--- linux-3.13.0.orig/Documentation/ABI/removed/net_dma +++ linux-3.13.0/Documentation/ABI/removed/net_dma @@ -0,0 +1,8 @@ +What: tcp_dma_copybreak sysctl +Date: Removed in kernel v3.13 +Contact: Dan Williams +Description: + Formerly the lower limit, in bytes, of the size of socket reads + that will be offloaded to a DMA copy engine. Removed due to + coherency issues of the cpu potentially touching the buffers + while dma is in flight. --- linux-3.13.0.orig/Documentation/ABI/stable/sysfs-firmware-opal-dump +++ linux-3.13.0/Documentation/ABI/stable/sysfs-firmware-opal-dump @@ -0,0 +1,41 @@ +What: /sys/firmware/opal/dump +Date: Feb 2014 +Contact: Stewart Smith +Description: + This directory exposes interfaces for interacting with + the FSP and platform dumps through OPAL firmware interface. + + This is only for the powerpc/powernv platform. + + initiate_dump: When '1' is written to it, + we will initiate a dump. + Read this file for supported commands. + + 0xXX-0xYYYY: A directory for dump of type 0xXX and + id 0xYYYY (in hex). The name of this + directory should not be relied upon to + be in this format, only that it's unique + among all dumps. For determining the type + and ID of the dump, use the id and type files. + Do not rely on any particular size of dump + type or dump id. + + Each dump has the following files: + id: An ASCII representation of the dump ID + in hex (e.g. '0x01') + type: An ASCII representation of the type of + dump in the format "0x%x %s" with the ID + in hex and a description of the dump type + (or 'unknown'). + Type '0xffffffff unknown' is used when + we could not get the type from firmware. + e.g. '0x02 System/Platform Dump' + dump: A binary file containing the dump. + The size of the dump is the size of this file. + acknowledge: When 'ack' is written to this, we will + acknowledge that we've retrieved the + dump to the service processor. It will + then remove it, making the dump + inaccessible. + Reading this file will get a list of + supported actions. --- linux-3.13.0.orig/Documentation/ABI/stable/sysfs-firmware-opal-elog +++ linux-3.13.0/Documentation/ABI/stable/sysfs-firmware-opal-elog @@ -0,0 +1,60 @@ +What: /sys/firmware/opal/elog +Date: Feb 2014 +Contact: Stewart Smith +Description: + This directory exposes error log entries retrieved + through the OPAL firmware interface. + + Each error log is identified by a unique ID and will + exist until explicitly acknowledged to firmware. + + Each log entry has a directory in /sys/firmware/opal/elog. + + Log entries may be purged by the service processor + before retrieved by firmware or retrieved/acknowledged by + Linux if there is no room for more log entries. + + In the event that Linux has retrieved the log entries + but not explicitly acknowledged them to firmware and + the service processor needs more room for log entries, + the only remaining copy of a log message may be in + Linux. + + Typically, a user space daemon will monitor for new + entries, read them out and acknowledge them. + + The service processor may be able to store more log + entries than firmware can, so after you acknowledge + an event from Linux you may instantly get another one + from the queue that was generated some time in the past. + + The raw log format is a binary format. We currently + do not parse this at all in kernel, leaving it up to + user space to solve the problem. In future, we may + do more parsing in kernel and add more files to make + it easier for simple user space processes to extract + more information. + + For each log entry (directory), there are the following + files: + + id: An ASCII representation of the ID of the + error log, in hex - e.g. "0x01". + + type: An ASCII representation of the type id and + description of the type of error log. + Currently just "0x00 PEL" - platform error log. + In the future there may be additional types. + + raw: A read-only binary file that can be read + to get the raw log entry. These are + <16kb, often just hundreds of bytes and + "average" 2kb. + + acknowledge: Writing 'ack' to this file will acknowledge + the error log to firmware (and in turn + the service processor, if applicable). + Shortly after acknowledging it, the log + entry will be removed from sysfs. + Reading this file will list the supported + operations (curently just acknowledge). \ No newline at end of file --- linux-3.13.0.orig/Documentation/ABI/testing/ima_policy +++ linux-3.13.0/Documentation/ABI/testing/ima_policy @@ -23,7 +23,7 @@ [fowner]] lsm: [[subj_user=] [subj_role=] [subj_type=] [obj_user=] [obj_role=] [obj_type=]] - option: [[appraise_type=]] + option: [[appraise_type=]] [permit_directio] base: func:= [BPRM_CHECK][MMAP_CHECK][FILE_CHECK][MODULE_CHECK] mask:= [MAY_READ] [MAY_WRITE] [MAY_APPEND] [MAY_EXEC] --- linux-3.13.0.orig/Documentation/ABI/testing/sysfs-module +++ linux-3.13.0/Documentation/ABI/testing/sysfs-module @@ -49,3 +49,4 @@ O - out-of-tree module F - force-loaded module C - staging driver module + X - unsigned module --- linux-3.13.0.orig/Documentation/arm/00-INDEX +++ linux-3.13.0/Documentation/arm/00-INDEX @@ -34,3 +34,5 @@ - NWFPE floating point emulator documentation swp_emulation - SWP/SWPB emulation handler/logging description +uefi.txt + - [U]EFI configuration and runtime services documentation --- linux-3.13.0.orig/Documentation/arm/uefi.txt +++ linux-3.13.0/Documentation/arm/uefi.txt @@ -0,0 +1,64 @@ +UEFI, the Unified Extensible Firmware Interface, is a specification +governing the behaviours of compatible firmware interfaces. It is +maintained by the UEFI Forum - http://www.uefi.org/. + +UEFI is an evolution of its predecessor 'EFI', so the terms EFI and +UEFI are used somewhat interchangeably in this document and associated +source code. As a rule, anything new uses 'UEFI', whereas 'EFI' refers +to legacy code or specifications. + +UEFI support in Linux +===================== +Booting on a platform with firmware compliant with the UEFI specification +makes it possible for the kernel to support additional features: +- UEFI Runtime Services +- Retrieving various configuration information through the standardised + interface of UEFI configuration tables. (ACPI, SMBIOS, ...) + +For actually enabling [U]EFI support, enable: +- CONFIG_EFI=y +- CONFIG_EFI_VARS=y or m + +The implementation depends on receiving information about the UEFI environment +in a Flattened Device Tree (FDT) - so is only available with CONFIG_OF. + +UEFI stub +========= +The "stub" is a feature that extends the Image/zImage into a valid UEFI +PE/COFF executable, including a loader application that makes it possible to +load the kernel directly from the UEFI shell, boot menu, or one of the +lightweight bootloaders like Gummiboot or rEFInd. + +The kernel image built with stub support remains a valid kernel image for +booting in non-UEFI environments. + +UEFI kernel support on ARM +========================== +UEFI kernel support on the ARM architectures (arm and arm64) is only available +when boot is performed through the stub. + +When booting in UEFI mode, the stub deletes any memory nodes from a provided DT. +Instead, the kernel reads the UEFI memory map. + +The stub populates the FDT /chosen node with (and the kernel scans for) the +following parameters: +________________________________________________________________________________ +Name | Size | Description +================================================================================ +linux,uefi-system-table | 64-bit | Physical address of the UEFI System Table. +-------------------------------------------------------------------------------- +linux,uefi-mmap-start | 64-bit | Physical address of the UEFI memory map, + | | populated by the UEFI GetMemoryMap() call. +-------------------------------------------------------------------------------- +linux,uefi-mmap-size | 32-bit | Size in bytes of the UEFI memory map + | | pointed to in previous entry. +-------------------------------------------------------------------------------- +linux,uefi-mmap-desc-size | 32-bit | Size in bytes of each entry in the UEFI + | | memory map. +-------------------------------------------------------------------------------- +linux,uefi-mmap-desc-ver | 32-bit | Version of the mmap descriptor format. +-------------------------------------------------------------------------------- +linux,uefi-stub-kern-ver | string | Copy of linux_banner from build. +-------------------------------------------------------------------------------- + +For verbose debug messages, specify 'uefi_debug' on the kernel command line. --- linux-3.13.0.orig/Documentation/arm64/booting.txt +++ linux-3.13.0/Documentation/arm64/booting.txt @@ -85,6 +85,10 @@ Header notes: - code0/code1 are responsible for branching to stext. +- when booting through EFI, code0/code1 are initially skipped. + res5 is an offset to the PE header and the PE header has the EFI + entry point (efi_stub_entry). When the stub has done its work, it + jumps to code0 to resume the normal boot process. The image must be placed at the specified offset (currently 0x80000) from the start of the system RAM and called there. The start of the --- linux-3.13.0.orig/Documentation/arm64/memory.txt +++ linux-3.13.0/Documentation/arm64/memory.txt @@ -35,7 +35,7 @@ ffffffbe00000000 ffffffbffbbfffff ~8GB [guard, future vmmemap] -ffffffbffbc00000 ffffffbffbdfffff 2MB earlyprintk device +ffffffbffbc00000 ffffffbffbdfffff 2MB fixed mappings ffffffbffbe00000 ffffffbffbe0ffff 64KB PCI I/O space @@ -60,7 +60,7 @@ fffffdfe00000000 fffffdfffbbfffff ~8GB [guard, future vmmemap] -fffffdfffbc00000 fffffdfffbdfffff 2MB earlyprintk device +fffffdfffbc00000 fffffdfffbdfffff 2MB fixed mappings fffffdfffbe00000 fffffdfffbe0ffff 64KB PCI I/O space --- linux-3.13.0.orig/Documentation/devices.txt +++ linux-3.13.0/Documentation/devices.txt @@ -353,6 +353,7 @@ 133 = /dev/exttrp External device trap 134 = /dev/apm_bios Advanced Power Management BIOS 135 = /dev/rtc Real Time Clock + 137 = /dev/vhci Bluetooth virtual HCI driver 139 = /dev/openprom SPARC OpenBoot PROM 140 = /dev/relay8 Berkshire Products Octal relay card 141 = /dev/relay16 Berkshire Products ISO-16 relay card --- linux-3.13.0.orig/Documentation/devicetree/bindings/arm/pmu.txt +++ linux-3.13.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-a15-pmu" "arm,cortex-a9-pmu" --- linux-3.13.0.orig/Documentation/devicetree/bindings/arm/psci.txt +++ linux-3.13.0/Documentation/devicetree/bindings/arm/psci.txt @@ -21,7 +21,15 @@ Main node required properties: - - compatible : Must be "arm,psci" + - compatible : should contain at least one of: + + * "arm,psci" : for implementations complying to PSCI versions prior to + 0.2. For these cases function IDs must be provided. + + * "arm,psci-0.2" : for implementations complying to PSCI 0.2. Function + IDs are not required and should be ignored by an OS with PSCI 0.2 + support, but are permitted to be present for compatibility with + existing software when "arm,psci" is later in the compatible list. - method : The method of calling the PSCI firmware. Permitted values are: @@ -45,6 +53,8 @@ Example: +Case 1: PSCI v0.1 only. + psci { compatible = "arm,psci"; method = "smc"; @@ -53,3 +63,28 @@ cpu_on = <0x95c10002>; migrate = <0x95c10003>; }; + + +Case 2: PSCI v0.2 only + + psci { + compatible = "arm,psci-0.2"; + method = "smc"; + }; + +Case 3: PSCI v0.2 and PSCI v0.1. + + A DTB may provide IDs for use by kernels without PSCI 0.2 support, + enabling firmware and hypervisors to support existing and new kernels. + These IDs will be ignored by kernels with PSCI 0.2 support, which will + use the standard PSCI 0.2 IDs exclusively. + + psci { + compatible = "arm,psci-0.2", "arm,psci"; + method = "hvc"; + + cpu_on = < arbitrary value >; + cpu_off = < arbitrary value >; + + ... + }; --- linux-3.13.0.orig/Documentation/devicetree/bindings/ata/ahci-platform.txt +++ linux-3.13.0/Documentation/devicetree/bindings/ata/ahci-platform.txt @@ -10,6 +10,8 @@ Optional properties: - dma-coherent : Present if dma operations are coherent +- clocks : a list of phandle + clock specifier pairs +- target-supply : regulator for SATA target power Example: sata@ffe08000 { --- linux-3.13.0.orig/Documentation/devicetree/bindings/ata/apm-xgene.txt +++ linux-3.13.0/Documentation/devicetree/bindings/ata/apm-xgene.txt @@ -0,0 +1,76 @@ +* APM X-Gene 6.0 Gb/s SATA host controller nodes + +SATA host controller nodes are defined to describe on-chip Serial ATA +controllers. Each SATA controller (pair of ports) have its own node. + +Required properties: +- compatible : Shall contain: + * "apm,xgene-ahci" +- reg : First memory resource shall be the AHCI memory + resource. + Second memory resource shall be the host controller + core memory resource. + Third memory resource shall be the host controller + diagnostic memory resource. + 4th memory resource shall be the host controller + AXI memory resource. + 5th optional memory resource shall be the host + controller MUX memory resource if required. +- interrupts : Interrupt-specifier for SATA host controller IRQ. +- clocks : Reference to the clock entry. +- phys : A list of phandles + phy-specifiers, one for each + entry in phy-names. +- phy-names : Should contain: + * "sata-phy" for the SATA 6.0Gbps PHY + +Optional properties: +- status : Shall be "ok" if enabled or "disabled" if disabled. + Default is "ok". + +Example: + sataclk: sataclk { + compatible = "fixed-clock"; + #clock-cells = <1>; + clock-frequency = <100000000>; + clock-output-names = "sataclk"; + }; + + phy2: phy@1f22a000 { + compatible = "apm,xgene-phy"; + reg = <0x0 0x1f22a000 0x0 0x100>; + #phy-cells = <1>; + }; + + phy3: phy@1f23a000 { + compatible = "apm,xgene-phy"; + reg = <0x0 0x1f23a000 0x0 0x100>; + #phy-cells = <1>; + }; + + sata2: sata@1a400000 { + compatible = "apm,xgene-ahci"; + reg = <0x0 0x1a400000 0x0 0x1000>, + <0x0 0x1f220000 0x0 0x1000>, + <0x0 0x1f22d000 0x0 0x1000>, + <0x0 0x1f22e000 0x0 0x1000>, + <0x0 0x1f227000 0x0 0x1000>; + interrupts = <0x0 0x87 0x4>; + status = "ok"; + clocks = <&sataclk 0>; + phys = <&phy2 0>; + phy-names = "sata-phy"; + }; + + sata3: sata@1a800000 { + compatible = "apm,xgene-ahci-pcie"; + reg = <0x0 0x1a800000 0x0 0x1000>, + <0x0 0x1f230000 0x0 0x1000>, + <0x0 0x1f23d000 0x0 0x1000>, + <0x0 0x1f23e000 0x0 0x1000>, + <0x0 0x1f237000 0x0 0x1000>; + interrupts = <0x0 0x88 0x4>; + status = "ok"; + clocks = <&sataclk 0>; + phys = <&phy3 0>; + phy-names = "sata-phy"; + }; --- linux-3.13.0.orig/Documentation/devicetree/bindings/ata/marvell.txt +++ linux-3.13.0/Documentation/devicetree/bindings/ata/marvell.txt @@ -1,7 +1,7 @@ * Marvell Orion SATA Required Properties: -- compatibility : "marvell,orion-sata" +- compatibility : "marvell,orion-sata" or "marvell,armada-370-sata" - reg : Address range of controller - interrupts : Interrupt controller is using - nr-ports : Number of SATA ports in use. --- linux-3.13.0.orig/Documentation/devicetree/bindings/chosen.txt +++ linux-3.13.0/Documentation/devicetree/bindings/chosen.txt @@ -0,0 +1,46 @@ +The chosen node +--------------- + +The chosen node does not represent a real device, but serves as a place +for passing data between firmware and the operating system, like boot +arguments. Data in the chosen node does not represent the hardware. + + +stdout-path property +-------------------- + +Device trees may specify the device to be used for boot console output +with a stdout-path property under /chosen, as described in ePAPR, e.g. + +/ { + chosen { + stdout-path = "/serial@f00:115200"; + }; + + serial@f00 { + compatible = "vendor,some-uart"; + reg = <0xf00 0x10>; + }; +}; + +If the character ":" is present in the value, this terminates the path. +The meaning of any characters following the ":" is device-specific, and +must be specified in the relevant binding documentation. + +For UART devices, the preferred binding is a string in the form: + + {{{}}} + +where + + baud - baud rate in decimal + parity - 'n' (none), 'o', (odd) or 'e' (even) + bits - number of data bits + flow - 'r' (rts) + +For example: 115200n8r + +Implementation note: Linux will look for the property "linux,stdout-path" or +on PowerPC "stdout" if "stdout-path" is not found. However, the +"linux,stdout-path" and "stdout" properties are deprecated. New platforms +should only use the "stdout-path" property. --- linux-3.13.0.orig/Documentation/devicetree/bindings/dma/fsl-mxs-dma.txt +++ linux-3.13.0/Documentation/devicetree/bindings/dma/fsl-mxs-dma.txt @@ -38,7 +38,7 @@ 80 81 68 69 70 71 72 73 74 75 76 77>; - interrupt-names = "auart4-rx", "aurat4-tx", "spdif-tx", "empty", + interrupt-names = "auart4-rx", "auart4-tx", "spdif-tx", "empty", "saif0", "saif1", "i2c0", "i2c1", "auart0-rx", "auart0-tx", "auart1-rx", "auart1-tx", "auart2-rx", "auart2-tx", "auart3-rx", "auart3-tx"; --- linux-3.13.0.orig/Documentation/devicetree/bindings/dma/ti-edma.txt +++ linux-3.13.0/Documentation/devicetree/bindings/dma/ti-edma.txt @@ -29,6 +29,6 @@ dma-channels = <64>; ti,edma-regions = <4>; ti,edma-slots = <256>; - ti,edma-xbar-event-map = <1 12 - 2 13>; + ti,edma-xbar-event-map = /bits/ 16 <1 12 + 2 13>; }; --- linux-3.13.0.orig/Documentation/devicetree/bindings/gpio/snps-dwapb-gpio.txt +++ linux-3.13.0/Documentation/devicetree/bindings/gpio/snps-dwapb-gpio.txt @@ -0,0 +1,57 @@ +* Synopsys DesignWare APB GPIO controller + +Required properties: +- compatible : Should contain "snps,dw-apb-gpio" +- reg : Address and length of the register set for the device. +- #address-cells : should be 1 (for addressing port subnodes). +- #size-cells : should be 0 (port subnodes). + +The GPIO controller has a configurable number of ports, each of which are +represented as child nodes with the following properties: + +Required properties: +- compatible : "snps,dw-apb-gpio-port" +- gpio-controller : Marks the device node as a gpio controller. +- #gpio-cells : Should be 1. It is the pin number. +- reg : The integer port index of the port, a single cell. + +Optional properties: +- interrupt-controller : The first port may be configured to be an interrupt +controller. +- #interrupt-cells : Specifies the number of cells needed to encode an + interrupt. Shall be set to 2. The first cell defines the interrupt number, + the second encodes the triger flags encoded as described in + Documentation/devicetree/bindings/interrupts.txt +- interrupt-parent : The parent interrupt controller. +- interrupts : The interrupt to the parent controller raised when GPIOs + generate the interrupts. +- snps,nr-gpios : The number of pins in the port, a single cell. + +Example: + +gpio: gpio@20000 { + compatible = "snps,dw-apb-gpio"; + reg = <0x20000 0x1000>; + #address-cells = <1>; + #size-cells = <0>; + + porta: gpio-controller@0 { + compatible = "snps,dw-apb-gpio-port"; + gpio-controller; + #gpio-cells = <1>; + snps,nr-gpios = <8>; + reg = <0>; + interrupt-controller; + #interrupt-cells = <2>; + interrupt-parent = <&vic1>; + interrupts = <0>; + }; + + portb: gpio-controller@1 { + compatible = "snps,dw-apb-gpio-port"; + gpio-controller; + #gpio-cells = <1>; + snps,nr-gpios = <8>; + reg = <1>; + }; +}; --- linux-3.13.0.orig/Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt +++ linux-3.13.0/Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt @@ -5,7 +5,11 @@ - reg : Offset and length of the register set for the device - compatible : Should be "marvell,mv64xxx-i2c" or "allwinner,sun4i-i2c" - or "marvell,mv78230-i2c" + or "marvell,mv78230-i2c" or "marvell,mv78230-a0-i2c" + Note: Only use "marvell,mv78230-a0-i2c" for a very rare, + initial version of the SoC which had broken offload + support. Linux auto-detects this and sets it + appropriately. - interrupts : The interrupt number Optional properties : --- linux-3.13.0.orig/Documentation/devicetree/bindings/interrupt-controller/interrupts.txt +++ linux-3.13.0/Documentation/devicetree/bindings/interrupt-controller/interrupts.txt @@ -4,11 +4,13 @@ 1) Interrupt client nodes ------------------------- -Nodes that describe devices which generate interrupts must contain an either an -"interrupts" property or an "interrupts-extended" property. These properties -contain a list of interrupt specifiers, one per output interrupt. The format of -the interrupt specifier is determined by the interrupt controller to which the -interrupts are routed; see section 2 below for details. +Nodes that describe devices which generate interrupts must contain an +"interrupts" property, an "interrupts-extended" property, or both. If both are +present, the latter should take precedence; the former may be provided simply +for compatibility with software that does not recognize the latter. These +properties contain a list of interrupt specifiers, one per output interrupt. The +format of the interrupt specifier is determined by the interrupt controller to +which the interrupts are routed; see section 2 below for details. Example: interrupt-parent = <&intc1>; @@ -28,10 +30,6 @@ Example: interrupts-extended = <&intc1 5 1>, <&intc2 1 0>; -A device node may contain either "interrupts" or "interrupts-extended", but not -both. If both properties are present, then the operating system should log an -error and use only the data in "interrupts". - 2) Interrupt controller nodes ----------------------------- --- linux-3.13.0.orig/Documentation/devicetree/bindings/net/apm-xgene-enet.txt +++ linux-3.13.0/Documentation/devicetree/bindings/net/apm-xgene-enet.txt @@ -0,0 +1,68 @@ +APM X-Gene SoC Ethernet nodes + +Ethernet nodes are defined to describe on-chip ethernet interfaces in +APM X-Gene SoC. + +Required properties for all the ethernet interfaces: +- compatible: Should be "apm,xgene-enet" +- reg: Address and length of the register set for the device. It contains the + information of registers in the same order as described by reg-names +- reg-names: Should contain the register set names + - "enet_csr": Ethernet control and status register address space + - "ring_csr": Descriptor ring control and status register address space + - "ring_cmd": Descriptor ring command register address space +- interrupts: Ethernet main interrupt +- clocks: Reference to the clock entry. +- local-mac-address: MAC address assigned to this device +- phy-connection-type: Interface type between ethernet device and PHY device + +Required properties for ethernet interfaces that have external PHY: +- phy-handle: Reference to a PHY node connected to this device + +- mdio: Device tree subnode with the following required properties: + - compatible: Must be "apm,xgene-mdio". + - #address-cells: Must be <1>. + - #size-cells: Must be <0>. + + For the phy on the mdio bus, there must be a node with the following fields: + - compatible: PHY identifier. Please refer ./phy.txt for the format. + - reg: The ID number for the phy. + +Optional properties: +- status: Should be "ok" or "disabled" for enabled/disabled. Default is "ok". + +Example: + menetclk: menetclk { + compatible = "apm,xgene-device-clock"; + clock-output-names = "menetclk"; + status = "ok"; + }; + + menet: ethernet@17020000 { + compatible = "apm,xgene-enet"; + status = "disabled"; + reg = <0x0 0x17020000 0x0 0xd100>, + <0x0 0X17030000 0x0 0X400>, + <0x0 0X10000000 0x0 0X200>; + reg-names = "enet_csr", "ring_csr", "ring_cmd"; + interrupts = <0x0 0x3c 0x4>; + clocks = <&menetclk 0>; + local-mac-address = [00 01 73 00 00 01]; + phy-connection-type = "rgmii"; + phy-handle = <&menetphy>; + mdio { + compatible = "apm,xgene-mdio"; + #address-cells = <1>; + #size-cells = <0>; + menetphy: menetphy@3 { + compatible = "ethernet-phy-id001c.c915"; + reg = <0x3>; + }; + + }; + }; + +/* Board-specific peripheral configurations */ +&menet { + status = "ok"; +}; --- linux-3.13.0.orig/Documentation/devicetree/bindings/net/cpsw.txt +++ linux-3.13.0/Documentation/devicetree/bindings/net/cpsw.txt @@ -24,16 +24,18 @@ - ti,hwmods : Must be "cpgmac0" - no_bd_ram : Must be 0 or 1 - dual_emac : Specifies Switch to act as Dual EMAC +- syscon : Phandle to the system control device node, which is + the control module device of the am33x Slave Properties: Required properties: - phy_id : Specifies slave phy id - phy-mode : The interface between the SoC and the PHY (a string that of_get_phy_mode() can understand) -- mac-address : Specifies slave MAC address Optional properties: - dual_emac_res_vlan : Specifies VID to be used to segregate the ports +- mac-address : Specifies slave MAC address Note: "ti,hwmods" field is used to fetch the base address and irq resources from TI, omap hwmod data base during device registration. @@ -58,6 +60,7 @@ active_slave = <0>; cpts_clock_mult = <0x80000000>; cpts_clock_shift = <29>; + syscon = <&cm>; cpsw_emac0: slave@0 { phy_id = <&davinci_mdio>, <0>; phy-mode = "rgmii-txid"; @@ -86,6 +89,7 @@ active_slave = <0>; cpts_clock_mult = <0x80000000>; cpts_clock_shift = <29>; + syscon = <&cm>; cpsw_emac0: slave@0 { phy_id = <&davinci_mdio>, <0>; phy-mode = "rgmii-txid"; --- linux-3.13.0.orig/Documentation/devicetree/bindings/net/marvell-armada-370-neta.txt +++ linux-3.13.0/Documentation/devicetree/bindings/net/marvell-armada-370-neta.txt @@ -1,7 +1,7 @@ * Marvell Armada 370 / Armada XP Ethernet Controller (NETA) Required properties: -- compatible: should be "marvell,armada-370-neta". +- compatible: "marvell,armada-370-neta" or "marvell,armada-xp-neta". - reg: address and length of the register set for the device. - interrupts: interrupt for the device - phy: A phandle to a phy node defining the PHY address (as the reg --- linux-3.13.0.orig/Documentation/devicetree/bindings/net/micrel-ks8851.txt +++ linux-3.13.0/Documentation/devicetree/bindings/net/micrel-ks8851.txt @@ -7,3 +7,4 @@ Optional properties: - local-mac-address : Ethernet mac address to use +- vdd-supply: supply for Ethernet mac --- linux-3.13.0.orig/Documentation/devicetree/bindings/pci/xgene-pci.txt +++ linux-3.13.0/Documentation/devicetree/bindings/pci/xgene-pci.txt @@ -0,0 +1,52 @@ +* AppliedMicro X-Gene PCIe interface + +Required properties: +- device_type: set to "pci" +- compatible: should contain "xgene,pcie" to identify the core. +- reg: A list of physical base address and length for each set of controller + registers. Must contain an entry for each entry in the reg-names + property. +- reg-names: Must include the following entries: + "csr": controller configuration registers. + "cfg": pcie configuration space registers. +- #address-cells: set to <3> +- #size-cells: set to <2> +- ranges: ranges for the outbound memory, I/O regions. +- dma-ranges: ranges for the inbound memory regions. +- #interrupt-cells: set to <1> +- interrupt-map-mask and interrupt-map: standard PCI properties + to define the mapping of the PCIe interface to interrupt + numbers. +- clocks: from common clock binding: handle to pci clock. + +Optional properties: +- status: Either "ok" or "disabled". + +Example: + +SoC specific DT Entry: + pcie0: pcie@1f2b0000 { + status = "disabled"; + device_type = "pci"; + compatible = "apm,xgene-pcie"; + #interrupt-cells = <1>; + #size-cells = <2>; + #address-cells = <3>; + reg = < 0x00 0x1f2b0000 0x0 0x00010000 /* Controller registers */ + 0xe0 0xd0000000 0x0 0x00200000>; /* PCI config space */ + reg-names = "csr", "cfg"; + ranges = <0x01000000 0x00 0x00000000 0xe0 0x00000000 0x00 0x00010000 /* io */ + 0x02000000 0x00 0x10000000 0xe0 0x10000000 0x00 0x80000000>; /* mem */ + dma-ranges = <0x42000000 0x40 0x00000000 0x40 0x00000000 0x40 0x00000000>; + interrupt-map-mask = <0x0 0x0 0x0 0x7>; + interrupt-map = <0x0 0x0 0x0 0x1 &gic 0x0 0xc2 0x1 + 0x0 0x0 0x0 0x2 &gic 0x0 0xc3 0x1 + 0x0 0x0 0x0 0x3 &gic 0x0 0xc4 0x1 + 0x0 0x0 0x0 0x4 &gic 0x0 0xc5 0x1>; + clocks = <&pcie0clk 0>; + }; + +Board specific DT Entry: + &pcie0 { + status = "ok"; + }; --- linux-3.13.0.orig/Documentation/devicetree/bindings/phy/apm-xgene-phy.txt +++ linux-3.13.0/Documentation/devicetree/bindings/phy/apm-xgene-phy.txt @@ -0,0 +1,79 @@ +* APM X-Gene 15Gbps Multi-purpose PHY nodes + +PHY nodes are defined to describe on-chip 15Gbps Multi-purpose PHY. Each +PHY (pair of lanes) has its own node. + +Required properties: +- compatible : Shall be "apm,xgene-phy". +- reg : PHY memory resource is the SDS PHY access resource. +- #phy-cells : Shall be 1 as it expects one argument for setting + the mode of the PHY. Possible values are 0 (SATA), + 1 (SGMII), 2 (PCIe), 3 (USB), and 4 (XFI). + +Optional properties: +- status : Shall be "ok" if enabled or "disabled" if disabled. + Default is "ok". +- clocks : Reference to the clock entry. +- apm,tx-eye-tuning : Manual control to fine tune the capture of the serial + bit lines from the automatic calibrated position. + Two set of 3-tuple setting for each (up to 3) + supported link speed on the host. Range from 0 to + 127 in unit of one bit period. Default is 10. +- apm,tx-eye-direction : Eye tuning manual control direction. 0 means sample + data earlier than the nominal sampling point. 1 means + sample data later than the nominal sampling point. + Two set of 3-tuple setting for each (up to 3) + supported link speed on the host. Default is 0. +- apm,tx-boost-gain : Frequency boost AC (LSB 3-bit) and DC (2-bit) + gain control. Two set of 3-tuple setting for each + (up to 3) supported link speed on the host. Range is + between 0 to 31 in unit of dB. Default is 3. +- apm,tx-amplitude : Amplitude control. Two set of 3-tuple setting for + each (up to 3) supported link speed on the host. + Range is between 0 to 199500 in unit of uV. + Default is 199500 uV. +- apm,tx-pre-cursor1 : 1st pre-cursor emphasis taps control. Two set of + 3-tuple setting for each (up to 3) supported link + speed on the host. Range is 0 to 273000 in unit of + uV. Default is 0. +- apm,tx-pre-cursor2 : 2st pre-cursor emphasis taps control. Two set of + 3-tuple setting for each (up to 3) supported link + speed on the host. Range is 0 to 127400 in unit uV. + Default is 0x0. +- apm,tx-post-cursor : Post-cursor emphasis taps control. Two set of + 3-tuple setting for Gen1, Gen2, and Gen3. Range is + between 0 to 0x1f in unit of 18.2mV. Default is 0xf. +- apm,tx-speed : Tx operating speed. One set of 3-tuple for each + supported link speed on the host. + 0 = 1-2Gbps + 1 = 2-4Gbps (1st tuple default) + 2 = 4-8Gbps + 3 = 8-15Gbps (2nd tuple default) + 4 = 2.5-4Gbps + 5 = 4-5Gbps + 6 = 5-6Gbps + 7 = 6-16Gbps (3rd tuple default) + +NOTE: PHY override parameters are board specific setting. + +Example: + phy1: phy@1f21a000 { + compatible = "apm,xgene-phy"; + reg = <0x0 0x1f21a000 0x0 0x100>; + #phy-cells = <1>; + status = "disabled"; + }; + + phy2: phy@1f22a000 { + compatible = "apm,xgene-phy"; + reg = <0x0 0x1f22a000 0x0 0x100>; + #phy-cells = <1>; + status = "ok"; + }; + + phy3: phy@1f23a000 { + compatible = "apm,xgene-phy"; + reg = <0x0 0x1f23a000 0x0 0x100>; + #phy-cells = <1>; + status = "ok"; + }; --- linux-3.13.0.orig/Documentation/devicetree/bindings/pinctrl/marvell,armada-370-pinctrl.txt +++ linux-3.13.0/Documentation/devicetree/bindings/pinctrl/marvell,armada-370-pinctrl.txt @@ -91,5 +91,5 @@ mpp62 62 gpio, dev(a2), uart1(cts), tdm(drx), pcie(clkreq0), audio(mclk), uart0(cts) mpp63 63 gpo, spi0(sck), tclk -mpp64 64 gpio, spi0(miso), spi0-1(cs1) -mpp65 65 gpio, spi0(mosi), spi0-1(cs2) +mpp64 64 gpio, spi0(miso), spi0(cs1) +mpp65 65 gpio, spi0(mosi), spi0(cs2) --- linux-3.13.0.orig/Documentation/devicetree/bindings/pinctrl/marvell,armada-xp-pinctrl.txt +++ linux-3.13.0/Documentation/devicetree/bindings/pinctrl/marvell,armada-xp-pinctrl.txt @@ -41,15 +41,15 @@ mpp21 21 gpio, ge0(rxd5), ge1(rxd3), lcd(d21), mem(bat) mpp22 22 gpio, ge0(rxd6), ge1(rxctl), lcd(d22), sata0(prsnt) mpp23 23 gpio, ge0(rxd7), ge1(rxclk), lcd(d23), sata1(prsnt) -mpp24 24 gpio, lcd(hsync), sata1(prsnt), nf(bootcs-re), tdm(rst) -mpp25 25 gpio, lcd(vsync), sata0(prsnt), nf(bootcs-we), tdm(pclk) -mpp26 26 gpio, lcd(clk), tdm(fsync), vdd(cpu1-pd) +mpp24 24 gpio, lcd(hsync), sata1(prsnt), tdm(rst) +mpp25 25 gpio, lcd(vsync), sata0(prsnt), tdm(pclk) +mpp26 26 gpio, lcd(clk), tdm(fsync) mpp27 27 gpio, lcd(e), tdm(dtx), ptp(trig) mpp28 28 gpio, lcd(pwm), tdm(drx), ptp(evreq) -mpp29 29 gpio, lcd(ref-clk), tdm(int0), ptp(clk), vdd(cpu0-pd) +mpp29 29 gpio, lcd(ref-clk), tdm(int0), ptp(clk) mpp30 30 gpio, tdm(int1), sd0(clk) -mpp31 31 gpio, tdm(int2), sd0(cmd), vdd(cpu0-pd) -mpp32 32 gpio, tdm(int3), sd0(d0), vdd(cpu1-pd) +mpp31 31 gpio, tdm(int2), sd0(cmd) +mpp32 32 gpio, tdm(int3), sd0(d0) mpp33 33 gpio, tdm(int4), sd0(d1), mem(bat) mpp34 34 gpio, tdm(int5), sd0(d2), sata0(prsnt) mpp35 35 gpio, tdm(int6), sd0(d3), sata1(prsnt) @@ -57,21 +57,18 @@ mpp37 37 gpio, spi(miso) mpp38 38 gpio, spi(sck) mpp39 39 gpio, spi(cs0) -mpp40 40 gpio, spi(cs1), uart2(cts), lcd(vga-hsync), vdd(cpu1-pd), - pcie(clkreq0) +mpp40 40 gpio, spi(cs1), uart2(cts), lcd(vga-hsync), pcie(clkreq0) mpp41 41 gpio, spi(cs2), uart2(rts), lcd(vga-vsync), sata1(prsnt), pcie(clkreq1) -mpp42 42 gpio, uart2(rxd), uart0(cts), tdm(int7), tdm-1(timer), - vdd(cpu0-pd) -mpp43 43 gpio, uart2(txd), uart0(rts), spi(cs3), pcie(rstout), - vdd(cpu2-3-pd){1} +mpp42 42 gpio, uart2(rxd), uart0(cts), tdm(int7), tdm-1(timer) +mpp43 43 gpio, uart2(txd), uart0(rts), spi(cs3), pcie(rstout) mpp44 44 gpio, uart2(cts), uart3(rxd), spi(cs4), pcie(clkreq2), mem(bat) mpp45 45 gpio, uart2(rts), uart3(txd), spi(cs5), sata1(prsnt) mpp46 46 gpio, uart3(rts), uart1(rts), spi(cs6), sata0(prsnt) mpp47 47 gpio, uart3(cts), uart1(cts), spi(cs7), pcie(clkreq3), ref(clkout) -mpp48 48 gpio, tclk, dev(burst/last) +mpp48 48 gpio, dev(clkout), dev(burst/last) * Marvell Armada XP (mv78260 and mv78460 only) @@ -83,9 +80,9 @@ mpp52 52 gpio, dev(ad17) mpp53 53 gpio, dev(ad18) mpp54 54 gpio, dev(ad19) -mpp55 55 gpio, dev(ad20), vdd(cpu0-pd) -mpp56 56 gpio, dev(ad21), vdd(cpu1-pd) -mpp57 57 gpio, dev(ad22), vdd(cpu2-3-pd){1} +mpp55 55 gpio, dev(ad20) +mpp56 56 gpio, dev(ad21) +mpp57 57 gpio, dev(ad22) mpp58 58 gpio, dev(ad23) mpp59 59 gpio, dev(ad24) mpp60 60 gpio, dev(ad25) @@ -95,6 +92,3 @@ mpp64 64 gpio, dev(ad29) mpp65 65 gpio, dev(ad30) mpp66 66 gpio, dev(ad31) - -Notes: -* {1} vdd(cpu2-3-pd) only available on mv78460. --- linux-3.13.0.orig/Documentation/devicetree/bindings/rng/apm,rng.txt +++ linux-3.13.0/Documentation/devicetree/bindings/rng/apm,rng.txt @@ -0,0 +1,17 @@ +APM X-Gene SoC random number generator. + +Required properties: + +- compatible : should be "apm,xgene-rng" +- reg : specifies base physical address and size of the registers map +- clocks : phandle to clock-controller plus clock-specifier pair +- interrupts : specify the fault interrupt for the RNG device + +Example: + + rng: rng@10520000 { + compatible = "apm,xgene-rng"; + reg = <0x0 0x10520000 0x0 0x100>; + interrupts = <0x0 0x41 0x4>; + clocks = <&rngpkaclk 0>; + }; --- linux-3.13.0.orig/Documentation/devicetree/bindings/rtc/xgene-rtc.txt +++ linux-3.13.0/Documentation/devicetree/bindings/rtc/xgene-rtc.txt @@ -0,0 +1,28 @@ +* APM X-Gene Real Time Clock + +RTC controller for the APM X-Gene Real Time Clock + +Required properties: +- compatible : Should be "apm,xgene-rtc" +- reg: physical base address of the controller and length of memory mapped + region. +- interrupts: IRQ line for the RTC. +- #clock-cells: Should be 1. +- clocks: Reference to the clock entry. + +Example: + +rtcclk: rtcclk { + compatible = "fixed-clock"; + #clock-cells = <1>; + clock-frequency = <100000000>; + clock-output-names = "rtcclk"; +}; + +rtc: rtc@10510000 { + compatible = "apm,xgene-rtc"; + reg = <0x0 0x10510000 0x0 0x400>; + interrupts = <0x0 0x46 0x4>; + #clock-cells = <1>; + clocks = <&rtcclk 0>; +}; --- linux-3.13.0.orig/Documentation/devicetree/bindings/serial/of-serial.txt +++ linux-3.13.0/Documentation/devicetree/bindings/serial/of-serial.txt @@ -37,6 +37,7 @@ - auto-flow-control: one way to enable automatic flow control support. The driver is allowed to detect support for the capability even without this property. +- has-hw-flow-control: the hardware has flow control capability. Example: --- linux-3.13.0.orig/Documentation/devicetree/bindings/spi/efm32-spi.txt +++ linux-3.13.0/Documentation/devicetree/bindings/spi/efm32-spi.txt @@ -3,7 +3,7 @@ Required properties: - #address-cells: see spi-bus.txt - #size-cells: see spi-bus.txt -- compatible: should be "efm32,spi" +- compatible: should be "energymicro,efm32-spi" - reg: Offset and length of the register set for the controller - interrupts: pair specifying rx and tx irq - clocks: phandle to the spi clock @@ -15,7 +15,7 @@ spi1: spi@0x4000c400 { /* USART1 */ #address-cells = <1>; #size-cells = <0>; - compatible = "efm32,spi"; + compatible = "energymicro,efm32-spi"; reg = <0x4000c400 0x400>; interrupts = <15 16>; clocks = <&cmu 20>; --- linux-3.13.0.orig/Documentation/efi-stub.txt +++ linux-3.13.0/Documentation/efi-stub.txt @@ -1,13 +1,21 @@ The EFI Boot Stub --------------------------- -On the x86 platform, a bzImage can masquerade as a PE/COFF image, -thereby convincing EFI firmware loaders to load it as an EFI -executable. The code that modifies the bzImage header, along with the -EFI-specific entry point that the firmware loader jumps to are -collectively known as the "EFI boot stub", and live in +On the x86 and ARM platforms, a kernel zImage/bzImage can masquerade +as a PE/COFF image, thereby convincing EFI firmware loaders to load +it as an EFI executable. The code that modifies the bzImage header, +along with the EFI-specific entry point that the firmware loader +jumps to are collectively known as the "EFI boot stub", and live in arch/x86/boot/header.S and arch/x86/boot/compressed/eboot.c, -respectively. +respectively. For ARM the EFI stub is implemented in +arch/arm/boot/compressed/efi-header.S and +arch/arm/boot/compressed/efi-stub.c. EFI stub code that is shared +between architectures is in drivers/firmware/efi/efi-stub-helper.c. + +For arm64, there is no compressed kernel support, so the Image itself +masquerades as a PE/COFF image and the EFI stub is linked into the +kernel. The arm64 EFI stub lives in arch/arm64/kernel/efi-entry.S +and arch/arm64/kernel/efi-stub.c. By using the EFI boot stub it's possible to boot a Linux kernel without the use of a conventional EFI boot loader, such as grub or @@ -23,7 +31,10 @@ System Partiion (ESP) and renamed with the extension ".efi". Without the extension the EFI firmware loader will refuse to execute it. It's not possible to execute bzImage.efi from the usual Linux file systems -because EFI firmware doesn't have support for them. +because EFI firmware doesn't have support for them. For ARM the +arch/arm/boot/zImage should be copied to the system partition, and it +may not need to be renamed. Similarly for arm64, arch/arm64/boot/Image +should be copied but not necessarily renamed. **** Passing kernel parameters from the EFI shell @@ -63,3 +74,11 @@ because the image we're executing is interpreted by the EFI shell, which understands relative paths, whereas the rest of the command line is passed to bzImage.efi. + + +**** The "dtb=" option + +For the ARM and arm64 architectures, we also need to be able to provide a +device tree to the kernel. This is done with the "dtb=" command line option, +and is processed in the same manner as the "initrd=" option that is +described above. --- linux-3.13.0.orig/Documentation/filesystems/Locking +++ linux-3.13.0/Documentation/filesystems/Locking @@ -65,6 +65,7 @@ struct file *, unsigned open_flag, umode_t create_mode, int *opened); int (*tmpfile) (struct inode *, struct dentry *, umode_t); + int (*dentry_open)(struct dentry *, struct file *, const struct cred *); locking rules: all may block @@ -93,6 +94,7 @@ update_time: no atomic_open: yes tmpfile: no +dentry_open: no Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_mutex on victim. --- linux-3.13.0.orig/Documentation/filesystems/overlayfs.txt +++ linux-3.13.0/Documentation/filesystems/overlayfs.txt @@ -0,0 +1,199 @@ +Written by: Neil Brown + +Overlay Filesystem +================== + +This document describes a prototype for a new approach to providing +overlay-filesystem functionality in Linux (sometimes referred to as +union-filesystems). An overlay-filesystem tries to present a +filesystem which is the result over overlaying one filesystem on top +of the other. + +The result will inevitably fail to look exactly like a normal +filesystem for various technical reasons. The expectation is that +many use cases will be able to ignore these differences. + +This approach is 'hybrid' because the objects that appear in the +filesystem do not all appear to belong to that filesystem. In many +cases an object accessed in the union will be indistinguishable +from accessing the corresponding object from the original filesystem. +This is most obvious from the 'st_dev' field returned by stat(2). + +While directories will report an st_dev from the overlay-filesystem, +all non-directory objects will report an st_dev from the lower or +upper filesystem that is providing the object. Similarly st_ino will +only be unique when combined with st_dev, and both of these can change +over the lifetime of a non-directory object. Many applications and +tools ignore these values and will not be affected. + +Upper and Lower +--------------- + +An overlay filesystem combines two filesystems - an 'upper' filesystem +and a 'lower' filesystem. When a name exists in both filesystems, the +object in the 'upper' filesystem is visible while the object in the +'lower' filesystem is either hidden or, in the case of directories, +merged with the 'upper' object. + +It would be more correct to refer to an upper and lower 'directory +tree' rather than 'filesystem' as it is quite possible for both +directory trees to be in the same filesystem and there is no +requirement that the root of a filesystem be given for either upper or +lower. + +The lower filesystem can be any filesystem supported by Linux and does +not need to be writable. The lower filesystem can even be another +overlayfs. The upper filesystem will normally be writable and if it +is it must support the creation of trusted.* extended attributes, and +must provide valid d_type in readdir responses, at least for symbolic +links - so NFS is not suitable. + +A read-only overlay of two read-only filesystems may use any +filesystem type. + +Directories +----------- + +Overlaying mainly involves directories. If a given name appears in both +upper and lower filesystems and refers to a non-directory in either, +then the lower object is hidden - the name refers only to the upper +object. + +Where both upper and lower objects are directories, a merged directory +is formed. + +At mount time, the two directories given as mount options are combined +into a merged directory: + + mount -t overlayfs overlayfs -olowerdir=/lower,upperdir=/upper /overlay + +Then whenever a lookup is requested in such a merged directory, the +lookup is performed in each actual directory and the combined result +is cached in the dentry belonging to the overlay filesystem. If both +actual lookups find directories, both are stored and a merged +directory is created, otherwise only one is stored: the upper if it +exists, else the lower. + +Only the lists of names from directories are merged. Other content +such as metadata and extended attributes are reported for the upper +directory only. These attributes of the lower directory are hidden. + +whiteouts and opaque directories +-------------------------------- + +In order to support rm and rmdir without changing the lower +filesystem, an overlay filesystem needs to record in the upper filesystem +that files have been removed. This is done using whiteouts and opaque +directories (non-directories are always opaque). + +The overlay filesystem uses extended attributes with a +"trusted.overlay." prefix to record these details. + +A whiteout is created as a symbolic link with target +"(overlay-whiteout)" and with xattr "trusted.overlay.whiteout" set to "y". +When a whiteout is found in the upper level of a merged directory, any +matching name in the lower level is ignored, and the whiteout itself +is also hidden. + +A directory is made opaque by setting the xattr "trusted.overlay.opaque" +to "y". Where the upper filesystem contains an opaque directory, any +directory in the lower filesystem with the same name is ignored. + +readdir +------- + +When a 'readdir' request is made on a merged directory, the upper and +lower directories are each read and the name lists merged in the +obvious way (upper is read first, then lower - entries that already +exist are not re-added). This merged name list is cached in the +'struct file' and so remains as long as the file is kept open. If the +directory is opened and read by two processes at the same time, they +will each have separate caches. A seekdir to the start of the +directory (offset 0) followed by a readdir will cause the cache to be +discarded and rebuilt. + +This means that changes to the merged directory do not appear while a +directory is being read. This is unlikely to be noticed by many +programs. + +seek offsets are assigned sequentially when the directories are read. +Thus if + - read part of a directory + - remember an offset, and close the directory + - re-open the directory some time later + - seek to the remembered offset + +there may be little correlation between the old and new locations in +the list of filenames, particularly if anything has changed in the +directory. + +Readdir on directories that are not merged is simply handled by the +underlying directory (upper or lower). + + +Non-directories +--------------- + +Objects that are not directories (files, symlinks, device-special +files etc.) are presented either from the upper or lower filesystem as +appropriate. When a file in the lower filesystem is accessed in a way +the requires write-access, such as opening for write access, changing +some metadata etc., the file is first copied from the lower filesystem +to the upper filesystem (copy_up). Note that creating a hard-link +also requires copy_up, though of course creation of a symlink does +not. + +The copy_up may turn out to be unnecessary, for example if the file is +opened for read-write but the data is not modified. + +The copy_up process first makes sure that the containing directory +exists in the upper filesystem - creating it and any parents as +necessary. It then creates the object with the same metadata (owner, +mode, mtime, symlink-target etc.) and then if the object is a file, the +data is copied from the lower to the upper filesystem. Finally any +extended attributes are copied up. + +Once the copy_up is complete, the overlay filesystem simply +provides direct access to the newly created file in the upper +filesystem - future operations on the file are barely noticed by the +overlay filesystem (though an operation on the name of the file such as +rename or unlink will of course be noticed and handled). + + +Non-standard behavior +--------------------- + +The copy_up operation essentially creates a new, identical file and +moves it over to the old name. The new file may be on a different +filesystem, so both st_dev and st_ino of the file may change. + +Any open files referring to this inode will access the old data and +metadata. Similarly any file locks obtained before copy_up will not +apply to the copied up file. + +On a file opened with O_RDONLY fchmod(2), fchown(2), futimesat(2) and +fsetxattr(2) will fail with EROFS. + +If a file with multiple hard links is copied up, then this will +"break" the link. Changes will not be propagated to other names +referring to the same inode. + +Symlinks in /proc/PID/ and /proc/PID/fd which point to a non-directory +object in overlayfs will not contain valid absolute paths, only +relative paths leading up to the filesystem's root. This will be +fixed in the future. + +Some operations are not atomic, for example a crash during copy_up or +rename will leave the filesystem in an inconsistent state. This will +be addressed in the future. + +Changes to underlying filesystems +--------------------------------- + +Offline changes, when the overlay is not mounted, are allowed to either +the upper or the lower trees. + +Changes to the underlying filesystems while part of a mounted overlay +filesystem are not allowed. If the underlying filesystem is changed, +the behavior of the overlay is undefined, though it will not result in +a crash or deadlock. --- linux-3.13.0.orig/Documentation/filesystems/proc.txt +++ linux-3.13.0/Documentation/filesystems/proc.txt @@ -139,7 +139,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 @@ -301,7 +302,7 @@ blocked bitmap of blocked signals sigign bitmap of ignored signals sigcatch bitmap of catched 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 @@ -1377,8 +1378,8 @@ For example, if a task is using all allowed memory, its badness score will be 1000. If it is using half of its allowed memory, its score will be 500. -There is an additional factor included in the badness score: root -processes are given 3% extra memory over other tasks. +There is an additional factor included in the badness score: the current memory +and swap usage is discounted by 3% for root processes. The amount of "allowed" memory depends on the context in which the oom killer was called. If it is due to the memory assigned to the allocating task's cpuset --- linux-3.13.0.orig/Documentation/filesystems/vfs.txt +++ linux-3.13.0/Documentation/filesystems/vfs.txt @@ -362,6 +362,7 @@ int (*atomic_open)(struct inode *, struct dentry *, struct file *, unsigned open_flag, umode_t create_mode, int *opened); int (*tmpfile) (struct inode *, struct dentry *, umode_t); + int (*dentry_open)(struct dentry *, struct file *, const struct cred *); }; Again, all methods are called without any locks being held, unless @@ -681,6 +682,12 @@ but instead uses bmap to find out where the blocks in the file are and uses those addresses directly. + dentry_open: this is an alternative to f_op->open(), the difference is that + this method may open a file not necessarily originating from the same + filesystem as the one i_op->open() was called on. It may be + useful for stacking filesystems which want to allow native I/O directly + on underlying files. + invalidatepage: If a page has PagePrivate set, then invalidatepage will be called when part or all of the page is to be removed --- linux-3.13.0.orig/Documentation/i2c/busses/i2c-piix4 +++ linux-3.13.0/Documentation/i2c/busses/i2c-piix4 @@ -13,7 +13,7 @@ * AMD SP5100 (SB700 derivative found on some server mainboards) Datasheet: Publicly available at the AMD website http://support.amd.com/us/Embedded_TechDocs/44413.pdf - * AMD Hudson-2, CZ + * AMD Hudson-2, ML, CZ Datasheet: Not publicly available * Standard Microsystems (SMSC) SLC90E66 (Victory66) southbridge Datasheet: Publicly available at the SMSC website http://www.smsc.com --- linux-3.13.0.orig/Documentation/input/elantech.txt +++ linux-3.13.0/Documentation/input/elantech.txt @@ -504,9 +504,12 @@ * reg_10 bit 7 6 5 4 3 2 1 0 - 0 0 0 0 0 0 0 A + 0 0 0 0 R F T A A: 1 = enable absolute tracking + T: 1 = enable two finger mode auto correct + F: 1 = disable ABS Position Filter + R: 1 = enable real hardware resolution 6.2 Native absolute mode 6 byte packet format ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --- linux-3.13.0.orig/Documentation/kernel-parameters.txt +++ linux-3.13.0/Documentation/kernel-parameters.txt @@ -652,6 +652,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 @@ -890,6 +894,12 @@ edd= [EDD] Format: {"off" | "on" | "skip[mbr]"} + efi= [EFI] + Format: { "old_map" } + old_map [X86-64]: switch to the old ioremap-based EFI + runtime services mapping. 32-bit still uses this one by + default. + efi_no_storage_paranoia [EFI; X86] Using this parameter you can use more than 50% of your efi variable storage. Use this parameter only if @@ -962,6 +972,13 @@ parameter will force ia64_sal_cache_flush to call ia64_pal_cache_flush instead of SAL_CACHE_FLUSH. + forcepae [X86-32] + Forcefully enable Physical Address Extension (PAE). + Many Pentium M systems disable PAE but may have a + functionally usable PAE implementation. + Note: This parameter is unsupported, may cause unknown + problems, and will taint the kernel. + ftrace=[tracer] [FTRACE] will set and start the specified tracer as early as possible in order to facilitate early @@ -1121,6 +1138,7 @@ i8042.notimeout [HW] Ignore timeout condition signalled by controller i8042.reset [HW] Reset the controller during init and cleanup i8042.unlock [HW] Unlock (ignore) the keylock + i8042.kbdreset [HW] Reset device connected to KBD port i810= [HW,DRM] --- linux-3.13.0.orig/Documentation/lzo.txt +++ linux-3.13.0/Documentation/lzo.txt @@ -0,0 +1,164 @@ + +LZO stream format as understood by Linux's LZO decompressor +=========================================================== + +Introduction + + This is not a specification. No specification seems to be publicly available + for the LZO stream format. This document describes what input format the LZO + decompressor as implemented in the Linux kernel understands. The file subject + of this analysis is lib/lzo/lzo1x_decompress_safe.c. No analysis was made on + the compressor nor on any other implementations though it seems likely that + the format matches the standard one. The purpose of this document is to + better understand what the code does in order to propose more efficient fixes + for future bug reports. + +Description + + The stream is composed of a series of instructions, operands, and data. The + instructions consist in a few bits representing an opcode, and bits forming + the operands for the instruction, whose size and position depend on the + opcode and on the number of literals copied by previous instruction. The + operands are used to indicate : + + - a distance when copying data from the dictionary (past output buffer) + - a length (number of bytes to copy from dictionary) + - the number of literals to copy, which is retained in variable "state" + as a piece of information for next instructions. + + Optionally depending on the opcode and operands, extra data may follow. These + extra data can be a complement for the operand (eg: a length or a distance + encoded on larger values), or a literal to be copied to the output buffer. + + The first byte of the block follows a different encoding from other bytes, it + seems to be optimized for literal use only, since there is no dictionary yet + prior to that byte. + + Lengths are always encoded on a variable size starting with a small number + of bits in the operand. If the number of bits isn't enough to represent the + length, up to 255 may be added in increments by consuming more bytes with a + rate of at most 255 per extra byte (thus the compression ratio cannot exceed + around 255:1). The variable length encoding using #bits is always the same : + + length = byte & ((1 << #bits) - 1) + if (!length) { + length = ((1 << #bits) - 1) + length += 255*(number of zero bytes) + length += first-non-zero-byte + } + length += constant (generally 2 or 3) + + For references to the dictionary, distances are relative to the output + pointer. Distances are encoded using very few bits belonging to certain + ranges, resulting in multiple copy instructions using different encodings. + Certain encodings involve one extra byte, others involve two extra bytes + forming a little-endian 16-bit quantity (marked LE16 below). + + After any instruction except the large literal copy, 0, 1, 2 or 3 literals + are copied before starting the next instruction. The number of literals that + were copied may change the meaning and behaviour of the next instruction. In + practice, only one instruction needs to know whether 0, less than 4, or more + literals were copied. This is the information stored in the variable + in this implementation. This number of immediate literals to be copied is + generally encoded in the last two bits of the instruction but may also be + taken from the last two bits of an extra operand (eg: distance). + + End of stream is declared when a block copy of distance 0 is seen. Only one + instruction may encode this distance (0001HLLL), it takes one LE16 operand + for the distance, thus requiring 3 bytes. + + IMPORTANT NOTE : in the code some length checks are missing because certain + instructions are called under the assumption that a certain number of bytes + follow because it has already been garanteed before parsing the instructions. + They just have to "refill" this credit if they consume extra bytes. This is + an implementation design choice independant on the algorithm or encoding. + +Byte sequences + + First byte encoding : + + 0..17 : follow regular instruction encoding, see below. It is worth + noting that codes 16 and 17 will represent a block copy from + the dictionary which is empty, and that they will always be + invalid at this place. + + 18..21 : copy 0..3 literals + state = (byte - 17) = 0..3 [ copy literals ] + skip byte + + 22..255 : copy literal string + length = (byte - 17) = 4..238 + state = 4 [ don't copy extra literals ] + skip byte + + Instruction encoding : + + 0 0 0 0 X X X X (0..15) + Depends on the number of literals copied by the last instruction. + If last instruction did not copy any literal (state == 0), this + encoding will be a copy of 4 or more literal, and must be interpreted + like this : + + 0 0 0 0 L L L L (0..15) : copy long literal string + length = 3 + (L ?: 15 + (zero_bytes * 255) + non_zero_byte) + state = 4 (no extra literals are copied) + + If last instruction used to copy between 1 to 3 literals (encoded in + the instruction's opcode or distance), the instruction is a copy of a + 2-byte block from the dictionary within a 1kB distance. It is worth + noting that this instruction provides little savings since it uses 2 + bytes to encode a copy of 2 other bytes but it encodes the number of + following literals for free. It must be interpreted like this : + + 0 0 0 0 D D S S (0..15) : copy 2 bytes from <= 1kB distance + length = 2 + state = S (copy S literals after this block) + Always followed by exactly one byte : H H H H H H H H + distance = (H << 2) + D + 1 + + If last instruction used to copy 4 or more literals (as detected by + state == 4), the instruction becomes a copy of a 3-byte block from the + dictionary from a 2..3kB distance, and must be interpreted like this : + + 0 0 0 0 D D S S (0..15) : copy 3 bytes from 2..3 kB distance + length = 3 + state = S (copy S literals after this block) + Always followed by exactly one byte : H H H H H H H H + distance = (H << 2) + D + 2049 + + 0 0 0 1 H L L L (16..31) + Copy of a block within 16..48kB distance (preferably less than 10B) + length = 2 + (L ?: 7 + (zero_bytes * 255) + non_zero_byte) + Always followed by exactly one LE16 : D D D D D D D D : D D D D D D S S + distance = 16384 + (H << 14) + D + state = S (copy S literals after this block) + End of stream is reached if distance == 16384 + + 0 0 1 L L L L L (32..63) + Copy of small block within 16kB distance (preferably less than 34B) + length = 2 + (L ?: 31 + (zero_bytes * 255) + non_zero_byte) + Always followed by exactly one LE16 : D D D D D D D D : D D D D D D S S + distance = D + 1 + state = S (copy S literals after this block) + + 0 1 L D D D S S (64..127) + Copy 3-4 bytes from block within 2kB distance + state = S (copy S literals after this block) + length = 3 + L + Always followed by exactly one byte : H H H H H H H H + distance = (H << 3) + D + 1 + + 1 L L D D D S S (128..255) + Copy 5-8 bytes from block within 2kB distance + state = S (copy S literals after this block) + length = 5 + L + Always followed by exactly one byte : H H H H H H H H + distance = (H << 3) + D + 1 + +Authors + + This document was written by Willy Tarreau on 2014/07/19 during an + analysis of the decompression code available in Linux 3.16-rc5. The code is + tricky, it is possible that this document contains mistakes or that a few + corner cases were overlooked. In any case, please report any doubt, fix, or + proposed updates to the author(s) so that the document can be updated. --- linux-3.13.0.orig/Documentation/misc-devices/apm-xgene-qmtm +++ linux-3.13.0/Documentation/misc-devices/apm-xgene-qmtm @@ -0,0 +1,149 @@ +AppliedMicro X-Gene SOC Queue Manager/Traffic Manager Document + +Copyright (c) 2013 Applied Micro Circuits Corporation. +Author: Ravi Patel + +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. + + +Overview: +QMTM is a device which interacts with CPU, Ethernet, PktDMA and Security +subsystems through AXI BUS. Its centralized resource manager/driver exports +APIs for CPU, Ethernet, PktDMA and Security subsystems to +1. Initialize & allocate queue & pbn. +2. Read queue state so that subsystems driver knows how much more work it can + offload to its subsystem. +3. Apply QoS for subsystems on their queues. + +Layout: +The layout represents run-time flow of messages between Ethernet subsystem, CPU +and QMTM in APM X-Gene SOC. PktDMA and Security subsystems interfaces with QMTM +in the same way as Ethernet. + + + CPU + o-------------------------o + | | + +----|[2] {5}|----+ + | | [1] {4} | | +Register | o------+-----------+------o | Register +Write | CPU WR | | CPU RD | Write +to start v MSG v ^ MSG v to notify +packet | | DDR | | packet +transmit | o--------+-----o-----+--------o | received + | | Q0 M . M M | M M . M Q1 | | + | | for S . S S | S S . S for | | + | | ETH G . G G | G G . G ETH | | + | | TX n . 2 1 | 1 2 . n RX | | + | o----------+---o---+----------o | + | | | | + v v ^ v + | | | | +o--------|-------------|-------|-------------|--------o +| | | | | | Coherent +| v v ^ v | I/O +| | | | | | BUS +o--------|-------------|-------|-------------|--------o + | [3] | | {3} | + v QMTM RD v ^ QMTM WR v + | MSG | | MSG | + o----+----o--------+---o---+--------o----+----o + | Queue 0 | | | Queue 1 | + | Command o ETH PBN 0 o CPU PBN 0 o Command | Queue Manager/ + | Register| | |Register | Traffic Manager + o---------o---+--------o--------+---o---------o + | | + v ^ +Ethernet RD MSG | [4] ETH {2} | Ethernet WR MSG +from its PBN o---+-----------------+---o to CPU PBN + | | + | Egress MAC Ingress MAC | + | [5] {1} | + o------|-----------|------o + v ^ + | | + TX Data RX Data + +Transmit Flow +[1] CPU (Ethernet driver) prepares 32 byte Ethernet egress work message and + enqueues the message to the queue in DDR. +[2] CPU (Ethernet driver) notifies QMTM that there is a message enqueued in + Ethernet transmit queue (e.g. Q0). +[3] QMTM prefetches the Ethernet egress work messages into Ethernet PBN + (e.g. ETH PBN 0). +[4] Ethernet reads work messages from its PBN. +[5] Ethernet DMAs payload from DDR to its egress FIFO and transmits data out. + +Receive Flow +{1} Ethernet receives data and DMAs payload from its ingress FIFO to DDR and + prepares a Ethernet ingress work message. +{2} Ethernet pushes work message to QMTM. +{3} QMTM prefetches the Ethernet ingress work messages into CPU PBN + (e.g. CPU PBN 0) and then interrupts CPU. +{4} CPU (Ethernet driver) dequeues the 32 bytes Ethernet ingress work message + from the queue in DDR. +{5} CPU (Ethernet driver) notifies QMTM that it dequeued a message from + Ethernet receive queue (e.g. Q1). + + +Definition: +1. QMTM (Queue/Traffic Manager) + QMTM manages queues and pbns for CPU, Ethernet, PktDMA and Security + Subsystems. It also performs flow control and QoS on queues. + +2. Slave/Client/Agent + Ethernet, PktDMA (XOR Engine) and Security Engine Subsystems & CPU whose + queues and pbn are managed by QMTM are called slave/client/agent. + +3. Queue + Queue is circular FIFO memory for QMTM hardware in which a 16 bytes, + 32 bytes or 64 bytes message is dequeued OR enqueued between CPU and + Ethernet, PktDMA and Security Engine Subsystems. + +4. PB + Each subsystem in the APM X-Gene SoC device has a prefetch buffer for + storing messages in order to pipeline the QMTM processing latency with the + subsystem processing latency. The number of buffers prefetched depends on + the QM/TM processing latency and the subsystem data rate. + + There are multiple PB for a subsystem, each PB is assigned a number which is + called PBN. Each subsystem and CPU can have max 32 pbns, however QMTM limits + how many pbns it supports for each subsystem. + +5. Message + The subsystems in the APM X-Gene SoC communicate with a central Queue Manager + (QM) that manages all the messages queued to the subsystems. The subsystems + communicate with the QM using messages that include information about the + work to be performed and the location of the buffers or data on which the + work is to be performed. + + A message consists of 16, 32 or 64 bytes which resides in a queue. A message + which is + a. 16 bytes contains information of data buffer, length, etc. allocated by + subsystem driver. + b. 32 or 64 bytes contains information about the work to be done for a + subsystem. Each subsystem defines its own format of work message. + + Each subsystem defines their own format of work message. A message (or queue + descriptor) has attribute fields (QMTM specific) which are common for all + subsystem work messages. The remaining fields of a message are specific to + subsystem. QMTM device doesn't have any knowledge of these subsystems + specific fields and the data operation which subsystem is going to perform + using these fields. + + e.g. + 1. Ethernet work message includes data address & length which is used by + Ethernet DMA engine for copying the data to/from its internal FIFO. + 2. PktDMA work message includes multiple data addresses & lengths for + doing scatter/gather, XOR operations and result data address/es to give + back result to the CPU (driver). + 3. Security work message includes data address & length for doing encryption + or decryption, the type of encryption or decryption and result data + address to give back result to the CPU (driver). --- linux-3.13.0.orig/Documentation/misc-devices/mei/mei-amt-version.c +++ linux-3.13.0/Documentation/misc-devices/mei/mei-amt-version.c @@ -115,8 +115,6 @@ struct mei_client *cl; struct mei_connect_client_data data; - mei_deinit(me); - me->verbose = verbose; me->fd = open("/dev/mei", O_RDWR); --- linux-3.13.0.orig/Documentation/module-signing.txt +++ linux-3.13.0/Documentation/module-signing.txt @@ -53,7 +53,8 @@ If this is off (ie. "permissive"), then modules for which the key is not available and modules that are unsigned are permitted, but the kernel will - be marked as being tainted. + be marked as being tainted, and the concerned modules will be marked as + tainted, shown with the character 'X'. If this is on (ie. "restrictive"), only modules that have a valid signature that can be verified by a public key in the kernel's possession --- linux-3.13.0.orig/Documentation/networking/fman.txt +++ linux-3.13.0/Documentation/networking/fman.txt @@ -0,0 +1,232 @@ +The FMan driver +Sysfs file description + +Author: Andrei Sorin Pistirica +Updated: 2010-12-08 + +FMAN SYSFS statistics counters +------------------------------ +The document contains statistics counters description for every type of +FMAN port and for all FMAN modules as well (FMAN, FMAN:DMA and FMAN:PCD). +Every counter is related to a specific register mapped as well. + +Port type: Tx +------------- +port_frame: FMBM_TFRC + "counts the total number of frames flowing on the Tx port, regardless of + whether they got transmitted or discarded." + +port_discard_frame: FMBM_TFDC + "counts the number of frames that were discarded due to DMA error indication + that was sensed during the process of frame payload or frame context + loading." + +port_dealloc_buf:FMBM_TBDC + "counts the number of buffer deallocate operations." + +port_enq_total:FMQM_PnETFC + "counts the number of enqueue operations preformed for this portID." + +port_length_err:FMBM_TFLEDC + "counts the number of frames that were discarded due to frame length error." + +port_unsupprted_format:FMBM_TFUFDC + "counts the number of frames that were discarded due to frame format + error - frame descriptor contains unsupported format." + +port_deq_total:FMQM_PnDTFC + "counts the total number of FDs that dequeued from the QMan for this + portID." + +port_deq_from_default:FMQM_PnDDCFQC + "counts the number of time the portID used the default confirmation FQID + from the BMI.s FMBM_TDCFQID" + +port_deq_confirm:FMQM_PnDCC + "counts the number of times the PortID got a FD from the dequeue response + that require confirmation." + +Port type: Rx +------------- +port_frame:FMBM_RFRC + "counts the total number of frames received on the Rx port." + +port_discard_frame:FMBM_RFDC + "counts the number of frames received on the Rx port that were not able + to enter the receive queue system due to WRED algorithm." + +port_dealloc_buf:FMBM_RBDC + "counts the number of buffer deallocate operations." + +port_enq_total:FMQM_PnETFC + "counts the number of enqueue operations preformed for this portID" + +port_rx_bad_frame:FMBM_RBFC + "counts the number of frames received on the Rx port with an error + indication" + +port_rx_large_frame:FMBM_RLFC + "counts the number of frames received on the Rx port with an over size + indication. Over size indication is marked when frame size exceeds the + maximum configured in the corresponding MAC configuration register" + +port_rx_out_of_buffers_discard:FMBM_RODC + "counts the number of frames received on the Rx port that were not able + to enter the receive queue system due to lack of external buffers, or + the lack of suitable buffers that cause the S/G list to grow beyond 16 + entries, or the lack of suitable buffer to hold S/G list (including + start margin), or the lack of suitable buffer to hold the frame header + (including start margin)." + +port_rx_filter_frame:FMBM_RFFC + "counts the number of frames received on the Rx port that were filtered + out by the parse and classify modules of the Fman" + +Port type: Oh +------------- +Oh ports have the same counters as RX and TX ports. The counters are listed +below and the description can be found at the other ports (above): + port_frame + port_discard_frame + port_dealloc_buf + port_enq_total + port_length_err + port_unsupprted_format + port_deq_total + port_deq_from_default + port_deq_confirm + port_rx_bad_frame + port_rx_large_frame + port_rx_out_of_buffers_discard + +Fman: +----- +enq_total_frame:FMQM_ETFC + "counts the total number of enqueue operations the QMI performed." + +deq_total_frame:FMQM_DTFC + "counts the total number of FDs that dequeued from the Qman." + +deq_0:FMQM_DC0 + "counts the number of times the QMI received a NULL FD from the QMan as a + response to a dequeue request (command)" + +deq_1:FMQM_DC1 + "counts the number of times the QMI got 1 FD from the QMan as a response + to a dequeue request (command)" + +deq_2:FMQM_DC2 + "counts the number of times the QMI got 2 FD from the QMan as a response + to a dequeue request (command)" + +deq_from_default:FMQM_DDCFQC + "counts the number of times the QMI used the default confirmation FQID + from the BMI's FMBM_TCFQID" + +deq_from_context:FMQM_CBCFQC + "counts the number of times the QMI used the override confirmation FQID + from the FD command field" + +deq_from_fd:FMQM_DFOCFQC + "counts the number of times the QMI used the override confirmation FQID + from the FD command field" + +deq_confirm:(FMQM_DCC + "counts the number of times the QMI gets an FD from the dequeue response + that requires confirmation" + +Fman: DMA +--------- +The FMAN:DMA counters are read from FMDMSR register. They reports bus error +events that are recognized by the FMan DMA controller on all of the +FMan DMA channels. + The counters are: + cmq_not_empty + bus_error + read_buf_ecc_error + write_buf_ecc_sys_error + write_buf_ecc_fm_error + +Fman: PCD +--------- +pcd_kg_total:FMKG_TPC + "count of packets passed in the keygen on all schemes" + +pcd_plcr_yellow:FMPL_YPC + "counts the total number of YELLOW packets that exit the Policer" + +pcd_plcr_red:FMPL_RPC + "counter counts the total number of RED packets that exit the Policer" + +pcd_plcr_recolored_to_red:FMPL_RRPC + "counts the number of packets that changed color to RED by the Policer" + +pcd_plcr_recolored_to_yellow:FMPL_RYPC + "counts the number of packets that changed color to YELLOW by the Policer" + +pcd_plcr_total:FMPL_TPC + "counts the total number of packets passed in the Policer" + +pcd_plcr_length_mismatch:FMPL_FLMC + "counts the number of packets with length mismatch indicated by an offset + value of 0xFF in the selected parser result entry or when the calculated + frame offset result is greater than the packet full length provided by + FD length" + +pcd_prs_parse_dispatch:FMPR_PDS + "counts the number of times the parser block was dispatched by FPM" + +pcd_prs_l2_parse_result_returned:FMPR_L2RRS + "counts the number of times L2 parse result was returned (including with + errors)" + +pcd_prs_l3_parse_result_returned:FMPR_L3RRS + "counts the number of times L3 parse result was returned (including with + errors) + +pcd_prs_l4_parse_result_returned:FMPR_L4RRS + "counts the number of times L4 parse result was returned (including with + errors)" + +pcd_prs_shim_parse_result_returned:FMPR_SRRS + "counts the number of times Shim parse result was returned (including with + errors)" + +pcd_prs_l2_parse_result_returned_with_err:FMPR_L2RRES + "counts the number of times L2 parse result was returned with errors" + +pcd_prs_l3_parse_result_returned_with_err:FMPR_L3RRES + "counts the number of times L3 parse result was returned with errors" + +pcd_prs_l4_parse_result_returned_with_err:FMPR_L4RRES + "counts the number of times L4 parse result was returned with errors" + +pcd_prs_shim_parse_result_returned_with_err:FMPR_SRRES + "counts the number of times Shim parse result was returned with errors" + +pcd_prs_soft_prs_cycles:FMPR_SPCS + "counts the number of cycles spent executing soft parser instruction + (including stall cycles)" + +pcd_prs_soft_prs_stall_cycles:FMPR_SPSCS + "counts the number of cycles stalled waiting for parser internal memory + reads while executing soft parser instruction." + +pcd_prs_hard_prs_cycle_incl_stall_cycles:FMPR_HXSCS + "counts the number of cycles spent executing hard parser (including stall + cycles)" + +pcd_prs_muram_read_cycles:FMPR_MRCS + "counts the number of cycles while performing FMan Memory read" + +pcd_prs_muram_read_stall_cycles:FMPR_MRSCS + "counts the number of cycles stalled while performing FMan Memory read" + +pcd_prs_muram_write_cycles:FMPR_MWCS + "counts the number of cycles while performing FMan Memory write" + +pcd_prs_muram_write_stall_cycles:FMPR_MWSCS + "counts the number of cycles stalled while performing FMan Memory write" + +pcd_prs_fpm_command_stall_cycles:FMPR_FCSCS + "counts the number of cycles stalled while performing a FPM command" --- linux-3.13.0.orig/Documentation/networking/i40evf.txt +++ linux-3.13.0/Documentation/networking/i40evf.txt @@ -0,0 +1,47 @@ +Linux* Base Driver for Intel(R) Network Connection +================================================== + +Intel XL710 X710 Virtual Function Linux driver. +Copyright(c) 2013 Intel Corporation. + +Contents +======== + +- Identifying Your Adapter +- Known Issues/Troubleshooting +- Support + +This file describes the i40evf Linux* Base Driver for the Intel(R) XL710 +X710 Virtual Function. + +The i40evf driver supports XL710 and X710 virtual function devices that +can only be activated on kernels with CONFIG_PCI_IOV enabled. + +The guest OS loading the i40evf driver must support MSI-X interrupts. + +Identifying Your Adapter +======================== + +For more information on how to identify your adapter, go to the Adapter & +Driver ID Guide at: + + http://support.intel.com/support/go/network/adapter/idguide.htm + +Known Issues/Troubleshooting +============================ + + +Support +======= + +For general information, go to the Intel support website at: + + http://support.intel.com + +or the Intel Wired Networking project hosted by Sourceforge at: + + http://sourceforge.net/projects/e1000 + +If an issue is identified with the released source code on the supported +kernel with a supported adapter, email the specific information related +to the issue to e1000-devel@lists.sf.net --- linux-3.13.0.orig/Documentation/networking/ip-sysctl.txt +++ linux-3.13.0/Documentation/networking/ip-sysctl.txt @@ -542,12 +542,6 @@ not receive a window scaling option from them. Default: 0 -tcp_dma_copybreak - INTEGER - Lower limit, in bytes, of the size of socket reads that will be - offloaded to a DMA copy engine, if one is present in the system - and CONFIG_NET_DMA is enabled. - Default: 4096 - tcp_thin_linear_timeouts - BOOLEAN Enable dynamic triggering of linear timeouts for thin streams. If set, a check is performed upon retransmission by timeout to @@ -1149,6 +1143,14 @@ Functional default: enabled if accept_ra is enabled. disabled if accept_ra is disabled. +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-3.13.0.orig/Documentation/networking/timestamping.txt +++ linux-3.13.0/Documentation/networking/timestamping.txt @@ -85,7 +85,7 @@ by the network device and will be empty without that support. -SIOCSHWTSTAMP: +SIOCSHWTSTAMP, SIOCGHWTSTAMP: Hardware time stamping must also be initialized for each device driver that is expected to do hardware time stamping. The parameter is defined in @@ -115,6 +115,10 @@ space is responsible to ensure that multiple processes don't interfere with each other and that the settings are reset. +Any process can read the actual configuration by passing this +structure to ioctl(SIOCGHWTSTAMP) in the same way. However, this has +not been implemented in all drivers. + /* possible values for hwtstamp_config->tx_type */ enum { /* @@ -157,7 +161,8 @@ A driver which supports hardware time stamping must support the SIOCSHWTSTAMP ioctl and update the supplied struct hwtstamp_config with -the actual values as described in the section on SIOCSHWTSTAMP. +the actual values as described in the section on SIOCSHWTSTAMP. It +should also support SIOCGHWTSTAMP. Time stamps for received packets must be stored in the skb. To get a pointer to the shared time stamp structure of the skb call skb_hwtstamps(). Then --- linux-3.13.0.orig/Documentation/oops-tracing.txt +++ linux-3.13.0/Documentation/oops-tracing.txt @@ -265,6 +265,9 @@ 13: 'O' if an externally-built ("out-of-tree") module has been loaded. + 14: 'X' if an unsigned module has been loaded in a kernel supporting + module signature. + The primary reason for the 'Tainted: ' string is to tell kernel debuggers if this is a clean kernel or if anything unusual has occurred. Tainting is permanent: even if an offending module is --- linux-3.13.0.orig/Documentation/powerpc/transactional_memory.txt +++ linux-3.13.0/Documentation/powerpc/transactional_memory.txt @@ -74,22 +74,23 @@ Syscalls ======== -Performing syscalls from within transaction is not recommended, and can lead -to unpredictable results. - -Syscalls do not by design abort transactions, but beware: The kernel code will -not be running in transactional state. The effect of syscalls will always -remain visible, but depending on the call they may abort your transaction as a -side-effect, read soon-to-be-aborted transactional data that should not remain -invisible, etc. If you constantly retry a transaction that constantly aborts -itself by calling a syscall, you'll have a livelock & make no progress. - -Simple syscalls (e.g. sigprocmask()) "could" be OK. Even things like write() -from, say, printf() should be OK as long as the kernel does not access any -memory that was accessed transactionally. - -Consider any syscalls that happen to work as debug-only -- not recommended for -production use. Best to queue them up till after the transaction is over. +Syscalls made from within an active transaction will not be performed and the +transaction will be doomed by the kernel with the failure code TM_CAUSE_SYSCALL +| TM_CAUSE_PERSISTENT. + +Syscalls made from within a suspended transaction are performed as normal and +the transaction is not explicitly doomed by the kernel. However, what the +kernel does to perform the syscall may result in the transaction being doomed +by the hardware. The syscall is performed in suspended mode so any side +effects will be persistent, independent of transaction success or failure. No +guarantees are provided by the kernel about which syscalls will affect +transaction success. + +Care must be taken when relying on syscalls to abort during active transactions +if the calls are made via a library. Libraries may cache values (which may +give the appearance of success) or perform operations that cause transaction +failure before entering the kernel (which may produce different failure codes). +Examples are glibc's getpid() and lazy symbol resolution. Signals @@ -176,8 +177,7 @@ TM_CAUSE_RESCHED Thread was rescheduled. TM_CAUSE_TLBI Software TLB invalide. TM_CAUSE_FAC_UNAV FP/VEC/VSX unavailable trap. - TM_CAUSE_SYSCALL Currently unused; future syscalls that must abort - transactions for consistency will use this. + TM_CAUSE_SYSCALL Syscall from active transaction. TM_CAUSE_SIGNAL Signal delivered. TM_CAUSE_MISC Currently unused. TM_CAUSE_ALIGNMENT Alignment fault. --- linux-3.13.0.orig/Documentation/ramoops.txt +++ linux-3.13.0/Documentation/ramoops.txt @@ -14,11 +14,19 @@ 1. Ramoops concepts -Ramoops uses a predefined memory area to store the dump. The start and size of -the memory area are set using two variables: +Ramoops uses a predefined memory area to store the dump. The start and size +and type of the memory area are set using three variables: * "mem_address" for the start * "mem_size" for the size. The memory size will be rounded down to a power of two. + * "mem_type" to specifiy if the memory type (default is pgprot_writecombine). + +Typically the default value of mem_type=0 should be used as that sets the pstore +mapping to pgprot_writecombine. Setting mem_type=1 attempts to use +pgprot_noncached, which only works on some platforms. This is because pstore +depends on atomic operations. At least on ARM, pgprot_noncached causes the +memory to be mapped strongly ordered, and atomic operations on strongly ordered +memory are implementation defined, and won't work on many ARMs such as omaps. The memory area is divided into "record_size" chunks (also rounded down to power of two) and each oops/panic writes a "record_size" chunk of @@ -55,6 +63,7 @@ static struct ramoops_platform_data ramoops_data = { .mem_size = <...>, .mem_address = <...>, + .mem_type = <...>, .record_size = <...>, .dump_oops = <...>, .ecc = <...>, --- linux-3.13.0.orig/Documentation/sound/alsa/ALSA-Configuration.txt +++ linux-3.13.0/Documentation/sound/alsa/ALSA-Configuration.txt @@ -2026,8 +2026,8 @@ ------------------- Module for sound cards based on the Asus AV66/AV100/AV200 chips, - i.e., Xonar D1, DX, D2, D2X, DS, Essence ST (Deluxe), Essence STX, - HDAV1.3 (Deluxe), and HDAV1.3 Slim. + i.e., Xonar D1, DX, D2, D2X, DS, DSX, Essence ST (Deluxe), + Essence STX (II), HDAV1.3 (Deluxe), and HDAV1.3 Slim. This module supports autoprobe and multiple cards. --- linux-3.13.0.orig/Documentation/stable_kernel_rules.txt +++ linux-3.13.0/Documentation/stable_kernel_rules.txt @@ -29,6 +29,9 @@ Procedure for submitting patches to the -stable tree: + - If the patch covers files in net/ or drivers/net please follow netdev stable + submission guidelines as described in + Documentation/networking/netdev-FAQ.txt - Send the patch, after verifying that it follows the above rules, to stable@vger.kernel.org. You must note the upstream commit ID in the changelog of your submission, as well as the kernel version you wish --- linux-3.13.0.orig/Documentation/sysctl/fs.txt +++ linux-3.13.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-3.13.0.orig/Documentation/sysctl/kernel.txt +++ linux-3.13.0/Documentation/sysctl/kernel.txt @@ -33,6 +33,7 @@ - domainname - hostname - hotplug +- kexec_load_disabled - kptr_restrict - kstack_depth_to_print [ X86 only ] - l2cr [ PPC only ] @@ -287,6 +288,18 @@ ============================================================== +kexec_load_disabled: + +A toggle indicating if the kexec_load syscall has been disabled. This +value defaults to 0 (false: kexec_load enabled), but can be set to 1 +(true: kexec_load disabled). Once true, kexec can no longer be used, and +the toggle cannot be set back to false. This allows a kexec image to be +loaded before disabling the syscall, allowing a system to set up (and +later use) an image without it being altered. Generally used together +with the "modules_disabled" sysctl. + +============================================================== + kptr_restrict: This toggle indicates whether restrictions are placed on @@ -331,7 +344,7 @@ in an otherwise modular kernel. This toggle defaults to off (0), but can be set true (1). Once true, modules can be neither loaded nor unloaded, and the toggle cannot be set back -to false. +to false. Generally used with the "kexec_load_disabled" toggle. ============================================================== @@ -742,6 +755,8 @@ 1024 - A module from drivers/staging was loaded. 2048 - The system is working around a severe firmware bug. 4096 - An out-of-tree module has been loaded. +8192 - An unsigned module has been loaded in a kernel supporting module + signature. ============================================================== --- linux-3.13.0.orig/Documentation/sysctl/vm.txt +++ linux-3.13.0/Documentation/sysctl/vm.txt @@ -669,7 +669,8 @@ set to pcp->high/4. The upper limit of batch is (PAGE_SHIFT * 8) The initial value is zero. Kernel does not use this value at boot time to set -the high water marks for each per cpu page list. +the high water marks for each per cpu page list. If the user writes '0' to this +sysctl, it will revert to this default behavior. ============================================================== --- linux-3.13.0.orig/Documentation/video4linux/gspca.txt +++ linux-3.13.0/Documentation/video4linux/gspca.txt @@ -55,6 +55,7 @@ sonixj 0458:7025 Genius Eye 311Q sn9c20x 0458:7029 Genius Look 320s sonixj 0458:702e Genius Slim 310 NB +sn9c20x 0458:7045 Genius Look 1320 V2 sn9c20x 0458:704a Genius Slim 1320 sn9c20x 0458:704c Genius i-Look 1321 sn9c20x 045e:00f4 LifeCam VX-6000 (SN9C20x + OV9650) --- linux-3.13.0.orig/Documentation/virtual/kvm/api.txt +++ linux-3.13.0/Documentation/virtual/kvm/api.txt @@ -2327,7 +2327,7 @@ Capability: basic Architectures: arm, arm64 Type: vcpu ioctl -Parameters: struct struct kvm_vcpu_init (in) +Parameters: struct kvm_vcpu_init (in) Returns: 0 on success; -1 on error Errors:  EINVAL:    the target is unknown, or the combination of features is invalid. @@ -2346,6 +2346,8 @@ Depends on KVM_CAP_ARM_PSCI. - KVM_ARM_VCPU_EL1_32BIT: Starts the CPU in a 32bit mode. Depends on KVM_CAP_ARM_EL1_32BIT (arm64 only). + - KVM_ARM_VCPU_PSCI_0_2: Emulate PSCI v0.2 for the CPU. + Depends on KVM_CAP_ARM_PSCI_0_2. 4.83 KVM_ARM_PREFERRED_TARGET @@ -2699,6 +2701,21 @@ external interrupt has just been delivered into the guest. User space should put the acknowledged interrupt vector into the 'epr' field. + /* KVM_EXIT_SYSTEM_EVENT */ + struct { +#define KVM_SYSTEM_EVENT_SHUTDOWN 1 +#define KVM_SYSTEM_EVENT_RESET 2 + __u32 type; + __u64 flags; + } system_event; + +If exit_reason is KVM_EXIT_SYSTEM_EVENT then the vcpu has triggered +a system-level event using some architecture specific mechanism (hypercall +or some special instruction). In case of ARM/ARM64, this is triggered using +HVC instruction based PSCI call from the vcpu. The 'type' field describes +the system-level event type. The 'flags' field describes architecture +specific flags for the system-level event. + /* Fix the size of the union. */ char padding[256]; }; --- linux-3.13.0.orig/Documentation/virtual/kvm/mmu.txt +++ linux-3.13.0/Documentation/virtual/kvm/mmu.txt @@ -169,6 +169,10 @@ Contains the value of cr4.smep && !cr0.wp for which the page is valid (pages for which this is true are different from other pages; see the treatment of cr0.wp=0 below). + role.smap_andnot_wp: + Contains the value of cr4.smap && !cr0.wp for which the page is valid + (pages for which this is true are different from other pages; see the + treatment of cr0.wp=0 below). gfn: Either the guest page table containing the translations shadowed by this page, or the base page frame for linear translations. See role.direct. @@ -344,10 +348,16 @@ (user write faults generate a #PF) -In the first case there is an additional complication 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. +In the first case there are two additional complications: +- 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. +- 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, + here we do not care the case that CR4.SMAP is enabled since KVM will + directly inject #PF to guest due to failed permission check. To prevent an spte that was converted into a kernel page with cr0.wp=0 from being written by the kernel after cr0.wp has changed to 1, we make @@ -425,6 +435,20 @@ Since only 19 bits are used to store generation-number on mmio spte, all pages are zapped when there is an overflow. +Unfortunately, a single memory access might access kvm_memslots(kvm) multiple +times, the last one happening when the generation number is retrieved and +stored into the MMIO spte. Thus, the MMIO spte might be created based on +out-of-date information, but with an up-to-date generation number. + +To avoid this, the generation number is incremented again after synchronize_srcu +returns; thus, the low bit of kvm_memslots(kvm)->generation is only 1 during a +memslot update, while some SRCU readers might be using the old copy. We do not +want to use an MMIO sptes created with an odd generation number, and we can do +this without losing a bit in the MMIO spte. The low bit of the generation +is not stored in MMIO spte, and presumed zero when it is extracted out of the +spte. If KVM is unlucky and creates an MMIO spte while the low bit is 1, +the next access to the spte will always be a cache miss. + Further reading =============== --- linux-3.13.0.orig/Documentation/vm/hwpoison.txt +++ linux-3.13.0/Documentation/vm/hwpoison.txt @@ -84,6 +84,11 @@ PR_MCE_KILL_EARLY: Early kill PR_MCE_KILL_LATE: Late kill PR_MCE_KILL_DEFAULT: Use system global default + Note that if you want to have a dedicated thread which handles + the SIGBUS(BUS_MCEERR_AO) on behalf of the process, you should + call prctl(PR_MCE_KILL_EARLY) on the designated thread. Otherwise, + the SIGBUS is sent to the main thread. + PR_MCE_KILL_GET return current mode --- linux-3.13.0.orig/Documentation/x86/x86_64/mm.txt +++ linux-3.13.0/Documentation/x86/x86_64/mm.txt @@ -12,6 +12,8 @@ ffffe90000000000 - ffffe9ffffffffff (=40 bits) hole ffffea0000000000 - ffffeaffffffffff (=40 bits) virtual memory map (1TB) ... unused hole ... +ffffff0000000000 - ffffff7fffffffff (=39 bits) %esp fixup stacks +... unused hole ... ffffffff80000000 - ffffffffa0000000 (=512 MB) kernel text mapping, from phys 0 ffffffffa0000000 - ffffffffff5fffff (=1525 MB) module mapping space ffffffffff600000 - ffffffffffdfffff (=8 MB) vsyscalls @@ -28,4 +30,11 @@ Current X86-64 implementations only support 40 bits of address space, but we support up to 46 bits. This expands into MBZ space in the page tables. +->trampoline_pgd: + +We map EFI runtime services in the aforementioned PGD in the virtual +range of 64Gb (arbitrarily set, can be raised if needed) + +0xffffffef00000000 - 0xffffffff00000000 + -Andi Kleen, Jul 2004 --- linux-3.13.0.orig/MAINTAINERS +++ linux-3.13.0/MAINTAINERS @@ -206,13 +206,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 @@ -340,15 +340,15 @@ S: Maintained ADM1025 HARDWARE MONITOR DRIVER -M: Jean Delvare -L: lm-sensors@lm-sensors.org +M: Jean Delvare +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 +M: Corentin Labbe +L: linux-hwmon@vger.kernel.org S: Maintained F: drivers/hwmon/adm1029.c @@ -393,7 +393,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 @@ -405,8 +405,8 @@ F: drivers/macintosh/therm_adt746x.c ADT7475 HARDWARE MONITOR DRIVER -M: Jean Delvare -L: lm-sensors@lm-sensors.org +M: Jean Delvare +L: linux-hwmon@vger.kernel.org S: Maintained F: Documentation/hwmon/adt7475 F: drivers/hwmon/adt7475.c @@ -540,9 +540,9 @@ F: include/linux/altera_jtaguart.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 @@ -654,9 +654,9 @@ F: drivers/input/mouse/bcm5974.c APPLE SMC DRIVER -M: Henrik Rydberg -L: lm-sensors@lm-sensors.org -S: Maintained +M: Henrik Rydberg +L: linux-hwmon@vger.kernel.org +S: Odd fixes F: drivers/hwmon/applesmc.c APPLETALK NETWORK LAYER @@ -665,6 +665,13 @@ F: drivers/net/appletalk/ F: net/appletalk/ +APPLIED MICRO (APM) X-GENE SOC ETHERNET DRIVER +M: Iyappan Subramanian +M: Keyur Chudgar +S: Supported +F: drivers/net/ethernet/apm/xgene/ +F: Documentation/devicetree/bindings/net/apm-xgene-enet.txt + APTINA CAMERA SENSOR PLL M: Laurent Pinchart L: linux-media@vger.kernel.org @@ -1396,7 +1403,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 @@ -1486,7 +1493,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 @@ -2158,6 +2165,11 @@ S: Supported F: drivers/net/ethernet/cisco/enic/ +CISCO VIC LOW LATENCY NIC DRIVER +M: Upinder Malhi +S: Supported +F: drivers/infiniband/hw/usnic + CIRRUS LOGIC EP93XX ETHERNET DRIVER M: Hartley Sweeten L: netdev@vger.kernel.org @@ -2312,7 +2324,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 @@ -2759,7 +2771,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 @@ -3356,8 +3368,8 @@ F: include/video/exynos_mipi* F71805F HARDWARE MONITORING DRIVER -M: Jean Delvare -L: lm-sensors@lm-sensors.org +M: Jean Delvare +L: linux-hwmon@vger.kernel.org S: Maintained F: Documentation/hwmon/f71805f F: drivers/hwmon/f71805f.c @@ -3429,7 +3441,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 @@ -3884,9 +3896,9 @@ HARDWARE MONITORING M: Jean Delvare M: Guenter Roeck -L: lm-sensors@lm-sensors.org -W: http://www.lm-sensors.org/ -T: quilt kernel.org/pub/linux/kernel/people/jdelvare/linux-2.6/jdelvare-hwmon/ +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 F: Documentation/hwmon/ @@ -4317,7 +4329,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 @@ -4325,7 +4337,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 @@ -4474,7 +4486,7 @@ S: Maintained F: drivers/char/hw_random/ixp4xx-rng.c -INTEL ETHERNET DRIVERS (e100/e1000/e1000e/igb/igbvf/ixgb/ixgbe/ixgbevf/i40e) +INTEL ETHERNET DRIVERS (e100/e1000/e1000e/igb/igbvf/ixgb/ixgbe/ixgbevf/i40e/i40evf) M: Jeff Kirsher M: Jesse Brandeburg M: Bruce Allan @@ -4483,6 +4495,7 @@ M: Greg Rose M: Alex Duyck M: John Ronciak +M: Mitch Williams L: e1000-devel@lists.sourceforge.net W: http://www.intel.com/support/feedback.htm W: http://e1000.sourceforge.net/ @@ -4498,6 +4511,7 @@ F: Documentation/networking/ixgbe.txt F: Documentation/networking/ixgbevf.txt F: Documentation/networking/i40e.txt +F: Documentation/networking/i40evf.txt F: drivers/net/ethernet/intel/ INTEL-MID GPIO DRIVER @@ -4728,8 +4742,8 @@ F: drivers/isdn/hardware/eicon/ IT87 HARDWARE MONITORING DRIVER -M: Jean Delvare -L: lm-sensors@lm-sensors.org +M: Jean Delvare +L: linux-hwmon@vger.kernel.org S: Maintained F: Documentation/hwmon/it87 F: drivers/hwmon/it87.c @@ -4781,7 +4795,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 @@ -4832,14 +4846,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 @@ -5236,27 +5250,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 +M: Jean Delvare +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 +M: Jean Delvare +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 +M: Jean Delvare +L: linux-hwmon@vger.kernel.org S: Maintained F: Documentation/hwmon/lm90 F: Documentation/devicetree/bindings/hwmon/lm90.txt @@ -5264,7 +5278,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 @@ -5329,7 +5343,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 @@ -5475,21 +5489,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 @@ -5808,7 +5822,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 @@ -6345,6 +6359,13 @@ F: include/scsi/osd_* F: fs/exofs/ +OVERLAYFS FILESYSTEM +M: Miklos Szeredi +L: linux-fsdevel@vger.kernel.org +S: Supported +F: fs/overlayfs/* +F: Documentation/filesystems/overlayfs.txt + P54 WIRELESS DRIVER M: Christian Lamparter L: linux-wireless@vger.kernel.org @@ -6436,7 +6457,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 @@ -6447,8 +6468,8 @@ F: drivers/char/pc8736x_gpio.c PC87427 HARDWARE MONITORING DRIVER -M: Jean Delvare -L: lm-sensors@lm-sensors.org +M: Jean Delvare +L: linux-hwmon@vger.kernel.org S: Maintained F: Documentation/hwmon/pc87427 F: drivers/hwmon/pc87427.c @@ -6533,6 +6554,13 @@ S: Maintained F: drivers/pci/host/*designware* +PCI DRIVER FOR APPLIEDMICRO XGENE +M: Tanmay Inamdar +L: linux-pci@vger.kernel.org +L: linux-arm-kernel@lists.infradead.org +S: Maintained +F: drivers/pci/host/pci-xgene.c + PCMCIA SUBSYSTEM P: Linux PCMCIA Team L: linux-pcmcia@lists.infradead.org @@ -6674,8 +6702,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 @@ -7851,28 +7879,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 +M: Jean Delvare +L: linux-hwmon@vger.kernel.org S: Maintained F: Documentation/hwmon/smsc47b397 F: drivers/hwmon/smsc47b397.c @@ -8301,6 +8329,7 @@ SYNOPSYS ARC ARCHITECTURE M: Vineet Gupta +L: linux-snps-arc@lists.infradead.org S: Supported F: arch/arc/ F: Documentation/devicetree/bindings/arc/ @@ -8713,7 +8742,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 @@ -9355,14 +9384,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 @@ -9381,21 +9410,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 +M: Jean Delvare +L: linux-hwmon@vger.kernel.org S: Maintained F: drivers/hwmon/w83795.c --- linux-3.13.0.orig/Makefile +++ linux-3.13.0/Makefile @@ -1,8 +1,8 @@ VERSION = 3 PATCHLEVEL = 13 -SUBLEVEL = 0 -EXTRAVERSION = -NAME = One Giant Leap for Frogkind +SUBLEVEL = 11 +EXTRAVERSION = -ckt39 +NAME = King of Alienated Frog Porn # *DOCUMENTATION* # To see a list of typical targets execute "make help" @@ -244,7 +244,7 @@ HOSTCC = gcc HOSTCXX = g++ -HOSTCFLAGS = -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer +HOSTCFLAGS = -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -std=gnu89 HOSTCXXFLAGS = -O2 # Decide whether to build built-in, modular, or both. @@ -352,6 +352,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 := \ @@ -364,19 +370,25 @@ # 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 \ $(if $(KBUILD_SRC), -I$(srctree)/include) \ -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 \ -fno-strict-aliasing -fno-common \ -Werror-implicit-function-declaration \ -Wno-format-security \ - -fno-delete-null-pointer-checks + -fno-delete-null-pointer-checks \ + -std=gnu89 + KBUILD_AFLAGS_KERNEL := KBUILD_CFLAGS_KERNEL := KBUILD_AFLAGS := -D__ASSEMBLY__ @@ -522,7 +534,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/ @@ -595,10 +607,24 @@ KBUILD_CFLAGS += $(call cc-option,-Wframe-larger-than=${CONFIG_FRAME_WARN}) endif -# Force gcc to behave correct even for buggy distributions -ifndef CONFIG_CC_STACKPROTECTOR -KBUILD_CFLAGS += $(call cc-option, -fno-stack-protector) +# Handle stack protector mode. +ifdef CONFIG_CC_STACKPROTECTOR_REGULAR + stackp-flag := -fstack-protector + ifeq ($(call cc-option, $(stackp-flag)),) + $(warning Cannot use CONFIG_CC_STACKPROTECTOR: \ + -fstack-protector not supported by compiler)) + endif +else ifdef CONFIG_CC_STACKPROTECTOR_STRONG + stackp-flag := -fstack-protector-strong + ifeq ($(call cc-option, $(stackp-flag)),) + $(warning Cannot use CONFIG_CC_STACKPROTECTOR_STRONG: \ + -fstack-protector-strong not supported by compiler) + endif +else + # Force off for distro compilers that enable stack protector by default. + stackp-flag := $(call cc-option, -fno-stack-protector) endif +KBUILD_CFLAGS += $(stackp-flag) # This warning generated too much noise in a regular build. # Use make W=1 to enable this warning (see scripts/Makefile.build) @@ -617,6 +643,8 @@ endif endif +KBUILD_CFLAGS += $(call cc-option, -fno-var-tracking-assignments) + ifdef CONFIG_DEBUG_INFO KBUILD_CFLAGS += -g KBUILD_AFLAGS += -gdwarf-2 @@ -940,6 +968,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 @@ -949,6 +978,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 # --------------------------------------------------------------------------- # Modules --- linux-3.13.0.orig/arch/Kconfig +++ linux-3.13.0/arch/Kconfig @@ -325,6 +325,7 @@ - secure_computing is called from a ptrace_event()-safe context - secure_computing return value is checked and a return value of -1 results in the system call being skipped immediately. + - seccomp syscall wired up config SECCOMP_FILTER def_bool y @@ -336,6 +337,73 @@ See Documentation/prctl/seccomp_filter.txt for details. +config HAVE_CC_STACKPROTECTOR + bool + help + An arch should select this symbol if: + - its compiler supports the -fstack-protector option + - it has implemented a stack canary (e.g. __stack_chk_guard) + +config CC_STACKPROTECTOR + def_bool n + help + Set when a stack-protector mode is enabled, so that the build + can enable kernel-side support for the GCC feature. + +choice + prompt "Stack Protector buffer overflow detection" + depends on HAVE_CC_STACKPROTECTOR + default CC_STACKPROTECTOR_NONE + help + This option turns on the "stack-protector" GCC feature. This + feature puts, at the beginning of functions, a canary value on + the stack just before the return address, and validates + the value just before actually returning. Stack based buffer + overflows (that need to overwrite this return address) now also + overwrite the canary, which gets detected and the attack is then + neutralized via a kernel panic. + +config CC_STACKPROTECTOR_NONE + bool "None" + help + Disable "stack-protector" GCC feature. + +config CC_STACKPROTECTOR_REGULAR + bool "Regular" + select CC_STACKPROTECTOR + help + Functions will have the stack-protector canary logic added if they + have an 8-byte or larger character array on the stack. + + This feature requires gcc version 4.2 or above, or a distribution + gcc with the feature backported ("-fstack-protector"). + + On an x86 "defconfig" build, this feature adds canary checks to + about 3% of all kernel functions, which increases kernel code size + by about 0.3%. + +config CC_STACKPROTECTOR_STRONG + bool "Strong" + select CC_STACKPROTECTOR + help + Functions will have the stack-protector canary logic added in any + of the following conditions: + + - local variable's address used as part of the right hand side of an + assignment or function argument + - local variable is an array (or union containing an array), + regardless of array type or length + - uses register local variables + + This feature requires gcc version 4.9 or above, or a distribution + gcc with the feature backported ("-fstack-protector-strong"). + + On an x86 "defconfig" build, this feature adds canary checks to + about 20% of all kernel functions, which increases the kernel code + size by about 2%. + +endchoice + config HAVE_CONTEXT_TRACKING bool help --- linux-3.13.0.orig/arch/alpha/lib/csum_partial_copy.c +++ linux-3.13.0/arch/alpha/lib/csum_partial_copy.c @@ -378,6 +378,11 @@ __wsum csum_partial_copy_nocheck(const void *src, void *dst, int len, __wsum sum) { - return csum_partial_copy_from_user((__force const void __user *)src, - dst, len, sum, NULL); + __wsum checksum; + mm_segment_t oldfs = get_fs(); + set_fs(KERNEL_DS); + checksum = csum_partial_copy_from_user((__force const void __user *)src, + dst, len, sum, NULL); + set_fs(oldfs); + return checksum; } --- linux-3.13.0.orig/arch/alpha/mm/fault.c +++ linux-3.13.0/arch/alpha/mm/fault.c @@ -156,6 +156,8 @@ if (unlikely(fault & VM_FAULT_ERROR)) { if (fault & VM_FAULT_OOM) goto out_of_memory; + else if (fault & VM_FAULT_SIGSEGV) + goto bad_area; else if (fault & VM_FAULT_SIGBUS) goto do_sigbus; BUG(); --- linux-3.13.0.orig/arch/arc/boot/dts/nsimosci.dts +++ linux-3.13.0/arch/arc/boot/dts/nsimosci.dts @@ -11,13 +11,16 @@ / { compatible = "snps,nsimosci"; - clock-frequency = <80000000>; /* 80 MHZ */ + clock-frequency = <20000000>; /* 20 MHZ */ #address-cells = <1>; #size-cells = <1>; interrupt-parent = <&intc>; chosen { - bootargs = "console=tty0 consoleblank=0"; + /* this is for console on PGU */ + /* bootargs = "console=tty0 consoleblank=0"; */ + /* this is for console on serial */ + bootargs = "earlycon=uart8250,mmio32,0xf0000000,115200n8 console=tty0 console=ttyS0,115200n8 consoleblank=0 debug"; }; aliases { @@ -43,33 +46,32 @@ #interrupt-cells = <1>; }; - uart0: serial@c0000000 { - compatible = "snps,dw-apb-uart"; - reg = <0xc0000000 0x2000>; + uart0: serial@f0000000 { + compatible = "ns8250"; + reg = <0xf0000000 0x2000>; interrupts = <11>; - #clock-frequency = <80000000>; clock-frequency = <3686400>; baud = <115200>; reg-shift = <2>; reg-io-width = <4>; - status = "okay"; + no-loopback-test = <1>; }; - pgu0: pgu@c9000000 { + pgu0: pgu@f9000000 { compatible = "snps,arcpgufb"; - reg = <0xc9000000 0x400>; + reg = <0xf9000000 0x400>; }; - ps2: ps2@c9001000 { + ps2: ps2@f9001000 { compatible = "snps,arc_ps2"; - reg = <0xc9000400 0x14>; + reg = <0xf9000400 0x14>; interrupts = <13>; interrupt-names = "arc_ps2_irq"; }; - eth0: ethernet@c0003000 { + eth0: ethernet@f0003000 { compatible = "snps,oscilan"; - reg = <0xc0003000 0x44>; + reg = <0xf0003000 0x44>; interrupts = <7>, <8>; interrupt-names = "rx", "tx"; }; --- linux-3.13.0.orig/arch/arc/configs/nsimosci_defconfig +++ linux-3.13.0/arch/arc/configs/nsimosci_defconfig @@ -54,6 +54,7 @@ CONFIG_SERIAL_8250=y CONFIG_SERIAL_8250_CONSOLE=y CONFIG_SERIAL_8250_DW=y +CONFIG_SERIAL_OF_PLATFORM=y CONFIG_SERIAL_ARC=y CONFIG_SERIAL_ARC_CONSOLE=y # CONFIG_HW_RANDOM is not set --- linux-3.13.0.orig/arch/arc/include/asm/cmpxchg.h +++ linux-3.13.0/arch/arc/include/asm/cmpxchg.h @@ -25,10 +25,11 @@ " scond %3, [%1] \n" " bnz 1b \n" "2: \n" - : "=&r"(prev) - : "r"(ptr), "ir"(expected), - "r"(new) /* can't be "ir". scond can't take limm for "b" */ - : "cc"); + : "=&r"(prev) /* Early clobber, to prevent reg reuse */ + : "r"(ptr), /* Not "m": llock only supports reg direct addr mode */ + "ir"(expected), + "r"(new) /* can't be "ir". scond can't take LIMM for "b" */ + : "cc", "memory"); /* so that gcc knows memory is being written here */ return prev; } --- linux-3.13.0.orig/arch/arc/include/asm/kgdb.h +++ linux-3.13.0/arch/arc/include/asm/kgdb.h @@ -19,7 +19,7 @@ * register API yet */ #undef DBG_MAX_REG_NUM -#define GDB_MAX_REGS 39 +#define GDB_MAX_REGS 87 #define BREAK_INSTR_SIZE 2 #define CACHE_FLUSH_IS_SAFE 1 @@ -33,23 +33,27 @@ extern void kgdb_trap(struct pt_regs *regs); -enum arc700_linux_regnums { +/* This is the numbering of registers according to the GDB. See GDB's + * arc-tdep.h for details. + * + * Registers are ordered for GDB 7.5. It is incompatible with GDB 6.8. */ +enum arc_linux_regnums { _R0 = 0, _R1, _R2, _R3, _R4, _R5, _R6, _R7, _R8, _R9, _R10, _R11, _R12, _R13, _R14, _R15, _R16, _R17, _R18, _R19, _R20, _R21, _R22, _R23, _R24, _R25, _R26, - _BTA = 27, - _LP_START = 28, - _LP_END = 29, - _LP_COUNT = 30, - _STATUS32 = 31, - _BLINK = 32, - _FP = 33, - __SP = 34, - _EFA = 35, - _RET = 36, - _ORIG_R8 = 37, - _STOP_PC = 38 + _FP = 27, + __SP = 28, + _R30 = 30, + _BLINK = 31, + _LP_COUNT = 60, + _STOP_PC = 64, + _RET = 64, + _LP_START = 65, + _LP_END = 66, + _STATUS32 = 67, + _ECR = 76, + _BTA = 82, }; #else --- linux-3.13.0.orig/arch/arc/include/asm/pgtable.h +++ linux-3.13.0/arch/arc/include/asm/pgtable.h @@ -259,7 +259,8 @@ #define pmd_clear(xp) do { pmd_val(*(xp)) = 0; } while (0) #define pte_page(x) (mem_map + \ - (unsigned long)(((pte_val(x) - PAGE_OFFSET) >> PAGE_SHIFT))) + (unsigned long)(((pte_val(x) - CONFIG_LINUX_LINK_BASE) >> \ + PAGE_SHIFT))) #define mk_pte(page, pgprot) \ ({ \ --- linux-3.13.0.orig/arch/arc/include/asm/processor.h +++ linux-3.13.0/arch/arc/include/asm/processor.h @@ -69,18 +69,19 @@ #define release_segments(mm) do { } while (0) #define KSTK_EIP(tsk) (task_pt_regs(tsk)->ret) +#define KSTK_ESP(tsk) (task_pt_regs(tsk)->sp) /* * Where abouts of Task's sp, fp, blink when it was last seen in kernel mode. * Look in process.c for details of kernel stack layout */ -#define KSTK_ESP(tsk) (tsk->thread.ksp) +#define TSK_K_ESP(tsk) (tsk->thread.ksp) -#define KSTK_REG(tsk, off) (*((unsigned int *)(KSTK_ESP(tsk) + \ +#define TSK_K_REG(tsk, off) (*((unsigned int *)(TSK_K_ESP(tsk) + \ sizeof(struct callee_regs) + off))) -#define KSTK_BLINK(tsk) KSTK_REG(tsk, 4) -#define KSTK_FP(tsk) KSTK_REG(tsk, 0) +#define TSK_K_BLINK(tsk) TSK_K_REG(tsk, 4) +#define TSK_K_FP(tsk) TSK_K_REG(tsk, 0) /* * Do necessary setup to start up a newly executed thread. --- linux-3.13.0.orig/arch/arc/include/asm/ptrace.h +++ linux-3.13.0/arch/arc/include/asm/ptrace.h @@ -63,7 +63,7 @@ long r25, r24, r23, r22, r21, r20, r19, r18, r17, r16, r15, r14, r13; }; -#define instruction_pointer(regs) ((regs)->ret) +#define instruction_pointer(regs) (unsigned long)((regs)->ret) #define profile_pc(regs) instruction_pointer(regs) /* return 1 if user mode or 0 if kernel mode */ --- linux-3.13.0.orig/arch/arc/include/asm/unwind.h +++ linux-3.13.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-3.13.0.orig/arch/arc/kernel/entry.S +++ linux-3.13.0/arch/arc/kernel/entry.S @@ -614,11 +614,13 @@ resume_kernel_mode: -#ifdef CONFIG_PREEMPT - - ; This is a must for preempt_schedule_irq() + ; Disable Interrupts from this point on + ; CONFIG_PREEMPT: This is a must for preempt_schedule_irq() + ; !CONFIG_PREEMPT: To ensure restore_regs is intr safe IRQ_DISABLE r9 +#ifdef CONFIG_PREEMPT + ; Can't preempt if preemption disabled GET_CURR_THR_INFO_FROM_SP r10 ld r8, [r10, THREAD_INFO_PREEMPT_COUNT] --- linux-3.13.0.orig/arch/arc/kernel/setup.c +++ linux-3.13.0/arch/arc/kernel/setup.c @@ -356,7 +356,6 @@ #endif arc_unwind_init(); - arc_unwind_setup(); } static int __init customize_machine(void) --- linux-3.13.0.orig/arch/arc/kernel/signal.c +++ linux-3.13.0/arch/arc/kernel/signal.c @@ -67,7 +67,7 @@ sigset_t *set) { int err; - err = __copy_to_user(&(sf->uc.uc_mcontext.regs), regs, + err = __copy_to_user(&(sf->uc.uc_mcontext.regs.scratch), regs, sizeof(sf->uc.uc_mcontext.regs.scratch)); err |= __copy_to_user(&sf->uc.uc_sigmask, set, sizeof(sigset_t)); @@ -83,7 +83,7 @@ if (!err) set_current_blocked(&set); - err |= __copy_from_user(regs, &(sf->uc.uc_mcontext.regs), + err |= __copy_from_user(regs, &(sf->uc.uc_mcontext.regs.scratch), sizeof(sf->uc.uc_mcontext.regs.scratch)); return err; --- linux-3.13.0.orig/arch/arc/kernel/stacktrace.c +++ linux-3.13.0/arch/arc/kernel/stacktrace.c @@ -64,9 +64,9 @@ frame_info->task = tsk; - frame_info->regs.r27 = KSTK_FP(tsk); - frame_info->regs.r28 = KSTK_ESP(tsk); - frame_info->regs.r31 = KSTK_BLINK(tsk); + frame_info->regs.r27 = TSK_K_FP(tsk); + frame_info->regs.r28 = TSK_K_ESP(tsk); + frame_info->regs.r31 = TSK_K_BLINK(tsk); frame_info->regs.r63 = (unsigned int)__switch_to; /* In the prologue of __switch_to, first FP is saved on stack --- linux-3.13.0.orig/arch/arc/kernel/unwind.c +++ linux-3.13.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-3.13.0.orig/arch/arc/mm/cache_arc700.c +++ linux-3.13.0/arch/arc/mm/cache_arc700.c @@ -282,7 +282,7 @@ #else /* if V-P const for loop, PTAG can be written once outside loop */ if (full_page_op) - write_aux_reg(ARC_REG_DC_PTAG, paddr); + write_aux_reg(aux_tag, paddr); #endif while (num_lines-- > 0) { @@ -296,7 +296,7 @@ write_aux_reg(aux_cmd, vaddr); vaddr += L1_CACHE_BYTES; #else - write_aux_reg(aux, paddr); + write_aux_reg(aux_cmd, paddr); paddr += L1_CACHE_BYTES; #endif } --- linux-3.13.0.orig/arch/arc/mm/fault.c +++ linux-3.13.0/arch/arc/mm/fault.c @@ -162,6 +162,8 @@ /* TBD: switch to pagefault_out_of_memory() */ if (fault & VM_FAULT_OOM) goto out_of_memory; + else if (fault & VM_FAULT_SIGSEGV) + goto bad_area; else if (fault & VM_FAULT_SIGBUS) goto do_sigbus; --- linux-3.13.0.orig/arch/arm/Kconfig +++ linux-3.13.0/arch/arm/Kconfig @@ -6,6 +6,7 @@ select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST select ARCH_HAVE_CUSTOM_GPIO_H select ARCH_MIGHT_HAVE_PC_PARPORT + select ARCH_SUPPORTS_ATOMIC_RMW select ARCH_USE_CMPXCHG_LOCKREF select ARCH_WANT_IPC_PARSE_VERSION select BUILDTIME_EXTABLE_SORT if MMU @@ -30,6 +31,7 @@ select HAVE_BPF_JIT select HAVE_CONTEXT_TRACKING select HAVE_C_RECORDMCOUNT + select HAVE_CC_STACKPROTECTOR select HAVE_DEBUG_KMEMLEAK select HAVE_DMA_API_DEBUG select HAVE_DMA_ATTRS @@ -871,7 +873,7 @@ bool "ARMv5 based platforms (ARM926T, XSCALE, PJ1, ...)" depends on !ARCH_MULTI_V6_V7 select ARCH_MULTI_V4_V5 - select CPU_ARM926T if (!CPU_ARM946E || CPU_ARM1020 || \ + select CPU_ARM926T if !(CPU_ARM946E || CPU_ARM1020 || \ CPU_ARM1020E || CPU_ARM1022 || CPU_ARM1026 || \ CPU_XSCALE || CPU_XSC3 || CPU_MOHAWK || CPU_FEROCEON) @@ -1543,6 +1545,7 @@ choice prompt "Memory split" + depends on MMU default VMSPLIT_3G help Select the desired split between kernel and user memory. @@ -1560,6 +1563,7 @@ config PAGE_OFFSET hex + default PHYS_OFFSET if !MMU default 0x40000000 if VMSPLIT_1G default 0x80000000 if VMSPLIT_2G default 0xC0000000 @@ -1856,18 +1860,6 @@ and the task is only allowed to execute a few safe syscalls defined by each seccomp mode. -config CC_STACKPROTECTOR - bool "Enable -fstack-protector buffer overflow detection (EXPERIMENTAL)" - help - This option turns on the -fstack-protector GCC feature. This - feature puts, at the beginning of functions, a canary value on - the stack just before the return address, and validates - the value just before actually returning. Stack based buffer - overflows (that need to overwrite this return address) now also - overwrite the canary, which gets detected and the attack is then - neutralized via a kernel panic. - This feature requires gcc version 4.2 or above. - config SWIOTLB def_bool y @@ -2261,6 +2253,8 @@ source "drivers/Kconfig" +source "ubuntu/Kconfig" + source "fs/Kconfig" source "arch/arm/Kconfig.debug" --- linux-3.13.0.orig/arch/arm/Kconfig.debug +++ linux-3.13.0/arch/arm/Kconfig.debug @@ -1033,7 +1033,7 @@ default 0xf1600000 if ARCH_INTEGRATOR default 0xf1c28000 if DEBUG_SUNXI_UART0 default 0xf1c28400 if DEBUG_SUNXI_UART1 - default 0xf2100000 if DEBUG_PXA_UART1 + default 0xf6200000 if DEBUG_PXA_UART1 default 0xf4090000 if ARCH_LPC32XX default 0xf4200000 if ARCH_GEMINI default 0xf8009000 if DEBUG_VEXPRESS_UART0_CA9 --- linux-3.13.0.orig/arch/arm/Makefile +++ linux-3.13.0/arch/arm/Makefile @@ -40,10 +40,6 @@ KBUILD_CFLAGS +=-fno-omit-frame-pointer -mapcs -mno-sched-prolog endif -ifeq ($(CONFIG_CC_STACKPROTECTOR),y) -KBUILD_CFLAGS +=-fstack-protector -endif - ifeq ($(CONFIG_CPU_BIG_ENDIAN),y) KBUILD_CPPFLAGS += -mbig-endian AS += -EB @@ -56,6 +52,14 @@ comma = , +# +# 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 --- linux-3.13.0.orig/arch/arm/boot/compressed/head.S +++ linux-3.13.0/arch/arm/boot/compressed/head.S @@ -400,8 +400,7 @@ add sp, sp, r6 #endif - tst r4, #1 - bleq cache_clean_flush + bl cache_clean_flush adr r0, BSYM(restart) add r0, r0, r6 @@ -1050,6 +1049,8 @@ b call_cache_fn __armv4_mpu_cache_flush: + tst r4, #1 + movne pc, lr mov r2, #1 mov r3, #0 mcr p15, 0, ip, c7, c6, 0 @ invalidate D cache @@ -1067,6 +1068,8 @@ mov pc, lr __fa526_cache_flush: + tst r4, #1 + movne pc, lr mov r1, #0 mcr p15, 0, r1, c7, c14, 0 @ clean and invalidate D cache mcr p15, 0, r1, c7, c5, 0 @ flush I cache @@ -1075,13 +1078,16 @@ __armv6_mmu_cache_flush: mov r1, #0 - mcr p15, 0, r1, c7, c14, 0 @ clean+invalidate D + tst r4, #1 + mcreq p15, 0, r1, c7, c14, 0 @ clean+invalidate D mcr p15, 0, r1, c7, c5, 0 @ invalidate I+BTB - mcr p15, 0, r1, c7, c15, 0 @ clean+invalidate unified + mcreq p15, 0, r1, c7, c15, 0 @ clean+invalidate unified mcr p15, 0, r1, c7, c10, 4 @ drain WB mov pc, lr __armv7_mmu_cache_flush: + tst r4, #1 + bne iflush mrc p15, 0, r10, c0, c1, 5 @ read ID_MMFR1 tst r10, #0xf << 16 @ hierarchical cache (ARMv7) mov r10, #0 @@ -1142,6 +1148,8 @@ mov pc, lr __armv5tej_mmu_cache_flush: + tst r4, #1 + movne pc, lr 1: mrc p15, 0, r15, c7, c14, 3 @ test,clean,invalidate D cache bne 1b mcr p15, 0, r0, c7, c5, 0 @ flush I cache @@ -1149,6 +1157,8 @@ mov pc, lr __armv4_mmu_cache_flush: + tst r4, #1 + movne pc, lr mov r2, #64*1024 @ default: 32K dcache size (*2) mov r11, #32 @ default: 32 byte line size mrc p15, 0, r3, c0, c0, 1 @ read cache type @@ -1182,6 +1192,8 @@ __armv3_mmu_cache_flush: __armv3_mpu_cache_flush: + tst r4, #1 + movne pc, lr mov r1, #0 mcr p15, 0, r1, c7, c0, 0 @ invalidate whole cache v3 mov pc, lr --- linux-3.13.0.orig/arch/arm/boot/compressed/misc.c +++ linux-3.13.0/arch/arm/boot/compressed/misc.c @@ -127,6 +127,18 @@ error("Attempting division by 0!"); } +unsigned long __stack_chk_guard; + +void __stack_chk_guard_setup(void) +{ + __stack_chk_guard = 0x000a0dff; +} + +void __stack_chk_fail(void) +{ + error("stack-protector: Kernel stack is corrupted\n"); +} + extern int do_decompress(u8 *input, int len, u8 *output, void (*error)(char *x)); @@ -137,6 +149,8 @@ { int ret; + __stack_chk_guard_setup(); + output_data = (unsigned char *)output_start; free_mem_ptr = free_mem_ptr_p; free_mem_end_ptr = free_mem_ptr_end_p; --- linux-3.13.0.orig/arch/arm/boot/dts/am33xx.dtsi +++ linux-3.13.0/arch/arm/boot/dts/am33xx.dtsi @@ -102,6 +102,11 @@ ranges; ti,hwmods = "l3_main"; + cm: syscon@44e10000 { + compatible = "ti,am33xx-controlmodule", "syscon"; + reg = <0x44e10000 0x800>; + }; + intc: interrupt-controller@48200000 { compatible = "ti,omap2-intc"; interrupt-controller; @@ -114,7 +119,7 @@ compatible = "ti,edma3"; ti,hwmods = "tpcc", "tptc0", "tptc1", "tptc2"; reg = <0x49000000 0x10000>, - <0x44e10f90 0x10>; + <0x44e10f90 0x40>; interrupts = <12 13 14>; #dma-cells = <1>; dma-channels = <64>; @@ -422,7 +427,7 @@ ti,hwmods = "usb_otg_hs"; status = "disabled"; - usb_ctrl_mod: control@44e10000 { + usb_ctrl_mod: control@44e10620 { compatible = "ti,am335x-usb-ctrl-module"; reg = <0x44e10620 0x10 0x44e10648 0x4>; @@ -525,7 +530,7 @@ "tx14", "tx15"; }; - cppi41dma: dma-controller@07402000 { + cppi41dma: dma-controller@47402000 { compatible = "ti,am3359-cppi41"; reg = <0x47400000 0x1000 0x47402000 0x1000 @@ -651,6 +656,7 @@ */ interrupts = <40 41 42 43>; ranges; + syscon = <&cm>; davinci_mdio: mdio@4a101000 { compatible = "ti,davinci_mdio"; --- linux-3.13.0.orig/arch/arm/boot/dts/armada-370-xp.dtsi +++ linux-3.13.0/arch/arm/boot/dts/armada-370-xp.dtsi @@ -152,7 +152,7 @@ }; sata@a0000 { - compatible = "marvell,orion-sata"; + compatible = "marvell,armada-370-sata"; reg = <0xa0000 0x5000>; interrupts = <55>; clocks = <&gateclk 15>, <&gateclk 30>; --- linux-3.13.0.orig/arch/arm/boot/dts/armada-xp-db.dts +++ linux-3.13.0/arch/arm/boot/dts/armada-xp-db.dts @@ -40,7 +40,7 @@ /* Device Bus parameters are required */ /* Read parameters */ - devbus,bus-width = <8>; + devbus,bus-width = <16>; devbus,turn-off-ps = <60000>; devbus,badr-skew-ps = <0>; devbus,acc-first-ps = <124000>; --- linux-3.13.0.orig/arch/arm/boot/dts/armada-xp-gp.dts +++ linux-3.13.0/arch/arm/boot/dts/armada-xp-gp.dts @@ -49,7 +49,7 @@ /* Device Bus parameters are required */ /* Read parameters */ - devbus,bus-width = <8>; + devbus,bus-width = <16>; devbus,turn-off-ps = <60000>; devbus,badr-skew-ps = <0>; devbus,acc-first-ps = <124000>; --- linux-3.13.0.orig/arch/arm/boot/dts/armada-xp-openblocks-ax3-4.dts +++ linux-3.13.0/arch/arm/boot/dts/armada-xp-openblocks-ax3-4.dts @@ -23,7 +23,7 @@ memory { device_type = "memory"; - reg = <0 0x00000000 0 0xC0000000>; /* 3 GB */ + reg = <0 0x00000000 0 0x40000000>; /* 1 GB soldered on */ }; soc { @@ -37,7 +37,7 @@ /* Device Bus parameters are required */ /* Read parameters */ - devbus,bus-width = <8>; + devbus,bus-width = <16>; devbus,turn-off-ps = <60000>; devbus,badr-skew-ps = <0>; devbus,acc-first-ps = <124000>; @@ -69,6 +69,10 @@ }; internal-regs { + rtc@10300 { + /* No crystal connected to the internal RTC */ + status = "disabled"; + }; serial@12000 { clock-frequency = <250000000>; status = "okay"; --- linux-3.13.0.orig/arch/arm/boot/dts/at91sam9263.dtsi +++ linux-3.13.0/arch/arm/boot/dts/at91sam9263.dtsi @@ -506,6 +506,7 @@ compatible = "atmel,hsmci"; reg = <0xfff80000 0x600>; interrupts = <10 IRQ_TYPE_LEVEL_HIGH 0>; + pinctrl-names = "default"; #address-cells = <1>; #size-cells = <0>; status = "disabled"; @@ -515,6 +516,7 @@ compatible = "atmel,hsmci"; reg = <0xfff84000 0x600>; interrupts = <11 IRQ_TYPE_LEVEL_HIGH 0>; + pinctrl-names = "default"; #address-cells = <1>; #size-cells = <0>; status = "disabled"; --- linux-3.13.0.orig/arch/arm/boot/dts/at91sam9g45.dtsi +++ linux-3.13.0/arch/arm/boot/dts/at91sam9g45.dtsi @@ -618,6 +618,7 @@ compatible = "atmel,hsmci"; reg = <0xfff80000 0x600>; interrupts = <11 IRQ_TYPE_LEVEL_HIGH 0>; + pinctrl-names = "default"; dmas = <&dma 1 AT91_DMA_CFG_PER_ID(0)>; dma-names = "rxtx"; #address-cells = <1>; @@ -629,6 +630,7 @@ compatible = "atmel,hsmci"; reg = <0xfffd0000 0x600>; interrupts = <29 IRQ_TYPE_LEVEL_HIGH 0>; + pinctrl-names = "default"; dmas = <&dma 1 AT91_DMA_CFG_PER_ID(13)>; dma-names = "rxtx"; #address-cells = <1>; --- linux-3.13.0.orig/arch/arm/boot/dts/dove.dtsi +++ linux-3.13.0/arch/arm/boot/dts/dove.dtsi @@ -176,7 +176,7 @@ uart2: serial@12200 { compatible = "ns16550a"; - reg = <0x12000 0x100>; + reg = <0x12200 0x100>; reg-shift = <2>; interrupts = <9>; clocks = <&core_clk 0>; @@ -185,7 +185,7 @@ uart3: serial@12300 { compatible = "ns16550a"; - reg = <0x12100 0x100>; + reg = <0x12300 0x100>; reg-shift = <2>; interrupts = <10>; clocks = <&core_clk 0>; --- linux-3.13.0.orig/arch/arm/boot/dts/exynos5250-arndale.dts +++ linux-3.13.0/arch/arm/boot/dts/exynos5250-arndale.dts @@ -286,6 +286,7 @@ regulator-name = "vdd_g3d"; regulator-min-microvolt = <1000000>; regulator-max-microvolt = <1000000>; + regulator-always-on; regulator-boot-on; op_mode = <1>; }; --- linux-3.13.0.orig/arch/arm/boot/dts/imx23-olinuxino.dts +++ linux-3.13.0/arch/arm/boot/dts/imx23-olinuxino.dts @@ -12,6 +12,7 @@ */ /dts-v1/; +#include #include "imx23.dtsi" / { @@ -93,6 +94,7 @@ ahb@80080000 { usb0: usb@80080000 { + dr_mode = "host"; vbus-supply = <®_usb0_vbus>; status = "okay"; }; @@ -119,7 +121,7 @@ user { label = "green"; - gpios = <&gpio2 1 1>; + gpios = <&gpio2 1 GPIO_ACTIVE_HIGH>; }; }; }; --- linux-3.13.0.orig/arch/arm/boot/dts/imx23.dtsi +++ linux-3.13.0/arch/arm/boot/dts/imx23.dtsi @@ -432,6 +432,7 @@ interrupts = <36 37 38 39 40 41 42 43 44>; status = "disabled"; clocks = <&clks 26>; + #io-channel-cells = <1>; }; spdif@80054000 { --- linux-3.13.0.orig/arch/arm/boot/dts/imx25.dtsi +++ linux-3.13.0/arch/arm/boot/dts/imx25.dtsi @@ -157,7 +157,7 @@ #size-cells = <0>; compatible = "fsl,imx25-cspi", "fsl,imx35-cspi"; reg = <0x43fa4000 0x4000>; - clocks = <&clks 62>, <&clks 62>; + clocks = <&clks 78>, <&clks 78>; clock-names = "ipg", "per"; interrupts = <14>; status = "disabled"; @@ -351,7 +351,7 @@ compatible = "fsl,imx25-pwm", "fsl,imx27-pwm"; #pwm-cells = <2>; reg = <0x53fa0000 0x4000>; - clocks = <&clks 106>, <&clks 36>; + clocks = <&clks 106>, <&clks 52>; clock-names = "ipg", "per"; interrupts = <36>; }; @@ -370,7 +370,7 @@ compatible = "fsl,imx25-pwm", "fsl,imx27-pwm"; #pwm-cells = <2>; reg = <0x53fa8000 0x4000>; - clocks = <&clks 107>, <&clks 36>; + clocks = <&clks 107>, <&clks 52>; clock-names = "ipg", "per"; interrupts = <41>; }; @@ -410,8 +410,9 @@ pwm4: pwm@53fc8000 { compatible = "fsl,imx25-pwm", "fsl,imx27-pwm"; + #pwm-cells = <2>; reg = <0x53fc8000 0x4000>; - clocks = <&clks 108>, <&clks 36>; + clocks = <&clks 108>, <&clks 52>; clock-names = "ipg", "per"; interrupts = <42>; }; @@ -457,7 +458,7 @@ compatible = "fsl,imx25-pwm", "fsl,imx27-pwm"; #pwm-cells = <2>; reg = <0x53fe0000 0x4000>; - clocks = <&clks 105>, <&clks 36>; + clocks = <&clks 105>, <&clks 52>; clock-names = "ipg", "per"; interrupts = <26>; }; --- linux-3.13.0.orig/arch/arm/boot/dts/imx27.dtsi +++ linux-3.13.0/arch/arm/boot/dts/imx27.dtsi @@ -427,7 +427,7 @@ fec: ethernet@1002b000 { compatible = "fsl,imx27-fec"; - reg = <0x1002b000 0x4000>; + reg = <0x1002b000 0x1000>; interrupts = <50>; clocks = <&clks 48>, <&clks 67>; clock-names = "ipg", "ahb"; --- linux-3.13.0.orig/arch/arm/boot/dts/imx28.dtsi +++ linux-3.13.0/arch/arm/boot/dts/imx28.dtsi @@ -803,7 +803,7 @@ 80 81 68 69 70 71 72 73 74 75 76 77>; - interrupt-names = "auart4-rx", "aurat4-tx", "spdif-tx", "empty", + interrupt-names = "auart4-rx", "auart4-tx", "spdif-tx", "empty", "saif0", "saif1", "i2c0", "i2c1", "auart0-rx", "auart0-tx", "auart1-rx", "auart1-tx", "auart2-rx", "auart2-tx", "auart3-rx", "auart3-tx"; --- linux-3.13.0.orig/arch/arm/boot/dts/imx53.dtsi +++ linux-3.13.0/arch/arm/boot/dts/imx53.dtsi @@ -87,7 +87,7 @@ ipu: ipu@18000000 { #crtc-cells = <1>; compatible = "fsl,imx53-ipu"; - reg = <0x18000000 0x080000000>; + reg = <0x18000000 0x08000000>; interrupts = <11 10>; clocks = <&clks 59>, <&clks 110>, <&clks 61>; clock-names = "bus", "di0", "di1"; @@ -1111,7 +1111,7 @@ compatible = "fsl,imx53-vpu"; reg = <0x63ff4000 0x1000>; interrupts = <9>; - clocks = <&clks 63>, <&clks 63>; + clocks = <&clks 64>, <&clks 63>; clock-names = "per", "ahb"; iram = <&ocram>; status = "disabled"; --- linux-3.13.0.orig/arch/arm/boot/dts/kirkwood-mv88f6281gtw-ge.dts +++ linux-3.13.0/arch/arm/boot/dts/kirkwood-mv88f6281gtw-ge.dts @@ -30,6 +30,16 @@ bootargs = "console=ttyS0,115200n8 earlyprintk"; }; + mbus { + pcie-controller { + status = "okay"; + + pcie@1,0 { + status = "okay"; + }; + }; + }; + ocp@f1000000 { pinctrl@10000 { pmx_usb_led: pmx-usb-led { @@ -73,14 +83,6 @@ ehci@50000 { status = "okay"; }; - - pcie-controller { - status = "okay"; - - pcie@1,0 { - status = "okay"; - }; - }; }; gpio-leds { --- linux-3.13.0.orig/arch/arm/boot/dts/kirkwood-nsa310-common.dtsi +++ linux-3.13.0/arch/arm/boot/dts/kirkwood-nsa310-common.dtsi @@ -4,6 +4,16 @@ / { model = "ZyXEL NSA310"; + mbus { + pcie-controller { + status = "okay"; + + pcie@1,0 { + status = "okay"; + }; + }; + }; + ocp@f1000000 { pinctrl: pinctrl@10000 { @@ -26,14 +36,6 @@ status = "okay"; nr-ports = <2>; }; - - pcie-controller { - status = "okay"; - - pcie@1,0 { - status = "okay"; - }; - }; }; gpio_poweroff { --- linux-3.13.0.orig/arch/arm/boot/dts/kirkwood-ts219.dtsi +++ linux-3.13.0/arch/arm/boot/dts/kirkwood-ts219.dtsi @@ -47,7 +47,7 @@ }; poweroff@12100 { compatible = "qnap,power-off"; - reg = <0x12000 0x100>; + reg = <0x12100 0x100>; clocks = <&gate_clk 7>; }; spi@10600 { --- linux-3.13.0.orig/arch/arm/boot/dts/omap5-uevm.dts +++ linux-3.13.0/arch/arm/boot/dts/omap5-uevm.dts @@ -111,8 +111,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 */ >; }; --- linux-3.13.0.orig/arch/arm/boot/dts/ste-ccu8540.dts +++ linux-3.13.0/arch/arm/boot/dts/ste-ccu8540.dts @@ -18,6 +18,7 @@ compatible = "st-ericsson,ccu8540", "st-ericsson,u8540"; memory@0 { + device_type = "memory"; reg = <0x20000000 0x1f000000>, <0xc0000000 0x3f000000>; }; --- linux-3.13.0.orig/arch/arm/boot/dts/tegra124.dtsi +++ linux-3.13.0/arch/arm/boot/dts/tegra124.dtsi @@ -87,14 +87,6 @@ status = "disabled"; }; - serial@70006400 { - compatible = "nvidia,tegra124-uart", "nvidia,tegra20-uart"; - reg = <0x70006400 0x40>; - reg-shift = <2>; - interrupts = ; - status = "disabled"; - }; - rtc@7000e000 { compatible = "nvidia,tegra124-rtc", "nvidia,tegra20-rtc"; reg = <0x7000e000 0x100>; --- linux-3.13.0.orig/arch/arm/boot/dts/wm8650.dtsi +++ linux-3.13.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-3.13.0.orig/arch/arm/common/edma.c +++ linux-3.13.0/arch/arm/common/edma.c @@ -404,7 +404,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); @@ -458,7 +459,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); @@ -1423,55 +1425,38 @@ #if IS_ENABLED(CONFIG_OF) && IS_ENABLED(CONFIG_DMADEVICES) -static int edma_of_read_u32_to_s16_array(const struct device_node *np, - const char *propname, s16 *out_values, - size_t sz) +static int edma_xbar_event_map(struct device *dev, struct device_node *node, + struct edma_soc_info *pdata, size_t sz) { - int ret; - - ret = of_property_read_u16_array(np, propname, out_values, sz); - if (ret) - return ret; - - /* Terminate it */ - *out_values++ = -1; - *out_values++ = -1; - - return 0; -} - -static int edma_xbar_event_map(struct device *dev, - struct device_node *node, - struct edma_soc_info *pdata, int len) -{ - int ret, i; + const char pname[] = "ti,edma-xbar-event-map"; struct resource res; void __iomem *xbar; - const s16 (*xbar_chans)[2]; + s16 (*xbar_chans)[2]; + size_t nelm = sz / sizeof(s16); u32 shift, offset, mux; + int ret, i; - xbar_chans = devm_kzalloc(dev, - len/sizeof(s16) + 2*sizeof(s16), - GFP_KERNEL); + xbar_chans = devm_kzalloc(dev, (nelm + 2) * sizeof(s16), GFP_KERNEL); if (!xbar_chans) return -ENOMEM; ret = of_address_to_resource(node, 1, &res); if (ret) - return -EIO; + return -ENOMEM; xbar = devm_ioremap(dev, res.start, resource_size(&res)); if (!xbar) return -ENOMEM; - ret = edma_of_read_u32_to_s16_array(node, - "ti,edma-xbar-event-map", - (s16 *)xbar_chans, - len/sizeof(u32)); + ret = of_property_read_u16_array(node, pname, (u16 *)xbar_chans, nelm); if (ret) return -EIO; - for (i = 0; xbar_chans[i][0] != -1; i++) { + /* Invalidate last entry for the other user of this mess */ + nelm >>= 1; + xbar_chans[nelm][0] = xbar_chans[nelm][1] = -1; + + for (i = 0; i < nelm; i++) { shift = (xbar_chans[i][1] & 0x03) << 3; offset = xbar_chans[i][1] & 0xfffffffc; mux = readl(xbar + offset); @@ -1480,8 +1465,7 @@ writel(mux, (xbar + offset)); } - pdata->xbar_chans = xbar_chans; - + pdata->xbar_chans = (const s16 (*)[2]) xbar_chans; return 0; } --- linux-3.13.0.orig/arch/arm/common/icst.c +++ linux-3.13.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-3.13.0.orig/arch/arm/configs/multi_v7_defconfig +++ linux-3.13.0/arch/arm/configs/multi_v7_defconfig @@ -118,6 +118,7 @@ CONFIG_USB=y CONFIG_USB_XHCI_HCD=y CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_EXYNOS=y CONFIG_USB_EHCI_TEGRA=y CONFIG_USB_EHCI_HCD_PLATFORM=y CONFIG_USB_ISP1760_HCD=y --- linux-3.13.0.orig/arch/arm/crypto/aes_glue.c +++ linux-3.13.0/arch/arm/crypto/aes_glue.c @@ -93,6 +93,6 @@ MODULE_DESCRIPTION("Rijndael (AES) Cipher Algorithm (ASM)"); MODULE_LICENSE("GPL"); -MODULE_ALIAS("aes"); -MODULE_ALIAS("aes-asm"); +MODULE_ALIAS_CRYPTO("aes"); +MODULE_ALIAS_CRYPTO("aes-asm"); MODULE_AUTHOR("David McCullough "); --- linux-3.13.0.orig/arch/arm/crypto/aesbs-core.S_shipped +++ linux-3.13.0/arch/arm/crypto/aesbs-core.S_shipped @@ -58,14 +58,18 @@ # define VFP_ABI_FRAME 0 # define BSAES_ASM_EXTENDED_KEY # define XTS_CHAIN_TWEAK -# define __ARM_ARCH__ 7 +# define __ARM_ARCH__ __LINUX_ARM_ARCH__ +# define __ARM_MAX_ARCH__ 7 #endif #ifdef __thumb__ # define adrl adr #endif -#if __ARM_ARCH__>=7 +#if __ARM_MAX_ARCH__>=7 +.arch armv7-a +.fpu neon + .text .syntax unified @ ARMv7-capable assembler is expected to handle this #ifdef __thumb2__ @@ -74,8 +78,6 @@ .code 32 #endif -.fpu neon - .type _bsaes_decrypt8,%function .align 4 _bsaes_decrypt8: @@ -2095,9 +2097,11 @@ vld1.8 {q8}, [r0] @ initial tweak adr r2, .Lxts_magic +#ifndef XTS_CHAIN_TWEAK tst r9, #0xf @ if not multiple of 16 it ne @ Thumb2 thing, sanity check in ARM subne r9, #0x10 @ subtract another 16 bytes +#endif subs r9, #0x80 blo .Lxts_dec_short --- linux-3.13.0.orig/arch/arm/crypto/aesbs-glue.c +++ linux-3.13.0/arch/arm/crypto/aesbs-glue.c @@ -137,7 +137,7 @@ dst += AES_BLOCK_SIZE; } while (--blocks); } - err = blkcipher_walk_done(desc, &walk, 0); + err = blkcipher_walk_done(desc, &walk, walk.nbytes % AES_BLOCK_SIZE); } return err; } @@ -158,7 +158,7 @@ bsaes_cbc_encrypt(walk.src.virt.addr, walk.dst.virt.addr, walk.nbytes, &ctx->dec, walk.iv); kernel_neon_end(); - err = blkcipher_walk_done(desc, &walk, 0); + err = blkcipher_walk_done(desc, &walk, walk.nbytes % AES_BLOCK_SIZE); } while (walk.nbytes) { u32 blocks = walk.nbytes / AES_BLOCK_SIZE; @@ -182,7 +182,7 @@ dst += AES_BLOCK_SIZE; src += AES_BLOCK_SIZE; } while (--blocks); - err = blkcipher_walk_done(desc, &walk, 0); + err = blkcipher_walk_done(desc, &walk, walk.nbytes % AES_BLOCK_SIZE); } return err; } @@ -268,7 +268,7 @@ bsaes_xts_encrypt(walk.src.virt.addr, walk.dst.virt.addr, walk.nbytes, &ctx->enc, walk.iv); kernel_neon_end(); - err = blkcipher_walk_done(desc, &walk, 0); + err = blkcipher_walk_done(desc, &walk, walk.nbytes % AES_BLOCK_SIZE); } return err; } @@ -292,7 +292,7 @@ bsaes_xts_decrypt(walk.src.virt.addr, walk.dst.virt.addr, walk.nbytes, &ctx->dec, walk.iv); kernel_neon_end(); - err = blkcipher_walk_done(desc, &walk, 0); + err = blkcipher_walk_done(desc, &walk, walk.nbytes % AES_BLOCK_SIZE); } return err; } --- linux-3.13.0.orig/arch/arm/crypto/bsaes-armv7.pl +++ linux-3.13.0/arch/arm/crypto/bsaes-armv7.pl @@ -701,14 +701,18 @@ # define VFP_ABI_FRAME 0 # define BSAES_ASM_EXTENDED_KEY # define XTS_CHAIN_TWEAK -# define __ARM_ARCH__ 7 +# define __ARM_ARCH__ __LINUX_ARM_ARCH__ +# define __ARM_MAX_ARCH__ 7 #endif #ifdef __thumb__ # define adrl adr #endif -#if __ARM_ARCH__>=7 +#if __ARM_MAX_ARCH__>=7 +.arch armv7-a +.fpu neon + .text .syntax unified @ ARMv7-capable assembler is expected to handle this #ifdef __thumb2__ @@ -717,8 +721,6 @@ .code 32 #endif -.fpu neon - .type _bsaes_decrypt8,%function .align 4 _bsaes_decrypt8: @@ -2076,9 +2078,11 @@ vld1.8 {@XMM[8]}, [r0] @ initial tweak adr $magic, .Lxts_magic +#ifndef XTS_CHAIN_TWEAK tst $len, #0xf @ if not multiple of 16 it ne @ Thumb2 thing, sanity check in ARM subne $len, #0x10 @ subtract another 16 bytes +#endif subs $len, #0x80 blo .Lxts_dec_short --- linux-3.13.0.orig/arch/arm/crypto/sha1_glue.c +++ linux-3.13.0/arch/arm/crypto/sha1_glue.c @@ -175,5 +175,5 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("SHA1 Secure Hash Algorithm (ARM)"); -MODULE_ALIAS("sha1"); +MODULE_ALIAS_CRYPTO("sha1"); MODULE_AUTHOR("David McCullough "); --- linux-3.13.0.orig/arch/arm/include/asm/arch_timer.h +++ linux-3.13.0/arch/arm/include/asm/arch_timer.h @@ -78,6 +78,15 @@ return val; } +static inline u64 arch_counter_get_cntpct(void) +{ + u64 cval; + + isb(); + asm volatile("mrrc p15, 0, %Q0, %R0, c14" : "=r" (cval)); + return cval; +} + static inline u64 arch_counter_get_cntvct(void) { u64 cval; --- linux-3.13.0.orig/arch/arm/include/asm/cacheflush.h +++ linux-3.13.0/arch/arm/include/asm/cacheflush.h @@ -212,6 +212,7 @@ static inline void __flush_icache_all(void) { __flush_icache_preferred(); + dsb(); } /* @@ -471,7 +472,6 @@ "mcr p15, 0, r0, c1, c0, 0 @ set SCTLR \n\t" \ "isb \n\t" \ "bl v7_flush_dcache_"__stringify(level)" \n\t" \ - "clrex \n\t" \ "mrc p15, 0, r0, c1, c0, 1 @ get ACTLR \n\t" \ "bic r0, r0, #(1 << 6) @ disable local coherency \n\t" \ "mcr p15, 0, r0, c1, c0, 1 @ set ACTLR \n\t" \ --- linux-3.13.0.orig/arch/arm/include/asm/div64.h +++ linux-3.13.0/arch/arm/include/asm/div64.h @@ -156,7 +156,7 @@ /* Select the best insn combination to perform the */ \ /* actual __m * __n / (__p << 64) operation. */ \ if (!__c) { \ - asm ( "umull %Q0, %R0, %1, %Q2\n\t" \ + asm ( "umull %Q0, %R0, %Q1, %Q2\n\t" \ "mov %Q0, #0" \ : "=&r" (__res) \ : "r" (__m), "r" (__n) \ --- linux-3.13.0.orig/arch/arm/include/asm/elf.h +++ linux-3.13.0/arch/arm/include/asm/elf.h @@ -114,7 +114,7 @@ the loader. We need to make sure that it is out of the way of the program that it will "exec", and that there is sufficient room for the brk. */ -#define ELF_ET_DYN_BASE (2 * TASK_SIZE / 3) +#define ELF_ET_DYN_BASE (TASK_SIZE / 3 * 2) /* When the program starts, a1 contains a pointer to a function to be registered with atexit, as per the SVR4 ABI. A value of 0 means we --- linux-3.13.0.orig/arch/arm/include/asm/futex.h +++ linux-3.13.0/arch/arm/include/asm/futex.h @@ -3,11 +3,6 @@ #ifdef __KERNEL__ -#if defined(CONFIG_CPU_USE_DOMAINS) && defined(CONFIG_SMP) -/* ARM doesn't provide unprivileged exclusive memory accessors */ -#include -#else - #include #include #include @@ -164,6 +159,5 @@ return ret; } -#endif /* !(CPU_USE_DOMAINS && SMP) */ #endif /* __KERNEL__ */ #endif /* _ASM_ARM_FUTEX_H */ --- linux-3.13.0.orig/arch/arm/include/asm/kvm_host.h +++ linux-3.13.0/arch/arm/include/asm/kvm_host.h @@ -36,7 +36,7 @@ #define KVM_COALESCED_MMIO_PAGE_OFFSET 1 #define KVM_HAVE_ONE_REG -#define KVM_VCPU_MAX_FEATURES 1 +#define KVM_VCPU_MAX_FEATURES 2 #include --- linux-3.13.0.orig/arch/arm/include/asm/kvm_mmu.h +++ linux-3.13.0/arch/arm/include/asm/kvm_mmu.h @@ -114,11 +114,34 @@ pmd_val(*pmd) |= L_PMD_S2_RDWR; } +/* Open coded p*d_addr_end that can deal with 64bit addresses */ +#define kvm_pgd_addr_end(addr, end) \ +({ u64 __boundary = ((addr) + PGDIR_SIZE) & PGDIR_MASK; \ + (__boundary - 1 < (end) - 1)? __boundary: (end); \ +}) + +#define kvm_pud_addr_end(addr,end) (end) + +#define kvm_pmd_addr_end(addr, end) \ +({ u64 __boundary = ((addr) + PMD_SIZE) & PMD_MASK; \ + (__boundary - 1 < (end) - 1)? __boundary: (end); \ +}) + struct kvm; -static inline void coherent_icache_guest_page(struct kvm *kvm, hva_t hva, - unsigned long size) +#define kvm_flush_dcache_to_poc(a,l) __cpuc_flush_dcache_area((a), (l)) + +static inline bool vcpu_has_cache_enabled(struct kvm_vcpu *vcpu) { + return (vcpu->arch.cp15[c1_SCTLR] & 0b101) == 0b101; +} + +static inline void coherent_cache_guest_page(struct kvm_vcpu *vcpu, hva_t hva, + unsigned long size) +{ + if (!vcpu_has_cache_enabled(vcpu)) + kvm_flush_dcache_to_poc((void *)hva, size); + /* * If we are going to insert an instruction page and the icache is * either VIPT or PIPT, there is a potential problem where the host @@ -139,7 +162,7 @@ } } -#define kvm_flush_dcache_to_poc(a,l) __cpuc_flush_dcache_area((a), (l)) +void stage2_flush_vm(struct kvm *kvm); #endif /* !__ASSEMBLY__ */ --- linux-3.13.0.orig/arch/arm/include/asm/kvm_psci.h +++ linux-3.13.0/arch/arm/include/asm/kvm_psci.h @@ -18,6 +18,10 @@ #ifndef __ARM_KVM_PSCI_H__ #define __ARM_KVM_PSCI_H__ -bool kvm_psci_call(struct kvm_vcpu *vcpu); +#define KVM_ARM_PSCI_0_1 1 +#define KVM_ARM_PSCI_0_2 2 + +int kvm_psci_version(struct kvm_vcpu *vcpu); +int kvm_psci_call(struct kvm_vcpu *vcpu); #endif /* __ARM_KVM_PSCI_H__ */ --- linux-3.13.0.orig/arch/arm/include/asm/memory.h +++ linux-3.13.0/arch/arm/include/asm/memory.h @@ -30,14 +30,15 @@ */ #define UL(x) _AC(x, UL) +/* PAGE_OFFSET - the virtual address of the start of the kernel image */ +#define PAGE_OFFSET UL(CONFIG_PAGE_OFFSET) + #ifdef CONFIG_MMU /* - * PAGE_OFFSET - the virtual address of the start of the kernel image * TASK_SIZE - the maximum size of a user space task. * TASK_UNMAPPED_BASE - the lower boundary of the mmap VM area */ -#define PAGE_OFFSET UL(CONFIG_PAGE_OFFSET) #define TASK_SIZE (UL(CONFIG_PAGE_OFFSET) - UL(SZ_16M)) #define TASK_UNMAPPED_BASE ALIGN(TASK_SIZE / 3, SZ_16M) @@ -104,10 +105,6 @@ #define END_MEM (UL(CONFIG_DRAM_BASE) + CONFIG_DRAM_SIZE) #endif -#ifndef PAGE_OFFSET -#define PAGE_OFFSET PLAT_PHYS_OFFSET -#endif - /* * The module can be at any place in ram in nommu mode. */ --- linux-3.13.0.orig/arch/arm/include/asm/pgtable-2level.h +++ linux-3.13.0/arch/arm/include/asm/pgtable-2level.h @@ -140,6 +140,7 @@ #define L_PTE_MT_DEV_NONSHARED (_AT(pteval_t, 0x0c) << 2) /* 1100 */ #define L_PTE_MT_DEV_WC (_AT(pteval_t, 0x09) << 2) /* 1001 */ #define L_PTE_MT_DEV_CACHED (_AT(pteval_t, 0x0b) << 2) /* 1011 */ +#define L_PTE_MT_VECTORS (_AT(pteval_t, 0x0f) << 2) /* 1111 */ #define L_PTE_MT_MASK (_AT(pteval_t, 0x0f) << 2) #ifndef __ASSEMBLY__ --- linux-3.13.0.orig/arch/arm/include/asm/pgtable-3level.h +++ linux-3.13.0/arch/arm/include/asm/pgtable-3level.h @@ -120,13 +120,16 @@ /* * 2nd stage PTE definitions for LPAE. */ -#define L_PTE_S2_MT_UNCACHED (_AT(pteval_t, 0x5) << 2) /* MemAttr[3:0] */ -#define L_PTE_S2_MT_WRITETHROUGH (_AT(pteval_t, 0xa) << 2) /* MemAttr[3:0] */ -#define L_PTE_S2_MT_WRITEBACK (_AT(pteval_t, 0xf) << 2) /* MemAttr[3:0] */ -#define L_PTE_S2_RDONLY (_AT(pteval_t, 1) << 6) /* HAP[1] */ -#define L_PTE_S2_RDWR (_AT(pteval_t, 3) << 6) /* HAP[2:1] */ +#define L_PTE_S2_MT_UNCACHED (_AT(pteval_t, 0x0) << 2) /* strongly ordered */ +#define L_PTE_S2_MT_WRITETHROUGH (_AT(pteval_t, 0xa) << 2) /* normal inner write-through */ +#define L_PTE_S2_MT_WRITEBACK (_AT(pteval_t, 0xf) << 2) /* normal inner write-back */ +#define L_PTE_S2_MT_DEV_SHARED (_AT(pteval_t, 0x1) << 2) /* device */ +#define L_PTE_S2_MT_MASK (_AT(pteval_t, 0xf) << 2) -#define L_PMD_S2_RDWR (_AT(pmdval_t, 3) << 6) /* HAP[2:1] */ +#define L_PTE_S2_RDONLY (_AT(pteval_t, 1) << 6) /* HAP[1] */ +#define L_PTE_S2_RDWR (_AT(pteval_t, 3) << 6) /* HAP[2:1] */ + +#define L_PMD_S2_RDWR (_AT(pmdval_t, 3) << 6) /* HAP[2:1] */ /* * Hyp-mode PL2 PTE definitions for LPAE. --- linux-3.13.0.orig/arch/arm/include/asm/psci.h +++ linux-3.13.0/arch/arm/include/asm/psci.h @@ -29,16 +29,19 @@ int (*cpu_off)(struct psci_power_state state); int (*cpu_on)(unsigned long cpuid, unsigned long entry_point); int (*migrate)(unsigned long cpuid); + int (*affinity_info)(unsigned long target_affinity, + unsigned long lowest_affinity_level); + int (*migrate_info_type)(void); }; extern struct psci_operations psci_ops; extern struct smp_operations psci_smp_ops; #ifdef CONFIG_ARM_PSCI -void psci_init(void); +int psci_init(void); bool psci_smp_available(void); #else -static inline void psci_init(void) { } +static inline int psci_init(void) { } static inline bool psci_smp_available(void) { return false; } #endif --- linux-3.13.0.orig/arch/arm/include/asm/spinlock.h +++ linux-3.13.0/arch/arm/include/asm/spinlock.h @@ -37,18 +37,9 @@ static inline void dsb_sev(void) { -#if __LINUX_ARM_ARCH__ >= 7 - __asm__ __volatile__ ( - "dsb ishst\n" - SEV - ); -#else - __asm__ __volatile__ ( - "mcr p15, 0, %0, c7, c10, 4\n" - SEV - : : "r" (0) - ); -#endif + + dsb(ishst); + __asm__(SEV); } /* --- linux-3.13.0.orig/arch/arm/include/asm/thread_info.h +++ linux-3.13.0/arch/arm/include/asm/thread_info.h @@ -43,16 +43,6 @@ __u32 extra[2]; /* Xscale 'acc' register, etc */ }; -struct arm_restart_block { - union { - /* For user cache flushing */ - struct { - unsigned long start; - unsigned long end; - } cache; - }; -}; - /* * low level task data that entry.S needs immediate access to. * __switch_to() assumes cpu_context follows immediately after cpu_domain. @@ -78,7 +68,6 @@ unsigned long thumbee_state; /* ThumbEE Handler Base register */ #endif struct restart_block restart_block; - struct arm_restart_block arm_restart_block; }; #define INIT_THREAD_INFO(tsk) \ --- linux-3.13.0.orig/arch/arm/include/asm/tls.h +++ linux-3.13.0/arch/arm/include/asm/tls.h @@ -1,6 +1,9 @@ #ifndef __ASMARM_TLS_H #define __ASMARM_TLS_H +#include +#include + #ifdef __ASSEMBLY__ #include .macro switch_tls_none, base, tp, tpuser, tmp1, tmp2 @@ -50,6 +53,49 @@ #endif #ifndef __ASSEMBLY__ + +static inline void set_tls(unsigned long val) +{ + struct thread_info *thread; + + thread = current_thread_info(); + + thread->tp_value[0] = val; + + /* + * This code runs with preemption enabled and therefore must + * be reentrant with respect to switch_tls. + * + * We need to ensure ordering between the shadow state and the + * hardware state, so that we don't corrupt the hardware state + * with a stale shadow state during context switch. + * + * If we're preempted here, switch_tls will load TPIDRURO from + * thread_info upon resuming execution and the following mcr + * is merely redundant. + */ + barrier(); + + if (!tls_emu) { + if (has_tls_reg) { + asm("mcr p15, 0, %0, c13, c0, 3" + : : "r" (val)); + } else { +#ifdef CONFIG_KUSER_HELPERS + /* + * User space must never try to access this + * directly. Expect your app to break + * eventually if you do so. The user helper + * at 0xffff0fe0 must be used instead. (see + * entry-armv.S for details) + */ + *((unsigned int *)0xffff0ff0) = val; +#endif + } + + } +} + static inline unsigned long get_tpuser(void) { unsigned long reg = 0; @@ -59,5 +105,23 @@ return reg; } + +static inline void set_tpuser(unsigned long val) +{ + /* Since TPIDRURW is fully context-switched (unlike TPIDRURO), + * we need not update thread_info. + */ + if (has_tls_reg && !tls_emu) { + asm("mcr p15, 0, %0, c13, c0, 2" + : : "r" (val)); + } +} + +static inline void flush_tls(void) +{ + set_tls(0); + set_tpuser(0); +} + #endif #endif /* __ASMARM_TLS_H */ --- linux-3.13.0.orig/arch/arm/include/asm/uaccess.h +++ linux-3.13.0/arch/arm/include/asm/uaccess.h @@ -171,8 +171,9 @@ #define __put_user_check(x,p) \ ({ \ unsigned long __limit = current_thread_info()->addr_limit - 1; \ + const typeof(*(p)) __user *__tmp_p = (p); \ register const typeof(*(p)) __r2 asm("r2") = (x); \ - register const typeof(*(p)) __user *__p asm("r0") = (p);\ + register const typeof(*(p)) __user *__p asm("r0") = __tmp_p; \ register unsigned long __l asm("r1") = __limit; \ register int __e asm("r0"); \ switch (sizeof(*(__p))) { \ --- linux-3.13.0.orig/arch/arm/include/asm/unistd.h +++ linux-3.13.0/arch/arm/include/asm/unistd.h @@ -15,7 +15,7 @@ #include -#define __NR_syscalls (380) +#define __NR_syscalls (384) #define __ARM_NR_cmpxchg (__ARM_NR_BASE+0x00fff0) #define __ARCH_WANT_STAT64 --- linux-3.13.0.orig/arch/arm/include/uapi/asm/kvm.h +++ linux-3.13.0/arch/arm/include/uapi/asm/kvm.h @@ -20,6 +20,7 @@ #define __ARM_KVM_H__ #include +#include #include #define __KVM_HAVE_GUEST_DEBUG @@ -83,6 +84,7 @@ #define KVM_VGIC_V2_CPU_SIZE 0x2000 #define KVM_ARM_VCPU_POWER_OFF 0 /* CPU is started in OFF state */ +#define KVM_ARM_VCPU_PSCI_0_2 1 /* CPU uses PSCI v0.2 */ struct kvm_vcpu_init { __u32 target; @@ -173,9 +175,9 @@ #define KVM_PSCI_FN_CPU_ON KVM_PSCI_FN(2) #define KVM_PSCI_FN_MIGRATE KVM_PSCI_FN(3) -#define KVM_PSCI_RET_SUCCESS 0 -#define KVM_PSCI_RET_NI ((unsigned long)-1) -#define KVM_PSCI_RET_INVAL ((unsigned long)-2) -#define KVM_PSCI_RET_DENIED ((unsigned long)-3) +#define KVM_PSCI_RET_SUCCESS PSCI_RET_SUCCESS +#define KVM_PSCI_RET_NI PSCI_RET_NOT_SUPPORTED +#define KVM_PSCI_RET_INVAL PSCI_RET_INVALID_PARAMS +#define KVM_PSCI_RET_DENIED PSCI_RET_DENIED #endif /* __ARM_KVM_H__ */ --- linux-3.13.0.orig/arch/arm/include/uapi/asm/unistd.h +++ linux-3.13.0/arch/arm/include/uapi/asm/unistd.h @@ -406,6 +406,10 @@ #define __NR_process_vm_writev (__NR_SYSCALL_BASE+377) #define __NR_kcmp (__NR_SYSCALL_BASE+378) #define __NR_finit_module (__NR_SYSCALL_BASE+379) +#define __NR_sched_setattr (__NR_SYSCALL_BASE+380) +#define __NR_sched_getattr (__NR_SYSCALL_BASE+381) +#define __NR_renameat2 (__NR_SYSCALL_BASE+382) +#define __NR_seccomp (__NR_SYSCALL_BASE+383) /* * This may need to be greater than __NR_last_syscall+1 in order to --- linux-3.13.0.orig/arch/arm/kernel/Makefile +++ linux-3.13.0/arch/arm/kernel/Makefile @@ -94,7 +94,7 @@ obj-$(CONFIG_ARM_VIRT_EXT) += hyp-stub.o ifeq ($(CONFIG_ARM_PSCI),y) -obj-y += psci.o +obj-y += psci.o psci-call.o obj-$(CONFIG_SMP) += psci_smp.o endif --- linux-3.13.0.orig/arch/arm/kernel/calls.S +++ linux-3.13.0/arch/arm/kernel/calls.S @@ -389,6 +389,10 @@ CALL(sys_process_vm_writev) CALL(sys_kcmp) CALL(sys_finit_module) +/* 380 */ CALL(sys_ni_syscall) /* sys_sched_setattr */ + CALL(sys_ni_syscall) /* sys_sched_getattr */ + CALL(sys_ni_syscall) /* sys_renameat2 */ + CALL(sys_seccomp) #ifndef syscalls_counted .equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls #define syscalls_counted --- linux-3.13.0.orig/arch/arm/kernel/entry-header.S +++ linux-3.13.0/arch/arm/kernel/entry-header.S @@ -132,6 +132,10 @@ orrne r5, V7M_xPSR_FRAMEPTRALIGN biceq r5, V7M_xPSR_FRAMEPTRALIGN + @ ensure bit 0 is cleared in the PC, otherwise behaviour is + @ unpredictable + bic r4, #1 + @ write basic exception frame stmdb r2!, {r1, r3-r5} ldmia sp, {r1, r3-r5} @@ -204,26 +208,21 @@ #endif .endif msr spsr_cxsf, \rpsr -#if defined(CONFIG_CPU_V6) - ldr r0, [sp] - strex r1, r2, [sp] @ clear the exclusive monitor - ldmib sp, {r1 - pc}^ @ load r1 - pc, cpsr -#elif defined(CONFIG_CPU_32v6K) - clrex @ clear the exclusive monitor - ldmia sp, {r0 - pc}^ @ load r0 - pc, cpsr -#else - ldmia sp, {r0 - pc}^ @ load r0 - pc, cpsr +#if defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_32v6K) + @ We must avoid clrex due to Cortex-A15 erratum #830321 + sub r0, sp, #4 @ uninhabited address + strex r1, r2, [r0] @ clear the exclusive monitor #endif + ldmia sp, {r0 - pc}^ @ load r0 - pc, cpsr .endm .macro restore_user_regs, fast = 0, offset = 0 ldr r1, [sp, #\offset + S_PSR] @ get calling cpsr ldr lr, [sp, #\offset + S_PC]! @ get pc msr spsr_cxsf, r1 @ save in spsr_svc -#if defined(CONFIG_CPU_V6) +#if defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_32v6K) + @ We must avoid clrex due to Cortex-A15 erratum #830321 strex r1, r2, [sp] @ clear the exclusive monitor -#elif defined(CONFIG_CPU_32v6K) - clrex @ clear the exclusive monitor #endif .if \fast ldmdb sp, {r1 - lr}^ @ get calling r1 - lr @@ -268,7 +267,10 @@ .endif ldr lr, [sp, #S_SP] @ top of the stack ldrd r0, r1, [sp, #S_LR] @ calling lr and pc - clrex @ clear the exclusive monitor + + @ We must avoid clrex due to Cortex-A15 erratum #830321 + strex r2, r1, [sp, #S_LR] @ clear the exclusive monitor + stmdb lr!, {r0, r1, \rpsr} @ calling lr and rfe context ldmia sp, {r0 - r12} mov sp, lr @@ -289,13 +291,16 @@ .endm #else /* ifdef CONFIG_CPU_V7M */ .macro restore_user_regs, fast = 0, offset = 0 - clrex @ clear the exclusive monitor mov r2, sp load_user_sp_lr r2, r3, \offset + S_SP @ calling sp, lr ldr r1, [sp, #\offset + S_PSR] @ get calling cpsr ldr lr, [sp, #\offset + S_PC] @ get pc add sp, sp, #\offset + S_SP msr spsr_cxsf, r1 @ save in spsr_svc + + @ We must avoid clrex due to Cortex-A15 erratum #830321 + strex r1, r2, [sp] @ clear the exclusive monitor + .if \fast ldmdb sp, {r1 - r12} @ get calling r1 - r12 .else --- linux-3.13.0.orig/arch/arm/kernel/irq.c +++ linux-3.13.0/arch/arm/kernel/irq.c @@ -163,7 +163,7 @@ c = irq_data_get_irq_chip(d); if (!c->irq_set_affinity) pr_debug("IRQ%u: unable to set affinity\n", d->irq); - else if (c->irq_set_affinity(d, affinity, true) == IRQ_SET_MASK_OK && ret) + else if (c->irq_set_affinity(d, affinity, false) == IRQ_SET_MASK_OK && ret) cpumask_copy(d->affinity, affinity); return ret; --- linux-3.13.0.orig/arch/arm/kernel/machine_kexec.c +++ linux-3.13.0/arch/arm/kernel/machine_kexec.c @@ -184,3 +184,10 @@ soft_restart(reboot_entry_phys); } + +void arch_crash_save_vmcoreinfo(void) +{ +#ifdef CONFIG_ARM_LPAE + VMCOREINFO_CONFIG(ARM_LPAE); +#endif +} --- linux-3.13.0.orig/arch/arm/kernel/process.c +++ linux-3.13.0/arch/arm/kernel/process.c @@ -334,6 +334,8 @@ memset(&tsk->thread.debug, 0, sizeof(struct debug_info)); memset(&thread->fpstate, 0, sizeof(union fp_state)); + flush_tls(); + thread_notify(THREAD_NOTIFY_FLUSH, thread); } --- linux-3.13.0.orig/arch/arm/kernel/psci-call.S +++ linux-3.13.0/arch/arm/kernel/psci-call.S @@ -0,0 +1,31 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License 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. + * + * Copyright (C) 2015 ARM Limited + * + * Author: Mark Rutland + */ + +#include + +#include +#include + +/* int __invoke_psci_fn_hvc(u32 function_id, u32 arg0, u32 arg1, u32 arg2) */ +ENTRY(__invoke_psci_fn_hvc) + __HVC(0) + bx lr +ENDPROC(__invoke_psci_fn_hvc) + +/* int __invoke_psci_fn_smc(u32 function_id, u32 arg0, u32 arg1, u32 arg2) */ +ENTRY(__invoke_psci_fn_smc) + __SMC(0) + bx lr +ENDPROC(__invoke_psci_fn_smc) --- linux-3.13.0.orig/arch/arm/kernel/psci.c +++ linux-3.13.0/arch/arm/kernel/psci.c @@ -17,97 +17,67 @@ #include #include +#include +#include +#include #include #include -#include -#include #include +#include struct psci_operations psci_ops; static int (*invoke_psci_fn)(u32, u32, u32, u32); +typedef int (*psci_initcall_t)(const struct device_node *); + +asmlinkage int __invoke_psci_fn_hvc(u32, u32, u32, u32); +asmlinkage int __invoke_psci_fn_smc(u32, u32, u32, u32); enum psci_function { PSCI_FN_CPU_SUSPEND, PSCI_FN_CPU_ON, PSCI_FN_CPU_OFF, PSCI_FN_MIGRATE, + PSCI_FN_AFFINITY_INFO, + PSCI_FN_MIGRATE_INFO_TYPE, PSCI_FN_MAX, }; static u32 psci_function_id[PSCI_FN_MAX]; -#define PSCI_RET_SUCCESS 0 -#define PSCI_RET_EOPNOTSUPP -1 -#define PSCI_RET_EINVAL -2 -#define PSCI_RET_EPERM -3 - static int psci_to_linux_errno(int errno) { switch (errno) { case PSCI_RET_SUCCESS: return 0; - case PSCI_RET_EOPNOTSUPP: + case PSCI_RET_NOT_SUPPORTED: return -EOPNOTSUPP; - case PSCI_RET_EINVAL: + case PSCI_RET_INVALID_PARAMS: return -EINVAL; - case PSCI_RET_EPERM: + case PSCI_RET_DENIED: return -EPERM; }; return -EINVAL; } -#define PSCI_POWER_STATE_ID_MASK 0xffff -#define PSCI_POWER_STATE_ID_SHIFT 0 -#define PSCI_POWER_STATE_TYPE_MASK 0x1 -#define PSCI_POWER_STATE_TYPE_SHIFT 16 -#define PSCI_POWER_STATE_AFFL_MASK 0x3 -#define PSCI_POWER_STATE_AFFL_SHIFT 24 - static u32 psci_power_state_pack(struct psci_power_state state) { - return ((state.id & PSCI_POWER_STATE_ID_MASK) - << PSCI_POWER_STATE_ID_SHIFT) | - ((state.type & PSCI_POWER_STATE_TYPE_MASK) - << PSCI_POWER_STATE_TYPE_SHIFT) | - ((state.affinity_level & PSCI_POWER_STATE_AFFL_MASK) - << PSCI_POWER_STATE_AFFL_SHIFT); + return ((state.id << PSCI_0_2_POWER_STATE_ID_SHIFT) + & PSCI_0_2_POWER_STATE_ID_MASK) | + ((state.type << PSCI_0_2_POWER_STATE_TYPE_SHIFT) + & PSCI_0_2_POWER_STATE_TYPE_MASK) | + ((state.affinity_level << PSCI_0_2_POWER_STATE_AFFL_SHIFT) + & PSCI_0_2_POWER_STATE_AFFL_MASK); } -/* - * The following two functions are invoked via the invoke_psci_fn pointer - * and will not be inlined, allowing us to piggyback on the AAPCS. - */ -static noinline int __invoke_psci_fn_hvc(u32 function_id, u32 arg0, u32 arg1, - u32 arg2) +static int psci_get_version(void) { - asm volatile( - __asmeq("%0", "r0") - __asmeq("%1", "r1") - __asmeq("%2", "r2") - __asmeq("%3", "r3") - __HVC(0) - : "+r" (function_id) - : "r" (arg0), "r" (arg1), "r" (arg2)); - - return function_id; -} - -static noinline int __invoke_psci_fn_smc(u32 function_id, u32 arg0, u32 arg1, - u32 arg2) -{ - asm volatile( - __asmeq("%0", "r0") - __asmeq("%1", "r1") - __asmeq("%2", "r2") - __asmeq("%3", "r3") - __SMC(0) - : "+r" (function_id) - : "r" (arg0), "r" (arg1), "r" (arg2)); + int err; - return function_id; + err = invoke_psci_fn(PSCI_0_2_FN_PSCI_VERSION, 0, 0, 0); + return err; } static int psci_cpu_suspend(struct psci_power_state state, @@ -153,26 +123,36 @@ return psci_to_linux_errno(err); } -static const struct of_device_id psci_of_match[] __initconst = { - { .compatible = "arm,psci", }, - {}, -}; +static int psci_affinity_info(unsigned long target_affinity, + unsigned long lowest_affinity_level) +{ + int err; + u32 fn; -void __init psci_init(void) + fn = psci_function_id[PSCI_FN_AFFINITY_INFO]; + err = invoke_psci_fn(fn, target_affinity, lowest_affinity_level, 0); + return err; +} + +static int psci_migrate_info_type(void) { - struct device_node *np; - const char *method; - u32 id; + int err; + u32 fn; - np = of_find_matching_node(NULL, psci_of_match); - if (!np) - return; + fn = psci_function_id[PSCI_FN_MIGRATE_INFO_TYPE]; + err = invoke_psci_fn(fn, 0, 0, 0); + return err; +} - pr_info("probing function IDs from device-tree\n"); +static int get_set_conduit_method(struct device_node *np) +{ + const char *method; + + pr_info("probing for conduit method from DT.\n"); if (of_property_read_string(np, "method", &method)) { - pr_warning("missing \"method\" property\n"); - goto out_put_node; + pr_warn("missing \"method\" property\n"); + return -ENXIO; } if (!strcmp("hvc", method)) { @@ -180,10 +160,99 @@ } else if (!strcmp("smc", method)) { invoke_psci_fn = __invoke_psci_fn_smc; } else { - pr_warning("invalid \"method\" property: %s\n", method); + pr_warn("invalid \"method\" property: %s\n", method); + return -EINVAL; + } + return 0; +} + +static void psci_sys_reset(enum reboot_mode reboot_mode, const char *cmd) +{ + invoke_psci_fn(PSCI_0_2_FN_SYSTEM_RESET, 0, 0, 0); +} + +static void psci_sys_poweroff(void) +{ + invoke_psci_fn(PSCI_0_2_FN_SYSTEM_OFF, 0, 0, 0); +} + +/* + * PSCI Function IDs for v0.2+ are well defined so use + * standard values. + */ +static int psci_0_2_init(struct device_node *np) +{ + int err, ver; + + err = get_set_conduit_method(np); + + if (err) goto out_put_node; + + ver = psci_get_version(); + + if (ver == PSCI_RET_NOT_SUPPORTED) { + /* PSCI v0.2 mandates implementation of PSCI_ID_VERSION. */ + pr_err("PSCI firmware does not comply with the v0.2 spec.\n"); + err = -EOPNOTSUPP; + goto out_put_node; + } else { + pr_info("PSCIv%d.%d detected in firmware.\n", + PSCI_VERSION_MAJOR(ver), + PSCI_VERSION_MINOR(ver)); + + if (PSCI_VERSION_MAJOR(ver) == 0 && + PSCI_VERSION_MINOR(ver) < 2) { + err = -EINVAL; + pr_err("Conflicting PSCI version detected.\n"); + goto out_put_node; + } } + pr_info("Using standard PSCI v0.2 function IDs\n"); + psci_function_id[PSCI_FN_CPU_SUSPEND] = PSCI_0_2_FN_CPU_SUSPEND; + psci_ops.cpu_suspend = psci_cpu_suspend; + + psci_function_id[PSCI_FN_CPU_OFF] = PSCI_0_2_FN_CPU_OFF; + psci_ops.cpu_off = psci_cpu_off; + + psci_function_id[PSCI_FN_CPU_ON] = PSCI_0_2_FN_CPU_ON; + psci_ops.cpu_on = psci_cpu_on; + + psci_function_id[PSCI_FN_MIGRATE] = PSCI_0_2_FN_MIGRATE; + psci_ops.migrate = psci_migrate; + + psci_function_id[PSCI_FN_AFFINITY_INFO] = PSCI_0_2_FN_AFFINITY_INFO; + psci_ops.affinity_info = psci_affinity_info; + + psci_function_id[PSCI_FN_MIGRATE_INFO_TYPE] = + PSCI_0_2_FN_MIGRATE_INFO_TYPE; + psci_ops.migrate_info_type = psci_migrate_info_type; + + arm_pm_restart = psci_sys_reset; + + pm_power_off = psci_sys_poweroff; + +out_put_node: + of_node_put(np); + return err; +} + +/* + * PSCI < v0.2 get PSCI Function IDs via DT. + */ +static int psci_0_1_init(struct device_node *np) +{ + u32 id; + int err; + + err = get_set_conduit_method(np); + + if (err) + goto out_put_node; + + pr_info("Using PSCI v0.1 Function IDs from DT\n"); + if (!of_property_read_u32(np, "cpu_suspend", &id)) { psci_function_id[PSCI_FN_CPU_SUSPEND] = id; psci_ops.cpu_suspend = psci_cpu_suspend; @@ -206,5 +275,25 @@ out_put_node: of_node_put(np); - return; + return err; +} + +static const struct of_device_id psci_of_match[] __initconst = { + { .compatible = "arm,psci", .data = psci_0_1_init}, + { .compatible = "arm,psci-0.2", .data = psci_0_2_init}, + {}, +}; + +int __init psci_init(void) +{ + struct device_node *np; + const struct of_device_id *matched_np; + psci_initcall_t init_fn; + + np = of_find_matching_node_and_match(NULL, psci_of_match, &matched_np); + if (!np) + return -ENODEV; + + init_fn = (psci_initcall_t)matched_np->data; + return init_fn(np); } --- linux-3.13.0.orig/arch/arm/kernel/psci_smp.c +++ linux-3.13.0/arch/arm/kernel/psci_smp.c @@ -16,6 +16,8 @@ #include #include #include +#include +#include #include #include @@ -66,6 +68,36 @@ /* We should never return */ panic("psci: cpu %d failed to shutdown\n", cpu); } + +int __ref psci_cpu_kill(unsigned int cpu) +{ + int err, i; + + if (!psci_ops.affinity_info) + return 1; + /* + * cpu_kill could race with cpu_die and we can + * potentially end up declaring this cpu undead + * while it is dying. So, try again a few times. + */ + + for (i = 0; i < 10; i++) { + err = psci_ops.affinity_info(cpu_logical_map(cpu), 0); + if (err == PSCI_0_2_AFFINITY_LEVEL_OFF) { + pr_info("CPU%d killed.\n", cpu); + return 1; + } + + msleep(10); + pr_info("Retrying again to check for CPU kill\n"); + } + + pr_warn("CPU%d may not have shut down cleanly (AFFINITY_INFO reports %d)\n", + cpu, err); + /* Make platform_cpu_kill() fail. */ + return 0; +} + #endif bool __init psci_smp_available(void) @@ -78,5 +110,6 @@ .smp_boot_secondary = psci_boot_secondary, #ifdef CONFIG_HOTPLUG_CPU .cpu_die = psci_cpu_die, + .cpu_kill = psci_cpu_kill, #endif }; --- linux-3.13.0.orig/arch/arm/kernel/ptrace.c +++ linux-3.13.0/arch/arm/kernel/ptrace.c @@ -908,7 +908,7 @@ PTRACE_SYSCALL_EXIT, }; -static int tracehook_report_syscall(struct pt_regs *regs, +static void tracehook_report_syscall(struct pt_regs *regs, enum ptrace_syscall_dir dir) { unsigned long ip; @@ -926,7 +926,6 @@ current_thread_info()->syscall = -1; regs->ARM_ip = ip; - return current_thread_info()->syscall; } asmlinkage int syscall_trace_enter(struct pt_regs *regs, int scno) @@ -938,7 +937,9 @@ return -1; if (test_thread_flag(TIF_SYSCALL_TRACE)) - scno = tracehook_report_syscall(regs, PTRACE_SYSCALL_ENTER); + tracehook_report_syscall(regs, PTRACE_SYSCALL_ENTER); + + scno = current_thread_info()->syscall; if (test_thread_flag(TIF_SYSCALL_TRACEPOINT)) trace_sys_enter(regs, scno); --- linux-3.13.0.orig/arch/arm/kernel/signal.c +++ linux-3.13.0/arch/arm/kernel/signal.c @@ -353,12 +353,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-3.13.0.orig/arch/arm/kernel/stacktrace.c +++ linux-3.13.0/arch/arm/kernel/stacktrace.c @@ -83,13 +83,16 @@ return trace->nr_entries >= trace->max_entries; } -void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace) +/* This must be noinline to so that our skip calculation works correctly */ +static noinline void __save_stack_trace(struct task_struct *tsk, + struct stack_trace *trace, unsigned int nosched) { struct stack_trace_data data; struct stackframe frame; data.trace = trace; data.skip = trace->skip; + data.no_sched_functions = nosched; if (tsk != current) { #ifdef CONFIG_SMP @@ -102,7 +105,6 @@ trace->entries[trace->nr_entries++] = ULONG_MAX; return; #else - data.no_sched_functions = 1; frame.fp = thread_saved_fp(tsk); frame.sp = thread_saved_sp(tsk); frame.lr = 0; /* recovered from the stack */ @@ -111,11 +113,12 @@ } else { register unsigned long current_sp asm ("sp"); - data.no_sched_functions = 0; + /* We don't want this function nor the caller */ + data.skip += 2; frame.fp = (unsigned long)__builtin_frame_address(0); frame.sp = current_sp; frame.lr = (unsigned long)__builtin_return_address(0); - frame.pc = (unsigned long)save_stack_trace_tsk; + frame.pc = (unsigned long)__save_stack_trace; } walk_stackframe(&frame, save_trace, &data); @@ -123,9 +126,14 @@ trace->entries[trace->nr_entries++] = ULONG_MAX; } +void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace) +{ + __save_stack_trace(tsk, trace, 1); +} + void save_stack_trace(struct stack_trace *trace) { - save_stack_trace_tsk(current, trace); + __save_stack_trace(current, trace, 0); } EXPORT_SYMBOL_GPL(save_stack_trace); #endif --- linux-3.13.0.orig/arch/arm/kernel/thumbee.c +++ linux-3.13.0/arch/arm/kernel/thumbee.c @@ -45,7 +45,7 @@ switch (cmd) { case THREAD_NOTIFY_FLUSH: - thread->thumbee_state = 0; + teehbr_write(0); break; case THREAD_NOTIFY_SWITCH: current_thread_info()->thumbee_state = teehbr_read(); --- linux-3.13.0.orig/arch/arm/kernel/traps.c +++ linux-3.13.0/arch/arm/kernel/traps.c @@ -510,8 +510,6 @@ return regs->ARM_r0; } -static long do_cache_op_restart(struct restart_block *); - static inline int __do_cache_op(unsigned long start, unsigned long end) { @@ -520,24 +518,8 @@ do { unsigned long chunk = min(PAGE_SIZE, end - start); - if (signal_pending(current)) { - struct thread_info *ti = current_thread_info(); - - ti->restart_block = (struct restart_block) { - .fn = do_cache_op_restart, - }; - - ti->arm_restart_block = (struct arm_restart_block) { - { - .cache = { - .start = start, - .end = end, - }, - }, - }; - - return -ERESTART_RESTARTBLOCK; - } + if (fatal_signal_pending(current)) + return 0; ret = flush_cache_user_range(start, start + chunk); if (ret) @@ -550,15 +532,6 @@ return 0; } -static long do_cache_op_restart(struct restart_block *unused) -{ - struct arm_restart_block *restart_block; - - restart_block = ¤t_thread_info()->arm_restart_block; - return __do_cache_op(restart_block->cache.start, - restart_block->cache.end); -} - static inline int do_cache_op(unsigned long start, unsigned long end, int flags) { @@ -578,7 +551,6 @@ #define NR(x) ((__ARM_NR_##x) - __ARM_NR_BASE) asmlinkage int arm_syscall(int no, struct pt_regs *regs) { - struct thread_info *thread = current_thread_info(); siginfo_t info; if ((no >> 16) != (__ARM_NR_BASE>> 16)) @@ -629,21 +601,7 @@ return regs->ARM_r0; case NR(set_tls): - thread->tp_value[0] = regs->ARM_r0; - if (tls_emu) - return 0; - if (has_tls_reg) { - asm ("mcr p15, 0, %0, c13, c0, 3" - : : "r" (regs->ARM_r0)); - } else { - /* - * User space must never try to access this directly. - * Expect your app to break eventually if you do so. - * The user helper at 0xffff0fe0 must be used instead. - * (see entry-armv.S for details) - */ - *((unsigned int *)0xffff0ff0) = regs->ARM_r0; - } + set_tls(regs->ARM_r0); return 0; #ifdef CONFIG_NEEDS_SYSCALL_FOR_CMPXCHG --- linux-3.13.0.orig/arch/arm/kvm/arm.c +++ linux-3.13.0/arch/arm/kvm/arm.c @@ -193,6 +193,7 @@ case KVM_CAP_DESTROY_MEMORY_REGION_WORKS: case KVM_CAP_ONE_REG: case KVM_CAP_ARM_PSCI: + case KVM_CAP_ARM_PSCI_0_2: r = 1; break; case KVM_CAP_COALESCED_MMIO: @@ -478,15 +479,6 @@ return ret; } - /* - * Handle the "start in power-off" case by calling into the - * PSCI code. - */ - if (test_and_clear_bit(KVM_ARM_VCPU_POWER_OFF, vcpu->arch.features)) { - *vcpu_reg(vcpu, 0) = KVM_PSCI_FN_CPU_OFF; - kvm_psci_call(vcpu); - } - return 0; } @@ -700,6 +692,24 @@ return -EINVAL; } +static int kvm_arch_vcpu_ioctl_vcpu_init(struct kvm_vcpu *vcpu, + struct kvm_vcpu_init *init) +{ + int ret; + + ret = kvm_vcpu_set_target(vcpu, init); + if (ret) + return ret; + + /* + * Handle the "start in power-off" case by marking the VCPU as paused. + */ + if (__test_and_clear_bit(KVM_ARM_VCPU_POWER_OFF, vcpu->arch.features)) + vcpu->arch.pause = true; + + return 0; +} + long kvm_arch_vcpu_ioctl(struct file *filp, unsigned int ioctl, unsigned long arg) { @@ -713,8 +723,7 @@ if (copy_from_user(&init, argp, sizeof(init))) return -EFAULT; - return kvm_vcpu_set_target(vcpu, &init); - + return kvm_arch_vcpu_ioctl_vcpu_init(vcpu, &init); } case KVM_SET_ONE_REG: case KVM_GET_ONE_REG: { --- linux-3.13.0.orig/arch/arm/kvm/handle_exit.c +++ linux-3.13.0/arch/arm/kvm/handle_exit.c @@ -40,14 +40,18 @@ static int handle_hvc(struct kvm_vcpu *vcpu, struct kvm_run *run) { + int ret; + trace_kvm_hvc(*vcpu_pc(vcpu), *vcpu_reg(vcpu, 0), kvm_vcpu_hvc_get_imm(vcpu)); - if (kvm_psci_call(vcpu)) + ret = kvm_psci_call(vcpu); + if (ret < 0) { + kvm_inject_undefined(vcpu); return 1; + } - kvm_inject_undefined(vcpu); - return 1; + return ret; } static int handle_smc(struct kvm_vcpu *vcpu, struct kvm_run *run) @@ -91,6 +95,8 @@ else kvm_vcpu_block(vcpu); + kvm_skip_instr(vcpu, kvm_vcpu_trap_il_is32bit(vcpu)); + return 1; } --- linux-3.13.0.orig/arch/arm/kvm/init.S +++ linux-3.13.0/arch/arm/kvm/init.S @@ -98,6 +98,10 @@ mrc p15, 0, r0, c10, c2, 1 mcr p15, 4, r0, c10, c2, 1 + @ Invalidate the stale TLBs from Bootloader + mcr p15, 4, r0, c8, c7, 0 @ TLBIALLH + dsb ish + @ Set the HSCTLR to: @ - ARM/THUMB exceptions: Kernel config (Thumb-2 kernel) @ - Endianness: Kernel config --- linux-3.13.0.orig/arch/arm/kvm/interrupts.S +++ linux-3.13.0/arch/arm/kvm/interrupts.S @@ -159,13 +159,9 @@ @ Don't trap coprocessor accesses for host kernel set_hstr vmexit set_hdcr vmexit - set_hcptr vmexit, (HCPTR_TTA | HCPTR_TCP(10) | HCPTR_TCP(11)) + set_hcptr vmexit, (HCPTR_TTA | HCPTR_TCP(10) | HCPTR_TCP(11)), after_vfp_restore #ifdef CONFIG_VFPv3 - @ Save floating point registers we if let guest use them. - tst r2, #(HCPTR_TCP(10) | HCPTR_TCP(11)) - bne after_vfp_restore - @ Switch VFP/NEON hardware state to the host's add r7, vcpu, #VCPU_VFP_GUEST store_vfp_state r7 @@ -177,6 +173,8 @@ @ Restore FPEXC_EN which we clobbered on entry pop {r2} VFPFMXR FPEXC, r2 +#else +after_vfp_restore: #endif @ Reset Hyp-role @@ -458,7 +456,7 @@ push {r3-r7} @ NEON/VFP used. Turn on VFP access. - set_hcptr vmexit, (HCPTR_TCP(10) | HCPTR_TCP(11)) + set_hcptr vmtrap, (HCPTR_TCP(10) | HCPTR_TCP(11)) @ Switch VFP/NEON hardware state to the guest's add r7, r0, #VCPU_VFP_HOST --- linux-3.13.0.orig/arch/arm/kvm/interrupts_head.S +++ linux-3.13.0/arch/arm/kvm/interrupts_head.S @@ -494,8 +494,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, r2, r3, c14 @ CNTV_CVAL @@ -508,6 +507,9 @@ mcrr p15, 4, r2, r2, c14 @ CNTVOFF 1: + mov r2, #0 @ Clear ENABLE + mcr p15, 0, r2, c14, c3, 1 @ CNTV_CTL + #endif @ Allow physical timer/counter access for the host mrc p15, 4, r2, c14, c1, 0 @ CNTHCTL @@ -570,8 +572,13 @@ .endm /* Configures the HCPTR (Hyp Coprocessor Trap Register) on entry/return - * (hardware reset value is 0). Keep previous value in r2. */ -.macro set_hcptr operation, mask + * (hardware reset value is 0). Keep previous value in r2. + * An ISB is emited on vmexit/vmtrap, but executed on vmexit only if + * VFP wasn't already enabled (always executed on vmtrap). + * If a label is specified with vmexit, it is branched to if VFP wasn't + * enabled. + */ +.macro set_hcptr operation, mask, label = none mrc p15, 4, r2, c1, c1, 2 ldr r3, =\mask .if \operation == vmentry @@ -580,6 +587,17 @@ bic r3, r2, r3 @ Don't trap defined coproc-accesses .endif mcr p15, 4, r3, c1, c1, 2 + .if \operation != vmentry + .if \operation == vmexit + tst r2, #(HCPTR_TCP(10) | HCPTR_TCP(11)) + beq 1f + .endif + isb + .if \label != none + b \label + .endif +1: + .endif .endm /* Configures the HDCR (Hyp Debug Configuration Register) on entry/return --- linux-3.13.0.orig/arch/arm/kvm/mmu.c +++ linux-3.13.0/arch/arm/kvm/mmu.c @@ -42,6 +42,8 @@ static unsigned long hyp_idmap_end; static phys_addr_t hyp_idmap_vector; +#define pgd_order get_order(PTRS_PER_PGD * sizeof(pgd_t)) + #define kvm_pmd_huge(_x) (pmd_huge(_x) || pmd_trans_huge(_x)) static void kvm_tlb_flush_vmid_ipa(struct kvm *kvm, phys_addr_t ipa) @@ -145,7 +147,7 @@ pgd = pgdp + pgd_index(addr); pud = pud_offset(pgd, addr); if (pud_none(*pud)) { - addr = pud_addr_end(addr, end); + addr = kvm_pud_addr_end(addr, end); continue; } @@ -155,13 +157,13 @@ * move on. */ clear_pud_entry(kvm, pud, addr); - addr = pud_addr_end(addr, end); + addr = kvm_pud_addr_end(addr, end); continue; } pmd = pmd_offset(pud, addr); if (pmd_none(*pmd)) { - addr = pmd_addr_end(addr, end); + addr = kvm_pmd_addr_end(addr, end); continue; } @@ -176,10 +178,10 @@ */ if (kvm_pmd_huge(*pmd) || page_empty(pte)) { clear_pmd_entry(kvm, pmd, addr); - next = pmd_addr_end(addr, end); + next = kvm_pmd_addr_end(addr, end); if (page_empty(pmd) && !page_empty(pud)) { clear_pud_entry(kvm, pud, addr); - next = pud_addr_end(addr, end); + next = kvm_pud_addr_end(addr, end); } } @@ -187,6 +189,99 @@ } } +static void stage2_flush_ptes(struct kvm *kvm, pmd_t *pmd, + phys_addr_t addr, phys_addr_t end) +{ + pte_t *pte; + + pte = pte_offset_kernel(pmd, addr); + do { + if (!pte_none(*pte)) { + hva_t hva = gfn_to_hva(kvm, addr >> PAGE_SHIFT); + kvm_flush_dcache_to_poc((void*)hva, PAGE_SIZE); + } + } while (pte++, addr += PAGE_SIZE, addr != end); +} + +static void stage2_flush_pmds(struct kvm *kvm, pud_t *pud, + phys_addr_t addr, phys_addr_t end) +{ + pmd_t *pmd; + phys_addr_t next; + + pmd = pmd_offset(pud, addr); + do { + next = kvm_pmd_addr_end(addr, end); + if (!pmd_none(*pmd)) { + if (kvm_pmd_huge(*pmd)) { + hva_t hva = gfn_to_hva(kvm, addr >> PAGE_SHIFT); + kvm_flush_dcache_to_poc((void*)hva, PMD_SIZE); + } else { + stage2_flush_ptes(kvm, pmd, addr, next); + } + } + } while (pmd++, addr = next, addr != end); +} + +static void stage2_flush_puds(struct kvm *kvm, pgd_t *pgd, + phys_addr_t addr, phys_addr_t end) +{ + pud_t *pud; + phys_addr_t next; + + pud = pud_offset(pgd, addr); + do { + next = kvm_pud_addr_end(addr, end); + if (!pud_none(*pud)) { + if (pud_huge(*pud)) { + hva_t hva = gfn_to_hva(kvm, addr >> PAGE_SHIFT); + kvm_flush_dcache_to_poc((void*)hva, PUD_SIZE); + } else { + stage2_flush_pmds(kvm, pud, addr, next); + } + } + } while (pud++, addr = next, addr != end); +} + +static void stage2_flush_memslot(struct kvm *kvm, + struct kvm_memory_slot *memslot) +{ + phys_addr_t addr = memslot->base_gfn << PAGE_SHIFT; + phys_addr_t end = addr + PAGE_SIZE * memslot->npages; + phys_addr_t next; + pgd_t *pgd; + + pgd = kvm->arch.pgd + pgd_index(addr); + do { + next = kvm_pgd_addr_end(addr, end); + stage2_flush_puds(kvm, pgd, addr, next); + } while (pgd++, addr = next, addr != end); +} + +/** + * stage2_flush_vm - Invalidate cache for pages mapped in stage 2 + * @kvm: The struct kvm pointer + * + * Go through the stage 2 page tables and invalidate any cache lines + * backing memory already mapped to the VM. + */ +void stage2_flush_vm(struct kvm *kvm) +{ + struct kvm_memslots *slots; + struct kvm_memory_slot *memslot; + int idx; + + idx = srcu_read_lock(&kvm->srcu); + spin_lock(&kvm->mmu_lock); + + slots = kvm_memslots(kvm); + kvm_for_each_memslot(memslot, slots) + stage2_flush_memslot(kvm, memslot); + + spin_unlock(&kvm->mmu_lock); + srcu_read_unlock(&kvm->srcu, idx); +} + /** * free_boot_hyp_pgd - free HYP boot page tables * @@ -199,14 +294,14 @@ if (boot_hyp_pgd) { unmap_range(NULL, boot_hyp_pgd, hyp_idmap_start, PAGE_SIZE); unmap_range(NULL, boot_hyp_pgd, TRAMPOLINE_VA, PAGE_SIZE); - kfree(boot_hyp_pgd); + free_pages((unsigned long)boot_hyp_pgd, pgd_order); boot_hyp_pgd = NULL; } if (hyp_pgd) unmap_range(NULL, hyp_pgd, TRAMPOLINE_VA, PAGE_SIZE); - kfree(init_bounce_page); + free_page((unsigned long)init_bounce_page); init_bounce_page = NULL; mutex_unlock(&kvm_hyp_pgd_mutex); @@ -236,7 +331,7 @@ for (addr = VMALLOC_START; is_vmalloc_addr((void*)addr); addr += PGDIR_SIZE) unmap_range(NULL, hyp_pgd, KERN_TO_HYP(addr), PGDIR_SIZE); - kfree(hyp_pgd); + free_pages((unsigned long)hyp_pgd, pgd_order); hyp_pgd = NULL; } @@ -713,7 +808,7 @@ kvm_set_s2pmd_writable(&new_pmd); kvm_set_pfn_dirty(pfn); } - coherent_icache_guest_page(kvm, hva & PMD_MASK, PMD_SIZE); + coherent_cache_guest_page(vcpu, hva & PMD_MASK, PMD_SIZE); ret = stage2_set_pmd_huge(kvm, memcache, fault_ipa, &new_pmd); } else { pte_t new_pte = pfn_pte(pfn, PAGE_S2); @@ -721,7 +816,7 @@ kvm_set_s2pte_writable(&new_pte); kvm_set_pfn_dirty(pfn); } - coherent_icache_guest_page(kvm, hva, PAGE_SIZE); + coherent_cache_guest_page(vcpu, hva, PAGE_SIZE); ret = stage2_set_pte(kvm, memcache, fault_ipa, &new_pte, false); } @@ -928,7 +1023,7 @@ size_t len = __hyp_idmap_text_end - __hyp_idmap_text_start; phys_addr_t phys_base; - init_bounce_page = kmalloc(PAGE_SIZE, GFP_KERNEL); + init_bounce_page = (void *)__get_free_page(GFP_KERNEL); if (!init_bounce_page) { kvm_err("Couldn't allocate HYP init bounce page\n"); err = -ENOMEM; @@ -954,8 +1049,9 @@ (unsigned long)phys_base); } - hyp_pgd = kzalloc(PTRS_PER_PGD * sizeof(pgd_t), GFP_KERNEL); - boot_hyp_pgd = kzalloc(PTRS_PER_PGD * sizeof(pgd_t), GFP_KERNEL); + hyp_pgd = (pgd_t *)__get_free_pages(GFP_KERNEL | __GFP_ZERO, pgd_order); + boot_hyp_pgd = (pgd_t *)__get_free_pages(GFP_KERNEL | __GFP_ZERO, pgd_order); + if (!hyp_pgd || !boot_hyp_pgd) { kvm_err("Hyp mode PGD not allocated\n"); err = -ENOMEM; --- linux-3.13.0.orig/arch/arm/kvm/psci.c +++ linux-3.13.0/arch/arm/kvm/psci.c @@ -27,6 +27,36 @@ * as described in ARM document number ARM DEN 0022A. */ +#define AFFINITY_MASK(level) ~((0x1UL << ((level) * MPIDR_LEVEL_BITS)) - 1) + +static unsigned long psci_affinity_mask(unsigned long affinity_level) +{ + if (affinity_level <= 3) + return MPIDR_HWID_BITMASK & AFFINITY_MASK(affinity_level); + + return 0; +} + +static unsigned long kvm_psci_vcpu_suspend(struct kvm_vcpu *vcpu) +{ + /* + * NOTE: For simplicity, we make VCPU suspend emulation to be + * same-as WFI (Wait-for-interrupt) emulation. + * + * This means for KVM the wakeup events are interrupts and + * this is consistent with intended use of StateID as described + * in section 5.4.1 of PSCI v0.2 specification (ARM DEN 0022A). + * + * Further, we also treat power-down request to be same as + * stand-by request as-per section 5.4.2 clause 3 of PSCI v0.2 + * specification (ARM DEN 0022A). This means all suspend states + * for KVM will preserve the register state. + */ + kvm_vcpu_block(vcpu); + + return PSCI_RET_SUCCESS; +} + static void kvm_psci_vcpu_off(struct kvm_vcpu *vcpu) { vcpu->arch.pause = true; @@ -38,6 +68,7 @@ struct kvm_vcpu *vcpu = NULL, *tmp; wait_queue_head_t *wq; unsigned long cpu_id; + unsigned long context_id; unsigned long mpidr; phys_addr_t target_pc; int i; @@ -54,14 +85,21 @@ } } + /* + * Make sure the caller requested a valid CPU and that the CPU is + * turned off. + */ if (!vcpu) - return KVM_PSCI_RET_INVAL; + return PSCI_RET_INVALID_PARAMS; + if (!vcpu->arch.pause) { + if (kvm_psci_version(source_vcpu) != KVM_ARM_PSCI_0_1) + return PSCI_RET_ALREADY_ON; + else + return PSCI_RET_INVALID_PARAMS; + } target_pc = *vcpu_reg(source_vcpu, 2); - - wq = kvm_arch_vcpu_wq(vcpu); - if (!waitqueue_active(wq)) - return KVM_PSCI_RET_INVAL; + context_id = *vcpu_reg(source_vcpu, 3); kvm_reset_vcpu(vcpu); @@ -76,25 +114,160 @@ kvm_vcpu_set_be(vcpu); *vcpu_pc(vcpu) = target_pc; + /* + * NOTE: We always update r0 (or x0) because for PSCI v0.1 + * the general puspose registers are undefined upon CPU_ON. + */ + *vcpu_reg(vcpu, 0) = context_id; vcpu->arch.pause = false; smp_mb(); /* Make sure the above is visible */ + wq = kvm_arch_vcpu_wq(vcpu); wake_up_interruptible(wq); - return KVM_PSCI_RET_SUCCESS; + return PSCI_RET_SUCCESS; } -/** - * kvm_psci_call - handle PSCI call if r0 value is in range - * @vcpu: Pointer to the VCPU struct - * - * Handle PSCI calls from guests through traps from HVC instructions. - * The calling convention is similar to SMC calls to the secure world where - * the function number is placed in r0 and this function returns true if the - * function number specified in r0 is withing the PSCI range, and false - * otherwise. - */ -bool kvm_psci_call(struct kvm_vcpu *vcpu) +static unsigned long kvm_psci_vcpu_affinity_info(struct kvm_vcpu *vcpu) +{ + int i; + unsigned long mpidr; + unsigned long target_affinity; + unsigned long target_affinity_mask; + unsigned long lowest_affinity_level; + struct kvm *kvm = vcpu->kvm; + struct kvm_vcpu *tmp; + + target_affinity = *vcpu_reg(vcpu, 1); + lowest_affinity_level = *vcpu_reg(vcpu, 2); + + /* Determine target affinity mask */ + target_affinity_mask = psci_affinity_mask(lowest_affinity_level); + if (!target_affinity_mask) + return PSCI_RET_INVALID_PARAMS; + + /* Ignore other bits of target affinity */ + target_affinity &= target_affinity_mask; + + /* + * If one or more VCPU matching target affinity are running + * then ON else OFF + */ + kvm_for_each_vcpu(i, tmp, kvm) { + mpidr = kvm_vcpu_get_mpidr(tmp); + if (((mpidr & target_affinity_mask) == target_affinity) && + !tmp->arch.pause) { + return PSCI_0_2_AFFINITY_LEVEL_ON; + } + } + + return PSCI_0_2_AFFINITY_LEVEL_OFF; +} + +static void kvm_prepare_system_event(struct kvm_vcpu *vcpu, u32 type) +{ + memset(&vcpu->run->system_event, 0, sizeof(vcpu->run->system_event)); + vcpu->run->system_event.type = type; + vcpu->run->exit_reason = KVM_EXIT_SYSTEM_EVENT; +} + +static void kvm_psci_system_off(struct kvm_vcpu *vcpu) +{ + kvm_prepare_system_event(vcpu, KVM_SYSTEM_EVENT_SHUTDOWN); +} + +static void kvm_psci_system_reset(struct kvm_vcpu *vcpu) +{ + kvm_prepare_system_event(vcpu, KVM_SYSTEM_EVENT_RESET); +} + +int kvm_psci_version(struct kvm_vcpu *vcpu) +{ + if (test_bit(KVM_ARM_VCPU_PSCI_0_2, vcpu->arch.features)) + return KVM_ARM_PSCI_0_2; + + return KVM_ARM_PSCI_0_1; +} + +static int kvm_psci_0_2_call(struct kvm_vcpu *vcpu) +{ + int ret = 1; + unsigned long psci_fn = *vcpu_reg(vcpu, 0) & ~((u32) 0); + unsigned long val; + + switch (psci_fn) { + case PSCI_0_2_FN_PSCI_VERSION: + /* + * Bits[31:16] = Major Version = 0 + * Bits[15:0] = Minor Version = 2 + */ + val = 2; + break; + case PSCI_0_2_FN_CPU_SUSPEND: + case PSCI_0_2_FN64_CPU_SUSPEND: + val = kvm_psci_vcpu_suspend(vcpu); + break; + case PSCI_0_2_FN_CPU_OFF: + kvm_psci_vcpu_off(vcpu); + val = PSCI_RET_SUCCESS; + break; + case PSCI_0_2_FN_CPU_ON: + case PSCI_0_2_FN64_CPU_ON: + val = kvm_psci_vcpu_on(vcpu); + break; + case PSCI_0_2_FN_AFFINITY_INFO: + case PSCI_0_2_FN64_AFFINITY_INFO: + val = kvm_psci_vcpu_affinity_info(vcpu); + break; + case PSCI_0_2_FN_MIGRATE: + case PSCI_0_2_FN64_MIGRATE: + val = PSCI_RET_NOT_SUPPORTED; + break; + case PSCI_0_2_FN_MIGRATE_INFO_TYPE: + /* + * Trusted OS is MP hence does not require migration + * or + * Trusted OS is not present + */ + val = PSCI_0_2_TOS_MP; + break; + case PSCI_0_2_FN_MIGRATE_INFO_UP_CPU: + case PSCI_0_2_FN64_MIGRATE_INFO_UP_CPU: + val = PSCI_RET_NOT_SUPPORTED; + break; + case PSCI_0_2_FN_SYSTEM_OFF: + kvm_psci_system_off(vcpu); + /* + * We should'nt be going back to guest VCPU after + * receiving SYSTEM_OFF request. + * + * If user space accidently/deliberately resumes + * guest VCPU after SYSTEM_OFF request then guest + * VCPU should see internal failure from PSCI return + * value. To achieve this, we preload r0 (or x0) with + * PSCI return value INTERNAL_FAILURE. + */ + val = PSCI_RET_INTERNAL_FAILURE; + ret = 0; + break; + case PSCI_0_2_FN_SYSTEM_RESET: + kvm_psci_system_reset(vcpu); + /* + * Same reason as SYSTEM_OFF for preloading r0 (or x0) + * with PSCI return value INTERNAL_FAILURE. + */ + val = PSCI_RET_INTERNAL_FAILURE; + ret = 0; + break; + default: + return -EINVAL; + } + + *vcpu_reg(vcpu, 0) = val; + return ret; +} + +static int kvm_psci_0_1_call(struct kvm_vcpu *vcpu) { unsigned long psci_fn = *vcpu_reg(vcpu, 0) & ~((u32) 0); unsigned long val; @@ -102,20 +275,45 @@ switch (psci_fn) { case KVM_PSCI_FN_CPU_OFF: kvm_psci_vcpu_off(vcpu); - val = KVM_PSCI_RET_SUCCESS; + val = PSCI_RET_SUCCESS; break; case KVM_PSCI_FN_CPU_ON: val = kvm_psci_vcpu_on(vcpu); break; case KVM_PSCI_FN_CPU_SUSPEND: case KVM_PSCI_FN_MIGRATE: - val = KVM_PSCI_RET_NI; + val = PSCI_RET_NOT_SUPPORTED; break; - default: - return false; + return -EINVAL; } *vcpu_reg(vcpu, 0) = val; - return true; + return 1; +} + +/** + * kvm_psci_call - handle PSCI call if r0 value is in range + * @vcpu: Pointer to the VCPU struct + * + * Handle PSCI calls from guests through traps from HVC instructions. + * The calling convention is similar to SMC calls to the secure world + * where the function number is placed in r0. + * + * This function returns: > 0 (success), 0 (success but exit to user + * space), and < 0 (errors) + * + * Errors: + * -EINVAL: Unrecognized PSCI function + */ +int kvm_psci_call(struct kvm_vcpu *vcpu) +{ + switch (kvm_psci_version(vcpu)) { + case KVM_ARM_PSCI_0_2: + return kvm_psci_0_2_call(vcpu); + case KVM_ARM_PSCI_0_1: + return kvm_psci_0_1_call(vcpu); + default: + return -EINVAL; + }; } --- linux-3.13.0.orig/arch/arm/mach-at91/clock.c +++ linux-3.13.0/arch/arm/mach-at91/clock.c @@ -963,6 +963,7 @@ } at91_pmc_write(AT91_PMC_SCDR, scdr); + at91_pmc_write(AT91_PMC_PCDR, pcdr); if (cpu_is_sama5d3()) at91_pmc_write(AT91_PMC_PCDR1, pcdr1); --- linux-3.13.0.orig/arch/arm/mach-at91/pm.h +++ linux-3.13.0/arch/arm/mach-at91/pm.h @@ -45,7 +45,7 @@ " mcr p15, 0, %0, c7, c0, 4\n\t" " str %5, [%1, %2]" : - : "r" (0), "r" (AT91_BASE_SYS), "r" (AT91RM9200_SDRAMC_LPR), + : "r" (0), "r" (at91_ramc_base[0]), "r" (AT91RM9200_SDRAMC_LPR), "r" (1), "r" (AT91RM9200_SDRAMC_SRR), "r" (lpr)); } --- linux-3.13.0.orig/arch/arm/mach-at91/sam9_smc.c +++ linux-3.13.0/arch/arm/mach-at91/sam9_smc.c @@ -101,7 +101,7 @@ /* Pulse register */ val = __raw_readl(base + AT91_SMC_PULSE); - config->nwe_setup = val & AT91_SMC_NWEPULSE; + config->nwe_pulse = val & AT91_SMC_NWEPULSE; config->ncs_write_pulse = (val & AT91_SMC_NCS_WRPULSE) >> 8; config->nrd_pulse = (val & AT91_SMC_NRDPULSE) >> 16; config->ncs_read_pulse = (val & AT91_SMC_NCS_RDPULSE) >> 24; --- linux-3.13.0.orig/arch/arm/mach-highbank/Makefile +++ linux-3.13.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-3.13.0.orig/arch/arm/mach-imx/Makefile +++ linux-3.13.0/arch/arm/mach-imx/Makefile @@ -100,11 +100,9 @@ obj-$(CONFIG_SOC_IMX6Q) += clk-imx6q.o mach-imx6q.o obj-$(CONFIG_SOC_IMX6SL) += clk-imx6sl.o mach-imx6sl.o -ifeq ($(CONFIG_PM),y) obj-$(CONFIG_SOC_IMX6Q) += pm-imx6q.o headsmp.o # i.MX6SL reuses i.MX6Q code obj-$(CONFIG_SOC_IMX6SL) += pm-imx6q.o headsmp.o -endif # i.MX5 based machines obj-$(CONFIG_MACH_MX51_BABBAGE) += mach-mx51_babbage.o --- linux-3.13.0.orig/arch/arm/mach-imx/clk-imx6q.c +++ linux-3.13.0/arch/arm/mach-imx/clk-imx6q.c @@ -161,7 +161,7 @@ post_div_table[1].div = 1; post_div_table[2].div = 1; video_div_table[1].div = 1; - video_div_table[2].div = 1; + video_div_table[3].div = 1; }; /* type name parent_name base div_mask */ @@ -479,6 +479,9 @@ if (IS_ENABLED(CONFIG_PCI_IMX6)) clk_set_parent(clk[lvds1_sel], clk[sata_ref]); + /* Set initial power mode */ + imx6q_set_lpm(WAIT_CLOCKED); + np = of_find_compatible_node(NULL, NULL, "fsl,imx6q-gpt"); base = of_iomap(np, 0); WARN_ON(!base); --- linux-3.13.0.orig/arch/arm/mach-imx/clk-imx6sl.c +++ linux-3.13.0/arch/arm/mach-imx/clk-imx6sl.c @@ -261,6 +261,9 @@ clk_prepare_enable(clks[IMX6SL_CLK_USBPHY2_GATE]); } + /* Set initial power mode */ + imx6q_set_lpm(WAIT_CLOCKED); + np = of_find_compatible_node(NULL, NULL, "fsl,imx6sl-gpt"); base = of_iomap(np, 0); WARN_ON(!base); --- linux-3.13.0.orig/arch/arm/mach-imx/common.h +++ linux-3.13.0/arch/arm/mach-imx/common.h @@ -143,13 +143,11 @@ void imx_cpu_die(unsigned int cpu); int imx_cpu_kill(unsigned int cpu); -#ifdef CONFIG_PM void imx6q_pm_init(void); void imx6q_pm_set_ccm_base(void __iomem *base); +#ifdef CONFIG_PM void imx5_pm_init(void); #else -static inline void imx6q_pm_init(void) {} -static inline void imx6q_pm_set_ccm_base(void __iomem *base) {} static inline void imx5_pm_init(void) {} #endif --- linux-3.13.0.orig/arch/arm/mach-imx/devices/platform-ipu-core.c +++ linux-3.13.0/arch/arm/mach-imx/devices/platform-ipu-core.c @@ -77,7 +77,7 @@ pdev = platform_device_alloc("mx3-camera", 0); if (!pdev) - goto err; + return ERR_PTR(-ENOMEM); pdev->dev.dma_mask = kmalloc(sizeof(*pdev->dev.dma_mask), GFP_KERNEL); if (!pdev->dev.dma_mask) --- linux-3.13.0.orig/arch/arm/mach-imx/pm-imx6q.c +++ linux-3.13.0/arch/arm/mach-imx/pm-imx6q.c @@ -228,8 +228,6 @@ regmap_update_bits(gpr, IOMUXC_GPR1, IMX6Q_GPR1_GINT, IMX6Q_GPR1_GINT); - /* Set initial power mode */ - imx6q_set_lpm(WAIT_CLOCKED); suspend_set_ops(&imx6q_pm_ops); } --- linux-3.13.0.orig/arch/arm/mach-mvebu/Makefile +++ linux-3.13.0/arch/arm/mach-mvebu/Makefile @@ -3,7 +3,7 @@ AFLAGS_coherency_ll.o := -Wa,-march=armv7-a -obj-y += system-controller.o +obj-y += system-controller.o mvebu-soc-id.o obj-$(CONFIG_MACH_ARMADA_370_XP) += armada-370-xp.o obj-$(CONFIG_ARCH_MVEBU) += coherency.o coherency_ll.o pmsu.o obj-$(CONFIG_SMP) += platsmp.o headsmp.o --- linux-3.13.0.orig/arch/arm/mach-mvebu/armada-370-xp.c +++ linux-3.13.0/arch/arm/mach-mvebu/armada-370-xp.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -28,6 +29,7 @@ #include "armada-370-xp.h" #include "common.h" #include "coherency.h" +#include "mvebu-soc-id.h" static void __init armada_370_xp_map_io(void) { @@ -45,8 +47,38 @@ #endif } +static void __init i2c_quirk(void) +{ + struct device_node *np; + u32 dev, rev; + + /* + * Only revisons more recent than A0 support the offload + * mechanism. We can exit only if we are sure that we can + * get the SoC revision and it is more recent than A0. + */ + if (mvebu_get_soc_id(&rev, &dev) == 0 && dev > MV78XX0_A0_REV) + return; + + for_each_compatible_node(np, NULL, "marvell,mv78230-i2c") { + struct property *new_compat; + + new_compat = kzalloc(sizeof(*new_compat), GFP_KERNEL); + + new_compat->name = kstrdup("compatible", GFP_KERNEL); + new_compat->length = sizeof("marvell,mv78230-a0-i2c"); + new_compat->value = kstrdup("marvell,mv78230-a0-i2c", + GFP_KERNEL); + + of_update_property(np, new_compat); + } + return; +} + static void __init armada_370_xp_dt_init(void) { + if (of_machine_is_compatible("plathome,openblocks-ax3-4")) + i2c_quirk(); of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); } --- linux-3.13.0.orig/arch/arm/mach-mvebu/mvebu-soc-id.c +++ linux-3.13.0/arch/arm/mach-mvebu/mvebu-soc-id.c @@ -0,0 +1,119 @@ +/* + * ID and revision information for mvebu SoCs + * + * Copyright (C) 2014 Marvell + * + * Gregory CLEMENT + * + * 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. + * + * All the mvebu SoCs have information related to their variant and + * revision that can be read from the PCI control register. This is + * done before the PCI initialization to avoid any conflict. Once the + * ID and revision are retrieved, the mapping is freed. + */ + +#define pr_fmt(fmt) "mvebu-soc-id: " fmt + +#include +#include +#include +#include +#include +#include +#include "mvebu-soc-id.h" + +#define PCIE_DEV_ID_OFF 0x0 +#define PCIE_DEV_REV_OFF 0x8 + +#define SOC_ID_MASK 0xFFFF0000 +#define SOC_REV_MASK 0xFF + +static u32 soc_dev_id; +static u32 soc_rev; +static bool is_id_valid; + +static const struct of_device_id mvebu_pcie_of_match_table[] = { + { .compatible = "marvell,armada-xp-pcie", }, + { .compatible = "marvell,armada-370-pcie", }, + {}, +}; + +int mvebu_get_soc_id(u32 *dev, u32 *rev) +{ + if (is_id_valid) { + *dev = soc_dev_id; + *rev = soc_rev; + return 0; + } else + return -1; +} + +static int __init mvebu_soc_id_init(void) +{ + struct device_node *np; + int ret = 0; + void __iomem *pci_base; + struct clk *clk; + struct device_node *child; + + np = of_find_matching_node(NULL, mvebu_pcie_of_match_table); + if (!np) + return ret; + + /* + * ID and revision are available from any port, so we + * just pick the first one + */ + child = of_get_next_child(np, NULL); + if (child == NULL) { + pr_err("cannot get pci node\n"); + ret = -ENOMEM; + goto clk_err; + } + + clk = of_clk_get_by_name(child, NULL); + if (IS_ERR(clk)) { + pr_err("cannot get clock\n"); + ret = -ENOMEM; + goto clk_err; + } + + ret = clk_prepare_enable(clk); + if (ret) { + pr_err("cannot enable clock\n"); + goto clk_err; + } + + pci_base = of_iomap(child, 0); + if (pci_base == NULL) { + pr_err("cannot map registers\n"); + ret = -ENOMEM; + goto res_ioremap; + } + + /* SoC ID */ + soc_dev_id = readl(pci_base + PCIE_DEV_ID_OFF) >> 16; + + /* SoC revision */ + soc_rev = readl(pci_base + PCIE_DEV_REV_OFF) & SOC_REV_MASK; + + is_id_valid = true; + + pr_info("MVEBU SoC ID=0x%X, Rev=0x%X\n", soc_dev_id, soc_rev); + + iounmap(pci_base); + +res_ioremap: + clk_disable_unprepare(clk); + +clk_err: + of_node_put(child); + of_node_put(np); + + return ret; +} +core_initcall(mvebu_soc_id_init); + --- linux-3.13.0.orig/arch/arm/mach-mvebu/mvebu-soc-id.h +++ linux-3.13.0/arch/arm/mach-mvebu/mvebu-soc-id.h @@ -0,0 +1,32 @@ +/* + * Marvell EBU SoC ID and revision definitions. + * + * Copyright (C) 2014 Marvell Semiconductor + * + * 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 __LINUX_MVEBU_SOC_ID_H +#define __LINUX_MVEBU_SOC_ID_H + +/* Armada XP ID */ +#define MV78230_DEV_ID 0x7823 +#define MV78260_DEV_ID 0x7826 +#define MV78460_DEV_ID 0x7846 + +/* Armada XP Revision */ +#define MV78XX0_A0_REV 0x1 +#define MV78XX0_B0_REV 0x2 + +#ifdef CONFIG_ARCH_MVEBU +int mvebu_get_soc_id(u32 *dev, u32 *rev); +#else +static inline int mvebu_get_soc_id(u32 *dev, u32 *rev) +{ + return -1; +} +#endif + +#endif /* __LINUX_MVEBU_SOC_ID_H */ --- linux-3.13.0.orig/arch/arm/mach-omap2/board-flash.c +++ linux-3.13.0/arch/arm/mach-omap2/board-flash.c @@ -142,7 +142,7 @@ board_nand_data.nr_parts = nr_parts; board_nand_data.devsize = nand_type; - board_nand_data.ecc_opt = OMAP_ECC_BCH8_CODE_HW; + board_nand_data.ecc_opt = OMAP_ECC_HAM1_CODE_HW; gpmc_nand_init(&board_nand_data, gpmc_t); } #endif /* CONFIG_MTD_NAND_OMAP2 || CONFIG_MTD_NAND_OMAP2_MODULE */ --- linux-3.13.0.orig/arch/arm/mach-omap2/cclock3xxx_data.c +++ linux-3.13.0/arch/arm/mach-omap2/cclock3xxx_data.c @@ -454,7 +454,8 @@ .clkdm_name = "dpll4_clkdm", }; -DEFINE_STRUCT_CLK(dpll4_m5x2_ck, dpll4_m5x2_ck_parent_names, dpll4_m5x2_ck_ops); +DEFINE_STRUCT_CLK_FLAGS(dpll4_m5x2_ck, dpll4_m5x2_ck_parent_names, + dpll4_m5x2_ck_ops, CLK_SET_RATE_PARENT); static struct clk dpll4_m5x2_ck_3630 = { .name = "dpll4_m5x2_ck", --- linux-3.13.0.orig/arch/arm/mach-omap2/clockdomains7xx_data.c +++ linux-3.13.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-3.13.0.orig/arch/arm/mach-omap2/common.h +++ linux-3.13.0/arch/arm/mach-omap2/common.h @@ -236,6 +236,7 @@ extern void __init gic_init_irq(void); extern void gic_dist_disable(void); +extern void gic_dist_enable(void); extern bool gic_dist_disabled(void); extern void gic_timer_retrigger(void); extern void omap_smc1(u32 fn, u32 arg); --- linux-3.13.0.orig/arch/arm/mach-omap2/control.c +++ linux-3.13.0/arch/arm/mach-omap2/control.c @@ -314,7 +314,8 @@ scratchpad_contents.public_restore_ptr = virt_to_phys(omap3_restore_3630); else if (omap_rev() != OMAP3430_REV_ES3_0 && - omap_rev() != OMAP3430_REV_ES3_1) + omap_rev() != OMAP3430_REV_ES3_1 && + omap_rev() != OMAP3430_REV_ES3_1_2) scratchpad_contents.public_restore_ptr = virt_to_phys(omap3_restore); else --- linux-3.13.0.orig/arch/arm/mach-omap2/cpuidle34xx.c +++ linux-3.13.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 { @@ -322,6 +323,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 */ /** @@ -340,5 +404,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-3.13.0.orig/arch/arm/mach-omap2/cpuidle44xx.c +++ linux-3.13.0/arch/arm/mach-omap2/cpuidle44xx.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include @@ -80,6 +81,8 @@ int index) { struct idle_statedata *cx = state_ptr + index; + int cpu_id = smp_processor_id(); + u32 mpuss_can_lose_context = 0; /* * CPU0 has to wait and stay ON until CPU1 is OFF state. @@ -104,6 +107,11 @@ } } + mpuss_can_lose_context = (cx->mpu_state == PWRDM_POWER_RET) && + (cx->mpu_logic_state == PWRDM_POWER_OFF); + + clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_ENTER, &cpu_id); + /* * Call idle CPU PM enter notifier chain so that * VFP and per CPU interrupt context is saved. @@ -118,9 +126,8 @@ * Call idle CPU cluster PM enter notifier chain * to save GIC and wakeupgen context. */ - if ((cx->mpu_state == PWRDM_POWER_RET) && - (cx->mpu_logic_state == PWRDM_POWER_OFF)) - cpu_cluster_pm_enter(); + if (mpuss_can_lose_context) + cpu_cluster_pm_enter(); } omap4_enter_lowpower(dev->cpu, cx->cpu_state); @@ -128,9 +135,23 @@ /* Wakeup CPU1 only if it is not offlined */ if (dev->cpu == 0 && cpumask_test_cpu(1, cpu_online_mask)) { + + if (IS_PM44XX_ERRATUM(PM_OMAP4_ROM_SMP_BOOT_ERRATUM_GICD) && + mpuss_can_lose_context) + gic_dist_disable(); + clkdm_wakeup(cpu_clkdm[1]); omap_set_pwrdm_state(cpu_pd[1], PWRDM_POWER_ON); clkdm_allow_idle(cpu_clkdm[1]); + + if (IS_PM44XX_ERRATUM(PM_OMAP4_ROM_SMP_BOOT_ERRATUM_GICD) && + mpuss_can_lose_context) { + while (gic_dist_disabled()) { + udelay(1); + cpu_relax(); + } + gic_timer_retrigger(); + } } /* @@ -143,10 +164,11 @@ * Call idle CPU cluster PM exit notifier chain * to restore GIC and wakeupgen context. */ - if (dev->cpu == 0 && (cx->mpu_state == PWRDM_POWER_RET) && - (cx->mpu_logic_state == PWRDM_POWER_OFF)) + if (dev->cpu == 0 && mpuss_can_lose_context) cpu_cluster_pm_exit(); + clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_EXIT, &cpu_id); + fail: cpuidle_coupled_parallel_barrier(dev, &abort_barrier); cpu_done[dev->cpu] = false; @@ -154,6 +176,16 @@ return index; } +/* + * For each cpu, setup the broadcast timer because local timers + * stops for the states above C1. + */ +static void omap_setup_broadcast_timer(void *arg) +{ + int cpu = smp_processor_id(); + clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_ON, &cpu); +} + static struct cpuidle_driver omap4_idle_driver = { .name = "omap4_idle", .owner = THIS_MODULE, @@ -171,8 +203,7 @@ /* C2 - CPU0 OFF + CPU1 OFF + MPU CSWR */ .exit_latency = 328 + 440, .target_residency = 960, - .flags = CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_COUPLED | - CPUIDLE_FLAG_TIMER_STOP, + .flags = CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_COUPLED, .enter = omap_enter_idle_coupled, .name = "C2", .desc = "CPUx OFF, MPUSS CSWR", @@ -181,8 +212,7 @@ /* C3 - CPU0 OFF + CPU1 OFF + MPU OSWR */ .exit_latency = 460 + 518, .target_residency = 1100, - .flags = CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_COUPLED | - CPUIDLE_FLAG_TIMER_STOP, + .flags = CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_COUPLED, .enter = omap_enter_idle_coupled, .name = "C3", .desc = "CPUx OFF, MPUSS OSWR", @@ -213,5 +243,8 @@ if (!cpu_clkdm[0] || !cpu_clkdm[1]) return -ENODEV; + /* Configure the broadcast timer on each cpu */ + on_each_cpu(omap_setup_broadcast_timer, NULL, 1); + return cpuidle_register(&omap4_idle_driver, cpu_online_mask); } --- linux-3.13.0.orig/arch/arm/mach-omap2/gpmc.c +++ linux-3.13.0/arch/arm/mach-omap2/gpmc.c @@ -1339,7 +1339,7 @@ of_property_read_bool(np, "gpmc,time-para-granularity"); } -#ifdef CONFIG_MTD_NAND +#if IS_ENABLED(CONFIG_MTD_NAND) static const char * const nand_xfer_types[] = { [NAND_OMAP_PREFETCH_POLLED] = "prefetch-polled", @@ -1429,7 +1429,7 @@ } #endif -#ifdef CONFIG_MTD_ONENAND +#if IS_ENABLED(CONFIG_MTD_ONENAND) static int gpmc_probe_onenand_child(struct platform_device *pdev, struct device_node *child) { --- linux-3.13.0.orig/arch/arm/mach-omap2/irq.c +++ linux-3.13.0/arch/arm/mach-omap2/irq.c @@ -222,6 +222,7 @@ static inline void omap_intc_handle_irq(void __iomem *base_addr, struct pt_regs *regs) { u32 irqnr; + int handled_irq = 0; do { irqnr = readl_relaxed(base_addr + 0x98); @@ -249,8 +250,15 @@ if (irqnr) { irqnr = irq_find_mapping(domain, irqnr); handle_IRQ(irqnr, regs); + handled_irq = 1; } } while (irqnr); + + /* If an irq is masked or deasserted while active, we will + * keep ending up here with no irq handled. So remove it from + * the INTC with an ack.*/ + if (!handled_irq) + omap_ack_irq(NULL); } asmlinkage void __exception_irq_entry omap2_intc_handle_irq(struct pt_regs *regs) --- linux-3.13.0.orig/arch/arm/mach-omap2/mux.c +++ linux-3.13.0/arch/arm/mach-omap2/mux.c @@ -183,8 +183,10 @@ m0_entry = mux->muxnames[0]; /* First check for full name in mode0.muxmode format */ - if (mode0_len && strncmp(muxname, m0_entry, mode0_len)) - continue; + if (mode0_len) + if (strncmp(muxname, m0_entry, mode0_len) || + (strlen(m0_entry) != mode0_len)) + continue; /* Then check for muxmode only */ for (i = 0; i < OMAP_MUX_NR_MODES; i++) { --- linux-3.13.0.orig/arch/arm/mach-omap2/omap-mpuss-lowpower.c +++ linux-3.13.0/arch/arm/mach-omap2/omap-mpuss-lowpower.c @@ -271,6 +271,9 @@ else omap_pm_ops.finish_suspend(save_state); + if (IS_PM44XX_ERRATUM(PM_OMAP4_ROM_SMP_BOOT_ERRATUM_GICD) && cpu) + gic_dist_enable(); + /* * Restore the CPUx power state to ON otherwise CPUx * power domain can transitions to programmed low power --- linux-3.13.0.orig/arch/arm/mach-omap2/omap4-common.c +++ linux-3.13.0/arch/arm/mach-omap2/omap4-common.c @@ -127,6 +127,12 @@ __raw_writel(0x0, gic_dist_base_addr + GIC_DIST_CTRL); } +void gic_dist_enable(void) +{ + if (gic_dist_base_addr) + __raw_writel(0x1, gic_dist_base_addr + GIC_DIST_CTRL); +} + bool gic_dist_disabled(void) { return !(__raw_readl(gic_dist_base_addr + GIC_DIST_CTRL) & 0x1); --- linux-3.13.0.orig/arch/arm/mach-omap2/omap_hwmod.c +++ linux-3.13.0/arch/arm/mach-omap2/omap_hwmod.c @@ -2444,6 +2444,9 @@ * registers. This address is needed early so the OCP registers that * are part of the device's address space can be ioremapped properly. * + * If SYSC access is not needed, the registers will not be remapped + * and non-availability of MPU access is not treated as an error. + * * Returns 0 on success, -EINVAL if an invalid hwmod is passed, and * -ENXIO on absent or invalid register target address space. */ @@ -2458,6 +2461,11 @@ _save_mpu_port_index(oh); + /* if we don't need sysc access we don't need to ioremap */ + if (!oh->class->sysc) + return 0; + + /* we can't continue without MPU PORT if we need sysc access */ if (oh->_int_flags & _HWMOD_NO_MPU_PORT) return -ENXIO; @@ -2467,8 +2475,10 @@ oh->name); /* Extract the IO space from device tree blob */ - if (!np) + if (!np) { + pr_err("omap_hwmod: %s: no dt node\n", oh->name); return -ENXIO; + } va_start = of_iomap(np, index + oh->mpu_rt_idx); } else { @@ -2527,13 +2537,11 @@ oh->name, np->name); } - if (oh->class->sysc) { - r = _init_mpu_rt_base(oh, NULL, index, np); - if (r < 0) { - WARN(1, "omap_hwmod: %s: doesn't have mpu register target base\n", - oh->name); - return 0; - } + r = _init_mpu_rt_base(oh, NULL, index, np); + if (r < 0) { + WARN(1, "omap_hwmod: %s: doesn't have mpu register target base\n", + oh->name); + return 0; } r = _init_clocks(oh, NULL); --- linux-3.13.0.orig/arch/arm/mach-omap2/omap_hwmod.h +++ linux-3.13.0/arch/arm/mach-omap2/omap_hwmod.h @@ -41,6 +41,7 @@ extern struct omap_hwmod_sysc_fields omap_hwmod_sysc_type1; extern struct omap_hwmod_sysc_fields omap_hwmod_sysc_type2; extern struct omap_hwmod_sysc_fields omap_hwmod_sysc_type3; +extern struct omap_hwmod_sysc_fields omap_hwmod_sysc_type4; /* * OCP SYSCONFIG bit shifts/masks TYPE1. These are for IPs compliant @@ -81,6 +82,16 @@ #define SYSC_TYPE3_MIDLEMODE_SHIFT 2 #define SYSC_TYPE3_MIDLEMODE_MASK (0x3 << SYSC_TYPE3_MIDLEMODE_SHIFT) +/* + * OCP SYSCONFIG bit shifts/masks TYPE4. + */ +#define SYSC_TYPE4_SIDLEMODE_SHIFT 2 +#define SYSC_TYPE4_SIDLEMODE_MASK (0x3 << SYSC_TYPE4_SIDLEMODE_SHIFT) +#define SYSC_TYPE4_SOFTRESET_SHIFT 1 +#define SYSC_TYPE4_SOFTRESET_MASK (1 << SYSC_TYPE4_SOFTRESET_SHIFT) +#define SYSC_TYPE4_AUTOIDLE_SHIFT 0 +#define SYSC_TYPE4_AUTOIDLE_MASK (1 << SYSC_TYPE4_AUTOIDLE_SHIFT) + /* OCP SYSSTATUS bit shifts/masks */ #define SYSS_RESETDONE_SHIFT 0 #define SYSS_RESETDONE_MASK (1 << SYSS_RESETDONE_SHIFT) --- linux-3.13.0.orig/arch/arm/mach-omap2/omap_hwmod_33xx_43xx_ipblock_data.c +++ linux-3.13.0/arch/arm/mach-omap2/omap_hwmod_33xx_43xx_ipblock_data.c @@ -209,6 +209,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-3.13.0.orig/arch/arm/mach-omap2/omap_hwmod_44xx_data.c +++ linux-3.13.0/arch/arm/mach-omap2/omap_hwmod_44xx_data.c @@ -4783,6 +4783,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, @@ -4937,6 +4990,7 @@ &omap44xx_l4_abe__wd_timer3_dma, &omap44xx_mpu__emif1, &omap44xx_mpu__emif2, + &omap4_l3_main_2__aes1, NULL, }; --- linux-3.13.0.orig/arch/arm/mach-omap2/omap_hwmod_54xx_data.c +++ linux-3.13.0/arch/arm/mach-omap2/omap_hwmod_54xx_data.c @@ -895,7 +895,7 @@ * current exception. */ - .flags = HWMOD_EXT_OPT_MAIN_CLK, + .flags = HWMOD_EXT_OPT_MAIN_CLK | HWMOD_SWSUP_SIDLE, .main_clk = "pad_clks_ck", .prcm = { .omap4 = { --- linux-3.13.0.orig/arch/arm/mach-omap2/omap_hwmod_7xx_data.c +++ linux-3.13.0/arch/arm/mach-omap2/omap_hwmod_7xx_data.c @@ -1669,7 +1669,7 @@ .class = &dra7xx_uart_hwmod_class, .clkdm_name = "l4per_clkdm", .main_clk = "uart3_gfclk_mux", - .flags = HWMOD_SWSUP_SIDLE_ACT, + .flags = HWMOD_SWSUP_SIDLE_ACT | DEBUG_OMAP4UART3_FLAGS, .prcm = { .omap4 = { .clkctrl_offs = DRA7XX_CM_L4PER_UART3_CLKCTRL_OFFSET, --- linux-3.13.0.orig/arch/arm/mach-omap2/omap_hwmod_common_data.c +++ linux-3.13.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-3.13.0.orig/arch/arm/mach-omap2/timer.c +++ linux-3.13.0/arch/arm/mach-omap2/timer.c @@ -513,11 +513,11 @@ rate = clk_get_rate(sys_clk); /* Numerator/denumerator values refer TRM Realtime Counter section */ switch (rate) { - case 1200000: + case 12000000: num = 64; den = 125; break; - case 1300000: + case 13000000: num = 768; den = 1625; break; @@ -529,11 +529,11 @@ num = 192; den = 625; break; - case 2600000: + case 26000000: num = 384; den = 1625; break; - case 2700000: + case 27000000: num = 256; den = 1125; break; --- linux-3.13.0.orig/arch/arm/mach-orion5x/common.h +++ linux-3.13.0/arch/arm/mach-orion5x/common.h @@ -21,7 +21,7 @@ #define ORION_MBUS_DEVBUS_BOOT_ATTR 0x0f #define ORION_MBUS_DEVBUS_TARGET(cs) 0x01 #define ORION_MBUS_DEVBUS_ATTR(cs) (~(1 << cs)) -#define ORION_MBUS_SRAM_TARGET 0x00 +#define ORION_MBUS_SRAM_TARGET 0x09 #define ORION_MBUS_SRAM_ATTR 0x00 /* --- linux-3.13.0.orig/arch/arm/mach-pxa/am300epd.c +++ linux-3.13.0/arch/arm/mach-pxa/am300epd.c @@ -30,6 +30,7 @@ #include #include +#include #include #include "generic.h" --- linux-3.13.0.orig/arch/arm/mach-pxa/corgi.c +++ linux-3.13.0/arch/arm/mach-pxa/corgi.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -711,6 +712,8 @@ sharpsl_nand_partitions[1].size = 53 * 1024 * 1024; platform_add_devices(devices, ARRAY_SIZE(devices)); + + regulator_has_full_constraints(); } static void __init fixup_corgi(struct tag *tags, char **cmdline, --- linux-3.13.0.orig/arch/arm/mach-pxa/hx4700.c +++ linux-3.13.0/arch/arm/mach-pxa/hx4700.c @@ -892,6 +892,8 @@ mdelay(10); gpio_set_value(GPIO71_HX4700_ASIC3_nRESET, 1); mdelay(10); + + regulator_has_full_constraints(); } MACHINE_START(H4700, "HP iPAQ HX4700") --- linux-3.13.0.orig/arch/arm/mach-pxa/include/mach/addr-map.h +++ linux-3.13.0/arch/arm/mach-pxa/include/mach/addr-map.h @@ -39,6 +39,11 @@ #define DMEMC_SIZE 0x00100000 /* + * Reserved space for low level debug virtual addresses within + * 0xf6200000..0xf6201000 + */ + +/* * Internal Memory Controller (PXA27x and later) */ #define IMEMC_PHYS 0x58000000 --- linux-3.13.0.orig/arch/arm/mach-pxa/include/mach/balloon3.h +++ linux-3.13.0/arch/arm/mach-pxa/include/mach/balloon3.h @@ -14,6 +14,8 @@ #ifndef ASM_ARCH_BALLOON3_H #define ASM_ARCH_BALLOON3_H +#include "irqs.h" /* PXA_NR_BUILTIN_GPIO */ + enum balloon3_features { BALLOON3_FEATURE_OHCI, BALLOON3_FEATURE_MMC, --- linux-3.13.0.orig/arch/arm/mach-pxa/include/mach/corgi.h +++ linux-3.13.0/arch/arm/mach-pxa/include/mach/corgi.h @@ -13,6 +13,7 @@ #ifndef __ASM_ARCH_CORGI_H #define __ASM_ARCH_CORGI_H 1 +#include "irqs.h" /* PXA_NR_BUILTIN_GPIO */ /* * Corgi (Non Standard) GPIO Definitions --- linux-3.13.0.orig/arch/arm/mach-pxa/include/mach/csb726.h +++ linux-3.13.0/arch/arm/mach-pxa/include/mach/csb726.h @@ -11,6 +11,8 @@ #ifndef CSB726_H #define CSB726_H +#include "irqs.h" /* PXA_GPIO_TO_IRQ */ + #define CSB726_GPIO_IRQ_LAN 52 #define CSB726_GPIO_IRQ_SM501 53 #define CSB726_GPIO_MMC_DETECT 100 --- linux-3.13.0.orig/arch/arm/mach-pxa/include/mach/gumstix.h +++ linux-3.13.0/arch/arm/mach-pxa/include/mach/gumstix.h @@ -6,6 +6,7 @@ * published by the Free Software Foundation. */ +#include "irqs.h" /* PXA_GPIO_TO_IRQ */ /* BTRESET - Reset line to Bluetooth module, active low signal. */ #define GPIO_GUMSTIX_BTRESET 7 --- linux-3.13.0.orig/arch/arm/mach-pxa/include/mach/hx4700.h +++ linux-3.13.0/arch/arm/mach-pxa/include/mach/hx4700.h @@ -14,6 +14,7 @@ #include #include +#include "irqs.h" /* PXA_NR_BUILTIN_GPIO */ #define HX4700_ASIC3_GPIO_BASE PXA_NR_BUILTIN_GPIO #define HX4700_EGPIO_BASE (HX4700_ASIC3_GPIO_BASE + ASIC3_NUM_GPIOS) --- linux-3.13.0.orig/arch/arm/mach-pxa/include/mach/idp.h +++ linux-3.13.0/arch/arm/mach-pxa/include/mach/idp.h @@ -23,6 +23,7 @@ * IDP hardware. */ +#include "irqs.h" /* PXA_GPIO_TO_IRQ */ #define IDP_FLASH_PHYS (PXA_CS0_PHYS) #define IDP_ALT_FLASH_PHYS (PXA_CS1_PHYS) --- linux-3.13.0.orig/arch/arm/mach-pxa/include/mach/palmld.h +++ linux-3.13.0/arch/arm/mach-pxa/include/mach/palmld.h @@ -13,6 +13,8 @@ #ifndef _INCLUDE_PALMLD_H_ #define _INCLUDE_PALMLD_H_ +#include "irqs.h" /* PXA_GPIO_TO_IRQ */ + /** HERE ARE GPIOs **/ /* GPIOs */ --- linux-3.13.0.orig/arch/arm/mach-pxa/include/mach/palmt5.h +++ linux-3.13.0/arch/arm/mach-pxa/include/mach/palmt5.h @@ -15,6 +15,8 @@ #ifndef _INCLUDE_PALMT5_H_ #define _INCLUDE_PALMT5_H_ +#include "irqs.h" /* PXA_GPIO_TO_IRQ */ + /** HERE ARE GPIOs **/ /* GPIOs */ --- linux-3.13.0.orig/arch/arm/mach-pxa/include/mach/palmtc.h +++ linux-3.13.0/arch/arm/mach-pxa/include/mach/palmtc.h @@ -16,6 +16,8 @@ #ifndef _INCLUDE_PALMTC_H_ #define _INCLUDE_PALMTC_H_ +#include "irqs.h" /* PXA_GPIO_TO_IRQ */ + /** HERE ARE GPIOs **/ /* GPIOs */ --- linux-3.13.0.orig/arch/arm/mach-pxa/include/mach/palmtx.h +++ linux-3.13.0/arch/arm/mach-pxa/include/mach/palmtx.h @@ -16,6 +16,8 @@ #ifndef _INCLUDE_PALMTX_H_ #define _INCLUDE_PALMTX_H_ +#include "irqs.h" /* PXA_GPIO_TO_IRQ */ + /** HERE ARE GPIOs **/ /* GPIOs */ --- linux-3.13.0.orig/arch/arm/mach-pxa/include/mach/pcm027.h +++ linux-3.13.0/arch/arm/mach-pxa/include/mach/pcm027.h @@ -23,6 +23,8 @@ * Definitions of CPU card resources only */ +#include "irqs.h" /* PXA_GPIO_TO_IRQ */ + /* phyCORE-PXA270 (PCM027) Interrupts */ #define PCM027_IRQ(x) (IRQ_BOARD_START + (x)) #define PCM027_BTDET_IRQ PCM027_IRQ(0) --- linux-3.13.0.orig/arch/arm/mach-pxa/include/mach/pcm990_baseboard.h +++ linux-3.13.0/arch/arm/mach-pxa/include/mach/pcm990_baseboard.h @@ -20,6 +20,7 @@ */ #include +#include "irqs.h" /* PXA_GPIO_TO_IRQ */ /* * definitions relevant only when the PCM-990 --- linux-3.13.0.orig/arch/arm/mach-pxa/include/mach/poodle.h +++ linux-3.13.0/arch/arm/mach-pxa/include/mach/poodle.h @@ -15,6 +15,8 @@ #ifndef __ASM_ARCH_POODLE_H #define __ASM_ARCH_POODLE_H 1 +#include "irqs.h" /* PXA_GPIO_TO_IRQ */ + /* * GPIOs */ --- linux-3.13.0.orig/arch/arm/mach-pxa/include/mach/pxa27x.h +++ linux-3.13.0/arch/arm/mach-pxa/include/mach/pxa27x.h @@ -21,7 +21,7 @@ extern void __init pxa27x_map_io(void); extern void __init pxa27x_init_irq(void); -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); #define pxa27x_handle_irq ichp_handle_irq --- linux-3.13.0.orig/arch/arm/mach-pxa/include/mach/spitz.h +++ linux-3.13.0/arch/arm/mach-pxa/include/mach/spitz.h @@ -15,8 +15,8 @@ #define __ASM_ARCH_SPITZ_H 1 #endif +#include "irqs.h" /* PXA_NR_BUILTIN_GPIO, PXA_GPIO_TO_IRQ */ #include -#include /* Spitz/Akita GPIOs */ --- linux-3.13.0.orig/arch/arm/mach-pxa/include/mach/tosa.h +++ linux-3.13.0/arch/arm/mach-pxa/include/mach/tosa.h @@ -13,6 +13,8 @@ #ifndef _ASM_ARCH_TOSA_H_ #define _ASM_ARCH_TOSA_H_ 1 +#include "irqs.h" /* PXA_NR_BUILTIN_GPIO */ + /* TOSA Chip selects */ #define TOSA_LCDC_PHYS PXA_CS4_PHYS /* Internel Scoop */ --- linux-3.13.0.orig/arch/arm/mach-pxa/include/mach/trizeps4.h +++ linux-3.13.0/arch/arm/mach-pxa/include/mach/trizeps4.h @@ -10,6 +10,8 @@ #ifndef _TRIPEPS4_H_ #define _TRIPEPS4_H_ +#include "irqs.h" /* PXA_GPIO_TO_IRQ */ + /* physical memory regions */ #define TRIZEPS4_FLASH_PHYS (PXA_CS0_PHYS) /* Flash region */ #define TRIZEPS4_DISK_PHYS (PXA_CS1_PHYS) /* Disk On Chip region */ --- linux-3.13.0.orig/arch/arm/mach-pxa/poodle.c +++ linux-3.13.0/arch/arm/mach-pxa/poodle.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -454,6 +455,7 @@ pxa_set_i2c_info(NULL); i2c_register_board_info(0, ARRAY_AND_SIZE(poodle_i2c_devices)); poodle_init_spi(); + regulator_has_full_constraints(); } static void __init fixup_poodle(struct tag *tags, char **cmdline, --- linux-3.13.0.orig/arch/arm/mach-pxa/pxa27x.c +++ linux-3.13.0/arch/arm/mach-pxa/pxa27x.c @@ -251,7 +251,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-3.13.0.orig/arch/arm/mach-pxa/spitz.c +++ linux-3.13.0/arch/arm/mach-pxa/spitz.c @@ -969,6 +969,8 @@ spitz_nor_init(); spitz_nand_init(); spitz_i2c_init(); + + regulator_has_full_constraints(); } static void __init spitz_fixup(struct tag *tags, char **cmdline, --- linux-3.13.0.orig/arch/arm/mach-s3c64xx/crag6410.h +++ linux-3.13.0/arch/arm/mach-s3c64xx/crag6410.h @@ -14,6 +14,7 @@ #include #define GLENFARCLAS_PMIC_IRQ_BASE IRQ_BOARD_START +#define BANFF_PMIC_IRQ_BASE (IRQ_BOARD_START + 64) #define PCA935X_GPIO_BASE GPIO_BOARD_START #define CODEC_GPIO_BASE (GPIO_BOARD_START + 8) --- linux-3.13.0.orig/arch/arm/mach-s3c64xx/mach-crag6410.c +++ linux-3.13.0/arch/arm/mach-s3c64xx/mach-crag6410.c @@ -555,6 +555,7 @@ static struct wm831x_pdata crag_pmic_pdata = { .wm831x_num = 1, + .irq_base = BANFF_PMIC_IRQ_BASE, .gpio_base = BANFF_PMIC_GPIO_BASE, .soft_shutdown = true, --- linux-3.13.0.orig/arch/arm/mach-sa1100/include/mach/collie.h +++ linux-3.13.0/arch/arm/mach-sa1100/include/mach/collie.h @@ -13,6 +13,8 @@ #ifndef __ASM_ARCH_COLLIE_H #define __ASM_ARCH_COLLIE_H +#include "hardware.h" /* Gives GPIO_MAX */ + extern void locomolcd_power(int on); #define COLLIE_SCOOP_GPIO_BASE (GPIO_MAX + 1) --- linux-3.13.0.orig/arch/arm/mach-sa1100/pm.c +++ linux-3.13.0/arch/arm/mach-sa1100/pm.c @@ -81,6 +81,7 @@ /* * Ensure not to come back here if it wasn't intended */ + RCSR = RCSR_SMR; PSPR = 0; /* --- linux-3.13.0.orig/arch/arm/mach-tegra/reset-handler.S +++ linux-3.13.0/arch/arm/mach-tegra/reset-handler.S @@ -51,6 +51,7 @@ THUMB( it ne ) bne cpu_resume @ no + tegra_get_soc_id TEGRA_APB_MISC_BASE, r6 /* Are we on Tegra20? */ cmp r6, #TEGRA20 beq 1f @ Yes --- linux-3.13.0.orig/arch/arm/mach-tegra/tegra.c +++ linux-3.13.0/arch/arm/mach-tegra/tegra.c @@ -74,10 +74,20 @@ static void __init tegra_init_cache(void) { #ifdef CONFIG_CACHE_L2X0 + static const struct of_device_id pl310_ids[] __initconst = { + { .compatible = "arm,pl310-cache", }, + {} + }; + + struct device_node *np; int ret; void __iomem *p = IO_ADDRESS(TEGRA_ARM_PERIF_BASE) + 0x3000; u32 aux_ctrl, cache_type; + np = of_find_matching_node(NULL, pl310_ids); + if (!np) + return; + cache_type = readl(p + L2X0_CACHE_TYPE); aux_ctrl = (cache_type & 0x700) << (17-8); aux_ctrl |= 0x7C400001; --- linux-3.13.0.orig/arch/arm/mm/Kconfig +++ linux-3.13.0/arch/arm/mm/Kconfig @@ -446,7 +446,6 @@ config CPU_32v6 bool - select CPU_USE_DOMAINS if CPU_V6 && MMU select TLS_REG_EMUL if !CPU_32v6K && !MMU config CPU_32v6K @@ -671,7 +670,7 @@ config SWP_EMULATE bool "Emulate SWP/SWPB instructions" - depends on !CPU_USE_DOMAINS && CPU_V7 + depends on CPU_V7 default y if SMP select HAVE_PROC_CPU if PROC_FS help @@ -799,6 +798,7 @@ config KUSER_HELPERS bool "Enable kuser helpers in vector page" if !NEED_KUSER_HELPERS + depends on MMU default y help Warning: disabling this option may break user programs. --- linux-3.13.0.orig/arch/arm/mm/abort-ev6.S +++ linux-3.13.0/arch/arm/mm/abort-ev6.S @@ -17,12 +17,6 @@ */ .align 5 ENTRY(v6_early_abort) -#ifdef CONFIG_CPU_V6 - sub r1, sp, #4 @ Get unused stack location - strex r0, r1, [r1] @ Clear the exclusive monitor -#elif defined(CONFIG_CPU_32v6K) - clrex -#endif mrc p15, 0, r1, c5, c0, 0 @ get FSR mrc p15, 0, r0, c6, c0, 0 @ get FAR /* --- linux-3.13.0.orig/arch/arm/mm/abort-ev7.S +++ linux-3.13.0/arch/arm/mm/abort-ev7.S @@ -13,12 +13,6 @@ */ .align 5 ENTRY(v7_early_abort) - /* - * The effect of data aborts on on the exclusive access monitor are - * UNPREDICTABLE. Do a CLREX to clear the state - */ - clrex - mrc p15, 0, r1, c5, c0, 0 @ get FSR mrc p15, 0, r0, c6, c0, 0 @ get FAR --- linux-3.13.0.orig/arch/arm/mm/alignment.c +++ linux-3.13.0/arch/arm/mm/alignment.c @@ -40,6 +40,7 @@ * This code is not portable to processors with late data abort handling. */ #define CODING_BITS(i) (i & 0x0e000000) +#define COND_BITS(i) (i & 0xf0000000) #define LDST_I_BIT(i) (i & (1 << 26)) /* Immediate constant */ #define LDST_P_BIT(i) (i & (1 << 24)) /* Preindex */ @@ -817,6 +818,8 @@ break; case 0x04000000: /* ldr or str immediate */ + if (COND_BITS(instr) == 0xf0000000) /* NEON VLDn, VSTn */ + goto bad; offset.un = OFFSET_BITS(instr); handler = do_alignment_ldrstr; break; --- linux-3.13.0.orig/arch/arm/mm/dma-mapping.c +++ linux-3.13.0/arch/arm/mm/dma-mapping.c @@ -1358,7 +1358,7 @@ *handle = DMA_ERROR_CODE; size = PAGE_ALIGN(size); - if (gfp & GFP_ATOMIC) + if (!(gfp & __GFP_WAIT)) return __iommu_alloc_atomic(dev, size, handle); /* @@ -1402,12 +1402,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-3.13.0.orig/arch/arm/mm/hugetlbpage.c +++ linux-3.13.0/arch/arm/mm/hugetlbpage.c @@ -56,8 +56,3 @@ { return pmd_val(pmd) && !(pmd_val(pmd) & PMD_TABLE_BIT); } - -int pmd_huge_support(void) -{ - return 1; -} --- linux-3.13.0.orig/arch/arm/mm/init.c +++ linux-3.13.0/arch/arm/mm/init.c @@ -345,10 +345,11 @@ #endif #ifdef CONFIG_BLK_DEV_INITRD /* FDT scan will populate initrd_start */ - if (initrd_start) { + if (initrd_start && !phys_initrd_size) { phys_initrd_start = __virt_to_phys(initrd_start); phys_initrd_size = initrd_end - initrd_start; } + initrd_start = initrd_end = 0; if (phys_initrd_size && !memblock_is_region_memory(phys_initrd_start, phys_initrd_size)) { pr_err("INITRD: 0x%08llx+0x%08lx is not a memory region - disabling initrd\n", --- linux-3.13.0.orig/arch/arm/mm/mm.h +++ linux-3.13.0/arch/arm/mm/mm.h @@ -38,6 +38,7 @@ struct mem_type { pteval_t prot_pte; + pteval_t prot_pte_s2; pmdval_t prot_l1; pmdval_t prot_sect; unsigned int domain; --- linux-3.13.0.orig/arch/arm/mm/mmu.c +++ linux-3.13.0/arch/arm/mm/mmu.c @@ -231,12 +231,16 @@ #endif /* ifdef CONFIG_CPU_CP15 / else */ #define PROT_PTE_DEVICE L_PTE_PRESENT|L_PTE_YOUNG|L_PTE_DIRTY|L_PTE_XN +#define PROT_PTE_S2_DEVICE PROT_PTE_DEVICE #define PROT_SECT_DEVICE PMD_TYPE_SECT|PMD_SECT_AP_WRITE static struct mem_type mem_types[] = { [MT_DEVICE] = { /* Strongly ordered / ARMv6 shared device */ .prot_pte = PROT_PTE_DEVICE | L_PTE_MT_DEV_SHARED | L_PTE_SHARED, + .prot_pte_s2 = s2_policy(PROT_PTE_S2_DEVICE) | + s2_policy(L_PTE_S2_MT_DEV_SHARED) | + L_PTE_SHARED, .prot_l1 = PMD_TYPE_TABLE, .prot_sect = PROT_SECT_DEVICE | PMD_SECT_S, .domain = DOMAIN_IO, @@ -458,7 +462,18 @@ cp = &cache_policies[cachepolicy]; vecs_pgprot = kern_pgprot = user_pgprot = cp->pte; s2_pgprot = cp->pte_s2; - hyp_device_pgprot = s2_device_pgprot = mem_types[MT_DEVICE].prot_pte; + hyp_device_pgprot = mem_types[MT_DEVICE].prot_pte; + s2_device_pgprot = mem_types[MT_DEVICE].prot_pte_s2; + + /* + * We don't use domains on ARMv6 (since this causes problems with + * v6/v7 kernels), so we must use a separate memory type for user + * r/o, kernel r/w to map the vectors page. + */ +#ifndef CONFIG_ARM_LPAE + if (cpu_arch == CPU_ARCH_ARMv6) + vecs_pgprot |= L_PTE_MT_VECTORS; +#endif /* * ARMv6 and above have extended page tables. @@ -1062,22 +1077,22 @@ arm_lowmem_limit = bank_end; /* - * Find the first non-section-aligned page, and point + * Find the first non-pmd-aligned page, and point * memblock_limit at it. This relies on rounding the - * limit down to be section-aligned, which happens at - * the end of this function. + * limit down to be pmd-aligned, which happens at the + * end of this function. * * With this algorithm, the start or end of almost any - * bank can be non-section-aligned. The only exception - * is that the start of the bank 0 must be section- + * bank can be non-pmd-aligned. The only exception is + * that the start of the bank 0 must be section- * aligned, since otherwise memory would need to be * allocated when mapping the start of bank 0, which * occurs before any free memory is mapped. */ if (!memblock_limit) { - if (!IS_ALIGNED(bank->start, SECTION_SIZE)) + if (!IS_ALIGNED(bank->start, PMD_SIZE)) memblock_limit = bank->start; - else if (!IS_ALIGNED(bank_end, SECTION_SIZE)) + else if (!IS_ALIGNED(bank_end, PMD_SIZE)) memblock_limit = bank_end; } } @@ -1107,12 +1122,12 @@ high_memory = __va(arm_lowmem_limit - 1) + 1; /* - * Round the memblock limit down to a section size. This + * Round the memblock limit down to a pmd size. This * helps to ensure that we will allocate memory from the - * last full section, which should be mapped. + * last full pmd, which should be mapped. */ if (memblock_limit) - memblock_limit = round_down(memblock_limit, SECTION_SIZE); + memblock_limit = round_down(memblock_limit, PMD_SIZE); if (!memblock_limit) memblock_limit = arm_lowmem_limit; @@ -1337,8 +1352,8 @@ return; /* remap kernel code and data */ - map_start = init_mm.start_code; - map_end = init_mm.brk; + map_start = init_mm.start_code & PMD_MASK; + map_end = ALIGN(init_mm.brk, PMD_SIZE); /* get a handle on things... */ pgd0 = pgd_offset_k(0); @@ -1373,7 +1388,7 @@ } /* remap pmds for kernel mapping */ - phys = __pa(map_start) & PMD_MASK; + phys = __pa(map_start); do { *pmdk++ = __pmd(phys | pmdprot); phys += PMD_SIZE; --- linux-3.13.0.orig/arch/arm/mm/proc-macros.S +++ linux-3.13.0/arch/arm/mm/proc-macros.S @@ -112,13 +112,9 @@ * 100x 1 0 1 r/o no acc * 10x0 1 0 1 r/o no acc * 1011 0 0 1 r/w no acc - * 110x 0 1 0 r/w r/o - * 11x0 0 1 0 r/w r/o - * 1111 0 1 1 r/w r/w - * - * If !CONFIG_CPU_USE_DOMAINS, the following permissions are changed: * 110x 1 1 1 r/o r/o * 11x0 1 1 1 r/o r/o + * 1111 0 1 1 r/w r/w */ .macro armv6_mt_table pfx \pfx\()_mt_table: @@ -137,7 +133,7 @@ .long PTE_EXT_TEX(2) @ L_PTE_MT_DEV_NONSHARED .long 0x00 @ unused .long 0x00 @ unused - .long 0x00 @ unused + .long PTE_CACHEABLE | PTE_BUFFERABLE | PTE_EXT_APX @ L_PTE_MT_VECTORS .endm .macro armv6_set_pte_ext pfx @@ -158,24 +154,21 @@ tst r1, #L_PTE_USER orrne r3, r3, #PTE_EXT_AP1 -#ifdef CONFIG_CPU_USE_DOMAINS - @ allow kernel read/write access to read-only user pages tstne r3, #PTE_EXT_APX - bicne r3, r3, #PTE_EXT_APX | PTE_EXT_AP0 -#endif + + @ user read-only -> kernel read-only + bicne r3, r3, #PTE_EXT_AP0 tst r1, #L_PTE_XN orrne r3, r3, #PTE_EXT_XN - orr r3, r3, r2 + eor r3, r3, r2 tst r1, #L_PTE_YOUNG tstne r1, #L_PTE_PRESENT moveq r3, #0 -#ifndef CONFIG_CPU_USE_DOMAINS tstne r1, #L_PTE_NONE movne r3, #0 -#endif str r3, [r0] mcr p15, 0, r0, c7, c10, 1 @ flush_pte --- linux-3.13.0.orig/arch/arm/mm/proc-v6.S +++ linux-3.13.0/arch/arm/mm/proc-v6.S @@ -208,7 +208,6 @@ mcr p15, 0, r0, c7, c14, 0 @ clean+invalidate D cache mcr p15, 0, r0, c7, c5, 0 @ invalidate I cache mcr p15, 0, r0, c7, c15, 0 @ clean+invalidate cache - mcr p15, 0, r0, c7, c10, 4 @ drain write buffer #ifdef CONFIG_MMU mcr p15, 0, r0, c8, c7, 0 @ invalidate I + D TLBs mcr p15, 0, r0, c2, c0, 2 @ TTB control register @@ -218,6 +217,8 @@ ALT_UP(orr r8, r8, #TTB_FLAGS_UP) mcr p15, 0, r8, c2, c0, 1 @ load TTB1 #endif /* CONFIG_MMU */ + mcr p15, 0, r0, c7, c10, 4 @ drain write buffer and + @ complete invalidations adr r5, v6_crval ldmia r5, {r5, r6} ARM_BE8(orr r6, r6, #1 << 25) @ big-endian page tables --- linux-3.13.0.orig/arch/arm/mm/proc-v7-2level.S +++ linux-3.13.0/arch/arm/mm/proc-v7-2level.S @@ -90,21 +90,14 @@ tst r1, #L_PTE_USER orrne r3, r3, #PTE_EXT_AP1 -#ifdef CONFIG_CPU_USE_DOMAINS - @ allow kernel read/write access to read-only user pages - tstne r3, #PTE_EXT_APX - bicne r3, r3, #PTE_EXT_APX | PTE_EXT_AP0 -#endif tst r1, #L_PTE_XN orrne r3, r3, #PTE_EXT_XN tst r1, #L_PTE_YOUNG tstne r1, #L_PTE_VALID -#ifndef CONFIG_CPU_USE_DOMAINS eorne r1, r1, #L_PTE_NONE tstne r1, #L_PTE_NONE -#endif moveq r3, #0 ARM( str r3, [r0, #2048]! ) --- linux-3.13.0.orig/arch/arm/mm/proc-v7.S +++ linux-3.13.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) @@ -211,7 +211,6 @@ /* Auxiliary Debug Modes Control 1 Register */ #define PJ4B_STATIC_BP (1 << 2) /* Enable Static BP */ #define PJ4B_INTER_PARITY (1 << 8) /* Disable Internal Parity Handling */ -#define PJ4B_BCK_OFF_STREX (1 << 5) /* Enable the back off of STREX instr */ #define PJ4B_CLEAN_LINE (1 << 16) /* Disable data transfer for clean line */ /* Auxiliary Debug Modes Control 2 Register */ @@ -234,7 +233,6 @@ /* Auxiliary Debug Modes Control 1 Register */ mrc p15, 1, r0, c15, c1, 1 orr r0, r0, #PJ4B_CLEAN_LINE - orr r0, r0, #PJ4B_BCK_OFF_STREX orr r0, r0, #PJ4B_INTER_PARITY bic r0, r0, #PJ4B_STATIC_BP mcr p15, 1, r0, c15, c1, 1 @@ -351,7 +349,6 @@ 4: mov r10, #0 mcr p15, 0, r10, c7, c5, 0 @ I+BTB cache invalidate - dsb #ifdef CONFIG_MMU mcr p15, 0, r10, c8, c7, 0 @ invalidate I + D TLBs v7_ttb_setup r10, r4, r8, r5 @ TTBCR, TTBRx setup @@ -360,6 +357,7 @@ mcr p15, 0, r5, c10, c2, 0 @ write PRRR mcr p15, 0, r6, c10, c2, 1 @ write NMRR #endif + dsb @ Complete invalidations #ifndef CONFIG_ARM_THUMBEE mrc p15, 0, r0, c0, c1, 0 @ read ID_PFR0 for ThumbEE and r0, r0, #(0xf << 12) @ ThumbEE enabled field --- linux-3.13.0.orig/arch/arm/mm/proc-xscale.S +++ linux-3.13.0/arch/arm/mm/proc-xscale.S @@ -535,7 +535,7 @@ mrc p15, 0, r5, c15, c1, 0 @ CP access reg mrc p15, 0, r6, c13, c0, 0 @ PID mrc p15, 0, r7, c3, c0, 0 @ domain ID - mrc p15, 0, r8, c1, c1, 0 @ auxiliary control reg + mrc p15, 0, r8, c1, c0, 1 @ auxiliary control reg mrc p15, 0, r9, c1, c0, 0 @ control reg bic r4, r4, #2 @ clear frequency change bit stmia r0, {r4 - r9} @ store cp regs @@ -552,7 +552,7 @@ mcr p15, 0, r6, c13, c0, 0 @ PID mcr p15, 0, r7, c3, c0, 0 @ domain ID mcr p15, 0, r1, c2, c0, 0 @ translation table base addr - mcr p15, 0, r8, c1, c1, 0 @ auxiliary control reg + mcr p15, 0, r8, c1, c0, 1 @ auxiliary control reg mov r0, r9 @ control register b cpu_resume_mmu ENDPROC(cpu_xscale_do_resume) --- linux-3.13.0.orig/arch/arm/net/bpf_jit_32.c +++ linux-3.13.0/arch/arm/net/bpf_jit_32.c @@ -449,10 +449,21 @@ return; } #endif - if (rm != ARM_R0) - emit(ARM_MOV_R(ARM_R0, rm), ctx); + + /* + * For BPF_ALU | BPF_DIV | BPF_K instructions, rm is ARM_R4 + * (r_A) and rn is ARM_R0 (r_scratch) so load rn first into + * ARM_R1 to avoid accidentally overwriting ARM_R0 with rm + * before using it as a source for ARM_R1. + * + * For BPF_ALU | BPF_DIV | BPF_X rm is ARM_R4 (r_A) and rn is + * ARM_R5 (r_X) so there is no particular register overlap + * issues. + */ if (rn != ARM_R1) emit(ARM_MOV_R(ARM_R1, rn), ctx); + if (rm != ARM_R0) + emit(ARM_MOV_R(ARM_R0, rm), ctx); ctx->seen |= SEEN_CALL; emit_mov_i(ARM_R3, (u32)jit_udiv, ctx); --- linux-3.13.0.orig/arch/arm/plat-orion/common.c +++ linux-3.13.0/arch/arm/plat-orion/common.c @@ -498,7 +498,7 @@ d->netdev = &orion_ge00.dev; for (i = 0; i < d->nr_chips; i++) - d->chip[i].mii_bus = &orion_ge00_shared.dev; + d->chip[i].mii_bus = &orion_ge_mvmdio.dev; orion_switch_device.dev.platform_data = d; platform_device_register(&orion_switch_device); --- linux-3.13.0.orig/arch/arm/plat-orion/irq.c +++ linux-3.13.0/arch/arm/plat-orion/irq.c @@ -15,8 +15,51 @@ #include #include #include +#include #include #include +#include + +#ifdef CONFIG_MULTI_IRQ_HANDLER +/* + * Compiling with both non-DT and DT support enabled, will + * break asm irq handler used by non-DT boards. Therefore, + * we provide a C-style irq handler even for non-DT boards, + * if MULTI_IRQ_HANDLER is set. + * + * Notes: + * - this is prepared for Kirkwood and Dove only, update + * accordingly if you add Orion5x or MV78x00. + * - Orion5x uses different macro names and has only one + * set of CAUSE/MASK registers. + * - MV78x00 uses the same macro names but has a third + * set of CAUSE/MASK registers. + * + */ + +static void __iomem *orion_irq_base = IRQ_VIRT_BASE; + +asmlinkage void +__exception_irq_entry orion_legacy_handle_irq(struct pt_regs *regs) +{ + u32 stat; + + stat = readl_relaxed(orion_irq_base + IRQ_CAUSE_LOW_OFF); + stat &= readl_relaxed(orion_irq_base + IRQ_MASK_LOW_OFF); + if (stat) { + unsigned int hwirq = __fls(stat); + handle_IRQ(hwirq, regs); + return; + } + stat = readl_relaxed(orion_irq_base + IRQ_CAUSE_HIGH_OFF); + stat &= readl_relaxed(orion_irq_base + IRQ_MASK_HIGH_OFF); + if (stat) { + unsigned int hwirq = 32 + __fls(stat); + handle_IRQ(hwirq, regs); + return; + } +} +#endif void __init orion_irq_init(unsigned int irq_start, void __iomem *maskaddr) { @@ -35,6 +78,10 @@ ct->chip.irq_unmask = irq_gc_mask_set_bit; irq_setup_generic_chip(gc, IRQ_MSK(32), IRQ_GC_INIT_MASK_CACHE, IRQ_NOREQUEST, IRQ_LEVEL | IRQ_NOPROBE); + +#ifdef CONFIG_MULTI_IRQ_HANDLER + set_handle_irq(orion_legacy_handle_irq); +#endif } #ifdef CONFIG_OF --- linux-3.13.0.orig/arch/arm/xen/grant-table.c +++ linux-3.13.0/arch/arm/xen/grant-table.c @@ -51,3 +51,8 @@ { return -ENOSYS; } + +int arch_gnttab_init(unsigned long nr_shared, unsigned long nr_status) +{ + return 0; +} --- linux-3.13.0.orig/arch/arm64/Kconfig +++ linux-3.13.0/arch/arm64/Kconfig @@ -2,6 +2,7 @@ def_bool y select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE select ARCH_USE_CMPXCHG_LOCKREF + select ARCH_SUPPORTS_ATOMIC_RMW select ARCH_WANT_OPTIONAL_GPIOLIB select ARCH_WANT_COMPAT_IPC_PARSE_VERSION select ARCH_WANT_FRAME_POINTERS @@ -12,6 +13,7 @@ select CLONE_BACKWARDS select COMMON_CLK select GENERIC_CLOCKEVENTS + select GENERIC_EARLY_IOREMAP select GENERIC_IOMAP select GENERIC_IRQ_PROBE select GENERIC_IRQ_SHOW @@ -57,6 +59,10 @@ config STACKTRACE_SUPPORT def_bool y +config ILLEGAL_POINTER_VALUE + hex + default 0xdead000000000000 + config LOCKDEP_SUPPORT def_bool y @@ -113,10 +119,28 @@ Express). config ARCH_XGENE + select PCI + select PCI_DOMAINS bool "AppliedMicro X-Gene SOC Family" help This enables support for AppliedMicro X-Gene SOC Family +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. + endmenu menu "Bus support" @@ -124,6 +148,23 @@ config ARM_AMBA bool +config PCI + bool "PCI support" + help + Find out whether you have a PCI motherboard. PCI is the name of a + bus system, i.e. the way the CPU talks to the other stuff inside + your box. Other bus systems are ISA, EISA, MicroChannel (MCA) or + VESA. If you have PCI, say Y, otherwise N. + +config PCI_DOMAINS + bool + depends on PCI + +config PCI_SYSCALL + def_bool PCI + +source "drivers/pci/Kconfig" +source "drivers/pci/pcie/Kconfig" endmenu menu "Kernel Features" @@ -248,6 +289,20 @@ This is useful if you cannot or don't want to change the command-line options your boot loader passes to the kernel. +config EFI + bool "UEFI runtime support" + depends on OF && !CPU_BIG_ENDIAN + select LIBFDT + select UCS2_STRING + select EFI_PARAMS_FROM_FDT + default y + help + This option provides support for runtime services provided + by UEFI firmware (such as non-volatile variables, realtime + clock, and platform reset). A UEFI stub is also provided to + allow the kernel to be booted as an EFI application. This + is only useful on systems that have UEFI firmware. + endmenu menu "Userspace binary formats" @@ -279,6 +334,10 @@ source "drivers/Kconfig" +source "ubuntu/Kconfig" + +source "drivers/firmware/Kconfig" + source "fs/Kconfig" source "arch/arm64/kvm/Kconfig" --- linux-3.13.0.orig/arch/arm64/Makefile +++ linux-3.13.0/arch/arm64/Makefile @@ -20,6 +20,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 @@ -34,6 +35,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-3.13.0.orig/arch/arm64/boot/dts/apm-mustang.dts +++ linux-3.13.0/arch/arm64/boot/dts/apm-mustang.dts @@ -24,3 +24,27 @@ reg = < 0x1 0x00000000 0x0 0x80000000 >; /* Updated by bootloader */ }; }; + +&pcie0clk { + status = "ok"; +}; + +&pcie0 { + status = "ok"; +}; + +&menet { + status = "ok"; +}; + +&sgenet0 { + status = "ok"; +}; + +&sgenet1 { + status = "ok"; +}; + +&xgenet { + status = "ok"; +}; --- linux-3.13.0.orig/arch/arm64/boot/dts/apm-storm.dtsi +++ linux-3.13.0/arch/arm64/boot/dts/apm-storm.dtsi @@ -97,12 +97,22 @@ clock-frequency = <50000000>; }; + pmu { + compatible = "apm,potenza-pmu", "arm,armv8-pmuv3"; + interrupts = <1 12 0xff04>; + }; + soc { compatible = "simple-bus"; #address-cells = <2>; #size-cells = <2>; ranges; + scu: system-clk-controller@17000000 { + compatible = "apm,xgene-scu","syscon"; + reg = <0x0 0x17000000 0x0 0x400>; + }; + clocks { #address-cells = <2>; #size-cells = <2>; @@ -118,7 +128,7 @@ compatible = "apm,xgene-pcppll-clock"; #clock-cells = <1>; clocks = <&refclk 0>; - clock-names = "pcppll"; + clock-names = "refclk"; reg = <0x0 0x17000100 0x0 0x1000>; clock-output-names = "pcppll"; type = <0>; @@ -128,7 +138,7 @@ compatible = "apm,xgene-socpll-clock"; #clock-cells = <1>; clocks = <&refclk 0>; - clock-names = "socpll"; + clock-names = "refclk"; reg = <0x0 0x17000120 0x0 0x1000>; clock-output-names = "socpll"; type = <1>; @@ -141,7 +151,7 @@ clock-names = "socplldiv2"; clock-mult = <1>; clock-div = <2>; - clock-output-names = "socplldiv2"; + clock-output-names = "socpll"; }; qmlclk: qmlclk { @@ -167,17 +177,332 @@ clock-output-names = "ethclk"; }; - eth8clk: eth8clk { + menetclk: menetclk { compatible = "apm,xgene-device-clock"; #clock-cells = <1>; clocks = <ðclk 0>; - clock-names = "eth8clk"; reg = <0x0 0x1702C000 0x0 0x1000>; reg-names = "csr-reg"; - clock-output-names = "eth8clk"; + clock-output-names = "menetclk"; + }; + + sge0clk: sge0clk@1f21c000 { + compatible = "apm,xgene-device-clock"; + #clock-cells = <1>; + clocks = <&socplldiv2 0>; + reg = <0x0 0x1f21c000 0x0 0x1000>; + reg-names = "csr-reg"; + csr-mask = <0x3>; + clock-output-names = "sge0clk"; + }; + + sge1clk: sge1clk@1f21c000 { + compatible = "apm,xgene-device-clock"; + #clock-cells = <1>; + clocks = <&socplldiv2 0>; + reg = <0x0 0x1f21c000 0x0 0x1000>; + reg-names = "csr-reg"; + csr-mask = <0xc>; + clock-output-names = "sge1clk"; + }; + + xge0clk: xge0clk@1f61c000 { + compatible = "apm,xgene-device-clock"; + #clock-cells = <1>; + clocks = <&socplldiv2 0>; + reg = <0x0 0x1f61c000 0x0 0x1000>; + reg-names = "csr-reg"; + csr-mask = <0x3>; + clock-output-names = "xge0clk"; + }; + + sataphy1clk: sataphy1clk@1f21c000 { + compatible = "apm,xgene-device-clock"; + #clock-cells = <1>; + clocks = <&socplldiv2 0>; + reg = <0x0 0x1f21c000 0x0 0x1000>; + reg-names = "csr-reg"; + clock-output-names = "sataphy1clk"; + csr-offset = <0x4>; + csr-mask = <0x3a>; + enable-offset = <0x0>; + enable-mask = <0x06>; + }; + + sataphy2clk: sataphy1clk@1f22c000 { + compatible = "apm,xgene-device-clock"; + #clock-cells = <1>; + clocks = <&socplldiv2 0>; + reg = <0x0 0x1f22c000 0x0 0x1000>; + reg-names = "csr-reg"; + clock-output-names = "sataphy2clk"; + csr-offset = <0x4>; + csr-mask = <0x3a>; + enable-offset = <0x0>; + enable-mask = <0x06>; + }; + + sataphy3clk: sataphy1clk@1f23c000 { + compatible = "apm,xgene-device-clock"; + #clock-cells = <1>; + clocks = <&socplldiv2 0>; + reg = <0x0 0x1f23c000 0x0 0x1000>; + reg-names = "csr-reg"; + clock-output-names = "sataphy3clk"; + csr-offset = <0x4>; + csr-mask = <0x3a>; + enable-offset = <0x0>; + enable-mask = <0x06>; + }; + + sata01clk: sata01clk@1f21c000 { + compatible = "apm,xgene-device-clock"; + #clock-cells = <1>; + clocks = <&socplldiv2 0>; + reg = <0x0 0x1f21c000 0x0 0x1000>; + reg-names = "csr-reg"; + clock-output-names = "sata01clk"; + csr-offset = <0x4>; + csr-mask = <0x05>; + enable-offset = <0x0>; + enable-mask = <0x39>; + }; + + sata23clk: sata23clk@1f22c000 { + compatible = "apm,xgene-device-clock"; + #clock-cells = <1>; + clocks = <&socplldiv2 0>; + reg = <0x0 0x1f22c000 0x0 0x1000>; + reg-names = "csr-reg"; + clock-output-names = "sata23clk"; + csr-offset = <0x4>; + csr-mask = <0x05>; + enable-offset = <0x0>; + enable-mask = <0x39>; + }; + + sata45clk: sata45clk@1f23c000 { + compatible = "apm,xgene-device-clock"; + #clock-cells = <1>; + clocks = <&socplldiv2 0>; + reg = <0x0 0x1f23c000 0x0 0x1000>; + reg-names = "csr-reg"; + clock-output-names = "sata45clk"; + csr-offset = <0x4>; + csr-mask = <0x05>; + enable-offset = <0x0>; + enable-mask = <0x39>; + }; + + pcie0clk: pcie0clk@1f2bc000 { + status = "disabled"; + compatible = "apm,xgene-device-clock"; + #clock-cells = <1>; + clocks = <&socplldiv2 0>; + reg = <0x0 0x1f2bc000 0x0 0x1000>; + reg-names = "csr-reg"; + clock-output-names = "pcie0clk"; + }; + + pcie1clk: pcie1clk@1f2cc000 { + status = "disabled"; + compatible = "apm,xgene-device-clock"; + #clock-cells = <1>; + clocks = <&socplldiv2 0>; + reg = <0x0 0x1f2cc000 0x0 0x1000>; + reg-names = "csr-reg"; + clock-output-names = "pcie1clk"; + }; + + pcie2clk: pcie2clk@1f2dc000 { + status = "disabled"; + compatible = "apm,xgene-device-clock"; + #clock-cells = <1>; + clocks = <&socplldiv2 0>; + reg = <0x0 0x1f2dc000 0x0 0x1000>; + reg-names = "csr-reg"; + clock-output-names = "pcie2clk"; + }; + + pcie3clk: pcie3clk@1f50c000 { + status = "disabled"; + compatible = "apm,xgene-device-clock"; + #clock-cells = <1>; + clocks = <&socplldiv2 0>; + reg = <0x0 0x1f50c000 0x0 0x1000>; + reg-names = "csr-reg"; + clock-output-names = "pcie3clk"; + }; + + pcie4clk: pcie4clk@1f51c000 { + status = "disabled"; + compatible = "apm,xgene-device-clock"; + #clock-cells = <1>; + clocks = <&socplldiv2 0>; + reg = <0x0 0x1f51c000 0x0 0x1000>; + reg-names = "csr-reg"; + clock-output-names = "pcie4clk"; + }; + + rtcclk: rtcclk@17000000 { + compatible = "apm,xgene-device-clock"; + #clock-cells = <1>; + clocks = <&socplldiv2 0>; + reg = <0x0 0x17000000 0x0 0x2000>; + reg-names = "csr-reg"; + csr-offset = <0xc>; + csr-mask = <0x2>; + enable-offset = <0x10>; + enable-mask = <0x2>; + clock-output-names = "rtcclk"; + }; + + rngpkaclk: rngpkaclk@17000000 { + compatible = "apm,xgene-device-clock"; + #clock-cells = <1>; + clocks = <&socplldiv2 0>; + reg = <0x0 0x17000000 0x0 0x2000>; + reg-names = "csr-reg"; + csr-offset = <0xc>; + csr-mask = <0x10>; + enable-offset = <0x10>; + enable-mask = <0x10>; + clock-output-names = "rngpkaclk"; }; }; + msi: msi@79000000 { + compatible = "xgene,gic-msi"; + reg = <0x00 0x79000000 0x0 0x900000>; + msi-available-ranges = <0x0 0x1000>; + interrupts = < 0x0 0x10 0x4 + 0x0 0x11 0x4 + 0x0 0x12 0x4 + 0x0 0x13 0x4 + 0x0 0x14 0x4 + 0x0 0x15 0x4 + 0x0 0x16 0x4 + 0x0 0x17 0x4 + 0x0 0x18 0x4 + 0x0 0x19 0x4 + 0x0 0x1a 0x4 + 0x0 0x1b 0x4 + 0x0 0x1c 0x4 + 0x0 0x1d 0x4 + 0x0 0x1e 0x4 + 0x0 0x1f 0x4>; + }; + + pcie0: pcie@1f2b0000 { + status = "disabled"; + device_type = "pci"; + compatible = "apm,xgene-pcie"; + #interrupt-cells = <1>; + #size-cells = <2>; + #address-cells = <3>; + reg = < 0x00 0x1f2b0000 0x0 0x00010000 /* Controller registers */ + 0xe0 0xd0000000 0x0 0x00200000>; /* PCI config space */ + reg-names = "csr", "cfg"; + ranges = <0x01000000 0x00 0x00000000 0xe0 0x00000000 0x00 0x00010000 /* io */ + 0x02000000 0x00 0x10000000 0xe0 0x10000000 0x00 0x80000000>; /* mem */ + ib-ranges = <0x42000000 0x40 0x00000000 0x40 0x00000000 0x40 0x00000000 /* dma */ + 0x00000000 0x0 0x79000000 0x00 0x79000000 0x0 0x00800000>; /* msi */ + interrupt-map-mask = <0x0 0x0 0x0 0x7>; + interrupt-map = <0x0 0x0 0x0 0x1 &gic 0x0 0xc2 0x1 + 0x0 0x0 0x0 0x2 &gic 0x0 0xc3 0x1 + 0x0 0x0 0x0 0x3 &gic 0x0 0xc4 0x1 + 0x0 0x0 0x0 0x4 &gic 0x0 0xc5 0x1>; + clocks = <&pcie0clk 0>; + }; + + pcie1: pcie@1f2c0000 { + status = "disabled"; + device_type = "pci"; + compatible = "apm,xgene-pcie"; + #interrupt-cells = <1>; + #size-cells = <2>; + #address-cells = <3>; + reg = < 0x00 0x1f2c0000 0x0 0x00010000 /* Controller registers */ + 0xd0 0xd0000000 0x0 0x00200000>; /* PCI config space */ + reg-names = "csr", "cfg"; + ranges = <0x01000000 0x0 0x00000000 0xd0 0x00000000 0x00 0x00010000 /* io */ + 0x02000000 0x0 0x10000000 0xd0 0x10000000 0x00 0x80000000>; /* mem */ + ib-ranges = <0x42000000 0x40 0x00000000 0x40 0x00000000 0x40 0x00000000 /* dma */ + 0x00000000 0x0 0x79000000 0x00 0x79000000 0x0 0x00800000>; /* msi */ + interrupt-map-mask = <0x0 0x0 0x0 0x7>; + interrupt-map = <0x0 0x0 0x0 0x1 &gic 0x0 0xc8 0x1 + 0x0 0x0 0x0 0x2 &gic 0x0 0xc9 0x1 + 0x0 0x0 0x0 0x3 &gic 0x0 0xca 0x1 + 0x0 0x0 0x0 0x4 &gic 0x0 0xcb 0x1>; + clocks = <&pcie1clk 0>; + }; + + pcie2: pcie@1f2d0000 { + status = "disabled"; + device_type = "pci"; + compatible = "apm,xgene-pcie"; + #interrupt-cells = <1>; + #size-cells = <2>; + #address-cells = <3>; + reg = < 0x00 0x1f2d0000 0x0 0x00010000 /* Controller registers */ + 0x90 0xd0000000 0x0 0x00200000>; /* PCI config space */ + reg-names = "csr", "cfg"; + ranges = <0x01000000 0x0 0x00000000 0x90 0x00000000 0x0 0x00010000 /* io */ + 0x02000000 0x0 0x10000000 0x90 0x10000000 0x0 0x80000000>; /* mem */ + ib-ranges = <0x42000000 0x40 0x00000000 0x40 0x00000000 0x40 0x00000000 /* dma */ + 0x00000000 0x0 0x79000000 0x00 0x79000000 0x0 0x00800000>; /* msi */ + interrupt-map-mask = <0x0 0x0 0x0 0x7>; + interrupt-map = <0x0 0x0 0x0 0x1 &gic 0x0 0xce 0x1 + 0x0 0x0 0x0 0x2 &gic 0x0 0xcf 0x1 + 0x0 0x0 0x0 0x3 &gic 0x0 0xd0 0x1 + 0x0 0x0 0x0 0x4 &gic 0x0 0xd1 0x1>; + clocks = <&pcie2clk 0>; + }; + + pcie3: pcie@1f500000 { + status = "disabled"; + device_type = "pci"; + compatible = "apm,xgene-pcie"; + #interrupt-cells = <1>; + #size-cells = <2>; + #address-cells = <3>; + reg = < 0x00 0x1f500000 0x0 0x00010000 /* Controller registers */ + 0xa0 0xd0000000 0x0 0x00200000>; /* PCI config space */ + reg-names = "csr", "cfg"; + ranges = <0x01000000 0x0 0x00000000 0xa0 0x00000000 0x0 0x00010000 /* io */ + 0x02000000 0x0 0x10000000 0xa0 0x10000000 0x0 0x80000000>; /* mem */ + ib-ranges = <0x42000000 0x40 0x00000000 0x40 0x00000000 0x40 0x00000000 /* dma */ + 0x00000000 0x0 0x79000000 0x00 0x79000000 0x0 0x00800000>; /* msi */ + interrupt-map-mask = <0x0 0x0 0x0 0x7>; + interrupt-map = <0x0 0x0 0x0 0x1 &gic 0x0 0xd4 0x1 + 0x0 0x0 0x0 0x2 &gic 0x0 0xd5 0x1 + 0x0 0x0 0x0 0x3 &gic 0x0 0xd6 0x1 + 0x0 0x0 0x0 0x4 &gic 0x0 0xd7 0x1>; + clocks = <&pcie3clk 0>; + }; + + pcie4: pcie@1f510000 { + status = "disabled"; + device_type = "pci"; + compatible = "apm,xgene-pcie"; + #interrupt-cells = <1>; + #size-cells = <2>; + #address-cells = <3>; + reg = < 0x00 0x1f510000 0x0 0x00010000 /* Controller registers */ + 0xc0 0xd0000000 0x0 0x00200000>; /* PCI config space */ + reg-names = "csr", "cfg"; + ranges = <0x01000000 0x0 0x00000000 0xc0 0x00000000 0x0 0x00010000 /* io */ + 0x02000000 0x0 0x10000000 0xc0 0x10000000 0x0 0x80000000>; /* mem */ + ib-ranges = <0x42000000 0x40 0x00000000 0x40 0x00000000 0x40 0x00000000 /* dma */ + 0x00000000 0x0 0x79000000 0x00 0x79000000 0x0 0x00800000>; /* msi */ + interrupt-map-mask = <0x0 0x0 0x0 0x7>; + interrupt-map = <0x0 0x0 0x0 0x1 &gic 0x0 0xda 0x1 + 0x0 0x0 0x0 0x2 &gic 0x0 0xdb 0x1 + 0x0 0x0 0x0 0x3 &gic 0x0 0xdc 0x1 + 0x0 0x0 0x0 0x4 &gic 0x0 0xdd 0x1>; + clocks = <&pcie4clk 0>; + }; + serial0: serial@1c020000 { device_type = "serial"; compatible = "ns16550"; @@ -187,5 +512,215 @@ interrupt-parent = <&gic>; interrupts = <0x0 0x4c 0x4>; }; + + serial1: serial@1c021000 { + status = "disabled"; + device_type = "serial"; + compatible = "ns16550a"; + reg = <0x0 0x1c021000 0x0 0x1000>; + reg-shift = <2>; + clock-frequency = <10000000>; /* Updated by bootloader */ + interrupt-parent = <&gic>; + interrupts = <0x0 0x4d 0x4>; + }; + + reboot@17000014 { + compatible = "syscon-reboot"; + regmap = <&scu>; + offset = <0x14>; + mask = <0x1>; + }; + + phy1: phy@1f21a000 { + compatible = "apm,xgene-phy"; + reg = <0x0 0x1f21a000 0x0 0x100>; + #phy-cells = <1>; + clocks = <&sataphy1clk 0>; + status = "disabled"; + apm,tx-boost-gain = <30 30 30 30 30 30>; + apm,tx-eye-tuning = <2 10 10 2 10 10>; + }; + + phy2: phy@1f22a000 { + compatible = "apm,xgene-phy"; + reg = <0x0 0x1f22a000 0x0 0x100>; + #phy-cells = <1>; + clocks = <&sataphy2clk 0>; + status = "ok"; + apm,tx-boost-gain = <30 30 30 30 30 30>; + apm,tx-eye-tuning = <1 10 10 2 10 10>; + }; + + phy3: phy@1f23a000 { + compatible = "apm,xgene-phy"; + reg = <0x0 0x1f23a000 0x0 0x100>; + #phy-cells = <1>; + clocks = <&sataphy3clk 0>; + status = "ok"; + apm,tx-boost-gain = <31 31 31 31 31 31>; + apm,tx-eye-tuning = <2 10 10 2 10 10>; + }; + + sata1: sata@1a000000 { + compatible = "apm,xgene-ahci"; + reg = <0x0 0x1a000000 0x0 0x1000>, + <0x0 0x1f210000 0x0 0x1000>, + <0x0 0x1f21d000 0x0 0x1000>, + <0x0 0x1f21e000 0x0 0x1000>, + <0x0 0x1f217000 0x0 0x1000>; + interrupts = <0x0 0x86 0x4>; + status = "disabled"; + clocks = <&sata01clk 0>; + phys = <&phy1 0>; + phy-names = "sata-phy"; + }; + + sata2: sata@1a400000 { + compatible = "apm,xgene-ahci"; + reg = <0x0 0x1a400000 0x0 0x1000>, + <0x0 0x1f220000 0x0 0x1000>, + <0x0 0x1f22d000 0x0 0x1000>, + <0x0 0x1f22e000 0x0 0x1000>, + <0x0 0x1f227000 0x0 0x1000>; + interrupts = <0x0 0x87 0x4>; + status = "ok"; + clocks = <&sata23clk 0>; + phys = <&phy2 0>; + phy-names = "sata-phy"; + }; + + sata3: sata@1a800000 { + compatible = "apm,xgene-ahci"; + reg = <0x0 0x1a800000 0x0 0x1000>, + <0x0 0x1f230000 0x0 0x1000>, + <0x0 0x1f23d000 0x0 0x1000>, + <0x0 0x1f23e000 0x0 0x1000>; + interrupts = <0x0 0x88 0x4>; + status = "ok"; + clocks = <&sata45clk 0>; + phys = <&phy3 0>; + phy-names = "sata-phy"; + }; + + /* Do not change dwusb name, coded for backward compatibility */ + usb0: dwusb@19000000 { + status = "disabled"; + compatible = "snps,dwc3"; + reg = <0x0 0x19000000 0x0 0x100000>; + interrupts = <0x0 0x89 0x4>; + dma-coherent; + dr_mode = "host"; + }; + + usb1: dwusb@19800000 { + status = "disabled"; + compatible = "snps,dwc3"; + reg = <0x0 0x19800000 0x0 0x100000>; + interrupts = <0x0 0x8a 0x4>; + dma-coherent; + dr_mode = "host"; + }; + + rtc: rtc@10510000 { + compatible = "apm,xgene-rtc"; + reg = <0x0 0x10510000 0x0 0x400>; + interrupts = <0x0 0x46 0x4>; + #clock-cells = <1>; + clocks = <&rtcclk 0>; + }; + + dwgpio: dwgpio@1c024000 { + compatible = "snps,dw-apb-gpio"; + reg = <0x0 0x1c024000 0x0 0x1000>; + reg-io-width = <4>; + #address-cells = <1>; + #size-cells = <0>; + + porta: gpio-controller@0 { + compatible = "snps,dw-apb-gpio-port"; + gpio-controller; + snps,nr-gpios = <32>; + reg = <0>; + }; + }; + + menet: ethernet@17020000 { + compatible = "apm,xgene-enet"; + status = "disabled"; + reg = <0x0 0x17020000 0x0 0xd100>, + <0x0 0X17030000 0x0 0Xc300>, + <0x0 0X10000000 0x0 0X200>; + reg-names = "enet_csr", "ring_csr", "ring_cmd"; + interrupts = <0x0 0x3c 0x4>; + dma-coherent; + clocks = <&menetclk 0>; + /* mac address will be overwritten by the bootloader */ + local-mac-address = [00 00 00 00 00 00]; + phy-connection-type = "rgmii"; + phy-handle = <&menetphy>; + mdio { + compatible = "apm,xgene-mdio"; + #address-cells = <1>; + #size-cells = <0>; + menetphy: menetphy@3 { + compatible = "ethernet-phy-id001c.c915"; + reg = <0x3>; + }; + + }; + }; + + sgenet0: ethernet@1f210000 { + compatible = "apm,xgene1-sgenet"; + status = "disabled"; + reg = <0x0 0x1f210000 0x0 0xd100>, + <0x0 0x1f200000 0x0 0Xc300>, + <0x0 0x1B000000 0x0 0X200>; + reg-names = "enet_csr", "ring_csr", "ring_cmd"; + interrupts = <0x0 0xA0 0x4>; + dma-coherent; + clocks = <&sge0clk 0>; + local-mac-address = [00 00 00 00 00 00]; + phy-connection-type = "sgmii"; + }; + + sgenet1: ethernet@1f210030 { + compatible = "apm,xgene1-sgenet"; + status = "disabled"; + reg = <0x0 0x1f210030 0x0 0xd100>, + <0x0 0x1f200000 0x0 0Xc300>, + <0x0 0x1B000000 0x0 0X8000>; + reg-names = "enet_csr", "ring_csr", "ring_cmd"; + interrupts = <0x0 0xAC 0x4>, + <0x0 0xAD 0x4>; + port-id = <1>; + dma-coherent; + clocks = <&sge1clk 0>; + local-mac-address = [00 00 00 00 00 00]; + phy-connection-type = "sgmii"; + }; + + xgenet: ethernet@1f610000 { + compatible = "apm,xgene1-xgenet"; + status = "disabled"; + reg = <0x0 0x1f610000 0x0 0xd100>, + <0x0 0x1f600000 0x0 0Xc300>, + <0x0 0x18000000 0x0 0X200>; + reg-names = "enet_csr", "ring_csr", "ring_cmd"; + interrupts = <0x0 0x60 0x4>; + dma-coherent; + clocks = <&xge0clk 0>; + /* mac address will be overwritten by the bootloader */ + local-mac-address = [00 00 00 00 00 00]; + phy-connection-type = "xgmii"; + }; + + rng: rng@10520000 { + compatible = "apm,xgene-rng"; + reg = <0x0 0x10520000 0x0 0x100>; + interrupts = <0x0 0x41 0x4>; + clocks = <&rngpkaclk 0>; + }; + }; }; --- linux-3.13.0.orig/arch/arm64/include/asm/Kbuild +++ linux-3.13.0/arch/arm64/include/asm/Kbuild @@ -10,6 +10,7 @@ generic-y += div64.h generic-y += dma.h generic-y += emergency-restart.h +generic-y += early_ioremap.h generic-y += errno.h generic-y += ftrace.h generic-y += hw_irq.h @@ -28,7 +29,6 @@ generic-y += pci.h generic-y += percpu.h generic-y += poll.h -generic-y += posix_types.h generic-y += resource.h generic-y += scatterlist.h generic-y += sections.h --- linux-3.13.0.orig/arch/arm64/include/asm/arch_timer.h +++ linux-3.13.0/arch/arm64/include/asm/arch_timer.h @@ -135,6 +135,15 @@ #endif } +static inline u64 arch_counter_get_cntpct(void) +{ + /* + * AArch64 kernel and user space mandate the use of CNTVCT. + */ + BUG(); + return 0; +} + static inline u64 arch_counter_get_cntvct(void) { u64 cval; --- linux-3.13.0.orig/arch/arm64/include/asm/atomic.h +++ linux-3.13.0/arch/arm64/include/asm/atomic.h @@ -64,7 +64,7 @@ int result; asm volatile("// atomic_add_return\n" -"1: ldaxr %w0, %2\n" +"1: ldxr %w0, %2\n" " add %w0, %w0, %w3\n" " stlxr %w1, %w0, %2\n" " cbnz %w1, 1b" @@ -72,6 +72,7 @@ : "Ir" (i) : "cc", "memory"); + smp_mb(); return result; } @@ -96,7 +97,7 @@ int result; asm volatile("// atomic_sub_return\n" -"1: ldaxr %w0, %2\n" +"1: ldxr %w0, %2\n" " sub %w0, %w0, %w3\n" " stlxr %w1, %w0, %2\n" " cbnz %w1, 1b" @@ -104,6 +105,7 @@ : "Ir" (i) : "cc", "memory"); + smp_mb(); return result; } @@ -112,17 +114,20 @@ unsigned long tmp; int oldval; + smp_mb(); + asm volatile("// atomic_cmpxchg\n" -"1: ldaxr %w1, %2\n" +"1: ldxr %w1, %2\n" " cmp %w1, %w3\n" " b.ne 2f\n" -" stlxr %w0, %w4, %2\n" +" stxr %w0, %w4, %2\n" " cbnz %w0, 1b\n" "2:" : "=&r" (tmp), "=&r" (oldval), "+Q" (ptr->counter) : "Ir" (old), "r" (new) : "cc", "memory"); + smp_mb(); return oldval; } @@ -183,7 +188,7 @@ unsigned long tmp; asm volatile("// atomic64_add_return\n" -"1: ldaxr %0, %2\n" +"1: ldxr %0, %2\n" " add %0, %0, %3\n" " stlxr %w1, %0, %2\n" " cbnz %w1, 1b" @@ -191,6 +196,7 @@ : "Ir" (i) : "cc", "memory"); + smp_mb(); return result; } @@ -215,7 +221,7 @@ unsigned long tmp; asm volatile("// atomic64_sub_return\n" -"1: ldaxr %0, %2\n" +"1: ldxr %0, %2\n" " sub %0, %0, %3\n" " stlxr %w1, %0, %2\n" " cbnz %w1, 1b" @@ -223,6 +229,7 @@ : "Ir" (i) : "cc", "memory"); + smp_mb(); return result; } @@ -231,17 +238,20 @@ long oldval; unsigned long res; + smp_mb(); + asm volatile("// atomic64_cmpxchg\n" -"1: ldaxr %1, %2\n" +"1: ldxr %1, %2\n" " cmp %1, %3\n" " b.ne 2f\n" -" stlxr %w0, %4, %2\n" +" stxr %w0, %4, %2\n" " cbnz %w0, 1b\n" "2:" : "=&r" (res), "=&r" (oldval), "+Q" (ptr->counter) : "Ir" (old), "r" (new) : "cc", "memory"); + smp_mb(); return oldval; } @@ -253,11 +263,12 @@ unsigned long tmp; asm volatile("// atomic64_dec_if_positive\n" -"1: ldaxr %0, %2\n" +"1: ldxr %0, %2\n" " subs %0, %0, #1\n" " b.mi 2f\n" " stlxr %w1, %0, %2\n" " cbnz %w1, 1b\n" +" dmb ish\n" "2:" : "=&r" (result), "=&r" (tmp), "+Q" (v->counter) : --- linux-3.13.0.orig/arch/arm64/include/asm/cacheflush.h +++ linux-3.13.0/arch/arm64/include/asm/cacheflush.h @@ -116,6 +116,7 @@ static inline void __flush_icache_all(void) { asm("ic ialluis"); + dsb(); } #define flush_dcache_mmap_lock(mapping) \ --- linux-3.13.0.orig/arch/arm64/include/asm/cmpxchg.h +++ linux-3.13.0/arch/arm64/include/asm/cmpxchg.h @@ -29,7 +29,7 @@ switch (size) { case 1: asm volatile("// __xchg1\n" - "1: ldaxrb %w0, %2\n" + "1: ldxrb %w0, %2\n" " stlxrb %w1, %w3, %2\n" " cbnz %w1, 1b\n" : "=&r" (ret), "=&r" (tmp), "+Q" (*(u8 *)ptr) @@ -38,7 +38,7 @@ break; case 2: asm volatile("// __xchg2\n" - "1: ldaxrh %w0, %2\n" + "1: ldxrh %w0, %2\n" " stlxrh %w1, %w3, %2\n" " cbnz %w1, 1b\n" : "=&r" (ret), "=&r" (tmp), "+Q" (*(u16 *)ptr) @@ -47,7 +47,7 @@ break; case 4: asm volatile("// __xchg4\n" - "1: ldaxr %w0, %2\n" + "1: ldxr %w0, %2\n" " stlxr %w1, %w3, %2\n" " cbnz %w1, 1b\n" : "=&r" (ret), "=&r" (tmp), "+Q" (*(u32 *)ptr) @@ -56,7 +56,7 @@ break; case 8: asm volatile("// __xchg8\n" - "1: ldaxr %0, %2\n" + "1: ldxr %0, %2\n" " stlxr %w1, %3, %2\n" " cbnz %w1, 1b\n" : "=&r" (ret), "=&r" (tmp), "+Q" (*(u64 *)ptr) @@ -67,6 +67,7 @@ BUILD_BUG(); } + smp_mb(); return ret; } --- linux-3.13.0.orig/arch/arm64/include/asm/compat.h +++ linux-3.13.0/arch/arm64/include/asm/compat.h @@ -37,8 +37,8 @@ typedef s32 compat_time_t; typedef s32 compat_clock_t; typedef s32 compat_pid_t; -typedef u32 __compat_uid_t; -typedef u32 __compat_gid_t; +typedef u16 __compat_uid_t; +typedef u16 __compat_gid_t; typedef u16 __compat_uid16_t; typedef u16 __compat_gid16_t; typedef u32 __compat_uid32_t; --- linux-3.13.0.orig/arch/arm64/include/asm/cpu_ops.h +++ linux-3.13.0/arch/arm64/include/asm/cpu_ops.h @@ -39,6 +39,7 @@ * from the cpu to be killed. * @cpu_die: Makes a cpu leave the kernel. Must not fail. Called from the * cpu being killed. + * @cpu_kill: Ensures a cpu has left the kernel. Called from another cpu. */ struct cpu_operations { const char *name; @@ -49,6 +50,7 @@ #ifdef CONFIG_HOTPLUG_CPU int (*cpu_disable)(unsigned int cpu); void (*cpu_die)(unsigned int cpu); + int (*cpu_kill)(unsigned int cpu); #endif }; --- linux-3.13.0.orig/arch/arm64/include/asm/cputype.h +++ linux-3.13.0/arch/arm64/include/asm/cputype.h @@ -30,6 +30,16 @@ #define MPIDR_HWID_BITMASK 0xff00ffffff +#define MPIDR_LEVEL_BITS_SHIFT 3 +#define MPIDR_LEVEL_BITS (1 << MPIDR_LEVEL_BITS_SHIFT) +#define MPIDR_LEVEL_MASK ((1 << MPIDR_LEVEL_BITS) - 1) + +#define MPIDR_LEVEL_SHIFT(level) \ + (((1 << level) >> 1) << MPIDR_LEVEL_BITS_SHIFT) + +#define MPIDR_AFFINITY_LEVEL(mpidr, level) \ + ((mpidr >> MPIDR_LEVEL_SHIFT(level)) & MPIDR_LEVEL_MASK) + #define read_cpuid(reg) ({ \ u64 __val; \ asm("mrs %0, " reg : "=r" (__val)); \ @@ -41,6 +51,7 @@ #define ARM_CPU_PART_AEM_V8 0xD0F0 #define ARM_CPU_PART_FOUNDATION 0xD000 +#define ARM_CPU_PART_CORTEX_A53 0xD030 #define ARM_CPU_PART_CORTEX_A57 0xD070 #define APM_CPU_PART_POTENZA 0x0000 --- linux-3.13.0.orig/arch/arm64/include/asm/dma-mapping.h +++ linux-3.13.0/arch/arm64/include/asm/dma-mapping.h @@ -26,8 +26,6 @@ #include #include -#define ARCH_HAS_DMA_GET_REQUIRED_MASK - #define DMA_ERROR_CODE (~(dma_addr_t)0) extern struct dma_map_ops *dma_ops; --- linux-3.13.0.orig/arch/arm64/include/asm/dma.h +++ linux-3.13.0/arch/arm64/include/asm/dma.h @@ -0,0 +1,18 @@ +/* + * Based on linux/arch/arm/include/asm/dma.h + */ +#ifndef __ASM_ARM_DMA_H +#define __ASM_ARM_DMA_H + +/* + * This is the maximum virtual address which can be DMA'd from. + */ +#define MAX_DMA_ADDRESS (~0ULL) + +#ifdef CONFIG_PCI +extern int isa_dma_bridge_buggy; +#else +#define isa_dma_bridge_buggy (0) +#endif + +#endif /* __ASM_ARM_DMA_H */ --- linux-3.13.0.orig/arch/arm64/include/asm/efi.h +++ linux-3.13.0/arch/arm64/include/asm/efi.h @@ -0,0 +1,15 @@ +#ifndef _ASM_EFI_H +#define _ASM_EFI_H + +#include + +#ifdef CONFIG_EFI +extern void efi_init(void); +extern void efi_idmap_init(void); +extern unsigned long arm64_efi_facility; +#else +#define efi_init() +#define efi_idmap_init() +#endif + +#endif /* _ASM_EFI_H */ --- linux-3.13.0.orig/arch/arm64/include/asm/fixmap.h +++ linux-3.13.0/arch/arm64/include/asm/fixmap.h @@ -0,0 +1,67 @@ +/* + * fixmap.h: compile-time virtual memory allocation + * + * 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. + * + * Copyright (C) 1998 Ingo Molnar + * Copyright (C) 2013 Mark Salter + * + * Adapted from arch/x86_64 version. + * + */ + +#ifndef _ASM_ARM64_FIXMAP_H +#define _ASM_ARM64_FIXMAP_H + +#ifndef __ASSEMBLY__ +#include +#include + +/* + * Here we define all the compile-time 'special' virtual + * addresses. The point is to have a constant address at + * compile time, but to set the physical address only + * in the boot process. + * + * These 'compile-time allocated' memory buffers are + * page-sized. Use set_fixmap(idx,phys) to associate + * physical memory with fixmap indices. + * + */ +enum fixed_addresses { + FIX_EARLYCON_MEM_BASE, + __end_of_permanent_fixed_addresses, + + /* + * Temporary boot-time mappings, used by early_ioremap(), + * before ioremap() is functional. + */ +#ifdef CONFIG_ARM64_64K_PAGES +#define NR_FIX_BTMAPS 4 +#else +#define NR_FIX_BTMAPS 64 +#endif +#define FIX_BTMAPS_SLOTS 7 +#define TOTAL_FIX_BTMAPS (NR_FIX_BTMAPS * FIX_BTMAPS_SLOTS) + + FIX_BTMAP_END = __end_of_permanent_fixed_addresses, + FIX_BTMAP_BEGIN = FIX_BTMAP_END + TOTAL_FIX_BTMAPS - 1, + __end_of_fixed_addresses +}; + +#define FIXADDR_SIZE (__end_of_permanent_fixed_addresses << PAGE_SHIFT) +#define FIXADDR_START (FIXADDR_TOP - FIXADDR_SIZE) + +#define FIXMAP_PAGE_IO __pgprot(PROT_DEVICE_nGnRE) + +extern void __early_set_fixmap(enum fixed_addresses idx, + phys_addr_t phys, pgprot_t flags); + +#define __set_fixmap __early_set_fixmap + +#include + +#endif /* !__ASSEMBLY__ */ +#endif /* _ASM_ARM64_FIXMAP_H */ --- linux-3.13.0.orig/arch/arm64/include/asm/futex.h +++ linux-3.13.0/arch/arm64/include/asm/futex.h @@ -24,10 +24,11 @@ #define __futex_atomic_op(insn, ret, oldval, uaddr, tmp, oparg) \ asm volatile( \ -"1: ldaxr %w1, %2\n" \ +"1: ldxr %w1, %2\n" \ insn "\n" \ "2: stlxr %w3, %w0, %2\n" \ " cbnz %w3, 1b\n" \ +" dmb ish\n" \ "3:\n" \ " .pushsection .fixup,\"ax\"\n" \ "4: mov %w0, %w5\n" \ @@ -110,11 +111,12 @@ return -EFAULT; asm volatile("// futex_atomic_cmpxchg_inatomic\n" -"1: ldaxr %w1, %2\n" +"1: ldxr %w1, %2\n" " sub %w3, %w1, %w4\n" " cbnz %w3, 3f\n" "2: stlxr %w3, %w5, %2\n" " cbnz %w3, 1b\n" +" dmb ish\n" "3:\n" " .pushsection .fixup,\"ax\"\n" "4: mov %w0, %w6\n" --- linux-3.13.0.orig/arch/arm64/include/asm/hw_breakpoint.h +++ linux-3.13.0/arch/arm64/include/asm/hw_breakpoint.h @@ -79,7 +79,6 @@ */ #define ARM_MAX_BRP 16 #define ARM_MAX_WRP 16 -#define ARM_MAX_HBP_SLOTS (ARM_MAX_BRP + ARM_MAX_WRP) /* Virtual debug register bases. */ #define AARCH64_DBG_REG_BVR 0 --- linux-3.13.0.orig/arch/arm64/include/asm/hwcap.h +++ linux-3.13.0/arch/arm64/include/asm/hwcap.h @@ -30,6 +30,7 @@ #define COMPAT_HWCAP_IDIVA (1 << 17) #define COMPAT_HWCAP_IDIVT (1 << 18) #define COMPAT_HWCAP_IDIV (COMPAT_HWCAP_IDIVA|COMPAT_HWCAP_IDIVT) +#define COMPAT_HWCAP_LPAE (1 << 20) #define COMPAT_HWCAP_EVTSTRM (1 << 21) #ifndef __ASSEMBLY__ --- linux-3.13.0.orig/arch/arm64/include/asm/io.h +++ linux-3.13.0/arch/arm64/include/asm/io.h @@ -27,6 +27,7 @@ #include #include #include +#include #include @@ -118,10 +119,27 @@ #define writeq(v,c) ({ __iowmb(); writeq_relaxed((v),(c)); }) /* + * A typesafe __io() helper + */ +static inline void __iomem *__typesafe_io(unsigned long addr) +{ + return (void __iomem *)addr; +} + +/* * I/O port access primitives. */ -#define IO_SPACE_LIMIT 0xffff #define PCI_IOBASE ((void __iomem *)(MODULES_VADDR - SZ_2M)) +#if defined(CONFIG_PCI) +#define IO_SPACE_LIMIT ((resource_size_t)0xffffffff) +#define __io(a) __typesafe_io((unsigned long)PCI_IOBASE + \ + ((a) & IO_SPACE_LIMIT)) +#else +#define __io(a) __typesafe_io((a) & IO_SPACE_LIMIT) +#endif +extern void __iomem *ioport_map(unsigned long port, unsigned int nr); +extern void ioport_unmap(void __iomem *addr); +extern int pci_ioremap_io(unsigned int offset, phys_addr_t phys_addr); static inline u8 inb(unsigned long addr) { --- linux-3.13.0.orig/arch/arm64/include/asm/kvm_arm.h +++ linux-3.13.0/arch/arm64/include/asm/kvm_arm.h @@ -62,6 +62,7 @@ * RW: 64bit by default, can be overriden for 32bit VMs * TAC: Trap ACTLR * TSC: Trap SMC + * TVM: Trap VM ops (until M+C set in SCTLR_EL1) * TSW: Trap cache operations by set/way * TWE: Trap WFE * TWI: Trap WFI @@ -74,7 +75,7 @@ * SWIO: Turn set/way invalidates into set/way clean+invalidate */ #define HCR_GUEST_FLAGS (HCR_TSC | HCR_TSW | HCR_TWE | HCR_TWI | HCR_VM | \ - HCR_BSU_IS | HCR_FB | HCR_TAC | \ + HCR_TVM | HCR_BSU_IS | HCR_FB | HCR_TAC | \ HCR_AMO | HCR_IMO | HCR_FMO | \ HCR_SWIO | HCR_TIDCP | HCR_RW) #define HCR_VIRT_EXCP_MASK (HCR_VA | HCR_VI | HCR_VF) --- linux-3.13.0.orig/arch/arm64/include/asm/kvm_asm.h +++ linux-3.13.0/arch/arm64/include/asm/kvm_asm.h @@ -79,7 +79,8 @@ #define c13_TID_URW (TPIDR_EL0 * 2) /* Thread ID, User R/W */ #define c13_TID_URO (TPIDRRO_EL0 * 2)/* Thread ID, User R/O */ #define c13_TID_PRIV (TPIDR_EL1 * 2) /* Thread ID, Privileged */ -#define c10_AMAIR (AMAIR_EL1 * 2) /* Aux Memory Attr Indirection Reg */ +#define c10_AMAIR0 (AMAIR_EL1 * 2) /* Aux Memory Attr Indirection Reg */ +#define c10_AMAIR1 (c10_AMAIR0 + 1)/* Aux Memory Attr Indirection Reg */ #define c14_CNTKCTL (CNTKCTL_EL1 * 2) /* Timer Control Register (PL1) */ #define NR_CP15_REGS (NR_SYS_REGS * 2) --- linux-3.13.0.orig/arch/arm64/include/asm/kvm_emulate.h +++ linux-3.13.0/arch/arm64/include/asm/kvm_emulate.h @@ -79,11 +79,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-3.13.0.orig/arch/arm64/include/asm/kvm_host.h +++ linux-3.13.0/arch/arm64/include/asm/kvm_host.h @@ -26,7 +26,12 @@ #include #include -#define KVM_MAX_VCPUS 4 +#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 @@ -34,7 +39,7 @@ #include #include -#define KVM_VCPU_MAX_FEATURES 2 +#define KVM_VCPU_MAX_FEATURES 3 struct kvm_vcpu; int kvm_target_cpu(void); --- linux-3.13.0.orig/arch/arm64/include/asm/kvm_mmu.h +++ linux-3.13.0/arch/arm64/include/asm/kvm_mmu.h @@ -106,7 +106,6 @@ return true; } -static inline void kvm_clean_dcache_area(void *addr, size_t size) {} static inline void kvm_clean_pgd(pgd_t *pgd) {} static inline void kvm_clean_pmd_entry(pmd_t *pmd) {} static inline void kvm_clean_pte(pte_t *pte) {} @@ -122,11 +121,25 @@ pmd_val(*pmd) |= PMD_S2_RDWR; } +#define kvm_pgd_addr_end(addr, end) pgd_addr_end(addr, end) +#define kvm_pud_addr_end(addr, end) pud_addr_end(addr, end) +#define kvm_pmd_addr_end(addr, end) pmd_addr_end(addr, end) + struct kvm; -static inline void coherent_icache_guest_page(struct kvm *kvm, hva_t hva, - unsigned long size) +#define kvm_flush_dcache_to_poc(a,l) __flush_dcache_area((a), (l)) + +static inline bool vcpu_has_cache_enabled(struct kvm_vcpu *vcpu) +{ + return (vcpu_sys_reg(vcpu, SCTLR_EL1) & 0b101) == 0b101; +} + +static inline void coherent_cache_guest_page(struct kvm_vcpu *vcpu, hva_t hva, + unsigned long size) { + if (!vcpu_has_cache_enabled(vcpu)) + kvm_flush_dcache_to_poc((void *)hva, size); + if (!icache_is_aliasing()) { /* PIPT */ flush_icache_range(hva, hva + size); } else if (!icache_is_aivivt()) { /* non ASID-tagged VIVT */ @@ -135,7 +148,7 @@ } } -#define kvm_flush_dcache_to_poc(a,l) __flush_dcache_area((a), (l)) +void stage2_flush_vm(struct kvm *kvm); #endif /* __ASSEMBLY__ */ #endif /* __ARM64_KVM_MMU_H__ */ --- linux-3.13.0.orig/arch/arm64/include/asm/kvm_psci.h +++ linux-3.13.0/arch/arm64/include/asm/kvm_psci.h @@ -18,6 +18,10 @@ #ifndef __ARM64_KVM_PSCI_H__ #define __ARM64_KVM_PSCI_H__ -bool kvm_psci_call(struct kvm_vcpu *vcpu); +#define KVM_ARM_PSCI_0_1 1 +#define KVM_ARM_PSCI_0_2 2 + +int kvm_psci_version(struct kvm_vcpu *vcpu); +int kvm_psci_call(struct kvm_vcpu *vcpu); #endif /* __ARM64_KVM_PSCI_H__ */ --- linux-3.13.0.orig/arch/arm64/include/asm/memory.h +++ linux-3.13.0/arch/arm64/include/asm/memory.h @@ -49,13 +49,15 @@ #define PAGE_OFFSET (UL(0xffffffffffffffff) << (VA_BITS - 1)) #define MODULES_END (PAGE_OFFSET) #define MODULES_VADDR (MODULES_END - SZ_64M) -#define EARLYCON_IOBASE (MODULES_VADDR - SZ_4M) +#define FIXADDR_TOP (MODULES_VADDR - SZ_2M - PAGE_SIZE) #define TASK_SIZE_64 (UL(1) << VA_BITS) #ifdef CONFIG_COMPAT #define TASK_SIZE_32 UL(0x100000000) #define TASK_SIZE (test_thread_flag(TIF_32BIT) ? \ TASK_SIZE_32 : TASK_SIZE_64) +#define TASK_SIZE_OF(tsk) (test_tsk_thread_flag(tsk, TIF_32BIT) ? \ + TASK_SIZE_32 : TASK_SIZE_64) #else #define TASK_SIZE TASK_SIZE_64 #endif /* CONFIG_COMPAT */ --- linux-3.13.0.orig/arch/arm64/include/asm/mmu.h +++ linux-3.13.0/arch/arm64/include/asm/mmu.h @@ -27,5 +27,8 @@ extern void paging_init(void); extern void setup_mm_for_reboot(void); extern void __iomem *early_io_map(phys_addr_t phys, unsigned long virt); +extern void init_mem_pgprot(void); +/* create an identity mapping for memory (or io if map_io is true) */ +extern void create_id_mapping(phys_addr_t addr, phys_addr_t size, int map_io); #endif --- linux-3.13.0.orig/arch/arm64/include/asm/mmu_context.h +++ linux-3.13.0/arch/arm64/include/asm/mmu_context.h @@ -151,6 +151,15 @@ { unsigned int cpu = smp_processor_id(); + /* + * init_mm.pgd does not contain any user mappings and it is always + * active for kernel addresses in TTBR1. Just set the reserved TTBR0. + */ + if (next == &init_mm) { + cpu_set_reserved_ttbr0(); + return; + } + if (!cpumask_test_and_set_cpu(cpu, mm_cpumask(next)) || prev != next) check_and_switch_context(next, tsk); } --- linux-3.13.0.orig/arch/arm64/include/asm/msi_bitmap.h +++ linux-3.13.0/arch/arm64/include/asm/msi_bitmap.h @@ -0,0 +1,36 @@ +#ifndef MSI_BITMAP_H +#define MSI_BITMAP_H + +/* + * Copyright 2008, Michael Ellerman, 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; version 2 of the + * License. + * + * Borrowed from powerpc arch + */ + +#include +#include + +struct msi_bitmap { + struct device_node *of_node; + unsigned long *bitmap; + spinlock_t lock; + unsigned int irq_count; +}; + +int msi_bitmap_alloc_hwirqs(struct msi_bitmap *bmp, int num); +void msi_bitmap_free_hwirqs(struct msi_bitmap *bmp, unsigned int offset, + unsigned int num); +void msi_bitmap_reserve_hwirq(struct msi_bitmap *bmp, unsigned int hwirq); + +int msi_bitmap_reserve_dt_hwirqs(struct msi_bitmap *bmp); + +int msi_bitmap_alloc(struct msi_bitmap *bmp, unsigned int irq_count, + struct device_node *of_node); +void msi_bitmap_free(struct msi_bitmap *bmp); + +#endif /* MSI_BITMAP_H */ --- linux-3.13.0.orig/arch/arm64/include/asm/pci.h +++ linux-3.13.0/arch/arm64/include/asm/pci.h @@ -0,0 +1,74 @@ +/* + * Based on arch/arm/include/asm/pci.h + */ +#ifndef ASMARM_PCI_H +#define ASMARM_PCI_H + +#ifdef __KERNEL__ +#include +#include + +#include /* for pci_sys_data */ + +extern unsigned long pcibios_min_io; +#define PCIBIOS_MIN_IO pcibios_min_io +extern unsigned long pcibios_min_mem; +#define PCIBIOS_MIN_MEM pcibios_min_mem + +static inline int pcibios_assign_all_busses(void) +{ + return pci_has_flag(PCI_REASSIGN_ALL_RSRC); +} + +#ifdef CONFIG_PCI_DOMAINS +static inline int pci_domain_nr(struct pci_bus *bus) +{ + struct pci_sys_data *root = bus->sysdata; + + return root->domain; +} + +static inline int pci_proc_domain(struct pci_bus *bus) +{ + return pci_domain_nr(bus); +} +#endif /* CONFIG_PCI_DOMAINS */ + +static inline void pcibios_penalize_isa_irq(int irq, int active) +{ + /* We don't do dynamic PCI IRQ allocation */ +} + +/* + * The PCI address space does equal the physical memory address space. + * The networking and block device layers use this boolean for bounce + * buffer decisions. + */ +#define PCI_DMA_BUS_IS_PHYS (1) + +#ifdef CONFIG_PCI +static inline void pci_dma_burst_advice(struct pci_dev *pdev, + enum pci_dma_burst_strategy *strat, + unsigned long *strategy_parameter) +{ + *strat = PCI_DMA_BURST_INFINITY; + *strategy_parameter = ~0UL; +} +#endif + +#define HAVE_PCI_MMAP +extern int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma, + enum pci_mmap_state mmap_state, + int write_combine); + +/* + * Dummy implementation; always return 0. + */ +static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel) +{ + return 0; +} + +#endif /* __KERNEL__ */ + +#endif --- linux-3.13.0.orig/arch/arm64/include/asm/pcibios.h +++ linux-3.13.0/arch/arm64/include/asm/pcibios.h @@ -0,0 +1,98 @@ +/* + * Based on arch/arm/include/asm/mach/pci.h + * + * Copyright (C) 2000 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. + */ + +#ifndef __ASM_PCIBIOS_H +#define __ASM_PCIBIOS_H + +#include + +struct pci_sys_data; +struct pci_ops; +struct pci_bus; +struct device; + +struct hw_pci { +#ifdef CONFIG_PCI_DOMAINS + int domain; +#endif + struct pci_ops *ops; + int nr_controllers; + void **private_data; + int (*setup) (int nr, struct pci_sys_data *); + struct pci_bus *(*scan) (int nr, struct pci_sys_data *); + void (*preinit) (void); + void (*postinit) (void); + u8(*swizzle) (struct pci_dev *dev, u8 *pin); + int (*map_irq) (const struct pci_dev *dev, u8 slot, u8 pin); + resource_size_t(*align_resource) (struct pci_dev *dev, + const struct resource *res, + resource_size_t start, + resource_size_t size, + resource_size_t align); + void (*add_bus) (struct pci_bus *bus); + void (*remove_bus) (struct pci_bus *bus); +}; + +/* + * Per-controller structure + */ +struct pci_sys_data { +#ifdef CONFIG_PCI_DOMAINS + int domain; +#endif + struct list_head node; + int busnr; /* primary bus number */ + u64 mem_offset; /* bus->cpu memory mapping offset */ + unsigned long io_offset; /* bus->cpu IO mapping offset */ + struct pci_bus *bus; /* PCI bus */ + struct list_head resources; /* root bus resources (apertures) */ + struct resource io_res; + char io_res_name[12]; + /* Bridge swizzling */ + u8(*swizzle) (struct pci_dev *, u8 *); + /* IRQ mapping */ + int (*map_irq) (const struct pci_dev *, u8, u8); + /* Resource alignement requirements */ + resource_size_t(*align_resource) (struct pci_dev *dev, + const struct resource *res, + resource_size_t start, + resource_size_t size, + resource_size_t align); + void (*add_bus) (struct pci_bus *bus); + void (*remove_bus) (struct pci_bus *bus); + void *private_data; /* platform controller private data */ +}; + +/* + * Call this with your hw_pci struct to initialise the PCI system. + */ +void pci_common_init_dev(struct device *, struct hw_pci *); + +/* + * Compatibility wrapper for older platforms that do not care about + * passing the parent device. + */ +static inline void pci_common_init(struct hw_pci *hw) +{ + pci_common_init_dev(NULL, hw); +} + +/* + * Setup early fixed I/O mapping. + */ +#if defined(CONFIG_PCI) +extern void pci_map_io_early(unsigned long pfn); +#else +static inline void pci_map_io_early(unsigned long pfn) +{ +} +#endif + +#endif /* __ASM_PCIBIOS_H */ --- linux-3.13.0.orig/arch/arm64/include/asm/pgtable.h +++ linux-3.13.0/arch/arm64/include/asm/pgtable.h @@ -136,10 +136,10 @@ /* * The following only work if pte_present(). Undefined behaviour otherwise. */ -#define pte_present(pte) (pte_val(pte) & (PTE_VALID | PTE_PROT_NONE)) -#define pte_dirty(pte) (pte_val(pte) & PTE_DIRTY) -#define pte_young(pte) (pte_val(pte) & PTE_AF) -#define pte_special(pte) (pte_val(pte) & PTE_SPECIAL) +#define pte_present(pte) (!!(pte_val(pte) & (PTE_VALID | PTE_PROT_NONE))) +#define pte_dirty(pte) (!!(pte_val(pte) & PTE_DIRTY)) +#define pte_young(pte) (!!(pte_val(pte) & PTE_AF)) +#define pte_special(pte) (!!(pte_val(pte) & PTE_SPECIAL)) #define pte_write(pte) (!(pte_val(pte) & PTE_RDONLY)) #define pte_exec(pte) (!(pte_val(pte) & PTE_UXN)) @@ -168,7 +168,7 @@ pte_t *ptep, pte_t pte) { if (pte_valid_user(pte)) { - if (pte_exec(pte)) + if (!pte_special(pte) && pte_exec(pte)) __sync_icache_dcache(pte, addr); if (!pte_dirty(pte)) pte = pte_wrprotect(pte); @@ -253,11 +253,11 @@ * Mark the prot value as uncacheable and unbufferable. */ #define pgprot_noncached(prot) \ - __pgprot_modify(prot, PTE_ATTRINDX_MASK, PTE_ATTRINDX(MT_DEVICE_nGnRnE)) + __pgprot_modify(prot, PTE_ATTRINDX_MASK, PTE_ATTRINDX(MT_DEVICE_nGnRnE) | PTE_PXN | PTE_UXN) #define pgprot_writecombine(prot) \ - __pgprot_modify(prot, PTE_ATTRINDX_MASK, PTE_ATTRINDX(MT_NORMAL_NC)) + __pgprot_modify(prot, PTE_ATTRINDX_MASK, PTE_ATTRINDX(MT_NORMAL_NC) | PTE_PXN | PTE_UXN) #define pgprot_dmacoherent(prot) \ - __pgprot_modify(prot, PTE_ATTRINDX_MASK, PTE_ATTRINDX(MT_NORMAL_NC)) + __pgprot_modify(prot, PTE_ATTRINDX_MASK, PTE_ATTRINDX(MT_NORMAL_NC) | PTE_PXN | PTE_UXN) #define __HAVE_PHYS_MEM_ACCESS_PROT struct file; extern pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn, --- linux-3.13.0.orig/arch/arm64/include/asm/ptrace.h +++ linux-3.13.0/arch/arm64/include/asm/ptrace.h @@ -71,14 +71,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-3.13.0.orig/arch/arm64/include/uapi/asm/kvm.h +++ linux-3.13.0/arch/arm64/include/uapi/asm/kvm.h @@ -31,6 +31,7 @@ #define KVM_NR_SPSR 5 #ifndef __ASSEMBLY__ +#include #include #include @@ -55,8 +56,10 @@ #define KVM_ARM_TARGET_AEM_V8 0 #define KVM_ARM_TARGET_FOUNDATION_V8 1 #define KVM_ARM_TARGET_CORTEX_A57 2 +#define KVM_ARM_TARGET_XGENE_POTENZA 3 +#define KVM_ARM_TARGET_CORTEX_A53 4 -#define KVM_ARM_NUM_TARGETS 3 +#define KVM_ARM_NUM_TARGETS 5 /* KVM_ARM_SET_DEVICE_ADDR ioctl id encoding */ #define KVM_ARM_DEVICE_TYPE_SHIFT 0 @@ -76,6 +79,7 @@ #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 */ +#define KVM_ARM_VCPU_PSCI_0_2 2 /* CPU uses PSCI v0.2 */ struct kvm_vcpu_init { __u32 target; @@ -158,10 +162,10 @@ #define KVM_PSCI_FN_CPU_ON KVM_PSCI_FN(2) #define KVM_PSCI_FN_MIGRATE KVM_PSCI_FN(3) -#define KVM_PSCI_RET_SUCCESS 0 -#define KVM_PSCI_RET_NI ((unsigned long)-1) -#define KVM_PSCI_RET_INVAL ((unsigned long)-2) -#define KVM_PSCI_RET_DENIED ((unsigned long)-3) +#define KVM_PSCI_RET_SUCCESS PSCI_RET_SUCCESS +#define KVM_PSCI_RET_NI PSCI_RET_NOT_SUPPORTED +#define KVM_PSCI_RET_INVAL PSCI_RET_INVALID_PARAMS +#define KVM_PSCI_RET_DENIED PSCI_RET_DENIED #endif --- linux-3.13.0.orig/arch/arm64/include/uapi/asm/posix_types.h +++ linux-3.13.0/arch/arm64/include/uapi/asm/posix_types.h @@ -0,0 +1,10 @@ +#ifndef __ASM_POSIX_TYPES_H +#define __ASM_POSIX_TYPES_H + +typedef unsigned short __kernel_old_uid_t; +typedef unsigned short __kernel_old_gid_t; +#define __kernel_old_uid_t __kernel_old_uid_t + +#include + +#endif /* __ASM_POSIX_TYPES_H */ --- linux-3.13.0.orig/arch/arm64/kernel/Makefile +++ linux-3.13.0/arch/arm64/kernel/Makefile @@ -4,6 +4,8 @@ CPPFLAGS_vmlinux.lds := -DTEXT_OFFSET=$(TEXT_OFFSET) AFLAGS_head.o := -DTEXT_OFFSET=$(TEXT_OFFSET) +CFLAGS_efi-stub.o := -DTEXT_OFFSET=$(TEXT_OFFSET) \ + -I$(src)/../../../scripts/dtc/libfdt # Object file lists. arm64-obj-y := cputable.o debug-monitors.o entry.o irq.o fpsimd.o \ @@ -18,7 +20,10 @@ arm64-obj-$(CONFIG_HW_PERF_EVENTS) += perf_event.o arm64-obj-$(CONFIG_HAVE_HW_BREAKPOINT)+= hw_breakpoint.o arm64-obj-$(CONFIG_EARLY_PRINTK) += early_printk.o +arm64-obj-$(CONFIG_EFI) += efi.o efi-stub.o efi-entry.o +obj-$(CONFIG_PCI) += pcibios.o +obj-$(CONFIG_PCI_MSI) += msi_bitmap.o obj-y += $(arm64-obj-y) vdso/ obj-m += $(arm64-obj-m) head-y := head.o --- linux-3.13.0.orig/arch/arm64/kernel/early_printk.c +++ linux-3.13.0/arch/arm64/kernel/early_printk.c @@ -26,6 +26,8 @@ #include #include +#include + static void __iomem *early_base; static void (*printch)(char ch); @@ -142,7 +144,7 @@ /* no options parsing yet */ if (paddr) - early_base = early_io_map(paddr, EARLYCON_IOBASE); + early_base = (void __iomem *)set_fixmap_offset_io(FIX_EARLYCON_MEM_BASE, paddr); printch = match->printch; early_console = &early_console_dev; --- linux-3.13.0.orig/arch/arm64/kernel/efi-entry.S +++ linux-3.13.0/arch/arm64/kernel/efi-entry.S @@ -0,0 +1,109 @@ +/* + * EFI entry point. + * + * Copyright (C) 2013, 2014 Red Hat, Inc. + * Author: Mark Salter + * + * 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 + +#define EFI_LOAD_ERROR 0x8000000000000001 + + __INIT + + /* + * We arrive here from the EFI boot manager with: + * + * * CPU in little-endian mode + * * MMU on with identity-mapped RAM + * * Icache and Dcache on + * + * We will most likely be running from some place other than where + * we want to be. The kernel image wants to be placed at TEXT_OFFSET + * from start of RAM. + */ +ENTRY(efi_stub_entry) + /* + * Create a stack frame to save FP/LR with extra space + * for image_addr variable passed to efi_entry(). + */ + stp x29, x30, [sp, #-32]! + + /* + * Call efi_entry to do the real work. + * x0 and x1 are already set up by firmware. Current runtime + * address of image is calculated and passed via *image_addr. + * + * unsigned long efi_entry(void *handle, + * efi_system_table_t *sys_table, + * unsigned long *image_addr) ; + */ + adrp x8, _text + add x8, x8, #:lo12:_text + add x2, sp, 16 + str x8, [x2] + bl efi_entry + cmn x0, #1 + b.eq efi_load_fail + + /* + * efi_entry() will have relocated the kernel image if necessary + * and we return here with device tree address in x0 and the kernel + * entry point stored at *image_addr. Save those values in registers + * which are callee preserved. + */ + mov x20, x0 // DTB address + ldr x0, [sp, #16] // relocated _text address + mov x21, x0 + + /* + * Flush dcache covering current runtime addresses + * of kernel text/data. Then flush all of icache. + */ + adrp x1, _text + add x1, x1, #:lo12:_text + adrp x2, _edata + add x2, x2, #:lo12:_edata + sub x1, x2, x1 + + bl __flush_dcache_area + ic ialluis + + /* Turn off Dcache and MMU */ + mrs x0, CurrentEL + cmp x0, #PSR_MODE_EL2t + ccmp x0, #PSR_MODE_EL2h, #0x4, ne + b.ne 1f + mrs x0, sctlr_el2 + bic x0, x0, #1 << 0 // clear SCTLR.M + bic x0, x0, #1 << 2 // clear SCTLR.C + msr sctlr_el2, x0 + isb + b 2f +1: + mrs x0, sctlr_el1 + bic x0, x0, #1 << 0 // clear SCTLR.M + bic x0, x0, #1 << 2 // clear SCTLR.C + msr sctlr_el1, x0 + isb +2: + /* Jump to kernel entry point */ + mov x0, x20 + mov x1, xzr + mov x2, xzr + mov x3, xzr + br x21 + +efi_load_fail: + mov x0, #EFI_LOAD_ERROR + ldp x29, x30, [sp], #32 + ret + +ENDPROC(efi_stub_entry) --- linux-3.13.0.orig/arch/arm64/kernel/efi-stub.c +++ linux-3.13.0/arch/arm64/kernel/efi-stub.c @@ -0,0 +1,87 @@ +/* + * Copyright (C) 2013, 2014 Linaro Ltd; + * + * This file implements the EFI boot stub for the arm64 kernel. + * Adapted from ARM version by Mark Salter + * + * 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 + +/* + * AArch64 requires the DTB to be 8-byte aligned in the first 512MiB from + * start of kernel and may not cross a 2MiB boundary. We set alignment to + * 2MiB so we know it won't cross a 2MiB boundary. + */ +#define EFI_FDT_ALIGN SZ_2M /* used by allocate_new_fdt_and_exit_boot() */ +#define MAX_FDT_OFFSET SZ_512M + +#define efi_call_early(f, ...) sys_table_arg->boottime->f(__VA_ARGS__) + +#define efi_call_phys1(f, arg1) f(arg1) +#define efi_call_phys2(f, arg1, arg2) f(arg1, arg2) +#define efi_call_phys3(f, arg1, arg2, arg3) f(arg1, arg2, arg3) +#define efi_call_phys4(f, arg1, arg2, arg3, arg4) f(arg1, arg2, arg3, arg4) +#define efi_call_phys5(f, arg1, arg2, arg3, arg4, arg5) f(arg1, arg2, arg3, arg4, arg5) + +static void efi_char16_printk(efi_system_table_t *sys_table_arg, + efi_char16_t *str); + +static efi_status_t efi_open_volume(efi_system_table_t *sys_table, + void *__image, void **__fh); +static efi_status_t efi_file_close(void *handle); + +static efi_status_t +efi_file_read(void *handle, unsigned long *size, void *addr); + +static efi_status_t +efi_file_size(efi_system_table_t *sys_table, void *__fh, + efi_char16_t *filename_16, void **handle, u64 *file_sz); + +/* Include shared EFI stub code */ +#include "../../../drivers/firmware/efi/efi-stub-helper.c" +#include "../../../drivers/firmware/efi/fdt.c" +#include "../../../drivers/firmware/efi/arm-stub.c" + + +static efi_status_t handle_kernel_image(efi_system_table_t *sys_table, + unsigned long *image_addr, + unsigned long *image_size, + unsigned long *reserve_addr, + unsigned long *reserve_size, + unsigned long dram_base, + efi_loaded_image_t *image) +{ + efi_status_t status; + unsigned long kernel_size, kernel_memsize = 0; + + /* Relocate the image, if required. */ + kernel_size = _edata - _text; + if (*image_addr != (dram_base + TEXT_OFFSET)) { + kernel_memsize = kernel_size + (_end - _edata); + status = efi_relocate_kernel(sys_table, image_addr, + kernel_size, kernel_memsize, + dram_base + TEXT_OFFSET, + PAGE_SIZE); + if (status != EFI_SUCCESS) { + pr_efi_err(sys_table, "Failed to relocate kernel\n"); + return status; + } + if (*image_addr != (dram_base + TEXT_OFFSET)) { + pr_efi_err(sys_table, "Failed to alloc kernel memory\n"); + efi_free(sys_table, kernel_memsize, *image_addr); + return EFI_ERROR; + } + *image_size = kernel_memsize; + } + + + return EFI_SUCCESS; +} --- linux-3.13.0.orig/arch/arm64/kernel/efi.c +++ linux-3.13.0/arch/arm64/kernel/efi.c @@ -0,0 +1,478 @@ +/* + * Extensible Firmware Interface + * + * Based on Extensible Firmware Interface Specification version 2.4 + * + * Copyright (C) 2013, 2014 Linaro Ltd. + * + * 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 + +struct efi_memory_map memmap; + +static efi_runtime_services_t *runtime; + +static u64 efi_system_table; + +static int uefi_debug __initdata; + +unsigned long arm64_efi_facility; + +static int __init uefi_debug_setup(char *str) +{ + uefi_debug = 1; + + return 0; +} +early_param("uefi_debug", uefi_debug_setup); + +static int __init is_normal_ram(efi_memory_desc_t *md) +{ + if (md->attribute & EFI_MEMORY_WB) + return 1; + return 0; +} + +static void __init efi_setup_idmap(void) +{ + struct memblock_region *r; + efi_memory_desc_t *md; + u64 paddr, npages, size; + + for_each_memblock(memory, r) + create_id_mapping(r->base, r->size, 0); + + /* map runtime io spaces */ + for_each_efi_memory_desc(&memmap, md) { + if (!(md->attribute & EFI_MEMORY_RUNTIME) || is_normal_ram(md)) + continue; + paddr = md->phys_addr; + npages = md->num_pages; + memrange_efi_to_native(&paddr, &npages); + size = npages << PAGE_SHIFT; + create_id_mapping(paddr, size, 1); + } +} + +static int __init uefi_init(void) +{ + efi_char16_t *c16; + char vendor[100] = "unknown"; + int i, retval; + + efi.systab = early_memremap(efi_system_table, + sizeof(efi_system_table_t)); + if (efi.systab == NULL) { + pr_warn("Unable to map EFI system table.\n"); + return -ENOMEM; + } + + set_bit(EFI_BOOT, &arm64_efi_facility); + set_bit(EFI_64BIT, &arm64_efi_facility); + + /* + * Verify the EFI Table + */ + if (efi.systab->hdr.signature != EFI_SYSTEM_TABLE_SIGNATURE) { + pr_err("System table signature incorrect\n"); + return -EINVAL; + } + if ((efi.systab->hdr.revision >> 16) < 2) + pr_warn("Warning: EFI system table version %d.%02d, expected 2.00 or greater\n", + efi.systab->hdr.revision >> 16, + efi.systab->hdr.revision & 0xffff); + + /* Show what we know for posterity */ + c16 = early_memremap(efi.systab->fw_vendor, + sizeof(vendor)); + if (c16) { + for (i = 0; i < (int) sizeof(vendor) - 1 && *c16; ++i) + vendor[i] = c16[i]; + vendor[i] = '\0'; + } + + pr_info("EFI v%u.%.02u by %s\n", + efi.systab->hdr.revision >> 16, + efi.systab->hdr.revision & 0xffff, vendor); + + retval = efi_config_init(NULL); + if (retval == 0) + set_bit(EFI_CONFIG_TABLES, &arm64_efi_facility); + + early_memunmap(c16, sizeof(vendor)); + early_memunmap(efi.systab, sizeof(efi_system_table_t)); + + return retval; +} + +static __initdata char memory_type_name[][32] = { + {"Reserved"}, + {"Loader Code"}, + {"Loader Data"}, + {"Boot Code"}, + {"Boot Data"}, + {"Runtime Code"}, + {"Runtime Data"}, + {"Conventional Memory"}, + {"Unusable Memory"}, + {"ACPI Reclaim Memory"}, + {"ACPI Memory NVS"}, + {"Memory Mapped I/O"}, + {"MMIO Port Space"}, + {"PAL Code"}, +}; + +/* + * Return true for RAM regions we want to permanently reserve. + */ +static __init int is_reserve_region(efi_memory_desc_t *md) +{ + if (!is_normal_ram(md)) + return 0; + + if (md->attribute & EFI_MEMORY_RUNTIME) + return 1; + + if (md->type == EFI_ACPI_RECLAIM_MEMORY || + md->type == EFI_RESERVED_TYPE) + return 1; + + return 0; +} + +static __init void reserve_regions(void) +{ + efi_memory_desc_t *md; + u64 paddr, npages, size; + + if (uefi_debug) + pr_info("Processing EFI memory map:\n"); + + for_each_efi_memory_desc(&memmap, md) { + paddr = md->phys_addr; + npages = md->num_pages; + + if (uefi_debug) + pr_info(" 0x%012llx-0x%012llx [%s]", + paddr, paddr + (npages << EFI_PAGE_SHIFT) - 1, + memory_type_name[md->type]); + + memrange_efi_to_native(&paddr, &npages); + size = npages << PAGE_SHIFT; + + if (is_normal_ram(md)) + early_init_dt_add_memory_arch(paddr, size); + + if (is_reserve_region(md) || + md->type == EFI_BOOT_SERVICES_CODE || + md->type == EFI_BOOT_SERVICES_DATA) { + memblock_reserve(paddr, size); + if (uefi_debug) + pr_cont("*"); + } + + if (uefi_debug) + pr_cont("\n"); + } +} + + +static u64 __init free_one_region(u64 start, u64 end) +{ + u64 size = end - start; + + if (uefi_debug) + pr_info(" EFI freeing: 0x%012llx-0x%012llx\n", start, end - 1); + + free_bootmem_late(start, size); + return size; +} + +static u64 __init free_region(u64 start, u64 end) +{ + u64 map_start, map_end, total = 0; + + if (end <= start) + return total; + + map_start = (u64)memmap.phys_map; + map_end = PAGE_ALIGN(map_start + (memmap.map_end - memmap.map)); + map_start &= PAGE_MASK; + + if (start < map_end && end > map_start) { + /* region overlaps UEFI memmap */ + if (start < map_start) + total += free_one_region(start, map_start); + + if (map_end < end) + total += free_one_region(map_end, end); + } else + total += free_one_region(start, end); + + return total; +} + +static void __init free_boot_services(void) +{ + u64 total_freed = 0; + u64 keep_end, free_start, free_end; + efi_memory_desc_t *md; + + /* + * If kernel uses larger pages than UEFI, we have to be careful + * not to inadvertantly free memory we want to keep if there is + * overlap at the kernel page size alignment. We do not want to + * free is_reserve_region() memory nor the UEFI memmap itself. + * + * The memory map is sorted, so we keep track of the end of + * any previous region we want to keep, remember any region + * we want to free and defer freeing it until we encounter + * the next region we want to keep. This way, before freeing + * it, we can clip it as needed to avoid freeing memory we + * want to keep for UEFI. + */ + + keep_end = 0; + free_start = 0; + + for_each_efi_memory_desc(&memmap, md) { + u64 paddr, npages, size; + + if (is_reserve_region(md)) { + /* + * We don't want to free any memory from this region. + */ + if (free_start) { + /* adjust free_end then free region */ + if (free_end > md->phys_addr) + free_end -= PAGE_SIZE; + total_freed += free_region(free_start, free_end); + free_start = 0; + } + keep_end = md->phys_addr + (md->num_pages << EFI_PAGE_SHIFT); + continue; + } + + if (md->type != EFI_BOOT_SERVICES_CODE && + md->type != EFI_BOOT_SERVICES_DATA) { + /* no need to free this region */ + continue; + } + + /* + * We want to free memory from this region. + */ + paddr = md->phys_addr; + npages = md->num_pages; + memrange_efi_to_native(&paddr, &npages); + size = npages << PAGE_SHIFT; + + if (free_start) { + if (paddr <= free_end) + free_end = paddr + size; + else { + total_freed += free_region(free_start, free_end); + free_start = paddr; + free_end = paddr + size; + } + } else { + free_start = paddr; + free_end = paddr + size; + } + if (free_start < keep_end) { + free_start += PAGE_SIZE; + if (free_start >= free_end) + free_start = 0; + } + } + if (free_start) + total_freed += free_region(free_start, free_end); + + if (total_freed) + pr_info("Freed 0x%llx bytes of EFI boot services memory", + total_freed); +} + +void __init efi_init(void) +{ + struct efi_fdt_params params; + + /* Grab UEFI information placed in FDT by stub */ + if (!efi_get_fdt_params(¶ms, uefi_debug)) + return; + + efi_system_table = params.system_table; + + memblock_reserve(params.mmap & PAGE_MASK, + PAGE_ALIGN(params.mmap_size + (params.mmap & ~PAGE_MASK))); + memmap.phys_map = (void *)params.mmap; + memmap.map = early_memremap(params.mmap, params.mmap_size); + memmap.map_end = memmap.map + params.mmap_size; + memmap.desc_size = params.desc_size; + memmap.desc_version = params.desc_ver; + + if (uefi_init() < 0) + return; + + reserve_regions(); +} + +int efi_enabled(int facility) +{ + return test_bit(facility, &arm64_efi_facility) != 0; +} +EXPORT_SYMBOL(efi_enabled); + +void __init efi_idmap_init(void) +{ + if (!efi_enabled(EFI_BOOT)) + return; + + /* boot time idmap_pg_dir is incomplete, so fill in missing parts */ + efi_setup_idmap(); +} + +static int __init remap_region(efi_memory_desc_t *md, void **new) +{ + u64 paddr, vaddr, npages, size; + + paddr = md->phys_addr; + npages = md->num_pages; + memrange_efi_to_native(&paddr, &npages); + size = npages << PAGE_SHIFT; + + if (is_normal_ram(md)) + vaddr = (__force u64)ioremap_cache(paddr, size); + else + vaddr = (__force u64)ioremap(paddr, size); + + if (!vaddr) { + pr_err("Unable to remap 0x%llx pages @ %p\n", + npages, (void *)paddr); + return 0; + } + + /* adjust for any rounding when EFI and system pagesize differs */ + md->virt_addr = vaddr + (md->phys_addr - paddr); + + if (uefi_debug) + pr_info(" EFI remap 0x%012llx => %p\n", + md->phys_addr, (void *)md->virt_addr); + + memcpy(*new, md, memmap.desc_size); + *new += memmap.desc_size; + + return 1; +} + +/* + * Switch UEFI from an identity map to a kernel virtual map + */ +static int __init arm64_enter_virtual_mode(void) +{ + efi_memory_desc_t *md; + phys_addr_t virtmap_phys; + void *virtmap, *virt_md; + efi_status_t status; + u64 mapsize; + int count = 0; + unsigned long flags; + + if (!efi_enabled(EFI_BOOT)) { + pr_info("EFI services will not be available.\n"); + return -1; + } + + pr_info("Remapping and enabling EFI services.\n"); + + /* replace early memmap mapping with permanent mapping */ + mapsize = memmap.map_end - memmap.map; + early_memunmap(memmap.map, mapsize); + memmap.map = (__force void *)ioremap_cache((phys_addr_t)memmap.phys_map, + mapsize); + memmap.map_end = memmap.map + mapsize; + + efi.memmap = &memmap; + + /* Map the runtime regions */ + virtmap = kmalloc(mapsize, GFP_KERNEL); + if (!virtmap) { + pr_err("Failed to allocate EFI virtual memmap\n"); + return -1; + } + virtmap_phys = virt_to_phys(virtmap); + virt_md = virtmap; + + for_each_efi_memory_desc(&memmap, md) { + if (!(md->attribute & EFI_MEMORY_RUNTIME)) + continue; + if (remap_region(md, &virt_md)) + ++count; + } + + efi.systab = (__force void *)efi_lookup_mapped_addr(efi_system_table); + if (efi.systab) + set_bit(EFI_SYSTEM_TABLES, &arm64_efi_facility); + + local_irq_save(flags); + cpu_switch_mm(idmap_pg_dir, &init_mm); + + /* Call SetVirtualAddressMap with the physical address of the map */ + runtime = efi.systab->runtime; + efi.set_virtual_address_map = runtime->set_virtual_address_map; + + status = efi.set_virtual_address_map(count * memmap.desc_size, + memmap.desc_size, + memmap.desc_version, + (efi_memory_desc_t *)virtmap_phys); + cpu_set_reserved_ttbr0(); + flush_tlb_all(); + local_irq_restore(flags); + + kfree(virtmap); + + free_boot_services(); + + if (status != EFI_SUCCESS) { + pr_err("Failed to set EFI virtual address map! [%lx]\n", + status); + return -1; + } + + /* Set up runtime services function pointers */ + runtime = efi.systab->runtime; + efi.get_time = runtime->get_time; + efi.set_time = runtime->set_time; + efi.get_wakeup_time = runtime->get_wakeup_time; + efi.set_wakeup_time = runtime->set_wakeup_time; + efi.get_variable = runtime->get_variable; + efi.get_next_variable = runtime->get_next_variable; + efi.set_variable = runtime->set_variable; + efi.query_variable_info = runtime->query_variable_info; + efi.update_capsule = runtime->update_capsule; + efi.query_capsule_caps = runtime->query_capsule_caps; + efi.get_next_high_mono_count = runtime->get_next_high_mono_count; + efi.reset_system = runtime->reset_system; + + set_bit(EFI_RUNTIME_SERVICES, &arm64_efi_facility); + + return 0; +} +early_initcall(arm64_enter_virtual_mode); --- linux-3.13.0.orig/arch/arm64/kernel/entry.S +++ linux-3.13.0/arch/arm64/kernel/entry.S @@ -275,7 +275,6 @@ * Stack or PC alignment exception handling */ mrs x0, far_el1 - mov x1, x25 mov x2, sp b do_sp_pc_abort el1_undef: --- linux-3.13.0.orig/arch/arm64/kernel/head.S +++ linux-3.13.0/arch/arm64/kernel/head.S @@ -107,8 +107,18 @@ /* * DO NOT MODIFY. Image header expected by Linux boot-loaders. */ +#ifdef CONFIG_EFI +efi_head: + /* + * This add instruction has no meaningful effect except that + * its opcode forms the magic "MZ" signature required by UEFI. + */ + add x13, x18, #0x16 + b stext +#else b stext // branch to kernel start, magic .long 0 // reserved +#endif .quad TEXT_OFFSET // Image load offset from start of RAM .quad 0 // reserved .quad 0 // reserved @@ -119,7 +129,109 @@ .byte 0x52 .byte 0x4d .byte 0x64 +#ifdef CONFIG_EFI + .long pe_header - efi_head // Offset to the PE header. +#else .word 0 // reserved +#endif + +#ifdef CONFIG_EFI + .align 3 +pe_header: + .ascii "PE" + .short 0 +coff_header: + .short 0xaa64 // AArch64 + .short 2 // nr_sections + .long 0 // TimeDateStamp + .long 0 // PointerToSymbolTable + .long 1 // NumberOfSymbols + .short section_table - optional_header // SizeOfOptionalHeader + .short 0x206 // Characteristics. + // IMAGE_FILE_DEBUG_STRIPPED | + // IMAGE_FILE_EXECUTABLE_IMAGE | + // IMAGE_FILE_LINE_NUMS_STRIPPED +optional_header: + .short 0x20b // PE32+ format + .byte 0x02 // MajorLinkerVersion + .byte 0x14 // MinorLinkerVersion + .long _edata - stext // SizeOfCode + .long 0 // SizeOfInitializedData + .long 0 // SizeOfUninitializedData + .long efi_stub_entry - efi_head // AddressOfEntryPoint + .long stext - efi_head // BaseOfCode + +extra_header_fields: + .quad 0 // ImageBase + .long 0x20 // SectionAlignment + .long 0x8 // FileAlignment + .short 0 // MajorOperatingSystemVersion + .short 0 // MinorOperatingSystemVersion + .short 0 // MajorImageVersion + .short 0 // MinorImageVersion + .short 0 // MajorSubsystemVersion + .short 0 // MinorSubsystemVersion + .long 0 // Win32VersionValue + + .long _edata - efi_head // SizeOfImage + + // Everything before the kernel image is considered part of the header + .long stext - efi_head // SizeOfHeaders + .long 0 // CheckSum + .short 0xa // Subsystem (EFI application) + .short 0 // DllCharacteristics + .quad 0 // SizeOfStackReserve + .quad 0 // SizeOfStackCommit + .quad 0 // SizeOfHeapReserve + .quad 0 // SizeOfHeapCommit + .long 0 // LoaderFlags + .long 0x6 // NumberOfRvaAndSizes + + .quad 0 // ExportTable + .quad 0 // ImportTable + .quad 0 // ResourceTable + .quad 0 // ExceptionTable + .quad 0 // CertificationTable + .quad 0 // BaseRelocationTable + + // Section table +section_table: + + /* + * The EFI application loader requires a relocation section + * because EFI applications must be relocatable. This is a + * dummy section as far as we are concerned. + */ + .ascii ".reloc" + .byte 0 + .byte 0 // end of 0 padding of section name + .long 0 + .long 0 + .long 0 // SizeOfRawData + .long 0 // PointerToRawData + .long 0 // PointerToRelocations + .long 0 // PointerToLineNumbers + .short 0 // NumberOfRelocations + .short 0 // NumberOfLineNumbers + .long 0x42100040 // Characteristics (section flags) + + + .ascii ".text" + .byte 0 + .byte 0 + .byte 0 // end of 0 padding of section name + .long _edata - stext // VirtualSize + .long stext - efi_head // VirtualAddress + .long _edata - stext // SizeOfRawData + .long stext - efi_head // PointerToRawData + + .long 0 // PointerToRelocations (0 for executables) + .long 0 // PointerToLineNumbers (0 for executables) + .short 0 // NumberOfRelocations (0 for executables) + .short 0 // NumberOfLineNumbers (0 for executables) + .long 0xe0500020 // Characteristics (section flags) + .align 5 +#endif ENTRY(stext) mov x21, x0 // x21=FDT @@ -203,6 +315,11 @@ msr hstr_el2, xzr // Disable CP15 traps to EL2 #endif + /* EL2 debug */ + mrs x0, pmcr_el0 // Disable debug access traps + ubfx x0, x0, #11, #5 // to EL2 and allow access to + msr mdcr_el2, x0 // all PMU counters from EL1 + /* Stage-2 translation */ msr vttbr_el2, xzr @@ -412,7 +529,7 @@ * - identity mapping to enable the MMU (low address, TTBR0) * - first few MB of the kernel linear mapping to jump to once the MMU has * been enabled, including the FDT blob (TTBR1) - * - UART mapping if CONFIG_EARLY_PRINTK is enabled (TTBR1) + * - pgd entry for fixed mappings (TTBR1) */ __create_page_tables: pgtbl x25, x26, x24 // idmap_pg_dir and swapper_pg_dir addresses @@ -465,15 +582,12 @@ sub x6, x6, #1 // inclusive range create_block_map x0, x7, x3, x5, x6 1: -#ifdef CONFIG_EARLY_PRINTK /* - * Create the pgd entry for the UART mapping. The full mapping is done - * later based earlyprintk kernel parameter. + * Create the pgd entry for the fixed mappings. */ - ldr x5, =EARLYCON_IOBASE // UART virtual address + ldr x5, =FIXADDR_TOP // Fixed mapping virtual address add x0, x26, #2 * PAGE_SIZE // section table address create_pgd_entry x26, x0, x5, x6, x7 -#endif ret ENDPROC(__create_page_tables) .ltorg --- linux-3.13.0.orig/arch/arm64/kernel/irq.c +++ linux-3.13.0/arch/arm64/kernel/irq.c @@ -105,7 +105,7 @@ c = irq_data_get_irq_chip(d); if (!c->irq_set_affinity) pr_debug("IRQ%u: unable to set affinity\n", d->irq); - else if (c->irq_set_affinity(d, affinity, true) == IRQ_SET_MASK_OK && ret) + else if (c->irq_set_affinity(d, affinity, false) == IRQ_SET_MASK_OK && ret) cpumask_copy(d->affinity, affinity); return ret; --- linux-3.13.0.orig/arch/arm64/kernel/kuser32.S +++ linux-3.13.0/arch/arm64/kernel/kuser32.S @@ -38,12 +38,13 @@ .inst 0xe92d00f0 // push {r4, r5, r6, r7} .inst 0xe1c040d0 // ldrd r4, r5, [r0] .inst 0xe1c160d0 // ldrd r6, r7, [r1] - .inst 0xe1b20e9f // 1: ldaexd r0, r1, [r2] + .inst 0xe1b20f9f // 1: ldrexd r0, r1, [r2] .inst 0xe0303004 // eors r3, r0, r4 .inst 0x00313005 // eoreqs r3, r1, r5 .inst 0x01a23e96 // stlexdeq r3, r6, [r2] .inst 0x03330001 // teqeq r3, #1 .inst 0x0afffff9 // beq 1b + .inst 0xf57ff05b // dmb ish .inst 0xe2730000 // rsbs r0, r3, #0 .inst 0xe8bd00f0 // pop {r4, r5, r6, r7} .inst 0xe12fff1e // bx lr @@ -55,11 +56,12 @@ .align 5 __kuser_cmpxchg: // 0xffff0fc0 - .inst 0xe1923e9f // 1: ldaex r3, [r2] + .inst 0xe1923f9f // 1: ldrex r3, [r2] .inst 0xe0533000 // subs r3, r3, r0 .inst 0x01823e91 // stlexeq r3, r1, [r2] .inst 0x03330001 // teqeq r3, #1 .inst 0x0afffffa // beq 1b + .inst 0xf57ff05b // dmb ish .inst 0xe2730000 // rsbs r0, r3, #0 .inst 0xe12fff1e // bx lr --- linux-3.13.0.orig/arch/arm64/kernel/module.c +++ linux-3.13.0/arch/arm64/kernel/module.c @@ -393,12 +393,14 @@ ovf = reloc_insn_imm(RELOC_OP_PREL, loc, val, 0, 21, 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, INSN_IMM_ADR); break; +#endif case R_AARCH64_ADD_ABS_LO12_NC: case R_AARCH64_LDST8_ABS_LO12_NC: overflow_check = false; --- linux-3.13.0.orig/arch/arm64/kernel/msi_bitmap.c +++ linux-3.13.0/arch/arm64/kernel/msi_bitmap.c @@ -0,0 +1,134 @@ +/* + * Copyright 2006-2008, Michael Ellerman, 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; version 2 of the + * License. + * + * Borrowed from powerpc arch + */ + +#include +#include +#include +#include +#include + +int msi_bitmap_alloc_hwirqs(struct msi_bitmap *bmp, int num) +{ + unsigned long flags; + int offset, order = get_count_order(num); + + spin_lock_irqsave(&bmp->lock, flags); + /* + * This is fast, but stricter than we need. We might want to add + * a fallback routine which does a linear search with no alignment. + */ + offset = bitmap_find_free_region(bmp->bitmap, bmp->irq_count, order); + spin_unlock_irqrestore(&bmp->lock, flags); + + pr_debug("msi_bitmap: allocated 0x%x (2^%d) at offset 0x%x\n", + num, order, offset); + + return offset; +} + +void msi_bitmap_free_hwirqs(struct msi_bitmap *bmp, unsigned int offset, + unsigned int num) +{ + unsigned long flags; + int order = get_count_order(num); + + pr_debug("msi_bitmap: freeing 0x%x (2^%d) at offset 0x%x\n", + num, order, offset); + + spin_lock_irqsave(&bmp->lock, flags); + bitmap_release_region(bmp->bitmap, offset, order); + spin_unlock_irqrestore(&bmp->lock, flags); +} + +void msi_bitmap_reserve_hwirq(struct msi_bitmap *bmp, unsigned int hwirq) +{ + unsigned long flags; + + pr_debug("msi_bitmap: reserving hwirq 0x%x\n", hwirq); + + spin_lock_irqsave(&bmp->lock, flags); + bitmap_allocate_region(bmp->bitmap, hwirq, 0); + spin_unlock_irqrestore(&bmp->lock, flags); +} + +/** + * msi_bitmap_reserve_dt_hwirqs - Reserve irqs specified in the device tree. + * @bmp: pointer to the MSI bitmap. + * + * Looks in the device tree to see if there is a property specifying which + * irqs can be used for MSI. If found those irqs reserved in the device tree + * are reserved in the bitmap. + * + * Returns 0 for success, < 0 if there was an error, and > 0 if no property + * was found in the device tree. + **/ +int msi_bitmap_reserve_dt_hwirqs(struct msi_bitmap *bmp) +{ + int i, j, len = 2; + u32 array[2]; + u32 *p = array; + int ret; + + if (!bmp->of_node) + return 1; + + ret = of_property_read_u32_array(bmp->of_node, + "msi-available-ranges", p, len); + if (ret) + return ret; + + bitmap_allocate_region(bmp->bitmap, 0, get_count_order(bmp->irq_count)); + + spin_lock(&bmp->lock); + + /* Format is: ( )+ */ + len /= 2 * sizeof(u32); + for (i = 0; i < len; i++, p += 2) { + for (j = 0; j < *(p + 1); j++) + bitmap_release_region(bmp->bitmap, *p + j, 0); + } + + spin_unlock(&bmp->lock); + + return 0; +} + +int msi_bitmap_alloc(struct msi_bitmap *bmp, unsigned int irq_count, + struct device_node *of_node) +{ + int size; + + if (!irq_count) + return -EINVAL; + + size = BITS_TO_LONGS(irq_count) * sizeof(long); + pr_debug("msi_bitmap: allocator bitmap size is 0x%x bytes\n", size); + + bmp->bitmap = kzalloc(size, GFP_KERNEL); + if (!bmp->bitmap) { + pr_debug("msi_bitmap: ENOMEM allocating allocator bitmap!\n"); + return -ENOMEM; + } + + /* We zalloc'ed the bitmap, so all irqs are free by default */ + spin_lock_init(&bmp->lock); + bmp->of_node = of_node_get(of_node); + bmp->irq_count = irq_count; + + return 0; +} + +void msi_bitmap_free(struct msi_bitmap *bmp) +{ + /* we can't free the bitmap we don't know if it's bootmem etc. */ + of_node_put(bmp->of_node); + bmp->bitmap = NULL; +} --- linux-3.13.0.orig/arch/arm64/kernel/pcibios.c +++ linux-3.13.0/arch/arm64/kernel/pcibios.c @@ -0,0 +1,689 @@ +/* + * Based on linux/arch/arm/kernel/bios32.c + * + * PCI bios-type initialisation for PCI machines + * + * Bits taken from various places. + */ +#include +#include +#include +#include +#include +#include +#include + +static int debug_pci; + +/* + * We can't use pci_find_device() here since we are + * called from interrupt context. + */ +static void pcibios_bus_report_status(struct pci_bus *bus, u_int status_mask, + int warn) +{ + struct pci_dev *dev; + + list_for_each_entry(dev, &bus->devices, bus_list) { + u16 status; + + /* + * ignore host bridge - we handle + * that separately + */ + if (dev->bus->number == 0 && dev->devfn == 0) + continue; + + pci_read_config_word(dev, PCI_STATUS, &status); + if (status == 0xffff) + continue; + + if ((status & status_mask) == 0) + continue; + + /* clear the status errors */ + pci_write_config_word(dev, PCI_STATUS, status & status_mask); + + if (warn) + printk("(%s: %04X) ", pci_name(dev), status); + } + + list_for_each_entry(dev, &bus->devices, bus_list) + if (dev->subordinate) + pcibios_bus_report_status(dev->subordinate, status_mask, warn); +} + +void pcibios_report_status(u_int status_mask, int warn) +{ + struct list_head *l; + + list_for_each(l, &pci_root_buses) { + struct pci_bus *bus = pci_bus_b(l); + + pcibios_bus_report_status(bus, status_mask, warn); + } +} + +/* + * We don't use this to fix the device, but initialisation of it. + * It's not the correct use for this, but it works. + * Note that the arbiter/ISA bridge appears to be buggy, specifically in + * the following area: + * 1. park on CPU + * 2. ISA bridge ping-pong + * 3. ISA bridge master handling of target RETRY + * + * Bug 3 is responsible for the sound DMA grinding to a halt. We now + * live with bug 2. + */ +static void pci_fixup_83c553(struct pci_dev *dev) +{ + /* + * Set memory region to start at address 0, and enable IO + */ + pci_write_config_dword(dev, PCI_BASE_ADDRESS_0, + PCI_BASE_ADDRESS_SPACE_MEMORY); + pci_write_config_word(dev, PCI_COMMAND, PCI_COMMAND_IO); + + dev->resource[0].end -= dev->resource[0].start; + dev->resource[0].start = 0; + + /* + * All memory requests from ISA to be channelled to PCI + */ + pci_write_config_byte(dev, 0x48, 0xff); + + /* + * Enable ping-pong on bus master to ISA bridge transactions. + * This improves the sound DMA substantially. The fixed + * priority arbiter also helps (see below). + */ + pci_write_config_byte(dev, 0x42, 0x01); + + /* + * Enable PCI retry + */ + pci_write_config_byte(dev, 0x40, 0x22); + + /* + * We used to set the arbiter to "park on last master" (bit + * 1 set), but unfortunately the CyberPro does not park the + * bus. We must therefore park on CPU. Unfortunately, this + * may trigger yet another bug in the 553. + */ + pci_write_config_byte(dev, 0x83, 0x02); + + /* + * Make the ISA DMA request lowest priority, and disable + * rotating priorities completely. + */ + pci_write_config_byte(dev, 0x80, 0x11); + pci_write_config_byte(dev, 0x81, 0x00); + + /* + * Route INTA input to IRQ 11, and set IRQ11 to be level + * sensitive. + */ + pci_write_config_word(dev, 0x44, 0xb000); + outb(0x08, 0x4d1); +} + +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_WINBOND, PCI_DEVICE_ID_WINBOND_83C553, + pci_fixup_83c553); + +static void pci_fixup_unassign(struct pci_dev *dev) +{ + dev->resource[0].end -= dev->resource[0].start; + dev->resource[0].start = 0; +} + +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_WINBOND2, PCI_DEVICE_ID_WINBOND2_89C940F, + pci_fixup_unassign); + +/* + * Prevent the PCI layer from seeing the resources allocated to this device + * if it is the host bridge by marking it as such. These resources are of + * no consequence to the PCI layer (they are handled elsewhere). + */ +static void pci_fixup_dec21285(struct pci_dev *dev) +{ + int i; + + if (dev->devfn == 0) { + dev->class &= 0xff; + dev->class |= PCI_CLASS_BRIDGE_HOST << 8; + for (i = 0; i < PCI_NUM_RESOURCES; i++) { + dev->resource[i].start = 0; + dev->resource[i].end = 0; + dev->resource[i].flags = 0; + } + } +} + +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_21285, + pci_fixup_dec21285); + +/* + * PCI IDE controllers use non-standard I/O port decoding, respect it. + */ +static void pci_fixup_ide_bases(struct pci_dev *dev) +{ + struct resource *r; + int i; + + if ((dev->class >> 8) != PCI_CLASS_STORAGE_IDE) + return; + + for (i = 0; i < PCI_NUM_RESOURCES; i++) { + r = dev->resource + i; + if ((r->start & ~0x80) == 0x374) { + r->start |= 2; + r->end = r->start; + } + } +} + +DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, pci_fixup_ide_bases); + +/* + * Put the DEC21142 to sleep + */ +static void pci_fixup_dec21142(struct pci_dev *dev) +{ + pci_write_config_dword(dev, 0x40, 0x80000000); +} + +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_21142, + pci_fixup_dec21142); + +/* + * The CY82C693 needs some rather major fixups to ensure that it does + * the right thing. Idea from the Alpha people, with a few additions. + * + * We ensure that the IDE base registers are set to 1f0/3f4 for the + * primary bus, and 170/374 for the secondary bus. Also, hide them + * from the PCI subsystem view as well so we won't try to perform + * our own auto-configuration on them. + * + * In addition, we ensure that the PCI IDE interrupts are routed to + * IRQ 14 and IRQ 15 respectively. + * + * The above gets us to a point where the IDE on this device is + * functional. However, The CY82C693U _does not work_ in bus + * master mode without locking the PCI bus solid. + */ +static void pci_fixup_cy82c693(struct pci_dev *dev) +{ + if ((dev->class >> 8) == PCI_CLASS_STORAGE_IDE) { + u32 base0, base1; + + if (dev->class & 0x80) { /* primary */ + base0 = 0x1f0; + base1 = 0x3f4; + } else { /* secondary */ + base0 = 0x170; + base1 = 0x374; + } + + pci_write_config_dword(dev, PCI_BASE_ADDRESS_0, + base0 | PCI_BASE_ADDRESS_SPACE_IO); + pci_write_config_dword(dev, PCI_BASE_ADDRESS_1, + base1 | PCI_BASE_ADDRESS_SPACE_IO); + + dev->resource[0].start = 0; + dev->resource[0].end = 0; + dev->resource[0].flags = 0; + + dev->resource[1].start = 0; + dev->resource[1].end = 0; + dev->resource[1].flags = 0; + } else if (PCI_FUNC(dev->devfn) == 0) { + /* + * Setup IDE IRQ routing. + */ + pci_write_config_byte(dev, 0x4b, 14); + pci_write_config_byte(dev, 0x4c, 15); + + /* + * Disable FREQACK handshake, enable USB. + */ + pci_write_config_byte(dev, 0x4d, 0x41); + + /* + * Enable PCI retry, and PCI post-write buffer. + */ + pci_write_config_byte(dev, 0x44, 0x17); + + /* + * Enable ISA master and DMA post write buffering. + */ + pci_write_config_byte(dev, 0x45, 0x03); + } +} + +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_CONTAQ, PCI_DEVICE_ID_CONTAQ_82C693, + pci_fixup_cy82c693); + +static void pci_fixup_it8152(struct pci_dev *dev) +{ + int i; + /* fixup for ITE 8152 devices */ + /* FIXME: add defines for class 0x68000 and 0x80103 */ + if ((dev->class >> 8) == PCI_CLASS_BRIDGE_HOST || + dev->class == 0x68000 || dev->class == 0x80103) { + for (i = 0; i < PCI_NUM_RESOURCES; i++) { + dev->resource[i].start = 0; + dev->resource[i].end = 0; + dev->resource[i].flags = 0; + } + } +} + +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ITE, PCI_DEVICE_ID_ITE_8152, + pci_fixup_it8152); + +/* + * If the bus contains any of these devices, then we must not turn on + * parity checking of any kind. Currently this is CyberPro 20x0 only. + */ +static inline int pdev_bad_for_parity(struct pci_dev *dev) +{ + return ((dev->vendor == PCI_VENDOR_ID_INTERG && + (dev->device == PCI_DEVICE_ID_INTERG_2000 || + dev->device == PCI_DEVICE_ID_INTERG_2010)) || + (dev->vendor == PCI_VENDOR_ID_ITE && + dev->device == PCI_DEVICE_ID_ITE_8152)); + +} + +/* + * pcibios_fixup_bus - Called after each bus is probed, + * but before its children are examined. + */ +void pcibios_fixup_bus(struct pci_bus *bus) +{ + struct pci_dev *dev; + u16 features = + PCI_COMMAND_SERR | PCI_COMMAND_PARITY | PCI_COMMAND_FAST_BACK; + + /* + * Walk the devices on this bus, working out what we can + * and can't support. + */ + list_for_each_entry(dev, &bus->devices, bus_list) { + u16 status; + + pci_read_config_word(dev, PCI_STATUS, &status); + + /* + * If any device on this bus does not support fast back + * to back transfers, then the bus as a whole is not able + * to support them. Having fast back to back transfers + * on saves us one PCI cycle per transaction. + */ + if (!(status & PCI_STATUS_FAST_BACK)) + features &= ~PCI_COMMAND_FAST_BACK; + + if (pdev_bad_for_parity(dev)) + features &= ~(PCI_COMMAND_SERR | PCI_COMMAND_PARITY); + + switch (dev->class >> 8) { + case PCI_CLASS_BRIDGE_PCI: + pci_read_config_word(dev, PCI_BRIDGE_CONTROL, &status); + status |= + PCI_BRIDGE_CTL_PARITY | PCI_BRIDGE_CTL_MASTER_ABORT; + status &= + ~(PCI_BRIDGE_CTL_BUS_RESET | + PCI_BRIDGE_CTL_FAST_BACK); + pci_write_config_word(dev, PCI_BRIDGE_CONTROL, status); + break; + + case PCI_CLASS_BRIDGE_CARDBUS: + pci_read_config_word(dev, PCI_CB_BRIDGE_CONTROL, + &status); + status |= + PCI_CB_BRIDGE_CTL_PARITY | + PCI_CB_BRIDGE_CTL_MASTER_ABORT; + pci_write_config_word(dev, PCI_CB_BRIDGE_CONTROL, + status); + break; + } + } + + /* + * Now walk the devices again, this time setting them up. + */ + list_for_each_entry(dev, &bus->devices, bus_list) { + u16 cmd; + + pci_read_config_word(dev, PCI_COMMAND, &cmd); + cmd |= features; + pci_write_config_word(dev, PCI_COMMAND, cmd); + + pci_write_config_byte(dev, PCI_CACHE_LINE_SIZE, + L1_CACHE_BYTES >> 2); + } + + /* + * Propagate the flags to the PCI bridge. + */ + if (bus->self && bus->self->hdr_type == PCI_HEADER_TYPE_BRIDGE) { + if (features & PCI_COMMAND_FAST_BACK) + bus->bridge_ctl |= PCI_BRIDGE_CTL_FAST_BACK; + if (features & PCI_COMMAND_PARITY) + bus->bridge_ctl |= PCI_BRIDGE_CTL_PARITY; + } + + /* + * Report what we did for this bus + */ + printk(KERN_INFO "PCI: bus%d: Fast back to back transfers %sabled\n", + bus->number, (features & PCI_COMMAND_FAST_BACK) ? "en" : "dis"); +} +EXPORT_SYMBOL(pcibios_fixup_bus); + +void pcibios_add_bus(struct pci_bus *bus) +{ + struct pci_sys_data *sys = bus->sysdata; + if (sys->add_bus) + sys->add_bus(bus); +} + +void pcibios_remove_bus(struct pci_bus *bus) +{ + struct pci_sys_data *sys = bus->sysdata; + if (sys->remove_bus) + sys->remove_bus(bus); +} + +/* + * Swizzle the device pin each time we cross a bridge. If a platform does + * not provide a swizzle function, we perform the standard PCI swizzling. + * + * The default swizzling walks up the bus tree one level at a time, applying + * the standard swizzle function at each step, stopping when it finds the PCI + * root bus. This will return the slot number of the bridge device on the + * root bus and the interrupt pin on that device which should correspond + * with the downstream device interrupt. + * + * Platforms may override this, in which case the slot and pin returned + * depend entirely on the platform code. However, please note that the + * PCI standard swizzle is implemented on plug-in cards and Cardbus based + * PCI extenders, so it can not be ignored. + */ +static u8 pcibios_swizzle(struct pci_dev *dev, u8 *pin) +{ + struct pci_sys_data *sys = dev->sysdata; + int slot, oldpin = *pin; + + if (sys->swizzle) + slot = sys->swizzle(dev, pin); + else + slot = pci_common_swizzle(dev, pin); + + if (debug_pci) + printk("PCI: %s swizzling pin %d => pin %d slot %d\n", + pci_name(dev), oldpin, *pin, slot); + + return slot; +} + +/* + * Map a slot/pin to an IRQ. + */ +static int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) +{ + struct pci_sys_data *sys = dev->sysdata; + int irq = -1; + + if (sys->map_irq) + irq = sys->map_irq(dev, slot, pin); + + if (debug_pci) + printk("PCI: %s mapping slot %d pin %d => irq %d\n", + pci_name(dev), slot, pin, irq); + + return irq; +} + +static int pcibios_init_resources(int busnr, struct pci_sys_data *sys) +{ + int ret; + struct pci_host_bridge_window *window; + + if (list_empty(&sys->resources)) { + pci_add_resource_offset(&sys->resources, + &iomem_resource, sys->mem_offset); + } + + list_for_each_entry(window, &sys->resources, list) { + if (resource_type(window->res) == IORESOURCE_IO) + return 0; + } + + sys->io_res.start = (busnr * SZ_64K) ? : pcibios_min_io; + sys->io_res.end = (busnr + 1) * SZ_64K - 1; + sys->io_res.flags = IORESOURCE_IO; + sys->io_res.name = sys->io_res_name; + sprintf(sys->io_res_name, "PCI%d I/O", busnr); + + ret = request_resource(&ioport_resource, &sys->io_res); + if (ret) { + pr_err("PCI: unable to allocate I/O port region (%d)\n", ret); + return ret; + } + pci_add_resource_offset(&sys->resources, &sys->io_res, sys->io_offset); + + return 0; +} + +static void pcibios_init_hw(struct device *parent, struct hw_pci *hw, + struct list_head *head) +{ + struct pci_sys_data *sys = NULL; + int ret; + int nr, busnr; + + for (nr = busnr = 0; nr < hw->nr_controllers; nr++) { + sys = kzalloc(sizeof(struct pci_sys_data), GFP_KERNEL); + if (!sys) + panic("PCI: unable to allocate sys data!"); + +#ifdef CONFIG_PCI_DOMAINS + sys->domain = hw->domain; +#endif + sys->busnr = busnr; + sys->swizzle = hw->swizzle; + sys->map_irq = hw->map_irq; + sys->align_resource = hw->align_resource; + sys->add_bus = hw->add_bus; + sys->remove_bus = hw->remove_bus; + INIT_LIST_HEAD(&sys->resources); + + if (hw->private_data) + sys->private_data = hw->private_data[nr]; + + ret = hw->setup(nr, sys); + + if (ret > 0) { + ret = pcibios_init_resources(nr, sys); + if (ret) { + kfree(sys); + break; + } + + if (hw->scan) + sys->bus = hw->scan(nr, sys); + else + sys->bus = pci_scan_root_bus(parent, sys->busnr, + hw->ops, sys, + &sys->resources); + + if (!sys->bus) + panic("PCI: unable to scan bus!"); + + busnr = sys->bus->busn_res.end + 1; + + list_add(&sys->node, head); + } else { + kfree(sys); + if (ret < 0) + break; + } + } +} + +void pci_common_init_dev(struct device *parent, struct hw_pci *hw) +{ + struct pci_sys_data *sys; + LIST_HEAD(head); + + pci_add_flags(PCI_REASSIGN_ALL_RSRC); + if (hw->preinit) + hw->preinit(); + pcibios_init_hw(parent, hw, &head); + if (hw->postinit) + hw->postinit(); + + pci_fixup_irqs(pcibios_swizzle, pcibios_map_irq); + + list_for_each_entry(sys, &head, node) { + struct pci_bus *bus = sys->bus; + + if (!pci_has_flag(PCI_PROBE_ONLY)) { + /* + * Size the bridge windows. + */ + pci_bus_size_bridges(bus); + + /* + * Assign resources. + */ + pci_bus_assign_resources(bus); + } + + /* + * Tell drivers about devices found. + */ + pci_bus_add_devices(bus); + } +} + +#ifndef CONFIG_PCI_HOST_ITE8152 +void pcibios_set_master(struct pci_dev *dev) +{ + /* No special bus mastering setup handling */ +} +#endif + +char *__init pcibios_setup(char *str) +{ + if (!strcmp(str, "debug")) { + debug_pci = 1; + return NULL; + } else if (!strcmp(str, "firmware")) { + pci_add_flags(PCI_PROBE_ONLY); + return NULL; + } + return str; +} + +/* + * From arch/i386/kernel/pci-i386.c: + * + * We need to avoid collisions with `mirrored' VGA ports + * and other strange ISA hardware, so we always want the + * addresses to be allocated in the 0x000-0x0ff region + * modulo 0x400. + * + * Why? Because some silly external IO cards only decode + * the low 10 bits of the IO address. The 0x00-0xff region + * is reserved for motherboard devices that decode all 16 + * bits, so it's ok to allocate at, say, 0x2800-0x28ff, + * but we want to try to avoid allocating at 0x2900-0x2bff + * which might be mirrored at 0x0100-0x03ff.. + */ +resource_size_t pcibios_align_resource(void *data, const struct resource *res, + resource_size_t size, + resource_size_t align) +{ + struct pci_dev *dev = data; + struct pci_sys_data *sys = dev->sysdata; + resource_size_t start = res->start; + + if (res->flags & IORESOURCE_IO && start & 0x300) + start = (start + 0x3ff) & ~0x3ff; + + start = (start + align - 1) & ~(align - 1); + + if (sys->align_resource) + return sys->align_resource(dev, res, start, size, align); + + return start; +} + +/** + * pcibios_enable_device - Enable I/O and memory. + * @dev: PCI device to be enabled + */ +int pcibios_enable_device(struct pci_dev *dev, int mask) +{ + u16 cmd, old_cmd; + int idx; + struct resource *r; + + pci_read_config_word(dev, PCI_COMMAND, &cmd); + old_cmd = cmd; + for (idx = 0; idx < 6; idx++) { + /* Only set up the requested stuff */ + if (!(mask & (1 << idx))) + continue; + + r = dev->resource + idx; + if (!r->start && r->end) { + printk(KERN_ERR "PCI: Device %s not available because" + " of resource collisions\n", pci_name(dev)); + return -EINVAL; + } + if (r->flags & IORESOURCE_IO) + cmd |= PCI_COMMAND_IO; + if (r->flags & IORESOURCE_MEM) + cmd |= PCI_COMMAND_MEMORY; + } + + /* + * Bridges (eg, cardbus bridges) need to be fully enabled + */ + if ((dev->class >> 16) == PCI_BASE_CLASS_BRIDGE) + cmd |= PCI_COMMAND_IO | PCI_COMMAND_MEMORY; + + if (cmd != old_cmd) { + printk("PCI: enabling device %s (%04x -> %04x)\n", + pci_name(dev), old_cmd, cmd); + pci_write_config_word(dev, PCI_COMMAND, cmd); + } + return 0; +} + +int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma, + enum pci_mmap_state mmap_state, int write_combine) +{ + struct pci_sys_data *root = dev->sysdata; + unsigned long phys; + + if (mmap_state == pci_mmap_io) + return -EINVAL; + else + phys = vma->vm_pgoff + (root->mem_offset >> PAGE_SHIFT); + + /* + * Mark this as IO + */ + vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); + + if (remap_pfn_range(vma, vma->vm_start, phys, + vma->vm_end - vma->vm_start, vma->vm_page_prot)) + return -EAGAIN; + + return 0; +} --- linux-3.13.0.orig/arch/arm64/kernel/perf_event.c +++ linux-3.13.0/arch/arm64/kernel/perf_event.c @@ -22,6 +22,7 @@ #include #include +#include #include #include #include @@ -363,26 +364,53 @@ } static void +armpmu_disable_percpu_irq(void *data) +{ + unsigned int irq = *(unsigned int *)data; + disable_percpu_irq(irq); +} + +static void armpmu_release_hardware(struct arm_pmu *armpmu) { - int i, irq, irqs; + int irq; + unsigned int i, irqs; struct platform_device *pmu_device = armpmu->plat_device; irqs = min(pmu_device->num_resources, num_possible_cpus()); + if (!irqs) + return; - for (i = 0; i < irqs; ++i) { - if (!cpumask_test_and_clear_cpu(i, &armpmu->active_irqs)) - continue; - irq = platform_get_irq(pmu_device, i); - if (irq >= 0) - free_irq(irq, armpmu); + irq = platform_get_irq(pmu_device, 0); + if (irq <= 0) + return; + + if (irq_is_percpu(irq)) { + on_each_cpu(armpmu_disable_percpu_irq, &irq, 1); + free_percpu_irq(irq, &cpu_hw_events); + } else { + for (i = 0; i < irqs; ++i) { + if (!cpumask_test_and_clear_cpu(i, &armpmu->active_irqs)) + continue; + irq = platform_get_irq(pmu_device, i); + if (irq > 0) + free_irq(irq, armpmu); + } } } +static void +armpmu_enable_percpu_irq(void *data) +{ + unsigned int irq = *(unsigned int *)data; + enable_percpu_irq(irq, IRQ_TYPE_NONE); +} + static int armpmu_reserve_hardware(struct arm_pmu *armpmu) { - int i, err, irq, irqs; + int err, irq; + unsigned int i, irqs; struct platform_device *pmu_device = armpmu->plat_device; if (!pmu_device) { @@ -391,39 +419,59 @@ } irqs = min(pmu_device->num_resources, num_possible_cpus()); - if (irqs < 1) { + if (!irqs) { pr_err("no irqs for PMUs defined\n"); return -ENODEV; } - for (i = 0; i < irqs; ++i) { - err = 0; - irq = platform_get_irq(pmu_device, i); - if (irq < 0) - continue; - - /* - * If we have a single PMU interrupt that we can't shift, - * assume that we're running on a uniprocessor machine and - * continue. Otherwise, continue without this interrupt. - */ - if (irq_set_affinity(irq, cpumask_of(i)) && irqs > 1) { - pr_warning("unable to set irq affinity (irq=%d, cpu=%u)\n", - irq, i); - continue; - } + irq = platform_get_irq(pmu_device, 0); + if (irq <= 0) { + pr_err("failed to get valid irq for PMU device\n"); + return -ENODEV; + } + + if (irq_is_percpu(irq)) { + err = request_percpu_irq(irq, armpmu->handle_irq, + "arm-pmu", &cpu_hw_events); - err = request_irq(irq, armpmu->handle_irq, - IRQF_NOBALANCING, - "arm-pmu", armpmu); if (err) { - pr_err("unable to request IRQ%d for ARM PMU counters\n", - irq); + pr_err("unable to request percpu IRQ%d for ARM PMU counters\n", + irq); armpmu_release_hardware(armpmu); return err; } - cpumask_set_cpu(i, &armpmu->active_irqs); + on_each_cpu(armpmu_enable_percpu_irq, &irq, 1); + } else { + for (i = 0; i < irqs; ++i) { + err = 0; + irq = platform_get_irq(pmu_device, i); + if (irq <= 0) + continue; + + /* + * If we have a single PMU interrupt that we can't shift, + * assume that we're running on a uniprocessor machine and + * continue. Otherwise, continue without this interrupt. + */ + if (irq_set_affinity(irq, cpumask_of(i)) && irqs > 1) { + pr_warning("unable to set irq affinity (irq=%d, cpu=%u)\n", + irq, i); + continue; + } + + err = request_irq(irq, armpmu->handle_irq, + IRQF_NOBALANCING, + "arm-pmu", armpmu); + if (err) { + pr_err("unable to request IRQ%d for ARM PMU counters\n", + irq); + armpmu_release_hardware(armpmu); + return err; + } + + cpumask_set_cpu(i, &armpmu->active_irqs); + } } return 0; --- linux-3.13.0.orig/arch/arm64/kernel/process.c +++ linux-3.13.0/arch/arm64/kernel/process.c @@ -109,33 +109,63 @@ } #endif +/* + * Called by kexec, immediately prior to machine_kexec(). + * + * This must completely disable all secondary CPUs; simply causing those CPUs + * to execute e.g. a RAM-based pin loop is not sufficient. This allows the + * kexec'd kernel to use any and all RAM as it sees fit, without having to + * avoid any code or data used by any SW CPU pin loop. The CPU hotplug + * functionality embodied in disable_nonboot_cpus() to achieve this. + */ void machine_shutdown(void) { -#ifdef CONFIG_SMP - smp_send_stop(); -#endif + disable_nonboot_cpus(); } +/* + * Halting simply requires that the secondary CPUs stop performing any + * activity (executing tasks, handling interrupts). smp_send_stop() + * achieves this. + */ void machine_halt(void) { - machine_shutdown(); + local_irq_disable(); + smp_send_stop(); while (1); } +/* + * Power-off simply requires that the secondary CPUs stop performing any + * activity (executing tasks, handling interrupts). smp_send_stop() + * achieves this. When the system power is turned off, it will take all CPUs + * with it. + */ void machine_power_off(void) { - machine_shutdown(); + local_irq_disable(); + smp_send_stop(); if (pm_power_off) pm_power_off(); } +/* + * Restart requires that the secondary CPUs stop performing any activity + * while the primary CPU resets the system. Systems with a single CPU can + * use soft_restart() as their machine descriptor's .restart hook, since that + * will cause the only available CPU to reset. Systems with multiple CPUs must + * provide a HW restart implementation, to ensure that all CPUs reset at once. + * This is required so that any code running after reset on the primary CPU + * doesn't have to co-ordinate with other CPUs to ensure they aren't still + * executing pre-reset code, and using RAM that the primary CPU's code wishes + * to use. Implementing such co-ordination would be essentially impossible. + */ void machine_restart(char *cmd) { - machine_shutdown(); - /* Disable interrupts first */ local_irq_disable(); local_fiq_disable(); + smp_send_stop(); /* Now call the architecture specific reboot code. */ if (arm_pm_restart) @@ -190,9 +220,27 @@ { } +static void tls_thread_flush(void) +{ + asm ("msr tpidr_el0, xzr"); + + if (is_compat_task()) { + current->thread.tp_value = 0; + + /* + * We need to ensure ordering between the shadow state and the + * hardware state, so that we don't corrupt the hardware state + * with a stale shadow state during context switch. + */ + barrier(); + asm ("msr tpidrro_el0, xzr"); + } +} + void flush_thread(void) { fpsimd_flush_thread(); + tls_thread_flush(); flush_ptrace_hw_breakpoint(current); } --- linux-3.13.0.orig/arch/arm64/kernel/psci.c +++ linux-3.13.0/arch/arm64/kernel/psci.c @@ -18,12 +18,17 @@ #include #include #include +#include +#include +#include +#include #include #include #include #include #include +#include #define PSCI_POWER_STATE_TYPE_STANDBY 0 #define PSCI_POWER_STATE_TYPE_POWER_DOWN 1 @@ -40,58 +45,52 @@ int (*cpu_off)(struct psci_power_state state); int (*cpu_on)(unsigned long cpuid, unsigned long entry_point); int (*migrate)(unsigned long cpuid); + int (*affinity_info)(unsigned long target_affinity, + unsigned long lowest_affinity_level); + int (*migrate_info_type)(void); }; static struct psci_operations psci_ops; static int (*invoke_psci_fn)(u64, u64, u64, u64); +typedef int (*psci_initcall_t)(const struct device_node *); enum psci_function { PSCI_FN_CPU_SUSPEND, PSCI_FN_CPU_ON, PSCI_FN_CPU_OFF, PSCI_FN_MIGRATE, + PSCI_FN_AFFINITY_INFO, + PSCI_FN_MIGRATE_INFO_TYPE, PSCI_FN_MAX, }; static u32 psci_function_id[PSCI_FN_MAX]; -#define PSCI_RET_SUCCESS 0 -#define PSCI_RET_EOPNOTSUPP -1 -#define PSCI_RET_EINVAL -2 -#define PSCI_RET_EPERM -3 - static int psci_to_linux_errno(int errno) { switch (errno) { case PSCI_RET_SUCCESS: return 0; - case PSCI_RET_EOPNOTSUPP: + case PSCI_RET_NOT_SUPPORTED: return -EOPNOTSUPP; - case PSCI_RET_EINVAL: + case PSCI_RET_INVALID_PARAMS: return -EINVAL; - case PSCI_RET_EPERM: + case PSCI_RET_DENIED: return -EPERM; }; return -EINVAL; } -#define PSCI_POWER_STATE_ID_MASK 0xffff -#define PSCI_POWER_STATE_ID_SHIFT 0 -#define PSCI_POWER_STATE_TYPE_MASK 0x1 -#define PSCI_POWER_STATE_TYPE_SHIFT 16 -#define PSCI_POWER_STATE_AFFL_MASK 0x3 -#define PSCI_POWER_STATE_AFFL_SHIFT 24 - static u32 psci_power_state_pack(struct psci_power_state state) { - return ((state.id & PSCI_POWER_STATE_ID_MASK) - << PSCI_POWER_STATE_ID_SHIFT) | - ((state.type & PSCI_POWER_STATE_TYPE_MASK) - << PSCI_POWER_STATE_TYPE_SHIFT) | - ((state.affinity_level & PSCI_POWER_STATE_AFFL_MASK) - << PSCI_POWER_STATE_AFFL_SHIFT); + return ((state.id << PSCI_0_2_POWER_STATE_ID_SHIFT) + & PSCI_0_2_POWER_STATE_ID_MASK) | + ((state.type << PSCI_0_2_POWER_STATE_TYPE_SHIFT) + & PSCI_0_2_POWER_STATE_TYPE_MASK) | + ((state.affinity_level << PSCI_0_2_POWER_STATE_AFFL_SHIFT) + & PSCI_0_2_POWER_STATE_AFFL_MASK); } /* @@ -128,6 +127,14 @@ return function_id; } +static int psci_get_version(void) +{ + int err; + + err = invoke_psci_fn(PSCI_0_2_FN_PSCI_VERSION, 0, 0, 0); + return err; +} + static int psci_cpu_suspend(struct psci_power_state state, unsigned long entry_point) { @@ -171,28 +178,36 @@ return psci_to_linux_errno(err); } -static const struct of_device_id psci_of_match[] __initconst = { - { .compatible = "arm,psci", }, - {}, -}; +static int psci_affinity_info(unsigned long target_affinity, + unsigned long lowest_affinity_level) +{ + int err; + u32 fn; -int __init psci_init(void) + fn = psci_function_id[PSCI_FN_AFFINITY_INFO]; + err = invoke_psci_fn(fn, target_affinity, lowest_affinity_level, 0); + return err; +} + +static int psci_migrate_info_type(void) { - struct device_node *np; - const char *method; - u32 id; - int err = 0; + int err; + u32 fn; - np = of_find_matching_node(NULL, psci_of_match); - if (!np) - return -ENODEV; + fn = psci_function_id[PSCI_FN_MIGRATE_INFO_TYPE]; + err = invoke_psci_fn(fn, 0, 0, 0); + return err; +} + +static int get_set_conduit_method(struct device_node *np) +{ + const char *method; - pr_info("probing function IDs from device-tree\n"); + pr_info("probing for conduit method from DT.\n"); if (of_property_read_string(np, "method", &method)) { - pr_warning("missing \"method\" property\n"); - err = -ENXIO; - goto out_put_node; + pr_warn("missing \"method\" property\n"); + return -ENXIO; } if (!strcmp("hvc", method)) { @@ -200,11 +215,99 @@ } else if (!strcmp("smc", method)) { invoke_psci_fn = __invoke_psci_fn_smc; } else { - pr_warning("invalid \"method\" property: %s\n", method); - err = -EINVAL; + pr_warn("invalid \"method\" property: %s\n", method); + return -EINVAL; + } + return 0; +} + +static void psci_sys_reset(enum reboot_mode reboot_mode, const char *cmd) +{ + invoke_psci_fn(PSCI_0_2_FN_SYSTEM_RESET, 0, 0, 0); +} + +static void psci_sys_poweroff(void) +{ + invoke_psci_fn(PSCI_0_2_FN_SYSTEM_OFF, 0, 0, 0); +} + +/* + * PSCI Function IDs for v0.2+ are well defined so use + * standard values. + */ +static int psci_0_2_init(struct device_node *np) +{ + int err, ver; + + err = get_set_conduit_method(np); + + if (err) + goto out_put_node; + + ver = psci_get_version(); + + if (ver == PSCI_RET_NOT_SUPPORTED) { + /* PSCI v0.2 mandates implementation of PSCI_ID_VERSION. */ + pr_err("PSCI firmware does not comply with the v0.2 spec.\n"); + err = -EOPNOTSUPP; goto out_put_node; + } else { + pr_info("PSCIv%d.%d detected in firmware.\n", + PSCI_VERSION_MAJOR(ver), + PSCI_VERSION_MINOR(ver)); + + if (PSCI_VERSION_MAJOR(ver) == 0 && + PSCI_VERSION_MINOR(ver) < 2) { + err = -EINVAL; + pr_err("Conflicting PSCI version detected.\n"); + goto out_put_node; + } } + pr_info("Using standard PSCI v0.2 function IDs\n"); + psci_function_id[PSCI_FN_CPU_SUSPEND] = PSCI_0_2_FN64_CPU_SUSPEND; + psci_ops.cpu_suspend = psci_cpu_suspend; + + psci_function_id[PSCI_FN_CPU_OFF] = PSCI_0_2_FN_CPU_OFF; + psci_ops.cpu_off = psci_cpu_off; + + psci_function_id[PSCI_FN_CPU_ON] = PSCI_0_2_FN64_CPU_ON; + psci_ops.cpu_on = psci_cpu_on; + + psci_function_id[PSCI_FN_MIGRATE] = PSCI_0_2_FN64_MIGRATE; + psci_ops.migrate = psci_migrate; + + psci_function_id[PSCI_FN_AFFINITY_INFO] = PSCI_0_2_FN64_AFFINITY_INFO; + psci_ops.affinity_info = psci_affinity_info; + + psci_function_id[PSCI_FN_MIGRATE_INFO_TYPE] = + PSCI_0_2_FN_MIGRATE_INFO_TYPE; + psci_ops.migrate_info_type = psci_migrate_info_type; + + arm_pm_restart = psci_sys_reset; + + pm_power_off = psci_sys_poweroff; + +out_put_node: + of_node_put(np); + return err; +} + +/* + * PSCI < v0.2 get PSCI Function IDs via DT. + */ +static int psci_0_1_init(struct device_node *np) +{ + u32 id; + int err; + + err = get_set_conduit_method(np); + + if (err) + goto out_put_node; + + pr_info("Using PSCI v0.1 Function IDs from DT\n"); + if (!of_property_read_u32(np, "cpu_suspend", &id)) { psci_function_id[PSCI_FN_CPU_SUSPEND] = id; psci_ops.cpu_suspend = psci_cpu_suspend; @@ -230,6 +333,27 @@ return err; } +static const struct of_device_id psci_of_match[] __initconst = { + { .compatible = "arm,psci", .data = psci_0_1_init}, + { .compatible = "arm,psci-0.2", .data = psci_0_2_init}, + {}, +}; + +int __init psci_init(void) +{ + struct device_node *np; + const struct of_device_id *matched_np; + psci_initcall_t init_fn; + + np = of_find_matching_node_and_match(NULL, psci_of_match, &matched_np); + + if (!np) + return -ENODEV; + + init_fn = (psci_initcall_t)matched_np->data; + return init_fn(np); +} + #ifdef CONFIG_SMP static int __init cpu_psci_cpu_init(struct device_node *dn, unsigned int cpu) @@ -251,7 +375,7 @@ { int err = psci_ops.cpu_on(cpu_logical_map(cpu), __pa(secondary_entry)); if (err) - pr_err("psci: failed to boot CPU%d (%d)\n", cpu, err); + pr_err("failed to boot CPU%d (%d)\n", cpu, err); return err; } @@ -278,7 +402,36 @@ ret = psci_ops.cpu_off(state); - pr_crit("psci: unable to power off CPU%u (%d)\n", cpu, ret); + pr_crit("unable to power off CPU%u (%d)\n", cpu, ret); +} + +static int cpu_psci_cpu_kill(unsigned int cpu) +{ + int err, i; + + if (!psci_ops.affinity_info) + return 1; + /* + * cpu_kill could race with cpu_die and we can + * potentially end up declaring this cpu undead + * while it is dying. So, try again a few times. + */ + + for (i = 0; i < 10; i++) { + err = psci_ops.affinity_info(cpu_logical_map(cpu), 0); + if (err == PSCI_0_2_AFFINITY_LEVEL_OFF) { + pr_info("CPU%d killed.\n", cpu); + return 1; + } + + msleep(10); + pr_info("Retrying again to check for CPU kill\n"); + } + + pr_warn("CPU%d may not have shut down cleanly (AFFINITY_INFO reports %d)\n", + cpu, err); + /* Make op_cpu_kill() fail. */ + return 0; } #endif @@ -290,6 +443,7 @@ #ifdef CONFIG_HOTPLUG_CPU .cpu_disable = cpu_psci_cpu_disable, .cpu_die = cpu_psci_cpu_die, + .cpu_kill = cpu_psci_cpu_kill, #endif }; --- linux-3.13.0.orig/arch/arm64/kernel/ptrace.c +++ linux-3.13.0/arch/arm64/kernel/ptrace.c @@ -51,6 +51,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 @@ -81,7 +87,8 @@ break; } } - for (i = ARM_MAX_BRP; i < ARM_MAX_HBP_SLOTS && !bp; ++i) { + + for (i = 0; i < ARM_MAX_WRP; ++i) { if (current->thread.debug.hbp_watch[i] == bp) { info.si_errno = -((i << 1) + 1); break; @@ -650,11 +657,16 @@ reg = task_pt_regs(target)->regs[idx]; } - ret = copy_to_user(ubuf, ®, sizeof(reg)); - if (ret) - break; + if (kbuf) { + memcpy(kbuf, ®, sizeof(reg)); + kbuf += sizeof(reg); + } else { + ret = copy_to_user(ubuf, ®, sizeof(reg)); + if (ret) + break; - ubuf += sizeof(reg); + ubuf += sizeof(reg); + } } return ret; @@ -684,11 +696,16 @@ unsigned int idx = start + i; compat_ulong_t reg; - ret = copy_from_user(®, ubuf, sizeof(reg)); - if (ret) - return ret; + if (kbuf) { + memcpy(®, kbuf, sizeof(reg)); + kbuf += sizeof(reg); + } else { + ret = copy_from_user(®, ubuf, sizeof(reg)); + if (ret) + return ret; - ubuf += sizeof(reg); + ubuf += sizeof(reg); + } switch (idx) { case 15: @@ -821,6 +838,7 @@ compat_ulong_t val) { int ret; + mm_segment_t old_fs = get_fs(); if (off & 3 || off >= COMPAT_USER_SZ) return -EIO; @@ -828,10 +846,13 @@ if (off >= sizeof(compat_elf_gregset_t)) return 0; + set_fs(KERNEL_DS); ret = copy_regset_from_user(tsk, &user_aarch32_view, REGSET_COMPAT_GPR, off, sizeof(compat_ulong_t), &val); + set_fs(old_fs); + return ret; } --- linux-3.13.0.orig/arch/arm64/kernel/setup.c +++ linux-3.13.0/arch/arm64/kernel/setup.c @@ -41,7 +41,9 @@ #include #include #include +#include +#include #include #include #include @@ -54,6 +56,7 @@ #include #include #include +#include unsigned int processor_id; EXPORT_SYMBOL(processor_id); @@ -67,7 +70,8 @@ COMPAT_HWCAP_FAST_MULT|COMPAT_HWCAP_EDSP|\ COMPAT_HWCAP_TLS|COMPAT_HWCAP_VFP|\ COMPAT_HWCAP_VFPv3|COMPAT_HWCAP_VFPv4|\ - COMPAT_HWCAP_NEON|COMPAT_HWCAP_IDIV) + COMPAT_HWCAP_NEON|COMPAT_HWCAP_IDIV|\ + COMPAT_HWCAP_LPAE) unsigned int compat_elf_hwcap __read_mostly = COMPAT_ELF_HWCAP_DEFAULT; #endif @@ -221,13 +225,19 @@ *cmdline_p = boot_command_line; + init_mem_pgprot(); + early_ioremap_init(); + parse_early_param(); + efi_init(); arm64_memblock_init(); paging_init(); request_standard_resources(); + efi_idmap_init(); + unflatten_device_tree(); psci_init(); @@ -294,6 +304,10 @@ #ifdef CONFIG_SMP seq_printf(m, "processor\t: %d\n", i); #endif + + seq_printf(m, "BogoMIPS\t: %lu.%02lu\n", + loops_per_jiffy / (500000UL/HZ), + loops_per_jiffy / (5000UL/HZ) % 100); } /* dump out the processor features */ --- linux-3.13.0.orig/arch/arm64/kernel/signal32.c +++ linux-3.13.0/arch/arm64/kernel/signal32.c @@ -151,8 +151,7 @@ case __SI_TIMER: err |= __put_user(from->si_tid, &to->si_tid); err |= __put_user(from->si_overrun, &to->si_overrun); - err |= __put_user((compat_uptr_t)(unsigned long)from->si_ptr, - &to->si_ptr); + err |= __put_user(from->si_int, &to->si_int); break; case __SI_POLL: err |= __put_user(from->si_band, &to->si_band); @@ -181,7 +180,7 @@ case __SI_MESGQ: /* But this is */ err |= __put_user(from->si_pid, &to->si_pid); err |= __put_user(from->si_uid, &to->si_uid); - err |= __put_user((compat_uptr_t)(unsigned long)from->si_ptr, &to->si_ptr); + err |= __put_user(from->si_int, &to->si_int); break; default: /* this is just in case for now ... */ err |= __put_user(from->si_pid, &to->si_pid); @@ -205,14 +204,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. @@ -228,10 +245,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) | @@ -256,7 +278,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); @@ -266,12 +288,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-3.13.0.orig/arch/arm64/kernel/smp.c +++ linux-3.13.0/arch/arm64/kernel/smp.c @@ -219,6 +219,19 @@ return 0; } +static int op_cpu_kill(unsigned int cpu) +{ + /* + * If we have no means of synchronising with the dying CPU, then assume + * that it is really dead. We can only wait for an arbitrary length of + * time and hope that it's dead, so let's skip the wait and just hope. + */ + if (!cpu_ops[cpu]->cpu_kill) + return 1; + + return cpu_ops[cpu]->cpu_kill(cpu); +} + static DECLARE_COMPLETION(cpu_died); /* @@ -232,6 +245,15 @@ return; } pr_notice("CPU%u: shutdown\n", cpu); + + /* + * Now that the dying CPU is beyond the point of no return w.r.t. + * in-kernel synchronisation, try to get the firwmare to help us to + * verify that it has really left the kernel before we consider + * clobbering anything it might still be using. + */ + if (!op_cpu_kill(cpu)) + pr_warn("CPU%d may not have shut down cleanly\n", cpu); } /* --- linux-3.13.0.orig/arch/arm64/kernel/sys_compat.c +++ linux-3.13.0/arch/arm64/kernel/sys_compat.c @@ -79,6 +79,12 @@ case __ARM_NR_compat_set_tls: current->thread.tp_value = regs->regs[0]; + + /* + * Protect against register corruption from context switch. + * See comment in tls_thread_flush. + */ + barrier(); asm ("msr tpidrro_el0, %0" : : "r" (regs->regs[0])); return 0; --- linux-3.13.0.orig/arch/arm64/kernel/vdso.c +++ linux-3.13.0/arch/arm64/kernel/vdso.c @@ -238,6 +238,8 @@ vdso_data->use_syscall = use_syscall; vdso_data->xtime_coarse_sec = xtime_coarse.tv_sec; vdso_data->xtime_coarse_nsec = xtime_coarse.tv_nsec; + vdso_data->wtm_clock_sec = tk->wall_to_monotonic.tv_sec; + vdso_data->wtm_clock_nsec = tk->wall_to_monotonic.tv_nsec; if (!use_syscall) { vdso_data->cs_cycle_last = tk->clock->cycle_last; @@ -245,8 +247,6 @@ vdso_data->xtime_clock_nsec = tk->xtime_nsec; vdso_data->cs_mult = tk->mult; vdso_data->cs_shift = tk->shift; - vdso_data->wtm_clock_sec = tk->wall_to_monotonic.tv_sec; - vdso_data->wtm_clock_nsec = tk->wall_to_monotonic.tv_nsec; } smp_wmb(); --- linux-3.13.0.orig/arch/arm64/kernel/vdso/Makefile +++ linux-3.13.0/arch/arm64/kernel/vdso/Makefile @@ -15,6 +15,10 @@ ccflags-y += -nostdlib -Wl,-soname=linux-vdso.so.1 \ $(call cc-ldoption, -Wl$(comma)--hash-style=sysv) +# Workaround for bare-metal (ELF) toolchains that neglect to pass -shared +# down to collect2, resulting in silent corruption of the vDSO image. +ccflags-y += -Wl,-shared + obj-y += vdso.o extra-y += vdso.lds vdso-offsets.h CPPFLAGS_vdso.lds += -P -C -U$(ARCH) @@ -48,7 +52,7 @@ # Actual build commands quiet_cmd_vdsold = VDSOL $@ - cmd_vdsold = $(CC) $(c_flags) -Wl,-T $^ -o $@ + cmd_vdsold = $(CC) $(c_flags) -Wl,-n -Wl,-T $^ -o $@ quiet_cmd_vdsoas = VDSOA $@ cmd_vdsoas = $(CC) $(a_flags) -c -o $@ $< --- linux-3.13.0.orig/arch/arm64/kernel/vdso/gettimeofday.S +++ linux-3.13.0/arch/arm64/kernel/vdso/gettimeofday.S @@ -103,6 +103,8 @@ bl __do_get_tspec seqcnt_check w9, 1b + mov x30, x2 + cmp w0, #CLOCK_MONOTONIC b.ne 6f @@ -118,6 +120,9 @@ ccmp w0, #CLOCK_MONOTONIC_COARSE, #0x4, ne b.ne 8f + /* xtime_coarse_nsec is already right-shifted */ + mov x12, #0 + /* Get coarse timespec. */ adr vdso_data, _vdso_data 3: seqcnt_acquire @@ -156,7 +161,7 @@ lsr x11, x11, x12 stp x10, x11, [x1, #TSPEC_TV_SEC] mov x0, xzr - ret x2 + ret 7: mov x30, x2 8: /* Syscall fallback. */ --- linux-3.13.0.orig/arch/arm64/kvm/Kconfig +++ linux-3.13.0/arch/arm64/kvm/Kconfig @@ -36,6 +36,17 @@ ---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. + config KVM_ARM_VGIC bool depends on KVM_ARM_HOST && OF --- linux-3.13.0.orig/arch/arm64/kvm/guest.c +++ linux-3.13.0/arch/arm64/kvm/guest.c @@ -207,20 +207,28 @@ unsigned long implementor = read_cpuid_implementor(); unsigned long part_number = read_cpuid_part_number(); - if (implementor != ARM_CPU_IMP_ARM) - return -EINVAL; + switch (implementor) { + case ARM_CPU_IMP_ARM: + switch (part_number) { + case ARM_CPU_PART_AEM_V8: + return KVM_ARM_TARGET_AEM_V8; + case ARM_CPU_PART_FOUNDATION: + return KVM_ARM_TARGET_FOUNDATION_V8; + case ARM_CPU_PART_CORTEX_A53: + return KVM_ARM_TARGET_CORTEX_A53; + case ARM_CPU_PART_CORTEX_A57: + return KVM_ARM_TARGET_CORTEX_A57; + }; + break; + case ARM_CPU_IMP_APM: + switch (part_number) { + case APM_CPU_PART_POTENZA: + return KVM_ARM_TARGET_XGENE_POTENZA; + }; + break; + }; - switch (part_number) { - case ARM_CPU_PART_AEM_V8: - return KVM_ARM_TARGET_AEM_V8; - case ARM_CPU_PART_FOUNDATION: - return KVM_ARM_TARGET_FOUNDATION_V8; - case ARM_CPU_PART_CORTEX_A57: - /* Currently handled by the generic backend */ - return KVM_ARM_TARGET_CORTEX_A57; - default: - return -EINVAL; - } + return -EINVAL; } int kvm_vcpu_set_target(struct kvm_vcpu *vcpu, --- linux-3.13.0.orig/arch/arm64/kvm/handle_exit.c +++ linux-3.13.0/arch/arm64/kvm/handle_exit.c @@ -30,18 +30,19 @@ static int handle_hvc(struct kvm_vcpu *vcpu, struct kvm_run *run) { - if (kvm_psci_call(vcpu)) + int ret; + + ret = kvm_psci_call(vcpu); + if (ret < 0) { + kvm_inject_undefined(vcpu); return 1; + } - kvm_inject_undefined(vcpu); - return 1; + return ret; } static int handle_smc(struct kvm_vcpu *vcpu, struct kvm_run *run) { - if (kvm_psci_call(vcpu)) - return 1; - kvm_inject_undefined(vcpu); return 1; } @@ -65,6 +66,8 @@ else kvm_vcpu_block(vcpu); + kvm_skip_instr(vcpu, kvm_vcpu_trap_il_is32bit(vcpu)); + return 1; } --- linux-3.13.0.orig/arch/arm64/kvm/hyp-init.S +++ linux-3.13.0/arch/arm64/kvm/hyp-init.S @@ -74,6 +74,10 @@ msr mair_el2, x4 isb + /* Invalidate the stale TLBs from Bootloader */ + tlbi alle2 + dsb sy + mrs x4, sctlr_el2 and x4, x4, #SCTLR_EL2_EE // preserve endianness of EL2 ldr x5, =SCTLR_EL2_FLAGS --- linux-3.13.0.orig/arch/arm64/kvm/hyp.S +++ linux-3.13.0/arch/arm64/kvm/hyp.S @@ -485,8 +485,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 @@ -494,6 +492,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 --- linux-3.13.0.orig/arch/arm64/kvm/inject_fault.c +++ linux-3.13.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)) @@ -168,8 +168,8 @@ { if (!(vcpu->arch.hcr_el2 & HCR_RW)) inject_abt32(vcpu, false, addr); - - inject_abt64(vcpu, false, addr); + else + inject_abt64(vcpu, false, addr); } /** @@ -184,8 +184,8 @@ { if (!(vcpu->arch.hcr_el2 & HCR_RW)) inject_abt32(vcpu, true, addr); - - inject_abt64(vcpu, true, addr); + else + inject_abt64(vcpu, true, addr); } /** @@ -198,6 +198,6 @@ { if (!(vcpu->arch.hcr_el2 & HCR_RW)) inject_undef32(vcpu); - - inject_undef64(vcpu); + else + inject_undef64(vcpu); } --- linux-3.13.0.orig/arch/arm64/kvm/sys_regs.c +++ linux-3.13.0/arch/arm64/kvm/sys_regs.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #include #include @@ -121,6 +122,48 @@ } /* + * Generic accessor for VM registers. Only called as long as HCR_TVM + * is set. + */ +static bool access_vm_reg(struct kvm_vcpu *vcpu, + const struct sys_reg_params *p, + const struct sys_reg_desc *r) +{ + unsigned long val; + + BUG_ON(!p->is_write); + + val = *vcpu_reg(vcpu, p->Rt); + if (!p->is_aarch32) { + vcpu_sys_reg(vcpu, r->reg) = val; + } else { + vcpu_cp15(vcpu, r->reg) = val & 0xffffffffUL; + if (!p->is_32bit) + vcpu_cp15(vcpu, r->reg + 1) = val >> 32; + } + return true; +} + +/* + * SCTLR_EL1 accessor. Only called as long as HCR_TVM is set. If the + * guest enables the MMU, we stop trapping the VM sys_regs and leave + * it in complete control of the caches. + */ +static bool access_sctlr(struct kvm_vcpu *vcpu, + const struct sys_reg_params *p, + const struct sys_reg_desc *r) +{ + access_vm_reg(vcpu, p, r); + + if (vcpu_has_cache_enabled(vcpu)) { /* MMU+Caches enabled? */ + vcpu->arch.hcr_el2 &= ~HCR_TVM; + stage2_flush_vm(vcpu->kvm); + } + + return true; +} + +/* * We could trap ID_DFR0 and tell the guest we don't support performance * monitoring. Unfortunately the patch to make the kernel check ID_DFR0 was * NAKed, so it will read the PMCR anyway. @@ -185,32 +228,32 @@ NULL, reset_mpidr, MPIDR_EL1 }, /* SCTLR_EL1 */ { Op0(0b11), Op1(0b000), CRn(0b0001), CRm(0b0000), Op2(0b000), - NULL, reset_val, SCTLR_EL1, 0x00C50078 }, + access_sctlr, reset_val, SCTLR_EL1, 0x00C50078 }, /* CPACR_EL1 */ { Op0(0b11), Op1(0b000), CRn(0b0001), CRm(0b0000), Op2(0b010), NULL, reset_val, CPACR_EL1, 0 }, /* TTBR0_EL1 */ { Op0(0b11), Op1(0b000), CRn(0b0010), CRm(0b0000), Op2(0b000), - NULL, reset_unknown, TTBR0_EL1 }, + access_vm_reg, reset_unknown, TTBR0_EL1 }, /* TTBR1_EL1 */ { Op0(0b11), Op1(0b000), CRn(0b0010), CRm(0b0000), Op2(0b001), - NULL, reset_unknown, TTBR1_EL1 }, + access_vm_reg, reset_unknown, TTBR1_EL1 }, /* TCR_EL1 */ { Op0(0b11), Op1(0b000), CRn(0b0010), CRm(0b0000), Op2(0b010), - NULL, reset_val, TCR_EL1, 0 }, + access_vm_reg, reset_val, TCR_EL1, 0 }, /* AFSR0_EL1 */ { Op0(0b11), Op1(0b000), CRn(0b0101), CRm(0b0001), Op2(0b000), - NULL, reset_unknown, AFSR0_EL1 }, + access_vm_reg, reset_unknown, AFSR0_EL1 }, /* AFSR1_EL1 */ { Op0(0b11), Op1(0b000), CRn(0b0101), CRm(0b0001), Op2(0b001), - NULL, reset_unknown, AFSR1_EL1 }, + access_vm_reg, reset_unknown, AFSR1_EL1 }, /* ESR_EL1 */ { Op0(0b11), Op1(0b000), CRn(0b0101), CRm(0b0010), Op2(0b000), - NULL, reset_unknown, ESR_EL1 }, + access_vm_reg, reset_unknown, ESR_EL1 }, /* FAR_EL1 */ { Op0(0b11), Op1(0b000), CRn(0b0110), CRm(0b0000), Op2(0b000), - NULL, reset_unknown, FAR_EL1 }, + access_vm_reg, reset_unknown, FAR_EL1 }, /* PAR_EL1 */ { Op0(0b11), Op1(0b000), CRn(0b0111), CRm(0b0100), Op2(0b000), NULL, reset_unknown, PAR_EL1 }, @@ -224,17 +267,17 @@ /* MAIR_EL1 */ { Op0(0b11), Op1(0b000), CRn(0b1010), CRm(0b0010), Op2(0b000), - NULL, reset_unknown, MAIR_EL1 }, + access_vm_reg, reset_unknown, MAIR_EL1 }, /* AMAIR_EL1 */ { Op0(0b11), Op1(0b000), CRn(0b1010), CRm(0b0011), Op2(0b000), - NULL, reset_amair_el1, AMAIR_EL1 }, + access_vm_reg, reset_amair_el1, AMAIR_EL1 }, /* VBAR_EL1 */ { Op0(0b11), Op1(0b000), CRn(0b1100), CRm(0b0000), Op2(0b000), NULL, reset_val, VBAR_EL1, 0 }, /* CONTEXTIDR_EL1 */ { Op0(0b11), Op1(0b000), CRn(0b1101), CRm(0b0000), Op2(0b001), - NULL, reset_val, CONTEXTIDR_EL1, 0 }, + access_vm_reg, reset_val, CONTEXTIDR_EL1, 0 }, /* TPIDR_EL1 */ { Op0(0b11), Op1(0b000), CRn(0b1101), CRm(0b0000), Op2(0b100), NULL, reset_unknown, TPIDR_EL1 }, @@ -305,14 +348,32 @@ NULL, reset_val, FPEXC32_EL2, 0x70 }, }; -/* Trapped cp15 registers */ +/* + * Trapped cp15 registers. TTBR0/TTBR1 get a double encoding, + * depending on the way they are accessed (as a 32bit or a 64bit + * register). + */ static const struct sys_reg_desc cp15_regs[] = { + { Op1( 0), CRn( 0), CRm( 2), Op2( 0), access_vm_reg, NULL, c2_TTBR0 }, + { Op1( 0), CRn( 1), CRm( 0), Op2( 0), access_sctlr, NULL, c1_SCTLR }, + { Op1( 0), CRn( 2), CRm( 0), Op2( 0), access_vm_reg, NULL, c2_TTBR0 }, + { Op1( 0), CRn( 2), CRm( 0), Op2( 1), access_vm_reg, NULL, c2_TTBR1 }, + { Op1( 0), CRn( 2), CRm( 0), Op2( 2), access_vm_reg, NULL, c2_TTBCR }, + { Op1( 0), CRn( 3), CRm( 0), Op2( 0), access_vm_reg, NULL, c3_DACR }, + { Op1( 0), CRn( 5), CRm( 0), Op2( 0), access_vm_reg, NULL, c5_DFSR }, + { Op1( 0), CRn( 5), CRm( 0), Op2( 1), access_vm_reg, NULL, c5_IFSR }, + { Op1( 0), CRn( 5), CRm( 1), Op2( 0), access_vm_reg, NULL, c5_ADFSR }, + { Op1( 0), CRn( 5), CRm( 1), Op2( 1), access_vm_reg, NULL, c5_AIFSR }, + { Op1( 0), CRn( 6), CRm( 0), Op2( 0), access_vm_reg, NULL, c6_DFAR }, + { Op1( 0), CRn( 6), CRm( 0), Op2( 2), access_vm_reg, NULL, c6_IFAR }, + /* * DC{C,I,CI}SW operations: */ { Op1( 0), CRn( 7), CRm( 6), Op2( 2), access_dcsw }, { Op1( 0), CRn( 7), CRm(10), Op2( 2), access_dcsw }, { Op1( 0), CRn( 7), CRm(14), Op2( 2), access_dcsw }, + { Op1( 0), CRn( 9), CRm(12), Op2( 0), pm_fake }, { Op1( 0), CRn( 9), CRm(12), Op2( 1), pm_fake }, { Op1( 0), CRn( 9), CRm(12), Op2( 2), pm_fake }, @@ -326,6 +387,14 @@ { Op1( 0), CRn( 9), CRm(14), Op2( 0), pm_fake }, { Op1( 0), CRn( 9), CRm(14), Op2( 1), pm_fake }, { Op1( 0), CRn( 9), CRm(14), Op2( 2), pm_fake }, + + { Op1( 0), CRn(10), CRm( 2), Op2( 0), access_vm_reg, NULL, c10_PRRR }, + { Op1( 0), CRn(10), CRm( 2), Op2( 1), access_vm_reg, NULL, c10_NMRR }, + { Op1( 0), CRn(10), CRm( 3), Op2( 0), access_vm_reg, NULL, c10_AMAIR0 }, + { Op1( 0), CRn(10), CRm( 3), Op2( 1), access_vm_reg, NULL, c10_AMAIR1 }, + { Op1( 0), CRn(13), CRm( 0), Op2( 1), access_vm_reg, NULL, c13_CID }, + + { Op1( 1), CRn( 0), CRm( 2), Op2( 0), access_vm_reg, NULL, c2_TTBR1 }, }; /* Target specific emulation tables */ @@ -437,6 +506,8 @@ u32 hsr = kvm_vcpu_get_hsr(vcpu); int Rt2 = (hsr >> 10) & 0xf; + params.is_aarch32 = true; + params.is_32bit = false; params.CRm = (hsr >> 1) & 0xf; params.Rt = (hsr >> 5) & 0xf; params.is_write = ((hsr & 1) == 0); @@ -480,6 +551,8 @@ struct sys_reg_params params; u32 hsr = kvm_vcpu_get_hsr(vcpu); + params.is_aarch32 = true; + params.is_32bit = true; params.CRm = (hsr >> 1) & 0xf; params.Rt = (hsr >> 5) & 0xf; params.is_write = ((hsr & 1) == 0); @@ -549,6 +622,8 @@ struct sys_reg_params params; unsigned long esr = kvm_vcpu_get_hsr(vcpu); + params.is_aarch32 = false; + params.is_32bit = false; params.Op0 = (esr >> 20) & 3; params.Op1 = (esr >> 14) & 0x7; params.CRn = (esr >> 10) & 0xf; --- linux-3.13.0.orig/arch/arm64/kvm/sys_regs.h +++ linux-3.13.0/arch/arm64/kvm/sys_regs.h @@ -30,6 +30,8 @@ u8 Op2; u8 Rt; bool is_write; + bool is_aarch32; + bool is_32bit; /* Only valid if is_aarch32 is true */ }; struct sys_reg_desc { --- linux-3.13.0.orig/arch/arm64/kvm/sys_regs_generic_v8.c +++ linux-3.13.0/arch/arm64/kvm/sys_regs_generic_v8.c @@ -88,8 +88,13 @@ &genericv8_target_table); kvm_register_target_sys_reg_table(KVM_ARM_TARGET_FOUNDATION_V8, &genericv8_target_table); + kvm_register_target_sys_reg_table(KVM_ARM_TARGET_CORTEX_A53, + &genericv8_target_table); kvm_register_target_sys_reg_table(KVM_ARM_TARGET_CORTEX_A57, &genericv8_target_table); + kvm_register_target_sys_reg_table(KVM_ARM_TARGET_XGENE_POTENZA, + &genericv8_target_table); + return 0; } late_initcall(sys_reg_genericv8_init); --- linux-3.13.0.orig/arch/arm64/lib/bitops.S +++ linux-3.13.0/arch/arm64/lib/bitops.S @@ -46,11 +46,12 @@ mov x2, #1 add x1, x1, x0, lsr #3 // Get word offset lsl x4, x2, x3 // Create mask -1: ldaxr x2, [x1] +1: ldxr x2, [x1] lsr x0, x2, x3 // Save old value of bit \instr x2, x2, x4 // toggle bit stlxr w5, x2, [x1] cbnz w5, 1b + dmb ish and x0, x0, #1 3: ret ENDPROC(\name ) --- linux-3.13.0.orig/arch/arm64/lib/clear_user.S +++ linux-3.13.0/arch/arm64/lib/clear_user.S @@ -46,7 +46,7 @@ sub x1, x1, #2 4: adds x1, x1, #1 b.mi 5f - strb wzr, [x0] +USER(9f, strb wzr, [x0] ) 5: mov x0, #0 ret ENDPROC(__clear_user) --- linux-3.13.0.orig/arch/arm64/lib/copy_from_user.S +++ linux-3.13.0/arch/arm64/lib/copy_from_user.S @@ -15,7 +15,6 @@ */ #include -#include /* * Copy from user space to a kernel buffer (alignment handled by the hardware) @@ -28,39 +27,63 @@ * x0 - bytes not copied */ 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 - ret +#include "copy_template.S" 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 + .align 2 +8: + /* + * Count bytes remain + * dst points to (dst + tmp1) + */ + mov x0, count + sub dst, dst, tmp1 + b .Lfinalize +9: + /* + * 16 bytes remain + * dst is accurate + */ + mov x0, #16 + b .Lfinalize +10: + /* + * count is accurate + * dst is accurate + */ + mov x0, count + b .Lfinalize +11: + /* + *(count + tmp2) bytes remain + * dst points to the start of the remaining bytes + */ + add x0, count, tmp2 + b .Lfinalize +12: + /* + * (count + 128) bytes remain + * dst is accurate + */ + add x0, count, #128 + b .Lfinalize +13: + /* + * (count + 128) bytes remain + * dst is pre-biased to (dst + 16) + */ + add x0, count, #128 + add dst, dst, #16 +.Lfinalize: + /* + * Zeroize remaining destination-buffer + */ + mov count, x0 +20: + /* Zero remaining buffer space */ + strb wzr, [dst], #1 + subs count, count, #1 + b.ne 20b ret .previous --- linux-3.13.0.orig/arch/arm64/lib/copy_template.S +++ linux-3.13.0/arch/arm64/lib/copy_template.S @@ -0,0 +1,212 @@ +/* + * Copyright (c) 2013, Applied Micro Circuits Corporation + * Copyright (c) 2012-2013, Linaro Limited + * + * Author: Feng Kan + * Author: Philipp Tomsich + * + * The code is adopted from the memcpy routine by Linaro Limited. + * + * This file is free software: you may copy, redistribute and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 2 of the License, or (at your + * option) any later version. + * + * This file is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * 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 . + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * 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 Linaro 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 + +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 + + mov dst, dstin + cmp count, #64 + b.ge .Lcpy_not_short + cmp count, #15 + b.le .Ltail15tiny + + /* + * 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 .Ltail15 + add dst, dst, tmp1 + add src, src, tmp1 + cmp tmp1w, #0x20 + b.eq 1f + b.lt 2f + USER(8f, ldp A_l, A_h, [src, #-48]) + USER(8f, stp A_l, A_h, [dst, #-48]) +1: + USER(8f, ldp A_l, A_h, [src, #-32]) + USER(8f, stp A_l, A_h, [dst, #-32]) +2: + USER(8f, ldp A_l, A_h, [src, #-16]) + USER(8f, stp A_l, A_h, [dst, #-16]) + +.Ltail15: + ands count, count, #15 + beq 1f + add src, src, count + USER(9f, ldp A_l, A_h, [src, #-16]) + add dst, dst, count + USER(9f, stp A_l, A_h, [dst, #-16]) +1: + b .Lsuccess + +.Ltail15tiny: + /* + * Copy up to 15 bytes of data. Does not assume additional data + * being copied. + */ + tbz count, #3, 1f + USER(10f, ldr tmp1, [src], #8) + USER(10f, str tmp1, [dst], #8) +1: + tbz count, #2, 1f + USER(10f, ldr tmp1w, [src], #4) + USER(10f, str tmp1w, [dst], #4) +1: + tbz count, #1, 1f + USER(10f, ldrh tmp1w, [src], #2) + USER(10f, strh tmp1w, [dst], #2) +1: + tbz count, #0, 1f + USER(10f, ldrb tmp1w, [src]) + USER(10f, strb tmp1w, [dst]) +1: + b .Lsuccess + +.Lcpy_not_short: + /* + * We don't much care about the alignment of DST, but we want SRC + * to be 128-bit (16 byte) aligned so that we don't cross cache line + * boundaries on both loads and stores. + */ + neg tmp2, src + ands tmp2, tmp2, #15 /* Bytes to reach alignment. */ + b.eq 2f + sub count, count, tmp2 + /* + * Copy more data than needed; it's faster than jumping + * around copying sub-Quadword quantities. We know that + * it can't overrun. + */ + USER(11f, ldp A_l, A_h, [src]) + add src, src, tmp2 + USER(11f, stp A_l, A_h, [dst]) + add dst, dst, tmp2 + /* There may be less than 63 bytes to go now. */ + cmp count, #63 + b.le .Ltail63 +2: + 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. + */ + USER(12f, ldp A_l, A_h, [src]) + USER(12f, ldp B_l, B_h, [src, #16]) + USER(12f, ldp C_l, C_h, [src, #32]) + USER(12f, ldp D_l, D_h, [src, #48]) + USER(12f, stp A_l, A_h, [dst]) + USER(12f, stp B_l, B_h, [dst, #16]) + USER(12f, stp C_l, C_h, [dst, #32]) + USER(12f, stp D_l, D_h, [dst, #48]) + tst count, #0x3f + add src, src, #64 + add dst, dst, #64 + b.ne .Ltail63 + b .Lsuccess + + /* + * Critical loop. Start at a new cache line boundary. Assuming + * 64 bytes per line this ensures the entire loop is in one line. + */ + .p2align 6 +.Lcpy_body_large: + /* There are at least 128 bytes to copy. */ + USER(12f, ldp A_l, A_h, [src, #0]) + sub dst, dst, #16 /* Pre-bias. */ + USER(13f, ldp B_l, B_h, [src, #16]) + USER(13f, ldp C_l, C_h, [src, #32]) + USER(13f, ldp D_l, D_h, [src, #48]!) /* src += 64 - Pre-bias. */ +1: + USER(13f, stp A_l, A_h, [dst, #16]) + USER(13f, ldp A_l, A_h, [src, #16]) + USER(13f, stp B_l, B_h, [dst, #32]) + USER(13f, ldp B_l, B_h, [src, #32]) + USER(13f, stp C_l, C_h, [dst, #48]) + USER(13f, ldp C_l, C_h, [src, #48]) + USER(13f, stp D_l, D_h, [dst, #64]!) + USER(13f, ldp D_l, D_h, [src, #64]!) + subs count, count, #64 + b.ge 1b + USER(13f, stp A_l, A_h, [dst, #16]) + USER(13f, stp B_l, B_h, [dst, #32]) + USER(13f, stp C_l, C_h, [dst, #48]) + USER(13f, stp D_l, D_h, [dst, #64]) + add src, src, #16 + add dst, dst, #64 + 16 + tst count, #0x3f + b.ne .Ltail63 +.Lsuccess: + /* Nothing left to copy */ + mov x0, #0 + ret --- linux-3.13.0.orig/arch/arm64/lib/copy_to_user.S +++ linux-3.13.0/arch/arm64/lib/copy_to_user.S @@ -15,7 +15,6 @@ */ #include -#include /* * Copy to user space from a kernel buffer (alignment handled by the hardware) @@ -28,34 +27,38 @@ * x0 - bytes not copied */ 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 - ret +#include "copy_template.S" ENDPROC(__copy_to_user) .section .fixup,"ax" - .align 2 -9: sub x0, x4, x0 // bytes not copied + .align 2 +8: +10: + /* + * count is accurate + */ + mov x0, count + b .Lfinalize +9: + /* + * 16 bytes remain + */ + mov x0, #16 + b .Lfinalize +11: + /* + *(count + tmp2) bytes remain + * dst points to the start of the remaining bytes + */ + add x0, count, tmp2 + b .Lfinalize +12: +13: + /* + * (count + 128) bytes remain + */ + add x0, count, #128 + b .Lfinalize +.Lfinalize: ret .previous --- linux-3.13.0.orig/arch/arm64/mm/Makefile +++ linux-3.13.0/arch/arm64/mm/Makefile @@ -1,5 +1,5 @@ obj-y := dma-mapping.o extable.o fault.o init.o \ cache.o copypage.o flush.o \ - ioremap.o mmap.o pgd.o mmu.o \ + ioremap.o iomap.o mmap.o pgd.o mmu.o \ context.o tlb.o proc.o obj-$(CONFIG_HUGETLB_PAGE) += hugetlbpage.o --- linux-3.13.0.orig/arch/arm64/mm/context.c +++ linux-3.13.0/arch/arm64/mm/context.c @@ -92,6 +92,14 @@ unsigned int cpu = smp_processor_id(); struct mm_struct *mm = current->active_mm; + /* + * current->active_mm could be init_mm for the idle thread immediately + * after secondary CPU boot or hotplug. TTBR0_EL1 is already set to + * the reserved value, so no need to reset any context. + */ + if (mm == &init_mm) + return; + smp_rmb(); asid = cpu_last_asid + cpu; --- linux-3.13.0.orig/arch/arm64/mm/copypage.c +++ linux-3.13.0/arch/arm64/mm/copypage.c @@ -32,3 +32,4 @@ { clear_page(kaddr); } +EXPORT_SYMBOL(__cpu_clear_user_page); --- linux-3.13.0.orig/arch/arm64/mm/fault.c +++ linux-3.13.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-3.13.0.orig/arch/arm64/mm/flush.c +++ linux-3.13.0/arch/arm64/mm/flush.c @@ -79,7 +79,8 @@ return; if (!test_and_set_bit(PG_dcache_clean, &page->flags)) { - __flush_dcache_area(page_address(page), PAGE_SIZE); + __flush_dcache_area(page_address(page), + PAGE_SIZE << compound_order(page)); __flush_icache_all(); } else if (icache_is_aivivt()) { __flush_icache_all(); --- linux-3.13.0.orig/arch/arm64/mm/hugetlbpage.c +++ linux-3.13.0/arch/arm64/mm/hugetlbpage.c @@ -46,17 +46,16 @@ int pmd_huge(pmd_t pmd) { - return !(pmd_val(pmd) & PMD_TABLE_BIT); + return pmd_val(pmd) && !(pmd_val(pmd) & PMD_TABLE_BIT); } int pud_huge(pud_t pud) { - return !(pud_val(pud) & PUD_TABLE_BIT); -} - -int pmd_huge_support(void) -{ - return 1; +#ifndef __PAGETABLE_PMD_FOLDED + return pud_val(pud) && !(pud_val(pud) & PUD_TABLE_BIT); +#else + return 0; +#endif } static __init int setup_hugepagesz(char *opt) --- linux-3.13.0.orig/arch/arm64/mm/init.c +++ linux-3.13.0/arch/arm64/mm/init.c @@ -240,7 +240,7 @@ * memmap entries are valid from the bank end aligned to * MAX_ORDER_NR_PAGES. */ - prev_end = ALIGN(start + __phys_to_pfn(reg->size), + prev_end = ALIGN(__phys_to_pfn(reg->base + reg->size), MAX_ORDER_NR_PAGES); } --- linux-3.13.0.orig/arch/arm64/mm/iomap.c +++ linux-3.13.0/arch/arm64/mm/iomap.c @@ -0,0 +1,31 @@ +/* + * Based on linux/arch/arm/mm/iomap.c + * + * Map IO port and PCI memory spaces so that {read,write}[bwl] can + * be used to access this memory. + */ +#include +#include +#include +#include + +#ifdef __io +void __iomem *ioport_map(unsigned long port, unsigned int nr) +{ + return __io(port); +} +EXPORT_SYMBOL(ioport_map); + +void ioport_unmap(void __iomem *addr) +{ +} +EXPORT_SYMBOL(ioport_unmap); +#endif + +#ifdef CONFIG_PCI +unsigned long pcibios_min_io = 0x1000; +EXPORT_SYMBOL(pcibios_min_io); + +unsigned long pcibios_min_mem = 0x01000000; +EXPORT_SYMBOL(pcibios_min_mem); +#endif --- linux-3.13.0.orig/arch/arm64/mm/ioremap.c +++ linux-3.13.0/arch/arm64/mm/ioremap.c @@ -25,6 +25,10 @@ #include #include +#include +#include +#include + static void __iomem *__ioremap_caller(phys_addr_t phys_addr, size_t size, pgprot_t prot, void *caller) { @@ -98,3 +102,97 @@ __builtin_return_address(0)); } EXPORT_SYMBOL(ioremap_cache); + +#ifndef CONFIG_ARM64_64K_PAGES +static pte_t bm_pte[PTRS_PER_PTE] __page_aligned_bss; +#endif + +static inline pmd_t * __init early_ioremap_pmd(unsigned long addr) +{ + pgd_t *pgd; + pud_t *pud; + + pgd = pgd_offset_k(addr); + BUG_ON(pgd_none(*pgd) || pgd_bad(*pgd)); + + pud = pud_offset(pgd, addr); + BUG_ON(pud_none(*pud) || pud_bad(*pud)); + + return pmd_offset(pud, addr); +} + +static inline pte_t * __init early_ioremap_pte(unsigned long addr) +{ + pmd_t *pmd = early_ioremap_pmd(addr); + + BUG_ON(pmd_none(*pmd) || pmd_bad(*pmd)); + + return pte_offset_kernel(pmd, addr); +} + +void __init early_ioremap_init(void) +{ + pmd_t *pmd; + + pmd = early_ioremap_pmd(fix_to_virt(FIX_BTMAP_BEGIN)); +#ifndef CONFIG_ARM64_64K_PAGES + /* need to populate pmd for 4k pagesize only */ + pmd_populate_kernel(&init_mm, pmd, bm_pte); +#endif + /* + * The boot-ioremap range spans multiple pmds, for which + * we are not prepared: + */ + BUILD_BUG_ON((__fix_to_virt(FIX_BTMAP_BEGIN) >> PMD_SHIFT) + != (__fix_to_virt(FIX_BTMAP_END) >> PMD_SHIFT)); + + if (pmd != early_ioremap_pmd(fix_to_virt(FIX_BTMAP_END))) { + WARN_ON(1); + pr_warn("pmd %p != %p\n", + pmd, early_ioremap_pmd(fix_to_virt(FIX_BTMAP_END))); + pr_warn("fix_to_virt(FIX_BTMAP_BEGIN): %08lx\n", + fix_to_virt(FIX_BTMAP_BEGIN)); + pr_warn("fix_to_virt(FIX_BTMAP_END): %08lx\n", + fix_to_virt(FIX_BTMAP_END)); + + pr_warn("FIX_BTMAP_END: %d\n", FIX_BTMAP_END); + pr_warn("FIX_BTMAP_BEGIN: %d\n", + FIX_BTMAP_BEGIN); + } + + early_ioremap_setup(); +} + +void __init __early_set_fixmap(enum fixed_addresses idx, + phys_addr_t phys, pgprot_t flags) +{ + unsigned long addr = __fix_to_virt(idx); + pte_t *pte; + + if (idx >= __end_of_fixed_addresses) { + BUG(); + return; + } + + pte = early_ioremap_pte(addr); + + if (pgprot_val(flags)) + set_pte(pte, pfn_pte(phys >> PAGE_SHIFT, flags)); + else { + pte_clear(&init_mm, addr, pte); + flush_tlb_kernel_range(addr, addr+PAGE_SIZE); + } +} + +#ifdef CONFIG_PCI +int pci_ioremap_io(unsigned int offset, phys_addr_t phys_addr) +{ + BUG_ON(offset + SZ_64K > IO_SPACE_LIMIT); + + return ioremap_page_range((unsigned long)PCI_IOBASE + offset, + (unsigned long)PCI_IOBASE + offset + SZ_64K, + phys_addr, + __pgprot(PROT_NORMAL_NC)); +} +EXPORT_SYMBOL_GPL(pci_ioremap_io); +#endif --- linux-3.13.0.orig/arch/arm64/mm/mmu.c +++ linux-3.13.0/arch/arm64/mm/mmu.c @@ -125,7 +125,7 @@ /* * Adjust the PMD section entries according to the CPU in use. */ -static void __init init_mem_pgprot(void) +void __init init_mem_pgprot(void) { pteval_t default_pgprot; int i; @@ -168,7 +168,8 @@ } static void __init alloc_init_pte(pmd_t *pmd, unsigned long addr, - unsigned long end, unsigned long pfn) + unsigned long end, unsigned long pfn, + pgprot_t prot) { pte_t *pte; @@ -180,16 +181,28 @@ pte = pte_offset_kernel(pmd, addr); do { - set_pte(pte, pfn_pte(pfn, PAGE_KERNEL_EXEC)); + set_pte(pte, pfn_pte(pfn, prot)); pfn++; } while (pte++, addr += PAGE_SIZE, addr != end); } static void __init alloc_init_pmd(pud_t *pud, unsigned long addr, - unsigned long end, phys_addr_t phys) + unsigned long end, phys_addr_t phys, + int map_io) { pmd_t *pmd; unsigned long next; + pmdval_t prot_sect; + pgprot_t prot_pte; + + if (map_io) { + prot_sect = PMD_TYPE_SECT | PMD_SECT_AF | + PMD_ATTRINDX(MT_DEVICE_nGnRE); + prot_pte = __pgprot(PROT_DEVICE_nGnRE); + } else { + prot_sect = prot_sect_kernel; + prot_pte = PAGE_KERNEL_EXEC; + } /* * Check for initial section mappings in the pgd/pud and remove them. @@ -203,23 +216,33 @@ do { next = pmd_addr_end(addr, end); /* try section mapping first */ - if (((addr | next | phys) & ~SECTION_MASK) == 0) - set_pmd(pmd, __pmd(phys | prot_sect_kernel)); - else - alloc_init_pte(pmd, addr, next, __phys_to_pfn(phys)); + if (((addr | next | phys) & ~SECTION_MASK) == 0) { + pmd_t old_pmd =*pmd; + set_pmd(pmd, __pmd(phys | prot_sect)); + /* + * Check for previous table entries created during + * boot (__create_page_tables) and flush them. + */ + if (!pmd_none(old_pmd)) + flush_tlb_all(); + } else { + alloc_init_pte(pmd, addr, next, __phys_to_pfn(phys), + prot_pte); + } phys += next - addr; } while (pmd++, addr = next, addr != end); } static void __init alloc_init_pud(pgd_t *pgd, unsigned long addr, - unsigned long end, unsigned long phys) + unsigned long end, unsigned long phys, + int map_io) { pud_t *pud = pud_offset(pgd, addr); unsigned long next; do { next = pud_addr_end(addr, end); - alloc_init_pmd(pud, addr, next, phys); + alloc_init_pmd(pud, addr, next, phys, map_io); phys += next - addr; } while (pud++, addr = next, addr != end); } @@ -228,70 +251,43 @@ * Create the page directory entries and any necessary page tables for the * mapping specified by 'md'. */ -static void __init create_mapping(phys_addr_t phys, unsigned long virt, - phys_addr_t size) +static void __init __create_mapping(pgd_t *pgd, phys_addr_t phys, + unsigned long virt, phys_addr_t size, + int map_io) { unsigned long addr, length, end, next; - pgd_t *pgd; - - if (virt < VMALLOC_START) { - pr_warning("BUG: not creating mapping for 0x%016llx at 0x%016lx - outside kernel range\n", - phys, virt); - return; - } addr = virt & PAGE_MASK; length = PAGE_ALIGN(size + (virt & ~PAGE_MASK)); - pgd = pgd_offset_k(addr); end = addr + length; do { next = pgd_addr_end(addr, end); - alloc_init_pud(pgd, addr, next, phys); + alloc_init_pud(pgd, addr, next, phys, map_io); phys += next - addr; } while (pgd++, addr = next, addr != end); } -#ifdef CONFIG_EARLY_PRINTK -/* - * Create an early I/O mapping using the pgd/pmd entries already populated - * in head.S as this function is called too early to allocated any memory. The - * mapping size is 2MB with 4KB pages or 64KB or 64KB pages. - */ -void __iomem * __init early_io_map(phys_addr_t phys, unsigned long virt) +static void __init create_mapping(phys_addr_t phys, unsigned long virt, + phys_addr_t size) { - unsigned long size, mask; - bool page64k = IS_ENABLED(CONFIG_ARM64_64K_PAGES); - pgd_t *pgd; - pud_t *pud; - pmd_t *pmd; - pte_t *pte; - - /* - * No early pte entries with !ARM64_64K_PAGES configuration, so using - * sections (pmd). - */ - size = page64k ? PAGE_SIZE : SECTION_SIZE; - mask = ~(size - 1); - - pgd = pgd_offset_k(virt); - pud = pud_offset(pgd, virt); - if (pud_none(*pud)) - return NULL; - pmd = pmd_offset(pud, virt); - - if (page64k) { - if (pmd_none(*pmd)) - return NULL; - pte = pte_offset_kernel(pmd, virt); - set_pte(pte, __pte((phys & mask) | PROT_DEVICE_nGnRE)); - } else { - set_pmd(pmd, __pmd((phys & mask) | PROT_SECT_DEVICE_nGnRE)); + if (virt < VMALLOC_START) { + pr_warn("BUG: not creating mapping for %pa at 0x%016lx - outside kernel range\n", + &phys, virt); + return; } + __create_mapping(pgd_offset_k(virt & PAGE_MASK), phys, virt, size, 0); +} - return (void __iomem *)((virt & mask) + (phys & ~mask)); +void __init create_id_mapping(phys_addr_t addr, phys_addr_t size, int map_io) +{ + if ((addr >> PGDIR_SHIFT) >= ARRAY_SIZE(idmap_pg_dir)) { + pr_warn("BUG: not creating id mapping for %pa\n", &addr); + return; + } + __create_mapping(&idmap_pg_dir[pgd_index(addr)], + addr, addr, size, map_io); } -#endif static void __init map_mem(void) { @@ -349,7 +345,6 @@ { void *zero_page; - init_mem_pgprot(); map_mem(); /* --- linux-3.13.0.orig/arch/avr32/Makefile +++ linux-3.13.0/arch/avr32/Makefile @@ -11,7 +11,7 @@ KBUILD_DEFCONFIG := atstk1002_defconfig -KBUILD_CFLAGS += -pipe -fno-builtin -mno-pic +KBUILD_CFLAGS += -pipe -fno-builtin -mno-pic -D__linux__ KBUILD_AFLAGS += -mrelax -mno-pic KBUILD_CFLAGS_MODULE += -mno-relax LDFLAGS_vmlinux += --relax --- linux-3.13.0.orig/arch/avr32/boards/mimc200/fram.c +++ linux-3.13.0/arch/avr32/boards/mimc200/fram.c @@ -11,6 +11,7 @@ #define FRAM_VERSION "1.0" #include +#include #include #include #include --- linux-3.13.0.orig/arch/avr32/mm/fault.c +++ linux-3.13.0/arch/avr32/mm/fault.c @@ -142,6 +142,8 @@ if (unlikely(fault & VM_FAULT_ERROR)) { if (fault & VM_FAULT_OOM) goto out_of_memory; + else if (fault & VM_FAULT_SIGSEGV) + goto bad_area; else if (fault & VM_FAULT_SIGBUS) goto do_sigbus; BUG(); --- linux-3.13.0.orig/arch/c6x/kernel/time.c +++ linux-3.13.0/arch/c6x/kernel/time.c @@ -49,7 +49,7 @@ return (tsc * sched_clock_multiplier) >> SCHED_CLOCK_SHIFT; } -void time_init(void) +void __init time_init(void) { u64 tmp = (u64)NSEC_PER_SEC << SCHED_CLOCK_SHIFT; --- linux-3.13.0.orig/arch/cris/mm/fault.c +++ linux-3.13.0/arch/cris/mm/fault.c @@ -176,6 +176,8 @@ if (unlikely(fault & VM_FAULT_ERROR)) { if (fault & VM_FAULT_OOM) goto out_of_memory; + else if (fault & VM_FAULT_SIGSEGV) + goto bad_area; else if (fault & VM_FAULT_SIGBUS) goto do_sigbus; BUG(); --- linux-3.13.0.orig/arch/frv/mm/fault.c +++ linux-3.13.0/arch/frv/mm/fault.c @@ -168,6 +168,8 @@ if (unlikely(fault & VM_FAULT_ERROR)) { if (fault & VM_FAULT_OOM) goto out_of_memory; + else if (fault & VM_FAULT_SIGSEGV) + goto bad_area; else if (fault & VM_FAULT_SIGBUS) goto do_sigbus; BUG(); --- linux-3.13.0.orig/arch/ia64/configs/generic_defconfig +++ linux-3.13.0/arch/ia64/configs/generic_defconfig @@ -25,7 +25,6 @@ CONFIG_CRASH_DUMP=y CONFIG_EFI_VARS=y CONFIG_BINFMT_MISC=m -CONFIG_ACPI_PROCFS=y CONFIG_ACPI_BUTTON=m CONFIG_ACPI_FAN=m CONFIG_ACPI_DOCK=y --- linux-3.13.0.orig/arch/ia64/configs/tiger_defconfig +++ linux-3.13.0/arch/ia64/configs/tiger_defconfig @@ -26,7 +26,6 @@ CONFIG_KEXEC=y CONFIG_EFI_VARS=y CONFIG_BINFMT_MISC=m -CONFIG_ACPI_PROCFS=y CONFIG_ACPI_BUTTON=m CONFIG_ACPI_FAN=m CONFIG_ACPI_PROCESSOR=m --- linux-3.13.0.orig/arch/ia64/configs/zx1_defconfig +++ linux-3.13.0/arch/ia64/configs/zx1_defconfig @@ -16,7 +16,6 @@ CONFIG_CRASH_DUMP=y CONFIG_EFI_VARS=y CONFIG_BINFMT_MISC=y -CONFIG_ACPI_PROCFS=y CONFIG_HOTPLUG_PCI=y CONFIG_HOTPLUG_PCI_ACPI=y CONFIG_PACKET=y --- linux-3.13.0.orig/arch/ia64/hp/common/sba_iommu.c +++ linux-3.13.0/arch/ia64/hp/common/sba_iommu.c @@ -242,7 +242,7 @@ struct pci_dev *sac_only_dev; }; -static struct ioc *ioc_list; +static struct ioc *ioc_list, *ioc_found; static int reserve_sba_gart = 1; static SBA_INLINE void sba_mark_invalid(struct ioc *, dma_addr_t, size_t); @@ -1807,20 +1807,13 @@ { SX2000_IOC_ID, "sx2000", NULL }, }; -static struct ioc * __init -ioc_init(unsigned long hpa, void *handle) +static void ioc_init(unsigned long hpa, struct ioc *ioc) { - struct ioc *ioc; struct ioc_iommu *info; - ioc = kzalloc(sizeof(*ioc), GFP_KERNEL); - if (!ioc) - return NULL; - ioc->next = ioc_list; ioc_list = ioc; - ioc->handle = handle; ioc->ioc_hpa = ioremap(hpa, 0x1000); ioc->func_id = READ_REG(ioc->ioc_hpa + IOC_FUNC_ID); @@ -1861,8 +1854,6 @@ "%s %d.%d HPA 0x%lx IOVA space %dMb at 0x%lx\n", ioc->name, (ioc->rev >> 4) & 0xF, ioc->rev & 0xF, hpa, ioc->iov_size >> 20, ioc->ibase); - - return ioc; } @@ -2041,22 +2032,21 @@ #define sba_map_ioc_to_node(ioc, handle) #endif -static int __init -acpi_sba_ioc_add(struct acpi_device *device, - const struct acpi_device_id *not_used) +static void acpi_sba_ioc_add(struct ioc *ioc) { - struct ioc *ioc; + acpi_handle handle = ioc->handle; acpi_status status; u64 hpa, length; struct acpi_device_info *adi; - status = hp_acpi_csr_space(device->handle, &hpa, &length); + ioc_found = ioc->next; + status = hp_acpi_csr_space(handle, &hpa, &length); if (ACPI_FAILURE(status)) - return 1; + goto err; - status = acpi_get_object_info(device->handle, &adi); + status = acpi_get_object_info(handle, &adi); if (ACPI_FAILURE(status)) - return 1; + goto err; /* * For HWP0001, only SBA appears in ACPI namespace. It encloses the PCI @@ -2077,13 +2067,13 @@ if (!iovp_shift) iovp_shift = 12; - ioc = ioc_init(hpa, device->handle); - if (!ioc) - return 1; - + ioc_init(hpa, ioc); /* setup NUMA node association */ - sba_map_ioc_to_node(ioc, device->handle); - return 0; + sba_map_ioc_to_node(ioc, handle); + return; + + err: + kfree(ioc); } static const struct acpi_device_id hp_ioc_iommu_device_ids[] = { @@ -2091,9 +2081,26 @@ {"HWP0004", 0}, {"", 0}, }; + +static int acpi_sba_ioc_attach(struct acpi_device *device, + const struct acpi_device_id *not_used) +{ + struct ioc *ioc; + + ioc = kzalloc(sizeof(*ioc), GFP_KERNEL); + if (!ioc) + return -ENOMEM; + + ioc->next = ioc_found; + ioc_found = ioc; + ioc->handle = device->handle; + return 1; +} + + static struct acpi_scan_handler acpi_sba_ioc_handler = { .ids = hp_ioc_iommu_device_ids, - .attach = acpi_sba_ioc_add, + .attach = acpi_sba_ioc_attach, }; static int __init acpi_sba_ioc_init_acpi(void) @@ -2128,9 +2135,12 @@ #endif /* - * ioc_list should be populated by the acpi_sba_ioc_handler's .attach() + * ioc_found should be populated by the acpi_sba_ioc_handler's .attach() * routine, but that only happens if acpi_scan_init() has already run. */ + while (ioc_found) + acpi_sba_ioc_add(ioc_found); + if (!ioc_list) { #ifdef CONFIG_IA64_GENERIC /* --- linux-3.13.0.orig/arch/ia64/kernel/time.c +++ linux-3.13.0/arch/ia64/kernel/time.c @@ -384,21 +384,6 @@ .name = "timer" }; -static struct platform_device rtc_efi_dev = { - .name = "rtc-efi", - .id = -1, -}; - -static int __init rtc_init(void) -{ - if (platform_device_register(&rtc_efi_dev) < 0) - printk(KERN_ERR "unable to register rtc device...\n"); - - /* not necessarily an error */ - return 0; -} -module_init(rtc_init); - void read_persistent_clock(struct timespec *ts) { efi_gettimeofday(ts); --- linux-3.13.0.orig/arch/ia64/mm/fault.c +++ linux-3.13.0/arch/ia64/mm/fault.c @@ -172,6 +172,8 @@ */ if (fault & VM_FAULT_OOM) { goto out_of_memory; + } else if (fault & VM_FAULT_SIGSEGV) { + goto bad_area; } else if (fault & VM_FAULT_SIGBUS) { signal = SIGBUS; goto bad_area; --- linux-3.13.0.orig/arch/ia64/mm/hugetlbpage.c +++ linux-3.13.0/arch/ia64/mm/hugetlbpage.c @@ -114,11 +114,6 @@ return 0; } -int pmd_huge_support(void) -{ - return 0; -} - struct page * follow_huge_pmd(struct mm_struct *mm, unsigned long address, pmd_t *pmd, int write) { --- linux-3.13.0.orig/arch/ia64/mm/numa.c +++ linux-3.13.0/arch/ia64/mm/numa.c @@ -58,27 +58,22 @@ * SPARSEMEM to allocate the SPARSEMEM sectionmap on the NUMA node where * the section resides. */ -int __meminit __early_pfn_to_nid(unsigned long pfn) +int __meminit __early_pfn_to_nid(unsigned long pfn, + struct mminit_pfnnid_cache *state) { int i, section = pfn >> PFN_SECTION_SHIFT, ssec, esec; - /* - * NOTE: The following SMP-unsafe globals are only used early in boot - * when the kernel is running single-threaded. - */ - static int __meminitdata last_ssec, last_esec; - static int __meminitdata last_nid; - if (section >= last_ssec && section < last_esec) - return last_nid; + if (section >= state->last_start && section < state->last_end) + return state->last_nid; for (i = 0; i < num_node_memblks; i++) { ssec = node_memblk[i].start_paddr >> PA_SECTION_SHIFT; esec = (node_memblk[i].start_paddr + node_memblk[i].size + ((1L << PA_SECTION_SHIFT) - 1)) >> PA_SECTION_SHIFT; if (section >= ssec && section < esec) { - last_ssec = ssec; - last_esec = esec; - last_nid = node_memblk[i].nid; + state->last_start = ssec; + state->last_end = esec; + state->last_nid = node_memblk[i].nid; return node_memblk[i].nid; } } --- linux-3.13.0.orig/arch/ia64/pci/fixup.c +++ linux-3.13.0/arch/ia64/pci/fixup.c @@ -5,6 +5,7 @@ #include #include +#include #include @@ -63,7 +64,7 @@ pci_read_config_word(pdev, PCI_COMMAND, &config); if (config & (PCI_COMMAND_IO | PCI_COMMAND_MEMORY)) { pdev->resource[PCI_ROM_RESOURCE].flags |= IORESOURCE_ROM_SHADOW; - dev_printk(KERN_DEBUG, &pdev->dev, "Boot video device\n"); + dev_printk(KERN_DEBUG, &pdev->dev, "Video device with shadowed ROM\n"); } } DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, pci_fixup_video); --- linux-3.13.0.orig/arch/m32r/kernel/setup.c +++ linux-3.13.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-3.13.0.orig/arch/m32r/mm/fault.c +++ linux-3.13.0/arch/m32r/mm/fault.c @@ -200,6 +200,8 @@ if (unlikely(fault & VM_FAULT_ERROR)) { if (fault & VM_FAULT_OOM) goto out_of_memory; + else if (fault & VM_FAULT_SIGSEGV) + goto bad_area; else if (fault & VM_FAULT_SIGBUS) goto do_sigbus; BUG(); --- linux-3.13.0.orig/arch/m68k/Kconfig +++ linux-3.13.0/arch/m68k/Kconfig @@ -17,6 +17,7 @@ select FPU if MMU select ARCH_WANT_IPC_PARSE_VERSION select ARCH_USES_GETTIMEOFFSET if MMU && !COLDFIRE + select HAVE_FUTEX_CMPXCHG if MMU && FUTEX select HAVE_MOD_ARCH_SPECIFIC select MODULES_USE_ELF_REL select MODULES_USE_ELF_RELA --- linux-3.13.0.orig/arch/m68k/include/asm/linkage.h +++ linux-3.13.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-3.13.0.orig/arch/m68k/mm/fault.c +++ linux-3.13.0/arch/m68k/mm/fault.c @@ -153,6 +153,8 @@ if (unlikely(fault & VM_FAULT_ERROR)) { if (fault & VM_FAULT_OOM) goto out_of_memory; + else if (fault & VM_FAULT_SIGSEGV) + goto map_err; else if (fault & VM_FAULT_SIGBUS) goto bus_err; BUG(); --- linux-3.13.0.orig/arch/m68k/mm/hwtest.c +++ linux-3.13.0/arch/m68k/mm/hwtest.c @@ -28,9 +28,11 @@ int hwreg_present( volatile void *regp ) { int ret = 0; + unsigned long flags; long save_sp, save_vbr; long tmp_vectors[3]; + local_irq_save(flags); __asm__ __volatile__ ( "movec %/vbr,%2\n\t" "movel #Lberr1,%4@(8)\n\t" @@ -46,6 +48,7 @@ : "=&d" (ret), "=&r" (save_sp), "=&r" (save_vbr) : "a" (regp), "a" (tmp_vectors) ); + local_irq_restore(flags); return( ret ); } @@ -58,9 +61,11 @@ int hwreg_write( volatile void *regp, unsigned short val ) { int ret; + unsigned long flags; long save_sp, save_vbr; long tmp_vectors[3]; + local_irq_save(flags); __asm__ __volatile__ ( "movec %/vbr,%2\n\t" "movel #Lberr2,%4@(8)\n\t" @@ -78,6 +83,7 @@ : "=&d" (ret), "=&r" (save_sp), "=&r" (save_vbr) : "a" (regp), "a" (tmp_vectors), "g" (val) ); + local_irq_restore(flags); return( ret ); } --- linux-3.13.0.orig/arch/metag/include/asm/barrier.h +++ linux-3.13.0/arch/metag/include/asm/barrier.h @@ -15,6 +15,7 @@ volatile int *flushptr = (volatile int *) LINSYSEVENT_WR_FENCE; barrier(); *flushptr = 0; + barrier(); } #else /* CONFIG_METAG_META21 */ @@ -35,6 +36,7 @@ *flushptr = 0; *flushptr = 0; *flushptr = 0; + barrier(); } #endif /* !CONFIG_METAG_META21 */ @@ -68,6 +70,7 @@ volatile int *flushptr = (volatile int *) LINSYSEVENT_WR_ATOMIC_UNLOCK; barrier(); *flushptr = 0; + barrier(); } #define smp_mb() fence() #define smp_rmb() fence() --- linux-3.13.0.orig/arch/metag/include/asm/processor.h +++ linux-3.13.0/arch/metag/include/asm/processor.h @@ -22,6 +22,8 @@ /* Add an extra page of padding at the top of the stack for the guard page. */ #define STACK_TOP (TASK_SIZE - PAGE_SIZE) #define STACK_TOP_MAX STACK_TOP +/* Maximum virtual space for stack */ +#define STACK_SIZE_MAX (1 << 28) /* 256 MB */ /* This decides where the kernel will search for a free chunk of vm * space during mmap's. @@ -147,8 +149,8 @@ unsigned long get_wchan(struct task_struct *p); -#define KSTK_EIP(tsk) ((tsk)->thread.kernel_context->CurrPC) -#define KSTK_ESP(tsk) ((tsk)->thread.kernel_context->AX[0].U0) +#define KSTK_EIP(tsk) (task_pt_regs(tsk)->ctx.CurrPC) +#define KSTK_ESP(tsk) (task_pt_regs(tsk)->ctx.AX[0].U0) #define user_stack_pointer(regs) ((regs)->ctx.AX[0].U0) --- linux-3.13.0.orig/arch/metag/mm/fault.c +++ linux-3.13.0/arch/metag/mm/fault.c @@ -141,6 +141,8 @@ if (unlikely(fault & VM_FAULT_ERROR)) { if (fault & VM_FAULT_OOM) goto out_of_memory; + else if (fault & VM_FAULT_SIGSEGV) + goto bad_area; else if (fault & VM_FAULT_SIGBUS) goto do_sigbus; BUG(); --- linux-3.13.0.orig/arch/metag/mm/hugetlbpage.c +++ linux-3.13.0/arch/metag/mm/hugetlbpage.c @@ -110,11 +110,6 @@ return 0; } -int pmd_huge_support(void) -{ - return 1; -} - struct page *follow_huge_pmd(struct mm_struct *mm, unsigned long address, pmd_t *pmd, int write) { --- linux-3.13.0.orig/arch/microblaze/mm/fault.c +++ linux-3.13.0/arch/microblaze/mm/fault.c @@ -224,6 +224,8 @@ if (unlikely(fault & VM_FAULT_ERROR)) { if (fault & VM_FAULT_OOM) goto out_of_memory; + else if (fault & VM_FAULT_SIGSEGV) + goto bad_area; else if (fault & VM_FAULT_SIGBUS) goto do_sigbus; BUG(); --- linux-3.13.0.orig/arch/mips/Kconfig +++ linux-3.13.0/arch/mips/Kconfig @@ -47,6 +47,7 @@ select MODULES_USE_ELF_RELA if MODULES && 64BIT select CLONE_BACKWARDS select HAVE_DEBUG_STACKOVERFLOW + select HAVE_CC_STACKPROTECTOR menu "Machine selection" @@ -2322,19 +2323,6 @@ If unsure, say Y. Only embedded should say N here. -config CC_STACKPROTECTOR - bool "Enable -fstack-protector buffer overflow detection (EXPERIMENTAL)" - help - This option turns on the -fstack-protector GCC feature. This - feature puts, at the beginning of functions, a canary value on - the stack just before the return address, and validates - the value just before actually returning. Stack based buffer - overflows (that need to overwrite this return address) now also - overwrite the canary, which gets detected and the attack is then - neutralized via a kernel panic. - - This feature requires gcc version 4.2 or above. - config USE_OF bool select OF --- linux-3.13.0.orig/arch/mips/Makefile +++ linux-3.13.0/arch/mips/Makefile @@ -232,10 +232,6 @@ LDFLAGS += -m $(ld-emul) -ifdef CONFIG_CC_STACKPROTECTOR - KBUILD_CFLAGS += -fstack-protector -endif - ifdef CONFIG_MIPS CHECKFLAGS += $(shell $(CC) $(KBUILD_CFLAGS) -dM -E -x c /dev/null | \ egrep -vw '__GNUC_(|MINOR_|PATCHLEVEL_)_' | \ --- linux-3.13.0.orig/arch/mips/boot/compressed/decompress.c +++ linux-3.13.0/arch/mips/boot/compressed/decompress.c @@ -13,6 +13,7 @@ #include #include +#include #include --- linux-3.13.0.orig/arch/mips/cavium-octeon/octeon-irq.c +++ linux-3.13.0/arch/mips/cavium-octeon/octeon-irq.c @@ -635,7 +635,7 @@ cpumask_clear(&new_affinity); cpumask_set_cpu(cpumask_first(cpu_online_mask), &new_affinity); } - __irq_set_affinity_locked(data, &new_affinity); + irq_set_affinity_locked(data, &new_affinity, false); } static int octeon_irq_ciu_set_affinity(struct irq_data *data, --- linux-3.13.0.orig/arch/mips/cavium-octeon/setup.c +++ linux-3.13.0/arch/mips/cavium-octeon/setup.c @@ -458,6 +458,18 @@ octeon_kill_core(NULL); } +static char __read_mostly octeon_system_type[80]; + +static int __init init_octeon_system_type(void) +{ + snprintf(octeon_system_type, sizeof(octeon_system_type), "%s (%s)", + cvmx_board_type_to_string(octeon_bootinfo->board_type), + octeon_model_get_string(read_c0_prid())); + + return 0; +} +early_initcall(init_octeon_system_type); + /** * Return a string representing the system type * @@ -465,11 +477,7 @@ */ const char *octeon_board_type_string(void) { - static char name[80]; - sprintf(name, "%s (%s)", - cvmx_board_type_to_string(octeon_bootinfo->board_type), - octeon_model_get_string(read_c0_prid())); - return name; + return octeon_system_type; } const char *get_system_type(void) --- linux-3.13.0.orig/arch/mips/include/asm/atomic.h +++ linux-3.13.0/arch/mips/include/asm/atomic.h @@ -673,7 +673,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-3.13.0.orig/arch/mips/include/asm/ftrace.h +++ linux-3.13.0/arch/mips/include/asm/ftrace.h @@ -24,7 +24,7 @@ asm volatile ( \ "1: " load " %[" STR(dst) "], 0(%[" STR(src) "])\n"\ " li %[" STR(error) "], 0\n" \ - "2:\n" \ + "2: .insn\n" \ \ ".section .fixup, \"ax\"\n" \ "3: li %[" STR(error) "], 1\n" \ @@ -46,7 +46,7 @@ asm volatile ( \ "1: " store " %[" STR(src) "], 0(%[" STR(dst) "])\n"\ " li %[" STR(error) "], 0\n" \ - "2:\n" \ + "2: .insn\n" \ \ ".section .fixup, \"ax\"\n" \ "3: li %[" STR(error) "], 1\n" \ --- linux-3.13.0.orig/arch/mips/include/asm/mach-generic/spaces.h +++ linux-3.13.0/arch/mips/include/asm/mach-generic/spaces.h @@ -94,7 +94,11 @@ #endif #ifndef FIXADDR_TOP +#ifdef CONFIG_KVM_GUEST +#define FIXADDR_TOP ((unsigned long)(long)(int)0x7ffe0000) +#else #define FIXADDR_TOP ((unsigned long)(long)(int)0xfffe0000) #endif +#endif #endif /* __ASM_MACH_GENERIC_SPACES_H */ --- linux-3.13.0.orig/arch/mips/include/asm/mipsregs.h +++ linux-3.13.0/arch/mips/include/asm/mipsregs.h @@ -14,6 +14,7 @@ #define _ASM_MIPSREGS_H #include +#include #include #include --- linux-3.13.0.orig/arch/mips/include/asm/pgtable.h +++ linux-3.13.0/arch/mips/include/asm/pgtable.h @@ -150,8 +150,39 @@ * Make sure the buddy is global too (if it's !none, * it better already be global) */ +#ifdef CONFIG_SMP + /* + * For SMP, multiple CPUs can race, so we need to do + * this atomically. + */ +#ifdef CONFIG_64BIT +#define LL_INSN "lld" +#define SC_INSN "scd" +#else /* CONFIG_32BIT */ +#define LL_INSN "ll" +#define SC_INSN "sc" +#endif + unsigned long page_global = _PAGE_GLOBAL; + unsigned long tmp; + + __asm__ __volatile__ ( + " .set push\n" + " .set noreorder\n" + "1: " LL_INSN " %[tmp], %[buddy]\n" + " bnez %[tmp], 2f\n" + " or %[tmp], %[tmp], %[global]\n" + " " SC_INSN " %[tmp], %[buddy]\n" + " beqz %[tmp], 1b\n" + " nop\n" + "2:\n" + " .set pop" + : [buddy] "+m" (buddy->pte), + [tmp] "=&r" (tmp) + : [global] "r" (page_global)); +#else /* !CONFIG_SMP */ if (pte_none(*buddy)) pte_val(*buddy) = pte_val(*buddy) | _PAGE_GLOBAL; +#endif /* CONFIG_SMP */ } #endif } --- linux-3.13.0.orig/arch/mips/include/asm/ptrace.h +++ linux-3.13.0/arch/mips/include/asm/ptrace.h @@ -23,7 +23,7 @@ struct pt_regs { #ifdef CONFIG_32BIT /* Pad bytes for argument save space on the stack. */ - unsigned long pad0[6]; + unsigned long pad0[8]; #endif /* Saved main processor registers. */ --- linux-3.13.0.orig/arch/mips/include/asm/reg.h +++ linux-3.13.0/arch/mips/include/asm/reg.h @@ -12,116 +12,194 @@ #ifndef __ASM_MIPS_REG_H #define __ASM_MIPS_REG_H - -#if defined(CONFIG_32BIT) || defined(WANT_COMPAT_REG_H) - -#define EF_R0 6 -#define EF_R1 7 -#define EF_R2 8 -#define EF_R3 9 -#define EF_R4 10 -#define EF_R5 11 -#define EF_R6 12 -#define EF_R7 13 -#define EF_R8 14 -#define EF_R9 15 -#define EF_R10 16 -#define EF_R11 17 -#define EF_R12 18 -#define EF_R13 19 -#define EF_R14 20 -#define EF_R15 21 -#define EF_R16 22 -#define EF_R17 23 -#define EF_R18 24 -#define EF_R19 25 -#define EF_R20 26 -#define EF_R21 27 -#define EF_R22 28 -#define EF_R23 29 -#define EF_R24 30 -#define EF_R25 31 +#define MIPS32_EF_R0 6 +#define MIPS32_EF_R1 7 +#define MIPS32_EF_R2 8 +#define MIPS32_EF_R3 9 +#define MIPS32_EF_R4 10 +#define MIPS32_EF_R5 11 +#define MIPS32_EF_R6 12 +#define MIPS32_EF_R7 13 +#define MIPS32_EF_R8 14 +#define MIPS32_EF_R9 15 +#define MIPS32_EF_R10 16 +#define MIPS32_EF_R11 17 +#define MIPS32_EF_R12 18 +#define MIPS32_EF_R13 19 +#define MIPS32_EF_R14 20 +#define MIPS32_EF_R15 21 +#define MIPS32_EF_R16 22 +#define MIPS32_EF_R17 23 +#define MIPS32_EF_R18 24 +#define MIPS32_EF_R19 25 +#define MIPS32_EF_R20 26 +#define MIPS32_EF_R21 27 +#define MIPS32_EF_R22 28 +#define MIPS32_EF_R23 29 +#define MIPS32_EF_R24 30 +#define MIPS32_EF_R25 31 /* * k0/k1 unsaved */ -#define EF_R26 32 -#define EF_R27 33 +#define MIPS32_EF_R26 32 +#define MIPS32_EF_R27 33 -#define EF_R28 34 -#define EF_R29 35 -#define EF_R30 36 -#define EF_R31 37 +#define MIPS32_EF_R28 34 +#define MIPS32_EF_R29 35 +#define MIPS32_EF_R30 36 +#define MIPS32_EF_R31 37 /* * Saved special registers */ -#define EF_LO 38 -#define EF_HI 39 +#define MIPS32_EF_LO 38 +#define MIPS32_EF_HI 39 -#define EF_CP0_EPC 40 -#define EF_CP0_BADVADDR 41 -#define EF_CP0_STATUS 42 -#define EF_CP0_CAUSE 43 -#define EF_UNUSED0 44 - -#define EF_SIZE 180 - -#endif - -#if defined(CONFIG_64BIT) && !defined(WANT_COMPAT_REG_H) - -#define EF_R0 0 -#define EF_R1 1 -#define EF_R2 2 -#define EF_R3 3 -#define EF_R4 4 -#define EF_R5 5 -#define EF_R6 6 -#define EF_R7 7 -#define EF_R8 8 -#define EF_R9 9 -#define EF_R10 10 -#define EF_R11 11 -#define EF_R12 12 -#define EF_R13 13 -#define EF_R14 14 -#define EF_R15 15 -#define EF_R16 16 -#define EF_R17 17 -#define EF_R18 18 -#define EF_R19 19 -#define EF_R20 20 -#define EF_R21 21 -#define EF_R22 22 -#define EF_R23 23 -#define EF_R24 24 -#define EF_R25 25 +#define MIPS32_EF_CP0_EPC 40 +#define MIPS32_EF_CP0_BADVADDR 41 +#define MIPS32_EF_CP0_STATUS 42 +#define MIPS32_EF_CP0_CAUSE 43 +#define MIPS32_EF_UNUSED0 44 + +#define MIPS32_EF_SIZE 180 + +#define MIPS64_EF_R0 0 +#define MIPS64_EF_R1 1 +#define MIPS64_EF_R2 2 +#define MIPS64_EF_R3 3 +#define MIPS64_EF_R4 4 +#define MIPS64_EF_R5 5 +#define MIPS64_EF_R6 6 +#define MIPS64_EF_R7 7 +#define MIPS64_EF_R8 8 +#define MIPS64_EF_R9 9 +#define MIPS64_EF_R10 10 +#define MIPS64_EF_R11 11 +#define MIPS64_EF_R12 12 +#define MIPS64_EF_R13 13 +#define MIPS64_EF_R14 14 +#define MIPS64_EF_R15 15 +#define MIPS64_EF_R16 16 +#define MIPS64_EF_R17 17 +#define MIPS64_EF_R18 18 +#define MIPS64_EF_R19 19 +#define MIPS64_EF_R20 20 +#define MIPS64_EF_R21 21 +#define MIPS64_EF_R22 22 +#define MIPS64_EF_R23 23 +#define MIPS64_EF_R24 24 +#define MIPS64_EF_R25 25 /* * k0/k1 unsaved */ -#define EF_R26 26 -#define EF_R27 27 +#define MIPS64_EF_R26 26 +#define MIPS64_EF_R27 27 -#define EF_R28 28 -#define EF_R29 29 -#define EF_R30 30 -#define EF_R31 31 +#define MIPS64_EF_R28 28 +#define MIPS64_EF_R29 29 +#define MIPS64_EF_R30 30 +#define MIPS64_EF_R31 31 /* * Saved special registers */ -#define EF_LO 32 -#define EF_HI 33 - -#define EF_CP0_EPC 34 -#define EF_CP0_BADVADDR 35 -#define EF_CP0_STATUS 36 -#define EF_CP0_CAUSE 37 +#define MIPS64_EF_LO 32 +#define MIPS64_EF_HI 33 -#define EF_SIZE 304 /* size in bytes */ +#define MIPS64_EF_CP0_EPC 34 +#define MIPS64_EF_CP0_BADVADDR 35 +#define MIPS64_EF_CP0_STATUS 36 +#define MIPS64_EF_CP0_CAUSE 37 + +#define MIPS64_EF_SIZE 304 /* size in bytes */ + +#if defined(CONFIG_32BIT) + +#define EF_R0 MIPS32_EF_R0 +#define EF_R1 MIPS32_EF_R1 +#define EF_R2 MIPS32_EF_R2 +#define EF_R3 MIPS32_EF_R3 +#define EF_R4 MIPS32_EF_R4 +#define EF_R5 MIPS32_EF_R5 +#define EF_R6 MIPS32_EF_R6 +#define EF_R7 MIPS32_EF_R7 +#define EF_R8 MIPS32_EF_R8 +#define EF_R9 MIPS32_EF_R9 +#define EF_R10 MIPS32_EF_R10 +#define EF_R11 MIPS32_EF_R11 +#define EF_R12 MIPS32_EF_R12 +#define EF_R13 MIPS32_EF_R13 +#define EF_R14 MIPS32_EF_R14 +#define EF_R15 MIPS32_EF_R15 +#define EF_R16 MIPS32_EF_R16 +#define EF_R17 MIPS32_EF_R17 +#define EF_R18 MIPS32_EF_R18 +#define EF_R19 MIPS32_EF_R19 +#define EF_R20 MIPS32_EF_R20 +#define EF_R21 MIPS32_EF_R21 +#define EF_R22 MIPS32_EF_R22 +#define EF_R23 MIPS32_EF_R23 +#define EF_R24 MIPS32_EF_R24 +#define EF_R25 MIPS32_EF_R25 +#define EF_R26 MIPS32_EF_R26 +#define EF_R27 MIPS32_EF_R27 +#define EF_R28 MIPS32_EF_R28 +#define EF_R29 MIPS32_EF_R29 +#define EF_R30 MIPS32_EF_R30 +#define EF_R31 MIPS32_EF_R31 +#define EF_LO MIPS32_EF_LO +#define EF_HI MIPS32_EF_HI +#define EF_CP0_EPC MIPS32_EF_CP0_EPC +#define EF_CP0_BADVADDR MIPS32_EF_CP0_BADVADDR +#define EF_CP0_STATUS MIPS32_EF_CP0_STATUS +#define EF_CP0_CAUSE MIPS32_EF_CP0_CAUSE +#define EF_UNUSED0 MIPS32_EF_UNUSED0 +#define EF_SIZE MIPS32_EF_SIZE + +#elif defined(CONFIG_64BIT) + +#define EF_R0 MIPS64_EF_R0 +#define EF_R1 MIPS64_EF_R1 +#define EF_R2 MIPS64_EF_R2 +#define EF_R3 MIPS64_EF_R3 +#define EF_R4 MIPS64_EF_R4 +#define EF_R5 MIPS64_EF_R5 +#define EF_R6 MIPS64_EF_R6 +#define EF_R7 MIPS64_EF_R7 +#define EF_R8 MIPS64_EF_R8 +#define EF_R9 MIPS64_EF_R9 +#define EF_R10 MIPS64_EF_R10 +#define EF_R11 MIPS64_EF_R11 +#define EF_R12 MIPS64_EF_R12 +#define EF_R13 MIPS64_EF_R13 +#define EF_R14 MIPS64_EF_R14 +#define EF_R15 MIPS64_EF_R15 +#define EF_R16 MIPS64_EF_R16 +#define EF_R17 MIPS64_EF_R17 +#define EF_R18 MIPS64_EF_R18 +#define EF_R19 MIPS64_EF_R19 +#define EF_R20 MIPS64_EF_R20 +#define EF_R21 MIPS64_EF_R21 +#define EF_R22 MIPS64_EF_R22 +#define EF_R23 MIPS64_EF_R23 +#define EF_R24 MIPS64_EF_R24 +#define EF_R25 MIPS64_EF_R25 +#define EF_R26 MIPS64_EF_R26 +#define EF_R27 MIPS64_EF_R27 +#define EF_R28 MIPS64_EF_R28 +#define EF_R29 MIPS64_EF_R29 +#define EF_R30 MIPS64_EF_R30 +#define EF_R31 MIPS64_EF_R31 +#define EF_LO MIPS64_EF_LO +#define EF_HI MIPS64_EF_HI +#define EF_CP0_EPC MIPS64_EF_CP0_EPC +#define EF_CP0_BADVADDR MIPS64_EF_CP0_BADVADDR +#define EF_CP0_STATUS MIPS64_EF_CP0_STATUS +#define EF_CP0_CAUSE MIPS64_EF_CP0_CAUSE +#define EF_SIZE MIPS64_EF_SIZE #endif /* CONFIG_64BIT */ --- linux-3.13.0.orig/arch/mips/include/asm/syscall.h +++ linux-3.13.0/arch/mips/include/asm/syscall.h @@ -29,7 +29,7 @@ static inline unsigned long mips_get_syscall_arg(unsigned long *arg, struct task_struct *task, struct pt_regs *regs, unsigned int n) { - unsigned long usp = regs->regs[29]; + unsigned long usp __maybe_unused = regs->regs[29]; switch (n) { case 0: case 1: case 2: case 3: --- linux-3.13.0.orig/arch/mips/include/uapi/asm/unistd.h +++ linux-3.13.0/arch/mips/include/uapi/asm/unistd.h @@ -369,16 +369,20 @@ #define __NR_process_vm_writev (__NR_Linux + 346) #define __NR_kcmp (__NR_Linux + 347) #define __NR_finit_module (__NR_Linux + 348) +#define __NR_sched_setattr (__NR_Linux + 349) +#define __NR_sched_getattr (__NR_Linux + 350) +#define __NR_renameat2 (__NR_Linux + 351) +#define __NR_seccomp (__NR_Linux + 352) /* * Offset of the last Linux o32 flavoured syscall */ -#define __NR_Linux_syscalls 348 +#define __NR_Linux_syscalls 352 #endif /* _MIPS_SIM == _MIPS_SIM_ABI32 */ #define __NR_O32_Linux 4000 -#define __NR_O32_Linux_syscalls 348 +#define __NR_O32_Linux_syscalls 352 #if _MIPS_SIM == _MIPS_SIM_ABI64 @@ -695,16 +699,20 @@ #define __NR_kcmp (__NR_Linux + 306) #define __NR_finit_module (__NR_Linux + 307) #define __NR_getdents64 (__NR_Linux + 308) +#define __NR_sched_setattr (__NR_Linux + 309) +#define __NR_sched_getattr (__NR_Linux + 310) +#define __NR_renameat2 (__NR_Linux + 311) +#define __NR_seccomp (__NR_Linux + 312) /* * Offset of the last Linux 64-bit flavoured syscall */ -#define __NR_Linux_syscalls 308 +#define __NR_Linux_syscalls 312 #endif /* _MIPS_SIM == _MIPS_SIM_ABI64 */ #define __NR_64_Linux 5000 -#define __NR_64_Linux_syscalls 308 +#define __NR_64_Linux_syscalls 312 #if _MIPS_SIM == _MIPS_SIM_NABI32 @@ -1025,15 +1033,19 @@ #define __NR_process_vm_writev (__NR_Linux + 310) #define __NR_kcmp (__NR_Linux + 311) #define __NR_finit_module (__NR_Linux + 312) +#define __NR_sched_setattr (__NR_Linux + 313) +#define __NR_sched_getattr (__NR_Linux + 314) +#define __NR_renameat2 (__NR_Linux + 315) +#define __NR_seccomp (__NR_Linux + 316) /* * Offset of the last N32 flavoured syscall */ -#define __NR_Linux_syscalls 312 +#define __NR_Linux_syscalls 316 #endif /* _MIPS_SIM == _MIPS_SIM_NABI32 */ #define __NR_N32_Linux 6000 -#define __NR_N32_Linux_syscalls 312 +#define __NR_N32_Linux_syscalls 316 #endif /* _UAPI_ASM_UNISTD_H */ --- linux-3.13.0.orig/arch/mips/kernel/binfmt_elfo32.c +++ linux-3.13.0/arch/mips/kernel/binfmt_elfo32.c @@ -58,12 +58,6 @@ #include -/* - * When this file is selected, we are definitely running a 64bit kernel. - * So using the right regs define in asm/reg.h - */ -#define WANT_COMPAT_REG_H - /* These MUST be defined before elf.h gets included */ extern void elf32_core_copy_regs(elf_gregset_t grp, struct pt_regs *regs); #define ELF_CORE_COPY_REGS(_dest, _regs) elf32_core_copy_regs(_dest, _regs); @@ -135,21 +129,21 @@ { int i; - for (i = 0; i < EF_R0; i++) + for (i = 0; i < MIPS32_EF_R0; i++) grp[i] = 0; - grp[EF_R0] = 0; + grp[MIPS32_EF_R0] = 0; for (i = 1; i <= 31; i++) - grp[EF_R0 + i] = (elf_greg_t) regs->regs[i]; - grp[EF_R26] = 0; - grp[EF_R27] = 0; - grp[EF_LO] = (elf_greg_t) regs->lo; - grp[EF_HI] = (elf_greg_t) regs->hi; - grp[EF_CP0_EPC] = (elf_greg_t) regs->cp0_epc; - grp[EF_CP0_BADVADDR] = (elf_greg_t) regs->cp0_badvaddr; - grp[EF_CP0_STATUS] = (elf_greg_t) regs->cp0_status; - grp[EF_CP0_CAUSE] = (elf_greg_t) regs->cp0_cause; -#ifdef EF_UNUSED0 - grp[EF_UNUSED0] = 0; + grp[MIPS32_EF_R0 + i] = (elf_greg_t) regs->regs[i]; + grp[MIPS32_EF_R26] = 0; + grp[MIPS32_EF_R27] = 0; + grp[MIPS32_EF_LO] = (elf_greg_t) regs->lo; + grp[MIPS32_EF_HI] = (elf_greg_t) regs->hi; + grp[MIPS32_EF_CP0_EPC] = (elf_greg_t) regs->cp0_epc; + grp[MIPS32_EF_CP0_BADVADDR] = (elf_greg_t) regs->cp0_badvaddr; + grp[MIPS32_EF_CP0_STATUS] = (elf_greg_t) regs->cp0_status; + grp[MIPS32_EF_CP0_CAUSE] = (elf_greg_t) regs->cp0_cause; +#ifdef MIPS32_EF_UNUSED0 + grp[MIPS32_EF_UNUSED0] = 0; #endif } --- linux-3.13.0.orig/arch/mips/kernel/irq-gic.c +++ linux-3.13.0/arch/mips/kernel/irq-gic.c @@ -255,11 +255,13 @@ /* Setup Intr to Pin mapping */ if (pin & GIC_MAP_TO_NMI_MSK) { + int i; + GICWRITE(GIC_REG_ADDR(SHARED, GIC_SH_MAP_TO_PIN(intr)), pin); /* FIXME: hack to route NMI to all cpu's */ - for (cpu = 0; cpu < NR_CPUS; cpu += 32) { + for (i = 0; i < NR_CPUS; i += 32) { GICWRITE(GIC_REG_ADDR(SHARED, - GIC_SH_MAP_TO_VPE_REG_OFF(intr, cpu)), + GIC_SH_MAP_TO_VPE_REG_OFF(intr, i)), 0xffffffff); } } else { --- linux-3.13.0.orig/arch/mips/kernel/irq-msc01.c +++ linux-3.13.0/arch/mips/kernel/irq-msc01.c @@ -131,7 +131,7 @@ board_bind_eic_interrupt = &msc_bind_eic_interrupt; - for (; nirq >= 0; nirq--, imp++) { + for (; nirq > 0; nirq--, imp++) { int n = imp->im_irq; switch (imp->im_type) { --- linux-3.13.0.orig/arch/mips/kernel/irq.c +++ linux-3.13.0/arch/mips/kernel/irq.c @@ -110,7 +110,7 @@ #endif } -#ifdef DEBUG_STACKOVERFLOW +#ifdef CONFIG_DEBUG_STACKOVERFLOW static inline void check_stack_overflow(void) { unsigned long sp; --- linux-3.13.0.orig/arch/mips/kernel/irq_cpu.c +++ linux-3.13.0/arch/mips/kernel/irq_cpu.c @@ -56,6 +56,8 @@ .irq_mask_ack = mask_mips_irq, .irq_unmask = unmask_mips_irq, .irq_eoi = unmask_mips_irq, + .irq_disable = mask_mips_irq, + .irq_enable = unmask_mips_irq, }; /* @@ -92,6 +94,8 @@ .irq_mask_ack = mips_mt_cpu_irq_ack, .irq_unmask = unmask_mips_irq, .irq_eoi = unmask_mips_irq, + .irq_disable = mask_mips_irq, + .irq_enable = unmask_mips_irq, }; void __init mips_cpu_irq_init(void) --- linux-3.13.0.orig/arch/mips/kernel/mcount.S +++ linux-3.13.0/arch/mips/kernel/mcount.S @@ -123,7 +123,11 @@ nop #endif b ftrace_stub +#ifdef CONFIG_32BIT + addiu sp, sp, 8 +#else nop +#endif static_trace: MCOUNT_SAVE_REGS @@ -133,6 +137,9 @@ move a1, AT /* arg2: parent's return address */ MCOUNT_RESTORE_REGS +#ifdef CONFIG_32BIT + addiu sp, sp, 8 +#endif .globl ftrace_stub ftrace_stub: RETURN_BACK @@ -177,6 +184,11 @@ jal prepare_ftrace_return nop MCOUNT_RESTORE_REGS +#ifndef CONFIG_DYNAMIC_FTRACE +#ifdef CONFIG_32BIT + addiu sp, sp, 8 +#endif +#endif RETURN_BACK END(ftrace_graph_caller) --- linux-3.13.0.orig/arch/mips/kernel/mips-mt-fpaff.c +++ linux-3.13.0/arch/mips/kernel/mips-mt-fpaff.c @@ -154,7 +154,7 @@ unsigned long __user *user_mask_ptr) { unsigned int real_len; - cpumask_t mask; + cpumask_t allowed, mask; int retval; struct task_struct *p; @@ -173,7 +173,8 @@ if (retval) goto out_unlock; - cpumask_and(&mask, &p->thread.user_cpus_allowed, cpu_possible_mask); + cpumask_or(&allowed, &p->thread.user_cpus_allowed, &p->cpus_allowed); + cpumask_and(&mask, &allowed, cpu_active_mask); out_unlock: read_unlock(&tasklist_lock); --- linux-3.13.0.orig/arch/mips/kernel/mips_ksyms.c +++ linux-3.13.0/arch/mips/kernel/mips_ksyms.c @@ -14,6 +14,7 @@ #include #include #include +#include extern void *__bzero(void *__s, size_t __count); extern long __strncpy_from_user_nocheck_asm(char *__to, @@ -26,6 +27,13 @@ extern long __strnlen_user_asm(const char *s); /* + * Core architecture code + */ +#ifdef CONFIG_CPU_R4K_FPU +EXPORT_SYMBOL_GPL(_save_fp); +#endif + +/* * String functions */ EXPORT_SYMBOL(memset); --- linux-3.13.0.orig/arch/mips/kernel/ptrace.c +++ linux-3.13.0/arch/mips/kernel/ptrace.c @@ -170,6 +170,7 @@ __get_user(fregs[i], i + (__u64 __user *) data); __get_user(child->thread.fpu.fcr31, data + 64); + child->thread.fpu.fcr31 &= ~FPU_CSR_ALL_X; /* FIR may not be written. */ @@ -265,36 +266,160 @@ /* regset get/set implementations */ -static int gpr_get(struct task_struct *target, - const struct user_regset *regset, - unsigned int pos, unsigned int count, - void *kbuf, void __user *ubuf) +#if defined(CONFIG_32BIT) || defined(CONFIG_MIPS32_O32) + +static int gpr32_get(struct task_struct *target, + const struct user_regset *regset, + unsigned int pos, unsigned int count, + void *kbuf, void __user *ubuf) { struct pt_regs *regs = task_pt_regs(target); + u32 uregs[ELF_NGREG] = {}; + unsigned i; - return user_regset_copyout(&pos, &count, &kbuf, &ubuf, - regs, 0, sizeof(*regs)); + for (i = MIPS32_EF_R1; i <= MIPS32_EF_R31; i++) { + /* k0/k1 are copied as zero. */ + if (i == MIPS32_EF_R26 || i == MIPS32_EF_R27) + continue; + + uregs[i] = regs->regs[i - MIPS32_EF_R0]; + } + + uregs[MIPS32_EF_LO] = regs->lo; + uregs[MIPS32_EF_HI] = regs->hi; + uregs[MIPS32_EF_CP0_EPC] = regs->cp0_epc; + uregs[MIPS32_EF_CP0_BADVADDR] = regs->cp0_badvaddr; + uregs[MIPS32_EF_CP0_STATUS] = regs->cp0_status; + uregs[MIPS32_EF_CP0_CAUSE] = regs->cp0_cause; + + return user_regset_copyout(&pos, &count, &kbuf, &ubuf, uregs, 0, + sizeof(uregs)); } -static int gpr_set(struct task_struct *target, - const struct user_regset *regset, - unsigned int pos, unsigned int count, - const void *kbuf, const void __user *ubuf) +static int gpr32_set(struct task_struct *target, + const struct user_regset *regset, + unsigned int pos, unsigned int count, + const void *kbuf, const void __user *ubuf) { - struct pt_regs newregs; - int ret; + struct pt_regs *regs = task_pt_regs(target); + u32 uregs[ELF_NGREG]; + unsigned start, num_regs, i; + int err; - ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, - &newregs, - 0, sizeof(newregs)); - if (ret) - return ret; + start = pos / sizeof(u32); + num_regs = count / sizeof(u32); + + if (start + num_regs > ELF_NGREG) + return -EIO; - *task_pt_regs(target) = newregs; + err = user_regset_copyin(&pos, &count, &kbuf, &ubuf, uregs, 0, + sizeof(uregs)); + if (err) + return err; + + for (i = start; i < num_regs; i++) { + /* + * Cast all values to signed here so that if this is a 64-bit + * kernel, the supplied 32-bit values will be sign extended. + */ + switch (i) { + case MIPS32_EF_R1 ... MIPS32_EF_R25: + /* k0/k1 are ignored. */ + case MIPS32_EF_R28 ... MIPS32_EF_R31: + regs->regs[i - MIPS32_EF_R0] = (s32)uregs[i]; + break; + case MIPS32_EF_LO: + regs->lo = (s32)uregs[i]; + break; + case MIPS32_EF_HI: + regs->hi = (s32)uregs[i]; + break; + case MIPS32_EF_CP0_EPC: + regs->cp0_epc = (s32)uregs[i]; + break; + } + } return 0; } +#endif /* CONFIG_32BIT || CONFIG_MIPS32_O32 */ + +#ifdef CONFIG_64BIT + +static int gpr64_get(struct task_struct *target, + const struct user_regset *regset, + unsigned int pos, unsigned int count, + void *kbuf, void __user *ubuf) +{ + struct pt_regs *regs = task_pt_regs(target); + u64 uregs[ELF_NGREG] = {}; + unsigned i; + + for (i = MIPS64_EF_R1; i <= MIPS64_EF_R31; i++) { + /* k0/k1 are copied as zero. */ + if (i == MIPS64_EF_R26 || i == MIPS64_EF_R27) + continue; + + uregs[i] = regs->regs[i - MIPS64_EF_R0]; + } + + uregs[MIPS64_EF_LO] = regs->lo; + uregs[MIPS64_EF_HI] = regs->hi; + uregs[MIPS64_EF_CP0_EPC] = regs->cp0_epc; + uregs[MIPS64_EF_CP0_BADVADDR] = regs->cp0_badvaddr; + uregs[MIPS64_EF_CP0_STATUS] = regs->cp0_status; + uregs[MIPS64_EF_CP0_CAUSE] = regs->cp0_cause; + + return user_regset_copyout(&pos, &count, &kbuf, &ubuf, uregs, 0, + sizeof(uregs)); +} + +static int gpr64_set(struct task_struct *target, + const struct user_regset *regset, + unsigned int pos, unsigned int count, + const void *kbuf, const void __user *ubuf) +{ + struct pt_regs *regs = task_pt_regs(target); + u64 uregs[ELF_NGREG]; + unsigned start, num_regs, i; + int err; + + start = pos / sizeof(u64); + num_regs = count / sizeof(u64); + + if (start + num_regs > ELF_NGREG) + return -EIO; + + err = user_regset_copyin(&pos, &count, &kbuf, &ubuf, uregs, 0, + sizeof(uregs)); + if (err) + return err; + + for (i = start; i < num_regs; i++) { + switch (i) { + case MIPS64_EF_R1 ... MIPS64_EF_R25: + /* k0/k1 are ignored. */ + case MIPS64_EF_R28 ... MIPS64_EF_R31: + regs->regs[i - MIPS64_EF_R0] = uregs[i]; + break; + case MIPS64_EF_LO: + regs->lo = uregs[i]; + break; + case MIPS64_EF_HI: + regs->hi = uregs[i]; + break; + case MIPS64_EF_CP0_EPC: + regs->cp0_epc = uregs[i]; + break; + } + } + + return 0; +} + +#endif /* CONFIG_64BIT */ + static int fpr_get(struct task_struct *target, const struct user_regset *regset, unsigned int pos, unsigned int count, @@ -322,14 +447,16 @@ REGSET_FPR, }; +#if defined(CONFIG_32BIT) || defined(CONFIG_MIPS32_O32) + static const struct user_regset mips_regsets[] = { [REGSET_GPR] = { .core_note_type = NT_PRSTATUS, .n = ELF_NGREG, .size = sizeof(unsigned int), .align = sizeof(unsigned int), - .get = gpr_get, - .set = gpr_set, + .get = gpr32_get, + .set = gpr32_set, }, [REGSET_FPR] = { .core_note_type = NT_PRFPREG, @@ -349,14 +476,18 @@ .n = ARRAY_SIZE(mips_regsets), }; +#endif /* CONFIG_32BIT || CONFIG_MIPS32_O32 */ + +#ifdef CONFIG_64BIT + static const struct user_regset mips64_regsets[] = { [REGSET_GPR] = { .core_note_type = NT_PRSTATUS, .n = ELF_NGREG, .size = sizeof(unsigned long), .align = sizeof(unsigned long), - .get = gpr_get, - .set = gpr_set, + .get = gpr64_get, + .set = gpr64_set, }, [REGSET_FPR] = { .core_note_type = NT_PRFPREG, @@ -369,25 +500,26 @@ }; static const struct user_regset_view user_mips64_view = { - .name = "mips", + .name = "mips64", .e_machine = ELF_ARCH, .ei_osabi = ELF_OSABI, .regsets = mips64_regsets, - .n = ARRAY_SIZE(mips_regsets), + .n = ARRAY_SIZE(mips64_regsets), }; +#endif /* CONFIG_64BIT */ + const struct user_regset_view *task_user_regset_view(struct task_struct *task) { #ifdef CONFIG_32BIT return &user_mips_view; -#endif - +#else #ifdef CONFIG_MIPS32_O32 - if (test_thread_flag(TIF_32BIT_REGS)) - return &user_mips_view; + if (test_tsk_thread_flag(task, TIF_32BIT_REGS)) + return &user_mips_view; #endif - return &user_mips64_view; +#endif } long arch_ptrace(struct task_struct *child, long request, @@ -587,7 +719,7 @@ break; #endif case FPC_CSR: - child->thread.fpu.fcr31 = data; + child->thread.fpu.fcr31 = data & ~FPU_CSR_ALL_X; break; case DSP_BASE ... DSP_BASE + 5: { dspreg_t *dregs; --- linux-3.13.0.orig/arch/mips/kernel/scall32-o32.S +++ linux-3.13.0/arch/mips/kernel/scall32-o32.S @@ -563,3 +563,7 @@ PTR sys_process_vm_writev PTR sys_kcmp PTR sys_finit_module + PTR sys_ni_syscall /* sched_setattr */ + PTR sys_ni_syscall /* 4350 */ /* sched_getattr */ + PTR sys_ni_syscall /* renameat2 */ + PTR sys_seccomp --- linux-3.13.0.orig/arch/mips/kernel/scall64-64.S +++ linux-3.13.0/arch/mips/kernel/scall64-64.S @@ -425,4 +425,8 @@ PTR sys_kcmp PTR sys_finit_module PTR sys_getdents64 + PTR sys_sched_setattr /* sched_setattr */ + PTR sys_sched_getattr /* 5310 */ /* sched_getattr */ + PTR sys_ni_syscall /* renameat2 */ + PTR sys_seccomp .size sys_call_table,.-sys_call_table --- linux-3.13.0.orig/arch/mips/kernel/scall64-n32.S +++ linux-3.13.0/arch/mips/kernel/scall64-n32.S @@ -418,4 +418,8 @@ PTR compat_sys_process_vm_writev /* 6310 */ PTR sys_kcmp PTR sys_finit_module + PTR sys_ni_syscall /* sched_setattr */ + PTR sys_ni_syscall /* sched_getattr */ + PTR sys_ni_syscall /* 6315 */ /* renameat2 */ + PTR sys_seccomp .size sysn32_call_table,.-sysn32_call_table --- linux-3.13.0.orig/arch/mips/kernel/scall64-o32.S +++ linux-3.13.0/arch/mips/kernel/scall64-o32.S @@ -541,4 +541,8 @@ PTR compat_sys_process_vm_writev PTR sys_kcmp PTR sys_finit_module + PTR sys_ni_syscall /* sched_setattr */ + PTR sys_ni_syscall /* 4350 */ /* sched_getattr */ + PTR sys_ni_syscall /* renameat2 */ + PTR sys_seccomp .size sys32_call_table,.-sys32_call_table --- linux-3.13.0.orig/arch/mips/kernel/smp.c +++ linux-3.13.0/arch/mips/kernel/smp.c @@ -109,10 +109,10 @@ else #endif /* CONFIG_MIPS_MT_SMTC */ cpu_probe(); - cpu_report(); per_cpu_trap_init(false); mips_clockevent_init(); mp_ops->init_secondary(); + cpu_report(); /* * XXX parity protection should be folded in here when it's converted --- linux-3.13.0.orig/arch/mips/kernel/traps.c +++ linux-3.13.0/arch/mips/kernel/traps.c @@ -687,15 +687,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); } @@ -796,7 +796,7 @@ static 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 @@ -824,7 +824,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-3.13.0.orig/arch/mips/kernel/unaligned.c +++ linux-3.13.0/arch/mips/kernel/unaligned.c @@ -605,7 +605,6 @@ case sdc1_op: die_if_kernel("Unaligned FP access in kernel code", regs); BUG_ON(!used_math()); - BUG_ON(!is_fpu_owner()); lose_fpu(1); /* Save FPU state for the emulator. */ res = fpu_emulator_cop1Handler(regs, ¤t->thread.fpu, 1, --- linux-3.13.0.orig/arch/mips/kvm/kvm_locore.S +++ linux-3.13.0/arch/mips/kvm/kvm_locore.S @@ -159,9 +159,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: @@ -428,7 +430,7 @@ /* Setup status register for running guest in UM */ .set at or v1, v1, (ST0_EXL | KSU_USER | ST0_IE) - and v1, v1, ~ST0_CU0 + and v1, v1, ~(ST0_CU0 | ST0_MX) .set noat mtc0 v1, CP0_STATUS ehb @@ -438,9 +440,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-3.13.0.orig/arch/mips/kvm/kvm_mips.c +++ linux-3.13.0/arch/mips/kvm/kvm_mips.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include @@ -304,7 +305,7 @@ if (cpu_has_veic || cpu_has_vint) { size = 0x200 + VECTORSPACING * 64; } else { - size = 0x200; + size = 0x4000; } /* Save Linux EBASE */ @@ -314,7 +315,7 @@ if (!gebase) { err = -ENOMEM; - goto out_free_cpu; + goto out_uninit_cpu; } kvm_info("Allocated %d bytes for KVM Exception Handlers @ %p\n", ALIGN(size, PAGE_SIZE), gebase); @@ -374,6 +375,9 @@ out_free_gebase: kfree(gebase); +out_uninit_cpu: + kvm_vcpu_uninit(vcpu); + out_free_cpu: kfree(vcpu); @@ -395,6 +399,7 @@ if (vcpu->arch.kseg0_commpage) kfree(vcpu->arch.kseg0_commpage); + kfree(vcpu); } void kvm_arch_vcpu_destroy(struct kvm_vcpu *vcpu) @@ -423,11 +428,13 @@ vcpu->mmio_needed = 0; } + lose_fpu(1); + + local_irq_disable(); /* Check if we have any exceptions/interrupts pending */ kvm_mips_deliver_interrupts(vcpu, kvm_read_c0_guest_cause(vcpu->arch.cop0)); - local_irq_disable(); kvm_guest_enter(); r = __kvm_mips_vcpu_run(run, vcpu); @@ -806,7 +813,7 @@ /* If nothing is dirty, don't bother messing with page tables. */ if (is_dirty) { - memslot = &kvm->memslots->memslots[log->slot]; + memslot = id_to_memslot(kvm->memslots, log->slot); ga = memslot->base_gfn << PAGE_SHIFT; ga_end = ga + (memslot->npages << PAGE_SHIFT); @@ -1027,9 +1034,6 @@ { uint32_t status = read_c0_status(); - if (cpu_has_fpu) - status |= (ST0_CU1); - if (cpu_has_dsp) status |= (ST0_MX); --- linux-3.13.0.orig/arch/mips/kvm/kvm_mips_emul.c +++ linux-3.13.0/arch/mips/kvm/kvm_mips_emul.c @@ -935,7 +935,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; @@ -1571,17 +1571,17 @@ arch->gprs[rt] = kvm_read_c0_guest_userlocal(cop0); #else /* UserLocal not implemented */ - er = kvm_mips_emulate_ri_exc(cause, opc, run, vcpu); + er = EMULATE_FAIL; #endif break; default: - printk("RDHWR not supported\n"); + kvm_debug("RDHWR %#x not supported @ %p\n", rd, opc); er = EMULATE_FAIL; break; } } else { - printk("Emulate RI not supported @ %p: %#x\n", opc, inst); + kvm_debug("Emulate RI not supported @ %p: %#x\n", opc, inst); er = EMULATE_FAIL; } @@ -1590,6 +1590,7 @@ */ if (er == EMULATE_FAIL) { vcpu->arch.pc = curr_pc; + er = kvm_mips_emulate_ri_exc(cause, opc, run, vcpu); } return er; } --- linux-3.13.0.orig/arch/mips/kvm/trace.h +++ linux-3.13.0/arch/mips/kvm/trace.h @@ -26,18 +26,18 @@ TP_PROTO(struct kvm_vcpu *vcpu, unsigned int reason), TP_ARGS(vcpu, reason), TP_STRUCT__entry( - __field(struct kvm_vcpu *, vcpu) + __field(unsigned long, pc) __field(unsigned int, reason) ), TP_fast_assign( - __entry->vcpu = vcpu; + __entry->pc = vcpu->arch.pc; __entry->reason = reason; ), TP_printk("[%s]PC: 0x%08lx", kvm_mips_exit_types_str[__entry->reason], - __entry->vcpu->arch.pc) + __entry->pc) ); #endif /* _TRACE_KVM_H */ --- linux-3.13.0.orig/arch/mips/lantiq/dts/easy50712.dts +++ linux-3.13.0/arch/mips/lantiq/dts/easy50712.dts @@ -8,6 +8,7 @@ }; memory@0 { + device_type = "memory"; reg = <0x0 0x2000000>; }; --- linux-3.13.0.orig/arch/mips/loongson/common/Makefile +++ linux-3.13.0/arch/mips/loongson/common/Makefile @@ -11,7 +11,8 @@ # Serial port support # obj-$(CONFIG_EARLY_PRINTK) += early_printk.o -obj-$(CONFIG_SERIAL_8250) += serial.o +loongson-serial-$(CONFIG_SERIAL_8250) := serial.o +obj-y += $(loongson-serial-m) $(loongson-serial-y) obj-$(CONFIG_LOONGSON_UART_BASE) += uart_base.o obj-$(CONFIG_LOONGSON_MC146818) += rtc.o --- linux-3.13.0.orig/arch/mips/mm/dma-default.c +++ linux-3.13.0/arch/mips/mm/dma-default.c @@ -92,7 +92,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-3.13.0.orig/arch/mips/mm/fault.c +++ linux-3.13.0/arch/mips/mm/fault.c @@ -158,6 +158,8 @@ if (unlikely(fault & VM_FAULT_ERROR)) { if (fault & VM_FAULT_OOM) goto out_of_memory; + else if (fault & VM_FAULT_SIGSEGV) + goto bad_area; else if (fault & VM_FAULT_SIGBUS) goto do_sigbus; BUG(); --- linux-3.13.0.orig/arch/mips/mm/hugetlbpage.c +++ linux-3.13.0/arch/mips/mm/hugetlbpage.c @@ -85,11 +85,6 @@ return (pud_val(pud) & _PAGE_HUGE) != 0; } -int pmd_huge_support(void) -{ - return 1; -} - struct page * follow_huge_pmd(struct mm_struct *mm, unsigned long address, pmd_t *pmd, int write) --- linux-3.13.0.orig/arch/mips/mm/tlbex.c +++ linux-3.13.0/arch/mips/mm/tlbex.c @@ -1057,6 +1057,7 @@ struct mips_huge_tlb_info { int huge_pte; int restore_scratch; + bool need_reload_pte; }; static struct mips_huge_tlb_info @@ -1071,6 +1072,7 @@ rv.huge_pte = scratch; rv.restore_scratch = 0; + rv.need_reload_pte = false; if (check_for_high_segbits) { UASM_i_MFC0(p, tmp, C0_BADVADDR); @@ -1259,6 +1261,7 @@ } else { htlb_info.huge_pte = K0; htlb_info.restore_scratch = 0; + htlb_info.need_reload_pte = true; vmalloc_mode = refill_noscratch; /* * create the plain linear handler @@ -1295,6 +1298,8 @@ } #ifdef CONFIG_MIPS_HUGE_TLB_SUPPORT uasm_l_tlb_huge_update(&l, p); + if (htlb_info.need_reload_pte) + UASM_i_LW(&p, htlb_info.huge_pte, 0, K1); build_huge_update_entries(&p, htlb_info.huge_pte, K1); build_huge_tlb_write_entry(&p, &l, &r, K0, tlb_random, htlb_info.restore_scratch); --- linux-3.13.0.orig/arch/mips/oprofile/backtrace.c +++ linux-3.13.0/arch/mips/oprofile/backtrace.c @@ -92,7 +92,7 @@ /* This marks the end of the previous function, which means we overran. */ break; - stack_size = (unsigned) stack_adjustment; + stack_size = (unsigned long) stack_adjustment; } else if (is_ra_save_ins(&ip)) { int ra_slot = ip.i_format.simmediate; if (ra_slot < 0) --- linux-3.13.0.orig/arch/mips/power/hibernate.S +++ linux-3.13.0/arch/mips/power/hibernate.S @@ -30,6 +30,8 @@ END(swsusp_arch_suspend) LEAF(swsusp_arch_resume) + /* Avoid TLB mismatch during and after kernel resume */ + jal local_flush_tlb_all PTR_L t0, restore_pblist 0: PTR_L t1, PBE_ADDRESS(t0) /* source */ --- linux-3.13.0.orig/arch/mips/ralink/dts/mt7620a_eval.dts +++ linux-3.13.0/arch/mips/ralink/dts/mt7620a_eval.dts @@ -7,6 +7,7 @@ model = "Ralink MT7620A evaluation board"; memory@0 { + device_type = "memory"; reg = <0x0 0x2000000>; }; --- linux-3.13.0.orig/arch/mips/ralink/dts/rt2880_eval.dts +++ linux-3.13.0/arch/mips/ralink/dts/rt2880_eval.dts @@ -7,6 +7,7 @@ model = "Ralink RT2880 evaluation board"; memory@0 { + device_type = "memory"; reg = <0x8000000 0x2000000>; }; --- linux-3.13.0.orig/arch/mips/ralink/dts/rt3052_eval.dts +++ linux-3.13.0/arch/mips/ralink/dts/rt3052_eval.dts @@ -7,6 +7,7 @@ model = "Ralink RT3052 evaluation board"; memory@0 { + device_type = "memory"; reg = <0x0 0x2000000>; }; --- linux-3.13.0.orig/arch/mips/ralink/dts/rt3883_eval.dts +++ linux-3.13.0/arch/mips/ralink/dts/rt3883_eval.dts @@ -7,6 +7,7 @@ model = "Ralink RT3883 evaluation board"; memory@0 { + device_type = "memory"; reg = <0x0 0x2000000>; }; --- linux-3.13.0.orig/arch/mn10300/mm/fault.c +++ linux-3.13.0/arch/mn10300/mm/fault.c @@ -262,6 +262,8 @@ if (unlikely(fault & VM_FAULT_ERROR)) { if (fault & VM_FAULT_OOM) goto out_of_memory; + else if (fault & VM_FAULT_SIGSEGV) + goto bad_area; else if (fault & VM_FAULT_SIGBUS) goto do_sigbus; BUG(); --- linux-3.13.0.orig/arch/openrisc/mm/fault.c +++ linux-3.13.0/arch/openrisc/mm/fault.c @@ -171,6 +171,8 @@ if (unlikely(fault & VM_FAULT_ERROR)) { if (fault & VM_FAULT_OOM) goto out_of_memory; + else if (fault & VM_FAULT_SIGSEGV) + goto bad_area; else if (fault & VM_FAULT_SIGBUS) goto do_sigbus; BUG(); --- linux-3.13.0.orig/arch/parisc/Kconfig +++ linux-3.13.0/arch/parisc/Kconfig @@ -22,6 +22,7 @@ select GENERIC_SMP_IDLE_THREAD select GENERIC_STRNCPY_FROM_USER select SYSCTL_ARCH_UNALIGN_ALLOW + select SYSCTL_EXCEPTION_TRACE select HAVE_MOD_ARCH_SPECIFIC select VIRT_TO_BUS select MODULES_USE_ELF_RELA --- linux-3.13.0.orig/arch/parisc/Makefile +++ linux-3.13.0/arch/parisc/Makefile @@ -48,7 +48,12 @@ # These flags should be implied by an hppa-linux configuration, but they # are not in gcc 3.2. -cflags-y += -mno-space-regs -mfast-indirect-calls +cflags-y += -mno-space-regs + +# -mfast-indirect-calls is only relevant for 32-bit kernels. +ifndef CONFIG_64BIT +cflags-y += -mfast-indirect-calls +endif # Currently we save and restore fpregs on all kernel entry/interruption paths. # If that gets optimized, we might need to disable the use of fpregs in the --- linux-3.13.0.orig/arch/parisc/include/asm/cacheflush.h +++ linux-3.13.0/arch/parisc/include/asm/cacheflush.h @@ -132,7 +132,6 @@ static inline void *kmap(struct page *page) { might_sleep(); - flush_dcache_page(page); return page_address(page); } @@ -144,7 +143,6 @@ static inline void *kmap_atomic(struct page *page) { pagefault_disable(); - flush_dcache_page(page); return page_address(page); } --- linux-3.13.0.orig/arch/parisc/include/asm/ldcw.h +++ linux-3.13.0/arch/parisc/include/asm/ldcw.h @@ -33,11 +33,18 @@ #endif /*!CONFIG_PA20*/ -/* LDCW, the only atomic read-write operation PA-RISC has. *sigh*. */ +/* LDCW, the only atomic read-write operation PA-RISC has. *sigh*. + We don't explicitly expose that "*a" may be written as reload + fails to find a register in class R1_REGS when "a" needs to be + reloaded when generating 64-bit PIC code. Instead, we clobber + memory to indicate to the compiler that the assembly code reads + or writes to items other than those listed in the input and output + operands. This may pessimize the code somewhat but __ldcw is + usually used within code blocks surrounded by memory barriors. */ #define __ldcw(a) ({ \ unsigned __ret; \ - __asm__ __volatile__(__LDCW " 0(%2),%0" \ - : "=r" (__ret), "+m" (*(a)) : "r" (a)); \ + __asm__ __volatile__(__LDCW " 0(%1),%0" \ + : "=r" (__ret) : "r" (a) : "memory"); \ __ret; \ }) --- linux-3.13.0.orig/arch/parisc/include/asm/page.h +++ linux-3.13.0/arch/parisc/include/asm/page.h @@ -29,7 +29,8 @@ void clear_page_asm(void *page); void copy_page_asm(void *to, void *from); #define clear_user_page(vto, vaddr, page) clear_page_asm(vto) -#define copy_user_page(vto, vfrom, vaddr, page) copy_page_asm(vto, vfrom) +void copy_user_page(void *vto, void *vfrom, unsigned long vaddr, + struct page *pg); /* #define CONFIG_PARISC_TMPALIAS */ --- linux-3.13.0.orig/arch/parisc/include/asm/processor.h +++ linux-3.13.0/arch/parisc/include/asm/processor.h @@ -53,6 +53,8 @@ #define STACK_TOP TASK_SIZE #define STACK_TOP_MAX DEFAULT_TASK_SIZE +#define STACK_SIZE_MAX (1 << 30) /* 1 GB */ + #endif #ifndef __ASSEMBLY__ --- linux-3.13.0.orig/arch/parisc/include/uapi/asm/mman.h +++ linux-3.13.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-3.13.0.orig/arch/parisc/include/uapi/asm/shmbuf.h +++ linux-3.13.0/arch/parisc/include/uapi/asm/shmbuf.h @@ -36,23 +36,16 @@ unsigned int __unused2; }; -#ifdef CONFIG_64BIT -/* The 'unsigned int' (formerly 'unsigned long') data types below will - * ensure that a 32-bit app calling shmctl(*,IPC_INFO,*) will work on - * a wide kernel, but if some of these values are meant to contain pointers - * they may need to be 'long long' instead. -PB XXX FIXME - */ -#endif struct shminfo64 { - unsigned int shmmax; - unsigned int shmmin; - unsigned int shmmni; - unsigned int shmseg; - unsigned int shmall; - unsigned int __unused1; - unsigned int __unused2; - unsigned int __unused3; - unsigned int __unused4; + unsigned long shmmax; + unsigned long shmmin; + unsigned long shmmni; + unsigned long shmseg; + unsigned long shmall; + unsigned long __unused1; + unsigned long __unused2; + unsigned long __unused3; + unsigned long __unused4; }; #endif /* _PARISC_SHMBUF_H */ --- linux-3.13.0.orig/arch/parisc/include/uapi/asm/siginfo.h +++ linux-3.13.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-3.13.0.orig/arch/parisc/include/uapi/asm/signal.h +++ linux-3.13.0/arch/parisc/include/uapi/asm/signal.h @@ -69,8 +69,6 @@ #define SA_NOMASK SA_NODEFER #define SA_ONESHOT SA_RESETHAND -#define SA_RESTORER 0x04000000 /* obsolete -- ignored */ - #define MINSIGSTKSZ 2048 #define SIGSTKSZ 8192 --- linux-3.13.0.orig/arch/parisc/kernel/cache.c +++ linux-3.13.0/arch/parisc/kernel/cache.c @@ -388,6 +388,20 @@ } EXPORT_SYMBOL(flush_kernel_dcache_page_addr); +void copy_user_page(void *vto, void *vfrom, unsigned long vaddr, + struct page *pg) +{ + /* Copy using kernel mapping. No coherency is needed (all in + kunmap) for the `to' page. However, the `from' page needs to + be flushed through a mapping equivalent to the user mapping + before it can be accessed through the kernel mapping. */ + preempt_disable(); + flush_dcache_page_asm(__pa(vfrom), vaddr); + preempt_enable(); + copy_page_asm(vto, vfrom); +} +EXPORT_SYMBOL(copy_user_page); + void purge_tlb_entries(struct mm_struct *mm, unsigned long addr) { unsigned long flags; --- linux-3.13.0.orig/arch/parisc/kernel/hardware.c +++ linux-3.13.0/arch/parisc/kernel/hardware.c @@ -1210,7 +1210,8 @@ {HPHW_FIO, 0x004, 0x00320, 0x0, "Metheus Frame Buffer"}, {HPHW_FIO, 0x004, 0x00340, 0x0, "BARCO CX4500 VME Grphx Cnsl"}, {HPHW_FIO, 0x004, 0x00360, 0x0, "Hughes TOG VME FDDI"}, - {HPHW_FIO, 0x076, 0x000AD, 0x00, "Crestone Peak RS-232"}, + {HPHW_FIO, 0x076, 0x000AD, 0x0, "Crestone Peak Core RS-232"}, + {HPHW_FIO, 0x077, 0x000AD, 0x0, "Crestone Peak Fast? Core RS-232"}, {HPHW_IOA, 0x185, 0x0000B, 0x00, "Java BC Summit Port"}, {HPHW_IOA, 0x1FF, 0x0000B, 0x00, "Hitachi Ghostview Summit Port"}, {HPHW_IOA, 0x580, 0x0000B, 0x10, "U2-IOA BC Runway Port"}, --- linux-3.13.0.orig/arch/parisc/kernel/parisc_ksyms.c +++ linux-3.13.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-3.13.0.orig/arch/parisc/kernel/signal.c +++ linux-3.13.0/arch/parisc/kernel/signal.c @@ -442,6 +442,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) { @@ -464,10 +513,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; } } @@ -516,15 +562,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-3.13.0.orig/arch/parisc/kernel/sys_parisc32.c +++ linux-3.13.0/arch/parisc/kernel/sys_parisc32.c @@ -4,6 +4,7 @@ * Copyright (C) 2000-2001 Hewlett Packard Company * Copyright (C) 2000 John Marvin * Copyright (C) 2001 Matthew Wilcox + * Copyright (C) 2014 Helge Deller * * These routines maintain argument size conversion between 32bit and 64bit * environment. Based heavily on sys_ia32.c and sys_sparc32.c. @@ -11,44 +12,8 @@ #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 - -#undef DEBUG - -#ifdef DEBUG -#define DBG(x) printk x -#else -#define DBG(x) -#endif asmlinkage long sys32_unimplemented(int r26, int r25, int r24, int r23, int r22, int r21, int r20) @@ -57,3 +22,12 @@ current->comm, current->pid, r20); return -ENOSYS; } + +asmlinkage long sys32_fanotify_mark(compat_int_t fanotify_fd, compat_uint_t flags, + compat_uint_t mask0, compat_uint_t mask1, compat_int_t dfd, + const char __user * pathname) +{ + return sys_fanotify_mark(fanotify_fd, flags, + ((__u64)mask1 << 32) | mask0, + dfd, pathname); +} --- linux-3.13.0.orig/arch/parisc/kernel/syscall.S +++ linux-3.13.0/arch/parisc/kernel/syscall.S @@ -74,7 +74,7 @@ /* ADDRESS 0xb0 to 0xb8, lws uses two insns for entry */ /* Light-weight-syscall entry must always be located at 0xb0 */ /* WARNING: Keep this number updated with table size changes */ -#define __NR_lws_entries (2) +#define __NR_lws_entries (3) lws_entry: gate lws_start, %r0 /* increase privilege */ @@ -502,7 +502,7 @@ /*************************************************** - Implementing CAS as an atomic operation: + Implementing 32bit CAS as an atomic operation: %r26 - Address to examine %r25 - Old value to check (old) @@ -589,10 +589,13 @@ # endif /* ENABLE_LWS_DEBUG */ + rsm PSW_SM_I, %r0 /* Disable interrupts */ + /* COW breaks can cause contention on UP systems */ LDCW 0(%sr2,%r20), %r28 /* Try to acquire the lock */ cmpb,<>,n %r0, %r28, cas_action /* Did we get it? */ cas_wouldblock: ldo 2(%r0), %r28 /* 2nd case */ + ssm PSW_SM_I, %r0 b lws_exit /* Contended... */ ldo -EAGAIN(%r0), %r21 /* Spin in userspace */ @@ -619,15 +622,17 @@ stw %r1, 4(%sr2,%r20) #endif /* The load and store could fail */ -1: ldw 0(%sr3,%r26), %r28 +1: ldw,ma 0(%sr3,%r26), %r28 sub,<> %r28, %r25, %r0 -2: stw %r24, 0(%sr3,%r26) +2: stw,ma %r24, 0(%sr3,%r26) /* Free lock */ - stw %r20, 0(%sr2,%r20) + stw,ma %r20, 0(%sr2,%r20) #if ENABLE_LWS_DEBUG /* Clear thread register indicator */ stw %r0, 4(%sr2,%r20) #endif + /* Enable interrupts */ + ssm PSW_SM_I, %r0 /* Return to userspace, set no error */ b lws_exit copy %r0, %r21 @@ -639,6 +644,7 @@ #if ENABLE_LWS_DEBUG stw %r0, 4(%sr2,%r20) #endif + ssm PSW_SM_I, %r0 b lws_exit ldo -EFAULT(%r0),%r21 /* set errno */ nop @@ -653,6 +659,230 @@ ASM_EXCEPTIONTABLE_ENTRY(2b-linux_gateway_page, 3b-linux_gateway_page) + /*************************************************** + New CAS implementation which uses pointers and variable size + information. The value pointed by old and new MUST NOT change + while performing CAS. The lock only protect the value at %r26. + + %r26 - Address to examine + %r25 - Pointer to the value to check (old) + %r24 - Pointer to the value to set (new) + %r23 - Size of the variable (0/1/2/3 for 8/16/32/64 bit) + %r28 - Return non-zero on failure + %r21 - Kernel error code + + %r21 has the following meanings: + + EAGAIN - CAS is busy, ldcw failed, try again. + EFAULT - Read or write failed. + + Scratch: r20, r22, r28, r29, r1, fr4 (32bit for 64bit CAS only) + + ****************************************************/ + + /* ELF32 Process entry path */ +lws_compare_and_swap_2: +#ifdef CONFIG_64BIT + /* Clip the input registers */ + depdi 0, 31, 32, %r26 + depdi 0, 31, 32, %r25 + depdi 0, 31, 32, %r24 + depdi 0, 31, 32, %r23 +#endif + + /* Check the validity of the size pointer */ + subi,>>= 4, %r23, %r0 + b,n lws_exit_nosys + + /* Jump to the functions which will load the old and new values into + registers depending on the their size */ + shlw %r23, 2, %r29 + blr %r29, %r0 + nop + + /* 8bit load */ +4: ldb 0(%sr3,%r25), %r25 + b cas2_lock_start +5: ldb 0(%sr3,%r24), %r24 + nop + nop + nop + nop + nop + + /* 16bit load */ +6: ldh 0(%sr3,%r25), %r25 + b cas2_lock_start +7: ldh 0(%sr3,%r24), %r24 + nop + nop + nop + nop + nop + + /* 32bit load */ +8: ldw 0(%sr3,%r25), %r25 + b cas2_lock_start +9: ldw 0(%sr3,%r24), %r24 + nop + nop + nop + nop + nop + + /* 64bit load */ +#ifdef CONFIG_64BIT +10: ldd 0(%sr3,%r25), %r25 +11: ldd 0(%sr3,%r24), %r24 +#else + /* Load new value into r22/r23 - high/low */ +10: ldw 0(%sr3,%r25), %r22 +11: ldw 4(%sr3,%r25), %r23 + /* Load new value into fr4 for atomic store later */ +12: flddx 0(%sr3,%r24), %fr4 +#endif + +cas2_lock_start: + /* Load start of lock table */ + ldil L%lws_lock_start, %r20 + ldo R%lws_lock_start(%r20), %r28 + + /* Extract four bits from r26 and hash lock (Bits 4-7) */ + extru %r26, 27, 4, %r20 + + /* Find lock to use, the hash is either one of 0 to + 15, multiplied by 16 (keep it 16-byte aligned) + and add to the lock table offset. */ + shlw %r20, 4, %r20 + add %r20, %r28, %r20 + + rsm PSW_SM_I, %r0 /* Disable interrupts */ + /* COW breaks can cause contention on UP systems */ + LDCW 0(%sr2,%r20), %r28 /* Try to acquire the lock */ + cmpb,<>,n %r0, %r28, cas2_action /* Did we get it? */ +cas2_wouldblock: + ldo 2(%r0), %r28 /* 2nd case */ + ssm PSW_SM_I, %r0 + b lws_exit /* Contended... */ + ldo -EAGAIN(%r0), %r21 /* Spin in userspace */ + + /* + prev = *addr; + if ( prev == old ) + *addr = new; + return prev; + */ + + /* NOTES: + This all works becuse intr_do_signal + and schedule both check the return iasq + and see that we are on the kernel page + so this process is never scheduled off + or is ever sent any signal of any sort, + thus it is wholly atomic from usrspaces + perspective + */ +cas2_action: + /* Jump to the correct function */ + blr %r29, %r0 + /* Set %r28 as non-zero for now */ + ldo 1(%r0),%r28 + + /* 8bit CAS */ +13: ldb,ma 0(%sr3,%r26), %r29 + sub,= %r29, %r25, %r0 + b,n cas2_end +14: stb,ma %r24, 0(%sr3,%r26) + b cas2_end + copy %r0, %r28 + nop + nop + + /* 16bit CAS */ +15: ldh,ma 0(%sr3,%r26), %r29 + sub,= %r29, %r25, %r0 + b,n cas2_end +16: sth,ma %r24, 0(%sr3,%r26) + b cas2_end + copy %r0, %r28 + nop + nop + + /* 32bit CAS */ +17: ldw,ma 0(%sr3,%r26), %r29 + sub,= %r29, %r25, %r0 + b,n cas2_end +18: stw,ma %r24, 0(%sr3,%r26) + b cas2_end + copy %r0, %r28 + nop + nop + + /* 64bit CAS */ +#ifdef CONFIG_64BIT +19: ldd,ma 0(%sr3,%r26), %r29 + sub,*= %r29, %r25, %r0 + b,n cas2_end +20: std,ma %r24, 0(%sr3,%r26) + copy %r0, %r28 +#else + /* Compare first word */ +19: ldw,ma 0(%sr3,%r26), %r29 + sub,= %r29, %r22, %r0 + b,n cas2_end + /* Compare second word */ +20: ldw,ma 4(%sr3,%r26), %r29 + sub,= %r29, %r23, %r0 + b,n cas2_end + /* Perform the store */ +21: fstdx %fr4, 0(%sr3,%r26) + copy %r0, %r28 +#endif + +cas2_end: + /* Free lock */ + stw,ma %r20, 0(%sr2,%r20) + /* Enable interrupts */ + ssm PSW_SM_I, %r0 + /* Return to userspace, set no error */ + b lws_exit + copy %r0, %r21 + +22: + /* Error occurred on load or store */ + /* Free lock */ + stw %r20, 0(%sr2,%r20) + ssm PSW_SM_I, %r0 + ldo 1(%r0),%r28 + b lws_exit + ldo -EFAULT(%r0),%r21 /* set errno */ + nop + nop + nop + + /* Exception table entries, for the load and store, return EFAULT. + Each of the entries must be relocated. */ + ASM_EXCEPTIONTABLE_ENTRY(4b-linux_gateway_page, 22b-linux_gateway_page) + ASM_EXCEPTIONTABLE_ENTRY(5b-linux_gateway_page, 22b-linux_gateway_page) + ASM_EXCEPTIONTABLE_ENTRY(6b-linux_gateway_page, 22b-linux_gateway_page) + ASM_EXCEPTIONTABLE_ENTRY(7b-linux_gateway_page, 22b-linux_gateway_page) + ASM_EXCEPTIONTABLE_ENTRY(8b-linux_gateway_page, 22b-linux_gateway_page) + ASM_EXCEPTIONTABLE_ENTRY(9b-linux_gateway_page, 22b-linux_gateway_page) + ASM_EXCEPTIONTABLE_ENTRY(10b-linux_gateway_page, 22b-linux_gateway_page) + ASM_EXCEPTIONTABLE_ENTRY(11b-linux_gateway_page, 22b-linux_gateway_page) + ASM_EXCEPTIONTABLE_ENTRY(13b-linux_gateway_page, 22b-linux_gateway_page) + ASM_EXCEPTIONTABLE_ENTRY(14b-linux_gateway_page, 22b-linux_gateway_page) + ASM_EXCEPTIONTABLE_ENTRY(15b-linux_gateway_page, 22b-linux_gateway_page) + ASM_EXCEPTIONTABLE_ENTRY(16b-linux_gateway_page, 22b-linux_gateway_page) + ASM_EXCEPTIONTABLE_ENTRY(17b-linux_gateway_page, 22b-linux_gateway_page) + ASM_EXCEPTIONTABLE_ENTRY(18b-linux_gateway_page, 22b-linux_gateway_page) + ASM_EXCEPTIONTABLE_ENTRY(19b-linux_gateway_page, 22b-linux_gateway_page) + ASM_EXCEPTIONTABLE_ENTRY(20b-linux_gateway_page, 22b-linux_gateway_page) +#ifndef CONFIG_64BIT + ASM_EXCEPTIONTABLE_ENTRY(12b-linux_gateway_page, 22b-linux_gateway_page) + ASM_EXCEPTIONTABLE_ENTRY(21b-linux_gateway_page, 22b-linux_gateway_page) +#endif + /* Make sure nothing else is placed on this page */ .align PAGE_SIZE END(linux_gateway_page) @@ -669,8 +899,9 @@ /* Light-weight-syscall table */ /* Start of lws table. */ ENTRY(lws_table) - LWS_ENTRY(compare_and_swap32) /* 0 - ELF32 Atomic compare and swap */ - LWS_ENTRY(compare_and_swap64) /* 1 - ELF64 Atomic compare and swap */ + LWS_ENTRY(compare_and_swap32) /* 0 - ELF32 Atomic 32bit CAS */ + LWS_ENTRY(compare_and_swap64) /* 1 - ELF64 Atomic 32bit CAS */ + LWS_ENTRY(compare_and_swap_2) /* 2 - ELF32 Atomic 64bit CAS */ END(lws_table) /* End of lws table */ --- linux-3.13.0.orig/arch/parisc/kernel/syscall_table.S +++ linux-3.13.0/arch/parisc/kernel/syscall_table.S @@ -286,11 +286,11 @@ ENTRY_COMP(msgsnd) ENTRY_COMP(msgrcv) ENTRY_SAME(msgget) /* 190 */ - ENTRY_SAME(msgctl) - ENTRY_SAME(shmat) + ENTRY_COMP(msgctl) + ENTRY_COMP(shmat) ENTRY_SAME(shmdt) ENTRY_SAME(shmget) - ENTRY_SAME(shmctl) /* 195 */ + ENTRY_COMP(shmctl) /* 195 */ ENTRY_SAME(ni_syscall) /* streams1 */ ENTRY_SAME(ni_syscall) /* streams2 */ ENTRY_SAME(lstat64) @@ -323,7 +323,7 @@ ENTRY_SAME(epoll_ctl) /* 225 */ ENTRY_SAME(epoll_wait) ENTRY_SAME(remap_file_pages) - ENTRY_SAME(semtimedop) + ENTRY_COMP(semtimedop) ENTRY_COMP(mq_open) ENTRY_SAME(mq_unlink) /* 230 */ ENTRY_COMP(mq_timedsend) @@ -392,7 +392,7 @@ ENTRY_COMP(vmsplice) ENTRY_COMP(move_pages) /* 295 */ ENTRY_SAME(getcpu) - ENTRY_SAME(epoll_pwait) + ENTRY_COMP(epoll_pwait) ENTRY_COMP(statfs64) ENTRY_COMP(fstatfs64) ENTRY_COMP(kexec_load) /* 300 */ @@ -418,7 +418,7 @@ ENTRY_SAME(accept4) /* 320 */ ENTRY_SAME(prlimit64) ENTRY_SAME(fanotify_init) - ENTRY_COMP(fanotify_mark) + ENTRY_DIFF(fanotify_mark) ENTRY_COMP(clock_adjtime) ENTRY_SAME(name_to_handle_at) /* 325 */ ENTRY_COMP(open_by_handle_at) --- linux-3.13.0.orig/arch/parisc/kernel/traps.c +++ linux-3.13.0/arch/parisc/kernel/traps.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include @@ -42,9 +43,6 @@ #include "../math-emu/math-emu.h" /* for handle_fpe() */ -#define PRINT_USER_FAULTS /* (turn this on if you want user faults to be */ - /* dumped to the console via printk) */ - #if defined(CONFIG_SMP) || defined(CONFIG_DEBUG_SPINLOCK) DEFINE_SPINLOCK(pa_dbit_lock); #endif @@ -160,6 +158,17 @@ } } +static DEFINE_RATELIMIT_STATE(_hppa_rs, + DEFAULT_RATELIMIT_INTERVAL, DEFAULT_RATELIMIT_BURST); + +#define parisc_printk_ratelimited(critical, regs, fmt, ...) { \ + if ((critical || show_unhandled_signals) && __ratelimit(&_hppa_rs)) { \ + printk(fmt, ##__VA_ARGS__); \ + show_regs(regs); \ + } \ +} + + static void do_show_stack(struct unwind_frame_info *info) { int i = 1; @@ -229,12 +238,10 @@ if (err == 0) return; /* STFU */ - printk(KERN_CRIT "%s (pid %d): %s (code %ld) at " RFMT "\n", + parisc_printk_ratelimited(1, regs, + KERN_CRIT "%s (pid %d): %s (code %ld) at " RFMT "\n", current->comm, task_pid_nr(current), str, err, regs->iaoq[0]); -#ifdef PRINT_USER_FAULTS - /* XXX for debugging only */ - show_regs(regs); -#endif + return; } @@ -321,14 +328,11 @@ (tt == BUG_TRAP_TYPE_NONE) ? 9 : 0); } -#ifdef PRINT_USER_FAULTS - if (unlikely(iir != GDB_BREAK_INSN)) { - printk(KERN_DEBUG "break %d,%d: pid=%d command='%s'\n", + if (unlikely(iir != GDB_BREAK_INSN)) + parisc_printk_ratelimited(0, regs, + KERN_DEBUG "break %d,%d: pid=%d command='%s'\n", iir & 31, (iir>>13) & ((1<<13)-1), task_pid_nr(current), current->comm); - show_regs(regs); - } -#endif /* send standard GDB signal */ handle_gdb_break(regs, TRAP_BRKPT); @@ -758,11 +762,9 @@ default: if (user_mode(regs)) { -#ifdef PRINT_USER_FAULTS - printk(KERN_DEBUG "\nhandle_interruption() pid=%d command='%s'\n", - task_pid_nr(current), current->comm); - show_regs(regs); -#endif + parisc_printk_ratelimited(0, regs, KERN_DEBUG + "handle_interruption() pid=%d command='%s'\n", + task_pid_nr(current), current->comm); /* SIGBUS, for lack of a better one. */ si.si_signo = SIGBUS; si.si_code = BUS_OBJERR; @@ -779,16 +781,10 @@ if (user_mode(regs)) { if ((fault_space >> SPACEID_SHIFT) != (regs->sr[7] >> SPACEID_SHIFT)) { -#ifdef PRINT_USER_FAULTS - if (fault_space == 0) - printk(KERN_DEBUG "User Fault on Kernel Space "); - else - printk(KERN_DEBUG "User Fault (long pointer) (fault %d) ", - code); - printk(KERN_CONT "pid=%d command='%s'\n", - task_pid_nr(current), current->comm); - show_regs(regs); -#endif + parisc_printk_ratelimited(0, regs, KERN_DEBUG + "User fault %d on space 0x%08lx, pid=%d command='%s'\n", + code, fault_space, + task_pid_nr(current), current->comm); si.si_signo = SIGSEGV; si.si_errno = 0; si.si_code = SEGV_MAPERR; --- linux-3.13.0.orig/arch/parisc/mm/fault.c +++ linux-3.13.0/arch/parisc/mm/fault.c @@ -19,10 +19,6 @@ #include #include -#define PRINT_USER_FAULTS /* (turn this on if you want user faults to be */ - /* dumped to the console via printk) */ - - /* Various important other fields */ #define bit22set(x) (x & 0x00000200) #define bits23_25set(x) (x & 0x000001c0) @@ -34,6 +30,8 @@ DEFINE_PER_CPU(struct exception_data, exception_data); +int show_unhandled_signals = 1; + /* * parisc_acctyp(unsigned int inst) -- * Given a PA-RISC memory access instruction, determine if the @@ -173,6 +171,32 @@ return 0; } +/* + * Print out info about fatal segfaults, if the show_unhandled_signals + * sysctl is set: + */ +static inline void +show_signal_msg(struct pt_regs *regs, unsigned long code, + unsigned long address, struct task_struct *tsk, + struct vm_area_struct *vma) +{ + if (!unhandled_signal(tsk, SIGSEGV)) + return; + + if (!printk_ratelimit()) + return; + + pr_warn("\n"); + pr_warn("do_page_fault() command='%s' type=%lu address=0x%08lx", + tsk->comm, code, address); + print_vma_addr(KERN_CONT " in ", regs->iaoq[0]); + if (vma) + pr_warn(" vm_start = 0x%08lx, vm_end = 0x%08lx\n", + vma->vm_start, vma->vm_end); + + show_regs(regs); +} + void do_page_fault(struct pt_regs *regs, unsigned long code, unsigned long address) { @@ -232,6 +256,8 @@ */ if (fault & VM_FAULT_OOM) goto out_of_memory; + else if (fault & VM_FAULT_SIGSEGV) + goto bad_area; else if (fault & VM_FAULT_SIGBUS) goto bad_area; BUG(); @@ -270,16 +296,8 @@ if (user_mode(regs)) { struct siginfo si; -#ifdef PRINT_USER_FAULTS - printk(KERN_DEBUG "\n"); - printk(KERN_DEBUG "do_page_fault() pid=%d command='%s' type=%lu address=0x%08lx\n", - task_pid_nr(tsk), tsk->comm, code, address); - if (vma) { - printk(KERN_DEBUG "vm_start = 0x%08lx, vm_end = 0x%08lx\n", - vma->vm_start, vma->vm_end); - } - show_regs(regs); -#endif + show_signal_msg(regs, code, address, tsk, vma); + switch (code) { case 15: /* Data TLB miss fault/Data page fault */ /* send SIGSEGV when outside of vma */ --- linux-3.13.0.orig/arch/powerpc/Kconfig +++ linux-3.13.0/arch/powerpc/Kconfig @@ -139,6 +139,7 @@ select OLD_SIGACTION if PPC32 select HAVE_DEBUG_STACKOVERFLOW select HAVE_IRQ_EXIT_ON_IRQ_STACK + select ARCH_SUPPORTS_ATOMIC_RMW config GENERIC_CSUM def_bool CPU_LITTLE_ENDIAN @@ -381,7 +382,7 @@ config KEXEC bool "kexec system call" - depends on (PPC_BOOK3S || FSL_BOOKE || (44x && !SMP)) + depends on (PPC_BOOK3S || FSL_BOOKE || (44x && !SMP)) || PPC_BOOK3E help kexec is a system call that implements the ability to shutdown your current kernel, and to start another kernel. It is like a reboot @@ -439,6 +440,14 @@ default "4" depends on NEED_MULTIPLE_NODES +config USE_PERCPU_NUMA_NODE_ID + def_bool y + depends on NUMA + +config HAVE_MEMORYLESS_NODES + def_bool y + depends on NUMA + config ARCH_SELECT_MEMORY_MODEL def_bool y depends on PPC64 @@ -735,6 +744,16 @@ help Freescale General-purpose Timers support +config HAS_FSL_QBMAN + bool "Datapath Acceleration Queue and Buffer management" + help + Datapath Acceleration Queue and Buffer management + +config HAS_FSL_PME + bool + depends on HAS_FSL_QBMAN + default n + # Yes MCA RS/6000s exist but Linux-PPC does not currently support any config MCA bool @@ -1020,6 +1039,8 @@ source "drivers/Kconfig" +source "ubuntu/Kconfig" + source "fs/Kconfig" source "arch/powerpc/sysdev/qe_lib/Kconfig" --- linux-3.13.0.orig/arch/powerpc/Makefile +++ linux-3.13.0/arch/powerpc/Makefile @@ -149,7 +149,9 @@ CFLAGS-$(CONFIG_TUNE_CELL) += $(call cc-option,-mtune=cell) -KBUILD_CPPFLAGS += -Iarch/$(ARCH) +asinstr := $(call as-instr,lis 9$(comma)foo@high,-DHAVE_AS_ATHIGH=1) + +KBUILD_CPPFLAGS += -Iarch/$(ARCH) $(asinstr) KBUILD_AFLAGS += -Iarch/$(ARCH) KBUILD_CFLAGS += -msoft-float -pipe -Iarch/$(ARCH) $(CFLAGS-y) CPP = $(CC) -E $(KBUILD_CFLAGS) @@ -225,7 +227,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-3.13.0.orig/arch/powerpc/configs/pseries_defconfig +++ linux-3.13.0/arch/powerpc/configs/pseries_defconfig @@ -353,3 +353,4 @@ CONFIG_VIRTUALIZATION=y CONFIG_KVM_BOOK3S_64=m CONFIG_KVM_BOOK3S_64_HV=y +CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y --- linux-3.13.0.orig/arch/powerpc/configs/pseries_le_defconfig +++ linux-3.13.0/arch/powerpc/configs/pseries_le_defconfig @@ -350,3 +350,4 @@ # CONFIG_CRYPTO_ANSI_CPRNG is not set CONFIG_CRYPTO_DEV_NX=y CONFIG_CRYPTO_DEV_NX_ENCRYPT=m +CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y --- linux-3.13.0.orig/arch/powerpc/crypto/sha1.c +++ linux-3.13.0/arch/powerpc/crypto/sha1.c @@ -154,4 +154,5 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("SHA1 Secure Hash Algorithm"); -MODULE_ALIAS("sha1-powerpc"); +MODULE_ALIAS_CRYPTO("sha1"); +MODULE_ALIAS_CRYPTO("sha1-powerpc"); --- linux-3.13.0.orig/arch/powerpc/include/asm/bitops.h +++ linux-3.13.0/arch/powerpc/include/asm/bitops.h @@ -46,6 +46,11 @@ #include #include +/* PPC bit number conversion */ +#define PPC_BITLSHIFT(be) (BITS_PER_LONG - 1 - (be)) +#define PPC_BIT(bit) (1UL << PPC_BITLSHIFT(bit)) +#define PPC_BITMASK(bs, be) ((PPC_BIT(bs) - PPC_BIT(be)) | PPC_BIT(bs)) + /* * clear_bit doesn't imply a memory barrier */ --- linux-3.13.0.orig/arch/powerpc/include/asm/cmpxchg.h +++ linux-3.13.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"); @@ -152,14 +152,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) @@ -198,13 +198,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-3.13.0.orig/arch/powerpc/include/asm/compat.h +++ linux-3.13.0/arch/powerpc/include/asm/compat.h @@ -8,7 +8,11 @@ #include #define COMPAT_USER_HZ 100 +#ifdef __BIG_ENDIAN__ #define COMPAT_UTS_MACHINE "ppc\0\0" +#else +#define COMPAT_UTS_MACHINE "ppcle\0\0" +#endif typedef u32 compat_size_t; typedef s32 compat_ssize_t; @@ -200,10 +204,11 @@ /* * We can't access below the stack pointer in the 32bit ABI and - * can access 288 bytes in the 64bit ABI + * can access 288 bytes in the 64bit big-endian ABI, + * or 512 bytes with the new ELFv2 little-endian ABI. */ if (!is_32bit_task()) - usp -= 288; + usp -= USER_REDZONE_SIZE; return (void __user *) (usp - len); } --- linux-3.13.0.orig/arch/powerpc/include/asm/cputable.h +++ linux-3.13.0/arch/powerpc/include/asm/cputable.h @@ -90,6 +90,18 @@ * if the error is fatal, 1 if it was fully recovered and 0 to * pass up (not CPU originated) */ int (*machine_check)(struct pt_regs *regs); + + /* + * Processor specific early machine check handler which is + * called in real mode to handle SLB and TLB errors. + */ + long (*machine_check_early)(struct pt_regs *regs); + + /* + * Processor specific routine to flush tlbs. + */ + void (*flush_tlb)(unsigned long inval_selector); + }; extern struct cpu_spec *cur_cpu_spec; @@ -177,6 +189,7 @@ #define CPU_FTR_HAS_PPR LONG_ASM_CONST(0x0200000000000000) #define CPU_FTR_DAWR LONG_ASM_CONST(0x0400000000000000) #define CPU_FTR_DABRX LONG_ASM_CONST(0x0800000000000000) +#define CPU_FTR_PMAO_BUG LONG_ASM_CONST(0x1000000000000000) #ifndef __ASSEMBLY__ @@ -224,11 +237,13 @@ /* We only set the TM feature if the kernel was compiled with TM supprt */ #ifdef CONFIG_PPC_TRANSACTIONAL_MEM -#define CPU_FTR_TM_COMP CPU_FTR_TM -#define PPC_FEATURE2_HTM_COMP PPC_FEATURE2_HTM +#define CPU_FTR_TM_COMP CPU_FTR_TM +#define PPC_FEATURE2_HTM_COMP PPC_FEATURE2_HTM +#define PPC_FEATURE2_HTM_NOSC_COMP PPC_FEATURE2_HTM_NOSC #else -#define CPU_FTR_TM_COMP 0 -#define PPC_FEATURE2_HTM_COMP 0 +#define CPU_FTR_TM_COMP 0 +#define PPC_FEATURE2_HTM_COMP 0 +#define PPC_FEATURE2_HTM_NOSC_COMP 0 #endif /* We need to mark all pages as being coherent if we're SMP or we have a @@ -433,6 +448,7 @@ CPU_FTR_ICSWX | CPU_FTR_CFAR | CPU_FTR_HVMODE | CPU_FTR_VMX_COPY | \ CPU_FTR_DBELL | CPU_FTR_HAS_PPR | CPU_FTR_DAWR | \ CPU_FTR_ARCH_207S | CPU_FTR_TM_COMP) +#define CPU_FTRS_POWER8E (CPU_FTRS_POWER8 | CPU_FTR_PMAO_BUG) #define CPU_FTRS_CELL (CPU_FTR_USE_TB | CPU_FTR_LWSYNC | \ CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_CTRL | \ CPU_FTR_ALTIVEC_COMP | CPU_FTR_MMCRA | CPU_FTR_SMT | \ @@ -454,8 +470,8 @@ #define CPU_FTRS_POSSIBLE \ (CPU_FTRS_POWER3 | CPU_FTRS_RS64 | CPU_FTRS_POWER4 | \ CPU_FTRS_PPC970 | CPU_FTRS_POWER5 | CPU_FTRS_POWER6 | \ - CPU_FTRS_POWER7 | CPU_FTRS_POWER8 | CPU_FTRS_CELL | \ - CPU_FTRS_PA6T | CPU_FTR_VSX) + CPU_FTRS_POWER7 | CPU_FTRS_POWER8E | CPU_FTRS_POWER8 | \ + CPU_FTRS_CELL | CPU_FTRS_PA6T | CPU_FTR_VSX) #endif #else enum { --- linux-3.13.0.orig/arch/powerpc/include/asm/dma-mapping.h +++ linux-3.13.0/arch/powerpc/include/asm/dma-mapping.h @@ -134,6 +134,7 @@ } extern int dma_set_mask(struct device *dev, u64 dma_mask); +extern int __dma_set_mask(struct device *dev, u64 dma_mask); #define dma_alloc_coherent(d,s,h,f) dma_alloc_attrs(d,s,h,f,NULL) --- linux-3.13.0.orig/arch/powerpc/include/asm/eeh.h +++ linux-3.13.0/arch/powerpc/include/asm/eeh.h @@ -117,6 +117,16 @@ return edev ? edev->pdev : NULL; } +/* Return values from eeh_ops::next_error */ +enum { + EEH_NEXT_ERR_NONE = 0, + EEH_NEXT_ERR_INF, + EEH_NEXT_ERR_FROZEN_PE, + EEH_NEXT_ERR_FENCED_PHB, + EEH_NEXT_ERR_DEAD_PHB, + EEH_NEXT_ERR_DEAD_IOC +}; + /* * The struct is used to trace the registered EEH operation * callback functions. Actually, those operation callback --- linux-3.13.0.orig/arch/powerpc/include/asm/exception-64e.h +++ linux-3.13.0/arch/powerpc/include/asm/exception-64e.h @@ -214,10 +214,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-3.13.0.orig/arch/powerpc/include/asm/exception-64s.h +++ linux-3.13.0/arch/powerpc/include/asm/exception-64s.h @@ -147,6 +147,14 @@ END_FTR_SECTION_NESTED(ftr,ftr,943) /* + * Set an SPR from a register if the CPU has the given feature + */ +#define OPT_SET_SPR(ra, spr, ftr) \ +BEGIN_FTR_SECTION_NESTED(943) \ + mtspr spr,ra; \ +END_FTR_SECTION_NESTED(ftr,ftr,943) + +/* * Save a register to the PACA if the CPU has the given feature */ #define OPT_SAVE_REG_TO_PACA(offset, ra, ftr) \ @@ -301,9 +309,12 @@ beq 4f; /* if from kernel mode */ \ ACCOUNT_CPU_USER_ENTRY(r9, r10); \ SAVE_PPR(area, r9, r10); \ -4: std r2,GPR2(r1); /* save r2 in stackframe */ \ - SAVE_4GPRS(3, r1); /* save r3 - r6 in stackframe */ \ - SAVE_2GPRS(7, r1); /* save r7, r8 in stackframe */ \ +4: EXCEPTION_PROLOG_COMMON_2(area) \ + EXCEPTION_PROLOG_COMMON_3(n) \ + ACCOUNT_STOLEN_TIME + +/* Save original regs values from save area to stack frame. */ +#define EXCEPTION_PROLOG_COMMON_2(area) \ ld r9,area+EX_R9(r13); /* move r9, r10 to stackframe */ \ ld r10,area+EX_R10(r13); \ std r9,GPR9(r1); \ @@ -318,11 +329,16 @@ ld r10,area+EX_CFAR(r13); \ std r10,ORIG_GPR3(r1); \ END_FTR_SECTION_NESTED(CPU_FTR_CFAR, CPU_FTR_CFAR, 66); \ + GET_CTR(r10, area); \ + std r10,_CTR(r1); + +#define EXCEPTION_PROLOG_COMMON_3(n) \ + std r2,GPR2(r1); /* save r2 in stackframe */ \ + SAVE_4GPRS(3, r1); /* save r3 - r6 in stackframe */ \ + SAVE_2GPRS(7, r1); /* save r7, r8 in stackframe */ \ mflr r9; /* Get LR, later save to stack */ \ ld r2,PACATOC(r13); /* get kernel TOC into r2 */ \ std r9,_LINK(r1); \ - GET_CTR(r10, area); \ - std r10,_CTR(r1); \ lbz r10,PACASOFTIRQEN(r13); \ mfspr r11,SPRN_XER; /* save XER in stackframe */ \ std r10,SOFTE(r1); \ @@ -332,8 +348,7 @@ li r10,0; \ ld r11,exception_marker@toc(r2); \ std r10,RESULT(r1); /* clear regs->result */ \ - std r11,STACK_FRAME_OVERHEAD-16(r1); /* mark the frame */ \ - ACCOUNT_STOLEN_TIME + std r11,STACK_FRAME_OVERHEAD-16(r1); /* mark the frame */ /* * Exception vectors. --- linux-3.13.0.orig/arch/powerpc/include/asm/hugetlb.h +++ linux-3.13.0/arch/powerpc/include/asm/hugetlb.h @@ -127,7 +127,7 @@ unsigned long addr, pte_t *ptep) { #ifdef CONFIG_PPC64 - return __pte(pte_update(mm, addr, ptep, ~0UL, 1)); + return __pte(pte_update(mm, addr, ptep, ~0UL, 0, 1)); #else return __pte(pte_update(ptep, ~0UL, 0)); #endif --- linux-3.13.0.orig/arch/powerpc/include/asm/hvcall.h +++ linux-3.13.0/arch/powerpc/include/asm/hvcall.h @@ -274,6 +274,12 @@ /* Platform specific hcalls, used by KVM */ #define H_RTAS 0xf000 +/* Values for 2nd argument to H_SET_MODE */ +#define H_SET_MODE_RESOURCE_SET_CIABR 1 +#define H_SET_MODE_RESOURCE_SET_DAWR 2 +#define H_SET_MODE_RESOURCE_ADDR_TRANS_MODE 3 +#define H_SET_MODE_RESOURCE_LE 4 + #ifndef __ASSEMBLY__ /** --- linux-3.13.0.orig/arch/powerpc/include/asm/iommu.h +++ linux-3.13.0/arch/powerpc/include/asm/iommu.h @@ -79,6 +79,7 @@ #ifdef CONFIG_IOMMU_API struct iommu_group *it_group; #endif + void (*set_bypass)(struct iommu_table *tbl, bool enable); }; struct scatterlist; --- linux-3.13.0.orig/arch/powerpc/include/asm/kvm_book3s.h +++ linux-3.13.0/arch/powerpc/include/asm/kvm_book3s.h @@ -271,6 +271,29 @@ return vcpu->arch.pc; } +static inline bool kvmppc_need_byteswap(struct kvm_vcpu *vcpu) +{ + return vcpu->arch.shared->msr & MSR_LE; +} + +static inline bool kvmppc_is_bigendian(struct kvm_vcpu *vcpu) +{ + return !kvmppc_need_byteswap(vcpu); +} + +static inline int kvmppc_ld32(struct kvm_vcpu *vcpu, ulong *eaddr, + u32 *ptr, bool data) +{ + int ret; + + ret = kvmppc_ld(vcpu, eaddr, sizeof(u32), ptr, data); + + if (kvmppc_need_byteswap(vcpu)) + *ptr = swab32(*ptr); + + return ret; +} + static inline u32 kvmppc_get_last_inst(struct kvm_vcpu *vcpu) { ulong pc = kvmppc_get_pc(vcpu); @@ -278,7 +301,7 @@ /* Load the instruction manually if it failed to do so in the * exit path */ if (vcpu->arch.last_inst == KVM_INST_FETCH_FAILED) - kvmppc_ld(vcpu, &pc, sizeof(u32), &vcpu->arch.last_inst, false); + kvmppc_ld32(vcpu, &pc, &vcpu->arch.last_inst, false); return vcpu->arch.last_inst; } @@ -295,7 +318,7 @@ /* Load the instruction manually if it failed to do so in the * exit path */ if (vcpu->arch.last_inst == KVM_INST_FETCH_FAILED) - kvmppc_ld(vcpu, &pc, sizeof(u32), &vcpu->arch.last_inst, false); + kvmppc_ld32(vcpu, &pc, &vcpu->arch.last_inst, false); return vcpu->arch.last_inst; } --- linux-3.13.0.orig/arch/powerpc/include/asm/kvm_booke.h +++ linux-3.13.0/arch/powerpc/include/asm/kvm_booke.h @@ -98,6 +98,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-3.13.0.orig/arch/powerpc/include/asm/kvm_host.h +++ linux-3.13.0/arch/powerpc/include/asm/kvm_host.h @@ -616,6 +616,7 @@ spinlock_t tbacct_lock; u64 busy_stolen; u64 busy_preempt; + unsigned long intr_msr; #endif }; --- linux-3.13.0.orig/arch/powerpc/include/asm/kvm_ppc.h +++ linux-3.13.0/arch/powerpc/include/asm/kvm_ppc.h @@ -53,13 +53,13 @@ extern void kvmppc_dump_vcpu(struct kvm_vcpu *vcpu); extern int kvmppc_handle_load(struct kvm_run *run, struct kvm_vcpu *vcpu, - unsigned int rt, unsigned int bytes, - int is_bigendian); + unsigned int rt, unsigned int bytes, + int not_reverse); extern int kvmppc_handle_loads(struct kvm_run *run, struct kvm_vcpu *vcpu, - unsigned int rt, unsigned int bytes, - int is_bigendian); + unsigned int rt, unsigned int bytes, + int not_reverse); extern int kvmppc_handle_store(struct kvm_run *run, struct kvm_vcpu *vcpu, - u64 val, unsigned int bytes, int is_bigendian); + u64 val, unsigned int bytes, int not_reverse); extern int kvmppc_emulate_instruction(struct kvm_run *run, struct kvm_vcpu *vcpu); --- linux-3.13.0.orig/arch/powerpc/include/asm/machdep.h +++ linux-3.13.0/arch/powerpc/include/asm/machdep.h @@ -57,10 +57,10 @@ void (*hpte_removebolted)(unsigned long ea, int psize, int ssize); void (*flush_hash_range)(unsigned long number, int local); - void (*hugepage_invalidate)(struct mm_struct *mm, + void (*hugepage_invalidate)(unsigned long vsid, + unsigned long addr, unsigned char *hpte_slot_array, - unsigned long addr, int psize); - + int psize, int ssize); /* special for kexec, to be called in real mode, linear mapping is * destroyed as well */ void (*hpte_clear_all)(void); @@ -170,6 +170,9 @@ int (*system_reset_exception)(struct pt_regs *regs); int (*machine_check_exception)(struct pt_regs *regs); + /* Called during machine check exception to retrive fixup address. */ + bool (*mce_check_early_recovery)(struct pt_regs *regs); + /* Motherboard/chipset features. This is a kind of general purpose * hook used to control some machine specific features (like reset * lines, chip power control, etc...). --- linux-3.13.0.orig/arch/powerpc/include/asm/mce.h +++ linux-3.13.0/arch/powerpc/include/asm/mce.h @@ -0,0 +1,198 @@ +/* + * Machine check exception header file. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * Copyright 2013 IBM Corporation + * Author: Mahesh Salgaonkar + */ + +#ifndef __ASM_PPC64_MCE_H__ +#define __ASM_PPC64_MCE_H__ + +#include + +/* + * Machine Check bits on power7 and power8 + */ +#define P7_SRR1_MC_LOADSTORE(srr1) ((srr1) & PPC_BIT(42)) /* P8 too */ + +/* SRR1 bits for machine check (On Power7 and Power8) */ +#define P7_SRR1_MC_IFETCH(srr1) ((srr1) & PPC_BITMASK(43, 45)) /* P8 too */ + +#define P7_SRR1_MC_IFETCH_UE (0x1 << PPC_BITLSHIFT(45)) /* P8 too */ +#define P7_SRR1_MC_IFETCH_SLB_PARITY (0x2 << PPC_BITLSHIFT(45)) /* P8 too */ +#define P7_SRR1_MC_IFETCH_SLB_MULTIHIT (0x3 << PPC_BITLSHIFT(45)) /* P8 too */ +#define P7_SRR1_MC_IFETCH_SLB_BOTH (0x4 << PPC_BITLSHIFT(45)) +#define P7_SRR1_MC_IFETCH_TLB_MULTIHIT (0x5 << PPC_BITLSHIFT(45)) /* P8 too */ +#define P7_SRR1_MC_IFETCH_UE_TLB_RELOAD (0x6 << PPC_BITLSHIFT(45)) /* P8 too */ +#define P7_SRR1_MC_IFETCH_UE_IFU_INTERNAL (0x7 << PPC_BITLSHIFT(45)) + +/* SRR1 bits for machine check (On Power8) */ +#define P8_SRR1_MC_IFETCH_ERAT_MULTIHIT (0x4 << PPC_BITLSHIFT(45)) + +/* DSISR bits for machine check (On Power7 and Power8) */ +#define P7_DSISR_MC_UE (PPC_BIT(48)) /* P8 too */ +#define P7_DSISR_MC_UE_TABLEWALK (PPC_BIT(49)) /* P8 too */ +#define P7_DSISR_MC_ERAT_MULTIHIT (PPC_BIT(52)) /* P8 too */ +#define P7_DSISR_MC_TLB_MULTIHIT_MFTLB (PPC_BIT(53)) /* P8 too */ +#define P7_DSISR_MC_SLB_PARITY_MFSLB (PPC_BIT(55)) /* P8 too */ +#define P7_DSISR_MC_SLB_MULTIHIT (PPC_BIT(56)) /* P8 too */ +#define P7_DSISR_MC_SLB_MULTIHIT_PARITY (PPC_BIT(57)) /* P8 too */ + +/* + * DSISR bits for machine check (Power8) in addition to above. + * Secondary DERAT Multihit + */ +#define P8_DSISR_MC_ERAT_MULTIHIT_SEC (PPC_BIT(54)) + +/* SLB error bits */ +#define P7_DSISR_MC_SLB_ERRORS (P7_DSISR_MC_ERAT_MULTIHIT | \ + P7_DSISR_MC_SLB_PARITY_MFSLB | \ + P7_DSISR_MC_SLB_MULTIHIT | \ + P7_DSISR_MC_SLB_MULTIHIT_PARITY) + +#define P8_DSISR_MC_SLB_ERRORS (P7_DSISR_MC_SLB_ERRORS | \ + P8_DSISR_MC_ERAT_MULTIHIT_SEC) +enum MCE_Version { + MCE_V1 = 1, +}; + +enum MCE_Severity { + MCE_SEV_NO_ERROR = 0, + MCE_SEV_WARNING = 1, + MCE_SEV_ERROR_SYNC = 2, + MCE_SEV_FATAL = 3, +}; + +enum MCE_Disposition { + MCE_DISPOSITION_RECOVERED = 0, + MCE_DISPOSITION_NOT_RECOVERED = 1, +}; + +enum MCE_Initiator { + MCE_INITIATOR_UNKNOWN = 0, + MCE_INITIATOR_CPU = 1, +}; + +enum MCE_ErrorType { + MCE_ERROR_TYPE_UNKNOWN = 0, + MCE_ERROR_TYPE_UE = 1, + MCE_ERROR_TYPE_SLB = 2, + MCE_ERROR_TYPE_ERAT = 3, + MCE_ERROR_TYPE_TLB = 4, +}; + +enum MCE_UeErrorType { + MCE_UE_ERROR_INDETERMINATE = 0, + MCE_UE_ERROR_IFETCH = 1, + MCE_UE_ERROR_PAGE_TABLE_WALK_IFETCH = 2, + MCE_UE_ERROR_LOAD_STORE = 3, + MCE_UE_ERROR_PAGE_TABLE_WALK_LOAD_STORE = 4, +}; + +enum MCE_SlbErrorType { + MCE_SLB_ERROR_INDETERMINATE = 0, + MCE_SLB_ERROR_PARITY = 1, + MCE_SLB_ERROR_MULTIHIT = 2, +}; + +enum MCE_EratErrorType { + MCE_ERAT_ERROR_INDETERMINATE = 0, + MCE_ERAT_ERROR_PARITY = 1, + MCE_ERAT_ERROR_MULTIHIT = 2, +}; + +enum MCE_TlbErrorType { + MCE_TLB_ERROR_INDETERMINATE = 0, + MCE_TLB_ERROR_PARITY = 1, + MCE_TLB_ERROR_MULTIHIT = 2, +}; + +struct machine_check_event { + enum MCE_Version version:8; /* 0x00 */ + uint8_t in_use; /* 0x01 */ + enum MCE_Severity severity:8; /* 0x02 */ + enum MCE_Initiator initiator:8; /* 0x03 */ + enum MCE_ErrorType error_type:8; /* 0x04 */ + enum MCE_Disposition disposition:8; /* 0x05 */ + uint8_t reserved_1[2]; /* 0x06 */ + uint64_t gpr3; /* 0x08 */ + uint64_t srr0; /* 0x10 */ + uint64_t srr1; /* 0x18 */ + union { /* 0x20 */ + struct { + enum MCE_UeErrorType ue_error_type:8; + uint8_t effective_address_provided; + uint8_t physical_address_provided; + uint8_t reserved_1[5]; + uint64_t effective_address; + uint64_t physical_address; + uint8_t reserved_2[8]; + } ue_error; + + struct { + enum MCE_SlbErrorType slb_error_type:8; + uint8_t effective_address_provided; + uint8_t reserved_1[6]; + uint64_t effective_address; + uint8_t reserved_2[16]; + } slb_error; + + struct { + enum MCE_EratErrorType erat_error_type:8; + uint8_t effective_address_provided; + uint8_t reserved_1[6]; + uint64_t effective_address; + uint8_t reserved_2[16]; + } erat_error; + + struct { + enum MCE_TlbErrorType tlb_error_type:8; + uint8_t effective_address_provided; + uint8_t reserved_1[6]; + uint64_t effective_address; + uint8_t reserved_2[16]; + } tlb_error; + } u; +}; + +struct mce_error_info { + enum MCE_ErrorType error_type:8; + union { + enum MCE_UeErrorType ue_error_type:8; + enum MCE_SlbErrorType slb_error_type:8; + enum MCE_EratErrorType erat_error_type:8; + enum MCE_TlbErrorType tlb_error_type:8; + } u; + uint8_t reserved[2]; +}; + +#define MAX_MC_EVT 100 + +/* Release flags for get_mce_event() */ +#define MCE_EVENT_RELEASE true +#define MCE_EVENT_DONTRELEASE false + +extern void save_mce_event(struct pt_regs *regs, long handled, + struct mce_error_info *mce_err, uint64_t nip, + uint64_t addr); +extern int get_mce_event(struct machine_check_event *mce, bool release); +extern void release_mce_event(void); +extern void machine_check_queue_event(void); +extern void machine_check_print_event_info(struct machine_check_event *evt); +extern uint64_t get_mce_fault_addr(struct machine_check_event *evt); + +#endif /* __ASM_PPC64_MCE_H__ */ --- linux-3.13.0.orig/arch/powerpc/include/asm/mmu-hash64.h +++ linux-3.13.0/arch/powerpc/include/asm/mmu-hash64.h @@ -22,6 +22,7 @@ */ #include #include +#include /* * Segment table @@ -496,7 +497,7 @@ */ struct subpage_prot_table { unsigned long maxaddr; /* only addresses < this are protected */ - unsigned int **protptrs[2]; + unsigned int **protptrs[(TASK_SIZE_USER64 >> 43)]; unsigned int *low_prot[4]; }; --- linux-3.13.0.orig/arch/powerpc/include/asm/opal.h +++ linux-3.13.0/arch/powerpc/include/asm/opal.h @@ -33,6 +33,28 @@ u64 rd_loc; /* r11 */ }; +/* + * SG entry + * + * WARNING: The current implementation requires each entry + * to represent a block that is 4k aligned *and* each block + * size except the last one in the list to be as well. + */ +struct opal_sg_entry { + __be64 data; + __be64 length; +}; + +/* SG list */ +struct opal_sg_list { + __be64 length; + __be64 next; + struct opal_sg_entry entry[]; +}; + +/* We calculate number of sg entries based on PAGE_SIZE */ +#define SG_ENTRIES_PER_NODE ((PAGE_SIZE - 16) / sizeof(struct opal_sg_entry)) + extern long opal_query_takeover(u64 *hal_size, u64 *hal_align); extern long opal_do_takeover(struct opal_takeover_args *args); @@ -61,6 +83,8 @@ #define OPAL_INTERNAL_ERROR -11 #define OPAL_BUSY_EVENT -12 #define OPAL_HARDWARE_FROZEN -13 +#define OPAL_WRONG_STATE -14 +#define OPAL_ASYNC_COMPLETION -15 /* API Tokens (in r0) */ #define OPAL_CONSOLE_WRITE 1 @@ -129,9 +153,28 @@ #define OPAL_LPC_READ 67 #define OPAL_LPC_WRITE 68 #define OPAL_RETURN_CPU 69 +#define OPAL_REINIT_CPUS 70 +#define OPAL_ELOG_READ 71 +#define OPAL_ELOG_WRITE 72 +#define OPAL_ELOG_ACK 73 +#define OPAL_ELOG_RESEND 74 +#define OPAL_ELOG_SIZE 75 #define OPAL_FLASH_VALIDATE 76 #define OPAL_FLASH_MANAGE 77 #define OPAL_FLASH_UPDATE 78 +#define OPAL_DUMP_INIT 81 +#define OPAL_DUMP_INFO 82 +#define OPAL_DUMP_READ 83 +#define OPAL_DUMP_ACK 84 +#define OPAL_GET_MSG 85 +#define OPAL_CHECK_ASYNC_COMPLETION 86 +#define OPAL_SYNC_HOST_REBOOT 87 +#define OPAL_SENSOR_READ 88 +#define OPAL_GET_PARAM 89 +#define OPAL_SET_PARAM 90 +#define OPAL_DUMP_RESEND 91 +#define OPAL_SYNC_HOST_REBOOT 87 +#define OPAL_DUMP_INFO2 94 #ifndef __ASSEMBLY__ @@ -211,7 +254,19 @@ OPAL_EVENT_ERROR_LOG = 0x40, OPAL_EVENT_EPOW = 0x80, OPAL_EVENT_LED_STATUS = 0x100, - OPAL_EVENT_PCI_ERROR = 0x200 + OPAL_EVENT_PCI_ERROR = 0x200, + OPAL_EVENT_DUMP_AVAIL = 0x400, + OPAL_EVENT_MSG_PENDING = 0x800, +}; + +enum OpalMessageType { + OPAL_MSG_ASYNC_COMP = 0, /* params[0] = token, params[1] = rc, + * additional params function-specific + */ + OPAL_MSG_MEM_ERR, + OPAL_MSG_EPOW, + OPAL_MSG_SHUTDOWN, + OPAL_MSG_TYPE_MAX, }; /* Machine check related definitions */ @@ -356,6 +411,12 @@ OPAL_LPC_FW = 2, }; +struct opal_msg { + uint32_t msg_type; + uint32_t reserved; + uint64_t params[8]; +}; + struct opal_machine_check_event { enum OpalMCE_Version version:8; /* 0x00 */ uint8_t in_use; /* 0x01 */ @@ -472,9 +533,9 @@ }; struct OpalIoPhbErrorCommon { - uint32_t version; - uint32_t ioType; - uint32_t len; + __be32 version; + __be32 ioType; + __be32 len; }; struct OpalIoP7IOCPhbErrorData { @@ -539,64 +600,69 @@ struct OpalIoPhb3ErrorData { struct OpalIoPhbErrorCommon common; - uint32_t brdgCtl; + __be32 brdgCtl; /* PHB3 UTL regs */ - uint32_t portStatusReg; - uint32_t rootCmplxStatus; - uint32_t busAgentStatus; + __be32 portStatusReg; + __be32 rootCmplxStatus; + __be32 busAgentStatus; /* PHB3 cfg regs */ - uint32_t deviceStatus; - uint32_t slotStatus; - uint32_t linkStatus; - uint32_t devCmdStatus; - uint32_t devSecStatus; + __be32 deviceStatus; + __be32 slotStatus; + __be32 linkStatus; + __be32 devCmdStatus; + __be32 devSecStatus; /* cfg AER regs */ - uint32_t rootErrorStatus; - uint32_t uncorrErrorStatus; - uint32_t corrErrorStatus; - uint32_t tlpHdr1; - uint32_t tlpHdr2; - uint32_t tlpHdr3; - uint32_t tlpHdr4; - uint32_t sourceId; + __be32 rootErrorStatus; + __be32 uncorrErrorStatus; + __be32 corrErrorStatus; + __be32 tlpHdr1; + __be32 tlpHdr2; + __be32 tlpHdr3; + __be32 tlpHdr4; + __be32 sourceId; - uint32_t rsv3; + __be32 rsv3; /* Record data about the call to allocate a buffer */ - uint64_t errorClass; - uint64_t correlator; + __be64 errorClass; + __be64 correlator; - uint64_t nFir; /* 000 */ - uint64_t nFirMask; /* 003 */ - uint64_t nFirWOF; /* 008 */ + __be64 nFir; /* 000 */ + __be64 nFirMask; /* 003 */ + __be64 nFirWOF; /* 008 */ /* PHB3 MMIO Error Regs */ - uint64_t phbPlssr; /* 120 */ - uint64_t phbCsr; /* 110 */ - uint64_t lemFir; /* C00 */ - uint64_t lemErrorMask; /* C18 */ - uint64_t lemWOF; /* C40 */ - uint64_t phbErrorStatus; /* C80 */ - uint64_t phbFirstErrorStatus; /* C88 */ - uint64_t phbErrorLog0; /* CC0 */ - uint64_t phbErrorLog1; /* CC8 */ - uint64_t mmioErrorStatus; /* D00 */ - uint64_t mmioFirstErrorStatus; /* D08 */ - uint64_t mmioErrorLog0; /* D40 */ - uint64_t mmioErrorLog1; /* D48 */ - uint64_t dma0ErrorStatus; /* D80 */ - uint64_t dma0FirstErrorStatus; /* D88 */ - uint64_t dma0ErrorLog0; /* DC0 */ - uint64_t dma0ErrorLog1; /* DC8 */ - uint64_t dma1ErrorStatus; /* E00 */ - uint64_t dma1FirstErrorStatus; /* E08 */ - uint64_t dma1ErrorLog0; /* E40 */ - uint64_t dma1ErrorLog1; /* E48 */ - uint64_t pestA[OPAL_PHB3_NUM_PEST_REGS]; - uint64_t pestB[OPAL_PHB3_NUM_PEST_REGS]; + __be64 phbPlssr; /* 120 */ + __be64 phbCsr; /* 110 */ + __be64 lemFir; /* C00 */ + __be64 lemErrorMask; /* C18 */ + __be64 lemWOF; /* C40 */ + __be64 phbErrorStatus; /* C80 */ + __be64 phbFirstErrorStatus; /* C88 */ + __be64 phbErrorLog0; /* CC0 */ + __be64 phbErrorLog1; /* CC8 */ + __be64 mmioErrorStatus; /* D00 */ + __be64 mmioFirstErrorStatus; /* D08 */ + __be64 mmioErrorLog0; /* D40 */ + __be64 mmioErrorLog1; /* D48 */ + __be64 dma0ErrorStatus; /* D80 */ + __be64 dma0FirstErrorStatus; /* D88 */ + __be64 dma0ErrorLog0; /* DC0 */ + __be64 dma0ErrorLog1; /* DC8 */ + __be64 dma1ErrorStatus; /* E00 */ + __be64 dma1FirstErrorStatus; /* E08 */ + __be64 dma1ErrorLog0; /* E40 */ + __be64 dma1ErrorLog1; /* E48 */ + __be64 pestA[OPAL_PHB3_NUM_PEST_REGS]; + __be64 pestB[OPAL_PHB3_NUM_PEST_REGS]; +}; + +enum { + OPAL_REINIT_CPUS_HILE_BE = (1 << 0), + OPAL_REINIT_CPUS_HILE_LE = (1 << 1), }; typedef struct oppanel_line { @@ -607,6 +673,9 @@ /* /sys/firmware/opal */ extern struct kobject *opal_kobj; +/* /ibm,opal */ +extern struct device_node *opal_node; + /* API functions */ int64_t opal_console_write(int64_t term_number, __be64 *length, const uint8_t *buffer); @@ -715,24 +784,49 @@ 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_set_system_attention_led(uint8_t led_action); -int64_t opal_pci_next_error(uint64_t phb_id, uint64_t *first_frozen_pe, - uint16_t *pci_error_type, uint16_t *severity); +int64_t opal_pci_next_error(uint64_t phb_id, __be64 *first_frozen_pe, + __be16 *pci_error_type, __be16 *severity); int64_t opal_pci_poll(uint64_t phb_id); int64_t opal_return_cpu(void); +int64_t opal_reinit_cpus(uint64_t flags); -int64_t opal_xscom_read(uint32_t gcid, uint32_t pcb_addr, __be64 *val); -int64_t opal_xscom_write(uint32_t gcid, uint32_t pcb_addr, uint64_t val); +int64_t opal_xscom_read(uint32_t gcid, uint64_t pcb_addr, __be64 *val); +int64_t opal_xscom_write(uint32_t gcid, uint64_t pcb_addr, uint64_t val); int64_t opal_lpc_write(uint32_t chip_id, enum OpalLPCAddressType addr_type, uint32_t addr, uint32_t data, uint32_t sz); int64_t opal_lpc_read(uint32_t chip_id, enum OpalLPCAddressType addr_type, uint32_t addr, __be32 *data, uint32_t sz); + +int64_t opal_read_elog(uint64_t buffer, uint64_t size, uint64_t log_id); +int64_t opal_get_elog_size(__be64 *log_id, __be64 *size, __be64 *elog_type); +int64_t opal_write_elog(uint64_t buffer, uint64_t size, uint64_t offset); +int64_t opal_send_ack_elog(uint64_t log_id); +void opal_resend_pending_logs(void); + int64_t opal_validate_flash(uint64_t buffer, uint32_t *size, uint32_t *result); int64_t opal_manage_flash(uint8_t op); int64_t opal_update_flash(uint64_t blk_list); +int64_t opal_dump_init(uint8_t dump_type); +int64_t opal_dump_info(__be32 *dump_id, __be32 *dump_size); +int64_t opal_dump_info2(__be32 *dump_id, __be32 *dump_size, __be32 *dump_type); +int64_t opal_dump_read(uint32_t dump_id, uint64_t buffer); +int64_t opal_dump_ack(uint32_t dump_id); +int64_t opal_dump_resend_notification(void); + +int64_t opal_get_msg(uint64_t buffer, size_t size); +int64_t opal_check_completion(uint64_t buffer, size_t size, uint64_t token); +int64_t opal_sync_host_reboot(void); +int64_t opal_get_param(uint64_t token, uint32_t param_id, uint64_t buffer, + size_t length); +int64_t opal_set_param(uint64_t token, uint32_t param_id, uint64_t buffer, + size_t length); +int64_t opal_sensor_read(uint32_t sensor_hndl, int token, __be32 *sensor_data); /* Internal functions */ extern int early_init_dt_scan_opal(unsigned long node, const char *uname, int depth, void *data); +extern int early_init_dt_scan_recoverable_ranges(unsigned long node, + const char *uname, int depth, void *data); extern int opal_get_chars(uint32_t vtermno, char *buf, int count); extern int opal_put_chars(uint32_t vtermno, const char *buf, int total_len); @@ -744,6 +838,8 @@ int depth, void *data); extern int opal_notifier_register(struct notifier_block *nb); +extern int opal_message_notifier_register(enum OpalMessageType msg_type, + struct notifier_block *nb); extern void opal_notifier_enable(void); extern void opal_notifier_disable(void); extern void opal_notifier_update_evt(uint64_t evt_mask, uint64_t evt_val); @@ -751,6 +847,13 @@ extern int opal_get_chars(uint32_t vtermno, char *buf, int count); extern int opal_put_chars(uint32_t vtermno, const char *buf, int total_len); +extern int __opal_async_get_token(void); +extern int opal_async_get_token_interruptible(void); +extern int __opal_async_release_token(int token); +extern int opal_async_release_token(int token); +extern int opal_async_wait_response(uint64_t token, struct opal_msg *msg); +extern int opal_get_sensor_data(u32 sensor_hndl, u32 *sensor_data); + extern void hvc_opal_init_early(void); struct rtc_time; @@ -759,13 +862,22 @@ extern unsigned long opal_get_boot_time(void); extern void opal_nvram_init(void); extern void opal_flash_init(void); +extern void opal_flash_term_callback(void); +extern int opal_elog_init(void); +extern void opal_platform_dump_init(void); +extern void opal_msglog_init(void); extern int opal_machine_check(struct pt_regs *regs); +extern bool opal_mce_check_early_recovery(struct pt_regs *regs); extern void opal_shutdown(void); extern void opal_lpc_init(void); +struct opal_sg_list *opal_vmalloc_to_sg_list(void *vmalloc_addr, + unsigned long vmalloc_size); +void opal_free_sg_list(struct opal_sg_list *sg); + #endif /* __ASSEMBLY__ */ #endif /* __OPAL_H */ --- linux-3.13.0.orig/arch/powerpc/include/asm/paca.h +++ linux-3.13.0/arch/powerpc/include/asm/paca.h @@ -152,6 +152,15 @@ */ struct opal_machine_check_event *opal_mc_evt; #endif +#ifdef CONFIG_PPC_BOOK3S_64 + /* Exclusive emergency stack pointer for machine check exception. */ + void *mc_emergency_sp; + /* + * Flag to check whether we are in machine check early handler + * and already using emergency stack. + */ + u16 in_mce; +#endif /* Stuff for accurate time accounting */ u64 user_time; /* accumulated usermode TB ticks */ --- linux-3.13.0.orig/arch/powerpc/include/asm/page.h +++ linux-3.13.0/arch/powerpc/include/asm/page.h @@ -112,6 +112,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-3.13.0.orig/arch/powerpc/include/asm/pci-bridge.h +++ linux-3.13.0/arch/powerpc/include/asm/pci-bridge.h @@ -246,6 +246,7 @@ /* Allocate & free a PCI host bridge structure */ extern struct pci_controller *pcibios_alloc_controller(struct device_node *dev); extern void pcibios_free_controller(struct pci_controller *phb); +extern void pcibios_free_controller_deferred(struct pci_host_bridge *bridge); #ifdef CONFIG_PCI extern int pcibios_vaddr_is_ioport(void __iomem *address); --- linux-3.13.0.orig/arch/powerpc/include/asm/perf_event_server.h +++ linux-3.13.0/arch/powerpc/include/asm/perf_event_server.h @@ -14,6 +14,7 @@ #include #include +/* Update perf_event_print_debug() if this changes */ #define MAX_HWEVENTS 8 #define MAX_EVENT_ALTERNATIVES 8 #define MAX_LIMITED_HWCOUNTERS 2 @@ -60,8 +61,7 @@ #define PPMU_SIAR_VALID 0x00000010 /* Processor has SIAR Valid bit */ #define PPMU_HAS_SSLOT 0x00000020 /* Has sampled slot in MMCRA */ #define PPMU_HAS_SIER 0x00000040 /* Has SIER */ -#define PPMU_BHRB 0x00000080 /* has BHRB feature enabled */ -#define PPMU_EBB 0x00000100 /* supports event based branch */ +#define PPMU_ARCH_207S 0x00000080 /* PMC is architecture v2.07S */ /* * Values for flags to get_alternatives() --- linux-3.13.0.orig/arch/powerpc/include/asm/pgtable-ppc64.h +++ linux-3.13.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 @@ -195,6 +207,7 @@ static inline unsigned long pte_update(struct mm_struct *mm, unsigned long addr, pte_t *ptep, unsigned long clr, + unsigned long set, int huge) { #ifdef PTE_ATOMIC_UPDATES @@ -205,14 +218,15 @@ andi. %1,%0,%6\n\ bne- 1b \n\ andc %1,%0,%4 \n\ + or %1,%1,%7\n\ stdcx. %1,0,%3 \n\ bne- 1b" : "=&r" (old), "=&r" (tmp), "=m" (*ptep) - : "r" (ptep), "r" (clr), "m" (*ptep), "i" (_PAGE_BUSY) + : "r" (ptep), "r" (clr), "m" (*ptep), "i" (_PAGE_BUSY), "r" (set) : "cc" ); #else unsigned long old = pte_val(*ptep); - *ptep = __pte(old & ~clr); + *ptep = __pte((old & ~clr) | set); #endif /* huge pages use the old page table lock */ if (!huge) @@ -231,9 +245,9 @@ { unsigned long old; - if ((pte_val(*ptep) & (_PAGE_ACCESSED | _PAGE_HASHPTE)) == 0) + if ((pte_val(*ptep) & (_PAGE_ACCESSED | _PAGE_HASHPTE)) == 0) return 0; - old = pte_update(mm, addr, ptep, _PAGE_ACCESSED, 0); + old = pte_update(mm, addr, ptep, _PAGE_ACCESSED, 0, 0); return (old & _PAGE_ACCESSED) != 0; } #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG @@ -252,7 +266,7 @@ if ((pte_val(*ptep) & _PAGE_RW) == 0) return; - pte_update(mm, addr, ptep, _PAGE_RW, 0); + pte_update(mm, addr, ptep, _PAGE_RW, 0, 0); } static inline void huge_ptep_set_wrprotect(struct mm_struct *mm, @@ -261,7 +275,7 @@ if ((pte_val(*ptep) & _PAGE_RW) == 0) return; - pte_update(mm, addr, ptep, _PAGE_RW, 1); + pte_update(mm, addr, ptep, _PAGE_RW, 0, 1); } /* @@ -284,14 +298,14 @@ static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep) { - unsigned long old = pte_update(mm, addr, ptep, ~0UL, 0); + unsigned long old = pte_update(mm, addr, ptep, ~0UL, 0, 0); return __pte(old); } static inline void pte_clear(struct mm_struct *mm, unsigned long addr, pte_t * ptep) { - pte_update(mm, addr, ptep, ~0UL, 0); + pte_update(mm, addr, ptep, ~0UL, 0, 0); } @@ -411,7 +425,7 @@ } extern void hpte_do_hugepage_flush(struct mm_struct *mm, unsigned long addr, - pmd_t *pmdp); + pmd_t *pmdp, unsigned long old_pmd); #ifdef CONFIG_TRANSPARENT_HUGEPAGE extern pmd_t pfn_pmd(unsigned long pfn, pgprot_t pgprot); extern pmd_t mk_pmd(struct page *page, pgprot_t pgprot); @@ -506,7 +520,9 @@ extern unsigned long pmd_hugepage_update(struct mm_struct *mm, unsigned long addr, - pmd_t *pmdp, unsigned long clr); + pmd_t *pmdp, + unsigned long clr, + unsigned long set); static inline int __pmdp_test_and_clear_young(struct mm_struct *mm, unsigned long addr, pmd_t *pmdp) @@ -515,7 +531,7 @@ if ((pmd_val(*pmdp) & (_PAGE_ACCESSED | _PAGE_HASHPTE)) == 0) return 0; - old = pmd_hugepage_update(mm, addr, pmdp, _PAGE_ACCESSED); + old = pmd_hugepage_update(mm, addr, pmdp, _PAGE_ACCESSED, 0); return ((old & _PAGE_ACCESSED) != 0); } @@ -542,7 +558,7 @@ if ((pmd_val(*pmdp) & _PAGE_RW) == 0) return; - pmd_hugepage_update(mm, addr, pmdp, _PAGE_RW); + pmd_hugepage_update(mm, addr, pmdp, _PAGE_RW, 0); } #define __HAVE_ARCH_PMDP_SPLITTING_FLUSH @@ -558,5 +574,19 @@ #define __HAVE_ARCH_PMDP_INVALIDATE extern void pmdp_invalidate(struct vm_area_struct *vma, unsigned long address, pmd_t *pmdp); + +#define pmd_move_must_withdraw pmd_move_must_withdraw +struct spinlock; +static inline int pmd_move_must_withdraw(struct spinlock *new_pmd_ptl, + struct spinlock *old_pmd_ptl) +{ + /* + * Archs like ppc64 use pgtable to store per pmd + * specific information. So when we switch the pmd, + * we should also withdraw and deposit the pgtable + */ + return true; +} + #endif /* __ASSEMBLY__ */ #endif /* _ASM_POWERPC_PGTABLE_PPC64_H_ */ --- linux-3.13.0.orig/arch/powerpc/include/asm/ppc_asm.h +++ linux-3.13.0/arch/powerpc/include/asm/ppc_asm.h @@ -306,11 +306,16 @@ * ld rY,ADDROFF(name)(rX) */ #ifdef __powerpc64__ +#ifdef HAVE_AS_ATHIGH +#define __AS_ATHIGH high +#else +#define __AS_ATHIGH h +#endif #define LOAD_REG_IMMEDIATE(reg,expr) \ lis reg,(expr)@highest; \ ori reg,reg,(expr)@higher; \ rldicr reg,reg,32,31; \ - oris reg,reg,(expr)@h; \ + oris reg,reg,(expr)@__AS_ATHIGH; \ ori reg,reg,(expr)@l; #define LOAD_REG_ADDR(reg,name) \ --- linux-3.13.0.orig/arch/powerpc/include/asm/processor.h +++ linux-3.13.0/arch/powerpc/include/asm/processor.h @@ -373,6 +373,8 @@ extern int get_unalign_ctl(struct task_struct *tsk, unsigned long adr); extern int set_unalign_ctl(struct task_struct *tsk, unsigned int val); +extern void fp_enable(void); +extern void vec_enable(void); extern void load_fp_state(struct thread_fp_state *fp); extern void store_fp_state(struct thread_fp_state *fp); extern void load_vr_state(struct thread_vr_state *vr); --- linux-3.13.0.orig/arch/powerpc/include/asm/pte-hash64-64k.h +++ linux-3.13.0/arch/powerpc/include/asm/pte-hash64-64k.h @@ -46,11 +46,31 @@ * in order to deal with 64K made of 4K HW pages. Thus we override the * generic accessors and iterators here */ -#define __real_pte(e,p) ((real_pte_t) { \ - (e), (pte_val(e) & _PAGE_COMBO) ? \ - (pte_val(*((p) + PTRS_PER_PTE))) : 0 }) -#define __rpte_to_hidx(r,index) ((pte_val((r).pte) & _PAGE_COMBO) ? \ - (((r).hidx >> ((index)<<2)) & 0xf) : ((pte_val((r).pte) >> 12) & 0xf)) +#define __real_pte __real_pte +static inline real_pte_t __real_pte(pte_t pte, pte_t *ptep) +{ + real_pte_t rpte; + + rpte.pte = pte; + rpte.hidx = 0; + if (pte_val(pte) & _PAGE_COMBO) { + /* + * Make sure we order the hidx load against the _PAGE_COMBO + * check. The store side ordering is done in __hash_page_4K + */ + smp_rmb(); + rpte.hidx = pte_val(*((ptep) + PTRS_PER_PTE)); + } + return rpte; +} + +static inline unsigned long __rpte_to_hidx(real_pte_t rpte, unsigned long index) +{ + if ((pte_val(rpte.pte) & _PAGE_COMBO)) + return (rpte.hidx >> (index<<2)) & 0xf; + return (pte_val(rpte.pte) >> 12) & 0xf; +} + #define __rpte_to_pte(r) ((r).pte) #define __rpte_sub_valid(rpte, index) \ (pte_val(rpte.pte) & (_PAGE_HPTE_SUB0 >> (index))) --- linux-3.13.0.orig/arch/powerpc/include/asm/ptrace.h +++ linux-3.13.0/arch/powerpc/include/asm/ptrace.h @@ -28,11 +28,23 @@ #ifdef __powerpc64__ +/* + * Size of redzone that userspace is allowed to use below the stack + * pointer. This is 288 in the 64-bit big-endian ELF ABI, and 512 in + * the new ELFv2 little-endian ABI, so we allow the larger amount. + * + * For kernel code we allow a 288-byte redzone, in order to conserve + * kernel stack space; gcc currently only uses 288 bytes, and will + * hopefully allow explicit control of the redzone size in future. + */ +#define USER_REDZONE_SIZE 512 +#define KERNEL_REDZONE_SIZE 288 + #define STACK_FRAME_OVERHEAD 112 /* size of minimum stack frame */ #define STACK_FRAME_LR_SAVE 2 /* Location of LR in stack frame */ #define STACK_FRAME_REGS_MARKER ASM_CONST(0x7265677368657265) #define STACK_INT_FRAME_SIZE (sizeof(struct pt_regs) + \ - STACK_FRAME_OVERHEAD + 288) + STACK_FRAME_OVERHEAD + KERNEL_REDZONE_SIZE) #define STACK_FRAME_MARKER 12 /* Size of dummy stack frame allocated when calling signal handler. */ @@ -41,6 +53,8 @@ #else /* __powerpc64__ */ +#define USER_REDZONE_SIZE 0 +#define KERNEL_REDZONE_SIZE 0 #define STACK_FRAME_OVERHEAD 16 /* size of minimum stack frame */ #define STACK_FRAME_LR_SAVE 1 /* Location of LR in stack frame */ #define STACK_FRAME_REGS_MARKER ASM_CONST(0x72656773) --- linux-3.13.0.orig/arch/powerpc/include/asm/reg.h +++ linux-3.13.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) @@ -118,8 +119,10 @@ #define __MSR (MSR_ME | MSR_RI | MSR_IR | MSR_DR | MSR_ISF |MSR_HV) #ifdef __BIG_ENDIAN__ #define MSR_ __MSR +#define MSR_IDLE (MSR_ME | MSR_SF | MSR_HV) #else #define MSR_ (__MSR | MSR_LE) +#define MSR_IDLE (MSR_ME | MSR_SF | MSR_HV | MSR_LE) #endif #define MSR_KERNEL (MSR_ | MSR_64BIT) #define MSR_USER32 (MSR_ | MSR_PR | MSR_EE) @@ -213,6 +216,7 @@ #define SPRN_ACOP 0x1F /* Available Coprocessor Register */ #define SPRN_TFIAR 0x81 /* Transaction Failure Inst Addr */ #define SPRN_TEXASR 0x82 /* Transaction EXception & Summary */ +#define TEXASR_FS __MASK(63-36) /* Transaction Failure Summary */ #define SPRN_TEXASRU 0x83 /* '' '' '' Upper 32 */ #define SPRN_TFHAR 0x80 /* Transaction Failure Handler Addr */ #define SPRN_CTRLF 0x088 @@ -260,6 +264,10 @@ #define SPRN_HRMOR 0x139 /* Real mode offset register */ #define SPRN_HSRR0 0x13A /* Hypervisor Save/Restore 0 */ #define SPRN_HSRR1 0x13B /* Hypervisor Save/Restore 1 */ +#define SPRN_PMICR 0x354 /* Power Management Idle Control Reg */ +#define SPRN_PMSR 0x355 /* Power Management Status Reg */ +#define SPRN_PMCR 0x374 /* Power Management Control Register */ + /* HFSCR and FSCR bit numbers are the same */ #define FSCR_TAR_LG 8 /* Enable Target Address Register */ #define FSCR_EBB_LG 7 /* Enable Event Based Branching */ @@ -643,12 +651,14 @@ #define MMCR0_PMXE 0x04000000UL /* performance monitor exception enable */ #define MMCR0_FCECE 0x02000000UL /* freeze ctrs on enabled cond or event */ #define MMCR0_TBEE 0x00400000UL /* time base exception enable */ +#define MMCR0_BHRBA 0x00200000UL /* BHRB Access allowed in userspace */ #define MMCR0_EBE 0x00100000UL /* Event based branch enable */ #define MMCR0_PMCC 0x000c0000UL /* PMC control */ #define MMCR0_PMCC_U6 0x00080000UL /* PMC1-6 are R/W by user (PR) */ #define MMCR0_PMC1CE 0x00008000UL /* PMC1 count enable*/ #define MMCR0_PMCjCE 0x00004000UL /* PMCj count enable*/ #define MMCR0_TRIGGER 0x00002000UL /* TRIGGER enable */ +#define MMCR0_PMAO_SYNC 0x00000800UL /* PMU interrupt is synchronous */ #define MMCR0_PMAO 0x00000080UL /* performance monitor alert has occurred, set to 0 after handling exception */ #define MMCR0_SHRFC 0x00000040UL /* SHRre freeze conditions between threads */ #define MMCR0_FC56 0x00000010UL /* freeze counters 5 and 6 */ @@ -682,6 +692,7 @@ #define SPRN_EBBHR 804 /* Event based branch handler register */ #define SPRN_EBBRR 805 /* Event based branch return register */ #define SPRN_BESCR 806 /* Branch event status and control register */ +#define BESCR_GE 0x8000000000000000ULL /* Global Enable */ #define SPRN_PMC1 787 #define SPRN_PMC2 788 --- linux-3.13.0.orig/arch/powerpc/include/asm/rtas.h +++ linux-3.13.0/arch/powerpc/include/asm/rtas.h @@ -150,19 +150,53 @@ #define RTAS_VECTOR_EXTERNAL_INTERRUPT 0x500 struct rtas_error_log { - unsigned long version:8; /* Architectural version */ - unsigned long severity:3; /* Severity level of error */ - unsigned long disposition:2; /* Degree of recovery */ - unsigned long extended:1; /* extended log present? */ - unsigned long /* reserved */ :2; /* Reserved for future use */ - unsigned long initiator:4; /* Initiator of event */ - unsigned long target:4; /* Target of failed operation */ - unsigned long type:8; /* General event or error*/ - unsigned long extended_log_length:32; /* length in bytes */ - unsigned char buffer[1]; /* Start of extended log */ + /* Byte 0 */ + uint8_t byte0; /* Architectural version */ + + /* Byte 1 */ + uint8_t byte1; + /* XXXXXXXX + * XXX 3: Severity level of error + * XX 2: Degree of recovery + * X 1: Extended log present? + * XX 2: Reserved + */ + + /* Byte 2 */ + uint8_t byte2; + /* XXXXXXXX + * XXXX 4: Initiator of event + * XXXX 4: Target of failed operation + */ + uint8_t byte3; /* General event or error*/ + __be32 extended_log_length; /* length in bytes */ + unsigned char buffer[1]; /* Start of extended log */ /* Variable length. */ }; +static inline uint8_t rtas_error_severity(const struct rtas_error_log *elog) +{ + return (elog->byte1 & 0xE0) >> 5; +} + +static inline uint8_t rtas_error_disposition(const struct rtas_error_log *elog) +{ + return (elog->byte1 & 0x18) >> 3; +} + +static inline uint8_t rtas_error_extended(const struct rtas_error_log *elog) +{ + return (elog->byte1 & 0x04) >> 2; +} + +#define rtas_error_type(x) ((x)->byte3) + +static inline +uint32_t rtas_error_extended_log_length(const struct rtas_error_log *elog) +{ + return be32_to_cpu(elog->extended_log_length); +} + #define RTAS_V6EXT_LOG_FORMAT_EVENT_LOG 14 #define RTAS_V6EXT_COMPANY_ID_IBM (('I' << 24) | ('B' << 16) | ('M' << 8)) @@ -172,32 +206,35 @@ */ struct rtas_ext_event_log_v6 { /* Byte 0 */ - uint32_t log_valid:1; /* 1:Log valid */ - uint32_t unrecoverable_error:1; /* 1:Unrecoverable error */ - uint32_t recoverable_error:1; /* 1:recoverable (correctable */ - /* or successfully retried) */ - uint32_t degraded_operation:1; /* 1:Unrecoverable err, bypassed*/ - /* - degraded operation (e.g. */ - /* CPU or mem taken off-line) */ - uint32_t predictive_error:1; - uint32_t new_log:1; /* 1:"New" log (Always 1 for */ - /* data returned from RTAS */ - uint32_t big_endian:1; /* 1: Big endian */ - uint32_t :1; /* reserved */ + uint8_t byte0; + /* XXXXXXXX + * X 1: Log valid + * X 1: Unrecoverable error + * X 1: Recoverable (correctable or successfully retried) + * X 1: Bypassed unrecoverable error (degraded operation) + * X 1: Predictive error + * X 1: "New" log (always 1 for data returned from RTAS) + * X 1: Big Endian + * X 1: Reserved + */ + /* Byte 1 */ - uint32_t :8; /* reserved */ + uint8_t byte1; /* reserved */ + /* Byte 2 */ - uint32_t powerpc_format:1; /* Set to 1 (indicating log is */ - /* in PowerPC format */ - uint32_t :3; /* reserved */ - uint32_t log_format:4; /* Log format indicator. Define */ - /* format used for byte 12-2047 */ + uint8_t byte2; + /* XXXXXXXX + * X 1: Set to 1 (indicating log is in PowerPC format) + * XXX 3: Reserved + * XXXX 4: Log format used for bytes 12-2047 + */ + /* Byte 3 */ - uint32_t :8; /* reserved */ + uint8_t byte3; /* reserved */ /* Byte 4-11 */ uint8_t reserved[8]; /* reserved */ /* Byte 12-15 */ - uint32_t company_id; /* Company ID of the company */ + __be32 company_id; /* Company ID of the company */ /* that defines the format for */ /* the vendor specific log type */ /* Byte 16-end of log */ @@ -205,6 +242,18 @@ /* Variable length. */ }; +static +inline uint8_t rtas_ext_event_log_format(struct rtas_ext_event_log_v6 *ext_log) +{ + return ext_log->byte2 & 0x0F; +} + +static +inline uint32_t rtas_ext_event_company_id(struct rtas_ext_event_log_v6 *ext_log) +{ + return be32_to_cpu(ext_log->company_id); +} + /* pSeries event log format */ /* Two bytes ASCII section IDs */ @@ -227,14 +276,26 @@ /* Vendor specific Platform Event Log Format, Version 6, section header */ struct pseries_errorlog { - uint16_t id; /* 0x00 2-byte ASCII section ID */ - uint16_t length; /* 0x02 Section length in bytes */ + __be16 id; /* 0x00 2-byte ASCII section ID */ + __be16 length; /* 0x02 Section length in bytes */ uint8_t version; /* 0x04 Section version */ uint8_t subtype; /* 0x05 Section subtype */ - uint16_t creator_component; /* 0x06 Creator component ID */ + __be16 creator_component; /* 0x06 Creator component ID */ uint8_t data[]; /* 0x08 Start of section data */ }; +static +inline uint16_t pseries_errorlog_id(struct pseries_errorlog *sect) +{ + return be16_to_cpu(sect->id); +} + +static +inline uint16_t pseries_errorlog_length(struct pseries_errorlog *sect) +{ + return be16_to_cpu(sect->length); +} + struct pseries_errorlog *get_pseries_errorlog(struct rtas_error_log *log, uint16_t section_id); @@ -255,6 +316,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-3.13.0.orig/arch/powerpc/include/asm/sections.h +++ linux-3.13.0/arch/powerpc/include/asm/sections.h @@ -8,6 +8,7 @@ #ifdef __powerpc64__ +extern char __start_interrupts[]; extern char __end_interrupts[]; extern char __prom_init_toc_start[]; @@ -21,6 +22,17 @@ return 0; } +static inline int overlaps_interrupt_vector_text(unsigned long start, + unsigned long end) +{ + unsigned long real_start, real_end; + real_start = __start_interrupts - _stext; + real_end = __end_interrupts - _stext; + + return start < (unsigned long)__va(real_end) && + (unsigned long)__va(real_start) < end; +} + static inline int overlaps_kernel_text(unsigned long start, unsigned long end) { return start < (unsigned long)__init_end && --- linux-3.13.0.orig/arch/powerpc/include/asm/smp.h +++ linux-3.13.0/arch/powerpc/include/asm/smp.h @@ -207,6 +207,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-3.13.0.orig/arch/powerpc/include/asm/switch_to.h +++ linux-3.13.0/arch/powerpc/include/asm/switch_to.h @@ -16,13 +16,15 @@ extern struct task_struct *_switch(struct thread_struct *prev, struct thread_struct *next); #ifdef CONFIG_PPC_BOOK3S_64 -static inline void save_tar(struct thread_struct *prev) +static inline void save_early_sprs(struct thread_struct *prev) { if (cpu_has_feature(CPU_FTR_ARCH_207S)) prev->tar = mfspr(SPRN_TAR); + if (cpu_has_feature(CPU_FTR_DSCR)) + prev->dscr = mfspr(SPRN_DSCR); } #else -static inline void save_tar(struct thread_struct *prev) {} +static inline void save_early_sprs(struct thread_struct *prev) {} #endif extern void load_up_fpu(void); @@ -86,6 +88,8 @@ { #ifdef CONFIG_PPC_BOOK3S_64 /* EBB perf events are not inherited, so clear all EBB state. */ + t->thread.ebbrr = 0; + t->thread.ebbhr = 0; t->thread.bescr = 0; t->thread.mmcr2 = 0; t->thread.mmcr0 = 0; --- linux-3.13.0.orig/arch/powerpc/include/asm/synch.h +++ linux-3.13.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-3.13.0.orig/arch/powerpc/include/asm/systbl.h +++ linux-3.13.0/arch/powerpc/include/asm/systbl.h @@ -190,7 +190,7 @@ SYSCALL_SPU(capget) SYSCALL_SPU(capset) COMPAT_SYS(sigaltstack) -COMPAT_SYS_SPU(sendfile) +SYSX_SPU(sys_sendfile64,compat_sys_sendfile,sys_sendfile) SYSCALL(ni_syscall) SYSCALL(ni_syscall) PPC_SYS(vfork) --- linux-3.13.0.orig/arch/powerpc/include/asm/thread_info.h +++ linux-3.13.0/arch/powerpc/include/asm/thread_info.h @@ -91,8 +91,7 @@ #define TIF_POLLING_NRFLAG 3 /* true if poll_idle() is polling TIF_NEED_RESCHED */ #define TIF_32BIT 4 /* 32 bit binary */ -#define TIF_PERFMON_WORK 5 /* work for pfm_handle_work() */ -#define TIF_PERFMON_CTXSW 6 /* perfmon needs ctxsw calls */ +#define TIF_RESTORE_TM 5 /* need to restore TM FP/VEC/VSX */ #define TIF_SYSCALL_AUDIT 7 /* syscall auditing active */ #define TIF_SINGLESTEP 8 /* singlestepping active */ #define TIF_NOHZ 9 /* in adaptive nohz mode */ @@ -115,8 +114,7 @@ #define _TIF_NEED_RESCHED (1< -static inline int cpu_to_node(int cpu) -{ - return numa_cpu_lookup_table[cpu]; -} - #define parent_node(node) (node) #define cpumask_of_node(node) ((node) == -1 ? \ --- linux-3.13.0.orig/arch/powerpc/include/uapi/asm/cputable.h +++ linux-3.13.0/arch/powerpc/include/uapi/asm/cputable.h @@ -41,5 +41,7 @@ #define PPC_FEATURE2_EBB 0x10000000 #define PPC_FEATURE2_ISEL 0x08000000 #define PPC_FEATURE2_TAR 0x04000000 +#define PPC_FEATURE2_VEC_CRYPTO 0x02000000 +#define PPC_FEATURE2_HTM_NOSC 0x01000000 #endif /* _UAPI__ASM_POWERPC_CPUTABLE_H */ --- linux-3.13.0.orig/arch/powerpc/include/uapi/asm/elf.h +++ linux-3.13.0/arch/powerpc/include/uapi/asm/elf.h @@ -292,8 +292,10 @@ #define R_PPC64_DTPREL16_HIGHEST 105 /* half16 (sym+add)@dtprel@highest */ #define R_PPC64_DTPREL16_HIGHESTA 106 /* half16 (sym+add)@dtprel@highesta */ +#define R_PPC64_ENTRY 118 + /* Keep this the last entry. */ -#define R_PPC64_NUM 107 +#define R_PPC64_NUM 119 /* There's actually a third entry here, but it's unused */ struct ppc64_opd_entry --- linux-3.13.0.orig/arch/powerpc/include/uapi/asm/tm.h +++ linux-3.13.0/arch/powerpc/include/uapi/asm/tm.h @@ -9,7 +9,7 @@ #define TM_CAUSE_RESCHED 0xde #define TM_CAUSE_TLBI 0xdc #define TM_CAUSE_FAC_UNAV 0xda -#define TM_CAUSE_SYSCALL 0xd8 /* future use */ +#define TM_CAUSE_SYSCALL 0xd8 #define TM_CAUSE_MISC 0xd6 /* future use */ #define TM_CAUSE_SIGNAL 0xd4 #define TM_CAUSE_ALIGNMENT 0xd2 --- linux-3.13.0.orig/arch/powerpc/kernel/Makefile +++ linux-3.13.0/arch/powerpc/kernel/Makefile @@ -39,6 +39,7 @@ obj-$(CONFIG_HAVE_HW_BREAKPOINT) += hw_breakpoint.o obj-$(CONFIG_PPC_BOOK3S_64) += cpu_setup_ppc970.o cpu_setup_pa6t.o obj-$(CONFIG_PPC_BOOK3S_64) += cpu_setup_power.o +obj-$(CONFIG_PPC_BOOK3S_64) += mce.o mce_power.o obj64-$(CONFIG_RELOCATABLE) += reloc_64.o obj-$(CONFIG_PPC_BOOK3E_64) += exceptions-64e.o idle_book3e.o obj-$(CONFIG_PPC_A2) += cpu_setup_a2.o --- linux-3.13.0.orig/arch/powerpc/kernel/asm-offsets.c +++ linux-3.13.0/arch/powerpc/kernel/asm-offsets.c @@ -232,6 +232,10 @@ DEFINE(PACA_DTL_RIDX, offsetof(struct paca_struct, dtl_ridx)); #endif /* CONFIG_PPC_STD_MMU_64 */ DEFINE(PACAEMERGSP, offsetof(struct paca_struct, emergency_sp)); +#ifdef CONFIG_PPC_BOOK3S_64 + DEFINE(PACAMCEMERGSP, offsetof(struct paca_struct, mc_emergency_sp)); + DEFINE(PACA_IN_MCE, offsetof(struct paca_struct, in_mce)); +#endif DEFINE(PACAHWCPUID, offsetof(struct paca_struct, hw_cpu_id)); DEFINE(PACAKEXECSTATE, offsetof(struct paca_struct, kexec_state)); DEFINE(PACA_STARTTIME, offsetof(struct paca_struct, starttime)); @@ -484,6 +488,7 @@ DEFINE(VCPU_DAR, offsetof(struct kvm_vcpu, arch.shregs.dar)); DEFINE(VCPU_VPA, offsetof(struct kvm_vcpu, arch.vpa.pinned_addr)); DEFINE(VCPU_VPA_DIRTY, offsetof(struct kvm_vcpu, arch.vpa.dirty)); + DEFINE(VCPU_INTR_MSR, offsetof(struct kvm_vcpu, arch.intr_msr)); #endif #ifdef CONFIG_PPC_BOOK3S DEFINE(VCPU_VCPUID, offsetof(struct kvm_vcpu, vcpu_id)); --- linux-3.13.0.orig/arch/powerpc/kernel/cacheinfo.c +++ linux-3.13.0/arch/powerpc/kernel/cacheinfo.c @@ -62,12 +62,22 @@ }; /* These are used to index the cache_type_info array. */ -#define CACHE_TYPE_UNIFIED 0 -#define CACHE_TYPE_INSTRUCTION 1 -#define CACHE_TYPE_DATA 2 +#define CACHE_TYPE_UNIFIED 0 /* cache-size, cache-block-size, etc. */ +#define CACHE_TYPE_UNIFIED_D 1 /* d-cache-size, d-cache-block-size, etc */ +#define CACHE_TYPE_INSTRUCTION 2 +#define CACHE_TYPE_DATA 3 static const struct cache_type_info cache_type_info[] = { { + /* Embedded systems that use cache-size, cache-block-size, + * etc. for the Unified (typically L2) cache. */ + .name = "Unified", + .size_prop = "cache-size", + .line_size_props = { "cache-line-size", + "cache-block-size", }, + .nr_sets_prop = "cache-sets", + }, + { /* PowerPC Processor binding says the [di]-cache-* * must be equal on unified caches, so just use * d-cache properties. */ @@ -294,7 +304,8 @@ { struct cache *iter; - if (cache->type == CACHE_TYPE_UNIFIED) + if (cache->type == CACHE_TYPE_UNIFIED || + cache->type == CACHE_TYPE_UNIFIED_D) return cache; list_for_each_entry(iter, &cache_list, list) @@ -325,16 +336,29 @@ return of_get_property(np, "cache-unified", NULL); } -static struct cache *cache_do_one_devnode_unified(struct device_node *node, - int level) +/* + * Unified caches can have two different sets of tags. Most embedded + * use cache-size, etc. for the unified cache size, but open firmware systems + * use d-cache-size, etc. Check on initialization for which type we have, and + * return the appropriate structure type. Assume it's embedded if it isn't + * open firmware. If it's yet a 3rd type, then there will be missing entries + * in /sys/devices/system/cpu/cpu0/cache/index2/, and this code will need + * to be extended further. + */ +static int cache_is_unified_d(const struct device_node *np) { - struct cache *cache; + return of_get_property(np, + cache_type_info[CACHE_TYPE_UNIFIED_D].size_prop, NULL) ? + CACHE_TYPE_UNIFIED_D : CACHE_TYPE_UNIFIED; +} +/* + */ +static struct cache *cache_do_one_devnode_unified(struct device_node *node, int level) +{ pr_debug("creating L%d ucache for %s\n", level, node->full_name); - cache = new_cache(CACHE_TYPE_UNIFIED, level, node); - - return cache; + return new_cache(cache_is_unified_d(node), level, node); } static struct cache *cache_do_one_devnode_split(struct device_node *node, @@ -794,6 +818,9 @@ { remove_index_dirs(cache_dir); + /* Remove cache dir from sysfs */ + kobject_del(cache_dir->kobj); + kobject_put(cache_dir->kobj); kfree(cache_dir); --- linux-3.13.0.orig/arch/powerpc/kernel/cpu_setup_power.S +++ linux-3.13.0/arch/powerpc/kernel/cpu_setup_power.S @@ -29,7 +29,7 @@ mtspr SPRN_LPID,r0 mfspr r3,SPRN_LPCR bl __init_LPCR - bl __init_TLB + bl __init_tlb_power7 mtlr r11 blr @@ -42,7 +42,7 @@ mtspr SPRN_LPID,r0 mfspr r3,SPRN_LPCR bl __init_LPCR - bl __init_TLB + bl __init_tlb_power7 mtlr r11 blr @@ -59,7 +59,7 @@ oris r3, r3, LPCR_AIL_3@h bl __init_LPCR bl __init_HFSCR - bl __init_TLB + bl __init_tlb_power8 bl __init_PMU_HV mtlr r11 blr @@ -78,7 +78,7 @@ oris r3, r3, LPCR_AIL_3@h bl __init_LPCR bl __init_HFSCR - bl __init_TLB + bl __init_tlb_power8 bl __init_PMU_HV mtlr r11 blr @@ -134,15 +134,31 @@ mtspr SPRN_HFSCR,r3 blr -__init_TLB: - /* - * Clear the TLB using the "IS 3" form of tlbiel instruction - * (invalidate by congruence class). P7 has 128 CCs, P8 has 512 - * so we just always do 512 - */ +/* + * Clear the TLB using the specified IS form of tlbiel instruction + * (invalidate by congruence class). P7 has 128 CCs., P8 has 512. + * + * r3 = IS field + */ +__init_tlb_power7: + li r3,0xc00 /* IS field = 0b11 */ +_GLOBAL(__flush_tlb_power7) + li r6,128 + mtctr r6 + mr r7,r3 /* IS field */ + ptesync +2: tlbiel r7 + addi r7,r7,0x1000 + bdnz 2b + ptesync +1: blr + +__init_tlb_power8: + li r3,0xc00 /* IS field = 0b11 */ +_GLOBAL(__flush_tlb_power8) li r6,512 mtctr r6 - li r7,0xc00 /* IS field = 0b11 */ + mr r7,r3 /* IS field */ ptesync 2: tlbiel r7 addi r7,r7,0x1000 --- linux-3.13.0.orig/arch/powerpc/kernel/cputable.c +++ linux-3.13.0/arch/powerpc/kernel/cputable.c @@ -71,6 +71,10 @@ extern void __setup_cpu_power8(unsigned long offset, struct cpu_spec* spec); extern void __restore_cpu_power8(void); extern void __restore_cpu_a2(void); +extern void __flush_tlb_power7(unsigned long inval_selector); +extern void __flush_tlb_power8(unsigned long inval_selector); +extern long __machine_check_early_realmode_p7(struct pt_regs *regs); +extern long __machine_check_early_realmode_p8(struct pt_regs *regs); #endif /* CONFIG_PPC64 */ #if defined(CONFIG_E500) extern void __setup_cpu_e5500(unsigned long offset, struct cpu_spec* spec); @@ -104,8 +108,11 @@ PPC_FEATURE_TRUE_LE | \ PPC_FEATURE_PSERIES_PERFMON_COMPAT) #define COMMON_USER2_POWER8 (PPC_FEATURE2_ARCH_2_07 | \ - PPC_FEATURE2_HTM_COMP | PPC_FEATURE2_DSCR | \ - PPC_FEATURE2_ISEL | PPC_FEATURE2_TAR) + PPC_FEATURE2_HTM_COMP | \ + PPC_FEATURE2_HTM_NOSC_COMP | \ + PPC_FEATURE2_DSCR | \ + PPC_FEATURE2_ISEL | PPC_FEATURE2_TAR | \ + PPC_FEATURE2_VEC_CRYPTO) #define COMMON_USER_PA6T (COMMON_USER_PPC64 | PPC_FEATURE_PA6T |\ PPC_FEATURE_TRUE_LE | \ PPC_FEATURE_HAS_ALTIVEC_COMP) @@ -440,6 +447,8 @@ .oprofile_cpu_type = "ppc64/ibm-compat-v1", .cpu_setup = __setup_cpu_power7, .cpu_restore = __restore_cpu_power7, + .flush_tlb = __flush_tlb_power7, + .machine_check_early = __machine_check_early_realmode_p7, .platform = "power7", }, { /* 2.07-compliant processor, i.e. Power8 "architected" mode */ @@ -456,6 +465,8 @@ .oprofile_cpu_type = "ppc64/ibm-compat-v1", .cpu_setup = __setup_cpu_power8, .cpu_restore = __restore_cpu_power8, + .flush_tlb = __flush_tlb_power8, + .machine_check_early = __machine_check_early_realmode_p8, .platform = "power8", }, { /* Power7 */ @@ -474,6 +485,8 @@ .oprofile_type = PPC_OPROFILE_POWER4, .cpu_setup = __setup_cpu_power7, .cpu_restore = __restore_cpu_power7, + .flush_tlb = __flush_tlb_power7, + .machine_check_early = __machine_check_early_realmode_p7, .platform = "power7", }, { /* Power7+ */ @@ -492,13 +505,15 @@ .oprofile_type = PPC_OPROFILE_POWER4, .cpu_setup = __setup_cpu_power7, .cpu_restore = __restore_cpu_power7, + .flush_tlb = __flush_tlb_power7, + .machine_check_early = __machine_check_early_realmode_p7, .platform = "power7+", }, { /* Power8E */ .pvr_mask = 0xffff0000, .pvr_value = 0x004b0000, .cpu_name = "POWER8E (raw)", - .cpu_features = CPU_FTRS_POWER8, + .cpu_features = CPU_FTRS_POWER8E, .cpu_user_features = COMMON_USER_POWER8, .cpu_user_features2 = COMMON_USER2_POWER8, .mmu_features = MMU_FTRS_POWER8, @@ -510,6 +525,8 @@ .oprofile_type = PPC_OPROFILE_INVALID, .cpu_setup = __setup_cpu_power8, .cpu_restore = __restore_cpu_power8, + .flush_tlb = __flush_tlb_power8, + .machine_check_early = __machine_check_early_realmode_p8, .platform = "power8", }, { /* Power8 */ @@ -528,6 +545,8 @@ .oprofile_type = PPC_OPROFILE_INVALID, .cpu_setup = __setup_cpu_power8, .cpu_restore = __restore_cpu_power8, + .flush_tlb = __flush_tlb_power8, + .machine_check_early = __machine_check_early_realmode_p8, .platform = "power8", }, { /* Cell Broadband Engine */ --- linux-3.13.0.orig/arch/powerpc/kernel/crash_dump.c +++ linux-3.13.0/arch/powerpc/kernel/crash_dump.c @@ -98,17 +98,19 @@ size_t csize, unsigned long offset, int userbuf) { void *vaddr; + phys_addr_t paddr; if (!csize) return 0; csize = min_t(size_t, csize, PAGE_SIZE); + paddr = pfn << PAGE_SHIFT; - if ((min_low_pfn < pfn) && (pfn < max_pfn)) { - vaddr = __va(pfn << PAGE_SHIFT); + if (memblock_is_region_memory(paddr, csize)) { + vaddr = __va(paddr); csize = copy_oldmem_vaddr(vaddr, buf, csize, offset, userbuf); } else { - vaddr = __ioremap(pfn << PAGE_SHIFT, PAGE_SIZE, 0); + vaddr = __ioremap(paddr, PAGE_SIZE, 0); csize = copy_oldmem_vaddr(vaddr, buf, csize, offset, userbuf); iounmap(vaddr); } --- linux-3.13.0.orig/arch/powerpc/kernel/dma.c +++ linux-3.13.0/arch/powerpc/kernel/dma.c @@ -191,12 +191,10 @@ #define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) -int dma_set_mask(struct device *dev, u64 dma_mask) +int __dma_set_mask(struct device *dev, u64 dma_mask) { struct dma_map_ops *dma_ops = get_dma_ops(dev); - if (ppc_md.dma_set_mask) - return ppc_md.dma_set_mask(dev, dma_mask); if ((dma_ops != NULL) && (dma_ops->set_dma_mask != NULL)) return dma_ops->set_dma_mask(dev, dma_mask); if (!dev->dma_mask || !dma_supported(dev, dma_mask)) @@ -204,6 +202,12 @@ *dev->dma_mask = dma_mask; return 0; } +int dma_set_mask(struct device *dev, u64 dma_mask) +{ + if (ppc_md.dma_set_mask) + return ppc_md.dma_set_mask(dev, dma_mask); + return __dma_set_mask(dev, dma_mask); +} EXPORT_SYMBOL(dma_set_mask); u64 dma_get_required_mask(struct device *dev) --- linux-3.13.0.orig/arch/powerpc/kernel/eeh_driver.c +++ linux-3.13.0/arch/powerpc/kernel/eeh_driver.c @@ -626,84 +626,90 @@ { struct eeh_pe *pe, *phb_pe; struct pci_bus *bus; - struct pci_controller *hose, *tmp; + struct pci_controller *hose; unsigned long flags; - int rc = 0; + int rc; - /* - * The return value from next_error() has been classified as follows. - * It might be good to enumerate them. However, next_error() is only - * supported by PowerNV platform for now. So it would be fine to use - * integer directly: - * - * 4 - Dead IOC 3 - Dead PHB - * 2 - Fenced PHB 1 - Frozen PE - * 0 - No error found - * - */ - rc = eeh_ops->next_error(&pe); - if (rc <= 0) - return; - - switch (rc) { - case 4: - /* Mark all PHBs in dead state */ - eeh_serialize_lock(&flags); - list_for_each_entry_safe(hose, tmp, - &hose_list, list_node) { - phb_pe = eeh_phb_pe_get(hose); - if (!phb_pe) continue; - eeh_pe_state_mark(phb_pe, - EEH_PE_ISOLATED | EEH_PE_PHB_DEAD); + do { + rc = eeh_ops->next_error(&pe); + + switch (rc) { + case EEH_NEXT_ERR_DEAD_IOC: + /* Mark all PHBs in dead state */ + eeh_serialize_lock(&flags); + + /* Purge all events */ + eeh_remove_event(NULL); + + list_for_each_entry(hose, &hose_list, list_node) { + phb_pe = eeh_phb_pe_get(hose); + if (!phb_pe) continue; + + eeh_pe_state_mark(phb_pe, + EEH_PE_ISOLATED | EEH_PE_PHB_DEAD); + } + + eeh_serialize_unlock(flags); + + break; + case EEH_NEXT_ERR_FROZEN_PE: + case EEH_NEXT_ERR_FENCED_PHB: + case EEH_NEXT_ERR_DEAD_PHB: + /* Mark the PE in fenced state */ + eeh_serialize_lock(&flags); + + /* Purge all events of the PHB */ + eeh_remove_event(pe); + + if (rc == EEH_NEXT_ERR_DEAD_PHB) + eeh_pe_state_mark(pe, + EEH_PE_ISOLATED | EEH_PE_PHB_DEAD); + else + eeh_pe_state_mark(pe, + EEH_PE_ISOLATED | EEH_PE_RECOVERING); + + eeh_serialize_unlock(flags); + + break; + case EEH_NEXT_ERR_NONE: + return; + default: + pr_warn("%s: Invalid value %d from next_error()\n", + __func__, rc); + return; } - eeh_serialize_unlock(flags); - /* Purge all events */ - eeh_remove_event(NULL); - break; - case 3: - case 2: - case 1: - /* Mark the PE in fenced state */ - eeh_serialize_lock(&flags); - if (rc == 3) - eeh_pe_state_mark(pe, - EEH_PE_ISOLATED | EEH_PE_PHB_DEAD); - else - eeh_pe_state_mark(pe, - EEH_PE_ISOLATED | EEH_PE_RECOVERING); - eeh_serialize_unlock(flags); - - /* Purge all events of the PHB */ - eeh_remove_event(pe); - break; - default: - pr_err("%s: Invalid value %d from next_error()\n", - __func__, rc); - return; - } - - /* - * For fenced PHB and frozen PE, it's handled as normal - * event. We have to remove the affected PHBs for dead - * PHB and IOC - */ - if (rc == 2 || rc == 1) - eeh_handle_normal_event(pe); - else { - list_for_each_entry_safe(hose, tmp, - &hose_list, list_node) { - phb_pe = eeh_phb_pe_get(hose); - if (!phb_pe || !(phb_pe->state & EEH_PE_PHB_DEAD)) - continue; - - bus = eeh_pe_bus_get(phb_pe); - /* Notify all devices that they're about to go down. */ - eeh_pe_dev_traverse(pe, eeh_report_failure, NULL); - pcibios_remove_pci_devices(bus); + /* + * For fenced PHB and frozen PE, it's handled as normal + * event. We have to remove the affected PHBs for dead + * PHB and IOC + */ + if (rc == EEH_NEXT_ERR_FROZEN_PE || + rc == EEH_NEXT_ERR_FENCED_PHB) { + eeh_handle_normal_event(pe); + } else { + list_for_each_entry(hose, &hose_list, list_node) { + phb_pe = eeh_phb_pe_get(hose); + if (!phb_pe || + !(phb_pe->state & EEH_PE_PHB_DEAD)) + continue; + + /* Notify all devices to be down */ + bus = eeh_pe_bus_get(phb_pe); + eeh_pe_dev_traverse(pe, + eeh_report_failure, NULL); + pcibios_remove_pci_devices(bus); + } } - } + + /* + * If we have detected dead IOC, we needn't proceed + * any more since all PHBs would have been removed + */ + if (rc == EEH_NEXT_ERR_DEAD_IOC) + break; + } while (rc != EEH_NEXT_ERR_NONE); } /** --- linux-3.13.0.orig/arch/powerpc/kernel/entry_64.S +++ linux-3.13.0/arch/powerpc/kernel/entry_64.S @@ -34,6 +34,7 @@ #include #include #include +#include /* * System calls. @@ -53,6 +54,12 @@ .globl system_call_common system_call_common: +#ifdef CONFIG_PPC_TRANSACTIONAL_MEM +BEGIN_FTR_SECTION + extrdi. r10, r12, 1, (63-MSR_TS_T_LG) /* transaction active? */ + bne tabort_syscall +END_FTR_SECTION_IFSET(CPU_FTR_TM) +#endif andi. r10,r12,MSR_PR mr r10,r1 addi r1,r1,-INT_FRAME_SIZE @@ -324,6 +331,34 @@ bl .do_syscall_trace_leave b .ret_from_except +#ifdef CONFIG_PPC_TRANSACTIONAL_MEM +tabort_syscall: + /* Firstly we need to enable TM in the kernel */ + mfmsr r10 + li r13, 1 + rldimi r10, r13, MSR_TM_LG, 63-MSR_TM_LG + mtmsrd r10, 0 + + /* tabort, this dooms the transaction, nothing else */ + li r13, (TM_CAUSE_SYSCALL|TM_CAUSE_PERSISTENT) + TABORT(R13) + + /* + * Return directly to userspace. We have corrupted user register state, + * but userspace will never see that register state. Execution will + * resume after the tbegin of the aborted transaction with the + * checkpointed register state. + */ + li r13, MSR_RI + andc r10, r10, r13 + mtmsrd r10, 1 + mtspr SPRN_SRR0, r11 + mtspr SPRN_SRR1, r12 + + rfid + b . /* prevent speculative execution */ +#endif + /* Save non-volatile GPRs, if not already saved. */ _GLOBAL(save_nvgprs) ld r11,_TRAP(r1) @@ -432,12 +467,6 @@ std r24,THREAD_VRSAVE(r3) END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC) #endif /* CONFIG_ALTIVEC */ -#ifdef CONFIG_PPC64 -BEGIN_FTR_SECTION - mfspr r25,SPRN_DSCR - std r25,THREAD_DSCR(r3) -END_FTR_SECTION_IFSET(CPU_FTR_DSCR) -#endif and. r0,r0,r22 beq+ 1f andc r22,r22,r0 @@ -664,9 +693,23 @@ bl .restore_interrupts SCHEDULE_USER b .ret_from_except_lite - -2: bl .save_nvgprs +2: +#ifdef CONFIG_PPC_TRANSACTIONAL_MEM + andi. r0,r4,_TIF_USER_WORK_MASK & ~_TIF_RESTORE_TM + bne 3f /* only restore TM if nothing else to do */ + addi r3,r1,STACK_FRAME_OVERHEAD + bl .restore_tm_state + b restore +3: +#endif + bl .save_nvgprs + /* + * Use a non volatile GPR to save and restore our thread_info flags + * across the call to restore_interrupts. + */ + mr r30,r4 bl .restore_interrupts + mr r4,r30 addi r3,r1,STACK_FRAME_OVERHEAD bl .do_notify_resume b .ret_from_except --- linux-3.13.0.orig/arch/powerpc/kernel/exceptions-64e.S +++ linux-3.13.0/arch/powerpc/kernel/exceptions-64e.S @@ -309,8 +309,8 @@ EXCEPTION_STUB(0x300, hypercall) EXCEPTION_STUB(0x320, ehpriv) - .globl interrupt_end_book3e -interrupt_end_book3e: + .globl __end_interrupts +__end_interrupts: /* Critical Input Interrupt */ START_EXCEPTION(critical_input); @@ -494,7 +494,7 @@ beq+ 1f LOAD_REG_IMMEDIATE(r14,interrupt_base_book3e) - LOAD_REG_IMMEDIATE(r15,interrupt_end_book3e) + LOAD_REG_IMMEDIATE(r15,__end_interrupts) cmpld cr0,r10,r14 cmpld cr1,r10,r15 blt+ cr0,1f @@ -560,7 +560,7 @@ beq+ 1f LOAD_REG_IMMEDIATE(r14,interrupt_base_book3e) - LOAD_REG_IMMEDIATE(r15,interrupt_end_book3e) + LOAD_REG_IMMEDIATE(r15,__end_interrupts) cmpld cr0,r10,r14 cmpld cr1,r10,r15 blt+ cr0,1f @@ -1099,7 +1099,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 @@ -1350,9 +1358,17 @@ mflr r28 b 3b -_STATIC(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-3.13.0.orig/arch/powerpc/kernel/exceptions-64s.S +++ linux-3.13.0/arch/powerpc/kernel/exceptions-64s.S @@ -155,8 +155,35 @@ */ HMT_MEDIUM_PPR_DISCARD SET_SCRATCH0(r13) /* save r13 */ +#ifdef CONFIG_PPC_P7_NAP +BEGIN_FTR_SECTION + /* Running native on arch 2.06 or later, check if we are + * waking up from nap. We only handle no state loss and + * supervisor state loss. We do -not- handle hypervisor + * state loss at this time. + */ + mfspr r13,SPRN_SRR1 + rlwinm. r13,r13,47-31,30,31 + OPT_GET_SPR(r13, SPRN_CFAR, CPU_FTR_CFAR) + beq 9f + + mfspr r13,SPRN_SRR1 + rlwinm. r13,r13,47-31,30,31 + /* waking up from powersave (nap) state */ + cmpwi cr1,r13,2 + /* Total loss of HV state is fatal. let's just stay stuck here */ + OPT_GET_SPR(r13, SPRN_CFAR, CPU_FTR_CFAR) + bgt cr1,. +9: + OPT_SET_SPR(r13, SPRN_CFAR, CPU_FTR_CFAR) +END_FTR_SECTION_IFSET(CPU_FTR_HVMODE | CPU_FTR_ARCH_206) +#endif /* CONFIG_PPC_P7_NAP */ EXCEPTION_PROLOG_0(PACA_EXMC) +BEGIN_FTR_SECTION + b machine_check_pSeries_early +FTR_SECTION_ELSE b machine_check_pSeries_0 +ALT_FTR_SECTION_END_IFSET(CPU_FTR_HVMODE) . = 0x300 .globl data_access_pSeries @@ -405,6 +432,64 @@ .align 7 /* moved from 0x200 */ +machine_check_pSeries_early: +BEGIN_FTR_SECTION + EXCEPTION_PROLOG_1(PACA_EXMC, NOTEST, 0x200) + /* + * Register contents: + * R13 = PACA + * R9 = CR + * Original R9 to R13 is saved on PACA_EXMC + * + * Switch to mc_emergency stack and handle re-entrancy (though we + * currently don't test for overflow). Save MCE registers srr1, + * srr0, dar and dsisr and then set ME=1 + * + * We use paca->in_mce to check whether this is the first entry or + * nested machine check. We increment paca->in_mce to track nested + * machine checks. + * + * If this is the first entry then set stack pointer to + * paca->mc_emergency_sp, otherwise r1 is already pointing to + * stack frame on mc_emergency stack. + * + * NOTE: We are here with MSR_ME=0 (off), which means we risk a + * checkstop if we get another machine check exception before we do + * rfid with MSR_ME=1. + */ + mr r11,r1 /* Save r1 */ + lhz r10,PACA_IN_MCE(r13) + cmpwi r10,0 /* Are we in nested machine check */ + bne 0f /* Yes, we are. */ + /* First machine check entry */ + ld r1,PACAMCEMERGSP(r13) /* Use MC emergency stack */ +0: subi r1,r1,INT_FRAME_SIZE /* alloc stack frame */ + addi r10,r10,1 /* increment paca->in_mce */ + sth r10,PACA_IN_MCE(r13) + std r11,GPR1(r1) /* Save r1 on the stack. */ + std r11,0(r1) /* make stack chain pointer */ + mfspr r11,SPRN_SRR0 /* Save SRR0 */ + std r11,_NIP(r1) + mfspr r11,SPRN_SRR1 /* Save SRR1 */ + std r11,_MSR(r1) + mfspr r11,SPRN_DAR /* Save DAR */ + std r11,_DAR(r1) + mfspr r11,SPRN_DSISR /* Save DSISR */ + std r11,_DSISR(r1) + std r9,_CCR(r1) /* Save CR in stackframe */ + /* Save r9 through r13 from EXMC save area to stack frame. */ + EXCEPTION_PROLOG_COMMON_2(PACA_EXMC) + mfmsr r11 /* get MSR value */ + ori r11,r11,MSR_ME /* turn on ME bit */ + ori r11,r11,MSR_RI /* turn on RI bit */ + ld r12,PACAKBASE(r13) /* get high part of &label */ + LOAD_HANDLER(r12, machine_check_handle_early) + mtspr SPRN_SRR0,r12 + mtspr SPRN_SRR1,r11 + rfid + b . /* prevent speculative execution */ +END_FTR_SECTION_IFSET(CPU_FTR_HVMODE) + machine_check_pSeries: .globl machine_check_fwnmi machine_check_fwnmi: @@ -688,30 +773,6 @@ STD_EXCEPTION_COMMON(0x100, system_reset, .system_reset_exception) - /* - * Machine check is different because we use a different - * save area: PACA_EXMC instead of PACA_EXGEN. - */ - .align 7 - .globl machine_check_common -machine_check_common: - - mfspr r10,SPRN_DAR - std r10,PACA_EXGEN+EX_DAR(r13) - mfspr r10,SPRN_DSISR - stw r10,PACA_EXGEN+EX_DSISR(r13) - EXCEPTION_PROLOG_COMMON(0x200, PACA_EXMC) - FINISH_NAP - DISABLE_INTS - ld r3,PACA_EXGEN+EX_DAR(r13) - lwz r4,PACA_EXGEN+EX_DSISR(r13) - std r3,_DAR(r1) - std r4,_DSISR(r1) - bl .save_nvgprs - addi r3,r1,STACK_FRAME_OVERHEAD - bl .machine_check_exception - b .ret_from_except - STD_EXCEPTION_COMMON_ASYNC(0x500, hardware_interrupt, do_IRQ) STD_EXCEPTION_COMMON_ASYNC(0x900, decrementer, .timer_interrupt) STD_EXCEPTION_COMMON(0x980, hdecrementer, .hdec_interrupt) @@ -1080,6 +1141,30 @@ #endif /* __DISABLED__ */ + /* + * Machine check is different because we use a different + * save area: PACA_EXMC instead of PACA_EXGEN. + */ + .align 7 + .globl machine_check_common +machine_check_common: + + mfspr r10,SPRN_DAR + std r10,PACA_EXGEN+EX_DAR(r13) + mfspr r10,SPRN_DSISR + stw r10,PACA_EXGEN+EX_DSISR(r13) + EXCEPTION_PROLOG_COMMON(0x200, PACA_EXMC) + FINISH_NAP + DISABLE_INTS + ld r3,PACA_EXGEN+EX_DAR(r13) + lwz r4,PACA_EXGEN+EX_DSISR(r13) + std r3,_DAR(r1) + std r4,_DSISR(r1) + bl .save_nvgprs + addi r3,r1,STACK_FRAME_OVERHEAD + bl .machine_check_exception + b .ret_from_except + .align 7 .globl alignment_common alignment_common: @@ -1263,6 +1348,120 @@ #endif /* CONFIG_PPC_POWERNV */ +#define MACHINE_CHECK_HANDLER_WINDUP \ + /* Clear MSR_RI before setting SRR0 and SRR1. */\ + li r0,MSR_RI; \ + mfmsr r9; /* get MSR value */ \ + andc r9,r9,r0; \ + mtmsrd r9,1; /* Clear MSR_RI */ \ + /* Move original SRR0 and SRR1 into the respective regs */ \ + ld r9,_MSR(r1); \ + mtspr SPRN_SRR1,r9; \ + ld r3,_NIP(r1); \ + mtspr SPRN_SRR0,r3; \ + ld r9,_CTR(r1); \ + mtctr r9; \ + ld r9,_XER(r1); \ + mtxer r9; \ + ld r9,_LINK(r1); \ + mtlr r9; \ + REST_GPR(0, r1); \ + REST_8GPRS(2, r1); \ + REST_GPR(10, r1); \ + ld r11,_CCR(r1); \ + mtcr r11; \ + /* Decrement paca->in_mce. */ \ + lhz r12,PACA_IN_MCE(r13); \ + subi r12,r12,1; \ + sth r12,PACA_IN_MCE(r13); \ + REST_GPR(11, r1); \ + REST_2GPRS(12, r1); \ + /* restore original r1. */ \ + ld r1,GPR1(r1) + + /* + * Handle machine check early in real mode. We come here with + * ME=1, MMU (IR=0 and DR=0) off and using MC emergency stack. + */ + .align 7 + .globl machine_check_handle_early +machine_check_handle_early: + std r0,GPR0(r1) /* Save r0 */ + EXCEPTION_PROLOG_COMMON_3(0x200) + bl .save_nvgprs + addi r3,r1,STACK_FRAME_OVERHEAD + bl .machine_check_early + ld r12,_MSR(r1) +#ifdef CONFIG_PPC_P7_NAP + /* + * Check if thread was in power saving mode. We come here when any + * of the following is true: + * a. thread wasn't in power saving mode + * b. thread was in power saving mode with no state loss or + * supervisor state loss + * + * Go back to nap again if (b) is true. + */ + rlwinm. r11,r12,47-31,30,31 /* Was it in power saving mode? */ + beq 4f /* No, it wasn;t */ + /* Thread was in power saving mode. Go back to nap again. */ + cmpwi r11,2 + bne 3f + /* Supervisor state loss */ + li r0,1 + stb r0,PACA_NAPSTATELOST(r13) +3: bl .machine_check_queue_event + MACHINE_CHECK_HANDLER_WINDUP + GET_PACA(r13) + ld r1,PACAR1(r13) + b power7_enter_nap_mode +4: +#endif + /* + * Check if we are coming from hypervisor userspace. If yes then we + * continue in host kernel in V mode to deliver the MC event. + */ + rldicl. r11,r12,4,63 /* See if MC hit while in HV mode. */ + beq 5f + andi. r11,r12,MSR_PR /* See if coming from user. */ + bne 9f /* continue in V mode if we are. */ + +5: +#ifdef CONFIG_KVM_BOOK3S_64_HV + /* + * We are coming from kernel context. Check if we are coming from + * guest. if yes, then we can continue. We will fall through + * do_kvm_200->kvmppc_interrupt to deliver the MC event to guest. + */ + lbz r11,HSTATE_IN_GUEST(r13) + cmpwi r11,0 /* Check if coming from guest */ + bne 9f /* continue if we are. */ +#endif + /* + * At this point we are not sure about what context we come from. + * Queue up the MCE event and return from the interrupt. + * But before that, check if this is an un-recoverable exception. + * If yes, then stay on emergency stack and panic. + */ + andi. r11,r12,MSR_RI + bne 2f +1: addi r3,r1,STACK_FRAME_OVERHEAD + bl .unrecoverable_exception + b 1b +2: + /* + * Return from MC interrupt. + * Queue up the MCE event so that we can log it later, while + * returning from kernel or opal call. + */ + bl .machine_check_queue_event + MACHINE_CHECK_HANDLER_WINDUP + rfid +9: + /* Deliver the machine check to host kernel in V mode. */ + MACHINE_CHECK_HANDLER_WINDUP + b machine_check_pSeries + /* * r13 points to the PACA, r9 contains the saved CR, * r12 contain the saved SRR1, SRR0 is still ready for return --- linux-3.13.0.orig/arch/powerpc/kernel/fpu.S +++ linux-3.13.0/arch/powerpc/kernel/fpu.S @@ -81,6 +81,22 @@ #endif /* CONFIG_PPC_TRANSACTIONAL_MEM */ /* + * Enable use of the FPU, and VSX if possible, for the caller. + */ +_GLOBAL(fp_enable) + mfmsr r3 + ori r3,r3,MSR_FP +#ifdef CONFIG_VSX +BEGIN_FTR_SECTION + oris r3,r3,MSR_VSX@h +END_FTR_SECTION_IFSET(CPU_FTR_VSX) +#endif + SYNC + MTMSRD(r3) + isync /* (not necessary for arch 2.02 and later) */ + blr + +/* * Load state from memory into FP registers including FPSCR. * Assumes the caller has enabled FP in the MSR. */ --- linux-3.13.0.orig/arch/powerpc/kernel/head_64.S +++ linux-3.13.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 */ @@ -418,12 +426,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 /* @@ -438,12 +465,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 /* @@ -451,12 +478,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, __end_interrupts) + 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 @@ -475,6 +514,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-3.13.0.orig/arch/powerpc/kernel/idle_power7.S +++ linux-3.13.0/arch/powerpc/kernel/idle_power7.S @@ -84,6 +84,23 @@ std r9,_MSR(r1) std r1,PACAR1(r13) + /* + * Go to real mode to do the nap, as required by the architecture. + * Also, we need to be in real mode before setting hwthread_state, + * because as soon as we do that, another thread can switch + * the MMU context to the guest. + */ + LOAD_REG_IMMEDIATE(r5, MSR_IDLE) + li r6, MSR_RI + andc r6, r9, r6 + LOAD_REG_ADDR(r7, power7_enter_nap_mode) + mtmsrd r6, 1 /* clear RI before setting SRR0/1 */ + mtspr SPRN_SRR0, r7 + mtspr SPRN_SRR1, r5 + rfid + + .globl power7_enter_nap_mode +power7_enter_nap_mode: #ifdef CONFIG_KVM_BOOK3S_HV_POSSIBLE /* Tell KVM we're napping */ li r4,KVM_HWTHREAD_IN_NAP --- linux-3.13.0.orig/arch/powerpc/kernel/iommu.c +++ linux-3.13.0/arch/powerpc/kernel/iommu.c @@ -1088,6 +1088,14 @@ memset(tbl->it_map, 0xff, sz); iommu_clear_tces_and_put_pages(tbl, tbl->it_offset, tbl->it_size); + /* + * Disable iommu bypass, otherwise the user can DMA to all of + * our physical memory via the bypass window instead of just + * the pages that has been explicitly mapped into the iommu + */ + if (tbl->set_bypass) + tbl->set_bypass(tbl, false); + return 0; } EXPORT_SYMBOL_GPL(iommu_take_ownership); @@ -1102,6 +1110,10 @@ /* Restore bit#0 set by iommu_init_table() */ if (tbl->it_offset == 0) set_bit(0, tbl->it_map); + + /* The kernel owns the device now, we can restore the iommu bypass */ + if (tbl->set_bypass) + tbl->set_bypass(tbl, true); } EXPORT_SYMBOL_GPL(iommu_release_ownership); --- linux-3.13.0.orig/arch/powerpc/kernel/legacy_serial.c +++ linux-3.13.0/arch/powerpc/kernel/legacy_serial.c @@ -48,6 +48,9 @@ static unsigned int legacy_serial_count; static int legacy_serial_console = -1; +static const upf_t legacy_port_flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | + UPF_SHARE_IRQ | UPF_FIXED_PORT; + static unsigned int tsi_serial_in(struct uart_port *p, int offset) { unsigned int tmp; @@ -153,8 +156,6 @@ { u64 addr; const __be32 *addrp; - upf_t flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | UPF_SHARE_IRQ - | UPF_FIXED_PORT; struct device_node *tsi = of_get_parent(np); /* We only support ports that have a clock frequency properly @@ -185,9 +186,11 @@ * IO port value. It will be fixed up later along with the irq */ if (tsi && !strcmp(tsi->type, "tsi-bridge")) - return add_legacy_port(np, -1, UPIO_TSI, addr, addr, NO_IRQ, flags, 0); + return add_legacy_port(np, -1, UPIO_TSI, addr, addr, + NO_IRQ, legacy_port_flags, 0); else - return add_legacy_port(np, -1, UPIO_MEM, addr, addr, NO_IRQ, flags, 0); + return add_legacy_port(np, -1, UPIO_MEM, addr, addr, + NO_IRQ, legacy_port_flags, 0); } static int __init add_legacy_isa_port(struct device_node *np, @@ -233,7 +236,7 @@ /* Add port, irq will be dealt with later */ return add_legacy_port(np, index, UPIO_PORT, be32_to_cpu(reg[1]), - taddr, NO_IRQ, UPF_BOOT_AUTOCONF, 0); + taddr, NO_IRQ, legacy_port_flags, 0); } @@ -306,7 +309,7 @@ * IO port value. It will be fixed up later along with the irq */ return add_legacy_port(np, index, iotype, base, addr, NO_IRQ, - UPF_BOOT_AUTOCONF, np != pci_dev); + legacy_port_flags, np != pci_dev); } #endif --- linux-3.13.0.orig/arch/powerpc/kernel/machine_kexec.c +++ linux-3.13.0/arch/powerpc/kernel/machine_kexec.c @@ -196,7 +196,9 @@ /* Values we need to export to the second kernel via the device tree. */ static phys_addr_t kernel_end; +static phys_addr_t crashk_base; static phys_addr_t crashk_size; +static unsigned long long mem_limit; static struct property kernel_end_prop = { .name = "linux,kernel-end", @@ -207,7 +209,7 @@ static struct property crashk_base_prop = { .name = "linux,crashkernel-base", .length = sizeof(phys_addr_t), - .value = &crashk_res.start, + .value = &crashk_base }; static struct property crashk_size_prop = { @@ -219,9 +221,11 @@ static struct property memory_limit_prop = { .name = "linux,memory-limit", .length = sizeof(unsigned long long), - .value = &memory_limit, + .value = &mem_limit, }; +#define cpu_to_be_ulong __PASTE(cpu_to_be, BITS_PER_LONG) + static void __init export_crashk_values(struct device_node *node) { struct property *prop; @@ -237,8 +241,9 @@ of_remove_property(node, prop); if (crashk_res.start != 0) { + crashk_base = cpu_to_be_ulong(crashk_res.start), of_add_property(node, &crashk_base_prop); - crashk_size = resource_size(&crashk_res); + crashk_size = cpu_to_be_ulong(resource_size(&crashk_res)); of_add_property(node, &crashk_size_prop); } @@ -246,6 +251,7 @@ * memory_limit is required by the kexec-tools to limit the * crash regions to the actual memory used. */ + mem_limit = cpu_to_be_ulong(memory_limit); of_update_property(node, &memory_limit_prop); } @@ -264,7 +270,7 @@ of_remove_property(node, prop); /* information needed by userspace when using default_machine_kexec */ - kernel_end = __pa(_end); + kernel_end = cpu_to_be_ulong(__pa(_end)); of_add_property(node, &kernel_end_prop); export_crashk_values(node); --- linux-3.13.0.orig/arch/powerpc/kernel/machine_kexec_64.c +++ linux-3.13.0/arch/powerpc/kernel/machine_kexec_64.c @@ -30,72 +30,6 @@ #include #include -int default_machine_kexec_prepare(struct kimage *image) -{ - int i; - unsigned long begin, end; /* limits of segment */ - unsigned long low, high; /* limits of blocked memory range */ - struct device_node *node; - const unsigned long *basep; - const unsigned int *sizep; - - if (!ppc_md.hpte_clear_all) - return -ENOENT; - - /* - * Since we use the kernel fault handlers and paging code to - * handle the virtual mode, we must make sure no destination - * overlaps kernel static data or bss. - */ - for (i = 0; i < image->nr_segments; i++) - if (image->segment[i].mem < __pa(_end)) - return -ETXTBSY; - - /* - * For non-LPAR, we absolutely can not overwrite the mmu hash - * table, since we are still using the bolted entries in it to - * do the copy. Check that here. - * - * It is safe if the end is below the start of the blocked - * region (end <= low), or if the beginning is after the - * end of the blocked region (begin >= high). Use the - * boolean identity !(a || b) === (!a && !b). - */ - if (htab_address) { - low = __pa(htab_address); - high = low + htab_size_bytes; - - for (i = 0; i < image->nr_segments; i++) { - begin = image->segment[i].mem; - end = begin + image->segment[i].memsz; - - if ((begin < high) && (end > low)) - return -ETXTBSY; - } - } - - /* We also should not overwrite the tce tables */ - for_each_node_by_type(node, "pci") { - basep = of_get_property(node, "linux,tce-base", NULL); - sizep = of_get_property(node, "linux,tce-size", NULL); - if (basep == NULL || sizep == NULL) - continue; - - low = *basep; - high = low + (*sizep); - - for (i = 0; i < image->nr_segments; i++) { - begin = image->segment[i].mem; - end = begin + image->segment[i].memsz; - - if ((begin < high) && (end > low)) - return -ETXTBSY; - } - } - - return 0; -} - #define IND_FLAGS (IND_DESTINATION | IND_INDIRECTION | IND_DONE | IND_SOURCE) static void copy_segments(unsigned long ind) @@ -237,7 +171,7 @@ if (!cpu_online(cpu)) { printk(KERN_INFO "kexec: Waking offline cpu %d.\n", cpu); - cpu_up(cpu); + WARN_ON(cpu_up(cpu)); } } } @@ -367,8 +301,90 @@ /* NOTREACHED */ } +#ifdef CONFIG_PPC_BOOK3E +int default_machine_kexec_prepare(struct kimage *image) +{ + int i; + /* + * Since we use the kernel fault handlers and paging code to + * handle the virtual mode, we must make sure no destination + * overlaps kernel static data or bss. + */ + for (i = 0; i < image->nr_segments; i++) + if (image->segment[i].mem < __pa(_end)) + return -ETXTBSY; + return 0; +} +#else /* CONFIG_PPC_BOOK3E */ +int default_machine_kexec_prepare(struct kimage *image) +{ + int i; + unsigned long begin, end; /* limits of segment */ + unsigned long low, high; /* limits of blocked memory range */ + struct device_node *node; + const unsigned long *basep; + const unsigned int *sizep; + + if (!ppc_md.hpte_clear_all) + return -ENOENT; + + /* + * Since we use the kernel fault handlers and paging code to + * handle the virtual mode, we must make sure no destination + * overlaps kernel static data or bss. + */ + for (i = 0; i < image->nr_segments; i++) + if (image->segment[i].mem < __pa(_end)) + return -ETXTBSY; + + /* + * For non-LPAR, we absolutely can not overwrite the mmu hash + * table, since we are still using the bolted entries in it to + * do the copy. Check that here. + * + * It is safe if the end is below the start of the blocked + * region (end <= low), or if the beginning is after the + * end of the blocked region (begin >= high). Use the + * boolean identity !(a || b) === (!a && !b). + */ + if (htab_address) { + low = __pa(htab_address); + high = low + htab_size_bytes; + + for (i = 0; i < image->nr_segments; i++) { + begin = image->segment[i].mem; + end = begin + image->segment[i].memsz; + + if ((begin < high) && (end > low)) + return -ETXTBSY; + } + } + + /* We also should not overwrite the tce tables */ + for_each_node_by_type(node, "pci") { + basep = of_get_property(node, "linux,tce-base", NULL); + sizep = of_get_property(node, "linux,tce-size", NULL); + if (basep == NULL || sizep == NULL) + continue; + + low = *basep; + high = low + (*sizep); + + for (i = 0; i < image->nr_segments; i++) { + begin = image->segment[i].mem; + end = begin + image->segment[i].memsz; + + if ((begin < high) && (end > low)) + return -ETXTBSY; + } + } + + return 0; +} + /* Values we need to export to the second kernel via the device tree. */ static unsigned long htab_base; +static unsigned long htab_size; static struct property htab_base_prop = { .name = "linux,htab-base", @@ -379,7 +395,7 @@ static struct property htab_size_prop = { .name = "linux,htab-size", .length = sizeof(unsigned long), - .value = &htab_size_bytes, + .value = &htab_size, }; static int __init export_htab_values(void) @@ -403,11 +419,13 @@ if (prop) of_remove_property(node, prop); - htab_base = __pa(htab_address); + htab_base = cpu_to_be64(__pa(htab_address)); of_add_property(node, &htab_base_prop); + htab_size = cpu_to_be64(htab_size_bytes); of_add_property(node, &htab_size_prop); of_node_put(node); return 0; } late_initcall(export_htab_values); +#endif /* !CONFIG_PPC_BOOK3E */ --- linux-3.13.0.orig/arch/powerpc/kernel/mce.c +++ linux-3.13.0/arch/powerpc/kernel/mce.c @@ -0,0 +1,352 @@ +/* + * Machine check exception handling. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * Copyright 2013 IBM Corporation + * Author: Mahesh Salgaonkar + */ + +#undef DEBUG +#define pr_fmt(fmt) "mce: " fmt + +#include +#include +#include +#include +#include +#include + +static DEFINE_PER_CPU(int, mce_nest_count); +static DEFINE_PER_CPU(struct machine_check_event[MAX_MC_EVT], mce_event); + +/* Queue for delayed MCE events. */ +static DEFINE_PER_CPU(int, mce_queue_count); +static DEFINE_PER_CPU(struct machine_check_event[MAX_MC_EVT], mce_event_queue); + +static void machine_check_process_queued_event(struct irq_work *work); +struct irq_work mce_event_process_work = { + .func = machine_check_process_queued_event, +}; + +static void mce_set_error_info(struct machine_check_event *mce, + struct mce_error_info *mce_err) +{ + mce->error_type = mce_err->error_type; + switch (mce_err->error_type) { + case MCE_ERROR_TYPE_UE: + mce->u.ue_error.ue_error_type = mce_err->u.ue_error_type; + break; + case MCE_ERROR_TYPE_SLB: + mce->u.slb_error.slb_error_type = mce_err->u.slb_error_type; + break; + case MCE_ERROR_TYPE_ERAT: + mce->u.erat_error.erat_error_type = mce_err->u.erat_error_type; + break; + case MCE_ERROR_TYPE_TLB: + mce->u.tlb_error.tlb_error_type = mce_err->u.tlb_error_type; + break; + case MCE_ERROR_TYPE_UNKNOWN: + default: + break; + } +} + +/* + * Decode and save high level MCE information into per cpu buffer which + * is an array of machine_check_event structure. + */ +void save_mce_event(struct pt_regs *regs, long handled, + struct mce_error_info *mce_err, + uint64_t nip, uint64_t addr) +{ + uint64_t srr1; + int index = __get_cpu_var(mce_nest_count)++; + struct machine_check_event *mce = &__get_cpu_var(mce_event[index]); + + /* + * Return if we don't have enough space to log mce event. + * mce_nest_count may go beyond MAX_MC_EVT but that's ok, + * the check below will stop buffer overrun. + */ + if (index >= MAX_MC_EVT) + return; + + /* Populate generic machine check info */ + mce->version = MCE_V1; + mce->srr0 = nip; + mce->srr1 = regs->msr; + mce->gpr3 = regs->gpr[3]; + mce->in_use = 1; + + mce->initiator = MCE_INITIATOR_CPU; + if (handled) + mce->disposition = MCE_DISPOSITION_RECOVERED; + else + mce->disposition = MCE_DISPOSITION_NOT_RECOVERED; + mce->severity = MCE_SEV_ERROR_SYNC; + + srr1 = regs->msr; + + /* + * Populate the mce error_type and type-specific error_type. + */ + mce_set_error_info(mce, mce_err); + + if (!addr) + return; + + if (mce->error_type == MCE_ERROR_TYPE_TLB) { + mce->u.tlb_error.effective_address_provided = true; + mce->u.tlb_error.effective_address = addr; + } else if (mce->error_type == MCE_ERROR_TYPE_SLB) { + mce->u.slb_error.effective_address_provided = true; + mce->u.slb_error.effective_address = addr; + } else if (mce->error_type == MCE_ERROR_TYPE_ERAT) { + mce->u.erat_error.effective_address_provided = true; + mce->u.erat_error.effective_address = addr; + } else if (mce->error_type == MCE_ERROR_TYPE_UE) { + mce->u.ue_error.effective_address_provided = true; + mce->u.ue_error.effective_address = addr; + } + return; +} + +/* + * get_mce_event: + * mce Pointer to machine_check_event structure to be filled. + * release Flag to indicate whether to free the event slot or not. + * 0 <= do not release the mce event. Caller will invoke + * release_mce_event() once event has been consumed. + * 1 <= release the slot. + * + * return 1 = success + * 0 = failure + * + * get_mce_event() will be called by platform specific machine check + * handle routine and in KVM. + * When we call get_mce_event(), we are still in interrupt context and + * preemption will not be scheduled until ret_from_expect() routine + * is called. + */ +int get_mce_event(struct machine_check_event *mce, bool release) +{ + int index = __get_cpu_var(mce_nest_count) - 1; + struct machine_check_event *mc_evt; + int ret = 0; + + /* Sanity check */ + if (index < 0) + return ret; + + /* Check if we have MCE info to process. */ + if (index < MAX_MC_EVT) { + mc_evt = &__get_cpu_var(mce_event[index]); + /* Copy the event structure and release the original */ + if (mce) + *mce = *mc_evt; + if (release) + mc_evt->in_use = 0; + ret = 1; + } + /* Decrement the count to free the slot. */ + if (release) + __get_cpu_var(mce_nest_count)--; + + return ret; +} + +void release_mce_event(void) +{ + get_mce_event(NULL, true); +} + +/* + * Queue up the MCE event which then can be handled later. + */ +void machine_check_queue_event(void) +{ + int index; + struct machine_check_event evt; + + if (!get_mce_event(&evt, MCE_EVENT_RELEASE)) + return; + + index = __get_cpu_var(mce_queue_count)++; + /* If queue is full, just return for now. */ + if (index >= MAX_MC_EVT) { + __get_cpu_var(mce_queue_count)--; + return; + } + __get_cpu_var(mce_event_queue[index]) = evt; + + /* Queue irq work to process this event later. */ + irq_work_queue(&mce_event_process_work); +} + +/* + * process pending MCE event from the mce event queue. This function will be + * called during syscall exit. + */ +static void machine_check_process_queued_event(struct irq_work *work) +{ + int index; + + /* + * For now just print it to console. + * TODO: log this error event to FSP or nvram. + */ + while (__get_cpu_var(mce_queue_count) > 0) { + index = __get_cpu_var(mce_queue_count) - 1; + machine_check_print_event_info( + &__get_cpu_var(mce_event_queue[index])); + __get_cpu_var(mce_queue_count)--; + } +} + +void machine_check_print_event_info(struct machine_check_event *evt) +{ + const char *level, *sevstr, *subtype; + static const char *mc_ue_types[] = { + "Indeterminate", + "Instruction fetch", + "Page table walk ifetch", + "Load/Store", + "Page table walk Load/Store", + }; + static const char *mc_slb_types[] = { + "Indeterminate", + "Parity", + "Multihit", + }; + static const char *mc_erat_types[] = { + "Indeterminate", + "Parity", + "Multihit", + }; + static const char *mc_tlb_types[] = { + "Indeterminate", + "Parity", + "Multihit", + }; + + /* Print things out */ + if (evt->version != MCE_V1) { + pr_err("Machine Check Exception, Unknown event version %d !\n", + evt->version); + return; + } + switch (evt->severity) { + case MCE_SEV_NO_ERROR: + level = KERN_INFO; + sevstr = "Harmless"; + break; + case MCE_SEV_WARNING: + level = KERN_WARNING; + sevstr = ""; + break; + case MCE_SEV_ERROR_SYNC: + level = KERN_ERR; + sevstr = "Severe"; + break; + case MCE_SEV_FATAL: + default: + level = KERN_ERR; + sevstr = "Fatal"; + break; + } + + printk("%s%s Machine check interrupt [%s]\n", level, sevstr, + evt->disposition == MCE_DISPOSITION_RECOVERED ? + "Recovered" : "[Not recovered"); + printk("%s Initiator: %s\n", level, + evt->initiator == MCE_INITIATOR_CPU ? "CPU" : "Unknown"); + switch (evt->error_type) { + case MCE_ERROR_TYPE_UE: + subtype = evt->u.ue_error.ue_error_type < + ARRAY_SIZE(mc_ue_types) ? + mc_ue_types[evt->u.ue_error.ue_error_type] + : "Unknown"; + printk("%s Error type: UE [%s]\n", level, subtype); + if (evt->u.ue_error.effective_address_provided) + printk("%s Effective address: %016llx\n", + level, evt->u.ue_error.effective_address); + if (evt->u.ue_error.physical_address_provided) + printk("%s Physial address: %016llx\n", + level, evt->u.ue_error.physical_address); + break; + case MCE_ERROR_TYPE_SLB: + subtype = evt->u.slb_error.slb_error_type < + ARRAY_SIZE(mc_slb_types) ? + mc_slb_types[evt->u.slb_error.slb_error_type] + : "Unknown"; + printk("%s Error type: SLB [%s]\n", level, subtype); + if (evt->u.slb_error.effective_address_provided) + printk("%s Effective address: %016llx\n", + level, evt->u.slb_error.effective_address); + break; + case MCE_ERROR_TYPE_ERAT: + subtype = evt->u.erat_error.erat_error_type < + ARRAY_SIZE(mc_erat_types) ? + mc_erat_types[evt->u.erat_error.erat_error_type] + : "Unknown"; + printk("%s Error type: ERAT [%s]\n", level, subtype); + if (evt->u.erat_error.effective_address_provided) + printk("%s Effective address: %016llx\n", + level, evt->u.erat_error.effective_address); + break; + case MCE_ERROR_TYPE_TLB: + subtype = evt->u.tlb_error.tlb_error_type < + ARRAY_SIZE(mc_tlb_types) ? + mc_tlb_types[evt->u.tlb_error.tlb_error_type] + : "Unknown"; + printk("%s Error type: TLB [%s]\n", level, subtype); + if (evt->u.tlb_error.effective_address_provided) + printk("%s Effective address: %016llx\n", + level, evt->u.tlb_error.effective_address); + break; + default: + case MCE_ERROR_TYPE_UNKNOWN: + printk("%s Error type: Unknown\n", level); + break; + } +} + +uint64_t get_mce_fault_addr(struct machine_check_event *evt) +{ + switch (evt->error_type) { + case MCE_ERROR_TYPE_UE: + if (evt->u.ue_error.effective_address_provided) + return evt->u.ue_error.effective_address; + break; + case MCE_ERROR_TYPE_SLB: + if (evt->u.slb_error.effective_address_provided) + return evt->u.slb_error.effective_address; + break; + case MCE_ERROR_TYPE_ERAT: + if (evt->u.erat_error.effective_address_provided) + return evt->u.erat_error.effective_address; + break; + case MCE_ERROR_TYPE_TLB: + if (evt->u.tlb_error.effective_address_provided) + return evt->u.tlb_error.effective_address; + break; + default: + case MCE_ERROR_TYPE_UNKNOWN: + break; + } + return 0; +} +EXPORT_SYMBOL(get_mce_fault_addr); --- linux-3.13.0.orig/arch/powerpc/kernel/mce_power.c +++ linux-3.13.0/arch/powerpc/kernel/mce_power.c @@ -0,0 +1,313 @@ +/* + * Machine check exception handling CPU-side for power7 and power8 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * Copyright 2013 IBM Corporation + * Author: Mahesh Salgaonkar + */ + +#undef DEBUG +#define pr_fmt(fmt) "mce_power: " fmt + +#include +#include +#include +#include +#include + +/* flush SLBs and reload */ +static void flush_and_reload_slb(void) +{ + struct slb_shadow *slb; + unsigned long i, n; + + /* Invalidate all SLBs */ + asm volatile("slbmte %0,%0; slbia" : : "r" (0)); + +#ifdef CONFIG_KVM_BOOK3S_HANDLER + /* + * If machine check is hit when in guest or in transition, we will + * only flush the SLBs and continue. + */ + if (get_paca()->kvm_hstate.in_guest) + return; +#endif + + /* For host kernel, reload the SLBs from shadow SLB buffer. */ + slb = get_slb_shadow(); + if (!slb) + return; + + n = min_t(u32, be32_to_cpu(slb->persistent), SLB_MIN_SIZE); + + /* Load up the SLB entries from shadow SLB */ + for (i = 0; i < n; i++) { + unsigned long rb = be64_to_cpu(slb->save_area[i].esid); + unsigned long rs = be64_to_cpu(slb->save_area[i].vsid); + + rb = (rb & ~0xFFFul) | i; + asm volatile("slbmte %0,%1" : : "r" (rs), "r" (rb)); + } +} + +static long mce_handle_derror(uint64_t dsisr, uint64_t slb_error_bits) +{ + long handled = 1; + + /* + * flush and reload SLBs for SLB errors and flush TLBs for TLB errors. + * reset the error bits whenever we handle them so that at the end + * we can check whether we handled all of them or not. + * */ + if (dsisr & slb_error_bits) { + flush_and_reload_slb(); + /* reset error bits */ + dsisr &= ~(slb_error_bits); + } + if (dsisr & P7_DSISR_MC_TLB_MULTIHIT_MFTLB) { + if (cur_cpu_spec && cur_cpu_spec->flush_tlb) + cur_cpu_spec->flush_tlb(TLBIEL_INVAL_PAGE); + /* reset error bits */ + dsisr &= ~P7_DSISR_MC_TLB_MULTIHIT_MFTLB; + } + /* Any other errors we don't understand? */ + if (dsisr & 0xffffffffUL) + handled = 0; + + return handled; +} + +static long mce_handle_derror_p7(uint64_t dsisr) +{ + return mce_handle_derror(dsisr, P7_DSISR_MC_SLB_ERRORS); +} + +static long mce_handle_common_ierror(uint64_t srr1) +{ + long handled = 0; + + switch (P7_SRR1_MC_IFETCH(srr1)) { + case 0: + break; + case P7_SRR1_MC_IFETCH_SLB_PARITY: + case P7_SRR1_MC_IFETCH_SLB_MULTIHIT: + /* flush and reload SLBs for SLB errors. */ + flush_and_reload_slb(); + handled = 1; + break; + case P7_SRR1_MC_IFETCH_TLB_MULTIHIT: + if (cur_cpu_spec && cur_cpu_spec->flush_tlb) { + cur_cpu_spec->flush_tlb(TLBIEL_INVAL_PAGE); + handled = 1; + } + break; + default: + break; + } + + return handled; +} + +static long mce_handle_ierror_p7(uint64_t srr1) +{ + long handled = 0; + + handled = mce_handle_common_ierror(srr1); + + if (P7_SRR1_MC_IFETCH(srr1) == P7_SRR1_MC_IFETCH_SLB_BOTH) { + flush_and_reload_slb(); + handled = 1; + } + return handled; +} + +static void mce_get_common_ierror(struct mce_error_info *mce_err, uint64_t srr1) +{ + switch (P7_SRR1_MC_IFETCH(srr1)) { + case P7_SRR1_MC_IFETCH_SLB_PARITY: + mce_err->error_type = MCE_ERROR_TYPE_SLB; + mce_err->u.slb_error_type = MCE_SLB_ERROR_PARITY; + break; + case P7_SRR1_MC_IFETCH_SLB_MULTIHIT: + mce_err->error_type = MCE_ERROR_TYPE_SLB; + mce_err->u.slb_error_type = MCE_SLB_ERROR_MULTIHIT; + break; + case P7_SRR1_MC_IFETCH_TLB_MULTIHIT: + mce_err->error_type = MCE_ERROR_TYPE_TLB; + mce_err->u.tlb_error_type = MCE_TLB_ERROR_MULTIHIT; + break; + case P7_SRR1_MC_IFETCH_UE: + case P7_SRR1_MC_IFETCH_UE_IFU_INTERNAL: + mce_err->error_type = MCE_ERROR_TYPE_UE; + mce_err->u.ue_error_type = MCE_UE_ERROR_IFETCH; + break; + case P7_SRR1_MC_IFETCH_UE_TLB_RELOAD: + mce_err->error_type = MCE_ERROR_TYPE_UE; + mce_err->u.ue_error_type = + MCE_UE_ERROR_PAGE_TABLE_WALK_IFETCH; + break; + } +} + +static void mce_get_ierror_p7(struct mce_error_info *mce_err, uint64_t srr1) +{ + mce_get_common_ierror(mce_err, srr1); + if (P7_SRR1_MC_IFETCH(srr1) == P7_SRR1_MC_IFETCH_SLB_BOTH) { + mce_err->error_type = MCE_ERROR_TYPE_SLB; + mce_err->u.slb_error_type = MCE_SLB_ERROR_INDETERMINATE; + } +} + +static void mce_get_derror_p7(struct mce_error_info *mce_err, uint64_t dsisr) +{ + if (dsisr & P7_DSISR_MC_UE) { + mce_err->error_type = MCE_ERROR_TYPE_UE; + mce_err->u.ue_error_type = MCE_UE_ERROR_LOAD_STORE; + } else if (dsisr & P7_DSISR_MC_UE_TABLEWALK) { + mce_err->error_type = MCE_ERROR_TYPE_UE; + mce_err->u.ue_error_type = + MCE_UE_ERROR_PAGE_TABLE_WALK_LOAD_STORE; + } else if (dsisr & P7_DSISR_MC_ERAT_MULTIHIT) { + mce_err->error_type = MCE_ERROR_TYPE_ERAT; + mce_err->u.erat_error_type = MCE_ERAT_ERROR_MULTIHIT; + } else if (dsisr & P7_DSISR_MC_SLB_MULTIHIT) { + mce_err->error_type = MCE_ERROR_TYPE_SLB; + mce_err->u.slb_error_type = MCE_SLB_ERROR_MULTIHIT; + } else if (dsisr & P7_DSISR_MC_SLB_PARITY_MFSLB) { + mce_err->error_type = MCE_ERROR_TYPE_SLB; + mce_err->u.slb_error_type = MCE_SLB_ERROR_PARITY; + } else if (dsisr & P7_DSISR_MC_TLB_MULTIHIT_MFTLB) { + mce_err->error_type = MCE_ERROR_TYPE_TLB; + mce_err->u.tlb_error_type = MCE_TLB_ERROR_MULTIHIT; + } else if (dsisr & P7_DSISR_MC_SLB_MULTIHIT_PARITY) { + mce_err->error_type = MCE_ERROR_TYPE_SLB; + mce_err->u.slb_error_type = MCE_SLB_ERROR_INDETERMINATE; + } +} + +static long mce_handle_ue_error(struct pt_regs *regs) +{ + long handled = 0; + + /* + * On specific SCOM read via MMIO we may get a machine check + * exception with SRR0 pointing inside opal. If that is the + * case OPAL may have recovery address to re-read SCOM data in + * different way and hence we can recover from this MC. + */ + + if (ppc_md.mce_check_early_recovery) { + if (ppc_md.mce_check_early_recovery(regs)) + handled = 1; + } + return handled; +} + +long __machine_check_early_realmode_p7(struct pt_regs *regs) +{ + uint64_t srr1, nip, addr; + long handled = 1; + struct mce_error_info mce_error_info = { 0 }; + + srr1 = regs->msr; + nip = regs->nip; + + /* + * Handle memory errors depending whether this was a load/store or + * ifetch exception. Also, populate the mce error_type and + * type-specific error_type from either SRR1 or DSISR, depending + * whether this was a load/store or ifetch exception + */ + if (P7_SRR1_MC_LOADSTORE(srr1)) { + handled = mce_handle_derror_p7(regs->dsisr); + mce_get_derror_p7(&mce_error_info, regs->dsisr); + addr = regs->dar; + } else { + handled = mce_handle_ierror_p7(srr1); + mce_get_ierror_p7(&mce_error_info, srr1); + addr = regs->nip; + } + + /* Handle UE error. */ + if (mce_error_info.error_type == MCE_ERROR_TYPE_UE) + handled = mce_handle_ue_error(regs); + + save_mce_event(regs, handled, &mce_error_info, nip, addr); + return handled; +} + +static void mce_get_ierror_p8(struct mce_error_info *mce_err, uint64_t srr1) +{ + mce_get_common_ierror(mce_err, srr1); + if (P7_SRR1_MC_IFETCH(srr1) == P8_SRR1_MC_IFETCH_ERAT_MULTIHIT) { + mce_err->error_type = MCE_ERROR_TYPE_ERAT; + mce_err->u.erat_error_type = MCE_ERAT_ERROR_MULTIHIT; + } +} + +static void mce_get_derror_p8(struct mce_error_info *mce_err, uint64_t dsisr) +{ + mce_get_derror_p7(mce_err, dsisr); + if (dsisr & P8_DSISR_MC_ERAT_MULTIHIT_SEC) { + mce_err->error_type = MCE_ERROR_TYPE_ERAT; + mce_err->u.erat_error_type = MCE_ERAT_ERROR_MULTIHIT; + } +} + +static long mce_handle_ierror_p8(uint64_t srr1) +{ + long handled = 0; + + handled = mce_handle_common_ierror(srr1); + + if (P7_SRR1_MC_IFETCH(srr1) == P8_SRR1_MC_IFETCH_ERAT_MULTIHIT) { + flush_and_reload_slb(); + handled = 1; + } + return handled; +} + +static long mce_handle_derror_p8(uint64_t dsisr) +{ + return mce_handle_derror(dsisr, P8_DSISR_MC_SLB_ERRORS); +} + +long __machine_check_early_realmode_p8(struct pt_regs *regs) +{ + uint64_t srr1, nip, addr; + long handled = 1; + struct mce_error_info mce_error_info = { 0 }; + + srr1 = regs->msr; + nip = regs->nip; + + if (P7_SRR1_MC_LOADSTORE(srr1)) { + handled = mce_handle_derror_p8(regs->dsisr); + mce_get_derror_p8(&mce_error_info, regs->dsisr); + addr = regs->dar; + } else { + handled = mce_handle_ierror_p8(srr1); + mce_get_ierror_p8(&mce_error_info, srr1); + addr = regs->nip; + } + + /* Handle UE error. */ + if (mce_error_info.error_type == MCE_ERROR_TYPE_UE) + handled = mce_handle_ue_error(regs); + + save_mce_event(regs, handled, &mce_error_info, nip, addr); + return handled; +} --- linux-3.13.0.orig/arch/powerpc/kernel/misc_32.S +++ linux-3.13.0/arch/powerpc/kernel/misc_32.S @@ -57,11 +57,14 @@ mtlr r0 blr +/* + * void call_do_irq(struct pt_regs *regs, struct thread_info *irqtp); + */ _GLOBAL(call_do_irq) mflr r0 stw r0,4(r1) lwz r10,THREAD+KSP_LIMIT(r2) - addi r11,r3,THREAD_INFO_GAP + addi r11,r4,THREAD_INFO_GAP stwu r1,THREAD_SIZE-STACK_FRAME_OVERHEAD(r4) mr r1,r4 stw r10,8(r1) --- linux-3.13.0.orig/arch/powerpc/kernel/misc_64.S +++ linux-3.13.0/arch/powerpc/kernel/misc_64.S @@ -481,6 +481,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) * @@ -494,6 +537,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 @@ -510,6 +557,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 */ @@ -521,7 +569,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()) @@ -564,9 +615,15 @@ lhz r25,PACAHWCPUID(r13) /* get our phys cpu from paca */ /* disable interrupts, we are overwriting kernel data next */ +#ifndef CONFIG_PPC_BOOK3E mfmsr r3 rlwinm r3,r3,0,17,15 mtmsrd r3,1 +#else + wrteei 0 + /* Create a 1:1 mapping. */ + bl kexec_create_tlb +#endif /* copy dest pages, flush whole dest image */ mr r3,r29 @@ -583,15 +640,23 @@ 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 stw r6,kexec_flag-1b(5) +#ifndef CONFIG_PPC_BOOK3E /* clear out hardware hash page table and tlb */ ld r5,0(r27) /* deref function descriptor */ mtctr r5 bctrl /* ppc_md.hpte_clear_all(void); */ +#endif /* * kexec image calling is: --- linux-3.13.0.orig/arch/powerpc/kernel/module_64.c +++ linux-3.13.0/arch/powerpc/kernel/module_64.c @@ -202,7 +202,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++; } } } @@ -474,6 +474,33 @@ *location = value - (unsigned long)location; 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; + default: printk("%s: Unknown ADD relocation: %lu\n", me->name, --- linux-3.13.0.orig/arch/powerpc/kernel/pci-common.c +++ linux-3.13.0/arch/powerpc/kernel/pci-common.c @@ -101,6 +101,42 @@ } /* + * This function is used to call pcibios_free_controller() + * in a deferred manner: a callback from the PCI subsystem. + * + * _*DO NOT*_ call pcibios_free_controller() explicitly if + * this is used (or it may access an invalid *phb pointer). + * + * The callback occurs when all references to the root bus + * are dropped (e.g., child buses/devices and their users). + * + * It's called as .release_fn() of 'struct pci_host_bridge' + * which is associated with the 'struct pci_controller.bus' + * (root bus) - it expects .release_data to hold a pointer + * to 'struct pci_controller'. + * + * In order to use it, register .release_fn()/release_data + * like this: + * + * pci_set_host_bridge_release(bridge, + * pcibios_free_controller_deferred + * (void *) phb); + * + * e.g. in the pcibios_root_bridge_prepare() callback from + * pci_create_root_bus(). + */ +void pcibios_free_controller_deferred(struct pci_host_bridge *bridge) +{ + struct pci_controller *phb = (struct pci_controller *) + bridge->release_data; + + pr_debug("domain %d, dynamic %d\n", phb->global_number, phb->is_dynamic); + + pcibios_free_controller(phb); +} +EXPORT_SYMBOL_GPL(pcibios_free_controller_deferred); + +/* * The function is used to return the minimal alignment * for memory or I/O windows of the associated P2P bridge. * By default, 4KiB alignment for I/O windows and 1MiB for @@ -1483,9 +1519,15 @@ return pci_enable_resources(dev, mask); } +/* 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, --- linux-3.13.0.orig/arch/powerpc/kernel/process.c +++ linux-3.13.0/arch/powerpc/kernel/process.c @@ -74,6 +74,48 @@ struct task_struct *last_task_used_spe = NULL; #endif +#ifdef CONFIG_PPC_TRANSACTIONAL_MEM +void giveup_fpu_maybe_transactional(struct task_struct *tsk) +{ + /* + * If we are saving the current thread's registers, and the + * thread is in a transactional state, set the TIF_RESTORE_TM + * bit so that we know to restore the registers before + * returning to userspace. + */ + if (tsk == current && tsk->thread.regs && + MSR_TM_ACTIVE(tsk->thread.regs->msr) && + !test_thread_flag(TIF_RESTORE_TM)) { + tsk->thread.tm_orig_msr = tsk->thread.regs->msr; + set_thread_flag(TIF_RESTORE_TM); + } + + giveup_fpu(tsk); +} + +void giveup_altivec_maybe_transactional(struct task_struct *tsk) +{ + /* + * If we are saving the current thread's registers, and the + * thread is in a transactional state, set the TIF_RESTORE_TM + * bit so that we know to restore the registers before + * returning to userspace. + */ + if (tsk == current && tsk->thread.regs && + MSR_TM_ACTIVE(tsk->thread.regs->msr) && + !test_thread_flag(TIF_RESTORE_TM)) { + tsk->thread.tm_orig_msr = tsk->thread.regs->msr; + set_thread_flag(TIF_RESTORE_TM); + } + + giveup_altivec(tsk); +} + +#else +#define giveup_fpu_maybe_transactional(tsk) giveup_fpu(tsk) +#define giveup_altivec_maybe_transactional(tsk) giveup_altivec(tsk) +#endif /* CONFIG_PPC_TRANSACTIONAL_MEM */ + #ifdef CONFIG_PPC_FPU /* * Make sure the floating-point register state in the @@ -102,13 +144,13 @@ */ BUG_ON(tsk != current); #endif - giveup_fpu(tsk); + giveup_fpu_maybe_transactional(tsk); } preempt_enable(); } } EXPORT_SYMBOL_GPL(flush_fp_to_thread); -#endif +#endif /* CONFIG_PPC_FPU */ void enable_kernel_fp(void) { @@ -116,11 +158,11 @@ #ifdef CONFIG_SMP if (current->thread.regs && (current->thread.regs->msr & MSR_FP)) - giveup_fpu(current); + giveup_fpu_maybe_transactional(current); else giveup_fpu(NULL); /* just enables FP for kernel */ #else - giveup_fpu(last_task_used_math); + giveup_fpu_maybe_transactional(last_task_used_math); #endif /* CONFIG_SMP */ } EXPORT_SYMBOL(enable_kernel_fp); @@ -132,11 +174,11 @@ #ifdef CONFIG_SMP if (current->thread.regs && (current->thread.regs->msr & MSR_VEC)) - giveup_altivec(current); + giveup_altivec_maybe_transactional(current); else giveup_altivec_notask(); #else - giveup_altivec(last_task_used_altivec); + giveup_altivec_maybe_transactional(last_task_used_altivec); #endif /* CONFIG_SMP */ } EXPORT_SYMBOL(enable_kernel_altivec); @@ -153,7 +195,7 @@ #ifdef CONFIG_SMP BUG_ON(tsk != current); #endif - giveup_altivec(tsk); + giveup_altivec_maybe_transactional(tsk); } preempt_enable(); } @@ -182,8 +224,8 @@ void giveup_vsx(struct task_struct *tsk) { - giveup_fpu(tsk); - giveup_altivec(tsk); + giveup_fpu_maybe_transactional(tsk); + giveup_altivec_maybe_transactional(tsk); __giveup_vsx(tsk); } @@ -479,7 +521,66 @@ return false; return true; } + #ifdef CONFIG_PPC_TRANSACTIONAL_MEM +static void tm_reclaim_thread(struct thread_struct *thr, + struct thread_info *ti, uint8_t cause) +{ + unsigned long msr_diff = 0; + + /* + * If FP/VSX registers have been already saved to the + * thread_struct, move them to the transact_fp array. + * We clear the TIF_RESTORE_TM bit since after the reclaim + * the thread will no longer be transactional. + */ + if (test_ti_thread_flag(ti, TIF_RESTORE_TM)) { + msr_diff = thr->tm_orig_msr & ~thr->regs->msr; + if (msr_diff & MSR_FP) + memcpy(&thr->transact_fp, &thr->fp_state, + sizeof(struct thread_fp_state)); + if (msr_diff & MSR_VEC) + memcpy(&thr->transact_vr, &thr->vr_state, + sizeof(struct thread_vr_state)); + clear_ti_thread_flag(ti, TIF_RESTORE_TM); + 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 + * FP/VSX values in the registers. These might be valid + * even if we have previously called enable_kernel_fp() or + * flush_fp_to_thread(), so update thr->regs->msr to + * indicate their current validity. + */ + thr->regs->msr |= msr_diff; +} + +void tm_reclaim_current(uint8_t cause) +{ + tm_enable(); + tm_reclaim_thread(¤t->thread, current_thread_info(), cause); +} + static inline void tm_reclaim_task(struct task_struct *tsk) { /* We have to work out if we're switching from/to a task that's in the @@ -502,9 +603,11 @@ /* Stash the original thread MSR, as giveup_fpu et al will * modify it. We hold onto it to see whether the task used - * FP & vector regs. + * FP & vector regs. If the TIF_RESTORE_TM flag is set, + * tm_orig_msr is already set. */ - thr->tm_orig_msr = thr->regs->msr; + if (!test_ti_thread_flag(task_thread_info(tsk), TIF_RESTORE_TM)) + thr->tm_orig_msr = thr->regs->msr; TM_DEBUG("--- tm_reclaim on pid %d (NIP=%lx, " "ccr=%lx, msr=%lx, trap=%lx)\n", @@ -512,7 +615,7 @@ thr->regs->ccr, thr->regs->msr, thr->regs->trap); - tm_reclaim(thr, thr->regs->msr, TM_CAUSE_RESCHED); + tm_reclaim_thread(thr, task_thread_info(tsk), TM_CAUSE_RESCHED); TM_DEBUG("--- tm_reclaim on pid %d complete\n", tsk->pid); @@ -588,6 +691,43 @@ tm_reclaim_task(prev); } } + +/* + * This is called if we are on the way out to userspace and the + * TIF_RESTORE_TM flag is set. It checks if we need to reload + * FP and/or vector state and does so if necessary. + * If userspace is inside a transaction (whether active or + * suspended) and FP/VMX/VSX instructions have ever been enabled + * inside that transaction, then we have to keep them enabled + * and keep the FP/VMX/VSX state loaded while ever the transaction + * continues. The reason is that if we didn't, and subsequently + * got a FP/VMX/VSX unavailable interrupt inside a transaction, + * we don't know whether it's the same transaction, and thus we + * don't know which of the checkpointed state and the transactional + * state to use. + */ +void restore_tm_state(struct pt_regs *regs) +{ + unsigned long msr_diff; + + clear_thread_flag(TIF_RESTORE_TM); + if (!MSR_TM_ACTIVE(regs->msr)) + return; + + msr_diff = current->thread.tm_orig_msr & ~regs->msr; + msr_diff &= MSR_FP | MSR_VEC | MSR_VSX; + if (msr_diff & MSR_FP) { + fp_enable(); + load_fp_state(¤t->thread.fp_state); + regs->msr |= current->thread.fpexc_mode; + } + if (msr_diff & MSR_VEC) { + vec_enable(); + load_vr_state(¤t->thread.vr_state); + } + regs->msr |= msr_diff; +} + #else #define tm_recheckpoint_new_task(new) #define __switch_to_tm(prev) @@ -604,15 +744,15 @@ WARN_ON(!irqs_disabled()); - /* Back up the TAR across context switches. + /* Back up the TAR and DSCR across context switches. * Note that the TAR is not available for use in the kernel. (To * provide this, the TAR should be backed up/restored on exception * entry/exit instead, and be in pt_regs. FIXME, this should be in * pt_regs anyway (for debug).) - * Save the TAR here before we do treclaim/trecheckpoint as these - * will change the TAR. + * Save the TAR and DSCR here before we do treclaim/trecheckpoint as + * these will change them. */ - save_tar(&prev->thread); + save_early_sprs(&prev->thread); __switch_to_tm(prev); @@ -927,6 +1067,15 @@ flush_altivec_to_thread(src); flush_vsx_to_thread(src); flush_spe_to_thread(src); + /* + * Flush TM state out so we can copy it. __switch_to_tm() does this + * flush but it removes the checkpointed state from the current CPU and + * transitions the CPU out of TM mode. Hence we need to call + * tm_recheckpoint_new_task() (on the same task) to restore the + * checkpointed state back and the TM mode. + */ + __switch_to_tm(src); + tm_recheckpoint_new_task(src); *dst = *src; @@ -1067,6 +1216,16 @@ current->thread.regs = regs - 1; } +#ifdef CONFIG_PPC_TRANSACTIONAL_MEM + /* + * Clear any transactional state, we're exec()ing. The cause is + * not important as there will never be a recheckpoint so it's not + * user visible. + */ + if (MSR_TM_SUSPENDED(mfmsr())) + tm_reclaim_current(0); +#endif + memset(regs->gpr, 0, sizeof(regs->gpr)); regs->ctr = 0; regs->link = 0; --- linux-3.13.0.orig/arch/powerpc/kernel/prom.c +++ linux-3.13.0/arch/powerpc/kernel/prom.c @@ -737,6 +737,11 @@ spinning_secondaries = boot_cpu_count - 1; #endif +#ifdef CONFIG_PPC_POWERNV + /* Scan and build the list of machine check recoverable ranges */ + of_scan_flat_dt(early_init_dt_scan_recoverable_ranges, NULL); +#endif + DBG(" <- early_init_devtree()\n"); } --- linux-3.13.0.orig/arch/powerpc/kernel/reloc_64.S +++ linux-3.13.0/arch/powerpc/kernel/reloc_64.S @@ -69,8 +69,8 @@ * R_PPC64_RELATIVE ones. */ mtctr r8 -5: lwz r0,12(9) /* ELF64_R_TYPE(reloc->r_info) */ - cmpwi r0,R_PPC64_RELATIVE +5: ld r0,8(9) /* ELF64_R_TYPE(reloc->r_info) */ + cmpdi r0,R_PPC64_RELATIVE bne 6f ld r6,0(r9) /* reloc->r_offset */ ld r0,16(r9) /* reloc->r_addend */ @@ -81,6 +81,7 @@ 6: blr +.balign 8 p_dyn: .llong __dynamic_start - 0b p_rela: .llong __rela_dyn_start - 0b p_st: .llong _stext - 0b --- linux-3.13.0.orig/arch/powerpc/kernel/rtas.c +++ linux-3.13.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; @@ -993,44 +1010,54 @@ (struct rtas_ext_event_log_v6 *)log->buffer; struct pseries_errorlog *sect; unsigned char *p, *log_end; + uint32_t ext_log_length = rtas_error_extended_log_length(log); + uint8_t log_format = rtas_ext_event_log_format(ext_log); + uint32_t company_id = rtas_ext_event_company_id(ext_log); /* Check that we understand the format */ - if (log->extended_log_length < sizeof(struct rtas_ext_event_log_v6) || - ext_log->log_format != RTAS_V6EXT_LOG_FORMAT_EVENT_LOG || - ext_log->company_id != RTAS_V6EXT_COMPANY_ID_IBM) + if (ext_log_length < sizeof(struct rtas_ext_event_log_v6) || + log_format != RTAS_V6EXT_LOG_FORMAT_EVENT_LOG || + company_id != RTAS_V6EXT_COMPANY_ID_IBM) return NULL; - log_end = log->buffer + log->extended_log_length; + log_end = log->buffer + ext_log_length; p = ext_log->vendor_log; while (p < log_end) { sect = (struct pseries_errorlog *)p; - if (sect->id == section_id) + if (pseries_errorlog_id(sect) == section_id) return sect; - p += sect->length; + p += pseries_errorlog_length(sect); } return NULL; } +/* We assume to be passed big endian arguments */ asmlinkage int ppc_rtas(struct rtas_args __user *uargs) { struct rtas_args args; unsigned long flags; char *buff_copy, *errbuf = NULL; - int nargs; + int nargs, nret, token; int rc; if (!capable(CAP_SYS_ADMIN)) return -EPERM; + if (!rtas.entry) + return -EINVAL; + if (copy_from_user(&args, uargs, 3 * sizeof(u32)) != 0) return -EFAULT; - nargs = args.nargs; + nargs = be32_to_cpu(args.nargs); + nret = be32_to_cpu(args.nret); + token = be32_to_cpu(args.token); + if (nargs > ARRAY_SIZE(args.args) - || args.nret > ARRAY_SIZE(args.args) - || nargs + args.nret > ARRAY_SIZE(args.args)) + || nret > ARRAY_SIZE(args.args) + || nargs + nret > ARRAY_SIZE(args.args)) return -EINVAL; /* Copy in args. */ @@ -1038,14 +1065,14 @@ nargs * sizeof(rtas_arg_t)) != 0) return -EFAULT; - if (args.token == RTAS_UNKNOWN_SERVICE) + if (token == RTAS_UNKNOWN_SERVICE) return -EINVAL; args.rets = &args.args[nargs]; - memset(args.rets, 0, args.nret * sizeof(rtas_arg_t)); + memset(args.rets, 0, nret * sizeof(rtas_arg_t)); /* Need to handle ibm,suspend_me call specially */ - if (args.token == ibm_suspend_me_token) { + if (token == ibm_suspend_me_token) { rc = rtas_ibm_suspend_me(&args); if (rc) return rc; @@ -1062,7 +1089,7 @@ /* A -1 return code indicates that the last command couldn't be completed due to a hardware error. */ - if (args.rets[0] == -1) + if (be32_to_cpu(args.rets[0]) == -1) errbuf = __fetch_rtas_last_error(buff_copy); unlock_rtas(flags); @@ -1077,7 +1104,7 @@ /* Copy out args. */ if (copy_to_user(uargs->args + nargs, args.args + nargs, - args.nret * sizeof(rtas_arg_t)) != 0) + nret * sizeof(rtas_arg_t)) != 0) return -EFAULT; return 0; --- linux-3.13.0.orig/arch/powerpc/kernel/rtas_flash.c +++ linux-3.13.0/arch/powerpc/kernel/rtas_flash.c @@ -705,7 +705,7 @@ if (rtas_token("ibm,update-flash-64-and-reboot") == RTAS_UNKNOWN_SERVICE) { pr_info("rtas_flash: no firmware flash support\n"); - return 1; + return -EINVAL; } rtas_validate_flash_data.buf = kzalloc(VALIDATE_BUF_SIZE, GFP_KERNEL); --- linux-3.13.0.orig/arch/powerpc/kernel/rtasd.c +++ linux-3.13.0/arch/powerpc/kernel/rtasd.c @@ -150,8 +150,8 @@ struct rtas_error_log *errlog = (struct rtas_error_log *)buf; printk(RTAS_DEBUG "event: %d, Type: %s, Severity: %d\n", - error_log_cnt, rtas_event_type(errlog->type), - errlog->severity); + error_log_cnt, rtas_event_type(rtas_error_type(errlog)), + rtas_error_severity(errlog)); } } @@ -159,14 +159,16 @@ { int len; struct rtas_error_log *err; + uint32_t extended_log_length; /* rtas fixed header */ len = 8; err = (struct rtas_error_log *)buf; - if (err->extended && err->extended_log_length) { + extended_log_length = rtas_error_extended_log_length(err); + if (rtas_error_extended(err) && extended_log_length) { /* extended header */ - len += err->extended_log_length; + len += extended_log_length; } if (rtas_error_log_max == 0) @@ -293,15 +295,13 @@ static void handle_rtas_event(const struct rtas_error_log *log) { - if (log->type == RTAS_TYPE_PRRN) { - /* For PRRN Events the extended log length is used to denote - * the scope for calling rtas update-nodes. - */ - if (prrn_is_enabled()) - prrn_schedule_update(log->extended_log_length); - } + if (rtas_error_type(log) != RTAS_TYPE_PRRN || !prrn_is_enabled()) + return; - return; + /* For PRRN Events the extended log length is used to denote + * the scope for calling rtas update-nodes. + */ + prrn_schedule_update(rtas_error_extended_log_length(log)); } #else --- linux-3.13.0.orig/arch/powerpc/kernel/setup-common.c +++ linux-3.13.0/arch/powerpc/kernel/setup-common.c @@ -456,9 +456,17 @@ } for (j = 0; j < nthreads && cpu < nr_cpu_ids; j++) { + bool avail; + DBG(" thread %d -> cpu %d (hard id %d)\n", j, cpu, be32_to_cpu(intserv[j])); - set_cpu_present(cpu, true); + + avail = of_device_is_available(dn); + if (!avail) + avail = !of_property_match_string(dn, + "enable-method", "spin-table"); + + set_cpu_present(cpu, avail); set_hard_smp_processor_id(cpu, be32_to_cpu(intserv[j])); set_cpu_possible(cpu, true); cpu++; --- linux-3.13.0.orig/arch/powerpc/kernel/setup_64.c +++ linux-3.13.0/arch/powerpc/kernel/setup_64.c @@ -544,7 +544,8 @@ /* * Stack space used when we detect a bad kernel stack pointer, and - * early in SMP boots before relocation is enabled. + * early in SMP boots before relocation is enabled. Exclusive emergency + * stack for machine checks. */ static void __init emergency_stack_init(void) { @@ -567,6 +568,13 @@ sp = memblock_alloc_base(THREAD_SIZE, THREAD_SIZE, limit); sp += THREAD_SIZE; paca[i].emergency_sp = __va(sp); + +#ifdef CONFIG_PPC_BOOK3S_64 + /* emergency stack for machine check exception handling. */ + sp = memblock_alloc_base(THREAD_SIZE, THREAD_SIZE, limit); + sp += THREAD_SIZE; + paca[i].mc_emergency_sp = __va(sp); +#endif } } --- linux-3.13.0.orig/arch/powerpc/kernel/signal.c +++ linux-3.13.0/arch/powerpc/kernel/signal.c @@ -203,8 +203,7 @@ #ifdef CONFIG_PPC_TRANSACTIONAL_MEM if (MSR_TM_ACTIVE(regs->msr)) { - tm_enable(); - tm_reclaim(¤t->thread, regs->msr, TM_CAUSE_SIGNAL); + tm_reclaim_current(TM_CAUSE_SIGNAL); if (MSR_TM_TRANSACTIONAL(regs->msr)) return current->thread.ckpt_regs.gpr[1]; } --- linux-3.13.0.orig/arch/powerpc/kernel/signal_32.c +++ linux-3.13.0/arch/powerpc/kernel/signal_32.c @@ -519,6 +519,13 @@ { unsigned long msr = regs->msr; + /* Remove TM bits from thread's MSR. The MSR in the sigcontext + * just indicates to userland that we were doing a transaction, but we + * don't want to return in transactional state. This also ensures + * that flush_fp_to_thread won't set TIF_RESTORE_TM again. + */ + regs->msr &= ~MSR_TS_MASK; + /* Make sure floating point registers are stored in regs */ flush_fp_to_thread(current); @@ -869,6 +876,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. @@ -876,11 +892,6 @@ tm_enable(); /* 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) { @@ -1056,13 +1067,6 @@ /* enter the signal handler in native-endian mode */ regs->msr &= ~MSR_LE; regs->msr |= (MSR_KERNEL & MSR_LE); -#ifdef CONFIG_PPC_TRANSACTIONAL_MEM - /* Remove TM bits from thread's MSR. The MSR in the sigcontext - * just indicates to userland that we were doing a transaction, but we - * don't want to return in transactional state: - */ - regs->msr &= ~MSR_TS_MASK; -#endif return 1; badframe: @@ -1484,13 +1488,6 @@ regs->nip = (unsigned long) ka->sa.sa_handler; /* enter the signal handler in big-endian mode */ regs->msr &= ~MSR_LE; -#ifdef CONFIG_PPC_TRANSACTIONAL_MEM - /* Remove TM bits from thread's MSR. The MSR in the sigcontext - * just indicates to userland that we were doing a transaction, but we - * don't want to return in transactional state: - */ - regs->msr &= ~MSR_TS_MASK; -#endif return 1; badframe: --- linux-3.13.0.orig/arch/powerpc/kernel/signal_64.c +++ linux-3.13.0/arch/powerpc/kernel/signal_64.c @@ -65,8 +65,8 @@ struct siginfo __user *pinfo; void __user *puc; struct siginfo info; - /* 64 bit ABI allows for 288 bytes below sp before decrementing it. */ - char abigap[288]; + /* New 64 bit little-endian ABI allows redzone of 512 bytes below sp */ + char abigap[USER_REDZONE_SIZE]; } __attribute__ ((aligned (16))); static const char fmt32[] = KERN_INFO \ @@ -192,6 +192,13 @@ BUG_ON(!MSR_TM_ACTIVE(regs->msr)); + /* Remove TM bits from thread's MSR. The MSR in the sigcontext + * just indicates to userland that we were doing a transaction, but we + * don't want to return in transactional state. This also ensures + * that flush_fp_to_thread won't set TIF_RESTORE_TM again. + */ + regs->msr &= ~MSR_TS_MASK; + flush_fp_to_thread(current); #ifdef CONFIG_ALTIVEC @@ -421,6 +428,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); @@ -749,13 +760,6 @@ /* Make sure signal handler doesn't get spurious FP exceptions */ current->thread.fp_state.fpscr = 0; -#ifdef CONFIG_PPC_TRANSACTIONAL_MEM - /* Remove TM bits from thread's MSR. The MSR in the sigcontext - * just indicates to userland that we were doing a transaction, but we - * don't want to return in transactional state: - */ - regs->msr &= ~MSR_TS_MASK; -#endif /* Set up to return from userspace. */ if (vdso64_rt_sigtramp && current->mm->context.vdso_base) { --- linux-3.13.0.orig/arch/powerpc/kernel/smp.c +++ linux-3.13.0/arch/powerpc/kernel/smp.c @@ -384,6 +384,7 @@ #ifdef CONFIG_PPC64 paca[boot_cpuid].__current = current; #endif + set_numa_node(numa_cpu_lookup_table[boot_cpuid]); current_set[boot_cpuid] = task_thread_info(current); } @@ -744,6 +745,12 @@ } traverse_core_siblings(cpu, true); + /* + * numa_node_id() works after this. + */ + set_numa_node(numa_cpu_lookup_table[cpu]); + set_numa_mem(local_memory_node(numa_cpu_lookup_table[cpu])); + smp_wmb(); notify_cpu_starting(cpu); set_cpu_online(cpu, true); --- linux-3.13.0.orig/arch/powerpc/kernel/traps.c +++ linux-3.13.0/arch/powerpc/kernel/traps.c @@ -285,6 +285,21 @@ /* What should we do here? We could issue a shutdown or hard reset. */ } + +/* + * This function is called in real mode. Strictly no printk's please. + * + * regs->nip and regs->msr contains srr0 and ssr1. + */ +long machine_check_early(struct pt_regs *regs) +{ + long handled = 0; + + if (cur_cpu_spec && cur_cpu_spec->machine_check_early) + handled = cur_cpu_spec->machine_check_early(regs); + return handled; +} + #endif /* @@ -1384,7 +1399,6 @@ TM_DEBUG("FP Unavailable trap whilst transactional at 0x%lx, MSR=%lx\n", regs->nip, regs->msr); - tm_enable(); /* We can only have got here if the task started using FP after * beginning the transaction. So, the transactional regs are just a @@ -1393,8 +1407,7 @@ * transaction, and probably retry but now with FP enabled. So the * checkpointed FP registers need to be loaded. */ - tm_reclaim(¤t->thread, current->thread.regs->msr, - TM_CAUSE_FAC_UNAV); + tm_reclaim_current(TM_CAUSE_FAC_UNAV); /* Reclaim didn't save out any FPRs to transact_fprs. */ /* Enable FP for the task: */ @@ -1403,11 +1416,19 @@ /* This loads and recheckpoints the FP registers from * thread.fpr[]. They will remain in registers after the * checkpoint so we don't need to reload them after. + * If VMX is in use, the VRs now hold checkpointed values, + * so we don't want to load the VRs from the thread_struct. */ - tm_recheckpoint(¤t->thread, regs->msr); + tm_recheckpoint(¤t->thread, MSR_FP); + + /* If VMX is in use, get the transactional values back */ + if (regs->msr & MSR_VEC) { + do_load_up_transact_altivec(¤t->thread); + /* At this point all the VSX state is loaded, so enable it */ + regs->msr |= MSR_VSX; + } } -#ifdef CONFIG_ALTIVEC void altivec_unavailable_tm(struct pt_regs *regs) { /* See the comments in fp_unavailable_tm(). This function operates @@ -1417,18 +1438,21 @@ TM_DEBUG("Vector Unavailable trap whilst transactional at 0x%lx," "MSR=%lx\n", regs->nip, regs->msr); - tm_enable(); - tm_reclaim(¤t->thread, current->thread.regs->msr, - TM_CAUSE_FAC_UNAV); + tm_reclaim_current(TM_CAUSE_FAC_UNAV); regs->msr |= MSR_VEC; - tm_recheckpoint(¤t->thread, regs->msr); + tm_recheckpoint(¤t->thread, MSR_VEC); current->thread.used_vr = 1; + + if (regs->msr & MSR_FP) { + do_load_up_transact_fpu(¤t->thread); + regs->msr |= MSR_VSX; + } } -#endif -#ifdef CONFIG_VSX void vsx_unavailable_tm(struct pt_regs *regs) { + unsigned long orig_msr = regs->msr; + /* See the comments in fp_unavailable_tm(). This works similarly, * though we're loading both FP and VEC registers in here. * @@ -1440,18 +1464,30 @@ "MSR=%lx\n", regs->nip, regs->msr); - tm_enable(); + current->thread.used_vsr = 1; + + /* If FP and VMX are already loaded, we have all the state we need */ + if ((orig_msr & (MSR_FP | MSR_VEC)) == (MSR_FP | MSR_VEC)) { + regs->msr |= MSR_VSX; + return; + } + /* This reclaims FP and/or VR regs if they're already enabled */ - tm_reclaim(¤t->thread, current->thread.regs->msr, - TM_CAUSE_FAC_UNAV); + tm_reclaim_current(TM_CAUSE_FAC_UNAV); regs->msr |= MSR_VEC | MSR_FP | current->thread.fpexc_mode | MSR_VSX; - /* This loads & recheckpoints FP and VRs. */ - tm_recheckpoint(¤t->thread, regs->msr); - current->thread.used_vsr = 1; + + /* This loads & recheckpoints FP and VRs; but we have + * to be sure not to overwrite previously-valid state. + */ + tm_recheckpoint(¤t->thread, regs->msr & ~orig_msr); + + if (orig_msr & MSR_FP) + do_load_up_transact_fpu(¤t->thread); + if (orig_msr & MSR_VEC) + do_load_up_transact_altivec(¤t->thread); } -#endif #endif /* CONFIG_PPC_TRANSACTIONAL_MEM */ void performance_monitor_exception(struct pt_regs *regs) --- linux-3.13.0.orig/arch/powerpc/kernel/vdso32/getcpu.S +++ linux-3.13.0/arch/powerpc/kernel/vdso32/getcpu.S @@ -30,8 +30,8 @@ V_FUNCTION_BEGIN(__kernel_getcpu) .cfi_startproc mfspr r5,SPRN_USPRG3 - cmpdi cr0,r3,0 - cmpdi cr1,r4,0 + cmpwi cr0,r3,0 + cmpwi cr1,r4,0 clrlwi r6,r5,16 rlwinm r7,r5,16,31-15,31-0 beq cr0,1f --- linux-3.13.0.orig/arch/powerpc/kernel/vector.S +++ linux-3.13.0/arch/powerpc/kernel/vector.S @@ -37,6 +37,16 @@ #endif /* + * Enable use of VMX/Altivec for the caller. + */ +_GLOBAL(vec_enable) + mfmsr r3 + oris r3,r3,MSR_VEC@h + MTMSRD(r3) + isync + blr + +/* * Load state from memory into VMX registers including VSCR. * Assumes the caller has enabled VMX in the MSR. */ --- linux-3.13.0.orig/arch/powerpc/kernel/vmlinux.lds.S +++ linux-3.13.0/arch/powerpc/kernel/vmlinux.lds.S @@ -213,6 +213,7 @@ *(.opd) } + . = ALIGN(256); .got : AT(ADDR(.got) - LOAD_OFFSET) { __toc_start = .; #ifndef CONFIG_RELOCATABLE --- linux-3.13.0.orig/arch/powerpc/kvm/book3s_64_mmu_hv.c +++ linux-3.13.0/arch/powerpc/kvm/book3s_64_mmu_hv.c @@ -262,7 +262,7 @@ static void kvmppc_mmu_book3s_64_hv_reset_msr(struct kvm_vcpu *vcpu) { - kvmppc_set_msr(vcpu, MSR_SF | MSR_ME); + kvmppc_set_msr(vcpu, vcpu->arch.intr_msr); } /* @@ -544,7 +544,7 @@ * If we fail, we just return to the guest and try executing it again. */ if (vcpu->arch.last_inst == KVM_INST_FETCH_FAILED) { - ret = kvmppc_ld(vcpu, &srr0, sizeof(u32), &last_inst, false); + ret = kvmppc_ld32(vcpu, &srr0, &last_inst, false); if (ret != EMULATE_DONE || last_inst == KVM_INST_FETCH_FAILED) return RESUME_GUEST; vcpu->arch.last_inst = last_inst; --- linux-3.13.0.orig/arch/powerpc/kvm/book3s_hv.c +++ linux-3.13.0/arch/powerpc/kvm/book3s_hv.c @@ -85,10 +85,13 @@ /* CPU points to the first thread of the core */ if (cpu != me && cpu >= 0 && cpu < nr_cpu_ids) { +#ifdef CONFIG_PPC_ICP_NATIVE int real_cpu = cpu + vcpu->arch.ptid; if (paca[real_cpu].kvm_hstate.xics_phys) xics_wake_cpu(real_cpu); - else if (cpu_online(cpu)) + else +#endif + if (cpu_online(cpu)) smp_send_reschedule(cpu); } put_cpu(); @@ -162,6 +165,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); } @@ -537,6 +546,48 @@ vcpu->arch.dtl.dirty = true; } +static int kvmppc_h_set_mode(struct kvm_vcpu *vcpu, unsigned long mflags, + unsigned long resource, unsigned long value1, + unsigned long value2) +{ + struct kvm *kvm = vcpu->kvm; + struct kvm_vcpu *v; + int n; + + switch (resource) { + case H_SET_MODE_RESOURCE_LE: + if (value1) + return H_P3; + if (value2) + return H_P4; + + switch (mflags) { + case 0: + mutex_lock(&kvm->lock); + kvm->arch.lpcr &= ~LPCR_ILE; + kvm_for_each_vcpu(n, v, kvm) + v->arch.intr_msr &= ~MSR_LE; + mutex_unlock(&kvm->lock); + kick_all_cpus_sync(); + return H_SUCCESS; + + case 1: + mutex_lock(&kvm->lock); + kvm->arch.lpcr |= LPCR_ILE; + kvm_for_each_vcpu(n, v, kvm) + v->arch.intr_msr |= MSR_LE; + mutex_unlock(&kvm->lock); + kick_all_cpus_sync(); + return H_SUCCESS; + + default: + return H_UNSUPPORTED_FLAG_START; + } + default: + return H_P2; + } +} + int kvmppc_pseries_do_hcall(struct kvm_vcpu *vcpu) { unsigned long req = kvmppc_get_gpr(vcpu, 3); @@ -602,6 +653,12 @@ /* Send the error out to userspace via KVM_RUN */ return rc; + case H_SET_MODE: + ret = kvmppc_h_set_mode(vcpu, kvmppc_get_gpr(vcpu, 4), + kvmppc_get_gpr(vcpu, 5), + kvmppc_get_gpr(vcpu, 6), + kvmppc_get_gpr(vcpu, 7)); + break; case H_XIRR: case H_CPPR: @@ -1017,6 +1074,7 @@ spin_lock_init(&vcpu->arch.vpa_update_lock); spin_lock_init(&vcpu->arch.tbacct_lock); vcpu->arch.busy_preempt = TB_NIL; + vcpu->arch.intr_msr = MSR_SF | MSR_ME; kvmppc_mmu_book3s_hv_init(vcpu); --- linux-3.13.0.orig/arch/powerpc/kvm/book3s_hv_builtin.c +++ linux-3.13.0/arch/powerpc/kvm/book3s_hv_builtin.c @@ -156,6 +156,12 @@ unsigned long align_size; struct memblock_region *reg; phys_addr_t selected_size = 0; + + /* + * We need CMA reservation only when we are in HV mode + */ + if (!cpu_has_feature(CPU_FTR_HVMODE)) + return; /* * We cannot use memblock_phys_mem_size() here, because * memblock_analyze() has not been called yet. --- linux-3.13.0.orig/arch/powerpc/kvm/book3s_hv_ras.c +++ linux-3.13.0/arch/powerpc/kvm/book3s_hv_ras.c @@ -12,6 +12,7 @@ #include #include #include +#include /* SRR1 bits for machine check on POWER7 */ #define SRR1_MC_LDSTERR (1ul << (63-42)) @@ -58,18 +59,6 @@ } } -/* POWER7 TLB flush */ -static void flush_tlb_power7(struct kvm_vcpu *vcpu) -{ - unsigned long i, rb; - - rb = TLBIEL_INVAL_SET_LPID; - for (i = 0; i < POWER7_TLB_SETS; ++i) { - asm volatile("tlbiel %0" : : "r" (rb)); - rb += 1 << TLBIEL_INVAL_SET_SHIFT; - } -} - /* * On POWER7, see if we can handle a machine check that occurred inside * the guest in real mode, without switching to the host partition. @@ -79,9 +68,7 @@ static long kvmppc_realmode_mc_power7(struct kvm_vcpu *vcpu) { unsigned long srr1 = vcpu->arch.shregs.msr; -#ifdef CONFIG_PPC_POWERNV - struct opal_machine_check_event *opal_evt; -#endif + struct machine_check_event mce_evt; long handled = 1; if (srr1 & SRR1_MC_LDSTERR) { @@ -96,7 +83,8 @@ DSISR_MC_SLB_PARITY | DSISR_MC_DERAT_MULTI); } if (dsisr & DSISR_MC_TLB_MULTI) { - flush_tlb_power7(vcpu); + if (cur_cpu_spec && cur_cpu_spec->flush_tlb) + cur_cpu_spec->flush_tlb(TLBIEL_INVAL_SET_LPID); dsisr &= ~DSISR_MC_TLB_MULTI; } /* Any other errors we don't understand? */ @@ -113,28 +101,38 @@ reload_slb(vcpu); break; case SRR1_MC_IFETCH_TLBMULTI: - flush_tlb_power7(vcpu); + if (cur_cpu_spec && cur_cpu_spec->flush_tlb) + cur_cpu_spec->flush_tlb(TLBIEL_INVAL_SET_LPID); break; default: handled = 0; } -#ifdef CONFIG_PPC_POWERNV /* - * See if OPAL has already handled the condition. - * We assume that if the condition is recovered then OPAL + * See if we have already handled the condition in the linux host. + * We assume that if the condition is recovered then linux host * will have generated an error log event that we will pick * up and log later. + * Don't release mce event now. In case if condition is not + * recovered we do guest exit and go back to linux host machine + * check handler. Hence we need make sure that current mce event + * is available for linux host to consume. */ - opal_evt = local_paca->opal_mc_evt; - if (opal_evt->version == OpalMCE_V1 && - (opal_evt->severity == OpalMCE_SEV_NO_ERROR || - opal_evt->disposition == OpalMCE_DISPOSITION_RECOVERED)) + if (!get_mce_event(&mce_evt, MCE_EVENT_DONTRELEASE)) + goto out; + + if (mce_evt.version == MCE_V1 && + (mce_evt.severity == MCE_SEV_NO_ERROR || + mce_evt.disposition == MCE_DISPOSITION_RECOVERED)) handled = 1; +out: + /* + * If we have handled the error, then release the mce event because + * we will be delivering machine check to guest. + */ if (handled) - opal_evt->in_use = 0; -#endif + release_mce_event(); return handled; } --- linux-3.13.0.orig/arch/powerpc/kvm/book3s_hv_rmhandlers.S +++ linux-3.13.0/arch/powerpc/kvm/book3s_hv_rmhandlers.S @@ -676,8 +676,7 @@ 12: mr r6,r10 mr r10,r0 mr r7,r11 - li r11,(MSR_ME << 1) | 1 /* synthesize MSR_SF | MSR_ME */ - rotldi r11,r11,63 + ld r11,VCPU_INTR_MSR(r4) b 5f 11: beq 5f mfspr r0,SPRN_DEC @@ -896,8 +895,7 @@ mtspr SPRN_SRR0, r10 mtspr SPRN_SRR1, r11 li r10, BOOK3S_INTERRUPT_EXTERNAL - li r11, (MSR_ME << 1) | 1 /* synthesize MSR_SF | MSR_ME */ - rotldi r11, r11, 63 + ld r11,VCPU_INTR_MSR(r9) 2: mr r4, r9 mtspr SPRN_LPCR, r8 b fast_guest_return @@ -1386,8 +1384,7 @@ mtspr SPRN_SRR0, r10 mtspr SPRN_SRR1, r11 li r10, BOOK3S_INTERRUPT_DATA_STORAGE - li r11, (MSR_ME << 1) | 1 /* synthesize MSR_SF | MSR_ME */ - rotldi r11, r11, 63 + ld r11,VCPU_INTR_MSR(r9) fast_interrupt_c_return: 6: ld r7, VCPU_CTR(r9) lwz r8, VCPU_XER(r9) @@ -1415,10 +1412,19 @@ lwz r8, 0(r10) mtmsrd r3 + andi. r0, r11, MSR_LE + /* Store the result */ stw r8, VCPU_LAST_INST(r9) + beq after_inst_store + + /* Swap and store the result */ + addi r4, r9, VCPU_LAST_INST + stwbrx r8, 0, r4 + /* Unset guest mode. */ +after_inst_store: li r0, KVM_GUEST_MODE_HOST_HV stb r0, HSTATE_IN_GUEST(r13) b guest_exit_cont @@ -1456,8 +1462,7 @@ 1: mtspr SPRN_SRR0, r10 mtspr SPRN_SRR1, r11 li r10, BOOK3S_INTERRUPT_INST_STORAGE - li r11, (MSR_ME << 1) | 1 /* synthesize MSR_SF | MSR_ME */ - rotldi r11, r11, 63 + ld r11,VCPU_INTR_MSR(r9) b fast_interrupt_c_return 3: ld r6, VCPU_KVM(r9) /* not relocated, use VRMA */ @@ -1783,8 +1788,7 @@ beq mc_cont /* If not, deliver a machine check. SRR0/1 are already set */ li r10, BOOK3S_INTERRUPT_MACHINE_CHECK - li r11, (MSR_ME << 1) | 1 /* synthesize MSR_SF | MSR_ME */ - rotldi r11, r11, 63 + ld r11,VCPU_INTR_MSR(r9) b fast_interrupt_c_return /* --- linux-3.13.0.orig/arch/powerpc/kvm/book3s_pr.c +++ linux-3.13.0/arch/powerpc/kvm/book3s_pr.c @@ -627,7 +627,7 @@ u32 last_inst = kvmppc_get_last_inst(vcpu); int ret; - ret = kvmppc_ld(vcpu, &srr0, sizeof(u32), &last_inst, false); + ret = kvmppc_ld32(vcpu, &srr0, &last_inst, false); if (ret == -ENOENT) { ulong msr = vcpu->arch.shared->msr; --- linux-3.13.0.orig/arch/powerpc/kvm/book3s_pr_papr.c +++ linux-3.13.0/arch/powerpc/kvm/book3s_pr_papr.c @@ -258,6 +258,8 @@ int kvmppc_h_pr(struct kvm_vcpu *vcpu, unsigned long cmd) { + int rc, idx; + switch (cmd) { case H_ENTER: return kvmppc_h_pr_enter(vcpu); @@ -286,8 +288,11 @@ break; case H_RTAS: if (list_empty(&vcpu->kvm->arch.rtas_tokens)) - return RESUME_HOST; - if (kvmppc_rtas_hcall(vcpu)) + break; + idx = srcu_read_lock(&vcpu->kvm->srcu); + rc = kvmppc_rtas_hcall(vcpu); + srcu_read_unlock(&vcpu->kvm->srcu, idx); + if (rc) break; kvmppc_set_gpr(vcpu, 3, 0); return EMULATE_DONE; --- linux-3.13.0.orig/arch/powerpc/kvm/book3s_segment.S +++ linux-3.13.0/arch/powerpc/kvm/book3s_segment.S @@ -289,6 +289,15 @@ #endif stw r0, SVCPU_LAST_INST(r13) +#ifdef CONFIG_PPC64 + andi. r9, r4, MSR_LE + beq no_ld_last_inst + + /* swap and store the result */ + addi r9, r13, SVCPU_LAST_INST + stwbrx r0, 0, r9 +#endif + no_ld_last_inst: /* Unset guest mode */ --- linux-3.13.0.orig/arch/powerpc/kvm/e500_mmu.c +++ linux-3.13.0/arch/powerpc/kvm/e500_mmu.c @@ -127,7 +127,7 @@ } static inline void kvmppc_e500_deliver_tlb_miss(struct kvm_vcpu *vcpu, - unsigned int eaddr, int as) + gva_t eaddr, int as) { struct kvmppc_vcpu_e500 *vcpu_e500 = to_e500(vcpu); unsigned int victim, tsized; --- linux-3.13.0.orig/arch/powerpc/kvm/emulate.c +++ linux-3.13.0/arch/powerpc/kvm/emulate.c @@ -219,7 +219,6 @@ * lmw * stmw * - * XXX is_bigendian should depend on MMU mapping or MSR[LE] */ /* XXX Should probably auto-generate instruction decoding for a particular core * from opcode tables in the future. */ --- linux-3.13.0.orig/arch/powerpc/kvm/powerpc.c +++ linux-3.13.0/arch/powerpc/kvm/powerpc.c @@ -673,9 +673,13 @@ } int kvmppc_handle_load(struct kvm_run *run, struct kvm_vcpu *vcpu, - unsigned int rt, unsigned int bytes, int is_bigendian) + unsigned int rt, unsigned int bytes, int not_reverse) { int idx, ret; + int is_bigendian = not_reverse; + + if (!kvmppc_is_bigendian(vcpu)) + is_bigendian = !not_reverse; if (bytes > sizeof(run->mmio.data)) { printk(KERN_ERR "%s: bad MMIO length: %d\n", __func__, @@ -711,21 +715,25 @@ /* Same as above, but sign extends */ int kvmppc_handle_loads(struct kvm_run *run, struct kvm_vcpu *vcpu, - unsigned int rt, unsigned int bytes, int is_bigendian) + unsigned int rt, unsigned int bytes, int not_reverse) { int r; vcpu->arch.mmio_sign_extend = 1; - r = kvmppc_handle_load(run, vcpu, rt, bytes, is_bigendian); + r = kvmppc_handle_load(run, vcpu, rt, bytes, not_reverse); return r; } int kvmppc_handle_store(struct kvm_run *run, struct kvm_vcpu *vcpu, - u64 val, unsigned int bytes, int is_bigendian) + u64 val, unsigned int bytes, int not_reverse) { void *data = run->mmio.data; int idx, ret; + int is_bigendian = not_reverse; + + if (!kvmppc_is_bigendian(vcpu)) + is_bigendian = !not_reverse; if (bytes > sizeof(run->mmio.data)) { printk(KERN_ERR "%s: bad MMIO length: %d\n", __func__, --- linux-3.13.0.orig/arch/powerpc/lib/crtsavres.S +++ linux-3.13.0/arch/powerpc/lib/crtsavres.S @@ -231,6 +231,87 @@ mr 1,11 blr +#ifdef CONFIG_ALTIVEC +/* Called with r0 pointing just beyond the end of the vector save area. */ + +_GLOBAL(_savevr_20) + li r11,-192 + stvx vr20,r11,r0 +_GLOBAL(_savevr_21) + li r11,-176 + stvx vr21,r11,r0 +_GLOBAL(_savevr_22) + li r11,-160 + stvx vr22,r11,r0 +_GLOBAL(_savevr_23) + li r11,-144 + stvx vr23,r11,r0 +_GLOBAL(_savevr_24) + li r11,-128 + stvx vr24,r11,r0 +_GLOBAL(_savevr_25) + li r11,-112 + stvx vr25,r11,r0 +_GLOBAL(_savevr_26) + li r11,-96 + stvx vr26,r11,r0 +_GLOBAL(_savevr_27) + li r11,-80 + stvx vr27,r11,r0 +_GLOBAL(_savevr_28) + li r11,-64 + stvx vr28,r11,r0 +_GLOBAL(_savevr_29) + li r11,-48 + stvx vr29,r11,r0 +_GLOBAL(_savevr_30) + li r11,-32 + stvx vr30,r11,r0 +_GLOBAL(_savevr_31) + li r11,-16 + stvx vr31,r11,r0 + blr + +_GLOBAL(_restvr_20) + li r11,-192 + lvx vr20,r11,r0 +_GLOBAL(_restvr_21) + li r11,-176 + lvx vr21,r11,r0 +_GLOBAL(_restvr_22) + li r11,-160 + lvx vr22,r11,r0 +_GLOBAL(_restvr_23) + li r11,-144 + lvx vr23,r11,r0 +_GLOBAL(_restvr_24) + li r11,-128 + lvx vr24,r11,r0 +_GLOBAL(_restvr_25) + li r11,-112 + lvx vr25,r11,r0 +_GLOBAL(_restvr_26) + li r11,-96 + lvx vr26,r11,r0 +_GLOBAL(_restvr_27) + li r11,-80 + lvx vr27,r11,r0 +_GLOBAL(_restvr_28) + li r11,-64 + lvx vr28,r11,r0 +_GLOBAL(_restvr_29) + li r11,-48 + lvx vr29,r11,r0 +_GLOBAL(_restvr_30) + li r11,-32 + lvx vr30,r11,r0 +_GLOBAL(_restvr_31) + li r11,-16 + lvx vr31,r11,r0 + blr + +#endif /* CONFIG_ALTIVEC */ + #else /* CONFIG_PPC64 */ .section ".text.save.restore","ax",@progbits @@ -356,6 +437,111 @@ mtlr r0 blr +#ifdef CONFIG_ALTIVEC +/* Called with r0 pointing just beyond the end of the vector save area. */ + +.globl _savevr_20 +_savevr_20: + li r12,-192 + stvx vr20,r12,r0 +.globl _savevr_21 +_savevr_21: + li r12,-176 + stvx vr21,r12,r0 +.globl _savevr_22 +_savevr_22: + li r12,-160 + stvx vr22,r12,r0 +.globl _savevr_23 +_savevr_23: + li r12,-144 + stvx vr23,r12,r0 +.globl _savevr_24 +_savevr_24: + li r12,-128 + stvx vr24,r12,r0 +.globl _savevr_25 +_savevr_25: + li r12,-112 + stvx vr25,r12,r0 +.globl _savevr_26 +_savevr_26: + li r12,-96 + stvx vr26,r12,r0 +.globl _savevr_27 +_savevr_27: + li r12,-80 + stvx vr27,r12,r0 +.globl _savevr_28 +_savevr_28: + li r12,-64 + stvx vr28,r12,r0 +.globl _savevr_29 +_savevr_29: + li r12,-48 + stvx vr29,r12,r0 +.globl _savevr_30 +_savevr_30: + li r12,-32 + stvx vr30,r12,r0 +.globl _savevr_31 +_savevr_31: + li r12,-16 + stvx vr31,r12,r0 + blr + +.globl _restvr_20 +_restvr_20: + li r12,-192 + lvx vr20,r12,r0 +.globl _restvr_21 +_restvr_21: + li r12,-176 + lvx vr21,r12,r0 +.globl _restvr_22 +_restvr_22: + li r12,-160 + lvx vr22,r12,r0 +.globl _restvr_23 +_restvr_23: + li r12,-144 + lvx vr23,r12,r0 +.globl _restvr_24 +_restvr_24: + li r12,-128 + lvx vr24,r12,r0 +.globl _restvr_25 +_restvr_25: + li r12,-112 + lvx vr25,r12,r0 +.globl _restvr_26 +_restvr_26: + li r12,-96 + lvx vr26,r12,r0 +.globl _restvr_27 +_restvr_27: + li r12,-80 + lvx vr27,r12,r0 +.globl _restvr_28 +_restvr_28: + li r12,-64 + lvx vr28,r12,r0 +.globl _restvr_29 +_restvr_29: + li r12,-48 + lvx vr29,r12,r0 +.globl _restvr_30 +_restvr_30: + li r12,-32 + lvx vr30,r12,r0 +.globl _restvr_31 +_restvr_31: + li r12,-16 + lvx vr31,r12,r0 + blr + +#endif /* CONFIG_ALTIVEC */ + #endif /* CONFIG_PPC64 */ #endif --- linux-3.13.0.orig/arch/powerpc/mm/fault.c +++ linux-3.13.0/arch/powerpc/mm/fault.c @@ -432,6 +432,8 @@ */ fault = handle_mm_fault(mm, vma, address, flags); if (unlikely(fault & (VM_FAULT_RETRY|VM_FAULT_ERROR))) { + if (fault & VM_FAULT_SIGSEGV) + goto bad_area; rc = mm_fault_error(regs, address, fault); if (rc >= MM_FAULT_RETURN) goto bail; --- linux-3.13.0.orig/arch/powerpc/mm/hash_native_64.c +++ linux-3.13.0/arch/powerpc/mm/hash_native_64.c @@ -418,18 +418,18 @@ local_irq_restore(flags); } -static void native_hugepage_invalidate(struct mm_struct *mm, +static void native_hugepage_invalidate(unsigned long vsid, + unsigned long addr, unsigned char *hpte_slot_array, - unsigned long addr, int psize) + int psize, int ssize) { - int ssize = 0, i; - int lock_tlbie; + int i; struct hash_pte *hptep; int actual_psize = MMU_PAGE_16M; unsigned int max_hpte_count, valid; unsigned long flags, s_addr = addr; unsigned long hpte_v, want_v, shift; - unsigned long hidx, vpn = 0, vsid, hash, slot; + unsigned long hidx, vpn = 0, hash, slot; shift = mmu_psize_defs[psize].shift; max_hpte_count = 1U << (PMD_SHIFT - shift); @@ -443,15 +443,6 @@ /* get the vpn */ addr = s_addr + (i * (1ul << shift)); - if (!is_kernel_addr(addr)) { - ssize = user_segment_size(addr); - vsid = get_vsid(mm->context.id, addr, ssize); - WARN_ON(vsid == 0); - } else { - vsid = get_kernel_vsid(addr, mmu_kernel_ssize); - ssize = mmu_kernel_ssize; - } - vpn = hpt_vpn(addr, vsid, ssize); hash = hpt_hash(vpn, shift, ssize); if (hidx & _PTEIDX_SECONDARY) @@ -471,22 +462,13 @@ else /* Invalidate the hpte. NOTE: this also unlocks it */ hptep->v = 0; + /* + * We need to do tlb invalidate for all the address, tlbie + * instruction compares entry_VA in tlb with the VA specified + * here + */ + tlbie(vpn, psize, actual_psize, ssize, 0); } - /* - * Since this is a hugepage, we just need a single tlbie. - * use the last vpn. - */ - lock_tlbie = !mmu_has_feature(MMU_FTR_LOCKLESS_TLBIE); - if (lock_tlbie) - raw_spin_lock(&native_tlbie_lock); - - asm volatile("ptesync":::"memory"); - __tlbie(vpn, psize, actual_psize, ssize); - asm volatile("eieio; tlbsync; ptesync":::"memory"); - - if (lock_tlbie) - raw_spin_unlock(&native_tlbie_lock); - local_irq_restore(flags); } --- linux-3.13.0.orig/arch/powerpc/mm/hash_utils_64.c +++ linux-3.13.0/arch/powerpc/mm/hash_utils_64.c @@ -206,6 +206,20 @@ if (overlaps_kernel_text(vaddr, vaddr + step)) tprot &= ~HPTE_R_N; + /* + * If relocatable, check if it overlaps interrupt vectors that + * are copied down to real 0. For relocatable kernel + * (e.g. kdump case) we copy interrupt vectors down to real + * address 0. Mark that region as executable. This is + * because on p8 system with relocation on exception feature + * enabled, exceptions are raised with MMU (IR=DR=1) ON. Hence + * in order to execute the interrupt handlers in virtual + * mode the vector region need to be marked as executable. + */ + if ((PHYSICAL_START > MEMORY_START) && + overlaps_interrupt_vector_text(vaddr, vaddr + step)) + tprot &= ~HPTE_R_N; + hash = hpt_hash(vpn, shift, ssize); hpteg = ((hash & htab_hash_mask) * HPTES_PER_GROUP); @@ -945,6 +959,22 @@ trap, vsid, ssize, psize, lpsize, pte); } +static void check_paca_psize(unsigned long ea, struct mm_struct *mm, + int psize, bool user_region) +{ + if (user_region) { + if (psize != get_paca_psize(ea)) { + get_paca()->context = mm->context; + slb_flush_and_rebolt(); + } + } else if (get_paca()->vmalloc_sllp != + mmu_psize_defs[mmu_vmalloc_psize].sllp) { + get_paca()->vmalloc_sllp = + mmu_psize_defs[mmu_vmalloc_psize].sllp; + slb_vmalloc_update(); + } +} + /* Result code is: * 0 - handled * 1 - normal page fault @@ -1066,6 +1096,8 @@ WARN_ON(1); } #endif + check_paca_psize(ea, mm, psize, user_region); + goto bail; } @@ -1106,17 +1138,8 @@ #endif } } - if (user_region) { - if (psize != get_paca_psize(ea)) { - get_paca()->context = mm->context; - slb_flush_and_rebolt(); - } - } else if (get_paca()->vmalloc_sllp != - mmu_psize_defs[mmu_vmalloc_psize].sllp) { - get_paca()->vmalloc_sllp = - mmu_psize_defs[mmu_vmalloc_psize].sllp; - slb_vmalloc_update(); - } + + check_paca_psize(ea, mm, psize, user_region); #endif /* CONFIG_PPC_64K_PAGES */ #ifdef CONFIG_PPC_HAS_HASH_64K --- linux-3.13.0.orig/arch/powerpc/mm/hugepage-hash64.c +++ linux-3.13.0/arch/powerpc/mm/hugepage-hash64.c @@ -18,6 +18,57 @@ #include #include +static void invalidate_old_hpte(unsigned long vsid, unsigned long addr, + pmd_t *pmdp, unsigned int psize, int ssize) +{ + int i, max_hpte_count, valid; + unsigned long s_addr; + unsigned char *hpte_slot_array; + unsigned long hidx, shift, vpn, hash, slot; + + s_addr = addr & HPAGE_PMD_MASK; + hpte_slot_array = get_hpte_slot_array(pmdp); + /* + * IF we try to do a HUGE PTE update after a withdraw is done. + * we will find the below NULL. This happens when we do + * split_huge_page_pmd + */ + if (!hpte_slot_array) + return; + + if (ppc_md.hugepage_invalidate) + return ppc_md.hugepage_invalidate(vsid, s_addr, hpte_slot_array, + psize, ssize); + /* + * No bluk hpte removal support, invalidate each entry + */ + shift = mmu_psize_defs[psize].shift; + max_hpte_count = HPAGE_PMD_SIZE >> shift; + for (i = 0; i < max_hpte_count; i++) { + /* + * 8 bits per each hpte entries + * 000| [ secondary group (one bit) | hidx (3 bits) | valid bit] + */ + valid = hpte_valid(hpte_slot_array, i); + if (!valid) + continue; + hidx = hpte_hash_index(hpte_slot_array, i); + + /* get the vpn */ + addr = s_addr + (i * (1ul << shift)); + vpn = hpt_vpn(addr, vsid, ssize); + hash = hpt_hash(vpn, shift, ssize); + if (hidx & _PTEIDX_SECONDARY) + hash = ~hash; + + slot = (hash & htab_hash_mask) * HPTES_PER_GROUP; + slot += hidx & _PTEIDX_GROUP_IX; + ppc_md.hpte_invalidate(slot, vpn, psize, + MMU_PAGE_16M, ssize, 0); + } +} + + int __hash_page_thp(unsigned long ea, unsigned long access, unsigned long vsid, pmd_t *pmdp, unsigned long trap, int local, int ssize, unsigned int psize) @@ -33,7 +84,9 @@ * atomically mark the linux large page PMD busy and dirty */ do { - old_pmd = pmd_val(*pmdp); + pmd_t pmd = ACCESS_ONCE(*pmdp); + + old_pmd = pmd_val(pmd); /* If PMD busy, retry the access */ if (unlikely(old_pmd & _PAGE_BUSY)) return 0; @@ -83,12 +136,21 @@ 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) { + /* + * invalidate the old hpte entry if we have that mapped via 64K + * base page size. This is because demote_segment won't flush + * hash page table entries. + */ + if ((old_pmd & _PAGE_HASHPTE) && !(old_pmd & _PAGE_COMBO)) + invalidate_old_hpte(vsid, ea, pmdp, MMU_PAGE_64K, ssize); + } 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; @@ -107,27 +169,27 @@ * safely update this here. */ valid = 0; - new_pmd &= ~_PAGE_HPTEFLAGS; hpte_slot_array[index] = 0; - } else - /* clear the busy bits and set the hash pte bits */ - new_pmd = (new_pmd & ~_PAGE_HPTEFLAGS) | _PAGE_HASHPTE; + } } if (!valid) { unsigned long hpte_group; + hash = hpt_hash(vpn, shift, ssize); /* insert new entry */ pa = pmd_pfn(__pmd(old_pmd)) << PAGE_SHIFT; -repeat: - hpte_group = ((hash & htab_hash_mask) * HPTES_PER_GROUP) & ~0x7UL; - - /* clear the busy bits and set the hash pte bits */ - new_pmd = (new_pmd & ~_PAGE_HPTEFLAGS) | _PAGE_HASHPTE; + new_pmd |= _PAGE_HASHPTE; /* Add in WIMG bits */ rflags |= (new_pmd & (_PAGE_WRITETHRU | _PAGE_NO_CACHE | - _PAGE_COHERENT | _PAGE_GUARDED)); + _PAGE_GUARDED)); + /* + * enable the memory coherence always + */ + rflags |= HPTE_R_M; +repeat: + hpte_group = ((hash & htab_hash_mask) * HPTES_PER_GROUP) & ~0x7UL; /* Insert into the hash table, primary slot */ slot = ppc_md.hpte_insert(hpte_group, vpn, pa, rflags, 0, @@ -168,8 +230,17 @@ mark_hpte_slot_valid(hpte_slot_array, index, slot); } /* - * No need to use ldarx/stdcx here + * Mark the pte with _PAGE_COMBO, if we are trying to hash it with + * base page size 4k. + */ + if (psize == MMU_PAGE_4K) + new_pmd |= _PAGE_COMBO; + /* + * The hpte valid is stored in the pgtable whose address is in the + * second half of the PMD. Order this against clearing of the busy bit in + * huge pmd. */ + smp_wmb(); *pmdp = __pmd(new_pmd & ~_PAGE_BUSY); return 0; } --- linux-3.13.0.orig/arch/powerpc/mm/hugetlbpage.c +++ linux-3.13.0/arch/powerpc/mm/hugetlbpage.c @@ -86,11 +86,6 @@ */ return ((pgd_val(pgd) & 0x3) != 0x0); } - -int pmd_huge_support(void) -{ - return 1; -} #else int pmd_huge(pmd_t pmd) { @@ -106,11 +101,6 @@ { return 0; } - -int pmd_huge_support(void) -{ - return 0; -} #endif pte_t *huge_pte_offset(struct mm_struct *mm, unsigned long addr) --- linux-3.13.0.orig/arch/powerpc/mm/numa.c +++ linux-3.13.0/arch/powerpc/mm/numa.c @@ -31,6 +31,8 @@ #include #include #include +#include +#include #include #include #include @@ -152,9 +154,22 @@ } } -static void map_cpu_to_node(int cpu, int node) +static void reset_numa_cpu_lookup_table(void) +{ + unsigned int cpu; + + for_each_possible_cpu(cpu) + numa_cpu_lookup_table[cpu] = -1; +} + +static void update_numa_cpu_lookup_table(unsigned int cpu, int node) { numa_cpu_lookup_table[cpu] = node; +} + +static void map_cpu_to_node(int cpu, int node) +{ + update_numa_cpu_lookup_table(cpu, node); dbg("adding cpu %d to node %d\n", cpu, node); @@ -522,11 +537,24 @@ */ static int numa_setup_cpu(unsigned long lcpu) { - int nid = 0; - struct device_node *cpu = of_get_cpu_node(lcpu, NULL); + int nid; + struct device_node *cpu; + + /* + * If a valid cpu-to-node mapping is already available, use it + * directly instead of querying the firmware, since it represents + * the most recent mapping notified to us by the platform (eg: VPHN). + */ + if ((nid = numa_cpu_lookup_table[lcpu]) >= 0) { + map_cpu_to_node(lcpu, nid); + return nid; + } + + cpu = of_get_cpu_node(lcpu, NULL); if (!cpu) { WARN_ON(1); + nid = 0; goto out; } @@ -560,8 +588,8 @@ case CPU_UP_CANCELED: case CPU_UP_CANCELED_FROZEN: unmap_cpu_from_node(lcpu); - break; ret = NOTIFY_OK; + break; #endif } return ret; @@ -1067,6 +1095,7 @@ */ setup_node_to_cpumask_map(); + reset_numa_cpu_lookup_table(); register_cpu_notifier(&ppc64_numa_nb); cpu_numa_callback(&ppc64_numa_nb, CPU_UP_PREPARE, (void *)(unsigned long)boot_cpuid); @@ -1388,8 +1417,11 @@ long retbuf[PLPAR_HCALL9_BUFSIZE] = {0}; u64 flags = 1; int hwcpu = get_hard_smp_processor_id(cpu); + int i; rc = plpar_hcall9(H_HOME_NODE_ASSOCIATIVITY, retbuf, flags, hwcpu); + for (i = 0; i < 6; i++) + retbuf[i] = cpu_to_be64(retbuf[i]); vphn_unpack_associativity(retbuf, associativity); return rc; @@ -1445,6 +1477,33 @@ return 0; } +static int update_lookup_table(void *data) +{ + struct topology_update_data *update; + + if (!data) + return -EINVAL; + + /* + * Upon topology update, the numa-cpu lookup table needs to be updated + * for all threads in the core, including offline CPUs, to ensure that + * future hotplug operations respect the cpu-to-node associativity + * properly. + */ + for (update = data; update; update = update->next) { + int nid, base, j; + + nid = update->new_nid; + base = cpu_first_thread_sibling(update->cpu); + + for (j = 0; j < threads_per_core; j++) { + update_numa_cpu_lookup_table(base + j, nid); + } + } + + return 0; +} + /* * Update the node maps and sysfs entries for each cpu whose home node * has changed. Returns 1 when the topology has changed, and 0 otherwise. @@ -1513,6 +1572,14 @@ stop_machine(update_cpu_topology, &updates[0], &updated_cpus); + /* + * Update the numa-cpu lookup table with the new mappings, even for + * offline CPUs. It is best to perform this update from the stop- + * machine context. + */ + stop_machine(update_lookup_table, &updates[0], + cpumask_of(raw_smp_processor_id())); + for (ud = &updates[0]; ud; ud = ud->next) { unregister_cpu_under_node(ud->cpu, ud->old_nid); register_cpu_under_node(ud->cpu, ud->new_nid); --- linux-3.13.0.orig/arch/powerpc/mm/pgtable_64.c +++ linux-3.13.0/arch/powerpc/mm/pgtable_64.c @@ -55,6 +55,9 @@ #include "mmu_decl.h" +#define CREATE_TRACE_POINTS +#include + /* Some sanity checking */ #if TASK_SIZE_USER64 > PGTABLE_RANGE #error TASK_SIZE_USER64 exceeds pagetable range @@ -499,7 +502,8 @@ } unsigned long pmd_hugepage_update(struct mm_struct *mm, unsigned long addr, - pmd_t *pmdp, unsigned long clr) + pmd_t *pmdp, unsigned long clr, + unsigned long set) { unsigned long old, tmp; @@ -515,17 +519,19 @@ andi. %1,%0,%6\n\ bne- 1b \n\ andc %1,%0,%4 \n\ + or %1,%1,%7\n\ stdcx. %1,0,%3 \n\ bne- 1b" : "=&r" (old), "=&r" (tmp), "=m" (*pmdp) - : "r" (pmdp), "r" (clr), "m" (*pmdp), "i" (_PAGE_BUSY) + : "r" (pmdp), "r" (clr), "m" (*pmdp), "i" (_PAGE_BUSY), "r" (set) : "cc" ); #else old = pmd_val(*pmdp); - *pmdp = __pmd(old & ~clr); + *pmdp = __pmd((old & ~clr) | set); #endif + trace_hugepage_update(addr, old, clr, set); if (old & _PAGE_HASHPTE) - hpte_do_hugepage_flush(mm, addr, pmdp); + hpte_do_hugepage_flush(mm, addr, pmdp, old); return old; } @@ -629,10 +635,11 @@ * If we didn't had the splitting flag set, go and flush the * HPTE entries. */ + trace_hugepage_splitting(address, old); if (!(old & _PAGE_SPLITTING)) { /* We need to flush the hpte */ if (old & _PAGE_HASHPTE) - hpte_do_hugepage_flush(vma->vm_mm, address, pmdp); + hpte_do_hugepage_flush(vma->vm_mm, address, pmdp, old); } } @@ -691,13 +698,14 @@ assert_spin_locked(&mm->page_table_lock); WARN_ON(!pmd_trans_huge(pmd)); #endif + trace_hugepage_set_pmd(addr, pmd); return set_pte_at(mm, addr, pmdp_ptep(pmdp), pmd_pte(pmd)); } void pmdp_invalidate(struct vm_area_struct *vma, unsigned long address, pmd_t *pmdp) { - pmd_hugepage_update(vma->vm_mm, address, pmdp, _PAGE_PRESENT); + pmd_hugepage_update(vma->vm_mm, address, pmdp, _PAGE_PRESENT, 0); } /* @@ -705,7 +713,7 @@ * neesd to be flushed. */ void hpte_do_hugepage_flush(struct mm_struct *mm, unsigned long addr, - pmd_t *pmdp) + pmd_t *pmdp, unsigned long old_pmd) { int ssize, i; unsigned long s_addr; @@ -727,12 +735,29 @@ if (!hpte_slot_array) return; - /* get the base page size */ + /* get the base page size,vsid and segment size */ +#ifdef CONFIG_DEBUG_VM psize = get_slice_psize(mm, s_addr); + BUG_ON(psize == MMU_PAGE_16M); +#endif + if (old_pmd & _PAGE_COMBO) + psize = MMU_PAGE_4K; + else + psize = MMU_PAGE_64K; + + if (!is_kernel_addr(s_addr)) { + ssize = user_segment_size(s_addr); + vsid = get_vsid(mm->context.id, s_addr, ssize); + WARN_ON(vsid == 0); + } else { + vsid = get_kernel_vsid(s_addr, mmu_kernel_ssize); + ssize = mmu_kernel_ssize; + } if (ppc_md.hugepage_invalidate) - return ppc_md.hugepage_invalidate(mm, hpte_slot_array, - s_addr, psize); + return ppc_md.hugepage_invalidate(vsid, s_addr, + hpte_slot_array, + psize, ssize); /* * No bluk hpte removal support, invalidate each entry */ @@ -750,15 +775,6 @@ /* get the vpn */ addr = s_addr + (i * (1ul << shift)); - if (!is_kernel_addr(addr)) { - ssize = user_segment_size(addr); - vsid = get_vsid(mm->context.id, addr, ssize); - WARN_ON(vsid == 0); - } else { - vsid = get_kernel_vsid(addr, mmu_kernel_ssize); - ssize = mmu_kernel_ssize; - } - vpn = hpt_vpn(addr, vsid, ssize); hash = hpt_hash(vpn, shift, ssize); if (hidx & _PTEIDX_SECONDARY) @@ -824,7 +840,7 @@ unsigned long old; pgtable_t *pgtable_slot; - old = pmd_hugepage_update(mm, addr, pmdp, ~0UL); + old = pmd_hugepage_update(mm, addr, pmdp, ~0UL, 0); old_pmd = __pmd(old); /* * We have pmd == none and we are holding page_table_lock. --- linux-3.13.0.orig/arch/powerpc/mm/subpage-prot.c +++ linux-3.13.0/arch/powerpc/mm/subpage-prot.c @@ -78,7 +78,7 @@ pte = pte_offset_map_lock(mm, pmd, addr, &ptl); arch_enter_lazy_mmu_mode(); for (; npages > 0; --npages) { - pte_update(mm, addr, pte, 0, 0); + pte_update(mm, addr, pte, 0, 0, 0); addr += PAGE_SIZE; ++pte; } --- linux-3.13.0.orig/arch/powerpc/mm/tlb_hash64.c +++ linux-3.13.0/arch/powerpc/mm/tlb_hash64.c @@ -31,6 +31,8 @@ #include #include +#include + DEFINE_PER_CPU(struct ppc64_tlb_batch, ppc64_tlb_batch); /* @@ -214,10 +216,12 @@ if (ptep == NULL) continue; pte = pte_val(*ptep); + if (hugepage_shift) + trace_hugepage_invalidate(start, pte_val(pte)); if (!(pte & _PAGE_HASHPTE)) continue; if (unlikely(hugepage_shift && pmd_trans_huge(*(pmd_t *)pte))) - hpte_do_hugepage_flush(mm, start, (pmd_t *)pte); + hpte_do_hugepage_flush(mm, start, (pmd_t *)ptep, pte); else hpte_need_flush(mm, start, ptep, pte, 0); } --- linux-3.13.0.orig/arch/powerpc/perf/callchain.c +++ linux-3.13.0/arch/powerpc/perf/callchain.c @@ -243,7 +243,7 @@ sp = regs->gpr[1]; perf_callchain_store(entry, next_ip); - for (;;) { + while (entry->nr < PERF_MAX_STACK_DEPTH) { fp = (unsigned long __user *) sp; if (!valid_user_sp(sp, 1) || read_user_stack_64(fp, &next_sp)) return; --- linux-3.13.0.orig/arch/powerpc/perf/core-book3s.c +++ linux-3.13.0/arch/powerpc/perf/core-book3s.c @@ -78,6 +78,7 @@ #define MMCR0_FC56 0 #define MMCR0_PMAO 0 #define MMCR0_EBE 0 +#define MMCR0_BHRBA 0 #define MMCR0_PMCC 0 #define MMCR0_PMCC_U6 0 @@ -120,11 +121,21 @@ static inline void power_pmu_bhrb_disable(struct perf_event *event) {} void power_pmu_flush_branch_stack(void) {} static inline void power_pmu_bhrb_read(struct cpu_hw_events *cpuhw) {} +static void pmao_restore_workaround(bool ebb) { } #endif /* CONFIG_PPC32 */ static bool regs_use_siar(struct pt_regs *regs) { - return !!regs->result; + /* + * When we take a performance monitor exception the regs are setup + * using perf_read_regs() which overloads some fields, in particular + * regs->result to tell us whether to use SIAR. + * + * However if the regs are from another exception, eg. a syscall, then + * they have not been setup using perf_read_regs() and so regs->result + * is something random. + */ + return ((TRAP(regs) == 0xf00) && regs->result); } /* @@ -483,7 +494,7 @@ * check that the PMU supports EBB, meaning those that don't can still * use bit 63 of the event code for something else if they wish. */ - return (ppmu->flags & PPMU_EBB) && + return (ppmu->flags & PPMU_ARCH_207S) && ((event->attr.config >> PERF_EVENT_CONFIG_EBB_SHIFT) & 1); } @@ -502,8 +513,11 @@ if (!leader->attr.pinned || !leader->attr.exclusive) return -EINVAL; - if (event->attr.inherit || event->attr.sample_period || - event->attr.enable_on_exec || event->attr.freq) + if (event->attr.freq || + event->attr.inherit || + event->attr.sample_type || + event->attr.sample_period || + event->attr.enable_on_exec) return -EINVAL; } @@ -542,13 +556,21 @@ if (!ebb) goto out; - /* Enable EBB and read/write to all 6 PMCs for userspace */ - mmcr0 |= MMCR0_EBE | MMCR0_PMCC_U6; + /* Enable EBB and read/write to all 6 PMCs and BHRB for userspace */ + mmcr0 |= MMCR0_EBE | MMCR0_BHRBA | MMCR0_PMCC_U6; - /* Add any bits from the user reg, FC or PMAO */ + /* + * Add any bits from the user MMCR0, FC or PMAO. This is compatible + * with pmao_restore_workaround() because we may add PMAO but we never + * clear it here. + */ mmcr0 |= current->thread.mmcr0; - /* Be careful not to set PMXE if userspace had it cleared */ + /* + * Be careful not to set PMXE if userspace had it cleared. This is also + * compatible with pmao_restore_workaround() because it has already + * cleared PMXE and we leave PMAO alone. + */ if (!(current->thread.mmcr0 & MMCR0_PMXE)) mmcr0 &= ~MMCR0_PMXE; @@ -559,13 +581,94 @@ out: return mmcr0; } -#endif /* CONFIG_PPC64 */ - -static void perf_event_interrupt(struct pt_regs *regs); -void perf_event_print_debug(void) +static void pmao_restore_workaround(bool ebb) { + unsigned pmcs[6]; + + if (!cpu_has_feature(CPU_FTR_PMAO_BUG)) + return; + + /* + * On POWER8E there is a hardware defect which affects the PMU context + * switch logic, ie. power_pmu_disable/enable(). + * + * When a counter overflows PMXE is cleared and FC/PMAO is set in MMCR0 + * by the hardware. Sometime later the actual PMU exception is + * delivered. + * + * If we context switch, or simply disable/enable, the PMU prior to the + * exception arriving, the exception will be lost when we clear PMAO. + * + * When we reenable the PMU, we will write the saved MMCR0 with PMAO + * set, and this _should_ generate an exception. However because of the + * defect no exception is generated when we write PMAO, and we get + * stuck with no counters counting but no exception delivered. + * + * The workaround is to detect this case and tweak the hardware to + * create another pending PMU exception. + * + * We do that by setting up PMC6 (cycles) for an imminent overflow and + * enabling the PMU. That causes a new exception to be generated in the + * chip, but we don't take it yet because we have interrupts hard + * disabled. We then write back the PMU state as we want it to be seen + * by the exception handler. When we reenable interrupts the exception + * handler will be called and see the correct state. + * + * The logic is the same for EBB, except that the exception is gated by + * us having interrupts hard disabled as well as the fact that we are + * not in userspace. The exception is finally delivered when we return + * to userspace. + */ + + /* Only if PMAO is set and PMAO_SYNC is clear */ + if ((current->thread.mmcr0 & (MMCR0_PMAO | MMCR0_PMAO_SYNC)) != MMCR0_PMAO) + return; + + /* If we're doing EBB, only if BESCR[GE] is set */ + if (ebb && !(current->thread.bescr & BESCR_GE)) + return; + + /* + * We are already soft-disabled in power_pmu_enable(). We need to hard + * enable to actually prevent the PMU exception from firing. + */ + hard_irq_disable(); + + /* + * This is a bit gross, but we know we're on POWER8E and have 6 PMCs. + * Using read/write_pmc() in a for loop adds 12 function calls and + * almost doubles our code size. + */ + pmcs[0] = mfspr(SPRN_PMC1); + pmcs[1] = mfspr(SPRN_PMC2); + pmcs[2] = mfspr(SPRN_PMC3); + pmcs[3] = mfspr(SPRN_PMC4); + pmcs[4] = mfspr(SPRN_PMC5); + pmcs[5] = mfspr(SPRN_PMC6); + + /* Ensure all freeze bits are unset */ + mtspr(SPRN_MMCR2, 0); + + /* Set up PMC6 to overflow in one cycle */ + mtspr(SPRN_PMC6, 0x7FFFFFFE); + + /* Enable exceptions and unfreeze PMC6 */ + mtspr(SPRN_MMCR0, MMCR0_PMXE | MMCR0_PMCjCE | MMCR0_PMAO); + + /* Now we need to refreeze and restore the PMCs */ + mtspr(SPRN_MMCR0, MMCR0_FC | MMCR0_PMAO); + + mtspr(SPRN_PMC1, pmcs[0]); + mtspr(SPRN_PMC2, pmcs[1]); + mtspr(SPRN_PMC3, pmcs[2]); + mtspr(SPRN_PMC4, pmcs[3]); + mtspr(SPRN_PMC5, pmcs[4]); + mtspr(SPRN_PMC6, pmcs[5]); } +#endif /* CONFIG_PPC64 */ + +static void perf_event_interrupt(struct pt_regs *regs); /* * Read one performance monitor counter (PMC). @@ -645,6 +748,57 @@ } } +/* Called from sysrq_handle_showregs() */ +void perf_event_print_debug(void) +{ + unsigned long sdar, sier, flags; + u32 pmcs[MAX_HWEVENTS]; + int i; + + if (!ppmu->n_counter) + return; + + local_irq_save(flags); + + pr_info("CPU: %d PMU registers, ppmu = %s n_counters = %d", + smp_processor_id(), ppmu->name, ppmu->n_counter); + + for (i = 0; i < ppmu->n_counter; i++) + pmcs[i] = read_pmc(i + 1); + + for (; i < MAX_HWEVENTS; i++) + pmcs[i] = 0xdeadbeef; + + pr_info("PMC1: %08x PMC2: %08x PMC3: %08x PMC4: %08x\n", + pmcs[0], pmcs[1], pmcs[2], pmcs[3]); + + if (ppmu->n_counter > 4) + pr_info("PMC5: %08x PMC6: %08x PMC7: %08x PMC8: %08x\n", + pmcs[4], pmcs[5], pmcs[6], pmcs[7]); + + pr_info("MMCR0: %016lx MMCR1: %016lx MMCRA: %016lx\n", + mfspr(SPRN_MMCR0), mfspr(SPRN_MMCR1), mfspr(SPRN_MMCRA)); + + sdar = sier = 0; +#ifdef CONFIG_PPC64 + sdar = mfspr(SPRN_SDAR); + + if (ppmu->flags & PPMU_HAS_SIER) + sier = mfspr(SPRN_SIER); + + if (ppmu->flags & PPMU_ARCH_207S) { + pr_info("MMCR2: %016lx EBBHR: %016lx\n", + mfspr(SPRN_MMCR2), mfspr(SPRN_EBBHR)); + pr_info("EBBRR: %016lx BESCR: %016lx\n", + mfspr(SPRN_EBBRR), mfspr(SPRN_BESCR)); + } +#endif + pr_info("SIAR: %016lx SDAR: %016lx SIER: %016lx\n", + mfspr(SPRN_SIAR), sdar, sier); + + local_irq_restore(flags); +} + /* * Check if a set of events can all go on the PMU at once. * If they can't, this will look at alternative codes for the events @@ -851,7 +1005,22 @@ } while (local64_cmpxchg(&event->hw.prev_count, prev, val) != prev); local64_add(delta, &event->count); - local64_sub(delta, &event->hw.period_left); + + /* + * A number of places program the PMC with (0x80000000 - period_left). + * We never want period_left to be less than 1 because we will program + * the PMC with a value >= 0x800000000 and an edge detected PMC will + * roll around to 0 before taking an exception. We have seen this + * on POWER8. + * + * To fix this, clamp the minimum value of period_left to 1. + */ + do { + prev = local64_read(&event->hw.period_left); + val = prev - delta; + if (val < 1) + val = 1; + } while (local64_cmpxchg(&event->hw.period_left, prev, val) != prev); } /* @@ -973,11 +1142,12 @@ } /* - * Set the 'freeze counters' bit, clear EBE/PMCC/PMAO/FC56. + * Set the 'freeze counters' bit, clear EBE/BHRBA/PMCC/PMAO/FC56 */ val = mmcr0 = mfspr(SPRN_MMCR0); val |= MMCR0_FC; - val &= ~(MMCR0_EBE | MMCR0_PMCC | MMCR0_PMAO | MMCR0_FC56); + val &= ~(MMCR0_EBE | MMCR0_BHRBA | MMCR0_PMCC | MMCR0_PMAO | + MMCR0_FC56); /* * The barrier is to make sure the mtspr has been @@ -1144,9 +1314,17 @@ cpuhw->mmcr[0] |= MMCR0_PMXE | MMCR0_FCECE; out_enable: + pmao_restore_workaround(ebb); + + if (ppmu->flags & PPMU_ARCH_207S) + mtspr(SPRN_MMCR2, 0); + mmcr0 = ebb_switch_in(ebb, cpuhw->mmcr[0]); mb(); + if (cpuhw->bhrb_users) + ppmu->config_bhrb(cpuhw->bhrb_filter); + write_mmcr0(cpuhw, mmcr0); /* @@ -1158,8 +1336,6 @@ } out: - if (cpuhw->bhrb_users) - ppmu->config_bhrb(cpuhw->bhrb_filter); local_irq_restore(flags); } @@ -1547,7 +1723,7 @@ if (has_branch_stack(event)) { /* PMU has BHRB enabled */ - if (!(ppmu->flags & PPMU_BHRB)) + if (!(ppmu->flags & PPMU_ARCH_207S)) return -EOPNOTSUPP; } --- linux-3.13.0.orig/arch/powerpc/perf/power8-pmu.c +++ linux-3.13.0/arch/powerpc/perf/power8-pmu.c @@ -10,6 +10,8 @@ * 2 of the License, or (at your option) any later version. */ +#define pr_fmt(fmt) "power8-pmu: " fmt + #include #include #include @@ -25,15 +27,48 @@ #define PM_BRU_FIN 0x10068 #define PM_BR_MPRED_CMPL 0x400f6 +/* All L1 D cache load references counted at finish, gated by reject */ +#define PM_LD_REF_L1 0x100ee +/* Load Missed L1 */ +#define PM_LD_MISS_L1 0x3e054 +/* Store Missed L1 */ +#define PM_ST_MISS_L1 0x300f0 +/* L1 cache data prefetches */ +#define PM_L1_PREF 0x0d8b8 +/* Instruction fetches from L1 */ +#define PM_INST_FROM_L1 0x04080 +/* Demand iCache Miss */ +#define PM_L1_ICACHE_MISS 0x200fd +/* Instruction Demand sectors wriittent into IL1 */ +#define PM_L1_DEMAND_WRITE 0x0408c +/* Instruction prefetch written into IL1 */ +#define PM_IC_PREF_WRITE 0x0408e +/* The data cache was reloaded from local core's L3 due to a demand load */ +#define PM_DATA_FROM_L3 0x4c042 +/* Demand LD - L3 Miss (not L2 hit and not L3 hit) */ +#define PM_DATA_FROM_L3MISS 0x300fe +/* All successful D-side store dispatches for this thread */ +#define PM_L2_ST 0x17080 +/* All successful D-side store dispatches for this thread that were L2 Miss */ +#define PM_L2_ST_MISS 0x17082 +/* Total HW L3 prefetches(Load+store) */ +#define PM_L3_PREF_ALL 0x4e052 +/* Data PTEG reload */ +#define PM_DTLB_MISS 0x300fc +/* ITLB Reloaded */ +#define PM_ITLB_MISS 0x400fc + /* * Raw event encoding for POWER8: * * 60 56 52 48 44 40 36 32 * | - - - - | - - - - | - - - - | - - - - | - - - - | - - - - | - - - - | - - - - | - * | [ thresh_cmp ] [ thresh_ctl ] - * | | - * *- EBB (Linux) thresh start/stop OR FAB match -* + * | | [ ] [ thresh_cmp ] [ thresh_ctl ] + * | | | | + * | | *- IFM (Linux) thresh start/stop OR FAB match -* + * | *- BHRB (Linux) + * *- EBB (Linux) * * 28 24 20 16 12 8 4 0 * | - - - - | - - - - | - - - - | - - - - | - - - - | - - - - | - - - - | - - - - | @@ -83,9 +118,18 @@ * MMCRA[57:59] = sample[0:2] (RAND_SAMP_ELIG)  * MMCRA[61:62] = sample[3:4] (RAND_SAMP_MODE) * + * if EBB and BHRB: + * MMCRA[32:33] = IFM + * */ #define EVENT_EBB_MASK 1ull +#define EVENT_EBB_SHIFT PERF_EVENT_CONFIG_EBB_SHIFT +#define EVENT_BHRB_MASK 1ull +#define EVENT_BHRB_SHIFT 62 +#define EVENT_WANTS_BHRB (EVENT_BHRB_MASK << EVENT_BHRB_SHIFT) +#define EVENT_IFM_MASK 3ull +#define EVENT_IFM_SHIFT 60 #define EVENT_THR_CMP_SHIFT 40 /* Threshold CMP value */ #define EVENT_THR_CMP_MASK 0x3ff #define EVENT_THR_CTL_SHIFT 32 /* Threshold control value (start/stop) */ @@ -110,6 +154,12 @@ #define EVENT_IS_MARKED (EVENT_MARKED_MASK << EVENT_MARKED_SHIFT) #define EVENT_PSEL_MASK 0xff /* PMCxSEL value */ +/* Bits defined by Linux */ +#define EVENT_LINUX_MASK \ + ((EVENT_EBB_MASK << EVENT_EBB_SHIFT) | \ + (EVENT_BHRB_MASK << EVENT_BHRB_SHIFT) | \ + (EVENT_IFM_MASK << EVENT_IFM_SHIFT)) + #define EVENT_VALID_MASK \ ((EVENT_THRESH_MASK << EVENT_THRESH_SHIFT) | \ (EVENT_SAMPLE_MASK << EVENT_SAMPLE_SHIFT) | \ @@ -118,7 +168,7 @@ (EVENT_UNIT_MASK << EVENT_UNIT_SHIFT) | \ (EVENT_COMBINE_MASK << EVENT_COMBINE_SHIFT) | \ (EVENT_MARKED_MASK << EVENT_MARKED_SHIFT) | \ - (EVENT_EBB_MASK << PERF_EVENT_CONFIG_EBB_SHIFT) | \ + EVENT_LINUX_MASK | \ EVENT_PSEL_MASK) /* MMCRA IFM bits - POWER8 */ @@ -142,10 +192,11 @@ * * 28 24 20 16 12 8 4 0 * | - - - - | - - - - | - - - - | - - - - | - - - - | - - - - | - - - - | - - - - | - * | [ ] [ sample ] [ ] [6] [5] [4] [3] [2] [1] - * EBB -* | | - * | | Count of events for each PMC. - * L1 I/D qualifier -* | p1, p2, p3, p4, p5, p6. + * [ ] | [ ] [ sample ] [ ] [6] [5] [4] [3] [2] [1] + * | | | | + * BHRB IFM -* | | | Count of events for each PMC. + * EBB -* | | p1, p2, p3, p4, p5, p6. + * L1 I/D qualifier -* | * nc - number of counters -* * * The PMC fields P1..P6, and NC, are adder fields. As we accumulate constraints @@ -164,6 +215,9 @@ #define CNST_EBB_VAL(v) (((v) & EVENT_EBB_MASK) << 24) #define CNST_EBB_MASK CNST_EBB_VAL(EVENT_EBB_MASK) +#define CNST_IFM_VAL(v) (((v) & EVENT_IFM_MASK) << 25) +#define CNST_IFM_MASK CNST_IFM_VAL(EVENT_IFM_MASK) + #define CNST_L1_QUAL_VAL(v) (((v) & 3) << 22) #define CNST_L1_QUAL_MASK CNST_L1_QUAL_VAL(3) @@ -210,6 +264,7 @@ #define MMCRA_THR_SEL_SHIFT 16 #define MMCRA_THR_CMP_SHIFT 32 #define MMCRA_SDAR_MODE_TLB (1ull << 42) +#define MMCRA_IFM_SHIFT 30 static inline bool event_is_fab_match(u64 event) @@ -234,20 +289,22 @@ pmc = (event >> EVENT_PMC_SHIFT) & EVENT_PMC_MASK; unit = (event >> EVENT_UNIT_SHIFT) & EVENT_UNIT_MASK; cache = (event >> EVENT_CACHE_SEL_SHIFT) & EVENT_CACHE_SEL_MASK; - ebb = (event >> PERF_EVENT_CONFIG_EBB_SHIFT) & EVENT_EBB_MASK; - - /* Clear the EBB bit in the event, so event checks work below */ - event &= ~(EVENT_EBB_MASK << PERF_EVENT_CONFIG_EBB_SHIFT); + ebb = (event >> EVENT_EBB_SHIFT) & EVENT_EBB_MASK; if (pmc) { + u64 base_event; + if (pmc > 6) return -1; - mask |= CNST_PMC_MASK(pmc); - value |= CNST_PMC_VAL(pmc); + /* Ignore Linux defined bits when checking event below */ + base_event = event & ~EVENT_LINUX_MASK; - if (pmc >= 5 && event != 0x500fa && event != 0x600f4) + if (pmc >= 5 && base_event != 0x500fa && base_event != 0x600f4) return -1; + + mask |= CNST_PMC_MASK(pmc); + value |= CNST_PMC_VAL(pmc); } if (pmc <= 4) { @@ -268,9 +325,10 @@ * HV writable, and there is no API for guest kernels to modify * it. The solution is for the hypervisor to initialise the * field to zeroes, and for us to only ever allow events that - * have a cache selector of zero. + * have a cache selector of zero. The bank selector (bit 3) is + * irrelevant, as long as the rest of the value is 0. */ - if (cache) + if (cache & 0x7) return -1; } else if (event & EVENT_IS_L1) { @@ -311,6 +369,15 @@ /* EBB events must specify the PMC */ return -1; + if (event & EVENT_WANTS_BHRB) { + if (!ebb) + /* Only EBB events can request BHRB */ + return -1; + + mask |= CNST_IFM_MASK; + value |= CNST_IFM_VAL(event >> EVENT_IFM_SHIFT); + } + /* * All events must agree on EBB, either all request it or none. * EBB events are pinned & exclusive, so this should never actually @@ -400,6 +467,11 @@ mmcra |= val << MMCRA_THR_CMP_SHIFT; } + if (event[i] & EVENT_WANTS_BHRB) { + val = (event[i] >> EVENT_IFM_SHIFT) & EVENT_IFM_MASK; + mmcra |= val << MMCRA_IFM_SHIFT; + } + hwc[i] = pmc - 1; } @@ -557,6 +629,8 @@ [PERF_COUNT_HW_INSTRUCTIONS] = PM_INST_CMPL, [PERF_COUNT_HW_BRANCH_INSTRUCTIONS] = PM_BRU_FIN, [PERF_COUNT_HW_BRANCH_MISSES] = PM_BR_MPRED_CMPL, + [PERF_COUNT_HW_CACHE_REFERENCES] = PM_LD_REF_L1, + [PERF_COUNT_HW_CACHE_MISSES] = PM_LD_MISS_L1, }; static u64 power8_bhrb_filter_map(u64 branch_sample_type) @@ -596,6 +670,116 @@ mtspr(SPRN_MMCRA, (mfspr(SPRN_MMCRA) | pmu_bhrb_filter)); } +#define C(x) PERF_COUNT_HW_CACHE_##x + +/* + * Table of generalized cache-related events. + * 0 means not supported, -1 means nonsensical, other values + * are event codes. + */ +static int power8_cache_events[C(MAX)][C(OP_MAX)][C(RESULT_MAX)] = { + [ C(L1D) ] = { + [ C(OP_READ) ] = { + [ C(RESULT_ACCESS) ] = PM_LD_REF_L1, + [ C(RESULT_MISS) ] = PM_LD_MISS_L1, + }, + [ C(OP_WRITE) ] = { + [ C(RESULT_ACCESS) ] = 0, + [ C(RESULT_MISS) ] = PM_ST_MISS_L1, + }, + [ C(OP_PREFETCH) ] = { + [ C(RESULT_ACCESS) ] = PM_L1_PREF, + [ C(RESULT_MISS) ] = 0, + }, + }, + [ C(L1I) ] = { + [ C(OP_READ) ] = { + [ C(RESULT_ACCESS) ] = PM_INST_FROM_L1, + [ C(RESULT_MISS) ] = PM_L1_ICACHE_MISS, + }, + [ C(OP_WRITE) ] = { + [ C(RESULT_ACCESS) ] = PM_L1_DEMAND_WRITE, + [ C(RESULT_MISS) ] = -1, + }, + [ C(OP_PREFETCH) ] = { + [ C(RESULT_ACCESS) ] = PM_IC_PREF_WRITE, + [ C(RESULT_MISS) ] = 0, + }, + }, + [ C(LL) ] = { + [ C(OP_READ) ] = { + [ C(RESULT_ACCESS) ] = PM_DATA_FROM_L3, + [ C(RESULT_MISS) ] = PM_DATA_FROM_L3MISS, + }, + [ C(OP_WRITE) ] = { + [ C(RESULT_ACCESS) ] = PM_L2_ST, + [ C(RESULT_MISS) ] = PM_L2_ST_MISS, + }, + [ C(OP_PREFETCH) ] = { + [ C(RESULT_ACCESS) ] = PM_L3_PREF_ALL, + [ C(RESULT_MISS) ] = 0, + }, + }, + [ C(DTLB) ] = { + [ C(OP_READ) ] = { + [ C(RESULT_ACCESS) ] = 0, + [ C(RESULT_MISS) ] = PM_DTLB_MISS, + }, + [ C(OP_WRITE) ] = { + [ C(RESULT_ACCESS) ] = -1, + [ C(RESULT_MISS) ] = -1, + }, + [ C(OP_PREFETCH) ] = { + [ C(RESULT_ACCESS) ] = -1, + [ C(RESULT_MISS) ] = -1, + }, + }, + [ C(ITLB) ] = { + [ C(OP_READ) ] = { + [ C(RESULT_ACCESS) ] = 0, + [ C(RESULT_MISS) ] = PM_ITLB_MISS, + }, + [ 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) ] = PM_BRU_FIN, + [ C(RESULT_MISS) ] = PM_BR_MPRED_CMPL, + }, + [ 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) ] = -1, + [ C(RESULT_MISS) ] = -1, + }, + [ C(OP_WRITE) ] = { + [ C(RESULT_ACCESS) ] = -1, + [ C(RESULT_MISS) ] = -1, + }, + [ C(OP_PREFETCH) ] = { + [ C(RESULT_ACCESS) ] = -1, + [ C(RESULT_MISS) ] = -1, + }, + }, +}; + +#undef C + static struct power_pmu power8_pmu = { .name = "POWER8", .n_counter = 6, @@ -608,9 +792,10 @@ .get_constraint = power8_get_constraint, .get_alternatives = power8_get_alternatives, .disable_pmc = power8_disable_pmc, - .flags = PPMU_HAS_SSLOT | PPMU_HAS_SIER | PPMU_BHRB | PPMU_EBB, + .flags = PPMU_HAS_SIER | PPMU_ARCH_207S, .n_generic = ARRAY_SIZE(power8_generic_events), .generic_events = power8_generic_events, + .cache_events = &power8_cache_events, .attr_groups = power8_pmu_attr_groups, .bhrb_nr = 32, }; @@ -630,6 +815,9 @@ /* Tell userspace that EBB is supported */ cur_cpu_spec->cpu_user_features2 |= PPC_FEATURE2_EBB; + if (cpu_has_feature(CPU_FTR_PMAO_BUG)) + pr_info("PMAO restore workaround active.\n"); + return 0; } early_initcall(init_power8_pmu); --- linux-3.13.0.orig/arch/powerpc/platforms/85xx/Kconfig +++ linux-3.13.0/arch/powerpc/platforms/85xx/Kconfig @@ -253,6 +253,8 @@ select ARCH_REQUIRE_GPIOLIB select GPIO_MPC8XXX select HAS_RAPIDIO + select HAS_FSL_QBMAN + select HAS_FSL_PME select PPC_EPAPR_HV_PIC help This option enables support for the FSL CoreNet based boards. --- linux-3.13.0.orig/arch/powerpc/platforms/85xx/corenet_generic.c +++ linux-3.13.0/arch/powerpc/platforms/85xx/corenet_generic.c @@ -64,6 +64,9 @@ .compatible = "simple-bus" }, { + .compatible = "fsl,dpaa" + }, + { .compatible = "fsl,srio", }, { @@ -96,6 +99,32 @@ return of_platform_bus_probe(NULL, of_device_ids, NULL); } +/* Early setup is required for large chunks of contiguous (and coarsely-aligned) + * memory. The following shoe-horns Qman/Bman "init_early" calls into the + * platform setup to let them parse their CCSR nodes early on. */ +#ifdef CONFIG_FSL_QMAN_CONFIG +void __init qman_init_early(void); +#endif +#ifdef CONFIG_FSL_BMAN_CONFIG +void __init bman_init_early(void); +#endif +#ifdef CONFIG_FSL_PME2_CTRL +void __init pme2_init_early(void); +#endif + +__init void corenet_ds_init_early(void) +{ +#ifdef CONFIG_FSL_QMAN_CONFIG + qman_init_early(); +#endif +#ifdef CONFIG_FSL_BMAN_CONFIG + bman_init_early(); +#endif +#ifdef CONFIG_FSL_PME2_CTRL + pme2_init_early(); +#endif +} + static const char * const boards[] __initconst = { "fsl,P2041RDB", "fsl,P3041DS", @@ -103,6 +132,7 @@ "fsl,P5020DS", "fsl,P5040DS", "fsl,T4240QDS", + "fsl,T4240RDB", "fsl,B4860QDS", "fsl,B4420QDS", "fsl,B4220QDS", @@ -116,6 +146,7 @@ "fsl,P5020DS-hv", "fsl,P5040DS-hv", "fsl,T4240QDS-hv", + "fsl,T4240RDB-hv", "fsl,B4860QDS-hv", "fsl,B4420QDS-hv", "fsl,B4220QDS-hv", @@ -173,6 +204,7 @@ #else .power_save = e500_idle, #endif + .init_early = corenet_ds_init_early, }; machine_arch_initcall(corenet_generic, corenet_gen_publish_devices); --- linux-3.13.0.orig/arch/powerpc/platforms/85xx/smp.c +++ linux-3.13.0/arch/powerpc/platforms/85xx/smp.c @@ -176,6 +176,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); @@ -264,11 +267,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((u64)*((unsigned long long *)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); @@ -293,6 +303,7 @@ }; #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) @@ -311,6 +322,14 @@ 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 map_and_flush(unsigned long paddr) { @@ -362,11 +381,14 @@ static void mpc85xx_smp_machine_kexec(struct kimage *image) { +#ifdef CONFIG_PPC32 int timeout = INT_MAX; int i, num_cpus = num_present_cpus(); +#endif mpc85xx_smp_flush_dcache_kexec(image); +#ifdef CONFIG_PPC32 if (image->type == KEXEC_TYPE_DEFAULT) smp_call_function(mpc85xx_smp_kexec_down, NULL, 0); @@ -384,6 +406,7 @@ if ( i == smp_processor_id() ) continue; mpic_reset_core(i); } +#endif default_machine_kexec(image); } --- linux-3.13.0.orig/arch/powerpc/platforms/cell/spufs/inode.c +++ linux-3.13.0/arch/powerpc/platforms/cell/spufs/inode.c @@ -164,7 +164,7 @@ struct dentry *dentry, *tmp; mutex_lock(&dir->d_inode->i_mutex); - list_for_each_entry_safe(dentry, tmp, &dir->d_subdirs, d_u.d_child) { + list_for_each_entry_safe(dentry, tmp, &dir->d_subdirs, d_child) { spin_lock(&dentry->d_lock); if (!(d_unhashed(dentry)) && dentry->d_inode) { dget_dlock(dentry); --- linux-3.13.0.orig/arch/powerpc/platforms/powernv/Kconfig +++ linux-3.13.0/arch/powerpc/platforms/powernv/Kconfig @@ -11,6 +11,12 @@ select PPC_UDBG_16550 select PPC_SCOM select ARCH_RANDOM + select CPU_FREQ + select CPU_FREQ_GOV_PERFORMANCE + select CPU_FREQ_GOV_POWERSAVE + select CPU_FREQ_GOV_USERSPACE + select CPU_FREQ_GOV_ONDEMAND + select CPU_FREQ_GOV_CONSERVATIVE default y config POWERNV_MSI --- linux-3.13.0.orig/arch/powerpc/platforms/powernv/Makefile +++ linux-3.13.0/arch/powerpc/platforms/powernv/Makefile @@ -1,6 +1,7 @@ -obj-y += setup.o opal-takeover.o opal-wrappers.o opal.o +obj-y += setup.o opal-takeover.o opal-wrappers.o opal.o opal-async.o obj-y += opal-rtc.o opal-nvram.o opal-lpc.o opal-flash.o -obj-y += rng.o +obj-y += rng.o opal-elog.o opal-dump.o opal-sensor.o +obj-y += opal-msglog.o obj-$(CONFIG_SMP) += smp.o obj-$(CONFIG_PCI) += pci.o pci-p5ioc2.o pci-ioda.o --- linux-3.13.0.orig/arch/powerpc/platforms/powernv/eeh-ioda.c +++ linux-3.13.0/arch/powerpc/platforms/powernv/eeh-ioda.c @@ -114,6 +114,7 @@ ioda_eeh_inbB_dbgfs_set, "0x%llx\n"); #endif /* CONFIG_DEBUG_FS */ + /** * ioda_eeh_post_init - Chip dependent post initialization * @hose: PCI controller @@ -221,6 +222,22 @@ return ret; } +static void ioda_eeh_phb_diag(struct pci_controller *hose) +{ + struct pnv_phb *phb = hose->private_data; + long rc; + + rc = opal_pci_get_phb_diag_data2(phb->opal_id, phb->diag.blob, + PNV_PCI_DIAG_BUF_SIZE); + if (rc != OPAL_SUCCESS) { + pr_warning("%s: Failed to get diag-data for PHB#%x (%ld)\n", + __func__, hose->global_number, rc); + return; + } + + pnv_pci_dump_phb_diag_data(hose, phb->diag.blob); +} + /** * ioda_eeh_get_state - Retrieve the state of PE * @pe: EEH PE @@ -233,7 +250,7 @@ { s64 ret = 0; u8 fstate; - u16 pcierr; + __be16 pcierr; u32 pe_no; int result; struct pci_controller *hose = pe->phb; @@ -267,11 +284,14 @@ result = 0; result &= ~EEH_STATE_RESET_ACTIVE; - if (pcierr != OPAL_EEH_PHB_ERROR) { + if (be16_to_cpu(pcierr) != OPAL_EEH_PHB_ERROR) { result |= EEH_STATE_MMIO_ACTIVE; result |= EEH_STATE_DMA_ACTIVE; result |= EEH_STATE_MMIO_ENABLED; result |= EEH_STATE_DMA_ENABLED; + } else if (!(pe->state & EEH_PE_ISOLATED)) { + eeh_pe_state_mark(pe, EEH_PE_ISOLATED); + ioda_eeh_phb_diag(hose); } return result; @@ -315,6 +335,15 @@ __func__, fstate, hose->global_number, pe_no); } + /* Dump PHB diag-data for frozen PE */ + if (result != EEH_STATE_NOT_SUPPORT && + (result & (EEH_STATE_MMIO_ACTIVE | EEH_STATE_DMA_ACTIVE)) != + (EEH_STATE_MMIO_ACTIVE | EEH_STATE_DMA_ACTIVE) && + !(pe->state & EEH_PE_ISOLATED)) { + eeh_pe_state_mark(pe, EEH_PE_ISOLATED); + ioda_eeh_phb_diag(hose); + } + return result; } @@ -490,8 +519,7 @@ static int ioda_eeh_reset(struct eeh_pe *pe, int option) { struct pci_controller *hose = pe->phb; - struct eeh_dev *edev; - struct pci_dev *dev; + struct pci_bus *bus; int ret; /* @@ -520,76 +548,18 @@ if (pe->type & EEH_PE_PHB) { ret = ioda_eeh_phb_reset(hose, option); } else { - if (pe->type & EEH_PE_DEVICE) { - /* - * If it's device PE, we didn't refer to the parent - * PCI bus yet. So we have to figure it out indirectly. - */ - edev = list_first_entry(&pe->edevs, - struct eeh_dev, list); - dev = eeh_dev_to_pci_dev(edev); - dev = dev->bus->self; - } else { - /* - * If it's bus PE, the parent PCI bus is already there - * and just pick it up. - */ - dev = pe->bus->self; - } - - /* - * Do reset based on the fact that the direct upstream bridge - * is root bridge (port) or not. - */ - if (dev->bus->number == 0) + bus = eeh_pe_bus_get(pe); + if (pci_is_root_bus(bus) || + pci_is_root_bus(bus->parent)) ret = ioda_eeh_root_reset(hose, option); else - ret = ioda_eeh_bridge_reset(hose, dev, option); + ret = ioda_eeh_bridge_reset(hose, bus->self, option); } return ret; } /** - * ioda_eeh_get_log - Retrieve error log - * @pe: EEH PE - * @severity: Severity level of the log - * @drv_log: buffer to store the log - * @len: space of the log buffer - * - * The function is used to retrieve error log from P7IOC. - */ -static int ioda_eeh_get_log(struct eeh_pe *pe, int severity, - char *drv_log, unsigned long len) -{ - s64 ret; - unsigned long flags; - struct pci_controller *hose = pe->phb; - struct pnv_phb *phb = hose->private_data; - - spin_lock_irqsave(&phb->lock, flags); - - ret = opal_pci_get_phb_diag_data2(phb->opal_id, - phb->diag.blob, PNV_PCI_DIAG_BUF_SIZE); - if (ret) { - spin_unlock_irqrestore(&phb->lock, flags); - pr_warning("%s: Can't get log for PHB#%x-PE#%x (%lld)\n", - __func__, hose->global_number, pe->addr, ret); - return -EIO; - } - - /* - * FIXME: We probably need log the error in somewhere. - * Lets make it up in future. - */ - /* pr_info("%s", phb->diag.blob); */ - - spin_unlock_irqrestore(&phb->lock, flags); - - return 0; -} - -/** * ioda_eeh_configure_bridge - Configure the PCI bridges for the indicated PE * @pe: EEH PE * @@ -670,167 +640,6 @@ } } -static void ioda_eeh_p7ioc_phb_diag(struct pci_controller *hose, - struct OpalIoPhbErrorCommon *common) -{ - struct OpalIoP7IOCPhbErrorData *data; - int i; - - data = (struct OpalIoP7IOCPhbErrorData *)common; - - pr_info("P7IOC PHB#%x Diag-data (Version: %d)\n\n", - hose->global_number, common->version); - - pr_info(" brdgCtl: %08x\n", data->brdgCtl); - - pr_info(" portStatusReg: %08x\n", data->portStatusReg); - pr_info(" rootCmplxStatus: %08x\n", data->rootCmplxStatus); - pr_info(" busAgentStatus: %08x\n", data->busAgentStatus); - - pr_info(" deviceStatus: %08x\n", data->deviceStatus); - pr_info(" slotStatus: %08x\n", data->slotStatus); - pr_info(" linkStatus: %08x\n", data->linkStatus); - pr_info(" devCmdStatus: %08x\n", data->devCmdStatus); - pr_info(" devSecStatus: %08x\n", data->devSecStatus); - - pr_info(" rootErrorStatus: %08x\n", data->rootErrorStatus); - pr_info(" uncorrErrorStatus: %08x\n", data->uncorrErrorStatus); - pr_info(" corrErrorStatus: %08x\n", data->corrErrorStatus); - pr_info(" tlpHdr1: %08x\n", data->tlpHdr1); - pr_info(" tlpHdr2: %08x\n", data->tlpHdr2); - pr_info(" tlpHdr3: %08x\n", data->tlpHdr3); - pr_info(" tlpHdr4: %08x\n", data->tlpHdr4); - pr_info(" sourceId: %08x\n", data->sourceId); - - pr_info(" errorClass: %016llx\n", data->errorClass); - pr_info(" correlator: %016llx\n", data->correlator); - pr_info(" p7iocPlssr: %016llx\n", data->p7iocPlssr); - pr_info(" p7iocCsr: %016llx\n", data->p7iocCsr); - pr_info(" lemFir: %016llx\n", data->lemFir); - pr_info(" lemErrorMask: %016llx\n", data->lemErrorMask); - pr_info(" lemWOF: %016llx\n", data->lemWOF); - pr_info(" phbErrorStatus: %016llx\n", data->phbErrorStatus); - pr_info(" phbFirstErrorStatus: %016llx\n", data->phbFirstErrorStatus); - pr_info(" phbErrorLog0: %016llx\n", data->phbErrorLog0); - pr_info(" phbErrorLog1: %016llx\n", data->phbErrorLog1); - pr_info(" mmioErrorStatus: %016llx\n", data->mmioErrorStatus); - pr_info(" mmioFirstErrorStatus: %016llx\n", data->mmioFirstErrorStatus); - pr_info(" mmioErrorLog0: %016llx\n", data->mmioErrorLog0); - pr_info(" mmioErrorLog1: %016llx\n", data->mmioErrorLog1); - pr_info(" dma0ErrorStatus: %016llx\n", data->dma0ErrorStatus); - pr_info(" dma0FirstErrorStatus: %016llx\n", data->dma0FirstErrorStatus); - pr_info(" dma0ErrorLog0: %016llx\n", data->dma0ErrorLog0); - pr_info(" dma0ErrorLog1: %016llx\n", data->dma0ErrorLog1); - pr_info(" dma1ErrorStatus: %016llx\n", data->dma1ErrorStatus); - pr_info(" dma1FirstErrorStatus: %016llx\n", data->dma1FirstErrorStatus); - pr_info(" dma1ErrorLog0: %016llx\n", data->dma1ErrorLog0); - pr_info(" dma1ErrorLog1: %016llx\n", data->dma1ErrorLog1); - - for (i = 0; i < OPAL_P7IOC_NUM_PEST_REGS; i++) { - if ((data->pestA[i] >> 63) == 0 && - (data->pestB[i] >> 63) == 0) - continue; - - pr_info(" PE[%3d] PESTA: %016llx\n", i, data->pestA[i]); - pr_info(" PESTB: %016llx\n", data->pestB[i]); - } -} - -static void ioda_eeh_phb3_phb_diag(struct pci_controller *hose, - struct OpalIoPhbErrorCommon *common) -{ - struct OpalIoPhb3ErrorData *data; - int i; - - data = (struct OpalIoPhb3ErrorData*)common; - pr_info("PHB3 PHB#%x Diag-data (Version: %d)\n\n", - hose->global_number, common->version); - - pr_info(" brdgCtl: %08x\n", data->brdgCtl); - - pr_info(" portStatusReg: %08x\n", data->portStatusReg); - pr_info(" rootCmplxStatus: %08x\n", data->rootCmplxStatus); - pr_info(" busAgentStatus: %08x\n", data->busAgentStatus); - - pr_info(" deviceStatus: %08x\n", data->deviceStatus); - pr_info(" slotStatus: %08x\n", data->slotStatus); - pr_info(" linkStatus: %08x\n", data->linkStatus); - pr_info(" devCmdStatus: %08x\n", data->devCmdStatus); - pr_info(" devSecStatus: %08x\n", data->devSecStatus); - - pr_info(" rootErrorStatus: %08x\n", data->rootErrorStatus); - pr_info(" uncorrErrorStatus: %08x\n", data->uncorrErrorStatus); - pr_info(" corrErrorStatus: %08x\n", data->corrErrorStatus); - pr_info(" tlpHdr1: %08x\n", data->tlpHdr1); - pr_info(" tlpHdr2: %08x\n", data->tlpHdr2); - pr_info(" tlpHdr3: %08x\n", data->tlpHdr3); - pr_info(" tlpHdr4: %08x\n", data->tlpHdr4); - pr_info(" sourceId: %08x\n", data->sourceId); - pr_info(" errorClass: %016llx\n", data->errorClass); - pr_info(" correlator: %016llx\n", data->correlator); - pr_info(" nFir: %016llx\n", data->nFir); - pr_info(" nFirMask: %016llx\n", data->nFirMask); - pr_info(" nFirWOF: %016llx\n", data->nFirWOF); - pr_info(" PhbPlssr: %016llx\n", data->phbPlssr); - pr_info(" PhbCsr: %016llx\n", data->phbCsr); - pr_info(" lemFir: %016llx\n", data->lemFir); - pr_info(" lemErrorMask: %016llx\n", data->lemErrorMask); - pr_info(" lemWOF: %016llx\n", data->lemWOF); - pr_info(" phbErrorStatus: %016llx\n", data->phbErrorStatus); - pr_info(" phbFirstErrorStatus: %016llx\n", data->phbFirstErrorStatus); - pr_info(" phbErrorLog0: %016llx\n", data->phbErrorLog0); - pr_info(" phbErrorLog1: %016llx\n", data->phbErrorLog1); - pr_info(" mmioErrorStatus: %016llx\n", data->mmioErrorStatus); - pr_info(" mmioFirstErrorStatus: %016llx\n", data->mmioFirstErrorStatus); - pr_info(" mmioErrorLog0: %016llx\n", data->mmioErrorLog0); - pr_info(" mmioErrorLog1: %016llx\n", data->mmioErrorLog1); - pr_info(" dma0ErrorStatus: %016llx\n", data->dma0ErrorStatus); - pr_info(" dma0FirstErrorStatus: %016llx\n", data->dma0FirstErrorStatus); - pr_info(" dma0ErrorLog0: %016llx\n", data->dma0ErrorLog0); - pr_info(" dma0ErrorLog1: %016llx\n", data->dma0ErrorLog1); - pr_info(" dma1ErrorStatus: %016llx\n", data->dma1ErrorStatus); - pr_info(" dma1FirstErrorStatus: %016llx\n", data->dma1FirstErrorStatus); - pr_info(" dma1ErrorLog0: %016llx\n", data->dma1ErrorLog0); - pr_info(" dma1ErrorLog1: %016llx\n", data->dma1ErrorLog1); - - for (i = 0; i < OPAL_PHB3_NUM_PEST_REGS; i++) { - if ((data->pestA[i] >> 63) == 0 && - (data->pestB[i] >> 63) == 0) - continue; - - pr_info(" PE[%3d] PESTA: %016llx\n", i, data->pestA[i]); - pr_info(" PESTB: %016llx\n", data->pestB[i]); - } -} - -static void ioda_eeh_phb_diag(struct pci_controller *hose) -{ - struct pnv_phb *phb = hose->private_data; - struct OpalIoPhbErrorCommon *common; - long rc; - - rc = opal_pci_get_phb_diag_data2(phb->opal_id, phb->diag.blob, - PNV_PCI_DIAG_BUF_SIZE); - if (rc != OPAL_SUCCESS) { - pr_warning("%s: Failed to get diag-data for PHB#%x (%ld)\n", - __func__, hose->global_number, rc); - return; - } - - common = (struct OpalIoPhbErrorCommon *)phb->diag.blob; - switch (common->ioType) { - case OPAL_PHB_ERROR_DATA_TYPE_P7IOC: - ioda_eeh_p7ioc_phb_diag(hose, common); - break; - case OPAL_PHB_ERROR_DATA_TYPE_PHB3: - ioda_eeh_phb3_phb_diag(hose, common); - break; - default: - pr_warning("%s: Unrecognized I/O chip %d\n", - __func__, common->ioType); - } -} - static int ioda_eeh_get_phb_pe(struct pci_controller *hose, struct eeh_pe **pe) { @@ -884,12 +693,12 @@ */ static int ioda_eeh_next_error(struct eeh_pe **pe) { - struct pci_controller *hose, *tmp; + struct pci_controller *hose; struct pnv_phb *phb; - u64 frozen_pe_no; - u16 err_type, severity; + __be64 frozen_pe_no; + __be16 err_type, severity; long rc; - int ret = 1; + int ret = EEH_NEXT_ERR_NONE; /* * While running here, it's safe to purge the event queue. @@ -899,7 +708,7 @@ eeh_remove_event(NULL); opal_notifier_update_evt(OPAL_EVENT_PCI_ERROR, 0x0ul); - list_for_each_entry_safe(hose, tmp, &hose_list, list_node) { + list_for_each_entry(hose, &hose_list, list_node) { /* * If the subordinate PCI buses of the PHB has been * removed, we needn't take care of it any more. @@ -920,8 +729,8 @@ } /* If the PHB doesn't have error, stop processing */ - if (err_type == OPAL_EEH_NO_ERROR || - severity == OPAL_EEH_SEV_NO_ERROR) { + if (be16_to_cpu(err_type) == OPAL_EEH_NO_ERROR || + be16_to_cpu(severity) == OPAL_EEH_SEV_NO_ERROR) { pr_devel("%s: No error found on PHB#%x\n", __func__, hose->global_number); continue; @@ -933,66 +742,91 @@ * specific PHB. */ pr_devel("%s: Error (%d, %d, %llu) on PHB#%x\n", - __func__, err_type, severity, - frozen_pe_no, hose->global_number); - switch (err_type) { + __func__, be16_to_cpu(err_type), be16_to_cpu(severity), + be64_to_cpu(frozen_pe_no), hose->global_number); + switch (be16_to_cpu(err_type)) { case OPAL_EEH_IOC_ERROR: - if (severity == OPAL_EEH_SEV_IOC_DEAD) { - list_for_each_entry_safe(hose, tmp, - &hose_list, list_node) { + if (be16_to_cpu(severity) == OPAL_EEH_SEV_IOC_DEAD) { + list_for_each_entry(hose, &hose_list, + list_node) { phb = hose->private_data; phb->eeh_state |= PNV_EEH_STATE_REMOVED; } pr_err("EEH: dead IOC detected\n"); - ret = 4; - goto out; - } else if (severity == OPAL_EEH_SEV_INF) { + ret = EEH_NEXT_ERR_DEAD_IOC; + } else if (be16_to_cpu(severity) == OPAL_EEH_SEV_INF) { pr_info("EEH: IOC informative error " "detected\n"); ioda_eeh_hub_diag(hose); + ret = EEH_NEXT_ERR_NONE; } break; case OPAL_EEH_PHB_ERROR: - if (severity == OPAL_EEH_SEV_PHB_DEAD) { + if (be16_to_cpu(severity) == OPAL_EEH_SEV_PHB_DEAD) { if (ioda_eeh_get_phb_pe(hose, pe)) break; pr_err("EEH: dead PHB#%x detected\n", hose->global_number); phb->eeh_state |= PNV_EEH_STATE_REMOVED; - ret = 3; - goto out; - } else if (severity == OPAL_EEH_SEV_PHB_FENCED) { + ret = EEH_NEXT_ERR_DEAD_PHB; + } else if (be16_to_cpu(severity) == + OPAL_EEH_SEV_PHB_FENCED) { if (ioda_eeh_get_phb_pe(hose, pe)) break; pr_err("EEH: fenced PHB#%x detected\n", hose->global_number); - ret = 2; - goto out; - } else if (severity == OPAL_EEH_SEV_INF) { + ret = EEH_NEXT_ERR_FENCED_PHB; + } else if (be16_to_cpu(severity) == OPAL_EEH_SEV_INF) { pr_info("EEH: PHB#%x informative error " "detected\n", hose->global_number); ioda_eeh_phb_diag(hose); + ret = EEH_NEXT_ERR_NONE; } break; case OPAL_EEH_PE_ERROR: - if (ioda_eeh_get_pe(hose, frozen_pe_no, pe)) + if (ioda_eeh_get_pe(hose, be64_to_cpu(frozen_pe_no), + pe)) break; pr_err("EEH: Frozen PE#%x on PHB#%x detected\n", (*pe)->addr, (*pe)->phb->global_number); - ret = 1; - goto out; + ret = EEH_NEXT_ERR_FROZEN_PE; + break; + default: + pr_warn("%s: Unexpected error type %d\n", + __func__, be16_to_cpu(err_type)); + } + + /* + * EEH core will try recover from fenced PHB or + * frozen PE. In the time for frozen PE, EEH core + * enable IO path for that before collecting logs, + * but it ruins the site. So we have to dump the + * log in advance here. + */ + if ((ret == EEH_NEXT_ERR_FROZEN_PE || + ret == EEH_NEXT_ERR_FENCED_PHB) && + !((*pe)->state & EEH_PE_ISOLATED)) { + eeh_pe_state_mark(*pe, EEH_PE_ISOLATED); + ioda_eeh_phb_diag(hose); } + + /* + * If we have no errors on the specific PHB or only + * informative error there, we continue poking it. + * Otherwise, we need actions to be taken by upper + * layer. + */ + if (ret > EEH_NEXT_ERR_INF) + break; } - ret = 0; -out: return ret; } @@ -1001,7 +835,6 @@ .set_option = ioda_eeh_set_option, .get_state = ioda_eeh_get_state, .reset = ioda_eeh_reset, - .get_log = ioda_eeh_get_log, .configure_bridge = ioda_eeh_configure_bridge, .next_error = ioda_eeh_next_error }; --- linux-3.13.0.orig/arch/powerpc/platforms/powernv/opal-async.c +++ linux-3.13.0/arch/powerpc/platforms/powernv/opal-async.c @@ -0,0 +1,203 @@ +/* + * PowerNV OPAL asynchronous completion interfaces + * + * Copyright 2013 IBM Corp. + * + * 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. + */ + +#undef DEBUG + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define N_ASYNC_COMPLETIONS 64 + +static DECLARE_BITMAP(opal_async_complete_map, N_ASYNC_COMPLETIONS) = {~0UL}; +static DECLARE_BITMAP(opal_async_token_map, N_ASYNC_COMPLETIONS); +static DECLARE_WAIT_QUEUE_HEAD(opal_async_wait); +static DEFINE_SPINLOCK(opal_async_comp_lock); +static struct semaphore opal_async_sem; +static struct opal_msg *opal_async_responses; +static unsigned int opal_max_async_tokens; + +int __opal_async_get_token(void) +{ + unsigned long flags; + int token; + + spin_lock_irqsave(&opal_async_comp_lock, flags); + token = find_first_bit(opal_async_complete_map, opal_max_async_tokens); + if (token >= opal_max_async_tokens) { + token = -EBUSY; + goto out; + } + + if (__test_and_set_bit(token, opal_async_token_map)) { + token = -EBUSY; + goto out; + } + + __clear_bit(token, opal_async_complete_map); + +out: + spin_unlock_irqrestore(&opal_async_comp_lock, flags); + return token; +} + +int opal_async_get_token_interruptible(void) +{ + int token; + + /* Wait until a token is available */ + if (down_interruptible(&opal_async_sem)) + return -ERESTARTSYS; + + token = __opal_async_get_token(); + if (token < 0) + up(&opal_async_sem); + + return token; +} + +int __opal_async_release_token(int token) +{ + unsigned long flags; + + if (token < 0 || token >= opal_max_async_tokens) { + pr_err("%s: Passed token is out of range, token %d\n", + __func__, token); + return -EINVAL; + } + + spin_lock_irqsave(&opal_async_comp_lock, flags); + __set_bit(token, opal_async_complete_map); + __clear_bit(token, opal_async_token_map); + spin_unlock_irqrestore(&opal_async_comp_lock, flags); + + return 0; +} + +int opal_async_release_token(int token) +{ + int ret; + + ret = __opal_async_release_token(token); + if (ret) + return ret; + + up(&opal_async_sem); + + return 0; +} + +int opal_async_wait_response(uint64_t token, struct opal_msg *msg) +{ + if (token >= opal_max_async_tokens) { + pr_err("%s: Invalid token passed\n", __func__); + return -EINVAL; + } + + if (!msg) { + pr_err("%s: Invalid message pointer passed\n", __func__); + return -EINVAL; + } + + wait_event(opal_async_wait, test_bit(token, opal_async_complete_map)); + memcpy(msg, &opal_async_responses[token], sizeof(*msg)); + + return 0; +} + +static int opal_async_comp_event(struct notifier_block *nb, + unsigned long msg_type, void *msg) +{ + struct opal_msg *comp_msg = msg; + unsigned long flags; + + if (msg_type != OPAL_MSG_ASYNC_COMP) + return 0; + + memcpy(&opal_async_responses[comp_msg->params[0]], comp_msg, + sizeof(*comp_msg)); + spin_lock_irqsave(&opal_async_comp_lock, flags); + __set_bit(comp_msg->params[0], opal_async_complete_map); + spin_unlock_irqrestore(&opal_async_comp_lock, flags); + + wake_up(&opal_async_wait); + + return 0; +} + +static struct notifier_block opal_async_comp_nb = { + .notifier_call = opal_async_comp_event, + .next = NULL, + .priority = 0, +}; + +static int __init opal_async_comp_init(void) +{ + struct device_node *opal_node; + const __be32 *async; + int err; + + opal_node = of_find_node_by_path("/ibm,opal"); + if (!opal_node) { + pr_err("%s: Opal node not found\n", __func__); + err = -ENOENT; + goto out; + } + + async = of_get_property(opal_node, "opal-msg-async-num", NULL); + if (!async) { + pr_err("%s: %s has no opal-msg-async-num\n", + __func__, opal_node->full_name); + err = -ENOENT; + goto out_opal_node; + } + + opal_max_async_tokens = be32_to_cpup(async); + if (opal_max_async_tokens > N_ASYNC_COMPLETIONS) + opal_max_async_tokens = N_ASYNC_COMPLETIONS; + + err = opal_message_notifier_register(OPAL_MSG_ASYNC_COMP, + &opal_async_comp_nb); + if (err) { + pr_err("%s: Can't register OPAL event notifier (%d)\n", + __func__, err); + goto out_opal_node; + } + + opal_async_responses = kzalloc( + sizeof(*opal_async_responses) * opal_max_async_tokens, + GFP_KERNEL); + if (!opal_async_responses) { + pr_err("%s: Out of memory, failed to do asynchronous " + "completion init\n", __func__); + err = -ENOMEM; + goto out_opal_node; + } + + /* Initialize to 1 less than the maximum tokens available, as we may + * require to pop one during emergency through synchronous call to + * __opal_async_get_token() + */ + sema_init(&opal_async_sem, opal_max_async_tokens - 1); + +out_opal_node: + of_node_put(opal_node); +out: + return err; +} +subsys_initcall(opal_async_comp_init); --- linux-3.13.0.orig/arch/powerpc/platforms/powernv/opal-dump.c +++ linux-3.13.0/arch/powerpc/platforms/powernv/opal-dump.c @@ -0,0 +1,453 @@ +/* + * PowerNV OPAL Dump Interface + * + * Copyright 2013,2014 IBM Corp. + * + * 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 + +#define DUMP_TYPE_FSP 0x01 + +struct dump_obj { + struct kobject kobj; + struct bin_attribute dump_attr; + uint32_t id; /* becomes object name */ + uint32_t type; + uint32_t size; + char *buffer; +}; +#define to_dump_obj(x) container_of(x, struct dump_obj, kobj) + +struct dump_attribute { + struct attribute attr; + ssize_t (*show)(struct dump_obj *dump, struct dump_attribute *attr, + char *buf); + ssize_t (*store)(struct dump_obj *dump, struct dump_attribute *attr, + const char *buf, size_t count); +}; +#define to_dump_attr(x) container_of(x, struct dump_attribute, attr) + +static ssize_t dump_id_show(struct dump_obj *dump_obj, + struct dump_attribute *attr, + char *buf) +{ + return sprintf(buf, "0x%x\n", dump_obj->id); +} + +static const char* dump_type_to_string(uint32_t type) +{ + switch (type) { + case 0x01: return "SP Dump"; + case 0x02: return "System/Platform Dump"; + case 0x03: return "SMA Dump"; + default: return "unknown"; + } +} + +static ssize_t dump_type_show(struct dump_obj *dump_obj, + struct dump_attribute *attr, + char *buf) +{ + + return sprintf(buf, "0x%x %s\n", dump_obj->type, + dump_type_to_string(dump_obj->type)); +} + +static ssize_t dump_ack_show(struct dump_obj *dump_obj, + struct dump_attribute *attr, + char *buf) +{ + return sprintf(buf, "ack - acknowledge dump\n"); +} + +/* + * Send acknowledgement to OPAL + */ +static int64_t dump_send_ack(uint32_t dump_id) +{ + int rc; + + rc = opal_dump_ack(dump_id); + if (rc) + pr_warn("%s: Failed to send ack to Dump ID 0x%x (%d)\n", + __func__, dump_id, rc); + return rc; +} + +static void delay_release_kobj(void *kobj) +{ + kobject_put((struct kobject *)kobj); +} + +static ssize_t dump_ack_store(struct dump_obj *dump_obj, + struct dump_attribute *attr, + const char *buf, + size_t count) +{ + dump_send_ack(dump_obj->id); + sysfs_schedule_callback(&dump_obj->kobj, delay_release_kobj, + &dump_obj->kobj, THIS_MODULE); + return count; +} + +/* Attributes of a dump + * The binary attribute of the dump itself is dynamic + * due to the dynamic size of the dump + */ +static struct dump_attribute id_attribute = + __ATTR(id, 0666, dump_id_show, NULL); +static struct dump_attribute type_attribute = + __ATTR(type, 0666, dump_type_show, NULL); +static struct dump_attribute ack_attribute = + __ATTR(acknowledge, 0660, dump_ack_show, dump_ack_store); + +static ssize_t init_dump_show(struct dump_obj *dump_obj, + struct dump_attribute *attr, + char *buf) +{ + return sprintf(buf, "1 - initiate dump\n"); +} + +static int64_t dump_fips_init(uint8_t type) +{ + int rc; + + rc = opal_dump_init(type); + if (rc) + pr_warn("%s: Failed to initiate FipS dump (%d)\n", + __func__, rc); + return rc; +} + +static ssize_t init_dump_store(struct dump_obj *dump_obj, + struct dump_attribute *attr, + const char *buf, + size_t count) +{ + dump_fips_init(DUMP_TYPE_FSP); + pr_info("%s: Initiated FSP dump\n", __func__); + return count; +} + +static struct dump_attribute initiate_attribute = + __ATTR(initiate_dump, 0600, init_dump_show, init_dump_store); + +static struct attribute *initiate_attrs[] = { + &initiate_attribute.attr, + NULL, +}; + +static struct attribute_group initiate_attr_group = { + .attrs = initiate_attrs, +}; + +static struct kset *dump_kset; + +static ssize_t dump_attr_show(struct kobject *kobj, + struct attribute *attr, + char *buf) +{ + struct dump_attribute *attribute; + struct dump_obj *dump; + + attribute = to_dump_attr(attr); + dump = to_dump_obj(kobj); + + if (!attribute->show) + return -EIO; + + return attribute->show(dump, attribute, buf); +} + +static ssize_t dump_attr_store(struct kobject *kobj, + struct attribute *attr, + const char *buf, size_t len) +{ + struct dump_attribute *attribute; + struct dump_obj *dump; + + attribute = to_dump_attr(attr); + dump = to_dump_obj(kobj); + + if (!attribute->store) + return -EIO; + + return attribute->store(dump, attribute, buf, len); +} + +static const struct sysfs_ops dump_sysfs_ops = { + .show = dump_attr_show, + .store = dump_attr_store, +}; + +static void dump_release(struct kobject *kobj) +{ + struct dump_obj *dump; + + dump = to_dump_obj(kobj); + vfree(dump->buffer); + kfree(dump); +} + +static struct attribute *dump_default_attrs[] = { + &id_attribute.attr, + &type_attribute.attr, + &ack_attribute.attr, + NULL, +}; + +static struct kobj_type dump_ktype = { + .sysfs_ops = &dump_sysfs_ops, + .release = &dump_release, + .default_attrs = dump_default_attrs, +}; + +static int64_t dump_read_info(uint32_t *dump_id, uint32_t *dump_size, uint32_t *dump_type) +{ + __be32 id, size, type; + int rc; + + type = cpu_to_be32(0xffffffff); + + rc = opal_dump_info2(&id, &size, &type); + if (rc == OPAL_PARAMETER) + rc = opal_dump_info(&id, &size); + + *dump_id = be32_to_cpu(id); + *dump_size = be32_to_cpu(size); + *dump_type = be32_to_cpu(type); + + if (rc) + pr_warn("%s: Failed to get dump info (%d)\n", + __func__, rc); + return rc; +} + +static int64_t dump_read_data(struct dump_obj *dump) +{ + struct opal_sg_list *list; + uint64_t addr; + int64_t rc; + + /* Allocate memory */ + dump->buffer = vzalloc(PAGE_ALIGN(dump->size)); + if (!dump->buffer) { + pr_err("%s : Failed to allocate memory\n", __func__); + rc = -ENOMEM; + goto out; + } + + /* Generate SG list */ + list = opal_vmalloc_to_sg_list(dump->buffer, dump->size); + if (!list) { + rc = -ENOMEM; + goto out; + } + + /* First entry address */ + addr = __pa(list); + + /* Fetch data */ + rc = OPAL_BUSY_EVENT; + while (rc == OPAL_BUSY || rc == OPAL_BUSY_EVENT) { + rc = opal_dump_read(dump->id, addr); + if (rc == OPAL_BUSY_EVENT) { + opal_poll_events(NULL); + msleep(20); + } + } + + if (rc != OPAL_SUCCESS && rc != OPAL_PARTIAL) + pr_warn("%s: Extract dump failed for ID 0x%x\n", + __func__, dump->id); + + /* Free SG list */ + opal_free_sg_list(list); + +out: + return rc; +} + +static ssize_t dump_attr_read(struct file *filep, struct kobject *kobj, + struct bin_attribute *bin_attr, + char *buffer, loff_t pos, size_t count) +{ + ssize_t rc; + + struct dump_obj *dump = to_dump_obj(kobj); + + if (!dump->buffer) { + rc = dump_read_data(dump); + + if (rc != OPAL_SUCCESS && rc != OPAL_PARTIAL) { + vfree(dump->buffer); + dump->buffer = NULL; + + return -EIO; + } + if (rc == OPAL_PARTIAL) { + /* On a partial read, we just return EIO + * and rely on userspace to ask us to try + * again. + */ + pr_info("%s: Platform dump partially read.ID = 0x%x\n", + __func__, dump->id); + return -EIO; + } + } + + memcpy(buffer, dump->buffer + pos, count); + + /* You may think we could free the dump buffer now and retrieve + * it again later if needed, but due to current firmware limitation, + * that's not the case. So, once read into userspace once, + * we keep the dump around until it's acknowledged by userspace. + */ + + return count; +} + +static struct dump_obj *create_dump_obj(uint32_t id, size_t size, + uint32_t type) +{ + struct dump_obj *dump; + int rc; + + dump = kzalloc(sizeof(*dump), GFP_KERNEL); + if (!dump) + return NULL; + + dump->kobj.kset = dump_kset; + + kobject_init(&dump->kobj, &dump_ktype); + + sysfs_bin_attr_init(&dump->dump_attr); + + dump->dump_attr.attr.name = "dump"; + dump->dump_attr.attr.mode = 0400; + dump->dump_attr.size = size; + dump->dump_attr.read = dump_attr_read; + + dump->id = id; + dump->size = size; + dump->type = type; + + rc = kobject_add(&dump->kobj, NULL, "0x%x-0x%x", type, id); + if (rc) { + kobject_put(&dump->kobj); + return NULL; + } + + rc = sysfs_create_bin_file(&dump->kobj, &dump->dump_attr); + if (rc) { + kobject_put(&dump->kobj); + return NULL; + } + + pr_info("%s: New platform dump. ID = 0x%x Size %u\n", + __func__, dump->id, dump->size); + + kobject_uevent(&dump->kobj, KOBJ_ADD); + + return dump; +} + +static int process_dump(void) +{ + int rc; + uint32_t dump_id, dump_size, dump_type; + struct dump_obj *dump; + char name[22]; + + rc = dump_read_info(&dump_id, &dump_size, &dump_type); + if (rc != OPAL_SUCCESS) + return rc; + + sprintf(name, "0x%x-0x%x", dump_type, dump_id); + + /* we may get notified twice, let's handle + * that gracefully and not create two conflicting + * entries. + */ + if (kset_find_obj(dump_kset, name)) + return 0; + + dump = create_dump_obj(dump_id, dump_size, dump_type); + if (!dump) + return -1; + + return 0; +} + +static void dump_work_fn(struct work_struct *work) +{ + process_dump(); +} + +static DECLARE_WORK(dump_work, dump_work_fn); + +static void schedule_process_dump(void) +{ + schedule_work(&dump_work); +} + +/* + * New dump available notification + * + * Once we get notification, we add sysfs entries for it. + * We only fetch the dump on demand, and create sysfs asynchronously. + */ +static int dump_event(struct notifier_block *nb, + unsigned long events, void *change) +{ + if (events & OPAL_EVENT_DUMP_AVAIL) + schedule_process_dump(); + + return 0; +} + +static struct notifier_block dump_nb = { + .notifier_call = dump_event, + .next = NULL, + .priority = 0 +}; + +void __init opal_platform_dump_init(void) +{ + int rc; + + dump_kset = kset_create_and_add("dump", NULL, opal_kobj); + if (!dump_kset) { + pr_warn("%s: Failed to create dump kset\n", __func__); + return; + } + + rc = sysfs_create_group(&dump_kset->kobj, &initiate_attr_group); + if (rc) { + pr_warn("%s: Failed to create initiate dump attr group\n", + __func__); + kobject_put(&dump_kset->kobj); + return; + } + + rc = opal_notifier_register(&dump_nb); + if (rc) { + pr_warn("%s: Can't register OPAL event notifier (%d)\n", + __func__, rc); + return; + } + + opal_dump_resend_notification(); +} --- linux-3.13.0.orig/arch/powerpc/platforms/powernv/opal-elog.c +++ linux-3.13.0/arch/powerpc/platforms/powernv/opal-elog.c @@ -0,0 +1,320 @@ +/* + * Error log support on PowerNV. + * + * Copyright 2013,2014 IBM Corp. + * + * 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 + +struct elog_obj { + struct kobject kobj; + struct bin_attribute raw_attr; + uint64_t id; + uint64_t type; + size_t size; + char *buffer; +}; +#define to_elog_obj(x) container_of(x, struct elog_obj, kobj) + +struct elog_attribute { + struct attribute attr; + ssize_t (*show)(struct elog_obj *elog, struct elog_attribute *attr, + char *buf); + ssize_t (*store)(struct elog_obj *elog, struct elog_attribute *attr, + const char *buf, size_t count); +}; +#define to_elog_attr(x) container_of(x, struct elog_attribute, attr) + +static ssize_t elog_id_show(struct elog_obj *elog_obj, + struct elog_attribute *attr, + char *buf) +{ + return sprintf(buf, "0x%llx\n", elog_obj->id); +} + +static const char *elog_type_to_string(uint64_t type) +{ + switch (type) { + case 0: return "PEL"; + default: return "unknown"; + } +} + +static ssize_t elog_type_show(struct elog_obj *elog_obj, + struct elog_attribute *attr, + char *buf) +{ + return sprintf(buf, "0x%llx %s\n", + elog_obj->type, + elog_type_to_string(elog_obj->type)); +} + +static ssize_t elog_ack_show(struct elog_obj *elog_obj, + struct elog_attribute *attr, + char *buf) +{ + return sprintf(buf, "ack - acknowledge log message\n"); +} + +static void delay_release_kobj(void *kobj) +{ + kobject_put((struct kobject *)kobj); +} + +static ssize_t elog_ack_store(struct elog_obj *elog_obj, + struct elog_attribute *attr, + const char *buf, + size_t count) +{ + opal_send_ack_elog(elog_obj->id); + sysfs_schedule_callback(&elog_obj->kobj, delay_release_kobj, + &elog_obj->kobj, THIS_MODULE); + return count; +} + +static struct elog_attribute id_attribute = + __ATTR(id, 0666, elog_id_show, NULL); +static struct elog_attribute type_attribute = + __ATTR(type, 0666, elog_type_show, NULL); +static struct elog_attribute ack_attribute = + __ATTR(acknowledge, 0660, elog_ack_show, elog_ack_store); + +static struct kset *elog_kset; + +static ssize_t elog_attr_show(struct kobject *kobj, + struct attribute *attr, + char *buf) +{ + struct elog_attribute *attribute; + struct elog_obj *elog; + + attribute = to_elog_attr(attr); + elog = to_elog_obj(kobj); + + if (!attribute->show) + return -EIO; + + return attribute->show(elog, attribute, buf); +} + +static ssize_t elog_attr_store(struct kobject *kobj, + struct attribute *attr, + const char *buf, size_t len) +{ + struct elog_attribute *attribute; + struct elog_obj *elog; + + attribute = to_elog_attr(attr); + elog = to_elog_obj(kobj); + + if (!attribute->store) + return -EIO; + + return attribute->store(elog, attribute, buf, len); +} + +static const struct sysfs_ops elog_sysfs_ops = { + .show = elog_attr_show, + .store = elog_attr_store, +}; + +static void elog_release(struct kobject *kobj) +{ + struct elog_obj *elog; + + elog = to_elog_obj(kobj); + kfree(elog->buffer); + kfree(elog); +} + +static struct attribute *elog_default_attrs[] = { + &id_attribute.attr, + &type_attribute.attr, + &ack_attribute.attr, + NULL, +}; + +static struct kobj_type elog_ktype = { + .sysfs_ops = &elog_sysfs_ops, + .release = &elog_release, + .default_attrs = elog_default_attrs, +}; + +/* Maximum size of a single log on FSP is 16KB */ +#define OPAL_MAX_ERRLOG_SIZE 16384 + +static ssize_t raw_attr_read(struct file *filep, struct kobject *kobj, + struct bin_attribute *bin_attr, + char *buffer, loff_t pos, size_t count) +{ + int opal_rc; + + struct elog_obj *elog = to_elog_obj(kobj); + + /* We may have had an error reading before, so let's retry */ + if (!elog->buffer) { + elog->buffer = kzalloc(elog->size, GFP_KERNEL); + if (!elog->buffer) + return -EIO; + + opal_rc = opal_read_elog(__pa(elog->buffer), + elog->size, elog->id); + if (opal_rc != OPAL_SUCCESS) { + pr_err("ELOG: log read failed for log-id=%llx\n", + elog->id); + kfree(elog->buffer); + elog->buffer = NULL; + return -EIO; + } + } + + memcpy(buffer, elog->buffer + pos, count); + + return count; +} + +static struct elog_obj *create_elog_obj(uint64_t id, size_t size, uint64_t type) +{ + struct elog_obj *elog; + int rc; + + elog = kzalloc(sizeof(*elog), GFP_KERNEL); + if (!elog) + return NULL; + + elog->kobj.kset = elog_kset; + + kobject_init(&elog->kobj, &elog_ktype); + + sysfs_bin_attr_init(&elog->raw_attr); + + elog->raw_attr.attr.name = "raw"; + elog->raw_attr.attr.mode = 0400; + elog->raw_attr.size = size; + elog->raw_attr.read = raw_attr_read; + + elog->id = id; + elog->size = size; + elog->type = type; + + elog->buffer = kzalloc(elog->size, GFP_KERNEL); + + if (elog->buffer) { + rc = opal_read_elog(__pa(elog->buffer), + elog->size, elog->id); + if (rc != OPAL_SUCCESS) { + pr_err("ELOG: log read failed for log-id=%llx\n", + elog->id); + kfree(elog->buffer); + elog->buffer = NULL; + } + } + + rc = kobject_add(&elog->kobj, NULL, "0x%llx", id); + if (rc) { + kobject_put(&elog->kobj); + return NULL; + } + + rc = sysfs_create_bin_file(&elog->kobj, &elog->raw_attr); + if (rc) { + kobject_put(&elog->kobj); + return NULL; + } + + kobject_uevent(&elog->kobj, KOBJ_ADD); + + return elog; +} + +static void elog_work_fn(struct work_struct *work) +{ + __be64 size; + __be64 id; + __be64 type; + uint64_t elog_size; + uint64_t log_id; + uint64_t elog_type; + int rc; + char name[2+16+1]; + + rc = opal_get_elog_size(&id, &size, &type); + if (rc != OPAL_SUCCESS) { + pr_err("ELOG: Opal log read failed\n"); + return; + } + + elog_size = be64_to_cpu(size); + log_id = be64_to_cpu(id); + elog_type = be64_to_cpu(type); + + BUG_ON(elog_size > OPAL_MAX_ERRLOG_SIZE); + + if (elog_size >= OPAL_MAX_ERRLOG_SIZE) + elog_size = OPAL_MAX_ERRLOG_SIZE; + + sprintf(name, "0x%llx", log_id); + + /* we may get notified twice, let's handle + * that gracefully and not create two conflicting + * entries. + */ + if (kset_find_obj(elog_kset, name)) + return; + + create_elog_obj(log_id, elog_size, elog_type); +} + +static DECLARE_WORK(elog_work, elog_work_fn); + +static int elog_event(struct notifier_block *nb, + unsigned long events, void *change) +{ + /* check for error log event */ + if (events & OPAL_EVENT_ERROR_LOG_AVAIL) + schedule_work(&elog_work); + return 0; +} + +static struct notifier_block elog_nb = { + .notifier_call = elog_event, + .next = NULL, + .priority = 0 +}; + +int __init opal_elog_init(void) +{ + int rc = 0; + + elog_kset = kset_create_and_add("elog", NULL, opal_kobj); + if (!elog_kset) { + pr_warn("%s: failed to create elog kset\n", __func__); + return -1; + } + + rc = opal_notifier_register(&elog_nb); + if (rc) { + pr_err("%s: Can't register OPAL event notifier (%d)\n", + __func__, rc); + return rc; + } + + /* We are now ready to pull error logs from opal. */ + opal_resend_pending_logs(); + + return 0; +} --- linux-3.13.0.orig/arch/powerpc/platforms/powernv/opal-flash.c +++ linux-3.13.0/arch/powerpc/platforms/powernv/opal-flash.c @@ -20,6 +20,7 @@ #include #include #include +#include #include @@ -76,11 +77,8 @@ /* Validate buffer size */ #define VALIDATE_BUF_SIZE 4096 -/* XXX: Assume candidate image size is <= 256MB */ -#define MAX_IMAGE_SIZE 0x10000000 - -/* Flash sg list version */ -#define SG_LIST_VERSION (1UL) +/* XXX: Assume candidate image size is <= 1GB */ +#define MAX_IMAGE_SIZE 0x40000000 /* Image status */ enum { @@ -103,27 +101,6 @@ uint32_t size; }; -/* Scatter/gather entry */ -struct opal_sg_entry { - void *data; - long length; -}; - -/* We calculate number of entries based on PAGE_SIZE */ -#define SG_ENTRIES_PER_NODE ((PAGE_SIZE - 16) / sizeof(struct opal_sg_entry)) - -/* - * This struct is very similar but not identical to that - * needed by the opal flash update. All we need to do for - * opal is rewrite num_entries into a version/length and - * translate the pointers to absolute. - */ -struct opal_sg_list { - unsigned long num_entries; - struct opal_sg_list *next; - struct opal_sg_entry entry[SG_ENTRIES_PER_NODE]; -}; - struct validate_flash_t { int status; /* Return status */ void *buf; /* Candiate image buffer */ @@ -152,11 +129,16 @@ */ static inline void opal_flash_validate(void) { - struct validate_flash_t *args_buf = &validate_flash_data; - - args_buf->status = opal_validate_flash(__pa(args_buf->buf), - &(args_buf->buf_size), - &(args_buf->result)); + long ret; + void *buf = validate_flash_data.buf; + __be32 size = cpu_to_be32(validate_flash_data.buf_size); + __be32 result; + + ret = opal_validate_flash(__pa(buf), &size, &result); + + validate_flash_data.status = ret; + validate_flash_data.buf_size = be32_to_cpu(size); + validate_flash_data.result = be32_to_cpu(result); } /* @@ -289,94 +271,11 @@ } /* - * Free sg list - */ -static void free_sg_list(struct opal_sg_list *list) -{ - struct opal_sg_list *sg1; - while (list) { - sg1 = list->next; - kfree(list); - list = sg1; - } - list = NULL; -} - -/* - * Build candidate image scatter gather list - * - * list format: - * ----------------------------------- - * | VER (8) | Entry length in bytes | - * ----------------------------------- - * | Pointer to next entry | - * ----------------------------------- - * | Address of memory area 1 | - * ----------------------------------- - * | Length of memory area 1 | - * ----------------------------------- - * | ......... | - * ----------------------------------- - * | ......... | - * ----------------------------------- - * | Address of memory area N | - * ----------------------------------- - * | Length of memory area N | - * ----------------------------------- - */ -static struct opal_sg_list *image_data_to_sglist(void) -{ - struct opal_sg_list *sg1, *list = NULL; - void *addr; - int size; - - addr = image_data.data; - size = image_data.size; - - sg1 = kzalloc((sizeof(struct opal_sg_list)), GFP_KERNEL); - if (!sg1) - return NULL; - - list = sg1; - sg1->num_entries = 0; - while (size > 0) { - /* Translate virtual address to physical address */ - sg1->entry[sg1->num_entries].data = - (void *)(vmalloc_to_pfn(addr) << PAGE_SHIFT); - - if (size > PAGE_SIZE) - sg1->entry[sg1->num_entries].length = PAGE_SIZE; - else - sg1->entry[sg1->num_entries].length = size; - - sg1->num_entries++; - if (sg1->num_entries >= SG_ENTRIES_PER_NODE) { - sg1->next = kzalloc((sizeof(struct opal_sg_list)), - GFP_KERNEL); - if (!sg1->next) { - pr_err("%s : Failed to allocate memory\n", - __func__); - goto nomem; - } - - sg1 = sg1->next; - sg1->num_entries = 0; - } - addr += PAGE_SIZE; - size -= PAGE_SIZE; - } - return list; -nomem: - free_sg_list(list); - return NULL; -} - -/* * OPAL update flash */ static int opal_flash_update(int op) { - struct opal_sg_list *sg, *list, *next; + struct opal_sg_list *list; unsigned long addr; int64_t rc = OPAL_PARAMETER; @@ -386,32 +285,13 @@ goto flash; } - list = image_data_to_sglist(); + list = opal_vmalloc_to_sg_list(image_data.data, image_data.size); if (!list) goto invalid_img; /* First entry address */ addr = __pa(list); - /* Translate sg list address to absolute */ - for (sg = list; sg; sg = next) { - next = sg->next; - /* Don't translate NULL pointer for last entry */ - if (sg->next) - sg->next = (struct opal_sg_list *)__pa(sg->next); - else - sg->next = NULL; - - /* Make num_entries into the version/length field */ - sg->num_entries = (SG_LIST_VERSION << 56) | - (sg->num_entries * sizeof(struct opal_sg_entry) + 16); - } - - pr_alert("FLASH: Image is %u bytes\n", image_data.size); - pr_alert("FLASH: Image update requested\n"); - pr_alert("FLASH: Image will be updated during system reboot\n"); - pr_alert("FLASH: This will take several minutes. Do not power off!\n"); - flash: rc = opal_update_flash(addr); @@ -419,6 +299,47 @@ return rc; } +/* Return CPUs to OPAL before starting FW update */ +static void flash_return_cpu(void *info) +{ + int cpu = smp_processor_id(); + + if (!cpu_online(cpu)) + return; + + /* Disable IRQ */ + hard_irq_disable(); + + /* Return the CPU to OPAL */ + opal_return_cpu(); +} + +/* This gets called just before system reboots */ +void opal_flash_term_callback(void) +{ + struct cpumask mask; + + if (update_flash_data.status != FLASH_IMG_READY) + return; + + pr_alert("FLASH: Flashing new firmware\n"); + pr_alert("FLASH: Image is %u bytes\n", image_data.size); + pr_alert("FLASH: Performing flash and reboot/shutdown\n"); + pr_alert("FLASH: This will take several minutes. Do not power off!\n"); + + /* Small delay to help getting the above message out */ + msleep(500); + + /* Return secondary CPUs to firmware */ + cpumask_copy(&mask, cpu_online_mask); + cpumask_clear_cpu(smp_processor_id(), &mask); + if (!cpumask_empty(&mask)) + smp_call_function_many(&mask, + flash_return_cpu, NULL, false); + /* Hard disable interrupts */ + hard_irq_disable(); +} + /* * Show candidate image status */ --- linux-3.13.0.orig/arch/powerpc/platforms/powernv/opal-msglog.c +++ linux-3.13.0/arch/powerpc/platforms/powernv/opal-msglog.c @@ -0,0 +1,120 @@ +/* + * PowerNV OPAL in-memory console interface + * + * Copyright 2014 IBM Corp. + * + * 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 + +/* OPAL in-memory console. Defined in OPAL source at core/console.c */ +struct memcons { + __be64 magic; +#define MEMCONS_MAGIC 0x6630696567726173L + __be64 obuf_phys; + __be64 ibuf_phys; + __be32 obuf_size; + __be32 ibuf_size; + __be32 out_pos; +#define MEMCONS_OUT_POS_WRAP 0x80000000u +#define MEMCONS_OUT_POS_MASK 0x00ffffffu + __be32 in_prod; + __be32 in_cons; +}; + +static ssize_t opal_msglog_read(struct file *file, struct kobject *kobj, + struct bin_attribute *bin_attr, char *to, + loff_t pos, size_t count) +{ + struct memcons *mc = bin_attr->private; + const char *conbuf; + size_t ret, first_read = 0; + uint32_t out_pos, avail; + + if (!mc) + return -ENODEV; + + out_pos = be32_to_cpu(ACCESS_ONCE(mc->out_pos)); + + /* Now we've read out_pos, put a barrier in before reading the new + * data it points to in conbuf. */ + smp_rmb(); + + conbuf = phys_to_virt(be64_to_cpu(mc->obuf_phys)); + + /* When the buffer has wrapped, read from the out_pos marker to the end + * of the buffer, and then read the remaining data as in the un-wrapped + * case. */ + if (out_pos & MEMCONS_OUT_POS_WRAP) { + + out_pos &= MEMCONS_OUT_POS_MASK; + avail = be32_to_cpu(mc->obuf_size) - out_pos; + + ret = memory_read_from_buffer(to, count, &pos, + conbuf + out_pos, avail); + + if (ret < 0) + goto out; + + first_read = ret; + to += first_read; + count -= first_read; + pos -= avail; + } + + /* Sanity check. The firmware should not do this to us. */ + if (out_pos > be32_to_cpu(mc->obuf_size)) { + pr_err("OPAL: memory console corruption. Aborting read.\n"); + return -EINVAL; + } + + ret = memory_read_from_buffer(to, count, &pos, conbuf, out_pos); + + if (ret < 0) + goto out; + + ret += first_read; +out: + return ret; +} + +static struct bin_attribute opal_msglog_attr = { + .attr = {.name = "msglog", .mode = 0444}, + .read = opal_msglog_read +}; + +void __init opal_msglog_init(void) +{ + u64 mcaddr; + struct memcons *mc; + + if (of_property_read_u64(opal_node, "ibm,opal-memcons", &mcaddr)) { + pr_warn("OPAL: Property ibm,opal-memcons not found, no message log\n"); + return; + } + + mc = phys_to_virt(mcaddr); + if (!mc) { + pr_warn("OPAL: memory console address is invalid\n"); + return; + } + + if (be64_to_cpu(mc->magic) != MEMCONS_MAGIC) { + pr_warn("OPAL: memory console version is invalid\n"); + return; + } + + opal_msglog_attr.private = mc; + + if (sysfs_create_bin_file(opal_kobj, &opal_msglog_attr) != 0) + pr_warn("OPAL: sysfs file creation failed\n"); +} --- linux-3.13.0.orig/arch/powerpc/platforms/powernv/opal-sensor.c +++ linux-3.13.0/arch/powerpc/platforms/powernv/opal-sensor.c @@ -0,0 +1,66 @@ +/* + * PowerNV sensor code + * + * Copyright (C) 2013 IBM + * + * 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 + +static DEFINE_MUTEX(opal_sensor_mutex); + +/* + * This will return sensor information to driver based on the requested sensor + * handle. A handle is an opaque id for the powernv, read by the driver from the + * device tree.. + */ +int opal_get_sensor_data(u32 sensor_hndl, u32 *sensor_data) +{ + int ret, token; + struct opal_msg msg; + __be32 data; + + token = opal_async_get_token_interruptible(); + if (token < 0) { + pr_err("%s: Couldn't get the token, returning\n", __func__); + ret = token; + goto out; + } + + mutex_lock(&opal_sensor_mutex); + ret = opal_sensor_read(sensor_hndl, token, &data); + if (ret != OPAL_ASYNC_COMPLETION) + goto out_token; + + ret = opal_async_wait_response(token, &msg); + if (ret) { + pr_err("%s: Failed to wait for the async response, %d\n", + __func__, ret); + goto out_token; + } + + *sensor_data = be32_to_cpu(data); + ret = be64_to_cpu(msg.params[1]); + +out_token: + mutex_unlock(&opal_sensor_mutex); + opal_async_release_token(token); +out: + return ret; +} +EXPORT_SYMBOL_GPL(opal_get_sensor_data); --- linux-3.13.0.orig/arch/powerpc/platforms/powernv/opal-wrappers.S +++ linux-3.13.0/arch/powerpc/platforms/powernv/opal-wrappers.S @@ -123,6 +123,24 @@ OPAL_CALL(opal_lpc_read, OPAL_LPC_READ); OPAL_CALL(opal_lpc_write, OPAL_LPC_WRITE); OPAL_CALL(opal_return_cpu, OPAL_RETURN_CPU); +OPAL_CALL(opal_reinit_cpus, OPAL_REINIT_CPUS); +OPAL_CALL(opal_read_elog, OPAL_ELOG_READ); +OPAL_CALL(opal_send_ack_elog, OPAL_ELOG_ACK); +OPAL_CALL(opal_get_elog_size, OPAL_ELOG_SIZE); +OPAL_CALL(opal_resend_pending_logs, OPAL_ELOG_RESEND); +OPAL_CALL(opal_write_elog, OPAL_ELOG_WRITE); OPAL_CALL(opal_validate_flash, OPAL_FLASH_VALIDATE); OPAL_CALL(opal_manage_flash, OPAL_FLASH_MANAGE); OPAL_CALL(opal_update_flash, OPAL_FLASH_UPDATE); +OPAL_CALL(opal_dump_init, OPAL_DUMP_INIT); +OPAL_CALL(opal_dump_info, OPAL_DUMP_INFO); +OPAL_CALL(opal_dump_info2, OPAL_DUMP_INFO2); +OPAL_CALL(opal_dump_read, OPAL_DUMP_READ); +OPAL_CALL(opal_dump_ack, OPAL_DUMP_ACK); +OPAL_CALL(opal_get_msg, OPAL_GET_MSG); +OPAL_CALL(opal_check_completion, OPAL_CHECK_ASYNC_COMPLETION); +OPAL_CALL(opal_dump_resend_notification, OPAL_DUMP_RESEND); +OPAL_CALL(opal_sync_host_reboot, OPAL_SYNC_HOST_REBOOT); +OPAL_CALL(opal_sensor_read, OPAL_SENSOR_READ); +OPAL_CALL(opal_get_param, OPAL_GET_PARAM); +OPAL_CALL(opal_set_param, OPAL_SET_PARAM); --- linux-3.13.0.orig/arch/powerpc/platforms/powernv/opal-xscom.c +++ linux-3.13.0/arch/powerpc/platforms/powernv/opal-xscom.c @@ -71,11 +71,11 @@ } } -static u64 opal_scom_unmangle(u64 reg) +static u64 opal_scom_unmangle(u64 addr) { /* * XSCOM indirect addresses have the top bit set. Additionally - * the reset of the top 3 nibbles is always 0. + * the rest of the top 3 nibbles is always 0. * * Because the debugfs interface uses signed offsets and shifts * the address left by 3, we basically cannot use the top 4 bits @@ -86,10 +86,13 @@ * conversion here. To leave room for further xscom address * expansion, we only clear out the top byte * + * For in-kernel use, we also support the real indirect bit, so + * we test for any of the top 5 bits + * */ - if (reg & (1ull << 59)) - reg = (reg & ~(0xffull << 56)) | (1ull << 63); - return reg; + if (addr & (0x1full << 59)) + addr = (addr & ~(0xffull << 56)) | (1ull << 63); + return addr; } static int opal_scom_read(scom_map_t map, u64 reg, u64 *value) @@ -98,8 +101,8 @@ int64_t rc; __be64 v; - reg = opal_scom_unmangle(reg); - rc = opal_xscom_read(m->chip, m->addr + reg, (__be64 *)__pa(&v)); + reg = opal_scom_unmangle(m->addr + reg); + rc = opal_xscom_read(m->chip, reg, (__be64 *)__pa(&v)); *value = be64_to_cpu(v); return opal_xscom_err_xlate(rc); } @@ -109,8 +112,8 @@ struct opal_scom_map *m = map; int64_t rc; - reg = opal_scom_unmangle(reg); - rc = opal_xscom_write(m->chip, m->addr + reg, value); + reg = opal_scom_unmangle(m->addr + reg); + rc = opal_xscom_write(m->chip, reg, value); return opal_xscom_err_xlate(rc); } --- linux-3.13.0.orig/arch/powerpc/platforms/powernv/opal.c +++ linux-3.13.0/arch/powerpc/platforms/powernv/opal.c @@ -18,9 +18,12 @@ #include #include #include +#include #include +#include #include #include +#include #include "powernv.h" @@ -30,40 +33,70 @@ struct opal { u64 base; u64 entry; + u64 size; } opal; -static struct device_node *opal_node; +struct mcheck_recoverable_range { + u64 start_addr; + u64 end_addr; + u64 recover_addr; +}; + +static struct mcheck_recoverable_range *mc_recoverable_range; +static int mc_recoverable_range_len; + +struct device_node *opal_node; static DEFINE_SPINLOCK(opal_write_lock); extern u64 opal_mc_secondary_handler[]; static unsigned int *opal_irqs; static unsigned int opal_irq_count; static ATOMIC_NOTIFIER_HEAD(opal_notifier_head); +static struct atomic_notifier_head opal_msg_notifier_head[OPAL_MSG_TYPE_MAX]; static DEFINE_SPINLOCK(opal_notifier_lock); static uint64_t last_notified_mask = 0x0ul; static atomic_t opal_notifier_hold = ATOMIC_INIT(0); +static void opal_reinit_cores(void) +{ + /* Do the actual re-init, This will clobber all FPRs, VRs, etc... + * + * It will preserve non volatile GPRs and HSPRG0/1. It will + * also restore HIDs and other SPRs to their original value + * but it might clobber a bunch. + */ +#ifdef __BIG_ENDIAN__ + opal_reinit_cpus(OPAL_REINIT_CPUS_HILE_BE); +#else + opal_reinit_cpus(OPAL_REINIT_CPUS_HILE_LE); +#endif +} + int __init early_init_dt_scan_opal(unsigned long node, const char *uname, int depth, void *data) { - const void *basep, *entryp; - unsigned long basesz, entrysz; + const void *basep, *entryp, *sizep; + unsigned long basesz, entrysz, runtimesz; if (depth != 1 || strcmp(uname, "ibm,opal") != 0) return 0; basep = of_get_flat_dt_prop(node, "opal-base-address", &basesz); entryp = of_get_flat_dt_prop(node, "opal-entry-address", &entrysz); + sizep = of_get_flat_dt_prop(node, "opal-runtime-size", &runtimesz); - if (!basep || !entryp) + if (!basep || !entryp || !sizep) return 1; opal.base = of_read_number(basep, basesz/4); opal.entry = of_read_number(entryp, entrysz/4); + opal.size = of_read_number(sizep, runtimesz/4); pr_debug("OPAL Base = 0x%llx (basep=%p basesz=%ld)\n", opal.base, basep, basesz); pr_debug("OPAL Entry = 0x%llx (entryp=%p basesz=%ld)\n", opal.entry, entryp, entrysz); + pr_debug("OPAL Entry = 0x%llx (sizep=%p runtimesz=%ld)\n", + opal.size, sizep, runtimesz); powerpc_firmware_features |= FW_FEATURE_OPAL; if (of_flat_dt_is_compatible(node, "ibm,opal-v3")) { @@ -77,6 +110,72 @@ printk("OPAL V1 detected !\n"); } + /* Reinit all cores with the right endian */ + opal_reinit_cores(); + + /* Restore some bits */ + if (cur_cpu_spec->cpu_restore) + cur_cpu_spec->cpu_restore(); + + return 1; +} + +int __init early_init_dt_scan_recoverable_ranges(unsigned long node, + const char *uname, int depth, void *data) +{ + unsigned long i, psize, size; + const __be32 *prop; + + if (depth != 1 || strcmp(uname, "ibm,opal") != 0) + return 0; + + prop = of_get_flat_dt_prop(node, "mcheck-recoverable-ranges", &psize); + + if (!prop) + return 1; + + pr_debug("Found machine check recoverable ranges.\n"); + + /* + * Calculate number of available entries. + * + * Each recoverable address range entry is (start address, len, + * recovery address), 2 cells each for start and recovery address, + * 1 cell for len, totalling 5 cells per entry. + */ + mc_recoverable_range_len = psize / (sizeof(*prop) * 5); + + /* Sanity check */ + if (!mc_recoverable_range_len) + return 1; + + /* Size required to hold all the entries. */ + size = mc_recoverable_range_len * + sizeof(struct mcheck_recoverable_range); + + /* + * Allocate a buffer to hold the MC recoverable ranges. We would be + * accessing them in real mode, hence it needs to be within + * RMO region. + */ + mc_recoverable_range =__va(memblock_alloc_base(size, __alignof__(u64), + ppc64_rma_size)); + memset(mc_recoverable_range, 0, size); + + for (i = 0; i < mc_recoverable_range_len; i++) { + mc_recoverable_range[i].start_addr = + of_read_number(prop + (i * 5) + 0, 2); + mc_recoverable_range[i].end_addr = + mc_recoverable_range[i].start_addr + + of_read_number(prop + (i * 5) + 2, 1); + mc_recoverable_range[i].recover_addr = + of_read_number(prop + (i * 5) + 3, 2); + + pr_debug("Machine check recoverable range: %llx..%llx: %llx\n", + mc_recoverable_range[i].start_addr, + mc_recoverable_range[i].end_addr, + mc_recoverable_range[i].recover_addr); + } return 1; } @@ -88,14 +187,10 @@ if (!(powerpc_firmware_features & FW_FEATURE_OPAL)) return -ENODEV; - /* Hookup some exception handlers. We use the fwnmi area at 0x7000 - * to provide the glue space to OPAL + /* Hookup some exception handlers except machine check. We use the + * fwnmi area at 0x7000 to provide the glue space to OPAL */ glue = 0x7000; - opal_register_exception_handler(OPAL_MACHINE_CHECK_HANDLER, - __pa(opal_mc_secondary_handler[0]), - glue); - glue += 128; opal_register_exception_handler(OPAL_HYPERVISOR_MAINTENANCE_HANDLER, 0, glue); glue += 128; @@ -154,14 +249,14 @@ void opal_notifier_enable(void) { int64_t rc; - uint64_t evt = 0; + __be64 evt = 0; atomic_set(&opal_notifier_hold, 0); /* Process pending events */ rc = opal_poll_events(&evt); if (rc == OPAL_SUCCESS && evt) - opal_do_notifier(evt); + opal_do_notifier(be64_to_cpu(evt)); } void opal_notifier_disable(void) @@ -169,6 +264,95 @@ atomic_set(&opal_notifier_hold, 1); } +/* + * Opal message notifier based on message type. Allow subscribers to get + * notified for specific messgae type. + */ +int opal_message_notifier_register(enum OpalMessageType msg_type, + struct notifier_block *nb) +{ + if (!nb) { + pr_warning("%s: Invalid argument (%p)\n", + __func__, nb); + return -EINVAL; + } + if (msg_type > OPAL_MSG_TYPE_MAX) { + pr_warning("%s: Invalid message type argument (%d)\n", + __func__, msg_type); + return -EINVAL; + } + return atomic_notifier_chain_register( + &opal_msg_notifier_head[msg_type], nb); +} + +static void opal_message_do_notify(uint32_t msg_type, void *msg) +{ + /* notify subscribers */ + atomic_notifier_call_chain(&opal_msg_notifier_head[msg_type], + msg_type, msg); +} + +static void opal_handle_message(void) +{ + s64 ret; + /* + * TODO: pre-allocate a message buffer depending on opal-msg-size + * value in /proc/device-tree. + */ + static struct opal_msg msg; + + ret = opal_get_msg(__pa(&msg), sizeof(msg)); + /* No opal message pending. */ + if (ret == OPAL_RESOURCE) + return; + + /* check for errors. */ + if (ret) { + pr_warning("%s: Failed to retrive opal message, err=%lld\n", + __func__, ret); + return; + } + + /* Sanity check */ + if (msg.msg_type > OPAL_MSG_TYPE_MAX) { + pr_warning("%s: Unknown message type: %u\n", + __func__, msg.msg_type); + return; + } + opal_message_do_notify(msg.msg_type, (void *)&msg); +} + +static int opal_message_notify(struct notifier_block *nb, + unsigned long events, void *change) +{ + if (events & OPAL_EVENT_MSG_PENDING) + opal_handle_message(); + return 0; +} + +static struct notifier_block opal_message_nb = { + .notifier_call = opal_message_notify, + .next = NULL, + .priority = 0, +}; + +static int __init opal_message_init(void) +{ + int ret, i; + + for (i = 0; i < OPAL_MSG_TYPE_MAX; i++) + ATOMIC_INIT_NOTIFIER_HEAD(&opal_msg_notifier_head[i]); + + ret = opal_notifier_register(&opal_message_nb); + if (ret) { + pr_err("%s: Can't register OPAL event notifier (%d)\n", + __func__, ret); + return ret; + } + return 0; +} +early_initcall(opal_message_init); + int opal_get_chars(uint32_t vtermno, char *buf, int count) { s64 rc; @@ -254,119 +438,94 @@ return written; } +static int opal_recover_mce(struct pt_regs *regs, + struct machine_check_event *evt) +{ + int recovered = 0; + uint64_t ea = get_mce_fault_addr(evt); + + if (!(regs->msr & MSR_RI)) { + /* If MSR_RI isn't set, we cannot recover */ + recovered = 0; + } else if (evt->disposition == MCE_DISPOSITION_RECOVERED) { + /* Platform corrected itself */ + recovered = 1; + } else if (ea && !is_kernel_addr(ea)) { + /* + * Faulting address is not in kernel text. We should be fine. + * We need to find which process uses this address. + * For now, kill the task if we have received exception when + * in userspace. + * + * TODO: Queue up this address for hwpoisioning later. + */ + if (user_mode(regs) && !is_global_init(current)) { + _exception(SIGBUS, regs, BUS_MCEERR_AR, regs->nip); + recovered = 1; + } else + recovered = 0; + } else if (user_mode(regs) && !is_global_init(current) && + evt->severity == MCE_SEV_ERROR_SYNC) { + /* + * If we have received a synchronous error when in userspace + * kill the task. + */ + _exception(SIGBUS, regs, BUS_MCEERR_AR, regs->nip); + recovered = 1; + } + return recovered; +} + int opal_machine_check(struct pt_regs *regs) { - struct opal_machine_check_event *opal_evt = get_paca()->opal_mc_evt; - struct opal_machine_check_event evt; - const char *level, *sevstr, *subtype; - static const char *opal_mc_ue_types[] = { - "Indeterminate", - "Instruction fetch", - "Page table walk ifetch", - "Load/Store", - "Page table walk Load/Store", - }; - static const char *opal_mc_slb_types[] = { - "Indeterminate", - "Parity", - "Multihit", - }; - static const char *opal_mc_erat_types[] = { - "Indeterminate", - "Parity", - "Multihit", - }; - static const char *opal_mc_tlb_types[] = { - "Indeterminate", - "Parity", - "Multihit", - }; - - /* Copy the event structure and release the original */ - evt = *opal_evt; - opal_evt->in_use = 0; + struct machine_check_event evt; + + if (!get_mce_event(&evt, MCE_EVENT_RELEASE)) + return 0; /* Print things out */ - if (evt.version != OpalMCE_V1) { + if (evt.version != MCE_V1) { pr_err("Machine Check Exception, Unknown event version %d !\n", evt.version); return 0; } - switch(evt.severity) { - case OpalMCE_SEV_NO_ERROR: - level = KERN_INFO; - sevstr = "Harmless"; - break; - case OpalMCE_SEV_WARNING: - level = KERN_WARNING; - sevstr = ""; - break; - case OpalMCE_SEV_ERROR_SYNC: - level = KERN_ERR; - sevstr = "Severe"; - break; - case OpalMCE_SEV_FATAL: - default: - level = KERN_ERR; - sevstr = "Fatal"; - break; - } - - printk("%s%s Machine check interrupt [%s]\n", level, sevstr, - evt.disposition == OpalMCE_DISPOSITION_RECOVERED ? - "Recovered" : "[Not recovered"); - printk("%s Initiator: %s\n", level, - evt.initiator == OpalMCE_INITIATOR_CPU ? "CPU" : "Unknown"); - switch(evt.error_type) { - case OpalMCE_ERROR_TYPE_UE: - subtype = evt.u.ue_error.ue_error_type < - ARRAY_SIZE(opal_mc_ue_types) ? - opal_mc_ue_types[evt.u.ue_error.ue_error_type] - : "Unknown"; - printk("%s Error type: UE [%s]\n", level, subtype); - if (evt.u.ue_error.effective_address_provided) - printk("%s Effective address: %016llx\n", - level, evt.u.ue_error.effective_address); - if (evt.u.ue_error.physical_address_provided) - printk("%s Physial address: %016llx\n", - level, evt.u.ue_error.physical_address); - break; - case OpalMCE_ERROR_TYPE_SLB: - subtype = evt.u.slb_error.slb_error_type < - ARRAY_SIZE(opal_mc_slb_types) ? - opal_mc_slb_types[evt.u.slb_error.slb_error_type] - : "Unknown"; - printk("%s Error type: SLB [%s]\n", level, subtype); - if (evt.u.slb_error.effective_address_provided) - printk("%s Effective address: %016llx\n", - level, evt.u.slb_error.effective_address); - break; - case OpalMCE_ERROR_TYPE_ERAT: - subtype = evt.u.erat_error.erat_error_type < - ARRAY_SIZE(opal_mc_erat_types) ? - opal_mc_erat_types[evt.u.erat_error.erat_error_type] - : "Unknown"; - printk("%s Error type: ERAT [%s]\n", level, subtype); - if (evt.u.erat_error.effective_address_provided) - printk("%s Effective address: %016llx\n", - level, evt.u.erat_error.effective_address); - break; - case OpalMCE_ERROR_TYPE_TLB: - subtype = evt.u.tlb_error.tlb_error_type < - ARRAY_SIZE(opal_mc_tlb_types) ? - opal_mc_tlb_types[evt.u.tlb_error.tlb_error_type] - : "Unknown"; - printk("%s Error type: TLB [%s]\n", level, subtype); - if (evt.u.tlb_error.effective_address_provided) - printk("%s Effective address: %016llx\n", - level, evt.u.tlb_error.effective_address); - break; - default: - case OpalMCE_ERROR_TYPE_UNKNOWN: - printk("%s Error type: Unknown\n", level); - break; - } - return evt.severity == OpalMCE_SEV_FATAL ? 0 : 1; + machine_check_print_event_info(&evt); + + if (opal_recover_mce(regs, &evt)) + return 1; + return 0; +} + +static uint64_t find_recovery_address(uint64_t nip) +{ + int i; + + for (i = 0; i < mc_recoverable_range_len; i++) + if ((nip >= mc_recoverable_range[i].start_addr) && + (nip < mc_recoverable_range[i].end_addr)) + return mc_recoverable_range[i].recover_addr; + return 0; +} + +bool opal_mce_check_early_recovery(struct pt_regs *regs) +{ + uint64_t recover_addr = 0; + + if (!opal.base || !opal.size) + goto out; + + if ((regs->nip >= opal.base) && + (regs->nip <= (opal.base + opal.size))) + recover_addr = find_recovery_address(regs->nip); + + /* + * Setup regs->nip to rfi into fixup address. + */ + if (recover_addr) + regs->nip = recover_addr; + +out: + return !!recover_addr; } static irqreturn_t opal_interrupt(int irq, void *data) @@ -375,7 +534,7 @@ opal_handle_interrupt(virq_to_hw(irq), &events); - opal_do_notifier(events); + opal_do_notifier(be64_to_cpu(events)); return IRQ_HANDLED; } @@ -440,8 +599,14 @@ /* Create "opal" kobject under /sys/firmware */ rc = opal_sysfs_init(); if (rc == 0) { + /* Setup error log interface */ + rc = opal_elog_init(); /* Setup code update interface */ opal_flash_init(); + /* Setup platform dump extract interface */ + opal_platform_dump_init(); + /* Setup message log interface. */ + opal_msglog_init(); } return 0; @@ -458,3 +623,66 @@ opal_irqs[i] = 0; } } + +/* Convert a region of vmalloc memory to an opal sg list */ +struct opal_sg_list *opal_vmalloc_to_sg_list(void *vmalloc_addr, + unsigned long vmalloc_size) +{ + struct opal_sg_list *sg, *first = NULL; + unsigned long i = 0; + + sg = kzalloc(PAGE_SIZE, GFP_KERNEL); + if (!sg) + goto nomem; + + first = sg; + + while (vmalloc_size > 0) { + uint64_t data = vmalloc_to_pfn(vmalloc_addr) << PAGE_SHIFT; + uint64_t length = min(vmalloc_size, PAGE_SIZE); + + sg->entry[i].data = cpu_to_be64(data); + sg->entry[i].length = cpu_to_be64(length); + i++; + + if (i >= SG_ENTRIES_PER_NODE) { + struct opal_sg_list *next; + + next = kzalloc(PAGE_SIZE, GFP_KERNEL); + if (!next) + goto nomem; + + sg->length = cpu_to_be64( + i * sizeof(struct opal_sg_entry) + 16); + i = 0; + sg->next = cpu_to_be64(__pa(next)); + sg = next; + } + + vmalloc_addr += length; + vmalloc_size -= length; + } + + sg->length = cpu_to_be64(i * sizeof(struct opal_sg_entry) + 16); + + return first; + +nomem: + pr_err("%s : Failed to allocate memory\n", __func__); + opal_free_sg_list(first); + return NULL; +} + +void opal_free_sg_list(struct opal_sg_list *sg) +{ + while (sg) { + uint64_t next = be64_to_cpu(sg->next); + + kfree(sg); + + if (next) + sg = __va(next); + else + sg = NULL; + } +} --- linux-3.13.0.orig/arch/powerpc/platforms/powernv/pci-ioda.c +++ linux-3.13.0/arch/powerpc/platforms/powernv/pci-ioda.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include @@ -460,9 +461,39 @@ return; pe = &phb->ioda.pe_array[pdn->pe_number]; + WARN_ON(get_dma_ops(&pdev->dev) != &dma_iommu_ops); set_iommu_table_base(&pdev->dev, &pe->tce32_table); } +static int pnv_pci_ioda_dma_set_mask(struct pnv_phb *phb, + struct pci_dev *pdev, u64 dma_mask) +{ + struct pci_dn *pdn = pci_get_pdn(pdev); + struct pnv_ioda_pe *pe; + uint64_t top; + bool bypass = false; + + if (WARN_ON(!pdn || pdn->pe_number == IODA_INVALID_PE)) + return -ENODEV;; + + pe = &phb->ioda.pe_array[pdn->pe_number]; + if (pe->tce_bypass_enabled) { + top = pe->tce_bypass_base + memblock_end_of_DRAM() - 1; + bypass = (dma_mask >= top); + } + + if (bypass) { + dev_info(&pdev->dev, "Using 64-bit DMA iommu bypass\n"); + set_dma_ops(&pdev->dev, &dma_direct_ops); + set_dma_offset(&pdev->dev, pe->tce_bypass_base); + } else { + dev_info(&pdev->dev, "Using 32-bit DMA via iommu\n"); + set_dma_ops(&pdev->dev, &dma_iommu_ops); + set_iommu_table_base(&pdev->dev, &pe->tce32_table); + } + return 0; +} + static void pnv_ioda_setup_bus_dma(struct pnv_ioda_pe *pe, struct pci_bus *bus) { struct pci_dev *dev; @@ -657,6 +688,56 @@ __free_pages(tce_mem, get_order(TCE32_TABLE_SIZE * segs)); } +static void pnv_pci_ioda2_set_bypass(struct iommu_table *tbl, bool enable) +{ + struct pnv_ioda_pe *pe = container_of(tbl, struct pnv_ioda_pe, + tce32_table); + uint16_t window_id = (pe->pe_number << 1 ) + 1; + int64_t rc; + + pe_info(pe, "%sabling 64-bit DMA bypass\n", enable ? "En" : "Dis"); + if (enable) { + phys_addr_t top = memblock_end_of_DRAM(); + + top = roundup_pow_of_two(top); + rc = opal_pci_map_pe_dma_window_real(pe->phb->opal_id, + pe->pe_number, + window_id, + pe->tce_bypass_base, + top); + } else { + rc = opal_pci_map_pe_dma_window_real(pe->phb->opal_id, + pe->pe_number, + window_id, + pe->tce_bypass_base, + 0); + + /* + * We might want to reset the DMA ops of all devices on + * this PE. However in theory, that shouldn't be necessary + * as this is used for VFIO/KVM pass-through and the device + * hasn't yet been returned to its kernel driver + */ + } + if (rc) + pe_err(pe, "OPAL error %lld configuring bypass window\n", rc); + else + pe->tce_bypass_enabled = enable; +} + +static void pnv_pci_ioda2_setup_bypass_pe(struct pnv_phb *phb, + struct pnv_ioda_pe *pe) +{ + /* TVE #1 is selected by PCI address bit 59 */ + pe->tce_bypass_base = 1ull << 59; + + /* Install set_bypass callback for VFIO */ + pe->tce32_table.set_bypass = pnv_pci_ioda2_set_bypass; + + /* Enable bypass by default */ + pnv_pci_ioda2_set_bypass(&pe->tce32_table, true); +} + static void pnv_pci_ioda2_setup_dma_pe(struct pnv_phb *phb, struct pnv_ioda_pe *pe) { @@ -727,6 +808,8 @@ else pnv_ioda_setup_bus_dma(pe, pe->pbus); + /* Also create a bypass window */ + pnv_pci_ioda2_setup_bypass_pe(phb, pe); return; fail: if (pe->tce32_seg >= 0) @@ -818,7 +901,6 @@ unsigned int is_64, struct msi_msg *msg) { struct pnv_ioda_pe *pe = pnv_ioda_get_pe(dev); - struct pci_dn *pdn = pci_get_pdn(dev); struct irq_data *idata; struct irq_chip *ichip; unsigned int xive_num = hwirq - phb->msi_base; @@ -834,7 +916,7 @@ return -ENXIO; /* Force 32-bit MSI on some broken devices */ - if (pdn && pdn->force_32bit_msi) + if (dev->no_64bit_msi) is_64 = 0; /* Assign XIVE to PE */ @@ -1287,6 +1369,7 @@ /* Setup TCEs */ phb->dma_dev_setup = pnv_pci_ioda_dma_dev_setup; + phb->dma_set_mask = pnv_pci_ioda_dma_set_mask; /* Setup shutdown function for kexec */ phb->shutdown = pnv_pci_ioda_shutdown; --- linux-3.13.0.orig/arch/powerpc/platforms/powernv/pci.c +++ linux-3.13.0/arch/powerpc/platforms/powernv/pci.c @@ -50,9 +50,8 @@ { 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); - if (pdn && pdn->force_32bit_msi && !phb->msi32_support) + if (pdev->no_64bit_msi && !phb->msi32_support) return -ENODEV; return (phb && phb->msi_bmp.bitmap) ? 0 : -ENODEV; @@ -109,6 +108,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; @@ -116,85 +116,228 @@ 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 */ -static void pnv_pci_dump_p7ioc_diag_data(struct pnv_phb *phb) +static void pnv_pci_dump_p7ioc_diag_data(struct pci_controller *hose, + struct OpalIoPhbErrorCommon *common) { - struct OpalIoP7IOCPhbErrorData *data = &phb->diag.p7ioc; + struct OpalIoP7IOCPhbErrorData *data; int i; - pr_info("PHB %d diagnostic data:\n", phb->hose->global_number); + data = (struct OpalIoP7IOCPhbErrorData *)common; + pr_info("P7IOC PHB#%d Diag-data (Version: %d)\n\n", + hose->global_number, be32_to_cpu(common->version)); + + if (data->brdgCtl) + pr_info(" brdgCtl: %08x\n", + be32_to_cpu(data->brdgCtl)); + if (data->portStatusReg || data->rootCmplxStatus || + data->busAgentStatus) + pr_info(" UtlSts: %08x %08x %08x\n", + be32_to_cpu(data->portStatusReg), + be32_to_cpu(data->rootCmplxStatus), + be32_to_cpu(data->busAgentStatus)); + if (data->deviceStatus || data->slotStatus || + data->linkStatus || data->devCmdStatus || + data->devSecStatus) + pr_info(" RootSts: %08x %08x %08x %08x %08x\n", + be32_to_cpu(data->deviceStatus), + be32_to_cpu(data->slotStatus), + be32_to_cpu(data->linkStatus), + be32_to_cpu(data->devCmdStatus), + be32_to_cpu(data->devSecStatus)); + if (data->rootErrorStatus || data->uncorrErrorStatus || + data->corrErrorStatus) + pr_info(" RootErrSts: %08x %08x %08x\n", + be32_to_cpu(data->rootErrorStatus), + be32_to_cpu(data->uncorrErrorStatus), + be32_to_cpu(data->corrErrorStatus)); + if (data->tlpHdr1 || data->tlpHdr2 || + data->tlpHdr3 || data->tlpHdr4) + pr_info(" RootErrLog: %08x %08x %08x %08x\n", + be32_to_cpu(data->tlpHdr1), + be32_to_cpu(data->tlpHdr2), + be32_to_cpu(data->tlpHdr3), + be32_to_cpu(data->tlpHdr4)); + if (data->sourceId || data->errorClass || + data->correlator) + pr_info(" RootErrLog1: %08x %016llx %016llx\n", + be32_to_cpu(data->sourceId), + be64_to_cpu(data->errorClass), + be64_to_cpu(data->correlator)); + if (data->p7iocPlssr || data->p7iocCsr) + pr_info(" PhbSts: %016llx %016llx\n", + data->p7iocPlssr, data->p7iocCsr); + if (data->lemFir || data->lemErrorMask || + data->lemWOF) + pr_info(" Lem: %016llx %016llx %016llx\n", + be64_to_cpu(data->lemFir), + be64_to_cpu(data->lemErrorMask), + be64_to_cpu(data->lemWOF)); + if (data->phbErrorStatus || data->phbFirstErrorStatus || + data->phbErrorLog0 || data->phbErrorLog1) + pr_info(" PhbErr: %016llx %016llx %016llx %016llx\n", + be64_to_cpu(data->phbErrorStatus), + be64_to_cpu(data->phbFirstErrorStatus), + be64_to_cpu(data->phbErrorLog0), + be64_to_cpu(data->phbErrorLog1)); + if (data->mmioErrorStatus || data->mmioFirstErrorStatus || + data->mmioErrorLog0 || data->mmioErrorLog1) + pr_info(" OutErr: %016llx %016llx %016llx %016llx\n", + be64_to_cpu(data->mmioErrorStatus), + be64_to_cpu(data->mmioFirstErrorStatus), + be64_to_cpu(data->mmioErrorLog0), + be64_to_cpu(data->mmioErrorLog1)); + if (data->dma0ErrorStatus || data->dma0FirstErrorStatus || + data->dma0ErrorLog0 || data->dma0ErrorLog1) + pr_info(" InAErr: %016llx %016llx %016llx %016llx\n", + be64_to_cpu(data->dma0ErrorStatus), + be64_to_cpu(data->dma0FirstErrorStatus), + be64_to_cpu(data->dma0ErrorLog0), + be64_to_cpu(data->dma0ErrorLog1)); + if (data->dma1ErrorStatus || data->dma1FirstErrorStatus || + data->dma1ErrorLog0 || data->dma1ErrorLog1) + pr_info(" InBErr: %016llx %016llx %016llx %016llx\n", + be64_to_cpu(data->dma1ErrorStatus), + be64_to_cpu(data->dma1FirstErrorStatus), + be64_to_cpu(data->dma1ErrorLog0), + be64_to_cpu(data->dma1ErrorLog1)); - pr_info(" brdgCtl = 0x%08x\n", data->brdgCtl); + for (i = 0; i < OPAL_P7IOC_NUM_PEST_REGS; i++) { + if ((be64_to_cpu(data->pestA[i]) >> 63) == 0 && + (be64_to_cpu(data->pestB[i]) >> 63) == 0) + continue; - pr_info(" portStatusReg = 0x%08x\n", data->portStatusReg); - pr_info(" rootCmplxStatus = 0x%08x\n", data->rootCmplxStatus); - pr_info(" busAgentStatus = 0x%08x\n", data->busAgentStatus); - - pr_info(" deviceStatus = 0x%08x\n", data->deviceStatus); - pr_info(" slotStatus = 0x%08x\n", data->slotStatus); - pr_info(" linkStatus = 0x%08x\n", data->linkStatus); - pr_info(" devCmdStatus = 0x%08x\n", data->devCmdStatus); - pr_info(" devSecStatus = 0x%08x\n", data->devSecStatus); - - pr_info(" rootErrorStatus = 0x%08x\n", data->rootErrorStatus); - pr_info(" uncorrErrorStatus = 0x%08x\n", data->uncorrErrorStatus); - pr_info(" corrErrorStatus = 0x%08x\n", data->corrErrorStatus); - pr_info(" tlpHdr1 = 0x%08x\n", data->tlpHdr1); - pr_info(" tlpHdr2 = 0x%08x\n", data->tlpHdr2); - pr_info(" tlpHdr3 = 0x%08x\n", data->tlpHdr3); - pr_info(" tlpHdr4 = 0x%08x\n", data->tlpHdr4); - pr_info(" sourceId = 0x%08x\n", data->sourceId); - - pr_info(" errorClass = 0x%016llx\n", data->errorClass); - pr_info(" correlator = 0x%016llx\n", data->correlator); - - pr_info(" p7iocPlssr = 0x%016llx\n", data->p7iocPlssr); - pr_info(" p7iocCsr = 0x%016llx\n", data->p7iocCsr); - pr_info(" lemFir = 0x%016llx\n", data->lemFir); - pr_info(" lemErrorMask = 0x%016llx\n", data->lemErrorMask); - pr_info(" lemWOF = 0x%016llx\n", data->lemWOF); - pr_info(" phbErrorStatus = 0x%016llx\n", data->phbErrorStatus); - pr_info(" phbFirstErrorStatus = 0x%016llx\n", data->phbFirstErrorStatus); - pr_info(" phbErrorLog0 = 0x%016llx\n", data->phbErrorLog0); - pr_info(" phbErrorLog1 = 0x%016llx\n", data->phbErrorLog1); - pr_info(" mmioErrorStatus = 0x%016llx\n", data->mmioErrorStatus); - pr_info(" mmioFirstErrorStatus = 0x%016llx\n", data->mmioFirstErrorStatus); - pr_info(" mmioErrorLog0 = 0x%016llx\n", data->mmioErrorLog0); - pr_info(" mmioErrorLog1 = 0x%016llx\n", data->mmioErrorLog1); - pr_info(" dma0ErrorStatus = 0x%016llx\n", data->dma0ErrorStatus); - pr_info(" dma0FirstErrorStatus = 0x%016llx\n", data->dma0FirstErrorStatus); - pr_info(" dma0ErrorLog0 = 0x%016llx\n", data->dma0ErrorLog0); - pr_info(" dma0ErrorLog1 = 0x%016llx\n", data->dma0ErrorLog1); - pr_info(" dma1ErrorStatus = 0x%016llx\n", data->dma1ErrorStatus); - pr_info(" dma1FirstErrorStatus = 0x%016llx\n", data->dma1FirstErrorStatus); - pr_info(" dma1ErrorLog0 = 0x%016llx\n", data->dma1ErrorLog0); - pr_info(" dma1ErrorLog1 = 0x%016llx\n", data->dma1ErrorLog1); + pr_info(" PE[%3d] A/B: %016llx %016llx\n", + i, be64_to_cpu(data->pestA[i]), + be64_to_cpu(data->pestB[i])); + } +} - for (i = 0; i < OPAL_P7IOC_NUM_PEST_REGS; i++) { - if ((data->pestA[i] >> 63) == 0 && - (data->pestB[i] >> 63) == 0) +static void pnv_pci_dump_phb3_diag_data(struct pci_controller *hose, + struct OpalIoPhbErrorCommon *common) +{ + struct OpalIoPhb3ErrorData *data; + int i; + + data = (struct OpalIoPhb3ErrorData*)common; + pr_info("PHB3 PHB#%d Diag-data (Version: %d)\n\n", + hose->global_number, be32_to_cpu(common->version)); + if (data->brdgCtl) + pr_info(" brdgCtl: %08x\n", + be32_to_cpu(data->brdgCtl)); + if (data->portStatusReg || data->rootCmplxStatus || + data->busAgentStatus) + pr_info(" UtlSts: %08x %08x %08x\n", + be32_to_cpu(data->portStatusReg), + be32_to_cpu(data->rootCmplxStatus), + be32_to_cpu(data->busAgentStatus)); + if (data->deviceStatus || data->slotStatus || + data->linkStatus || data->devCmdStatus || + data->devSecStatus) + pr_info(" RootSts: %08x %08x %08x %08x %08x\n", + be32_to_cpu(data->deviceStatus), + be32_to_cpu(data->slotStatus), + be32_to_cpu(data->linkStatus), + be32_to_cpu(data->devCmdStatus), + be32_to_cpu(data->devSecStatus)); + if (data->rootErrorStatus || data->uncorrErrorStatus || + data->corrErrorStatus) + pr_info(" RootErrSts: %08x %08x %08x\n", + be32_to_cpu(data->rootErrorStatus), + be32_to_cpu(data->uncorrErrorStatus), + be32_to_cpu(data->corrErrorStatus)); + if (data->tlpHdr1 || data->tlpHdr2 || + data->tlpHdr3 || data->tlpHdr4) + pr_info(" RootErrLog: %08x %08x %08x %08x\n", + be32_to_cpu(data->tlpHdr1), be32_to_cpu(data->tlpHdr2), + be32_to_cpu(data->tlpHdr3), be32_to_cpu(data->tlpHdr4)); + if (data->sourceId || data->errorClass || + data->correlator) + pr_info(" RootErrLog1: %08x %016llx %016llx\n", + be32_to_cpu(data->sourceId), + be64_to_cpu(data->errorClass), + be64_to_cpu(data->correlator)); + if (data->nFir || data->nFirMask || + data->nFirWOF) + pr_info(" nFir: %016llx %016llx %016llx\n", + be64_to_cpu(data->nFir), + be64_to_cpu(data->nFirMask), + be64_to_cpu(data->nFirWOF)); + if (data->phbPlssr || data->phbCsr) + pr_info(" PhbSts: %016llx %016llx\n", + be64_to_cpu(data->phbPlssr), be64_to_cpu(data->phbCsr)); + if (data->lemFir || data->lemErrorMask || + data->lemWOF) + pr_info(" Lem: %016llx %016llx %016llx\n", + be64_to_cpu(data->lemFir), + be64_to_cpu(data->lemErrorMask), + be64_to_cpu(data->lemWOF)); + if (data->phbErrorStatus || data->phbFirstErrorStatus || + data->phbErrorLog0 || data->phbErrorLog1) + pr_info(" PhbErr: %016llx %016llx %016llx %016llx\n", + be64_to_cpu(data->phbErrorStatus), + be64_to_cpu(data->phbFirstErrorStatus), + be64_to_cpu(data->phbErrorLog0), + be64_to_cpu(data->phbErrorLog1)); + if (data->mmioErrorStatus || data->mmioFirstErrorStatus || + data->mmioErrorLog0 || data->mmioErrorLog1) + pr_info(" OutErr: %016llx %016llx %016llx %016llx\n", + be64_to_cpu(data->mmioErrorStatus), + be64_to_cpu(data->mmioFirstErrorStatus), + be64_to_cpu(data->mmioErrorLog0), + be64_to_cpu(data->mmioErrorLog1)); + if (data->dma0ErrorStatus || data->dma0FirstErrorStatus || + data->dma0ErrorLog0 || data->dma0ErrorLog1) + pr_info(" InAErr: %016llx %016llx %016llx %016llx\n", + be64_to_cpu(data->dma0ErrorStatus), + be64_to_cpu(data->dma0FirstErrorStatus), + be64_to_cpu(data->dma0ErrorLog0), + be64_to_cpu(data->dma0ErrorLog1)); + if (data->dma1ErrorStatus || data->dma1FirstErrorStatus || + data->dma1ErrorLog0 || data->dma1ErrorLog1) + pr_info(" InBErr: %016llx %016llx %016llx %016llx\n", + be64_to_cpu(data->dma1ErrorStatus), + be64_to_cpu(data->dma1FirstErrorStatus), + be64_to_cpu(data->dma1ErrorLog0), + be64_to_cpu(data->dma1ErrorLog1)); + + for (i = 0; i < OPAL_PHB3_NUM_PEST_REGS; i++) { + if ((be64_to_cpu(data->pestA[i]) >> 63) == 0 && + (be64_to_cpu(data->pestB[i]) >> 63) == 0) continue; - pr_info(" PE[%3d] PESTA = 0x%016llx\n", i, data->pestA[i]); - pr_info(" PESTB = 0x%016llx\n", data->pestB[i]); + + pr_info(" PE[%3d] A/B: %016llx %016llx\n", + i, be64_to_cpu(data->pestA[i]), + be64_to_cpu(data->pestB[i])); } } -static void pnv_pci_dump_phb_diag_data(struct pnv_phb *phb) +void pnv_pci_dump_phb_diag_data(struct pci_controller *hose, + unsigned char *log_buff) { - switch(phb->model) { - case PNV_PHB_MODEL_P7IOC: - pnv_pci_dump_p7ioc_diag_data(phb); + struct OpalIoPhbErrorCommon *common; + + if (!hose || !log_buff) + return; + + common = (struct OpalIoPhbErrorCommon *)log_buff; + switch (be32_to_cpu(common->ioType)) { + case OPAL_PHB_ERROR_DATA_TYPE_P7IOC: + pnv_pci_dump_p7ioc_diag_data(hose, common); + break; + case OPAL_PHB_ERROR_DATA_TYPE_PHB3: + pnv_pci_dump_phb3_diag_data(hose, common); break; default: - pr_warning("PCI %d: Can't decode this PHB diag data\n", - phb->hose->global_number); + pr_warn("%s: Unrecognized ioType %d\n", + __func__, be32_to_cpu(common->ioType)); } } @@ -222,7 +365,7 @@ * with the normal errors generated when probing empty slots */ if (has_diag) - pnv_pci_dump_phb_diag_data(phb); + pnv_pci_dump_phb_diag_data(phb->hose, phb->diag.blob); else pr_warning("PCI %d: No diag data available\n", phb->hose->global_number); @@ -553,6 +696,16 @@ pnv_pci_dma_fallback_setup(hose, pdev); } +int pnv_pci_dma_set_mask(struct pci_dev *pdev, u64 dma_mask) +{ + struct pci_controller *hose = pci_bus_to_host(pdev->bus); + struct pnv_phb *phb = hose->private_data; + + if (phb && phb->dma_set_mask) + return phb->dma_set_mask(phb, pdev, dma_mask); + return __dma_set_mask(&pdev->dev, dma_mask); +} + void pnv_pci_shutdown(void) { struct pci_controller *hose; --- linux-3.13.0.orig/arch/powerpc/platforms/powernv/pci.h +++ linux-3.13.0/arch/powerpc/platforms/powernv/pci.h @@ -54,7 +54,9 @@ struct iommu_table tce32_table; phys_addr_t tce_inval_reg_phys; - /* XXX TODO: Add support for additional 64-bit iommus */ + /* 64-bit TCE bypass region */ + bool tce_bypass_enabled; + uint64_t tce_bypass_base; /* MSIs. MVE index is identical for for 32 and 64 bit MSI * and -1 if not supported. (It's actually identical to the @@ -113,6 +115,8 @@ 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); + int (*dma_set_mask)(struct pnv_phb *phb, struct pci_dev *pdev, + u64 dma_mask); void (*fixup_phb)(struct pci_controller *hose); u32 (*bdfn_to_pe)(struct pnv_phb *phb, struct pci_bus *bus, u32 devfn); void (*shutdown)(struct pnv_phb *phb); @@ -177,6 +181,7 @@ unsigned char blob[PNV_PCI_DIAG_BUF_SIZE]; struct OpalIoP7IOCPhbErrorData p7ioc; struct OpalIoP7IOCErrorData hub_diag; + struct OpalIoPhb3ErrorData phb3; } diag; }; @@ -186,6 +191,8 @@ extern struct pnv_eeh_ops ioda_eeh_ops; #endif +void pnv_pci_dump_phb_diag_data(struct pci_controller *hose, + unsigned char *log_buff); int pnv_pci_cfg_read(struct device_node *dn, int where, int size, u32 *val); int pnv_pci_cfg_write(struct device_node *dn, --- linux-3.13.0.orig/arch/powerpc/platforms/powernv/powernv.h +++ linux-3.13.0/arch/powerpc/platforms/powernv/powernv.h @@ -7,12 +7,20 @@ static inline void pnv_smp_init(void) { } #endif +struct pci_dev; + #ifdef CONFIG_PCI extern void pnv_pci_init(void); extern void pnv_pci_shutdown(void); +extern int pnv_pci_dma_set_mask(struct pci_dev *pdev, u64 dma_mask); #else static inline void pnv_pci_init(void) { } static inline void pnv_pci_shutdown(void) { } + +static inline int pnv_pci_dma_set_mask(struct pci_dev *pdev, u64 dma_mask) +{ + return -ENODEV; +} #endif extern void pnv_lpc_init(void); --- linux-3.13.0.orig/arch/powerpc/platforms/powernv/setup.c +++ linux-3.13.0/arch/powerpc/platforms/powernv/setup.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include @@ -97,11 +98,32 @@ of_node_put(root); } +static void pnv_prepare_going_down(void) +{ + /* + * Disable all notifiers from OPAL, we can't + * service interrupts anymore anyway + */ + opal_notifier_disable(); + + /* Soft disable interrupts */ + local_irq_disable(); + + /* + * Return secondary CPUs to firwmare if a flash update + * is pending otherwise we will get all sort of error + * messages about CPU being stuck etc.. This will also + * have the side effect of hard disabling interrupts so + * past this point, the kernel is effectively dead. + */ + opal_flash_term_callback(); +} + static void __noreturn pnv_restart(char *cmd) { long rc = OPAL_BUSY; - opal_notifier_disable(); + pnv_prepare_going_down(); while (rc == OPAL_BUSY || rc == OPAL_BUSY_EVENT) { rc = opal_cec_reboot(); @@ -118,7 +140,7 @@ { long rc = OPAL_BUSY; - opal_notifier_disable(); + pnv_prepare_going_down(); while (rc == OPAL_BUSY || rc == OPAL_BUSY_EVENT) { rc = opal_cec_power_down(0); @@ -140,6 +162,13 @@ { } +static int pnv_dma_set_mask(struct device *dev, u64 dma_mask) +{ + if (dev_is_pci(dev)) + return pnv_pci_dma_set_mask(to_pci_dev(dev), dma_mask); + return __dma_set_mask(dev, dma_mask); +} + static void pnv_shutdown(void) { /* Let the PCI code clear up IODA tables */ @@ -152,18 +181,62 @@ } #ifdef CONFIG_KEXEC +static void pnv_kexec_wait_secondaries_down(void) +{ + int my_cpu, i, notified = -1; + + my_cpu = get_cpu(); + + for_each_online_cpu(i) { + uint8_t status; + int64_t rc; + + if (i == my_cpu) + continue; + + for (;;) { + rc = opal_query_cpu_status(get_hard_smp_processor_id(i), + &status); + if (rc != OPAL_SUCCESS || status != OPAL_THREAD_STARTED) + break; + barrier(); + if (i != notified) { + printk(KERN_INFO "kexec: waiting for cpu %d " + "(physical %d) to enter OPAL\n", + i, paca[i].hw_cpu_id); + notified = i; + } + } + } +} + static void pnv_kexec_cpu_down(int crash_shutdown, int secondary) { xics_kexec_teardown_cpu(secondary); - /* Return secondary CPUs to firmware on OPAL v3 */ - if (firmware_has_feature(FW_FEATURE_OPALv3) && secondary) { + /* On OPAL v3, we return all CPUs to firmware */ + + if (!firmware_has_feature(FW_FEATURE_OPALv3)) + return; + + if (secondary) { + /* Return secondary CPUs to firmware on OPAL v3 */ mb(); get_paca()->kexec_state = KEXEC_STATE_REAL_MODE; mb(); /* Return the CPU to OPAL */ opal_return_cpu(); + } else if (crash_shutdown) { + /* + * On crash, we don't wait for secondaries to go + * down as they might be unreachable or hung, so + * instead we just wait a bit and move on. + */ + mdelay(1); + } else { + /* Primary waits for the secondaries to have reached OPAL */ + pnv_kexec_wait_secondaries_down(); } } #endif /* CONFIG_KEXEC */ @@ -177,6 +250,7 @@ ppc_md.power_off = pnv_power_off; ppc_md.halt = pnv_halt; ppc_md.machine_check_exception = opal_machine_check; + ppc_md.mce_check_early_recovery = opal_mce_check_early_recovery; } #ifdef CONFIG_PPC_POWERNV_RTAS @@ -225,6 +299,7 @@ .machine_shutdown = pnv_shutdown, .power_save = power7_idle, .calibrate_decr = generic_calibrate_decr, + .dma_set_mask = pnv_dma_set_mask, #ifdef CONFIG_KEXEC .kexec_cpu_down = pnv_kexec_cpu_down, #endif --- linux-3.13.0.orig/arch/powerpc/platforms/pseries/dlpar.c +++ linux-3.13.0/arch/powerpc/platforms/pseries/dlpar.c @@ -408,21 +408,18 @@ if (rc) return -EINVAL; + rc = dlpar_acquire_drc(drc_index); + if (rc) + return -EINVAL; + parent = of_find_node_by_path("/cpus"); if (!parent) return -ENODEV; dn = dlpar_configure_connector(drc_index, parent); - if (!dn) - return -EINVAL; - of_node_put(parent); - - rc = dlpar_acquire_drc(drc_index); - if (rc) { - dlpar_free_cc_nodes(dn); + if (!dn) return -EINVAL; - } rc = dlpar_attach_node(dn); if (rc) { --- linux-3.13.0.orig/arch/powerpc/platforms/pseries/eeh_pseries.c +++ linux-3.13.0/arch/powerpc/platforms/pseries/eeh_pseries.c @@ -464,6 +464,7 @@ } else { result = EEH_STATE_NOT_SUPPORT; } + break; default: result = EEH_STATE_NOT_SUPPORT; } --- linux-3.13.0.orig/arch/powerpc/platforms/pseries/hotplug-cpu.c +++ linux-3.13.0/arch/powerpc/platforms/pseries/hotplug-cpu.c @@ -35,12 +35,7 @@ #include "offline_states.h" /* This version can't take the spinlock, because it never returns */ -static struct rtas_args rtas_stop_self_args = { - .token = RTAS_UNKNOWN_SERVICE, - .nargs = 0, - .nret = 1, - .rets = &rtas_stop_self_args.args[0], -}; +static int rtas_stop_self_token = RTAS_UNKNOWN_SERVICE; static DEFINE_PER_CPU(enum cpu_state_vals, preferred_offline_state) = CPU_STATE_OFFLINE; @@ -93,15 +88,20 @@ static void rtas_stop_self(void) { - struct rtas_args *args = &rtas_stop_self_args; + struct rtas_args args = { + .token = cpu_to_be32(rtas_stop_self_token), + .nargs = 0, + .nret = 1, + .rets = &args.args[0], + }; local_irq_disable(); - BUG_ON(args->token == RTAS_UNKNOWN_SERVICE); + BUG_ON(rtas_stop_self_token == RTAS_UNKNOWN_SERVICE); printk("cpu %u (hwid %u) Ready to die...\n", smp_processor_id(), hard_smp_processor_id()); - enter_rtas(__pa(args)); + enter_rtas(__pa(&args)); panic("Alas, I survived.\n"); } @@ -392,10 +392,10 @@ } } - rtas_stop_self_args.token = rtas_token("stop-self"); + rtas_stop_self_token = rtas_token("stop-self"); qcss_tok = rtas_token("query-cpu-stopped-state"); - if (rtas_stop_self_args.token == RTAS_UNKNOWN_SERVICE || + if (rtas_stop_self_token == RTAS_UNKNOWN_SERVICE || qcss_tok == RTAS_UNKNOWN_SERVICE) { printk(KERN_INFO "CPU Hotplug not supported by firmware " "- disabling.\n"); --- linux-3.13.0.orig/arch/powerpc/platforms/pseries/hotplug-memory.c +++ linux-3.13.0/arch/powerpc/platforms/pseries/hotplug-memory.c @@ -164,7 +164,7 @@ } static inline int pseries_remove_memory(struct device_node *np) { - return -EOPNOTSUPP; + return 0; } #endif /* CONFIG_MEMORY_HOTREMOVE */ --- linux-3.13.0.orig/arch/powerpc/platforms/pseries/io_event_irq.c +++ linux-3.13.0/arch/powerpc/platforms/pseries/io_event_irq.c @@ -82,9 +82,9 @@ * RTAS_TYPE_IO only exists in extended event log version 6 or later. * No need to check event log version. */ - if (unlikely(elog->type != RTAS_TYPE_IO)) { - printk_once(KERN_WARNING "io_event_irq: Unexpected event type %d", - elog->type); + if (unlikely(rtas_error_type(elog) != RTAS_TYPE_IO)) { + printk_once(KERN_WARNING"io_event_irq: Unexpected event type %d", + rtas_error_type(elog)); return NULL; } --- linux-3.13.0.orig/arch/powerpc/platforms/pseries/lpar.c +++ linux-3.13.0/arch/powerpc/platforms/pseries/lpar.c @@ -429,16 +429,17 @@ spin_unlock_irqrestore(&pSeries_lpar_tlbie_lock, flags); } -static void pSeries_lpar_hugepage_invalidate(struct mm_struct *mm, - unsigned char *hpte_slot_array, - unsigned long addr, int psize) +static void pSeries_lpar_hugepage_invalidate(unsigned long vsid, + unsigned long addr, + unsigned char *hpte_slot_array, + int psize, int ssize) { - int ssize = 0, i, index = 0; + int i, index = 0; unsigned long s_addr = addr; unsigned int max_hpte_count, valid; unsigned long vpn_array[PPC64_HUGE_HPTE_BATCH]; unsigned long slot_array[PPC64_HUGE_HPTE_BATCH]; - unsigned long shift, hidx, vpn = 0, vsid, hash, slot; + unsigned long shift, hidx, vpn = 0, hash, slot; shift = mmu_psize_defs[psize].shift; max_hpte_count = 1U << (PMD_SHIFT - shift); @@ -451,15 +452,6 @@ /* get the vpn */ addr = s_addr + (i * (1ul << shift)); - if (!is_kernel_addr(addr)) { - ssize = user_segment_size(addr); - vsid = get_vsid(mm->context.id, addr, ssize); - WARN_ON(vsid == 0); - } else { - vsid = get_kernel_vsid(addr, mmu_kernel_ssize); - ssize = mmu_kernel_ssize; - } - vpn = hpt_vpn(addr, vsid, ssize); hash = hpt_hash(vpn, shift, ssize); if (hidx & _PTEIDX_SECONDARY) --- linux-3.13.0.orig/arch/powerpc/platforms/pseries/mobility.c +++ linux-3.13.0/arch/powerpc/platforms/pseries/mobility.c @@ -24,10 +24,10 @@ static struct kobject *mobility_kobj; struct update_props_workarea { - u32 phandle; - u32 state; - u64 reserved; - u32 nprops; + __be32 phandle; + __be32 state; + __be64 reserved; + __be32 nprops; } __packed; #define NODE_ACTION_MASK 0xff000000 @@ -53,11 +53,11 @@ return rc; } -static int delete_dt_node(u32 phandle) +static int delete_dt_node(__be32 phandle) { struct device_node *dn; - dn = of_find_node_by_phandle(phandle); + dn = of_find_node_by_phandle(be32_to_cpu(phandle)); if (!dn) return -ENOENT; @@ -126,7 +126,7 @@ return 0; } -static int update_dt_node(u32 phandle, s32 scope) +static int update_dt_node(__be32 phandle, s32 scope) { struct update_props_workarea *upwa; struct device_node *dn; @@ -135,6 +135,7 @@ char *prop_data; char *rtas_buf; int update_properties_token; + u32 nprops; u32 vd; update_properties_token = rtas_token("ibm,update-properties"); @@ -145,7 +146,7 @@ if (!rtas_buf) return -ENOMEM; - dn = of_find_node_by_phandle(phandle); + dn = of_find_node_by_phandle(be32_to_cpu(phandle)); if (!dn) { kfree(rtas_buf); return -ENOENT; @@ -161,6 +162,7 @@ break; prop_data = rtas_buf + sizeof(*upwa); + nprops = be32_to_cpu(upwa->nprops); /* On the first call to ibm,update-properties for a node the * the first property value descriptor contains an empty @@ -169,17 +171,17 @@ */ if (*prop_data == 0) { prop_data++; - vd = *(u32 *)prop_data; + vd = be32_to_cpu(*(__be32 *)prop_data); prop_data += vd + sizeof(vd); - upwa->nprops--; + nprops--; } - for (i = 0; i < upwa->nprops; i++) { + for (i = 0; i < nprops; i++) { char *prop_name; prop_name = prop_data; prop_data += strlen(prop_name) + 1; - vd = *(u32 *)prop_data; + vd = be32_to_cpu(*(__be32 *)prop_data); prop_data += sizeof(vd); switch (vd) { @@ -211,13 +213,13 @@ return 0; } -static int add_dt_node(u32 parent_phandle, u32 drc_index) +static int add_dt_node(__be32 parent_phandle, __be32 drc_index) { struct device_node *dn; struct device_node *parent_dn; int rc; - parent_dn = of_find_node_by_phandle(parent_phandle); + parent_dn = of_find_node_by_phandle(be32_to_cpu(parent_phandle)); if (!parent_dn) return -ENOENT; @@ -236,7 +238,7 @@ int pseries_devicetree_update(s32 scope) { char *rtas_buf; - u32 *data; + __be32 *data; int update_nodes_token; int rc; @@ -253,17 +255,17 @@ if (rc && rc != 1) break; - data = (u32 *)rtas_buf + 4; - while (*data & NODE_ACTION_MASK) { + data = (__be32 *)rtas_buf + 4; + while (be32_to_cpu(*data) & NODE_ACTION_MASK) { int i; - u32 action = *data & NODE_ACTION_MASK; - int node_count = *data & NODE_COUNT_MASK; + u32 action = be32_to_cpu(*data) & NODE_ACTION_MASK; + u32 node_count = be32_to_cpu(*data) & NODE_COUNT_MASK; data++; for (i = 0; i < node_count; i++) { - u32 phandle = *data++; - u32 drc_index; + __be32 phandle = *data++; + __be32 drc_index; switch (action) { case DELETE_DT_NODE: --- linux-3.13.0.orig/arch/powerpc/platforms/pseries/msi.c +++ linux-3.13.0/arch/powerpc/platforms/pseries/msi.c @@ -428,7 +428,7 @@ */ again: if (type == PCI_CAP_ID_MSI) { - if (pdn->force_32bit_msi) { + if (pdev->no_64bit_msi) { rc = rtas_change_msi(pdn, RTAS_CHANGE_32MSI_FN, nvec); if (rc < 0) { /* --- linux-3.13.0.orig/arch/powerpc/platforms/pseries/pci.c +++ linux-3.13.0/arch/powerpc/platforms/pseries/pci.c @@ -117,6 +117,10 @@ bus = bridge->bus; + /* Rely on the pcibios_free_controller_deferred() callback. */ + pci_set_host_bridge_release(bridge, pcibios_free_controller_deferred, + (void *) pci_bus_to_host(bus)); + dn = pcibios_get_phb_of_node(bus); if (!dn) return 0; --- linux-3.13.0.orig/arch/powerpc/platforms/pseries/pci_dlpar.c +++ linux-3.13.0/arch/powerpc/platforms/pseries/pci_dlpar.c @@ -118,10 +118,10 @@ } } - /* Unregister the bridge device from sysfs and remove the PCI bus */ - device_unregister(b->bridge); + /* Remove the PCI bus and unregister the bridge device from sysfs */ phb->bus = NULL; pci_remove_bus(b); + device_unregister(b->bridge); /* Now release the IO resource */ if (res->flags & IORESOURCE_IO) @@ -135,8 +135,11 @@ release_resource(res); } - /* Free pci_controller data structure */ - pcibios_free_controller(phb); + /* + * The pci_controller data structure is freed by + * the pcibios_free_controller_deferred() callback; + * see pseries_root_bridge_prepare(). + */ return 0; } --- linux-3.13.0.orig/arch/powerpc/platforms/pseries/ras.c +++ linux-3.13.0/arch/powerpc/platforms/pseries/ras.c @@ -187,7 +187,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 */ @@ -236,7 +237,8 @@ rtas_elog = (struct rtas_error_log *)ras_log_buf; - if ((status == 0) && (rtas_elog->severity >= RTAS_SEVERITY_ERROR_SYNC)) + if (status == 0 && + rtas_error_severity(rtas_elog) >= RTAS_SEVERITY_ERROR_SYNC) fatal = 1; else fatal = 0; @@ -300,13 +302,14 @@ /* If it isn't an extended log we can use the per cpu 64bit buffer */ h = (struct rtas_error_log *)&savep[1]; - if (!h->extended) { + if (!rtas_error_extended(h)) { memcpy(&__get_cpu_var(mce_data_buf), h, sizeof(__u64)); errhdr = (struct rtas_error_log *)&__get_cpu_var(mce_data_buf); } else { - int len; + int len, error_log_length; - len = max_t(int, 8+h->extended_log_length, RTAS_ERROR_LOG_MAX); + error_log_length = 8 + rtas_error_extended_log_length(h); + len = max_t(int, error_log_length, RTAS_ERROR_LOG_MAX); memset(global_mce_data_buf, 0, RTAS_ERROR_LOG_MAX); memcpy(global_mce_data_buf, h, len); errhdr = (struct rtas_error_log *)global_mce_data_buf; @@ -350,23 +353,24 @@ static int recover_mce(struct pt_regs *regs, struct rtas_error_log *err) { int recovered = 0; + int disposition = rtas_error_disposition(err); if (!(regs->msr & MSR_RI)) { /* If MSR_RI isn't set, we cannot recover */ recovered = 0; - } else if (err->disposition == RTAS_DISP_FULLY_RECOVERED) { + } else if (disposition == RTAS_DISP_FULLY_RECOVERED) { /* Platform corrected itself */ recovered = 1; - } else if (err->disposition == RTAS_DISP_LIMITED_RECOVERY) { + } else if (disposition == RTAS_DISP_LIMITED_RECOVERY) { /* Platform corrected itself but could be degraded */ printk(KERN_ERR "MCE: limited recovery, system may " "be degraded\n"); recovered = 1; } else if (user_mode(regs) && !is_global_init(current) && - err->severity == RTAS_SEVERITY_ERROR_SYNC) { + rtas_error_severity(err) == RTAS_SEVERITY_ERROR_SYNC) { /* * If we received a synchronous error when in userspace --- linux-3.13.0.orig/arch/powerpc/sysdev/axonram.c +++ linux-3.13.0/arch/powerpc/sysdev/axonram.c @@ -155,7 +155,7 @@ } *kaddr = (void *)(bank->ph_addr + offset); - *pfn = virt_to_phys(kaddr) >> PAGE_SHIFT; + *pfn = virt_to_phys(*kaddr) >> PAGE_SHIFT; return 0; } --- linux-3.13.0.orig/arch/powerpc/sysdev/fsl_msi.c +++ linux-3.13.0/arch/powerpc/sysdev/fsl_msi.c @@ -121,15 +121,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-3.13.0.orig/arch/powerpc/sysdev/mpic_pasemi_msi.c +++ linux-3.13.0/arch/powerpc/sysdev/mpic_pasemi_msi.c @@ -74,6 +74,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); @@ -81,10 +82,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-3.13.0.orig/arch/powerpc/sysdev/mpic_u3msi.c +++ linux-3.13.0/arch/powerpc/sysdev/mpic_u3msi.c @@ -124,15 +124,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-3.13.0.orig/arch/powerpc/sysdev/ppc4xx_msi.c +++ linux-3.13.0/arch/powerpc/sysdev/ppc4xx_msi.c @@ -121,16 +121,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-3.13.0.orig/arch/powerpc/xmon/xmon.c +++ linux-3.13.0/arch/powerpc/xmon/xmon.c @@ -171,7 +171,11 @@ #define REG "%.8lx" #endif +#ifdef __LITTLE_ENDIAN__ +#define GETWORD(v) (((v)[3] << 24) + ((v)[2] << 16) + ((v)[1] << 8) + (v)[0]) +#else #define GETWORD(v) (((v)[0] << 24) + ((v)[1] << 16) + ((v)[2] << 8) + (v)[3]) +#endif #define isxdigit(c) (('0' <= (c) && (c) <= '9') \ || ('a' <= (c) && (c) <= 'f') \ @@ -288,10 +292,11 @@ args.token = rtas_token("set-indicator"); if (args.token == RTAS_UNKNOWN_SERVICE) return; - args.nargs = 3; - args.nret = 1; + args.token = cpu_to_be32(args.token); + args.nargs = cpu_to_be32(3); + args.nret = cpu_to_be32(1); args.rets = &args.args[3]; - args.args[0] = SURVEILLANCE_TOKEN; + args.args[0] = cpu_to_be32(SURVEILLANCE_TOKEN); args.args[1] = 0; args.args[2] = 0; enter_rtas(__pa(&args)); @@ -2051,6 +2056,10 @@ DUMP(p, stab_addr, "lx"); #endif DUMP(p, emergency_sp, "p"); +#ifdef CONFIG_PPC_BOOK3S_64 + DUMP(p, mc_emergency_sp, "p"); + DUMP(p, in_mce, "x"); +#endif DUMP(p, data_offset, "lx"); DUMP(p, hw_cpu_id, "x"); DUMP(p, cpu_start, "x"); --- linux-3.13.0.orig/arch/s390/Kconfig +++ linux-3.13.0/arch/s390/Kconfig @@ -93,6 +93,7 @@ select ARCH_INLINE_WRITE_UNLOCK_IRQ select ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE select ARCH_SAVE_PAGE_KEYS if HIBERNATION + select ARCH_SUPPORTS_ATOMIC_RMW select ARCH_USE_CMPXCHG_LOCKREF select ARCH_WANT_IPC_PARSE_VERSION select BUILDTIME_EXTABLE_SORT @@ -117,6 +118,7 @@ select HAVE_FUNCTION_GRAPH_TRACER select HAVE_FUNCTION_TRACER select HAVE_FUNCTION_TRACE_MCOUNT_TEST + select HAVE_FUTEX_CMPXCHG if FUTEX select HAVE_KERNEL_BZIP2 select HAVE_KERNEL_GZIP select HAVE_KERNEL_LZ4 --- linux-3.13.0.orig/arch/s390/boot/compressed/Makefile +++ linux-3.13.0/arch/s390/boot/compressed/Makefile @@ -12,7 +12,7 @@ KBUILD_CFLAGS := -m$(BITS) -D__KERNEL__ $(LINUX_INCLUDE) -O2 KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING -KBUILD_CFLAGS += $(cflags-y) +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-3.13.0.orig/arch/s390/crypto/aes_s390.c +++ linux-3.13.0/arch/s390/crypto/aes_s390.c @@ -25,6 +25,7 @@ #include #include #include +#include #include "crypt_s390.h" #define AES_KEYLEN_128 1 @@ -32,6 +33,7 @@ #define AES_KEYLEN_256 4 static u8 *ctrblk; +static DEFINE_SPINLOCK(ctrblk_lock); static char keylen_flag; struct s390_aes_ctx { @@ -758,43 +760,67 @@ return aes_set_key(tfm, in_key, key_len); } +static unsigned int __ctrblk_init(u8 *ctrptr, unsigned int nbytes) +{ + unsigned int i, n; + + /* only use complete blocks, max. PAGE_SIZE */ + n = (nbytes > PAGE_SIZE) ? PAGE_SIZE : nbytes & ~(AES_BLOCK_SIZE - 1); + for (i = AES_BLOCK_SIZE; i < n; i += AES_BLOCK_SIZE) { + memcpy(ctrptr + i, ctrptr + i - AES_BLOCK_SIZE, + AES_BLOCK_SIZE); + crypto_inc(ctrptr + i, AES_BLOCK_SIZE); + } + return n; +} + static int ctr_aes_crypt(struct blkcipher_desc *desc, long func, struct s390_aes_ctx *sctx, struct blkcipher_walk *walk) { int ret = blkcipher_walk_virt_block(desc, walk, AES_BLOCK_SIZE); - unsigned int i, n, nbytes; - u8 buf[AES_BLOCK_SIZE]; - u8 *out, *in; + unsigned int n, nbytes; + u8 buf[AES_BLOCK_SIZE], ctrbuf[AES_BLOCK_SIZE]; + u8 *out, *in, *ctrptr = ctrbuf; if (!walk->nbytes) return ret; - memcpy(ctrblk, walk->iv, AES_BLOCK_SIZE); + if (spin_trylock(&ctrblk_lock)) + ctrptr = ctrblk; + + memcpy(ctrptr, walk->iv, AES_BLOCK_SIZE); while ((nbytes = walk->nbytes) >= AES_BLOCK_SIZE) { out = walk->dst.virt.addr; in = walk->src.virt.addr; while (nbytes >= AES_BLOCK_SIZE) { - /* only use complete blocks, max. PAGE_SIZE */ - n = (nbytes > PAGE_SIZE) ? PAGE_SIZE : - nbytes & ~(AES_BLOCK_SIZE - 1); - for (i = AES_BLOCK_SIZE; i < n; i += AES_BLOCK_SIZE) { - memcpy(ctrblk + i, ctrblk + i - AES_BLOCK_SIZE, - AES_BLOCK_SIZE); - crypto_inc(ctrblk + i, AES_BLOCK_SIZE); - } - ret = crypt_s390_kmctr(func, sctx->key, out, in, n, ctrblk); - if (ret < 0 || ret != n) + if (ctrptr == ctrblk) + n = __ctrblk_init(ctrptr, nbytes); + else + n = AES_BLOCK_SIZE; + ret = crypt_s390_kmctr(func, sctx->key, out, in, + n, ctrptr); + if (ret < 0 || ret != n) { + if (ctrptr == ctrblk) + spin_unlock(&ctrblk_lock); return -EIO; + } if (n > AES_BLOCK_SIZE) - memcpy(ctrblk, ctrblk + n - AES_BLOCK_SIZE, + memcpy(ctrptr, ctrptr + n - AES_BLOCK_SIZE, AES_BLOCK_SIZE); - crypto_inc(ctrblk, AES_BLOCK_SIZE); + crypto_inc(ctrptr, AES_BLOCK_SIZE); out += n; in += n; nbytes -= n; } ret = blkcipher_walk_done(desc, walk, nbytes); } + if (ctrptr == ctrblk) { + if (nbytes) + memcpy(ctrbuf, ctrptr, AES_BLOCK_SIZE); + else + memcpy(walk->iv, ctrptr, AES_BLOCK_SIZE); + spin_unlock(&ctrblk_lock); + } /* * final block may be < AES_BLOCK_SIZE, copy only nbytes */ @@ -802,14 +828,15 @@ out = walk->dst.virt.addr; in = walk->src.virt.addr; ret = crypt_s390_kmctr(func, sctx->key, buf, in, - AES_BLOCK_SIZE, ctrblk); + AES_BLOCK_SIZE, ctrbuf); if (ret < 0 || ret != AES_BLOCK_SIZE) return -EIO; memcpy(out, buf, nbytes); - crypto_inc(ctrblk, AES_BLOCK_SIZE); + crypto_inc(ctrbuf, AES_BLOCK_SIZE); ret = blkcipher_walk_done(desc, walk, 0); + memcpy(walk->iv, ctrbuf, AES_BLOCK_SIZE); } - memcpy(walk->iv, ctrblk, AES_BLOCK_SIZE); + return ret; } @@ -949,7 +976,7 @@ module_init(aes_s390_init); module_exit(aes_s390_fini); -MODULE_ALIAS("aes-all"); +MODULE_ALIAS_CRYPTO("aes-all"); MODULE_DESCRIPTION("Rijndael (AES) Cipher Algorithm"); MODULE_LICENSE("GPL"); --- linux-3.13.0.orig/arch/s390/crypto/des_s390.c +++ linux-3.13.0/arch/s390/crypto/des_s390.c @@ -25,6 +25,7 @@ #define DES3_KEY_SIZE (3 * DES_KEY_SIZE) static u8 *ctrblk; +static DEFINE_SPINLOCK(ctrblk_lock); struct s390_des_ctx { u8 iv[DES_BLOCK_SIZE]; @@ -105,29 +106,35 @@ } static int cbc_desall_crypt(struct blkcipher_desc *desc, long func, - u8 *iv, struct blkcipher_walk *walk) + struct blkcipher_walk *walk) { + struct s390_des_ctx *ctx = crypto_blkcipher_ctx(desc->tfm); int ret = blkcipher_walk_virt(desc, walk); unsigned int nbytes = walk->nbytes; + struct { + u8 iv[DES_BLOCK_SIZE]; + u8 key[DES3_KEY_SIZE]; + } param; if (!nbytes) goto out; - memcpy(iv, walk->iv, DES_BLOCK_SIZE); + memcpy(param.iv, walk->iv, DES_BLOCK_SIZE); + memcpy(param.key, ctx->key, DES3_KEY_SIZE); do { /* only use complete blocks */ unsigned int n = nbytes & ~(DES_BLOCK_SIZE - 1); u8 *out = walk->dst.virt.addr; u8 *in = walk->src.virt.addr; - ret = crypt_s390_kmc(func, iv, out, in, n); + ret = crypt_s390_kmc(func, ¶m, out, in, n); if (ret < 0 || ret != n) return -EIO; nbytes &= DES_BLOCK_SIZE - 1; ret = blkcipher_walk_done(desc, walk, nbytes); } while ((nbytes = walk->nbytes)); - memcpy(walk->iv, iv, DES_BLOCK_SIZE); + memcpy(walk->iv, param.iv, DES_BLOCK_SIZE); out: return ret; @@ -179,22 +186,20 @@ struct scatterlist *dst, struct scatterlist *src, unsigned int nbytes) { - struct s390_des_ctx *ctx = crypto_blkcipher_ctx(desc->tfm); struct blkcipher_walk walk; blkcipher_walk_init(&walk, dst, src, nbytes); - return cbc_desall_crypt(desc, KMC_DEA_ENCRYPT, ctx->iv, &walk); + return cbc_desall_crypt(desc, KMC_DEA_ENCRYPT, &walk); } static int cbc_des_decrypt(struct blkcipher_desc *desc, struct scatterlist *dst, struct scatterlist *src, unsigned int nbytes) { - struct s390_des_ctx *ctx = crypto_blkcipher_ctx(desc->tfm); struct blkcipher_walk walk; blkcipher_walk_init(&walk, dst, src, nbytes); - return cbc_desall_crypt(desc, KMC_DEA_DECRYPT, ctx->iv, &walk); + return cbc_desall_crypt(desc, KMC_DEA_DECRYPT, &walk); } static struct crypto_alg cbc_des_alg = { @@ -327,22 +332,20 @@ struct scatterlist *dst, struct scatterlist *src, unsigned int nbytes) { - struct s390_des_ctx *ctx = crypto_blkcipher_ctx(desc->tfm); struct blkcipher_walk walk; blkcipher_walk_init(&walk, dst, src, nbytes); - return cbc_desall_crypt(desc, KMC_TDEA_192_ENCRYPT, ctx->iv, &walk); + return cbc_desall_crypt(desc, KMC_TDEA_192_ENCRYPT, &walk); } static int cbc_des3_decrypt(struct blkcipher_desc *desc, struct scatterlist *dst, struct scatterlist *src, unsigned int nbytes) { - struct s390_des_ctx *ctx = crypto_blkcipher_ctx(desc->tfm); struct blkcipher_walk walk; blkcipher_walk_init(&walk, dst, src, nbytes); - return cbc_desall_crypt(desc, KMC_TDEA_192_DECRYPT, ctx->iv, &walk); + return cbc_desall_crypt(desc, KMC_TDEA_192_DECRYPT, &walk); } static struct crypto_alg cbc_des3_alg = { @@ -366,54 +369,80 @@ } }; +static unsigned int __ctrblk_init(u8 *ctrptr, unsigned int nbytes) +{ + unsigned int i, n; + + /* align to block size, max. PAGE_SIZE */ + n = (nbytes > PAGE_SIZE) ? PAGE_SIZE : nbytes & ~(DES_BLOCK_SIZE - 1); + for (i = DES_BLOCK_SIZE; i < n; i += DES_BLOCK_SIZE) { + memcpy(ctrptr + i, ctrptr + i - DES_BLOCK_SIZE, DES_BLOCK_SIZE); + crypto_inc(ctrptr + i, DES_BLOCK_SIZE); + } + return n; +} + static int ctr_desall_crypt(struct blkcipher_desc *desc, long func, - struct s390_des_ctx *ctx, struct blkcipher_walk *walk) + struct s390_des_ctx *ctx, + struct blkcipher_walk *walk) { int ret = blkcipher_walk_virt_block(desc, walk, DES_BLOCK_SIZE); - unsigned int i, n, nbytes; - u8 buf[DES_BLOCK_SIZE]; - u8 *out, *in; + unsigned int n, nbytes; + u8 buf[DES_BLOCK_SIZE], ctrbuf[DES_BLOCK_SIZE]; + u8 *out, *in, *ctrptr = ctrbuf; + + if (!walk->nbytes) + return ret; - memcpy(ctrblk, walk->iv, DES_BLOCK_SIZE); + if (spin_trylock(&ctrblk_lock)) + ctrptr = ctrblk; + + memcpy(ctrptr, walk->iv, DES_BLOCK_SIZE); while ((nbytes = walk->nbytes) >= DES_BLOCK_SIZE) { out = walk->dst.virt.addr; in = walk->src.virt.addr; while (nbytes >= DES_BLOCK_SIZE) { - /* align to block size, max. PAGE_SIZE */ - n = (nbytes > PAGE_SIZE) ? PAGE_SIZE : - nbytes & ~(DES_BLOCK_SIZE - 1); - for (i = DES_BLOCK_SIZE; i < n; i += DES_BLOCK_SIZE) { - memcpy(ctrblk + i, ctrblk + i - DES_BLOCK_SIZE, - DES_BLOCK_SIZE); - crypto_inc(ctrblk + i, DES_BLOCK_SIZE); - } - ret = crypt_s390_kmctr(func, ctx->key, out, in, n, ctrblk); - if (ret < 0 || ret != n) + if (ctrptr == ctrblk) + n = __ctrblk_init(ctrptr, nbytes); + else + n = DES_BLOCK_SIZE; + ret = crypt_s390_kmctr(func, ctx->key, out, in, + n, ctrptr); + if (ret < 0 || ret != n) { + if (ctrptr == ctrblk) + spin_unlock(&ctrblk_lock); return -EIO; + } if (n > DES_BLOCK_SIZE) - memcpy(ctrblk, ctrblk + n - DES_BLOCK_SIZE, + memcpy(ctrptr, ctrptr + n - DES_BLOCK_SIZE, DES_BLOCK_SIZE); - crypto_inc(ctrblk, DES_BLOCK_SIZE); + crypto_inc(ctrptr, DES_BLOCK_SIZE); out += n; in += n; nbytes -= n; } ret = blkcipher_walk_done(desc, walk, nbytes); } - + if (ctrptr == ctrblk) { + if (nbytes) + memcpy(ctrbuf, ctrptr, DES_BLOCK_SIZE); + else + memcpy(walk->iv, ctrptr, DES_BLOCK_SIZE); + spin_unlock(&ctrblk_lock); + } /* final block may be < DES_BLOCK_SIZE, copy only nbytes */ if (nbytes) { out = walk->dst.virt.addr; in = walk->src.virt.addr; ret = crypt_s390_kmctr(func, ctx->key, buf, in, - DES_BLOCK_SIZE, ctrblk); + DES_BLOCK_SIZE, ctrbuf); if (ret < 0 || ret != DES_BLOCK_SIZE) return -EIO; memcpy(out, buf, nbytes); - crypto_inc(ctrblk, DES_BLOCK_SIZE); + crypto_inc(ctrbuf, DES_BLOCK_SIZE); ret = blkcipher_walk_done(desc, walk, 0); + memcpy(walk->iv, ctrbuf, DES_BLOCK_SIZE); } - memcpy(walk->iv, ctrblk, DES_BLOCK_SIZE); return ret; } @@ -587,8 +616,8 @@ module_init(des_s390_init); module_exit(des_s390_exit); -MODULE_ALIAS("des"); -MODULE_ALIAS("des3_ede"); +MODULE_ALIAS_CRYPTO("des"); +MODULE_ALIAS_CRYPTO("des3_ede"); MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("DES & Triple DES EDE Cipher Algorithms"); --- linux-3.13.0.orig/arch/s390/crypto/ghash_s390.c +++ linux-3.13.0/arch/s390/crypto/ghash_s390.c @@ -16,11 +16,12 @@ #define GHASH_DIGEST_SIZE 16 struct ghash_ctx { - u8 icv[16]; - u8 key[16]; + u8 key[GHASH_BLOCK_SIZE]; }; struct ghash_desc_ctx { + u8 icv[GHASH_BLOCK_SIZE]; + u8 key[GHASH_BLOCK_SIZE]; u8 buffer[GHASH_BLOCK_SIZE]; u32 bytes; }; @@ -28,8 +29,10 @@ static int ghash_init(struct shash_desc *desc) { struct ghash_desc_ctx *dctx = shash_desc_ctx(desc); + struct ghash_ctx *ctx = crypto_shash_ctx(desc->tfm); memset(dctx, 0, sizeof(*dctx)); + memcpy(dctx->key, ctx->key, GHASH_BLOCK_SIZE); return 0; } @@ -45,7 +48,6 @@ } memcpy(ctx->key, key, GHASH_BLOCK_SIZE); - memset(ctx->icv, 0, GHASH_BLOCK_SIZE); return 0; } @@ -54,7 +56,6 @@ const u8 *src, unsigned int srclen) { struct ghash_desc_ctx *dctx = shash_desc_ctx(desc); - struct ghash_ctx *ctx = crypto_shash_ctx(desc->tfm); unsigned int n; u8 *buf = dctx->buffer; int ret; @@ -70,7 +71,7 @@ src += n; if (!dctx->bytes) { - ret = crypt_s390_kimd(KIMD_GHASH, ctx, buf, + ret = crypt_s390_kimd(KIMD_GHASH, dctx, buf, GHASH_BLOCK_SIZE); if (ret != GHASH_BLOCK_SIZE) return -EIO; @@ -79,7 +80,7 @@ n = srclen & ~(GHASH_BLOCK_SIZE - 1); if (n) { - ret = crypt_s390_kimd(KIMD_GHASH, ctx, src, n); + ret = crypt_s390_kimd(KIMD_GHASH, dctx, src, n); if (ret != n) return -EIO; src += n; @@ -94,7 +95,7 @@ return 0; } -static int ghash_flush(struct ghash_ctx *ctx, struct ghash_desc_ctx *dctx) +static int ghash_flush(struct ghash_desc_ctx *dctx) { u8 *buf = dctx->buffer; int ret; @@ -104,24 +105,24 @@ memset(pos, 0, dctx->bytes); - ret = crypt_s390_kimd(KIMD_GHASH, ctx, buf, GHASH_BLOCK_SIZE); + ret = crypt_s390_kimd(KIMD_GHASH, dctx, buf, GHASH_BLOCK_SIZE); if (ret != GHASH_BLOCK_SIZE) return -EIO; + + dctx->bytes = 0; } - dctx->bytes = 0; return 0; } static int ghash_final(struct shash_desc *desc, u8 *dst) { struct ghash_desc_ctx *dctx = shash_desc_ctx(desc); - struct ghash_ctx *ctx = crypto_shash_ctx(desc->tfm); int ret; - ret = ghash_flush(ctx, dctx); + ret = ghash_flush(dctx); if (!ret) - memcpy(dst, ctx->icv, GHASH_BLOCK_SIZE); + memcpy(dst, dctx->icv, GHASH_BLOCK_SIZE); return ret; } @@ -160,7 +161,7 @@ module_init(ghash_mod_init); module_exit(ghash_mod_exit); -MODULE_ALIAS("ghash"); +MODULE_ALIAS_CRYPTO("ghash"); MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("GHASH Message Digest Algorithm, s390 implementation"); --- linux-3.13.0.orig/arch/s390/crypto/sha1_s390.c +++ linux-3.13.0/arch/s390/crypto/sha1_s390.c @@ -103,6 +103,6 @@ module_init(sha1_s390_init); module_exit(sha1_s390_fini); -MODULE_ALIAS("sha1"); +MODULE_ALIAS_CRYPTO("sha1"); MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("SHA1 Secure Hash Algorithm"); --- linux-3.13.0.orig/arch/s390/crypto/sha256_s390.c +++ linux-3.13.0/arch/s390/crypto/sha256_s390.c @@ -143,7 +143,7 @@ module_init(sha256_s390_init); module_exit(sha256_s390_fini); -MODULE_ALIAS("sha256"); -MODULE_ALIAS("sha224"); +MODULE_ALIAS_CRYPTO("sha256"); +MODULE_ALIAS_CRYPTO("sha224"); MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("SHA256 and SHA224 Secure Hash Algorithm"); --- linux-3.13.0.orig/arch/s390/crypto/sha512_s390.c +++ linux-3.13.0/arch/s390/crypto/sha512_s390.c @@ -86,7 +86,7 @@ } }; -MODULE_ALIAS("sha512"); +MODULE_ALIAS_CRYPTO("sha512"); static int sha384_init(struct shash_desc *desc) { @@ -126,7 +126,7 @@ } }; -MODULE_ALIAS("sha384"); +MODULE_ALIAS_CRYPTO("sha384"); static int __init init(void) { --- linux-3.13.0.orig/arch/s390/include/asm/atomic.h +++ linux-3.13.0/arch/s390/include/asm/atomic.h @@ -15,23 +15,29 @@ #include #include +#include #include #define ATOMIC_INIT(i) { (i) } +#define __ATOMIC_NO_BARRIER "\n" + #ifdef CONFIG_HAVE_MARCH_Z196_FEATURES #define __ATOMIC_OR "lao" #define __ATOMIC_AND "lan" #define __ATOMIC_ADD "laa" +#define __ATOMIC_BARRIER "bcr 14,0\n" -#define __ATOMIC_LOOP(ptr, op_val, op_string) \ +#define __ATOMIC_LOOP(ptr, op_val, op_string, __barrier) \ ({ \ int old_val; \ \ typecheck(atomic_t *, ptr); \ asm volatile( \ + __barrier \ op_string " %0,%2,%1\n" \ + __barrier \ : "=d" (old_val), "+Q" ((ptr)->counter) \ : "d" (op_val) \ : "cc", "memory"); \ @@ -43,8 +49,9 @@ #define __ATOMIC_OR "or" #define __ATOMIC_AND "nr" #define __ATOMIC_ADD "ar" +#define __ATOMIC_BARRIER "\n" -#define __ATOMIC_LOOP(ptr, op_val, op_string) \ +#define __ATOMIC_LOOP(ptr, op_val, op_string, __barrier) \ ({ \ int old_val, new_val; \ \ @@ -82,7 +89,7 @@ static inline int atomic_add_return(int i, atomic_t *v) { - return __ATOMIC_LOOP(v, i, __ATOMIC_ADD) + i; + return __ATOMIC_LOOP(v, i, __ATOMIC_ADD, __ATOMIC_BARRIER) + i; } static inline void atomic_add(int i, atomic_t *v) @@ -94,12 +101,10 @@ : "+Q" (v->counter) : "i" (i) : "cc", "memory"); - } else { - atomic_add_return(i, v); + return; } -#else - atomic_add_return(i, v); #endif + __ATOMIC_LOOP(v, i, __ATOMIC_ADD, __ATOMIC_NO_BARRIER); } #define atomic_add_negative(_i, _v) (atomic_add_return(_i, _v) < 0) @@ -115,12 +120,12 @@ static inline void atomic_clear_mask(unsigned int mask, atomic_t *v) { - __ATOMIC_LOOP(v, ~mask, __ATOMIC_AND); + __ATOMIC_LOOP(v, ~mask, __ATOMIC_AND, __ATOMIC_NO_BARRIER); } static inline void atomic_set_mask(unsigned int mask, atomic_t *v) { - __ATOMIC_LOOP(v, mask, __ATOMIC_OR); + __ATOMIC_LOOP(v, mask, __ATOMIC_OR, __ATOMIC_NO_BARRIER); } #define atomic_xchg(v, new) (xchg(&((v)->counter), new)) @@ -157,19 +162,24 @@ #ifdef CONFIG_64BIT +#define __ATOMIC64_NO_BARRIER "\n" + #ifdef CONFIG_HAVE_MARCH_Z196_FEATURES #define __ATOMIC64_OR "laog" #define __ATOMIC64_AND "lang" #define __ATOMIC64_ADD "laag" +#define __ATOMIC64_BARRIER "bcr 14,0\n" -#define __ATOMIC64_LOOP(ptr, op_val, op_string) \ +#define __ATOMIC64_LOOP(ptr, op_val, op_string, __barrier) \ ({ \ long long old_val; \ \ typecheck(atomic64_t *, ptr); \ asm volatile( \ + __barrier \ op_string " %0,%2,%1\n" \ + __barrier \ : "=d" (old_val), "+Q" ((ptr)->counter) \ : "d" (op_val) \ : "cc", "memory"); \ @@ -181,8 +191,9 @@ #define __ATOMIC64_OR "ogr" #define __ATOMIC64_AND "ngr" #define __ATOMIC64_ADD "agr" +#define __ATOMIC64_BARRIER "\n" -#define __ATOMIC64_LOOP(ptr, op_val, op_string) \ +#define __ATOMIC64_LOOP(ptr, op_val, op_string, __barrier) \ ({ \ long long old_val, new_val; \ \ @@ -220,17 +231,32 @@ static inline long long atomic64_add_return(long long i, atomic64_t *v) { - return __ATOMIC64_LOOP(v, i, __ATOMIC64_ADD) + i; + return __ATOMIC64_LOOP(v, i, __ATOMIC64_ADD, __ATOMIC64_BARRIER) + i; +} + +static inline void atomic64_add(long long i, atomic64_t *v) +{ +#ifdef CONFIG_HAVE_MARCH_Z196_FEATURES + if (__builtin_constant_p(i) && (i > -129) && (i < 128)) { + asm volatile( + "agsi %0,%1\n" + : "+Q" (v->counter) + : "i" (i) + : "cc", "memory"); + return; + } +#endif + __ATOMIC64_LOOP(v, i, __ATOMIC64_ADD, __ATOMIC64_NO_BARRIER); } static inline void atomic64_clear_mask(unsigned long mask, atomic64_t *v) { - __ATOMIC64_LOOP(v, ~mask, __ATOMIC64_AND); + __ATOMIC64_LOOP(v, ~mask, __ATOMIC64_AND, __ATOMIC64_NO_BARRIER); } static inline void atomic64_set_mask(unsigned long mask, atomic64_t *v) { - __ATOMIC64_LOOP(v, mask, __ATOMIC64_OR); + __ATOMIC64_LOOP(v, mask, __ATOMIC64_OR, __ATOMIC64_NO_BARRIER); } #define atomic64_xchg(v, new) (xchg(&((v)->counter), new)) @@ -334,25 +360,13 @@ } while (atomic64_cmpxchg(v, old, new) != old); } -#endif /* CONFIG_64BIT */ - static inline void atomic64_add(long long i, atomic64_t *v) { -#ifdef CONFIG_HAVE_MARCH_Z196_FEATURES - if (__builtin_constant_p(i) && (i > -129) && (i < 128)) { - asm volatile( - "agsi %0,%1\n" - : "+Q" (v->counter) - : "i" (i) - : "cc", "memory"); - } else { - atomic64_add_return(i, v); - } -#else atomic64_add_return(i, v); -#endif } +#endif /* CONFIG_64BIT */ + static inline int atomic64_add_unless(atomic64_t *v, long long i, long long u) { long long c, old; --- linux-3.13.0.orig/arch/s390/include/asm/bitops.h +++ linux-3.13.0/arch/s390/include/asm/bitops.h @@ -47,14 +47,18 @@ #include #include +#include + +#define __BITOPS_NO_BARRIER "\n" #ifndef CONFIG_64BIT #define __BITOPS_OR "or" #define __BITOPS_AND "nr" #define __BITOPS_XOR "xr" +#define __BITOPS_BARRIER "\n" -#define __BITOPS_LOOP(__addr, __val, __op_string) \ +#define __BITOPS_LOOP(__addr, __val, __op_string, __barrier) \ ({ \ unsigned long __old, __new; \ \ @@ -67,7 +71,7 @@ " jl 0b" \ : "=&d" (__old), "=&d" (__new), "+Q" (*(__addr))\ : "d" (__val) \ - : "cc"); \ + : "cc", "memory"); \ __old; \ }) @@ -78,17 +82,20 @@ #define __BITOPS_OR "laog" #define __BITOPS_AND "lang" #define __BITOPS_XOR "laxg" +#define __BITOPS_BARRIER "bcr 14,0\n" -#define __BITOPS_LOOP(__addr, __val, __op_string) \ +#define __BITOPS_LOOP(__addr, __val, __op_string, __barrier) \ ({ \ unsigned long __old; \ \ typecheck(unsigned long *, (__addr)); \ asm volatile( \ + __barrier \ __op_string " %0,%2,%1\n" \ + __barrier \ : "=d" (__old), "+Q" (*(__addr)) \ : "d" (__val) \ - : "cc"); \ + : "cc", "memory"); \ __old; \ }) @@ -97,8 +104,9 @@ #define __BITOPS_OR "ogr" #define __BITOPS_AND "ngr" #define __BITOPS_XOR "xgr" +#define __BITOPS_BARRIER "\n" -#define __BITOPS_LOOP(__addr, __val, __op_string) \ +#define __BITOPS_LOOP(__addr, __val, __op_string, __barrier) \ ({ \ unsigned long __old, __new; \ \ @@ -111,7 +119,7 @@ " jl 0b" \ : "=&d" (__old), "=&d" (__new), "+Q" (*(__addr))\ : "d" (__val) \ - : "cc"); \ + : "cc", "memory"); \ __old; \ }) @@ -149,12 +157,12 @@ "oi %0,%b1\n" : "+Q" (*caddr) : "i" (1 << (nr & 7)) - : "cc"); + : "cc", "memory"); return; } #endif mask = 1UL << (nr & (BITS_PER_LONG - 1)); - __BITOPS_LOOP(addr, mask, __BITOPS_OR); + __BITOPS_LOOP(addr, mask, __BITOPS_OR, __BITOPS_NO_BARRIER); } static inline void clear_bit(unsigned long nr, volatile unsigned long *ptr) @@ -170,12 +178,12 @@ "ni %0,%b1\n" : "+Q" (*caddr) : "i" (~(1 << (nr & 7))) - : "cc"); + : "cc", "memory"); return; } #endif mask = ~(1UL << (nr & (BITS_PER_LONG - 1))); - __BITOPS_LOOP(addr, mask, __BITOPS_AND); + __BITOPS_LOOP(addr, mask, __BITOPS_AND, __BITOPS_NO_BARRIER); } static inline void change_bit(unsigned long nr, volatile unsigned long *ptr) @@ -191,12 +199,12 @@ "xi %0,%b1\n" : "+Q" (*caddr) : "i" (1 << (nr & 7)) - : "cc"); + : "cc", "memory"); return; } #endif mask = 1UL << (nr & (BITS_PER_LONG - 1)); - __BITOPS_LOOP(addr, mask, __BITOPS_XOR); + __BITOPS_LOOP(addr, mask, __BITOPS_XOR, __BITOPS_NO_BARRIER); } static inline int @@ -206,8 +214,7 @@ unsigned long old, mask; mask = 1UL << (nr & (BITS_PER_LONG - 1)); - old = __BITOPS_LOOP(addr, mask, __BITOPS_OR); - barrier(); + old = __BITOPS_LOOP(addr, mask, __BITOPS_OR, __BITOPS_BARRIER); return (old & mask) != 0; } @@ -218,8 +225,7 @@ unsigned long old, mask; mask = ~(1UL << (nr & (BITS_PER_LONG - 1))); - old = __BITOPS_LOOP(addr, mask, __BITOPS_AND); - barrier(); + old = __BITOPS_LOOP(addr, mask, __BITOPS_AND, __BITOPS_BARRIER); return (old & ~mask) != 0; } @@ -230,8 +236,7 @@ unsigned long old, mask; mask = 1UL << (nr & (BITS_PER_LONG - 1)); - old = __BITOPS_LOOP(addr, mask, __BITOPS_XOR); - barrier(); + old = __BITOPS_LOOP(addr, mask, __BITOPS_XOR, __BITOPS_BARRIER); return (old & mask) != 0; } --- linux-3.13.0.orig/arch/s390/include/asm/ccwdev.h +++ linux-3.13.0/arch/s390/include/asm/ccwdev.h @@ -219,7 +219,7 @@ #define to_ccwdev(n) container_of(n, struct ccw_device, dev) #define to_ccwdrv(n) container_of(n, struct ccw_driver, driver) -extern struct ccw_device *ccw_device_probe_console(void); +extern struct ccw_device *ccw_device_probe_console(struct ccw_driver *); extern void ccw_device_wait_idle(struct ccw_device *); extern int ccw_device_force_console(struct ccw_device *); --- linux-3.13.0.orig/arch/s390/include/asm/compat.h +++ linux-3.13.0/arch/s390/include/asm/compat.h @@ -38,7 +38,8 @@ #define PSW32_USER_BITS (PSW32_MASK_DAT | PSW32_MASK_IO | PSW32_MASK_EXT | \ PSW32_DEFAULT_KEY | PSW32_MASK_BASE | \ - PSW32_MASK_MCHECK | PSW32_MASK_PSTATE | PSW32_ASC_HOME) + PSW32_MASK_MCHECK | PSW32_MASK_PSTATE | \ + PSW32_ASC_PRIMARY) #define COMPAT_USER_HZ 100 #define COMPAT_UTS_MACHINE "s390\0\0\0\0" --- linux-3.13.0.orig/arch/s390/include/asm/lowcore.h +++ linux-3.13.0/arch/s390/include/asm/lowcore.h @@ -142,9 +142,9 @@ __u8 pad_0x02fc[0x0300-0x02fc]; /* 0x02fc */ /* Interrupt response block */ - __u8 irb[64]; /* 0x0300 */ + __u8 irb[96]; /* 0x0300 */ - __u8 pad_0x0340[0x0e00-0x0340]; /* 0x0340 */ + __u8 pad_0x0360[0x0e00-0x0360]; /* 0x0360 */ /* * 0xe00 contains the address of the IPL Parameter Information @@ -288,12 +288,13 @@ __u8 pad_0x03a0[0x0400-0x03a0]; /* 0x03a0 */ /* Interrupt response block. */ - __u8 irb[64]; /* 0x0400 */ + __u8 irb[96]; /* 0x0400 */ + __u8 pad_0x0460[0x0480-0x0460]; /* 0x0460 */ /* Per cpu primary space access list */ - __u32 paste[16]; /* 0x0440 */ + __u32 paste[16]; /* 0x0480 */ - __u8 pad_0x0480[0x0e00-0x0480]; /* 0x0480 */ + __u8 pad_0x04c0[0x0e00-0x04c0]; /* 0x04c0 */ /* * 0xe00 contains the address of the IPL Parameter Information --- linux-3.13.0.orig/arch/s390/include/asm/pci.h +++ linux-3.13.0/arch/s390/include/asm/pci.h @@ -48,7 +48,7 @@ atomic64_t allocated_pages; atomic64_t mapped_pages; atomic64_t unmapped_pages; -} __packed __aligned(16); +} __packed __aligned(64); #define ZPCI_MSI_VEC_BITS 11 #define ZPCI_MSI_VEC_MAX (1 << ZPCI_MSI_VEC_BITS) --- linux-3.13.0.orig/arch/s390/include/uapi/asm/statfs.h +++ linux-3.13.0/arch/s390/include/uapi/asm/statfs.h @@ -35,11 +35,11 @@ struct statfs64 { unsigned int f_type; unsigned int f_bsize; - unsigned long f_blocks; - unsigned long f_bfree; - unsigned long f_bavail; - unsigned long f_files; - unsigned long f_ffree; + unsigned long long f_blocks; + unsigned long long f_bfree; + unsigned long long f_bavail; + unsigned long long f_files; + unsigned long long f_ffree; __kernel_fsid_t f_fsid; unsigned int f_namelen; unsigned int f_frsize; --- linux-3.13.0.orig/arch/s390/kernel/compat_linux.c +++ linux-3.13.0/arch/s390/kernel/compat_linux.c @@ -245,7 +245,7 @@ struct group_info *group_info; int retval; - if (!capable(CAP_SETGID)) + if (!may_setgroups()) return -EPERM; if ((unsigned)gidsetsize > NGROUPS_MAX) return -EINVAL; --- linux-3.13.0.orig/arch/s390/kernel/dis.c +++ linux-3.13.0/arch/s390/kernel/dis.c @@ -1726,14 +1726,21 @@ } 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_PCREL) ptr += sprintf(ptr, "%lx", (signed int) value + addr); --- linux-3.13.0.orig/arch/s390/kernel/head64.S +++ linux-3.13.0/arch/s390/kernel/head64.S @@ -59,7 +59,7 @@ .quad 0 # cr12: tracing off .quad 0 # cr13: home space segment table .quad 0xc0000000 # cr14: machine check handling off - .quad 0 # cr15: linkage stack operations + .quad .Llinkage_stack # cr15: linkage stack operations .Lpcmsk:.quad 0x0000000180000000 .L4malign:.quad 0xffffffffffc00000 .Lscan2g:.quad 0x80000000 + 0x20000 - 8 # 2GB + 128K - 8 @@ -67,12 +67,15 @@ .Lparmaddr: .quad PARMAREA .align 64 -.Lduct: .long 0,0,0,0,.Lduald,0,0,0 +.Lduct: .long 0,.Laste,.Laste,0,.Lduald,0,0,0 .long 0,0,0,0,0,0,0,0 +.Laste: .quad 0,0xffffffffffffffff,0,0,0,0,0,0 .align 128 .Lduald:.rept 8 .long 0x80000000,0,0,0 # invalid access-list entries .endr +.Llinkage_stack: + .long 0,0,0x89000000,0,0,0,0x8a000000,0 ENTRY(_ehead) --- linux-3.13.0.orig/arch/s390/kernel/process.c +++ linux-3.13.0/arch/s390/kernel/process.c @@ -195,7 +195,7 @@ { current->thread.fp_regs.fpc = 0; if (MACHINE_HAS_IEEE) - asm volatile("sfpc %0,%0" : : "d" (0)); + asm volatile("sfpc %0" : : "d" (0)); } /* --- linux-3.13.0.orig/arch/s390/kernel/ptrace.c +++ linux-3.13.0/arch/s390/kernel/ptrace.c @@ -326,9 +326,14 @@ unsigned long mask = PSW_MASK_USER; mask |= is_ri_task(child) ? PSW_MASK_RI : 0; - if ((data & ~mask) != PSW_USER_BITS) + if ((data ^ PSW_USER_BITS) & ~mask) + /* Invalid psw mask. */ + return -EINVAL; + if ((data & PSW_MASK_ASC) == PSW_ASC_HOME) + /* Invalid address-space-control bits */ return -EINVAL; if ((data & PSW_MASK_EA) && !(data & PSW_MASK_BA)) + /* Invalid addressing mode bits */ return -EINVAL; } *(addr_t *)((addr_t) &task_pt_regs(child)->psw + addr) = data; @@ -664,9 +669,12 @@ mask |= is_ri_task(child) ? PSW32_MASK_RI : 0; /* Build a 64 bit psw mask from 31 bit mask. */ - if ((tmp & ~mask) != PSW32_USER_BITS) + if ((tmp ^ PSW32_USER_BITS) & ~mask) /* Invalid psw mask. */ return -EINVAL; + if ((data & PSW32_MASK_ASC) == PSW32_ASC_HOME) + /* Invalid address-space-control bits */ + return -EINVAL; regs->psw.mask = (regs->psw.mask & ~PSW_MASK_USER) | (regs->psw.mask & PSW_MASK_BA) | (__u64)(tmp & mask) << 32; --- linux-3.13.0.orig/arch/s390/kernel/sclp.S +++ linux-3.13.0/arch/s390/kernel/sclp.S @@ -276,6 +276,8 @@ jno .Lesa2 ahi %r15,-80 stmh %r6,%r15,96(%r15) # store upper register halves + basr %r13,0 + lmh %r0,%r15,.Lzeroes-.(%r13) # clear upper register halves .Lesa2: #endif lr %r10,%r2 # save string pointer @@ -299,6 +301,8 @@ #endif lm %r6,%r15,120(%r15) # restore registers br %r14 +.Lzeroes: + .fill 64,4,0 .LwritedataS4: .long 0x00760005 # SCLP command for write data --- linux-3.13.0.orig/arch/s390/kernel/suspend.c +++ linux-3.13.0/arch/s390/kernel/suspend.c @@ -142,6 +142,8 @@ { unsigned long nosave_begin_pfn = PFN_DOWN(__pa(&__nosave_begin)); unsigned long nosave_end_pfn = PFN_DOWN(__pa(&__nosave_end)); + unsigned long eshared_pfn = PFN_DOWN(__pa(&_eshared)) - 1; + unsigned long stext_pfn = PFN_DOWN(__pa(&_stext)); /* Always save lowcore pages (LC protection might be enabled). */ if (pfn <= LC_PAGES) @@ -149,6 +151,8 @@ if (pfn >= nosave_begin_pfn && pfn < nosave_end_pfn) return 1; /* Skip memory holes and read-only pages (NSS, DCSS, ...). */ + if (pfn >= stext_pfn && pfn <= eshared_pfn) + return ipl_info.type == IPL_TYPE_NSS ? 1 : 0; if (tprot(PFN_PHYS(pfn))) return 1; return 0; --- linux-3.13.0.orig/arch/s390/kernel/time.c +++ linux-3.13.0/arch/s390/kernel/time.c @@ -226,7 +226,7 @@ vdso_data->wtom_clock_sec = tk->xtime_sec + tk->wall_to_monotonic.tv_sec; vdso_data->wtom_clock_nsec = tk->xtime_nsec + - + (tk->wall_to_monotonic.tv_nsec << tk->shift); + + ((u64) tk->wall_to_monotonic.tv_nsec << tk->shift); nsecps = (u64) NSEC_PER_SEC << tk->shift; while (vdso_data->wtom_clock_nsec >= nsecps) { vdso_data->wtom_clock_nsec -= nsecps; --- linux-3.13.0.orig/arch/s390/kvm/diag.c +++ linux-3.13.0/arch/s390/kvm/diag.c @@ -121,7 +121,7 @@ * - gpr 4 contains the index on the bus (optionally) */ ret = kvm_io_bus_write_cookie(vcpu->kvm, KVM_VIRTIO_CCW_NOTIFY_BUS, - vcpu->run->s.regs.gprs[2], + vcpu->run->s.regs.gprs[2] & 0xffffffff, 8, &vcpu->run->s.regs.gprs[3], vcpu->run->s.regs.gprs[4]); @@ -137,7 +137,7 @@ int kvm_s390_handle_diag(struct kvm_vcpu *vcpu) { - int code = (vcpu->arch.sie_block->ipb & 0xfff0000) >> 16; + int code = kvm_s390_get_base_disp_rs(vcpu) & 0xffff; if (vcpu->arch.sie_block->gpsw.mask & PSW_MASK_PSTATE) return kvm_s390_inject_program_int(vcpu, PGM_PRIVILEGED_OP); --- linux-3.13.0.orig/arch/s390/kvm/interrupt.c +++ linux-3.13.0/arch/s390/kvm/interrupt.c @@ -71,6 +71,7 @@ return 0; if (vcpu->arch.sie_block->gcr[0] & 0x2000ul) return 1; + return 0; case KVM_S390_INT_EMERGENCY: if (psw_extint_disabled(vcpu)) return 0; --- linux-3.13.0.orig/arch/s390/kvm/kvm-s390.c +++ linux-3.13.0/arch/s390/kvm/kvm-s390.c @@ -398,7 +398,7 @@ vcpu->arch.sie_block->ecb2 = 8; vcpu->arch.sie_block->eca = 0xC1002001U; vcpu->arch.sie_block->fac = (int) (long) vfacilities; - hrtimer_init(&vcpu->arch.ckc_timer, CLOCK_REALTIME, HRTIMER_MODE_ABS); + hrtimer_init(&vcpu->arch.ckc_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); tasklet_init(&vcpu->arch.tasklet, kvm_s390_tasklet, (unsigned long) vcpu); vcpu->arch.ckc_timer.function = kvm_s390_idle_wakeup; @@ -746,7 +746,8 @@ if (rc == 0) { if (kvm_is_ucontrol(vcpu->kvm)) - rc = -EOPNOTSUPP; + /* Don't exit for host interrupts. */ + rc = vcpu->arch.sie_block->icptcode ? -EOPNOTSUPP : 0; else rc = kvm_handle_sie_intercept(vcpu); } @@ -801,18 +802,6 @@ BUG_ON(vcpu->kvm->arch.float_int.local_int[vcpu->vcpu_id] == NULL); - switch (kvm_run->exit_reason) { - case KVM_EXIT_S390_SIEIC: - case KVM_EXIT_UNKNOWN: - case KVM_EXIT_INTR: - case KVM_EXIT_S390_RESET: - case KVM_EXIT_S390_UCONTROL: - case KVM_EXIT_S390_TSCH: - break; - default: - BUG(); - } - vcpu->arch.sie_block->gpsw.mask = kvm_run->psw_mask; vcpu->arch.sie_block->gpsw.addr = kvm_run->psw_addr; if (kvm_run->kvm_dirty_regs & KVM_SYNC_PREFIX) { @@ -885,7 +874,7 @@ * KVM_S390_STORE_STATUS_NOADDR: -> 0x1200 on 64 bit * KVM_S390_STORE_STATUS_PREFIXED: -> prefix */ -int kvm_s390_vcpu_store_status(struct kvm_vcpu *vcpu, unsigned long addr) +int kvm_s390_store_status_unloaded(struct kvm_vcpu *vcpu, unsigned long addr) { unsigned char archmode = 1; int prefix; @@ -903,15 +892,6 @@ } else prefix = 0; - /* - * The guest FPRS and ACRS are in the host FPRS/ACRS due to the lazy - * copying in vcpu load/put. Lets update our copies before we save - * it into the save area - */ - save_fp_ctl(&vcpu->arch.guest_fpregs.fpc); - save_fp_regs(vcpu->arch.guest_fpregs.fprs); - save_access_regs(vcpu->run->s.regs.acrs); - if (__guestcopy(vcpu, addr + offsetof(struct save_area, fp_regs), vcpu->arch.guest_fpregs.fprs, 128, prefix)) return -EFAULT; @@ -956,6 +936,20 @@ return 0; } +int kvm_s390_vcpu_store_status(struct kvm_vcpu *vcpu, unsigned long addr) +{ + /* + * The guest FPRS and ACRS are in the host FPRS/ACRS due to the lazy + * copying in vcpu load/put. Lets update our copies before we save + * it into the save area + */ + save_fp_ctl(&vcpu->arch.guest_fpregs.fpc); + save_fp_regs(vcpu->arch.guest_fpregs.fprs); + save_access_regs(vcpu->run->s.regs.acrs); + + return kvm_s390_store_status_unloaded(vcpu, addr); +} + static int kvm_vcpu_ioctl_enable_cap(struct kvm_vcpu *vcpu, struct kvm_enable_cap *cap) { --- linux-3.13.0.orig/arch/s390/kvm/kvm-s390.h +++ linux-3.13.0/arch/s390/kvm/kvm-s390.h @@ -150,8 +150,8 @@ int kvm_s390_handle_sigp(struct kvm_vcpu *vcpu); /* implemented in kvm-s390.c */ -int kvm_s390_vcpu_store_status(struct kvm_vcpu *vcpu, - unsigned long addr); +int kvm_s390_store_status_unloaded(struct kvm_vcpu *vcpu, unsigned long addr); +int kvm_s390_vcpu_store_status(struct kvm_vcpu *vcpu, unsigned long addr); void s390_vcpu_block(struct kvm_vcpu *vcpu); void s390_vcpu_unblock(struct kvm_vcpu *vcpu); void exit_sie(struct kvm_vcpu *vcpu); --- linux-3.13.0.orig/arch/s390/kvm/priv.c +++ linux-3.13.0/arch/s390/kvm/priv.c @@ -414,6 +414,7 @@ for (n = mem->count - 1; n > 0 ; n--) memcpy(&mem->vm[n], &mem->vm[n - 1], sizeof(mem->vm[0])); + memset(&mem->vm[0], 0, sizeof(mem->vm[0])); mem->vm[0].cpus_total = cpus; mem->vm[0].cpus_configured = cpus; mem->vm[0].cpus_standby = 0; @@ -688,7 +689,7 @@ break; reg = (reg + 1) % 16; } while (1); - + kvm_make_request(KVM_REQ_TLB_FLUSH, vcpu); return 0; } @@ -725,7 +726,7 @@ break; reg = (reg + 1) % 16; } while (1); - + kvm_make_request(KVM_REQ_TLB_FLUSH, vcpu); return 0; } --- linux-3.13.0.orig/arch/s390/kvm/sigp.c +++ linux-3.13.0/arch/s390/kvm/sigp.c @@ -130,6 +130,7 @@ static int __inject_sigp_stop(struct kvm_s390_local_interrupt *li, int action) { struct kvm_s390_interrupt_info *inti; + int rc = SIGP_CC_ORDER_CODE_ACCEPTED; inti = kzalloc(sizeof(*inti), GFP_ATOMIC); if (!inti) @@ -139,6 +140,8 @@ spin_lock_bh(&li->lock); if ((atomic_read(li->cpuflags) & CPUSTAT_STOPPED)) { kfree(inti); + if ((action & ACTION_STORE_ON_STOP) != 0) + rc = -ESHUTDOWN; goto out; } list_add_tail(&inti->list, &li->list); @@ -150,7 +153,7 @@ out: spin_unlock_bh(&li->lock); - return SIGP_CC_ORDER_CODE_ACCEPTED; + return rc; } static int __sigp_stop(struct kvm_vcpu *vcpu, u16 cpu_addr, int action) @@ -174,6 +177,16 @@ unlock: spin_unlock(&fi->lock); VCPU_EVENT(vcpu, 4, "sent sigp stop to cpu %x", cpu_addr); + + if ((action & ACTION_STORE_ON_STOP) != 0 && rc == -ESHUTDOWN) { + /* If the CPU has already been stopped, we still have + * to save the status when doing stop-and-store. This + * has to be done after unlocking all spinlocks. */ + struct kvm_vcpu *dst_vcpu = kvm_get_vcpu(vcpu->kvm, cpu_addr); + rc = kvm_s390_store_status_unloaded(dst_vcpu, + KVM_S390_STORE_STATUS_NOADDR); + } + return rc; } --- linux-3.13.0.orig/arch/s390/mm/extable.c +++ linux-3.13.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-3.13.0.orig/arch/s390/mm/fault.c +++ linux-3.13.0/arch/s390/mm/fault.c @@ -239,6 +239,12 @@ do_no_context(regs); else pagefault_out_of_memory(); + } else if (fault & VM_FAULT_SIGSEGV) { + /* Kernel mode? Handle exceptions or die */ + if (!user_mode(regs)) + do_no_context(regs); + else + do_sigsegv(regs, SEGV_MAPERR); } else if (fault & VM_FAULT_SIGBUS) { /* Kernel mode? Handle exceptions or die */ if (!user_mode(regs)) --- linux-3.13.0.orig/arch/s390/mm/hugetlbpage.c +++ linux-3.13.0/arch/s390/mm/hugetlbpage.c @@ -223,11 +223,6 @@ return 0; } -int pmd_huge_support(void) -{ - return 1; -} - struct page *follow_huge_pmd(struct mm_struct *mm, unsigned long address, pmd_t *pmdp, int write) { --- linux-3.13.0.orig/arch/s390/mm/page-states.c +++ linux-3.13.0/arch/s390/mm/page-states.c @@ -12,6 +12,8 @@ #include #include #include +#include +#include #define ESSA_SET_STABLE 1 #define ESSA_SET_UNUSED 2 @@ -41,6 +43,14 @@ if (!cmma_flag) return; + /* + * Disable CMM for dump, otherwise the tprot based memory + * detection can fail because of unstable pages. + */ + if (OLDMEM_BASE || ipl_info.type == IPL_TYPE_FCP_DUMP) { + cmma_flag = 0; + return; + } asm volatile( " .insn rrf,0xb9ab0000,%1,%1,0,0\n" "0: la %0,0\n" --- linux-3.13.0.orig/arch/s390/mm/pgtable.c +++ linux-3.13.0/arch/s390/mm/pgtable.c @@ -810,11 +810,21 @@ pte_t *ptep; down_read(&mm->mmap_sem); +retry: ptep = get_locked_pte(current->mm, addr, &ptl); if (unlikely(!ptep)) { up_read(&mm->mmap_sem); return -EFAULT; } + if (!(pte_val(*ptep) & _PAGE_INVALID) && + (pte_val(*ptep) & _PAGE_PROTECT)) { + pte_unmap_unlock(*ptep, ptl); + if (fixup_user_fault(current, mm, addr, FAULT_FLAG_WRITE)) { + up_read(&mm->mmap_sem); + return -EFAULT; + } + goto retry; + } new = old = pgste_get_lock(ptep); pgste_val(new) &= ~(PGSTE_GR_BIT | PGSTE_GC_BIT | --- linux-3.13.0.orig/arch/s390/net/bpf_jit_comp.c +++ linux-3.13.0/arch/s390/net/bpf_jit_comp.c @@ -276,7 +276,6 @@ case BPF_S_LD_W_IND: case BPF_S_LD_H_IND: case BPF_S_LD_B_IND: - case BPF_S_LDX_B_MSH: case BPF_S_LD_IMM: case BPF_S_LD_MEM: case BPF_S_MISC_TXA: @@ -812,7 +811,7 @@ return NULL; memset(header, 0, sz); header->pages = sz / PAGE_SIZE; - hole = sz - (bpfsize + sizeof(*header)); + hole = min(sz - (bpfsize + sizeof(*header)), PAGE_SIZE - sizeof(*header)); /* Insert random number of illegal instructions before BPF code * and make sure the first instruction starts at an even address. */ --- linux-3.13.0.orig/arch/s390/pci/pci.c +++ linux-3.13.0/arch/s390/pci/pci.c @@ -895,8 +895,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-3.13.0.orig/arch/score/mm/fault.c +++ linux-3.13.0/arch/score/mm/fault.c @@ -114,6 +114,8 @@ if (unlikely(fault & VM_FAULT_ERROR)) { if (fault & VM_FAULT_OOM) goto out_of_memory; + else if (fault & VM_FAULT_SIGSEGV) + goto bad_area; else if (fault & VM_FAULT_SIGBUS) goto do_sigbus; BUG(); --- linux-3.13.0.orig/arch/sh/Kconfig +++ linux-3.13.0/arch/sh/Kconfig @@ -66,6 +66,7 @@ select PERF_EVENTS select ARCH_HIBERNATION_POSSIBLE if MMU select SPARSE_IRQ + select HAVE_CC_STACKPROTECTOR config SUPERH64 def_bool ARCH = "sh64" @@ -695,20 +696,6 @@ If unsure, say N. -config CC_STACKPROTECTOR - bool "Enable -fstack-protector buffer overflow detection (EXPERIMENTAL)" - depends on SUPERH32 - help - This option turns on the -fstack-protector GCC feature. This - feature puts, at the beginning of functions, a canary value on - the stack just before the return address, and validates - the value just before actually returning. Stack based buffer - overflows (that need to overwrite this return address) now also - overwrite the canary, which gets detected and the attack is then - neutralized via a kernel panic. - - This feature requires gcc version 4.2 or above. - config SMP bool "Symmetric multi-processing support" depends on SYS_SUPPORTS_SMP --- linux-3.13.0.orig/arch/sh/Makefile +++ linux-3.13.0/arch/sh/Makefile @@ -199,10 +199,6 @@ KBUILD_CFLAGS += -fasynchronous-unwind-tables endif -ifeq ($(CONFIG_CC_STACKPROTECTOR),y) - KBUILD_CFLAGS += -fstack-protector -endif - libs-$(CONFIG_SUPERH32) := arch/sh/lib/ $(libs-y) libs-$(CONFIG_SUPERH64) := arch/sh/lib64/ $(libs-y) --- linux-3.13.0.orig/arch/sh/include/uapi/asm/unistd_64.h +++ linux-3.13.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-3.13.0.orig/arch/sh/kernel/dumpstack.c +++ linux-3.13.0/arch/sh/kernel/dumpstack.c @@ -115,7 +115,7 @@ */ static void print_trace_address(void *data, unsigned long addr, int reliable) { - printk(data); + printk("%s", (char *)data); printk_address(addr, reliable); } --- linux-3.13.0.orig/arch/sh/kernel/kgdb.c +++ linux-3.13.0/arch/sh/kernel/kgdb.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include --- linux-3.13.0.orig/arch/sh/mm/fault.c +++ linux-3.13.0/arch/sh/mm/fault.c @@ -353,6 +353,8 @@ } else { if (fault & VM_FAULT_SIGBUS) do_sigbus(regs, error_code, address); + else if (fault & VM_FAULT_SIGSEGV) + bad_area(regs, error_code, address); else BUG(); } --- linux-3.13.0.orig/arch/sh/mm/hugetlbpage.c +++ linux-3.13.0/arch/sh/mm/hugetlbpage.c @@ -83,11 +83,6 @@ return 0; } -int pmd_huge_support(void) -{ - return 0; -} - struct page *follow_huge_pmd(struct mm_struct *mm, unsigned long address, pmd_t *pmd, int write) { --- linux-3.13.0.orig/arch/sparc/Kconfig +++ linux-3.13.0/arch/sparc/Kconfig @@ -26,7 +26,7 @@ select RTC_DRV_M48T59 select HAVE_DMA_ATTRS select HAVE_DMA_API_DEBUG - select HAVE_ARCH_JUMP_LABEL + select HAVE_ARCH_JUMP_LABEL if SPARC64 select GENERIC_IRQ_SHOW select ARCH_WANT_IPC_PARSE_VERSION select GENERIC_PCI_IOMAP @@ -66,6 +66,7 @@ select HAVE_SYSCALL_TRACEPOINTS select HAVE_CONTEXT_TRACKING select HAVE_DEBUG_KMEMLEAK + select SPARSE_IRQ select RTC_DRV_CMOS select RTC_DRV_BQ4802 select RTC_DRV_SUN4V @@ -76,6 +77,7 @@ select ARCH_HAVE_NMI_SAFE_CMPXCHG select HAVE_C_RECORDMCOUNT select NO_BOOTMEM + select ARCH_SUPPORTS_ATOMIC_RMW config ARCH_DEFCONFIG string --- linux-3.13.0.orig/arch/sparc/crypto/aes_glue.c +++ linux-3.13.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, @@ -499,6 +501,6 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("AES Secure Hash Algorithm, sparc64 aes opcode accelerated"); -MODULE_ALIAS("aes"); +MODULE_ALIAS_CRYPTO("aes"); #include "crop_devid.c" --- linux-3.13.0.orig/arch/sparc/crypto/camellia_glue.c +++ linux-3.13.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, @@ -322,6 +323,6 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Camellia Cipher Algorithm, sparc64 camellia opcode accelerated"); -MODULE_ALIAS("aes"); +MODULE_ALIAS_CRYPTO("aes"); #include "crop_devid.c" --- linux-3.13.0.orig/arch/sparc/crypto/crc32c_glue.c +++ linux-3.13.0/arch/sparc/crypto/crc32c_glue.c @@ -176,6 +176,6 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("CRC32c (Castagnoli), sparc64 crc32c opcode accelerated"); -MODULE_ALIAS("crc32c"); +MODULE_ALIAS_CRYPTO("crc32c"); #include "crop_devid.c" --- linux-3.13.0.orig/arch/sparc/crypto/des_glue.c +++ linux-3.13.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, @@ -532,6 +534,6 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("DES & Triple DES EDE Cipher Algorithms, sparc64 des opcode accelerated"); -MODULE_ALIAS("des"); +MODULE_ALIAS_CRYPTO("des"); #include "crop_devid.c" --- linux-3.13.0.orig/arch/sparc/crypto/md5_glue.c +++ linux-3.13.0/arch/sparc/crypto/md5_glue.c @@ -185,6 +185,6 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("MD5 Secure Hash Algorithm, sparc64 md5 opcode accelerated"); -MODULE_ALIAS("md5"); +MODULE_ALIAS_CRYPTO("md5"); #include "crop_devid.c" --- linux-3.13.0.orig/arch/sparc/crypto/sha1_glue.c +++ linux-3.13.0/arch/sparc/crypto/sha1_glue.c @@ -180,6 +180,6 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("SHA1 Secure Hash Algorithm, sparc64 sha1 opcode accelerated"); -MODULE_ALIAS("sha1"); +MODULE_ALIAS_CRYPTO("sha1"); #include "crop_devid.c" --- linux-3.13.0.orig/arch/sparc/crypto/sha256_glue.c +++ linux-3.13.0/arch/sparc/crypto/sha256_glue.c @@ -237,7 +237,7 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("SHA-224 and SHA-256 Secure Hash Algorithm, sparc64 sha256 opcode accelerated"); -MODULE_ALIAS("sha224"); -MODULE_ALIAS("sha256"); +MODULE_ALIAS_CRYPTO("sha224"); +MODULE_ALIAS_CRYPTO("sha256"); #include "crop_devid.c" --- linux-3.13.0.orig/arch/sparc/crypto/sha512_glue.c +++ linux-3.13.0/arch/sparc/crypto/sha512_glue.c @@ -222,7 +222,7 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("SHA-384 and SHA-512 Secure Hash Algorithm, sparc64 sha512 opcode accelerated"); -MODULE_ALIAS("sha384"); -MODULE_ALIAS("sha512"); +MODULE_ALIAS_CRYPTO("sha384"); +MODULE_ALIAS_CRYPTO("sha512"); #include "crop_devid.c" --- linux-3.13.0.orig/arch/sparc/include/asm/atomic_32.h +++ linux-3.13.0/arch/sparc/include/asm/atomic_32.h @@ -21,7 +21,7 @@ extern int __atomic_add_return(int, atomic_t *); extern int atomic_cmpxchg(atomic_t *, int, int); -#define atomic_xchg(v, new) (xchg(&((v)->counter), new)) +extern int atomic_xchg(atomic_t *, int); extern int __atomic_add_unless(atomic_t *, int, int); extern void atomic_set(atomic_t *, int); --- linux-3.13.0.orig/arch/sparc/include/asm/cmpxchg_32.h +++ linux-3.13.0/arch/sparc/include/asm/cmpxchg_32.h @@ -11,22 +11,14 @@ #ifndef __ARCH_SPARC_CMPXCHG__ #define __ARCH_SPARC_CMPXCHG__ -static inline unsigned long xchg_u32(__volatile__ unsigned long *m, unsigned long val) -{ - __asm__ __volatile__("swap [%2], %0" - : "=&r" (val) - : "0" (val), "r" (m) - : "memory"); - return val; -} - +extern unsigned long __xchg_u32(volatile u32 *m, u32 new); extern void __xchg_called_with_bad_pointer(void); static inline unsigned long __xchg(unsigned long x, __volatile__ void * ptr, int size) { switch (size) { case 4: - return xchg_u32(ptr, x); + return __xchg_u32(ptr, x); } __xchg_called_with_bad_pointer(); return x; --- linux-3.13.0.orig/arch/sparc/include/asm/hypervisor.h +++ linux-3.13.0/arch/sparc/include/asm/hypervisor.h @@ -2944,6 +2944,16 @@ unsigned long reg_val); #endif +#define HV_FAST_T5_GET_PERFREG 0x1a8 +#define HV_FAST_T5_SET_PERFREG 0x1a9 + +#ifndef __ASSEMBLY__ +unsigned long sun4v_t5_get_perfreg(unsigned long reg_num, + unsigned long *reg_val); +unsigned long sun4v_t5_set_perfreg(unsigned long reg_num, + unsigned long reg_val); +#endif + /* Function numbers for HV_CORE_TRAP. */ #define HV_CORE_SET_VER 0x00 #define HV_CORE_PUTCHAR 0x01 @@ -2975,6 +2985,7 @@ #define HV_GRP_VF_CPU 0x0205 #define HV_GRP_KT_CPU 0x0209 #define HV_GRP_VT_CPU 0x020c +#define HV_GRP_T5_CPU 0x0211 #define HV_GRP_DIAG 0x0300 #ifndef __ASSEMBLY__ --- linux-3.13.0.orig/arch/sparc/include/asm/irq_64.h +++ linux-3.13.0/arch/sparc/include/asm/irq_64.h @@ -37,7 +37,7 @@ * * ino_bucket->irq allocation is made during {sun4v_,}build_irq(). */ -#define NR_IRQS 255 +#define NR_IRQS (2048) extern void irq_install_pre_handler(int irq, void (*func)(unsigned int, void *, void *), @@ -57,11 +57,8 @@ unsigned long iclr_base); extern void sun4u_destroy_msi(unsigned int irq); -extern unsigned char irq_alloc(unsigned int dev_handle, - unsigned int dev_ino); -#ifdef CONFIG_PCI_MSI -extern void irq_free(unsigned int irq); -#endif +unsigned int irq_alloc(unsigned int dev_handle, unsigned int dev_ino); +void irq_free(unsigned int irq); extern void __init init_IRQ(void); extern void fixup_irqs(void); --- linux-3.13.0.orig/arch/sparc/include/asm/ldc.h +++ linux-3.13.0/arch/sparc/include/asm/ldc.h @@ -53,13 +53,14 @@ /* Allocate state for a channel. */ extern struct ldc_channel *ldc_alloc(unsigned long id, const struct ldc_channel_config *cfgp, - void *event_arg); + void *event_arg, + const char *name); /* Shut down and free state for a channel. */ extern void ldc_free(struct ldc_channel *lp); /* Register TX and RX queues of the link with the hypervisor. */ -extern int ldc_bind(struct ldc_channel *lp, const char *name); +extern int ldc_bind(struct ldc_channel *lp); /* For non-RAW protocols we need to complete a handshake before * communication can proceed. ldc_connect() does that, if the --- linux-3.13.0.orig/arch/sparc/include/asm/oplib_64.h +++ linux-3.13.0/arch/sparc/include/asm/oplib_64.h @@ -62,7 +62,8 @@ /* You must call prom_init() before using any of the library services, * preferably as early as possible. Pass it the romvec pointer. */ -extern void prom_init(void *cif_handler, void *cif_stack); +extern void prom_init(void *cif_handler); +extern void prom_init_report(void); /* Boot argument acquisition, returns the boot command line string. */ extern char *prom_getbootargs(void); --- linux-3.13.0.orig/arch/sparc/include/asm/page_64.h +++ linux-3.13.0/arch/sparc/include/asm/page_64.h @@ -57,18 +57,21 @@ typedef struct { unsigned long pte; } pte_t; typedef struct { unsigned long iopte; } iopte_t; typedef struct { unsigned long pmd; } pmd_t; +typedef struct { unsigned long pud; } pud_t; typedef struct { unsigned long pgd; } pgd_t; typedef struct { unsigned long pgprot; } pgprot_t; #define pte_val(x) ((x).pte) #define iopte_val(x) ((x).iopte) #define pmd_val(x) ((x).pmd) +#define pud_val(x) ((x).pud) #define pgd_val(x) ((x).pgd) #define pgprot_val(x) ((x).pgprot) #define __pte(x) ((pte_t) { (x) } ) #define __iopte(x) ((iopte_t) { (x) } ) #define __pmd(x) ((pmd_t) { (x) } ) +#define __pud(x) ((pud_t) { (x) } ) #define __pgd(x) ((pgd_t) { (x) } ) #define __pgprot(x) ((pgprot_t) { (x) } ) @@ -77,18 +80,21 @@ typedef unsigned long pte_t; typedef unsigned long iopte_t; typedef unsigned long pmd_t; +typedef unsigned long pud_t; typedef unsigned long pgd_t; typedef unsigned long pgprot_t; #define pte_val(x) (x) #define iopte_val(x) (x) #define pmd_val(x) (x) +#define pud_val(x) (x) #define pgd_val(x) (x) #define pgprot_val(x) (x) #define __pte(x) (x) #define __iopte(x) (x) #define __pmd(x) (x) +#define __pud(x) (x) #define __pgd(x) (x) #define __pgprot(x) (x) @@ -96,21 +102,14 @@ typedef pte_t *pgtable_t; -/* These two values define the virtual address space range in which we - * must forbid 64-bit user processes from making mappings. It used to - * represent precisely the virtual address space hole present in most - * early sparc64 chips including UltraSPARC-I. But now it also is - * further constrained by the limits of our page tables, which is - * 43-bits of virtual address. - */ -#define SPARC64_VA_HOLE_TOP _AC(0xfffffc0000000000,UL) -#define SPARC64_VA_HOLE_BOTTOM _AC(0x0000040000000000,UL) +extern unsigned long sparc64_va_hole_top; +extern unsigned long sparc64_va_hole_bottom; /* The next two defines specify the actual exclusion region we * enforce, wherein we use a 4GB red zone on each side of the VA hole. */ -#define VA_EXCLUDE_START (SPARC64_VA_HOLE_BOTTOM - (1UL << 32UL)) -#define VA_EXCLUDE_END (SPARC64_VA_HOLE_TOP + (1UL << 32UL)) +#define VA_EXCLUDE_START (sparc64_va_hole_bottom - (1UL << 32UL)) +#define VA_EXCLUDE_END (sparc64_va_hole_top + (1UL << 32UL)) #define TASK_UNMAPPED_BASE (test_thread_flag(TIF_32BIT) ? \ _AC(0x0000000070000000,UL) : \ @@ -118,20 +117,16 @@ #include -#define PAGE_OFFSET_BY_BITS(X) (-(_AC(1,UL) << (X))) extern unsigned long PAGE_OFFSET; #endif /* !(__ASSEMBLY__) */ -/* The maximum number of physical memory address bits we support, this - * is used to size various tables used to manage kernel TLB misses and - * also the sparsemem code. +/* The maximum number of physical memory address bits we support. The + * largest value we can support is whatever "KPGD_SHIFT + KPTE_BITS" + * evaluates to. */ -#define MAX_PHYS_ADDRESS_BITS 47 +#define MAX_PHYS_ADDRESS_BITS 53 -/* These two shift counts are used when indexing sparc64_valid_addr_bitmap - * and kpte_linear_bitmap. - */ #define ILOG2_4MB 22 #define ILOG2_256MB 28 --- linux-3.13.0.orig/arch/sparc/include/asm/pgalloc_64.h +++ linux-3.13.0/arch/sparc/include/asm/pgalloc_64.h @@ -15,6 +15,13 @@ extern struct kmem_cache *pgtable_cache; +static inline void __pgd_populate(pgd_t *pgd, pud_t *pud) +{ + pgd_set(pgd, pud); +} + +#define pgd_populate(MM, PGD, PUD) __pgd_populate(PGD, PUD) + static inline pgd_t *pgd_alloc(struct mm_struct *mm) { return kmem_cache_alloc(pgtable_cache, GFP_KERNEL); @@ -25,7 +32,23 @@ kmem_cache_free(pgtable_cache, pgd); } -#define pud_populate(MM, PUD, PMD) pud_set(PUD, PMD) +static inline void __pud_populate(pud_t *pud, pmd_t *pmd) +{ + pud_set(pud, pmd); +} + +#define pud_populate(MM, PUD, PMD) __pud_populate(PUD, PMD) + +static inline pud_t *pud_alloc_one(struct mm_struct *mm, unsigned long addr) +{ + return kmem_cache_alloc(pgtable_cache, + GFP_KERNEL|__GFP_REPEAT); +} + +static inline void pud_free(struct mm_struct *mm, pud_t *pud) +{ + kmem_cache_free(pgtable_cache, pud); +} static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long addr) { @@ -91,4 +114,7 @@ #define __pmd_free_tlb(tlb, pmd, addr) \ pgtable_free_tlb(tlb, pmd, false) +#define __pud_free_tlb(tlb, pud, addr) \ + pgtable_free_tlb(tlb, pud, false) + #endif /* _SPARC64_PGALLOC_H */ --- linux-3.13.0.orig/arch/sparc/include/asm/pgtable_64.h +++ linux-3.13.0/arch/sparc/include/asm/pgtable_64.h @@ -20,11 +20,10 @@ #include #include -#include - /* The kernel image occupies 0x4000000 to 0x6000000 (4MB --> 96MB). * The page copy blockops can use 0x6000000 to 0x8000000. - * The TSB is mapped in the 0x8000000 to 0xa000000 range. + * The 8K TSB is mapped in the 0x8000000 to 0x8400000 range. + * The 4M TSB is mapped in the 0x8400000 to 0x8800000 range. * The PROM resides in an area spanning 0xf0000000 to 0x100000000. * The vmalloc area spans 0x100000000 to 0x200000000. * Since modules need to be in the lowest 32-bits of the address space, @@ -33,17 +32,15 @@ * 0x400000000. */ #define TLBTEMP_BASE _AC(0x0000000006000000,UL) -#define TSBMAP_BASE _AC(0x0000000008000000,UL) +#define TSBMAP_8K_BASE _AC(0x0000000008000000,UL) +#define TSBMAP_4M_BASE _AC(0x0000000008400000,UL) #define MODULES_VADDR _AC(0x0000000010000000,UL) #define MODULES_LEN _AC(0x00000000e0000000,UL) #define MODULES_END _AC(0x00000000f0000000,UL) #define LOW_OBP_ADDRESS _AC(0x00000000f0000000,UL) #define HI_OBP_ADDRESS _AC(0x0000000100000000,UL) #define VMALLOC_START _AC(0x0000000100000000,UL) -#define VMALLOC_END _AC(0x0000010000000000,UL) -#define VMEMMAP_BASE _AC(0x0000010000000000,UL) - -#define vmemmap ((struct page *)VMEMMAP_BASE) +#define VMEMMAP_BASE VMALLOC_END /* PMD_SHIFT determines the size of the area a second-level page * table can map @@ -53,13 +50,25 @@ #define PMD_MASK (~(PMD_SIZE-1)) #define PMD_BITS (PAGE_SHIFT - 3) -/* PGDIR_SHIFT determines what a third-level page table entry can map */ -#define PGDIR_SHIFT (PAGE_SHIFT + (PAGE_SHIFT-3) + PMD_BITS) +/* PUD_SHIFT determines the size of the area a third-level page + * table can map + */ +#define PUD_SHIFT (PMD_SHIFT + PMD_BITS) +#define PUD_SIZE (_AC(1,UL) << PUD_SHIFT) +#define PUD_MASK (~(PUD_SIZE-1)) +#define PUD_BITS (PAGE_SHIFT - 3) + +/* PGDIR_SHIFT determines what a fourth-level page table entry can map */ +#define PGDIR_SHIFT (PUD_SHIFT + PUD_BITS) #define PGDIR_SIZE (_AC(1,UL) << PGDIR_SHIFT) #define PGDIR_MASK (~(PGDIR_SIZE-1)) #define PGDIR_BITS (PAGE_SHIFT - 3) -#if (PGDIR_SHIFT + PGDIR_BITS) != 43 +#if (MAX_PHYS_ADDRESS_BITS > PGDIR_SHIFT + PGDIR_BITS) +#error MAX_PHYS_ADDRESS_BITS exceeds what kernel page tables can support +#endif + +#if (PGDIR_SHIFT + PGDIR_BITS) != 53 #error Page table parameters do not cover virtual address space properly. #endif @@ -69,19 +78,32 @@ #ifndef __ASSEMBLY__ +extern unsigned long VMALLOC_END; + +#define vmemmap ((struct page *)VMEMMAP_BASE) + #include +bool kern_addr_valid(unsigned long addr); + /* Entries per page directory level. */ #define PTRS_PER_PTE (1UL << (PAGE_SHIFT-3)) #define PTRS_PER_PMD (1UL << PMD_BITS) +#define PTRS_PER_PUD (1UL << PUD_BITS) #define PTRS_PER_PGD (1UL << PGDIR_BITS) /* Kernel has a separate 44bit address space. */ #define FIRST_USER_ADDRESS 0 -#define pte_ERROR(e) __builtin_trap() -#define pmd_ERROR(e) __builtin_trap() -#define pgd_ERROR(e) __builtin_trap() +#define pmd_ERROR(e) \ + pr_err("%s:%d: bad pmd %p(%016lx) seen at (%pS)\n", \ + __FILE__, __LINE__, &(e), pmd_val(e), __builtin_return_address(0)) +#define pud_ERROR(e) \ + pr_err("%s:%d: bad pud %p(%016lx) seen at (%pS)\n", \ + __FILE__, __LINE__, &(e), pud_val(e), __builtin_return_address(0)) +#define pgd_ERROR(e) \ + pr_err("%s:%d: bad pgd %p(%016lx) seen at (%pS)\n", \ + __FILE__, __LINE__, &(e), pgd_val(e), __builtin_return_address(0)) #endif /* !(__ASSEMBLY__) */ @@ -90,6 +112,7 @@ #define _PAGE_R _AC(0x8000000000000000,UL) /* Keep ref bit uptodate*/ #define _PAGE_SPECIAL _AC(0x0200000000000000,UL) /* Special page */ #define _PAGE_PMD_HUGE _AC(0x0100000000000000,UL) /* Huge page */ +#define _PAGE_PUD_HUGE _PAGE_PMD_HUGE /* Advertise support for _PAGE_SPECIAL */ #define __HAVE_ARCH_PTE_SPECIAL @@ -258,8 +281,8 @@ { unsigned long mask, tmp; - /* SUN4U: 0x600307ffffffecb8 (negated == 0x9ffcf80000001347) - * SUN4V: 0x30ffffffffffee17 (negated == 0xcf000000000011e8) + /* SUN4U: 0x630107ffffffec38 (negated == 0x9cfef800000013c7) + * SUN4V: 0x33ffffffffffee07 (negated == 0xcc000000000011f8) * * Even if we use negation tricks the result is still a 6 * instruction sequence, so don't try to play fancy and just @@ -289,10 +312,10 @@ " .previous\n" : "=r" (mask), "=r" (tmp) : "i" (_PAGE_PADDR_4U | _PAGE_MODIFIED_4U | _PAGE_ACCESSED_4U | - _PAGE_CP_4U | _PAGE_CV_4U | _PAGE_E_4U | _PAGE_PRESENT_4U | + _PAGE_CP_4U | _PAGE_CV_4U | _PAGE_E_4U | _PAGE_SPECIAL | _PAGE_PMD_HUGE | _PAGE_SZALL_4U), "i" (_PAGE_PADDR_4V | _PAGE_MODIFIED_4V | _PAGE_ACCESSED_4V | - _PAGE_CP_4V | _PAGE_CV_4V | _PAGE_E_4V | _PAGE_PRESENT_4V | + _PAGE_CP_4V | _PAGE_CV_4V | _PAGE_E_4V | _PAGE_SPECIAL | _PAGE_PMD_HUGE | _PAGE_SZALL_4V)); return __pte((pte_val(pte) & mask) | (pgprot_val(prot) & ~mask)); @@ -633,29 +656,29 @@ { pte_t pte = __pte(pmd_val(pmd)); - return (pte_val(pte) & _PAGE_PMD_HUGE) && pte_present(pte); + return pte_val(pte) & _PAGE_PMD_HUGE; } -#ifdef CONFIG_TRANSPARENT_HUGEPAGE -static inline unsigned long pmd_young(pmd_t pmd) +static inline unsigned long pmd_pfn(pmd_t pmd) { pte_t pte = __pte(pmd_val(pmd)); - return pte_young(pte); + return pte_pfn(pte); } -static inline unsigned long pmd_write(pmd_t pmd) +#ifdef CONFIG_TRANSPARENT_HUGEPAGE +static inline unsigned long pmd_young(pmd_t pmd) { pte_t pte = __pte(pmd_val(pmd)); - return pte_write(pte); + return pte_young(pte); } -static inline unsigned long pmd_pfn(pmd_t pmd) +static inline unsigned long pmd_write(pmd_t pmd) { pte_t pte = __pte(pmd_val(pmd)); - return pte_pfn(pte); + return pte_write(pte); } static inline unsigned long pmd_trans_huge(pmd_t pmd) @@ -719,20 +742,6 @@ return __pmd(pte_val(pte)); } -static inline pmd_t pmd_mknotpresent(pmd_t pmd) -{ - unsigned long mask; - - if (tlb_type == hypervisor) - mask = _PAGE_PRESENT_4V; - else - mask = _PAGE_PRESENT_4U; - - pmd_val(pmd) &= ~mask; - - return pmd; -} - static inline pmd_t pmd_mksplitting(pmd_t pmd) { pte_t pte = __pte(pmd_val(pmd)); @@ -757,6 +766,22 @@ #define pmd_none(pmd) (!pmd_val(pmd)) +/* pmd_bad() is only called on non-trans-huge PMDs. Our encoding is + * very simple, it's just the physical address. PTE tables are of + * size PAGE_SIZE so make sure the sub-PAGE_SIZE bits are clear and + * the top bits outside of the range of any physical address size we + * support are clear as well. We also validate the physical itself. + */ +#define pmd_bad(pmd) (pmd_val(pmd) & ~PAGE_MASK) + +#define pud_none(pud) (!pud_val(pud)) + +#define pud_bad(pud) (pud_val(pud) & ~PAGE_MASK) + +#define pgd_none(pgd) (!pgd_val(pgd)) + +#define pgd_bad(pgd) (pgd_val(pgd) & ~PAGE_MASK) + #ifdef CONFIG_TRANSPARENT_HUGEPAGE extern void set_pmd_at(struct mm_struct *mm, unsigned long addr, pmd_t *pmdp, pmd_t pmd); @@ -790,16 +815,34 @@ #define pud_page_vaddr(pud) \ ((unsigned long) __va(pud_val(pud))) #define pud_page(pud) virt_to_page((void *)pud_page_vaddr(pud)) -#define pmd_bad(pmd) (0) #define pmd_clear(pmdp) (pmd_val(*(pmdp)) = 0UL) -#define pud_none(pud) (!pud_val(pud)) -#define pud_bad(pud) (0) #define pud_present(pud) (pud_val(pud) != 0U) #define pud_clear(pudp) (pud_val(*(pudp)) = 0UL) +#define pgd_page_vaddr(pgd) \ + ((unsigned long) __va(pgd_val(pgd))) +#define pgd_present(pgd) (pgd_val(pgd) != 0U) +#define pgd_clear(pgdp) (pgd_val(*(pgd)) = 0UL) + +static inline unsigned long pud_large(pud_t pud) +{ + pte_t pte = __pte(pud_val(pud)); + + return pte_val(pte) & _PAGE_PMD_HUGE; +} + +static inline unsigned long pud_pfn(pud_t pud) +{ + pte_t pte = __pte(pud_val(pud)); + + return pte_pfn(pte); +} /* Same in both SUN4V and SUN4U. */ #define pte_none(pte) (!pte_val(pte)) +#define pgd_set(pgdp, pudp) \ + (pgd_val(*(pgdp)) = (__pa((unsigned long) (pudp)))) + /* to find an entry in a page-table-directory. */ #define pgd_index(address) (((address) >> PGDIR_SHIFT) & (PTRS_PER_PGD - 1)) #define pgd_offset(mm, address) ((mm)->pgd + pgd_index(address)) @@ -807,6 +850,11 @@ /* to find an entry in a kernel page-table-directory */ #define pgd_offset_k(address) pgd_offset(&init_mm, address) +/* Find an entry in the third-level page table.. */ +#define pud_index(address) (((address) >> PUD_SHIFT) & (PTRS_PER_PUD - 1)) +#define pud_offset(pgdp, address) \ + ((pud_t *) pgd_page_vaddr(*(pgdp)) + pud_index(address)) + /* Find an entry in the second-level page table.. */ #define pmd_offset(pudp, address) \ ((pmd_t *) pud_page_vaddr(*(pudp)) + \ @@ -879,7 +927,6 @@ #endif extern pgd_t swapper_pg_dir[PTRS_PER_PGD]; -extern pmd_t swapper_low_pmd_dir[PTRS_PER_PMD]; extern void paging_init(void); extern unsigned long find_ecache_flush_span(unsigned long size); @@ -893,6 +940,10 @@ extern void update_mmu_cache_pmd(struct vm_area_struct *vma, unsigned long addr, pmd_t *pmd); +#define __HAVE_ARCH_PMDP_INVALIDATE +extern void pmdp_invalidate(struct vm_area_struct *vma, unsigned long address, + pmd_t *pmdp); + #define __HAVE_ARCH_PGTABLE_DEPOSIT extern void pgtable_trans_huge_deposit(struct mm_struct *mm, pmd_t *pmdp, pgtable_t pgtable); @@ -919,18 +970,6 @@ extern pte_t pgoff_to_pte(unsigned long); #define PTE_FILE_MAX_BITS (64UL - PAGE_SHIFT - 1UL) -extern unsigned long sparc64_valid_addr_bitmap[]; - -/* Needs to be defined here and not in linux/mm.h, as it is arch dependent */ -static inline bool kern_addr_valid(unsigned long addr) -{ - unsigned long paddr = __pa(addr); - - if ((paddr >> 41UL) != 0UL) - return false; - return test_bit(paddr >> 22, sparc64_valid_addr_bitmap); -} - extern int page_in_phys_avail(unsigned long paddr); /* --- linux-3.13.0.orig/arch/sparc/include/asm/setup.h +++ linux-3.13.0/arch/sparc/include/asm/setup.h @@ -24,6 +24,10 @@ } #endif +#ifdef CONFIG_SPARC64 +extern void __init start_early_boot(void); +#endif + extern void sun_do_break(void); extern int stop_a_enabled; extern int scons_pwroff; --- linux-3.13.0.orig/arch/sparc/include/asm/spitfire.h +++ linux-3.13.0/arch/sparc/include/asm/spitfire.h @@ -45,6 +45,8 @@ #define SUN4V_CHIP_NIAGARA3 0x03 #define SUN4V_CHIP_NIAGARA4 0x04 #define SUN4V_CHIP_NIAGARA5 0x05 +#define SUN4V_CHIP_SPARC_M6 0x06 +#define SUN4V_CHIP_SPARC_M7 0x07 #define SUN4V_CHIP_SPARC64X 0x8a #define SUN4V_CHIP_UNKNOWN 0xff --- linux-3.13.0.orig/arch/sparc/include/asm/thread_info_64.h +++ linux-3.13.0/arch/sparc/include/asm/thread_info_64.h @@ -63,7 +63,8 @@ struct pt_regs *kern_una_regs; unsigned int kern_una_insn; - unsigned long fpregs[0] __attribute__ ((aligned(64))); + unsigned long fpregs[(7 * 256) / sizeof(unsigned long)] + __attribute__ ((aligned(64))); }; #endif /* !(__ASSEMBLY__) */ @@ -102,6 +103,7 @@ #define FAULT_CODE_ITLB 0x04 /* Miss happened in I-TLB */ #define FAULT_CODE_WINFIXUP 0x08 /* Miss happened during spill/fill */ #define FAULT_CODE_BLKCOMMIT 0x10 /* Use blk-commit ASI in copy_page */ +#define FAULT_CODE_BAD_RA 0x20 /* Bad RA for sun4v */ #if PAGE_SHIFT == 13 #define THREAD_SIZE (2*PAGE_SIZE) --- linux-3.13.0.orig/arch/sparc/include/asm/tlbflush_64.h +++ linux-3.13.0/arch/sparc/include/asm/tlbflush_64.h @@ -34,6 +34,8 @@ { } +void flush_tlb_kernel_range(unsigned long start, unsigned long end); + #define __HAVE_ARCH_ENTER_LAZY_MMU_MODE extern void flush_tlb_pending(void); @@ -48,11 +50,6 @@ #ifndef CONFIG_SMP -#define flush_tlb_kernel_range(start,end) \ -do { flush_tsb_kernel_range(start,end); \ - __flush_tlb_kernel_range(start,end); \ -} while (0) - static inline void global_flush_tlb_page(struct mm_struct *mm, unsigned long vaddr) { __flush_tlb_page(CTX_HWBITS(mm->context), vaddr); @@ -63,11 +60,6 @@ extern void smp_flush_tlb_kernel_range(unsigned long start, unsigned long end); extern void smp_flush_tlb_page(struct mm_struct *mm, unsigned long vaddr); -#define flush_tlb_kernel_range(start, end) \ -do { flush_tsb_kernel_range(start,end); \ - smp_flush_tlb_kernel_range(start, end); \ -} while (0) - #define global_flush_tlb_page(mm, vaddr) \ smp_flush_tlb_page(mm, vaddr) --- linux-3.13.0.orig/arch/sparc/include/asm/tsb.h +++ linux-3.13.0/arch/sparc/include/asm/tsb.h @@ -133,9 +133,24 @@ sub TSB, 0x8, TSB; \ TSB_STORE(TSB, TAG); - /* Do a kernel page table walk. Leaves physical PTE pointer in - * REG1. Jumps to FAIL_LABEL on early page table walk termination. - * VADDR will not be clobbered, but REG2 will. + /* Do a kernel page table walk. Leaves valid PTE value in + * REG1. Jumps to FAIL_LABEL on early page table walk + * termination. VADDR will not be clobbered, but REG2 will. + * + * There are two masks we must apply to propagate bits from + * the virtual address into the PTE physical address field + * when dealing with huge pages. This is because the page + * table boundaries do not match the huge page size(s) the + * hardware supports. + * + * In these cases we propagate the bits that are below the + * page table level where we saw the huge page mapping, but + * are still within the relevant physical bits for the huge + * page size in question. So for PMD mappings (which fall on + * bit 23, for 8MB per PMD) we must propagate bit 22 for a + * 4MB huge page. For huge PUDs (which fall on bit 33, for + * 8GB per PUD), we have to accomodate 256MB and 2GB huge + * pages. So for those we propagate bits 32 to 28. */ #define KERN_PGTABLE_WALK(VADDR, REG1, REG2, FAIL_LABEL) \ sethi %hi(swapper_pg_dir), REG1; \ @@ -145,15 +160,40 @@ andn REG2, 0x7, REG2; \ ldx [REG1 + REG2], REG1; \ brz,pn REG1, FAIL_LABEL; \ - sllx VADDR, 64 - (PMD_SHIFT + PMD_BITS), REG2; \ + sllx VADDR, 64 - (PUD_SHIFT + PUD_BITS), REG2; \ + srlx REG2, 64 - PAGE_SHIFT, REG2; \ + andn REG2, 0x7, REG2; \ + ldxa [REG1 + REG2] ASI_PHYS_USE_EC, REG1; \ + brz,pn REG1, FAIL_LABEL; \ + sethi %uhi(_PAGE_PUD_HUGE), REG2; \ + brz,pn REG1, FAIL_LABEL; \ + sllx REG2, 32, REG2; \ + andcc REG1, REG2, %g0; \ + sethi %hi(0xf8000000), REG2; \ + bne,pt %xcc, 697f; \ + sllx REG2, 1, REG2; \ + sllx VADDR, 64 - (PMD_SHIFT + PMD_BITS), REG2; \ srlx REG2, 64 - PAGE_SHIFT, REG2; \ andn REG2, 0x7, REG2; \ ldxa [REG1 + REG2] ASI_PHYS_USE_EC, REG1; \ + sethi %uhi(_PAGE_PMD_HUGE), REG2; \ brz,pn REG1, FAIL_LABEL; \ - sllx VADDR, 64 - PMD_SHIFT, REG2; \ + sllx REG2, 32, REG2; \ + andcc REG1, REG2, %g0; \ + be,pn %xcc, 698f; \ + sethi %hi(0x400000), REG2; \ +697: brgez,pn REG1, FAIL_LABEL; \ + andn REG1, REG2, REG1; \ + and VADDR, REG2, REG2; \ + ba,pt %xcc, 699f; \ + or REG1, REG2, REG1; \ +698: sllx VADDR, 64 - PMD_SHIFT, REG2; \ srlx REG2, 64 - PAGE_SHIFT, REG2; \ andn REG2, 0x7, REG2; \ - add REG1, REG2, REG1; + ldxa [REG1 + REG2] ASI_PHYS_USE_EC, REG1; \ + brgez,pn REG1, FAIL_LABEL; \ + nop; \ +699: /* PMD has been loaded into REG1, interpret the value, seeing * if it is a HUGE PMD or a normal one. If it is not valid @@ -171,7 +211,8 @@ andcc REG1, REG2, %g0; \ be,pt %xcc, 700f; \ sethi %hi(4 * 1024 * 1024), REG2; \ - andn REG1, REG2, REG1; \ + brgez,pn REG1, FAIL_LABEL; \ + andn REG1, REG2, REG1; \ and VADDR, REG2, REG2; \ brlz,pt REG1, PTE_LABEL; \ or REG1, REG2, REG1; \ @@ -197,6 +238,11 @@ andn REG2, 0x7, REG2; \ ldxa [PHYS_PGD + REG2] ASI_PHYS_USE_EC, REG1; \ brz,pn REG1, FAIL_LABEL; \ + sllx VADDR, 64 - (PUD_SHIFT + PUD_BITS), REG2; \ + srlx REG2, 64 - PAGE_SHIFT, REG2; \ + andn REG2, 0x7, REG2; \ + ldxa [REG1 + REG2] ASI_PHYS_USE_EC, REG1; \ + brz,pn REG1, FAIL_LABEL; \ sllx VADDR, 64 - (PMD_SHIFT + PMD_BITS), REG2; \ srlx REG2, 64 - PAGE_SHIFT, REG2; \ andn REG2, 0x7, REG2; \ @@ -245,8 +291,6 @@ (KERNEL_TSB_SIZE_BYTES / 16) #define KERNEL_TSB4M_NENTRIES 4096 -#define KTSB_PHYS_SHIFT 15 - /* Do a kernel TSB lookup at tl>0 on VADDR+TAG, branch to OK_LABEL * on TSB hit. REG1, REG2, REG3, and REG4 are used as temporaries * and the found TTE will be left in REG1. REG3 and REG4 must @@ -255,17 +299,15 @@ * VADDR and TAG will be preserved and not clobbered by this macro. */ #define KERN_TSB_LOOKUP_TL1(VADDR, TAG, REG1, REG2, REG3, REG4, OK_LABEL) \ -661: sethi %hi(swapper_tsb), REG1; \ - or REG1, %lo(swapper_tsb), REG1; \ +661: sethi %uhi(swapper_tsb), REG1; \ + sethi %hi(swapper_tsb), REG2; \ + or REG1, %ulo(swapper_tsb), REG1; \ + or REG2, %lo(swapper_tsb), REG2; \ .section .swapper_tsb_phys_patch, "ax"; \ .word 661b; \ .previous; \ -661: nop; \ - .section .tsb_ldquad_phys_patch, "ax"; \ - .word 661b; \ - sllx REG1, KTSB_PHYS_SHIFT, REG1; \ - sllx REG1, KTSB_PHYS_SHIFT, REG1; \ - .previous; \ + sllx REG1, 32, REG1; \ + or REG1, REG2, REG1; \ srlx VADDR, PAGE_SHIFT, REG2; \ and REG2, (KERNEL_TSB_NENTRIES - 1), REG2; \ sllx REG2, 4, REG2; \ @@ -280,17 +322,15 @@ * we can make use of that for the index computation. */ #define KERN_TSB4M_LOOKUP_TL1(TAG, REG1, REG2, REG3, REG4, OK_LABEL) \ -661: sethi %hi(swapper_4m_tsb), REG1; \ - or REG1, %lo(swapper_4m_tsb), REG1; \ +661: sethi %uhi(swapper_4m_tsb), REG1; \ + sethi %hi(swapper_4m_tsb), REG2; \ + or REG1, %ulo(swapper_4m_tsb), REG1; \ + or REG2, %lo(swapper_4m_tsb), REG2; \ .section .swapper_4m_tsb_phys_patch, "ax"; \ .word 661b; \ .previous; \ -661: nop; \ - .section .tsb_ldquad_phys_patch, "ax"; \ - .word 661b; \ - sllx REG1, KTSB_PHYS_SHIFT, REG1; \ - sllx REG1, KTSB_PHYS_SHIFT, REG1; \ - .previous; \ + sllx REG1, 32, REG1; \ + or REG1, REG2, REG1; \ and TAG, (KERNEL_TSB4M_NENTRIES - 1), REG2; \ sllx REG2, 4, REG2; \ add REG1, REG2, REG2; \ --- linux-3.13.0.orig/arch/sparc/include/asm/vio.h +++ linux-3.13.0/arch/sparc/include/asm/vio.h @@ -118,12 +118,18 @@ u8 vdisk_type; #define VD_DISK_TYPE_SLICE 0x01 /* Slice in block device */ #define VD_DISK_TYPE_DISK 0x02 /* Entire block device */ - u16 resv1; + u8 vdisk_mtype; /* v1.1 */ +#define VD_MEDIA_TYPE_FIXED 0x01 /* Fixed device */ +#define VD_MEDIA_TYPE_CD 0x02 /* CD Device */ +#define VD_MEDIA_TYPE_DVD 0x03 /* DVD Device */ + u8 resv1; u32 vdisk_block_size; u64 operations; - u64 vdisk_size; + u64 vdisk_size; /* v1.1 */ u64 max_xfer_size; - u64 resv2[2]; + u32 phys_block_size; /* v1.2 */ + u32 resv2; + u64 resv3[1]; }; struct vio_disk_desc { @@ -259,7 +265,7 @@ unsigned int ring_size) { return (dr->pending - - ((dr->prod - dr->cons) & (ring_size - 1))); + ((dr->prod - dr->cons) & (ring_size - 1)) - 1); } #define VIO_MAX_TYPE_LEN 32 --- linux-3.13.0.orig/arch/sparc/include/asm/visasm.h +++ linux-3.13.0/arch/sparc/include/asm/visasm.h @@ -28,18 +28,20 @@ * Must preserve %o5 between VISEntryHalf and VISExitHalf */ #define VISEntryHalf \ + VISEntry + +#define VISExitHalf \ + VISExit + +#define VISEntryHalfFast(fail_label) \ rd %fprs, %o5; \ andcc %o5, FPRS_FEF, %g0; \ be,pt %icc, 297f; \ - sethi %hi(298f), %g7; \ - sethi %hi(VISenterhalf), %g1; \ - jmpl %g1 + %lo(VISenterhalf), %g0; \ - or %g7, %lo(298f), %g7; \ - clr %o5; \ -297: wr %o5, FPRS_FEF, %fprs; \ -298: + nop; \ + ba,a,pt %xcc, fail_label; \ +297: wr %o5, FPRS_FEF, %fprs; -#define VISExitHalf \ +#define VISExitHalfFast \ wr %o5, 0, %fprs; #ifndef __ASSEMBLY__ --- linux-3.13.0.orig/arch/sparc/include/uapi/asm/swab.h +++ linux-3.13.0/arch/sparc/include/uapi/asm/swab.h @@ -9,9 +9,9 @@ { __u16 ret; - __asm__ __volatile__ ("lduha [%1] %2, %0" + __asm__ __volatile__ ("lduha [%2] %3, %0" : "=r" (ret) - : "r" (addr), "i" (ASI_PL)); + : "m" (*addr), "r" (addr), "i" (ASI_PL)); return ret; } #define __arch_swab16p __arch_swab16p @@ -20,9 +20,9 @@ { __u32 ret; - __asm__ __volatile__ ("lduwa [%1] %2, %0" + __asm__ __volatile__ ("lduwa [%2] %3, %0" : "=r" (ret) - : "r" (addr), "i" (ASI_PL)); + : "m" (*addr), "r" (addr), "i" (ASI_PL)); return ret; } #define __arch_swab32p __arch_swab32p @@ -31,9 +31,9 @@ { __u64 ret; - __asm__ __volatile__ ("ldxa [%1] %2, %0" + __asm__ __volatile__ ("ldxa [%2] %3, %0" : "=r" (ret) - : "r" (addr), "i" (ASI_PL)); + : "m" (*addr), "r" (addr), "i" (ASI_PL)); return ret; } #define __arch_swab64p __arch_swab64p --- linux-3.13.0.orig/arch/sparc/kernel/cpu.c +++ linux-3.13.0/arch/sparc/kernel/cpu.c @@ -493,6 +493,18 @@ sparc_pmu_type = "niagara5"; break; + case SUN4V_CHIP_SPARC_M6: + sparc_cpu_type = "SPARC-M6"; + sparc_fpu_type = "SPARC-M6 integrated FPU"; + sparc_pmu_type = "sparc-m6"; + break; + + case SUN4V_CHIP_SPARC_M7: + sparc_cpu_type = "SPARC-M7"; + sparc_fpu_type = "SPARC-M7 integrated FPU"; + sparc_pmu_type = "sparc-m7"; + break; + case SUN4V_CHIP_SPARC64X: sparc_cpu_type = "SPARC64-X"; sparc_fpu_type = "SPARC64-X integrated FPU"; --- linux-3.13.0.orig/arch/sparc/kernel/cpumap.c +++ linux-3.13.0/arch/sparc/kernel/cpumap.c @@ -327,6 +327,8 @@ case SUN4V_CHIP_NIAGARA3: case SUN4V_CHIP_NIAGARA4: case SUN4V_CHIP_NIAGARA5: + case SUN4V_CHIP_SPARC_M6: + case SUN4V_CHIP_SPARC_M7: case SUN4V_CHIP_SPARC64X: rover_inc_table = niagara_iterate_method; break; --- linux-3.13.0.orig/arch/sparc/kernel/ds.c +++ linux-3.13.0/arch/sparc/kernel/ds.c @@ -1200,14 +1200,14 @@ ds_cfg.tx_irq = vdev->tx_irq; ds_cfg.rx_irq = vdev->rx_irq; - lp = ldc_alloc(vdev->channel_id, &ds_cfg, dp); + lp = ldc_alloc(vdev->channel_id, &ds_cfg, dp, "DS"); if (IS_ERR(lp)) { err = PTR_ERR(lp); goto out_free_ds_states; } dp->lp = lp; - err = ldc_bind(lp, "DS"); + err = ldc_bind(lp); if (err) goto out_free_ldc; --- linux-3.13.0.orig/arch/sparc/kernel/dtlb_prot.S +++ linux-3.13.0/arch/sparc/kernel/dtlb_prot.S @@ -24,11 +24,11 @@ mov TLB_TAG_ACCESS, %g4 ! For reload of vaddr /* PROT ** ICACHE line 2: More real fault processing */ + ldxa [%g4] ASI_DMMU, %g5 ! Put tagaccess in %g5 bgu,pn %xcc, winfix_trampoline ! Yes, perform winfixup - ldxa [%g4] ASI_DMMU, %g5 ! Put tagaccess in %g5 - ba,pt %xcc, sparc64_realfault_common ! Nope, normal fault mov FAULT_CODE_DTLB | FAULT_CODE_WRITE, %g4 - nop + ba,pt %xcc, sparc64_realfault_common ! Nope, normal fault + nop nop nop nop --- linux-3.13.0.orig/arch/sparc/kernel/entry.h +++ linux-3.13.0/arch/sparc/kernel/entry.h @@ -66,13 +66,10 @@ extern struct pause_patch_entry __pause_3insn_patch, __pause_3insn_patch_end; -extern void __init per_cpu_patch(void); extern void sun4v_patch_1insn_range(struct sun4v_1insn_patch_entry *, struct sun4v_1insn_patch_entry *); extern void sun4v_patch_2insn_range(struct sun4v_2insn_patch_entry *, struct sun4v_2insn_patch_entry *); -extern void __init sun4v_patch(void); -extern void __init boot_cpu_id_too_large(int cpu); extern unsigned int dcache_parity_tl1_occurred; extern unsigned int icache_parity_tl1_occurred; --- linux-3.13.0.orig/arch/sparc/kernel/head_64.S +++ linux-3.13.0/arch/sparc/kernel/head_64.S @@ -282,8 +282,8 @@ stx %l2, [%l4 + 0x0] ldx [%sp + 2047 + 128 + 0x50], %l3 ! physaddr low /* 4MB align */ - srlx %l3, 22, %l3 - sllx %l3, 22, %l3 + srlx %l3, ILOG2_4MB, %l3 + sllx %l3, ILOG2_4MB, %l3 stx %l3, [%l4 + 0x8] /* Leave service as-is, "call-method" */ @@ -427,6 +427,12 @@ cmp %g2, '5' be,pt %xcc, 5f mov SUN4V_CHIP_NIAGARA5, %g4 + cmp %g2, '6' + be,pt %xcc, 5f + mov SUN4V_CHIP_SPARC_M6, %g4 + cmp %g2, '7' + be,pt %xcc, 5f + mov SUN4V_CHIP_SPARC_M7, %g4 ba,pt %xcc, 49f nop @@ -585,6 +591,12 @@ cmp %g1, SUN4V_CHIP_NIAGARA5 be,pt %xcc, niagara4_patch nop + cmp %g1, SUN4V_CHIP_SPARC_M6 + be,pt %xcc, niagara4_patch + nop + cmp %g1, SUN4V_CHIP_SPARC_M7 + be,pt %xcc, niagara4_patch + nop call generic_patch_copyops nop @@ -660,14 +672,12 @@ sethi %hi(init_thread_union), %g6 or %g6, %lo(init_thread_union), %g6 ldx [%g6 + TI_TASK], %g4 - mov %sp, %l6 wr %g0, ASI_P, %asi mov 1, %g1 sllx %g1, THREAD_SHIFT, %g1 sub %g1, (STACKFRAME_SZ + STACK_BIAS), %g1 add %g6, %g1, %sp - mov 0, %fp /* Set per-cpu pointer initially to zero, this makes * the boot-cpu use the in-kernel-image per-cpu areas @@ -694,44 +704,14 @@ nop #endif - mov %l6, %o1 ! OpenPROM stack call prom_init mov %l7, %o0 ! OpenPROM cif handler - /* Initialize current_thread_info()->cpu as early as possible. - * In order to do that accurately we have to patch up the get_cpuid() - * assembler sequences. And that, in turn, requires that we know - * if we are on a Starfire box or not. While we're here, patch up - * the sun4v sequences as well. + /* To create a one-register-window buffer between the kernel's + * initial stack and the last stack frame we use from the firmware, + * do the rest of the boot from a C helper function. */ - call check_if_starfire - nop - call per_cpu_patch - nop - call sun4v_patch - nop - -#ifdef CONFIG_SMP - call hard_smp_processor_id - nop - cmp %o0, NR_CPUS - blu,pt %xcc, 1f - nop - call boot_cpu_id_too_large - nop - /* Not reached... */ - -1: -#else - mov 0, %o0 -#endif - sth %o0, [%g6 + TI_CPU] - - call prom_init_report - nop - - /* Off we go.... */ - call start_kernel + call start_early_boot nop /* Not reached... */ --- linux-3.13.0.orig/arch/sparc/kernel/hvapi.c +++ linux-3.13.0/arch/sparc/kernel/hvapi.c @@ -46,6 +46,7 @@ { .group = HV_GRP_VF_CPU, }, { .group = HV_GRP_KT_CPU, }, { .group = HV_GRP_VT_CPU, }, + { .group = HV_GRP_T5_CPU, }, { .group = HV_GRP_DIAG, .flags = FLAG_PRE_API }, }; --- linux-3.13.0.orig/arch/sparc/kernel/hvcalls.S +++ linux-3.13.0/arch/sparc/kernel/hvcalls.S @@ -821,3 +821,19 @@ retl nop ENDPROC(sun4v_vt_set_perfreg) + +ENTRY(sun4v_t5_get_perfreg) + mov %o1, %o4 + mov HV_FAST_T5_GET_PERFREG, %o5 + ta HV_FAST_TRAP + stx %o1, [%o4] + retl + nop +ENDPROC(sun4v_t5_get_perfreg) + +ENTRY(sun4v_t5_set_perfreg) + mov HV_FAST_T5_SET_PERFREG, %o5 + ta HV_FAST_TRAP + retl + nop +ENDPROC(sun4v_t5_set_perfreg) --- linux-3.13.0.orig/arch/sparc/kernel/hvtramp.S +++ linux-3.13.0/arch/sparc/kernel/hvtramp.S @@ -110,7 +110,6 @@ sllx %g5, THREAD_SHIFT, %g5 sub %g5, (STACKFRAME_SZ + STACK_BIAS), %g5 add %g6, %g5, %sp - mov 0, %fp call init_irqwork_curcpu nop --- linux-3.13.0.orig/arch/sparc/kernel/ioport.c +++ linux-3.13.0/arch/sparc/kernel/ioport.c @@ -278,7 +278,8 @@ } order = get_order(len_total); - if ((va = __get_free_pages(GFP_KERNEL|__GFP_COMP, order)) == 0) + va = __get_free_pages(gfp, order); + if (va == 0) goto err_nopages; if ((res = kzalloc(sizeof(struct resource), GFP_KERNEL)) == NULL) @@ -443,7 +444,7 @@ } order = get_order(len_total); - va = (void *) __get_free_pages(GFP_KERNEL, order); + va = (void *) __get_free_pages(gfp, order); if (va == NULL) { printk("pci_alloc_consistent: no %ld pages\n", len_total>>PAGE_SHIFT); goto err_nopages; --- linux-3.13.0.orig/arch/sparc/kernel/irq_64.c +++ linux-3.13.0/arch/sparc/kernel/irq_64.c @@ -47,8 +47,6 @@ #include "cpumap.h" #include "kstack.h" -#define NUM_IVECS (IMAP_INR + 1) - struct ino_bucket *ivector_table; unsigned long ivector_table_pa; @@ -107,55 +105,196 @@ #define irq_work_pa(__cpu) &(trap_block[(__cpu)].irq_worklist_pa) -static struct { - unsigned int dev_handle; - unsigned int dev_ino; - unsigned int in_use; -} irq_table[NR_IRQS]; -static DEFINE_SPINLOCK(irq_alloc_lock); +static unsigned long hvirq_major __initdata; +static int __init early_hvirq_major(char *p) +{ + int rc = kstrtoul(p, 10, &hvirq_major); + + return rc; +} +early_param("hvirq", early_hvirq_major); + +static int hv_irq_version; + +/* Major version 2.0 of HV_GRP_INTR added support for the VIRQ cookie + * based interfaces, but: + * + * 1) Several OSs, Solaris and Linux included, use them even when only + * negotiating version 1.0 (or failing to negotiate at all). So the + * hypervisor has a workaround that provides the VIRQ interfaces even + * when only verion 1.0 of the API is in use. + * + * 2) Second, and more importantly, with major version 2.0 these VIRQ + * interfaces only were actually hooked up for LDC interrupts, even + * though the Hypervisor specification clearly stated: + * + * The new interrupt API functions will be available to a guest + * when it negotiates version 2.0 in the interrupt API group 0x2. When + * a guest negotiates version 2.0, all interrupt sources will only + * support using the cookie interface, and any attempt to use the + * version 1.0 interrupt APIs numbered 0xa0 to 0xa6 will result in the + * ENOTSUPPORTED error being returned. + * + * with an emphasis on "all interrupt sources". + * + * To correct this, major version 3.0 was created which does actually + * support VIRQs for all interrupt sources (not just LDC devices). So + * if we want to move completely over the cookie based VIRQs we must + * negotiate major version 3.0 or later of HV_GRP_INTR. + */ +static bool sun4v_cookie_only_virqs(void) +{ + if (hv_irq_version >= 3) + return true; + return false; +} -unsigned char irq_alloc(unsigned int dev_handle, unsigned int dev_ino) +static void __init irq_init_hv(void) { - unsigned long flags; - unsigned char ent; + unsigned long hv_error, major, minor = 0; + + if (tlb_type != hypervisor) + return; - BUILD_BUG_ON(NR_IRQS >= 256); + if (hvirq_major) + major = hvirq_major; + else + major = 3; - spin_lock_irqsave(&irq_alloc_lock, flags); + hv_error = sun4v_hvapi_register(HV_GRP_INTR, major, &minor); + if (!hv_error) + hv_irq_version = major; + else + hv_irq_version = 1; - for (ent = 1; ent < NR_IRQS; ent++) { - if (!irq_table[ent].in_use) + pr_info("SUN4V: Using IRQ API major %d, cookie only virqs %s\n", + hv_irq_version, + sun4v_cookie_only_virqs() ? "enabled" : "disabled"); +} + +/* This function is for the timer interrupt.*/ +int __init arch_probe_nr_irqs(void) +{ + return 1; +} + +#define DEFAULT_NUM_IVECS (0xfffU) +static unsigned int nr_ivec = DEFAULT_NUM_IVECS; +#define NUM_IVECS (nr_ivec) + +static unsigned int __init size_nr_ivec(void) +{ + if (tlb_type == hypervisor) { + switch (sun4v_chip_type) { + /* Athena's devhandle|devino is large.*/ + case SUN4V_CHIP_SPARC64X: + nr_ivec = 0xffff; break; + } } - if (ent >= NR_IRQS) { - printk(KERN_ERR "IRQ: Out of virtual IRQs.\n"); - ent = 0; - } else { - irq_table[ent].dev_handle = dev_handle; - irq_table[ent].dev_ino = dev_ino; - irq_table[ent].in_use = 1; - } + return nr_ivec; +} + +struct irq_handler_data { + union { + struct { + unsigned int dev_handle; + unsigned int dev_ino; + }; + unsigned long sysino; + }; + struct ino_bucket bucket; + unsigned long iclr; + unsigned long imap; +}; + +static inline unsigned int irq_data_to_handle(struct irq_data *data) +{ + struct irq_handler_data *ihd = data->handler_data; + + return ihd->dev_handle; +} + +static inline unsigned int irq_data_to_ino(struct irq_data *data) +{ + struct irq_handler_data *ihd = data->handler_data; + + return ihd->dev_ino; +} - spin_unlock_irqrestore(&irq_alloc_lock, flags); +static inline unsigned long irq_data_to_sysino(struct irq_data *data) +{ + struct irq_handler_data *ihd = data->handler_data; - return ent; + return ihd->sysino; } -#ifdef CONFIG_PCI_MSI void irq_free(unsigned int irq) { - unsigned long flags; + void *data = irq_get_handler_data(irq); - if (irq >= NR_IRQS) - return; + kfree(data); + irq_set_handler_data(irq, NULL); + irq_free_descs(irq, 1); +} - spin_lock_irqsave(&irq_alloc_lock, flags); +unsigned int irq_alloc(unsigned int dev_handle, unsigned int dev_ino) +{ + int irq; - irq_table[irq].in_use = 0; + irq = __irq_alloc_descs(-1, 1, 1, numa_node_id(), NULL); + if (irq <= 0) + goto out; - spin_unlock_irqrestore(&irq_alloc_lock, flags); + return irq; +out: + return 0; +} + +static unsigned int cookie_exists(u32 devhandle, unsigned int devino) +{ + unsigned long hv_err, cookie; + struct ino_bucket *bucket; + unsigned int irq = 0U; + + hv_err = sun4v_vintr_get_cookie(devhandle, devino, &cookie); + if (hv_err) { + pr_err("HV get cookie failed hv_err = %ld\n", hv_err); + goto out; + } + + if (cookie & ((1UL << 63UL))) { + cookie = ~cookie; + bucket = (struct ino_bucket *) __va(cookie); + irq = bucket->__irq; + } +out: + return irq; +} + +static unsigned int sysino_exists(u32 devhandle, unsigned int devino) +{ + unsigned long sysino = sun4v_devino_to_sysino(devhandle, devino); + struct ino_bucket *bucket; + unsigned int irq; + + bucket = &ivector_table[sysino]; + irq = bucket_get_irq(__pa(bucket)); + + return irq; +} + +void ack_bad_irq(unsigned int irq) +{ + pr_crit("BAD IRQ ack %d\n", irq); +} + +void irq_install_pre_handler(int irq, + void (*func)(unsigned int, void *, void *), + void *arg1, void *arg2) +{ + pr_warn("IRQ pre handler NOT supported.\n"); } -#endif /* * /proc/interrupts printing: @@ -206,15 +345,6 @@ return tid; } -struct irq_handler_data { - unsigned long iclr; - unsigned long imap; - - void (*pre_handler)(unsigned int, void *, void *); - void *arg1; - void *arg2; -}; - #ifdef CONFIG_SMP static int irq_choose_cpu(unsigned int irq, const struct cpumask *affinity) { @@ -316,8 +446,8 @@ static void sun4v_irq_enable(struct irq_data *data) { - unsigned int ino = irq_table[data->irq].dev_ino; unsigned long cpuid = irq_choose_cpu(data->irq, data->affinity); + unsigned int ino = irq_data_to_sysino(data); int err; err = sun4v_intr_settarget(ino, cpuid); @@ -337,8 +467,8 @@ static int sun4v_set_affinity(struct irq_data *data, const struct cpumask *mask, bool force) { - unsigned int ino = irq_table[data->irq].dev_ino; unsigned long cpuid = irq_choose_cpu(data->irq, mask); + unsigned int ino = irq_data_to_sysino(data); int err; err = sun4v_intr_settarget(ino, cpuid); @@ -351,7 +481,7 @@ static void sun4v_irq_disable(struct irq_data *data) { - unsigned int ino = irq_table[data->irq].dev_ino; + unsigned int ino = irq_data_to_sysino(data); int err; err = sun4v_intr_setenabled(ino, HV_INTR_DISABLED); @@ -362,7 +492,7 @@ static void sun4v_irq_eoi(struct irq_data *data) { - unsigned int ino = irq_table[data->irq].dev_ino; + unsigned int ino = irq_data_to_sysino(data); int err; err = sun4v_intr_setstate(ino, HV_INTR_STATE_IDLE); @@ -373,14 +503,13 @@ static void sun4v_virq_enable(struct irq_data *data) { - unsigned long cpuid, dev_handle, dev_ino; + unsigned long dev_handle = irq_data_to_handle(data); + unsigned long dev_ino = irq_data_to_ino(data); + unsigned long cpuid; int err; cpuid = irq_choose_cpu(data->irq, data->affinity); - dev_handle = irq_table[data->irq].dev_handle; - dev_ino = irq_table[data->irq].dev_ino; - err = sun4v_vintr_set_target(dev_handle, dev_ino, cpuid); if (err != HV_EOK) printk(KERN_ERR "sun4v_vintr_set_target(%lx,%lx,%lu): " @@ -403,14 +532,13 @@ static int sun4v_virt_set_affinity(struct irq_data *data, const struct cpumask *mask, bool force) { - unsigned long cpuid, dev_handle, dev_ino; + unsigned long dev_handle = irq_data_to_handle(data); + unsigned long dev_ino = irq_data_to_ino(data); + unsigned long cpuid; int err; cpuid = irq_choose_cpu(data->irq, mask); - dev_handle = irq_table[data->irq].dev_handle; - dev_ino = irq_table[data->irq].dev_ino; - err = sun4v_vintr_set_target(dev_handle, dev_ino, cpuid); if (err != HV_EOK) printk(KERN_ERR "sun4v_vintr_set_target(%lx,%lx,%lu): " @@ -422,11 +550,10 @@ static void sun4v_virq_disable(struct irq_data *data) { - unsigned long dev_handle, dev_ino; + unsigned long dev_handle = irq_data_to_handle(data); + unsigned long dev_ino = irq_data_to_ino(data); int err; - dev_handle = irq_table[data->irq].dev_handle; - dev_ino = irq_table[data->irq].dev_ino; err = sun4v_vintr_set_valid(dev_handle, dev_ino, HV_INTR_DISABLED); @@ -438,12 +565,10 @@ static void sun4v_virq_eoi(struct irq_data *data) { - unsigned long dev_handle, dev_ino; + unsigned long dev_handle = irq_data_to_handle(data); + unsigned long dev_ino = irq_data_to_ino(data); int err; - dev_handle = irq_table[data->irq].dev_handle; - dev_ino = irq_table[data->irq].dev_ino; - err = sun4v_vintr_set_state(dev_handle, dev_ino, HV_INTR_STATE_IDLE); if (err != HV_EOK) @@ -479,31 +604,10 @@ .flags = IRQCHIP_EOI_IF_HANDLED, }; -static void pre_flow_handler(struct irq_data *d) -{ - struct irq_handler_data *handler_data = irq_data_get_irq_handler_data(d); - unsigned int ino = irq_table[d->irq].dev_ino; - - handler_data->pre_handler(ino, handler_data->arg1, handler_data->arg2); -} - -void irq_install_pre_handler(int irq, - void (*func)(unsigned int, void *, void *), - void *arg1, void *arg2) -{ - struct irq_handler_data *handler_data = irq_get_handler_data(irq); - - handler_data->pre_handler = func; - handler_data->arg1 = arg1; - handler_data->arg2 = arg2; - - __irq_set_preflow_handler(irq, pre_flow_handler); -} - unsigned int build_irq(int inofixup, unsigned long iclr, unsigned long imap) { - struct ino_bucket *bucket; struct irq_handler_data *handler_data; + struct ino_bucket *bucket; unsigned int irq; int ino; @@ -537,119 +641,166 @@ return irq; } -static unsigned int sun4v_build_common(unsigned long sysino, - struct irq_chip *chip) +static unsigned int sun4v_build_common(u32 devhandle, unsigned int devino, + void (*handler_data_init)(struct irq_handler_data *data, + u32 devhandle, unsigned int devino), + struct irq_chip *chip) { - struct ino_bucket *bucket; - struct irq_handler_data *handler_data; + struct irq_handler_data *data; unsigned int irq; - BUG_ON(tlb_type != hypervisor); + irq = irq_alloc(devhandle, devino); + if (!irq) + goto out; - bucket = &ivector_table[sysino]; - irq = bucket_get_irq(__pa(bucket)); - if (!irq) { - irq = irq_alloc(0, sysino); - bucket_set_irq(__pa(bucket), irq); - irq_set_chip_and_handler_name(irq, chip, handle_fasteoi_irq, - "IVEC"); + data = kzalloc(sizeof(struct irq_handler_data), GFP_ATOMIC); + if (unlikely(!data)) { + pr_err("IRQ handler data allocation failed.\n"); + irq_free(irq); + irq = 0; + goto out; } - handler_data = irq_get_handler_data(irq); - if (unlikely(handler_data)) - goto out; + irq_set_handler_data(irq, data); + handler_data_init(data, devhandle, devino); + irq_set_chip_and_handler_name(irq, chip, handle_fasteoi_irq, "IVEC"); + data->imap = ~0UL; + data->iclr = ~0UL; +out: + return irq; +} - handler_data = kzalloc(sizeof(struct irq_handler_data), GFP_ATOMIC); - if (unlikely(!handler_data)) { - prom_printf("IRQ: kzalloc(irq_handler_data) failed.\n"); - prom_halt(); - } - irq_set_handler_data(irq, handler_data); +static unsigned long cookie_assign(unsigned int irq, u32 devhandle, + unsigned int devino) +{ + struct irq_handler_data *ihd = irq_get_handler_data(irq); + unsigned long hv_error, cookie; - /* Catch accidental accesses to these things. IMAP/ICLR handling - * is done by hypervisor calls on sun4v platforms, not by direct - * register accesses. + /* handler_irq needs to find the irq. cookie is seen signed in + * sun4v_dev_mondo and treated as a non ivector_table delivery. */ - handler_data->imap = ~0UL; - handler_data->iclr = ~0UL; + ihd->bucket.__irq = irq; + cookie = ~__pa(&ihd->bucket); -out: - return irq; + hv_error = sun4v_vintr_set_cookie(devhandle, devino, cookie); + if (hv_error) + pr_err("HV vintr set cookie failed = %ld\n", hv_error); + + return hv_error; } -unsigned int sun4v_build_irq(u32 devhandle, unsigned int devino) +static void cookie_handler_data(struct irq_handler_data *data, + u32 devhandle, unsigned int devino) { - unsigned long sysino = sun4v_devino_to_sysino(devhandle, devino); + data->dev_handle = devhandle; + data->dev_ino = devino; +} - return sun4v_build_common(sysino, &sun4v_irq); +static unsigned int cookie_build_irq(u32 devhandle, unsigned int devino, + struct irq_chip *chip) +{ + unsigned long hv_error; + unsigned int irq; + + irq = sun4v_build_common(devhandle, devino, cookie_handler_data, chip); + + hv_error = cookie_assign(irq, devhandle, devino); + if (hv_error) { + irq_free(irq); + irq = 0; + } + + return irq; } -unsigned int sun4v_build_virq(u32 devhandle, unsigned int devino) +static unsigned int sun4v_build_cookie(u32 devhandle, unsigned int devino) { - struct irq_handler_data *handler_data; - unsigned long hv_err, cookie; - struct ino_bucket *bucket; unsigned int irq; - bucket = kzalloc(sizeof(struct ino_bucket), GFP_ATOMIC); - if (unlikely(!bucket)) - return 0; - - /* The only reference we store to the IRQ bucket is - * by physical address which kmemleak can't see, tell - * it that this object explicitly is not a leak and - * should be scanned. - */ - kmemleak_not_leak(bucket); + irq = cookie_exists(devhandle, devino); + if (irq) + goto out; - __flush_dcache_range((unsigned long) bucket, - ((unsigned long) bucket + - sizeof(struct ino_bucket))); + irq = cookie_build_irq(devhandle, devino, &sun4v_virq); - irq = irq_alloc(devhandle, devino); +out: + return irq; +} + +static void sysino_set_bucket(unsigned int irq) +{ + struct irq_handler_data *ihd = irq_get_handler_data(irq); + struct ino_bucket *bucket; + unsigned long sysino; + + sysino = sun4v_devino_to_sysino(ihd->dev_handle, ihd->dev_ino); + BUG_ON(sysino >= nr_ivec); + bucket = &ivector_table[sysino]; bucket_set_irq(__pa(bucket), irq); +} - irq_set_chip_and_handler_name(irq, &sun4v_virq, handle_fasteoi_irq, - "IVEC"); +static void sysino_handler_data(struct irq_handler_data *data, + u32 devhandle, unsigned int devino) +{ + unsigned long sysino; - handler_data = kzalloc(sizeof(struct irq_handler_data), GFP_ATOMIC); - if (unlikely(!handler_data)) - return 0; + sysino = sun4v_devino_to_sysino(devhandle, devino); + data->sysino = sysino; +} - /* In order to make the LDC channel startup sequence easier, - * especially wrt. locking, we do not let request_irq() enable - * the interrupt. - */ - irq_set_status_flags(irq, IRQ_NOAUTOEN); - irq_set_handler_data(irq, handler_data); +static unsigned int sysino_build_irq(u32 devhandle, unsigned int devino, + struct irq_chip *chip) +{ + unsigned int irq; - /* Catch accidental accesses to these things. IMAP/ICLR handling - * is done by hypervisor calls on sun4v platforms, not by direct - * register accesses. - */ - handler_data->imap = ~0UL; - handler_data->iclr = ~0UL; + irq = sun4v_build_common(devhandle, devino, sysino_handler_data, chip); + if (!irq) + goto out; - cookie = ~__pa(bucket); - hv_err = sun4v_vintr_set_cookie(devhandle, devino, cookie); - if (hv_err) { - prom_printf("IRQ: Fatal, cannot set cookie for [%x:%x] " - "err=%lu\n", devhandle, devino, hv_err); - prom_halt(); - } + sysino_set_bucket(irq); +out: + return irq; +} +static int sun4v_build_sysino(u32 devhandle, unsigned int devino) +{ + int irq; + + irq = sysino_exists(devhandle, devino); + if (irq) + goto out; + + irq = sysino_build_irq(devhandle, devino, &sun4v_irq); +out: return irq; } -void ack_bad_irq(unsigned int irq) +unsigned int sun4v_build_irq(u32 devhandle, unsigned int devino) { - unsigned int ino = irq_table[irq].dev_ino; + unsigned int irq; - if (!ino) - ino = 0xdeadbeef; + if (sun4v_cookie_only_virqs()) + irq = sun4v_build_cookie(devhandle, devino); + else + irq = sun4v_build_sysino(devhandle, devino); - printk(KERN_CRIT "Unexpected IRQ from ino[%x] irq[%u]\n", - ino, irq); + return irq; +} + +unsigned int sun4v_build_virq(u32 devhandle, unsigned int devino) +{ + int irq; + + irq = cookie_build_irq(devhandle, devino, &sun4v_virq); + if (!irq) + goto out; + + /* This is borrowed from the original function. + */ + irq_set_status_flags(irq, IRQ_NOAUTOEN); + +out: + return irq; } void *hardirq_stack[NR_CPUS]; @@ -720,9 +871,12 @@ for (irq = 0; irq < NR_IRQS; irq++) { struct irq_desc *desc = irq_to_desc(irq); - struct irq_data *data = irq_desc_get_irq_data(desc); + struct irq_data *data; unsigned long flags; + if (!desc) + continue; + data = irq_desc_get_irq_data(desc); raw_spin_lock_irqsave(&desc->lock, flags); if (desc->action && !irqd_is_per_cpu(data)) { if (data->chip->irq_set_affinity) @@ -922,16 +1076,22 @@ .name = "timer", }; -/* Only invoked on boot processor. */ -void __init init_IRQ(void) +static void __init irq_ivector_init(void) { - unsigned long size; + unsigned long size, order; + unsigned int ivecs; - map_prom_timers(); - kill_prom_timer(); + /* If we are doing cookie only VIRQs then we do not need the ivector + * table to process interrupts. + */ + if (sun4v_cookie_only_virqs()) + return; - size = sizeof(struct ino_bucket) * NUM_IVECS; - ivector_table = kzalloc(size, GFP_KERNEL); + ivecs = size_nr_ivec(); + size = sizeof(struct ino_bucket) * ivecs; + order = get_order(size); + ivector_table = (struct ino_bucket *) + __get_free_pages(GFP_KERNEL | __GFP_ZERO, order); if (!ivector_table) { prom_printf("Fatal error, cannot allocate ivector_table\n"); prom_halt(); @@ -940,6 +1100,15 @@ ((unsigned long) ivector_table) + size); ivector_table_pa = __pa(ivector_table); +} + +/* Only invoked on boot processor.*/ +void __init init_IRQ(void) +{ + irq_init_hv(); + irq_ivector_init(); + map_prom_timers(); + kill_prom_timer(); if (tlb_type == hypervisor) sun4v_init_mondo_queues(); --- linux-3.13.0.orig/arch/sparc/kernel/ktlb.S +++ linux-3.13.0/arch/sparc/kernel/ktlb.S @@ -47,14 +47,6 @@ KERN_PGTABLE_WALK(%g4, %g5, %g2, kvmap_itlb_longpath) TSB_LOCK_TAG(%g1, %g2, %g7) - - /* Load and check PTE. */ - ldxa [%g5] ASI_PHYS_USE_EC, %g5 - mov 1, %g7 - sllx %g7, TSB_TAG_INVALID_BIT, %g7 - brgez,a,pn %g5, kvmap_itlb_longpath - TSB_STORE(%g1, %g7) - TSB_WRITE(%g1, %g5, %g6) /* fallthrough to TLB load */ @@ -118,6 +110,12 @@ ba,pt %xcc, kvmap_dtlb_load nop +kvmap_linear_early: + sethi %hi(kern_linear_pte_xor), %g7 + ldx [%g7 + %lo(kern_linear_pte_xor)], %g2 + ba,pt %xcc, kvmap_dtlb_tsb4m_load + xor %g2, %g4, %g5 + .align 32 kvmap_dtlb_tsb4m_load: TSB_LOCK_TAG(%g1, %g2, %g7) @@ -146,105 +144,17 @@ /* Correct TAG_TARGET is already in %g6, check 4mb TSB. */ KERN_TSB4M_LOOKUP_TL1(%g6, %g5, %g1, %g2, %g3, kvmap_dtlb_load) #endif - /* TSB entry address left in %g1, lookup linear PTE. - * Must preserve %g1 and %g6 (TAG). - */ -kvmap_dtlb_tsb4m_miss: - /* Clear the PAGE_OFFSET top virtual bits, shift - * down to get PFN, and make sure PFN is in range. - */ -661: sllx %g4, 0, %g5 - .section .page_offset_shift_patch, "ax" - .word 661b - .previous - - /* Check to see if we know about valid memory at the 4MB - * chunk this physical address will reside within. + /* Linear mapping TSB lookup failed. Fallthrough to kernel + * page table based lookup. */ -661: srlx %g5, MAX_PHYS_ADDRESS_BITS, %g2 - .section .page_offset_shift_patch, "ax" - .word 661b - .previous - - brnz,pn %g2, kvmap_dtlb_longpath - nop - - /* This unconditional branch and delay-slot nop gets patched - * by the sethi sequence once the bitmap is properly setup. - */ - .globl valid_addr_bitmap_insn -valid_addr_bitmap_insn: - ba,pt %xcc, 2f - nop - .subsection 2 - .globl valid_addr_bitmap_patch -valid_addr_bitmap_patch: - sethi %hi(sparc64_valid_addr_bitmap), %g7 - or %g7, %lo(sparc64_valid_addr_bitmap), %g7 - .previous - -661: srlx %g5, ILOG2_4MB, %g2 - .section .page_offset_shift_patch, "ax" - .word 661b - .previous - - srlx %g2, 6, %g5 - and %g2, 63, %g2 - sllx %g5, 3, %g5 - ldx [%g7 + %g5], %g5 - mov 1, %g7 - sllx %g7, %g2, %g7 - andcc %g5, %g7, %g0 - be,pn %xcc, kvmap_dtlb_longpath - -2: sethi %hi(kpte_linear_bitmap), %g2 - - /* Get the 256MB physical address index. */ -661: sllx %g4, 0, %g5 - .section .page_offset_shift_patch, "ax" - .word 661b - .previous - - or %g2, %lo(kpte_linear_bitmap), %g2 - -661: srlx %g5, ILOG2_256MB, %g5 - .section .page_offset_shift_patch, "ax" - .word 661b - .previous - - and %g5, (32 - 1), %g7 - - /* Divide by 32 to get the offset into the bitmask. */ - srlx %g5, 5, %g5 - add %g7, %g7, %g7 - sllx %g5, 3, %g5 - - /* kern_linear_pte_xor[(mask >> shift) & 3)] */ - ldx [%g2 + %g5], %g2 - srlx %g2, %g7, %g7 - sethi %hi(kern_linear_pte_xor), %g5 - and %g7, 3, %g7 - or %g5, %lo(kern_linear_pte_xor), %g5 - sllx %g7, 3, %g7 - ldx [%g5 + %g7], %g2 - .globl kvmap_linear_patch kvmap_linear_patch: - ba,pt %xcc, kvmap_dtlb_tsb4m_load - xor %g2, %g4, %g5 + ba,a,pt %xcc, kvmap_linear_early kvmap_dtlb_vmalloc_addr: KERN_PGTABLE_WALK(%g4, %g5, %g2, kvmap_dtlb_longpath) TSB_LOCK_TAG(%g1, %g2, %g7) - - /* Load and check PTE. */ - ldxa [%g5] ASI_PHYS_USE_EC, %g5 - mov 1, %g7 - sllx %g7, TSB_TAG_INVALID_BIT, %g7 - brgez,a,pn %g5, kvmap_dtlb_longpath - TSB_STORE(%g1, %g7) - TSB_WRITE(%g1, %g5, %g6) /* fallthrough to TLB load */ @@ -276,13 +186,8 @@ #ifdef CONFIG_SPARSEMEM_VMEMMAP kvmap_vmemmap: - sub %g4, %g5, %g5 - srlx %g5, 22, %g5 - sethi %hi(vmemmap_table), %g1 - sllx %g5, 3, %g5 - or %g1, %lo(vmemmap_table), %g1 - ba,pt %xcc, kvmap_dtlb_load - ldx [%g1 + %g5], %g5 + KERN_PGTABLE_WALK(%g4, %g5, %g2, kvmap_dtlb_longpath) + ba,a,pt %xcc, kvmap_dtlb_load #endif kvmap_dtlb_nonlinear: @@ -294,8 +199,8 @@ #ifdef CONFIG_SPARSEMEM_VMEMMAP /* Do not use the TSB for vmemmap. */ - mov (VMEMMAP_BASE >> 40), %g5 - sllx %g5, 40, %g5 + sethi %hi(VMEMMAP_BASE), %g5 + ldx [%g5 + %lo(VMEMMAP_BASE)], %g5 cmp %g4,%g5 bgeu,pn %xcc, kvmap_vmemmap nop @@ -307,8 +212,8 @@ sethi %hi(MODULES_VADDR), %g5 cmp %g4, %g5 blu,pn %xcc, kvmap_dtlb_longpath - mov (VMALLOC_END >> 40), %g5 - sllx %g5, 40, %g5 + sethi %hi(VMALLOC_END), %g5 + ldx [%g5 + %lo(VMALLOC_END)], %g5 cmp %g4, %g5 bgeu,pn %xcc, kvmap_dtlb_longpath nop --- linux-3.13.0.orig/arch/sparc/kernel/ldc.c +++ linux-3.13.0/arch/sparc/kernel/ldc.c @@ -1078,7 +1078,8 @@ struct ldc_channel *ldc_alloc(unsigned long id, const struct ldc_channel_config *cfgp, - void *event_arg) + void *event_arg, + const char *name) { struct ldc_channel *lp; const struct ldc_mode_ops *mops; @@ -1093,6 +1094,8 @@ err = -EINVAL; if (!cfgp) goto out_err; + if (!name) + goto out_err; switch (cfgp->mode) { case LDC_MODE_RAW: @@ -1185,6 +1188,21 @@ INIT_HLIST_HEAD(&lp->mh_list); + snprintf(lp->rx_irq_name, LDC_IRQ_NAME_MAX, "%s RX", name); + snprintf(lp->tx_irq_name, LDC_IRQ_NAME_MAX, "%s TX", name); + + err = request_irq(lp->cfg.rx_irq, ldc_rx, 0, + lp->rx_irq_name, lp); + if (err) + goto out_free_txq; + + err = request_irq(lp->cfg.tx_irq, ldc_tx, 0, + lp->tx_irq_name, lp); + if (err) { + free_irq(lp->cfg.rx_irq, lp); + goto out_free_txq; + } + return lp; out_free_txq: @@ -1237,31 +1255,14 @@ * state. This does not initiate a handshake, ldc_connect() does * that. */ -int ldc_bind(struct ldc_channel *lp, const char *name) +int ldc_bind(struct ldc_channel *lp) { unsigned long hv_err, flags; int err = -EINVAL; - if (!name || - (lp->state != LDC_STATE_INIT)) + if (lp->state != LDC_STATE_INIT) return -EINVAL; - snprintf(lp->rx_irq_name, LDC_IRQ_NAME_MAX, "%s RX", name); - snprintf(lp->tx_irq_name, LDC_IRQ_NAME_MAX, "%s TX", name); - - err = request_irq(lp->cfg.rx_irq, ldc_rx, 0, - lp->rx_irq_name, lp); - if (err) - return err; - - err = request_irq(lp->cfg.tx_irq, ldc_tx, 0, - lp->tx_irq_name, lp); - if (err) { - free_irq(lp->cfg.rx_irq, lp); - return err; - } - - spin_lock_irqsave(&lp->lock, flags); enable_irq(lp->cfg.rx_irq); @@ -1336,7 +1337,7 @@ if (!(lp->flags & LDC_FLAG_ALLOCED_QUEUES) || !(lp->flags & LDC_FLAG_REGISTERED_QUEUES) || lp->hs_state != LDC_HS_OPEN) - err = -EINVAL; + err = ((lp->hs_state > LDC_HS_OPEN) ? 0 : -EINVAL); else err = start_handshake(lp); @@ -2306,7 +2307,7 @@ if (len & (8UL - 1)) return ERR_PTR(-EINVAL); - buf = kzalloc(len, GFP_KERNEL); + buf = kzalloc(len, GFP_ATOMIC); if (!buf) return ERR_PTR(-ENOMEM); --- linux-3.13.0.orig/arch/sparc/kernel/nmi.c +++ linux-3.13.0/arch/sparc/kernel/nmi.c @@ -141,7 +141,6 @@ static __init void nmi_cpu_busy(void *data) { - local_irq_enable_in_hardirq(); while (endflag == 0) mb(); } --- linux-3.13.0.orig/arch/sparc/kernel/pci_schizo.c +++ linux-3.13.0/arch/sparc/kernel/pci_schizo.c @@ -581,7 +581,7 @@ { unsigned long csr_reg, csr, csr_error_bits; irqreturn_t ret = IRQ_NONE; - u16 stat; + u32 stat; csr_reg = pbm->pbm_regs + SCHIZO_PCI_CTRL; csr = upa_readq(csr_reg); @@ -617,7 +617,7 @@ pbm->name); ret = IRQ_HANDLED; } - pci_read_config_word(pbm->pci_bus->self, PCI_STATUS, &stat); + pbm->pci_ops->read(pbm->pci_bus, 0, PCI_STATUS, 2, &stat); if (stat & (PCI_STATUS_PARITY | PCI_STATUS_SIG_TARGET_ABORT | PCI_STATUS_REC_TARGET_ABORT | @@ -625,7 +625,7 @@ PCI_STATUS_SIG_SYSTEM_ERROR)) { printk("%s: PCI bus error, PCI_STATUS[%04x]\n", pbm->name, stat); - pci_write_config_word(pbm->pci_bus->self, PCI_STATUS, 0xffff); + pbm->pci_ops->write(pbm->pci_bus, 0, PCI_STATUS, 2, 0xffff); ret = IRQ_HANDLED; } return ret; --- linux-3.13.0.orig/arch/sparc/kernel/pcr.c +++ linux-3.13.0/arch/sparc/kernel/pcr.c @@ -191,12 +191,41 @@ .pcr_nmi_disable = PCR_N4_PICNPT, }; +static u64 n5_pcr_read(unsigned long reg_num) +{ + unsigned long val; + + (void) sun4v_t5_get_perfreg(reg_num, &val); + + return val; +} + +static void n5_pcr_write(unsigned long reg_num, u64 val) +{ + (void) sun4v_t5_set_perfreg(reg_num, val); +} + +static const struct pcr_ops n5_pcr_ops = { + .read_pcr = n5_pcr_read, + .write_pcr = n5_pcr_write, + .read_pic = n4_pic_read, + .write_pic = n4_pic_write, + .nmi_picl_value = n4_picl_value, + .pcr_nmi_enable = (PCR_N4_PICNPT | PCR_N4_STRACE | + PCR_N4_UTRACE | PCR_N4_TOE | + (26 << PCR_N4_SL_SHIFT)), + .pcr_nmi_disable = PCR_N4_PICNPT, +}; + + static unsigned long perf_hsvc_group; static unsigned long perf_hsvc_major; static unsigned long perf_hsvc_minor; static int __init register_perf_hsvc(void) { + unsigned long hverror; + if (tlb_type == hypervisor) { switch (sun4v_chip_type) { case SUN4V_CHIP_NIAGARA1: @@ -215,6 +244,10 @@ perf_hsvc_group = HV_GRP_VT_CPU; break; + case SUN4V_CHIP_NIAGARA5: + perf_hsvc_group = HV_GRP_T5_CPU; + break; + default: return -ENODEV; } @@ -222,10 +255,12 @@ perf_hsvc_major = 1; perf_hsvc_minor = 0; - if (sun4v_hvapi_register(perf_hsvc_group, - perf_hsvc_major, - &perf_hsvc_minor)) { - printk("perfmon: Could not register hvapi.\n"); + hverror = sun4v_hvapi_register(perf_hsvc_group, + perf_hsvc_major, + &perf_hsvc_minor); + if (hverror) { + pr_err("perfmon: Could not register hvapi(0x%lx).\n", + hverror); return -ENODEV; } } @@ -254,6 +289,10 @@ pcr_ops = &n4_pcr_ops; break; + case SUN4V_CHIP_NIAGARA5: + pcr_ops = &n5_pcr_ops; + break; + default: ret = -ENODEV; break; --- linux-3.13.0.orig/arch/sparc/kernel/perf_event.c +++ linux-3.13.0/arch/sparc/kernel/perf_event.c @@ -960,6 +960,8 @@ cpuc->pcr[0] |= cpuc->event[0]->hw.config_base; } +static void sparc_pmu_start(struct perf_event *event, int flags); + /* On this PMU each PIC has it's own PCR control register. */ static void calculate_multiple_pcrs(struct cpu_hw_events *cpuc) { @@ -972,20 +974,13 @@ struct perf_event *cp = cpuc->event[i]; struct hw_perf_event *hwc = &cp->hw; int idx = hwc->idx; - u64 enc; if (cpuc->current_idx[i] != PIC_NO_INDEX) continue; - sparc_perf_event_set_period(cp, hwc, idx); cpuc->current_idx[i] = idx; - enc = perf_event_get_enc(cpuc->events[i]); - cpuc->pcr[idx] &= ~mask_for_index(idx); - if (hwc->state & PERF_HES_STOPPED) - cpuc->pcr[idx] |= nop_for_index(idx); - else - cpuc->pcr[idx] |= event_encoding(enc, idx); + sparc_pmu_start(cp, PERF_EF_RELOAD); } out: for (i = 0; i < cpuc->n_events; i++) { @@ -1101,7 +1096,6 @@ int i; local_irq_save(flags); - perf_pmu_disable(event->pmu); for (i = 0; i < cpuc->n_events; i++) { if (event == cpuc->event[i]) { @@ -1127,7 +1121,6 @@ } } - perf_pmu_enable(event->pmu); local_irq_restore(flags); } @@ -1361,7 +1354,6 @@ unsigned long flags; local_irq_save(flags); - perf_pmu_disable(event->pmu); n0 = cpuc->n_events; if (n0 >= sparc_pmu->max_hw_events) @@ -1394,7 +1386,6 @@ ret = 0; out: - perf_pmu_enable(event->pmu); local_irq_restore(flags); return ret; } @@ -1662,7 +1653,8 @@ sparc_pmu = &niagara2_pmu; return true; } - if (!strcmp(sparc_pmu_type, "niagara4")) { + if (!strcmp(sparc_pmu_type, "niagara4") || + !strcmp(sparc_pmu_type, "niagara5")) { sparc_pmu = &niagara4_pmu; return true; } @@ -1671,9 +1663,12 @@ int __init init_hw_perf_events(void) { + int err; + pr_info("Performance events: "); - if (!supported_pmu()) { + err = pcr_arch_init(); + if (err || !supported_pmu()) { pr_cont("No support for PMU type '%s'\n", sparc_pmu_type); return 0; } @@ -1685,7 +1680,7 @@ return 0; } -early_initcall(init_hw_perf_events); +pure_initcall(init_hw_perf_events); void perf_callchain_kernel(struct perf_callchain_entry *entry, struct pt_regs *regs) --- linux-3.13.0.orig/arch/sparc/kernel/process_64.c +++ linux-3.13.0/arch/sparc/kernel/process_64.c @@ -58,9 +58,12 @@ { if (tlb_type != hypervisor) { touch_nmi_watchdog(); + local_irq_enable(); } else { unsigned long pstate; + local_irq_enable(); + /* The sun4v sleeping code requires that we have PSTATE.IE cleared over * the cpu sleep hypervisor call. */ @@ -82,7 +85,6 @@ : "=&r" (pstate) : "i" (PSTATE_IE)); } - local_irq_enable(); } #ifdef CONFIG_HOTPLUG_CPU @@ -279,6 +281,8 @@ printk(" TPC[%lx] O7[%lx] I7[%lx] RPC[%lx]\n", gp->tpc, gp->o7, gp->i7, gp->rpc); } + + touch_nmi_watchdog(); } memset(global_cpu_snapshot, 0, sizeof(global_cpu_snapshot)); @@ -304,6 +308,9 @@ struct global_pmu_snapshot *pp; int i, num; + if (!pcr_ops) + return; + pp = &global_cpu_snapshot[this_cpu].pmu; num = 1; @@ -351,6 +358,8 @@ (cpu == this_cpu ? '*' : ' '), cpu, pp->pcr[0], pp->pcr[1], pp->pcr[2], pp->pcr[3], pp->pic[0], pp->pic[1], pp->pic[2], pp->pic[3]); + + touch_nmi_watchdog(); } memset(global_cpu_snapshot, 0, sizeof(global_cpu_snapshot)); --- linux-3.13.0.orig/arch/sparc/kernel/setup_64.c +++ linux-3.13.0/arch/sparc/kernel/setup_64.c @@ -30,6 +30,7 @@ #include #include #include +#include #include #include @@ -174,7 +175,7 @@ static struct pt_regs fake_swapper_regs = { { 0, }, 0, 0, 0, 0 }; -void __init per_cpu_patch(void) +static void __init per_cpu_patch(void) { struct cpuid_patch_entry *p; unsigned long ver; @@ -266,7 +267,7 @@ } } -void __init sun4v_patch(void) +static void __init sun4v_patch(void) { extern void sun4v_hvapi_init(void); @@ -335,14 +336,25 @@ } } -#ifdef CONFIG_SMP -void __init boot_cpu_id_too_large(int cpu) +void __init start_early_boot(void) { - prom_printf("Serious problem, boot cpu id (%d) >= NR_CPUS (%d)\n", - cpu, NR_CPUS); - prom_halt(); + int cpu; + + check_if_starfire(); + per_cpu_patch(); + sun4v_patch(); + + cpu = hard_smp_processor_id(); + if (cpu >= NR_CPUS) { + prom_printf("Serious problem, boot cpu id (%d) >= NR_CPUS (%d)\n", + cpu, NR_CPUS); + prom_halt(); + } + current_thread_info()->cpu = cpu; + + prom_init_report(); + start_kernel(); } -#endif /* On Ultra, we support all of the v8 capabilities. */ unsigned long sparc64_elf_hwcap = (HWCAP_SPARC_FLUSH | HWCAP_SPARC_STBAR | @@ -500,12 +512,16 @@ sun4v_chip_type == SUN4V_CHIP_NIAGARA3 || sun4v_chip_type == SUN4V_CHIP_NIAGARA4 || sun4v_chip_type == SUN4V_CHIP_NIAGARA5 || + sun4v_chip_type == SUN4V_CHIP_SPARC_M6 || + sun4v_chip_type == SUN4V_CHIP_SPARC_M7 || sun4v_chip_type == SUN4V_CHIP_SPARC64X) cap |= HWCAP_SPARC_BLKINIT; if (sun4v_chip_type == SUN4V_CHIP_NIAGARA2 || sun4v_chip_type == SUN4V_CHIP_NIAGARA3 || sun4v_chip_type == SUN4V_CHIP_NIAGARA4 || sun4v_chip_type == SUN4V_CHIP_NIAGARA5 || + sun4v_chip_type == SUN4V_CHIP_SPARC_M6 || + sun4v_chip_type == SUN4V_CHIP_SPARC_M7 || sun4v_chip_type == SUN4V_CHIP_SPARC64X) cap |= HWCAP_SPARC_N2; } @@ -533,6 +549,8 @@ sun4v_chip_type == SUN4V_CHIP_NIAGARA3 || sun4v_chip_type == SUN4V_CHIP_NIAGARA4 || sun4v_chip_type == SUN4V_CHIP_NIAGARA5 || + sun4v_chip_type == SUN4V_CHIP_SPARC_M6 || + sun4v_chip_type == SUN4V_CHIP_SPARC_M7 || sun4v_chip_type == SUN4V_CHIP_SPARC64X) cap |= (AV_SPARC_VIS | AV_SPARC_VIS2 | AV_SPARC_ASI_BLK_INIT | @@ -540,6 +558,8 @@ if (sun4v_chip_type == SUN4V_CHIP_NIAGARA3 || sun4v_chip_type == SUN4V_CHIP_NIAGARA4 || sun4v_chip_type == SUN4V_CHIP_NIAGARA5 || + sun4v_chip_type == SUN4V_CHIP_SPARC_M6 || + sun4v_chip_type == SUN4V_CHIP_SPARC_M7 || sun4v_chip_type == SUN4V_CHIP_SPARC64X) cap |= (AV_SPARC_VIS3 | AV_SPARC_HPC | AV_SPARC_FMAF); --- linux-3.13.0.orig/arch/sparc/kernel/smp_64.c +++ linux-3.13.0/arch/sparc/kernel/smp_64.c @@ -151,7 +151,7 @@ #define NUM_ROUNDS 64 /* magic value */ #define NUM_ITERS 5 /* likewise */ -static DEFINE_SPINLOCK(itc_sync_lock); +static DEFINE_RAW_SPINLOCK(itc_sync_lock); static unsigned long go[SLAVE + 1]; #define DEBUG_TICK_SYNC 0 @@ -259,7 +259,7 @@ go[MASTER] = 0; membar_safe("#StoreLoad"); - spin_lock_irqsave(&itc_sync_lock, flags); + raw_spin_lock_irqsave(&itc_sync_lock, flags); { for (i = 0; i < NUM_ROUNDS*NUM_ITERS; i++) { while (!go[MASTER]) @@ -270,7 +270,7 @@ membar_safe("#StoreLoad"); } } - spin_unlock_irqrestore(&itc_sync_lock, flags); + raw_spin_unlock_irqrestore(&itc_sync_lock, flags); } #if defined(CONFIG_SUN_LDOMS) && defined(CONFIG_HOTPLUG_CPU) @@ -823,13 +823,17 @@ void __irq_entry smp_call_function_client(int irq, struct pt_regs *regs) { clear_softint(1 << irq); + irq_enter(); generic_smp_call_function_interrupt(); + irq_exit(); } void __irq_entry smp_call_function_single_client(int irq, struct pt_regs *regs) { clear_softint(1 << irq); + irq_enter(); generic_smp_call_function_single_interrupt(); + irq_exit(); } static void tsb_sync(void *info) @@ -1395,7 +1399,6 @@ void __init smp_cpus_done(unsigned int max_cpus) { - pcr_arch_init(); } void smp_send_reschedule(int cpu) @@ -1480,6 +1483,13 @@ pud_t *pud; pmd_t *pmd; + if (pgd_none(*pgd)) { + pud_t *new; + + new = __alloc_bootmem(PAGE_SIZE, PAGE_SIZE, PAGE_SIZE); + pgd_populate(&init_mm, pgd, new); + } + pud = pud_offset(pgd, addr); if (pud_none(*pud)) { pmd_t *new; --- linux-3.13.0.orig/arch/sparc/kernel/sun4v_tlb_miss.S +++ linux-3.13.0/arch/sparc/kernel/sun4v_tlb_miss.S @@ -195,6 +195,11 @@ ldx [%g2 + TRAP_PER_CPU_PGD_PADDR], %g7 sun4v_itlb_error: + rdpr %tl, %g1 + cmp %g1, 1 + ble,pt %icc, sun4v_bad_ra + or %g0, FAULT_CODE_BAD_RA | FAULT_CODE_ITLB, %g1 + sethi %hi(sun4v_err_itlb_vaddr), %g1 stx %g4, [%g1 + %lo(sun4v_err_itlb_vaddr)] sethi %hi(sun4v_err_itlb_ctx), %g1 @@ -206,15 +211,10 @@ sethi %hi(sun4v_err_itlb_error), %g1 stx %o0, [%g1 + %lo(sun4v_err_itlb_error)] + sethi %hi(1f), %g7 rdpr %tl, %g4 - cmp %g4, 1 - ble,pt %icc, 1f - sethi %hi(2f), %g7 ba,pt %xcc, etraptl1 - or %g7, %lo(2f), %g7 - -1: ba,pt %xcc, etrap -2: or %g7, %lo(2b), %g7 +1: or %g7, %lo(1f), %g7 mov %l4, %o1 call sun4v_itlb_error_report add %sp, PTREGS_OFF, %o0 @@ -222,6 +222,11 @@ /* NOTREACHED */ sun4v_dtlb_error: + rdpr %tl, %g1 + cmp %g1, 1 + ble,pt %icc, sun4v_bad_ra + or %g0, FAULT_CODE_BAD_RA | FAULT_CODE_DTLB, %g1 + sethi %hi(sun4v_err_dtlb_vaddr), %g1 stx %g4, [%g1 + %lo(sun4v_err_dtlb_vaddr)] sethi %hi(sun4v_err_dtlb_ctx), %g1 @@ -233,21 +238,23 @@ sethi %hi(sun4v_err_dtlb_error), %g1 stx %o0, [%g1 + %lo(sun4v_err_dtlb_error)] + sethi %hi(1f), %g7 rdpr %tl, %g4 - cmp %g4, 1 - ble,pt %icc, 1f - sethi %hi(2f), %g7 ba,pt %xcc, etraptl1 - or %g7, %lo(2f), %g7 - -1: ba,pt %xcc, etrap -2: or %g7, %lo(2b), %g7 +1: or %g7, %lo(1f), %g7 mov %l4, %o1 call sun4v_dtlb_error_report add %sp, PTREGS_OFF, %o0 /* NOTREACHED */ +sun4v_bad_ra: + or %g0, %g4, %g5 + ba,pt %xcc, sparc64_realfault_common + or %g1, %g0, %g4 + + /* NOTREACHED */ + /* Instruction Access Exception, tl0. */ sun4v_iacc: ldxa [%g0] ASI_SCRATCHPAD, %g2 --- linux-3.13.0.orig/arch/sparc/kernel/sys32.S +++ linux-3.13.0/arch/sparc/kernel/sys32.S @@ -44,7 +44,7 @@ SIGN1(sys32_io_submit, compat_sys_io_submit, %o1) SIGN1(sys32_mq_open, compat_sys_mq_open, %o1) SIGN1(sys32_select, compat_sys_select, %o0) -SIGN3(sys32_futex, compat_sys_futex, %o1, %o2, %o5) +SIGN1(sys32_futex, compat_sys_futex, %o1) SIGN1(sys32_recvfrom, compat_sys_recvfrom, %o0) SIGN1(sys32_recvmsg, compat_sys_recvmsg, %o0) SIGN1(sys32_sendmsg, compat_sys_sendmsg, %o0) --- linux-3.13.0.orig/arch/sparc/kernel/sys_sparc_64.c +++ linux-3.13.0/arch/sparc/kernel/sys_sparc_64.c @@ -332,7 +332,7 @@ long err; /* No need for backward compatibility. We can start fresh... */ - if (call <= SEMCTL) { + if (call <= SEMTIMEDOP) { switch (call) { case SEMOP: err = sys_semtimedop(first, ptr, @@ -412,7 +412,7 @@ SYSCALL_DEFINE1(sparc64_personality, unsigned long, personality) { - int ret; + long ret; if (personality(current->personality) == PER_LINUX32 && personality(personality) == PER_LINUX) --- linux-3.13.0.orig/arch/sparc/kernel/syscalls.S +++ linux-3.13.0/arch/sparc/kernel/syscalls.S @@ -189,7 +189,8 @@ mov %i0, %l5 ! IEU1 5: call %l7 ! CTI Group brk forced srl %i5, 0, %o5 ! IEU1 - ba,a,pt %xcc, 3f + ba,pt %xcc, 3f + sra %o0, 0, %o0 /* Linux native system calls enter here... */ .align 32 @@ -217,7 +218,6 @@ 3: stx %o0, [%sp + PTREGS_OFF + PT_V9_I0] ret_sys_call: ldx [%sp + PTREGS_OFF + PT_V9_TSTATE], %g3 - sra %o0, 0, %o0 mov %ulo(TSTATE_XCARRY | TSTATE_ICARRY), %g2 sllx %g2, 32, %g2 --- linux-3.13.0.orig/arch/sparc/kernel/trampoline_64.S +++ linux-3.13.0/arch/sparc/kernel/trampoline_64.S @@ -110,10 +110,13 @@ brnz,pn %g1, 1b nop - sethi %hi(p1275buf), %g2 - or %g2, %lo(p1275buf), %g2 - ldx [%g2 + 0x10], %l2 - add %l2, -(192 + 128), %sp + /* Get onto temporary stack which will be in the locked + * kernel image. + */ + sethi %hi(tramp_stack), %g1 + or %g1, %lo(tramp_stack), %g1 + add %g1, TRAMP_STACK_SIZE, %g1 + sub %g1, STACKFRAME_SZ + STACK_BIAS + 256, %sp flushw /* Setup the loop variables: @@ -395,7 +398,6 @@ sllx %g5, THREAD_SHIFT, %g5 sub %g5, (STACKFRAME_SZ + STACK_BIAS), %g5 add %g6, %g5, %sp - mov 0, %fp rdpr %pstate, %o1 or %o1, PSTATE_IE, %o1 --- linux-3.13.0.orig/arch/sparc/kernel/traps_64.c +++ linux-3.13.0/arch/sparc/kernel/traps_64.c @@ -2102,6 +2102,11 @@ atomic_inc(&sun4v_nonresum_oflow_cnt); } +static void sun4v_tlb_error(struct pt_regs *regs) +{ + die_if_kernel("TLB/TSB error", regs); +} + unsigned long sun4v_err_itlb_vaddr; unsigned long sun4v_err_itlb_ctx; unsigned long sun4v_err_itlb_pte; @@ -2109,8 +2114,7 @@ void sun4v_itlb_error_report(struct pt_regs *regs, int tl) { - if (tl > 1) - dump_tl1_traplog((struct tl1_traplog *)(regs + 1)); + dump_tl1_traplog((struct tl1_traplog *)(regs + 1)); printk(KERN_EMERG "SUN4V-ITLB: Error at TPC[%lx], tl %d\n", regs->tpc, tl); @@ -2123,7 +2127,7 @@ sun4v_err_itlb_vaddr, sun4v_err_itlb_ctx, sun4v_err_itlb_pte, sun4v_err_itlb_error); - prom_halt(); + sun4v_tlb_error(regs); } unsigned long sun4v_err_dtlb_vaddr; @@ -2133,8 +2137,7 @@ void sun4v_dtlb_error_report(struct pt_regs *regs, int tl) { - if (tl > 1) - dump_tl1_traplog((struct tl1_traplog *)(regs + 1)); + dump_tl1_traplog((struct tl1_traplog *)(regs + 1)); printk(KERN_EMERG "SUN4V-DTLB: Error at TPC[%lx], tl %d\n", regs->tpc, tl); @@ -2147,7 +2150,7 @@ sun4v_err_dtlb_vaddr, sun4v_err_dtlb_ctx, sun4v_err_dtlb_pte, sun4v_err_dtlb_error); - prom_halt(); + sun4v_tlb_error(regs); } void hypervisor_tlbop_error(unsigned long err, unsigned long op) --- linux-3.13.0.orig/arch/sparc/kernel/tsb.S +++ linux-3.13.0/arch/sparc/kernel/tsb.S @@ -162,10 +162,10 @@ nop .previous - rdpr %tl, %g3 - cmp %g3, 1 + rdpr %tl, %g7 + cmp %g7, 1 bne,pn %xcc, winfix_trampoline - nop + mov %g3, %g4 ba,pt %xcc, etrap rd %pc, %g7 call hugetlb_setup --- linux-3.13.0.orig/arch/sparc/kernel/unaligned_64.c +++ linux-3.13.0/arch/sparc/kernel/unaligned_64.c @@ -166,17 +166,23 @@ unsigned long compute_effective_address(struct pt_regs *regs, unsigned int insn, unsigned int rd) { + int from_kernel = (regs->tstate & TSTATE_PRIV) != 0; unsigned int rs1 = (insn >> 14) & 0x1f; unsigned int rs2 = insn & 0x1f; - int from_kernel = (regs->tstate & TSTATE_PRIV) != 0; + unsigned long addr; if (insn & 0x2000) { maybe_flush_windows(rs1, 0, rd, from_kernel); - return (fetch_reg(rs1, regs) + sign_extend_imm13(insn)); + addr = (fetch_reg(rs1, regs) + sign_extend_imm13(insn)); } else { maybe_flush_windows(rs1, rs2, rd, from_kernel); - return (fetch_reg(rs1, regs) + fetch_reg(rs2, regs)); + addr = (fetch_reg(rs1, regs) + fetch_reg(rs2, regs)); } + + if (!from_kernel && test_thread_flag(TIF_32BIT)) + addr &= 0xffffffff; + + return addr; } /* This is just to make gcc think die_if_kernel does return... */ --- linux-3.13.0.orig/arch/sparc/kernel/viohs.c +++ linux-3.13.0/arch/sparc/kernel/viohs.c @@ -714,7 +714,7 @@ cfg.tx_irq = vio->vdev->tx_irq; cfg.rx_irq = vio->vdev->rx_irq; - lp = ldc_alloc(vio->vdev->channel_id, &cfg, event_arg); + lp = ldc_alloc(vio->vdev->channel_id, &cfg, event_arg, vio->name); if (IS_ERR(lp)) return PTR_ERR(lp); @@ -746,7 +746,7 @@ err = 0; if (state == LDC_STATE_INIT) { - err = ldc_bind(vio->lp, vio->name); + err = ldc_bind(vio->lp); if (err) printk(KERN_WARNING "%s: Port %lu bind failed, " "err=%d\n", --- linux-3.13.0.orig/arch/sparc/kernel/vmlinux.lds.S +++ linux-3.13.0/arch/sparc/kernel/vmlinux.lds.S @@ -35,8 +35,9 @@ SECTIONS { - /* swapper_low_pmd_dir is sparc64 only */ - swapper_low_pmd_dir = 0x0000000000402000; +#ifdef CONFIG_SPARC64 + swapper_pg_dir = 0x0000000000402000; +#endif . = INITIAL_ADDRESS; .text TEXTSTART : { @@ -122,11 +123,6 @@ *(.swapper_4m_tsb_phys_patch) __swapper_4m_tsb_phys_patch_end = .; } - .page_offset_shift_patch : { - __page_offset_shift_patch = .; - *(.page_offset_shift_patch) - __page_offset_shift_patch_end = .; - } .popc_3insn_patch : { __popc_3insn_patch = .; *(.popc_3insn_patch) --- linux-3.13.0.orig/arch/sparc/lib/NG2memcpy.S +++ linux-3.13.0/arch/sparc/lib/NG2memcpy.S @@ -236,6 +236,7 @@ */ VISEntryHalf + membar #Sync alignaddr %o1, %g0, %g0 add %o1, (64 - 1), %o4 --- linux-3.13.0.orig/arch/sparc/lib/NG4memcpy.S +++ linux-3.13.0/arch/sparc/lib/NG4memcpy.S @@ -41,6 +41,10 @@ #endif #endif +#if !defined(EX_LD) && !defined(EX_ST) +#define NON_USER_COPY +#endif + #ifndef EX_LD #define EX_LD(x) x #endif @@ -197,9 +201,13 @@ mov EX_RETVAL(%o3), %o0 .Llarge_src_unaligned: +#ifdef NON_USER_COPY + VISEntryHalfFast(.Lmedium_vis_entry_fail) +#else + VISEntryHalf +#endif andn %o2, 0x3f, %o4 sub %o2, %o4, %o2 - VISEntryHalf alignaddr %o1, %g0, %g1 add %o1, %o4, %o1 EX_LD(LOAD(ldd, %g1 + 0x00, %f0)) @@ -232,14 +240,21 @@ add %o0, 0x40, %o0 bne,pt %icc, 1b LOAD(prefetch, %g1 + 0x200, #n_reads_strong) +#ifdef NON_USER_COPY + VISExitHalfFast +#else VISExitHalf - +#endif brz,pn %o2, .Lexit cmp %o2, 19 ble,pn %icc, .Lsmall_unaligned nop ba,a,pt %icc, .Lmedium_unaligned +#ifdef NON_USER_COPY +.Lmedium_vis_entry_fail: + or %o0, %o1, %g2 +#endif .Lmedium: LOAD(prefetch, %o1 + 0x40, #n_reads_strong) andcc %g2, 0x7, %g0 --- linux-3.13.0.orig/arch/sparc/lib/VISsave.S +++ linux-3.13.0/arch/sparc/lib/VISsave.S @@ -44,9 +44,8 @@ stx %g3, [%g6 + TI_GSR] 2: add %g6, %g1, %g3 - cmp %o5, FPRS_DU - be,pn %icc, 6f - sll %g1, 3, %g1 + mov FPRS_DU | FPRS_DL | FPRS_FEF, %o5 + sll %g1, 3, %g1 stb %o5, [%g3 + TI_FPSAVED] rd %gsr, %g2 add %g6, %g1, %g3 @@ -80,65 +79,3 @@ .align 32 80: jmpl %g7 + %g0, %g0 nop - -6: ldub [%g3 + TI_FPSAVED], %o5 - or %o5, FPRS_DU, %o5 - add %g6, TI_FPREGS+0x80, %g2 - stb %o5, [%g3 + TI_FPSAVED] - - sll %g1, 5, %g1 - add %g6, TI_FPREGS+0xc0, %g3 - wr %g0, FPRS_FEF, %fprs - membar #Sync - stda %f32, [%g2 + %g1] ASI_BLK_P - stda %f48, [%g3 + %g1] ASI_BLK_P - membar #Sync - ba,pt %xcc, 80f - nop - - .align 32 -80: jmpl %g7 + %g0, %g0 - nop - - .align 32 -VISenterhalf: - ldub [%g6 + TI_FPDEPTH], %g1 - brnz,a,pn %g1, 1f - cmp %g1, 1 - stb %g0, [%g6 + TI_FPSAVED] - stx %fsr, [%g6 + TI_XFSR] - clr %o5 - jmpl %g7 + %g0, %g0 - wr %g0, FPRS_FEF, %fprs - -1: bne,pn %icc, 2f - srl %g1, 1, %g1 - ba,pt %xcc, vis1 - sub %g7, 8, %g7 -2: addcc %g6, %g1, %g3 - sll %g1, 3, %g1 - andn %o5, FPRS_DU, %g2 - stb %g2, [%g3 + TI_FPSAVED] - - rd %gsr, %g2 - add %g6, %g1, %g3 - stx %g2, [%g3 + TI_GSR] - add %g6, %g1, %g2 - stx %fsr, [%g2 + TI_XFSR] - sll %g1, 5, %g1 -3: andcc %o5, FPRS_DL, %g0 - be,pn %icc, 4f - add %g6, TI_FPREGS, %g2 - - add %g6, TI_FPREGS+0x40, %g3 - membar #Sync - stda %f0, [%g2 + %g1] ASI_BLK_P - stda %f16, [%g3 + %g1] ASI_BLK_P - membar #Sync - ba,pt %xcc, 4f - nop - - .align 32 -4: and %o5, FPRS_DU, %o5 - jmpl %g7 + %g0, %g0 - wr %o5, FPRS_FEF, %fprs --- linux-3.13.0.orig/arch/sparc/lib/atomic32.c +++ linux-3.13.0/arch/sparc/lib/atomic32.c @@ -40,6 +40,19 @@ } EXPORT_SYMBOL(__atomic_add_return); +int atomic_xchg(atomic_t *v, int new) +{ + int ret; + unsigned long flags; + + spin_lock_irqsave(ATOMIC_HASH(v), flags); + ret = v->counter; + v->counter = new; + spin_unlock_irqrestore(ATOMIC_HASH(v), flags); + return ret; +} +EXPORT_SYMBOL(atomic_xchg); + int atomic_cmpxchg(atomic_t *v, int old, int new) { int ret; @@ -132,3 +145,17 @@ return (unsigned long)prev; } EXPORT_SYMBOL(__cmpxchg_u32); + +unsigned long __xchg_u32(volatile u32 *ptr, u32 new) +{ + unsigned long flags; + u32 prev; + + spin_lock_irqsave(ATOMIC_HASH(ptr), flags); + prev = *ptr; + *ptr = new; + spin_unlock_irqrestore(ATOMIC_HASH(ptr), flags); + + return (unsigned long)prev; +} +EXPORT_SYMBOL(__xchg_u32); --- linux-3.13.0.orig/arch/sparc/lib/ksyms.c +++ linux-3.13.0/arch/sparc/lib/ksyms.c @@ -126,10 +126,6 @@ void VISenter(void); EXPORT_SYMBOL(VISenter); -/* CRYPTO code needs this */ -void VISenterhalf(void); -EXPORT_SYMBOL(VISenterhalf); - extern void xor_vis_2(unsigned long, unsigned long *, unsigned long *); extern void xor_vis_3(unsigned long, unsigned long *, unsigned long *, unsigned long *); --- linux-3.13.0.orig/arch/sparc/lib/memmove.S +++ linux-3.13.0/arch/sparc/lib/memmove.S @@ -8,9 +8,11 @@ .text ENTRY(memmove) /* o0=dst o1=src o2=len */ - mov %o0, %g1 + brz,pn %o2, 99f + mov %o0, %g1 + cmp %o0, %o1 - bleu,pt %xcc, memcpy + bleu,pt %xcc, 2f add %o1, %o2, %g7 cmp %g7, %o0 bleu,pt %xcc, memcpy @@ -24,7 +26,34 @@ stb %g7, [%o0] bne,pt %icc, 1b sub %o0, 1, %o0 - +99: retl mov %g1, %o0 + + /* We can't just call memcpy for these memmove cases. On some + * chips the memcpy uses cache initializing stores and when dst + * and src are close enough, those can clobber the source data + * before we've loaded it in. + */ +2: or %o0, %o1, %g7 + or %o2, %g7, %g7 + andcc %g7, 0x7, %g0 + bne,pn %xcc, 4f + nop + +3: ldx [%o1], %g7 + add %o1, 8, %o1 + subcc %o2, 8, %o2 + add %o0, 8, %o0 + bne,pt %icc, 3b + stx %g7, [%o0 - 0x8] + ba,a,pt %xcc, 99b + +4: ldub [%o1], %g7 + add %o1, 1, %o1 + subcc %o2, 1, %o2 + add %o0, 1, %o0 + bne,pt %icc, 4b + stb %g7, [%o0 - 0x1] + ba,a,pt %xcc, 99b ENDPROC(memmove) --- linux-3.13.0.orig/arch/sparc/lib/memset.S +++ linux-3.13.0/arch/sparc/lib/memset.S @@ -3,8 +3,9 @@ * Copyright (C) 1996,1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz) * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) * - * Returns 0, if ok, and number of bytes not yet set if exception - * occurs and we were called as clear_user. + * Calls to memset returns initial %o0. Calls to bzero returns 0, if ok, and + * number of bytes not yet set if exception occurs and we were called as + * clear_user. */ #include @@ -65,6 +66,8 @@ .globl __memset_start, __memset_end __memset_start: memset: + mov %o0, %g1 + mov 1, %g4 and %o1, 0xff, %g3 sll %g3, 8, %g2 or %g3, %g2, %g3 @@ -89,6 +92,7 @@ sub %o0, %o2, %o0 __bzero: + clr %g4 mov %g0, %g3 1: cmp %o1, 7 @@ -151,8 +155,8 @@ bne,a 8f EX(stb %g3, [%o0], and %o1, 1) 8: - retl - clr %o0 + b 0f + nop 7: be 13b orcc %o1, 0, %g0 @@ -164,6 +168,12 @@ bne 8b EX(stb %g3, [%o0 - 1], add %o1, 1) 0: + andcc %g4, 1, %g0 + be 5f + nop + retl + mov %g1, %o0 +5: retl clr %o0 __memset_end: --- linux-3.13.0.orig/arch/sparc/math-emu/math_32.c +++ linux-3.13.0/arch/sparc/math-emu/math_32.c @@ -499,7 +499,7 @@ case 0: fsr = *pfsr; if (IR == -1) IR = 2; /* fcc is always fcc0 */ - fsr &= ~0xc00; fsr |= (IR << 10); break; + fsr &= ~0xc00; fsr |= (IR << 10); *pfsr = fsr; break; case 1: rd->s = IR; break; --- linux-3.13.0.orig/arch/sparc/mm/fault_32.c +++ linux-3.13.0/arch/sparc/mm/fault_32.c @@ -252,6 +252,8 @@ if (unlikely(fault & VM_FAULT_ERROR)) { if (fault & VM_FAULT_OOM) goto out_of_memory; + else if (fault & VM_FAULT_SIGSEGV) + goto bad_area; else if (fault & VM_FAULT_SIGBUS) goto do_sigbus; BUG(); --- linux-3.13.0.orig/arch/sparc/mm/fault_64.c +++ linux-3.13.0/arch/sparc/mm/fault_64.c @@ -96,38 +96,51 @@ pte_t *ptep, pte; unsigned long pa; u32 insn = 0; - unsigned long pstate; - if (pgd_none(*pgdp)) - goto outret; + if (pgd_none(*pgdp) || unlikely(pgd_bad(*pgdp))) + goto out; pudp = pud_offset(pgdp, tpc); - if (pud_none(*pudp)) - goto outret; - pmdp = pmd_offset(pudp, tpc); - if (pmd_none(*pmdp)) - goto outret; - - /* This disables preemption for us as well. */ - __asm__ __volatile__("rdpr %%pstate, %0" : "=r" (pstate)); - __asm__ __volatile__("wrpr %0, %1, %%pstate" - : : "r" (pstate), "i" (PSTATE_IE)); - ptep = pte_offset_map(pmdp, tpc); - pte = *ptep; - if (!pte_present(pte)) + if (pud_none(*pudp) || unlikely(pud_bad(*pudp))) goto out; - pa = (pte_pfn(pte) << PAGE_SHIFT); - pa += (tpc & ~PAGE_MASK); + /* This disables preemption for us as well. */ + local_irq_disable(); - /* Use phys bypass so we don't pollute dtlb/dcache. */ - __asm__ __volatile__("lduwa [%1] %2, %0" - : "=r" (insn) - : "r" (pa), "i" (ASI_PHYS_USE_EC)); + pmdp = pmd_offset(pudp, tpc); + if (pmd_none(*pmdp) || unlikely(pmd_bad(*pmdp))) + goto out_irq_enable; +#ifdef CONFIG_TRANSPARENT_HUGEPAGE + if (pmd_trans_huge(*pmdp)) { + if (pmd_trans_splitting(*pmdp)) + goto out_irq_enable; + + pa = pmd_pfn(*pmdp) << PAGE_SHIFT; + pa += tpc & ~HPAGE_MASK; + + /* Use phys bypass so we don't pollute dtlb/dcache. */ + __asm__ __volatile__("lduwa [%1] %2, %0" + : "=r" (insn) + : "r" (pa), "i" (ASI_PHYS_USE_EC)); + } else +#endif + { + ptep = pte_offset_map(pmdp, tpc); + pte = *ptep; + if (pte_present(pte)) { + pa = (pte_pfn(pte) << PAGE_SHIFT); + pa += (tpc & ~PAGE_MASK); + + /* Use phys bypass so we don't pollute dtlb/dcache. */ + __asm__ __volatile__("lduwa [%1] %2, %0" + : "=r" (insn) + : "r" (pa), "i" (ASI_PHYS_USE_EC)); + } + pte_unmap(ptep); + } +out_irq_enable: + local_irq_enable(); out: - pte_unmap(ptep); - __asm__ __volatile__("wrpr %0, 0x0, %%pstate" : : "r" (pstate)); -outret: return insn; } @@ -153,7 +166,8 @@ } static void do_fault_siginfo(int code, int sig, struct pt_regs *regs, - unsigned int insn, int fault_code) + unsigned long fault_addr, unsigned int insn, + int fault_code) { unsigned long addr; siginfo_t info; @@ -161,10 +175,18 @@ info.si_code = code; info.si_signo = sig; info.si_errno = 0; - if (fault_code & FAULT_CODE_ITLB) + if (fault_code & FAULT_CODE_ITLB) { addr = regs->tpc; - else - addr = compute_effective_address(regs, insn, 0); + } else { + /* If we were able to probe the faulting instruction, use it + * to compute a precise fault address. Otherwise use the fault + * time provided address which may only have page granularity. + */ + if (insn) + addr = compute_effective_address(regs, insn, 0); + else + addr = fault_addr; + } info.si_addr = (void __user *) addr; info.si_trapno = 0; @@ -239,7 +261,7 @@ /* The si_code was set to make clear whether * this was a SEGV_MAPERR or SEGV_ACCERR fault. */ - do_fault_siginfo(si_code, SIGSEGV, regs, insn, fault_code); + do_fault_siginfo(si_code, SIGSEGV, regs, address, insn, fault_code); return; } @@ -259,18 +281,6 @@ show_regs(regs); } -static void noinline __kprobes bogus_32bit_fault_address(struct pt_regs *regs, - unsigned long addr) -{ - static int times; - - if (times++ < 10) - printk(KERN_ERR "FAULT[%s:%d]: 32-bit process " - "reports 64-bit fault address [%lx]\n", - current->comm, current->pid, addr); - show_regs(regs); -} - asmlinkage void __kprobes do_sparc64_fault(struct pt_regs *regs) { enum ctx_state prev_state = exception_enter(); @@ -300,10 +310,8 @@ goto intr_or_no_mm; } } - if (unlikely((address >> 32) != 0)) { - bogus_32bit_fault_address(regs, address); + if (unlikely((address >> 32) != 0)) goto intr_or_no_mm; - } } if (regs->tstate & TSTATE_PRIV) { @@ -340,6 +348,9 @@ down_read(&mm->mmap_sem); } + if (fault_code & FAULT_CODE_BAD_RA) + goto do_sigbus; + vma = find_vma(mm, address); if (!vma) goto bad_area; @@ -437,6 +448,8 @@ if (unlikely(fault & VM_FAULT_ERROR)) { if (fault & VM_FAULT_OOM) goto out_of_memory; + else if (fault & VM_FAULT_SIGSEGV) + goto bad_area; else if (fault & VM_FAULT_SIGBUS) goto do_sigbus; BUG(); @@ -525,7 +538,7 @@ * Send a sigbus, regardless of whether we were in kernel * or user mode. */ - do_fault_siginfo(BUS_ADRERR, SIGBUS, regs, insn, fault_code); + do_fault_siginfo(BUS_ADRERR, SIGBUS, regs, address, insn, fault_code); /* Kernel mode? Handle exceptions or die */ if (regs->tstate & TSTATE_PRIV) --- linux-3.13.0.orig/arch/sparc/mm/gup.c +++ linux-3.13.0/arch/sparc/mm/gup.c @@ -73,7 +73,7 @@ struct page *head, *page, *tail; int refs; - if (!pmd_large(pmd)) + if (!(pmd_val(pmd) & _PAGE_VALID)) return 0; if (write && !pmd_write(pmd)) @@ -160,6 +160,36 @@ return 1; } +int __get_user_pages_fast(unsigned long start, int nr_pages, int write, + struct page **pages) +{ + struct mm_struct *mm = current->mm; + unsigned long addr, len, end; + unsigned long next, flags; + pgd_t *pgdp; + int nr = 0; + + start &= PAGE_MASK; + addr = start; + len = (unsigned long) nr_pages << PAGE_SHIFT; + end = start + len; + + local_irq_save(flags); + pgdp = pgd_offset(mm, addr); + do { + pgd_t pgd = *pgdp; + + next = pgd_addr_end(addr, end); + if (pgd_none(pgd)) + break; + if (!gup_pud_range(pgd, addr, next, write, pages, &nr)) + break; + } while (pgdp++, addr = next, addr != end); + local_irq_restore(flags); + + return nr; +} + int get_user_pages_fast(unsigned long start, int nr_pages, int write, struct page **pages) { --- linux-3.13.0.orig/arch/sparc/mm/hugetlbpage.c +++ linux-3.13.0/arch/sparc/mm/hugetlbpage.c @@ -232,11 +232,6 @@ return 0; } -int pmd_huge_support(void) -{ - return 0; -} - struct page *follow_huge_pmd(struct mm_struct *mm, unsigned long address, pmd_t *pmd, int write) { --- linux-3.13.0.orig/arch/sparc/mm/init_64.c +++ linux-3.13.0/arch/sparc/mm/init_64.c @@ -73,7 +73,6 @@ * 'cpu' properties, but we need to have this table setup before the * MDESC is initialized. */ -unsigned long kpte_linear_bitmap[KPTE_BITMAP_BYTES / sizeof(unsigned long)]; #ifndef CONFIG_DEBUG_PAGEALLOC /* A special kernel TSB for 4MB, 256MB, 2GB and 16GB linear mappings. @@ -82,10 +81,11 @@ */ extern struct tsb swapper_4m_tsb[KERNEL_TSB4M_NENTRIES]; #endif +extern struct tsb swapper_tsb[KERNEL_TSB_NENTRIES]; static unsigned long cpu_pgsz_mask; -#define MAX_BANKS 32 +#define MAX_BANKS 1024 static struct linux_prom64_registers pavail[MAX_BANKS]; static int pavail_ents; @@ -163,10 +163,6 @@ cmp_p64, NULL); } -unsigned long sparc64_valid_addr_bitmap[VALID_ADDR_BITMAP_BYTES / - sizeof(unsigned long)]; -EXPORT_SYMBOL(sparc64_valid_addr_bitmap); - /* Kernel physical address base and size in bytes. */ unsigned long kern_base __read_mostly; unsigned long kern_size __read_mostly; @@ -350,6 +346,10 @@ mm = vma->vm_mm; + /* Don't insert a non-valid PTE into the TSB, we'll deadlock. */ + if (!pte_accessible(mm, pte)) + return; + spin_lock_irqsave(&mm->context.lock, flags); #if defined(CONFIG_HUGETLB_PAGE) || defined(CONFIG_TRANSPARENT_HUGEPAGE) @@ -588,7 +588,7 @@ int i, tlb_ent = sparc64_highest_locked_tlbent(); tte_vaddr = (unsigned long) KERNBASE; - phys_page = (prom_boot_mapping_phys_low >> 22UL) << 22UL; + phys_page = (prom_boot_mapping_phys_low >> ILOG2_4MB) << ILOG2_4MB; tte_data = kern_large_tte(phys_page); kern_locked_tte_data = tte_data; @@ -834,7 +834,10 @@ if ((addr & p->mask) == p->val) return i; } - return -1; + /* The following condition has been observed on LDOM guests.*/ + WARN_ONCE(1, "find_node: A physical address doesn't match a NUMA node" + " rule. Some physical memory will be owned by node 0."); + return 0; } static u64 memblock_nid_range(u64 start, u64 end, int *nid) @@ -1355,9 +1358,144 @@ static struct linux_prom64_registers pall[MAX_BANKS] __initdata; static int pall_ents __initdata; -#ifdef CONFIG_DEBUG_PAGEALLOC +static unsigned long max_phys_bits = 40; + +bool kern_addr_valid(unsigned long addr) +{ + pgd_t *pgd; + pud_t *pud; + pmd_t *pmd; + pte_t *pte; + + if ((long)addr < 0L) { + unsigned long pa = __pa(addr); + + if ((addr >> max_phys_bits) != 0UL) + return false; + + return pfn_valid(pa >> PAGE_SHIFT); + } + + if (addr >= (unsigned long) KERNBASE && + addr < (unsigned long)&_end) + return true; + + pgd = pgd_offset_k(addr); + if (pgd_none(*pgd)) + return 0; + + pud = pud_offset(pgd, addr); + if (pud_none(*pud)) + return 0; + + if (pud_large(*pud)) + return pfn_valid(pud_pfn(*pud)); + + pmd = pmd_offset(pud, addr); + if (pmd_none(*pmd)) + return 0; + + if (pmd_large(*pmd)) + return pfn_valid(pmd_pfn(*pmd)); + + pte = pte_offset_kernel(pmd, addr); + if (pte_none(*pte)) + return 0; + + return pfn_valid(pte_pfn(*pte)); +} +EXPORT_SYMBOL(kern_addr_valid); + +static unsigned long __ref kernel_map_hugepud(unsigned long vstart, + unsigned long vend, + pud_t *pud) +{ + const unsigned long mask16gb = (1UL << 34) - 1UL; + u64 pte_val = vstart; + + /* Each PUD is 8GB */ + if ((vstart & mask16gb) || + (vend - vstart <= mask16gb)) { + pte_val ^= kern_linear_pte_xor[2]; + pud_val(*pud) = pte_val | _PAGE_PUD_HUGE; + + return vstart + PUD_SIZE; + } + + pte_val ^= kern_linear_pte_xor[3]; + pte_val |= _PAGE_PUD_HUGE; + + vend = vstart + mask16gb + 1UL; + while (vstart < vend) { + pud_val(*pud) = pte_val; + + pte_val += PUD_SIZE; + vstart += PUD_SIZE; + pud++; + } + return vstart; +} + +static bool kernel_can_map_hugepud(unsigned long vstart, unsigned long vend, + bool guard) +{ + if (guard && !(vstart & ~PUD_MASK) && (vend - vstart) >= PUD_SIZE) + return true; + + return false; +} + +static unsigned long __ref kernel_map_hugepmd(unsigned long vstart, + unsigned long vend, + pmd_t *pmd) +{ + const unsigned long mask256mb = (1UL << 28) - 1UL; + const unsigned long mask2gb = (1UL << 31) - 1UL; + u64 pte_val = vstart; + + /* Each PMD is 8MB */ + if ((vstart & mask256mb) || + (vend - vstart <= mask256mb)) { + pte_val ^= kern_linear_pte_xor[0]; + pmd_val(*pmd) = pte_val | _PAGE_PMD_HUGE; + + return vstart + PMD_SIZE; + } + + if ((vstart & mask2gb) || + (vend - vstart <= mask2gb)) { + pte_val ^= kern_linear_pte_xor[1]; + pte_val |= _PAGE_PMD_HUGE; + vend = vstart + mask256mb + 1UL; + } else { + pte_val ^= kern_linear_pte_xor[2]; + pte_val |= _PAGE_PMD_HUGE; + vend = vstart + mask2gb + 1UL; + } + + while (vstart < vend) { + pmd_val(*pmd) = pte_val; + + pte_val += PMD_SIZE; + vstart += PMD_SIZE; + pmd++; + } + + return vstart; +} + +static bool kernel_can_map_hugepmd(unsigned long vstart, unsigned long vend, + bool guard) +{ + if (guard && !(vstart & ~PMD_MASK) && (vend - vstart) >= PMD_SIZE) + return true; + + return false; +} + static unsigned long __ref kernel_map_range(unsigned long pstart, - unsigned long pend, pgprot_t prot) + unsigned long pend, pgprot_t prot, + bool use_huge) { unsigned long vstart = PAGE_OFFSET + pstart; unsigned long vend = PAGE_OFFSET + pend; @@ -1376,19 +1514,34 @@ pmd_t *pmd; pte_t *pte; + if (pgd_none(*pgd)) { + pud_t *new; + + new = __alloc_bootmem(PAGE_SIZE, PAGE_SIZE, PAGE_SIZE); + alloc_bytes += PAGE_SIZE; + pgd_populate(&init_mm, pgd, new); + } pud = pud_offset(pgd, vstart); if (pud_none(*pud)) { pmd_t *new; + if (kernel_can_map_hugepud(vstart, vend, use_huge)) { + vstart = kernel_map_hugepud(vstart, vend, pud); + continue; + } new = __alloc_bootmem(PAGE_SIZE, PAGE_SIZE, PAGE_SIZE); alloc_bytes += PAGE_SIZE; pud_populate(&init_mm, pud, new); } pmd = pmd_offset(pud, vstart); - if (!pmd_present(*pmd)) { + if (pmd_none(*pmd)) { pte_t *new; + if (kernel_can_map_hugepmd(vstart, vend, use_huge)) { + vstart = kernel_map_hugepmd(vstart, vend, pmd); + continue; + } new = __alloc_bootmem(PAGE_SIZE, PAGE_SIZE, PAGE_SIZE); alloc_bytes += PAGE_SIZE; pmd_populate_kernel(&init_mm, pmd, new); @@ -1411,100 +1564,34 @@ return alloc_bytes; } -extern unsigned int kvmap_linear_patch[1]; -#endif /* CONFIG_DEBUG_PAGEALLOC */ - -static void __init kpte_set_val(unsigned long index, unsigned long val) -{ - unsigned long *ptr = kpte_linear_bitmap; - - val <<= ((index % (BITS_PER_LONG / 2)) * 2); - ptr += (index / (BITS_PER_LONG / 2)); - - *ptr |= val; -} - -static const unsigned long kpte_shift_min = 28; /* 256MB */ -static const unsigned long kpte_shift_max = 34; /* 16GB */ -static const unsigned long kpte_shift_incr = 3; - -static unsigned long kpte_mark_using_shift(unsigned long start, unsigned long end, - unsigned long shift) +static void __init flush_all_kernel_tsbs(void) { - unsigned long size = (1UL << shift); - unsigned long mask = (size - 1UL); - unsigned long remains = end - start; - unsigned long val; - - if (remains < size || (start & mask)) - return start; - - /* VAL maps: - * - * shift 28 --> kern_linear_pte_xor index 1 - * shift 31 --> kern_linear_pte_xor index 2 - * shift 34 --> kern_linear_pte_xor index 3 - */ - val = ((shift - kpte_shift_min) / kpte_shift_incr) + 1; - - remains &= ~mask; - if (shift != kpte_shift_max) - remains = size; - - while (remains) { - unsigned long index = start >> kpte_shift_min; + int i; - kpte_set_val(index, val); + for (i = 0; i < KERNEL_TSB_NENTRIES; i++) { + struct tsb *ent = &swapper_tsb[i]; - start += 1UL << kpte_shift_min; - remains -= 1UL << kpte_shift_min; + ent->tag = (1UL << TSB_TAG_INVALID_BIT); } +#ifndef CONFIG_DEBUG_PAGEALLOC + for (i = 0; i < KERNEL_TSB4M_NENTRIES; i++) { + struct tsb *ent = &swapper_4m_tsb[i]; - return start; -} - -static void __init mark_kpte_bitmap(unsigned long start, unsigned long end) -{ - unsigned long smallest_size, smallest_mask; - unsigned long s; - - smallest_size = (1UL << kpte_shift_min); - smallest_mask = (smallest_size - 1UL); - - while (start < end) { - unsigned long orig_start = start; - - for (s = kpte_shift_max; s >= kpte_shift_min; s -= kpte_shift_incr) { - start = kpte_mark_using_shift(start, end, s); - - if (start != orig_start) - break; - } - - if (start == orig_start) - start = (start + smallest_size) & ~smallest_mask; + ent->tag = (1UL << TSB_TAG_INVALID_BIT); } +#endif } -static void __init init_kpte_bitmap(void) -{ - unsigned long i; - - for (i = 0; i < pall_ents; i++) { - unsigned long phys_start, phys_end; - - phys_start = pall[i].phys_addr; - phys_end = phys_start + pall[i].reg_size; - - mark_kpte_bitmap(phys_start, phys_end); - } -} +extern unsigned int kvmap_linear_patch[1]; static void __init kernel_physical_mapping_init(void) { -#ifdef CONFIG_DEBUG_PAGEALLOC unsigned long i, mem_alloced = 0UL; + bool use_huge = true; +#ifdef CONFIG_DEBUG_PAGEALLOC + use_huge = false; +#endif for (i = 0; i < pall_ents; i++) { unsigned long phys_start, phys_end; @@ -1512,7 +1599,7 @@ phys_end = phys_start + pall[i].reg_size; mem_alloced += kernel_map_range(phys_start, phys_end, - PAGE_KERNEL); + PAGE_KERNEL, use_huge); } printk("Allocated %ld bytes for kernel page tables.\n", @@ -1521,8 +1608,9 @@ kvmap_linear_patch[0] = 0x01000000; /* nop */ flushi(&kvmap_linear_patch[0]); + flush_all_kernel_tsbs(); + __flush_tlb_all(); -#endif } #ifdef CONFIG_DEBUG_PAGEALLOC @@ -1532,7 +1620,7 @@ unsigned long phys_end = phys_start + (numpages * PAGE_SIZE); kernel_map_range(phys_start, phys_end, - (enable ? PAGE_KERNEL : __pgprot(0))); + (enable ? PAGE_KERNEL : __pgprot(0)), false); flush_tsb_kernel_range(PAGE_OFFSET + phys_start, PAGE_OFFSET + phys_end); @@ -1560,76 +1648,56 @@ unsigned long PAGE_OFFSET; EXPORT_SYMBOL(PAGE_OFFSET); -static void __init page_offset_shift_patch_one(unsigned int *insn, unsigned long phys_bits) -{ - unsigned long final_shift; - unsigned int val = *insn; - unsigned int cnt; - - /* We are patching in ilog2(max_supported_phys_address), and - * we are doing so in a manner similar to a relocation addend. - * That is, we are adding the shift value to whatever value - * is in the shift instruction count field already. - */ - cnt = (val & 0x3f); - val &= ~0x3f; - - /* If we are trying to shift >= 64 bits, clear the destination - * register. This can happen when phys_bits ends up being equal - * to MAX_PHYS_ADDRESS_BITS. - */ - final_shift = (cnt + (64 - phys_bits)); - if (final_shift >= 64) { - unsigned int rd = (val >> 25) & 0x1f; +unsigned long VMALLOC_END = 0x0000010000000000UL; +EXPORT_SYMBOL(VMALLOC_END); - val = 0x80100000 | (rd << 25); - } else { - val |= final_shift; - } - *insn = val; - - __asm__ __volatile__("flush %0" - : /* no outputs */ - : "r" (insn)); -} - -static void __init page_offset_shift_patch(unsigned long phys_bits) -{ - extern unsigned int __page_offset_shift_patch; - extern unsigned int __page_offset_shift_patch_end; - unsigned int *p; - - p = &__page_offset_shift_patch; - while (p < &__page_offset_shift_patch_end) { - unsigned int *insn = (unsigned int *)(unsigned long)*p; - - page_offset_shift_patch_one(insn, phys_bits); - - p++; - } -} +unsigned long sparc64_va_hole_top = 0xfffff80000000000UL; +unsigned long sparc64_va_hole_bottom = 0x0000080000000000UL; static void __init setup_page_offset(void) { - unsigned long max_phys_bits = 40; - if (tlb_type == cheetah || tlb_type == cheetah_plus) { + /* Cheetah/Panther support a full 64-bit virtual + * address, so we can use all that our page tables + * support. + */ + sparc64_va_hole_top = 0xfff0000000000000UL; + sparc64_va_hole_bottom = 0x0010000000000000UL; + max_phys_bits = 42; } else if (tlb_type == hypervisor) { switch (sun4v_chip_type) { case SUN4V_CHIP_NIAGARA1: case SUN4V_CHIP_NIAGARA2: + /* T1 and T2 support 48-bit virtual addresses. */ + sparc64_va_hole_top = 0xffff800000000000UL; + sparc64_va_hole_bottom = 0x0000800000000000UL; + max_phys_bits = 39; break; case SUN4V_CHIP_NIAGARA3: + /* T3 supports 48-bit virtual addresses. */ + sparc64_va_hole_top = 0xffff800000000000UL; + sparc64_va_hole_bottom = 0x0000800000000000UL; + max_phys_bits = 43; break; case SUN4V_CHIP_NIAGARA4: case SUN4V_CHIP_NIAGARA5: case SUN4V_CHIP_SPARC64X: - default: + case SUN4V_CHIP_SPARC_M6: + /* T4 and later support 52-bit virtual addresses. */ + sparc64_va_hole_top = 0xfff8000000000000UL; + sparc64_va_hole_bottom = 0x0008000000000000UL; max_phys_bits = 47; break; + case SUN4V_CHIP_SPARC_M7: + default: + /* M7 and later support 52-bit virtual addresses. */ + sparc64_va_hole_top = 0xfff8000000000000UL; + sparc64_va_hole_bottom = 0x0008000000000000UL; + max_phys_bits = 49; + break; } } @@ -1639,12 +1707,16 @@ prom_halt(); } - PAGE_OFFSET = PAGE_OFFSET_BY_BITS(max_phys_bits); + PAGE_OFFSET = sparc64_va_hole_top; + VMALLOC_END = ((sparc64_va_hole_bottom >> 1) + + (sparc64_va_hole_bottom >> 2)); - pr_info("PAGE_OFFSET is 0x%016lx (max_phys_bits == %lu)\n", + pr_info("MM: PAGE_OFFSET is 0x%016lx (max_phys_bits == %lu)\n", PAGE_OFFSET, max_phys_bits); - - page_offset_shift_patch(max_phys_bits); + pr_info("MM: VMALLOC [0x%016lx --> 0x%016lx]\n", + VMALLOC_START, VMALLOC_END); + pr_info("MM: VMEMMAP [0x%016lx --> 0x%016lx]\n", + VMEMMAP_BASE, VMEMMAP_BASE << 1); } static void __init tsb_phys_patch(void) @@ -1689,21 +1761,42 @@ #define NUM_KTSB_DESCR 1 #endif static struct hv_tsb_descr ktsb_descr[NUM_KTSB_DESCR]; -extern struct tsb swapper_tsb[KERNEL_TSB_NENTRIES]; + +/* The swapper TSBs are loaded with a base sequence of: + * + * sethi %uhi(SYMBOL), REG1 + * sethi %hi(SYMBOL), REG2 + * or REG1, %ulo(SYMBOL), REG1 + * or REG2, %lo(SYMBOL), REG2 + * sllx REG1, 32, REG1 + * or REG1, REG2, REG1 + * + * When we use physical addressing for the TSB accesses, we patch the + * first four instructions in the above sequence. + */ static void patch_one_ktsb_phys(unsigned int *start, unsigned int *end, unsigned long pa) { - pa >>= KTSB_PHYS_SHIFT; + unsigned long high_bits, low_bits; + + high_bits = (pa >> 32) & 0xffffffff; + low_bits = (pa >> 0) & 0xffffffff; while (start < end) { unsigned int *ia = (unsigned int *)(unsigned long)*start; - ia[0] = (ia[0] & ~0x3fffff) | (pa >> 10); + ia[0] = (ia[0] & ~0x3fffff) | (high_bits >> 10); __asm__ __volatile__("flush %0" : : "r" (ia)); - ia[1] = (ia[1] & ~0x3ff) | (pa & 0x3ff); + ia[1] = (ia[1] & ~0x3fffff) | (low_bits >> 10); __asm__ __volatile__("flush %0" : : "r" (ia + 1)); + ia[2] = (ia[2] & ~0x1fff) | (high_bits & 0x3ff); + __asm__ __volatile__("flush %0" : : "r" (ia + 2)); + + ia[3] = (ia[3] & ~0x1fff) | (low_bits & 0x3ff); + __asm__ __volatile__("flush %0" : : "r" (ia + 3)); + start++; } } @@ -1842,7 +1935,6 @@ /* paging_init() sets up the page tables */ static unsigned long last_valid_pfn; -pgd_t swapper_pg_dir[PTRS_PER_PGD]; static void sun4u_pgprot_init(void); static void sun4v_pgprot_init(void); @@ -1880,7 +1972,7 @@ BUILD_BUG_ON(NR_CPUS > 4096); - kern_base = (prom_boot_mapping_phys_low >> 22UL) << 22UL; + kern_base = (prom_boot_mapping_phys_low >> ILOG2_4MB) << ILOG2_4MB; kern_size = (unsigned long)&_end - (unsigned long)KERNBASE; /* Invalidate both kernel TSBs. */ @@ -1936,7 +2028,7 @@ shift = kern_base + PAGE_OFFSET - ((unsigned long)KERNBASE); real_end = (unsigned long)_end; - num_kernel_image_mappings = DIV_ROUND_UP(real_end - KERNBASE, 1 << 22); + num_kernel_image_mappings = DIV_ROUND_UP(real_end - KERNBASE, 1 << ILOG2_4MB); printk("Kernel: Using %d locked TLB entries for main kernel image.\n", num_kernel_image_mappings); @@ -1945,16 +2037,10 @@ */ init_mm.pgd += ((shift) / (sizeof(pgd_t))); - memset(swapper_low_pmd_dir, 0, sizeof(swapper_low_pmd_dir)); + memset(swapper_pg_dir, 0, sizeof(swapper_pg_dir)); - /* Now can init the kernel/bad page tables. */ - pud_set(pud_offset(&swapper_pg_dir[0], 0), - swapper_low_pmd_dir + (shift / sizeof(pgd_t))); - inherit_prom_mappings(); - init_kpte_bitmap(); - /* Ok, we can use our TLB miss and window trap handlers safely. */ setup_tba(); @@ -2061,70 +2147,6 @@ return 0; } -static struct linux_prom64_registers pavail_rescan[MAX_BANKS] __initdata; -static int pavail_rescan_ents __initdata; - -/* Certain OBP calls, such as fetching "available" properties, can - * claim physical memory. So, along with initializing the valid - * address bitmap, what we do here is refetch the physical available - * memory list again, and make sure it provides at least as much - * memory as 'pavail' does. - */ -static void __init setup_valid_addr_bitmap_from_pavail(unsigned long *bitmap) -{ - int i; - - read_obp_memory("available", &pavail_rescan[0], &pavail_rescan_ents); - - for (i = 0; i < pavail_ents; i++) { - unsigned long old_start, old_end; - - old_start = pavail[i].phys_addr; - old_end = old_start + pavail[i].reg_size; - while (old_start < old_end) { - int n; - - for (n = 0; n < pavail_rescan_ents; n++) { - unsigned long new_start, new_end; - - new_start = pavail_rescan[n].phys_addr; - new_end = new_start + - pavail_rescan[n].reg_size; - - if (new_start <= old_start && - new_end >= (old_start + PAGE_SIZE)) { - set_bit(old_start >> 22, bitmap); - goto do_next_page; - } - } - - prom_printf("mem_init: Lost memory in pavail\n"); - prom_printf("mem_init: OLD start[%lx] size[%lx]\n", - pavail[i].phys_addr, - pavail[i].reg_size); - prom_printf("mem_init: NEW start[%lx] size[%lx]\n", - pavail_rescan[i].phys_addr, - pavail_rescan[i].reg_size); - prom_printf("mem_init: Cannot continue, aborting.\n"); - prom_halt(); - - do_next_page: - old_start += PAGE_SIZE; - } - } -} - -static void __init patch_tlb_miss_handler_bitmap(void) -{ - extern unsigned int valid_addr_bitmap_insn[]; - extern unsigned int valid_addr_bitmap_patch[]; - - valid_addr_bitmap_insn[1] = valid_addr_bitmap_patch[1]; - mb(); - valid_addr_bitmap_insn[0] = valid_addr_bitmap_patch[0]; - flushi(&valid_addr_bitmap_insn[0]); -} - static void __init register_page_bootmem_info(void) { #ifdef CONFIG_NEED_MULTIPLE_NODES @@ -2137,18 +2159,6 @@ } void __init mem_init(void) { - unsigned long addr, last; - - addr = PAGE_OFFSET + kern_base; - last = PAGE_ALIGN(kern_size) + addr; - while (addr < last) { - set_bit(__pa(addr) >> 22, sparc64_valid_addr_bitmap); - addr += PAGE_SIZE; - } - - setup_valid_addr_bitmap_from_pavail(sparc64_valid_addr_bitmap); - patch_tlb_miss_handler_bitmap(); - high_memory = __va(last_valid_pfn << PAGE_SHIFT); register_page_bootmem_info(); @@ -2238,18 +2248,9 @@ EXPORT_SYMBOL(_PAGE_CACHE); #ifdef CONFIG_SPARSEMEM_VMEMMAP -unsigned long vmemmap_table[VMEMMAP_SIZE]; - -static long __meminitdata addr_start, addr_end; -static int __meminitdata node_start; - int __meminit vmemmap_populate(unsigned long vstart, unsigned long vend, int node) { - unsigned long phys_start = (vstart - VMEMMAP_BASE); - unsigned long phys_end = (vend - VMEMMAP_BASE); - unsigned long addr = phys_start & VMEMMAP_CHUNK_MASK; - unsigned long end = VMEMMAP_ALIGN(phys_end); unsigned long pte_base; pte_base = (_PAGE_VALID | _PAGE_SZ4MB_4U | @@ -2260,47 +2261,52 @@ _PAGE_CP_4V | _PAGE_CV_4V | _PAGE_P_4V | _PAGE_W_4V); - for (; addr < end; addr += VMEMMAP_CHUNK) { - unsigned long *vmem_pp = - vmemmap_table + (addr >> VMEMMAP_CHUNK_SHIFT); - void *block; + pte_base |= _PAGE_PMD_HUGE; - if (!(*vmem_pp & _PAGE_VALID)) { - block = vmemmap_alloc_block(1UL << 22, node); - if (!block) + vstart = vstart & PMD_MASK; + vend = ALIGN(vend, PMD_SIZE); + for (; vstart < vend; vstart += PMD_SIZE) { + pgd_t *pgd = pgd_offset_k(vstart); + unsigned long pte; + pud_t *pud; + pmd_t *pmd; + + if (pgd_none(*pgd)) { + pud_t *new = vmemmap_alloc_block(PAGE_SIZE, node); + + if (!new) return -ENOMEM; + pgd_populate(&init_mm, pgd, new); + } - *vmem_pp = pte_base | __pa(block); + pud = pud_offset(pgd, vstart); + if (pud_none(*pud)) { + pmd_t *new = vmemmap_alloc_block(PAGE_SIZE, node); - /* check to see if we have contiguous blocks */ - if (addr_end != addr || node_start != node) { - if (addr_start) - printk(KERN_DEBUG " [%lx-%lx] on node %d\n", - addr_start, addr_end-1, node_start); - addr_start = addr; - node_start = node; - } - addr_end = addr + VMEMMAP_CHUNK; + if (!new) + return -ENOMEM; + pud_populate(&init_mm, pud, new); } - } - return 0; -} -void __meminit vmemmap_populate_print_last(void) -{ - if (addr_start) { - printk(KERN_DEBUG " [%lx-%lx] on node %d\n", - addr_start, addr_end-1, node_start); - addr_start = 0; - addr_end = 0; - node_start = 0; + pmd = pmd_offset(pud, vstart); + + pte = pmd_val(*pmd); + if (!(pte & _PAGE_VALID)) { + void *block = vmemmap_alloc_block(PMD_SIZE, node); + + if (!block) + return -ENOMEM; + + pmd_val(*pmd) = pte_base | __pa(block); + } } + + return 0; } void vmemmap_free(unsigned long start, unsigned long end) { } - #endif /* CONFIG_SPARSEMEM_VMEMMAP */ static void prot_init_common(unsigned long page_none, @@ -2613,6 +2619,10 @@ pte = pmd_val(entry); + /* Don't insert a non-valid PMD into the TSB, we'll deadlock. */ + if (!(pte & _PAGE_VALID)) + return; + /* We are fabricating 8MB pages using 4MB real hw pages. */ pte |= (addr & (1UL << REAL_HPAGE_SHIFT)); @@ -2693,3 +2703,26 @@ } } #endif + +#ifdef CONFIG_SMP +#define do_flush_tlb_kernel_range smp_flush_tlb_kernel_range +#else +#define do_flush_tlb_kernel_range __flush_tlb_kernel_range +#endif + +void flush_tlb_kernel_range(unsigned long start, unsigned long end) +{ + if (start < HI_OBP_ADDRESS && end > LOW_OBP_ADDRESS) { + if (start < LOW_OBP_ADDRESS) { + flush_tsb_kernel_range(start, LOW_OBP_ADDRESS); + do_flush_tlb_kernel_range(start, LOW_OBP_ADDRESS); + } + if (end > HI_OBP_ADDRESS) { + flush_tsb_kernel_range(HI_OBP_ADDRESS, end); + do_flush_tlb_kernel_range(HI_OBP_ADDRESS, end); + } + } else { + flush_tsb_kernel_range(start, end); + do_flush_tlb_kernel_range(start, end); + } +} --- linux-3.13.0.orig/arch/sparc/mm/init_64.h +++ linux-3.13.0/arch/sparc/mm/init_64.h @@ -8,15 +8,8 @@ */ #define MAX_PHYS_ADDRESS (1UL << MAX_PHYS_ADDRESS_BITS) -#define KPTE_BITMAP_CHUNK_SZ (256UL * 1024UL * 1024UL) -#define KPTE_BITMAP_BYTES \ - ((MAX_PHYS_ADDRESS / KPTE_BITMAP_CHUNK_SZ) / 4) -#define VALID_ADDR_BITMAP_CHUNK_SZ (4UL * 1024UL * 1024UL) -#define VALID_ADDR_BITMAP_BYTES \ - ((MAX_PHYS_ADDRESS / VALID_ADDR_BITMAP_CHUNK_SZ) / 8) extern unsigned long kern_linear_pte_xor[4]; -extern unsigned long kpte_linear_bitmap[KPTE_BITMAP_BYTES / sizeof(unsigned long)]; extern unsigned int sparc64_highest_unlocked_tlb_ent; extern unsigned long sparc64_kern_pri_context; extern unsigned long sparc64_kern_pri_nuc_bits; @@ -38,15 +31,4 @@ extern void prom_world(int enter); -#ifdef CONFIG_SPARSEMEM_VMEMMAP -#define VMEMMAP_CHUNK_SHIFT 22 -#define VMEMMAP_CHUNK (1UL << VMEMMAP_CHUNK_SHIFT) -#define VMEMMAP_CHUNK_MASK ~(VMEMMAP_CHUNK - 1UL) -#define VMEMMAP_ALIGN(x) (((x)+VMEMMAP_CHUNK-1UL)&VMEMMAP_CHUNK_MASK) - -#define VMEMMAP_SIZE ((((1UL << MAX_PHYSADDR_BITS) >> PAGE_SHIFT) * \ - sizeof(struct page)) >> VMEMMAP_CHUNK_SHIFT) -extern unsigned long vmemmap_table[VMEMMAP_SIZE]; -#endif - #endif /* _SPARC64_MM_INIT_H */ --- linux-3.13.0.orig/arch/sparc/mm/srmmu.c +++ linux-3.13.0/arch/sparc/mm/srmmu.c @@ -458,10 +458,12 @@ void switch_mm(struct mm_struct *old_mm, struct mm_struct *mm, struct task_struct *tsk) { + unsigned long flags; + if (mm->context == NO_CONTEXT) { - spin_lock(&srmmu_context_spinlock); + spin_lock_irqsave(&srmmu_context_spinlock, flags); alloc_context(old_mm, mm); - spin_unlock(&srmmu_context_spinlock); + spin_unlock_irqrestore(&srmmu_context_spinlock, flags); srmmu_ctxd_set(&srmmu_context_table[mm->context], mm->pgd); } @@ -986,14 +988,15 @@ void destroy_context(struct mm_struct *mm) { + unsigned long flags; if (mm->context != NO_CONTEXT) { flush_cache_mm(mm); srmmu_ctxd_set(&srmmu_context_table[mm->context], srmmu_swapper_pg_dir); flush_tlb_mm(mm); - spin_lock(&srmmu_context_spinlock); + spin_lock_irqsave(&srmmu_context_spinlock, flags); free_context(mm->context); - spin_unlock(&srmmu_context_spinlock); + spin_unlock_irqrestore(&srmmu_context_spinlock, flags); mm->context = NO_CONTEXT; } } --- linux-3.13.0.orig/arch/sparc/mm/tlb.c +++ linux-3.13.0/arch/sparc/mm/tlb.c @@ -135,7 +135,7 @@ #ifdef CONFIG_TRANSPARENT_HUGEPAGE static void tlb_batch_pmd_scan(struct mm_struct *mm, unsigned long vaddr, - pmd_t pmd, bool exec) + pmd_t pmd) { unsigned long end; pte_t *pte; @@ -143,8 +143,11 @@ pte = pte_offset_map(&pmd, vaddr); end = vaddr + HPAGE_SIZE; while (vaddr < end) { - if (pte_val(*pte) & _PAGE_VALID) + if (pte_val(*pte) & _PAGE_VALID) { + bool exec = pte_exec(*pte); + tlb_batch_add_one(mm, vaddr, exec); + } pte++; vaddr += PAGE_SIZE; } @@ -178,19 +181,30 @@ } if (!pmd_none(orig)) { - pte_t orig_pte = __pte(pmd_val(orig)); - bool exec = pte_exec(orig_pte); - addr &= HPAGE_MASK; if (pmd_trans_huge(orig)) { + pte_t orig_pte = __pte(pmd_val(orig)); + bool exec = pte_exec(orig_pte); + tlb_batch_add_one(mm, addr, exec); tlb_batch_add_one(mm, addr + REAL_HPAGE_SIZE, exec); } else { - tlb_batch_pmd_scan(mm, addr, orig, exec); + tlb_batch_pmd_scan(mm, addr, orig); } } } +void pmdp_invalidate(struct vm_area_struct *vma, unsigned long address, + pmd_t *pmdp) +{ + pmd_t entry = *pmdp; + + pmd_val(entry) &= ~_PAGE_VALID; + + set_pmd_at(vma->vm_mm, address, pmdp, entry); + flush_tlb_range(vma, address, address + HPAGE_PMD_SIZE); +} + void pgtable_trans_huge_deposit(struct mm_struct *mm, pmd_t *pmdp, pgtable_t pgtable) { --- linux-3.13.0.orig/arch/sparc/mm/tsb.c +++ linux-3.13.0/arch/sparc/mm/tsb.c @@ -133,7 +133,19 @@ mm->context.tsb_block[tsb_idx].tsb_nentries = tsb_bytes / sizeof(struct tsb); - base = TSBMAP_BASE; + switch (tsb_idx) { + case MM_TSB_BASE: + base = TSBMAP_8K_BASE; + break; +#if defined(CONFIG_HUGETLB_PAGE) || defined(CONFIG_TRANSPARENT_HUGEPAGE) + case MM_TSB_HUGE: + base = TSBMAP_4M_BASE; + break; +#endif + default: + BUG(); + } + tte = pgprot_val(PAGE_KERNEL_LOCKED); tsb_paddr = __pa(mm->context.tsb_block[tsb_idx].tsb); BUG_ON(tsb_paddr & (tsb_bytes - 1UL)); --- linux-3.13.0.orig/arch/sparc/net/bpf_jit_comp.c +++ linux-3.13.0/arch/sparc/net/bpf_jit_comp.c @@ -83,9 +83,9 @@ #define BNE (F2(0, 2) | CONDNE) #ifdef CONFIG_SPARC64 -#define BNE_PTR (F2(0, 1) | CONDNE | (2 << 20)) +#define BE_PTR (F2(0, 1) | CONDE | (2 << 20)) #else -#define BNE_PTR BNE +#define BE_PTR BE #endif #define SETHI(K, REG) \ @@ -600,7 +600,7 @@ case BPF_S_ANC_IFINDEX: emit_skb_loadptr(dev, r_A); emit_cmpi(r_A, 0); - emit_branch(BNE_PTR, cleanup_addr + 4); + emit_branch(BE_PTR, cleanup_addr + 4); emit_nop(); emit_load32(r_A, struct net_device, ifindex, r_A); break; @@ -613,7 +613,7 @@ case BPF_S_ANC_HATYPE: emit_skb_loadptr(dev, r_A); emit_cmpi(r_A, 0); - emit_branch(BNE_PTR, cleanup_addr + 4); + emit_branch(BE_PTR, cleanup_addr + 4); emit_nop(); emit_load16(r_A, struct net_device, type, r_A); break; --- linux-3.13.0.orig/arch/sparc/power/hibernate_asm.S +++ linux-3.13.0/arch/sparc/power/hibernate_asm.S @@ -54,8 +54,8 @@ nop /* Write PAGE_OFFSET to %g7 */ - sethi %uhi(PAGE_OFFSET), %g7 - sllx %g7, 32, %g7 + sethi %hi(PAGE_OFFSET), %g7 + ldx [%g7 + %lo(PAGE_OFFSET)], %g7 setuw (PAGE_SIZE-8), %g3 --- linux-3.13.0.orig/arch/sparc/prom/bootstr_64.c +++ linux-3.13.0/arch/sparc/prom/bootstr_64.c @@ -14,7 +14,10 @@ * the .bss section or it will break things. */ -#define BARG_LEN 256 +/* We limit BARG_LEN to 1024 because this is the size of the + * 'barg_out' command line buffer in the SILO bootloader. + */ +#define BARG_LEN 1024 struct { int bootstr_len; int bootstr_valid; --- linux-3.13.0.orig/arch/sparc/prom/cif.S +++ linux-3.13.0/arch/sparc/prom/cif.S @@ -11,11 +11,10 @@ .text .globl prom_cif_direct prom_cif_direct: + save %sp, -192, %sp sethi %hi(p1275buf), %o1 or %o1, %lo(p1275buf), %o1 - ldx [%o1 + 0x0010], %o2 ! prom_cif_stack - save %o2, -192, %sp - ldx [%i1 + 0x0008], %l2 ! prom_cif_handler + ldx [%o1 + 0x0008], %l2 ! prom_cif_handler mov %g4, %l0 mov %g5, %l1 mov %g6, %l3 --- linux-3.13.0.orig/arch/sparc/prom/init_64.c +++ linux-3.13.0/arch/sparc/prom/init_64.c @@ -26,13 +26,13 @@ * It gets passed the pointer to the PROM vector. */ -extern void prom_cif_init(void *, void *); +extern void prom_cif_init(void *); -void __init prom_init(void *cif_handler, void *cif_stack) +void __init prom_init(void *cif_handler) { phandle node; - prom_cif_init(cif_handler, cif_stack); + prom_cif_init(cif_handler); prom_chosen_node = prom_finddevice(prom_chosen_path); if (!prom_chosen_node || (s32)prom_chosen_node == -1) --- linux-3.13.0.orig/arch/sparc/prom/p1275.c +++ linux-3.13.0/arch/sparc/prom/p1275.c @@ -10,6 +10,7 @@ #include #include #include +#include #include #include @@ -20,7 +21,6 @@ struct { long prom_callback; /* 0x00 */ void (*prom_cif_handler)(long *); /* 0x08 */ - unsigned long prom_cif_stack; /* 0x10 */ } p1275buf; extern void prom_world(int); @@ -37,8 +37,8 @@ { unsigned long flags; - raw_local_save_flags(flags); - raw_local_irq_restore((unsigned long)PIL_NMI); + local_save_flags(flags); + local_irq_restore((unsigned long)PIL_NMI); raw_spin_lock(&prom_entry_lock); prom_world(1); @@ -46,11 +46,10 @@ prom_world(0); raw_spin_unlock(&prom_entry_lock); - raw_local_irq_restore(flags); + local_irq_restore(flags); } void prom_cif_init(void *cif_handler, void *cif_stack) { p1275buf.prom_cif_handler = (void (*)(long *))cif_handler; - p1275buf.prom_cif_stack = (unsigned long)cif_stack; } --- linux-3.13.0.orig/arch/tile/include/asm/compat.h +++ linux-3.13.0/arch/tile/include/asm/compat.h @@ -281,7 +281,6 @@ u32 dummy, u32 low, u32 high); long compat_sys_pwrite64(unsigned int fd, char __user *ubuf, size_t count, u32 dummy, u32 low, u32 high); -long compat_sys_lookup_dcookie(u32 low, u32 high, char __user *buf, size_t len); long compat_sys_sync_file_range2(int fd, unsigned int flags, u32 offset_lo, u32 offset_hi, u32 nbytes_lo, u32 nbytes_hi); --- linux-3.13.0.orig/arch/tile/kernel/setup.c +++ linux-3.13.0/arch/tile/kernel/setup.c @@ -1146,7 +1146,7 @@ void __init free_initrd_mem(unsigned long begin, unsigned long end) { - free_bootmem(__pa(begin), end - begin); + free_bootmem_late(__pa(begin), end - begin); } static int __init setup_initrd(char *str) --- linux-3.13.0.orig/arch/tile/mm/fault.c +++ linux-3.13.0/arch/tile/mm/fault.c @@ -444,6 +444,8 @@ if (unlikely(fault & VM_FAULT_ERROR)) { if (fault & VM_FAULT_OOM) goto out_of_memory; + else if (fault & VM_FAULT_SIGSEGV) + goto bad_area; else if (fault & VM_FAULT_SIGBUS) goto do_sigbus; BUG(); --- linux-3.13.0.orig/arch/tile/mm/hugetlbpage.c +++ linux-3.13.0/arch/tile/mm/hugetlbpage.c @@ -166,11 +166,6 @@ return !!(pud_val(pud) & _PAGE_HUGE_PAGE); } -int pmd_huge_support(void) -{ - return 1; -} - struct page *follow_huge_pmd(struct mm_struct *mm, unsigned long address, pmd_t *pmd, int write) { --- linux-3.13.0.orig/arch/um/drivers/mconsole_kern.c +++ linux-3.13.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-3.13.0.orig/arch/um/drivers/ubd_kern.c +++ linux-3.13.0/arch/um/drivers/ubd_kern.c @@ -1277,7 +1277,7 @@ while(1){ struct ubd *dev = q->queuedata; - if(dev->end_sg == 0){ + if(dev->request == NULL){ struct request *req = blk_fetch_request(q); if(req == NULL) return; @@ -1299,7 +1299,8 @@ return; } prepare_flush_request(req, io_req); - submit_request(io_req, dev); + if (submit_request(io_req, dev) == false) + return; } while(dev->start_sg < dev->end_sg){ --- linux-3.13.0.orig/arch/um/kernel/trap.c +++ linux-3.13.0/arch/um/kernel/trap.c @@ -80,6 +80,8 @@ if (unlikely(fault & VM_FAULT_ERROR)) { if (fault & VM_FAULT_OOM) { goto out_of_memory; + } else if (fault & VM_FAULT_SIGSEGV) { + goto out; } else if (fault & VM_FAULT_SIGBUS) { err = -EACCES; goto out; --- linux-3.13.0.orig/arch/um/os-Linux/start_up.c +++ linux-3.13.0/arch/um/os-Linux/start_up.c @@ -95,6 +95,8 @@ { int pid, n, status; + fflush(stdout); + pid = fork(); if (pid == 0) ptrace_child(); --- linux-3.13.0.orig/arch/x86/Kconfig +++ linux-3.13.0/arch/x86/Kconfig @@ -125,6 +125,8 @@ select RTC_LIB select HAVE_DEBUG_STACKOVERFLOW select HAVE_IRQ_EXIT_ON_IRQ_STACK if X86_64 + select ARCH_SUPPORTS_ATOMIC_RMW + select HAVE_CC_STACKPROTECTOR config INSTRUCTION_DECODER def_bool y @@ -865,7 +867,7 @@ config X86_UP_APIC bool "Local APIC support on uniprocessors" - depends on X86_32 && !SMP && !X86_32_NON_STANDARD && !PCI_MSI + depends on X86_32 && !SMP && !X86_32_NON_STANDARD ---help--- A local APIC (Advanced Programmable Interrupt Controller) is an integrated interrupt controller in the CPU. If you have a single-CPU @@ -876,6 +878,10 @@ performance counters), and the NMI watchdog which detects hard lockups. +config X86_UP_APIC_MSI + def_bool y + select X86_UP_APIC if X86_32 && !SMP && !X86_32_NON_STANDARD && PCI_MSI + config X86_UP_IOAPIC bool "IO-APIC support on uniprocessors" depends on X86_UP_APIC @@ -977,10 +983,27 @@ default y depends on X86_32 ---help--- - This option is required by programs like DOSEMU to run 16-bit 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 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. + +config X86_16BIT + bool "Enable support for 16-bit segments" if EXPERT + default y + ---help--- + This option is required by programs like Wine to run 16-bit + protected mode legacy code on x86 processors. Disabling + this option saves about 300 bytes on i386, or around 6K text + plus 16K runtime memory on x86-64, + +config X86_ESPFIX32 + def_bool y + depends on X86_16BIT && X86_32 + +config X86_ESPFIX64 + def_bool y + depends on X86_16BIT && X86_64 config TOSHIBA tristate "Toshiba Laptop support" @@ -1595,6 +1618,7 @@ config EFI_STUB bool "EFI stub support" depends on EFI + select RELOCATABLE ---help--- This kernel feature allows a bzImage to be loaded directly by EFI firmware without the use of a bootloader. @@ -1617,22 +1641,6 @@ If unsure, say Y. Only embedded should say N here. -config CC_STACKPROTECTOR - bool "Enable -fstack-protector buffer overflow detection" - ---help--- - This option turns on the -fstack-protector GCC feature. This - feature puts, at the beginning of functions, a canary value on - the stack just before the return address, and validates - the value just before actually returning. Stack based buffer - overflows (that need to overwrite this return address) now also - overwrite the canary, which gets detected and the attack is then - neutralized via a kernel panic. - - This feature requires gcc version 4.2 or above, or a distribution - gcc with the feature backported. Older versions are automatically - detected and for those versions, this configuration option is - ignored. (and a warning is printed during bootup) - source kernel/Kconfig.hz config KEXEC @@ -1890,6 +1898,10 @@ def_bool y depends on X86_64 || X86_PAE +config ARCH_ENABLE_HUGEPAGE_MIGRATION + def_bool y + depends on X86_64 && HUGETLB_PAGE && MIGRATION + menu "Power management and ACPI options" config ARCH_HIBERNATION_HEADER @@ -2397,6 +2409,8 @@ source "drivers/Kconfig" +source "ubuntu/Kconfig" + source "drivers/firmware/Kconfig" source "fs/Kconfig" --- linux-3.13.0.orig/arch/x86/Makefile +++ linux-3.13.0/arch/x86/Makefile @@ -89,13 +89,11 @@ KBUILD_CFLAGS += -maccumulate-outgoing-args endif +# Make sure compiler does not have buggy stack-protector support. ifdef CONFIG_CC_STACKPROTECTOR cc_has_sp := $(srctree)/scripts/gcc-x86_$(BITS)-has-stack-protector.sh - ifeq ($(shell $(CONFIG_SHELL) $(cc_has_sp) $(CC) $(KBUILD_CPPFLAGS) $(biarch)),y) - stackp-y := -fstack-protector - KBUILD_CFLAGS += $(stackp-y) - else - $(warning stack protector enabled but no compiler support) + ifneq ($(shell $(CONFIG_SHELL) $(cc_has_sp) $(CC) $(KBUILD_CPPFLAGS) $(biarch)),y) + $(warning stack-protector enabled but compiler support broken) endif endif --- linux-3.13.0.orig/arch/x86/boot/compressed/eboot.c +++ linux-3.13.0/arch/x86/boot/compressed/eboot.c @@ -493,6 +493,8 @@ if (!cmdline_ptr) goto fail; hdr->cmd_line_ptr = (unsigned long)cmdline_ptr; + /* Fill in upper bits of command line address, NOP on 32 bit */ + boot_params->ext_cmd_line_ptr = (u64)(unsigned long)cmdline_ptr >> 32; hdr->ramdisk_image = 0; hdr->ramdisk_size = 0; @@ -559,6 +561,10 @@ unsigned int e820_type = 0; unsigned long m = efi->efi_memmap; +#ifdef CONFIG_X86_64 + m |= (u64)efi->efi_memmap_hi << 32; +#endif + d = (efi_memory_desc_t *)(m + (i * efi->efi_memdesc_size)); switch (d->type) { case EFI_RESERVED_TYPE: --- linux-3.13.0.orig/arch/x86/boot/compressed/misc.c +++ linux-3.13.0/arch/x86/boot/compressed/misc.c @@ -401,6 +401,8 @@ unsigned char *output, unsigned long output_len) { + unsigned char *output_orig = output; + real_mode = rmode; sanitize_boot_params(real_mode); @@ -439,7 +441,12 @@ debug_putstr("\nDecompressing Linux... "); decompress(input_data, input_len, NULL, NULL, output, NULL, error); parse_elf(output); - handle_relocations(output, output_len); + /* + * 32-bit always performs relocations. 64-bit relocations are only + * needed if kASLR has chosen a different load address. + */ + if (!IS_ENABLED(CONFIG_X86_64) || output != output_orig) + handle_relocations(output, output_len); debug_putstr("done.\nBooting the kernel.\n"); return; } --- linux-3.13.0.orig/arch/x86/boot/cpucheck.c +++ linux-3.13.0/arch/x86/boot/cpucheck.c @@ -69,6 +69,13 @@ cpu_vendor[2] == A32('M', 'x', '8', '6'); } +static int is_intel(void) +{ + return cpu_vendor[0] == A32('G', 'e', 'n', 'u') && + cpu_vendor[1] == A32('i', 'n', 'e', 'I') && + cpu_vendor[2] == A32('n', 't', 'e', 'l'); +} + static int has_fpu(void) { u16 fcw = -1, fsw = -1; @@ -239,6 +246,24 @@ asm("wrmsr" : : "a" (eax), "d" (edx), "c" (ecx)); err = check_flags(); + } else if (err == 0x01 && + !(err_flags[0] & ~(1 << X86_FEATURE_PAE)) && + is_intel() && cpu.level == 6 && + (cpu.model == 9 || cpu.model == 13)) { + /* PAE is disabled on this Pentium M but can be forced */ + if (cmdline_find_option_bool("forcepae")) { + puts("WARNING: Forcing PAE in CPU flags\n"); + set_bit(X86_FEATURE_PAE, cpu.flags); + err = check_flags(); + } + else { + puts("ERROR: PAE is disabled on this Pentium M\n" + "(PAE can potentially be enabled with " + "kernel parameter\n" + "\"forcepae\" - this is unsupported, may " + "cause unknown\n" + "problems, and will taint the kernel)\n"); + } } if (err_flags_ptr) --- linux-3.13.0.orig/arch/x86/boot/header.S +++ linux-3.13.0/arch/x86/boot/header.S @@ -91,10 +91,9 @@ .section ".bsdata", "a" bugger_off_msg: - .ascii "Direct floppy boot is not supported. " - .ascii "Use a boot loader program instead.\r\n" + .ascii "Use a boot loader.\r\n" .ascii "\n" - .ascii "Remove disk and press any key to reboot ...\r\n" + .ascii "Remove disk and press any key to reboot...\r\n" .byte 0 #ifdef CONFIG_EFI_STUB @@ -108,7 +107,7 @@ #else .word 0x8664 # x86-64 #endif - .word 3 # nr_sections + .word 4 # nr_sections .long 0 # TimeDateStamp .long 0 # PointerToSymbolTable .long 1 # NumberOfSymbols @@ -250,6 +249,25 @@ .word 0 # NumberOfLineNumbers .long 0x60500020 # Characteristics (section flags) + # + # The offset & size fields are filled in by build.c. + # + .ascii ".bss" + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 0 + .long 0x0 + .long 0 # Size of initialized data + # on disk + .long 0x0 + .long 0 # PointerToRelocations + .long 0 # PointerToLineNumbers + .word 0 # NumberOfRelocations + .word 0 # NumberOfLineNumbers + .long 0xc8000080 # Characteristics (section flags) + #endif /* CONFIG_EFI_STUB */ # Kernel attributes; used by setup. This is part 1 of the --- linux-3.13.0.orig/arch/x86/boot/tools/build.c +++ linux-3.13.0/arch/x86/boot/tools/build.c @@ -142,7 +142,7 @@ #ifdef CONFIG_EFI_STUB -static void update_pecoff_section_header(char *section_name, u32 offset, u32 size) +static void update_pecoff_section_header_fields(char *section_name, u32 vma, u32 size, u32 datasz, u32 offset) { unsigned int pe_header; unsigned short num_sections; @@ -163,10 +163,10 @@ put_unaligned_le32(size, section + 0x8); /* section header vma field */ - put_unaligned_le32(offset, section + 0xc); + put_unaligned_le32(vma, section + 0xc); /* section header 'size of initialised data' field */ - put_unaligned_le32(size, section + 0x10); + put_unaligned_le32(datasz, section + 0x10); /* section header 'file offset' field */ put_unaligned_le32(offset, section + 0x14); @@ -178,6 +178,11 @@ } } +static void update_pecoff_section_header(char *section_name, u32 offset, u32 size) +{ + update_pecoff_section_header_fields(section_name, offset, size, size, offset); +} + static void update_pecoff_setup_and_reloc(unsigned int size) { u32 setup_offset = 0x200; @@ -202,9 +207,6 @@ pe_header = get_unaligned_le32(&buf[0x3c]); - /* Size of image */ - put_unaligned_le32(file_sz, &buf[pe_header + 0x50]); - /* * Size of code: Subtract the size of the first sector (512 bytes) * which includes the header. @@ -219,6 +221,22 @@ update_pecoff_section_header(".text", text_start, text_sz); } +static void update_pecoff_bss(unsigned int file_sz, unsigned int init_sz) +{ + unsigned int pe_header; + unsigned int bss_sz = init_sz - file_sz; + + pe_header = get_unaligned_le32(&buf[0x3c]); + + /* Size of uninitialized data */ + put_unaligned_le32(bss_sz, &buf[pe_header + 0x24]); + + /* Size of image */ + put_unaligned_le32(init_sz, &buf[pe_header + 0x50]); + + update_pecoff_section_header_fields(".bss", file_sz, bss_sz, 0, 0); +} + #endif /* CONFIG_EFI_STUB */ @@ -270,6 +288,9 @@ int fd; void *kernel; u32 crc = 0xffffffffUL; +#ifdef CONFIG_EFI_STUB + unsigned int init_sz; +#endif /* Defaults for old kernel */ #ifdef CONFIG_X86_32 @@ -343,7 +364,9 @@ put_unaligned_le32(sys_size, &buf[0x1f4]); #ifdef CONFIG_EFI_STUB - update_pecoff_text(setup_sectors * 512, sz + i + ((sys_size * 16) - sz)); + update_pecoff_text(setup_sectors * 512, i + (sys_size * 16)); + init_sz = get_unaligned_le32(&buf[0x260]); + update_pecoff_bss(i + (sys_size * 16), init_sz); #ifdef CONFIG_X86_64 /* Yes, this is really how we defined it :( */ efi_stub_entry -= 0x200; --- linux-3.13.0.orig/arch/x86/boot/video.h +++ linux-3.13.0/arch/x86/boot/video.h @@ -80,7 +80,7 @@ u16 xmode_n; /* Size of unprobed mode range */ }; -#define __videocard struct card_info __attribute__((section(".videocards"))) +#define __videocard struct card_info __attribute__((used,section(".videocards"))) extern struct card_info video_cards[], video_cards_end[]; int mode_defined(u16 mode); /* video.c */ --- linux-3.13.0.orig/arch/x86/configs/i386_defconfig +++ linux-3.13.0/arch/x86/configs/i386_defconfig @@ -60,7 +60,6 @@ CONFIG_HIBERNATION=y CONFIG_PM_DEBUG=y CONFIG_PM_TRACE_RTC=y -CONFIG_ACPI_PROCFS=y CONFIG_ACPI_DOCK=y CONFIG_CPU_FREQ=y # CONFIG_CPU_FREQ_STAT is not set --- linux-3.13.0.orig/arch/x86/configs/x86_64_defconfig +++ linux-3.13.0/arch/x86/configs/x86_64_defconfig @@ -58,7 +58,6 @@ CONFIG_HIBERNATION=y CONFIG_PM_DEBUG=y CONFIG_PM_TRACE_RTC=y -CONFIG_ACPI_PROCFS=y CONFIG_ACPI_DOCK=y CONFIG_CPU_FREQ=y # CONFIG_CPU_FREQ_STAT is not set --- linux-3.13.0.orig/arch/x86/crypto/aes_glue.c +++ linux-3.13.0/arch/x86/crypto/aes_glue.c @@ -66,5 +66,5 @@ MODULE_DESCRIPTION("Rijndael (AES) Cipher Algorithm, asm optimized"); MODULE_LICENSE("GPL"); -MODULE_ALIAS("aes"); -MODULE_ALIAS("aes-asm"); +MODULE_ALIAS_CRYPTO("aes"); +MODULE_ALIAS_CRYPTO("aes-asm"); --- linux-3.13.0.orig/arch/x86/crypto/aesni-intel_glue.c +++ linux-3.13.0/arch/x86/crypto/aesni-intel_glue.c @@ -989,7 +989,7 @@ src = kmalloc(req->cryptlen + req->assoclen, GFP_ATOMIC); if (!src) return -ENOMEM; - assoc = (src + req->cryptlen + auth_tag_len); + assoc = (src + req->cryptlen); scatterwalk_map_and_copy(src, req->src, 0, req->cryptlen, 0); scatterwalk_map_and_copy(assoc, req->assoc, 0, req->assoclen, 0); @@ -1014,7 +1014,7 @@ scatterwalk_done(&src_sg_walk, 0, 0); scatterwalk_done(&assoc_sg_walk, 0, 0); } else { - scatterwalk_map_and_copy(dst, req->dst, 0, req->cryptlen, 1); + scatterwalk_map_and_copy(dst, req->dst, 0, tempCipherLen, 1); kfree(src); } return retval; @@ -1373,4 +1373,4 @@ MODULE_DESCRIPTION("Rijndael (AES) Cipher Algorithm, Intel AES-NI instructions optimized"); MODULE_LICENSE("GPL"); -MODULE_ALIAS("aes"); +MODULE_ALIAS_CRYPTO("aes"); --- linux-3.13.0.orig/arch/x86/crypto/blowfish_glue.c +++ linux-3.13.0/arch/x86/crypto/blowfish_glue.c @@ -481,5 +481,5 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Blowfish Cipher Algorithm, asm optimized"); -MODULE_ALIAS("blowfish"); -MODULE_ALIAS("blowfish-asm"); +MODULE_ALIAS_CRYPTO("blowfish"); +MODULE_ALIAS_CRYPTO("blowfish-asm"); --- linux-3.13.0.orig/arch/x86/crypto/camellia_aesni_avx2_glue.c +++ linux-3.13.0/arch/x86/crypto/camellia_aesni_avx2_glue.c @@ -582,5 +582,5 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Camellia Cipher Algorithm, AES-NI/AVX2 optimized"); -MODULE_ALIAS("camellia"); -MODULE_ALIAS("camellia-asm"); +MODULE_ALIAS_CRYPTO("camellia"); +MODULE_ALIAS_CRYPTO("camellia-asm"); --- linux-3.13.0.orig/arch/x86/crypto/camellia_aesni_avx_glue.c +++ linux-3.13.0/arch/x86/crypto/camellia_aesni_avx_glue.c @@ -574,5 +574,5 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Camellia Cipher Algorithm, AES-NI/AVX optimized"); -MODULE_ALIAS("camellia"); -MODULE_ALIAS("camellia-asm"); +MODULE_ALIAS_CRYPTO("camellia"); +MODULE_ALIAS_CRYPTO("camellia-asm"); --- linux-3.13.0.orig/arch/x86/crypto/camellia_glue.c +++ linux-3.13.0/arch/x86/crypto/camellia_glue.c @@ -1725,5 +1725,5 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Camellia Cipher Algorithm, asm optimized"); -MODULE_ALIAS("camellia"); -MODULE_ALIAS("camellia-asm"); +MODULE_ALIAS_CRYPTO("camellia"); +MODULE_ALIAS_CRYPTO("camellia-asm"); --- linux-3.13.0.orig/arch/x86/crypto/cast5_avx_glue.c +++ linux-3.13.0/arch/x86/crypto/cast5_avx_glue.c @@ -494,4 +494,4 @@ MODULE_DESCRIPTION("Cast5 Cipher Algorithm, AVX optimized"); MODULE_LICENSE("GPL"); -MODULE_ALIAS("cast5"); +MODULE_ALIAS_CRYPTO("cast5"); --- linux-3.13.0.orig/arch/x86/crypto/cast6_avx_glue.c +++ linux-3.13.0/arch/x86/crypto/cast6_avx_glue.c @@ -611,4 +611,4 @@ MODULE_DESCRIPTION("Cast6 Cipher Algorithm, AVX optimized"); MODULE_LICENSE("GPL"); -MODULE_ALIAS("cast6"); +MODULE_ALIAS_CRYPTO("cast6"); --- linux-3.13.0.orig/arch/x86/crypto/crc32-pclmul_glue.c +++ linux-3.13.0/arch/x86/crypto/crc32-pclmul_glue.c @@ -197,5 +197,5 @@ MODULE_AUTHOR("Alexander Boyko "); MODULE_LICENSE("GPL"); -MODULE_ALIAS("crc32"); -MODULE_ALIAS("crc32-pclmul"); +MODULE_ALIAS_CRYPTO("crc32"); +MODULE_ALIAS_CRYPTO("crc32-pclmul"); --- linux-3.13.0.orig/arch/x86/crypto/crc32c-intel_glue.c +++ linux-3.13.0/arch/x86/crypto/crc32c-intel_glue.c @@ -280,5 +280,5 @@ MODULE_DESCRIPTION("CRC32c (Castagnoli) optimization using Intel Hardware."); MODULE_LICENSE("GPL"); -MODULE_ALIAS("crc32c"); -MODULE_ALIAS("crc32c-intel"); +MODULE_ALIAS_CRYPTO("crc32c"); +MODULE_ALIAS_CRYPTO("crc32c-intel"); --- linux-3.13.0.orig/arch/x86/crypto/crct10dif-pclmul_glue.c +++ linux-3.13.0/arch/x86/crypto/crct10dif-pclmul_glue.c @@ -147,5 +147,5 @@ MODULE_DESCRIPTION("T10 DIF CRC calculation accelerated with PCLMULQDQ."); MODULE_LICENSE("GPL"); -MODULE_ALIAS("crct10dif"); -MODULE_ALIAS("crct10dif-pclmul"); +MODULE_ALIAS_CRYPTO("crct10dif"); +MODULE_ALIAS_CRYPTO("crct10dif-pclmul"); --- linux-3.13.0.orig/arch/x86/crypto/fpu.c +++ linux-3.13.0/arch/x86/crypto/fpu.c @@ -17,6 +17,7 @@ #include #include #include +#include #include struct crypto_fpu_ctx { @@ -159,3 +160,5 @@ { crypto_unregister_template(&crypto_fpu_tmpl); } + +MODULE_ALIAS_CRYPTO("fpu"); --- linux-3.13.0.orig/arch/x86/crypto/ghash-clmulni-intel_asm.S +++ linux-3.13.0/arch/x86/crypto/ghash-clmulni-intel_asm.S @@ -24,10 +24,6 @@ .align 16 .Lbswap_mask: .octa 0x000102030405060708090a0b0c0d0e0f -.Lpoly: - .octa 0xc2000000000000000000000000000001 -.Ltwo_one: - .octa 0x00000001000000000000000000000001 #define DATA %xmm0 #define SHASH %xmm1 @@ -134,28 +130,3 @@ .Lupdate_just_ret: ret ENDPROC(clmul_ghash_update) - -/* - * void clmul_ghash_setkey(be128 *shash, const u8 *key); - * - * Calculate hash_key << 1 mod poly - */ -ENTRY(clmul_ghash_setkey) - movaps .Lbswap_mask, BSWAP - movups (%rsi), %xmm0 - PSHUFB_XMM BSWAP %xmm0 - movaps %xmm0, %xmm1 - psllq $1, %xmm0 - psrlq $63, %xmm1 - movaps %xmm1, %xmm2 - pslldq $8, %xmm1 - psrldq $8, %xmm2 - por %xmm1, %xmm0 - # reduction - pshufd $0b00100100, %xmm2, %xmm1 - pcmpeqd .Ltwo_one, %xmm1 - pand .Lpoly, %xmm1 - pxor %xmm1, %xmm0 - movups %xmm0, (%rdi) - ret -ENDPROC(clmul_ghash_setkey) --- linux-3.13.0.orig/arch/x86/crypto/ghash-clmulni-intel_glue.c +++ linux-3.13.0/arch/x86/crypto/ghash-clmulni-intel_glue.c @@ -30,8 +30,6 @@ void clmul_ghash_update(char *dst, const char *src, unsigned int srclen, const be128 *shash); -void clmul_ghash_setkey(be128 *shash, const u8 *key); - struct ghash_async_ctx { struct cryptd_ahash *cryptd_tfm; }; @@ -58,13 +56,23 @@ const u8 *key, unsigned int keylen) { struct ghash_ctx *ctx = crypto_shash_ctx(tfm); + be128 *x = (be128 *)key; + u64 a, b; if (keylen != GHASH_BLOCK_SIZE) { crypto_shash_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN); return -EINVAL; } - clmul_ghash_setkey(&ctx->shash, key); + /* perform multiplication by 'x' in GF(2^128) */ + a = be64_to_cpu(x->a); + b = be64_to_cpu(x->b); + + ctx->shash.a = (__be64)((b << 1) | (a >> 63)); + ctx->shash.b = (__be64)((a << 1) | (b >> 63)); + + if (a >> 63) + ctx->shash.b ^= cpu_to_be64(0xc2); return 0; } @@ -283,6 +291,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, @@ -333,4 +342,4 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("GHASH Message Digest Algorithm, " "acclerated by PCLMULQDQ-NI"); -MODULE_ALIAS("ghash"); +MODULE_ALIAS_CRYPTO("ghash"); --- linux-3.13.0.orig/arch/x86/crypto/salsa20_glue.c +++ linux-3.13.0/arch/x86/crypto/salsa20_glue.c @@ -119,5 +119,5 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION ("Salsa20 stream cipher algorithm (optimized assembly version)"); -MODULE_ALIAS("salsa20"); -MODULE_ALIAS("salsa20-asm"); +MODULE_ALIAS_CRYPTO("salsa20"); +MODULE_ALIAS_CRYPTO("salsa20-asm"); --- linux-3.13.0.orig/arch/x86/crypto/serpent_avx2_glue.c +++ linux-3.13.0/arch/x86/crypto/serpent_avx2_glue.c @@ -558,5 +558,5 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Serpent Cipher Algorithm, AVX2 optimized"); -MODULE_ALIAS("serpent"); -MODULE_ALIAS("serpent-asm"); +MODULE_ALIAS_CRYPTO("serpent"); +MODULE_ALIAS_CRYPTO("serpent-asm"); --- linux-3.13.0.orig/arch/x86/crypto/serpent_avx_glue.c +++ linux-3.13.0/arch/x86/crypto/serpent_avx_glue.c @@ -617,4 +617,4 @@ MODULE_DESCRIPTION("Serpent Cipher Algorithm, AVX optimized"); MODULE_LICENSE("GPL"); -MODULE_ALIAS("serpent"); +MODULE_ALIAS_CRYPTO("serpent"); --- linux-3.13.0.orig/arch/x86/crypto/serpent_sse2_glue.c +++ linux-3.13.0/arch/x86/crypto/serpent_sse2_glue.c @@ -618,4 +618,4 @@ MODULE_DESCRIPTION("Serpent Cipher Algorithm, SSE2 optimized"); MODULE_LICENSE("GPL"); -MODULE_ALIAS("serpent"); +MODULE_ALIAS_CRYPTO("serpent"); --- linux-3.13.0.orig/arch/x86/crypto/sha1_ssse3_glue.c +++ linux-3.13.0/arch/x86/crypto/sha1_ssse3_glue.c @@ -237,4 +237,4 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("SHA1 Secure Hash Algorithm, Supplemental SSE3 accelerated"); -MODULE_ALIAS("sha1"); +MODULE_ALIAS_CRYPTO("sha1"); --- linux-3.13.0.orig/arch/x86/crypto/sha256_ssse3_glue.c +++ linux-3.13.0/arch/x86/crypto/sha256_ssse3_glue.c @@ -318,5 +318,5 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("SHA256 Secure Hash Algorithm, Supplemental SSE3 accelerated"); -MODULE_ALIAS("sha256"); -MODULE_ALIAS("sha224"); +MODULE_ALIAS_CRYPTO("sha256"); +MODULE_ALIAS_CRYPTO("sha224"); --- linux-3.13.0.orig/arch/x86/crypto/sha512_ssse3_glue.c +++ linux-3.13.0/arch/x86/crypto/sha512_ssse3_glue.c @@ -141,7 +141,7 @@ /* save number of bits */ bits[1] = cpu_to_be64(sctx->count[0] << 3); - bits[0] = cpu_to_be64(sctx->count[1] << 3) | sctx->count[0] >> 61; + bits[0] = cpu_to_be64(sctx->count[1] << 3 | sctx->count[0] >> 61); /* Pad out to 112 mod 128 and append length */ index = sctx->count[0] & 0x7f; @@ -326,5 +326,5 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("SHA512 Secure Hash Algorithm, Supplemental SSE3 accelerated"); -MODULE_ALIAS("sha512"); -MODULE_ALIAS("sha384"); +MODULE_ALIAS_CRYPTO("sha512"); +MODULE_ALIAS_CRYPTO("sha384"); --- linux-3.13.0.orig/arch/x86/crypto/twofish_avx_glue.c +++ linux-3.13.0/arch/x86/crypto/twofish_avx_glue.c @@ -579,4 +579,4 @@ MODULE_DESCRIPTION("Twofish Cipher Algorithm, AVX optimized"); MODULE_LICENSE("GPL"); -MODULE_ALIAS("twofish"); +MODULE_ALIAS_CRYPTO("twofish"); --- linux-3.13.0.orig/arch/x86/crypto/twofish_glue.c +++ linux-3.13.0/arch/x86/crypto/twofish_glue.c @@ -96,5 +96,5 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION ("Twofish Cipher Algorithm, asm optimized"); -MODULE_ALIAS("twofish"); -MODULE_ALIAS("twofish-asm"); +MODULE_ALIAS_CRYPTO("twofish"); +MODULE_ALIAS_CRYPTO("twofish-asm"); --- linux-3.13.0.orig/arch/x86/crypto/twofish_glue_3way.c +++ linux-3.13.0/arch/x86/crypto/twofish_glue_3way.c @@ -495,5 +495,5 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Twofish Cipher Algorithm, 3-way parallel asm optimized"); -MODULE_ALIAS("twofish"); -MODULE_ALIAS("twofish-asm"); +MODULE_ALIAS_CRYPTO("twofish"); +MODULE_ALIAS_CRYPTO("twofish-asm"); --- linux-3.13.0.orig/arch/x86/ia32/ia32entry.S +++ linux-3.13.0/arch/x86/ia32/ia32entry.S @@ -151,6 +151,16 @@ 1: movl (%rbp),%ebp _ASM_EXTABLE(1b,ia32_badarg) ASM_CLAC + + /* + * Sysenter doesn't filter flags, so we need to clear NT + * ourselves. To save a few cycles, we can check whether + * NT was set instead of doing an unconditional popfq. + */ + testl $X86_EFLAGS_NT,EFLAGS-ARGOFFSET(%rsp) + jnz sysenter_fix_flags +sysenter_flags_fixed: + orl $TS_COMPAT,TI_status+THREAD_INFO(%rsp,RIP-ARGOFFSET) testl $_TIF_WORK_SYSCALL_ENTRY,TI_flags+THREAD_INFO(%rsp,RIP-ARGOFFSET) CFI_REMEMBER_STATE @@ -184,6 +194,8 @@ TRACE_IRQS_ON ENABLE_INTERRUPTS_SYSEXIT32 + CFI_RESTORE_STATE + #ifdef CONFIG_AUDITSYSCALL .macro auditsys_entry_common movl %esi,%r9d /* 6th arg: 4th syscall arg */ @@ -226,7 +238,6 @@ .endm sysenter_auditsys: - CFI_RESTORE_STATE auditsys_entry_common movl %ebp,%r9d /* reload 6th syscall arg */ jmp sysenter_dispatch @@ -235,6 +246,11 @@ auditsys_exit sysexit_from_sys_call #endif +sysenter_fix_flags: + pushq_cfi $(X86_EFLAGS_IF|X86_EFLAGS_FIXED) + popfq_cfi + jmp sysenter_flags_fixed + sysenter_tracesys: #ifdef CONFIG_AUDITSYSCALL testl $(_TIF_WORK_SYSCALL_ENTRY & ~_TIF_SYSCALL_AUDIT),TI_flags+THREAD_INFO(%rsp,RIP-ARGOFFSET) @@ -406,6 +422,7 @@ /*CFI_REL_OFFSET cs,CS-RIP*/ CFI_REL_OFFSET rip,RIP-RIP PARAVIRT_ADJUST_EXCEPTION_FRAME + ASM_CLAC /* Do this early to minimize exposure */ SWAPGS /* * No need to follow this irqs on/off section: the syscall --- linux-3.13.0.orig/arch/x86/include/asm/apic.h +++ linux-3.13.0/arch/x86/include/asm/apic.h @@ -699,8 +699,8 @@ static inline void entering_ack_irq(void) { - ack_APIC_irq(); entering_irq(); + ack_APIC_irq(); } static inline void exiting_irq(void) --- linux-3.13.0.orig/arch/x86/include/asm/boot.h +++ linux-3.13.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-3.13.0.orig/arch/x86/include/asm/cpufeature.h +++ linux-3.13.0/arch/x86/include/asm/cpufeature.h @@ -203,6 +203,7 @@ #define X86_FEATURE_DECODEASSISTS (8*32+12) /* AMD Decode Assists support */ #define X86_FEATURE_PAUSEFILTER (8*32+13) /* AMD filtered pause intercept */ #define X86_FEATURE_PFTHRESHOLD (8*32+14) /* AMD pause filter threshold */ +#define X86_FEATURE_VMMCALL ( 8*32+15) /* Prefer vmmcall to vmcall */ /* Intel-defined CPU features, CPUID level 0x00000007:0 (ebx), word 9 */ @@ -216,9 +217,13 @@ #define X86_FEATURE_ERMS (9*32+ 9) /* Enhanced REP MOVSB/STOSB */ #define X86_FEATURE_INVPCID (9*32+10) /* Invalidate Processor Context ID */ #define X86_FEATURE_RTM (9*32+11) /* Restricted Transactional Memory */ +#define X86_FEATURE_AVX512F (9*32+16) /* AVX-512 Foundation */ #define X86_FEATURE_RDSEED (9*32+18) /* The RDSEED instruction */ #define X86_FEATURE_ADX (9*32+19) /* The ADCX and ADOX instructions */ #define X86_FEATURE_SMAP (9*32+20) /* Supervisor Mode Access Prevention */ +#define X86_FEATURE_AVX512PF (9*32+26) /* AVX-512 Prefetch */ +#define X86_FEATURE_AVX512ER (9*32+27) /* AVX-512 Exponential and Reciprocal */ +#define X86_FEATURE_AVX512CD (9*32+28) /* AVX-512 Conflict Detection */ /* * BUG word(s) --- linux-3.13.0.orig/arch/x86/include/asm/desc.h +++ linux-3.13.0/arch/x86/include/asm/desc.h @@ -251,7 +251,8 @@ gdt[GDT_ENTRY_TLS_MIN + i] = t->tls_array[i]; } -#define _LDT_empty(info) \ +/* This intentionally ignores lm, since 32-bit apps don't have that field. */ +#define LDT_empty(info) \ ((info)->base_addr == 0 && \ (info)->limit == 0 && \ (info)->contents == 0 && \ @@ -261,11 +262,18 @@ (info)->seg_not_present == 1 && \ (info)->useable == 0) -#ifdef CONFIG_X86_64 -#define LDT_empty(info) (_LDT_empty(info) && ((info)->lm == 0)) -#else -#define LDT_empty(info) (_LDT_empty(info)) -#endif +/* Lots of programs expect an all-zero user_desc to mean "no segment at all". */ +static inline bool LDT_zero(const struct user_desc *info) +{ + return (info->base_addr == 0 && + info->limit == 0 && + info->contents == 0 && + info->read_exec_only == 0 && + info->seg_32bit == 0 && + info->limit_in_pages == 0 && + info->seg_not_present == 0 && + info->useable == 0); +} static inline void clear_LDT(void) { --- linux-3.13.0.orig/arch/x86/include/asm/dma-mapping.h +++ linux-3.13.0/arch/x86/include/asm/dma-mapping.h @@ -163,8 +163,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-3.13.0.orig/arch/x86/include/asm/efi.h +++ linux-3.13.0/arch/x86/include/asm/efi.h @@ -1,6 +1,24 @@ #ifndef _ASM_X86_EFI_H #define _ASM_X86_EFI_H +/* + * We map the EFI regions needed for runtime services non-contiguously, + * with preserved alignment on virtual addresses starting from -4G down + * for a total max space of 64G. This way, we provide for stable runtime + * services addresses across kernels so that a kexec'd kernel can still + * use them. + * + * This is the main reason why we're doing stable VA mappings for RT + * services. + * + * This flag is used in conjuction with a chicken bit called + * "efi=old_map" which can be used as a fallback to the old runtime + * services mapping method in case there's some b0rkage with a + * particular EFI implementation (haha, it is hard to hold up the + * sarcasm here...). + */ +#define EFI_OLD_MEMMAP EFI_ARCH_1 + #ifdef CONFIG_X86_32 #define EFI_LOADER_SIGNATURE "EL32" @@ -69,24 +87,31 @@ efi_call6((f), (u64)(a1), (u64)(a2), (u64)(a3), \ (u64)(a4), (u64)(a5), (u64)(a6)) +#define _efi_call_virtX(x, f, ...) \ +({ \ + efi_status_t __s; \ + \ + efi_sync_low_kernel_mappings(); \ + preempt_disable(); \ + __s = efi_call##x((void *)efi.systab->runtime->f, __VA_ARGS__); \ + preempt_enable(); \ + __s; \ +}) + #define efi_call_virt0(f) \ - efi_call0((efi.systab->runtime->f)) -#define efi_call_virt1(f, a1) \ - efi_call1((efi.systab->runtime->f), (u64)(a1)) -#define efi_call_virt2(f, a1, a2) \ - efi_call2((efi.systab->runtime->f), (u64)(a1), (u64)(a2)) -#define efi_call_virt3(f, a1, a2, a3) \ - efi_call3((efi.systab->runtime->f), (u64)(a1), (u64)(a2), \ - (u64)(a3)) -#define efi_call_virt4(f, a1, a2, a3, a4) \ - efi_call4((efi.systab->runtime->f), (u64)(a1), (u64)(a2), \ - (u64)(a3), (u64)(a4)) -#define efi_call_virt5(f, a1, a2, a3, a4, a5) \ - efi_call5((efi.systab->runtime->f), (u64)(a1), (u64)(a2), \ - (u64)(a3), (u64)(a4), (u64)(a5)) -#define efi_call_virt6(f, a1, a2, a3, a4, a5, a6) \ - efi_call6((efi.systab->runtime->f), (u64)(a1), (u64)(a2), \ - (u64)(a3), (u64)(a4), (u64)(a5), (u64)(a6)) + _efi_call_virtX(0, f) +#define efi_call_virt1(f, a1) \ + _efi_call_virtX(1, f, (u64)(a1)) +#define efi_call_virt2(f, a1, a2) \ + _efi_call_virtX(2, f, (u64)(a1), (u64)(a2)) +#define efi_call_virt3(f, a1, a2, a3) \ + _efi_call_virtX(3, f, (u64)(a1), (u64)(a2), (u64)(a3)) +#define efi_call_virt4(f, a1, a2, a3, a4) \ + _efi_call_virtX(4, f, (u64)(a1), (u64)(a2), (u64)(a3), (u64)(a4)) +#define efi_call_virt5(f, a1, a2, a3, a4, a5) \ + _efi_call_virtX(5, f, (u64)(a1), (u64)(a2), (u64)(a3), (u64)(a4), (u64)(a5)) +#define efi_call_virt6(f, a1, a2, a3, a4, a5, a6) \ + _efi_call_virtX(6, f, (u64)(a1), (u64)(a2), (u64)(a3), (u64)(a4), (u64)(a5), (u64)(a6)) extern void __iomem *efi_ioremap(unsigned long addr, unsigned long size, u32 type, u64 attribute); @@ -95,12 +120,19 @@ extern int add_efi_memmap; extern unsigned long x86_efi_facility; +extern struct efi_scratch efi_scratch; extern void efi_set_executable(efi_memory_desc_t *md, bool executable); extern int efi_memblock_x86_reserve_range(void); extern void efi_call_phys_prelog(void); extern void efi_call_phys_epilog(void); extern void efi_unmap_memmap(void); extern void efi_memory_uc(u64 addr, unsigned long size); +extern void __init efi_map_region(efi_memory_desc_t *md); +extern void efi_sync_low_kernel_mappings(void); +extern void efi_setup_page_tables(void); +extern void __init old_map_region(efi_memory_desc_t *md); +extern void __init runtime_code_page_mkexec(void); +extern void __init efi_runtime_mkexec(void); #ifdef CONFIG_EFI --- linux-3.13.0.orig/arch/x86/include/asm/elf.h +++ linux-3.13.0/arch/x86/include/asm/elf.h @@ -155,8 +155,9 @@ #define elf_check_arch(x) \ ((x)->e_machine == EM_X86_64) -#define compat_elf_check_arch(x) \ - (elf_check_arch_ia32(x) || (x)->e_machine == EM_X86_64) +#define compat_elf_check_arch(x) \ + (elf_check_arch_ia32(x) || \ + (IS_ENABLED(CONFIG_X86_X32_ABI) && (x)->e_machine == EM_X86_64)) #if __USER32_DS != __USER_DS # error "The following code assumes __USER32_DS == __USER_DS" --- linux-3.13.0.orig/arch/x86/include/asm/espfix.h +++ linux-3.13.0/arch/x86/include/asm/espfix.h @@ -0,0 +1,16 @@ +#ifndef _ASM_X86_ESPFIX_H +#define _ASM_X86_ESPFIX_H + +#ifdef CONFIG_X86_64 + +#include + +DECLARE_PER_CPU_READ_MOSTLY(unsigned long, espfix_stack); +DECLARE_PER_CPU_READ_MOSTLY(unsigned long, espfix_waddr); + +extern void init_espfix_bsp(void); +extern void init_espfix_ap(void); + +#endif /* CONFIG_X86_64 */ + +#endif /* _ASM_X86_ESPFIX_H */ --- linux-3.13.0.orig/arch/x86/include/asm/fpu-internal.h +++ linux-3.13.0/arch/x86/include/asm/fpu-internal.h @@ -368,7 +368,7 @@ preempt_disable(); tsk->thread.fpu_counter = 0; __drop_fpu(tsk); - clear_used_math(); + clear_stopped_child_used_math(tsk); preempt_enable(); } --- linux-3.13.0.orig/arch/x86/include/asm/hugetlb.h +++ linux-3.13.0/arch/x86/include/asm/hugetlb.h @@ -52,6 +52,7 @@ static inline void huge_ptep_clear_flush(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep) { + ptep_clear_flush(vma, addr, ptep); } static inline int huge_pte_none(pte_t pte) --- linux-3.13.0.orig/arch/x86/include/asm/irqflags.h +++ linux-3.13.0/arch/x86/include/asm/irqflags.h @@ -129,7 +129,7 @@ #define PARAVIRT_ADJUST_EXCEPTION_FRAME /* */ -#define INTERRUPT_RETURN iretq +#define INTERRUPT_RETURN jmp native_iret #define USERGS_SYSRET64 \ swapgs; \ sysretq; --- linux-3.13.0.orig/arch/x86/include/asm/kvm_host.h +++ linux-3.13.0/arch/x86/include/asm/kvm_host.h @@ -208,6 +208,7 @@ unsigned nxe:1; unsigned cr0_wp:1; unsigned smep_andnot_wp:1; + unsigned smap_andnot_wp:1; }; }; @@ -462,7 +463,7 @@ bool nmi_injected; /* Trying to inject an NMI this entry */ struct mtrr_state_type mtrr_state; - u32 pat; + u64 pat; int switch_db_regs; unsigned long db[KVM_NR_DB_REGS]; @@ -480,6 +481,7 @@ u64 mmio_gva; unsigned access; gfn_t mmio_gfn; + u64 mmio_gen; struct kvm_pmu pmu; @@ -570,7 +572,7 @@ struct kvm_pic *vpic; struct kvm_ioapic *vioapic; struct kvm_pit *vpit; - int vapics_in_nmi_mode; + atomic_t vapics_in_nmi_mode; struct mutex apic_map_lock; struct kvm_apic_map *apic_map; @@ -762,6 +764,8 @@ struct x86_instruction_info *info, enum x86_intercept_stage stage); void (*handle_external_intr)(struct kvm_vcpu *vcpu); + + int (*check_nested_events)(struct kvm_vcpu *vcpu, bool external_intr); }; struct kvm_arch_async_pf { @@ -980,6 +984,20 @@ kvm_queue_exception_e(vcpu, GP_VECTOR, error_code); } +static inline u64 get_canonical(u64 la) +{ + return ((int64_t)la << 16) >> 16; +} + +static inline bool is_noncanonical_address(u64 la) +{ +#ifdef CONFIG_X86_64 + return get_canonical(la) != la; +#else + return false; +#endif +} + #define TSS_IOPB_BASE_OFFSET 0x66 #define TSS_BASE_SIZE 0x68 #define TSS_IOPB_SIZE (65536 / 8) @@ -1038,7 +1056,7 @@ void kvm_vcpu_reset(struct kvm_vcpu *vcpu); void kvm_define_shared_msr(unsigned index, u32 msr); -void kvm_set_shared_msr(unsigned index, u64 val, u64 mask); +int kvm_set_shared_msr(unsigned index, u64 val, u64 mask); bool kvm_is_linear_rip(struct kvm_vcpu *vcpu, unsigned long linear_rip); --- linux-3.13.0.orig/arch/x86/include/asm/kvm_para.h +++ linux-3.13.0/arch/x86/include/asm/kvm_para.h @@ -2,6 +2,7 @@ #define _ASM_X86_KVM_PARA_H #include +#include #include extern void kvmclock_init(void); @@ -16,10 +17,15 @@ } #endif /* CONFIG_KVM_GUEST */ -/* This instruction is vmcall. On non-VT architectures, it will generate a - * trap that we will then rewrite to the appropriate instruction. +#ifdef CONFIG_DEBUG_RODATA +#define KVM_HYPERCALL \ + ALTERNATIVE(".byte 0x0f,0x01,0xc1", ".byte 0x0f,0x01,0xd9", X86_FEATURE_VMMCALL) +#else +/* On AMD processors, vmcall will generate a trap that we will + * then rewrite to the appropriate instruction. */ #define KVM_HYPERCALL ".byte 0x0f,0x01,0xc1" +#endif /* For KVM hypercalls, a three-byte sequence of either the vmcall or the vmmcall * instruction. The hypervisor may replace it with something else but only the @@ -85,28 +91,9 @@ return ret; } -static inline uint32_t kvm_cpuid_base(void) -{ - if (boot_cpu_data.cpuid_level < 0) - return 0; /* So we don't blow up on old processors */ - - if (cpu_has_hypervisor) - return hypervisor_cpuid_base("KVMKVMKVM\0\0\0", 0); - - return 0; -} - -static inline bool kvm_para_available(void) -{ - return kvm_cpuid_base() != 0; -} - -static inline unsigned int kvm_arch_para_features(void) -{ - return cpuid_eax(KVM_CPUID_FEATURES); -} - #ifdef CONFIG_KVM_GUEST +bool kvm_para_available(void); +unsigned int kvm_arch_para_features(void); void __init kvm_guest_init(void); void kvm_async_pf_task_wait(u32 token); void kvm_async_pf_task_wake(u32 token); @@ -126,6 +113,16 @@ #define kvm_async_pf_task_wait(T) do {} while(0) #define kvm_async_pf_task_wake(T) do {} while(0) +static inline bool kvm_para_available(void) +{ + return 0; +} + +static inline unsigned int kvm_arch_para_features(void) +{ + return 0; +} + static inline u32 kvm_read_and_reset_pf_reason(void) { return 0; --- linux-3.13.0.orig/arch/x86/include/asm/mmu_context.h +++ linux-3.13.0/arch/x86/include/asm/mmu_context.h @@ -42,7 +42,34 @@ #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); /* Stop flush ipis for the previous mm */ @@ -65,10 +92,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); load_LDT_nolock(&next->context); --- linux-3.13.0.orig/arch/x86/include/asm/page_32_types.h +++ linux-3.13.0/arch/x86/include/asm/page_32_types.h @@ -20,7 +20,6 @@ #define THREAD_SIZE_ORDER 1 #define THREAD_SIZE (PAGE_SIZE << THREAD_SIZE_ORDER) -#define STACKFAULT_STACK 0 #define DOUBLEFAULT_STACK 1 #define NMI_STACK 0 #define DEBUG_STACK 0 --- linux-3.13.0.orig/arch/x86/include/asm/page_64_types.h +++ linux-3.13.0/arch/x86/include/asm/page_64_types.h @@ -14,12 +14,11 @@ #define IRQ_STACK_ORDER 2 #define IRQ_STACK_SIZE (PAGE_SIZE << IRQ_STACK_ORDER) -#define STACKFAULT_STACK 1 -#define DOUBLEFAULT_STACK 2 -#define NMI_STACK 3 -#define DEBUG_STACK 4 -#define MCE_STACK 5 -#define N_EXCEPTION_STACKS 5 /* hw limit: 7 */ +#define DOUBLEFAULT_STACK 1 +#define NMI_STACK 2 +#define DEBUG_STACK 3 +#define MCE_STACK 4 +#define N_EXCEPTION_STACKS 4 /* hw limit: 7 */ #define PUD_PAGE_SIZE (_AC(1, UL) << PUD_SHIFT) #define PUD_PAGE_MASK (~(PUD_PAGE_SIZE-1)) --- linux-3.13.0.orig/arch/x86/include/asm/page_types.h +++ linux-3.13.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) @@ -17,9 +23,6 @@ (ie, 32-bit PAE). */ #define PHYSICAL_PAGE_MASK (((signed long)PAGE_MASK) & __PHYSICAL_MASK) -#define PMD_PAGE_SIZE (_AC(1, UL) << PMD_SHIFT) -#define PMD_PAGE_MASK (~(PMD_PAGE_SIZE-1)) - #define HPAGE_SHIFT PMD_SHIFT #define HPAGE_SIZE (_AC(1,UL) << HPAGE_SHIFT) #define HPAGE_MASK (~(HPAGE_SIZE - 1)) --- linux-3.13.0.orig/arch/x86/include/asm/pgtable_64_types.h +++ linux-3.13.0/arch/x86/include/asm/pgtable_64_types.h @@ -61,6 +61,8 @@ #define MODULES_VADDR _AC(0xffffffffa0000000, UL) #define MODULES_END _AC(0xffffffffff000000, UL) #define MODULES_LEN (MODULES_END - MODULES_VADDR) +#define ESPFIX_PGD_ENTRY _AC(-2, UL) +#define ESPFIX_BASE_ADDR (ESPFIX_PGD_ENTRY << PGDIR_SHIFT) #define EARLY_DYNAMIC_PAGE_TABLES 64 --- linux-3.13.0.orig/arch/x86/include/asm/pgtable_types.h +++ linux-3.13.0/arch/x86/include/asm/pgtable_types.h @@ -121,7 +121,8 @@ /* Set of bits not changed in pte_modify */ #define _PAGE_CHG_MASK (PTE_PFN_MASK | _PAGE_PCD | _PAGE_PWT | \ - _PAGE_SPECIAL | _PAGE_ACCESSED | _PAGE_DIRTY) + _PAGE_SPECIAL | _PAGE_ACCESSED | _PAGE_DIRTY | \ + _PAGE_SOFT_DIRTY) #define _HPAGE_CHG_MASK (_PAGE_CHG_MASK | _PAGE_PSE) #define _PAGE_CACHE_MASK (_PAGE_PCD | _PAGE_PWT) @@ -382,7 +383,8 @@ */ extern pte_t *lookup_address(unsigned long address, unsigned int *level); extern phys_addr_t slow_virt_to_phys(void *__address); - +extern int kernel_map_pages_in_pgd(pgd_t *pgd, u64 pfn, unsigned long address, + unsigned numpages, unsigned long page_flags); #endif /* !__ASSEMBLY__ */ #endif /* _ASM_X86_PGTABLE_DEFS_H */ --- linux-3.13.0.orig/arch/x86/include/asm/ptrace.h +++ linux-3.13.0/arch/x86/include/asm/ptrace.h @@ -232,6 +232,22 @@ #define ARCH_HAS_USER_SINGLE_STEP_INFO +/* + * When hitting ptrace_stop(), we cannot return using SYSRET because + * that does not restore the full CPU state, only a minimal set. The + * ptracer can change arbitrary register values, which is usually okay + * because the usual ptrace stops run off the signal delivery path which + * forces IRET; however, ptrace_event() stops happen in arbitrary places + * in the kernel and don't force IRET path. + * + * So force IRET path after a ptrace stop. + */ +#define arch_ptrace_stop_needed(code, info) \ +({ \ + set_thread_flag(TIF_NOTIFY_RESUME); \ + false; \ +}) + struct user_desc; extern int do_get_thread_area(struct task_struct *p, int idx, struct user_desc __user *info); --- linux-3.13.0.orig/arch/x86/include/asm/pvclock.h +++ linux-3.13.0/arch/x86/include/asm/pvclock.h @@ -95,6 +95,7 @@ struct pvclock_vsyscall_time_info { struct pvclock_vcpu_time_info pvti; + u32 migrate_count; } __attribute__((__aligned__(SMP_CACHE_BYTES))); #define PVTI_SIZE sizeof(struct pvclock_vsyscall_time_info) --- linux-3.13.0.orig/arch/x86/include/asm/segment.h +++ linux-3.13.0/arch/x86/include/asm/segment.h @@ -212,10 +212,20 @@ #define TLS_SIZE (GDT_ENTRY_TLS_ENTRIES * 8) #ifdef __KERNEL__ + +/* + * early_idt_handler_array is an array of entry points referenced in the + * early IDT. For simplicity, it's a real array with one entry point + * every nine bytes. That leaves room for an optional 'push $0' if the + * vector has no error code (two bytes), a 'push $vector_number' (two + * bytes), and a jump to the common entry code (up to five bytes). + */ +#define EARLY_IDT_HANDLER_SIZE 9 + #ifndef __ASSEMBLY__ -extern const char early_idt_handlers[NUM_EXCEPTION_VECTORS][2+2+5]; +extern const char early_idt_handler_array[NUM_EXCEPTION_VECTORS][EARLY_IDT_HANDLER_SIZE]; #ifdef CONFIG_TRACING -#define trace_early_idt_handlers early_idt_handlers +# define trace_early_idt_handler_array early_idt_handler_array #endif /* --- linux-3.13.0.orig/arch/x86/include/asm/setup.h +++ linux-3.13.0/arch/x86/include/asm/setup.h @@ -64,6 +64,8 @@ #ifndef _SETUP +#include + /* * This is set up by the setup-routine at boot-time */ --- linux-3.13.0.orig/arch/x86/include/asm/topology.h +++ linux-3.13.0/arch/x86/include/asm/topology.h @@ -119,9 +119,10 @@ extern const struct cpumask *cpu_coregroup_mask(int cpu); -#ifdef ENABLE_TOPO_DEFINES #define topology_physical_package_id(cpu) (cpu_data(cpu).phys_proc_id) #define topology_core_id(cpu) (cpu_data(cpu).cpu_core_id) + +#ifdef ENABLE_TOPO_DEFINES #define topology_core_cpumask(cpu) (per_cpu(cpu_core_map, cpu)) #define topology_thread_cpumask(cpu) (per_cpu(cpu_sibling_map, cpu)) #endif --- linux-3.13.0.orig/arch/x86/include/asm/traps.h +++ linux-3.13.0/arch/x86/include/asm/traps.h @@ -39,6 +39,7 @@ #ifdef CONFIG_TRACING asmlinkage void trace_page_fault(void); +#define trace_stack_segment stack_segment #define trace_divide_error divide_error #define trace_bounds bounds #define trace_invalid_op invalid_op --- linux-3.13.0.orig/arch/x86/include/asm/vga.h +++ linux-3.13.0/arch/x86/include/asm/vga.h @@ -17,10 +17,4 @@ #define vga_readb(x) (*(x)) #define vga_writeb(x, y) (*(y) = (x)) -#ifdef CONFIG_FB_EFI -#define __ARCH_HAS_VGA_DEFAULT_DEVICE -extern struct pci_dev *vga_default_device(void); -extern void vga_set_default_device(struct pci_dev *pdev); -#endif - #endif /* _ASM_X86_VGA_H */ --- linux-3.13.0.orig/arch/x86/include/asm/vsyscall.h +++ linux-3.13.0/arch/x86/include/asm/vsyscall.h @@ -34,7 +34,7 @@ native_read_tscp(&p); } else { /* Load per CPU data from GDT */ - asm("lsl %1,%0" : "=r" (p) : "r" (__PER_CPU_SEG)); + asm volatile ("lsl %1,%0" : "=r" (p) : "r" (__PER_CPU_SEG)); } return p; --- linux-3.13.0.orig/arch/x86/include/asm/xen/hypervisor.h +++ linux-3.13.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-3.13.0.orig/arch/x86/include/asm/xsave.h +++ linux-3.13.0/arch/x86/include/asm/xsave.h @@ -6,9 +6,14 @@ #define XSTATE_CPUID 0x0000000d -#define XSTATE_FP 0x1 -#define XSTATE_SSE 0x2 -#define XSTATE_YMM 0x4 +#define XSTATE_FP 0x1 +#define XSTATE_SSE 0x2 +#define XSTATE_YMM 0x4 +#define XSTATE_BNDREGS 0x8 +#define XSTATE_BNDCSR 0x10 +#define XSTATE_OPMASK 0x20 +#define XSTATE_ZMM_Hi256 0x40 +#define XSTATE_Hi16_ZMM 0x80 #define XSTATE_FPSSE (XSTATE_FP | XSTATE_SSE) @@ -23,7 +28,7 @@ /* * These are the features that the OS can handle currently. */ -#define XCNTXT_MASK (XSTATE_FP | XSTATE_SSE | XSTATE_YMM) +#define XCNTXT_MASK (XSTATE_FP | XSTATE_SSE | XSTATE_YMM | XSTATE_OPMASK | XSTATE_ZMM_Hi256 | XSTATE_Hi16_ZMM) #ifdef CONFIG_X86_64 #define REX_PREFIX "0x48, " --- linux-3.13.0.orig/arch/x86/include/uapi/asm/kvm.h +++ linux-3.13.0/arch/x86/include/uapi/asm/kvm.h @@ -23,6 +23,7 @@ #define GP_VECTOR 13 #define PF_VECTOR 14 #define MF_VECTOR 16 +#define AC_VECTOR 17 #define MC_VECTOR 18 /* Select x86 specific features in */ --- linux-3.13.0.orig/arch/x86/include/uapi/asm/ldt.h +++ linux-3.13.0/arch/x86/include/uapi/asm/ldt.h @@ -28,6 +28,13 @@ unsigned int seg_not_present:1; unsigned int useable:1; #ifdef __x86_64__ + /* + * Because this bit is not present in 32-bit user code, user + * programs can pass uninitialized values here. Therefore, in + * any context in which a user_desc comes from a 32-bit program, + * the kernel must act as though lm == 0, regardless of the + * actual value. + */ unsigned int lm:1; #endif }; --- linux-3.13.0.orig/arch/x86/include/uapi/asm/msr-index.h +++ linux-3.13.0/arch/x86/include/uapi/asm/msr-index.h @@ -184,6 +184,7 @@ #define MSR_AMD64_PATCH_LOADER 0xc0010020 #define MSR_AMD64_OSVW_ID_LENGTH 0xc0010140 #define MSR_AMD64_OSVW_STATUS 0xc0010141 +#define MSR_AMD64_LS_CFG 0xc0011020 #define MSR_AMD64_DC_CFG 0xc0011022 #define MSR_AMD64_BU_CFG2 0xc001102a #define MSR_AMD64_IBSFETCHCTL 0xc0011030 @@ -231,6 +232,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-3.13.0.orig/arch/x86/include/uapi/asm/vmx.h +++ linux-3.13.0/arch/x86/include/uapi/asm/vmx.h @@ -67,6 +67,7 @@ #define EXIT_REASON_EPT_MISCONFIG 49 #define EXIT_REASON_INVEPT 50 #define EXIT_REASON_PREEMPTION_TIMER 52 +#define EXIT_REASON_INVVPID 53 #define EXIT_REASON_WBINVD 54 #define EXIT_REASON_XSETBV 55 #define EXIT_REASON_APIC_WRITE 56 @@ -114,6 +115,7 @@ { EXIT_REASON_EOI_INDUCED, "EOI_INDUCED" }, \ { EXIT_REASON_INVALID_STATE, "INVALID_STATE" }, \ { EXIT_REASON_INVD, "INVD" }, \ + { EXIT_REASON_INVVPID, "INVVPID" }, \ { EXIT_REASON_INVPCID, "INVPCID" } #endif /* _UAPIVMX_H */ --- linux-3.13.0.orig/arch/x86/kernel/Makefile +++ linux-3.13.0/arch/x86/kernel/Makefile @@ -29,6 +29,7 @@ obj-y += syscall_$(BITS).o obj-$(CONFIG_X86_64) += vsyscall_64.o obj-$(CONFIG_X86_64) += vsyscall_emu_64.o +obj-$(CONFIG_X86_ESPFIX64) += espfix_64.o obj-y += bootflag.o e820.o obj-y += pci-dma.o quirks.o topology.o kdebugfs.o obj-y += alternative.o i8253.o pci-nommu.o hw_breakpoint.o --- linux-3.13.0.orig/arch/x86/kernel/acpi/sleep.c +++ linux-3.13.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-3.13.0.orig/arch/x86/kernel/apic/apic.c +++ linux-3.13.0/arch/x86/kernel/apic/apic.c @@ -352,6 +352,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; } @@ -1283,7 +1290,7 @@ unsigned int value, queued; int i, j, acked = 0; unsigned long long tsc = 0, ntsc; - long long max_loops = cpu_khz; + long long max_loops = cpu_khz ? cpu_khz : 1000000; if (cpu_has_tsc) rdtscll(tsc); @@ -1380,7 +1387,7 @@ break; } if (queued) { - if (cpu_has_tsc) { + if (cpu_has_tsc && cpu_khz) { rdtscll(ntsc); max_loops = (cpu_khz << 10) - (ntsc - tsc); } else --- linux-3.13.0.orig/arch/x86/kernel/apic/io_apic.c +++ linux-3.13.0/arch/x86/kernel/apic/io_apic.c @@ -3610,6 +3610,7 @@ { int pin, ioapic, irq, irq_entry; const struct cpumask *mask; + struct irq_desc *desc; struct irq_data *idata; if (skip_ioapic_setup == 1) @@ -3625,7 +3626,9 @@ if ((ioapic > 0) && (irq > 16)) 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 @@ -3636,6 +3639,7 @@ mask = apic->target_cpus(); x86_io_apic_ops.set_affinity(idata, mask, false); + raw_spin_unlock_irq(&desc->lock); } } --- linux-3.13.0.orig/arch/x86/kernel/cpu/amd.c +++ linux-3.13.0/arch/x86/kernel/cpu/amd.c @@ -219,7 +219,7 @@ */ WARN_ONCE(1, "WARNING: This combination of AMD" " processors is not suitable for SMP.\n"); - add_taint(TAINT_UNSAFE_SMP, LOCKDEP_NOW_UNRELIABLE); + add_taint(TAINT_CPU_OUT_OF_SPEC, LOCKDEP_NOW_UNRELIABLE); } static void init_amd_k7(struct cpuinfo_x86 *c) @@ -508,6 +508,23 @@ set_cpu_cap(c, X86_FEATURE_EXTD_APICID); } #endif + + /* + * This is only needed to tell the kernel whether to use VMCALL + * and VMMCALL. VMMCALL is never executed except under virt, so + * we can set it unconditionally. + */ + set_cpu_cap(c, X86_FEATURE_VMMCALL); + + /* F16h erratum 793, CVE-2013-6885 */ + if (c->x86 == 0x16 && c->x86_model <= 0xf) { + u64 val; + + rdmsrl(MSR_AMD64_LS_CFG, val); + if (!(val & BIT(15))) + wrmsrl(MSR_AMD64_LS_CFG, val | BIT(15)); + } + } static const int amd_erratum_383[]; --- linux-3.13.0.orig/arch/x86/kernel/cpu/common.c +++ linux-3.13.0/arch/x86/kernel/cpu/common.c @@ -144,6 +144,8 @@ static int __init x86_xsave_setup(char *s) { + if (strlen(s)) + return 0; setup_clear_cpu_cap(X86_FEATURE_XSAVE); setup_clear_cpu_cap(X86_FEATURE_XSAVEOPT); setup_clear_cpu_cap(X86_FEATURE_AVX); @@ -278,14 +280,18 @@ 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)) + if (cpu_has(c, X86_FEATURE_SMAP)) { +#ifdef CONFIG_X86_SMAP set_in_cr4(X86_CR4_SMAP); +#else + clear_in_cr4(X86_CR4_SMAP); +#endif + } } /* @@ -1135,7 +1141,7 @@ /* Flags to clear on syscall */ wrmsrl(MSR_SYSCALL_MASK, X86_EFLAGS_TF|X86_EFLAGS_DF|X86_EFLAGS_IF| - X86_EFLAGS_IOPL|X86_EFLAGS_AC); + X86_EFLAGS_IOPL|X86_EFLAGS_AC|X86_EFLAGS_NT); } /* --- linux-3.13.0.orig/arch/x86/kernel/cpu/intel.c +++ linux-3.13.0/arch/x86/kernel/cpu/intel.c @@ -154,6 +154,21 @@ setup_clear_cpu_cap(X86_FEATURE_ERMS); } } + + /* + * Intel Quark Core DevMan_001.pdf section 6.4.11 + * "The operating system also is required to invalidate (i.e., flush) + * the TLB when any changes are made to any of the page table entries. + * The operating system must reload CR3 to cause the TLB to be flushed" + * + * As a result cpu_has_pge() in arch/x86/include/asm/tlbflush.h should + * be false so that __flush_tlb_all() causes CR3 insted of CR4.PGE + * to be modified + */ + if (c->x86 == 5 && c->x86_model == 9) { + pr_info("Disabling PGE capability bit\n"); + setup_clear_cpu_cap(X86_FEATURE_PGE); + } } #ifdef CONFIG_X86_32 @@ -196,6 +211,14 @@ } } +static int forcepae; +static int __init forcepae_setup(char *__unused) +{ + forcepae = 1; + return 1; +} +__setup("forcepae", forcepae_setup); + static void intel_workarounds(struct cpuinfo_x86 *c) { unsigned long lo, hi; @@ -226,6 +249,17 @@ clear_cpu_cap(c, X86_FEATURE_SEP); /* + * PAE CPUID issue: many Pentium M report no PAE but may have a + * functionally usable PAE implementation. + * Forcefully enable PAE if kernel parameter "forcepae" is present. + */ + if (forcepae) { + printk(KERN_WARNING "PAE forced!\n"); + set_cpu_cap(c, X86_FEATURE_PAE); + add_taint(TAINT_CPU_OUT_OF_SPEC, LOCKDEP_NOW_UNRELIABLE); + } + + /* * P4 Xeon errata 037 workaround. * Hardware prefetcher may cause stale data to be loaded into the cache. */ @@ -628,7 +662,7 @@ tlb_flushall_shift = 5; break; case 0x63a: /* Ivybridge */ - tlb_flushall_shift = 1; + tlb_flushall_shift = 2; break; default: tlb_flushall_shift = 6; --- linux-3.13.0.orig/arch/x86/kernel/cpu/mcheck/mce.c +++ linux-3.13.0/arch/x86/kernel/cpu/mcheck/mce.c @@ -658,6 +658,7 @@ struct pt_regs *regs) { int i, ret = 0; + char *tmp; for (i = 0; i < mca_cfg.banks; i++) { m->status = mce_rdmsrl(MSR_IA32_MCx_STATUS(i)); @@ -666,8 +667,11 @@ if (quirk_no_way_out) quirk_no_way_out(i, m, regs); } - if (mce_severity(m, mca_cfg.tolerant, msg) >= MCE_PANIC_SEVERITY) + + if (mce_severity(m, mca_cfg.tolerant, &tmp) >= MCE_PANIC_SEVERITY) { + *msg = tmp; ret = 1; + } } return ret; } @@ -1037,6 +1041,17 @@ DECLARE_BITMAP(valid_banks, MAX_NR_BANKS); char *msg = "Unknown"; + /* 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; + } + } + atomic_inc(&mce_entry); this_cpu_inc(mce_exception_count); --- linux-3.13.0.orig/arch/x86/kernel/cpu/mshyperv.c +++ linux-3.13.0/arch/x86/kernel/cpu/mshyperv.c @@ -26,6 +26,7 @@ #include #include #include +#include struct ms_hyperv_info ms_hyperv; EXPORT_SYMBOL_GPL(ms_hyperv); @@ -66,6 +67,7 @@ .rating = 400, /* use this when running on Hyperv*/ .read = read_hv_clock, .mask = CLOCKSOURCE_MASK(64), + .flags = CLOCK_SOURCE_IS_CONTINUOUS, }; static void __init ms_hyperv_init_platform(void) @@ -91,20 +93,17 @@ lapic_timer_frequency = hv_lapic_frequency; printk(KERN_INFO "HyperV: LAPIC Timer Frequency: %#x\n", lapic_timer_frequency); - - /* - * On Hyper-V, when we are booting off an EFI firmware stack, - * we do not have many legacy devices including PIC, PIT etc. - */ - if (efi_enabled(EFI_BOOT)) { - printk(KERN_INFO "HyperV: Using null_legacy_pic\n"); - legacy_pic = &null_legacy_pic; - } } #endif if (ms_hyperv.features & HV_X64_MSR_TIME_REF_COUNT_AVAILABLE) clocksource_register_hz(&hyperv_cs, NSEC_PER_SEC/100); + +#ifdef CONFIG_X86_IO_APIC + no_timer_check = 1; +#endif + + mark_tsc_unstable("running on Hyper-V"); } const __refconst struct hypervisor_x86 x86_hyper_ms_hyperv = { --- linux-3.13.0.orig/arch/x86/kernel/cpu/perf_event.c +++ linux-3.13.0/arch/x86/kernel/cpu/perf_event.c @@ -1192,6 +1192,9 @@ for (i = 0; i < cpuc->n_events; i++) { if (event == cpuc->event_list[i]) { + if (i >= cpuc->n_events - cpuc->n_added) + --cpuc->n_added; + if (x86_pmu.put_event_constraints) x86_pmu.put_event_constraints(cpuc, event); @@ -1361,6 +1364,7 @@ { struct device_attribute *d; struct perf_pmu_events_attr *pmu_attr; + int offset = 0; int i, j; for (i = 0; attrs[i]; i++) { @@ -1369,7 +1373,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++) @@ -1377,6 +1381,14 @@ /* 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++; } } --- linux-3.13.0.orig/arch/x86/kernel/cpu/perf_event.h +++ linux-3.13.0/arch/x86/kernel/cpu/perf_event.h @@ -442,6 +442,7 @@ 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); --- linux-3.13.0.orig/arch/x86/kernel/cpu/perf_event_intel.c +++ linux-3.13.0/arch/x86/kernel/cpu/perf_event_intel.c @@ -1385,6 +1385,15 @@ intel_pmu_lbr_read(); /* + * CondChgd bit 63 doesn't mean any overflow status. Ignore + * and clear the bit. + */ + if (__test_and_clear_bit(63, (unsigned long *)&status)) { + if (!status) + goto done; + } + + /* * PEBS overflow sets bit 62 in the global status register */ if (__test_and_clear_bit(62, (unsigned long *)&status)) { --- linux-3.13.0.orig/arch/x86/kernel/cpu/perf_event_intel_ds.c +++ linux-3.13.0/arch/x86/kernel/cpu/perf_event_intel_ds.c @@ -241,7 +241,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; @@ -258,7 +258,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; @@ -1047,6 +1047,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; @@ -1055,6 +1056,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; --- linux-3.13.0.orig/arch/x86/kernel/cpu/perf_event_intel_uncore.c +++ linux-3.13.0/arch/x86/kernel/cpu/perf_event_intel_uncore.c @@ -2878,6 +2878,17 @@ return uncore_pmu_to_box(uncore_event_to_pmu(event), smp_processor_id()); } +/* + * Using uncore_pmu_event_init pmu event_init callback + * as a detection point for uncore events. + */ +static int uncore_pmu_event_init(struct perf_event *event); + +static bool is_uncore_event(struct perf_event *event) +{ + return event->pmu->event_init == uncore_pmu_event_init; +} + static int uncore_collect_events(struct intel_uncore_box *box, struct perf_event *leader, bool dogrp) { @@ -2892,13 +2903,18 @@ return -EINVAL; n = box->n_events; - box->event_list[n] = leader; - n++; + + if (is_uncore_event(leader)) { + box->event_list[n] = leader; + n++; + } + if (!dogrp) return n; list_for_each_entry(event, &leader->sibling_list, group_entry) { - if (event->state <= PERF_EVENT_STATE_OFF) + if (!is_uncore_event(event) || + event->state <= PERF_EVENT_STATE_OFF) continue; if (n >= max_count) --- linux-3.13.0.orig/arch/x86/kernel/dumpstack_64.c +++ linux-3.13.0/arch/x86/kernel/dumpstack_64.c @@ -24,7 +24,6 @@ [ DEBUG_STACK-1 ] = "#DB", [ NMI_STACK-1 ] = "NMI", [ DOUBLEFAULT_STACK-1 ] = "#DF", - [ STACKFAULT_STACK-1 ] = "#SS", [ MCE_STACK-1 ] = "#MC", #if DEBUG_STKSZ > EXCEPTION_STKSZ [ N_EXCEPTION_STACKS ... --- linux-3.13.0.orig/arch/x86/kernel/early-quirks.c +++ linux-3.13.0/arch/x86/kernel/early-quirks.c @@ -203,18 +203,15 @@ revision = read_pci_config_byte(num, slot, func, PCI_REVISION_ID); /* - * Revision 13 of all triggering devices id in this quirk have - * a problem draining interrupts when irq remapping is enabled, - * and should be flagged as broken. Additionally revisions 0x12 - * and 0x22 of device id 0x3405 has this problem. + * Revision <= 13 of all triggering devices id in this quirk + * have a problem draining interrupts when irq remapping is + * enabled, and should be flagged as broken. Additionally + * revision 0x22 of device id 0x3405 has this problem. */ - if (revision == 0x13) + if (revision <= 0x13) set_irq_remapping_broken(); - else if ((device == 0x3405) && - ((revision == 0x12) || - (revision == 0x22))) + else if (device == 0x3405 && revision == 0x22) set_irq_remapping_broken(); - } /* --- linux-3.13.0.orig/arch/x86/kernel/entry_32.S +++ linux-3.13.0/arch/x86/kernel/entry_32.S @@ -431,8 +431,9 @@ jnz sysenter_audit sysenter_do_call: cmpl $(NR_syscalls), %eax - jae syscall_badsys + jae sysenter_badsys call *sys_call_table(,%eax,4) +sysenter_after_call: movl %eax,PT_EAX(%esp) LOCKDEP_SYS_EXIT DISABLE_INTERRUPTS(CLBR_ANY) @@ -513,6 +514,7 @@ jae syscall_badsys syscall_call: call *sys_call_table(,%eax,4) +syscall_after_call: movl %eax,PT_EAX(%esp) # store the return value syscall_exit: LOCKDEP_SYS_EXIT @@ -527,6 +529,7 @@ restore_all: TRACE_IRQS_IRET restore_all_notrace: +#ifdef CONFIG_X86_ESPFIX32 movl PT_EFLAGS(%esp), %eax # mix EFLAGS, SS and CS # Warning: PT_OLDSS(%esp) contains the wrong/random values if we # are returning to the kernel. @@ -537,6 +540,7 @@ cmpl $((SEGMENT_LDT << 8) | USER_RPL), %eax CFI_REMEMBER_STATE je ldt_ss # returning to user-space with LDT SS +#endif restore_nocheck: RESTORE_REGS 4 # skip orig_eax/error_code irq_return: @@ -549,13 +553,9 @@ .previous _ASM_EXTABLE(irq_return,iret_exc) +#ifdef CONFIG_X86_ESPFIX32 CFI_RESTORE_STATE ldt_ss: - larl PT_OLDSS(%esp), %eax - jnz restore_nocheck - testl $0x00400000, %eax # returning to 32bit stack? - jnz restore_nocheck # allright, normal return - #ifdef CONFIG_PARAVIRT /* * The kernel can't run on a non-flat stack if paravirt mode @@ -597,6 +597,7 @@ lss (%esp), %esp /* switch to espfix segment */ CFI_ADJUST_CFA_OFFSET -8 jmp restore_nocheck +#endif CFI_ENDPROC ENDPROC(system_call) @@ -687,8 +688,13 @@ END(syscall_fault) syscall_badsys: - movl $-ENOSYS,PT_EAX(%esp) - jmp resume_userspace + movl $-ENOSYS,%eax + jmp syscall_after_call +END(syscall_badsys) + +sysenter_badsys: + movl $-ENOSYS,%eax + jmp sysenter_after_call END(syscall_badsys) CFI_ENDPROC /* @@ -704,6 +710,7 @@ * the high word of the segment base from the GDT and swiches to the * normal stack and adjusts ESP with the matching offset. */ +#ifdef CONFIG_X86_ESPFIX32 /* fixup the stack */ mov GDT_ESPFIX_SS + 4, %al /* bits 16..23 */ mov GDT_ESPFIX_SS + 7, %ah /* bits 24..31 */ @@ -713,8 +720,10 @@ pushl_cfi %eax lss (%esp), %esp /* switch to the normal stack segment */ CFI_ADJUST_CFA_OFFSET -8 +#endif .endm .macro UNWIND_ESPFIX_STACK +#ifdef CONFIG_X86_ESPFIX32 movl %ss, %eax /* see if on espfix stack */ cmpw $__ESPFIX_SS, %ax @@ -725,6 +734,7 @@ /* switch to normal stack */ FIXUP_ESPFIX_STACK 27: +#endif .endm /* @@ -1355,11 +1365,13 @@ ENTRY(nmi) RING0_INT_FRAME ASM_CLAC +#ifdef CONFIG_X86_ESPFIX32 pushl_cfi %eax movl %ss, %eax cmpw $__ESPFIX_SS, %ax popl_cfi %eax je nmi_espfix_stack +#endif cmpl $ia32_sysenter_target,(%esp) je nmi_stack_fixup pushl_cfi %eax @@ -1399,6 +1411,7 @@ FIX_STACK 24, nmi_stack_correct, 1 jmp nmi_stack_correct +#ifdef CONFIG_X86_ESPFIX32 nmi_espfix_stack: /* We have a RING0_INT_FRAME here. * @@ -1420,6 +1433,7 @@ lss 12+4(%esp), %esp # back to espfix stack CFI_ADJUST_CFA_OFFSET -24 jmp irq_return +#endif CFI_ENDPROC END(nmi) --- linux-3.13.0.orig/arch/x86/kernel/entry_64.S +++ linux-3.13.0/arch/x86/kernel/entry_64.S @@ -58,6 +58,7 @@ #include #include #include +#include #include /* Avoid __ASSEMBLER__'ifying just for this. */ @@ -101,6 +102,39 @@ #endif .endm +#ifdef CONFIG_FRAME_POINTER +/* + * Stack traces will stop at the ftrace trampoline if the frame pointer + * is not set up properly. If fentry is used, we need to save a frame + * pointer for the parent as well as the function traced, because the + * fentry is called before the stack frame is set up, where as mcount + * is called afterward. + */ +.macro create_frame parent rip +#ifdef CC_USING_FENTRY + pushq \parent + pushq %rbp + movq %rsp, %rbp +#endif + pushq \rip + pushq %rbp + movq %rsp, %rbp +.endm + +.macro restore_frame +#ifdef CC_USING_FENTRY + addq $16, %rsp +#endif + popq %rbp + addq $8, %rsp +.endm +#else +.macro create_frame parent rip +.endm +.macro restore_frame +.endm +#endif /* CONFIG_FRAME_POINTER */ + ENTRY(ftrace_caller) /* Check if tracing was disabled (quick check) */ cmpl $0, function_trace_stop @@ -160,9 +194,13 @@ /* regs go into 4th parameter */ leaq (%rsp), %rcx + create_frame %rsi, %rdi + GLOBAL(ftrace_regs_call) call ftrace_stub + restore_frame + /* Copy flags back to SS, to restore them */ movq EFLAGS(%rsp), %rax movq %rax, SS(%rsp) @@ -541,11 +579,14 @@ testl $3, CS-ARGOFFSET(%rsp) # from kernel_thread? jz 1f - testl $_TIF_IA32, TI_flags(%rcx) # 32-bit compat task needs IRET - jnz int_ret_from_sys_call - - RESTORE_TOP_OF_STACK %rdi, -ARGOFFSET - jmp ret_from_sys_call # go to the SYSRET fastpath + /* + * By the time we get here, we have no idea whether our pt_regs, + * ti flags, and ti status came from the 64-bit SYSCALL fast path, + * the slow path, or one of the ia32entry paths. + * Use int_ret_from_sys_call to return, since it can safely handle + * all of the above. + */ + jmp int_ret_from_sys_call 1: subq $REST_SKIP, %rsp # leave space for volatiles @@ -1041,32 +1082,52 @@ irq_return: INTERRUPT_RETURN - _ASM_EXTABLE(irq_return, bad_iret) -#ifdef CONFIG_PARAVIRT ENTRY(native_iret) - iretq - _ASM_EXTABLE(native_iret, bad_iret) + /* + * Are we returning to a stack segment from the LDT? Note: in + * 64-bit mode SS:RSP on the exception stack is always valid. + */ +#ifdef CONFIG_X86_ESPFIX64 + testb $4,(SS-RIP)(%rsp) + jnz native_irq_return_ldt #endif - .section .fixup,"ax" -bad_iret: +.global native_irq_return_iret +native_irq_return_iret: /* - * The iret traps when the %cs or %ss being restored is bogus. - * We've lost the original trap vector and error code. - * #GPF is the most likely one to get for an invalid selector. - * So pretend we completed the iret and took the #GPF in user mode. - * - * We are now running with the kernel GS after exception recovery. - * But error_entry expects us to have user GS to match the user %cs, - * so swap back. + * This may fault. Non-paranoid faults on return to userspace are + * handled by fixup_bad_iret. These include #SS, #GP, and #NP. + * Double-faults due to espfix64 are handled in do_double_fault. + * Other faults here are fatal. */ - pushq $0 + iretq +#ifdef CONFIG_X86_ESPFIX64 +native_irq_return_ldt: + pushq_cfi %rax + pushq_cfi %rdi SWAPGS - jmp general_protection - - .previous + movq PER_CPU_VAR(espfix_waddr),%rdi + movq %rax,(0*8)(%rdi) /* RAX */ + movq (2*8)(%rsp),%rax /* RIP */ + movq %rax,(1*8)(%rdi) + movq (3*8)(%rsp),%rax /* CS */ + movq %rax,(2*8)(%rdi) + movq (4*8)(%rsp),%rax /* RFLAGS */ + movq %rax,(3*8)(%rdi) + movq (6*8)(%rsp),%rax /* SS */ + movq %rax,(5*8)(%rdi) + movq (5*8)(%rsp),%rax /* RSP */ + movq %rax,(4*8)(%rdi) + andl $0xffff0000,%eax + popq_cfi %rdi + orq PER_CPU_VAR(espfix_stack),%rax + SWAPGS + movq %rax,%rsp + popq_cfi %rax + jmp native_irq_return_iret +#endif /* edi: workmask, edx: work */ retint_careful: @@ -1110,9 +1171,9 @@ call preempt_schedule_irq jmp exit_intr #endif - CFI_ENDPROC END(common_interrupt) + /* * End of kprobes section */ @@ -1484,7 +1545,7 @@ paranoidzeroentry_ist debug do_debug DEBUG_STACK paranoidzeroentry_ist int3 do_int3 DEBUG_STACK -paranoiderrorentry stack_segment do_stack_segment +errorentry stack_segment do_stack_segment #ifdef CONFIG_XEN zeroentry xen_debug do_debug zeroentry xen_int3 do_int3 @@ -1594,16 +1655,15 @@ /* * There are two places in the kernel that can potentially fault with - * usergs. Handle them here. The exception handlers after iret run with - * kernel gs again, so don't set the user space flag. B stepping K8s - * sometimes report an truncated RIP for IRET exceptions returning to - * compat mode. Check for these here too. + * usergs. Handle them here. B stepping K8s sometimes report a + * truncated RIP for IRET exceptions returning to compat mode. Check + * for these here too. */ error_kernelspace: incl %ebx - leaq irq_return(%rip),%rcx + leaq native_irq_return_iret(%rip),%rcx cmpq %rcx,RIP+8(%rsp) - je error_swapgs + je error_bad_iret movl %ecx,%eax /* zero extend */ cmpq %rax,RIP+8(%rsp) je bstep_iret @@ -1614,7 +1674,15 @@ bstep_iret: /* Fix truncated RIP */ movq %rcx,RIP+8(%rsp) - jmp error_swapgs + /* fall through */ + +error_bad_iret: + SWAPGS + mov %rsp,%rdi + call fixup_bad_iret + mov %rax,%rsp + decl %ebx /* Return to usergs */ + jmp error_sti CFI_ENDPROC END(error_entry) @@ -1638,22 +1706,21 @@ CFI_ENDPROC END(error_exit) -/* - * Test if a given stack is an NMI stack or not. - */ - .macro test_in_nmi reg stack nmi_ret normal_ret - cmpq %\reg, \stack - ja \normal_ret - subq $EXCEPTION_STKSZ, %\reg - cmpq %\reg, \stack - jb \normal_ret - jmp \nmi_ret - .endm - - /* runs on exception stack */ +/* Runs on exception stack */ ENTRY(nmi) INTR_FRAME + /* + * 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. @@ -1671,11 +1738,12 @@ * If the variable is not set and the stack is not the NMI * stack then: * o Set the special variable on the stack - * o Copy the interrupt frame into a "saved" location on the stack - * o Copy the interrupt frame into a "copy" location on the stack + * o Copy the interrupt frame into an "outermost" location on the + * stack + * o Copy the interrupt frame into an "iret" location on the stack * o Continue processing the NMI * If the variable is set or the previous stack is the NMI stack: - * o Modify the "copy" location to jump to the repeate_nmi + * o Modify the "iret" location to jump to the repeat_nmi * o return back to the first NMI * * Now on exit of the first NMI, we first clear the stack variable @@ -1684,52 +1752,197 @@ * a nested NMI that updated the copy interrupt stack frame, a * jump will be made to the repeat_nmi code that will handle the second * NMI. + * + * However, espfix prevents us from directly returning to userspace + * with a single IRET instruction. Similarly, IRET to user mode + * can fault. We therefore handle NMIs from user space like + * other IST entries. */ /* Use %rdx as out temp variable throughout */ pushq_cfi %rdx CFI_REL_OFFSET rdx, 0 + testb $3, CS-RIP+8(%rsp) + jz .Lnmi_from_kernel + /* - * If %cs was not the kernel segment, then the NMI triggered in user - * space, which means it is definitely not nested. + * NMI from user mode. We need to run on the thread stack, but we + * can't go through the normal entry paths: NMIs are masked, and + * 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_UNSAFE_STACK + cld + movq %rsp, %rdx + movq PER_CPU_VAR(kernel_stack), %rsp + addq $KERNEL_STACK_OFFSET, %rsp + pushq 5*8(%rdx) /* pt_regs->ss */ + pushq 4*8(%rdx) /* pt_regs->rsp */ + pushq 3*8(%rdx) /* pt_regs->flags */ + pushq 2*8(%rdx) /* pt_regs->cs */ + pushq 1*8(%rdx) /* pt_regs->rip */ + pushq $-1 /* pt_regs->orig_ax */ + pushq %rdi /* pt_regs->di */ + pushq %rsi /* pt_regs->si */ + pushq (%rdx) /* pt_regs->dx */ + pushq %rcx /* pt_regs->cx */ + pushq %rax /* pt_regs->ax */ + pushq %r8 /* pt_regs->r8 */ + pushq %r9 /* pt_regs->r9 */ + pushq %r10 /* pt_regs->r10 */ + pushq %r11 /* pt_regs->r11 */ + pushq %rbx /* pt_regs->rbx */ + pushq %rbp /* pt_regs->rbp */ + pushq %r12 /* pt_regs->r12 */ + pushq %r13 /* pt_regs->r13 */ + pushq %r14 /* pt_regs->r14 */ + pushq %r15 /* pt_regs->r15 */ + + /* + * At this point we no longer need to worry about stack damage + * due to nesting -- we're on the normal thread stack and we're + * done with the NMI stack. + */ + + movq %rsp, %rdi + movq $-1, %rsi + call do_nmi + + /* + * Return back to user mode. We must *not* do the normal exit + * work, because we don't want to enable interrupts. Fortunately, + * do_nmi doesn't modify pt_regs. + */ + SWAPGS + + /* + * Open-code the entire return process for compatibility with varying + * register layouts across different kernel versions. + */ + addq $6*8, %rsp /* skip bx, bp, and r12-r15 */ + popq %r11 /* pt_regs->r11 */ + popq %r10 /* pt_regs->r10 */ + popq %r9 /* pt_regs->r9 */ + popq %r8 /* pt_regs->r8 */ + popq %rax /* pt_regs->ax */ + popq %rcx /* pt_regs->cx */ + popq %rdx /* pt_regs->dx */ + popq %rsi /* pt_regs->si */ + popq %rdi /* pt_regs->di */ + addq $8, %rsp /* skip orig_ax */ + INTERRUPT_RETURN + +.Lnmi_from_kernel: + /* + * Here's what our stack frame will look like: + * +---------------------------------------------------------+ + * | original SS | + * | original Return RSP | + * | original RFLAGS | + * | original CS | + * | original RIP | + * +---------------------------------------------------------+ + * | temp storage for rdx | + * +---------------------------------------------------------+ + * | "NMI executing" variable | + * +---------------------------------------------------------+ + * | iret SS } Copied from "outermost" frame | + * | iret Return RSP } on each loop iteration; overwritten | + * | iret RFLAGS } by a nested NMI to force another | + * | iret CS } iteration if needed. | + * | iret RIP } | + * +---------------------------------------------------------+ + * | outermost SS } initialized in first_nmi; | + * | outermost Return RSP } will not be changed before | + * | outermost RFLAGS } NMI processing is done. | + * | outermost CS } Copied to "iret" frame on each | + * | outermost RIP } iteration. | + * +---------------------------------------------------------+ + * | pt_regs | + * +---------------------------------------------------------+ + * + * The "original" frame is used by hardware. Before re-enabling + * NMIs, we need to be done with it, and we need to leave enough + * space for the asm code here. + * + * We return by executing IRET while RSP points to the "iret" frame. + * That will either return for real or it will loop back into NMI + * processing. + * + * The "outermost" frame is copied to the "iret" frame on each + * iteration of the loop, so each iteration starts with the "iret" + * frame pointing to the final return target. */ - cmpl $__KERNEL_CS, 16(%rsp) - jne first_nmi /* - * Check the special variable on the stack to see if NMIs are - * executing. + * Determine whether we're a nested NMI. + * + * If we interrupted kernel code between repeat_nmi and + * end_repeat_nmi, then we are a nested NMI. We must not + * modify the "iret" frame because it's being written by + * the outer NMI. That's okay: the outer NMI handler is + * about to about to call do_nmi anyway, so we can just + * resume the outer NMI. + */ + + movq $repeat_nmi, %rdx + cmpq 8(%rsp), %rdx + ja 1f + movq $end_repeat_nmi, %rdx + cmpq 8(%rsp), %rdx + ja nested_nmi_out +1: + + /* + * Now check "NMI executing". If it's set, then we're nested. + * This will not detect if we interrupted an outer NMI just + * before IRET. */ cmpl $1, -8(%rsp) je nested_nmi /* - * Now test if the previous stack was an NMI stack. - * We need the double check. We check the NMI stack to satisfy the - * race when the first NMI clears the variable before returning. - * We check the variable because the first NMI could be in a - * breakpoint routine using a breakpoint stack. - */ - lea 6*8(%rsp), %rdx - test_in_nmi rdx, 4*8(%rsp), nested_nmi, first_nmi + * Now test if the previous stack was an NMI stack. This covers + * the case where we interrupt an outer NMI after it clears + * "NMI executing" but before IRET. We need to be careful, though: + * there is one case in which RSP could point to the NMI stack + * despite there being no NMI active: naughty userspace controls + * RSP at the very beginning of the SYSCALL targets. We can + * pull a fast one on naughty userspace, though: we program + * SYSCALL to mask DF, so userspace cannot cause DF to be set + * if it controls the kernel's RSP. We set DF before we clear + * "NMI executing". + */ + lea 6*8(%rsp), %rdx + /* Compare the NMI stack (rdx) with the stack we came from (4*8(%rsp)) */ + cmpq %rdx, 4*8(%rsp) + /* If the stack pointer is above the NMI stack, this is a normal NMI */ + ja first_nmi + subq $EXCEPTION_STKSZ, %rdx + cmpq %rdx, 4*8(%rsp) + /* If it is below the NMI stack, it is a normal NMI */ + jb first_nmi + + /* Ah, it is within the NMI stack. */ + + testb $(X86_EFLAGS_DF >> 8), (3*8 + 1)(%rsp) + jz first_nmi /* RSP was user controlled. */ + CFI_REMEMBER_STATE + /* This is a nested NMI. */ + nested_nmi: /* - * Do nothing if we interrupted the fixup in repeat_nmi. - * It's about to repeat the NMI handler, so we are fine - * with ignoring this one. - */ - movq $repeat_nmi, %rdx - cmpq 8(%rsp), %rdx - ja 1f - movq $end_repeat_nmi, %rdx - cmpq 8(%rsp), %rdx - ja nested_nmi_out - -1: - /* Set up the interrupted NMIs stack to jump to repeat_nmi */ + * Modify the "iret" frame to point to repeat_nmi, forcing another + * iteration of NMI handling. + */ leaq -1*8(%rsp), %rdx movq %rdx, %rsp CFI_ADJUST_CFA_OFFSET 1*8 @@ -1748,60 +1961,23 @@ popq_cfi %rdx CFI_RESTORE rdx - /* No need to check faults here */ + /* We are returning to kernel mode, so this cannot result in a fault. */ INTERRUPT_RETURN CFI_RESTORE_STATE first_nmi: - /* - * Because nested NMIs will use the pushed location that we - * stored in rdx, we must keep that space available. - * Here's what our stack frame will look like: - * +-------------------------+ - * | original SS | - * | original Return RSP | - * | original RFLAGS | - * | original CS | - * | original RIP | - * +-------------------------+ - * | temp storage for rdx | - * +-------------------------+ - * | NMI executing variable | - * +-------------------------+ - * | copied SS | - * | copied Return RSP | - * | copied RFLAGS | - * | copied CS | - * | copied RIP | - * +-------------------------+ - * | Saved SS | - * | Saved Return RSP | - * | Saved RFLAGS | - * | Saved CS | - * | Saved RIP | - * +-------------------------+ - * | pt_regs | - * +-------------------------+ - * - * The saved stack frame is used to fix up the copied stack frame - * that a nested NMI may change to make the interrupted NMI iret jump - * to the repeat_nmi. The original stack frame and the temp storage - * is also used by nested NMIs and can not be trusted on exit. - */ - /* Do not pop rdx, nested NMIs will corrupt that part of the stack */ + /* Restore rdx. */ movq (%rsp), %rdx CFI_RESTORE rdx - /* Set the NMI executing variable on the stack. */ + /* Set "NMI executing" on the stack. */ pushq_cfi $1 - /* - * Leave room for the "copied" frame - */ + /* Leave room for the "iret" frame */ subq $(5*8), %rsp CFI_ADJUST_CFA_OFFSET 5*8 - /* Copy the stack frame to the Saved frame */ + /* Copy the "original" frame to the "outermost" frame */ .rept 5 pushq_cfi 11*8(%rsp) .endr @@ -1809,6 +1985,7 @@ /* Everything up to here is safe from nested NMIs */ +repeat_nmi: /* * If there was a nested NMI, the first NMI's iret will return * here. But NMIs are still enabled and we can take another @@ -1817,16 +1994,21 @@ * it will just return, as we are about to repeat an NMI anyway. * This makes it safe to copy to the stack frame that a nested * NMI will update. - */ -repeat_nmi: - /* - * Update the stack variable to say we are still in NMI (the update - * is benign for the non-repeat case, where 1 was pushed just above - * to this very stack slot). + * + * RSP is pointing to "outermost RIP". gsbase is unknown, but, if + * we're repeating an NMI, gsbase has the same value that it had on + * the first iteration. paranoid_entry will load the kernel + * gsbase if needed before we call do_nmi. + * + * Set "NMI executing" in case we came back here via IRET. */ movq $1, 10*8(%rsp) - /* Make another copy, this one may be modified by nested NMIs */ + /* + * Copy the "outermost" frame to the "iret" frame. NMIs that nest + * here must not modify the "iret" frame while we're writing to + * it or it will end up containing garbage. + */ addq $(10*8), %rsp CFI_ADJUST_CFA_OFFSET -10*8 .rept 5 @@ -1837,9 +2019,9 @@ end_repeat_nmi: /* - * Everything below this point can be preempted by a nested - * NMI if the first NMI took an exception and reset our iret stack - * so that we repeat another NMI. + * Everything below this point can be preempted by a nested NMI. + * If this happens, then the inner NMI will change the "iret" + * frame to point back to repeat_nmi. */ pushq_cfi $-1 /* ORIG_RAX: no syscall to restart */ subq $ORIG_RAX-R15, %rsp @@ -1854,39 +2036,35 @@ call save_paranoid DEFAULT_FRAME 0 - /* - * Save off the CR2 register. If we take a page fault in the NMI then - * it could corrupt the CR2 value. If the NMI preempts a page fault - * handler before it was able to read the CR2 register, and then the - * NMI itself takes a page fault, the page fault that was preempted - * will read the information from the NMI page fault and not the - * origin fault. Save it off and restore it if it changes. - * Use the r12 callee-saved register. - */ - movq %cr2, %r12 - /* paranoidentry do_nmi, 0; without TRACE_IRQS_OFF */ movq %rsp,%rdi movq $-1,%rsi call do_nmi - /* Did the NMI take a page fault? Restore cr2 if it did */ - movq %cr2, %rcx - cmpq %rcx, %r12 - je 1f - movq %r12, %cr2 -1: - testl %ebx,%ebx /* swapgs needed? */ jnz nmi_restore nmi_swapgs: SWAPGS_UNSAFE_STACK nmi_restore: - /* Pop the extra iret frame at once */ + RESTORE_ALL 6*8 - /* Clear the NMI executing stack variable */ - movq $0, 5*8(%rsp) + /* + * Clear "NMI executing". Set DF first so that we can easily + * distinguish the remaining code between here and IRET from + * the SYSCALL entry and exit paths. On a native kernel, we + * could just inspect RIP, but, on paravirt kernels, + * INTERRUPT_RETURN can translate into a jump into a + * hypercall page. + */ + std + movq $0, 5*8(%rsp) /* clear "NMI executing" */ + + /* + * INTERRUPT_RETURN reads the "iret" frame and exits the NMI + * stack in a single instruction. We are returning to kernel + * mode, so this cannot result in a fault. + */ jmp irq_return CFI_ENDPROC END(nmi) --- linux-3.13.0.orig/arch/x86/kernel/espfix_64.c +++ linux-3.13.0/arch/x86/kernel/espfix_64.c @@ -0,0 +1,208 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 2014 Intel Corporation; author: H. Peter Anvin + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * The IRET instruction, when returning to a 16-bit segment, only + * restores the bottom 16 bits of the user space stack pointer. This + * causes some 16-bit software to break, but it also leaks kernel state + * to user space. + * + * This works around this by creating percpu "ministacks", each of which + * is mapped 2^16 times 64K apart. When we detect that the return SS is + * on the LDT, we copy the IRET frame to the ministack and use the + * relevant alias to return to userspace. The ministacks are mapped + * readonly, so if the IRET fault we promote #GP to #DF which is an IST + * vector and thus has its own stack; we then do the fixup in the #DF + * handler. + * + * This file sets up the ministacks and the related page tables. The + * actual ministack invocation is in entry_64.S. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * Note: we only need 6*8 = 48 bytes for the espfix stack, but round + * it up to a cache line to avoid unnecessary sharing. + */ +#define ESPFIX_STACK_SIZE (8*8UL) +#define ESPFIX_STACKS_PER_PAGE (PAGE_SIZE/ESPFIX_STACK_SIZE) + +/* There is address space for how many espfix pages? */ +#define ESPFIX_PAGE_SPACE (1UL << (PGDIR_SHIFT-PAGE_SHIFT-16)) + +#define ESPFIX_MAX_CPUS (ESPFIX_STACKS_PER_PAGE * ESPFIX_PAGE_SPACE) +#if CONFIG_NR_CPUS > ESPFIX_MAX_CPUS +# error "Need more than one PGD for the ESPFIX hack" +#endif + +#define PGALLOC_GFP (GFP_KERNEL | __GFP_NOTRACK | __GFP_REPEAT | __GFP_ZERO) + +/* This contains the *bottom* address of the espfix stack */ +DEFINE_PER_CPU_READ_MOSTLY(unsigned long, espfix_stack); +DEFINE_PER_CPU_READ_MOSTLY(unsigned long, espfix_waddr); + +/* Initialization mutex - should this be a spinlock? */ +static DEFINE_MUTEX(espfix_init_mutex); + +/* Page allocation bitmap - each page serves ESPFIX_STACKS_PER_PAGE CPUs */ +#define ESPFIX_MAX_PAGES DIV_ROUND_UP(CONFIG_NR_CPUS, ESPFIX_STACKS_PER_PAGE) +static void *espfix_pages[ESPFIX_MAX_PAGES]; + +static __page_aligned_bss pud_t espfix_pud_page[PTRS_PER_PUD] + __aligned(PAGE_SIZE); + +static unsigned int page_random, slot_random; + +/* + * This returns the bottom address of the espfix stack for a specific CPU. + * The math allows for a non-power-of-two ESPFIX_STACK_SIZE, in which case + * we have to account for some amount of padding at the end of each page. + */ +static inline unsigned long espfix_base_addr(unsigned int cpu) +{ + unsigned long page, slot; + unsigned long addr; + + page = (cpu / ESPFIX_STACKS_PER_PAGE) ^ page_random; + slot = (cpu + slot_random) % ESPFIX_STACKS_PER_PAGE; + addr = (page << PAGE_SHIFT) + (slot * ESPFIX_STACK_SIZE); + addr = (addr & 0xffffUL) | ((addr & ~0xffffUL) << 16); + addr += ESPFIX_BASE_ADDR; + return addr; +} + +#define PTE_STRIDE (65536/PAGE_SIZE) +#define ESPFIX_PTE_CLONES (PTRS_PER_PTE/PTE_STRIDE) +#define ESPFIX_PMD_CLONES PTRS_PER_PMD +#define ESPFIX_PUD_CLONES (65536/(ESPFIX_PTE_CLONES*ESPFIX_PMD_CLONES)) + +#define PGTABLE_PROT ((_KERNPG_TABLE & ~_PAGE_RW) | _PAGE_NX) + +static void init_espfix_random(void) +{ + unsigned long rand; + + /* + * This is run before the entropy pools are initialized, + * but this is hopefully better than nothing. + */ + if (!arch_get_random_long(&rand)) { + /* The constant is an arbitrary large prime */ + rdtscll(rand); + rand *= 0xc345c6b72fd16123UL; + } + + slot_random = rand % ESPFIX_STACKS_PER_PAGE; + page_random = (rand / ESPFIX_STACKS_PER_PAGE) + & (ESPFIX_PAGE_SPACE - 1); +} + +void __init init_espfix_bsp(void) +{ + pgd_t *pgd_p; + pteval_t ptemask; + + ptemask = __supported_pte_mask; + + /* Install the espfix pud into the kernel page directory */ + pgd_p = &init_level4_pgt[pgd_index(ESPFIX_BASE_ADDR)]; + pgd_populate(&init_mm, pgd_p, (pud_t *)espfix_pud_page); + + /* Randomize the locations */ + init_espfix_random(); + + /* The rest is the same as for any other processor */ + init_espfix_ap(); +} + +void init_espfix_ap(void) +{ + unsigned int cpu, page; + unsigned long addr; + pud_t pud, *pud_p; + pmd_t pmd, *pmd_p; + pte_t pte, *pte_p; + int n; + void *stack_page; + pteval_t ptemask; + + /* We only have to do this once... */ + if (likely(this_cpu_read(espfix_stack))) + return; /* Already initialized */ + + cpu = smp_processor_id(); + addr = espfix_base_addr(cpu); + page = cpu/ESPFIX_STACKS_PER_PAGE; + + /* Did another CPU already set this up? */ + stack_page = ACCESS_ONCE(espfix_pages[page]); + if (likely(stack_page)) + goto done; + + mutex_lock(&espfix_init_mutex); + + /* Did we race on the lock? */ + stack_page = ACCESS_ONCE(espfix_pages[page]); + if (stack_page) + goto unlock_done; + + ptemask = __supported_pte_mask; + + pud_p = &espfix_pud_page[pud_index(addr)]; + pud = *pud_p; + if (!pud_present(pud)) { + pmd_p = (pmd_t *)__get_free_page(PGALLOC_GFP); + pud = __pud(__pa(pmd_p) | (PGTABLE_PROT & ptemask)); + paravirt_alloc_pmd(&init_mm, __pa(pmd_p) >> PAGE_SHIFT); + for (n = 0; n < ESPFIX_PUD_CLONES; n++) + set_pud(&pud_p[n], pud); + } + + pmd_p = pmd_offset(&pud, addr); + pmd = *pmd_p; + if (!pmd_present(pmd)) { + pte_p = (pte_t *)__get_free_page(PGALLOC_GFP); + pmd = __pmd(__pa(pte_p) | (PGTABLE_PROT & ptemask)); + paravirt_alloc_pte(&init_mm, __pa(pte_p) >> PAGE_SHIFT); + for (n = 0; n < ESPFIX_PMD_CLONES; n++) + set_pmd(&pmd_p[n], pmd); + } + + pte_p = pte_offset_kernel(&pmd, addr); + stack_page = (void *)__get_free_page(GFP_KERNEL); + pte = __pte(__pa(stack_page) | (__PAGE_KERNEL_RO & ptemask)); + for (n = 0; n < ESPFIX_PTE_CLONES; n++) + set_pte(&pte_p[n*PTE_STRIDE], pte); + + /* Job is done for this CPU and any CPU which shares this page */ + ACCESS_ONCE(espfix_pages[page]) = stack_page; + +unlock_done: + mutex_unlock(&espfix_init_mutex); +done: + this_cpu_write(espfix_stack, addr); + this_cpu_write(espfix_waddr, (unsigned long)stack_page + + (addr & ~PAGE_MASK)); +} --- linux-3.13.0.orig/arch/x86/kernel/ftrace.c +++ linux-3.13.0/arch/x86/kernel/ftrace.c @@ -77,8 +77,7 @@ return addr >= start && addr < end; } -static int -do_ftrace_mod_code(unsigned long ip, const void *new_code) +static unsigned long text_ip_addr(unsigned long ip) { /* * On x86_64, kernel text mappings are mapped read-only with @@ -91,7 +90,7 @@ if (within(ip, (unsigned long)_text, (unsigned long)_etext)) ip = (unsigned long)__va(__pa_symbol(ip)); - return probe_kernel_write((void *)ip, new_code, MCOUNT_INSN_SIZE); + return ip; } static const unsigned char *ftrace_nop_replace(void) @@ -123,8 +122,10 @@ if (memcmp(replaced, old_code, MCOUNT_INSN_SIZE) != 0) return -EINVAL; + ip = text_ip_addr(ip); + /* replace the text with the new text */ - if (do_ftrace_mod_code(ip, new_code)) + if (probe_kernel_write((void *)ip, new_code, MCOUNT_INSN_SIZE)) return -EPERM; sync_core(); @@ -221,37 +222,51 @@ return -EINVAL; } -int ftrace_update_ftrace_func(ftrace_func_t func) +static unsigned long ftrace_update_func; + +static int update_ftrace_func(unsigned long ip, void *new) { - unsigned long ip = (unsigned long)(&ftrace_call); - unsigned char old[MCOUNT_INSN_SIZE], *new; + unsigned char old[MCOUNT_INSN_SIZE]; int ret; - memcpy(old, &ftrace_call, MCOUNT_INSN_SIZE); - new = ftrace_call_replace(ip, (unsigned long)func); + memcpy(old, (void *)ip, MCOUNT_INSN_SIZE); + + ftrace_update_func = ip; + /* Make sure the breakpoints see the ftrace_update_func update */ + smp_wmb(); /* See comment above by declaration of modifying_ftrace_code */ atomic_inc(&modifying_ftrace_code); ret = ftrace_modify_code(ip, old, new); + atomic_dec(&modifying_ftrace_code); + + return ret; +} + +int ftrace_update_ftrace_func(ftrace_func_t func) +{ + unsigned long ip = (unsigned long)(&ftrace_call); + unsigned char *new; + int ret; + + new = ftrace_call_replace(ip, (unsigned long)func); + ret = update_ftrace_func(ip, new); + /* Also update the regs callback function */ if (!ret) { ip = (unsigned long)(&ftrace_regs_call); - memcpy(old, &ftrace_regs_call, MCOUNT_INSN_SIZE); new = ftrace_call_replace(ip, (unsigned long)func); - ret = ftrace_modify_code(ip, old, new); + ret = update_ftrace_func(ip, new); } - atomic_dec(&modifying_ftrace_code); - return ret; } static int is_ftrace_caller(unsigned long ip) { - if (ip == (unsigned long)(&ftrace_call) || - ip == (unsigned long)(&ftrace_regs_call)) + if (ip == ftrace_update_func) return 1; return 0; @@ -677,45 +692,41 @@ #ifdef CONFIG_DYNAMIC_FTRACE extern void ftrace_graph_call(void); -static int ftrace_mod_jmp(unsigned long ip, - int old_offset, int new_offset) +static unsigned char *ftrace_jmp_replace(unsigned long ip, unsigned long addr) { - unsigned char code[MCOUNT_INSN_SIZE]; + static union ftrace_code_union calc; - if (probe_kernel_read(code, (void *)ip, MCOUNT_INSN_SIZE)) - return -EFAULT; + /* Jmp not a call (ignore the .e8) */ + calc.e8 = 0xe9; + calc.offset = ftrace_calc_offset(ip + MCOUNT_INSN_SIZE, addr); - if (code[0] != 0xe9 || old_offset != *(int *)(&code[1])) - return -EINVAL; + /* + * ftrace external locks synchronize the access to the static variable. + */ + return calc.code; +} - *(int *)(&code[1]) = new_offset; +static int ftrace_mod_jmp(unsigned long ip, void *func) +{ + unsigned char *new; - if (do_ftrace_mod_code(ip, &code)) - return -EPERM; + new = ftrace_jmp_replace(ip, (unsigned long)func); - return 0; + return update_ftrace_func(ip, new); } int ftrace_enable_ftrace_graph_caller(void) { unsigned long ip = (unsigned long)(&ftrace_graph_call); - int old_offset, new_offset; - - old_offset = (unsigned long)(&ftrace_stub) - (ip + MCOUNT_INSN_SIZE); - new_offset = (unsigned long)(&ftrace_graph_caller) - (ip + MCOUNT_INSN_SIZE); - return ftrace_mod_jmp(ip, old_offset, new_offset); + return ftrace_mod_jmp(ip, &ftrace_graph_caller); } int ftrace_disable_ftrace_graph_caller(void) { unsigned long ip = (unsigned long)(&ftrace_graph_call); - int old_offset, new_offset; - - old_offset = (unsigned long)(&ftrace_graph_caller) - (ip + MCOUNT_INSN_SIZE); - new_offset = (unsigned long)(&ftrace_stub) - (ip + MCOUNT_INSN_SIZE); - return ftrace_mod_jmp(ip, old_offset, new_offset); + return ftrace_mod_jmp(ip, &ftrace_stub); } #endif /* !CONFIG_DYNAMIC_FTRACE */ --- linux-3.13.0.orig/arch/x86/kernel/head64.c +++ linux-3.13.0/arch/x86/kernel/head64.c @@ -162,7 +162,7 @@ clear_bss(); for (i = 0; i < NUM_EXCEPTION_VECTORS; i++) - set_intr_gate(i, early_idt_handlers[i]); + set_intr_gate(i, early_idt_handler_array[i]); load_idt((const struct desc_ptr *)&idt_descr); copy_bootdata(__va(real_mode_data)); --- linux-3.13.0.orig/arch/x86/kernel/head_32.S +++ linux-3.13.0/arch/x86/kernel/head_32.S @@ -477,21 +477,22 @@ __INIT setup_once: /* - * Set up a idt with 256 entries pointing to ignore_int, - * interrupt gates. It doesn't actually load idt - that needs - * to be done on each CPU. Interrupts are enabled elsewhere, - * when we can be relatively sure everything is ok. + * Set up a idt with 256 interrupt gates that push zero if there + * is no error code and then jump to early_idt_handler_common. + * It doesn't actually load the idt - that needs to be done on + * each CPU. Interrupts are enabled elsewhere, when we can be + * relatively sure everything is ok. */ movl $idt_table,%edi - movl $early_idt_handlers,%eax + movl $early_idt_handler_array,%eax movl $NUM_EXCEPTION_VECTORS,%ecx 1: movl %eax,(%edi) movl %eax,4(%edi) /* interrupt gate, dpl=0, present */ movl $(0x8E000000 + __KERNEL_CS),2(%edi) - addl $9,%eax + addl $EARLY_IDT_HANDLER_SIZE,%eax addl $8,%edi loop 1b @@ -523,27 +524,33 @@ andl $0,setup_once_ref /* Once is enough, thanks */ ret -ENTRY(early_idt_handlers) +ENTRY(early_idt_handler_array) # 36(%esp) %eflags # 32(%esp) %cs # 28(%esp) %eip # 24(%rsp) error code i = 0 .rept NUM_EXCEPTION_VECTORS - .if (EXCEPTION_ERRCODE_MASK >> i) & 1 - ASM_NOP2 - .else + .ifeq (EXCEPTION_ERRCODE_MASK >> i) & 1 pushl $0 # Dummy error code, to make stack frame uniform .endif pushl $i # 20(%esp) Vector number - jmp early_idt_handler + jmp early_idt_handler_common i = i + 1 + .fill early_idt_handler_array + i*EARLY_IDT_HANDLER_SIZE - ., 1, 0xcc .endr -ENDPROC(early_idt_handlers) +ENDPROC(early_idt_handler_array) - /* This is global to keep gas from relaxing the jumps */ -ENTRY(early_idt_handler) +early_idt_handler_common: + /* + * The stack is the hardware frame, an error code or zero, and the + * vector number. + */ cld + + cmpl $2,(%esp) # X86_TRAP_NMI + je is_nmi # Ignore NMI + cmpl $2,%ss:early_recursion_flag je hlt_loop incl %ss:early_recursion_flag @@ -594,10 +601,11 @@ pop %edx pop %ecx pop %eax - addl $8,%esp /* drop vector number and error code */ decl %ss:early_recursion_flag +is_nmi: + addl $8,%esp /* drop vector number and error code */ iret -ENDPROC(early_idt_handler) +ENDPROC(early_idt_handler_common) /* This is the default interrupt "handler" :-) */ ALIGN --- linux-3.13.0.orig/arch/x86/kernel/head_64.S +++ linux-3.13.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 @@ -321,28 +329,33 @@ jmp bad_address __INIT - .globl early_idt_handlers -early_idt_handlers: +ENTRY(early_idt_handler_array) # 104(%rsp) %rflags # 96(%rsp) %cs # 88(%rsp) %rip # 80(%rsp) error code i = 0 .rept NUM_EXCEPTION_VECTORS - .if (EXCEPTION_ERRCODE_MASK >> i) & 1 - ASM_NOP2 - .else + .ifeq (EXCEPTION_ERRCODE_MASK >> i) & 1 pushq $0 # Dummy error code, to make stack frame uniform .endif pushq $i # 72(%rsp) Vector number - jmp early_idt_handler + jmp early_idt_handler_common i = i + 1 + .fill early_idt_handler_array + i*EARLY_IDT_HANDLER_SIZE - ., 1, 0xcc .endr +ENDPROC(early_idt_handler_array) -/* This is global to keep gas from relaxing the jumps */ -ENTRY(early_idt_handler) +early_idt_handler_common: + /* + * The stack is the hardware frame, an error code or zero, and the + * vector number. + */ cld + cmpl $2,(%rsp) # X86_TRAP_NMI + je is_nmi # Ignore NMI + cmpl $2,early_recursion_flag(%rip) jz 1f incl early_recursion_flag(%rip) @@ -405,10 +418,11 @@ popq %rdx popq %rcx popq %rax - addq $16,%rsp # drop vector number and error code decl early_recursion_flag(%rip) +is_nmi: + addq $16,%rsp # drop vector number and error code INTERRUPT_RETURN -ENDPROC(early_idt_handler) +ENDPROC(early_idt_handler_common) __INITDATA --- linux-3.13.0.orig/arch/x86/kernel/i387.c +++ linux-3.13.0/arch/x86/kernel/i387.c @@ -86,10 +86,19 @@ void __kernel_fpu_end(void) { - if (use_eager_fpu()) - math_state_restore(); - else + if (use_eager_fpu()) { + /* + * For eager fpu, most the time, tsk_used_math() is true. + * Restore the user math as we are done with the kernel usage. + * At few instances during thread exit, signal handling etc, + * tsk_used_math() is false. Those few places will take proper + * actions, so we don't need to restore the math here. + */ + if (likely(tsk_used_math(current))) + math_state_restore(); + } else { stts(); + } } EXPORT_SYMBOL(__kernel_fpu_end); --- linux-3.13.0.orig/arch/x86/kernel/i8259.c +++ linux-3.13.0/arch/x86/kernel/i8259.c @@ -299,13 +299,31 @@ static void init_8259A(int auto_eoi) { 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); - outb(0xff, PIC_MASTER_IMR); /* mask all of 8259A-1 */ + /* + * Check to see if we have a PIC. + * Mask all except the cascade and read + * back the value we just wrote. If we don't + * have a PIC, we will read 0xff as opposed to the + * value we wrote. + */ 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; + } + + outb(0xff, PIC_MASTER_IMR); /* mask all of 8259A-1 */ /* * outb_pic - this has to work on a wide range of PC hardware. --- linux-3.13.0.orig/arch/x86/kernel/ioport.c +++ linux-3.13.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-3.13.0.orig/arch/x86/kernel/kprobes/core.c +++ linux-3.13.0/arch/x86/kernel/kprobes/core.c @@ -1017,6 +1017,15 @@ regs->flags &= ~X86_EFLAGS_IF; trace_hardirqs_off(); regs->ip = (unsigned long)(jp->entry); + + /* + * jprobes use jprobe_return() which skips the normal return + * path of the function, and this messes up the accounting of the + * function graph tracer to get messed up. + * + * Pause function graph tracing while performing the jprobe function. + */ + pause_graph_tracing(); return 1; } @@ -1042,24 +1051,25 @@ struct kprobe_ctlblk *kcb = get_kprobe_ctlblk(); u8 *addr = (u8 *) (regs->ip - 1); struct jprobe *jp = container_of(p, struct jprobe, kp); + void *saved_sp = kcb->jprobe_saved_sp; if ((addr > (u8 *) jprobe_return) && (addr < (u8 *) jprobe_return_end)) { - if (stack_addr(regs) != kcb->jprobe_saved_sp) { + if (stack_addr(regs) != saved_sp) { struct pt_regs *saved_regs = &kcb->jprobe_saved_regs; printk(KERN_ERR "current sp %p does not match saved sp %p\n", - stack_addr(regs), kcb->jprobe_saved_sp); + stack_addr(regs), saved_sp); printk(KERN_ERR "Saved registers for jprobe %p\n", jp); show_regs(saved_regs); printk(KERN_ERR "Current registers\n"); show_regs(regs); BUG(); } + /* It's OK to start function graph tracing again */ + unpause_graph_tracing(); *regs = kcb->jprobe_saved_regs; - memcpy((kprobe_opcode_t *)(kcb->jprobe_saved_sp), - kcb->jprobes_stack, - MIN_STACK_SIZE(kcb->jprobe_saved_sp)); + memcpy(saved_sp, kcb->jprobes_stack, MIN_STACK_SIZE(saved_sp)); preempt_enable_no_resched(); return 1; } --- linux-3.13.0.orig/arch/x86/kernel/kvm.c +++ linux-3.13.0/arch/x86/kernel/kvm.c @@ -280,7 +280,14 @@ static void __init paravirt_ops_setup(void) { pv_info.name = "KVM"; - pv_info.paravirt_enabled = 1; + + /* + * KVM isn't paravirt in the sense of paravirt_enabled. A KVM + * guest kernel works like a bare metal kernel with additional + * features, and paravirt_enabled is about features that are + * missing. + */ + pv_info.paravirt_enabled = 0; if (kvm_para_has_feature(KVM_FEATURE_NOP_IO_DELAY)) pv_cpu_ops.io_delay = kvm_io_delay; @@ -500,6 +507,38 @@ #endif } +static noinline uint32_t __kvm_cpuid_base(void) +{ + if (boot_cpu_data.cpuid_level < 0) + return 0; /* So we don't blow up on old processors */ + + if (cpu_has_hypervisor) + return hypervisor_cpuid_base("KVMKVMKVM\0\0\0", 0); + + return 0; +} + +static inline uint32_t kvm_cpuid_base(void) +{ + static int kvm_cpuid_base = -1; + + if (kvm_cpuid_base == -1) + kvm_cpuid_base = __kvm_cpuid_base(); + + return kvm_cpuid_base; +} + +bool kvm_para_available(void) +{ + return kvm_cpuid_base() != 0; +} +EXPORT_SYMBOL_GPL(kvm_para_available); + +unsigned int kvm_arch_para_features(void) +{ + return cpuid_eax(kvm_cpuid_base() | KVM_CPUID_FEATURES); +} + static uint32_t __init kvm_detect(void) { return kvm_cpuid_base(); --- linux-3.13.0.orig/arch/x86/kernel/kvmclock.c +++ linux-3.13.0/arch/x86/kernel/kvmclock.c @@ -263,8 +263,6 @@ #endif kvm_get_preset_lpj(); clocksource_register_hz(&kvm_clock, NSEC_PER_SEC); - pv_info.paravirt_enabled = 1; - pv_info.name = "KVM"; if (kvm_para_has_feature(KVM_FEATURE_CLOCKSOURCE_STABLE_BIT)) pvclock_set_flags(PVCLOCK_TSC_STABLE_BIT); --- linux-3.13.0.orig/arch/x86/kernel/ldt.c +++ linux-3.13.0/arch/x86/kernel/ldt.c @@ -229,6 +229,11 @@ } } + if (!IS_ENABLED(CONFIG_X86_16BIT) && !ldt_info.seg_32bit) { + error = -EINVAL; + goto out_unlock; + } + fill_ldt(&ldt, &ldt_info); if (oldmode) ldt.avl = 0; --- linux-3.13.0.orig/arch/x86/kernel/microcode_intel_early.c +++ linux-3.13.0/arch/x86/kernel/microcode_intel_early.c @@ -321,7 +321,7 @@ unsigned int mc_saved_count = mc_saved_data->mc_saved_count; int i; - while (leftover) { + while (leftover && mc_saved_count < ARRAY_SIZE(mc_saved_tmp)) { mc_header = (struct microcode_header_intel *)ucode_ptr; mc_size = get_totalsize(mc_header); --- linux-3.13.0.orig/arch/x86/kernel/nmi.c +++ linux-3.13.0/arch/x86/kernel/nmi.c @@ -392,15 +392,15 @@ } /* - * NMIs can hit breakpoints which will cause it to lose its - * NMI context with the CPU when the breakpoint does an iret. - */ -#ifdef CONFIG_X86_32 -/* - * For i386, NMIs use the same stack as the kernel, and we can - * add a workaround to the iret problem in C (preventing nested - * NMIs if an NMI takes a trap). Simply have 3 states the NMI - * can be in: + * NMIs can page fault or hit breakpoints which will cause it to lose + * its NMI context with the CPU when the breakpoint or page fault does an IRET. + * + * As a result, NMIs can nest if NMIs get unmasked due an IRET during + * NMI processing. On x86_64, the asm glue protects us from nested NMIs + * if the outer NMI came from kernel mode, but we can still nest if the + * outer NMI came from user mode. + * + * To handle these nested NMIs, we have three states: * * 1) not running * 2) executing @@ -414,15 +414,14 @@ * (Note, the latch is binary, thus multiple NMIs triggering, * when one is running, are ignored. Only one NMI is restarted.) * - * If an NMI hits a breakpoint that executes an iret, another - * NMI can preempt it. We do not want to allow this new NMI - * to run, but we want to execute it when the first one finishes. - * We set the state to "latched", and the exit of the first NMI will - * perform a dec_return, if the result is zero (NOT_RUNNING), then - * it will simply exit the NMI handler. If not, the dec_return - * would have set the state to NMI_EXECUTING (what we want it to - * be when we are running). In this case, we simply jump back - * to rerun the NMI handler again, and restart the 'latched' NMI. + * If an NMI executes an iret, another NMI can preempt it. We do not + * want to allow this new NMI to run, but we want to execute it when the + * first one finishes. We set the state to "latched", and the exit of + * the first NMI will perform a dec_return, if the result is zero + * (NOT_RUNNING), then it will simply exit the NMI handler. If not, the + * dec_return would have set the state to NMI_EXECUTING (what we want it + * to be when we are running). In this case, we simply jump back to + * rerun the NMI handler again, and restart the 'latched' NMI. * * No trap (breakpoint or page fault) should be hit before nmi_restart, * thus there is no race between the first check of state for NOT_RUNNING @@ -445,49 +444,36 @@ static DEFINE_PER_CPU(enum nmi_states, nmi_state); static DEFINE_PER_CPU(unsigned long, nmi_cr2); -#define nmi_nesting_preprocess(regs) \ - do { \ - if (this_cpu_read(nmi_state) != NMI_NOT_RUNNING) { \ - this_cpu_write(nmi_state, NMI_LATCHED); \ - return; \ - } \ - this_cpu_write(nmi_state, NMI_EXECUTING); \ - this_cpu_write(nmi_cr2, read_cr2()); \ - } while (0); \ - nmi_restart: - -#define nmi_nesting_postprocess() \ - do { \ - if (unlikely(this_cpu_read(nmi_cr2) != read_cr2())) \ - write_cr2(this_cpu_read(nmi_cr2)); \ - if (this_cpu_dec_return(nmi_state)) \ - goto nmi_restart; \ - } while (0) -#else /* x86_64 */ +#ifdef CONFIG_X86_64 /* - * In x86_64 things are a bit more difficult. This has the same problem - * where an NMI hitting a breakpoint that calls iret will remove the - * NMI context, allowing a nested NMI to enter. What makes this more - * difficult is that both NMIs and breakpoints have their own stack. - * When a new NMI or breakpoint is executed, the stack is set to a fixed - * point. If an NMI is nested, it will have its stack set at that same - * fixed address that the first NMI had, and will start corrupting the - * stack. This is handled in entry_64.S, but the same problem exists with - * the breakpoint stack. - * - * If a breakpoint is being processed, and the debug stack is being used, - * if an NMI comes in and also hits a breakpoint, the stack pointer - * will be set to the same fixed address as the breakpoint that was - * interrupted, causing that stack to be corrupted. To handle this case, - * check if the stack that was interrupted is the debug stack, and if - * so, change the IDT so that new breakpoints will use the current stack - * and not switch to the fixed address. On return of the NMI, switch back - * to the original IDT. + * In x86_64, we need to handle breakpoint -> NMI -> breakpoint. Without + * some care, the inner breakpoint will clobber the outer breakpoint's + * stack. + * + * If a breakpoint is being processed, and the debug stack is being + * used, if an NMI comes in and also hits a breakpoint, the stack + * pointer will be set to the same fixed address as the breakpoint that + * was interrupted, causing that stack to be corrupted. To handle this + * case, check if the stack that was interrupted is the debug stack, and + * if so, change the IDT so that new breakpoints will use the current + * stack and not switch to the fixed address. On return of the NMI, + * switch back to the original IDT. */ static DEFINE_PER_CPU(int, update_debug_stack); +#endif -static inline void nmi_nesting_preprocess(struct pt_regs *regs) +dotraplinkage notrace __kprobes void +do_nmi(struct pt_regs *regs, long error_code) { + if (this_cpu_read(nmi_state) != NMI_NOT_RUNNING) { + this_cpu_write(nmi_state, NMI_LATCHED); + return; + } + this_cpu_write(nmi_state, NMI_EXECUTING); + this_cpu_write(nmi_cr2, read_cr2()); +nmi_restart: + +#ifdef CONFIG_X86_64 /* * If we interrupted a breakpoint, it is possible that * the nmi handler will have breakpoints too. We need to @@ -498,22 +484,8 @@ debug_stack_set_zero(); this_cpu_write(update_debug_stack, 1); } -} - -static inline void nmi_nesting_postprocess(void) -{ - if (unlikely(this_cpu_read(update_debug_stack))) { - debug_stack_reset(); - this_cpu_write(update_debug_stack, 0); - } -} #endif -dotraplinkage notrace __kprobes void -do_nmi(struct pt_regs *regs, long error_code) -{ - nmi_nesting_preprocess(regs); - nmi_enter(); inc_irq_stat(__nmi_count); @@ -523,8 +495,17 @@ nmi_exit(); - /* On i386, may loop back to preprocess */ - nmi_nesting_postprocess(); +#ifdef CONFIG_X86_64 + if (unlikely(this_cpu_read(update_debug_stack))) { + debug_stack_reset(); + this_cpu_write(update_debug_stack, 0); + } +#endif + + if (unlikely(this_cpu_read(nmi_cr2) != read_cr2())) + write_cr2(this_cpu_read(nmi_cr2)); + if (this_cpu_dec_return(nmi_state)) + goto nmi_restart; } void stop_nmi(void) --- linux-3.13.0.orig/arch/x86/kernel/paravirt.c +++ linux-3.13.0/arch/x86/kernel/paravirt.c @@ -40,10 +40,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-3.13.0.orig/arch/x86/kernel/paravirt_patch_64.c +++ linux-3.13.0/arch/x86/kernel/paravirt_patch_64.c @@ -6,7 +6,6 @@ DEF_NATIVE(pv_irq_ops, irq_enable, "sti"); DEF_NATIVE(pv_irq_ops, restore_fl, "pushq %rdi; popfq"); DEF_NATIVE(pv_irq_ops, save_fl, "pushfq; popq %rax"); -DEF_NATIVE(pv_cpu_ops, iret, "iretq"); DEF_NATIVE(pv_mmu_ops, read_cr2, "movq %cr2, %rax"); DEF_NATIVE(pv_mmu_ops, read_cr3, "movq %cr3, %rax"); DEF_NATIVE(pv_mmu_ops, write_cr3, "movq %rdi, %cr3"); @@ -50,7 +49,6 @@ PATCH_SITE(pv_irq_ops, save_fl); PATCH_SITE(pv_irq_ops, irq_enable); PATCH_SITE(pv_irq_ops, irq_disable); - PATCH_SITE(pv_cpu_ops, iret); PATCH_SITE(pv_cpu_ops, irq_enable_sysexit); PATCH_SITE(pv_cpu_ops, usergs_sysret32); PATCH_SITE(pv_cpu_ops, usergs_sysret64); --- linux-3.13.0.orig/arch/x86/kernel/pci-dma.c +++ linux-3.13.0/arch/x86/kernel/pci-dma.c @@ -100,8 +100,10 @@ flag |= __GFP_ZERO; again: page = NULL; - if (!(flag & GFP_ATOMIC)) + /* CMA can be used only in the context which permits sleeping */ + if (flag & __GFP_WAIT) page = dma_alloc_from_contiguous(dev, count, get_order(size)); + /* fallback */ if (!page) page = alloc_pages_node(dev_to_node(dev), flag, get_order(size)); if (!page) --- linux-3.13.0.orig/arch/x86/kernel/process.c +++ linux-3.13.0/arch/x86/kernel/process.c @@ -398,6 +398,52 @@ default_idle(); } +/* + * Intel Core2 and older machines prefer MWAIT over HALT for C1. + * We can't rely on cpuidle installing MWAIT, because it will not load + * on systems that support only C1 -- so the boot default must be MWAIT. + * + * Some AMD machines are the opposite, they depend on using HALT. + * + * So for default C1, which is used during boot until cpuidle loads, + * use MWAIT-C1 on Intel HW that has it, else use HALT. + */ +static int prefer_mwait_c1_over_halt(const struct cpuinfo_x86 *c) +{ + if (c->x86_vendor != X86_VENDOR_INTEL) + return 0; + + if (!cpu_has(c, X86_FEATURE_MWAIT)) + return 0; + + return 1; +} + +/* + * MONITOR/MWAIT with no hints, used for default default C1 state. + * This invokes MWAIT with interrutps enabled and no flags, + * which is backwards compatible with the original MWAIT implementation. + */ + +static void mwait_idle(void) +{ + if (!current_set_polling_and_test()) { + if (static_cpu_has(X86_FEATURE_CLFLUSH_MONITOR)) { + mb(); + clflush((void *)¤t_thread_info()->flags); + mb(); + } + + __monitor((void *)¤t_thread_info()->flags, 0, 0); + if (!need_resched()) + __sti_mwait(0, 0); + else + local_irq_enable(); + } else + local_irq_enable(); + __current_clr_polling(); +} + void select_idle_routine(const struct cpuinfo_x86 *c) { #ifdef CONFIG_SMP @@ -411,6 +457,9 @@ /* E400: APIC timer interrupt does not wake up CPU from C1e */ pr_info("using AMD E400 aware idle routine\n"); x86_idle = amd_e400_idle; + } else if (prefer_mwait_c1_over_halt(c)) { + pr_info("using mwait in idle threads\n"); + x86_idle = mwait_idle; } else x86_idle = default_idle; } --- linux-3.13.0.orig/arch/x86/kernel/process_64.c +++ linux-3.13.0/arch/x86/kernel/process_64.c @@ -49,6 +49,7 @@ #include #include #include +#include asmlinkage extern void ret_from_fork(void); @@ -286,24 +287,9 @@ fpu = switch_fpu_prepare(prev_p, next_p, cpu); - /* - * Reload esp0, LDT and the page table pointer: - */ + /* Reload esp0 and ss1. */ load_sp0(tss, next); - /* - * Switch DS and ES. - * This won't pick up thread selector changes, but I guess that is ok. - */ - savesegment(es, prev->es); - if (unlikely(next->es | prev->es)) - loadsegment(es, next->es); - - savesegment(ds, prev->ds); - if (unlikely(next->ds | prev->ds)) - loadsegment(ds, next->ds); - - /* We must save %fs and %gs before load_TLS() because * %fs and %gs may be cleared by load_TLS(). * @@ -312,41 +298,101 @@ savesegment(fs, fsindex); savesegment(gs, gsindex); + /* + * Load TLS before restoring any segments so that segment loads + * reference the correct GDT entries. + */ load_TLS(next, cpu); /* - * Leave lazy mode, flushing any hypercalls made here. - * This must be done before restoring TLS segments so - * the GDT and LDT are properly updated, and must be - * done before math_state_restore, so the TS bit is up - * to date. + * Leave lazy mode, flushing any hypercalls made here. This + * must be done after loading TLS entries in the GDT but before + * loading segments that might reference them, and and it must + * be done before math_state_restore, so the TS bit is up to + * date. */ arch_end_context_switch(next_p); + /* Switch DS and ES. + * + * Reading them only returns the selectors, but writing them (if + * nonzero) loads the full descriptor from the GDT or LDT. The + * LDT for next is loaded in switch_mm, and the GDT is loaded + * above. + * + * We therefore need to write new values to the segment + * registers on every context switch unless both the new and old + * values are zero. + * + * Note that we don't need to do anything for CS and SS, as + * those are saved and restored as part of pt_regs. + */ + savesegment(es, prev->es); + if (unlikely(next->es | prev->es)) + loadsegment(es, next->es); + + savesegment(ds, prev->ds); + if (unlikely(next->ds | prev->ds)) + loadsegment(ds, next->ds); + /* * Switch FS and GS. * - * Segment register != 0 always requires a reload. Also - * reload when it has changed. When prev process used 64bit - * base always reload to avoid an information leak. + * These are even more complicated than FS and GS: they have + * 64-bit bases are that controlled by arch_prctl. Those bases + * only differ from the values in the GDT or LDT if the selector + * is 0. + * + * Loading the segment register resets the hidden base part of + * the register to 0 or the value from the GDT / LDT. If the + * next base address zero, writing 0 to the segment register is + * much faster than using wrmsr to explicitly zero the base. + * + * The thread_struct.fs and thread_struct.gs values are 0 + * if the fs and gs bases respectively are not overridden + * from the values implied by fsindex and gsindex. They + * are nonzero, and store the nonzero base addresses, if + * the bases are overridden. + * + * (fs != 0 && fsindex != 0) || (gs != 0 && gsindex != 0) should + * be impossible. + * + * Therefore we need to reload the segment registers if either + * the old or new selector is nonzero, and we need to override + * the base address if next thread expects it to be overridden. + * + * This code is unnecessarily slow in the case where the old and + * new indexes are zero and the new base is nonzero -- it will + * unnecessarily write 0 to the selector before writing the new + * base address. + * + * Note: This all depends on arch_prctl being the only way that + * user code can override the segment base. Once wrfsbase and + * wrgsbase are enabled, most of this code will need to change. */ if (unlikely(fsindex | next->fsindex | prev->fs)) { loadsegment(fs, next->fsindex); + /* - * Check if the user used a selector != 0; if yes - * clear 64bit base, since overloaded base is always - * mapped to the Null selector + * If user code wrote a nonzero value to FS, then it also + * cleared the overridden base address. + * + * XXX: if user code wrote 0 to FS and cleared the base + * address itself, we won't notice and we'll incorrectly + * restore the prior base address next time we reschdule + * the process. */ if (fsindex) prev->fs = 0; } - /* when next process has a 64bit base use it */ if (next->fs) wrmsrl(MSR_FS_BASE, next->fs); prev->fsindex = fsindex; if (unlikely(gsindex | next->gsindex | prev->gs)) { load_gs_index(next->gsindex); + + /* This works (and fails) the same way as fsindex above. */ if (gsindex) prev->gs = 0; } @@ -382,6 +428,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 + return prev_p; } --- linux-3.13.0.orig/arch/x86/kernel/pvclock.c +++ linux-3.13.0/arch/x86/kernel/pvclock.c @@ -141,7 +141,46 @@ set_normalized_timespec(ts, now.tv_sec, now.tv_nsec); } +static struct pvclock_vsyscall_time_info *pvclock_vdso_info; + +static struct pvclock_vsyscall_time_info * +pvclock_get_vsyscall_user_time_info(int cpu) +{ + if (!pvclock_vdso_info) { + BUG(); + return NULL; + } + + return &pvclock_vdso_info[cpu]; +} + +struct pvclock_vcpu_time_info *pvclock_get_vsyscall_time_info(int cpu) +{ + return &pvclock_get_vsyscall_user_time_info(cpu)->pvti; +} + #ifdef CONFIG_X86_64 +static int pvclock_task_migrate(struct notifier_block *nb, unsigned long l, + void *v) +{ + struct task_migration_notifier *mn = v; + struct pvclock_vsyscall_time_info *pvti; + + pvti = pvclock_get_vsyscall_user_time_info(mn->from_cpu); + + /* this is NULL when pvclock vsyscall is not initialized */ + if (unlikely(pvti == NULL)) + return NOTIFY_DONE; + + pvti->migrate_count++; + + return NOTIFY_DONE; +} + +static struct notifier_block pvclock_migrate = { + .notifier_call = pvclock_task_migrate, +}; + /* * Initialize the generic pvclock vsyscall state. This will allocate * a/some page(s) for the per-vcpu pvclock information, set up a @@ -155,12 +194,17 @@ WARN_ON (size != PVCLOCK_VSYSCALL_NR_PAGES*PAGE_SIZE); + pvclock_vdso_info = i; + for (idx = 0; idx <= (PVCLOCK_FIXMAP_END-PVCLOCK_FIXMAP_BEGIN); idx++) { __set_fixmap(PVCLOCK_FIXMAP_BEGIN + idx, __pa(i) + (idx*PAGE_SIZE), PAGE_KERNEL_VVAR); } + + register_task_migration_notifier(&pvclock_migrate); + return 0; } #endif --- linux-3.13.0.orig/arch/x86/kernel/quirks.c +++ linux-3.13.0/arch/x86/kernel/quirks.c @@ -529,7 +529,7 @@ return; pci_read_config_dword(nb_ht, 0x60, &val); - node = val & 7; + node = pcibus_to_node(dev->bus) | (val & 7); /* * Some hardware may return an invalid node ID, * so check it first: --- linux-3.13.0.orig/arch/x86/kernel/reboot.c +++ linux-3.13.0/arch/x86/kernel/reboot.c @@ -180,6 +180,24 @@ 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 */ + .callback = set_pci_reboot, + .ident = "ASRock Q1900DC-ITX", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "ASRock"), + DMI_MATCH(DMI_BOARD_NAME, "Q1900DC-ITX"), + }, + }, /* ASUS */ { /* Handle problems with rebooting on ASUS P4S800 */ @@ -385,7 +403,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-3.13.0.orig/arch/x86/kernel/resource.c +++ linux-3.13.0/arch/x86/kernel/resource.c @@ -37,10 +37,12 @@ void arch_remove_reservations(struct resource *avail) { - /* Trim out BIOS areas (low 1MB and high 2MB) and E820 regions */ + /* + * Trim out BIOS area (high 2MB) and E820 regions. We do not remove + * the low 1MB unconditionally, as this area is needed for some ISA + * cards requiring a memory range, e.g. the i82365 PCMCIA controller. + */ if (avail->flags & IORESOURCE_MEM) { - if (avail->start < BIOS_END) - avail->start = BIOS_END; resource_clip(avail, BIOS_ROM_BASE, BIOS_ROM_END); remove_e820_regions(avail); --- linux-3.13.0.orig/arch/x86/kernel/setup.c +++ linux-3.13.0/arch/x86/kernel/setup.c @@ -1160,6 +1160,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-3.13.0.orig/arch/x86/kernel/signal.c +++ linux-3.13.0/arch/x86/kernel/signal.c @@ -673,16 +673,24 @@ * handler too. */ regs->flags &= ~(X86_EFLAGS_DF|X86_EFLAGS_RF|X86_EFLAGS_TF); + /* + * Ensure the signal handler starts with the new fpu state. + */ + if (used_math()) + drop_init_fpu(current); } signal_setup_done(failed, ksig, test_thread_flag(TIF_SINGLESTEP)); } -#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 @@ -711,7 +719,7 @@ break; case -ERESTART_RESTARTBLOCK: - regs->ax = NR_restart_syscall; + regs->ax = get_nr_restart_syscall(regs); regs->ip -= 2; break; } --- linux-3.13.0.orig/arch/x86/kernel/smpboot.c +++ linux-3.13.0/arch/x86/kernel/smpboot.c @@ -243,6 +243,13 @@ check_tsc_sync_target(); /* + * Enable the espfix hack for this CPU + */ +#ifdef CONFIG_X86_ESPFIX64 + init_espfix_ap(); +#endif + + /* * We need to hold vector_lock so there the set of online cpus * does not change while we are assigning vectors to cpus. Holding * this lock ensures we don't half assign or remove an irq from a cpu. @@ -1280,6 +1287,9 @@ for_each_cpu(sibling, cpu_sibling_mask(cpu)) cpumask_clear_cpu(cpu, cpu_sibling_mask(sibling)); + for_each_cpu(sibling, cpu_llc_shared_mask(cpu)) + cpumask_clear_cpu(cpu, cpu_llc_shared_mask(sibling)); + cpumask_clear(cpu_llc_shared_mask(cpu)); cpumask_clear(cpu_sibling_mask(cpu)); cpumask_clear(cpu_core_mask(cpu)); c->phys_proc_id = 0; --- linux-3.13.0.orig/arch/x86/kernel/tls.c +++ linux-3.13.0/arch/x86/kernel/tls.c @@ -27,6 +27,58 @@ return -ESRCH; } +static bool tls_desc_okay(const struct user_desc *info) +{ + /* + * For historical reasons (i.e. no one ever documented how any + * of the segmentation APIs work), user programs can and do + * assume that a struct user_desc that's all zeros except for + * entry_number means "no segment at all". This never actually + * worked. In fact, up to Linux 3.19, a struct user_desc like + * this would create a 16-bit read-write segment with base and + * limit both equal to zero. + * + * That was close enough to "no segment at all" until we + * hardened this function to disallow 16-bit TLS segments. Fix + * it up by interpreting these zeroed segments the way that they + * were almost certainly intended to be interpreted. + * + * The correct way to ask for "no segment at all" is to specify + * a user_desc that satisfies LDT_empty. To keep everything + * working, we accept both. + * + * Note that there's a similar kludge in modify_ldt -- look at + * the distinction between modes 1 and 0x11. + */ + if (LDT_empty(info) || LDT_zero(info)) + return true; + + /* + * espfix is required for 16-bit data segments, but espfix + * only works for LDT segments. + */ + if (!info->seg_32bit) + return false; + + /* Only allow data segments in the TLS array. */ + if (info->contents > 1) + return false; + + /* + * Non-present segments with DPL 3 present an interesting attack + * surface. The kernel should handle such segments correctly, + * but TLS is very difficult to protect in a sandbox, so prevent + * such segments from being created. + * + * If userspace needs to remove a TLS entry, it can still delete + * it outright. + */ + if (info->seg_not_present) + return false; + + return true; +} + static void set_tls_desc(struct task_struct *p, int idx, const struct user_desc *info, int n) { @@ -40,7 +92,7 @@ cpu = get_cpu(); while (n-- > 0) { - if (LDT_empty(info)) + if (LDT_empty(info) || LDT_zero(info)) desc->a = desc->b = 0; else fill_ldt(desc, info); @@ -66,6 +118,9 @@ if (copy_from_user(&info, u_info, sizeof(info))) return -EFAULT; + if (!tls_desc_okay(&info)) + return -EINVAL; + if (idx == -1) idx = info.entry_number; @@ -192,6 +247,7 @@ { struct user_desc infobuf[GDT_ENTRY_TLS_ENTRIES]; const struct user_desc *info; + int i; if (pos >= GDT_ENTRY_TLS_ENTRIES * sizeof(struct user_desc) || (pos % sizeof(struct user_desc)) != 0 || @@ -205,6 +261,10 @@ else info = infobuf; + for (i = 0; i < count / sizeof(struct user_desc); i++) + if (!tls_desc_okay(info + i)) + return -EINVAL; + set_tls_desc(target, GDT_ENTRY_TLS_MIN + (pos / sizeof(struct user_desc)), info, count / sizeof(struct user_desc)); --- linux-3.13.0.orig/arch/x86/kernel/traps.c +++ linux-3.13.0/arch/x86/kernel/traps.c @@ -221,33 +221,41 @@ coprocessor_segment_overrun) DO_ERROR(X86_TRAP_TS, SIGSEGV, "invalid TSS", invalid_TSS) DO_ERROR(X86_TRAP_NP, SIGBUS, "segment not present", segment_not_present) -#ifdef CONFIG_X86_32 DO_ERROR(X86_TRAP_SS, SIGBUS, "stack segment", stack_segment) -#endif DO_ERROR_INFO(X86_TRAP_AC, SIGBUS, "alignment check", alignment_check, BUS_ADRALN, 0) #ifdef CONFIG_X86_64 /* Runs on IST stack */ -dotraplinkage void do_stack_segment(struct pt_regs *regs, long error_code) -{ - enum ctx_state prev_state; - - prev_state = exception_enter(); - if (notify_die(DIE_TRAP, "stack segment", regs, error_code, - X86_TRAP_SS, SIGBUS) != NOTIFY_STOP) { - preempt_conditional_sti(regs); - do_trap(X86_TRAP_SS, SIGBUS, "stack segment", regs, error_code, NULL); - preempt_conditional_cli(regs); - } - exception_exit(prev_state); -} - dotraplinkage void do_double_fault(struct pt_regs *regs, long error_code) { static const char str[] = "double fault"; struct task_struct *tsk = current; +#ifdef CONFIG_X86_ESPFIX64 + extern unsigned char native_irq_return_iret[]; + + /* + * If IRET takes a non-IST fault on the espfix64 stack, then we + * end up promoting it to a doublefault. In that case, modify + * the stack to make it look like we just entered the #GP + * handler from user space, similar to bad_iret. + */ + if (((long)regs->sp >> PGDIR_SHIFT) == ESPFIX_PGD_ENTRY && + regs->cs == __KERNEL_CS && + regs->ip == (unsigned long)native_irq_return_iret) + { + struct pt_regs *normal_regs = task_pt_regs(current); + + /* Fake a #GP(0) from userspace. */ + memmove(&normal_regs->ip, (void *)regs->sp, 5*8); + normal_regs->orig_ax = 0; /* Missing (lost) #GP error code */ + regs->ip = (unsigned long)general_protection; + regs->sp = (unsigned long)&normal_regs->orig_ax; + return; + } +#endif + exception_enter(); /* Return not checked because double check cannot be ignored */ notify_die(DIE_TRAP, str, regs, error_code, X86_TRAP_DF, SIGSEGV); @@ -361,7 +369,7 @@ * for scheduling or signal handling. The actual stack switch is done in * entry.S */ -asmlinkage __kprobes struct pt_regs *sync_regs(struct pt_regs *eregs) +asmlinkage __visible notrace struct pt_regs *sync_regs(struct pt_regs *eregs) { struct pt_regs *regs = eregs; /* Did already sync */ @@ -380,6 +388,35 @@ *regs = *eregs; return regs; } + +struct bad_iret_stack { + void *error_entry_ret; + struct pt_regs regs; +}; + +asmlinkage __visible notrace +struct bad_iret_stack *fixup_bad_iret(struct bad_iret_stack *s) +{ + /* + * This is called from entry_64.S early in handling a fault + * caused by a bad iret to user mode. To handle the fault + * correctly, we want move our stack frame to task_pt_regs + * and we want to pretend that the exception came from the + * iret target. + */ + struct bad_iret_stack *new_stack = + container_of(task_pt_regs(current), + struct bad_iret_stack, regs); + + /* Copy the IRET target to the new stack. */ + memmove(&new_stack->regs.ip, (void *)s->regs.sp, 5*8); + + /* Copy the remainder of the stack from the current stack. */ + memmove(new_stack, s, offsetof(struct bad_iret_stack, regs.ip)); + + BUG_ON(!user_mode_vm(&new_stack->regs)); + return new_stack; +} #endif /* @@ -426,7 +463,7 @@ * then it's very likely the result of an icebp/int01 trap. * User wants a sigtrap for that. */ - if (!dr6 && user_mode(regs)) + if (!dr6 && user_mode_vm(regs)) user_icebp = 1; /* Catch kmemcheck conditions first of all! */ @@ -752,7 +789,7 @@ set_intr_gate(X86_TRAP_OLD_MF, coprocessor_segment_overrun); set_intr_gate(X86_TRAP_TS, invalid_TSS); set_intr_gate(X86_TRAP_NP, segment_not_present); - set_intr_gate_ist(X86_TRAP_SS, &stack_segment, STACKFAULT_STACK); + set_intr_gate(X86_TRAP_SS, stack_segment); set_intr_gate(X86_TRAP_GP, general_protection); set_intr_gate(X86_TRAP_SPURIOUS, spurious_interrupt_bug); set_intr_gate(X86_TRAP_MF, coprocessor_error); --- linux-3.13.0.orig/arch/x86/kernel/tsc.c +++ linux-3.13.0/arch/x86/kernel/tsc.c @@ -20,6 +20,7 @@ #include #include #include +#include unsigned int __read_mostly cpu_khz; /* TSC clocks / usec, not used here */ EXPORT_SYMBOL(cpu_khz); @@ -386,7 +387,7 @@ goto success; } } - pr_err("Fast TSC calibration failed\n"); + pr_info("Fast TSC calibration failed\n"); return 0; success: @@ -722,9 +723,9 @@ tsc_khz = cpufreq_scale(tsc_khz_ref, ref_freq, freq->new); if (!(freq->flags & CPUFREQ_CONST_LOOPS)) mark_tsc_unstable("cpufreq changes"); - } - set_cyc2ns_scale(tsc_khz, freq->cpu); + set_cyc2ns_scale(tsc_khz, freq->cpu); + } return 0; } @@ -812,15 +813,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; @@ -974,14 +977,17 @@ x86_init.timers.tsc_pre_init(); - if (!cpu_has_tsc) + if (!cpu_has_tsc) { + setup_clear_cpu_cap(X86_FEATURE_TSC_DEADLINE_TIMER); return; + } tsc_khz = x86_platform.calibrate_tsc(); cpu_khz = tsc_khz; if (!tsc_khz) { mark_tsc_unstable("could not calculate TSC khz"); + setup_clear_cpu_cap(X86_FEATURE_TSC_DEADLINE_TIMER); return; } --- linux-3.13.0.orig/arch/x86/kernel/verify_cpu.S +++ linux-3.13.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-3.13.0.orig/arch/x86/kernel/vsyscall_64.c +++ linux-3.13.0/arch/x86/kernel/vsyscall_64.c @@ -125,10 +125,10 @@ if (!show_unhandled_signals) return; - pr_notice_ratelimited("%s%s[%d] %s ip:%lx cs:%lx sp:%lx ax:%lx si:%lx di:%lx\n", - level, current->comm, task_pid_nr(current), - message, regs->ip, regs->cs, - regs->sp, regs->ax, regs->si, regs->di); + printk_ratelimited("%s%s[%d] %s ip:%lx cs:%lx sp:%lx ax:%lx si:%lx di:%lx\n", + level, current->comm, task_pid_nr(current), + message, regs->ip, regs->cs, + regs->sp, regs->ax, regs->si, regs->di); } static int addr_to_vsyscall_nr(unsigned long addr) --- linux-3.13.0.orig/arch/x86/kernel/xsave.c +++ linux-3.13.0/arch/x86/kernel/xsave.c @@ -268,8 +268,6 @@ if (use_fxsr() && save_xstate_epilog(buf_fx, ia32_fxstate)) return -1; - drop_init_fpu(tsk); /* trigger finit */ - return 0; } @@ -377,7 +375,7 @@ * thread's fpu state, reconstruct fxstate from the fsave * header. Sanitize the copied state etc. */ - struct xsave_struct *xsave = &tsk->thread.fpu.state->xsave; + struct fpu *fpu = &tsk->thread.fpu; struct user_i387_ia32_struct env; int err = 0; @@ -391,16 +389,20 @@ */ drop_fpu(tsk); - if (__copy_from_user(xsave, buf_fx, state_size) || + if (__copy_from_user(&fpu->state->xsave, buf_fx, state_size) || __copy_from_user(&env, buf, sizeof(env))) { + fpu_finit(fpu); err = -1; } else { sanitize_restored_xstate(tsk, &env, xstate_bv, fx_only); - set_used_math(); } - if (use_eager_fpu()) + set_used_math(); + if (use_eager_fpu()) { + preempt_disable(); math_state_restore(); + preempt_enable(); + } return err; } else { @@ -427,20 +429,19 @@ */ static void prepare_fx_sw_frame(void) { - int fsave_header_size = sizeof(struct i387_fsave_struct); 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.xstate_bv = pcntxt_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 i387_fsave_struct); + 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-3.13.0.orig/arch/x86/kvm/cpuid.c +++ linux-3.13.0/arch/x86/kvm/cpuid.c @@ -43,14 +43,14 @@ return ret; } -void kvm_update_cpuid(struct kvm_vcpu *vcpu) +int kvm_update_cpuid(struct kvm_vcpu *vcpu) { struct kvm_cpuid_entry2 *best; struct kvm_lapic *apic = vcpu->arch.apic; best = kvm_find_cpuid_entry(vcpu, 1, 0); if (!best) - return; + return 0; /* Update OSXSAVE bit */ if (cpu_has_xsave && best->function == 0x1) { @@ -78,7 +78,17 @@ xstate_required_size(vcpu->arch.guest_supported_xcr0); } + /* + * The existing code assumes virtual address is 48-bit in the canonical + * address checks; exit if it is ever changed. + */ + best = kvm_find_cpuid_entry(vcpu, 0x80000008, 0); + if (best && ((best->eax & 0xff00) >> 8) != 48 && + ((best->eax & 0xff00) >> 8) != 0) + return -EINVAL; + kvm_pmu_cpuid_update(vcpu); + return 0; } static int is_efer_nx(void) @@ -141,10 +151,9 @@ } vcpu->arch.cpuid_nent = cpuid->nent; cpuid_fix_nx_cap(vcpu); - r = 0; kvm_apic_set_version(vcpu); kvm_x86_ops->cpuid_update(vcpu); - kvm_update_cpuid(vcpu); + r = kvm_update_cpuid(vcpu); out_free: vfree(cpuid_entries); @@ -168,9 +177,7 @@ vcpu->arch.cpuid_nent = cpuid->nent; kvm_apic_set_version(vcpu); kvm_x86_ops->cpuid_update(vcpu); - kvm_update_cpuid(vcpu); - return 0; - + r = kvm_update_cpuid(vcpu); out: return r; } --- linux-3.13.0.orig/arch/x86/kvm/cpuid.h +++ linux-3.13.0/arch/x86/kvm/cpuid.h @@ -3,7 +3,7 @@ #include "x86.h" -void kvm_update_cpuid(struct kvm_vcpu *vcpu); +int kvm_update_cpuid(struct kvm_vcpu *vcpu); struct kvm_cpuid_entry2 *kvm_find_cpuid_entry(struct kvm_vcpu *vcpu, u32 function, u32 index); int kvm_dev_ioctl_get_cpuid(struct kvm_cpuid2 *cpuid, --- linux-3.13.0.orig/arch/x86/kvm/emulate.c +++ linux-3.13.0/arch/x86/kvm/emulate.c @@ -498,11 +498,6 @@ masked_increment(reg_rmw(ctxt, VCPU_REGS_RSP), stack_mask(ctxt), inc); } -static inline void jmp_rel(struct x86_emulate_ctxt *ctxt, int rel) -{ - register_address_increment(ctxt, &ctxt->_eip, rel); -} - static u32 desc_limit_scaled(struct desc_struct *desc) { u32 limit = get_desc_limit(desc); @@ -576,6 +571,40 @@ return emulate_exception(ctxt, NM_VECTOR, 0, false); } +static inline int assign_eip_far(struct x86_emulate_ctxt *ctxt, ulong dst, + int cs_l) +{ + switch (ctxt->op_bytes) { + case 2: + ctxt->_eip = (u16)dst; + break; + case 4: + ctxt->_eip = (u32)dst; + break; +#ifdef CONFIG_X86_64 + case 8: + if ((cs_l && is_noncanonical_address(dst)) || + (!cs_l && (dst >> 32) != 0)) + return emulate_gp(ctxt, 0); + ctxt->_eip = dst; + break; +#endif + default: + WARN(1, "unsupported eip assignment size\n"); + } + return X86EMUL_CONTINUE; +} + +static inline int assign_eip_near(struct x86_emulate_ctxt *ctxt, ulong dst) +{ + return assign_eip_far(ctxt, dst, ctxt->mode == X86EMUL_MODE_PROT64); +} + +static inline int jmp_rel(struct x86_emulate_ctxt *ctxt, int rel) +{ + return assign_eip_near(ctxt, ctxt->_eip + rel); +} + static u16 get_segment_selector(struct x86_emulate_ctxt *ctxt, unsigned seg) { u16 selector; @@ -1219,12 +1248,14 @@ long sv = 0, mask; if (ctxt->dst.type == OP_MEM && ctxt->src.type == OP_REG) { - mask = ~(ctxt->dst.bytes * 8 - 1); + mask = ~((long)ctxt->dst.bytes * 8 - 1); if (ctxt->src.bytes == 2) sv = (s16)ctxt->src.val & (s16)mask; else if (ctxt->src.bytes == 4) sv = (s32)ctxt->src.val & (s32)mask; + else + sv = (s64)ctxt->src.val & (s64)mask; ctxt->dst.addr.mem.ea += (sv >> 3); } @@ -1409,11 +1440,12 @@ } /* Does not support long mode */ -static int load_segment_descriptor(struct x86_emulate_ctxt *ctxt, - u16 selector, int seg) +static int __load_segment_descriptor(struct x86_emulate_ctxt *ctxt, + u16 selector, int seg, u8 cpl, + struct desc_struct *desc) { struct desc_struct seg_desc, old_desc; - u8 dpl, rpl, cpl; + u8 dpl, rpl; unsigned err_vec = GP_VECTOR; u32 err_code = 0; bool null_selector = !(selector & ~0x3); /* 0000-0003 are null */ @@ -1441,7 +1473,6 @@ } rpl = selector & 3; - cpl = ctxt->ops->cpl(ctxt); /* NULL selector is not valid for TR, CS and SS (except for long mode) */ if ((seg == VCPU_SREG_CS @@ -1498,6 +1529,15 @@ if (rpl > cpl || dpl != cpl) goto exception; } + /* in long-mode d/b must be clear if l is set */ + if (seg_desc.d && seg_desc.l) { + u64 efer = 0; + + ctxt->ops->get_msr(ctxt, MSR_EFER, &efer); + if (efer & EFER_LMA) + goto exception; + } + /* CS(RPL) <- CPL */ selector = (selector & 0xfffc) | cpl; break; @@ -1537,12 +1577,21 @@ } load: ctxt->ops->set_segment(ctxt, selector, &seg_desc, 0, seg); + if (desc) + *desc = seg_desc; return X86EMUL_CONTINUE; exception: emulate_exception(ctxt, err_vec, err_code, true); return X86EMUL_PROPAGATE_FAULT; } +static int load_segment_descriptor(struct x86_emulate_ctxt *ctxt, + u16 selector, int seg) +{ + u8 cpl = ctxt->ops->cpl(ctxt); + return __load_segment_descriptor(ctxt, selector, seg, cpl, NULL); +} + static void write_register_operand(struct operand *op) { /* The 4-byte case *is* correct: in 64-bit mode we zero-extend. */ @@ -1937,17 +1986,31 @@ static int em_jmp_far(struct x86_emulate_ctxt *ctxt) { int rc; - unsigned short sel; + unsigned short sel, old_sel; + struct desc_struct old_desc, new_desc; + const struct x86_emulate_ops *ops = ctxt->ops; + u8 cpl = ctxt->ops->cpl(ctxt); + + /* Assignment of RIP may only fail in 64-bit mode */ + if (ctxt->mode == X86EMUL_MODE_PROT64) + ops->get_segment(ctxt, &old_sel, &old_desc, NULL, + VCPU_SREG_CS); memcpy(&sel, ctxt->src.valptr + ctxt->op_bytes, 2); - rc = load_segment_descriptor(ctxt, sel, VCPU_SREG_CS); + rc = __load_segment_descriptor(ctxt, sel, VCPU_SREG_CS, cpl, + &new_desc); if (rc != X86EMUL_CONTINUE) return rc; - ctxt->_eip = 0; - memcpy(&ctxt->_eip, ctxt->src.valptr, ctxt->op_bytes); - return X86EMUL_CONTINUE; + rc = assign_eip_far(ctxt, ctxt->src.val, new_desc.l); + if (rc != X86EMUL_CONTINUE) { + WARN_ON(ctxt->mode != X86EMUL_MODE_PROT64); + /* assigning eip failed; restore the old cs */ + ops->set_segment(ctxt, old_sel, &old_desc, 0, VCPU_SREG_CS); + return rc; + } + return rc; } static int em_grp45(struct x86_emulate_ctxt *ctxt) @@ -1958,13 +2021,15 @@ case 2: /* call near abs */ { long int old_eip; old_eip = ctxt->_eip; - ctxt->_eip = ctxt->src.val; + rc = assign_eip_near(ctxt, ctxt->src.val); + if (rc != X86EMUL_CONTINUE) + break; ctxt->src.val = old_eip; rc = em_push(ctxt); break; } case 4: /* jmp abs */ - ctxt->_eip = ctxt->src.val; + rc = assign_eip_near(ctxt, ctxt->src.val); break; case 5: /* jmp far */ rc = em_jmp_far(ctxt); @@ -1996,26 +2061,47 @@ static int em_ret(struct x86_emulate_ctxt *ctxt) { - ctxt->dst.type = OP_REG; - ctxt->dst.addr.reg = &ctxt->_eip; - ctxt->dst.bytes = ctxt->op_bytes; - return em_pop(ctxt); + int rc; + unsigned long eip; + + rc = emulate_pop(ctxt, &eip, ctxt->op_bytes); + if (rc != X86EMUL_CONTINUE) + return rc; + + return assign_eip_near(ctxt, eip); } static int em_ret_far(struct x86_emulate_ctxt *ctxt) { int rc; - unsigned long cs; + unsigned long eip, cs; + u16 old_cs; + int cpl = ctxt->ops->cpl(ctxt); + struct desc_struct old_desc, new_desc; + const struct x86_emulate_ops *ops = ctxt->ops; + + if (ctxt->mode == X86EMUL_MODE_PROT64) + ops->get_segment(ctxt, &old_cs, &old_desc, NULL, + VCPU_SREG_CS); - rc = emulate_pop(ctxt, &ctxt->_eip, ctxt->op_bytes); + rc = emulate_pop(ctxt, &eip, ctxt->op_bytes); if (rc != X86EMUL_CONTINUE) return rc; - if (ctxt->op_bytes == 4) - ctxt->_eip = (u32)ctxt->_eip; rc = emulate_pop(ctxt, &cs, ctxt->op_bytes); if (rc != X86EMUL_CONTINUE) return rc; - rc = load_segment_descriptor(ctxt, (u16)cs, VCPU_SREG_CS); + /* Outer-privilege level return is not implemented */ + if (ctxt->mode >= X86EMUL_MODE_PROT16 && (cs & 3) > cpl) + return X86EMUL_UNHANDLEABLE; + rc = __load_segment_descriptor(ctxt, (u16)cs, VCPU_SREG_CS, 0, + &new_desc); + if (rc != X86EMUL_CONTINUE) + return rc; + rc = assign_eip_far(ctxt, eip, new_desc.l); + if (rc != X86EMUL_CONTINUE) { + WARN_ON(ctxt->mode != X86EMUL_MODE_PROT64); + ops->set_segment(ctxt, old_cs, &old_desc, 0, VCPU_SREG_CS); + } return rc; } @@ -2221,7 +2307,7 @@ * Not recognized on AMD in compat mode (but is recognized in legacy * mode). */ - if ((ctxt->mode == X86EMUL_MODE_PROT32) && (efer & EFER_LMA) + if ((ctxt->mode != X86EMUL_MODE_PROT64) && (efer & EFER_LMA) && !vendor_intel(ctxt)) return emulate_ud(ctxt); @@ -2234,25 +2320,13 @@ setup_syscalls_segments(ctxt, &cs, &ss); ops->get_msr(ctxt, MSR_IA32_SYSENTER_CS, &msr_data); - switch (ctxt->mode) { - case X86EMUL_MODE_PROT32: - if ((msr_data & 0xfffc) == 0x0) - return emulate_gp(ctxt, 0); - break; - case X86EMUL_MODE_PROT64: - if (msr_data == 0x0) - return emulate_gp(ctxt, 0); - break; - default: - break; - } + if ((msr_data & 0xfffc) == 0x0) + return emulate_gp(ctxt, 0); ctxt->eflags &= ~(EFLG_VM | EFLG_IF | EFLG_RF); - cs_sel = (u16)msr_data; - cs_sel &= ~SELECTOR_RPL_MASK; + cs_sel = (u16)msr_data & ~SELECTOR_RPL_MASK; ss_sel = cs_sel + 8; - ss_sel &= ~SELECTOR_RPL_MASK; - if (ctxt->mode == X86EMUL_MODE_PROT64 || (efer & EFER_LMA)) { + if (efer & EFER_LMA) { cs.d = 0; cs.l = 1; } @@ -2261,10 +2335,11 @@ ops->set_segment(ctxt, ss_sel, &ss, 0, VCPU_SREG_SS); ops->get_msr(ctxt, MSR_IA32_SYSENTER_EIP, &msr_data); - ctxt->_eip = msr_data; + ctxt->_eip = (efer & EFER_LMA) ? msr_data : (u32)msr_data; ops->get_msr(ctxt, MSR_IA32_SYSENTER_ESP, &msr_data); - *reg_write(ctxt, VCPU_REGS_RSP) = msr_data; + *reg_write(ctxt, VCPU_REGS_RSP) = (efer & EFER_LMA) ? msr_data : + (u32)msr_data; return X86EMUL_CONTINUE; } @@ -2273,7 +2348,7 @@ { const struct x86_emulate_ops *ops = ctxt->ops; struct desc_struct cs, ss; - u64 msr_data; + u64 msr_data, rcx, rdx; int usermode; u16 cs_sel = 0, ss_sel = 0; @@ -2289,6 +2364,9 @@ else usermode = X86EMUL_MODE_PROT32; + rcx = reg_read(ctxt, VCPU_REGS_RCX); + rdx = reg_read(ctxt, VCPU_REGS_RDX); + cs.dpl = 3; ss.dpl = 3; ops->get_msr(ctxt, MSR_IA32_SYSENTER_CS, &msr_data); @@ -2306,6 +2384,9 @@ ss_sel = cs_sel + 8; cs.d = 0; cs.l = 1; + if (is_noncanonical_address(rcx) || + is_noncanonical_address(rdx)) + return emulate_gp(ctxt, 0); break; } cs_sel |= SELECTOR_RPL_MASK; @@ -2314,8 +2395,8 @@ ops->set_segment(ctxt, cs_sel, &cs, 0, VCPU_SREG_CS); ops->set_segment(ctxt, ss_sel, &ss, 0, VCPU_SREG_SS); - ctxt->_eip = reg_read(ctxt, VCPU_REGS_RDX); - *reg_write(ctxt, VCPU_REGS_RSP) = reg_read(ctxt, VCPU_REGS_RCX); + ctxt->_eip = rdx; + *reg_write(ctxt, VCPU_REGS_RSP) = rcx; return X86EMUL_CONTINUE; } @@ -2404,6 +2485,7 @@ struct tss_segment_16 *tss) { int ret; + u8 cpl; ctxt->_eip = tss->ip; ctxt->eflags = tss->flag | 2; @@ -2426,23 +2508,30 @@ set_segment_selector(ctxt, tss->ss, VCPU_SREG_SS); set_segment_selector(ctxt, tss->ds, VCPU_SREG_DS); + cpl = tss->cs & 3; + /* * Now load segment descriptors. If fault happens at this stage * it is handled in a context of new task */ - ret = load_segment_descriptor(ctxt, tss->ldt, VCPU_SREG_LDTR); + ret = __load_segment_descriptor(ctxt, tss->ldt, VCPU_SREG_LDTR, cpl, + NULL); if (ret != X86EMUL_CONTINUE) return ret; - ret = load_segment_descriptor(ctxt, tss->es, VCPU_SREG_ES); + ret = __load_segment_descriptor(ctxt, tss->es, VCPU_SREG_ES, cpl, + NULL); if (ret != X86EMUL_CONTINUE) return ret; - ret = load_segment_descriptor(ctxt, tss->cs, VCPU_SREG_CS); + ret = __load_segment_descriptor(ctxt, tss->cs, VCPU_SREG_CS, cpl, + NULL); if (ret != X86EMUL_CONTINUE) return ret; - ret = load_segment_descriptor(ctxt, tss->ss, VCPU_SREG_SS); + ret = __load_segment_descriptor(ctxt, tss->ss, VCPU_SREG_SS, cpl, + NULL); if (ret != X86EMUL_CONTINUE) return ret; - ret = load_segment_descriptor(ctxt, tss->ds, VCPU_SREG_DS); + ret = __load_segment_descriptor(ctxt, tss->ds, VCPU_SREG_DS, cpl, + NULL); if (ret != X86EMUL_CONTINUE) return ret; @@ -2521,6 +2610,7 @@ struct tss_segment_32 *tss) { int ret; + u8 cpl; if (ctxt->ops->set_cr(ctxt, 3, tss->cr3)) return emulate_gp(ctxt, 0); @@ -2539,7 +2629,8 @@ /* * SDM says that segment selectors are loaded before segment - * descriptors + * descriptors. This is important because CPL checks will + * use CS.RPL. */ set_segment_selector(ctxt, tss->ldt_selector, VCPU_SREG_LDTR); set_segment_selector(ctxt, tss->es, VCPU_SREG_ES); @@ -2553,43 +2644,45 @@ * If we're switching between Protected Mode and VM86, we need to make * sure to update the mode before loading the segment descriptors so * that the selectors are interpreted correctly. - * - * Need to get rflags to the vcpu struct immediately because it - * influences the CPL which is checked at least when loading the segment - * descriptors and when pushing an error code to the new kernel stack. - * - * TODO Introduce a separate ctxt->ops->set_cpl callback */ - if (ctxt->eflags & X86_EFLAGS_VM) + if (ctxt->eflags & X86_EFLAGS_VM) { ctxt->mode = X86EMUL_MODE_VM86; - else + cpl = 3; + } else { ctxt->mode = X86EMUL_MODE_PROT32; - - ctxt->ops->set_rflags(ctxt, ctxt->eflags); + cpl = tss->cs & 3; + } /* * Now load segment descriptors. If fault happenes at this stage * it is handled in a context of new task */ - ret = load_segment_descriptor(ctxt, tss->ldt_selector, VCPU_SREG_LDTR); + ret = __load_segment_descriptor(ctxt, tss->ldt_selector, VCPU_SREG_LDTR, + cpl, NULL); if (ret != X86EMUL_CONTINUE) return ret; - ret = load_segment_descriptor(ctxt, tss->es, VCPU_SREG_ES); + ret = __load_segment_descriptor(ctxt, tss->es, VCPU_SREG_ES, cpl, + NULL); if (ret != X86EMUL_CONTINUE) return ret; - ret = load_segment_descriptor(ctxt, tss->cs, VCPU_SREG_CS); + ret = __load_segment_descriptor(ctxt, tss->cs, VCPU_SREG_CS, cpl, + NULL); if (ret != X86EMUL_CONTINUE) return ret; - ret = load_segment_descriptor(ctxt, tss->ss, VCPU_SREG_SS); + ret = __load_segment_descriptor(ctxt, tss->ss, VCPU_SREG_SS, cpl, + NULL); if (ret != X86EMUL_CONTINUE) return ret; - ret = load_segment_descriptor(ctxt, tss->ds, VCPU_SREG_DS); + ret = __load_segment_descriptor(ctxt, tss->ds, VCPU_SREG_DS, cpl, + NULL); if (ret != X86EMUL_CONTINUE) return ret; - ret = load_segment_descriptor(ctxt, tss->fs, VCPU_SREG_FS); + ret = __load_segment_descriptor(ctxt, tss->fs, VCPU_SREG_FS, cpl, + NULL); if (ret != X86EMUL_CONTINUE) return ret; - ret = load_segment_descriptor(ctxt, tss->gs, VCPU_SREG_GS); + ret = __load_segment_descriptor(ctxt, tss->gs, VCPU_SREG_GS, cpl, + NULL); if (ret != X86EMUL_CONTINUE) return ret; @@ -2854,10 +2947,13 @@ static int em_call(struct x86_emulate_ctxt *ctxt) { + int rc; long rel = ctxt->src.val; ctxt->src.val = (unsigned long)ctxt->_eip; - jmp_rel(ctxt, rel); + rc = jmp_rel(ctxt, rel); + if (rc != X86EMUL_CONTINUE) + return rc; return em_push(ctxt); } @@ -2866,34 +2962,50 @@ u16 sel, old_cs; ulong old_eip; int rc; + struct desc_struct old_desc, new_desc; + const struct x86_emulate_ops *ops = ctxt->ops; + int cpl = ctxt->ops->cpl(ctxt); - old_cs = get_segment_selector(ctxt, VCPU_SREG_CS); old_eip = ctxt->_eip; + ops->get_segment(ctxt, &old_cs, &old_desc, NULL, VCPU_SREG_CS); memcpy(&sel, ctxt->src.valptr + ctxt->op_bytes, 2); - if (load_segment_descriptor(ctxt, sel, VCPU_SREG_CS)) + rc = __load_segment_descriptor(ctxt, sel, VCPU_SREG_CS, cpl, + &new_desc); + if (rc != X86EMUL_CONTINUE) return X86EMUL_CONTINUE; - ctxt->_eip = 0; - memcpy(&ctxt->_eip, ctxt->src.valptr, ctxt->op_bytes); + rc = assign_eip_far(ctxt, ctxt->src.val, new_desc.l); + if (rc != X86EMUL_CONTINUE) + goto fail; ctxt->src.val = old_cs; rc = em_push(ctxt); if (rc != X86EMUL_CONTINUE) - return rc; + goto fail; ctxt->src.val = old_eip; - return em_push(ctxt); + rc = em_push(ctxt); + /* If we failed, we tainted the memory, but the very least we should + restore cs */ + if (rc != X86EMUL_CONTINUE) + goto fail; + return rc; +fail: + ops->set_segment(ctxt, old_cs, &old_desc, 0, VCPU_SREG_CS); + return rc; + } static int em_ret_near_imm(struct x86_emulate_ctxt *ctxt) { int rc; + unsigned long eip; - ctxt->dst.type = OP_REG; - ctxt->dst.addr.reg = &ctxt->_eip; - ctxt->dst.bytes = ctxt->op_bytes; - rc = emulate_pop(ctxt, &ctxt->dst.val, ctxt->op_bytes); + rc = emulate_pop(ctxt, &eip, ctxt->op_bytes); + if (rc != X86EMUL_CONTINUE) + return rc; + rc = assign_eip_near(ctxt, eip); if (rc != X86EMUL_CONTINUE) return rc; rsp_increment(ctxt, ctxt->src.val); @@ -3223,20 +3335,24 @@ static int em_loop(struct x86_emulate_ctxt *ctxt) { + int rc = X86EMUL_CONTINUE; + register_address_increment(ctxt, reg_rmw(ctxt, VCPU_REGS_RCX), -1); if ((address_mask(ctxt, reg_read(ctxt, VCPU_REGS_RCX)) != 0) && (ctxt->b == 0xe2 || test_cc(ctxt->b ^ 0x5, ctxt->eflags))) - jmp_rel(ctxt, ctxt->src.val); + rc = jmp_rel(ctxt, ctxt->src.val); - return X86EMUL_CONTINUE; + return rc; } static int em_jcxz(struct x86_emulate_ctxt *ctxt) { + int rc = X86EMUL_CONTINUE; + if (address_mask(ctxt, reg_read(ctxt, VCPU_REGS_RCX)) == 0) - jmp_rel(ctxt, ctxt->src.val); + rc = jmp_rel(ctxt, ctxt->src.val); - return X86EMUL_CONTINUE; + return rc; } static int em_in(struct x86_emulate_ctxt *ctxt) @@ -4092,6 +4208,7 @@ fetch_register_operand(op); break; case OpCL: + op->type = OP_IMM; op->bytes = 1; op->val = reg_read(ctxt, VCPU_REGS_RCX) & 0xff; break; @@ -4099,6 +4216,7 @@ rc = decode_imm(ctxt, op, 1, true); break; case OpOne: + op->type = OP_IMM; op->bytes = 1; op->val = 1; break; @@ -4157,21 +4275,27 @@ ctxt->memop.bytes = ctxt->op_bytes + 2; goto mem_common; case OpES: + op->type = OP_IMM; op->val = VCPU_SREG_ES; break; case OpCS: + op->type = OP_IMM; op->val = VCPU_SREG_CS; break; case OpSS: + op->type = OP_IMM; op->val = VCPU_SREG_SS; break; case OpDS: + op->type = OP_IMM; op->val = VCPU_SREG_DS; break; case OpFS: + op->type = OP_IMM; op->val = VCPU_SREG_FS; break; case OpGS: + op->type = OP_IMM; op->val = VCPU_SREG_GS; break; case OpImplicit: @@ -4595,7 +4719,8 @@ if (rc != X86EMUL_CONTINUE) goto done; } - ctxt->dst.orig_val = ctxt->dst.val; + /* Copy full 64-bit value for CMPXCHG8B. */ + ctxt->dst.orig_val64 = ctxt->dst.val64; special_insn: @@ -4633,7 +4758,7 @@ break; case 0x70 ... 0x7f: /* jcc (short) */ if (test_cc(ctxt->b, ctxt->eflags)) - jmp_rel(ctxt, ctxt->src.val); + rc = jmp_rel(ctxt, ctxt->src.val); break; case 0x8d: /* lea r16/r32, m */ ctxt->dst.val = ctxt->src.addr.mem.ea; @@ -4662,7 +4787,7 @@ break; case 0xe9: /* jmp rel */ case 0xeb: /* jmp rel short */ - jmp_rel(ctxt, ctxt->src.val); + rc = jmp_rel(ctxt, ctxt->src.val); ctxt->dst.type = OP_NONE; /* Disable writeback. */ break; case 0xf4: /* hlt */ @@ -4782,7 +4907,7 @@ break; case 0x80 ... 0x8f: /* jnz rel, etc*/ if (test_cc(ctxt->b, ctxt->eflags)) - jmp_rel(ctxt, ctxt->src.val); + rc = jmp_rel(ctxt, ctxt->src.val); break; case 0x90 ... 0x9f: /* setcc r/m8 */ ctxt->dst.val = test_cc(ctxt->b, ctxt->eflags); --- linux-3.13.0.orig/arch/x86/kvm/i8254.c +++ linux-3.13.0/arch/x86/kvm/i8254.c @@ -37,6 +37,7 @@ #include "irq.h" #include "i8254.h" +#include "x86.h" #ifndef CONFIG_X86_64 #define mod_64(x, y) ((x) - (y) * div64_u64(x, y)) @@ -243,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 */ @@ -261,8 +262,10 @@ return; timer = &pit->pit_state.timer; + mutex_lock(&pit->pit_state.lock); if (hrtimer_cancel(timer)) hrtimer_start_expires(timer, HRTIMER_MODE_ABS); + mutex_unlock(&pit->pit_state.lock); } static void destroy_pit_timer(struct kvm_pit *pit) @@ -284,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; } @@ -302,7 +307,7 @@ * LVT0 to NMI delivery. Other PIC interrupts are just sent to * VCPU0, and only if its LVT0 is in EXTINT mode. */ - if (kvm->arch.vapics_in_nmi_mode > 0) + if (atomic_read(&kvm->arch.vapics_in_nmi_mode) > 0) kvm_for_each_vcpu(i, vcpu, kvm) kvm_apic_nmi_wd_deliver(vcpu); } @@ -313,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); @@ -349,6 +354,23 @@ atomic_set(&ps->pending, 0); ps->irq_ack = 1; + /* + * Do not allow the guest to program periodic timers with small + * interval, since the hrtimers are not throttled by the host + * scheduler. + */ + if (ps->is_periodic) { + s64 min_period = min_timer_period_us * 1000LL; + + if (ps->period < min_period) { + pr_info_ratelimited( + "kvm: requested %lld ns " + "i8254 timer period limited to %lld ns\n", + ps->period, min_period); + ps->period = min_period; + } + } + hrtimer_start(&ps->timer, ktime_add_ns(ktime_get(), interval), HRTIMER_MODE_ABS); } @@ -398,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-3.13.0.orig/arch/x86/kvm/irq.c +++ linux-3.13.0/arch/x86/kvm/irq.c @@ -108,7 +108,7 @@ vector = kvm_cpu_get_extint(v); - if (kvm_apic_vid_enabled(v->kvm) || vector != -1) + if (vector != -1) return vector; /* PIC */ return kvm_get_apic_interrupt(v); /* APIC */ --- linux-3.13.0.orig/arch/x86/kvm/lapic.c +++ linux-3.13.0/arch/x86/kvm/lapic.c @@ -71,9 +71,6 @@ #define VEC_POS(v) ((v) & (32 - 1)) #define REG_POS(v) (((v) >> 5) << 4) -static unsigned int min_timer_period_us = 500; -module_param(min_timer_period_us, uint, S_IRUGO | S_IWUSR); - static inline void apic_set_reg(struct kvm_lapic *apic, int reg_off, u32 val) { *((u32 *) (apic->regs + reg_off)) = val; @@ -326,8 +323,12 @@ static inline void apic_set_irr(int vec, struct kvm_lapic *apic) { - apic->irr_pending = true; apic_set_vector(vec, apic->regs + APIC_IRR); + /* + * irr_pending must be true if any interrupt is pending; set it after + * APIC_IRR to avoid race with apic_clear_irr + */ + apic->irr_pending = true; } static inline int apic_search_irr(struct kvm_lapic *apic) @@ -355,31 +356,92 @@ static inline void apic_clear_irr(int vec, struct kvm_lapic *apic) { - apic->irr_pending = false; - apic_clear_vector(vec, apic->regs + APIC_IRR); - if (apic_search_irr(apic) != -1) - apic->irr_pending = true; + struct kvm_vcpu *vcpu; + + vcpu = apic->vcpu; + + if (unlikely(kvm_apic_vid_enabled(vcpu->kvm))) { + /* try to update RVI */ + apic_clear_vector(vec, apic->regs + APIC_IRR); + kvm_make_request(KVM_REQ_EVENT, vcpu); + } else { + apic->irr_pending = false; + apic_clear_vector(vec, apic->regs + APIC_IRR); + if (apic_search_irr(apic) != -1) + apic->irr_pending = true; + } } static inline void apic_set_isr(int vec, struct kvm_lapic *apic) { - if (!__apic_test_and_set_vector(vec, apic->regs + APIC_ISR)) + struct kvm_vcpu *vcpu; + + if (__apic_test_and_set_vector(vec, apic->regs + APIC_ISR)) + return; + + vcpu = apic->vcpu; + + /* + * With APIC virtualization enabled, all caching is disabled + * because the processor can modify ISR under the hood. Instead + * just set SVI. + */ + if (unlikely(kvm_apic_vid_enabled(vcpu->kvm))) + kvm_x86_ops->hwapic_isr_update(vcpu->kvm, vec); + else { ++apic->isr_count; - BUG_ON(apic->isr_count > MAX_APIC_VECTOR); + BUG_ON(apic->isr_count > MAX_APIC_VECTOR); + /* + * ISR (in service register) bit is set when injecting an interrupt. + * The highest vector is injected. Thus the latest bit set matches + * the highest bit in ISR. + */ + apic->highest_isr_cache = vec; + } +} + +static inline int apic_find_highest_isr(struct kvm_lapic *apic) +{ + int result; + /* - * ISR (in service register) bit is set when injecting an interrupt. - * The highest vector is injected. Thus the latest bit set matches - * the highest bit in ISR. + * Note that isr_count is always 1, and highest_isr_cache + * is always -1, with APIC virtualization enabled. */ - apic->highest_isr_cache = vec; + if (!apic->isr_count) + return -1; + if (likely(apic->highest_isr_cache != -1)) + return apic->highest_isr_cache; + + result = find_highest_vector(apic->regs + APIC_ISR); + ASSERT(result == -1 || result >= 16); + + return result; } static inline void apic_clear_isr(int vec, struct kvm_lapic *apic) { - if (__apic_test_and_clear_vector(vec, apic->regs + APIC_ISR)) + struct kvm_vcpu *vcpu; + if (!__apic_test_and_clear_vector(vec, apic->regs + APIC_ISR)) + return; + + vcpu = apic->vcpu; + + /* + * We do get here for APIC virtualization enabled if the guest + * uses the Hyper-V APIC enlightenment. In this case we may need + * to trigger a new interrupt delivery by writing the SVI field; + * on the other hand isr_count and highest_isr_cache are unused + * and must be left alone. + */ + if (unlikely(kvm_apic_vid_enabled(vcpu->kvm))) + kvm_x86_ops->hwapic_isr_update(vcpu->kvm, + apic_find_highest_isr(apic)); + else { --apic->isr_count; - BUG_ON(apic->isr_count < 0); - apic->highest_isr_cache = -1; + BUG_ON(apic->isr_count < 0); + apic->highest_isr_cache = -1; + } } int kvm_lapic_find_highest_irr(struct kvm_vcpu *vcpu) @@ -459,22 +521,6 @@ __clear_bit(KVM_APIC_PV_EOI_PENDING, &vcpu->arch.apic_attention); } -static inline int apic_find_highest_isr(struct kvm_lapic *apic) -{ - int result; - - /* Note that isr_count is always 1 with vid enabled */ - if (!apic->isr_count) - return -1; - if (likely(apic->highest_isr_cache != -1)) - return apic->highest_isr_cache; - - result = find_highest_vector(apic->regs + APIC_ISR); - ASSERT(result == -1 || result >= 16); - - return result; -} - void kvm_apic_update_tmr(struct kvm_vcpu *vcpu, u32 *tmr) { struct kvm_lapic *apic = vcpu->arch.apic; @@ -1069,10 +1115,10 @@ if (!nmi_wd_enabled) { apic_debug("Receive NMI setting on APIC_LVT0 " "for cpu %d\n", apic->vcpu->vcpu_id); - apic->vcpu->kvm->arch.vapics_in_nmi_mode++; + atomic_inc(&apic->vcpu->kvm->arch.vapics_in_nmi_mode); } } else if (nmi_wd_enabled) - apic->vcpu->kvm->arch.vapics_in_nmi_mode--; + atomic_dec(&apic->vcpu->kvm->arch.vapics_in_nmi_mode); } static int apic_reg_write(struct kvm_lapic *apic, u32 reg, u32 val) @@ -1611,6 +1657,13 @@ if (vector == -1) return -1; + /* + * We get here even with APIC virtualization enabled, if doing + * nested virtualization and L1 runs with the "acknowledge interrupt + * on exit" mode. Then we cannot inject the interrupt via RVI, + * because the process would deliver it through the IDT. + */ + apic_set_isr(vector, apic); apic_update_ppr(apic); apic_clear_irr(vector, apic); @@ -1632,6 +1685,7 @@ apic_update_ppr(apic); hrtimer_cancel(&apic->lapic_timer.timer); + apic_manage_nmi_watchdog(apic, kvm_apic_get_reg(apic, APIC_LVT0)); update_divide_count(apic); start_apic_timer(apic); apic->irr_pending = true; --- linux-3.13.0.orig/arch/x86/kvm/lapic.h +++ linux-3.13.0/arch/x86/kvm/lapic.h @@ -165,7 +165,7 @@ static inline bool kvm_apic_has_events(struct kvm_vcpu *vcpu) { - return vcpu->arch.apic->pending_events; + return kvm_vcpu_has_lapic(vcpu) && vcpu->arch.apic->pending_events; } bool kvm_apic_pending_eoi(struct kvm_vcpu *vcpu, int vector); --- linux-3.13.0.orig/arch/x86/kvm/mmu.c +++ linux-3.13.0/arch/x86/kvm/mmu.c @@ -198,16 +198,20 @@ EXPORT_SYMBOL_GPL(kvm_mmu_set_mmio_spte_mask); /* - * spte bits of bit 3 ~ bit 11 are used as low 9 bits of generation number, - * the bits of bits 52 ~ bit 61 are used as high 10 bits of generation - * number. + * the low bit of the generation number is always presumed to be zero. + * This disables mmio caching during memslot updates. The concept is + * similar to a seqcount but instead of retrying the access we just punt + * and ignore the cache. + * + * spte bits 3-11 are used as bits 1-9 of the generation number, + * the bits 52-61 are used as bits 10-19 of the generation number. */ -#define MMIO_SPTE_GEN_LOW_SHIFT 3 +#define MMIO_SPTE_GEN_LOW_SHIFT 2 #define MMIO_SPTE_GEN_HIGH_SHIFT 52 -#define MMIO_GEN_SHIFT 19 -#define MMIO_GEN_LOW_SHIFT 9 -#define MMIO_GEN_LOW_MASK ((1 << MMIO_GEN_LOW_SHIFT) - 1) +#define MMIO_GEN_SHIFT 20 +#define MMIO_GEN_LOW_SHIFT 10 +#define MMIO_GEN_LOW_MASK ((1 << MMIO_GEN_LOW_SHIFT) - 2) #define MMIO_GEN_MASK ((1 << MMIO_GEN_SHIFT) - 1) #define MMIO_MAX_GEN ((1 << MMIO_GEN_SHIFT) - 1) @@ -235,12 +239,7 @@ static unsigned int kvm_current_mmio_generation(struct kvm *kvm) { - /* - * Init kvm generation close to MMIO_MAX_GEN to easily test the - * code of handling generation number wrap-around. - */ - return (kvm_memslots(kvm)->generation + - MMIO_MAX_GEN - 150) & MMIO_GEN_MASK; + return kvm_memslots(kvm)->generation & MMIO_GEN_MASK; } static void mark_mmio_spte(struct kvm *kvm, u64 *sptep, u64 gfn, @@ -377,12 +376,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 { @@ -498,23 +491,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) @@ -2659,6 +2635,9 @@ int emulate = 0; gfn_t pseudo_gfn; + if (!VALID_PAGE(vcpu->arch.mmu.root_hpa)) + return 0; + for_each_shadow_entry(vcpu, (u64)gfn << PAGE_SHIFT, iterator) { if (iterator.level == level) { mmu_set_spte(vcpu, iterator.sptep, ACC_ALL, @@ -2829,6 +2808,9 @@ bool ret = false; u64 spte = 0ull; + if (!VALID_PAGE(vcpu->arch.mmu.root_hpa)) + return false; + if (!page_fault_can_be_fast(error_code)) return false; @@ -3150,7 +3132,7 @@ if (!VALID_PAGE(vcpu->arch.mmu.root_hpa)) return; - vcpu_clear_mmio_info(vcpu, ~0ul); + vcpu_clear_mmio_info(vcpu, MMIO_GVA_ANY); kvm_mmu_audit(vcpu, AUDIT_PRE_SYNC); if (vcpu->arch.mmu.root_level == PT64_ROOT_LEVEL) { hpa_t root = vcpu->arch.mmu.root_hpa; @@ -3204,26 +3186,14 @@ 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; u64 spte = 0ull; + if (!VALID_PAGE(vcpu->arch.mmu.root_hpa)) + return spte; + walk_shadow_page_lockless_begin(vcpu); for_each_shadow_entry_lockless(vcpu, addr, iterator, spte) if (!is_shadow_present_pte(spte)) @@ -3258,13 +3228,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. */ @@ -3592,7 +3555,7 @@ } static void update_permission_bitmask(struct kvm_vcpu *vcpu, - struct kvm_mmu *mmu, bool ept) + struct kvm_mmu *mmu, bool ept) { unsigned bit, byte, pfec; u8 map; @@ -3745,6 +3708,7 @@ void kvm_init_shadow_mmu(struct kvm_vcpu *vcpu, struct kvm_mmu *context) { bool smep = kvm_read_cr4_bits(vcpu, X86_CR4_SMEP); + bool smap = kvm_read_cr4_bits(vcpu, X86_CR4_SMAP); ASSERT(vcpu); ASSERT(!VALID_PAGE(vcpu->arch.mmu.root_hpa)); @@ -3762,6 +3726,8 @@ vcpu->arch.mmu.base_role.cr0_wp = is_write_protection(vcpu); vcpu->arch.mmu.base_role.smep_andnot_wp = smep && !is_write_protection(vcpu); + context->base_role.smap_andnot_wp + = smap && !is_write_protection(vcpu); } EXPORT_SYMBOL_GPL(kvm_init_shadow_mmu); @@ -4033,12 +3999,18 @@ const u8 *new, int bytes) { gfn_t gfn = gpa >> PAGE_SHIFT; - union kvm_mmu_page_role mask = { .word = 0 }; struct kvm_mmu_page *sp; LIST_HEAD(invalid_list); u64 entry, gentry, *spte; int npte; bool remote_flush, local_flush, zap_page; + union kvm_mmu_page_role mask = (union kvm_mmu_page_role) { + .cr0_wp = 1, + .cr4_pae = 1, + .nxe = 1, + .smep_andnot_wp = 1, + .smap_andnot_wp = 1, + }; /* * If we don't have indirect shadow pages, it means no page is @@ -4064,7 +4036,6 @@ ++vcpu->kvm->stat.mmu_pte_write; kvm_mmu_audit(vcpu, AUDIT_PRE_PTE_WRITE); - mask.cr0_wp = mask.cr4_pae = mask.nxe = 1; for_each_gfn_indirect_valid_sp(vcpu->kvm, sp, gfn) { if (detect_write_misaligned(sp, gpa, bytes) || detect_write_flooding(sp)) { @@ -4369,8 +4340,8 @@ * The very rare case: if the generation-number is round, * zap all shadow pages. */ - if (unlikely(kvm_current_mmio_generation(kvm) >= MMIO_MAX_GEN)) { - printk_ratelimited(KERN_INFO "kvm: zapping shadow pages for mmio generation wraparound\n"); + if (unlikely(kvm_current_mmio_generation(kvm) == 0)) { + printk_ratelimited(KERN_DEBUG "kvm: zapping shadow pages for mmio generation wraparound\n"); kvm_mmu_invalidate_zap_all_pages(kvm); } } @@ -4510,6 +4481,9 @@ u64 spte; int nr_sptes = 0; + if (!VALID_PAGE(vcpu->arch.mmu.root_hpa)) + return nr_sptes; + walk_shadow_page_lockless_begin(vcpu); for_each_shadow_entry_lockless(vcpu, addr, iterator, spte) { sptes[iterator.level-1] = spte; --- linux-3.13.0.orig/arch/x86/kvm/mmu.h +++ linux-3.13.0/arch/x86/kvm/mmu.h @@ -113,6 +113,8 @@ static inline bool permission_fault(struct kvm_mmu *mmu, unsigned pte_access, unsigned pfec) { + WARN_ON(pfec & PFERR_RSVD_MASK); + return (mmu->permissions[pfec >> 1] >> pte_access) & 1; } --- linux-3.13.0.orig/arch/x86/kvm/paging_tmpl.h +++ linux-3.13.0/arch/x86/kvm/paging_tmpl.h @@ -257,7 +257,7 @@ return ret; mark_page_dirty(vcpu->kvm, table_gfn); - walker->ptes[level] = pte; + walker->ptes[level - 1] = pte; } return 0; } @@ -569,6 +569,9 @@ if (FNAME(gpte_changed)(vcpu, gw, top_level)) goto out_gpte_changed; + if (!VALID_PAGE(vcpu->arch.mmu.root_hpa)) + goto out_gpte_changed; + for (shadow_walk_init(&it, vcpu, addr); shadow_walk_okay(&it) && it.level > gw->level; shadow_walk_next(&it)) { @@ -703,6 +706,13 @@ mmu_is_nested(vcpu)); if (likely(r != RET_MMIO_PF_INVALID)) return r; + + /* + * page fault with PFEC.RSVD = 1 is caused by shadow + * page fault, should not be used to walk guest page + * table. + */ + error_code &= ~PFERR_RSVD_MASK; }; r = mmu_topup_memory_caches(vcpu); @@ -820,6 +830,11 @@ */ mmu_topup_memory_caches(vcpu); + if (!VALID_PAGE(vcpu->arch.mmu.root_hpa)) { + WARN_ON(1); + return; + } + spin_lock(&vcpu->kvm->mmu_lock); for_each_shadow_entry(vcpu, gva, iterator) { level = iterator.level; --- linux-3.13.0.orig/arch/x86/kvm/svm.c +++ linux-3.13.0/arch/x86/kvm/svm.c @@ -495,8 +495,10 @@ { struct vcpu_svm *svm = to_svm(vcpu); - if (svm->vmcb->control.next_rip != 0) + if (svm->vmcb->control.next_rip != 0) { + WARN_ON_ONCE(!static_cpu_has(X86_FEATURE_NRIPS)); svm->next_rip = svm->vmcb->control.next_rip; + } if (!svm->next_rip) { if (emulate_instruction(vcpu, EMULTYPE_SKIP) != @@ -1101,6 +1103,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); @@ -1637,20 +1641,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 @@ -1728,7 +1725,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 & @@ -1763,6 +1759,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); @@ -2989,10 +2991,8 @@ u8 cr8_prev = kvm_get_cr8(&svm->vcpu); /* instruction emulation calls kvm_set_cr8() */ r = cr_interception(svm); - if (irqchip_in_kernel(svm->vcpu.kvm)) { - clr_cr_intercept(svm, INTERCEPT_CR8_WRITE); + if (irqchip_in_kernel(svm->vcpu.kvm)) return r; - } if (cr8_prev <= kvm_get_cr8(&svm->vcpu)) return r; kvm_run->exit_reason = KVM_EXIT_SET_TPR; @@ -3202,7 +3202,7 @@ msr.host_initiated = false; svm->next_rip = kvm_rip_read(&svm->vcpu) + 2; - if (svm_set_msr(&svm->vcpu, &msr)) { + if (kvm_set_msr(&svm->vcpu, &msr)) { trace_kvm_msr_write_ex(ecx, data); kvm_inject_gp(&svm->vcpu, 0); } else { @@ -3281,6 +3281,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, @@ -3484,9 +3485,9 @@ if (exit_code >= ARRAY_SIZE(svm_exit_handlers) || !svm_exit_handlers[exit_code]) { - kvm_run->exit_reason = KVM_EXIT_UNKNOWN; - kvm_run->hw.hardware_exit_reason = exit_code; - return 0; + WARN_ONCE(1, "vmx: unexpected exit reason 0x%x\n", exit_code); + kvm_queue_exception(vcpu, UD_VECTOR); + return 1; } return svm_exit_handlers[exit_code](svm); @@ -3554,6 +3555,8 @@ if (is_guest_mode(vcpu) && (vcpu->arch.hflags & HF_VINTR_MASK)) return; + clr_cr_intercept(svm, INTERCEPT_CR8_WRITE); + if (irr == -1) return; @@ -3667,7 +3670,6 @@ */ svm->nmi_singlestep = true; svm->vmcb->save.rflags |= (X86_EFLAGS_TF | X86_EFLAGS_RF); - update_db_bp_intercept(vcpu); return 0; } @@ -4233,7 +4235,9 @@ break; } - vmcb->control.next_rip = info->next_rip; + /* TODO: Advertise NRIPS to guest hypervisor unconditionally */ + if (static_cpu_has(X86_FEATURE_NRIPS)) + vmcb->control.next_rip = info->next_rip; vmcb->control.exit_code = icpt_info.exit_code; vmexit = nested_svm_exit_handled(svm); @@ -4267,7 +4271,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-3.13.0.orig/arch/x86/kvm/trace.h +++ linux-3.13.0/arch/x86/kvm/trace.h @@ -237,7 +237,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-3.13.0.orig/arch/x86/kvm/vmx.c +++ linux-3.13.0/arch/x86/kvm/vmx.c @@ -439,6 +439,7 @@ #endif int gs_ldt_reload_needed; int fs_reload_needed; + unsigned long vmcs_host_cr4; /* May not match real cr4 */ } host_state; struct { int vm86_active; @@ -1056,7 +1057,9 @@ == (INTR_TYPE_HARD_EXCEPTION | INTR_INFO_VALID_MASK); } -static void nested_vmx_vmexit(struct kvm_vcpu *vcpu); +static void nested_vmx_vmexit(struct kvm_vcpu *vcpu, u32 exit_reason, + u32 exit_intr_info, + unsigned long exit_qualification); static void nested_vmx_entry_failure(struct kvm_vcpu *vcpu, struct vmcs12 *vmcs12, u32 reason, unsigned long qualification); @@ -1387,7 +1390,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)) @@ -1491,6 +1494,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) @@ -1906,7 +1916,9 @@ if (!(vmcs12->exception_bitmap & (1u << nr))) return 0; - nested_vmx_vmexit(vcpu); + nested_vmx_vmexit(vcpu, to_vmx(vcpu)->exit_reason, + vmcs_read32(VM_EXIT_INTR_INFO), + vmcs_readl(EXIT_QUALIFICATION)); return 1; } @@ -2255,12 +2267,12 @@ nested_vmx_secondary_ctls_low = 0; nested_vmx_secondary_ctls_high &= SECONDARY_EXEC_VIRTUALIZE_APIC_ACCESSES | - SECONDARY_EXEC_UNRESTRICTED_GUEST | SECONDARY_EXEC_WBINVD_EXITING; if (enable_ept) { /* nested EPT: emulate EPT also to L1 */ - nested_vmx_secondary_ctls_high |= SECONDARY_EXEC_ENABLE_EPT; + nested_vmx_secondary_ctls_high |= + SECONDARY_EXEC_ENABLE_EPT; nested_vmx_ept_caps = VMX_EPT_PAGE_WALK_4_BIT | VMX_EPTP_WB_BIT | VMX_EPT_2MB_PAGE_BIT | VMX_EPT_INVEPT_BIT; @@ -2275,6 +2287,10 @@ } else nested_vmx_ept_caps = 0; + if (enable_unrestricted_guest) + nested_vmx_secondary_ctls_high |= + SECONDARY_EXEC_UNRESTRICTED_GUEST; + /* miscellaneous data */ rdmsr(MSR_IA32_VMX_MISC, nested_vmx_misc_low, nested_vmx_misc_high); nested_vmx_misc_low &= VMX_MISC_PREEMPTION_TIMER_RATE_MASK | @@ -2545,12 +2561,15 @@ break; msr = find_msr_entry(vmx, msr_index); if (msr) { + u64 old_msr_data = msr->data; msr->data = data; if (msr - vmx->guest_msrs < vmx->save_nmsrs) { preempt_disable(); - kvm_set_shared_msr(msr->index, msr->data, - msr->mask); + ret = kvm_set_shared_msr(msr->index, msr->data, + msr->mask); preempt_enable(); + if (ret) + msr->data = old_msr_data; } break; } @@ -3420,19 +3439,21 @@ if (!is_paging(vcpu)) { hw_cr4 &= ~X86_CR4_PAE; hw_cr4 |= X86_CR4_PSE; - /* - * SMEP 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 needs to be manually - * disabled when guest switches to non-paging mode. - */ - hw_cr4 &= ~X86_CR4_SMEP; } 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; @@ -4131,11 +4152,16 @@ u32 low32, high32; unsigned long tmpl; struct desc_ptr dt; + unsigned long cr4; vmcs_writel(HOST_CR0, read_cr0() & ~X86_CR0_TS); /* 22.2.3 */ - vmcs_writel(HOST_CR4, read_cr4()); /* 22.2.3, 22.2.5 */ vmcs_writel(HOST_CR3, read_cr3()); /* 22.2.3 FIXME: shadow tables */ + /* Save the most likely value for this task's CR4 in the VMCS. */ + cr4 = read_cr4(); + vmcs_writel(HOST_CR4, cr4); /* 22.2.3, 22.2.5 */ + vmx->host_state.vmcs_host_cr4 = cr4; + vmcs_write16(HOST_CS_SELECTOR, __KERNEL_CS); /* 22.2.4 */ #ifdef CONFIG_X86_64 /* @@ -4587,25 +4613,8 @@ static int vmx_nmi_allowed(struct kvm_vcpu *vcpu) { - if (is_guest_mode(vcpu)) { - struct vmcs12 *vmcs12 = get_vmcs12(vcpu); - - if (to_vmx(vcpu)->nested.nested_run_pending) - return 0; - if (nested_exit_on_nmi(vcpu)) { - nested_vmx_vmexit(vcpu); - vmcs12->vm_exit_reason = EXIT_REASON_EXCEPTION_NMI; - vmcs12->vm_exit_intr_info = NMI_VECTOR | - INTR_TYPE_NMI_INTR | INTR_INFO_VALID_MASK; - /* - * The NMI-triggered VM exit counts as injection: - * clear this one and block further NMIs. - */ - vcpu->arch.nmi_pending = 0; - vmx_set_nmi_mask(vcpu, true); - return 0; - } - } + if (to_vmx(vcpu)->nested.nested_run_pending) + return 0; if (!cpu_has_virtual_nmis() && to_vmx(vcpu)->soft_vnmi_blocked) return 0; @@ -4617,23 +4626,8 @@ static int vmx_interrupt_allowed(struct kvm_vcpu *vcpu) { - if (is_guest_mode(vcpu)) { - struct vmcs12 *vmcs12 = get_vmcs12(vcpu); - - if (to_vmx(vcpu)->nested.nested_run_pending) - return 0; - if (nested_exit_on_intr(vcpu)) { - nested_vmx_vmexit(vcpu); - vmcs12->vm_exit_reason = - EXIT_REASON_EXTERNAL_INTERRUPT; - vmcs12->vm_exit_intr_info = 0; - /* - * fall through to normal code, but now in L1, not L2 - */ - } - } - - return (vmcs_readl(GUEST_RFLAGS) & X86_EFLAGS_IF) && + return (!to_vmx(vcpu)->nested.nested_run_pending && + vmcs_readl(GUEST_RFLAGS) & X86_EFLAGS_IF) && !(vmcs_read32(GUEST_INTERRUPTIBILITY_INFO) & (GUEST_INTR_STATE_STI | GUEST_INTR_STATE_MOV_SS)); } @@ -4832,6 +4826,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; @@ -5129,7 +5130,7 @@ msr.data = data; msr.index = ecx; msr.host_initiated = false; - if (vmx_set_msr(vcpu, &msr) != 0) { + if (kvm_set_msr(vcpu, &msr) != 0) { trace_kvm_msr_write_ex(ecx, data); kvm_inject_gp(vcpu, 0); return 1; @@ -6367,6 +6368,7 @@ if (!(types & (1UL << type))) { nested_vmx_failValid(vcpu, VMXERR_INVALID_OPERAND_TO_INVEPT_INVVPID); + skip_emulated_instruction(vcpu); return 1; } @@ -6401,6 +6403,12 @@ return 1; } +static int handle_invvpid(struct kvm_vcpu *vcpu) +{ + kvm_queue_exception(vcpu, UD_VECTOR); + return 1; +} + /* * The exit handlers return 1 if the exit was handled fully and guest execution * may resume. Otherwise they set the kvm_run parameter to indicate what needs @@ -6446,6 +6454,7 @@ [EXIT_REASON_MWAIT_INSTRUCTION] = handle_invalid_op, [EXIT_REASON_MONITOR_INSTRUCTION] = handle_invalid_op, [EXIT_REASON_INVEPT] = handle_invept, + [EXIT_REASON_INVVPID] = handle_invvpid, }; static const int kvm_vmx_max_exit_handlers = @@ -6644,7 +6653,7 @@ else if (is_page_fault(intr_info)) return enable_ept; else if (is_no_device(intr_info) && - !(nested_read_cr0(vmcs12) & X86_CR0_TS)) + !(vmcs12->guest_cr0 & X86_CR0_TS)) return 0; return vmcs12->exception_bitmap & (1u << (intr_info & INTR_INFO_VECTOR_MASK)); @@ -6675,7 +6684,7 @@ case EXIT_REASON_VMPTRST: case EXIT_REASON_VMREAD: case EXIT_REASON_VMRESUME: case EXIT_REASON_VMWRITE: case EXIT_REASON_VMOFF: case EXIT_REASON_VMON: - case EXIT_REASON_INVEPT: + case EXIT_REASON_INVEPT: case EXIT_REASON_INVVPID: /* * VMX instructions trap unconditionally. This allows L1 to * emulate them for its L2 guest, i.e., allows 3-level nesting! @@ -6777,7 +6786,9 @@ return handle_invalid_guest_state(vcpu); if (is_guest_mode(vcpu) && nested_vmx_exit_handled(vcpu)) { - nested_vmx_vmexit(vcpu); + nested_vmx_vmexit(vcpu, exit_reason, + vmcs_read32(VM_EXIT_INTR_INFO), + vmcs_readl(EXIT_QUALIFICATION)); return 1; } @@ -6838,10 +6849,10 @@ && kvm_vmx_exit_handlers[exit_reason]) return kvm_vmx_exit_handlers[exit_reason](vcpu); else { - vcpu->run->exit_reason = KVM_EXIT_UNKNOWN; - vcpu->run->hw.hardware_exit_reason = exit_reason; + WARN_ONCE(1, "vmx: unexpected exit reason 0x%x\n", exit_reason); + kvm_queue_exception(vcpu, UD_VECTOR); + return 1; } - return 0; } static void update_cr8_intercept(struct kvm_vcpu *vcpu, int tpr, int irr) @@ -7140,7 +7151,7 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu) { struct vcpu_vmx *vmx = to_vmx(vcpu); - unsigned long debugctlmsr; + unsigned long debugctlmsr, cr4; /* Record the guest's net vcpu time for enforced NMI injections. */ if (unlikely(!cpu_has_virtual_nmis() && vmx->soft_vnmi_blocked)) @@ -7161,6 +7172,12 @@ if (test_bit(VCPU_REGS_RIP, (unsigned long *)&vcpu->arch.regs_dirty)) vmcs_writel(GUEST_RIP, vcpu->arch.regs[VCPU_REGS_RIP]); + cr4 = read_cr4(); + if (unlikely(cr4 != vmx->host_state.vmcs_host_cr4)) { + vmcs_writel(HOST_CR4, cr4); + vmx->host_state.vmcs_host_cr4 = cr4; + } + /* When single-stepping over STI and MOV SS, we must clear the * corresponding interruptibility bits in the guest state. Otherwise * vmentry fails as it then expects bit 14 (BS) in pending debug @@ -7332,8 +7349,8 @@ struct vcpu_vmx *vmx = to_vmx(vcpu); free_vpid(vmx); - free_nested(vmx); free_loaded_vmcs(vmx->loaded_vmcs); + free_nested(vmx); kfree(vmx->guest_msrs); kvm_vcpu_uninit(vcpu); kmem_cache_free(kvm_vcpu_cache, vmx); @@ -7518,15 +7535,14 @@ static void nested_ept_inject_page_fault(struct kvm_vcpu *vcpu, struct x86_exception *fault) { - struct vmcs12 *vmcs12; - nested_vmx_vmexit(vcpu); - vmcs12 = get_vmcs12(vcpu); + struct vmcs12 *vmcs12 = get_vmcs12(vcpu); + u32 exit_reason; if (fault->error_code & PFERR_RSVD_MASK) - vmcs12->vm_exit_reason = EXIT_REASON_EPT_MISCONFIG; + exit_reason = EXIT_REASON_EPT_MISCONFIG; else - vmcs12->vm_exit_reason = EXIT_REASON_EPT_VIOLATION; - vmcs12->exit_qualification = vcpu->arch.exit_qualification; + exit_reason = EXIT_REASON_EPT_VIOLATION; + nested_vmx_vmexit(vcpu, exit_reason, 0, vcpu->arch.exit_qualification); vmcs12->guest_physical_address = fault->address; } @@ -7564,7 +7580,9 @@ /* TODO: also check PFEC_MATCH/MASK, not just EB.PF. */ if (vmcs12->exception_bitmap & (1u << PF_VECTOR)) - nested_vmx_vmexit(vcpu); + nested_vmx_vmexit(vcpu, to_vmx(vcpu)->exit_reason, + vmcs_read32(VM_EXIT_INTR_INFO), + vmcs_readl(EXIT_QUALIFICATION)); else kvm_inject_page_fault(vcpu, fault); } @@ -7640,9 +7658,11 @@ vmcs_write64(VMCS_LINK_POINTER, -1ull); - vmcs_write32(PIN_BASED_VM_EXEC_CONTROL, - (vmcs_config.pin_based_exec_ctrl | - vmcs12->pin_based_vm_exec_control)); + exec_control = vmcs12->pin_based_vm_exec_control; + exec_control |= vmcs_config.pin_based_exec_ctrl; + exec_control &= ~(PIN_BASED_VMX_PREEMPTION_TIMER | + PIN_BASED_POSTED_INTR); + vmcs_write32(PIN_BASED_VM_EXEC_CONTROL, exec_control); if (vmcs12->pin_based_vm_exec_control & PIN_BASED_VMX_PREEMPTION_TIMER) vmcs_write32(VMX_PREEMPTION_TIMER_VALUE, @@ -7678,7 +7698,9 @@ if (!vmx->rdtscp_enabled) exec_control &= ~SECONDARY_EXEC_RDTSCP; /* Take the following fields only from vmcs12 */ - exec_control &= ~SECONDARY_EXEC_VIRTUALIZE_APIC_ACCESSES; + exec_control &= ~(SECONDARY_EXEC_VIRTUALIZE_APIC_ACCESSES | + SECONDARY_EXEC_VIRTUAL_INTR_DELIVERY | + SECONDARY_EXEC_APIC_REGISTER_VIRT); if (nested_cpu_has(vmcs12, CPU_BASED_ACTIVATE_SECONDARY_CONTROLS)) exec_control |= vmcs12->secondary_vm_exec_control; @@ -8099,6 +8121,35 @@ } } +static int vmx_check_nested_events(struct kvm_vcpu *vcpu, bool external_intr) +{ + struct vcpu_vmx *vmx = to_vmx(vcpu); + + if (vcpu->arch.nmi_pending && nested_exit_on_nmi(vcpu)) { + if (vmx->nested.nested_run_pending) + return -EBUSY; + nested_vmx_vmexit(vcpu, EXIT_REASON_EXCEPTION_NMI, + NMI_VECTOR | INTR_TYPE_NMI_INTR | + INTR_INFO_VALID_MASK, 0); + /* + * The NMI-triggered VM exit counts as injection: + * clear this one and block further NMIs. + */ + vcpu->arch.nmi_pending = 0; + vmx_set_nmi_mask(vcpu, true); + return 0; + } + + if ((kvm_cpu_has_interrupt(vcpu) || external_intr) && + nested_exit_on_intr(vcpu)) { + if (vmx->nested.nested_run_pending) + return -EBUSY; + nested_vmx_vmexit(vcpu, EXIT_REASON_EXTERNAL_INTERRUPT, 0, 0); + } + + return 0; +} + /* * prepare_vmcs12 is part of what we need to do when the nested L2 guest exits * and we want to prepare to run its L1 parent. L1 keeps a vmcs for L2 (vmcs12), @@ -8110,7 +8161,9 @@ * exit-information fields only. Other fields are modified by L1 with VMWRITE, * which already writes to vmcs12 directly. */ -static void prepare_vmcs12(struct kvm_vcpu *vcpu, struct vmcs12 *vmcs12) +static void prepare_vmcs12(struct kvm_vcpu *vcpu, struct vmcs12 *vmcs12, + u32 exit_reason, u32 exit_intr_info, + unsigned long exit_qualification) { /* update guest state fields: */ vmcs12->guest_cr0 = vmcs12_guest_cr0(vcpu, vmcs12); @@ -8201,10 +8254,10 @@ /* update exit information fields: */ - vmcs12->vm_exit_reason = to_vmx(vcpu)->exit_reason; - vmcs12->exit_qualification = vmcs_readl(EXIT_QUALIFICATION); + vmcs12->vm_exit_reason = exit_reason; + vmcs12->exit_qualification = exit_qualification; - vmcs12->vm_exit_intr_info = vmcs_read32(VM_EXIT_INTR_INFO); + vmcs12->vm_exit_intr_info = exit_intr_info; if ((vmcs12->vm_exit_intr_info & (INTR_INFO_VALID_MASK | INTR_INFO_DELIVER_CODE_MASK)) == (INTR_INFO_VALID_MASK | INTR_INFO_DELIVER_CODE_MASK)) @@ -8370,7 +8423,9 @@ * and modify vmcs12 to make it see what it would expect to see there if * L2 was its real guest. Must only be called when in L2 (is_guest_mode()) */ -static void nested_vmx_vmexit(struct kvm_vcpu *vcpu) +static void nested_vmx_vmexit(struct kvm_vcpu *vcpu, u32 exit_reason, + u32 exit_intr_info, + unsigned long exit_qualification) { struct vcpu_vmx *vmx = to_vmx(vcpu); int cpu; @@ -8380,7 +8435,8 @@ WARN_ON_ONCE(vmx->nested.nested_run_pending); leave_guest_mode(vcpu); - prepare_vmcs12(vcpu, vmcs12); + prepare_vmcs12(vcpu, vmcs12, exit_reason, exit_intr_info, + exit_qualification); cpu = get_cpu(); vmx->loaded_vmcs = &vmx->vmcs01; @@ -8421,6 +8477,9 @@ nested_vmx_succeed(vcpu); if (enable_shadow_vmcs) vmx->nested.sync_shadow_vmcs = true; + + /* in case we halted in L2 */ + vcpu->arch.mp_state = KVM_MP_STATE_RUNNABLE; } /* @@ -8548,6 +8607,8 @@ .check_intercept = vmx_check_intercept, .handle_external_intr = vmx_handle_external_intr, + + .check_nested_events = vmx_check_nested_events, }; static int __init vmx_init(void) --- linux-3.13.0.orig/arch/x86/kvm/x86.c +++ linux-3.13.0/arch/x86/kvm/x86.c @@ -94,6 +94,9 @@ static bool ignore_msrs = 0; module_param(ignore_msrs, bool, S_IRUGO | S_IWUSR); +unsigned int min_timer_period_us = 500; +module_param(min_timer_period_us, uint, S_IRUGO | S_IWUSR); + bool kvm_has_tsc_control; EXPORT_SYMBOL_GPL(kvm_has_tsc_control); u32 kvm_max_guest_tsc_khz; @@ -222,20 +225,25 @@ shared_msr_update(i, shared_msrs_global.msrs[i]); } -void kvm_set_shared_msr(unsigned slot, u64 value, u64 mask) +int kvm_set_shared_msr(unsigned slot, u64 value, u64 mask) { unsigned int cpu = smp_processor_id(); struct kvm_shared_msrs *smsr = per_cpu_ptr(shared_msrs, cpu); + int err; if (((value ^ smsr->values[slot].curr) & mask) == 0) - return; + return 0; smsr->values[slot].curr = value; - wrmsrl(shared_msrs_global.msrs[slot], value); + err = wrmsrl_safe(shared_msrs_global.msrs[slot], value); + if (err) + return 1; + if (!smsr->registered) { smsr->urn.on_user_return = kvm_on_user_return; user_return_notifier_register(&smsr->urn); smsr->registered = true; } + return 0; } EXPORT_SYMBOL_GPL(kvm_set_shared_msr); @@ -616,8 +624,9 @@ int kvm_set_cr4(struct kvm_vcpu *vcpu, unsigned long cr4) { unsigned long old_cr4 = kvm_read_cr4(vcpu); - unsigned long pdptr_bits = X86_CR4_PGE | X86_CR4_PSE | - X86_CR4_PAE | X86_CR4_SMEP; + unsigned long pdptr_bits = X86_CR4_PGE | X86_CR4_PSE | X86_CR4_PAE | + X86_CR4_SMEP | X86_CR4_SMAP; + if (cr4 & CR4_RESERVED_BITS) return 1; @@ -916,7 +925,6 @@ } EXPORT_SYMBOL_GPL(kvm_enable_efer_bits); - /* * Writes msr value into into the appropriate "register". * Returns 0 on success, non-0 otherwise. @@ -924,8 +932,34 @@ */ int kvm_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr) { + switch (msr->index) { + case MSR_FS_BASE: + case MSR_GS_BASE: + case MSR_KERNEL_GS_BASE: + case MSR_CSTAR: + case MSR_LSTAR: + if (is_noncanonical_address(msr->data)) + return 1; + break; + case MSR_IA32_SYSENTER_EIP: + case MSR_IA32_SYSENTER_ESP: + /* + * IA32_SYSENTER_ESP and IA32_SYSENTER_EIP cause #GP if + * non-canonical address is written on Intel but not on + * AMD (which ignores the top 32-bits, because it does + * not implement 64-bit SYSENTER). + * + * 64-bit code should hence be able to write a non-canonical + * value on AMD. Making the address canonical ensures that + * vmentry does not fail on Intel after writing a non-canonical + * value, and that something deterministic happens if the guest + * invokes 64-bit SYSENTER. + */ + msr->data = get_canonical(msr->data); + } return kvm_x86_ops->set_msr(vcpu, msr); } +EXPORT_SYMBOL_GPL(kvm_set_msr); /* * Adapt set_msr() to msr_io()'s calling convention @@ -1953,6 +1987,8 @@ static void record_steal_time(struct kvm_vcpu *vcpu) { + accumulate_steal_time(vcpu); + if (!(vcpu->arch.st.msr_val & KVM_MSR_ENABLED)) return; @@ -2028,7 +2064,7 @@ if (guest_cpuid_has_tsc_adjust(vcpu)) { if (!msr_info->host_initiated) { u64 adj = data - vcpu->arch.ia32_tsc_adjust_msr; - kvm_x86_ops->adjust_tsc_offset(vcpu, adj, true); + adjust_tsc_offset_guest(vcpu, adj); } vcpu->arch.ia32_tsc_adjust_msr = data; } @@ -2086,12 +2122,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; @@ -2343,6 +2373,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_K7_EVNTSEL0: @@ -2772,7 +2804,6 @@ vcpu->cpu = cpu; } - accumulate_steal_time(vcpu); kvm_make_request(KVM_REQ_STEAL_UPDATE, vcpu); } @@ -3469,10 +3500,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; } @@ -3493,6 +3526,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; @@ -3502,7 +3536,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; } @@ -4861,7 +4897,7 @@ ++vcpu->stat.insn_emulation_fail; trace_kvm_emulate_insn_failed(vcpu); - if (!is_guest_mode(vcpu)) { + if (!is_guest_mode(vcpu) && kvm_x86_ops->get_cpl(vcpu) == 0) { vcpu->run->exit_reason = KVM_EXIT_INTERNAL_ERROR; vcpu->run->internal.suberror = KVM_INTERNAL_ERROR_EMULATION; vcpu->run->internal.ndata = 0; @@ -5499,7 +5535,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; } @@ -5761,8 +5797,10 @@ kvm_x86_ops->update_cr8_intercept(vcpu, tpr, max_irr); } -static void inject_pending_event(struct kvm_vcpu *vcpu) +static int inject_pending_event(struct kvm_vcpu *vcpu, bool req_int_win) { + int r; + /* try to reinject previous events if any */ if (vcpu->arch.exception.pending) { trace_kvm_inj_exception(vcpu->arch.exception.nr, @@ -5772,17 +5810,23 @@ vcpu->arch.exception.has_error_code, vcpu->arch.exception.error_code, vcpu->arch.exception.reinject); - return; + return 0; } if (vcpu->arch.nmi_injected) { kvm_x86_ops->set_nmi(vcpu); - return; + return 0; } if (vcpu->arch.interrupt.pending) { kvm_x86_ops->set_irq(vcpu); - return; + return 0; + } + + if (is_guest_mode(vcpu) && kvm_x86_ops->check_nested_events) { + r = kvm_x86_ops->check_nested_events(vcpu, req_int_win); + if (r != 0) + return r; } /* try to inject new event if pending */ @@ -5793,12 +5837,25 @@ kvm_x86_ops->set_nmi(vcpu); } } else if (kvm_cpu_has_injectable_intr(vcpu)) { + /* + * Because interrupts can be injected asynchronously, we are + * calling check_nested_events again here to avoid a race condition. + * See https://lkml.org/lkml/2014/7/2/60 for discussion about this + * proposal and current concerns. Perhaps we should be setting + * KVM_REQ_EVENT only on certain events and not unconditionally? + */ + if (is_guest_mode(vcpu) && kvm_x86_ops->check_nested_events) { + r = kvm_x86_ops->check_nested_events(vcpu, req_int_win); + if (r != 0) + return r; + } if (kvm_x86_ops->interrupt_allowed(vcpu)) { kvm_queue_interrupt(vcpu, kvm_cpu_get_interrupt(vcpu), false); kvm_x86_ops->set_irq(vcpu); } } + return 0; } static void process_nmi(struct kvm_vcpu *vcpu) @@ -5898,10 +5955,10 @@ goto out; } - inject_pending_event(vcpu); - + if (inject_pending_event(vcpu, req_int_win) != 0) + req_immediate_exit = true; /* enable NMI/IRQ window open exits if needed */ - if (vcpu->arch.nmi_pending) + else if (vcpu->arch.nmi_pending) req_immediate_exit = kvm_x86_ops->enable_nmi_window(vcpu) != 0; else if (kvm_cpu_has_injectable_intr(vcpu) || req_int_win) @@ -6089,6 +6146,20 @@ } if (need_resched()) { srcu_read_unlock(&kvm->srcu, vcpu->srcu_idx); +#ifdef CONFIG_X86_32 + /* + * This is a hack around a current bug on i386 + * that causes TIF_NEED_RESCHED not being propagated + * into the per-cpu counter. This causes cond_resched() + * which is what kvm_resched() calls to exit without + * actually rescheduling. We continue immediately with + * the loop but vcpu_enter_guest checks for the process + * flag and immediately exits and this loops busily + * runs forever. + */ + if (tif_need_resched()) + set_preempt_need_resched(); +#endif kvm_resched(vcpu); vcpu->srcu_idx = srcu_read_lock(&kvm->srcu); } @@ -6160,7 +6231,7 @@ frag->len -= len; } - if (vcpu->mmio_cur_fragment == vcpu->mmio_nr_fragments) { + if (vcpu->mmio_cur_fragment >= vcpu->mmio_nr_fragments) { vcpu->mmio_needed = 0; /* FIXME: return into emulator if single-stepping. */ @@ -7218,6 +7289,9 @@ 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) --- linux-3.13.0.orig/arch/x86/kvm/x86.h +++ linux-3.13.0/arch/x86/kvm/x86.h @@ -78,15 +78,23 @@ vcpu->arch.mmio_gva = gva & PAGE_MASK; vcpu->arch.access = access; vcpu->arch.mmio_gfn = gfn; + vcpu->arch.mmio_gen = kvm_memslots(vcpu->kvm)->generation; +} + +static inline bool vcpu_match_mmio_gen(struct kvm_vcpu *vcpu) +{ + return vcpu->arch.mmio_gen == kvm_memslots(vcpu->kvm)->generation; } /* - * Clear the mmio cache info for the given gva, - * specially, if gva is ~0ul, we clear all mmio cache info. + * Clear the mmio cache info for the given gva. If gva is MMIO_GVA_ANY, we + * clear all mmio cache info. */ +#define MMIO_GVA_ANY (~(gva_t)0) + static inline void vcpu_clear_mmio_info(struct kvm_vcpu *vcpu, gva_t gva) { - if (gva != (~0ul) && vcpu->arch.mmio_gva != (gva & PAGE_MASK)) + if (gva != MMIO_GVA_ANY && vcpu->arch.mmio_gva != (gva & PAGE_MASK)) return; vcpu->arch.mmio_gva = 0; @@ -94,7 +102,8 @@ static inline bool vcpu_match_mmio_gva(struct kvm_vcpu *vcpu, unsigned long gva) { - if (vcpu->arch.mmio_gva && vcpu->arch.mmio_gva == (gva & PAGE_MASK)) + if (vcpu_match_mmio_gen(vcpu) && vcpu->arch.mmio_gva && + vcpu->arch.mmio_gva == (gva & PAGE_MASK)) return true; return false; @@ -102,7 +111,8 @@ static inline bool vcpu_match_mmio_gpa(struct kvm_vcpu *vcpu, gpa_t gpa) { - if (vcpu->arch.mmio_gfn && vcpu->arch.mmio_gfn == gpa >> PAGE_SHIFT) + if (vcpu_match_mmio_gen(vcpu) && vcpu->arch.mmio_gfn && + vcpu->arch.mmio_gfn == gpa >> PAGE_SHIFT) return true; return false; @@ -125,5 +135,7 @@ #define KVM_SUPPORTED_XCR0 (XSTATE_FP | XSTATE_SSE | XSTATE_YMM) extern u64 host_xcr0; +extern unsigned int min_timer_period_us; + extern struct static_key kvm_no_apic_vcpu; #endif --- linux-3.13.0.orig/arch/x86/mm/dump_pagetables.c +++ linux-3.13.0/arch/x86/mm/dump_pagetables.c @@ -30,11 +30,13 @@ unsigned long start_address; unsigned long current_address; const struct addr_marker *marker; + unsigned long lines; }; struct addr_marker { unsigned long start_address; const char *name; + unsigned long max_lines; }; /* indices for address_markers; keep sync'd w/ address_markers below */ @@ -45,6 +47,7 @@ LOW_KERNEL_NR, VMALLOC_START_NR, VMEMMAP_START_NR, + ESPFIX_START_NR, HIGH_KERNEL_NR, MODULES_VADDR_NR, MODULES_END_NR, @@ -67,6 +70,7 @@ { PAGE_OFFSET, "Low Kernel Mapping" }, { VMALLOC_START, "vmalloc() Area" }, { VMEMMAP_START, "Vmemmap" }, + { ESPFIX_BASE_ADDR, "ESPfix Area", 16 }, { __START_KERNEL_map, "High Kernel Mapping" }, { MODULES_VADDR, "Modules" }, { MODULES_END, "End Modules" }, @@ -163,7 +167,7 @@ pgprot_t new_prot, int level) { pgprotval_t prot, cur; - static const char units[] = "KMGTPE"; + static const char units[] = "BKMGTPE"; /* * If we have a "break" in the series, we need to flush the state that @@ -178,6 +182,7 @@ st->current_prot = new_prot; st->level = level; st->marker = address_markers; + st->lines = 0; seq_printf(m, "---[ %s ]---\n", st->marker->name); } else if (prot != cur || level != st->level || st->current_address >= st->marker[1].start_address) { @@ -188,17 +193,21 @@ /* * Now print the actual finished series */ - seq_printf(m, "0x%0*lx-0x%0*lx ", - width, st->start_address, - width, st->current_address); - - delta = (st->current_address - st->start_address) >> 10; - while (!(delta & 1023) && unit[1]) { - delta >>= 10; - unit++; + if (!st->marker->max_lines || + st->lines < st->marker->max_lines) { + seq_printf(m, "0x%0*lx-0x%0*lx ", + width, st->start_address, + width, st->current_address); + + delta = st->current_address - st->start_address; + while (!(delta & 1023) && unit[1]) { + delta >>= 10; + unit++; + } + seq_printf(m, "%9lu%c ", delta, *unit); + printk_prot(m, st->current_prot, st->level); } - seq_printf(m, "%9lu%c ", delta, *unit); - printk_prot(m, st->current_prot, st->level); + st->lines++; /* * We print markers for special areas of address space, @@ -206,7 +215,16 @@ * This helps in the interpretation. */ if (st->current_address >= st->marker[1].start_address) { + if (st->marker->max_lines && + st->lines > st->marker->max_lines) { + unsigned long nskip = + st->lines - st->marker->max_lines; + seq_printf(m, "... %lu entr%s skipped ... \n", + nskip, + nskip == 1 ? "y" : "ies"); + } st->marker++; + st->lines = 0; seq_printf(m, "---[ %s ]---\n", st->marker->name); } --- linux-3.13.0.orig/arch/x86/mm/fault.c +++ linux-3.13.0/arch/x86/mm/fault.c @@ -833,11 +833,8 @@ unsigned int fault) { struct task_struct *tsk = current; - struct mm_struct *mm = tsk->mm; int code = BUS_ADRERR; - up_read(&mm->mmap_sem); - /* Kernel mode? Handle exceptions or die: */ if (!(error_code & PF_USER)) { no_context(regs, error_code, address, SIGBUS, BUS_ADRERR); @@ -868,7 +865,6 @@ unsigned long address, unsigned int fault) { if (fatal_signal_pending(current) && !(error_code & PF_USER)) { - up_read(¤t->mm->mmap_sem); no_context(regs, error_code, address, 0, 0); return; } @@ -876,14 +872,11 @@ if (fault & VM_FAULT_OOM) { /* Kernel mode? Handle exceptions or die: */ if (!(error_code & PF_USER)) { - up_read(¤t->mm->mmap_sem); no_context(regs, error_code, address, SIGSEGV, SEGV_MAPERR); return; } - up_read(¤t->mm->mmap_sem); - /* * We ran out of memory, call the OOM killer, and return the * userspace (which will retry the fault, or kill us if we got @@ -894,6 +887,8 @@ if (fault & (VM_FAULT_SIGBUS|VM_FAULT_HWPOISON| VM_FAULT_HWPOISON_LARGE)) do_sigbus(regs, error_code, address, fault); + else if (fault & VM_FAULT_SIGSEGV) + bad_area_nosemaphore(regs, error_code, address); else BUG(); } @@ -1001,6 +996,12 @@ static inline bool smap_violation(int error_code, struct pt_regs *regs) { + if (!IS_ENABLED(CONFIG_X86_SMAP)) + return false; + + if (!static_cpu_has(X86_FEATURE_SMAP)) + return false; + if (error_code & PF_USER) return false; @@ -1087,11 +1088,9 @@ if (unlikely(error_code & PF_RSVD)) pgtable_bad(regs, error_code, address); - if (static_cpu_has(X86_FEATURE_SMAP)) { - if (unlikely(smap_violation(error_code, regs))) { - bad_area_nosemaphore(regs, error_code, address); - return; - } + if (unlikely(smap_violation(error_code, regs))) { + bad_area_nosemaphore(regs, error_code, address); + return; } /* @@ -1211,6 +1210,7 @@ return; if (unlikely(fault & VM_FAULT_ERROR)) { + up_read(&mm->mmap_sem); mm_fault_error(regs, error_code, address, fault); return; } --- linux-3.13.0.orig/arch/x86/mm/gup.c +++ linux-3.13.0/arch/x86/mm/gup.c @@ -172,7 +172,7 @@ */ if (pmd_none(pmd) || pmd_trans_splitting(pmd)) return 0; - if (unlikely(pmd_large(pmd))) { + if (unlikely(pmd_large(pmd) || !pmd_present(pmd))) { /* * NUMA hinting faults need to be handled in the GUP * slowpath for accounting purposes and so that they --- linux-3.13.0.orig/arch/x86/mm/hugetlbpage.c +++ linux-3.13.0/arch/x86/mm/hugetlbpage.c @@ -58,11 +58,6 @@ { return NULL; } - -int pmd_huge_support(void) -{ - return 0; -} #else struct page * @@ -71,20 +66,21 @@ return ERR_PTR(-EINVAL); } +/* + * pmd_huge() returns 1 if @pmd is hugetlb related entry, that is normal + * hugetlb entry or non-present (migration or hwpoisoned) hugetlb entry. + * Otherwise, returns 0. + */ int pmd_huge(pmd_t pmd) { - return !!(pmd_val(pmd) & _PAGE_PSE); + return !pmd_none(pmd) && + (pmd_val(pmd) & (_PAGE_PRESENT|_PAGE_PSE)) != _PAGE_PRESENT; } int pud_huge(pud_t pud) { return !!(pud_val(pud) & _PAGE_PSE); } - -int pmd_huge_support(void) -{ - return 1; -} #endif /* x86_64 also uses this file */ --- linux-3.13.0.orig/arch/x86/mm/init_32.c +++ linux-3.13.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-3.13.0.orig/arch/x86/mm/init_64.c +++ linux-3.13.0/arch/x86/mm/init_64.c @@ -1110,7 +1110,7 @@ unsigned long end = (unsigned long) &__end_rodata_hpage_align; unsigned long text_end = PFN_ALIGN(&__stop___ex_table); unsigned long rodata_end = PFN_ALIGN(&__end_rodata); - unsigned long all_end = PFN_ALIGN(&_end); + unsigned long all_end; printk(KERN_INFO "Write protecting the kernel read-only data: %luk\n", (end - start) >> 10); @@ -1121,8 +1121,17 @@ /* * The rodata/data/bss/brk section (but not the kernel text!) * should also be not-executable. + * + * We align all_end to PMD_SIZE because the existing mapping + * is a full PMD. If we would align _brk_end to PAGE_SIZE we + * split the PMD and the reminder between _brk_end and the end + * of the PMD will remain mapped executable. + * + * Any PMD which was setup after the one which covers _brk_end + * has been zapped already via cleanup_highmem(). */ - set_memory_nx(rodata_start, (all_end - rodata_start) >> PAGE_SHIFT); + all_end = roundup((unsigned long)_brk_end, PMD_SIZE); + set_memory_nx(text_end, (all_end - text_end) >> PAGE_SHIFT); rodata_test(); --- linux-3.13.0.orig/arch/x86/mm/mmap.c +++ linux-3.13.0/arch/x86/mm/mmap.c @@ -35,12 +35,12 @@ .flags = -1, }; -static unsigned int stack_maxrandom_size(void) +static unsigned long stack_maxrandom_size(void) { - unsigned int max = 0; + unsigned long max = 0; if ((current->flags & PF_RANDOMIZE) && !(current->personality & ADDR_NO_RANDOMIZE)) { - max = ((-1U) & STACK_RND_MASK) << PAGE_SHIFT; + max = ((-1UL) & STACK_RND_MASK) << PAGE_SHIFT; } return max; @@ -95,24 +95,12 @@ } /* - * Bottom-up (legacy) layout on X86_32 did not support randomization, X86_64 - * does, but not when emulating X86_32 - */ -static unsigned long mmap_legacy_base(void) -{ - if (mmap_is_ia32()) - return TASK_UNMAPPED_BASE; - else - return TASK_UNMAPPED_BASE + mmap_rnd(); -} - -/* * This function, called very early during the creation of a new * process VM image, sets up which VM layout function to use: */ void arch_pick_mmap_layout(struct mm_struct *mm) { - mm->mmap_legacy_base = mmap_legacy_base(); + mm->mmap_legacy_base = TASK_UNMAPPED_BASE + mmap_rnd(); mm->mmap_base = mmap_base(); if (mmap_is_legacy()) { --- linux-3.13.0.orig/arch/x86/mm/pageattr.c +++ linux-3.13.0/arch/x86/mm/pageattr.c @@ -30,9 +30,10 @@ */ struct cpa_data { unsigned long *vaddr; + 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; @@ -322,17 +323,9 @@ return prot; } -/* - * Lookup the page table entry for a virtual address. Return a pointer - * to the entry and the level of the mapping. - * - * Note: We return pud and pmd either when the entry is marked large - * or when the present bit is not set. Otherwise we would return a - * pointer to a nonexisting mapping. - */ -pte_t *lookup_address(unsigned long address, unsigned int *level) +static pte_t *__lookup_address_in_pgd(pgd_t *pgd, unsigned long address, + unsigned int *level) { - pgd_t *pgd = pgd_offset_k(address); pud_t *pud; pmd_t *pmd; @@ -361,8 +354,31 @@ return pte_offset_kernel(pmd, address); } + +/* + * Lookup the page table entry for a virtual address. Return a pointer + * to the entry and the level of the mapping. + * + * Note: We return pud and pmd either when the entry is marked large + * or when the present bit is not set. Otherwise we would return a + * pointer to a nonexisting mapping. + */ +pte_t *lookup_address(unsigned long address, unsigned int *level) +{ + return __lookup_address_in_pgd(pgd_offset_k(address), address, level); +} EXPORT_SYMBOL_GPL(lookup_address); +static pte_t *_lookup_address_cpa(struct cpa_data *cpa, unsigned long address, + unsigned int *level) +{ + if (cpa->pgd) + return __lookup_address_in_pgd(cpa->pgd + pgd_index(address), + address, level); + + return lookup_address(address, level); +} + /* * This is necessary because __pa() does not work on some * kinds of memory, like vmalloc() or the alloc_remap() @@ -386,11 +402,27 @@ pte = lookup_address(virt_addr, &level); BUG_ON(!pte); - psize = page_level_size(level); - pmask = page_level_mask(level); - offset = virt_addr & ~pmask; - phys_addr = 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); @@ -437,7 +469,7 @@ * Check for races, another CPU might have split this page * up already: */ - tmp = lookup_address(address, &level); + tmp = _lookup_address_cpa(cpa, address, &level); if (tmp != kpte) goto out_unlock; @@ -543,7 +575,8 @@ } static int -__split_large_page(pte_t *kpte, unsigned long address, struct page *base) +__split_large_page(struct cpa_data *cpa, pte_t *kpte, unsigned long address, + struct page *base) { pte_t *pbase = (pte_t *)page_address(base); unsigned long pfn, pfninc = 1; @@ -556,7 +589,7 @@ * Check for races, another CPU might have split this page * up for us already: */ - tmp = lookup_address(address, &level); + tmp = _lookup_address_cpa(cpa, address, &level); if (tmp != kpte) { spin_unlock(&pgd_lock); return 1; @@ -632,7 +665,8 @@ return 0; } -static int split_large_page(pte_t *kpte, unsigned long address) +static int split_large_page(struct cpa_data *cpa, pte_t *kpte, + unsigned long address) { struct page *base; @@ -644,15 +678,390 @@ if (!base) return -ENOMEM; - if (__split_large_page(kpte, address, base)) + if (__split_large_page(cpa, kpte, address, base)) __free_page(base); return 0; } +static bool try_to_free_pte_page(pte_t *pte) +{ + int i; + + for (i = 0; i < PTRS_PER_PTE; i++) + if (!pte_none(pte[i])) + return false; + + free_page((unsigned long)pte); + return true; +} + +static bool try_to_free_pmd_page(pmd_t *pmd) +{ + int i; + + for (i = 0; i < PTRS_PER_PMD; i++) + if (!pmd_none(pmd[i])) + return false; + + free_page((unsigned long)pmd); + return true; +} + +static bool unmap_pte_range(pmd_t *pmd, unsigned long start, unsigned long end) +{ + pte_t *pte = pte_offset_kernel(pmd, start); + + while (start < end) { + set_pte(pte, __pte(0)); + + start += PAGE_SIZE; + pte++; + } + + if (try_to_free_pte_page((pte_t *)pmd_page_vaddr(*pmd))) { + pmd_clear(pmd); + return true; + } + return false; +} + +static void __unmap_pmd_range(pud_t *pud, pmd_t *pmd, + unsigned long start, unsigned long end) +{ + if (unmap_pte_range(pmd, start, end)) + if (try_to_free_pmd_page((pmd_t *)pud_page_vaddr(*pud))) + pud_clear(pud); +} + +static void unmap_pmd_range(pud_t *pud, unsigned long start, unsigned long end) +{ + pmd_t *pmd = pmd_offset(pud, start); + + /* + * Not on a 2MB page boundary? + */ + if (start & (PMD_SIZE - 1)) { + unsigned long next_page = (start + PMD_SIZE) & PMD_MASK; + unsigned long pre_end = min_t(unsigned long, end, next_page); + + __unmap_pmd_range(pud, pmd, start, pre_end); + + start = pre_end; + pmd++; + } + + /* + * Try to unmap in 2M chunks. + */ + while (end - start >= PMD_SIZE) { + if (pmd_large(*pmd)) + pmd_clear(pmd); + else + __unmap_pmd_range(pud, pmd, start, start + PMD_SIZE); + + start += PMD_SIZE; + pmd++; + } + + /* + * 4K leftovers? + */ + if (start < end) + return __unmap_pmd_range(pud, pmd, start, end); + + /* + * Try again to free the PMD page if haven't succeeded above. + */ + if (!pud_none(*pud)) + if (try_to_free_pmd_page((pmd_t *)pud_page_vaddr(*pud))) + pud_clear(pud); +} + +static void unmap_pud_range(pgd_t *pgd, unsigned long start, unsigned long end) +{ + pud_t *pud = pud_offset(pgd, start); + + /* + * Not on a GB page boundary? + */ + if (start & (PUD_SIZE - 1)) { + unsigned long next_page = (start + PUD_SIZE) & PUD_MASK; + unsigned long pre_end = min_t(unsigned long, end, next_page); + + unmap_pmd_range(pud, start, pre_end); + + start = pre_end; + pud++; + } + + /* + * Try to unmap in 1G chunks? + */ + while (end - start >= PUD_SIZE) { + + if (pud_large(*pud)) + pud_clear(pud); + else + unmap_pmd_range(pud, start, start + PUD_SIZE); + + start += PUD_SIZE; + pud++; + } + + /* + * 2M leftovers? + */ + if (start < end) + unmap_pmd_range(pud, start, end); + + /* + * No need to try to free the PUD page because we'll free it in + * populate_pgd's error path + */ +} + +static int alloc_pte_page(pmd_t *pmd) +{ + pte_t *pte = (pte_t *)get_zeroed_page(GFP_KERNEL | __GFP_NOTRACK); + if (!pte) + return -1; + + set_pmd(pmd, __pmd(__pa(pte) | _KERNPG_TABLE)); + return 0; +} + +static int alloc_pmd_page(pud_t *pud) +{ + pmd_t *pmd = (pmd_t *)get_zeroed_page(GFP_KERNEL | __GFP_NOTRACK); + if (!pmd) + return -1; + + set_pud(pud, __pud(__pa(pmd) | _KERNPG_TABLE)); + return 0; +} + +static void populate_pte(struct cpa_data *cpa, + unsigned long start, unsigned long end, + unsigned num_pages, pmd_t *pmd, pgprot_t pgprot) +{ + pte_t *pte; + + pte = pte_offset_kernel(pmd, start); + + while (num_pages-- && start < end) { + + /* deal with the NX bit */ + if (!(pgprot_val(pgprot) & _PAGE_NX)) + cpa->pfn &= ~_PAGE_NX; + + set_pte(pte, pfn_pte(cpa->pfn >> PAGE_SHIFT, pgprot)); + + start += PAGE_SIZE; + cpa->pfn += PAGE_SIZE; + pte++; + } +} + +static int populate_pmd(struct cpa_data *cpa, + unsigned long start, unsigned long end, + unsigned num_pages, pud_t *pud, pgprot_t pgprot) +{ + unsigned int cur_pages = 0; + pmd_t *pmd; + + /* + * Not on a 2M boundary? + */ + if (start & (PMD_SIZE - 1)) { + unsigned long pre_end = start + (num_pages << PAGE_SHIFT); + unsigned long next_page = (start + PMD_SIZE) & PMD_MASK; + + pre_end = min_t(unsigned long, pre_end, next_page); + cur_pages = (pre_end - start) >> PAGE_SHIFT; + cur_pages = min_t(unsigned int, num_pages, cur_pages); + + /* + * Need a PTE page? + */ + pmd = pmd_offset(pud, start); + if (pmd_none(*pmd)) + if (alloc_pte_page(pmd)) + return -1; + + populate_pte(cpa, start, pre_end, cur_pages, pmd, pgprot); + + start = pre_end; + } + + /* + * We mapped them all? + */ + if (num_pages == cur_pages) + return cur_pages; + + while (end - start >= PMD_SIZE) { + + /* + * We cannot use a 1G page so allocate a PMD page if needed. + */ + if (pud_none(*pud)) + if (alloc_pmd_page(pud)) + return -1; + + pmd = pmd_offset(pud, start); + + set_pmd(pmd, __pmd(cpa->pfn | _PAGE_PSE | massage_pgprot(pgprot))); + + start += PMD_SIZE; + cpa->pfn += PMD_SIZE; + cur_pages += PMD_SIZE >> PAGE_SHIFT; + } + + /* + * Map trailing 4K pages. + */ + if (start < end) { + pmd = pmd_offset(pud, start); + if (pmd_none(*pmd)) + if (alloc_pte_page(pmd)) + return -1; + + populate_pte(cpa, start, end, num_pages - cur_pages, + pmd, pgprot); + } + return num_pages; +} + +static int populate_pud(struct cpa_data *cpa, unsigned long start, pgd_t *pgd, + pgprot_t pgprot) +{ + pud_t *pud; + unsigned long end; + int cur_pages = 0; + + end = start + (cpa->numpages << PAGE_SHIFT); + + /* + * Not on a Gb page boundary? => map everything up to it with + * smaller pages. + */ + if (start & (PUD_SIZE - 1)) { + unsigned long pre_end; + unsigned long next_page = (start + PUD_SIZE) & PUD_MASK; + + pre_end = min_t(unsigned long, end, next_page); + cur_pages = (pre_end - start) >> PAGE_SHIFT; + cur_pages = min_t(int, (int)cpa->numpages, cur_pages); + + pud = pud_offset(pgd, start); + + /* + * Need a PMD page? + */ + if (pud_none(*pud)) + if (alloc_pmd_page(pud)) + return -1; + + cur_pages = populate_pmd(cpa, start, pre_end, cur_pages, + pud, pgprot); + if (cur_pages < 0) + return cur_pages; + + start = pre_end; + } + + /* We mapped them all? */ + if (cpa->numpages == cur_pages) + return cur_pages; + + pud = pud_offset(pgd, start); + + /* + * Map everything starting from the Gb boundary, possibly with 1G pages + */ + while (end - start >= PUD_SIZE) { + set_pud(pud, __pud(cpa->pfn | _PAGE_PSE | massage_pgprot(pgprot))); + + start += PUD_SIZE; + cpa->pfn += PUD_SIZE; + cur_pages += PUD_SIZE >> PAGE_SHIFT; + pud++; + } + + /* Map trailing leftover */ + if (start < end) { + int tmp; + + pud = pud_offset(pgd, start); + if (pud_none(*pud)) + if (alloc_pmd_page(pud)) + return -1; + + tmp = populate_pmd(cpa, start, end, cpa->numpages - cur_pages, + pud, pgprot); + if (tmp < 0) + return cur_pages; + + cur_pages += tmp; + } + return cur_pages; +} + +/* + * Restrictions for kernel page table do not necessarily apply when mapping in + * an alternate PGD. + */ +static int populate_pgd(struct cpa_data *cpa, unsigned long addr) +{ + pgprot_t pgprot = __pgprot(_KERNPG_TABLE); + bool allocd_pgd = false; + pgd_t *pgd_entry; + pud_t *pud = NULL; /* shut up gcc */ + int ret; + + pgd_entry = cpa->pgd + pgd_index(addr); + + /* + * Allocate a PUD page and hand it down for mapping. + */ + if (pgd_none(*pgd_entry)) { + pud = (pud_t *)get_zeroed_page(GFP_KERNEL | __GFP_NOTRACK); + if (!pud) + return -1; + + set_pgd(pgd_entry, __pgd(__pa(pud) | _KERNPG_TABLE)); + allocd_pgd = true; + } + + pgprot_val(pgprot) &= ~pgprot_val(cpa->mask_clr); + pgprot_val(pgprot) |= pgprot_val(cpa->mask_set); + + ret = populate_pud(cpa, addr, pgd_entry, pgprot); + if (ret < 0) { + unmap_pud_range(pgd_entry, addr, + addr + (cpa->numpages << PAGE_SHIFT)); + + if (allocd_pgd) { + /* + * If I allocated this PUD page, I can just as well + * free it in this error path. + */ + pgd_clear(pgd_entry); + free_page((unsigned long)pud); + } + return ret; + } + cpa->numpages = ret; + return 0; +} + static int __cpa_process_fault(struct cpa_data *cpa, unsigned long vaddr, int primary) { + if (cpa->pgd) + return populate_pgd(cpa, vaddr); + /* * Ignore all non primary paths. */ @@ -697,7 +1106,7 @@ else address = *cpa->vaddr; repeat: - kpte = lookup_address(address, &level); + kpte = _lookup_address_cpa(cpa, address, &level); if (!kpte) return __cpa_process_fault(cpa, address, primary); @@ -761,7 +1170,7 @@ /* * We have to split the large page: */ - err = split_large_page(kpte, address); + err = split_large_page(cpa, kpte, address); if (!err) { /* * Do a global flush tlb after splitting the large page @@ -884,7 +1293,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++; @@ -910,6 +1319,8 @@ int ret, cache, checkalias; unsigned long baddr = 0; + memset(&cpa, 0, sizeof(cpa)); + /* * Check, if we are requested to change a not supported * feature: @@ -1356,6 +1767,7 @@ { unsigned long tempaddr = (unsigned long) page_address(page); struct cpa_data cpa = { .vaddr = &tempaddr, + .pgd = NULL, .numpages = numpages, .mask_set = __pgprot(_PAGE_PRESENT | _PAGE_RW), .mask_clr = __pgprot(0), @@ -1374,6 +1786,7 @@ { unsigned long tempaddr = (unsigned long) page_address(page); struct cpa_data cpa = { .vaddr = &tempaddr, + .pgd = NULL, .numpages = numpages, .mask_set = __pgprot(0), .mask_clr = __pgprot(_PAGE_PRESENT | _PAGE_RW), @@ -1434,6 +1847,36 @@ #endif /* CONFIG_DEBUG_PAGEALLOC */ +int kernel_map_pages_in_pgd(pgd_t *pgd, u64 pfn, unsigned long address, + unsigned numpages, unsigned long page_flags) +{ + int retval = -EINVAL; + + struct cpa_data cpa = { + .vaddr = &address, + .pfn = pfn, + .pgd = pgd, + .numpages = numpages, + .mask_set = __pgprot(0), + .mask_clr = __pgprot(0), + .flags = 0, + }; + + if (!(__supported_pte_mask & _PAGE_NX)) + goto out; + + if (!(page_flags & _PAGE_NX)) + cpa.mask_clr = __pgprot(_PAGE_NX); + + cpa.mask_set = __pgprot(_PAGE_PRESENT | page_flags); + + retval = __change_page_attr_set_clr(&cpa, 0); + __flush_tlb_all(); + +out: + return retval; +} + /* * The testcases use internal knowledge of the implementation that shouldn't * be exposed to the rest of the kernel. Include these directly here. --- linux-3.13.0.orig/arch/x86/mm/tlb.c +++ linux-3.13.0/arch/x86/mm/tlb.c @@ -152,7 +152,10 @@ preempt_disable(); count_vm_event(NR_TLB_LOCAL_FLUSH_ALL); + + /* This is an implicit full barrier that synchronizes with switch_mm. */ local_flush_tlb(); + if (cpumask_any_but(mm_cpumask(mm), smp_processor_id()) < nr_cpu_ids) flush_tlb_others(mm_cpumask(mm), mm, 0UL, TLB_FLUSH_ALL); preempt_enable(); @@ -191,11 +194,19 @@ unsigned act_entries, tlb_entries = 0; preempt_disable(); - if (current->active_mm != mm) + if (current->active_mm != mm) { + /* Synchronize with switch_mm. */ + smp_mb(); + goto flush_all; + } if (!current->mm) { leave_mm(smp_processor_id()); + + /* Synchronize with switch_mm. */ + smp_mb(); + goto flush_all; } @@ -248,10 +259,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-3.13.0.orig/arch/x86/net/bpf_jit.S +++ linux-3.13.0/arch/x86/net/bpf_jit.S @@ -140,7 +140,7 @@ push %r9; \ push SKBDATA; \ /* rsi already has offset */ \ - mov $SIZE,%ecx; /* size */ \ + mov $SIZE,%edx; /* size */ \ call bpf_internal_load_pointer_neg_helper; \ test %rax,%rax; \ pop SKBDATA; \ --- linux-3.13.0.orig/arch/x86/net/bpf_jit_comp.c +++ linux-3.13.0/arch/x86/net/bpf_jit_comp.c @@ -171,7 +171,7 @@ memset(header, 0xcc, sz); /* fill whole space with int3 instructions */ header->pages = sz / PAGE_SIZE; - hole = sz - (proglen + sizeof(*header)); + hole = min(sz - (proglen + sizeof(*header)), PAGE_SIZE - sizeof(*header)); /* insert a random number of int3 instructions before BPF code */ *image_ptr = &header->image[prandom_u32() % hole]; @@ -211,7 +211,12 @@ } cleanup_addr = proglen; /* epilogue address */ - for (pass = 0; pass < 10; pass++) { + /* JITed image shrinks with every pass and the loop iterates + * until the image stops shrinking. Very large bpf programs + * may converge on the last pass. In such case do one more + * pass to emit the final image + */ + for (pass = 0; pass < 10 || image; pass++) { u8 seen_or_pass0 = (pass == 0) ? (SEEN_XREG | SEEN_DATAREF | SEEN_MEM) : seen; /* no prologue/epilogue for trivial filters (RET something) */ proglen = 0; --- linux-3.13.0.orig/arch/x86/pci/acpi.c +++ linux-3.13.0/arch/x86/pci/acpi.c @@ -84,6 +84,17 @@ DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies, LTD"), }, }, + /* https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/931368 */ + /* https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/1033299 */ + { + .callback = set_use_crs, + .ident = "Foxconn K8M890-8237A", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "Foxconn"), + DMI_MATCH(DMI_BOARD_NAME, "K8M890-8237A"), + DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies, LTD"), + }, + }, /* Now for the blacklist.. */ --- linux-3.13.0.orig/arch/x86/pci/common.c +++ linux-3.13.0/arch/x86/pci/common.c @@ -448,6 +448,22 @@ DMI_MATCH(DMI_PRODUCT_NAME, "ftServer"), }, }, + { + .callback = set_scan_all, + .ident = "Stratus/NEC ftServer", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "NEC"), + DMI_MATCH(DMI_PRODUCT_NAME, "Express5800/R32"), + }, + }, + { + .callback = set_scan_all, + .ident = "Stratus/NEC ftServer", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "NEC"), + DMI_MATCH(DMI_PRODUCT_NAME, "Express5800/R31"), + }, + }, {} }; --- linux-3.13.0.orig/arch/x86/pci/fixup.c +++ linux-3.13.0/arch/x86/pci/fixup.c @@ -350,9 +350,7 @@ pci_read_config_word(pdev, PCI_COMMAND, &config); if (config & (PCI_COMMAND_IO | PCI_COMMAND_MEMORY)) { pdev->resource[PCI_ROM_RESOURCE].flags |= IORESOURCE_ROM_SHADOW; - dev_printk(KERN_DEBUG, &pdev->dev, "Boot video device\n"); - if (!vga_default_device()) - vga_set_default_device(pdev); + dev_printk(KERN_DEBUG, &pdev->dev, "Video device with shadowed ROM\n"); } } DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_ANY_ID, PCI_ANY_ID, @@ -541,3 +539,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-3.13.0.orig/arch/x86/pci/i386.c +++ linux-3.13.0/arch/x86/pci/i386.c @@ -162,6 +162,10 @@ return start; if (start & 0x300) start = (start + 0x3ff) & ~0x3ff; + } else if (res->flags & IORESOURCE_MEM) { + /* The low 1MB range is reserved for ISA cards */ + if (start < BIOS_END) + start = BIOS_END; } return start; } --- linux-3.13.0.orig/arch/x86/platform/efi/efi.c +++ linux-3.13.0/arch/x86/platform/efi/efi.c @@ -12,6 +12,8 @@ * Bibo Mao * Chandramouli Narayanan * Huang Ying + * Copyright (C) 2013 SuSE Labs + * Borislav Petkov - runtime services VA mapping * * Copied from efi_32.c to eliminate the duplicated code between EFI * 32/64 support code. --ying 2007-10-26 @@ -244,12 +246,19 @@ efi_memory_desc_t *virtual_map) { efi_status_t status; + unsigned long flags; efi_call_phys_prelog(); + + /* Disable interrupts around EFI calls: */ + local_irq_save(flags); status = efi_call_phys4(efi_phys.set_virtual_address_map, memory_map_size, descriptor_size, descriptor_version, virtual_map); + local_irq_restore(flags); + efi_call_phys_epilog(); + return status; } @@ -436,7 +445,7 @@ * - Not within any part of the kernel * - Not the bios reserved area */ - if ((start+size >= __pa_symbol(_text) + if ((start + size > __pa_symbol(_text) && start <= __pa_symbol(_end)) || !e820_all_mapped(start, start+size, E820_RAM) || memblock_is_region_reserved(start, size)) { @@ -715,7 +724,7 @@ set_memory_nx(addr, npages); } -static void __init runtime_code_page_mkexec(void) +void __init runtime_code_page_mkexec(void) { efi_memory_desc_t *md; void *p; @@ -741,21 +750,56 @@ set_memory_uc(addr, npages); } +void __init old_map_region(efi_memory_desc_t *md) +{ + u64 start_pfn, end_pfn, end; + unsigned long size; + void *va; + + start_pfn = PFN_DOWN(md->phys_addr); + size = md->num_pages << PAGE_SHIFT; + end = md->phys_addr + size; + end_pfn = PFN_UP(end); + + if (pfn_range_is_mapped(start_pfn, end_pfn)) { + va = __va(md->phys_addr); + + if (!(md->attribute & EFI_MEMORY_WB)) + efi_memory_uc((u64)(unsigned long)va, size); + } else + va = efi_ioremap(md->phys_addr, size, + md->type, md->attribute); + + md->virt_addr = (u64) (unsigned long) va; + if (!va) + pr_err("ioremap of 0x%llX failed!\n", + (unsigned long long)md->phys_addr); +} + /* * This function will switch the EFI runtime services to virtual mode. - * Essentially, look through the EFI memmap and map every region that - * has the runtime attribute bit set in its memory descriptor and update - * that memory descriptor with the virtual address obtained from ioremap(). - * This enables the runtime services to be called without having to + * Essentially, we look through the EFI memmap and map every region that + * has the runtime attribute bit set in its memory descriptor into the + * ->trampoline_pgd page table using a top-down VA allocation scheme. + * + * The old method which used to update that memory descriptor with the + * virtual address obtained from ioremap() is still supported when the + * kernel is booted with efi=old_map on its command line. Same old + * method enabled the runtime services to be called without having to * thunk back into physical mode for every invocation. + * + * The new method does a pagetable switch in a preemption-safe manner + * so that we're in a different address space when calling a runtime + * function. For function arguments passing we do copy the PGDs of the + * kernel page table into ->trampoline_pgd prior to each call. */ void __init efi_enter_virtual_mode(void) { efi_memory_desc_t *md, *prev_md = NULL; - efi_status_t status; + void *p, *new_memmap = NULL; unsigned long size; - u64 end, systab, start_pfn, end_pfn; - void *p, *va, *new_memmap = NULL; + efi_status_t status; + u64 end, systab; int count = 0; efi.systab = NULL; @@ -764,7 +808,6 @@ * We don't do virtual mode, since we don't do runtime services, on * non-native EFI */ - if (!efi_is_native()) { efi_unmap_memmap(); return; @@ -795,6 +838,7 @@ continue; } prev_md = md; + } for (p = memmap.map; p < memmap.map_end; p += memmap.desc_size) { @@ -807,36 +851,24 @@ continue; } + efi_map_region(md); + size = md->num_pages << EFI_PAGE_SHIFT; end = md->phys_addr + size; - start_pfn = PFN_DOWN(md->phys_addr); - end_pfn = PFN_UP(end); - if (pfn_range_is_mapped(start_pfn, end_pfn)) { - va = __va(md->phys_addr); - - if (!(md->attribute & EFI_MEMORY_WB)) - efi_memory_uc((u64)(unsigned long)va, size); - } else - va = efi_ioremap(md->phys_addr, size, - md->type, md->attribute); - - md->virt_addr = (u64) (unsigned long) va; - - if (!va) { - pr_err("ioremap of 0x%llX failed!\n", - (unsigned long long)md->phys_addr); - continue; - } - systab = (u64) (unsigned long) efi_phys.systab; if (md->phys_addr <= systab && systab < end) { systab += md->virt_addr - md->phys_addr; + efi.systab = (efi_system_table_t *) (unsigned long) systab; } + new_memmap = krealloc(new_memmap, (count + 1) * memmap.desc_size, GFP_KERNEL); + if (!new_memmap) + goto err_out; + memcpy(new_memmap + (count * memmap.desc_size), md, memmap.desc_size); count++; @@ -844,6 +876,9 @@ BUG_ON(!efi.systab); + efi_setup_page_tables(); + efi_sync_low_kernel_mappings(); + status = phys_efi_set_virtual_address_map( memmap.desc_size * count, memmap.desc_size, @@ -876,8 +911,8 @@ efi.query_variable_info = virt_efi_query_variable_info; efi.update_capsule = virt_efi_update_capsule; efi.query_capsule_caps = virt_efi_query_capsule_caps; - if (__supported_pte_mask & _PAGE_NX) - runtime_code_page_mkexec(); + + efi_runtime_mkexec(); kfree(new_memmap); @@ -887,6 +922,11 @@ EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS, 0, NULL); + + return; + + err_out: + pr_err("Error reallocating memory, EFI runtime non-functional!\n"); } /* @@ -1006,3 +1046,15 @@ return EFI_SUCCESS; } EXPORT_SYMBOL_GPL(efi_query_variable_store); + +static int __init parse_efi_cmdline(char *str) +{ + if (*str == '=') + str++; + + if (!strncmp(str, "old_map", 7)) + set_bit(EFI_OLD_MEMMAP, &x86_efi_facility); + + return 0; +} +early_param("efi", parse_efi_cmdline); --- linux-3.13.0.orig/arch/x86/platform/efi/efi_32.c +++ linux-3.13.0/arch/x86/platform/efi/efi_32.c @@ -33,19 +33,23 @@ /* * To make EFI call EFI runtime service in physical addressing mode we need - * prelog/epilog before/after the invocation to disable interrupt, to - * claim EFI runtime service handler exclusively and to duplicate a memory in - * low memory space say 0 - 3G. + * prolog/epilog before/after the invocation to claim the EFI runtime service + * handler exclusively and to duplicate a memory mapping in low memory space, + * say 0 - 3G. */ -static unsigned long efi_rt_eflags; +void efi_sync_low_kernel_mappings(void) {} +void efi_setup_page_tables(void) {} + +void __init efi_map_region(efi_memory_desc_t *md) +{ + old_map_region(md); +} void efi_call_phys_prelog(void) { struct desc_ptr gdt_descr; - local_irq_save(efi_rt_eflags); - load_cr3(initial_page_table); __flush_tlb_all(); @@ -64,6 +68,10 @@ load_cr3(swapper_pg_dir); __flush_tlb_all(); +} - local_irq_restore(efi_rt_eflags); +void __init efi_runtime_mkexec(void) +{ + if (__supported_pte_mask & _PAGE_NX) + runtime_code_page_mkexec(); } --- linux-3.13.0.orig/arch/x86/platform/efi/efi_64.c +++ linux-3.13.0/arch/x86/platform/efi/efi_64.c @@ -38,9 +38,26 @@ #include #include #include +#include static pgd_t *save_pgd __initdata; -static unsigned long efi_flags __initdata; + +/* + * We allocate runtime services regions bottom-up, starting from -4G, i.e. + * 0xffff_ffff_0000_0000 and limit EFI VA mapping space to 64G. + */ +static u64 efi_va = -4 * (1UL << 30); +#define EFI_VA_END (-68 * (1UL << 30)) + +/* + * Scratch space used for switching the pagetable in the EFI stub + */ +struct efi_scratch { + u64 r15; + u64 prev_cr3; + pgd_t *efi_pgt; + bool use_pgd; +}; static void __init early_code_mapping_set_exec(int executable) { @@ -65,8 +82,10 @@ int pgd; int n_pgds; + if (!efi_enabled(EFI_OLD_MEMMAP)) + return; + early_code_mapping_set_exec(1); - local_irq_save(efi_flags); n_pgds = DIV_ROUND_UP((max_pfn << PAGE_SHIFT), PGDIR_SIZE); save_pgd = kmalloc(n_pgds * sizeof(pgd_t), GFP_KERNEL); @@ -86,14 +105,101 @@ */ int pgd; int n_pgds = DIV_ROUND_UP((max_pfn << PAGE_SHIFT) , PGDIR_SIZE); + + if (!efi_enabled(EFI_OLD_MEMMAP)) + return; + for (pgd = 0; pgd < n_pgds; pgd++) set_pgd(pgd_offset_k(pgd * PGDIR_SIZE), save_pgd[pgd]); kfree(save_pgd); __flush_tlb_all(); - local_irq_restore(efi_flags); early_code_mapping_set_exec(0); } +/* + * Add low kernel mappings for passing arguments to EFI functions. + */ +void efi_sync_low_kernel_mappings(void) +{ + unsigned num_pgds; + pgd_t *pgd = (pgd_t *)__va(real_mode_header->trampoline_pgd); + + if (efi_enabled(EFI_OLD_MEMMAP)) + return; + + num_pgds = pgd_index(MODULES_END - 1) - pgd_index(PAGE_OFFSET); + + memcpy(pgd + pgd_index(PAGE_OFFSET), + init_mm.pgd + pgd_index(PAGE_OFFSET), + sizeof(pgd_t) * num_pgds); +} + +void efi_setup_page_tables(void) +{ + efi_scratch.efi_pgt = (pgd_t *)(unsigned long)real_mode_header->trampoline_pgd; + + if (!efi_enabled(EFI_OLD_MEMMAP)) + efi_scratch.use_pgd = true; +} + +static void __init __map_region(efi_memory_desc_t *md, u64 va) +{ + pgd_t *pgd = (pgd_t *)__va(real_mode_header->trampoline_pgd); + unsigned long pf = 0, size; + u64 end; + + if (!(md->attribute & EFI_MEMORY_WB)) + pf |= _PAGE_PCD; + + size = md->num_pages << PAGE_SHIFT; + end = va + size; + + if (kernel_map_pages_in_pgd(pgd, md->phys_addr, va, md->num_pages, pf)) + pr_warn("Error mapping PA 0x%llx -> VA 0x%llx!\n", + md->phys_addr, va); +} + +void __init efi_map_region(efi_memory_desc_t *md) +{ + unsigned long size = md->num_pages << PAGE_SHIFT; + u64 pa = md->phys_addr; + + if (efi_enabled(EFI_OLD_MEMMAP)) + return old_map_region(md); + + /* + * Make sure the 1:1 mappings are present as a catch-all for b0rked + * firmware which doesn't update all internal pointers after switching + * to virtual mode and would otherwise crap on us. + */ + __map_region(md, md->phys_addr); + + efi_va -= size; + + /* Is PA 2M-aligned? */ + if (!(pa & (PMD_SIZE - 1))) { + efi_va &= PMD_MASK; + } else { + u64 pa_offset = pa & (PMD_SIZE - 1); + u64 prev_va = efi_va; + + /* get us the same offset within this 2M page */ + efi_va = (efi_va & PMD_MASK) + pa_offset; + + if (efi_va > prev_va) + efi_va -= PMD_SIZE; + } + + if (efi_va < EFI_VA_END) { + pr_warn(FW_WARN "VA address range overflow!\n"); + return; + } + + /* Do the VA map */ + __map_region(md, efi_va); + md->virt_addr = efi_va; +} + void __iomem *__init efi_ioremap(unsigned long phys_addr, unsigned long size, u32 type, u64 attribute) { @@ -113,3 +219,12 @@ return (void __iomem *)__va(phys_addr); } + +void __init efi_runtime_mkexec(void) +{ + if (!efi_enabled(EFI_OLD_MEMMAP)) + return; + + if (__supported_pte_mask & _PAGE_NX) + runtime_code_page_mkexec(); +} --- linux-3.13.0.orig/arch/x86/platform/efi/efi_stub_64.S +++ linux-3.13.0/arch/x86/platform/efi/efi_stub_64.S @@ -34,10 +34,47 @@ mov %rsi, %cr0; \ mov (%rsp), %rsp + /* stolen from gcc */ + .macro FLUSH_TLB_ALL + movq %r15, efi_scratch(%rip) + movq %r14, efi_scratch+8(%rip) + movq %cr4, %r15 + movq %r15, %r14 + andb $0x7f, %r14b + movq %r14, %cr4 + movq %r15, %cr4 + movq efi_scratch+8(%rip), %r14 + movq efi_scratch(%rip), %r15 + .endm + + .macro SWITCH_PGT + cmpb $0, efi_scratch+24(%rip) + je 1f + movq %r15, efi_scratch(%rip) # r15 + # save previous CR3 + movq %cr3, %r15 + movq %r15, efi_scratch+8(%rip) # prev_cr3 + movq efi_scratch+16(%rip), %r15 # EFI pgt + movq %r15, %cr3 + 1: + .endm + + .macro RESTORE_PGT + cmpb $0, efi_scratch+24(%rip) + je 2f + movq efi_scratch+8(%rip), %r15 + movq %r15, %cr3 + movq efi_scratch(%rip), %r15 + FLUSH_TLB_ALL + 2: + .endm + ENTRY(efi_call0) SAVE_XMM subq $32, %rsp + SWITCH_PGT call *%rdi + RESTORE_PGT addq $32, %rsp RESTORE_XMM ret @@ -47,7 +84,9 @@ SAVE_XMM subq $32, %rsp mov %rsi, %rcx + SWITCH_PGT call *%rdi + RESTORE_PGT addq $32, %rsp RESTORE_XMM ret @@ -57,7 +96,9 @@ SAVE_XMM subq $32, %rsp mov %rsi, %rcx + SWITCH_PGT call *%rdi + RESTORE_PGT addq $32, %rsp RESTORE_XMM ret @@ -68,7 +109,9 @@ subq $32, %rsp mov %rcx, %r8 mov %rsi, %rcx + SWITCH_PGT call *%rdi + RESTORE_PGT addq $32, %rsp RESTORE_XMM ret @@ -80,7 +123,9 @@ mov %r8, %r9 mov %rcx, %r8 mov %rsi, %rcx + SWITCH_PGT call *%rdi + RESTORE_PGT addq $32, %rsp RESTORE_XMM ret @@ -93,7 +138,9 @@ mov %r8, %r9 mov %rcx, %r8 mov %rsi, %rcx + SWITCH_PGT call *%rdi + RESTORE_PGT addq $48, %rsp RESTORE_XMM ret @@ -109,8 +156,15 @@ mov %r8, %r9 mov %rcx, %r8 mov %rsi, %rcx + SWITCH_PGT call *%rdi + RESTORE_PGT addq $48, %rsp RESTORE_XMM ret ENDPROC(efi_call6) + + .data +ENTRY(efi_scratch) + .fill 3,8,0 + .byte 0 --- linux-3.13.0.orig/arch/x86/syscalls/syscall_32.tbl +++ linux-3.13.0/arch/x86/syscalls/syscall_32.tbl @@ -357,3 +357,7 @@ 348 i386 process_vm_writev sys_process_vm_writev compat_sys_process_vm_writev 349 i386 kcmp sys_kcmp 350 i386 finit_module sys_finit_module +351 i386 sched_setattr sys_ni_syscall +352 i386 sched_getattr sys_ni_syscall +353 i386 renameat2 sys_ni_syscall +354 i386 seccomp sys_seccomp --- linux-3.13.0.orig/arch/x86/syscalls/syscall_64.tbl +++ linux-3.13.0/arch/x86/syscalls/syscall_64.tbl @@ -212,10 +212,10 @@ 203 common sched_setaffinity sys_sched_setaffinity 204 common sched_getaffinity sys_sched_getaffinity 205 64 set_thread_area -206 common io_setup sys_io_setup +206 64 io_setup sys_io_setup 207 common io_destroy sys_io_destroy 208 common io_getevents sys_io_getevents -209 common io_submit sys_io_submit +209 64 io_submit sys_io_submit 210 common io_cancel sys_io_cancel 211 64 get_thread_area 212 common lookup_dcookie sys_lookup_dcookie @@ -320,6 +320,10 @@ 311 64 process_vm_writev sys_process_vm_writev 312 common kcmp sys_kcmp 313 common finit_module sys_finit_module +314 common sched_setattr sys_ni_syscall +315 common sched_getattr sys_ni_syscall +316 common renameat2 sys_ni_syscall +317 common seccomp sys_seccomp # # x32-specific system call numbers start at 512 to avoid cache impact @@ -356,3 +360,5 @@ 540 x32 process_vm_writev compat_sys_process_vm_writev 541 x32 setsockopt compat_sys_setsockopt 542 x32 getsockopt compat_sys_getsockopt +543 x32 io_setup compat_sys_io_setup +544 x32 io_submit compat_sys_io_submit --- linux-3.13.0.orig/arch/x86/vdso/vclock_gettime.c +++ linux-3.13.0/arch/x86/vdso/vclock_gettime.c @@ -85,18 +85,15 @@ cycle_t ret; u64 last; u32 version; + u32 migrate_count; u8 flags; unsigned cpu, cpu1; /* - * Note: hypervisor must guarantee that: - * 1. cpu ID number maps 1:1 to per-CPU pvclock time info. - * 2. that per-CPU pvclock time info is updated if the - * underlying CPU changes. - * 3. that version is increased whenever underlying CPU - * changes. - * + * When looping to get a consistent (time-info, tsc) pair, we + * also need to deal with the possibility we can switch vcpus, + * so make sure we always re-fetch time-info for the current vcpu. */ do { cpu = __getcpu() & VGETCPU_CPU_MASK; @@ -105,20 +102,27 @@ * __getcpu() calls (Gleb). */ - pvti = get_pvti(cpu); + /* Make sure migrate_count will change if we leave the VCPU. */ + do { + pvti = get_pvti(cpu); + migrate_count = pvti->migrate_count; + + cpu1 = cpu; + cpu = __getcpu() & VGETCPU_CPU_MASK; + } while (unlikely(cpu != cpu1)); version = __pvclock_read_cycles(&pvti->pvti, &ret, &flags); /* * Test we're still on the cpu as well as the version. - * We could have been migrated just after the first - * vgetcpu but before fetching the version, so we - * wouldn't notice a version change. + * - We must read TSC of pvti's VCPU. + * - KVM doesn't follow the versioning protocol, so data could + * change before version if we left the VCPU. */ - cpu1 = __getcpu() & VGETCPU_CPU_MASK; - } while (unlikely(cpu != cpu1 || - (pvti->pvti.version & 1) || - pvti->pvti.version != version)); + smp_rmb(); + } while (unlikely((pvti->pvti.version & 1) || + pvti->pvti.version != version || + pvti->migrate_count != migrate_count)); if (unlikely(!(flags & PVCLOCK_TSC_STABLE_BIT))) *mode = VCLOCK_NONE; --- linux-3.13.0.orig/arch/x86/vdso/vdso32/sigreturn.S +++ linux-3.13.0/arch/x86/vdso/vdso32/sigreturn.S @@ -17,6 +17,7 @@ .text .globl __kernel_sigreturn .type __kernel_sigreturn,@function + nop /* this guy is needed for .LSTARTFDEDLSI1 below (watch for HACK) */ ALIGN __kernel_sigreturn: .LSTART_sigreturn: --- linux-3.13.0.orig/arch/x86/vdso/vma.c +++ linux-3.13.0/arch/x86/vdso/vma.c @@ -117,30 +117,45 @@ struct linux_binprm; -/* Put the vdso above the (randomized) stack with another randomized offset. - This way there is no hole in the middle of address space. - To save memory make sure it is still in the same PTE as the stack top. - This doesn't give that many random bits */ +/* + * Put the vdso above the (randomized) stack with another randomized + * offset. This way there is no hole in the middle of address space. + * To save memory make sure it is still in the same PTE as the stack + * top. This doesn't give that many random bits. + * + * Note that this algorithm is imperfect: the distribution of the vdso + * start address within a PMD is biased toward the end. + * + * Only used for the 64-bit and x32 vdsos. + */ static unsigned long vdso_addr(unsigned long start, unsigned len) { unsigned long addr, end; unsigned offset; - end = (start + PMD_SIZE - 1) & PMD_MASK; + + /* + * Round up the start address. It can start out unaligned as a result + * of stack start randomization. + */ + start = PAGE_ALIGN(start); + + /* Round the lowest possible end address up to a PMD boundary. */ + end = (start + len + PMD_SIZE - 1) & PMD_MASK; if (end >= TASK_SIZE_MAX) end = TASK_SIZE_MAX; end -= len; - /* This loses some more bits than a modulo, but is cheaper */ - offset = get_random_int() & (PTRS_PER_PTE - 1); - addr = start + (offset << PAGE_SHIFT); - if (addr >= end) - addr = end; + + if (end > start) { + offset = get_random_int() % (((end - start) >> PAGE_SHIFT) + 1); + addr = start + (offset << PAGE_SHIFT); + } else { + addr = start; + } /* - * page-align it here so that get_unmapped_area doesn't - * align it wrongfully again to the next page. addr can come in 4K - * unaligned here as a result of stack start randomization. + * Forcibly align the final address in case we have a hardware + * issue that requires alignment for performance reasons. */ - addr = PAGE_ALIGN(addr); addr = align_vdso_addr(addr); return addr; --- linux-3.13.0.orig/arch/x86/xen/enlighten.c +++ linux-3.13.0/arch/x86/xen/enlighten.c @@ -33,6 +33,10 @@ #include #include +#ifdef CONFIG_KEXEC +#include +#endif + #include #include #include @@ -480,6 +484,7 @@ pte_t pte; unsigned long pfn; struct page *page; + unsigned char dummy; ptep = lookup_address((unsigned long)v, &level); BUG_ON(ptep == NULL); @@ -489,6 +494,32 @@ pte = pfn_pte(pfn, prot); + /* + * Careful: update_va_mapping() will fail if the virtual address + * we're poking isn't populated in the page tables. We don't + * need to worry about the direct map (that's always in the page + * tables), but we need to be careful about vmap space. In + * particular, the top level page table can lazily propagate + * entries between processes, so if we've switched mms since we + * vmapped the target in the first place, we might not have the + * top-level page table entry populated. + * + * We disable preemption because we want the same mm active when + * we probe the target and when we issue the hypercall. We'll + * have the same nominal mm, but if we're a kernel thread, lazy + * mm dropping could change our pgd. + * + * Out of an abundance of caution, this uses __get_user() to fault + * in the target address just in case there's some obscure case + * in which the target address isn't readable. + */ + + preempt_disable(); + + pagefault_disable(); /* Avoid warnings due to being atomic. */ + __get_user(dummy, (unsigned char __user __force *)v); + pagefault_enable(); + if (HYPERVISOR_update_va_mapping((unsigned long)v, pte, 0)) BUG(); @@ -500,6 +531,8 @@ BUG(); } else kmap_flush_unused(); + + preempt_enable(); } static void xen_alloc_ldt(struct desc_struct *ldt, unsigned entries) @@ -507,6 +540,17 @@ const unsigned entries_per_page = PAGE_SIZE / LDT_ENTRY_SIZE; int i; + /* + * We need to mark the all aliases of the LDT pages RO. We + * don't need to call vm_flush_aliases(), though, since that's + * only responsible for flushing aliases out the TLBs, not the + * page tables, and Xen will flush the TLB for us if needed. + * + * To avoid confusing future readers: none of this is necessary + * to load the LDT. The hypervisor only checks this when the + * LDT is faulted in due to subsequent descriptor access. + */ + for(i = 0; i < entries; i += entries_per_page) set_aliased_prot(ldt + i, PAGE_KERNEL_RO); } @@ -911,7 +955,7 @@ xen_mc_issue(PARAVIRT_LAZY_CPU); } -static void xen_set_iopl_mask(unsigned mask) +void xen_set_iopl_mask(unsigned mask) { struct physdev_set_iopl set_iopl; @@ -1706,6 +1750,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) { init_hvm_pv_info(); @@ -1722,6 +1781,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 } static uint32_t __init xen_hvm_platform(void) --- linux-3.13.0.orig/arch/x86/xen/grant-table.c +++ linux-3.13.0/arch/x86/xen/grant-table.c @@ -36,92 +36,126 @@ #include #include +#include #include #include #include #include +#include #include -static int map_pte_fn(pte_t *pte, struct page *pmd_page, - unsigned long addr, void *data) -{ - unsigned long **frames = (unsigned long **)data; - - set_pte_at(&init_mm, addr, pte, mfn_pte((*frames)[0], PAGE_KERNEL)); - (*frames)++; - return 0; -} - -/* - * This function is used to map shared frames to store grant status. It is - * different from map_pte_fn above, the frames type here is uint64_t. - */ -static int map_pte_fn_status(pte_t *pte, struct page *pmd_page, - unsigned long addr, void *data) -{ - uint64_t **frames = (uint64_t **)data; - - set_pte_at(&init_mm, addr, pte, mfn_pte((*frames)[0], PAGE_KERNEL)); - (*frames)++; - return 0; -} - -static int unmap_pte_fn(pte_t *pte, struct page *pmd_page, - unsigned long addr, void *data) -{ - - set_pte_at(&init_mm, addr, pte, __pte(0)); - return 0; -} +static struct gnttab_vm_area { + struct vm_struct *area; + pte_t **ptes; +} gnttab_shared_vm_area, gnttab_status_vm_area; int arch_gnttab_map_shared(unsigned long *frames, unsigned long nr_gframes, unsigned long max_nr_gframes, void **__shared) { - int rc; void *shared = *__shared; + unsigned long addr; + unsigned long i; + + if (shared == NULL) + *__shared = shared = gnttab_shared_vm_area.area->addr; - if (shared == NULL) { - struct vm_struct *area = - alloc_vm_area(PAGE_SIZE * max_nr_gframes, NULL); - BUG_ON(area == NULL); - shared = area->addr; - *__shared = shared; + addr = (unsigned long)shared; + + for (i = 0; i < nr_gframes; i++) { + set_pte_at(&init_mm, addr, gnttab_shared_vm_area.ptes[i], + mfn_pte(frames[i], PAGE_KERNEL)); + addr += PAGE_SIZE; } - rc = apply_to_page_range(&init_mm, (unsigned long)shared, - PAGE_SIZE * nr_gframes, - map_pte_fn, &frames); - return rc; + return 0; } int arch_gnttab_map_status(uint64_t *frames, unsigned long nr_gframes, unsigned long max_nr_gframes, grant_status_t **__shared) { - int rc; grant_status_t *shared = *__shared; + unsigned long addr; + unsigned long i; + + if (shared == NULL) + *__shared = shared = gnttab_status_vm_area.area->addr; + + addr = (unsigned long)shared; - if (shared == NULL) { - /* No need to pass in PTE as we are going to do it - * in apply_to_page_range anyhow. */ - struct vm_struct *area = - alloc_vm_area(PAGE_SIZE * max_nr_gframes, NULL); - BUG_ON(area == NULL); - shared = area->addr; - *__shared = shared; + for (i = 0; i < nr_gframes; i++) { + set_pte_at(&init_mm, addr, gnttab_status_vm_area.ptes[i], + mfn_pte(frames[i], PAGE_KERNEL)); + addr += PAGE_SIZE; } - rc = apply_to_page_range(&init_mm, (unsigned long)shared, - PAGE_SIZE * nr_gframes, - map_pte_fn_status, &frames); - return rc; + return 0; } void arch_gnttab_unmap(void *shared, unsigned long nr_gframes) { - apply_to_page_range(&init_mm, (unsigned long)shared, - PAGE_SIZE * nr_gframes, unmap_pte_fn, NULL); + pte_t **ptes; + unsigned long addr; + unsigned long i; + + if (shared == gnttab_status_vm_area.area->addr) + ptes = gnttab_status_vm_area.ptes; + else + ptes = gnttab_shared_vm_area.ptes; + + addr = (unsigned long)shared; + + for (i = 0; i < nr_gframes; i++) { + set_pte_at(&init_mm, addr, ptes[i], __pte(0)); + addr += PAGE_SIZE; + } +} + +static int arch_gnttab_valloc(struct gnttab_vm_area *area, unsigned nr_frames) +{ + area->ptes = kmalloc(sizeof(pte_t *) * nr_frames, GFP_KERNEL); + if (area->ptes == NULL) + return -ENOMEM; + + area->area = alloc_vm_area(PAGE_SIZE * nr_frames, area->ptes); + if (area->area == NULL) { + kfree(area->ptes); + return -ENOMEM; + } + + return 0; +} + +static void arch_gnttab_vfree(struct gnttab_vm_area *area) +{ + free_vm_area(area->area); + kfree(area->ptes); +} + +int arch_gnttab_init(unsigned long nr_shared, unsigned long nr_status) +{ + int ret; + + if (!xen_pv_domain()) + return 0; + + ret = arch_gnttab_valloc(&gnttab_shared_vm_area, nr_shared); + if (ret < 0) + return ret; + + /* + * Always allocate the space for the status frames in case + * we're migrated to a host with V2 support. + */ + ret = arch_gnttab_valloc(&gnttab_status_vm_area, nr_status); + if (ret < 0) + goto err; + + return 0; + err: + arch_gnttab_vfree(&gnttab_shared_vm_area); + return -ENOMEM; } --- linux-3.13.0.orig/arch/x86/xen/platform-pci-unplug.c +++ linux-3.13.0/arch/x86/xen/platform-pci-unplug.c @@ -69,6 +69,80 @@ return 0; } +bool xen_has_pv_devices() +{ + if (!xen_domain()) + return false; + + /* PV domains always have them. */ + if (xen_pv_domain()) + return true; + + /* And user has xen_platform_pci=0 set in guest config as + * driver did not modify the value. */ + if (xen_platform_pci_unplug == 0) + return false; + + if (xen_platform_pci_unplug & XEN_UNPLUG_NEVER) + return false; + + if (xen_platform_pci_unplug & XEN_UNPLUG_ALL) + return true; + + /* This is an odd one - we are going to run legacy + * and PV drivers at the same time. */ + if (xen_platform_pci_unplug & XEN_UNPLUG_UNNECESSARY) + return true; + + /* And the caller has to follow with xen_pv_{disk,nic}_devices + * to be certain which driver can load. */ + return false; +} +EXPORT_SYMBOL_GPL(xen_has_pv_devices); + +static bool __xen_has_pv_device(int state) +{ + /* HVM domains might or might not */ + if (xen_hvm_domain() && (xen_platform_pci_unplug & state)) + return true; + + return xen_has_pv_devices(); +} + +bool xen_has_pv_nic_devices(void) +{ + return __xen_has_pv_device(XEN_UNPLUG_ALL_NICS | XEN_UNPLUG_ALL); +} +EXPORT_SYMBOL_GPL(xen_has_pv_nic_devices); + +bool xen_has_pv_disk_devices(void) +{ + return __xen_has_pv_device(XEN_UNPLUG_ALL_IDE_DISKS | + XEN_UNPLUG_AUX_IDE_DISKS | XEN_UNPLUG_ALL); +} +EXPORT_SYMBOL_GPL(xen_has_pv_disk_devices); + +/* + * This one is odd - it determines whether you want to run PV _and_ + * legacy (IDE) drivers together. This combination is only possible + * under HVM. + */ +bool xen_has_pv_and_legacy_disk_devices(void) +{ + if (!xen_domain()) + return false; + + /* N.B. This is only ever used in HVM mode */ + if (xen_pv_domain()) + return false; + + if (xen_platform_pci_unplug & XEN_UNPLUG_UNNECESSARY) + return true; + + return false; +} +EXPORT_SYMBOL_GPL(xen_has_pv_and_legacy_disk_devices); + void xen_unplug_emulated_devices(void) { int r; --- linux-3.13.0.orig/arch/x86/xen/setup.c +++ linux-3.13.0/arch/x86/xen/setup.c @@ -385,7 +385,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) @@ -556,13 +556,7 @@ } #endif /* CONFIG_X86_64 */ } -void xen_enable_nmi(void) -{ -#ifdef CONFIG_X86_64 - if (register_callback(CALLBACKTYPE_nmi, nmi)) - BUG(); -#endif -} + void __init xen_arch_setup(void) { xen_panic_handler_init(); @@ -580,7 +574,6 @@ xen_enable_sysenter(); xen_enable_syscall(); - xen_enable_nmi(); #ifdef CONFIG_ACPI if (!(xen_start_info->flags & SIF_INITDOMAIN)) { printk(KERN_INFO "ACPI in unprivileged domain disabled\n"); --- linux-3.13.0.orig/arch/x86/xen/spinlock.c +++ linux-3.13.0/arch/x86/xen/spinlock.c @@ -274,7 +274,7 @@ printk(KERN_DEBUG "xen: PV spinlocks disabled\n"); return; } - + printk(KERN_DEBUG "xen: PV spinlocks enabled\n"); pv_lock_ops.lock_spinning = PV_CALLEE_SAVE(xen_lock_spinning); pv_lock_ops.unlock_kick = xen_unlock_kick; } @@ -290,6 +290,9 @@ if (!xen_pvspin) return 0; + if (!xen_domain()) + return 0; + static_key_slow_inc(¶virt_ticketlocks_enabled); return 0; } --- linux-3.13.0.orig/arch/x86/xen/suspend.c +++ linux-3.13.0/arch/x86/xen/suspend.c @@ -30,7 +30,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-3.13.0.orig/arch/x86/xen/time.c +++ linux-3.13.0/arch/x86/xen/time.c @@ -444,7 +444,7 @@ irq = bind_virq_to_irqhandler(VIRQ_TIMER, cpu, xen_timer_interrupt, IRQF_PERCPU|IRQF_NOBALANCING|IRQF_TIMER| - IRQF_FORCE_RESUME, + IRQF_FORCE_RESUME|IRQF_EARLY_RESUME, name, NULL); memcpy(evt, xen_clockevent, sizeof(*evt)); --- linux-3.13.0.orig/arch/xtensa/Kconfig +++ linux-3.13.0/arch/xtensa/Kconfig @@ -283,6 +283,36 @@ source "drivers/pci/hotplug/Kconfig" +config XTFPGA_LCD + bool "Enable XTFPGA LCD driver" + depends on XTENSA_PLATFORM_XTFPGA + default n + help + There's a 2x16 LCD on most of XTFPGA boards, kernel may output + progress messages there during bootup/shutdown. It may be useful + during board bringup. + + If unsure, say N. + +config XTFPGA_LCD_BASE_ADDR + hex "XTFPGA LCD base address" + depends on XTFPGA_LCD + default "0x0d0c0000" + help + Base address of the LCD controller inside KIO region. + Different boards from XTFPGA family have LCD controller at different + addresses. Please consult prototyping user guide for your board for + the correct address. Wrong address here may lead to hardware lockup. + +config XTFPGA_LCD_8BIT_ACCESS + bool "Use 8-bit access to XTFPGA LCD" + depends on XTFPGA_LCD + default n + help + LCD may be connected with 4- or 8-bit interface, 8-bit access may + only be used with 8-bit interface. Please consult prototyping user + guide for your board for the correct interface width. + endmenu menu "Executable file formats" --- linux-3.13.0.orig/arch/xtensa/include/asm/asmmacro.h +++ linux-3.13.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-3.13.0.orig/arch/xtensa/include/asm/pgtable.h +++ linux-3.13.0/arch/xtensa/include/asm/pgtable.h @@ -67,7 +67,12 @@ #define VMALLOC_START 0xC0000000 #define VMALLOC_END 0xC7FEFFFF #define TLBTEMP_BASE_1 0xC7FF0000 -#define TLBTEMP_BASE_2 0xC7FF8000 +#define TLBTEMP_BASE_2 (TLBTEMP_BASE_1 + DCACHE_WAY_SIZE) +#if 2 * DCACHE_WAY_SIZE > ICACHE_WAY_SIZE +#define TLBTEMP_SIZE (2 * DCACHE_WAY_SIZE) +#else +#define TLBTEMP_SIZE ICACHE_WAY_SIZE +#endif /* * For the Xtensa architecture, the PTE layout is as follows: --- linux-3.13.0.orig/arch/xtensa/include/asm/traps.h +++ linux-3.13.0/arch/xtensa/include/asm/traps.h @@ -22,25 +22,46 @@ static inline void spill_registers(void) { - +#if XCHAL_NUM_AREGS > 16 __asm__ __volatile__ ( - "movi a14, "__stringify((1 << PS_EXCM_BIT) | LOCKLEVEL)"\n\t" - "mov a12, a0\n\t" - "rsr a13, sar\n\t" - "xsr a14, ps\n\t" - "movi a0, _spill_registers\n\t" - "rsync\n\t" - "callx0 a0\n\t" - "mov a0, a12\n\t" - "wsr a13, sar\n\t" - "wsr a14, ps\n\t" - : : -#if defined(CONFIG_FRAME_POINTER) - : "a2", "a3", "a4", "a11", "a12", "a13", "a14", "a15", + " 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 - : "a2", "a3", "a4", "a7", "a11", "a12", "a13", "a14", "a15", + " _entry a1, 48\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" + " _entry a1, 16\n" +#if XCHAL_NUM_AREGS % 12 == 0 + " mov a12, a12\n" +#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" + : : : "a8", "a9", "memory"); +#else + __asm__ __volatile__ ( + " mov a12, a12\n" + : : : "memory"); #endif - "memory"); } #endif /* _XTENSA_TRAPS_H */ --- linux-3.13.0.orig/arch/xtensa/include/asm/uaccess.h +++ linux-3.13.0/arch/xtensa/include/asm/uaccess.h @@ -52,7 +52,12 @@ */ .macro get_fs ad, sp GET_CURRENT(\ad,\sp) +#if THREAD_CURRENT_DS > 1020 + addi \ad, \ad, TASK_THREAD + l32i \ad, \ad, THREAD_CURRENT_DS - TASK_THREAD +#else l32i \ad, \ad, THREAD_CURRENT_DS +#endif .endm /* --- linux-3.13.0.orig/arch/xtensa/include/uapi/asm/ioctls.h +++ linux-3.13.0/arch/xtensa/include/uapi/asm/ioctls.h @@ -28,17 +28,17 @@ #define TCSETSW 0x5403 #define TCSETSF 0x5404 -#define TCGETA _IOR('t', 23, struct termio) -#define TCSETA _IOW('t', 24, struct termio) -#define TCSETAW _IOW('t', 25, struct termio) -#define TCSETAF _IOW('t', 28, struct termio) +#define TCGETA 0x80127417 /* _IOR('t', 23, struct termio) */ +#define TCSETA 0x40127418 /* _IOW('t', 24, struct termio) */ +#define TCSETAW 0x40127419 /* _IOW('t', 25, struct termio) */ +#define TCSETAF 0x4012741C /* _IOW('t', 28, struct termio) */ #define TCSBRK _IO('t', 29) #define TCXONC _IO('t', 30) #define TCFLSH _IO('t', 31) -#define TIOCSWINSZ _IOW('t', 103, struct winsize) -#define TIOCGWINSZ _IOR('t', 104, struct winsize) +#define TIOCSWINSZ 0x40087467 /* _IOW('t', 103, struct winsize) */ +#define TIOCGWINSZ 0x80087468 /* _IOR('t', 104, struct winsize) */ #define TIOCSTART _IO('t', 110) /* start output, like ^Q */ #define TIOCSTOP _IO('t', 111) /* stop output, like ^S */ #define TIOCOUTQ _IOR('t', 115, int) /* output queue size */ @@ -88,7 +88,6 @@ #define TIOCSETD _IOW('T', 35, int) #define TIOCGETD _IOR('T', 36, int) #define TCSBRKP _IOW('T', 37, int) /* Needed for POSIX tcsendbreak()*/ -#define TIOCTTYGSTRUCT _IOR('T', 38, struct tty_struct) /* For debugging only*/ #define TIOCSBRK _IO('T', 39) /* BSD compatibility */ #define TIOCCBRK _IO('T', 40) /* BSD compatibility */ #define TIOCGSID _IOR('T', 41, pid_t) /* Return the session ID of FD*/ @@ -114,8 +113,10 @@ #define TIOCSERGETLSR _IOR('T', 89, unsigned int) /* Get line status reg. */ /* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */ # define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ -#define TIOCSERGETMULTI _IOR('T', 90, struct serial_multiport_struct) /* Get multiport config */ -#define TIOCSERSETMULTI _IOW('T', 91, struct serial_multiport_struct) /* Set multiport config */ +#define TIOCSERGETMULTI 0x80a8545a /* Get multiport config */ + /* _IOR('T', 90, struct serial_multiport_struct) */ +#define TIOCSERSETMULTI 0x40a8545b /* Set multiport config */ + /* _IOW('T', 91, struct serial_multiport_struct) */ #define TIOCMIWAIT _IO('T', 92) /* wait for a change on serial input line(s) */ #define TIOCGICOUNT 0x545D /* read serial port inline interrupt counts */ --- linux-3.13.0.orig/arch/xtensa/include/uapi/asm/unistd.h +++ linux-3.13.0/arch/xtensa/include/uapi/asm/unistd.h @@ -384,7 +384,8 @@ #define __NR_pivot_root 175 __SYSCALL(175, sys_pivot_root, 2) #define __NR_umount 176 -__SYSCALL(176, sys_umount, 2) +__SYSCALL(176, sys_oldumount, 1) +#define __ARCH_WANT_SYS_OLDUMOUNT #define __NR_swapoff 177 __SYSCALL(177, sys_swapoff, 1) #define __NR_sync 178 @@ -714,7 +715,7 @@ __SYSCALL(324, sys_name_to_handle_at, 5) #define __NR_open_by_handle_at 325 __SYSCALL(325, sys_open_by_handle_at, 3) -#define __NR_sync_file_range 326 +#define __NR_sync_file_range2 326 __SYSCALL(326, sys_sync_file_range2, 6) #define __NR_perf_event_open 327 __SYSCALL(327, sys_perf_event_open, 5) --- linux-3.13.0.orig/arch/xtensa/kernel/entry.S +++ linux-3.13.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. */ @@ -1001,9 +1006,8 @@ movi a7, 4 # sizeof(unsigned int) access_ok a3, a7, a0, a2, .Leac # a0: scratch reg, a2: sp - addi a6, a6, -1 # assuming SYS_XTENSA_ATOMIC_SET = 1 - _bgeui a6, SYS_XTENSA_COUNT - 1, .Lill - _bnei a6, SYS_XTENSA_ATOMIC_CMP_SWP - 1, .Lnswp + _bgeui a6, SYS_XTENSA_COUNT, .Lill + _bnei a6, SYS_XTENSA_ATOMIC_CMP_SWP, .Lnswp /* Fall through for ATOMIC_CMP_SWP. */ @@ -1015,27 +1019,26 @@ l32i a7, a2, PT_AREG7 # restore a7 l32i a0, a2, PT_AREG0 # restore a0 movi a2, 1 # and return 1 - addi a6, a6, 1 # restore a6 (really necessary?) rfe 1: l32i a7, a2, PT_AREG7 # restore a7 l32i a0, a2, PT_AREG0 # restore a0 movi a2, 0 # return 0 (note that we cannot set - addi a6, a6, 1 # restore a6 (really necessary?) rfe .Lnswp: /* Atomic set, add, and exg_add. */ TRY l32i a7, a3, 0 # orig + addi a6, a6, -SYS_XTENSA_ATOMIC_SET add a0, a4, a7 # + arg moveqz a0, a4, a6 # set + addi a6, a6, SYS_XTENSA_ATOMIC_SET TRY s32i a0, a3, 0 # write new value mov a0, a2 mov a2, a7 l32i a7, a0, PT_AREG7 # restore a7 l32i a0, a0, PT_AREG0 # restore a0 - addi a6, a6, 1 # restore a6 (really necessary?) rfe CATCH @@ -1044,7 +1047,7 @@ movi a2, -EFAULT rfe -.Lill: l32i a7, a2, PT_AREG0 # restore a7 +.Lill: l32i a7, a2, PT_AREG7 # restore a7 l32i a0, a2, PT_AREG0 # restore a0 movi a2, -EINVAL rfe @@ -1117,6 +1120,13 @@ * We basically restore WINDOWBASE and WINDOWSTART to the condition when * we entered the spill routine and jump to the user exception handler. * + * Note that we only need to restore the bits in windowstart that have not + * been spilled yet by the _spill_register routine. Luckily, a3 contains a + * rotated windowstart with only those bits set for frames that haven't been + * spilled yet. Because a3 is rotated such that bit 0 represents the register + * frame for the current windowbase - 1, we need to rotate a3 left by the + * value of the current windowbase + 1 and move it to windowstart. + * * a0: value of depc, original value in depc * a2: trashed, original value in EXC_TABLE_DOUBLE_SAVE * a3: exctable, original value in excsave1 @@ -1131,10 +1141,15 @@ /* We need to make sure the current registers (a0-a3) are preserved. * To do this, we simply set the bit for the current window frame * in WS, so that the exception handlers save them to the task stack. + * + * Note: we use a3 to set the windowbase, so we take a special care + * of it, saving it in the original _spill_registers frame across + * the exception handler call. */ xsr a3, excsave1 # get spill-mask slli a3, a3, 1 # shift left by one + addi a3, a3, 1 # set the bit for the current window frame slli a2, a3, 32-WSBITS src a2, a3, a2 # a2 = xxwww1yyxxxwww1yy...... @@ -1588,7 +1603,7 @@ rsr a0, excvaddr bltu a0, a3, 2f - addi a1, a0, -(2 << (DCACHE_ALIAS_ORDER + PAGE_SHIFT)) + addi a1, a0, -TLBTEMP_SIZE bgeu a1, a3, 2f /* Check if we have to restore an ITLB mapping. */ @@ -1794,6 +1809,43 @@ ENDPROC(system_call) +/* + * Spill live registers on the kernel stack macro. + * + * Entry condition: ps.woe is set, ps.excm is cleared + * Exit condition: windowstart has single bit set + * May clobber: a12, a13 + */ + .macro spill_registers_kernel + +#if XCHAL_NUM_AREGS > 16 + call12 1f + _j 2f + retw + .align 4 +1: + _entry a1, 48 + addi a12, a0, 3 +#if XCHAL_NUM_AREGS > 32 + .rept (XCHAL_NUM_AREGS - 32) / 12 + _entry a1, 48 + mov a12, a0 + .endr +#endif + _entry a1, 16 +#if XCHAL_NUM_AREGS % 12 == 0 + mov a8, a8 +#elif XCHAL_NUM_AREGS % 12 == 4 + mov a12, a12 +#elif XCHAL_NUM_AREGS % 12 == 8 + mov a4, a4 +#endif + retw +2: +#else + mov a12, a12 +#endif + .endm /* * Task switch. @@ -1804,23 +1856,27 @@ ENTRY(_switch_to) - entry a1, 16 + entry a1, 48 - mov a12, a2 # preserve 'prev' (a2) - mov a13, a3 # and 'next' (a3) + mov a11, a3 # and 'next' (a3) l32i a4, a2, TASK_THREAD_INFO l32i a5, a3, TASK_THREAD_INFO - save_xtregs_user a4 a6 a8 a9 a10 a11 THREAD_XTREGS_USER + save_xtregs_user a4 a6 a8 a9 a12 a13 THREAD_XTREGS_USER - s32i a0, a12, THREAD_RA # save return address - s32i a1, a12, THREAD_SP # save stack pointer +#if THREAD_RA > 1020 || THREAD_SP > 1020 + addi a10, a2, TASK_THREAD + s32i a0, a10, THREAD_RA - TASK_THREAD # save return address + s32i a1, a10, THREAD_SP - TASK_THREAD # save stack pointer +#else + s32i a0, a2, THREAD_RA # save return address + s32i a1, a2, THREAD_SP # save stack pointer +#endif /* Disable ints while we manipulate the stack pointer. */ - movi a14, (1 << PS_EXCM_BIT) | LOCKLEVEL - xsr a14, ps + rsil a14, LOCKLEVEL rsr a3, excsave1 rsync s32i a3, a3, EXC_TABLE_FIXUP /* enter critical section */ @@ -1835,7 +1891,7 @@ /* Flush register file. */ - call0 _spill_registers # destroys a3, a4, and SAR + spill_registers_kernel /* Set kernel stack (and leave critical section) * Note: It's save to set it here. The stack will not be overwritten @@ -1851,13 +1907,12 @@ /* restore context of the task 'next' */ - l32i a0, a13, THREAD_RA # restore return address - l32i a1, a13, THREAD_SP # restore stack pointer + l32i a0, a11, THREAD_RA # restore return address + l32i a1, a11, THREAD_SP # restore stack pointer - load_xtregs_user a5 a6 a8 a9 a10 a11 THREAD_XTREGS_USER + load_xtregs_user a5 a6 a8 a9 a12 a13 THREAD_XTREGS_USER wsr a14, ps - mov a2, a12 # return 'prev' rsync retw --- linux-3.13.0.orig/arch/xtensa/kernel/head.S +++ linux-3.13.0/arch/xtensa/kernel/head.S @@ -118,7 +118,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 @@ -219,7 +219,7 @@ __loopt a2, a3, a4, 2 s32i a0, a2, 0 - __endla a2, a4, 4 + __endla a2, a3, 4 #if XCHAL_DCACHE_IS_WRITEBACK --- linux-3.13.0.orig/arch/xtensa/kernel/pci-dma.c +++ linux-3.13.0/arch/xtensa/kernel/pci-dma.c @@ -49,9 +49,8 @@ /* We currently don't support coherent memory outside KSEG */ - if (ret < XCHAL_KSEG_CACHED_VADDR - || ret >= XCHAL_KSEG_CACHED_VADDR + XCHAL_KSEG_SIZE) - BUG(); + BUG_ON(ret < XCHAL_KSEG_CACHED_VADDR || + ret > XCHAL_KSEG_CACHED_VADDR + XCHAL_KSEG_SIZE - 1); if (ret != 0) { @@ -68,10 +67,11 @@ void dma_free_coherent(struct device *hwdev, size_t size, void *vaddr, dma_addr_t dma_handle) { - long addr=(long)vaddr+XCHAL_KSEG_CACHED_VADDR-XCHAL_KSEG_BYPASS_VADDR; + unsigned long addr = (unsigned long)vaddr + + XCHAL_KSEG_CACHED_VADDR - XCHAL_KSEG_BYPASS_VADDR; - if (addr < 0 || addr >= XCHAL_KSEG_SIZE) - BUG(); + BUG_ON(addr < XCHAL_KSEG_CACHED_VADDR || + addr > XCHAL_KSEG_CACHED_VADDR + XCHAL_KSEG_SIZE - 1); free_pages(addr, get_order(size)); } --- linux-3.13.0.orig/arch/xtensa/kernel/vectors.S +++ linux-3.13.0/arch/xtensa/kernel/vectors.S @@ -376,38 +376,42 @@ beqz a2, 1f # if at start of vector, don't restore addi a0, a0, -128 - bbsi a0, 8, 1f # don't restore except for overflow 8 and 12 - bbsi a0, 7, 2f + bbsi.l a0, 8, 1f # don't restore except for overflow 8 and 12 + + /* + * This fixup handler is for the extremely unlikely case where the + * overflow handler's reference thru a0 gets a hardware TLB refill + * that bumps out the (distinct, aliasing) TLB entry that mapped its + * prior references thru a9/a13, and where our reference now thru + * a9/a13 gets a 2nd-level miss exception (not hardware TLB refill). + */ + movi a2, window_overflow_restore_a0_fixup + s32i a2, a3, EXC_TABLE_FIXUP + l32i a2, a3, EXC_TABLE_DOUBLE_SAVE + xsr a3, excsave1 + + bbsi.l a0, 7, 2f /* * Restore a0 as saved by _WindowOverflow8(). - * - * FIXME: we really need a fixup handler for this L32E, - * for the extremely unlikely case where the overflow handler's - * reference thru a0 gets a hardware TLB refill that bumps out - * the (distinct, aliasing) TLB entry that mapped its prior - * references thru a9, and where our reference now thru a9 - * gets a 2nd-level miss exception (not hardware TLB refill). */ - l32e a2, a9, -16 - wsr a2, depc # replace the saved a0 - j 1f + l32e a0, a9, -16 + wsr a0, depc # replace the saved a0 + j 3f 2: /* * Restore a0 as saved by _WindowOverflow12(). - * - * FIXME: we really need a fixup handler for this L32E, - * for the extremely unlikely case where the overflow handler's - * reference thru a0 gets a hardware TLB refill that bumps out - * the (distinct, aliasing) TLB entry that mapped its prior - * references thru a13, and where our reference now thru a13 - * gets a 2nd-level miss exception (not hardware TLB refill). */ - l32e a2, a13, -16 - wsr a2, depc # replace the saved a0 + l32e a0, a13, -16 + wsr a0, depc # replace the saved a0 +3: + xsr a3, excsave1 + movi a0, 0 + s32i a0, a3, EXC_TABLE_FIXUP + s32i a2, a3, EXC_TABLE_DOUBLE_SAVE 1: /* * Restore WindowBase while leaving all address registers restored. @@ -449,6 +453,7 @@ s32i a0, a2, PT_DEPC +_DoubleExceptionVector_handle_exception: addx4 a0, a0, a3 l32i a0, a0, EXC_TABLE_FAST_USER xsr a3, excsave1 @@ -464,11 +469,120 @@ rotw -3 j 1b - .end literal_prefix ENDPROC(_DoubleExceptionVector) /* + * 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 + * a0 trashed. a0 bit 7 determines if this is a call8 (bit clear) or call12 + * (bit set) window. + * + * We do the following here: + * - go to the original window retaining a0 value; + * - set up exception stack to return back to appropriate a0 restore code + * (we'll need to rotate window back and there's no place to save this + * information, use different return address for that); + * - handle the exception; + * - go to the window that was being spilled; + * - set up window_overflow_restore_a0_fixup as a fixup routine; + * - reload a0; + * - restore the original window; + * - reset the default fixup routine; + * - return to user. By the time we get to this fixup handler all information + * about the conditions of the original double exception that happened in + * the window overflow handler is lost, so we just return to userspace to + * retry overflow from start. + * + * a0: value of depc, original value in depc + * a2: trashed, original value in EXC_TABLE_DOUBLE_SAVE + * a3: exctable, original value in excsave1 + */ + +ENTRY(window_overflow_restore_a0_fixup) + + rsr a0, ps + extui a0, a0, PS_OWB_SHIFT, PS_OWB_WIDTH + rsr a2, windowbase + sub a0, a2, a0 + extui a0, a0, 0, 3 + l32i a2, a3, EXC_TABLE_DOUBLE_SAVE + xsr a3, excsave1 + + _beqi a0, 1, .Lhandle_1 + _beqi a0, 3, .Lhandle_3 + + .macro overflow_fixup_handle_exception_pane n + + rsr a0, depc + rotw -\n + + xsr a3, excsave1 + wsr a2, depc + l32i a2, a3, EXC_TABLE_KSTK + s32i a0, a2, PT_AREG0 + + movi a0, .Lrestore_\n + s32i a0, a2, PT_DEPC + rsr a0, exccause + j _DoubleExceptionVector_handle_exception + + .endm + + overflow_fixup_handle_exception_pane 2 +.Lhandle_1: + overflow_fixup_handle_exception_pane 1 +.Lhandle_3: + overflow_fixup_handle_exception_pane 3 + + .macro overflow_fixup_restore_a0_pane n + + rotw \n + /* Need to preserve a0 value here to be able to handle exception + * that may occur on a0 reload from stack. It may occur because + * TLB miss handler may not be atomic and pointer to page table + * may be lost before we get here. There are no free registers, + * so we need to use EXC_TABLE_DOUBLE_SAVE area. + */ + xsr a3, excsave1 + s32i a2, a3, EXC_TABLE_DOUBLE_SAVE + movi a2, window_overflow_restore_a0_fixup + s32i a2, a3, EXC_TABLE_FIXUP + l32i a2, a3, EXC_TABLE_DOUBLE_SAVE + xsr a3, excsave1 + bbsi.l a0, 7, 1f + l32e a0, a9, -16 + j 2f +1: + l32e a0, a13, -16 +2: + rotw -\n + + .endm + +.Lrestore_2: + overflow_fixup_restore_a0_pane 2 + +.Lset_default_fixup: + xsr a3, excsave1 + s32i a2, a3, EXC_TABLE_DOUBLE_SAVE + movi a2, 0 + s32i a2, a3, EXC_TABLE_FIXUP + l32i a2, a3, EXC_TABLE_DOUBLE_SAVE + xsr a3, excsave1 + rfe + +.Lrestore_1: + overflow_fixup_restore_a0_pane 1 + j .Lset_default_fixup +.Lrestore_3: + overflow_fixup_restore_a0_pane 3 + j .Lset_default_fixup + +ENDPROC(window_overflow_restore_a0_fixup) + + .end literal_prefix +/* * Debug interrupt vector * * There is not much space here, so simply jump to another handler. --- linux-3.13.0.orig/arch/xtensa/kernel/vmlinux.lds.S +++ linux-3.13.0/arch/xtensa/kernel/vmlinux.lds.S @@ -262,13 +262,13 @@ .UserExceptionVector.literal) SECTION_VECTOR (_DoubleExceptionVector_literal, .DoubleExceptionVector.literal, - DOUBLEEXC_VECTOR_VADDR - 16, + DOUBLEEXC_VECTOR_VADDR - 40, SIZEOF(.UserExceptionVector.text), .UserExceptionVector.text) SECTION_VECTOR (_DoubleExceptionVector_text, .DoubleExceptionVector.text, DOUBLEEXC_VECTOR_VADDR, - 32, + 40, .DoubleExceptionVector.literal) . = (LOADADDR( .DoubleExceptionVector.text ) + SIZEOF( .DoubleExceptionVector.text ) + 3) & ~ 3; --- linux-3.13.0.orig/arch/xtensa/lib/usercopy.S +++ linux-3.13.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-3.13.0.orig/arch/xtensa/mm/fault.c +++ linux-3.13.0/arch/xtensa/mm/fault.c @@ -117,6 +117,8 @@ if (unlikely(fault & VM_FAULT_ERROR)) { if (fault & VM_FAULT_OOM) goto out_of_memory; + else if (fault & VM_FAULT_SIGSEGV) + goto bad_area; else if (fault & VM_FAULT_SIGBUS) goto do_sigbus; BUG(); --- linux-3.13.0.orig/arch/xtensa/platforms/iss/console.c +++ linux-3.13.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-3.13.0.orig/arch/xtensa/platforms/iss/network.c +++ linux-3.13.0/arch/xtensa/platforms/iss/network.c @@ -395,10 +395,10 @@ { struct iss_net_private* lp = (struct iss_net_private*) priv; - spin_lock(&lp->lock); - iss_net_poll(); + spin_lock(&lp->lock); + mod_timer(&lp->timer, jiffies + lp->timer_val); spin_unlock(&lp->lock); @@ -411,7 +411,7 @@ char addr[sizeof "255.255.255.255\0"]; int err; - spin_lock(&lp->lock); + spin_lock_bh(&lp->lock); if ((err = lp->tp.open(lp)) < 0) goto out; @@ -430,9 +430,11 @@ while ((err = iss_net_rx(dev)) > 0) ; - spin_lock(&opened_lock); + spin_unlock_bh(&lp->lock); + spin_lock_bh(&opened_lock); list_add(&lp->opened_list, &opened); - spin_unlock(&opened_lock); + spin_unlock_bh(&opened_lock); + spin_lock_bh(&lp->lock); init_timer(&lp->timer); lp->timer_val = ISS_NET_TIMER_VALUE; @@ -441,7 +443,7 @@ mod_timer(&lp->timer, jiffies + lp->timer_val); out: - spin_unlock(&lp->lock); + spin_unlock_bh(&lp->lock); return err; } @@ -450,7 +452,7 @@ struct iss_net_private *lp = netdev_priv(dev); printk("iss_net_close!\n"); netif_stop_queue(dev); - spin_lock(&lp->lock); + spin_lock_bh(&lp->lock); spin_lock(&opened_lock); list_del(&opened); @@ -460,18 +462,17 @@ lp->tp.close(lp); - spin_unlock(&lp->lock); + spin_unlock_bh(&lp->lock); return 0; } static int iss_net_start_xmit(struct sk_buff *skb, struct net_device *dev) { struct iss_net_private *lp = netdev_priv(dev); - unsigned long flags; int len; netif_stop_queue(dev); - spin_lock_irqsave(&lp->lock, flags); + spin_lock_bh(&lp->lock); len = lp->tp.write(lp, &skb); @@ -493,7 +494,7 @@ printk(KERN_ERR "iss_net_start_xmit: failed(%d)\n", len); } - spin_unlock_irqrestore(&lp->lock, flags); + spin_unlock_bh(&lp->lock); dev_kfree_skb(skb); return NETDEV_TX_OK; @@ -532,9 +533,9 @@ struct iss_net_private *lp = netdev_priv(dev); struct sockaddr *hwaddr = addr; - spin_lock(&lp->lock); + spin_lock_bh(&lp->lock); memcpy(dev->dev_addr, hwaddr->sa_data, ETH_ALEN); - spin_unlock(&lp->lock); + spin_unlock_bh(&lp->lock); #endif return 0; @@ -604,14 +605,14 @@ *lp = ((struct iss_net_private) { .device_list = LIST_HEAD_INIT(lp->device_list), .opened_list = LIST_HEAD_INIT(lp->opened_list), - .lock = __SPIN_LOCK_UNLOCKED(lp.lock), .dev = dev, .index = index, //.fd = -1, .mac = { 0xfe, 0xfd, 0x0, 0x0, 0x0, 0x0 }, .have_mac = 0, - }); + }); + spin_lock_init(&lp->lock); /* * Try all transport protocols. * Note: more protocols can be added by adding '&& !X_init(lp, eth)'. --- linux-3.13.0.orig/arch/xtensa/platforms/iss/setup.c +++ linux-3.13.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-3.13.0.orig/arch/xtensa/platforms/xt2000/setup.c +++ linux-3.13.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-3.13.0.orig/arch/xtensa/platforms/xtfpga/Makefile +++ linux-3.13.0/arch/xtensa/platforms/xtfpga/Makefile @@ -6,4 +6,5 @@ # # Note 2! The CFLAGS definitions are in the main makefile... -obj-y = setup.o lcd.o +obj-y += setup.o +obj-$(CONFIG_XTFPGA_LCD) += lcd.o --- linux-3.13.0.orig/arch/xtensa/platforms/xtfpga/include/platform/hardware.h +++ linux-3.13.0/arch/xtensa/platforms/xtfpga/include/platform/hardware.h @@ -44,9 +44,6 @@ /* UART */ #define DUART16552_PADDR (XCHAL_KIO_PADDR + 0x0D050020) -/* LCD instruction and data addresses. */ -#define LCD_INSTR_ADDR ((char *)IOADDR(0x0D040000)) -#define LCD_DATA_ADDR ((char *)IOADDR(0x0D040004)) /* Misc. */ #define XTFPGA_FPGAREGS_VADDR IOADDR(0x0D020000) --- linux-3.13.0.orig/arch/xtensa/platforms/xtfpga/include/platform/lcd.h +++ linux-3.13.0/arch/xtensa/platforms/xtfpga/include/platform/lcd.h @@ -11,10 +11,25 @@ #ifndef __XTENSA_XTAVNET_LCD_H #define __XTENSA_XTAVNET_LCD_H +#ifdef CONFIG_XTFPGA_LCD /* Display string STR at position POS on the LCD. */ void lcd_disp_at_pos(char *str, unsigned char pos); /* Shift the contents of the LCD display left or right. */ void lcd_shiftleft(void); void lcd_shiftright(void); +#else +static inline void lcd_disp_at_pos(char *str, unsigned char pos) +{ +} + +static inline void lcd_shiftleft(void) +{ +} + +static inline void lcd_shiftright(void) +{ +} +#endif + #endif --- linux-3.13.0.orig/arch/xtensa/platforms/xtfpga/lcd.c +++ linux-3.13.0/arch/xtensa/platforms/xtfpga/lcd.c @@ -1,50 +1,63 @@ /* - * Driver for the LCD display on the Tensilica LX60 Board. + * Driver for the LCD display on the Tensilica XTFPGA board family. + * http://www.mytechcorp.com/cfdata/productFile/File1/MOC-16216B-B-A0A04.pdf * * 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. * * Copyright (C) 2001, 2006 Tensilica Inc. + * Copyright (C) 2015 Cadence Design Systems Inc. */ -/* - * - * FIXME: this code is from the examples from the LX60 user guide. - * - * The lcd_pause function does busy waiting, which is probably not - * great. Maybe the code could be changed to use kernel timers, or - * change the hardware to not need to wait. - */ - +#include #include #include #include #include -#include -#define LCD_PAUSE_ITERATIONS 4000 +/* LCD instruction and data addresses. */ +#define LCD_INSTR_ADDR ((char *)IOADDR(CONFIG_XTFPGA_LCD_BASE_ADDR)) +#define LCD_DATA_ADDR (LCD_INSTR_ADDR + 4) + #define LCD_CLEAR 0x1 #define LCD_DISPLAY_ON 0xc /* 8bit and 2 lines display */ #define LCD_DISPLAY_MODE8BIT 0x38 +#define LCD_DISPLAY_MODE4BIT 0x28 #define LCD_DISPLAY_POS 0x80 #define LCD_SHIFT_LEFT 0x18 #define LCD_SHIFT_RIGHT 0x1c +static void lcd_put_byte(u8 *addr, u8 data) +{ +#ifdef CONFIG_XTFPGA_LCD_8BIT_ACCESS + ACCESS_ONCE(*addr) = data; +#else + ACCESS_ONCE(*addr) = data & 0xf0; + ACCESS_ONCE(*addr) = (data << 4) & 0xf0; +#endif +} + static int __init lcd_init(void) { - *LCD_INSTR_ADDR = LCD_DISPLAY_MODE8BIT; + ACCESS_ONCE(*LCD_INSTR_ADDR) = LCD_DISPLAY_MODE8BIT; mdelay(5); - *LCD_INSTR_ADDR = LCD_DISPLAY_MODE8BIT; + ACCESS_ONCE(*LCD_INSTR_ADDR) = LCD_DISPLAY_MODE8BIT; udelay(200); - *LCD_INSTR_ADDR = LCD_DISPLAY_MODE8BIT; + ACCESS_ONCE(*LCD_INSTR_ADDR) = LCD_DISPLAY_MODE8BIT; + udelay(50); +#ifndef CONFIG_XTFPGA_LCD_8BIT_ACCESS + ACCESS_ONCE(*LCD_INSTR_ADDR) = LCD_DISPLAY_MODE4BIT; + udelay(50); + lcd_put_byte(LCD_INSTR_ADDR, LCD_DISPLAY_MODE4BIT); udelay(50); - *LCD_INSTR_ADDR = LCD_DISPLAY_ON; +#endif + lcd_put_byte(LCD_INSTR_ADDR, LCD_DISPLAY_ON); udelay(50); - *LCD_INSTR_ADDR = LCD_CLEAR; + lcd_put_byte(LCD_INSTR_ADDR, LCD_CLEAR); mdelay(10); lcd_disp_at_pos("XTENSA LINUX", 0); return 0; @@ -52,10 +65,10 @@ void lcd_disp_at_pos(char *str, unsigned char pos) { - *LCD_INSTR_ADDR = LCD_DISPLAY_POS | pos; + lcd_put_byte(LCD_INSTR_ADDR, LCD_DISPLAY_POS | pos); udelay(100); while (*str != 0) { - *LCD_DATA_ADDR = *str; + lcd_put_byte(LCD_DATA_ADDR, *str); udelay(200); str++; } @@ -63,13 +76,13 @@ void lcd_shiftleft(void) { - *LCD_INSTR_ADDR = LCD_SHIFT_LEFT; + lcd_put_byte(LCD_INSTR_ADDR, LCD_SHIFT_LEFT); udelay(50); } void lcd_shiftright(void) { - *LCD_INSTR_ADDR = LCD_SHIFT_RIGHT; + lcd_put_byte(LCD_INSTR_ADDR, LCD_SHIFT_RIGHT); udelay(50); } --- linux-3.13.0.orig/arch/xtensa/platforms/xtfpga/setup.c +++ linux-3.13.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" @@ -194,7 +196,7 @@ * Ethernet -- OpenCores Ethernet MAC (ethoc driver) */ -static struct resource ethoc_res[] __initdata = { +static struct resource ethoc_res[] = { [0] = { /* register space */ .start = OETH_REGS_PADDR, .end = OETH_REGS_PADDR + OETH_REGS_SIZE - 1, @@ -212,7 +214,7 @@ }, }; -static struct ethoc_platform_data ethoc_pdata __initdata = { +static struct ethoc_platform_data ethoc_pdata = { /* * The MAC address for these boards is 00:50:c2:13:6f:xx. * The last byte (here as zero) is read from the DIP switches on the @@ -222,7 +224,7 @@ .phy_id = -1, }; -static struct platform_device ethoc_device __initdata = { +static struct platform_device ethoc_device = { .name = "ethoc", .id = -1, .num_resources = ARRAY_SIZE(ethoc_res), @@ -236,13 +238,13 @@ * UART */ -static struct resource serial_resource __initdata = { +static struct resource serial_resource = { .start = DUART16552_PADDR, .end = DUART16552_PADDR + 0x1f, .flags = IORESOURCE_MEM, }; -static struct plat_serial8250_port serial_platform_data[] __initdata = { +static struct plat_serial8250_port serial_platform_data[] = { [0] = { .mapbase = DUART16552_PADDR, .irq = DUART16552_INTNUM, @@ -255,7 +257,7 @@ { }, }; -static struct platform_device xtavnet_uart __initdata = { +static struct platform_device xtavnet_uart = { .name = "serial8250", .id = PLAT8250_DEV_PLATFORM, .dev = { --- linux-3.13.0.orig/block/blk-cgroup.c +++ linux-3.13.0/block/blk-cgroup.c @@ -80,7 +80,7 @@ blkg->q = q; INIT_LIST_HEAD(&blkg->q_node); blkg->blkcg = blkcg; - blkg->refcnt = 1; + atomic_set(&blkg->refcnt, 1); /* root blkg uses @q->root_rl, init rl only for !root blkgs */ if (blkcg != &blkcg_root) { @@ -399,11 +399,8 @@ /* release the blkcg and parent blkg refs this blkg has been holding */ css_put(&blkg->blkcg->css); - if (blkg->parent) { - spin_lock_irq(blkg->q->queue_lock); + if (blkg->parent) blkg_put(blkg->parent); - spin_unlock_irq(blkg->q->queue_lock); - } blkg_free(blkg); } @@ -706,8 +703,12 @@ return -EINVAL; disk = get_gendisk(MKDEV(major, minor), &part); - if (!disk || part) + if (!disk) + return -EINVAL; + if (part) { + put_disk(disk); return -EINVAL; + } rcu_read_lock(); spin_lock_irq(disk->queue->queue_lock); @@ -862,6 +863,13 @@ { lockdep_assert_held(q->queue_lock); + /* + * @q could be exiting and already have destroyed all blkgs as + * indicated by NULL root_blkg. If so, don't confuse policies. + */ + if (!q->root_blkg) + return; + blk_throtl_drain(q); } --- linux-3.13.0.orig/block/blk-cgroup.h +++ linux-3.13.0/block/blk-cgroup.h @@ -18,6 +18,7 @@ #include #include #include +#include /* Max limits for throttle policy */ #define THROTL_IOPS_MAX UINT_MAX @@ -104,7 +105,7 @@ struct request_list rl; /* reference count */ - int refcnt; + atomic_t refcnt; /* is this blkg online? protected by both blkcg and q locks */ bool online; @@ -253,13 +254,12 @@ * blkg_get - get a blkg reference * @blkg: blkg to get * - * The caller should be holding queue_lock and an existing reference. + * The caller should be holding an existing reference. */ static inline void blkg_get(struct blkcg_gq *blkg) { - lockdep_assert_held(blkg->q->queue_lock); - WARN_ON_ONCE(!blkg->refcnt); - blkg->refcnt++; + WARN_ON_ONCE(atomic_read(&blkg->refcnt) <= 0); + atomic_inc(&blkg->refcnt); } void __blkg_release_rcu(struct rcu_head *rcu); @@ -267,14 +267,11 @@ /** * blkg_put - put a blkg reference * @blkg: blkg to put - * - * The caller should be holding queue_lock. */ static inline void blkg_put(struct blkcg_gq *blkg) { - lockdep_assert_held(blkg->q->queue_lock); - WARN_ON_ONCE(blkg->refcnt <= 0); - if (!--blkg->refcnt) + WARN_ON_ONCE(atomic_read(&blkg->refcnt) <= 0); + if (atomic_dec_and_test(&blkg->refcnt)) call_rcu(&blkg->rcu_head, __blkg_release_rcu); } @@ -435,9 +432,9 @@ uint64_t v; do { - start = u64_stats_fetch_begin_bh(&stat->syncp); + start = u64_stats_fetch_begin_irq(&stat->syncp); v = stat->cnt; - } while (u64_stats_fetch_retry_bh(&stat->syncp, start)); + } while (u64_stats_fetch_retry_irq(&stat->syncp, start)); return v; } @@ -508,9 +505,9 @@ struct blkg_rwstat tmp; do { - start = u64_stats_fetch_begin_bh(&rwstat->syncp); + start = u64_stats_fetch_begin_irq(&rwstat->syncp); tmp = *rwstat; - } while (u64_stats_fetch_retry_bh(&rwstat->syncp, start)); + } while (u64_stats_fetch_retry_irq(&rwstat->syncp, start)); return tmp; } --- linux-3.13.0.orig/block/blk-core.c +++ linux-3.13.0/block/blk-core.c @@ -506,6 +506,9 @@ del_timer_sync(&q->backing_dev_info.laptop_mode_wb_timer); blk_sync_queue(q); + if (q->mq_ops) + blk_mq_free_queue(q); + spin_lock_irq(lock); if (q->queue_lock != &q->__queue_lock) q->queue_lock = &q->__queue_lock; @@ -1885,7 +1888,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 * @@ -1896,20 +1900,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 agaist - * 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; @@ -1929,7 +1926,6 @@ return 0; } -EXPORT_SYMBOL_GPL(blk_rq_check_limits); /** * blk_insert_cloned_request - Helper for stacking drivers to submit a request @@ -1941,7 +1937,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 && @@ -2325,7 +2321,7 @@ if (!req->bio) return false; - trace_block_rq_complete(req->q, req); + trace_block_rq_complete(req->q, req, nr_bytes); /* * For fs requests, rq is just carrier of independent bio's @@ -3136,6 +3132,9 @@ { int ret = 0; + if (!q->dev) + return ret; + spin_lock_irq(q->queue_lock); if (q->nr_pending) { ret = -EBUSY; @@ -3163,6 +3162,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; @@ -3187,6 +3189,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); @@ -3209,6 +3214,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-3.13.0.orig/block/blk-iopoll.c +++ linux-3.13.0/block/blk-iopoll.c @@ -14,9 +14,6 @@ #include "blk.h" -int blk_iopoll_enabled = 1; -EXPORT_SYMBOL(blk_iopoll_enabled); - static unsigned int blk_iopoll_budget __read_mostly = 256; static DEFINE_PER_CPU(struct list_head, blk_cpu_iopoll); --- linux-3.13.0.orig/block/blk-lib.c +++ linux-3.13.0/block/blk-lib.c @@ -119,6 +119,14 @@ atomic_inc(&bb.done); submit_bio(type, bio); + + /* + * We can loop for a long time in here, if someone does + * full device discards (like mkfs). Be nice and allow + * us to schedule out to avoid softlocking if preempt + * is disabled. + */ + cond_resched(); } blk_finish_plug(&plug); --- linux-3.13.0.orig/block/blk-mq-cpumap.c +++ linux-3.13.0/block/blk-mq-cpumap.c @@ -95,7 +95,7 @@ unsigned int *map; /* If cpus are offline, map them to first hctx */ - map = kzalloc_node(sizeof(*map) * num_possible_cpus(), GFP_KERNEL, + map = kzalloc_node(sizeof(*map) * nr_cpu_ids, GFP_KERNEL, reg->numa_node); if (!map) return NULL; --- linux-3.13.0.orig/block/blk-mq-sysfs.c +++ linux-3.13.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-3.13.0.orig/block/blk-mq-tag.c +++ linux-3.13.0/block/blk-mq-tag.c @@ -36,7 +36,8 @@ { int tag; - tag = percpu_ida_alloc(&tags->free_tags, gfp); + tag = percpu_ida_alloc(&tags->free_tags, (gfp & __GFP_WAIT) ? + TASK_UNINTERRUPTIBLE : TASK_RUNNING); if (tag < 0) return BLK_MQ_TAG_FAIL; return tag + tags->nr_reserved_tags; @@ -52,7 +53,8 @@ return BLK_MQ_TAG_FAIL; } - tag = percpu_ida_alloc(&tags->reserved_tags, gfp); + tag = percpu_ida_alloc(&tags->reserved_tags, (gfp & __GFP_WAIT) ? + TASK_UNINTERRUPTIBLE : TASK_RUNNING); if (tag < 0) return BLK_MQ_TAG_FAIL; return tag; --- linux-3.13.0.orig/block/blk-mq.c +++ linux-3.13.0/block/blk-mq.c @@ -179,6 +179,8 @@ rq->mq_ctx = ctx; rq->cmd_flags = rw_flags; + rq->start_time = jiffies; + set_start_time_ns(rq); ctx->rq_dispatched[rw_is_sync(rw_flags)]++; } @@ -299,7 +301,7 @@ struct bio *bio = rq->bio; unsigned int bytes = 0; - trace_block_rq_complete(rq->q, rq); + trace_block_rq_complete(rq->q, rq, blk_rq_bytes(rq)); while (bio) { struct bio *next = bio->bi_next; --- linux-3.13.0.orig/block/blk-settings.c +++ linux-3.13.0/block/blk-settings.c @@ -553,7 +553,7 @@ bottom = max(b->physical_block_size, b->io_min) + alignment; /* Verify that top and bottom intervals line up */ - if (max(top, bottom) & (min(top, bottom) - 1)) { + if (max(top, bottom) % min(top, bottom)) { t->misaligned = 1; ret = -1; } @@ -594,7 +594,7 @@ /* Find lowest common alignment_offset */ t->alignment_offset = lcm(t->alignment_offset, alignment) - & (max(t->physical_block_size, t->io_min) - 1); + % max(t->physical_block_size, t->io_min); /* Verify that new alignment_offset is on a logical block boundary */ if (t->alignment_offset & (t->logical_block_size - 1)) { --- linux-3.13.0.orig/block/blk-sysfs.c +++ linux-3.13.0/block/blk-sysfs.c @@ -518,17 +518,15 @@ * Currently, its primary task it to free all the &struct request * structures that were allocated to the queue and the queue itself. * - * Caveat: - * Hopefully the low level driver will have finished any - * outstanding requests first... + * Note: + * The low level driver must have finished any outstanding requests first + * via blk_cleanup_queue(). **/ static void blk_release_queue(struct kobject *kobj) { struct request_queue *q = container_of(kobj, struct request_queue, kobj); - blk_sync_queue(q); - blkcg_exit_queue(q); if (q->elevator) { @@ -545,9 +543,6 @@ percpu_counter_destroy(&q->mq_usage_counter); - if (q->mq_ops) - blk_mq_free_queue(q); - blk_trace_shutdown(q); bdi_destroy(&q->backing_dev_info); --- linux-3.13.0.orig/block/blk-tag.c +++ linux-3.13.0/block/blk-tag.c @@ -27,18 +27,15 @@ EXPORT_SYMBOL(blk_queue_find_tag); /** - * __blk_free_tags - release a given set of tag maintenance info + * blk_free_tags - release a given set of tag maintenance info * @bqt: the tag map to free * - * Tries to free the specified @bqt. Returns true if it was - * actually freed and false if there are still references using it + * Drop the reference count on @bqt and frees it when the last reference + * is dropped. */ -static int __blk_free_tags(struct blk_queue_tag *bqt) +void blk_free_tags(struct blk_queue_tag *bqt) { - int retval; - - retval = atomic_dec_and_test(&bqt->refcnt); - if (retval) { + if (atomic_dec_and_test(&bqt->refcnt)) { BUG_ON(find_first_bit(bqt->tag_map, bqt->max_depth) < bqt->max_depth); @@ -50,9 +47,8 @@ kfree(bqt); } - - return retval; } +EXPORT_SYMBOL(blk_free_tags); /** * __blk_queue_free_tags - release tag maintenance info @@ -69,28 +65,13 @@ if (!bqt) return; - __blk_free_tags(bqt); + blk_free_tags(bqt); q->queue_tags = NULL; queue_flag_clear_unlocked(QUEUE_FLAG_QUEUED, q); } /** - * blk_free_tags - release a given set of tag maintenance info - * @bqt: the tag map to free - * - * For externally managed @bqt frees the map. Callers of this - * function must guarantee to have released all the queues that - * might have been using this tag map. - */ -void blk_free_tags(struct blk_queue_tag *bqt) -{ - if (unlikely(!__blk_free_tags(bqt))) - BUG(); -} -EXPORT_SYMBOL(blk_free_tags); - -/** * blk_queue_free_tags - release tag maintenance info * @q: the request queue for the device * --- linux-3.13.0.orig/block/blk-throttle.c +++ linux-3.13.0/block/blk-throttle.c @@ -1292,6 +1292,9 @@ struct blkg_rwstat rwstat = { }, tmp; int i, cpu; + if (tg->stats_cpu == NULL) + return 0; + for_each_possible_cpu(cpu) { struct tg_stats_cpu *sc = per_cpu_ptr(tg->stats_cpu, cpu); --- linux-3.13.0.orig/block/blk.h +++ linux-3.13.0/block/blk.h @@ -113,7 +113,7 @@ q->flush_queue_delayed = 1; return NULL; } - if (unlikely(blk_queue_dying(q)) || + if (unlikely(blk_queue_bypass(q)) || !q->elevator->type->ops.elevator_dispatch_fn(q, 0)) return NULL; } --- linux-3.13.0.orig/block/cfq-iosched.c +++ linux-3.13.0/block/cfq-iosched.c @@ -1275,12 +1275,16 @@ static void cfq_update_group_weight(struct cfq_group *cfqg) { - BUG_ON(!RB_EMPTY_NODE(&cfqg->rb_node)); - if (cfqg->new_weight) { cfqg->weight = cfqg->new_weight; cfqg->new_weight = 0; } +} + +static void +cfq_update_group_leaf_weight(struct cfq_group *cfqg) +{ + BUG_ON(!RB_EMPTY_NODE(&cfqg->rb_node)); if (cfqg->new_leaf_weight) { cfqg->leaf_weight = cfqg->new_leaf_weight; @@ -1299,7 +1303,7 @@ /* add to the service tree */ BUG_ON(!RB_EMPTY_NODE(&cfqg->rb_node)); - cfq_update_group_weight(cfqg); + cfq_update_group_leaf_weight(cfqg); __cfq_group_service_tree_add(st, cfqg); /* @@ -1323,6 +1327,7 @@ */ while ((parent = cfqg_parent(pos))) { if (propagate) { + cfq_update_group_weight(pos); propagate = !parent->nr_active++; parent->children_weight += pos->weight; } @@ -3595,6 +3600,11 @@ blkcg = bio_blkcg(bio); cfqg = cfq_lookup_create_cfqg(cfqd, blkcg); + if (!cfqg) { + cfqq = &cfqd->oom_cfqq; + goto out; + } + cfqq = cic_to_cfqq(cic, is_sync); /* @@ -3631,7 +3641,7 @@ } else cfqq = &cfqd->oom_cfqq; } - +out: if (new_cfqq) kmem_cache_free(cfq_pool, new_cfqq); @@ -3661,12 +3671,17 @@ cfq_get_queue(struct cfq_data *cfqd, bool is_sync, struct cfq_io_cq *cic, struct bio *bio, gfp_t gfp_mask) { - const int ioprio_class = IOPRIO_PRIO_CLASS(cic->ioprio); - const int ioprio = IOPRIO_PRIO_DATA(cic->ioprio); + int ioprio_class = IOPRIO_PRIO_CLASS(cic->ioprio); + int ioprio = IOPRIO_PRIO_DATA(cic->ioprio); struct cfq_queue **async_cfqq = NULL; struct cfq_queue *cfqq = NULL; if (!is_sync) { + if (!ioprio_valid(cic->ioprio)) { + struct task_struct *tsk = current; + ioprio = task_nice_ioprio(tsk); + ioprio_class = task_nice_ioclass(tsk); + } async_cfqq = cfq_async_queue_prio(cfqd, ioprio_class, ioprio); cfqq = *async_cfqq; } --- linux-3.13.0.orig/block/compat_ioctl.c +++ linux-3.13.0/block/compat_ioctl.c @@ -690,6 +690,7 @@ case BLKROSET: case BLKDISCARD: case BLKSECDISCARD: + case BLKZEROOUT: /* * the ones below are implemented in blkdev_locked_ioctl, * but we call blkdev_ioctl, which gets the lock for us --- linux-3.13.0.orig/block/genhd.c +++ linux-3.13.0/block/genhd.c @@ -28,10 +28,10 @@ /* for extended dynamic devt allocation, currently only one major is used */ #define NR_EXT_DEVT (1 << MINORBITS) -/* For extended devt allocation. ext_devt_mutex prevents look up +/* For extended devt allocation. ext_devt_lock prevents look up * results from going away underneath its user. */ -static DEFINE_MUTEX(ext_devt_mutex); +static DEFINE_SPINLOCK(ext_devt_lock); static DEFINE_IDR(ext_devt_idr); static struct device_type disk_type; @@ -420,9 +420,13 @@ } /* allocate ext devt */ - mutex_lock(&ext_devt_mutex); - idx = idr_alloc(&ext_devt_idr, part, 0, NR_EXT_DEVT, GFP_KERNEL); - mutex_unlock(&ext_devt_mutex); + idr_preload(GFP_KERNEL); + + spin_lock_bh(&ext_devt_lock); + idx = idr_alloc(&ext_devt_idr, part, 0, NR_EXT_DEVT, GFP_NOWAIT); + spin_unlock_bh(&ext_devt_lock); + + idr_preload_end(); if (idx < 0) return idx == -ENOSPC ? -EBUSY : idx; @@ -441,15 +445,13 @@ */ void blk_free_devt(dev_t devt) { - might_sleep(); - if (devt == MKDEV(0, 0)) return; if (MAJOR(devt) == BLOCK_EXT_MAJOR) { - mutex_lock(&ext_devt_mutex); + spin_lock_bh(&ext_devt_lock); idr_remove(&ext_devt_idr, blk_mangle_minor(MINOR(devt))); - mutex_unlock(&ext_devt_mutex); + spin_unlock_bh(&ext_devt_lock); } } @@ -665,7 +667,6 @@ sysfs_remove_link(block_depr, dev_name(disk_to_dev(disk))); pm_runtime_set_memalloc_noio(disk_to_dev(disk), false); device_del(disk_to_dev(disk)); - blk_free_devt(disk_to_dev(disk)->devt); } EXPORT_SYMBOL(del_gendisk); @@ -690,13 +691,13 @@ } else { struct hd_struct *part; - mutex_lock(&ext_devt_mutex); + spin_lock_bh(&ext_devt_lock); part = idr_find(&ext_devt_idr, blk_mangle_minor(MINOR(devt))); if (part && get_disk(part_to_disk(part))) { *partno = part->partno; disk = part_to_disk(part); } - mutex_unlock(&ext_devt_mutex); + spin_unlock_bh(&ext_devt_lock); } return disk; @@ -1069,9 +1070,16 @@ struct disk_part_tbl *old_ptbl = disk->part_tbl; struct disk_part_tbl *new_ptbl; int len = old_ptbl ? old_ptbl->len : 0; - int target = partno + 1; + int i, target; size_t size; - int i; + + /* + * check for int overflow, since we can get here from blkpg_ioctl() + * with a user passed 'partno'. + */ + target = partno + 1; + if (target < 0) + return -EINVAL; /* disk_max_parts() is zero during initialization, ignore if so */ if (disk_max_parts(disk) && target > disk_max_parts(disk)) @@ -1098,6 +1106,7 @@ { struct gendisk *disk = dev_to_disk(dev); + blk_free_devt(dev->devt); disk_release_events(disk); kfree(disk->random); disk_replace_part_tbl(disk, NULL); --- linux-3.13.0.orig/block/partition-generic.c +++ linux-3.13.0/block/partition-generic.c @@ -211,6 +211,7 @@ static void part_release(struct device *dev) { struct hd_struct *p = dev_to_part(dev); + blk_free_devt(dev->devt); free_part_stats(p); free_part_info(p); kfree(p); @@ -253,7 +254,6 @@ rcu_assign_pointer(ptbl->last_lookup, NULL); kobject_put(part->holder_dir); device_del(part_to_dev(part)); - blk_free_devt(part_devt(part)); hd_struct_put(part); } --- linux-3.13.0.orig/block/partitions/mac.c +++ linux-3.13.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-3.13.0.orig/block/scsi_ioctl.c +++ linux-3.13.0/block/scsi_ioctl.c @@ -28,6 +28,9 @@ #include #include #include +#include +#include +#include #include #include @@ -487,7 +490,7 @@ if (bytes && blk_rq_map_kern(q, rq, buffer, bytes, __GFP_WAIT)) { err = DRIVER_ERROR << 24; - goto out; + goto error; } memset(sense, 0, sizeof(sense)); @@ -497,7 +500,6 @@ blk_execute_rq(q, disk, rq, 0); -out: err = rq->errors & 0xff; /* only 8 bit SCSI status */ if (err) { if (rq->sense_len && rq->sense) { @@ -692,8 +694,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-3.13.0.orig/crypto/842.c +++ linux-3.13.0/crypto/842.c @@ -180,3 +180,4 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("842 Compression Algorithm"); +MODULE_ALIAS_CRYPTO("842"); --- linux-3.13.0.orig/crypto/ablkcipher.c +++ linux-3.13.0/crypto/ablkcipher.c @@ -276,12 +276,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); if (err) @@ -695,7 +695,7 @@ err: if (err != -EAGAIN) break; - if (signal_pending(current)) { + if (fatal_signal_pending(current)) { err = -EINTR; break; } --- linux-3.13.0.orig/crypto/aes_generic.c +++ linux-3.13.0/crypto/aes_generic.c @@ -1474,4 +1474,5 @@ MODULE_DESCRIPTION("Rijndael (AES) Cipher Algorithm"); MODULE_LICENSE("Dual BSD/GPL"); -MODULE_ALIAS("aes"); +MODULE_ALIAS_CRYPTO("aes"); +MODULE_ALIAS_CRYPTO("aes-generic"); --- linux-3.13.0.orig/crypto/af_alg.c +++ linux-3.13.0/crypto/af_alg.c @@ -21,6 +21,7 @@ #include #include #include +#include struct alg_type_list { const struct af_alg_type *type; @@ -75,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; @@ -124,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) { struct sock *sk = sock->sk; @@ -131,6 +154,7 @@ struct sockaddr_alg *sa = (void *)uaddr; const struct af_alg_type *type; void *private; + int err; if (sock->state == SS_CONNECTED) return -EINVAL; @@ -156,16 +180,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, @@ -198,11 +228,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; @@ -227,6 +261,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); @@ -243,22 +278,32 @@ sock_init_data(newsock, sk2); sock_graft(sk2, newsock); + 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: @@ -447,6 +492,9 @@ { struct af_alg_completion *completion = req->data; + if (err == -EINPROGRESS) + return; + completion->err = err; complete(&completion->completion); } --- linux-3.13.0.orig/crypto/ahash.c +++ linux-3.13.0/crypto/ahash.c @@ -369,6 +369,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; @@ -381,8 +382,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) @@ -462,7 +465,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-3.13.0.orig/crypto/algapi.c +++ linux-3.13.0/crypto/algapi.c @@ -325,7 +325,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: @@ -495,8 +495,8 @@ struct crypto_template *crypto_lookup_template(const char *name) { - return try_then_request_module(__crypto_lookup_template(name), "%s", - name); + return try_then_request_module(__crypto_lookup_template(name), + "crypto-%s", name); } EXPORT_SYMBOL_GPL(crypto_lookup_template); --- linux-3.13.0.orig/crypto/algif_hash.c +++ linux-3.13.0/crypto/algif_hash.c @@ -51,7 +51,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; } @@ -131,6 +132,7 @@ } else { if (!ctx->more) { err = crypto_ahash_init(&ctx->req); + err = af_alg_wait_for_completion(err, &ctx->completion); if (err) goto unlock; } @@ -192,9 +194,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; @@ -205,7 +212,10 @@ sk2 = newsock->sk; ask2 = alg_sk(sk2); ctx2 = ask2->private; - ctx2->more = 1; + ctx2->more = more; + + if (!more) + return err; err = crypto_ahash_import(&ctx2->req, state); if (err) { --- linux-3.13.0.orig/crypto/algif_skcipher.c +++ linux-3.13.0/crypto/algif_skcipher.c @@ -441,13 +441,6 @@ char __user *from = iov->iov_base; while (seglen) { - sgl = list_first_entry(&ctx->tsgl, - struct skcipher_sg_list, list); - sg = sgl->sg; - - while (!sg->length) - sg++; - used = ctx->used; if (!used) { err = skcipher_wait_for_data(sk, flags); @@ -469,6 +462,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); --- linux-3.13.0.orig/crypto/ansi_cprng.c +++ linux-3.13.0/crypto/ansi_cprng.c @@ -476,4 +476,5 @@ MODULE_PARM_DESC(dbg, "Boolean to enable debugging (0/1 == off/on)"); module_init(prng_mod_init); module_exit(prng_mod_fini); -MODULE_ALIAS("stdrng"); +MODULE_ALIAS_CRYPTO("stdrng"); +MODULE_ALIAS_CRYPTO("ansi_cprng"); --- linux-3.13.0.orig/crypto/anubis.c +++ linux-3.13.0/crypto/anubis.c @@ -704,3 +704,4 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Anubis Cryptographic Algorithm"); +MODULE_ALIAS_CRYPTO("anubis"); --- linux-3.13.0.orig/crypto/api.c +++ linux-3.13.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; @@ -216,11 +216,11 @@ alg = crypto_alg_lookup(name, type, mask); if (!alg) { - request_module("%s", name); + request_module("crypto-%s", name); if (!((type ^ CRYPTO_ALG_NEED_FALLBACK) & mask & CRYPTO_ALG_NEED_FALLBACK)) - request_module("%s-all", name); + request_module("crypto-%s-all", name); alg = crypto_alg_lookup(name, type, mask); } @@ -435,7 +435,7 @@ err: if (err != -EAGAIN) break; - if (signal_pending(current)) { + if (fatal_signal_pending(current)) { err = -EINTR; break; } @@ -552,7 +552,7 @@ err: if (err != -EAGAIN) break; - if (signal_pending(current)) { + if (fatal_signal_pending(current)) { err = -EINTR; break; } --- linux-3.13.0.orig/crypto/arc4.c +++ linux-3.13.0/crypto/arc4.c @@ -166,3 +166,4 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("ARC4 Cipher Algorithm"); MODULE_AUTHOR("Jon Oberheide "); +MODULE_ALIAS_CRYPTO("arc4"); --- linux-3.13.0.orig/crypto/async_tx/async_memcpy.c +++ linux-3.13.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-3.13.0.orig/crypto/async_tx/async_pq.c +++ linux-3.13.0/crypto/async_tx/async_pq.c @@ -176,7 +176,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); if (unmap && (src_cnt <= dma_maxpq(device, 0) || @@ -294,7 +294,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-3.13.0.orig/crypto/async_tx/async_raid6_recov.c +++ linux-3.13.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-3.13.0.orig/crypto/async_tx/async_xor.c +++ linux-3.13.0/crypto/async_tx/async_xor.c @@ -78,8 +78,6 @@ tx = dma->device_prep_dma_xor(chan, dma_dest, src_list, xor_src_cnt, unmap->len, dma_flags); - src_list[0] = tmp; - if (unlikely(!tx)) async_tx_quiesce(&submit->depend_tx); @@ -92,6 +90,7 @@ xor_src_cnt, unmap->len, dma_flags); } + src_list[0] = tmp; dma_set_unmap(tx, unmap); async_tx_submit(chan, tx, submit); @@ -183,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; @@ -279,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-3.13.0.orig/crypto/authenc.c +++ linux-3.13.0/crypto/authenc.c @@ -721,3 +721,4 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Simple AEAD wrapper for IPsec"); +MODULE_ALIAS_CRYPTO("authenc"); --- linux-3.13.0.orig/crypto/authencesn.c +++ linux-3.13.0/crypto/authencesn.c @@ -814,3 +814,4 @@ MODULE_LICENSE("GPL"); MODULE_AUTHOR("Steffen Klassert "); MODULE_DESCRIPTION("AEAD wrapper for IPsec with extended sequence numbers"); +MODULE_ALIAS_CRYPTO("authencesn"); --- linux-3.13.0.orig/crypto/blkcipher.c +++ linux-3.13.0/crypto/blkcipher.c @@ -329,12 +329,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 & alignmask))) { int err = blkcipher_copy_iv(walk, tfm, alignmask); if (err) --- linux-3.13.0.orig/crypto/blowfish_generic.c +++ linux-3.13.0/crypto/blowfish_generic.c @@ -138,4 +138,5 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Blowfish Cipher Algorithm"); -MODULE_ALIAS("blowfish"); +MODULE_ALIAS_CRYPTO("blowfish"); +MODULE_ALIAS_CRYPTO("blowfish-generic"); --- linux-3.13.0.orig/crypto/camellia_generic.c +++ linux-3.13.0/crypto/camellia_generic.c @@ -1098,4 +1098,5 @@ MODULE_DESCRIPTION("Camellia Cipher Algorithm"); MODULE_LICENSE("GPL"); -MODULE_ALIAS("camellia"); +MODULE_ALIAS_CRYPTO("camellia"); +MODULE_ALIAS_CRYPTO("camellia-generic"); --- linux-3.13.0.orig/crypto/cast5_generic.c +++ linux-3.13.0/crypto/cast5_generic.c @@ -549,4 +549,5 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Cast5 Cipher Algorithm"); -MODULE_ALIAS("cast5"); +MODULE_ALIAS_CRYPTO("cast5"); +MODULE_ALIAS_CRYPTO("cast5-generic"); --- linux-3.13.0.orig/crypto/cast6_generic.c +++ linux-3.13.0/crypto/cast6_generic.c @@ -291,4 +291,5 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Cast6 Cipher Algorithm"); -MODULE_ALIAS("cast6"); +MODULE_ALIAS_CRYPTO("cast6"); +MODULE_ALIAS_CRYPTO("cast6-generic"); --- linux-3.13.0.orig/crypto/cbc.c +++ linux-3.13.0/crypto/cbc.c @@ -289,3 +289,4 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("CBC block cipher algorithm"); +MODULE_ALIAS_CRYPTO("cbc"); --- linux-3.13.0.orig/crypto/ccm.c +++ linux-3.13.0/crypto/ccm.c @@ -879,5 +879,6 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Counter with CBC MAC"); -MODULE_ALIAS("ccm_base"); -MODULE_ALIAS("rfc4309"); +MODULE_ALIAS_CRYPTO("ccm_base"); +MODULE_ALIAS_CRYPTO("rfc4309"); +MODULE_ALIAS_CRYPTO("ccm"); --- linux-3.13.0.orig/crypto/chainiv.c +++ linux-3.13.0/crypto/chainiv.c @@ -359,3 +359,4 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Chain IV Generator"); +MODULE_ALIAS_CRYPTO("chainiv"); --- linux-3.13.0.orig/crypto/cmac.c +++ linux-3.13.0/crypto/cmac.c @@ -313,3 +313,4 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("CMAC keyed hash algorithm"); +MODULE_ALIAS_CRYPTO("cmac"); --- linux-3.13.0.orig/crypto/crc32.c +++ linux-3.13.0/crypto/crc32.c @@ -156,3 +156,4 @@ MODULE_AUTHOR("Alexander Boyko "); MODULE_DESCRIPTION("CRC32 calculations wrapper for lib/crc32"); MODULE_LICENSE("GPL"); +MODULE_ALIAS_CRYPTO("crc32"); --- linux-3.13.0.orig/crypto/crc32c.c +++ linux-3.13.0/crypto/crc32c.c @@ -170,3 +170,4 @@ MODULE_AUTHOR("Clay Haapala "); MODULE_DESCRIPTION("CRC32c (Castagnoli) calculations wrapper for lib/crc32c"); MODULE_LICENSE("GPL"); +MODULE_ALIAS_CRYPTO("crc32c"); --- linux-3.13.0.orig/crypto/crct10dif_generic.c +++ linux-3.13.0/crypto/crct10dif_generic.c @@ -124,4 +124,5 @@ MODULE_AUTHOR("Tim Chen "); MODULE_DESCRIPTION("T10 DIF CRC calculation."); MODULE_LICENSE("GPL"); -MODULE_ALIAS("crct10dif"); +MODULE_ALIAS_CRYPTO("crct10dif"); +MODULE_ALIAS_CRYPTO("crct10dif-generic"); --- linux-3.13.0.orig/crypto/cryptd.c +++ linux-3.13.0/crypto/cryptd.c @@ -955,3 +955,4 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Software async crypto daemon"); +MODULE_ALIAS_CRYPTO("cryptd"); --- linux-3.13.0.orig/crypto/crypto_null.c +++ linux-3.13.0/crypto/crypto_null.c @@ -149,9 +149,9 @@ .coa_decompress = null_compress } } } }; -MODULE_ALIAS("compress_null"); -MODULE_ALIAS("digest_null"); -MODULE_ALIAS("cipher_null"); +MODULE_ALIAS_CRYPTO("compress_null"); +MODULE_ALIAS_CRYPTO("digest_null"); +MODULE_ALIAS_CRYPTO("cipher_null"); static int __init crypto_null_mod_init(void) { --- linux-3.13.0.orig/crypto/crypto_user.c +++ linux-3.13.0/crypto/crypto_user.c @@ -361,7 +361,7 @@ err = PTR_ERR(alg); if (err != -EAGAIN) break; - if (signal_pending(current)) { + if (fatal_signal_pending(current)) { err = -EINTR; break; } @@ -466,7 +466,7 @@ type -= CRYPTO_MSG_BASE; link = &crypto_dispatch[type]; - if (!capable(CAP_NET_ADMIN)) + if (!netlink_capable(skb, CAP_NET_ADMIN)) return -EPERM; if ((type == (CRYPTO_MSG_GETALG - CRYPTO_MSG_BASE) && @@ -477,6 +477,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; @@ -486,8 +487,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-3.13.0.orig/crypto/ctr.c +++ linux-3.13.0/crypto/ctr.c @@ -466,4 +466,5 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("CTR Counter block mode"); -MODULE_ALIAS("rfc3686"); +MODULE_ALIAS_CRYPTO("rfc3686"); +MODULE_ALIAS_CRYPTO("ctr"); --- linux-3.13.0.orig/crypto/cts.c +++ linux-3.13.0/crypto/cts.c @@ -350,3 +350,4 @@ MODULE_LICENSE("Dual BSD/GPL"); MODULE_DESCRIPTION("CTS-CBC CipherText Stealing for CBC"); +MODULE_ALIAS_CRYPTO("cts"); --- linux-3.13.0.orig/crypto/deflate.c +++ linux-3.13.0/crypto/deflate.c @@ -222,4 +222,4 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Deflate Compression Algorithm for IPCOMP"); MODULE_AUTHOR("James Morris "); - +MODULE_ALIAS_CRYPTO("deflate"); --- linux-3.13.0.orig/crypto/des_generic.c +++ linux-3.13.0/crypto/des_generic.c @@ -971,8 +971,6 @@ .cia_decrypt = des3_ede_decrypt } } } }; -MODULE_ALIAS("des3_ede"); - static int __init des_generic_mod_init(void) { return crypto_register_algs(des_algs, ARRAY_SIZE(des_algs)); @@ -989,4 +987,7 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("DES & Triple DES EDE Cipher Algorithms"); MODULE_AUTHOR("Dag Arne Osvik "); -MODULE_ALIAS("des"); +MODULE_ALIAS_CRYPTO("des"); +MODULE_ALIAS_CRYPTO("des-generic"); +MODULE_ALIAS_CRYPTO("des3_ede"); +MODULE_ALIAS_CRYPTO("des3_ede-generic"); --- linux-3.13.0.orig/crypto/ecb.c +++ linux-3.13.0/crypto/ecb.c @@ -185,3 +185,4 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("ECB block cipher algorithm"); +MODULE_ALIAS_CRYPTO("ecb"); --- linux-3.13.0.orig/crypto/eseqiv.c +++ linux-3.13.0/crypto/eseqiv.c @@ -267,3 +267,4 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Encrypted Sequence Number IV Generator"); +MODULE_ALIAS_CRYPTO("eseqiv"); --- linux-3.13.0.orig/crypto/fcrypt.c +++ linux-3.13.0/crypto/fcrypt.c @@ -420,3 +420,4 @@ MODULE_LICENSE("Dual BSD/GPL"); MODULE_DESCRIPTION("FCrypt Cipher Algorithm"); MODULE_AUTHOR("David Howells "); +MODULE_ALIAS_CRYPTO("fcrypt"); --- linux-3.13.0.orig/crypto/gcm.c +++ linux-3.13.0/crypto/gcm.c @@ -1441,6 +1441,7 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Galois/Counter Mode"); MODULE_AUTHOR("Mikko Herranen "); -MODULE_ALIAS("gcm_base"); -MODULE_ALIAS("rfc4106"); -MODULE_ALIAS("rfc4543"); +MODULE_ALIAS_CRYPTO("gcm_base"); +MODULE_ALIAS_CRYPTO("rfc4106"); +MODULE_ALIAS_CRYPTO("rfc4543"); +MODULE_ALIAS_CRYPTO("gcm"); --- linux-3.13.0.orig/crypto/ghash-generic.c +++ linux-3.13.0/crypto/ghash-generic.c @@ -172,4 +172,5 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("GHASH Message Digest Algorithm"); -MODULE_ALIAS("ghash"); +MODULE_ALIAS_CRYPTO("ghash"); +MODULE_ALIAS_CRYPTO("ghash-generic"); --- linux-3.13.0.orig/crypto/hmac.c +++ linux-3.13.0/crypto/hmac.c @@ -271,3 +271,4 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("HMAC hash algorithm"); +MODULE_ALIAS_CRYPTO("hmac"); --- linux-3.13.0.orig/crypto/khazad.c +++ linux-3.13.0/crypto/khazad.c @@ -880,3 +880,4 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Khazad Cryptographic Algorithm"); +MODULE_ALIAS_CRYPTO("khazad"); --- linux-3.13.0.orig/crypto/krng.c +++ linux-3.13.0/crypto/krng.c @@ -62,4 +62,5 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Kernel Random Number Generator"); -MODULE_ALIAS("stdrng"); +MODULE_ALIAS_CRYPTO("stdrng"); +MODULE_ALIAS_CRYPTO("krng"); --- linux-3.13.0.orig/crypto/lrw.c +++ linux-3.13.0/crypto/lrw.c @@ -400,3 +400,4 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("LRW block cipher mode"); +MODULE_ALIAS_CRYPTO("lrw"); --- linux-3.13.0.orig/crypto/lz4.c +++ linux-3.13.0/crypto/lz4.c @@ -104,3 +104,4 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("LZ4 Compression Algorithm"); +MODULE_ALIAS_CRYPTO("lz4"); --- linux-3.13.0.orig/crypto/lz4hc.c +++ linux-3.13.0/crypto/lz4hc.c @@ -104,3 +104,4 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("LZ4HC Compression Algorithm"); +MODULE_ALIAS_CRYPTO("lz4hc"); --- linux-3.13.0.orig/crypto/lzo.c +++ linux-3.13.0/crypto/lzo.c @@ -103,3 +103,4 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("LZO Compression Algorithm"); +MODULE_ALIAS_CRYPTO("lzo"); --- linux-3.13.0.orig/crypto/md4.c +++ linux-3.13.0/crypto/md4.c @@ -255,4 +255,4 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("MD4 Message Digest Algorithm"); - +MODULE_ALIAS_CRYPTO("md4"); --- linux-3.13.0.orig/crypto/md5.c +++ linux-3.13.0/crypto/md5.c @@ -168,3 +168,4 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("MD5 Message Digest Algorithm"); +MODULE_ALIAS_CRYPTO("md5"); --- linux-3.13.0.orig/crypto/michael_mic.c +++ linux-3.13.0/crypto/michael_mic.c @@ -184,3 +184,4 @@ MODULE_LICENSE("GPL v2"); MODULE_DESCRIPTION("Michael MIC"); MODULE_AUTHOR("Jouni Malinen "); +MODULE_ALIAS_CRYPTO("michael_mic"); --- linux-3.13.0.orig/crypto/pcbc.c +++ linux-3.13.0/crypto/pcbc.c @@ -295,3 +295,4 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("PCBC block cipher algorithm"); +MODULE_ALIAS_CRYPTO("pcbc"); --- linux-3.13.0.orig/crypto/pcrypt.c +++ linux-3.13.0/crypto/pcrypt.c @@ -565,3 +565,4 @@ MODULE_LICENSE("GPL"); MODULE_AUTHOR("Steffen Klassert "); MODULE_DESCRIPTION("Parallel crypto wrapper"); +MODULE_ALIAS_CRYPTO("pcrypt"); --- linux-3.13.0.orig/crypto/rmd128.c +++ linux-3.13.0/crypto/rmd128.c @@ -327,3 +327,4 @@ MODULE_LICENSE("GPL"); MODULE_AUTHOR("Adrian-Ken Rueegsegger "); MODULE_DESCRIPTION("RIPEMD-128 Message Digest"); +MODULE_ALIAS_CRYPTO("rmd128"); --- linux-3.13.0.orig/crypto/rmd160.c +++ linux-3.13.0/crypto/rmd160.c @@ -371,3 +371,4 @@ MODULE_LICENSE("GPL"); MODULE_AUTHOR("Adrian-Ken Rueegsegger "); MODULE_DESCRIPTION("RIPEMD-160 Message Digest"); +MODULE_ALIAS_CRYPTO("rmd160"); --- linux-3.13.0.orig/crypto/rmd256.c +++ linux-3.13.0/crypto/rmd256.c @@ -346,3 +346,4 @@ MODULE_LICENSE("GPL"); MODULE_AUTHOR("Adrian-Ken Rueegsegger "); MODULE_DESCRIPTION("RIPEMD-256 Message Digest"); +MODULE_ALIAS_CRYPTO("rmd256"); --- linux-3.13.0.orig/crypto/rmd320.c +++ linux-3.13.0/crypto/rmd320.c @@ -395,3 +395,4 @@ MODULE_LICENSE("GPL"); MODULE_AUTHOR("Adrian-Ken Rueegsegger "); MODULE_DESCRIPTION("RIPEMD-320 Message Digest"); +MODULE_ALIAS_CRYPTO("rmd320"); --- linux-3.13.0.orig/crypto/salsa20_generic.c +++ linux-3.13.0/crypto/salsa20_generic.c @@ -248,4 +248,5 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION ("Salsa20 stream cipher algorithm"); -MODULE_ALIAS("salsa20"); +MODULE_ALIAS_CRYPTO("salsa20"); +MODULE_ALIAS_CRYPTO("salsa20-generic"); --- linux-3.13.0.orig/crypto/seed.c +++ linux-3.13.0/crypto/seed.c @@ -476,3 +476,4 @@ MODULE_DESCRIPTION("SEED Cipher Algorithm"); MODULE_LICENSE("GPL"); MODULE_AUTHOR("Hye-Shik Chang , Kim Hyun "); +MODULE_ALIAS_CRYPTO("seed"); --- linux-3.13.0.orig/crypto/seqiv.c +++ linux-3.13.0/crypto/seqiv.c @@ -362,3 +362,4 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Sequence Number IV Generator"); +MODULE_ALIAS_CRYPTO("seqiv"); --- linux-3.13.0.orig/crypto/serpent_generic.c +++ linux-3.13.0/crypto/serpent_generic.c @@ -665,5 +665,6 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Serpent and tnepres (kerneli compatible serpent reversed) Cipher Algorithm"); MODULE_AUTHOR("Dag Arne Osvik "); -MODULE_ALIAS("tnepres"); -MODULE_ALIAS("serpent"); +MODULE_ALIAS_CRYPTO("tnepres"); +MODULE_ALIAS_CRYPTO("serpent"); +MODULE_ALIAS_CRYPTO("serpent-generic"); --- linux-3.13.0.orig/crypto/sha1_generic.c +++ linux-3.13.0/crypto/sha1_generic.c @@ -153,4 +153,5 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("SHA1 Secure Hash Algorithm"); -MODULE_ALIAS("sha1"); +MODULE_ALIAS_CRYPTO("sha1"); +MODULE_ALIAS_CRYPTO("sha1-generic"); --- linux-3.13.0.orig/crypto/sha256_generic.c +++ linux-3.13.0/crypto/sha256_generic.c @@ -384,5 +384,7 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("SHA-224 and SHA-256 Secure Hash Algorithm"); -MODULE_ALIAS("sha224"); -MODULE_ALIAS("sha256"); +MODULE_ALIAS_CRYPTO("sha224"); +MODULE_ALIAS_CRYPTO("sha224-generic"); +MODULE_ALIAS_CRYPTO("sha256"); +MODULE_ALIAS_CRYPTO("sha256-generic"); --- linux-3.13.0.orig/crypto/sha512_generic.c +++ linux-3.13.0/crypto/sha512_generic.c @@ -287,5 +287,7 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("SHA-512 and SHA-384 Secure Hash Algorithms"); -MODULE_ALIAS("sha384"); -MODULE_ALIAS("sha512"); +MODULE_ALIAS_CRYPTO("sha384"); +MODULE_ALIAS_CRYPTO("sha384-generic"); +MODULE_ALIAS_CRYPTO("sha512"); +MODULE_ALIAS_CRYPTO("sha512-generic"); --- linux-3.13.0.orig/crypto/shash.c +++ linux-3.13.0/crypto/shash.c @@ -353,9 +353,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-3.13.0.orig/crypto/tea.c +++ linux-3.13.0/crypto/tea.c @@ -270,8 +270,9 @@ crypto_unregister_algs(tea_algs, ARRAY_SIZE(tea_algs)); } -MODULE_ALIAS("xtea"); -MODULE_ALIAS("xeta"); +MODULE_ALIAS_CRYPTO("tea"); +MODULE_ALIAS_CRYPTO("xtea"); +MODULE_ALIAS_CRYPTO("xeta"); module_init(tea_mod_init); module_exit(tea_mod_fini); --- linux-3.13.0.orig/crypto/tgr192.c +++ linux-3.13.0/crypto/tgr192.c @@ -676,8 +676,9 @@ crypto_unregister_shashes(tgr_algs, ARRAY_SIZE(tgr_algs)); } -MODULE_ALIAS("tgr160"); -MODULE_ALIAS("tgr128"); +MODULE_ALIAS_CRYPTO("tgr192"); +MODULE_ALIAS_CRYPTO("tgr160"); +MODULE_ALIAS_CRYPTO("tgr128"); module_init(tgr192_mod_init); module_exit(tgr192_mod_fini); --- linux-3.13.0.orig/crypto/twofish_generic.c +++ linux-3.13.0/crypto/twofish_generic.c @@ -211,4 +211,5 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION ("Twofish Cipher Algorithm"); -MODULE_ALIAS("twofish"); +MODULE_ALIAS_CRYPTO("twofish"); +MODULE_ALIAS_CRYPTO("twofish-generic"); --- linux-3.13.0.orig/crypto/vmac.c +++ linux-3.13.0/crypto/vmac.c @@ -713,3 +713,4 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("VMAC hash algorithm"); +MODULE_ALIAS_CRYPTO("vmac"); --- linux-3.13.0.orig/crypto/wp512.c +++ linux-3.13.0/crypto/wp512.c @@ -1167,8 +1167,9 @@ crypto_unregister_shashes(wp_algs, ARRAY_SIZE(wp_algs)); } -MODULE_ALIAS("wp384"); -MODULE_ALIAS("wp256"); +MODULE_ALIAS_CRYPTO("wp512"); +MODULE_ALIAS_CRYPTO("wp384"); +MODULE_ALIAS_CRYPTO("wp256"); module_init(wp512_mod_init); module_exit(wp512_mod_fini); --- linux-3.13.0.orig/crypto/xcbc.c +++ linux-3.13.0/crypto/xcbc.c @@ -286,3 +286,4 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("XCBC keyed hash algorithm"); +MODULE_ALIAS_CRYPTO("xcbc"); --- linux-3.13.0.orig/crypto/xts.c +++ linux-3.13.0/crypto/xts.c @@ -362,3 +362,4 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("XTS block cipher mode"); +MODULE_ALIAS_CRYPTO("xts"); --- linux-3.13.0.orig/crypto/zlib.c +++ linux-3.13.0/crypto/zlib.c @@ -378,3 +378,4 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Zlib Compression Algorithm"); MODULE_AUTHOR("Sony Corporation"); +MODULE_ALIAS_CRYPTO("zlib"); --- linux-3.13.0.orig/debian.master/NOTES +++ linux-3.13.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-3.13.0.orig/debian.master/abi/3.13.0-98.145/abiname +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/abiname @@ -0,0 +1 @@ +98 --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/amd64/generic +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/amd64/generic @@ -0,0 +1,17487 @@ +EXPORT_SYMBOL arch/x86/kvm/kvm 0x24973e0a kvm_read_guest_atomic +EXPORT_SYMBOL arch/x86/kvm/kvm 0x37d9de08 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/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/acpi/video 0x7a45377b acpi_video_unregister +EXPORT_SYMBOL drivers/acpi/video 0x8826c13b acpi_video_register +EXPORT_SYMBOL drivers/acpi/video 0xf20c5a9e acpi_video_get_edid +EXPORT_SYMBOL drivers/atm/suni 0x8cc0c66d suni_init +EXPORT_SYMBOL drivers/atm/uPD98402 0xf554778b uPD98402_init +EXPORT_SYMBOL drivers/bcma/bcma 0x35a8681a 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 0x03a8ca63 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x1c89b698 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x20030a5f pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0x22b469cd pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0x6855032b pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0x798fbeee pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x7e3a393f pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xa7acd1e4 pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0xaa425cb7 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xb65c6a41 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0xbf4a1597 pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0xe65ed52e paride_unregister +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/dma/dw/dw_dmac_core 0x05ad8f1f dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x2155c32f dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x410b730d dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x45fa616e dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x534ce94e dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x8943200e dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/ioat/ioatdma 0x8732ea08 ioat_dma_setup_interrupts +EXPORT_SYMBOL drivers/edac/edac_core 0x59390fa9 edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x02437fa4 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04d0f641 fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0f7d6af8 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2177253d fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x336e2018 fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3493d872 fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0x37bfa272 fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x46c85281 fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x62b64904 fw_iso_buffer_init +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 0x680f5403 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0x6c3a2e2d fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0x70b31cb2 fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7fca07cb fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x83346d6d fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0x841e72e8 fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x874a933f fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x888164be fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8db88c53 fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa1276de9 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xaa9fe430 fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb9032d0d fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd20130bd fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd3b3d2e3 fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd4923426 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd52c52da fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd88bf288 fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf1d67247 fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf61646c8 fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firmware/dcdbas 0xa75079d6 dcdbas_smi_request +EXPORT_SYMBOL drivers/fmc/fmc 0x208ca412 fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0x515868e6 fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x66d6d53c fmc_driver_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x89ba34fc fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0x8cba4f70 fmc_show_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xca6cc31f fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0xdf7a55f0 fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xe7a0e638 fmc_find_sdb_device +EXPORT_SYMBOL drivers/fmc/fmc 0xeb8df9fc fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0xedf6ecd5 fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0xfa159d09 fmc_free_sdb_tree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00025916 drm_mode_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00667d8a drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x013fbb17 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02288cd8 drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x026c0d6b drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x036cfc69 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x05b8ab66 drm_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x06297b58 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07b002b1 drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0817abdb drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b04e781 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b243628 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0bed9c29 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0cac105f drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e24a89c drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f6b17aa drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f836437 drm_agp_free +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 0x128a3329 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12c6276a drm_buffer_read_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x142b8b35 drm_buffer_copy_from_user +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1528c54c drm_platform_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x158424b4 drm_dev_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x17700b59 drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x189f6401 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18f64542 drm_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x197cb4f8 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19e44324 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1c671bf2 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d156fd7 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1ece3b51 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f4181b4 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2071c5a8 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0x208907be drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20b37c60 drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0x216066da drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21aaedc9 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22e78a96 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23a9d6b2 drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23ea3d1e drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x259c552f drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25e17b2e drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26ace74a drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x280f1d97 drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28efedc1 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a942ab2 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2c07c04e drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ccc5a65 drm_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d80be4d drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x352c8c31 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36f91ef3 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38133bf8 drm_vblank_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 0x3ae7b2d0 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c6916c2 drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c6f8337 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d4b8108 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x407afc89 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x40e804ec drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41523fe1 drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x424c7b3a drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x426372d9 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x429fce5f drm_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43384bd9 drm_buffer_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44cac12d drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4556ce2c drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x498dcb5e drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49b6073e drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49fabf0d drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b44fad9 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b6c7e65 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c289ff8 drm_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4d0e572c drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4d27f384 drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4db888d9 drm_connector_init +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 0x522b0c13 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x52bf6aa7 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5375151d drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54065ef5 drm_get_last_vbltimestamp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x55fc95d7 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56c6bdf5 drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x575ad522 drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57eac661 drm_core_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58e243e0 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c52ce87 drm_compat_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d7318dc drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e6027b0 drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e6bd672 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6090be61 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61a3ae24 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64b55073 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x653650f2 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65b3882b drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65fde338 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66803841 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66e0d879 drm_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67a5d2e5 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b6d7375 drm_timestamp_precision +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cc3c29e drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cee2e42 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d49236c drm_mode_connector_detach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6df0f7ec drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f08acc3 drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71d18830 drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x737f3652 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x743ef882 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x75d4c674 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79bb64b6 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a349eee drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a4e7297 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7d7f3c87 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7eeca34d drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x80f4dd5a drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x819133ff drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81ba930c drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81e773e4 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x827e6946 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x84168b35 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0x853bffe6 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x867bcb7d drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x86d2cd20 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87ddca7c drm_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8dfb019d drm_buffer_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8e106213 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f7df3a7 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9009da55 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x90537923 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x931d62cb drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x970ee30d drm_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9745d638 drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x97469e8f drm_bridge_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9758e0ff drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x97b29a3f drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x98949077 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x98acd275 drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d70fc2a drm_rnodes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9eccfe56 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9ef36ec2 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1f4e9e6 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa37ff562 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa3a02e8c drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4adbb17 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5dbd572 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa68be769 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa6902f65 drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa864e55b drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa9ba76ba drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaace01b3 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xab08eff4 drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac96f2be drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafb0cb6f drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafc669d0 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafd51394 drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb0b0cf77 drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb14131dd drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5540008 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb572a9f0 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6916e8a drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb82aa4e6 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb95beb55 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbbfb1337 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd14ac1f drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe001c53 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbeafcc47 drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf59857a drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf5cb464 drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc1be2e4d drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc239840b drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc23b6a6e drm_sysfs_connector_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4000f9f drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc414c422 drm_vblank_offdelay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc68cfed3 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca93ede3 drm_vma_offset_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb5736d8 drm_get_encoder_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcc0d5a76 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcc95ee75 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce03ffa4 drm_core_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce1a2a54 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf92ab11 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf98de49 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcfcbbbca drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd0b7088d drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd0bc19b3 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd0df9771 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1f6c73a drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd283cd49 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd357eeae drm_get_connector_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd47e4a5d drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd55aea8d drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd72c5a44 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda0ee689 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde936d21 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0be25c5 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0cf3de0 drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe224a84a drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2789190 drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2ef97e4 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe31d9a31 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe3690481 drm_bridge_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe39dc5b2 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe465935d drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe4fc4809 drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5ef0273 drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6f46e6e drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb1ad281 drm_core_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xecb1a63a drm_prime_destroy_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xecc6458a drm_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0xecf9576a drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef96f7e9 drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xefaa5a91 drm_sysfs_connector_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xefdf9b69 drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf08d712a drm_mode_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2a76be9 drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2b89086 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf310c7f5 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf33a0d40 drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf441ced8 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf446a0e2 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7cbf0ae drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf86215a2 drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8a8dd30 drm_global_mutex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf92033d9 drm_core_reclaim_buffers +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf96eb81c drm_prime_init_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa89cf41 drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb497216 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb878fd7 drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfce93d63 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd063935 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe4a68c7 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfea8855d drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffe5d45e drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0252834a drm_crtc_helper_set_config +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 0x0ff80210 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2075c860 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x294766f9 drm_dp_aux_unregister_i2c_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2e95dfdc drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2ece4913 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x41721d19 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4a1e0116 drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4c8dd8d1 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x550351a8 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5f4eeefd drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x612fc2f6 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x624bd159 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x634945b0 drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x64949eb6 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711ac230 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7588cbca drm_dp_aux_register_i2c_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7f0bf215 i2c_dp_aux_add_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x90f464db drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x98f52f02 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x98feb891 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9ac0e7e8 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9d8d1ae7 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa2998f93 drm_fb_helper_restore_fbdev_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa42c5dd2 drm_fb_helper_blank +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 0xbd6e8889 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbdb03cfb drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xca08895d drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xca78d84b drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xce465009 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xce70680a drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd1bf04f7 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd3c5f500 drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd7b12472 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd7ca0e0c drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdbde5bab drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe6040e7b drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe69f2bbc drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe9d25255 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf89cc380 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf8b28926 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xffb4d940 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x767bd34f drm_usb_exit +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x89a712ff drm_get_usb_dev +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0xee3891f7 drm_usb_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x04531570 ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x056ea077 ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x089449db ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0a37710d ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0de67911 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0fd20d34 ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x15bc95da ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x18a982dc ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1c9d83d6 ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1dbcd4fd ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1e64f704 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2105e18d ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x21b3b6c2 ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x284f19d0 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x292ae1b8 ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2cf4d2c5 ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x32753458 ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x327bcdc7 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3b3b7e1f ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x46b9a34c ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x47ea7391 ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4bff849f ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4cc77082 ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4e8dd264 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4ee05ebc ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x506ae74a ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x564e1aee ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5f234ed2 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5fe6b3d3 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6052860c ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6210557f ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x66bb870d ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6b797c25 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x718a56bb ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x770fb1b8 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7810a91f ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8116864e ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x83b53137 ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8568be30 ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x880a15ad ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x897b254a ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x90822bc0 ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x919d49f8 ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x93f5b603 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9561d4cf ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9d3eab45 ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xadfc672b ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaf637d45 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb0a5a0b9 ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb11eba46 ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb80f7b45 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbcdc97bf ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc4b1bf57 ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc4d4618d ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcb80f4e5 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcc1a1226 ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcc2f6970 ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcc8b7a49 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 0xd70ad004 ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd77a3db1 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xda1f7ead ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe6a0a589 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe87dc3b3 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf0caed2f ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf120e6ab ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf24c2398 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf28bbf6d ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf83c269d ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfb8109dc ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/hv/hv_vmbus 0x73eed3de vmbus_recvpacket +EXPORT_SYMBOL drivers/hv/hv_vmbus 0xe2ffc138 vmbus_sendpacket_ctl +EXPORT_SYMBOL drivers/hv/hv_vmbus 0xe6cc1807 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 0x34257f35 sch56xx_watchdog_unregister +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xe3062fb1 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 0x4671bf61 i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x64d23093 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xd7c70bec i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x78f0063b i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xe81e71c9 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0xec98bf7e amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x8330a4bf st_accel_common_remove +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xe5dbea63 st_accel_common_probe +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x30c03b33 hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x32b13ada hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x7e830768 hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x96290197 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xf993a3f8 hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x35e2b61b hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x96bfb826 hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x0121af55 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x051df9cd st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x053ab43e st_sensors_sysfs_get_sampling_frequency +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x074d7047 st_sensors_trigger_handler +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x123ee4dc st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x4027b66f st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x474172e8 st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x52ed570e st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x5caaa466 st_sensors_sysfs_set_sampling_frequency +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x6e48cfa4 st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x6f3112b8 st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x8b78abe1 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x9e636ea6 st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb98ab036 st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xcb52c9ca st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xe5245b8f st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0xd63a72bb st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0x469ce06e st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x46cc382a st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xf9aec00a st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x0eef927d adis_enable_irq +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xe56af44f adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/industrialio 0x072f0a46 iio_buffer_write_length +EXPORT_SYMBOL drivers/iio/industrialio 0x08c8e4fe iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x1f790942 iio_buffer_show_enable +EXPORT_SYMBOL drivers/iio/industrialio 0x20f97516 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x329247bd iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x3a525cb1 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x3d8f3d60 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x531f3667 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x56a3d33e iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x573dd59d iio_buffer_store_enable +EXPORT_SYMBOL drivers/iio/industrialio 0x57a044ca iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x59b003e5 iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x66cd0d90 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x735ad604 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x7a320901 iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x820fa438 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x9e9495e0 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0xccfd194c iio_buffer_register +EXPORT_SYMBOL drivers/iio/industrialio 0xcdc405ee iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xdaecc180 iio_buffer_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe47797df iio_buffer_read_length +EXPORT_SYMBOL drivers/iio/industrialio 0xe91bf141 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0xe9cb0567 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0xc0f34e30 iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0xd42fa21e iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x647133d4 iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xfc6d0727 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x22a23e81 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xd07dcbf3 st_magn_common_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x9e27a588 st_press_common_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xffe9cad4 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 0x2107de5f rdma_addr_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x273f4cca rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x446fd7c9 rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x6f6ee97c rdma_addr_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xd7b874cc rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xf19ab26c rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0372d5ab ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0935ec63 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0d6599a1 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x2289d224 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x284c52cf ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x39f59ded ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x6b25aff3 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x9acc83de ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa3cb4d02 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb0383503 ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xbdb4846e ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd2e21584 ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf4ab2490 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf6ddaefe ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf6e5d9e1 ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xfb822066 cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xfc1a7213 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x06c82fcf mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x071760be ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0a8c4172 ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c6aa2a4 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1181f6d2 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x14247a42 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x14d9a6db ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x14f84918 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x171f99f1 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x17e93ace ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x211b9386 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x222093ab ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22f3cf93 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x23faaafa ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x25a0cf7b ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x283a6e96 rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x289aca15 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2cabcb7e ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x35007e72 ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x369fbff7 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x405d58ed ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x40f2cb01 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x42d8b30b ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x46343aac ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x49b6fa77 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4b6d0d51 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4c83d191 ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4f64a1e8 ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4fd0475d ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x543c4439 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5772d1ea ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5cc712ef ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x614dae33 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x64374317 ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x67b403af ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x69a6cd87 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6d8ea699 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e030e26 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6f9117d9 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x82b15112 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x85feb6b2 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x881498af ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x89ffd081 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8e90aab1 ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8fdc9b79 ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9011eb0e ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x90d51bbb ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x91cd1415 ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9c76fdb9 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9fa622c6 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa24ea9ad ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa2cc8de2 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa3f669a6 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa432baf6 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa50a14c8 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa9600376 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaa836458 ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xac217df9 rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbebb3eae ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbf696427 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc3e2e7ff ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcafb25f4 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcba186cb ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcc3332dd ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcd950543 ib_resolve_eth_l2_attrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfb09685 ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd27a810c ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd5c56d6b ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdd7238f3 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdee8576d ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe4ab913b ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeaf14aea ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xec056e24 ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xec4d7581 ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xecc3e813 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xed1bc4f0 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xee516985 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeed7a859 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf44d90c4 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf6f15604 ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf73f89ea ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfd4a7409 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfdfa5d1f ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x0e5b4ef2 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2ed5395c ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x3ac84d13 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x3fe99bbd ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x42a5de1d ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x4c2074b3 ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x4c9476b5 ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x5fe75949 ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x679fa284 ib_register_mad_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 0x8be80eca ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x946d5d27 ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xb7ac7dea ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xd9fa4a15 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x22f07253 ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x2a52c733 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x2fd0e42f ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xa0447f45 ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xa583c8a2 ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xaad4b80c ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xbd112ce5 ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xc1955a3f ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xddc330e7 ib_sa_pack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xedc2aa15 ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xf5de95c6 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 0x1490c78a iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x33222d7e iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x4a050743 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x60e93cf0 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x84a97d17 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x8e81fa21 iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xa2721804 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xc9336052 iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x00f14efa rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x04bacf22 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x091092eb rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1c837f39 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4448d9be rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x47fc01d6 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4a627b5b rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4e797c74 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x500cbefa rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7c7dbaf6 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x820c0cc3 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8b6b37bf rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x94ef3508 rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9b6ecea2 rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb500ddb5 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb62eeb4b rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xbe480fd8 rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xce0edc9b rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xce1ac17e rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf3136642 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xffa77fd8 rdma_destroy_qp +EXPORT_SYMBOL drivers/input/gameport/gameport 0x05e949e0 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x237a5a0e __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x2cf52d21 gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x397157c4 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0xae767e1f gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0xb63f7bce gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xc27ebf17 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xde100e30 gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0xee84dfaa __gameport_register_port +EXPORT_SYMBOL drivers/input/input-polldev 0x55adc806 input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x5a92f0ee input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x9316beb6 input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xb08209ac input_allocate_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0xfbb741a1 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x40626433 ad714x_remove +EXPORT_SYMBOL drivers/input/misc/ad714x 0xc39cc596 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xdf8f6e68 ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0xe66cea57 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x310700ce 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 0x50545c46 sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0x5bb085ce sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0x768bc02b sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xb59d4fd9 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xdecacfcb sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0xe4497b52 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x92f900c2 ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xe7a9548e ad7879_pm_ops +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x3bca3969 amd_iommu_free_device +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x49d774ff amd_iommu_bind_pasid +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x7412f541 amd_iommu_set_invalidate_ctx_cb +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x7de572bd amd_iommu_init_device +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0xb20c74cb amd_iommu_set_invalid_ppr_cb +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0xb757bc33 amd_iommu_unbind_pasid +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2a5e9644 attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2b8eab1f capilib_free_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2baa6586 capilib_new_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x3a0eabdb capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x45b12eb9 capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x47d3fc51 capi_info2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x491625bd capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x5cd6d909 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 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 0x88ffc833 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f699913 capilib_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x92510e09 capi20_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 0xaf6524ca capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xcbe4060e detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xcf4b6e1a capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xed061606 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xfd552f7a capi_message2str +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x0b64a8c4 b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x0b7c352d b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x350efd14 b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x3ea2adb1 b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x605cbc94 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x80db8ac8 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x80db9b7c b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x91becbda b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x9d05a6cd b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x9e073a9e b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc6f7d308 avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xd62f993b b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xd6481988 b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xed951754 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xf5b10316 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x22f50d3c b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x523b2813 b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x5bafa9f9 b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x6050a86e b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x665b3e20 b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xaf4b5996 b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xcf74447b b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xe039efdc b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xea565af3 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 0x146e319d mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x3715a08f mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xa085bb56 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xf6795889 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xa17c5d71 mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xdb439025 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 0x7963e7ba hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x7f29ce36 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xe227344e FsmRestartTimer +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 0xff2db2cf FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x45147c29 isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x722537b8 isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x8676a9ae isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xf0234d18 isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xf05edc0d isacsx_setup +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x3fdb6379 register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x855b61a1 isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xc9df7d39 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 0x0bfdf007 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0ef4215c bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2319b52f mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x28524680 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2c7cb1da mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2f0116f4 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x54451388 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5b52e61d mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x614ede30 mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x66b13de4 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x709425ee mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x732d0ed6 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7774d3a0 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7cb3739a create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x87c0d5b1 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x930988f5 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x96309324 mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x994f6140 bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa3120aa6 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc66856da recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xcfb29628 dchannel_senddata +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 0xd91b9a30 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xdbf3169e recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xdd4b97eb mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe87943cf mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf926f223 mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xfb6d2f7d mISDN_initbchannel +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 0x26c40576 closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0x4ade15bb __closure_lock +EXPORT_SYMBOL drivers/md/bcache/bcache 0x56cffade closure_trylock +EXPORT_SYMBOL drivers/md/bcache/bcache 0x69038caf closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0x9d2f69e4 closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0xa58ef846 closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe3c17af1 __closure_wake_up +EXPORT_SYMBOL drivers/md/dm-log 0x1b13a5ad dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0x9ef12e3a dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0xe5a9e810 dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0xed9cb11c dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x079c0086 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0x1d007254 dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0x412d107d dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x552875f0 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x7d964d08 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x83c9ba4c dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/raid456 0x3e8fd30f raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x247c11d9 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x2c6f7fa5 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x498c6926 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x5b2ab32a flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x5d51fe6f flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x9937e5ed flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x9a9591df flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x9b50f382 flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xa8cb7156 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xc4954e72 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xe790a936 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xe926eb0e flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xfbc4b0dd flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/btcx-risc 0x3838416d btcx_riscmem_alloc +EXPORT_SYMBOL drivers/media/common/btcx-risc 0x495e4b0c btcx_calc_skips +EXPORT_SYMBOL drivers/media/common/btcx-risc 0x692b9873 btcx_riscmem_free +EXPORT_SYMBOL drivers/media/common/btcx-risc 0xad2fe38b btcx_sort_clips +EXPORT_SYMBOL drivers/media/common/btcx-risc 0xc368f8e6 btcx_align +EXPORT_SYMBOL drivers/media/common/btcx-risc 0xcda0ded2 btcx_screen_clips +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 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x5b88faf6 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x6aee1f49 cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0xaf817cf3 cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0xf9cba408 cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0xfcf60bd0 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0x9e0899e2 cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x996ef1d1 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/common/tveeprom 0x9dbd2871 tveeprom_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0c651bb2 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0eee391b dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x12a105b7 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x142a77c2 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x16f8f5db dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x17523ce7 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1aa9a106 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2e94bb12 dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x32552acd dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3286de1a dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x398aab01 dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3bb5d4e1 dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5677f1cd dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5de82144 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x64d6d7a9 dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x695508e8 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x71fe0423 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x731d682c dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7472f300 dvb_frontend_reinitialise +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 0x887caf4f dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8d0df2a1 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8d890442 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x96ee9b20 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa2a65e70 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac33e8b5 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xace1920e dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc63ec951 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc8dfbe8e dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xca4965f1 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd03c012d dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd68a099e timeval_usec_diff +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd9a38a85 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdc0b7b17 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe15697bd dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe3abf2b4 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xefcef46b dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf32ababb dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf93d9661 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfa4b95e1 dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-frontends/a8293 0x26d38361 a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0x5d9aa5b3 af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9033 0x61a02b44 af9033_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x2e9bcd97 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x324c74c0 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x5901c29c au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x6d2b5e82 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x79218593 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x9a7e45de au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xc0b300d1 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xc18d15c2 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xd73fc1a6 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xde0cc6f2 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0xff7e3d4c au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0x1b68853b bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0xff786d7b cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0xa8b16a4a cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0xbb00d095 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x0807bdb2 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x81e8bc15 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0x5b924e3b cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x4655b094 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xcd8180a3 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0xf4586799 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x03308b1c dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x1e1bd96c dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x6bf405c5 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x7a3d40f9 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xeeca5490 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x088b6448 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x13d5d2ad dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x19a60682 dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x261b2e60 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x2d859d49 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x4c48f17e dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x4dddc131 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x62026363 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x6e0c4436 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x95b395af dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x9e6af3ad dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xa0de77c3 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xa5c660c3 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb0888bb8 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd199dc40 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x1f0ee6b2 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x195f87fe dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x415285a6 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x7c0bf956 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x89dddd3a dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xa5ed3455 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xc6cc2153 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x28a8f4c2 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x2cb2adc2 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x4eea89b1 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x9bbe737f dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x1518fba4 dib7000p_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x168dd458 dib7090_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x225bd68e dib7000p_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x2879a53a dib7090_get_adc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x535c6864 dib7000p_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x6307654a dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x7b5ed8d0 dib7000pc_detection +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x9050157e dib7090_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xa4639985 dib7000p_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xa5c2b98e dib7000p_set_agc1_min +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xaec408d4 dib7000p_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xb1c08b5b dib7000p_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xbe464bef dib7000p_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xc1f63466 dib7000p_update_pll +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xef38d4ee dib7000p_get_agc_values +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xf0ced9b0 dib7090_slave_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x0c37737b dib8000_get_adc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x0dbdb160 dib8000_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x125ab8dc dib8000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x2018314b dib8096p_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x2aaf69a5 dib8000_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x3471a91c dib8000_remove_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x374543a1 dib8090p_get_dc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x3d46f937 dib8000_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x5dbbf258 dib8000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x784a55ab dib8000_pwm_agc_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x812f48e2 dib8000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x822cf868 dib8000_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x8b8b87bd dib8000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xa29f62f7 dib8000_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xac8a23cb dib8096p_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xbbfdfc82 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xc0c8563f dib8000_update_pll +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xd156aead dib8000_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xe944369e dib8000_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x08030033 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x0e84b2d6 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xa0714523 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad2dd0c3 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xb37372c6 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x48b7d4cb drxd_config_i2c +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0xbf7b5b28 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0xd0ca703c drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0xc0ab44e5 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0x0cad4d3f dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0xf006e0fc ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x4d8dde3b isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x41ae6b41 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0xd7a67cd2 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/it913x-fe 0x4c4d5d22 it913x_fe_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0x1a3a3e30 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0xeca36f22 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0xdd414d65 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0xb9ffcd60 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0x5036eac4 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0x3ff3a42b lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x85cee945 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x7ec0ee93 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xbbb9c1ec lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0x0200d5f8 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0x1ce7c568 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0x87f60688 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0x3590e767 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x27257511 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0x4e4be72c mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x1c2aff02 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0xbe6374b4 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0x9d5013e5 or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0x0bb182c6 or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2830 0x7c9de53c rtl2830_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2830 0xd46d9d85 rtl2830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2832 0x11a63072 rtl2832_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0x5f0765c3 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x1d3027a6 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x1429eb91 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x5e378921 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0x8f09370f s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0xcddbf8a4 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0x86a1ccbc sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0x1e3d3567 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0x81bf2100 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0x461f0e84 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x15c5aeb0 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0xb370594c stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0x8aa43f26 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0xad866d55 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x51465fb1 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x89857f8c stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0xf341ee5c stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x42762a69 stv090x_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0xc8089742 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0xb801627f stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0xd6326593 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0xd94bef2d tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0xbdf8e21f tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0xe65ea48c tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x2443cb5e tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xf42f584a tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0xe0907312 tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0xf492fd42 tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0x2997a697 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0xfe625a46 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0xb3df0ff6 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0xc5e5c315 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0x79059bd7 ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0xdc0e85c9 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0xaea9278d ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0x1f778320 ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0x69a58c64 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0x27a591bd zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x9ef384f3 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x04fc4aa2 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x0effe9da flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x1f60ae41 flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x78c9eee5 flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xad84cb57 flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xd128fed9 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xe74eee02 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x25dda94e bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x34c9e5c2 bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x41b40744 bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x97883fda bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x2f84ef1f bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x40b750f5 bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x410a7445 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/dst 0x1d94cca3 dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x2089b19a dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x3c4dd3c9 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x43f51371 dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x51b968b4 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x5a15a9ad dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xb2a9b881 rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xbb3009be dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xc18ba146 write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x36c38b41 dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x1e88c2dc cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2e9acfdd cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x5f4c9a6b cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xac97689d cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xded552b8 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x4030acfc altera_ci_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x908dadfc altera_hw_filt_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x9247b72f altera_hw_filt_release +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xda06dce5 altera_pid_feed_control +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 0x25be4f74 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x3fe71a45 cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x6b76b598 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x95c93d4c cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xcfaa1692 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xd3bc2a6e cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xd2d9e0f8 vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xf9d1cfbb vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x609d26f7 cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xb0061902 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xe919a2d4 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xed164a71 cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x489c75dd cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x4e0e7d4d cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x682b64da cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x749a1400 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x8a7fe9db cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x989d77f2 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x040a2712 cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x1fdb8dc5 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x20cbad7a cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2567fa02 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x29e9b612 cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x353f93a6 cx88_risc_stopper +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x400609e9 cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x60dadfd4 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x652ed1e9 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x68b9596c cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7069ab58 cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7bda3233 cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7df55eef cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x82202f9b cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x97f3cd6e cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb07401bc cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xba312a49 cx88_free_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xbc8580e8 cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xbe4bea3f cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xbea42bef cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xeba141f6 cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf874bfb6 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x0bbc52b7 ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x0ce4adc1 ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x191d8745 ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x24dac18b ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x28a5ac40 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x482b0e74 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x4f6d7f78 ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5458250a ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5c8dff4c ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5d5b9b8f ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x6a2aa0d6 ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x7f741d3a ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x908934c9 ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x908cd518 ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xac99a0b0 ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xc59c60c6 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xfc1aef50 ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x10214769 saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x125c960e saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x21c2117d saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x6059abdc saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x6a5e3845 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x73039031 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x7303bfdd saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x868db47a saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x87848ed4 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x98f88dae saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xdd94aa40 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xed4095d5 saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xf3a68ab6 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x25492476 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x689efc26 videocodec_unregister +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x886b8d0e videocodec_detach +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x8c95fc3e videocodec_attach +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0xd76bd998 videocodec_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x0270ec09 soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x07e9855b soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x0817c4f0 soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x432c6160 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x4b61f9a3 soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x884fccd0 soc_camera_unlock +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x9994d232 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xa3ba747f soc_camera_lock +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xf6589e7d 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 0x5f3e3558 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xa9546115 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xfe2c3a07 soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x0826dfc8 soc_camera_client_g_rect +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x44db050f soc_camera_client_s_crop +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x94fa3e20 soc_camera_calc_client_output +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0xa5ee946d soc_camera_client_scale +EXPORT_SYMBOL drivers/media/radio/tea575x 0x3132545b snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x65464d65 snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0x82f61bfb snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0xc2962a9e snd_tea575x_exit +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x0477ef76 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x06126bd1 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x419ceaa7 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x436a849e lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x493b5c34 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x8d4eb446 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x928480fe lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xe2f759f3 lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/rc-core 0x7eabe908 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/rc/rc-core 0xe1d074d7 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/tuners/e4000 0x144c7aeb e4000_attach +EXPORT_SYMBOL drivers/media/tuners/fc0011 0xad20379c fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0xf22b4095 fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x05e0dd93 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x68db0dd4 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xfe1c6e97 fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc2580 0xa1067e88 fc2580_attach +EXPORT_SYMBOL drivers/media/tuners/max2165 0x1adac5ed max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x9f3a266c mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x26602617 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0x0d234e53 mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0xa91a8bb8 mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0x04675f00 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0x44f5a82e qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18212 0x6106e0cf tda18212_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0x1e1f4363 tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tua9001 0x49dee83d tua9001_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 0xa3410c8a xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/tuner_it913x 0x0464442c it913x_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0xe7376038 xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0x31ebfa2a xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x618d3650 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x7bf3c9f5 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x2bc20a45 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x3e997842 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x60753967 dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x64cce949 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x776acc42 dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x78b6e405 dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x91a6e49b dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xbe072e8b dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xf8009765 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x15fe9352 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x78cafee1 usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xa4ccb238 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xa966dcfc dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xcc4612b9 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xcc87426c dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xfc6b780d 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 0x2733e41e 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 0x1ce2dec6 dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x2f3636bb dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x4097c498 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x420f2aaf dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x79c00f01 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x7b544df3 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x93fb70bb dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x96a105ba 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 0xbb04858b dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xd378043e dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xf3ff52f5 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x302a8417 em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x5f8bb802 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x17c3e59f gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x5a720127 gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x66980cde gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x96f9d72f gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xb09dcd50 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xb275ff27 gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xce284502 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xd7181fca gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x007d423d tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x481168bc tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xf8e0ed7f tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x1d73eaf5 ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x36b4eb3f ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x42c8e001 v4l2_ctrl_next +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x4adaf0f3 v4l2_ctrl_query_menu_valid_items +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x53c9394f v4l2_ctrl_query_menu +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x5f96a661 v4l2_ctrl_check +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x2b9bfa26 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x3a5417ab 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 0xb187114f v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x0ddcd8a0 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x2c94367b videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x66d4be7a videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x87edb000 videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x9f70762a videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xdab10fc7 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x5ebbda59 vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x004e42a2 v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0151d8f7 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x11c398c6 v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x126a572b v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1c9e0cfc v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x22e04113 v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2319b092 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x23dc28cc v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x277a7641 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2e24fd4b v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x30df7d5c v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x31f90654 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x331d7e2f v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x342d5afa video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3431ff56 v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3454125e video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x379ef2a3 video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x396ca98b v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3a501266 video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3ef65b1f video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x44876968 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4c1a998b v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4e36e05c v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x55d4c411 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5bd3f74e v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5d106383 v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6783ed06 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x69bda310 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6fd09111 v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7060bb98 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x777a9996 v4l2_ctrl_add_ctrl +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 0x824b4ca5 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x834b6960 v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x86c77a9e v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x89156af8 v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x89f51d8d video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8a55e7b4 v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8c196cae v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8f21a085 v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8f2f4548 __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x90dc8a19 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x921ce764 v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x921f4f64 v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9947386e v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa4e8fbb9 v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa923c3bb v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaaead355 v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaf87f319 v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb2399e82 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbac4a225 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbf5bc36e v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc12cf8f8 v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc679882a v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc7f4a788 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc84a0afb v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc9b438f1 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcd031337 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xda1e864c video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2636223 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe49737b6 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe6fce6f2 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xea52a466 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xee517259 v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf13ef31b v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf1fb16cb v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf835c7c0 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf8bb62d7 v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfc7d9531 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfce0ccf8 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/memstick/core/memstick 0x0f8c5e49 memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x1462328d memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x1b973a6a memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x37706137 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0x3b5b2039 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x50c1c1af memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x67d96438 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x96b6ee7f memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xbbc7c07f memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0xd8c139b4 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdc07e67e memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xf33ed0f5 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xf5608773 memstick_free_host +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x02b5b6f4 mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x05c79b47 mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0c100b28 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3a2d2d99 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3f62dc84 mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4efeffb1 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x52f34c8f mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x52f4314c mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5ad10c32 mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5ad8697e mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6d0dcee1 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6d186845 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6e0a801d mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7072d692 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7200fa66 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x720f782c mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8152326b mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x90b4b879 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x921ab30d mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9ed9b32d mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa185fba3 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa1cf43b1 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa274602c mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xbbc5e21c mpt_halt_firmware +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 0xd73c69bf mpt_verify_adapter +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 0xe4152a09 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe68729ba mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xee8556ba mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xfc694b2b mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0278e00a mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x07ef4d23 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x09db2635 mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x10e54038 mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x195b7301 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1a2318cd mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x20fcc24a mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x20ff723d mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x24fc18e5 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x32e09c0c mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x348f6607 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5f3f46c4 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6415e492 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6e3b6604 mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x862db3b7 mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x88a8886e mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8e2838f4 mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x99ee5ca6 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9b134433 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xbce06021 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc5d93817 mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd8ea196e mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xdc3f845f mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe48dcafb mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe94eb2bc mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf2080eeb mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfb6f6cd4 mptscsih_info +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x03e7d7f6 i2o_exec_lct_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x16d399dd i2o_cntxt_list_remove +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x21149cec i2o_parm_table_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x2a843bef i2o_dump_message +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x4001df15 i2o_event_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x6e435a6f i2o_status_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x7634c244 i2o_parm_field_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x78b0cdd0 i2o_driver_notify_device_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x7c7ee0fe i2o_driver_notify_device_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x87b3402c i2o_driver_unregister +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x895796a2 i2o_driver_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x9f2dbc05 i2o_msg_get_wait +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xa7f2393f i2o_find_iop +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xb17666a3 i2o_device_claim +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xb283ba39 i2o_msg_post_wait_mem +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xb4c00dcf i2o_controllers +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xb814cab6 i2o_cntxt_list_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xcbd7c073 i2o_parm_issue +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xcd374601 i2o_iop_find_device +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xdccdaaf7 i2o_driver_notify_controller_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xeb645194 i2o_cntxt_list_add +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xeba2b4da i2o_cntxt_list_get_ptr +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xf0aaaf6c i2o_device_claim_release +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xfce62d3c i2o_driver_notify_controller_remove_all +EXPORT_SYMBOL drivers/mfd/cros_ec 0x3e012cc4 cros_ec_prepare_tx +EXPORT_SYMBOL drivers/mfd/cros_ec 0x45ac71c5 cros_ec_suspend +EXPORT_SYMBOL drivers/mfd/cros_ec 0x4942f2da cros_ec_resume +EXPORT_SYMBOL drivers/mfd/cros_ec 0x6242f276 cros_ec_register +EXPORT_SYMBOL drivers/mfd/cros_ec 0xc5595388 cros_ec_remove +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xa89705da pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xe6734321 pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x0ac93580 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x0f6cdfd5 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x18b36e3c mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x52570044 mc13xxx_irq_request_nounmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x5a9386d9 mc13xxx_irq_ack +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x62e0a98a mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x761a065d mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x87a92c0a mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x881b56a1 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x8e219590 mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xad7b97cf mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb97b160a mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xf67b8716 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/tps6105x 0x40cb829a tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x74778c02 tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0xce507e80 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/misc/ad525x_dpot 0x44516e30 ad_dpot_probe +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xff1ad72a ad_dpot_remove +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x1746ab2d altera_init +EXPORT_SYMBOL drivers/misc/atmel-ssc 0x1d875b9b ssc_request +EXPORT_SYMBOL drivers/misc/atmel-ssc 0x846eda8e ssc_free +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x0e9755b9 pwm_channel_free +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x5a8b82f9 pwm_channel_handler +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x5d5c2951 pwm_clk_free +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x6a5e1f70 pwm_channel_alloc +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x73330c97 pwm_clk_alloc +EXPORT_SYMBOL drivers/misc/atmel_pwm 0xeb7f2c6f __pwm_channel_onoff +EXPORT_SYMBOL drivers/misc/c2port/core 0xa1b1750d c2port_device_unregister +EXPORT_SYMBOL drivers/misc/c2port/core 0xf8a93418 c2port_device_register +EXPORT_SYMBOL drivers/misc/ioc4 0x4bd90e97 ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0x4ccaf40d ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x2e8f58d7 tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x3e96a8f7 tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0x5936da45 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x7d812e7a tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x92380499 tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x981c0cd3 tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x98f3490a tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xa7b5c88d tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xa8c2ec46 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0xae55fb8b tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xb2c06fdd tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xc38fb103 tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0xcf8ae37d tifm_alloc_device +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0x6d0fd8c7 mmc_cleanup_queue +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x2eff827c cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x714c817f cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xe1c8317d cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x3d242bea register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x4d77d49f do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x5b00d44e map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x8fc98ade unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x3e132189 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0xb1528ec8 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x9405dcb1 simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x66749e35 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0xf06dc5ef mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/denali 0x12f6e58a denali_init +EXPORT_SYMBOL drivers/mtd/nand/denali 0xbf33cdf1 denali_remove +EXPORT_SYMBOL drivers/mtd/nand/nand 0x03d7aef6 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0x14527420 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0x27f9ecb1 nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x2d06509c nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x59fefdf0 nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0x635cb82a nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x2b984802 nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x484c2526 nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x48ee1a0d nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x1bff48b6 nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x54f54d9b nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x57a31e57 nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x06f13646 onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x2e38b158 onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x715bd333 onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x7a745bb7 flexonenand_region +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x02b08918 alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x190bf21d arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x2779f9f8 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x41cc0849 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x7bbddfec arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x82b328b7 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x92212bca arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xc7ca1cc1 arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xcb72d2aa arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xcd7fb01b arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x3f7421c7 com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x68c92d3b com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xffc87ad0 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x112d0d17 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x336b8933 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x34da8a39 ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x37c0979b ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x3becc979 ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x4591e0bc ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x6963cd63 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x90f77589 ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xe33271ca NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xece7432a ei_close +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x6e8dbeb2 cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x1a34b987 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x2ca23360 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x37a8a930 dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x39129122 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x43531f1d cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x4f2587e7 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x59e39ffc cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x65af91f4 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x7e6640a7 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa084ea9b cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa2f39283 cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa962c91a cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xc9b9a145 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xcdb8c2b6 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xeae9ef44 t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xfb41a9cc t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0b300d0d cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0c0bec9e cxgb4_disable_db_coalescing +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1005e960 cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x22d97408 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x23de9b01 cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2e0361c4 cxgb4_enable_db_coalescing +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x41286468 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4ca08716 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4d5f7673 cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4d737adb cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x58bf015a cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x655a3d23 cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x67408ceb cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x96e9bb80 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9cc2d3a0 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9df9bd2e cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9e9725a0 cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa1d43cee cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa97af734 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb1d5a517 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb4d23b49 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb5309794 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbe1b9bb6 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc22c37c9 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd1f74537 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe1577c05 cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe5512f50 cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe70744ce cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x0e712340 vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x42537056 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 0x59689b68 enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x9196d804 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x9c915621 vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x4124d09a be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x7f321408 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 0x05e46388 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2c7ceabd mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2d6c343d mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4106d0d5 mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x42fec85a mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4609c230 mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x48e7f17b mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x643393c6 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6caa7416 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x760b8e9b mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x86e8c337 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x92256895 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x924ba434 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x97d90f68 mlx4_set_stats_bitmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x991f96aa mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb750072a mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc294f793 mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xca05856b mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xca8d89ad mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcbb87cfa mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd191e1f8 mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd4d9e5d0 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd55fca25 mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe0e9bf32 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf0344084 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf9422ee1 mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x01443977 mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x030e2b1c mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x179bea8d mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1b88ab2d mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1ca37aee mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x39dbda8f mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x426299cf mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x53b077b7 mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x60da4d8e mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x63e084f4 mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6b77e2aa mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6f518283 mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7027f6c4 mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7a6052cb mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7c236147 mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8c79d00e mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8fa6b36b mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9da12113 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa61c9a7b mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa7a32715 mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb59e012a mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbbd5fd35 mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc54ef409 mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc83e6f4f mlx5_dev_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd47c8912 mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe6a3a4b9 mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xff7f11be mlx5_dev_init +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x3529549c hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xa333a19d hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xa8ddbf1e hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xca65d3c6 hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xd9b5ad6e hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x2681360c irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x26a5c87d sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x310a14fc sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x4fb074f2 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x53d277e4 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x57d74af9 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x5a8b9c2b sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xbfa260e7 irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xccece0be sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xe45261d2 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 0xb34a7575 mdio45_ethtool_spauseparam_an +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mii 0x064c2abd mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0x1999ad3d mii_check_link +EXPORT_SYMBOL drivers/net/mii 0x379b9517 mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0x5975f5f1 mii_check_media +EXPORT_SYMBOL drivers/net/mii 0x75895e68 mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0x8eff8c13 generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0xc9c3874c mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0xef1ae18b mii_nway_restart +EXPORT_SYMBOL drivers/net/ppp/pppox 0x0e055a5d pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0x30a424b1 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0x7f29b370 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0xa3af6c66 sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x199b2a81 team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0x40cad633 team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0x44ec12c5 team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0x48492985 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0x71041492 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0xb22b8761 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0xba124bac team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0xd5ef3e6d team_options_register +EXPORT_SYMBOL drivers/net/usb/usbnet 0x80235dd4 usbnet_link_change +EXPORT_SYMBOL drivers/net/usb/usbnet 0x95536236 usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0xcc3dd1c0 usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/wan/hdlc 0x248fdb34 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x47d7f8a5 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x489c8d6c unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0x6ade9bb1 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x7bdcfbdc hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x8430aef2 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0x9080c447 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x98ab1112 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0xb6b72199 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xc62a846f attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xe6260d42 hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0xe35cd200 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x08816d1e reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x6ae2e2e4 stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xd0f88c08 init_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x41e9d5d7 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4dea7c0a ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4e2481d5 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x53358ce3 ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x5c5f39d1 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x635dd856 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x6ceaa3e0 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x8c1f8e3f ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x934a29f3 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xbed67d26 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xd34d3d8a ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xd7d6067a ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xeee9ac3c dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x0015542f ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x24a8b3d2 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x30a4edf2 ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x59dff10c ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8246be6c ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x895f9dc2 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xaf096710 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb58bd517 ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xde577a70 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x0199ec46 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x0f689841 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x247a0528 ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x27cf1694 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x496a65e8 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4c6ddcb4 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4e1380ee ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x59ffebfc ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x841a08c8 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa17b812f ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb2fdcfe8 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xc225f43c ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xc9d6a017 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcc6e1a9e ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0x780046b5 ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0x8e6d849d ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0x91fc76f5 ath9k_hw_wow_event_to_string +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0xc329377f ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2ab70312 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2aeb84a7 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x3843c32b ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa4822acb 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_hw 0x055c6eb8 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0702ea30 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x08872f3b ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x08edee98 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x09207c9b ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0a7b1060 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0d14c27e ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0eaa009a ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0f3f98c1 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x11cd94dd ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x123fa7f9 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x14dbf041 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x19dfa0b6 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1abf8d86 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1dc33899 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2218b9cb ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x23092084 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x24ea0973 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x291d21a5 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2a2593f3 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2be848d4 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2c45978b ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2c8e53b6 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2e7f2b57 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x304e7321 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x343beeed ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x36d4d3bc ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3c74be01 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3d1aba82 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3f4676d1 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4905bee2 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4b56d99f ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4cc9faac ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x511a327e ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x55f7e905 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x567f1491 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x576e0a09 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x59c66fdc ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x64a45563 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x66076baa ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x67f7a87c ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x687ae5b8 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x69356617 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6a6858e4 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6d908e6b ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6e2c422d ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x73a5d784 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x77ba1fe5 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7a611f42 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7c5d9046 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7eae4e18 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7fca5f5b ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8121208e ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8875ebb8 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8df9bde7 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9221f19e ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x92ed03e8 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x934c44b1 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x995b3daf ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9ec5e21f ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9ee4ab0c ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa2423045 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa32f8378 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa4f1c03e ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa6bd56f3 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa70c6d3d ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa9b831ac ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaa851d69 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xae5235ba ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb2efa012 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb79d4e59 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbe5a7f92 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbf756e19 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbfd4b694 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc2da35d2 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc669172a ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcb1e337c ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd6a417f6 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd8673264 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd95247bb ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdbc82e36 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdcfe2b39 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe1f3cca0 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe32a7b6b ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe503ed98 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe640104a ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe7fdf4b6 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe8bcf3dd ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeb435a23 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xec8f43a1 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xee2fad4c ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xefc84408 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeff07703 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf0b01410 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf41ff4d6 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf4e57d88 ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf60d22a7 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfe2f1aaf ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/atmel 0x4f81bd12 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0x764aeb5d atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0x80cadcd1 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x6a6e7722 brcmf_sdio_probe +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0xf48415d2 brcmf_sdio_remove +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x0379ae36 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x0507d4ca brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x09c880af brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x1da33213 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x2a9181cb brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x2dc227f8 brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3b46c881 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x47ab294d brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7b2bb1ef brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x81ef5f83 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x8be6bad3 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x92b004f9 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9790b962 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xecde7c2c brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x082ec449 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1723ac32 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1ef63af8 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x2623c3d5 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x2da1aab7 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3b5a9cbc hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x41809ce6 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4ce95acc hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x64719bfd hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x750282c5 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x79367a30 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7b42b325 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x80427604 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8ad60a5f hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8fe03625 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x91a94f38 hostap_setup_dev +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 0xbf19ce3f hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc37487f1 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc54190ba hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc777b1ea hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xcd6711c8 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xcec40d27 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd834acd4 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf2d96d25 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf32e061e hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf7224ff7 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x03347a09 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x0a222b71 free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x0acdf40e libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x13ec458e libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x19f9f68a libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x48054ef5 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x54c1cc64 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x62644219 libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x68e5f83a libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6b73073d libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x760fd463 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8528c748 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x917fa67e libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x92b083fa libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x93f388e2 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x97e01b74 libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xbfafdde1 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xca553d33 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xcbd1161b libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xdbcef681 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe6f0d9f7 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x00154484 il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x03a9961d il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0c047cdb il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x15772fd7 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x16592be8 il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1867c11b il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1974e463 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1a0ae37f il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1ad8f9a6 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1ddc3063 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2397b892 il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x250cdedc il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2fad956e il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x31faeda6 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x353e61af il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x35cbea56 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x383faf9a il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3a966aa9 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3b4418a2 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3c11a42f il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3cd45860 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3cf615aa il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3d157baf il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3dfebefe il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4a0a7356 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4b6a7aa6 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4e3c1fd4 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x513f80cd il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5308a37a il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x570062e2 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5873fca0 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x589d01e0 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5b68f172 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5cb5139e il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5df5165d il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6326f580 il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x63c132a5 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x64473fb5 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x657c965a il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x66439765 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x685a20b9 il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x69351b67 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x717bc6b2 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x721f6977 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7be286cb il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7dab310a il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7e8ec257 il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7f0dd61c il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x817f5a0b il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x855858fd il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8593d5e8 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x899fe855 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8daf1525 il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x92e42423 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x92e73aef il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x940e561d il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x941915ad il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x94d17187 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9e0c7ba2 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa0808e59 il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa3722a3e il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa6c08e75 il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa82f7005 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xab1abff9 _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xac148e85 il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xac40f991 il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xafcc0e23 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbc4a41a7 il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbc9c0ce6 il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbd8f624a il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbde50cc9 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc1ea3965 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc24d7e76 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc3971b99 il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc68f6d4c il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc6e1d0ab il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc7aef935 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc84f8664 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xca4cd856 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xca5a796c il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcc475319 il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcc85e93b il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd23e11e4 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd496091d il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd8c59fb2 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd99f8c74 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdd4cb0c4 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdfaebd4a il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe1d30184 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe475a31c il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe9008747 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeabe5394 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeb55c249 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xef70fba1 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xef9ea75c il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf581c1a7 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf6687b1f il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfc3de164 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x08dd8699 __tracepoint_iwlwifi_dev_rx +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x0c50fa2b __tracepoint_iwlwifi_dev_tx +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x1ecc5465 __tracepoint_iwlwifi_err +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 0x675bcb86 __tracepoint_iwlwifi_info +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 0x8de37664 __tracepoint_iwlwifi_dbg +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x954eb7a7 __tracepoint_iwlwifi_crit +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 0xe2dcc8de __tracepoint_iwlwifi_warn +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xf9ec6bdd __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x1f772c5c orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x218fa9c2 orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x586993d6 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x68ca0a36 orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x6b824e4f orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x767d2e91 orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x78e652e6 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x88556746 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb01a7a86 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb58c9573 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xbe80a836 free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xcb6cee58 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd7392ca5 __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xdb0cbd65 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xdf51f344 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xf282e312 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xf3825816 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/btcoexist/btcoexist 0x5d6b6914 rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x081d8263 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0db356e9 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1cf67ce3 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1f8c3865 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x32c4c918 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3b946283 rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3dd0bba4 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3fbb98ab rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x42ae331e rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x42e34e69 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4422e2a1 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x461e315e _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x476fe594 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4cffc193 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4f24f699 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x608e2c59 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x610ba45a rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x621e94b9 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x68ee0828 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6b143c9a rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6f5534fe rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x75bb8868 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7eb30c74 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7fa5aaca rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x82c5982a rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9ccced30 _rtl92c_phy_dbm_to_txpwr_Idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9e18f83d rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9e887e1e rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9f5428ac rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb48ac813 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbaf09d23 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc3806cb5 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc524c746 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe2d998ed _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe48ef763 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xed3b71e0 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf0d32fc6 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf4708dfa rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfa3b2876 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfa4572c8 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xff4cdd05 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x06dec50d rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x9f27c50b rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0xd3216468 rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0xf6b160ee rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x2e4d911f rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x2f73f1ca rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x3dacb9bb rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xdc704d59 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0e01857e rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x35bc24e8 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x447ca226 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x49dc1b41 rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x51868783 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x51db1993 rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x63446a06 rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x661f8ccf efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x705f9143 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7178f3a1 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7255d015 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7dd8547d rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7e33421f rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa9fd0ac5 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb0a60a1d rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xbbe6815f rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc5c2eac8 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc645454f rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xcc275e36 rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd34231e5 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x0b429a58 wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x250bbe58 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x7a6f1150 wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xb53a6ec6 wlcore_tx_complete +EXPORT_SYMBOL drivers/nfc/microread/microread 0xdf76e528 microread_remove +EXPORT_SYMBOL drivers/nfc/microread/microread 0xf20f65d0 microread_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x9ba6d5e2 pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xac0c2aa0 pn544_hci_probe +EXPORT_SYMBOL drivers/parport/parport 0x1988dd88 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x1acaf50c parport_read +EXPORT_SYMBOL drivers/parport/parport 0x1edfd445 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x2817c68c parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x2dfaefdb parport_release +EXPORT_SYMBOL drivers/parport/parport 0x3bbc4bb4 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x3dc4aee1 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x4467f9c8 parport_write +EXPORT_SYMBOL drivers/parport/parport 0x45dc871e parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x4c91ea1c parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x5cbec2af parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x62c6d6b5 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x638e30dc parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x6def6414 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x79e8500d parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x8fd215fe parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x96d2c282 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xa612fb71 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0xa8944ef0 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0xa982aa06 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0xabae87a6 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0xb316f590 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xcdc76e80 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0xd32a601a parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xdae63da4 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0xe7194c8e parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0xed791e62 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0xef3c7436 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xf4520e65 parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0xf947d881 parport_register_device +EXPORT_SYMBOL drivers/parport/parport_pc 0x2ed9c221 parport_pc_unregister_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xc469d813 parport_pc_probe_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x0389f98c pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x0c4cd9e7 pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x32c936d8 pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x36e59d11 pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x55819800 pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x63f23859 pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x744a4d74 pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x9178fcb1 pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x93f1e806 pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa4d63e8c pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa52beb1b __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa6e484df pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xd5d77d5f pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe1207cb8 pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe132fc0c pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xeaf355df pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xf5cf643e pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xf9a699c0 pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xfa5c3496 pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x030db241 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x19c1c5bc pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x3400245e pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x7ddbe141 pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x89dfaef4 pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x9b0ab614 pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xae5e7eab pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xc32cf40a pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xc3f04892 pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xc9377303 pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xd1c415d8 pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x868af5a0 pccard_static_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x8955d59c pccard_nonstatic_ops +EXPORT_SYMBOL drivers/platform/x86/intel_ips 0xd32b0b5b i915_bdw_enabled +EXPORT_SYMBOL drivers/platform/x86/sony-laptop 0x5bb1e117 sony_pic_camera_command +EXPORT_SYMBOL drivers/pps/pps_core 0x2e887088 pps_register_source +EXPORT_SYMBOL drivers/pps/pps_core 0x65d017c8 pps_unregister_source +EXPORT_SYMBOL drivers/pps/pps_core 0xaf4bb562 pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0xe5764995 pps_event +EXPORT_SYMBOL drivers/ptp/ptp 0xbb6aca8b ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp 0xe850d342 ptp_clock_unregister +EXPORT_SYMBOL drivers/ptp/ptp 0xea416cac ptp_clock_event +EXPORT_SYMBOL drivers/ptp/ptp 0xec2a22eb ptp_clock_register +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x4c8e9375 pch_ch_event_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x5014fc0c pch_ch_control_write +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x670322a2 pch_tx_snap_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x6cef28b3 pch_src_uuid_hi_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xa93fc2ea pch_rx_snap_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xf012e6a5 pch_set_station_address +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xf25d6e87 pch_src_uuid_lo_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xfc87f93d pch_ch_event_write +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xfd21e307 pch_ch_control_read +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x0dfc5395 rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x15391794 rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x1f042cdc rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x39153c3c rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x513392a6 rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x73f3a1ae rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x9592b683 rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xadc2907d rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xf9d705cb rproc_report_crash +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x07594799 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x163511a7 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x187f1089 fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x381c37af fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x69e2eac2 fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x6da9268d fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x8ade0feb fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x9bacc25e fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xa9b81d08 fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xc64ff2dd fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xeb4e5c3a fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xfcfb4862 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0e2a6b9e fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1096ef24 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1ba6a9a7 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1e33302a fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2208fce1 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x248f1758 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x25d62d99 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x269f9c55 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2824a470 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2beb86b7 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2d317860 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x31133692 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x31a5e233 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x336a31b5 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3c0fa264 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4a930580 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4ae88b83 fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4fdc56f2 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x50fd049e fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x57441b22 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x58234261 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5c0ea30a fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5d361757 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5e92b591 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6c75f74d fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6d0aef5a fc_change_queue_depth +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7345fe8a fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x76419175 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7a4f8b50 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8c82e375 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8ed088d5 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8fa9ec60 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9beee45e fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa3ce4c26 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa9f1a4bb fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb97b3728 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc0ddcd63 fc_change_queue_type +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xce2b6950 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcf0a18c1 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcf404d03 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd19fe4f7 fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd1dd097d fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd37d0b7b fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd3ae7510 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd618e94d fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdb45c627 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe4385955 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf4638619 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf530f0c3 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf6413c88 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf73570fc fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfdcbd2c2 fc_linkup +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x2d1928fd sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x39a6e9e3 sas_wait_eh +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x668d6ca5 sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xc21a03b5 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x109b2efb 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 0x09671dd2 osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x14991d56 osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1b187a8a osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1b90c0d5 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1b9aaa67 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2166f791 osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x27a25e81 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2dea8cb6 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x460e4bc2 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x488d7297 osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4d052ae8 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4e04389f osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5017f815 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x541f77a9 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5f063e6d osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5fb00ba7 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x70ecd665 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x77ee9f93 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x79339eeb osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8368a077 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x87cdaaed osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9775f12b osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9a560ae0 osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa595d8e4 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa8734b10 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb1acead2 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb537b859 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc9a98884 osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcb675799 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcb8bf93d osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcbcfccca osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd166416c osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd2aab8b1 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd6d5e3e3 osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xed4fd302 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf561081e osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/osd 0x36dd0e65 osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0x4a070ab7 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x6b6966c6 osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0x6e3ce207 osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x961444e9 osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0xaa2ae9d5 osduld_device_same +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x14b5b2d8 qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x1dabe61f qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x2860eb3a qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x6c08efe3 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x7743ba15 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x8b948e32 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x959062b3 qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xa0e75b48 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xb2607a36 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xd458caab qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xf2dea342 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x15930405 qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x6e6ebee6 qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x8f2d10ca qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xa2ac0195 qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xa30fe980 qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xdb581ed7 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 0x2cd3e7ad raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0x8272f887 raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0xb39b6376 raid_class_attach +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x0ea605e0 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x27747db4 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x33dc07c8 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x371b6aeb fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3f148d57 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x50cc2988 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x5785305c fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xa547b076 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xc2ad65aa fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xd230e2c1 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xdd8e1c4c scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xec9f7721 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xfd8600ea fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x07628af5 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0cd2853f sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x23e2d37e sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x27cda22d sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3305ff69 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x364dc8e3 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x384b8cd2 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4a055ae9 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4d8db418 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6f9a7343 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x704cbd10 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x71c22c59 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x85be6066 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8735632c sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x91bf4d14 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xacd480af sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb71c41e4 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb9be2d74 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xba2d34f4 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc76b928c sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xda3a0432 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdfc32455 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe6c4b4c1 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe9d02189 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xed308901 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xedab6aa0 sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf1f380cc sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf3199458 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x098effec srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x429ba696 srp_rport_get +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x4f5f4857 srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x9d07c737 srp_rport_put +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x000a8337 ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x33ab8a2d ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xfcaf0e7e ufshcd_runtime_idle +EXPORT_SYMBOL drivers/ssb/ssb 0x00bb4d5b ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x0784865a ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0x139dac3f ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x1ff5beff ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0x2ea9d3b5 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0x315d36b6 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x452f684d ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x4abf81b6 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x6a721e12 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0x7dc11e15 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x8382e716 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x9de9bddb ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0xa23352c3 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xa56ca6c7 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0xb1ea32fa ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xc7cc37dd ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xcd76eb24 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xd16a9183 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0xd3488d9e ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xdd2d1ddc ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0xe28d4ad2 __ssb_driver_register +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xa401b430 fwtty_port_get +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xb4f96c09 fwtty_port_put +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x52ca2b90 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xfb31ca8b adt7316_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x65e405ac ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x6d3f1123 ade7854_probe +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0264d470 lnet_extract_iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0363b57a lnet_copy_iov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x03e34a3d lnet_finalize +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0bce7eef lnet_counters_get +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1193e511 lnet_copy_kiov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1366b7ac LNetSetLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x19670622 LNetNIInit +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1b191752 lnet_msgtyp2str +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1fbee849 lnet_copy_kiov2kiov +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 0x2cde67a8 lnet_set_ip_niaddr +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 0x5811a721 LNetInit +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 0x61632ebe lnet_connect +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 0x6bb7d933 lnet_net2ni +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 0x7a658867 lnet_parse +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7ccc434e lnet_kiov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7d48e43d 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 0x8a3064f2 LNetSetAsync +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x8a3a5edc lnet_create_reply_msg +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x93d8aa4c lnet_notify +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9730c872 lnet_unregister_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9de986d3 LNetEQAlloc +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa3d61f8d lnet_iov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa8c2760b LNetFini +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 0xaf6f0ef2 lnet_extract_kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb4418453 lnet_copy_iov2kiov +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 0xc581413d lnet_register_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe2f1b4d9 the_lnet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf1b316bf LNetSnprintHandle +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 0x622027e7 seq_client_get_seq +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x73a86151 seq_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x7b853f1b seq_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x9a836861 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 0xd3e71972 seq_client_alloc_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xe9032fcc client_fid_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xecee2727 LUSTRE_SEQ_ZERO_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xf279bb6f seq_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x1204b7e1 fld_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x4272343b fld_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x5132b965 fld_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x8e78eafb fld_client_add_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xa821e547 fld_client_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xea4c976c fld_client_del_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xfa578e99 fld_client_proc_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 0x03387ca6 cfs_curproc_groups_nr +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x04a36031 cfs_crypto_hash_update_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x04d3ce6a lbug_with_loc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x05a47483 libcfs_sock_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x069f9bb2 cfs_wi_schedule +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x06acbefe cfs_hash_bd_findadd_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x08ada613 libcfs_console_backoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0ae925e2 libcfs_sock_getbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0b4b1546 libcfs_lnd2modname +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0ba34f66 libcfs_sock_abort_accept +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0de6c369 cfs_cap_lower +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0eb410a2 cfs_percpt_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0ee3a27c cfs_hash_for_each_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0f5eff79 cfs_percpt_number +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1059cbd6 cfs_hash_bd_lookup_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x12426266 libcfs_run_lbug_upcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x127b745d cfs_hash_dual_bd_findadd_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x12cd873d cfs_cpt_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x150034e5 cfs_hash_dual_bd_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x162e0511 upcall_cache_flush_idle +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x16605f1c cfs_hash_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x16bef72c cfs_hash_rehash_cancel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1756d138 cfs_hash_for_each_nolock +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 0x1d5a3928 cfs_timer_done +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 0x29bf925f cfs_hash_bd_del_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2a876a64 cfs_hash_size_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2b1e0458 cfs_get_environ +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2da017ea cfs_cpt_set_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2db9d08f 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 0x30986343 cfs_range_expr_parse +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x30f7eff6 upcall_cache_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x314d752a cfs_hash_del +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 0x32cd9771 upcall_cache_get_entry +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 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 0x3b7129eb cfs_hash_hlist_for_each +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3c1285bd libcfs_subsystem_debug +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 0x3e3ae0da cfs_hash_bd_peek_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3ea730c0 cfs_gettok +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 0x411db754 cfs_crypto_hash_final +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x41ab33a1 libcfs_ipif_free_enumeration +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x44839bbb cfs_rand +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x44f07cfc cfs_pause +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x47fdb4d1 cfs_timer_is_armed +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x48f163c6 libcfs_str2anynid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4a99af72 cfs_clear_sigpending +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4ae500f8 add_wait_queue_exclusive_head +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4bd3ea3d cfs_hash_bd_move_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4c7e3d8a cfs_hash_lookup +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 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 0x58e7f03a cfs_hash_dual_bd_finddel_locked +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 0x5d3be65a cfs_crypto_adler32_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5d655232 cfs_percpt_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5d73c3e3 cfs_expr_list_free_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5dce9e80 libcfs_lnd2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5e2bab6b libcfs_sock_listen +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x62289d65 cfs_array_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x62822d74 cfs_hash_dual_bd_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x62b9cb2e cfs_percpt_atomic_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6326638a cfs_percpt_lock_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 0x656e257d upcall_cache_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x65dd9f0c libcfs_run_upcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x66136d2d cfs_timer_arm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x67398404 cfs_wi_sched_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x692bd054 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 0x6dfa9ea1 cfs_crypto_adler32_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6e242a95 cfs_hash_for_each +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6e6af71c current_is_32bit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6e6b6622 libcfs_sock_getaddr +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6f928e1b libcfs_debug_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x71f662a3 libcfs_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7a3d49ae cfs_expr_list_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7b0b748a cfs_ip_addr_parse +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7c7986cf waitq_wait +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 0x7f99ddb6 cfs_race_waitq +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 0x875e0492 cfs_hash_del_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8840f591 cfs_block_allsigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x89ce22bb cfs_hash_cond_del +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 0x8d26cd32 upcall_cache_flush_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8f12bb52 libcfs_log_goto +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8f45f10d cfs_init_timer +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 0x95620e8c cfs_wi_deschedule +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x97652a15 cfs_hash_is_empty +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 0x99661e2b cfs_hash_create +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 0xa3c9f30f cfs_hash_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa4bc5fb5 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 0xa9dc74e2 cfs_trace_copyin_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9eae690 cfs_str2mask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xaa2afaed cfs_hash_debug_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xaa587cf6 cfs_hash_add_unique +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xaabc5fd1 libcfs_sock_setbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xab887583 init_waitqueue_entry_current +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xad019238 cfs_str2num_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb20c6ebb cfs_hash_for_each_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb2854871 upcall_cache_downcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb4e48237 cfs_cpt_online +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbb972619 proc_call_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbb9cb508 cfs_curproc_cap_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbd5d492e cfs_timer_init +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 0xc2911d96 cfs_expr_list_match +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 0xc3eb614e libcfs_ipif_query +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc47433a6 cfs_capable +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc49b1c62 cfs_percpt_atomic_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xca9320d4 cfs_hash_findadd_unique +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcb385db9 libcfs_debug_binary +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcbab8493 schedule_timeout_and_set_state +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 0xccd9aa58 cfs_percpt_lock_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcce5b37f cfs_hash_bd_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcd38904c cfs_wi_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcd4cc6cf libcfs_sock_read +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 0xcfab9ecb upcall_cache_put_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd0607296 libcfs_sock_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd6a52be3 libcfs_printk +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd6f1fc60 cfs_strncasecmp +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd7fb8c78 libcfs_kkuc_msg_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd8857d7a cfs_hash_rehash_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd96f406d cfs_cap_raise +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xda967a49 libcfs_sock_accept +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xde17bb8d libcfs_isknown_lnd +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdec92e02 libcfs_sock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xded410c2 cfs_hash_rehash +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdf26be81 cfs_hash_dual_bd_lock +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 0xdffc951d cfs_timer_disarm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe2d9c0cb libcfs_kkuc_group_add +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 0xe63efe11 upcall_cache_flush_all +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe6555032 libcfs_ipif_enumerate +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 0xeb447115 cfs_hash_getref +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 0xeda75539 cfs_hash_bd_add_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xedf3a25a cfs_timer_deadline +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 0xf3a80fbc cfs_hash_bd_finddel_locked +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 0xf8efb8c5 waitq_timedwait +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf94025d1 libcfs_str2lnd +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf9f412cd cfs_hash_debug_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfc4c70a2 cfs_cpt_bind +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfe565fa9 cfs_crypto_hash_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xff0f98a6 libcfs_debug_vmsg2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x34d970e7 ll_direct_rw_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x42d2857f ll_osscapa_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xa1ed78a0 ll_stats_ops_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xa885809c ll_iocontrol_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xcd3cde92 ll_iocontrol_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x1c444555 lov_stripe_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x2d84506a lov_stripe_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x309a4810 lov_read_and_clear_async_rc +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x39067215 lov_lsm_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xb10100a7 lov_lsm_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xf3811fcc lov_device_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x09bd9e96 fsfilt_put_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x31093ede lustre_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x6cfccc8e lprocfs_stats_alloc_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x793fd5c4 lprocfs_counter_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x8ca62546 l_dentry_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x9b0955d8 fsfilt_register_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xaa454c49 fsfilt_unregister_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xb4f8ee63 lprocfs_read_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xd0591c84 lprocfs_counter_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xdd2b4d77 fsfilt_get_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xf099832d pop_ctxt +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xf1144ed3 push_ctxt +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xf53861f8 obd_memory +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x14a47f31 it_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x9c22b84f it_open_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0xb57d8447 it_set_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0xf46a886f it_clear_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mgc/mgc 0xdc287f95 mgc_fsname2resid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x00047fb1 cl_io_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01665e34 class_parse_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01743b1f lu_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01ff9dcb obd_export_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03010c25 obd_export_evict_by_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03224d9d cl_io_lock_alloc_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x033b7284 lustre_process_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x035852d0 lustre_swab_llog_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0383dca1 cl_req_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03937678 cl_page_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x04275ec4 lprocfs_rd_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x04ad2ee3 cl_2queue_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x053d552e llog_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x057f6d4b class_find_old_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05af2394 obd_export_evict_by_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x06067235 llog_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07a75d92 cl_page_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07aa68bb lustre_swab_lustre_cfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x083942ff class_del_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x094581c3 cl_object_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b5329b3 lu_device_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b85f2f6 cl_lock_closure_build +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b8a44d9 lprocfs_oh_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0bb3d650 cl_object_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c4b4c3d dt_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c92f18c cl_wait_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d15920f local_file_find_or_create_with_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d305fd4 cl_object_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0e2c528f class_handle_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0e7de2aa cl_2queue_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0fe91547 obdo_to_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x109e48fa cl_lock_user_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10c08c04 lprocfs_wr_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1141d2ba llog_declare_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11495519 lprocfs_write_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1199aecc class_incref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11df2886 lustre_idmap_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x122b509e cl_site_stats_print +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 0x1518aa24 obdo_refresh_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x15a6017f cl_page_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x15e40d60 cl_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x164bd3d8 lprocfs_alloc_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16680f0c cl_lock_closure_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16a09a6f lu_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1703021d llog_cat_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1720607f lprocfs_init_ldlm_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x17260880 obdo_cpy_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1763a690 lu_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x17d1c966 llog_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1845f4f5 cl_unuse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x18bd3c4e lprocfs_single_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x18cbe7a4 cl_page_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1b0a0b38 cl_lock_nr_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1b349205 dt_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1b7d8983 cl_lock_hold_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1c0490f2 cl_unuse_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1c67d2ce lprocfs_counter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1c83fa29 cl_page_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1d20d93a llog_cat_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1da48212 class_handle_hash_back +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1e168b36 capa_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1e776be2 cl_lock_discard_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ee3c682 lustre_in_group_p +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f1e9c8a lu_context_key_register_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f284c83 cl_lock_unhold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1fc3e9cd cl_2queue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2120003a lu_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21b05a34 capa_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x221826f1 class_parse_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x228fe61b cl_io_rw_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x22fd143d cl_io_submit_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x247c83b7 cl_lock_user_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x24b058ed llog_obd_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x24c3f48d llog_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2547efae lustre_uuid_to_peer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x25ec66c1 dt_index_walk +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x25f2c9fd cl_lock_disclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x262c20c8 lprocfs_alloc_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2702f92d cl_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x27367a78 __llog_ctxt_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x275cdc7a cl_env_reexit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x28183af3 lu_context_key_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2859337b cl_vmpage_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x288b2872 cl_page_list_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x291e12b0 llog_cancel_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x293e2d6c capa_cpy +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x297cf5e0 class_handle2object +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x29fe9fbc cl_env_nested_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ae1cd79 kuc_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b604c3c cl_io_lock_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b7efa06 cl_type_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2bbfddea lprocfs_rd_timeouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2d77be31 lprocfs_oh_tally_log2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2e3e1986 lprocfs_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2eeee573 cl_page_list_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2f4b209e lu_ucred_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x305878d3 cl_page_vmpage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x31071544 lu_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3110fd88 cl_lock_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x324f96b8 lu_context_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3261cff4 class_disconnect_stale_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x32ba7a38 dt_quota_slv_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x32e8dace dt_lookup_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x332ad019 lustre_idmap_lookup_gid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x33c151e3 lu_buf_realloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x341c17d1 class_new_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x35d2c981 cl_page_list_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x360899dc obd_llog_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x36b675ba cl_page_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37064921 cat_cancel_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x373a8a8b dump_lsm +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x374acbd7 lu_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37631b4a llog_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3782f8f8 lu_object_locate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37aa02a7 cl_page_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37ed6e4b at_early_margin +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38277d5e dt_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38fb0c90 class_match_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c518673 dt_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3cd9c44d class_uuid2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3d96a777 class_exp2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3df5fa92 cl_io_iter_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3eab7bfe LU_BUF_NULL +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3eb61c51 dt_try_as_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x40459e77 cl_lock_mutex_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x404bb561 cl_page_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x40937f7a dt_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x41058fc9 capa_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x41172bd8 lustre_idmap_lookup_uid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x41248312 lprocfs_nid_stats_clear_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x413563e0 cl_env_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x42d7c2d3 lu_object_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x439c8f24 cl_2queue_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44381593 cl_sync_io_note +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44e41abb lustre_posix_acl_xattr_filter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x452f559a lu_buf_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x454ae3b1 dt_txn_hook_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4587f4fe cl_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x45b3fc4f cl_page_list_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x45ce3dd8 cl_io_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x46586c4d lprocfs_alloc_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4696171b cl_page_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x46e0cb94 llog_cat_cancel_records +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4730d365 cl_io_read_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x474ed5bd lustre_swab_ll_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x477d35a0 lprocfs_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47b35f7d statfs_unpack +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 0x49fce1a0 cl_page_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ac58713 obd_connect_flags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4b1f1de8 llog_open_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c190aad lprocfs_find_named_value +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c4c700b obd_alloc_fail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d13458b kuc_len +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d3e4fb5 lprocfs_add_vars +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d56b164 llog_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4dab261e cl_lock_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4db23f7c cl_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4dbd3c7b lu_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f38207d lprocfs_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f660708 llog_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f9e4108 obdo_from_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4fc9a0fe class_fail_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50c7fc36 ptlrpc_put_connection_superhack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x516dceba class_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x518a6ecb cl_page_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x51c31059 lu_object_assign_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x520bb44f lu_object_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x521fa66a cl_req_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5249b2ab cl_page_clip +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5404ff67 cl_env_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54885f87 ldlm_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54d4d17f llog_cat_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x557c3d0b class_export_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x558bec27 obd_ioctl_getdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x559439e1 dt_record_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x55ac8821 lu_ucred_assert +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x55d8f945 lu_context_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x55eae15a lprocfs_rd_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5607cd28 lprocfs_rd_num_exports +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 0x57169f5f dt_record_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5791dd0b class_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x582b013d dt_quota_glb_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x584a5b3b cl_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x58e7cae9 llog_cat_init_and_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5949b9eb lu_env_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x599d9163 cl_lock_extransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x59fa6752 lprocfs_rd_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a20d896 obd_memory_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5aaeb08a lu_context_key_degister_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b416132 llog_init_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b48fb35 cl_lock_enclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b6dd9aa lu_context_key_degister +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bc022c5 lprocfs_dt_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5cf89947 cl_io_is_going +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d34ae0d cl_lock_mode_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d4bbb25 cl_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d56ba55 lu_context_key_quiesce_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d5779e4 obd_devs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d913a14 cl_lock_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5dfbfb53 llog_declare_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e0c373e llog_copy_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ed188a9 lprocfs_add_symlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fe97b73 block_debug_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6026beb7 lu_device_type_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x60329fc0 cl_object_kill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x60df2895 cl_lock_hold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x61f8dd30 cl_io_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631a518d mea_name2idx +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631fd7b9 lustre_ext_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63dc0530 cl_2queue_init_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x64795ab6 obdo_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x64b5003c lprocfs_free_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6623377e dt_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6675e427 llog_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 0x677fd7f9 proc_lustre_root +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67977b42 lprocfs_remove_proc_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67a90622 la_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67dc223a lprocfs_remove +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6872265f class_manual_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6877554c lu_site_init_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6890d175 lustre_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x68ca1ce9 lu_env_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x691b21d9 cl_req_page_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69c42114 at_min +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69f542ef lustre_common_put_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6be8be67 lu_object_put_nocache +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6c263fb3 lu_object_find_slice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6c6e8a0a cl_lock_at_pgoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6c7badb9 lprocfs_rd_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6c97b03e class_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6cfb577d class_config_dump_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6d61975e lu_object_add_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6db1206b local_object_unlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6eeb17ab lu_env_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f10a115 class_new_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f761192 llog_cat_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x703589f2 obdo_from_iattr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x713124c4 cl_lock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72152191 lprocfs_rd_u64 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72303906 llog_osd_put_cat_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7290ac71 llog_cat_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7291c566 cl_page_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x729c8294 lu_object_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72ddee4c obdo_le_to_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x73bef89b cl_page_discard +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 0x75b38676 class_name2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x75d2b115 cl_page_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x768d45e1 lustre_idmap_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x76cd577e class_exp2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77026001 cl_page_gang_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x778af983 cl_req_alloc +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 0x789c5b73 dt_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x791f4ce0 class_find_client_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x796b5a86 cl_page_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7a0998d2 lu_kmem_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7a135e29 lprocfs_stats_collect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7a6750fd cl_env_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b4fc57b at_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7c1f3f32 lu_dev_del_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7c311570 dump_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7cbcb365 class_config_parse_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7cd6be11 dt_locate_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7d46105b cl_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7db2076e lprocfs_rd_connect_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7df733d2 cl_io_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7e081bca cl_lock_weigh +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7e44d8d7 lu_context_key_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7edcafa0 cl_env_reenter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f2c0355 cl_io_iter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f2eabcf llog_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f7d7cd9 lu_buf_check_and_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fad7291 raw_name2idx +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 0x8098d97c cl_lock_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x811f0e7e lu_object_anon +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81742d89 obd_ioctl_popdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8196d0ea dt_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81c5ab4d lprocfs_add_simple +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81f34a45 cl_io_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x82b8cbd8 cl_page_own_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x831f656c class_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x83270044 cl_page_unassume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x835850ba class_handle_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x83ab95ee dump_lniobuf +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 0x859b02b6 cl_2queue_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85a2c300 lprocfs_init_mps_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85e63533 cl_page_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x86de09d9 cl_page_list_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x87ee79d7 cl_lock_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x884625bf lu_object_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8977fe28 class_detach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x89ddb1dd local_index_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8a07b718 cl_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aa2c358 lprocfs_dt_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aaaaae0 cl_lock_ext_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ae1b7a7 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 0x8b7ecb49 cl_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ba6e479 lustre_swab_lu_seq_range +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8bd30346 lu_site_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8c7b2193 cl_page_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8c835163 cl_lock_is_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d84ffe3 class_import_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e10e6d6 server_name2svname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e6dd282 cl_page_is_owned +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8eab947f cl_env_implant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ef7a781 lprocfs_oh_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f67314c obd_dump_on_eviction +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8fa169b1 llog_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x905420a7 dt_txn_callback_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90e6a2ba lu_context_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90ea5e96 lprocfs_obd_rd_max_pages_per_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92e3bdc5 cl_lock_mutex_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92e58479 obd_dump_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x937ce1e6 cl_page_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93b46468 lu_session_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93d36cbd cl_sync_io_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9512d507 lustre_acl_xattr_merge2posix +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x951f079f lprocfs_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x955f5220 ldlm_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95731859 cl_page_make_ready +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95735c6c at_extra +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95cf84a8 lu_context_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95ec998a lustre_groups_sort +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x960bea8e class_conn2obd +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 0x984d01e9 llog_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99095623 dt_index_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9a8637d0 capa_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9a8d2b20 cl_object_glimpse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1ed9d8 obd_jobid_var +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dbb17b6 lprocfs_dt_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9e8e132f cl_lock_state_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa0554de1 lprocfs_rd_numrefs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa134dc16 lu_device_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa1c7e254 llog_osd_get_cat_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa21c5ea1 obdo_from_la +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa26b0100 dt_txn_hook_commit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2feda94 llog_declare_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa380e013 class_devices_in_group +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa387b4ce llog_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa409b0f5 cl_lock_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4a56f82 lu_context_key_revive +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4ad4bea cl_lock_closure_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4c7b8e8 cl_queue_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa513f7e4 lustre_groups_from_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa52109c7 lprocfs_rd_conn_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa55cd2b8 llog_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa55ed7cc cl_page_cache_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5a847a8 dt_store_resolve +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5dedf88 class_import_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5fb234f lprocfs_write_frac_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa639392b cl_io_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa64a24e9 class_conn2export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa674c241 kuc_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7498ec2 class_export_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa76b9eda cl_lock_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7a7630a cl_page_is_vmlocked +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa81f142d llog_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa9517499 class_num2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa21b7a0 lustre_register_quota_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa615de6 obdo_from_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaac65d24 local_file_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab57457d lu_object_invariant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab86caa5 cl_object_has_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabb0d431 lprocfs_rd_kbytestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabf45922 capa_decrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac73a240 cl_io_loop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac7f1596 kuc_ptr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xacb838a3 lprocfs_init_ops_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xadea66ba lustre_idmap_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xae2f1615 class_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaef8171c cl_sync_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb01963a6 class_uuid_unparse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb03841a5 lprocfs_wr_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0ccd7b7 cl_use_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0fb9886 cl_lvb2attr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb12c3d39 lprocfs_free_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1873a7c lprocfs_register_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb194f44a cl_2queue_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b89b6d class_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb293a466 class_process_proc_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb29f6d65 cl_lock_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb3a22f23 cl_env_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb41998cd lustre_cfg_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4881f63 lprocfs_free_per_client_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4aebf7b lu_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4b1001b class_conn2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb56ea56a lprocfs_seq_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb5ac0cc2 lu_ucred +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 0xb759c0c3 cl_lock_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb7f1e5ca cl_io_rw_advance +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb8d22041 class_config_llog_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb8ee20ac cl_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb9754ce3 cl_page_list_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba29cd39 cl_pages_prune +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 0xbb6b5007 cl_locks_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbba3c8d7 cl_page_list_splice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbbbfd005 cl_lock_get_trust +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbd2b7b21 cl_lock_descr_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbda2d3ef cl_io_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe7381c4 cl_lock_signal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe7b3580 lu_device_type_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbea1b077 lu_dev_add_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc04d82d0 lu_context_key_revive_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0689ea9 cl_page_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0bf7ef2 obd_debug_peer_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc146722c lprocfs_rd_filesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc147bfca cl_io_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc1588a5d lustre_register_kill_super_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc18d06cf lu_buf_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc1e52dee class_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc32e8e1e lu_env_refill_by_tags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc36fe750 llog_cat_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc3ab5407 lprocfs_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc3bcf3ee dt_declare_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc4ab9ff9 dt_version_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc86bbd4e cl_object_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8dbaa87 lustre_swab_cfg_marker +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9a8f186 class_connected_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xca38f816 llog_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xca3ac9bf lprocfs_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xca46caa6 cl_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xca99eeba lprocfs_oh_sum +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcad4c930 cl_lock_descr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0ab67f obd_max_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0af1b6 cl_object_attr_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb51fffc cl_io_commit_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcbde0a97 lprocfs_nid_stats_clear_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcc41cec4 cl_io_sub_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcc7f8413 local_oid_storage_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xccf7a8de obdo_cpu_to_le +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd73721e cl_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd7537ee get_devices_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xced5e617 obd_llog_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcedb140a obdo_cmp_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcee69cc8 cl_page_list_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcf70fb9c lu_context_enter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd01350a9 local_index_find_or_create_with_fid +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 0xd160844f cl_page_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd192d7bd class_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1b1478b cl_attr2lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1f58645 lustre_swab_llog_hdr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd20d505d cl_page_list_move +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd23d6837 cl_page_find_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd297b46c cl_page_list_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd3122aaf lu_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd3e5ec02 iattr_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd3f9bef1 llog_thread_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd43bf6ff lprocfs_at_hist_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd4d9bdcc lu_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd62d3d46 cl_lock_hold_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd65177b5 lprocfs_exp_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd70fe669 lustre_swab_llogd_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7344b71 cl_req_prep +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 0xd822d6e7 lu_kmem_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda24ca8e cl_stack_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 0xdb0cd67c cl_page_list_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb13dce1 capa_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb77ec51 class_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdbfeffa6 cl_req_page_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdc4bbfac class_disconnect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc40af0 class_check_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd114c8d lprocfs_rd_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd78c0c7 lu_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd92219b cl_env_nested_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde4f8c0b obd_exports_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde7d985b obd_dirty_transit_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdea83f37 cl_lock_mutex_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdfba9ad2 llog_exist +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe028cf84 capa_encrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe0668dad dt_txn_callback_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe0bbdcef lustre_end_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe1792595 lu_context_key_quiesce +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe208b643 cl_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2eb4470 class_get_next_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe3323f5d class_handle_free_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe58c3d4e llog_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe702d508 cl_object_attr_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7d83236 cleanup_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8c279d5 cl_io_submit_rw +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8e84c32 class_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe93a5bb7 cl_conf_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe96bab35 lprocfs_exp_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xea4d876e dt_store_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xea596acd cl_lock_is_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xea9be257 class_search_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeb3f388a _debug_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeba30d90 class_register_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xebf6b010 obdo_to_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec666468 lprocfs_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec7d6b85 obd_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed0227e8 md_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed9edf6e cl_env_unplant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee68bc29 lu_session_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee8d1699 cl_object_attr_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee9b2ec5 class_put_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeed308ff lu_site_purge +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 0xf0378e1b lprocfs_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf04aaa38 cl_page_is_under_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf0685be1 cl_req_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf0f2e3c0 cl_lock_enqueue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf1d6be71 lprocfs_seq_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2fc68b2 cl_lock_modify +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2fd6695 statfs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3563583 llog_osd_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3bc5b9d dt_lfsck_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3cce3d7 lprocfs_rd_server_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf490d5f9 class_del_profiles +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf4f7b1d8 cl_io_prepare_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf573d1b1 llog_cat_declare_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf5b567d9 class_disconnect_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf60d4659 capa_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf66774a3 lprocfs_clear_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7020831 lprocfs_dt_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7251917 lprocfs_obd_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf75a8912 lustre_idmap_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf763a6f6 lprocfs_rd_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7e19ecf cl_enqueue_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf845983b cl_offset +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf859a93d lu_object_find_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8c2df92 obdo_set_parent_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa813d06 capa_hmac +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbafead7 class_unlink_export +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 0xfc9243ca lu_cdebug_printer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfce4103b lu_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd5eed39 lustre_register_client_fill_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd68d17a class_notify_sptlrpc_conf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd84eead dt_txn_hook_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdbe1557 lprocfs_write_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdfa4aed cl_page_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff026b8f local_oid_storage_init +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/osc/osc 0x5c4940c2 osc_update_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00924b69 req_capsule_has_field +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00d95039 ptlrpcd_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00f41507 ldlm_namespace_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00fd3de8 target_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x010a96b7 req_capsule_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01573258 req_capsule_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01d6ef7f ldlm_pools_recalc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x02ec37d8 ldlm_namespace_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x048b59d5 lustre_msg_set_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x04f28332 ldlm_reprocess_all_ns +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0515f93b RQF_FLD_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x065bae18 ldlm_namespace_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06b3942b lustre_swab_lov_user_md_objects +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x071fc74a RQF_LDLM_ENQUEUE_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x07605c7d interval_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x07efe43c ldlm_cli_cancel_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x08bb2d27 lustre_swab_obd_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x09448013 ldlm_cli_cancel_unused_resource +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 0x0bcacb5d RMF_MDS_HSM_USER_ITEM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0c079aa1 ptlrpc_retain_replayable_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0c2d9c43 lustre_swab_lip_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ccd97dc ptlrpc_nrs_policy_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0cf343dd RQF_LDLM_INTENT_BASIC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0fe51c3b sptlrpc_sec_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10f18f20 interval_iterate_reverse +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1137a770 ptlrpcd_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x115017f6 req_layout_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1188d8fd sptlrpc_conf_target_get_rules +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x126e5826 ldlm_cli_cancel_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x12b6f5a3 ptlrpc_connection_fini +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 0x1629c006 sptlrpc_import_sec_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1656e19a client_disconnect_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1690ea1b ptlrpc_pinger_del_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x16ab6eae llog_origin_handle_close +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 0x18e16c55 ptlrpc_pinger_sending_on_import +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 0x1acf28ef ldlm_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1b489f8f ldlm_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1b52055d req_capsule_init +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 0x1c3d664f req_capsule_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d043548 lustre_msg_set_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d0dff97 ldlm_pool_get_clv +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 0x1dfb1cb7 ptlrpc_request_addref +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 0x1ec0a71b ptlrpc_disconnect_import +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 0x1eeb4e0a ptlrpc_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1f1804bf ldlm_namespace_cleanup +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 0x233790b5 RMF_OST_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2358f9a0 sptlrpc_gc_add_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x23842859 sptlrpc_unregister_policy +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 0x2525b8ab ldlm_resource_putref +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 0x268632bb ptlrpc_buf_need_swab +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 0x278a5dc8 ptlrpc_activate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x27ba536a llog_origin_handle_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x285e5b99 lustre_msg_set_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x28d020a4 ldlm_pool_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x28f20776 client_destroy_import +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 0x2b0200af ldlm_resource_unlink_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2b2b63b8 lprocfs_wr_evict_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2c00c60d ptlrpc_sample_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2c30ab5b client_obd_setup +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 0x2eca498d req_capsule_init_area +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 0x2fd2f737 lustre_msg_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2fec77a5 req_capsule_client_sized_get +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 0x30cb6462 ldlm_cli_enqueue_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x30d9abe8 ptlrpc_send_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31838cb4 RMF_IDX_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31cd16cc ptlrpc_unregister_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3259355a unlock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3261b862 RQF_OST_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3327eef3 sptlrpc_target_update_exp_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3357ae52 lprocfs_wr_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x338211d1 ptlrpc_stop_all_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33bb7761 ldlm_typename +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33ef405e sptlrpc_get_bulk_checksum +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x356706e5 ldlm_pool_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35939a3d lustre_swab_fiemap +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35c95119 sptlrpc_conf_client_adapt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x371f27e0 ldlm_lock_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x37b21adc ldlm_flock_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3835ab4b RQF_LLOG_ORIGIN_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38519137 ptlrpc_free_rq_pool +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 0x3907bc36 ldlm_pool_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39630f55 ptlrpc_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x397305c2 sptlrpc_register_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39a4ea66 __ldlm_handle2lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39db792e ldlm_pool_get_lvf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39dc7bc8 ptlrpc_resend_req +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 0x3b7e5226 client_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3b9129cc ldlm_destroy_export +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 0x3c84940a ldlm_pool_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ca50f33 RQF_MDS_HSM_CT_REGISTER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3d2e678e ldlm_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3d59a139 ldlm_blocking_ast_nocheck +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 0x3dddb3e2 dump_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3e1f8500 ldlm_get_enq_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3e62bc52 sptlrpc_import_flush_all_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3e933536 ptlrpc_prep_req_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3eadbf02 ptlrpc_register_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3efeda7c ptlrpc_pinger_add_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f034caf lustre_msg_get_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f752e78 RQF_MDS_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f83983a ldlm_cli_enqueue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x406e5c38 ldlm_pool_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41008cef RQF_LDLM_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4137126a ldlm_pool_set_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41bbc77f ptlrpc_unpack_req_msg +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 0x443dd085 sptlrpc_cli_ctx_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4481591d RQF_OST_SET_INFO_LAST_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x44f7666d ldlm_pool_del +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 0x4602dd6b sptlrpc_gc_add_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x474dced0 req_capsule_server_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47f5e903 RMF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x48814c9f lustre_swab_ost_lvb_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x490e3c8a ldlm_pool_fini +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 0x4aceafc5 ldlm_lock2handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4b09ce4b lustre_swab_mdt_rec_reint +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4c469444 sec2target_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4c8ec098 ptlrpc_set_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4cd95eba ptlrpc_at_set_req_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d7580d0 lustre_swab_hsm_user_item +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d9c37be ptlrpc_request_alloc_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4dc44640 ptlrpc_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e1706e5 lustre_msg_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e696b96 ptlrpcd_queue_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e88beb8 ptlrpc_unpack_rep_msg +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 0x4faa89ec ptlrpc_unregister_service +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 0x5165282f sptlrpc_sec_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x52493dcb req_capsule_server_grow +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 0x561c84ce ldlm_resource_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x580ec656 ptlrpcd_alloc_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x588035b4 RMF_UPDATE_REPLY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x59136f24 ptlrpc_abort_inflight +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 0x59b115de sptlrpc_cli_ctx_wakeup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x59ca398b ptlrpc_add_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5a057439 interval_search +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ad2c28d ldlm_cli_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5af0d02a ldlm_lock_dump_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b05efad ptlrpc_request_alloc_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b6ba895 lustre_packed_msg_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c4f622e ldlm_namespace_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c6a3a83 RQF_SEQ_QUERY +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 0x5f13192b ptlrpc_req_finished_with_imp_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5f161477 req_capsule_client_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5f96ccdd ptlrpc_connection_get +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 0x6175bbb3 ptlrpc_add_rqs_to_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x618ad203 RQF_OST_GET_INFO_LAST_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x618c2bd2 req_capsule_server_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x62192cf8 dump_obdo +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 0x643fa6d4 __ptlrpc_prep_bulk_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x645010ec ptlrpcd_wake +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x647b6e48 lustre_swab_ldlm_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x65149fb9 ptlrpc_save_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x653723dc RMF_LOGCOOKIES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x656e94ae ldlm_extent_shift_kms +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x65a89899 sptlrpc_cli_unwrap_bulk_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x668f5c22 ldlm_init_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6744a99b ptlrpc_service_health_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x67fe2d43 llog_origin_handle_prev_block +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 0x6a69bc11 ptlrpc_obd_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c2e2af2 sptlrpc_target_export_check +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 0x6eae1f1e ldlm_pool_set_limit +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 0x70f596bd ldlm_init_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x71aec004 lustre_pack_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x723d43b6 sptlrpc_rule_set_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x725a892c RQF_MDS_REINT_OPEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x73f18a4b req_capsule_client_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x74840056 lustre_msg_set_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75a2c40d ldlm_put_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7600c7d5 ldlm_lock_fail_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x76b728e5 lustre_swab_update_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77571cc6 lustre_swab_ost_body +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 0x78da970f sptlrpc_cli_ctx_expire +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x79efb739 ptlrpc_lprocfs_register_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x79fc6c3c ptlrpc_req_xid +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 0x7d767275 ldlm_pool_add +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 0x80aa11c5 ptlrpc_wake_delayed +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 0x82766cdc ptl_send_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x837efb00 RMF_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x83af0d07 ldlm_prep_elc_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x83d00099 ldlm_lock_cancel +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 0x86e646e9 ptlrpc_request_bufs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x86fa8c3b ldlm_cli_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8712009f do_set_info_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8752b213 ptlrpc_buf_set_swabbed +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 0x882b2f16 ptlrpc_fail_import +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 0x8933d06f ldlm_resource_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x894bb566 ptlrpc_start_threads +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 0x8b852427 client_import_find_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b854254 lustre_swab_mgs_config_res +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8cb71d4b RQF_MDS_REINT_CREATE_SLAVE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8d77ea75 lustre_msg_set_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8da3fca7 lustre_msg_add_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 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 0x8f6338a5 ptlrpc_cleanup_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8fa247b3 ptlrpc_set_add_cb +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 0x91c3044b lprocfs_wr_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x91cf58d3 RQF_MDS_PIN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x91e7d99e ptlrpc_nrs_policy_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x936e0b13 ldlm_lock_allow_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x937b1ee0 lustre_swab_mdt_ioepoch +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x943870f6 sptlrpc_gc_del_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x949af530 __ptlrpc_free_bulk +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 0x95dbd834 ldlm_lock_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x96248168 ldlm_lock_change_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9660ace0 RMF_FLD_MDFLD +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x967bfd52 RQF_OBD_PING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9798f2f1 RQF_MDS_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x980fcfdc ptlrpc_connection_addref +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 0x9c8d9bab client_import_del_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d7ea314 sptlrpc_pack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9e329f5b req_capsule_client_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9ea5a441 ptlrpc_set_next_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9eee0c82 req_capsule_server_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9fb088f1 lustre_swab_lov_mds_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9fbca2b8 ptlrpc_recover_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa10f0d3d RMF_UPDATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa14fdd2a ptlrpc_request_set_replen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa163f4c3 dump_rniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa2244636 RQF_MDS_GETATTR_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa22c0086 ldlm_error2errno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 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 0xa5e5acc1 ldlm_cli_cancel_unused +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa6c436ca RQF_MDS_WRITEPAGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa6d6e887 sptlrpc_target_sec_part +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa732845a ldlm_namespace_foreach +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 0xa811ab2a ptlrpc_hpreq_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa955aa91 ptlrpc_prep_set +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 0xaadb61e3 sptlrpc_sec_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xacc82ce1 ptlrpc_prep_fcset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xad99e600 llog_initiator_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaddc3979 lustre_swab_lustre_capa_key +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 0xaf8ab969 ptlrpcd_add_rqset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb01df14c sptlrpc_cli_unwrap_bulk_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0751fa4 RQF_LLOG_ORIGIN_HANDLE_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0d9e459 req_capsule_filled_sizes +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1b43d8a dump_rcs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb2780272 ldlm_cli_update_pool +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 0xb29a7e73 ptlrpc_commit_replies +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb2b1817d lustre_swab_ost_lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb2fd0b35 ptlrpc_lprocfs_unregister_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb327c1b3 req_capsule_server_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb3d46e40 ldlm_lock_downgrade +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 0xb55c65c9 ldlm_namespace_new +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb55d27de ptlrpc_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb5950c98 ptlrpc_resend +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 0xb71fe4ce ptlrpc_set_add_new_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7b38189 RMF_MDT_MD +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7c73486 ptlrpc_lprocfs_brw +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7cf094c 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 0xb90bda81 lock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb92b1ebf ldlm_destroy_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb98b2f74 ptlrpc_set_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9b631cf lustre_swab_mgs_config_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9b81e4b ldlm_pool_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xba0d2361 ptlrpc_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbaa76097 lustre_msg_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbb6b5967 llog_origin_handle_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc087669 client_import_add_conn +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 0xbe4b78aa client_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbe50ebf3 sptlrpc_svc_ctx_invalidate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbf98b86f RQF_MDS_QUOTACHECK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbfe25e60 llog_origin_handle_read_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbfe8f8b6 sptlrpc_cli_wrap_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbffd4313 RQF_OST_BRW_WRITE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc06c4670 lustre_msg_get_versions +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0867da7 RMF_REC_REINT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0cdf55e RMF_MGS_SEND_PARAM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2986d28 lustre_swab_ldlm_res_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2b1af57 RQF_MGS_SET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2be922a RMF_SYMTGT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc30428a1 ldlm_lock2desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc533cea0 sptlrpc_import_flush_my_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc559a634 RMF_LAYOUT_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc5f69cfa sptlrpc_lprocfs_cliobd_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc60a60e1 RQF_OST_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc61a2221 ptlrpc_set_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc6331649 ptlrpc_prep_bulk_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc667d450 ldlm_resource_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc694be4b RQF_LLOG_ORIGIN_HANDLE_PREV_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc70da5f3 ldlm_glimpse_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc71b8b9a ptlrpc_request_alloc +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 0xc82eccd5 lustre_free_reply_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc8543e93 ldlm_enqueue_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc85c5423 ptlrpc_init_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc8f586a9 ptlrpc_connection_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc92a109b ptlrpc_prep_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc939f267 lprocfs_wr_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc93b2a31 ptlrpc_mark_interrupted +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xca5a81ec ptlrpc_pinger_ir_down +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xca5b742d sptlrpc_cli_ctx_get +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 0xcc2c961c llog_origin_handle_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcc69de01 ldlm_register_intent +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 0xceabad23 req_capsule_server_pack +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 0xcf016511 req_capsule_extend +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 0xd1326cbd ptlrpc_invalidate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2983334 lustre_swab_swap_layouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2e0d4eb lustre_msg_get_opc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2fabd90 target_print_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd3977168 req_capsule_other_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd3dae408 ldlm_it2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd537ded2 lustre_swab_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd5d45e02 sptlrpc_cli_enlarge_reqbuf +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 0xd9515afa req_capsule_field_present +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd9561861 RQF_LDLM_INTENT_OPEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd9ec2de3 ldlm_cancel_resource_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xda098140 llog_client_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xda2ac111 sptlrpc_proc_root +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb1fb0a2 RQF_MDS_REINT_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb617421 ptlrpc_queue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb848a95 ldlm_lock_fail_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb9d5a6a lustre_swab_niobuf_remote +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdcf910b9 lustre_swab_ost_last_id +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 0xdd7ff3bc ptlrpc_reconnect_import +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 0xde6e01bb ptlrpc_set_import_active +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdee87192 sptlrpc_conf_log_update_begin +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdeefcb95 sptlrpc_req_replace_dead_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdefa7831 _ldlm_lock_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdf17f1f7 lprocfs_rd_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdf701ae7 lustre_swab_fid2path +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe06263ff lustre_pack_reply_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0afccbc req_capsule_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0cc694c RQF_LLOG_ORIGIN_HANDLE_NEXT_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe12fdb48 ptlrpc_restart_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe40e0a50 lustre_msg_get_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe43bb2f8 req_capsule_set_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe4fd114c lustre_pack_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe57bd972 sptlrpc_current_user_desc_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe643998e RQF_OST_SETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe64e9c7a ptlrpc_req_finished +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe69f543a ptlrpc_request_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe6bfc68c ptlrpc_req_set_repsize +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 0xe72bf0ae req_capsule_server_sized_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7512278 ptlrpcd_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeaa09080 ptlrpc_init_rq_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeaabc74a ptlrpc_register_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeabaa0b1 lustre_swab_mdt_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeabac4fc sptlrpc_rule_set_merge +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeb5fc0a3 sptlrpc_enc_pool_put_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeb6e927b ldlm_blocking_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xebb64e68 req_layout_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xebf6e8d4 ptlrpc_request_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec226f66 ping_evictor_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec4166bb ptlrpc_deactivate_import +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 0xeec1a01b sptlrpc_enc_pool_get_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef1aeca9 RMF_FLD_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef3e09a4 ptlrpc_schedule_difficult_reply +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 0xf0e8ca11 ptlrpc_unregister_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0fe1fbe ldlm_lock_allow_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf1300275 _sptlrpc_enlarge_msg_inplace +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf277c125 RQF_OST_GET_INFO_FIEMAP +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf27d49dc sptlrpc_target_choose_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf35f132b lustre_swab_ldlm_resource_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf381371e ldlm_replay_locks +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 0xf5ad5077 target_pack_pool_reply +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 0xf746a6dd ptlrpc_cleanup_client +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 0xf9a38e85 ldlm_completion_ast_async +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 0xfc18326c llog_origin_handle_next_block +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc2fa83f ptlrpc_del_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc8057ec lustre_pack_reply_flags +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 0xff2a2605 _debug_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff623af0 ptlrpc_replay_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffc807e8 sptlrpc_unpack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffe29c3f RQF_LDLM_ENQUEUE +EXPORT_SYMBOL drivers/staging/media/cxd2099/cxd2099 0xe14f7890 cxd2099_attach +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x0bb50428 go7007_snd_init +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x39b264af go7007_boot_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x74597955 go7007_parse_video_stream +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x7d4e0b95 go7007_read_addr +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x97aa0707 go7007_read_interrupt +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x9fc9a518 go7007_update_board +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xa849c442 go7007_alloc +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xb057653c go7007_register_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xe23027e0 go7007_snd_remove +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x093746c2 rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0e59d577 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1833e1ef rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1a401a3a rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x220945ec rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x25fa9acf rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2e7f88fc rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2fd40818 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x303908f4 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3117612d rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3458a484 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x37a945bd dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x408f6795 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x46dca9b4 rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4890e636 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5075af57 rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x507affb9 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x57a70751 rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5a5bc53f rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6a1be28b rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x729cc23f rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7309c4b2 rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x73a3331a Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x796fe6d6 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7f3fbb31 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x860f2ad7 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x88eb9f3f rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8da7118b RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8fcc9a8c rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9358ce0d rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9a6b833a rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9af930e2 rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9f244693 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa3bb3720 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa704617c rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb81631d7 rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xba3537c2 rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc203f948 free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc406b1fd rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc8db7dbe alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcaf4f885 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcb234bd7 rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd274fc1c rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd75cc168 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd901f8ce rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe1f43545 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xeb7fd538 rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf5765562 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf73ca14a rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfa609136 rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0376c5df ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x07281bc4 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0f118af1 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0f61ee87 ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x12b38ca7 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1dd2e25f ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1de07ac9 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x215d145e ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2614c020 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x27be64aa Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x300f4000 ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x34b40f14 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x372ee3a8 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3f307575 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3ff49885 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4612eeb2 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4ab82afe ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4c8251ec Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x57c5862b ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x60e2ddef ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x660b3136 Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x67c37e47 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x67f180bf ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7206c254 ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7809c632 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7e717bf9 SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x805d30c3 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x837589f4 DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x85b357ea ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8627696e IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x86bea878 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8e15cd28 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9bff1ffc ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9c49c95e ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9ef0f2c3 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa03124e1 DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa10aabb7 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa3bec1ce ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa4c0dbcc ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xacacdb2a ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb3595612 ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbb33b3b6 ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc1f7bae7 ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc84c31da ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcab4fdfd ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd2007fae ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd2a81453 HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd450a4d3 ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd7dca605 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe218a8f2 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe3b4cbfd ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xeb919e27 ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xeeb2905f ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf95dc440 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfa5f5fd7 ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfca27e06 ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x0017f35f set_bp_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x00ea0cde set_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x06d6f244 get_bp_dis_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x09df8f3e set_tap_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x0a8d32c3 get_bypass_slave_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x1936264c set_dis_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x1d2eb8ca get_tap_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x203af1f7 reset_bypass_wd_timer_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2070f14a set_bypass_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x27b990ef get_bypass_info_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2ba7cd35 get_wd_autoreset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2c3f1c17 get_tx_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2f59e636 get_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2fdb893a get_tap_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x361cf40a get_dis_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x45ca99c3 set_wd_autoreset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x550a188c set_bypass_wd_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x5cb59e92 get_bypass_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x66b60122 set_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x675208c0 set_tx_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x692623f2 get_std_nic_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x75131ec6 set_bypass_pwoff_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x76c0b7d0 set_tpl_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x7e872825 get_wd_exp_mode_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x7e8d701e get_wd_expire_time_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x86388b07 get_bp_disc_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x93ae4648 get_wd_set_caps_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x95e42b0d is_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x9df5f807 set_dis_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x9e21f42e set_std_nic_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xa689a214 get_bypass_wd_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xae117788 get_bp_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xc368d30d get_dis_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xccab5de0 get_bypass_caps_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd3e034b3 get_bypass_pwoff_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd9c1ccfc get_bp_disc_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd9d38d97 set_wd_exp_mode_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xe640f06e set_bp_disc_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xecdaa456 set_bp_hw_reset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xedcd3c1b get_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf06d67bf set_bp_dis_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf57c1671 get_bp_hw_reset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf693c3a1 bp_if_scan_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf8237882 get_bypass_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xfa59240d get_tpl_sd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x05af3c4c set_wd_exp_mode +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x05b08a42 set_bp_hw_reset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x0b0d5ce0 get_tap_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x0fc2e83c reset_bypass_wd_timer +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x123a8133 get_tx +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x157ec89c get_bp_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2440f05a get_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2b01d1d4 set_bp_dis_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2c27a2f0 set_dis_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2da97f4b is_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2e86c67b get_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x37416370 get_bp_hw_reset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x37bdab27 get_wd_autoreset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x3da96a18 get_bypass_caps +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4025805e get_bypass_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4940a0cc get_bypass_info +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4d21ff51 get_bypass_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5147360c get_bp_disc_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x515d4df1 get_bypass_slave +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5560267e set_wd_autoreset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5be44d44 set_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x6653590c get_wd_exp_mode +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x6bda14ec get_bp_dis_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x72c618ae set_bypass_wd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x76d47e6f set_bp_disc_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x794e3815 set_tap_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x7c6cbc16 get_tpl +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x84a263dc set_tx +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x8a16f22c set_tpl +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x946ff795 get_wd_set_caps +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x94f6aff2 get_bypass_wd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x9d1ecf73 set_bypass_pwoff +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xb1385629 set_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xbff68c45 set_bypass_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xc871c561 get_dis_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xcee528df set_std_nic +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xd202dd85 get_bypass_pwoff +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xd787f151 get_wd_expire_time +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xdb6a39d2 get_dis_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xebd25ae5 get_std_nic +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf1e9f8c1 set_bp_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf224abd9 get_tap_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf5a591b2 set_dis_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf643fd4c get_bp_disc_pwup +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x3b8caea6 xillybus_do_cleanup +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x69cd2829 xillybus_init_endpoint +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x95664d84 xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x9d022644 xillybus_endpoint_remove +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0ac3ba38 iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x183520e6 iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1ab92982 iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2ad68559 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3bbb26e3 iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3cb3e0fb iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x535b4088 iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x58ab6e0d iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5d8ba1eb iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x60c1ac6b iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7027195d iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x83cfef44 iscsit_handle_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x87f508f3 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9698e8e2 iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9dec0e37 iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa847b730 iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xaf16fa88 iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb5584720 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb930bd97 iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc1fe28e8 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc6a7e6be iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xcb227c61 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xcd640922 iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd4407d41 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd636ea13 iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe6c201aa iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe99fc0a1 iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xea2ffc83 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/target_core_mod 0x00ae0a85 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x02e0ba1a iscsi_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x03cd7499 spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x048d9a8e core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x0f6e39e0 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x11b72317 sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x19604a49 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x1daac018 target_fabric_configfs_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x1e0ab619 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0x1f0592eb sas_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x23aa173d transport_subsystem_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x326250d8 sbc_execute_unmap +EXPORT_SYMBOL drivers/target/target_core_mod 0x32eb132e transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x3342f896 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x34c61bb6 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x352b23e2 core_tpg_add_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x3a0c1309 core_tpg_clear_object_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x3bb4f7f8 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x3c9e2092 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x3d8de2f5 target_fabric_configfs_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x40ff0291 target_fabric_configfs_init +EXPORT_SYMBOL drivers/target/target_core_mod 0x45b360a3 transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x49c0bb90 fc_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x4a5d591a fc_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x4a7d7f57 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x4c720486 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x545f41b9 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x566c747c target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x5d58bfc6 fc_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x602a55c7 target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x68693534 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x6b470bd4 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x6bfcf022 target_configure_unmap_from_queue +EXPORT_SYMBOL drivers/target/target_core_mod 0x6d167b5d transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x750dda1a transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x79714df8 core_tpg_del_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x81257d5b transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x85227411 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x87cf2729 sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x8cf4a6ca target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x8e5e05d7 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x8f113fae transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x92251e98 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x9318b968 iscsi_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x956c475e core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0xa34c3f1d target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xa50d82c4 target_to_linux_sector +EXPORT_SYMBOL drivers/target/target_core_mod 0xa5b53f27 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xadc6747c transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xb24d69e6 target_fabric_configfs_free +EXPORT_SYMBOL drivers/target/target_core_mod 0xb76125b9 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xba1d1009 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xc1327b1d transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0xc5a2bb88 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xc90e2892 spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0xce53d566 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xd30b44eb transport_subsystem_release +EXPORT_SYMBOL drivers/target/target_core_mod 0xe0fac545 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0xe1cbb41b transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xe2fe9788 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xe58596b9 iscsi_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0xe6fdd826 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xebeee58a target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xec95fb50 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xef70fec5 fc_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf1badd08 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0xf3fc8278 sas_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0xf5344c3b core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xf627656c sas_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf6c8ac3d core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0xf75be7b4 spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0xf7b3551d iscsi_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xfac460b3 sas_get_pr_transport_id +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0xc310b10e usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0xa7653b3e unregister_gadget_item +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x0aac2db3 gether_setup_name_default +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x4a8b3ac0 gether_get_host_addr_cdc +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x4d30b71f gether_setup_name +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x588d8e20 gether_disconnect +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x62565e58 gether_get_host_addr_u8 +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x6462e2f9 gether_get_ifname +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x703a4f82 gether_set_gadget +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xa2d54678 gether_set_qmult +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xb5462a48 gether_register_netdev +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xba8ef331 gether_connect +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xc35e5a6c gether_set_dev_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xd17a0d02 gether_set_host_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xde6ba605 gether_get_dev_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xe75da8c9 gether_get_host_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xfb251275 gether_get_qmult +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x007953dc rndis_set_param_dev +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x3a6d4f22 rndis_free_response +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x3ca38e3a rndis_signal_connect +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x4ca90996 rndis_signal_disconnect +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x5d22b406 rndis_register +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x785d494b rndis_msg_parser +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x840dd143 rndis_deregister +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x91851889 rndis_add_hdr +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x988ad2a2 rndis_set_param_vendor +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x9acf72e4 rndis_set_param_medium +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xa90054ee rndis_uninit +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xb971ebca rndis_get_next_response +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xd096d71f rndis_rm_hdr +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xd2fe47b1 rndis_set_host_mac +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x0451f8f8 fsg_show_file +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x1710b539 fsg_fs_bulk_out_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x1b1cc3af store_cdrom_address +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x23be4fca fsg_show_nofua +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x2933ee1d fsg_ss_bulk_in_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x398778e1 fsg_ss_function +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x423845e4 fsg_ss_bulk_in_comp_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x56344daf fsg_hs_bulk_out_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x5b57f757 fsg_lun_fsync_sub +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x6ebc89ab fsg_store_nofua +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x74491712 fsg_store_file +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x75d5014c fsg_show_removable +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x7d7e3164 fsg_show_ro +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x857b6dc2 fsg_hs_function +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x946d360d fsg_store_cdrom +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x95cffb3e fsg_hs_bulk_in_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xa5cae92f fsg_ss_bulk_out_comp_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xa5f99b69 fsg_fs_function +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xae5b64ac fsg_lun_open +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xb52ba28a fsg_intf_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xb54d0d95 fsg_fs_bulk_in_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xd1d25a38 fsg_store_ro +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xdab00cda fsg_store_removable +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xdc86d887 fsg_show_cdrom +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xe4d09814 fsg_lun_close +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xf4efc0c8 fsg_ss_bulk_out_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_rndis 0xb5387b7c rndis_borrow_net +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0x51c4f824 sl811h_driver +EXPORT_SYMBOL drivers/usb/phy/phy-generic 0xa64a4cea usb_nop_xceiv_unregister +EXPORT_SYMBOL drivers/usb/phy/phy-generic 0xd0e43207 usb_nop_xceiv_register +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x11a03841 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x3ded4fe1 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x47be0890 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x571c0a22 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x7315a5e3 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x7cd7c515 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x9d21cc12 usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xaab26fa9 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xbf9ef284 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xc75c04f5 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xd13818e2 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe4a05db1 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xec252cc5 usb_wwan_set_termios +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x62fe9793 usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xb9cdac8b usb_serial_suspend +EXPORT_SYMBOL drivers/vhost/vringh 0x0dda8c5a vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x1f063017 vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x2eae4a2a vringh_getdesc_user +EXPORT_SYMBOL drivers/vhost/vringh 0x36dfce73 vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3b304ebb vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3eaf442a vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x3fa42e4f vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x4311cd91 vringh_iov_pull_user +EXPORT_SYMBOL drivers/vhost/vringh 0x5dafbd4e vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x66af098b vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x6d0e7948 vringh_abandon_user +EXPORT_SYMBOL drivers/vhost/vringh 0x76bd9a5d vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x97fa07e9 vringh_iov_push_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xaf8e4a0e vringh_notify_disable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xafb47dae vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0xc884d704 vringh_notify_disable_user +EXPORT_SYMBOL drivers/vhost/vringh 0xc8bee0a4 vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xda4ea4cc vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0xde804bb9 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/video/backlight/generic_bl 0x366d19ef genericbl_limit_intensity +EXPORT_SYMBOL drivers/video/backlight/lcd 0x07526cb0 lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x67693049 devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x8e75c6f6 devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xaf80c583 lcd_device_unregister +EXPORT_SYMBOL drivers/video/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/cyber2000fb 0x534b6f18 cyber2000fb_disable_extregs +EXPORT_SYMBOL drivers/video/cyber2000fb 0x9793b850 cyber2000fb_attach +EXPORT_SYMBOL drivers/video/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/macmodes 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL drivers/video/macmodes 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL drivers/video/macmodes 0xeaaf8079 mac_find_mode +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x7a65d60b matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x99b5971d g450_mnp2f +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0xed113612 matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x45f59da7 matrox_G100 +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x4d3aa3f3 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x52d3aa8d DAC1064_global_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x907d6b4f matrox_mystique +EXPORT_SYMBOL drivers/video/matrox/matroxfb_Ti3026 0xfe5d5526 matrox_millennium +EXPORT_SYMBOL drivers/video/matrox/matroxfb_accel 0x82f90d1a matrox_cfbX_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x05be8402 matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x16986014 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x468efc35 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0xf6aa63f9 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0x0e230bf1 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0xe0d35fb7 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x108ecb35 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x4fe88a51 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x6013b367 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x62290a0c matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xb3247c2c matroxfb_read_pins +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/mb862xx/mb862xxfb 0x73695bb4 mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/output 0x3f2d1899 video_output_register +EXPORT_SYMBOL drivers/video/output 0x657c6f55 video_output_unregister +EXPORT_SYMBOL drivers/video/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/svgalib 0x1e73aaed svga_get_tilemax +EXPORT_SYMBOL drivers/video/svgalib 0x2f91c870 svga_tileblit +EXPORT_SYMBOL drivers/video/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/svgalib 0x6ba2dd09 svga_get_caps +EXPORT_SYMBOL drivers/video/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/svgalib 0x936437bf svga_settile +EXPORT_SYMBOL drivers/video/svgalib 0x95d7bddf svga_tilefill +EXPORT_SYMBOL drivers/video/svgalib 0xcc673c47 svga_tilecursor +EXPORT_SYMBOL drivers/video/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/svgalib 0xeef52701 svga_tilecopy +EXPORT_SYMBOL drivers/video/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/syscopyarea 0x55e1fb24 sys_copyarea +EXPORT_SYMBOL drivers/video/sysfillrect 0xc1366c94 sys_fillrect +EXPORT_SYMBOL drivers/video/sysimgblt 0xde37043c sys_imageblit +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/vme/vme 0x00d7e722 vme_lm_count +EXPORT_SYMBOL drivers/vme/vme 0x06df9cc0 vme_dma_list_add +EXPORT_SYMBOL drivers/vme/vme 0x072f901c vme_master_rmw +EXPORT_SYMBOL drivers/vme/vme 0x0c6bdc3f vme_master_read +EXPORT_SYMBOL drivers/vme/vme 0x0ec5babe vme_dma_free +EXPORT_SYMBOL drivers/vme/vme 0x0f5d9918 vme_slot_get +EXPORT_SYMBOL drivers/vme/vme 0x1fc1fdaf vme_unregister_bridge +EXPORT_SYMBOL drivers/vme/vme 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL drivers/vme/vme 0x2dd594d8 vme_irq_request +EXPORT_SYMBOL drivers/vme/vme 0x2e24cf54 vme_lm_request +EXPORT_SYMBOL drivers/vme/vme 0x34b7b46b vme_slave_request +EXPORT_SYMBOL drivers/vme/vme 0x34cd41aa vme_register_driver +EXPORT_SYMBOL drivers/vme/vme 0x3e95083c vme_slave_get +EXPORT_SYMBOL drivers/vme/vme 0x46649cd1 vme_lm_set +EXPORT_SYMBOL drivers/vme/vme 0x48b99a13 vme_lm_free +EXPORT_SYMBOL drivers/vme/vme 0x4baf35a7 vme_master_get +EXPORT_SYMBOL drivers/vme/vme 0x52983a4f vme_master_write +EXPORT_SYMBOL drivers/vme/vme 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL drivers/vme/vme 0x5aff4177 vme_lm_get +EXPORT_SYMBOL drivers/vme/vme 0x729255aa vme_dma_list_free +EXPORT_SYMBOL drivers/vme/vme 0x7944a367 vme_register_bridge +EXPORT_SYMBOL drivers/vme/vme 0x79a33f85 vme_get_size +EXPORT_SYMBOL drivers/vme/vme 0x7cf35220 vme_master_free +EXPORT_SYMBOL drivers/vme/vme 0x894720f5 vme_irq_generate +EXPORT_SYMBOL drivers/vme/vme 0x8a35e1ed vme_unregister_driver +EXPORT_SYMBOL drivers/vme/vme 0x903c3a56 vme_new_dma_list +EXPORT_SYMBOL drivers/vme/vme 0x91c501e2 vme_bus_type +EXPORT_SYMBOL drivers/vme/vme 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL drivers/vme/vme 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL drivers/vme/vme 0xa2a335bd vme_alloc_consistent +EXPORT_SYMBOL drivers/vme/vme 0xa31bdf07 vme_master_set +EXPORT_SYMBOL drivers/vme/vme 0xb5a3bd3b vme_dma_list_exec +EXPORT_SYMBOL drivers/vme/vme 0xb5b138e1 vme_irq_handler +EXPORT_SYMBOL drivers/vme/vme 0xc601b4d1 vme_dma_request +EXPORT_SYMBOL drivers/vme/vme 0xca5ee09a vme_free_consistent +EXPORT_SYMBOL drivers/vme/vme 0xdff905e5 vme_slave_free +EXPORT_SYMBOL drivers/vme/vme 0xea3dc8ab vme_irq_free +EXPORT_SYMBOL drivers/vme/vme 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL drivers/vme/vme 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL drivers/vme/vme 0xf8bcb02b vme_master_request +EXPORT_SYMBOL drivers/vme/vme 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x34354f10 w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x482ce996 w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xc789c1aa w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xe653bbb9 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x3240b3bb w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x88362765 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x4b29cbbf w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xfe1f7855 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/wire 0x23e00987 w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0x250ac900 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0x40502c5f w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0xa0515c57 w1_register_family +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0x04e133fc iTCO_vendor_check_noreboot_on +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xa78bd894 iTCO_vendor_pre_set_heartbeat +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xb5f20875 iTCO_vendor_pre_keepalive +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xc4f657bf iTCO_vendor_pre_stop +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xdc6effc9 iTCO_vendor_pre_start +EXPORT_SYMBOL fs/btrfs/btrfs 0x27476846 ulist_reinit +EXPORT_SYMBOL fs/btrfs/btrfs 0x41e6a9d2 ulist_init +EXPORT_SYMBOL fs/btrfs/btrfs 0x7e2ee765 ulist_free +EXPORT_SYMBOL fs/btrfs/btrfs 0xa2eec2e8 ulist_fini +EXPORT_SYMBOL fs/btrfs/btrfs 0xb1320bc8 ulist_add +EXPORT_SYMBOL fs/btrfs/btrfs 0xb42289d2 ulist_alloc +EXPORT_SYMBOL fs/btrfs/btrfs 0xc2c745db ulist_next +EXPORT_SYMBOL fs/configfs/configfs 0x0a6cba5d configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0x0a8e61d7 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x17ceb08a config_item_init +EXPORT_SYMBOL fs/configfs/configfs 0x1d711591 configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x3c7636ea config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0x479753f1 config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0x68d1fa55 config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x7bfe0e0a config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0xb68c971d configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0xeb9d1ba0 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xebf82fd0 configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xed4aa8e1 config_item_set_name +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x2ddb5875 ore_write +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x4c60d539 extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0x61a9424d ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0x6388ecfe ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0x66f03355 ore_create +EXPORT_SYMBOL fs/exofs/libore 0x852a7f7f ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xa5905ae1 ore_read +EXPORT_SYMBOL fs/exofs/libore 0xc92cd3dd ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0xdcff70b3 ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0xe9ca15bb ore_remove +EXPORT_SYMBOL fs/fscache/fscache 0x06deb4ca fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x09dafffd __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x11b54d5b __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x1516bc8f fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0x18a99a64 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x2bf3d9a3 fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0x2c7cfe51 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x2d8ba1a9 __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x31f1af9d __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x3350bb7c __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x3811db79 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x3d9db2a3 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x5583f0fc __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x57d91fcb __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x62278eb1 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x62388b9b __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x6bed15b6 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x73b3bd87 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x7b5a271e fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x81ad52ff fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x8cc9054e __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x90f5aa49 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0xa6bf3905 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0xaa443a67 __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xabaf335d __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0xac320790 fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0xb4b526df __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xc539041c fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0xcc893f90 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0xd5fa6bbe fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0xd6ac5563 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xd8a672db fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0xe5e0ea04 __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0xe74bdba6 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0xe8d704c5 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xf8e873cc __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xfe5dd791 fscache_put_operation +EXPORT_SYMBOL fs/nfsd/nfsd 0x35e33c1e nfs4_acl_write_who +EXPORT_SYMBOL fs/nfsd/nfsd 0x5a157ae4 nfs4_acl_get_whotype +EXPORT_SYMBOL fs/nfsd/nfsd 0xa0f4b528 nfs4_acl_posix_to_nfsv4 +EXPORT_SYMBOL fs/nfsd/nfsd 0xb25b2957 nfs4_acl_nfsv4_to_posix +EXPORT_SYMBOL fs/nfsd/nfsd 0xe13337f0 nfs4_acl_new +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x448cbd78 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x9d9228ea qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0xd397acff qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xe6844ae9 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xfa032c11 qtree_delete_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 0x6c1f6fee crc7 +EXPORT_SYMBOL lib/crc7 0xd80c3603 crc7_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 0x0f0f1605 lc_del +EXPORT_SYMBOL lib/lru_cache 0x2ae6a89a lc_put +EXPORT_SYMBOL lib/lru_cache 0x3b3372b4 lc_reset +EXPORT_SYMBOL lib/lru_cache 0x41111725 lc_get +EXPORT_SYMBOL lib/lru_cache 0x44ec99ee lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0x4645c85f lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0x540b1697 lc_try_get +EXPORT_SYMBOL lib/lru_cache 0x577252ab lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x57ff4d61 lc_is_used +EXPORT_SYMBOL lib/lru_cache 0x5dd01edd lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x62b86d70 lc_get_cumulative +EXPORT_SYMBOL lib/lru_cache 0x76b957fe lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0x7afe19c6 lc_find +EXPORT_SYMBOL lib/lru_cache 0xa977668e lc_set +EXPORT_SYMBOL lib/lru_cache 0xb2deafbf lc_destroy +EXPORT_SYMBOL lib/lru_cache 0xbcdb24bd lc_committed +EXPORT_SYMBOL lib/lru_cache 0xfcc6da8d lc_create +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/802/p8022 0x78d32186 register_8022_client +EXPORT_SYMBOL net/802/p8022 0xa8ad8df3 unregister_8022_client +EXPORT_SYMBOL net/802/p8023 0xd9076a62 make_8023_client +EXPORT_SYMBOL net/802/p8023 0xe95f27da destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0x63e82613 register_snap_client +EXPORT_SYMBOL net/802/psnap 0xf489f469 unregister_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x037ca0af p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x05917686 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x078c7ff6 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x089923e7 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x0e65fa5d p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x1be41a10 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x22a240b0 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x2cb12ad1 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x314a3c92 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x39cfa569 p9_is_proto_dotu +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 0x4b1d81d5 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x4bebbf64 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x4e06918e p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x4efa5363 p9_payload_gup +EXPORT_SYMBOL net/9p/9pnet 0x5b1dd183 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x5b5ad7a6 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x5bdc083d p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x65125cd1 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x675123c6 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x6ce03f36 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0x6d9cc6ce p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x80553261 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0x8499352f p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x901092e0 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x9290c284 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x967836f7 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x96977c33 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x977a0030 p9_nr_pages +EXPORT_SYMBOL net/9p/9pnet 0x9e8817d3 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0xa15bd063 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0xb8ab81c0 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0xc4409c4f p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0xc4cf0e95 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xd40871c0 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0xe0710574 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0xe3072df1 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe60d9b5e p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0xec006a60 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xeca111ff p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfb1881f0 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0xfd1b330d p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/9p/9pnet 0xfd8c3507 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0xfdb43718 p9_client_begin_disconnect +EXPORT_SYMBOL net/appletalk/appletalk 0x5b3de070 aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0x6b9dd4a2 atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0xd0461907 atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0xe21ee85b alloc_ltalkdev +EXPORT_SYMBOL net/atm/atm 0x07328076 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x32134504 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x3323e444 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x4d03d8e4 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x610541f1 atm_charge +EXPORT_SYMBOL net/atm/atm 0x70c2b3ac vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x7c00096b atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x7edfaabd vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x854d265d deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x8fd72541 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x93136f41 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0x99430b71 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xb552e3e3 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/atm/atm 0xfbb4a0b2 atm_dev_deregister +EXPORT_SYMBOL net/ax25/ax25 0x026c1368 ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0x17d2cb45 ax25_rebuild_header +EXPORT_SYMBOL net/ax25/ax25 0x1d6e2168 ax25_listen_release +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 0x72e70731 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x816e32e5 ax25_hard_header +EXPORT_SYMBOL net/ax25/ax25 0x8e549ad4 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0xa8262d73 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xc43547e5 ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0xcaf9b013 ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xe5aacd3e ax25_listen_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0623fe36 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x101ebb6d l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x103f8d76 l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0x17285aca bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x18249e9f bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1e0151d8 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x23d33f88 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x25b0664a bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2af1a195 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x33c9f496 l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x38229b04 bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4795cbd0 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x54273d47 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x55188df5 hci_recv_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x571551e5 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5a82c747 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5e88211f bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x66579bc0 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x686ec519 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x69df7ad2 __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6ed64321 l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0x702c720d hci_recv_stream_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x72459756 hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7c640527 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x83ac00a9 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8b923dd1 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91a4a6fa bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa06baab2 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa9767716 l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb3595b23 bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb61a0c3b bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc24aef14 __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd4d5369b hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdec619e1 bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe249de41 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe5d6d63a hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xeade063d bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf2a3b479 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf89fd62a hci_register_cb +EXPORT_SYMBOL net/bridge/bridge 0x5b4fa17b br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x4deb6eac ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xc7affa0d ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xfde36364 ebt_unregister_table +EXPORT_SYMBOL net/caif/caif 0x023debd2 caif_disconnect_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 0x4bca10e2 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 0x97ab0a94 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 0xc8fc4c8c cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0xe9475d4e get_cfcnfg +EXPORT_SYMBOL net/can/can 0x850bce84 can_rx_unregister +EXPORT_SYMBOL net/can/can 0x9b7a4025 can_ioctl +EXPORT_SYMBOL net/can/can 0xc22fc1d4 can_rx_register +EXPORT_SYMBOL net/can/can 0xe5e4b9a6 can_proto_register +EXPORT_SYMBOL net/can/can 0xf593aa9d can_proto_unregister +EXPORT_SYMBOL net/can/can 0xfe7493c8 can_send +EXPORT_SYMBOL net/ceph/libceph 0x0464721a osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x07fb426e ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x080798bb ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0943d31f ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0x0af7aea5 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x0d5c272d ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0x0d61c270 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0x0ee266b1 ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0x12e63ff6 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x1475bf0d ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x197effcb ceph_osdc_release_request +EXPORT_SYMBOL net/ceph/libceph 0x1bb19b5a ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x1c373300 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x1edcaacf osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x2195fc21 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0x2370a295 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x24324616 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x2b10d4ba ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x3757b118 osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x392d415a osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3df0ec7c ceph_calc_ceph_pg +EXPORT_SYMBOL net/ceph/libceph 0x3e513e0a osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x402a20e1 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x40d1c8ee ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x4205ffd7 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x433061b6 ceph_copy_to_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 0x45678532 ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x4a283545 ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x4b92cd07 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x4f54a67b osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x4f707ca1 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x516c8713 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x5494618a ceph_monc_create_snapid +EXPORT_SYMBOL net/ceph/libceph 0x570ceb67 ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x5b920fd8 ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0x61e16469 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x630934f2 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x63f8dadc ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x642b7ed0 ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x657d286c ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x671349d0 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x6714070a ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0x69562b13 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6c5d5ac1 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x6f1677a2 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x7168baf8 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0x75ab9cfb osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0x77692acb ceph_msg_last_put +EXPORT_SYMBOL net/ceph/libceph 0x81eae1b6 ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0x82736d65 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x8418f7b3 osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0x8449ba64 osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x8794773d ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x92209e96 osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0x969457f4 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 0xa6a395f2 ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xa6fe9af2 ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0xac2f6fb5 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xafcbcb85 ceph_copy_page_vector_to_user +EXPORT_SYMBOL net/ceph/libceph 0xb0ed437f ceph_osdc_unregister_linger_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 0xbfcddd17 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0xc02b0b47 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0xc341aefc osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc55de604 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xc56865d6 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xca49dd23 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xcdb46d57 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xcebc420f ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd56ce767 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0xd6d509d3 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0xd8976aa1 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xdcc442a2 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0xe3d5a35f ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0xe575af44 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xe7854a48 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xe82c9c32 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0xed229339 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xf22b7660 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0xf4183c67 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xf5774cba ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0xf710ae37 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0xfbf884d3 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xfed2054c ceph_create_client +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x45817d31 dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/ieee802154 0x25924f40 ieee802154_nl_disassoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x33257526 ieee802154_nl_disassoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x446fb069 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0x4f417247 ieee802154_nl_assoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x53437ccb ieee802154_nl_assoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x5567825e ieee802154_nl_start_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x59fd4291 wpan_phy_alloc +EXPORT_SYMBOL net/ieee802154/ieee802154 0x741d4a2f ieee802154_nl_scan_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x81a619f0 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x82bb732f wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0xd286fe8e wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0xe469dd30 ieee802154_nl_beacon_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0xefa6c521 wpan_phy_unregister +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x80b66497 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x96914b4c arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xc5ad647e arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x2629a458 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x3e903944 ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xcad8719b ipt_do_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x0d24ab5b xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0xe159b7d8 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x3313b772 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xe9a40e8c ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x975d0ce4 ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xa476af98 ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xc038cf5a ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x77600f8f xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0x79eafc67 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x7d700476 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xaf667d9e xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x3f632b88 ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x56de0aef ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x8c2d6316 ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xaf334066 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xb256484e ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xed258608 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xf99b28a5 ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xfa114a3d 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 0x09f58a8b hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0x0b2c44c7 iriap_open +EXPORT_SYMBOL net/irda/irda 0x2036ad06 irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x26e6b539 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x292ae821 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x31484361 irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x32aa4cb0 irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x3b6d5f65 hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0x3fb34829 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x42a9904d irias_delete_object +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 0x47348a9f irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0x483acd89 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x6146b587 async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x615ee918 irias_new_object +EXPORT_SYMBOL net/irda/irda 0x64d66e39 irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x66ef7db3 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x6929ccd4 irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x6b9f63cc irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x72fe3407 irlap_close +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x76ef9f52 irias_insert_object +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7a018606 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x7dabe31e hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x7fb81606 irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0x86b5f4ce hashbin_delete +EXPORT_SYMBOL net/irda/irda 0x8b69b459 hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x8fcaa4e1 irlap_open +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x961e71ad irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0x993ad14b irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x99d03a16 irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x9a61c8a1 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0xa036d6e8 irttp_dup +EXPORT_SYMBOL net/irda/irda 0xa4548c32 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0xad66e1db hashbin_get_first +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 0xc1b3522c irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0xc310cf21 hashbin_new +EXPORT_SYMBOL net/irda/irda 0xc6eef475 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0xcb8c4068 irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0xce57711b iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0xd1ae6745 irias_find_object +EXPORT_SYMBOL net/irda/irda 0xd57045a8 hashbin_find +EXPORT_SYMBOL net/irda/irda 0xd6deeaae irda_setup_dma +EXPORT_SYMBOL net/irda/irda 0xddafbe9b iriap_close +EXPORT_SYMBOL net/irda/irda 0xddc0b771 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xdfde41fb irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/l2tp/l2tp_core 0xefdf5808 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x1758c4e7 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x20b20059 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x434805cb lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x9e195e70 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0xa2fe8a4c lapb_register +EXPORT_SYMBOL net/lapb/lapb 0xa46fde4b lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0xbce88ace lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0xfb9fa49f lapb_unregister +EXPORT_SYMBOL net/llc/llc 0x061ab241 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 0x67364840 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x6c6cdb31 llc_sap_list_lock +EXPORT_SYMBOL net/llc/llc 0x74511961 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x780a40ac llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x881f150e llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0x9c3bfd56 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0xb3eefd7a llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/mac80211/mac80211 0x009376f2 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x02427671 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x0b36b406 ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x0ba0c01e ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x0ffdf2b1 ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x108ded2b ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x1277af76 ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0x137fa12b wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x17ff2058 ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x21715961 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x21a2ae71 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x27ac6ae2 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x283ea732 ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x2cb7528c ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0x2cf9ed5f ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x2d092727 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x31bf0022 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x361d6d5e ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x3671dd57 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x442e1888 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x44e45d12 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0x45b51faa ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x4b84ef22 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x4da77729 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x4fc812fe ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x51419378 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x545951cd ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x557409e9 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x5769fe3b ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x57811875 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x58c07fb0 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x5c28cca5 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x6753beb0 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x72366479 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x73302714 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x7acc86d5 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x7f3ce163 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x83531294 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x8518bd13 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x866aa1c6 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x88a8b06e ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x99bb3d55 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x9abae687 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x9acd72f4 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x9c5e6334 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0x9cbaab66 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x9ce3a600 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xa1fc36c4 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xaa157485 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0xac053db2 ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0xaee4ce55 ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0xb13222f4 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xb8982d56 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xbc87ac37 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xc7e9782e ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xc8fe4225 ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0xcccafe99 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xce0ab301 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xd07fa2f7 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xd3b1faed ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0xddb47d52 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xdf323085 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0xe3529db4 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0xe42da4ef ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xe8f48e58 ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0xec28af34 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xf395de03 ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0xf725401e ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xfab82b43 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xfb326e50 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xfc490130 ieee80211_alloc_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xfdae4274 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xfeb4faeb __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac802154/mac802154 0x0e404ec5 ieee802154_register_device +EXPORT_SYMBOL net/mac802154/mac802154 0x21f05129 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0x6d0bd23d ieee802154_alloc_device +EXPORT_SYMBOL net/mac802154/mac802154 0xecb266d4 ieee802154_unregister_device +EXPORT_SYMBOL net/mac802154/mac802154 0xfa6edaa6 ieee802154_free_device +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x23de5c11 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x30c6d707 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x320d1167 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x3d35ef2c register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x3fee0fab ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x60f8b9ce ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x619d58a5 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x6c942601 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x8e9cade6 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa097d5c2 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc65fc003 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe16d3bdf register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xed4bc349 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xf2c2354c ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x6845777b __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xb25bc459 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xcc9e32e2 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_conntrack_proto_gre 0x9f9e367c nf_ct_gre_keymap_flush +EXPORT_SYMBOL net/netfilter/nf_nat 0x142586d7 nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0x3509c66e nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0x5a8a3900 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x6ff33e0f __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x7e247d08 nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0xaf6b4553 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/x_tables 0x03c8216a xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x08a753d4 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0x08c473b7 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x253e8b44 xt_compat_init_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x46dfb346 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x4bb115a9 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x6ffc37ec xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x7294d556 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x87965c23 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xa25fc115 xt_compat_check_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0xb28f5ef1 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xd87ae60d xt_check_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0xf1e4ccb7 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xf4eb64ef xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0xfe606bfe xt_register_targets +EXPORT_SYMBOL net/nfc/hci/hci 0x363786dd nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x36d4c346 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x435f16c8 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x4371b75e nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x44c63d10 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x4f8ba4a5 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x63713cc9 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x6809f900 nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0x7dc7917f nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0xa3f4a69d nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0xafdea6ae nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0xb95ceed9 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xc09a09eb nfc_hci_send_response +EXPORT_SYMBOL net/nfc/hci/hci 0xc392bf96 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0xc7397f14 nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xd1f378b4 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0xf3e9f5c6 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xf49cc19e nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x01bba725 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x145dd5f7 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x4a1387dd nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x68b1c678 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x7dd392b5 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nfc 0x06d7d7a0 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x167797a4 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x1770ae24 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x1e288a36 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0x2f2ae1ce nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0x36821c3d nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x4d7b1ca6 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x52497664 nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0x61ff701d nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x6e472968 nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0x70b0668a nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x7ba85942 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0x80e8c35f nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x8deabea2 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x9af7b019 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x9e1f2995 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0xb0d74305 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xbca87f79 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0xd3a4d09a nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0xdfc170d7 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc_digital 0x4fa8b4bd nfc_digital_register_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x68b22d40 nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x9155f8b6 nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xe32865d7 nfc_digital_unregister_device +EXPORT_SYMBOL net/phonet/phonet 0x1278d61a pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0x471a06f7 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0x7a4ad89c pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0xc04728e0 phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0xe0695c6b pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0xedd6fba2 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0xf09aa3d8 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0xf135783f phonet_header_ops +EXPORT_SYMBOL net/rds/rds 0x7505d413 rds_str_array +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x10d9008f rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x19901606 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x2912d005 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x51e86815 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x545a6de8 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x8993beb8 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x8dc83a54 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x98e71ba4 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa065e89c key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa96faa82 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xabff2ab4 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xae08a491 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc2d847f3 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc9e4adfa rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xdac35b06 rxrpc_kernel_end_call +EXPORT_SYMBOL net/sctp/sctp 0x549c2a92 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x15382a9a gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xec59f806 gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xf76e3bd3 gss_mech_get +EXPORT_SYMBOL net/sunrpc/sunrpc 0xf496ffeb svc_pool_stats_open +EXPORT_SYMBOL net/wimax/wimax 0x4066fcd9 wimax_reset +EXPORT_SYMBOL net/wimax/wimax 0xd7c1f30d wimax_rfkill +EXPORT_SYMBOL net/wireless/cfg80211 0x001fd73d cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x00444d5a cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x06368cab freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0afbac28 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x168ea0e8 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1bb0d224 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x21303ee2 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x22fa3c9d cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0x25a51f21 wiphy_new +EXPORT_SYMBOL net/wireless/cfg80211 0x292a0905 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x2c19c765 cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0x2f5f50b6 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x307cb006 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x3205ec43 cfg80211_inform_bss_width_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x3ee9d862 cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x406a8302 cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x41945252 cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0x45c91950 cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0x47d85aaf ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x4933ed72 cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x4c3b5878 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x4c40b2fb ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x4fbcea82 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x4fdca721 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x522b0c00 cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x549ae50f ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x5a1fbefc cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x5ca04e44 cfg80211_del_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x623d2c9a cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x67fc84de cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x69548b08 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6c97b551 cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x7096e96d cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x7b2966ec cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x7dc9865d ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x8215fdc9 cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0x840402cb cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x8531cafa cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x8d76d169 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x8eafa4a8 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x95ead02e cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x995380f3 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x9e8c133f wiphy_free +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 0xa5ffee8c cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xa657589c cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xabceb1fd cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xb1dbea05 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0xb39cbc18 cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0xb7452beb cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xb90c7530 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0xb90f56dc cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xb9a4e799 cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0xc15c8611 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xc1d7bdc3 cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xc517f3d5 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xccfa2c5e cfg80211_inform_bss_width +EXPORT_SYMBOL net/wireless/cfg80211 0xccffa67f cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0xcd80b035 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xcf618a57 cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0xd02f6b04 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xd1a9ff49 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0xd4dcdcd2 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xd6e8daef cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xd7be51c9 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xdde66912 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0xde321acc regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0xdfbb1e34 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0xe37602ca cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0xe72fa948 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xe843b9e1 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0xee42db3c cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0xf3d15680 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xf7868566 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x082390e6 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0x258281d2 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x2d0f99e5 print_ssid +EXPORT_SYMBOL net/wireless/lib80211 0x37cc2fff lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x842867e5 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x9d144211 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0xdfdc00e2 lib80211_crypt_info_free +EXPORT_SYMBOL sound/ac97_bus 0x78969e8a ac97_bus_type +EXPORT_SYMBOL sound/core/seq/snd-seq 0x0e9576ed snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1a724fcc snd_seq_kernel_client_ctl +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3061c52d snd_use_lock_sync_helper +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3d4a95e3 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 0x6aa6723b 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 0x79ca97bf 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 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 0x3a57f235 snd_seq_autoload_unlock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x66b997f2 snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xb362925d snd_seq_device_register_driver +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xb90668b2 snd_seq_autoload_lock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xc622fb29 snd_seq_device_unregister_driver +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 0x01b82065 snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x0d2b74da snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x2ceec35d snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x668570c0 snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x7f92860c snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xb494afee snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xc7b2b6c2 snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xe0a50454 snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0xc4ab1711 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x02e7e5a4 snd_card_proc_new +EXPORT_SYMBOL sound/core/snd 0x10f30ae8 snd_device_new +EXPORT_SYMBOL sound/core/snd 0x11c3f754 snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x18e1683f snd_dma_program +EXPORT_SYMBOL sound/core/snd 0x191e88cf snd_dma_pointer +EXPORT_SYMBOL sound/core/snd 0x1c96b1a5 snd_card_unref +EXPORT_SYMBOL sound/core/snd 0x1f47fc2d snd_component_add +EXPORT_SYMBOL sound/core/snd 0x1fe1fb97 snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x26d4895d snd_power_wait +EXPORT_SYMBOL sound/core/snd 0x2ae3deaa release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0x31a451b1 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0x342a2354 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x34e81449 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x377519ee snd_card_free +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x3a236ed2 snd_register_device_for_dev +EXPORT_SYMBOL sound/core/snd 0x3d8a127e snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0x4175da09 snd_jack_report +EXPORT_SYMBOL sound/core/snd 0x4716409a snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4b015768 snd_iprintf +EXPORT_SYMBOL sound/core/snd 0x4ec369b2 snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0x5b30f6bb snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0x61ea2b9f snd_device_register +EXPORT_SYMBOL sound/core/snd 0x69fca823 snd_ctl_unregister_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x6ff78ba1 snd_add_device_sysfs_file +EXPORT_SYMBOL sound/core/snd 0x70bd5e45 snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x77434165 snd_card_register +EXPORT_SYMBOL sound/core/snd 0x7e87b027 snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x85553b2b snd_jack_new +EXPORT_SYMBOL sound/core/snd 0x871446d8 snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0x87a431d5 snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0x87ceecef snd_ctl_register_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x88224d74 snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0x88d673b9 snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x9166b3fa snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0x9bd1da32 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x9be01d07 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0xa3864bf5 snd_cards +EXPORT_SYMBOL sound/core/snd 0xa8c59996 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0xa93ea1f0 snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0xa94e1b88 snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0xab149cce snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0xad9ba74c snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0xb2bbc901 snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xb34abdf5 snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0xb7749fc8 snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0xcfa2bbd8 snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0xd3cec514 snd_info_register +EXPORT_SYMBOL sound/core/snd 0xdc05c84e snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0xe03b1bd5 snd_device_free +EXPORT_SYMBOL sound/core/snd 0xe2bb25d8 snd_card_create +EXPORT_SYMBOL sound/core/snd 0xea2d2b01 snd_seq_root +EXPORT_SYMBOL sound/core/snd 0xeadbc08b _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0xfffd89db copy_from_user_toio +EXPORT_SYMBOL sound/core/snd-hwdep 0x1c85a5a2 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-page-alloc 0x06b310c9 snd_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x120e6706 snd_dma_reserve_buf +EXPORT_SYMBOL sound/core/snd-page-alloc 0x1c30c096 snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x5898dcba snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x6e050f98 snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x9835da46 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-page-alloc 0xca34c226 snd_sgbuf_get_chunk_size +EXPORT_SYMBOL sound/core/snd-page-alloc 0xddae2fbd snd_dma_get_reserved_buf +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 0x054b81a5 snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0x0688659c snd_pcm_sgbuf_ops_page +EXPORT_SYMBOL sound/core/snd-pcm 0x0840b8d2 snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0x0e9ba419 snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0x161e1630 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0x1a44089a snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x1f7036a6 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x232ac970 snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x257f5bcf snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0x28ae4408 snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0x2c443ee3 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0x36396106 snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x375a1993 snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL sound/core/snd-pcm 0x44a7a028 snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0x463d2d14 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0x4b947ac0 snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x52abcfdc snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x557ecf35 snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0x585ed154 snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x5c74296d snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0x5db23c2d snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x607d8445 snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL sound/core/snd-pcm 0x668f7eb7 snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0x67532f06 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x6909414b snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0x6ce67d99 snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0x6d6d13fd snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x705fa5a7 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x77fe38d6 snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x7a18c64e snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x7ceedf03 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x7f6b86ab snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x834dc955 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x8505a802 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0xa459eb86 snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0xa5c385ca snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xa9adc229 snd_pcm_link_rwlock +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xba34bd48 snd_pcm_debug_name +EXPORT_SYMBOL sound/core/snd-pcm 0xc4ecd187 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0xd6a4a88c snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0xda923582 snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xde650198 snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xe94bf4fa snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xf477fe11 snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0xf4f60778 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0xf8821b7a snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x195b3d8a snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x2e85face snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x356dc5c4 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x38894463 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0x3a3327b9 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0x4337f4ec snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x591ec380 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x66c93ef9 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x88364e45 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0x928c87f8 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x93115212 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x9515561c snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa29a10da snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc04adc24 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd5147585 __snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe66481cb snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe83c4a52 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf395d663 __snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xfa6c46d0 snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-timer 0x2ada8bdd snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0x34140951 snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0x34bc3f9b snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0x4f9d0c1c snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0x60cf50f6 snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0x8643a2a8 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0x8a379fbd snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0x8f0e7a81 snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0x93a358ce snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0x97e5d807 snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0xa9d15394 snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0xc14ca5fd snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0xe20364ed snd_timer_interrupt +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x4f05a4c8 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 0x086e409e snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x14c82b24 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x2211a931 snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x22a4f2f6 snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x2a098dcb snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x2dc6472c snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x45cced87 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x918e428c snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xe10c7a79 snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x2c4c3cf4 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x76ecdd01 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x7dd5ee93 snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x9b14cdee snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xa9babe7f snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xbf6525ce snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xd3b729d7 snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xd3d1452c snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xface3385 snd_vx_suspend +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x10a75d4b amdtp_out_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2151dbf0 cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x36923197 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3fceb933 amdtp_out_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x48e1c3eb amdtp_out_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4920e439 amdtp_out_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6ac3f3eb amdtp_out_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6eb70a4b iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7ea5f798 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x83d02cde snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8e4b09c7 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8ef517ed cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x92006254 amdtp_out_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9b774240 fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9c41cf72 amdtp_out_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa6fd3e76 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb0454b71 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb672d705 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb9243bf1 amdtp_out_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbca38c57 amdtp_out_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc38a0a6e fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc4513b67 cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc7844a47 fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd0948f04 amdtp_out_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd969a9eb fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf5431a4b amdtp_out_stream_destroy +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x0d3e2d83 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x5e26ffc0 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x5f47ad53 snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xd2e3bb8c snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xd9c35df1 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xdb17d9db snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x25501319 snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x27f45767 snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x40069268 snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x565c57a8 snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x5f2483e2 snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xbff4db51 snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x5e7a26b6 snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xd5d49be4 snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xd7478d33 snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xf21fa323 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x86906097 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xd35d52dc snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x0055530d snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x1375b730 snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x1b1c3c2b snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x4e3a6c3f snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xff8d918b snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-i2c 0x2e1ae2fe snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x48e3eaad snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x6a0253e6 snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0x90999b24 snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x90cdd9dd snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x99844f72 snd_i2c_device_free +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x096d336d snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x0c8fed56 snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x1eb1c3b2 snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x251c7a58 snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x364099f7 snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x626ff4a5 snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x70eb5951 snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x8f3d6953 snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x9fadf169 snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xc88acd20 snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x6f156518 snd_sb16dsp_pcm +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xe0b3f690 snd_sb16dsp_interrupt +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xed78f762 snd_sb16dsp_get_pcm_ops +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xf96d0502 snd_sb16dsp_configure +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x05680a86 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x30eddaa0 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x59be6e76 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x62efbb5d snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x642656b5 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x716c98f3 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x817f7389 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x967524b2 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x975239a2 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9db642dd snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xa4c74988 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xa4d4172b snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xbb4294f0 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xbc8b7445 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc8aa42bc snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xcba03fe7 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xec1a8ea0 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/asihpi/snd-asihpi 0x3c46606f hpi_send_recv +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x10d3a2d1 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x3791c1fc snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x4485dd12 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x6affe6ec snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x7438197d snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x87f7a269 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xc196764b snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xd79e6726 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xe82e2776 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x3a08b57c snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xa1a05226 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xee7cb2e4 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x0f33109b oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x13edbbba oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1b4732e4 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2cf9a129 oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x32771408 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x34f2c26f oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x3cc134aa oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5a184d55 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5fa1682d oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x6559ff80 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x65d9beb4 oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x687c1e83 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x6ec2ca8d oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x8d689fcb oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa1da2d56 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc0829dc4 oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd3762ac9 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd7053dcd oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf2f2718d oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xffb51971 oxygen_write16 +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x0e6658fc snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x1e6a6e12 snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x40cec72d snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x5176b1eb snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xf74f81f1 snd_trident_free_voice +EXPORT_SYMBOL sound/soundcore 0x6a9a7506 sound_class +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x10a3f878 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x258696b4 snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x27635a8d snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x41f5bb09 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 0xdcbad0df snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xdf4a5edc snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/snd-util-mem 0x08735b2e __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x527a40d1 snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x6b81d43e __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x71e602f9 snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0xbb57a7c2 snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xf3623dac snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xf8b301f1 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0xfd7d0211 __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 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xdfabb1a0 snd_usbmidi_create +EXPORT_SYMBOL vmlinux 0x00000000 __symbol_put +EXPORT_SYMBOL vmlinux 0x00000000 alloc_pages_current +EXPORT_SYMBOL vmlinux 0x00000000 current_fs_time +EXPORT_SYMBOL vmlinux 0x00000000 d_tmpfile +EXPORT_SYMBOL vmlinux 0x00000000 do_sync_read +EXPORT_SYMBOL vmlinux 0x00000000 filp_close +EXPORT_SYMBOL vmlinux 0x00000000 finish_open +EXPORT_SYMBOL vmlinux 0x00000000 generic_getxattr +EXPORT_SYMBOL vmlinux 0x00000000 generic_write_sync +EXPORT_SYMBOL vmlinux 0x00000000 get_unmapped_area +EXPORT_SYMBOL vmlinux 0x00000000 in_group_p +EXPORT_SYMBOL vmlinux 0x00000000 inode_add_bytes +EXPORT_SYMBOL vmlinux 0x00000000 iov_shorten +EXPORT_SYMBOL vmlinux 0x00000000 iterate_fd +EXPORT_SYMBOL vmlinux 0x00000000 ns_capable +EXPORT_SYMBOL vmlinux 0x00000000 path_is_under +EXPORT_SYMBOL vmlinux 0x00000000 register_exec_domain +EXPORT_SYMBOL vmlinux 0x00000000 schedule_timeout +EXPORT_SYMBOL vmlinux 0x00000000 sock_register +EXPORT_SYMBOL vmlinux 0x00000000 sys_close +EXPORT_SYMBOL vmlinux 0x00000000 task_nice +EXPORT_SYMBOL vmlinux 0x00000000 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x00000000 vm_brk +EXPORT_SYMBOL vmlinux 0x00092c3a bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x000996a8 x86_hyper_vmware +EXPORT_SYMBOL vmlinux 0x0024f116 generic_file_splice_write +EXPORT_SYMBOL vmlinux 0x004068de pnp_stop_dev +EXPORT_SYMBOL vmlinux 0x007a8072 seq_release_private +EXPORT_SYMBOL vmlinux 0x00801678 flush_scheduled_work +EXPORT_SYMBOL vmlinux 0x009e8949 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x00bf9f91 efi +EXPORT_SYMBOL vmlinux 0x00e7e8b5 skb_pull +EXPORT_SYMBOL vmlinux 0x00f7687a generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x01420500 netdev_warn +EXPORT_SYMBOL vmlinux 0x0156171b sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x015c6c34 skb_make_writable +EXPORT_SYMBOL vmlinux 0x015ddbdc wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x018f6f75 simple_write_end +EXPORT_SYMBOL vmlinux 0x01902adf netpoll_trap +EXPORT_SYMBOL vmlinux 0x0196b3ad kern_path_create +EXPORT_SYMBOL vmlinux 0x01c3a3b3 kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0x020c9c51 thaw_bdev +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x0220adf6 bio_phys_segments +EXPORT_SYMBOL vmlinux 0x02272a90 fget_light +EXPORT_SYMBOL vmlinux 0x0237b57a arch_unregister_cpu +EXPORT_SYMBOL vmlinux 0x02557d0c agp_enable +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x029444f0 native_read_tsc +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02d3acc0 bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0x02f0bec1 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x02f62e8b rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x03149ec7 tcp_prequeue +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x03451608 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x03498156 cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x03541809 inode_init_once +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x035a9da7 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x035ac335 capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x03674e80 dquot_transfer +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x03827fbb page_readlink +EXPORT_SYMBOL vmlinux 0x0385c324 commit_creds +EXPORT_SYMBOL vmlinux 0x03a4b3ea amd_iommu_domain_set_gcr3 +EXPORT_SYMBOL vmlinux 0x03ae45b0 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x03c06156 bitmap_fold +EXPORT_SYMBOL vmlinux 0x03cd8eb3 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x03d4e826 build_skb +EXPORT_SYMBOL vmlinux 0x03db8187 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0x03e18c10 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x03ebda85 dns_query +EXPORT_SYMBOL vmlinux 0x03f40a08 vmap +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x0426f6d6 rtnl_create_link +EXPORT_SYMBOL vmlinux 0x0444b10d mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0x04479fec agp_put_bridge +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x044f3135 mdiobus_read +EXPORT_SYMBOL vmlinux 0x045c5be3 compat_nf_getsockopt +EXPORT_SYMBOL vmlinux 0x046a857e sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x046eebbc skb_copy_expand +EXPORT_SYMBOL vmlinux 0x048199bf nlmsg_notify +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x04889c58 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x04901b72 pnp_activate_dev +EXPORT_SYMBOL vmlinux 0x04927208 cpu_active_mask +EXPORT_SYMBOL vmlinux 0x049ab369 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x04a0f489 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x04a6223b __idr_pre_get +EXPORT_SYMBOL vmlinux 0x04a7676c from_kgid +EXPORT_SYMBOL vmlinux 0x04bbf0e3 gen10g_config_aneg +EXPORT_SYMBOL vmlinux 0x04d8c750 release_perfctr_nmi +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04ea5d10 ksize +EXPORT_SYMBOL vmlinux 0x04f852fe devm_gpio_request +EXPORT_SYMBOL vmlinux 0x05052512 tcp_seq_open +EXPORT_SYMBOL vmlinux 0x050877b9 dmi_first_match +EXPORT_SYMBOL vmlinux 0x05115c39 skb_dequeue +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x052713aa phy_start +EXPORT_SYMBOL vmlinux 0x053eb9c3 register_shrinker +EXPORT_SYMBOL vmlinux 0x054434d6 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x05462092 mfd_add_devices +EXPORT_SYMBOL vmlinux 0x055c8559 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x0562027f ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x057da7a8 skb_copy +EXPORT_SYMBOL vmlinux 0x05872a82 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0x058868c3 pci_bus_type +EXPORT_SYMBOL vmlinux 0x058a622c dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x0593a99b init_timer_key +EXPORT_SYMBOL vmlinux 0x059a33cc have_submounts +EXPORT_SYMBOL vmlinux 0x059d7451 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x05b0fc56 pci_set_master +EXPORT_SYMBOL vmlinux 0x05d16cca sk_free +EXPORT_SYMBOL vmlinux 0x05f4100f inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x0600b25e __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x06078be0 zerocopy_sg_from_iovec +EXPORT_SYMBOL vmlinux 0x060a44cb tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x06134d3e dentry_path_raw +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x0619bfa4 uart_get_divisor +EXPORT_SYMBOL vmlinux 0x061f4039 acpi_get_table_with_size +EXPORT_SYMBOL vmlinux 0x062e0650 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x0634b9a3 __pci_register_driver +EXPORT_SYMBOL vmlinux 0x06497b30 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x064ec97d register_quota_format +EXPORT_SYMBOL vmlinux 0x066f7d07 simple_fill_super +EXPORT_SYMBOL vmlinux 0x0677435a register_console +EXPORT_SYMBOL vmlinux 0x0679557e unregister_quota_format +EXPORT_SYMBOL vmlinux 0x06797871 vm_stat +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x06807788 ip_ct_attach +EXPORT_SYMBOL vmlinux 0x068c7263 ioremap_cache +EXPORT_SYMBOL vmlinux 0x069c1564 truncate_pagecache +EXPORT_SYMBOL vmlinux 0x06b261f5 max8925_reg_write +EXPORT_SYMBOL vmlinux 0x06c0dae5 __kernel_fpu_end +EXPORT_SYMBOL vmlinux 0x06c26161 __dst_free +EXPORT_SYMBOL vmlinux 0x06c26610 generic_show_options +EXPORT_SYMBOL vmlinux 0x06cf875f xfrm_cfg_mutex +EXPORT_SYMBOL vmlinux 0x06f0d15b tcp_syn_flood_action +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x0723d67b bio_init +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x073dfa12 generate_resume_trace +EXPORT_SYMBOL vmlinux 0x076013eb inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x076fe672 create_empty_buffers +EXPORT_SYMBOL vmlinux 0x07753906 scsi_nonblockable_ioctl +EXPORT_SYMBOL vmlinux 0x077d364d skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0x0799aca4 local_bh_enable +EXPORT_SYMBOL vmlinux 0x07a7a518 irq_to_desc +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07a8b15a inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07f3c8a0 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x07f815f7 dev_close +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x084600d1 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x0846f59a cpu_info +EXPORT_SYMBOL vmlinux 0x08476691 inet_frag_find +EXPORT_SYMBOL vmlinux 0x085a498f filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x0897287b acpi_disable_all_gpes +EXPORT_SYMBOL vmlinux 0x08b0f05d ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x08e2b274 pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0x08e418b2 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x08f64aa4 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x09090099 ata_link_printk +EXPORT_SYMBOL vmlinux 0x092c5f0e pci_disable_msi +EXPORT_SYMBOL vmlinux 0x09571aa7 phy_device_create +EXPORT_SYMBOL vmlinux 0x095e27f5 fasync_helper +EXPORT_SYMBOL vmlinux 0x09743992 generic_setlease +EXPORT_SYMBOL vmlinux 0x0974c4b4 scsi_device_put +EXPORT_SYMBOL vmlinux 0x098431ba acpi_get_current_resources +EXPORT_SYMBOL vmlinux 0x098b6dac proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x098ce7d6 neigh_event_ns +EXPORT_SYMBOL vmlinux 0x0992780d efi_enabled +EXPORT_SYMBOL vmlinux 0x09945e90 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x0998ad08 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x099a1c06 ip_defrag +EXPORT_SYMBOL vmlinux 0x099faa17 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x09a5811c vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x09a7cb72 pci_save_state +EXPORT_SYMBOL vmlinux 0x09a87633 lookup_one_len +EXPORT_SYMBOL vmlinux 0x09ba2d89 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d1fa55 netpoll_rx_enable +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09d99d86 x86_hyper_ms_hyperv +EXPORT_SYMBOL vmlinux 0x09da52da tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x0a03fabb acpi_device_set_power +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a3f7648 km_policy_expired +EXPORT_SYMBOL vmlinux 0x0a4543c4 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x0a770832 register_memory_notifier +EXPORT_SYMBOL vmlinux 0x0a7e2416 proc_set_size +EXPORT_SYMBOL vmlinux 0x0a85bb1e kernel_bind +EXPORT_SYMBOL vmlinux 0x0aa87647 read_code +EXPORT_SYMBOL vmlinux 0x0acb1a3c __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0x0aceff7f generic_pipe_buf_unmap +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ad0e67c idr_replace +EXPORT_SYMBOL vmlinux 0x0ae5353d phy_scan_fixups +EXPORT_SYMBOL vmlinux 0x0af31f18 generic_writepages +EXPORT_SYMBOL vmlinux 0x0af8f8ae sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x0b0266a4 phy_disconnect +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b222928 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x0b2842ca netdev_alert +EXPORT_SYMBOL vmlinux 0x0b32257f vlan_vid_add +EXPORT_SYMBOL vmlinux 0x0b32b1bc neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x0b4834f0 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x0b48b0ec phy_detach +EXPORT_SYMBOL vmlinux 0x0b665b27 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b85fc1c udp_proc_register +EXPORT_SYMBOL vmlinux 0x0b9c7c53 mb_cache_create +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bc539b5 dev_alert +EXPORT_SYMBOL vmlinux 0x0bcc03b9 kobject_get +EXPORT_SYMBOL vmlinux 0x0bcd4c95 padata_stop +EXPORT_SYMBOL vmlinux 0x0bd3bbfa netdev_features_change +EXPORT_SYMBOL vmlinux 0x0bd406a8 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x0bddda8c sock_create_lite +EXPORT_SYMBOL vmlinux 0x0c084f33 md_finish_reshape +EXPORT_SYMBOL vmlinux 0x0c0ddb39 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x0c179564 scm_detach_fds +EXPORT_SYMBOL vmlinux 0x0c29556b qdisc_list_del +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c60c68c unlock_buffer +EXPORT_SYMBOL vmlinux 0x0c6188f7 d_path +EXPORT_SYMBOL vmlinux 0x0c642333 agp_free_memory +EXPORT_SYMBOL vmlinux 0x0c65e73c scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0x0c782a6c pci_enable_msi_block_auto +EXPORT_SYMBOL vmlinux 0x0c7b102a misc_register +EXPORT_SYMBOL vmlinux 0x0c8c9e99 scsi_show_extd_sense +EXPORT_SYMBOL vmlinux 0x0ca4aeff blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x0ca7b7a8 acpi_check_region +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0caf4dd1 tcp_ioctl +EXPORT_SYMBOL vmlinux 0x0cdb7d12 __kernel_fpu_begin +EXPORT_SYMBOL vmlinux 0x0ce900af blk_finish_plug +EXPORT_SYMBOL vmlinux 0x0d0cc7e4 pcie_get_mps +EXPORT_SYMBOL vmlinux 0x0d2296fc __register_chrdev +EXPORT_SYMBOL vmlinux 0x0d2a2129 nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0x0d3dda14 acpi_get_type +EXPORT_SYMBOL vmlinux 0x0d40958d redraw_screen +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d68560e vfs_mknod +EXPORT_SYMBOL vmlinux 0x0d8f5f14 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0dd953e6 amd_iommu_flush_page +EXPORT_SYMBOL vmlinux 0x0def5705 sock_i_uid +EXPORT_SYMBOL vmlinux 0x0df07f27 netdev_has_any_upper_dev +EXPORT_SYMBOL vmlinux 0x0df406d1 dquot_quota_on +EXPORT_SYMBOL vmlinux 0x0e19ea03 d_instantiate +EXPORT_SYMBOL vmlinux 0x0e2ad749 inode_permission +EXPORT_SYMBOL vmlinux 0x0e5fee82 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0x0e61ab87 km_state_notify +EXPORT_SYMBOL vmlinux 0x0e63b561 netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e7200f7 put_io_context +EXPORT_SYMBOL vmlinux 0x0e9b8147 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x0ea6fa3d dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x0eb60342 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x0ebca29e blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x0ec4adc8 blk_end_request +EXPORT_SYMBOL vmlinux 0x0ed8cc7b acpi_evaluate_object_typed +EXPORT_SYMBOL vmlinux 0x0ef2c5d3 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f024683 no_llseek +EXPORT_SYMBOL vmlinux 0x0f1a418a phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x0f25af89 read_cache_page_async +EXPORT_SYMBOL vmlinux 0x0f29f478 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f66338e phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0x0f697bd5 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fba5052 tty_port_put +EXPORT_SYMBOL vmlinux 0x0fd00a68 acpi_clear_event +EXPORT_SYMBOL vmlinux 0x0fe1e3f6 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x100932db register_netdevice +EXPORT_SYMBOL vmlinux 0x102aa852 sget +EXPORT_SYMBOL vmlinux 0x104fe7e1 touch_atime +EXPORT_SYMBOL vmlinux 0x1072a394 csum_partial_copy_from_user +EXPORT_SYMBOL vmlinux 0x107a0fca __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x10a8d6c6 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x10c8ba65 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x10c9a1a5 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x10df035b inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x10e3f6e8 neigh_table_init +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x10f46877 tcp_gro_receive +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x110c164f xfrm_state_update +EXPORT_SYMBOL vmlinux 0x111729a7 dquot_scan_active +EXPORT_SYMBOL vmlinux 0x11267875 scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0x11277ffd tty_pair_get_tty +EXPORT_SYMBOL vmlinux 0x1139f681 brioctl_set +EXPORT_SYMBOL vmlinux 0x114d3477 i2c_register_driver +EXPORT_SYMBOL vmlinux 0x1150a93d ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x1185e3a9 agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0x11a62e09 tty_kref_put +EXPORT_SYMBOL vmlinux 0x11ab856d register_filesystem +EXPORT_SYMBOL vmlinux 0x11b10f80 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x11b99781 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x11d4e4bd blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x11e2ec12 flex_array_free_parts +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 0x1214d696 d_rehash +EXPORT_SYMBOL vmlinux 0x12188a9c kfree_put_link +EXPORT_SYMBOL vmlinux 0x1233251e neigh_lookup +EXPORT_SYMBOL vmlinux 0x123f9814 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0x125cb692 blk_mq_free_single_hw_queue +EXPORT_SYMBOL vmlinux 0x12748815 __inet6_hash +EXPORT_SYMBOL vmlinux 0x1280f5dd pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x1280fb30 compat_ip_setsockopt +EXPORT_SYMBOL vmlinux 0x1288e1cc make_bad_inode +EXPORT_SYMBOL vmlinux 0x129a2e3c block_read_full_page +EXPORT_SYMBOL vmlinux 0x129de341 wrmsr_on_cpus +EXPORT_SYMBOL vmlinux 0x12a2c7a2 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12a9527b jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x12dfeb12 vprintk_emit +EXPORT_SYMBOL vmlinux 0x12eebf49 netif_device_attach +EXPORT_SYMBOL vmlinux 0x1305d532 ucs2_strncmp +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x13330757 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x1348760d ipmi_request_settime +EXPORT_SYMBOL vmlinux 0x135b2ded ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x1376178e mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x1383da38 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0x139302a7 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x13c6a490 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0x13cab676 dst_release +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13d8dd87 key_reject_and_link +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x14031808 kernel_listen +EXPORT_SYMBOL vmlinux 0x141db992 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x141e56a4 __dquot_transfer +EXPORT_SYMBOL vmlinux 0x141e64fc cdrom_open +EXPORT_SYMBOL vmlinux 0x14263389 pnp_unregister_driver +EXPORT_SYMBOL vmlinux 0x14280974 nf_reinject +EXPORT_SYMBOL vmlinux 0x144528b1 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x144bec96 mmc_release_host +EXPORT_SYMBOL vmlinux 0x145cb071 set_bdi_congested +EXPORT_SYMBOL vmlinux 0x1469ecd4 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x146d7fc7 kthread_stop +EXPORT_SYMBOL vmlinux 0x1470b240 inode_set_bytes +EXPORT_SYMBOL vmlinux 0x147d7bbd scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x14e8c200 inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0x14eae10b pnp_possible_config +EXPORT_SYMBOL vmlinux 0x1502afee netdev_printk +EXPORT_SYMBOL vmlinux 0x150389d6 acpi_processor_power_init_bm_check +EXPORT_SYMBOL vmlinux 0x151a7cbb pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0x1529b944 mount_ns +EXPORT_SYMBOL vmlinux 0x152f5cfa netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x1548c3e6 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x1551dc51 bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x15572d4e dev_mc_sync +EXPORT_SYMBOL vmlinux 0x15628c59 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x15b33f93 posix_lock_file +EXPORT_SYMBOL vmlinux 0x15b5efe0 blk_init_queue +EXPORT_SYMBOL vmlinux 0x15f571ec blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x1601ed38 call_netdevice_notifiers_info +EXPORT_SYMBOL vmlinux 0x160ea4c8 sfi_disabled +EXPORT_SYMBOL vmlinux 0x16305289 warn_slowpath_null +EXPORT_SYMBOL vmlinux 0x1637ff0f _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0x16385ba2 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x1640bf1b netlink_broadcast +EXPORT_SYMBOL vmlinux 0x167009f0 netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x167c5967 print_hex_dump +EXPORT_SYMBOL vmlinux 0x167e7f9d __get_user_1 +EXPORT_SYMBOL vmlinux 0x168dd535 iterate_supers_type +EXPORT_SYMBOL vmlinux 0x168f1082 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x168fabcf find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x16ac5a9d blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x16d77fe0 pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0x16d9afe4 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL vmlinux 0x16eae193 ps2_handle_response +EXPORT_SYMBOL vmlinux 0x16ee528e pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0x16f1dc27 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0x16f3cfee from_kprojid_munged +EXPORT_SYMBOL vmlinux 0x170c25ee acpi_get_next_object +EXPORT_SYMBOL vmlinux 0x1715ff54 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x1716212d ata_std_end_eh +EXPORT_SYMBOL vmlinux 0x174e741d tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x174ed9df posix_lock_file_wait +EXPORT_SYMBOL vmlinux 0x17534734 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x1779c9ad fget +EXPORT_SYMBOL vmlinux 0x1790d76b _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0x179d6aa3 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17b64d09 dqstats +EXPORT_SYMBOL vmlinux 0x17cce3b3 proto_register +EXPORT_SYMBOL vmlinux 0x17d13091 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x17e5fa57 security_file_permission +EXPORT_SYMBOL vmlinux 0x17e939e3 agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0x17f08b89 tty_pair_get_pty +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x1802ed01 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x180ade66 __skb_dst_set_noref +EXPORT_SYMBOL vmlinux 0x181590c5 blk_integrity_register +EXPORT_SYMBOL vmlinux 0x182647d9 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x183842c5 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x184e6c85 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x187285ec generic_pipe_buf_map +EXPORT_SYMBOL vmlinux 0x187ad79e __bforget +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x18909559 netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x189bdc06 simple_statfs +EXPORT_SYMBOL vmlinux 0x18b48a8d block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x18b72573 register_kmmio_probe +EXPORT_SYMBOL vmlinux 0x18e02afd sock_wmalloc +EXPORT_SYMBOL vmlinux 0x18ea331a security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x18ebe3ae touch_buffer +EXPORT_SYMBOL vmlinux 0x18f44a24 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x18f7d0a3 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x18f9ddac free_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x18fc4ffe simple_release_fs +EXPORT_SYMBOL vmlinux 0x19180baa set_binfmt +EXPORT_SYMBOL vmlinux 0x191fa09a dev_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x1932fcb8 dev_notice +EXPORT_SYMBOL vmlinux 0x19363d23 cont_write_begin +EXPORT_SYMBOL vmlinux 0x19444627 memcpy_fromiovecend +EXPORT_SYMBOL vmlinux 0x195fa2cc kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x19818dc8 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x1991a698 dquot_initialize +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19d05ad2 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x19d66ca2 skb_clone +EXPORT_SYMBOL vmlinux 0x19e1069a pci_disable_obff +EXPORT_SYMBOL vmlinux 0x1a02b2e1 inet_accept +EXPORT_SYMBOL vmlinux 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL vmlinux 0x1a37ce4d netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0x1a45cb6c acpi_disabled +EXPORT_SYMBOL vmlinux 0x1a45f715 tc_classify +EXPORT_SYMBOL vmlinux 0x1a49ab0d pci_platform_rom +EXPORT_SYMBOL vmlinux 0x1a4fc87d block_write_full_page +EXPORT_SYMBOL vmlinux 0x1a53fb5b fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x1a63af34 vga_switcheroo_process_delayed_switch +EXPORT_SYMBOL vmlinux 0x1a6795f9 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x1a6e17ca kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x1a7caaea security_path_chmod +EXPORT_SYMBOL vmlinux 0x1a7cecf8 pci_find_next_bus +EXPORT_SYMBOL vmlinux 0x1a848edc jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x1aa4dd9f bioset_free +EXPORT_SYMBOL vmlinux 0x1aaa1b1e netif_napi_add +EXPORT_SYMBOL vmlinux 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL vmlinux 0x1abf7290 pci_get_class +EXPORT_SYMBOL vmlinux 0x1ac0fb8c jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x1ac5d3cb strcspn +EXPORT_SYMBOL vmlinux 0x1ace138d bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0x1ae14ef5 _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x1ae45916 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x1ae6216c inetdev_by_index +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b0bc4b0 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x1b1bf4a9 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b353088 clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0x1b4209d8 mpage_readpages +EXPORT_SYMBOL vmlinux 0x1b4a6856 proc_set_user +EXPORT_SYMBOL vmlinux 0x1b570d23 acpi_warning +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1b9e0ff1 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x1bdc26cf sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0x1bef887d proc_mkdir +EXPORT_SYMBOL vmlinux 0x1bf7d67a ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x1c04221b call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x1c364e87 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x1c58cfee pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x1c8a04b0 acpi_reset +EXPORT_SYMBOL vmlinux 0x1c903593 input_unregister_device +EXPORT_SYMBOL vmlinux 0x1c908480 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x1c9c75b8 dev_crit +EXPORT_SYMBOL vmlinux 0x1caab7d0 devm_iounmap +EXPORT_SYMBOL vmlinux 0x1cb30ce5 remove_arg_zero +EXPORT_SYMBOL vmlinux 0x1cdbe12c scsi_scan_target +EXPORT_SYMBOL vmlinux 0x1d130391 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x1d1f66c3 arch_debugfs_dir +EXPORT_SYMBOL vmlinux 0x1d435607 pci_bus_get +EXPORT_SYMBOL vmlinux 0x1d65d97b compat_tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x1d676db7 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x1d6aa854 sync_inode +EXPORT_SYMBOL vmlinux 0x1d7ef255 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x1d861984 sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x1d8b2c53 free_user_ns +EXPORT_SYMBOL vmlinux 0x1d8f0e16 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0x1db7706b __copy_user_nocache +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dc89a0a sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1dd6a5aa netlink_capable +EXPORT_SYMBOL vmlinux 0x1de3bcd6 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x1de74f72 acpi_execute_simple_method +EXPORT_SYMBOL vmlinux 0x1e047854 warn_slowpath_fmt +EXPORT_SYMBOL vmlinux 0x1e052f8e neigh_direct_output +EXPORT_SYMBOL vmlinux 0x1e0c2be4 ioremap_wc +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e27b466 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x1e36e650 fb_get_mode +EXPORT_SYMBOL vmlinux 0x1e375f8e set_user_nice +EXPORT_SYMBOL vmlinux 0x1e3b7c37 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x1e466c07 __lock_buffer +EXPORT_SYMBOL vmlinux 0x1e61d736 invalidate_partition +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e73a0e6 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ec0cb3f scsi_print_command +EXPORT_SYMBOL vmlinux 0x1ec3bed9 hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0x1ec4eb34 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x1f2929f9 skb_trim +EXPORT_SYMBOL vmlinux 0x1f40f5e7 inet_frag_evictor +EXPORT_SYMBOL vmlinux 0x1f635ab7 blk_peek_request +EXPORT_SYMBOL vmlinux 0x1f6ce67a sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x1f74d787 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x1f89131d __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x1f89a4f7 mpage_writepage +EXPORT_SYMBOL vmlinux 0x1fadbde5 kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fd003c7 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fd0ac80 compat_ip_getsockopt +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 0x2005e68a acpi_remove_fixed_event_handler +EXPORT_SYMBOL vmlinux 0x20092385 acpi_enter_sleep_state_s4bios +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x2021c348 kobject_add +EXPORT_SYMBOL vmlinux 0x2040fe5c neigh_for_each +EXPORT_SYMBOL vmlinux 0x2044aea7 amd_iommu_pc_get_max_banks +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x2063b00e arp_find +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x208739f6 acpi_load_table +EXPORT_SYMBOL vmlinux 0x208f1221 nobh_write_begin +EXPORT_SYMBOL vmlinux 0x20936b63 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0x20956b2f inode_get_bytes +EXPORT_SYMBOL vmlinux 0x209647e8 key_validate +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20abc15b acpi_processor_register_performance +EXPORT_SYMBOL vmlinux 0x20b2bb2d param_array_ops +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20cb2ba9 cdrom_release +EXPORT_SYMBOL vmlinux 0x20dcf707 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x20eadeb6 ip_compute_csum +EXPORT_SYMBOL vmlinux 0x2103afa3 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x21178b8d linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x211dc04a netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x21377f17 ppp_input_error +EXPORT_SYMBOL vmlinux 0x215667eb free_task +EXPORT_SYMBOL vmlinux 0x215ebd78 bitrev16 +EXPORT_SYMBOL vmlinux 0x21748984 __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0x217dda13 flex_array_get +EXPORT_SYMBOL vmlinux 0x21816a23 generic_fillattr +EXPORT_SYMBOL vmlinux 0x219e5dd2 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0x21d824fd inode_dio_wait +EXPORT_SYMBOL vmlinux 0x21e0ea22 acpi_get_id +EXPORT_SYMBOL vmlinux 0x21ee5036 swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x2232a155 d_add_ci +EXPORT_SYMBOL vmlinux 0x22456635 d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0x22667f7d compat_sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x226d1c0d bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x229d49e9 __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22b39c4f tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0x22b55eb1 may_umount +EXPORT_SYMBOL vmlinux 0x22bef963 single_open +EXPORT_SYMBOL vmlinux 0x22c76c71 dquot_destroy +EXPORT_SYMBOL vmlinux 0x22d99ba5 __ps2_command +EXPORT_SYMBOL vmlinux 0x22e0b92b dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x22fd9ad0 sleep_on_timeout +EXPORT_SYMBOL vmlinux 0x230c4f8a pci_find_bus +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x23350feb tty_lock +EXPORT_SYMBOL vmlinux 0x233db4fd tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x2340da5d blk_rq_init +EXPORT_SYMBOL vmlinux 0x23532c4d ftrace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x235922fd datagram_poll +EXPORT_SYMBOL vmlinux 0x236e79ab mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x238f920d do_splice_to +EXPORT_SYMBOL vmlinux 0x23908a75 tcp_init_sock +EXPORT_SYMBOL vmlinux 0x2397dfa8 phy_connect +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c74c12 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x23c8f257 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x23c9891c kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x23f24cc4 genlmsg_put +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x2409a57d dquot_drop +EXPORT_SYMBOL vmlinux 0x240a6f8d pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x242410d1 kfree_skb_list +EXPORT_SYMBOL vmlinux 0x242d8069 seq_read +EXPORT_SYMBOL vmlinux 0x24320581 set_pages_wb +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x2472e513 clocksource_unregister +EXPORT_SYMBOL vmlinux 0x247e06c2 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x2484adc3 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0x248c273b ida_remove +EXPORT_SYMBOL vmlinux 0x24a695b2 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250c5b00 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0x2526de65 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x2534d317 mark_page_accessed +EXPORT_SYMBOL vmlinux 0x253993ea abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x254326c4 try_module_get +EXPORT_SYMBOL vmlinux 0x254fe6ec inc_nlink +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x2586168b task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x25973bbf vga_switcheroo_register_audio_client +EXPORT_SYMBOL vmlinux 0x259b7ff5 request_key_async +EXPORT_SYMBOL vmlinux 0x25a42fde ip_fragment +EXPORT_SYMBOL vmlinux 0x25bc2d06 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x25bdc184 dquot_enable +EXPORT_SYMBOL vmlinux 0x25bec399 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x25c0b06f vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x25c52d87 skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x25c677c4 mac_pton +EXPORT_SYMBOL vmlinux 0x25e1c72b proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x25f040e6 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x2607e537 __nla_put +EXPORT_SYMBOL vmlinux 0x261293b1 security_path_mknod +EXPORT_SYMBOL vmlinux 0x263122f8 wait_for_completion_interruptible_timeout +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 0x266b3457 gen10g_read_status +EXPORT_SYMBOL vmlinux 0x2685c3d7 __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x269433cb d_make_root +EXPORT_SYMBOL vmlinux 0x26948d96 copy_user_enhanced_fast_string +EXPORT_SYMBOL vmlinux 0x26a7eeeb inet_del_protocol +EXPORT_SYMBOL vmlinux 0x26a8956e xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x26b86e4c setup_new_exec +EXPORT_SYMBOL vmlinux 0x26c087d6 get_phy_device +EXPORT_SYMBOL vmlinux 0x26dd6068 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x26e298e0 unregister_memory_notifier +EXPORT_SYMBOL vmlinux 0x26e6f679 nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26f0453a blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x2712f4f5 crc32_le_combine +EXPORT_SYMBOL vmlinux 0x271cba95 acpi_bus_private_data_handler +EXPORT_SYMBOL vmlinux 0x27249acb i2c_verify_client +EXPORT_SYMBOL vmlinux 0x272d394e mtrr_del +EXPORT_SYMBOL vmlinux 0x2734b39e simple_transaction_release +EXPORT_SYMBOL vmlinux 0x2739e2df netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x2761b692 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0x2767fa52 sk_net_capable +EXPORT_SYMBOL vmlinux 0x27826bae user_revoke +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x2788f130 find_or_create_page +EXPORT_SYMBOL vmlinux 0x279cba70 genl_notify +EXPORT_SYMBOL vmlinux 0x27a7438b eth_header_cache +EXPORT_SYMBOL vmlinux 0x27ae7d0c ec_transaction +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27c33efe csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0x27de8c22 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27e1cad9 amd_iommu_domain_clear_gcr3 +EXPORT_SYMBOL vmlinux 0x27e42a7a do_splice_from +EXPORT_SYMBOL vmlinux 0x27ed76be kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x27f5dbc6 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0x2808df86 security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x28318305 snprintf +EXPORT_SYMBOL vmlinux 0x2838133c padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x2869819e bio_copy_data +EXPORT_SYMBOL vmlinux 0x28830824 netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28abfe6e scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x28baaabe __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x28cbf411 tcf_em_register +EXPORT_SYMBOL vmlinux 0x291ca35a i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x292bbd82 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x29368e20 check_disk_change +EXPORT_SYMBOL vmlinux 0x293ba8c4 splice_from_pipe_begin +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x296ed549 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x299c4f77 lock_may_read +EXPORT_SYMBOL vmlinux 0x29a0d71a sock_create_kern +EXPORT_SYMBOL vmlinux 0x29db84ff vfs_create +EXPORT_SYMBOL vmlinux 0x29ea9323 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x2a13e668 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a6e6109 __init_rwsem +EXPORT_SYMBOL vmlinux 0x2a79ac13 clkdev_add +EXPORT_SYMBOL vmlinux 0x2a83d539 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x2a8e0a30 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x2abd0ab7 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2ad4991a cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x2adacc9f ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x2afcbbcc single_open_size +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b51837e proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x2b52cb01 md_write_end +EXPORT_SYMBOL vmlinux 0x2b609ce3 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x2b916af4 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2ba74f5b keyring_clear +EXPORT_SYMBOL vmlinux 0x2baec6cf tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x2bb55d6e acpi_remove_notify_handler +EXPORT_SYMBOL vmlinux 0x2bfeb410 acpi_get_handle +EXPORT_SYMBOL vmlinux 0x2c022c22 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c25da3c __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x2c60f6ae input_reset_device +EXPORT_SYMBOL vmlinux 0x2c72153c xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x2c900d91 cpufreq_put_global_kobject +EXPORT_SYMBOL vmlinux 0x2ca0253c netdev_update_features +EXPORT_SYMBOL vmlinux 0x2ca319a6 wrmsrl_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x2cf73cb7 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x2d03c10d posix_acl_create +EXPORT_SYMBOL vmlinux 0x2d0e3a68 write_cache_pages +EXPORT_SYMBOL vmlinux 0x2d102985 vm_insert_page +EXPORT_SYMBOL vmlinux 0x2d10d564 inet6_bind +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d144e21 rdmsrl_on_cpu +EXPORT_SYMBOL vmlinux 0x2d2096e0 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x2d27339d bio_alloc_pages +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d3daf9a dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x2d6591f8 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x2d687ac1 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x2d89342a scsi_show_sense_hdr +EXPORT_SYMBOL vmlinux 0x2d8babec copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x2daaaba9 param_get_byte +EXPORT_SYMBOL vmlinux 0x2db98496 generic_read_dir +EXPORT_SYMBOL vmlinux 0x2dba80e8 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x2dbf3da4 tcp_sendpage +EXPORT_SYMBOL vmlinux 0x2dc2220e udp_add_offload +EXPORT_SYMBOL vmlinux 0x2dc8b7d6 bdget_disk +EXPORT_SYMBOL vmlinux 0x2dc9c45c skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0x2dd16564 arch_register_cpu +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 0x2dfcb5f9 netpoll_cleanup +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 0x2e3cfdd7 mem_cgroup_subsys +EXPORT_SYMBOL vmlinux 0x2e4826b5 __module_get +EXPORT_SYMBOL vmlinux 0x2e51490b remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x2e57a9a0 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x2e5a704c udp_table +EXPORT_SYMBOL vmlinux 0x2e5b8801 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x2e6467f9 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x2e6e1775 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x2e80df9a kernel_sendpage +EXPORT_SYMBOL vmlinux 0x2ea8b9af fsnotify_get_group +EXPORT_SYMBOL vmlinux 0x2ed29561 __scm_send +EXPORT_SYMBOL vmlinux 0x2edb9eaf mmc_start_bkops +EXPORT_SYMBOL vmlinux 0x2eeceb42 sk_chk_filter +EXPORT_SYMBOL vmlinux 0x2ef0f373 tcp_get_md5sig_pool +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 0x2f0f6565 fb_class +EXPORT_SYMBOL vmlinux 0x2f1295fa __secpath_destroy +EXPORT_SYMBOL vmlinux 0x2f2549f2 phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x2f30ea45 generic_ro_fops +EXPORT_SYMBOL vmlinux 0x2f384db3 acpi_is_video_device +EXPORT_SYMBOL vmlinux 0x2f82f7cc i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0x2f8547b0 find_get_page +EXPORT_SYMBOL vmlinux 0x2fb3750c on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fddee28 udp_seq_open +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2fe9d367 simple_transaction_set +EXPORT_SYMBOL vmlinux 0x2ff063b5 acpi_get_name +EXPORT_SYMBOL vmlinux 0x2ff79367 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x3012af04 __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x301d3061 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x3022a655 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x303d9d3a seq_bitmap_list +EXPORT_SYMBOL vmlinux 0x30462570 neigh_destroy +EXPORT_SYMBOL vmlinux 0x306f6e33 security_inode_init_security +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30ae3187 get_io_context +EXPORT_SYMBOL vmlinux 0x30cada8f radix_tree_next_hole +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x314998dd from_kprojid +EXPORT_SYMBOL vmlinux 0x315c65fd zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x316fe32a load_nls +EXPORT_SYMBOL vmlinux 0x318cadb1 reciprocal_value +EXPORT_SYMBOL vmlinux 0x3190f00b swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0x319e0726 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x31b31f5c csum_partial_copy_nocheck +EXPORT_SYMBOL vmlinux 0x31ba1a34 dev_add_pack +EXPORT_SYMBOL vmlinux 0x31ca30e2 key_task_permission +EXPORT_SYMBOL vmlinux 0x31e065b6 set_nlink +EXPORT_SYMBOL vmlinux 0x31e76b57 recalibrate_cpu_khz +EXPORT_SYMBOL vmlinux 0x3202435a wrmsr_safe_regs +EXPORT_SYMBOL vmlinux 0x3211594f gen10g_suspend +EXPORT_SYMBOL vmlinux 0x321e6e93 arp_create +EXPORT_SYMBOL vmlinux 0x322f48d4 abx500_dump_all_banks +EXPORT_SYMBOL vmlinux 0x326425ca pci_unmap_biosrom +EXPORT_SYMBOL vmlinux 0x3276f7db input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x328b8a49 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x32bbe73d sock_no_poll +EXPORT_SYMBOL vmlinux 0x32d39ad6 i2c_use_client +EXPORT_SYMBOL vmlinux 0x32dd83bd file_ns_capable +EXPORT_SYMBOL vmlinux 0x32debb16 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x32eeaded _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0x33021a59 pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x3330ae89 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x3338eb6e inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x333cb37c __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x335eadaf xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x336abc9b pm860x_page_bulk_write +EXPORT_SYMBOL vmlinux 0x336b9147 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x338025d8 mount_pseudo +EXPORT_SYMBOL vmlinux 0x3387abc8 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x33a053f3 scsi_block_requests +EXPORT_SYMBOL vmlinux 0x33a87a57 write_inode_now +EXPORT_SYMBOL vmlinux 0x33b56bd1 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33ba5cd4 param_ops_bool +EXPORT_SYMBOL vmlinux 0x33c1fa02 vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33e1b68f ll_rw_block +EXPORT_SYMBOL vmlinux 0x33e64620 dma_ops +EXPORT_SYMBOL vmlinux 0x33f01d30 tty_register_driver +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33fcf44a __kfifo_out_r +EXPORT_SYMBOL vmlinux 0x33fd6dcc scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x34038ef4 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x3403df5f netpoll_setup +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x341cbed2 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x34339df7 load_nls_default +EXPORT_SYMBOL vmlinux 0x34453f26 scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x344e3d2a gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x344e9af4 __idr_get_new_above +EXPORT_SYMBOL vmlinux 0x3466d81d security_inode_permission +EXPORT_SYMBOL vmlinux 0x34698ea8 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x347eb9bd param_set_bool +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34a99b19 __lock_page +EXPORT_SYMBOL vmlinux 0x34b6e529 mnt_unpin +EXPORT_SYMBOL vmlinux 0x34d48dfb get_task_io_context +EXPORT_SYMBOL vmlinux 0x34ded71c open_exec +EXPORT_SYMBOL vmlinux 0x34e082fc simple_dir_operations +EXPORT_SYMBOL vmlinux 0x34e21dc0 register_sysctl +EXPORT_SYMBOL vmlinux 0x34e33cbc request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x34f22f94 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x34ff90c9 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x35149637 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x35225ea3 down_write_trylock +EXPORT_SYMBOL vmlinux 0x3539f11b match_strlcpy +EXPORT_SYMBOL vmlinux 0x353a5990 inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0x353e21e3 acpi_bios_warning +EXPORT_SYMBOL vmlinux 0x35738b7c gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0x3582e4cd get_super_thawed +EXPORT_SYMBOL vmlinux 0x358e087a __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x358ec588 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x35ac6d1f nobh_writepage +EXPORT_SYMBOL vmlinux 0x35d33d23 override_creds +EXPORT_SYMBOL vmlinux 0x35defc50 iov_iter_advance +EXPORT_SYMBOL vmlinux 0x35fc7580 scsi_target_resume +EXPORT_SYMBOL vmlinux 0x35fef719 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x3607f59c tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x360b8d16 x86_cpu_to_apicid +EXPORT_SYMBOL vmlinux 0x3612b07c register_nls +EXPORT_SYMBOL vmlinux 0x3620b8f3 kill_bdev +EXPORT_SYMBOL vmlinux 0x3660afbc mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x366e90b7 agp_free_page_array +EXPORT_SYMBOL vmlinux 0x367419f5 pci_read_vpd +EXPORT_SYMBOL vmlinux 0x3686ea09 spi_print_msg +EXPORT_SYMBOL vmlinux 0x368f0dde dev_uc_sync +EXPORT_SYMBOL vmlinux 0x369e1115 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x36a6964e filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x36a7fb33 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x36ab48d2 mdiobus_free +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36e2aeeb mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x36e360e3 __hw_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x3701a196 csum_partial_copy_to_user +EXPORT_SYMBOL vmlinux 0x37103ac8 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x372b1c21 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x3733cddd pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x373650f3 filemap_fault +EXPORT_SYMBOL vmlinux 0x3738c057 account_page_dirtied +EXPORT_SYMBOL vmlinux 0x373a4a2a scsi_remove_host +EXPORT_SYMBOL vmlinux 0x3740057b blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x374a43b0 fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0x375ba532 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x3763a385 ip6_route_output +EXPORT_SYMBOL vmlinux 0x376865b0 block_write_begin +EXPORT_SYMBOL vmlinux 0x37699be7 console_start +EXPORT_SYMBOL vmlinux 0x3775f79a cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37c83f94 sock_no_accept +EXPORT_SYMBOL vmlinux 0x37db8f19 dmi_get_date +EXPORT_SYMBOL vmlinux 0x37e15780 vm_mmap +EXPORT_SYMBOL vmlinux 0x37f88fdd blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x37fa9972 mmc_can_trim +EXPORT_SYMBOL vmlinux 0x38099e13 wrmsrl_on_cpu +EXPORT_SYMBOL vmlinux 0x3812c6e4 tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x3831041f generic_removexattr +EXPORT_SYMBOL vmlinux 0x38412d2d xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x3841ecee vfs_readv +EXPORT_SYMBOL vmlinux 0x38520521 set_blocksize +EXPORT_SYMBOL vmlinux 0x387e5433 md_done_sync +EXPORT_SYMBOL vmlinux 0x38865ab2 ps2_command +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388f9128 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x389bfe0d rtc_lock +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38b280ef pci_enable_ido +EXPORT_SYMBOL vmlinux 0x38b904f7 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x38c60fa3 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x38cb62ac xfrm_lookup +EXPORT_SYMBOL vmlinux 0x38d73ea2 dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0x38f33bed dump_fpu +EXPORT_SYMBOL vmlinux 0x38f3896f bio_clone_bioset +EXPORT_SYMBOL vmlinux 0x38f97cc7 skb_checksum_help +EXPORT_SYMBOL vmlinux 0x38fc9f30 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x391093cf dev_set_drvdata +EXPORT_SYMBOL vmlinux 0x391ef974 kernel_read +EXPORT_SYMBOL vmlinux 0x3921d091 follow_up +EXPORT_SYMBOL vmlinux 0x3928efe9 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x3955fcf6 __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x39612f2e __get_user_pages +EXPORT_SYMBOL vmlinux 0x39661096 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x396c7905 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x39750068 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x399ad043 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0x39a055f3 acpi_remove_gpe_handler +EXPORT_SYMBOL vmlinux 0x39a6895c save_mount_options +EXPORT_SYMBOL vmlinux 0x39bb372f dq_data_lock +EXPORT_SYMBOL vmlinux 0x39c33cee finish_no_open +EXPORT_SYMBOL vmlinux 0x39e273e8 __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x3a08475f platform_thermal_notify +EXPORT_SYMBOL vmlinux 0x3a0dbb94 pnp_is_active +EXPORT_SYMBOL vmlinux 0x3a20ff73 __crc32c_le +EXPORT_SYMBOL vmlinux 0x3a2bce40 inet_ioctl +EXPORT_SYMBOL vmlinux 0x3a32839e intel_gtt_chipset_flush +EXPORT_SYMBOL vmlinux 0x3a3439e0 inet_addr_type +EXPORT_SYMBOL vmlinux 0x3a691dce genl_unregister_family +EXPORT_SYMBOL vmlinux 0x3a74a0d6 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x3a79c665 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x3a8b2485 remap_pfn_range +EXPORT_SYMBOL vmlinux 0x3a990d96 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3a9d5ca3 pnp_register_card_driver +EXPORT_SYMBOL vmlinux 0x3aa1e7b1 vga_switcheroo_client_fb_set +EXPORT_SYMBOL vmlinux 0x3aad7d70 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x3abb1e94 __blk_run_queue +EXPORT_SYMBOL vmlinux 0x3abccfc6 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x3ac10c34 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x3aedbaeb elevator_exit +EXPORT_SYMBOL vmlinux 0x3b084559 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x3b1236c9 freezing_slow_path +EXPORT_SYMBOL vmlinux 0x3b467b67 agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0x3b47c3b5 __serio_register_driver +EXPORT_SYMBOL vmlinux 0x3b4ceb4a up_write +EXPORT_SYMBOL vmlinux 0x3b75894c skb_append +EXPORT_SYMBOL vmlinux 0x3b876677 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x3bd1b1f6 msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x3beb690b lg_local_unlock +EXPORT_SYMBOL vmlinux 0x3bef03b9 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x3bef2ccb netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x3c005dc1 module_refcount +EXPORT_SYMBOL vmlinux 0x3c0eff13 agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0x3c3d2bdc tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x3c4a82c0 ps2_init +EXPORT_SYMBOL vmlinux 0x3c64ef15 amd_northbridges +EXPORT_SYMBOL vmlinux 0x3c7eb685 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c9a0428 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x3c9d1211 string_get_size +EXPORT_SYMBOL vmlinux 0x3ca0a9af cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x3cc131bc dev_get_by_name +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3ce8cc1a dev_warn +EXPORT_SYMBOL vmlinux 0x3d02518f init_special_inode +EXPORT_SYMBOL vmlinux 0x3d04bdc3 kset_unregister +EXPORT_SYMBOL vmlinux 0x3d134e69 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0x3d1a53c8 led_blink_set +EXPORT_SYMBOL vmlinux 0x3d447681 i8042_remove_filter +EXPORT_SYMBOL vmlinux 0x3d5844b3 strnicmp +EXPORT_SYMBOL vmlinux 0x3d5a78d9 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x3d62bcf1 amd_iommu_domain_enable_v2 +EXPORT_SYMBOL vmlinux 0x3d6a93ef __alloc_skb +EXPORT_SYMBOL vmlinux 0x3d73a852 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x3d7c1ed7 msrs_alloc +EXPORT_SYMBOL vmlinux 0x3d9ee9f0 clear_page +EXPORT_SYMBOL vmlinux 0x3da171f9 pci_mem_start +EXPORT_SYMBOL vmlinux 0x3da94ecd i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x3db1b3fe skb_checksum +EXPORT_SYMBOL vmlinux 0x3db82de1 skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0x3dc1ef0a blk_mq_end_io +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e2ae3a8 acpi_release_global_lock +EXPORT_SYMBOL vmlinux 0x3e5a6fc1 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x3e64d5cb xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x3e71d7ca n_tty_compat_ioctl_helper +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e9b21c2 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x3ea0773c ida_get_new_above +EXPORT_SYMBOL vmlinux 0x3ed63055 zlib_inflateReset +EXPORT_SYMBOL vmlinux 0x3ee83525 kern_path +EXPORT_SYMBOL vmlinux 0x3eee23fa search_binary_handler +EXPORT_SYMBOL vmlinux 0x3ef4fea5 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x3efb6dd5 i2c_master_send +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f1db64d set_pages_uc +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f4de836 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x3f516c7d pnp_unregister_card_driver +EXPORT_SYMBOL vmlinux 0x3f560263 scsi_remove_device +EXPORT_SYMBOL vmlinux 0x3f58bd50 posix_test_lock +EXPORT_SYMBOL vmlinux 0x3f71faa1 mempool_create +EXPORT_SYMBOL vmlinux 0x3f90ebf1 spi_release_transport +EXPORT_SYMBOL vmlinux 0x3f925e43 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x3f930734 bdi_destroy +EXPORT_SYMBOL vmlinux 0x3fcb9515 give_up_console +EXPORT_SYMBOL vmlinux 0x3fda06cb mmc_remove_host +EXPORT_SYMBOL vmlinux 0x3fe19291 d_invalidate +EXPORT_SYMBOL vmlinux 0x3fe2ccbe memweight +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3ff62317 local_bh_disable +EXPORT_SYMBOL vmlinux 0x40256835 complete_all +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x402f4298 qdisc_destroy +EXPORT_SYMBOL vmlinux 0x403964d5 irq_set_chip +EXPORT_SYMBOL vmlinux 0x404676d7 __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x404c0373 inet_shutdown +EXPORT_SYMBOL vmlinux 0x405af52d tcf_hash_release +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x4067af25 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x406c8e63 dquot_free_inode +EXPORT_SYMBOL vmlinux 0x407a4840 sock_wfree +EXPORT_SYMBOL vmlinux 0x4084be08 tty_vhangup +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 0x4099fc29 ip6_frag_init +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a8914e ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40ad42fe grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x40ae2f89 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c6aac1 cad_pid +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40c89d46 acpi_get_table_by_index +EXPORT_SYMBOL vmlinux 0x40cc875c sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL vmlinux 0x41285f78 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x418cdcc7 __d_drop +EXPORT_SYMBOL vmlinux 0x4192f5d4 d_prune_aliases +EXPORT_SYMBOL vmlinux 0x41af05a1 tty_port_destroy +EXPORT_SYMBOL vmlinux 0x41aff904 eth_rebuild_header +EXPORT_SYMBOL vmlinux 0x41ee1ebf do_SAK +EXPORT_SYMBOL vmlinux 0x41ef837e vfs_read +EXPORT_SYMBOL vmlinux 0x4211c3c1 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x422daccc starget_for_each_device +EXPORT_SYMBOL vmlinux 0x42350e8d ucs2_strlen +EXPORT_SYMBOL vmlinux 0x423b776a ipmi_create_user +EXPORT_SYMBOL vmlinux 0x423eab02 elv_add_request +EXPORT_SYMBOL vmlinux 0x4246950b scsi_cmd_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x428636be md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x4287eb2b fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x42977ad4 __hw_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x429a34dc tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42a76691 d_drop +EXPORT_SYMBOL vmlinux 0x42c8de35 ioremap_nocache +EXPORT_SYMBOL vmlinux 0x42f4dc93 simple_write_begin +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x4306cddd neigh_ifdown +EXPORT_SYMBOL vmlinux 0x43109931 pci_dev_driver +EXPORT_SYMBOL vmlinux 0x431819b6 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x431d2c94 fb_set_suspend +EXPORT_SYMBOL vmlinux 0x43261dca _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0x433116bf insert_inode_locked +EXPORT_SYMBOL vmlinux 0x433bcb32 clk_get +EXPORT_SYMBOL vmlinux 0x4344e2f1 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x434737bb i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x436cc825 revert_creds +EXPORT_SYMBOL vmlinux 0x437a3174 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x43927f92 dev_printk +EXPORT_SYMBOL vmlinux 0x43d6c69d scsi_init_io +EXPORT_SYMBOL vmlinux 0x43d7d049 __breadahead +EXPORT_SYMBOL vmlinux 0x43e4de19 bio_reset +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x4409b2c7 skb_find_text +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x441d3839 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x445bdd99 serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x445e1444 skb_pad +EXPORT_SYMBOL vmlinux 0x447655e8 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0x4476e9e2 panic_notifier_list +EXPORT_SYMBOL vmlinux 0x448eac3e kmemdup +EXPORT_SYMBOL vmlinux 0x449a3011 inet_frags_init +EXPORT_SYMBOL vmlinux 0x449ad0a7 memcmp +EXPORT_SYMBOL vmlinux 0x44a81d5f acpi_evaluate_object +EXPORT_SYMBOL vmlinux 0x44aaf30f tsc_khz +EXPORT_SYMBOL vmlinux 0x44d70f06 scsi_register +EXPORT_SYMBOL vmlinux 0x44e6ecc8 ida_simple_get +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44f37876 blk_run_queue +EXPORT_SYMBOL vmlinux 0x44f4027c dquot_release +EXPORT_SYMBOL vmlinux 0x45044497 percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x45081703 ec_get_handle +EXPORT_SYMBOL vmlinux 0x4532dc4e scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x45616562 pcie_set_mps +EXPORT_SYMBOL vmlinux 0x456aea3f max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x45a6be13 cpufreq_sysfs_remove_file +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45ba5804 unregister_shrinker +EXPORT_SYMBOL vmlinux 0x45c92723 idr_destroy +EXPORT_SYMBOL vmlinux 0x45e1ec8e dma_supported +EXPORT_SYMBOL vmlinux 0x460ebabb sock_no_mmap +EXPORT_SYMBOL vmlinux 0x461ac773 kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x4629334c __preempt_count +EXPORT_SYMBOL vmlinux 0x4649ef6c inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46608fa0 getnstimeofday +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x467eb90d md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x46a362e3 pnp_start_dev +EXPORT_SYMBOL vmlinux 0x46ad9b6b vfs_mkdir +EXPORT_SYMBOL vmlinux 0x46c47fb6 __node_distance +EXPORT_SYMBOL vmlinux 0x46d2f819 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x46d819df udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x473c39e9 key_link +EXPORT_SYMBOL vmlinux 0x47408236 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x474b1d62 bio_integrity_free +EXPORT_SYMBOL vmlinux 0x475f010b acpi_purge_cached_objects +EXPORT_SYMBOL vmlinux 0x4775e92e devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0x477c6da4 scsi_dma_unmap +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 0x4797d0e0 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x479fb630 bio_add_page +EXPORT_SYMBOL vmlinux 0x47b3f862 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0x47b6a10f ftrace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x47bcf84c param_set_ulong +EXPORT_SYMBOL vmlinux 0x47be3892 spi_display_xfer_agreement +EXPORT_SYMBOL vmlinux 0x47c8baf4 param_ops_uint +EXPORT_SYMBOL vmlinux 0x47d1cc17 key_put +EXPORT_SYMBOL vmlinux 0x47dbc955 netlink_set_err +EXPORT_SYMBOL vmlinux 0x47e57d7f pci_get_subsys +EXPORT_SYMBOL vmlinux 0x48034724 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x4808f36f bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x48193639 acpi_lid_open +EXPORT_SYMBOL vmlinux 0x481cb9ab acpi_enter_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x482a2a49 param_set_charp +EXPORT_SYMBOL vmlinux 0x4841bdee strnchr +EXPORT_SYMBOL vmlinux 0x4859625e dump_skip +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x4870e668 scsi_host_get +EXPORT_SYMBOL vmlinux 0x487d7c9e acpi_lock_ac_dir +EXPORT_SYMBOL vmlinux 0x487f7cf4 register_netdev +EXPORT_SYMBOL vmlinux 0x4888bbac phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x489000c0 pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x48cf549a md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x48d15b25 agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0x48d50e79 amd_iommu_register_ppr_notifier +EXPORT_SYMBOL vmlinux 0x48de12f4 __free_pages +EXPORT_SYMBOL vmlinux 0x48dfb368 pci_enable_msi_block +EXPORT_SYMBOL vmlinux 0x48f64f86 devfreq_add_governor +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x490f6abe kmem_cache_alloc_node_trace +EXPORT_SYMBOL vmlinux 0x49224f0b from_kgid_munged +EXPORT_SYMBOL vmlinux 0x492dc1f1 read_cache_page +EXPORT_SYMBOL vmlinux 0x4943edf0 i2c_smbus_read_word_data +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 0x49745160 wireless_spy_update +EXPORT_SYMBOL vmlinux 0x49790082 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x497be69b done_path_create +EXPORT_SYMBOL vmlinux 0x49800255 dev_load +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49b163b8 acpi_bus_scan +EXPORT_SYMBOL vmlinux 0x49c483e2 pagevec_lookup +EXPORT_SYMBOL vmlinux 0x49df7f72 x86_hyper_xen_hvm +EXPORT_SYMBOL vmlinux 0x49e8caa0 tcp_splice_read +EXPORT_SYMBOL vmlinux 0x49f937aa posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x4a03e7bb textsearch_unregister +EXPORT_SYMBOL vmlinux 0x4a125828 mmc_hw_reset_check +EXPORT_SYMBOL vmlinux 0x4a358252 __bitmap_subset +EXPORT_SYMBOL vmlinux 0x4a551160 __scsi_add_device +EXPORT_SYMBOL vmlinux 0x4a80836c wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x4a856ba3 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x4aa4d9a3 create_syslog_header +EXPORT_SYMBOL vmlinux 0x4aad52d7 mempool_free +EXPORT_SYMBOL vmlinux 0x4aaff9f6 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x4ab5999d xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x4acd879d kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4afbf0ec netlink_unicast +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b0120ca qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0x4b06d2e7 complete +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b1baf68 acpi_unlock_ac_dir +EXPORT_SYMBOL vmlinux 0x4b38c339 key_alloc +EXPORT_SYMBOL vmlinux 0x4b49659a pci_set_mwi +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b8218be rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x4b8a1bfc devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x4b9a6ca5 scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x4ba8bd3d eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0x4bab2a47 netif_device_detach +EXPORT_SYMBOL vmlinux 0x4bb6a82c led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0x4bb7ae78 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x4bbb211c bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x4bc26cb9 agp_backend_release +EXPORT_SYMBOL vmlinux 0x4bdaa519 dev_set_mtu +EXPORT_SYMBOL vmlinux 0x4bebaf06 current_task +EXPORT_SYMBOL vmlinux 0x4bf50440 __nla_reserve +EXPORT_SYMBOL vmlinux 0x4bf8d31c mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0x4c0111d9 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x4c1182cb bitmap_scnprintf +EXPORT_SYMBOL vmlinux 0x4c2865e6 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x4c2b6ee3 clk_add_alias +EXPORT_SYMBOL vmlinux 0x4c44cd14 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x4c47f91c pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x4c4eaa88 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x4c4fef19 kernel_stack +EXPORT_SYMBOL vmlinux 0x4c50084a sk_common_release +EXPORT_SYMBOL vmlinux 0x4c55a94b security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL vmlinux 0x4c9b499a __devm_release_region +EXPORT_SYMBOL vmlinux 0x4c9d28b0 phys_base +EXPORT_SYMBOL vmlinux 0x4c9dece1 vga_switcheroo_register_client +EXPORT_SYMBOL vmlinux 0x4ca30696 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x4ca9669f scnprintf +EXPORT_SYMBOL vmlinux 0x4cbbd171 __bitmap_weight +EXPORT_SYMBOL vmlinux 0x4cbc39f3 simple_transaction_get +EXPORT_SYMBOL vmlinux 0x4cc1efdb dma_async_device_register +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4cde8644 input_flush_device +EXPORT_SYMBOL vmlinux 0x4cdfa645 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x4ce4cd8e get_tz_trend +EXPORT_SYMBOL vmlinux 0x4d1023f8 mempool_resize +EXPORT_SYMBOL vmlinux 0x4d3a225b dev_get_flags +EXPORT_SYMBOL vmlinux 0x4d447933 inet6_getname +EXPORT_SYMBOL vmlinux 0x4d45b64f sock_no_bind +EXPORT_SYMBOL vmlinux 0x4d47deef blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x4d68a0da lock_sock_nested +EXPORT_SYMBOL vmlinux 0x4d84341a fb_blank +EXPORT_SYMBOL vmlinux 0x4d911312 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4d9be4dd n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x4daa360a acpi_resource_to_address64 +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4e2ce2f8 inet_release +EXPORT_SYMBOL vmlinux 0x4e3325cb bio_map_kern +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e4d2281 sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4ea25709 dql_reset +EXPORT_SYMBOL vmlinux 0x4ea63678 simple_setattr +EXPORT_SYMBOL vmlinux 0x4edd72f7 block_all_signals +EXPORT_SYMBOL vmlinux 0x4f009abe genphy_resume +EXPORT_SYMBOL vmlinux 0x4f0c70e6 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f380774 napi_complete +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +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 0x4f8b5ddb _copy_to_user +EXPORT_SYMBOL vmlinux 0x4f8ca886 tcf_exts_change +EXPORT_SYMBOL vmlinux 0x4f94f1ba idr_get_next +EXPORT_SYMBOL vmlinux 0x4f9aaf56 module_put +EXPORT_SYMBOL vmlinux 0x4fa2e2ff udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x4fa72217 md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0x4fc57a36 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x4fdea0d0 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4fececce vga_switcheroo_set_dynamic_switch +EXPORT_SYMBOL vmlinux 0x4feeff7e swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0x4ffe8611 inet6_add_offload +EXPORT_SYMBOL vmlinux 0x5008b28a fddi_type_trans +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x5037f8f7 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x50529870 acpi_get_gpe_status +EXPORT_SYMBOL vmlinux 0x5060a84a padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x509b64ea acpi_has_method +EXPORT_SYMBOL vmlinux 0x50a723c6 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x50a90e8d bsearch +EXPORT_SYMBOL vmlinux 0x50b22ff3 tcf_hash_check +EXPORT_SYMBOL vmlinux 0x50c6a72a blk_complete_request +EXPORT_SYMBOL vmlinux 0x50d2592d hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0x50d68377 arch_phys_wc_del +EXPORT_SYMBOL vmlinux 0x50e77382 release_pages +EXPORT_SYMBOL vmlinux 0x50ec2009 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x510ab65d ip_setsockopt +EXPORT_SYMBOL vmlinux 0x510c1034 vc_resize +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x511ab427 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x51231920 mmc_of_parse +EXPORT_SYMBOL vmlinux 0x512b7c7f proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x513b7e87 kill_fasync +EXPORT_SYMBOL vmlinux 0x515246ad xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x51569a16 agp_create_memory +EXPORT_SYMBOL vmlinux 0x516064fa xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x51635c28 cdev_init +EXPORT_SYMBOL vmlinux 0x5172f18c blk_get_queue +EXPORT_SYMBOL vmlinux 0x51812266 mmc_gpio_free_cd +EXPORT_SYMBOL vmlinux 0x5182420f ida_pre_get +EXPORT_SYMBOL vmlinux 0x5196992a blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0x51a5282d cfb_fillrect +EXPORT_SYMBOL vmlinux 0x51d12d4e acpi_pci_disabled +EXPORT_SYMBOL vmlinux 0x51dce73b xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x51e62dff xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0x51ea0ff2 ilookup5 +EXPORT_SYMBOL vmlinux 0x51f7aab4 __f_setown +EXPORT_SYMBOL vmlinux 0x52006d56 acpi_walk_resources +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x5202e7a2 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0x52084d74 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x52095e19 acpi_get_data +EXPORT_SYMBOL vmlinux 0x52130046 acpi_check_address_range +EXPORT_SYMBOL vmlinux 0x52172c06 generic_permission +EXPORT_SYMBOL vmlinux 0x5217e939 scsi_unregister +EXPORT_SYMBOL vmlinux 0x521b1648 fput +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x523defba mmc_detect_change +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x5245f6a4 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL vmlinux 0x525e026f acpi_os_unmap_generic_address +EXPORT_SYMBOL vmlinux 0x526bbde9 security_inode_readlink +EXPORT_SYMBOL vmlinux 0x526e570f km_query +EXPORT_SYMBOL vmlinux 0x52753e06 ipv4_specific +EXPORT_SYMBOL vmlinux 0x52813b97 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x52838864 rfkill_alloc +EXPORT_SYMBOL vmlinux 0x528e6679 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x529b216b check_submounts_and_drop +EXPORT_SYMBOL vmlinux 0x52b69a4b inode_dio_done +EXPORT_SYMBOL vmlinux 0x52cbb014 lockref_get +EXPORT_SYMBOL vmlinux 0x52d1fe8c pci_disable_ido +EXPORT_SYMBOL vmlinux 0x52dc79be tty_port_close +EXPORT_SYMBOL vmlinux 0x52fcfe32 sk_stream_error +EXPORT_SYMBOL vmlinux 0x5308b48c key_revoke +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x531b604e __virt_addr_valid +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x5344f308 bio_integrity_split +EXPORT_SYMBOL vmlinux 0x536cc847 memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x5377e556 hex2bin +EXPORT_SYMBOL vmlinux 0x5384d668 nla_put +EXPORT_SYMBOL vmlinux 0x538d2f1f gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x53c6745c mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x53dde798 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x53f629d7 tcf_action_exec +EXPORT_SYMBOL vmlinux 0x53f6ffbc wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0x5402680b lockref_mark_dead +EXPORT_SYMBOL vmlinux 0x54052217 acpi_bus_get_device +EXPORT_SYMBOL vmlinux 0x54059a2a amd_iommu_pc_get_max_counters +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x5415adcd ab3100_event_register +EXPORT_SYMBOL vmlinux 0x54245b39 kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x5440e200 soft_cursor +EXPORT_SYMBOL vmlinux 0x54489c1f dev_emerg +EXPORT_SYMBOL vmlinux 0x544b0c11 acpi_lid_notifier_register +EXPORT_SYMBOL vmlinux 0x5452e977 dma_sync_wait +EXPORT_SYMBOL vmlinux 0x546c20fb redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x546c4fad __sk_dst_check +EXPORT_SYMBOL vmlinux 0x548cbef5 inet_bind +EXPORT_SYMBOL vmlinux 0x549c72e1 do_sync_write +EXPORT_SYMBOL vmlinux 0x549dc28c zero_fill_bio +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54b40217 alloc_file +EXPORT_SYMBOL vmlinux 0x54dd0a80 pci_assign_resource +EXPORT_SYMBOL vmlinux 0x54e3cc3b param_get_int +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54efb5d6 cpu_number +EXPORT_SYMBOL vmlinux 0x55158b5c free_mdio_bitbang +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x5562787f input_register_handle +EXPORT_SYMBOL vmlinux 0x55671680 lg_lock_init +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x556c2740 hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x5574f6df dcache_dir_open +EXPORT_SYMBOL vmlinux 0x558d3224 flock_lock_file_wait +EXPORT_SYMBOL vmlinux 0x5594be03 bitmap_remap +EXPORT_SYMBOL vmlinux 0x55b672a7 __find_get_block +EXPORT_SYMBOL vmlinux 0x55ccd4d2 hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0x55f5019b __kmalloc_node +EXPORT_SYMBOL vmlinux 0x55fdef1f page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x55fdf3cd fb_set_var +EXPORT_SYMBOL vmlinux 0x5601383d netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x560ffb71 tcf_hash_lookup +EXPORT_SYMBOL vmlinux 0x5614b010 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x562aee1d register_xen_selfballooning +EXPORT_SYMBOL vmlinux 0x56345851 bdi_register_dev +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x5635e444 set_page_dirty +EXPORT_SYMBOL vmlinux 0x5642793a radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x5648a22d tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x565ad917 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x565f55e9 fd_install +EXPORT_SYMBOL vmlinux 0x5685e036 always_delete_dentry +EXPORT_SYMBOL vmlinux 0x569493d1 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x56ae4530 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56dcbecf bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x570eb593 pci_fixup_device +EXPORT_SYMBOL vmlinux 0x5728db2a dcb_setapp +EXPORT_SYMBOL vmlinux 0x572ce851 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x5745cf11 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x57647ff2 fb_find_mode +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x57710bc3 scsi_execute +EXPORT_SYMBOL vmlinux 0x5784af3d tty_port_open +EXPORT_SYMBOL vmlinux 0x578b68fe tty_name +EXPORT_SYMBOL vmlinux 0x5792f848 strlcpy +EXPORT_SYMBOL vmlinux 0x57a19007 f_setown +EXPORT_SYMBOL vmlinux 0x57a1fb30 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x57a6ccd0 down_read +EXPORT_SYMBOL vmlinux 0x57b9c897 devm_clk_get +EXPORT_SYMBOL vmlinux 0x57c94607 blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0x57e0fd61 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x57eeec97 __serio_register_port +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x584738f9 rdmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x5851a273 set_create_files_as +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x5860aad4 add_wait_queue +EXPORT_SYMBOL vmlinux 0x586103be acpi_setup_gpe_for_wake +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x5878da73 sock_update_classid +EXPORT_SYMBOL vmlinux 0x588f7c43 pipe_to_file +EXPORT_SYMBOL vmlinux 0x589402a0 __register_binfmt +EXPORT_SYMBOL vmlinux 0x589f58a2 unregister_cdrom +EXPORT_SYMBOL vmlinux 0x58d1ce20 dev_disable_lro +EXPORT_SYMBOL vmlinux 0x58d6b4f1 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x58e33bf1 alloc_disk_node +EXPORT_SYMBOL vmlinux 0x590a5f2e serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x59147c9f sockfd_lookup +EXPORT_SYMBOL vmlinux 0x59207987 compat_sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x592da31e cap_mmap_file +EXPORT_SYMBOL vmlinux 0x5930fd7c pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x59587dd6 lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x595f625e mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0x5967c929 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x5988c6c6 pci_bus_put +EXPORT_SYMBOL vmlinux 0x5989e874 dev_mc_init +EXPORT_SYMBOL vmlinux 0x5991219c cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x59a2601e generic_file_mmap +EXPORT_SYMBOL vmlinux 0x59bc9609 acpi_write_bit_register +EXPORT_SYMBOL vmlinux 0x59bda6f0 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x59e92d9a dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x59fab6bc block_write_full_page_endio +EXPORT_SYMBOL vmlinux 0x5a316bad unlazy_fpu +EXPORT_SYMBOL vmlinux 0x5a3c76ba vc_cons +EXPORT_SYMBOL vmlinux 0x5a4896a8 __put_user_2 +EXPORT_SYMBOL vmlinux 0x5a5536c2 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x5a5c03dd d_genocide +EXPORT_SYMBOL vmlinux 0x5a79ca0c sg_miter_start +EXPORT_SYMBOL vmlinux 0x5a921311 strncmp +EXPORT_SYMBOL vmlinux 0x5a94570e rtnl_notify +EXPORT_SYMBOL vmlinux 0x5aa93209 pci_request_region +EXPORT_SYMBOL vmlinux 0x5ac21822 irq_stat +EXPORT_SYMBOL vmlinux 0x5ac376a5 acpi_install_fixed_event_handler +EXPORT_SYMBOL vmlinux 0x5ac6edf7 netdev_err +EXPORT_SYMBOL vmlinux 0x5ad05bf3 scsi_reset_provider +EXPORT_SYMBOL vmlinux 0x5ad8b943 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x5ade3cf8 xfrm_state_add +EXPORT_SYMBOL vmlinux 0x5adeb9d8 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x5ae50279 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x5aeb145f complete_and_exit +EXPORT_SYMBOL vmlinux 0x5b146bf9 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x5b271d86 acpi_video_dmi_promote_vendor +EXPORT_SYMBOL vmlinux 0x5b327df1 kdb_current_task +EXPORT_SYMBOL vmlinux 0x5b3b7408 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x5b424341 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0x5b56860c vm_munmap +EXPORT_SYMBOL vmlinux 0x5b6487d2 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x5b67dc09 pci_map_rom +EXPORT_SYMBOL vmlinux 0x5b6a32e6 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x5ba440c6 pci_get_device +EXPORT_SYMBOL vmlinux 0x5bb52309 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x5bbfdff6 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x5bc10524 printk_emit +EXPORT_SYMBOL vmlinux 0x5bc5e3fd dev_uc_flush +EXPORT_SYMBOL vmlinux 0x5bc8d583 copy_from_user_overflow +EXPORT_SYMBOL vmlinux 0x5bcb9730 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x5bcbe4b0 amd_iommu_device_info +EXPORT_SYMBOL vmlinux 0x5bce4d42 i2c_transfer +EXPORT_SYMBOL vmlinux 0x5bd54551 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x5bf4cd9f nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x5bf5847b ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x5c0c3b30 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x5c0cf85b dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x5c3edd59 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x5c62602e free_buffer_head +EXPORT_SYMBOL vmlinux 0x5c6c338d xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x5c8b5ce8 prepare_to_wait +EXPORT_SYMBOL vmlinux 0x5c8d548c twl6040_power +EXPORT_SYMBOL vmlinux 0x5c93ffe5 ppp_unit_number +EXPORT_SYMBOL vmlinux 0x5ca218a6 force_sig +EXPORT_SYMBOL vmlinux 0x5cb908ad pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0x5cb9ea0b genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x5cbc2566 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0x5cc50068 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x5cceba5e get_fs_type +EXPORT_SYMBOL vmlinux 0x5ccefd0b ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x5cddc12e inet_select_addr +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5d072295 udp_prot +EXPORT_SYMBOL vmlinux 0x5d18ed0b pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x5d41c87c param_ops_charp +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d595775 cdev_add +EXPORT_SYMBOL vmlinux 0x5d5b5a16 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x5d652c63 from_kuid_munged +EXPORT_SYMBOL vmlinux 0x5d670ad4 con_is_bound +EXPORT_SYMBOL vmlinux 0x5d74dbcf pnp_range_reserved +EXPORT_SYMBOL vmlinux 0x5dd26bbc freeze_bdev +EXPORT_SYMBOL vmlinux 0x5e15d54c ida_init +EXPORT_SYMBOL vmlinux 0x5e29588c xfrm_register_type +EXPORT_SYMBOL vmlinux 0x5e36ba29 netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0x5e50b045 mount_bdev +EXPORT_SYMBOL vmlinux 0x5e6abe12 set_pages_x +EXPORT_SYMBOL vmlinux 0x5e6bd1c4 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL vmlinux 0x5e8147c3 sock_update_memcg +EXPORT_SYMBOL vmlinux 0x5e818082 cfb_imageblit +EXPORT_SYMBOL vmlinux 0x5e8896d4 pci_dev_get +EXPORT_SYMBOL vmlinux 0x5e8a8764 __get_page_tail +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ebfafcd mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ed3e5a8 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x5ee032b6 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x5ef2ed9b max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f006df2 tty_port_close_end +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f3c8f5c mmc_assume_removable +EXPORT_SYMBOL vmlinux 0x5f4eaa94 key_unlink +EXPORT_SYMBOL vmlinux 0x5f5239c9 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x5f557703 acpi_evaluate_hotplug_ost +EXPORT_SYMBOL vmlinux 0x5f58f676 flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x5f6fac50 request_firmware +EXPORT_SYMBOL vmlinux 0x5f74bfa1 try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x5f7b9fda __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x5f8c7e44 dev_addr_init +EXPORT_SYMBOL vmlinux 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5fdaf0ee __break_lease +EXPORT_SYMBOL vmlinux 0x5fdfc241 xfrm_register_km +EXPORT_SYMBOL vmlinux 0x5feeb9c2 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x5fefc0fe security_path_truncate +EXPORT_SYMBOL vmlinux 0x5ff318a3 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x5ff42b08 acpi_video_get_capabilities +EXPORT_SYMBOL vmlinux 0x5ffa7b87 pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x6011a96c inet_add_offload +EXPORT_SYMBOL vmlinux 0x601bb749 ip_mc_inc_group +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 0x604961b4 serio_unregister_port +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x60772c94 directly_mappable_cdev_bdi +EXPORT_SYMBOL vmlinux 0x60909cb3 phy_connect_direct +EXPORT_SYMBOL vmlinux 0x6093c662 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x609f5b35 ucs2_strnlen +EXPORT_SYMBOL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL vmlinux 0x60dbff3a scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60f21583 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x60f650bd skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x610515c3 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x612390ad netpoll_set_trap +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x612c9b2f __skb_checksum +EXPORT_SYMBOL vmlinux 0x613ea56c bprm_change_interp +EXPORT_SYMBOL vmlinux 0x614383c0 acpi_get_object_info +EXPORT_SYMBOL vmlinux 0x61538ad0 param_get_charp +EXPORT_SYMBOL vmlinux 0x615db4eb dev_get_stats +EXPORT_SYMBOL vmlinux 0x617e4c43 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x618735cf jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x618911fc numa_node +EXPORT_SYMBOL vmlinux 0x61923026 kmem_cache_free +EXPORT_SYMBOL vmlinux 0x61946694 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x619b50b4 get_agp_version +EXPORT_SYMBOL vmlinux 0x619cb7dd simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61ba96b0 call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0x61e9f3b8 netif_carrier_on +EXPORT_SYMBOL vmlinux 0x61f07aef phy_driver_register +EXPORT_SYMBOL vmlinux 0x61f6b7cc revalidate_disk +EXPORT_SYMBOL vmlinux 0x61fb248a node_states +EXPORT_SYMBOL vmlinux 0x62049256 acpi_disable +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +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 0x625921bf sock_alloc_file +EXPORT_SYMBOL vmlinux 0x6263acd0 blk_requeue_request +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62748e70 acpi_set_current_resources +EXPORT_SYMBOL vmlinux 0x628121e9 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x629acbd5 mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x62d3bab3 PDE_DATA +EXPORT_SYMBOL vmlinux 0x62dc584b pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x62fc751c md_register_thread +EXPORT_SYMBOL vmlinux 0x630cafdb scsi_register_interface +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x636a5691 acpi_register_ioapic +EXPORT_SYMBOL vmlinux 0x636c25aa blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x63708614 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x638236b3 neigh_seq_start +EXPORT_SYMBOL vmlinux 0x63941bb8 noop_fsync +EXPORT_SYMBOL vmlinux 0x639c26e4 __memcg_kmem_get_cache +EXPORT_SYMBOL vmlinux 0x63a01291 acpi_leave_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x63a6bcc9 acpi_map_lsapic +EXPORT_SYMBOL vmlinux 0x63a7fa95 __locks_copy_lock +EXPORT_SYMBOL vmlinux 0x63ae85bc rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0x63ba760a skb_copy_datagram_const_iovec +EXPORT_SYMBOL vmlinux 0x63d22e9e compat_ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x63d7075f km_state_expired +EXPORT_SYMBOL vmlinux 0x63dc5dd2 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x63dd2d0d dev_mc_flush +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x6405f2d2 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x643c7f30 blk_put_request +EXPORT_SYMBOL vmlinux 0x6449fd41 acpi_install_address_space_handler +EXPORT_SYMBOL vmlinux 0x64579e83 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x645a91e2 elv_register_queue +EXPORT_SYMBOL vmlinux 0x645b46ba __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x6478134c ec_burst_enable +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64a804f7 pnp_register_driver +EXPORT_SYMBOL vmlinux 0x64bbc288 string_unescape +EXPORT_SYMBOL vmlinux 0x64e4533d devm_ioport_map +EXPORT_SYMBOL vmlinux 0x64e4b043 phy_attach +EXPORT_SYMBOL vmlinux 0x64eae7ad set_memory_array_wb +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x6525b3c2 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x652ce9aa nla_memcmp +EXPORT_SYMBOL vmlinux 0x6531deac bdput +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x655f1ab0 set_memory_array_wc +EXPORT_SYMBOL vmlinux 0x65a3ef43 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x65d5392f serio_unregister_child_port +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 0x65e31b1d lock_sock_fast +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x65fe3d05 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x6605f97f flex_array_clear +EXPORT_SYMBOL vmlinux 0x660b4d61 free_netdev +EXPORT_SYMBOL vmlinux 0x661090d0 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x66193ca4 sk_wait_data +EXPORT_SYMBOL vmlinux 0x661edb4c deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x661fb299 inet_listen +EXPORT_SYMBOL vmlinux 0x662613af mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x663f7cd0 acpi_install_table_handler +EXPORT_SYMBOL vmlinux 0x6642abe9 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0x6671caf8 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x66806c6a iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x66843e9c serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x668af30e pci_disable_ltr +EXPORT_SYMBOL vmlinux 0x668da8d5 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x66a67dab flex_array_shrink +EXPORT_SYMBOL vmlinux 0x66c5d033 __mutex_init +EXPORT_SYMBOL vmlinux 0x66cdcad5 seq_vprintf +EXPORT_SYMBOL vmlinux 0x6703fc1f dquot_resume +EXPORT_SYMBOL vmlinux 0x6729d3df __get_user_4 +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x6747ad91 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x674c79f5 tty_free_termios +EXPORT_SYMBOL vmlinux 0x675b8f61 param_get_string +EXPORT_SYMBOL vmlinux 0x675c09e4 lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x67705502 __invalidate_device +EXPORT_SYMBOL vmlinux 0x6787f945 tty_mutex +EXPORT_SYMBOL vmlinux 0x67a0306a percpu_counter_set +EXPORT_SYMBOL vmlinux 0x67a9797a dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x67aa975b xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x67acbd69 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL vmlinux 0x67ced7c7 vga_put +EXPORT_SYMBOL vmlinux 0x67d396b0 rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0x67d649f6 devm_clk_put +EXPORT_SYMBOL vmlinux 0x67fd2ce1 pci_restore_state +EXPORT_SYMBOL vmlinux 0x680072e4 fsync_bdev +EXPORT_SYMBOL vmlinux 0x6800bba6 udp_sendmsg +EXPORT_SYMBOL vmlinux 0x6802af5a bio_map_user +EXPORT_SYMBOL vmlinux 0x680814a7 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0x68609713 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x6869b54c dev_mc_del +EXPORT_SYMBOL vmlinux 0x686fb0fd agp_collect_device_status +EXPORT_SYMBOL vmlinux 0x6878ee6d sk_dst_check +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x68934e7c blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x68aca4ad down +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68e05d57 getrawmonotonic +EXPORT_SYMBOL vmlinux 0x68efec45 dquot_file_open +EXPORT_SYMBOL vmlinux 0x68fa327a nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x68fa38d2 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x691001b5 acpi_evaluate_integer +EXPORT_SYMBOL vmlinux 0x6915f605 ether_setup +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x69767441 scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x697c6d5b tty_check_change +EXPORT_SYMBOL vmlinux 0x698208ff ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x6988d0ca cpu_dr7 +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a0ff01 spi_dv_device +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69acdf38 memcpy +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69c2c8af gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0x69d38ed9 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x69daf35e default_llseek +EXPORT_SYMBOL vmlinux 0x69e27c7a bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x69fbc0a2 acpi_get_event_resources +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a0735e4 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x6a13502d scm_fp_dup +EXPORT_SYMBOL vmlinux 0x6a18f3b8 blk_sync_queue +EXPORT_SYMBOL vmlinux 0x6a2ce799 page_put_link +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a5fa363 sigprocmask +EXPORT_SYMBOL vmlinux 0x6a62ac26 acpi_processor_notify_smm +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a9479b0 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6ad85887 acpi_enable_gpe +EXPORT_SYMBOL vmlinux 0x6add5c9a dmi_find_device +EXPORT_SYMBOL vmlinux 0x6af550b4 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b353499 fb_set_cmap +EXPORT_SYMBOL vmlinux 0x6b431451 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x6b640864 nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6b787805 textsearch_prepare +EXPORT_SYMBOL vmlinux 0x6b86dee4 ip_check_defrag +EXPORT_SYMBOL vmlinux 0x6b92f3ab pnp_device_detach +EXPORT_SYMBOL vmlinux 0x6ba4f9eb sock_no_connect +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bcbca4f inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6bdd7c50 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x6beb2078 param_set_copystring +EXPORT_SYMBOL vmlinux 0x6beb7ca8 mmc_request_done +EXPORT_SYMBOL vmlinux 0x6bf0e148 unload_nls +EXPORT_SYMBOL vmlinux 0x6bf143f9 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x6c0ba028 mmc_put_card +EXPORT_SYMBOL vmlinux 0x6c2422b3 update_region +EXPORT_SYMBOL vmlinux 0x6c389761 acpi_bus_get_private_data +EXPORT_SYMBOL vmlinux 0x6c5101d8 percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c66f9c9 acpi_lock_battery_dir +EXPORT_SYMBOL vmlinux 0x6c6b9f1b alloc_mdio_bitbang +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c8cd652 km_policy_notify +EXPORT_SYMBOL vmlinux 0x6c93ba0f cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x6ca85620 ip_getsockopt +EXPORT_SYMBOL vmlinux 0x6cd8c86b __crc32c_le_combine +EXPORT_SYMBOL vmlinux 0x6ce8d923 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0x6cf2ac2f dm_unregister_target +EXPORT_SYMBOL vmlinux 0x6d04c887 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x6d0aba34 wait_for_completion +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d165c40 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0x6d1ac1fd xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x6d2266fe sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0x6d27ef64 __bitmap_empty +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d305361 register_cdrom +EXPORT_SYMBOL vmlinux 0x6d334118 __get_user_8 +EXPORT_SYMBOL vmlinux 0x6d340f64 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0x6d532e7b block_truncate_page +EXPORT_SYMBOL vmlinux 0x6d567fb0 textsearch_register +EXPORT_SYMBOL vmlinux 0x6d6818ff gen_pool_alloc +EXPORT_SYMBOL vmlinux 0x6d733019 phy_stop +EXPORT_SYMBOL vmlinux 0x6d741ec3 mpage_writepages +EXPORT_SYMBOL vmlinux 0x6da49c88 vfs_write +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6e21489f pnp_request_card_device +EXPORT_SYMBOL vmlinux 0x6e297a62 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x6e389876 sk_ns_capable +EXPORT_SYMBOL vmlinux 0x6e3c6d7f nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x6e3f16bd mnt_pin +EXPORT_SYMBOL vmlinux 0x6e42fe30 inet_stream_ops +EXPORT_SYMBOL vmlinux 0x6e4ca79a spi_schedule_dv_device +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e7cff33 posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x6e800063 bio_integrity_tag_size +EXPORT_SYMBOL vmlinux 0x6ea8cb71 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0x6ebabb4a pipe_unlock +EXPORT_SYMBOL vmlinux 0x6ebc5149 param_ops_long +EXPORT_SYMBOL vmlinux 0x6ebedad3 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x6ec02b3a xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x6ecd7936 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x6edd3ddf jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x6f06782f nf_ct_attach +EXPORT_SYMBOL vmlinux 0x6f0aadbd arp_invalidate +EXPORT_SYMBOL vmlinux 0x6f0ae5ac buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x6f1d703f tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f32d139 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x6f337076 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x6f36c782 idr_find_slowpath +EXPORT_SYMBOL vmlinux 0x6f4c812f __percpu_counter_add +EXPORT_SYMBOL vmlinux 0x6f556bdb acpi_get_gpe_device +EXPORT_SYMBOL vmlinux 0x6f7421e9 vfs_llseek +EXPORT_SYMBOL vmlinux 0x6f80c6c0 bio_sector_offset +EXPORT_SYMBOL vmlinux 0x6f851ccc blk_bio_map_sg +EXPORT_SYMBOL vmlinux 0x6f91a621 ps2_begin_command +EXPORT_SYMBOL vmlinux 0x6f941412 tty_do_resize +EXPORT_SYMBOL vmlinux 0x6faaf7e9 skb_copy_datagram_from_iovec +EXPORT_SYMBOL vmlinux 0x6fb6a3f2 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fd040ec generic_segment_checks +EXPORT_SYMBOL vmlinux 0x6fdd9968 key_type_keyring +EXPORT_SYMBOL vmlinux 0x6fddcf4b mmc_erase +EXPORT_SYMBOL vmlinux 0x6feb2039 acpi_write +EXPORT_SYMBOL vmlinux 0x6febb6a8 security_path_unlink +EXPORT_SYMBOL vmlinux 0x700ad29e mmc_can_discard +EXPORT_SYMBOL vmlinux 0x7023bea8 unregister_acpi_notifier +EXPORT_SYMBOL vmlinux 0x702b6c54 udplite_table +EXPORT_SYMBOL vmlinux 0x70342ee2 acpi_pm_device_sleep_state +EXPORT_SYMBOL vmlinux 0x703b4352 _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x704ad247 __ht_create_irq +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x705c0f54 send_sig +EXPORT_SYMBOL vmlinux 0x7064a339 compat_tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x70a16b50 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x70bb2a25 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x70bc17d7 inode_wait +EXPORT_SYMBOL vmlinux 0x70c7d0a5 blk_mq_init_commands +EXPORT_SYMBOL vmlinux 0x70d053fd try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0x70d8ab82 acpi_acquire_global_lock +EXPORT_SYMBOL vmlinux 0x710a75e3 blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x710e98f4 bdget +EXPORT_SYMBOL vmlinux 0x71112a51 dev_alloc_name +EXPORT_SYMBOL vmlinux 0x7113f376 kernel_connect +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x713611c7 pci_release_regions +EXPORT_SYMBOL vmlinux 0x7163acee alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x716ee303 pid_task +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x71848def agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0x718f4f45 single_release +EXPORT_SYMBOL vmlinux 0x7192ac68 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x719c4362 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71b2c19f xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x71bb6dc5 page_symlink +EXPORT_SYMBOL vmlinux 0x71c26307 fget_raw +EXPORT_SYMBOL vmlinux 0x71e3cecb up +EXPORT_SYMBOL vmlinux 0x7249737a skb_queue_purge +EXPORT_SYMBOL vmlinux 0x724b770b find_vma +EXPORT_SYMBOL vmlinux 0x724ce8ac __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x725bc1e4 dquot_commit_info +EXPORT_SYMBOL vmlinux 0x726cbe7a skb_copy_and_csum_datagram_iovec +EXPORT_SYMBOL vmlinux 0x727b7c75 blk_register_region +EXPORT_SYMBOL vmlinux 0x7281c8c6 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x728bc733 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0x72a603a9 fail_migrate_page +EXPORT_SYMBOL vmlinux 0x72a98fdb copy_user_generic_unrolled +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72bb35a7 devm_gpiod_get +EXPORT_SYMBOL vmlinux 0x72bf2140 mtrr_add +EXPORT_SYMBOL vmlinux 0x72e921dc neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72f3aa32 acpi_get_physical_device_location +EXPORT_SYMBOL vmlinux 0x730f0b67 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x73235e6e migrate_page +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x7352c0b5 loop_backing_file +EXPORT_SYMBOL vmlinux 0x735a0bd5 native_io_delay +EXPORT_SYMBOL vmlinux 0x737de5e9 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x7384000b truncate_setsize +EXPORT_SYMBOL vmlinux 0x7399af50 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x73a2209a skb_orphan_partial +EXPORT_SYMBOL vmlinux 0x73a78bc4 downgrade_write +EXPORT_SYMBOL vmlinux 0x73dd54eb irq_fpu_usable +EXPORT_SYMBOL vmlinux 0x73ecf29f dquot_get_dqinfo +EXPORT_SYMBOL vmlinux 0x73f2513e __genl_register_family +EXPORT_SYMBOL vmlinux 0x7400fc3c drop_nlink +EXPORT_SYMBOL vmlinux 0x740a1b95 reserve_evntsel_nmi +EXPORT_SYMBOL vmlinux 0x7411f9a6 i2c_del_driver +EXPORT_SYMBOL vmlinux 0x742fdd3c alloc_disk +EXPORT_SYMBOL vmlinux 0x7469fcfe radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x74881d07 acpi_unlock_battery_dir +EXPORT_SYMBOL vmlinux 0x749192b7 nf_register_hook +EXPORT_SYMBOL vmlinux 0x749bb663 inet6_ioctl +EXPORT_SYMBOL vmlinux 0x74a08d84 md_integrity_register +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74c7efba writeback_in_progress +EXPORT_SYMBOL vmlinux 0x74cf6b1f kmalloc_caches +EXPORT_SYMBOL vmlinux 0x74dcb563 __frontswap_test +EXPORT_SYMBOL vmlinux 0x74e3bc0d set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74eabcc9 input_release_device +EXPORT_SYMBOL vmlinux 0x74ee7c33 netif_rx +EXPORT_SYMBOL vmlinux 0x74f2a078 dm_get_mapinfo +EXPORT_SYMBOL vmlinux 0x7532588a alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x7533efa9 input_register_handler +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x75462daf netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0x7547b0dc alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x754d539c strlen +EXPORT_SYMBOL vmlinux 0x754dac78 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x7583f18a submit_bh +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75c9c942 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x75fbdefd acpi_remove_address_space_handler +EXPORT_SYMBOL vmlinux 0x75fd45e5 gen10g_resume +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x76245997 mount_subtree +EXPORT_SYMBOL vmlinux 0x7628f3c7 this_cpu_off +EXPORT_SYMBOL vmlinux 0x7632c8c2 d_alloc_name +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x76573561 scsi_calculate_bounce_limit +EXPORT_SYMBOL vmlinux 0x765ddfdb d_splice_alias +EXPORT_SYMBOL vmlinux 0x765ff474 crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x76653339 acpi_match_device_ids +EXPORT_SYMBOL vmlinux 0x76658dc0 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x766d3962 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x766d95ab pci_reenable_device +EXPORT_SYMBOL vmlinux 0x767dd8fd acpi_get_irq_routing_table +EXPORT_SYMBOL vmlinux 0x767ddb02 set_memory_wc +EXPORT_SYMBOL vmlinux 0x76869ac8 rdmsr_on_cpus +EXPORT_SYMBOL vmlinux 0x76b25d22 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x76bf656d __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x76cc4adf iterate_dir +EXPORT_SYMBOL vmlinux 0x76d25fd0 unregister_netdev +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76d4b2ae dev_printk_emit +EXPORT_SYMBOL vmlinux 0x76e124fa tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x76e91de1 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x76fb08a7 amd_iommu_unregister_ppr_notifier +EXPORT_SYMBOL vmlinux 0x7706ab67 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x77113ddb bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x773fa409 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x77456e0a acpi_root_dir +EXPORT_SYMBOL vmlinux 0x77811198 __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x779ac34c bdevname +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77be59d8 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x77df0847 __set_personality +EXPORT_SYMBOL vmlinux 0x77ecac9f zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x77ecccfb security_task_getsecid +EXPORT_SYMBOL vmlinux 0x77f455f2 unregister_key_type +EXPORT_SYMBOL vmlinux 0x77f53abc acpi_get_vendor_resource +EXPORT_SYMBOL vmlinux 0x780fdfd1 intel_enable_gtt +EXPORT_SYMBOL vmlinux 0x78161b7e ihold +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x784213a6 pv_lock_ops +EXPORT_SYMBOL vmlinux 0x78465223 clear_inode +EXPORT_SYMBOL vmlinux 0x7846af3e __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x786f914d kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x7873961c __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x78764f4e pv_irq_ops +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78a5fdaa unregister_nls +EXPORT_SYMBOL vmlinux 0x78b731e8 ipmi_smi_add_proc_entry +EXPORT_SYMBOL vmlinux 0x78bb3e24 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0x78d7a9ff blk_mq_insert_request +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78ef1985 proto_unregister +EXPORT_SYMBOL vmlinux 0x78f5fd70 dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL vmlinux 0x79010870 put_page +EXPORT_SYMBOL vmlinux 0x79068fda acpi_install_method +EXPORT_SYMBOL vmlinux 0x790dd4e2 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x791ad1c2 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x792c916f softnet_data +EXPORT_SYMBOL vmlinux 0x792fcc95 lease_get_mtime +EXPORT_SYMBOL vmlinux 0x7952ef26 tty_unlock +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x796feb32 seq_pad +EXPORT_SYMBOL vmlinux 0x797c8fa9 cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x79806ac9 fb_pan_display +EXPORT_SYMBOL vmlinux 0x7984eefc key_update +EXPORT_SYMBOL vmlinux 0x7991ca8e dev_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x79945d9f proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x79a38e61 ___ratelimit +EXPORT_SYMBOL vmlinux 0x79a71a25 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79cb5c5d alloc_anon_inode +EXPORT_SYMBOL vmlinux 0x79d049d6 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x79e83dec inet_frags_init_net +EXPORT_SYMBOL vmlinux 0x7a188791 prandom_bytes +EXPORT_SYMBOL vmlinux 0x7a19f10a scsi_put_command +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a2f7047 eth_validate_addr +EXPORT_SYMBOL vmlinux 0x7a4443d1 iov_iter_copy_from_user +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a73d9bb pnpacpi_protocol +EXPORT_SYMBOL vmlinux 0x7a7db383 spi_attach_transport +EXPORT_SYMBOL vmlinux 0x7a82cb47 rdmsrl_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x7a8a7f94 kernel_getsockname +EXPORT_SYMBOL vmlinux 0x7a91726b clkdev_alloc +EXPORT_SYMBOL vmlinux 0x7a925833 cpufreq_get_global_kobject +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7aae8020 pcim_pin_device +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7aba9d1d padata_add_cpu +EXPORT_SYMBOL vmlinux 0x7abd5738 dev_addr_del +EXPORT_SYMBOL vmlinux 0x7acb922c ata_dev_printk +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7ae26e53 dentry_open +EXPORT_SYMBOL vmlinux 0x7aec9089 clear_user +EXPORT_SYMBOL vmlinux 0x7af2385e register_md_personality +EXPORT_SYMBOL vmlinux 0x7af47081 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x7afa6b24 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x7affa01f scsi_free_command +EXPORT_SYMBOL vmlinux 0x7b11257b elevator_change +EXPORT_SYMBOL vmlinux 0x7b16235f hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x7b2aef6c __krealloc +EXPORT_SYMBOL vmlinux 0x7b2f344f ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x7b525d08 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x7b52a859 wrmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x7b5bb896 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x7b7fd2db splice_from_pipe_end +EXPORT_SYMBOL vmlinux 0x7b9a6116 intel_agp_enabled +EXPORT_SYMBOL vmlinux 0x7bef65b2 d_alloc +EXPORT_SYMBOL vmlinux 0x7c105202 bdi_register +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c2c0fc8 lock_may_write +EXPORT_SYMBOL vmlinux 0x7c2d098f krealloc +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c6da5c2 tcf_generic_walker +EXPORT_SYMBOL vmlinux 0x7c6f776a init_task +EXPORT_SYMBOL vmlinux 0x7c88f3ae __skb_get_hash +EXPORT_SYMBOL vmlinux 0x7ca46555 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cbf7081 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0x7cc578da param_get_long +EXPORT_SYMBOL vmlinux 0x7cd0531b cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x7cdae28a d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7ce83365 acpi_remove_table_handler +EXPORT_SYMBOL vmlinux 0x7cf06134 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0x7cf3a16b put_cmsg +EXPORT_SYMBOL vmlinux 0x7cf8a0db set_device_ro +EXPORT_SYMBOL vmlinux 0x7cffc7a5 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d2d255f key_payload_reserve +EXPORT_SYMBOL vmlinux 0x7d900d71 tcf_hash_create +EXPORT_SYMBOL vmlinux 0x7d94f746 acpi_os_write_port +EXPORT_SYMBOL vmlinux 0x7da19283 node_data +EXPORT_SYMBOL vmlinux 0x7dbc2e57 mmiotrace_printk +EXPORT_SYMBOL vmlinux 0x7dc653da vga_switcheroo_unregister_client +EXPORT_SYMBOL vmlinux 0x7dceff1b lro_receive_frags +EXPORT_SYMBOL vmlinux 0x7dd554fc unregister_kmmio_probe +EXPORT_SYMBOL vmlinux 0x7ddfa2a1 vfs_statfs +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7e04491e vga_switcheroo_register_handler +EXPORT_SYMBOL vmlinux 0x7e0aa389 acpi_bus_unregister_driver +EXPORT_SYMBOL vmlinux 0x7e0ff356 dget_parent +EXPORT_SYMBOL vmlinux 0x7e11e053 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x7e1c910e qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x7e394c4e sysctl_local_reserved_ports +EXPORT_SYMBOL vmlinux 0x7e3bfc4a proc_symlink +EXPORT_SYMBOL vmlinux 0x7e40345f pci_enable_device_io +EXPORT_SYMBOL vmlinux 0x7e427c60 security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0x7e65362a jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x7e66f99b sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x7e97ff91 scsi_remove_target +EXPORT_SYMBOL vmlinux 0x7e98f354 generic_file_remap_pages +EXPORT_SYMBOL vmlinux 0x7ea7627c blk_mq_alloc_reserved_request +EXPORT_SYMBOL vmlinux 0x7ec7b76c pci_release_region +EXPORT_SYMBOL vmlinux 0x7ed914c9 acpi_decode_pld_buffer +EXPORT_SYMBOL vmlinux 0x7ef2aac9 vfs_link +EXPORT_SYMBOL vmlinux 0x7f0caa73 inode_change_ok +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f3a7ae4 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x7f536f6e kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0x7f658e80 _raw_write_lock +EXPORT_SYMBOL vmlinux 0x7f692735 mdio_bus_type +EXPORT_SYMBOL vmlinux 0x7f760fab jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x7fb275f3 dev_uc_add +EXPORT_SYMBOL vmlinux 0x7fda9344 kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7fe38f48 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x8000bcc1 __devm_request_region +EXPORT_SYMBOL vmlinux 0x800aafaf d_find_any_alias +EXPORT_SYMBOL vmlinux 0x802d0e93 crc32_le +EXPORT_SYMBOL vmlinux 0x803d3335 inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x8043dbd4 udplite_prot +EXPORT_SYMBOL vmlinux 0x804f922a ipmi_addr_length +EXPORT_SYMBOL vmlinux 0x80910907 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x811da774 fbcon_set_rotate +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 0x81621ae4 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x8189270f pci_scan_bus_parented +EXPORT_SYMBOL vmlinux 0x8192776c genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x819bc806 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x81a4cc8e dcache_dir_close +EXPORT_SYMBOL vmlinux 0x81a9d05a iunique +EXPORT_SYMBOL vmlinux 0x81bbb91a vga_switcheroo_get_client_state +EXPORT_SYMBOL vmlinux 0x81cf9f31 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x81d10f5f trace_seq_putc +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81dfc481 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x81e6b37f dmi_get_system_info +EXPORT_SYMBOL vmlinux 0x81e8aed9 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x8200d0d7 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x8212721d xenbus_dev_request_and_reply +EXPORT_SYMBOL vmlinux 0x8214aaf5 dev_add_offload +EXPORT_SYMBOL vmlinux 0x8222328f __netif_schedule +EXPORT_SYMBOL vmlinux 0x822e8f8f tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x82477240 ida_destroy +EXPORT_SYMBOL vmlinux 0x824bb23d i8042_install_filter +EXPORT_SYMBOL vmlinux 0x825192d6 kill_pid +EXPORT_SYMBOL vmlinux 0x8251bcc3 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x8254f322 devm_request_and_ioremap +EXPORT_SYMBOL vmlinux 0x825e8671 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x8260686f bitmap_find_next_zero_area +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x82806e5c pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x8280caa2 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x828a71da unregister_binfmt +EXPORT_SYMBOL vmlinux 0x829d4e08 rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x82a7961b xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82afe05a __block_write_begin +EXPORT_SYMBOL vmlinux 0x830d19ff jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x830e547b ioremap_prot +EXPORT_SYMBOL vmlinux 0x830f7850 make_kprojid +EXPORT_SYMBOL vmlinux 0x8313841a __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x832287df bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x8332e83f xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x83334b1b scsi_print_result +EXPORT_SYMBOL vmlinux 0x833c03aa acpi_enable_all_runtime_gpes +EXPORT_SYMBOL vmlinux 0x836062ef netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x83608abb __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0x83a476ce bitmap_scnlistprintf +EXPORT_SYMBOL vmlinux 0x83d8a344 filp_open +EXPORT_SYMBOL vmlinux 0x83edb3ce pv_cpu_ops +EXPORT_SYMBOL vmlinux 0x83f15f9c vfs_open +EXPORT_SYMBOL vmlinux 0x83f3cdff gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0x83f8f1dc sg_miter_stop +EXPORT_SYMBOL vmlinux 0x84060081 xen_poll_irq_timeout +EXPORT_SYMBOL vmlinux 0x8417f512 acpi_update_all_gpes +EXPORT_SYMBOL vmlinux 0x841962f8 param_get_ushort +EXPORT_SYMBOL vmlinux 0x844a9b80 netif_napi_del +EXPORT_SYMBOL vmlinux 0x8468abe1 __i2c_transfer +EXPORT_SYMBOL vmlinux 0x847357dc flush_old_exec +EXPORT_SYMBOL vmlinux 0x8485cc44 kobject_set_name +EXPORT_SYMBOL vmlinux 0x84a14e1f mount_single +EXPORT_SYMBOL vmlinux 0x84a2bac8 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x84c84bba jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x84d1fae5 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x84fbc1f2 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x8509c540 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0x8509e02d jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x8518eca9 param_get_short +EXPORT_SYMBOL vmlinux 0x852671ad padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x8527b72d qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0x85344924 simple_getattr +EXPORT_SYMBOL vmlinux 0x853bf7c1 param_set_int +EXPORT_SYMBOL vmlinux 0x85462e5c lease_modify +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x85672b45 __elv_add_request +EXPORT_SYMBOL vmlinux 0x85b2e106 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85cd1a11 bdgrab +EXPORT_SYMBOL vmlinux 0x85cebb5d blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85f20be4 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x861b58f9 __destroy_inode +EXPORT_SYMBOL vmlinux 0x862edfef locks_init_lock +EXPORT_SYMBOL vmlinux 0x8632927c dev_change_flags +EXPORT_SYMBOL vmlinux 0x8647a1df insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x8658444e dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x86704989 inet6_del_offload +EXPORT_SYMBOL vmlinux 0x867bb967 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x8685dc4e phy_device_free +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x86944cea devm_gpio_free +EXPORT_SYMBOL vmlinux 0x86a361f9 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x86b0a669 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0x86d5255f _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0x86e2867a mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x870285f5 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x870bf928 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x8712ce41 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x87373c24 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x875077b9 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x876b92c6 pnp_release_card_device +EXPORT_SYMBOL vmlinux 0x876dafc3 ec_write +EXPORT_SYMBOL vmlinux 0x877855f4 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x8779a34f param_ops_byte +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x8790917f devm_free_irq +EXPORT_SYMBOL vmlinux 0x879d2b86 neigh_app_ns +EXPORT_SYMBOL vmlinux 0x87aaddf8 wrmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0x87ad7df2 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x87b5899c vlan_vid_del +EXPORT_SYMBOL vmlinux 0x87c58a96 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x87dc469a mempool_create_node +EXPORT_SYMBOL vmlinux 0x87e2cc75 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x880c5498 i2c_clients_command +EXPORT_SYMBOL vmlinux 0x881039d0 zlib_inflate +EXPORT_SYMBOL vmlinux 0x8831161e inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0x88332051 sock_setsockopt +EXPORT_SYMBOL vmlinux 0x8833910c mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x8834396c mod_timer +EXPORT_SYMBOL vmlinux 0x883cfdcf __seq_open_private +EXPORT_SYMBOL vmlinux 0x88441804 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x88513970 param_set_byte +EXPORT_SYMBOL vmlinux 0x88544ef1 dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x88546d5c blk_end_request_all +EXPORT_SYMBOL vmlinux 0x8869b78d dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x8891d6c0 wait_on_sync_kiocb +EXPORT_SYMBOL vmlinux 0x8897df7d kobject_init +EXPORT_SYMBOL vmlinux 0x889bb13e submit_bio_wait +EXPORT_SYMBOL vmlinux 0x88aac326 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x88af4bda iget_locked +EXPORT_SYMBOL vmlinux 0x88b04e39 __register_nmi_handler +EXPORT_SYMBOL vmlinux 0x88b5af70 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x88bd563a skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x88f00d18 lg_global_unlock +EXPORT_SYMBOL vmlinux 0x8904c339 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x89212d1a prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x892b26a0 set_memory_nx +EXPORT_SYMBOL vmlinux 0x8947fd61 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x8954e675 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x89591ae3 pci_find_capability +EXPORT_SYMBOL vmlinux 0x897473df mktime +EXPORT_SYMBOL vmlinux 0x898ed84e jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89bfc410 phy_drivers_register +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89e6618e ip_options_compile +EXPORT_SYMBOL vmlinux 0x89edd175 netlink_ack +EXPORT_SYMBOL vmlinux 0x8a00dbb4 ___pskb_trim +EXPORT_SYMBOL vmlinux 0x8a1372cf init_net +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a28a376 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x8a28a390 mark_info_dirty +EXPORT_SYMBOL vmlinux 0x8a2aedb0 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x8a3040c0 ipmi_smi_watcher_register +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a49adfb __blockdev_direct_IO +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 0x8a9327fb pcim_iounmap +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8aaf8c59 block_invalidatepage +EXPORT_SYMBOL vmlinux 0x8ad58ff1 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x8adc021f tcp_make_synack +EXPORT_SYMBOL vmlinux 0x8aebd3d7 udp_del_offload +EXPORT_SYMBOL vmlinux 0x8b0027e6 keyring_alloc +EXPORT_SYMBOL vmlinux 0x8b1a7a66 pcie_aspm_enabled +EXPORT_SYMBOL vmlinux 0x8b226a81 acpi_video_dmi_demote_vendor +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b5f4a2e IO_APIC_get_PCI_irq_vector +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b89caa7 fb_show_logo +EXPORT_SYMBOL vmlinux 0x8b989cf9 acpi_bus_can_wakeup +EXPORT_SYMBOL vmlinux 0x8ba0e336 fifo_set_limit +EXPORT_SYMBOL vmlinux 0x8ba7e6bd nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x8be301c5 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x8c0f7a03 set_disk_ro +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c264f6d sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x8c2b530e deactivate_super +EXPORT_SYMBOL vmlinux 0x8c311e6e tcp_read_sock +EXPORT_SYMBOL vmlinux 0x8c4f230f scsi_prep_return +EXPORT_SYMBOL vmlinux 0x8c529d12 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x8c5fc27d shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x8c601e25 dev_remove_pack +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c868677 arp_tbl +EXPORT_SYMBOL vmlinux 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8cd4ea27 pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x8cda8029 xen_clear_irq_pending +EXPORT_SYMBOL vmlinux 0x8ce71632 abx500_register_ops +EXPORT_SYMBOL vmlinux 0x8cf726ab start_tty +EXPORT_SYMBOL vmlinux 0x8d1ecc98 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0x8d25e705 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x8d2e268b param_ops_ulong +EXPORT_SYMBOL vmlinux 0x8d4ce199 mapping_tagged +EXPORT_SYMBOL vmlinux 0x8d4e49aa nf_log_unregister +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d6ba217 sock_sendmsg +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d7c4d10 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x8d8d96c6 acpi_get_sleep_type_data +EXPORT_SYMBOL vmlinux 0x8d8f8234 max8998_update_reg +EXPORT_SYMBOL vmlinux 0x8da1a3cb acpi_remove_interface +EXPORT_SYMBOL vmlinux 0x8daf8c42 dql_init +EXPORT_SYMBOL vmlinux 0x8dd30832 bio_put +EXPORT_SYMBOL vmlinux 0x8dd844d0 kernel_write +EXPORT_SYMBOL vmlinux 0x8df6c16d seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x8df92f66 memchr_inv +EXPORT_SYMBOL vmlinux 0x8e002cda acpi_remove_gpe_block +EXPORT_SYMBOL vmlinux 0x8e09321e kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x8e12cdc6 user_path_at +EXPORT_SYMBOL vmlinux 0x8e29c2a5 dmam_pool_create +EXPORT_SYMBOL vmlinux 0x8e332829 flush_delayed_work +EXPORT_SYMBOL vmlinux 0x8e403385 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x8e4a3cd9 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x8e6fd8a1 phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0x8e73ad57 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x8e7feffd devm_gpiod_put +EXPORT_SYMBOL vmlinux 0x8e864a86 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x8eac87bd dma_set_mask +EXPORT_SYMBOL vmlinux 0x8eaf2a5f vga_switcheroo_unregister_handler +EXPORT_SYMBOL vmlinux 0x8ec0e8e9 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x8eeae306 ip_cmsg_recv +EXPORT_SYMBOL vmlinux 0x8ef5628d jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x8f15df76 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x8f24134b ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x8f252d5c tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x8f2703b7 wbinvd_on_all_cpus +EXPORT_SYMBOL vmlinux 0x8f2a5db8 genphy_read_status +EXPORT_SYMBOL vmlinux 0x8f37f5dc pci_set_power_state +EXPORT_SYMBOL vmlinux 0x8f617712 simple_empty +EXPORT_SYMBOL vmlinux 0x8f6b8287 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0x8f9ad9b1 file_update_time +EXPORT_SYMBOL vmlinux 0x8f9c199c __get_user_2 +EXPORT_SYMBOL vmlinux 0x8f9e3e97 dev_mc_add +EXPORT_SYMBOL vmlinux 0x8fab2c60 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x8fb5a687 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x8fbd6e97 dcache_readdir +EXPORT_SYMBOL vmlinux 0x8fc551d6 elv_rb_del +EXPORT_SYMBOL vmlinux 0x8fce2038 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x8fce2ee7 fixed_size_llseek +EXPORT_SYMBOL vmlinux 0x8fe48b08 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x8fe8444c input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x8ff44a8d agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0x9001587d new_inode +EXPORT_SYMBOL vmlinux 0x904409c6 acpi_set_firmware_waking_vector +EXPORT_SYMBOL vmlinux 0x904e3da3 ping_prot +EXPORT_SYMBOL vmlinux 0x90679f2a nobh_write_end +EXPORT_SYMBOL vmlinux 0x907260cd phy_print_status +EXPORT_SYMBOL vmlinux 0x908b38d4 serio_reconnect +EXPORT_SYMBOL vmlinux 0x908b53ed param_set_short +EXPORT_SYMBOL vmlinux 0x90944b50 scsi_setup_blk_pc_cmnd +EXPORT_SYMBOL vmlinux 0x909acac4 kill_block_super +EXPORT_SYMBOL vmlinux 0x90bfca47 dev_get_nest_level +EXPORT_SYMBOL vmlinux 0x90d01c4c net_dma_find_channel +EXPORT_SYMBOL vmlinux 0x90e2a014 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x911080eb inet_getname +EXPORT_SYMBOL vmlinux 0x912209bc setup_arg_pages +EXPORT_SYMBOL vmlinux 0x91266657 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x912e9599 pci_iounmap +EXPORT_SYMBOL vmlinux 0x9130e72d dst_destroy +EXPORT_SYMBOL vmlinux 0x913d0f9c path_get +EXPORT_SYMBOL vmlinux 0x9144a8e2 ec_burst_disable +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x91607d95 set_memory_wb +EXPORT_SYMBOL vmlinux 0x9166fada strncpy +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x918fa141 vsc824x_add_skew +EXPORT_SYMBOL vmlinux 0x91967e8e xen_selfballoon_init +EXPORT_SYMBOL vmlinux 0x91a3cdf4 down_timeout +EXPORT_SYMBOL vmlinux 0x91a5c13a gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x91ac822f vscnprintf +EXPORT_SYMBOL vmlinux 0x91b25925 sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0x91cbecca pci_scan_slot +EXPORT_SYMBOL vmlinux 0x91d11bda ppp_channel_index +EXPORT_SYMBOL vmlinux 0x91ddcdc7 kfree_skb +EXPORT_SYMBOL vmlinux 0x92274931 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x92295538 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x9242a9c6 neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x9244f0fc release_sock +EXPORT_SYMBOL vmlinux 0x924a3694 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x925520d2 blk_start_plug +EXPORT_SYMBOL vmlinux 0x92562c79 napi_gro_receive +EXPORT_SYMBOL vmlinux 0x925c3be1 acpi_notifier_call_chain +EXPORT_SYMBOL vmlinux 0x92716241 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x9272dff0 __ip_select_ident +EXPORT_SYMBOL vmlinux 0x928148ce blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x9282923c generic_file_open +EXPORT_SYMBOL vmlinux 0x9291cd3b memdup_user +EXPORT_SYMBOL vmlinux 0x92a5f586 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92b0a18e end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x92d050df iov_pages +EXPORT_SYMBOL vmlinux 0x92f5a79f napi_gro_flush +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x93078c4f xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x930b757e ipmi_get_smi_info +EXPORT_SYMBOL vmlinux 0x930c7c18 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x9327f5ce _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x93296573 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x9330a383 dev_change_carrier +EXPORT_SYMBOL vmlinux 0x93448a71 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x937663ce writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x938fb82d mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x9395a699 tcp_prot +EXPORT_SYMBOL vmlinux 0x93a6e0b2 io_schedule +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93db508b mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x93f19dd8 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x93f3e52b acpi_extract_package +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x94019c21 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x941d2cef tcp_proc_register +EXPORT_SYMBOL vmlinux 0x9478e45e try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x947f9dd3 __lru_cache_add +EXPORT_SYMBOL vmlinux 0x94955014 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94cc75fc amd_iommu_flush_tlb +EXPORT_SYMBOL vmlinux 0x94d43e10 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x94f1c4eb blk_free_tags +EXPORT_SYMBOL vmlinux 0x94f1e45c elv_rb_add +EXPORT_SYMBOL vmlinux 0x9503bdc1 __kfree_skb +EXPORT_SYMBOL vmlinux 0x9508f166 param_ops_bint +EXPORT_SYMBOL vmlinux 0x951754c9 dput +EXPORT_SYMBOL vmlinux 0x95395301 acpi_exception +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x9549890f pci_choose_state +EXPORT_SYMBOL vmlinux 0x955d51b0 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0x95684fe6 netdev_crit +EXPORT_SYMBOL vmlinux 0x9572f2ec xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x957b54e0 generic_file_llseek +EXPORT_SYMBOL vmlinux 0x9589a760 cdrom_check_events +EXPORT_SYMBOL vmlinux 0x9593e99e clear_bdi_congested +EXPORT_SYMBOL vmlinux 0x959d385f generic_make_request +EXPORT_SYMBOL vmlinux 0x95c43d40 simple_link +EXPORT_SYMBOL vmlinux 0x95d2d5f2 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x95f89a33 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x963e0780 pci_pme_active +EXPORT_SYMBOL vmlinux 0x9668ec0c pci_enable_device +EXPORT_SYMBOL vmlinux 0x9696caf7 pci_request_regions +EXPORT_SYMBOL vmlinux 0x969c0f35 acpi_processor_unregister_performance +EXPORT_SYMBOL vmlinux 0x96a53956 iget5_locked +EXPORT_SYMBOL vmlinux 0x96b0a3bc __brelse +EXPORT_SYMBOL vmlinux 0x96b29254 strncasecmp +EXPORT_SYMBOL vmlinux 0x96b34048 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96d3c5cc xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x96f05f6e vga_switcheroo_fini_domain_pm_ops +EXPORT_SYMBOL vmlinux 0x9707a78c dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x9725b589 proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x97293709 inet_sendmsg +EXPORT_SYMBOL vmlinux 0x973fa82e register_acpi_notifier +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x97653a64 acpi_pm_device_run_wake +EXPORT_SYMBOL vmlinux 0x977113f4 dcb_getapp +EXPORT_SYMBOL vmlinux 0x97868aef __kfifo_alloc +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a60e3d param_get_bool +EXPORT_SYMBOL vmlinux 0x97be5821 uart_match_port +EXPORT_SYMBOL vmlinux 0x97c5bd0a acpi_unload_parent_table +EXPORT_SYMBOL vmlinux 0x97d6f685 netpoll_print_options +EXPORT_SYMBOL vmlinux 0x97de0ddd acpi_install_gpe_block +EXPORT_SYMBOL vmlinux 0x97fc0e61 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x9812272c blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x9814c95a compat_ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x9820b644 warn_slowpath_fmt_taint +EXPORT_SYMBOL vmlinux 0x9829fc11 __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0x9845fe28 dev_uc_del +EXPORT_SYMBOL vmlinux 0x98543b51 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x987d6d58 eth_type_trans +EXPORT_SYMBOL vmlinux 0x988e5aeb fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x988ed85d set_memory_x +EXPORT_SYMBOL vmlinux 0x98919461 add_disk +EXPORT_SYMBOL vmlinux 0x989894f2 agp_find_bridge +EXPORT_SYMBOL vmlinux 0x989f73c4 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x98c74f77 __dquot_free_space +EXPORT_SYMBOL vmlinux 0x98e2c13e iget_failed +EXPORT_SYMBOL vmlinux 0x98f2d2c3 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x98fa21b0 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x98fe07bc __page_symlink +EXPORT_SYMBOL vmlinux 0x99042ae9 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x99195078 vsnprintf +EXPORT_SYMBOL vmlinux 0x9930633b sock_recvmsg +EXPORT_SYMBOL vmlinux 0x99310c40 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x99482e84 d_delete +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99530a2d blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x99637ac3 mmc_add_host +EXPORT_SYMBOL vmlinux 0x99651f96 iput +EXPORT_SYMBOL vmlinux 0x9967025b compat_mc_getsockopt +EXPORT_SYMBOL vmlinux 0x9985dcd6 dev_uc_init +EXPORT_SYMBOL vmlinux 0x9994a19b unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99b7c4b9 poll_initwait +EXPORT_SYMBOL vmlinux 0x99ba1f7a unlock_page +EXPORT_SYMBOL vmlinux 0x99c0b8f9 max8998_write_reg +EXPORT_SYMBOL vmlinux 0x99c11f23 phy_register_fixup_for_uid +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 0x99ee5e07 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x99f068d5 x86_cpu_to_node_map +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a20cdf7 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x9a4514b2 blk_start_queue +EXPORT_SYMBOL vmlinux 0x9a57a0dd would_dump +EXPORT_SYMBOL vmlinux 0x9a5e0311 alloc_pci_dev +EXPORT_SYMBOL vmlinux 0x9a5ffc64 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x9a6e43c3 security_path_link +EXPORT_SYMBOL vmlinux 0x9a722abf vga_switcheroo_init_domain_pm_optimus_hdmi_audio +EXPORT_SYMBOL vmlinux 0x9a7ca2f5 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x9a87ed3d blk_init_tags +EXPORT_SYMBOL vmlinux 0x9a885551 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x9acaeb70 generic_readlink +EXPORT_SYMBOL vmlinux 0x9af89f98 memcpy_fromiovec +EXPORT_SYMBOL vmlinux 0x9aff3a09 sock_i_ino +EXPORT_SYMBOL vmlinux 0x9b197f07 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x9b28d8b6 skb_copy_bits +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b4a035e writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x9b56ba46 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x9b6392a4 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x9b75cb81 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x9b8d7997 sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x9b9342ae grab_cache_page_nowait +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bda20d9 agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9bf00eba tty_set_operations +EXPORT_SYMBOL vmlinux 0x9bf841fb jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x9c0a4edf try_to_release_page +EXPORT_SYMBOL vmlinux 0x9c201236 security_path_symlink +EXPORT_SYMBOL vmlinux 0x9c3c2c50 pnp_disable_dev +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c4ef261 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0x9c682ec3 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x9c6f4659 nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x9c98f6a4 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cb2591e pci_enable_ltr +EXPORT_SYMBOL vmlinux 0x9cb66dd2 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x9cbbe152 vga_tryget +EXPORT_SYMBOL vmlinux 0x9cd24009 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x9cfd56c5 scsi_print_status +EXPORT_SYMBOL vmlinux 0x9d05f6c4 ktime_get_clocktai +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d1a5e3a __memcpy +EXPORT_SYMBOL vmlinux 0x9d1eae10 flush_signals +EXPORT_SYMBOL vmlinux 0x9d207020 scsi_allocate_command +EXPORT_SYMBOL vmlinux 0x9d33ef5e acpi_enable +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d3f760e skb_put +EXPORT_SYMBOL vmlinux 0x9d8d25ed ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x9d91bed8 swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0x9d931a85 padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x9da9c30c thaw_super +EXPORT_SYMBOL vmlinux 0x9dc8bab1 vfs_getattr +EXPORT_SYMBOL vmlinux 0x9dcf3d7b set_pages_array_wc +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e1e6b9f do_truncate +EXPORT_SYMBOL vmlinux 0x9e2f8c90 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e34d0e5 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x9e363b6b acpi_disable_gpe +EXPORT_SYMBOL vmlinux 0x9e42ab6d nla_append +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e64e142 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x9e64fbfe rtc_cmos_read +EXPORT_SYMBOL vmlinux 0x9e6e1080 aio_complete +EXPORT_SYMBOL vmlinux 0x9e74a930 nf_register_hooks +EXPORT_SYMBOL vmlinux 0x9e7d6bd0 __udelay +EXPORT_SYMBOL vmlinux 0x9e8bb9f3 del_gendisk +EXPORT_SYMBOL vmlinux 0x9e9f1714 __bitmap_andnot +EXPORT_SYMBOL vmlinux 0x9ea0ad49 __sg_free_table +EXPORT_SYMBOL vmlinux 0x9eb423f7 agp_copy_info +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ed2eec7 param_set_ushort +EXPORT_SYMBOL vmlinux 0x9ef541d4 account_page_redirty +EXPORT_SYMBOL vmlinux 0x9f0cfdcc bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x9f1c7827 generic_setxattr +EXPORT_SYMBOL vmlinux 0x9f20dc0e ata_print_version +EXPORT_SYMBOL vmlinux 0x9f2b273e dump_trace +EXPORT_SYMBOL vmlinux 0x9f2bdaac __bitmap_or +EXPORT_SYMBOL vmlinux 0x9f34d83e nla_reserve +EXPORT_SYMBOL vmlinux 0x9f365ac7 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x9f450cad scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f5268fb jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x9f5b37a9 bh_submit_read +EXPORT_SYMBOL vmlinux 0x9f65a937 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x9f69d994 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x9f6e19ab mem_section +EXPORT_SYMBOL vmlinux 0x9f74d70c swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x9f92adf4 kset_register +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fbae04b dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0x9fbb79ab inet_add_protocol +EXPORT_SYMBOL vmlinux 0x9fc83e74 nf_hook_slow +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0x9ffa9e55 dma_find_channel +EXPORT_SYMBOL vmlinux 0xa00aca2a dql_completed +EXPORT_SYMBOL vmlinux 0xa02fda1b ppp_input +EXPORT_SYMBOL vmlinux 0xa039039c ata_port_printk +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa05f372e seq_printf +EXPORT_SYMBOL vmlinux 0xa07a37f0 memchr +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa0834a47 gen_pool_free +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0b8c4da gen10g_config_advert +EXPORT_SYMBOL vmlinux 0xa0ceef51 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0dffb2a netdev_refcnt_read +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 0xa116a69f agp_backend_acquire +EXPORT_SYMBOL vmlinux 0xa116feb0 generic_listxattr +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa12612db bio_integrity_set_tag +EXPORT_SYMBOL vmlinux 0xa13f6c3c dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa18e86db tcp_release_cb +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1e0b579 nf_log_set +EXPORT_SYMBOL vmlinux 0xa1fff7f0 lro_receive_skb +EXPORT_SYMBOL vmlinux 0xa202a8e5 kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0xa20ce1b8 net_msg_warn +EXPORT_SYMBOL vmlinux 0xa2137790 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0xa21d0b06 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xa2443f8d blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0xa277c1e2 serio_rescan +EXPORT_SYMBOL vmlinux 0xa27a1b9f dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa28a2ace ipmi_set_gets_events +EXPORT_SYMBOL vmlinux 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL vmlinux 0xa2b778f4 fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0xa2ccc1f8 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0xa2d04917 skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0xa2ed4fed d_move +EXPORT_SYMBOL vmlinux 0xa2ef34d7 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0xa2f7bced xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0xa31224b6 agp_allocate_memory +EXPORT_SYMBOL vmlinux 0xa346d9b3 napi_gro_frags +EXPORT_SYMBOL vmlinux 0xa350a8f8 set_memory_array_uc +EXPORT_SYMBOL vmlinux 0xa35de80f ipv4_config +EXPORT_SYMBOL vmlinux 0xa36116ee pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0xa36cf205 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0xa36d6f87 mmc_cache_ctrl +EXPORT_SYMBOL vmlinux 0xa37a7c07 pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0xa390349f igrab +EXPORT_SYMBOL vmlinux 0xa3a77c69 down_read_trylock +EXPORT_SYMBOL vmlinux 0xa3ad01f9 tty_lock_pair +EXPORT_SYMBOL vmlinux 0xa3b9dca3 input_close_device +EXPORT_SYMBOL vmlinux 0xa3c46745 complete_request_key +EXPORT_SYMBOL vmlinux 0xa3cc447a ilookup +EXPORT_SYMBOL vmlinux 0xa3e86273 get_thermal_instance +EXPORT_SYMBOL vmlinux 0xa3f96685 wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0xa3fc3d50 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0xa400159f crc32_be +EXPORT_SYMBOL vmlinux 0xa423a424 pagecache_write_end +EXPORT_SYMBOL vmlinux 0xa4503bce xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0xa4511467 crc16 +EXPORT_SYMBOL vmlinux 0xa46a662f tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0xa46bfadd bdi_unregister +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa4a5004a __napi_schedule +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4be20a4 padata_do_parallel +EXPORT_SYMBOL vmlinux 0xa4be5952 stop_tty +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4e680ec input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0xa4fd49b7 seq_bitmap +EXPORT_SYMBOL vmlinux 0xa4fd9d2d elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0xa5098e4a netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0xa51df2b4 down_killable +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa553a3b3 dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0xa553af33 scsi_register_driver +EXPORT_SYMBOL vmlinux 0xa55ba758 sk_alloc +EXPORT_SYMBOL vmlinux 0xa5734758 arp_send +EXPORT_SYMBOL vmlinux 0xa57f0056 blk_recount_segments +EXPORT_SYMBOL vmlinux 0xa585ec24 mdiobus_register +EXPORT_SYMBOL vmlinux 0xa58a3166 lg_local_lock +EXPORT_SYMBOL vmlinux 0xa597c984 unregister_qdisc +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa59e2c63 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0xa5b610dd jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0xa5be87b9 netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0xa5cfb29f ftrace_raw_output_prep +EXPORT_SYMBOL vmlinux 0xa5e4f65c __next_cpu_nr +EXPORT_SYMBOL vmlinux 0xa5e81147 get_user_pages +EXPORT_SYMBOL vmlinux 0xa5f6db0c tcp_recvmsg +EXPORT_SYMBOL vmlinux 0xa629d5c1 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0xa63a2f9b param_get_ulong +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa63f79d5 sock_create +EXPORT_SYMBOL vmlinux 0xa6666189 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0xa6715115 do_settimeofday +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa68e7a0b pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0xa6932769 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0xa6bd63ca acpi_bios_error +EXPORT_SYMBOL vmlinux 0xa6dfe2b7 scsi_setup_fs_cmnd +EXPORT_SYMBOL vmlinux 0xa6f9159c from_kuid +EXPORT_SYMBOL vmlinux 0xa6fa08a2 pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0xa70fabbe release_evntsel_nmi +EXPORT_SYMBOL vmlinux 0xa72a0f5b nr_online_nodes +EXPORT_SYMBOL vmlinux 0xa731b4b7 input_allocate_device +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa7652acf bio_endio +EXPORT_SYMBOL vmlinux 0xa76f39dd km_report +EXPORT_SYMBOL vmlinux 0xa7966951 account_page_writeback +EXPORT_SYMBOL vmlinux 0xa7bbf6aa fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0xa7e616c2 backlight_force_update +EXPORT_SYMBOL vmlinux 0xa7fc64e9 input_free_device +EXPORT_SYMBOL vmlinux 0xa8015bb1 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0xa8017170 skb_tx_error +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa8314a60 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0xa8394c65 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa86ac17a __frontswap_store +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa8a1785c pci_enable_obff +EXPORT_SYMBOL vmlinux 0xa8a6f639 __check_region +EXPORT_SYMBOL vmlinux 0xa8b5ce94 generic_write_end +EXPORT_SYMBOL vmlinux 0xa8c29637 dev_get_drvdata +EXPORT_SYMBOL vmlinux 0xa8d5b9f2 vfs_writev +EXPORT_SYMBOL vmlinux 0xa8e11d8d scsi_scan_host +EXPORT_SYMBOL vmlinux 0xa8ec045c tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0xa8ee9c78 netdev_state_change +EXPORT_SYMBOL vmlinux 0xa8fb3220 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa9063bce uart_suspend_port +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa916b694 strnlen +EXPORT_SYMBOL vmlinux 0xa91b5561 acpi_video_backlight_support +EXPORT_SYMBOL vmlinux 0xa9567b40 udp_ioctl +EXPORT_SYMBOL vmlinux 0xa95d3cdb gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0xa95e7a01 scsi_add_device +EXPORT_SYMBOL vmlinux 0xa95f7c36 __vlan_find_dev_deep +EXPORT_SYMBOL vmlinux 0xa97c2ee2 elv_abort_queue +EXPORT_SYMBOL vmlinux 0xa981fa2d iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0xa984972f cdrom_media_changed +EXPORT_SYMBOL vmlinux 0xa99f66f4 inet_del_offload +EXPORT_SYMBOL vmlinux 0xa9a09e94 tcp_connect +EXPORT_SYMBOL vmlinux 0xa9a8e17f arch_phys_wc_add +EXPORT_SYMBOL vmlinux 0xa9ac3cfc km_new_mapping +EXPORT_SYMBOL vmlinux 0xa9bd2676 __vmalloc +EXPORT_SYMBOL vmlinux 0xa9d8f55e ida_simple_remove +EXPORT_SYMBOL vmlinux 0xa9d908aa blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0xa9fa4e00 security_mmap_file +EXPORT_SYMBOL vmlinux 0xaa0073b7 __net_get_random_once +EXPORT_SYMBOL vmlinux 0xaa047324 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0xaa050c4c tcp_gro_complete +EXPORT_SYMBOL vmlinux 0xaa075211 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0xaa310fb1 blk_make_request +EXPORT_SYMBOL vmlinux 0xaa329c9e clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0xaa3c3748 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0xaa671c53 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa7ce168 dquot_disable +EXPORT_SYMBOL vmlinux 0xaa85aefb agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0xaa9087c0 param_ops_string +EXPORT_SYMBOL vmlinux 0xaac5f376 cookie_check_timestamp +EXPORT_SYMBOL vmlinux 0xaac6ce48 ndo_dflt_bridge_getlink +EXPORT_SYMBOL vmlinux 0xaad2af2c amd_iommu_get_v2_domain +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaae8ab0e acpi_bus_power_manageable +EXPORT_SYMBOL vmlinux 0xaaf0b2d3 d_validate +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab03a827 noop_llseek +EXPORT_SYMBOL vmlinux 0xab110152 mmc_free_host +EXPORT_SYMBOL vmlinux 0xab27649f dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0xab2abddf dma_spin_lock +EXPORT_SYMBOL vmlinux 0xab365c1d __dev_remove_offload +EXPORT_SYMBOL vmlinux 0xab374368 phy_start_aneg +EXPORT_SYMBOL vmlinux 0xab4266c7 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0xab4270b0 pci_write_vpd +EXPORT_SYMBOL vmlinux 0xab56fb9e security_path_mkdir +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 0xab770678 rdmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab7b4c4d noop_qdisc +EXPORT_SYMBOL vmlinux 0xab9e6b15 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0xab9fe840 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0xabc6dd63 cpufreq_sysfs_create_file +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabd0c91c rtc_time_to_tm +EXPORT_SYMBOL vmlinux 0xabfbc658 ip6_xmit +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac3d20e2 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xac3dcdce tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0xac3ef2fd input_event +EXPORT_SYMBOL vmlinux 0xac526572 pipe_lock +EXPORT_SYMBOL vmlinux 0xac58ea5e acpi_unload_table_id +EXPORT_SYMBOL vmlinux 0xac68781a key_invalidate +EXPORT_SYMBOL vmlinux 0xac85a890 update_devfreq +EXPORT_SYMBOL vmlinux 0xaca1471c mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0xaca26ddf blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad01744f kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0xad03c736 sk_receive_skb +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad0d797e ps2_end_command +EXPORT_SYMBOL vmlinux 0xad0e5602 pci_alloc_dev +EXPORT_SYMBOL vmlinux 0xad10838d splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0xad13c689 acpi_os_execute +EXPORT_SYMBOL vmlinux 0xad164875 kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xad2a8bd2 x86_bios_cpu_apicid +EXPORT_SYMBOL vmlinux 0xad2da173 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0xad2ff51f pci_match_id +EXPORT_SYMBOL vmlinux 0xad3adc19 do_splice_direct +EXPORT_SYMBOL vmlinux 0xad64997c tcp_sendmsg +EXPORT_SYMBOL vmlinux 0xad65fa3c __napi_complete +EXPORT_SYMBOL vmlinux 0xad666ed2 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0xad682635 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad94377f simple_dentry_operations +EXPORT_SYMBOL vmlinux 0xadabfe16 skb_push +EXPORT_SYMBOL vmlinux 0xadf60b26 mutex_unlock +EXPORT_SYMBOL vmlinux 0xadfa990c genphy_config_aneg +EXPORT_SYMBOL vmlinux 0xae218612 mntput +EXPORT_SYMBOL vmlinux 0xae2fc44d generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0xae3267b1 udp6_csum_init +EXPORT_SYMBOL vmlinux 0xae47c2db __cleancache_get_page +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae815ab8 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0xaea39aed input_set_abs_params +EXPORT_SYMBOL vmlinux 0xaea976a8 acpi_check_resource_conflict +EXPORT_SYMBOL vmlinux 0xaecb189d ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xaecc3129 pci_disable_msix +EXPORT_SYMBOL vmlinux 0xaf05287c alloc_fcdev +EXPORT_SYMBOL vmlinux 0xaf0b55b2 compat_mc_setsockopt +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf566ed9 generic_file_buffered_write +EXPORT_SYMBOL vmlinux 0xaf611eac amd_nb_misc_ids +EXPORT_SYMBOL vmlinux 0xaf64ad0d zlib_deflate +EXPORT_SYMBOL vmlinux 0xaf6ae696 kstrndup +EXPORT_SYMBOL vmlinux 0xaf6c6e97 pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0xaf81bff7 end_page_writeback +EXPORT_SYMBOL vmlinux 0xaf8ce07a kern_unmount +EXPORT_SYMBOL vmlinux 0xaf91d89f __kernel_param_lock +EXPORT_SYMBOL vmlinux 0xafa5e618 skb_insert +EXPORT_SYMBOL vmlinux 0xafa9ac3f elv_unregister_queue +EXPORT_SYMBOL vmlinux 0xafad493b param_ops_ushort +EXPORT_SYMBOL vmlinux 0xafb8c6ff copy_user_generic_string +EXPORT_SYMBOL vmlinux 0xafd02d98 cdev_del +EXPORT_SYMBOL vmlinux 0xafd5ff2c amd_iommu_v2_supported +EXPORT_SYMBOL vmlinux 0xafe35c78 dqput +EXPORT_SYMBOL vmlinux 0xaff28259 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0xb013a12c ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0xb01b1db8 intel_gtt_insert_sg_entries +EXPORT_SYMBOL vmlinux 0xb0217827 proc_remove +EXPORT_SYMBOL vmlinux 0xb0221af8 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xb02817cd unlock_new_inode +EXPORT_SYMBOL vmlinux 0xb02bd599 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0xb0421334 __blk_end_request +EXPORT_SYMBOL vmlinux 0xb043dd1b i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0xb0445843 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0xb04e3bd4 security_path_chown +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb066ffe1 mdiobus_scan +EXPORT_SYMBOL vmlinux 0xb086a18d tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0xb088786d agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0b847ac __bitmap_full +EXPORT_SYMBOL vmlinux 0xb0d3939a netdev_emerg +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0e18fa4 __pskb_copy +EXPORT_SYMBOL vmlinux 0xb0e602eb memmove +EXPORT_SYMBOL vmlinux 0xb0f22bc1 tcp_parse_options +EXPORT_SYMBOL vmlinux 0xb0ffda2f blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xb1021968 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0xb116f62b d_set_d_op +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb1293804 md_unregister_thread +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb138d0bf dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb18ec9ec gen10g_restart_aneg +EXPORT_SYMBOL vmlinux 0xb1904ef3 prepare_binprm +EXPORT_SYMBOL vmlinux 0xb19760c3 bitmap_onto +EXPORT_SYMBOL vmlinux 0xb1a2aae7 ipmi_register_smi +EXPORT_SYMBOL vmlinux 0xb1a65fda devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0xb1b42470 idr_init +EXPORT_SYMBOL vmlinux 0xb1b53f4d bio_integrity_clone +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1c5cff3 max8998_read_reg +EXPORT_SYMBOL vmlinux 0xb1c7370b dump_emit +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1cfad22 rdmsr_on_cpu +EXPORT_SYMBOL vmlinux 0xb1db9e4e param_get_invbool +EXPORT_SYMBOL vmlinux 0xb1dcf72b __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xb1e902b0 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0xb1ed0168 security_path_rmdir +EXPORT_SYMBOL vmlinux 0xb20bc8c8 netdev_info +EXPORT_SYMBOL vmlinux 0xb20ecf88 acpi_run_osc +EXPORT_SYMBOL vmlinux 0xb219d56c wbinvd_on_cpu +EXPORT_SYMBOL vmlinux 0xb22f911d vga_switcheroo_init_domain_pm_ops +EXPORT_SYMBOL vmlinux 0xb2484102 sock_rfree +EXPORT_SYMBOL vmlinux 0xb2663224 __scm_destroy +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb2a42836 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0xb2b689ec seq_write +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2e08e7b lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0xb2e833ee xfrm_user_policy +EXPORT_SYMBOL vmlinux 0xb2f74fb6 intel_gmch_remove +EXPORT_SYMBOL vmlinux 0xb2fd5ceb __put_user_4 +EXPORT_SYMBOL vmlinux 0xb3282f9c should_remove_suid +EXPORT_SYMBOL vmlinux 0xb3284531 acpi_dbg_layer +EXPORT_SYMBOL vmlinux 0xb336bf53 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0xb352177e find_first_bit +EXPORT_SYMBOL vmlinux 0xb36c744e scsi_device_get +EXPORT_SYMBOL vmlinux 0xb36da390 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0xb3749c29 neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0xb376e6fa blkdev_get +EXPORT_SYMBOL vmlinux 0xb3816acb devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0xb3ba95eb generic_write_checks +EXPORT_SYMBOL vmlinux 0xb3d771e5 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0xb3db9283 xfrm_init_state +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb3fa9e81 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0xb4226064 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb425f735 get_super +EXPORT_SYMBOL vmlinux 0xb42b5497 md_error +EXPORT_SYMBOL vmlinux 0xb43fa638 skb_free_datagram +EXPORT_SYMBOL vmlinux 0xb4447482 md_check_recovery +EXPORT_SYMBOL vmlinux 0xb45d79a4 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb47189b5 reservation_ww_class +EXPORT_SYMBOL vmlinux 0xb478f9a4 simple_transaction_read +EXPORT_SYMBOL vmlinux 0xb4a0f598 dm_io +EXPORT_SYMBOL vmlinux 0xb4a61214 bitmap_unplug +EXPORT_SYMBOL vmlinux 0xb4b639df i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0xb4cfa8db put_disk +EXPORT_SYMBOL vmlinux 0xb4db3f17 napi_get_frags +EXPORT_SYMBOL vmlinux 0xb4f2e5c4 __getblk +EXPORT_SYMBOL vmlinux 0xb4fec6e8 nf_log_packet +EXPORT_SYMBOL vmlinux 0xb5123491 vfs_rmdir +EXPORT_SYMBOL vmlinux 0xb5157289 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0xb516607e bio_pair_release +EXPORT_SYMBOL vmlinux 0xb5288ac7 security_path_rename +EXPORT_SYMBOL vmlinux 0xb52ee8be intel_gtt_clear_range +EXPORT_SYMBOL vmlinux 0xb53993e7 tty_devnum +EXPORT_SYMBOL vmlinux 0xb54533f7 usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xb5473618 scsi_dma_map +EXPORT_SYMBOL vmlinux 0xb55ffdfd inet_stream_connect +EXPORT_SYMBOL vmlinux 0xb56b31c2 locks_free_lock +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb57f2457 sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0xb598540a skb_split +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5a6aea8 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5bd5dac twl6040_set_pll +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5dcab5b remove_wait_queue +EXPORT_SYMBOL vmlinux 0xb60890bb __skb_tx_hash +EXPORT_SYMBOL vmlinux 0xb60f6311 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0xb61b635d scsi_adjust_queue_depth +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb631f9b6 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0xb6394d4b param_set_bint +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb6822a33 radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xb690d849 neigh_parms_release +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6b46a7c param_ops_int +EXPORT_SYMBOL vmlinux 0xb6b86252 elv_rb_find +EXPORT_SYMBOL vmlinux 0xb6c5a973 scsi_show_result +EXPORT_SYMBOL vmlinux 0xb6c83f8d xfrm_register_mode +EXPORT_SYMBOL vmlinux 0xb6cbe886 acpi_get_node +EXPORT_SYMBOL vmlinux 0xb6ceca39 set_pages_nx +EXPORT_SYMBOL vmlinux 0xb704da19 prepare_creds +EXPORT_SYMBOL vmlinux 0xb73b3d8c mmc_can_erase +EXPORT_SYMBOL vmlinux 0xb7483960 __ip_dev_find +EXPORT_SYMBOL vmlinux 0xb756d59c compat_sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xb758b225 acpi_disable_event +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb7852755 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0xb7c6db70 sysctl_max_skb_frags +EXPORT_SYMBOL vmlinux 0xb7f06552 seq_path +EXPORT_SYMBOL vmlinux 0xb7f47feb inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0xb7f74868 sync_blockdev +EXPORT_SYMBOL vmlinux 0xb7fa55ac tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0xb8067541 devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0xb8067e2c dev_remove_offload +EXPORT_SYMBOL vmlinux 0xb835b3e4 radix_tree_prev_hole +EXPORT_SYMBOL vmlinux 0xb83a923c inet_register_protosw +EXPORT_SYMBOL vmlinux 0xb83d85bb nf_afinfo +EXPORT_SYMBOL vmlinux 0xb85327df pnp_device_attach +EXPORT_SYMBOL vmlinux 0xb86651a4 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0xb86912ed pm860x_reg_write +EXPORT_SYMBOL vmlinux 0xb86fdc79 arp_xmit +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb8aab333 blk_mq_free_queue +EXPORT_SYMBOL vmlinux 0xb8d73e97 param_set_uint +EXPORT_SYMBOL vmlinux 0xb8e7ce2c __put_user_8 +EXPORT_SYMBOL vmlinux 0xb907513f unpoison_memory +EXPORT_SYMBOL vmlinux 0xb9132f16 bio_unmap_user +EXPORT_SYMBOL vmlinux 0xb91a0108 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0xb9249d16 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0xb93834a7 make_kgid +EXPORT_SYMBOL vmlinux 0xb98a0185 rtc_tm_to_time +EXPORT_SYMBOL vmlinux 0xb995fbd9 cdev_alloc +EXPORT_SYMBOL vmlinux 0xb9a74b02 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0xb9b4e181 alloc_pages_exact_nid +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9fd2205 add_efi_memmap +EXPORT_SYMBOL vmlinux 0xba0af24d i2c_release_client +EXPORT_SYMBOL vmlinux 0xba17bf52 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0xba2d8594 ec_read +EXPORT_SYMBOL vmlinux 0xba3e25c2 twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba63339c _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xba6af03a sock_edemux +EXPORT_SYMBOL vmlinux 0xba6babb8 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0xba7a1c2c blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0xba7c56c0 fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0xba810bdc blkdev_fsync +EXPORT_SYMBOL vmlinux 0xbac56615 crypto_sha256_update +EXPORT_SYMBOL vmlinux 0xbafcf7fe input_grab_device +EXPORT_SYMBOL vmlinux 0xbb00bc4a sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0xbb189cad disallow_signal +EXPORT_SYMBOL vmlinux 0xbb33b0e4 dquot_commit +EXPORT_SYMBOL vmlinux 0xbb4f4766 simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0xbb52e72f misc_deregister +EXPORT_SYMBOL vmlinux 0xbb5adb56 bioset_create +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb629ce8 ip6_frag_match +EXPORT_SYMBOL vmlinux 0xbb678a31 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xbb713e6d sk_filter_release_rcu +EXPORT_SYMBOL vmlinux 0xbb7a343b compat_nf_setsockopt +EXPORT_SYMBOL vmlinux 0xbb7bdcdb request_key +EXPORT_SYMBOL vmlinux 0xbb8d7a18 disk_stack_limits +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbba8c054 dqget +EXPORT_SYMBOL vmlinux 0xbbaeb559 memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0xbbb6cb28 proc_create_data +EXPORT_SYMBOL vmlinux 0xbbc0fa75 netif_receive_skb +EXPORT_SYMBOL vmlinux 0xbbe316e5 devm_ioremap +EXPORT_SYMBOL vmlinux 0xbbf48660 read_dev_sector +EXPORT_SYMBOL vmlinux 0xbbfcaca5 bit_waitqueue +EXPORT_SYMBOL vmlinux 0xbc09a8e6 blk_put_queue +EXPORT_SYMBOL vmlinux 0xbc166c34 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xbc1baf42 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0xbc2031de acpi_processor_get_bios_limit +EXPORT_SYMBOL vmlinux 0xbc2978e9 lg_global_lock +EXPORT_SYMBOL vmlinux 0xbc2f13e8 __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xbc445e8b lookup_bdev +EXPORT_SYMBOL vmlinux 0xbc524519 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0xbc5e6a4e sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0xbc603964 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0xbc7676e3 x86_dma_fallback_dev +EXPORT_SYMBOL vmlinux 0xbc77afef pm860x_page_reg_read +EXPORT_SYMBOL vmlinux 0xbc883939 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0xbc981ff8 scsi_get_command +EXPORT_SYMBOL vmlinux 0xbcb8e48c xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcddf281 path_put +EXPORT_SYMBOL vmlinux 0xbcfa1856 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0xbcfeeaf5 scsi_prep_state_check +EXPORT_SYMBOL vmlinux 0xbd028dfa mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0xbd0c5d17 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0xbd100793 cpu_online_mask +EXPORT_SYMBOL vmlinux 0xbd24ee55 keyring_search +EXPORT_SYMBOL vmlinux 0xbd2900b2 tty_port_init +EXPORT_SYMBOL vmlinux 0xbd318c45 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0xbd38dd0c add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0xbd462b55 __kfifo_init +EXPORT_SYMBOL vmlinux 0xbd4732ff mfd_cell_enable +EXPORT_SYMBOL vmlinux 0xbd513a00 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0xbd9f73bb dquot_acquire +EXPORT_SYMBOL vmlinux 0xbda24122 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0xbda324e3 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0xbdaf5b07 acpi_os_read_port +EXPORT_SYMBOL vmlinux 0xbdb15ddf inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0xbdef8a3b vm_map_ram +EXPORT_SYMBOL vmlinux 0xbdfb6dbb __fentry__ +EXPORT_SYMBOL vmlinux 0xbe156a65 pskb_expand_head +EXPORT_SYMBOL vmlinux 0xbe18153d try_wait_for_completion +EXPORT_SYMBOL vmlinux 0xbe2c0274 add_timer +EXPORT_SYMBOL vmlinux 0xbe327f20 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0xbe484cac kill_litter_super +EXPORT_SYMBOL vmlinux 0xbe59f733 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0xbe5b330a ppp_register_channel +EXPORT_SYMBOL vmlinux 0xbe6cfe6e jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0xbe8fd334 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0xbe93c2aa blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0xbeaf92f9 pci_biosrom_size +EXPORT_SYMBOL vmlinux 0xbeb01515 blk_stop_queue +EXPORT_SYMBOL vmlinux 0xbebe8752 processors +EXPORT_SYMBOL vmlinux 0xbec30d05 x86_match_cpu +EXPORT_SYMBOL vmlinux 0xbecfbb3f neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf067156 vfs_unlink +EXPORT_SYMBOL vmlinux 0xbf07791b sync_inode_metadata +EXPORT_SYMBOL vmlinux 0xbf0c5a85 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0xbf149155 input_set_capability +EXPORT_SYMBOL vmlinux 0xbf32b24e __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xbf69f8c8 mmc_register_driver +EXPORT_SYMBOL vmlinux 0xbf6cf2c5 invalidate_bdev +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf86eda9 input_register_device +EXPORT_SYMBOL vmlinux 0xbf897243 set_trace_device +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf931b17 __generic_file_aio_write +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfa08e61 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0xbfb36878 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfd60818 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbff2abe1 module_layout +EXPORT_SYMBOL vmlinux 0xbff84e8b simple_unlink +EXPORT_SYMBOL vmlinux 0xbffa3e37 simple_readpage +EXPORT_SYMBOL vmlinux 0xbffa85d8 dev_set_group +EXPORT_SYMBOL vmlinux 0xc00f0eac agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0xc017b793 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0xc01cf848 _raw_read_lock +EXPORT_SYMBOL vmlinux 0xc02cf69b clkdev_drop +EXPORT_SYMBOL vmlinux 0xc06a314d devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc093d2c0 swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0aa4433 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0xc0b4e989 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0xc0bd07ea framebuffer_release +EXPORT_SYMBOL vmlinux 0xc0dd112c pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0xc0e93285 blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0xc0f8360b blk_start_request +EXPORT_SYMBOL vmlinux 0xc14b8b2c pci_select_bars +EXPORT_SYMBOL vmlinux 0xc15136da _dev_info +EXPORT_SYMBOL vmlinux 0xc15a44c6 memzero_explicit +EXPORT_SYMBOL vmlinux 0xc1abe2dc input_unregister_handle +EXPORT_SYMBOL vmlinux 0xc1b4bfc0 swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0xc1bfbc31 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0xc1c2dd09 __hw_addr_flush +EXPORT_SYMBOL vmlinux 0xc1f668d5 acpi_get_hp_hw_control_from_firmware +EXPORT_SYMBOL vmlinux 0xc1fd4b9c nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0xc20c57fe udp_lib_rehash +EXPORT_SYMBOL vmlinux 0xc21446f3 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0xc21c80b3 pci_pme_capable +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc247c88f netdev_notify_peers +EXPORT_SYMBOL vmlinux 0xc24ce021 agp_unbind_memory +EXPORT_SYMBOL vmlinux 0xc24fbfe9 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0xc256e762 __bitmap_equal +EXPORT_SYMBOL vmlinux 0xc2700e19 splice_from_pipe_feed +EXPORT_SYMBOL vmlinux 0xc28c6c8c ht_create_irq +EXPORT_SYMBOL vmlinux 0xc29bf967 strspn +EXPORT_SYMBOL vmlinux 0xc2b6e4d6 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc30b05ad dev_deactivate +EXPORT_SYMBOL vmlinux 0xc310b981 strnstr +EXPORT_SYMBOL vmlinux 0xc35a6a00 seq_puts +EXPORT_SYMBOL vmlinux 0xc37724bc vfs_rename +EXPORT_SYMBOL vmlinux 0xc38ecec7 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0xc39c5bea dma_pool_create +EXPORT_SYMBOL vmlinux 0xc39f6a7d drop_super +EXPORT_SYMBOL vmlinux 0xc3a061f7 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0xc3aaf0a9 __put_user_1 +EXPORT_SYMBOL vmlinux 0xc3c17d0c __scsi_put_command +EXPORT_SYMBOL vmlinux 0xc3d0f300 backlight_device_register +EXPORT_SYMBOL vmlinux 0xc3e06579 skb_queue_tail +EXPORT_SYMBOL vmlinux 0xc3f44891 blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0xc405ef70 fs_bio_set +EXPORT_SYMBOL vmlinux 0xc4619080 inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0xc4704eb1 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0xc47e32ca blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0xc48307db lz4_decompress +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc4cd5ade blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xc4d1be20 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0xc4d2314c vm_event_states +EXPORT_SYMBOL vmlinux 0xc4d4ce4f genphy_update_link +EXPORT_SYMBOL vmlinux 0xc4f832e3 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0xc50ea482 icmpv6_send +EXPORT_SYMBOL vmlinux 0xc51e8212 init_buffer +EXPORT_SYMBOL vmlinux 0xc523386d inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xc52829f3 blk_mq_run_queues +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc558530d profile_pc +EXPORT_SYMBOL vmlinux 0xc56560b0 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0xc56aff4a fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0xc572bf9d cfb_copyarea +EXPORT_SYMBOL vmlinux 0xc572d578 padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0xc589e044 param_set_long +EXPORT_SYMBOL vmlinux 0xc5b4d338 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0xc5c51c09 fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc60379a7 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0xc606c941 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xc613a190 md_flush_request +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc666a132 crc_t10dif +EXPORT_SYMBOL vmlinux 0xc689a83e loop_register_transfer +EXPORT_SYMBOL vmlinux 0xc68c9031 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0xc68e7eab gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0xc6a66180 rwsem_wake +EXPORT_SYMBOL vmlinux 0xc6b368d3 acpi_gpe_count +EXPORT_SYMBOL vmlinux 0xc6b6b8eb mntget +EXPORT_SYMBOL vmlinux 0xc6b6c6b1 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0xc6cb465a __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6d0937b __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0xc6d62794 install_exec_creds +EXPORT_SYMBOL vmlinux 0xc6ecb8b1 register_gifconf +EXPORT_SYMBOL vmlinux 0xc7141a43 skb_unlink +EXPORT_SYMBOL vmlinux 0xc715d9e0 boot_cpu_data +EXPORT_SYMBOL vmlinux 0xc71fa0dd poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc735e6eb __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0xc7375d79 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0xc7401a6c ipmi_smi_watcher_unregister +EXPORT_SYMBOL vmlinux 0xc74ee076 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0xc754559a pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0xc770d15c idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0xc7737a4e xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc79f6b97 buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7a867a6 sock_release +EXPORT_SYMBOL vmlinux 0xc7ab36e6 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0xc7b37d56 __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xc7e20974 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0xc7f3c285 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0xc80b539b phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0xc83272fd generic_file_aio_read +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc8403201 amd_iommu_enable_device_erratum +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc8a0e899 secpath_dup +EXPORT_SYMBOL vmlinux 0xc8a8b114 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0xc8b0d160 write_one_page +EXPORT_SYMBOL vmlinux 0xc8b53c82 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8c74465 pnp_get_resource +EXPORT_SYMBOL vmlinux 0xc8c82f20 alloc_xenballooned_pages +EXPORT_SYMBOL vmlinux 0xc8f3c2e4 tcp_close +EXPORT_SYMBOL vmlinux 0xc8fd9305 seq_open +EXPORT_SYMBOL vmlinux 0xc90741c8 phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0xc91a6183 ps2_drain +EXPORT_SYMBOL vmlinux 0xc92cbb5e dm_register_target +EXPORT_SYMBOL vmlinux 0xc9513715 lro_flush_all +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc970c33a inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xc978479a xz_dec_run +EXPORT_SYMBOL vmlinux 0xc996d097 del_timer +EXPORT_SYMBOL vmlinux 0xc9a7e3e7 blk_stack_limits +EXPORT_SYMBOL vmlinux 0xc9c39193 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0xc9e4e7e6 tcf_hash_search +EXPORT_SYMBOL vmlinux 0xca4ca404 gen_pool_create +EXPORT_SYMBOL vmlinux 0xca561e4c inet_csk_accept +EXPORT_SYMBOL vmlinux 0xca5dbc50 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xca8acc78 acpi_dbg_level +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xca9be855 set_pages_array_wb +EXPORT_SYMBOL vmlinux 0xcab95589 dst_alloc +EXPORT_SYMBOL vmlinux 0xcadd269d devfreq_interval_update +EXPORT_SYMBOL vmlinux 0xcaef1b77 idr_remove +EXPORT_SYMBOL vmlinux 0xcafc053c ppp_dev_name +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb0a8df4 netpoll_rx_disable +EXPORT_SYMBOL vmlinux 0xcb0c5d50 param_get_uint +EXPORT_SYMBOL vmlinux 0xcb21ed87 dev_err +EXPORT_SYMBOL vmlinux 0xcb44da7f is_bad_inode +EXPORT_SYMBOL vmlinux 0xcb52b679 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0xcb733bf2 acpi_bus_set_power +EXPORT_SYMBOL vmlinux 0xcba14ce5 __idr_remove_all +EXPORT_SYMBOL vmlinux 0xcba2bd20 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0xcbae6c7a acpi_lid_notifier_unregister +EXPORT_SYMBOL vmlinux 0xcbb67680 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc60462 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbccd081 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0xcbcfdef3 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0xcbd4927b mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0xcbd689ba bio_copy_kern +EXPORT_SYMBOL vmlinux 0xcbf06066 pci_target_state +EXPORT_SYMBOL vmlinux 0xcc0d2cce unregister_filesystem +EXPORT_SYMBOL vmlinux 0xcc173cab acpi_walk_resource_buffer +EXPORT_SYMBOL vmlinux 0xcc22ecfb ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc37f55c blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc7fa952 local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0xcca1a0c1 mmc_get_card +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccf5ea90 udp_poll +EXPORT_SYMBOL vmlinux 0xcd20667a kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd3bc598 __wait_on_bit +EXPORT_SYMBOL vmlinux 0xcd5410d1 pci_dev_put +EXPORT_SYMBOL vmlinux 0xcd5df59e user_path_create +EXPORT_SYMBOL vmlinux 0xcd6a307f input_get_keycode +EXPORT_SYMBOL vmlinux 0xcd9b9fc8 skb_queue_head +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdcfcc10 d_find_alias +EXPORT_SYMBOL vmlinux 0xcde172ac radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0xcde33345 netif_carrier_off +EXPORT_SYMBOL vmlinux 0xcde5f2a0 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0xce28180d scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce4904a4 acpi_leave_sleep_state +EXPORT_SYMBOL vmlinux 0xce4e47b6 __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce744e9b max8925_reg_read +EXPORT_SYMBOL vmlinux 0xce8bea13 tty_unregister_device +EXPORT_SYMBOL vmlinux 0xce922cec genphy_suspend +EXPORT_SYMBOL vmlinux 0xcea94f85 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceb5abb3 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0xcef13af5 blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf14eb19 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xcf21d241 __wake_up +EXPORT_SYMBOL vmlinux 0xcf3f92bc inet6_protos +EXPORT_SYMBOL vmlinux 0xcf52d1dc __pci_enable_wake +EXPORT_SYMBOL vmlinux 0xcf5e522f tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0xcf69a8b0 tty_port_hangup +EXPORT_SYMBOL vmlinux 0xcf6cfe1f msrs_free +EXPORT_SYMBOL vmlinux 0xcf6e5dcc dst_discard +EXPORT_SYMBOL vmlinux 0xcf6eae8f tcp_poll +EXPORT_SYMBOL vmlinux 0xcfd51e2b eth_header +EXPORT_SYMBOL vmlinux 0xcfe89c8f generic_block_bmap +EXPORT_SYMBOL vmlinux 0xcffca5ea dentry_unhash +EXPORT_SYMBOL vmlinux 0xcffeda70 kill_pgrp +EXPORT_SYMBOL vmlinux 0xd0181f4f __bitmap_xor +EXPORT_SYMBOL vmlinux 0xd0298b8b proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0xd0446c3a file_open_root +EXPORT_SYMBOL vmlinux 0xd046929f skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0xd067fc5c proc_dointvec +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd082f992 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0xd08c5a9b phy_attach_direct +EXPORT_SYMBOL vmlinux 0xd0a56d4d xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0b4506d __inode_permission +EXPORT_SYMBOL vmlinux 0xd0ce126c neigh_changeaddr +EXPORT_SYMBOL vmlinux 0xd0d0aa72 acpi_processor_preregister_performance +EXPORT_SYMBOL vmlinux 0xd0d0cc6f wireless_send_event +EXPORT_SYMBOL vmlinux 0xd0d42c42 mod_timer_pending +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0f625d5 padata_start +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd0fef3b2 agp_free_key +EXPORT_SYMBOL vmlinux 0xd11c0dc1 __kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xd1319f7a __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0xd131d948 unregister_md_personality +EXPORT_SYMBOL vmlinux 0xd137fa29 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0xd1495efa scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0xd15bcb56 register_framebuffer +EXPORT_SYMBOL vmlinux 0xd1652a93 acpi_info +EXPORT_SYMBOL vmlinux 0xd16f2116 netdev_notice +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd18b6eb2 acpi_unmap_lsapic +EXPORT_SYMBOL vmlinux 0xd1a876bf dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0xd1bacd75 unlock_rename +EXPORT_SYMBOL vmlinux 0xd1cbdd7b sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0xd1da966c sk_release_kernel +EXPORT_SYMBOL vmlinux 0xd1f6c5f3 smp_num_siblings +EXPORT_SYMBOL vmlinux 0xd21bae19 tcp_check_req +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd221e359 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0xd2239ba9 devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0xd227892e sleep_on +EXPORT_SYMBOL vmlinux 0xd23ebdc8 follow_down +EXPORT_SYMBOL vmlinux 0xd24e1ca3 wait_iff_congested +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 0xd261733e uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd2892591 update_time +EXPORT_SYMBOL vmlinux 0xd28a146b nf_unregister_hook +EXPORT_SYMBOL vmlinux 0xd29041a6 get_gendisk +EXPORT_SYMBOL vmlinux 0xd2906902 devfreq_resume_device +EXPORT_SYMBOL vmlinux 0xd2ae1441 netlink_net_capable +EXPORT_SYMBOL vmlinux 0xd2b09ce5 __kmalloc +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2f1b260 interruptible_sleep_on +EXPORT_SYMBOL vmlinux 0xd308f544 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0xd35e249a _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0xd36257ba memcpy_toiovecend +EXPORT_SYMBOL vmlinux 0xd3719d59 paravirt_ticketlocks_enabled +EXPORT_SYMBOL vmlinux 0xd377de5e tcp_rcv_established +EXPORT_SYMBOL vmlinux 0xd3a28366 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0xd3dbda7d simple_rmdir +EXPORT_SYMBOL vmlinux 0xd3dcab0b flex_array_alloc +EXPORT_SYMBOL vmlinux 0xd3ddd0ca tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0xd3f585db follow_down_one +EXPORT_SYMBOL vmlinux 0xd4085aa5 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0xd41ffe89 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0xd42ddf8f gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0xd448502d rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0xd4835ef8 dmi_check_system +EXPORT_SYMBOL vmlinux 0xd499040e padata_alloc +EXPORT_SYMBOL vmlinux 0xd49d0207 skb_store_bits +EXPORT_SYMBOL vmlinux 0xd49ef221 tc_classify_compat +EXPORT_SYMBOL vmlinux 0xd4b08e54 wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xd4cb2d6d mfd_cell_disable +EXPORT_SYMBOL vmlinux 0xd4d54b10 pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0xd4df9c72 pcim_iomap_table +EXPORT_SYMBOL vmlinux 0xd4edeb04 cpu_core_map +EXPORT_SYMBOL vmlinux 0xd4f95fe1 sk_filter +EXPORT_SYMBOL vmlinux 0xd4fe1024 tty_write_room +EXPORT_SYMBOL vmlinux 0xd50dc38b inet6_release +EXPORT_SYMBOL vmlinux 0xd50fef48 acpi_detach_data +EXPORT_SYMBOL vmlinux 0xd52bf1ce _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xd5723668 sk_run_filter +EXPORT_SYMBOL vmlinux 0xd578cefb tty_hung_up_p +EXPORT_SYMBOL vmlinux 0xd5876483 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0xd5ac687e sk_stream_write_space +EXPORT_SYMBOL vmlinux 0xd5f2172f del_timer_sync +EXPORT_SYMBOL vmlinux 0xd611bca3 completion_done +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd628470b generic_file_aio_write +EXPORT_SYMBOL vmlinux 0xd62ce0a5 kobject_del +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd64a9dba agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0xd6546bb4 locks_copy_lock +EXPORT_SYMBOL vmlinux 0xd654907a abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0xd66d32aa __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd6aec988 clone_cred +EXPORT_SYMBOL vmlinux 0xd6b33026 cpu_khz +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6f723ce phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0xd70aa73d sock_no_getname +EXPORT_SYMBOL vmlinux 0xd717e97d uart_register_driver +EXPORT_SYMBOL vmlinux 0xd7230a95 __put_cred +EXPORT_SYMBOL vmlinux 0xd735292d uart_add_one_port +EXPORT_SYMBOL vmlinux 0xd73a8fd8 agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0xd74bc823 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0xd7549a3f icmp_send +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd7639b0a generic_error_remove_page +EXPORT_SYMBOL vmlinux 0xd77a5aa5 __bitmap_and +EXPORT_SYMBOL vmlinux 0xd77b8edf agp_bind_memory +EXPORT_SYMBOL vmlinux 0xd7820d2c blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xd79b5a02 allow_signal +EXPORT_SYMBOL vmlinux 0xd7a9d4b7 scsi_print_sense +EXPORT_SYMBOL vmlinux 0xd7c35d48 pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0xd7c74dcc tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0xd7cbddda memcpy_toiovec +EXPORT_SYMBOL vmlinux 0xd7dd777b reserve_perfctr_nmi +EXPORT_SYMBOL vmlinux 0xd7df4260 sock_kmalloc +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd8208630 mutex_trylock +EXPORT_SYMBOL vmlinux 0xd82c3e7a mmc_gpio_free_ro +EXPORT_SYMBOL vmlinux 0xd8386962 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0xd84b9ad5 block_write_end +EXPORT_SYMBOL vmlinux 0xd8795f22 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a8091d neigh_table_clear +EXPORT_SYMBOL vmlinux 0xd8b0c2c8 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0xd8b39b6b generic_file_fsync +EXPORT_SYMBOL vmlinux 0xd8c72cf0 ifla_policy +EXPORT_SYMBOL vmlinux 0xd8ce285e set_groups +EXPORT_SYMBOL vmlinux 0xd8d728ae xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8f0c30b fib_default_rule_add +EXPORT_SYMBOL vmlinux 0xd8f61bb1 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0xd9091363 acpi_install_notify_handler +EXPORT_SYMBOL vmlinux 0xd919b01a replace_mount_options +EXPORT_SYMBOL vmlinux 0xd92afabe bitmap_clear +EXPORT_SYMBOL vmlinux 0xd92e16ba csum_partial_copy_fromiovecend +EXPORT_SYMBOL vmlinux 0xd92f2a85 bd_set_size +EXPORT_SYMBOL vmlinux 0xd94322e7 acpi_evaluate_reference +EXPORT_SYMBOL vmlinux 0xd94498c8 scsi_finish_command +EXPORT_SYMBOL vmlinux 0xd956aeb9 pv_mmu_ops +EXPORT_SYMBOL vmlinux 0xd957f0bf seq_lseek +EXPORT_SYMBOL vmlinux 0xd969b2c7 amd_e400_c1e_detected +EXPORT_SYMBOL vmlinux 0xd982ac21 dev_queue_xmit +EXPORT_SYMBOL vmlinux 0xd984b143 sg_miter_next +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd9a0f039 vfs_fsync +EXPORT_SYMBOL vmlinux 0xd9a92a8b sk_mc_loop +EXPORT_SYMBOL vmlinux 0xd9a9bb30 getname +EXPORT_SYMBOL vmlinux 0xd9bb2858 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0xd9bc0f49 __neigh_create +EXPORT_SYMBOL vmlinux 0xd9fb2c66 dump_align +EXPORT_SYMBOL vmlinux 0xda047dbf __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xda200f56 phy_find_first +EXPORT_SYMBOL vmlinux 0xda2478d0 param_ops_short +EXPORT_SYMBOL vmlinux 0xda2a6468 devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda3e43d1 _raw_spin_unlock +EXPORT_SYMBOL vmlinux 0xda529cba bmap +EXPORT_SYMBOL vmlinux 0xda6ed1cf alloc_fddidev +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda8b48da lock_rename +EXPORT_SYMBOL vmlinux 0xda944d7d dm_get_device +EXPORT_SYMBOL vmlinux 0xda95e1c2 setattr_copy +EXPORT_SYMBOL vmlinux 0xda9bdb56 eth_header_parse +EXPORT_SYMBOL vmlinux 0xda9f5f3d seq_open_private +EXPORT_SYMBOL vmlinux 0xdac70336 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0xdacda2a3 neigh_compat_output +EXPORT_SYMBOL vmlinux 0xdad464d5 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xdaea6e0d mfd_clone_cell +EXPORT_SYMBOL vmlinux 0xdafb3777 __page_cache_alloc +EXPORT_SYMBOL vmlinux 0xdb0a9667 mmc_can_reset +EXPORT_SYMBOL vmlinux 0xdb0f442a set_bh_page +EXPORT_SYMBOL vmlinux 0xdb1054c4 rtnl_unicast +EXPORT_SYMBOL vmlinux 0xdb223328 pneigh_lookup +EXPORT_SYMBOL vmlinux 0xdb26a4fa pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0xdb2fafa6 amd_iommu_complete_ppr +EXPORT_SYMBOL vmlinux 0xdb3584bb skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0xdb4d540e acpi_bus_get_status +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb6f0b76 uart_resume_port +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdba97dec names_cachep +EXPORT_SYMBOL vmlinux 0xdbb0322b remove_proc_subtree +EXPORT_SYMBOL vmlinux 0xdbcd416e sysctl_ip_nonlocal_bind +EXPORT_SYMBOL vmlinux 0xdbdd0564 locks_remove_posix +EXPORT_SYMBOL vmlinux 0xdc02ef70 textsearch_destroy +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc1c62e3 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0xdc2bb144 lock_fb_info +EXPORT_SYMBOL vmlinux 0xdc327e2f udp_proc_unregister +EXPORT_SYMBOL vmlinux 0xdc3c41a8 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc4ee6de inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0xdc57f532 acpi_install_gpe_handler +EXPORT_SYMBOL vmlinux 0xdc639f87 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0xdc6b4d24 inet_frags_fini +EXPORT_SYMBOL vmlinux 0xdc6f1f28 tty_unlock_pair +EXPORT_SYMBOL vmlinux 0xdc841d85 d_obtain_alias +EXPORT_SYMBOL vmlinux 0xdc8b3cfe rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0xdc8d1dde _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0xdc9242a8 remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0xdcaee5f1 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0xdcb36a4b __skb_gso_segment +EXPORT_SYMBOL vmlinux 0xdcb3d40d ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0xdcbc110d netdev_lower_dev_get_private_rcu +EXPORT_SYMBOL vmlinux 0xdd11e699 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0xdd2dff4a handle_edge_irq +EXPORT_SYMBOL vmlinux 0xdd2fc2ed console_stop +EXPORT_SYMBOL vmlinux 0xdd31939a dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0xdd354030 abort_creds +EXPORT_SYMBOL vmlinux 0xddaed99e unregister_console +EXPORT_SYMBOL vmlinux 0xdde83545 intel_gtt_get +EXPORT_SYMBOL vmlinux 0xddeb9aa7 bio_copy_user +EXPORT_SYMBOL vmlinux 0xddf37ac6 swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0xde0ed393 pci_clear_master +EXPORT_SYMBOL vmlinux 0xde10eb10 param_set_invbool +EXPORT_SYMBOL vmlinux 0xde16dc16 tboot +EXPORT_SYMBOL vmlinux 0xde4dbb00 default_file_splice_read +EXPORT_SYMBOL vmlinux 0xde5e75f1 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0xde6151db tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde98c647 kobject_put +EXPORT_SYMBOL vmlinux 0xde9a01b6 address_space_init_once +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xdeb075ea inode_init_always +EXPORT_SYMBOL vmlinux 0xdec55302 tty_unthrottle +EXPORT_SYMBOL vmlinux 0xded8a38a scsi_host_put +EXPORT_SYMBOL vmlinux 0xdee9c625 simple_lookup +EXPORT_SYMBOL vmlinux 0xdf0da3cc acpi_get_devices +EXPORT_SYMBOL vmlinux 0xdf0ee577 input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0xdf14656b simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf3a269d blk_mq_alloc_single_hw_queue +EXPORT_SYMBOL vmlinux 0xdf3deb56 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xdf455e07 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0xdf48a0eb flex_array_put +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf78b393 dm_kobject_release +EXPORT_SYMBOL vmlinux 0xdf78c03c eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0xdf8c695a __ndelay +EXPORT_SYMBOL vmlinux 0xdf926d0d pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdfa6a11f netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0xdfbc5592 uart_update_timeout +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfe477c3 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0xdfede79b scsi_prep_fn +EXPORT_SYMBOL vmlinux 0xdff8aa92 pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0xe016ebeb make_kuid +EXPORT_SYMBOL vmlinux 0xe01921cb pci_remove_bus +EXPORT_SYMBOL vmlinux 0xe02958ff sk_capable +EXPORT_SYMBOL vmlinux 0xe0451aa9 __pagevec_release +EXPORT_SYMBOL vmlinux 0xe046466c cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe0633719 sock_no_listen +EXPORT_SYMBOL vmlinux 0xe06e4199 cpu_all_bits +EXPORT_SYMBOL vmlinux 0xe06e747b scsi_device_set_state +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe0ac8bd2 acpi_bus_generate_netlink_event +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0b59a28 clear_nlink +EXPORT_SYMBOL vmlinux 0xe0c3ee10 input_unregister_handler +EXPORT_SYMBOL vmlinux 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe137b354 tty_throttle +EXPORT_SYMBOL vmlinux 0xe13cd8a7 dmi_name_in_vendors +EXPORT_SYMBOL vmlinux 0xe140fa98 agp_generic_enable +EXPORT_SYMBOL vmlinux 0xe1439b9f sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0xe15f42bb _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0xe16b4a80 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe18d50fa iterate_mounts +EXPORT_SYMBOL vmlinux 0xe19e2f01 pm860x_page_set_bits +EXPORT_SYMBOL vmlinux 0xe1ab44da tcf_register_action +EXPORT_SYMBOL vmlinux 0xe1b9b8ff iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0xe1bde8a0 nf_log_unset +EXPORT_SYMBOL vmlinux 0xe1e46864 dev_open +EXPORT_SYMBOL vmlinux 0xe1e591f5 elevator_init +EXPORT_SYMBOL vmlinux 0xe1f19667 pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0xe1f7dee1 tcp_disconnect +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe217b332 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0xe225de50 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe24fb4ce elevator_alloc +EXPORT_SYMBOL vmlinux 0xe250937f inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xe2596b1c may_umount_tree +EXPORT_SYMBOL vmlinux 0xe25fbd7a file_remove_suid +EXPORT_SYMBOL vmlinux 0xe28cbb07 tty_hangup +EXPORT_SYMBOL vmlinux 0xe29b04e9 acpi_set_firmware_waking_vector64 +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2b0f137 pci_get_slot +EXPORT_SYMBOL vmlinux 0xe2c67b00 release_firmware +EXPORT_SYMBOL vmlinux 0xe2cfb038 __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xe2d52348 scsi_ioctl +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2eb7345 neigh_seq_next +EXPORT_SYMBOL vmlinux 0xe2f6fc04 pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0xe319eb24 acpi_pci_osc_control_set +EXPORT_SYMBOL vmlinux 0xe339fa85 acpi_bus_register_driver +EXPORT_SYMBOL vmlinux 0xe33b1656 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0xe375a31e dev_get_by_flags_rcu +EXPORT_SYMBOL vmlinux 0xe39854d0 first_ec +EXPORT_SYMBOL vmlinux 0xe3a53f4c sort +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3d835ab blk_execute_rq +EXPORT_SYMBOL vmlinux 0xe3e12008 __first_cpu +EXPORT_SYMBOL vmlinux 0xe3e5b377 splice_from_pipe_next +EXPORT_SYMBOL vmlinux 0xe40ba3b4 swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe4ef6fdb qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL vmlinux 0xe5122890 flow_cache_genid +EXPORT_SYMBOL vmlinux 0xe516174c bio_split +EXPORT_SYMBOL vmlinux 0xe5208918 acpi_gbl_FADT +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe527c779 pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0xe530d757 acpi_clear_gpe +EXPORT_SYMBOL vmlinux 0xe568dcdf wake_up_process +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe5bec95c i8253_lock +EXPORT_SYMBOL vmlinux 0xe5bff067 dma_common_mmap +EXPORT_SYMBOL vmlinux 0xe5c753bd neigh_connected_output +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe5fb65d9 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0xe62d2476 dev_addr_flush +EXPORT_SYMBOL vmlinux 0xe64cbe3f sock_init_data +EXPORT_SYMBOL vmlinux 0xe64d98fe rdmsr_safe_regs +EXPORT_SYMBOL vmlinux 0xe677b5b8 da903x_query_status +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69a9df4 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0xe6a67537 blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0xe6a8cdd3 mdiobus_write +EXPORT_SYMBOL vmlinux 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL vmlinux 0xe6b19b54 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0xe6c02368 __sb_end_write +EXPORT_SYMBOL vmlinux 0xe6c038ff security_d_instantiate +EXPORT_SYMBOL vmlinux 0xe6cf51cb ilookup5_nowait +EXPORT_SYMBOL vmlinux 0xe6d4c535 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0xe6e3b875 down_write +EXPORT_SYMBOL vmlinux 0xe6ee19ec pcim_iomap +EXPORT_SYMBOL vmlinux 0xe6fb675c node_to_cpumask_map +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe716baed acpi_unregister_ioapic +EXPORT_SYMBOL vmlinux 0xe71bfd26 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0xe7308157 __sock_create +EXPORT_SYMBOL vmlinux 0xe74d034e generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0xe7722171 flex_array_free +EXPORT_SYMBOL vmlinux 0xe77fa7a7 audit_log +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7ae2802 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0xe7d1e9be cpumask_set_cpu_local_first +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7dcb5ad kfree_skb_partial +EXPORT_SYMBOL vmlinux 0xe7f6ea8d inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0xe8071561 md_write_start +EXPORT_SYMBOL vmlinux 0xe85aa935 freeze_super +EXPORT_SYMBOL vmlinux 0xe866a069 phy_device_register +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe87f29a7 kernel_getpeername +EXPORT_SYMBOL vmlinux 0xe881b597 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0xe8825cd4 padata_free +EXPORT_SYMBOL vmlinux 0xe883863e bdi_init +EXPORT_SYMBOL vmlinux 0xe89e93f6 bdev_read_only +EXPORT_SYMBOL vmlinux 0xe8b63ace radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8cc9491 agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0xe8cda511 sk_stop_timer +EXPORT_SYMBOL vmlinux 0xe8d32951 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0xe8d47ec0 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0xe8dbafef __next_cpu +EXPORT_SYMBOL vmlinux 0xe8e4a0b1 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0xe8e556bd unregister_exec_domain +EXPORT_SYMBOL vmlinux 0xe8ec0b54 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xe8f00ad1 seq_escape +EXPORT_SYMBOL vmlinux 0xe9090568 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe932a90b x86_hyper +EXPORT_SYMBOL vmlinux 0xe93bce2d eth_change_mtu +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe997667b wrmsr_on_cpu +EXPORT_SYMBOL vmlinux 0xe9dff136 mempool_alloc +EXPORT_SYMBOL vmlinux 0xe9ec7506 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xe9fbd4a9 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea10212a int_to_scsilun +EXPORT_SYMBOL vmlinux 0xea10655a __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xea16dd4c tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xea297cc8 input_inject_event +EXPORT_SYMBOL vmlinux 0xea2a9e7b set_anon_super +EXPORT_SYMBOL vmlinux 0xea64f105 filemap_flush +EXPORT_SYMBOL vmlinux 0xea7b8a44 acpi_install_interface +EXPORT_SYMBOL vmlinux 0xea8355a2 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0xea90bdd3 acpi_attach_data +EXPORT_SYMBOL vmlinux 0xea9b4206 tty_port_close_start +EXPORT_SYMBOL vmlinux 0xeaa9ccac netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0xeac73847 irq_regs +EXPORT_SYMBOL vmlinux 0xeae39365 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0xeae3dfd6 __const_udelay +EXPORT_SYMBOL vmlinux 0xeae72f81 fb_validate_mode +EXPORT_SYMBOL vmlinux 0xeaeb694d __wait_on_buffer +EXPORT_SYMBOL vmlinux 0xeaf74b2f tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0xeb128928 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb44339a free_pages_exact +EXPORT_SYMBOL vmlinux 0xeb4bd9d2 con_copy_unimap +EXPORT_SYMBOL vmlinux 0xeb711191 acpi_device_hid +EXPORT_SYMBOL vmlinux 0xeb77139c dev_mc_del_global +EXPORT_SYMBOL vmlinux 0xebbbaeff seq_release +EXPORT_SYMBOL vmlinux 0xebc37ba0 inode_init_owner +EXPORT_SYMBOL vmlinux 0xebdbe48c radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xebfee9a8 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0xec100876 netdev_change_features +EXPORT_SYMBOL vmlinux 0xec2736d9 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0xec312dfc pci_enable_msix +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec730387 _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0xec782f3a pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0xec7cfa33 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0xec83b465 dev_driver_string +EXPORT_SYMBOL vmlinux 0xec8fe71c audit_log_start +EXPORT_SYMBOL vmlinux 0xecb72439 rt6_lookup +EXPORT_SYMBOL vmlinux 0xecbc7960 blk_fetch_request +EXPORT_SYMBOL vmlinux 0xecbceb95 empty_aops +EXPORT_SYMBOL vmlinux 0xecc3c480 elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0xeccd3e0c acpi_handle_printk +EXPORT_SYMBOL vmlinux 0xecd194c6 __nlmsg_put +EXPORT_SYMBOL vmlinux 0xece7097b adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xece994d1 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0xecf1f857 blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0xed0342a5 led_set_brightness +EXPORT_SYMBOL vmlinux 0xed17e7f9 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0xed1d0a37 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xed1fee9a inet_frag_kill +EXPORT_SYMBOL vmlinux 0xed349219 pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed7d9935 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xedb1fa29 pci_set_ltr +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xede08055 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0xedecb58f I_BDEV +EXPORT_SYMBOL vmlinux 0xee0a055c __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xee0a61d7 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee44b8ce register_key_type +EXPORT_SYMBOL vmlinux 0xee46885d add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0xee7eb9e1 pnp_platform_devices +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xee9d59d0 i2c_master_recv +EXPORT_SYMBOL vmlinux 0xeea38615 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeb5bd3b __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0xeee93ec4 pci_map_biosrom +EXPORT_SYMBOL vmlinux 0xeeec26a7 queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xeef80c7b inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0xeefcfd27 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0xef026616 serio_close +EXPORT_SYMBOL vmlinux 0xef0e09fd netpoll_parse_options +EXPORT_SYMBOL vmlinux 0xef534fd1 mmc_start_req +EXPORT_SYMBOL vmlinux 0xef547cc3 swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0xef5c0c2d blkdev_put +EXPORT_SYMBOL vmlinux 0xef63df91 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0xef684b06 mount_nodev +EXPORT_SYMBOL vmlinux 0xef766853 __neigh_event_send +EXPORT_SYMBOL vmlinux 0xef78f9cc padata_do_serial +EXPORT_SYMBOL vmlinux 0xef7fc109 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0xef8e0c0e security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0xef990a37 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0xef9aedfc boot_option_idle_override +EXPORT_SYMBOL vmlinux 0xefb6b186 interruptible_sleep_on_timeout +EXPORT_SYMBOL vmlinux 0xefba93e1 mempool_destroy +EXPORT_SYMBOL vmlinux 0xefbfe549 nf_setsockopt +EXPORT_SYMBOL vmlinux 0xefc4c1ff dquot_operations +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefe099c3 acpi_get_event_status +EXPORT_SYMBOL vmlinux 0xefe0f6fd poll_freewait +EXPORT_SYMBOL vmlinux 0xefee5d53 consume_skb +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf016813d check_disk_size_change +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf0388d26 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0xf04502b8 dev_activate +EXPORT_SYMBOL vmlinux 0xf0499790 submit_bio +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf0619801 timekeeping_clocktai +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf067257c register_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0xf087137d __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0xf08ef224 vfs_readlink +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0b793ac follow_pfn +EXPORT_SYMBOL vmlinux 0xf0c58688 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0f1246c kvasprintf +EXPORT_SYMBOL vmlinux 0xf0fa1316 amd_iommu_domain_direct_map +EXPORT_SYMBOL vmlinux 0xf0fdf6cb __stack_chk_fail +EXPORT_SYMBOL vmlinux 0xf100416a remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xf10dc254 notify_change +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf11543ff find_first_zero_bit +EXPORT_SYMBOL vmlinux 0xf116d4b5 copy_in_user +EXPORT_SYMBOL vmlinux 0xf13120b8 dm_put_device +EXPORT_SYMBOL vmlinux 0xf133e7fb __quota_error +EXPORT_SYMBOL vmlinux 0xf1346b59 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0xf13feb57 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0xf1471d4f max8925_set_bits +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf147ecb1 down_trylock +EXPORT_SYMBOL vmlinux 0xf14d840f phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0xf14f09ce tcp_child_process +EXPORT_SYMBOL vmlinux 0xf168ca9f send_sig_info +EXPORT_SYMBOL vmlinux 0xf1850d92 path_nosuid +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1cba079 bio_advance +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1e35e08 d_lookup +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf202c5cb radix_tree_insert +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf22449ae down_interruptible +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf240f0a6 blk_delay_queue +EXPORT_SYMBOL vmlinux 0xf24669e3 scsi_release_buffers +EXPORT_SYMBOL vmlinux 0xf24ed7d2 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL vmlinux 0xf27485b4 intel_gmch_probe +EXPORT_SYMBOL vmlinux 0xf28ed6e2 machine_to_phys_nr +EXPORT_SYMBOL vmlinux 0xf290da7f inet_sendpage +EXPORT_SYMBOL vmlinux 0xf2997713 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2b1ac8e __getnstimeofday +EXPORT_SYMBOL vmlinux 0xf2ca6700 page_follow_link_light +EXPORT_SYMBOL vmlinux 0xf2d669ab pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0xf2d8b0b0 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0xf2dc1e74 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0xf302fcd3 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0xf312cb9d ucs2_strsize +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf32055e7 dev_base_lock +EXPORT_SYMBOL vmlinux 0xf32d53bb uart_write_wakeup +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf33a4fdf vfs_setpos +EXPORT_SYMBOL vmlinux 0xf33fc451 netif_skb_dev_features +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf3689461 udp_disconnect +EXPORT_SYMBOL vmlinux 0xf37260ab _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0xf37f5e99 __skb_checksum_complete +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 0xf3b124e0 clocksource_register +EXPORT_SYMBOL vmlinux 0xf3bf0bce __bitmap_complement +EXPORT_SYMBOL vmlinux 0xf3ebc74f ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0xf40c4f36 devfreq_add_device +EXPORT_SYMBOL vmlinux 0xf432dd3d __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf4490726 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0xf48dda1e sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0xf4a5c213 avail_to_resrv_perfctr_nmi_bit +EXPORT_SYMBOL vmlinux 0xf4b095ce agp_bridge +EXPORT_SYMBOL vmlinux 0xf4b5a08c registered_fb +EXPORT_SYMBOL vmlinux 0xf4b754fd acpi_resources_are_enforced +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4dff374 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0xf4e690f2 __bread +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf50128e6 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0xf50217d9 get_write_access +EXPORT_SYMBOL vmlinux 0xf503d2b7 dquot_alloc +EXPORT_SYMBOL vmlinux 0xf51ae235 touch_nmi_watchdog +EXPORT_SYMBOL vmlinux 0xf51bf88b nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xf5298a5b nonseekable_open +EXPORT_SYMBOL vmlinux 0xf52fbadd find_lock_page +EXPORT_SYMBOL vmlinux 0xf536d22e acpi_set_gpe_wake_mask +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf53d4db2 bio_integrity_get_tag +EXPORT_SYMBOL vmlinux 0xf54145d5 nf_getsockopt +EXPORT_SYMBOL vmlinux 0xf57f120a xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0xf5893abf up_read +EXPORT_SYMBOL vmlinux 0xf598be6a rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0xf5992b03 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0xf5a41442 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0xf5a831f4 simple_rename +EXPORT_SYMBOL vmlinux 0xf5b10e67 acpi_install_global_event_handler +EXPORT_SYMBOL vmlinux 0xf5ce272b idr_for_each +EXPORT_SYMBOL vmlinux 0xf5e9e61b uart_unregister_driver +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf60194a0 sock_kfree_s +EXPORT_SYMBOL vmlinux 0xf6372746 input_set_keycode +EXPORT_SYMBOL vmlinux 0xf6375067 __bio_clone +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf66499fc fsnotify_put_group +EXPORT_SYMBOL vmlinux 0xf67763bd compat_sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf68687be __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xf6a4a37b pci_disable_device +EXPORT_SYMBOL vmlinux 0xf6b22233 dquot_quota_off +EXPORT_SYMBOL vmlinux 0xf6b813b5 set_security_override +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6d1f7e4 pci_claim_resource +EXPORT_SYMBOL vmlinux 0xf6d66d8b serio_interrupt +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf7289d14 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0xf741c793 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xf751a3ab inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0xf7535c9f put_tty_driver +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf76725e0 kernel_accept +EXPORT_SYMBOL vmlinux 0xf77ee28b dev_get_by_index +EXPORT_SYMBOL vmlinux 0xf7adcaf3 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0xf7b000e6 inet_recvmsg +EXPORT_SYMBOL vmlinux 0xf7c2b9d2 neigh_update +EXPORT_SYMBOL vmlinux 0xf7ef0c53 phy_register_fixup +EXPORT_SYMBOL vmlinux 0xf7ef8f6b vfs_symlink +EXPORT_SYMBOL vmlinux 0xf7f23d67 sock_wake_async +EXPORT_SYMBOL vmlinux 0xf803fe39 bitmap_set +EXPORT_SYMBOL vmlinux 0xf807c61e twl6040_reg_write +EXPORT_SYMBOL vmlinux 0xf80de9ff hdmi_avi_infoframe_pack +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 0xf82cfd1a proc_dostring +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf83baae0 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0xf88e0ee2 acpi_get_table_header +EXPORT_SYMBOL vmlinux 0xf896ffe1 remove_proc_entry +EXPORT_SYMBOL vmlinux 0xf8983de7 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0xf8b77d98 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0xf8c2a916 vga_get +EXPORT_SYMBOL vmlinux 0xf9067cc2 block_commit_write +EXPORT_SYMBOL vmlinux 0xf90c7189 vga_client_register +EXPORT_SYMBOL vmlinux 0xf911a640 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0xf921cfd2 dev_trans_start +EXPORT_SYMBOL vmlinux 0xf92eb53b bitmap_close_sync +EXPORT_SYMBOL vmlinux 0xf93f9ebc pci_iomap +EXPORT_SYMBOL vmlinux 0xf9505a40 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0xf98b4b21 get_disk +EXPORT_SYMBOL vmlinux 0xf994c1f8 tty_register_device +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9a79269 mpage_readpage +EXPORT_SYMBOL vmlinux 0xf9aa535f __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0xf9adfdd9 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0xf9b52e32 phy_init_eee +EXPORT_SYMBOL vmlinux 0xf9b67fff pci_vpd_truncate +EXPORT_SYMBOL vmlinux 0xf9c0b663 strlcat +EXPORT_SYMBOL vmlinux 0xf9c2d7ba __mmc_claim_host +EXPORT_SYMBOL vmlinux 0xf9c8da97 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0xf9e1fdc5 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0xf9ec5872 pcim_enable_device +EXPORT_SYMBOL vmlinux 0xf9ee1197 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa65af6d skb_copy_datagram_iovec +EXPORT_SYMBOL vmlinux 0xfa66f77c finish_wait +EXPORT_SYMBOL vmlinux 0xfa7f3156 wl12xx_get_platform_data +EXPORT_SYMBOL vmlinux 0xfa902579 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0xfa9d29ee abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xfa9d411d blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0xfab383b9 rename_lock +EXPORT_SYMBOL vmlinux 0xfab675e9 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0xfac44333 gen_new_estimator +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfad1a95c __sb_start_write +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaf1b792 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xfaf98462 bitrev32 +EXPORT_SYMBOL vmlinux 0xfb0443fb acpi_get_parent +EXPORT_SYMBOL vmlinux 0xfb1cef85 blk_get_request +EXPORT_SYMBOL vmlinux 0xfb2bdd41 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0xfb30473c netif_rx_ni +EXPORT_SYMBOL vmlinux 0xfb31c1f9 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0xfb578fc5 memset +EXPORT_SYMBOL vmlinux 0xfb5bdfde audit_log_task_info +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb767ab1 agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0xfb7c4d76 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0xfb7d9a92 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0xfb80c7a0 acpi_walk_namespace +EXPORT_SYMBOL vmlinux 0xfb84057a mddev_congested +EXPORT_SYMBOL vmlinux 0xfb8a0026 dev_addr_add +EXPORT_SYMBOL vmlinux 0xfb935888 kmem_cache_create +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbd7311a blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0xfbd8d63c xen_biovec_phys_mergeable +EXPORT_SYMBOL vmlinux 0xfbe5ff38 xfrm_input +EXPORT_SYMBOL vmlinux 0xfbea016a mutex_lock +EXPORT_SYMBOL vmlinux 0xfbf3a008 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0xfbf4ab75 kill_anon_super +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc16bb57 devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0xfc2245a0 tcp_sync_mss +EXPORT_SYMBOL vmlinux 0xfc24da9c ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0xfc35a84b filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc42c48b pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0xfc836be7 nf_log_register +EXPORT_SYMBOL vmlinux 0xfc83f13e read_cache_pages +EXPORT_SYMBOL vmlinux 0xfc8470a9 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0xfc872fd1 get_ibs_caps +EXPORT_SYMBOL vmlinux 0xfc902034 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0xfcaa04a0 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xfcac0d40 acpi_install_interface_handler +EXPORT_SYMBOL vmlinux 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL vmlinux 0xfcb926cd kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xfcc0c534 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcc54f91 lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfced5de6 serio_open +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd176419 register_qdisc +EXPORT_SYMBOL vmlinux 0xfd4ab635 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0xfd5f4146 vlan_untag +EXPORT_SYMBOL vmlinux 0xfd6293c2 boot_tvec_bases +EXPORT_SYMBOL vmlinux 0xfd83493a simple_open +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfda0dbe8 ftrace_print_hex_seq +EXPORT_SYMBOL vmlinux 0xfda87afa lro_flush_pkt +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdcf4f6f tcp_gso_segment +EXPORT_SYMBOL vmlinux 0xfdee7d42 _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0xfdfb792f amd_iommu_pc_supported +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 0xfe1d876d __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0xfe26fc7c nr_node_ids +EXPORT_SYMBOL vmlinux 0xfe319c7c eth_mac_addr +EXPORT_SYMBOL vmlinux 0xfe3333f1 inode_needs_sync +EXPORT_SYMBOL vmlinux 0xfe4932ed pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe6be2e9 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe9047a1 __frontswap_load +EXPORT_SYMBOL vmlinux 0xfe9ebbbb acpi_osi_is_win8 +EXPORT_SYMBOL vmlinux 0xfec1b6c8 sk_reset_timer +EXPORT_SYMBOL vmlinux 0xfecb7678 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0xfed885bf sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfeebc7c4 __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0xfeed1943 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0xfef96e23 __scsi_print_command +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff2129da blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0xff28960b blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0xff3bbb67 __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0xff582827 fb_is_primary_device +EXPORT_SYMBOL vmlinux 0xff5d33cd input_open_device +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff6e5e35 pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff784133 seq_putc +EXPORT_SYMBOL vmlinux 0xff7988b5 inet_put_port +EXPORT_SYMBOL vmlinux 0xff852698 skb_seq_read +EXPORT_SYMBOL vmlinux 0xff8e895e generic_delete_inode +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffa408ef qdisc_reset +EXPORT_SYMBOL vmlinux 0xffa90a18 sock_from_file +EXPORT_SYMBOL vmlinux 0xffbc890e set_pages_array_uc +EXPORT_SYMBOL vmlinux 0xffc48579 kthread_bind +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 0x43af1ddc lrw_camellia_exit_tfm +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x50dc55b6 __camellia_enc_blk_2way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x7cf6d094 xts_camellia_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x930f687f camellia_decrypt_cbc_2way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0xa41a5ad3 camellia_dec_blk +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0xd1d43e8f 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 0x8f02ac4d glue_xts_crypt_128bit_one +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x91e9985d glue_ecb_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0xaec33dac glue_ctr_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0xbbfeb66b glue_cbc_decrypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0xc0e54262 glue_cbc_encrypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0xc33a510a glue_ctr_crypt_final_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0xca614a86 glue_xts_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x016a957f serpent_xts_enc_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x04977372 xts_serpent_setkey +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 0x41f12e18 lrw_serpent_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x4d4e0873 lrw_serpent_exit_tfm +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x606a8162 serpent_cbc_dec_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x79ff0b7a serpent_ecb_dec_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x9ae34b2f serpent_xts_enc +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x9e018632 __serpent_crypt_ctr +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x9f99663c serpent_ctr_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0xa84ea33d serpent_ecb_enc_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/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 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 0xa53fe4ff lrw_twofish_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0xcc387556 lrw_twofish_exit_tfm +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0xe059b995 xts_twofish_setkey +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 0x01d663c3 load_pdptrs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x021dde82 __kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0a769909 kvm_cpuid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x10053924 kvm_write_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x148b4014 kvm_set_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x156884c0 kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x15d6f445 kvm_init_shadow_ept_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x17c3656e kvm_release_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x184d2b2c kvm_cpu_has_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x18e1accb kvm_get_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x19d63c97 kvm_task_switch +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1cfe78d1 kvm_release_pfn_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1d9ee504 kvm_put_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1e2b7da8 kvm_set_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x23908358 kvm_get_cs_db_l_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x241ede60 kvm_complete_insn_gp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2f4e3191 kvm_x86_ops +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2f7d864f kvm_inject_realmode_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x317f9e6b kvm_enable_efer_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x32896bf6 kvm_get_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x332fee3d kvm_get_dirty_log +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x336dc7cc kvm_is_visible_gfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x37da1b99 kvm_after_handle_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x38744659 gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x388e1042 kvm_get_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3b5dd35e __tracepoint_kvm_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3caebef3 gfn_to_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3d750833 kvm_get_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3dd1409e kvm_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3e275f4b gfn_to_hva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x418fb282 kvm_set_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x41c00e80 kvm_lmsw +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x445e9047 kvm_set_cr4 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x461b177b kvm_set_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x47588907 kvm_inject_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x47ac0e99 kvm_get_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4998dade kvm_inject_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4a3c2a68 kvm_queue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4ad3ceb1 kvm_rdpmc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4c51f664 __tracepoint_kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4d68ad7d x86_emulate_instruction +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5020c587 kvm_fast_pio_out +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x53a2a3f7 __tracepoint_kvm_inj_virq +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x53da10c2 kvm_mmu_flush_tlb +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x57053751 kvm_emulate_hypercall +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x57a92c5a kvm_vcpu_block +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x57fbcfcb kvm_clear_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5a5e65b6 kvm_mmu_reset_context +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6343b07e kvm_mmu_invlpg +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x64020e10 kvm_set_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x64a34f49 __tracepoint_kvm_nested_vmexit_inject +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6f1c4400 kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x709cd8cb kvm_spurious_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x70bd3bc9 kvm_flush_remote_tlbs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x71e79a79 kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x74122076 kvm_set_cr0 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x754f789a kvm_read_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x764248a3 kvm_vcpu_cache +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x76aa0b6e kvm_write_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x76df156b kvm_write_guest_virt_system +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x79b8a62e kvm_require_cpl +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 0x7dd94938 kvm_set_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7f2c1163 __tracepoint_kvm_nested_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x824b254b gfn_to_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x831327da kvm_max_guest_tsc_khz +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x84ec6271 mark_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x861ecbb8 kvm_mmu_get_spte_hierarchy +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x89a54d2f handle_mmio_page_fault_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8a26f7b0 __tracepoint_kvm_nested_intercepts +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8a8fc00a kvm_arch_register_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8c26d754 kvm_vcpu_yield_to +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 0x91384103 kvm_clear_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9408281a kvm_valid_efer +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x96a7cca0 kvm_read_guest_page_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x98d487b3 kvm_mmu_load +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x99cee2e1 kvm_read_guest_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9a216313 kvm_define_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9cdedf25 kvm_irq_has_notifier +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9ee59155 __tracepoint_kvm_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa0ec3a0a gfn_to_hva_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa26c390e kvm_apic_write_nodecode +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa3087bf6 kvm_vcpu_kick +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa508e36b __tracepoint_kvm_skinit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa9b88ea8 gfn_to_pfn_async +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaa7098aa kvm_set_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaa79cab5 __tracepoint_kvm_cr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xab65a38f kvm_mmu_unprotect_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xacf7f97c gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xad33c5b3 kvm_init_shadow_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaf275715 __tracepoint_kvm_nested_vmrun +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb1879f8e kvm_emulate_wbinvd +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb1ec32fd kvm_arch_has_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb282d65a kvm_vcpu_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb3eb918e kvm_apic_update_irr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xba9ed435 kvm_mmu_set_mmio_spte_mask +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbab46f0a kvm_requeue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbe1cce2b kvm_get_guest_memory_type +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbf9ecbd1 gfn_to_pfn_prot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc3deee14 kvm_read_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc7bcc220 kvm_mmu_unprotect_page_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xca9fad87 kvm_before_handle_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcbfae21b kvm_inject_pending_timer_irqs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcef3fec5 __tracepoint_kvm_write_tsc_offset +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd0459e67 kvm_has_tsc_control +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd0b2727a kvm_mmu_set_mask_ptes +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd3c6a838 kvm_find_cpuid_entry +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd544cd5e kvm_apic_set_eoi_accelerated +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd750af88 gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdb4f928c kvm_set_xcr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xddb339c4 kvm_emulate_halt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdeb9e564 __tracepoint_kvm_invlpga +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdfe44c52 kvm_queue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe0ee96de kvm_mmu_sync_roots +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe1ce77a2 kvm_requeue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe1e34cc0 kvm_write_tsc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe362b462 fx_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe395c77e kvm_read_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe4524fa0 kvm_vcpu_uninit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe7bdfdfb kvm_mmu_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xea02d336 kvm_arch_unregister_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xebb37e9e kvm_resched +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf1f2f9c4 kvm_set_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf51724f1 gfn_to_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf559b1a3 kvm_mmu_unload +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf642eb1a kvm_is_linear_rip +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf6591271 kvm_get_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf97c0897 kvm_lapic_set_eoi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfb4396d2 kvm_set_cr3 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfe65c561 kvm_release_page_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xff5bf844 kvm_emulate_cpuid +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x1c927621 ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x3411bcd2 ablk_exit +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x66fb7a09 ablk_set_key +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x8483b090 ablk_init +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xa93ca6f4 ablk_decrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xfa80fe59 ablk_init_common +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xfb7f23b9 __ablk_encrypt +EXPORT_SYMBOL_GPL crypto/af_alg 0x0b8d90eb af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x15fa10da af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0x1811091e af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x258f3392 af_alg_release_parent +EXPORT_SYMBOL_GPL crypto/af_alg 0x289197b2 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0x6413e1e9 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x65eef7f4 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x78f09193 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0xcb764aac af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xe772491c af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0xa61eaacd async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x10832ff3 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x9f82f533 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x33afd91d async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xe86a9bed async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x45a3934f async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x50e31462 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x977959e9 __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xb1a85a77 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x52d835cb async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xc71a6ec7 async_xor +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0xc7729f92 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 0xca3db466 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 0x39379bf8 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 0x27e9a8d5 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x332f9bd7 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x3dd6a0eb cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x5ed1047a cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x8e38bbcb cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x9a5bfa14 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x9ce42fe7 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0xa1266151 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xe13e10f2 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xebb84193 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/lrw 0xf670af8c lrw_crypt +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 0xc33b423f serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0xd11f2666 twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0xd1dd60a1 xts_crypt +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/ahci_platform 0x2236ccf6 ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x38c3c1df ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x3ab0fff6 ahci_platform_suspend_host +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x5ab76a64 ahci_platform_resume_host +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x5ac39191 ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x71abde5c ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x83202ea1 ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x85c9df69 ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xa2885eb4 ahci_platform_resume +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xc8c8a792 ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xf9773e3d ahci_platform_suspend +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x0460b2d6 ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x1831842a ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x28d4c01d ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x308af12f ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3d45daec ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x44c10d9b ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x51c456f9 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5eacba1f ahci_interrupt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5f950926 ahci_restart_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x61415b0a ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x619ea421 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x694f923e ahci_thread_fn +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6d755fbf ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6e05c4e7 ahci_hw_interrupt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7ab0b8db ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x86929477 ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x890d06b3 ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba7f22b ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xb362095a ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc6e0f9dd ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc8a624a8 ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd2bedd6c ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe3ba1247 ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe669b962 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xefd1c722 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0xed748863 __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/bcma/bcma 0x0195ee86 bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x01dcd640 bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x06197f59 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x0d2fdb27 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1b375a0a bcma_find_core +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x30f0ce46 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x379aefdd bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x48fc3a0c bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4a94947d bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6e2f3b91 bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7dd0ff98 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7e8c5995 bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x83161a31 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8389fc8b bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa1783a3c bcma_core_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xaa3e96d4 bcma_core_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xabbcd7de bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb7fe0a45 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd0155f5e bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd2060154 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xdcacbfd2 bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe1dc2b35 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe26789a1 bcma_core_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x2ae48e44 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x3e445a99 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x582a6594 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x622d9968 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x6d87f806 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x76004fbf btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x9320885f btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xa851129c btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xe4a98539 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xf0e135c3 btmrvl_remove_card +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/dca/dca 0x01a33ab9 dca_unregister_notify +EXPORT_SYMBOL_GPL drivers/dca/dca 0x10cc9c68 dca_add_requester +EXPORT_SYMBOL_GPL drivers/dca/dca 0x31a2c8df dca_get_tag +EXPORT_SYMBOL_GPL drivers/dca/dca 0x8b581df2 unregister_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0x94ec52d2 dca_remove_requester +EXPORT_SYMBOL_GPL drivers/dca/dca 0x96af7c71 alloc_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0xac34ecec dca_register_notify +EXPORT_SYMBOL_GPL drivers/dca/dca 0xc545242d free_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0xd5b1f721 dca3_get_tag +EXPORT_SYMBOL_GPL drivers/dca/dca 0xffb29951 register_dca_provider +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x2b9a7bef dw_dma_shutdown +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x3a60469c dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x73dc225f dw_dma_suspend +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x7f355bf3 dw_dma_resume +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xdefd2fe2 dw_dma_probe +EXPORT_SYMBOL_GPL drivers/edac/amd64_edac_mod 0x0e069256 amd64_get_dram_hole_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x01c06c20 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0770ac7d edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1172c006 edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1dbd507a find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2aa4f92c edac_mc_add_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x344ea768 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x3c4b9a17 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x404d5cec edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x473e041f edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x4c25f30c edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x531491dc edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6848f23e edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x69259f22 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x71430f3f edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x731cfd8d edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x78c82011 edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x99eb7c08 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9e695cd1 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xada839ff edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb96188dd edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xcb5c3114 edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd5f4af7a edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe733220a edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xef183777 edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x14878009 amd_report_gart_errors +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x1d34e996 pp_msgs +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x21626132 amd_register_ecc_decoder +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x737912b3 amd_unregister_ecc_decoder +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0xb30b7e56 amd_decode_mce +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/gpio/gpio-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 0x47a1e964 bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x5537d866 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x402a651a __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x5e8021b3 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x2ec16ab4 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xb8c7028b drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xeacf273d drm_vm_open_locked +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 0x2b2c59ae i915_release_power_well +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 0x96108893 i915_request_power_well +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0xb76bf2ac i915_get_cdclk_freq +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0xe7237b0b i915_gpu_turbo_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x6adf436b ttm_prime_fd_to_handle +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x82add275 ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xacff51cf ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xb3258d6b ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xce36343e ttm_prime_handle_to_fd +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0059e48c hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x057f8ed7 hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0x08ec3202 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0b1e0d88 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0cd04b3d hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x177d2d51 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1a135736 hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1b80d345 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1ce62f9a hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2846eb07 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x470a0df5 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4ee7497d hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4fca67f9 hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5230fbf1 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5c3d9fc0 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x650dc005 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6597e6b3 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6a505553 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6a85abdb hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6b779fba hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7251020d hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7580fcbb hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x77ac3fb8 hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8390d9fe hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8953984d hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x94a8bb5b hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9dcc24c6 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9e288b12 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb8aefe62 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd26d8303 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd8bd09ee hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe4f41962 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xef5a4c7a hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfeb22f88 hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x80425c71 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x0daf26c8 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x59955fb4 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x5a47e5a5 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x6b9864ce roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xb07cc659 roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xb2f18b12 roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x605ebc58 sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x881bcaa4 sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x9420d10d sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xb3c364ed sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xbada1c37 sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xcdcfb665 sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xe950ddf0 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xf5d8e86d sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xa9656c93 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x2a9b6ec7 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x31bed5ea hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x31dad2ea hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x3fdfe9fe hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x4a4bf3ca hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x55743c3e hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x57e6eb09 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x7094a0b2 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x881b9872 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x93150653 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x9cac7815 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xdf4c8d6a hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe3dfb0f7 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x069db39b vmbus_get_outgoing_channel +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x09660d7f vmbus_open +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x0be983e7 vmbus_teardown_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x358fafa5 vmbus_prep_negotiate_resp +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x440b5041 vmbus_sendpacket_pagebuffer +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x46a417ca vmbus_proto_version +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x524df44d vmbus_are_subchannels_present +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x61a178e1 vmbus_set_sc_create_callback +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x63978a24 vmbus_close +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x862a8c9c vmbus_recvpacket_raw +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x91542310 vmbus_sendpacket_pagebuffer_ctl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xa7974ffb vmbus_sendpacket_multipagebuffer +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xaea1b2a0 vmbus_driver_unregister +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xb0bee792 vmbus_establish_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xe198a4f7 __vmbus_driver_register +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xf45dd651 hyperv_mmio +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xf79fbccf vmbus_sendpacket_mpb_desc +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xb4365d22 adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xcea5a8d9 adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xe33f3b55 adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x17f56c01 pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x1eb23864 pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x26229f54 pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x3300e178 pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x457100d2 pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x67fd163e pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x7d5f07b0 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9b88598b pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xa255252f pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xb0575a8c pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xc0310c85 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xd58dbda7 pmbus_set_page +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x02062d21 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x08e3d847 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5bb1170b i2c_dw_isr +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x6c74b7c2 i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x6f5d527f i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xae1714fe i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xcb956965 i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xdb4fd1ba i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xdc4888e9 i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xf8c39656 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-nforce2 0x75748b47 nforce2_smbus +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x268edd0d i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x5e34ae45 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xc800e470 i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xd9d8c20a i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x070b139d ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x5e7eeba9 ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x64a87803 ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x76cf1428 ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x8603f6f8 ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x90f096f4 ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x942d0466 ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xe42dde5b ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xe951c3ae ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x0b4af7e4 adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x1cbccc67 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x284b7a76 adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x520296c4 adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x54ada7f8 adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x77e33a86 adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xae326f28 adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xc3c2de9f adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xcd83b047 adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xce88751f adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xef53ea8b adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xfc78fd99 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0697c610 iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1713bdcf iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2404851f iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x250dc0fa iio_channel_release +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 0x2a8abdaf iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2df59079 iio_scan_mask_set +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3e3c1bb5 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3e5bf15f iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x43ab443d devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4651e480 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x479ef2dc iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x50fdd69e iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x58be84f8 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x665a24b4 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7631440f devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x78f92108 iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9d811203 iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb86ce50b iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc1c9fa9e iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc2689d5d iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc8fedbdc iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc9d662e5 iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd126ee28 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd130ba84 iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd9024055 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd959d955 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe6901ba4 iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xee5800c9 iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf5b16d63 devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xfb321327 devm_iio_device_free +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 0xc4f25f9f input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x12f92c30 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 0x20050f29 cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x39d0bec3 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x760f81b9 cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x19dc3f45 cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x98e42c4c cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xc4a08554 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xa2e5cc3a cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xe5a02d3e cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x204f96e6 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x23919c17 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x268aff5e wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x3df18bbc wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x5e4f69df wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x73ca2559 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x83686dd4 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x955cd9fe wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x9f8520b8 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xa0f3e28d wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xad6aa1b2 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xf15b8b22 wm9713_codec +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x002eeb9f ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x057406b4 ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x23f44c42 ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x2d667ff2 ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x346fbe5a ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x57fe47b1 ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xaa2e44b4 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xc015035b ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xccd56fa9 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 0x1c2e1429 gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2dc8bdcf gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x30d4828a gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x33ef69e6 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3b2fee97 gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3fc23268 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x5e5805e2 gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x5e965134 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x60090eb7 gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x70126b76 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x71846497 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9ab8e2f3 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9c758320 gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa3151853 gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xbb33d31a gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd17337d5 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd71fdbee gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe41c842f gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/leds/dell-led 0x86fd1ffb dell_app_wmi_led_set +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x0f8697d2 lp55xx_write +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x14fca987 lp55xx_register_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x34a8911f lp55xx_of_populate_pdata +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x648e6f62 lp55xx_read +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x6a5fdb65 lp55xx_is_extclk_used +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x7840c9c0 lp55xx_register_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xb59f9a70 lp55xx_unregister_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xc2a048b1 lp55xx_update_bits +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xc93abec2 lp55xx_deinit_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xd61c8491 lp55xx_init_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xde4ad374 lp55xx_unregister_sysfs +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x749e05f2 ledtrig_flash_ctrl +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x7903e46e ledtrig_torch_ctrl +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x0ec17d44 __tracepoint_bcache_bypass_congested +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x26062738 __tracepoint_bcache_alloc_fail +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 0x8a4afa11 __tracepoint_bcache_alloc_invalidate +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 0x3aa4ec84 dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6cac75dd dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x8544c3ed dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xafe0be4a 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 0xb8f2ee9a dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xc318e331 dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xc91680b3 dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xebd06eaf dm_bio_prison_create +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 0x9a38ceb6 dm_bufio_client_create +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 0x4fc6d84f dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x53db594a dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x6e5f61b9 dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x8b39899b dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x90e6e648 dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xe29bd9de dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xf53999a4 dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x9b1b89c2 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xc9756e2d dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x01d2f9ac dm_rh_recovery_start +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x4430764e dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x45ab972a dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x48ca07b0 dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x6f990db1 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x825cdabe dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x9105bbc3 dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x91e5db83 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa4f3dba2 dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa68e1f06 dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfad9d53a dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfc62ef4e dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfd93482e dm_rh_recovery_in_flight +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0054f69d dm_tm_pre_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x01445176 dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x17c36f29 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1cac81ac dm_bitset_clear_bit +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 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 0x2f74609d dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x32b5f546 dm_array_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x38c75c44 dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3daae854 dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x42dbdfc3 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 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 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 0x68fae9d2 dm_disk_bitset_init +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 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 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 0xa0bbbb49 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa13861b4 dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa87c5b4d dm_array_resize +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 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 0xe44b4b9b dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed1e1f96 dm_btree_remove +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 0xf475af48 dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf5455120 dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/raid1 0x34f8acc5 md_raid1_congested +EXPORT_SYMBOL_GPL drivers/md/raid10 0xe07795a8 md_raid10_congested +EXPORT_SYMBOL_GPL drivers/md/raid456 0x53a3129f md_raid5_congested +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x1d338200 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x23c1d2bc saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x2408958d saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x57c5f76b saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x606d4a12 saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x64db671a saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x8ef57eb8 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x952963ec saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x9b1f405b saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xed394803 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x36e6575c saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x4ab059bc saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x6b7730d8 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xbe0605cc saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xc52f6128 saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xddb16042 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xe9355b47 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x158ba8b1 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x1f53de90 smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x2540f703 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 0x3c252bf9 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x3e41a9cf sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x46613ffa sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x4b9fe242 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x4ebcdfa8 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x60075ffd sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x689d3063 smscore_unregister_hotplug +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 0x96a19323 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x99a81ab3 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa9c6eac0 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xae4ab396 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb42a613c smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb50e43a0 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xeef809ca smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xfa45e424 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0x4c24bda2 cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0x2ac8f333 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0x6bd6cbf7 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x04b7e111 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x1baa32b0 mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x1e38017e mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x238cf321 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2a87fdfa mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2d42cda0 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x4e056ff5 mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x518b6b2f mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x5c475b1d mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x77589cc7 mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x93abd165 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x994b31c6 mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa717c7a2 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc25d6aee mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xcf552e0b mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xcf915adc mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xe942ad34 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x1a36a760 saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x840cb4b6 saa7134_s_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x954286d1 saa7134_queryctrl +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xace5e4b1 saa7134_g_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xb0d018ee saa7134_s_std_internal +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x07e8f274 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x144c0c76 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x1f963d82 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x74f06143 ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xcd37d367 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xe73057ea ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xf37c129e ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x237c3285 radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x981c3319 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x03fb9c77 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x07aab37a ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x194abd3e rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1ee20202 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x2320ae9e ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x37c071b0 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4429dcbf rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x62dde99c rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6eb74678 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x81aac2bf rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x83729d5f ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x84c25467 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa0cf60c1 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa44c17f1 rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa815d1f2 rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb5b13bc1 rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb702895e ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xbeb76c9c rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc735ee7d rc_register_device +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0xe16cc19d mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x671273e5 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x2722c23f mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x77372d7f r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0x9fa8bea4 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x43f8a009 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xd6f43bca tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xf95a8f6f tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0xfd4876d0 tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x7dacbefe tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xefe87864 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x202e8b70 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x9a67523b tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x8940e164 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x0a7e46c8 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x21cbc496 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x25cb5719 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x2ac5732f cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x2c080963 cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x316536b2 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x5154d772 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x54f8dff4 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x5d8b0187 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6261790c cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x75a1da84 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x8cfa44d5 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x96bf41dd cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x98d27247 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa35c2f9d cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xabf0e82a is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb5b0dda0 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe5f0f2f8 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xefaac582 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0xcf6bb58f mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0x8bc241ba mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x2303fff8 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x23e05b98 em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x5704e627 em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x67a998ec em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x755135f4 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7d6ca378 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x947c24c6 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa2b4711b em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa3325fb6 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xbc550def em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xce882647 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xe413fc4f em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xedf3be45 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xeeb95112 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x00ff1a58 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x7f5476f5 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x9dada27c tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xc14d781f 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 0x42ff8375 v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x55bb34bb 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 0xa7dad1f4 v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xa970df2b v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xcbc600fd v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xfbd46de8 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x08982d59 v4l2_match_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x221d2fbc v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x36e8756a v4l2_find_dv_timings_cap +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 0x53105839 v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x6976cfe0 v4l2_valid_dv_timings +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 0x7eaf8e7a v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xb0891da2 v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0x15e96a1d v4l2_int_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0x611e0b0c v4l2_int_ioctl_1 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xa5228b24 v4l2_int_device_try_attach_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xb2f96f8a v4l2_int_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xeeaa01ef v4l2_int_ioctl_0 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17eb0eee v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x18bb56dd v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x1a322412 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4540060e v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x591457a0 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x78f93b02 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8bee9a79 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9ae36a8e v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9d2af2ca v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc0521eff v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc649e4fe 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 0xcf17fd56 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe3f2d295 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe5d3d350 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf8e3c066 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x01471733 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x07be8255 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x08380453 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0d5b706a videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x11a5ec2b videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x220d44bf videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x474b92b2 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5b00d6ad videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x670adb63 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6f543cd1 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x74a70432 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8051e083 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x874fc742 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8cee8ad5 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8f0a4d65 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9ba3432a videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd06d4146 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd2927799 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd37039f3 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd3d0633f videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe0fd4ccd videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe13ac138 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe501abc5 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf1b9719c videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x0a3ea421 videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xd7c32a29 videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xefefcf25 videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x3790d6f5 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x4bca44ac videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x517f4462 videobuf_dma_init_overlay +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x553a86d0 videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x75aa6cad videobuf_dma_init_kernel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x805f66a2 videobuf_dma_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x8711df90 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xa4d6de43 videobuf_dma_map +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xbe95320b videobuf_dma_init_user +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xe8420da7 videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x7c02730e videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xcc56ad60 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xe9100c49 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0206f420 vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0d8efc4f vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x16e09cec vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x19d1c330 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1ce4e577 vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x35ed1a31 vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x37bf537a vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3d10d83b vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x484b356d vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x495c934c vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x529cb3c6 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x581705d6 vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5f1082d0 vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7193ce5a vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8c4ab3ac vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x99fb9d7c vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9e96c0f5 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa56801cb vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa61e311c vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xaad495dd vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xac32af70 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb326c308 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbb551f37 vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd18db577 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd1c90681 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd4fe03d1 vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xda8ffed8 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xdb1f320f vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xdc25aa67 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xde0ec622 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe7fe65b3 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe9bdb4b5 vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xff2af40f vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xff9eb5fc vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x0f076999 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x761f4f5b 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 0xd50e7091 vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x2e19f7aa vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x8246347f vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x847dc2a1 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x84cb5d1f vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0xfe00d79f vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x03f1eeac v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1df63a43 v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x26d968c4 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3388b757 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x33c0820a v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x452356c0 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x45d996aa v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x509c16fb v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x50ddfea0 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x51744035 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5d174474 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5f57bdd8 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6a293159 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x792a5d62 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x846178a9 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x85917556 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa12bc282 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa8eec96e v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb00d65e4 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbfe4e2e8 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc40f3286 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd9ff5ac3 v4l2_compat_ioctl32 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe02efc48 v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe6a22955 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x17df7725 i2o_dma_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x340d51bf i2o_dma_map_single +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x353a83d8 i2o_pool_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x6e700d63 i2o_pool_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x8a717c9f i2o_dma_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x91993056 i2o_dma_map_sg +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xb2041a49 i2o_sg_tablesize +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xd458bc57 i2o_dma_realloc +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xb579cbe3 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xee770cce pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xfbe5f5b9 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x317ff770 kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x5644e585 kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x68cdceff kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x6fb230f9 kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xa443c577 kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xa6844b67 kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xbcd51bf7 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xbd3c65d9 kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x5dcfb983 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x5ecfeb5d lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x6889a83e lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x056847bd lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x1480b085 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x3b7c318b lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x3f9933cb lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x53d715a9 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xa8061609 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xab209226 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x3591af9f mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x4708c07d mc13xxx_common_cleanup +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x53c83a98 mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xa64bafe6 mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xe6f1e4c6 mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xf4fe11ae mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x230c231f pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x2816ab87 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x5bd1ec4a pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xa56949f3 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xbe6819d8 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xc3187b59 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xc5ab2b23 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xd33ecedf pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe1995470 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xed2d6bef pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xf5ec511e pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xf86db320 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xfd43101f pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x35ebcd90 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x528fff5d pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x9f32c5b2 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xe5397e32 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xe56076ed 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 0x03e2a344 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x04a9b302 rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4534c4c5 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x467791b9 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4c25c6ca rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5498f84e rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5fb1342a rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x624e4244 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x654f2085 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x683531d2 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x74030fde rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x765efece rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x985d44c4 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xae392da8 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb51ec287 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb7dc0353 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc5cfa110 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd0b5b6da rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd1f35340 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd4d63454 rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe2c87bd2 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0d6d9e20 si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0ebde7e5 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1324d688 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1752afd3 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1d863ba1 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1fcc5788 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x22fad57f si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2a4060dd si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2d5ea42d si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x312e5080 si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x319ebc56 si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3e195d26 si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x401f18ac si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4ff47f72 si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5d328a38 si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x617e2fa5 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x666b845b si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x689e6ef9 si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6d390fad si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7abe3a95 si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x89a82fef si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8af945dd si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x90c52989 si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x92faaade si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9a0bbcac si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa23e0c88 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb2ddcb36 si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb6f62fa9 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc583c8ff devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc7d771a2 si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd731b51b si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe70e848d si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf5b18ca3 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf839cce5 si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x5f85457d sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x815b41d3 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x9bf26d13 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xc7174b02 sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xcc7399c1 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x034cd068 tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x4b4ee2a3 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x644312a2 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xc6495aac tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x19ee0b32 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0x0bfacd5a bmp085_regmap_config +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0x39d6f106 bmp085_detect +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0x400f0c67 bmp085_remove +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0xe9de842c bmp085_probe +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x6b64e07e cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xa120e7fa cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xc21f9202 cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xc757ff0d cb710_set_irq_handler +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 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x093f8bfe enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x27fe9fc5 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x48e5c2f4 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x5877b0a9 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xc2f8a4f3 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xd0799f81 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xd9be6db8 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x1b61140d lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x4e765f8c lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x6daca395 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x82fbd9ae lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xb1dc7d0a lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xb963a1ff lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xbfd41b72 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xf664efc9 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x0927eabc mei_stop +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x128da49d mei_cl_recv +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x16c687b2 mei_register +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x25e44b1f __mei_cl_driver_register +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x2ae7b1e2 mei_cl_driver_unregister +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x3aae207e mei_irq_compl_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x61ad9ccf mei_cl_disable_device +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x76492d10 mei_deregister +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x8973c2db mei_start +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x8f1f5943 mei_cl_send +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x9b9e7fcc mei_irq_read_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xa040ead3 mei_device_init +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xa42d6fb3 mei_restart +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xa5b5ae3a mei_irq_write_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xc41ab535 mei_cl_remove_device +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xcb6d6bb1 mei_cl_set_drvdata +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xd07b6167 mei_reset +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xe81752ab mei_cancel_work +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xf034f2d7 mei_cl_register_event_cb +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xf1973bab mei_cl_get_drvdata +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xf3ebf569 mei_cl_enable_device +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xff8fe8f8 mei_cl_add_device +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x3b301364 st_unregister +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x5339f055 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 0x31f6ad8f 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 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 0x53c20507 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 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 0xcff91c6e 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 0x0e581ede sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x1bdadefb sdhci_disable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x2f3ffb28 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x32676a49 sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x3f0359aa sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x60dc7641 sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x7810fa14 sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x79f4ca19 sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xbb866c58 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xdb53437b sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xf46b10fd sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x1e5797f3 sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x2557545c sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x66a99395 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x6ebfeba1 sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xa5846148 sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xd44dfb97 sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xd99ac60d sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x71fbe89c cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x8ce5cd0a cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xb3cce8e2 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x0d49c33d cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x80e2476b cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xfeb00cbb cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x02b63979 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x5968ff69 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x75813a65 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xeedb472b cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x03c5aee0 mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0418e12a deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0608911b kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0742c31c unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x10434d56 mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x15cffb6d mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x196921f6 __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2a2e88e4 mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2ca6ba70 mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3dad4f3f mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x40fa1c65 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4de3e31e mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x58afe41d mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5fc1c1da put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x61f04266 mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x64256076 mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x646acb19 mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x764ec4ff register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x76da2985 mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7bdba034 mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x81dfd7d1 mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x87f82386 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x89660b42 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8c551b4f mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa6233168 __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa8df6889 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xac863282 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb1830101 get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb3774329 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb5209377 mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb9b24d18 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc1a316a1 register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc44e6993 mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc7dbc516 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcb21c7e9 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd378ea1e mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdeb94984 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdf740bee mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe4aeaee7 __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xec41a1e1 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf0c072c5 get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x37bebc9f del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x57bbee07 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x93e83af0 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xb2b484c0 register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xffd12d0c add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x96d96ead nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xd884885b nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0x665bb119 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x867c705e onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xae85d335 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x01fd6349 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x0e44d2a7 ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x46d78cc8 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x4d2189ce ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x61aa6fcc ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6f14f183 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x8d0a2292 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xa7c55afb ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xda6948ee ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xdb00ec94 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe92edd8a ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5dc315f ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf89e3266 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x093bb904 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x413b2da8 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x73b22f96 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x8905bf26 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x8be76d98 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x97bc337c c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x0c836a1f can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x17ebe6f6 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x221c242d unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x29b4aab5 can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x2ba732d5 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x32dc5303 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x36ff0d96 devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x3a552a73 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x71840f6d register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x7607c056 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xa2e34f5b close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb4aa88bd free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xc80b631c safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xe07997ae can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf7bd089c open_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x15515507 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x952a0fb8 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xc444d294 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xf3a8b549 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x59e186a7 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x654ed627 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x98b2120e register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xbea1fee2 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x34142f65 macb_mii_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x3d74f06f macb_get_hwaddr +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x69c741f3 macb_ioctl +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x782be9ae macb_get_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x97308892 macb_ethtool_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xb28b1829 macb_set_rx_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xe9c9d24d macb_set_hwaddr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x013308c1 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0996d608 mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x09eb51b6 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0eaf12ed mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1192761b mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x150057ee mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x171b85ec mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x18e889b0 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1ac3ed6a mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1ca88680 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1d537449 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1dc6a011 mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1ebf29bd mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x21456dd2 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x23df4ee5 mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2529d7f9 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2fb1fc1e mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x316e90e7 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x324e02b1 __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x32be6ca6 mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x340ec46a mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x37484746 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x37dd64aa mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x38b692b9 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x391d6bcb mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3ae15447 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3cbba0a9 mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3daf3e65 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4029ae5f mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x425dc315 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x46eb71cd mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x48537d83 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4caa39ac mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x550bf767 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x57e56b95 mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x59003518 mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5ceae07d mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x620013d8 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x62a079ca mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6520a5b2 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x65b5ea9f mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x69430242 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6eaaca4f mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x712e9b77 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x715afc70 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x724de8d4 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x72fe5062 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x73127bc6 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x752fb6cd mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7904bf7c mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7c0ee4cc mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7cd53a05 mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7d033f1d mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7d68caa2 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x86616f69 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x86777d16 mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x89ae2999 mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8af0b95e mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8c2cd0d9 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8f15891d mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8f44908e mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x92a96607 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9511c5ca mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x96c80480 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9a98f9a2 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9b1b241a __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9d15d636 mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa000e6ba mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa23fda12 mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa264fff7 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa41ce1a7 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa6e9fd53 mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa8654ed5 mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaaee1b5f mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb7c14357 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb7e44799 mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb947dede mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbae86fd1 mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbc1aa0d0 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbd337270 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbdb6a312 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbe31bfd0 mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc1ffa5eb mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc3457900 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc84b7ce1 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc9038dad mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcb5b6ab4 mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcefc9f1f mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd32f5e5a mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd5db1911 mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd6a135ef mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd9a81d1c mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdf892df9 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe42576c2 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe4cca666 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe6368712 mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe9abae59 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf66de8e4 __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfafdffd1 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfb7e7159 mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfbc8569a mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfdf64dfc mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x14e37d5d mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1dace705 mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2239ec46 mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x23e43640 mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x353242a7 mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x39578e5f mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x45510332 mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4e0c1169 mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6b9fe59f mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9e66464d mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb6d841f1 mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbc2c7647 mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc2b92f0c mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc5f34786 mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd6c4ef56 mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd9774ca2 mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdbbb1167 mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x422291f4 macvlan_start_xmit +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x649ee61c macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x6ad2b989 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x86c428e9 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xe4cc4664 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x135d4b16 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x9a84fb86 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xa7d5a099 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xb73a9c1c usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xdc1441a0 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x480fcf54 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x56c3c786 cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x6ba82548 cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x6fc2c55a cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x91011f40 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xaf050de4 cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xb8bbba9c cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xcd8bc90a cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x04024fd9 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x1b7f2c78 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x27f017be rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x603529f1 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xd2eb28ba rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xf1e15457 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x07aa7410 usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0d1e80aa usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0da79418 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0dcd622a usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1a0a104c usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x36eb76dc usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x37dc40d9 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3bec31ce usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x485347ac usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5867874f usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x60a3147d usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x60ce5ea5 usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x831b20a4 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x872d006a usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x888ac361 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8b3c333c usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x98082312 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9ad176b2 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa3a491c0 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa69759e2 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xad2afe45 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb2056768 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb9b2e851 usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbad2cb00 usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc6843a49 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc69a1060 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc8e4fdce usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd0fe02cd usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe449955c usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf4e4bf93 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf7204320 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf7c10345 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x09c81533 vxlan_src_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x35b7d84a vxlan_xmit_skb +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x4a18ba72 vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x56898052 vxlan_sock_add +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x8bfb67e7 vxlan_sock_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x0b5950b5 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x1a9896d5 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x2c027649 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x3bd7c1b6 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x490e4e37 i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x496d3e2d i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x500ae83c i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x6cdbee18 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x7759e8e7 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8b6a229c i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x97b1ee68 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa0cf0c2a i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb0f44374 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb5cf715e i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xbe3c992d i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd4ff76c5 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x2ee337d1 cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x36682c7c cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x776eb1f7 cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x95d42619 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x40ebde04 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x1ade5bcf _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x57c6786f il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x8d40443c il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xbeb32a18 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xeea4f312 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0a637681 __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x10e075c5 iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1b2b7867 iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x23b31849 iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2ff8f139 iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x38333763 iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x43e62a04 iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5d0a212e iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6715334b iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6f7c1366 iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x7cd0fb0b iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x85125656 iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8c5d5ab3 iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8f5f2e76 __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x91e91a92 iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x95795c57 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa26128a8 iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa36a056d iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb33a7788 __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc4b1ff7f iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc4ec271a iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xcb30cd77 iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xcf341945 iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd1db77fe iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xdd3e32a4 iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe19f9aa8 __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe7ab8c9b iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xefd3d83f __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x144948c5 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x23228f2d lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x2a87d526 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x337a7e90 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x6dae13c1 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x86d856f5 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8874a27e lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8990e3ef lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x91e24080 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xc323035a lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe801208f lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf2c69bda lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf599b4a3 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xfb3cc089 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xfcf2da4d lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xfe34bc2e lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x182595a2 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x1e6ddc1f lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x2d43c7f2 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x2ed2318e __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x2fc0809b lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x7ac02d4d lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xaaa29bb2 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xbec9d91c 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_usb 0x0acfd1e3 if_usb_reset_device +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0x9acf3ac3 if_usb_prog_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x11fb6b02 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x3c07a331 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x46ed9957 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x767e9353 mwifiex_deauthenticate +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x78fb4151 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x875b313d mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x8b15d17b mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x95166bae mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa15e8f2f mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xafdd7e7c mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xcc1a66e9 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd685c3d1 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd9e8a300 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xfe79acd9 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x001a87bc p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x16790c02 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x5794a4db p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x5b398853 p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xb923041b p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xc8c4f3a7 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xd718eeff p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xe71882eb p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xf032f63e p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x01ddf8e8 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x03e977a9 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x06d09421 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x12bbdb99 rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x13c52f0a rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2183f1b8 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3628cea8 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3ae00b8b rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3b8f822b rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3e9e9539 rt2800_get_tkip_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4104d913 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4279eb7c rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x461e5611 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x47e3f36b rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5b81b2b7 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5d4453b3 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x61051d43 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x63487225 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x771168e6 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7a5e7c0e rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x809c39b1 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x83f72fde rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8f05aae6 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x930aa1e2 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x97c2bace rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa1d33f68 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb1a08d42 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb1e9dbce rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb43eac07 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb4db8313 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc035b33a rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc52f280b rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xcae6eed7 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd940066d rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdb375b7f rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe047440e rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe09b8001 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf7357313 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x1d95aa6f rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x3af500e5 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x474bf98c rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x48d9384d rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x63eaa0cf rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x93662b6b rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xbf0c583f rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc1065600 rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xd04d8312 rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xdbce5148 rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xdebbb5bd rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe4a819c1 rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xfc1f5abe rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x03c15d94 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x09e6860e rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0a15236a rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0ce9f74e rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0e2dc41f rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0f429eaa rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x131e8f19 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1c08b5b6 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x20d2d031 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x272ac522 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x28551173 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2cf864d0 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3207badb rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x340ab91d rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x36583764 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3c6762a0 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x40cce805 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5c0937be rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5f0c810f rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6054ebe3 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x60996e40 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x68c2dc9b rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6db25b1e rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x708a190b rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7679efb1 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7af772d0 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7bdbc40a rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x80807601 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8eab7a03 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x92189390 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x92e0ba1d rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x935f5456 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x95327385 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x96f0ed9e rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xaaf90166 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbebc7009 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc703844d rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc93e1a30 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd95e7de8 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd9dc086d rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe043cb7d rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe0834270 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe65ba2ca rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xeedc2d4b rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf62b7ccd rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfee030a8 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x15f64b32 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x22882af1 rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x29fc75d8 rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x41e303a9 rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xc874c5e5 rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x6c72c7d4 rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x74566821 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xbe743a41 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xcfe5ade7 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x1759f511 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x1fab0c27 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x2a6e132e rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x34179ce7 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x40524b0e rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x7ba7a191 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8a8ff3c3 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x9329c8ba rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x940be00e rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb7eaafa2 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xbb7a9522 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc2a6b2c8 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc764c475 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xcfd1d586 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xd8080381 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xf2912149 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0314eb50 dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x15db6c7b dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x578d41d6 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe6b99b64 dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x02cdffb5 rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x084f13bb rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x0dfb5b74 rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x456edc9b rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x4c64726f rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x4da6e190 rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x59ccdd03 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x5c40a871 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x63174c40 rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x66f4b1aa rtl8723_dm_init_edca_turbo +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 0x720a24a6 rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x76c2b9ae rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x8160b407 rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x8195f165 rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x876b28b7 rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x8dcb9998 rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x90e4ffe8 rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x9a1dc2ad rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa565b06d 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 0xc57969d8 rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xc93d653d rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xcdff4531 rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd9821739 rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xdef8b7c7 rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xdf2cdcc7 rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xe65ee2f9 rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xf5707898 rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x0dc934ea rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x16f4d345 rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x241dedc1 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x2b811e74 rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x4237c730 rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x56535b71 rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x6b4de810 rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x72e4a83b rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x77b237d4 rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x816f8e6c rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x846ae1aa rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x98a5fb88 rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x9d0dbcc0 rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xa6c64cfe rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xb31cd970 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xbbff09c1 rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xc903db32 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xce5e7c7d rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xd2b1f48a rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf20deba0 read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x216d1086 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xd6219fcc wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xe6f2a912 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x01a40ab9 wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x05f1a714 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x135461e4 wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x16c2c08c wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x19b2bdb3 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1d79d070 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x20de284b wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x27d4892f wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2a55b80b wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2e71a3f6 wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x446297a7 wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4d8fa924 wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x54114be4 wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5ce24834 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5f4938cf wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x61163134 wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x617ef457 wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x64c0a678 wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x775fbf63 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x78789bd5 wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x905f7f82 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x949b9c7c wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa10190fd wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa9111f87 wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xadc3fef8 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb112efc3 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb29e383a wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb754d96b wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb805a0fa wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc2eb21a0 wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc32765a4 wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xcafe2a6f wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xcdfb6223 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd3870459 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd4d7cec4 wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdd78232a wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe038c176 wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe42ce9e9 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe5a4e444 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf1d065f4 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf5ee1cb6 wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xffef57fb wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x230933aa nfc_mei_phy_alloc +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x329d5ff9 nfc_mei_phy_free +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x3b577068 nfc_mei_phy_disable +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x58f97bbd mei_phy_ops +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x8b4e7b3b nfc_mei_event_cb +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0xe82e19a5 nfc_mei_phy_enable +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0x22f4ba8b ntb_register_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0x30934216 ntb_transport_max_size +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0x32537aca ntb_transport_link_query +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0x3d54dbfc ntb_transport_tx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0x436098aa ntb_transport_link_down +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0x46985070 ntb_unregister_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0x77ae9ef1 ntb_register_client_dev +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0x82e6c13d ntb_transport_qp_num +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0x9c992c8f ntb_transport_link_up +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0xc270dc24 ntb_transport_free_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0xc37d9036 ntb_transport_rx_remove +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0xc57d38fe ntb_transport_create_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0xd40e7a02 ntb_transport_rx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0xfe897ddd ntb_unregister_client_dev +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x0a418418 phy_destroy +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x0e3c094b phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x1063bf48 devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x1601a182 devm_phy_put +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x1fa01c96 devm_phy_destroy +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x23b8de60 __of_phy_provider_register +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x2e325114 phy_init +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x34eff2c6 of_phy_provider_unregister +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x3c1e4f57 devm_phy_get +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x3ea17426 of_phy_simple_xlate +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x413f44cd phy_put +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x42c5bc4c __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x5587eb4f phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x5afec848 devm_phy_create +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x73f7b6d5 phy_create +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x7f354e71 phy_pm_runtime_put +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xa438085f phy_power_off +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xc56e1dc3 phy_pm_runtime_allow +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xd0c33909 phy_power_on +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xda0b43aa phy_get +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xe125ca8e phy_pm_runtime_get +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xf439a7cb phy_exit +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xf7cd88e5 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0x7eee53e3 asus_wmi_unregister_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0xf45158e1 asus_wmi_register_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_ips 0x46809fa9 ips_link_to_i915_driver +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 0x39277d91 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x69d3633e pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x90021760 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x5ea0c063 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x9cfa4287 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xa6844186 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x51c3433b wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x73ce57c3 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x7f1f1d20 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x85662203 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x9ed6a574 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xa73b06f9 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x15f2a867 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x022dd001 cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x06bcc053 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0ff7be5f cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x102f6ef5 cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x10e6cc27 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x16d1dd47 cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2b7618a6 cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2c54af8f cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x35365195 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x394afc34 cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3f237031 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3f34113a cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x57d3daaf cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5e27fee3 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5fefd2bb cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x68059b0a cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6cdd592d cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x733d1086 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x754a225c cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7eb74035 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7f87e989 cxgbi_get_ep_param +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 0x8d5ca5a1 cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x976eb96c cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa300a575 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa43156ee cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa8d64d28 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb7cefad0 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbe4dc8f5 cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbf19cd3a cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc7afbdf1 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc9ab71d9 cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcea21b85 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcfc168fc cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd1724156 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd1f2031e cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd96f138f cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdbae9cea cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe2ae0e37 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe6ab49a0 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe9d955ed cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xec31add6 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf02a72d2 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf32e5bd9 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf777bc8c cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x24a36884 scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x24a92726 scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x26f28ff9 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 0x6b76dfdf scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x7050529b scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x8bfbc4c0 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xb5f91d0b scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x1b0c9e3d fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x1db30b51 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x3455ac0c fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x3f7f6314 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x4069fa4e fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x45422fca fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7f9d05a9 fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x858057ac fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x90343a16 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9c53832f fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb8d7a4b3 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xba0559b4 fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf3eb2343 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf777f48e __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf8254273 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf84e7340 fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x50afb021 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x58e28c1d iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x9fc75df1 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xa1eb3580 iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xb4975539 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xe9eb4167 iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x038b95a1 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0846987b iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0881805e iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0fbbe408 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1a8b105f __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x20791e7e iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x22b4b32e iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x31c058ef iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x35a10d72 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x392bce89 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3e58ca7e iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3efb5571 iscsi_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x513cea44 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x51878db4 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x528efaf1 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x53012ac8 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x570efd20 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5f35ef25 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6423af6c iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x664fe8d3 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6724efda iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x78cb0b7d iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7ae6d8f6 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8189bc58 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x81aa7d3d iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8642eb51 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8a58d794 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x943226bd iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x98a4eb53 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xac625ebe iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb969f23c iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbbfff0d4 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbce7548c iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbe5279d5 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbe9d14d3 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc3268319 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xccd5a594 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xccecd4d6 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdb968a4f iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdfe4bb69 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf134d231 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf336aec7 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf7cb6dfc iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf8177d63 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x0709e2a5 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x1331d70b iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x252fc897 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x29384932 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x2c6e9639 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x4adfd0f3 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6c6c161e iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6ccf6eef iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x827b0e88 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9434f378 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9a069d5c iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa6eac515 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb175833d iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb8bfdb84 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc456a209 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xee36208a iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf44a6fb4 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0de85a40 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1fe764cc sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2d87e13e sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x37f50e54 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4548f8a2 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4554e383 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x52fa58b7 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x54108dbb sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x58bb069d sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5aeb6673 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5e53e40c sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6fc0e000 sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x819f4ba2 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x88acd689 sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8b7ad4e4 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8ff0ce70 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x9aaedde0 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x9e3e7b06 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xaf84aa63 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb0426254 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc6d789fd sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xcad0afd2 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd9223f34 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xdfaccced sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe6a01d30 sas_change_queue_type +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x8f9ee071 srp_iu_get +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xc039006f srp_iu_put +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xca2a5f93 srp_transfer_data +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xe107f68c srp_target_free +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xe11f5d34 srp_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xf6e0420c srp_cmd_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x428e3702 scsi_tgt_queue_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x4930d663 scsi_tgt_it_nexus_create +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x8067cc2a scsi_host_put_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x9086c169 scsi_tgt_cmd_to_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xb00e0842 scsi_tgt_it_nexus_destroy +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xb4212d34 scsi_tgt_free_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xcab38a6a scsi_host_get_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xd064ba28 scsi_tgt_tsk_mgmt_request +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xe2ba5d52 scsi_tgt_alloc_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x010b9d16 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0a0784b6 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0b8ce179 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x11f564e6 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x164ad555 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x184a5697 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x18c46c15 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x23e76575 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x24870946 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4570f246 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x46193bd2 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x58dd4a42 iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x59689d96 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x59a8a979 iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x59eddfb3 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5f770d35 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x61d35306 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x65ac1a3c iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6be80c3e iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6bf5431a iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x702baa3a iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x76a3cb15 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7df55254 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8264ad76 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x83634c03 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8867b56c iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x94bb4605 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9852a7d9 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x996d1d83 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9c85c5cc iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa857fbcf iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xaa8162df iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb0422d59 iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc3a7be36 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd016c256 iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd9957340 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdbf99aef iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe05c49d6 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe1f6b2c8 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf624dce7 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x2a703158 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x8115e56f sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x9980f57c sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xfd4a980c sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x21b7ef25 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x774c461a srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x9f2990f6 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xc146dcd9 srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xf51dd3cc srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x19897e1b ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x26c365fc ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x2b03ea34 ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x68bf07e1 ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xae09ee20 ufshcd_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xbe45cbeb ufshcd_resume +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x2cff448e spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x447b7931 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xbcbe692e spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xd6e100ac spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xecab6550 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x0ea36402 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x7a448229 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xa283c39b dw_spi_xfer_done +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xd98c9f56 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xf710dc44 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x97c0e79b ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x06b04775 comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1e5888f9 comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1f710fe4 comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x22382d53 comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x22a7d781 comedi_pcmcia_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x25050f64 comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x26194133 comedi_buf_memcpy_to +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2bf46161 comedi_buf_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2c164812 comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2da92cc9 comedi_pcmcia_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3141fce0 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x399354d4 comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x47162696 comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x52c571ff comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x56ad3c0f comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5f427ac1 comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x60d82ae5 comedi_buf_memcpy_from +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6510a092 comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x720b086e comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x85a4f04d comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x882c464f comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8aca5e70 comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8ba9b883 comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8e39fed6 comedi_pcmcia_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x90690cec comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x92683a39 comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x93bbd556 comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x977ea3e5 comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9b90d906 comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9cbd8f6f comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa568cce3 comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xacf6c409 comedi_buf_get +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 0xbd93964e comedi_pcmcia_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbdbe75c6 range_unipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbe56df18 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbebbe8af comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc08e6605 comedi_pcmcia_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc3644329 comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc66338e9 comedi_error +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc7fa0176 comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd27239ab __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd6c1169e comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xde444dfa comedi_pcmcia_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe641b34d comedi_to_pcmcia_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xebf4f94d comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf09d331d comedi_dev_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf120fc36 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf2d80ff2 comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf586e8d3 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/8255 0x0558eeaf subdev_8255_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/8255 0x1551bd74 subdev_8255_init_irq +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/8255 0x5079ab98 subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x79f4a6cf addi_watchdog_reset +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x80c420d9 addi_watchdog_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x7dcd0d7d amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x9bd8c520 amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0xb075b7a4 amplc_dio200_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_fc 0x252531d8 cfc_read_array_from_buffer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_fc 0x3232253a cfc_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_fc 0x9eb317c1 cfc_write_array_to_buffer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0xa6ce1b81 das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x00749ab1 mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x04db65ac mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x0bf96d2a mite_unsetup +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x1996244c mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x1d6c43c8 mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x2952fab0 mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x2f715d5a mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x4ea98b9f mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x4f0f25f6 mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x54f3c2ee mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5725fd61 mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x6df3cff1 mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x73b32138 mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x95f68578 mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x98bd2f01 mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xa487bbee mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xaea90385 mite_setup +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xbc53e81e mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xbd650513 mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xc7acee03 mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xcc54e599 mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xcdd849b4 mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc 0x0b617089 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x1bfc788b labpc_handle_dma_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x29386a69 labpc_setup_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x331400d7 labpc_init_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x3f8e4c57 labpc_free_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xfbb66825 labpc_drain_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x4dbbd2b6 ni_tio_winsn +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x5dba6cfd ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x64ff2600 ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x91cc6cd8 ni_tio_rinsn +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x925ed018 ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xb9267334 ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xc3a4d01c ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xe08e76e6 ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x4ac4f968 ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xab1bfb5a ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xbf95fb7e ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xc584589f ni_tio_acknowledge_and_confirm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xd152b7c8 ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xe7b21296 ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x14803737 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x1bfc7f8d comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x4168dc64 comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x416d3699 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xbaca7d01 comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xc08fdbb6 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xf9cab756 comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0x2206b003 dwc2_handle_common_intr +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0x68524ae3 dwc2_hcd_remove +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0x8cad0589 dwc2_hcd_init +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0xb05a818c dwc2_set_all_params +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x1a1b5249 oslec_flush +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x2feda75b oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x3227a28e oslec_snapshot +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x7dc9dddd oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xb2c66001 oslec_create +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xc8b5a524 oslec_free +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xd370f679 oslec_update +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x2e76999f adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/rts5139/rts5139 0xbd5a0e51 rts5139_usb_ids +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x087840e3 spk_synth_immediate +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 0x2758a022 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 0x5e0867dd spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x72b8872f spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x7e1e37d3 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8fe66c8b spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xae0cb4f2 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 0xc696cdb2 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc766ae09 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc91490ae spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xcda38867 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xced1141e spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd1b551a2 spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xde7ae2e8 speakup_info +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/usbip/usbip-core 0x0449971e usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x1314cb72 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x278432e8 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x30a701d6 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x3de93624 sockfd_to_socket +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xad6999c1 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xb47db6f4 usbip_start_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xcdf13738 usbip_event_add +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xcdf92a77 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xe7e228d9 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xf18aa4fb usbip_recv +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xf7188fe0 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xfe1c2980 usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x29c147c1 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0x2d03514d uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0xa50b574e uio_unregister_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xc2847401 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xc31e042f usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x24b49019 ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x5dd87d33 ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x051161e0 usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x184c819d usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x22f91ab9 usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2709acb6 usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3a8cf45b usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3af67f9a usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3e2d058d usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4c556b57 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4d34a7f1 usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x52a6a30d usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x52f4112f usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6359b3aa usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x67f482a8 usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x70170d99 usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x75d0bd96 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x915da3fc usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x99eb8a7e usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa0a21003 usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa4856c41 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbba9e6d8 usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc0bce1da usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc7822b78 usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe002da11 usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe6f4b71b usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xebca0a01 usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf5b4741d usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf99e7dfb usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0x089d38ae gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0x13136c73 gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0x8e27d6de gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0xf1981607 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x15232b0f usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x4263cc66 usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x65b24683 usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x707294da usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x7969c0ac usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x889bbb3f usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x91a93600 udc_attach_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xc46f693c usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xe77a1f8b usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x0a5230df fsg_common_set_nluns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x141fce2a fsg_common_remove_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x1ccb58f7 fsg_common_set_num_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x2d10b6a7 fsg_common_create_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x51707c29 fsg_common_run_thread +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x6acb4179 fsg_common_set_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x7c24f12c fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x7e26d4a5 fsg_common_set_sysfs +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x99023bfc fsg_common_put +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x9a0221c7 fsg_common_free_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x9dc025a5 fsg_common_free_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xa3ddffae fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xa46e6443 fsg_common_get +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xd3ae3b65 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xd468f882 fsg_common_set_ops +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xe4d1591e fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x4a40f891 ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x9e27161d ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x4ce6132a usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x538e863e usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x73de7090 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x958481fd usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xb2cfb6b5 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xb710f4ae ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xca70a50a usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xe17486fd usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xf8b353ef usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x03491bd1 musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/tusb6010 0x3834e3a7 tusb_get_revision +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0x48064b42 usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0xbe9bc322 usb_gen_phy_init +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0xd06e3409 usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0x735be304 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x1101fb0b samsung_usbphy_set_type +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x2545f2a0 samsung_usbphy_set_isolation_4210 +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x2d4dcd7e samsung_usbphy_rate_to_clksel_64xx +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x2f0b29a2 samsung_usbphy_rate_to_clksel_4x12 +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x48dea09c samsung_usbphy_cfg_sel +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x5e5f92fe samsung_usbphy_parse_dt +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0xe336f4a0 samsung_usbphy_get_refclk_freq +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0xb67ed798 usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0985afb5 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0a202f45 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0bcc0d7f usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2a24210d usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2ee04000 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x45e4d642 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4c2c95a8 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x56f39a22 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5864ee96 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x725de703 usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7bbe4035 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x81b82274 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x848c2c9d usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x85c98a1b usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb7ddb9f6 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xbd331088 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xbde7ee72 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd5e5ddae usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd819e104 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xdfe4f7bb usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xee5e8eb5 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x01087d37 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x090a33d3 usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x09794a3d usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x15780c73 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1ad92ee0 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1b1f6952 usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1f3c54ae usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2cb46738 fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x33aabbc7 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x35aaa51d usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3be3d7ae usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x72159a78 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7c86293a usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8a47874e usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8bfb3d3d usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8f46a49d usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9df0cea5 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc48cf23e usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xce9edf5c usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd9d4bff3 usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe1f8c36a usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xfeb1c804 usb_stor_bulk_transfer_buf +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 0x486cdaf4 rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x55a97a1e wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xaa4891c1 wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xb9eace14 wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xc9414410 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xda7aa5e2 __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x09932176 wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x4fa9d3da __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x5165f226 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x5b667dfc wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x610212ec wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x72a59ba3 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x8dfa1baa wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x9680ef6f wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x97d47db6 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xab2ddefb wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xcaffacb0 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xe2f3cc8a wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xec23921f wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf7b28728 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x4b6e84d3 i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x4f90e0d3 i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x593ba987 i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x0cbaec7c umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x55372c42 umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x7e6c68f6 __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x85836706 umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xad6e5743 umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xb7c7b10d umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xc6546288 umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xc900fdf6 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x04791897 uwb_rc_rm +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 0x10c9b8ee uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x20a0053b uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2a41c930 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2a709bfe uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2ad449a4 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x313a681c uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4c5bef70 uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x51b9496a uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x55ef183b uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x57ec92b1 uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e179951 uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5f1878ab uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5ff28d6d uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x63d5661a uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x69ce1da6 uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7ad6f459 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7f3ee631 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x816b9e92 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x873e6ec1 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x87d0ab12 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8ea92f8d uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8f8d9974 uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98ae8e6b uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9a2cede4 uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa74a6b1c uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xac97316b uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb0845707 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb5173fe7 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb9dfeb3e uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbeab0fe3 uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbf49c6ea uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xcf22f02e __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd2b0ea9f uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdea238f3 uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe55ba0dd uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xef588287 uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf1a9550f uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfcfb59b2 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/whci 0x64aa161f whci_wait_for +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x18379877 vfio_del_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x520b4aab 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 0x9fd3a299 vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc4913442 vfio_group_put_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xcb1228c8 vfio_device_get_from_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xe20f0194 vfio_add_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xe67aef87 vfio_group_get_external_user +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x099fc287 vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x09f2f589 vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0b1d48ab vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0b32c1c9 vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0b6d240c vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x19baa9d3 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1c475887 vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2ef0b86f vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x359e2be3 vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x396942c7 vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x39938516 vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3ce2be44 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5e3b057f vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x61d1cfb3 vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x663141e7 vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x72a9a9d5 vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7365ce66 vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7d0cc471 vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x85aa2c05 vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8ac552ed vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa1dcbcf2 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa866df69 vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xaf626c9a vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xbf67e8a7 vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc7b6de95 vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xcbf5a181 vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd33c5040 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xdc8ec44b vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf342cb8e vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf8486362 vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x3dd4e3aa auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x4c3c605c auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x53eaccc9 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x669472de auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x85486ea6 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xacd64d8b auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xc59598dc auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xcf97ec02 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xdd871ebb auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xf1cc5186 auok190x_send_command +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 0x2c6a84d2 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x5fa39f35 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x6653d281 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x91da101e ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xcaaf56d2 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xd9d4fb9d ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xf01bc75c ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/fb_ddc 0xfbf2a058 fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0x6e744a8c fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0xfb2b1853 fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0x9455fd06 sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0xb8a824f8 sis_free_new +EXPORT_SYMBOL_GPL drivers/video/vermilion/vmlfb 0x016e6c20 vmlfb_unregister_subsys +EXPORT_SYMBOL_GPL drivers/video/vermilion/vmlfb 0x90c018c6 vmlfb_register_subsys +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0x22a7af24 viafb_dma_copy_out_sg +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0x292da7a2 viafb_irq_enable +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0x30cc9311 viafb_request_dma +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0x31469540 viafb_pm_unregister +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0x3f97c855 viafb_find_i2c_adapter +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0x79e6190a viafb_irq_disable +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0xb4f863e6 viafb_pm_register +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0xcaefb732 viafb_release_dma +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0xfff2dfd2 viafb_gpio_lookup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x0c34cc29 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x2a422509 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x54be33fa w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x552efcca w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x6c200855 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x836d3276 w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x876fecbd w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0xcafddd1d w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xe8fe2a57 w1_write_block +EXPORT_SYMBOL_GPL drivers/xen/xen-privcmd 0xd29b318d xen_privcmd_fops +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x2b573f2e dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x894563f9 dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x99266dda dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x0a76965d lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x54bee3a2 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x6e721ff1 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x73ea3c15 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x78dae3b0 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x81084bf8 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x87063ff2 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x9a650824 locks_in_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xf716975b locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x004bf0ae nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x05f76042 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x08a4cac2 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0b1b11c3 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0f961bd6 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x152d6c98 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x15c662db get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x19d5356c nfs_setlease +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1a7364d2 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1ef97e19 nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1f065625 nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1f259edf nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x207cde2d nfs_put_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x227f2ce4 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26123b4f put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26b3da26 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x28ccecbe nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2dceb7a4 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2e0f8a84 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2ed33ec6 nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x30c292a1 nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x33f277e4 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x382c5747 nfs_generic_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x383a7d55 nfs_generic_pagein +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x390425fb nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39680247 nfs_alloc_server +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 0x3d32ec7a nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3df83d33 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3e056674 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f668dea nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40708adb nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f7f4ab nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4893426e nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x48f3e05a nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4ab02a49 nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4ad3ad23 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4c51f3f7 nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4ed10052 nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51bd3342 nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5258c2f0 nfs_readhdr_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5270ab14 nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x54a0789e nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x550ad8e0 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5586b43c nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x593833ac nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x59a2cb04 nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5a15304e nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5db151d3 nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x61901e4b nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6216838c nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x62f7820d nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6566a378 nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x65eb2b27 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x65f64216 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x689c3f03 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6953bdf7 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x69e0ba05 nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6b6ac222 nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6e8b7775 nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6ed532d9 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x77c2bab3 nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7826361a nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7a29a7a1 nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7b391ece nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c4cff5b nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c9722ba nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x835af4b3 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8438493f nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x846f7ba2 nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x870fe8a8 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x88a4be00 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x89bc5a64 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8a504d06 nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8a80c9cc nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8cbdb2ba nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8d3bfe18 nfs_writehdr_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8dc945b7 nfs_file_splice_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8e5a9068 nfs_writedata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x97a66e71 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9cacd54c nfs_pageio_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9efe30fd nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa4004720 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa56844b9 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa696c214 nfs_readdata_release +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 0xab6ec43b nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xacab7568 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb1f1792e nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb20ec191 nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb41f7bfb nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb5dc5735 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb5fadcaa nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb6c7899c nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbad98eea nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbd3a1018 nfs_initiate_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbdfd4898 nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbee0cb7c nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbf4998c6 nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbf8e6f33 nfs_readhdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbfbad38c nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc04b6645 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc2cdefd2 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5eba627 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc8e938b2 nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd0423834 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd08e78b8 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd8f3ecff nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd94aa29e nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd9b6bfd1 nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xda382a4d nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdafd3361 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdb69db94 nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdc54133a nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdd72233b nfs_pageio_add_request +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdd96d4fb nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdebfc10f nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe02cbeab nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe0c086ff nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe29c6a9d nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe2da6cc4 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe3469ffc nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe7b5e095 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xef40187b nfs_writehdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf11282c8 nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf2e7306c nfs_initiate_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf4e45538 nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf52e69ac nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf5a4e91c nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf5b931c0 nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7ee006 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfd15010e nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x05d8ec4f pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x06c36816 __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1c3ae098 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x30bd5ddc nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3dfe6fe3 __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x457bd0a0 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x463f9ff2 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x471de0a9 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4811770e nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x49fda54c pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x503e6958 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x51e1e2dc pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x52e6bc11 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x582105a3 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5e732420 pnfs_readhdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69659c52 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x744977e8 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x79c3bf5f pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7e99fb6a pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83d7ea5c nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8731e5bd nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8c64b3a2 nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x901ccb17 nfs4_proc_getdevicelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x98eef5fb pnfs_writehdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa53b3639 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa71a8ada nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb6e32e5f nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbcb89d4f nfs4_insert_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc08ee98a nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc2d7cdea pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xced98e74 nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xceee6527 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd9d47289 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdb60ea5a _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdcdef1e0 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe4754e2c pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe98ef209 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xeedcd065 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf183b7c8 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf186b27f pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf4326c95 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfab25cde pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x2bf56f0a nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xac89d1e0 nfsacl_encode +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 0x43cb4c29 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x48147b38 o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4c66db05 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 0x898fe635 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa82a8645 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xaa4f684d o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xae9cbeca o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbaeb4700 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbc0510cf o2hb_unregister_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 0x003b7d20 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x40c55818 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x48f0abc6 dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7e9e6ece dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x9c9f4850 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 0xf505f7a1 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x025e2d69 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0402f7d4 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0562c415 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x16b2e575 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x5469ce31 ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x67d89712 ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x7083dbd5 ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x7f2787d4 ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x89502fe7 ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xb4bd060c ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xdc823ea4 ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe2bd47db ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe417d940 ocfs2_dlm_lvb +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 0xec58da51 notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xf9478fb2 notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x1803a6ed raid6_2data_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xe4b051cf raid6_datap_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xfdfcb8cb 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/802/garp 0x1d4a4ec0 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0x5217bcd1 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0x5a95b8d9 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x7c70801a garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x897d3b8e garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0xf88b7308 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x377ecfe2 mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0x8cb87388 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x8fe32a2b mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0xa21841a0 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xab64d09d mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0xd92c1590 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/stp 0xaae39106 stp_proto_unregister +EXPORT_SYMBOL_GPL net/802/stp 0xbe931309 stp_proto_register +EXPORT_SYMBOL_GPL net/9p/9pnet 0x12eb9af9 p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/9p/9pnet 0x519ddb6e 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 0xc8d8375b ax25_register_pid +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x38eb4380 bt_debugfs +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0b4d4d06 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1c3537eb dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1e1a88a9 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1f24b8f4 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1fec5df7 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2bb0abb1 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2d125568 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x32794faf inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x34007846 compat_dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x343d6c4e dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x373d588b dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3b42ead9 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3d7221bc dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x40232027 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x413e2897 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4dc447f3 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4eae3ef7 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5d0a56d6 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x81e16844 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8b7a919d compat_dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa31a21e9 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa4b4ab17 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa8ffc75a dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb1987431 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb79c8a09 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbb190d9e dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc2e974c5 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd122e095 dccp_insert_option_elapsed_time +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd1a629d0 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd2f4a023 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd58642f6 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe2c92f96 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe3691b9d dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xebd97167 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0xee58553f dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xee962c90 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf3017e21 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0xffdd1633 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x28e119ec dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x4071182c dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x5fb9e775 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x6a87f10a dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xc6257766 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xfd09f176 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x2de7037e register_switch_driver +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x8021d6a8 unregister_switch_driver +EXPORT_SYMBOL_GPL net/ipv4/gre 0x21a3df23 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x63218d35 gre_build_header +EXPORT_SYMBOL_GPL net/ipv4/gre 0x7cce7800 gre_cisco_unregister +EXPORT_SYMBOL_GPL net/ipv4/gre 0xd60fd1e2 gre_cisco_register +EXPORT_SYMBOL_GPL net/ipv4/gre 0xfc2821b4 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x1e2c5f30 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x3f254d9c inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x474d86b4 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x7aed75e5 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x9f4c5ca1 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xb839bbac inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x23549279 ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x4f72a3c2 ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x52402b25 ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x6f36a098 ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x845e9fdf ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x9518f7b0 ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x972e8b17 ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xa1349473 ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xb31088ee ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xb95e7958 ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xc94db80a ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xca6ba8bd ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf57972a0 ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf91a741e ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x8b956da0 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0xbc645407 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0x6d40a921 need_ipv4_conntrack +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x44c57b85 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x1948ab6e tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x27b9dcfd tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x3769e03e tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x58751b1d tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x9b60ce94 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/xfrm4_mode_tunnel 0x44b8a987 xfrm4_mode_tunnel_input_deregister +EXPORT_SYMBOL_GPL net/ipv4/xfrm4_mode_tunnel 0xf6ba4ae7 xfrm4_mode_tunnel_input_register +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x0c42f862 ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x255b3103 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xc2c0f023 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xc7a3bad8 ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xce39ce6f ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0xfa600d63 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 0x07b21dc0 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/xfrm6_mode_tunnel 0x33a3c6c2 xfrm6_mode_tunnel_input_deregister +EXPORT_SYMBOL_GPL net/ipv6/xfrm6_mode_tunnel 0xc50829b6 xfrm6_mode_tunnel_input_register +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x00441ddd l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0d3af68a l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0e222312 l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x13aa2516 __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x18e5e240 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x1a3cfe29 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x30ac298f l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3c2df382 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3f8c3969 l2tp_tunnel_sock_lookup +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x74dfef5b l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x81c486db l2tp_tunnel_sock_put +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x8fbdfdf3 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xab3169a1 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xb1003448 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd1961fc4 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf44bc004 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xfc4efac1 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x900ee800 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1c839163 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3082fba1 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3663a36d ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3859d76b ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x4bf42798 ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5d38f601 ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8863d05a ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8f971636 ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x92c201b1 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x990b7c2f ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xa5be914b ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xa5edabc1 ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xaccc88aa ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xae431c0e ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xdf1272e4 ieee80211_iterate_active_interfaces +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x0047e5b4 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x01a2d981 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x42466140 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x4cef592b ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x5d6247af ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x876306ac ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x99c29ad3 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 0xa0615000 ip_set_name_byindex +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 0xb120fa34 ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc5c043d2 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd6d1fd23 ip_set_nfnl_get +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xda497730 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xdc5834ac ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xdc83e90c ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe5becb3c ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xef13ebbe ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf3b4d4ae ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf9da3141 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x06c7f906 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x0abc220f unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x0eb45a1f ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xa3b7e0de register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x01f84db5 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0446218d nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x05890acc nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x05e5f251 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x09f915ba nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0dd00e40 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0f6cf8eb nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x110577d9 __nf_conntrack_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x14d8fa16 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1c8d96ae nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x24c432bb nf_ct_l3proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2a1002d3 nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2ce1b005 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x318fc081 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x32379380 nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x32e3e54f nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x354e5283 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3873ae26 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x38861bd3 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x396f4e85 __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 0x49b2ae79 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4bb7733e nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4c3dfe91 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x509a7c16 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x50afca68 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5108c380 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x52fa4439 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x54d40329 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x58c7e4bf nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5e735650 nf_conntrack_flush_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5f435b97 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6001b587 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x64efe8e0 nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x66a66e28 nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x67b19b0c nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6a0a828a nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6a3c5381 nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6a470d51 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6a7c2c11 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6ed2b115 nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x718ddc34 nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x74ac4ace 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 0x7db6befc nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7ef4d00f nf_nat_seq_adjust_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x80533cdf nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x88c4fd02 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8da33b63 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8f7c5dfe nf_ct_timeout_put_hook +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 0x96d36375 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x97880aac nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9f262e0d nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa3c37eaa nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa4e501f7 nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa97a497e nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xac9db8b3 nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb06fd8cb nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb365062e __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb778b5af nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc0cd71bf nf_conntrack_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc0e36f28 nf_conntrack_tmpl_insert +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 0xc845ac55 nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc916fc14 nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcaa91f22 nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd5a96fb3 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd6b0d681 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd702f6b0 nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdecfbd57 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe24a9653 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe486b403 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xef7d64fc __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf384d82d nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf4183d0f nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf68a602f nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf842f2ed nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf9df8064 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfa75c56b nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfc96cbf2 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfcf2e635 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfdd2917b nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xff13b858 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0xd114d3de nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x99e73316 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x47c8ccb1 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x12bd9658 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x33db69c6 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x3b2577d1 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x69d0bb76 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x73f5f62c get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x846c8f15 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x8503300d nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x90632d01 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x9b51dc71 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xa974268d nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x0bcc72fe nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x0fe5508b nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xcbb9b301 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xd3557e01 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xe43df69a nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x03eb19f5 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x1fd9e2a7 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x3f36b285 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x94371624 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xa42cb11b ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xb788df32 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xdbead16e ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xf03d65d4 nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xf1814943 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x4da9b52f nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x52d500f3 nf_nat_tftp_hook +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 0x27aaf87e nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x4ec72ec9 nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x696118d4 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x6f16bd69 nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x832a2ff0 nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xac6ce08e __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xc44fc224 nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xdd36006c nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x11a006b5 synproxy_check_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x8841d39b synproxy_build_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x90298227 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x923f4120 synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb42e336a synproxy_options_size +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xbf696cf8 synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xef7db50c synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0fda3c99 nft_validate_output_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e7ee14f nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1f319767 nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x30c38c03 nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x38cb0bbb nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3d49dab7 nft_validate_input_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x588724f2 nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5b675156 nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x7346f5b3 nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x752ffa8d nft_do_chain_pktinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x869c5e1a nft_validate_data_load +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x8ea0b03b nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc6bcdd3d nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcf85681f nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xfacb3f70 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x23836366 nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x252aa8b9 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x45ff03d7 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x6a7ae6a0 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x6c4301cf nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xb5db8da8 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xcfb6d986 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x2cf618e9 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0xa9d3056d nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x0a8f56c1 xt_compat_target_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1586e770 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x161d1417 xt_compat_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x24c8e482 xt_copy_counters_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x26dc02da xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2fb2865f xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x3117513f xt_compat_match_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x37f33b99 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x489cfc42 xt_compat_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5f82f1f7 xt_compat_flush_offsets +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x64816323 xt_compat_match_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x691a6d69 xt_compat_calc_jump +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7f775fc3 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8e2f4ed4 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9e1515c2 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa6507dfc xt_compat_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xae97ac72 xt_compat_target_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xb2372231 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xb5cb8ddd xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc003d604 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc1f4f1a7 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd560ae83 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 0xfedf204a xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x132318ac xt_rateest_lookup +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xd7e1b517 xt_rateest_put +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xa94b0a54 nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xb79e07a0 nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xf1615592 nci_spi_read +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x0bef4936 rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x0d5a5a2f rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x157a33da rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0x2c1e2ede rds_trans_unregister +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 0x33996416 rds_message_unmapped +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 0x5b9e0e3a rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x6e633ebe rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x6ffaaddd rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x7bc62829 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x862fd2d8 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x87c41548 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x8b763839 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x8d962f06 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x9a50bcb5 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x9fdb3acb rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0xa2272301 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0xab4ba891 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0xb211bfc2 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0xb7d58ee6 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc48b93b0 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0xcc7a3008 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xd5603d6b rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0xee429a07 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0xf371fff1 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x24eb28fa rxrpc_register_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xeb003b37 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 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x9e9af345 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 0xd31b6f36 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 0xff64f15d svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x005d9812 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0064a3b3 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x02f14a14 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x038913c2 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0532dcda xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05c4225e rpcauth_init_cred +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 0x07a66d4d svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0a54ca8a rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0df004f5 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0ff09032 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1089d36e xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1098159d rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x124f25d8 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x133b2268 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1456a3fe xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x192a0e3e rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1a8a95e3 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ac17d1f xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d53c0cf rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ddc5c51 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e157307 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f2a9970 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f5c36d9 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x205dcdf4 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x208d4d37 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x20c05f6b xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x28bfbf7e rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2999381a sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2a027081 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2b98e4fe rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2c4ab49e xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2fb279a3 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x30d787fd svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31065570 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31908c63 rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x353ae34b rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3551c7f8 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3652f56b xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3892b17e svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x389eb99b cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x38ced10c svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3be84656 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c34b40e rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3e06ef2f svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3e2b972e cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f2b748d svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x402e41e1 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x40305d88 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x40b46535 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x40d4e004 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x414b8321 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x41eebac0 rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x43685f1a xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x46d4e1ab xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x47ce771c svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x489216d7 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x48b36b24 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x49565776 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4a6a503d xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b3372d3 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d08dc74 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d3d7c07 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d84a7a1 rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5178a0a6 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x526a718d rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x577c2556 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x586551c3 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b7c3c3d rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5f2c820d svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x607559af rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x630d6460 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x63558049 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x63e4b115 rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x64356cf7 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x64ae2edb sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x64b078c7 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x66ec30b5 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x67f92958 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x69735ffd rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a83d909 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6ae93866 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6c54ba0e xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6cc8be9c xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6f9b2029 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x70d013b2 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7271b4f4 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x73b66540 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7488c7ed rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77dbb542 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x79b609fb put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x79fd4a6d svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a36ddbd rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7b215d68 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7b6a6328 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7b6c7213 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c659037 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7cdaed3e rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f515650 xs_swapper +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7fc0fb60 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x811992c0 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8182bc7f rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83e456ce rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x85a30da6 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8806b703 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x88c9a3be xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8937bc4d xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8b08d904 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d046288 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x91cd9180 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x945bfbca rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9472d218 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x949f40af csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x961ef826 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x995f84be rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x99b0bea9 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x99fbdd7b svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a07242b rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9bec087e svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c72d4b4 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e002961 rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e1e87be xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9edba9e5 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9f7cb2db xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa22345f2 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa2701520 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa29f8cb9 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa42f3daa xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6026ce8 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa64a6bc2 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa7f04d23 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa96dadee rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9d83194 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xabba32fd svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb1bf5368 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb300c943 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb31cee70 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb40aeb5b rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb76e8754 gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb85ca6a3 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9c7e9d6 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9ce061b rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbc13f838 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbcd4af88 rpc_run_task +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 0xc13f7296 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc1cbb771 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc361676b sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc4e13e80 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc6c720e5 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc83dcd06 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcaf1dc03 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcc5576f1 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcd0dc55b xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcda24fbf xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd05b4e39 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd14fd5ca rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd15e7dee svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd20aef70 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd2587fc5 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd648e891 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd795229e svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd969a08a rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd9cf26e5 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdaa3bb3e xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xde1e1914 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdf50b73f sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe064e7f3 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe0db0487 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe323477a svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe3fd9786 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe6d23e93 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe7aa1c84 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe81726a3 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe93ae40d rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe94c75ae rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xea349175 rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xea8869a8 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee2b858e rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee31771e xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf20b1870 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf45bc564 rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf4c29532 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf627e13b rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfbe5623c rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfc2039b0 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfc59f409 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe09e887 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe783f17 svc_prepare_thread +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 0x3bf5eb8b vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x466dc50b vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x54689224 vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x59ca616b vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x59d943c8 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x6cb044c6 vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x6e288f73 __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 0x970b77bc vsock_pending_work +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xb42676e6 vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbfe70443 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd1f54d5f __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xdb45101e vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe45e1fdc vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe87b49ab vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe96ffe13 vsock_add_pending +EXPORT_SYMBOL_GPL net/wimax/wimax 0x22b1391e wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x2a8b6c79 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x38ff44ac wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x3c433c34 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x68d3b91f wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x8868abe8 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0xa0e9fa1d wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0xbe880e42 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc8743b4d wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc971479a wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xd8757cb7 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0xe7529f3b wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0xee1db955 wimax_dev_init +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x06464077 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x72b556df cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x8852d58c cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x99af8356 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x9c10553e cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xca37d178 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xcb51ac2b cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xcdef4f76 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd47a09f0 cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xe38b4cb3 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xfa4dd8a4 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00778770 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x056bb269 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0a575945 xfrm_count_pfkey_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0b9e5852 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x74e1a843 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7c30b8c7 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x92dbc6c1 xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xbc8b0f41 xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xce7a55c1 xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xe122af95 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x95da166d ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x965bfc23 ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xd307c214 ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xfb1ef1f8 ipcomp_input +EXPORT_SYMBOL_GPL sound/core/snd 0x28fa1a5e snd_kctl_jack_new +EXPORT_SYMBOL_GPL sound/core/snd 0x3ca17104 __snd_printk +EXPORT_SYMBOL_GPL sound/core/snd 0x5c0563ab snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd 0xab43a905 snd_kctl_jack_report +EXPORT_SYMBOL_GPL sound/core/snd 0xef3aeab9 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0xf837fe0d snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x79f0528c snd_compress_deregister +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xe0bbf529 snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xe624abad 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 0x5765d2d2 snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x82cc09fb snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x0f8102f8 snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x330f4e8c snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xb25fb4b4 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xb6d9a30d snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xcc6142ad snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xcf88eb33 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x01c40142 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x05896980 snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0676f5ac snd_hda_get_input_pin_attr +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x06cbf2de snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x06f31b4d snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x07e908f3 snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0b59b412 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x11a42ff3 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x11ac5acb snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x14e1aa62 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1638585b snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x16550ac0 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x188c10ef snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2222c9ee snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x24904b24 snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x24c9f48a snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x24ffc0d9 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2504adda __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x26ff4dc4 snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x27fd9ccb snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x280d5c88 snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2a776fd2 snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2aee76e1 snd_hda_check_board_codec_sid_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2b5cf7db snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2b8b3460 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2ce068ef snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2eed28cf snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2eef3001 snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x31074640 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x31a00c42 snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x31acffc9 snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x348fbfcd snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x357d8868 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3cb3337e snd_hda_query_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3ec6f63d snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3eed9191 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x40ade4fc snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x437fcd0f snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4503109d snd_hda_ch_mode_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x46ba1a1a __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4c6e8d15 snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4c95a580 snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4ceabb67 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4dab1f60 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4e9b54fa snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4ede737c snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4fa83ec4 snd_hda_ch_mode_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5524b334 snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x55329c2d snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x563d1692 snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x571dbbc6 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5974c62c snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5a70d03c snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x613627dd snd_hda_queue_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x64322215 snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x65268812 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x678f243e snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6a531178 snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6e5a2014 snd_hda_codec_update_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6e68856d snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6f19af83 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6f2e5fb1 snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6f503af1 snd_hda_codec_flush_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x76dc6871 hda_main_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x77048d06 snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x777ef8ae snd_hda_gen_spec_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7a587836 snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7bb9e76f snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7bebc624 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7d92dab3 snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7ff68a42 snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x859c14ea snd_hda_parse_generic_codec +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x86701a23 snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x86aa677b snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x871a6e44 hda_extra_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8829e658 snd_hda_is_supported_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8ba427b2 snd_hda_delete_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8c0cfa3b snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8d96cb76 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e4c6826 snd_hda_calc_stream_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e70e78d snd_hda_codec_resume_amp +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9049f6bf snd_hda_query_supported_pcm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x90adf30d snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9262fa00 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9494ab33 snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x94e4d875 snd_hda_bus_reboot_notify +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9528a2d7 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x990b7f71 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a10b81d snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9e19c3ec snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9e27905e query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa03c85f8 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa208fabc snd_hda_sequence_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2827d76 snd_hda_get_jack_location +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa3590777 snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa40415f8 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa4650cff snd_hda_bus_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa4a5f492 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa877dad6 snd_hda_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa931f968 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaa72de02 snd_hda_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xac5bcabc snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xace39150 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xae949947 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb076fea1 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb0c4451c snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb2315f3d snd_hda_codec_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb369dd85 snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb44ab362 snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb524f45e snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb8438b1a snd_hda_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb979d020 snd_hda_jack_tbl_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xba8ef49b snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbbdcecf9 snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc075c84e snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc0edc3bc snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc1071831 snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc16b51c9 snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc1742735 snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc4020b40 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc4434138 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc5434c37 snd_hda_codec_update_widgets +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 0xcc9a86a4 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xccba6295 snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xccff39eb snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcd796cb6 snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xce4b4b1c snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcf8e3f34 snd_hda_suspend +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcfbef36b snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd07255c3 snd_hda_get_sub_nodes +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd284a80e snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xda3027e0 snd_hda_override_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdaa9a67f snd_hda_codec_amp_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdb70a35d snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdd398d88 snd_hda_ch_mode_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xddf57926 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xde7fa478 snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe2c3c8d3 snd_hda_resume +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe336d924 snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe366f133 snd_hda_check_board_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe5c473a4 snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe6aaa4a5 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe8d603b0 snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xebd84fd6 snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeee2d2b9 snd_hda_codec_resume_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xef5dee6b snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf0e3c6ec snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf1eaf90c snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf308c2c2 snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf3b0e34a snd_hda_add_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf3c8473d snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf5286109 snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf79e594e snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf9583899 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfd085b0b snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfe1bb7dd is_jack_detectable +EXPORT_SYMBOL_GPL sound/soc/atmel/snd-soc-atmel-pcm 0x42a068e4 atmel_pcm_new +EXPORT_SYMBOL_GPL sound/soc/atmel/snd-soc-atmel-pcm 0x56845a19 atmel_pcm_mmap +EXPORT_SYMBOL_GPL sound/soc/atmel/snd-soc-atmel-pcm 0x931b485c atmel_pcm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00b044d9 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x01d7da25 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0211117a dapm_reg_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x04d67dd4 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0503c0d7 snd_soc_cache_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x06dceffb snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0fcc2884 snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1047a84b snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x10c82539 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1451c418 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1623c1a2 dapm_mark_io_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x16cc86fc snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x207bc16f snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x20fcf182 snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x221bf74b snd_soc_info_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x23181699 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x251e1087 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2bc39930 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2ca05cf1 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2d4928f6 snd_soc_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x35fdb1b9 dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3615c7c8 snd_soc_update_bits_locked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x39ff3a76 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3a644c38 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3c890a13 snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3d02c280 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3e612f12 snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3ee31b75 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3fd40370 snd_soc_lookup_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4150fde3 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x44518b75 snd_soc_codec_volatile_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x44cd876a snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x47b02cf4 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x480e2169 devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x484f64f8 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4897df5c snd_soc_codec_writable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x49da408f snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4b716ea9 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4bb97ef6 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4cfcbeaa snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4f70beda snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4f72f0bc snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4fbca9d0 snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x56d784f4 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5789474c snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x58919793 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5dc36e0e snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5ecde7a3 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x60049986 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x62231931 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x67b933ac snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6adf81d0 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6df1bf44 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6e602a22 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6ed05c7a snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7203c7dc snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x73dfae6c snd_soc_codec_set_cache_io +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7493091a snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x76626feb snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x77fda633 dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x78ba65b1 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x78eeab18 snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x796e3274 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7a6f1b87 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7b0e2f78 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e716a8b snd_soc_dapm_put_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x82a87924 soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x84077821 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x862ba70b snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x876f8836 snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x889334ed snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x89cd5f8d snd_soc_cache_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x908fd6d9 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x910a960d snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x924ae12c snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x93d92e36 snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x95212696 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x96fae884 snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x973ab435 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x994f397c snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9a5483d7 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9ab9bb8d snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9b2f2c91 snd_soc_codec_readable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9b9a21cc snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9bab310d snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9d3e59ad snd_soc_add_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9fea47fe snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa0b46633 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa1b483ac snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa94f9786 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa9d88ae6 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa9fe687e snd_soc_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaa297da2 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaaf0d063 snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xad0556a4 snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb37d9ff7 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb3b19966 snd_soc_put_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb7724442 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb865fa95 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb8dea758 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb9e15d81 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb9fa9a01 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xba94a308 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbac43eb1 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbde33db2 snd_soc_cache_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbe842071 snd_soc_dapm_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbf67fc7c snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbfd87bea snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc066ad9a dapm_mark_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc69f0882 snd_soc_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc6c236c2 snd_soc_dapm_get_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc891a0a7 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc9088d13 snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xca044b42 snd_soc_remove_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcc46b928 snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xccd2c8ab snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xccd620cb snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xce5385c6 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcf66466a snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcfa61048 snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd0ca587a snd_soc_dapm_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd481d4a7 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdb5dbc8e snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdbffd65e snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdd7e699f snd_soc_dapm_kcontrol_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe2569703 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe2621345 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe29952e5 snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe29c6bee snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe6d302c7 devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf136e471 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf7fc1581 snd_soc_get_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfb96934f snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfc932bbf snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xff200cc0 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xff4614dd snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xffe6f57d snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL ubuntu/i915/i915_bdw 0x118a3f6e i915_bdw_gpu_busy +EXPORT_SYMBOL_GPL ubuntu/i915/i915_bdw 0x34af3be3 i915_bdw_release_power_well +EXPORT_SYMBOL_GPL ubuntu/i915/i915_bdw 0x7381c75a i915_bdw_read_mch_val +EXPORT_SYMBOL_GPL ubuntu/i915/i915_bdw 0x8993eade i915_bdw_request_power_well +EXPORT_SYMBOL_GPL ubuntu/i915/i915_bdw 0x8b28f943 i915_bdw_get_cdclk_freq +EXPORT_SYMBOL_GPL ubuntu/i915/i915_bdw 0x96d7119d i915_bdw_gpu_raise +EXPORT_SYMBOL_GPL ubuntu/i915/i915_bdw 0xa17bc3aa i915_bdw_gpu_turbo_disable +EXPORT_SYMBOL_GPL ubuntu/i915/i915_bdw 0xde54f019 i915_bdw_gpu_lower +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x00000000 compat_alloc_user_space +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x00000000 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sigset_from_compat +EXPORT_SYMBOL_GPL vmlinux 0x00000000 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x000499ff get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x002bebb1 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x0034f3b6 xen_has_pv_nic_devices +EXPORT_SYMBOL_GPL vmlinux 0x006bc072 hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0070ef14 __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x008bfb86 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x0097d126 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x00ba6c4b thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x00c4dc87 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x00c55d98 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x00cba415 devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x01124a85 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x011edc0b vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x011f002a crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x0130d5ab sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x013853ea rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x013a8a82 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x01848a8e local_apic_timer_c2_ok +EXPORT_SYMBOL_GPL vmlinux 0x01a76692 rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0x01cf0cf7 acpi_subsys_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x01d53c96 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x01d5bf93 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x01dfd836 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x01e14620 __scsi_get_command +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01e720b7 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0x0218f32c crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x02448233 wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x0249c02e xen_swiotlb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x025e3b8e inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x026211e2 memory_failure_queue +EXPORT_SYMBOL_GPL vmlinux 0x02a798eb spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x02b3507f pskb_put +EXPORT_SYMBOL_GPL vmlinux 0x02c7cf82 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x02ff023a regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x032742d1 xen_swiotlb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x0334ec6f jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x035d5355 get_device +EXPORT_SYMBOL_GPL vmlinux 0x03605dfb netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x038010f5 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x03bf1d5e gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x03dd0962 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03eca9a1 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x03fbf99a ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x041a9b33 tpm_show_temp_deactivated +EXPORT_SYMBOL_GPL vmlinux 0x04486e88 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x045115cd gpiochip_remove_pin_ranges +EXPORT_SYMBOL_GPL vmlinux 0x0451b434 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x04848129 irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0x04852c24 get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0x04a7c595 iommu_iova_to_phys +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 0x051431e3 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x05307199 xen_swiotlb_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0x053494cb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0x053f1b4d clk_register +EXPORT_SYMBOL_GPL vmlinux 0x05467655 ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x0556b461 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x058f3923 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x05b70fa5 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x05c7cf16 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x05d85fcc subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x05e913b1 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x05f97349 serial8250_tx_dma +EXPORT_SYMBOL_GPL vmlinux 0x060d1064 set_memory_ro +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x062cb722 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x062fc169 xen_hvm_resume_frames +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x0662bd27 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0x06b1cf0d tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x06b34df7 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x06c99bd3 __clk_register +EXPORT_SYMBOL_GPL vmlinux 0x06cdbe88 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x06d549e6 pinctrl_free_gpio +EXPORT_SYMBOL_GPL vmlinux 0x06ffd847 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x070de631 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x0710903d crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x0739ec7e inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x075ddff4 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x076e1088 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x07761de0 xen_swiotlb_set_dma_mask +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07b8e04d sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x07cc3453 acpi_subsys_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x07cd5cc4 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x07f8f09f usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0x07f9a414 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07fb9f60 extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x07fc478e acpi_dev_resource_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x08076733 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x08451718 regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x0876cd7d ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x0879c83c dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x0889f9b8 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x088bfa7e cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x0899ac6f acpi_dma_request_slave_chan_by_name +EXPORT_SYMBOL_GPL vmlinux 0x08a2981f setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x08bc0870 compat_put_timespec +EXPORT_SYMBOL_GPL vmlinux 0x08f789aa led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x08ff89cd ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x090fee6c dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x094313d7 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x09469482 kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x094e208b blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x097ec9c0 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x098f195b regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x09a0b11b devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0x09a5f73c regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x09a84cd6 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x09c12f19 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x09c1855d nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0x09c6ffe7 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x09f461e2 pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x0a05f96d fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x0a3d6e64 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0a72fa9e kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x0a9fd3c5 gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x0aa21bac aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x0abb29a0 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x0acce1b0 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x0ad04e9c get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b26e9a3 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x0b44892e fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x0b52e502 apei_resources_add +EXPORT_SYMBOL_GPL vmlinux 0x0b7b9554 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0b8ac14e xen_find_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x0bae62b1 ktime_get_monotonic_offset +EXPORT_SYMBOL_GPL vmlinux 0x0bd06371 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x0be8cb31 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0bfa4057 __put_net +EXPORT_SYMBOL_GPL vmlinux 0x0c025942 spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x0c0bd2e3 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c2e9975 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x0c44d203 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x0c66ea25 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x0c805f93 clflush_cache_range +EXPORT_SYMBOL_GPL vmlinux 0x0c80e3fe efivar_init +EXPORT_SYMBOL_GPL vmlinux 0x0c86e8b6 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x0c9c5b0f blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x0cb7aa53 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cce0227 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x0ccf9329 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x0cd236ce regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x0d065ca6 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x0d271c47 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x0d3a7890 pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0x0d42a98f extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0x0d547533 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0d6312cf locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x0d66567b __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x0d87796c debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x0d904db8 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x0dc075bc dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x0dd00eea elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0dd11f01 hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0e0e23f2 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x0e13cb4d apei_resources_release +EXPORT_SYMBOL_GPL vmlinux 0x0e437d24 tpm_show_owned +EXPORT_SYMBOL_GPL vmlinux 0x0e4d6a96 md_stop +EXPORT_SYMBOL_GPL vmlinux 0x0e5cd43a dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x0e8a16df proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0x0ecf823a static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x0ed4a633 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x0ed6239c __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0x0ed9302e percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0x0edcb4d5 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x0ee34c41 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL vmlinux 0x0f134345 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x0f2d7d87 mce_unregister_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0x0f51c456 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x0f5cd964 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x0f70621b ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f8b23de spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x0f930597 efivar_entry_remove +EXPORT_SYMBOL_GPL vmlinux 0x0fa138de xen_hvm_need_lapic +EXPORT_SYMBOL_GPL vmlinux 0x0fad077f modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x0fb4ddf4 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x0fb556d2 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x0fb5e8b7 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x0fbe3649 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x0fc03e1d usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x0fcc1969 copy_from_user_nmi +EXPORT_SYMBOL_GPL vmlinux 0x0fe2d570 xenbus_directory +EXPORT_SYMBOL_GPL vmlinux 0x0fe3bdb9 efivar_entry_set_get_size +EXPORT_SYMBOL_GPL vmlinux 0x0fe7e703 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x1003eb7e scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x1007a3bb pinctrl_pm_select_sleep_state +EXPORT_SYMBOL_GPL vmlinux 0x100c0087 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x101391ff __add_pages +EXPORT_SYMBOL_GPL vmlinux 0x101ef374 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x10328315 netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0x10381662 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x10865cb3 balloon_devinfo_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1093aa56 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x10d07dea gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0x10e82480 usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x110106c1 cper_severity_to_aer +EXPORT_SYMBOL_GPL vmlinux 0x111931da attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0x112d93e3 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x114f1a20 balloon_stats +EXPORT_SYMBOL_GPL vmlinux 0x1157eda4 cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x11767b4f ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x117c7305 hwpoison_filter_dev_major +EXPORT_SYMBOL_GPL vmlinux 0x117e7fe9 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x118f48e0 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x119a2fcb do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x119af014 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0x11cbce62 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0x11d42127 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x11ddc14d single_release_net +EXPORT_SYMBOL_GPL vmlinux 0x11ef30fd usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x1200fb9f irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x121ed3f3 add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0x12264daf platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x122fc387 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x12365991 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x123bd6d2 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x12496d44 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x12975931 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x12cd46e6 inet_csk_compat_getsockopt +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 0x132fc939 cper_estatus_print +EXPORT_SYMBOL_GPL vmlinux 0x13305539 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x13465929 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x13489557 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x135fd132 pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x136c7aed pinctrl_utils_dt_free_map +EXPORT_SYMBOL_GPL vmlinux 0x137a7e0f input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x1384a4da tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x138aff76 gnttab_init +EXPORT_SYMBOL_GPL vmlinux 0x13921363 clk_set_rate +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 0x13f83507 blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x14042c88 tcp_init_congestion_ops +EXPORT_SYMBOL_GPL vmlinux 0x1416c8d6 put_compat_timeval +EXPORT_SYMBOL_GPL vmlinux 0x1423338c thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x146096fa seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x146d9ec8 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x14780da1 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x147a3622 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x149cc65b __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x149dedcf tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x14a1ab6e arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0x14b071f1 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x14cf9319 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x14d688aa ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x14e2644b flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x14f875ce devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x14fe4faf subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x15010e1f arbitrary_virt_to_machine +EXPORT_SYMBOL_GPL vmlinux 0x1501bf65 __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x15026a32 snmp_mib_init +EXPORT_SYMBOL_GPL vmlinux 0x150dfad4 iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0x15477b08 acpi_get_gpiod_by_index +EXPORT_SYMBOL_GPL vmlinux 0x156c854a pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x15788353 regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x159016ec clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0x159189a1 rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0x15925271 inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x15982aa3 vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x159d1ed0 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x15b0606e e820_any_mapped +EXPORT_SYMBOL_GPL vmlinux 0x15be6b54 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x15da9d98 xenbus_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x1622b659 gpio_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x162ee47d crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x1657d43f hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x1667a2e7 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x1669af83 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x166f10d8 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x168f5114 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x16bab1df bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x16bd07d5 xenbus_grant_ring +EXPORT_SYMBOL_GPL vmlinux 0x16e2c281 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x16f54a66 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x173b3c2b sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x174ed2fb __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x1753a32f hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x17614bf3 apei_resources_sub +EXPORT_SYMBOL_GPL vmlinux 0x177c2460 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x178ea353 ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0x179b71e1 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x17a1c3ca pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x17ad3190 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x17b8299d ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x17ee44cf mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x17fb5706 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x17fc3d28 xenbus_unmap_ring +EXPORT_SYMBOL_GPL vmlinux 0x1829b9ed hwpoison_filter_memcg +EXPORT_SYMBOL_GPL vmlinux 0x182dafbe root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x18429d5e pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x1848d7d7 __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x1850e0a9 proc_mkdir_data +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 0x1867debf unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x18731d8b usb_string +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x187e7887 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x1889563a clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0x188a95eb pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0x18b3fe87 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x18c21c26 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x18da0164 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x18dede6b ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x18df46aa usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x18ed8bbe adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x18f83fab gnttab_grant_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0x18fbe275 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x190035df irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x190d32c4 tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x19297295 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x192a42bf clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x1947901f regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x1961505c fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x196614ce hw_breakpoint_restore +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19b384a5 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x1a082d69 max77693_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x1a0b0b3b pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0x1a15191c dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x1a323362 __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x1a3ec0e3 scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x1a490286 rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0x1a4f83ed stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x1a518afc add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x1a830936 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x1a8a7948 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x1a9083d5 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x1a93b041 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x1aa1e373 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x1acd1d9d sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1ad83009 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x1ae8a637 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x1aeb31dd fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0x1af19f35 rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x1af39f8d device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x1b1d985a virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0x1b34f9c6 wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x1b369b87 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x1b3c9291 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x1b6f609f usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x1b7b5ae6 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x1b86a13e regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x1b8822d8 pinctrl_gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x1b909c73 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1bab5bd6 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x1bae2d4e fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0x1baed560 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x1bbc09de disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x1bbe3659 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1bc5eebe pinctrl_gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x1bd06aab cpufreq_frequency_table_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x1bfe53fa bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x1c42bb11 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c6b2472 mmc_send_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x1c713260 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x1c72dd30 call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c92ec58 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x1cdb2147 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x1cdc003a scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x1ce16c17 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x1cef6a69 i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x1cfd95c1 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x1d22eb0c regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x1d459685 xstate_size +EXPORT_SYMBOL_GPL vmlinux 0x1d490176 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0x1d5569ed i2c_new_dummy +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 0x1d8fb3bb acpi_dev_resource_address_space +EXPORT_SYMBOL_GPL vmlinux 0x1dadf340 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x1db4057a rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0x1de3ca53 gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x1de60e8b fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x1ded3ca1 usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x1df10786 pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x1df6310c tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x1dfba683 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x1e000879 hwpoison_filter_enable +EXPORT_SYMBOL_GPL vmlinux 0x1e3a88fb trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e5eb5bc hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e8fac8e wireless_nlevent_flush +EXPORT_SYMBOL_GPL vmlinux 0x1eae3d13 acpi_dev_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x1eb1594f gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ecf276f ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x1edc21cb hwpoison_filter_flags_mask +EXPORT_SYMBOL_GPL vmlinux 0x1ee2a7f7 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x1eea2500 xenbus_dev_groups +EXPORT_SYMBOL_GPL vmlinux 0x1ef75f4b iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0x1f1988f7 hwpoison_filter_flags_value +EXPORT_SYMBOL_GPL vmlinux 0x1f3526b0 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x1f3611b0 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x1f4fe571 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x1f77f069 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1f94f815 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0x1f9c7238 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x1fbaa0cd dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x1fcbec5e sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x1fcde957 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x1fcece42 inet_twdr_twcal_tick +EXPORT_SYMBOL_GPL vmlinux 0x1ffbfc87 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x20264648 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0x203a9001 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x204107ee acpi_subsys_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x2044092a device_del +EXPORT_SYMBOL_GPL vmlinux 0x2061ab94 m2p_remove_override +EXPORT_SYMBOL_GPL vmlinux 0x209e7688 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x209ec764 xen_event_channel_op_compat +EXPORT_SYMBOL_GPL vmlinux 0x20bc3470 orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x20cafa6c usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x20d433fd fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0x2104df9d pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x213040e5 pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x21572dc3 devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0x216b93d1 pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x21749794 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x2184ed9f crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21c22891 ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x21db6dc7 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x21db76e4 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x21f5f8b9 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x21f8a3c4 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x21f924f5 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x21ff896f pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x2203d34f acpiphp_register_attention +EXPORT_SYMBOL_GPL vmlinux 0x222a74c5 acpi_unbind_one +EXPORT_SYMBOL_GPL vmlinux 0x22314cdb virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0x2234c20d perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x2239958b bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x223fa433 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x224dee50 virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0x2286feaf debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x229f11ae virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0x22d4d00e tpm_show_durations +EXPORT_SYMBOL_GPL vmlinux 0x230a450f register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x2313ce44 unregister_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x233ab1b3 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x2366a2c0 errata +EXPORT_SYMBOL_GPL vmlinux 0x236e4e07 d_materialise_unique +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x23adc62a sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x23b59b08 tpm_register_hardware +EXPORT_SYMBOL_GPL vmlinux 0x23cf327e sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x24011e14 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x2424cb8e ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0x2447533c ktime_get_real +EXPORT_SYMBOL_GPL vmlinux 0x2453d2a5 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x246295d6 regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0x246377a5 ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2489060b xenbus_dev_changed +EXPORT_SYMBOL_GPL vmlinux 0x24a6667d ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24b6f96e da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x24bf6034 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x24c7698a xenbus_write +EXPORT_SYMBOL_GPL vmlinux 0x24cb1ebd acpi_dma_request_slave_chan_by_index +EXPORT_SYMBOL_GPL vmlinux 0x24dff1fa bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x24f54a60 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x252ea475 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x254544fb class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x2545c170 unregister_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x254869af map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x2554fb46 rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x256a10b2 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x25a97010 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x25b6031a rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0x25d0293b powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0x25e76544 pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x25f25922 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x260f5057 acpi_preset_companion +EXPORT_SYMBOL_GPL vmlinux 0x2618a7cd fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x262442a0 extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x2641140d crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x26965721 slow_virt_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26b8dae0 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26dc6d4f ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x272a80a1 rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x2733746f extcon_find_cable_index +EXPORT_SYMBOL_GPL vmlinux 0x27348a22 ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x2735ef9d init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x2757476c rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0x27605f90 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x276de6ea irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x276ff4e2 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x2784fca1 tpm_open +EXPORT_SYMBOL_GPL vmlinux 0x279364ac regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x279a28cc ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x279cb985 apei_exec_pre_map_gars +EXPORT_SYMBOL_GPL vmlinux 0x27a5d89a devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x27bfd848 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x27c03d84 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x27c0c4be eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27d709c9 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x27ddb33d acpi_dev_resource_io +EXPORT_SYMBOL_GPL vmlinux 0x27ea090d subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x2810af26 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x288363bb ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x288ce4c9 acpi_register_gsi +EXPORT_SYMBOL_GPL vmlinux 0x289574a8 acpi_dev_get_resources +EXPORT_SYMBOL_GPL vmlinux 0x28a903c8 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0x28c8d5e9 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x28c8db84 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x28d06df9 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x28e64c64 xen_has_pv_and_legacy_disk_devices +EXPORT_SYMBOL_GPL vmlinux 0x28ff6a3f irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x2921142f vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x293f180f regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2943ba83 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x2945510c __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x296a4438 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x2980990d debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x29b1eb43 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x29b85984 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0x29b87688 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x29d0c5ec pci_msi_off +EXPORT_SYMBOL_GPL vmlinux 0x29e1a175 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x2a031863 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x2a17eba7 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a86b039 usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x2aae5c6b raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x2ab2ba85 sk_unattached_filter_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2abc1a82 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2ad1ece4 zs_get_total_size_bytes +EXPORT_SYMBOL_GPL vmlinux 0x2adb5b4f kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0x2b08fecb class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2b0957eb tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x2b148d37 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x2b19cfb2 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x2b238f05 percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0x2b2ed427 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x2b332c51 pinctrl_dev_get_devname +EXPORT_SYMBOL_GPL vmlinux 0x2b7a6de8 syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x2b8ab33c sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x2ba4f6d4 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x2bd0de40 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x2bd72b76 btree_update +EXPORT_SYMBOL_GPL vmlinux 0x2bdd408f crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x2bec027d usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x2bfaef4e clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c39a957 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x2c7d9c64 xen_store_interface +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c8bedfc save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0x2c8fadd2 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x2ca4d5de dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x2cac8cbc __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2cf5d554 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x2d00bd89 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2d085cac tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x2d17a0e1 cgroup_taskset_size +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 0x2d5ac95a user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2d656d3f context_tracking_enabled +EXPORT_SYMBOL_GPL vmlinux 0x2d684410 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x2d7a9c3c driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x2d95e6e6 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x2d9e67ad pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x2d9f2ce3 sched_clock_idle_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x2dba276a __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0x2dc95395 pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x2e1da9fb probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2e433d debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e418cd8 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x2e45e488 rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x2e4c6d16 acpi_pci_check_ejectable +EXPORT_SYMBOL_GPL vmlinux 0x2e50fe99 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x2e530175 rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0x2e5317ec crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0x2e53f338 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x2e54bdbd rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0x2e5b271f tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x2e9adf1d xenbus_dev_is_online +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ecb191f regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0x2eea43a3 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f2130fc acpi_bind_one +EXPORT_SYMBOL_GPL vmlinux 0x2f25bbdf da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f64415f unregister_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2f7e4232 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0x2f857551 machine_check_poll +EXPORT_SYMBOL_GPL vmlinux 0x2f9cfec2 pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x2fa5637c bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x2fee2bc7 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x2ff52943 gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x30238be4 cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x3035ed0d cgroup_taskset_cur_css +EXPORT_SYMBOL_GPL vmlinux 0x303c3301 da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x304c085e __efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x30556bca simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x3056a0cc gpio_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x3061d8bb ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x308b733a getboottime +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x31139666 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x311400f4 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x31325378 iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0x3132f328 xenbus_register_driver_common +EXPORT_SYMBOL_GPL vmlinux 0x31485744 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x3152ae9c __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x318c9106 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31d2f301 tcp_is_cwnd_limited +EXPORT_SYMBOL_GPL vmlinux 0x31dad65e sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x31dcbe1b bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x31fff200 restore_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x320fc7df regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x321bdbb1 compat_get_timeval +EXPORT_SYMBOL_GPL vmlinux 0x321f86e7 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0x322f05a8 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x3233ae5b rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x32408901 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3256ca45 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x325e4b67 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x325e677c gnttab_grant_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x32900107 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0x329bbbde timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0x32a74946 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x32b31a8c ktime_get_boottime +EXPORT_SYMBOL_GPL vmlinux 0x32bded08 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x32c03fe8 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32fd447a monotonic_to_bootbased +EXPORT_SYMBOL_GPL vmlinux 0x330005bb spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x330b931b skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x330d1143 apic +EXPORT_SYMBOL_GPL vmlinux 0x3310bf11 pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x334dec37 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x334f94b5 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x33655159 xen_pcpu_hotplug_sync +EXPORT_SYMBOL_GPL vmlinux 0x3366ae8e inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x336df762 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x3395eff6 ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x33b96e5d apei_exec_write_register +EXPORT_SYMBOL_GPL vmlinux 0x33be8551 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x33c42610 thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0x33f7ab15 get_compat_timespec +EXPORT_SYMBOL_GPL vmlinux 0x341f0939 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x342af163 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x34304ade __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x3432aced blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x3441a601 rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x3465fce6 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x349c9c6f cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x34abdd4e acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x34daea60 thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0x34fdd475 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3506c8b8 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x352457fa usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x352650ee gnttab_batch_map +EXPORT_SYMBOL_GPL vmlinux 0x35556004 iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0x3570456e sdhci_pci_o2_probe +EXPORT_SYMBOL_GPL vmlinux 0x3573f074 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x35f10f43 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x35f165f1 devm_reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x365cc1d0 alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0x368a9ed3 stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0x368f1fea static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36a8c568 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x36b5497e intel_iommu_enabled +EXPORT_SYMBOL_GPL vmlinux 0x36b777fb sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x36b91e4f tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0x36ddb2c2 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x36dfaf55 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x36e54d6d regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x36edb41e tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x36f1c9ab pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x36f63718 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0x37013f04 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x370d79dc kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x372b957e max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x3730c360 system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0x374fb792 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x375eaf14 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0x37664021 wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x377d5750 devm_pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x377f3841 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x3788eb8d pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x37d2bdc5 platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x37e11bbb xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x37eae94f crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x37eccf0c md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x37f1ffbf gdt_page +EXPORT_SYMBOL_GPL vmlinux 0x384b966f uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x38620e38 gnttab_grant_foreign_access_trans_ref +EXPORT_SYMBOL_GPL vmlinux 0x388b4a9b rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x3898f040 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x38b2ddfd ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x38bae6cb ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x38e49084 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x38f01f6f nl_table +EXPORT_SYMBOL_GPL vmlinux 0x38f93005 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x38fb1c9a wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x390764a0 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x391066c9 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x391924c0 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x396e06e2 pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x39c9dc49 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x39e41d76 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0x39e7298e device_move +EXPORT_SYMBOL_GPL vmlinux 0x3a03335e skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x3a1636fa bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a2efecf serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x3a38dc65 memory_failure +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a50d5aa iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a5974f9 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3a65e07f tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x3a778a72 iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0x3a7cdf90 pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0x3aa7c061 pinctrl_force_default +EXPORT_SYMBOL_GPL vmlinux 0x3aac529a devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x3abe429b __netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x3ad0e201 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x3ad4867f pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x3b1ac1e5 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x3b20d187 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x3b20ddfe usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x3b447d4a dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x3b554d04 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x3b6ab968 set_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x3b6d696f iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x3b7145bb apei_exec_read_register_value +EXPORT_SYMBOL_GPL vmlinux 0x3babe0b4 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x3bceb998 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x3bcef3d8 tpm_show_enabled +EXPORT_SYMBOL_GPL vmlinux 0x3bf56e6f __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x3bfcedd5 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x3bff3192 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0x3c1bfbb9 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x3c370682 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x3c473a8f apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x3c4b0dc5 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x3c5130cb pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x3c65c48b bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0x3c6afc52 uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0x3c6b2449 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x3c8424a0 clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3c9e9dbb tpm_dev_vendor_release +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3ce6c860 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x3cef4392 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x3cf8e1c9 fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d3dbefa sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x3d49b2f1 extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3d509edb ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x3d5f392d acpi_os_unmap_memory +EXPORT_SYMBOL_GPL vmlinux 0x3d7ea99a gnttab_grant_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x3d817d5a da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x3d88cad5 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x3d95361c pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0x3dae6404 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x3dbb8645 use_mm +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dcaa29c __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x3de27274 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3e02747c usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x3e04336d __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x3e138455 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0x3e2e543d cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x3e2fa31f wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e8657c5 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x3e971b8d regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x3ea5196d apei_osc_setup +EXPORT_SYMBOL_GPL vmlinux 0x3ec056b9 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x3ed468b1 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x3ef493ed regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f229c4c oops_begin +EXPORT_SYMBOL_GPL vmlinux 0x3f25364f aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x3f689291 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x3f84d4c9 gnttab_release_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x3f95b899 rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x3f985b08 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x3fc27133 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x3fc72d3d __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x3fd04f37 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x3fdb0857 tpm_remove_hardware +EXPORT_SYMBOL_GPL vmlinux 0x3feb3dc0 xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x3ffc8ebd class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x40081d58 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x400a024b acpi_scan_lock_release +EXPORT_SYMBOL_GPL vmlinux 0x4017814e cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x4037de26 pci_find_next_ht_capability +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 0x40677ea2 unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x406c2e99 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0x40756191 devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x407fa4ed hwpoison_filter +EXPORT_SYMBOL_GPL vmlinux 0x4087891a ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x409508c3 perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40af7d54 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x40cdb749 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40d7e7fa unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x41200f8a subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x412fc7c2 md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x4143373c __rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x415ab1cb usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x4190969f efivar_entry_find +EXPORT_SYMBOL_GPL vmlinux 0x41ebcaa9 elv_register +EXPORT_SYMBOL_GPL vmlinux 0x41f11f9e sync_filesystem +EXPORT_SYMBOL_GPL vmlinux 0x41f718c4 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x4200efbe debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x4209ee1d power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x4213a51a efivar_entry_set_safe +EXPORT_SYMBOL_GPL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x4223afe2 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x4238f96d sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x425b641b pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x426c079a sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x42784d41 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x427d5c68 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x428ecf11 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x429cf286 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x42b3bfbf crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x42bf6381 gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x43033496 ping_bind +EXPORT_SYMBOL_GPL vmlinux 0x43115b5e da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x43132290 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x431b44a2 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x432eddb0 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x43540a40 iommu_present +EXPORT_SYMBOL_GPL vmlinux 0x43609a61 i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0x43803b35 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x4386e8fd sysfs_schedule_callback +EXPORT_SYMBOL_GPL vmlinux 0x43928edf wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43af8018 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x43b33b88 find_module +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x441c74b3 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x44404f11 kdb_register_repeat +EXPORT_SYMBOL_GPL vmlinux 0x4480c86d arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x4483e318 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x44a887b3 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x44c3df0c task_xstate_cachep +EXPORT_SYMBOL_GPL vmlinux 0x44e45afc sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x450fb522 kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x45339658 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x453a1981 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x4541fe0d mtrr_state +EXPORT_SYMBOL_GPL vmlinux 0x45496a11 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x454c15ae __smp_call_function_single +EXPORT_SYMBOL_GPL vmlinux 0x456b5dee pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0x4570cece powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45d14bdf hypercall_page +EXPORT_SYMBOL_GPL vmlinux 0x45ecdef1 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x45fc7fbd rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x45fc8198 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x460f31aa rodata_test_data +EXPORT_SYMBOL_GPL vmlinux 0x460f7531 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x461a7fe1 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x461affc5 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x461b8381 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x46434934 disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x46778d90 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x46b06a85 tpm_show_active +EXPORT_SYMBOL_GPL vmlinux 0x46bfd74e usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x470422c8 pin_is_valid +EXPORT_SYMBOL_GPL vmlinux 0x470fa426 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x471bbb5e sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x472d064d inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x474ee732 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x4753187d iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x4760e80a __efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4767121c usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x477a6ec6 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x477c6bb3 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x478c3b40 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47b345b7 aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x47fb9a7c inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x480a977a max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x4822caaf inet_csk_reqsk_queue_prune +EXPORT_SYMBOL_GPL vmlinux 0x4828e77b acpi_scan_lock_acquire +EXPORT_SYMBOL_GPL vmlinux 0x484e9db8 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x48682db9 perf_guest_get_msrs +EXPORT_SYMBOL_GPL vmlinux 0x4868c3b0 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x48759d89 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x48cb7568 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x48db4fe2 regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0x48fc5050 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x48ffd5a9 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x490a8df6 x86_platform +EXPORT_SYMBOL_GPL vmlinux 0x4937bb23 xenbus_switch_state +EXPORT_SYMBOL_GPL vmlinux 0x494131d5 spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0x49481a2c devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x498d293a trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x4991e649 irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0x49c43bc8 swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x49e7f2b1 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x49f8f09f fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x4a24e355 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4a3c3cf9 microcode_sanity_check +EXPORT_SYMBOL_GPL vmlinux 0x4a8bd2bd pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0x4a8e8800 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x4a90160e bprintf +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4ab3f5c5 ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x4ac3eba1 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4affd08b put_compat_timespec +EXPORT_SYMBOL_GPL vmlinux 0x4b0243c9 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x4b3124b0 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x4b79e0b3 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x4b902bc2 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x4bb8700f ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x4bc62a81 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x4bf0d6d1 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0x4c1fc674 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x4c23687a vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x4c2a472b __static_cpu_has_safe +EXPORT_SYMBOL_GPL vmlinux 0x4c2e1f24 clk_disable +EXPORT_SYMBOL_GPL vmlinux 0x4c5c846a da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c6968bf ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x4c739712 __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c7c5d74 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x4c88bdd1 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x4ca4c9df clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x4ca8d691 __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0x4d0bf796 i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0x4d0d575d usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x4d126272 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x4d33b4de usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x4d3af576 acpi_processor_get_performance_info +EXPORT_SYMBOL_GPL vmlinux 0x4d3c38d0 register_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0x4d5cec42 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x4dac9535 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x4db171e3 clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4de3e3fc od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x4e027e94 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x4e0a735e wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e57723d apei_read +EXPORT_SYMBOL_GPL vmlinux 0x4e5de514 devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x4e74e625 gnttab_batch_copy +EXPORT_SYMBOL_GPL vmlinux 0x4ea7d407 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0x4ec7a556 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x4ec7b8e3 tracepoint_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0x4ee96342 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f0062b9 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x4f020dee public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x4f165d72 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x4f245c80 devres_add +EXPORT_SYMBOL_GPL vmlinux 0x4f3edfe0 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x4f985a2e pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x4fb3c72f pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x4fd0edef acpi_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fd5cfb9 idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x50069fdb wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x500b4778 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x500b6dd7 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x5026585c xen_irq_from_gsi +EXPORT_SYMBOL_GPL vmlinux 0x50347bac synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x503bd41e ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x5045433c led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x504bea11 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x506691f1 sock_diag_check_cookie +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 0x50b5cee5 pci_pri_stopped +EXPORT_SYMBOL_GPL vmlinux 0x50d1f870 pgprot_writecombine +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50e7c105 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x510035f1 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x512b1d19 register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x516d9e06 sdio_unregister_driver +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 0x51a902b1 pinctrl_dev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x51d3f4f6 inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x51e08f12 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x522f538b tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x523f5545 cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x52553418 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x525b89d5 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x52604a2f rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x5272d8bc __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0x527a871f blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x52932cac max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x52969624 devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x52a41251 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x5305646e alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x530b9e2e hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x53317cd0 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x5354693e cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x5374018f ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x5394b6f7 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x539f157b pci_xen_swiotlb_init_late +EXPORT_SYMBOL_GPL vmlinux 0x53b14b10 iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0x540808f9 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x54215db5 visitor64 +EXPORT_SYMBOL_GPL vmlinux 0x5431f404 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x546e6e7e pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x549a4464 smp_ops +EXPORT_SYMBOL_GPL vmlinux 0x54aa49c2 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x54ac6da9 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x54aed113 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x54bab5ef regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x54d53c8c blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x54e90039 nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x5509f193 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x551c3962 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x5525c645 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x554822c6 sdhci_pci_o2_fujin2_pci_init +EXPORT_SYMBOL_GPL vmlinux 0x55526907 xen_features +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x55876338 tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x559a667c __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x55a1b24a cgroup_load_subsys +EXPORT_SYMBOL_GPL vmlinux 0x55f8aee7 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x55fb3061 pinctrl_get_group_pins +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 0x564f1dca klist_add_after +EXPORT_SYMBOL_GPL vmlinux 0x5654f836 erst_get_record_id_next +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x567690bb xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x56838d16 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x5692386f gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0x56947347 dmi_walk +EXPORT_SYMBOL_GPL vmlinux 0x56ab2a9b devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x56bf3c13 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56da7dc4 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56e7d899 unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x56f837e7 unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x571d2c32 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x57267cc3 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x5738a646 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x57432c3c crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x57520d16 cper_estatus_check_header +EXPORT_SYMBOL_GPL vmlinux 0x575c5f94 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0x5779d445 xenbus_exists +EXPORT_SYMBOL_GPL vmlinux 0x57851905 rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x579ee14f led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x57c61a47 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x57c95d88 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x57fb701e register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x58359c96 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x58549804 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x585704ab aer_recover_queue +EXPORT_SYMBOL_GPL vmlinux 0x5874b588 pinctrl_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x587adc91 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x589bc2f6 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58d5c638 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x58d90040 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x58e2a027 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0x58f2a1ec usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x59229646 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5947abbe max77693_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x5954c427 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x596d07aa platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x597766ee __online_page_free +EXPORT_SYMBOL_GPL vmlinux 0x597def2a irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x59a6e91d clk_notifier_register +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 0x59f86e13 sysfs_put +EXPORT_SYMBOL_GPL vmlinux 0x5a19d952 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x5a2b1b67 gnttab_free_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5a2cd84a dev_get_gen_pool +EXPORT_SYMBOL_GPL vmlinux 0x5a3af4b4 smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x5a441ebd efi_query_variable_store +EXPORT_SYMBOL_GPL vmlinux 0x5a69dd7a devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x5a790a94 pci_configure_slot +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a7f31e0 user_describe +EXPORT_SYMBOL_GPL vmlinux 0x5a8b8db3 class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x5a8d74cb sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x5a959cce ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x5a9db7b2 gpiochip_add_pingroup_range +EXPORT_SYMBOL_GPL vmlinux 0x5ac2727f smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x5adfed7d devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x5ae25c6b max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x5af03a28 gnttab_claim_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5af525fa xenbus_probe_devices +EXPORT_SYMBOL_GPL vmlinux 0x5b065f97 xen_xenbus_fops +EXPORT_SYMBOL_GPL vmlinux 0x5b070be5 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x5b19a782 efivars_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5b384b85 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x5b535e4b get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x5bd311c9 iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0x5c1830af ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x5c1a5cd4 vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x5c1b0e53 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x5c1e0aa5 bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0x5c359435 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x5c3bf0e5 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x5c54f307 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x5c66e90c efivar_run_worker +EXPORT_SYMBOL_GPL vmlinux 0x5c85ba9b ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x5ca93699 tracepoint_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cafdfd7 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x5cd907e5 tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x5cd97be2 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x5cf8a882 __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x5cfd2c52 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x5cfd4c08 __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x5d055afa edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d1d084e xenbus_dev_error +EXPORT_SYMBOL_GPL vmlinux 0x5d366dec gnttab_cancel_free_callback +EXPORT_SYMBOL_GPL vmlinux 0x5d48a650 m2p_find_override_pfn +EXPORT_SYMBOL_GPL vmlinux 0x5d4b384b _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0x5d58a523 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x5d60d8a5 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x5d77952d hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x5d844215 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x5d9abfac __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5dbcfa4f boot_cpu_physical_apicid +EXPORT_SYMBOL_GPL vmlinux 0x5dc21138 pinctrl_pm_select_idle_state +EXPORT_SYMBOL_GPL vmlinux 0x5dd9cdf4 rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x5ddd01c0 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x5ddf0ae7 pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0x5de88eaf crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x5dea0a41 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x5e136f40 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x5e285ff6 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e696040 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x5ec05612 ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x5ed1ecff usb_acpi_set_power_state +EXPORT_SYMBOL_GPL vmlinux 0x5ee7992d regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x5f18e923 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0x5f248f72 set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0x5f2da8c4 check_tsc_unstable +EXPORT_SYMBOL_GPL vmlinux 0x5f419491 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x5f79a98b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x5f8aafe4 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x5f8e6369 pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x5fc27be9 acpi_dev_irq_flags +EXPORT_SYMBOL_GPL vmlinux 0x5fdfa2c1 amd_pmu_enable_virt +EXPORT_SYMBOL_GPL vmlinux 0x5ff3cc7c skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x6002d9da hypervisor_kobj +EXPORT_SYMBOL_GPL vmlinux 0x60347721 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x60729069 xenbus_register_frontend +EXPORT_SYMBOL_GPL vmlinux 0x607da565 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x60930d37 save_mc_for_early +EXPORT_SYMBOL_GPL vmlinux 0x6094685f wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60ac4b16 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x60c95350 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x60c95b35 powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x60cd73ed pv_apic_ops +EXPORT_SYMBOL_GPL vmlinux 0x60cfd5e8 virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x60de9b89 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x60fbd9e8 put_pid +EXPORT_SYMBOL_GPL vmlinux 0x611f1f9f devm_acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x61204485 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x613fd25d cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x614ddd8f key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0x6158e169 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x61598110 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x6161bd3c mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x61731272 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x6183ff15 sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0x6194ffea do_machine_check +EXPORT_SYMBOL_GPL vmlinux 0x6212b05b cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x6223d719 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x623803c8 hest_disable +EXPORT_SYMBOL_GPL vmlinux 0x6241f00a efivar_entry_size +EXPORT_SYMBOL_GPL vmlinux 0x625098d9 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x626a64fe register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x6284e75e arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x6286d9da gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x62b3392f thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x62c0ff41 css_next_descendant_post +EXPORT_SYMBOL_GPL vmlinux 0x62c2d2d9 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x63205de1 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x634f6f21 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x635ec980 apei_exec_post_unmap_gars +EXPORT_SYMBOL_GPL vmlinux 0x63620af8 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x636aff9c dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x638fe045 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x63b07117 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x63b4a055 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x63bb6018 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x63d68304 crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0x63f23886 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0x63f8322a blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x64239e3f pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x64269c13 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x642be111 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x6463df59 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x64851d93 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x64a6f279 PageHeadHuge +EXPORT_SYMBOL_GPL vmlinux 0x64b7069e apei_mce_report_mem_error +EXPORT_SYMBOL_GPL vmlinux 0x64f9871b pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x65025820 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x6527a231 dbgp_external_startup +EXPORT_SYMBOL_GPL vmlinux 0x652d78ef ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x65361824 ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0x65433a8c sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0x654cec79 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x654ee362 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x658c8186 amd_get_nb_id +EXPORT_SYMBOL_GPL vmlinux 0x658f7226 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x65a07949 tpm_read +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65e8a7aa pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x65ff2579 get_matching_microcode +EXPORT_SYMBOL_GPL vmlinux 0x66069728 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x662a0c3f x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x663c16d6 gnttab_grant_foreign_access_subpage_ref +EXPORT_SYMBOL_GPL vmlinux 0x665e156c rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x666648ee arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x667df8a6 inet_csk_compat_setsockopt +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x66bd8370 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x66c9f15f pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x66d1745a acpi_dev_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66f1ebb2 efivar_entry_set +EXPORT_SYMBOL_GPL vmlinux 0x67133024 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x67164742 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x6725d582 css_next_child +EXPORT_SYMBOL_GPL vmlinux 0x672cbb60 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x672e68ee crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x6739a503 balloon_set_new_target +EXPORT_SYMBOL_GPL vmlinux 0x6739cdc8 pci_renumber_slot +EXPORT_SYMBOL_GPL vmlinux 0x673b6cc3 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x673ccf1a blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x6741f88e regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x67549405 xenbus_unmap_ring_vfree +EXPORT_SYMBOL_GPL vmlinux 0x675c5a37 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0x676c3f97 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x678b88a4 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x6796e4cd usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x67da660f tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x6807606a da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x68287c68 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x685903ca virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0x6874df35 rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x687934e9 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x68ab17c8 xen_swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x69166d79 user_instantiate +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 0x69462b50 pci_get_hp_params +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x69c84c28 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x69e9a2cb ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x6a0deff1 xenbus_probe_node +EXPORT_SYMBOL_GPL vmlinux 0x6a14f186 extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a58082e ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a6cafd2 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x6a7a997c ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x6a80077c shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a971a89 ata_sas_port_async_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6aa07e1d device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x6acad21f acpi_get_cpuid +EXPORT_SYMBOL_GPL vmlinux 0x6ad2d082 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x6aded50b wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x6b13024f disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x6b15b78d class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x6b1d9f72 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x6b2311e3 acpi_get_pci_dev +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b7c4b69 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x6b93bf60 inet_twdr_twkill_work +EXPORT_SYMBOL_GPL vmlinux 0x6bdcd859 rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0x6be35efb __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x6bf1b90d dmi_memdev_name +EXPORT_SYMBOL_GPL vmlinux 0x6bf8814e usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x6c1251fd apei_exec_read_register +EXPORT_SYMBOL_GPL vmlinux 0x6c13384f set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x6c1b09ab gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x6c21fb61 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x6c3d7c9a devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x6c49c4f2 clockevents_notify +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c655913 register_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6ccd79fa blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6cd4ea62 wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x6d25ba00 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x6d2785b5 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x6d29de17 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d569078 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x6d5cf65b usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x6dc12e5c ata_acpi_gtm_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x6dd63157 md_run +EXPORT_SYMBOL_GPL vmlinux 0x6df8f4cd pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e0d6f53 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x6e0f96c3 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x6e3311de sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x6e58ddf0 gnttab_end_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x6e6ce3d0 regulator_get_mode +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 0x6e8bf789 hrtimer_start +EXPORT_SYMBOL_GPL vmlinux 0x6e8fb649 driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x6ea98361 ioremap_page_range +EXPORT_SYMBOL_GPL vmlinux 0x6ee19c56 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6ee5068c mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0x6f0b970f split_page +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f269357 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x6f3911a1 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x6f3fe698 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x6f4117b1 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x6f6f047b spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x6f71ad64 fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0x6f88ba2d subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x6f9c7a72 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x6fa83bf7 ata_acpi_stm +EXPORT_SYMBOL_GPL vmlinux 0x6fa9e2e5 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x6fb0dd7c blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x6fbb5b47 acpi_dev_pm_attach +EXPORT_SYMBOL_GPL vmlinux 0x6fbf864f dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x7008f387 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x704e3b87 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x708b76a6 put_device +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70f38afa device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x712f6774 dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0x7139a7d6 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x714713aa percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x714f5902 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x71663e71 list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0x71ab8c7b part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x71b43fc4 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x71d0bb18 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x71f0f7b7 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x7215ed0f ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x722fcfeb crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x723596ed pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x725dc1f5 usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x726a6e04 sis_info133_for_sata +EXPORT_SYMBOL_GPL vmlinux 0x726d12a1 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x727bfb3f crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0x728a4364 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x72aebeab __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x72e8b42d bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x72faa0b3 ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x72fd0b2a wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x73013896 xenbus_printf +EXPORT_SYMBOL_GPL vmlinux 0x731dba7a xen_domain_type +EXPORT_SYMBOL_GPL vmlinux 0x732aac1e virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x732b4662 wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x733b5c7c usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x734030c1 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x7347dcc2 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x73510609 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x7387b823 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x738d5644 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x739fbf73 led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73c2554f __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0x73c63a1c pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73da953e dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x73f21b1f crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x7422c95e gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x742b539f tty_find_polling_driver +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 0x74584459 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x74628570 context_tracking +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x748bba0e regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x74954462 timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0x749b6557 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x74a85f4a print_context_stack_bp +EXPORT_SYMBOL_GPL vmlinux 0x74ab2289 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74c08941 kvm_async_pf_task_wake +EXPORT_SYMBOL_GPL vmlinux 0x74deb10c used_vectors +EXPORT_SYMBOL_GPL vmlinux 0x74e61348 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x75133f6e visitor128 +EXPORT_SYMBOL_GPL vmlinux 0x7521afb6 leave_mm +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x7534dedb inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x756ab0ed show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x7571e2c7 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x757b49d2 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0x7581ecc1 sec_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x758a3812 atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x75a01de8 regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x75c4bfaa sysfs_get_dirent_ns +EXPORT_SYMBOL_GPL vmlinux 0x75e0c590 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x75f89327 pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x76235f04 ata_sas_port_async_resume +EXPORT_SYMBOL_GPL vmlinux 0x76446345 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x765a3f13 devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x7679637f ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7692831f transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x76d07d6e gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x76f8d8c5 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x7712771a unbind_from_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x772fbcaf trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x774a8470 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x775a6ef5 kvm_read_and_reset_pf_reason +EXPORT_SYMBOL_GPL vmlinux 0x77711b2b pinctrl_dev_get_name +EXPORT_SYMBOL_GPL vmlinux 0x7789e823 serial8250_rx_dma +EXPORT_SYMBOL_GPL vmlinux 0x77983fb3 regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0x77a19b07 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x77a5edf8 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x77d5dd73 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0x77d6f317 devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7804a737 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x782adb74 hpet_rtc_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x782b53b9 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x783a2477 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x78706039 pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x787c882b lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x788276c7 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x78948e5e usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x789c13a0 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x78a7d29e driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x78a7e152 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x78adbe49 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x78bd3bc0 dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0x78c6539d cred_to_ucred +EXPORT_SYMBOL_GPL vmlinux 0x78ea227b acpi_bus_no_hotplug +EXPORT_SYMBOL_GPL vmlinux 0x78ef9cd4 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x78f442b9 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0x78fa2e4d usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x791131fa rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x791d0cd3 tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7932c244 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x795f31cc pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x79657683 tty_prepare_flip_string_flags +EXPORT_SYMBOL_GPL vmlinux 0x7969c165 extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x798ec712 tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0x7991fd8d crash_vmclear_loaded_vmcss +EXPORT_SYMBOL_GPL vmlinux 0x799cc695 usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x79a00e94 ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0x79b10b1a device_reset +EXPORT_SYMBOL_GPL vmlinux 0x79c1f25b debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x79e0cde7 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x79e69460 intel_iommu_gfx_mapped +EXPORT_SYMBOL_GPL vmlinux 0x79ec0621 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x7a021abf ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x7a2216a7 rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a319404 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x7a3b3158 pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0x7a3cd009 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x7a634182 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x7a7ecab4 tpm_show_caps +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7ac8e5b0 acpi_gsi_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x7adbaf49 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x7ae1ae8e cpufreq_frequency_table_put_attr +EXPORT_SYMBOL_GPL vmlinux 0x7af7c4d1 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0x7b0a00e4 devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1ab31b unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b26bddb key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x7b292d19 static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0x7b3b78ee crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x7b692b39 sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x7b7ac89e get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x7b90d1a9 bind_virq_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x7b921468 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x7b98eeb9 devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x7bab18b4 xen_pci_frontend +EXPORT_SYMBOL_GPL vmlinux 0x7bc88625 xenbus_dev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x7bf7e171 clockevents_unbind +EXPORT_SYMBOL_GPL vmlinux 0x7c14515f dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x7c227088 clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0x7c309fa6 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x7c346357 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x7c5e2e8f tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x7c608d57 irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0x7c76751f crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x7c9f3e69 __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0x7cba7446 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0x7cbbe733 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x7cc1b7fd max77693_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x7cc7de1c x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x7cd2ac3f virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7ce5b92a gpiod_sysfs_set_active_low +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7cf150fb led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7cf707d4 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x7cfb122c crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x7d13f3d2 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x7d36e534 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x7d397cc7 gpiod_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d52cf39 device_create +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7db1ef3c generic_access_phys +EXPORT_SYMBOL_GPL vmlinux 0x7e03d2bb task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0x7e2b51ee i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x7e48c251 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e80aa36 cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0x7e9a8dae xen_swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x7ea1a2bc probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x7eb22463 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x7ee92cff do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x7eeae60e ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x7f09121a regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x7f16fd86 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x7f78c790 devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x7f82afef tpm_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x7f91e3c7 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x7f9449ff shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x7f9e25f3 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x7fa02cf0 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x7fd8022e ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x7ffd8580 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x80156244 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x80211572 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x802339c0 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x804c80e4 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x804f3e27 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x8061592c ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x806e502f btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x809701b4 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x80a88bc3 __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x80b62a56 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x80c4bac2 inet6_csk_update_pmtu +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 0x80f33537 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x8104517b irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0x810bfbcf inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x810c4c1a wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x810f2e4e clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0x8119884c ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x811bb5f1 extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x8140842a gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x8168eb14 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x817b79e7 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x81b0a181 apei_get_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0x81cccad4 rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x81f3fee1 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x81fa2d93 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x823967c5 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x824fccfd key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x827b9fc1 xenbus_dev_remove +EXPORT_SYMBOL_GPL vmlinux 0x828e9225 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x82939ebd rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x82ae5d85 ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82dbec19 erst_write +EXPORT_SYMBOL_GPL vmlinux 0x82e2b34b clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x82ecf5f2 list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x82f018ef md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x8318eb66 clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x832724e0 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0x834616bb sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x838ffe4f xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x83ca96e5 rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0x83e2e927 usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x83ea2dec fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x83f481be acpiphp_unregister_attention +EXPORT_SYMBOL_GPL vmlinux 0x841c21da crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x8420bccd cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0x842a4d43 regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x843d70ef acpi_is_root_bridge +EXPORT_SYMBOL_GPL vmlinux 0x846ee21d cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x846ee611 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x8487a2b6 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x84a6b3a2 disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x84a729ab usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x84bb7148 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x84bf27d5 inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x84cc6975 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x84fcf845 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x850005ae devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x85001a6e regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x850d5a9c pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x85557c4d __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x8585d7cb pinctrl_find_and_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x859aea9a xen_set_domain_pte +EXPORT_SYMBOL_GPL vmlinux 0x85b0cb69 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x85b14d33 clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x85c10896 rcu_batches_completed_bh +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 0x85e61542 css_next_descendant_pre +EXPORT_SYMBOL_GPL vmlinux 0x85e9c0e2 pinctrl_utils_reserve_map +EXPORT_SYMBOL_GPL vmlinux 0x85fa44ee __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x8601526f ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x8632927c ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x863c18a4 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x86623fd7 notify_remote_via_irq +EXPORT_SYMBOL_GPL vmlinux 0x866b9687 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0x8675495e ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x867ffed9 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x86a51007 gnttab_end_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x86c2756b unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x86d4fefa device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x86e31af3 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x86f19b6d ata_sff_irq_on +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 0x870bcdb2 device_schedule_callback_owner +EXPORT_SYMBOL_GPL vmlinux 0x870e16b7 xen_test_irq_shared +EXPORT_SYMBOL_GPL vmlinux 0x87217d32 dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x8721a2b4 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x87740003 fuse_conn_kill +EXPORT_SYMBOL_GPL vmlinux 0x8774eb6c pinctrl_utils_add_map_mux +EXPORT_SYMBOL_GPL vmlinux 0x8794cd19 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0x87a80c4d pinctrl_select_state +EXPORT_SYMBOL_GPL vmlinux 0x87af324c regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x87e0f97f ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x87e18e1d rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x88008bc8 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x880f1e7d skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x8813e1d9 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x881b130f rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x883c2740 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x88403363 lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x884830ee br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x887ddb24 ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0x88935b58 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x889a0a2d usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88aba665 xenbus_watch_path +EXPORT_SYMBOL_GPL vmlinux 0x88b51d48 device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88c8a4dc blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x88cf52e9 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x88d3132d pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0x891a5a7f gnttab_max_grant_frames +EXPORT_SYMBOL_GPL vmlinux 0x89243ecb posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x89373b3b scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x894f2f98 ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x89502f0c gnttab_subpage_grants_available +EXPORT_SYMBOL_GPL vmlinux 0x8956aeae apei_exec_ctx_init +EXPORT_SYMBOL_GPL vmlinux 0x89700b6b cgroup_is_descendant +EXPORT_SYMBOL_GPL vmlinux 0x8975c968 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0x899e715b crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x89b68927 irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x89b995ff extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x89b9e10a xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89ebca73 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x8a12de42 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x8a2b14ba wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0x8a3ef507 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x8a4b8066 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x8a4f1cfc efivar_entry_add +EXPORT_SYMBOL_GPL vmlinux 0x8a5a9fbc ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x8a789549 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x8a78989f irq_from_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x8a7cb9c4 platform_thermal_package_rate_control +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8abe82d4 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x8ad531b7 cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0x8ad9c562 usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x8af45710 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x8b03d9dc pinctrl_find_gpio_range_from_pin +EXPORT_SYMBOL_GPL vmlinux 0x8b04668e bind_interdomain_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x8b621110 xenbus_dev_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x8b63cf8b sec_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x8b66f9e0 xen_platform_pci_unplug +EXPORT_SYMBOL_GPL vmlinux 0x8b6f184b serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x8b9200fd lookup_address +EXPORT_SYMBOL_GPL vmlinux 0x8bbd3116 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0x8bd3354e debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x8be9bf82 xen_swiotlb_sync_single_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0x8bfcf6f1 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c04fc40 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x8c06a108 xenbus_transaction_start +EXPORT_SYMBOL_GPL vmlinux 0x8c4e274e regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x8cd9f935 setup_APIC_eilvt +EXPORT_SYMBOL_GPL vmlinux 0x8cea765f memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x8d111d9c kick_process +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d2d8d00 relay_close +EXPORT_SYMBOL_GPL vmlinux 0x8d36c088 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0x8d7d0542 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x8d86aa58 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x8dc41f3d __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x8ddac913 xenbus_dev_probe +EXPORT_SYMBOL_GPL vmlinux 0x8dde9392 bdi_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x8e0bad6b get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x8e0eabdc simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x8e50efd8 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x8e9920fe pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x8e9c7933 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x8ea169ee pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x8edfb574 injectm +EXPORT_SYMBOL_GPL vmlinux 0x8f1b0019 cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0x8f24128a crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x8f53eb0b pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x8f6b40bc platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f87f792 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x8f8a365c ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x8f902a2c gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0x8f933dcb rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0x8fc1e7a5 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x8fec6223 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x9003aa50 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0x900480a0 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x9009602a acpi_bus_get_ejd +EXPORT_SYMBOL_GPL vmlinux 0x901d6bba ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x90228869 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x90470176 sk_unattached_filter_create +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x90705b7f syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90a5625c unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x90c086dc xenbus_map_ring_valloc +EXPORT_SYMBOL_GPL vmlinux 0x90c66b90 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x90db74d4 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x90dc29df aout_dump_debugregs +EXPORT_SYMBOL_GPL vmlinux 0x90de0452 platform_thermal_package_notify +EXPORT_SYMBOL_GPL vmlinux 0x90df4cc3 percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9104fbec debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x911e2218 blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x91286982 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x9133f512 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x91431f6b dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x915839b3 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x91750a53 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x91794be9 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x919268b9 xen_unmap_domain_mfn_range +EXPORT_SYMBOL_GPL vmlinux 0x91ac78b2 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x91af0527 regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91dc3c3a kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x91e71f68 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x91f6bd23 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x9208f65e __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x920cc389 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x923cfb30 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x92449eff pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x926618a9 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x92a42c7d efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0x92b0584b regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x92b150ab tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x92b37578 dev_hard_start_xmit +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x9312d80e evtchn_put +EXPORT_SYMBOL_GPL vmlinux 0x9324e78e acpi_dev_resource_memory +EXPORT_SYMBOL_GPL vmlinux 0x9326cf5c anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x93307012 need_load_eval +EXPORT_SYMBOL_GPL vmlinux 0x9331b8fa blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x937b1ab1 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x93abb1c6 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x93df9259 rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0x940ee4b7 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x94133b8c skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0x941579de ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x943fc708 xen_setup_shutdown_event +EXPORT_SYMBOL_GPL vmlinux 0x94444fa7 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x9454c675 acpi_kobj +EXPORT_SYMBOL_GPL vmlinux 0x94698aa4 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x9493b90a fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x949f7342 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x94a66b2f bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x94a68723 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x94c318be apei_exec_collect_resources +EXPORT_SYMBOL_GPL vmlinux 0x94d0f487 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x94d4b39e tpm_store_cancel +EXPORT_SYMBOL_GPL vmlinux 0x94e2e596 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x94f082df usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x94ff94ff sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x95114100 acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x95824396 serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x95847848 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95c18e7e xen_swiotlb_sync_single_for_device +EXPORT_SYMBOL_GPL vmlinux 0x95d6f5c3 init_fpu +EXPORT_SYMBOL_GPL vmlinux 0x95dbc83d exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x95f793cc usb_acpi_power_manageable +EXPORT_SYMBOL_GPL vmlinux 0x96157343 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x964add15 xenbus_scanf +EXPORT_SYMBOL_GPL vmlinux 0x964d5c39 acpi_os_map_memory +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x96a22790 vmcore_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x96a3b8ef rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x96aa51b4 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x96e71ae8 regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x9730c462 gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x9746c9c2 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0x97500554 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x979e4206 rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x97add864 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x97c539a4 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97fbe129 device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x981b3a76 nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x98403f48 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9874c1d8 __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x987fc1c9 cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x989ae062 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0x98acd8df relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x98ad8937 regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0x98b878ff tpm_release +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x991d91d3 inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x9922e219 tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x99493a7d usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x995ae983 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x9962ff03 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0x9973add9 __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x999ba5f9 rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x99b00b71 rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x99e28f10 __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0x99fa9fcd platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x9a00c46a pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x9a0737b1 pinctrl_pm_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a2313f6 regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0x9a4b04b3 xen_swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0x9a5f726b ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x9a71fae7 vtime_guest_exit +EXPORT_SYMBOL_GPL vmlinux 0x9a7878e3 thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0x9a79175b pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9aca444b get_monotonic_boottime +EXPORT_SYMBOL_GPL vmlinux 0x9ad9bec0 iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9aeba7e1 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x9b1bdd89 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x9b3f579a task_current_syscall +EXPORT_SYMBOL_GPL vmlinux 0x9b6a7412 idle_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x9b77e0b8 uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9b8d9503 hv_register_vmbus_handler +EXPORT_SYMBOL_GPL vmlinux 0x9b9f3648 pcibios_scan_specific_bus +EXPORT_SYMBOL_GPL vmlinux 0x9ba2bb2b gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x9bc9b929 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x9bd72b78 apei_write +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9c07c642 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x9c0ac982 dm_set_device_limits +EXPORT_SYMBOL_GPL vmlinux 0x9c2de449 memory_add_physaddr_to_nid +EXPORT_SYMBOL_GPL vmlinux 0x9c2e4b66 acpi_unregister_gsi +EXPORT_SYMBOL_GPL vmlinux 0x9c3c17eb pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0x9c455e9c ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x9c561385 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x9ca78da9 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x9caa4955 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0x9cb941b1 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ccd92eb tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x9cd95b01 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x9cfd36d4 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9d06688b register_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x9d138533 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x9d3850e1 gnttab_alloc_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x9d3d35ae blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x9d500f2f regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x9d54d0e3 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0x9d9e155d pv_info +EXPORT_SYMBOL_GPL vmlinux 0x9db84564 sdhci_pci_o2_probe_slot +EXPORT_SYMBOL_GPL vmlinux 0x9dbf939a dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x9de69f41 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x9e0e1370 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x9e2f1f78 kobj_completion_init +EXPORT_SYMBOL_GPL vmlinux 0x9e5c9c1b of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x9e76d679 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x9ec46790 regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x9ed3143c leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ee6dfdd relay_open +EXPORT_SYMBOL_GPL vmlinux 0x9f023d4e dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0x9f0440b9 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x9f0664bf dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0x9f12060b balloon_mapping_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9f159db1 user_read +EXPORT_SYMBOL_GPL vmlinux 0x9f56639a efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x9f85d575 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x9f89b448 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x9fa087cd usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x9fbca089 pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe49732 rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9ffe7d05 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0xa00dd448 usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xa038e761 percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa05f3470 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xa085e31a pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xa09a075d tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0xa0afdf66 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0xa0c69b30 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0xa0c71dac spi_populate_sync_msg +EXPORT_SYMBOL_GPL vmlinux 0xa0d5b41f devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa0d85db5 device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0xa0eeb05d lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0xa1112ade spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xa111d509 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0xa11216be xen_store_domain_type +EXPORT_SYMBOL_GPL vmlinux 0xa12d929d desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0xa139920d __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa156a1f2 erst_get_record_id_end +EXPORT_SYMBOL_GPL vmlinux 0xa1df540a hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0xa1f79553 xen_create_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0xa21d34b0 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xa22c9dcb __remove_pages +EXPORT_SYMBOL_GPL vmlinux 0xa22ee91d debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0xa23437fe stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0xa2450b45 queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa28339e5 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0xa2ad13ee tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0xa2b9c993 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xa2cf7e06 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0xa2d453a7 dm_kill_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0xa2d70fec sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0xa2e50f4f file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0xa3479af7 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0xa34df22c regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xa353fffc xenbus_rm +EXPORT_SYMBOL_GPL vmlinux 0xa35d6353 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xa366846f ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0xa37935dd inet6_lookup_listener +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 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3d90dcd dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xa3e0e7a3 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa3f61bf5 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0xa41ca7cb devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xa452c297 hpet_mask_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa452f2a4 xen_pirq_from_irq +EXPORT_SYMBOL_GPL vmlinux 0xa45b9c13 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xa466de38 acpi_processor_ffh_cstate_enter +EXPORT_SYMBOL_GPL vmlinux 0xa46c47f6 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0xa47cd24a locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa48d9ff0 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa4904cee perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0xa49acd8a devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa4d58669 math_state_restore +EXPORT_SYMBOL_GPL vmlinux 0xa4f5233e platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0xa5424ceb usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0xa56ca855 tracepoint_iter_stop +EXPORT_SYMBOL_GPL vmlinux 0xa5847c69 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0xa59692fb trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xa59d5297 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa59f1cc7 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0xa5a0fad7 device_register +EXPORT_SYMBOL_GPL vmlinux 0xa5a7dda2 regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xa5cc1940 acpi_match_device +EXPORT_SYMBOL_GPL vmlinux 0xa5ddae71 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xa5ec2ace ref_module +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa60ce443 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0xa617dd7b __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0xa61de15c kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa62892c6 efivar_sysfs_list +EXPORT_SYMBOL_GPL vmlinux 0xa629a087 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xa6396c5e xen_swiotlb_map_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0xa66438e8 erst_read +EXPORT_SYMBOL_GPL vmlinux 0xa6735bec rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xa6763ae5 gnttab_unmap_refs +EXPORT_SYMBOL_GPL vmlinux 0xa6a0a273 max77693_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6cea1df wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0xa6e10638 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa71441c5 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0xa723148d key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0xa724257f init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0xa7378000 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xa73c6225 user_update +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa75811d0 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0xa76026d4 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0xa78a03e2 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0xa7909aa0 efivars_register +EXPORT_SYMBOL_GPL vmlinux 0xa7aae3e7 tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0xa7d8c622 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xa7f34812 adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xa7f92105 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0xa801b359 efivar_entry_iter_begin +EXPORT_SYMBOL_GPL vmlinux 0xa80200e7 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0xa832d7bf skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa8783ed2 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0xa8aea124 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0xa8e7ee1e sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0xa8f00241 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xa8faaae0 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0xa9126bff hpet_set_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa9223824 cgroup_unload_subsys +EXPORT_SYMBOL_GPL vmlinux 0xa925e478 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0xa92df4ad watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0xa944a8e2 ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa94581a7 rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0xa953ab0f pci_pri_enabled +EXPORT_SYMBOL_GPL vmlinux 0xa95dbd22 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa95e1a1b replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0xa980af16 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xa9a82042 gnttab_trans_grants_available +EXPORT_SYMBOL_GPL vmlinux 0xa9ae888a cgroup_add_cftypes +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9fc3f54 gnttab_grant_foreign_access_trans +EXPORT_SYMBOL_GPL vmlinux 0xaa26c88a klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xaa7d6e0e shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xaa88cd6f pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaaaa3be0 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0xaac8c2bd sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0xaaeaec0c unregister_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0xaaf5353c extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xaaf787cf pwm_config +EXPORT_SYMBOL_GPL vmlinux 0xab01acbe gnttab_request_free_callback +EXPORT_SYMBOL_GPL vmlinux 0xab1a7680 platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0xab201cd4 pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xab27d1ba inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0xab38b32e sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0xab4180f8 rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xab6a3a82 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab6e2110 regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0xab95e226 skb_gro_receive +EXPORT_SYMBOL_GPL vmlinux 0xabc51c05 gpiochip_add_pin_range +EXPORT_SYMBOL_GPL vmlinux 0xabdc5d0a devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xabea3957 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0xabed3174 sec_reg_update +EXPORT_SYMBOL_GPL vmlinux 0xabedead0 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xabf72e5a input_class +EXPORT_SYMBOL_GPL vmlinux 0xac2c4279 unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xac4824e4 dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0xac83139d do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xac9ce195 kvm_async_pf_task_wait +EXPORT_SYMBOL_GPL vmlinux 0xacab71eb tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0xacaebe00 kobj_completion_del_and_wait +EXPORT_SYMBOL_GPL vmlinux 0xacafa8e7 vector_used_by_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xace68f28 rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xad039c54 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0xad0f1686 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0xad221a0f list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0xad274174 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0xad3062f8 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0xad376749 clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0xad4c7cbc regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0xad8d8ab0 xen_physdev_op_compat +EXPORT_SYMBOL_GPL vmlinux 0xada2833a ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadf061c4 xen_swiotlb_unmap_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xadf8550e sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0xae16b962 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0xae202cd1 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0xae6563dd napi_by_id +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 0xae7c5411 ms_hyperv +EXPORT_SYMBOL_GPL vmlinux 0xaea5b120 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0xaea75aae irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0xaec9df27 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xaeda0ab8 ping_close +EXPORT_SYMBOL_GPL vmlinux 0xaee51a1c mddev_init +EXPORT_SYMBOL_GPL vmlinux 0xaef5960c perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0xaef906a6 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0xaefc3815 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0xaf401aff irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0xaf4facc2 devres_find +EXPORT_SYMBOL_GPL vmlinux 0xaf5ec7b3 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xaf7bbe34 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xaf7ebae0 gnttab_map_refs +EXPORT_SYMBOL_GPL vmlinux 0xaf8e02d2 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xafccf307 ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0xafccf57e acpi_dev_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xafff65d7 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0xb00602b3 regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0xb023a593 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0xb02ac411 register_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0c96774 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xb0d1656c gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0xb10d55bc cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb15d18cb xen_register_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0xb172ffac efivars_sysfs_init +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb191d405 devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0xb192bc47 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0xb1944a82 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0xb1a336f5 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0xb1a7e3f6 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1b30ad2 led_trigger_blink +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 0xb1edf760 sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb239dcac tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xb24159f6 pinctrl_add_gpio_ranges +EXPORT_SYMBOL_GPL vmlinux 0xb24c7239 cpufreq_notify_transition +EXPORT_SYMBOL_GPL vmlinux 0xb2555e79 blkdev_aio_write +EXPORT_SYMBOL_GPL vmlinux 0xb26e9e36 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xb2a648fc usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xb2ce874b securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xb2d071b8 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb2fe9047 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xb3253ed9 hpet_rtc_timer_init +EXPORT_SYMBOL_GPL vmlinux 0xb346caa8 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb347bb2c work_busy +EXPORT_SYMBOL_GPL vmlinux 0xb3567497 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xb35f20ad __module_address +EXPORT_SYMBOL_GPL vmlinux 0xb383c4e3 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xb39da00d __online_page_set_limits +EXPORT_SYMBOL_GPL vmlinux 0xb3acafe5 cgroup_taskset_next +EXPORT_SYMBOL_GPL vmlinux 0xb3caa62c acpi_bus_trim +EXPORT_SYMBOL_GPL vmlinux 0xb3eb89e3 xenbus_match +EXPORT_SYMBOL_GPL vmlinux 0xb40275be wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xb42e0ce1 sec_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xb42e9897 usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xb431113a da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0xb4321e88 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb4578d6f hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0xb458476e dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0xb4759adc stop_machine +EXPORT_SYMBOL_GPL vmlinux 0xb4a9768e crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0xb4b3fc65 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xb4b7177e __class_create +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4dcc312 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0xb4e14553 gnttab_query_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb504dee4 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb5522e09 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xb57a7c86 driver_register +EXPORT_SYMBOL_GPL vmlinux 0xb5845f5e platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb585e7cb ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb59bf48f mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5a4e525 iommu_map +EXPORT_SYMBOL_GPL vmlinux 0xb5ab13c8 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0xb5cb8145 hrtimer_get_res +EXPORT_SYMBOL_GPL vmlinux 0xb5cc705c regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb5d379f4 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0xb5dba7cd sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb61de2d5 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0xb6230f1f gnttab_grant_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb6238e6e spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb66421b2 acpi_str_to_uuid +EXPORT_SYMBOL_GPL vmlinux 0xb67b2219 cm_suspend_again +EXPORT_SYMBOL_GPL vmlinux 0xb67bb696 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6c0339f crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0xb6c635af wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xb6fbdda1 rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0xb709e339 efivar_validate +EXPORT_SYMBOL_GPL vmlinux 0xb71876e3 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0xb718f2f9 sfi_table_parse +EXPORT_SYMBOL_GPL vmlinux 0xb71cbae9 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0xb7497017 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0xb7851428 irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0xb799df71 pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xb7a059d9 regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0xb7a2561b swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0xb7aa1172 xenbus_frontend_closed +EXPORT_SYMBOL_GPL vmlinux 0xb7cdc3e8 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0xb7d7c12e hpet_set_alarm_time +EXPORT_SYMBOL_GPL vmlinux 0xb7e7315b regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0xb7ebc0d2 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xb7f51e56 user_match +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb801f7e4 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0xb8577808 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0xb85a0ab8 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xb87154bc spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0xb88d81f0 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xb8b2b1f7 mce_register_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0xb8f213e1 device_attach +EXPORT_SYMBOL_GPL vmlinux 0xb8f3fe39 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb924bd70 sysfs_get +EXPORT_SYMBOL_GPL vmlinux 0xb93124f8 register_mce_write_callback +EXPORT_SYMBOL_GPL vmlinux 0xb9330c79 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb93bd0d1 list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xb99d5837 xenbus_read +EXPORT_SYMBOL_GPL vmlinux 0xb99e7621 debugfs_create_x8 +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 0xb9d7da8c pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xba30ab64 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xba563bae rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xba7294f7 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0xba92f9ff regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0xba96760c perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0xbacc2c03 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xbaed9a15 virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0xbaf84c60 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0xbb01aafc napi_hash_del +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 0xbb2611e7 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xbba3f952 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xbbb28760 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0xbbb38239 btree_last +EXPORT_SYMBOL_GPL vmlinux 0xbbb98859 edid_info +EXPORT_SYMBOL_GPL vmlinux 0xbbcab80d cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xbbcdef96 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0xbbd41ea3 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0xbbd4f657 xen_pcpu_id +EXPORT_SYMBOL_GPL vmlinux 0xbc01dcce ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0xbc18bfac mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0xbc3523bb sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0xbc420b98 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xbc47fd49 __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0xbc6b1475 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0xbc7031e5 ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xbc7d989c pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcad9ade rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xbcb838a1 amd_flush_garts +EXPORT_SYMBOL_GPL vmlinux 0xbcc1a500 agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbd22e2a1 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0xbd2acb79 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0xbd2fc984 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0xbd480943 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0xbd506a46 unregister_hotplug_dock_device +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd5e7eac acpi_dev_pm_detach +EXPORT_SYMBOL_GPL vmlinux 0xbd8abe2e pinctrl_remove_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xbd9bbeeb pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0xbdaf5686 get_compat_timeval +EXPORT_SYMBOL_GPL vmlinux 0xbdb14a59 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0xbdbfd330 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0xbdcfb871 i2c_probe_func_quick_read +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 0xbddb0f95 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0xbdf5f05f usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xbdf8e6e8 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xbdfd0a3d xen_unregister_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe2bf0ea simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0xbe380f15 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0xbe47044b skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0xbe4c859c pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0xbe5d0996 idle_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbe7e7783 bus_register +EXPORT_SYMBOL_GPL vmlinux 0xbe7f0616 dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0xbe8b39a4 class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xbe8bdea6 ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xbe8ee2dd usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbebf1b3d crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0xbed20d9a __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0xbed3b252 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0xbee02fd9 usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0xbee8a32b da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xbeecbe15 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf405bf7 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0xbf61a3e2 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbf82e6af synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0xbfa38585 lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xbfb65349 ping_hash +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfc42e32 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xbfd61828 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0900fcf acpi_os_get_iomem +EXPORT_SYMBOL_GPL vmlinux 0xc09e3137 pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xc0a310e1 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0xc0b0e6ec btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0xc0b37c6f wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xc0bf6ead timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xc0c7e5bc dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0xc0d01bc0 percpu_ref_cancel_init +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0e176e6 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0xc0e90f8d sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0xc0f34366 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0xc10ad7ac da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0xc113e4bf pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc11b45c6 gpiod_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xc11bd00f tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc14c2824 xenbus_probe +EXPORT_SYMBOL_GPL vmlinux 0xc164642e xenbus_otherend_changed +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc17ef6dc iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0xc1b48dc0 pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0xc1c5ccbb crypto_rng_type +EXPORT_SYMBOL_GPL vmlinux 0xc1dc0d5d acpi_find_child +EXPORT_SYMBOL_GPL vmlinux 0xc1f81642 devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0xc20c7606 thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0xc21bd236 dm_underlying_device_busy +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc250b10a xenbus_map_ring +EXPORT_SYMBOL_GPL vmlinux 0xc26351f8 bind_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc285eb35 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0xc3068a99 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0xc323010f regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc34efe27 snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0xc35270d3 dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xc361817d ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc373ec9c tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xc37763fc dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xc38533fc usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0xc3a5e5f2 __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0xc3b398a1 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0xc3e4e650 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xc3ed2f47 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0xc3fdc86e crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xc407a1d4 gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc43c71cb scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0xc447dd93 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc496b23e fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0xc4975851 percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0xc4cbb811 rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0xc4e0cdab sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0xc4e84d1b wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xc4f40dd3 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xc4fae400 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0xc512626a __supported_pte_mask +EXPORT_SYMBOL_GPL vmlinux 0xc51f7d53 dm_requeue_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0xc5397da6 xenbus_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc577d3fa device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0xc5cbcc3f tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0xc60f75ec __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc61f3611 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc6242146 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xc63a1109 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc667061f pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc690866c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xc6946e63 sdhci_pci_o2_resume +EXPORT_SYMBOL_GPL vmlinux 0xc6947827 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6a53fdb sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xc6ba51b5 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0xc6d7ad42 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0xc6e25e99 tracepoint_iter_start +EXPORT_SYMBOL_GPL vmlinux 0xc6faa0b6 devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xc7002ac4 evtchn_make_refcounted +EXPORT_SYMBOL_GPL vmlinux 0xc7185800 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0xc721637d __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc73de59c fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0xc7578047 pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7c397cf driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7cf363d relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0xc7d5ae77 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xc7de01d5 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc7f432e9 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0xc80f6684 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0xc823088f blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0xc8480287 efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0xc85ad4a5 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc87e487a sched_clock_idle_sleep_event +EXPORT_SYMBOL_GPL vmlinux 0xc8928bdc usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xc8943004 da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xc899c0f2 wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0xc899cbdb vtime_common_account_irq_enter +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc9235961 __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xc925ab24 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc9641b48 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0xc966aa9c transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0xc97d1140 cpufreq_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0xc9c3f176 hpet_register_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xc9dd573f i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xca04d9c2 arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0xca083d50 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0xca0b2164 iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0xca67266a watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca81ea9a xenbus_transaction_end +EXPORT_SYMBOL_GPL vmlinux 0xca85d8cf tracepoint_probe_update_all +EXPORT_SYMBOL_GPL vmlinux 0xca8cd87e m2p_add_override +EXPORT_SYMBOL_GPL vmlinux 0xcaa43f93 device_add +EXPORT_SYMBOL_GPL vmlinux 0xcaabfadd napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xcab8d8c3 pinctrl_lookup_state +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcac713fc ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0xcad23ba5 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0xcadd683d md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0xcae1f249 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0xcaf3545d __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xcafb1401 regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xcb03b234 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0xcb06f73e pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0xcb09de12 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb411a47 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0xcb44be2b inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xcb454bf7 rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb4a36f7 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0xcb4d14a4 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xcb8a4686 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0xcb9b162e clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0xcbb7a25c iommu_domain_has_cap +EXPORT_SYMBOL_GPL vmlinux 0xcbc260fb regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xcbc6bb2e regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xcbc848e8 agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcc05f130 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0xcc0921cb ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xcc0cc8e8 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0xcc1dbf30 da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xcc1f1c3d inet_twdr_hangman +EXPORT_SYMBOL_GPL vmlinux 0xcc286765 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xcc2eda83 get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0xcc45e95f pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0xcc46dc8d wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0xcc47035c dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xcc6ab305 is_dock_device +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcc9a4c89 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xcca5971e verify_signature +EXPORT_SYMBOL_GPL vmlinux 0xccaeea83 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0xccc44679 ata_acpi_cbl_80wire +EXPORT_SYMBOL_GPL vmlinux 0xccc560b6 xenbus_dev_cancel +EXPORT_SYMBOL_GPL vmlinux 0xccce8bf7 xenbus_read_otherend_details +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccea4e34 perf_get_x86_pmu_capability +EXPORT_SYMBOL_GPL vmlinux 0xccf3d90a inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0xccf6aa1b sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0xcd37b817 thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0xcd7bb4bd devres_get +EXPORT_SYMBOL_GPL vmlinux 0xcd82d3c3 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcda2b4dd regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xcdc99ea1 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcdcfe6c4 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xcdd2100d __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xcde4aba6 xenbus_free_evtchn +EXPORT_SYMBOL_GPL vmlinux 0xce0b9b59 max77693_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xce132cb7 netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0xce46e140 ktime_get_ts +EXPORT_SYMBOL_GPL vmlinux 0xce579c8d ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6ac6a7 acpi_subsys_prepare +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce6e58d9 regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0xce97d129 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xce9b9407 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0xceb1f126 mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0xcecd98eb pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xceeb085b inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0xceec1ae2 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0xcef1dd0e perf_check_microcode +EXPORT_SYMBOL_GPL vmlinux 0xcf1d6d6e thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0xcf3778cd cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0xcf403e96 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf5f08d6 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xcf6482a9 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0xcf6591ea kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0xcf797354 rtc_set_mmss +EXPORT_SYMBOL_GPL vmlinux 0xcf94b644 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0xcfa39eca __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcfc62f27 xen_start_info +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfde5862 __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xcffa2aff spi_populate_width_msg +EXPORT_SYMBOL_GPL vmlinux 0xcffa6737 xen_swiotlb_dma_mapping_error +EXPORT_SYMBOL_GPL vmlinux 0xd00e1b3a md_new_event +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd0426e73 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0xd0458ccb xenbus_strstate +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd070c9b9 regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0xd0a7384c fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0xd0aaee16 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0xd0b488d5 tpm_show_pubek +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0c07e44 pinctrl_force_sleep +EXPORT_SYMBOL_GPL vmlinux 0xd103569c cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0xd10476a1 tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0xd14bc4d9 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xd14c861d sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xd14ddf3e net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0xd1507e59 erst_clear +EXPORT_SYMBOL_GPL vmlinux 0xd154bc31 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd1895996 cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0xd1897e92 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0xd1958cc9 pinctrl_utils_add_config +EXPORT_SYMBOL_GPL vmlinux 0xd1b2db37 tracepoint_probe_register_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xd1bc048c ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xd1c47ee8 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd22214a3 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xd2471898 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0xd258217d clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0xd26b6e87 vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd2a74b8f ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xd2afe2b2 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xd2c58ab2 apei_exec_noop +EXPORT_SYMBOL_GPL vmlinux 0xd2c98893 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0xd2f4f7f2 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0xd321a4fb generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0xd32ea772 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0xd32fe193 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xd36e34e2 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0xd398cf80 regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0xd39b4efe xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0xd3a78e8c ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0xd3b86b07 reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xd3d349cb ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0xd3db4264 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0xd3f569e0 of_reset_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd426dbc4 erst_get_record_count +EXPORT_SYMBOL_GPL vmlinux 0xd42f9260 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0xd4397367 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd459661f ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xd467f2bf yield_to +EXPORT_SYMBOL_GPL vmlinux 0xd47c9325 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xd49782dc regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xd4a94b77 x86_hyper_kvm +EXPORT_SYMBOL_GPL vmlinux 0xd4aed165 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4cad45e clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0xd4d7370c hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0xd502fd75 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xd52f1314 blkio_subsys +EXPORT_SYMBOL_GPL vmlinux 0xd5431b48 iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xd545ab91 alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0xd55418bb debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0xd555c36f stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd5674d82 cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd5a37da7 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0xd5b9c026 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0xd5ba1aa6 __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5c36c40 __tracepoint_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0xd6011bf5 srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0xd617d497 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0xd6269f5c gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xd65b9513 print_context_stack +EXPORT_SYMBOL_GPL vmlinux 0xd6639154 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0xd66a8f98 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd6934469 fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0xd6b11270 scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0xd6b48b0b virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0xd6c7a3bd device_initialize +EXPORT_SYMBOL_GPL vmlinux 0xd6d9dbeb uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0xd6e5425a pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xd6e70da9 device_for_each_child +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 0xd7089cc1 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0xd72feba2 xenbus_read_driver_state +EXPORT_SYMBOL_GPL vmlinux 0xd7399d2a efivar_entry_iter_end +EXPORT_SYMBOL_GPL vmlinux 0xd73ed19e sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0xd753e1fe regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0xd757a8d7 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd77c48c1 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0xd7a5f466 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0xd7d7578f usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd8143cd0 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd821deaa shake_page +EXPORT_SYMBOL_GPL vmlinux 0xd8385c1d usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0xd85d5c34 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0xd85f94d8 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd88c0336 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0xd8ccc31a blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0xd8fc2454 acpi_subsys_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0xd8ff97b0 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0xd90438c8 xen_remap_domain_mfn_range +EXPORT_SYMBOL_GPL vmlinux 0xd906c508 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xd919806a amd_cache_northbridges +EXPORT_SYMBOL_GPL vmlinux 0xd91dcec5 register_hotplug_dock_device +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd947734f reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd9516926 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0xd95b2ff8 PageHuge +EXPORT_SYMBOL_GPL vmlinux 0xd96a2de6 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xd98a7bd7 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xd98e0d0f pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0xd9a34035 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0xd9b8bf3f serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0xd9e27b41 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0xd9e53ecc acpi_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xd9eb82e8 ftrace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xd9f97c0c i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xd9ffe0d3 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0xda0c7808 pwm_free +EXPORT_SYMBOL_GPL vmlinux 0xda2c876e device_rename +EXPORT_SYMBOL_GPL vmlinux 0xda3e080f mmput +EXPORT_SYMBOL_GPL vmlinux 0xda44cb37 setup_charger_manager +EXPORT_SYMBOL_GPL vmlinux 0xda679bb9 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0xda8bcb43 regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xda92411d ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0xdab50ae7 fpu_finit +EXPORT_SYMBOL_GPL vmlinux 0xdabaa8dd nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xdabb2dfa pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0xdabfac78 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0xdada0694 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0xdae336ae shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb028f40 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xdb04cacc tracepoint_probe_unregister_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xdb0f9ea9 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xdb18aaba crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0xdb3cd7d5 xenbus_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0xdb414812 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb9c1c6b xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0xdbae9f42 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc14a211 xen_hvm_evtchn_do_upcall +EXPORT_SYMBOL_GPL vmlinux 0xdc1e15f1 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0xdc1ff5db ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0xdc2b2322 led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc511723 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xdc611063 filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xdc6699cb acpi_dev_free_resource_list +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdcb8361c crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0xdcd76146 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0xdcdb057d wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xdcdd56d7 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xdce542c5 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0xdcf16b76 pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0xdcf8a488 ping_err +EXPORT_SYMBOL_GPL vmlinux 0xdd0461a5 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd6618ba btree_remove +EXPORT_SYMBOL_GPL vmlinux 0xdd6fb335 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0xdd794d33 phys_wc_to_mtrr_index +EXPORT_SYMBOL_GPL vmlinux 0xdd83dc03 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0xdd8992c7 regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0xdd96f283 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xddaca943 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0xddd1724d thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xddf163c1 devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xde01fcc0 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0xde10d82b rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0xde2f90a5 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xde3083a6 blk_queue_bio +EXPORT_SYMBOL_GPL vmlinux 0xde455b8b sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0xde4c2acd sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0xde4e19ba klist_next +EXPORT_SYMBOL_GPL vmlinux 0xde636903 pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xde690199 ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xde6dd6a3 cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0xde7459a3 devm_acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xde77f39d pci_sriov_migration +EXPORT_SYMBOL_GPL vmlinux 0xde7b0305 xenbus_dev_fatal +EXPORT_SYMBOL_GPL vmlinux 0xde7c8a61 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xde95183a device_store_int +EXPORT_SYMBOL_GPL vmlinux 0xdeb9deb2 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0xdee5834c devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xdf04229f ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf148577 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xdf166e60 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0xdf1882af dbgp_reset_prep +EXPORT_SYMBOL_GPL vmlinux 0xdf221e72 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xdf267e87 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0xdf4f0853 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xdf66ca81 ucode_cpu_info +EXPORT_SYMBOL_GPL vmlinux 0xdf7a4b6a tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0xdf9a7998 default_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0xdfdf9c10 __tracepoint_unmap +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe01aa597 pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0xe02e7272 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe03f388c usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0xe051ff57 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0xe0746c17 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xe075da8d xen_swiotlb_sync_sg_for_device +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe0ad6f89 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0xe0c77bb5 mce_notify_irq +EXPORT_SYMBOL_GPL vmlinux 0xe0d5f921 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe10cd6ad erst_get_record_id_begin +EXPORT_SYMBOL_GPL vmlinux 0xe13c563f extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0xe16b0d30 unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe186adc2 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0xe19143de tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xe1929fda da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1befe1c dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0xe1c32794 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0xe200cb06 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0xe208a944 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xe234e507 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0xe26e46f0 acpi_dev_resource_ext_address_space +EXPORT_SYMBOL_GPL vmlinux 0xe26f3920 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0xe270aab5 cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0xe278cc8c dma_buf_export_named +EXPORT_SYMBOL_GPL vmlinux 0xe295c0ff is_hpet_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe2b8a657 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0xe2e7840d regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xe2f0f602 devm_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe311f8d4 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0xe313881d ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0xe33282d8 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0xe3347617 tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0xe336985f shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0xe341b851 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0xe37eecb8 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe38944df platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0xe3abe939 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0xe3bc7fd4 hpet_unregister_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xe3ca0c52 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xe3d53d64 iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0xe3e269f0 smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xe3f63ae9 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0xe401b986 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0xe40b4268 srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0xe41534ce bind_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe444f3bb pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0xe45ae798 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0xe475189e crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xe4c4b28f gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xe4e68bc8 apei_map_generic_address +EXPORT_SYMBOL_GPL vmlinux 0xe4fb7727 ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0xe5083cf7 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0xe512fc8d sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0xe51dd95d regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xe52ae762 __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0xe5438f69 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0xe56fd45d sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5daa90a ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0xe5fcbadf regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xe611727b crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0xe6131ea9 acpi_dev_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0xe627278a gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0xe64534ac udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0xe64ad8ea unregister_nmi_handler +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe6580600 palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0xe6602e9f perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0xe66431e9 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0xe6935e6e ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0xe6b1a2f1 xenbus_register_backend +EXPORT_SYMBOL_GPL vmlinux 0xe6c3e53b ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6c8b53f usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe705a821 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0xe7232e0f user_return_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe7247403 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0xe73dc6ba vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0xe75d6006 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe77a7d9f pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0xe78322d9 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xe7f3608a hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0xe7f9572a input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe803fed1 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0xe80f064b crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe81658c4 cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0xe8176564 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe83931d8 rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0xe8476513 xenbus_bind_evtchn +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe86b3ba1 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe8821972 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0xe88dbc11 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0xe89bd243 ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe89cb3f6 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0xe8a33245 inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0xe8e1bb73 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0xe8f2a42d tpm_write +EXPORT_SYMBOL_GPL vmlinux 0xe90961df __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xe90aa499 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0xe9306f9f rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe9436683 page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0xe94b264f stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0xe952fdf8 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0xe954e631 pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xe95622e0 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0xe95abfc4 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xe962e153 ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0xe969a7a4 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0xe96df9a9 efivars_kobject +EXPORT_SYMBOL_GPL vmlinux 0xe978f99b dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0xe98670a4 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xe99023e6 acpi_ec_add_query_handler +EXPORT_SYMBOL_GPL vmlinux 0xe9af496c rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0xe9b74f4f pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xe9c59790 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0xe9ce931a kvm_para_available +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9dcf7f3 clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0xe9df4500 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea1f1352 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0xea29a2f5 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea510aeb ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0xea628c20 bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0xea987f82 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0xead0ff70 pinctrl_utils_add_map_configs +EXPORT_SYMBOL_GPL vmlinux 0xeadcf10b __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0xeadf816e klist_init +EXPORT_SYMBOL_GPL vmlinux 0xeafb3179 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xeb0ff480 __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xeb1b5016 sysfs_notify_dirent +EXPORT_SYMBOL_GPL vmlinux 0xeb1c3628 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xeb2798f7 xen_destroy_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0xeb2d01c5 regulator_set_optimum_mode +EXPORT_SYMBOL_GPL vmlinux 0xeb370805 __apei_exec_run +EXPORT_SYMBOL_GPL vmlinux 0xeb833c22 xen_has_pv_disk_devices +EXPORT_SYMBOL_GPL vmlinux 0xeb99ebe1 serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0xeb9a1fae ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0xeba745e1 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0xebd6198e irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0xebd964e5 regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0xebe5d915 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xebf7aa91 devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0xec19de8a fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec24a9e7 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec2daf6d wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xec411c2b devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xec631f34 remove_memory +EXPORT_SYMBOL_GPL vmlinux 0xec686c29 tpm_show_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xec785f15 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0xec82498a blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0xecad241c wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0xecad38f8 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0xecf45a02 acpi_pci_find_root +EXPORT_SYMBOL_GPL vmlinux 0xecfa302a regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0xed0875f6 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0xed14c4f6 pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0xed19c5c4 rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xed2823bd ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xed297597 kobj_completion_release +EXPORT_SYMBOL_GPL vmlinux 0xed3ade31 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0xed448798 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xed54e544 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0xed98ff6c fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0xedbc6f67 gnttab_end_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xedd49930 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0xede324c2 vtime_guest_enter +EXPORT_SYMBOL_GPL vmlinux 0xedef1e89 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xedf07226 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0xedfb397b xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0xee13e697 set_personality_ia32 +EXPORT_SYMBOL_GPL vmlinux 0xee5bb30d device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xeeb78878 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0xeec3d359 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0xeece5c21 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xeeef470d i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xeefac43f regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0xeefc1f5f crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0xef11aba5 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0xef1f6e23 apei_resources_request +EXPORT_SYMBOL_GPL vmlinux 0xef2843eb skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0xef3586a3 rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0xef4d719c unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xef5dcbea device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef71d76a dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xef782b88 gnttab_grant_foreign_access_subpage +EXPORT_SYMBOL_GPL vmlinux 0xef836b27 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xefa54a9d atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xeff3ccc1 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xeffa6b8f __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0xf024075e devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xf025aa87 preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xf04b9cd2 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xf05130e3 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0xf0696401 acpi_pci_detect_ejectable +EXPORT_SYMBOL_GPL vmlinux 0xf088f3b2 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0xf09564c9 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0xf09db4e4 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0xf0c549f7 sec_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xf0d27bff sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf1040a32 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0xf105b27d usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0xf1179e12 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xf122a574 irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0xf148565e reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xf155d57b uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xf16712fd regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf16d5514 alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0xf16f4a9a pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf186c82f nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xf1935506 virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0xf1b0aa7b pci_pri_status +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1b551d9 ibft_addr +EXPORT_SYMBOL_GPL vmlinux 0xf1dfcc89 ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0xf1ec2b89 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xf218bfc0 css_rightmost_descendant +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf21ed4af __online_page_increment_counters +EXPORT_SYMBOL_GPL vmlinux 0xf2282023 swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0xf23148a4 cper_estatus_check +EXPORT_SYMBOL_GPL vmlinux 0xf232b522 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xf233a80e pwm_request +EXPORT_SYMBOL_GPL vmlinux 0xf246e9e0 register_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf29ceb8d wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0xf2bdc641 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0xf2ecd113 __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xf2f077cc pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0xf2f4bc53 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf30a2003 acpi_ec_remove_query_handler +EXPORT_SYMBOL_GPL vmlinux 0xf30e105d ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf328c6a8 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xf32bdc5d unregister_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf33c0cd2 tpm_show_pcrs +EXPORT_SYMBOL_GPL vmlinux 0xf372f041 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0xf388e912 alarm_init +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3c41cd5 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0xf3f45c08 ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0xf41e7e43 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0xf42a13fd usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0xf42fa7d3 cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xf442887b rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0xf45c4c83 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0xf46f2fe8 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf48d50d8 preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4a86323 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0xf4ac93cd regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xf4adda5e __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0xf4b885b8 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf5172d49 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0xf523bfd6 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf55244cf pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf558ef4f irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0xf5785b42 evtchn_get +EXPORT_SYMBOL_GPL vmlinux 0xf58c763b tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0xf5921032 pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0xf5945bac gnttab_free_grant_references +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5a6f457 xenbus_watch_pathfmt +EXPORT_SYMBOL_GPL vmlinux 0xf5b83a9b led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0xf5cd4411 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0xf5d6696f __clocksource_updatefreq_scale +EXPORT_SYMBOL_GPL vmlinux 0xf5e79e6c bio_trim +EXPORT_SYMBOL_GPL vmlinux 0xf5f35adc ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0xf5fef4e3 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf611f195 __efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0xf6207efc crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0xf620aa84 ata_acpi_gtm +EXPORT_SYMBOL_GPL vmlinux 0xf6403fb9 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0xf6748423 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0xf6753690 __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0xf69f5bfa dm_dispatch_request +EXPORT_SYMBOL_GPL vmlinux 0xf6d07664 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf7016530 xenbus_gather +EXPORT_SYMBOL_GPL vmlinux 0xf7078050 task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0xf71767ca evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0xf7322bc8 pv_time_ops +EXPORT_SYMBOL_GPL vmlinux 0xf735353e ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xf73ab4f2 wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf744bbdc iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0xf7608cdf __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0xf7753778 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xf79b08b6 blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0xf7d46f55 tcp_reno_min_cwnd +EXPORT_SYMBOL_GPL vmlinux 0xf7eab213 pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xf7f5b0b2 gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0xf816c866 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf85317ba ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xf859086d ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0xf85b8804 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf8e4fa90 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0xf8ee46d8 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8f5c01f fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0xf8fda2e7 devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf90554c0 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf9598fc3 devres_release +EXPORT_SYMBOL_GPL vmlinux 0xf9765833 dmi_match +EXPORT_SYMBOL_GPL vmlinux 0xf97666a0 set_memory_rw +EXPORT_SYMBOL_GPL vmlinux 0xf9924426 arch_add_memory +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9c959c2 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9d9264e xen_have_vector_callback +EXPORT_SYMBOL_GPL vmlinux 0xfa012fe7 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa3168d3 public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0xfa4a647e klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xfa700a4f iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0xfa901b31 compat_get_timespec +EXPORT_SYMBOL_GPL vmlinux 0xfacb0627 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0xfaeb4b3b inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0xfaf35649 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xfaf52ae6 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0xfb17dec1 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb231cc6 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0xfb2337b1 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb64b230 acpi_processor_ffh_cstate_probe +EXPORT_SYMBOL_GPL vmlinux 0xfb68b96d __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xfb6d5d59 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfbb69d12 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0xfbcdbf42 rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xfbd9558d register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0xfbe3dce8 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0xfbf32810 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xfc016c9d mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc07334d device_create_file +EXPORT_SYMBOL_GPL vmlinux 0xfc0757eb xenbus_alloc_evtchn +EXPORT_SYMBOL_GPL vmlinux 0xfc201b66 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0xfc2fe322 driver_find +EXPORT_SYMBOL_GPL vmlinux 0xfc3b4246 acpi_bus_update_power +EXPORT_SYMBOL_GPL vmlinux 0xfc64fc40 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0xfc72fcea tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0xfc83866a __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xfc869803 cgroup_taskset_first +EXPORT_SYMBOL_GPL vmlinux 0xfc8e2775 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0xfc968c8b apei_exec_write_register_value +EXPORT_SYMBOL_GPL vmlinux 0xfcada883 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfcdee8cc securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xfce91db7 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0xfcef8630 rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0xfcff9512 rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0xfd0203df tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xfd0f04f7 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0xfd19dd00 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0xfd1da4e0 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xfd2ff4f7 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xfd51b281 gnttab_end_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0xfd5f3ff5 tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0xfd7243c7 erst_disable +EXPORT_SYMBOL_GPL vmlinux 0xfdda55b2 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0xfde4fcf2 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfdebe2fc usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0xfe064fee pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0xfe0dc321 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0xfe30607e bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xfe727411 get_phys_to_machine +EXPORT_SYMBOL_GPL vmlinux 0xfe98ce56 rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfed0447d inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfed3c486 powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0xfedcc299 ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff1076fc usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff5b35f8 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0xffb9b362 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xffc83a90 __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xfff6cded spi_bus_lock --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/amd64/generic.compiler +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/amd64/generic.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4 --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/amd64/generic.modules +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/amd64/generic.modules @@ -0,0 +1,3941 @@ +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250_dw +8255 +8255_pci +8390 +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm860x-ts +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +9p +9pnet +9pnet_rdma +9pnet_virtio +BusLogic +DAC960 +a100u2w +a3d +a8293 +aacraid +aat2870-regulator +aat2870_bl +ab3100 +ab3100-otp +abituguru +abituguru3 +ablk_helper +ac97_bus +acard-ahci +acecad +acenic +acer-wmi +acerhdf +acpi_extlog +acpi_ipmi +acpi_pad +acpi_power_meter +acpiphp_ibm +acquirewdt +act200l-sir +act_csum +act_gact +act_ipt +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +actisys-sir +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 +ad5930 +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 +ad9850 +ad9852 +ad9910 +ad9951 +ad_sigma_delta +adcxx +addi_apci_035 +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-keys +adp5520_bl +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads1015 +ads7828 +ads7846 +ads7871 +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adv7170 +adv7175 +adv7180 +adv_pci1710 +adv_pci1723 +adv_pci1724 +adv_pci_dio +advansys +advantechwdt +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +aes-x86_64 +aesni-intel +af-rxrpc +af9013 +af9033 +af_802154 +af_alg +af_key +af_packet_diag +affs +ah4 +ah6 +aha152x_cs +ahci +ahci_platform +aic79xx +aic7xxx +aic94xx +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +airo +airo_cs +ak8975 +algif_hash +algif_skcipher +ali-ircc +alim1535_wdt +alim7101_wdt +alphatrack +altera-ci +altera-stapl +altera_jtaguart +altera_ps2 +altera_uart +alx +ambassador +amc6821 +amd-rng +amd5536udc +amd64_edac_mod +amd76xrom +amd8111e +amd_freq_sensitivity +amd_iommu_v2 +amilo-rfkill +amplc_dio200 +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pc263 +amplc_pci224 +amplc_pci230 +amplc_pci263 +ams369fg06 +analog +anatop-regulator +ansi_cprng +anubis +aoe +apanel +apds9300 +apds9802als +apds990x +apple-gmux +apple_bl +appledisplay +applesmc +appletalk +appletouch +applicom +ar5523 +ar7part +arc-rawmode +arc-rimi +arc4 +arc_ps2 +arc_uart +arcfb +arcmsr +arcnet +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arp_tables +arpt_mangle +arptable_filter +as3711-regulator +as3711_bl +as5011 +asb100 +asc7621 +asix +ast +asus-laptop +asus-nb-wmi +asus-wmi +asus_atk0110 +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at86rf230 +at91_ether +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-pwm-bl +atmel-ssc +atmel_cs +atmel_mxt_ts +atmel_pci +atmel_pwm +atmtcp +atp +atp870u +atxp1 +aty128fb +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo-pixcir-ts +auo_k1900fb +auo_k1901fb +auo_k190x +auth_rpcgss +authenc +authencesn +autofs4 +avm_cs +avma1_cs +avmfritz +ax25 +ax88179_178a +axnet_cs +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 +bcm5974 +bcm_wimax +bcma +bcma-hcd +bd6107 +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish-x86_64 +blowfish_common +blowfish_generic +bluecard_cs +bluetooth +bma150 +bma180 +bmp085 +bmp085-i2c +bmp085-spi +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bonding +bpa10x +bpck +bpctl_mod +bpqether +bq2415x_charger +bq24190_charger +bq24735-charger +bq27x00_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +broadsheetfb +bsd_comp +bt3c_cs +bt819 +bt856 +bt866 +bt878 +btcoexist +btcx-risc +btmrvl +btmrvl_sdio +btmtk_usb +btrfs +btsdio +bttv +btuart_cs +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +bw-qcam +bypass +c-qcam +c2port-duramar2150 +c4 +c67x00 +c6xdigio +c_can +c_can_pci +c_can_platform +cachefiles +cafe_ccic +cafe_nand +caif +caif_hsi +caif_serial +caif_socket +caif_usb +caif_virtio +camellia-aesni-avx-x86_64 +camellia-aesni-avx2 +camellia-x86_64 +camellia_generic +can +can-bcm +can-dev +can-gw +can-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 +cc770 +cc770_isa +cc770_platform +cciss +ccm +cdc-acm +cdc-phonet +cdc-wdm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc_subset +cedusb +ceph +cfag12864b +cfag12864bfb +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chipreg +chnl_net +chromeos_laptop +ci_hdrc +ci_hdrc_msm +ci_hdrc_pci +cifs +cirrus +cirrusfb +ck804xrom +classmate-laptop +clearpad_tm1217 +clip +clk-max77686 +clk-s2mps11 +clk-si5351 +clk-twl6040 +clk-wm831x +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm36651 +cm4000_cs +cm4040_cs +cma3000_d0x +cma3000_d0x_i2c +cmac +cmdlinepart +cmtp +cnic +cobra +coda +com20020 +com20020-pci +com20020_cs +com90io +com90xx +comedi +comedi_bond +comedi_fc +comedi_parport +comedi_test +comm +compal-laptop +configfs +contec_pci_dio +cordic +core +coretemp +cp210x +cpcihp_generic +cpcihp_zt5550 +cpia2 +cpu-notifier-error-inject +cpu5wdt +cpuid +cr_bllcd +cramfs +crc-ccitt +crc-itu-t +crc32 +crc32-pclmul +crc7 +crc8 +crct10dif-pclmul +cros_ec +cros_ec_i2c +cros_ec_keyb +cros_ec_spi +crvml +cryptd +crypto_null +crypto_user +cryptoloop +crystalhd +cs5345 +cs53l32a +cs5535-mfd +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 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx8800 +cx8802 +cx88xx +cxacru +cxd2099 +cxd2820r +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cxt1e1 +cy8ctmg110_ts +cyapa +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-hwmon +da9052-regulator +da9052_bl +da9052_onkey +da9052_tsi +da9052_wdt +da9055-hwmon +da9055-regulator +da9055_onkey +da9055_wdt +da9063-regulator +da9210-regulator +daqboard2000 +das08 +das08_cs +das08_isa +das08_pci +das16 +das16m1 +das1800 +das6402 +das800 +db9 +dc395x +dca +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +dcdbas +ddbridge +de2104x +de4x5 +decnet +deflate +defxx +dell-laptop +dell-led +dell-wmi +dell-wmi-aio +dell_rbu +denali +denali_dt +denali_pci +des_generic +designware_i2s +dgap +dgnc +dgrp +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +diskonchip +diva_idi +diva_mnt +divacapi +divadidd +divas +dl2k +dlci +dlm +dm-bio-prison +dm-bufio +dm-cache +dm-cache-cleaner +dm-cache-mq +dm-crypt +dm-delay +dm-flakey +dm-log +dm-log-userspace +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 +dm1105 +dm9601 +dme1737 +dmfe +dmi-sysfs +dmm32at +dmx3191d +dn_rtmsg +dnet +docg3 +docg4 +dpt_i2o +drbd +drm +drm_kms_helper +drm_usb +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsa_core +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +dt282x +dt3000 +dt3155v4l +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-dw2102 +dvb-usb-ec168 +dvb-usb-friio +dvb-usb-gl861 +dvb-usb-gp8psk +dvb-usb-it913x +dvb-usb-lmedm04 +dvb-usb-m920x +dvb-usb-mxl111sf +dvb-usb-nova-t-usb2 +dvb-usb-opera +dvb-usb-pctv452e +dvb-usb-rtl28xxu +dvb-usb-technisat-usb2 +dvb-usb-ttusb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +dvb_usb_v2 +dw_dmac +dw_dmac_core +dw_dmac_pci +dwc2 +dwc2_pci +dwc2_platform +dwc3 +dwc3-pci +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e4000 +e752x_edac +earth-pt1 +eata +ebt_802_3 +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ec100 +ec_sys +echo +edac_core +edac_mce_amd +edt-ft5x06 +eeepc-laptop +eeepc-wmi +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efi-pstore +efs +ehset +einj +elo +elsa_cs +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em_canid +em_cmp +em_ipset +em_meta +em_nbyte +em_text +em_u32 +emc1403 +emc2103 +emc6w201 +emi26 +emi62 +empeg +ems_pci +ems_pcmcia +ems_usb +emu10k1-gp +enc28j60 +enclosure +ene_ir +eni +enic +epat +epia +epic100 +eql +esas2r +esb2rom +esd_usb2 +esi-sir +esp4 +esp6 +et131x +ethoc +eurotechwdt +evbug +exofs +extcon-adc-jack +extcon-arizona +extcon-gpio +extcon-max77693 +extcon-max8997 +extcon-palmas +ezusb +f2fs +f71805f +f71808e_wdt +f71882fg +f75375s +f81232 +fakelb +fam15h_power +fan53555 +farsync +faulty +fb_ddc +fb_sys_fops +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 +floppy +fm801-gp +fm_drv +fmc +fmc-chardev +fmc-fakedev +fmc-trivial +fmc-write-eeprom +fmvj18x_cs +fnic +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +freevxfs +friq +frpw +fsa9480 +fscache +fschmd +ft1000 +ft1000_pcmcia +ftdi-elan +ftdi_sio +ftl +fujitsu-laptop +fujitsu-tablet +fujitsu_ts +fusbh200-hcd +g450_pll +g760a +g762 +g_acm_ms +g_audio +g_cdc +g_dbgp +g_ether +g_ffs +g_hid +g_mass_storage +g_midi +g_ncm +g_nokia +g_printer +g_serial +g_webcam +g_zero +gadgetfs +gamecon +gameport +garmin_gps +garp +gcm +gdmtty +gdmulte +gdmwm +gdth +gen_probe +generic +generic-adc-battery +generic_bl +gf128mul +gf2k +gfs2 +ghash-clmulni-intel +ghash-generic +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +glue_helper +gluebi +gma500_gfx +go7007 +go7007-loader +go7007-usb +goku_udc +goldfishfb +gp2ap002a00f +gp2ap020a00f +gpio +gpio-74x164 +gpio-addr-flash +gpio-adp5520 +gpio-adp5588 +gpio-amd8111 +gpio-arizona +gpio-charger +gpio-cs5535 +gpio-da9052 +gpio-da9055 +gpio-f7188x +gpio-fan +gpio-generic +gpio-ich +gpio-ir-recv +gpio-it8761e +gpio-janz-ttl +gpio-kempld +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio-pca953x +gpio-pcf857x +gpio-pch +gpio-rdc321x +gpio-regulator +gpio-sch +gpio-tps65912 +gpio-ts5500 +gpio-twl6040 +gpio-ucb1400 +gpio-viperboard +gpio-vx855 +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +gpio_backlight +gpio_keys +gpio_keys_polled +gpio_mouse +gpio_tilt_polled +gre +grip +grip_mp +gsc_hpdi +gspca_benq +gspca_conex +gspca_cpia1 +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_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gtco +guillemot +gunze +hamachi +hampshire +hangcheck-timer +hanwang +hci +hci_uart +hci_vhci +hdaps +hdlc +hdlc_cisco +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdlcdrv +hdpvr +he +hecubafb +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfc_usb +hfcmulti +hfcpci +hfcsusb +hfs +hfsplus +hgafb +hid +hid-a4tech +hid-apple +hid-appleir +hid-aureal +hid-axff +hid-belkin +hid-cherry +hid-chicony +hid-cypress +hid-dr +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-generic +hid-gyration +hid-holtek-kbd +hid-holtek-mouse +hid-holtekff +hid-huion +hid-hyperv +hid-icade +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-lenovo-tpkbd +hid-logitech +hid-logitech-dj +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hid-petalynx +hid-picolcd +hid-pl +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-gyro-3d +hid-sensor-hub +hid-sensor-iio-common +hid-sensor-magn-3d +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-wacom +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hidp +hih6130 +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hmc5843 +hmc6352 +hopper +horizon +hostap +hostap_cs +hostap_pci +hostap_plx +hp-wireless +hp-wmi +hp100 +hp_accel +hpfs +hpilo +hpsa +hptiop +hpwdt +hsi +hsi_char +hso +hsr +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-keyboard +hyperv_fb +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-designware-core +i2c-designware-pci +i2c-designware-platform +i2c-dev +i2c-diolan-u2c +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-platform +i2c-piix4 +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 +i2o_block +i2o_bus +i2o_config +i2o_core +i2o_proc +i2o_scsi +i3000_edac +i3200_edac +i40e +i40evf +i5000_edac +i5100_edac +i5400_edac +i5k_amb +i6300esb +i7300_edac +i7300_idle +i740fb +i7core_edac +i810 +i82092 +i82975x_edac +i8k +i915 +i915_bdw +iTCO_vendor_support +iTCO_wdt +ib700wdt +ib_addr +ib_cm +ib_core +ib_ipath +ib_ipoib +ib_iser +ib_isert +ib_mad +ib_mthca +ib_qib +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +ibm_rtl +ibmaem +ibmasm +ibmasr +ibmpex +ichxrom +icp_multi +ics932s401 +ideapad-laptop +ideapad_slidebar +idmouse +idt77252 +idt_gen2 +idtcps +ie6xx_wdt +ieee802154 +ifb +iforce +igb +igbvf +iguanair +ii_pci20kc +iio-trig-interrupt +iio-trig-periodic-rtc +iio-trig-sysfs +iio_dummy +iio_hwmon +ili210x +ili922x +ili9320 +imm +imon +ims-pcu +imx074 +ina209 +ina2xx +industrialio +industrialio-triggered-buffer +inet_diag +inexio +inftl +initio +input-polldev +int51x1 +intel-rng +intel-rst +intel-smartconnect +intel_ips +intel_menlow +intel_mid_dma +intel_oaktrail +intel_powerclamp +intel_rapl +intel_vr_nor +intelfb +interact +interval_tree_test +inv-mpu6050 +io_edgeport +io_ti +ioatdma +ioc4 +iowarrior +ip6_gre +ip6_tables +ip6_tunnel +ip6_vti +ip6t_MASQUERADE +ip6t_NPT +ip6t_REJECT +ip6t_SYNPROXY +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_mh +ip6t_rpfilter +ip6t_rt +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6table_security +ip_gre +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netnet +ip_set_hash_netport +ip_set_hash_netportnet +ip_set_list_set +ip_tables +ip_tunnel +ip_vs +ip_vs_dh +ip_vs_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 +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ipg +iphase +ipheth +ipip +ipmi_devintf +ipmi_poweroff +ipmi_si +ipmi_watchdog +ipoctal +ipr +ips +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_SYNPROXY +ipt_ULOG +ipt_ah +ipt_rpfilter +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +iptable_security +ipw +ipw2100 +ipw2200 +ipwireless +ipx +ir-jvc-decoder +ir-kbd-i2c +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +ir-rc5-decoder +ir-rc5-sz-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sony-decoder +ir-usb +ircomm +ircomm-tty +irda +irda-usb +irlan +irnet +irtty-sir +isci +iscsi_boot_sysfs +iscsi_ibft +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isofs +isp116x-hcd +isp1362-hcd +isp1704_charger +isp1760 +it87 +it8712f_wdt +it87_wdt +it913x-fe +itd1000 +ite-cir +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iw_nes +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsm +k10temp +k8temp +kafs +kalmia +kaweth +kb3886_bl +kbic +kbtab +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keucr +keyspan +keyspan_pda +keyspan_remote +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +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 +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 +leds-88pm860x +leds-adp5520 +leds-atmel-pwm +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-lp5521 +leds-lp5523 +leds-lp5562 +leds-lp55xx-common +leds-lp8501 +leds-lp8788 +leds-lt3593 +leds-max8997 +leds-mc13783 +leds-ot200 +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pca9685 +leds-pwm +leds-regulator +leds-ss4200 +leds-tca6507 +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-oneshot +ledtrig-timer +ledtrig-transient +legousbtower +lg-vl600 +lg2160 +lgdt3305 +lgdt330x +lgs8gxx +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +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 +libsrp +lightning +line6usb +lineage-pem +linear +lirc_bt829 +lirc_dev +lirc_igorplugusb +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +litelink-sir +lkkbd +llc +llc2 +llog_test +lm25066 +lm3533-als +lm3533-core +lm3533-ctrlbank +lm3533_bl +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 +lov +lp +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp8755 +lp8788-charger +lp8788_bl +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc2978 +ltc4151 +ltc4215 +ltc4245 +ltc4261 +ltv350qv +lustre +lv5207lp +lvfs +lz4 +lz4_compress +lz4hc +lz4hc_compress +m25p80 +m2m-deinterlace +m52790 +m88rs2000 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +ma600-sir +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +mac80211 +mac80211_hwsim +mac802154 +mac_hid +macb +machzwd +macmodes +macvlan +macvtap +mag3110 +magellan +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +matrix-keymap +matrix_keypad +matrox_w1 +matroxfb_DAC1064 +matroxfb_Ti3026 +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +max1111 +max11801_ts +max1363 +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max2165 +max3100 +max34440 +max517 +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77686 +max77693 +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925-regulator +max8925_bl +max8925_onkey +max8925_power +max8952 +max8973-regulator +max8997 +max8997_charger +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 +mce-inject +mce_amd_inj +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp4725 +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdc +mdc800 +mdio +me4000 +me_daq +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mei +mei-me +mei_phy +mem2mem_testdev +memory-notifier-error-inject +memstick +mena21_wdt +metro-usb +metronomefb +meye +mfd +mga +mgc +mic_card +mic_host +michael_mic +microread +microread_i2c +microread_mei +microtek +mii +minix +mip6 +mite +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mma8450 +mmc_block +mmc_spi +mms114 +mos7720 +mos7840 +moxa +mpc624 +mpoa +mpr121_touchkey +mpt2sas +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +mrst_max3110 +ms_block +msdos +msi-laptop +msi-wmi +msp3400 +mspro_block +msr +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt29f_spinand +mt312 +mt352 +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtd_dataflash +mtdblock +mtdblock_ro +mtdoops +mtdram +mtdswap +mtip32xx +mtouch +multipath +multiq3 +musb_hdrc +mv88e6060 +mv88e6xxx_drv +mv_u3d_core +mv_udc +mvmdio +mvsas +mvumi +mwave +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxl111sf-demod +mxl111sf-tuner +mxl5005s +mxl5007t +mxm-wmi +mxser +myri10ge +n411 +n_hdlc +n_r3964 +n_tracerouter +n_tracesink +nand +nand_bch +nand_ecc +nand_ids +nandsim +natsemi +nau7802 +navman +nbd +nci +ncpfs +nct6775 +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netlink_diag +netprio_cgroup +netrom +netsc520 +nettel +netxen_nic +newtonkbd +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 +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nf_synproxy_core +nf_tables +nf_tables_arp +nf_tables_bridge +nf_tables_ipv4 +nf_tables_ipv6 +nfc +nfc_digital +nfcsim +nfcwilink +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nfs +nfs_acl +nfs_layout_nfsv41_files +nfsd +nfsv2 +nfsv3 +nfsv4 +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 +nft_limit +nft_log +nft_meta +nft_nat +nft_rbtree +nft_reject_ipv4 +nftl +ngene +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_at_a2150 +ni_at_ao +ni_atmio +ni_atmio16d +ni_daq_700 +ni_daq_dio24 +ni_labpc +ni_labpc_cs +ni_labpc_isadma +ni_labpc_pci +ni_mio_cs +ni_pcidio +ni_pcimio +ni_tio +ni_tiocmd +nicstar +nilfs2 +niu +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 +ns558 +ns83820 +nsc-ircc +ntb +ntb_netdev +ntc_thermistor +ntfs +null_blk +nuvoton-cir +nv_tco +nvidiafb +nvme +nvram +nxt200x +nxt6000 +obdclass +obdecho +objlayoutdriver +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stack_o2cb +ocfs2_stack_user +ocfs2_stackglue +ocrdma +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 +output +ov2640 +ov5642 +ov6650 +ov7640 +ov7670 +ov772x +ov9640 +ov9740 +overlayfs +oxu210hp-hcd +p4-clockmod +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +padlock-aes +padlock-sha +palmas-regulator +panasonic-laptop +panel +paride +parkbd +parport +parport_ax88796 +parport_cs +parport_pc +parport_serial +pata_acpi +pata_ali +pata_amd +pata_arasan_cf +pata_artop +pata_atiixp +pata_atp867x +pata_cmd640 +pata_cmd64x +pata_cs5520 +pata_cs5530 +pata_cs5536 +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_sc1200 +pata_sch +pata_serverworks +pata_sil680 +pata_sl82c105 +pata_triflex +pata_via +pc300too +pc87360 +pc87413_wdt +pc87427 +pcap-regulator +pcap_keys +pcap_ts +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_can +pch_dma +pch_gbe +pch_phub +pch_uart +pch_udc +pci +pci-stub +pci200syn +pcips2 +pcl711 +pcl724 +pcl726 +pcl730 +pcl812 +pcl816 +pcl818 +pcm3724 +pcmad +pcmcia +pcmcia_core +pcmcia_rsrc +pcmciamtd +pcmda12 +pcmmio +pcmuio +pcnet32 +pcnet_cs +pcrypt +pcspkr +pcwd_pci +pcwd_usb +pd +pd6729 +pda_power +pdc_adma +peak_pci +peak_pcmcia +peak_usb +pegasus +penmount +percpu_test +pf +pfuze100-regulator +pg +phantom +phison +phonet +phram +phy-core +phy-generic +phy-gpio-vbus-usb +phy-isp1301 +phy-rcar-usb +phy-samsung-usb +phy-samsung-usb2 +phy-samsung-usb3 +physmap +pixcir_i2c_ts +pktcdvd +pktgen +pl2303 +plat-ram +plat_nand +platform_lcd +plip +plusb +pluto2 +plx_pci +pm-notifier-error-inject +pm2fb +pm3fb +pm80xx +pmbus +pmbus_core +pmc551 +pmcraid +pn533 +pn544 +pn544_i2c +pn544_mei +pn_pep +poc +port100 +poseidon +powermate +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +ppp_synctty +pppoatm +pppoe +pppox +pps-gpio +pps-ldisc +pps_core +pps_parport +pptp +prism2_usb +ps2mult +psmouse +psnap +pt +ptlrpc +ptp +ptp_pch +pvpanic +pvrusb2 +pwc +pwm_bl +pxa27x_udc +qcaux +qcserial +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qlogic_cs +qlogicfas408 +qmi_wwan +qnx4 +qnx6 +qt1010 +qt1070 +qt2160 +quatech2 +quatech_daqp_cs +quickstart +quota_tree +quota_v1 +quota_v2 +qxl +r128 +r592 +r6040 +r8152 +r815x +r8169 +r8187se +r8188eu +r8192e_pci +r8192u_usb +r820t +r852 +r8712u +r8a66597-hcd +r8a66597-udc +radeon +radeonfb +radio-i2c-si470x +radio-keene +radio-ma901 +radio-maxiradio +radio-mr800 +radio-shark +radio-si4713 +radio-si476x +radio-tea5764 +radio-timb +radio-usb-si470x +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +ray_cs +rbd +rbtree_test +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-em-terratec +rc-encore-enltv +rc-encore-enltv-fm53 +rc-encore-enltv2 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-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-tbs-nec +rc-technisat-usb2 +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-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rc5t583-regulator +rcar_vin +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +redboot +redrat3 +reed_solomon +reiserfs +remoteproc +renesas_usbhs +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +rio-scan +rio500 +rionet +rivafb +rj54n1cb0c +rmd128 +rmd160 +rmd256 +rmd320 +rndis_host +rndis_wlan +rocket +romfs +rose +rotary_encoder +rp2 +rpcsec_gss_krb5 +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt61pci +rt73usb +rtc-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-bq32k +rtc-bq4802 +rtc-da9052 +rtc-da9055 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1742 +rtc-ds2404 +rtc-ds3232 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-hid-sensor-time +rtc-isl12022 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max77686 +rtc-max8907 +rtc-max8925 +rtc-max8997 +rtc-max8998 +rtc-mc13xxx +rtc-moxart +rtc-msm6242 +rtc-palmas +rtc-pcap +rtc-pcf2123 +rtc-pcf2127 +rtc-pcf50633 +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-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtd520 +rti800 +rti802 +rtl2830 +rtl2832 +rtl8150 +rtl8180 +rtl8187 +rtl8188ee +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192se +rtl8723-common +rtl8723ae +rtl8723be +rtl8821ae +rtl_pci +rtl_usb +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtlwifi +rts5139 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rxkad +s1d13xxxfb +s2250 +s2255drv +s2io +s3fb +s526 +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s626 +s6e63m0 +s921 +saa6588 +saa6752hs +saa7110 +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7146 +saa7146_vv +saa7164 +saa717x +saa7185 +saa7706h +safe_serial +salsa20-x86_64 +salsa20_generic +samsung-keypad +samsung-laptop +samsung-q10 +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 +sb1000 +sb_edac +sbc60xxwdt +sbc8360 +sbc_epx_c3 +sbc_fitpc2_wdt +sbc_gxx +sbe-2t3e3 +sbni +sbp_target +sbs +sbs-battery +sbshc +sc1200wdt +sc520_wdt +sc520cdp +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_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +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_tgt +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_srp +sctp +sctp_probe +sdhci +sdhci-acpi +sdhci-pci +sdhci-pltfm +sdhci-pxav2 +sdhci-pxav3 +sdio_uart +sdr-msi3101 +sdricoh_cs +sedlbauer_cs +seed +sep_driver +seqiv +ser_gigaset +serial2002 +serial_cs +serio_raw +sermouse +serpent-avx-x86_64 +serpent-avx2 +serpent-sse2-x86_64 +serpent_generic +serport +serqt_usb2 +ses +sfc +sh_eth +sh_mobile_ceu_camera +sh_mobile_csi2 +sh_veu +sha1-ssse3 +sha256-ssse3 +sha512-ssse3 +shark2 +shpchp +sht15 +sht21 +si21xx +si4713-i2c +si476x-core +sidewinder +sierra +sierra_net +sil164 +sir-dev +sis +sis-agp +sis190 +sis5595 +sis900 +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_platform +skd +skel +skfp +skge +sky2 +sl811-hcd +sl811_cs +slcan +slicoss +slip +slram +sm501 +sm501fb +sm7xxfb +sm_common +sm_ftl +smb347-charger +smc91c92_cs +smm665 +smsc-ircc2 +smsc37b787_wdt +smsc47b397 +smsc47m1 +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +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-at73c213 +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt3328 +snd-bt87x +snd-ca0106 +snd-cmipci +snd-compress +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-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1938 +snd-es1968 +snd-firewire-lib +snd-firewire-speakers +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-hdmi +snd-hda-codec-idt +snd-hda-codec-realtek +snd-hda-codec-si3054 +snd-hda-codec-via +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-mona +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-mts64 +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-oxygen +snd-oxygen-lib +snd-page-alloc +snd-pcm +snd-pcsp +snd-pcxhr +snd-pdaudiocf +snd-portman2x4 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb-common +snd-sb16-dsp +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-atmel-pcm +snd-soc-core +snd-soc-si476x +snd-soc-simple-card +snd-sonicvibes +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usb-us122l +snd-usb-usx2y +snd-usbmidi-lib +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx-lib +snd-vx222 +snd-vxpocket +snd-ymfpci +soc_camera +soc_camera_platform +soc_mediabus +soc_scale_crop +softdog +softing +softing_cs +solo6x10 +solos-pci +sony-btf-mpx +sony-laptop +soundcore +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-dw +spi-dw-midpci +spi-dw-mmio +spi-gpio +spi-lm70llp +spi-oc-tiny +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-sc18is602 +spi-tle62x0 +spi-topcliff-pch +spi-xcomm +spi_ks8995 +spidev +squashfs +sr9700 +ssb +ssb-hcd +ssfdc +sst25l +sstfb +ssu100 +st +st1232 +st_accel +st_accel_i2c +st_accel_spi +st_drv +st_gyro +st_gyro_i2c +st_gyro_spi +st_magn +st_magn_i2c +st_magn_spi +st_pressure +st_pressure_i2c +st_pressure_spi +st_sensors +st_sensors_i2c +st_sensors_spi +starfire +stb0899 +stb6000 +stb6100 +ste_modem_rproc +stex +stinger +stir4200 +stk1160 +stkwebcam +stmmac +stmpe-keypad +stmpe-ts +stowaway +stp +streamzap +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +svcrdma +svgalib +sx8 +sym53c500_cs +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink +synclink_cs +synclink_gt +synclinkmp +syscopyarea +sysfillrect +sysimgblt +sysv +t1pci +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +tc3589x-keypad +tca6416-keypad +tca8418_keypad +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bic +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 +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-kstrtox +test-string_helpers +test_power +tg3 +tgr192 +thinkpad_acpi +thmc50 +ti-adc081c +ti_dac7512 +ti_usb_3410_5052 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timb_dma +timberdale +timblogiw +timbuart +timeriomem-rng +tipc +tlan +tlclk +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmem +tmiofb +tmp006 +tmp102 +tmp401 +tmp421 +tmscsim +toim3232-sir +topstar-laptop +toshiba_acpi +toshiba_bluetooth +touchit213 +touchright +touchwin +tpci200 +tpm-rng +tpm_atmel +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm_i2c_stm_st33 +tpm_infineon +tpm_nsc +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-charger +tps65090-regulator +tps65217 +tps65217-regulator +tps65217_bl +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +tranzport +tridentfb +ts2020 +ts5500_flash +ts_bm +ts_fsm +ts_kmp +tsc2005 +tsc2007 +tsc40 +tsi568 +tsi57x +tsi721_mport +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +tsl4531 +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tuner_it913x +tunnel4 +tunnel6 +turbografx +tusb6010 +tvaudio +tveeprom +tvp5150 +tw2804 +tw9903 +tw9906 +tw9910 +twidjoy +twl6040-vibra +twofish-avx-x86_64 +twofish-x86_64 +twofish-x86_64-3way +twofish_common +twofish_generic +typhoon +u132-hcd +uPD98402 +u_ether +u_rndis +u_serial +uartlite +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +uda1342 +udc-core +udf +udl +udlfb +udp_diag +ueagle-atm +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_sercos3 +uli526x +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 +usb-serial-simple +usb-storage +usb3503 +usb8xxx +usb_8dev +usb_debug +usb_f_acm +usb_f_ecm +usb_f_ecm_subset +usb_f_eem +usb_f_mass_storage +usb_f_ncm +usb_f_obex +usb_f_phonet +usb_f_rndis +usb_f_serial +usb_f_ss_lb +usb_gigaset +usb_wwan +usbatm +usbdux +usbduxfast +usbduxsigma +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usbsevseg +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +userspace-consumer +ushc +usnic_verbs +uss720 +uvcvideo +uvesafb +uwb +ux500 +v4l2-common +v4l2-dv-timings +v4l2-int-device +v4l2-mem2mem +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vfio +vfio-pci +vfio_iommu_type1 +vga16fb +vgastate +vgg2432a4 +vhci-hcd +vhost +vhost_net +vhost_scsi +via +via-camera +via-cputemp +via-ircc +via-rhine +via-rng +via-sdmmc +via-velocity +via686a +via_wdt +viafb +video +videobuf-core +videobuf-dma-contig +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videobuf2-core +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-memops +videobuf2-vmalloc +videocodec +videodev +viperboard +viperboard_adc +virtio-rng +virtio_scsi +virtual +visor +vivi +vlsi_ir +vmac +vme +vme_ca91cx42 +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmlfb +vmw_balloon +vmw_pvscsi +vmw_vmci +vmw_vsock_vmci_transport +vmwgfx +vmxnet3 +vp27smpx +vpx3220 +vringh +vsock +vsxxxaa +vt1211 +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +w1-gpio +w1_bq27000 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1_smem +w1_therm +w35und +w5100 +w5300 +w6692 +w83627ehf +w83627hf +w83627hf_wdt +w83697hf_wdt +w83697ug_wdt +w83781d +w83791d +w83792d +w83793 +w83795 +w83877f_wdt +w83977af_ir +w83977f_wdt +w83l785ts +w83l786ng +w90p910_ts +w9966 +wacom +wacom_i2c +wacom_w8001 +wafer5823wdt +walkera0701 +wanxl +warrior +wbsd +wcn36xx +wdt_pci +whc-rc +whci +whci-hcd +whiteheat +wil6210 +wimax +winbond-840 +winbond-cir +wire +wishbone-serial +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wl3501_cs +wlags49_h25_cs +wlags49_h2_cs +wlcore +wlcore_sdio +wlcore_spi +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x-ts +wm831x_backup +wm831x_bl +wm831x_power +wm831x_wdt +wm8350-hwmon +wm8350-regulator +wm8350_power +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-regulator +wm97xx-ts +wmi +wp512 +wusb-cbaf +wusb-wa +wusbcore +x25 +x25_asy +x38_edac +x86_pkg_temp_thermal +x_tables +xc4000 +xc5000 +xcbc +xen-blkback +xen-evtchn +xen-fbfront +xen-gntalloc +xen-gntdev +xen-kbdfront +xen-netback +xen-pciback +xen-pcifront +xen-privcmd +xen-tpmfront +xen_wdt +xenfs +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-enet +xgifb +xgmac +xillybus_core +xillybus_pcie +xirc2ps_cs +xircom_cb +xo15-ebook +xor +xpad +xprtrdma +xsens_mt +xt_AUDIT +xt_CHECKSUM +xt_CLASSIFY +xt_CONNSECMARK +xt_CT +xt_DSCP +xt_HL +xt_HMARK +xt_IDLETIMER +xt_LED +xt_LOG +xt_NETMAP +xt_NFLOG +xt_NFQUEUE +xt_RATEEST +xt_REDIRECT +xt_SECMARK +xt_TCPMSS +xt_TCPOPTSTRIP +xt_TEE +xt_TPROXY +xt_TRACE +xt_addrtype +xt_bpf +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_conntrack +xt_cpu +xt_dccp +xt_devgroup +xt_dscp +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_iprange +xt_ipvs +xt_length +xt_limit +xt_mac +xt_mark +xt_multiport +xt_nat +xt_nfacct +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_realm +xt_recent +xt_sctp +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_tcpudp +xt_time +xt_u32 +xtkbd +xts +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 +zte_ev --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/amd64/lowlatency +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/amd64/lowlatency @@ -0,0 +1,17501 @@ +EXPORT_SYMBOL arch/x86/kvm/kvm 0x263fd3b7 kvm_cpu_has_pending_timer +EXPORT_SYMBOL arch/x86/kvm/kvm 0xd27aabfc kvm_read_guest_atomic +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/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/acpi/video 0x197cb475 acpi_video_get_edid +EXPORT_SYMBOL drivers/acpi/video 0x7a45377b acpi_video_unregister +EXPORT_SYMBOL drivers/acpi/video 0x8826c13b acpi_video_register +EXPORT_SYMBOL drivers/atm/suni 0xfdf08b4b suni_init +EXPORT_SYMBOL drivers/atm/uPD98402 0x0208c345 uPD98402_init +EXPORT_SYMBOL drivers/bcma/bcma 0x35a8681a 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 0x03a8ca63 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x1c89b698 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x20030a5f pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0x22b469cd pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0x6855032b pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0x798fbeee pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x7e3a393f pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xa7acd1e4 pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0xaa425cb7 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xb65c6a41 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0xbf4a1597 pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0xe65ed52e paride_unregister +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/dma/dw/dw_dmac_core 0x05ad8f1f dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x2155c32f dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x410b730d dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x45fa616e dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x534ce94e dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x8943200e dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/ioat/ioatdma 0xac5ca201 ioat_dma_setup_interrupts +EXPORT_SYMBOL drivers/edac/edac_core 0x1a07edfa edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x02437fa4 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04d0f641 fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0f7d6af8 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2177253d fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x336e2018 fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3493d872 fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0x37bfa272 fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x46c85281 fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x62b64904 fw_iso_buffer_init +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 0x680f5403 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0x6c3a2e2d fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0x70b31cb2 fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7fca07cb fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x83346d6d fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0x841e72e8 fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x874a933f fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x888164be fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8db88c53 fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa1276de9 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xaa9fe430 fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb9032d0d fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd20130bd fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd3b3d2e3 fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd4923426 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd52c52da fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd88bf288 fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf1d67247 fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf61646c8 fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firmware/dcdbas 0xa75079d6 dcdbas_smi_request +EXPORT_SYMBOL drivers/fmc/fmc 0x208ca412 fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0x515868e6 fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x66d6d53c fmc_driver_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x89ba34fc fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0x8cba4f70 fmc_show_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xca6cc31f fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0xdf7a55f0 fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xe7a0e638 fmc_find_sdb_device +EXPORT_SYMBOL drivers/fmc/fmc 0xeb8df9fc fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0xedf6ecd5 fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0xfa159d09 fmc_free_sdb_tree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00025916 drm_mode_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0010ad67 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0021d9b0 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00667d8a drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x017863d1 drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x026c0d6b drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03772ce9 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04055c90 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0439b18c drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x05952d80 drm_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x065289b2 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x09c351f8 drm_dev_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a7bfb16 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b99fa32 drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0dff5766 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e1a295f drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e77ad3d drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fd60df2 drm_get_connector_status_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x102746f2 drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107dd4e6 drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11212ebe drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12c6276a drm_buffer_read_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13224a6e drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x142b8b35 drm_buffer_copy_from_user +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15739433 drm_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1743e571 drm_core_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x17a25978 drm_get_encoder_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x189f6401 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18a2f2fa drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19e44324 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a71e47e drm_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1c6e9b75 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d1c974a drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20b37c60 drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24275d75 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25107650 drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x259be130 drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25d5fe87 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x27eeddfb drm_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29881c62 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a942ab2 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2beebb01 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d80be4d drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30170538 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x306564cd drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36f91ef3 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3aa0ba07 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ae7b2d0 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b43ebcd drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3bcd14d2 drm_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c3baddf drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d4b8108 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d65d8a5 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3dcfd48f drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x426372d9 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43384bd9 drm_buffer_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4378c0fa drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44d784e8 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x470cef5f drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x471d333d drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x498dcb5e drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49fabf0d drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e8ad5cc drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e9eea41 drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f127cd7 drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x516d15c9 drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5178de52 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x521929ab drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x52b1efbf drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5309a6e3 drm_core_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x53b8e256 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x55f2da6b drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58f4a892 drm_get_last_vbltimestamp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x594c023c drm_platform_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d7318dc drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d84cfd4 drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5ea2d675 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x60530de1 drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6090be61 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x639bfe62 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65cfe92b drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66803841 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x677a67f3 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x681ff119 drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6840c11e drm_compat_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68f52a28 drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a572410 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b2de71b drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b504aec drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b6d7375 drm_timestamp_precision +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6c5c2b95 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6c85d3e2 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6c9ad234 drm_bridge_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cc3c29e drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cee2e42 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f08acc3 drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x70a95819 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x70e32b28 drm_sysfs_connector_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72583496 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x727232ef drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0x73d96693 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7581ab93 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a4e7297 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a7908ec drm_core_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c40338c drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e37391e drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e9a1bcb drm_mode_connector_detach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x80c10f50 drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81ba930c drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81e773e4 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x829dfb99 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x83da472f drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x85b2671a drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x85dc9082 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x88856f58 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a8ed3b0 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8cbea395 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8db018cc drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8dfb019d drm_buffer_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eb34dc5 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f7df3a7 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ff7d1b1 drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x903a8ecd drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91bfa58e drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9456a79b drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x94ed41a3 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x951bfaad drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9745d638 drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x978ccddd drm_core_reclaim_buffers +EXPORT_SYMBOL drivers/gpu/drm/drm 0x97abfc04 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x98edb780 drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9bf5dc05 drm_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9cb006e7 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d461568 drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d70fc2a drm_rnodes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d7a2b16 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e65a8c5 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9eccfe56 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f9027d5 drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0a0dfe6 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0daa2dd drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1f4e9e6 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa3a02e8c drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa483b976 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5dbd572 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa6902f65 drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa87d909c drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xabfcb9e4 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac20a4ad drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xadf0f4f4 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf9e251e drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafb0cb6f drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafd51394 drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4289152 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5540008 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb572a9f0 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb79df77e drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb7bdf1d6 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8224925 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb95beb55 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbaefa4a0 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb18f26f drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe001c53 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe0aa00e drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe18e9e7 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe42fe32 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf8a20bc drm_sysfs_connector_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfa1e52b drm_prime_init_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc13c4b4c drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc300208a drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc3721fdb drm_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4000f9f drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc414c422 drm_vblank_offdelay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc56a348f drm_global_mutex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc5b92e96 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc60d5f97 drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6179f4f drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7f8b6aa drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc8dfd11f drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc92d44a6 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc9f4df4c drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca93ede3 drm_vma_offset_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcac41a0c drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcbbac865 drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcc92b473 drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xccf5a7aa drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd9606b1 drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcdeddae3 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce9b3a0f drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd17aef17 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2f2ac4a drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd4ca95df drm_prime_destroy_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd55aea8d drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd7bb5b58 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda458817 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdaa9796e drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc6f8932 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdcbcdf28 drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe1993939 drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2c876ab drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2ef97e4 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe58279d4 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe65e002d drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe66e57d5 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6f46e6e drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe70a06a9 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7ea0b50 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7efec94 drm_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9d8c6c9 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xebe3bb58 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xedacb580 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeea85e04 drm_get_connector_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xefdf9b69 drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf084205f drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf08d712a drm_mode_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1cae1ad drm_bridge_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2386451 drm_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3c2cc72 drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf446a0e2 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf93595fc drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfacc4d32 drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb497216 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb8081ac drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbbbc7c4 drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfc8ddd9c drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd063935 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe4a68c7 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff482312 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff833a44 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffd7ec7f drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00aab359 drm_crtc_helper_set_config +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 0x11d24c7d drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1a81919e drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x25f05e29 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x287f4602 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x319e73fb i2c_dp_aux_add_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x33914b21 drm_fb_helper_restore_fbdev_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34b19724 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3b82cafa drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3d04e076 drm_dp_aux_unregister_i2c_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x405557bc drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4303475f drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x50b127a0 drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5823db79 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x593d47b1 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5d3bd679 drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x605bc9b8 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x62dc11fd drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x64baf17e drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x67cf165b drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x69161e08 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7653240d drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7a31cae0 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x86031ee6 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x865e4581 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9a927cdb drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9cc2ce48 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa671cb8f drm_fb_helper_init +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 0xaf37c5e9 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbc1424b2 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbc61f6f6 drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbed52c2a drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc83eda3b drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcd866ae8 drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xded0641d drm_dp_aux_register_i2c_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdfc7bb82 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe8620338 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe93578c4 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xea55c5d2 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf167bb4a drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf288ba1f drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xff3045d4 drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x4cbf1d01 drm_get_usb_dev +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0xb5f83012 drm_usb_init +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0xf540b340 drm_usb_exit +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x041201d5 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x04531570 ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x056ea077 ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x07ab5026 ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0a37710d ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0cb2977e ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0fa438ab ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x15bc95da ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1c0a61aa ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2105e18d ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x21b3b6c2 ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x292ae1b8 ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x29b1e6be ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2cf4d2c5 ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x32753458 ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3b3b7e1f ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3e870498 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x46056c95 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x47ea7391 ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4d3588a1 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4e8dd264 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4ee05ebc ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x506ae74a ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x564e1aee ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5f234ed2 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5f46037b ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6052860c ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6210557f ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x63e75994 ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x690bbab5 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x698a39b2 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6ac0a199 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6b797c25 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6d0157c0 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x706bb266 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x718a56bb ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x770fb1b8 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8568be30 ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x880a15ad ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x90822bc0 ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x919d49f8 ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94dc7bfc ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9561d4cf ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9bcfd740 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9d3eab45 ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa3757e74 ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa48bca89 ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaf637d45 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb11eba46 ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb80f7b45 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbcdc97bf ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbda776b4 ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbf0afa2c ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc09d05aa ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc4d4618d ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc8bbb98f ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcc1a1226 ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcc2f6970 ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce6e43a8 ttm_base_object_lookup_for_ref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd77a3db1 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdbe4e4a7 ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdf7faec5 ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe87dc3b3 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xeedbd2d0 ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf0caed2f ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf18dd0d2 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf24c2398 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf31e4dc1 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf4404c5c ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf973ea3e ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/hv/hv_vmbus 0x2404e651 vmbus_sendpacket +EXPORT_SYMBOL drivers/hv/hv_vmbus 0xf1546e95 vmbus_sendpacket_ctl +EXPORT_SYMBOL drivers/hv/hv_vmbus 0xfcca4c28 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 0x26655388 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 0x867982c3 i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x89b8f788 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xae68d52b i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x251af0d7 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x9fbd16af i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0x5957c776 amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x4daad992 st_accel_common_probe +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xe1c110e0 st_accel_common_remove +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x30c03b33 hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x32b13ada hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x7e830768 hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x96290197 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xf993a3f8 hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x35e2b61b hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x96bfb826 hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x0547e0c9 st_sensors_sysfs_get_sampling_frequency +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x074d7047 st_sensors_trigger_handler +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x0f46a030 st_sensors_sysfs_set_sampling_frequency +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x10d5b9d1 st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x19bacfea st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x2b33e1c7 st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x2cc03ba7 st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x4bf0ecd8 st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x6a7b8906 st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x910890c3 st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x93be8dc6 st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xd1c0b764 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xd414ae02 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xd9c02057 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xd9e01927 st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xfc09315b st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0xe048d55f st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0x559eee01 st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x0fb0faee st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x59e7367f st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xb726e597 adis_enable_irq +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xdaaebc5f adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/industrialio 0x08c8e4fe iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x1e986c9d iio_buffer_show_enable +EXPORT_SYMBOL drivers/iio/industrialio 0x21671a71 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x25d00eaa iio_buffer_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x329247bd iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x3790cca2 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x428914a6 iio_buffer_register +EXPORT_SYMBOL drivers/iio/industrialio 0x5730a0e4 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x57a044ca iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x5c4cc903 iio_buffer_read_length +EXPORT_SYMBOL drivers/iio/industrialio 0x66cd0d90 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x6b7ff39a iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x735ad604 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x7a320901 iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x9e9495e0 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0xbb585a89 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0xc52082dc iio_buffer_write_length +EXPORT_SYMBOL drivers/iio/industrialio 0xdf4e67f0 iio_buffer_store_enable +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe91bf141 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0xe9cb0567 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0xec3672a8 iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0xf7be71c9 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0xfb4fe8e4 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0xc0f34e30 iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0xd42fa21e iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x02ad2731 iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xafbdf4ef iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x03aac814 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x8b1b2f08 st_magn_common_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x4d1ed15d st_press_common_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x9970f90f 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 0x0c31bfcf rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1c3c0ad3 rdma_addr_size +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x2107de5f rdma_addr_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x273f4cca rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x446fd7c9 rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x6f6ee97c rdma_addr_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xf19ab26c rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0840b8c5 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x278de373 ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x5505cd3d ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x5bd41d0f ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x65cdcbab ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x7cabfeb3 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x8220cb5a ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x98d596ad ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa4fa4682 ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xaa0323e6 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc20635c5 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc831e2af ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd4a57f94 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe533eb6d ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xee8a1d68 cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xfbba0d80 ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xfbf44043 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x010be156 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x06c82fcf mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x08f329d5 ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0bee4de7 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0fe39420 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1181f6d2 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x12ae5f24 ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x14f84918 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x171f99f1 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x18d5dfab ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1b424f4d ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1d3eae50 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1fa0ad2a ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22f3cf93 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x23e963a8 ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x24b57bcd ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x26112591 ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2cef1043 ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2f23fd18 ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x36011726 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x36c26900 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3aa7784c ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x45b62c8b ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x45c98611 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4742146b ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x482b5a8f ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4d68bd74 ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50a76783 ib_resolve_eth_l2_attrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5407ca53 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x543c4439 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x558cf9f0 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5dd1ccc0 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x601d3091 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x60d3aeef ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6a58faed ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6d34a36f ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e030e26 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x747f924b ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x75537eda ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7b2f4631 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7bb9b484 ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7c6b11a2 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x84be6895 ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x86775822 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8721213e ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x925951f4 ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa24ea9ad ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa3f669a6 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa432baf6 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa62c6eae ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa913276b ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xac217df9 rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xac35c5e5 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaf940670 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb214018c ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb301a789 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb8c21a73 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbeb426b1 ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc21b00ca ib_reg_phys_mr +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 0xc6d40893 ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc6f9cb0b ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc811a8e5 ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcca90d4d ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcd1656da ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xce14c942 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd37af171 ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd52f9632 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd5abee50 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd79f3daf ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd8359829 ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd8b88c3b ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdabe052f ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdee8576d ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe150fe44 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe9d38396 ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeea316ff ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeed7a859 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf3de1559 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf490fecb ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf70f26f2 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfa9f6281 rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc587ddb ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfe8eb81c ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x0e5b4ef2 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2ed5395c ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x3ac84d13 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x3fe99bbd ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x42a5de1d ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x4c2074b3 ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x4c9476b5 ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x5fe75949 ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x679fa284 ib_register_mad_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 0x8be80eca ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x946d5d27 ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xb7ac7dea ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xd9fa4a15 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x22f07253 ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x2a52c733 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x2fd0e42f ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xa0447f45 ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xa583c8a2 ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xaad4b80c ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xbd112ce5 ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xc1955a3f ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xddc330e7 ib_sa_pack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xedc2aa15 ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xf5de95c6 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 0x00152453 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x4b8ab027 iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x4da8f5f4 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x788f14a4 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x7e3780a0 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xaa0dd81f iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xb12659d7 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xde1d6349 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0211a0a4 rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x031836a4 rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x09695a8e rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x131990f3 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x146138b2 rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1fbbafcd rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2549039a rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2a144cc6 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x41443b44 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4d4a301b rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x5b9bdb79 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x71b26ee8 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x934d50ee rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa4b2b1ef rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc9186b52 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xcd713136 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd503b67c rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd9a7626e rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe832dd41 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xefa2e21c rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xfee7ab65 rdma_connect +EXPORT_SYMBOL drivers/input/gameport/gameport 0x0503d20f __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x16c1ba48 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x30a3b9f0 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x3e4822dd gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x79c09403 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x80dcaaf9 gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0xa7b7dae4 gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xd081b2dc gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0xfe711f28 __gameport_register_port +EXPORT_SYMBOL drivers/input/input-polldev 0x55adc806 input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x5a92f0ee input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x9316beb6 input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xb08209ac input_allocate_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0xfbb741a1 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x40626433 ad714x_remove +EXPORT_SYMBOL drivers/input/misc/ad714x 0xc39cc596 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xdf8f6e68 ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0xe66cea57 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x310700ce 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 0x50545c46 sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0x5bb085ce sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0x768bc02b sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xb59d4fd9 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xdecacfcb sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0xe4497b52 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x3fec8a88 ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x73e7ab79 ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x4a41a969 amd_iommu_free_device +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x78bbfb52 amd_iommu_set_invalid_ppr_cb +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0xb3866877 amd_iommu_bind_pasid +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0xbe9728f3 amd_iommu_init_device +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0xe768cf13 amd_iommu_unbind_pasid +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0xf9ba0aa5 amd_iommu_set_invalidate_ctx_cb +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x0359216a capi_ctr_suspend_output +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 0x3cd93e9d capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x47d3fc51 capi_info2str +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 0x6d62eb3d detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7031f616 capi_ctr_down +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 0x908947af capi_ctr_handle_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 0xd7aa71ea attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe3792715 capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe55fc872 capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xed061606 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xf7acb524 capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xfafbbb38 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xfd552f7a capi_message2str +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x0ce6af7e b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x26d54ba2 b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x29518bbd avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x4309f559 b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x555d68cc b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x6df10a8d b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x998ed052 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x9f429193 b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xaa062a6c b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xaf47880e b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xbeaac238 b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc24ab59f b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdbc06264 b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xe05d39a1 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xf159fb3d avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x0d64f7cf b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x0e01eebb t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x1c8eff35 b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x5522cc31 b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xa30dcfbc b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xb63fe71f b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd589009e b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xf5e6ebe7 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xf700df34 b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0x29562993 b1pcmcia_delcard +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xaec3240e b1pcmcia_addcard_m1 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xea620116 b1pcmcia_addcard_m2 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xf14bf8b1 b1pcmcia_addcard_b1 +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x2974ead1 DIVA_DIDD_Read +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x7ab59853 proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x3c780aae mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xac7782e3 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xaf3ee13a mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xd3d58223 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x6bf37358 mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x73f5a6c0 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 0x5b82d13c hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x7f29ce36 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xe227344e FsmRestartTimer +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 0xff2db2cf FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x329fd3fe isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x691c2306 isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x8e373bd5 isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xb1bd088d isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xdbda4c5d isac_init +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x34991150 isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xc5d00d47 register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xd0e19cab 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 0x17168432 recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1ae46dec bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3b233464 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x54451388 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x58798b91 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5f0df467 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6036a4ad mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x614ede30 mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x61d13d1e dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x70298577 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7d91b5c7 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x86fa76d4 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x96309324 mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9d5004b7 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9fafa632 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa395ffc9 mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa5e38610 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xac7b1570 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb8531539 mISDN_clear_bchannel +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 0xd50ece03 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd780b33d create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xdf12da3e recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe1de5d3e mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe87943cf mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf846b479 bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf850ae9d mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xfa074b9b mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x60721da7 dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xa215f1b2 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/md/bcache/bcache 0x0e1eabf3 closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0x8a3760a7 __closure_lock +EXPORT_SYMBOL drivers/md/bcache/bcache 0xa0c90eec closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0xbd61e47d closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0xd238b344 closure_trylock +EXPORT_SYMBOL drivers/md/bcache/bcache 0xd4b12f37 closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe3c17af1 __closure_wake_up +EXPORT_SYMBOL drivers/md/dm-log 0x27d4b0cb dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0x4ec91c32 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0x7b96ef00 dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0xee7d10a0 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x3e3f4da6 dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x552875f0 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x579e3fa2 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0x7d964d08 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x83c9ba4c dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x9494d728 dm_snap_origin +EXPORT_SYMBOL drivers/md/raid456 0x29225380 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x0cfa609a flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x1c2e6ed3 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x2409afff flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x2710c3f9 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x44cf9c92 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x87f287ce flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x9ff49914 flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xa3541296 flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xa977202e flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xb1d25f40 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xb733efbb flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xd826deac flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xf6510d89 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/btcx-risc 0x3838416d btcx_riscmem_alloc +EXPORT_SYMBOL drivers/media/common/btcx-risc 0x495e4b0c btcx_calc_skips +EXPORT_SYMBOL drivers/media/common/btcx-risc 0x692b9873 btcx_riscmem_free +EXPORT_SYMBOL drivers/media/common/btcx-risc 0xad2fe38b btcx_sort_clips +EXPORT_SYMBOL drivers/media/common/btcx-risc 0xc368f8e6 btcx_align +EXPORT_SYMBOL drivers/media/common/btcx-risc 0xcda0ded2 btcx_screen_clips +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 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x5b88faf6 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x96cacd19 cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0xae7dd9bb cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc78fbcd1 cx2341x_handler_set_50hz +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 0xf24408eb cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0x73f1e9c9 cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0xa29f3668 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/common/tveeprom 0xb7738e61 tveeprom_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0c651bb2 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0eee391b dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x17523ce7 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x178c820f dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1aa9a106 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x32552acd dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x398aab01 dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x39ac9fd0 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3b139069 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3bb5d4e1 dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3c8ec635 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x433a33c1 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4fca5adb dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x55d8ef04 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5de82144 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x61eb5726 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x64d6d7a9 dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x695508e8 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6c0d606c dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x731d682c dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x73c6182c dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x77031098 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7e9b52bf dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8452e30f dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x887caf4f dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8d0df2a1 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8d890442 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa0892bc0 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa2a65e70 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac33e8b5 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc6227824 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xca4965f1 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd03c012d dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd68a099e timeval_usec_diff +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe023b7ea dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe15697bd dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe3abf2b4 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe7726e0c dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xefcef46b dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-frontends/a8293 0xdeb49275 a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0x9368f4cc af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9033 0x99dc0151 af9033_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x27b3140a atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x0ddf17c1 au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x13eb9b0b au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x2dd64fb6 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x4064479e au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x6a70f3b5 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x9758136a au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xb2d355b2 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xc8669808 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xe0785b77 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x60ee0509 au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0xf29ba4f3 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x91bbc01d cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0xecaf658a cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0xd5c37df3 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x90238b44 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xe9c09c62 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0x5450f078 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x8a56edf1 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x99623428 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0x66736cfe cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x08ab8dab dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x24c93493 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x83721092 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x89aea748 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xab7d5db8 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x05214a81 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x0733aab2 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x0b8d1eff dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x0e7d1690 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x101b2a18 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x1c82de3e dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x2c1a01e3 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x3e1ae81c dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x4cff1172 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x757870d7 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x83354c28 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x8fbf53b5 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xab2ca252 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xc3ad08a0 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xcea214a2 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x99514bfa dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xb4ebfaed dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xd33a86a7 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xddf5e191 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xec3346d8 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xf583f959 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xfe9a8c9d dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x24cbb629 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x8fb5ac1a dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xb97c6d99 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xc462bea7 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x14b13c56 dib7090_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x2a2b2423 dib7000p_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x5aba4f15 dib7000p_get_agc_values +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x5f261fce dib7000p_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x6502c706 dib7000p_update_pll +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x73627fb5 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x7cbae3b6 dib7090_slave_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x8d66cb98 dib7000pc_detection +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x92f2dea7 dib7000p_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xa9f3cb00 dib7000p_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xb63f5004 dib7000p_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xb967fa4d dib7000p_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xc396a3b9 dib7000p_set_agc1_min +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xca86d872 dib7090_get_adc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xe239a5b6 dib7000p_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xea82a880 dib7090_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x1b3a969d dib8000_pwm_agc_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x217be396 dib8000_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x3453f3f8 dib8000_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x34c75ef9 dib8000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x71cae63f dib8000_remove_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x74138243 dib8000_update_pll +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x92711988 dib8000_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x9522d6c0 dib8000_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x952d6101 dib8090p_get_dc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x9fad41f0 dib8000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xa0d59aa3 dib8000_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xa72a1993 dib8000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xbfe7f0e2 dib8000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xc004c2a1 dib8000_get_adc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xd27f248d dib8000_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xdaf3ae4a dib8096p_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xdfae4483 dib8000_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xf1c7db17 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xf6f52e6d dib8096p_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x45c09217 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x4fd78c9a dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x7289f0f3 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xed04a059 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xf5797bd1 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x9a603d62 drxd_config_i2c +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0xb7adb7a9 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0xc46360a6 drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0x3e677746 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0x7c750c7f dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0x2ddc624f ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x79f321eb isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x3702f290 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x78208106 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/it913x-fe 0x546588ba it913x_fe_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0x00188d5c itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0x598c7a2b ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0x111f8fc8 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0xa4956680 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0xd1627a7e lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0x84668aa4 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x95788264 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xab9fed85 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xdb13d616 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0x84b3459e lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0x552d7d2f m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0x7f8a2c9d mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0x313284bd mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x88496cc4 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0x57d46255 mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x20095c9e nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0xa622de08 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0xa173b079 or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0x76d524e8 or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2830 0x3b4a886e rtl2830_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2830 0xf8580dd9 rtl2830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2832 0x77a4a9db rtl2832_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0x91f534bc s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x1749f9b4 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x19e0e473 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x36517f83 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0x7ca1b6ee s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x89c5f764 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0xbd415bb3 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0x25dda268 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0xffd36171 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0x2c4afa3b stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x812d421e stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0x108f53aa stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0xaae37202 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0x33723f6a stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x7d73cfed stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xa5b0efd0 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0x1f652db8 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x1c45e063 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0xa0be36b1 stv090x_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x90c9f50a stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0x9b173b0d stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0x820e61ec tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0xf4325a58 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0xc5439de3 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x2c140d48 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xfc789e5c tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0xd21c4e30 tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x41bde84b tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0xdbd9c1b6 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x90a1f720 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0x71d7c7d5 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x2a5e254e tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0x8080671b ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0xb65b7176 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0x0bff066f ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0x1bd5e0fa ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0x4e46afdf zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0xc271dcac zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x72d371a9 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x0fa431e0 flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x989ae7a5 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xa0cc8dd3 flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xa2f6010e flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xa4b80d43 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xb6342c4b flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xee19aa0e flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x30ea5658 bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x507a7e27 bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x9af5af6c bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x9fe03762 bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x31c3d3c0 bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x3cbce29c bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x6106466c bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x49363fab dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x59831e19 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x5b74b19a write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x811173ac rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x9711baf4 dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x9a3030bc dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xa63e0f9a dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xceb92ed9 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xd0502dc2 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x86ac567e dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x006d948e cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x53459880 cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x55d55487 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xa219e640 cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xc1fb0abe cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x1a57e8e3 altera_pid_feed_control +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x8c8e3983 altera_ci_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x9247b72f altera_hw_filt_release +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x98e47f06 altera_hw_filt_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 0x0ab74a8f cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x431d6e01 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x6bb1e093 cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x7ed0e375 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xb555e08e cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc8375d3e cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x11f99943 vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xa2265c62 vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x19885fa0 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xb99a0e44 cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xbaba84fe cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xcaed3acf cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x27db5128 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x308aac48 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x49160c49 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xa0d94718 cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xad1eeda4 cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xdb09ecac cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x00b679a9 cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x0718bd52 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x0a6a5dba cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x112e91d3 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2cdb8cf6 cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x30b047b2 cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x33710b56 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4b83a25e cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4cb331db cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4e2db247 cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x584516e8 cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5e190ebc cx88_shutdown +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 0x81c3c5b4 cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8b0ae6db cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8fb09e4e cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa9dbbb0c cx88_free_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb8ceecfa cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xbf4bb944 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc3dbc972 cx88_risc_stopper +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd5237a84 cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xdf5686e1 cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe20839c4 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x4559f986 ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x550df330 ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5b0df478 ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5b6cc82c ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5f2b74c1 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x60c87778 ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x689b7088 ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x6ae78423 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x711a6735 ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x7e0c47f1 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x84723405 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x8d80402b ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x9f79245f ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xa33a13fa ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xbc1754bb ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xd0634bbd ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe03d5983 ivtv_ext_init +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 0x25a59b06 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x73039031 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x87815dcc saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x92880b6a saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xa7fdd618 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xb1ff919f saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xb840360d saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xbe4cbdc4 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xd514412a saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xddc9aeb6 saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xdf7872d6 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xf43b10bd saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xf6b816ac saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x3cbb271a ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x689efc26 videocodec_unregister +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x886b8d0e videocodec_detach +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x8c95fc3e videocodec_attach +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0xd76bd998 videocodec_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x12767f1e soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x34a98141 soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x38b2314a soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x4aaabe9d soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x4d25274c soc_camera_unlock +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x58a4b0fe soc_camera_lock +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x6478568a soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xa2abd4a1 soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xe6b0257e 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 0x5f3e3558 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xa9546115 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xfe2c3a07 soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x853514d1 soc_camera_client_g_rect +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0xc767f750 soc_camera_client_scale +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0xe5fe0fff soc_camera_client_s_crop +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0xf2213782 soc_camera_calc_client_output +EXPORT_SYMBOL drivers/media/radio/tea575x 0x137fd222 snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x15f9c631 snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0x371adad8 snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0xf64f6e95 snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x188672b6 lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x405cb6cd lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x52378b40 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x750961c8 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x7b605717 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x9d2e6338 lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xd20b3027 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xdc6fcf4e lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/rc-core 0x4b79a935 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0x80457da6 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/tuners/e4000 0x6a3fc9e8 e4000_attach +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x41188034 fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0x677df936 fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x62bd016b fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x97cbd6f4 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xcf95be49 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc2580 0xd843b10e fc2580_attach +EXPORT_SYMBOL drivers/media/tuners/max2165 0x639f0a6b max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0xf938bfc5 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x72265508 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0x59653d4c mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0xaca5f665 mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0x3bfd10f9 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0x414ad5f3 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18212 0xa30e28ec tda18212_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0x36d7d416 tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tua9001 0xf6f426fa tua9001_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 0xe851cd4c xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/tuner_it913x 0xa1b77ca9 it913x_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0xed4ebe2a xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0x4bdd48da xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x1970bab0 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0xe8008d90 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x117f77a3 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x2cbf1333 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x2f241a0f dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x3da70fb6 dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x69168c11 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x72a0ce19 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x96db0970 dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x9f4b3bdc dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xc9099b60 dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x512e25f5 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x625f7969 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x821f517a dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x94d98685 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xaae84d96 usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xdef49ada dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xe250c0ca 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 0x74d7c1cd 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 0x321c9dc6 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x483dc392 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x4d42f309 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x6f28091d 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 0xb55f3991 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb613e131 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb8e07be5 dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xbbd35b4a dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xe49b91ff dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xe7830c8b dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xff46842d dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x2cf1b8a0 em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xe7fcd50a em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x56d2486b gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x57676d6b gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x6508906a gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x8377fc3e gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x872eb022 gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xa82d9a05 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xae29d3d1 gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xeb0ee923 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x4cf21b08 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xce60c6d5 tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xfa77445f tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x0e6306d7 ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x25a4071d ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x42c8e001 v4l2_ctrl_next +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x4adaf0f3 v4l2_ctrl_query_menu_valid_items +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x53c9394f v4l2_ctrl_query_menu +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x5f96a661 v4l2_ctrl_check +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 0x69d078b0 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x9938b6bb v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xd407b108 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x17d09f46 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x2e4720be videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x415c3de5 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x46460609 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x46b716bf videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x5c910298 videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x4ec9b09a vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x002849c4 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x00fa10d9 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x052106aa video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x06057bd8 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x072243d2 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0d7f0df8 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1238fadb v4l2_clk_register +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 0x1b809dfb v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1c1632c1 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2252eb82 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x30fd12f3 v4l2_ctrl_new_custom +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 0x3e73099e video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x43c43f4d v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x48bedc13 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4e570b03 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4f42c155 video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x50b5a840 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x55323ce4 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x584bfdf7 v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x58cb7d9a v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x599f9747 video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5bdd23fd __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6c6c7a39 v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6e6732f9 v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7205c491 v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7242ccd1 v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x745c4491 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7712aa19 v4l2_g_ctrl +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 0x827f4a36 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x837c1f32 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8494ff89 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x880def73 v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8a2efec7 v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8c93ac49 video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x94c7bce5 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x96424d62 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9bd04c01 v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9fd152a5 v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa24c279e v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa301426e v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa65ed420 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa6cc6f83 v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa81942e4 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaa9b807d v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xad24e4b6 v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaf1af17a v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb9e360a7 v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xba641914 v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbac4a225 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc12cf8f8 v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc1dbd46e v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc777b0a3 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc7ce8df2 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xca01209d v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcdaf49a6 v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcf059e13 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcf3c5b9f v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd03c338e v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd0a26c7a video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe50f2147 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe5d7143f __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe6fce6f2 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xeb8652ed v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xebda6707 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xee51e4d5 v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xef468a60 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf6b54d59 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf7b13f5d v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf9b4fd18 v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/memstick/core/memstick 0x0f8c5e49 memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x1462328d memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x1b973a6a memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x37706137 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0x3b5b2039 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x50c1c1af memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x67d96438 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x96b6ee7f memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xbbc7c07f memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0xd8c139b4 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdc07e67e memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xf33ed0f5 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xf5608773 memstick_free_host +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0cdc2505 mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1bdcbf22 mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1d03e3de mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x239b6772 mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x26b8b96a mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x38312d47 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3902270a mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3b358e74 mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x47a5185a mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4ed8d02f mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x633efd21 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x656500c4 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6b2c4937 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6e5e4ab2 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x74b9a604 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7acb3048 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x88b55691 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8a3ba64d mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8d4c18b9 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x90d9ff59 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x95fb0cf0 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x98982ade mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa1be814a mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb3842e5e mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb5bd7fe6 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb62f9e64 mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xbff12bb8 mpt_GetIocState +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 0xd026f2e9 mpt_set_taskmgmt_in_progress_flag +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 0xf254d22e mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0415be5c mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0eae4ae3 mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0f26fec6 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x153e7d96 mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x15a42439 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x49803984 mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5075b753 mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x51ec36d0 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x57d60a5c mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x64d99799 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x67b9f3e4 mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x67d93763 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7001e42d mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x80cd7c2e mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x82659364 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9c598d38 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9fb73d8a mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa97e58c7 mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb50f2f80 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb580dbc8 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb5960c1c mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xbaa1162b mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xbf483660 mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc04d0014 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd688fa64 mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xde4ef1ce mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfa34df4b mptscsih_bios_param +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x21149cec i2o_parm_table_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x28f845f9 i2o_iop_find_device +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x2a843bef i2o_dump_message +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x2c80186d i2o_msg_get_wait +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x365a549d i2o_cntxt_list_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x3beab0b9 i2o_cntxt_list_add +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x4005ebd8 i2o_status_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x4e82449a i2o_exec_lct_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x7634c244 i2o_parm_field_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x78b0cdd0 i2o_driver_notify_device_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x7c7ee0fe i2o_driver_notify_device_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x80aa05b3 i2o_find_iop +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x87b3402c i2o_driver_unregister +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x895796a2 i2o_driver_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x93c3e263 i2o_msg_post_wait_mem +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xb17666a3 i2o_device_claim +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xb4c00dcf i2o_controllers +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xc7b469c9 i2o_event_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xcb5ac9c6 i2o_cntxt_list_remove +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xcbd7c073 i2o_parm_issue +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xdccdaaf7 i2o_driver_notify_controller_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xe472005b i2o_cntxt_list_get_ptr +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xf0aaaf6c i2o_device_claim_release +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xfce62d3c i2o_driver_notify_controller_remove_all +EXPORT_SYMBOL drivers/mfd/cros_ec 0x3e012cc4 cros_ec_prepare_tx +EXPORT_SYMBOL drivers/mfd/cros_ec 0x45ac71c5 cros_ec_suspend +EXPORT_SYMBOL drivers/mfd/cros_ec 0x4942f2da cros_ec_resume +EXPORT_SYMBOL drivers/mfd/cros_ec 0x6242f276 cros_ec_register +EXPORT_SYMBOL drivers/mfd/cros_ec 0xc5595388 cros_ec_remove +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xa89705da pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xe6734321 pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x0ac93580 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x0f6cdfd5 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x18b36e3c mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x52570044 mc13xxx_irq_request_nounmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x5a9386d9 mc13xxx_irq_ack +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x62e0a98a mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x761a065d mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x87a92c0a mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x881b56a1 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x8e219590 mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xad7b97cf mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb97b160a mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xf67b8716 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/tps6105x 0x01f3f640 tps6105x_get +EXPORT_SYMBOL drivers/mfd/tps6105x 0x082a3d6d tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x0b6f802e 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/misc/ad525x_dpot 0x44516e30 ad_dpot_probe +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xff1ad72a ad_dpot_remove +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x1746ab2d altera_init +EXPORT_SYMBOL drivers/misc/atmel-ssc 0x1d875b9b ssc_request +EXPORT_SYMBOL drivers/misc/atmel-ssc 0x846eda8e ssc_free +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x0e9755b9 pwm_channel_free +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x5a8b82f9 pwm_channel_handler +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x5d5c2951 pwm_clk_free +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x6a5e1f70 pwm_channel_alloc +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x73330c97 pwm_clk_alloc +EXPORT_SYMBOL drivers/misc/atmel_pwm 0xeb7f2c6f __pwm_channel_onoff +EXPORT_SYMBOL drivers/misc/c2port/core 0x4fd3716c c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0x70ebce74 c2port_device_unregister +EXPORT_SYMBOL drivers/misc/ioc4 0x4bd90e97 ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0x4ccaf40d ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x2e8f58d7 tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x3e96a8f7 tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0x5936da45 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x7d812e7a tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x92380499 tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x981c0cd3 tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x98f3490a tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xa7b5c88d tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xa8c2ec46 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0xae55fb8b tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xb2c06fdd tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xc38fb103 tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0xcf8ae37d tifm_alloc_device +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0x2484206c mmc_cleanup_queue +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x60372664 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xb29e6671 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xe0151cb2 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x3d242bea register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x4d77d49f do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x5b00d44e map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x8fc98ade unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0xe1c84d14 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0xf958bb26 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x9405dcb1 simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x952e7897 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0xd34c4f56 mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/denali 0x5772121b denali_init +EXPORT_SYMBOL drivers/mtd/nand/denali 0xef8d8ba3 denali_remove +EXPORT_SYMBOL drivers/mtd/nand/nand 0x04c7672c nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x20485442 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0x30c49095 nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x61d1e56f nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0x9aac61bb nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0xe655da09 nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x9ea5bbb8 nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xc9237109 nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xd9fc11b6 nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x5d124c42 nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xa495ccb5 nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x57a31e57 nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x0a5a74db onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x402875a7 onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x6570c4dc onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xd810c84f flexonenand_region +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x1a1c5fc5 arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x3548145b arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x4118f81e arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x4d7d7bf6 arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x78077a48 alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xb00ff698 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xda61f928 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xf37452d1 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xf3df712c arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xff2c7098 arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x3619dc63 com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x44593748 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x9e540b1b com20020_found +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x2befdec1 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x3332e2d1 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x4060091a ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x529fdd96 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x64df3a34 ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x94f504bf ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xa5baf6be ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xb3474b1e NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xd024e3f9 ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xdc0be520 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0xa34574f6 cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x2a5fb857 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x3e3c3832 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x436f2a2f t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x4fbc55e7 cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x569e6cb7 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x5e20fc42 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x64ac4d51 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x6a290ffa t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x70cab618 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x847a0711 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x8b0473e6 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x9f7e7267 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x9f906586 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa8c9bc13 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe9e67ea6 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xfd2938a7 dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x02b21d7e cxgb4_enable_db_coalescing +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1005e960 cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1790980a cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2dac5a01 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2e200fee cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x35154f3f cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x356c8b6e cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3996823c cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3be7967f cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4d5f7673 cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x58bf015a cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5b606688 cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x62a09cdf cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x655a3d23 cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x67408ceb cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7013a3d7 cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7cedcbe1 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x86686784 cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8f8f48c2 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x92d553b9 cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9cca9c7e cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xac29b20f cxgb4_disable_db_coalescing +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbdad0c79 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xca689ceb cxgb4_create_server_filter +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 0xe1577c05 cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe1af26e5 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf58c3850 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfd7acb1e cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x0e712340 vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x42537056 vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x4c069ef7 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 0x9c915621 vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x8b836ddf 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 0xd271e4a0 be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x17d7725f set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x22ce0447 mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x27d0da43 mlx4_set_stats_bitmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2bf096b5 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x403c23fb mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x44e52b1f mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x52b41f60 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x577ccb7c mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x594303c2 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5e5883be mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x686e71e8 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x69434a3a mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6ba5ad75 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x75782c27 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7f30173a mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8d89d1ba mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x96e7e843 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9bbebc31 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9c45446a mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb5d9efc5 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc625b1d8 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcc87d463 mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd6829216 mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd6ab9936 mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd9d884b2 mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfef679ac mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0be0783f mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x33f308bd mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3dd4b434 mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x41bea1ff mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x459b7a5b mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x50bedf1f mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5aadfa46 mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5ea04084 mlx5_dev_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x68d2f40e mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6aa1022a mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6f69cdbe mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7ab50dce mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8c066e03 mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x962b16b4 mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa241b4b0 mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa43055fc mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaa95f2dd mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaf13b15e mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaf2197f6 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb01ac315 mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbaec908f mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc2ef47ed mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc81b91e6 mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd5471e20 mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe85ec0e7 mlx5_dev_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf2a78000 mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf782345b mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x0a9a33ee hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x34753d74 hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x4da14482 hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x8a492227 hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x9ee7ab7d hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x0683fab0 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x0a56a8e1 sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x2f80054c sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x379a0e64 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x3c5c25af sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x621222b0 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x7495b941 sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x76da379f sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x85741380 irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xee779558 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/mdio 0x22bce513 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/mdio 0x43e4defc mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0x7577f992 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0xa1a29548 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0xb34a7575 mdio45_ethtool_spauseparam_an +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mii 0x031d140f mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0x08bff4be generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0x0e03989d mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0x17750a3a mii_check_link +EXPORT_SYMBOL drivers/net/mii 0x209aa64d mii_check_media +EXPORT_SYMBOL drivers/net/mii 0x22836072 mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0x63deaa7f mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0xe03acf37 mii_nway_restart +EXPORT_SYMBOL drivers/net/ppp/pppox 0x054ecfe1 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xc724b5e2 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xee1ed758 register_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0x99f6d21e sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x05a51874 team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0x130e86d7 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0x4c40e38f team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0x5506b6c7 team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0x93c5b5f2 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0xa2b7b0fe team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0xc2005393 team_options_register +EXPORT_SYMBOL drivers/net/team/team 0xdb1ccaf5 team_mode_register +EXPORT_SYMBOL drivers/net/usb/usbnet 0x3be98b4f usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/usb/usbnet 0x71831140 usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0xb8e3a2bf usbnet_link_change +EXPORT_SYMBOL drivers/net/wan/hdlc 0x01a09d4b hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x1494a74b detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x1553fcd3 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x15f815e9 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x173f7556 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x1914d229 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x427c7a4a hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0x661cae66 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0xa37503ed hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0xad9fd775 unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0xffcde53d register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x0de52d1d i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x32d94f0a reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xa67e5ab3 stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xd96f02c2 init_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x225219a9 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x33671fc6 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x372fb39a ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4e2481d5 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4e357183 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x53358ce3 ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x53459989 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x6d2e7441 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x6eaefe02 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x736526ae ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x8d8fb74d ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xd4f9a9dd dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xdbfa7282 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x0fdd2162 ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x105baea7 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x652a1a05 ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8246be6c ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x895f9dc2 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x9473d337 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xaf096710 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xd4eda6f8 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xf7a97c28 ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x0199ec46 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x232b69f9 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x27cf1694 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4022b6b2 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4c6ddcb4 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4e1380ee ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4f1f50ff ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x59620342 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x5c734c27 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x87d259a2 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 0x951b93b4 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xbff373d0 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xc272dd37 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xde6b0134 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0x0fc10757 ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0x874bde61 ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0x912357a7 ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0x91fc76f5 ath9k_hw_wow_event_to_string +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb98100b2 ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd9c4fd58 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xdb15bd82 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xdf7e1895 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00641b7b ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0429ea88 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x042cfd23 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x06049873 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0673d162 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x070fbd5b ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0829d5bb ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0cbbbc40 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0f1a3647 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x108ce0e4 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x129318fb ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x20975923 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2106373b ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2113a30d ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x221f5512 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x22a775b0 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x23ca4086 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2a19c018 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2c5d5300 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x32c40a9c ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x33d3a22f ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x34ac1b39 ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x363c9110 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3b1f94f5 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3cde566d ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x408ebaee ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x41e3ce5a ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x43699545 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x43a10dc4 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4658f8a2 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x46b51094 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x478b1a10 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x48644241 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x48ff2219 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4ac0de51 ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4b06e849 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4b571050 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4d41812d ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x56ec2d51 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x59a7a196 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5b50c6c3 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5d994273 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6026da0d ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x60484bd9 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6310a431 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x64df0489 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x688c7444 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6987d82e ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6d4576fb ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6fa3e65e ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x71e484e8 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x721f57cf ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x73d3460f ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7996d693 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7fc4f3d9 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x879b2288 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8bbc269f ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8c4654a3 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8e711966 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8f62d33a ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x908c7ef5 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x92230ed3 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9336fc2a ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x940d451b ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x94177434 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9b3a9158 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9bc54b49 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9c3c3a36 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9e910e4c ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa0a8a552 ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa4d02e37 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xab82bda6 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xac1ac5d8 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xacdd9f95 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb14eab60 ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb98bfa31 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbe4bc7b2 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc09525f6 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc1f67ef4 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xca634ab0 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcbc5638b ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcca5cde0 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcf240382 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd3f1c5b1 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd446f8e8 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdc682184 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdee83546 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe0048026 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe4a899ec ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe894b1ea ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xea398e4d ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeecd1c7e ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf4c0dc1c ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf6915215 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfbb6e424 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfbfbd440 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfdd98a43 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfde49030 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/atmel 0x04f5dfb6 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0x105b3f42 atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0x45aa782d stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x26e13e2e brcmf_sdio_probe +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x2ee13aa4 brcmf_sdio_remove +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x08239e78 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x0cbbec97 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x28e880e4 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x2dc227f8 brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x4c752bb6 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x590fda25 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x6f81dbe6 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xa3032b89 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xaf15b602 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xb66c54c4 brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xba765c69 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xbeb1a8ea brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xe347493a brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xfc282a08 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x13680786 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1723ac32 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x19a10597 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1b091f56 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1ca10c9b hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1cab651d hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x2a2e306c hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x30616e23 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3dc458cc hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3ed18b7f hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4456310b hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x582da880 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x68393b24 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6bde1c51 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x714e1898 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7e78cfe6 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x91c9784c prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa25c75fe hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa84ed568 hostap_set_encryption +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 0xb57ca609 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb7020b8f hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xba9e1906 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xbf249e45 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd95a45a8 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf3f1d9e4 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf9dcbe07 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1a50025c libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1eb8bc9d libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x2ede1233 free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x32f2199c alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3a4f9148 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3d0829e1 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x42ab6f60 libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x45eff16e libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5122d7c4 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x54051a18 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x60a767ca libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x9e058e11 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa56618fc libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa7dd5c0a libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xae8a7863 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb7015d00 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb80aa819 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc3596efa libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xdb0a2b54 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe254a905 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf0cc8515 libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x027d29fb il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x02da296a il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x03d7f3e4 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x03f4bcc5 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x04f646de il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0626831e il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x06b3ba74 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0818f5ea il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0b2c48cc il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0bc7b01b il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0faa3fc1 il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x11618e70 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x13435b78 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1809a07a il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x18a662bc il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x18d314a0 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1e10189a il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1efab844 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2147f52b il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x25d62afb il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2d4184df il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2e27f711 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2f9bcd77 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x31a87864 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x35482a85 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x39f5dcbd il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3de065f7 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x440cb6ac il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x45ac0d63 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x48215a8f il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aee6d9b il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4b33d9d2 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4c079603 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4c4e9521 il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4e53cc9c il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x546cb713 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5ac483d9 il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5aee95ed il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x63cf70ec il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6fbe5fca il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x732bb731 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x739f9946 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x76748ade il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x770c6da6 il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x78fe7d10 il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7a9575e5 il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7b8fe43a il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7d898d96 il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x81a0a968 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x833dbe11 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x88526afe il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8c2c02fd il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8deabf06 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8f1c8142 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9243454c _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x942b2ea2 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x94b4db33 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x99093d1d il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9aa2e22b il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa11f57b4 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa21f0c7d il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa2cda133 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa7e14e0d il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xaa381388 il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xac143c01 il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xac6b6f5f il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xacc7463d il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb18c2624 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb18f7ca6 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb22790b8 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb5771db3 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbb99140d il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbce35ca2 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbdbf915f il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc38a32ed il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcd5fd3df il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcfdfd828 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd1b86756 il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd3fab846 il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd6010c12 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xda45a189 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdbec16fc il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdd42aa02 il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xddd85c47 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdfb2d921 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe274aec4 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe27a08e8 il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe8f532c2 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeb78cfe6 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xec91a5ff il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeea18be6 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf04e4648 il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf1a73fe7 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf4dfb90c il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf9275f10 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf996af16 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfc20748b il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfe1339cb il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x08dd8699 __tracepoint_iwlwifi_dev_rx +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x0c50fa2b __tracepoint_iwlwifi_dev_tx +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x1ecc5465 __tracepoint_iwlwifi_err +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 0x675bcb86 __tracepoint_iwlwifi_info +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 0x8de37664 __tracepoint_iwlwifi_dbg +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x954eb7a7 __tracepoint_iwlwifi_crit +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 0xe2dcc8de __tracepoint_iwlwifi_warn +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xf9ec6bdd __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x03d33fa0 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x15a50fd3 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x546cc1a1 orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x669657cd orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x77db0bd5 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x8c30bf0c __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x96caa111 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x9fa8b70c free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb509f6c0 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xba11fe39 orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc458cf7c orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd7c47037 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd9c0c282 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xdb0cbd65 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xeaa20619 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xec69054a orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xf1595778 __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/btcoexist/btcoexist 0x7978d0c6 rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1bbd233d _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1d2ccc95 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2090e697 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2a6dfe89 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x30b855f4 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x30be2a08 _rtl92c_phy_dbm_to_txpwr_Idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x349943f2 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3a6a5f40 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x47a0d9bb rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x49523605 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5093c166 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x51871035 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5226b641 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x62b3b64c rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x69f21632 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x708d168b rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x745cfb82 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7a246a12 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7a86d0a5 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x82083ae7 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x99bf5d47 _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa17e2568 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa1e36ee3 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa214ab4e rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa42694e3 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xad44f4a9 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xad739c80 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb08bc885 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 0xb423cc63 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb5765a1a rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb89a0a5b rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbdbaa308 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbe3719bf rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcbd4a6bb _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd14c89e3 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdac73dce rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe030b8f1 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xee66f7b8 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf99a76d7 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfa341c11 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfcdae7d3 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x1d297d10 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x9322b95b rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0xcb88165e rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0xfe5f2cb8 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x236ee15f rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x3bc5dab2 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x44d76287 rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x5427f4ae rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x080b1c3e rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0e0fc584 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0e97ecf2 rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x17a32910 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x1d84d8d7 rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x250492f1 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x3668472f efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x375f52f8 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x49863ac3 rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x620e916c rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7d1f174c rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x94671575 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9ec8a3b6 rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa01cb03c rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb536b9b3 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb8a32aba rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc0dc3c5a rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xda1e7e37 rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf151a04b rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xffc64567 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x220aea5f wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x6e7cbb3b wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xaf97d3f6 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xda900d77 wl1271_free_tx_id +EXPORT_SYMBOL drivers/nfc/microread/microread 0xdf76e528 microread_remove +EXPORT_SYMBOL drivers/nfc/microread/microread 0xf20f65d0 microread_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x9ba6d5e2 pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xac0c2aa0 pn544_hci_probe +EXPORT_SYMBOL drivers/parport/parport 0x1988dd88 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x1acaf50c parport_read +EXPORT_SYMBOL drivers/parport/parport 0x1edfd445 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x2817c68c parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x2dfaefdb parport_release +EXPORT_SYMBOL drivers/parport/parport 0x3bbc4bb4 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x3dc4aee1 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x4467f9c8 parport_write +EXPORT_SYMBOL drivers/parport/parport 0x45dc871e parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x4c91ea1c parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x5cbec2af parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x62c6d6b5 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x638e30dc parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x6def6414 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x79e8500d parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x8fd215fe parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x96d2c282 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xa612fb71 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0xa8944ef0 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0xa982aa06 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0xabae87a6 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0xb316f590 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xcdc76e80 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0xd32a601a parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xdae63da4 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0xe7194c8e parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0xed791e62 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0xef3c7436 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xf4520e65 parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0xf947d881 parport_register_device +EXPORT_SYMBOL drivers/parport/parport_pc 0xed28b8a2 parport_pc_unregister_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xf906e6ae parport_pc_probe_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x009d88e7 pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x0768a5fa pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x11d71a29 pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x23bc74db pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x25fed099 pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x4abfb27c pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x4d3fb711 pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x5d9d6ee2 pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x65140012 pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x6b0e9351 __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x78c66bbd pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x816726e4 pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x83668855 pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x89bb10ab pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x9acab7bb pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xd1dcebba pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xd87bfc23 pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xf09630c4 pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xfe2d12ce pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x00a7c081 pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x0ffba8c1 pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x19c1c5bc pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x4420fcc5 pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x52699615 pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x7783b779 pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x7a16c0c9 pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x91c64bee pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x9a6dc320 pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xb4edfe48 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xf74500e7 pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0xc29b1470 pccard_nonstatic_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0xe53e4809 pccard_static_ops +EXPORT_SYMBOL drivers/platform/x86/intel_ips 0xd32b0b5b i915_bdw_enabled +EXPORT_SYMBOL drivers/platform/x86/sony-laptop 0x5bb1e117 sony_pic_camera_command +EXPORT_SYMBOL drivers/pps/pps_core 0x23f45fac pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0x2742d2e6 pps_register_source +EXPORT_SYMBOL drivers/pps/pps_core 0x555b01d6 pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0x7e564fb1 pps_unregister_source +EXPORT_SYMBOL drivers/ptp/ptp 0x39ce805f ptp_clock_event +EXPORT_SYMBOL drivers/ptp/ptp 0x672301f7 ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp 0x73029e8c ptp_clock_unregister +EXPORT_SYMBOL drivers/ptp/ptp 0xa79cc8e1 ptp_clock_register +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x4c8e9375 pch_ch_event_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x5014fc0c pch_ch_control_write +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x670322a2 pch_tx_snap_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x6cef28b3 pch_src_uuid_hi_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xa93fc2ea pch_rx_snap_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xf012e6a5 pch_set_station_address +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xf25d6e87 pch_src_uuid_lo_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xfc87f93d pch_ch_event_write +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xfd21e307 pch_ch_control_read +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x0dfc5395 rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x15391794 rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x1f042cdc rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x39153c3c rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x513392a6 rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x73f3a1ae rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x9592b683 rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xadc2907d rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xf9d705cb rproc_report_crash +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x15365247 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x162948e3 fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x352c83cc fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x3e47e4c7 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x48da797c fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x852a946e fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x88337a2f fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x8becd33a fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xb242d71d fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xb3948ffd fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xe6e04e24 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xfaf38adf fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x056b7e24 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0a0f2a05 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0b2c4dc1 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x12f6eddf libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x13e0fb24 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1e33302a fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1e89b337 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2354ee9b fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x25d62d99 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x274facfb fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2d317860 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36dcf496 fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3fc5b14d fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4ae88b83 fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5474ae9d fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x57cf3658 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x69c4ac96 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6a4231b3 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6b15471a fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6bae6189 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6e6ca4af fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7366259b fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7d67c194 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7efeaabe fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8519631a fc_change_queue_type +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8873f5f1 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x916ba696 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9250fdd9 fc_change_queue_depth +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x935f1a08 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x98df9bcc fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa14800a4 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa1c9dc7c fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa3ce4c26 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa53867c5 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa99a1b15 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xad15283d fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb3928e4f fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc3508526 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc43b59c6 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc7460b10 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc85af469 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc88bb73c fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcf1c299e fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcf404d03 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd33087e6 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd618e94d fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd8384267 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe485ccbf fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe8139531 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf037972f fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf1d3677a fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf530f0c3 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x430820d8 sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x98254d31 sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xc204b8bc sas_wait_eh +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xd517825e 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 0xcfcc9ab1 mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x02d977d5 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0ad9a3c7 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x11000311 osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x15c94ac8 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1c9c7b38 osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1f57029e osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1f8d7eb2 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x23adb9f2 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x24e52277 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x34770530 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3a6eba83 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x416c2ea7 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x57e786d8 osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x58100506 osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x61abd185 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x712305af osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x72f8a536 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7d6e3096 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x87b1832f osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8d8f88d2 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x93ab3a07 osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa8d3644c osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xac9498f1 osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb13c0a2d osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb63f1608 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc247394f osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc5a50dae osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xccdc1e4e osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcdf4787e osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xdf2e69d1 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe44e592e osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe6a9043c osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe7f021cb osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xef095061 osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf0a0dcc2 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xfef4a557 osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5ebd6afb osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x6bea12d6 osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0x7f5267f9 osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0x944e1e7f osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xbeb868ad osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xe3938191 osduld_register_test +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x28d68101 qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x3bf534ba qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x715b4c9a qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x7d78f37f qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x954f8f68 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x95d7e407 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x9a29915a qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xa25f1ac1 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xb5d325d1 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xedfc8c19 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xee408709 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1832be4a qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x30f93afa qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x408647b7 qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xb2d6d82c qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xda4aad84 qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe0342c3f qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe76b3b20 qlogicfas408_get_chip_type +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xf2b95199 qlogicfas408_setup +EXPORT_SYMBOL drivers/scsi/raid_class 0x21746cc7 raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0x6c93a74b raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0x82e1e91d raid_class_release +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x064ca458 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x1d9aa59d fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3a8e765f fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x4b7c26b1 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x806765c8 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x87276765 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x914eabf6 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x984406a9 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xa7851c15 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb91341c0 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xc614d7ee fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xeec79e7d fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xf856eb35 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x02f17584 sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1202e8d7 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1dfeed37 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1f22a433 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3b8a2f62 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x47ab81bc sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x53f285ad sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5ef1a5f5 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x69cb2e25 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6f8118d2 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x70c14c84 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7182295a sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7a894b35 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7be075cd sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7dc3e644 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x826de376 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x902b2d77 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x94243897 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xacabeb30 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb19c9bab sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb31ebe6a sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb868cfd4 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc132d8cf sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc9471327 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xce0fbf48 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdc58e838 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe30be0e4 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe8f23949 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x48e5d4fb srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x509106f8 srp_rport_get +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x805e6129 srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xf6d540dd srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x3a133a2e ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x70225807 ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xec577f8a ufshcd_runtime_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x00bb4d5b ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x13ff9029 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x144c90a7 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x2a54841a ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x2a77f2d9 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x2ea9d3b5 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0x398a6136 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0x452f684d ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x4ed65559 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x63056603 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x6a721e12 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0x84b6b073 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x93a0cb21 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x93e36d30 ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x998f3ace ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xa8f1d2d3 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xc7cc37dd ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xd6c65c34 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xdca836cb ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0xe621d45d ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0xf15863d3 ssb_bus_powerup +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x65f71249 fwtty_port_get +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x6f5a5353 fwtty_port_put +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x2493954f adt7316_remove +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x3e14cc96 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x65e405ac ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x6d3f1123 ade7854_probe +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x02234a1e lnet_copy_kiov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0264d470 lnet_extract_iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0363b57a lnet_copy_iov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0bce7eef lnet_counters_get +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1366b7ac LNetSetLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x193fee2d lnet_register_lnd +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 0x1cc38fc2 lnet_parse +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 0x3947a13e the_lnet +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 0x4e268c63 lnet_net2ni +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5811a721 LNetInit +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 0x6b1ed510 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 0x7841665f lnet_copy_iov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7d59a7fe LNetMEInsert +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x854ab844 LNetEQWait +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x8806d12a lnet_set_ip_niaddr +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x8a3064f2 LNetSetAsync +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x8b87385c lnet_create_reply_msg +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9de986d3 LNetEQAlloc +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa3d61f8d lnet_iov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa8c2760b LNetFini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xaa414970 LNetMEUnlink +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xaa9b477e LNetMDBind +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb75f7953 LNetEQFree +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb8bee264 lnet_kiov_nob +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 0xc1cefddd lnet_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xcd43579e lnet_extract_kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xcf4bfe6a lnet_set_reply_msg_len +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xec3aa83b lnet_notify +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xee0de574 lnet_copy_kiov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf1b316bf LNetSnprintHandle +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf1cac204 lnet_unregister_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/selftest/lnet_selftest 0x078db139 lstcon_ioctl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x00798b11 seq_client_get_seq +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x1c4bb5f9 LU_OBF_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x1fb4891b seq_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x375e6f8d LUSTRE_BFL_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x51b86321 seq_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x5626eb0b 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 0xd2200563 client_fid_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xd4c8143b seq_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xecee2727 LUSTRE_SEQ_ZERO_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xf6bce523 seq_client_alloc_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x00712189 fld_client_proc_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x0caaaa84 fld_client_add_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x0da01fa5 fld_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x681d856e fld_client_del_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x6e76de73 fld_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xc721210d fld_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xe39328a3 fld_client_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x000c507f libcfs_debug_dumplog +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x01db5172 cfs_percpt_atomic_summary +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x03387ca6 cfs_curproc_groups_nr +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x04d3ce6a lbug_with_loc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x05c113ec libcfs_sock_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x069f9bb2 cfs_wi_schedule +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x06acbefe cfs_hash_bd_findadd_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x08ada613 libcfs_console_backoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x096f2bf3 cfs_hash_debug_str +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 0x0eb410a2 cfs_percpt_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0ee3a27c cfs_hash_for_each_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0f5eff79 cfs_percpt_number +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1059cbd6 cfs_hash_bd_lookup_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x12426266 libcfs_run_lbug_upcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x127b745d cfs_hash_dual_bd_findadd_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x12cd873d cfs_cpt_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x150034e5 cfs_hash_dual_bd_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x162e0511 upcall_cache_flush_idle +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x16605f1c cfs_hash_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x16bef72c cfs_hash_rehash_cancel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1756d138 cfs_hash_for_each_nolock +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 0x1d5a3928 cfs_timer_done +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 0x2779ed12 libcfs_sock_setbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x27b6d3ba cfs_ip_addr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x29bf925f cfs_hash_bd_del_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2a876a64 cfs_hash_size_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2b1e0458 cfs_get_environ +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2da017ea cfs_cpt_set_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2db9d08f 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 0x30986343 cfs_range_expr_parse +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x30f7eff6 upcall_cache_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x314d752a cfs_hash_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x31a4294d cfs_cpt_unset_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x31aab1af libcfs_sock_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x31fc5082 cfs_crypto_hash_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x32cd9771 upcall_cache_get_entry +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 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 0x3b7129eb cfs_hash_hlist_for_each +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3c1285bd libcfs_subsystem_debug +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 0x3e3ae0da cfs_hash_bd_peek_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3ea730c0 cfs_gettok +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 0x411db754 cfs_crypto_hash_final +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x41ab33a1 libcfs_ipif_free_enumeration +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x44839bbb cfs_rand +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x44f07cfc cfs_pause +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x47fdb4d1 cfs_timer_is_armed +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x48f163c6 libcfs_str2anynid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4a99af72 cfs_clear_sigpending +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4ae500f8 add_wait_queue_exclusive_head +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4bd3ea3d cfs_hash_bd_move_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4c7e3d8a cfs_hash_lookup +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 0x5282c591 libcfs_sock_abort_accept +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x54fd9a71 cfs_percpt_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5568d8d2 libcfs_sock_getbuf +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 0x58e7f03a cfs_hash_dual_bd_finddel_locked +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 0x5d3be65a cfs_crypto_adler32_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5d655232 cfs_percpt_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5d73c3e3 cfs_expr_list_free_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5dce9e80 libcfs_lnd2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x620a3513 libcfs_kkuc_group_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x62289d65 cfs_array_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x62822d74 cfs_hash_dual_bd_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x62b9cb2e cfs_percpt_atomic_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6326638a cfs_percpt_lock_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 0x656e257d upcall_cache_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x65dd9f0c libcfs_run_upcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x66136d2d cfs_timer_arm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x67398404 cfs_wi_sched_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x692bd054 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 0x6dfa9ea1 cfs_crypto_adler32_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6e242a95 cfs_hash_for_each +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6e6af71c current_is_32bit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6ef5a5ea libcfs_sock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6f928e1b libcfs_debug_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x70e9b7b9 cfs_crypto_hash_update_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x71f662a3 libcfs_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7a3d49ae cfs_expr_list_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7b0b748a cfs_ip_addr_parse +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7c7986cf waitq_wait +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 0x7f99ddb6 cfs_race_waitq +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 0x875e0492 cfs_hash_del_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8840f591 cfs_block_allsigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x89ce22bb cfs_hash_cond_del +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 0x8d26cd32 upcall_cache_flush_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8f12bb52 libcfs_log_goto +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8f45f10d cfs_init_timer +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 0x95620e8c cfs_wi_deschedule +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x97652a15 cfs_hash_is_empty +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 0x99661e2b cfs_hash_create +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 0xa0e2b051 libcfs_sock_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa2b68b2a cfs_array_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa3c9f30f cfs_hash_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa4bc5fb5 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 0xa9dc74e2 cfs_trace_copyin_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9eae690 cfs_str2mask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xaa587cf6 cfs_hash_add_unique +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xab887583 init_waitqueue_entry_current +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xab9782cc libcfs_sock_accept +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xad019238 cfs_str2num_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb20c6ebb cfs_hash_for_each_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb2854871 upcall_cache_downcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb4e48237 cfs_cpt_online +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbb972619 proc_call_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbb9cb508 cfs_curproc_cap_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbd5d492e cfs_timer_init +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 0xc1560f69 libcfs_kkuc_msg_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc2911d96 cfs_expr_list_match +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 0xc3eb614e libcfs_ipif_query +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc47433a6 cfs_capable +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc49b1c62 cfs_percpt_atomic_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc72679fe cfs_hash_debug_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xca9320d4 cfs_hash_findadd_unique +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcb385db9 libcfs_debug_binary +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcbab8493 schedule_timeout_and_set_state +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 0xccd9aa58 cfs_percpt_lock_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcce5b37f cfs_hash_bd_get +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 0xcfab9ecb upcall_cache_put_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd1a4adcc libcfs_sock_getaddr +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd6a52be3 libcfs_printk +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd6f1fc60 cfs_strncasecmp +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd8857d7a cfs_hash_rehash_key +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 0xded410c2 cfs_hash_rehash +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdf26be81 cfs_hash_dual_bd_lock +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 0xdffc951d cfs_timer_disarm +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 0xe63efe11 upcall_cache_flush_all +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe6555032 libcfs_ipif_enumerate +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe7af00cb libcfs_sock_listen +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 0xeb447115 cfs_hash_getref +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 0xeda75539 cfs_hash_bd_add_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xedf3a25a cfs_timer_deadline +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 0xf3a80fbc cfs_hash_bd_finddel_locked +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 0xf8efb8c5 waitq_timedwait +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf94025d1 libcfs_str2lnd +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfc4c70a2 cfs_cpt_bind +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfe565fa9 cfs_crypto_hash_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xff0f98a6 libcfs_debug_vmsg2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x3aa2e27b ll_osscapa_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x7f9812a6 ll_direct_rw_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x8b944c0c ll_stats_ops_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x99d0f03f ll_iocontrol_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xcd3cde92 ll_iocontrol_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x1c444555 lov_stripe_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x2d84506a lov_stripe_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x5f2da1d7 lov_lsm_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x6f566726 lov_lsm_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xc514f9d7 lov_read_and_clear_async_rc +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xe9dfb866 lov_device_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x32a3df7b l_dentry_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x55375fd9 fsfilt_register_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x6bd35889 pop_ctxt +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x6cfccc8e lprocfs_stats_alloc_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x793fd5c4 lprocfs_counter_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x8d70ad75 lustre_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x9d7514d6 fsfilt_put_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xadc55e8c fsfilt_get_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xb4f8ee63 lprocfs_read_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xbf28b385 fsfilt_unregister_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xd0591c84 lprocfs_counter_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xf53861f8 obd_memory +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xfc8efc5e push_ctxt +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x14a47f31 it_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x9c22b84f it_open_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0xb57d8447 it_set_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0xf46a886f it_clear_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mgc/mgc 0xdc287f95 mgc_fsname2resid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0125672c cl_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x012906f8 lu_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01665e34 class_parse_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01a1afa0 cl_object_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x02115a76 cl_lock_user_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x035852d0 lustre_swab_llog_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03849cf5 cl_lock_descr_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03c628a6 lprocfs_wr_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x045d13de cl_io_sub_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0553fa6c class_find_client_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x057f6d4b class_find_old_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0615719a dt_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x067da81c lprocfs_rd_timeouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07301e7c cl_page_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0771d1c2 lu_env_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07aa68bb lustre_swab_lustre_cfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07f33986 cl_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x083942ff class_del_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x08a12396 cl_lock_closure_build +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x08ffe2d7 llog_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0a790f8c llog_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b8a44d9 lprocfs_oh_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0bfd38c4 cl_lock_ext_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0e2c528f class_handle_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ea13f34 dt_txn_callback_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0fe91547 obdo_to_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10853498 cl_lock_hold_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10b31163 lustre_end_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11495519 lprocfs_write_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11df2886 lustre_idmap_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x123e5b5b dt_directory_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x12c5d2bf cl_page_own_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1308d071 cl_io_commit_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x133d9301 cl_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1491dc30 lu_context_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x14983f96 lprocfs_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x15167d96 cl_req_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1571f909 cl_lock_modify +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x15b172d0 lprocfs_at_hist_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x15e40d60 cl_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16073f80 llog_exist +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x164bd3d8 lprocfs_alloc_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16fd15e4 dt_index_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1720607f lprocfs_init_ldlm_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x17260880 obdo_cpy_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x17aee8c8 obdo_from_iattr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x180f5d96 obd_export_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x183b80e4 class_search_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x18a9443c cl_lock_unhold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1974a7ab cl_io_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x197e1493 lu_context_key_quiesce +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x198cad2f cl_page_list_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x19cc6323 lu_object_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1a514219 cl_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1a650753 cl_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ae2b70f cl_lock_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1aeb2dc6 class_conn2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1c67d2ce lprocfs_counter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1cfab43d lu_context_enter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1d943d04 cl_page_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1da48212 class_handle_hash_back +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1de22fb2 llog_cat_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1dfa9d13 llog_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ee3c682 lustre_in_group_p +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f06cb56 dt_txn_hook_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f4d25f2 lu_env_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1fa5cc6f llog_init_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1fd6c79b cl_lock_get_trust +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2022ae02 lu_kmem_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x202cf965 cl_object_has_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x20dd1047 cl_lock_closure_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21b05a34 capa_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21e0f9b6 dt_index_walk +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x221826f1 class_parse_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x22197f58 lu_object_locate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x22696561 llog_osd_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x22c588e3 cl_req_page_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x245c359c cl_page_cache_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2547efae lustre_uuid_to_peer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x25f45823 lu_site_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x26e2747e cl_page_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x271d201a cl_lock_is_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x272ff2f0 class_incref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x275cdc7a cl_env_reexit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x287e7bcf dt_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x28ae6acb cl_lock_signal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x297cf5e0 class_handle2object +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x29c33dae cl_page_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a9e0c71 cl_2queue_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ae1cd79 kuc_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ae44197 obdo_from_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2af61f8b dt_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b807465 cl_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2d77be31 lprocfs_oh_tally_log2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2e3a6841 lprocfs_nid_stats_clear_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ea44fe8 cl_lock_is_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2f4b209e lu_ucred_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2f855ec1 lu_object_find_slice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2fad7013 local_index_find_or_create_with_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x30294f3f cl_lock_mutex_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3113d629 cl_2queue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x311e0fcd class_new_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x314e3e58 cl_object_kill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x319bb6ac lu_context_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x32154679 dt_lookup_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x32ba7a38 dt_quota_slv_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x33284f30 lu_object_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x332ad019 lustre_idmap_lookup_gid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x33c151e3 lu_buf_realloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x33d11402 cl_io_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x33dfcb80 cl_page_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x34f103ef lprocfs_alloc_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x35fa35ee lu_context_key_revive +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x35fb3119 lprocfs_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x373a8a8b dump_lsm +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37639be9 llog_obd_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x377ea64c lprocfs_rd_connect_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37bacaf6 local_oid_storage_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37c6845b cl_env_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37ed6e4b at_early_margin +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38d7eae3 cl_page_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38fb0c90 class_match_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x392a4b33 llog_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x39625c29 cl_page_unassume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x39d6f722 class_fail_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x39e6a5d6 cl_page_list_move +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a5d3f5f cl_lock_disclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3adf3cd3 cl_io_iter_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b002d00 obd_devs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b9a698c cl_page_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3ce77204 cl_wait_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3d0e7d6e cl_io_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3dedea1d local_file_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3eab7bfe LU_BUF_NULL +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3ebb66bc llog_cancel_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f9a405d cl_io_loop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x41172bd8 lustre_idmap_lookup_uid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x41b7e51c cl_io_lock_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44381593 cl_sync_io_note +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44e41abb lustre_posix_acl_xattr_filter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x452f559a lu_buf_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4592ae58 cl_req_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x461c4fc6 lprocfs_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4638339a obd_export_evict_by_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47417c2e dump_lniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47459410 cl_object_attr_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x474ed5bd lustre_swab_ll_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47b35f7d statfs_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47f096b9 cat_cancel_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4839352f cl_page_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x494cfb52 lustre_acl_xattr_merge2ext +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x496fa961 obd_exports_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x49a0f6ea lustre_posix_acl_xattr_2ext +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x49abfb1a obd_llog_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4a02d212 lprocfs_seq_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ac58713 obd_connect_flags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4b0cd91a capa_cpy +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4b3e330a lprocfs_exp_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4b82ee96 capa_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4b9858fa cl_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4bbb3c35 cl_use_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c190aad lprocfs_find_named_value +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c37fb0b lu_context_key_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c4c700b obd_alloc_fail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4caea7d5 cl_sync_io_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4cee3063 class_name2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d13458b kuc_len +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4db23f7c cl_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e94bc02 cl_2queue_init_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f27e92e lu_site_init_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f7ee085 cl_page_list_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4fb9d845 lu_object_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x502c6675 lu_context_key_revive_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50367bc9 dt_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50653735 lu_context_key_quiesce_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50c7fc36 ptlrpc_put_connection_superhack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50da25fc lu_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x53126c13 lu_site_purge +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54885f87 ldlm_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54b49072 class_register_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x553b8679 lu_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x553ebb96 llog_cat_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x556b6aff llog_cat_declare_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x558bec27 obd_ioctl_getdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x55ac8821 lu_ucred_assert +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 0x57ca0c2a cl_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x58195977 llog_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x582b013d dt_quota_glb_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x594a1860 dt_locate_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5999ffec class_num2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a20d896 obd_memory_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b29e34c cl_vmpage_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b58f529 lprocfs_obd_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5baa512b cl_page_list_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bbaba03 lprocfs_rd_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bc022c5 lprocfs_dt_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5c053001 llog_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5cc5cee7 cl_io_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d34ae0d cl_lock_mode_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5db125e4 lprocfs_add_simple +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ed188a9 lprocfs_add_symlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5f656e9c cl_lock_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fe97b73 block_debug_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x618f5d63 lu_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x627d1353 cl_lock_mutex_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631a518d mea_name2idx +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631fd7b9 lustre_ext_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63d9213a lprocfs_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6422ca41 dt_version_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6426a9fa lprocfs_seq_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x644f7135 lu_env_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6474438a cl_object_glimpse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x65789938 cl_page_list_splice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x659d0e94 cl_page_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x65bad880 cl_lock_enclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x65bca365 cl_lock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6645b6c5 lu_cdebug_printer +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 0x677fd7f9 proc_lustre_root +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67977b42 lprocfs_remove_proc_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67a90622 la_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67dc223a lprocfs_remove +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6890d175 lustre_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x696eef33 iattr_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69bee6ac cl_object_attr_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69c42114 at_min +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69dffee9 lu_device_type_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69f06dbc cl_offset +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6acb60f1 class_export_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6b39b258 lu_device_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6b73d3f2 md_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6c191b52 obdo_refresh_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6ce7241c class_config_parse_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6ddb3cb1 cl_lock_closure_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6e7ce7e6 llog_cat_init_and_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6fe30568 dt_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x710e95c4 cl_page_find_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7143cdc2 class_import_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x722eb8e5 lu_object_assign_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72cb7014 dt_store_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72ddee4c obdo_le_to_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72f67e53 cl_env_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7385dcac dt_try_as_dir +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 0x759bf39d class_connected_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x75f8c26d cl_lock_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x768d45e1 lustre_idmap_del +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 0x7845bb7e cl_lock_enqueue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7889cfeb cl_lock_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x789796a1 obd_zombie_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7a135e29 lprocfs_stats_collect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7ab7a42f cl_lock_mutex_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b4fc57b at_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7bd6fc5f class_import_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7c149ba8 class_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7d210b9f cl_io_lock_alloc_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7d3d02c8 llog_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7d433afa cl_lock_extransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7d4a7554 cl_io_submit_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7e2e57ea lu_kmem_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7ed75542 class_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7edcafa0 cl_env_reenter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7ee4997f cl_env_unplant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f2dec33 cl_io_submit_rw +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f7d7cd9 lu_buf_check_and_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fad7291 raw_name2idx +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 0x806de048 lprocfs_rd_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x80ffe833 lu_context_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81742d89 obd_ioctl_popdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81ce68ef cl_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81d28706 cl_type_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x824f57ec lu_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x826bdb6e cl_2queue_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x827c06a1 cl_object_attr_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x82bf27e5 lustre_process_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x82c83a59 lu_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x831f656c class_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x835850ba class_handle_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x836507a8 cl_pages_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x844b0c94 cl_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8474a093 llog_cat_add_rec +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 0x84dd4a7e dt_record_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8503c454 lu_buf_check_and_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85a2c300 lprocfs_init_mps_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85fbb58a lprocfs_rd_server_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8693a9d8 cl_lock_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x876059db lustre_common_put_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x886c7280 lu_device_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x886f4f29 lprocfs_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x88dd5ec4 lustre_register_client_fill_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x890a0b2b local_file_find_or_create_with_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8982537d class_disconnect_stale_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x89e90928 cl_io_fini +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 0x8c532920 class_config_llog_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d8bddfd lprocfs_nid_stats_clear_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e10e6d6 server_name2svname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e2816e4 cl_lock_discard_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e5bd916 dt_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ef7a781 lprocfs_oh_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f06ec66 cl_object_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f67314c obd_dump_on_eviction +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x904e49a8 cl_io_rw_advance +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x907aa3c3 llog_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x907bb4e1 lprocfs_alloc_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x91436167 dt_declare_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x916491f3 llog_declare_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x918c07e4 lprocfs_wr_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x91b37ba2 cl_page_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9228e8d5 class_devices_in_group +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92525dd3 obdo_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92c94296 lu_context_key_degister_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92e58479 obd_dump_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92fd03e3 cl_page_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93b46468 lu_session_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93db65d1 dt_object_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 0x9590eeeb cl_env_nested_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95ec998a lustre_groups_sort +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 0x9815aca4 llog_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x986e64c0 dt_txn_callback_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9aaf3926 lu_context_key_register_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1ed9d8 obd_jobid_var +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b281e4e cl_req_page_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9bb84275 local_object_unlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9bfa5a36 cl_io_rw_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9c4b4103 llog_cat_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9c941d3c llog_declare_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9cae91df cl_env_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9d270b29 class_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dbb17b6 lprocfs_dt_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9e3b18b5 obd_export_evict_by_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9e605d63 cl_io_read_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9eab0013 lu_device_type_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f2a1fa3 class_conn2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa074b30a lu_object_add_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa0d4faba class_manual_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa0d6c128 lprocfs_free_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa1c72b2c cl_page_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa1d89b51 cl_object_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa21c5ea1 obdo_from_la +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa287e3c7 cl_io_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2b0f409 cl_page_list_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa36aeb6e cl_io_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa417840a cl_lock_user_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4acafb7 lprocfs_obd_rd_max_pages_per_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa513f7e4 lustre_groups_from_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa57b05ec cl_site_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 0xa6b75098 llog_osd_put_cat_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa71f1ad5 cl_page_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7d2b06b cl_locks_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa829a510 class_disconnect_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa88c3082 class_exp2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa8d2e2a7 lu_context_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa9868a64 cl_lock_nr_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa9b0f4dc cl_queue_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa21b7a0 lustre_register_quota_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa74e61c dt_txn_hook_commit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab61f413 cl_page_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabf27edf cl_io_prepare_write +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 0xacb838a3 lprocfs_init_ops_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xadb6a67e class_conn2export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xadcb416d local_index_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xadea66ba lustre_idmap_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaef8171c cl_sync_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xafe71e02 lprocfs_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb01963a6 class_uuid_unparse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb057b6c5 dt_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb05e8dde cl_page_is_under_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb082af0f lprocfs_rd_filesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0fb9886 cl_lvb2attr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb12c3d39 lprocfs_free_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1873a7c lprocfs_register_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b3ba92 llog_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b89b6d class_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb32c0f6d cl_env_nested_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb3a0ba8c lu_object_put_nocache +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb414940a cl_page_gang_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb41998cd lustre_cfg_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4e4ff9d llog_cat_cancel_records +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4f97b41 cl_page_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb512184a cl_lock_descr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb51b848f lprocfs_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb5ac0cc2 lu_ucred +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb5c60b6b dt_store_resolve +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 0xb6bb6da7 lu_context_key_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb743ec6a dt_mode_to_dft +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb77c7aad lprocfs_rd_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb85a8bf7 cl_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb8e29628 cl_enqueue_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb936ebfc local_oid_storage_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb98c3117 lprocfs_exp_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb9cc9185 lprocfs_rd_conn_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba985283 lustre_register_client_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbaaf07b1 cl_unuse_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbacac922 lprocfs_write_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbb0660a1 llog_thread_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbb134741 dump_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbb8db35f class_new_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbcddac16 cl_page_clip +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbdc1e2df llog_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe04d967 class_detach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe54855f cl_page_is_vmlocked +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbecf45a4 cl_lock_at_pgoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf229f75 cl_lock_hold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc02260db lu_env_refill_by_tags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0bf7ef2 obd_debug_peer_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc18d06cf lu_buf_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc1941b4a cl_page_list_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc210c1cf cl_2queue_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc4056c2f lprocfs_free_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc620fda0 class_uuid2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc6fc23fb lu_object_anon +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc706ee48 capa_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8dbaa87 lustre_swab_cfg_marker +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc91957b0 cl_2queue_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9915012 lu_context_key_degister +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xca99eeba lprocfs_oh_sum +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xca9e752a cl_page_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcaf29063 llog_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcafdda57 class_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0ab67f obd_max_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcbe77551 cl_2queue_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcbf4e134 cl_page_list_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcc1a3dd0 cl_page_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xccf7a8de obdo_cpu_to_le +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd69cf9a cl_lock_hold_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd7537ee get_devices_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd953477 dt_txn_hook_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xce6785e5 lu_context_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcedb140a obdo_cmp_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcefe7905 cl_page_vmpage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcf7cf80d cl_req_slice_add +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 0xd1b1478b cl_attr2lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1ed7460 lu_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1f58645 lustre_swab_llog_hdr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd25f7d25 llog_osd_get_cat_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd4d2ed78 cl_page_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd4d82091 cl_lock_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd5614523 lprocfs_rd_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd56e871f lu_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd70fe669 lustre_swab_llogd_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7274fc2 cl_lock_weigh +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd76ce046 lu_site_init +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 0xd87fc37d lprocfs_rd_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd889dc88 lu_dev_add_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd8e7f6b0 class_disconnect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd95a5338 dt_record_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda054a58 class_export_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda5b1ced class_find_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda97cfd8 lprocfs_single_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda99a83d llog_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdac644c8 lustre_posix_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdad2032a cl_unuse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb13dce1 capa_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb6074f6 cl_lock_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdbb1de23 lprocfs_free_per_client_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdc14a7a3 cl_object_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdc394f9d cl_env_implant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdc472163 cl_page_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc40af0 class_check_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd21d448 lprocfs_rd_u64 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd773d5a lu_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd78c0c7 lu_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xddc5eadc llog_cat_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde48a8cd cl_req_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde7d985b obd_dirty_transit_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf439792 cl_page_list_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe028cf84 capa_encrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe04cae27 lustre_register_kill_super_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe0c48eb6 llog_cat_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe0c9f359 lprocfs_rd_kbytestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe1277cac cl_page_list_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe129fd79 cl_io_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe14c1bdf cl_req_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe1705d18 lu_dev_del_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2c68640 cl_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2eb4470 class_get_next_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2f68987 llog_open_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe3323f5d class_handle_free_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe36846d1 cl_lock_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe5cdc936 obd_llog_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe6a90a84 class_put_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7496a43 lu_object_invariant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7d83236 cleanup_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8038215 llog_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe83d8c53 capa_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8e84c32 class_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe90bb53d class_exp2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe9350dae class_process_proc_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe9489fbe obdo_to_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe9c52c9b lprocfs_rd_num_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeb3f388a _debug_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xebfcf7c4 llog_declare_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec7d6b85 obd_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed97b4c4 class_unlink_export +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 0xef61bf45 cl_page_make_ready +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 0xf0e53509 class_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf1bd2f35 cl_conf_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf1c97496 llog_copy_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf27974f8 class_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf29094eb lprocfs_rd_uuid +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 0xf3d16322 lprocfs_rd_numrefs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf490d5f9 class_del_profiles +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf4e08590 lprocfs_add_vars +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf56a1eb3 lprocfs_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf60d4659 capa_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf66774a3 lprocfs_clear_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf69da23b cl_page_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf6edd423 cl_page_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf6f46fe2 cl_io_iter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf6fe245e cl_page_is_owned +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7020831 lprocfs_dt_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf75a8912 lustre_idmap_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf77d6364 __llog_ctxt_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8837971 cl_env_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8c2df92 obdo_set_parent_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8dc52ed cl_lock_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf92e2f4f obdo_from_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf93229ed cl_page_list_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf96fae5a lu_object_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa813d06 capa_hmac +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfad7bb11 lu_object_find_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfb6a2d7a cl_lock_state_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbea0098 lu_types_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc7da830 class_config_dump_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc7f18d0 obd_pages_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc84ccbc llog_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfce4103b lu_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd2aa1e0 llog_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd68d17a class_notify_sptlrpc_conf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd77cb8b cl_io_is_going +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdbe1557 lprocfs_write_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfe372679 class_decref +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/osc/osc 0x5c4940c2 osc_update_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00166a97 ptlrpc_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00d95039 ptlrpcd_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00df247e ptlrpc_init_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x016a2613 client_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0184f5f7 ldlm_resource_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01c837f4 sptlrpc_gc_add_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01d6ef7f ldlm_pools_recalc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x02eca4f9 ptlrpc_activate_import +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 0x056154ee ldlm_lock_change_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06862d4a _debug_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06b3942b lustre_swab_lov_user_md_objects +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x071fc74a RQF_LDLM_ENQUEUE_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 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 0x0aabc842 ptlrpc_disconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ac252b2 lustre_msg_set_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0bcacb5d RMF_MDS_HSM_USER_ITEM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0be1b056 ptlrpc_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 0x0eaf7cd3 req_capsule_server_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10015a2a ldlm_lock_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1070260c ptl_send_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10ec5b0f client_import_del_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10f18f20 interval_iterate_reverse +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1111b2ca ptlrpc_invalidate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x115017f6 req_layout_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x126eb90d ldlm_pool_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x12b6f5a3 ptlrpc_connection_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x13c5c927 sptlrpc_sec_put +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 0x15069ef2 req_capsule_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15a3e4db RMF_GETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15a5811d ptlrpc_req_finished_with_imp_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x172fb86d lustre_msg_hdr_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1747d8b3 ldlm_lockname +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x17950f60 RQF_SEC_CTX +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19108a0f RQF_OST_DISCONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x194ab432 req_capsule_server_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1987e00a ldlm_prep_elc_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19c08934 RQF_LDLM_INTENT_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19ee9f38 llog_client_ops +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 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 0x1d0dff97 ldlm_pool_get_clv +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 0x1e6473aa sptlrpc_gc_del_sec +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 0x1f2c0b3e ldlm_cli_update_pool +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 0x22f3e4a0 ldlm_namespace_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x233790b5 RMF_OST_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x23a68d06 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 0x25286bec ldlm_lock2desc +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 0x26f966e9 llog_origin_handle_destroy +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 0x28d020a4 ldlm_pool_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x291057a6 ldlm_reprocess_all_ns +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2923ef07 client_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x29e0869a sptlrpc_get_hash_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2a4c85a2 ldlm_glimpse_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2a63a472 lustre_swab_ptlrpc_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2b40a555 ldlm_flock_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2b75a1bb ptlrpcd_alloc_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2b8213ec ptlrpc_deactivate_import +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 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 0x3240b5aa req_capsule_client_sized_get +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 0x33ee3de7 __ptlrpc_prep_bulk_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x34225943 ptlrpc_prep_req_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x350047b9 ldlm_cli_cancel_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x356706e5 ldlm_pool_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3581fbdd target_print_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35922b42 llog_origin_handle_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35939a3d lustre_swab_fiemap +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35fff8c8 ldlm_lock_fail_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x36503375 ldlm_namespace_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3737a893 sptlrpc_gc_add_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3835ab4b RQF_LLOG_ORIGIN_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38519137 ptlrpc_free_rq_pool +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 0x38d692e0 ldlm_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38fce533 lustre_msg_set_versions +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3907bc36 ldlm_pool_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39d77a20 ldlm_cli_enqueue_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39db792e ldlm_pool_get_lvf +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 0x3a60a8b2 ptlrpc_unregister_reply +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 0x3b943cce target_pack_pool_reply +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 0x3ca50f33 RQF_MDS_HSM_CT_REGISTER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3cbcf021 ldlm_extent_shift_kms +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3d2b4366 ldlm_destroy_export +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 0x3dddb3e2 dump_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3e1582c8 _ldlm_lock_debug +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 0x406e5c38 ldlm_pool_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x40987247 client_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41008cef RQF_LDLM_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4137126a ldlm_pool_set_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4154a38f req_capsule_server_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x42df01ee ptlrpc_abort_inflight +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x430189d7 ptlrpcd_wake +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43186832 sptlrpc_cli_ctx_get +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 0x442ff14f ldlm_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x44526d3a req_capsule_field_present +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 0x46a9dadf ptlrpc_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47a8a92d ldlm_cli_cancel_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47f5e903 RMF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x48814c9f lustre_swab_ost_lvb_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x490e3c8a ldlm_pool_fini +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 0x4adb2e62 ptlrpc_retain_replayable_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4b09ce4b lustre_swab_mdt_rec_reint +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4c8ec098 ptlrpc_set_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d4ca315 ldlm_prep_enqueue_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d7580d0 lustre_swab_hsm_user_item +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4da7ec24 ldlm_pool_add +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 0x4ef8fdc1 sptlrpc_register_policy +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 0x51682507 ldlm_lock2handle +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 0x53495266 __ptlrpc_free_bulk +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 0x57774fa9 client_import_add_conn +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 0x5964413d ldlm_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x596582bf RMF_GETINFO_VALLEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x59ca398b ptlrpc_add_timeout_client +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 0x5b3922aa req_capsule_client_get +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 0x5caae213 ptlrpc_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5cc8917f req_capsule_other_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5dbc08ec sptlrpc_cli_ctx_expire +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 0x5f2deb7a ptlrpc_wake_delayed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5f96ccdd ptlrpc_connection_get +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 0x6175bbb3 ptlrpc_add_rqs_to_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x618ad203 RQF_OST_GET_INFO_LAST_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x62192cf8 dump_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6237f15e ptlrpc_hpreq_handler +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 0x63d408b2 ptlrpc_req_set_repsize +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x644aa081 sec2target_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x64773dc5 req_capsule_init_area +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 0x66fda180 ptlrpc_fail_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 0x69dd485c client_import_find_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6a0c9181 ldlm_lock_allow_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6a3785c9 RMF_EADATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6a877ed9 llog_origin_handle_prev_block +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c45c8ed ptlrpc_set_import_active +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 0x6dbd8b5f lustre_pack_reply_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6eae1f1e ldlm_pool_set_limit +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 0x6fdfdc11 ptlrpc_replay_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x70084afb req_capsule_set_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x703538e4 lustre_swab_hsm_current_action +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7045299a req_capsule_filled_sizes +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x710c7a8b ptlrpc_unpack_rep_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x71969647 ptlrpc_unregister_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x723d43b6 sptlrpc_rule_set_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x725a892c RQF_MDS_REINT_OPEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7309b925 ldlm_get_enq_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x733e16b7 sptlrpc_sec_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x73e0b386 ptlrpc_at_set_req_timeout +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 0x7634bb85 sptlrpc_req_replace_dead_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x76561fb0 ptlrpc_send_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x76b728e5 lustre_swab_update_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77571cc6 lustre_swab_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77840c82 sptlrpc_rule_set_choose +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x778a289b ldlm_namespace_new +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7828a09d sptlrpc_get_bulk_checksum +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78bf9136 lustre_swab_ldlm_lock_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a832f10 RMF_CONN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7b158da4 lustre_swab_ldlm_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7bbf8001 RMF_MDT_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7c4c6107 RQF_LDLM_CONVERT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7cdbc309 sptlrpc_conf_client_adapt +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 0x7fa699c0 sptlrpc_enc_pool_put_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80746afe ptlrpc_request_bufs_pack +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 0x8123a6e0 ptlrpc_resend +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 0x85135801 RMF_DLM_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85a9e0d8 RMF_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85d4d25e ldlm_resource_get +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 0x868c5999 lprocfs_wr_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x86bdbc1c ldlm_completion_ast_async +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 0x8784fb03 ptlrpc_obd_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x87bf2586 ptlrpc_start_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x87bf7b3c sptlrpc_get_next_secid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x87c1cfe7 sptlrpc_import_flush_my_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x87e32f2f llog_origin_handle_read_header +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 0x89427ef0 ptlrpc_queue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x89f9edf7 RQF_MDS_REINT_SETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a161444 ptlrpc_reply +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 0x8d3a32ab ldlm_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8d6df970 ldlm_resource_putref +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 0x8da51284 ldlm_init_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e9abe4d RMF_GENERIC_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8eca4397 sptlrpc_target_sec_part +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8f0aceac RQF_MDS_HSM_ACTION +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8fa247b3 ptlrpc_set_add_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8fec0451 lustre_msg_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9005d4fa req_capsule_get_size +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 0x937b1ee0 lustre_swab_mdt_ioepoch +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x94ad3917 ldlm_enqueue_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x94f46dd2 lustre_pack_reply_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9511f1d7 ptlrpc_prep_bulk_imp +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 0x95ed1732 sptlrpc_sec_destroy +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 0x971af9b6 req_capsule_server_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9798f2f1 RQF_MDS_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x97ccf9a0 __ldlm_handle2lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x980fcfdc ptlrpc_connection_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x991831d6 lustre_free_reply_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x99768c0d ptlrpc_buf_need_swab +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x99e55427 ldlm_lock_downgrade +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a258886 RQF_MDS_GETSTATUS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a5b4035 ptlrpc_unregister_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a6f2f6d lustre_msg_set_opc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a981935 ldlm_namespace_foreach +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 0x9dde5046 sptlrpc_cli_enlarge_reqbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9e523278 ldlm_cli_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9ea5a441 ptlrpc_set_next_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9fb088f1 lustre_swab_lov_mds_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9ffffc77 sptlrpc_cli_unwrap_bulk_read +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 0xa3b0bd90 ptlrpcd_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3d2a6ee RMF_CAPA1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa435b812 ldlm_namespace_cleanup +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 0xa4b8d5b4 sptlrpc_conf_target_get_rules +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 0xa54ed757 ptlrpc_buf_set_swabbed +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 0xa9348a8d ldlm_init_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa955aa91 ptlrpc_prep_set +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 0xac84e7e0 req_capsule_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xacc82ce1 ptlrpc_prep_fcset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xad86bbd9 llog_initiator_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaddc3979 lustre_swab_lustre_capa_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xade2d108 ldlm_namespace_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae289bf5 lustre_pack_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf0b4603 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 0xaf8ab969 ptlrpcd_add_rqset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaff4bfc1 lprocfs_wr_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0751fa4 RQF_LLOG_ORIGIN_HANDLE_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0cc1355 ptlrpc_request_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb185ee72 ptlrpc_recover_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb18607ef sptlrpc_import_sec_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1b43d8a dump_rcs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb205de09 client_disconnect_export +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 0xb2b1817d lustre_swab_ost_lvb +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 0xb57b1073 ptlrpc_unpack_req_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb61cb95a RQF_MDS_GETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb64ecdd7 ptlrpc_schedule_difficult_reply +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 0xb6b8f0a5 ptlrpc_commit_replies +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb751c685 req_capsule_server_grow +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 0xb86753d5 ptlrpc_resend_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb903634e RQF_OST_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb948bb49 ldlm_cli_cancel_unused +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9ab16ba ptlrpc_set_add_new_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9b631cf lustre_swab_mgs_config_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9b81e4b ldlm_pool_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9b93dd4 unlock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xba6fcac2 ldlm_cancel_resource_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbaa76097 lustre_msg_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbbea1ca5 sptlrpc_cli_ctx_wakeup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbbf28380 sptlrpc_lprocfs_cliobd_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc1370dc lustre_shrink_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc1581db ptlrpc_request_alloc_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc8f8e6a ldlm_cli_cancel_unused_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbd83bc44 RQF_OBD_SET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbddda9d3 lprocfs_rd_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbe47bc7e ping_evictor_start +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 0xc030675d req_capsule_client_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0459136 req_capsule_extend +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 0xc0d42e71 sptlrpc_cli_unwrap_bulk_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc14c0a98 target_send_reply +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 0xc2bf1dc5 ptlrpc_request_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2d42c41 ptlrpc_save_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc3b4e7b6 ldlm_resource_unlink_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc559a634 RMF_LAYOUT_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc55c108f ptlrpc_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc60a60e1 RQF_OST_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc61a2221 ptlrpc_set_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc694be4b RQF_LLOG_ORIGIN_HANDLE_PREV_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc6b8c401 ptlrpc_pinger_del_import +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 0xc9a5df22 client_obd_setup +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 0xcca0069b lprocfs_wr_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcce1ad1e ldlm_lock_allow_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcd5585ac ldlm_blocking_ast_nocheck +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 0xcf5270d8 req_capsule_server_sized_swab_get +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 0xd0450e28 ptlrpc_register_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd1cc0b43 ptlrpc_nrs_policy_unregister +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 0xd4984fa6 req_capsule_server_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd537ded2 lustre_swab_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd567a6a4 req_capsule_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd6707d65 ptlrpc_cleanup_imp +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 0xd6f7becf ptlrpc_register_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd7505d88 req_capsule_has_field +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd7910326 lustre_swab_obd_statfs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd7bcc5c6 ptlrpc_service_health_check +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 0xd9dd13f5 ptlrpc_mark_interrupted +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xda2ac111 sptlrpc_proc_root +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdae24e74 ldlm_lock_fail_match_locked +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 0xdbdb4947 req_capsule_client_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdc7088a2 ptlrpc_request_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdcd2d5f6 ptlrpc_request_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdcf910b9 lustre_swab_ost_last_id +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 0xdd8a3e89 ptlrpc_lprocfs_unregister_obd +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 0xde57e911 ptlrpc_stop_all_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xde5a38cc llog_origin_handle_next_block +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 0xdfaaa34f ptlrpc_cleanup_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdfc8f176 sptlrpc_cli_ctx_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe03033bd ptlrpc_lprocfs_register_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe08a0945 ldlm_replay_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0cc694c RQF_LLOG_ORIGIN_HANDLE_NEXT_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe31b58fe ldlm_lock_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe327d34b ldlm_blocking_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe40e0a50 lustre_msg_get_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe425619b ptlrpc_req_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe57bd972 sptlrpc_current_user_desc_size +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 0xe743248a ldlm_destroy_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7512278 ptlrpcd_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe77a06de sptlrpc_import_flush_all_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe85b8be6 sptlrpc_svc_ctx_invalidate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xea640003 ldlm_resource_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xea83d045 ptlrpc_lprocfs_brw +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeaa09080 ptlrpc_init_rq_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeabaa0b1 lustre_swab_mdt_body +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 0xebefa266 ptlrpc_pinger_add_import +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 0xed694b9f sptlrpc_target_update_exp_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeda7de77 ldlm_pool_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xedcb740d sptlrpc_name2flavor_base +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeedccfd9 ptlrpc_request_alloc_pool +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 0xf08a2fa3 do_set_info_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0d52b5f ptlrpc_pinger_suppress_pings +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0f03083 sptlrpc_unregister_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf1300275 _sptlrpc_enlarge_msg_inplace +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf2426d13 ptlrpc_prep_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf277c125 RQF_OST_GET_INFO_FIEMAP +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf27d49dc sptlrpc_target_choose_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf2c87274 lock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf3014fc9 llog_origin_handle_cancel +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 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 0xf679b461 ptlrpc_restart_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf697b756 ldlm_dump_all_namespaces +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf6d516b0 sptlrpc_cli_wrap_bulk +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 0xf8248ec8 lprocfs_wr_evict_client +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 0xf8a5adce sptlrpc_enc_pool_get_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf8b5aef9 ptlrpc_request_set_replen +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 0xfa3fe83b req_capsule_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfa51688d interval_insert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfa86b1af ptlrpc_set_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfaa1466c ptlrpc_reconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfb8a83b2 ptlrpc_req_finished +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfbce07ed ldlm_cli_enqueue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfbce0cd4 ldlm_namespace_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc2fa83f ptlrpc_del_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc9e31f5 lustre_pack_request +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 0xff19e2f3 sptlrpc_target_export_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff5ece6f llog_origin_handle_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff8ca8a1 ptlrpc_nrs_policy_register +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 0xbe9a4587 cxd2099_attach +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x5db5df20 go7007_read_interrupt +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x7e141650 go7007_parse_video_stream +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x81cade40 go7007_update_board +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x886f8905 go7007_snd_remove +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x8bd81fc2 go7007_register_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xb3b9d2de go7007_snd_init +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xdc0df1bf go7007_alloc +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xe68a6e48 go7007_boot_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xedcd6ae3 go7007_read_addr +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x09be3f36 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0a26f94f free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0bc3d4dd rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0d1ac891 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0ede49b3 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x15dab694 rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1a23e714 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1f9f121a rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x21431a61 rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2a3fc013 rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2a5d428d rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2aa990cd rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2bb7c978 rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2dd5d052 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2ee86d94 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x30eac9ae rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x388d6f9e rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x39a94d1a rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3cd44cb0 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x42daaac6 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x452b3e8b rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x45c63794 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x47e337bd rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4ac1ed66 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x53f780cb rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x57025fb2 Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x67e6fa5e rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x70d796d4 rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x74173930 rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x74cf32aa rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7a67ae9b rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x80c99f93 rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8851cf2a rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x897a520a rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x98afdf14 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa150c136 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa7269275 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xab51f142 rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb0089e6a rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc5652f66 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc77fb143 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc791c416 rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xce94dc10 rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd36f4fe8 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd694ec08 rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xda64a9a0 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe808fd67 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf03d0396 rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf3a8bc90 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf936eda8 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x11903ecd ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x12532baa ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1317b3c5 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1cc9282e ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2351b15b ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2515e5b3 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x29f5a22a Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2a3c971f ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2bb9ef4c ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2ca1b879 SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2f5a4af0 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3a7fa935 ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3fef5ad7 ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x428356a3 ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4c45c0c6 ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5093facf ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x54a78c4f HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5a2876cd ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5faeeec8 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x67011a8d ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x690c5572 ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6a580c6e ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6c3fefc3 ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6cf58b3b ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x70db47eb ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x75349cbe ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x77f2c490 ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x781b5821 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8079e803 IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x88f612ae ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8fd6e87d ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x904c0d3b ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa08e5a32 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa1461ffd ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa15c96f5 Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa3d5789b ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa7226cb2 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xad8acf51 DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb382820a DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbc69790d ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc1f7bae7 ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcaa2a093 ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd5bf4f3f ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd669d772 ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd7446369 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd81d4a38 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd8264623 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd99757f8 ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdade59ee ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe218a8f2 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe3710938 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf1ef1f64 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf3cd436d ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf41edade ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf6e0d023 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfd6e093c notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x0017f35f set_bp_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x00ea0cde set_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x06d6f244 get_bp_dis_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x09df8f3e set_tap_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x0a8d32c3 get_bypass_slave_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x1936264c set_dis_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x1d2eb8ca get_tap_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x203af1f7 reset_bypass_wd_timer_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2070f14a set_bypass_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x27b990ef get_bypass_info_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2ba7cd35 get_wd_autoreset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2c3f1c17 get_tx_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2f59e636 get_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2fdb893a get_tap_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x361cf40a get_dis_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x45ca99c3 set_wd_autoreset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x550a188c set_bypass_wd_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x5cb59e92 get_bypass_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x66b60122 set_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x675208c0 set_tx_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x692623f2 get_std_nic_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x75131ec6 set_bypass_pwoff_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x76c0b7d0 set_tpl_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x7e872825 get_wd_exp_mode_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x7e8d701e get_wd_expire_time_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x86388b07 get_bp_disc_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x93ae4648 get_wd_set_caps_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x95e42b0d is_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x9df5f807 set_dis_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x9e21f42e set_std_nic_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xa689a214 get_bypass_wd_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xae117788 get_bp_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xc368d30d get_dis_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xccab5de0 get_bypass_caps_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd3e034b3 get_bypass_pwoff_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd9c1ccfc get_bp_disc_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd9d38d97 set_wd_exp_mode_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xe640f06e set_bp_disc_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xecdaa456 set_bp_hw_reset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xedcd3c1b get_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf06d67bf set_bp_dis_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf57c1671 get_bp_hw_reset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf693c3a1 bp_if_scan_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf8237882 get_bypass_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xfa59240d get_tpl_sd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x05af3c4c set_wd_exp_mode +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x05b08a42 set_bp_hw_reset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x0b0d5ce0 get_tap_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x0fc2e83c reset_bypass_wd_timer +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x123a8133 get_tx +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x157ec89c get_bp_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2440f05a get_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2b01d1d4 set_bp_dis_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2c27a2f0 set_dis_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2da97f4b is_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2e86c67b get_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x37416370 get_bp_hw_reset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x37bdab27 get_wd_autoreset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x3da96a18 get_bypass_caps +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4025805e get_bypass_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4940a0cc get_bypass_info +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4d21ff51 get_bypass_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5147360c get_bp_disc_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x515d4df1 get_bypass_slave +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5560267e set_wd_autoreset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5be44d44 set_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x6653590c get_wd_exp_mode +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x6bda14ec get_bp_dis_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x72c618ae set_bypass_wd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x76d47e6f set_bp_disc_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x794e3815 set_tap_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x7c6cbc16 get_tpl +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x84a263dc set_tx +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x8a16f22c set_tpl +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x946ff795 get_wd_set_caps +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x94f6aff2 get_bypass_wd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x9d1ecf73 set_bypass_pwoff +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xb1385629 set_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xbff68c45 set_bypass_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xc871c561 get_dis_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xcee528df set_std_nic +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xd202dd85 get_bypass_pwoff +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xd787f151 get_wd_expire_time +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xdb6a39d2 get_dis_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xebd25ae5 get_std_nic +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf1e9f8c1 set_bp_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf224abd9 get_tap_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf5a591b2 set_dis_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf643fd4c get_bp_disc_pwup +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x1442989e xillybus_endpoint_remove +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0xa18d3a87 xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0xc4833d6d xillybus_init_endpoint +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0xf9358a6d xillybus_do_cleanup +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x02a9ea1f iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0a2077e3 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x34fdb6ed iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x45f96509 iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x486acccb iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4fc65c91 iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x51187af4 iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x51bc48be iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5a039a03 iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5da641a2 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6951d7c2 iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7b1d7d70 iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8133a096 iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x87fb0171 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x890d14e3 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8b998aa4 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8d418c54 iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8e9ab4df iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x92137371 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9ceedfbe iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb78222dd iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb8090ef5 iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb91f4838 iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc304c0ff iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xce1554c8 iscsit_handle_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd9a155b2 iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf637e7d3 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf65a1576 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/target_core_mod 0x0050c84a transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x0334a2bf transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x07477b2c fc_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x0a908c9b core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x0f451e69 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x10974131 spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x1ec0ec55 target_fabric_configfs_free +EXPORT_SYMBOL drivers/target/target_core_mod 0x2009821c core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x208a8f8b sas_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x24ebf9e4 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x291b5857 target_fabric_configfs_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x29f75985 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x2ea56a87 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x309a9c62 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x30fe10ad transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x32313180 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x35142e9e transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x3bc6fcd1 target_fabric_configfs_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x3c79b4c8 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x43532e0f sas_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x4a1ed5d6 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x4b43804e iscsi_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x4b713e3e spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0x4d5a3bfd fc_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x4f8959cb transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x50afed37 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x51b3ecb8 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x525beabf core_tpg_add_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x57b9018a target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x5c0fa7f9 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x6464c1e3 sas_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x647df9f5 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x662df119 transport_subsystem_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x685bdf3c sas_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x68e46220 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x7089c1a3 iscsi_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x73c6ea6a transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x7b1c34c8 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x7ccc1862 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x7cf3234c sbc_execute_unmap +EXPORT_SYMBOL drivers/target/target_core_mod 0x7db54726 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x8091bf9f transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x8174e65e transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x81ea7f33 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x834e9b1b transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x864a4df3 target_configure_unmap_from_queue +EXPORT_SYMBOL drivers/target/target_core_mod 0x8823280b transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x8f2936d1 target_fabric_configfs_init +EXPORT_SYMBOL drivers/target/target_core_mod 0x967de9e3 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x9e16fee8 target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xa09d7ab9 iscsi_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0xab368c11 sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0xad6d9c9a target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0xb27000b9 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0xb65ae1a2 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xbcc9c1a3 transport_subsystem_release +EXPORT_SYMBOL drivers/target/target_core_mod 0xbe40fa50 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xd53c56b5 core_tpg_del_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xda6ed384 fc_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xdb2dde0e fc_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0xdc92e50f core_tpg_clear_object_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0xe42095c9 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xe6784f25 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xe6a4ffbd target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0xe7e0b349 sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0xe89ae771 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xe9c883bf target_to_linux_sector +EXPORT_SYMBOL drivers/target/target_core_mod 0xec1fc443 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf2ff96b4 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xf37c553d transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0xf48471ed spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0xf48e9101 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xf69d0c43 iscsi_get_pr_transport_id_len +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x5714667b usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0xa7653b3e unregister_gadget_item +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x0ef4ca48 gether_disconnect +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x2b3d3043 gether_get_ifname +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x2da99321 gether_get_host_addr_u8 +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x2f162626 gether_get_qmult +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x461f28d0 gether_set_gadget +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x48261db4 gether_set_host_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x5222b436 gether_get_host_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x76b043f3 gether_register_netdev +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x7c5fa80d gether_get_dev_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x843f9441 gether_get_host_addr_cdc +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x9bf896da gether_set_dev_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xb6bdbc9e gether_setup_name +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xbb11a8cf gether_set_qmult +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xda6c8767 gether_setup_name_default +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xf9dff73e gether_connect +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x3a6d4f22 rndis_free_response +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x3ca38e3a rndis_signal_connect +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x4ca90996 rndis_signal_disconnect +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x5d22b406 rndis_register +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x785d494b rndis_msg_parser +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x840dd143 rndis_deregister +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x92208849 rndis_add_hdr +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x988ad2a2 rndis_set_param_vendor +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x9acf72e4 rndis_set_param_medium +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xa90054ee rndis_uninit +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xb971ebca rndis_get_next_response +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xc220da3e rndis_set_param_dev +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xd2fe47b1 rndis_set_host_mac +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xf7ebd6d4 rndis_rm_hdr +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x1710b539 fsg_fs_bulk_out_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x1b1cc3af store_cdrom_address +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x2933ee1d fsg_ss_bulk_in_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x38bf5954 fsg_show_removable +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x38fda7cf fsg_store_nofua +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x398778e1 fsg_ss_function +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x423845e4 fsg_ss_bulk_in_comp_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x56344daf fsg_hs_bulk_out_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x68ae01fe fsg_store_removable +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x7d72d11a fsg_lun_fsync_sub +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x857b6dc2 fsg_hs_function +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x86509f59 fsg_store_cdrom +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x95cffb3e fsg_hs_bulk_in_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x9a1d15f4 fsg_lun_close +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xa2fc807b fsg_store_file +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xa3a88112 fsg_show_ro +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xa5cae92f fsg_ss_bulk_out_comp_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xa5f99b69 fsg_fs_function +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xb52ba28a fsg_intf_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xb54d0d95 fsg_fs_bulk_in_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xb800a618 fsg_store_ro +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xcbebd591 fsg_show_file +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xd6125b15 fsg_show_nofua +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xd9487af7 fsg_show_cdrom +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xf4efc0c8 fsg_ss_bulk_out_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xfedf52e7 fsg_lun_open +EXPORT_SYMBOL drivers/usb/gadget/usb_f_rndis 0x1c232c9b rndis_borrow_net +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0xd9d8eb73 sl811h_driver +EXPORT_SYMBOL drivers/usb/phy/phy-generic 0xa64a4cea usb_nop_xceiv_unregister +EXPORT_SYMBOL drivers/usb/phy/phy-generic 0xd0e43207 usb_nop_xceiv_register +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x013b543e usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x0b1290d2 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x7ea7c67b usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x906f861f usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x930f5ecd usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x9be57fff usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xab59f68a usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb3d2e7f3 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb8b7f241 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb99083d4 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xc0c262c5 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xd171a740 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf592133f usb_wwan_set_termios +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x8b156613 usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xc0b68f3d usb_serial_suspend +EXPORT_SYMBOL drivers/vhost/vringh 0x0dda8c5a vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x1f063017 vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x2eae4a2a vringh_getdesc_user +EXPORT_SYMBOL drivers/vhost/vringh 0x36dfce73 vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3b304ebb vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3eaf442a vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x3fa42e4f vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x4311cd91 vringh_iov_pull_user +EXPORT_SYMBOL drivers/vhost/vringh 0x5dafbd4e vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x66af098b vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x6d0e7948 vringh_abandon_user +EXPORT_SYMBOL drivers/vhost/vringh 0x76bd9a5d vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x97fa07e9 vringh_iov_push_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xaf8e4a0e vringh_notify_disable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xafb47dae vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0xc884d704 vringh_notify_disable_user +EXPORT_SYMBOL drivers/vhost/vringh 0xc8bee0a4 vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xda4ea4cc vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0xde804bb9 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/video/backlight/generic_bl 0x366d19ef genericbl_limit_intensity +EXPORT_SYMBOL drivers/video/backlight/lcd 0x13e741da devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x20950fbb devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x209c3e4c lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x6a96b33f lcd_device_unregister +EXPORT_SYMBOL drivers/video/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/cyber2000fb 0x12b3d239 cyber2000fb_attach +EXPORT_SYMBOL drivers/video/cyber2000fb 0x534b6f18 cyber2000fb_disable_extregs +EXPORT_SYMBOL drivers/video/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/macmodes 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL drivers/video/macmodes 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL drivers/video/macmodes 0xea791a46 mac_find_mode +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x44f3e9bc matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x478b1369 matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x690d4872 g450_mnp2f +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x50b866de DAC1064_global_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xa6526012 matrox_G100 +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xdf88ac88 matrox_mystique +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xe55f7f97 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_Ti3026 0x7fe60c49 matrox_millennium +EXPORT_SYMBOL drivers/video/matrox/matroxfb_accel 0x94fac0d0 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x1772b93c matroxfb_register_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x63648a65 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0xb6ea57b9 matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0xc54bc386 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0x1378425d matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0x42b2527a matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x434d6e7e matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x5038d033 matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x933e61d8 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xbc80279a matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xdce183fc matroxfb_read_pins +EXPORT_SYMBOL drivers/video/mb862xx/mb862xxfb 0x2a793029 mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/output 0x3f2d1899 video_output_register +EXPORT_SYMBOL drivers/video/output 0x657c6f55 video_output_unregister +EXPORT_SYMBOL drivers/video/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/svgalib 0x1f605386 svga_get_tilemax +EXPORT_SYMBOL drivers/video/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/svgalib 0x5e5fc7f9 svga_get_caps +EXPORT_SYMBOL drivers/video/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/svgalib 0x8831d4e4 svga_tilecopy +EXPORT_SYMBOL drivers/video/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/svgalib 0xaf345928 svga_settile +EXPORT_SYMBOL drivers/video/svgalib 0xbcc388c8 svga_tileblit +EXPORT_SYMBOL drivers/video/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/svgalib 0xfa1d6e10 svga_tilefill +EXPORT_SYMBOL drivers/video/svgalib 0xfb2f0c28 svga_tilecursor +EXPORT_SYMBOL drivers/video/syscopyarea 0x7ff17c7b sys_copyarea +EXPORT_SYMBOL drivers/video/sysfillrect 0xb6f28a67 sys_fillrect +EXPORT_SYMBOL drivers/video/sysimgblt 0x8c840604 sys_imageblit +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/vme/vme 0x00d7e722 vme_lm_count +EXPORT_SYMBOL drivers/vme/vme 0x072f901c vme_master_rmw +EXPORT_SYMBOL drivers/vme/vme 0x0c6bdc3f vme_master_read +EXPORT_SYMBOL drivers/vme/vme 0x0ec5babe vme_dma_free +EXPORT_SYMBOL drivers/vme/vme 0x106a39db vme_dma_list_free +EXPORT_SYMBOL drivers/vme/vme 0x1926d3c6 vme_dma_request +EXPORT_SYMBOL drivers/vme/vme 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL drivers/vme/vme 0x25523d94 vme_slot_get +EXPORT_SYMBOL drivers/vme/vme 0x2d0280e0 vme_register_bridge +EXPORT_SYMBOL drivers/vme/vme 0x32895bc5 vme_unregister_bridge +EXPORT_SYMBOL drivers/vme/vme 0x3e95083c vme_slave_get +EXPORT_SYMBOL drivers/vme/vme 0x46649cd1 vme_lm_set +EXPORT_SYMBOL drivers/vme/vme 0x476781cf vme_unregister_driver +EXPORT_SYMBOL drivers/vme/vme 0x48b99a13 vme_lm_free +EXPORT_SYMBOL drivers/vme/vme 0x4baf35a7 vme_master_get +EXPORT_SYMBOL drivers/vme/vme 0x52983a4f vme_master_write +EXPORT_SYMBOL drivers/vme/vme 0x52f78f63 vme_new_dma_list +EXPORT_SYMBOL drivers/vme/vme 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL drivers/vme/vme 0x5aff4177 vme_lm_get +EXPORT_SYMBOL drivers/vme/vme 0x627652ae vme_slave_request +EXPORT_SYMBOL drivers/vme/vme 0x668ca578 vme_bus_type +EXPORT_SYMBOL drivers/vme/vme 0x79a33f85 vme_get_size +EXPORT_SYMBOL drivers/vme/vme 0x7cf35220 vme_master_free +EXPORT_SYMBOL drivers/vme/vme 0x7dca6f77 vme_lm_request +EXPORT_SYMBOL drivers/vme/vme 0x7f582eca vme_irq_handler +EXPORT_SYMBOL drivers/vme/vme 0x831520bf vme_master_request +EXPORT_SYMBOL drivers/vme/vme 0x877d6d12 vme_irq_free +EXPORT_SYMBOL drivers/vme/vme 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL drivers/vme/vme 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL drivers/vme/vme 0xa04c5853 vme_dma_list_exec +EXPORT_SYMBOL drivers/vme/vme 0xa2a335bd vme_alloc_consistent +EXPORT_SYMBOL drivers/vme/vme 0xa31bdf07 vme_master_set +EXPORT_SYMBOL drivers/vme/vme 0xb37819a6 vme_dma_list_add +EXPORT_SYMBOL drivers/vme/vme 0xb8997af7 vme_irq_request +EXPORT_SYMBOL drivers/vme/vme 0xca5ee09a vme_free_consistent +EXPORT_SYMBOL drivers/vme/vme 0xdc9da1bd vme_register_driver +EXPORT_SYMBOL drivers/vme/vme 0xdff905e5 vme_slave_free +EXPORT_SYMBOL drivers/vme/vme 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL drivers/vme/vme 0xf46b8f61 vme_irq_generate +EXPORT_SYMBOL drivers/vme/vme 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL drivers/vme/vme 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x34354f10 w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x482ce996 w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xc789c1aa w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xe653bbb9 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x3240b3bb w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x88362765 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x4b29cbbf w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xfe1f7855 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/wire 0x03d0bb8d w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0x06c32d11 w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0xbc97a978 w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0xcfa07a3f 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/btrfs/btrfs 0x27476846 ulist_reinit +EXPORT_SYMBOL fs/btrfs/btrfs 0x41e6a9d2 ulist_init +EXPORT_SYMBOL fs/btrfs/btrfs 0x7e2ee765 ulist_free +EXPORT_SYMBOL fs/btrfs/btrfs 0xa2eec2e8 ulist_fini +EXPORT_SYMBOL fs/btrfs/btrfs 0xb1320bc8 ulist_add +EXPORT_SYMBOL fs/btrfs/btrfs 0xb42289d2 ulist_alloc +EXPORT_SYMBOL fs/btrfs/btrfs 0xc2c745db ulist_next +EXPORT_SYMBOL fs/configfs/configfs 0x0a6cba5d configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0x0a8e61d7 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x17ceb08a config_item_init +EXPORT_SYMBOL fs/configfs/configfs 0x1d711591 configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x3c7636ea config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0x479753f1 config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0x68d1fa55 config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x7bfe0e0a config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0xb68c971d configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0xeb9d1ba0 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xebf82fd0 configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xed4aa8e1 config_item_set_name +EXPORT_SYMBOL fs/exofs/libore 0x22e13775 ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x37c5622c ore_write +EXPORT_SYMBOL fs/exofs/libore 0x3aa191ca ore_read +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x5aff20da ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0x821633cf extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0x929ed6d4 ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xa84ab877 ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0xc17a205f ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0xe8954ad3 ore_create +EXPORT_SYMBOL fs/exofs/libore 0xec6b76fd ore_remove +EXPORT_SYMBOL fs/fscache/fscache 0x14ddc10a __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x22ed59ef fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x27cd9228 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x333573f3 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x37ba63cf __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x3d1f0aa0 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x43c6c550 __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x454f6185 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x49c8c13b fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x4c6fcf09 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x4ddefbb5 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x54615240 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x57ddf7c5 __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x59c7d1e0 __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x60dbe832 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x63fc8a28 __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x66a592e1 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x77fb988a fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x860c1117 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x8b9aa391 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x8d2c8720 __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xa62e6983 fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0xa9ecdc6f fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0xb36d3fbb __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xbbfe6185 fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0xd9039643 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xdc463b0b fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0xe0edfab5 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0xe3ea8e93 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0xe547d255 __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0xe64f273f __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xe74bdba6 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0xea552b4a __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0xfa253cad __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0xfb8c5556 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xfdcdfac4 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0xfe43333d fscache_object_destroy +EXPORT_SYMBOL fs/nfsd/nfsd 0x35e33c1e nfs4_acl_write_who +EXPORT_SYMBOL fs/nfsd/nfsd 0x5a157ae4 nfs4_acl_get_whotype +EXPORT_SYMBOL fs/nfsd/nfsd 0xa0f4b528 nfs4_acl_posix_to_nfsv4 +EXPORT_SYMBOL fs/nfsd/nfsd 0xb25b2957 nfs4_acl_nfsv4_to_posix +EXPORT_SYMBOL fs/nfsd/nfsd 0xe13337f0 nfs4_acl_new +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x448cbd78 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x9d9228ea qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0xd397acff qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xe6844ae9 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xfa032c11 qtree_delete_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 0x6c1f6fee crc7 +EXPORT_SYMBOL lib/crc7 0xd80c3603 crc7_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 0x0f0f1605 lc_del +EXPORT_SYMBOL lib/lru_cache 0x2ae6a89a lc_put +EXPORT_SYMBOL lib/lru_cache 0x3b3372b4 lc_reset +EXPORT_SYMBOL lib/lru_cache 0x41111725 lc_get +EXPORT_SYMBOL lib/lru_cache 0x44ec99ee lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0x4645c85f lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0x540b1697 lc_try_get +EXPORT_SYMBOL lib/lru_cache 0x577252ab lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x57ff4d61 lc_is_used +EXPORT_SYMBOL lib/lru_cache 0x5dd01edd lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x62b86d70 lc_get_cumulative +EXPORT_SYMBOL lib/lru_cache 0x76b957fe lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0x7afe19c6 lc_find +EXPORT_SYMBOL lib/lru_cache 0xa977668e lc_set +EXPORT_SYMBOL lib/lru_cache 0xb2deafbf lc_destroy +EXPORT_SYMBOL lib/lru_cache 0xbcdb24bd lc_committed +EXPORT_SYMBOL lib/lru_cache 0xfcc6da8d lc_create +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/802/p8022 0xb78d6ab3 register_8022_client +EXPORT_SYMBOL net/802/p8022 0xc27cab55 unregister_8022_client +EXPORT_SYMBOL net/802/p8023 0x5389fbe2 make_8023_client +EXPORT_SYMBOL net/802/p8023 0x75a3255a destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0x017f8083 unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0xb5084c04 register_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x00d4b7d9 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x01a71c07 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x078c7ff6 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x0fee6225 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x15b4bcb4 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x1753963a p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x23ea2eaa p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x2afb7a93 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x2c4ad32b p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x314a3c92 v9fs_register_trans +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 0x49f8be91 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x4e53ebe0 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x5d849b11 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x63ed87f6 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x669d227a p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x675123c6 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x688e7af7 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x6ce03f36 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0x6d6a0b1a p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x7816e9c1 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x7b02ac09 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x7ee6a124 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x89029454 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x977a0030 p9_nr_pages +EXPORT_SYMBOL net/9p/9pnet 0x9fbc0f89 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0xa130fac8 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0xa8f3733d p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0xaaf57e0f p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0xaef0084c p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0xb12ca6d6 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0xb7017bdc p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xc6dfc5af p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0xce128146 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0xce36915f p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xcfd77501 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0xd40871c0 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0xd552c2e3 p9_payload_gup +EXPORT_SYMBOL net/9p/9pnet 0xd5914e6c p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0xe3072df1 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0xe4dd34bf p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xeca68b2a p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0xed2c2fff p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/9p/9pnet 0xfff9fafe p9_client_getattr_dotl +EXPORT_SYMBOL net/appletalk/appletalk 0x11f8f73a alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0x4e3dae31 aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0xe3e4fc36 atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0xef931aac atrtr_get_dev +EXPORT_SYMBOL net/atm/atm 0x227e1534 atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x3206f3b9 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x3a40017f atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x3d5b404f atm_charge +EXPORT_SYMBOL net/atm/atm 0x43bf0d15 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x447cc080 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x6a4ff440 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x6b8aed9a atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x6f192cb4 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x8c4a5caf vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x93136f41 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xa399945f atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xae419503 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xc3b5ee1c atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/ax25/ax25 0x026c1368 ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0x118b75cf ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x1fea952f ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x2985b879 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0x3afee63e ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x3d3094b5 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x4250c184 ax25_linkfail_register +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 0x972a5758 ax25_rebuild_header +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xd350dea3 ax25_hard_header +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xd83105ba ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0xf532fbc7 ax25_header_ops +EXPORT_SYMBOL net/bluetooth/bluetooth 0x03457de7 l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0520c139 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x05b090c9 bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0bc8629a __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0d92fa3c bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x171d056b bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1e58c3bc hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x24ae7c62 hci_recv_stream_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x32acfac5 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x44cee165 bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x48c393f6 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4ca4e901 l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0x53ff57a0 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x577705d6 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5a3d32ec hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7279b2e0 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x731d6a89 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7a9894f5 hci_recv_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7c640527 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9122f2eb __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x97200081 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa4c1b476 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa51d939a bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa8ae9ca0 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa9eee3f7 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xaef876e4 bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0xaf155282 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb61a0c3b bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbdc9f8eb hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbe707e93 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc0413cbb l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc81aae54 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd380eeb1 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdf458bd5 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe3687259 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe53a923d hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0xeddb503c hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfb14e66a bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xff97f7fd l2cap_conn_put +EXPORT_SYMBOL net/bridge/bridge 0x89d76aa0 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x5cc03f82 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x677b3b08 ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xda1fbe7d ebt_unregister_table +EXPORT_SYMBOL net/caif/caif 0x0851cb53 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x96a7701c get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0x97a9a48d caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xd8bf6aa0 caif_connect_client +EXPORT_SYMBOL net/caif/caif 0xf3df4185 caif_disconnect_client +EXPORT_SYMBOL net/can/can 0x056034cc can_proto_unregister +EXPORT_SYMBOL net/can/can 0x12576dcd can_send +EXPORT_SYMBOL net/can/can 0x3c3bc2e6 can_ioctl +EXPORT_SYMBOL net/can/can 0x8f842b1b can_rx_unregister +EXPORT_SYMBOL net/can/can 0xc50e0577 can_proto_register +EXPORT_SYMBOL net/can/can 0xc65cde81 can_rx_register +EXPORT_SYMBOL net/ceph/libceph 0x01df111e ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x03a99bf5 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x061d38f5 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0d61c270 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0x0e04d005 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x10de2f63 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x119a8473 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x12cbaaf7 osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0x1475bf0d ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x157cc82a ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x1818bb90 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x197effcb ceph_osdc_release_request +EXPORT_SYMBOL net/ceph/libceph 0x1bcf99ab ceph_osdc_unregister_linger_request +EXPORT_SYMBOL net/ceph/libceph 0x2080726e osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x21c490cd osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x29aeb03b osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0x2ac5eb6f ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x2b10d4ba ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x2fdf6cff __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x32919b43 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x34dada7f osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3ac44850 ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x3de9f4ce ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0x3df0ec7c ceph_calc_ceph_pg +EXPORT_SYMBOL net/ceph/libceph 0x3f1ab90c osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x4205ffd7 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x43efd647 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x46dbab83 ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0x47c1faaa ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x4a283545 ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x4da1afcb ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x4f3b7167 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x4fbed791 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x5092e7a0 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x556d6ff6 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x570ceb67 ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x59ebb33d ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x5a45804c ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x5bb028a3 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x5c58958f ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x68e313cc osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x6a12e2cc ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6c5d5ac1 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x7168baf8 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0x74eab919 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x77692acb ceph_msg_last_put +EXPORT_SYMBOL net/ceph/libceph 0x7c526983 ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x81eae1b6 ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0x85925cc2 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x8c7b01ac ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0x8cb35f1a ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0x97a566dc ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9d86c981 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa05122aa ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0xa18d1f77 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0xaa44b059 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb2c5daea ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xb3606f4f ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xb86373d0 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0xba9041c9 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0xbdd497b6 ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0xc13b1441 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0xc1464e8a ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0xc18739ef osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc5353b9c ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0xc55de604 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xc57cdcd0 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xca655db7 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0xcb1f5502 ceph_monc_create_snapid +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xd11e1eab ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd4d27152 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0xd8426fe6 ceph_copy_page_vector_to_user +EXPORT_SYMBOL net/ceph/libceph 0xd90db912 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0xe0d90690 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0xe82c9c32 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0xe9587058 osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0xea868931 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0xecfcd5e9 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0xed229339 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xed86fa1e ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0xedebecef ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0xf5774cba ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0xf93b84b1 osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xfae706d0 osd_req_op_init +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xf0042be7 dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/ieee802154 0x003c2635 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x1c3b1a58 ieee802154_nl_disassoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x2f86d655 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0x31c7656d wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x31e140db wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0x3a2e44ff ieee802154_nl_beacon_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x3bf47e68 ieee802154_nl_start_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x3eeeee37 ieee802154_nl_assoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x48d5b8b2 ieee802154_nl_disassoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x5d7d0245 ieee802154_nl_scan_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xcd350e39 ieee802154_nl_assoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0xdc654d1f wpan_phy_alloc +EXPORT_SYMBOL net/ieee802154/ieee802154 0xeb08233f wpan_phy_free +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x5cd3b501 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x74ec59bc arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xbdca99e5 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x5a35d69e ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x65193093 ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xa01ecff3 ipt_register_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x104edf26 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/tunnel4 0x154cba98 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x98d02145 ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xe457b17c ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x224427e5 ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xe0a5a76c ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xfb4f43b7 ip6t_register_table +EXPORT_SYMBOL net/ipv6/tunnel6 0xef41a52d xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/tunnel6 0xffe594f6 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x00f43a09 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x960d9c67 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x21f4123a ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x72e9287e ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x8599f114 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x9f619703 ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xbb5fe5f9 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xbe779d3f ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xce1e9953 ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xcf394b63 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 0x09f58a8b hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0x196183e1 async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x2036ad06 irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x26e6b539 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x2708b5e5 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x279c4d5f irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x2cab1795 irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x3b6d5f65 hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0x3fa3d722 irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0x42a9904d irias_delete_object +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 0x5e125de5 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x5ffb4234 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x60b7e97d irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x615ee918 irias_new_object +EXPORT_SYMBOL net/irda/irda 0x631730b8 irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x66ef7db3 irias_add_integer_attrib +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 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x76ef9f52 irias_insert_object +EXPORT_SYMBOL net/irda/irda 0x771889a3 irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7dabe31e hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x7fb81606 irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0x86b5f4ce hashbin_delete +EXPORT_SYMBOL net/irda/irda 0x8b69b459 hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x993ad14b irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x9c9326e4 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0xa3157283 irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0xa39be26a irttp_dup +EXPORT_SYMBOL net/irda/irda 0xa4548c32 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0xad66e1db hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0xafa348e2 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0xb49772d2 irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xbb9eb225 irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0xbcd3ef13 irias_object_change_attribute +EXPORT_SYMBOL net/irda/irda 0xbe40ace9 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0xc310cf21 hashbin_new +EXPORT_SYMBOL net/irda/irda 0xc8bac913 irlap_close +EXPORT_SYMBOL net/irda/irda 0xd1ae6745 irias_find_object +EXPORT_SYMBOL net/irda/irda 0xd1f0f1d5 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0xd4fd5847 iriap_close +EXPORT_SYMBOL net/irda/irda 0xd57045a8 hashbin_find +EXPORT_SYMBOL net/irda/irda 0xd6deeaae irda_setup_dma +EXPORT_SYMBOL net/irda/irda 0xd7efbc0c irlap_open +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xe4b53a8d irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xef43fd1b iriap_open +EXPORT_SYMBOL net/irda/irda 0xeff3e39d irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0xf89008d4 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0xfd23956f irttp_close_tsap +EXPORT_SYMBOL net/l2tp/l2tp_core 0x1b6a1f90 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x0ac72c63 lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x10ef409a lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x2c3ede76 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x5c2690b4 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x6c3855fb lapb_register +EXPORT_SYMBOL net/lapb/lapb 0x7572ca21 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x923adcda lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0xc681fa7b lapb_getparms +EXPORT_SYMBOL net/llc/llc 0x19b7d97a llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x4561920e llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x546f72e8 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x5ce1e7a9 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x6489fd62 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x6c6cdb31 llc_sap_list_lock +EXPORT_SYMBOL net/llc/llc 0x77f3bae8 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0xe9f574cf llc_sap_close +EXPORT_SYMBOL net/mac80211/mac80211 0x00133d9c ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x004d743d ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0x009376f2 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x0397d2c8 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x0c7728fa rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x0e43d009 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x1050d6b8 ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0x11c72d71 ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x1b53f447 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x21a2ae71 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x22db5370 ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x29f0aabc ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x33e1451d ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x3770796a ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x3770ced1 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x3931ff72 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x3a169d4e ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x477fe707 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x4d7befa0 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x4f40b50b ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x503dd0f9 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x53e06e7d __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x545951cd ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x550a1766 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x5a46f2c0 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x5c28cca5 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x69fcb42d wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x6b35e4c7 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x6df98232 ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x73653c56 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x763b625d ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x79195d9c ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x7a295ef4 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x7d30503e ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x7fbc7aec ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x8375c369 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x8d3367fa ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x94e2ec0f __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x95c7ec50 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x96d955d3 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x9a96684b ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x9c5e6334 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0xa048c0ba ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xa1fc36c4 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xa25619aa __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xa2f90da0 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0xa7647b62 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0xaa157485 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0xb5e16038 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xbd0e31aa ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0xbdf400c3 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xc1ca063c ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0xc2957ad3 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xc5ea8568 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xc6810595 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xc6d372f6 ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0xc7e9782e ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xc826baa7 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xcb3a4a35 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0xcccafe99 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xd207aade ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0xd9db83ab ieee80211_alloc_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xdcbefb59 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xddb47d52 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xdf46af7d ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0xe36548fd ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xe8a384a9 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xedd8c746 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0xf119b958 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0xf21995fd ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xf2442fc1 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xf395de03 ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0xf4f0ae2c ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac802154/mac802154 0x5909bcbe ieee802154_unregister_device +EXPORT_SYMBOL net/mac802154/mac802154 0x81c3ca9f ieee802154_free_device +EXPORT_SYMBOL net/mac802154/mac802154 0xa0822753 ieee802154_register_device +EXPORT_SYMBOL net/mac802154/mac802154 0xa62cf545 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0xc79315e6 ieee802154_alloc_device +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0013a27e ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0551973b ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x1b77079d ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x51bf1bb7 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x6ef16c74 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x7e3caca1 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x91a87479 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x9c0845ef unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa85d2490 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xacd25444 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb0552574 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb5890201 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xf01471c3 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xf35d35d0 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x5d7e9b82 __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x6cc1f238 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x734e07cb nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_conntrack_proto_gre 0xc2c769f5 nf_ct_gre_keymap_flush +EXPORT_SYMBOL net/netfilter/nf_nat 0x1925d239 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x381658cb __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x5e215979 nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0xa4baf8de nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0xb30dd73e nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0xd819a25f nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/x_tables 0x08c473b7 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x253e8b44 xt_compat_init_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x456abeb2 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x4ef28076 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0x5854af37 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x6169260f xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x8c9c81ef xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x8d941a63 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x97580d32 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xa25fc115 xt_compat_check_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0xac1b62e9 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xb28f5ef1 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xd87ae60d xt_check_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0xdcbe9ac4 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xe26b8596 xt_register_target +EXPORT_SYMBOL net/nfc/hci/hci 0x0e50b75d nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x2b76cafd nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x36d4c346 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x44c63d10 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x4f8ba4a5 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x63713cc9 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x65de25ea nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x6e6ae472 nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0x940094a0 nfc_hci_send_response +EXPORT_SYMBOL net/nfc/hci/hci 0xa3f4a69d nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0xafdea6ae nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0xb233450b nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0xb95ceed9 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xc0cb5477 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0xc392bf96 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0xc8dbdf2f nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0xf15b547b nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xf3e9f5c6 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/nci/nci 0x120292ef nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x3a1118c7 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x492aa0b3 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0xb7f2f258 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xc571ff51 nci_register_device +EXPORT_SYMBOL net/nfc/nfc 0x20dfdb41 nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0x27c70aae nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0x28b24dae nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0x2aab3e05 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x2f7893cc nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x412aa255 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0x4c59e0c6 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x5391955b nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x5d9bee2a nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x8022bae7 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x80f1d121 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x8c907c32 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x954ae08d nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0xbdda6d88 nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0xd3437388 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0xd94238cf nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0xe1f9223c nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0xf0664636 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0xf395a2a0 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0xfed780f0 nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc_digital 0x4fa8b4bd nfc_digital_register_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x68b22d40 nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x9155f8b6 nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xe32865d7 nfc_digital_unregister_device +EXPORT_SYMBOL net/phonet/phonet 0x1d98f41a pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0x2f74820c phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x797d86dc pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0x922b02fe pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x97087840 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0xb3a6d2f2 phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0xb691ddc9 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0xe30fbf81 pn_sock_get_port +EXPORT_SYMBOL net/rds/rds 0x7505d413 rds_str_array +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x10007ff8 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x1f1d80eb rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x4c842487 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x5011db00 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x7472c334 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x79d01cb7 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x7ce9f778 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb01ab3cb rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb227d2ca rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb7566899 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc3d49973 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xcba04c73 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd8f93677 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xdfca0868 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe6aaeaa7 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/sctp/sctp 0x0ed3ae68 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xac3b1ffd gss_mech_get +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xb9b7ae9c gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xfeb04718 gss_mech_put +EXPORT_SYMBOL net/sunrpc/sunrpc 0xc5cf415a svc_pool_stats_open +EXPORT_SYMBOL net/wimax/wimax 0x1f6931ba wimax_reset +EXPORT_SYMBOL net/wimax/wimax 0xdf8f4528 wimax_rfkill +EXPORT_SYMBOL net/wireless/cfg80211 0x0003252e regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x04fc9a64 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x11605a0f wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x119943e0 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x12897534 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1a782ad3 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x1b762b6a cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x1d4d6989 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x2877f6a0 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x2ac953e0 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x2b90701b cfg80211_inform_bss_width +EXPORT_SYMBOL net/wireless/cfg80211 0x2e1704d7 cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0x34c30610 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x355663e8 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x3694799c cfg80211_del_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x3775ef7c cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x3777c17d cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x39b72a38 cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x406a8302 cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x43c2e9a6 cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0x485ef7ac cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x49a3e87e cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x49db4b03 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x4c3b5878 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x4c40b2fb ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x4deee8b2 cfg80211_inform_bss_width_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x525faf68 cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0x53f9529b cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0x549ae50f ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x58816d1e cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x5af3ff12 cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x5e54df46 cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0x610c9ce6 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x62627f88 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x680b857e cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6a6dc15b cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x6ec323be cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x77d4928d wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x878e54fb cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x87aec119 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x8ec5bff6 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x92778900 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x985ed4d8 cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x99884de9 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x9d161da7 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x9e81bd2a cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0xa0637307 wiphy_apply_custom_regulatory +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 0xa1b1eebf ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xa6b442e3 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0xacce6e17 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xb31cf47e cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0xb72c0327 cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0xbdf9b225 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0xbef65b80 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xc0323342 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0xc07246c7 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0xc15c8611 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xc3366c33 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0xc3ea00ba cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xcf5e622f cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xcf618a57 cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0xd22e9bd2 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xdf32d8ee cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xe1849f54 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xe4080dcf cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0xe8b97fb2 cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xedca392c cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0xee42db3c cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0xf1693318 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0xf8c388ec wiphy_new +EXPORT_SYMBOL net/wireless/cfg80211 0xf967a9b6 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xfb75a85f cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0xfdf60ee7 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x082390e6 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0x258281d2 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x2d0f99e5 print_ssid +EXPORT_SYMBOL net/wireless/lib80211 0x37cc2fff lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x842867e5 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x9d144211 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0xdfdc00e2 lib80211_crypt_info_free +EXPORT_SYMBOL sound/ac97_bus 0x78969e8a ac97_bus_type +EXPORT_SYMBOL sound/core/seq/snd-seq 0x10496a9f snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1a724fcc snd_seq_kernel_client_ctl +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3061c52d snd_use_lock_sync_helper +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3fb4d161 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x4e4293da snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6aa6723b 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 0x7cdfe167 snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0xb8e448a0 snd_seq_set_queue_tempo +EXPORT_SYMBOL sound/core/seq/snd-seq 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 0x3a57f235 snd_seq_autoload_unlock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x561b1083 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-device 0xa2da6068 snd_seq_device_register_driver +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xb90668b2 snd_seq_autoload_lock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xc622fb29 snd_seq_device_unregister_driver +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 0x01b82065 snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x0d2b74da snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x2ceec35d snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x668570c0 snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x7f92860c snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xb494afee snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xc7b2b6c2 snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xe0a50454 snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0x42d4de65 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x04555dae snd_card_register +EXPORT_SYMBOL sound/core/snd 0x0985e49d snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x0bb6c37b snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0x17bf5a46 snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0x18b719e9 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0x18e1683f snd_dma_program +EXPORT_SYMBOL sound/core/snd 0x191e88cf snd_dma_pointer +EXPORT_SYMBOL sound/core/snd 0x1a70e7ec snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0x1e58da39 snd_info_register +EXPORT_SYMBOL sound/core/snd 0x1eeaa3c1 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x1f5e5c96 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0x20de309b snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x233d03df 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 0x3007370b snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0x342a2354 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x3503b6e0 snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0x393fd051 snd_power_wait +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x3aa7e08a snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0x3bb48591 snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x453a0e62 snd_card_proc_new +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4b015768 snd_iprintf +EXPORT_SYMBOL sound/core/snd 0x4b31a7e6 snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0x53872232 snd_device_new +EXPORT_SYMBOL sound/core/snd 0x58f2e87a snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x6eb16b8a snd_ctl_register_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x7f26a5be snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x888a7ee4 snd_jack_new +EXPORT_SYMBOL sound/core/snd 0x899680a6 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0x8b46f646 snd_ctl_unregister_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x8e19f1f5 snd_register_device_for_dev +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x8f85548e snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0x99e5b9ad 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 0xa48b3628 snd_device_register +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xc318ec04 snd_add_device_sysfs_file +EXPORT_SYMBOL sound/core/snd 0xc4680e7d snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0xd111cc29 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0xd2c29c9c snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0xdfb9e4ed snd_jack_report +EXPORT_SYMBOL sound/core/snd 0xe188f774 snd_cards +EXPORT_SYMBOL sound/core/snd 0xe3874190 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0xe554b0eb snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0xe724a303 snd_component_add +EXPORT_SYMBOL sound/core/snd 0xea8102de snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0xecb28516 snd_seq_root +EXPORT_SYMBOL sound/core/snd 0xf18b96de _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0xf2dcff62 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0xf4915fe2 snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0xf65b7bb4 snd_card_free +EXPORT_SYMBOL sound/core/snd 0xf9fd8548 snd_card_create +EXPORT_SYMBOL sound/core/snd 0xfb96f822 snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0xfe8fc999 snd_card_unref +EXPORT_SYMBOL sound/core/snd 0xfffd89db copy_from_user_toio +EXPORT_SYMBOL sound/core/snd-hwdep 0x0d01cd34 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-page-alloc 0x06b310c9 snd_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x120e6706 snd_dma_reserve_buf +EXPORT_SYMBOL sound/core/snd-page-alloc 0x1c30c096 snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x5898dcba snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x6e050f98 snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x9835da46 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-page-alloc 0xca34c226 snd_sgbuf_get_chunk_size +EXPORT_SYMBOL sound/core/snd-page-alloc 0xddae2fbd snd_dma_get_reserved_buf +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 0x10da9f6b snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0x13c928e1 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0x143cf6ba snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0x172e0a7c snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0x1c48a668 snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0x1c6b689c snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x28ad5224 snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0x2afb78f3 snd_pcm_debug_name +EXPORT_SYMBOL sound/core/snd-pcm 0x2dd5960b snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0x3431dfd4 snd_pcm_sgbuf_ops_page +EXPORT_SYMBOL sound/core/snd-pcm 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL sound/core/snd-pcm 0x3b267448 snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x3d525981 snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x42d53530 snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x49f6451b snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0x4cc9cd17 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x525b63d4 snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x58453bfd snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0x5b13dd7c snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0x5baa1434 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x5fb70691 snd_pcm_lib_free_vmalloc_buffer +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 0x69ad9aef snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x7f90e33e snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0x834dc955 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x8a7ae5ae snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0x8a9fc96f snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0x9343a42f snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x954322af snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0xa3111565 snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0xa60493cf snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xa9adc229 snd_pcm_link_rwlock +EXPORT_SYMBOL sound/core/snd-pcm 0xb288cd6a snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xb8d4854e snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xb98270df snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0xba804c4f snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xbc512459 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0xc4356846 snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0xc53a5cb4 snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0xc982339f snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0xcc474209 snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0xd001167b snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0xdb9d2e8e snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0xdc74d87f snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0xdcec0d61 snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xe79ed064 snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0xe87ca9bb snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xff3cfac4 snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x02213ed6 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x06534a88 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x09731848 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5cd47ca1 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5f7754d7 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7660c09c __snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8a6493f3 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0x9149a685 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x967a0f5a snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x991bb3db snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa1ad52f2 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa6abce17 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb3fbb2c2 __snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc12576ca snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc1600ad8 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc38c11be snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0xcf82bfa9 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd53c45dd snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe791cbcb snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-timer 0x12c06d8d snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0x32345074 snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0x33f17dc9 snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0x347d5556 snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0x3999b22f snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0x5823dfc9 snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0x5d190c09 snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0xbb3e4b3d snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0xc337f6d0 snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0xd5ec7488 snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0xeadce947 snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0xeb23b1cc snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0xfee1cdfb snd_timer_pause +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x05e1a6fa 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 0x14e38432 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x2cda282c snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x4c613973 snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x6b5fee48 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x6befe343 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xb309c3a7 snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xbd3670f8 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xca005efd snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xe9f912f7 snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x02ec4c0b snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x0333becd snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x1c95e580 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x30ba1ef4 snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x5f912ced snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x832a4493 snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x87209aff snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xdf3ed5fc snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xeb1cf3df snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0d6571cc fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x10a75d4b amdtp_out_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1c56b8e0 cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2406ca0c cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x289e5baf cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x379cd648 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3fceb933 amdtp_out_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x48e1c3eb amdtp_out_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4920e439 amdtp_out_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6ac3f3eb amdtp_out_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6d69263a fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6eb70a4b iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x80f97df9 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x83d02cde snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x92006254 amdtp_out_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x93b13fb7 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9b1b63e9 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9c41cf72 amdtp_out_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa6fd3e76 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb9243bf1 amdtp_out_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xba0f548e fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbca38c57 amdtp_out_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc05d2c53 fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd0948f04 amdtp_out_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd14106e7 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf5431a4b amdtp_out_stream_destroy +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x41540ac7 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x4c7a5ba9 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x5b3a639e snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x84833527 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xaca7df3f snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xc6f7c4ba snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x1310e84e snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x18d9cb97 snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x2ae88413 snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x491b6040 snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x4fe1f3c7 snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x51936fc1 snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x3bb69550 snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x55af777b snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x65393b5b snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x803791a3 snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x285fb8e8 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x75b83fdd snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x98288d7c snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x9ece7b0c snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xb0aec3fc snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xfc6f739d snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xfe103068 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-i2c 0x00dd1f95 snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x591bfab7 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0xafa07c9b snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xe58a18f7 snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xf7cb2d95 snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xf7d2f439 snd_i2c_probeaddr +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x32d3d9c8 snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x613d40f5 snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x652a5d43 snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x6c3ed0ff snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x8275be34 snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x92324be2 snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xa429b63b snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xc09fe22a snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xf1183627 snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xf208ed23 snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x17723556 snd_sb16dsp_pcm +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x2be27558 snd_sb16dsp_get_pcm_ops +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x5ea4c87f snd_sb16dsp_configure +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xe0b3f690 snd_sb16dsp_interrupt +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x07b71bbc snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0c7e1eab snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x30f9fb4b snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x42ca0eaa snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x4b4bc802 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x61e86a75 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x72316813 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x8f619803 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xa5dca87f snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xa8118f5f snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb43f4918 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xbfc60662 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xcbefafd9 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xd4c2889f snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe36e8d52 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf701c4e7 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xfbcaaedf snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/asihpi/snd-asihpi 0x3c46606f hpi_send_recv +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x0b3b8867 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x16d1d79e snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x1a00a936 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x69873256 snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x76610670 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x8a85bddb snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xa7c61634 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xbb756093 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xd65a3ea6 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x1080d26d snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x3a4d0b6a snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x7cf335ee snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x086b219f oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x0ca45a35 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x469e7d65 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x478334bc oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x4bc3b6ac oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x4cd3509e oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x61080965 oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x61ad5cd9 oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x728bc4ef oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x735468e3 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x7916d43c oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x7fef6749 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x8efe307a oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x9809095b oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa8fbbb0f oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xccaf38b8 oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xdb358ad3 oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe49956eb oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf6a9fef0 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf786d883 oxygen_write8 +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x70913734 snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x716b1600 snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x7c91fd1f snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xac646615 snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xfa18c234 snd_trident_write_voice_regs +EXPORT_SYMBOL sound/soundcore 0x521de131 sound_class +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x0e4f9b39 snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x1f48d3c6 snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x3e9c09af 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 0xbdbd387b snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xbf6e683b snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xc421b4f5 snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/snd-util-mem 0x40a4e7bc __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x45d7529b snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x55b44b90 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x7477fb95 snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0x995777c6 snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x9d785980 snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xcd400c0b snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0xdc95f2ec __snd_util_memblk_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 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xf99dfaa0 snd_usbmidi_create +EXPORT_SYMBOL vmlinux 0x00000000 __symbol_put +EXPORT_SYMBOL vmlinux 0x00000000 alloc_pages_current +EXPORT_SYMBOL vmlinux 0x00000000 current_fs_time +EXPORT_SYMBOL vmlinux 0x00000000 d_tmpfile +EXPORT_SYMBOL vmlinux 0x00000000 do_sync_read +EXPORT_SYMBOL vmlinux 0x00000000 filp_close +EXPORT_SYMBOL vmlinux 0x00000000 finish_open +EXPORT_SYMBOL vmlinux 0x00000000 generic_getxattr +EXPORT_SYMBOL vmlinux 0x00000000 generic_write_sync +EXPORT_SYMBOL vmlinux 0x00000000 get_unmapped_area +EXPORT_SYMBOL vmlinux 0x00000000 in_group_p +EXPORT_SYMBOL vmlinux 0x00000000 inode_add_bytes +EXPORT_SYMBOL vmlinux 0x00000000 iov_shorten +EXPORT_SYMBOL vmlinux 0x00000000 iterate_fd +EXPORT_SYMBOL vmlinux 0x00000000 ns_capable +EXPORT_SYMBOL vmlinux 0x00000000 path_is_under +EXPORT_SYMBOL vmlinux 0x00000000 register_exec_domain +EXPORT_SYMBOL vmlinux 0x00000000 schedule_timeout +EXPORT_SYMBOL vmlinux 0x00000000 sock_register +EXPORT_SYMBOL vmlinux 0x00000000 sys_close +EXPORT_SYMBOL vmlinux 0x00000000 task_nice +EXPORT_SYMBOL vmlinux 0x00000000 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x00000000 vm_brk +EXPORT_SYMBOL vmlinux 0x000996a8 x86_hyper_vmware +EXPORT_SYMBOL vmlinux 0x00317440 input_register_handle +EXPORT_SYMBOL vmlinux 0x0036a7bb skb_find_text +EXPORT_SYMBOL vmlinux 0x004068de pnp_stop_dev +EXPORT_SYMBOL vmlinux 0x0047d3ff register_xen_selfballooning +EXPORT_SYMBOL vmlinux 0x004927a7 napi_complete +EXPORT_SYMBOL vmlinux 0x004af330 skb_tx_error +EXPORT_SYMBOL vmlinux 0x006d8288 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x006fd028 simple_link +EXPORT_SYMBOL vmlinux 0x00762e82 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0x007a8072 seq_release_private +EXPORT_SYMBOL vmlinux 0x00801678 flush_scheduled_work +EXPORT_SYMBOL vmlinux 0x00adfef5 scsi_put_command +EXPORT_SYMBOL vmlinux 0x00bf9f91 efi +EXPORT_SYMBOL vmlinux 0x00c098d8 km_query +EXPORT_SYMBOL vmlinux 0x00c5bb6d __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x00d8a2ea neigh_app_ns +EXPORT_SYMBOL vmlinux 0x00db6a75 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x00ee6c13 tty_port_close_start +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x011b2683 backlight_device_register +EXPORT_SYMBOL vmlinux 0x013437e4 tty_pair_get_tty +EXPORT_SYMBOL vmlinux 0x01382a8a tcp_parse_options +EXPORT_SYMBOL vmlinux 0x015ddbdc wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x017be267 i2c_use_client +EXPORT_SYMBOL vmlinux 0x018cb439 tty_port_hangup +EXPORT_SYMBOL vmlinux 0x01902adf netpoll_trap +EXPORT_SYMBOL vmlinux 0x01a14272 nf_ct_attach +EXPORT_SYMBOL vmlinux 0x01b2b115 km_policy_expired +EXPORT_SYMBOL vmlinux 0x01b3b5d7 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x01bd50df dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x01cd3d1e dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x01cf294a sock_no_poll +EXPORT_SYMBOL vmlinux 0x01d8383e inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x01f1d2af nf_register_hook +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x022922ea mmc_gpio_free_ro +EXPORT_SYMBOL vmlinux 0x0237b57a arch_unregister_cpu +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x0265eb9a xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0x026c6436 gen10g_config_aneg +EXPORT_SYMBOL vmlinux 0x02712df6 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x029444f0 native_read_tsc +EXPORT_SYMBOL vmlinux 0x029a10aa pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a468a6 skb_pad +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02a91b4e inode_init_always +EXPORT_SYMBOL vmlinux 0x02d669a4 inet_stream_ops +EXPORT_SYMBOL vmlinux 0x0306583d devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0x03118fea inet_recvmsg +EXPORT_SYMBOL vmlinux 0x0321baac blkdev_get_by_path +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 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x0373293c sk_net_capable +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x0385c324 commit_creds +EXPORT_SYMBOL vmlinux 0x0388b4c7 input_free_device +EXPORT_SYMBOL vmlinux 0x039f45ff scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x03a4b3ea amd_iommu_domain_set_gcr3 +EXPORT_SYMBOL vmlinux 0x03a9d553 gen10g_resume +EXPORT_SYMBOL vmlinux 0x03c06156 bitmap_fold +EXPORT_SYMBOL vmlinux 0x03ccc66c i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x03db8187 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0x03e0cb5a __blk_end_request +EXPORT_SYMBOL vmlinux 0x03e3f263 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x03ea0a6e proc_set_size +EXPORT_SYMBOL vmlinux 0x03ebda85 dns_query +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x04287c02 eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0x0442bdb3 dqput +EXPORT_SYMBOL vmlinux 0x04479fec agp_put_bridge +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x044b8baf __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x04572f1f dquot_quota_off +EXPORT_SYMBOL vmlinux 0x045f69cf try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x04622b2b agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0x04629e8b dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x04707ce9 setup_new_exec +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x04901b72 pnp_activate_dev +EXPORT_SYMBOL vmlinux 0x04927208 cpu_active_mask +EXPORT_SYMBOL vmlinux 0x04a3cbd7 gen10g_config_advert +EXPORT_SYMBOL vmlinux 0x04a6223b __idr_pre_get +EXPORT_SYMBOL vmlinux 0x04d8c750 release_perfctr_nmi +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04ea5d10 ksize +EXPORT_SYMBOL vmlinux 0x04f852fe devm_gpio_request +EXPORT_SYMBOL vmlinux 0x050877b9 dmi_first_match +EXPORT_SYMBOL vmlinux 0x051bc025 d_find_any_alias +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x052f5541 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x053eb9c3 register_shrinker +EXPORT_SYMBOL vmlinux 0x054434d6 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x055b487b mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x055b5db6 mmc_can_discard +EXPORT_SYMBOL vmlinux 0x055c8559 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x058b5851 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x0593a99b init_timer_key +EXPORT_SYMBOL vmlinux 0x05c393d7 __serio_register_driver +EXPORT_SYMBOL vmlinux 0x05c3c802 console_stop +EXPORT_SYMBOL vmlinux 0x05c9988d end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x05d70906 fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0x05e4ab4e ip_getsockopt +EXPORT_SYMBOL vmlinux 0x05e73724 input_inject_event +EXPORT_SYMBOL vmlinux 0x05e96b9c pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x05ee4ec4 new_inode +EXPORT_SYMBOL vmlinux 0x05ef7b5f kern_unmount +EXPORT_SYMBOL vmlinux 0x0614390a blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x061f4039 acpi_get_table_with_size +EXPORT_SYMBOL vmlinux 0x062c52b6 qdisc_reset +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x064501a1 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x0647842f inet_frag_evictor +EXPORT_SYMBOL vmlinux 0x066f2df8 mount_pseudo +EXPORT_SYMBOL vmlinux 0x06797871 vm_stat +EXPORT_SYMBOL vmlinux 0x067d824e security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x068c7263 ioremap_cache +EXPORT_SYMBOL vmlinux 0x0695a86a mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x069eb8e0 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x06b45c26 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x06c0dae5 __kernel_fpu_end +EXPORT_SYMBOL vmlinux 0x06d91015 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x071ea9b2 mpage_readpages +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x073dfa12 generate_resume_trace +EXPORT_SYMBOL vmlinux 0x074f3fdc kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0x075e15d3 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x076f0522 scsi_init_io +EXPORT_SYMBOL vmlinux 0x0799aca4 local_bh_enable +EXPORT_SYMBOL vmlinux 0x079e06ca pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07cf1d22 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x07d16fc6 init_buffer +EXPORT_SYMBOL vmlinux 0x07e3c390 tty_pair_get_pty +EXPORT_SYMBOL vmlinux 0x07f3c8a0 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x07fd8ec4 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x0846f59a cpu_info +EXPORT_SYMBOL vmlinux 0x0856108c dev_get_flags +EXPORT_SYMBOL vmlinux 0x0856a8c2 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x0857088c security_path_unlink +EXPORT_SYMBOL vmlinux 0x0865df6d done_path_create +EXPORT_SYMBOL vmlinux 0x08916936 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x0897287b acpi_disable_all_gpes +EXPORT_SYMBOL vmlinux 0x089a0b6b blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x08ae8760 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x08aeff79 pci_restore_state +EXPORT_SYMBOL vmlinux 0x08e418b2 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x08e550b4 phy_device_register +EXPORT_SYMBOL vmlinux 0x08e5de78 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x08f64aa4 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x0906917c shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x090cfb9b remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0x09219351 freeze_bdev +EXPORT_SYMBOL vmlinux 0x092c5f0e pci_disable_msi +EXPORT_SYMBOL vmlinux 0x09356058 try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x09672511 dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x098431ba acpi_get_current_resources +EXPORT_SYMBOL vmlinux 0x098b6dac proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x0992780d efi_enabled +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09d99d86 x86_hyper_ms_hyperv +EXPORT_SYMBOL vmlinux 0x09e8de8f netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x09fa7670 __register_chrdev +EXPORT_SYMBOL vmlinux 0x0a034979 inet_accept +EXPORT_SYMBOL vmlinux 0x0a040248 inet_bind +EXPORT_SYMBOL vmlinux 0x0a1a5bff scsi_release_buffers +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a30c381 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x0a4543c4 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x0a46f194 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x0a503e43 dentry_path_raw +EXPORT_SYMBOL vmlinux 0x0a5f20ba jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x0a702baa qdisc_list_del +EXPORT_SYMBOL vmlinux 0x0a770832 register_memory_notifier +EXPORT_SYMBOL vmlinux 0x0a86e25b _raw_read_unlock_irq +EXPORT_SYMBOL vmlinux 0x0a996961 register_gifconf +EXPORT_SYMBOL vmlinux 0x0acb1a3c __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ad0e67c idr_replace +EXPORT_SYMBOL vmlinux 0x0ae1d95a dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x0aee7e34 blkdev_put +EXPORT_SYMBOL vmlinux 0x0af22d7d set_page_dirty +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b13ebc1 dump_skip +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b1d08a1 set_blocksize +EXPORT_SYMBOL vmlinux 0x0b2aaeb5 sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x0b5657f3 generic_file_mmap +EXPORT_SYMBOL vmlinux 0x0b592578 uart_update_timeout +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b877b9f nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x0ba5655c delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bbec120 wake_up_process +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bcc03b9 kobject_get +EXPORT_SYMBOL vmlinux 0x0bcf43f5 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x0bef1ce1 ipmi_get_smi_info +EXPORT_SYMBOL vmlinux 0x0c06355d xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x0c0932eb generic_writepages +EXPORT_SYMBOL vmlinux 0x0c0dee6e xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x0c335faf scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c65e73c scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0x0c782a6c pci_enable_msi_block_auto +EXPORT_SYMBOL vmlinux 0x0c7b102a misc_register +EXPORT_SYMBOL vmlinux 0x0c8c9e99 scsi_show_extd_sense +EXPORT_SYMBOL vmlinux 0x0c8d969b kfree_skb_list +EXPORT_SYMBOL vmlinux 0x0c964883 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x0ca7b7a8 acpi_check_region +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cc7f7ad gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x0cd1da5a ps2_end_command +EXPORT_SYMBOL vmlinux 0x0cdb7d12 __kernel_fpu_begin +EXPORT_SYMBOL vmlinux 0x0ce900af blk_finish_plug +EXPORT_SYMBOL vmlinux 0x0cf6be1b swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0x0cfcae75 fsync_bdev +EXPORT_SYMBOL vmlinux 0x0cfcbf81 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x0cfea195 phy_connect +EXPORT_SYMBOL vmlinux 0x0d11acc2 md_done_sync +EXPORT_SYMBOL vmlinux 0x0d1fffb3 tcp_sendpage +EXPORT_SYMBOL vmlinux 0x0d20ebc6 sock_no_getname +EXPORT_SYMBOL vmlinux 0x0d2cdd01 scsi_device_get +EXPORT_SYMBOL vmlinux 0x0d3d8939 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x0d3dda14 acpi_get_type +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d5d79d5 generic_pipe_buf_map +EXPORT_SYMBOL vmlinux 0x0d6d7a87 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x0d785e10 inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0x0d88844c dev_warn +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0da73eb7 devfreq_add_governor +EXPORT_SYMBOL vmlinux 0x0dbb0c80 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x0dccfcf9 skb_store_bits +EXPORT_SYMBOL vmlinux 0x0dd953e6 amd_iommu_flush_page +EXPORT_SYMBOL vmlinux 0x0ddb0897 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0x0ddc5560 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x0df10675 elevator_exit +EXPORT_SYMBOL vmlinux 0x0e0f3db0 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x0e1b1266 blk_rq_init +EXPORT_SYMBOL vmlinux 0x0e38ae93 xfrm_state_update +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e7175bd handle_edge_irq +EXPORT_SYMBOL vmlinux 0x0e9a8b82 __skb_dst_set_noref +EXPORT_SYMBOL vmlinux 0x0ea5095c vga_put +EXPORT_SYMBOL vmlinux 0x0eb654c2 account_page_writeback +EXPORT_SYMBOL vmlinux 0x0ecda756 md_flush_request +EXPORT_SYMBOL vmlinux 0x0ed8cc7b acpi_evaluate_object_typed +EXPORT_SYMBOL vmlinux 0x0eda54cc lock_rename +EXPORT_SYMBOL vmlinux 0x0ef61640 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f133cc7 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x0f346064 dev_add_offload +EXPORT_SYMBOL vmlinux 0x0f34e88f proc_mkdir +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f697bd5 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x0f7ab9f0 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x0fa2a625 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fd00a68 acpi_clear_event +EXPORT_SYMBOL vmlinux 0x0fd11db6 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x0febbc9d fget +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x0ffa9c0d __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x100110d9 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0x101c1b49 compat_ip_getsockopt +EXPORT_SYMBOL vmlinux 0x102750ba netdev_err +EXPORT_SYMBOL vmlinux 0x102ab0a2 do_splice_from +EXPORT_SYMBOL vmlinux 0x1030b935 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x1042ccd5 skb_copy_datagram_from_iovec +EXPORT_SYMBOL vmlinux 0x10640487 dump_trace +EXPORT_SYMBOL vmlinux 0x106b7ad8 pci_read_vpd +EXPORT_SYMBOL vmlinux 0x1072a394 csum_partial_copy_from_user +EXPORT_SYMBOL vmlinux 0x107f4930 blk_init_queue +EXPORT_SYMBOL vmlinux 0x1080c099 tty_register_device +EXPORT_SYMBOL vmlinux 0x10897cd9 tcp_child_process +EXPORT_SYMBOL vmlinux 0x1098a413 put_disk +EXPORT_SYMBOL vmlinux 0x10a3b83f inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0x10c1dc95 kernel_accept +EXPORT_SYMBOL vmlinux 0x10cf4171 dump_emit +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x11111cf7 genphy_resume +EXPORT_SYMBOL vmlinux 0x11208cf0 pci_request_region +EXPORT_SYMBOL vmlinux 0x11267875 scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0x115af384 inet_add_protocol +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x1166da5f iov_iter_copy_from_user +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x11e2ec12 flex_array_free_parts +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 0x1214606d rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0x1248a7b2 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x1248f384 address_space_init_once +EXPORT_SYMBOL vmlinux 0x125ee190 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x1260529f iterate_mounts +EXPORT_SYMBOL vmlinux 0x1280f5dd pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x128250a9 __page_symlink +EXPORT_SYMBOL vmlinux 0x1288e1cc make_bad_inode +EXPORT_SYMBOL vmlinux 0x1290ea0e input_unregister_handle +EXPORT_SYMBOL vmlinux 0x129de341 wrmsr_on_cpus +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12a8bed1 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x12dfeb12 vprintk_emit +EXPORT_SYMBOL vmlinux 0x12e57218 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x1301d9d3 udplite_prot +EXPORT_SYMBOL vmlinux 0x1305d532 ucs2_strncmp +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x1333aca4 skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0x1348760d ipmi_request_settime +EXPORT_SYMBOL vmlinux 0x1388f3ab register_filesystem +EXPORT_SYMBOL vmlinux 0x13a2e11a mutex_unlock +EXPORT_SYMBOL vmlinux 0x13bfe6ab dev_uc_sync +EXPORT_SYMBOL vmlinux 0x13d006da sock_wmalloc +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13d96c1b cfb_fillrect +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x1411fcc8 eth_change_mtu +EXPORT_SYMBOL vmlinux 0x14263389 pnp_unregister_driver +EXPORT_SYMBOL vmlinux 0x1431b4e9 default_llseek +EXPORT_SYMBOL vmlinux 0x1438504a padata_free +EXPORT_SYMBOL vmlinux 0x145839ed scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x1488f4ee processors +EXPORT_SYMBOL vmlinux 0x14c6d349 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x14ced183 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x14eae10b pnp_possible_config +EXPORT_SYMBOL vmlinux 0x14fef591 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x150389d6 acpi_processor_power_init_bm_check +EXPORT_SYMBOL vmlinux 0x1537c6a6 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x153acfd8 inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0x1541cfba mem_cgroup_subsys +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x1551dc51 bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x1559d87a skb_seq_read +EXPORT_SYMBOL vmlinux 0x1562f8a5 bdi_init +EXPORT_SYMBOL vmlinux 0x1569f6f9 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x158ef6ac kill_bdev +EXPORT_SYMBOL vmlinux 0x15f4c67f phy_find_first +EXPORT_SYMBOL vmlinux 0x15f571ec blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x16077ad9 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x160ea4c8 sfi_disabled +EXPORT_SYMBOL vmlinux 0x161120a7 set_pages_array_wc +EXPORT_SYMBOL vmlinux 0x16124fcd nf_register_hooks +EXPORT_SYMBOL vmlinux 0x16305289 warn_slowpath_null +EXPORT_SYMBOL vmlinux 0x16321bfb uart_add_one_port +EXPORT_SYMBOL vmlinux 0x1637ff0f _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0x165e4833 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x165ececd __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x1675779e d_validate +EXPORT_SYMBOL vmlinux 0x1678d964 scsi_setup_fs_cmnd +EXPORT_SYMBOL vmlinux 0x167c5967 print_hex_dump +EXPORT_SYMBOL vmlinux 0x167e5be6 sock_no_accept +EXPORT_SYMBOL vmlinux 0x167e7f9d __get_user_1 +EXPORT_SYMBOL vmlinux 0x1681b287 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x168f1082 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x1692a924 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0x16939756 thaw_super +EXPORT_SYMBOL vmlinux 0x16a64aa7 scsi_allocate_command +EXPORT_SYMBOL vmlinux 0x16ab4046 inet_put_port +EXPORT_SYMBOL vmlinux 0x16ba40b6 acpi_notifier_call_chain +EXPORT_SYMBOL vmlinux 0x16d47ceb i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL vmlinux 0x16e9e677 mmc_detect_change +EXPORT_SYMBOL vmlinux 0x16f1dc27 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0x170c25ee acpi_get_next_object +EXPORT_SYMBOL vmlinux 0x17211407 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x17224ac4 set_pages_uc +EXPORT_SYMBOL vmlinux 0x17510dbb pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x1790d76b _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17b64d09 dqstats +EXPORT_SYMBOL vmlinux 0x17ca6cb9 consume_skb +EXPORT_SYMBOL vmlinux 0x17e939e3 agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0x17ecfdba __scm_destroy +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x1816b618 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x18242267 simple_statfs +EXPORT_SYMBOL vmlinux 0x18351ed4 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x184e6c85 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x1876508e bio_copy_data +EXPORT_SYMBOL vmlinux 0x188841b0 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x188d2940 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18b72573 register_kmmio_probe +EXPORT_SYMBOL vmlinux 0x18befbe3 kill_fasync +EXPORT_SYMBOL vmlinux 0x18c3cd3f xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x18d27467 inet_del_protocol +EXPORT_SYMBOL vmlinux 0x18dd181e napi_gro_flush +EXPORT_SYMBOL vmlinux 0x190db1f4 block_write_end +EXPORT_SYMBOL vmlinux 0x19111848 swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0x19238b9b jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x193d0d35 ppp_register_channel +EXPORT_SYMBOL vmlinux 0x193d5354 may_umount_tree +EXPORT_SYMBOL vmlinux 0x19444627 memcpy_fromiovecend +EXPORT_SYMBOL vmlinux 0x1967408d __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x197e6bb9 pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0x199dad57 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19bbed9c ___pskb_trim +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19c1dd17 blk_peek_request +EXPORT_SYMBOL vmlinux 0x19c2a2b4 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x19c6ca2d tcp_disconnect +EXPORT_SYMBOL vmlinux 0x1a0178d6 dev_alert +EXPORT_SYMBOL vmlinux 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL vmlinux 0x1a1e3eea simple_lookup +EXPORT_SYMBOL vmlinux 0x1a209d9e blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x1a342f27 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x1a45cb6c acpi_disabled +EXPORT_SYMBOL vmlinux 0x1a49ab0d pci_platform_rom +EXPORT_SYMBOL vmlinux 0x1a63af34 vga_switcheroo_process_delayed_switch +EXPORT_SYMBOL vmlinux 0x1a68d497 kernel_write +EXPORT_SYMBOL vmlinux 0x1a6f954b framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x1a7cecf8 pci_find_next_bus +EXPORT_SYMBOL vmlinux 0x1a8eab55 __get_user_pages +EXPORT_SYMBOL vmlinux 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL vmlinux 0x1abf7290 pci_get_class +EXPORT_SYMBOL vmlinux 0x1ac5d3cb strcspn +EXPORT_SYMBOL vmlinux 0x1ace138d bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0x1ae14ef5 _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b353088 clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0x1b570d23 acpi_warning +EXPORT_SYMBOL vmlinux 0x1b5b7fec sock_alloc_file +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b72b0f4 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1b95d31d __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0x1b9e0ff1 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x1ba8e067 __page_cache_alloc +EXPORT_SYMBOL vmlinux 0x1bb976bf pm860x_page_set_bits +EXPORT_SYMBOL vmlinux 0x1bdc26cf sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0x1c05bc82 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x1c0ab871 vfs_open +EXPORT_SYMBOL vmlinux 0x1c5d3e45 nf_log_packet +EXPORT_SYMBOL vmlinux 0x1c80403e pci_write_vpd +EXPORT_SYMBOL vmlinux 0x1c8a04b0 acpi_reset +EXPORT_SYMBOL vmlinux 0x1caab7d0 devm_iounmap +EXPORT_SYMBOL vmlinux 0x1caf2e43 inet_csk_accept +EXPORT_SYMBOL vmlinux 0x1cbdd0f1 scsi_ioctl +EXPORT_SYMBOL vmlinux 0x1cd194d6 simple_fill_super +EXPORT_SYMBOL vmlinux 0x1cd92ce8 scsi_scan_target +EXPORT_SYMBOL vmlinux 0x1cdbc74c agp_collect_device_status +EXPORT_SYMBOL vmlinux 0x1d1f66c3 arch_debugfs_dir +EXPORT_SYMBOL vmlinux 0x1d243099 vga_switcheroo_register_audio_client +EXPORT_SYMBOL vmlinux 0x1d3b5d15 audit_log +EXPORT_SYMBOL vmlinux 0x1d435607 pci_bus_get +EXPORT_SYMBOL vmlinux 0x1d4b7355 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x1d4dbcf3 __invalidate_device +EXPORT_SYMBOL vmlinux 0x1d645db3 nf_log_set +EXPORT_SYMBOL vmlinux 0x1d661aa8 skb_clone +EXPORT_SYMBOL vmlinux 0x1d7d9ac3 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x1d980347 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x1dad9c91 sget +EXPORT_SYMBOL vmlinux 0x1db7706b __copy_user_nocache +EXPORT_SYMBOL vmlinux 0x1dbca239 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dc40903 register_cdrom +EXPORT_SYMBOL vmlinux 0x1dccb1fe security_path_mknod +EXPORT_SYMBOL vmlinux 0x1dccedf7 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1de3bcd6 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x1de74f72 acpi_execute_simple_method +EXPORT_SYMBOL vmlinux 0x1e047854 warn_slowpath_fmt +EXPORT_SYMBOL vmlinux 0x1e05b076 padata_alloc +EXPORT_SYMBOL vmlinux 0x1e0c2be4 ioremap_wc +EXPORT_SYMBOL vmlinux 0x1e123973 fb_blank +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e50b86a __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0x1e5957a9 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e7015e1 i2c_clients_command +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ea8f63a set_user_nice +EXPORT_SYMBOL vmlinux 0x1ec2c669 invalidate_bdev +EXPORT_SYMBOL vmlinux 0x1ec3bed9 hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0x1ec4eb34 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x1eca42d0 nf_getsockopt +EXPORT_SYMBOL vmlinux 0x1ecac965 free_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x1edd03f8 vga_switcheroo_register_client +EXPORT_SYMBOL vmlinux 0x1ee9d099 try_to_release_page +EXPORT_SYMBOL vmlinux 0x1efdbb33 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x1f6c2573 con_is_bound +EXPORT_SYMBOL vmlinux 0x1f6ce67a sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x1f71b12d sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x1f7d6a5d qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0x1fa59821 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x1fa832f3 phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fe33885 __napi_schedule +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fe9f800 unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x1fedf0f4 __request_region +EXPORT_SYMBOL vmlinux 0x1ff6402e open_exec +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 0x2021c348 kobject_add +EXPORT_SYMBOL vmlinux 0x202edc40 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0x2037467d tty_do_resize +EXPORT_SYMBOL vmlinux 0x20390ac6 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x2044aea7 amd_iommu_pc_get_max_banks +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x206cc7be pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x2070bdd2 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x2078b235 jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x208739f6 acpi_load_table +EXPORT_SYMBOL vmlinux 0x208fe7b5 dm_io +EXPORT_SYMBOL vmlinux 0x20916966 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20abc15b acpi_processor_register_performance +EXPORT_SYMBOL vmlinux 0x20b2bb2d param_array_ops +EXPORT_SYMBOL vmlinux 0x20c2ddbd scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20d3e50b set_anon_super +EXPORT_SYMBOL vmlinux 0x20dac987 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x20e22fed ip6_frag_match +EXPORT_SYMBOL vmlinux 0x20eadeb6 ip_compute_csum +EXPORT_SYMBOL vmlinux 0x20f97331 __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0x210a3d32 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x215ebd78 bitrev16 +EXPORT_SYMBOL vmlinux 0x217dda13 flex_array_get +EXPORT_SYMBOL vmlinux 0x219e5dd2 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0x21e0ea22 acpi_get_id +EXPORT_SYMBOL vmlinux 0x21e15af5 serio_interrupt +EXPORT_SYMBOL vmlinux 0x22012dff ipmi_register_smi +EXPORT_SYMBOL vmlinux 0x220e4a51 unregister_cdrom +EXPORT_SYMBOL vmlinux 0x2214f39f bd_set_size +EXPORT_SYMBOL vmlinux 0x2222fcef jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x226bcdf0 free_user_ns +EXPORT_SYMBOL vmlinux 0x226ccb52 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x2271fc3b tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x22905682 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x22ab1ffd bdi_unregister +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22b52c84 update_region +EXPORT_SYMBOL vmlinux 0x22bef963 single_open +EXPORT_SYMBOL vmlinux 0x22fd9ad0 sleep_on_timeout +EXPORT_SYMBOL vmlinux 0x230c3b38 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x230c4d50 blk_put_request +EXPORT_SYMBOL vmlinux 0x230c4f8a pci_find_bus +EXPORT_SYMBOL vmlinux 0x231373cc blk_mq_end_io +EXPORT_SYMBOL vmlinux 0x23184849 eth_type_trans +EXPORT_SYMBOL vmlinux 0x231ca349 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x234c124c abx500_register_ops +EXPORT_SYMBOL vmlinux 0x23532c4d ftrace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x23867006 build_skb +EXPORT_SYMBOL vmlinux 0x23a014ce __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23aca0b9 scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c8f257 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x23c8fa55 mpage_readpage +EXPORT_SYMBOL vmlinux 0x23c9891c kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x23d829f3 ip_setsockopt +EXPORT_SYMBOL vmlinux 0x23e71bfd phy_device_free +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x241b1790 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x242d8069 seq_read +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x2472e513 clocksource_unregister +EXPORT_SYMBOL vmlinux 0x247c19f0 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x2484adc3 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0x248c273b ida_remove +EXPORT_SYMBOL vmlinux 0x248e931f nobh_write_end +EXPORT_SYMBOL vmlinux 0x24a73221 register_quota_format +EXPORT_SYMBOL vmlinux 0x24ac90b6 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x24bfbe25 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x24d15af3 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x24d5e7d9 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x24db1d68 mmc_register_driver +EXPORT_SYMBOL vmlinux 0x24e34825 file_remove_suid +EXPORT_SYMBOL vmlinux 0x24f6bb10 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x2509d64e agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x254cf0c7 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x257b2ac8 stop_tty +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25bea38e tty_throttle +EXPORT_SYMBOL vmlinux 0x25c1d839 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x25c1da8d vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x25c677c4 mac_pton +EXPORT_SYMBOL vmlinux 0x25d094fc spi_attach_transport +EXPORT_SYMBOL vmlinux 0x25f1d076 free_task +EXPORT_SYMBOL vmlinux 0x261e9b7a mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x2626bd71 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x263122f8 wait_for_completion_interruptible_timeout +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 0x266980ae pipe_to_file +EXPORT_SYMBOL vmlinux 0x2685c3d7 __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x26948d96 copy_user_enhanced_fast_string +EXPORT_SYMBOL vmlinux 0x269aa161 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x26b0c995 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x26b912ca swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0x26bdd935 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x26c7d8e1 security_path_rmdir +EXPORT_SYMBOL vmlinux 0x26e298e0 unregister_memory_notifier +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26ef74f0 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x26f0453a blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x27036c35 may_umount +EXPORT_SYMBOL vmlinux 0x270e6364 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x271123fb kill_pid +EXPORT_SYMBOL vmlinux 0x2712ea2f vfs_rename +EXPORT_SYMBOL vmlinux 0x2712f4f5 crc32_le_combine +EXPORT_SYMBOL vmlinux 0x271cba95 acpi_bus_private_data_handler +EXPORT_SYMBOL vmlinux 0x272a402a inet_add_offload +EXPORT_SYMBOL vmlinux 0x272d394e mtrr_del +EXPORT_SYMBOL vmlinux 0x2738f325 pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x27413824 __skb_checksum +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x274ffde9 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x2761b692 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0x2778df00 vfs_symlink +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x279429bd md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x27a2dcb0 tty_vhangup +EXPORT_SYMBOL vmlinux 0x27ae7d0c ec_transaction +EXPORT_SYMBOL vmlinux 0x27b36ebe blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27c33efe csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0x27d3c1b2 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27e1cad9 amd_iommu_domain_clear_gcr3 +EXPORT_SYMBOL vmlinux 0x27f972d2 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x2804ecc7 always_delete_dentry +EXPORT_SYMBOL vmlinux 0x28132d83 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x281886f0 generic_read_dir +EXPORT_SYMBOL vmlinux 0x281d25b7 __devm_request_region +EXPORT_SYMBOL vmlinux 0x28318305 snprintf +EXPORT_SYMBOL vmlinux 0x28364430 scsi_host_put +EXPORT_SYMBOL vmlinux 0x284902c9 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x2851c06d writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x285581f6 rfkill_alloc +EXPORT_SYMBOL vmlinux 0x287d7781 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x288a2510 __breadahead +EXPORT_SYMBOL vmlinux 0x288e7901 cont_write_begin +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28abfe6e scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x28c079ab generic_setxattr +EXPORT_SYMBOL vmlinux 0x28d916e7 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x29010777 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x293d0d9c scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x294abcfa dev_add_pack +EXPORT_SYMBOL vmlinux 0x294e6d72 elv_rb_del +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x29749b62 dev_err +EXPORT_SYMBOL vmlinux 0x29749c50 elv_register_queue +EXPORT_SYMBOL vmlinux 0x297f62b8 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x29824178 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x29b83b73 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x29bdcbf3 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x29c0aa61 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x29c8edb0 elv_rb_add +EXPORT_SYMBOL vmlinux 0x29cc3409 submit_bh +EXPORT_SYMBOL vmlinux 0x29cdca43 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x29cde601 aio_complete +EXPORT_SYMBOL vmlinux 0x29cfa858 force_sig +EXPORT_SYMBOL vmlinux 0x29d503cb tcp_syn_flood_action +EXPORT_SYMBOL vmlinux 0x29dbf2e8 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x29e868ab sock_wfree +EXPORT_SYMBOL vmlinux 0x29e9e06d fddi_type_trans +EXPORT_SYMBOL vmlinux 0x2a10d392 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a372f16 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a3f8a6a d_set_d_op +EXPORT_SYMBOL vmlinux 0x2a438382 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x2a697564 tcp_splice_read +EXPORT_SYMBOL vmlinux 0x2a6e6109 __init_rwsem +EXPORT_SYMBOL vmlinux 0x2a7591db scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x2a79ac13 clkdev_add +EXPORT_SYMBOL vmlinux 0x2a8c8bf8 _raw_spin_unlock_irq +EXPORT_SYMBOL vmlinux 0x2aa66257 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x2aaea616 vga_get +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2ad58323 adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0x2aee419f inc_nlink +EXPORT_SYMBOL vmlinux 0x2afcbbcc single_open_size +EXPORT_SYMBOL vmlinux 0x2b006d7b vfs_readlink +EXPORT_SYMBOL vmlinux 0x2b0538a5 pci_set_mwi +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b182d4a md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x2b1a9c23 f_setown +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b365b88 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x2b4e5e66 alloc_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x2b51837e proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x2b70d59f mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x2b7568b8 tty_port_open +EXPORT_SYMBOL vmlinux 0x2b829005 scm_fp_dup +EXPORT_SYMBOL vmlinux 0x2b829ffc wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x2b97c57b scsi_remove_target +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 0x2bc18318 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x2bc8d934 acpi_bus_get_status +EXPORT_SYMBOL vmlinux 0x2be97a7b compat_sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x2bfeb410 acpi_get_handle +EXPORT_SYMBOL vmlinux 0x2c0fce49 padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x2c1748c4 inet_addr_type +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c4ef928 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x2c77eee5 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x2c86a438 get_fs_type +EXPORT_SYMBOL vmlinux 0x2c8ae591 proc_symlink +EXPORT_SYMBOL vmlinux 0x2c8b877e scsi_register_driver +EXPORT_SYMBOL vmlinux 0x2c900d91 cpufreq_put_global_kobject +EXPORT_SYMBOL vmlinux 0x2ca319a6 wrmsrl_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x2ca8b212 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x2cbde542 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x2cdeff39 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x2cef8cde __neigh_create +EXPORT_SYMBOL vmlinux 0x2cf73cb7 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x2cfc1bb6 km_new_mapping +EXPORT_SYMBOL vmlinux 0x2d03c10d posix_acl_create +EXPORT_SYMBOL vmlinux 0x2d095ae4 tty_free_termios +EXPORT_SYMBOL vmlinux 0x2d124323 pci_pme_capable +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d144e21 rdmsrl_on_cpu +EXPORT_SYMBOL vmlinux 0x2d20e76f scsi_scan_host +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d45adb4 skb_copy_datagram_const_iovec +EXPORT_SYMBOL vmlinux 0x2d4953ec redraw_screen +EXPORT_SYMBOL vmlinux 0x2d4e0e3d bio_phys_segments +EXPORT_SYMBOL vmlinux 0x2d4e5233 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x2d5ff61c kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x2d768619 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x2d89342a scsi_show_sense_hdr +EXPORT_SYMBOL vmlinux 0x2d9a2a0c ata_print_version +EXPORT_SYMBOL vmlinux 0x2da9f53b skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x2daaaba9 param_get_byte +EXPORT_SYMBOL vmlinux 0x2dca6c72 register_console +EXPORT_SYMBOL vmlinux 0x2dd16564 arch_register_cpu +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2dedc4c2 acpi_format_exception +EXPORT_SYMBOL vmlinux 0x2def7f76 rtc_cmos_write +EXPORT_SYMBOL vmlinux 0x2e0d2f7f queue_work_on +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e2b40d2 strncat +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e5a704c udp_table +EXPORT_SYMBOL vmlinux 0x2e6ca7f2 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x2e70d25f register_netdev +EXPORT_SYMBOL vmlinux 0x2e86b083 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x2e9fc4fa __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x2ea5c60d set_bdi_congested +EXPORT_SYMBOL vmlinux 0x2ebf068b ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x2eeceb42 sk_chk_filter +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 0x2f10bea8 blkdev_get +EXPORT_SYMBOL vmlinux 0x2f384db3 acpi_is_video_device +EXPORT_SYMBOL vmlinux 0x2f604606 kill_anon_super +EXPORT_SYMBOL vmlinux 0x2f61df48 dm_put_device +EXPORT_SYMBOL vmlinux 0x2f63fa1b skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0x2f65d691 noop_qdisc +EXPORT_SYMBOL vmlinux 0x2f732bea dentry_open +EXPORT_SYMBOL vmlinux 0x2f82f7cc i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0x2f84d964 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x2fb3750c on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fc3a588 vfs_read +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2ff063b5 acpi_get_name +EXPORT_SYMBOL vmlinux 0x301d3061 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x303437e6 cdrom_open +EXPORT_SYMBOL vmlinux 0x30346705 inet_frags_fini +EXPORT_SYMBOL vmlinux 0x303d9d3a seq_bitmap_list +EXPORT_SYMBOL vmlinux 0x30507e20 dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0x30651122 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x3082300b from_kuid_munged +EXPORT_SYMBOL vmlinux 0x309453b9 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x309d7627 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0x30a5295e key_task_permission +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30b24b36 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x30cada8f radix_tree_next_hole +EXPORT_SYMBOL vmlinux 0x30d387b1 md_unregister_thread +EXPORT_SYMBOL vmlinux 0x30d650ab jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x30ea1d87 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x315c65fd zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x316fe32a load_nls +EXPORT_SYMBOL vmlinux 0x31731cb9 mmc_start_bkops +EXPORT_SYMBOL vmlinux 0x318cadb1 reciprocal_value +EXPORT_SYMBOL vmlinux 0x318d3043 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x3190fa8e xfrm_lookup +EXPORT_SYMBOL vmlinux 0x3191a21f iunique +EXPORT_SYMBOL vmlinux 0x31990384 tty_lock +EXPORT_SYMBOL vmlinux 0x319e0726 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x31b31f5c csum_partial_copy_nocheck +EXPORT_SYMBOL vmlinux 0x31b40e47 __dst_free +EXPORT_SYMBOL vmlinux 0x31c04d0a writeback_in_progress +EXPORT_SYMBOL vmlinux 0x31d826fa sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x31e76b57 recalibrate_cpu_khz +EXPORT_SYMBOL vmlinux 0x31f17565 unregister_filesystem +EXPORT_SYMBOL vmlinux 0x31f2dc85 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x3202435a wrmsr_safe_regs +EXPORT_SYMBOL vmlinux 0x3204d506 d_obtain_alias +EXPORT_SYMBOL vmlinux 0x3217acdf simple_release_fs +EXPORT_SYMBOL vmlinux 0x3227f60e netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x3228dfb7 blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0x322ca228 datagram_poll +EXPORT_SYMBOL vmlinux 0x322f48d4 abx500_dump_all_banks +EXPORT_SYMBOL vmlinux 0x3258a53b bdget +EXPORT_SYMBOL vmlinux 0x326425ca pci_unmap_biosrom +EXPORT_SYMBOL vmlinux 0x3276f7db input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x3278eebf ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x327b149e key_alloc +EXPORT_SYMBOL vmlinux 0x32955b5c __break_lease +EXPORT_SYMBOL vmlinux 0x329794c8 __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x32a7907e sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x32b21125 blk_mq_run_queues +EXPORT_SYMBOL vmlinux 0x32debb16 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x32e6991c scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x32eeaded _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0x33073695 from_kuid +EXPORT_SYMBOL vmlinux 0x331d107f skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x332315a3 agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0x332608a8 skb_queue_head +EXPORT_SYMBOL vmlinux 0x333cb37c __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x338ef600 freeze_super +EXPORT_SYMBOL vmlinux 0x33a1331e blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33ba5cd4 param_ops_bool +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33d7d308 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x33e9c87f write_one_page +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33fcf44a __kfifo_out_r +EXPORT_SYMBOL vmlinux 0x340ef5c7 mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0x340f5300 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x341583a5 scsi_calculate_bounce_limit +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x341cbed2 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x34339df7 load_nls_default +EXPORT_SYMBOL vmlinux 0x344e9af4 __idr_get_new_above +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x347eb9bd param_set_bool +EXPORT_SYMBOL vmlinux 0x3493b9c5 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34bf85b6 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x34c129f6 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x34e21dc0 register_sysctl +EXPORT_SYMBOL vmlinux 0x34e6a425 ip6_xmit +EXPORT_SYMBOL vmlinux 0x34f22f94 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x3518eda8 kfree_put_link +EXPORT_SYMBOL vmlinux 0x35225ea3 down_write_trylock +EXPORT_SYMBOL vmlinux 0x3538df59 nla_append +EXPORT_SYMBOL vmlinux 0x3539f11b match_strlcpy +EXPORT_SYMBOL vmlinux 0x353da25a max8998_read_reg +EXPORT_SYMBOL vmlinux 0x353e21e3 acpi_bios_warning +EXPORT_SYMBOL vmlinux 0x354c5945 netpoll_setup +EXPORT_SYMBOL vmlinux 0x355cba30 keyring_search +EXPORT_SYMBOL vmlinux 0x356cc56b pci_enable_obff +EXPORT_SYMBOL vmlinux 0x35738b7c gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0x3586fb9d __pci_register_driver +EXPORT_SYMBOL vmlinux 0x358899ee get_tz_trend +EXPORT_SYMBOL vmlinux 0x35c5582c ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x35d33d23 override_creds +EXPORT_SYMBOL vmlinux 0x35defc50 iov_iter_advance +EXPORT_SYMBOL vmlinux 0x35ed4c0e mdiobus_write +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x360b8d16 x86_cpu_to_apicid +EXPORT_SYMBOL vmlinux 0x3612b07c register_nls +EXPORT_SYMBOL vmlinux 0x365b3e26 set_device_ro +EXPORT_SYMBOL vmlinux 0x3686ea09 spi_print_msg +EXPORT_SYMBOL vmlinux 0x3689face inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0x369e1115 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x36baa8e3 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36dc89ac input_register_device +EXPORT_SYMBOL vmlinux 0x36e360e3 __hw_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x3701a196 csum_partial_copy_to_user +EXPORT_SYMBOL vmlinux 0x37180043 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x37270618 netlink_broadcast +EXPORT_SYMBOL vmlinux 0x37282bed vfs_setpos +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x37499148 spi_dv_device +EXPORT_SYMBOL vmlinux 0x375760a0 scsi_execute +EXPORT_SYMBOL vmlinux 0x3770df82 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x3776e136 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x3782e28d pskb_expand_head +EXPORT_SYMBOL vmlinux 0x378e981b generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x37997434 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x379be746 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x37a4c0f6 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37d4a77a agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0x37db8f19 dmi_get_date +EXPORT_SYMBOL vmlinux 0x37f1ccf3 scsi_finish_command +EXPORT_SYMBOL vmlinux 0x37f6e0da inet6_protos +EXPORT_SYMBOL vmlinux 0x37fa78cc kern_path_create +EXPORT_SYMBOL vmlinux 0x38019f59 kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0x38099e13 wrmsrl_on_cpu +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x381e57c3 xfrm_input +EXPORT_SYMBOL vmlinux 0x382685ec zerocopy_sg_from_iovec +EXPORT_SYMBOL vmlinux 0x38420320 __pci_enable_wake +EXPORT_SYMBOL vmlinux 0x3873c5f5 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388f9128 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x3897568f swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x389bfe0d rtc_lock +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a7dae3 km_state_notify +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38b8d5b1 input_set_keycode +EXPORT_SYMBOL vmlinux 0x38c2a411 pci_fixup_device +EXPORT_SYMBOL vmlinux 0x38cd5cac __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x38f33bed dump_fpu +EXPORT_SYMBOL vmlinux 0x390080a6 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x3908e2f0 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x39275435 tty_lock_pair +EXPORT_SYMBOL vmlinux 0x3928efe9 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x392fcb8f unregister_exec_domain +EXPORT_SYMBOL vmlinux 0x39352e29 lro_flush_all +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x3955fcf6 __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x395c58b1 cdrom_check_events +EXPORT_SYMBOL vmlinux 0x398892d4 generic_readlink +EXPORT_SYMBOL vmlinux 0x399ad043 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0x39a055f3 acpi_remove_gpe_handler +EXPORT_SYMBOL vmlinux 0x39bb372f dq_data_lock +EXPORT_SYMBOL vmlinux 0x39bbb68c scsi_adjust_queue_depth +EXPORT_SYMBOL vmlinux 0x39c959f7 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x3a08475f platform_thermal_notify +EXPORT_SYMBOL vmlinux 0x3a0dbb94 pnp_is_active +EXPORT_SYMBOL vmlinux 0x3a20ff73 __crc32c_le +EXPORT_SYMBOL vmlinux 0x3a32839e intel_gtt_chipset_flush +EXPORT_SYMBOL vmlinux 0x3a4cff6b PDE_DATA +EXPORT_SYMBOL vmlinux 0x3a56483a jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0x3a69e55f nf_hook_slow +EXPORT_SYMBOL vmlinux 0x3a6c780f blk_fetch_request +EXPORT_SYMBOL vmlinux 0x3a7a9170 bio_integrity_tag_size +EXPORT_SYMBOL vmlinux 0x3a87b3a4 neigh_table_init +EXPORT_SYMBOL vmlinux 0x3a8a28f5 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3a9d5ca3 pnp_register_card_driver +EXPORT_SYMBOL vmlinux 0x3a9e9c4d tty_port_close_end +EXPORT_SYMBOL vmlinux 0x3b03fb79 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x3b327534 vlan_untag +EXPORT_SYMBOL vmlinux 0x3b4ceb4a up_write +EXPORT_SYMBOL vmlinux 0x3b6d1986 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x3b877b51 unlock_page +EXPORT_SYMBOL vmlinux 0x3bc2d766 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x3bd1b1f6 msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x3bd9e9ee finish_no_open +EXPORT_SYMBOL vmlinux 0x3beb690b lg_local_unlock +EXPORT_SYMBOL vmlinux 0x3bef03b9 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x3bef79ba dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x3c00efdb buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0x3c05de41 current_task +EXPORT_SYMBOL vmlinux 0x3c0d8b96 brioctl_set +EXPORT_SYMBOL vmlinux 0x3c101ac2 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x3c33d111 create_empty_buffers +EXPORT_SYMBOL vmlinux 0x3c612c72 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x3c64ef15 amd_northbridges +EXPORT_SYMBOL vmlinux 0x3c674c59 serio_unregister_port +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c9d1211 string_get_size +EXPORT_SYMBOL vmlinux 0x3cd64fc1 register_key_type +EXPORT_SYMBOL vmlinux 0x3cdecc06 xfrm_register_km +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3cee65cc serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x3cf0a255 __i2c_transfer +EXPORT_SYMBOL vmlinux 0x3cf5f158 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x3d04bdc3 kset_unregister +EXPORT_SYMBOL vmlinux 0x3d0b6bd3 would_dump +EXPORT_SYMBOL vmlinux 0x3d0c1a2b inet6_release +EXPORT_SYMBOL vmlinux 0x3d0f25d2 __destroy_inode +EXPORT_SYMBOL vmlinux 0x3d1a53c8 led_blink_set +EXPORT_SYMBOL vmlinux 0x3d22ae50 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x3d447681 i8042_remove_filter +EXPORT_SYMBOL vmlinux 0x3d5844b3 strnicmp +EXPORT_SYMBOL vmlinux 0x3d5eed6f mmc_request_done +EXPORT_SYMBOL vmlinux 0x3d613183 bio_split +EXPORT_SYMBOL vmlinux 0x3d62bcf1 amd_iommu_domain_enable_v2 +EXPORT_SYMBOL vmlinux 0x3d71c225 eth_header_cache +EXPORT_SYMBOL vmlinux 0x3d7bf498 follow_pfn +EXPORT_SYMBOL vmlinux 0x3d7c1ed7 msrs_alloc +EXPORT_SYMBOL vmlinux 0x3d89bfbc fifo_set_limit +EXPORT_SYMBOL vmlinux 0x3d9ee9f0 clear_page +EXPORT_SYMBOL vmlinux 0x3da171f9 pci_mem_start +EXPORT_SYMBOL vmlinux 0x3da62407 dma_set_mask +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dd61e18 serio_close +EXPORT_SYMBOL vmlinux 0x3de5fce1 blk_run_queue +EXPORT_SYMBOL vmlinux 0x3df1058c compat_nf_setsockopt +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e079e6c dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x3e08f535 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x3e2ae3a8 acpi_release_global_lock +EXPORT_SYMBOL vmlinux 0x3e523c98 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e9c0f85 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x3ea0773c ida_get_new_above +EXPORT_SYMBOL vmlinux 0x3ea27e17 send_sig +EXPORT_SYMBOL vmlinux 0x3ece3021 devfreq_interval_update +EXPORT_SYMBOL vmlinux 0x3ed17c65 scsi_print_result +EXPORT_SYMBOL vmlinux 0x3ed63055 zlib_inflateReset +EXPORT_SYMBOL vmlinux 0x3edbf90f netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f372397 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x3f4149d6 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f4e5169 netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x3f516c7d pnp_unregister_card_driver +EXPORT_SYMBOL vmlinux 0x3f587e6b devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x3f6074e2 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x3f71a9a8 skb_split +EXPORT_SYMBOL vmlinux 0x3f71faa1 mempool_create +EXPORT_SYMBOL vmlinux 0x3f922490 __bforget +EXPORT_SYMBOL vmlinux 0x3fbd8b02 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x3fd7c335 bdput +EXPORT_SYMBOL vmlinux 0x3fe2ccbe memweight +EXPORT_SYMBOL vmlinux 0x3fe667dd agp_allocate_memory +EXPORT_SYMBOL vmlinux 0x3fe74b54 skb_checksum_help +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3fef6297 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x3ff62317 local_bh_disable +EXPORT_SYMBOL vmlinux 0x4008cbd9 agp_free_memory +EXPORT_SYMBOL vmlinux 0x400c4ba5 napi_gro_receive +EXPORT_SYMBOL vmlinux 0x401c4460 d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0x40256835 complete_all +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x4038e805 bio_reset +EXPORT_SYMBOL vmlinux 0x403964d5 irq_set_chip +EXPORT_SYMBOL vmlinux 0x40451dec vga_switcheroo_unregister_client +EXPORT_SYMBOL vmlinux 0x405af52d tcf_hash_release +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x407d7112 sk_run_filter +EXPORT_SYMBOL vmlinux 0x4085be91 pci_select_bars +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x4097fa45 acpi_read_bit_register +EXPORT_SYMBOL vmlinux 0x409873e3 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40c89d46 acpi_get_table_by_index +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL vmlinux 0x40fceaae dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x4118b24b blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x4138a674 __module_get +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x4151cffd mmc_of_parse +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x41a969f5 ip_fragment +EXPORT_SYMBOL vmlinux 0x41d3c3c8 __pskb_copy +EXPORT_SYMBOL vmlinux 0x41e16e3f mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x41ffed2e mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x42018f67 mdiobus_scan +EXPORT_SYMBOL vmlinux 0x4211c3c1 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x421aa74d n_tty_compat_ioctl_helper +EXPORT_SYMBOL vmlinux 0x42223058 bio_init +EXPORT_SYMBOL vmlinux 0x42350e8d ucs2_strlen +EXPORT_SYMBOL vmlinux 0x423b776a ipmi_create_user +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x42664c0a inet_frags_init +EXPORT_SYMBOL vmlinux 0x42844104 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x4292db92 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x42977ad4 __hw_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42b9660f dev_get_by_name +EXPORT_SYMBOL vmlinux 0x42bdac49 vga_tryget +EXPORT_SYMBOL vmlinux 0x42c0cd01 phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0x42c8de35 ioremap_nocache +EXPORT_SYMBOL vmlinux 0x42d36c79 ipmi_smi_watcher_register +EXPORT_SYMBOL vmlinux 0x42e232cc pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x430ecb95 generic_fillattr +EXPORT_SYMBOL vmlinux 0x431623a2 genl_notify +EXPORT_SYMBOL vmlinux 0x43261dca _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0x433bcb32 clk_get +EXPORT_SYMBOL vmlinux 0x43412b99 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x4344e2f1 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x436cc825 revert_creds +EXPORT_SYMBOL vmlinux 0x437a3174 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x438335e3 fixed_size_llseek +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x43a8b222 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0x43b0c9c3 preempt_schedule +EXPORT_SYMBOL vmlinux 0x43cdd4fa pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x44099496 pci_disable_ltr +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x441eecd4 insert_inode_locked +EXPORT_SYMBOL vmlinux 0x4432ea82 sk_alloc +EXPORT_SYMBOL vmlinux 0x446267a0 genlmsg_put +EXPORT_SYMBOL vmlinux 0x44636b88 __ps2_command +EXPORT_SYMBOL vmlinux 0x44648adb bdev_read_only +EXPORT_SYMBOL vmlinux 0x447655e8 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0x4476e9e2 panic_notifier_list +EXPORT_SYMBOL vmlinux 0x448d254c sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0x448eac3e kmemdup +EXPORT_SYMBOL vmlinux 0x449ad0a7 memcmp +EXPORT_SYMBOL vmlinux 0x449c2faa submit_bio_wait +EXPORT_SYMBOL vmlinux 0x44a81d5f acpi_evaluate_object +EXPORT_SYMBOL vmlinux 0x44aaf30f tsc_khz +EXPORT_SYMBOL vmlinux 0x44d4c311 scsi_cmd_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x44de0922 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x44e6ecc8 ida_simple_get +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44e9fd65 dev_close +EXPORT_SYMBOL vmlinux 0x44eaf835 generic_file_aio_read +EXPORT_SYMBOL vmlinux 0x44ff9c39 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x45044497 percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x45081703 ec_get_handle +EXPORT_SYMBOL vmlinux 0x451828f8 nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0x452a5782 ipmi_smi_add_proc_entry +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x456194c9 mmc_cache_ctrl +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x458c2996 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x45a5c01f user_revoke +EXPORT_SYMBOL vmlinux 0x45a6be13 cpufreq_sysfs_remove_file +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45ba5804 unregister_shrinker +EXPORT_SYMBOL vmlinux 0x45c92723 idr_destroy +EXPORT_SYMBOL vmlinux 0x45cb23b7 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x45ed256c kmem_cache_create +EXPORT_SYMBOL vmlinux 0x461110d3 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x461ac773 kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x4629334c __preempt_count +EXPORT_SYMBOL vmlinux 0x464418c7 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x464863ec udp_sendmsg +EXPORT_SYMBOL vmlinux 0x464ae2c8 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x464b7ea1 netif_device_detach +EXPORT_SYMBOL vmlinux 0x465a5620 free_buffer_head +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46608fa0 getnstimeofday +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x46a362e3 pnp_start_dev +EXPORT_SYMBOL vmlinux 0x46c47fb6 __node_distance +EXPORT_SYMBOL vmlinux 0x46dd36c3 neigh_update +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x470f0c90 blk_start_request +EXPORT_SYMBOL vmlinux 0x47278ff2 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x474592d5 mfd_add_devices +EXPORT_SYMBOL vmlinux 0x474ec01f dev_crit +EXPORT_SYMBOL vmlinux 0x47533852 netdev_emerg +EXPORT_SYMBOL vmlinux 0x475f010b acpi_purge_cached_objects +EXPORT_SYMBOL vmlinux 0x4777e811 inet6_del_protocol +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 0x4797d0e0 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47a32703 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x47ad4a98 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x47b04e4a phy_register_fixup +EXPORT_SYMBOL vmlinux 0x47b381ec vc_resize +EXPORT_SYMBOL vmlinux 0x47b3f862 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0x47b6a10f ftrace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x47b8c4f6 locks_remove_posix +EXPORT_SYMBOL vmlinux 0x47baea06 neigh_lookup +EXPORT_SYMBOL vmlinux 0x47bcf84c param_set_ulong +EXPORT_SYMBOL vmlinux 0x47c8baf4 param_ops_uint +EXPORT_SYMBOL vmlinux 0x47e57d7f pci_get_subsys +EXPORT_SYMBOL vmlinux 0x48034724 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x480ea2e3 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x48193639 acpi_lid_open +EXPORT_SYMBOL vmlinux 0x481cb9ab acpi_enter_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x481dd9a7 set_pages_array_uc +EXPORT_SYMBOL vmlinux 0x482a2a49 param_set_charp +EXPORT_SYMBOL vmlinux 0x482b3c08 mpage_writepages +EXPORT_SYMBOL vmlinux 0x4837ba65 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0x4841bdee strnchr +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x4859d8be elv_add_request +EXPORT_SYMBOL vmlinux 0x485a4c11 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x487c79f2 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x487d7c9e acpi_lock_ac_dir +EXPORT_SYMBOL vmlinux 0x4880ef06 block_truncate_page +EXPORT_SYMBOL vmlinux 0x488a3492 blk_stop_queue +EXPORT_SYMBOL vmlinux 0x489000c0 pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x489bd30d pcie_set_mps +EXPORT_SYMBOL vmlinux 0x48c5f260 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x48d50e79 amd_iommu_register_ppr_notifier +EXPORT_SYMBOL vmlinux 0x48dfb368 pci_enable_msi_block +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x4922e9fd setattr_copy +EXPORT_SYMBOL vmlinux 0x4934a210 pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0x4944ae66 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x494e3393 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x4951ab3a compat_sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x49790082 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x49920bcc padata_add_cpu +EXPORT_SYMBOL vmlinux 0x49a5747d pid_task +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49b163b8 acpi_bus_scan +EXPORT_SYMBOL vmlinux 0x49b6f1d0 write_cache_pages +EXPORT_SYMBOL vmlinux 0x49be61df security_mmap_file +EXPORT_SYMBOL vmlinux 0x49db9f53 elevator_init +EXPORT_SYMBOL vmlinux 0x49df7f72 x86_hyper_xen_hvm +EXPORT_SYMBOL vmlinux 0x49f286ee proto_unregister +EXPORT_SYMBOL vmlinux 0x49f937aa posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x4a03e7bb textsearch_unregister +EXPORT_SYMBOL vmlinux 0x4a15747d md_write_start +EXPORT_SYMBOL vmlinux 0x4a1d6813 register_netdevice +EXPORT_SYMBOL vmlinux 0x4a358252 __bitmap_subset +EXPORT_SYMBOL vmlinux 0x4a5b734e ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x4a6cb7ce sk_reset_timer +EXPORT_SYMBOL vmlinux 0x4a80abbe netif_receive_skb +EXPORT_SYMBOL vmlinux 0x4aad52d7 mempool_free +EXPORT_SYMBOL vmlinux 0x4ac1f0da phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x4ac9fe20 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4adaff42 dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x4ae49305 genphy_suspend +EXPORT_SYMBOL vmlinux 0x4aed6bcb put_page +EXPORT_SYMBOL vmlinux 0x4af68048 scsi_reset_provider +EXPORT_SYMBOL vmlinux 0x4af6898a pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b03ab9c arp_xmit +EXPORT_SYMBOL vmlinux 0x4b06781a unregister_quota_format +EXPORT_SYMBOL vmlinux 0x4b06d2e7 complete +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b1baf68 acpi_unlock_ac_dir +EXPORT_SYMBOL vmlinux 0x4b2c9eef phy_attach +EXPORT_SYMBOL vmlinux 0x4b33d392 scsi_device_put +EXPORT_SYMBOL vmlinux 0x4b348930 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x4b3f7188 bioset_free +EXPORT_SYMBOL vmlinux 0x4b5b5696 bio_clone_bioset +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b605df9 skb_push +EXPORT_SYMBOL vmlinux 0x4b6892f8 __dquot_free_space +EXPORT_SYMBOL vmlinux 0x4b7e0c1f pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x4bb3f2bd skb_copy_datagram_iovec +EXPORT_SYMBOL vmlinux 0x4bb6a82c led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0x4bc07307 blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x4bc26cb9 agp_backend_release +EXPORT_SYMBOL vmlinux 0x4bc2924a do_truncate +EXPORT_SYMBOL vmlinux 0x4bc74d21 tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x4bd5896e xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x4be92d1b vsc824x_add_skew +EXPORT_SYMBOL vmlinux 0x4bee7e93 fasync_helper +EXPORT_SYMBOL vmlinux 0x4bf2ecb2 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x4c0111d9 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x4c1182cb bitmap_scnprintf +EXPORT_SYMBOL vmlinux 0x4c2b6ee3 clk_add_alias +EXPORT_SYMBOL vmlinux 0x4c4fef19 kernel_stack +EXPORT_SYMBOL vmlinux 0x4c53de85 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x4c566afe jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL vmlinux 0x4c9d28b0 phys_base +EXPORT_SYMBOL vmlinux 0x4ca48a1a netif_rx_ni +EXPORT_SYMBOL vmlinux 0x4ca9669f scnprintf +EXPORT_SYMBOL vmlinux 0x4cbbd171 __bitmap_weight +EXPORT_SYMBOL vmlinux 0x4cd547b0 starget_for_each_device +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4ce86a15 blk_make_request +EXPORT_SYMBOL vmlinux 0x4cffeb0e tcp_init_sock +EXPORT_SYMBOL vmlinux 0x4d1023f8 mempool_resize +EXPORT_SYMBOL vmlinux 0x4d1136e0 dev_emerg +EXPORT_SYMBOL vmlinux 0x4d1a4f75 inet_sendmsg +EXPORT_SYMBOL vmlinux 0x4d23e86b rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x4d3f5e39 bio_copy_kern +EXPORT_SYMBOL vmlinux 0x4d8786f0 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x4d8d8c84 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4da9af3d register_qdisc +EXPORT_SYMBOL vmlinux 0x4daa360a acpi_resource_to_address64 +EXPORT_SYMBOL vmlinux 0x4db6352d uart_resume_port +EXPORT_SYMBOL vmlinux 0x4dd7e986 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4e12e1ac blk_end_request_all +EXPORT_SYMBOL vmlinux 0x4e3453ef kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e7626c6 __get_page_tail +EXPORT_SYMBOL vmlinux 0x4e88c257 sock_i_uid +EXPORT_SYMBOL vmlinux 0x4ea25709 dql_reset +EXPORT_SYMBOL vmlinux 0x4ea8f111 block_write_full_page_endio +EXPORT_SYMBOL vmlinux 0x4ebc6fe1 bio_integrity_set_tag +EXPORT_SYMBOL vmlinux 0x4ed5f873 netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x4edd72f7 block_all_signals +EXPORT_SYMBOL vmlinux 0x4ee78211 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0x4ee9dd1c tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x4f1c98cc devfreq_resume_device +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f3e07f6 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x4f476e96 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x4f4b02e5 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x4f5bf613 locks_copy_lock +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f6b400b _copy_from_user +EXPORT_SYMBOL vmlinux 0x4f783f30 acpi_read +EXPORT_SYMBOL vmlinux 0x4f830b30 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x4f8b5ddb _copy_to_user +EXPORT_SYMBOL vmlinux 0x4f94f1ba idr_get_next +EXPORT_SYMBOL vmlinux 0x4f9f8446 inet_frag_kill +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4fea2681 vm_mmap +EXPORT_SYMBOL vmlinux 0x4ffd62b2 search_binary_handler +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x5027a1c9 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x502d4c04 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x503b9e49 scsi_register_interface +EXPORT_SYMBOL vmlinux 0x50478849 tty_unlock +EXPORT_SYMBOL vmlinux 0x50529870 acpi_get_gpe_status +EXPORT_SYMBOL vmlinux 0x5064acff block_invalidatepage +EXPORT_SYMBOL vmlinux 0x506c434e max8925_reg_read +EXPORT_SYMBOL vmlinux 0x507a4ad2 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x5082d730 inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x509b64ea acpi_has_method +EXPORT_SYMBOL vmlinux 0x50a90e8d bsearch +EXPORT_SYMBOL vmlinux 0x50b9d281 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x50d2592d hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0x50d68377 arch_phys_wc_del +EXPORT_SYMBOL vmlinux 0x50e754cb blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x510eadc2 agp_enable +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x511ab427 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x512b7c7f proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x515b2c9a simple_readpage +EXPORT_SYMBOL vmlinux 0x5182420f ida_pre_get +EXPORT_SYMBOL vmlinux 0x51d12d4e acpi_pci_disabled +EXPORT_SYMBOL vmlinux 0x51d5a4ae make_kgid +EXPORT_SYMBOL vmlinux 0x51d8be4e mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x51dce73b xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x52006d56 acpi_walk_resources +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 0x52188f58 inode_permission +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x5245f6a4 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL vmlinux 0x525e026f acpi_os_unmap_generic_address +EXPORT_SYMBOL vmlinux 0x52706841 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x527fd3dd blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0x52a0752e pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x52c6a221 dev_uc_init +EXPORT_SYMBOL vmlinux 0x52cbb014 lockref_get +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x530bae6b __quota_error +EXPORT_SYMBOL vmlinux 0x531b604e __virt_addr_valid +EXPORT_SYMBOL vmlinux 0x53272b0d tcp_gro_receive +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x5336da98 ppp_input +EXPORT_SYMBOL vmlinux 0x53568828 scsi_dma_map +EXPORT_SYMBOL vmlinux 0x535f2c0f pci_enable_device +EXPORT_SYMBOL vmlinux 0x536cc847 memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x537042ad xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x5377e556 hex2bin +EXPORT_SYMBOL vmlinux 0x5391d972 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x53a8cca6 tcf_generic_walker +EXPORT_SYMBOL vmlinux 0x53b62968 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x53b9c27e ata_link_printk +EXPORT_SYMBOL vmlinux 0x53c6745c mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x53c95c0c mmc_gpio_free_cd +EXPORT_SYMBOL vmlinux 0x53ca81e9 mnt_unpin +EXPORT_SYMBOL vmlinux 0x53f6ffbc wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0x53fed729 pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0x5402680b lockref_mark_dead +EXPORT_SYMBOL vmlinux 0x54059a2a amd_iommu_pc_get_max_counters +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 0x544b0c11 acpi_lid_notifier_register +EXPORT_SYMBOL vmlinux 0x545ff3e8 tty_port_close +EXPORT_SYMBOL vmlinux 0x5467cdfc d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54ce50ed tcp_close +EXPORT_SYMBOL vmlinux 0x54d49454 swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0x54e1e42d mmc_hw_reset_check +EXPORT_SYMBOL vmlinux 0x54e3cc3b param_get_int +EXPORT_SYMBOL vmlinux 0x54e4d0cf neigh_connected_output +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54efb5d6 cpu_number +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x55211e48 generic_file_remap_pages +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x55671680 lg_lock_init +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x556c2740 hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x5578ad84 neigh_parms_release +EXPORT_SYMBOL vmlinux 0x55848ed9 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x5594296d bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x5594be03 bitmap_remap +EXPORT_SYMBOL vmlinux 0x55a10ea0 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x55ccd4d2 hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0x55d2e3a7 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x55d9edab d_genocide +EXPORT_SYMBOL vmlinux 0x55f4e08f module_layout +EXPORT_SYMBOL vmlinux 0x55f5019b __kmalloc_node +EXPORT_SYMBOL vmlinux 0x56012ae3 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x560ffb71 tcf_hash_lookup +EXPORT_SYMBOL vmlinux 0x5614b010 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x5642793a radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x566512c2 sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0x566bc63d blk_mq_free_single_hw_queue +EXPORT_SYMBOL vmlinux 0x567495bd d_prune_aliases +EXPORT_SYMBOL vmlinux 0x567c616f poll_initwait +EXPORT_SYMBOL vmlinux 0x56921f4c tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x569ae5ad max8925_set_bits +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56e6439e security_dentry_init_security +EXPORT_SYMBOL vmlinux 0x5706085b cdrom_release +EXPORT_SYMBOL vmlinux 0x5706093c phy_driver_register +EXPORT_SYMBOL vmlinux 0x5715e1fb elv_abort_queue +EXPORT_SYMBOL vmlinux 0x57288238 kernel_sendpage +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x574165d7 loop_backing_file +EXPORT_SYMBOL vmlinux 0x5743114e rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x5792f848 strlcpy +EXPORT_SYMBOL vmlinux 0x57a65237 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x57a6ccd0 down_read +EXPORT_SYMBOL vmlinux 0x57b9c897 devm_clk_get +EXPORT_SYMBOL vmlinux 0x57bc8e9f mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x57c18169 disk_stack_limits +EXPORT_SYMBOL vmlinux 0x57c59b11 rtnl_notify +EXPORT_SYMBOL vmlinux 0x57e679bc vfs_mkdir +EXPORT_SYMBOL vmlinux 0x57f0f131 pci_biosrom_size +EXPORT_SYMBOL vmlinux 0x57f5ddba dev_uc_del +EXPORT_SYMBOL vmlinux 0x58115d30 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x58332023 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x584738f9 rdmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x58574dba blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x585874c6 blk_get_request +EXPORT_SYMBOL vmlinux 0x5860aad4 add_wait_queue +EXPORT_SYMBOL vmlinux 0x586103be acpi_setup_gpe_for_wake +EXPORT_SYMBOL vmlinux 0x586f3520 dquot_destroy +EXPORT_SYMBOL vmlinux 0x58734674 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x58a01404 blk_init_tags +EXPORT_SYMBOL vmlinux 0x58a16357 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x58d62046 mmc_put_card +EXPORT_SYMBOL vmlinux 0x590a0f20 scsi_register +EXPORT_SYMBOL vmlinux 0x59258980 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x5967c929 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x59843a35 sync_inode +EXPORT_SYMBOL vmlinux 0x5988c6c6 pci_bus_put +EXPORT_SYMBOL vmlinux 0x5991219c cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x599a3dd6 _raw_write_unlock_irq +EXPORT_SYMBOL vmlinux 0x599e168b cdev_init +EXPORT_SYMBOL vmlinux 0x59a5c42f blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0x59b18e31 cdev_del +EXPORT_SYMBOL vmlinux 0x59bc9609 acpi_write_bit_register +EXPORT_SYMBOL vmlinux 0x59bffa0d lro_flush_pkt +EXPORT_SYMBOL vmlinux 0x59ca930a netdev_info +EXPORT_SYMBOL vmlinux 0x59e7071c twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x59eb9cfa mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x59f04f37 fb_validate_mode +EXPORT_SYMBOL vmlinux 0x5a15a516 tcp_read_sock +EXPORT_SYMBOL vmlinux 0x5a4896a8 __put_user_2 +EXPORT_SYMBOL vmlinux 0x5a5536c2 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x5a59f1d5 pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x5a5c223b udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x5a79ca0c sg_miter_start +EXPORT_SYMBOL vmlinux 0x5a7f985f elevator_alloc +EXPORT_SYMBOL vmlinux 0x5a873925 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x5a921311 strncmp +EXPORT_SYMBOL vmlinux 0x5a945a85 vga_client_register +EXPORT_SYMBOL vmlinux 0x5aa76215 neigh_table_clear +EXPORT_SYMBOL vmlinux 0x5ac21822 irq_stat +EXPORT_SYMBOL vmlinux 0x5ac376a5 acpi_install_fixed_event_handler +EXPORT_SYMBOL vmlinux 0x5ace2bb7 generic_permission +EXPORT_SYMBOL vmlinux 0x5ae50279 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x5aeb145f complete_and_exit +EXPORT_SYMBOL vmlinux 0x5afefa95 serio_rescan +EXPORT_SYMBOL vmlinux 0x5b271d86 acpi_video_dmi_promote_vendor +EXPORT_SYMBOL vmlinux 0x5b424341 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0x5b4964d1 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x5b56860c vm_munmap +EXPORT_SYMBOL vmlinux 0x5b67dc09 pci_map_rom +EXPORT_SYMBOL vmlinux 0x5b6ec851 netif_rx +EXPORT_SYMBOL vmlinux 0x5b751c61 blk_delay_queue +EXPORT_SYMBOL vmlinux 0x5b7c1166 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x5b805917 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x5ba173c2 cad_pid +EXPORT_SYMBOL vmlinux 0x5ba440c6 pci_get_device +EXPORT_SYMBOL vmlinux 0x5bab7df2 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x5bc10524 printk_emit +EXPORT_SYMBOL vmlinux 0x5bc8d583 copy_from_user_overflow +EXPORT_SYMBOL vmlinux 0x5bcbe4b0 amd_iommu_device_info +EXPORT_SYMBOL vmlinux 0x5bdf705e nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0x5be258a1 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x5bf05a70 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x5c1b31d8 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x5c355f09 remap_pfn_range +EXPORT_SYMBOL vmlinux 0x5c3edd59 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x5c42a66f grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x5c4e39ab arp_find +EXPORT_SYMBOL vmlinux 0x5c651e2a inetdev_by_index +EXPORT_SYMBOL vmlinux 0x5c79127f blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x5c89b2f5 init_net +EXPORT_SYMBOL vmlinux 0x5c8b5ce8 prepare_to_wait +EXPORT_SYMBOL vmlinux 0x5c8c3aeb inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x5cb908ad pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5d16d328 bio_map_user +EXPORT_SYMBOL vmlinux 0x5d1c84e5 block_write_begin +EXPORT_SYMBOL vmlinux 0x5d2f58e4 __block_write_begin +EXPORT_SYMBOL vmlinux 0x5d35a4b1 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x5d370b6a scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x5d37bc64 bdi_destroy +EXPORT_SYMBOL vmlinux 0x5d3a94ea nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x5d40f2b7 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x5d41c87c param_ops_charp +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d5b5a16 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x5d610f1e __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x5d74dbcf pnp_range_reserved +EXPORT_SYMBOL vmlinux 0x5d8c5283 I_BDEV +EXPORT_SYMBOL vmlinux 0x5d978f70 scm_detach_fds +EXPORT_SYMBOL vmlinux 0x5da6b4ec mmc_can_trim +EXPORT_SYMBOL vmlinux 0x5db56187 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x5dc96339 skb_unlink +EXPORT_SYMBOL vmlinux 0x5dc999b5 mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x5de31f44 __pagevec_release +EXPORT_SYMBOL vmlinux 0x5e15d54c ida_init +EXPORT_SYMBOL vmlinux 0x5e3be97a n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x5e56cad0 inode_set_bytes +EXPORT_SYMBOL vmlinux 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL vmlinux 0x5e8fa493 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ee207e7 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f3c8f5c mmc_assume_removable +EXPORT_SYMBOL vmlinux 0x5f3f49b1 __lock_page +EXPORT_SYMBOL vmlinux 0x5f4d7a82 page_put_link +EXPORT_SYMBOL vmlinux 0x5f557703 acpi_evaluate_hotplug_ost +EXPORT_SYMBOL vmlinux 0x5f58f676 flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x5f6cb888 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x5f7ff9b1 __elv_add_request +EXPORT_SYMBOL vmlinux 0x5f81b95c __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x5f9297ff vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x5fa41183 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0x5fbd4f08 flush_signals +EXPORT_SYMBOL vmlinux 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5ff104eb have_submounts +EXPORT_SYMBOL vmlinux 0x5ff33203 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x5ff42b08 acpi_video_get_capabilities +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x6018ec42 mmc_set_blockcount +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 0x60364e77 compat_ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x603658dc uart_get_divisor +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x6087f45b block_commit_write +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x609f5b35 ucs2_strnlen +EXPORT_SYMBOL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL vmlinux 0x60bd8c87 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x60dcbf0c tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60f21583 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x610992a3 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x610f8384 tcf_hash_create +EXPORT_SYMBOL vmlinux 0x612390ad netpoll_set_trap +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x614383c0 acpi_get_object_info +EXPORT_SYMBOL vmlinux 0x61538ad0 param_get_charp +EXPORT_SYMBOL vmlinux 0x6171299d sock_rfree +EXPORT_SYMBOL vmlinux 0x618911fc numa_node +EXPORT_SYMBOL vmlinux 0x619cb7dd simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x61a3c105 set_pages_x +EXPORT_SYMBOL vmlinux 0x61a7aa19 inode_init_once +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61ba96b0 call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0x61d500b4 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x61eda2b9 tty_port_destroy +EXPORT_SYMBOL vmlinux 0x61fb248a node_states +EXPORT_SYMBOL vmlinux 0x62049256 acpi_disable +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x6218a12c inode_dio_done +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 0x6266e8ee udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62748e70 acpi_set_current_resources +EXPORT_SYMBOL vmlinux 0x628121e9 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x6291cea8 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x629567e6 eth_validate_addr +EXPORT_SYMBOL vmlinux 0x62dc584b pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x62e11220 bio_unmap_user +EXPORT_SYMBOL vmlinux 0x63044a26 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x634efd9f xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x634f719c dev_mc_add +EXPORT_SYMBOL vmlinux 0x636a5691 acpi_register_ioapic +EXPORT_SYMBOL vmlinux 0x63749f7c gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x63a01291 acpi_leave_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x63a6bcc9 acpi_map_lsapic +EXPORT_SYMBOL vmlinux 0x63afa37d xen_biovec_phys_mergeable +EXPORT_SYMBOL vmlinux 0x63c803d7 md_write_end +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x63fdf3a5 udp_poll +EXPORT_SYMBOL vmlinux 0x64010bcc tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x64054eee __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x64190263 fb_class +EXPORT_SYMBOL vmlinux 0x6447e996 nf_log_unset +EXPORT_SYMBOL vmlinux 0x6449fd41 acpi_install_address_space_handler +EXPORT_SYMBOL vmlinux 0x6477952d security_path_rename +EXPORT_SYMBOL vmlinux 0x6478134c ec_burst_enable +EXPORT_SYMBOL vmlinux 0x649761b1 udp_seq_open +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64a235ef padata_do_parallel +EXPORT_SYMBOL vmlinux 0x64a804f7 pnp_register_driver +EXPORT_SYMBOL vmlinux 0x64bbc288 string_unescape +EXPORT_SYMBOL vmlinux 0x64d99ed0 skb_orphan_partial +EXPORT_SYMBOL vmlinux 0x64e1c8a3 iget5_locked +EXPORT_SYMBOL vmlinux 0x64e4533d devm_ioport_map +EXPORT_SYMBOL vmlinux 0x64eae7ad set_memory_array_wb +EXPORT_SYMBOL vmlinux 0x65057298 vc_cons +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x65247277 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x652ce9aa nla_memcmp +EXPORT_SYMBOL vmlinux 0x653c99f5 bdevname +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x654f81ff pv_cpu_ops +EXPORT_SYMBOL vmlinux 0x655ee269 d_path +EXPORT_SYMBOL vmlinux 0x655f1ab0 set_memory_array_wc +EXPORT_SYMBOL vmlinux 0x65939e89 posix_lock_file_wait +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 0x65eada89 pcie_get_mps +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x65f9eca2 alloc_fcdev +EXPORT_SYMBOL vmlinux 0x6605f97f flex_array_clear +EXPORT_SYMBOL vmlinux 0x660791a7 phy_detach +EXPORT_SYMBOL vmlinux 0x6612da4a skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x663f7cd0 acpi_install_table_handler +EXPORT_SYMBOL vmlinux 0x6658ab9a i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x6674521c sk_filter +EXPORT_SYMBOL vmlinux 0x668da8d5 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x669c739a input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x66a67dab flex_array_shrink +EXPORT_SYMBOL vmlinux 0x66cdcad5 seq_vprintf +EXPORT_SYMBOL vmlinux 0x66ce09d0 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x66cff282 path_get +EXPORT_SYMBOL vmlinux 0x66d560b3 scsi_target_resume +EXPORT_SYMBOL vmlinux 0x6716a3ec __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x671c5596 scsi_get_command +EXPORT_SYMBOL vmlinux 0x6729d3df __get_user_4 +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x675b773f ping_prot +EXPORT_SYMBOL vmlinux 0x675b8f61 param_get_string +EXPORT_SYMBOL vmlinux 0x675c09e4 lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x6779e013 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x67a0306a percpu_counter_set +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67b8bb05 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL vmlinux 0x67d396b0 rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0x67d649f6 devm_clk_put +EXPORT_SYMBOL vmlinux 0x67d8d915 inet6_add_offload +EXPORT_SYMBOL vmlinux 0x67ea5c8a pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x67f022a0 generic_ro_fops +EXPORT_SYMBOL vmlinux 0x67f6fc20 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x6844fb67 tty_devnum +EXPORT_SYMBOL vmlinux 0x6845c3d1 xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0x684ad9e5 agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0x6861247a tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x68648a0a tty_check_change +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x68aca4ad down +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68e05d57 getrawmonotonic +EXPORT_SYMBOL vmlinux 0x68f1365b vlan_vid_del +EXPORT_SYMBOL vmlinux 0x69083f34 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x690ee4d5 put_io_context +EXPORT_SYMBOL vmlinux 0x691001b5 acpi_evaluate_integer +EXPORT_SYMBOL vmlinux 0x693ad0db ___preempt_schedule_context +EXPORT_SYMBOL vmlinux 0x69460ace swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0x694f08cb dget_parent +EXPORT_SYMBOL vmlinux 0x69533445 netdev_has_any_upper_dev +EXPORT_SYMBOL vmlinux 0x6964431d dma_async_device_register +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x6988d0ca cpu_dr7 +EXPORT_SYMBOL vmlinux 0x69971f55 kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69acdf38 memcpy +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69c2c8af gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0x69d38ed9 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x69de43a7 set_pages_wb +EXPORT_SYMBOL vmlinux 0x69e27c7a bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x69fbc0a2 acpi_get_event_resources +EXPORT_SYMBOL vmlinux 0x6a01e262 d_invalidate +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a5fa363 sigprocmask +EXPORT_SYMBOL vmlinux 0x6a62ac26 acpi_processor_notify_smm +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a9f712d __nla_put +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6ad85887 acpi_enable_gpe +EXPORT_SYMBOL vmlinux 0x6add5c9a dmi_find_device +EXPORT_SYMBOL vmlinux 0x6aeb5116 dquot_quota_on +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b0935de dquot_commit_info +EXPORT_SYMBOL vmlinux 0x6b174d97 truncate_setsize +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b307eea __free_pages +EXPORT_SYMBOL vmlinux 0x6b3385f0 mount_subtree +EXPORT_SYMBOL vmlinux 0x6b352d18 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x6b413a49 pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0x6b5fe68d module_refcount +EXPORT_SYMBOL vmlinux 0x6b640864 nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6b679430 cfb_imageblit +EXPORT_SYMBOL vmlinux 0x6b7865aa mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x6b787805 textsearch_prepare +EXPORT_SYMBOL vmlinux 0x6b8220e5 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x6b87f2d6 inet_ioctl +EXPORT_SYMBOL vmlinux 0x6b8d29d3 blk_end_request +EXPORT_SYMBOL vmlinux 0x6b92f3ab pnp_device_detach +EXPORT_SYMBOL vmlinux 0x6bbc65f2 security_inode_readlink +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6beb2078 param_set_copystring +EXPORT_SYMBOL vmlinux 0x6bf0e148 unload_nls +EXPORT_SYMBOL vmlinux 0x6bf621f1 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x6bfb38f2 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x6c37f671 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0x6c389761 acpi_bus_get_private_data +EXPORT_SYMBOL vmlinux 0x6c44b57d tcf_hash_check +EXPORT_SYMBOL vmlinux 0x6c5101d8 percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c66f9c9 acpi_lock_battery_dir +EXPORT_SYMBOL vmlinux 0x6c6ae73e dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x6c6d9b16 mmc_release_host +EXPORT_SYMBOL vmlinux 0x6c6f8a0f _raw_write_unlock +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c790b52 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x6ccd2078 blkdev_fsync +EXPORT_SYMBOL vmlinux 0x6cd09925 do_splice_to +EXPORT_SYMBOL vmlinux 0x6cd8c86b __crc32c_le_combine +EXPORT_SYMBOL vmlinux 0x6cdaa982 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x6d00b7cd md_finish_reshape +EXPORT_SYMBOL vmlinux 0x6d07bacf tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x6d0aba34 wait_for_completion +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d165c40 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0x6d27ef64 __bitmap_empty +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 0x6d4baa13 ps2_command +EXPORT_SYMBOL vmlinux 0x6d567fb0 textsearch_register +EXPORT_SYMBOL vmlinux 0x6d5f9029 lock_may_write +EXPORT_SYMBOL vmlinux 0x6d6818ff gen_pool_alloc +EXPORT_SYMBOL vmlinux 0x6d6df783 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x6da9125b tty_unlock_pair +EXPORT_SYMBOL vmlinux 0x6db67ac8 wireless_spy_update +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df63cf3 iput +EXPORT_SYMBOL vmlinux 0x6e1c87c8 kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x6e1fca7f should_remove_suid +EXPORT_SYMBOL vmlinux 0x6e21489f pnp_request_card_device +EXPORT_SYMBOL vmlinux 0x6e297a62 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x6e4143bf skb_dequeue +EXPORT_SYMBOL vmlinux 0x6e4b747e fsnotify_get_group +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e7cff33 posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x6e992278 get_gendisk +EXPORT_SYMBOL vmlinux 0x6e9977a4 mmc_can_reset +EXPORT_SYMBOL vmlinux 0x6ea8cb71 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0x6eac5a6a sock_create_kern +EXPORT_SYMBOL vmlinux 0x6eae2397 netdev_lower_dev_get_private_rcu +EXPORT_SYMBOL vmlinux 0x6eb0cb43 simple_rename +EXPORT_SYMBOL vmlinux 0x6ebc5149 param_ops_long +EXPORT_SYMBOL vmlinux 0x6ec3a5da tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x6ec4aafd pci_dev_put +EXPORT_SYMBOL vmlinux 0x6ed6742e tcp_poll +EXPORT_SYMBOL vmlinux 0x6ee1e6a2 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x6f041e61 bio_map_kern +EXPORT_SYMBOL vmlinux 0x6f13edc9 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f2fb3bf blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x6f36c782 idr_find_slowpath +EXPORT_SYMBOL vmlinux 0x6f4c812f __percpu_counter_add +EXPORT_SYMBOL vmlinux 0x6f556bdb acpi_get_gpe_device +EXPORT_SYMBOL vmlinux 0x6f902471 agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0x6f902b15 agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0x6fa4c39e netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x6fb6a3f2 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fd040ec generic_segment_checks +EXPORT_SYMBOL vmlinux 0x6feb2039 acpi_write +EXPORT_SYMBOL vmlinux 0x6ff1b9fa gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x701a315b bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x7023bea8 unregister_acpi_notifier +EXPORT_SYMBOL vmlinux 0x70249bcf vfs_write +EXPORT_SYMBOL vmlinux 0x702b6c54 udplite_table +EXPORT_SYMBOL vmlinux 0x703b4352 _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x703f50ba i2c_release_client +EXPORT_SYMBOL vmlinux 0x704ad247 __ht_create_irq +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x70656f61 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x70741a57 page_readlink +EXPORT_SYMBOL vmlinux 0x707b9524 skb_copy_and_csum_datagram_iovec +EXPORT_SYMBOL vmlinux 0x707e1448 add_disk +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x707ff8b4 generic_setlease +EXPORT_SYMBOL vmlinux 0x70800ba0 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x70bc17d7 inode_wait +EXPORT_SYMBOL vmlinux 0x70d053fd try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0x70d8ab82 acpi_acquire_global_lock +EXPORT_SYMBOL vmlinux 0x70db7263 dst_release +EXPORT_SYMBOL vmlinux 0x70df52b8 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x7106d2ab pci_match_id +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x71362c9f dquot_operations +EXPORT_SYMBOL vmlinux 0x713e7e18 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x7147399e inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x7160a7d2 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x716b4dca inode_change_ok +EXPORT_SYMBOL vmlinux 0x716d0975 scsi_remove_host +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x717d3dc2 request_key +EXPORT_SYMBOL vmlinux 0x718f4f45 single_release +EXPORT_SYMBOL vmlinux 0x7198747c unregister_console +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71a7cb7e dev_mc_init +EXPORT_SYMBOL vmlinux 0x71a97082 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x71b21b46 security_inode_permission +EXPORT_SYMBOL vmlinux 0x71be07cd dcache_dir_open +EXPORT_SYMBOL vmlinux 0x71e3cecb up +EXPORT_SYMBOL vmlinux 0x71e63683 user_path_at +EXPORT_SYMBOL vmlinux 0x71ece78d vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0x71f76f2e xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x7229b69e sock_setsockopt +EXPORT_SYMBOL vmlinux 0x722a054d jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x726b05f2 sock_no_listen +EXPORT_SYMBOL vmlinux 0x7278a251 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x727b7c75 blk_register_region +EXPORT_SYMBOL vmlinux 0x728bc733 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0x7299d604 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x72a98fdb copy_user_generic_unrolled +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72bb35a7 devm_gpiod_get +EXPORT_SYMBOL vmlinux 0x72bf2140 mtrr_add +EXPORT_SYMBOL vmlinux 0x72c3376a get_super_thawed +EXPORT_SYMBOL vmlinux 0x72c38a2d genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x72cf17b2 kmem_cache_free +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72f3aa32 acpi_get_physical_device_location +EXPORT_SYMBOL vmlinux 0x72fb6428 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x73117139 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x7341498f framebuffer_release +EXPORT_SYMBOL vmlinux 0x7342c118 read_code +EXPORT_SYMBOL vmlinux 0x735a0bd5 native_io_delay +EXPORT_SYMBOL vmlinux 0x73634c4a scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x736d8e64 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x737de5e9 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x738bd085 padata_stop +EXPORT_SYMBOL vmlinux 0x73a78bc4 downgrade_write +EXPORT_SYMBOL vmlinux 0x73bec3b6 pci_set_power_state +EXPORT_SYMBOL vmlinux 0x73c71aa2 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x73dd54eb irq_fpu_usable +EXPORT_SYMBOL vmlinux 0x73ddd2bb skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x73e4318f tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x740a1b95 reserve_evntsel_nmi +EXPORT_SYMBOL vmlinux 0x740b3809 dev_open +EXPORT_SYMBOL vmlinux 0x743611ea __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x7450cf4b phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x745c40ec grab_cache_page_nowait +EXPORT_SYMBOL vmlinux 0x745ce791 do_splice_direct +EXPORT_SYMBOL vmlinux 0x7463931c get_io_context +EXPORT_SYMBOL vmlinux 0x7469fcfe radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x7471f367 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x74881d07 acpi_unlock_battery_dir +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74d3689e phy_stop +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74e6b14c sock_no_socketpair +EXPORT_SYMBOL vmlinux 0x74fe1039 register_md_personality +EXPORT_SYMBOL vmlinux 0x7514f30a skb_append +EXPORT_SYMBOL vmlinux 0x752d8981 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x7532588a alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x7543c50e free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x754d539c strlen +EXPORT_SYMBOL vmlinux 0x754dac78 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x7559b81a xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x755cdec4 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x756c2691 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0x7596dc56 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x75ab2ccd max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75f5bbb5 phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0x75fbdefd acpi_remove_address_space_handler +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x761ca48b bio_integrity_get_tag +EXPORT_SYMBOL vmlinux 0x7628f3c7 this_cpu_off +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x765ff474 crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x767dd8fd acpi_get_irq_routing_table +EXPORT_SYMBOL vmlinux 0x767ddb02 set_memory_wc +EXPORT_SYMBOL vmlinux 0x76869ac8 rdmsr_on_cpus +EXPORT_SYMBOL vmlinux 0x7690b959 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x7697e9ec security_d_instantiate +EXPORT_SYMBOL vmlinux 0x76a47825 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0x76a63ddc pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x76b58050 unregister_md_personality +EXPORT_SYMBOL vmlinux 0x76bf656d __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x76c0e4c9 splice_from_pipe_feed +EXPORT_SYMBOL vmlinux 0x76c9650f bh_submit_read +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76d8c7d9 dqget +EXPORT_SYMBOL vmlinux 0x76e77ee7 devfreq_add_device +EXPORT_SYMBOL vmlinux 0x76f1702c devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x76fb08a7 amd_iommu_unregister_ppr_notifier +EXPORT_SYMBOL vmlinux 0x7718213f blk_recount_segments +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x773eb354 cdev_add +EXPORT_SYMBOL vmlinux 0x773fa409 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x77456e0a acpi_root_dir +EXPORT_SYMBOL vmlinux 0x7747e64a dquot_transfer +EXPORT_SYMBOL vmlinux 0x77621943 get_user_pages +EXPORT_SYMBOL vmlinux 0x776d3ff8 mmc_get_card +EXPORT_SYMBOL vmlinux 0x776e1df4 simple_rmdir +EXPORT_SYMBOL vmlinux 0x77767722 nf_reinject +EXPORT_SYMBOL vmlinux 0x779501e5 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77b0af67 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x77b59239 flush_old_exec +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77d0bf7f blk_requeue_request +EXPORT_SYMBOL vmlinux 0x77dda475 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x77df0847 __set_personality +EXPORT_SYMBOL vmlinux 0x77ecac9f zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x77f53abc acpi_get_vendor_resource +EXPORT_SYMBOL vmlinux 0x77f64e2b genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x780fdfd1 intel_enable_gtt +EXPORT_SYMBOL vmlinux 0x781a2247 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x782c7203 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x784213a6 pv_lock_ops +EXPORT_SYMBOL vmlinux 0x7846af3e __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x78764f4e pv_irq_ops +EXPORT_SYMBOL vmlinux 0x7876e95c scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x787934da mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x788ebd51 compat_tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78a5fdaa unregister_nls +EXPORT_SYMBOL vmlinux 0x78bb3e24 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL vmlinux 0x79068fda acpi_install_method +EXPORT_SYMBOL vmlinux 0x79153732 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x7928103d mb_cache_create +EXPORT_SYMBOL vmlinux 0x7934fc39 skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x79385f94 netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0x79494796 skb_pull +EXPORT_SYMBOL vmlinux 0x795fe327 kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x796feb32 seq_pad +EXPORT_SYMBOL vmlinux 0x797c8fa9 cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x797d6bd9 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x7984eefc key_update +EXPORT_SYMBOL vmlinux 0x798507a4 mdiobus_read +EXPORT_SYMBOL vmlinux 0x79945d9f proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x79a38e61 ___ratelimit +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79c8439c rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x79d21964 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x79e83dec inet_frags_init_net +EXPORT_SYMBOL vmlinux 0x7a188791 prandom_bytes +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a2bbb90 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x7a33a890 inet_sendpage +EXPORT_SYMBOL vmlinux 0x7a3f683f cookie_check_timestamp +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a4739ce sk_capable +EXPORT_SYMBOL vmlinux 0x7a7eedb3 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x7a82cb47 rdmsrl_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x7a91726b clkdev_alloc +EXPORT_SYMBOL vmlinux 0x7a925833 cpufreq_get_global_kobject +EXPORT_SYMBOL vmlinux 0x7a935692 migrate_page +EXPORT_SYMBOL vmlinux 0x7a9388a7 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7ab72f29 fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7abaeeb5 tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x7ac0d6bf set_disk_ro +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7ad0d2eb __mutex_init +EXPORT_SYMBOL vmlinux 0x7ad97784 get_disk +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7aec9089 clear_user +EXPORT_SYMBOL vmlinux 0x7b0aeeda blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x7b146e48 vfs_unlink +EXPORT_SYMBOL vmlinux 0x7b16235f hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x7b19b49e xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x7b2a53ad __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x7b2aef6c __krealloc +EXPORT_SYMBOL vmlinux 0x7b2f38f5 pci_set_master +EXPORT_SYMBOL vmlinux 0x7b3ca115 tty_write_room +EXPORT_SYMBOL vmlinux 0x7b501a84 inet_frag_find +EXPORT_SYMBOL vmlinux 0x7b52a859 wrmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x7b5d4222 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x7b7fb1d4 nonseekable_open +EXPORT_SYMBOL vmlinux 0x7b94ee2f blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x7b9a6116 intel_agp_enabled +EXPORT_SYMBOL vmlinux 0x7bb22f54 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x7bc58e3a backlight_force_update +EXPORT_SYMBOL vmlinux 0x7bc92396 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x7bd44cff dcb_setapp +EXPORT_SYMBOL vmlinux 0x7bd6744c submit_bio +EXPORT_SYMBOL vmlinux 0x7bdfaf58 lease_modify +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c1e2ebd bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x7c2d098f krealloc +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c7bb906 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x7ca46555 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cbe858d bio_integrity_split +EXPORT_SYMBOL vmlinux 0x7cbf7081 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0x7cc578da param_get_long +EXPORT_SYMBOL vmlinux 0x7ce0eea6 find_vma +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7ce83365 acpi_remove_table_handler +EXPORT_SYMBOL vmlinux 0x7cecece1 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x7cef74be pagecache_write_end +EXPORT_SYMBOL vmlinux 0x7cf3a16b put_cmsg +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d1fab55 eth_header_parse +EXPORT_SYMBOL vmlinux 0x7d25694f tty_set_operations +EXPORT_SYMBOL vmlinux 0x7d5490bd mapping_tagged +EXPORT_SYMBOL vmlinux 0x7d5b1a85 swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x7d729c97 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x7d94f746 acpi_os_write_port +EXPORT_SYMBOL vmlinux 0x7d97be9a security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0x7dbc2e57 mmiotrace_printk +EXPORT_SYMBOL vmlinux 0x7dd4e934 acpi_pm_device_run_wake +EXPORT_SYMBOL vmlinux 0x7dd554fc unregister_kmmio_probe +EXPORT_SYMBOL vmlinux 0x7dea8b1e blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7e00c8f1 blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0x7e0569bb xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x7e11e053 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x7e394c4e sysctl_local_reserved_ports +EXPORT_SYMBOL vmlinux 0x7e3bb388 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x7e591b3d pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0x7e7c8665 agp_generic_enable +EXPORT_SYMBOL vmlinux 0x7e97222e ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x7e982b63 dev_activate +EXPORT_SYMBOL vmlinux 0x7eaa804f scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x7ed914c9 acpi_decode_pld_buffer +EXPORT_SYMBOL vmlinux 0x7ee241f8 genphy_update_link +EXPORT_SYMBOL vmlinux 0x7ee53ae5 fs_bio_set +EXPORT_SYMBOL vmlinux 0x7ee8c6db __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x7efaf35b neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x7f11279b set_pages_array_wb +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f5866d4 write_inode_now +EXPORT_SYMBOL vmlinux 0x7f658e80 _raw_write_lock +EXPORT_SYMBOL vmlinux 0x7f676b59 kernel_bind +EXPORT_SYMBOL vmlinux 0x7f8c9f3c i2c_transfer +EXPORT_SYMBOL vmlinux 0x7fc84463 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7fe38f48 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x7ff27195 dev_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x8002a4f5 ndo_dflt_bridge_getlink +EXPORT_SYMBOL vmlinux 0x8006181d lookup_one_len +EXPORT_SYMBOL vmlinux 0x801c35d6 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x80251982 generic_write_checks +EXPORT_SYMBOL vmlinux 0x802c825a cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x802d0e93 crc32_le +EXPORT_SYMBOL vmlinux 0x804f922a ipmi_addr_length +EXPORT_SYMBOL vmlinux 0x80519cfc dev_mc_del +EXPORT_SYMBOL vmlinux 0x807026f6 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x808722fa tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x808dddee inet_release +EXPORT_SYMBOL vmlinux 0x8092ab42 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x809fe7a1 __dquot_transfer +EXPORT_SYMBOL vmlinux 0x80a11f4b mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x80c1645f follow_down +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d34fa6 input_set_capability +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80db874a tty_mutex +EXPORT_SYMBOL vmlinux 0x80e756af mount_ns +EXPORT_SYMBOL vmlinux 0x80f46b63 dev_set_group +EXPORT_SYMBOL vmlinux 0x81056b90 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x8106277f agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0x8112e689 key_revoke +EXPORT_SYMBOL vmlinux 0x8120832b skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0x813b75ea tcp_md5_hash_skb_data +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 0x81745186 tcp_prot +EXPORT_SYMBOL vmlinux 0x8189270f pci_scan_bus_parented +EXPORT_SYMBOL vmlinux 0x819527ea igrab +EXPORT_SYMBOL vmlinux 0x81bf98b6 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x81d10f5f trace_seq_putc +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81e6b37f dmi_get_system_info +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x8212721d xenbus_dev_request_and_reply +EXPORT_SYMBOL vmlinux 0x82468386 noop_llseek +EXPORT_SYMBOL vmlinux 0x82477240 ida_destroy +EXPORT_SYMBOL vmlinux 0x824bb23d i8042_install_filter +EXPORT_SYMBOL vmlinux 0x8251bcc3 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x8254f322 devm_request_and_ioremap +EXPORT_SYMBOL vmlinux 0x8260686f bitmap_find_next_zero_area +EXPORT_SYMBOL vmlinux 0x82765a19 vlan_vid_add +EXPORT_SYMBOL vmlinux 0x827d2e90 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x82965fdd netpoll_rx_enable +EXPORT_SYMBOL vmlinux 0x829d4e08 rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x82a41969 phy_scan_fixups +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82dd7a0f inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x82e576ec kern_path +EXPORT_SYMBOL vmlinux 0x82fb6964 simple_dentry_operations +EXPORT_SYMBOL vmlinux 0x830e547b ioremap_prot +EXPORT_SYMBOL vmlinux 0x833c03aa acpi_enable_all_runtime_gpes +EXPORT_SYMBOL vmlinux 0x834a3412 blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x834e2d0b dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x837e500f uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x83a476ce bitmap_scnlistprintf +EXPORT_SYMBOL vmlinux 0x83b6eeed i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x83c841d3 fget_raw +EXPORT_SYMBOL vmlinux 0x83de0aa5 udp_proc_register +EXPORT_SYMBOL vmlinux 0x83f3cdff gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0x83f8f1dc sg_miter_stop +EXPORT_SYMBOL vmlinux 0x84060081 xen_poll_irq_timeout +EXPORT_SYMBOL vmlinux 0x8417f512 acpi_update_all_gpes +EXPORT_SYMBOL vmlinux 0x841962f8 param_get_ushort +EXPORT_SYMBOL vmlinux 0x84419c78 generic_file_fsync +EXPORT_SYMBOL vmlinux 0x844db541 security_path_chmod +EXPORT_SYMBOL vmlinux 0x845da744 bio_copy_user +EXPORT_SYMBOL vmlinux 0x84712464 directly_mappable_cdev_bdi +EXPORT_SYMBOL vmlinux 0x8476f1c1 inet6_ioctl +EXPORT_SYMBOL vmlinux 0x8484f4b2 unregister_netdev +EXPORT_SYMBOL vmlinux 0x8485cc44 kobject_set_name +EXPORT_SYMBOL vmlinux 0x84956bf2 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x84a831a9 bio_endio +EXPORT_SYMBOL vmlinux 0x84b93805 proto_register +EXPORT_SYMBOL vmlinux 0x84ce8a76 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x84d204a4 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x84e20a99 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x8509c540 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0x8518eca9 param_get_short +EXPORT_SYMBOL vmlinux 0x8519868f netif_device_attach +EXPORT_SYMBOL vmlinux 0x851a2d44 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x851cd497 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x851e2a10 read_cache_pages +EXPORT_SYMBOL vmlinux 0x8536ae0b kmalloc_caches +EXPORT_SYMBOL vmlinux 0x853bf7c1 param_set_int +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x85a29924 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85f4aefc bioset_create +EXPORT_SYMBOL vmlinux 0x85fe3054 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x860bbabb mmc_start_req +EXPORT_SYMBOL vmlinux 0x86119a63 kernel_connect +EXPORT_SYMBOL vmlinux 0x86492871 sock_kmalloc +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x8691ad27 kmem_cache_alloc_node_trace +EXPORT_SYMBOL vmlinux 0x86944cea devm_gpio_free +EXPORT_SYMBOL vmlinux 0x86a662c3 setup_arg_pages +EXPORT_SYMBOL vmlinux 0x86b53a5d serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x86c26ecc pci_release_regions +EXPORT_SYMBOL vmlinux 0x86d5255f _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0x86eff1e2 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x86f29518 dquot_free_inode +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x8703acc1 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x87072cd8 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x870bf928 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x8763c336 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x876b92c6 pnp_release_card_device +EXPORT_SYMBOL vmlinux 0x876dafc3 ec_write +EXPORT_SYMBOL vmlinux 0x8773a555 end_page_writeback +EXPORT_SYMBOL vmlinux 0x87769562 arp_send +EXPORT_SYMBOL vmlinux 0x8779a34f param_ops_byte +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x8790917f devm_free_irq +EXPORT_SYMBOL vmlinux 0x87aaddf8 wrmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0x87b2f42a path_put +EXPORT_SYMBOL vmlinux 0x87c58a96 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x87d3233f zero_fill_bio +EXPORT_SYMBOL vmlinux 0x87dc469a mempool_create_node +EXPORT_SYMBOL vmlinux 0x87f04809 tty_port_put +EXPORT_SYMBOL vmlinux 0x88076d48 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x880a2664 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x881039d0 zlib_inflate +EXPORT_SYMBOL vmlinux 0x8834396c mod_timer +EXPORT_SYMBOL vmlinux 0x883cfdcf __seq_open_private +EXPORT_SYMBOL vmlinux 0x884ff53f neigh_compat_output +EXPORT_SYMBOL vmlinux 0x88513970 param_set_byte +EXPORT_SYMBOL vmlinux 0x885c8c00 save_mount_options +EXPORT_SYMBOL vmlinux 0x886c221f update_time +EXPORT_SYMBOL vmlinux 0x886e0b2a mdiobus_register +EXPORT_SYMBOL vmlinux 0x887e495c tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x8897df7d kobject_init +EXPORT_SYMBOL vmlinux 0x88b04e39 __register_nmi_handler +EXPORT_SYMBOL vmlinux 0x88c43b53 km_policy_notify +EXPORT_SYMBOL vmlinux 0x88ca6bc7 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x88dd4576 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x88ed2f83 iterate_dir +EXPORT_SYMBOL vmlinux 0x88f00d18 lg_global_unlock +EXPORT_SYMBOL vmlinux 0x88f1a3f8 kdb_current_task +EXPORT_SYMBOL vmlinux 0x892b26a0 set_memory_nx +EXPORT_SYMBOL vmlinux 0x893aeb13 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x897473df mktime +EXPORT_SYMBOL vmlinux 0x897e203a sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x89824a21 xfrm_init_state +EXPORT_SYMBOL vmlinux 0x89acaaba blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89b27356 mpage_writepage +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x8a0e3703 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a6af65c kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x8a723d17 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a80d7a5 acpi_error +EXPORT_SYMBOL vmlinux 0x8a9327fb pcim_iounmap +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8ac24035 vga_switcheroo_init_domain_pm_optimus_hdmi_audio +EXPORT_SYMBOL vmlinux 0x8acca2e7 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x8ad99966 cap_mmap_file +EXPORT_SYMBOL vmlinux 0x8ae881d4 ilookup5 +EXPORT_SYMBOL vmlinux 0x8afb4563 __neigh_event_send +EXPORT_SYMBOL vmlinux 0x8b05ef08 max8998_update_reg +EXPORT_SYMBOL vmlinux 0x8b125a02 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x8b1a7a66 pcie_aspm_enabled +EXPORT_SYMBOL vmlinux 0x8b226a81 acpi_video_dmi_demote_vendor +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b458436 dquot_enable +EXPORT_SYMBOL vmlinux 0x8b484bcd __alloc_skb +EXPORT_SYMBOL vmlinux 0x8b5f4a2e IO_APIC_get_PCI_irq_vector +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b8bef73 dentry_unhash +EXPORT_SYMBOL vmlinux 0x8b93741f bdi_register +EXPORT_SYMBOL vmlinux 0x8b989cf9 acpi_bus_can_wakeup +EXPORT_SYMBOL vmlinux 0x8ba83874 module_put +EXPORT_SYMBOL vmlinux 0x8bb189b8 __sb_start_write +EXPORT_SYMBOL vmlinux 0x8bc48161 simple_empty +EXPORT_SYMBOL vmlinux 0x8bccaa51 agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0x8bccc634 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c1e73e8 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x8c264f6d sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x8c41cea6 i2c_verify_client +EXPORT_SYMBOL vmlinux 0x8c440dd5 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c71de65 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x8c7b531b tcp_connect +EXPORT_SYMBOL vmlinux 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8cd4ea27 pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x8cda8029 xen_clear_irq_pending +EXPORT_SYMBOL vmlinux 0x8cdac5c3 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0x8cdb99da pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x8cf50062 names_cachep +EXPORT_SYMBOL vmlinux 0x8d1ecc98 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0x8d2a0acb tcp_make_synack +EXPORT_SYMBOL vmlinux 0x8d2e268b param_ops_ulong +EXPORT_SYMBOL vmlinux 0x8d46a935 icmpv6_send +EXPORT_SYMBOL vmlinux 0x8d52aae5 key_invalidate +EXPORT_SYMBOL vmlinux 0x8d55126b scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d561511 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x8d618b50 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x8d6a3054 scsi_nonblockable_ioctl +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d8d96c6 acpi_get_sleep_type_data +EXPORT_SYMBOL vmlinux 0x8d8ffad8 swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x8da1a3cb acpi_remove_interface +EXPORT_SYMBOL vmlinux 0x8daf8c42 dql_init +EXPORT_SYMBOL vmlinux 0x8db2c2e9 netdev_change_features +EXPORT_SYMBOL vmlinux 0x8db5c214 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x8dc35a68 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x8df6c16d seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x8df92f66 memchr_inv +EXPORT_SYMBOL vmlinux 0x8dfa8c17 tcf_action_exec +EXPORT_SYMBOL vmlinux 0x8dff9812 fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0x8e002cda acpi_remove_gpe_block +EXPORT_SYMBOL vmlinux 0x8e03a2cb _dev_info +EXPORT_SYMBOL vmlinux 0x8e1b41ed security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x8e23ca8a ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0x8e2ad7ed alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x8e2f07b1 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x8e2f1c50 udp_add_offload +EXPORT_SYMBOL vmlinux 0x8e332829 flush_delayed_work +EXPORT_SYMBOL vmlinux 0x8e5d4563 d_splice_alias +EXPORT_SYMBOL vmlinux 0x8e756d35 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x8e7feffd devm_gpiod_put +EXPORT_SYMBOL vmlinux 0x8e864a86 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x8eaf2a5f vga_switcheroo_unregister_handler +EXPORT_SYMBOL vmlinux 0x8f12ead9 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x8f137ea5 touch_atime +EXPORT_SYMBOL vmlinux 0x8f15df76 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x8f252d5c tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x8f2703b7 wbinvd_on_all_cpus +EXPORT_SYMBOL vmlinux 0x8f43fb78 tc_classify_compat +EXPORT_SYMBOL vmlinux 0x8f9c199c __get_user_2 +EXPORT_SYMBOL vmlinux 0x8fa2dfe7 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x8fb5a628 mark_page_accessed +EXPORT_SYMBOL vmlinux 0x8fd8c11e from_kgid_munged +EXPORT_SYMBOL vmlinux 0x8fdb13ba serio_open +EXPORT_SYMBOL vmlinux 0x8fe48b08 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x8fe8444c input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x90087277 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x9009021e blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0x9015afe6 input_event +EXPORT_SYMBOL vmlinux 0x903f4fae nla_put +EXPORT_SYMBOL vmlinux 0x904409c6 acpi_set_firmware_waking_vector +EXPORT_SYMBOL vmlinux 0x904e66af pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x9053cffd scsi_free_command +EXPORT_SYMBOL vmlinux 0x90720411 nf_afinfo +EXPORT_SYMBOL vmlinux 0x908b53ed param_set_short +EXPORT_SYMBOL vmlinux 0x9116b3a9 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x912e9599 pci_iounmap +EXPORT_SYMBOL vmlinux 0x9144a8e2 ec_burst_disable +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x91607d95 set_memory_wb +EXPORT_SYMBOL vmlinux 0x9166fada strncpy +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x91967e8e xen_selfballoon_init +EXPORT_SYMBOL vmlinux 0x91a3cdf4 down_timeout +EXPORT_SYMBOL vmlinux 0x91ac822f vscnprintf +EXPORT_SYMBOL vmlinux 0x91c6b747 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x91cbecca pci_scan_slot +EXPORT_SYMBOL vmlinux 0x91fc568e ata_port_printk +EXPORT_SYMBOL vmlinux 0x922367ee d_alloc +EXPORT_SYMBOL vmlinux 0x9224e1aa posix_lock_file +EXPORT_SYMBOL vmlinux 0x922f455f release_firmware +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x9242a9c6 neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x925520d2 blk_start_plug +EXPORT_SYMBOL vmlinux 0x9272dff0 __ip_select_ident +EXPORT_SYMBOL vmlinux 0x9291cd3b memdup_user +EXPORT_SYMBOL vmlinux 0x9299a291 mmc_erase +EXPORT_SYMBOL vmlinux 0x92a113ba bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92b528d0 __vlan_find_dev_deep +EXPORT_SYMBOL vmlinux 0x92d050df iov_pages +EXPORT_SYMBOL vmlinux 0x92e98f1d poll_freewait +EXPORT_SYMBOL vmlinux 0x92edec81 default_file_splice_read +EXPORT_SYMBOL vmlinux 0x92f73c68 scsi_host_get +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x9327f5ce _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x932face7 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x933b4653 dquot_alloc +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x934d5c03 start_tty +EXPORT_SYMBOL vmlinux 0x9366f8ce netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x937a448f from_kprojid +EXPORT_SYMBOL vmlinux 0x93955f89 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x93a6e0b2 io_schedule +EXPORT_SYMBOL vmlinux 0x93af170e pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93c68619 simple_transaction_set +EXPORT_SYMBOL vmlinux 0x93e856ef sock_from_file +EXPORT_SYMBOL vmlinux 0x93f3e52b acpi_extract_package +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x9415cd81 pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x94395c64 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x94485ec7 d_rehash +EXPORT_SYMBOL vmlinux 0x9457080f filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x946d1ec9 account_page_dirtied +EXPORT_SYMBOL vmlinux 0x9472d88f vm_map_ram +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x949f4a04 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x94b3c47c sock_kfree_s +EXPORT_SYMBOL vmlinux 0x94c20c91 bio_advance +EXPORT_SYMBOL vmlinux 0x94cc75fc amd_iommu_flush_tlb +EXPORT_SYMBOL vmlinux 0x9508f166 param_ops_bint +EXPORT_SYMBOL vmlinux 0x950baa94 clear_nlink +EXPORT_SYMBOL vmlinux 0x95228f2a inet6_del_offload +EXPORT_SYMBOL vmlinux 0x952aa7b7 alloc_anon_inode +EXPORT_SYMBOL vmlinux 0x95395301 acpi_exception +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x955a832f ___preempt_schedule +EXPORT_SYMBOL vmlinux 0x9580243b pci_pme_active +EXPORT_SYMBOL vmlinux 0x9595c952 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x9599adbd elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x95aeac0c in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x95ea725e nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x95f89a33 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x960b3c6b audit_log_task_info +EXPORT_SYMBOL vmlinux 0x9615a907 proc_create_data +EXPORT_SYMBOL vmlinux 0x961ef0d6 agp_copy_info +EXPORT_SYMBOL vmlinux 0x961f5c36 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x96393d4a linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x9685b9fa fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0x96896846 simple_dir_operations +EXPORT_SYMBOL vmlinux 0x969c0f35 acpi_processor_unregister_performance +EXPORT_SYMBOL vmlinux 0x96b29254 strncasecmp +EXPORT_SYMBOL vmlinux 0x96b36b93 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x96b98f7c input_close_device +EXPORT_SYMBOL vmlinux 0x96c4e013 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x96ca8fd5 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x9714228b dcache_dir_close +EXPORT_SYMBOL vmlinux 0x9725b4f0 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x9725b589 proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x97375e70 mmc_remove_host +EXPORT_SYMBOL vmlinux 0x973fa82e register_acpi_notifier +EXPORT_SYMBOL vmlinux 0x975021ba scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x97868aef __kfifo_alloc +EXPORT_SYMBOL vmlinux 0x978d4cb3 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a60e3d param_get_bool +EXPORT_SYMBOL vmlinux 0x97bb6326 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x97c5bd0a acpi_unload_parent_table +EXPORT_SYMBOL vmlinux 0x97d54ef6 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x97d85c9c devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0x97de0ddd acpi_install_gpe_block +EXPORT_SYMBOL vmlinux 0x97e10519 inet_shutdown +EXPORT_SYMBOL vmlinux 0x981a2ca6 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x9820b644 warn_slowpath_fmt_taint +EXPORT_SYMBOL vmlinux 0x982760e8 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0x9829fc11 __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0x9835283a pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0x983811b7 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x983a4f73 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x98501471 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0x985422b3 phy_attach_direct +EXPORT_SYMBOL vmlinux 0x98548d18 key_unlink +EXPORT_SYMBOL vmlinux 0x9868a8f3 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x987a032d generic_file_buffered_write +EXPORT_SYMBOL vmlinux 0x988ed85d set_memory_x +EXPORT_SYMBOL vmlinux 0x989894f2 agp_find_bridge +EXPORT_SYMBOL vmlinux 0x9899ed9f pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0x989f9bc7 inet_register_protosw +EXPORT_SYMBOL vmlinux 0x98b36765 skb_copy_expand +EXPORT_SYMBOL vmlinux 0x98bad24f sock_update_classid +EXPORT_SYMBOL vmlinux 0x98bb5dc7 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x98e2c13e iget_failed +EXPORT_SYMBOL vmlinux 0x98f0681e simple_setattr +EXPORT_SYMBOL vmlinux 0x98f2d2c3 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x98fa21b0 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x990e5582 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x99195078 vsnprintf +EXPORT_SYMBOL vmlinux 0x99294b88 dev_alloc_name +EXPORT_SYMBOL vmlinux 0x9949b1ac __d_drop +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x9969cf34 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x998e7d8e __f_setown +EXPORT_SYMBOL vmlinux 0x99901543 ps2_handle_response +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99aa4e31 vfs_writev +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99ce89c6 neigh_seq_next +EXPORT_SYMBOL vmlinux 0x99d3a43c dm_table_get_size +EXPORT_SYMBOL vmlinux 0x99d7a387 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x99d7c9ff sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x99daa9bf try_offline_node +EXPORT_SYMBOL vmlinux 0x99f068d5 x86_cpu_to_node_map +EXPORT_SYMBOL vmlinux 0x9a086ac3 thaw_bdev +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a2f1a8b rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x9a5e0311 alloc_pci_dev +EXPORT_SYMBOL vmlinux 0x9a5ffc64 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x9a60bde6 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x9a9f18b1 napi_gro_frags +EXPORT_SYMBOL vmlinux 0x9aa28a90 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x9aa44768 pipe_unlock +EXPORT_SYMBOL vmlinux 0x9aa4d240 skb_checksum +EXPORT_SYMBOL vmlinux 0x9ac0a0e3 key_put +EXPORT_SYMBOL vmlinux 0x9acb79e4 scsi_remove_device +EXPORT_SYMBOL vmlinux 0x9ad1e5c5 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x9ad9e8c8 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x9af89f98 memcpy_fromiovec +EXPORT_SYMBOL vmlinux 0x9afb98be fget_light +EXPORT_SYMBOL vmlinux 0x9b0ea7e2 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b35ef0a qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b4d4c3d gen10g_suspend +EXPORT_SYMBOL vmlinux 0x9b6b569c inode_needs_sync +EXPORT_SYMBOL vmlinux 0x9b75cb81 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x9b81afa4 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x9b88a47f pci_release_region +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bce9408 ip_ct_attach +EXPORT_SYMBOL vmlinux 0x9bdc4c73 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9c1f72fa generic_delete_inode +EXPORT_SYMBOL vmlinux 0x9c2f1926 audit_log_start +EXPORT_SYMBOL vmlinux 0x9c3c2c50 pnp_disable_dev +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c4ef261 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0x9c63498c blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0x9c767ae7 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x9c7b72d8 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x9c7e34b3 input_unregister_handler +EXPORT_SYMBOL vmlinux 0x9c8e60ea serio_reconnect +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cb6b22f pci_request_regions +EXPORT_SYMBOL vmlinux 0x9cdc1390 dm_get_device +EXPORT_SYMBOL vmlinux 0x9cde5e3c __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0x9ce12d04 fb_show_logo +EXPORT_SYMBOL vmlinux 0x9cfd56c5 scsi_print_status +EXPORT_SYMBOL vmlinux 0x9d05f6c4 ktime_get_clocktai +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d1a5e3a __memcpy +EXPORT_SYMBOL vmlinux 0x9d1ad475 input_get_keycode +EXPORT_SYMBOL vmlinux 0x9d33ef5e acpi_enable +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d8cd342 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x9d8f06df __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x9d988a2f sock_sendmsg +EXPORT_SYMBOL vmlinux 0x9dac988b tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x9dad1c5d __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x9dd36c07 phy_init_eee +EXPORT_SYMBOL vmlinux 0x9dd88b34 inode_get_bytes +EXPORT_SYMBOL vmlinux 0x9dd9de90 nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x9de37746 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e2f8c90 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e309eec padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x9e34d66f xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x9e363b6b acpi_disable_gpe +EXPORT_SYMBOL vmlinux 0x9e3bd1cc pci_bus_type +EXPORT_SYMBOL vmlinux 0x9e45776b dev_addr_del +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e599679 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e64fbfe rtc_cmos_read +EXPORT_SYMBOL vmlinux 0x9e7d6bd0 __udelay +EXPORT_SYMBOL vmlinux 0x9e81aa34 pci_disable_ido +EXPORT_SYMBOL vmlinux 0x9e9f1714 __bitmap_andnot +EXPORT_SYMBOL vmlinux 0x9ea0ad49 __sg_free_table +EXPORT_SYMBOL vmlinux 0x9ea8c9ef neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ed2eec7 param_set_ushort +EXPORT_SYMBOL vmlinux 0x9f039ebb tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x9f16aa1f find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x9f2bdaac __bitmap_or +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f516445 __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x9f5c99c4 request_key_async +EXPORT_SYMBOL vmlinux 0x9f634831 simple_transaction_read +EXPORT_SYMBOL vmlinux 0x9f6e19ab mem_section +EXPORT_SYMBOL vmlinux 0x9f92adf4 kset_register +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fbae04b dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa00aca2a dql_completed +EXPORT_SYMBOL vmlinux 0xa00be7a4 ip6_route_output +EXPORT_SYMBOL vmlinux 0xa0290932 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0xa0312692 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa04ecfa3 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa05c1c03 __frontswap_test +EXPORT_SYMBOL vmlinux 0xa05f372e seq_printf +EXPORT_SYMBOL vmlinux 0xa071cf83 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xa07a37f0 memchr +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa0834a47 gen_pool_free +EXPORT_SYMBOL vmlinux 0xa09ef49a __sk_dst_check +EXPORT_SYMBOL vmlinux 0xa0a43d90 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0xa0ab7b5d skb_copy +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0cddbed devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0xa0ceef51 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xa0cf923b scsi_print_sense +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0ea4c1a dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0ed14f2 set_binfmt +EXPORT_SYMBOL vmlinux 0xa0f74420 da903x_query_status +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa0ff74d6 udp_memory_allocated +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa11096fb simple_write_end +EXPORT_SYMBOL vmlinux 0xa116a69f agp_backend_acquire +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa146e8c6 sock_no_mmap +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa1632ba4 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0xa1777af2 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0xa1888a8a i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1f88f48 block_read_full_page +EXPORT_SYMBOL vmlinux 0xa202a8e5 kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0xa20ce1b8 net_msg_warn +EXPORT_SYMBOL vmlinux 0xa21fe29b tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xa2475be1 alloc_fddidev +EXPORT_SYMBOL vmlinux 0xa2682b77 scsi_prep_fn +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa28a2ace ipmi_set_gets_events +EXPORT_SYMBOL vmlinux 0xa28ff06a ps2_init +EXPORT_SYMBOL vmlinux 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL vmlinux 0xa2d9335e ata_std_end_eh +EXPORT_SYMBOL vmlinux 0xa2ef34d7 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0xa2fe1bf5 node_data +EXPORT_SYMBOL vmlinux 0xa33ade15 ppp_dev_name +EXPORT_SYMBOL vmlinux 0xa350a8f8 set_memory_array_uc +EXPORT_SYMBOL vmlinux 0xa354512c agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0xa35de80f ipv4_config +EXPORT_SYMBOL vmlinux 0xa36116ee pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0xa3628a54 acpi_bus_get_device +EXPORT_SYMBOL vmlinux 0xa390a1f7 remove_proc_subtree +EXPORT_SYMBOL vmlinux 0xa394a60f sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0xa39ca8e4 ilookup +EXPORT_SYMBOL vmlinux 0xa39ff275 __bread +EXPORT_SYMBOL vmlinux 0xa3a0edb0 ab3100_event_register +EXPORT_SYMBOL vmlinux 0xa3a77c69 down_read_trylock +EXPORT_SYMBOL vmlinux 0xa3b8be9a security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0xa3c0e354 netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xa3c88a44 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0xa3ca0832 mmc_can_erase +EXPORT_SYMBOL vmlinux 0xa3f96685 wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0xa3fc3d50 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0xa400159f crc32_be +EXPORT_SYMBOL vmlinux 0xa404c2ad pci_clear_master +EXPORT_SYMBOL vmlinux 0xa40700c7 mmc_free_host +EXPORT_SYMBOL vmlinux 0xa40afc9b dev_addr_init +EXPORT_SYMBOL vmlinux 0xa4511467 crc16 +EXPORT_SYMBOL vmlinux 0xa458ede0 dev_disable_lro +EXPORT_SYMBOL vmlinux 0xa45a2640 nlmsg_notify +EXPORT_SYMBOL vmlinux 0xa462a7d2 napi_get_frags +EXPORT_SYMBOL vmlinux 0xa46417e8 set_pages_nx +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa48b34f7 skb_put +EXPORT_SYMBOL vmlinux 0xa48e8c02 kernel_getpeername +EXPORT_SYMBOL vmlinux 0xa4a2d79f ps2_begin_command +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4bb3274 install_exec_creds +EXPORT_SYMBOL vmlinux 0xa4c30da4 follow_down_one +EXPORT_SYMBOL vmlinux 0xa4d3cb32 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4e680ec input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0xa4fa92ef vga_switcheroo_fini_domain_pm_ops +EXPORT_SYMBOL vmlinux 0xa4fd49b7 seq_bitmap +EXPORT_SYMBOL vmlinux 0xa5036d82 ppp_unit_number +EXPORT_SYMBOL vmlinux 0xa51df2b4 down_killable +EXPORT_SYMBOL vmlinux 0xa5259f38 agp_bind_memory +EXPORT_SYMBOL vmlinux 0xa53927b6 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0xa53c76c5 tc_classify +EXPORT_SYMBOL vmlinux 0xa542cb8d dcache_readdir +EXPORT_SYMBOL vmlinux 0xa550b3c8 nobh_write_begin +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa5592dbf pci_dev_get +EXPORT_SYMBOL vmlinux 0xa568b8bd vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0xa57bf4ea bio_add_pc_page +EXPORT_SYMBOL vmlinux 0xa57bfe1b abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0xa58a3166 lg_local_lock +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5acca2d free_mdio_bitbang +EXPORT_SYMBOL vmlinux 0xa5d98fa1 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0xa5e4f65c __next_cpu_nr +EXPORT_SYMBOL vmlinux 0xa5fa5de9 neigh_ifdown +EXPORT_SYMBOL vmlinux 0xa61dadce tcp_prequeue +EXPORT_SYMBOL vmlinux 0xa6224faa dquot_acquire +EXPORT_SYMBOL vmlinux 0xa63a2f9b param_get_ulong +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa6715115 do_settimeofday +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa67fb8bb jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa68e7a0b pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0xa6a2a4aa ata_dev_printk +EXPORT_SYMBOL vmlinux 0xa6a994a9 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0xa6bd63ca acpi_bios_error +EXPORT_SYMBOL vmlinux 0xa6fa08a2 pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0xa7032fe3 i2c_master_send +EXPORT_SYMBOL vmlinux 0xa70fabbe release_evntsel_nmi +EXPORT_SYMBOL vmlinux 0xa719db82 dev_printk_emit +EXPORT_SYMBOL vmlinux 0xa72a0f5b nr_online_nodes +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa77d8343 ip_check_defrag +EXPORT_SYMBOL vmlinux 0xa781a9a1 agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0xa797a766 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0xa7e122b5 lease_get_mtime +EXPORT_SYMBOL vmlinux 0xa7f310a6 tcf_hash_search +EXPORT_SYMBOL vmlinux 0xa7f37370 netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0xa8068959 blk_mq_insert_request +EXPORT_SYMBOL vmlinux 0xa8175502 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa82b08c3 acpi_device_hid +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa85665e2 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0xa858aaf0 netdev_crit +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa8875477 ipv4_specific +EXPORT_SYMBOL vmlinux 0xa89d0a05 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0xa89e006d blk_mq_alloc_single_hw_queue +EXPORT_SYMBOL vmlinux 0xa8a6f639 __check_region +EXPORT_SYMBOL vmlinux 0xa8c1b5bb sk_release_kernel +EXPORT_SYMBOL vmlinux 0xa8e46944 xfrm_state_add +EXPORT_SYMBOL vmlinux 0xa8f7a4bb truncate_pagecache +EXPORT_SYMBOL vmlinux 0xa8f7a53e tty_kref_put +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa904e10a ether_setup +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa916b694 strnlen +EXPORT_SYMBOL vmlinux 0xa91b0559 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0xa91b5561 acpi_video_backlight_support +EXPORT_SYMBOL vmlinux 0xa9217d5e vga_switcheroo_init_domain_pm_ops +EXPORT_SYMBOL vmlinux 0xa95c8d4a dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0xa95d3cdb gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0xa974b7fc pci_find_capability +EXPORT_SYMBOL vmlinux 0xa97f1547 no_llseek +EXPORT_SYMBOL vmlinux 0xa981fa2d iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0xa9982320 key_reject_and_link +EXPORT_SYMBOL vmlinux 0xa9a8e17f arch_phys_wc_add +EXPORT_SYMBOL vmlinux 0xa9bd2676 __vmalloc +EXPORT_SYMBOL vmlinux 0xa9c0350c dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0xa9d2ad99 dev_addr_flush +EXPORT_SYMBOL vmlinux 0xa9d8f55e ida_simple_remove +EXPORT_SYMBOL vmlinux 0xaa0073b7 __net_get_random_once +EXPORT_SYMBOL vmlinux 0xaa0aa0dd thermal_cdev_update +EXPORT_SYMBOL vmlinux 0xaa1aaa6f generic_write_end +EXPORT_SYMBOL vmlinux 0xaa501139 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa835b0e request_firmware +EXPORT_SYMBOL vmlinux 0xaa9087c0 param_ops_string +EXPORT_SYMBOL vmlinux 0xaab33884 agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0xaac1655b jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0xaad2af2c amd_iommu_get_v2_domain +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaae21e52 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0xaae8ab0e acpi_bus_power_manageable +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab1c35d0 block_write_full_page +EXPORT_SYMBOL vmlinux 0xab1f4a32 arp_invalidate +EXPORT_SYMBOL vmlinux 0xab2abbc0 mark_info_dirty +EXPORT_SYMBOL vmlinux 0xab2abddf dma_spin_lock +EXPORT_SYMBOL vmlinux 0xab562c55 scsi_test_unit_ready +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 0xab770678 rdmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab7d986d put_tty_driver +EXPORT_SYMBOL vmlinux 0xab82d589 input_grab_device +EXPORT_SYMBOL vmlinux 0xabafcaec dev_load +EXPORT_SYMBOL vmlinux 0xabb83caa netdev_alert +EXPORT_SYMBOL vmlinux 0xabbd6b2a find_get_page +EXPORT_SYMBOL vmlinux 0xabc6dd63 cpufreq_sysfs_create_file +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabd0c91c rtc_time_to_tm +EXPORT_SYMBOL vmlinux 0xabdc4188 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0xac09d2f9 dev_get_by_flags_rcu +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac120c1f tty_port_tty_get +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac3d20e2 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xac58ea5e acpi_unload_table_id +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacb68267 security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0xacb99ab3 devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0xacc4add8 first_ec +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacdf8b49 unlock_rename +EXPORT_SYMBOL vmlinux 0xace82801 unlock_new_inode +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad01744f kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad0e5602 pci_alloc_dev +EXPORT_SYMBOL vmlinux 0xad108eb9 tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0xad13c689 acpi_os_execute +EXPORT_SYMBOL vmlinux 0xad164875 kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xad1b15ed blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0xad2a8bd2 x86_bios_cpu_apicid +EXPORT_SYMBOL vmlinux 0xad371550 __find_get_block +EXPORT_SYMBOL vmlinux 0xad3f1628 compat_ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xad401eb5 set_nlink +EXPORT_SYMBOL vmlinux 0xad53377c dev_mc_del_global +EXPORT_SYMBOL vmlinux 0xad75bea0 ip_cmsg_recv +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad91e01e phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0xadd41293 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xade5a1fd input_release_device +EXPORT_SYMBOL vmlinux 0xadf70bda acpi_device_set_power +EXPORT_SYMBOL vmlinux 0xae26f874 iterate_supers_type +EXPORT_SYMBOL vmlinux 0xae2c611d elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0xae47c2db __cleancache_get_page +EXPORT_SYMBOL vmlinux 0xae487ffb mddev_congested +EXPORT_SYMBOL vmlinux 0xae55b840 dquot_file_open +EXPORT_SYMBOL vmlinux 0xae66839d mutex_trylock +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae805e9d sock_recvmsg +EXPORT_SYMBOL vmlinux 0xae806e2d blk_put_queue +EXPORT_SYMBOL vmlinux 0xaea8b0de security_path_symlink +EXPORT_SYMBOL vmlinux 0xaea976a8 acpi_check_resource_conflict +EXPORT_SYMBOL vmlinux 0xaeb9fe3f netdev_notice +EXPORT_SYMBOL vmlinux 0xaecc3129 pci_disable_msix +EXPORT_SYMBOL vmlinux 0xaed36ce4 devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0xaf1f5383 dst_alloc +EXPORT_SYMBOL vmlinux 0xaf242de2 ppp_input_error +EXPORT_SYMBOL vmlinux 0xaf366eed kernel_listen +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf3ecb34 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0xaf611eac amd_nb_misc_ids +EXPORT_SYMBOL vmlinux 0xaf64ad0d zlib_deflate +EXPORT_SYMBOL vmlinux 0xaf6ae696 kstrndup +EXPORT_SYMBOL vmlinux 0xaf6c6e97 pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0xaf756420 km_state_expired +EXPORT_SYMBOL vmlinux 0xaf91d89f __kernel_param_lock +EXPORT_SYMBOL vmlinux 0xafad493b param_ops_ushort +EXPORT_SYMBOL vmlinux 0xafb8c6ff copy_user_generic_string +EXPORT_SYMBOL vmlinux 0xafbed5fb md_error +EXPORT_SYMBOL vmlinux 0xafc278f3 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0xafd5ff2c amd_iommu_v2_supported +EXPORT_SYMBOL vmlinux 0xafda7ff6 d_move +EXPORT_SYMBOL vmlinux 0xb01412a0 vfs_readv +EXPORT_SYMBOL vmlinux 0xb01b1db8 intel_gtt_insert_sg_entries +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb06c8e5e netlink_capable +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0b795d6 dev_deactivate +EXPORT_SYMBOL vmlinux 0xb0b847ac __bitmap_full +EXPORT_SYMBOL vmlinux 0xb0c296f7 security_path_truncate +EXPORT_SYMBOL vmlinux 0xb0d21e7a netif_napi_del +EXPORT_SYMBOL vmlinux 0xb0d41ce0 input_set_abs_params +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0e602eb memmove +EXPORT_SYMBOL vmlinux 0xb0ffda2f blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xb1092c0b sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0xb10d6559 inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0xb112a2f9 dquot_commit +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb138d0bf dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb165e23f splice_from_pipe_begin +EXPORT_SYMBOL vmlinux 0xb1688a9f dev_notice +EXPORT_SYMBOL vmlinux 0xb19760c3 bitmap_onto +EXPORT_SYMBOL vmlinux 0xb199202c __brelse +EXPORT_SYMBOL vmlinux 0xb1b42470 idr_init +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 0xb1d029ec phy_drivers_register +EXPORT_SYMBOL vmlinux 0xb1db8d7d read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0xb1db9e4e param_get_invbool +EXPORT_SYMBOL vmlinux 0xb1f7c1e4 i2c_register_driver +EXPORT_SYMBOL vmlinux 0xb1f813e4 tcp_gso_segment +EXPORT_SYMBOL vmlinux 0xb1fcc9c5 tcf_exts_change +EXPORT_SYMBOL vmlinux 0xb1fd39fa netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0xb200d47d nf_log_register +EXPORT_SYMBOL vmlinux 0xb20ecf88 acpi_run_osc +EXPORT_SYMBOL vmlinux 0xb21167c7 vfs_llseek +EXPORT_SYMBOL vmlinux 0xb219d56c wbinvd_on_cpu +EXPORT_SYMBOL vmlinux 0xb2225024 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0xb2227bec ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xb22d2f21 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0xb2500a75 sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xb25d5a62 neigh_seq_start +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb280a772 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0xb2a37e94 dput +EXPORT_SYMBOL vmlinux 0xb2b401ee inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xb2b689ec seq_write +EXPORT_SYMBOL vmlinux 0xb2ba4e38 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2c3639a send_sig_info +EXPORT_SYMBOL vmlinux 0xb2cd0cfd acpi_pm_device_sleep_state +EXPORT_SYMBOL vmlinux 0xb2d8ca85 __frontswap_load +EXPORT_SYMBOL vmlinux 0xb2e08e7b lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0xb2f74fb6 intel_gmch_remove +EXPORT_SYMBOL vmlinux 0xb2fd5ceb __put_user_4 +EXPORT_SYMBOL vmlinux 0xb30e8455 soft_cursor +EXPORT_SYMBOL vmlinux 0xb3284531 acpi_dbg_layer +EXPORT_SYMBOL vmlinux 0xb352177e find_first_bit +EXPORT_SYMBOL vmlinux 0xb36f43b8 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0xb3749c29 neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0xb37d4b05 rt6_lookup +EXPORT_SYMBOL vmlinux 0xb37d734f vfs_fsync +EXPORT_SYMBOL vmlinux 0xb3a5b37f pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0xb3dd1c00 read_cache_page_async +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb3ffd08f pci_set_ltr +EXPORT_SYMBOL vmlinux 0xb41292c8 acpi_bus_register_driver +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb424c0fb fb_set_var +EXPORT_SYMBOL vmlinux 0xb4283843 loop_register_transfer +EXPORT_SYMBOL vmlinux 0xb42a8aca dquot_get_dqinfo +EXPORT_SYMBOL vmlinux 0xb43496d4 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0xb45ee24b pci_assign_resource +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb47189b5 reservation_ww_class +EXPORT_SYMBOL vmlinux 0xb4756004 compat_sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xb48644e7 netdev_update_features +EXPORT_SYMBOL vmlinux 0xb4b15c5a sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0xb4d2e1e8 dcb_getapp +EXPORT_SYMBOL vmlinux 0xb4eb30da dev_uc_add +EXPORT_SYMBOL vmlinux 0xb5157289 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0xb518a63e get_task_io_context +EXPORT_SYMBOL vmlinux 0xb52ee8be intel_gtt_clear_range +EXPORT_SYMBOL vmlinux 0xb54533f7 usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xb550c092 inet_listen +EXPORT_SYMBOL vmlinux 0xb551bf25 drop_super +EXPORT_SYMBOL vmlinux 0xb552e1d3 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0xb5675904 pci_choose_state +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb57f2457 sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0xb58050f5 netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0xb5848292 dev_get_by_index +EXPORT_SYMBOL vmlinux 0xb58bafd7 keyring_alloc +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5dcab5b remove_wait_queue +EXPORT_SYMBOL vmlinux 0xb60cedf3 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb630c4f6 blk_bio_map_sg +EXPORT_SYMBOL vmlinux 0xb6394d4b param_set_bint +EXPORT_SYMBOL vmlinux 0xb66c0531 d_delete +EXPORT_SYMBOL vmlinux 0xb66cebd8 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb67898b1 complete_request_key +EXPORT_SYMBOL vmlinux 0xb6822a33 radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb6959008 uart_match_port +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6b46a7c param_ops_int +EXPORT_SYMBOL vmlinux 0xb6c5a973 scsi_show_result +EXPORT_SYMBOL vmlinux 0xb6cbe886 acpi_get_node +EXPORT_SYMBOL vmlinux 0xb6d79236 __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xb6eec47c blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0xb704da19 prepare_creds +EXPORT_SYMBOL vmlinux 0xb70669d7 vfs_getattr +EXPORT_SYMBOL vmlinux 0xb72ddad4 sk_common_release +EXPORT_SYMBOL vmlinux 0xb739d686 d_add_ci +EXPORT_SYMBOL vmlinux 0xb73a0d3e netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0xb74b8cbb jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0xb758b225 acpi_disable_event +EXPORT_SYMBOL vmlinux 0xb76ec632 simple_unlink +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb79fb378 kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0xb7b449f4 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xb7c6db70 sysctl_max_skb_frags +EXPORT_SYMBOL vmlinux 0xb7e6ba8e unregister_binfmt +EXPORT_SYMBOL vmlinux 0xb7e79e78 pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0xb7eca3a2 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0xb7f06552 seq_path +EXPORT_SYMBOL vmlinux 0xb7f1e8ff update_devfreq +EXPORT_SYMBOL vmlinux 0xb7f47feb inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0xb80aa14e pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0xb810701c bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0xb8240335 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0xb835b3e4 radix_tree_prev_hole +EXPORT_SYMBOL vmlinux 0xb838344d in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xb83cca27 security_file_permission +EXPORT_SYMBOL vmlinux 0xb85327df pnp_device_attach +EXPORT_SYMBOL vmlinux 0xb85f5cf9 blk_execute_rq +EXPORT_SYMBOL vmlinux 0xb860d375 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb87fe715 key_link +EXPORT_SYMBOL vmlinux 0xb8971082 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0xb8b915ea nf_register_sockopt +EXPORT_SYMBOL vmlinux 0xb8d3894d acpi_match_device_ids +EXPORT_SYMBOL vmlinux 0xb8d73e97 param_set_uint +EXPORT_SYMBOL vmlinux 0xb8dd347b empty_aops +EXPORT_SYMBOL vmlinux 0xb8e7ce2c __put_user_8 +EXPORT_SYMBOL vmlinux 0xb8eefdd2 rtnl_unicast +EXPORT_SYMBOL vmlinux 0xb8f895ab jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0xb907513f unpoison_memory +EXPORT_SYMBOL vmlinux 0xb9238869 del_gendisk +EXPORT_SYMBOL vmlinux 0xb9249d16 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0xb92781f0 nla_reserve +EXPORT_SYMBOL vmlinux 0xb9348b1b pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0xb95112ce arp_tbl +EXPORT_SYMBOL vmlinux 0xb9634039 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0xb96cd44b __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xb98a0185 rtc_tm_to_time +EXPORT_SYMBOL vmlinux 0xb98f377f netlink_unicast +EXPORT_SYMBOL vmlinux 0xb99132bc dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0xb99f63b7 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0xb9a19888 set_bh_page +EXPORT_SYMBOL vmlinux 0xb9ab6bc1 compat_tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xb9b4e181 alloc_pages_exact_nid +EXPORT_SYMBOL vmlinux 0xb9b5892f serial8250_do_pm +EXPORT_SYMBOL vmlinux 0xb9c98e6d sk_wait_data +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9fd2205 add_efi_memmap +EXPORT_SYMBOL vmlinux 0xba2587a6 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0xba2c4e4a dev_mc_sync +EXPORT_SYMBOL vmlinux 0xba2d8594 ec_read +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba4ae57c scsi_setup_blk_pc_cmnd +EXPORT_SYMBOL vmlinux 0xba63339c _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xba6746ca xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0xba6babb8 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0xba7e8b96 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0xba81016d dev_get_drvdata +EXPORT_SYMBOL vmlinux 0xba835337 __generic_file_aio_write +EXPORT_SYMBOL vmlinux 0xba93aca1 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0xbab0d153 sock_no_connect +EXPORT_SYMBOL vmlinux 0xbac4a83f gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0xbac56615 crypto_sha256_update +EXPORT_SYMBOL vmlinux 0xbacb510f unregister_qdisc +EXPORT_SYMBOL vmlinux 0xbacc98df nf_log_unregister +EXPORT_SYMBOL vmlinux 0xbaf83959 compat_mc_setsockopt +EXPORT_SYMBOL vmlinux 0xbaff4129 sock_create +EXPORT_SYMBOL vmlinux 0xbb0b8e30 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0xbb189cad disallow_signal +EXPORT_SYMBOL vmlinux 0xbb257a2d blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0xbb4f4766 simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0xbb52e72f misc_deregister +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb713e6d sk_filter_release_rcu +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbbad5ebd get_write_access +EXPORT_SYMBOL vmlinux 0xbbaeb559 memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0xbbd13671 mdiobus_free +EXPORT_SYMBOL vmlinux 0xbbd1af49 give_up_console +EXPORT_SYMBOL vmlinux 0xbbe316e5 devm_ioremap +EXPORT_SYMBOL vmlinux 0xbbfcaca5 bit_waitqueue +EXPORT_SYMBOL vmlinux 0xbc0a62aa vmap +EXPORT_SYMBOL vmlinux 0xbc137af8 lock_sock_nested +EXPORT_SYMBOL vmlinux 0xbc1ab519 padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xbc1b1268 softnet_data +EXPORT_SYMBOL vmlinux 0xbc2031de acpi_processor_get_bios_limit +EXPORT_SYMBOL vmlinux 0xbc2978e9 lg_global_lock +EXPORT_SYMBOL vmlinux 0xbc2a3fa6 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0xbc3ff954 __ip_dev_find +EXPORT_SYMBOL vmlinux 0xbc56ae79 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0xbc5a6e51 __locks_copy_lock +EXPORT_SYMBOL vmlinux 0xbc76a74f xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0xbc7b784e netif_carrier_on +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcc7e44c dev_set_mtu +EXPORT_SYMBOL vmlinux 0xbcd45df9 __lru_cache_add +EXPORT_SYMBOL vmlinux 0xbd100793 cpu_online_mask +EXPORT_SYMBOL vmlinux 0xbd125b3c pci_disable_obff +EXPORT_SYMBOL vmlinux 0xbd1a575f fb_get_mode +EXPORT_SYMBOL vmlinux 0xbd2bdc9d generic_pipe_buf_unmap +EXPORT_SYMBOL vmlinux 0xbd318c45 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0xbd462b55 __kfifo_init +EXPORT_SYMBOL vmlinux 0xbdaf5b07 acpi_os_read_port +EXPORT_SYMBOL vmlinux 0xbdd25c4b skb_copy_bits +EXPORT_SYMBOL vmlinux 0xbdfb6dbb __fentry__ +EXPORT_SYMBOL vmlinux 0xbe0c2be5 ihold +EXPORT_SYMBOL vmlinux 0xbe0d288a dev_trans_start +EXPORT_SYMBOL vmlinux 0xbe18153d try_wait_for_completion +EXPORT_SYMBOL vmlinux 0xbe1db9c7 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0xbe2c0274 add_timer +EXPORT_SYMBOL vmlinux 0xbe441cbf agp_free_page_array +EXPORT_SYMBOL vmlinux 0xbe78b8f9 blk_sync_queue +EXPORT_SYMBOL vmlinux 0xbe86d46c max8925_reg_write +EXPORT_SYMBOL vmlinux 0xbeb01c1e prepare_binprm +EXPORT_SYMBOL vmlinux 0xbec30d05 x86_match_cpu +EXPORT_SYMBOL vmlinux 0xbecfbb3f neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0xbed609c9 tty_register_driver +EXPORT_SYMBOL vmlinux 0xbed6b52f jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0xbedacb47 bio_add_page +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf2e545d sk_dst_check +EXPORT_SYMBOL vmlinux 0xbf4707e3 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0xbf7c540b simple_pin_fs +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf897243 set_trace_device +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbf9d7696 check_disk_size_change +EXPORT_SYMBOL vmlinux 0xbfb0a538 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xbfb412b3 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfd144e4 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0xbfe06188 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xc01cf848 _raw_read_lock +EXPORT_SYMBOL vmlinux 0xc02cf69b clkdev_drop +EXPORT_SYMBOL vmlinux 0xc0355448 input_open_device +EXPORT_SYMBOL vmlinux 0xc035cc09 clear_bdi_congested +EXPORT_SYMBOL vmlinux 0xc041eeda prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0xc04ddbb4 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0xc06a314d devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc098e468 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0ab25e3 blk_free_tags +EXPORT_SYMBOL vmlinux 0xc0b4e989 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0xc0b5b8c4 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0xc0cd5d37 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0xc0d52073 __nlmsg_put +EXPORT_SYMBOL vmlinux 0xc0dba5c6 filemap_flush +EXPORT_SYMBOL vmlinux 0xc0e3ba30 sock_no_bind +EXPORT_SYMBOL vmlinux 0xc0f7b35f kfree_skb +EXPORT_SYMBOL vmlinux 0xc0f7c785 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0xc103d85d unlock_buffer +EXPORT_SYMBOL vmlinux 0xc139ade6 key_validate +EXPORT_SYMBOL vmlinux 0xc15a44c6 memzero_explicit +EXPORT_SYMBOL vmlinux 0xc16b2460 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xc18811a0 mount_bdev +EXPORT_SYMBOL vmlinux 0xc1c2dd09 __hw_addr_flush +EXPORT_SYMBOL vmlinux 0xc1ce42ed get_thermal_instance +EXPORT_SYMBOL vmlinux 0xc1d47d25 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0xc1f7e4ff set_create_files_as +EXPORT_SYMBOL vmlinux 0xc20562c2 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0xc21282fc skb_queue_tail +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc255a24b ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0xc256e762 __bitmap_equal +EXPORT_SYMBOL vmlinux 0xc28c6c8c ht_create_irq +EXPORT_SYMBOL vmlinux 0xc29bf967 strspn +EXPORT_SYMBOL vmlinux 0xc2a73df3 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0xc2b2d17d xfrm_user_policy +EXPORT_SYMBOL vmlinux 0xc2c5609a sock_release +EXPORT_SYMBOL vmlinux 0xc2e48a0e scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f51205 dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc30ad77c scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0xc30ee88b blk_integrity_compare +EXPORT_SYMBOL vmlinux 0xc30ee993 pci_disable_device +EXPORT_SYMBOL vmlinux 0xc310b981 strnstr +EXPORT_SYMBOL vmlinux 0xc31555ae bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0xc35a6a00 seq_puts +EXPORT_SYMBOL vmlinux 0xc38fffeb ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0xc3aaf0a9 __put_user_1 +EXPORT_SYMBOL vmlinux 0xc3bb54be mdio_bus_type +EXPORT_SYMBOL vmlinux 0xc3bfe54e neigh_event_ns +EXPORT_SYMBOL vmlinux 0xc3c47cd1 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0xc3c8f313 dm_unregister_target +EXPORT_SYMBOL vmlinux 0xc3e5be76 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0xc401d86d vga_switcheroo_get_client_state +EXPORT_SYMBOL vmlinux 0xc40248e1 __inet6_hash +EXPORT_SYMBOL vmlinux 0xc4024bf9 blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0xc4066cc6 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0xc4154d4c __skb_get_hash +EXPORT_SYMBOL vmlinux 0xc428853a skb_queue_purge +EXPORT_SYMBOL vmlinux 0xc43bc400 sock_create_lite +EXPORT_SYMBOL vmlinux 0xc45720f1 dev_queue_xmit +EXPORT_SYMBOL vmlinux 0xc465ba5f blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0xc4697c4d fail_migrate_page +EXPORT_SYMBOL vmlinux 0xc46cc8cf __blk_end_request_all +EXPORT_SYMBOL vmlinux 0xc48307db lz4_decompress +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc4c3b882 skb_trim +EXPORT_SYMBOL vmlinux 0xc4d1be20 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0xc4d2314c vm_event_states +EXPORT_SYMBOL vmlinux 0xc4d88450 fput +EXPORT_SYMBOL vmlinux 0xc4f832e3 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0xc511f956 input_reset_device +EXPORT_SYMBOL vmlinux 0xc532cf45 scsi_unregister +EXPORT_SYMBOL vmlinux 0xc5359cab iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0xc53b9a46 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc558530d profile_pc +EXPORT_SYMBOL vmlinux 0xc568fdd5 eth_header +EXPORT_SYMBOL vmlinux 0xc57f730a netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0xc589e044 param_set_long +EXPORT_SYMBOL vmlinux 0xc59530aa simple_write_begin +EXPORT_SYMBOL vmlinux 0xc5b5942b tty_unregister_device +EXPORT_SYMBOL vmlinux 0xc5ba6f0d jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0xc5be6b58 locks_init_lock +EXPORT_SYMBOL vmlinux 0xc5cc9913 bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5eeb55b filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc60379a7 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0xc620d0a0 dma_sync_wait +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc64ff9ab capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc666a132 crc_t10dif +EXPORT_SYMBOL vmlinux 0xc6883636 netdev_printk +EXPORT_SYMBOL vmlinux 0xc6a66180 rwsem_wake +EXPORT_SYMBOL vmlinux 0xc6ab2ab3 md_register_thread +EXPORT_SYMBOL vmlinux 0xc6b368d3 acpi_gpe_count +EXPORT_SYMBOL vmlinux 0xc6b6c6b1 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0xc6cb465a __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6d0937b __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0xc6dbb2f7 x86_dma_fallback_dev +EXPORT_SYMBOL vmlinux 0xc6f2f39a sb_min_blocksize +EXPORT_SYMBOL vmlinux 0xc6fa5c42 phy_connect_direct +EXPORT_SYMBOL vmlinux 0xc715d9e0 boot_cpu_data +EXPORT_SYMBOL vmlinux 0xc717344f neigh_for_each +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc735e6eb __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0xc7397d3a inet_stream_connect +EXPORT_SYMBOL vmlinux 0xc74ceea4 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0xc770d15c idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0xc771699d bitmap_startwrite +EXPORT_SYMBOL vmlinux 0xc7798a25 __getblk +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc79316e1 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7b8345a secpath_dup +EXPORT_SYMBOL vmlinux 0xc7c535cd dev_set_drvdata +EXPORT_SYMBOL vmlinux 0xc7cab902 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0xc7d12837 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0xc7e2bd17 ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0xc81204ef netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0xc8271d17 page_follow_link_light +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc8403201 amd_iommu_enable_device_erratum +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc867915e blk_start_queue +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc87c2d56 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0xc88bb821 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc8a6fd84 icmp_send +EXPORT_SYMBOL vmlinux 0xc8ab80d0 dev_driver_string +EXPORT_SYMBOL vmlinux 0xc8aebd67 sk_ns_capable +EXPORT_SYMBOL vmlinux 0xc8b278f1 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0xc8b2bf4a skb_make_writable +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8c74465 pnp_get_resource +EXPORT_SYMBOL vmlinux 0xc8e8cfb7 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0xc8eb0f70 __blk_run_queue +EXPORT_SYMBOL vmlinux 0xc8fd9305 seq_open +EXPORT_SYMBOL vmlinux 0xc9003e37 wireless_send_event +EXPORT_SYMBOL vmlinux 0xc911d10a i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0xc923e918 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0xc94d0317 __register_binfmt +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc978479a xz_dec_run +EXPORT_SYMBOL vmlinux 0xc996d097 del_timer +EXPORT_SYMBOL vmlinux 0xc9a7e3e7 blk_stack_limits +EXPORT_SYMBOL vmlinux 0xc9b538d5 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0xc9c39193 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0xc9c445fa mntput +EXPORT_SYMBOL vmlinux 0xc9d029a8 dev_change_flags +EXPORT_SYMBOL vmlinux 0xc9e6d9b6 netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0xc9e7077e ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0xc9ebe22a dquot_scan_active +EXPORT_SYMBOL vmlinux 0xc9ecee3e call_netdevice_notifiers_info +EXPORT_SYMBOL vmlinux 0xc9f8d8d1 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0xca047d10 gen10g_read_status +EXPORT_SYMBOL vmlinux 0xca08351b bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0xca088d0f mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0xca0c40dc vga_switcheroo_client_fb_set +EXPORT_SYMBOL vmlinux 0xca186814 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0xca32ac52 __bio_clone +EXPORT_SYMBOL vmlinux 0xca39683d bmap +EXPORT_SYMBOL vmlinux 0xca4ca404 gen_pool_create +EXPORT_SYMBOL vmlinux 0xca5aad9e pagevec_lookup +EXPORT_SYMBOL vmlinux 0xca5dbc50 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xca81a440 mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0xca8acc78 acpi_dbg_level +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xcaa10867 alloc_mdio_bitbang +EXPORT_SYMBOL vmlinux 0xcaaf81ac input_allocate_device +EXPORT_SYMBOL vmlinux 0xcad3333c fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0xcad762a6 wait_on_sync_kiocb +EXPORT_SYMBOL vmlinux 0xcae72dd0 init_special_inode +EXPORT_SYMBOL vmlinux 0xcaec8220 __scsi_put_command +EXPORT_SYMBOL vmlinux 0xcaef1b77 idr_remove +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb0c5d50 param_get_uint +EXPORT_SYMBOL vmlinux 0xcb178cae gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0xcb44da7f is_bad_inode +EXPORT_SYMBOL vmlinux 0xcb52184c pci_dev_driver +EXPORT_SYMBOL vmlinux 0xcb646c5f __sock_create +EXPORT_SYMBOL vmlinux 0xcb733bf2 acpi_bus_set_power +EXPORT_SYMBOL vmlinux 0xcb7ea199 netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0xcba14ce5 __idr_remove_all +EXPORT_SYMBOL vmlinux 0xcbae6c7a acpi_lid_notifier_unregister +EXPORT_SYMBOL vmlinux 0xcbb67680 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbe5e7bf dev_change_carrier +EXPORT_SYMBOL vmlinux 0xcc173cab acpi_walk_resource_buffer +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc29e52d pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0xcc2b40e6 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0xcc37f55c blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xcc3f137f pm860x_set_bits +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc5327ce netpoll_rx_disable +EXPORT_SYMBOL vmlinux 0xcc53e25d noop_fsync +EXPORT_SYMBOL vmlinux 0xcc6eded8 vm_insert_page +EXPORT_SYMBOL vmlinux 0xcc71fed8 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xcc7fa952 local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0xcc814cf3 __kfree_skb +EXPORT_SYMBOL vmlinux 0xcc86ab0c neigh_changeaddr +EXPORT_SYMBOL vmlinux 0xcc97b258 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xcccb23fd mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0xcd049c8a flock_lock_file_wait +EXPORT_SYMBOL vmlinux 0xcd0626bd neigh_resolve_output +EXPORT_SYMBOL vmlinux 0xcd08fe4e skb_insert +EXPORT_SYMBOL vmlinux 0xcd175370 netif_napi_add +EXPORT_SYMBOL vmlinux 0xcd20667a kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd3bc598 __wait_on_bit +EXPORT_SYMBOL vmlinux 0xcd5e868d bio_pair_release +EXPORT_SYMBOL vmlinux 0xcd6c6288 bdgrab +EXPORT_SYMBOL vmlinux 0xcd6ff32b bio_integrity_prep +EXPORT_SYMBOL vmlinux 0xcd7d31ca tty_hangup +EXPORT_SYMBOL vmlinux 0xcd8d0ec0 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0xcd9b298b udp_disconnect +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdc8453c dev_remove_offload +EXPORT_SYMBOL vmlinux 0xcde172ac radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0xcde96c59 acpi_get_hp_hw_control_from_firmware +EXPORT_SYMBOL vmlinux 0xce0ebf6a elv_rb_former_request +EXPORT_SYMBOL vmlinux 0xce13d261 dump_align +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce4279c9 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0xce4904a4 acpi_leave_sleep_state +EXPORT_SYMBOL vmlinux 0xce4e47b6 __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0xce531633 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0xce531d1e agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce9135b6 __genl_register_family +EXPORT_SYMBOL vmlinux 0xce940c40 keyring_clear +EXPORT_SYMBOL vmlinux 0xce98e475 check_disk_change +EXPORT_SYMBOL vmlinux 0xcea94b06 revalidate_disk +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceb5abb3 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0xcedfcbb3 kernel_getsockname +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf0d8890 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0xcf21d241 __wake_up +EXPORT_SYMBOL vmlinux 0xcf4102d1 swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0xcf4694cb scsi_prep_return +EXPORT_SYMBOL vmlinux 0xcf63df6e bio_integrity_endio +EXPORT_SYMBOL vmlinux 0xcf6cfe1f msrs_free +EXPORT_SYMBOL vmlinux 0xcf73a9dd iget_locked +EXPORT_SYMBOL vmlinux 0xcfc2710c ip_defrag +EXPORT_SYMBOL vmlinux 0xcfcaa8b9 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xd0181f4f __bitmap_xor +EXPORT_SYMBOL vmlinux 0xd026f9d8 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0xd0298b8b proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0xd03991d2 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0xd06692ac security_path_chown +EXPORT_SYMBOL vmlinux 0xd0678995 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0xd067fc5c proc_dointvec +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd07c65b8 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0xd099b077 __frontswap_store +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0b784db __secpath_destroy +EXPORT_SYMBOL vmlinux 0xd0d0aa72 acpi_processor_preregister_performance +EXPORT_SYMBOL vmlinux 0xd0d42c42 mod_timer_pending +EXPORT_SYMBOL vmlinux 0xd0d6d2e0 i2c_master_recv +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 0xd1092452 simple_getattr +EXPORT_SYMBOL vmlinux 0xd11c0dc1 __kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xd1279d7e nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0xd12e24d2 scsi_prep_state_check +EXPORT_SYMBOL vmlinux 0xd1416efb md_check_recovery +EXPORT_SYMBOL vmlinux 0xd14f6f35 fb_find_mode +EXPORT_SYMBOL vmlinux 0xd1652a93 acpi_info +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd18b6eb2 acpi_unmap_lsapic +EXPORT_SYMBOL vmlinux 0xd19edaf2 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0xd1bb1df3 dma_find_channel +EXPORT_SYMBOL vmlinux 0xd1d1ed55 d_make_root +EXPORT_SYMBOL vmlinux 0xd1f12ead abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0xd1f6c5f3 smp_num_siblings +EXPORT_SYMBOL vmlinux 0xd209252a pci_enable_ido +EXPORT_SYMBOL vmlinux 0xd20c8af0 make_kprojid +EXPORT_SYMBOL vmlinux 0xd21140a2 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0xd21c603d netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd221e359 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0xd2239ba9 devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0xd225b6fd xfrm_cfg_mutex +EXPORT_SYMBOL vmlinux 0xd227892e sleep_on +EXPORT_SYMBOL vmlinux 0xd2335ceb sock_i_ino +EXPORT_SYMBOL vmlinux 0xd23490b4 phy_disconnect +EXPORT_SYMBOL vmlinux 0xd25092a3 netdev_features_change +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd2596a23 pci_map_biosrom +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd2a6f28a proc_set_user +EXPORT_SYMBOL vmlinux 0xd2b09ce5 __kmalloc +EXPORT_SYMBOL vmlinux 0xd2bd76db tcp_check_req +EXPORT_SYMBOL vmlinux 0xd2d57fad lock_sock_fast +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2f1b260 interruptible_sleep_on +EXPORT_SYMBOL vmlinux 0xd348b6c9 blk_mq_init_commands +EXPORT_SYMBOL vmlinux 0xd35e249a _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0xd36257ba memcpy_toiovecend +EXPORT_SYMBOL vmlinux 0xd3719d59 paravirt_ticketlocks_enabled +EXPORT_SYMBOL vmlinux 0xd373d0f1 irq_to_desc +EXPORT_SYMBOL vmlinux 0xd37e00cb security_task_getsecid +EXPORT_SYMBOL vmlinux 0xd3879906 sk_free +EXPORT_SYMBOL vmlinux 0xd39c9477 sock_update_memcg +EXPORT_SYMBOL vmlinux 0xd3b46aa5 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0xd3dcab0b flex_array_alloc +EXPORT_SYMBOL vmlinux 0xd3ddd0ca tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0xd3e902be poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0xd3ee0a7d __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0xd4146daf generic_file_aio_write +EXPORT_SYMBOL vmlinux 0xd4218134 pci_save_state +EXPORT_SYMBOL vmlinux 0xd44010ba devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xd45d5da6 phy_start +EXPORT_SYMBOL vmlinux 0xd4835ef8 dmi_check_system +EXPORT_SYMBOL vmlinux 0xd49c753d blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0xd4b08e54 wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xd4d54b10 pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0xd4df9c72 pcim_iomap_table +EXPORT_SYMBOL vmlinux 0xd4edeb04 cpu_core_map +EXPORT_SYMBOL vmlinux 0xd4f92952 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0xd50fef48 acpi_detach_data +EXPORT_SYMBOL vmlinux 0xd528b0d0 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0xd52bf1ce _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xd5370aec make_kuid +EXPORT_SYMBOL vmlinux 0xd539b8aa ps2_drain +EXPORT_SYMBOL vmlinux 0xd57a7d96 netlink_net_capable +EXPORT_SYMBOL vmlinux 0xd57fc74c tcp_seq_open +EXPORT_SYMBOL vmlinux 0xd58576b7 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0xd5d01615 inet_del_offload +EXPORT_SYMBOL vmlinux 0xd5e08376 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xd5ea5da9 filemap_fault +EXPORT_SYMBOL vmlinux 0xd5f2172f del_timer_sync +EXPORT_SYMBOL vmlinux 0xd6102207 locks_free_lock +EXPORT_SYMBOL vmlinux 0xd610b84b xfrm4_rcv +EXPORT_SYMBOL vmlinux 0xd611bca3 completion_done +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd61a8612 gen10g_restart_aneg +EXPORT_SYMBOL vmlinux 0xd626a167 touch_buffer +EXPORT_SYMBOL vmlinux 0xd62abc39 _raw_read_unlock +EXPORT_SYMBOL vmlinux 0xd62ce0a5 kobject_del +EXPORT_SYMBOL vmlinux 0xd63567b6 kill_litter_super +EXPORT_SYMBOL vmlinux 0xd63baeed sock_no_ioctl +EXPORT_SYMBOL vmlinux 0xd63ebefa genl_unregister_family +EXPORT_SYMBOL vmlinux 0xd643787f bdi_register_dev +EXPORT_SYMBOL vmlinux 0xd6466317 compat_mc_getsockopt +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd66d32aa __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0xd66f182f rtnl_create_link +EXPORT_SYMBOL vmlinux 0xd679879e i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd68f8f54 pneigh_lookup +EXPORT_SYMBOL vmlinux 0xd6aec988 clone_cred +EXPORT_SYMBOL vmlinux 0xd6b33026 cpu_khz +EXPORT_SYMBOL vmlinux 0xd6b57799 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0xd6da347b dquot_drop +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6f4ccfe lock_fb_info +EXPORT_SYMBOL vmlinux 0xd7230a95 __put_cred +EXPORT_SYMBOL vmlinux 0xd74d004a sk_receive_skb +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd76424c5 generic_file_llseek +EXPORT_SYMBOL vmlinux 0xd76550de qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0xd77a5aa5 __bitmap_and +EXPORT_SYMBOL vmlinux 0xd78f0102 create_syslog_header +EXPORT_SYMBOL vmlinux 0xd79b5a02 allow_signal +EXPORT_SYMBOL vmlinux 0xd79befb1 blk_complete_request +EXPORT_SYMBOL vmlinux 0xd7ae74c7 tcp_proc_register +EXPORT_SYMBOL vmlinux 0xd7c3f60e __inode_permission +EXPORT_SYMBOL vmlinux 0xd7c555fb pci_target_state +EXPORT_SYMBOL vmlinux 0xd7cbddda memcpy_toiovec +EXPORT_SYMBOL vmlinux 0xd7dd777b reserve_perfctr_nmi +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd8142dbb __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0xd8198ffe ftrace_raw_output_prep +EXPORT_SYMBOL vmlinux 0xd81ae867 generic_file_splice_write +EXPORT_SYMBOL vmlinux 0xd8327ca7 kill_block_super +EXPORT_SYMBOL vmlinux 0xd8585953 dst_discard +EXPORT_SYMBOL vmlinux 0xd85961ac xfrm6_rcv +EXPORT_SYMBOL vmlinux 0xd86339e2 __scm_send +EXPORT_SYMBOL vmlinux 0xd87b6d1d dev_get_stats +EXPORT_SYMBOL vmlinux 0xd899f3cc netif_carrier_off +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8c7242f i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0xd8c72cf0 ifla_policy +EXPORT_SYMBOL vmlinux 0xd8ce285e set_groups +EXPORT_SYMBOL vmlinux 0xd8d65474 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0xd8d85b0e pnpacpi_protocol +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e3084b path_nosuid +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8e7b3b8 registered_fb +EXPORT_SYMBOL vmlinux 0xd9091363 acpi_install_notify_handler +EXPORT_SYMBOL vmlinux 0xd911fa7e mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0xd918e7f0 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0xd92afabe bitmap_clear +EXPORT_SYMBOL vmlinux 0xd92e16ba csum_partial_copy_fromiovecend +EXPORT_SYMBOL vmlinux 0xd94322e7 acpi_evaluate_reference +EXPORT_SYMBOL vmlinux 0xd957f0bf seq_lseek +EXPORT_SYMBOL vmlinux 0xd969b2c7 amd_e400_c1e_detected +EXPORT_SYMBOL vmlinux 0xd96a235e remove_arg_zero +EXPORT_SYMBOL vmlinux 0xd984b143 sg_miter_next +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd9866682 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0xd9907409 cdev_alloc +EXPORT_SYMBOL vmlinux 0xd998459b netlink_ack +EXPORT_SYMBOL vmlinux 0xd99b7860 phy_start_aneg +EXPORT_SYMBOL vmlinux 0xd9a5b86f bio_integrity_free +EXPORT_SYMBOL vmlinux 0xd9a9bb30 getname +EXPORT_SYMBOL vmlinux 0xd9c808ad bio_integrity_clone +EXPORT_SYMBOL vmlinux 0xd9cc9979 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0xd9cfa98d blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0xd9fb7504 sock_wake_async +EXPORT_SYMBOL vmlinux 0xd9ff1986 qdisc_destroy +EXPORT_SYMBOL vmlinux 0xda02b016 sockfd_lookup +EXPORT_SYMBOL vmlinux 0xda2478d0 param_ops_short +EXPORT_SYMBOL vmlinux 0xda2b56da lro_receive_skb +EXPORT_SYMBOL vmlinux 0xda33dccf remove_proc_entry +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda3e43d1 _raw_spin_unlock +EXPORT_SYMBOL vmlinux 0xda494c6c ip6_frag_init +EXPORT_SYMBOL vmlinux 0xda577b3c jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0xda685f97 inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda8f378d d_find_alias +EXPORT_SYMBOL vmlinux 0xda8fcf61 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0xda9f5f3d seq_open_private +EXPORT_SYMBOL vmlinux 0xdaa68fa8 compat_nf_getsockopt +EXPORT_SYMBOL vmlinux 0xdab832c8 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0xdabe2beb xfrm_register_type +EXPORT_SYMBOL vmlinux 0xdada9a07 cfb_copyarea +EXPORT_SYMBOL vmlinux 0xdaea6e0d mfd_clone_cell +EXPORT_SYMBOL vmlinux 0xdaec2e6a pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0xdb2fafa6 amd_iommu_complete_ppr +EXPORT_SYMBOL vmlinux 0xdb40826b d_alloc_name +EXPORT_SYMBOL vmlinux 0xdb450ec1 pipe_lock +EXPORT_SYMBOL vmlinux 0xdb5025c1 get_agp_version +EXPORT_SYMBOL vmlinux 0xdb52fb6d fb_set_cmap +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb7bcade drop_nlink +EXPORT_SYMBOL vmlinux 0xdbb43239 __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xdbcc255f mutex_lock_killable +EXPORT_SYMBOL vmlinux 0xdbcd416e sysctl_ip_nonlocal_bind +EXPORT_SYMBOL vmlinux 0xdbda917e dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0xdbdaaa6b blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0xdc02ef70 textsearch_destroy +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc18d0a4 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0xdc217e66 dev_printk +EXPORT_SYMBOL vmlinux 0xdc3c41a8 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc4c2480 tty_name +EXPORT_SYMBOL vmlinux 0xdc4ee6de inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0xdc5372e3 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0xdc57f532 acpi_install_gpe_handler +EXPORT_SYMBOL vmlinux 0xdc7e0205 padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0xdc807b98 kthread_stop +EXPORT_SYMBOL vmlinux 0xdc85327a __memcg_kmem_get_cache +EXPORT_SYMBOL vmlinux 0xdc8d1dde _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0xdcf80c1c account_page_redirty +EXPORT_SYMBOL vmlinux 0xdd354030 abort_creds +EXPORT_SYMBOL vmlinux 0xdd5a6a24 release_sock +EXPORT_SYMBOL vmlinux 0xdd87e4e4 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0xddc5786b security_path_link +EXPORT_SYMBOL vmlinux 0xddd4ffb7 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0xdde1c4c2 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0xdde83545 intel_gtt_get +EXPORT_SYMBOL vmlinux 0xde10eb10 param_set_invbool +EXPORT_SYMBOL vmlinux 0xde16dc16 tboot +EXPORT_SYMBOL vmlinux 0xde3287c4 bitmap_unplug +EXPORT_SYMBOL vmlinux 0xde494e11 generic_show_options +EXPORT_SYMBOL vmlinux 0xde6151db tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0xde8b535e iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde98c647 kobject_put +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xde9d4719 inode_dio_wait +EXPORT_SYMBOL vmlinux 0xdecab105 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0xded0d0d0 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0xdeddd61e locks_mandatory_area +EXPORT_SYMBOL vmlinux 0xdee47f7d jbd2__journal_start +EXPORT_SYMBOL vmlinux 0xdeeb76f2 kill_pgrp +EXPORT_SYMBOL vmlinux 0xdf0da3cc acpi_get_devices +EXPORT_SYMBOL vmlinux 0xdf0ee577 input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf2e8b01 elevator_change +EXPORT_SYMBOL vmlinux 0xdf300c24 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0xdf455e07 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0xdf48a0eb flex_array_put +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf768888 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0xdf78b393 dm_kobject_release +EXPORT_SYMBOL vmlinux 0xdf8c695a __ndelay +EXPORT_SYMBOL vmlinux 0xdf8d72be phy_print_status +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf990ed5 agp_create_memory +EXPORT_SYMBOL vmlinux 0xdf99d614 bio_put +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfcc77a8 d_lookup +EXPORT_SYMBOL vmlinux 0xdfd0715f d_instantiate +EXPORT_SYMBOL vmlinux 0xdff79f5a __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xe00d77a1 mb_cache_destroy +EXPORT_SYMBOL vmlinux 0xe01921cb pci_remove_bus +EXPORT_SYMBOL vmlinux 0xe046466c cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0xe04701c7 max8998_write_reg +EXPORT_SYMBOL vmlinux 0xe04d08f3 init_task +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 0xe07e461f vfs_create +EXPORT_SYMBOL vmlinux 0xe08188e3 inet6_bind +EXPORT_SYMBOL vmlinux 0xe0ac8bd2 acpi_bus_generate_netlink_event +EXPORT_SYMBOL vmlinux 0xe0ae4d9c ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0xe0af0dac udp6_csum_init +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0c03a0f udp_ioctl +EXPORT_SYMBOL vmlinux 0xe0da2ded fb_is_primary_device +EXPORT_SYMBOL vmlinux 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe1160dbb tcp_recvmsg +EXPORT_SYMBOL vmlinux 0xe1165ea5 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0xe13cd8a7 dmi_name_in_vendors +EXPORT_SYMBOL vmlinux 0xe14ac646 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0xe15f42bb _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe18a1e07 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0xe1c3876b blk_queue_bounce +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe2475d0e pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0xe24b764f sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe250937f inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xe27616df notify_change +EXPORT_SYMBOL vmlinux 0xe27d06a9 nobh_writepage +EXPORT_SYMBOL vmlinux 0xe27f1466 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0xe27f6deb neigh_destroy +EXPORT_SYMBOL vmlinux 0xe29b04e9 acpi_set_firmware_waking_vector64 +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2a8a9f3 fb_pan_display +EXPORT_SYMBOL vmlinux 0xe2b0f137 pci_get_slot +EXPORT_SYMBOL vmlinux 0xe2c57751 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0xe2cfb038 __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2f8ce60 page_symlink +EXPORT_SYMBOL vmlinux 0xe312a314 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0xe315ce35 __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xe319eb24 acpi_pci_osc_control_set +EXPORT_SYMBOL vmlinux 0xe32cc47a read_dev_sector +EXPORT_SYMBOL vmlinux 0xe336b839 compat_ip_setsockopt +EXPORT_SYMBOL vmlinux 0xe37dafb1 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0xe3879121 dquot_resume +EXPORT_SYMBOL vmlinux 0xe3a53f4c sort +EXPORT_SYMBOL vmlinux 0xe3c137ef tty_unthrottle +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3e12008 __first_cpu +EXPORT_SYMBOL vmlinux 0xe3e2b388 clear_inode +EXPORT_SYMBOL vmlinux 0xe3f1f5d9 udp_del_offload +EXPORT_SYMBOL vmlinux 0xe3fb7111 splice_from_pipe_next +EXPORT_SYMBOL vmlinux 0xe40a1bcd pci_reenable_device +EXPORT_SYMBOL vmlinux 0xe4158d4a scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0xe41f0e20 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0xe46aeecf udp_prot +EXPORT_SYMBOL vmlinux 0xe46d35c8 dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0xe48413c8 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe48b3f5d generic_block_bmap +EXPORT_SYMBOL vmlinux 0xe4947cd8 blk_integrity_register +EXPORT_SYMBOL vmlinux 0xe4a3484d xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0xe4c642ba do_SAK +EXPORT_SYMBOL vmlinux 0xe4c83445 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0xe4cca7a1 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0xe4e05b18 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0xe4ea582f alloc_disk_node +EXPORT_SYMBOL vmlinux 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL vmlinux 0xe4f7f058 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0xe5122890 flow_cache_genid +EXPORT_SYMBOL vmlinux 0xe514e667 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0xe5208918 acpi_gbl_FADT +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe527c779 pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0xe52b493e padata_do_serial +EXPORT_SYMBOL vmlinux 0xe530d757 acpi_clear_gpe +EXPORT_SYMBOL vmlinux 0xe533fada input_register_handler +EXPORT_SYMBOL vmlinux 0xe571f8ab find_lock_page +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe58895f6 lock_may_read +EXPORT_SYMBOL vmlinux 0xe58d453d ilookup5_nowait +EXPORT_SYMBOL vmlinux 0xe590a153 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0xe596a565 __netif_schedule +EXPORT_SYMBOL vmlinux 0xe5bec95c i8253_lock +EXPORT_SYMBOL vmlinux 0xe5bff067 dma_common_mmap +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5ddef58 generic_listxattr +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe5fb65d9 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0xe607cd63 ppp_channel_index +EXPORT_SYMBOL vmlinux 0xe6209925 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0xe637bb6c file_update_time +EXPORT_SYMBOL vmlinux 0xe64d98fe rdmsr_safe_regs +EXPORT_SYMBOL vmlinux 0xe6634d39 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0xe6652df9 input_unregister_device +EXPORT_SYMBOL vmlinux 0xe66d492a pcim_enable_device +EXPORT_SYMBOL vmlinux 0xe68c4297 replace_mount_options +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69a9df4 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0xe6a7e4d5 __devm_release_region +EXPORT_SYMBOL vmlinux 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL vmlinux 0xe6c7dd24 release_pages +EXPORT_SYMBOL vmlinux 0xe6d59946 scsi_block_requests +EXPORT_SYMBOL vmlinux 0xe6e3b875 down_write +EXPORT_SYMBOL vmlinux 0xe6ee19ec pcim_iomap +EXPORT_SYMBOL vmlinux 0xe6f167ed xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0xe6f36ab2 pcim_pin_device +EXPORT_SYMBOL vmlinux 0xe6fb675c node_to_cpumask_map +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe705a63f acpi_bus_unregister_driver +EXPORT_SYMBOL vmlinux 0xe716baed acpi_unregister_ioapic +EXPORT_SYMBOL vmlinux 0xe726b6b5 generic_removexattr +EXPORT_SYMBOL vmlinux 0xe7521661 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0xe756a236 freezing_slow_path +EXPORT_SYMBOL vmlinux 0xe7722171 flex_array_free +EXPORT_SYMBOL vmlinux 0xe7724ea3 simple_transaction_get +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7ccadf1 uart_register_driver +EXPORT_SYMBOL vmlinux 0xe7cfe66b ipmi_smi_watcher_unregister +EXPORT_SYMBOL vmlinux 0xe7d1e916 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0xe7d1e9be cpumask_set_cpu_local_first +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7f8f7b4 file_open_root +EXPORT_SYMBOL vmlinux 0xe809dd9e kernel_read +EXPORT_SYMBOL vmlinux 0xe8233ad3 dm_register_target +EXPORT_SYMBOL vmlinux 0xe82eebc9 tcf_register_action +EXPORT_SYMBOL vmlinux 0xe834f4bc get_super +EXPORT_SYMBOL vmlinux 0xe83b82e4 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xe844ba52 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0xe872ed5b scsicam_bios_param +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe881b597 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0xe881ea9d dma_supported +EXPORT_SYMBOL vmlinux 0xe895f639 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0xe8b63ace radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xe8b7477f ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0xe8baeac2 kthread_bind +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8bf5696 padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xe8dbafef __next_cpu +EXPORT_SYMBOL vmlinux 0xe8eeb418 arp_create +EXPORT_SYMBOL vmlinux 0xe8eff962 tty_port_init +EXPORT_SYMBOL vmlinux 0xe8f00ad1 seq_escape +EXPORT_SYMBOL vmlinux 0xe8f8f252 eth_rebuild_header +EXPORT_SYMBOL vmlinux 0xe911e840 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe914ea5f get_phy_device +EXPORT_SYMBOL vmlinux 0xe91d6881 posix_test_lock +EXPORT_SYMBOL vmlinux 0xe9248556 __scsi_add_device +EXPORT_SYMBOL vmlinux 0xe92b826e dma_pool_create +EXPORT_SYMBOL vmlinux 0xe932a90b x86_hyper +EXPORT_SYMBOL vmlinux 0xe94be972 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe96b93d0 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xe973f70a add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0xe978f749 __nla_reserve +EXPORT_SYMBOL vmlinux 0xe997667b wrmsr_on_cpu +EXPORT_SYMBOL vmlinux 0xe9a34215 register_framebuffer +EXPORT_SYMBOL vmlinux 0xe9b9d30d neigh_direct_output +EXPORT_SYMBOL vmlinux 0xe9c9c7d3 dev_addr_add +EXPORT_SYMBOL vmlinux 0xe9d3a32c lookup_bdev +EXPORT_SYMBOL vmlinux 0xe9dff136 mempool_alloc +EXPORT_SYMBOL vmlinux 0xe9f3f32b tcp_release_cb +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea10212a int_to_scsilun +EXPORT_SYMBOL vmlinux 0xea10655a __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xea16dd4c tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xea59212a invalidate_partition +EXPORT_SYMBOL vmlinux 0xea7b8a44 acpi_install_interface +EXPORT_SYMBOL vmlinux 0xea90bdd3 acpi_attach_data +EXPORT_SYMBOL vmlinux 0xea97b4be vga_switcheroo_register_handler +EXPORT_SYMBOL vmlinux 0xeac73847 irq_regs +EXPORT_SYMBOL vmlinux 0xeae3dfd6 __const_udelay +EXPORT_SYMBOL vmlinux 0xeaed75b7 nf_setsockopt +EXPORT_SYMBOL vmlinux 0xeaf74b2f tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0xeafa168f gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0xeb128928 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb44339a free_pages_exact +EXPORT_SYMBOL vmlinux 0xeb4bd9d2 con_copy_unimap +EXPORT_SYMBOL vmlinux 0xeb8c0e1a d_drop +EXPORT_SYMBOL vmlinux 0xeba27788 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0xebbbaeff seq_release +EXPORT_SYMBOL vmlinux 0xebdbe48c radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xec13dc16 lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xec2736d9 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0xec2f795a mmc_add_host +EXPORT_SYMBOL vmlinux 0xec312dfc pci_enable_msix +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec5255af filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0xec546be6 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0xec5f90e6 padata_start +EXPORT_SYMBOL vmlinux 0xec689aef lro_receive_frags +EXPORT_SYMBOL vmlinux 0xec730387 _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0xec782f3a pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0xec9a3e4f free_netdev +EXPORT_SYMBOL vmlinux 0xec9ceed5 twl6040_power +EXPORT_SYMBOL vmlinux 0xeca70ccc find_or_create_page +EXPORT_SYMBOL vmlinux 0xecb1f1cd jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0xeccd3e0c acpi_handle_printk +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecf76d1f netpoll_parse_options +EXPORT_SYMBOL vmlinux 0xed0342a5 led_set_brightness +EXPORT_SYMBOL vmlinux 0xed176647 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0xed4186a6 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0xed455981 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0xed556b99 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed628311 try_module_get +EXPORT_SYMBOL vmlinux 0xed649ea8 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xed8caa08 blk_mq_free_queue +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xedb640fa sync_inodes_sb +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedbd72d3 inet_getname +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc73a01 inet_select_addr +EXPORT_SYMBOL vmlinux 0xedda6fda scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0xede3acb3 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xee0a055c __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xee15f621 bitmap_end_sync +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee46885d add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0xee51d0ff blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0xee7eb9e1 pnp_platform_devices +EXPORT_SYMBOL vmlinux 0xee842bc3 generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xee925d8f read_cache_page +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeead534e do_sync_write +EXPORT_SYMBOL vmlinux 0xeeb465b2 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0xeeb5bd3b __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0xeebd897e netdev_state_change +EXPORT_SYMBOL vmlinux 0xeebfae44 i2c_del_driver +EXPORT_SYMBOL vmlinux 0xeee9a9c3 bprm_change_interp +EXPORT_SYMBOL vmlinux 0xeeec26a7 queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xef1124e0 alloc_file +EXPORT_SYMBOL vmlinux 0xef272e4a dm_get_mapinfo +EXPORT_SYMBOL vmlinux 0xef311442 elv_rb_find +EXPORT_SYMBOL vmlinux 0xef39822f generic_make_request +EXPORT_SYMBOL vmlinux 0xef3cef98 __dev_remove_offload +EXPORT_SYMBOL vmlinux 0xef3fdeca console_start +EXPORT_SYMBOL vmlinux 0xef5abab4 netdev_warn +EXPORT_SYMBOL vmlinux 0xef5b5080 from_kgid +EXPORT_SYMBOL vmlinux 0xef5cb1c8 __sb_end_write +EXPORT_SYMBOL vmlinux 0xef835946 key_type_keyring +EXPORT_SYMBOL vmlinux 0xef9aedfc boot_option_idle_override +EXPORT_SYMBOL vmlinux 0xef9da40f spi_display_xfer_agreement +EXPORT_SYMBOL vmlinux 0xefb3a049 dquot_initialize +EXPORT_SYMBOL vmlinux 0xefb6b186 interruptible_sleep_on_timeout +EXPORT_SYMBOL vmlinux 0xefba93e1 mempool_destroy +EXPORT_SYMBOL vmlinux 0xefda963c __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefe099c3 acpi_get_event_status +EXPORT_SYMBOL vmlinux 0xefe57446 mount_nodev +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf0480dee i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf0619801 timekeeping_clocktai +EXPORT_SYMBOL vmlinux 0xf0652733 bio_sector_offset +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf067257c register_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0xf0708f4b security_inode_init_security +EXPORT_SYMBOL vmlinux 0xf085d6b0 dquot_release +EXPORT_SYMBOL vmlinux 0xf087137d __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0xf09bb308 vga_switcheroo_set_dynamic_switch +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0a0a17b fd_install +EXPORT_SYMBOL vmlinux 0xf0bb5d24 sock_init_data +EXPORT_SYMBOL vmlinux 0xf0be8b05 ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0xf0d74749 netpoll_print_options +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0f1246c kvasprintf +EXPORT_SYMBOL vmlinux 0xf0fa1316 amd_iommu_domain_direct_map +EXPORT_SYMBOL vmlinux 0xf0fa920a dst_destroy +EXPORT_SYMBOL vmlinux 0xf0fdf6cb __stack_chk_fail +EXPORT_SYMBOL vmlinux 0xf100416a remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xf107d6b0 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf11543ff find_first_zero_bit +EXPORT_SYMBOL vmlinux 0xf116d4b5 copy_in_user +EXPORT_SYMBOL vmlinux 0xf13a8563 alloc_disk +EXPORT_SYMBOL vmlinux 0xf13feb57 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf147ecb1 down_trylock +EXPORT_SYMBOL vmlinux 0xf14e3a5c netif_skb_dev_features +EXPORT_SYMBOL vmlinux 0xf1736385 tcp_ioctl +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf19af79c netlink_set_err +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf202c5cb radix_tree_insert +EXPORT_SYMBOL vmlinux 0xf2036e2b phy_device_create +EXPORT_SYMBOL vmlinux 0xf20c7939 inode_init_owner +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf2126f9f sk_mc_loop +EXPORT_SYMBOL vmlinux 0xf21a156d default_qdisc_ops +EXPORT_SYMBOL vmlinux 0xf21d60e6 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0xf22449ae down_interruptible +EXPORT_SYMBOL vmlinux 0xf2273dd9 tcp_shutdown +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf252c20b jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL vmlinux 0xf264abbe scsi_rescan_device +EXPORT_SYMBOL vmlinux 0xf265710c qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0xf27485b4 intel_gmch_probe +EXPORT_SYMBOL vmlinux 0xf27d82b0 mount_single +EXPORT_SYMBOL vmlinux 0xf28ed6e2 machine_to_phys_nr +EXPORT_SYMBOL vmlinux 0xf298dc8f pcie_get_readrq +EXPORT_SYMBOL vmlinux 0xf2997713 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2b1ac8e __getnstimeofday +EXPORT_SYMBOL vmlinux 0xf2b2e8b5 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0xf2c7a8cd twl6040_get_pll +EXPORT_SYMBOL vmlinux 0xf302fcd3 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0xf312cb9d ucs2_strsize +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf31cbe9a ppp_register_compressor +EXPORT_SYMBOL vmlinux 0xf32055e7 dev_base_lock +EXPORT_SYMBOL vmlinux 0xf32083e9 inet6_getname +EXPORT_SYMBOL vmlinux 0xf3260847 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf37260ab _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0xf37aee92 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf393394a follow_up +EXPORT_SYMBOL vmlinux 0xf396cd21 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xf3986b06 acpi_os_map_generic_address +EXPORT_SYMBOL vmlinux 0xf3b124e0 clocksource_register +EXPORT_SYMBOL vmlinux 0xf3bb3cea sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0xf3bf0bce __bitmap_complement +EXPORT_SYMBOL vmlinux 0xf3bf87f8 dmam_pool_create +EXPORT_SYMBOL vmlinux 0xf40b5c33 vfs_mknod +EXPORT_SYMBOL vmlinux 0xf42022b0 pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0xf432dd3d __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xf43bea5f pm860x_page_bulk_write +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf45ca691 dev_addr_add_multiple +EXPORT_SYMBOL vmlinux 0xf45f9dc7 sk_stream_error +EXPORT_SYMBOL vmlinux 0xf4641e6f pci_vpd_truncate +EXPORT_SYMBOL vmlinux 0xf467abef netlink_kernel_release +EXPORT_SYMBOL vmlinux 0xf4699a8e filp_open +EXPORT_SYMBOL vmlinux 0xf47438b9 scsi_add_device +EXPORT_SYMBOL vmlinux 0xf48bc065 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0xf4a5c213 avail_to_resrv_perfctr_nmi_bit +EXPORT_SYMBOL vmlinux 0xf4ac89ab elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0xf4b095ce agp_bridge +EXPORT_SYMBOL vmlinux 0xf4b754fd acpi_resources_are_enforced +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4dd48fd phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0xf4e453b4 blk_get_queue +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf51ae235 touch_nmi_watchdog +EXPORT_SYMBOL vmlinux 0xf51bf88b nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xf5242879 mutex_lock +EXPORT_SYMBOL vmlinux 0xf52e9055 security_path_mkdir +EXPORT_SYMBOL vmlinux 0xf52f3575 bio_alloc_pages +EXPORT_SYMBOL vmlinux 0xf536d22e acpi_set_gpe_wake_mask +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf5496d63 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0xf55e7a1e blk_mq_alloc_reserved_request +EXPORT_SYMBOL vmlinux 0xf5679b1e splice_from_pipe_end +EXPORT_SYMBOL vmlinux 0xf57391a3 km_report +EXPORT_SYMBOL vmlinux 0xf5893abf up_read +EXPORT_SYMBOL vmlinux 0xf598be6a rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0xf59f98cd end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0xf5b10e67 acpi_install_global_event_handler +EXPORT_SYMBOL vmlinux 0xf5cc2fc0 file_ns_capable +EXPORT_SYMBOL vmlinux 0xf5ce272b idr_for_each +EXPORT_SYMBOL vmlinux 0xf5d93a25 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xf5e2e158 check_submounts_and_drop +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5fa7f73 md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0xf609bb36 spi_release_transport +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf6634e59 mntget +EXPORT_SYMBOL vmlinux 0xf6778ca8 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf68687be __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xf6b813b5 set_security_override +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6d1f7e4 pci_claim_resource +EXPORT_SYMBOL vmlinux 0xf6d5b3cd __napi_complete +EXPORT_SYMBOL vmlinux 0xf6df1418 uart_suspend_port +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6f16c89 skb_free_datagram +EXPORT_SYMBOL vmlinux 0xf6fb669d spi_schedule_dv_device +EXPORT_SYMBOL vmlinux 0xf70b928d dev_mc_flush +EXPORT_SYMBOL vmlinux 0xf7289d14 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0xf741c793 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf75a027c vfs_statfs +EXPORT_SYMBOL vmlinux 0xf75f3ab1 genphy_read_status +EXPORT_SYMBOL vmlinux 0xf76be60b fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0xf7716e9a __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xf7adcaf3 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0xf7f7ab46 phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0xf803fe39 bitmap_set +EXPORT_SYMBOL vmlinux 0xf80de9ff hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf812cff6 memscan +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf8282089 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0xf8299fcc tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82cfd1a proc_dostring +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf840f766 netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0xf84a6216 fb_set_suspend +EXPORT_SYMBOL vmlinux 0xf8585e24 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0xf86ab75a md_integrity_register +EXPORT_SYMBOL vmlinux 0xf86f36b1 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0xf88e0ee2 acpi_get_table_header +EXPORT_SYMBOL vmlinux 0xf8983de7 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0xf8a60b74 unlazy_fpu +EXPORT_SYMBOL vmlinux 0xf8b22cf9 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0xf8bafb13 dquot_disable +EXPORT_SYMBOL vmlinux 0xf8e475ed xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xf8e76764 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0xf911a640 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0xf91d24e8 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0xf93f9ebc pci_iomap +EXPORT_SYMBOL vmlinux 0xf9505a40 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9b8eab1 eth_mac_addr +EXPORT_SYMBOL vmlinux 0xf9c0b663 strlcat +EXPORT_SYMBOL vmlinux 0xf9d641b0 input_flush_device +EXPORT_SYMBOL vmlinux 0xf9db2f03 agp_unbind_memory +EXPORT_SYMBOL vmlinux 0xfa24ecbe unregister_key_type +EXPORT_SYMBOL vmlinux 0xfa419adf dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa66f77c finish_wait +EXPORT_SYMBOL vmlinux 0xfa7f3156 wl12xx_get_platform_data +EXPORT_SYMBOL vmlinux 0xfab383b9 rename_lock +EXPORT_SYMBOL vmlinux 0xfab8fb63 dma_ops +EXPORT_SYMBOL vmlinux 0xfac44333 gen_new_estimator +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacae21b generic_shutdown_super +EXPORT_SYMBOL vmlinux 0xfad53645 generic_file_open +EXPORT_SYMBOL vmlinux 0xfad88c0d uart_unregister_driver +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaf98462 bitrev32 +EXPORT_SYMBOL vmlinux 0xfb0443fb acpi_get_parent +EXPORT_SYMBOL vmlinux 0xfb194946 eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0xfb212ae0 deactivate_super +EXPORT_SYMBOL vmlinux 0xfb313eff user_path_create +EXPORT_SYMBOL vmlinux 0xfb41f3c9 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0xfb5474c9 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0xfb578fc5 memset +EXPORT_SYMBOL vmlinux 0xfb5cf600 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb80c7a0 acpi_walk_namespace +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfb9d0799 tcf_em_register +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbcf7285 pm860x_page_reg_read +EXPORT_SYMBOL vmlinux 0xfbe0da11 sk_stop_timer +EXPORT_SYMBOL vmlinux 0xfbe506ec cancel_dirty_page +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc0faf36 ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0xfc16bb57 devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0xfc321cc8 ll_rw_block +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc3a8895 compat_sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xfc416ff6 simple_open +EXPORT_SYMBOL vmlinux 0xfc5cd853 ip_options_compile +EXPORT_SYMBOL vmlinux 0xfc7cfea7 agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0xfc872fd1 get_ibs_caps +EXPORT_SYMBOL vmlinux 0xfcaa04a0 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xfcac0d40 acpi_install_interface_handler +EXPORT_SYMBOL vmlinux 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL vmlinux 0xfcb926cd kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcc54f91 lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0xfccecf29 bdget_disk +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd1d98d8 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0xfd246d59 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0xfd35b718 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0xfd3bcbf7 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0xfd4d8289 simple_transaction_release +EXPORT_SYMBOL vmlinux 0xfd6293c2 boot_tvec_bases +EXPORT_SYMBOL vmlinux 0xfd71510a jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0xfd977802 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfda0dbe8 ftrace_print_hex_seq +EXPORT_SYMBOL vmlinux 0xfda900bc __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0xfdb356a1 sync_blockdev +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdc81ced sock_edemux +EXPORT_SYMBOL vmlinux 0xfdcbfaf0 __lock_buffer +EXPORT_SYMBOL vmlinux 0xfdee7d42 _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0xfdf37456 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0xfdfb792f amd_iommu_pc_supported +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfe00166b neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe047ce6 acpi_enter_sleep_state +EXPORT_SYMBOL vmlinux 0xfe0cba54 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0xfe26fc7c nr_node_ids +EXPORT_SYMBOL vmlinux 0xfe39e052 pv_mmu_ops +EXPORT_SYMBOL vmlinux 0xfe3a6bc0 dev_remove_pack +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe69b74c __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0xfe6f168b try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe897e36 pci_enable_ltr +EXPORT_SYMBOL vmlinux 0xfe9ebbbb acpi_osi_is_win8 +EXPORT_SYMBOL vmlinux 0xfea32c2a proc_remove +EXPORT_SYMBOL vmlinux 0xfec09c41 __serio_register_port +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfeebc7c4 __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0xfeeed6b8 dev_get_nest_level +EXPORT_SYMBOL vmlinux 0xfef96e23 __scsi_print_command +EXPORT_SYMBOL vmlinux 0xff0eb541 vfs_link +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff4ee3cd net_dma_find_channel +EXPORT_SYMBOL vmlinux 0xff5d2a7e mnt_pin +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff784133 seq_putc +EXPORT_SYMBOL vmlinux 0xff83f417 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0xff91cd69 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffa1397d xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0xffc26742 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0xffcc168b scsi_print_command +EXPORT_SYMBOL vmlinux 0xffd2e605 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xfff40d5c page_zero_new_buffers +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 0x16e4bee6 lrw_camellia_exit_tfm +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 0x48c369a3 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 0x716d8522 lrw_camellia_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x930f687f camellia_decrypt_cbc_2way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0xa41a5ad3 camellia_dec_blk +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0xf4521fda camellia_dec_blk_2way +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x1df7eb0e glue_ecb_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x292627af glue_ctr_crypt_final_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x5bdb5251 glue_cbc_decrypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x711dbe44 glue_xts_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x8f02ac4d glue_xts_crypt_128bit_one +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0xba2aec70 glue_cbc_encrypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0xd9a04bbf glue_ctr_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x016a957f serpent_xts_enc_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x0c5a8af6 serpent_xts_dec_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x0ff3c26d serpent_xts_dec +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x45c753a4 xts_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 0x657d8ad8 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 0xa84ea33d serpent_ecb_enc_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0xe8981047 lrw_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 0x2fd6cae9 lrw_twofish_exit_tfm +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0x40b6d199 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 0xede9927a xts_twofish_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0xf2e80e9c __twofish_enc_blk_3way +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x005f3e5e kvm_read_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x00aaf935 kvm_disable_tdp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x011ddefd kvm_mmu_invlpg +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x015cc3ab kvm_apic_update_irr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x01d1379d __kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x05474f97 gfn_to_hva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x09639a5a kvm_set_cr3 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0dd1638a kvm_clear_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x14d0e580 x86_emulate_instruction +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x15e35ee2 kvm_is_linear_rip +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1cfe78d1 kvm_release_pfn_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1e9fe376 kvm_rdpmc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1f26a828 kvm_valid_efer +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x224aad2f kvm_mmu_unprotect_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x253ed039 kvm_mmu_unprotect_page_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2a839d39 kvm_emulate_hypercall +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2b0269bf kvm_release_page_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2bb074b6 gfn_to_pfn_async +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x317f9e6b kvm_enable_efer_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x39493c51 kvm_x86_ops +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3a4155cd kvm_set_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3b5dd35e __tracepoint_kvm_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3c8e8e02 kvm_flush_remote_tlbs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3e62ad9a kvm_inject_pending_timer_irqs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x43509e9b load_pdptrs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x44255f33 kvm_mmu_load +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x486d85b5 kvm_set_cr4 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x48d3f020 kvm_mmu_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x48d8bfbc kvm_write_tsc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x497c38f9 gfn_to_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4b7f50de fx_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4c51f664 __tracepoint_kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4cab1e37 kvm_release_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x51340af9 kvm_init_shadow_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x53391a92 kvm_mmu_sync_roots +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x53a2a3f7 __tracepoint_kvm_inj_virq +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5987ebcf kvm_lmsw +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5a518962 kvm_emulate_halt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5b095765 kvm_arch_register_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5e6f04c4 kvm_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5ea87491 kvm_fast_pio_out +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x62b75bd2 kvm_vcpu_cache +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x64020e10 kvm_set_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x64a34f49 __tracepoint_kvm_nested_vmexit_inject +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x66be1767 kvm_get_guest_memory_type +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x68d25d58 kvm_set_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6b796f22 kvm_mmu_flush_tlb +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6bada028 kvm_inject_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6e624149 kvm_emulate_wbinvd +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6f7d4be8 gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6fc79818 kvm_get_cs_db_l_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x709cd8cb kvm_spurious_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x72f30b1c kvm_inject_realmode_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x73fdf142 gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x76df156b kvm_write_guest_virt_system +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x79732a93 kvm_write_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7c502ab9 __tracepoint_kvm_nested_intr_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7c5af634 kvm_write_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7de040f0 kvm_irq_has_notifier +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7e0968dc kvm_get_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7e299b93 kvm_vcpu_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7f2c1163 __tracepoint_kvm_nested_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8063d0fa gfn_to_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x81775922 kvm_resched +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x81a8a533 kvm_arch_unregister_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x831327da kvm_max_guest_tsc_khz +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x843aa934 kvm_set_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x854abe61 kvm_put_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x876dabf1 kvm_mmu_unload +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x87eed191 kvm_apic_set_eoi_accelerated +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x88d3aed2 kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8a26f7b0 __tracepoint_kvm_nested_intercepts +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8b15ba52 kvm_vcpu_on_spin +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 0x90429096 kvm_set_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x985cf640 kvm_read_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x99cee2e1 kvm_read_guest_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x99fdb851 kvm_vcpu_kick +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9a216313 kvm_define_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9ee59155 __tracepoint_kvm_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa0ec3a0a gfn_to_hva_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa4861859 gfn_to_pfn_prot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa4a2c882 kvm_get_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa508e36b __tracepoint_kvm_skinit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaa79cab5 __tracepoint_kvm_cr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xab51963b kvm_task_switch +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xab9076bc kvm_get_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xac31d126 kvm_inject_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xac386fc4 kvm_init_shadow_ept_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xace883a3 kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xacf7f97c gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xae454e67 kvm_set_cr0 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xae5615d3 kvm_requeue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaefa54f7 kvm_read_guest_page_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaf275715 __tracepoint_kvm_nested_vmrun +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb28baba3 kvm_requeue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb5c85e93 kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb741d740 kvm_get_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb965df82 kvm_set_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xba9ed435 kvm_mmu_set_mmio_spte_mask +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbc44d5bb kvm_set_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbe52c70f kvm_after_handle_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbf0f40ec mark_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc1508236 kvm_apic_write_nodecode +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc181e21e kvm_set_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc5e3c752 kvm_clear_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc5f49fbc kvm_read_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc9a83702 kvm_arch_has_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xca51b335 kvm_get_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcc68546f kvm_get_dirty_log +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xceb6e2dc kvm_complete_insn_gp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcef3fec5 __tracepoint_kvm_write_tsc_offset +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd0459e67 kvm_has_tsc_control +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd0b2727a kvm_mmu_set_mask_ptes +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd3fb5477 kvm_emulate_cpuid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd5558ffc kvm_vcpu_block +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd757fe98 kvm_mmu_get_spte_hierarchy +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdb86d2c5 kvm_cpuid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdbbf5e12 kvm_vcpu_uninit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xde252faf kvm_before_handle_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdeb9e564 __tracepoint_kvm_invlpga +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe0674db3 kvm_lapic_set_eoi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe0783dae handle_mmio_page_fault_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe2101a2c kvm_queue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xeaee0d13 kvm_mmu_reset_context +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xeaf6dbf1 kvm_get_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xedfdeffa kvm_queue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf17d4aeb kvm_cpu_has_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf45af2bd gfn_to_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf5602aec kvm_is_visible_gfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfacf2108 kvm_set_xcr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfc5deb2a kvm_find_cpuid_entry +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfe3600c9 kvm_require_cpl +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x3f4dd0d1 __ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x5a733c07 ablk_init_common +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x5b2d35d2 ablk_decrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x9a67c9d7 ablk_exit +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xcbb56704 ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xe9b0beb7 ablk_set_key +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xf76b276c ablk_init +EXPORT_SYMBOL_GPL crypto/af_alg 0x24f82cd1 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x289197b2 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0x4989edc7 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x4bbb5dbf af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x565ece8d af_alg_release_parent +EXPORT_SYMBOL_GPL crypto/af_alg 0x65eef7f4 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x6924b6eb af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0xae65d509 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0xe01a6f07 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0xe6f21d97 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0xa61eaacd async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x2db49fa8 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xd689ffe0 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x0c7db0bc async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x3fa2c3bd async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x45a3934f async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x50e31462 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x977959e9 __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xb1a85a77 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x52d835cb async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xc71a6ec7 async_xor +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0xc7729f92 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 0xca3db466 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 0x39379bf8 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 0x0e46997b cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x392d889c cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x3b035c54 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x6e14eed6 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xbe56525d cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xc7dcd4fe cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xc932048e cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xd96cf209 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0xfa0593f4 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xfae5a1e4 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/lrw 0xf670af8c lrw_crypt +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 0xc33b423f serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0xd11f2666 twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0xd1dd60a1 xts_crypt +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/ahci_platform 0x04528e95 ahci_platform_suspend_host +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x0d26faed ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x0fb3f2c3 ahci_platform_resume +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x1611bcd6 ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x23d0bcf9 ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x5670dc62 ahci_platform_suspend +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x900a8466 ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xad995f7f ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xba3014b3 ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xf1682eba ahci_platform_resume_host +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xf3e0d24f ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x01a30fa1 ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x08264842 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x1194e09e ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x27a75dad ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x2dba1608 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x42e3cd99 ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x43c1aac6 ahci_restart_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x4922d992 ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x54e45d8a ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5e7cc61d ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5eacba1f ahci_interrupt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x62d06123 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x656a330c ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x694f923e ahci_thread_fn +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6cbc7d54 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6e05c4e7 ahci_hw_interrupt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7fd64356 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x817fe246 ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x9b9f13c9 ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa206a69b ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xb3b8aa10 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xcd95cc5d ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xec7d0fd0 ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf030e133 ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf5e0f4f2 ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0xa7fce1d2 __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/bcma/bcma 0x0195ee86 bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x01dcd640 bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x06197f59 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x0d2fdb27 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1b375a0a bcma_find_core +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x30f0ce46 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x379aefdd bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x48fc3a0c bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4a94947d bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6e2f3b91 bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7dd0ff98 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7e8c5995 bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x83161a31 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8389fc8b bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa1783a3c bcma_core_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xaa3e96d4 bcma_core_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xabbcd7de bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb7fe0a45 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd0155f5e bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd2060154 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xdcacbfd2 bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe1dc2b35 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe26789a1 bcma_core_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x445372ad btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x51ad6958 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x569bbcac btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x5fb2f841 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x78598c05 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x7c8a3b53 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xb1c001d6 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xe07db09f btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xe9f796a2 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xf9836eb0 btmrvl_register_hdev +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/dca/dca 0x01a33ab9 dca_unregister_notify +EXPORT_SYMBOL_GPL drivers/dca/dca 0x10cc9c68 dca_add_requester +EXPORT_SYMBOL_GPL drivers/dca/dca 0x31a2c8df dca_get_tag +EXPORT_SYMBOL_GPL drivers/dca/dca 0x8b581df2 unregister_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0x94ec52d2 dca_remove_requester +EXPORT_SYMBOL_GPL drivers/dca/dca 0x96af7c71 alloc_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0xac34ecec dca_register_notify +EXPORT_SYMBOL_GPL drivers/dca/dca 0xc545242d free_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0xd5b1f721 dca3_get_tag +EXPORT_SYMBOL_GPL drivers/dca/dca 0xffb29951 register_dca_provider +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x2b9a7bef dw_dma_shutdown +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x3a60469c dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x73dc225f dw_dma_suspend +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x7f355bf3 dw_dma_resume +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xdefd2fe2 dw_dma_probe +EXPORT_SYMBOL_GPL drivers/edac/amd64_edac_mod 0xe119d298 amd64_get_dram_hole_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0a60d042 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2170a663 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x276b60ec edac_mc_add_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2d8f0d1f edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2de77a73 edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x3400357b edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x34090f57 edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5e11e194 edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5f63191b edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x69259f22 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x694c3389 edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6d73543a edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7d47d479 edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x8ab5074f edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x8b735949 edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x8bf33fcc edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9617ae70 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xab8ceef3 edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xac46894d edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd0ebc303 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd6fbfec8 find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xdebea677 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe8e7f09c edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xfa35bda1 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x14878009 amd_report_gart_errors +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x1d34e996 pp_msgs +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x21626132 amd_register_ecc_decoder +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x737912b3 amd_unregister_ecc_decoder +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0xb30b7e56 amd_decode_mce +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/gpio/gpio-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 0x47a1e964 bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x5537d866 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x402a651a __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x5e8021b3 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x0624f68c drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x08bdc455 drm_vm_open_locked +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x8427a421 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 0x2b2c59ae i915_release_power_well +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 0x96108893 i915_request_power_well +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0xb76bf2ac i915_get_cdclk_freq +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0xe7237b0b i915_gpu_turbo_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x0aec99ea ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x0f196629 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 0xc9c55fc9 ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xce36343e ttm_prime_handle_to_fd +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0059e48c hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0x03f90399 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x089e4937 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x08ec3202 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0923c32c hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0cd04b3d hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1e49b794 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x247461da hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x29f2b305 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x33518376 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x38fc1ab8 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x47022fb4 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4ba6dd75 hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4ee7497d hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5786e8a5 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6597e6b3 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6c688249 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x77ac3fb8 hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x81cdb1e5 hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x823a00b8 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8875507f hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x88a24de4 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8b96f6aa hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x926a7d04 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9f226d87 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa22126cd hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa5f098ac hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb321d4fa hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbc1664d7 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbe882735 hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc9febdec __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd8bd09ee hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf86b7eb8 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfe4e5057 hid_set_field +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 0xe171ee6e roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x21426f67 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x4f421dda roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x73921748 roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xae22fd17 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xd3c2a8d6 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xd8a8a249 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x605ebc58 sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x881bcaa4 sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x9420d10d sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xb3c364ed sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xbada1c37 sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xcdcfb665 sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xe950ddf0 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xf5d8e86d sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xe8ebfed1 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x2a9b6ec7 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x31bed5ea hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x31dad2ea hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x3fdfe9fe hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x4a4bf3ca hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x55743c3e hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x57e6eb09 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x7094a0b2 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x881b9872 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x93150653 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x9cac7815 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xdf4c8d6a hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe3dfb0f7 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x020246fc vmbus_open +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x035bf032 vmbus_get_outgoing_channel +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x20d005a8 vmbus_sendpacket_multipagebuffer +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x358fafa5 vmbus_prep_negotiate_resp +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x3f9c9667 vmbus_sendpacket_pagebuffer_ctl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x46a417ca vmbus_proto_version +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x4d085ba8 vmbus_sendpacket_pagebuffer +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x6365cf2e vmbus_driver_unregister +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x73a7a92d vmbus_are_subchannels_present +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x9231f3d7 __vmbus_driver_register +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xbe377942 vmbus_close +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xca455bf6 vmbus_recvpacket_raw +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xe33eb69e vmbus_set_sc_create_callback +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xec5fba3c vmbus_sendpacket_mpb_desc +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xf31854a1 vmbus_teardown_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xf45dd651 hyperv_mmio +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xfbee0b91 vmbus_establish_gpadl +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xb4365d22 adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xcea5a8d9 adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xe33f3b55 adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x0525c95c pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x16612a90 pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x4068466a pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x490a62a2 pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x7e4b8099 pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xa31ba991 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xc9605539 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xd6fe7c02 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xd91d42e5 pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xe11d043e pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xe91a3945 pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xfe507684 pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x02644b45 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x366ebf8c i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x3f43db2d i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5b326d67 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 0x749b0011 i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x789e2331 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xc2a9b62e i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xfbc353d8 i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xfcfb5b54 i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-nforce2 0x975af695 nforce2_smbus +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x28b5a5e1 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xe1d44b8e i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x7f641f78 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xaea524d7 i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x1b5bf259 ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x3b393a77 ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x4631ed65 ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x4cd4c0cf ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x5c36909f ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xb11a105f ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xd1b5bb44 ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xe929c252 ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xf2d04aea ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x30fdd143 adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x41213083 adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x5bb57deb adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x67dbc2d9 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x6f7150df adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x79a9c607 adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x87a47099 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x96af3f92 adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xa4a0091e adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xd7c31210 adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe999278b adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xf337261d adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0386ceda devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0697c610 iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x176e018d iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1bf59da9 iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x250dc0fa iio_channel_release +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 0x44cbdb22 iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4651e480 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x479ef2dc iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x50fdd69e iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x534f3c05 iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5558141e iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x58d77ef8 iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x665a24b4 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7631440f devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x764fc0a8 iio_scan_mask_set +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x78f92108 iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x88438e9f iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8ef1dd79 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9d811203 iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc2689d5d iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc890ee0e iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc8fedbdc iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd126ee28 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd9024055 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd959d955 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdff3aa9c devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe551125f iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe6901ba4 iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xee5800c9 iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf5b16d63 devm_iio_trigger_alloc +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 0xc4f25f9f input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x12f92c30 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 0xa20d89eb cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xb64b6fd9 cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xc9beefc2 cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x19dc3f45 cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x98e42c4c cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xc4a08554 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x26f4af38 cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x58edae89 cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x119fcc41 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x294dd82c wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x3306867f wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x40cd8775 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x5d739a2f wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x91d99ab1 wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xb1dbab63 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xbad93d88 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xca6c4910 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xd9aa6556 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xdb82c882 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xf45a7b43 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x002eeb9f ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x057406b4 ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x23f44c42 ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x2d667ff2 ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x346fbe5a ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x57fe47b1 ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xaa2e44b4 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xc015035b ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xccd56fa9 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 0x00dd6d62 gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x02dc0866 gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x1eb2e06f gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x39253779 gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x427171b6 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x55a01c83 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x7f2a6bb2 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x85965e6a gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8bc6d737 gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x90a1422f gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9eee2df6 gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa3151853 gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xb777d3a8 gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xb7d7bb54 gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xb8386b01 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc1ac4e92 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd7fffc9b gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xff3807af gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/leds/dell-led 0x86fd1ffb dell_app_wmi_led_set +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x12b530f3 lp55xx_write +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x3f2753b9 lp55xx_update_bits +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x56954b75 lp55xx_deinit_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x6a523786 lp55xx_read +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x7ca7c283 lp55xx_unregister_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x82a4c4e7 lp55xx_register_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x92d4b81f lp55xx_init_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xae406db7 lp55xx_register_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xc5d1ff33 lp55xx_unregister_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xc6381dc9 lp55xx_is_extclk_used +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xe27185be lp55xx_of_populate_pdata +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x749e05f2 ledtrig_flash_ctrl +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x7903e46e ledtrig_torch_ctrl +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x0ec17d44 __tracepoint_bcache_bypass_congested +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x26062738 __tracepoint_bcache_alloc_fail +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 0x8a4afa11 __tracepoint_bcache_alloc_invalidate +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 0x0faf8c7f 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 0x30691494 dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x5da99a2f dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x76f2f83b dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x87bc1330 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 0xd785827e dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xdfd63256 dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xebd06eaf dm_bio_prison_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x3b1a7b96 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 0x01e8556a dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x0f45984e dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x38ac5845 dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x6ccdf048 dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x7a8301e2 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xe698cecd dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xf5d38693 dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x5db7e754 dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x6a57bd6d 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 0x0232b837 dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x11a24947 dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 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 0x4bf43ace 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 0xa6ceacd9 dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbcaa619d 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 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfa0fb8bd 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 0x17c36f29 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1cac81ac dm_bitset_clear_bit +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 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 0x2f74609d dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x32b5f546 dm_array_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x38c75c44 dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x42dbdfc3 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 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 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 0x68fae9d2 dm_disk_bitset_init +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 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 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 0xa0bbbb49 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa13861b4 dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa87c5b4d dm_array_resize +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 0xbd50ebbb dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xc4b067a5 dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xca40abd5 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd041d62b dm_array_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd163cade dm_tm_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd29923fb dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xe44b4b9b dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed1e1f96 dm_btree_remove +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 0xf475af48 dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf5455120 dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/raid1 0x619ebb10 md_raid1_congested +EXPORT_SYMBOL_GPL drivers/md/raid10 0x9c5532f0 md_raid10_congested +EXPORT_SYMBOL_GPL drivers/md/raid456 0x2666221e md_raid5_congested +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x0221eb11 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x25e16266 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x61d39368 saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x81aa1d56 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x894cc9c0 saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x8f85e9f9 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x987d1cad saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xa6bec078 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xba8408b1 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xf730955d saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x0562846a saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x2f3e162f saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x490c9e8c saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xafb8bd57 saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xb62d6c56 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xd9c1d253 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xec3eafbc saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x07a6f867 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x14abdac9 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x36f93d8f smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x3c2aa73a sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x3f1eb141 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 0x56dce7f7 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x58552e30 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7097390d smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x71645b3a smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x79ed45c0 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7b0af348 smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x99a81ab3 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c992736 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc1d66833 smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd223fdc6 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xda2f481c smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xda7d0847 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xdf2518e7 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0x22e710c4 cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0xb7bf57a4 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0x3481c2fc cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x1161443e mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x3bbf5244 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x3f07dae4 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x414b9c77 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x5a1f4596 mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x5af22c51 mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x606871e0 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x78475510 mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x947e3974 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa04378b3 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xae3f6c16 mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xaf1a8d45 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xce57f350 mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xceba9a97 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd5935289 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xdeea59cc mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xeb059778 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x10f1b677 saa7134_s_std_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x4e4a5137 saa7134_g_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x876ab4c4 saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xc0dfac32 saa7134_s_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xfb08164d saa7134_queryctrl +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x0037fb4d ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x4b5c11c6 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x617063df ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x6757e20a 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 0x912a2d9c ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xccd4b0d5 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xf316ca3b ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x273b75b1 radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x3b1537c3 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x03fb9c77 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x04154904 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x126ebcc2 ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x194abd3e rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1ee20202 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x37c071b0 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4429dcbf rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4a6916c2 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 0x5daa8c9d ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x62dde99c rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6eb74678 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x81aac2bf rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa0cf60c1 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa44c17f1 rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa7f210a2 ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa815d1f2 rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb5b13bc1 rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xbeb76c9c rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc735ee7d rc_register_device +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0x876e5834 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x3ca6880c microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x401b78f1 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x7bc0cb08 r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0x89fac6f7 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x5e63b938 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x44068f0e tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x7ea3cad0 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x6efd96a7 tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x92517e9e tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x9878f3ef tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x43a354ab tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xc5fac661 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x916834fc simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1a7428c3 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1f629d87 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x29ae6dea cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x2f09721f cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x34edbbfa cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x3b8a6b7c is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x3ddc70bd cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x78dc407d cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7b5700a1 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7d9cbb35 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x8abd2da2 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x97b3b4da cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa586cb88 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa7c829a1 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xac4ef81f cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xca2aa607 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xcab0e404 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xcf2bd864 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xefb3b7b3 cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x113add8a mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0x26675478 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x03172021 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x1bab6100 em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x28fa07c7 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x38a76d1d em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x40cc9644 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x4673a24b em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x98fd48de em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x9c779188 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa83990b2 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa8ad6433 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xb732786b em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xbeed0683 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xdd258120 em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xe7a9dfdf em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x35599c27 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xbb6cc7f2 tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xfc57b694 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xfddae907 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 0x1b38f556 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x2aeb23c7 v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x6432370a 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 0x8ebd6df3 v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xa8e2eb81 v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xd1d1db21 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 0x221d2fbc v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x36e8756a v4l2_find_dv_timings_cap +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 0x53105839 v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x6976cfe0 v4l2_valid_dv_timings +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 0x7eaf8e7a v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xb0891da2 v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0x15e96a1d v4l2_int_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0x611e0b0c v4l2_int_ioctl_1 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xa5228b24 v4l2_int_device_try_attach_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xb2f96f8a v4l2_int_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xeeaa01ef v4l2_int_ioctl_0 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x051fe1c5 v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0e05ed0b v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17eb0eee v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x308957d0 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x35f6a158 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4c32b7af v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4ffacea2 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x52324c35 v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x56dfda77 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x945f775d v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa80d4f87 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xbcda69c9 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xbd910d6b v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xdc58ef98 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf10d733c v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x01e380f0 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x04322ed1 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2f6c66ac videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2fc82ecc videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3df9338c videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3e993789 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x40625cf2 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x45308777 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x45ecaac9 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x53afc832 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5a1e36ef videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5ecf314c videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5ed3db8b __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x705852b8 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x87817a75 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9556e379 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x99eedf37 videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa83e608d videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd1d0f0c9 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe31d3513 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe4409f37 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe448085a videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xeb76a18f videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xec54a000 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x64e31419 videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xda068712 videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xe3c529ff videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x30253bdb videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x3546d3b3 videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x35e760e2 videobuf_dma_map +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x3ba133a7 videobuf_dma_init_user +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x4ea9f65f videobuf_dma_init_overlay +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x553a86d0 videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x6db59f7b videobuf_dma_init_kernel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x72235edf videobuf_dma_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x9a8e4b74 videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xfbcdeed1 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x7c02730e videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xcc56ad60 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xe9100c49 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0afb59a5 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0c02bc77 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0f32e3e9 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x14646e1f vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x18164b04 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1f6ec5ac vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x21460a92 vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x24b08bc5 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2a38714e vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2b611f17 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x33539e2d vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5047acd6 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5c2c05d9 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5e3d5a72 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6b3cf58f vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6bc89185 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6c7332d4 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x794ede36 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x797233d8 vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x79d81bfc vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x81c1d008 vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x88f2c512 vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8d28d92c vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x91de8b3f vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x956e15e6 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9736c206 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9c507f90 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa1096559 vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xaba34200 vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb6c9a57b vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc6f82798 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xcd46f4b0 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd1165ace vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xda0bd2d0 vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x8a0cb10f 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 0xedab34bc vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0x819cd751 vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x49ac99e6 vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xa0047056 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xc6d66e70 vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xd630a8d4 vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0x65308788 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0614eb78 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0f74eacd v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x152f65ea v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1df63a43 v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x26f9f62e v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x30252f65 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x307ac754 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x417f4375 v4l2_compat_ioctl32 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4518dc17 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x452356c0 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x45d996aa v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x51744035 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5f57bdd8 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6a293159 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6e800242 v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8b78efbf v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8c687685 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8e4987a5 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8edd4ebf v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x94bdf516 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x983144c9 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe02efc48 v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xea2ffcda v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf7fda928 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x17df7725 i2o_dma_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x340d51bf i2o_dma_map_single +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x353a83d8 i2o_pool_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x6e700d63 i2o_pool_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x8a717c9f i2o_dma_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x91993056 i2o_dma_map_sg +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xb2041a49 i2o_sg_tablesize +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xd458bc57 i2o_dma_realloc +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x0d8ef448 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x2e31103b pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x5150c489 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x317ff770 kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x5644e585 kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x68cdceff kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x6fb230f9 kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xa443c577 kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xa6844b67 kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xbcd51bf7 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xbd3c65d9 kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x46a8757f lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x66918a17 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xcac8b668 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x056847bd lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x1480b085 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x3b7c318b lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x3f9933cb lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x53d715a9 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xa8061609 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xab209226 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x3591af9f mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x4708c07d mc13xxx_common_cleanup +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x53c83a98 mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xa64bafe6 mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xe6f1e4c6 mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xf4fe11ae mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x5a0b28d1 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x69811687 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x78ecf329 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x83ea0eac pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x8e785178 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xa391ab4d pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xa57fe387 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xca0627d1 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xd5665d0b pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xef286806 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xfe7f554b pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x00b8fb37 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xd2c4915e pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x05afdffd pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x726cc19d pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x7d2e767b pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xda2843ef pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xed9b51bc 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 0x0688ddbf rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x06c70b09 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x0e61dbe5 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x132c613b rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1b499e3f rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x232b6c1d rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x6384686f rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x861aa92b rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8baa482d rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9035a2e4 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9d1b4c95 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa1c92354 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc6fb677a rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd00bf2be rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd623a383 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd6d01931 rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xdb162ab4 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe6a27b73 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xeb8eddbb rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf3f617f4 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xff0036a6 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0507b850 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0b3da278 si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x17833db7 si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1d6eb04e si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x21b60ba1 si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2d9cc666 si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2ffc38d6 si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x39a945f1 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3dfd8439 si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4458676b si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4d537160 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x55114c1b si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5c06c3fa si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5f4c9ba2 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x636e336b si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x673e2e5b si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x840a7db2 si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x851fb436 si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x87cc8900 si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x971c5cba si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9981caed si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9f75ce36 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa32888e4 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xacd26b05 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xad5613f3 si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xafc6b0ef si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb28c865d si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb82522b6 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb879d49e si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc4188b4a si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd4cdc1c9 si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xda4204fb si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe469753d devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf483e5dd si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x0d30f78a sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x1a506790 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x3fa6dc01 sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xeb15ba05 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xf13454c6 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x1b5f1ed5 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x32d690ae tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x7a8e305e tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xff402ad8 tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0xe9afc534 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0x0bfacd5a bmp085_regmap_config +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0x39d6f106 bmp085_detect +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0x400f0c67 bmp085_remove +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0xe9de842c bmp085_probe +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x64f714b0 cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xa24d979c cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xa62fdc7d cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xd8026c08 cb710_sg_dwiter_write_next_block +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 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x093f8bfe enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x27fe9fc5 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x48e5c2f4 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x5877b0a9 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xc2f8a4f3 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xd0799f81 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xd9be6db8 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x1f8858b7 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x251557ac lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x5fb5bb02 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x6471d5c5 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x64f5e828 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x6e630881 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x72ccd155 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xaaeaf780 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x02d8908d mei_cl_enable_device +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x0dcec7c5 __mei_cl_driver_register +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x1e2e84d5 mei_start +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x3fa01694 mei_restart +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x504a0bfa mei_cancel_work +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x64a3fe20 mei_register +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x69389da3 mei_cl_set_drvdata +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x8608d734 mei_reset +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x94cc57b8 mei_irq_write_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x9fbca774 mei_cl_disable_device +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xc1e0a1f2 mei_cl_driver_unregister +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xce4d2165 mei_cl_remove_device +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xd4d5fa3f mei_irq_read_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xd665c79e mei_cl_get_drvdata +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xd7e458dc mei_cl_recv +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xe08c0301 mei_cl_send +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xe2d0b4e1 mei_cl_add_device +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xe33a7dd3 mei_stop +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xeae5fdc7 mei_deregister +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xf2d78250 mei_device_init +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xf5a97988 mei_cl_register_event_cb +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xfd34550f mei_irq_compl_handler +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x3b301364 st_unregister +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x5339f055 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 0x31f6ad8f 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 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 0x53c20507 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 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 0xcff91c6e 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 0x20eb04b9 sdhci_disable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x2d116bf9 sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x3373177f sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x344205bf sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x7bfa905d sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x9a4e88f6 sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xc9f534f7 sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xce63d73e sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xcf86b992 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xd9057ca8 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xe27f42a7 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x1072b75c sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x1a56f37b sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x4c3c87e2 sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x5c842c6c sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x92e99d0d sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xc26e2939 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xc490aab4 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x095938b3 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xcb6e38cd cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xf4471d25 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x2a16e7d7 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x5444ac07 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xd9ef2851 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x7a14e956 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x442b3eec cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x4603f40d cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x6d27201c cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0418e12a deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0608911b kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x07dfd7ea mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x08e7ca52 mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x128c97fa mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x15cffb6d mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x15e374cd __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x190d1513 mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1a3b5afa __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1fb29fbb mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x20c0c37c mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x22ccd508 mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x239e169c __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2a2e88e4 mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3620b54d mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x36e1bc2f mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4406eca1 get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x472a55d7 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x58afe41d mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5bdff698 put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x61f04266 mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x660bfe52 mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6bc0ec14 mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x764ec4ff register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x777cb246 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7823f15c get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7bdba034 mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7f92082c mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8134e4bc mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x86abc49b mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa6ac3a71 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xab29195e mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb1bde83c mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xba1894de mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbc9d5b73 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc5dc5abb mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xccd811cc mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdf740bee mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe857641f unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xeac347b8 register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf3eba437 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x0f063a42 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x78ce5eef del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x8da90f3c deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xe66afcbb add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xf4cd7fb6 register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x0a813781 nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x5026572f nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0xbd013081 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x0bbe5492 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x3fee3a83 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x246afc22 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x3a3405ab ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7b5859dd ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x99602a81 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xa090777c ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xa38a9f46 ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb7eda63f ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xba7ce389 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc81eb951 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xcb817f51 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xd9c2c4da ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf1f05f68 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf78e29f3 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x3659edb5 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x6bc0f0d4 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x7666aadc c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x78eb1bd3 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x8d51df8f register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xbe25f903 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x1e79048e safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x20a49ff2 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x23ae2289 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x3bf9e676 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x49e39976 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x67f3bdcd devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x6965df99 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x6f6f6fb5 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x7bda353d alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x836e1ff5 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x8fb23e3e free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb0d3d309 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xed34222e open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf095cfeb alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf7721786 can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x64f091c7 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x95f6f23d unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x9683cb88 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xe6b74a66 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x0125a5dc free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x3bcd6d0f unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x94a072d2 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xfd7abc8f register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x14f9ec58 macb_ethtool_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x2762f0c8 macb_get_hwaddr +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x7df91261 macb_set_rx_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x950cee57 macb_mii_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x95f0f4d7 macb_set_hwaddr +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xc1a7fc06 macb_ioctl +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xd551637b macb_get_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x039f5675 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x04fdbaaf mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x09916465 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0a0bfc67 mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0cc885b4 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x10b941db mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x11c76a82 __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x16235201 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1fdf0709 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x200f6939 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x257ccb66 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x276612b6 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x307d0669 mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3363cc16 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x349be6c5 mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3643400a mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x37520a6b mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x397cf38f mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3e1562a5 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x416baf49 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4278119c mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x46682460 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x472460b9 mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4978ae01 mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4df80070 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4e1ee730 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5051c374 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x53028067 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x53780793 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x55d7bf41 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5bfab5c5 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5d617f3e mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5df18fa8 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5e44d86d mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5f3cd3f6 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x61c4cfdf mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x677a5a1b mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x67b86bfd mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x69964293 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6d68f8a9 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6edcb07c mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6fadc26c mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x71621555 mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x71b21650 mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7869615f mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7ac3adaf mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x802b9bfb mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x80569ef8 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8637fff9 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x863c2f57 mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8767e1bc mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x87a98741 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x89dfbe69 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8aa0c71d mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8c9ec107 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8cd1c78c mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8dc1b947 mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8eca615c mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x92708d95 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x94b51200 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x94d0cc2a mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x97909e4a mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x98876a5c mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x99671677 mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9b28ebd3 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9e3c4230 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9f88d309 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa250d242 mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa281ca35 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa777ddeb mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xab60d135 mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xac33b57a mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xae2330f6 mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaf00b37c mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb0d92312 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb5a446b6 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb6378b58 mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbcd9bf55 mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbfd344f3 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc2e7e7c2 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcc243a7a mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcfeb3cd8 mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd1096971 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd1d10244 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd2540ba9 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd53e18bc mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd5cf5078 mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd67e38ac mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd704bf69 mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdd1fe0ec mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdd30d369 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe14d2a79 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe42fbe5d mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe4ee2bca mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe760f727 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe8af80bb mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe97b0a94 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe9ffc616 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf6fb0a8b __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf8f97d87 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfaf2de30 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfff0e509 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x04e6cac0 mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2b0e579a mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3a841f96 mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3c22aa3a mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3feaa235 mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4359dc52 mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4c2108f4 mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5efedca1 mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x61091493 mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6d92c28a mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6f742fd4 mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xadda75c2 mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaf4197d6 mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb73459ed mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc00af7e9 mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd6c4ef56 mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf1b7d60a mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x1a139afc macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x93c0bf43 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xc297b714 macvlan_start_xmit +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xc9953b77 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xdf86d3f5 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvtap 0xbf052037 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x606bf923 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x8cfff9d6 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xc20332fe usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xcca81e9d usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x06e220cf cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x186fa86c cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x34e25383 cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x3b9da398 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x416ba40a cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x7e594250 cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x808694a7 cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x9798d9da cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x239f6f01 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x448e1608 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xa6c6840e rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xd7d5a5a5 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xf5e69f7d rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xf95287d9 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0068ce8d usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x09f243cc usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0c8c5ba8 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x23aee51b usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2a1dd3bc usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3cb506ac usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4d00ee5e usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6118b1ae usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x793ceae3 usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7d450465 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7d5ad641 usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x86b4fa6d usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8aad298f usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9eb17d00 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9f2f4522 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa4098aee usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb8b850c6 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb8ec385e usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc662b3b5 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc70c5b4e usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcb6f1a0f usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcc21204b usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcd850adf usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd2f6ccfa usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd379be98 usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd64d6581 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xdcb39bca usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe768df8a usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xea811378 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xed347723 usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf1aabc5d usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xfaec5918 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x18a6fe65 vxlan_src_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x29155fdc vxlan_sock_add +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x2fe7e3d8 vxlan_sock_release +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x7b71e700 vxlan_xmit_skb +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x8a6a8dac vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x07db63c6 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x0de3ea0c i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x0eac0864 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x1300b8a7 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x53a1f35b i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x6612ccc6 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x70f4dea7 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x76d3bc63 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8dfb3efb i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9778cb91 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9f580d16 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xae5892e5 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 0xc760eb86 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd7f6971a i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe91208ad i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xfef726f5 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x00889d88 cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x5c32175c cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x5d7611cd cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xc395d236 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x5345662f libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x217c5283 il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x509c76b3 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x53174dd0 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xbe701b01 il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xf29df6ac _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0a156c1e iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1c35a65e __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1ded1d7d iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x23b31849 iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2eba12a4 iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x34bac111 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 0x357db455 iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5761ec4c __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x59531c60 __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5acb026a iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5d0a212e iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5e40324d iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x63967696 iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6715334b iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6bfb4a2d iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6d8af53c iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x7fd19f34 __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8704a33a 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 0x95795c57 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xcf341945 iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd1db77fe iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd849a443 iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xdd3e32a4 iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe120be66 __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe691cba4 iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xeeb4cbc9 iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xfb958c0b iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x10ad4886 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x12589a8d lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x2a74340f lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x3ea8a75a __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x4d23de52 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x531100f7 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x68213902 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x6cf25921 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x7609aeb2 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x83a6d835 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x9f963d3b lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xac768e84 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd5482f1a lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xdc9c6aa2 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xeaa46416 lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xefeaab62 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x08eaff48 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x0f9b1c4b lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x297c70a6 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x4bcfe315 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 0xd0ac3a50 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xdd0ffd21 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xe6a01bdc lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xfeb82164 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0x239af5be if_usb_prog_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0xde6bba03 if_usb_reset_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x13bb0963 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x3d935901 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x3ebd8b9a mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x4594beb3 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x4bf4ab62 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x5101b280 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x5ac3e371 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x85361f36 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x8ab7c24a mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x8c769d2d mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa0fac4ea mwifiex_deauthenticate +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xbad81572 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xbed7ab09 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xffcd438e mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x13cc8671 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x2a5cb235 p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x69d18f61 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x9561988c p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xad6da198 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xe04c4355 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xe0f5efb9 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xefa9643b p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xfe3dd8e4 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x069e630f rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x07900ae7 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0b8aa23e rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0d535305 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0f69063a rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1681ae07 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1914731a rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1dcd34f3 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2522121b rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2739949b rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2bbe599a rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x33b94f87 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3b804fa4 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3c3a5462 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x42c4928c rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x48886d61 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4a66bd50 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x52b8bd6c rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x58b651e5 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x622fbeaa rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x63646f94 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x69cf7326 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6b99acac rt2800_get_tkip_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6bb23e05 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6be93c58 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x856bb992 rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x865d0d89 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8d1fa9a6 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x95c6eb91 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xbf6eb092 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc22102df rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc30839ff rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdd706048 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xddb2c02c rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe87a70c6 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe9f40770 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xeaffc744 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xed2195b4 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x08b2269f rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0d49e507 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 0x2947b807 rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x60013eb7 rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x76663a87 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x769a86c2 rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x7d25360a rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x87244381 rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x9f0c5465 rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xbe073c60 rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xcdd1ea7c rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xed6073b3 rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xf09075d1 rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x033d0510 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0511fed7 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1bb46e55 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x214cd6df rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x27676e22 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2abf44fa rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2b97dada rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2ef0b55c rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2f22cd5a rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x34695e76 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x38e15c04 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x41e5c610 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x48855375 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4994f437 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x629db56f rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x670b5a76 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6a59ea68 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6d1a20a3 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x75d371a1 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x788d7521 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7abde761 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x93dd0474 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9836c8da rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9b03365a rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9e776c37 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa0b47ffe rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa34016d8 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa43db45e rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa73ec807 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb9db2e1b rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbf270d11 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc08d571f rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc6c32821 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd3407fbd rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd9f10d4b rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdb09f5ce rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdb8da51f rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdc8d2433 rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe06a1396 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe47da68d rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe6fd8047 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe95c213e rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xeafd0af9 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xeb8ff476 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfaaa03b0 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfc5f978a rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x21309620 rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x2fd1dee4 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x6dc0f057 rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x818f33f3 rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xa36020e5 rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x0c601065 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x3e7ac75d rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x62efaec7 rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x9667c74e rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x0795830d rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x174382f1 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x34b1c5d3 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x378712ec rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x49bd95ea rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x4a81fdee rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x55671f4c rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x5c00e72a rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x6794e6ed rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x68a2b8dd rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x9419c8bd rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xa76c909f rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xcbcbe3ca rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xd46a750c rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xe736ee43 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xf4888ce7 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1454a70a dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5d8b4070 dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc5554551 dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc6dd858e rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x03fe81ae rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x194eb40b rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x1b06a99e rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x224e4ab2 rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x2f7121ef rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x324fb985 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x45109126 rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x4701da62 rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x51bd4d74 rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x5a5338d4 rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x610995e3 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6a72663f rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6fee3a6c rtl8723_phy_set_sw_chnl_cmdarray +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x73057ada rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x7dd50493 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x937a8b0f rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa8068e23 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 0xd20dafa6 rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd478930e rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xda700d52 rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xdaee71b2 rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xdfccc65d rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xe41a21b0 rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xe73ac569 rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xeea4b006 rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xef02e2f7 rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xfeb61931 rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xffc066a9 rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x1656ccd2 rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x1706cfd2 rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x17644dd0 read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x1c2ba840 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x22d4f3a5 rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x241dedc1 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x3814afd2 rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x5513c0bf 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 0x7aa9e9c9 rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x7fd1545e rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x8a1cf620 rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xae92a397 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xc1736929 rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xc46716bf rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xcad38993 rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xcc712f42 rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xd2b1f48a rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xdd03da99 rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf16dc2c2 rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xa60d64af wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xc8d468aa wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xf629622b wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0e09b3d0 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x131fcaa7 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x140f4642 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1838643a wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2012acc4 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x212c32a8 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2200fb80 wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x27a8f7aa wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3a5dfbbd wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x46c49482 wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x48904fe9 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x48abe7fe wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x55384f59 wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5595645c wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5c15ad96 wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x62543c5b wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x67df915a wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6a99fa6d wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6d8d3630 wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6e67f9a4 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x73a6e80f wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x772ee0f1 wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8493695f wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8958c946 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x89eaef2f wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x94026218 wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x942cd3f7 wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9dd04458 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb2a6dc2e 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 0xb9883df8 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xbf451fb9 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc44fc2f0 wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xcee9d0cb wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd3cedcb5 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd8a35d5a wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xde889992 wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe17c2b21 wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe6ff6c33 wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe7f1bedc wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe9b7ba93 wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfe30ede6 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x230933aa nfc_mei_phy_alloc +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x329d5ff9 nfc_mei_phy_free +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x3b577068 nfc_mei_phy_disable +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x58f97bbd mei_phy_ops +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x8b4e7b3b nfc_mei_event_cb +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0xe82e19a5 nfc_mei_phy_enable +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0x22f4ba8b ntb_register_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0x30934216 ntb_transport_max_size +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0x32537aca ntb_transport_link_query +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0x3d54dbfc ntb_transport_tx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0x436098aa ntb_transport_link_down +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0x46985070 ntb_unregister_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0x77ae9ef1 ntb_register_client_dev +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0x82e6c13d ntb_transport_qp_num +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0x9c992c8f ntb_transport_link_up +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0xc270dc24 ntb_transport_free_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0xc37d9036 ntb_transport_rx_remove +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0xc57d38fe ntb_transport_create_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0xd40e7a02 ntb_transport_rx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0xfe897ddd ntb_unregister_client_dev +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x0a418418 phy_destroy +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x0e3c094b phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x1063bf48 devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x1601a182 devm_phy_put +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x1fa01c96 devm_phy_destroy +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x23b8de60 __of_phy_provider_register +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x2e325114 phy_init +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x34eff2c6 of_phy_provider_unregister +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x3c1e4f57 devm_phy_get +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x3ea17426 of_phy_simple_xlate +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x413f44cd phy_put +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x42c5bc4c __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x5587eb4f phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x5afec848 devm_phy_create +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x73f7b6d5 phy_create +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x7f354e71 phy_pm_runtime_put +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xa438085f phy_power_off +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xc56e1dc3 phy_pm_runtime_allow +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xd0c33909 phy_power_on +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xda0b43aa phy_get +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xe125ca8e phy_pm_runtime_get +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xf439a7cb phy_exit +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xf7cd88e5 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0x53bff041 asus_wmi_register_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0x5990ae86 asus_wmi_unregister_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_ips 0x46809fa9 ips_link_to_i915_driver +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 0x19ef252b pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x201accc2 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x884e8ddb pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x71feb0b6 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xb134cced mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xd9f07b6f mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x0311b360 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x06b4af0f wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x15c9ec7d wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x1d0092ab wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x9e757603 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xfa70907a wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x1517e519 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x070fa63a cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x07ad1d4c cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x105f2d75 cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x18e3b25b cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1febbec9 cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x22d8a015 cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x27ddf784 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x28efd2e5 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2d00b48c cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x32346474 cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x33ba2cef cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3437faa4 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3fa14625 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x40ef4df6 cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5297c792 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x55d53343 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x693f6bb7 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x76f65c9a cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7722b584 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x79742f76 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7a59adf4 cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7e1a8ca7 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x807b07dc cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8249b12d cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x86a144ad cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x887a38f4 cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9230f0d3 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x948c1067 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9da85be8 cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa3d505e2 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb96276d9 cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbc752a8a cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc12009e2 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc71c4d9f cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xca2e9deb cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xca960cf5 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdd581d53 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xde59853d cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe3289149 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe4b8575f cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe8977e54 cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xed922cbc cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf6afdab6 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xff336330 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x009f669a scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x0dc06295 scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x0ff03c69 scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x380ea259 scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x42e773da 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 0x59cf0559 scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x9bbb8377 scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0a79af83 fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x2e952171 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x3e79e210 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x4a2fb824 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x4ea51c6f fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x5e7335c4 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x6ab3bdaf fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x711e1f25 fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7ee57e5a __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa122e26e fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa13f86af fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa1423b62 fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xc8fceffe fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xcb6d2c14 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xef7cbb28 fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf5eaffa5 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x50afb021 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x58e28c1d iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x9fc75df1 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xa1eb3580 iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xb4975539 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xe9eb4167 iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x011b6011 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0f8315ae iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x262f6559 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x26adc382 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2e06f5e1 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2e2e104d iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x37eb7a63 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3ac26f33 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3e58ca7e iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x41864757 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x41f91a97 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x42f909b1 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4420fa8a iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4aaaefe7 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4d4bb235 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4f598d09 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5040a98c iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x54962afc iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x549c96dd iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x56d4179f iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6067cfb1 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x69c0aebd iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x80dd5026 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x81e33522 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x84129372 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8614611e iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x92f18746 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9dbef8ce iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9e0953bf __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9f079030 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9f3a2ef2 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa05b3252 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa9e297a7 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xab91ac9d iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb1e9fbb6 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb43b03f5 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb615ce6f iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbe6eef3f __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc330733f iscsi_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcaf21d58 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd0bb20a0 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd5bdfa41 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd897e6e0 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf103b9cf iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x0fb3aa0b iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x24c2b1c5 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x370578ab iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x39a52c15 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x4941fa62 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6c32b6f4 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x7619b7e2 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x796ed6ba iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x99eff263 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa3db87d5 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa992a38f iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd751143a iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xeaaf9351 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf287e204 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf48332dc iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf4a3db7b iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xfb0aea0f iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x05f1333f sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1da0ca41 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x22814add sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x234198e4 sas_change_queue_type +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2d78bccc sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4c0753a1 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5c629212 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x64897895 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x686e829f sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x758d96b5 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x809a5e11 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8274550d sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x9029d2e0 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x9a7b9664 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x9c33dc8e sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x9e4fce01 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb0ba2f1e sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb72ffdce sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbdf9bdb7 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbef8f759 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbf641441 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd7cb661f sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe0409d42 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf494898d sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xfe95d35d sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x18b32392 srp_transfer_data +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x19f2917f srp_cmd_queue +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x4adac228 srp_iu_put +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x987e54ae srp_target_free +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xb959247d srp_iu_get +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xefa0a5ba srp_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x071fb761 scsi_host_put_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x099692b9 scsi_host_get_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x0a7e52c4 scsi_tgt_it_nexus_create +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x27f9df1d scsi_tgt_queue_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x36f78887 scsi_tgt_alloc_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x77de944a scsi_tgt_free_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x823baa0e scsi_tgt_cmd_to_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xa7fa312f scsi_tgt_it_nexus_destroy +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xb4adc011 scsi_tgt_tsk_mgmt_request +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x01839244 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x146e4826 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x154134e7 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x22e0ff47 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x278d4768 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2ab89d5c iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2df00f30 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2ed0811e iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x36bc20fa iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3c6ab66b iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x48238f8c iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4abeecbf iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4e481c8e iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x547c968c iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5b24752b iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5e12cd32 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5ff5a538 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6317ce48 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x66b743d4 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x759929aa iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7a2ba1e3 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x81a282fa iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x83a2501b iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8f68478a iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa795b626 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa7f776da iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa9677b49 iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb87ba018 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbfb5975e iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd092c211 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd6cc57a5 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd9696310 iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xda2e0da5 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe0023ce0 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe078c565 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xea5d08e5 iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf5655b21 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf653c4ae iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf879d96d iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xffac636c iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x09cb701c sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x54cd85e7 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x8a3d19e0 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xd4ba6ae1 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x098afefb srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x281c8513 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x4f00a638 srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x9a4099c3 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x9cfa64c4 srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x435de48a ufshcd_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x80c2cd9a ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xb4666489 ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xb90660a0 ufshcd_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xcbed6ab8 ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xe60c15df ufshcd_remove +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x2127ec79 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x249610fb spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x4bedf1cf spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xbbb6681e spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xc55a1ea1 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x0ddd0c89 dw_spi_xfer_done +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x3ea455cd dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x6ae3c8e4 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xb49314e0 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xc9954a5d dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x97c0e79b ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x046ce61f comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0521fd29 comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x06b04775 comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x08a9ea33 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x128ee28a comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x15b69ea8 comedi_pcmcia_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1f710fe4 comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x24b72910 comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x25050f64 comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x26194133 comedi_buf_memcpy_to +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2bf46161 comedi_buf_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2c164812 comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x399354d4 comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x407b80ef comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4a94c800 comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x50c2a4d2 comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x52c571ff comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x56ad3c0f comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5af4bd43 comedi_pcmcia_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5fe81675 comedi_pcmcia_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x60d82ae5 comedi_buf_memcpy_from +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x699c6117 comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6fd9bea1 comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x845de54e comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x85a4f04d comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x90690cec comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x914e2673 comedi_dev_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9305314b comedi_error +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9468d621 comedi_pcmcia_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x977ea3e5 comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9b90d906 comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9cbd8f6f comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xac6d5683 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xacf6c409 comedi_buf_get +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 0xbebbe8af comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc1493eb2 comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd1fd8d3b __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd635f41f comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd67467ef comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd7ef888f comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdaec8f71 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb152ca9 comedi_to_pcmcia_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdcfc7db1 comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe1b9b11c comedi_pcmcia_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xec049f6a comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf3937cc7 comedi_pcmcia_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfb335c94 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfff3b148 comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/8255 0x0558eeaf subdev_8255_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/8255 0x1551bd74 subdev_8255_init_irq +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/8255 0x5079ab98 subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x79f4a6cf addi_watchdog_reset +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x80c420d9 addi_watchdog_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x7dcd0d7d amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x9bd8c520 amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0xb075b7a4 amplc_dio200_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_fc 0x252531d8 cfc_read_array_from_buffer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_fc 0x3232253a cfc_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_fc 0x9eb317c1 cfc_write_array_to_buffer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0xa6ce1b81 das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x00749ab1 mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x04db65ac mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x0bf96d2a mite_unsetup +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x1996244c mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x1d6c43c8 mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x2952fab0 mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x2f715d5a mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x4ea98b9f mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x4f0f25f6 mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x54f3c2ee mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5725fd61 mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x6df3cff1 mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x73b32138 mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x95f68578 mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x98bd2f01 mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xa487bbee mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xaea90385 mite_setup +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xbc53e81e mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xbd650513 mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xc7acee03 mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xcc54e599 mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xcdd849b4 mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc 0x0b617089 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x1bfc788b labpc_handle_dma_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x29386a69 labpc_setup_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x331400d7 labpc_init_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x3f8e4c57 labpc_free_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xfbb66825 labpc_drain_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x4dbbd2b6 ni_tio_winsn +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x5dba6cfd ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x64ff2600 ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x91cc6cd8 ni_tio_rinsn +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x925ed018 ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xb9267334 ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xc3a4d01c ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xe08e76e6 ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x4ac4f968 ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xab1bfb5a ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xbf95fb7e ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xc584589f ni_tio_acknowledge_and_confirm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xd152b7c8 ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xe7b21296 ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x123e60fe comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x5b33ec58 comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x64934e7c comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x7c632c64 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x81a78192 comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x90d1f86e comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xba8da6b7 comedi_close +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0x2206b003 dwc2_handle_common_intr +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0x5fc342a5 dwc2_hcd_remove +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0xb05a818c dwc2_set_all_params +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0xfcaab10a dwc2_hcd_init +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x1a1b5249 oslec_flush +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x2feda75b oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x3227a28e oslec_snapshot +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x7dc9dddd oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xb2c66001 oslec_create +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xc8b5a524 oslec_free +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xd370f679 oslec_update +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x2ed324aa adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/rts5139/rts5139 0xbd5a0e51 rts5139_usb_ids +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 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 0x50565ba9 spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8fe66c8b spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x92aac4d8 spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xac5cd495 spk_do_catch_up +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 0xc91490ae spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xcda38867 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd1b551a2 spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd1b82588 synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd4df0320 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xde7ae2e8 speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xdef99967 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe65c70c0 spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe69a6ec5 spk_synth_flush +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/usbip/usbip-core 0x19a42769 usbip_recv +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x1a51109a usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x28709235 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x32b847ab usbip_event_add +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x4060212d sockfd_to_socket +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x468d8ee8 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x4862d410 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x4a4d8081 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x5e4957f3 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x9c3b6242 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xb786a346 usbip_start_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xcf6fb6dd usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xf9a43030 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x13c96207 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0x5e144095 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xef0407e4 uio_event_notify +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x460a0567 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xfb5cfccb usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x254f87c3 ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x78dc2016 ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x22f91ab9 usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x242288ce usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2ffc6732 usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x312033ee usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x33784105 usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3e2d058d usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x454a41e0 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4b5f21ce usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4d34a7f1 usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x580bde33 usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x601df58f usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x67f482a8 usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6ae73b08 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x76524b63 usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7b50d767 usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x915da3fc usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9969217c usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x99eb8a7e usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa0a21003 usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa23a9955 usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa4856c41 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc2ad655f usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe286ca68 usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe6f4b71b usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xebca0a01 usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf99e7dfb usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfcb5c3e8 usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0x5e4d4e34 gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0x8e27d6de gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0xbe7285ce gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0xf1981607 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x15232b0f usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x4263cc66 usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x65b24683 usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x707294da usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x7969c0ac usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x889bbb3f usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x91a93600 udc_attach_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xc46f693c usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xe77a1f8b usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x0a5230df fsg_common_set_nluns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x141fce2a fsg_common_remove_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x18f55574 fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x1ccb58f7 fsg_common_set_num_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x2d10b6a7 fsg_common_create_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x3be36d0e fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x51707c29 fsg_common_run_thread +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x6acb4179 fsg_common_set_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x7e26d4a5 fsg_common_set_sysfs +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x99023bfc fsg_common_put +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x9a0221c7 fsg_common_free_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x9dc025a5 fsg_common_free_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xa46e6443 fsg_common_get +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xd3ae3b65 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xd468f882 fsg_common_set_ops +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xe4d1591e fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0xce61c0be ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0xfa1b30d6 ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x3282b9c3 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x4e0e1739 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x553d7cd2 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x6b256143 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x83f58410 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xa906bad8 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xc4238869 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xd077a4a9 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xf4b3e8a1 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x092b0d43 musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/tusb6010 0xa790b59b tusb_get_revision +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0x09543d4e usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0x50a2db73 usb_gen_phy_init +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0x6464eb2b usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0x72aef8cc isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x1f770255 samsung_usbphy_get_refclk_freq +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x3e655a4a samsung_usbphy_set_type +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x42c25b79 samsung_usbphy_set_isolation_4210 +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x861319bc samsung_usbphy_cfg_sel +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0xbde0b5b0 samsung_usbphy_rate_to_clksel_4x12 +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0xc1d08d4f samsung_usbphy_parse_dt +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0xd026d585 samsung_usbphy_rate_to_clksel_64xx +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0xa8e426f3 usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x032a623f usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x26a8236c usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x39c15b69 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4192fe54 usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x49818dd7 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4a8b55de usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4bc0cdde usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4d4486e8 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5265cfe3 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x581a06ed usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5be7a3f1 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x61267b93 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x92f4b812 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb0bc996c usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb31a3f8f usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc9d3dffa usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xcbe2c9e3 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe19ad2ff usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xede2c85c usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf3582061 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf78be686 usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x25fb44d1 usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3930bb8e usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3cc30efd usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x619e1a95 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x68ab1512 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6f183f4f usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x748cb264 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x82920b66 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8394e31e usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x90028739 usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x99a343fb usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9ac8a9b1 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa1f79a4f usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xaf06b465 usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xbeb501a6 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc7bba145 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe455d1dc usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe58481b3 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe6807ecd usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe95182ed usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xedfb1d72 fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf8d3dade usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x01033dcc __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x0bd816f0 wa_process_errored_transfers_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x0c00b678 wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x122f15ac wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x4ba90d7e wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x607a742e wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x856d258e rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf01e4e0a rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x06c3446e wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0a73bb86 wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x611e5b34 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x72af6910 wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7bb7e314 wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7e0f5561 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x813b0201 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x823e2f57 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x8d508bba wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x9b7f7e39 wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa3d7449f wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb0045ff0 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xebb9fe90 wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf78aae43 __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x4b6e84d3 i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x4f90e0d3 i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x593ba987 i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x0cbaec7c umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x55372c42 umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x7e6c68f6 __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x85836706 umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xad6e5743 umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xb7c7b10d umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xc6546288 umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xc900fdf6 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x003bc7e5 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x07a38646 uwb_rc_rm +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 0x20a0053b uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2a41c930 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2a709bfe uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2ad449a4 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x313a681c uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5556065d uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x55ef183b uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x57eb7995 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e179951 uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5f1878ab uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5ff28d6d uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x63d5661a uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x69ce1da6 uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7ad6f459 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7f3ee631 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x816b9e92 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x85df894d uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x873e6ec1 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x87d0ab12 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8ea92f8d uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8f8d9974 uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9a2cede4 uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9e7279b5 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xac97316b uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb0845707 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb19ee5b0 uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb33c27d6 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb9dfeb3e uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbeab0fe3 uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbf49c6ea uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc12de037 uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd2b0ea9f uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdcc89b3d uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdea238f3 uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe55ba0dd uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xef588287 uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf1a9550f uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/whci 0x64aa161f whci_wait_for +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x4f00dd37 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 0xb5505f66 vfio_del_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc3248fad vfio_register_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc4913442 vfio_group_put_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xcb8c17c9 vfio_add_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xd9e2b24c vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xf20a4b9d vfio_group_get_external_user +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x099ced2f vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x19bcfc05 vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x20e5bfb0 vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2c04383d vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2e427815 vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x306a12ff vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x33b333e4 vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3546fe53 vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x44b4f5ad vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x452e0ff9 vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x552d872a vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6545a034 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7984821d vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7fdd1c56 vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x80565ca9 vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8dbefae1 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x90038af7 vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x997f533c vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa1dcbcf2 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa219004a vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa247107a vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa9e18d48 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xaaa73e9c vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xacdae37f vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xbc27b225 vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xbfa29ce1 vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xca34c373 vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe2ffb918 vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe675c385 vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf886eb64 vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x090823ee auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x481f9894 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x68dfb9d5 auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xacca2caa auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xb2771a73 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xb5f86b10 auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xc75f77af auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xe995fd5b auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xeb3cae2c auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xff2e7b91 auok190x_send_cmdargs_nowait +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 0x0380df53 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x14b0d92c ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x37e86b9d ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x61fdf78a ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x82ae0e51 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xcf371307 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xfc012a93 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/fb_ddc 0x35937ad0 fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0xb767e9d1 fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0xed01ac67 fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0x468b91c8 sis_free_new +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0xf0f44628 sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/vermilion/vmlfb 0x016e6c20 vmlfb_unregister_subsys +EXPORT_SYMBOL_GPL drivers/video/vermilion/vmlfb 0x90c018c6 vmlfb_register_subsys +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0x22a7af24 viafb_dma_copy_out_sg +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0x292da7a2 viafb_irq_enable +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0x30cc9311 viafb_request_dma +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0x31469540 viafb_pm_unregister +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0x79e6190a viafb_irq_disable +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0xb4f863e6 viafb_pm_register +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0xcaefb732 viafb_release_dma +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0xdb4729e8 viafb_find_i2c_adapter +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0xfff2dfd2 viafb_gpio_lookup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x0c34cc29 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x2a422509 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x54be33fa w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x552efcca w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x6c200855 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x836d3276 w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x876fecbd w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0xcafddd1d w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xe8fe2a57 w1_write_block +EXPORT_SYMBOL_GPL drivers/xen/xen-privcmd 0x3497fcb1 xen_privcmd_fops +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x139abcfd dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xa8def8f1 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 0xd2268b4d 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 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x436f39f6 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x5a08e2c0 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x5b268b91 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x68b721f5 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x78702847 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x945ad815 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x9a650824 locks_in_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xdc5e2758 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xf716975b locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x01004f4b nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x03585dfb nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x04a0473d nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x07d314a4 nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0ca6d19a nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0d3b023c nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0dbe9905 nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0f26e256 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0f8cddf8 nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x120b0f00 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1361263b nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1440ca1c nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x144a19c0 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1594ec96 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1725975c nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x187ecde9 nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x18e5f2b1 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1c569d6f nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1c7c1eff nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1db1ff55 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1e5404a7 nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2040151f nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x207b9ef0 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x212a582b nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2ce3407d nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2ec0072a nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3021eead nfs_writedata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3974bc09 nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3b3a4219 nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3b876b60 nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3dabc5ff nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3e2e6076 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3e85e76e nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f6ca05c nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x41d605ad nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4208e4fc nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42499e3e nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x44312539 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4b15336b nfs_write_inode +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 0x53b30571 nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x53fd66f8 nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x559d72e2 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x57886c0f nfs_setlease +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5a635e73 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5b0c7417 nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5b759fd9 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x62b2069e nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x64fb26af nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x664671b3 nfs_put_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x673b6595 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x68dd84b9 nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6995c3f7 nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6b9725ee nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x700b515b nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7178683e nfs_initiate_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x71a0383f nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x766e49dc nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x768d0d81 nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x778ee32c nfs_generic_pagein +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x792018bb nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x79ca801e nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7a34ae24 nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7bd44049 nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7be84705 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c4913ee nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c9722ba nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x813abdeb nfs_readhdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x81e2f487 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x826a234b nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x85e267d7 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x85e3cd6e put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x87e00c4f nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x89bc5a64 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8a97671e nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8cb61f41 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8e8e51e5 nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8f87b496 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8ff9ad68 nfs_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 0x923f8776 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x932d156e nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x96552a26 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x966dd4ed nfs_initiate_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x999d4939 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9b393e14 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9e014e00 nfs_readdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9eb23117 nfs_pageio_add_request +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa2b13917 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa2fda6bd nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa3772228 nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8507375 nfs_file_splice_read +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 0xaafbc62e nfs_readhdr_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xab505237 nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaeb1f7d7 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb46fc616 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb6359451 nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb65a9057 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbebfca3e nfs_writehdr_free +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 0xc6615bdd nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc7fad457 nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc8325f7d nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc9cbde85 nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcdbce9ac nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd1d9f4d9 nfs_file_splice_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xda3507de nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xda549c44 nfs_writehdr_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdd43d5a2 nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xde6156f4 nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe54f0617 nfs_pageio_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe5d22d6b nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe7e73106 nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe81bf85a nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeaa9b780 nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xead2ab7d nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeb0c03a7 get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xedd75fc4 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeee77399 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xef3d7325 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xefb04864 nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf0c11099 nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf1073f38 nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf3e3d9a8 nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf4f59557 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf60d1437 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf79c3a3b nfs_generic_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf8c4ea1e nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf8e6acb4 nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfa23cf9a nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7ee006 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfbb72977 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfbfc6c9d nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x03aba66a nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x06c36816 __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0e7b0957 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x14cb4eb5 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1a4f7f9d nfs4_proc_getdevicelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1ef2d058 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2298e063 pnfs_writehdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2596834c nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x307dcd15 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3c9f1018 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3dfe6fe3 __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x42b051b3 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x45110ec2 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x45af1245 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x471de0a9 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x62deef22 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x63f1fc8e nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6cd7a23a nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6f88481c pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x73f68759 nfs4_insert_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x763dd187 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x87911f8c nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8a23bc57 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8f90d5b6 nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x98686f81 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xab30b754 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xac5bea04 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xacdd5d26 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb638c931 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb979fb49 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbcc92ea8 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc4284e6d pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc46f0493 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc902b645 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc924a632 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd2678d3c nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd4f868dd nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe239d6b5 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xeaca1f8f pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xeccfd555 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf2210d53 pnfs_readhdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf8cb0a94 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x2bf56f0a nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xac89d1e0 nfsacl_encode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x0d5c89a9 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x130aa116 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 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 0x48f4bc3a o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x70b1b9ea o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x81a17396 mlog_and_bits +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 0xb3a60052 o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbaeb4700 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc3679d7b o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd84f9d96 o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf56c2017 mlog_not_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf97b9a39 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x3b258ca5 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x4ba18ef6 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x65cb9956 dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7490daa9 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd0021e17 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xf2f8ede8 dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x025e2d69 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0402f7d4 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0562c415 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x16b2e575 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x5469ce31 ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x67d89712 ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x7083dbd5 ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x7f2787d4 ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x89502fe7 ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xb4bd060c ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xdc823ea4 ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe2bd47db ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe417d940 ocfs2_dlm_lvb +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 0xec58da51 notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xf9478fb2 notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x1803a6ed raid6_2data_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xe4b051cf raid6_datap_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xfdfcb8cb 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/802/garp 0x269f8462 garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x41b86599 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0x6ceee114 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0x7e13328f garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xc4c4a35a garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xe50726d8 garp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x31fd0567 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x7fa0ae35 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x95d9432d mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xb6fd56c7 mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0xca90f42b mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0xccf257bc mrp_register_application +EXPORT_SYMBOL_GPL net/802/stp 0x04c5a5cf stp_proto_unregister +EXPORT_SYMBOL_GPL net/802/stp 0xd5e6839b stp_proto_register +EXPORT_SYMBOL_GPL net/9p/9pnet 0x315367d6 p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0xd57b2fc3 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 0x2a630697 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 0xe47a57cf bt_debugfs +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0214a26c dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x088c1df8 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0bbdc192 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x210f8608 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2b1015b8 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2bfd1830 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x363aef7e dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3f707c7d dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3fa3e8d5 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x42116d99 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x47429127 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4b18c04c dccp_disconnect +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 0x5095efe7 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5f2da728 dccp_insert_option_elapsed_time +EXPORT_SYMBOL_GPL net/dccp/dccp 0x60b59a27 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6b5749f9 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6ca3c57f dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8bce049f dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8c5b1118 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8ea998d0 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x944a5a6f inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x99e459d0 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9affe4b4 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xae44c473 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0xaf6769bc dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb21cfc44 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbed454ac dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbfffbc8b dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc0fe29b6 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd6561fc9 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd65ba6e4 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdcbaa5b7 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdd180b03 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe3691b9d dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe3a67622 compat_dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf0316679 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf3017e21 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf86182fe compat_dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x0438d663 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x2847c12e dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x69e7a5c1 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x9ee1b99c dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xbe7f38ce dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xdce7930b dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x788ff8c1 register_switch_driver +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xac4bd685 unregister_switch_driver +EXPORT_SYMBOL_GPL net/ipv4/gre 0x18b92107 gre_cisco_unregister +EXPORT_SYMBOL_GPL net/ipv4/gre 0x71e052a8 gre_cisco_register +EXPORT_SYMBOL_GPL net/ipv4/gre 0x93441fc8 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xba2aa6fe gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xc0703dd9 gre_build_header +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x346bc954 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x71f86672 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x8a4aa8e5 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xa1728637 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xa29dd95b inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xc7428169 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x00f8640c ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x0a54e861 ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x2bd9c099 ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x332f71a6 ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x3d425a77 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x3fe0de1d ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x681d0fec ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x887cd4d4 ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x98a8357a ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xa4f6ed63 ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xb82e7dc4 ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xcf3b2c5b ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xe10c2f39 ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xfd4259b4 ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x2a71ddd6 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0xc4b9ff47 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0x6d40a921 need_ipv4_conntrack +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x797eb973 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x312cdb16 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x477be228 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x75bd3ff2 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xad3a4e8a tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xf774a059 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/xfrm4_mode_tunnel 0x495e3152 xfrm4_mode_tunnel_input_deregister +EXPORT_SYMBOL_GPL net/ipv4/xfrm4_mode_tunnel 0x71d077ee xfrm4_mode_tunnel_input_register +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x5c079bb7 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x658ca835 ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xabe08d0c ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xad2c8b2b ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xca3299a3 ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0xe971b0f7 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 0x8c3247e3 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/xfrm6_mode_tunnel 0x849e8753 xfrm6_mode_tunnel_input_register +EXPORT_SYMBOL_GPL net/ipv6/xfrm6_mode_tunnel 0xa588e6f5 xfrm6_mode_tunnel_input_deregister +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x012e89ab l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0c61a4d2 l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x130dd9eb l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x1709bc43 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x1d8fee42 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x2ad795ff l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4a3b350a l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6c32f902 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x7212b689 l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x92c6aa41 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa6790553 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xb39ba0ed __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc46adc0b l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd79c0c16 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe54bc324 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe613a675 l2tp_tunnel_sock_lookup +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xecebbcfb l2tp_tunnel_sock_put +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x24ccb471 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x00e533b2 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x16584185 ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3663a36d ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3f4ae2d4 ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x4ab7953b ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x4bf42798 ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5d38f601 ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8e10b531 ieee80211_iterate_active_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x9643d9f3 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb1d05c3c ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb71bb611 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xbf69804b ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc3331586 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd48c08fa ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf0b191de ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x0578c492 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x27483fa0 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x299e2223 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x3bb5d036 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x4c9a5ef0 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x5613dc39 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x57c4bd88 ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x5a42a516 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x65620a58 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6b7c1386 ip_set_nfnl_get +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6fe5a99b 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 0x94ec25b0 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 0x9f273167 ip_set_get_extensions +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 0xc663fbb0 ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd7480fef ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xef13ebbe ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf085b3a5 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf3b4d4ae ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x324d37cb unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x576e05d6 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x6fa5277a ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xaaf41b70 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0093f190 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x01f84db5 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x04075dad nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0639559d nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x08760b3b nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x08daf2f4 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x09ae3b83 nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x14513ba9 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x170d6874 nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2293eda4 nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2675583a nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x29bf59a6 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2c36dc1d nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2c938138 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2ceda766 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3dbcdb23 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x44adad75 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4b52f7b3 __nf_conntrack_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4d4b53c8 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x504a99c5 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x50bb4b56 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x53ad6d39 nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x542176b9 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x54a03a70 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x58b9ad91 nf_conntrack_flush_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x58e29c92 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x59ec9e8a nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5d2cae35 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5e5ba089 nf_conntrack_tmpl_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x60b9d06e nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x65dbc9ea nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x67afe411 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x69523d42 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6d3a83ac nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6ed37eb4 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x70121968 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7458f031 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x76e7a610 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x780d3857 nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7aac162f nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x822919ff nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8505ccc8 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x86637163 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x87b23a89 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x87db1337 nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x94bac0ed __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9735e451 nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x99ac89a5 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9c9ae4f1 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa725a760 nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa8bce9d3 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab03318e nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab9aeb27 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xabc1d150 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xac28f001 nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xacea027a nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb1741487 nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb1f62161 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb4c487dc nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbf7f889d nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc0566421 nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc0cd71bf nf_conntrack_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc2602cad nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc28f8a4c nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc5fec92e nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc660064c nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xca8518d6 nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xce34c630 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcf171daf nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd13683ac nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd3a0d09d nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd5bcf7aa nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd7f05c62 nf_ct_l3proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xda331041 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdd6a18a2 nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe5f90442 nf_nat_seq_adjust_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf257968c nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf2ed8dba nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf8b37a54 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfe6ceb3d nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x7f49b323 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x7bcf7ed2 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x4d5c8819 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x158ba002 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x2f994ab2 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x4fd98635 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x5fd17100 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x67f07076 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x83b5da22 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x8e278044 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x9e1dbdf8 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xd4c6892a nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xf3fdf666 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0xf090a59a nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x390f13c8 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x3bce21d9 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xe19b0575 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xfe09c51f nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x481a4e9f nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xa68d3b59 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x001deb8a ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x637db95a nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x877a0a00 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x9b0a80ae ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xa80d23af ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xd39e8da0 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xd3bb88f0 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x4f5b3a5e nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x9d8a92ae nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0d9bae4b nf_nat_l4proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x12e84ce7 nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x131f636c nf_nat_l4proto_in_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x20200592 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x357e5179 nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x883adb0e __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x90a5d196 nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xdf603da9 nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xe2be4038 nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xfa33e67e nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x11a006b5 synproxy_check_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x1b8c78b5 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 0xe0784bc6 synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xef7db50c synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0fda3c99 nft_validate_output_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x28b11329 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2c3532e1 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2f2325f0 nft_validate_data_load +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3d49dab7 nft_validate_input_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x42c67017 nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x4b84ad60 nft_do_chain_pktinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x4fa72a02 nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x50f718e6 nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6a97cdc6 nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x71918b9b nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x71fab08c nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe281bbef nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf0b5664e nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xfe777dee nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x196a07a9 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x3d510f62 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x674e1eef nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x69b3514d nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x9e2d7543 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xbd932045 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xf95b0e9d nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xb015f286 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x3efe46c2 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x161d1417 xt_compat_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1ced9876 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x24c8e482 xt_copy_counters_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x3411e69f xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x3a7c812f xt_compat_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x53119a2e xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5de0cb1e xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5f82f1f7 xt_compat_flush_offsets +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x65c6a7fd xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x66897e0f xt_compat_target_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x691a6d69 xt_compat_calc_jump +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6a1da0cc xt_compat_match_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7107dc1c xt_compat_target_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7c3e2ffc xt_compat_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7d4a205e xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa8609d45 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbb075f10 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbcd7511a xt_compat_match_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc63551cd xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc929fa0d xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xcc620f87 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xcfbaf201 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 0xfcd65ada xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x132318ac xt_rateest_lookup +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xd7e1b517 xt_rateest_put +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x3412c891 nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x4133b210 nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x83c61558 nci_spi_send +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x05ead4f4 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x0bef4936 rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x0c13fd27 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x0da5b35a rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x10eb69bd rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x156c5e10 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x1ec069cc 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 0x3790c569 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x49b22f18 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x6668ce46 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x77f9b690 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x7bc62829 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x7e151303 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0x81138370 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x916afbc3 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x97d5b47c rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x98d0a48c rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0xb83c4bdf rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc5e1f471 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0xdcd496f9 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0xdd52500c rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xee5ffa26 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0xfcf5b6bf rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0xfda5b066 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x10f6573d rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x5795808a 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 0x11eb97ca 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 0xb146569f 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 0xf0d4813c svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x02f14a14 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x03147844 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0532dcda xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x059f2f1f svc_destroy +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 0x08f0225d sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0921ee31 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x09237d07 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x09afec3d rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x101e9a60 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x124f25d8 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x13ba60cb svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1456a3fe xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1901d3f9 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ac17d1f xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1aed9689 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b256199 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b50df5d svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f2a9970 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f5c36d9 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x208d4d37 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x20c05f6b xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x22ab00f7 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x239e8752 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x24755c76 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x264323eb rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2739f8e3 rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x28cca853 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2917a90b sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2a027081 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2c4ab49e xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d8ec074 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2ec77d2d xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x30e2609e rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x313047be rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31908c63 rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3208db77 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32e01df1 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x33485d00 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x35ba229f rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x37770ade rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3ecf9a32 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f2d5afd rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x404fc8f0 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x46b0f2d8 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4701b5c4 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x47b05d8c rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x489216d7 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4a6a503d xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d3d7c07 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4f183760 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4fc551c5 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x520d3409 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53300388 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53c7d1c6 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x54860233 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x56b2ad1d rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x586551c3 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x59b9489c rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a4758f1 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5ad32ca5 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b33027d svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b5a3a25 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5c5f51bf svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5d803a3b cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5da0309e svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5dc6de5d xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5dd3fe6a svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x61f89cd8 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x630d6460 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x63558049 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6396892a __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x64e85e60 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65cfa5cf xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x69bdb4e5 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a0db58d xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a8c5049 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6ae93866 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6b9d17d0 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6f10f685 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6fce6a4b svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x706cfee9 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x722cbf7a svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x734fb1b9 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x75bdc5f1 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x768a9b35 rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7693173c svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x78bd7ae8 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x78cceba5 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a36ddbd rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7cb96e74 xs_swapper +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de46079 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7e3ba06a rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8082fb19 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x82be2ca0 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x82c56bc0 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8342934a xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x839b37dc rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x84aa932c xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8806b703 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8937bc4d xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8b8e5791 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8dad9608 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e75ef79 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x90551cda cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x90e1dc0f xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x914b22e2 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x92fb0dad rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x93732bb2 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9444463e xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x95c645c7 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x961ef826 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x972682c5 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9afca672 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9b84b3cd unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9cd18860 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d92695f svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e1e87be xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e54ea47 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e72c029 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9f00dfc6 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9fc8a32b rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9fcb35da rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa0683bc9 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa08d34e9 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa22345f2 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa29a6261 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa7255bb3 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa8f563fa svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaa263435 rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaa96b7c9 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xac7222db rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf0960ac sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb055d9c4 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb122de15 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb1b02674 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb1bf5368 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb300c943 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb341442b xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb52c8fcc cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb5b087d8 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb672088f svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9c5a090 svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbd0c7428 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbdba7d1b rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbdc8a366 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf402d15 xprt_unregister_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 0xc1cbb771 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8f457bf rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcd1a8e83 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xce79de63 rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd05b4e39 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd2520d54 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd2538f53 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd2587fc5 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd2bda1af rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd3c0bf18 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd3d3cf10 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd4a96b37 gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd6a6730b rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdaa3bb3e xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdc72eea3 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd85b9a2 rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe064e7f3 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe2ce0fa6 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe304147f sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe3f35469 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe6089f34 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe6ce7389 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe6d23e93 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe81726a3 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xea4d3a3e rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xec64ad42 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee31771e xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf080a923 svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf088c1f7 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf1179e20 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf15953af svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf18dc84a rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf45bc564 rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf5da39c3 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf7ae3978 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa271da2 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa3b6628 rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfaa15123 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfaf0d9c0 rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfc2039b0 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfc59f409 xdr_shift_buf +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 0x1e14b278 vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x20cbd616 vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x487ed75a vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x50dc95b8 vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x5714f0a4 vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x59d943c8 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x6128c4f4 vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x692e48dd vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x751ff010 vsock_addr_unbind +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7b9b5e9a vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x8463e9c5 __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x970b77bc vsock_pending_work +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xa0e42727 vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xaef571f1 vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc6189d28 vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xcec162d5 __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/wimax/wimax 0x072eeae9 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x10cd2f19 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0x2e780f9b wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0x4290b5a5 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x61c74a5d wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x663148da wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x6a5e16da wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x8994c3e9 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x8b616e98 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0xcf34791d wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0xef0a70c2 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xf723bb02 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0xfb04f1c1 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x173f6996 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x2d17fdda cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x35d6c3c7 cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x3b17bcdb cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x48d8f980 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x50554754 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x50687629 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x67427616 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x6dce0fed cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x7ff7c5ed cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xa0fd160e cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00778770 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x056bb269 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0a575945 xfrm_count_pfkey_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0b9e5852 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x74e1a843 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7c30b8c7 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x92dbc6c1 xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xbc8b0f41 xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xce7a55c1 xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xe122af95 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x3042d83a ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x31667183 ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x563883cb ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x9d3185b9 ipcomp_destroy +EXPORT_SYMBOL_GPL sound/core/snd 0x34fef006 snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd 0x3ca17104 __snd_printk +EXPORT_SYMBOL_GPL sound/core/snd 0x41f821b2 snd_kctl_jack_report +EXPORT_SYMBOL_GPL sound/core/snd 0x60707eea snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0xb8c3312e snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0xf3cbe41b snd_kctl_jack_new +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x33b81895 snd_compress_deregister +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x5c1d3e86 snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xe3d16f13 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 0x5fef8207 snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xaef1167e snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x3ef60e9a snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x5a63331f snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x72a732fa snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xcc43b562 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xd1633997 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xf1e11faa snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x02f8aa57 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0335bdcd snd_hda_codec_write +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 0x083fd347 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0976d32c snd_hda_ch_mode_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0abb3f1d snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0c30f3fe snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0ee29c11 snd_hda_gen_spec_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x104feba2 snd_hda_bus_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1092b39f snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x10e36ad0 snd_hda_query_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x137b0b50 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x152b1f59 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x155867da snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1688b902 snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x18129bfe snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x182fd8b5 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1935155c snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x19a207be snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1ee23784 snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2017008c snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x21260ee4 snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2b19e67a snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2e8f26e9 snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x30f5db52 snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3449c259 snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x34f3e174 snd_hda_mixer_amp_volume_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 0x390ed145 snd_hda_add_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x395704bb snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x399e7817 snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x39d834b8 snd_hda_query_supported_pcm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3b036d9d snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3bb25cfa snd_hda_check_board_codec_sid_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3bce8d07 snd_hda_suspend +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3c0a34bf snd_hda_resume +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3c17adba snd_hda_bus_reboot_notify +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3c4a8176 snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3ef2062a snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4507e52a snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4540fd15 snd_hda_codec_flush_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x457166fc snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x471a015d snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4955a0f2 snd_hda_queue_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4b1652aa snd_hda_parse_generic_codec +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4bc12132 snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4bcddc6c snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4bf2dbed snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4ce3cac3 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4cfc764e snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4d3242ac snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4dab1f60 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4dc85954 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4ee26869 snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4ff1cc42 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5086380e snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x51686895 snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x548d527b snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x550dd607 snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x55284d5e snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x570ef06e snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5c71c802 snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5e53aa88 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5f14045b hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x61e0a5ce snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6282fa32 snd_hda_jack_tbl_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x65d7120d snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x69db7e43 snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6a3cabec snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6d7b26d5 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6fb19970 snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x70c5e873 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x71a73915 snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x71ed1597 snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x76dc6871 hda_main_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7830937c __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7963b2ef snd_hda_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7b52fc76 snd_hda_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7ba761ee snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7beb8c67 snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7c28e009 snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7d0cbb90 snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x80dcc71d query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x80de6cb2 snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x85b96c6c snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x86d64bbe is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x871a6e44 hda_extra_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x890e7ca5 snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8b3ad17d snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8c13ccc5 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e4c6826 snd_hda_calc_stream_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x90ebe988 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x919bceb8 snd_hda_sequence_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x919f0a2f snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x91f9cf77 snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x924fee6a snd_hda_override_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9331bf2d snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x93c6703c snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x94f76d5a snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x96298433 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9669790b snd_hda_codec_resume_amp +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9798c622 snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9963cfef snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9e81ecc3 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa06a65c7 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2594d28 snd_hda_ch_mode_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 0xa3c7d015 snd_hda_codec_amp_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa6330507 __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa78bd41e snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa7d575f9 snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaae22f50 snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xac82da5f snd_hda_codec_resume_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xae8dba54 snd_hda_ch_mode_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaed7b451 snd_hda_codec_update_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb03035ee snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb07362e2 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb6624d1a snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb7ff1e51 snd_hda_delete_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb9d5b093 snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xba8855e9 snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbc18e76c snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbcf54501 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbd5ebea2 snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbdfa19cd snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe51cf8a snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc1f184bc snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc4486998 snd_hda_check_board_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc652fd69 snd_hda_get_jack_connectivity +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc805a68d snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xca43b027 snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcafaa947 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb301b6e snd_hda_get_jack_type +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcc915b44 snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xccd03583 snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcd39da03 snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcda8e14f snd_hda_get_sub_nodes +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcf04b650 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd175d0e5 snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd41750e1 snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd55fe5c5 snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd6407751 snd_hda_is_supported_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd65e4061 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd96ad825 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdb60a8d8 snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdbceab6b snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdeb2bfe9 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe6c5beae snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe70ad974 snd_hda_codec_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf43bebe4 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf5aeea4c snd_hda_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf7d13a88 snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf9b9ffc5 snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfaa7aa4c snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfaced523 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfb1afd36 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfbbffb4b snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfef3a2de snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xff2e5eec snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/soc/atmel/snd-soc-atmel-pcm 0x1295acd8 atmel_pcm_free +EXPORT_SYMBOL_GPL sound/soc/atmel/snd-soc-atmel-pcm 0xa66ad832 atmel_pcm_mmap +EXPORT_SYMBOL_GPL sound/soc/atmel/snd-soc-atmel-pcm 0xd88c636c atmel_pcm_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00a34056 snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00b4fc84 dapm_mark_io_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x017a5263 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x030c465b snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x041017bd snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x06dceffb snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x093fec9f snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0c910fd3 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0e820b0b snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0f2b6e22 snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1047a84b snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x10e0555a snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1197bc1c snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x12ed3255 snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1301c42a snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x132c57bb snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x16663d33 dapm_mark_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x17648cd8 snd_soc_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x18625dfa snd_soc_put_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1bac976e dapm_reg_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1cf70522 snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x21ef27ad snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2385b837 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x23cf1f94 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2587b56e snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2672d1aa snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x29e589b9 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2a0dc48d snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2c608c83 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2dbde5b1 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2f807daa snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3075732f snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x36f81aa9 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3999f4fe snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x39d5ee3c snd_soc_info_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3b33fc88 snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3e66dff3 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3eff223e snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x43e923a5 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x44e78640 snd_soc_cache_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x46dea51b snd_soc_update_bits_locked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4caa25ba snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4cbd5358 snd_soc_lookup_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4cf4aaa1 snd_soc_codec_set_cache_io +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4d20a0ca snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4d46a759 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4e574dfa snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4e6a186f devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4fec0b0e dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x509ff51c snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x526a6343 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x53b29472 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5453d425 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x570c8189 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x58fc8eed snd_soc_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5dc092f1 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5f34c9fd snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5f86af38 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x62a09323 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x655d7501 snd_soc_remove_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6a346e48 snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6b3400fa snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6d2c26c1 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6febdccd snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x71aa6488 snd_soc_codec_volatile_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7931dc85 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x818eaacc dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x81a9050d snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x828f9fd2 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8347457d snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x84d48b0a snd_soc_dapm_get_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8992a5de snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8c1c823d snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8c3d3cf4 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8d012bc2 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x91647639 snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x930f0aff snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x93bec40e snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x955cf4d3 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x96be57e9 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9825315c snd_soc_dapm_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9bab0aa7 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9dd3afe0 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa10900c2 snd_soc_cache_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa14b25ed snd_soc_cache_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa28dd8fa snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa433cf0c snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa5196ad4 snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa66d8520 snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa6cad548 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xab644b05 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaf3dce58 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb23d50f8 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb2d41c3b snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb7a46326 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb8d1e801 snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbdbc3e00 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbdf875ed snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbed18079 snd_soc_dapm_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbf20a056 soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbf6f0ca4 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc298d5a3 snd_soc_codec_writable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc34610ff snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc434838b snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc441acc9 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc4aac252 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc5f53afb snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc6265123 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc6402c0d snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc6ddd98c snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc9ab88aa snd_soc_codec_readable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcb96aedb snd_soc_get_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xccb61481 snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcf86c907 snd_soc_dapm_put_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd28ea142 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd41d3628 devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd5250785 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd80debaa snd_soc_add_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xddca2286 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xde6e3b5c snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe3459236 snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe498fd85 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe680c5a7 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe89d7c5a snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe93622cc snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe93db96a snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe9c74843 snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeaf4c1f4 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xec0770f9 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf3389f39 snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf5e02b45 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf6728bbb snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf79179da snd_soc_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf79d762b snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfe68406c snd_soc_dapm_kcontrol_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfe8aea63 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfee3d9cd snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL ubuntu/i915/i915_bdw 0x118a3f6e i915_bdw_gpu_busy +EXPORT_SYMBOL_GPL ubuntu/i915/i915_bdw 0x34af3be3 i915_bdw_release_power_well +EXPORT_SYMBOL_GPL ubuntu/i915/i915_bdw 0x7381c75a i915_bdw_read_mch_val +EXPORT_SYMBOL_GPL ubuntu/i915/i915_bdw 0x8993eade i915_bdw_request_power_well +EXPORT_SYMBOL_GPL ubuntu/i915/i915_bdw 0x8b28f943 i915_bdw_get_cdclk_freq +EXPORT_SYMBOL_GPL ubuntu/i915/i915_bdw 0x96d7119d i915_bdw_gpu_raise +EXPORT_SYMBOL_GPL ubuntu/i915/i915_bdw 0xa17bc3aa i915_bdw_gpu_turbo_disable +EXPORT_SYMBOL_GPL ubuntu/i915/i915_bdw 0xde54f019 i915_bdw_gpu_lower +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x00000000 compat_alloc_user_space +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x00000000 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sigset_from_compat +EXPORT_SYMBOL_GPL vmlinux 0x00000000 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x0034f3b6 xen_has_pv_nic_devices +EXPORT_SYMBOL_GPL vmlinux 0x006bc072 hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0070ef14 __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x007fae2c pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x0081f4f4 need_load_eval +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x0097d126 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x00c4dc87 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x00cba415 devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x00ebb5ec sis_info133_for_sata +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x00f7ddd3 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x010c7373 input_class +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x0120f3de __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x01407ffa vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x01442271 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x01768f15 dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0x01848a8e local_apic_timer_c2_ok +EXPORT_SYMBOL_GPL vmlinux 0x01a2dcf2 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x01a34934 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x01a57e4d sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x01d25014 devm_acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x0228bb76 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x02448233 wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x02462d42 regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x0249c02e xen_swiotlb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x026211e2 memory_failure_queue +EXPORT_SYMBOL_GPL vmlinux 0x02b308be shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x02e3a057 acpi_ec_add_query_handler +EXPORT_SYMBOL_GPL vmlinux 0x02ff023a regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x03063299 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x032742d1 xen_swiotlb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x0334ec6f jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x033debf7 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x033fd979 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x03538b7d i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x0356f27d unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x038f95b3 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x03a6ed96 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x03bf1d5e gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x03dc7455 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x03dd0962 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03eba1b7 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x03eca9a1 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x0418e250 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x04486e88 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x0488ba10 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x049d82ce ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x04a7c595 iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x04a99f28 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x04bae1f0 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x04c3f2c1 gnttab_empty_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04d255b3 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x04df8fbc lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0x050e1371 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x05307199 xen_swiotlb_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0x053494cb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0x053ab540 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x058f3923 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x05b70fa5 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x05d85fcc subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x05d97cbf nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0x05e2f0e3 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x05fa013e sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x060d1064 set_memory_ro +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x062fc169 xen_hvm_resume_frames +EXPORT_SYMBOL_GPL vmlinux 0x063a4811 xen_unregister_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x064c8a78 gpiochip_add_pin_range +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x06650fac fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x066d6d8c pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x06d549e6 pinctrl_free_gpio +EXPORT_SYMBOL_GPL vmlinux 0x06ffd847 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x0712d8be xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x072605d9 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x0731fdde raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x074ad59c m2p_add_override +EXPORT_SYMBOL_GPL vmlinux 0x075ddff4 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x076e1088 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x07761de0 xen_swiotlb_set_dma_mask +EXPORT_SYMBOL_GPL vmlinux 0x077cde6d arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07cd5cc4 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x07dcffbd usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x07e9df19 exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x07f9a414 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07fb9f60 extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x07fc478e acpi_dev_resource_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x0809ad0e input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x082c2054 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x08766616 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0879c83c dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x087afbc5 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x0889f9b8 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x088bfa7e cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x089d8e25 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x08bc0870 compat_put_timespec +EXPORT_SYMBOL_GPL vmlinux 0x08c9c6ef ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x08ce7eff device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x08f789aa led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x090fee6c dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x09211334 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x0929ddd6 serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x094313d7 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x09469482 kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x0949f37d crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x0954f461 pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x095aac96 gnttab_unmap_refs +EXPORT_SYMBOL_GPL vmlinux 0x09a0b11b devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0x09a4c2cc usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x09a5100d scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x09cb8d46 ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x09d69cb2 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x09dc5acb usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x09f461e2 pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x0a1ad78e __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x0a1ae300 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x0a20648c i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x0a72fa9e kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x0a74a446 inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x0a9fd3c5 gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x0ab98592 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x0ac3dd11 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x0acce1b0 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x0ad02837 sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x0ad872bc inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x0ae345a4 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x0afae654 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x0b00761e tpm_remove_hardware +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b52e502 apei_resources_add +EXPORT_SYMBOL_GPL vmlinux 0x0b7b9554 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0ba4f399 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x0bae62b1 ktime_get_monotonic_offset +EXPORT_SYMBOL_GPL vmlinux 0x0be8cb31 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0bf15926 ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c1bce7e fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c35e5f6 tty_prepare_flip_string_flags +EXPORT_SYMBOL_GPL vmlinux 0x0c378406 sec_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x0c805f93 clflush_cache_range +EXPORT_SYMBOL_GPL vmlinux 0x0c80e3fe efivar_init +EXPORT_SYMBOL_GPL vmlinux 0x0caff981 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x0cb836d9 regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cca0361 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x0cce0227 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x0cd236ce regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x0cdc664d ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0x0d0603ab serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x0d065ca6 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x0d3a7890 pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0x0d3f86ed ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x0d42a98f extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0x0d45620a unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x0d4b6b7f usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x0d547533 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0d66567b __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x0d67fc3c get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x0d721db5 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x0d767e88 __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x0d87796c debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x0d904db8 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x0dc075bc dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x0dd11f01 hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0e13cb4d apei_resources_release +EXPORT_SYMBOL_GPL vmlinux 0x0e1a122e gpiochip_remove_pin_ranges +EXPORT_SYMBOL_GPL vmlinux 0x0e64afe1 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x0e797110 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x0ecf823a static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x0ed9302e percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0x0edcddbe skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x0ee34c41 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x0eeab5bf relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL vmlinux 0x0ef67d28 inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x0ef9212a pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0x0f21addc cgroup_unload_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0f2d7d87 mce_unregister_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0x0f51c456 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x0f5970bb dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f7f6bb2 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x0f862b15 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0f930597 efivar_entry_remove +EXPORT_SYMBOL_GPL vmlinux 0x0fa138de xen_hvm_need_lapic +EXPORT_SYMBOL_GPL vmlinux 0x0faa2336 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x0fb0605f usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x0fcc1969 copy_from_user_nmi +EXPORT_SYMBOL_GPL vmlinux 0x0fd9819f udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0x0fdb232a acpi_register_gsi +EXPORT_SYMBOL_GPL vmlinux 0x0fe2d570 xenbus_directory +EXPORT_SYMBOL_GPL vmlinux 0x0fe3bdb9 efivar_entry_set_get_size +EXPORT_SYMBOL_GPL vmlinux 0x1007a3bb pinctrl_pm_select_sleep_state +EXPORT_SYMBOL_GPL vmlinux 0x100c0087 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x101ed03d dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x10301f31 regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0x1040ca75 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x1042bddd register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x10865cb3 balloon_devinfo_alloc +EXPORT_SYMBOL_GPL vmlinux 0x10c602b7 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x10c978da usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x10d07dea gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0x10d42d2d pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x10ee1c8c rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x110106c1 cper_severity_to_aer +EXPORT_SYMBOL_GPL vmlinux 0x110c36c1 aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x111931da attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0x113edafb __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x114f1a20 balloon_stats +EXPORT_SYMBOL_GPL vmlinux 0x1157eda4 cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x117c7305 hwpoison_filter_dev_major +EXPORT_SYMBOL_GPL vmlinux 0x1192b4b4 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x119af014 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0x11a194ae spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x11c4cd94 xenbus_probe_devices +EXPORT_SYMBOL_GPL vmlinux 0x11d96ca4 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x11e1eda8 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x12086c09 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x12146298 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x121ed3f3 add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x125b9c8a mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x12635cd0 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x126b8e85 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x127e7b82 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x128d30e3 sec_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x12975931 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x129ff6f7 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x12bbb592 device_add +EXPORT_SYMBOL_GPL vmlinux 0x12cb675e regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x12d2dea6 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0x12f50327 pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x1304cdcf usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x13079ea9 blkcipher_walk_virt_block +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 0x132fc939 cper_estatus_print +EXPORT_SYMBOL_GPL vmlinux 0x1355320a devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x136c7aed pinctrl_utils_dt_free_map +EXPORT_SYMBOL_GPL vmlinux 0x138aff76 gnttab_init +EXPORT_SYMBOL_GPL vmlinux 0x138e1e42 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x13921363 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13b4fd03 unregister_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0x13b89dee pinctrl_request_gpio +EXPORT_SYMBOL_GPL vmlinux 0x13ce87e8 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0x1416c8d6 put_compat_timeval +EXPORT_SYMBOL_GPL vmlinux 0x146df38f tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x14a1ab6e arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0x14f875ce devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x14fe4faf subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x15010e1f arbitrary_virt_to_machine +EXPORT_SYMBOL_GPL vmlinux 0x1501bf65 __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x15026a32 snmp_mib_init +EXPORT_SYMBOL_GPL vmlinux 0x150dfad4 iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0x15588411 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x159016ec clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0x159189a1 rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0x159d1ed0 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x15aaa83b tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x15b0606e e820_any_mapped +EXPORT_SYMBOL_GPL vmlinux 0x15be6b54 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x1619491a usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x162b6839 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x166253a8 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x1668ec59 inet_csk_compat_setsockopt +EXPORT_SYMBOL_GPL vmlinux 0x1673872e regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0x168f5114 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x16a18008 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x16bd07d5 xenbus_grant_ring +EXPORT_SYMBOL_GPL vmlinux 0x16dd767f inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x16e9409c xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0x173665d6 set_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x1753a32f hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x175d7721 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0x17614bf3 apei_resources_sub +EXPORT_SYMBOL_GPL vmlinux 0x177561d9 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x178f7238 acpi_subsys_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x17a7e4c9 ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0x17ab4893 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x17c159e3 acpi_dma_request_slave_chan_by_index +EXPORT_SYMBOL_GPL vmlinux 0x17ef04b0 tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x17fb5706 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x17fc3d28 xenbus_unmap_ring +EXPORT_SYMBOL_GPL vmlinux 0x1829b9ed hwpoison_filter_memcg +EXPORT_SYMBOL_GPL vmlinux 0x18429d5e pci_disable_rom +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 0x1862695a unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x18826efb tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x1889563a clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0x188a95eb pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0x18ba030f ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x18c7873b mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x18f83fab gnttab_grant_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0x18fd0ddf cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x192a42bf clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x195715e2 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x196614ce hw_breakpoint_restore +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19b384a5 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19c20db8 cgroup_add_cftypes +EXPORT_SYMBOL_GPL vmlinux 0x19ebda25 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x1a082d69 max77693_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x1a0b0b3b pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0x1a10eac7 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x1a323362 __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x1a490286 rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0x1a4b9c21 user_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x1a4f83ed stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x1a72ce3a rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x1a84a110 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x1a8a7948 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x1ac3f1fb sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x1ac6c6e2 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x1ac9db22 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x1acd1d9d sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1ad83009 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x1af19f35 rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x1b1d985a virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0x1b3c9291 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x1b5ff6cc scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x1b779bef evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0x1b8822d8 pinctrl_gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1b9b83f1 mmc_send_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x1bc5eebe pinctrl_gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x1bd06aab cpufreq_frequency_table_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x1bd24472 tpm_release +EXPORT_SYMBOL_GPL vmlinux 0x1bfe53fa bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x1c121d06 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x1c44194e sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x1c5a7a60 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c60720d tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c84fb80 acpi_unbind_one +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c8c8c0e rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x1c97f0f4 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x1cb48324 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x1cb72bed fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0x1cdb2147 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x1cdcc992 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x1cfb3a64 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x1cfd95c1 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x1d032491 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x1d459685 xstate_size +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d6a2e19 proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0x1d7205e9 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x1d739e1c xen_set_callback_via +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d8fb3bb acpi_dev_resource_address_space +EXPORT_SYMBOL_GPL vmlinux 0x1d957b37 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1da27059 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x1db4057a rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0x1dfba683 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x1e000879 hwpoison_filter_enable +EXPORT_SYMBOL_GPL vmlinux 0x1e26be7e wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x1e3a88fb trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x1e4d013e spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e5eb5bc hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e8fac8e wireless_nlevent_flush +EXPORT_SYMBOL_GPL vmlinux 0x1eab1217 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x1eb1594f gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebb87b1 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1edc21cb hwpoison_filter_flags_mask +EXPORT_SYMBOL_GPL vmlinux 0x1ef75f4b iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0x1f1988f7 hwpoison_filter_flags_value +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1f9c7238 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x1fbaa0cd dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x1fc2d11e regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0x1fc9d6a3 device_rename +EXPORT_SYMBOL_GPL vmlinux 0x1fcece42 inet_twdr_twcal_tick +EXPORT_SYMBOL_GPL vmlinux 0x1fe0289f xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x1ff235b7 __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x201a3840 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x20548041 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0x2055bc07 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x209ec764 xen_event_channel_op_compat +EXPORT_SYMBOL_GPL vmlinux 0x20ba0a6e __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x20bc3470 orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x20cbf6e2 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x210be764 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x2118b550 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x211df0a6 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x213040e5 pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x21572dc3 devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0x216b93d1 pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x2195367b rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0x21996762 skb_gro_receive +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21e8cdd4 aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x21f924f5 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x21fd349f rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x21ff896f pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x22314cdb virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0x224dee50 virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0x226ba7ff gpio_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x2286feaf debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x229f11ae virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0x22b198ac i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x22b7af71 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x22c0e864 acpiphp_register_attention +EXPORT_SYMBOL_GPL vmlinux 0x22f19fce sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x230a450f register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x2318300c irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x231a26c8 call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x2325e011 print_context_stack_bp +EXPORT_SYMBOL_GPL vmlinux 0x23481842 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x2360e0c0 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x23622ec7 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x2366a2c0 errata +EXPORT_SYMBOL_GPL vmlinux 0x237dd286 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x23adc62a sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x23bb7071 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x24011e14 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x241512ab regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0x243dc1e8 usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x2447533c ktime_get_real +EXPORT_SYMBOL_GPL vmlinux 0x244e0ee6 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x245460b9 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x24692243 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x2469810f __rcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x246ed4dd da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24af779e devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x24b6f96e da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x24c1753e __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x24c7698a xenbus_write +EXPORT_SYMBOL_GPL vmlinux 0x24c91e0c ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x2516eb7b platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x25262b18 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x252a5595 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x252ea475 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x253236f2 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x254544fb class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x2545c170 unregister_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x2554fb46 rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x2568f0bb ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x256a10b2 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x25958654 tpm_show_temp_deactivated +EXPORT_SYMBOL_GPL vmlinux 0x2598b1a0 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x25a97010 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x25b6031a rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0x25c1490b device_attach +EXPORT_SYMBOL_GPL vmlinux 0x25d0293b powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0x2612e310 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x261e90f3 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x262442a0 extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x2625fd14 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x265b34c4 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x26965721 slow_virt_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x26a3e1c9 device_del +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26b8dae0 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26f75126 device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0x26fd0de6 pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x272a80a1 rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x272bb0ee relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x27302f5b blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x2733746f extcon_find_cable_index +EXPORT_SYMBOL_GPL vmlinux 0x2735ef9d init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x2755ab4c device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x2757476c rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0x279cb985 apei_exec_pre_map_gars +EXPORT_SYMBOL_GPL vmlinux 0x27a5d89a devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x27c0c4be eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27ddb33d acpi_dev_resource_io +EXPORT_SYMBOL_GPL vmlinux 0x27ea090d subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x285e4e22 regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x28684fde ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x286e3b0f crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0x289b4d29 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x28a7b7a9 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0x28a903c8 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0x28c8d5e9 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x28da1460 pci_configure_slot +EXPORT_SYMBOL_GPL vmlinux 0x28e64c64 xen_has_pv_and_legacy_disk_devices +EXPORT_SYMBOL_GPL vmlinux 0x28fabdd7 platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x28ff6a3f irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x2900e522 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x2909f5be usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x2921142f vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x29347a23 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x29b1eb43 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x29b85984 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0x29b87688 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x2a397198 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x2a408f43 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a86b039 usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x2aa71743 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x2ab82294 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x2abc1a82 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2ac186d9 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x2ac499e1 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x2ad0ef6f sec_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x2ad1ece4 zs_get_total_size_bytes +EXPORT_SYMBOL_GPL vmlinux 0x2adb5b4f kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0x2af45eb1 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x2b08fecb class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2b238f05 percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0x2b2495df device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x2b2ed427 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x2b332c51 pinctrl_dev_get_devname +EXPORT_SYMBOL_GPL vmlinux 0x2b3fe212 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x2b70b698 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2b7a6de8 syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x2b93b67b ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2ba4f6d4 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x2bd72b76 btree_update +EXPORT_SYMBOL_GPL vmlinux 0x2bfaef4e clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x2c0ac081 user_describe +EXPORT_SYMBOL_GPL vmlinux 0x2c1040b1 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c4613dc inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x2c7d9c64 xen_store_interface +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c904508 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x2c9bdb47 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x2ce7fa31 arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2cf400f5 xen_pci_frontend +EXPORT_SYMBOL_GPL vmlinux 0x2cf5d554 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x2cfc5d13 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x2d00bd89 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2d17a0e1 cgroup_taskset_size +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d2f7873 skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d4813ad uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x2d4f722c usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d656d3f context_tracking_enabled +EXPORT_SYMBOL_GPL vmlinux 0x2d7266ee inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x2d7a9c3c driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x2d8904b5 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x2d90eb07 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x2d92bead PageHuge +EXPORT_SYMBOL_GPL vmlinux 0x2d95e6e6 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x2d9f2ce3 sched_clock_idle_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x2dba276a __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0x2de2316a sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x2e1da9fb probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2e433d debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e418cd8 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x2e45e488 rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x2e4a97c4 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x2e530175 rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0x2e5317ec crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0x2e53993c dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x2e53f338 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x2e54bdbd rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0x2e55da09 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x2e9adf1d xenbus_dev_is_online +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ed61b80 platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x2ee440b5 ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2ef72b5b tcp_init_congestion_ops +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f25bbdf da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f64415f unregister_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2f857551 machine_check_poll +EXPORT_SYMBOL_GPL vmlinux 0x2f864e65 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x2f9cfec2 pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x2fa5637c bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x2fb79908 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x2fc5c306 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x2fcab124 blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x2ff4a08a ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x2ffc0aa1 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0x3034a1aa task_xstate_cachep +EXPORT_SYMBOL_GPL vmlinux 0x303c3301 da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x304c085e __efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x30625c04 regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x307a2d5d device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x308a015a dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x308b733a getboottime +EXPORT_SYMBOL_GPL vmlinux 0x30a68494 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x30a74e34 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x30b00733 regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x30dfedce sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x31325378 iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0x31741646 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x317e99ce sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x318c9106 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x3191bd8f gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x319a8811 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31c99256 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x31dcbe1b bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x320cf7a1 sysfs_put +EXPORT_SYMBOL_GPL vmlinux 0x321bdbb1 compat_get_timeval +EXPORT_SYMBOL_GPL vmlinux 0x321f86e7 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0x32408901 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x324f7bcb cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x3256ca45 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x325e677c gnttab_grant_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x32900107 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0x329bbbde timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0x32b31a8c ktime_get_boottime +EXPORT_SYMBOL_GPL vmlinux 0x32bded08 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32ddd4b8 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x32ddd5b6 call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x32fd447a monotonic_to_bootbased +EXPORT_SYMBOL_GPL vmlinux 0x330d1143 apic +EXPORT_SYMBOL_GPL vmlinux 0x3310bf11 pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x33655159 xen_pcpu_hotplug_sync +EXPORT_SYMBOL_GPL vmlinux 0x3377dfd3 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x338addf0 usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x33a1e2d2 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x33b96e5d apei_exec_write_register +EXPORT_SYMBOL_GPL vmlinux 0x33c46234 sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x33c68f3f tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0x33d98359 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x33f7ab15 get_compat_timespec +EXPORT_SYMBOL_GPL vmlinux 0x3441a601 rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x3465fce6 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x349c9c6f cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x34b76552 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x350d5b14 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x352650ee gnttab_batch_map +EXPORT_SYMBOL_GPL vmlinux 0x35556004 iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0x3555f557 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x35c9463d ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x35dee15d noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x35f10f43 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x35f165f1 devm_reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x35ff2664 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x363f8083 __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x364ff56d ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x365cc1d0 alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0x368642f1 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x368a60bc spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x368a9ed3 stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0x368f1fea static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36b5497e intel_iommu_enabled +EXPORT_SYMBOL_GPL vmlinux 0x36b6cfe4 device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x36bed763 vtime_guest_exit +EXPORT_SYMBOL_GPL vmlinux 0x36f1c9ab pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x36f63718 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0x3730c360 system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0x37664021 wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x377d5750 devm_pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x37dd0762 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x37ea6fe1 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x37f1ffbf gdt_page +EXPORT_SYMBOL_GPL vmlinux 0x38620e38 gnttab_grant_foreign_access_trans_ref +EXPORT_SYMBOL_GPL vmlinux 0x3867c066 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x386ae868 ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x389321ac usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x38973e53 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x389baab3 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x38b41469 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x38c92f72 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x38f2ba67 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x38f521a1 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x38fb1c9a wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x38ff7ff2 tpm_show_enabled +EXPORT_SYMBOL_GPL vmlinux 0x391924c0 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x392ee27d cgroup_taskset_cur_css +EXPORT_SYMBOL_GPL vmlinux 0x39405a5d skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0x39746fa4 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x3998ad3b con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x399c385e ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x39c509f9 acpi_bind_one +EXPORT_SYMBOL_GPL vmlinux 0x39d5b648 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0x39e41d76 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0x3a1636fa bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a38dc65 memory_failure +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a5791f9 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x3a5974f9 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3a778a72 iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0x3a898450 dm_set_device_limits +EXPORT_SYMBOL_GPL vmlinux 0x3aa2cbec fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x3aa7c061 pinctrl_force_default +EXPORT_SYMBOL_GPL vmlinux 0x3ad0e201 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x3ad4867f pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x3af409c8 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x3afaa94e __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x3b271a1a arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x3b50553b ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3b554d04 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x3b59ea59 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x3b6d696f iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x3b7145bb apei_exec_read_register_value +EXPORT_SYMBOL_GPL vmlinux 0x3b86cb56 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0x3bbf08c5 acpi_bus_trim +EXPORT_SYMBOL_GPL vmlinux 0x3bc55552 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0x3bceb998 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x3bf20ff8 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x3bf6d416 pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x3bf7a741 dm_requeue_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0x3bfcedd5 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x3c1b6da6 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x3c1bfbb9 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x3c334ddf sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x3c4d7b8b usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x3c5b03ed crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x3c6b2449 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x3c8424a0 clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3c9bef26 serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x3cbb9975 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cef4392 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x3d0b4650 thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d3a5f86 pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0x3d49b2f1 extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3d5f392d acpi_os_unmap_memory +EXPORT_SYMBOL_GPL vmlinux 0x3d7ea99a gnttab_grant_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x3d817d5a da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x3d88cad5 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x3d95361c pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0x3dae6404 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x3db2bd58 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x3db89b28 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dcc0e4e device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x3dd86a3f usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3e2e543d cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x3e2fa31f wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3e5da36e usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e971b8d regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x3e9ad562 ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x3e9da13a spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x3ea5196d apei_osc_setup +EXPORT_SYMBOL_GPL vmlinux 0x3ec056b9 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x3ed468b1 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x3ee40fe6 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x3ef493ed regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f1e1881 ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0x3f229c4c oops_begin +EXPORT_SYMBOL_GPL vmlinux 0x3f273cb7 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x3f84d4c9 gnttab_release_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x3f95b899 rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x3fa549e6 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x3fc27133 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x3fc72d3d __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x3ff46f31 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x3ffc8ebd class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x400a024b acpi_scan_lock_release +EXPORT_SYMBOL_GPL vmlinux 0x4017814e cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x404b0918 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x40677ea2 unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x406c2e99 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0x4074589c security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x407aa205 acpi_preset_companion +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40c400c5 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x410e0544 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x41102cb8 sdhci_pci_o2_probe +EXPORT_SYMBOL_GPL vmlinux 0x411ba1a6 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x41200f8a subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x412fc7c2 md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x4132a4bc fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x413b7c11 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x417ad1ba tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x4190969f efivar_entry_find +EXPORT_SYMBOL_GPL vmlinux 0x41da5256 __put_net +EXPORT_SYMBOL_GPL vmlinux 0x41ee0a38 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x41ffb000 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x4201b2d8 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x4206474a __module_address +EXPORT_SYMBOL_GPL vmlinux 0x4209ee1d power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x4213a51a efivar_entry_set_safe +EXPORT_SYMBOL_GPL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x42181a78 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x4240569b tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x42453365 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x4258f48b put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x425b641b pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x42744fd4 tpm_show_owned +EXPORT_SYMBOL_GPL vmlinux 0x427d5c68 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x427e6bc5 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x428a930d raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x42a8a629 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x42c87441 get_device +EXPORT_SYMBOL_GPL vmlinux 0x42ec35a1 sysfs_schedule_callback +EXPORT_SYMBOL_GPL vmlinux 0x43115b5e da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x43228870 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x432ec3ac dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x43540a40 iommu_present +EXPORT_SYMBOL_GPL vmlinux 0x438a0684 relay_open +EXPORT_SYMBOL_GPL vmlinux 0x438ecdc2 acpi_pci_find_root +EXPORT_SYMBOL_GPL vmlinux 0x43928edf wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43c80c74 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x43ca28ab platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x43d25f68 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x43dad630 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x441c74b3 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x44263068 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x442f7420 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x44320a6c gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x44404f11 kdb_register_repeat +EXPORT_SYMBOL_GPL vmlinux 0x4466c5bd blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x4483e318 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x44b2880b add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x44c3683e sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x450fb522 kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x45339658 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x4541fe0d mtrr_state +EXPORT_SYMBOL_GPL vmlinux 0x454c15ae __smp_call_function_single +EXPORT_SYMBOL_GPL vmlinux 0x456b5dee pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0x4570cece powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x458ec166 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x459818e9 devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x45b52497 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45d14bdf hypercall_page +EXPORT_SYMBOL_GPL vmlinux 0x45ea88e3 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x45f6177a exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x45fc7fbd rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x460f31aa rodata_test_data +EXPORT_SYMBOL_GPL vmlinux 0x460f7531 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x461affc5 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x461f1366 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x46434934 disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x4658d889 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x46619bb7 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x46d825c4 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x470422c8 pin_is_valid +EXPORT_SYMBOL_GPL vmlinux 0x470fa426 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x474ba02c ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0x4753187d iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x4760e80a __efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x477a6ec6 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x478c3b40 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x479c8b4c ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47fa4e32 cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x481bb1aa ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x4828e77b acpi_scan_lock_acquire +EXPORT_SYMBOL_GPL vmlinux 0x484643e3 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x484f9aeb dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x48682db9 perf_guest_get_msrs +EXPORT_SYMBOL_GPL vmlinux 0x487547a1 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x489e21f5 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x48acaa1f bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0x48b89aa8 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0x48c7de0b ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x48ca0c07 pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0x48de2d75 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x490a8df6 x86_platform +EXPORT_SYMBOL_GPL vmlinux 0x4937bb23 xenbus_switch_state +EXPORT_SYMBOL_GPL vmlinux 0x49481a2c devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x494d259b lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0x498bd502 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x498d293a trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x49b2a8a5 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x49e32941 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x4a060f15 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x4a14c755 fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4a19dcf9 usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x4a24e355 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4a3c3cf9 microcode_sanity_check +EXPORT_SYMBOL_GPL vmlinux 0x4a8c3941 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x4a90160e bprintf +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4ad8257d vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x4affd08b put_compat_timespec +EXPORT_SYMBOL_GPL vmlinux 0x4b15e87d sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x4b3124b0 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x4b326a8e key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x4b32b3a8 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x4b360037 task_current_syscall +EXPORT_SYMBOL_GPL vmlinux 0x4b3eece0 regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0x4b54b118 ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x4b888285 pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x4b9b1e29 generic_access_phys +EXPORT_SYMBOL_GPL vmlinux 0x4bc62a81 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x4bd61fe3 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x4bf0d6d1 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0x4bf91a41 preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x4c23d5f5 pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x4c2a472b __static_cpu_has_safe +EXPORT_SYMBOL_GPL vmlinux 0x4c2e1f24 clk_disable +EXPORT_SYMBOL_GPL vmlinux 0x4c5c846a da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4ca4c9df clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x4cab0786 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x4cd9e225 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x4ce7735c ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x4d0d575d usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x4d1024a7 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x4d5cec42 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x4d67d556 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x4db171e3 clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0x4dd44809 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4de3e3fc od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x4df640c3 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x4e0a735e wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e3a5458 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x4e480a93 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x4e48f083 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x4e57723d apei_read +EXPORT_SYMBOL_GPL vmlinux 0x4e5de514 devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x4e6d73d2 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x4e703ed1 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x4e74e625 gnttab_batch_copy +EXPORT_SYMBOL_GPL vmlinux 0x4eb03add raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x4ebc6ed4 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x4ec7b8e3 tracepoint_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f020dee public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x4f060b5e spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0x4f0f97c7 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x4f165d72 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x4f245c80 devres_add +EXPORT_SYMBOL_GPL vmlinux 0x4f43a553 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x4f788495 acpi_dev_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x4f87bd37 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fd5cfb9 idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4ff84e97 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x5005af87 nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x500b6dd7 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x5026585c xen_irq_from_gsi +EXPORT_SYMBOL_GPL vmlinux 0x50347bac synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x5045433c led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x505f547e tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x50640d73 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x506691f1 sock_diag_check_cookie +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 0x509595ad ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x50a0c7d6 pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x50b5cee5 pci_pri_stopped +EXPORT_SYMBOL_GPL vmlinux 0x50d1f870 pgprot_writecombine +EXPORT_SYMBOL_GPL vmlinux 0x50dbbc9c da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50e7c105 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0x50ef7b26 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x512b1d19 register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x5144af2c rtc_set_alarm +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 0x519e5524 inet_csk_reqsk_queue_prune +EXPORT_SYMBOL_GPL vmlinux 0x51a735f4 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x51a902b1 pinctrl_dev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x51b9ad54 acpi_dev_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x5213d550 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x522f538b tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x523f5545 cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x525b89d5 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x52604a2f rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x5272d8bc __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0x52969624 devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x52a41251 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x52d3fe0d hwpoison_filter +EXPORT_SYMBOL_GPL vmlinux 0x52e030ed thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5305646e alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x531c7837 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x5321e5b1 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x5347853b da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x5354693e cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x535cff32 __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x538ad50d fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0x539f157b pci_xen_swiotlb_init_late +EXPORT_SYMBOL_GPL vmlinux 0x53b14b10 iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0x53c0f091 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x53d82ad6 __rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x53de4259 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x54215db5 visitor64 +EXPORT_SYMBOL_GPL vmlinux 0x542f9d42 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x54347cfe platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x543ceb64 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x5467bccc device_move +EXPORT_SYMBOL_GPL vmlinux 0x546e6e7e pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x546fd0e1 xen_xenbus_fops +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54ac2844 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x54b22bc2 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x54dac9a5 acpi_dev_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x551c3962 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x551fbeba scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x5525c645 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x554db7b2 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x55526907 xen_features +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x5582f822 regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x55b09817 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x55b4056c spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x55b5adfd usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x55e68a13 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x55fb3061 pinctrl_get_group_pins +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 0x564f1dca klist_add_after +EXPORT_SYMBOL_GPL vmlinux 0x564fe89a ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x5654f836 erst_get_record_id_next +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x567998df scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x567e2470 apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x568f852b inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x5692386f gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0x56947347 dmi_walk +EXPORT_SYMBOL_GPL vmlinux 0x56ab2a9b devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56da7dc4 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56e7d899 unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x56f837e7 unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x57037a8b tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x57120979 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x57257d7a regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x57267cc3 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x57520d16 cper_estatus_check_header +EXPORT_SYMBOL_GPL vmlinux 0x575a67df usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x575c5f94 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0x576bd288 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x5779d445 xenbus_exists +EXPORT_SYMBOL_GPL vmlinux 0x5780367e tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x57851905 rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x579ee14f led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x57fb701e register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x5816de69 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x58275bce replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x58406ea7 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x58518651 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x585704ab aer_recover_queue +EXPORT_SYMBOL_GPL vmlinux 0x5874b588 pinctrl_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58b881a2 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x58cb2044 tpm_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x58e2a027 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x59229646 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5934eeed __clk_register +EXPORT_SYMBOL_GPL vmlinux 0x5947abbe max77693_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x597def2a irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x598e1d1d ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x59a6e91d clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x59ac5840 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0x59b2adbf input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x59c35a5c crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5a2b1b67 gnttab_free_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5a2cd84a dev_get_gen_pool +EXPORT_SYMBOL_GPL vmlinux 0x5a441ebd efi_query_variable_store +EXPORT_SYMBOL_GPL vmlinux 0x5a69dd7a devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a8b8db3 class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x5ac2727f smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x5ad1fb2d regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x5adfed7d devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x5af03a28 gnttab_claim_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5b19a782 efivars_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5b23ee18 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x5b8943a2 ata_acpi_cbl_80wire +EXPORT_SYMBOL_GPL vmlinux 0x5b89fa42 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x5bd311c9 iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0x5be20039 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x5c0aba5e pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x5c1830af ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x5c1a5cd4 vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x5c1e0aa5 bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0x5c1f89f4 devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x5c3bf0e5 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x5c4a9e5d adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5c54f307 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x5c66e90c efivar_run_worker +EXPORT_SYMBOL_GPL vmlinux 0x5c7c3acf register_mce_write_callback +EXPORT_SYMBOL_GPL vmlinux 0x5ca93699 tracepoint_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cb04b68 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x5cd69077 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x5cd907e5 tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x5cf8a882 __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x5d055afa edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d1d084e xenbus_dev_error +EXPORT_SYMBOL_GPL vmlinux 0x5d366dec gnttab_cancel_free_callback +EXPORT_SYMBOL_GPL vmlinux 0x5d434df7 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x5d48a650 m2p_find_override_pfn +EXPORT_SYMBOL_GPL vmlinux 0x5d496a93 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5d77952d hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x5dbcfa4f boot_cpu_physical_apicid +EXPORT_SYMBOL_GPL vmlinux 0x5dc21138 pinctrl_pm_select_idle_state +EXPORT_SYMBOL_GPL vmlinux 0x5dc9b040 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x5dd6e8f4 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x5dd93788 gpiochip_add_pingroup_range +EXPORT_SYMBOL_GPL vmlinux 0x5dd9cdf4 rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x5ddf0ae7 pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0x5dea3d8c devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x5e136f40 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x5e285ff6 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e60dfbf ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x5eac7084 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x5eb29894 register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x5ec59786 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5ec65846 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5eda6b3a ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x5f0a9b91 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x5f248f72 set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0x5f2da8c4 check_tsc_unstable +EXPORT_SYMBOL_GPL vmlinux 0x5f419491 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x5f4adaa8 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x5f6165d2 print_context_stack +EXPORT_SYMBOL_GPL vmlinux 0x5f79a98b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x5f8aafe4 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x5f8e6369 pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x5fb331f2 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x5fc27be9 acpi_dev_irq_flags +EXPORT_SYMBOL_GPL vmlinux 0x5fdfa2c1 amd_pmu_enable_virt +EXPORT_SYMBOL_GPL vmlinux 0x6002d9da hypervisor_kobj +EXPORT_SYMBOL_GPL vmlinux 0x60395c76 __remove_pages +EXPORT_SYMBOL_GPL vmlinux 0x60485e46 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x60802dc8 elv_register +EXPORT_SYMBOL_GPL vmlinux 0x6080ec09 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x6091797f synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x60930d37 save_mc_for_early +EXPORT_SYMBOL_GPL vmlinux 0x6094685f wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60ac4b16 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x60b1abae fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x60c95350 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x60c95b35 powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x60cd73ed pv_apic_ops +EXPORT_SYMBOL_GPL vmlinux 0x60cfd5e8 virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x6112ef1d perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x61204485 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x61386035 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x613fd25d cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x614c2967 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x614ddd8f key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0x615d76d6 regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x617ff081 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x6183ff15 sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0x6194ffea do_machine_check +EXPORT_SYMBOL_GPL vmlinux 0x61bac712 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x61ce092c get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0x61d97705 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x61ee2e38 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x61ffe893 tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x62030967 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x6212b05b cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x6223d719 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x623803c8 hest_disable +EXPORT_SYMBOL_GPL vmlinux 0x6241f00a efivar_entry_size +EXPORT_SYMBOL_GPL vmlinux 0x6286d9da gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x629c9686 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x62b22691 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x62ebc929 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x6319497e crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x63205de1 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x632bfa43 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x635ec980 apei_exec_post_unmap_gars +EXPORT_SYMBOL_GPL vmlinux 0x636aff9c dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x63738d57 page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x638fe045 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x63929cf2 acpi_ec_remove_query_handler +EXPORT_SYMBOL_GPL vmlinux 0x63a76983 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x63b4a055 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x63e67f30 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x63f23886 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0x640d6458 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x64115eda crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x64239e3f pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x6423b920 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x644cab85 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x645b7674 blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x64851d93 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x64b1804a sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x64b7069e apei_mce_report_mem_error +EXPORT_SYMBOL_GPL vmlinux 0x64f3b72f device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x6503460c ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x650aefbc simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x6527a231 dbgp_external_startup +EXPORT_SYMBOL_GPL vmlinux 0x653373d9 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x65374596 device_create +EXPORT_SYMBOL_GPL vmlinux 0x654ee362 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x655ce007 regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x658c8186 amd_get_nb_id +EXPORT_SYMBOL_GPL vmlinux 0x658ed86c preempt_schedule_context +EXPORT_SYMBOL_GPL vmlinux 0x658f7226 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x659e37a3 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x65aa33ec ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65bc37db aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x65c513e6 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65e8a7aa pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x65ff2579 get_matching_microcode +EXPORT_SYMBOL_GPL vmlinux 0x66022cf0 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x66069728 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x6614eace regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x662a0c3f x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x663c16d6 gnttab_grant_foreign_access_subpage_ref +EXPORT_SYMBOL_GPL vmlinux 0x66511ee0 acpi_dev_get_resources +EXPORT_SYMBOL_GPL vmlinux 0x66512382 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x66632bb6 blk_queue_bio +EXPORT_SYMBOL_GPL vmlinux 0x666e1fa2 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x667aa441 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x6683c699 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x66a8b7d0 adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x66bd8370 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x66c9f15f pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x66cd1130 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66f1ebb2 efivar_entry_set +EXPORT_SYMBOL_GPL vmlinux 0x66f4b815 ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x66f8fb0d irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0x6701175e device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x672cbb60 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x672e68ee crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x6739a503 balloon_set_new_target +EXPORT_SYMBOL_GPL vmlinux 0x6739cdc8 pci_renumber_slot +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x67549405 xenbus_unmap_ring_vfree +EXPORT_SYMBOL_GPL vmlinux 0x675c5a37 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0x6768c52e inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x67885012 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67a905b9 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x67b1e81b fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x67c16fd8 ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x67f1a979 usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0x6807606a da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x68287c68 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x685903ca virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0x686e6a22 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x6874df35 rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x687934e9 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x688c7e4f pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x6896866e pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0x689a8252 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0x68ab17c8 xen_swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x68ebee9b gpio_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x690033fa acpi_subsys_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x6921aa34 compat_put_timeval +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x6943645a usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x694591d9 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6981ab3f tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x69cbabb1 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x69e9a2cb ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x6a14f186 extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a3316a2 ata_acpi_stm +EXPORT_SYMBOL_GPL vmlinux 0x6a53d49d xenbus_probe_node +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 0x6aa4cd7a regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x6aafedf5 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x6acad21f acpi_get_cpuid +EXPORT_SYMBOL_GPL vmlinux 0x6ad2d082 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x6ae98997 smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x6b15b78d class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x6b18935b unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b50019a pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x6b649218 tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0x6b6caaa2 blkio_subsys +EXPORT_SYMBOL_GPL vmlinux 0x6b93bf60 inet_twdr_twkill_work +EXPORT_SYMBOL_GPL vmlinux 0x6b98246e tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x6bcc62b4 dm_dispatch_request +EXPORT_SYMBOL_GPL vmlinux 0x6bcfdafb crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x6bdcd859 rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0x6be35efb __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x6bf1b90d dmi_memdev_name +EXPORT_SYMBOL_GPL vmlinux 0x6c1251fd apei_exec_read_register +EXPORT_SYMBOL_GPL vmlinux 0x6c1b09ab gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x6c21fb61 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x6c2ce57b inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x6c49c4f2 clockevents_notify +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c655913 register_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6c8438df tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x6c9ac364 devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6cd4ea62 wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x6d0ff125 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x6d2785b5 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d31d687 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0x6d32fc51 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x6d352fc9 ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0x6d4edfff dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x6d623269 nl_table +EXPORT_SYMBOL_GPL vmlinux 0x6db6f9d1 xenbus_dev_changed +EXPORT_SYMBOL_GPL vmlinux 0x6df8f4cd pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e0f96c3 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x6e15c86c sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x6e3067ee sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x6e3311de sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x6e3b5fed __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x6e4cced6 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x6e58ddf0 gnttab_end_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x6e6c3edf rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6e7943ec iommu_group_id +EXPORT_SYMBOL_GPL vmlinux 0x6e85b00b local_touch_nmi +EXPORT_SYMBOL_GPL vmlinux 0x6e86aa89 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e8bf789 hrtimer_start +EXPORT_SYMBOL_GPL vmlinux 0x6e8fb649 driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x6e951b40 devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x6ea98361 ioremap_page_range +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f2696e7 ata_sas_port_async_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6f5e3df6 css_next_descendant_pre +EXPORT_SYMBOL_GPL vmlinux 0x6f7225b4 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0x6f88ba2d subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x6f990f63 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x6fa61c43 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x6fa9e2e5 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x6fb64b08 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x6fbc9f21 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0x6fbf864f dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6fd14ce7 dm_underlying_device_busy +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x701a2b08 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x70855da7 acpi_dma_request_slave_chan_by_name +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x714713aa percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x714e7af2 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x7157058b xenbus_register_driver_common +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x71663e71 list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0x71b43fc4 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x71ec1377 _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0x72018eb6 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x721ff4b1 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x722fcfeb crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x725ba786 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x72653ff2 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x72894f54 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x72bf8d36 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x72e3ce3b find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x72e8b42d bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x72fd0b2a wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x73013896 xenbus_printf +EXPORT_SYMBOL_GPL vmlinux 0x7306cd2b regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x731dba7a xen_domain_type +EXPORT_SYMBOL_GPL vmlinux 0x73257b2c ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x732aac1e virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x732b4662 wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x73510609 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x7373d694 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x739fbf73 led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x73a0c8bc tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73c2554f __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0x73c63a1c pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73d4aaf5 tpm_write +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73da953e dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x7422c95e gpiod_get_direction +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 0x74584459 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x74628570 context_tracking +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x74954462 timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74c04f25 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x74c08941 kvm_async_pf_task_wake +EXPORT_SYMBOL_GPL vmlinux 0x74deb10c used_vectors +EXPORT_SYMBOL_GPL vmlinux 0x7507d96d cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x75133f6e visitor128 +EXPORT_SYMBOL_GPL vmlinux 0x7521afb6 leave_mm +EXPORT_SYMBOL_GPL vmlinux 0x7522cb8d sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x7523dbe4 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x7534dedb inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x7548993c pskb_put +EXPORT_SYMBOL_GPL vmlinux 0x754b896f regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0x756ab0ed show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x757b49d2 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0x7580812a ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x758a3812 atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x758e0e76 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x75aeb06d crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x75c4bfaa sysfs_get_dirent_ns +EXPORT_SYMBOL_GPL vmlinux 0x75e0c590 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x75e9cf0d ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x75f0e090 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x75f89327 pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x765a3f13 devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x766614ba max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x7672226e tpm_open +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x768f0a9b unregister_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x7692831f transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x76a5a0ca blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0x76d07d6e gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x7702a625 sync_filesystem +EXPORT_SYMBOL_GPL vmlinux 0x7712771a unbind_from_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x7717f225 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x771bd3d0 swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x772fbcaf trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x775a6ef5 kvm_read_and_reset_pf_reason +EXPORT_SYMBOL_GPL vmlinux 0x775d6c11 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x77711b2b pinctrl_dev_get_name +EXPORT_SYMBOL_GPL vmlinux 0x777ba0d0 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x7784db5d rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x779c0d58 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x77a5edf8 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x77c11a3b acpi_subsys_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x77d1405c unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x77d25915 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x77d5dd73 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0x77d6f317 devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x77e770d0 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x77f58fbc acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x780a769e ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x7828082b crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x782adb74 hpet_rtc_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x7840c9c8 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x7863b96b regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x78706039 pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x7875f6bf sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x787c882b lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x78823254 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x789b36a6 __add_pages +EXPORT_SYMBOL_GPL vmlinux 0x78a7d29e driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x78bd3bc0 dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0x78c6539d cred_to_ucred +EXPORT_SYMBOL_GPL vmlinux 0x78ea227b acpi_bus_no_hotplug +EXPORT_SYMBOL_GPL vmlinux 0x78ef9cd4 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x78f442b9 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0x79039ed1 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x791d0cd3 tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x79408de0 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x7941f01b tpm_show_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x795f31cc pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x7969c165 extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x79776b34 dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x797b7ce5 crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0x79914669 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x7991fd8d crash_vmclear_loaded_vmcss +EXPORT_SYMBOL_GPL vmlinux 0x799cc695 usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x799d2714 ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x79a8768f tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x79b10b1a device_reset +EXPORT_SYMBOL_GPL vmlinux 0x79b17360 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x79bd9096 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x79c1f25b debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x79c39da9 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x79e69460 intel_iommu_gfx_mapped +EXPORT_SYMBOL_GPL vmlinux 0x79ec0621 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x7a2216a7 rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a319404 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x7a3b3158 pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0x7a85ddc4 tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7ac8e5b0 acpi_gsi_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x7acb0027 tcp_reno_min_cwnd +EXPORT_SYMBOL_GPL vmlinux 0x7ade38dd ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x7ae1ae8e cpufreq_frequency_table_put_attr +EXPORT_SYMBOL_GPL vmlinux 0x7ae9c46c usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x7afed0b8 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b292d19 static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0x7b2af64f srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7b471830 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x7b57b3e7 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x7b90d1a9 bind_virq_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x7bf7e171 clockevents_unbind +EXPORT_SYMBOL_GPL vmlinux 0x7c227088 clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0x7c2e9fa9 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x7c309fa6 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x7c346357 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x7c608d57 irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0x7c645591 ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x7c9f3e69 __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0x7cab1413 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x7cb15985 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x7cbdd577 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0x7cc1b7fd max77693_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x7cc7de1c x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x7cd2ac3f virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7cdb2776 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x7ce5b92a gpiod_sysfs_set_active_low +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7cf150fb led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7d1f3e2a pci_msi_off +EXPORT_SYMBOL_GPL vmlinux 0x7d2a7b4f xenbus_dev_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x7d36e534 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x7d397cc7 gpiod_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d595ed1 sk_unattached_filter_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d70732e mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x7d7511f0 __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0x7daa8659 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7db3eab7 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x7db4e52d nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x7dbcfd4c set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x7df4482c thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x7e07162e fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0x7e1b16b8 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x7e573fbd usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x7e59f253 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e80aa36 cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0x7e8683ed mmput +EXPORT_SYMBOL_GPL vmlinux 0x7e97301c xenbus_dev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x7e9a8dae xen_swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x7ea1a2bc probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x7eac5114 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x7edcf867 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x7ee29ddb device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x7eec7c72 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x7ef27032 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x7f3bcde1 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x7f5a19ba inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x7f5b1dcd regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x7f78c790 devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x7f9e25f3 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x7fa02cf0 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x7ffd8580 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x80156244 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x8022898b sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x80254a64 __online_page_increment_counters +EXPORT_SYMBOL_GPL vmlinux 0x803b5cba regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x806e502f btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x809a8396 tpm_store_cancel +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 0x8104517b irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0x81065438 gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0x810f2e4e clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0x8110fe4e crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x811a2e32 rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0x811bb5f1 extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x8140842a gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x81804960 acpi_dev_pm_detach +EXPORT_SYMBOL_GPL vmlinux 0x81b391ba sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x81cccad4 rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x81d2e222 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x81f3fee1 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x82350fa3 __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x824bcb0a i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0x82588ed0 napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0x826c3cc3 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x82939ebd rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x82ab2c4d usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82dbec19 erst_write +EXPORT_SYMBOL_GPL vmlinux 0x82e2b34b clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x82ecf5f2 list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x8318eb66 clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x832724e0 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0x834616bb sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x835b371f pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x83ca96e5 rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0x83e1f1d8 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x83e7cce5 acpi_get_gpiod_by_index +EXPORT_SYMBOL_GPL vmlinux 0x83f38fb0 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x83fedaf6 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x84046dad ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x8420bccd cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0x84256fab usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x84346dcc sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x843d70ef acpi_is_root_bridge +EXPORT_SYMBOL_GPL vmlinux 0x844e86ef simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x8487a2b6 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x84cc6975 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x85001a6e regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x85262999 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x8549e9d1 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x8564edb4 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x8585d7cb pinctrl_find_and_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x859ac78e sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x859aea9a xen_set_domain_pte +EXPORT_SYMBOL_GPL vmlinux 0x85b14d33 clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x85c10896 rcu_batches_completed_bh +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 0x85e9c0e2 pinctrl_utils_reserve_map +EXPORT_SYMBOL_GPL vmlinux 0x85fa44ee __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x8608968c usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x8608dfe7 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x86623fd7 notify_remote_via_irq +EXPORT_SYMBOL_GPL vmlinux 0x866b9687 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0x86846fba crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x8688918c crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x869d263b regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x86a51007 gnttab_end_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x86fc6ccd net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x8702e548 process_srcu +EXPORT_SYMBOL_GPL vmlinux 0x8707c305 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x870e16b7 xen_test_irq_shared +EXPORT_SYMBOL_GPL vmlinux 0x87241170 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x87246b8f init_fpu +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x8774eb6c pinctrl_utils_add_map_mux +EXPORT_SYMBOL_GPL vmlinux 0x87791f2d __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x878e05f6 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x8794cd19 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0x87a80c4d pinctrl_select_state +EXPORT_SYMBOL_GPL vmlinux 0x87af324c regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x87d44b74 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x87eaf292 serial8250_rx_dma +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x8813e1d9 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x883c2740 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x88413b72 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x8863ffb3 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x887b1bfa wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x888a8df3 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88aba665 xenbus_watch_path +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88c16b39 tpm_register_hardware +EXPORT_SYMBOL_GPL vmlinux 0x88cdf3da i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x88d3132d pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0x89076240 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x890ded48 regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x891a5a7f gnttab_max_grant_frames +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x892d11a0 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x89502f0c gnttab_subpage_grants_available +EXPORT_SYMBOL_GPL vmlinux 0x8956aeae apei_exec_ctx_init +EXPORT_SYMBOL_GPL vmlinux 0x895e91c2 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x898c148d pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x89b68927 irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x89b995ff extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x8a227ec1 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x8a240eca regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x8a2b14ba wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0x8a39181d user_read +EXPORT_SYMBOL_GPL vmlinux 0x8a4b8066 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x8a4f1cfc efivar_entry_add +EXPORT_SYMBOL_GPL vmlinux 0x8a789549 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x8a78989f irq_from_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x8a790066 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x8a7cb9c4 platform_thermal_package_rate_control +EXPORT_SYMBOL_GPL vmlinux 0x8ab16a45 ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ad1ace8 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x8ad4510c dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x8ad531b7 cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0x8af45710 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x8b03d9dc pinctrl_find_gpio_range_from_pin +EXPORT_SYMBOL_GPL vmlinux 0x8b04668e bind_interdomain_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x8b3779da blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x8b4a50b0 regulator_set_optimum_mode +EXPORT_SYMBOL_GPL vmlinux 0x8b4f9d00 restore_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x8b5c512f part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x8b612ac6 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x8b66f9e0 xen_platform_pci_unplug +EXPORT_SYMBOL_GPL vmlinux 0x8b9200fd lookup_address +EXPORT_SYMBOL_GPL vmlinux 0x8b9e18f1 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x8ba6aa43 yield_to +EXPORT_SYMBOL_GPL vmlinux 0x8bd3354e debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x8be9bf82 xen_swiotlb_sync_single_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c06a108 xenbus_transaction_start +EXPORT_SYMBOL_GPL vmlinux 0x8c8f4441 queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x8c992f42 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x8ccb9a95 rtc_set_mmss +EXPORT_SYMBOL_GPL vmlinux 0x8cd905cd crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x8cd9f935 setup_APIC_eilvt +EXPORT_SYMBOL_GPL vmlinux 0x8ce041ba tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0x8cea765f memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d36c088 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0x8d522714 __rcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x8d533362 m2p_remove_override +EXPORT_SYMBOL_GPL vmlinux 0x8d9fb031 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x8dd0a0a1 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x8e020300 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x8e2555ab irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x8e86852c __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x8e92d0dc i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x8e9920fe pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x8e9c7933 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x8edfb574 injectm +EXPORT_SYMBOL_GPL vmlinux 0x8ee71282 xenbus_read_otherend_details +EXPORT_SYMBOL_GPL vmlinux 0x8f1734cf dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x8f178965 uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8f1b0019 cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0x8f378fd3 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x8f62b24d remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f89ef87 bio_trim +EXPORT_SYMBOL_GPL vmlinux 0x8f8a365c ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x8f902a2c gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0x8f933dcb rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0x8fa04ebf __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0x8fa9eccd tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x8faa8713 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x8fb8612a xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x8fc582ee max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x8fd19d61 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x9003aa50 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0x9009602a acpi_bus_get_ejd +EXPORT_SYMBOL_GPL vmlinux 0x90228869 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x906af30a tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x906bbc12 blkdev_aio_write +EXPORT_SYMBOL_GPL vmlinux 0x906ef2aa acpi_subsys_prepare +EXPORT_SYMBOL_GPL vmlinux 0x90705b7f syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x908587a3 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90c086dc xenbus_map_ring_valloc +EXPORT_SYMBOL_GPL vmlinux 0x90c66b90 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x90cba7de dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0x90dc29df aout_dump_debugregs +EXPORT_SYMBOL_GPL vmlinux 0x90de0452 platform_thermal_package_notify +EXPORT_SYMBOL_GPL vmlinux 0x90df4cc3 percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0x90feab43 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x9104fbec debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x9115df5a gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x91286982 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x913e6ed7 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x9163d17e crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x91794be9 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91ac78b2 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91d848ea sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x91dc3c3a kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x91e9ed6b scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x920cc389 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x9227c070 ata_sas_port_async_resume +EXPORT_SYMBOL_GPL vmlinux 0x923cfb30 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x92423f09 relay_close +EXPORT_SYMBOL_GPL vmlinux 0x92449eff pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x9252a1c8 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x92a42c7d efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0x92ac8d97 preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x92b04bba tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x92b0584b regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x92b150ab tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x9304387c ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x9312d80e evtchn_put +EXPORT_SYMBOL_GPL vmlinux 0x9324e78e acpi_dev_resource_memory +EXPORT_SYMBOL_GPL vmlinux 0x9331b8fa blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x933fcb57 ata_acpi_gtm_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x93516724 vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x936e593e ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x93768650 tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x9386fec3 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x93abb1c6 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x93bde584 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x93bf9f4f sk_unattached_filter_create +EXPORT_SYMBOL_GPL vmlinux 0x93dba1b7 pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x93df9259 rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0x9415a094 xen_register_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x943fc708 xen_setup_shutdown_event +EXPORT_SYMBOL_GPL vmlinux 0x9454c675 acpi_kobj +EXPORT_SYMBOL_GPL vmlinux 0x9492fd3f regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x949f7342 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x94a66b2f bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x94a68723 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x94c318be apei_exec_collect_resources +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x953b86b6 lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x95773f46 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95c18e7e xen_swiotlb_sync_single_for_device +EXPORT_SYMBOL_GPL vmlinux 0x95c44613 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x95d54640 acpi_pci_check_ejectable +EXPORT_SYMBOL_GPL vmlinux 0x95f64e4f device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x960f5f00 ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x963e66f1 max8997_read_reg +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 0x969b0f50 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x96a22790 vmcore_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x96a3b8ef rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x96c22752 tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x96e71ae8 regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x9700728b __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0x970f967f pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x971b0954 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x9730c462 gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x97386eea device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x973d1a78 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x9740a094 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0x97890a32 gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x979ba2ee ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x979e4206 rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x97a7a2ad fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x97ba99c9 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x97ba9ccb blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x97c539a4 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x9811558d pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x98403f48 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9874c1d8 __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x987fc1c9 cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x9897ba52 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x991565fc i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x995ae983 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x996ccb88 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x9973add9 __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x997ac9cd usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x999ba5f9 rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x99a1b0e2 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x99b60491 xenbus_dev_groups +EXPORT_SYMBOL_GPL vmlinux 0x99cc4958 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0x99dbdd13 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x99e28f10 __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0x99e83c73 tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x99f21969 regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x99f5d868 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x99f669d8 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x9a00c46a pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x9a049927 acpi_processor_get_performance_info +EXPORT_SYMBOL_GPL vmlinux 0x9a0737b1 pinctrl_pm_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a2733d2 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x9a4b04b3 xen_swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a95df8b fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9aca444b get_monotonic_boottime +EXPORT_SYMBOL_GPL vmlinux 0x9ad8607f device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x9ad9bec0 iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9aeba7e1 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x9b19e5a3 sec_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x9b6a7412 idle_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x9b8d9503 hv_register_vmbus_handler +EXPORT_SYMBOL_GPL vmlinux 0x9b9f3648 pcibios_scan_specific_bus +EXPORT_SYMBOL_GPL vmlinux 0x9ba2bb2b gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x9bd72b78 apei_write +EXPORT_SYMBOL_GPL vmlinux 0x9bea7b9c vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9bf81ea8 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x9c07c642 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x9c2de449 memory_add_physaddr_to_nid +EXPORT_SYMBOL_GPL vmlinux 0x9c2e4b66 acpi_unregister_gsi +EXPORT_SYMBOL_GPL vmlinux 0x9c3c17eb pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0x9c561385 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x9c867a39 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x9c91b627 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x9ca7ce1f spi_async +EXPORT_SYMBOL_GPL vmlinux 0x9caa4955 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9d06688b register_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x9d138533 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x9d37abe1 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x9d3850e1 gnttab_alloc_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x9d52f848 __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x9d9e155d pv_info +EXPORT_SYMBOL_GPL vmlinux 0x9da919c3 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x9dba6df9 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x9dbf939a dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x9de6bf93 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x9e2f1f78 kobj_completion_init +EXPORT_SYMBOL_GPL vmlinux 0x9e3ffd57 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x9e4845e5 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x9e56df04 pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x9e5c9c1b of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x9ea6ab11 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x9ebbf55f input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x9ec2447e mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9ed3143c leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9f0664bf dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0x9f12060b balloon_mapping_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9f19bf14 devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9f2eb7ab zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0x9f56639a efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x9f6508cb get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0x9f71860d device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe49732 rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x9fe8d952 scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9ffc76f3 hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0xa01c4ee8 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xa021770c ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xa038e761 percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa0c71dac spi_populate_sync_msg +EXPORT_SYMBOL_GPL vmlinux 0xa0d5b41f devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa0f843c6 cgroup_is_descendant +EXPORT_SYMBOL_GPL vmlinux 0xa0fbe242 ping_err +EXPORT_SYMBOL_GPL vmlinux 0xa11216be xen_store_domain_type +EXPORT_SYMBOL_GPL vmlinux 0xa1142e2a thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0xa12d929d desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0xa14c2c68 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xa156a1f2 erst_get_record_id_end +EXPORT_SYMBOL_GPL vmlinux 0xa15e3f72 acpi_dev_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa1637535 register_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xa1a17495 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0xa1bcbf1f mddev_init +EXPORT_SYMBOL_GPL vmlinux 0xa1d77c7e smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xa1df540a hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0xa1f79553 xen_create_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0xa214d5f3 css_rightmost_descendant +EXPORT_SYMBOL_GPL vmlinux 0xa2186f46 ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0xa2270272 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0xa22e1ff9 ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0xa22ee91d debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0xa23437fe stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0xa23bbb06 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0xa2586571 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0xa258d45e shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa2afcfea do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xa2b9c993 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xa2d170d8 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0xa2d70fec sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0xa348a433 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xa34df22c regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xa34ff9ac blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0xa353fffc xenbus_rm +EXPORT_SYMBOL_GPL vmlinux 0xa3739663 sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0xa381d5c1 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa3912bff regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0xa392f199 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3b4ad71 nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3baf476 usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xa3bba672 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0xa3c341bc rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xa3dca695 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa3eccd36 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0xa41934f1 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0xa41ca7cb devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xa445c55a wait_for_tpm_stat +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 0xa478f917 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa485b23a usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0xa4931944 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0xa49acd8a devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa49b46ed __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xa4ad6b9d scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0xa4cabf1b __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0xa4d58669 math_state_restore +EXPORT_SYMBOL_GPL vmlinux 0xa4f7f7f8 swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0xa53feaf1 serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0xa56133ea i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xa56ca855 tracepoint_iter_stop +EXPORT_SYMBOL_GPL vmlinux 0xa59ce67e crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0xa5b909e1 apei_get_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0xa5ccbf59 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa60ce443 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0xa617dd7b __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0xa61de15c kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa62892c6 efivar_sysfs_list +EXPORT_SYMBOL_GPL vmlinux 0xa6396c5e xen_swiotlb_map_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0xa66438e8 erst_read +EXPORT_SYMBOL_GPL vmlinux 0xa6735bec rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xa68ce274 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0xa68fde9c regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xa6a0a273 max77693_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6c0068c fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0xa6d6e770 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0xa6ddee1f crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xa6e10638 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6ffa2a1 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xa70ad39b acpi_get_pci_dev +EXPORT_SYMBOL_GPL vmlinux 0xa71441c5 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0xa723148d key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0xa724257f init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa75811d0 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0xa759f6ec debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xa76d9d20 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa772d960 inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xa78648fc bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0xa7909aa0 efivars_register +EXPORT_SYMBOL_GPL vmlinux 0xa7b071be arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0xa7f6b7fb thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0xa7f92105 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0xa801b359 efivar_entry_iter_begin +EXPORT_SYMBOL_GPL vmlinux 0xa808f841 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0xa838d1d0 irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0xa83f3bf5 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0xa84e6638 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa8ed91b1 tpm_read +EXPORT_SYMBOL_GPL vmlinux 0xa906a3a1 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xa9126bff hpet_set_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa91c743f tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0xa91cfe28 gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xa925e478 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0xa92df4ad watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0xa94581a7 rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0xa953ab0f pci_pri_enabled +EXPORT_SYMBOL_GPL vmlinux 0xa95fc0cb find_symbol +EXPORT_SYMBOL_GPL vmlinux 0xa967cdec vtime_guest_enter +EXPORT_SYMBOL_GPL vmlinux 0xa977a717 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0xa980af16 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xa98aa3bc usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0xa99a1bd6 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0xa9a0581d crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0xa9a82042 gnttab_trans_grants_available +EXPORT_SYMBOL_GPL vmlinux 0xa9aedfdb file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0xa9db4e49 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9fc3f54 gnttab_grant_foreign_access_trans +EXPORT_SYMBOL_GPL vmlinux 0xaa26c88a klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xaa4533b6 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xaa88cd6f pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xaa995d30 register_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0xaa9b779d crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaaaa3be0 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0xaaaf4bf1 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0xaab27c05 ata_acpi_gtm +EXPORT_SYMBOL_GPL vmlinux 0xaab83871 user_match +EXPORT_SYMBOL_GPL vmlinux 0xaac2abb0 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0xaacb9cca __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xaaf5353c extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xaaf787cf pwm_config +EXPORT_SYMBOL_GPL vmlinux 0xaafda5a3 iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0xab01acbe gnttab_request_free_callback +EXPORT_SYMBOL_GPL vmlinux 0xab1a49d7 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0xab27393f spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0xab4180f8 rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xab45d968 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0xab6a3a82 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab6e20fd ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0xab936810 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0xabbbcf50 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0xabc110f3 sysfs_get +EXPORT_SYMBOL_GPL vmlinux 0xabdc5d0a devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xabe6a53b device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xabea3957 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0xabf08b39 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xabf6108b usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0xac2a851a sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0xac2c4279 unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xac2dcd0d usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xac6e3025 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0xac80e46f xen_remap_domain_mfn_range +EXPORT_SYMBOL_GPL vmlinux 0xac9ce195 kvm_async_pf_task_wait +EXPORT_SYMBOL_GPL vmlinux 0xacaebe00 kobj_completion_del_and_wait +EXPORT_SYMBOL_GPL vmlinux 0xacafa8e7 vector_used_by_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xaccf12f8 inet_csk_compat_getsockopt +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xace68f28 rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xacec526c sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0xad039c54 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0xad19e0a8 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0xad1f7f79 sdhci_pci_o2_fujin2_pci_init +EXPORT_SYMBOL_GPL vmlinux 0xad221a0f list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0xad33905f default_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0xad376749 clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0xad8d8ab0 xen_physdev_op_compat +EXPORT_SYMBOL_GPL vmlinux 0xadbc5456 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadcffbc4 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0xadf061c4 xen_swiotlb_unmap_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae2630fc css_next_descendant_post +EXPORT_SYMBOL_GPL vmlinux 0xae379311 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xae4ecdc9 dm_set_target_max_io_len +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 0xae7c5411 ms_hyperv +EXPORT_SYMBOL_GPL vmlinux 0xae8ab075 sec_reg_update +EXPORT_SYMBOL_GPL vmlinux 0xaea75aae irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0xaea93e26 regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0xaeb91314 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0xaed5ec54 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0xaee5460e regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xaf401aff irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0xaf4dfe73 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xaf4facc2 devres_find +EXPORT_SYMBOL_GPL vmlinux 0xaf59d45d regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0xaf7b4e1f crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0xaf80646d mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0xaf8924e6 tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xaf8d4b2a ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0xaf8dd7bd ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0xafd32466 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb013eaab devm_acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0xb023a593 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0xb024c227 spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xb02ac411 register_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb078f161 tpm_show_pubek +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0bebfcc br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0xb0c21921 acpi_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0xb0c96774 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xb0d1656c gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0xb10d55bc cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xb12b3229 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb143b7b4 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0xb15a44e1 split_page +EXPORT_SYMBOL_GPL vmlinux 0xb165eb0e crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0xb172ffac efivars_sysfs_init +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb191d405 devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0xb1a7e3f6 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xb1abcfef i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1b30ad2 led_trigger_blink +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 0xb1cea746 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb24159f6 pinctrl_add_gpio_ranges +EXPORT_SYMBOL_GPL vmlinux 0xb24c7239 cpufreq_notify_transition +EXPORT_SYMBOL_GPL vmlinux 0xb265568e regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xb280ee30 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0xb2ce874b securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xb2d071b8 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0xb2e3e0fb key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb2f0dce7 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xb3253ed9 hpet_rtc_timer_init +EXPORT_SYMBOL_GPL vmlinux 0xb32853c0 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0xb33efeb4 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0xb347bb2c work_busy +EXPORT_SYMBOL_GPL vmlinux 0xb34e9fd7 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0xb383c4e3 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xb3b85a60 save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0xb3c85925 xenbus_match +EXPORT_SYMBOL_GPL vmlinux 0xb3f8acc5 __netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0xb40275be wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xb42e9897 usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xb4578d6f hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0xb458476e dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0xb471dfaa ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0xb4759adc stop_machine +EXPORT_SYMBOL_GPL vmlinux 0xb48cc158 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0xb4b3fc65 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xb4b7177e __class_create +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4cf3479 devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xb4e14553 gnttab_query_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb5450e72 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0xb55e4b23 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xb560fb2c rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xb57a7c86 driver_register +EXPORT_SYMBOL_GPL vmlinux 0xb5886865 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5a4e525 iommu_map +EXPORT_SYMBOL_GPL vmlinux 0xb5c6e21c ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0xb5cb8145 hrtimer_get_res +EXPORT_SYMBOL_GPL vmlinux 0xb5d51e98 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0xb5d7c9f8 ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0xb5dba7cd sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb604f468 modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xb6175b5a sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0xb61cbad1 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0xb6201577 ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0xb6230f1f gnttab_grant_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb66421b2 acpi_str_to_uuid +EXPORT_SYMBOL_GPL vmlinux 0xb67b2219 cm_suspend_again +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6bb77bb page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0xb6bc9956 vtime_common_account_irq_enter +EXPORT_SYMBOL_GPL vmlinux 0xb6c635af wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xb6ca75b2 crypto_rng_type +EXPORT_SYMBOL_GPL vmlinux 0xb6cb001e blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0xb6cb1b85 regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xb6eb3670 gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0xb6fbdda1 rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0xb709e339 efivar_validate +EXPORT_SYMBOL_GPL vmlinux 0xb718f2f9 sfi_table_parse +EXPORT_SYMBOL_GPL vmlinux 0xb742ea1a pci_get_hp_params +EXPORT_SYMBOL_GPL vmlinux 0xb7448a91 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0xb779938d pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0xb78e73bd ping_bind +EXPORT_SYMBOL_GPL vmlinux 0xb799df71 pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xb7aa1172 xenbus_frontend_closed +EXPORT_SYMBOL_GPL vmlinux 0xb7ac4517 ping_close +EXPORT_SYMBOL_GPL vmlinux 0xb7d7c12e hpet_set_alarm_time +EXPORT_SYMBOL_GPL vmlinux 0xb7e7315b regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0xb7ebc0d2 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb8192c4e simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0xb8660e06 irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xb88d81f0 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xb8996866 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xb8b2b1f7 mce_register_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0xb8f3fe39 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb904ed68 dm_kill_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0xb9330c79 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb939e952 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0xb93bd0d1 list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xb9424332 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0xb96cbb6e usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0xb994a98b sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0xb99d5837 xenbus_read +EXPORT_SYMBOL_GPL vmlinux 0xb99e7621 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0xb9b4ec3f xenbus_dev_resume +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 0xb9d3bdf2 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0xb9d7b388 usb_acpi_set_power_state +EXPORT_SYMBOL_GPL vmlinux 0xb9d7da8c pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb9f404e5 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0xb9ff3592 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0xba0ea03e srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xba35916e xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0xba46e31d vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0xba563bae rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xba6136ec crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0xba92f9ff regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0xbabd39b9 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xbae384e0 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0xbaed9a15 virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0xbb013fa9 ftrace_set_filter_ip +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 0xbb409395 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xbb4f1d13 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0xbb8728b5 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0xbb97f9e5 __online_page_set_limits +EXPORT_SYMBOL_GPL vmlinux 0xbb994af5 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0xbba3f952 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xbbb38239 btree_last +EXPORT_SYMBOL_GPL vmlinux 0xbbb98859 edid_info +EXPORT_SYMBOL_GPL vmlinux 0xbbc75fbf task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0xbbcab80d cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xbbd4f657 xen_pcpu_id +EXPORT_SYMBOL_GPL vmlinux 0xbc18bfac mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0xbc3a1dc5 crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0xbc47fd49 __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0xbc771aed regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0xbc7a9aea ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0xbc7d989c pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0xbc8c554f acpi_dev_pm_attach +EXPORT_SYMBOL_GPL vmlinux 0xbc968270 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcad9ade rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xbcb838a1 amd_flush_garts +EXPORT_SYMBOL_GPL vmlinux 0xbcc1a500 agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbd22e2a1 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0xbd2fc984 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0xbd3bcde2 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xbd506a46 unregister_hotplug_dock_device +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd781f8d get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0xbd8abe2e pinctrl_remove_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xbd9bbeeb pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0xbdaa9647 ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xbdaf5686 get_compat_timeval +EXPORT_SYMBOL_GPL vmlinux 0xbdb14a59 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0xbdbcd9c6 unregister_kretprobes +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 0xbddb0f95 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0xbddc12dd regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xbddffdfe usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xbe039971 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe353644 regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xbe5d0996 idle_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbe7e7783 bus_register +EXPORT_SYMBOL_GPL vmlinux 0xbe7f0616 dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0xbe8b39a4 class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xbe8ee1f1 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbed20d9a __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0xbed7addb alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0xbee8a32b da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xbef2305b ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf29f3c6 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0xbf4e8c7b serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0xbf650573 devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbf82e6af synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfc42e32 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xbffc7e6f ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0xc01afd28 put_device +EXPORT_SYMBOL_GPL vmlinux 0xc02e48b0 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xc0370c22 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0xc06b1d59 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0xc07f49da skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc087cfa3 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xc0892dbe scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0xc08f3545 pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xc0900fcf acpi_os_get_iomem +EXPORT_SYMBOL_GPL vmlinux 0xc0b0e6ec btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0xc0bf6ead timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xc0d01bc0 percpu_ref_cancel_init +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0e11cf3 bdi_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0xc0e176e6 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0xc0e44741 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0xc0e90f8d sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0xc0ebf3ac regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xc0fe46d1 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0xc113e4bf pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc114be5c dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0xc11b45c6 gpiod_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xc11bd00f tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc1285c83 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xc141408a ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0xc14c2824 xenbus_probe +EXPORT_SYMBOL_GPL vmlinux 0xc15ce1dc netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0xc164642e xenbus_otherend_changed +EXPORT_SYMBOL_GPL vmlinux 0xc16fbbad disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc17ef6dc iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0xc19a181b regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0xc1dc0d5d acpi_find_child +EXPORT_SYMBOL_GPL vmlinux 0xc1f692f0 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0xc1f81642 devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0xc203bd06 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0xc214a389 __online_page_free +EXPORT_SYMBOL_GPL vmlinux 0xc21fcae4 tcp_is_cwnd_limited +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc23c3976 sysfs_notify_dirent +EXPORT_SYMBOL_GPL vmlinux 0xc250b10a xenbus_map_ring +EXPORT_SYMBOL_GPL vmlinux 0xc257f8c4 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xc26351f8 bind_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc2aedf04 ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc2e47e5b xenbus_register_frontend +EXPORT_SYMBOL_GPL vmlinux 0xc2f3c89d pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0xc30fb077 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc34efe27 snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0xc35270d3 dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc37763fc dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xc390d596 xen_find_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0xc3933bda tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0xc3b398a1 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0xc3cb083f thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0xc3cdff40 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0xc3ed2f47 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0xc407a1d4 gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc447dd93 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xc45861bb da903x_read +EXPORT_SYMBOL_GPL vmlinux 0xc4845ff9 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xc4894120 xenbus_dev_remove +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc48edc1c usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0xc4975851 percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0xc4acfb19 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xc4b254c9 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0xc4bbcc11 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xc4bcb1e7 usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0xc4cbb811 rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0xc4d1d72e ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xc4e0007e thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0xc4e871e4 fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0xc4f14ced pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0xc4f312fd ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0xc4f88919 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0xc4faf795 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0xc502bfb2 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xc512626a __supported_pte_mask +EXPORT_SYMBOL_GPL vmlinux 0xc51ab0d0 xenbus_dev_probe +EXPORT_SYMBOL_GPL vmlinux 0xc522bc3a adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xc5397da6 xenbus_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc5b11d0c skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0xc5bfb5bf ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0xc60f75ec __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc63a1109 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc6653aac ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xc667061f pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc67df7a5 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0xc687096f usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0xc690866c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6a53fdb sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xc6b455bb ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0xc6d7ad42 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0xc6de2368 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0xc6e25e99 tracepoint_iter_start +EXPORT_SYMBOL_GPL vmlinux 0xc7002ac4 evtchn_make_refcounted +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc730d904 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0xc7578047 pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7c397cf driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc813be5e sdhci_pci_o2_resume +EXPORT_SYMBOL_GPL vmlinux 0xc81a2c05 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0xc8480287 efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0xc85ad4a5 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc87e487a sched_clock_idle_sleep_event +EXPORT_SYMBOL_GPL vmlinux 0xc899c0f2 wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0xc8a7837e __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xc8a8cb68 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc9210685 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc9641b48 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0xc966aa9c transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0xc97d1140 cpufreq_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0xc9adff0a usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0xc9b92b06 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc9c3f176 hpet_register_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xc9e2a586 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xc9e8be68 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xca0b2164 iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0xca39a36a kick_process +EXPORT_SYMBOL_GPL vmlinux 0xca57a768 usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0xca67266a watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0xca75233d xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca81ea9a xenbus_transaction_end +EXPORT_SYMBOL_GPL vmlinux 0xca85d8cf tracepoint_probe_update_all +EXPORT_SYMBOL_GPL vmlinux 0xca9155d3 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0xca92fd24 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xca9765d2 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0xca9b9899 shake_page +EXPORT_SYMBOL_GPL vmlinux 0xcab5d971 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0xcab8d8c3 pinctrl_lookup_state +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcacee9c5 regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0xcad23ba5 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0xcaf3545d __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xcafcc4c0 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xcb06f73e pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0xcb09de12 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb454bf7 rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb5ed76c device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xcb8a4686 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0xcb9b162e clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0xcbb7a25c iommu_domain_has_cap +EXPORT_SYMBOL_GPL vmlinux 0xcbc848e8 agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcc0c39ad ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0xcc0dca47 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0xcc0f6c5e serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0xcc135c20 usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0xcc1dbf30 da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xcc1f1c3d inet_twdr_hangman +EXPORT_SYMBOL_GPL vmlinux 0xcc2eda83 get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0xcc45e95f pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0xcc46dc8d wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0xcc47035c dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xcc6ab305 is_dock_device +EXPORT_SYMBOL_GPL vmlinux 0xcc705df6 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcc934ae8 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0xcca5971e verify_signature +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xcce10c69 css_next_child +EXPORT_SYMBOL_GPL vmlinux 0xccea4e34 perf_get_x86_pmu_capability +EXPORT_SYMBOL_GPL vmlinux 0xccf5bd10 dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xccf6aa1b sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0xcd13c096 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0xcd188f26 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0xcd27b808 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0xcd2edba5 md_stop +EXPORT_SYMBOL_GPL vmlinux 0xcd56504c ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0xcd6f6165 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0xcd740f4a fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0xcd79d555 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0xcd7bb4bd devres_get +EXPORT_SYMBOL_GPL vmlinux 0xcd89aa9f usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcdcfe6c4 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xcdd2100d __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xcde4aba6 xenbus_free_evtchn +EXPORT_SYMBOL_GPL vmlinux 0xce08c751 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0xce0b9b59 max77693_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xce0cb839 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0xce46e140 ktime_get_ts +EXPORT_SYMBOL_GPL vmlinux 0xce4dd900 thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xce56d8b1 xen_unmap_domain_mfn_range +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce6e58d9 regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0xce97d129 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xce9b9407 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0xcea7114a xenbus_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xceb07dd1 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0xceb1f126 mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xceee90bc dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0xcef1dd0e perf_check_microcode +EXPORT_SYMBOL_GPL vmlinux 0xcf45a450 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0xcf4e884a fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0xcf52a80f uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcfa39eca __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcfc62f27 xen_start_info +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfc97ce5 regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0xcfde5862 __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xcfe359ff sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xcffa2aff spi_populate_width_msg +EXPORT_SYMBOL_GPL vmlinux 0xcffa6737 xen_swiotlb_dma_mapping_error +EXPORT_SYMBOL_GPL vmlinux 0xd00681d1 cgroup_taskset_first +EXPORT_SYMBOL_GPL vmlinux 0xd0304503 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd0442c58 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xd0443448 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0xd0458ccb xenbus_strstate +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd07ef8d8 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0xd080a7db shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0c07e44 pinctrl_force_sleep +EXPORT_SYMBOL_GPL vmlinux 0xd0c71eb4 regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0xd0e02e3a __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0xd145e17b pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xd14bc4d9 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xd1507e59 erst_clear +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd187fb04 xenbus_dev_cancel +EXPORT_SYMBOL_GPL vmlinux 0xd1895996 cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0xd1958cc9 pinctrl_utils_add_config +EXPORT_SYMBOL_GPL vmlinux 0xd1b2db37 tracepoint_probe_register_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xd1e09508 regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xd1fbab1e pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd221e0c0 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xd23167f6 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xd23ab044 irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xd2441665 acpi_match_device +EXPORT_SYMBOL_GPL vmlinux 0xd2494eaf ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0xd24981bc usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0xd257a301 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0xd258217d clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0xd26b6e87 vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd2859944 __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0xd2977de8 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0xd29b23a1 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0xd2afe2b2 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xd2c58ab2 apei_exec_noop +EXPORT_SYMBOL_GPL vmlinux 0xd32fe193 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xd369bc2d perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0xd37c6686 ftrace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0xd3a512d1 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xd3b86b07 reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xd3c5ef91 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0xd3f569e0 of_reset_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xd40218ca fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd426dbc4 erst_get_record_count +EXPORT_SYMBOL_GPL vmlinux 0xd43593f4 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd47ea6a5 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0xd481f192 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0xd4a94b77 x86_hyper_kvm +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4cad45e clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0xd4d7370c hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0xd4f3f2b3 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0xd502fd75 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xd512857f blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0xd5189ddb invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0xd52c9f4b blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0xd5420b53 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0xd5431b48 iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xd545ab91 alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0xd54fbe89 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0xd55418bb debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0xd555c36f stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd5674d82 cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd5a50689 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd5ba1aa6 __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5c36c40 __tracepoint_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0xd5fe8a93 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xd6011bf5 srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0xd6036256 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xd6202ba6 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0xd6279d94 filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xd6516825 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0xd6642dda unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0xd66a8f98 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0xd66c69d8 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd6934469 fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0xd69883af fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0xd6b48b0b virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0xd6ed3a8e cper_next_record_id +EXPORT_SYMBOL_GPL vmlinux 0xd6f6fd0e inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd7279e6a sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0xd72feba2 xenbus_read_driver_state +EXPORT_SYMBOL_GPL vmlinux 0xd7399d2a efivar_entry_iter_end +EXPORT_SYMBOL_GPL vmlinux 0xd753e1fe regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0xd765e51e debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd77c48c1 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0xd79b1280 user_update +EXPORT_SYMBOL_GPL vmlinux 0xd7ca776f inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7da0249 perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0xd81346a8 put_pid +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd82bf119 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xd8546f49 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xd85f94d8 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd8772113 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0xd8783c5a ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd89e3124 tpm_show_pcrs +EXPORT_SYMBOL_GPL vmlinux 0xd8db089d blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0xd8ff97b0 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0xd919806a amd_cache_northbridges +EXPORT_SYMBOL_GPL vmlinux 0xd91dcec5 register_hotplug_dock_device +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd947734f reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd94ba556 ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xd9627979 netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0xd96a2de6 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xd99c0834 uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xd9a34035 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0xd9a397e7 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xd9afa0a8 crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xd9ee02c8 proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0xd9f50dcd PageHeadHuge +EXPORT_SYMBOL_GPL vmlinux 0xd9fbfb44 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0xd9ffe0d3 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0xda0ad391 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0xda0c7808 pwm_free +EXPORT_SYMBOL_GPL vmlinux 0xda3a33ba netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0xda44cb37 setup_charger_manager +EXPORT_SYMBOL_GPL vmlinux 0xda64c485 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xda650c4e __scsi_get_command +EXPORT_SYMBOL_GPL vmlinux 0xda6787df md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0xdab50ae7 fpu_finit +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb04cacc tracepoint_probe_unregister_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xdb2a0c73 acpiphp_unregister_attention +EXPORT_SYMBOL_GPL vmlinux 0xdb5d34e0 rcu_batches_completed_preempt +EXPORT_SYMBOL_GPL vmlinux 0xdb60ee05 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0xdb772b6e netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb8b0cf3 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0xdb93171f __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xdbace2bb gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdbfb159f tpm_show_durations +EXPORT_SYMBOL_GPL vmlinux 0xdc03ef58 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xdc14a211 xen_hvm_evtchn_do_upcall +EXPORT_SYMBOL_GPL vmlinux 0xdc1e15f1 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0xdc2b2322 led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc511723 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xdc59a4c5 pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0xdc5f70d8 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0xdc65e03b sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0xdc6699cb acpi_dev_free_resource_list +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdcb6fe48 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xdcb79758 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0xdcbc0f6e usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xdce542c5 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0xdcec3fb2 regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0xdd018596 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd3251d9 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd6618ba btree_remove +EXPORT_SYMBOL_GPL vmlinux 0xdd6fa4b6 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0xdd794d33 phys_wc_to_mtrr_index +EXPORT_SYMBOL_GPL vmlinux 0xdd8992c7 regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0xdd96f283 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xdda9aabf fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0xddb53410 fuse_conn_kill +EXPORT_SYMBOL_GPL vmlinux 0xddb72f32 acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xddd96d68 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0xde01fcc0 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0xde4e19ba klist_next +EXPORT_SYMBOL_GPL vmlinux 0xde547d91 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0xde5de21f wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xde636903 pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xde7112b6 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xde77f39d pci_sriov_migration +EXPORT_SYMBOL_GPL vmlinux 0xde7b0305 xenbus_dev_fatal +EXPORT_SYMBOL_GPL vmlinux 0xdec6d8f3 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0xded4608f ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf148577 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xdf1882af dbgp_reset_prep +EXPORT_SYMBOL_GPL vmlinux 0xdf221e72 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xdf270ffd usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xdf66ca81 ucode_cpu_info +EXPORT_SYMBOL_GPL vmlinux 0xdf7393ec crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0xdf7e7c8b dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xdf96dfed rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0xdfa3ebbe usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0xdfb78ee5 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0xdfbdf7b0 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0xdfd75c0a sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xdfdf9c10 __tracepoint_unmap +EXPORT_SYMBOL_GPL vmlinux 0xdfe4c3f3 ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0xdfe8fbff regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0xdfeefaaa __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe01aa597 pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe05de7ac thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xe05fdfab usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0xe075da8d xen_swiotlb_sync_sg_for_device +EXPORT_SYMBOL_GPL vmlinux 0xe0895d11 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe08bfe21 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xe0c77bb5 mce_notify_irq +EXPORT_SYMBOL_GPL vmlinux 0xe0cd2c13 tpm_show_active +EXPORT_SYMBOL_GPL vmlinux 0xe0d5f921 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe0da14f5 task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0xe0f996b0 unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xe0fa5c9a platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xe10cd6ad erst_get_record_id_begin +EXPORT_SYMBOL_GPL vmlinux 0xe11e043c tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xe13c563f extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0xe15c4a36 __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xe16b0d30 unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe1810619 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0xe1859592 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xe1b4302d cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1befe1c dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0xe1c32794 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0xe1e07873 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0xe208a944 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xe234e507 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0xe24a9cfa sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xe26dfb70 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xe26e46f0 acpi_dev_resource_ext_address_space +EXPORT_SYMBOL_GPL vmlinux 0xe270aab5 cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0xe271ccfc dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xe278cc8c dma_buf_export_named +EXPORT_SYMBOL_GPL vmlinux 0xe295c0ff is_hpet_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe2b159ed uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0xe2b8a657 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0xe2c1e520 ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0xe2cbfabb napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xe2e7840d regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xe2f0f602 devm_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe33282d8 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0xe341b851 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0xe3460bf9 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0xe3485e14 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe359c79d dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe398286f ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xe39ffe03 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xe3a99e24 regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0xe3b1b259 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0xe3babe9a acpi_subsys_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xe3bc7fd4 hpet_unregister_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xe3ca0c52 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xe3d53d64 iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0xe3d61821 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xe3e24130 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0xe3e5778c clk_register +EXPORT_SYMBOL_GPL vmlinux 0xe3f90e9a crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0xe40b4268 srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0xe41534ce bind_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0xe4190151 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe444f3bb pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0xe450ecb8 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xe479345c crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xe48390c1 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0xe4c4b28f gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xe4e68bc8 apei_map_generic_address +EXPORT_SYMBOL_GPL vmlinux 0xe50be1ca sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0xe5182fc7 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0xe51ad92f usb_acpi_power_manageable +EXPORT_SYMBOL_GPL vmlinux 0xe52789f9 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0xe527d442 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0xe52ae762 __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0xe52e808a blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0xe56dc297 ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0xe56fd45d sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0xe5750ce9 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0xe57a65f9 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5b0ac44 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe5fed2b6 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0xe6307ee0 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0xe64ad8ea unregister_nmi_handler +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe6602e9f perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0xe69280bf swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0xe6b1a2f1 xenbus_register_backend +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6c8b53f usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe7232e0f user_return_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe75d6006 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe78322d9 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xe7d98cca inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xe7f3608a hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0xe7f57f4b tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe81c01f8 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xe83931d8 rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0xe8476513 xenbus_bind_evtchn +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe870d499 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xe89bd243 ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe89cb3f6 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0xe8e77840 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0xe90961df __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xe91d13a8 palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe94b264f stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0xe95abfc4 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xe96df9a9 efivars_kobject +EXPORT_SYMBOL_GPL vmlinux 0xe97000b9 irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0xe98670a4 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xe9af496c rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0xe9c59790 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0xe9ce931a kvm_para_available +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9dcf7f3 clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0xe9e47b6b device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0xe9f45b2b rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea1f1352 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0xea2bf65b cgroup_taskset_next +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea628c20 bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0xea987f82 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0xeabaaf58 crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xead0ff70 pinctrl_utils_add_map_configs +EXPORT_SYMBOL_GPL vmlinux 0xeadf816e klist_init +EXPORT_SYMBOL_GPL vmlinux 0xeaf3fc8e sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0xeafb44f6 inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xeb1c3628 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xeb2798f7 xen_destroy_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0xeb349e79 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0xeb370805 __apei_exec_run +EXPORT_SYMBOL_GPL vmlinux 0xeb3c8c64 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xeb5a4af7 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xeb833c22 xen_has_pv_disk_devices +EXPORT_SYMBOL_GPL vmlinux 0xeb9cb046 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xeba745e1 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0xebc9163b crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xebd6198e irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0xebd8ed74 sdhci_pci_o2_probe_slot +EXPORT_SYMBOL_GPL vmlinux 0xebd964e5 regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0xebeb9209 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xebf7aa91 devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0xebfde92b scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec2a37fe blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xec631f34 remove_memory +EXPORT_SYMBOL_GPL vmlinux 0xec6744e9 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xec785f15 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0xec91f6ea ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0xecad38f8 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0xecbc4f70 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0xecbdcf8d __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0xece3d329 cgroup_load_subsys +EXPORT_SYMBOL_GPL vmlinux 0xecffaa65 thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0xed14c4f6 pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0xed19c5c4 rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xed297597 kobj_completion_release +EXPORT_SYMBOL_GPL vmlinux 0xed43ce92 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0xed552561 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xed5b4708 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xed8d57d4 ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0xedbc6f67 gnttab_end_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xedc998a2 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0xedd49930 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0xedef1e89 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xedfb0435 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0xee0f82e6 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0xee13e697 set_personality_ia32 +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee708be7 ref_module +EXPORT_SYMBOL_GPL vmlinux 0xeea7c548 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xeeb19482 pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xeeb78878 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0xeee0f719 regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xeee53b90 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0xef001816 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xef139054 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0xef1f6e23 apei_resources_request +EXPORT_SYMBOL_GPL vmlinux 0xef3586a3 rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0xef41c143 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef722d99 device_register +EXPORT_SYMBOL_GPL vmlinux 0xef782b88 gnttab_grant_foreign_access_subpage +EXPORT_SYMBOL_GPL vmlinux 0xef836b27 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xefa54a9d atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xeffa6b8f __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0xf00a1a97 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0xf024075e devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xf032ff1a crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0xf04b9cd2 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xf0696401 acpi_pci_detect_ejectable +EXPORT_SYMBOL_GPL vmlinux 0xf097a6e7 regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xf0a62960 vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0xf0bc1e89 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0xf0cfe285 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0xf0efc2f8 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf1040a32 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0xf105b27d usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0xf122a574 irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0xf126f8d0 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xf148565e reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xf168f918 netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0xf16bcfb6 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf16d5514 alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0xf16f4a9a pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf186c82f nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xf1935506 virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0xf1b0aa7b pci_pri_status +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1b551d9 ibft_addr +EXPORT_SYMBOL_GPL vmlinux 0xf1c1ca13 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf23148a4 cper_estatus_check +EXPORT_SYMBOL_GPL vmlinux 0xf233a80e pwm_request +EXPORT_SYMBOL_GPL vmlinux 0xf23f5c65 thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0xf24c9515 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0xf2501f2c ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xf25c84ed crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0xf2742aa7 gnttab_map_refs +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf29adedc tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0xf29eda73 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0xf2ad0a8d ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xf2d5bdbb inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0xf2d93372 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf2f077cc pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0xf2fa7821 blkg_prfill_stat +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 0xf324b358 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0xf329c7ca use_mm +EXPORT_SYMBOL_GPL vmlinux 0xf32bdc5d unregister_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf3418964 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xf387c0b8 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xf388e912 alarm_init +EXPORT_SYMBOL_GPL vmlinux 0xf3a607c4 cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0xf3abed29 ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3c31ec8 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xf3c86757 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0xf3cc374e ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0xf40376d6 dev_hard_start_xmit +EXPORT_SYMBOL_GPL vmlinux 0xf406ff3a nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0xf42fa7d3 cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xf43048b0 usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xf442887b rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4a86323 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0xf4d574f0 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf4fc6c17 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0xf523bfd6 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xf52bcf8b generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0xf52ee16f ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0xf532149c crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xf53a0665 pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xf5405641 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf55244cf pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0xf552c18e usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf558ef4f irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0xf5785b42 evtchn_get +EXPORT_SYMBOL_GPL vmlinux 0xf5921032 pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0xf5945bac gnttab_free_grant_references +EXPORT_SYMBOL_GPL vmlinux 0xf59692c4 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xf596c2c6 d_materialise_unique +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5a6f457 xenbus_watch_pathfmt +EXPORT_SYMBOL_GPL vmlinux 0xf5b83a9b led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0xf5cd4411 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0xf5d6696f __clocksource_updatefreq_scale +EXPORT_SYMBOL_GPL vmlinux 0xf5d82327 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf5f29fb5 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0xf5fef4e3 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf611f195 __efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0xf6460d75 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0xf66a3fa1 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0xf6748423 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0xf6753690 __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0xf6c38803 md_run +EXPORT_SYMBOL_GPL vmlinux 0xf6d07664 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0xf6d55838 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf7016530 xenbus_gather +EXPORT_SYMBOL_GPL vmlinux 0xf7322bc8 pv_time_ops +EXPORT_SYMBOL_GPL vmlinux 0xf7376a0f shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xf73ab4f2 wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf744bbdc iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0xf7608cdf __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0xf769e7b0 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0xf769ea16 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0xf776a028 sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xf79b08b6 blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0xf7e7d309 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0xf7ffaa99 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0xf813ba01 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0xf816c866 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0xf81ef32a usb_string +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf8366d60 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xf8423e6f usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf88b3d2c find_module +EXPORT_SYMBOL_GPL vmlinux 0xf88fd81c acpi_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xf8bb8635 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf8c7e915 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0xf8e07298 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0xf8e4fa90 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0xf8e852dc ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf90554c0 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf9598fc3 devres_release +EXPORT_SYMBOL_GPL vmlinux 0xf9765833 dmi_match +EXPORT_SYMBOL_GPL vmlinux 0xf97666a0 set_memory_rw +EXPORT_SYMBOL_GPL vmlinux 0xf98ae5ec ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xf9924426 arch_add_memory +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9a7f0d3 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0xf9bb7756 pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9d9264e xen_have_vector_callback +EXPORT_SYMBOL_GPL vmlinux 0xf9f21c53 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xfa012fe7 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0xfa0ea81a wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa22e3cc netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfa3168d3 public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0xfa4a647e klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xfa52eeb4 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0xfa659c26 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0xfa700a4f iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0xfa901b31 compat_get_timespec +EXPORT_SYMBOL_GPL vmlinux 0xfaac6bf4 inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xfab777fe platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0xfab8afcf blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0xfaba974a cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0xfaf35649 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xfaf80659 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xfb17dec1 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb24d7c3 device_wakeup_enable +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 0xfb7aae66 smp_ops +EXPORT_SYMBOL_GPL vmlinux 0xfba646c8 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0xfbcdbf42 rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xfbd9558d register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0xfbe3dce8 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0xfbe7207e get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0xfc031b27 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc0757eb xenbus_alloc_evtchn +EXPORT_SYMBOL_GPL vmlinux 0xfc11d8d5 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0xfc1640e1 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0xfc17439f lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xfc201b66 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0xfc2fe322 driver_find +EXPORT_SYMBOL_GPL vmlinux 0xfc3b4246 acpi_bus_update_power +EXPORT_SYMBOL_GPL vmlinux 0xfc3f6747 device_schedule_callback_owner +EXPORT_SYMBOL_GPL vmlinux 0xfc4e3fac tpm_show_caps +EXPORT_SYMBOL_GPL vmlinux 0xfc6e662e usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xfc8ac28d usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xfc968c8b apei_exec_write_register_value +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfcdee8cc securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xfcef8630 rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0xfcff9512 rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0xfd11e735 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xfd2df034 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0xfd2ff4f7 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xfd40db14 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0xfd51b281 gnttab_end_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0xfd7243c7 erst_disable +EXPORT_SYMBOL_GPL vmlinux 0xfda1d8d3 wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0xfde353bd mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0xfdf6408a tpm_dev_vendor_release +EXPORT_SYMBOL_GPL vmlinux 0xfe0cb7e5 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xfe30607e bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xfe3a7680 usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0xfe5e0284 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0xfe6ee44f pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0xfe6f3920 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0xfe727411 get_phys_to_machine +EXPORT_SYMBOL_GPL vmlinux 0xfe860726 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0xfe98ce56 rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfec8ea93 serial8250_tx_dma +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfed3c486 powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0xfedd0b94 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff04de61 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff1076fc usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xff18e775 da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xff2f5cce ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xff351d42 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff5b35f8 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0xff7bb9c9 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xff97f92e blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0xffa3fa6c sock_diag_unregister_inet_compat --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/amd64/lowlatency.compiler +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/amd64/lowlatency.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4 --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/amd64/lowlatency.modules +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/amd64/lowlatency.modules @@ -0,0 +1,3940 @@ +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250_dw +8255 +8255_pci +8390 +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm860x-ts +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +9p +9pnet +9pnet_rdma +9pnet_virtio +BusLogic +DAC960 +a100u2w +a3d +a8293 +aacraid +aat2870-regulator +aat2870_bl +ab3100 +ab3100-otp +abituguru +abituguru3 +ablk_helper +ac97_bus +acard-ahci +acecad +acenic +acer-wmi +acerhdf +acpi_extlog +acpi_ipmi +acpi_pad +acpi_power_meter +acpiphp_ibm +acquirewdt +act200l-sir +act_csum +act_gact +act_ipt +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +actisys-sir +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 +ad5930 +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 +ad9850 +ad9852 +ad9910 +ad9951 +ad_sigma_delta +adcxx +addi_apci_035 +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-keys +adp5520_bl +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads1015 +ads7828 +ads7846 +ads7871 +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adv7170 +adv7175 +adv7180 +adv_pci1710 +adv_pci1723 +adv_pci1724 +adv_pci_dio +advansys +advantechwdt +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +aes-x86_64 +aesni-intel +af-rxrpc +af9013 +af9033 +af_802154 +af_alg +af_key +af_packet_diag +affs +ah4 +ah6 +aha152x_cs +ahci +ahci_platform +aic79xx +aic7xxx +aic94xx +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +airo +airo_cs +ak8975 +algif_hash +algif_skcipher +ali-ircc +alim1535_wdt +alim7101_wdt +alphatrack +altera-ci +altera-stapl +altera_jtaguart +altera_ps2 +altera_uart +alx +ambassador +amc6821 +amd-rng +amd5536udc +amd64_edac_mod +amd76xrom +amd8111e +amd_freq_sensitivity +amd_iommu_v2 +amilo-rfkill +amplc_dio200 +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pc263 +amplc_pci224 +amplc_pci230 +amplc_pci263 +ams369fg06 +analog +anatop-regulator +ansi_cprng +anubis +aoe +apanel +apds9300 +apds9802als +apds990x +apple-gmux +apple_bl +appledisplay +applesmc +appletalk +appletouch +applicom +ar5523 +ar7part +arc-rawmode +arc-rimi +arc4 +arc_ps2 +arc_uart +arcfb +arcmsr +arcnet +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arp_tables +arpt_mangle +arptable_filter +as3711-regulator +as3711_bl +as5011 +asb100 +asc7621 +asix +ast +asus-laptop +asus-nb-wmi +asus-wmi +asus_atk0110 +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at86rf230 +at91_ether +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-pwm-bl +atmel-ssc +atmel_cs +atmel_mxt_ts +atmel_pci +atmel_pwm +atmtcp +atp +atp870u +atxp1 +aty128fb +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo-pixcir-ts +auo_k1900fb +auo_k1901fb +auo_k190x +auth_rpcgss +authenc +authencesn +autofs4 +avm_cs +avma1_cs +avmfritz +ax25 +ax88179_178a +axnet_cs +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 +bcm5974 +bcm_wimax +bcma +bcma-hcd +bd6107 +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish-x86_64 +blowfish_common +blowfish_generic +bluecard_cs +bluetooth +bma150 +bma180 +bmp085 +bmp085-i2c +bmp085-spi +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bonding +bpa10x +bpck +bpctl_mod +bpqether +bq2415x_charger +bq24190_charger +bq24735-charger +bq27x00_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +broadsheetfb +bsd_comp +bt3c_cs +bt819 +bt856 +bt866 +bt878 +btcoexist +btcx-risc +btmrvl +btmrvl_sdio +btmtk_usb +btrfs +btsdio +bttv +btuart_cs +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +bw-qcam +bypass +c-qcam +c2port-duramar2150 +c4 +c67x00 +c6xdigio +c_can +c_can_pci +c_can_platform +cachefiles +cafe_ccic +cafe_nand +caif +caif_hsi +caif_serial +caif_socket +caif_usb +caif_virtio +camellia-aesni-avx-x86_64 +camellia-aesni-avx2 +camellia-x86_64 +camellia_generic +can +can-bcm +can-dev +can-gw +can-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 +cc770 +cc770_isa +cc770_platform +cciss +ccm +cdc-acm +cdc-phonet +cdc-wdm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc_subset +cedusb +ceph +cfag12864b +cfag12864bfb +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chipreg +chnl_net +chromeos_laptop +ci_hdrc +ci_hdrc_msm +ci_hdrc_pci +cifs +cirrus +cirrusfb +ck804xrom +classmate-laptop +clearpad_tm1217 +clip +clk-max77686 +clk-s2mps11 +clk-si5351 +clk-twl6040 +clk-wm831x +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm36651 +cm4000_cs +cm4040_cs +cma3000_d0x +cma3000_d0x_i2c +cmac +cmdlinepart +cmtp +cnic +cobra +coda +com20020 +com20020-pci +com20020_cs +com90io +com90xx +comedi +comedi_bond +comedi_fc +comedi_parport +comedi_test +comm +compal-laptop +configfs +contec_pci_dio +cordic +core +coretemp +cp210x +cpcihp_generic +cpcihp_zt5550 +cpia2 +cpu-notifier-error-inject +cpu5wdt +cpuid +cr_bllcd +cramfs +crc-ccitt +crc-itu-t +crc32 +crc32-pclmul +crc7 +crc8 +crct10dif-pclmul +cros_ec +cros_ec_i2c +cros_ec_keyb +cros_ec_spi +crvml +cryptd +crypto_null +crypto_user +cryptoloop +crystalhd +cs5345 +cs53l32a +cs5535-mfd +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 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx8800 +cx8802 +cx88xx +cxacru +cxd2099 +cxd2820r +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cxt1e1 +cy8ctmg110_ts +cyapa +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-hwmon +da9052-regulator +da9052_bl +da9052_onkey +da9052_tsi +da9052_wdt +da9055-hwmon +da9055-regulator +da9055_onkey +da9055_wdt +da9063-regulator +da9210-regulator +daqboard2000 +das08 +das08_cs +das08_isa +das08_pci +das16 +das16m1 +das1800 +das6402 +das800 +db9 +dc395x +dca +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +dcdbas +ddbridge +de2104x +de4x5 +decnet +deflate +defxx +dell-laptop +dell-led +dell-wmi +dell-wmi-aio +dell_rbu +denali +denali_dt +denali_pci +des_generic +designware_i2s +dgap +dgnc +dgrp +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +diskonchip +diva_idi +diva_mnt +divacapi +divadidd +divas +dl2k +dlci +dlm +dm-bio-prison +dm-bufio +dm-cache +dm-cache-cleaner +dm-cache-mq +dm-crypt +dm-delay +dm-flakey +dm-log +dm-log-userspace +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 +dm1105 +dm9601 +dme1737 +dmfe +dmi-sysfs +dmm32at +dmx3191d +dn_rtmsg +dnet +docg3 +docg4 +dpt_i2o +drbd +drm +drm_kms_helper +drm_usb +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsa_core +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +dt282x +dt3000 +dt3155v4l +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-dw2102 +dvb-usb-ec168 +dvb-usb-friio +dvb-usb-gl861 +dvb-usb-gp8psk +dvb-usb-it913x +dvb-usb-lmedm04 +dvb-usb-m920x +dvb-usb-mxl111sf +dvb-usb-nova-t-usb2 +dvb-usb-opera +dvb-usb-pctv452e +dvb-usb-rtl28xxu +dvb-usb-technisat-usb2 +dvb-usb-ttusb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +dvb_usb_v2 +dw_dmac +dw_dmac_core +dw_dmac_pci +dwc2 +dwc2_pci +dwc2_platform +dwc3 +dwc3-pci +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e4000 +e752x_edac +earth-pt1 +eata +ebt_802_3 +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ec100 +ec_sys +echo +edac_core +edac_mce_amd +edt-ft5x06 +eeepc-laptop +eeepc-wmi +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efi-pstore +efs +ehset +einj +elo +elsa_cs +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em_canid +em_cmp +em_ipset +em_meta +em_nbyte +em_text +em_u32 +emc1403 +emc2103 +emc6w201 +emi26 +emi62 +empeg +ems_pci +ems_pcmcia +ems_usb +emu10k1-gp +enc28j60 +enclosure +ene_ir +eni +enic +epat +epia +epic100 +eql +esas2r +esb2rom +esd_usb2 +esi-sir +esp4 +esp6 +et131x +ethoc +eurotechwdt +evbug +exofs +extcon-adc-jack +extcon-arizona +extcon-gpio +extcon-max77693 +extcon-max8997 +extcon-palmas +ezusb +f2fs +f71805f +f71808e_wdt +f71882fg +f75375s +f81232 +fakelb +fam15h_power +fan53555 +farsync +faulty +fb_ddc +fb_sys_fops +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 +floppy +fm801-gp +fm_drv +fmc +fmc-chardev +fmc-fakedev +fmc-trivial +fmc-write-eeprom +fmvj18x_cs +fnic +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +freevxfs +friq +frpw +fsa9480 +fscache +fschmd +ft1000 +ft1000_pcmcia +ftdi-elan +ftdi_sio +ftl +fujitsu-laptop +fujitsu-tablet +fujitsu_ts +fusbh200-hcd +g450_pll +g760a +g762 +g_acm_ms +g_audio +g_cdc +g_dbgp +g_ether +g_ffs +g_hid +g_mass_storage +g_midi +g_ncm +g_nokia +g_printer +g_serial +g_webcam +g_zero +gadgetfs +gamecon +gameport +garmin_gps +garp +gcm +gdmtty +gdmulte +gdmwm +gdth +gen_probe +generic +generic-adc-battery +generic_bl +gf128mul +gf2k +gfs2 +ghash-clmulni-intel +ghash-generic +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +glue_helper +gluebi +gma500_gfx +go7007 +go7007-loader +go7007-usb +goku_udc +goldfishfb +gp2ap002a00f +gp2ap020a00f +gpio +gpio-74x164 +gpio-addr-flash +gpio-adp5520 +gpio-adp5588 +gpio-amd8111 +gpio-arizona +gpio-charger +gpio-cs5535 +gpio-da9052 +gpio-da9055 +gpio-f7188x +gpio-fan +gpio-generic +gpio-ich +gpio-ir-recv +gpio-it8761e +gpio-janz-ttl +gpio-kempld +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio-pca953x +gpio-pcf857x +gpio-pch +gpio-rdc321x +gpio-regulator +gpio-sch +gpio-tps65912 +gpio-ts5500 +gpio-twl6040 +gpio-ucb1400 +gpio-viperboard +gpio-vx855 +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +gpio_backlight +gpio_keys +gpio_keys_polled +gpio_mouse +gpio_tilt_polled +gre +grip +grip_mp +gsc_hpdi +gspca_benq +gspca_conex +gspca_cpia1 +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_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gtco +guillemot +gunze +hamachi +hampshire +hangcheck-timer +hanwang +hci +hci_uart +hci_vhci +hdaps +hdlc +hdlc_cisco +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdlcdrv +hdpvr +he +hecubafb +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfc_usb +hfcmulti +hfcpci +hfcsusb +hfs +hfsplus +hgafb +hid +hid-a4tech +hid-apple +hid-appleir +hid-aureal +hid-axff +hid-belkin +hid-cherry +hid-chicony +hid-cypress +hid-dr +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-generic +hid-gyration +hid-holtek-kbd +hid-holtek-mouse +hid-holtekff +hid-huion +hid-hyperv +hid-icade +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-lenovo-tpkbd +hid-logitech +hid-logitech-dj +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hid-petalynx +hid-picolcd +hid-pl +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-gyro-3d +hid-sensor-hub +hid-sensor-iio-common +hid-sensor-magn-3d +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-wacom +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hidp +hih6130 +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hmc5843 +hmc6352 +hopper +horizon +hostap +hostap_cs +hostap_pci +hostap_plx +hp-wireless +hp-wmi +hp100 +hp_accel +hpfs +hpilo +hpsa +hptiop +hpwdt +hsi +hsi_char +hso +hsr +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-keyboard +hyperv_fb +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-designware-core +i2c-designware-pci +i2c-designware-platform +i2c-dev +i2c-diolan-u2c +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-platform +i2c-piix4 +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 +i2o_block +i2o_bus +i2o_config +i2o_core +i2o_proc +i2o_scsi +i3000_edac +i3200_edac +i40e +i40evf +i5000_edac +i5100_edac +i5400_edac +i5k_amb +i6300esb +i7300_edac +i7300_idle +i740fb +i7core_edac +i82092 +i82975x_edac +i8k +i915 +i915_bdw +iTCO_vendor_support +iTCO_wdt +ib700wdt +ib_addr +ib_cm +ib_core +ib_ipath +ib_ipoib +ib_iser +ib_isert +ib_mad +ib_mthca +ib_qib +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +ibm_rtl +ibmaem +ibmasm +ibmasr +ibmpex +ichxrom +icp_multi +ics932s401 +ideapad-laptop +ideapad_slidebar +idmouse +idt77252 +idt_gen2 +idtcps +ie6xx_wdt +ieee802154 +ifb +iforce +igb +igbvf +iguanair +ii_pci20kc +iio-trig-interrupt +iio-trig-periodic-rtc +iio-trig-sysfs +iio_dummy +iio_hwmon +ili210x +ili922x +ili9320 +imm +imon +ims-pcu +imx074 +ina209 +ina2xx +industrialio +industrialio-triggered-buffer +inet_diag +inexio +inftl +initio +input-polldev +int51x1 +intel-rng +intel-rst +intel-smartconnect +intel_ips +intel_menlow +intel_mid_dma +intel_oaktrail +intel_powerclamp +intel_rapl +intel_vr_nor +intelfb +interact +interval_tree_test +inv-mpu6050 +io_edgeport +io_ti +ioatdma +ioc4 +iowarrior +ip6_gre +ip6_tables +ip6_tunnel +ip6_vti +ip6t_MASQUERADE +ip6t_NPT +ip6t_REJECT +ip6t_SYNPROXY +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_mh +ip6t_rpfilter +ip6t_rt +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6table_security +ip_gre +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netnet +ip_set_hash_netport +ip_set_hash_netportnet +ip_set_list_set +ip_tables +ip_tunnel +ip_vs +ip_vs_dh +ip_vs_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 +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ipg +iphase +ipheth +ipip +ipmi_devintf +ipmi_poweroff +ipmi_si +ipmi_watchdog +ipoctal +ipr +ips +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_SYNPROXY +ipt_ULOG +ipt_ah +ipt_rpfilter +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +iptable_security +ipw +ipw2100 +ipw2200 +ipwireless +ipx +ir-jvc-decoder +ir-kbd-i2c +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +ir-rc5-decoder +ir-rc5-sz-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sony-decoder +ir-usb +ircomm +ircomm-tty +irda +irda-usb +irlan +irnet +irtty-sir +isci +iscsi_boot_sysfs +iscsi_ibft +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isofs +isp116x-hcd +isp1362-hcd +isp1704_charger +isp1760 +it87 +it8712f_wdt +it87_wdt +it913x-fe +itd1000 +ite-cir +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iw_nes +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsm +k10temp +k8temp +kafs +kalmia +kaweth +kb3886_bl +kbic +kbtab +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keucr +keyspan +keyspan_pda +keyspan_remote +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +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 +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 +leds-88pm860x +leds-adp5520 +leds-atmel-pwm +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-lp5521 +leds-lp5523 +leds-lp5562 +leds-lp55xx-common +leds-lp8501 +leds-lp8788 +leds-lt3593 +leds-max8997 +leds-mc13783 +leds-ot200 +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pca9685 +leds-pwm +leds-regulator +leds-ss4200 +leds-tca6507 +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-oneshot +ledtrig-timer +ledtrig-transient +legousbtower +lg-vl600 +lg2160 +lgdt3305 +lgdt330x +lgs8gxx +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +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 +libsrp +lightning +line6usb +lineage-pem +linear +lirc_bt829 +lirc_dev +lirc_igorplugusb +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +litelink-sir +lkkbd +llc +llc2 +llog_test +lm25066 +lm3533-als +lm3533-core +lm3533-ctrlbank +lm3533_bl +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 +lov +lp +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp8755 +lp8788-charger +lp8788_bl +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc2978 +ltc4151 +ltc4215 +ltc4245 +ltc4261 +ltv350qv +lustre +lv5207lp +lvfs +lz4 +lz4_compress +lz4hc +lz4hc_compress +m25p80 +m2m-deinterlace +m52790 +m88rs2000 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +ma600-sir +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +mac80211 +mac80211_hwsim +mac802154 +mac_hid +macb +machzwd +macmodes +macvlan +macvtap +mag3110 +magellan +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +matrix-keymap +matrix_keypad +matrox_w1 +matroxfb_DAC1064 +matroxfb_Ti3026 +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +max1111 +max11801_ts +max1363 +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max2165 +max3100 +max34440 +max517 +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77686 +max77693 +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925-regulator +max8925_bl +max8925_onkey +max8925_power +max8952 +max8973-regulator +max8997 +max8997_charger +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 +mce-inject +mce_amd_inj +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp4725 +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdc +mdc800 +mdio +me4000 +me_daq +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mei +mei-me +mei_phy +mem2mem_testdev +memory-notifier-error-inject +memstick +mena21_wdt +metro-usb +metronomefb +meye +mfd +mga +mgc +mic_card +mic_host +michael_mic +microread +microread_i2c +microread_mei +microtek +mii +minix +mip6 +mite +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mma8450 +mmc_block +mmc_spi +mms114 +mos7720 +mos7840 +moxa +mpc624 +mpoa +mpr121_touchkey +mpt2sas +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +mrst_max3110 +ms_block +msdos +msi-laptop +msi-wmi +msp3400 +mspro_block +msr +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt29f_spinand +mt312 +mt352 +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtd_dataflash +mtdblock +mtdblock_ro +mtdoops +mtdram +mtdswap +mtip32xx +mtouch +multipath +multiq3 +musb_hdrc +mv88e6060 +mv88e6xxx_drv +mv_u3d_core +mv_udc +mvmdio +mvsas +mvumi +mwave +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxl111sf-demod +mxl111sf-tuner +mxl5005s +mxl5007t +mxm-wmi +mxser +myri10ge +n411 +n_hdlc +n_r3964 +n_tracerouter +n_tracesink +nand +nand_bch +nand_ecc +nand_ids +nandsim +natsemi +nau7802 +navman +nbd +nci +ncpfs +nct6775 +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netlink_diag +netprio_cgroup +netrom +netsc520 +nettel +netxen_nic +newtonkbd +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 +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nf_synproxy_core +nf_tables +nf_tables_arp +nf_tables_bridge +nf_tables_ipv4 +nf_tables_ipv6 +nfc +nfc_digital +nfcsim +nfcwilink +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nfs +nfs_acl +nfs_layout_nfsv41_files +nfsd +nfsv2 +nfsv3 +nfsv4 +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 +nft_limit +nft_log +nft_meta +nft_nat +nft_rbtree +nft_reject_ipv4 +nftl +ngene +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_at_a2150 +ni_at_ao +ni_atmio +ni_atmio16d +ni_daq_700 +ni_daq_dio24 +ni_labpc +ni_labpc_cs +ni_labpc_isadma +ni_labpc_pci +ni_mio_cs +ni_pcidio +ni_pcimio +ni_tio +ni_tiocmd +nicstar +nilfs2 +niu +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 +ns558 +ns83820 +nsc-ircc +ntb +ntb_netdev +ntc_thermistor +ntfs +null_blk +nuvoton-cir +nv_tco +nvidiafb +nvme +nvram +nxt200x +nxt6000 +obdclass +obdecho +objlayoutdriver +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stack_o2cb +ocfs2_stack_user +ocfs2_stackglue +ocrdma +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 +output +ov2640 +ov5642 +ov6650 +ov7640 +ov7670 +ov772x +ov9640 +ov9740 +overlayfs +oxu210hp-hcd +p4-clockmod +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +padlock-aes +padlock-sha +palmas-regulator +panasonic-laptop +panel +paride +parkbd +parport +parport_ax88796 +parport_cs +parport_pc +parport_serial +pata_acpi +pata_ali +pata_amd +pata_arasan_cf +pata_artop +pata_atiixp +pata_atp867x +pata_cmd640 +pata_cmd64x +pata_cs5520 +pata_cs5530 +pata_cs5536 +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_sc1200 +pata_sch +pata_serverworks +pata_sil680 +pata_sl82c105 +pata_triflex +pata_via +pc300too +pc87360 +pc87413_wdt +pc87427 +pcap-regulator +pcap_keys +pcap_ts +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_can +pch_dma +pch_gbe +pch_phub +pch_uart +pch_udc +pci +pci-stub +pci200syn +pcips2 +pcl711 +pcl724 +pcl726 +pcl730 +pcl812 +pcl816 +pcl818 +pcm3724 +pcmad +pcmcia +pcmcia_core +pcmcia_rsrc +pcmciamtd +pcmda12 +pcmmio +pcmuio +pcnet32 +pcnet_cs +pcrypt +pcspkr +pcwd_pci +pcwd_usb +pd +pd6729 +pda_power +pdc_adma +peak_pci +peak_pcmcia +peak_usb +pegasus +penmount +percpu_test +pf +pfuze100-regulator +pg +phantom +phison +phonet +phram +phy-core +phy-generic +phy-gpio-vbus-usb +phy-isp1301 +phy-rcar-usb +phy-samsung-usb +phy-samsung-usb2 +phy-samsung-usb3 +physmap +pixcir_i2c_ts +pktcdvd +pktgen +pl2303 +plat-ram +plat_nand +platform_lcd +plip +plusb +pluto2 +plx_pci +pm-notifier-error-inject +pm2fb +pm3fb +pm80xx +pmbus +pmbus_core +pmc551 +pmcraid +pn533 +pn544 +pn544_i2c +pn544_mei +pn_pep +poc +port100 +poseidon +powermate +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +ppp_synctty +pppoatm +pppoe +pppox +pps-gpio +pps-ldisc +pps_core +pps_parport +pptp +prism2_usb +ps2mult +psmouse +psnap +pt +ptlrpc +ptp +ptp_pch +pvpanic +pvrusb2 +pwc +pwm_bl +pxa27x_udc +qcaux +qcserial +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qlogic_cs +qlogicfas408 +qmi_wwan +qnx4 +qnx6 +qt1010 +qt1070 +qt2160 +quatech2 +quatech_daqp_cs +quickstart +quota_tree +quota_v1 +quota_v2 +qxl +r128 +r592 +r6040 +r8152 +r815x +r8169 +r8187se +r8188eu +r8192e_pci +r8192u_usb +r820t +r852 +r8712u +r8a66597-hcd +r8a66597-udc +radeon +radeonfb +radio-i2c-si470x +radio-keene +radio-ma901 +radio-maxiradio +radio-mr800 +radio-shark +radio-si4713 +radio-si476x +radio-tea5764 +radio-timb +radio-usb-si470x +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +ray_cs +rbd +rbtree_test +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-em-terratec +rc-encore-enltv +rc-encore-enltv-fm53 +rc-encore-enltv2 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-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-tbs-nec +rc-technisat-usb2 +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-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rc5t583-regulator +rcar_vin +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +redboot +redrat3 +reed_solomon +reiserfs +remoteproc +renesas_usbhs +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +rio-scan +rio500 +rionet +rivafb +rj54n1cb0c +rmd128 +rmd160 +rmd256 +rmd320 +rndis_host +rndis_wlan +rocket +romfs +rose +rotary_encoder +rp2 +rpcsec_gss_krb5 +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt61pci +rt73usb +rtc-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-bq32k +rtc-bq4802 +rtc-da9052 +rtc-da9055 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1742 +rtc-ds2404 +rtc-ds3232 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-hid-sensor-time +rtc-isl12022 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max77686 +rtc-max8907 +rtc-max8925 +rtc-max8997 +rtc-max8998 +rtc-mc13xxx +rtc-moxart +rtc-msm6242 +rtc-palmas +rtc-pcap +rtc-pcf2123 +rtc-pcf2127 +rtc-pcf50633 +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-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtd520 +rti800 +rti802 +rtl2830 +rtl2832 +rtl8150 +rtl8180 +rtl8187 +rtl8188ee +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192se +rtl8723-common +rtl8723ae +rtl8723be +rtl8821ae +rtl_pci +rtl_usb +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtlwifi +rts5139 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rxkad +s1d13xxxfb +s2250 +s2255drv +s2io +s3fb +s526 +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s626 +s6e63m0 +s921 +saa6588 +saa6752hs +saa7110 +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7146 +saa7146_vv +saa7164 +saa717x +saa7185 +saa7706h +safe_serial +salsa20-x86_64 +salsa20_generic +samsung-keypad +samsung-laptop +samsung-q10 +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 +sb1000 +sb_edac +sbc60xxwdt +sbc8360 +sbc_epx_c3 +sbc_fitpc2_wdt +sbc_gxx +sbe-2t3e3 +sbni +sbp_target +sbs +sbs-battery +sbshc +sc1200wdt +sc520_wdt +sc520cdp +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_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +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_tgt +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_srp +sctp +sctp_probe +sdhci +sdhci-acpi +sdhci-pci +sdhci-pltfm +sdhci-pxav2 +sdhci-pxav3 +sdio_uart +sdr-msi3101 +sdricoh_cs +sedlbauer_cs +seed +sep_driver +seqiv +ser_gigaset +serial2002 +serial_cs +serio_raw +sermouse +serpent-avx-x86_64 +serpent-avx2 +serpent-sse2-x86_64 +serpent_generic +serport +serqt_usb2 +ses +sfc +sh_eth +sh_mobile_ceu_camera +sh_mobile_csi2 +sh_veu +sha1-ssse3 +sha256-ssse3 +sha512-ssse3 +shark2 +shpchp +sht15 +sht21 +si21xx +si4713-i2c +si476x-core +sidewinder +sierra +sierra_net +sil164 +sir-dev +sis +sis-agp +sis190 +sis5595 +sis900 +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_platform +skd +skel +skfp +skge +sky2 +sl811-hcd +sl811_cs +slcan +slicoss +slip +slram +sm501 +sm501fb +sm7xxfb +sm_common +sm_ftl +smb347-charger +smc91c92_cs +smm665 +smsc-ircc2 +smsc37b787_wdt +smsc47b397 +smsc47m1 +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +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-at73c213 +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt3328 +snd-bt87x +snd-ca0106 +snd-cmipci +snd-compress +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-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1938 +snd-es1968 +snd-firewire-lib +snd-firewire-speakers +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-hdmi +snd-hda-codec-idt +snd-hda-codec-realtek +snd-hda-codec-si3054 +snd-hda-codec-via +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-mona +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-mts64 +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-oxygen +snd-oxygen-lib +snd-page-alloc +snd-pcm +snd-pcsp +snd-pcxhr +snd-pdaudiocf +snd-portman2x4 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb-common +snd-sb16-dsp +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-atmel-pcm +snd-soc-core +snd-soc-si476x +snd-soc-simple-card +snd-sonicvibes +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usb-us122l +snd-usb-usx2y +snd-usbmidi-lib +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx-lib +snd-vx222 +snd-vxpocket +snd-ymfpci +soc_camera +soc_camera_platform +soc_mediabus +soc_scale_crop +softdog +softing +softing_cs +solo6x10 +solos-pci +sony-btf-mpx +sony-laptop +soundcore +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-dw +spi-dw-midpci +spi-dw-mmio +spi-gpio +spi-lm70llp +spi-oc-tiny +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-sc18is602 +spi-tle62x0 +spi-topcliff-pch +spi-xcomm +spi_ks8995 +spidev +squashfs +sr9700 +ssb +ssb-hcd +ssfdc +sst25l +sstfb +ssu100 +st +st1232 +st_accel +st_accel_i2c +st_accel_spi +st_drv +st_gyro +st_gyro_i2c +st_gyro_spi +st_magn +st_magn_i2c +st_magn_spi +st_pressure +st_pressure_i2c +st_pressure_spi +st_sensors +st_sensors_i2c +st_sensors_spi +starfire +stb0899 +stb6000 +stb6100 +ste_modem_rproc +stex +stinger +stir4200 +stk1160 +stkwebcam +stmmac +stmpe-keypad +stmpe-ts +stowaway +stp +streamzap +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +svcrdma +svgalib +sx8 +sym53c500_cs +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink +synclink_cs +synclink_gt +synclinkmp +syscopyarea +sysfillrect +sysimgblt +sysv +t1pci +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +tc3589x-keypad +tca6416-keypad +tca8418_keypad +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bic +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 +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-kstrtox +test-string_helpers +test_power +tg3 +tgr192 +thinkpad_acpi +thmc50 +ti-adc081c +ti_dac7512 +ti_usb_3410_5052 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timb_dma +timberdale +timblogiw +timbuart +timeriomem-rng +tipc +tlan +tlclk +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmem +tmiofb +tmp006 +tmp102 +tmp401 +tmp421 +tmscsim +toim3232-sir +topstar-laptop +toshiba_acpi +toshiba_bluetooth +touchit213 +touchright +touchwin +tpci200 +tpm-rng +tpm_atmel +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm_i2c_stm_st33 +tpm_infineon +tpm_nsc +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-charger +tps65090-regulator +tps65217 +tps65217-regulator +tps65217_bl +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +tranzport +tridentfb +ts2020 +ts5500_flash +ts_bm +ts_fsm +ts_kmp +tsc2005 +tsc2007 +tsc40 +tsi568 +tsi57x +tsi721_mport +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +tsl4531 +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tuner_it913x +tunnel4 +tunnel6 +turbografx +tusb6010 +tvaudio +tveeprom +tvp5150 +tw2804 +tw9903 +tw9906 +tw9910 +twidjoy +twl6040-vibra +twofish-avx-x86_64 +twofish-x86_64 +twofish-x86_64-3way +twofish_common +twofish_generic +typhoon +u132-hcd +uPD98402 +u_ether +u_rndis +u_serial +uartlite +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +uda1342 +udc-core +udf +udl +udlfb +udp_diag +ueagle-atm +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_sercos3 +uli526x +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 +usb-serial-simple +usb-storage +usb3503 +usb8xxx +usb_8dev +usb_debug +usb_f_acm +usb_f_ecm +usb_f_ecm_subset +usb_f_eem +usb_f_mass_storage +usb_f_ncm +usb_f_obex +usb_f_phonet +usb_f_rndis +usb_f_serial +usb_f_ss_lb +usb_gigaset +usb_wwan +usbatm +usbdux +usbduxfast +usbduxsigma +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usbsevseg +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +userspace-consumer +ushc +usnic_verbs +uss720 +uvcvideo +uvesafb +uwb +ux500 +v4l2-common +v4l2-dv-timings +v4l2-int-device +v4l2-mem2mem +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vfio +vfio-pci +vfio_iommu_type1 +vga16fb +vgastate +vgg2432a4 +vhci-hcd +vhost +vhost_net +vhost_scsi +via +via-camera +via-cputemp +via-ircc +via-rhine +via-rng +via-sdmmc +via-velocity +via686a +via_wdt +viafb +video +videobuf-core +videobuf-dma-contig +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videobuf2-core +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-memops +videobuf2-vmalloc +videocodec +videodev +viperboard +viperboard_adc +virtio-rng +virtio_scsi +virtual +visor +vivi +vlsi_ir +vmac +vme +vme_ca91cx42 +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmlfb +vmw_balloon +vmw_pvscsi +vmw_vmci +vmw_vsock_vmci_transport +vmwgfx +vmxnet3 +vp27smpx +vpx3220 +vringh +vsock +vsxxxaa +vt1211 +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +w1-gpio +w1_bq27000 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1_smem +w1_therm +w35und +w5100 +w5300 +w6692 +w83627ehf +w83627hf +w83627hf_wdt +w83697hf_wdt +w83697ug_wdt +w83781d +w83791d +w83792d +w83793 +w83795 +w83877f_wdt +w83977af_ir +w83977f_wdt +w83l785ts +w83l786ng +w90p910_ts +w9966 +wacom +wacom_i2c +wacom_w8001 +wafer5823wdt +walkera0701 +wanxl +warrior +wbsd +wcn36xx +wdt_pci +whc-rc +whci +whci-hcd +whiteheat +wil6210 +wimax +winbond-840 +winbond-cir +wire +wishbone-serial +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wl3501_cs +wlags49_h25_cs +wlags49_h2_cs +wlcore +wlcore_sdio +wlcore_spi +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x-ts +wm831x_backup +wm831x_bl +wm831x_power +wm831x_wdt +wm8350-hwmon +wm8350-regulator +wm8350_power +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-regulator +wm97xx-ts +wmi +wp512 +wusb-cbaf +wusb-wa +wusbcore +x25 +x25_asy +x38_edac +x86_pkg_temp_thermal +x_tables +xc4000 +xc5000 +xcbc +xen-blkback +xen-evtchn +xen-fbfront +xen-gntalloc +xen-gntdev +xen-kbdfront +xen-netback +xen-pciback +xen-pcifront +xen-privcmd +xen-tpmfront +xen_wdt +xenfs +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-enet +xgifb +xgmac +xillybus_core +xillybus_pcie +xirc2ps_cs +xircom_cb +xo15-ebook +xor +xpad +xprtrdma +xsens_mt +xt_AUDIT +xt_CHECKSUM +xt_CLASSIFY +xt_CONNSECMARK +xt_CT +xt_DSCP +xt_HL +xt_HMARK +xt_IDLETIMER +xt_LED +xt_LOG +xt_NETMAP +xt_NFLOG +xt_NFQUEUE +xt_RATEEST +xt_REDIRECT +xt_SECMARK +xt_TCPMSS +xt_TCPOPTSTRIP +xt_TEE +xt_TPROXY +xt_TRACE +xt_addrtype +xt_bpf +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_conntrack +xt_cpu +xt_dccp +xt_devgroup +xt_dscp +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_iprange +xt_ipvs +xt_length +xt_limit +xt_mac +xt_mark +xt_multiport +xt_nat +xt_nfacct +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_realm +xt_recent +xt_sctp +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_tcpudp +xt_time +xt_u32 +xtkbd +xts +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 +zte_ev --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/arm64/generic +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/arm64/generic @@ -0,0 +1,15322 @@ +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/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/atm/suni 0xbc9b7562 suni_init +EXPORT_SYMBOL drivers/bcma/bcma 0xb12eb1ec 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/dma/dw/dw_dmac_core 0x0dd39f20 dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x56b71dc5 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x5f67c314 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xaffcc85b dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xb7758065 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xedc2d879 dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/pl330 0x0183e872 pl330_filter +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04d0f641 fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0a5965b0 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0b993a72 fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0bbbf8ab fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0f7d6af8 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x411e0dba fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x448b40ed fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0x456b57cc fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4831f1ec fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5940ff31 fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5c8b633f fw_core_handle_bus_reset +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 0x6a0f6a3a fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7266a3c7 fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7d1a4e68 fw_core_handle_request +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 0x94c81517 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0x963de87f fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa37370ef fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa78cd4f3 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xaab274b1 fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb511ea92 fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xbc5c5209 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0xbe0ecc9f fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0xbeff5537 fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc1efebc2 fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd0b7c12f fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe4ee4bc0 fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xea2c038d fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0xfd832e1c fw_iso_context_start +EXPORT_SYMBOL drivers/fmc/fmc 0x46160237 fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0x73d44c4a fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0x82419281 fmc_free_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x84001469 fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0x9782bab2 fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0xbbc1d797 fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0xc4d801db fmc_show_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xcc251d10 fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xd88374cb fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0xdbd88f17 fmc_find_sdb_device +EXPORT_SYMBOL drivers/fmc/fmc 0xfea8bdf2 fmc_driver_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00025916 drm_mode_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0038b336 drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00667d8a drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0187c753 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0x026c0d6b drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x029d244b drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02b6bde8 drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03ad8d9e drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0x085ec61e drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a87bc56 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0be72dde drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d417d3f drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fbe2178 drm_crtc_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 0x12aa7d93 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12c6276a drm_buffer_read_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1304761b drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13966d8e drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x142b8b35 drm_buffer_copy_from_user +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14345df7 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14f6dbb2 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x16312b8a drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x17cb5cbd drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x189f6401 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x193e040a drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19e44324 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1aa4f5e4 drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b4514a0 drm_sysfs_connector_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dff539d drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e056d16 drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e2768eb drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f42f65a drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20b37c60 drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0x213332e9 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21926400 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22137343 drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23a25164 drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x27879da4 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a942ab2 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d80be4d drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2efefcba drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30cefdf0 drm_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x33ea2ae9 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34712ba3 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x35fa4fa9 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36f91ef3 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37340d6a drm_core_ioremap +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 0x3ae7b2d0 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d4b8108 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d757d74 drm_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3dab8114 drm_get_last_vbltimestamp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ed138a0 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x40d085fd drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x40ef3862 drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x412ea629 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x419e6d90 drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43384bd9 drm_buffer_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43f1df5b drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x498dcb5e drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49fabf0d drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b100093 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b5d4680 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4d7eb906 drm_open +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 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x53ad4858 drm_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b0b53c drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5844cb4b drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x589a7dd7 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59be3ceb drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59dd54e8 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d7318dc drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e1e7fb5 drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e9ac084 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6090be61 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x60bde06b drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6330c46d drm_core_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6417269c drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x662b595d drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66803841 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x677e754e drm_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x679cde32 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x69cf9aef drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b6d7375 drm_timestamp_precision +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cc3c29e drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cd815ca drm_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cee2e42 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7124dce7 drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x77ad908a drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79c20146 drm_global_mutex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a4e7297 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7acc7d8f drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c94972d drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7cfab269 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e20a32c drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7fb0077d drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8030b0a8 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x808bad2c drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81058f12 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81ba930c drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81e773e4 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x85c7a5f5 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x86b85318 drm_prime_destroy_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x889be1f9 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89a3222e drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a1d42b5 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a5c67ea drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ad9ae3f drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8cee0597 drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8dfb019d drm_buffer_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ed7aaec drm_get_encoder_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f7df3a7 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x90ef3467 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9243921a drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9333f40c drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x96077e60 drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9745d638 drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a28bdfd drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9ac7e0be drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c8f4bc9 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d70fc2a drm_rnodes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d80234f drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9eccfe56 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9ed07b94 drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0c8dda0 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0f6e6db drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa11ce5fa drm_get_connector_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1f4e9e6 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa33eb8b7 drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa3a02e8c drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa3db4987 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5dbd572 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa66c6a47 drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa7d3459b drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa9c38c03 drm_compat_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaad53593 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xacce21d5 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad53f81f drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad5f94b0 drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaddc71bd drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae194dda drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf996702 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafb0cb6f drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb1ce87d7 drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4c1a0de drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb526e7e4 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5540008 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb569d550 drm_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb572a9f0 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5d94399 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb668cd20 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb93d388d drm_vma_offset_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb95beb55 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba798cea drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbaad7154 drm_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb2e7886 drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd12cdb0 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe001c53 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc266d67f drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc30d4263 drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc337db21 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4000f9f drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc414c422 drm_vblank_offdelay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc537b90c drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6e8b049 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc75d3559 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7f2fa01 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc890d8d0 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca26aaf0 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcae6fe1e drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcc4ca5bf drm_sysfs_connector_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcdd45f24 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce82967f drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcfc31e6a drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd026459d drm_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd04e585e drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd29847d5 drm_prime_init_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2f99e2d drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd3c13a25 drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd4ed6214 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd73cd1f9 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda405255 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdabe3328 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdac841d5 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb97281f drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb553f3 drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbca67b7 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbcce8de drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd25cb7e drm_mode_connector_detach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde311cdb drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdeff83ed drm_bridge_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0a55ebe drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2ef97e4 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe490f779 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe66a2e8d drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6f46e6e drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe897d093 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea1d7f00 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec51e5f0 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xecb6a955 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef3077aa drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xefdf9b69 drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf00cada4 drm_platform_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0152ed4 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf06cb6b6 drm_core_reclaim_buffers +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf08d712a drm_mode_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2452009 drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2983d65 drm_core_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2aaac6c drm_bridge_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf397ca6a drm_dev_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf446a0e2 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf74fee7d drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf997c7dc drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa49fe5c drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb497216 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfc021b15 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcb0497e drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd063935 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe4a68c7 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe519f24 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfece5848 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff70e24d drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x05036900 drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x063f4f1d drm_kms_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 0x0e67996b 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 0x1244153c drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x162e0dfe drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x16d51708 drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1a5322d4 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x24c87367 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2e1d4a06 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34223397 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x381598fc drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3a777e2d drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3bb4608d drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x478ed2a2 drm_dp_aux_unregister_i2c_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x48fa1e18 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x537adbff drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5f05280d drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6c8b51d0 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x759b4d1f drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7eaae080 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84f41380 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x85ecfd40 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x89a797de drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8a0be536 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8ac3cf18 drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8b4bfca6 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x97cbc705 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa0497f7a drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa3e78844 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa5d76829 i2c_dp_aux_add_bus +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 0xb5cdb9da drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb9746742 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbd2ad741 drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc38ee42a drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcde9524b drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd48dd819 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd9935d09 drm_fb_helper_restore_fbdev_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeb7cd559 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf2c3cff5 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf366446c drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf819bfaf drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfc1042e0 drm_dp_aux_register_i2c_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x02193a9a drm_usb_init +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x2875154d drm_get_usb_dev +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x44ed1d11 drm_usb_exit +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0648035f ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x19a565d8 ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x23a7f6df ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x263756e0 ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x279d9f8b ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2918566e ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x29b106ba ttm_mem_global_free +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 0x2fa6bcd1 ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x33591782 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3b482a89 ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x44f89367 ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x456c6260 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x47312bdd ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4d2c1c6c ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4d78a537 ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4dc83e1e ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4e8dd264 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5570c7f7 ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x564e1aee ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x591d7b41 ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5a768dc4 ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5e79a15a ttm_bo_create +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 0x672a1c7a ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6b08bbe8 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6dac6a0a ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6edd4350 ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6fa23711 ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7a20165c ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7a340cc0 ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7fb38fae ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x813074e4 ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x82822840 ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x880a15ad ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x893f9680 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x95d2ff0e ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9cfb2d6f ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9e688a89 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa0e1f89b ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa4076d8c ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa5ab73f8 ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa7a11dba ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xad8a1ee2 ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xae038a23 ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xae87b61d ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb3da645a ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc3f7fc0a ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc5c22d91 ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc6c18532 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce6e43a8 ttm_base_object_lookup_for_ref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf7a9805 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd020cdf0 ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd3d04763 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd5787a79 ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd94e34ed ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdb33d1f9 ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdb822e74 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe6ec87f5 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe70d4dd0 ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe8482cea ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xedafdf66 ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf42a48ff ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf5dc5576 ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf78a2c57 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfd84fea7 ttm_mem_io_lock +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x0903c239 vid_from_reg +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0xef1c781c vid_which_vrm +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0c242ac7 sch56xx_watchdog_register +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0e2a6864 sch56xx_read_virtual_reg +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0f5877d4 sch56xx_read_virtual_reg16 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x34257f35 sch56xx_watchdog_unregister +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xe5022f95 sch56xx_read_virtual_reg12 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xed1d2a08 sch56xx_write_virtual_reg +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x98ac0d58 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xae95c21b i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xe9907f9b i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x06329b8b i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xb56ec543 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0x76cf1b40 amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xacc99f78 st_accel_common_probe +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xe560b729 st_accel_common_remove +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x21d5ae68 hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x5d7d55f7 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x8210a73d hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x9fbc5845 hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xbceb2034 hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xbb397035 hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xbe788e3d hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x074d7047 st_sensors_trigger_handler +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x0dfc8abf st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x1b0adf0a st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x25105652 st_sensors_sysfs_set_sampling_frequency +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x30a206ce st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x44fe30c9 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x4978be19 st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x4e6d75e6 st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x636c0d3b st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x6788484e st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xaa782e35 st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xaef41d1b st_sensors_sysfs_get_sampling_frequency +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xc8770129 st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xc92941c3 st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xd982a227 st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xff380ae1 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0xb7787d29 st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0xf1fc7686 st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x6acb541f st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xa6899e20 st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x19d0890d adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x1f8566dc adis_enable_irq +EXPORT_SYMBOL drivers/iio/industrialio 0x00fa5eaf iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x0517a3e4 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x12ab8929 iio_buffer_show_enable +EXPORT_SYMBOL drivers/iio/industrialio 0x179f3f51 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0x1f5b7cb1 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x2396e32d iio_buffer_read_length +EXPORT_SYMBOL drivers/iio/industrialio 0x2bdd26f2 iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x334e2cc1 iio_buffer_store_enable +EXPORT_SYMBOL drivers/iio/industrialio 0x3bd27868 iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x446bd9eb iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x5be61a8b iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x708781c4 iio_buffer_write_length +EXPORT_SYMBOL drivers/iio/industrialio 0x995cda6f iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0xa2cc80e9 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0xaa227991 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xb1133907 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0xb2961352 iio_buffer_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xb4703650 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0xb614f795 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0xc44d9dbc iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0xd42d4129 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0xd9bb3e76 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xfd743541 iio_buffer_register +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x53920cd7 iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0xc88dd401 iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x6e6d52ed iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xfe7cdab9 iio_kfifo_free +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x3bb75e7d st_magn_common_probe +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xe83527be st_magn_common_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x606c597b st_press_common_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x7ad3ae7f 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 0x446fd7c9 rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x4c33e170 rdma_addr_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x4fa3893d rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xb95313fe rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xfe6e58a5 rdma_addr_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x098434e8 ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x1540e64a cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x18cb64a9 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x2e1f1246 ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x32431dc9 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x3a72a5db ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x492925e3 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x677f0522 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x79c151ab ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x7afd80d2 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xab7bbac3 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb7c05240 ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc4d5f1a0 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc9b6a7b7 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xde1f9138 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf3a60ff1 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xfae2a857 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0264eb8a ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x06c82fcf mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x06cbf1e7 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0afd3ecd ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1125af8a ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x129ee66e ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x14ef0e23 ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x14f84918 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1524e719 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x171f99f1 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1c820d1b ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1d25c7e6 ib_modify_srq +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 0x23e35f96 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x242bbfec ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x24a7de80 ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2584b013 ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ede875b ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3063090b ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x333bc428 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x34324345 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x37ebaccd ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x38780098 ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x44951d0e ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x45527d9e ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x45a09a2d ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x49592700 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4abdc384 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4f172e2e ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x54b136e5 ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5aeb9300 ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x629db3c5 ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6556004e ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x66f72f48 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6877b025 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e030e26 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x753f20ba ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x79dd58fb ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7d70d769 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x825a905e ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x82f9ed5f ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x87faea44 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x882f6db8 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8b766384 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8e440c8e ib_resolve_eth_l2_attrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8f6161f6 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x962dae41 ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9a7fc3cf ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9da91fca rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa4052925 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa432baf6 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa560949e ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa818d9d6 ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xac217df9 rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xac6f0f3f ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xad05c436 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xad45c498 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb0fd81d9 ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb2bae961 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb5e93473 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb6f478ff ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb8566d8d ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbc2bdc2b ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc212c696 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc54f0d59 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc5dfec6b ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd2fbc51c ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd572a799 ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd6a62e29 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdb5c4fbd ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdc4f40bd ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdeb501a5 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdf50995d ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe7687f8c ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe8769d80 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xea2500a5 ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeb1b2b8d ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf3015da4 ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf5d5a776 ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf7287fbc ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfda1af9d ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfe71bf82 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfef71c42 ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x1d2449d8 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x28ac2511 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x34c6dd66 ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x34f01557 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x58e2e76d ib_redirect_mad_qp +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 0x7e25f524 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x946d5d27 ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xb21e5a20 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xc203afd8 ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xdebbcb60 ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xed01e351 ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xef17c5d3 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xfff5892b ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x22f07253 ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x2ab43aa7 ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x5c3f1ae5 ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x6aed8cd4 ib_sa_path_rec_get +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 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xdda47e32 ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xddc330e7 ib_sa_pack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xe4cef53a ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xe5584580 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xea23f585 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 0x02f3dc70 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x3218d728 iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x3312b88f iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x62c5934e iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x745aac5c iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x8d31d4ee iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf2c068ff iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf7768f3a iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x021c3327 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x127cb5d3 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x226ce93e rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x229e29f4 rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x274014c0 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x404735a0 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x67abe45d rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6bd8f767 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x772fe4fb rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x878175f2 rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x87d07b3f rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8cee3b87 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8d1ec480 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa7b74080 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa87c967c rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa91e5123 rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd4282085 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe6423695 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xee09f752 rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xefb18cd7 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf0c31af9 rdma_bind_addr +EXPORT_SYMBOL drivers/input/gameport/gameport 0x0e9db812 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x25554c20 gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x289c71d7 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0x2ecb78fa gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x3386dd53 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x5bdb96e4 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0xbb882090 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xc0529b7a gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xfdabca14 gameport_stop_polling +EXPORT_SYMBOL drivers/input/input-polldev 0x8b233cea input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x8ef892a1 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xa8782c61 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xe1e7261c input_free_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x319ce5f9 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0xe5123ce2 ad714x_remove +EXPORT_SYMBOL drivers/input/misc/ad714x 0xf63a63d5 ad714x_probe +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 0xb2b8dfb7 cma3000_init +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/sparse-keymap 0x3049c325 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x6f7449c4 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0x7a97f426 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x7d7d4f79 sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0x955455d5 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0xbfb7589c sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xe4cb4e30 ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xff621f01 ad7879_pm_ops +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x03b9c1a0 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x078f3ab8 capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2b8eab1f capilib_free_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2baa6586 capilib_new_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x47d3fc51 capi_info2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x49e4020e capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x5db1e467 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 0x6fab7775 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7292ab34 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x72a25a72 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7a33596c capi20_get_serial +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7e6f1307 capi20_get_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x886f76b1 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 0xa7e2f213 capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xa99f1c1d capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa165d27 capilib_release_appl +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa1b3721 capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xed061606 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xf40711de capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xfd552f7a capi_message2str +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x3221d000 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x38c00041 b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x3c3b4ee5 b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x6982c735 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x786818ee b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x8d355c52 b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x94f08c4e b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x9675a870 b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x9a9434ac b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xa3c70043 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc35c2bda avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xe0ff97b2 b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xe6d069f8 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xedbf62dd b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xf0db8cb9 b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x1509dab7 b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x35c98a07 b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x373e8862 b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x648e8c4d b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x75ef27c4 t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x7b3ba0e2 b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xbb26ef90 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd97b0ab9 b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xf55d6a58 b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x2974ead1 DIVA_DIDD_Read +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x7ab59853 proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x230c2731 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x357cf70e mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x69378a65 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xa9b88a27 mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x21623e7a mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xe7f5a0bb 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 0x315c3180 hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x7f29ce36 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xe227344e FsmRestartTimer +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 0xff2db2cf FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x26841357 isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x620f0f5f isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x66cd0cc0 isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x9436afbe isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xd1f58189 isacsx_irq +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x12f6c32b register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x3bc41eab isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xdea9eea0 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 0x06016fdc create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0f76dbe6 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1ddf559c recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2a35bc13 mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2c8eda41 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2d7a1e37 bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x32926ebe dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3565de3d get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x504affcb recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x504e7d5e get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x54451388 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5928e10a mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x614ede30 mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x684be51a mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7522c824 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7f80268a mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x802fa9c8 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x832598c5 bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x96309324 mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa7c898b6 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xba76f9a4 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc0439e12 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xced4408d mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd3228bfd mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd92d92b2 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe87943cf mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf6912877 recv_Bchannel_skb +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 0x14af6ee9 __closure_lock +EXPORT_SYMBOL drivers/md/bcache/bcache 0x64ee5cd2 closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7c983925 closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0x9701cdef closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0x9ca9639b closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0xba0a2270 closure_trylock +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe3c17af1 __closure_wake_up +EXPORT_SYMBOL drivers/md/dm-log 0x2e866c38 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0x3bb047e5 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0x4952ee9d dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0xb0f18f7c dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x235f57df dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0x5b55606e dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x7c0a8a74 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x89fa3fd6 dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0xad18afa1 dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0xda101335 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/raid456 0x0772730a raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x0d81cf58 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x582e447a flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x63b92eb5 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x6545c952 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x946dd956 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xa0e9c6c8 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xb6b194d8 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xc12a39b0 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xc5143138 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xdf54eaaa flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xe0b24394 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xea22e0ba flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xebd7c290 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/btcx-risc 0x495e4b0c btcx_calc_skips +EXPORT_SYMBOL drivers/media/common/btcx-risc 0xad2fe38b btcx_sort_clips +EXPORT_SYMBOL drivers/media/common/btcx-risc 0xb8dc0fff btcx_riscmem_free +EXPORT_SYMBOL drivers/media/common/btcx-risc 0xc368f8e6 btcx_align +EXPORT_SYMBOL drivers/media/common/btcx-risc 0xcda0ded2 btcx_screen_clips +EXPORT_SYMBOL drivers/media/common/btcx-risc 0xf3d4a01b btcx_riscmem_alloc +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 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x5b88faf6 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x64450f31 cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0x765461c2 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 0xe538c7c3 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0xf66e0e8d cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0x3c636ecd cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x15486699 tveeprom_read +EXPORT_SYMBOL drivers/media/common/tveeprom 0xf6a1eb53 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0c3d67be dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x10f3fc17 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x17523ce7 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1a3d57be dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1ec0d0ed dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x21b98b3d dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x23c29e4c dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x274f4a71 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2975b9bd dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x35359802 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x388d88b5 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3d4e89d1 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3f313cec dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4b96de00 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x500de1ff dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5ab4496e dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x607c5de8 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6162bb45 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x67d7fd9a dvb_frontend_resume +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 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8995d73f dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x89adaff5 dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x92ec98cd dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9510a851 dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x98c936c0 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa10e976c dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa3cf02ee dvb_frontend_reinitialise +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 0xb8936447 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xbb3a9aeb dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xbbb47e50 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc3c77f8d dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd50f3102 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd68a099e timeval_usec_diff +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd9ac97af dvb_dmx_release +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 0xe6650028 dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf13ca57e dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf23a08e3 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-frontends/a8293 0x3fa609c6 a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0x7165e0d0 af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9033 0x1d13ec8e af9033_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x8d797af3 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x0b8cbe09 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x173fe316 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x6402b10a au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x917edb27 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x9b430a49 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xae00f009 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xb6a80f0a au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xe9954b84 au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xf66cb126 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x043b1aa1 au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0x4caa6ec6 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0xd81c0b73 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0x449a332f cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0x9c64b69d cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x1e9a9937 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xe904a90c cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0x4aea1723 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x6c9cd955 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x9ea484e0 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0x8591bdfb cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x062b4a14 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x66b5ad74 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x7e1613be dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xad5690b3 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xefa2eef0 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x165c89c6 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x236caf03 dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x2927437a dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x3039b903 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x30f4bde1 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x66932491 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x6caa0bda dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x8a8f19b5 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x8c45a9c6 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x9e82fa31 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xc8e98d68 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xca0271f3 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd0a6a99f dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xdead5243 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xf5741a69 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x8a3fc675 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x4b5f7d1b dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x55d8a7fe dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x6d976492 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x8051eba1 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xc855a6b5 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xf085d30a dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x1495eb66 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x82df1197 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xd6c87411 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xeec23b5b dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x1757938b dib7000pc_detection +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x232221a5 dib7090_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x26ac92ce dib7000p_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x28c7d639 dib7090_slave_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x2b91a1d3 dib7000p_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x2e48f219 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x4a186e12 dib7000p_set_agc1_min +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x5c9a5e7f dib7000p_update_pll +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x6d00bfba dib7090_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x86610d4b dib7000p_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xa5cbe226 dib7000p_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xb56889a3 dib7090_get_adc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xc1b6bc29 dib7000p_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xc7a39e96 dib7000p_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xd1e32c61 dib7000p_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xe2a167e3 dib7000p_get_agc_values +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x0d15bf76 dib8000_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x23023b44 dib8000_remove_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x307e75c8 dib8096p_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x3946f213 dib8000_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x3cce5901 dib8000_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x467d9945 dib8000_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x5727802a dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x5bfbe4f0 dib8000_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x5c4b1c9e dib8000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x740fe71f dib8000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x75a41abc dib8000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x9501eefd dib8000_update_pll +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xa8b8d5b0 dib8096p_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xbac19cb5 dib8000_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xc61e9c8e dib8090p_get_dc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xc91aeac9 dib8000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xd0f763bf dib8000_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xea64a7be dib8000_pwm_agc_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xfc6f94e1 dib8000_get_adc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x025e5018 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x2b52e6ce dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x6308d4a6 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x76e5eec7 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x7cb0d76f dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x26be49c9 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x4fe39a19 drxd_config_i2c +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0xe20b8e56 drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0x194314aa ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0xf8482e4e dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0xbd865903 ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x0000c265 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x6658cf88 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0xf5ae1eac isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/it913x-fe 0x7247cecb it913x_fe_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0x52917df1 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0xbd569d9f ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0xfcd8f6bf l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0xc79c29b7 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0x5c8a3f5c lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0xcad4f563 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x5c0a36cf lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x3504c68d lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x84c4c78c lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0x4bd57b76 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0x4c68cafd m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0xfb45c142 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0x0ffd0bdb mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0xc6e9009b mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0x47106c69 mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x4408194a nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0x106aa924 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0xc572f5ad or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0xb874d5c2 or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2830 0x9e862dd0 rtl2830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2830 0xdd80bcca rtl2830_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2832 0xd34ba239 rtl2832_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0x73f820a0 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x62dd0b26 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x156e13a4 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xff2ad0d7 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0x8fc2b423 s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x21f0a1c1 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0xd235e7d2 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0x4aa91e09 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0xeea0fd79 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0x1a29082b stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x206aa4f9 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0x390ef03c stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0xc00e661b stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0xfd3cc99d stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0x88e47024 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x0b778c54 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0xc76001dc stv090x_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0xcdfd1e1b stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0x2964ddcb stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0xd37675b4 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0xed77ed8a tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0xcaf95671 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x0c96c16d tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xdcfa5279 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0x548db0bd tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0xa5670fff tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0x78e43c10 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0xd9063c4e tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0xe46f4be7 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x1209e527 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0x015a7093 ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0x80388366 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0xbd8035c8 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0x251a6f9c ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0x3ceae149 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0xa2c93a06 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0xc8c0c37c zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x039011fe flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x8a00f1fa flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x8ce7465b flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xae752e4d flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xb11a7270 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xb150d655 flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xd4008697 flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x084f6d54 bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x28faf189 bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x3d2b5426 bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x5ef92cbf bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x223a22f8 bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8058cfc9 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 0xeb7b335e bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x171f1223 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x1d3067d5 dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x1f02f96f dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x2de533ad rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x2f29bafd write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x64430b46 dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x8bbac1ea read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xb09eb820 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xb6eda792 dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x8a12c84b dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x1dbecd4e cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x7ac117f5 cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x984fac2b cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xd628c7cc cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xdd7345a6 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x4e694697 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x565f596a cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x58418e12 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x7b6dae10 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x836577d3 cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xa318f208 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x668bac44 vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xd9034e72 vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x6855920f cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x91facf8f cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xae2740ad cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xb55304ad cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x1ca467b5 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x40fcbdb4 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x6e94613f cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x8e9ec126 cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x95b35e21 cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xe40304e6 cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x00752cd8 cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x15e636e2 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x15ea6584 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2beb1cd3 cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x33924278 cx88_risc_stopper +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3d62a7b1 cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x402b5415 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5e8c112a cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x701083ef cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x70ce773c cx88_free_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x82a639ea cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x900d2497 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa2d99445 cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb0f015b3 cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb259bae3 cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xbe39711b cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc0398037 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc203001e cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd402c089 cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xdcf86da6 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe2503675 cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe6f5bb38 cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x0caa3d46 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x104c93fe ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x2d675e6a ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x32c2d63b ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x46a73cd7 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x4f09e3d2 ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5c662d9c ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x7629c249 ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x8459fe0d ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x9b0febd5 ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x9cce493a ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xa1c25cd3 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xd5ef1e86 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xd603fb4d ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xddc42491 ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe977cf67 ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf7ffcbd2 ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x08373556 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x25ea96b5 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x316f1e43 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x593bda0b saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x69c2162f saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x73039031 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x8aefcbb1 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x9c7ef673 saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x9eeca4e1 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xa3829c77 saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xa5b9b980 saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xd03effab saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xe07f139b saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x639e0bc9 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 0x2bb1d614 soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x3d095592 soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x45b98f80 soc_camera_lock +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x4a68dc32 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x4c0251b6 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x64bb5e9c soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xd3cf6ba1 soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xd588e975 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xe7478db7 soc_camera_unlock +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 0x5f3e3558 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xa9546115 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xfe2c3a07 soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x122379a5 soc_camera_client_scale +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x218bee5f soc_camera_client_s_crop +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0xcbb1577c soc_camera_calc_client_output +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0xceb1417a soc_camera_client_g_rect +EXPORT_SYMBOL drivers/media/radio/tea575x 0x0ed452ef snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x4b199957 snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x58115210 snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0xb1fbcf3b snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x137c5e83 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x4a4499fc lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x56710213 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x5f701bf1 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xbec864db lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xd46c8e7d lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xda721291 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xf37df42c lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/rc-core 0x076cbd9d ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0xd478d9a9 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/tuners/e4000 0x9d6ff091 e4000_attach +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x24f921e6 fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0x31700cdf fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x0493eb7f fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x6a76861b fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x742907f1 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc2580 0x79bb0ce9 fc2580_attach +EXPORT_SYMBOL drivers/media/tuners/max2165 0xc267b78c max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x5dd7b427 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x0a58bb88 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0x211bd3cc mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0xb0a65d2e mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0xd96d5c0d mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0x5d497eb8 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18212 0x36b6a4de tda18212_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0x6be33f07 tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tua9001 0x993e0fab tua9001_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 0x82ca67ff xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/tuner_it913x 0x4fa06c32 it913x_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x98da4cb8 xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0xf16161d8 xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x889e7f22 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0xe391eb00 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x368898db dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x623ca49c dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x9e740194 dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xaaaee6cb dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xd001469b dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xd02191b5 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xdae05114 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xf20ef584 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xfd5f38bf dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x180d9321 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x4e959d71 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x55306bde dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x6cb00b3f dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xbad7881d usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xcf08c8c4 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xde0d93d2 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x5dcdc65a 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 0x2306ac41 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x379c133a dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x61304a8d dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x8a6a10f0 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x90405996 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x9d49dd17 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x9e92a6df dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xa1127c78 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 0xc99064d2 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xeed18fca dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xfbaf9b29 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x10e7acbe em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x31681c6a em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x2f5acab7 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x388c4a37 gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x6eb0b18e gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x84659a25 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xdc43b024 gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xe846c007 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x15d038db tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x59b4069a tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x8d56ae6b tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x55f95262 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x7e3e53a8 ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x42c8e001 v4l2_ctrl_next +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x4adaf0f3 v4l2_ctrl_query_menu_valid_items +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x53c9394f v4l2_ctrl_query_menu +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x5f96a661 v4l2_ctrl_check +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x322ee997 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 0x6bda25a1 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x7af4a74e v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x357164cd videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x473e08b8 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x9a9f817d videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x9efb218c videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xca8f6244 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xf53b3f3a videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x0fc9db8e vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0472a6ad v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x08febcf5 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0b87853e v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x11164b30 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x140e371b v4l2_of_get_remote_port_parent +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16850ea8 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x17f52051 v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1a3e48e3 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1af60c56 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b8c38bc video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1beb0d5a v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1e808b3f v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1f7fa13b v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1fe60fa5 v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2085005c video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x23b052d2 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x23d745b3 v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x29527817 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2ef0a9aa v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2fb44262 v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3950228e v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3969ea5a v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3aed0cd0 video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3db7f213 v4l2_of_get_remote_port +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3dc1f906 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4a56f8c1 v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x50d8594d v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x521c8135 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x534346bd v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5d15304b v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5da4faf9 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6ef5ec43 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7c70701e v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7cd04882 v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7f923f2a v4l2_of_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x87d7d93f v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x881fbb0d v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x925b756b v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9a4cf779 v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaa2dd0c5 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb90cbedf v4l2_of_get_next_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb9750942 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbac4a225 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbbd47f9f v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbe8839d5 __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc12cf8f8 v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc3342062 video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc4f2b5c5 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc67e0b01 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc697a7f6 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc8545ed4 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcd276388 v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcf2363c8 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcf23cea9 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd172a865 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd2f2e5d3 video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd8575102 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdc273f8b v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdcaf5a32 v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe3bc318b v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe6fce6f2 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe936dbe3 v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe95851f5 v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xeba581b9 v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xed4c19fa video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xef61b2e5 v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xef6eb0d1 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf203e804 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf2ca0a3b v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf31c2158 v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3a62db0 v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf77103a1 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfcabd891 v4l2_clk_get +EXPORT_SYMBOL drivers/memstick/core/memstick 0x01046231 memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x130080dd memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x14599ebf memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x23430817 memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x357b0dc5 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x44492cfe memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4b72d807 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0x58477e49 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x9ba65fcb memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0xaceac9ee memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdc07e67e memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xefe6cf29 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xf3a247dd memstick_remove_host +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1b16050a mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x255b9f1d mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2f7fd449 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x30cbbc72 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4741f038 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x601ecf08 mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x616cdb69 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x63c01541 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x660746a4 mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x69deffa4 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x80c86baa mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x841072ac mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8637e7fb mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8a2d2d5f mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x994af36c mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb067a54a mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb219b356 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb39ac12b mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb5cc8939 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb9bbbbd8 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xbabc1e2c 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 0xd1078d73 mpt_clear_taskmgmt_in_progress_flag +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 0xe82a2495 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xea1e647b mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xeb77d123 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xeefc7f20 mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xfcebf92e mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x07b5903d mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0e409aa8 mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x14b59486 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1b272d52 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1d1c336c mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x22f97553 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2edd0a22 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3960edd5 mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3b498886 mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x42625206 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x45df2667 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x579537ca mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5cd1f996 mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5d53682c mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x681e4f57 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6942bab5 mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x787c0b42 mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa54f0063 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb7be819a mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc2bc374c mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd17cb9a5 mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd3469d0e mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd7c7f012 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe4b0c12c mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfcda4ebb mptscsih_io_done +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x02b29533 i2o_cntxt_list_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x0deb205c i2o_cntxt_list_get_ptr +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x0e99f26d i2o_driver_notify_controller_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x1ce609fd i2o_status_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x2a843bef i2o_dump_message +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x31d2f9cf i2o_msg_post_wait_mem +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x333323d0 i2o_exec_lct_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x3ae576b6 i2o_find_iop +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x41dad95c i2o_parm_field_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x450fcd17 i2o_device_claim_release +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x4af4e29c i2o_cntxt_list_add +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x620b6ccd i2o_event_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x6ac46be1 i2o_driver_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x72e641cb i2o_cntxt_list_remove +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x7c75035f i2o_msg_get_wait +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xa2325f1f i2o_parm_issue +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xa9c6a032 i2o_parm_table_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xb4c00dcf i2o_controllers +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xba765c28 i2o_driver_notify_device_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xca13eeb0 i2o_iop_find_device +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xdf92eb8a i2o_driver_unregister +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xeda5a613 i2o_device_claim +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xf099e4ea i2o_driver_notify_controller_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xfbd71f8c i2o_driver_notify_device_remove_all +EXPORT_SYMBOL drivers/mfd/cros_ec 0x2851100d cros_ec_register +EXPORT_SYMBOL drivers/mfd/cros_ec 0x835f49a2 cros_ec_prepare_tx +EXPORT_SYMBOL drivers/mfd/cros_ec 0xa66ea3bc cros_ec_remove +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x82df10f8 pasic3_write_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xe262c9a6 pasic3_read_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x15107638 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x2f22b760 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x36abe7ae mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x3e04ecf0 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x420b78ba mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x516c07c3 mc13xxx_irq_ack +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x5ddf20d7 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb3e33e08 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb89f6cb3 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xc0b5a293 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xcc33a780 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xf7dd47b8 mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xf920bc14 mc13xxx_irq_request_nounmask +EXPORT_SYMBOL drivers/mfd/tps6105x 0x27d76492 tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x59757df2 tps6105x_get +EXPORT_SYMBOL drivers/mfd/tps6105x 0x98dab975 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/misc/ad525x_dpot 0x61e7e53a ad_dpot_probe +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xac810c03 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0xe54b1002 altera_init +EXPORT_SYMBOL drivers/misc/atmel-ssc 0x8f32230f ssc_free +EXPORT_SYMBOL drivers/misc/atmel-ssc 0xa7a145bf ssc_request +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x0e9755b9 pwm_channel_free +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x5a8b82f9 pwm_channel_handler +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x5d5c2951 pwm_clk_free +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x6a5e1f70 pwm_channel_alloc +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x73330c97 pwm_clk_alloc +EXPORT_SYMBOL drivers/misc/atmel_pwm 0xeb7f2c6f __pwm_channel_onoff +EXPORT_SYMBOL drivers/misc/c2port/core 0xf2571c34 c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0xf3327565 c2port_device_unregister +EXPORT_SYMBOL drivers/misc/ioc4 0x956d5b67 ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0xe2ffdc34 ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x0844c15e tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x2fe69c9c tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x46fe0a46 tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x8b09f9ca tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x9618aab4 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xa8c2ec46 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0xafd8272e tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xc91e9e8d tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0xcbe25f18 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xe5e9deeb tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xebe5bee2 tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xef956353 tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0xfea6fe3d tifm_map_sg +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0xac34ad62 mmc_spi_get_pdata +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0xf3274f8a mmc_spi_put_pdata +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x00837c85 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x838fbfee cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff753ab6 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x3d7da8c2 register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x4b483459 unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x871ba102 map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xccfc2403 do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0xd2ede8b9 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x35c2bb0e lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x9474f682 simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x1ddbe2eb mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/mtd 0x25cb7d7e mtd_concat_create +EXPORT_SYMBOL drivers/mtd/nand/denali 0x50c87aef denali_init +EXPORT_SYMBOL drivers/mtd/nand/denali 0x802a9f68 denali_remove +EXPORT_SYMBOL drivers/mtd/nand/nand 0x1853c7cb nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x88cb66c2 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0xb9fe971b nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0xd50afd45 nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0xdca9d97e nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0xf199d95e nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x660b913c nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xb2e74236 nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xbec583fd nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x82bae25e nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xf17daa8c nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x57a31e57 nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x5be96a19 onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xa31e2675 onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xf30a2251 onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xf6482c1c flexonenand_region +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x3970c305 alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x39dfbdd7 arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x3b215664 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x57f2090e arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x5fbb15d3 arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x73dd5baa arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xa339cff3 arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xc52fa168 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xd3e22137 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xfaa440b8 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x0d938ffc com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x9c555298 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xf273899d com20020_found +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x0cb1adb0 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x2e0cb621 ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x5f187d47 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x8341e943 NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xb726707e ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xc4e95368 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xd241f070 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xdf8a2bf7 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xe954370f ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xf0501b40 ei_open +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0xe152af45 cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x082aa25f cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x11942cb6 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x26a03a48 cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x30fa11bd t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x3440b679 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x49a7e655 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x5c14c31b cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x75acfe30 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x84048bd1 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x88361b5e t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xc28ad874 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe5c3e285 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe6deb7e1 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xea63204b t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xf1721193 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xfbc01f08 dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x057bf7fc cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x09d5687c cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x115ce51d cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1278988e cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x16eac327 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x18e31e1e cxgb4_disable_db_coalescing +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x33b96c21 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3826f0d6 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3ac1bc73 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3b92bc89 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3e492533 cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x46cf219f cxgb4_select_ntuple +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 0x6c451090 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x717d4159 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7b315d9c cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7c13d7c0 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x834481fa cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x86990b1d cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xaf575270 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb1e5c693 cxgb4_enable_db_coalescing +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb22988bb cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb28edf3d cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb3612ba6 cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb40ea77f cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc96d0576 cxgb4_create_server6 +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 0xece14521 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x0461f6dd vnic_dev_get_pdev +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 0x9196d804 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xace7b587 vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xd84e5369 enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x35847593 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 0xdf320bc6 be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0450102e mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x19957d3d mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x231a5ff0 mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3997746c mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7174b113 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x76222771 mlx4_set_stats_bitmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x76cf5bea mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7973653d mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x82d43a6c mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8373c7b9 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8822b561 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x88af12ef mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8c2f4e21 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x91a362c6 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9b2fa0b8 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9bccf8b7 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa7f71633 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa8e28144 mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb33106cc mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb3e9f683 mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbbde65eb mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc5c7bbec mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd0d656bc mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe2e975f4 mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf44f7b71 mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf55425b0 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x038a4019 mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0e37ac94 mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x141f16cd mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3bb58c90 mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3cd059ee mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4286137b mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4eeed405 mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5967f770 mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x59e6096e mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5ce59bd2 mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6907bc70 mlx5_dev_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x702d82ed mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x77cf512d mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7ed61b60 mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x854399ce mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x90c40431 mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x94a7faf3 mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x98350524 mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9b6c33ad mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbd6b6c45 mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbd80aafa mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd00b0020 mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd2bb4c76 mlx5_dev_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd568b369 mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe9dc8ccc mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf691c94b mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfaa70738 mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x3c73091e hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x52db51ab hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x6945cefa hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x85cc306e hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xf24a9cbb hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x0cf06447 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x2cdb9641 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x50a96a50 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x540e1bba irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x9c8930ac sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xa92924e8 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xb140140e sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xbe0920e4 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xc56e2dc8 sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xe6cb7aa0 sirdev_raw_write +EXPORT_SYMBOL drivers/net/mdio 0x22bce513 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/mdio 0x43e4defc mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0x7577f992 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0xa1a29548 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0xb34a7575 mdio45_ethtool_spauseparam_an +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/ppp/pppox 0x28bd89d0 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0xb2f4690a pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xf92bb93a register_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0x56591fb0 sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x04082bc7 team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0x0d202898 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0x1714ba48 team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0x3583cf0e team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0x4df782ef team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0x5d84fa49 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0x866a5b58 team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0xd25a256d team_options_register +EXPORT_SYMBOL drivers/net/usb/usbnet 0x56b42b76 usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0x607d7d9e usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/usb/usbnet 0xaa3b8457 usbnet_link_change +EXPORT_SYMBOL drivers/net/wan/hdlc 0x026d15f6 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x117a1b6c register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x2a26a428 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x39e6d4df hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x4951dbdb detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x635b16bf attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xb350bafb hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0xd6fb66c1 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0xd71e7fa3 unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0xdae4c0b0 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0xf6924cc9 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x96603b9e i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x045894b4 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x441b63bc ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4e2481d5 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x53358ce3 ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x8b2abca5 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xb846ed57 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xc8c9238a ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xca59fd47 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xcf540cf6 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xf1922362 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xf464ba2f ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xf95161df dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfa1ed14b ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x45255664 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x4d187d3c ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x7ba9f608 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8246be6c ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x86d54e1e ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x895f9dc2 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xaf096710 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb6dee052 ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xd84c95fa ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x0199ec46 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x27cf1694 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x2b639499 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x3711db0c ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4c6ddcb4 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4e1380ee ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x56674dfa ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x6f7b8994 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x8ec43ca1 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xbee07f4c ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xc12b18bd ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xc1d2afe2 ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xd8542408 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xf9e95701 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x06ed94e3 ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x974fbdb9 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xbb3df47c 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 0xd6d11572 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x03d50336 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x058865ce ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0955063d ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1189f573 ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1314b048 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x155778b9 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x17774ffa ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1bfc6617 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1c74387d ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x206e2ca0 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2592b367 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x28f62b86 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x293ce247 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2c7a5e43 ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3094e574 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x399a7aa8 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3a33cbf9 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3cd54056 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4464eb99 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x448a65a8 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4828387e ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4aac842b ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4bbf98bd ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4d1c65d6 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4e90992e ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x51051aeb ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x515f6bd4 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x569ac709 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5805f215 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x587030bf ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x596ad7b6 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5b1ae5f3 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x609547ad ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x650a379d ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6670e449 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x675ccd91 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x67614a99 ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6941417d ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x69e06180 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6a94e340 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6aa0ed49 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6c2c41bf ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6ecea334 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6f5e7d63 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x71915f18 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x72726d4a ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x788964c7 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7a32be7b ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7aabfcf2 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7bebdf06 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7df86200 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x80d40d28 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8580e664 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8789a0a0 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8a1d5448 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8c571554 ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8c6e8fd7 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x90cbb452 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9296e3a4 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9562b7e7 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9b4538cc ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9c3b2c17 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9c521d4e ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9f7a983e ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa941df64 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xadb16f99 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xae3169f4 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb1a72c90 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb4f5ed8c ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb95c55b5 ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbcc6e481 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc3c443f8 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc65e167c ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc76bb3c7 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc9873e5c ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc9cb6792 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcac845fe ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcdc93691 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcef65a87 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd0d98de4 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd0f0c95f ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd2ddf59e ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd39b85e6 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd6e0b96c ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xda9f9a60 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe1275317 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe3afb8e7 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe82178f6 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xec5efd4a ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xec961830 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf08ff530 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf23189f1 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf5ad5892 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf61746bf ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf8cc03be ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfdf46349 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfe083100 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xff99c8f3 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/atmel 0x0b52cc12 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0x8b5b7f0d init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xd01696e4 atmel_open +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x0f5eaeb0 brcmf_sdio_probe +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x4471f66b brcmf_sdio_remove +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x2232ca87 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x24e37f4a brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x2dc227f8 brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x396b0d0a brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x622f97fa brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x682a1103 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7b4b147e brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x8db208d0 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xb017e837 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xc748ee5c brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xdf42abbc brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xe5f15f78 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf57d49c2 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf945b2fa brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x07d6d836 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0b85de9c hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1720bc25 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1723ac32 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x25597dd2 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x32d72979 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x335048d2 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3cc8287d hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4c21f139 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x55f82337 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x58bbc76b hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5f9234be hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7c64ac29 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x902562ef hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x93aaf2bb hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa737eb47 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2a945e0 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb3d3ff7f hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xbbebaf7f hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xbda3799a hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xbe1c61f6 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xbf5ea59c hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xcfec6279 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe3073c5c hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe807f0b3 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf2e042af hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xfa4de659 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x02788e71 libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x0fa21099 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x232ea41a libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x271458d5 libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x30f7e54d libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x40cdd78e alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x51bb60f3 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x53c1fe58 free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x65ddbc1e libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x686a9735 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6c1f3e96 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6d212291 libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x7341c94f libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x7b91c66e libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x7d34d035 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x9c2cad88 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xacafca4a libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xdad41822 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe5a44028 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf1239ba3 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf1f9e5a1 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x014ad4bd il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x01d505eb il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x053f62e5 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x090b3f5a il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x09317df2 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0a968d60 il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0e28c0a4 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0e5f85db il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x19abeceb il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1ba97c9e il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1c397dca il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1d3a7f58 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1e59b323 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1f33444f il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2500997b il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2543c1c3 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x280dfd9c il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2818b33f il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2971810c il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2ad65e05 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2c03316f il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2f26969f il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x30cf3fa6 il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x352c1152 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x35d34ed5 il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x36764532 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x394907ca il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3a4dd477 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3c13451c il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4681b9c9 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4870a4d4 il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4b9e4298 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4d45001a il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4d6c91ea il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5104486c il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x576f3883 il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5e12629e il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5f64881f il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x61010836 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x611ac61c il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x62941630 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6747f6e4 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6a645978 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6cd6db97 il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6d3380df il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x70d8ef83 il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x73c8ddae il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x75e02c01 il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7609ba3f il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7794104d il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7acd55cd il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x82c3ac90 il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x83876a8c il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8437c661 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8558435e il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x86d896fc il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x881f41d7 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8b8e3615 il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x94d5c3c7 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x98132d08 il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9821d888 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x99de3805 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa109d521 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa1f9fbe1 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa2c9f5f5 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa5af0f3f il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa85cc3c1 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xaa03e34e il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xaa50a867 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xafd92d2a il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb1b8b21b il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb35f27c9 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb3c871ec il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbb953323 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbdab23b8 _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc5dec823 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc7e26de8 il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc8307f72 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xca707c1d il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcbc6fa2b il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd6002742 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd7252274 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd810c29a il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd9ff3cdc il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdbe2e50a il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdef5b39f il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe468acd5 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe5707c56 il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe7898e42 il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe7d01fac _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe7f7efac il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xec893d3d il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeebe4f1c il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf31c8dfd il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf9c9dfec il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfd85c3c5 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfef8c170 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x084b4719 __tracepoint_iwlwifi_warn +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 0x5c04aae1 __tracepoint_iwlwifi_err +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x7fd93860 __tracepoint_iwlwifi_crit +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x8dcc4441 __tracepoint_iwlwifi_info +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 0xcf2b88e0 __tracepoint_iwlwifi_dbg +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/iwlwifi/iwlwifi 0xf161b336 __tracepoint_iwlwifi_dev_rx +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xf5eccf84 __tracepoint_iwlwifi_dev_tx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x17b72c2c __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x26db5b51 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x2df0996e free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x40cba69c orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x620802dc orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x6624c28d orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x6de0b580 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x962136c6 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x9825affd orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x9ff1cac9 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb74048a0 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc6f879a3 orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xce5fdec1 __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd85b6f16 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xe2317542 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xef64033b hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xf5642b95 orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/btcoexist/btcoexist 0x5d0b3e75 rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0343426b rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x08c03341 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0dcb814b rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x17574c44 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2b11aabc rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2c453f13 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2ef23aed rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2f6ac18e _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x353f7ef7 _rtl92c_phy_dbm_to_txpwr_Idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x39a55b7d rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x406c7c57 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4c231f76 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5007ee79 _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5027fc16 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6177b23c rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x61e42ee6 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x633d0317 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6586989e _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6c43b964 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7378951b _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x83954d61 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x84c02444 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x85109193 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9cba0f86 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa23af6da rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa90a4b02 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xaa73d923 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xaafd72ec _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb1617cbc 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 0xbd88aebe rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc7dc8eb2 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc9c305e7 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd7f0f616 rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe614dda0 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe9fb4368 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xed0e3096 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xee968a38 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xefc949ba rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xefcd881c _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf4ef52ce rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfcb6af62 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x73c233c9 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0xcf923aaa rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x098943b1 rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x2805882e rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xa756dab0 rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xb6d0843f rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0a8d1277 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0ad5a262 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0ca06407 rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x1b925b17 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x29ecef25 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2fe87239 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6267c3cf rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6504c963 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6d07565d rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7d951793 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x84e8e11c rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa44eb42f rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb51f2aec rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xbc06f14a rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc3855b69 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc6ecfee3 rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc9ef7eb7 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd4b6c32b rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd5e90914 rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xed39b5b1 rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x1b2c103e wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x9fe5d33a wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xafe3730e wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xbdf57bf8 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/nfc/microread/microread 0x276c276a microread_probe +EXPORT_SYMBOL drivers/nfc/microread/microread 0xced516a1 microread_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xb145633e pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xd493aa5e pn544_hci_probe +EXPORT_SYMBOL drivers/parport/parport 0x012cf49d parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x08939018 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x17cfba6e parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x1b4065e4 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x1d65dc08 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x246fd530 parport_write +EXPORT_SYMBOL drivers/parport/parport 0x31a859b1 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x31f3d553 parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x3426a8a4 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x381c629c parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x437a616d parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x50f5dde2 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x562bffc4 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x6193b841 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x623a4795 parport_read +EXPORT_SYMBOL drivers/parport/parport 0x64fa2a4b parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0x75209852 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x7b7ca986 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x82c59f3d parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x82f58f6f parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x84d03683 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x8e0493d7 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x95e9b09b parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x9d2b1385 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0xa5b98357 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0xc7966ddb parport_release +EXPORT_SYMBOL drivers/parport/parport 0xcac01396 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0xd51068bb parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0xd60eab1a parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0xedaba916 parport_register_device +EXPORT_SYMBOL drivers/pps/pps_core 0x0d7efb8b pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0x23650308 pps_unregister_source +EXPORT_SYMBOL drivers/pps/pps_core 0x2981ce58 pps_register_source +EXPORT_SYMBOL drivers/pps/pps_core 0x9ef64b17 pps_event +EXPORT_SYMBOL drivers/ptp/ptp 0x102fe5e0 ptp_clock_unregister +EXPORT_SYMBOL drivers/ptp/ptp 0x15266474 ptp_clock_register +EXPORT_SYMBOL drivers/ptp/ptp 0x81cdf0c9 ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp 0xb6535ab3 ptp_clock_event +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x117efdba rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x1f4f6e62 rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x4025a569 rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x48ed963a rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x57cfec59 rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xd3b36ca8 rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xd78ff3b9 rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xe32dc2e6 rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xf6634f8d rproc_report_crash +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x0b22e06d fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x272bf9d4 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x502e6575 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x61d41724 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x73f5bb56 fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x84201e5e fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x8478fab3 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x91b5aad2 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xd3e7d1e1 fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xe3b4ded0 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xeffafd11 fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xf1aa1a46 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x09ce0bc7 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x11d01941 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1311949e fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1a78c5a5 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1e33302a fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x23d01ba0 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x25d62d99 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x278cb5c5 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2d317860 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4ae88b83 fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4ba1bfcc fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4f8d26b2 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x536a8dc6 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5445407b fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x57d74977 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5b16fcb5 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5ed2943b fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6c4a04c8 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x77b3dcc8 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7977d7d3 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x85c42cdb fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x86663420 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8bb69cee fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8c9dae7d fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8e90421c fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x90202bd2 fc_change_queue_type +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x93b5ad59 fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x95ddef3f fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa0b327cf fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa3ce4c26 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa7cace86 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa85ed187 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa90d659e fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xac61a426 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xac86e592 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb1378ab9 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb65eff93 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbb3ddd6e fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc7990633 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc967e443 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcf404d03 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcf81ca17 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd618e94d fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe2077d8a fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xeb0da77a fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xeb8f8f36 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf1484cfb fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf1d3a0c8 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf315dc60 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf66335ef fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf8246da1 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfa31786e fc_change_queue_depth +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x1f73a0d7 sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x5e9a6629 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xbe26eee5 sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xf46a2d07 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 0xdad56d39 mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x00a4ffd8 osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x126b0483 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x13f6c2ab osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x17d1f763 osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x27496800 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x291faf2a osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5e579119 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x65b0a6c7 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x70bc3dee osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x72a3dc8c osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x79e8e343 osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8ca079a3 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x907337bc osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9780cfc3 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9934e577 osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa93b4936 osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xaf681029 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xba84cbd9 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc536e0d4 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc72f99b1 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc8680a7b osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcc6a3e3b osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcfcdd79b osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd228dc21 osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd3c406db osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd7f56123 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe032ead1 osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe1d57625 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe7f111fc osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe8dba796 osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe9051782 osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xeef20d36 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf1757033 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf2b8605d osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf424da46 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xfb40f6fb osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/osd 0x4845af8a osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x4b70300c osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0x55140992 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0xa1684f64 osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0xbf8bfd93 osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0xed99313c osduld_register_test +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x4385d160 qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x5052e023 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x524a7ba0 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x68186fc7 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x74f8ac16 qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x78086fa9 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x7d8e5738 qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x8be6874a qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x8d49aeb7 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x98dcf8a3 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xca93be04 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/raid_class 0x51cd6950 raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0x6c3edca0 raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0x7ac363be raid_component_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x18a29dbd fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x632c01a8 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7bcf9e36 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x8fb6f64a fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x921dfa3a fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x96641382 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x9a674231 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xd65b8e6a fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xde2129e0 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xebabb09e fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xebc4f0b2 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xf3044631 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xfbe614c4 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0652f3ff sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x06984f83 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x093828ab sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2b2fe842 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x32a24a6f sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3f555fa7 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4e97aba3 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6435974c sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x689996a2 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6f6499d3 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8075ea6b sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x814d7bbb sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8b49508f sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9575e7e9 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa1d10357 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa451845a scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xab954c0b sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc21d409f sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xcb64488a sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xce12f61b sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd65e1371 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xda894416 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xde27072e sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe152554d sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe5add0ba sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xed3428af sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf4d90a86 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf592d2be scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x4894be56 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x9316d81b spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xbfea1464 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xc653a585 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xccc4be70 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x31b6e0a8 srp_rport_get +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x4354cf16 srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x4b0245ab srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xf1c13fe5 srp_rport_put +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x016a63d9 ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x02a94c44 ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x4e74bb93 ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x059a4039 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x100168ee ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x149911e0 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x181bda4b ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0x32dae7a5 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x36310319 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x41ac656d ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x4907041a ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0x55ff55a9 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x672fcc81 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x73806c86 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x7e6c815b __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x83c00676 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x83d61744 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x95be0358 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0x98bdb390 ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xb82abf45 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xc079bc0a ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0xd44dcb45 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xd7377472 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0xdb1081c7 ssb_bus_unregister +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x4ffabf69 fwtty_port_put +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xfe0509cc fwtty_port_get +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xad4024f6 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xddbdd8be adt7316_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x7fa2ee02 ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xcbf5532f ade7854_probe +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0264d470 lnet_extract_iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0363b57a lnet_copy_iov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0bce7eef lnet_counters_get +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0e5538c4 lnet_net2ni +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0f8bda54 lnet_notify +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x10932916 lnet_unregister_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1366b7ac LNetSetLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x18d3adc3 lnet_extract_kiov +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 0x1d860d77 lnet_register_lnd +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 0x22680858 lnet_finalize +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x2aa9953d lnet_cpt_of_nid +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x2ac93e90 lnet_connect_console_error +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 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 0x55ab9ea7 lnet_copy_kiov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5811a721 LNetInit +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x58a1ca89 LNetMDUnlink +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5f31559e lnet_copy_iov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5fee352c lnet_acceptor_timeout +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x61352f3d lnet_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x6192c336 lnet_set_ip_niaddr +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x61f784b2 LNetClearLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x6491eee5 lnet_set_reply_msg_len +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x64cdea3a LNetCtl +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x6f7be171 LNetEQGet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x71168e1e lnet_create_reply_msg +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 0x822367ca lnet_parse +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x854ab844 LNetEQWait +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x8a3064f2 LNetSetAsync +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9de986d3 LNetEQAlloc +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa3d61f8d lnet_iov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa8c2760b LNetFini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xaa414970 LNetMEUnlink +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xaa9b477e LNetMDBind +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb75f7953 LNetEQFree +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xba5566d2 lnet_acceptor_port +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xbb85bb71 lnet_kiov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xbf0760a2 LNetMEAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf1b316bf LNetSnprintHandle +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf5f22206 lnet_copy_kiov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf81177e8 the_lnet +EXPORT_SYMBOL drivers/staging/lustre/lnet/selftest/lnet_selftest 0x078db139 lstcon_ioctl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x163d94b1 seq_client_get_seq +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x1c4bb5f9 LU_OBF_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x375e6f8d LUSTRE_BFL_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x537bf728 seq_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x61b4d654 seq_client_alloc_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x62debc04 client_fid_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x82d05722 seq_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x901d0d5b 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 0xe7d20ed5 client_fid_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xecee2727 LUSTRE_SEQ_ZERO_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x01818c2a fld_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x167526bc fld_client_del_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x23621513 fld_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x3db2c47a fld_client_add_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x476bf39c fld_client_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x4f7aeb2b fld_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x9c47176b fld_client_proc_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 0x03387ca6 cfs_curproc_groups_nr +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x03dea4d3 cfs_race_waitq +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x04d3ce6a lbug_with_loc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x05b40d28 libcfs_sock_setbuf +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 0x0a14b775 cfs_percpt_lock_alloc +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 0x0e4820ab cfs_percpt_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0f49dd81 upcall_cache_flush_all +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 0x10056e44 libcfs_sock_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x117c8a95 cfs_cpt_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x12426266 libcfs_run_lbug_upcall +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 0x1910d48b cfs_percpt_lock_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1a60d439 cfs_parse_nidlist +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1b148f8c cfs_crypto_hash_update_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1d5a3928 cfs_timer_done +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 0x297884f0 libcfs_sock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2a31663b upcall_cache_put_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2a582c5a cfs_hash_del_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2b1e0458 cfs_get_environ +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2dbe54b2 cfs_trimwhite +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x30986343 cfs_range_expr_parse +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 0x332c54f8 libcfs_sock_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x34f32dc9 cfs_hash_for_each_safe +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x361e82d4 cfs_firststr +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x36d5c2e9 libcfs_sock_accept +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 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 0x3ea730c0 cfs_gettok +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 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 0x41ab33a1 libcfs_ipif_free_enumeration +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 0x44f07cfc cfs_pause +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x47fdb4d1 cfs_timer_is_armed +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x48f163c6 libcfs_str2anynid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4a2f4e9f libcfs_sock_write +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 0x50794e7a libcfs_sock_listen +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 0x545c2435 upcall_cache_flush_idle +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x54fd9a71 cfs_percpt_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x55a037e8 upcall_cache_downcall +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 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 0x5d3be65a cfs_crypto_adler32_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5d73c3e3 cfs_expr_list_free_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5dce9e80 libcfs_lnd2str +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 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 0x66136d2d cfs_timer_arm +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 0x6b6fce89 cfs_hash_dual_bd_lookup_locked +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 0x6dfa9ea1 cfs_crypto_adler32_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6e6af71c current_is_32bit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6f928e1b libcfs_debug_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x71f662a3 libcfs_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x738e5af5 cfs_percpt_lock +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 0x752858fb cfs_cpt_table_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7565fbba cfs_hash_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x776b2e6b cfs_hash_debug_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7a3d49ae cfs_expr_list_print +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 0x7c7986cf waitq_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7d3b386c cfs_hash_rehash_cancel_locked +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 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 0x857aaea7 libcfs_register_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8840f591 cfs_block_allsigs +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 0x8e61d47b cfs_cpt_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8f12bb52 libcfs_log_goto +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8f45f10d cfs_init_timer +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x91504e8b libcfs_kmemory +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x925ced2d upcall_cache_cleanup +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 0x957f1d04 cfs_percpt_unlock +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 0x9ff950aa libcfs_kkuc_msg_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa2b68b2a cfs_array_alloc +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 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 0xa95153e4 libcfs_sock_getaddr +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9dc74e2 cfs_trace_copyin_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9eae690 cfs_str2mask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xaaf59b75 cfs_cpt_set_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xab887583 init_waitqueue_entry_current +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xad019238 cfs_str2num_check +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 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 0xbada117b cfs_cpt_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbb972619 proc_call_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbb9cb508 cfs_curproc_cap_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbd5d492e cfs_timer_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbf074d5b libcfs_sock_getbuf +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 0xc2911d96 cfs_expr_list_match +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 0xc3eb614e libcfs_ipif_query +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc47433a6 cfs_capable +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 0xcbab8493 schedule_timeout_and_set_state +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 0xcdbfd8b6 cfs_hash_debug_str +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 0xd2b128e0 upcall_cache_get_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd2daedbb libcfs_sock_abort_accept +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd3985935 upcall_cache_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd6a52be3 libcfs_printk +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd6f1fc60 cfs_strncasecmp +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 0xde7bdf2c upcall_cache_flush_one +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 0xdffc951d cfs_timer_disarm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe3bf6897 cfs_percpt_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe5daf741 libcfs_kkuc_group_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe6555032 libcfs_ipif_enumerate +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 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 0xeccafa5c cfs_cpt_online +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 0xedf3a25a cfs_timer_deadline +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf1f98ed4 cfs_hash_dual_bd_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf2c02048 cfs_cpt_bind +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf440bb38 libcfs_kkuc_group_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf4d96eb4 cfs_hash_for_each_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf5f64f4d cfs_hash_add_unique +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf8a8644b libcfs_id2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf8efb8c5 waitq_timedwait +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf94025d1 libcfs_str2lnd +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/libcfs/libcfs 0xff0f98a6 libcfs_debug_vmsg2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x4be586a4 ll_direct_rw_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xc3481a65 ll_iocontrol_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xc3abf8e4 ll_osscapa_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xcd3cde92 ll_iocontrol_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xdeff9c63 ll_stats_ops_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x08a84c53 lov_stripe_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x19c937b9 lov_device_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x7bf52e0c lov_lsm_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x7f0e8e35 lov_read_and_clear_async_rc +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xa203fced lov_stripe_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xcb6e5c6e lov_lsm_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x16657f64 lprocfs_counter_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x2e961b96 push_ctxt +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x7727fe0a pop_ctxt +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x80455b06 fsfilt_get_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x907fc183 fsfilt_register_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xa54a496d lprocfs_counter_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xb4a870f9 lprocfs_stats_alloc_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xb4f8ee63 lprocfs_read_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xc98ddacf lustre_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xd1f8863a obd_memory +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xd47d0236 fsfilt_unregister_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xe64f9ab3 fsfilt_put_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xeef7b605 l_dentry_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x14a47f31 it_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x9c22b84f it_open_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0xb57d8447 it_set_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0xf46a886f it_clear_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mgc/mgc 0xdc287f95 mgc_fsname2resid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0026fc78 lu_context_key_quiesce +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0096ef5a lustre_end_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x00b1a96a cl_io_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01665e34 class_parse_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01fc7d79 obd_export_evict_by_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0201ec35 lu_object_add_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x02eb1c54 cl_page_list_splice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x035852d0 lustre_swab_llog_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x049728b3 cl_vmpage_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x053753a1 dt_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x057f6d4b class_find_old_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05c33f3d cl_io_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x067b04be lu_device_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x06c8d906 cl_lock_closure_build +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07aa68bb lustre_swab_lustre_cfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07b949b8 cl_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x083942ff class_del_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x09227b09 lprocfs_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x094b7abc lu_dev_add_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x097b946e cl_object_attr_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x09b913c5 cl_lock_user_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0aa49b3f lprocfs_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b00b05d cl_lock_mutex_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0bbcfcdb llog_osd_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0cc2d9e0 cl_page_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ce8b27c class_search_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d342ac0 cl_2queue_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0f738e4a cl_2queue_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0fca9646 lu_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0fe91547 obdo_to_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10001f2f cl_req_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x101c2a19 cl_object_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10ab7bfa cl_io_prepare_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10c8731a dt_index_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11495519 lprocfs_write_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11ff9ff8 lprocfs_rd_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x123e5b5b dt_directory_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1298667f dt_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x12d29a3a class_conn2export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x13471b5f cl_env_unplant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x138df012 cl_object_attr_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1491dc30 lu_context_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1550ff71 llog_cat_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x15cb857c cl_lock_discard_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x163a1f3f lu_object_assign_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x17260880 obdo_cpy_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x174984f5 cl_lock_is_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x18f5ed5e lu_context_key_degister_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x196795ba lprocfs_alloc_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x19a82a6a capa_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x19d1fdae cl_page_is_owned +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1abce43b lprocfs_rd_conn_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ae7bcc0 dt_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1b548219 lustre_common_put_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1cc07abc obd_export_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1d561b5f __llog_ctxt_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1e15177e lprocfs_obd_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f527761 class_export_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f63e2ba obd_llog_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x204fc400 lprocfs_nid_stats_clear_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x208a40e1 lprocfs_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x20c758af dt_store_resolve +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x22169baa class_fail_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x221826f1 class_parse_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x22412df4 class_disconnect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2268e13c local_index_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x232adbd5 cl_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x23394bb9 cl_lock_extransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2341f495 cl_page_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2343ddc9 cl_env_nested_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x23ac817d cl_io_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x245f3d99 llog_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2473e0a9 lprocfs_clear_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x24ae4f4a dt_try_as_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x24e4127a llog_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2516d43d llog_copy_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x253eaa21 obd_exports_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2547efae lustre_uuid_to_peer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2691421f class_handle_hash_back +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2699a5b9 class_name2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x26a0490a cl_lock_user_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x26f52f8c cl_use_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x27106f4e obdo_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2741e626 cl_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x275cdc7a cl_env_reexit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x282399d9 cl_lock_modify +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x28873d77 llog_cat_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x289964b5 class_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x297cf5e0 class_handle2object +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2994efb4 lprocfs_rd_server_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x299cfc1b lprocfs_oh_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x29a9d8c8 cl_lock_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a3c284f class_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ae1cd79 kuc_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2c90c740 lu_env_refill_by_tags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2cc55f35 cl_page_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2cfff0dc cl_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2d9db17d cl_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ddd1366 lprocfs_add_simple +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2defbbb0 cl_io_lock_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2f988c23 cl_page_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x32ba7a38 dt_quota_slv_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x32d42940 lprocfs_rd_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x33167b4f class_manual_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x33c151e3 lu_buf_realloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x33ec01ce dt_txn_callback_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x34684dec cl_offset +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x34b282f2 cl_lock_descr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x34dbf893 lprocfs_alloc_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x358e2b6b lprocfs_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3690aba4 lu_dev_del_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x369c8db9 class_import_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x36b4893a lprocfs_free_per_client_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x373a0af7 dt_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x375a675a lprocfs_init_ops_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37a2ce29 llog_osd_put_cat_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37ed6e4b at_early_margin +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38578a78 class_conn2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38e3df51 lu_object_invariant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38fb0c90 class_match_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3943f03a lu_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x395b67c1 lu_kmem_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x396b3665 lustre_idmap_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x39b8d431 llog_exist +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3aaa577f lu_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b6f1995 cl_object_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3dcfd6ee llog_declare_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3deacdb1 cl_page_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3eab7bfe LU_BUF_NULL +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x400a718c cl_io_submit_rw +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x407962bb cl_lock_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x41517f36 llog_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x41577636 class_uuid2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x42036c61 lprocfs_rd_numrefs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x42ad8806 cl_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4349dec9 cl_page_list_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x444a6533 cl_lock_unhold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4467bf79 cl_lock_is_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44e41abb lustre_posix_acl_xattr_filter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x452f559a lu_buf_alloc +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 0x487fd8d1 capa_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x49435199 dt_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x494c34ef cl_page_own_try +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 0x4aaf142b cl_io_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ac58713 obd_connect_flags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4b6bc4e8 class_incref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4b7e187b llog_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4b800686 lprocfs_obd_rd_max_pages_per_rpc +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 0x4ce43d13 lu_context_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4cfce2f6 lu_device_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d13458b kuc_len +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d1b2b37 class_config_llog_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d7a3bac lprocfs_exp_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ed69340 llog_cat_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4fa7a99c llog_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4faffc25 lu_object_find_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4fb6d9b4 lu_context_key_register_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4fdbf924 class_disconnect_exports +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 0x51914aca local_oid_storage_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x51abe0cb llog_thread_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x53e243df cl_io_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5415d34f llog_declare_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54885f87 ldlm_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54dcef1b cl_page_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x558bec27 obd_ioctl_getdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x55f3464d lu_object_put_nocache +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x560d0d46 cl_page_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x564e9d44 init_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x566cd6f1 cl_page_list_move +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5704011a cl_page_list_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x570d09ae lustre_swab_lu_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5711a0ba class_new_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x58064b4d lu_env_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x582b013d dt_quota_glb_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x588677e8 cl_unuse_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a20d896 obd_memory_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ad92d6f capa_cpy +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b54b13c cl_lock_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b6bf915 cl_type_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bc022c5 lprocfs_dt_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5cd050c8 cl_lock_enclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d34ae0d cl_lock_mode_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d7fbece capa_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ddf511b class_unlink_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e7eae45 obdo_from_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ea9434b lprocfs_add_vars +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ed188a9 lprocfs_add_symlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ed9451c dt_declare_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5f770b53 cl_req_attr_set +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 0x610df2fe lustre_idmap_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x61498eff cl_lock_signal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x617a8e60 cl_lock_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6244a51f cl_2queue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x625e66d4 llog_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x626f9c56 cl_page_list_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6291c8fb llog_cat_cancel_records +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x62f2d992 cl_pages_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6313c2c4 lu_context_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631a518d mea_name2idx +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631fd7b9 lustre_ext_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6385c19c llog_cat_init_and_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63a35825 capa_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6530f84c lu_kmem_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6596b8fc class_disconnect_stale_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x65d7a236 lustre_register_client_fill_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x66c7c015 cl_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6715ceaa cl_page_list_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6721d942 dt_locate_at +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 0x677fd7f9 proc_lustre_root +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67878b7f cl_lock_weigh +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67977b42 lprocfs_remove_proc_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67a90622 la_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67dc223a lprocfs_remove +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x68135ae4 lprocfs_exp_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x68354422 cl_io_iter_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x687f3ec0 llog_cat_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6890d175 lustre_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6957cb20 lprocfs_rd_filesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69c42114 at_min +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69d0e010 class_detach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6b62cf91 lu_ucred_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6c1583d9 class_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6cb8a626 lustre_idmap_lookup_uid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6e7b0099 class_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f2f9ddf cl_page_list_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6fcdcf13 lu_context_key_revive +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6fd2bb68 class_config_parse_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7010656c cl_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7085e7eb lu_object_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x71648b6d class_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72bd5c1f llog_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72ddee4c obdo_le_to_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72e11760 cl_io_sub_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x73788911 lustre_idmap_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x742559b1 class_unregister_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x74d0a280 iattr_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x74f264f5 lu_site_stats_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 0x75cc16c7 cl_req_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x75d11602 dt_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x762e4f55 obdo_to_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x775cc6b7 lprocfs_rd_kbytestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x777cd883 cl_lock_hold +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 0x787b2573 lprocfs_free_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x78855546 lu_context_key_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x789796a1 obd_zombie_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b078065 class_handle_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b4b5381 cl_2queue_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b4fc57b at_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7bd6855f cl_page_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7c7a64bb lu_object_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7d7e2e48 llog_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7d9abd3e cl_unuse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7edcafa0 cl_env_reenter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f7879c8 cl_io_iter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f7d7cd9 lu_buf_check_and_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fad7291 raw_name2idx +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 0x8038425c cl_lock_mutex_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x806cc497 class_add_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x806db8fb cl_2queue_init_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81742d89 obd_ioctl_popdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81dfd95d llog_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x82573083 obd_export_evict_by_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x831f656c class_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x83ca463d cl_locks_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x83e229df lu_context_key_revive_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8489f086 obd_alloc_fail_rate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x848acdea cl_env_alloc +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 0x87523d06 cl_io_lock_alloc_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x87aa819d cl_io_loop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x887079df lprocfs_rd_u64 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x88a4488a cl_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x88b441b3 lprocfs_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x89bd2c87 lu_object_anon +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x89e638ea cl_io_rw_advance +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8a52998f llog_close +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 0x8c3da963 llog_cat_declare_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d30bd1a lu_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8dcbf86b cl_page_list_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e10e6d6 server_name2svname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e1a98ef cl_page_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e2cef54 llog_cancel_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e5133f3 llog_open_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f3dd362 cl_lock_state_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f67314c obd_dump_on_eviction +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9031dc48 lprocfs_oh_sum +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9038984a local_file_find_or_create_with_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x903f7cd4 lprocfs_rd_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x904e13ac class_process_proc_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x91df610c cl_queue_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92e58479 obd_dump_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92f2821d cl_lock_hold_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x933566ce dt_index_walk +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93b46468 lu_session_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9424981a lprocfs_wr_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9512d507 lustre_acl_xattr_merge2posix +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95193bf3 dt_txn_callback_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x952887fe lprocfs_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x952f5fdd lu_context_key_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x955f5220 ldlm_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95735c6c at_extra +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95b78c46 lprocfs_init_mps_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95ec998a lustre_groups_sort +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x96b1451b cl_page_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x96ba920f lu_device_type_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x973b296a cl_lock_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9767adce class_uuid2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9792f313 cl_page_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97d03783 at_history +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x98013cde cl_page_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x989c4fcd cl_2queue_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x98d5a629 dt_lookup_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9a671fb6 lu_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9a8813e8 obd_llog_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b12416b cl_lock_disclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1ed9d8 obd_jobid_var +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9c397b68 lprocfs_free_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9d0f7826 cl_object_glimpse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9d50e59c class_import_put +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 0x9dbb6bb2 lu_device_type_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa0997026 cl_req_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa09fa48c lu_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa0e2a110 cl_lock_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa1c2c5ca llog_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa21c5ea1 obdo_from_la +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa393a61c local_oid_storage_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa3eb2701 cl_object_has_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4b15880 llog_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4b2d3c0 lprocfs_wr_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4fc72ba dump_lsm +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa513f7e4 lustre_groups_from_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa518abba lprocfs_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5fb234f lprocfs_write_frac_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa6179d86 cl_page_make_ready +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa655a9bb cl_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa674c241 kuc_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa69b97b8 class_find_client_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7111090 class_handle_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa74d64a8 llog_osd_get_cat_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7767a67 cl_page_cache_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa8bbd51a cl_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa967f377 lu_cdebug_printer +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 0xaa5aa211 cl_lock_nr_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaade423a cl_page_clip +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaae62009 lu_object_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabe1331f dt_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabf45922 capa_decrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac0209e6 cl_2queue_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac4aabb9 cl_wait_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac7f1596 kuc_ptr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaca7bd0d dt_record_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xacbc7bc2 lu_site_purge +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xacc0aeda llog_cat_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xae466596 cl_lock_at_pgoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaed45af9 lprocfs_rd_timeouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaed4f546 class_exp2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf295839 class_register_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf852012 lprocfs_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xafa060aa cl_page_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaff54411 dt_store_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb01963a6 class_uuid_unparse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb03459a5 lustre_process_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0dfb815 dt_txn_hook_commit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0ee4c45 cl_req_page_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0fb9886 cl_lvb2attr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1677178 class_exp2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb17e6d49 cl_object_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b89b6d class_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1c06c28 lu_site_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb20056b0 cl_page_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb3532ec1 class_connected_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb3fc263a lustre_idmap_lookup_gid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb41998cd lustre_cfg_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb44047bd cat_cancel_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb463b5a0 lu_context_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb49e491f lprocfs_rd_connect_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb519d16c lu_env_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb57092de lprocfs_rd_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb5bb4ad0 lprocfs_at_hist_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb5bf1ec7 cl_env_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb61ff813 lu_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb635af9e dt_acct_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6ba5dd5 kuc_ispayload +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb743ec6a dt_mode_to_dft +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb76bc850 cl_conf_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb76d8990 cl_sync_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb7b048d9 dt_txn_hook_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb7b63727 llog_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb918b25b cl_lock_hold_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb9ab3ed4 class_devices_in_group +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 0xbe449f93 local_object_unlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbed54f0c cl_page_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf375f40 cl_page_is_under_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbfa96684 class_config_dump_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc071d435 lu_object_locate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0bf7ef2 obd_debug_peer_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0d50162 cl_page_gang_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc18d06cf lu_buf_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc1cba01a cl_sync_io_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc212c2ae lu_context_key_degister +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc2396d8c dt_record_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc27bacb9 lu_context_key_quiesce_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc4cf4143 cl_env_nested_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc557bc5f lu_ucred_assert +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc573cfc5 lu_context_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc652d3e1 lprocfs_rd_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8dbaa87 lustre_swab_cfg_marker +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc91660b0 cl_lock_enqueue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0ab67f obd_max_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb3b1940 class_num2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xccf7a8de obdo_cpu_to_le +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd7537ee get_devices_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcdcd9745 cl_io_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xce284f1a cl_lock_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xce398a07 local_file_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xce975c45 lprocfs_free_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xceb8810e cl_object_kill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcedb140a obdo_cmp_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcf1b9ef7 dump_lniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcf5a5a86 cl_page_list_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcfc1f52a class_put_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd08827c0 server_name2fsname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0a7d6a8 cl_io_submit_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0ccbbb0 cl_enqueue_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd10aa042 lustre_swab_llog_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd13d0199 lustre_in_group_p +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1545c87 class_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1b1478b cl_attr2lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1c61f82 lprocfs_seq_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1f58645 lustre_swab_llog_hdr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd5e16d9a cl_sync_io_note +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd5fbca15 llog_init_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd66b68a3 cl_lock_mutex_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd69f4d66 cl_env_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd70fe669 lustre_swab_llogd_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd76b2af4 lu_context_enter +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 0xd7cf8703 cl_page_is_vmlocked +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7f7b340 cl_lock_mode_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd80964a6 dt_version_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd88240b1 lprocfs_seq_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd8bee75f cl_io_read_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd9837b51 lu_env_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda5b1ced class_find_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda913d16 lprocfs_single_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdaa08fef lu_ucred +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdaa6e2b5 lprocfs_rd_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdaba1aa0 obdo_refresh_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdac644c8 lustre_posix_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb13dce1 capa_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc40af0 class_check_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd78c0c7 lu_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd961a5b lustre_register_kill_super_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd9c96ac cl_page_unassume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdde0cf13 cl_lock_get_trust +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde47ae58 dt_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde488c70 class_conn2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde7d985b obd_dirty_transit_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdec4691a cl_page_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe028cf84 capa_encrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe085ed05 cl_page_find_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe1699e73 cl_lock_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe17985b7 cl_page_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe1cd77d7 cl_page_list_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2462224 lprocfs_register_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2a32b55 local_index_find_or_create_with_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2b22d6a cl_lock_closure_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2eb4470 class_get_next_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe3323f5d class_handle_free_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe3cc19ce cl_io_is_going +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe5119003 lprocfs_nid_stats_clear_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe594d275 cl_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe5a1e285 cl_lock_ext_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe5e6828e cl_object_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe749d161 lprocfs_init_ldlm_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe75eac7f cl_lock_closure_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7d83236 cleanup_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7fd6d46 cl_page_list_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8582c59 lu_site_init_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8e84c32 class_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xea28444c dump_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xea821fe6 llog_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeb21d0f5 cl_io_commit_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeb3f388a _debug_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeb602884 cl_page_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeb63d5ee cl_page_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeb7ca32b cl_io_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec5b3cfd lprocfs_alloc_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec7d6b85 obd_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xecc9cf2f lu_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xecde1135 lprocfs_rd_num_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed0133f4 lu_object_find_slice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed9cab0b cl_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xedf4923d cl_page_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee04957a lu_object_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee35559d llog_erase +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 0xef7f4fdb llog_obd_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf01e2527 server_name2index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf0552974 dt_txn_hook_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf061e2d4 lustre_idmap_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf096a915 lu_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf0deb316 cl_lock_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf1b45058 cl_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf21eeb36 cl_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2cc86b3 cl_env_implant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2eb4683 cl_req_page_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2fd6695 statfs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3bc5b9d dt_lfsck_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf490d5f9 class_del_profiles +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf500f6d3 cl_lock_descr_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf5698d68 cl_req_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf594bbf9 llog_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf5aee4e7 cl_io_rw_init +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 0xf8439e44 llog_declare_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8c2df92 obdo_set_parent_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf9494574 obdo_from_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf9f08367 cl_io_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa794b91 class_export_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa813d06 capa_hmac +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfb16f285 cl_lock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfb2728a6 cl_page_vmpage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfb5d39e6 md_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfb7e5b06 llog_cat_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbea0098 lu_types_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc52f324 class_new_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc78ad30 obd_devs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc7f18d0 obd_pages_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfce4103b lu_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd1c2ede obdo_from_iattr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd68d17a class_notify_sptlrpc_conf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd80c479 cl_page_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdbe1557 lprocfs_write_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdc43e8e cl_object_attr_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfeea5e65 class_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff57e92d class_match_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff800422 cl_env_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfffc1f11 lustre_swab_ost_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/osc/osc 0x5c4940c2 osc_update_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00981cdd ptlrpc_request_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00d95039 ptlrpcd_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00de2509 ldlm_pool_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00df343d ptlrpc_deactivate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01d6ef7f ldlm_pools_recalc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x025e445a ptlrpc_lprocfs_unregister_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x030cc160 ptlrpc_prep_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x04170e39 ptlrpc_schedule_difficult_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0426a0d3 req_capsule_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x048b59d5 lustre_msg_set_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0515f93b RQF_FLD_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x05ac2c14 lustre_pack_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x05f47b46 lprocfs_wr_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06b3942b lustre_swab_lov_user_md_objects +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06d50404 sptlrpc_import_sec_ref +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 0x083ab838 lustre_free_reply_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x08998474 sptlrpc_gc_add_sec +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 0x09b3c7b1 ptlrpc_stop_all_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x09f46a4f ptlrpc_buf_need_swab +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 0x0adf3284 ptlrpc_nrs_policy_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0b34c50c ldlm_cli_cancel_unused +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 0x0c739cf5 ptlrpc_req_finished +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0cf343dd RQF_LDLM_INTENT_BASIC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0eb08fba client_import_del_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ecd78ae ldlm_lock_downgrade +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10d0175b ptlrpc_lprocfs_register_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10d9ed6a sptlrpc_cli_ctx_expire +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 0x11cbb93c client_import_find_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x12b6f5a3 ptlrpc_connection_fini +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 0x1511db4c sptlrpc_req_replace_dead_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x151c1d88 req_capsule_server_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15a3e4db RMF_GETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x16363c88 ptlrpc_pinger_sending_on_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x16414345 ldlm_pool_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x172fb86d lustre_msg_hdr_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1747d8b3 ldlm_lockname +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x17950f60 RQF_SEC_CTX +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19108a0f RQF_OST_DISCONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 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 0x1b5d48a1 ldlm_completion_ast_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1bae0270 interval_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1bd7dcba req_capsule_client_sized_get +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 0x1c46da0c ptlrpc_wake_delayed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1cd5d293 ldlm_cli_cancel_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d043548 lustre_msg_set_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d34e0be llog_origin_handle_destroy +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 0x201d1927 ptlrpc_queue_wait +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 0x21a307cb ldlm_lock2handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x230763ae ptlrpc_add_rqs_to_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2309e43f sptlrpc_target_update_exp_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x232fb0ef ptlrpc_abort_inflight +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 0x24b1d9b7 req_capsule_server_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x24faf8ca llog_origin_handle_close +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 0x264717d1 sptlrpc_get_bulk_checksum +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 0x2705ff75 ldlm_namespace_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x285e5b99 lustre_msg_set_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x292cb92f ptlrpc_req_finished_with_imp_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2937afef sptlrpc_conf_client_adapt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x294c954f ldlm_pool_get_slv +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 0x2a75172a __ldlm_handle2lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2b14c8a3 ptlrpc_set_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2bd8894d ptlrpc_request_bufs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2c00c60d ptlrpc_sample_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ca92fa8 ldlm_lock_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ccd5b87 ldlm_cli_cancel_list_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d043b07 sptlrpc_enc_pool_put_pages +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 0x2e334b5f ptlrpc_recover_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2e4562fe RQF_LLOG_ORIGIN_HANDLE_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2e4ca396 RQF_LDLM_INTENT_UNLINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ecd7515 lustre_msg_check_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ede21bf client_disconnect_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f0e4f87 RQF_OST_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f2ad72a ldlm_lock_allow_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f5d9ca4 ptlrpc_commit_replies +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 0x303e5af8 ldlm_resource_unlink_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3060b9c6 sptlrpc_rule_set_expand +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31161771 llog_initiator_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x314028b6 ptlrpc_cleanup_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31838cb4 RMF_IDX_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31fb0285 sptlrpc_sec_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3201191c ptlrpc_obd_ping +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 0x35859e53 sptlrpc_target_export_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35939a3d lustre_swab_fiemap +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35c962e3 sptlrpc_cli_ctx_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x362148b5 ldlm_extent_shift_kms +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x37e1ea0f ptlrpc_init_import +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 0x3968fb7f target_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39f60a5f RMF_OST_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3a025ba0 _ldlm_lock_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3a1e4bcb __lustre_unpack_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3a7dda22 ldlm_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3aaa31e8 ptlrpc_lprocfs_brw +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 0x3ac51017 ldlm_cli_update_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3acb79ad sptlrpc_conf_target_get_rules +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 0x3ca50f33 RQF_MDS_HSM_CT_REGISTER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3cce3e4b ptlrpc_pinger_del_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 0x3dddb3e2 dump_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3e2d0c6a ptlrpc_buf_set_swabbed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f034caf lustre_msg_get_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f0774e2 ldlm_register_intent +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 0x413dc1f3 target_pack_pool_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x42c6f06c ldlm_cli_enqueue +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 0x450d2424 ptlrpc_invalidate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4599b086 ptlrpc_disconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45d05893 lustre_swab_lustre_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45e30cea lustre_swab_ldlm_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47d8cc2d sptlrpc_enc_pool_get_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47f5e903 RMF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x487f2f13 sptlrpc_sec_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x48814c9f lustre_swab_ost_lvb_v1 +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 0x4a93053d sptlrpc_sec_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4add8c22 req_capsule_has_field +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4b09ce4b lustre_swab_mdt_rec_reint +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4b4e1a21 ptlrpcd_wake +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4b4fe6e1 llog_origin_handle_next_block +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d209337 ptlrpc_request_alloc_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d70f50b sptlrpc_cli_enlarge_reqbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d7580d0 lustre_swab_hsm_user_item +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4dd2e244 __ptlrpc_free_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4dd43494 ldlm_pool_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e1706e5 lustre_msg_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e1d681c ptlrpc_request_set_replen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e50528c req_capsule_set_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e696b96 ptlrpcd_queue_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4eb03a6f ptlrpcd_destroy_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f4cde77 ldlm_namespace_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f766c3b lustre_swab_generic_32s +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50428ce6 req_capsule_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50443f6a ptlrpc_init_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5059616d ldlm_enqueue_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5084ecad ptl_send_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50c369a4 sptlrpc_svc_ctx_invalidate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50dd74f8 RMF_STRING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x51288585 do_set_info_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x51b9bebc ldlm_lock_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x52781a4a ptlrpc_reconnect_import +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 0x537d48a6 llog_client_ops +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 0x54b95b94 _debug_req +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 0x59083a7c ptlrpc_unpack_req_msg +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 0x59a32067 client_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x59ca398b ptlrpc_add_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x59f97c01 ldlm_resource_putref +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 0x5c6a3a83 RQF_SEQ_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5caae213 ptlrpc_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5cb9430f req_capsule_extend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5d4fa8c0 req_capsule_server_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5d5a8100 lustre_pack_reply_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5d838621 req_capsule_client_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5d9974d7 ptlrpc_mark_interrupted +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 0x5e36be04 req_capsule_init_area +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 0x5f957492 ldlm_namespace_dump +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 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 0x60818257 lustre_pack_reply_v2 +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 0x6168fa64 ptlrpc_fail_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x618ad203 RQF_OST_GET_INFO_LAST_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x61978085 ldlm_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x62192cf8 dump_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x62aaae3f RQF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6315dd4c RMF_LLOGD_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6352a62d ldlm_get_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x63586169 ptlrpc_prep_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x647b6e48 lustre_swab_ldlm_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x653723dc RMF_LOGCOOKIES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x65d5b255 sptlrpc_cli_unwrap_bulk_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x66364cf1 ldlm_lock_allow_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x667fcda3 ptlrpc_nrs_policy_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x677db697 req_capsule_server_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x67c59453 ldlm_lock_change_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6838fa2a ldlm_lock_fail_match_locked +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 0x69358ffb ptlrpc_send_reply +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 0x6a709445 req_capsule_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6b3c0fed ptlrpc_set_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6b64a570 ptlrpc_service_health_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6bc90978 lprocfs_rd_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6bdf1fb0 sptlrpc_gc_del_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c1004ec ptlrpc_request_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c51f0fb req_capsule_filled_sizes +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 0x6ea0d711 ldlm_pool_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6ed20499 ldlm_revalidate_lock_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6efa82b0 RQF_MGS_TARGET_REG +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6f6dc736 lustre_swab_mdt_remote_perm +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6fb92092 sptlrpc_flavor2name_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x703538e4 lustre_swab_hsm_current_action +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x723d43b6 sptlrpc_rule_set_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x725a892c RQF_MDS_REINT_OPEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x740d19ed sptlrpc_import_flush_all_ctx +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 0x77571cc6 lustre_swab_ost_body +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 0x7a832f10 RMF_CONN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7af61956 ptlrpc_register_service +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 0x7dae31ca 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 0x7ecb0acf ldlm_blocking_ast +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 0x7fb3385e ptlrpc_set_add_new_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7ffda389 sptlrpc_cli_wrap_bulk +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 0x85135801 RMF_DLM_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85852054 lprocfs_wr_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85a9e0d8 RMF_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85eecf67 sptlrpc_get_hash_alg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x863db6eb RMF_HSM_USER_STATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x86fa8c3b ldlm_cli_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8760beaf lustre_swab_ldlm_policy_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x876c2551 RMF_GETINFO_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8794a46b client_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x87ac0bc3 ptlrpc_cleanup_imp +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 0x88f60ce8 ptlrpc_send_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x88fff52d RMF_CAPA2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x89f9edf7 RQF_MDS_REINT_SETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a1ea476 lustre_swab_hsm_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a257736 RQF_MDS_HSM_STATE_GET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ac440fa ptlrpc_uuid_to_connection +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b854254 lustre_swab_mgs_config_res +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8cb71d4b RQF_MDS_REINT_CREATE_SLAVE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8d77ea75 lustre_msg_set_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8da3fca7 lustre_msg_add_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ddc64d5 ptlrpc_activate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e1aaf43 sec2target_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e9abe4d RMF_GENERIC_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8f0aceac RQF_MDS_HSM_ACTION +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8fec0451 lustre_msg_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x919c4ce3 RMF_OBD_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x91cf58d3 RQF_MDS_PIN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x937b1ee0 lustre_swab_mdt_ioepoch +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x93fd7e58 lprocfs_wr_evict_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x940c099f llog_origin_handle_prev_block +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x942bf65f ldlm_pool_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9439bac7 ptlrpc_start_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x944e0ccb ptlrpc_replay_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9465a0c5 ldlm_destroy_export +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 0x9588b55e ldlm_pool_get_lvf +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 0x9674ad00 ptlrpc_resend_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x967bfd52 RQF_OBD_PING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x96994a8b sptlrpc_gc_add_ctx +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 0x9953e3a3 ldlm_init_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a258886 RQF_MDS_GETSTATUS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a51e073 unlock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a6f2f6d lustre_msg_set_opc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b078d67 lock_res_and_lock +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 0x9ddf4d6b __ptlrpc_prep_bulk_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9de515e7 ptlrpc_save_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9e371b09 client_import_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9fb088f1 lustre_swab_lov_mds_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa0614bad req_capsule_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa07230f1 ptlrpc_unregister_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa10f0d3d RMF_UPDATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa1559134 ldlm_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa163f4c3 dump_rniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa18ecdf3 target_print_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa2244636 RQF_MDS_GETATTR_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa22c0086 ldlm_error2errno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa2b35ada ldlm_cancel_resource_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa2e59a33 ldlm_cli_cancel_unused_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3d2a6ee RMF_CAPA1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa415a683 req_capsule_server_sized_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa47787ef RMF_PTLRPC_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4a2d089 RQF_OST_PUNCH +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4bea5ef lustre_swab_lmv_user_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4cf9bdb sptlrpc_cli_ctx_wakeup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5203866 ldlm_lock_match +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 0xa762b7c0 ptlrpc_pinger_add_import +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 0xa7fd45db llog_origin_handle_cancel +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 0xaaaa7926 sptlrpc_target_sec_part +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xab08a54b ldlm_cli_enqueue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaddc3979 lustre_swab_lustre_capa_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaecda86b ptlrpc_reply +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 0xaf5a9db6 lustre_pack_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0751fa4 RQF_LLOG_ORIGIN_HANDLE_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb08c9d59 sptlrpc_cli_unwrap_bulk_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0d5de83 ldlm_lock_fail_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0db1932 req_capsule_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1b43d8a dump_rcs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb2771cec req_capsule_field_present +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb27c2374 lustre_msg_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb291473d lustre_msg_early_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb2b1817d lustre_swab_ost_lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb45a1c22 ptlrpc_req_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb4a7ecf3 lustre_msg_add_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb4daf645 req_capsule_server_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb512ebc2 sptlrpc_parse_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb59f42b8 ldlm_resource_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb5dd055a sptlrpc_unregister_policy +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 0xb68b01f3 ldlm_blocking_ast_nocheck +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb6aafd03 RQF_MDS_DONE_WRITING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb6ab4ccb ptlrpcd_alloc_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb72d9fda ptlrpcd_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7b38189 RMF_MDT_MD +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7fa3cc8 RMF_LLOG_LOG_HDR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb843bc58 client_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb903634e RQF_OST_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9948dc7 sptlrpc_register_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9b631cf lustre_swab_mgs_config_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9c02854 ldlm_namespace_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xba203e58 llog_origin_handle_read_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xba273222 ldlm_lock2desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbaa76097 lustre_msg_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbbbfe42a ptlrpc_prep_bulk_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc1370dc lustre_shrink_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc2ddd8e sptlrpc_lprocfs_cliobd_attach +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 0xbeeba53c ptlrpc_restart_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbf19e32e ptlrpc_req_set_repsize +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbf2b882a ldlm_pool_set_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbf98b86f RQF_MDS_QUOTACHECK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbfeb149f req_capsule_client_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbffd4313 RQF_OST_BRW_WRITE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc06c4670 lustre_msg_get_versions +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0867da7 RMF_REC_REINT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0cdf55e RMF_MGS_SEND_PARAM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2986d28 lustre_swab_ldlm_res_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2b1af57 RQF_MGS_SET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2be922a RMF_SYMTGT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2cd1f05 ldlm_namespace_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2eaf918 ptlrpc_request_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc30c9615 ptlrpc_hpreq_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc3c3282a ptlrpc_unregister_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc4495552 ldlm_pool_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc4e5f809 req_capsule_server_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc4f4538b ptlrpc_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 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 0xc8b6c872 ptlrpc_prep_req_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc8f586a9 ptlrpc_connection_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc92f09df ptlrpc_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xca5a81ec ptlrpc_pinger_ir_down +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xca9ca15b ptlrpc_at_set_req_timeout +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 0xcc5c2316 ldlm_prep_enqueue_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcc7603d8 ldlm_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcd47349b ptlrpc_retain_replayable_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcdb7ad25 ldlm_pool_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce1732c8 ldlm_namespace_new +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce1a689b sptlrpc_enc_pool_add_user +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce234f59 ldlm_namespace_get +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 0xcf103c64 ptlrpc_unregister_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf66364f ldlm_pool_get_clv +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 0xd0b2e473 ldlm_replay_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd0fdc080 req_capsule_client_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd188cc0a ldlm_pool_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2983334 lustre_swab_swap_layouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2e0d4eb lustre_msg_get_opc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd396437f ldlm_flock_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd3dae408 ldlm_it2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd537ded2 lustre_swab_obdo +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 0xd8198218 ptlrpc_request_alloc_pool +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 0xda2ac111 sptlrpc_proc_root +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdaee4a54 ptlrpc_connect_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 0xdcf910b9 lustre_swab_ost_last_id +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 0xddb18ab8 llog_origin_handle_open +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 0xde212657 ldlm_resource_get +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 0xdfe5ac5f 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 0xe1e7bcba ldlm_reprocess_all_ns +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe1f3a472 req_capsule_other_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe3adb653 client_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe400495a sptlrpc_import_flush_my_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe40e0a50 lustre_msg_get_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe57bd972 sptlrpc_current_user_desc_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe5e8169b lustre_errno_ntoh +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe61fc1b2 ldlm_pool_fini +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 0xeaa03978 ldlm_init_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeabaa0b1 lustre_swab_mdt_body +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 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 0xf2862fd2 ldlm_cli_cancel_req +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 0xf4263869 ldlm_glimpse_ast +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 0xf4dc23fe ptlrpc_unpack_rep_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf50dd3c0 ptlrpc_resend +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 0xf5dec358 ldlm_get_enq_timeout +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 0xf6a30308 lprocfs_wr_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf6c6c388 ldlm_destroy_flock_export +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 0xf864d7dc sptlrpc_cli_ctx_put +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 0xfaec8457 ldlm_resource_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfb665956 ptlrpc_set_add_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfb89c0c8 ptlrpc_set_import_active +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfbbc2ad0 ptlrpc_request_pack +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 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 0xffd4798d ptlrpc_register_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffe29c3f RQF_LDLM_ENQUEUE +EXPORT_SYMBOL drivers/staging/media/cxd2099/cxd2099 0xe5d1a91d cxd2099_attach +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x081f6eb7 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x088c1d36 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x12949f90 rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x13e99f94 rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x14165408 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1eaf65fa HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x26392126 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x31a3e100 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x327789fb rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4199691e rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4a3d6a49 rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5572e95a rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5bc11c35 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5d52c163 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x690b0df6 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6c8ad4a9 rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7e7cd0a7 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7ef5c275 rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x84790873 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8ee38f80 rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8f926dac rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x90ab3768 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x92fa11b4 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x932c2e35 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x98955a9a rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9cab67d4 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa110620e notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa11b96e4 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa2589bb7 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa526adbd rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xad9604a1 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb507eb9a free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb8ac6bf9 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xca1b1013 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcdf4f002 rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcfda2712 rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd4535240 rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdc1e02e5 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdc7d63a3 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xde6cc1f6 rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdfa90b58 rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe0cbd3ef rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe5c1ec14 rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe802755b Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe8d90530 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xee14d561 rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf4fb9234 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf869228d rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfe94d91a rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xff7dd9bc alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x00270c8f ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1296562c ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x13063fce ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x166c62b0 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1a91becb ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1e5a5d30 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x23eaa19a ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2acd69ce ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3ada8e5b ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3db842e2 ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3dfc7417 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3e973aae ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x418224c3 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x44beea3d ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x45222f5f ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x478387a0 DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4d9b10dd ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4e06a706 ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5235c235 ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x52734297 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x57c7f1fe notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x592b6b66 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5cd49017 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x69e1932a ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6a373e0f ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6d17231e HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x758b50ff ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x76e343bf SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7715a475 Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x87126ab1 ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8a4ad6f5 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9106b22e ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9166755f ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa8ad235f ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb6ab8f83 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb8e94d60 ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb9243260 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb9c76ed0 ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbb8c101e ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc1d9a463 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc1f7bae7 ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc6312c0d ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc6a8e6f6 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xce204c6e ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd3d03323 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdcb43155 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdf627c01 Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe218a8f2 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe579bdea ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe6bb72fa ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe8840215 DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xef12ea8f Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xefc7a196 ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf69036b6 IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf970f9d3 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfa8758b6 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x0017f35f set_bp_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x00ea0cde set_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x06d6f244 get_bp_dis_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x09df8f3e set_tap_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x0a8d32c3 get_bypass_slave_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x1936264c set_dis_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x1d2eb8ca get_tap_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x203af1f7 reset_bypass_wd_timer_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2070f14a set_bypass_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x27b990ef get_bypass_info_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2ba7cd35 get_wd_autoreset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2c3f1c17 get_tx_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2f59e636 get_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2fdb893a get_tap_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x361cf40a get_dis_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x45ca99c3 set_wd_autoreset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x550a188c set_bypass_wd_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x5cb59e92 get_bypass_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x66b60122 set_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x675208c0 set_tx_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x692623f2 get_std_nic_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x75131ec6 set_bypass_pwoff_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x76c0b7d0 set_tpl_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x7e872825 get_wd_exp_mode_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x7e8d701e get_wd_expire_time_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x86388b07 get_bp_disc_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x93ae4648 get_wd_set_caps_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x95e42b0d is_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x9df5f807 set_dis_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x9e21f42e set_std_nic_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xa689a214 get_bypass_wd_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xae117788 get_bp_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xc368d30d get_dis_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xccab5de0 get_bypass_caps_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd3e034b3 get_bypass_pwoff_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd9c1ccfc get_bp_disc_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd9d38d97 set_wd_exp_mode_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xe640f06e set_bp_disc_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xecdaa456 set_bp_hw_reset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xedcd3c1b get_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf06d67bf set_bp_dis_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf57c1671 get_bp_hw_reset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf693c3a1 bp_if_scan_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf8237882 get_bypass_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xfa59240d get_tpl_sd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x05af3c4c set_wd_exp_mode +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x05b08a42 set_bp_hw_reset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x0b0d5ce0 get_tap_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x0fc2e83c reset_bypass_wd_timer +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x123a8133 get_tx +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x157ec89c get_bp_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2440f05a get_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2b01d1d4 set_bp_dis_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2c27a2f0 set_dis_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2da97f4b is_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2e86c67b get_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x37416370 get_bp_hw_reset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x37bdab27 get_wd_autoreset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x3da96a18 get_bypass_caps +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4025805e get_bypass_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4940a0cc get_bypass_info +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4d21ff51 get_bypass_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5147360c get_bp_disc_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x515d4df1 get_bypass_slave +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5560267e set_wd_autoreset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5be44d44 set_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x6653590c get_wd_exp_mode +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x6bda14ec get_bp_dis_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x72c618ae set_bypass_wd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x76d47e6f set_bp_disc_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x794e3815 set_tap_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x7c6cbc16 get_tpl +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x84a263dc set_tx +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x8a16f22c set_tpl +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x946ff795 get_wd_set_caps +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x94f6aff2 get_bypass_wd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x9d1ecf73 set_bypass_pwoff +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xb1385629 set_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xbff68c45 set_bypass_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xc871c561 get_dis_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xcee528df set_std_nic +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xd202dd85 get_bypass_pwoff +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xd787f151 get_wd_expire_time +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xdb6a39d2 get_dis_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xebd25ae5 get_std_nic +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf1e9f8c1 set_bp_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf224abd9 get_tap_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf5a591b2 set_dis_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf643fd4c get_bp_disc_pwup +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x049f5d78 xillybus_do_cleanup +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x06b4167a xillybus_init_endpoint +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x36b07a87 xillybus_endpoint_remove +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0xe256d15f xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x09354959 iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x15bb098a iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x17837748 iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1cccdb87 iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1d0de96f iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x223c9ee8 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x24fe8339 iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3b95f405 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3c24afc9 iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x43a3c5f0 iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4f5de3da iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x54211780 iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6abe7463 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8ec0b6c1 iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x941f8372 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa3d88ff3 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xaecef864 iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb2328cb9 iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb9cf4c4e iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbd19524f iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xca0bc7d5 iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xcc128000 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd742ae4d iscsit_handle_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xdb69c7f1 iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe905cfc0 iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xef6c02ac iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf915fe7b iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xfa61b131 iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/target_core_mod 0x016c6157 fc_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x0542e9c3 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x0e815629 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x127996c9 transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x1871e892 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x19a4c078 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x1adb9794 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x1b0b65f4 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x1ea7587e target_fabric_configfs_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x1f8fce29 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x208c764c target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x2d91d57e sas_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x2fecebcb transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x35a0dd01 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0x35daed37 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x374e60e3 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x3905a99a sas_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x3ce90ef2 target_configure_unmap_from_queue +EXPORT_SYMBOL drivers/target/target_core_mod 0x4b51866d transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x5118c217 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x54795c7f spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0x5bd3bb66 core_tpg_add_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x5cf1f87e transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x5d4eb762 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x5e73ec15 iscsi_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x60671abe target_to_linux_sector +EXPORT_SYMBOL drivers/target/target_core_mod 0x6613c71f target_fabric_configfs_init +EXPORT_SYMBOL drivers/target/target_core_mod 0x6a15e060 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x6a1fe928 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x6c17c517 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x6d19ed8c transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dd2e92b fc_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x7e9171b2 iscsi_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x831d1fbe core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x83beee44 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x8458e21e transport_subsystem_release +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x88a3af01 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x894175ac transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x906b8635 sbc_execute_unmap +EXPORT_SYMBOL drivers/target/target_core_mod 0x92b38ac0 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x94811474 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x959942cc sas_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x9671a3d1 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x97141b48 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x9939afbc target_fabric_configfs_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xa151599e spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0xa193b20e transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xa52466f0 fc_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0xaa26d886 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xaf4ca728 core_tpg_del_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xaf51cd2e sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0xb1d146e5 transport_subsystem_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xb32cc334 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xb85e39c6 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xb8b09909 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xbdd99cae core_tpg_clear_object_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0xbff5910a iscsi_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0xc5c8e060 fc_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0xc62f65c6 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xcd6d0c9e transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xcebd3019 spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0xd4423bfe iscsi_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xe28fddfc target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xe69de5fd target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xe8042615 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0xeba1740f target_fabric_configfs_free +EXPORT_SYMBOL drivers/target/target_core_mod 0xebcc635a __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf016225e target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xf793f9f9 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xf8ddd32e core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0xfbac1a58 sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0xfe2458bd sas_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0xff4e06fe target_complete_cmd_with_length +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x7751f991 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0x2ff3785e unregister_gadget_item +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x137fb474 gether_get_host_addr_u8 +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x35f975f6 gether_get_qmult +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x4a358cdd gether_set_dev_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x6b8bb444 gether_setup_name_default +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x8451eddf gether_disconnect +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x9c3cbeb2 gether_set_qmult +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xab47dfa8 gether_get_dev_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xab701b1f gether_get_host_addr_cdc +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xb33f3cbb gether_setup_name +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xba265c64 gether_set_gadget +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xc75ab3be gether_register_netdev +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xda021f27 gether_get_host_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xf22cceb6 gether_connect +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xf8d8a10c gether_set_host_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xfd1cad97 gether_get_ifname +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x3a6d4f22 rndis_free_response +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x3ca38e3a rndis_signal_connect +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x4ca90996 rndis_signal_disconnect +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x5d22b406 rndis_register +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x608e7490 rndis_set_param_dev +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x785d494b rndis_msg_parser +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x840dd143 rndis_deregister +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x988ad2a2 rndis_set_param_vendor +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x9acf72e4 rndis_set_param_medium +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xa90054ee rndis_uninit +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xb971ebca rndis_get_next_response +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xc26837af rndis_rm_hdr +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xd2fe47b1 rndis_set_host_mac +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xf3f61d90 rndis_add_hdr +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x1710b539 fsg_fs_bulk_out_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x1b1cc3af store_cdrom_address +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x2933ee1d fsg_ss_bulk_in_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x2f220cb9 fsg_store_file +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x398778e1 fsg_ss_function +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x415155d2 fsg_lun_close +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x423845e4 fsg_ss_bulk_in_comp_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x56344daf fsg_hs_bulk_out_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x5e2cf273 fsg_store_cdrom +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x6c544379 fsg_lun_fsync_sub +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x7039e472 fsg_store_ro +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x7bb93294 fsg_store_nofua +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x857b6dc2 fsg_hs_function +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x8b64cfdb fsg_show_cdrom +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x9495b0d1 fsg_lun_open +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x95cffb3e fsg_hs_bulk_in_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xa5cae92f fsg_ss_bulk_out_comp_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xa5f99b69 fsg_fs_function +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xb507612a fsg_show_ro +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xb52ba28a fsg_intf_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xb54d0d95 fsg_fs_bulk_in_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xc81cb191 fsg_show_removable +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xf22dc468 fsg_show_file +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xf4efc0c8 fsg_ss_bulk_out_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xf73b1baa fsg_store_removable +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xfaf43216 fsg_show_nofua +EXPORT_SYMBOL drivers/usb/gadget/usb_f_rndis 0x34af6f68 rndis_borrow_net +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0x64b8e674 sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x0eec9fe0 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x1e502eb3 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x2bdd6100 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x2d0cbba6 usb_wwan_set_termios +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x85c93e58 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x8bd29c50 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x8f05ad23 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xba31fe84 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xc9edddd7 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xd4f69dfd usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf294f7dd usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x60cf7706 usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x96bbd41e usb_serial_suspend +EXPORT_SYMBOL drivers/vhost/vringh 0x0dda8c5a vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x1f063017 vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x2eae4a2a vringh_getdesc_user +EXPORT_SYMBOL drivers/vhost/vringh 0x36dfce73 vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3b304ebb vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3eaf442a vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x3fa42e4f vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x4311cd91 vringh_iov_pull_user +EXPORT_SYMBOL drivers/vhost/vringh 0x5dafbd4e vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x66af098b vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x6d0e7948 vringh_abandon_user +EXPORT_SYMBOL drivers/vhost/vringh 0x76bd9a5d vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x97fa07e9 vringh_iov_push_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xaf8e4a0e vringh_notify_disable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xafb47dae vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0xc884d704 vringh_notify_disable_user +EXPORT_SYMBOL drivers/vhost/vringh 0xc8bee0a4 vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xda4ea4cc vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0xde804bb9 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/video/backlight/generic_bl 0x366d19ef genericbl_limit_intensity +EXPORT_SYMBOL drivers/video/backlight/lcd 0x5e0bfda4 devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xb9e5f819 devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xc0665b94 lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xe9b3966f lcd_device_unregister +EXPORT_SYMBOL drivers/video/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/cyber2000fb 0x36bcf645 cyber2000fb_attach +EXPORT_SYMBOL drivers/video/cyber2000fb 0x534b6f18 cyber2000fb_disable_extregs +EXPORT_SYMBOL drivers/video/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/macmodes 0x12ee7ed1 mac_find_mode +EXPORT_SYMBOL drivers/video/macmodes 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL drivers/video/macmodes 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x0c15bd9b matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x1a12c600 g450_mnp2f +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x8a16a41d matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x079efc90 matrox_mystique +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x42c5d598 matrox_G100 +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x9f16f585 DAC1064_global_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xbbc45af9 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_Ti3026 0x96961df2 matrox_millennium +EXPORT_SYMBOL drivers/video/matrox/matroxfb_accel 0x6ec99a4a matrox_cfbX_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x1c044d2d matroxfb_register_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x4683e343 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x6379ecd5 matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x9dd25bd1 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0x56d1caf3 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0xe558bbe7 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x2c491769 matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x32fdd01a matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x6163a947 matroxfb_read_pins +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x67eceb58 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x7ba7bfb7 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/mb862xx/mb862xxfb 0x87f2e228 mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/output 0x0922bb81 video_output_unregister +EXPORT_SYMBOL drivers/video/output 0x5c70de27 video_output_register +EXPORT_SYMBOL drivers/video/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/svgalib 0x247f391d svga_tilecopy +EXPORT_SYMBOL drivers/video/svgalib 0x31a73406 svga_tilefill +EXPORT_SYMBOL drivers/video/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/svgalib 0x5818738a svga_tilecursor +EXPORT_SYMBOL drivers/video/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/svgalib 0x73a95c00 svga_settile +EXPORT_SYMBOL drivers/video/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/svgalib 0xcd2c37e7 svga_get_tilemax +EXPORT_SYMBOL drivers/video/svgalib 0xcf401909 svga_tileblit +EXPORT_SYMBOL drivers/video/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/svgalib 0xff73be86 svga_get_caps +EXPORT_SYMBOL drivers/video/syscopyarea 0x542d0e8a sys_copyarea +EXPORT_SYMBOL drivers/video/sysfillrect 0x16b1adc0 sys_fillrect +EXPORT_SYMBOL drivers/video/sysimgblt 0x58dbbab2 sys_imageblit +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/vme/vme 0x00d7e722 vme_lm_count +EXPORT_SYMBOL drivers/vme/vme 0x072f901c vme_master_rmw +EXPORT_SYMBOL drivers/vme/vme 0x0c6bdc3f vme_master_read +EXPORT_SYMBOL drivers/vme/vme 0x0ec5babe vme_dma_free +EXPORT_SYMBOL drivers/vme/vme 0x1675e747 vme_irq_free +EXPORT_SYMBOL drivers/vme/vme 0x1a8690a9 vme_irq_request +EXPORT_SYMBOL drivers/vme/vme 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL drivers/vme/vme 0x2142ae4f vme_dma_request +EXPORT_SYMBOL drivers/vme/vme 0x36a8709f vme_master_request +EXPORT_SYMBOL drivers/vme/vme 0x3e51dc60 vme_irq_generate +EXPORT_SYMBOL drivers/vme/vme 0x3e95083c vme_slave_get +EXPORT_SYMBOL drivers/vme/vme 0x46649cd1 vme_lm_set +EXPORT_SYMBOL drivers/vme/vme 0x48b99a13 vme_lm_free +EXPORT_SYMBOL drivers/vme/vme 0x4baf35a7 vme_master_get +EXPORT_SYMBOL drivers/vme/vme 0x5081c747 vme_dma_list_exec +EXPORT_SYMBOL drivers/vme/vme 0x52983a4f vme_master_write +EXPORT_SYMBOL drivers/vme/vme 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL drivers/vme/vme 0x5aff4177 vme_lm_get +EXPORT_SYMBOL drivers/vme/vme 0x64005acb vme_slot_get +EXPORT_SYMBOL drivers/vme/vme 0x6689491b vme_dma_list_add +EXPORT_SYMBOL drivers/vme/vme 0x79a33f85 vme_get_size +EXPORT_SYMBOL drivers/vme/vme 0x7cf35220 vme_master_free +EXPORT_SYMBOL drivers/vme/vme 0x7f559f15 vme_register_driver +EXPORT_SYMBOL drivers/vme/vme 0x7f68aa5d vme_slave_request +EXPORT_SYMBOL drivers/vme/vme 0x85f26190 vme_irq_handler +EXPORT_SYMBOL drivers/vme/vme 0x8649361a vme_bus_type +EXPORT_SYMBOL drivers/vme/vme 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL drivers/vme/vme 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL drivers/vme/vme 0xa2a335bd vme_alloc_consistent +EXPORT_SYMBOL drivers/vme/vme 0xa31bdf07 vme_master_set +EXPORT_SYMBOL drivers/vme/vme 0xa9d63d70 vme_register_bridge +EXPORT_SYMBOL drivers/vme/vme 0xaebc3d07 vme_new_dma_list +EXPORT_SYMBOL drivers/vme/vme 0xca5ee09a vme_free_consistent +EXPORT_SYMBOL drivers/vme/vme 0xdff905e5 vme_slave_free +EXPORT_SYMBOL drivers/vme/vme 0xe4d41142 vme_dma_list_free +EXPORT_SYMBOL drivers/vme/vme 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL drivers/vme/vme 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL drivers/vme/vme 0xf623e2c2 vme_unregister_bridge +EXPORT_SYMBOL drivers/vme/vme 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL drivers/vme/vme 0xfd27f18b vme_lm_request +EXPORT_SYMBOL drivers/vme/vme 0xfe73f8ec vme_unregister_driver +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x533a8021 w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x8110150e w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xb1371522 w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xd5e1acfd w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xb5e9891e w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xc22007c7 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x1d60ec55 w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x8abe3c83 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/wire 0x0b8a4e2e w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0x6c2be82a w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0x6e4b5dc2 w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0xfbe6999b w1_remove_master_device +EXPORT_SYMBOL fs/btrfs/btrfs 0x27476846 ulist_reinit +EXPORT_SYMBOL fs/btrfs/btrfs 0x41e6a9d2 ulist_init +EXPORT_SYMBOL fs/btrfs/btrfs 0x7e2ee765 ulist_free +EXPORT_SYMBOL fs/btrfs/btrfs 0xa2eec2e8 ulist_fini +EXPORT_SYMBOL fs/btrfs/btrfs 0xb1320bc8 ulist_add +EXPORT_SYMBOL fs/btrfs/btrfs 0xb42289d2 ulist_alloc +EXPORT_SYMBOL fs/btrfs/btrfs 0xc2c745db ulist_next +EXPORT_SYMBOL fs/configfs/configfs 0x0d64c85e config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0x15738b49 configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x61230e19 config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0x64c199e3 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x721feb88 configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x8ab499a5 config_item_init +EXPORT_SYMBOL fs/configfs/configfs 0x8edf73a0 config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xa3cfd50c configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0xd2683c9f config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0xd95bd3e7 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xe8b2d872 configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0xfad8a391 config_item_set_name +EXPORT_SYMBOL fs/exofs/libore 0x0d2408ac ore_remove +EXPORT_SYMBOL fs/exofs/libore 0x18b97b9f ore_write +EXPORT_SYMBOL fs/exofs/libore 0x2765e065 extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x515ed2d4 ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0x51d7869d ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0x7a7c32cb ore_create +EXPORT_SYMBOL fs/exofs/libore 0x84b3b7a4 ore_read +EXPORT_SYMBOL fs/exofs/libore 0xa01d3e8b ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xbf6f3afd ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0xe06291ba ore_get_rw_state +EXPORT_SYMBOL fs/fscache/fscache 0x00c33738 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0x16023c64 fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0x23234661 fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x25633481 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x381c51c1 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x4003cb78 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x4618b11e fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x4b005bde __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x5e1f7f5a fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x5eda56f9 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x604a030f __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x652e3b51 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x7664afbb __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x767818e1 __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x841510b7 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x86e791f6 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x88a35da1 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x8acb3b55 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x8d3c9739 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x917abdab __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x93a6c3b0 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x98db0269 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0xb8064cf0 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xb8b11e5e __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xbc25a574 fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0xbd01b940 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xc7a4fbfc __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0xd7849030 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0xe8e855fe __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0xed7a6724 __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xf036be94 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0xf2d87bab __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0xf9f7ee86 __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xfa01a2ef fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0xfce5535d fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0xfdeb978a __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0xfe709136 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/nfsd/nfsd 0x35e33c1e nfs4_acl_write_who +EXPORT_SYMBOL fs/nfsd/nfsd 0x5a157ae4 nfs4_acl_get_whotype +EXPORT_SYMBOL fs/nfsd/nfsd 0xa0f4b528 nfs4_acl_posix_to_nfsv4 +EXPORT_SYMBOL fs/nfsd/nfsd 0xb25b2957 nfs4_acl_nfsv4_to_posix +EXPORT_SYMBOL fs/nfsd/nfsd 0xe13337f0 nfs4_acl_new +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x24d4bf18 qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0x3e6622df qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x5bd38058 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x5f1bd2cd qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xf1e26c0c qtree_delete_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 0x6c1f6fee crc7 +EXPORT_SYMBOL lib/crc7 0xd80c3603 crc7_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 0x0d3f79e2 lc_find +EXPORT_SYMBOL lib/lru_cache 0x15daccf7 lc_destroy +EXPORT_SYMBOL lib/lru_cache 0x18d72265 lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0x2899353f lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0x2937f468 lc_try_get +EXPORT_SYMBOL lib/lru_cache 0x2b4dea0e lc_reset +EXPORT_SYMBOL lib/lru_cache 0x3b0c6f1b lc_set +EXPORT_SYMBOL lib/lru_cache 0x3f5e73a0 lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0x4b2b5357 lc_get_cumulative +EXPORT_SYMBOL lib/lru_cache 0x5a546a55 lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x902e804a lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x963de69e lc_committed +EXPORT_SYMBOL lib/lru_cache 0xc4bef5db lc_is_used +EXPORT_SYMBOL lib/lru_cache 0xcb5946de lc_put +EXPORT_SYMBOL lib/lru_cache 0xd17b424b lc_create +EXPORT_SYMBOL lib/lru_cache 0xdb79c989 lc_del +EXPORT_SYMBOL lib/lru_cache 0xff51ea31 lc_get +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/802/p8022 0xce7ccd81 unregister_8022_client +EXPORT_SYMBOL net/802/p8022 0xd86c9b48 register_8022_client +EXPORT_SYMBOL net/802/p8023 0x1da8be06 make_8023_client +EXPORT_SYMBOL net/802/p8023 0x4bbd31a6 destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0x137a5dce register_snap_client +EXPORT_SYMBOL net/802/psnap 0x4f4b2f3e unregister_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x044c63ae p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x059331ee p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0x0c1b3417 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x114c4fac v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0x1878256d p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x1cd42e8b p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x2b71bd5a p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x2b7435b5 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x2d358f31 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x2e8fb790 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x3aeaa2d6 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x3c220f88 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x3d598cc3 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x3f923692 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x433a8db6 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x46dbe185 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x4c9bef55 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x527041e0 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x5dc1a71e p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x6508ecbd p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x65847c07 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x71863d15 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x71b6d502 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x7f14ca65 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x81cca523 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x84266ca4 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x92d5a75f p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x977a0030 p9_nr_pages +EXPORT_SYMBOL net/9p/9pnet 0x9e560fca p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0xa91773dd p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0xae2a6eb8 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0xaf5eff26 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xb4a6d4e9 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0xb7627c33 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0xbcb552fd p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0xc1e819d2 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xc7d61f56 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0xd23ef626 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0xda991e49 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0xdf2cdfe8 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0xdfc6487b p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe807d317 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0xed68a171 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xee4ca6cd p9_payload_gup +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 0x23770faa aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0x2acb7da1 atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0x49895ffb atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0xa0ba47dd alloc_ltalkdev +EXPORT_SYMBOL net/atm/atm 0x07141691 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x1df505af atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x215b8736 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x29b9a368 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x480850f0 atm_charge +EXPORT_SYMBOL net/atm/atm 0x4ec19a80 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x70b82a57 atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x77a0dfce vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x87335d75 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x969e91e7 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 0xd0f0fbf5 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0xd9491666 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xe9c6baf0 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/atm/atm 0xfac5ae25 vcc_sklist_lock +EXPORT_SYMBOL net/ax25/ax25 0x026c1368 ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0x0801988c ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x14417d57 ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0x1766a28d ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x286b8a3e ax25_hard_header +EXPORT_SYMBOL net/ax25/ax25 0x3afee63e ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x3cc4aaf4 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x790eb6c4 ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0x8169c1c5 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x81b0ecdf ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0xb14e3b5e ax25_rebuild_header +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/bluetooth/bluetooth 0x04bd23b8 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x07702f09 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x09891863 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0b0da6db hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0x11a4c902 bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x18ceb956 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1fb8a975 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x37bcf8c6 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3ceaf984 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x48e45cff bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4c1bdc34 hci_recv_stream_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5536deea l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5d1ef724 l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6de19115 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7c640527 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8160c78c hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x88560b41 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8a547277 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9245d093 __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x927b76c3 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x967df1bf hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9a6e8006 hci_recv_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9de6fddd bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa18e87f3 bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa3ffde17 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa4abf88f hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa57f4031 l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb61a0c3b bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb7266611 __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb8f40411 l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc586df42 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcad13bce bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcdd9dbd4 hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdef40a66 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe303889d bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0xebe44dfb hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf8bbbd5f bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfa18b09a bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfabfe72f l2cap_register_user +EXPORT_SYMBOL net/bridge/bridge 0xc5aae469 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x7ee2f04e ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xcdd7d909 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xf5380295 ebt_do_table +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x26c7c073 caif_enroll_dev +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 0x50f1b3d4 get_cfcnfg +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 0x96ffcec8 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xe6dc074e caif_connect_client +EXPORT_SYMBOL net/caif/caif 0xf1f260a2 caif_disconnect_client +EXPORT_SYMBOL net/can/can 0x35439870 can_proto_register +EXPORT_SYMBOL net/can/can 0x81152601 can_send +EXPORT_SYMBOL net/can/can 0x8158e945 can_proto_unregister +EXPORT_SYMBOL net/can/can 0x962f8246 can_rx_unregister +EXPORT_SYMBOL net/can/can 0xa6e78426 can_ioctl +EXPORT_SYMBOL net/can/can 0xfa2d8b43 can_rx_register +EXPORT_SYMBOL net/ceph/libceph 0x0016e0ee ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x00ece232 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0x0171c0b9 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x0344d83d ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x05b0db43 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x0691cd46 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x099831af ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x0aa78d49 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x0d61c270 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0x0d6ad935 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x1475bf0d ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x163503cc osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x179b481b osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0x197effcb ceph_osdc_release_request +EXPORT_SYMBOL net/ceph/libceph 0x1987d51f ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x1bed0442 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x1c885fb7 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x1cdc4722 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x1d54aa61 ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0x1f09c68e ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x20107aaf ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x2f040c7f osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x3667edd6 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0x37b795b2 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3d5b1334 ceph_monc_create_snapid +EXPORT_SYMBOL net/ceph/libceph 0x3d843c36 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x3df0ec7c ceph_calc_ceph_pg +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x3f895ad2 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x4205ffd7 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x43efd647 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x4769a98a ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x499a3d26 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0x49cd6fc3 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x4a283545 ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x4b6e3511 ceph_osdc_unregister_linger_request +EXPORT_SYMBOL net/ceph/libceph 0x5057fde0 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x5456eea1 ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x570ceb67 ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x5aeff1b6 osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x5f57863f ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x63a43797 osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x65cc3dc2 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6b967e2e ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x6c5d5ac1 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x6da61ece ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0x7168baf8 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0x723f66af ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x72f8e72b ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x77692acb ceph_msg_last_put +EXPORT_SYMBOL net/ceph/libceph 0x78785789 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x7930e8ef osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0x81eae1b6 ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0x844e756e ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x86313165 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x86c9a7d7 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0x89baa7ad ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0x8c2e1da3 ceph_copy_page_vector_to_user +EXPORT_SYMBOL net/ceph/libceph 0x8ea14831 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x91d71305 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x943a35dd ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x94b96853 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9b753030 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x9ba2ef6e ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x9ce14ead ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xad8a2ec5 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xaff30f9f ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xb84b355b ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0xbe68bcc6 osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc55de604 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xc7e69dcd ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0xc85e3b27 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xcc885755 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xcf81a33c osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xd0e18204 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd45565ab osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xd6d8ffeb ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xe82c9c32 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0xe8956c4a ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0xed229339 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xef025332 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xefc4e2e0 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xf36e3294 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0xf5774cba ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0xf88b35a5 ceph_osdc_new_request +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xc6d94af6 dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/ieee802154 0x131c669d wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0x28b06f08 ieee802154_nl_scan_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x29675a0a ieee802154_nl_disassoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x59ee505e wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x60648562 wpan_phy_alloc +EXPORT_SYMBOL net/ieee802154/ieee802154 0x66552f65 ieee802154_nl_beacon_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x69b95ea4 ieee802154_nl_assoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0xba7a6540 ieee802154_nl_assoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xbc4f4217 ieee802154_nl_disassoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xbe4f7597 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0xcace0c79 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0xe589828a ieee802154_nl_start_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xedf1167d wpan_phy_unregister +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x6d6ce638 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x7d730ef7 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xd14b0438 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x951e14a6 ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x9feb7b51 ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xac632b9e ipt_unregister_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x5fa06e66 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0x71848084 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x030c5602 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x845c4c69 ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x1ab136bb ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xf7a1748a ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xfefce7e8 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x5ec0aab2 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0x800aa96e xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xbd191465 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xf68ff959 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x5028553a ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x6b7721fd ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x76a9e3f5 ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xbbb85efd ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xbc22aaae ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xc22fd827 ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xe7fb41a0 ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xeb34a70f ircomm_data_request +EXPORT_SYMBOL net/irda/irda 0x01590a8b irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x0304fba9 irttp_dup +EXPORT_SYMBOL net/irda/irda 0x041570a9 irias_insert_object +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x07015ee1 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x0dddde1f irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x1a9f11b6 hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0x2036ad06 irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x2a17732a hashbin_insert +EXPORT_SYMBOL net/irda/irda 0x2c8a6dde irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x395ab205 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x44ce1054 iriap_close +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x56b99f6a hashbin_new +EXPORT_SYMBOL net/irda/irda 0x63cf0243 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x6876a2ea alloc_irdadev +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 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7d005ac5 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0x7de04a2c irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x8913b062 irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0x8ea3a559 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x9516f690 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x993ad14b irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x9f770777 irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0xa84a23c5 irlmp_disconnect_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 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 0xc0386b0d irda_notify_init +EXPORT_SYMBOL net/irda/irda 0xc407916a irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0xc562bc74 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0xcb93cace irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0xcbe9a56b async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0xd22e8861 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0xd6b11952 irlap_open +EXPORT_SYMBOL net/irda/irda 0xd7702e20 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xd88c0725 irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0xdd988ce6 hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xdf4eb019 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0xe58ba397 hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0xe7aa593d hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0xe915c5e5 irlap_close +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xf0f25ffe hashbin_remove +EXPORT_SYMBOL net/irda/irda 0xf4d69560 irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0xf53dde7b iriap_open +EXPORT_SYMBOL net/irda/irda 0xfac88bf8 irlmp_open_lsap +EXPORT_SYMBOL net/l2tp/l2tp_core 0x4be373e4 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x099fe3b8 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x4642c3ea lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x7d9aa966 lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x9beb4923 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0xb92840b9 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0xc6dedfd3 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0xfaa56c82 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0xfeb27da4 lapb_unregister +EXPORT_SYMBOL net/llc/llc 0x01c8da1d llc_sap_close +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x51d38186 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x68830306 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x6d3a0104 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x7c77bd4c llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0xbb2291eb llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0xcc49b2b2 llc_sap_list_lock +EXPORT_SYMBOL net/llc/llc 0xf2524921 llc_sap_find +EXPORT_SYMBOL net/mac80211/mac80211 0x009376f2 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x0154695c ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x032068ff ieee80211_alloc_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x069c2d6d ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x0832f2ef ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x14851848 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x1802f51d ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x19acce03 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x1ae66ee9 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x21a2ae71 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x260a5eb6 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x2b999464 ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x2ce2fcdb ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x3178410c wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x34907ed0 ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x386c2b69 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x3a0f61ef ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x3f3c78a1 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x452ab5ec ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x457b4dda ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x545951cd ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x582dd992 ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x5b550dae ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x5c28cca5 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x61611c83 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x628de87d ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x62d82097 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x62e5d031 ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x64e42812 ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0x686b917b ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x68d97ffc ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x73ae7379 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x76208efb ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0x77d20162 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x79028599 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x792438bc ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x79b38934 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x7e01c8dd ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x7e0cf46f ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x7e46ddd4 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x7fc14b35 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x8bbdc52e ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x8c4be61a ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x8ebb592f ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x8fed4448 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x995d4043 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x99c5a210 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x9c5e6334 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0x9d2640b6 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x9d2865e6 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x9e24601d ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xa1fc36c4 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xaa157485 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0xbf45c454 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xc47ba067 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xc7e9782e ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xcccafe99 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xcce9e142 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0xd5689a17 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xd5b7bf4d ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xdbc517bb ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0xddb47d52 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xe207a8f9 ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0xf161217b __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xf1c07682 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0xf382f819 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xf395de03 ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0xf5dca19a ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xf7ba1543 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xf924a9bb ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0xf99d8195 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0xff9b8401 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0x49f43dd6 ieee802154_alloc_device +EXPORT_SYMBOL net/mac802154/mac802154 0xa938a458 ieee802154_register_device +EXPORT_SYMBOL net/mac802154/mac802154 0xb30bba5e ieee802154_free_device +EXPORT_SYMBOL net/mac802154/mac802154 0xbd2d4178 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0xf9a9249f ieee802154_unregister_device +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x01806b5c ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x054582ab ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x07fe5416 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x1719b383 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x26b86c2b ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x326e86fe ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x4e1d27d4 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x797ff5e3 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x80c73861 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x8e601989 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb7c87ee0 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb7d70485 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd47587cf ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xeb589c7f register_ip_vs_app +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x19b87588 __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x7318a7d4 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xa18c584b nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_conntrack_proto_gre 0xad58bc26 nf_ct_gre_keymap_flush +EXPORT_SYMBOL net/netfilter/nf_nat 0x201750a9 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x3b1b1eee nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0x5a38e8fe nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0x8a9f0288 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0x8beefb10 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xcd368c5b nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/x_tables 0x08c473b7 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x16a2060b xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x16e56576 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x253e8b44 xt_compat_init_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x2dc18432 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x3286602b xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x4af0f01b xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x94ec424c xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x9915c623 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x9a7b963e xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xa25fc115 xt_compat_check_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0xb28f5ef1 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xd2a14ac7 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0xd87ae60d xt_check_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0xdd18eb3e xt_register_matches +EXPORT_SYMBOL net/nfc/hci/hci 0x0fdde909 nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0x11c13162 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x3081c1b7 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x3c1fefa2 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x3f76e1da nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x6337faa1 nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x7678c213 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x85d018e5 nfc_hci_send_response +EXPORT_SYMBOL net/nfc/hci/hci 0x86913c3c nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x8905ccb9 nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0x8d015f48 nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0x9cc965e3 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xcae56cb4 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0xdc4180cc nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0xf0bbfaa5 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0xf32df331 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0xf4c021ef nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0xf8b34c17 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/nci/nci 0x25e19e06 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x3e78af48 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x89d28655 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x8f10b4c2 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xd92174d5 nci_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x05aa5286 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x297ce0aa nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0x2d8ddf9f nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x3312ab4d nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0x3a177189 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x4210c5e3 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x517be375 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x551e38b3 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0x55603f89 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0x63b8b07c nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x6c6301ff nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x85ddd570 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x88b98944 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x9774e6e4 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0xaa01df0b nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0xb8e6ec35 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0xc18992a0 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xd455ef42 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0xe3b4be7f nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0xf01f5916 nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc_digital 0x335430d0 nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x55c2808e nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x7f9dd6ac nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xfa26eb55 nfc_digital_register_device +EXPORT_SYMBOL net/phonet/phonet 0x43a644c7 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x58f9a498 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0x5f8f3f2f pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0x62c535b7 pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x63ed0a1d phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x80c6c8ae pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0xa69d3f4e phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0xdcbe25b1 phonet_proto_unregister +EXPORT_SYMBOL net/rds/rds 0x7505d413 rds_str_array +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x039cb9c4 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x2485c068 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x25386daa key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x4d7274f2 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x56656872 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x58b35c28 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x636d8216 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x71c68b4c rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x78531a1a rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x926ae684 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb6c9883a rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xbc40845e rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc3d3a70e rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf167eafd rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xff6ad361 rxrpc_get_null_key +EXPORT_SYMBOL net/sctp/sctp 0x60c84eb8 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x357f1896 gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x65a54e9f gss_mech_get +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x718893a0 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/sunrpc 0x58aec3da svc_pool_stats_open +EXPORT_SYMBOL net/wimax/wimax 0x769e2435 wimax_reset +EXPORT_SYMBOL net/wimax/wimax 0x9ed368d9 wimax_rfkill +EXPORT_SYMBOL net/wireless/cfg80211 0x00d164f8 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x028923ff cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x030a8893 cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0a502fb7 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x0d37f7ce wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x105b60b0 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x17285dab ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1d19977f cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x1f299263 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x24f7c409 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x29075242 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x3491babe cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x37517878 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x3a4f462b cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x3bdd8ebe regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x3e8a96e2 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x406a8302 cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x44ca0962 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x47102846 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x49af0608 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x4c3b5878 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x4c40b2fb ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x4dc99e11 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x508c6d04 wiphy_new +EXPORT_SYMBOL net/wireless/cfg80211 0x549ae50f ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x54d742bd cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x57b013d2 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x5a8767e8 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x5dfe073f cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0x65dcc5a6 cfg80211_inform_bss_width_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x6dd99874 cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0x6eef392a cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x72259088 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x725f75c2 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x734de293 cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x76f3b03a ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x7934b6e6 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x7e07e5c8 cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x822a3734 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x874fd507 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x8992006b cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x8acb263d cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x8eeaaba8 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x91439daa cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x97640664 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x98ce3f03 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x9abae967 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0x9dee2a3f cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x9ec4a6b0 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0xa1425906 ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa3ef99c2 cfg80211_del_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xa48064a2 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xaac5cbde cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xaaff933f cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xaf4075bb cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0xb0e3f728 cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0xb2fe6b34 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0xbb3b6c5e cfg80211_inform_bss_width +EXPORT_SYMBOL net/wireless/cfg80211 0xc15c8611 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc8ff15de cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0xca4868fc cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0xcf618a57 cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0xd5d529d4 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0xd7ef5ea9 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0xda201f56 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xdd10de6b cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xe62cd00f cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0xee42db3c cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0xefdfbdc2 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xefe4a6c5 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xf6290c89 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0xf93afa34 cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0xfb45d4e2 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x2130ca7d lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0x2d0f99e5 print_ssid +EXPORT_SYMBOL net/wireless/lib80211 0x51ca08d7 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x6e133276 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0x98be4fdf lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xb84d7123 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xd64bc080 lib80211_crypt_info_init +EXPORT_SYMBOL vmlinux 0x00000000 __symbol_put +EXPORT_SYMBOL vmlinux 0x00000000 current_fs_time +EXPORT_SYMBOL vmlinux 0x00000000 d_tmpfile +EXPORT_SYMBOL vmlinux 0x00000000 do_sync_read +EXPORT_SYMBOL vmlinux 0x00000000 filp_close +EXPORT_SYMBOL vmlinux 0x00000000 finish_open +EXPORT_SYMBOL vmlinux 0x00000000 generic_getxattr +EXPORT_SYMBOL vmlinux 0x00000000 generic_write_sync +EXPORT_SYMBOL vmlinux 0x00000000 get_unmapped_area +EXPORT_SYMBOL vmlinux 0x00000000 in_group_p +EXPORT_SYMBOL vmlinux 0x00000000 inode_add_bytes +EXPORT_SYMBOL vmlinux 0x00000000 iov_shorten +EXPORT_SYMBOL vmlinux 0x00000000 iterate_fd +EXPORT_SYMBOL vmlinux 0x00000000 ns_capable +EXPORT_SYMBOL vmlinux 0x00000000 path_is_under +EXPORT_SYMBOL vmlinux 0x00000000 register_exec_domain +EXPORT_SYMBOL vmlinux 0x00000000 sock_register +EXPORT_SYMBOL vmlinux 0x00000000 sys_close +EXPORT_SYMBOL vmlinux 0x00000000 task_nice +EXPORT_SYMBOL vmlinux 0x00000000 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x00000000 vm_brk +EXPORT_SYMBOL vmlinux 0x0007e4b5 idr_for_each +EXPORT_SYMBOL vmlinux 0x002a9437 inet6_ioctl +EXPORT_SYMBOL vmlinux 0x004d3e30 netdev_err +EXPORT_SYMBOL vmlinux 0x006f1836 seq_escape +EXPORT_SYMBOL vmlinux 0x00801678 flush_scheduled_work +EXPORT_SYMBOL vmlinux 0x0080968b of_dev_get +EXPORT_SYMBOL vmlinux 0x00bf9f91 efi +EXPORT_SYMBOL vmlinux 0x00ce9122 __lock_buffer +EXPORT_SYMBOL vmlinux 0x00cf4a7f of_get_parent +EXPORT_SYMBOL vmlinux 0x00eef49e __strnlen_user +EXPORT_SYMBOL vmlinux 0x00fcad70 module_put +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x01031b88 __idr_remove_all +EXPORT_SYMBOL vmlinux 0x010bad5d dma_release_from_coherent +EXPORT_SYMBOL vmlinux 0x010d423a alloc_fddidev +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x0131e325 proc_symlink +EXPORT_SYMBOL vmlinux 0x0135fab8 dev_open +EXPORT_SYMBOL vmlinux 0x01454f01 generic_write_checks +EXPORT_SYMBOL vmlinux 0x01466016 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x0153ca06 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x0171d14d tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0x017439f8 netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0x01790e94 csum_partial_copy +EXPORT_SYMBOL vmlinux 0x01902adf netpoll_trap +EXPORT_SYMBOL vmlinux 0x01a6596b fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0x01cc1e2a vlan_vid_add +EXPORT_SYMBOL vmlinux 0x01f08f67 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x01f55f8b pm860x_page_reg_read +EXPORT_SYMBOL vmlinux 0x01fc82eb netif_receive_skb +EXPORT_SYMBOL vmlinux 0x0206f421 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x020908f4 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x0213ecf0 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x02359c23 get_thermal_instance +EXPORT_SYMBOL vmlinux 0x0245de43 clocksource_unregister +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 0x02a31eae ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02cdcc6c xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x03135828 register_netdev +EXPORT_SYMBOL vmlinux 0x032375d7 mmc_release_host +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x033937ac compat_tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x033ebe17 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x035f891b down_interruptible +EXPORT_SYMBOL vmlinux 0x03653272 set_user_nice +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x03736674 dmam_release_declared_memory +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x03a096c8 fasync_helper +EXPORT_SYMBOL vmlinux 0x03ae6d60 skb_copy_datagram_iovec +EXPORT_SYMBOL vmlinux 0x03c06156 bitmap_fold +EXPORT_SYMBOL vmlinux 0x03c4e728 of_phy_find_device +EXPORT_SYMBOL vmlinux 0x03c887da serio_open +EXPORT_SYMBOL vmlinux 0x03ce58f5 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x03de7d5b dentry_path_raw +EXPORT_SYMBOL vmlinux 0x03e4f64b pci_set_mwi +EXPORT_SYMBOL vmlinux 0x03eac8ea user_path_create +EXPORT_SYMBOL vmlinux 0x03ebda85 dns_query +EXPORT_SYMBOL vmlinux 0x03f80661 compat_tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x04029542 __scsi_add_device +EXPORT_SYMBOL vmlinux 0x040620d2 page_follow_link_light +EXPORT_SYMBOL vmlinux 0x04155955 i2c_register_driver +EXPORT_SYMBOL vmlinux 0x0418de62 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x044f70fa pci_enable_msi_block_auto +EXPORT_SYMBOL vmlinux 0x045b6cab free_netdev +EXPORT_SYMBOL vmlinux 0x047ab05b igrab +EXPORT_SYMBOL vmlinux 0x0487e579 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x04beefa2 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x04cf1a55 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04ea5d10 ksize +EXPORT_SYMBOL vmlinux 0x04fadfaf mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x0516829c __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x05186ca4 flush_icache_range +EXPORT_SYMBOL vmlinux 0x051c9bb2 pci_bus_get +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x052460fd kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x054434d6 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x05455c7f page_symlink +EXPORT_SYMBOL vmlinux 0x05495005 dentry_unhash +EXPORT_SYMBOL vmlinux 0x054f55f7 ipmi_smi_add_proc_entry +EXPORT_SYMBOL vmlinux 0x055c8559 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x05705e72 blk_mq_insert_request +EXPORT_SYMBOL vmlinux 0x0577a98c brioctl_set +EXPORT_SYMBOL vmlinux 0x0593a99b init_timer_key +EXPORT_SYMBOL vmlinux 0x05a35cc7 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x05b6c610 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x05c67dac mem_cgroup_subsys +EXPORT_SYMBOL vmlinux 0x05e5b273 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x05f208f4 sock_from_file +EXPORT_SYMBOL vmlinux 0x05f49320 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x063d4bbe inet_bind +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x0699f8b6 blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x06a166f7 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x06aaadf8 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x06c10a93 d_find_any_alias +EXPORT_SYMBOL vmlinux 0x06db1c0a uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x06dedb79 twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x071478ad pcim_iounmap +EXPORT_SYMBOL vmlinux 0x0718a35d __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x072430bd padata_free +EXPORT_SYMBOL vmlinux 0x0725e57a jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x075231d5 inet6_bind +EXPORT_SYMBOL vmlinux 0x07599993 scsi_scan_host +EXPORT_SYMBOL vmlinux 0x076fbf44 idr_replace +EXPORT_SYMBOL vmlinux 0x0777c910 tc_classify +EXPORT_SYMBOL vmlinux 0x0799aca4 local_bh_enable +EXPORT_SYMBOL vmlinux 0x079e8d06 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07d66ff7 md_unregister_thread +EXPORT_SYMBOL vmlinux 0x07e43636 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x07f91348 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x08220d02 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083c2cbe of_get_next_parent +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x08439695 pci_disable_msix +EXPORT_SYMBOL vmlinux 0x08526218 netif_napi_del +EXPORT_SYMBOL vmlinux 0x08b9d405 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x08c3437b fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x08ccd776 netif_skb_dev_features +EXPORT_SYMBOL vmlinux 0x08e88919 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x090c318d unregister_netdev +EXPORT_SYMBOL vmlinux 0x091e52f5 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x09387ab8 try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x093bfc3f proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x0971afc6 kern_unmount +EXPORT_SYMBOL vmlinux 0x097a1d9b inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x0992780d efi_enabled +EXPORT_SYMBOL vmlinux 0x0996b27e blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x09a275f7 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x09b6f6ea iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09d571f2 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x0a1b838f dump_skip +EXPORT_SYMBOL vmlinux 0x0a1c5ac6 devfreq_interval_update +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a4d4b9a dev_mc_sync +EXPORT_SYMBOL vmlinux 0x0a52a5ea vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x0a6bd8e6 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x0a6ecc9c ata_link_printk +EXPORT_SYMBOL vmlinux 0x0a727b52 bdget_disk +EXPORT_SYMBOL vmlinux 0x0a83dc9a i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x0a863199 serio_reconnect +EXPORT_SYMBOL vmlinux 0x0a9f87bd ipmi_smi_watcher_register +EXPORT_SYMBOL vmlinux 0x0aa1de8d blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x0acb1a3c __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ae7ddd7 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x0aea3cf8 get_gendisk +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b18bc7e kset_unregister +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b4252b3 skb_trim +EXPORT_SYMBOL vmlinux 0x0b4e2a18 netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x0b56a6cc alloc_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b7b066b __skb_dst_set_noref +EXPORT_SYMBOL vmlinux 0x0b7bdb8e input_set_capability +EXPORT_SYMBOL vmlinux 0x0b80955a iget_failed +EXPORT_SYMBOL vmlinux 0x0ba223da sock_recvmsg +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0c1617b4 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x0c191d71 fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0x0c19fd4c simple_dentry_operations +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c62107a request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x0c65e73c scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0x0c87c5b0 pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0x0c8c9e99 scsi_show_extd_sense +EXPORT_SYMBOL vmlinux 0x0c929390 bio_advance +EXPORT_SYMBOL vmlinux 0x0ca8b824 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cbfa21e inet6_protos +EXPORT_SYMBOL vmlinux 0x0ce900af blk_finish_plug +EXPORT_SYMBOL vmlinux 0x0d131ef4 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x0d358a53 proto_register +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d8fc531 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0da426f8 posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x0da447a7 __idr_get_new_above +EXPORT_SYMBOL vmlinux 0x0dac69a2 freeze_bdev +EXPORT_SYMBOL vmlinux 0x0dcaf71d genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x0dcbe589 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x0dd765fe dma_alloc_from_coherent +EXPORT_SYMBOL vmlinux 0x0dd80bf8 scsi_setup_fs_cmnd +EXPORT_SYMBOL vmlinux 0x0de6a43e max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x0df0f2dc scsi_host_get +EXPORT_SYMBOL vmlinux 0x0e102747 generic_pipe_buf_map +EXPORT_SYMBOL vmlinux 0x0e1178e2 __f_setown +EXPORT_SYMBOL vmlinux 0x0e1c26a4 skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x0e3200c0 vexpress_config_bridge_register +EXPORT_SYMBOL vmlinux 0x0e569827 dev_add_offload +EXPORT_SYMBOL vmlinux 0x0e5ccf53 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0x0e6345cb poll_freewait +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e72d039 blk_init_queue +EXPORT_SYMBOL vmlinux 0x0e75d4a2 __ps2_command +EXPORT_SYMBOL vmlinux 0x0e969de0 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x0ea8ff70 __getblk +EXPORT_SYMBOL vmlinux 0x0eab113d mmc_erase +EXPORT_SYMBOL vmlinux 0x0eae840e mdiobus_register +EXPORT_SYMBOL vmlinux 0x0ed270ae proc_set_size +EXPORT_SYMBOL vmlinux 0x0ef39602 scsi_remove_target +EXPORT_SYMBOL vmlinux 0x0efc61a8 kobject_put +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f161fbd register_netdevice +EXPORT_SYMBOL vmlinux 0x0f191672 dev_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x0f481315 gen10g_config_aneg +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f7bbcc2 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fbb0113 blk_init_tags +EXPORT_SYMBOL vmlinux 0x0fcbe70e grab_cache_page_nowait +EXPORT_SYMBOL vmlinux 0x0fe0243b __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x0fe0c496 kernel_accept +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x0ff2c759 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x0ffe1093 disk_stack_limits +EXPORT_SYMBOL vmlinux 0x1008b1e6 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x1008ccf9 bio_phys_segments +EXPORT_SYMBOL vmlinux 0x1049518f scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x1063b36d gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x1072a394 csum_partial_copy_from_user +EXPORT_SYMBOL vmlinux 0x109e5fb7 mii_check_link +EXPORT_SYMBOL vmlinux 0x10aa80c9 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x10b46a6e blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0x10be9454 vga_get +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x11142657 compat_ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x11267875 scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0x112d0840 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x1137ed5b pci_save_state +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x116618e2 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x11709416 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x1174de91 phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x118bf2b5 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x11a09d3a __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x11a9717d __serio_register_driver +EXPORT_SYMBOL vmlinux 0x11ac8961 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x11aedc07 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x11b255e0 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x11b3f8ea dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x11c9185c of_iomap +EXPORT_SYMBOL vmlinux 0x11e2ec12 flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x11e661a3 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x11f7edd9 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x120a01ae user_revoke +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x12144545 follow_down +EXPORT_SYMBOL vmlinux 0x122043a8 of_find_node_with_property +EXPORT_SYMBOL vmlinux 0x12383948 __scm_send +EXPORT_SYMBOL vmlinux 0x12388da8 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x124749ab con_copy_unimap +EXPORT_SYMBOL vmlinux 0x1250360d lockref_get +EXPORT_SYMBOL vmlinux 0x129c8a5a splice_from_pipe_next +EXPORT_SYMBOL vmlinux 0x129e2094 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12dfeb12 vprintk_emit +EXPORT_SYMBOL vmlinux 0x1305d532 ucs2_strncmp +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x1342d0ad udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x1348760d ipmi_request_settime +EXPORT_SYMBOL vmlinux 0x138af0fb pcim_pin_device +EXPORT_SYMBOL vmlinux 0x13a86cd3 cdrom_check_events +EXPORT_SYMBOL vmlinux 0x13d01871 dev_mc_add +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13d2096f amba_release_regions +EXPORT_SYMBOL vmlinux 0x13e6f51f mii_check_media +EXPORT_SYMBOL vmlinux 0x13f811b3 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x141afec1 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x141da6bb con_is_bound +EXPORT_SYMBOL vmlinux 0x1422edb0 vfs_mkdir +EXPORT_SYMBOL vmlinux 0x142a4630 blk_get_request +EXPORT_SYMBOL vmlinux 0x146d4a9a __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x146ebd93 fsync_bdev +EXPORT_SYMBOL vmlinux 0x1470b0c9 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0x147ce1cb vc_resize +EXPORT_SYMBOL vmlinux 0x14823b6e netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0x14883611 of_device_register +EXPORT_SYMBOL vmlinux 0x14ad4ddc update_time +EXPORT_SYMBOL vmlinux 0x14af10fd sock_create_lite +EXPORT_SYMBOL vmlinux 0x14da9e34 netpoll_rx_disable +EXPORT_SYMBOL vmlinux 0x14db2340 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x14f3b11b inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0x14f80c31 neigh_table_clear +EXPORT_SYMBOL vmlinux 0x1503ff43 netpoll_print_options +EXPORT_SYMBOL vmlinux 0x1517899d mount_ns +EXPORT_SYMBOL vmlinux 0x15200c00 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x153183de blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x1551dc51 bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x158aae9f bdi_register +EXPORT_SYMBOL vmlinux 0x15f571ec blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x160d4964 single_open_size +EXPORT_SYMBOL vmlinux 0x16168047 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x16305289 warn_slowpath_null +EXPORT_SYMBOL vmlinux 0x163dad68 udp_ioctl +EXPORT_SYMBOL vmlinux 0x163f9133 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x1666ca97 compat_sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x16766435 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x167c5967 print_hex_dump +EXPORT_SYMBOL vmlinux 0x16866a15 drop_super +EXPORT_SYMBOL vmlinux 0x16c169a1 unregister_key_type +EXPORT_SYMBOL vmlinux 0x16c77548 devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL vmlinux 0x16fd7ef2 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x17166156 __generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x171876f4 amba_device_unregister +EXPORT_SYMBOL vmlinux 0x172c948c free_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x17327d19 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x175b9165 dst_alloc +EXPORT_SYMBOL vmlinux 0x177760e1 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x17a142df __copy_from_user +EXPORT_SYMBOL vmlinux 0x17a412e2 kill_pid +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17b42d26 mmc_remove_host +EXPORT_SYMBOL vmlinux 0x17d15b7a dev_set_mtu +EXPORT_SYMBOL vmlinux 0x182b649e alloc_pci_dev +EXPORT_SYMBOL vmlinux 0x183eb805 lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x184e6c85 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x185fef81 __napi_schedule +EXPORT_SYMBOL vmlinux 0x186e548e blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x1874f953 sk_dst_check +EXPORT_SYMBOL vmlinux 0x1882bc7d tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18b48e28 __memset_io +EXPORT_SYMBOL vmlinux 0x19031d81 qdisc_reset +EXPORT_SYMBOL vmlinux 0x193c0c46 dmam_pool_create +EXPORT_SYMBOL vmlinux 0x19444627 memcpy_fromiovecend +EXPORT_SYMBOL vmlinux 0x197efd90 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19b1743b generic_mii_ioctl +EXPORT_SYMBOL vmlinux 0x19bae5ea tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19c44193 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL vmlinux 0x1a211826 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x1a2c0088 generic_file_splice_write +EXPORT_SYMBOL vmlinux 0x1a49f868 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x1a4dbf34 scsi_calculate_bounce_limit +EXPORT_SYMBOL vmlinux 0x1a5f5e78 locks_copy_lock +EXPORT_SYMBOL vmlinux 0x1a6b24ee bitmap_unplug +EXPORT_SYMBOL vmlinux 0x1a6f59e7 key_reject_and_link +EXPORT_SYMBOL vmlinux 0x1a87305f netpoll_rx_enable +EXPORT_SYMBOL vmlinux 0x1a9d1634 phy_init_eee +EXPORT_SYMBOL vmlinux 0x1aa6d51a tty_port_close_end +EXPORT_SYMBOL vmlinux 0x1aa8eee4 inet_register_protosw +EXPORT_SYMBOL vmlinux 0x1ab7bef8 do_splice_direct +EXPORT_SYMBOL vmlinux 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL vmlinux 0x1ac5d3cb strcspn +EXPORT_SYMBOL vmlinux 0x1ace138d bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b0aea14 serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b3069cf max8998_update_reg +EXPORT_SYMBOL vmlinux 0x1b353088 clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b670079 update_region +EXPORT_SYMBOL vmlinux 0x1b68087d devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x1b6eed45 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x1b754cb5 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b8c42c9 tcf_register_action +EXPORT_SYMBOL vmlinux 0x1b9c5cfd dev_close +EXPORT_SYMBOL vmlinux 0x1b9c85dd pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x1b9e0ff1 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x1bca2a90 prepare_to_wait +EXPORT_SYMBOL vmlinux 0x1bcd25cb request_key_async +EXPORT_SYMBOL vmlinux 0x1bdc26cf sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0x1bdfc30d mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x1bdfc9da __alloc_skb +EXPORT_SYMBOL vmlinux 0x1be2c6e5 inet_select_addr +EXPORT_SYMBOL vmlinux 0x1c0d3146 locks_free_lock +EXPORT_SYMBOL vmlinux 0x1c2bba52 d_obtain_alias +EXPORT_SYMBOL vmlinux 0x1c2fe04b swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0x1c300d77 find_get_page +EXPORT_SYMBOL vmlinux 0x1c3a1133 scsi_free_command +EXPORT_SYMBOL vmlinux 0x1c3e02e4 memcmp +EXPORT_SYMBOL vmlinux 0x1c4743da input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x1c531058 dm_get_device +EXPORT_SYMBOL vmlinux 0x1c57ab99 d_prune_aliases +EXPORT_SYMBOL vmlinux 0x1c6a0f69 eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0x1c79fe76 neigh_table_init +EXPORT_SYMBOL vmlinux 0x1cb0aedb mutex_trylock +EXPORT_SYMBOL vmlinux 0x1ce7a974 from_kprojid +EXPORT_SYMBOL vmlinux 0x1d03dacf dquot_file_open +EXPORT_SYMBOL vmlinux 0x1d28a111 padata_do_serial +EXPORT_SYMBOL vmlinux 0x1d315303 phy_device_register +EXPORT_SYMBOL vmlinux 0x1d3a4534 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x1d68b107 vfs_setpos +EXPORT_SYMBOL vmlinux 0x1d89bdac neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x1d92d898 complete_and_exit +EXPORT_SYMBOL vmlinux 0x1d97b11e __dquot_free_space +EXPORT_SYMBOL vmlinux 0x1d97fc9e netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x1da8bafe inet_frag_evictor +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1dd7d74a loop_backing_file +EXPORT_SYMBOL vmlinux 0x1df834dc of_phy_connect +EXPORT_SYMBOL vmlinux 0x1e047854 warn_slowpath_fmt +EXPORT_SYMBOL vmlinux 0x1e166df5 simple_fill_super +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e5ab472 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e76bff0 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x1e7b362f simple_readpage +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ea06663 _raw_write_lock +EXPORT_SYMBOL vmlinux 0x1ea705c0 netdev_notice +EXPORT_SYMBOL vmlinux 0x1ec3bed9 hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0x1ec4eb34 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x1ed9a16a sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x1ee30258 mii_ethtool_gset +EXPORT_SYMBOL vmlinux 0x1ee7ad36 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x1f36f8d4 vga_put +EXPORT_SYMBOL vmlinux 0x1f39cd16 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x1f6a4551 blk_start_queue +EXPORT_SYMBOL vmlinux 0x1f6ce67a sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x1f9a18d9 have_submounts +EXPORT_SYMBOL vmlinux 0x1fb1ffbe mount_bdev +EXPORT_SYMBOL vmlinux 0x1fb3c200 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x1fb68374 generic_show_options +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fcf4d4b _raw_read_unlock_bh +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 0x20055384 down_read +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x201e2f3a kill_anon_super +EXPORT_SYMBOL vmlinux 0x2042bf12 dev_addr_init +EXPORT_SYMBOL vmlinux 0x204346af proc_dostring +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x2057df95 pci_enable_ltr +EXPORT_SYMBOL vmlinux 0x205e0c70 start_tty +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x2073f033 km_new_mapping +EXPORT_SYMBOL vmlinux 0x207a0d33 devm_iounmap +EXPORT_SYMBOL vmlinux 0x20819f22 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x209221c1 generic_readlink +EXPORT_SYMBOL vmlinux 0x209a163d alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20a86b3f of_get_pci_address +EXPORT_SYMBOL vmlinux 0x20aca528 bio_copy_data +EXPORT_SYMBOL vmlinux 0x20b163ef fb_set_suspend +EXPORT_SYMBOL vmlinux 0x20b2bb2d param_array_ops +EXPORT_SYMBOL vmlinux 0x20b95c81 security_file_permission +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20eadeb6 ip_compute_csum +EXPORT_SYMBOL vmlinux 0x20ed34f5 of_dev_put +EXPORT_SYMBOL vmlinux 0x20fd1856 __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x20ffa7f6 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0x210d429f pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x213aeb44 dump_align +EXPORT_SYMBOL vmlinux 0x215ebd78 bitrev16 +EXPORT_SYMBOL vmlinux 0x217dda13 flex_array_get +EXPORT_SYMBOL vmlinux 0x219c8acb register_sysctl +EXPORT_SYMBOL vmlinux 0x21a60905 bio_put +EXPORT_SYMBOL vmlinux 0x21aaaec5 ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x21ab6a41 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x21e4e6b6 ida_destroy +EXPORT_SYMBOL vmlinux 0x21ee225e __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x21f9ca9d sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x224ff4ad wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x225df2be bio_reset +EXPORT_SYMBOL vmlinux 0x22626966 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x227d97d6 tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x228b00dc neigh_lookup +EXPORT_SYMBOL vmlinux 0x22a52e70 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x22aef928 bio_endio +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22b83fbf unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0x22baea3d proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x22c7a1d8 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0x22cbca77 vfs_unlink +EXPORT_SYMBOL vmlinux 0x22d813e9 blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0x22f3429c default_llseek +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x231ddafa init_buffer +EXPORT_SYMBOL vmlinux 0x23274774 check_disk_size_change +EXPORT_SYMBOL vmlinux 0x23329956 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x234fd38a dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x23532c4d ftrace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x236f78b8 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x2390ce2b __devm_request_region +EXPORT_SYMBOL vmlinux 0x239e4631 set_bh_page +EXPORT_SYMBOL vmlinux 0x23a433c4 nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23b844ad module_refcount +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c8f257 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x23c9891c kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x23df7f4c serio_unregister_port +EXPORT_SYMBOL vmlinux 0x23e1ae1f pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x241698b3 nf_log_packet +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x2442bcda pci_enable_msi_block +EXPORT_SYMBOL vmlinux 0x2445b230 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x244b58b1 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x24554b35 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x2484adc3 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0x24b0f90c of_clk_get_by_name +EXPORT_SYMBOL vmlinux 0x24b338c2 find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x24b3dd3a ip_check_defrag +EXPORT_SYMBOL vmlinux 0x24c666e0 pci_choose_state +EXPORT_SYMBOL vmlinux 0x24e3219c jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x24efb392 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x24f23624 pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x24f6df5d xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x2507575c generic_write_end +EXPORT_SYMBOL vmlinux 0x25132e73 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x252a8984 of_phy_connect_fixed_link +EXPORT_SYMBOL vmlinux 0x25374b37 fail_migrate_page +EXPORT_SYMBOL vmlinux 0x255bb072 change_bit +EXPORT_SYMBOL vmlinux 0x2560af8a i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x258f4708 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x25c677c4 mac_pton +EXPORT_SYMBOL vmlinux 0x25e46ec7 amba_device_register +EXPORT_SYMBOL vmlinux 0x25f223d5 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x25f851dd i2c_use_client +EXPORT_SYMBOL vmlinux 0x260cf8f8 of_get_property +EXPORT_SYMBOL vmlinux 0x26376b73 km_policy_notify +EXPORT_SYMBOL vmlinux 0x2639b50b qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x264d5285 mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x2651bc6a devm_gpiod_get +EXPORT_SYMBOL vmlinux 0x2660cad8 bio_integrity_tag_size +EXPORT_SYMBOL vmlinux 0x2662866e input_get_keycode +EXPORT_SYMBOL vmlinux 0x2665d53a key_create_or_update +EXPORT_SYMBOL vmlinux 0x267c2bbf ip_ct_attach +EXPORT_SYMBOL vmlinux 0x2685c3d7 __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x2685cd4a devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x26954a0a do_splice_to +EXPORT_SYMBOL vmlinux 0x26b54057 netdev_features_change +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26f0453a blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x26ff937f dquot_alloc +EXPORT_SYMBOL vmlinux 0x270063f7 uart_suspend_port +EXPORT_SYMBOL vmlinux 0x2700daff of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0x271286ff udp_add_offload +EXPORT_SYMBOL vmlinux 0x2712f4f5 crc32_le_combine +EXPORT_SYMBOL vmlinux 0x2724ba66 __ioremap +EXPORT_SYMBOL vmlinux 0x27256bcd devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0x273a82e1 neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x2769521e blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x2799ff77 tcp_disconnect +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27c5eefa __sb_start_write +EXPORT_SYMBOL vmlinux 0x27d5c1ab twl6040_power +EXPORT_SYMBOL vmlinux 0x27d6b38d sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27e57b89 skb_tx_error +EXPORT_SYMBOL vmlinux 0x2817f773 max8925_set_bits +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x282f8418 inet_add_protocol +EXPORT_SYMBOL vmlinux 0x28318305 snprintf +EXPORT_SYMBOL vmlinux 0x2833b92b unlock_page +EXPORT_SYMBOL vmlinux 0x284f2bdb blk_mq_alloc_reserved_request +EXPORT_SYMBOL vmlinux 0x28641dd4 input_reset_device +EXPORT_SYMBOL vmlinux 0x286fa6d7 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x287b3328 sock_no_bind +EXPORT_SYMBOL vmlinux 0x287ba4df pci_iounmap +EXPORT_SYMBOL vmlinux 0x287d8760 vfs_getattr +EXPORT_SYMBOL vmlinux 0x2891c6b0 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x28930183 input_unregister_handle +EXPORT_SYMBOL vmlinux 0x289ef2e8 block_write_begin +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28abfe6e scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x28b8147d tcp_seq_open +EXPORT_SYMBOL vmlinux 0x28d7ffea lg_local_unlock +EXPORT_SYMBOL vmlinux 0x290b1587 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x29123c3d ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x29190f4f insert_inode_locked +EXPORT_SYMBOL vmlinux 0x291a6aec sock_wake_async +EXPORT_SYMBOL vmlinux 0x291ba05d udplite_table +EXPORT_SYMBOL vmlinux 0x2929fe83 skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x2937f8ce simple_rmdir +EXPORT_SYMBOL vmlinux 0x2938a2ed ida_pre_get +EXPORT_SYMBOL vmlinux 0x2948543e sock_kmalloc +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x2988008e framebuffer_release +EXPORT_SYMBOL vmlinux 0x29ae4bb7 dma_mmap_from_coherent +EXPORT_SYMBOL vmlinux 0x29bb5489 skb_store_bits +EXPORT_SYMBOL vmlinux 0x29cb2202 blk_mq_init_commands +EXPORT_SYMBOL vmlinux 0x29d96b35 napi_complete +EXPORT_SYMBOL vmlinux 0x2a047e57 mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0x2a1d67ee phy_start +EXPORT_SYMBOL vmlinux 0x2a2ff596 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a6125ea kmem_cache_create +EXPORT_SYMBOL vmlinux 0x2a62e269 blk_integrity_register +EXPORT_SYMBOL vmlinux 0x2a75d18b blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x2a79ac13 clkdev_add +EXPORT_SYMBOL vmlinux 0x2a805a48 make_kuid +EXPORT_SYMBOL vmlinux 0x2a841c56 inode_dio_done +EXPORT_SYMBOL vmlinux 0x2a960726 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x2a972505 gen10g_restart_aneg +EXPORT_SYMBOL vmlinux 0x2aa1ad41 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x2aad1e87 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x2aae74f6 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x2ab5a11b __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x2ac3f052 unregister_nls +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2af3e390 alloc_mdio_bitbang +EXPORT_SYMBOL vmlinux 0x2af50cbe account_page_dirtied +EXPORT_SYMBOL vmlinux 0x2afd163b pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b51a058 arp_invalidate +EXPORT_SYMBOL vmlinux 0x2b5372c1 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x2b5d23b3 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x2b84c09a pipe_to_file +EXPORT_SYMBOL vmlinux 0x2b89d93e give_up_console +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba24929 inode_set_bytes +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bacd21e commit_creds +EXPORT_SYMBOL vmlinux 0x2bd2d5df would_dump +EXPORT_SYMBOL vmlinux 0x2bd6abf4 dst_discard +EXPORT_SYMBOL vmlinux 0x2bd96537 mmc_cleanup_queue +EXPORT_SYMBOL vmlinux 0x2bdd6e28 node_states +EXPORT_SYMBOL vmlinux 0x2be0f12d dql_completed +EXPORT_SYMBOL vmlinux 0x2be5c558 idr_get_next +EXPORT_SYMBOL vmlinux 0x2becf85e tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x2bf1fad1 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x2bf875d8 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x2c1178d2 load_nls_default +EXPORT_SYMBOL vmlinux 0x2c2166e7 alloc_file +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c5773b6 skb_queue_purge +EXPORT_SYMBOL vmlinux 0x2c6c88cb generic_file_mmap +EXPORT_SYMBOL vmlinux 0x2c7c8e9a pcibios_min_mem +EXPORT_SYMBOL vmlinux 0x2c82db8e seq_vprintf +EXPORT_SYMBOL vmlinux 0x2c82f7d0 input_register_handle +EXPORT_SYMBOL vmlinux 0x2c8c2a32 bio_integrity_get_tag +EXPORT_SYMBOL vmlinux 0x2c94a8d1 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x2cbac846 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x2cc3e146 lease_modify +EXPORT_SYMBOL vmlinux 0x2cd128b9 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x2cd28f38 dev_change_flags +EXPORT_SYMBOL vmlinux 0x2cf73cb7 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x2d03c10d posix_acl_create +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d37342e cpu_online_mask +EXPORT_SYMBOL vmlinux 0x2d719aa0 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x2d784386 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x2d7f5d7b __dquot_transfer +EXPORT_SYMBOL vmlinux 0x2d89342a scsi_show_sense_hdr +EXPORT_SYMBOL vmlinux 0x2daaaba9 param_get_byte +EXPORT_SYMBOL vmlinux 0x2dce2f1c __irq_regs +EXPORT_SYMBOL vmlinux 0x2de1327b bit_waitqueue +EXPORT_SYMBOL vmlinux 0x2de513f0 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2dedad3c skb_queue_head +EXPORT_SYMBOL vmlinux 0x2df7194a swiotlb_sync_single_for_device +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 0x2e3f8175 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x2e5c694e kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x2e6b0746 phy_drivers_register +EXPORT_SYMBOL vmlinux 0x2e7be112 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0x2e8523d4 write_inode_now +EXPORT_SYMBOL vmlinux 0x2ea4c1c9 lg_global_unlock +EXPORT_SYMBOL vmlinux 0x2eb455b4 md_check_recovery +EXPORT_SYMBOL vmlinux 0x2ee5c8fc mmc_can_erase +EXPORT_SYMBOL vmlinux 0x2eeceb42 sk_chk_filter +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 0x2f23aafe ipmi_register_smi +EXPORT_SYMBOL vmlinux 0x2f2c44fa __get_user_pages +EXPORT_SYMBOL vmlinux 0x2f346357 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x2f3857e2 _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0x2f4cb2ef dquot_free_inode +EXPORT_SYMBOL vmlinux 0x2f735f52 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x2f8305a2 skb_clone +EXPORT_SYMBOL vmlinux 0x2fa507f4 wireless_send_event +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fbd9c4c lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0x2fd6996c locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2ff7725e vlan_vid_del +EXPORT_SYMBOL vmlinux 0x2ffb6884 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x3040b3cc phy_device_create +EXPORT_SYMBOL vmlinux 0x304ec72b _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x30514949 unlock_buffer +EXPORT_SYMBOL vmlinux 0x30539040 generic_file_fsync +EXPORT_SYMBOL vmlinux 0x3058e059 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0x305cec12 _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x30948588 dev_disable_lro +EXPORT_SYMBOL vmlinux 0x309b4ca9 complete_request_key +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30abfd66 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x30ae5a49 pci_restore_state +EXPORT_SYMBOL vmlinux 0x30cada8f radix_tree_next_hole +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x30e764aa proc_set_user +EXPORT_SYMBOL vmlinux 0x30f35ba0 idr_remove +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x311230bc inet_listen +EXPORT_SYMBOL vmlinux 0x313e61ee blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x315c65fd zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x31652006 dm_io +EXPORT_SYMBOL vmlinux 0x31805f80 __net_get_random_once +EXPORT_SYMBOL vmlinux 0x318cadb1 reciprocal_value +EXPORT_SYMBOL vmlinux 0x319c7f03 of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0x31ef78c5 vm_map_ram +EXPORT_SYMBOL vmlinux 0x31fee9eb proc_mkdir +EXPORT_SYMBOL vmlinux 0x3209e5d6 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x320d2d11 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x3224d283 ping_prot +EXPORT_SYMBOL vmlinux 0x322f48d4 abx500_dump_all_banks +EXPORT_SYMBOL vmlinux 0x32309123 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x3235b39d __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x324b3877 up +EXPORT_SYMBOL vmlinux 0x324ddb95 sockfd_lookup +EXPORT_SYMBOL vmlinux 0x3253b6c7 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x32691eba tty_pair_get_pty +EXPORT_SYMBOL vmlinux 0x327bf883 of_can_translate_address +EXPORT_SYMBOL vmlinux 0x327db9df mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x32892656 sk_wait_data +EXPORT_SYMBOL vmlinux 0x32c22f4b sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x32e87af8 udp6_csum_init +EXPORT_SYMBOL vmlinux 0x33275a06 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x333cb37c __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x33a61c78 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x33ba5cd4 param_ops_bool +EXPORT_SYMBOL vmlinux 0x33c6525e __find_get_block +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33cc2cdf kfree_put_link +EXPORT_SYMBOL vmlinux 0x33df92b7 compat_sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x33fcf44a __kfifo_out_r +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x341db6e1 pci_set_ltr +EXPORT_SYMBOL vmlinux 0x344f135f skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x345f692d __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x347eb9bd param_set_bool +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34babeed tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x34beeace tty_pair_get_tty +EXPORT_SYMBOL vmlinux 0x34e85ec0 phy_disconnect +EXPORT_SYMBOL vmlinux 0x34ef96ed pagecache_write_end +EXPORT_SYMBOL vmlinux 0x34f0c0be fb_set_var +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x3504bc14 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x3530696e blk_mq_free_queue +EXPORT_SYMBOL vmlinux 0x3539f11b match_strlcpy +EXPORT_SYMBOL vmlinux 0x353b7d03 pci_find_capability +EXPORT_SYMBOL vmlinux 0x354cf092 dev_load +EXPORT_SYMBOL vmlinux 0x35818f87 mmc_gpio_free_ro +EXPORT_SYMBOL vmlinux 0x359365e9 ll_rw_block +EXPORT_SYMBOL vmlinux 0x35a387ab pci_scan_slot +EXPORT_SYMBOL vmlinux 0x35c58585 account_page_redirty +EXPORT_SYMBOL vmlinux 0x35d68716 tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x35defc50 iov_iter_advance +EXPORT_SYMBOL vmlinux 0x35f2048e ihold +EXPORT_SYMBOL vmlinux 0x36044803 bio_copy_user +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x360f8f8a __cond_resched_lock +EXPORT_SYMBOL vmlinux 0x360ff19f down +EXPORT_SYMBOL vmlinux 0x367c767b dma_pool_create +EXPORT_SYMBOL vmlinux 0x368382e2 of_get_named_gpiod_flags +EXPORT_SYMBOL vmlinux 0x36887ef9 done_path_create +EXPORT_SYMBOL vmlinux 0x368d9a5e kthread_stop +EXPORT_SYMBOL vmlinux 0x369e1115 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x36b1d82b security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36ccc75c input_open_device +EXPORT_SYMBOL vmlinux 0x36cd4fb3 skb_unlink +EXPORT_SYMBOL vmlinux 0x36d7b11a of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0x36d8b81a netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x36e360e3 __hw_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x370574c7 phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x37302fd6 vfs_read +EXPORT_SYMBOL vmlinux 0x37430858 ipmi_smi_watcher_unregister +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x374a2621 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x374ab060 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x37594cdd arp_tbl +EXPORT_SYMBOL vmlinux 0x37627ecc d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0x37a64eb7 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37d67645 kmalloc_caches +EXPORT_SYMBOL vmlinux 0x380c74f9 ppp_unit_number +EXPORT_SYMBOL vmlinux 0x380ee87a abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0x38172196 no_llseek +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x382daca0 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x383e9735 of_phy_attach +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388f9128 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x38906ec9 seq_path +EXPORT_SYMBOL vmlinux 0x38a006a1 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x38a0146c sock_i_ino +EXPORT_SYMBOL vmlinux 0x38a3a8eb bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38db7863 override_creds +EXPORT_SYMBOL vmlinux 0x38f485e7 sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x3903e2c4 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x3908f8d6 block_invalidatepage +EXPORT_SYMBOL vmlinux 0x391e8809 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x393b900f seq_release_private +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x3951d118 i2c_master_send +EXPORT_SYMBOL vmlinux 0x3955fcf6 __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x3973f646 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x397e62d3 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x3993a655 simple_rename +EXPORT_SYMBOL vmlinux 0x399ad043 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0x39a9655b blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x39aabb13 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x39b97c01 security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0x39d04c91 phy_driver_register +EXPORT_SYMBOL vmlinux 0x3a20ff73 __crc32c_le +EXPORT_SYMBOL vmlinux 0x3a38b4ad page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x3a452459 cdev_del +EXPORT_SYMBOL vmlinux 0x3a57135d register_gifconf +EXPORT_SYMBOL vmlinux 0x3a687cb5 uart_add_one_port +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3ab41b25 __copy_in_user +EXPORT_SYMBOL vmlinux 0x3acc75ce mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0x3adc2fc8 get_fs_type +EXPORT_SYMBOL vmlinux 0x3af28d01 phy_start_aneg +EXPORT_SYMBOL vmlinux 0x3afc0e35 seq_printf +EXPORT_SYMBOL vmlinux 0x3b0e2db9 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0x3b0fe53b jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x3b29dab4 simple_unlink +EXPORT_SYMBOL vmlinux 0x3b300948 percpu_counter_set +EXPORT_SYMBOL vmlinux 0x3b3f6d8f scsi_register +EXPORT_SYMBOL vmlinux 0x3b57bc15 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x3b60738d pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x3b6b7142 __skb_checksum +EXPORT_SYMBOL vmlinux 0x3ba26c5c pid_task +EXPORT_SYMBOL vmlinux 0x3bab760a redraw_screen +EXPORT_SYMBOL vmlinux 0x3bbdb3ac bdev_read_only +EXPORT_SYMBOL vmlinux 0x3bc77b5b scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x3bd1b1f6 msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x3bdd35c1 dev_mc_del +EXPORT_SYMBOL vmlinux 0x3bec4357 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x3bef03b9 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x3bf05eeb netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x3c0d4b06 downgrade_write +EXPORT_SYMBOL vmlinux 0x3c128e37 d_add_ci +EXPORT_SYMBOL vmlinux 0x3c21d1b0 blk_register_region +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c8d87c3 netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x3c8d9685 skb_insert +EXPORT_SYMBOL vmlinux 0x3c956445 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x3c9d1211 string_get_size +EXPORT_SYMBOL vmlinux 0x3ca3f77f blk_make_request +EXPORT_SYMBOL vmlinux 0x3cc09001 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x3cc369e2 __break_lease +EXPORT_SYMBOL vmlinux 0x3cdf5e60 dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3cea1d2a lro_flush_pkt +EXPORT_SYMBOL vmlinux 0x3cfae893 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x3d093081 __percpu_counter_add +EXPORT_SYMBOL vmlinux 0x3d0c688b lro_receive_skb +EXPORT_SYMBOL vmlinux 0x3d0e0c8a md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0x3d287060 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x3d35301f netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x3d3b9f30 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x3d41904f of_get_next_child +EXPORT_SYMBOL vmlinux 0x3d4528f0 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x3d5844b3 strnicmp +EXPORT_SYMBOL vmlinux 0x3d66330b mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x3d9ee9f0 clear_page +EXPORT_SYMBOL vmlinux 0x3d9fb270 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0x3da2a84a mddev_congested +EXPORT_SYMBOL vmlinux 0x3daed9db tty_vhangup +EXPORT_SYMBOL vmlinux 0x3dc0cf77 del_gendisk +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dedcd6f skb_copy_and_csum_datagram_iovec +EXPORT_SYMBOL vmlinux 0x3df6b8e5 tcp_syn_flood_action +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e1e6513 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x3e2492bc dev_notice +EXPORT_SYMBOL vmlinux 0x3e2c9829 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x3e4c8843 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x3e4e4c8d pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0x3e698ee4 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x3e6d4e66 submit_bio_wait +EXPORT_SYMBOL vmlinux 0x3e88fbf3 pci_set_power_state +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e92ce22 fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0x3ea7afe1 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x3ea86bea cap_mmap_file +EXPORT_SYMBOL vmlinux 0x3ea8e150 eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x3eb05930 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x3ed63055 zlib_inflateReset +EXPORT_SYMBOL vmlinux 0x3ee73053 compat_mc_setsockopt +EXPORT_SYMBOL vmlinux 0x3ef55996 set_disk_ro +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f22ecb7 block_write_full_page +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f4747a0 scsi_prep_fn +EXPORT_SYMBOL vmlinux 0x3f4eb4d6 netdev_info +EXPORT_SYMBOL vmlinux 0x3f636444 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x3f7ca78e sk_alloc +EXPORT_SYMBOL vmlinux 0x3fa7823e pci_pme_capable +EXPORT_SYMBOL vmlinux 0x3fb6185a d_move +EXPORT_SYMBOL vmlinux 0x3fb88511 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x3fc80257 tcf_hash_create +EXPORT_SYMBOL vmlinux 0x3fd55724 of_n_size_cells +EXPORT_SYMBOL vmlinux 0x3fda0948 pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0x3fe2ccbe memweight +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3ff62317 local_bh_disable +EXPORT_SYMBOL vmlinux 0x4010c566 pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0x4021b5a4 scsi_remove_host +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x402fcdb5 __locks_copy_lock +EXPORT_SYMBOL vmlinux 0x4045888b neigh_update +EXPORT_SYMBOL vmlinux 0x4048a759 uart_get_divisor +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x405f42a4 address_space_init_once +EXPORT_SYMBOL vmlinux 0x4075ea21 dquot_destroy +EXPORT_SYMBOL vmlinux 0x408060f8 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x4091db05 kill_fasync +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x409873e3 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x4098d4c9 security_inode_permission +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40da74ac sg_miter_stop +EXPORT_SYMBOL vmlinux 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL vmlinux 0x4100cfc7 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x41042924 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x410f71d6 alloc_anon_inode +EXPORT_SYMBOL vmlinux 0x410fd406 dma_common_mmap +EXPORT_SYMBOL vmlinux 0x41182cc0 pgprot_default +EXPORT_SYMBOL vmlinux 0x411930f3 bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x414be2f9 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x417d5491 neigh_destroy +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x419aa661 bd_set_size +EXPORT_SYMBOL vmlinux 0x41a3093f inet_ioctl +EXPORT_SYMBOL vmlinux 0x41a9e14f mutex_lock +EXPORT_SYMBOL vmlinux 0x41bbd21f xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x41bf6947 iget5_locked +EXPORT_SYMBOL vmlinux 0x41c3f4c9 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x41c72803 ata_port_printk +EXPORT_SYMBOL vmlinux 0x41ce4135 padata_alloc +EXPORT_SYMBOL vmlinux 0x41ece3e1 dev_uc_sync +EXPORT_SYMBOL vmlinux 0x41fb8fde file_ns_capable +EXPORT_SYMBOL vmlinux 0x4205b4ee __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x42103a54 netlink_net_capable +EXPORT_SYMBOL vmlinux 0x4211c3c1 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x42169f49 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x4227b8f8 load_nls +EXPORT_SYMBOL vmlinux 0x42324133 idr_find_slowpath +EXPORT_SYMBOL vmlinux 0x42350e8d ucs2_strlen +EXPORT_SYMBOL vmlinux 0x423b776a ipmi_create_user +EXPORT_SYMBOL vmlinux 0x42963de3 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x42977ad4 __hw_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x429ca788 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42aa3421 mdio_bus_type +EXPORT_SYMBOL vmlinux 0x42ae5af0 dqstats +EXPORT_SYMBOL vmlinux 0x42af7d0f blk_get_queue +EXPORT_SYMBOL vmlinux 0x42df729a of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x42e7edc8 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x431f0c79 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x433cde3e pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x434ab542 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x43632d7d of_find_property +EXPORT_SYMBOL vmlinux 0x4365cbd9 security_path_chown +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x439ec390 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x43bdb634 touch_buffer +EXPORT_SYMBOL vmlinux 0x43c2a786 __cpu_clear_user_page +EXPORT_SYMBOL vmlinux 0x43eef441 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x4430249d consume_skb +EXPORT_SYMBOL vmlinux 0x446f4381 scsi_nonblockable_ioctl +EXPORT_SYMBOL vmlinux 0x44739989 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x4476f493 tty_set_operations +EXPORT_SYMBOL vmlinux 0x44787845 blk_recount_segments +EXPORT_SYMBOL vmlinux 0x448eac3e kmemdup +EXPORT_SYMBOL vmlinux 0x44b8ee47 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x44d37c97 netdev_change_features +EXPORT_SYMBOL vmlinux 0x44dddc83 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x44e7f137 simple_empty +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44f44c44 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x44f5e8b5 of_allnodes +EXPORT_SYMBOL vmlinux 0x44f6769a mount_pseudo +EXPORT_SYMBOL vmlinux 0x452bc758 pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0x45346658 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x4549a8d7 registered_fb +EXPORT_SYMBOL vmlinux 0x454d6c1a pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0x454eac71 arp_send +EXPORT_SYMBOL vmlinux 0x455ae06b set_blocksize +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x458a3ab2 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x459b8c7e write_cache_pages +EXPORT_SYMBOL vmlinux 0x45a55ec8 __iounmap +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45e29b31 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0x45e666c3 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x45fe330e bdevname +EXPORT_SYMBOL vmlinux 0x461ac773 kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x461c6236 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x462c660f proc_dointvec +EXPORT_SYMBOL vmlinux 0x463966f9 key_validate +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46608fa0 getnstimeofday +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x468bcda6 cpumask_set_cpu_local_first +EXPORT_SYMBOL vmlinux 0x46d764dd nf_unregister_hook +EXPORT_SYMBOL vmlinux 0x46ef8f6a generic_file_aio_read +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x470d8e09 dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x4757e396 __put_cred +EXPORT_SYMBOL vmlinux 0x4760a08b __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x476235a4 tcp_prot +EXPORT_SYMBOL vmlinux 0x477b885e __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x478b4d2c cdev_alloc +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479b64c6 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47b3f862 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0x47b6a10f ftrace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x47bcf84c param_set_ulong +EXPORT_SYMBOL vmlinux 0x47c8baf4 param_ops_uint +EXPORT_SYMBOL vmlinux 0x47e17598 pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0x47fadc30 mii_ethtool_sset +EXPORT_SYMBOL vmlinux 0x48034724 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x48034f13 pci_dev_get +EXPORT_SYMBOL vmlinux 0x4829a47e memcpy +EXPORT_SYMBOL vmlinux 0x482a2a49 param_set_charp +EXPORT_SYMBOL vmlinux 0x48358349 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0x4841bdee strnchr +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x4863425a elv_rb_del +EXPORT_SYMBOL vmlinux 0x4896b293 from_kgid_munged +EXPORT_SYMBOL vmlinux 0x48a66da1 flush_old_exec +EXPORT_SYMBOL vmlinux 0x48b05cbe mark_page_accessed +EXPORT_SYMBOL vmlinux 0x48c6db53 of_get_child_by_name +EXPORT_SYMBOL vmlinux 0x48dd8c70 tcf_hash_release +EXPORT_SYMBOL vmlinux 0x48e8ca4e clear_bdi_congested +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x4913befc rwsem_is_locked +EXPORT_SYMBOL vmlinux 0x491809ab pci_iomap +EXPORT_SYMBOL vmlinux 0x492c5755 dma_ops +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x49703d78 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x4974c11f netdev_lower_dev_get_private_rcu +EXPORT_SYMBOL vmlinux 0x4988b660 dev_emerg +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49ca9988 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x49d47c25 skb_pull +EXPORT_SYMBOL vmlinux 0x49da3140 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x49e58f34 flush_signals +EXPORT_SYMBOL vmlinux 0x49ebeb67 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x4a05e02f account_page_writeback +EXPORT_SYMBOL vmlinux 0x4a11c696 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x4a1f70df simple_write_end +EXPORT_SYMBOL vmlinux 0x4a358252 __bitmap_subset +EXPORT_SYMBOL vmlinux 0x4a3a4916 scsi_dma_map +EXPORT_SYMBOL vmlinux 0x4a8078b0 vfs_mknod +EXPORT_SYMBOL vmlinux 0x4a933e75 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x4a95ee18 d_alloc +EXPORT_SYMBOL vmlinux 0x4ab9b3b3 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x4aba4809 input_flush_device +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4ad3547d xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x4aedc488 key_unlink +EXPORT_SYMBOL vmlinux 0x4af073ac new_inode +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b224f84 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b7645c5 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x4ba7acde netif_carrier_off +EXPORT_SYMBOL vmlinux 0x4bce5086 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x4c1182cb bitmap_scnprintf +EXPORT_SYMBOL vmlinux 0x4c13b20c dev_addr_del +EXPORT_SYMBOL vmlinux 0x4c254ec6 seq_putc +EXPORT_SYMBOL vmlinux 0x4c2860c8 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x4c2da214 vfs_readv +EXPORT_SYMBOL vmlinux 0x4c59b7f6 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x4c6f9ef3 test_and_change_bit +EXPORT_SYMBOL vmlinux 0x4c73b7c1 iget_locked +EXPORT_SYMBOL vmlinux 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL vmlinux 0x4ca9669f scnprintf +EXPORT_SYMBOL vmlinux 0x4cb7c3cb irq_to_desc +EXPORT_SYMBOL vmlinux 0x4cbb515a i2c_master_recv +EXPORT_SYMBOL vmlinux 0x4cbbd171 __bitmap_weight +EXPORT_SYMBOL vmlinux 0x4cc28a25 __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4d0d163d copy_page +EXPORT_SYMBOL vmlinux 0x4d6f1c21 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x4d8676a6 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d975a9c jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4e2b0225 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x4e2b5b9b generic_removexattr +EXPORT_SYMBOL vmlinux 0x4e353b90 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e51e1b4 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e7891a2 generic_file_llseek +EXPORT_SYMBOL vmlinux 0x4e7d4805 __breadahead +EXPORT_SYMBOL vmlinux 0x4e96ea4c ip6_frag_init +EXPORT_SYMBOL vmlinux 0x4e9dffb5 ip_fast_csum +EXPORT_SYMBOL vmlinux 0x4eaa4e46 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x4eb2ce5d fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x4ebc661b blk_mq_run_queues +EXPORT_SYMBOL vmlinux 0x4ecac0f7 dcache_dir_open +EXPORT_SYMBOL vmlinux 0x4edd72f7 block_all_signals +EXPORT_SYMBOL vmlinux 0x4ee3775f splice_from_pipe_end +EXPORT_SYMBOL vmlinux 0x4ef971e1 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x4f0b2d55 fb_class +EXPORT_SYMBOL vmlinux 0x4f0f5810 d_instantiate +EXPORT_SYMBOL vmlinux 0x4f124c1d input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x4f19e23b kfree_skb +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f248523 of_find_node_by_name +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f476e96 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x4f47a96b blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x4f5de371 scsi_host_put +EXPORT_SYMBOL vmlinux 0x4f66fb31 dev_mc_flush +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f7cf63f page_put_link +EXPORT_SYMBOL vmlinux 0x4f832ab9 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x4fbe6fd7 tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0x4fde7876 dm_put_device +EXPORT_SYMBOL vmlinux 0x4fe9a804 compat_nf_getsockopt +EXPORT_SYMBOL vmlinux 0x4fec7e59 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x503c6ca3 init_net +EXPORT_SYMBOL vmlinux 0x50542d11 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x50553a62 seq_write +EXPORT_SYMBOL vmlinux 0x5056e9f8 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x5059bd88 sock_init_data +EXPORT_SYMBOL vmlinux 0x50a90e8d bsearch +EXPORT_SYMBOL vmlinux 0x50ac02c6 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x50c30c28 neigh_ifdown +EXPORT_SYMBOL vmlinux 0x50cd205e set_bdi_congested +EXPORT_SYMBOL vmlinux 0x50d2592d hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0x50db11ec fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x50eb5c8e blk_stop_queue +EXPORT_SYMBOL vmlinux 0x50f1bfaf nla_append +EXPORT_SYMBOL vmlinux 0x50f7a7ef simple_transaction_read +EXPORT_SYMBOL vmlinux 0x5111091d idr_destroy +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x514b7504 tty_lock +EXPORT_SYMBOL vmlinux 0x514c47cc neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x5165bab7 phy_register_fixup +EXPORT_SYMBOL vmlinux 0x51749fc8 _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x5178f69e jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x51a7c0dc unload_nls +EXPORT_SYMBOL vmlinux 0x51a89a5a dcb_setapp +EXPORT_SYMBOL vmlinux 0x51bd644b invalidate_bdev +EXPORT_SYMBOL vmlinux 0x51dce73b xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x51e77c97 pfn_valid +EXPORT_SYMBOL vmlinux 0x51f7c919 nf_log_set +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x521cd3a3 install_exec_creds +EXPORT_SYMBOL vmlinux 0x5239ce3b ___ratelimit +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x52440088 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0x5245f6a4 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL vmlinux 0x525248c0 neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x527602e3 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x528bef00 mmc_cache_ctrl +EXPORT_SYMBOL vmlinux 0x52a442d2 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x52a728af block_truncate_page +EXPORT_SYMBOL vmlinux 0x52ae90a0 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x52b05b2e fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x52b9e52f dev_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x53016fbd __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x531bc7b0 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x532f7dd8 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x5332aa93 skb_dequeue +EXPORT_SYMBOL vmlinux 0x533dc00a scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x53455dc3 inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0x53566680 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0x536074e5 sk_receive_skb +EXPORT_SYMBOL vmlinux 0x5377e556 hex2bin +EXPORT_SYMBOL vmlinux 0x53bb7adf __page_symlink +EXPORT_SYMBOL vmlinux 0x53bfd0d8 d_genocide +EXPORT_SYMBOL vmlinux 0x53ce5535 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x53f8e7b8 __idr_pre_get +EXPORT_SYMBOL vmlinux 0x53fef244 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x5416f5cd ip_cmsg_recv +EXPORT_SYMBOL vmlinux 0x54245b39 kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0x543a44cf __get_page_tail +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x54402097 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x5443b5ca setup_arg_pages +EXPORT_SYMBOL vmlinux 0x544847f0 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x54511a87 tcp_parse_options +EXPORT_SYMBOL vmlinux 0x545ab9a0 pci_pme_active +EXPORT_SYMBOL vmlinux 0x545d0bf0 remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0x54764aca blkdev_put +EXPORT_SYMBOL vmlinux 0x5498791e ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x54a27049 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54abfdde led_set_brightness +EXPORT_SYMBOL vmlinux 0x54bd73d1 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x54e3cc3b param_get_int +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54ec310e eth_header_parse +EXPORT_SYMBOL vmlinux 0x54f856a0 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x54f9e4ec textsearch_unregister +EXPORT_SYMBOL vmlinux 0x55061d7c nobh_writepage +EXPORT_SYMBOL vmlinux 0x550fd12c from_kuid_munged +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x5536cf33 kill_bdev +EXPORT_SYMBOL vmlinux 0x5539062b __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x5568974f dcb_getapp +EXPORT_SYMBOL vmlinux 0x556c2740 hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x5574a726 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x5593724b phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x5594be03 bitmap_remap +EXPORT_SYMBOL vmlinux 0x55c37bee tcf_hash_search +EXPORT_SYMBOL vmlinux 0x55ccd4d2 hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0x55f6dff9 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x560509c8 setattr_copy +EXPORT_SYMBOL vmlinux 0x5614b010 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x56342ce1 down_timeout +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x563aa7c0 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0x5642793a radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x565056d0 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0x5655f5be pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x5677e65f dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x5678506d devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0x5697a3af __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0x569f6156 seq_open_private +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56ddbb2b kernel_write +EXPORT_SYMBOL vmlinux 0x56de7edb jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x57253e53 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x572d0104 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x572ee66b inode_permission +EXPORT_SYMBOL vmlinux 0x57311891 bio_map_kern +EXPORT_SYMBOL vmlinux 0x5739257f netdev_printk +EXPORT_SYMBOL vmlinux 0x573c75cd scsi_add_device +EXPORT_SYMBOL vmlinux 0x5741db02 nf_hook_slow +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x575af70c on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x576b24f6 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x578ea349 bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0x5792f848 strlcpy +EXPORT_SYMBOL vmlinux 0x579b5a9d filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x579fbcd2 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0x57a4b036 dquot_commit +EXPORT_SYMBOL vmlinux 0x57a8792d walk_stackframe +EXPORT_SYMBOL vmlinux 0x57d8dc49 d_path +EXPORT_SYMBOL vmlinux 0x57eb7a71 neigh_connected_output +EXPORT_SYMBOL vmlinux 0x57ecda75 misc_register +EXPORT_SYMBOL vmlinux 0x57ff73fd inet_frag_kill +EXPORT_SYMBOL vmlinux 0x582e4418 neigh_compat_output +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x5867e2fd xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x587a1d41 generic_fillattr +EXPORT_SYMBOL vmlinux 0x5881846c inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x58861373 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x588c130c vexpress_config_func_put +EXPORT_SYMBOL vmlinux 0x58a0c63c eth_change_mtu +EXPORT_SYMBOL vmlinux 0x58cb6304 __skb_get_hash +EXPORT_SYMBOL vmlinux 0x58cc1c1d scsi_register_driver +EXPORT_SYMBOL vmlinux 0x58cd4955 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0x58d1070a of_get_address +EXPORT_SYMBOL vmlinux 0x58dfe06a d_splice_alias +EXPORT_SYMBOL vmlinux 0x58ead79a bio_integrity_split +EXPORT_SYMBOL vmlinux 0x58ec5e18 phy_attach +EXPORT_SYMBOL vmlinux 0x591be234 genl_unregister_family +EXPORT_SYMBOL vmlinux 0x591c5074 pci_clear_master +EXPORT_SYMBOL vmlinux 0x591e575a mmc_can_reset +EXPORT_SYMBOL vmlinux 0x59294fb5 bio_pair_release +EXPORT_SYMBOL vmlinux 0x59408488 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x596772f0 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x597c39d1 __serio_register_port +EXPORT_SYMBOL vmlinux 0x597dda50 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0x5991219c cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x599590f3 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x59a48909 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x59afcbe3 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x59b61546 md_register_thread +EXPORT_SYMBOL vmlinux 0x59f17de3 __netif_schedule +EXPORT_SYMBOL vmlinux 0x5a070832 mmc_free_host +EXPORT_SYMBOL vmlinux 0x5a146457 dquot_enable +EXPORT_SYMBOL vmlinux 0x5a162c8f nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x5a3038ed dm_kobject_release +EXPORT_SYMBOL vmlinux 0x5a4809e2 vfs_readlink +EXPORT_SYMBOL vmlinux 0x5a4d6e55 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x5a4dacec devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x5a5536c2 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x5a571fc3 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x5a6d97fe pci_get_slot +EXPORT_SYMBOL vmlinux 0x5a820a43 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x5a8d0b07 pci_enable_msix +EXPORT_SYMBOL vmlinux 0x5a921311 strncmp +EXPORT_SYMBOL vmlinux 0x5a98b787 find_or_create_page +EXPORT_SYMBOL vmlinux 0x5a9befe5 ida_simple_get +EXPORT_SYMBOL vmlinux 0x5a9c9cf3 lg_lock_init +EXPORT_SYMBOL vmlinux 0x5a9f1d63 memmove +EXPORT_SYMBOL vmlinux 0x5aa8ca35 bio_add_page +EXPORT_SYMBOL vmlinux 0x5ac56b96 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x5aca0fe8 dquot_get_dqinfo +EXPORT_SYMBOL vmlinux 0x5ae49a35 cdrom_open +EXPORT_SYMBOL vmlinux 0x5ae50279 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x5b0ebac3 scsi_block_requests +EXPORT_SYMBOL vmlinux 0x5b12afd2 user_path_at +EXPORT_SYMBOL vmlinux 0x5b236e04 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x5b56860c vm_munmap +EXPORT_SYMBOL vmlinux 0x5b6da602 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x5bc10524 printk_emit +EXPORT_SYMBOL vmlinux 0x5bea9579 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x5c0126c7 block_write_full_page_endio +EXPORT_SYMBOL vmlinux 0x5c220316 mark_info_dirty +EXPORT_SYMBOL vmlinux 0x5c3da5ae __bio_clone +EXPORT_SYMBOL vmlinux 0x5c6e9f11 dev_get_drvdata +EXPORT_SYMBOL vmlinux 0x5c82384f pci_scan_bus_parented +EXPORT_SYMBOL vmlinux 0x5c86e931 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x5c8ae8fc __pagevec_release +EXPORT_SYMBOL vmlinux 0x5c9284a0 processor_id +EXPORT_SYMBOL vmlinux 0x5c98ae54 blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0x5c9d8ae1 bmap +EXPORT_SYMBOL vmlinux 0x5cbf739e __vexpress_config_func_get +EXPORT_SYMBOL vmlinux 0x5cd2f320 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0x5cd3d1e6 security_path_rmdir +EXPORT_SYMBOL vmlinux 0x5cd885d5 _raw_spin_lock +EXPORT_SYMBOL vmlinux 0x5ce91ebf generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5cfaf769 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x5d0c5afe pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x5d112304 __memcpy_fromio +EXPORT_SYMBOL vmlinux 0x5d3227a9 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0x5d41c87c param_ops_charp +EXPORT_SYMBOL vmlinux 0x5d50312b sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d5b5a16 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x5d647db1 inet_stream_connect +EXPORT_SYMBOL vmlinux 0x5d6ce70f pci_reenable_device +EXPORT_SYMBOL vmlinux 0x5d71a9df scsi_execute +EXPORT_SYMBOL vmlinux 0x5d94b228 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0x5d95f4c4 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x5da4692c open_exec +EXPORT_SYMBOL vmlinux 0x5dc8fa07 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x5dd47d47 mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x5de1a4c3 inet_sendpage +EXPORT_SYMBOL vmlinux 0x5e1191c7 simple_link +EXPORT_SYMBOL vmlinux 0x5e2b9468 xfrm_state_update +EXPORT_SYMBOL vmlinux 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5eaa874d blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ed53e67 dump_emit +EXPORT_SYMBOL vmlinux 0x5edb2072 of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f190b02 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x5f3c8f5c mmc_assume_removable +EXPORT_SYMBOL vmlinux 0x5f53aafc inet_del_protocol +EXPORT_SYMBOL vmlinux 0x5f58f676 flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x5f62bdc5 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x5f957c53 net_dma_find_channel +EXPORT_SYMBOL vmlinux 0x5fcba497 compat_ip_setsockopt +EXPORT_SYMBOL vmlinux 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5ff11cc3 pcibios_min_io +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x600798b2 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x6007e007 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0x600c6e2d pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0x600e6aa1 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x6012d3b5 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x602c3f4e sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x604f63dc compat_nf_setsockopt +EXPORT_SYMBOL vmlinux 0x605721a6 unregister_quota_format +EXPORT_SYMBOL vmlinux 0x606770c6 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x607e27cb __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x6093f0fd jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x609f5b35 ucs2_strnlen +EXPORT_SYMBOL vmlinux 0x60a97062 skb_split +EXPORT_SYMBOL vmlinux 0x60bb6858 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x60be1d2a crypto_sha256_update +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60ea7c76 create_empty_buffers +EXPORT_SYMBOL vmlinux 0x6113cfcd directly_mappable_cdev_bdi +EXPORT_SYMBOL vmlinux 0x611a69de lock_fb_info +EXPORT_SYMBOL vmlinux 0x612390ad netpoll_set_trap +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x61538ad0 param_get_charp +EXPORT_SYMBOL vmlinux 0x61585ecc jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x61606234 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x619cb7dd simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x619f2f0f vga_tryget +EXPORT_SYMBOL vmlinux 0x61a598eb get_disk +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x62124417 compat_ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x624c2e42 skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0x6270a5c9 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x62716ade da903x_query_status +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62786537 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x627f7c6a pci_disable_ltr +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x62976607 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x62a04783 pci_enable_ido +EXPORT_SYMBOL vmlinux 0x62a25882 put_page +EXPORT_SYMBOL vmlinux 0x62eea9a3 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x62f54231 led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x631f829e sk_stream_error +EXPORT_SYMBOL vmlinux 0x634f8d9a ps2_handle_response +EXPORT_SYMBOL vmlinux 0x636af51d devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0x637bcd6a get_super_thawed +EXPORT_SYMBOL vmlinux 0x638d4c67 dev_err +EXPORT_SYMBOL vmlinux 0x63a9b464 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x63c3c6e1 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x63c73525 setup_new_exec +EXPORT_SYMBOL vmlinux 0x63d6f87c pci_vpd_truncate +EXPORT_SYMBOL vmlinux 0x63e1292b bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63ff2ba1 release_firmware +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x641e5728 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0x643c7f0e skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x643de003 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x644c4172 tty_throttle +EXPORT_SYMBOL vmlinux 0x644f3589 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x649c04f4 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x64a4b84d cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x64b05665 tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0x64bbc288 string_unescape +EXPORT_SYMBOL vmlinux 0x64dd7198 kernel_getsockname +EXPORT_SYMBOL vmlinux 0x64e1c46f ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0x64ef59c6 generic_setlease +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x652ce9aa nla_memcmp +EXPORT_SYMBOL vmlinux 0x65345022 __wake_up +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x6582179b kernel_getpeername +EXPORT_SYMBOL vmlinux 0x6588f8fd abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x65b9b646 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x65be7717 seq_puts +EXPORT_SYMBOL vmlinux 0x65c146be skb_free_datagram +EXPORT_SYMBOL vmlinux 0x65cecf05 alloc_fcdev +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65e0d6d7 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x65ed9df0 check_disk_change +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x6605f97f flex_array_clear +EXPORT_SYMBOL vmlinux 0x660b510d backlight_force_update +EXPORT_SYMBOL vmlinux 0x66112439 netlink_set_err +EXPORT_SYMBOL vmlinux 0x6618c1a7 __init_rwsem +EXPORT_SYMBOL vmlinux 0x66285630 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x662c5d06 serio_interrupt +EXPORT_SYMBOL vmlinux 0x663da82c tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x66504676 pci_platform_rom +EXPORT_SYMBOL vmlinux 0x66523b08 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x665679e3 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0x665c17a0 blk_sync_queue +EXPORT_SYMBOL vmlinux 0x666a7350 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x667c3dd0 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0x668b4477 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x668da8d5 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x66a67dab flex_array_shrink +EXPORT_SYMBOL vmlinux 0x66c0d238 tcp_read_sock +EXPORT_SYMBOL vmlinux 0x66e42312 genphy_suspend +EXPORT_SYMBOL vmlinux 0x670c4afc kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x6732b820 elevator_init +EXPORT_SYMBOL vmlinux 0x673ecdd7 bio_unmap_user +EXPORT_SYMBOL vmlinux 0x675984ab bio_clone_bioset +EXPORT_SYMBOL vmlinux 0x675b8e28 __napi_complete +EXPORT_SYMBOL vmlinux 0x675b8f61 param_get_string +EXPORT_SYMBOL vmlinux 0x67970359 led_blink_set +EXPORT_SYMBOL vmlinux 0x67ae931f uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67ca2028 __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL vmlinux 0x67deeda0 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x67fb5cfc blk_mq_alloc_single_hw_queue +EXPORT_SYMBOL vmlinux 0x680d40ee pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0x680e953f set_anon_super +EXPORT_SYMBOL vmlinux 0x681fadff sg_miter_next +EXPORT_SYMBOL vmlinux 0x682e1a5e iput +EXPORT_SYMBOL vmlinux 0x68569a4e xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x68643aab swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x68733f91 flush_cache_all +EXPORT_SYMBOL vmlinux 0x68994877 napi_gro_frags +EXPORT_SYMBOL vmlinux 0x689cd2f5 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x68a18241 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x68a31235 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0x68ae6193 ab3100_event_register +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68e05d57 getrawmonotonic +EXPORT_SYMBOL vmlinux 0x690a6fd7 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0x691c6b05 i2c_clients_command +EXPORT_SYMBOL vmlinux 0x691f5df9 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x6933fa3f bio_integrity_set_tag +EXPORT_SYMBOL vmlinux 0x695da97e ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x6962a53e of_platform_device_create +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x69915158 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x699ee63a make_kprojid +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69b5f68a fb_validate_mode +EXPORT_SYMBOL vmlinux 0x69c32357 cookie_check_timestamp +EXPORT_SYMBOL vmlinux 0x69c775dc seq_pad +EXPORT_SYMBOL vmlinux 0x69d38ed9 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x69e06ef3 i2c_transfer +EXPORT_SYMBOL vmlinux 0x69e27c7a bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a056d3a netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x6a37515b free_user_ns +EXPORT_SYMBOL vmlinux 0x6a3abf6f do_truncate +EXPORT_SYMBOL vmlinux 0x6a3f4119 mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a5fa363 sigprocmask +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a8247d7 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0x6a9a260d i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x6a9a74e7 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x6ab6603f dquot_initialize +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6adb7d9c _dev_info +EXPORT_SYMBOL vmlinux 0x6b026480 sock_create +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b077041 amba_find_device +EXPORT_SYMBOL vmlinux 0x6b07d3c2 inet6_del_offload +EXPORT_SYMBOL vmlinux 0x6b165240 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b437eef __nla_reserve +EXPORT_SYMBOL vmlinux 0x6b487e53 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x6b640864 nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6b683020 simple_transaction_release +EXPORT_SYMBOL vmlinux 0x6ba1118d crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x6bc1522f force_sig +EXPORT_SYMBOL vmlinux 0x6bc31b45 dev_warn +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6be11c57 generic_pipe_buf_unmap +EXPORT_SYMBOL vmlinux 0x6beb2078 param_set_copystring +EXPORT_SYMBOL vmlinux 0x6c015594 uart_register_driver +EXPORT_SYMBOL vmlinux 0x6c2cdc47 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0x6c362cc5 __blk_run_queue +EXPORT_SYMBOL vmlinux 0x6c3c33c9 uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c561c88 __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c6ffe45 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c70350a xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x6c8cc89f pci_scan_single_device +EXPORT_SYMBOL vmlinux 0x6c946f4e put_disk +EXPORT_SYMBOL vmlinux 0x6ccf9c0a dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x6cd8c86b __crc32c_le_combine +EXPORT_SYMBOL vmlinux 0x6ce8eaa1 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d19690c phy_connect +EXPORT_SYMBOL vmlinux 0x6d234a40 netif_rx_ni +EXPORT_SYMBOL vmlinux 0x6d27ef64 __bitmap_empty +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d2fabcb lro_flush_all +EXPORT_SYMBOL vmlinux 0x6d340f64 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0x6d46dad4 d_rehash +EXPORT_SYMBOL vmlinux 0x6d56ab99 inet_frag_find +EXPORT_SYMBOL vmlinux 0x6d5a76f4 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0x6da175dc follow_up +EXPORT_SYMBOL vmlinux 0x6db995ca backlight_device_register +EXPORT_SYMBOL vmlinux 0x6ddc5de7 get_phy_device +EXPORT_SYMBOL vmlinux 0x6ded5a8b nf_getsockopt +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6e3de02b fifo_set_limit +EXPORT_SYMBOL vmlinux 0x6e402484 dput +EXPORT_SYMBOL vmlinux 0x6e54f322 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e8d6ec3 __frontswap_load +EXPORT_SYMBOL vmlinux 0x6e9e49bc pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x6ea5119a eth_header +EXPORT_SYMBOL vmlinux 0x6ead5c1d inet_accept +EXPORT_SYMBOL vmlinux 0x6ebc5149 param_ops_long +EXPORT_SYMBOL vmlinux 0x6ee5d127 __brelse +EXPORT_SYMBOL vmlinux 0x6eebb7d6 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x6ef0c45e gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0x6f0b355b pci_write_vpd +EXPORT_SYMBOL vmlinux 0x6f1f4373 clk_get +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f3d4b16 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x6f502720 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0x6f55319e fget_raw +EXPORT_SYMBOL vmlinux 0x6f554c05 ata_dev_printk +EXPORT_SYMBOL vmlinux 0x6f58c50b dget_parent +EXPORT_SYMBOL vmlinux 0x6f5f9ba6 pci_request_regions +EXPORT_SYMBOL vmlinux 0x6f7b39fc fb_blank +EXPORT_SYMBOL vmlinux 0x6f81980c vfs_open +EXPORT_SYMBOL vmlinux 0x6f85f77d tcp_gro_receive +EXPORT_SYMBOL vmlinux 0x6f9bb07c call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fd040ec generic_segment_checks +EXPORT_SYMBOL vmlinux 0x6fea28ea nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x700bd9a0 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x702a6052 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x7033a6e9 textsearch_register +EXPORT_SYMBOL vmlinux 0x7040dc98 set_binfmt +EXPORT_SYMBOL vmlinux 0x7048f9b8 input_register_handler +EXPORT_SYMBOL vmlinux 0x705207fa dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x709c6fd8 mfd_add_devices +EXPORT_SYMBOL vmlinux 0x70a37de3 mmc_register_driver +EXPORT_SYMBOL vmlinux 0x70a84eb6 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x70a93210 d_make_root +EXPORT_SYMBOL vmlinux 0x70bc17d7 inode_wait +EXPORT_SYMBOL vmlinux 0x70d053fd try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0x70dac7d9 nf_afinfo +EXPORT_SYMBOL vmlinux 0x70ddc885 dquot_resume +EXPORT_SYMBOL vmlinux 0x70de2860 fget +EXPORT_SYMBOL vmlinux 0x7101e9e6 proto_unregister +EXPORT_SYMBOL vmlinux 0x71059f04 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x71498877 zerocopy_sg_from_iovec +EXPORT_SYMBOL vmlinux 0x71575ca2 lookup_bdev +EXPORT_SYMBOL vmlinux 0x715c8cc3 uart_update_timeout +EXPORT_SYMBOL vmlinux 0x715e86bf __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x7199ba38 fget_light +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71bb8cfb capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0x71c6705e ppp_input_error +EXPORT_SYMBOL vmlinux 0x72074d9e mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x72149c00 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x722b29de d_alloc_name +EXPORT_SYMBOL vmlinux 0x7244bab8 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x727a99ea mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x727e8bca mmc_request_done +EXPORT_SYMBOL vmlinux 0x72932128 sock_no_mmap +EXPORT_SYMBOL vmlinux 0x7296d8a2 memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x72cb45f2 phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x73176ee1 mount_nodev +EXPORT_SYMBOL vmlinux 0x731bad61 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x73468640 generic_writepages +EXPORT_SYMBOL vmlinux 0x73479732 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x736a2b3a __devm_release_region +EXPORT_SYMBOL vmlinux 0x736c9b81 read_cache_pages +EXPORT_SYMBOL vmlinux 0x737de5e9 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x73af2a3f devm_free_irq +EXPORT_SYMBOL vmlinux 0x73b5ec1c ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x73ba3585 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x73bbcdb0 get_write_access +EXPORT_SYMBOL vmlinux 0x73c1cdfa inet6_getname +EXPORT_SYMBOL vmlinux 0x73e5c8a1 kobject_add +EXPORT_SYMBOL vmlinux 0x7402fdb1 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x74157e77 bio_sector_offset +EXPORT_SYMBOL vmlinux 0x7427526c vsc824x_add_skew +EXPORT_SYMBOL vmlinux 0x743b8810 ip_setsockopt +EXPORT_SYMBOL vmlinux 0x7469fcfe radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x7477c796 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x74785abd free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x748b14ce mmc_detect_change +EXPORT_SYMBOL vmlinux 0x748bda3d ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x7494811f tty_port_open +EXPORT_SYMBOL vmlinux 0x749bd2a9 devm_clk_put +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74cbff9d scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x74ddf215 pci_match_id +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74f2125a deactivate_super +EXPORT_SYMBOL vmlinux 0x7532588a alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x75417268 phy_stop +EXPORT_SYMBOL vmlinux 0x75485c5a splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x754ab749 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x754dac78 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x754e8f38 dev_get_by_name +EXPORT_SYMBOL vmlinux 0x75809ed9 generic_setxattr +EXPORT_SYMBOL vmlinux 0x75850d01 __vmalloc +EXPORT_SYMBOL vmlinux 0x7587aed3 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x758ddad2 filp_open +EXPORT_SYMBOL vmlinux 0x758e7981 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x7599dfe0 netdev_alert +EXPORT_SYMBOL vmlinux 0x759aeff1 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75c730c2 scsi_prep_return +EXPORT_SYMBOL vmlinux 0x75cd79a3 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x75efa257 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x761d6b88 thaw_bdev +EXPORT_SYMBOL vmlinux 0x76234c50 percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x765ff474 crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x76645a0d xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x76787bfe jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x768b85c7 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x769233c9 tc_classify_compat +EXPORT_SYMBOL vmlinux 0x769e06d7 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x76bf656d __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x76cc539a lock_rename +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76ee271c devm_request_and_ioremap +EXPORT_SYMBOL vmlinux 0x771c3ca0 stop_tty +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x772f5fdb scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x773fa409 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x7742cd9b nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x7751e8ac poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x7773cc60 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x778500fc __nla_put +EXPORT_SYMBOL vmlinux 0x7787166d jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x77922571 pci_map_rom +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77a6da43 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77cf6b82 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x77df0847 __set_personality +EXPORT_SYMBOL vmlinux 0x77ecac9f zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x77f1228d blk_put_request +EXPORT_SYMBOL vmlinux 0x77f9d856 dev_driver_string +EXPORT_SYMBOL vmlinux 0x77fdcbcd __d_drop +EXPORT_SYMBOL vmlinux 0x77fddec5 __neigh_event_send +EXPORT_SYMBOL vmlinux 0x78028ad3 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x7803ab98 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x7806f2b0 ipv4_specific +EXPORT_SYMBOL vmlinux 0x780a1c70 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0x7816175a tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x7830e1c4 netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x7846af3e __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x7859aed2 nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0x785bfc3a delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x786b4bcb tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x7870892e xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x78774c02 seq_bitmap_list +EXPORT_SYMBOL vmlinux 0x7879b559 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0x787b43d6 unregister_filesystem +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x7896e388 fs_bio_set +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78b18dd4 key_link +EXPORT_SYMBOL vmlinux 0x78c67542 submit_bio +EXPORT_SYMBOL vmlinux 0x78d30e12 mmc_get_card +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78e6c062 request_firmware +EXPORT_SYMBOL vmlinux 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL vmlinux 0x78febc58 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x7923b8df netif_napi_add +EXPORT_SYMBOL vmlinux 0x79293bb0 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x7930d225 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0x795678dd __free_pages +EXPORT_SYMBOL vmlinux 0x7956c441 xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0x79602843 get_io_context +EXPORT_SYMBOL vmlinux 0x7967baaf padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x797c8fa9 cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x7984eefc key_update +EXPORT_SYMBOL vmlinux 0x79a8251f keyring_search +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79aef36d names_cachep +EXPORT_SYMBOL vmlinux 0x79b3740f dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x7a0a74d0 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x7a188791 prandom_bytes +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a2fe596 genphy_resume +EXPORT_SYMBOL vmlinux 0x7a410737 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a5bb68c udp_sendmsg +EXPORT_SYMBOL vmlinux 0x7a7aa834 path_put +EXPORT_SYMBOL vmlinux 0x7a8c9b63 netdev_crit +EXPORT_SYMBOL vmlinux 0x7a91726b clkdev_alloc +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7aaa488c unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x7ab0d332 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7aca8abb mmc_of_parse +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7ae4f05e set_nlink +EXPORT_SYMBOL vmlinux 0x7af6aff9 security_path_mkdir +EXPORT_SYMBOL vmlinux 0x7af7a17f flock_lock_file_wait +EXPORT_SYMBOL vmlinux 0x7b11b620 free_task +EXPORT_SYMBOL vmlinux 0x7b16235f hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x7b18129a serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x7b26286e try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x7b2aef6c __krealloc +EXPORT_SYMBOL vmlinux 0x7b345f41 do_splice_from +EXPORT_SYMBOL vmlinux 0x7b3f8237 inet_add_offload +EXPORT_SYMBOL vmlinux 0x7b6646bb _raw_read_lock +EXPORT_SYMBOL vmlinux 0x7b6a575b seq_lseek +EXPORT_SYMBOL vmlinux 0x7b6cafb4 pci_set_master +EXPORT_SYMBOL vmlinux 0x7b809578 wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x7b90775c kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x7b92712f i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x7b987702 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x7b9ef7cc iterate_dir +EXPORT_SYMBOL vmlinux 0x7bb1adf9 padata_stop +EXPORT_SYMBOL vmlinux 0x7c0c65a8 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c21405d release_pages +EXPORT_SYMBOL vmlinux 0x7c2d098f krealloc +EXPORT_SYMBOL vmlinux 0x7c34c989 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c63d366 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x7c65e2ac gen10g_read_status +EXPORT_SYMBOL vmlinux 0x7c6e1bac pagevec_lookup +EXPORT_SYMBOL vmlinux 0x7c920d35 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x7c9b7413 generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cc578da param_get_long +EXPORT_SYMBOL vmlinux 0x7cc9f58b pci_disable_ido +EXPORT_SYMBOL vmlinux 0x7cd70778 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7cf148d8 gen10g_resume +EXPORT_SYMBOL vmlinux 0x7cf3a16b put_cmsg +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d0dfabd gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d154fba max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x7d314a62 d_delete +EXPORT_SYMBOL vmlinux 0x7d3c91f7 lock_sock_nested +EXPORT_SYMBOL vmlinux 0x7d6c6675 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x7d794f9c pskb_expand_head +EXPORT_SYMBOL vmlinux 0x7d7af10a devm_gpio_free +EXPORT_SYMBOL vmlinux 0x7dd28f34 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7dfaac60 mount_subtree +EXPORT_SYMBOL vmlinux 0x7e25ea79 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x7e394c4e sysctl_local_reserved_ports +EXPORT_SYMBOL vmlinux 0x7e4ce2de nla_reserve +EXPORT_SYMBOL vmlinux 0x7e8fcee8 xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x7e98d318 vexpress_config_read +EXPORT_SYMBOL vmlinux 0x7ec4ce1f skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x7eca2106 __bread +EXPORT_SYMBOL vmlinux 0x7ecb001b __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x7ed48c37 release_sock +EXPORT_SYMBOL vmlinux 0x7ee04a81 dma_sync_wait +EXPORT_SYMBOL vmlinux 0x7f18dea9 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f330a33 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x7f45aa9b down_write +EXPORT_SYMBOL vmlinux 0x7f4d2612 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x7f4d5086 dev_remove_pack +EXPORT_SYMBOL vmlinux 0x7f5180ac get_task_io_context +EXPORT_SYMBOL vmlinux 0x7f5e3007 input_close_device +EXPORT_SYMBOL vmlinux 0x7fa66dce pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x7fc5fd06 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x7fd0fa9f dev_deactivate +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7fe38f48 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x7fedb52b elv_rb_add +EXPORT_SYMBOL vmlinux 0x7fee5d81 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x800e5766 bdi_unregister +EXPORT_SYMBOL vmlinux 0x80136bf5 mmc_gpio_free_cd +EXPORT_SYMBOL vmlinux 0x8013c91e dst_destroy +EXPORT_SYMBOL vmlinux 0x8027391e simple_transaction_set +EXPORT_SYMBOL vmlinux 0x802d0e93 crc32_le +EXPORT_SYMBOL vmlinux 0x804b75a8 devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0x804f922a ipmi_addr_length +EXPORT_SYMBOL vmlinux 0x80686dde dev_remove_offload +EXPORT_SYMBOL vmlinux 0x8086559d remap_pfn_range +EXPORT_SYMBOL vmlinux 0x80978b6a default_file_splice_read +EXPORT_SYMBOL vmlinux 0x809946af alloc_disk_node +EXPORT_SYMBOL vmlinux 0x80c28241 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80cbc22a tty_register_driver +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80e6c837 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x810915dd tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x813ddba7 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x81490805 prepare_creds +EXPORT_SYMBOL vmlinux 0x814b1122 register_key_type +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x81523ecf __inet6_hash +EXPORT_SYMBOL vmlinux 0x81533963 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x815c56d0 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x81b43d21 md_finish_reshape +EXPORT_SYMBOL vmlinux 0x81bbccef phy_device_free +EXPORT_SYMBOL vmlinux 0x81d10f5f trace_seq_putc +EXPORT_SYMBOL vmlinux 0x81d5efab skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81e74e28 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x81edd104 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x81edf205 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x8212721d xenbus_dev_request_and_reply +EXPORT_SYMBOL vmlinux 0x821f286a tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x82351641 fd_install +EXPORT_SYMBOL vmlinux 0x8251bcc3 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x8254678f tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x8260686f bitmap_find_next_zero_area +EXPORT_SYMBOL vmlinux 0x82680e77 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x82762681 sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x829d562c thaw_super +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82d58c96 iterate_mounts +EXPORT_SYMBOL vmlinux 0x82ea4650 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x830b82a3 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x8327a22e tty_kref_put +EXPORT_SYMBOL vmlinux 0x835f5169 abort_creds +EXPORT_SYMBOL vmlinux 0x837d0fb6 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0x83a476ce bitmap_scnlistprintf +EXPORT_SYMBOL vmlinux 0x83bf4d44 tty_port_close +EXPORT_SYMBOL vmlinux 0x83c0bd38 bio_alloc_pages +EXPORT_SYMBOL vmlinux 0x83d68011 add_disk +EXPORT_SYMBOL vmlinux 0x83db8fd1 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x84060081 xen_poll_irq_timeout +EXPORT_SYMBOL vmlinux 0x84152e14 inet_release +EXPORT_SYMBOL vmlinux 0x841962f8 param_get_ushort +EXPORT_SYMBOL vmlinux 0x842ecb78 sock_i_uid +EXPORT_SYMBOL vmlinux 0x843593ee netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x84608204 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x846bdb3a seq_bitmap +EXPORT_SYMBOL vmlinux 0x847674ed writeback_in_progress +EXPORT_SYMBOL vmlinux 0x848210de md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x849e62cd max8998_write_reg +EXPORT_SYMBOL vmlinux 0x84a9fecd inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x84c6b5a3 scsi_ioctl +EXPORT_SYMBOL vmlinux 0x84e498e2 blk_mq_free_single_hw_queue +EXPORT_SYMBOL vmlinux 0x84f3f41a udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x85061b76 _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0x8509c540 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0x8518eca9 param_get_short +EXPORT_SYMBOL vmlinux 0x853bf7c1 param_set_int +EXPORT_SYMBOL vmlinux 0x855f40c5 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x85786ef5 scsi_put_command +EXPORT_SYMBOL vmlinux 0x85905a2c inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85c607f2 generic_ro_fops +EXPORT_SYMBOL vmlinux 0x85cbb1bd simple_open +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85e4940d ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x85f34679 file_remove_suid +EXPORT_SYMBOL vmlinux 0x8600f958 fb_show_logo +EXPORT_SYMBOL vmlinux 0x86197eeb iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x8639876e of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0x8646fa50 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x8659e3c7 nf_log_unregister +EXPORT_SYMBOL vmlinux 0x865d5f39 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x866ea950 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x86963034 console_start +EXPORT_SYMBOL vmlinux 0x86ad96f7 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x86c78b59 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x86dfaef7 swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0x86ea4d38 complete_all +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x870bf928 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x8728e3db twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x872e6a9f invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x87329d09 skb_copy_datagram_from_iovec +EXPORT_SYMBOL vmlinux 0x873b8ea6 udp_poll +EXPORT_SYMBOL vmlinux 0x875b940c dm_get_mapinfo +EXPORT_SYMBOL vmlinux 0x875bbc0b __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x8779a34f param_ops_byte +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x8799cf85 dquot_acquire +EXPORT_SYMBOL vmlinux 0x87bb5eb4 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x87d01126 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x87efa233 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x88075409 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x88101094 mmc_can_trim +EXPORT_SYMBOL vmlinux 0x881039d0 zlib_inflate +EXPORT_SYMBOL vmlinux 0x8834396c mod_timer +EXPORT_SYMBOL vmlinux 0x88513970 param_set_byte +EXPORT_SYMBOL vmlinux 0x8896a41b kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x88b4e83b down_trylock +EXPORT_SYMBOL vmlinux 0x88d84cc9 d_drop +EXPORT_SYMBOL vmlinux 0x88e39bec pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0x88ecc2fc clocksource_register +EXPORT_SYMBOL vmlinux 0x88f1de0f xfrm_cfg_mutex +EXPORT_SYMBOL vmlinux 0x890c8c08 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x891a01d6 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x8920b6fd replace_mount_options +EXPORT_SYMBOL vmlinux 0x89235601 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x89721a0b rt6_lookup +EXPORT_SYMBOL vmlinux 0x897473df mktime +EXPORT_SYMBOL vmlinux 0x897a794b get_tz_trend +EXPORT_SYMBOL vmlinux 0x897feccd vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x89825f91 tty_mutex +EXPORT_SYMBOL vmlinux 0x89890650 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x898a95ab jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89cbda25 proc_create_data +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89da944f may_umount_tree +EXPORT_SYMBOL vmlinux 0x8a1197b1 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a24c8f7 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x8a3c9d14 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a50d014 write_one_page +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a6af65c kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x8a70fefa sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8a9ce144 cont_write_begin +EXPORT_SYMBOL vmlinux 0x8aa57c4f udp_table +EXPORT_SYMBOL vmlinux 0x8aaa3385 may_umount +EXPORT_SYMBOL vmlinux 0x8ad56b4c keyring_clear +EXPORT_SYMBOL vmlinux 0x8adc2063 pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0x8ae0130c km_query +EXPORT_SYMBOL vmlinux 0x8ae26b3b md_write_start +EXPORT_SYMBOL vmlinux 0x8b1297de sock_edemux +EXPORT_SYMBOL vmlinux 0x8b1a7a66 pcie_aspm_enabled +EXPORT_SYMBOL vmlinux 0x8b236ee7 netdev_state_change +EXPORT_SYMBOL vmlinux 0x8b2c6ae3 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x8b30044f set_page_dirty +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b67da07 notify_change +EXPORT_SYMBOL vmlinux 0x8b8e1978 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0x8b95834b kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x8b9c608f fb_find_mode +EXPORT_SYMBOL vmlinux 0x8bbac5af nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x8bcb31fe ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x8bd0a3fd _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x8bf1a0da mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x8bfbaa72 ppp_input +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c1e30cb __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x8c33a8f5 mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0x8c5c71c4 inode_dio_wait +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c6806c5 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x8c7e17bd rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL vmlinux 0x8c93485f scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x8cc057d8 register_cdrom +EXPORT_SYMBOL vmlinux 0x8cc63cf2 update_devfreq +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8cda8029 xen_clear_irq_pending +EXPORT_SYMBOL vmlinux 0x8ce18c9c inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x8d1e04f5 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x8d2e268b param_ops_ulong +EXPORT_SYMBOL vmlinux 0x8d338dc5 of_get_min_tck +EXPORT_SYMBOL vmlinux 0x8d397b1d input_allocate_device +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d5dc79d unlock_new_inode +EXPORT_SYMBOL vmlinux 0x8d638c35 buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8dc173dd dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x8de5d5cd dma_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x8df92f66 memchr_inv +EXPORT_SYMBOL vmlinux 0x8e099d07 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0x8e17c253 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x8e27dd77 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x8e332829 flush_delayed_work +EXPORT_SYMBOL vmlinux 0x8e404c29 build_skb +EXPORT_SYMBOL vmlinux 0x8e7a19ec bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x8e7e13e1 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x8e864a86 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x8e888ec3 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x8ebaa876 lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0x8ed3a044 kvm_read_guest_atomic +EXPORT_SYMBOL vmlinux 0x8ee8da78 security_path_link +EXPORT_SYMBOL vmlinux 0x8ef86dc1 inode_get_bytes +EXPORT_SYMBOL vmlinux 0x8f3787be panic_notifier_list +EXPORT_SYMBOL vmlinux 0x8f539e14 pci_bus_type +EXPORT_SYMBOL vmlinux 0x8fa35635 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x8fa48241 sleep_on_timeout +EXPORT_SYMBOL vmlinux 0x8faa4598 of_translate_address +EXPORT_SYMBOL vmlinux 0x8fc4a2ea dqput +EXPORT_SYMBOL vmlinux 0x8fd180e7 kernel_neon_begin +EXPORT_SYMBOL vmlinux 0x8fe2fb36 sk_common_release +EXPORT_SYMBOL vmlinux 0x8feca1b8 security_inode_readlink +EXPORT_SYMBOL vmlinux 0x9018e9ff posix_test_lock +EXPORT_SYMBOL vmlinux 0x903aa55f udp_proc_register +EXPORT_SYMBOL vmlinux 0x9040d639 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x90605ad3 zero_fill_bio +EXPORT_SYMBOL vmlinux 0x906ae1fc ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0x908b53ed param_set_short +EXPORT_SYMBOL vmlinux 0x908ec43f abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x90ac3102 dev_base_lock +EXPORT_SYMBOL vmlinux 0x90d12690 pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x90d27de7 blk_end_request +EXPORT_SYMBOL vmlinux 0x90d3cb66 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x90e45d81 pci_get_device +EXPORT_SYMBOL vmlinux 0x90e94b0e blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x90f18533 drop_nlink +EXPORT_SYMBOL vmlinux 0x911069c4 eth_type_trans +EXPORT_SYMBOL vmlinux 0x9114d90b put_io_context +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x9166fada strncpy +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x9187694e set_security_override +EXPORT_SYMBOL vmlinux 0x918c6374 mempool_alloc +EXPORT_SYMBOL vmlinux 0x91ac822f vscnprintf +EXPORT_SYMBOL vmlinux 0x91bd794f md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x91d256a8 vfs_statfs +EXPORT_SYMBOL vmlinux 0x91e6bfdc unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x92268c28 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x925520d2 blk_start_plug +EXPORT_SYMBOL vmlinux 0x926a4088 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x926bb3c7 prepare_binprm +EXPORT_SYMBOL vmlinux 0x9272dff0 __ip_select_ident +EXPORT_SYMBOL vmlinux 0x9288c1db phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x9291cd3b memdup_user +EXPORT_SYMBOL vmlinux 0x9299506a vfs_fsync +EXPORT_SYMBOL vmlinux 0x929eecac __strncpy_from_user +EXPORT_SYMBOL vmlinux 0x92a5f210 icmp_send +EXPORT_SYMBOL vmlinux 0x92a7208c generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92c06e74 handle_edge_irq +EXPORT_SYMBOL vmlinux 0x92ce77c0 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x92d050df iov_pages +EXPORT_SYMBOL vmlinux 0x92e3638d scsi_device_get +EXPORT_SYMBOL vmlinux 0x92e7301b __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x92f66e28 netpoll_setup +EXPORT_SYMBOL vmlinux 0x92fdaf31 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x932a0c7d dev_change_carrier +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x93843d5d tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x938b17c4 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x938bfcbd tcp_check_req +EXPORT_SYMBOL vmlinux 0x93a5ff99 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0x93a6e0b2 io_schedule +EXPORT_SYMBOL vmlinux 0x93a80625 __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93ca5c3a call_netdevice_notifiers_info +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x93feb0db dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0x94449386 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x947890a0 mutex_unlock +EXPORT_SYMBOL vmlinux 0x9483570f clk_add_alias +EXPORT_SYMBOL vmlinux 0x9487d326 input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x9499f103 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x949b754f mempool_destroy +EXPORT_SYMBOL vmlinux 0x949d91f2 sk_stop_timer +EXPORT_SYMBOL vmlinux 0x94b541b5 cpu_active_mask +EXPORT_SYMBOL vmlinux 0x94cfdee4 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x94d64131 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x94d697b8 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x94fc00e5 dq_data_lock +EXPORT_SYMBOL vmlinux 0x950244f7 sock_no_listen +EXPORT_SYMBOL vmlinux 0x9508f166 param_ops_bint +EXPORT_SYMBOL vmlinux 0x950bed47 genl_notify +EXPORT_SYMBOL vmlinux 0x950ff2cd fsnotify_get_group +EXPORT_SYMBOL vmlinux 0x953b3739 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x95619e7d scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x957aa6c2 follow_down_one +EXPORT_SYMBOL vmlinux 0x957f8e35 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x95a39524 pci_remove_bus +EXPORT_SYMBOL vmlinux 0x95a4c657 pneigh_lookup +EXPORT_SYMBOL vmlinux 0x95aac972 cdrom_release +EXPORT_SYMBOL vmlinux 0x95bcf46c md_integrity_register +EXPORT_SYMBOL vmlinux 0x95c953bb pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x95cb929c of_find_all_nodes +EXPORT_SYMBOL vmlinux 0x95e7df7d generic_delete_inode +EXPORT_SYMBOL vmlinux 0x95f710f5 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x96016b90 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x96220280 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x96361655 tcf_action_exec +EXPORT_SYMBOL vmlinux 0x96585437 elevator_exit +EXPORT_SYMBOL vmlinux 0x967853b9 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x967aa11b __sk_dst_check +EXPORT_SYMBOL vmlinux 0x9680c4c2 call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0x96964e95 skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0x969fd363 kern_path +EXPORT_SYMBOL vmlinux 0x96b29254 strncasecmp +EXPORT_SYMBOL vmlinux 0x96c3bbf0 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x96c9ebfa devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96ede09c ip_fragment +EXPORT_SYMBOL vmlinux 0x970d108f mb_cache_create +EXPORT_SYMBOL vmlinux 0x9712d4a5 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x972f00c8 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x974a64a2 uart_resume_port +EXPORT_SYMBOL vmlinux 0x9753fa25 tty_port_hangup +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x97597471 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x97627d70 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x977fbcf5 mem_map +EXPORT_SYMBOL vmlinux 0x97868aef __kfifo_alloc +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a3d2ca lro_receive_frags +EXPORT_SYMBOL vmlinux 0x97a60e3d param_get_bool +EXPORT_SYMBOL vmlinux 0x97bfacdb ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x97c12d48 unregister_cdrom +EXPORT_SYMBOL vmlinux 0x97cbd075 simple_write_begin +EXPORT_SYMBOL vmlinux 0x97ebb1aa dma_find_channel +EXPORT_SYMBOL vmlinux 0x97f4d944 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x97fdbab9 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x98082893 __copy_to_user +EXPORT_SYMBOL vmlinux 0x980d2439 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x9820b644 warn_slowpath_fmt_taint +EXPORT_SYMBOL vmlinux 0x9825d08f jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x9829fc11 __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0x9858426e __kfree_skb +EXPORT_SYMBOL vmlinux 0x986cd27a inet_getname +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x987bffb7 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x989aca7b max8998_read_reg +EXPORT_SYMBOL vmlinux 0x98bc4c19 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x98c74a9c __mutex_init +EXPORT_SYMBOL vmlinux 0x98cf60b3 strlen +EXPORT_SYMBOL vmlinux 0x98fa21b0 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x99195078 vsnprintf +EXPORT_SYMBOL vmlinux 0x992ad460 mntget +EXPORT_SYMBOL vmlinux 0x99367248 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99534cfc input_free_device +EXPORT_SYMBOL vmlinux 0x9957b819 locks_remove_posix +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x9965f1e3 pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x9974c9cf simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99a10746 save_mount_options +EXPORT_SYMBOL vmlinux 0x99c47841 blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99d1b877 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x99d3a43c dm_table_get_size +EXPORT_SYMBOL vmlinux 0x99e056b8 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0x99e0a05f sock_setsockopt +EXPORT_SYMBOL vmlinux 0x99fbe45f qdisc_destroy +EXPORT_SYMBOL vmlinux 0x99fcd4eb pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x9a00c04c up_write +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a2c0910 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x9a5bd2bc vfs_link +EXPORT_SYMBOL vmlinux 0x9a8f38d0 arp_create +EXPORT_SYMBOL vmlinux 0x9a908b80 test_and_clear_bit +EXPORT_SYMBOL vmlinux 0x9a936886 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x9aa089ad sock_update_memcg +EXPORT_SYMBOL vmlinux 0x9aaafb52 skb_copy_expand +EXPORT_SYMBOL vmlinux 0x9ab52c30 file_open_root +EXPORT_SYMBOL vmlinux 0x9ac1703c truncate_pagecache +EXPORT_SYMBOL vmlinux 0x9ac74b6c nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0x9acf5d41 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x9af89f98 memcpy_fromiovec +EXPORT_SYMBOL vmlinux 0x9b04d50c pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x9b1e5e33 sock_rfree +EXPORT_SYMBOL vmlinux 0x9b29ecde tty_devnum +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b372095 sk_run_filter +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b6880b9 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x9b88fb7e bdput +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba3766b skb_checksum +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bc6ef31 add_wait_queue +EXPORT_SYMBOL vmlinux 0x9bc8d132 sock_sendmsg +EXPORT_SYMBOL vmlinux 0x9be35a08 dquot_drop +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9bf02eb8 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x9c0c20b3 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x9c0db96d scsi_print_command +EXPORT_SYMBOL vmlinux 0x9c102390 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x9c209a51 mii_check_gmii_support +EXPORT_SYMBOL vmlinux 0x9c24898f noop_llseek +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c5bc552 finish_wait +EXPORT_SYMBOL vmlinux 0x9c72abea i2c_release_client +EXPORT_SYMBOL vmlinux 0x9c72c99f audit_log +EXPORT_SYMBOL vmlinux 0x9c876246 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cb279bd ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x9ccfce8f pcie_set_mps +EXPORT_SYMBOL vmlinux 0x9cf48aab end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x9cf58770 n_tty_compat_ioctl_helper +EXPORT_SYMBOL vmlinux 0x9cf66f54 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x9cfd56c5 scsi_print_status +EXPORT_SYMBOL vmlinux 0x9d05f6c4 ktime_get_clocktai +EXPORT_SYMBOL vmlinux 0x9d0b610f pcim_enable_device +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d2cfcdf truncate_setsize +EXPORT_SYMBOL vmlinux 0x9d2d6b8c amba_driver_register +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d58349a of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0x9d8f18d4 inode_init_owner +EXPORT_SYMBOL vmlinux 0x9dba2d57 scsi_reset_provider +EXPORT_SYMBOL vmlinux 0x9dba5199 d_lookup +EXPORT_SYMBOL vmlinux 0x9deacf7d security_mmap_file +EXPORT_SYMBOL vmlinux 0x9df1c30a mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x9e00e245 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x9e0a7647 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e18d93e gen_pool_create +EXPORT_SYMBOL vmlinux 0x9e2a40d0 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x9e2f8c90 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e44b9b7 of_get_next_available_child +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e5ef21d km_policy_expired +EXPORT_SYMBOL vmlinux 0x9e6117d0 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e71433d pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x9e731364 free_buffer_head +EXPORT_SYMBOL vmlinux 0x9e74106b blk_fetch_request +EXPORT_SYMBOL vmlinux 0x9e7ad75b security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x9e7d6bd0 __udelay +EXPORT_SYMBOL vmlinux 0x9e8c3fd6 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x9e99bcdd skb_checksum_help +EXPORT_SYMBOL vmlinux 0x9e9f1714 __bitmap_andnot +EXPORT_SYMBOL vmlinux 0x9ea0ad49 __sg_free_table +EXPORT_SYMBOL vmlinux 0x9eb52f6e neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ec26d37 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x9ed2eec7 param_set_ushort +EXPORT_SYMBOL vmlinux 0x9ed67ce1 amba_driver_unregister +EXPORT_SYMBOL vmlinux 0x9edb7355 inode_init_once +EXPORT_SYMBOL vmlinux 0x9f11be7e down_killable +EXPORT_SYMBOL vmlinux 0x9f12b0de devm_gpiod_put +EXPORT_SYMBOL vmlinux 0x9f12b74d tty_name +EXPORT_SYMBOL vmlinux 0x9f197913 netif_device_attach +EXPORT_SYMBOL vmlinux 0x9f29e3ac elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x9f2bdaac __bitmap_or +EXPORT_SYMBOL vmlinux 0x9f2d182e bioset_create +EXPORT_SYMBOL vmlinux 0x9f307c14 seq_release +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f53459e genphy_update_link +EXPORT_SYMBOL vmlinux 0x9f85a9c7 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x9f9700e4 qdisc_list_del +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fcdfac5 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0x9ffc5a46 mpage_readpage +EXPORT_SYMBOL vmlinux 0xa038620f skb_copy +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa05a1322 __lock_page +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa060004e devm_clk_get +EXPORT_SYMBOL vmlinux 0xa0672af8 elv_abort_queue +EXPORT_SYMBOL vmlinux 0xa079a331 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0xa07a37f0 memchr +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa0a161ea ps2_end_command +EXPORT_SYMBOL vmlinux 0xa0ab4be9 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0xa0abea07 dev_trans_start +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0ceef51 out_of_line_wait_on_bit +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 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa116716f netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa12fd895 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0xa142aa8e gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0xa145cd42 pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa14f9164 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0xa14f97ec iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0xa16cb931 ida_remove +EXPORT_SYMBOL vmlinux 0xa1746422 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0xa181c46a tcp_release_cb +EXPORT_SYMBOL vmlinux 0xa1b56fed migrate_page +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1e77bc7 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0xa1ecffe5 inet_csk_accept +EXPORT_SYMBOL vmlinux 0xa202a8e5 kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0xa20ce1b8 net_msg_warn +EXPORT_SYMBOL vmlinux 0xa224865f __secpath_destroy +EXPORT_SYMBOL vmlinux 0xa22702c8 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0xa267a3ed ipmi_get_smi_info +EXPORT_SYMBOL vmlinux 0xa275a69a send_sig_info +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa28a2ace ipmi_set_gets_events +EXPORT_SYMBOL vmlinux 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL vmlinux 0xa2b92066 posix_lock_file +EXPORT_SYMBOL vmlinux 0xa2d78fc1 tcf_exts_change +EXPORT_SYMBOL vmlinux 0xa2e22ef6 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0xa2ef34d7 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0xa30ebc76 __seq_open_private +EXPORT_SYMBOL vmlinux 0xa3122237 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0xa31ecffb scsi_host_alloc +EXPORT_SYMBOL vmlinux 0xa332464a of_get_cpu_node +EXPORT_SYMBOL vmlinux 0xa3466045 bio_copy_kern +EXPORT_SYMBOL vmlinux 0xa34c0743 elevator_change +EXPORT_SYMBOL vmlinux 0xa34f7afc pci_read_vpd +EXPORT_SYMBOL vmlinux 0xa35de80f ipv4_config +EXPORT_SYMBOL vmlinux 0xa364346b neigh_seq_start +EXPORT_SYMBOL vmlinux 0xa365c309 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0xa367d2f6 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0xa36caaec mmc_start_bkops +EXPORT_SYMBOL vmlinux 0xa3783be0 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0xa378537f jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0xa381944f dql_reset +EXPORT_SYMBOL vmlinux 0xa3897238 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0xa390ed5b pci_enable_obff +EXPORT_SYMBOL vmlinux 0xa392b7df input_set_keycode +EXPORT_SYMBOL vmlinux 0xa398c5f2 dev_set_drvdata +EXPORT_SYMBOL vmlinux 0xa400159f crc32_be +EXPORT_SYMBOL vmlinux 0xa409c1cb cdev_init +EXPORT_SYMBOL vmlinux 0xa40bfa84 inet6_release +EXPORT_SYMBOL vmlinux 0xa415ed0e serio_rescan +EXPORT_SYMBOL vmlinux 0xa43dce32 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0xa44d16db path_get +EXPORT_SYMBOL vmlinux 0xa4511467 crc16 +EXPORT_SYMBOL vmlinux 0xa465db0d find_vma +EXPORT_SYMBOL vmlinux 0xa46d7364 skb_queue_tail +EXPORT_SYMBOL vmlinux 0xa46e9701 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa476f52b mii_link_ok +EXPORT_SYMBOL vmlinux 0xa49b9049 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4ca6cd6 pci_enable_device +EXPORT_SYMBOL vmlinux 0xa4f55c6c dquot_transfer +EXPORT_SYMBOL vmlinux 0xa4f6aca8 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0xa4f6beb5 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0xa4fb2ae4 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0xa52eba07 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0xa545dd76 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa57b496f fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0xa58ea9f0 __vlan_find_dev_deep +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa599e531 down_read_trylock +EXPORT_SYMBOL vmlinux 0xa5b32787 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xa5ef2329 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0xa5fa3b4d bprm_change_interp +EXPORT_SYMBOL vmlinux 0xa5fe8bd7 neigh_for_each +EXPORT_SYMBOL vmlinux 0xa6011cf7 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0xa63a2f9b param_get_ulong +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa6474670 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0xa64a4cea usb_nop_xceiv_unregister +EXPORT_SYMBOL vmlinux 0xa65872a0 blk_delay_queue +EXPORT_SYMBOL vmlinux 0xa6715115 do_settimeofday +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6900780 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0xa6cb3f2c sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xa6e7544f qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0xa6fc0351 filemap_fault +EXPORT_SYMBOL vmlinux 0xa7069298 fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0xa71e7463 __first_cpu +EXPORT_SYMBOL vmlinux 0xa72858dc dm_register_target +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa73fc98f of_n_addr_cells +EXPORT_SYMBOL vmlinux 0xa78aa4c9 __blk_end_request +EXPORT_SYMBOL vmlinux 0xa7b584a4 netdev_update_features +EXPORT_SYMBOL vmlinux 0xa7b5e483 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0xa7bae40c scsi_allocate_command +EXPORT_SYMBOL vmlinux 0xa7be526f _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0xa7ded2f3 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0xa80507a6 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0xa808bcb8 vexpress_config_wait +EXPORT_SYMBOL vmlinux 0xa81e4acd inode_needs_sync +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa83813c5 kmem_cache_free +EXPORT_SYMBOL vmlinux 0xa83b5c17 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa84c6195 generic_listxattr +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa87cf413 clear_bit +EXPORT_SYMBOL vmlinux 0xa88146aa pci_add_new_bus +EXPORT_SYMBOL vmlinux 0xa89ffda1 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0xa8a18372 lockref_mark_dead +EXPORT_SYMBOL vmlinux 0xa8a6f639 __check_region +EXPORT_SYMBOL vmlinux 0xa8a8110c kernel_neon_end +EXPORT_SYMBOL vmlinux 0xa8b1b677 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0xa8cb52fb tty_hung_up_p +EXPORT_SYMBOL vmlinux 0xa8de4eff end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0xa8ebe887 splice_from_pipe_begin +EXPORT_SYMBOL vmlinux 0xa8f258f9 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa916b694 strnlen +EXPORT_SYMBOL vmlinux 0xa917aa8f freeze_super +EXPORT_SYMBOL vmlinux 0xa93c0b61 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0xa950e2ac __xfrm_init_state +EXPORT_SYMBOL vmlinux 0xa9779c37 key_invalidate +EXPORT_SYMBOL vmlinux 0xa97954dd __dev_remove_offload +EXPORT_SYMBOL vmlinux 0xa981fa2d iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0xa9b63345 of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0xaa22c1c3 simple_setattr +EXPORT_SYMBOL vmlinux 0xaa2b0221 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0xaa350c2c dev_queue_xmit +EXPORT_SYMBOL vmlinux 0xaa3dccd3 inet_recvmsg +EXPORT_SYMBOL vmlinux 0xaa5bf1a9 tty_unlock_pair +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa9087c0 param_ops_string +EXPORT_SYMBOL vmlinux 0xaab31ebb dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0xaab35893 neigh_app_ns +EXPORT_SYMBOL vmlinux 0xaabe45af netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0xaacd1fa9 pci_disable_device +EXPORT_SYMBOL vmlinux 0xaad23ddc end_page_writeback +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab08b4f1 d_invalidate +EXPORT_SYMBOL vmlinux 0xab40cca9 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xab4c5c65 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0xab54cbbc invalidate_partition +EXPORT_SYMBOL vmlinux 0xab5bbfa2 pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0xab5ddff7 inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0xab600421 probe_irq_off +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab70cd00 netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab8b9ec1 pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0xabb6caa4 input_grab_device +EXPORT_SYMBOL vmlinux 0xabbbd444 _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xabc1350c pci_fixup_device +EXPORT_SYMBOL vmlinux 0xabc309fd input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabcd504f sk_reset_timer +EXPORT_SYMBOL vmlinux 0xabd0c91c rtc_time_to_tm +EXPORT_SYMBOL vmlinux 0xabebc089 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0xac040d62 ida_get_new_above +EXPORT_SYMBOL vmlinux 0xac079b1a is_bad_inode +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac5796d0 scsi_device_put +EXPORT_SYMBOL vmlinux 0xac6f1bbc read_cache_page +EXPORT_SYMBOL vmlinux 0xac75afd0 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xac7de09f scsi_adjust_queue_depth +EXPORT_SYMBOL vmlinux 0xac9d2d83 register_sysctl_table +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacb741e4 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0xacc5b5d2 csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad01744f kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0xad03038c of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad13571f scsi_cmd_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xad164875 kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xad1738c9 xfrm_register_km +EXPORT_SYMBOL vmlinux 0xad46dec2 of_count_phandle_with_args +EXPORT_SYMBOL vmlinux 0xad49fd4d blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0xad5eecd5 kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0xad5fc96d do_SAK +EXPORT_SYMBOL vmlinux 0xad630035 from_kgid +EXPORT_SYMBOL vmlinux 0xad788ad7 I_BDEV +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad9d809f blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0xadca8600 netdev_has_any_upper_dev +EXPORT_SYMBOL vmlinux 0xadcc8462 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0xadeb8bb3 vfs_symlink +EXPORT_SYMBOL vmlinux 0xae1b211e scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0xae1dbfb1 key_payload_reserve +EXPORT_SYMBOL vmlinux 0xae2a2c5d mpage_readpages +EXPORT_SYMBOL vmlinux 0xae33582c twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0xae3c254c padata_alloc_possible +EXPORT_SYMBOL vmlinux 0xae4a1bda csum_tcpudp_nofold +EXPORT_SYMBOL vmlinux 0xae4c7a22 vc_cons +EXPORT_SYMBOL vmlinux 0xae5ca403 netlink_unicast +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae74a179 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0xae8c4d0c set_bit +EXPORT_SYMBOL vmlinux 0xae8d448e tty_do_resize +EXPORT_SYMBOL vmlinux 0xaebf329c vga_client_register +EXPORT_SYMBOL vmlinux 0xaedc1bc0 scsi_release_buffers +EXPORT_SYMBOL vmlinux 0xaee4c984 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0xaefe611d fput +EXPORT_SYMBOL vmlinux 0xaf05b91b of_device_is_available +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf4559eb iterate_supers_type +EXPORT_SYMBOL vmlinux 0xaf53ac21 tty_port_init +EXPORT_SYMBOL vmlinux 0xaf64ad0d zlib_deflate +EXPORT_SYMBOL vmlinux 0xaf6ae696 kstrndup +EXPORT_SYMBOL vmlinux 0xaf7fad62 blk_put_queue +EXPORT_SYMBOL vmlinux 0xaf91d89f __kernel_param_lock +EXPORT_SYMBOL vmlinux 0xafad493b param_ops_ushort +EXPORT_SYMBOL vmlinux 0xafb715a3 register_console +EXPORT_SYMBOL vmlinux 0xafb95a1f register_shrinker +EXPORT_SYMBOL vmlinux 0xafc17d89 blk_complete_request +EXPORT_SYMBOL vmlinux 0xafd24f31 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0xb02f4f2a mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0xb04771ad sk_release_kernel +EXPORT_SYMBOL vmlinux 0xb04b558f netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0xb051c893 bio_integrity_free +EXPORT_SYMBOL vmlinux 0xb05aa584 mempool_resize +EXPORT_SYMBOL vmlinux 0xb05f88b6 inet_frags_init_net +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb06dce4a pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0xb0747167 pcie_get_mps +EXPORT_SYMBOL vmlinux 0xb07e9153 elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0b847ac __bitmap_full +EXPORT_SYMBOL vmlinux 0xb0c3bc95 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0xb0c61563 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0xb0ca54da inet_dgram_connect +EXPORT_SYMBOL vmlinux 0xb0cc1f03 try_to_release_page +EXPORT_SYMBOL vmlinux 0xb0ce5067 kset_register +EXPORT_SYMBOL vmlinux 0xb0d18949 up_read +EXPORT_SYMBOL vmlinux 0xb0d424f7 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0ffda2f blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xb102ca24 __lru_cache_add +EXPORT_SYMBOL vmlinux 0xb109231a lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb1452809 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb16b83ce secpath_dup +EXPORT_SYMBOL vmlinux 0xb1730cd8 mpage_writepages +EXPORT_SYMBOL vmlinux 0xb19760c3 bitmap_onto +EXPORT_SYMBOL vmlinux 0xb1b11ac1 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0xb1b79d11 generic_shutdown_super +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 0xb1db9e4e param_get_invbool +EXPORT_SYMBOL vmlinux 0xb1e69eeb tcp_child_process +EXPORT_SYMBOL vmlinux 0xb1eef3e4 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0xb215def4 pm860x_page_set_bits +EXPORT_SYMBOL vmlinux 0xb216bff4 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0xb229075b tcp_ioctl +EXPORT_SYMBOL vmlinux 0xb22e950d dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0xb23c203f scm_detach_fds +EXPORT_SYMBOL vmlinux 0xb250f42e generic_file_buffered_write +EXPORT_SYMBOL vmlinux 0xb25e7725 phy_find_first +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb2717340 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0xb2ae2b75 swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0xb2b535cd pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2c416da scsi_scan_target +EXPORT_SYMBOL vmlinux 0xb2ddf366 padata_start +EXPORT_SYMBOL vmlinux 0xb2eb1269 devfreq_add_governor +EXPORT_SYMBOL vmlinux 0xb2eee566 tty_unthrottle +EXPORT_SYMBOL vmlinux 0xb2f735c9 bh_submit_read +EXPORT_SYMBOL vmlinux 0xb31c3f74 irq_stat +EXPORT_SYMBOL vmlinux 0xb326f2e2 lock_may_read +EXPORT_SYMBOL vmlinux 0xb33547cc __dst_free +EXPORT_SYMBOL vmlinux 0xb34a144f d_validate +EXPORT_SYMBOL vmlinux 0xb35a38f8 revalidate_disk +EXPORT_SYMBOL vmlinux 0xb376d182 dquot_disable +EXPORT_SYMBOL vmlinux 0xb3784a4e __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xb37bee52 rename_lock +EXPORT_SYMBOL vmlinux 0xb3816fd2 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0xb3a127fc blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0xb3aeff5b seq_read +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb434993e skb_make_writable +EXPORT_SYMBOL vmlinux 0xb454b884 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0xb4584f4e ilookup5 +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb47189b5 reservation_ww_class +EXPORT_SYMBOL vmlinux 0xb47bc696 vm_stat +EXPORT_SYMBOL vmlinux 0xb48024e9 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0xb48c6e42 noop_qdisc +EXPORT_SYMBOL vmlinux 0xb4ba8d3a nf_log_register +EXPORT_SYMBOL vmlinux 0xb4bc5ade bio_integrity_advance +EXPORT_SYMBOL vmlinux 0xb4d28587 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0xb4dfe7f0 dquot_commit_info +EXPORT_SYMBOL vmlinux 0xb4fdf4ba netdev_warn +EXPORT_SYMBOL vmlinux 0xb500a417 input_unregister_handler +EXPORT_SYMBOL vmlinux 0xb50ec27e bdi_init +EXPORT_SYMBOL vmlinux 0xb51c2171 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0xb52e9191 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0xb532131b __wait_on_buffer +EXPORT_SYMBOL vmlinux 0xb54533f7 usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xb5520f78 gen10g_config_advert +EXPORT_SYMBOL vmlinux 0xb55a7fab pm860x_page_bulk_write +EXPORT_SYMBOL vmlinux 0xb55caa5e jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb57f2457 sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0xb59b78ab dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0xb5a44e52 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5a8bd8d md_flush_request +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5cd1691 vexpress_config_complete +EXPORT_SYMBOL vmlinux 0xb5d15622 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0xb5ef1a46 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0xb61da772 __destroy_inode +EXPORT_SYMBOL vmlinux 0xb61ec0f1 mii_nway_restart +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb6394d4b param_set_bint +EXPORT_SYMBOL vmlinux 0xb64b0a4d mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0xb6569341 ip_defrag +EXPORT_SYMBOL vmlinux 0xb65c8495 flush_dcache_page +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb67fca04 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0xb6822a33 radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb69f9b00 mempool_free +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6b46a7c param_ops_int +EXPORT_SYMBOL vmlinux 0xb6b940ab dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0xb6c5a973 scsi_show_result +EXPORT_SYMBOL vmlinux 0xb6ee4e91 neigh_event_ns +EXPORT_SYMBOL vmlinux 0xb6f30373 try_module_get +EXPORT_SYMBOL vmlinux 0xb70120ea generic_error_remove_page +EXPORT_SYMBOL vmlinux 0xb71fb74f _raw_read_trylock +EXPORT_SYMBOL vmlinux 0xb73ae445 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xb7475365 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xb750e53a lock_may_write +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb7c6db70 sysctl_max_skb_frags +EXPORT_SYMBOL vmlinux 0xb7ebaf02 vm_mmap +EXPORT_SYMBOL vmlinux 0xb8087d36 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0xb80adc61 pci_disable_msi +EXPORT_SYMBOL vmlinux 0xb818ba85 __register_binfmt +EXPORT_SYMBOL vmlinux 0xb81a87fb xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0xb82493fd tty_port_close_start +EXPORT_SYMBOL vmlinux 0xb835b3e4 radix_tree_prev_hole +EXPORT_SYMBOL vmlinux 0xb852fe82 inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb89073df inet_sendmsg +EXPORT_SYMBOL vmlinux 0xb8ad136d d_set_d_op +EXPORT_SYMBOL vmlinux 0xb8bb9827 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0xb8d73e97 param_set_uint +EXPORT_SYMBOL vmlinux 0xb929e1b4 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0xb93c4e20 proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0xb9503fe8 dqget +EXPORT_SYMBOL vmlinux 0xb978b014 inet_put_port +EXPORT_SYMBOL vmlinux 0xb98a0185 rtc_tm_to_time +EXPORT_SYMBOL vmlinux 0xb98bb52e vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0xb9b4e181 alloc_pages_exact_nid +EXPORT_SYMBOL vmlinux 0xb9dd20e1 scsi_register_interface +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9f080a0 nf_setsockopt +EXPORT_SYMBOL vmlinux 0xba36a4be kthread_create_on_node +EXPORT_SYMBOL vmlinux 0xba3ed3e7 tcp_sync_mss +EXPORT_SYMBOL vmlinux 0xba434885 soft_cursor +EXPORT_SYMBOL vmlinux 0xba47ac12 ftrace_raw_output_prep +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba5092a8 dev_activate +EXPORT_SYMBOL vmlinux 0xba53442e __pci_register_driver +EXPORT_SYMBOL vmlinux 0xba5346e1 mount_single +EXPORT_SYMBOL vmlinux 0xba8180a8 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0xba9392a3 km_report +EXPORT_SYMBOL vmlinux 0xba9af4ba mmc_add_host +EXPORT_SYMBOL vmlinux 0xba9ce25b set_device_ro +EXPORT_SYMBOL vmlinux 0xbaa0f7ff key_put +EXPORT_SYMBOL vmlinux 0xbaae5a3e icmpv6_send +EXPORT_SYMBOL vmlinux 0xbacf17e8 __wait_on_bit +EXPORT_SYMBOL vmlinux 0xbb189cad disallow_signal +EXPORT_SYMBOL vmlinux 0xbb26ca3a softnet_data +EXPORT_SYMBOL vmlinux 0xbb4f4766 simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0xbb51d255 i2c_verify_client +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb713e6d sk_filter_release_rcu +EXPORT_SYMBOL vmlinux 0xbb9035de udp_del_offload +EXPORT_SYMBOL vmlinux 0xbb9740da blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbba3a433 devfreq_add_device +EXPORT_SYMBOL vmlinux 0xbba3cc98 lock_sock_fast +EXPORT_SYMBOL vmlinux 0xbbe9018c netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0xbbfdd384 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0xbc00542f rtnl_create_link +EXPORT_SYMBOL vmlinux 0xbc1f4f75 max8925_reg_write +EXPORT_SYMBOL vmlinux 0xbc3358f2 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0xbc54b775 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0xbc92c155 block_read_full_page +EXPORT_SYMBOL vmlinux 0xbcb7f44c search_binary_handler +EXPORT_SYMBOL vmlinux 0xbcbbfead twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0xbcc495ca __starget_for_each_device +EXPORT_SYMBOL vmlinux 0xbcdedba7 of_get_mac_address +EXPORT_SYMBOL vmlinux 0xbcec8221 skb_append +EXPORT_SYMBOL vmlinux 0xbcfab655 kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0xbd014397 inetdev_by_index +EXPORT_SYMBOL vmlinux 0xbd01db9f ip_getsockopt +EXPORT_SYMBOL vmlinux 0xbd194128 security_path_mknod +EXPORT_SYMBOL vmlinux 0xbd2f699e cfb_copyarea +EXPORT_SYMBOL vmlinux 0xbd3a1ecf tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0xbd462b55 __kfifo_init +EXPORT_SYMBOL vmlinux 0xbd4952c6 blkdev_get +EXPORT_SYMBOL vmlinux 0xbd6cb7e3 path_nosuid +EXPORT_SYMBOL vmlinux 0xbd96c85a vexpress_config_write +EXPORT_SYMBOL vmlinux 0xbdbc13a1 complete +EXPORT_SYMBOL vmlinux 0xbe218cfc swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0xbe2c0274 add_timer +EXPORT_SYMBOL vmlinux 0xbe462cf0 input_inject_event +EXPORT_SYMBOL vmlinux 0xbe57bf6b tcp_make_synack +EXPORT_SYMBOL vmlinux 0xbe617475 generic_make_request +EXPORT_SYMBOL vmlinux 0xbe7e9d98 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0xbe841df3 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0xbe88b40f sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0xbe8da4cf tty_write_room +EXPORT_SYMBOL vmlinux 0xbec25473 of_parse_phandle +EXPORT_SYMBOL vmlinux 0xbed8e6d8 __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xbee00dc7 clone_cred +EXPORT_SYMBOL vmlinux 0xbee58976 single_release +EXPORT_SYMBOL vmlinux 0xbeecce23 dquot_operations +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf1178ba rfkill_alloc +EXPORT_SYMBOL vmlinux 0xbf1f2e02 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0xbf306436 scsi_print_sense +EXPORT_SYMBOL vmlinux 0xbf4a4840 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0xbf4b433c blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0xbf7fac49 vfs_writev +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfa6f6f7 inet_frags_init +EXPORT_SYMBOL vmlinux 0xbfa96209 unregister_exec_domain +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfe17fb0 nonseekable_open +EXPORT_SYMBOL vmlinux 0xbfe31128 swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0xbfe7949a misc_deregister +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbffa8be0 netlink_ack +EXPORT_SYMBOL vmlinux 0xbffd8248 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0xbffed910 netlink_kernel_release +EXPORT_SYMBOL vmlinux 0xc00fd260 __module_get +EXPORT_SYMBOL vmlinux 0xc01fb204 pci_release_region +EXPORT_SYMBOL vmlinux 0xc02cf69b clkdev_drop +EXPORT_SYMBOL vmlinux 0xc05debc3 pcie_get_readrq +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc088025a skb_copy_bits +EXPORT_SYMBOL vmlinux 0xc0a1716f bio_map_user +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0bfd0c5 kernel_read +EXPORT_SYMBOL vmlinux 0xc0c62199 follow_pfn +EXPORT_SYMBOL vmlinux 0xc0c6d15d blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0xc0ca98ae scsi_init_io +EXPORT_SYMBOL vmlinux 0xc0ee3e33 set_groups +EXPORT_SYMBOL vmlinux 0xc0f1bee6 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0xc10cd589 dm_unregister_target +EXPORT_SYMBOL vmlinux 0xc1352283 sock_kfree_s +EXPORT_SYMBOL vmlinux 0xc1445cb3 tty_unlock +EXPORT_SYMBOL vmlinux 0xc15a44c6 memzero_explicit +EXPORT_SYMBOL vmlinux 0xc185eb32 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0xc19fc0f9 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0xc1afb454 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0xc1c2dd09 __hw_addr_flush +EXPORT_SYMBOL vmlinux 0xc1d928df eth_header_cache +EXPORT_SYMBOL vmlinux 0xc256e762 __bitmap_equal +EXPORT_SYMBOL vmlinux 0xc257a6f3 sock_no_poll +EXPORT_SYMBOL vmlinux 0xc27717c4 bio_init +EXPORT_SYMBOL vmlinux 0xc277947e ata_print_version +EXPORT_SYMBOL vmlinux 0xc27d657d md_done_sync +EXPORT_SYMBOL vmlinux 0xc2965fed vfs_write +EXPORT_SYMBOL vmlinux 0xc29bf967 strspn +EXPORT_SYMBOL vmlinux 0xc29c087c xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0xc2a145a8 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0xc2a910a3 tcp_connect +EXPORT_SYMBOL vmlinux 0xc2bfb736 key_type_keyring +EXPORT_SYMBOL vmlinux 0xc2d776cb adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f264fe inet_del_offload +EXPORT_SYMBOL vmlinux 0xc2f700d7 inet_addr_type +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc310b981 strnstr +EXPORT_SYMBOL vmlinux 0xc3367c29 skb_copy_datagram_const_iovec +EXPORT_SYMBOL vmlinux 0xc34642a4 of_device_alloc +EXPORT_SYMBOL vmlinux 0xc36ded1b cdrom_ioctl +EXPORT_SYMBOL vmlinux 0xc38f4a4f tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0xc3a7be25 lg_global_lock +EXPORT_SYMBOL vmlinux 0xc3acc0d2 security_path_chmod +EXPORT_SYMBOL vmlinux 0xc3d088a1 single_open +EXPORT_SYMBOL vmlinux 0xc3e3a2cb netlink_broadcast +EXPORT_SYMBOL vmlinux 0xc3e58818 inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0xc3ead779 init_task +EXPORT_SYMBOL vmlinux 0xc4005f5e xfrm_init_state +EXPORT_SYMBOL vmlinux 0xc406bd0b console_stop +EXPORT_SYMBOL vmlinux 0xc4215021 generic_block_bmap +EXPORT_SYMBOL vmlinux 0xc421f563 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0xc4303f12 sk_free +EXPORT_SYMBOL vmlinux 0xc450e76f dmam_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0xc48307db lz4_decompress +EXPORT_SYMBOL vmlinux 0xc48762a4 kobject_init +EXPORT_SYMBOL vmlinux 0xc48e5315 __inode_permission +EXPORT_SYMBOL vmlinux 0xc492841a from_kuid +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc4e69134 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0xc4fc469e pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0xc513d7f7 nf_reinject +EXPORT_SYMBOL vmlinux 0xc529daa8 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0xc5342572 padata_add_cpu +EXPORT_SYMBOL vmlinux 0xc53ac94e contig_page_data +EXPORT_SYMBOL vmlinux 0xc542ff70 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0xc54ad166 check_submounts_and_drop +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc56d3707 pci_dev_put +EXPORT_SYMBOL vmlinux 0xc57dd29f nf_ct_attach +EXPORT_SYMBOL vmlinux 0xc589e044 param_set_long +EXPORT_SYMBOL vmlinux 0xc5a5b712 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0xc5be6176 phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0xc5fbe772 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc617e8ce sock_no_accept +EXPORT_SYMBOL vmlinux 0xc6187966 security_path_rename +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc6331e19 scsi_get_command +EXPORT_SYMBOL vmlinux 0xc63d9f6c dev_get_stats +EXPORT_SYMBOL vmlinux 0xc64aad0c swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0xc654b883 phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0xc6658041 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xc665d6d7 of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0xc666a132 crc_t10dif +EXPORT_SYMBOL vmlinux 0xc6683144 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0xc67a64d7 send_sig +EXPORT_SYMBOL vmlinux 0xc6a5b3c0 fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0xc6cb465a __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6f4b109 sync_blockdev +EXPORT_SYMBOL vmlinux 0xc6f6151c ether_setup +EXPORT_SYMBOL vmlinux 0xc717039c unregister_md_personality +EXPORT_SYMBOL vmlinux 0xc71bfc40 security_task_getsecid +EXPORT_SYMBOL vmlinux 0xc71cd8da dquot_quota_on +EXPORT_SYMBOL vmlinux 0xc71fa9a6 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc72f712a key_task_permission +EXPORT_SYMBOL vmlinux 0xc74e98d0 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0xc751a20a inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0xc7611e4c lookup_one_len +EXPORT_SYMBOL vmlinux 0xc7633d97 xfrm_policy_bysel_ctx +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 0xc78fbbaf cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7ab3078 sock_alloc_file +EXPORT_SYMBOL vmlinux 0xc8100d4d dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0xc8164a8b tcf_hash_check +EXPORT_SYMBOL vmlinux 0xc8299bb5 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0xc82c91f7 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc8477b93 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc85f247e dev_alert +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc8795889 finish_no_open +EXPORT_SYMBOL vmlinux 0xc8877577 of_device_unregister +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc89f79d4 percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8d5682f __quota_error +EXPORT_SYMBOL vmlinux 0xc8dcf36e block_commit_write +EXPORT_SYMBOL vmlinux 0xc8e062c9 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0xc8e325e4 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0xc9060c43 sk_capable +EXPORT_SYMBOL vmlinux 0xc91d408d __frontswap_store +EXPORT_SYMBOL vmlinux 0xc92d031d pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc96569dc simple_transaction_get +EXPORT_SYMBOL vmlinux 0xc978479a xz_dec_run +EXPORT_SYMBOL vmlinux 0xc97aa0bd __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0xc996d097 del_timer +EXPORT_SYMBOL vmlinux 0xc9a7e3e7 blk_stack_limits +EXPORT_SYMBOL vmlinux 0xc9a934fa sk_mc_loop +EXPORT_SYMBOL vmlinux 0xc9bd7d03 pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0xc9d089f8 tty_unregister_device +EXPORT_SYMBOL vmlinux 0xc9dec873 unregister_console +EXPORT_SYMBOL vmlinux 0xc9e96a17 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0xc9ed5c09 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0xc9edf471 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0xca032bfc kernel_connect +EXPORT_SYMBOL vmlinux 0xca0f2415 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0xca1a8d19 __pci_enable_wake +EXPORT_SYMBOL vmlinux 0xca3dc271 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0xca5bddf8 fb_get_mode +EXPORT_SYMBOL vmlinux 0xca5dbc50 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xca78f48f sock_create_kern +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xcaaca9c1 nobh_write_end +EXPORT_SYMBOL vmlinux 0xcaaf0939 skb_put +EXPORT_SYMBOL vmlinux 0xcac9cb0a tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0xcada2a89 sg_miter_start +EXPORT_SYMBOL vmlinux 0xcaf8516d swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb0c5d50 param_get_uint +EXPORT_SYMBOL vmlinux 0xcb128141 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0xcb495d0c scsi_host_lookup +EXPORT_SYMBOL vmlinux 0xcb49c6c2 dentry_open +EXPORT_SYMBOL vmlinux 0xcb53e34d dev_set_group +EXPORT_SYMBOL vmlinux 0xcb8582f4 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0xcb8662b7 get_super +EXPORT_SYMBOL vmlinux 0xcbb5c191 sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xcbb7a378 tty_port_destroy +EXPORT_SYMBOL vmlinux 0xcbbabe4a dev_addr_add +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbe337d5 abx500_register_ops +EXPORT_SYMBOL vmlinux 0xcbe9b4f8 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0xcbea6839 page_readlink +EXPORT_SYMBOL vmlinux 0xcbf75b4a xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0xcbff5e68 mempool_create +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc313a63 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0xcc37f55c blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xcc45c299 blkdev_fsync +EXPORT_SYMBOL vmlinux 0xcc4b84da of_find_node_by_type +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc5bab63 sock_release +EXPORT_SYMBOL vmlinux 0xcc5dce50 sleep_on +EXPORT_SYMBOL vmlinux 0xcc676cac alloc_disk +EXPORT_SYMBOL vmlinux 0xcc7fa952 local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0xcc7fc7cd dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xcc8ffaf3 udplite_prot +EXPORT_SYMBOL vmlinux 0xcc9ae3eb ip6_frag_match +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccc92399 ida_simple_remove +EXPORT_SYMBOL vmlinux 0xccc9579c sock_wmalloc +EXPORT_SYMBOL vmlinux 0xcd17b098 dev_crit +EXPORT_SYMBOL vmlinux 0xcd1904d9 tcp_init_sock +EXPORT_SYMBOL vmlinux 0xcd20667a kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0xcd21fc5e blk_execute_rq +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd8985cf generic_file_remap_pages +EXPORT_SYMBOL vmlinux 0xcd89dce8 dst_release +EXPORT_SYMBOL vmlinux 0xcd919e48 dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0xcdaa4708 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0xcdaac968 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0xcdaf8b99 pci_disable_obff +EXPORT_SYMBOL vmlinux 0xcdbfd194 gen_pool_free +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcde172ac radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0xce011ea1 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xce157938 uart_match_port +EXPORT_SYMBOL vmlinux 0xce26eb31 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce4e47b6 __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0xce553d76 sock_no_connect +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce6a9244 profile_pc +EXPORT_SYMBOL vmlinux 0xce6c6969 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0xce703cae remove_proc_entry +EXPORT_SYMBOL vmlinux 0xcea13357 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0xcea8a9ee tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0xcea925c9 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceb1717d completion_done +EXPORT_SYMBOL vmlinux 0xcede4282 blk_start_request +EXPORT_SYMBOL vmlinux 0xcee1c867 blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefa5d2c xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf1a6e0d sk_stream_write_space +EXPORT_SYMBOL vmlinux 0xcf1c4584 km_state_notify +EXPORT_SYMBOL vmlinux 0xcf218ed9 kern_path_create +EXPORT_SYMBOL vmlinux 0xcf303aff kobject_del +EXPORT_SYMBOL vmlinux 0xcf480d9c netdev_emerg +EXPORT_SYMBOL vmlinux 0xcfe0fa9f skb_seq_read +EXPORT_SYMBOL vmlinux 0xcfe52781 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0xcfee98fa audit_log_start +EXPORT_SYMBOL vmlinux 0xd00162e3 input_release_device +EXPORT_SYMBOL vmlinux 0xd0181f4f __bitmap_xor +EXPORT_SYMBOL vmlinux 0xd04d4f35 udp_prot +EXPORT_SYMBOL vmlinux 0xd0584977 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0xd0619ba4 file_update_time +EXPORT_SYMBOL vmlinux 0xd06c0f22 down_write_trylock +EXPORT_SYMBOL vmlinux 0xd06dd471 blk_peek_request +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd07bc9a8 blk_end_request_all +EXPORT_SYMBOL vmlinux 0xd0933f92 padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0xd0a3beab __dev_get_by_index +EXPORT_SYMBOL vmlinux 0xd0a431b9 arp_find +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0ab28ce compat_mc_getsockopt +EXPORT_SYMBOL vmlinux 0xd0d42c42 mod_timer_pending +EXPORT_SYMBOL vmlinux 0xd0e43207 usb_nop_xceiv_register +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 0xd1090f95 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0xd11c0dc1 __kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd19bc68c dev_uc_init +EXPORT_SYMBOL vmlinux 0xd1b1d5a3 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0xd1dd8295 netif_device_detach +EXPORT_SYMBOL vmlinux 0xd1e0fbe5 compat_ip_getsockopt +EXPORT_SYMBOL vmlinux 0xd1f8e97c __memcg_kmem_get_cache +EXPORT_SYMBOL vmlinux 0xd21f7df4 mntput +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd24150a2 dquot_release +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 0xd25e16e3 remove_wait_queue +EXPORT_SYMBOL vmlinux 0xd26c8e02 register_md_personality +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd27e39cc sock_wfree +EXPORT_SYMBOL vmlinux 0xd296231e devm_ioremap +EXPORT_SYMBOL vmlinux 0xd2b09ce5 __kmalloc +EXPORT_SYMBOL vmlinux 0xd2b68bad scsi_prep_state_check +EXPORT_SYMBOL vmlinux 0xd2ca350b inet6_add_offload +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd313c86d tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd3259d65 test_and_set_bit +EXPORT_SYMBOL vmlinux 0xd3322e30 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xd3348249 filemap_flush +EXPORT_SYMBOL vmlinux 0xd34fe28a vm_insert_page +EXPORT_SYMBOL vmlinux 0xd36257ba memcpy_toiovecend +EXPORT_SYMBOL vmlinux 0xd3722253 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xd3763939 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0xd39aa892 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0xd3a64ac3 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0xd3b12742 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0xd3cee9ff pci_assign_resource +EXPORT_SYMBOL vmlinux 0xd3dcab0b flex_array_alloc +EXPORT_SYMBOL vmlinux 0xd3e15f8f sync_inode_metadata +EXPORT_SYMBOL vmlinux 0xd3ead850 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xd3ec904d udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0xd405a3a4 kill_pgrp +EXPORT_SYMBOL vmlinux 0xd41ab5eb __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0xd41fe818 _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xd44c116d dev_uc_add +EXPORT_SYMBOL vmlinux 0xd44eb5f1 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0xd45a1edc blk_mq_end_io +EXPORT_SYMBOL vmlinux 0xd45d481d wait_on_sync_kiocb +EXPORT_SYMBOL vmlinux 0xd4bada1f __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0xd4c7ca91 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0xd4d45e74 sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0xd4dd516c xfrm_lookup +EXPORT_SYMBOL vmlinux 0xd4e7aa3d ioremap_cache +EXPORT_SYMBOL vmlinux 0xd4f753a6 read_code +EXPORT_SYMBOL vmlinux 0xd53d95c2 inode_change_ok +EXPORT_SYMBOL vmlinux 0xd54db69f __elv_add_request +EXPORT_SYMBOL vmlinux 0xd55545a2 proc_remove +EXPORT_SYMBOL vmlinux 0xd56ca35b ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0xd5818305 eth_rebuild_header +EXPORT_SYMBOL vmlinux 0xd588c63e simple_lookup +EXPORT_SYMBOL vmlinux 0xd5b28117 __block_write_begin +EXPORT_SYMBOL vmlinux 0xd5baca1a gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0xd5c2fe2d pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0xd5dc85f1 blk_rq_init +EXPORT_SYMBOL vmlinux 0xd5f2172f del_timer_sync +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd62e1171 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xd63cae33 keyring_alloc +EXPORT_SYMBOL vmlinux 0xd63fd908 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd64b26b6 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xd64f787b generic_read_dir +EXPORT_SYMBOL vmlinux 0xd65c42f6 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0xd6656299 sget +EXPORT_SYMBOL vmlinux 0xd66c17ac tcp_shutdown +EXPORT_SYMBOL vmlinux 0xd686c343 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0xd687962b pci_get_subsys +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd6ad3ff1 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0xd6b37241 touch_atime +EXPORT_SYMBOL vmlinux 0xd6b705b8 inet_stream_ops +EXPORT_SYMBOL vmlinux 0xd6d095ad inode_init_always +EXPORT_SYMBOL vmlinux 0xd6dbc6cb __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0xd6e0b407 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd737cbaa mmc_put_card +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd77a454b dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0xd77a5aa5 __bitmap_and +EXPORT_SYMBOL vmlinux 0xd792bf4d xen_biovec_phys_mergeable +EXPORT_SYMBOL vmlinux 0xd79901ba __sock_create +EXPORT_SYMBOL vmlinux 0xd79b5a02 allow_signal +EXPORT_SYMBOL vmlinux 0xd7ae2361 vexpress_config_bridge_unregister +EXPORT_SYMBOL vmlinux 0xd7bfe7f9 mmc_hw_reset_check +EXPORT_SYMBOL vmlinux 0xd7c422ac __genl_register_family +EXPORT_SYMBOL vmlinux 0xd7cbddda memcpy_toiovec +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd8015847 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0xd8060dfd udp_disconnect +EXPORT_SYMBOL vmlinux 0xd81dc2b1 pci_bus_put +EXPORT_SYMBOL vmlinux 0xd838f0fe vfs_llseek +EXPORT_SYMBOL vmlinux 0xd854d935 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0xd85806a7 block_write_end +EXPORT_SYMBOL vmlinux 0xd8877d78 tcp_poll +EXPORT_SYMBOL vmlinux 0xd8880246 of_match_device +EXPORT_SYMBOL vmlinux 0xd88fce90 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0xd890a652 __invalidate_device +EXPORT_SYMBOL vmlinux 0xd8c1aa58 register_framebuffer +EXPORT_SYMBOL vmlinux 0xd8c72cf0 ifla_policy +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8e566ee filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0xd901d2d7 compat_sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xd926eda4 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0xd92afabe bitmap_clear +EXPORT_SYMBOL vmlinux 0xd92e16ba csum_partial_copy_fromiovecend +EXPORT_SYMBOL vmlinux 0xd9416842 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0xd9468197 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0xd957daaa put_tty_driver +EXPORT_SYMBOL vmlinux 0xd963f8b7 mdiobus_scan +EXPORT_SYMBOL vmlinux 0xd9645da2 scsi_remove_device +EXPORT_SYMBOL vmlinux 0xd9687a0f tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0xd97ac499 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd99ad579 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0xd9a9bb30 getname +EXPORT_SYMBOL vmlinux 0xd9b0705a pci_find_bus +EXPORT_SYMBOL vmlinux 0xd9d14511 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0xda01479c mempool_create_node +EXPORT_SYMBOL vmlinux 0xda0340ce ps2_begin_command +EXPORT_SYMBOL vmlinux 0xda146dd8 rtnl_notify +EXPORT_SYMBOL vmlinux 0xda2478d0 param_ops_short +EXPORT_SYMBOL vmlinux 0xda2e9893 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda43bd9b __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0xda480e0a datagram_poll +EXPORT_SYMBOL vmlinux 0xda508c6a compat_sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xda58b389 sk_ns_capable +EXPORT_SYMBOL vmlinux 0xda5fe47b tcp_mtup_init +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda7d4752 tty_hangup +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda8c2cd7 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0xdaa16b82 of_clk_get +EXPORT_SYMBOL vmlinux 0xdaa39cdb devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0xdabaa5e3 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0xdadc5553 netlink_capable +EXPORT_SYMBOL vmlinux 0xdade537c mmc_hw_reset +EXPORT_SYMBOL vmlinux 0xdae274eb generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0xdaea6e0d mfd_clone_cell +EXPORT_SYMBOL vmlinux 0xdaecdb1a scsi_report_opcode +EXPORT_SYMBOL vmlinux 0xdb01ac5a input_event +EXPORT_SYMBOL vmlinux 0xdb302237 simple_dir_operations +EXPORT_SYMBOL vmlinux 0xdb34ace0 kill_litter_super +EXPORT_SYMBOL vmlinux 0xdb3886c0 free_mdio_bitbang +EXPORT_SYMBOL vmlinux 0xdb406bab of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0xdb409a75 bioset_free +EXPORT_SYMBOL vmlinux 0xdb59548c get_user_pages +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb6e71b6 netif_rx +EXPORT_SYMBOL vmlinux 0xdb72d253 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb7e2af0 napi_gro_flush +EXPORT_SYMBOL vmlinux 0xdb7e550a ppp_dev_name +EXPORT_SYMBOL vmlinux 0xdb90cc29 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0xdb9aba90 dev_mc_init +EXPORT_SYMBOL vmlinux 0xdbcd416e sysctl_ip_nonlocal_bind +EXPORT_SYMBOL vmlinux 0xdbf34044 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0xdbfa7e72 vfs_create +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc086d41 dma_mark_declared_memory_occupied +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc16d762 xfrm_register_type +EXPORT_SYMBOL vmlinux 0xdc3020cb xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0xdc3c41a8 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc60ad86 i2c_del_driver +EXPORT_SYMBOL vmlinux 0xdc6e9357 sk_filter +EXPORT_SYMBOL vmlinux 0xdc72334c blk_queue_io_min +EXPORT_SYMBOL vmlinux 0xdc85411d elv_register_queue +EXPORT_SYMBOL vmlinux 0xdc8db98b mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0xdc8f4bac splice_from_pipe_feed +EXPORT_SYMBOL vmlinux 0xdc98fa4d d_find_alias +EXPORT_SYMBOL vmlinux 0xdcb686fb mfd_remove_devices +EXPORT_SYMBOL vmlinux 0xdcb75303 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0xdcb764ad memset +EXPORT_SYMBOL vmlinux 0xdce4a0e9 fb_set_cmap +EXPORT_SYMBOL vmlinux 0xdce7c308 bdget +EXPORT_SYMBOL vmlinux 0xdced52f0 __pskb_copy +EXPORT_SYMBOL vmlinux 0xdcf3ea11 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0xdcf479fa scsi_print_result +EXPORT_SYMBOL vmlinux 0xdd07180c xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0xdd1de2ab cancel_dirty_page +EXPORT_SYMBOL vmlinux 0xdd33b35f netif_carrier_on +EXPORT_SYMBOL vmlinux 0xdd33e950 generic_file_open +EXPORT_SYMBOL vmlinux 0xdd37b8e1 eth_validate_addr +EXPORT_SYMBOL vmlinux 0xdd4d5d51 eth_mac_addr +EXPORT_SYMBOL vmlinux 0xdd674d90 poll_initwait +EXPORT_SYMBOL vmlinux 0xdd6d46df scsi_target_resume +EXPORT_SYMBOL vmlinux 0xdd700800 security_inode_init_security +EXPORT_SYMBOL vmlinux 0xdd8ed8ba blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0xddaf247e bioset_integrity_free +EXPORT_SYMBOL vmlinux 0xddd7bc62 mmc_can_discard +EXPORT_SYMBOL vmlinux 0xddfef391 cdev_add +EXPORT_SYMBOL vmlinux 0xde10eb10 param_set_invbool +EXPORT_SYMBOL vmlinux 0xde1ebdb7 security_path_truncate +EXPORT_SYMBOL vmlinux 0xde21f633 input_register_device +EXPORT_SYMBOL vmlinux 0xde3767e8 tcf_generic_walker +EXPORT_SYMBOL vmlinux 0xde434656 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0xde502156 dev_get_nest_level +EXPORT_SYMBOL vmlinux 0xde6151db tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xdec10e5d blk_free_tags +EXPORT_SYMBOL vmlinux 0xdec46b0d register_qdisc +EXPORT_SYMBOL vmlinux 0xded34206 pci_select_bars +EXPORT_SYMBOL vmlinux 0xdee76a61 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0xdeffb837 noop_fsync +EXPORT_SYMBOL vmlinux 0xdf0952f8 ata_std_end_eh +EXPORT_SYMBOL vmlinux 0xdf0fb438 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0xdf1b8314 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf3b51e4 key_revoke +EXPORT_SYMBOL vmlinux 0xdf478d0c __nlmsg_put +EXPORT_SYMBOL vmlinux 0xdf48a0eb flex_array_put +EXPORT_SYMBOL vmlinux 0xdf49d154 bdgrab +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf5eada9 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf7ca172 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0xdf87c97c devfreq_resume_device +EXPORT_SYMBOL vmlinux 0xdf8c695a __ndelay +EXPORT_SYMBOL vmlinux 0xdf8dfca8 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf980f96 vlan_untag +EXPORT_SYMBOL vmlinux 0xdfa6d7bc kthread_bind +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfdab78f security_path_symlink +EXPORT_SYMBOL vmlinux 0xdfdc5fe0 pci_request_region +EXPORT_SYMBOL vmlinux 0xe00787e2 tcp_gso_segment +EXPORT_SYMBOL vmlinux 0xe00b3886 __scsi_put_command +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 0xe07bd93d pipe_unlock +EXPORT_SYMBOL vmlinux 0xe08524e0 mapping_tagged +EXPORT_SYMBOL vmlinux 0xe08b06a6 tcf_hash_lookup +EXPORT_SYMBOL vmlinux 0xe08fca71 amba_request_regions +EXPORT_SYMBOL vmlinux 0xe092e525 bdi_register_dev +EXPORT_SYMBOL vmlinux 0xe0967e22 security_path_unlink +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0caca68 ip6_route_output +EXPORT_SYMBOL vmlinux 0xe0d3b2ac __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0xe0da4247 neigh_parms_release +EXPORT_SYMBOL vmlinux 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe11f3cbc _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0xe1584837 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0xe175acc7 phy_connect_direct +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe192533e read_cache_page_async +EXPORT_SYMBOL vmlinux 0xe1add3b4 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0xe1ca28ab simple_getattr +EXPORT_SYMBOL vmlinux 0xe1ffb62e nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe2025dc4 fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0xe204e3c0 mpage_writepage +EXPORT_SYMBOL vmlinux 0xe20738fd simple_statfs +EXPORT_SYMBOL vmlinux 0xe221ae3b __i2c_transfer +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24322e1 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe250937f inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xe269c9e0 nlmsg_notify +EXPORT_SYMBOL vmlinux 0xe27cd124 ppp_channel_index +EXPORT_SYMBOL vmlinux 0xe284403c ps2_command +EXPORT_SYMBOL vmlinux 0xe2926db6 freezing_slow_path +EXPORT_SYMBOL vmlinux 0xe2976647 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2a4289e mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xe2bd9373 mmc_start_req +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2de2ac7 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0xe2f25e3b kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0xe2ff7343 tty_port_put +EXPORT_SYMBOL vmlinux 0xe30c983a vmap +EXPORT_SYMBOL vmlinux 0xe31506e5 clear_inode +EXPORT_SYMBOL vmlinux 0xe31c1f0b generic_file_direct_write +EXPORT_SYMBOL vmlinux 0xe358a51a remove_arg_zero +EXPORT_SYMBOL vmlinux 0xe35c5285 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0xe365762c scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0xe36df578 dma_async_device_register +EXPORT_SYMBOL vmlinux 0xe36e96b2 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0xe3a3d6c9 nf_register_hooks +EXPORT_SYMBOL vmlinux 0xe3a53f4c sort +EXPORT_SYMBOL vmlinux 0xe3a962ac unregister_binfmt +EXPORT_SYMBOL vmlinux 0xe3b0615d mnt_pin +EXPORT_SYMBOL vmlinux 0xe3d5be2f do_sync_write +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe413be4a memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0xe42c1fd6 kernel_bind +EXPORT_SYMBOL vmlinux 0xe484b7d5 scsi_finish_command +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe4899034 elv_add_request +EXPORT_SYMBOL vmlinux 0xe48ce057 tty_check_change +EXPORT_SYMBOL vmlinux 0xe49405ad ida_init +EXPORT_SYMBOL vmlinux 0xe4b9b63b fddi_type_trans +EXPORT_SYMBOL vmlinux 0xe4e13234 __register_chrdev +EXPORT_SYMBOL vmlinux 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL vmlinux 0xe50f084b ppp_register_channel +EXPORT_SYMBOL vmlinux 0xe5122890 flow_cache_genid +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe53d1faa of_translate_dma_address +EXPORT_SYMBOL vmlinux 0xe54771f4 pci_target_state +EXPORT_SYMBOL vmlinux 0xe54d2e8d aio_complete +EXPORT_SYMBOL vmlinux 0xe5542f1c security_d_instantiate +EXPORT_SYMBOL vmlinux 0xe5648f8b jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0xe57361dd __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe57bfa11 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe58f052b rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0xe5948762 rtnl_unicast +EXPORT_SYMBOL vmlinux 0xe59c377c netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5c8ed0a register_nls +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe5f2c91d sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0xe603e69a ps2_init +EXPORT_SYMBOL vmlinux 0xe610d5ed ip6_xmit +EXPORT_SYMBOL vmlinux 0xe63e3ef1 register_filesystem +EXPORT_SYMBOL vmlinux 0xe651d07b xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0xe651e8eb padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xe66452ab dql_init +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69a9df4 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL vmlinux 0xe6b0ab9e dcache_dir_close +EXPORT_SYMBOL vmlinux 0xe6eaa1ff cad_pid +EXPORT_SYMBOL vmlinux 0xe6fb1b13 dev_get_flags +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe716b0e2 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0xe7195d22 netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xe74c8257 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0xe7722171 flex_array_free +EXPORT_SYMBOL vmlinux 0xe77c2960 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0xe788517f dev_printk +EXPORT_SYMBOL vmlinux 0xe7976458 kernel_sendpage +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7afe2cf pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0xe7c20de5 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0xe7cef2e5 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0xe7d124ac xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe80e2ac3 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0xe81d1c09 dev_get_by_index +EXPORT_SYMBOL vmlinux 0xe84213fd md_error +EXPORT_SYMBOL vmlinux 0xe860b6b3 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe88da944 scsi_setup_blk_pc_cmnd +EXPORT_SYMBOL vmlinux 0xe88dcf5e pci_release_regions +EXPORT_SYMBOL vmlinux 0xe89e7b9d register_quota_format +EXPORT_SYMBOL vmlinux 0xe8aa0fd6 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0xe8b369d6 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0xe8b63ace radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8c3db2c skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0xe8f0e62a kobject_set_name +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe94dc469 tty_lock_pair +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe96653f8 scm_fp_dup +EXPORT_SYMBOL vmlinux 0xe968ce3c nobh_truncate_page +EXPORT_SYMBOL vmlinux 0xe970281a of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0xe9911d88 padata_do_parallel +EXPORT_SYMBOL vmlinux 0xe9dc51c9 mem_section +EXPORT_SYMBOL vmlinux 0xe9e25e3f lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xe9fb4edf __neigh_create +EXPORT_SYMBOL vmlinux 0xe9fed135 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea067f79 napi_gro_receive +EXPORT_SYMBOL vmlinux 0xea0df522 input_unregister_device +EXPORT_SYMBOL vmlinux 0xea10212a int_to_scsilun +EXPORT_SYMBOL vmlinux 0xea10655a __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xea16dd4c tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xea1e108e remove_proc_subtree +EXPORT_SYMBOL vmlinux 0xea430092 tcp_prequeue +EXPORT_SYMBOL vmlinux 0xea6e3003 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0xea76d5cb idr_init +EXPORT_SYMBOL vmlinux 0xeabee572 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0xead83cd3 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0xeae3dfd6 __const_udelay +EXPORT_SYMBOL vmlinux 0xeae9e964 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0xeb0dfc9e mmc_fixup_device +EXPORT_SYMBOL vmlinux 0xeb314dbc xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb3999c7 ps2_drain +EXPORT_SYMBOL vmlinux 0xeb44339a free_pages_exact +EXPORT_SYMBOL vmlinux 0xeb4e5cd3 tty_register_device +EXPORT_SYMBOL vmlinux 0xeb55ca7e blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0xeb6436b9 dev_printk_emit +EXPORT_SYMBOL vmlinux 0xeba0989c jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0xebab9ae4 phy_detach +EXPORT_SYMBOL vmlinux 0xebc3f582 nf_register_hook +EXPORT_SYMBOL vmlinux 0xebdbe48c radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xebe12613 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0xebe6e42c inet_frags_fini +EXPORT_SYMBOL vmlinux 0xec17ebb0 of_match_node +EXPORT_SYMBOL vmlinux 0xec2dc4e1 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0xec3b7d98 posix_lock_file_wait +EXPORT_SYMBOL vmlinux 0xec435b17 dev_alloc_name +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec58cd40 jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0xec7b07fc xfrm_state_add +EXPORT_SYMBOL vmlinux 0xec84c98a sock_no_getname +EXPORT_SYMBOL vmlinux 0xec90f2af PDE_DATA +EXPORT_SYMBOL vmlinux 0xecdf0683 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0xece104e4 ip_options_compile +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecf8adb8 skb_pad +EXPORT_SYMBOL vmlinux 0xed013b43 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0xed06bce2 neigh_direct_output +EXPORT_SYMBOL vmlinux 0xed0c237f xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0xed22bf0b tty_port_tty_set +EXPORT_SYMBOL vmlinux 0xed3f424f irq_set_chip +EXPORT_SYMBOL vmlinux 0xed4b9131 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed8f3488 nf_log_unset +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedbee092 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0xedd1e460 request_key +EXPORT_SYMBOL vmlinux 0xede7d86d audit_log_task_info +EXPORT_SYMBOL vmlinux 0xedfb3771 bio_split +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee3ec7f5 napi_get_frags +EXPORT_SYMBOL vmlinux 0xee43b816 lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0xee527d4f pcim_iomap +EXPORT_SYMBOL vmlinux 0xee5d7e0a f_setown +EXPORT_SYMBOL vmlinux 0xee8c54a5 skb_find_text +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xee97e006 swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0xee9835e7 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0xeea1852a __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeba8931 dev_add_pack +EXPORT_SYMBOL vmlinux 0xeec7ad89 udp_seq_open +EXPORT_SYMBOL vmlinux 0xeeec26a7 queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xeefb4e6a try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xef30c3c7 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0xef3dbbd8 unregister_shrinker +EXPORT_SYMBOL vmlinux 0xef4641bb sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0xef56a22c inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0xef649043 blk_requeue_request +EXPORT_SYMBOL vmlinux 0xef761464 dcache_readdir +EXPORT_SYMBOL vmlinux 0xef9e91de blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0xefbe46b6 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0xefd06ad4 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xefd795c0 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefe148a5 input_set_abs_params +EXPORT_SYMBOL vmlinux 0xefebe400 starget_for_each_device +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf01c5884 find_lock_page +EXPORT_SYMBOL vmlinux 0xf025c370 clear_nlink +EXPORT_SYMBOL vmlinux 0xf0283f43 unlock_rename +EXPORT_SYMBOL vmlinux 0xf02a4168 arp_xmit +EXPORT_SYMBOL vmlinux 0xf046dc94 wake_up_process +EXPORT_SYMBOL vmlinux 0xf0513799 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf0619801 timekeeping_clocktai +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf087137d __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0a7314d vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0xf0a9aa10 kobject_get +EXPORT_SYMBOL vmlinux 0xf0b349ed interruptible_sleep_on_timeout +EXPORT_SYMBOL vmlinux 0xf0d10151 phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0xf0e8ec71 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0f1246c kvasprintf +EXPORT_SYMBOL vmlinux 0xf0fcd761 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0xf100416a remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xf103cbba ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0xf1056f6c cfb_imageblit +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf1182c5c submit_bh +EXPORT_SYMBOL vmlinux 0xf13feb57 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf1487535 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0xf1498f68 wireless_spy_update +EXPORT_SYMBOL vmlinux 0xf14b3f9a __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0xf1642598 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0xf17f72b3 genlmsg_put +EXPORT_SYMBOL vmlinux 0xf1816305 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1c144d6 phy_scan_fixups +EXPORT_SYMBOL vmlinux 0xf1c6930e blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0xf1d52f86 fixed_size_llseek +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1ef3446 nobh_write_begin +EXPORT_SYMBOL vmlinux 0xf202c5cb radix_tree_insert +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf23b42c0 module_layout +EXPORT_SYMBOL vmlinux 0xf23c33a4 textsearch_prepare +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL vmlinux 0xf25db58e dev_kfree_skb_any +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 0xf2b1ac8e __getnstimeofday +EXPORT_SYMBOL vmlinux 0xf2f98c9b dma_release_declared_memory +EXPORT_SYMBOL vmlinux 0xf312cb9d ucs2_strsize +EXPORT_SYMBOL vmlinux 0xf313d9e7 tcp_proc_register +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf33822cc pm860x_reg_read +EXPORT_SYMBOL vmlinux 0xf3450ef4 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf35b39b9 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0xf38889c2 netdev_lower_dev_get_private +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 0xf3a426a4 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0xf3aaa38e interruptible_sleep_on +EXPORT_SYMBOL vmlinux 0xf3b011a5 blk_bio_map_sg +EXPORT_SYMBOL vmlinux 0xf3bf0bce __bitmap_complement +EXPORT_SYMBOL vmlinux 0xf3c9a52d padata_remove_cpu +EXPORT_SYMBOL vmlinux 0xf3cdf730 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0xf3cf63e2 d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0xf3f19163 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xf4038b7c kfree_skb_list +EXPORT_SYMBOL vmlinux 0xf4195b48 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0xf4274c02 neigh_seq_next +EXPORT_SYMBOL vmlinux 0xf43dfa4b __scm_destroy +EXPORT_SYMBOL vmlinux 0xf440823e sync_inode +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf4593983 tty_free_termios +EXPORT_SYMBOL vmlinux 0xf47a0b24 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0xf4835f92 wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xf4bb7edb scsi_unregister +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4c57c25 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0xf4cf5326 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0xf4d28401 make_bad_inode +EXPORT_SYMBOL vmlinux 0xf4e70be9 dquot_quota_off +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f5595a __sb_end_write +EXPORT_SYMBOL vmlinux 0xf5138ae2 dev_addr_flush +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf545952b pci_claim_resource +EXPORT_SYMBOL vmlinux 0xf55435d9 empty_zero_page +EXPORT_SYMBOL vmlinux 0xf5579e99 locks_init_lock +EXPORT_SYMBOL vmlinux 0xf5904e61 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0xf5a639b1 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0xf5b674b2 max8925_reg_read +EXPORT_SYMBOL vmlinux 0xf5e2ab34 fb_pan_display +EXPORT_SYMBOL vmlinux 0xf5ea7ae0 genphy_read_status +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5eedf99 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0xf5f07e41 tcf_em_register +EXPORT_SYMBOL vmlinux 0xf6096dd6 rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0xf6118180 bdi_destroy +EXPORT_SYMBOL vmlinux 0xf623521d mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0xf62dc8c4 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf64d431f set_create_files_as +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf68687be __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xf6879437 tcp_sendpage +EXPORT_SYMBOL vmlinux 0xf68de4dc simple_release_fs +EXPORT_SYMBOL vmlinux 0xf6a9186b pci_dev_driver +EXPORT_SYMBOL vmlinux 0xf6b6efa0 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6e7795a __frontswap_test +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6f0ffed _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xf7033299 loop_register_transfer +EXPORT_SYMBOL vmlinux 0xf7039722 km_state_expired +EXPORT_SYMBOL vmlinux 0xf707cb06 tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xf70fa91e filemap_fdatawait +EXPORT_SYMBOL vmlinux 0xf71ef217 phy_print_status +EXPORT_SYMBOL vmlinux 0xf72303c7 blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0xf72ae63d scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0xf73d2dc5 of_find_device_by_node +EXPORT_SYMBOL vmlinux 0xf741c793 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xf744ed4c unregister_qdisc +EXPORT_SYMBOL vmlinux 0xf74b146f xfrm_input +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf767a083 mnt_unpin +EXPORT_SYMBOL vmlinux 0xf7752483 skb_push +EXPORT_SYMBOL vmlinux 0xf77555cd __memcpy_toio +EXPORT_SYMBOL vmlinux 0xf7829c0d skb_orphan_partial +EXPORT_SYMBOL vmlinux 0xf7869128 gen10g_suspend +EXPORT_SYMBOL vmlinux 0xf7bdc654 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xf7dfdf01 elevator_alloc +EXPORT_SYMBOL vmlinux 0xf803fe39 bitmap_set +EXPORT_SYMBOL vmlinux 0xf80de9ff hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xf811c5d9 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf812cff6 memscan +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf82fa5b9 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0xf83b8705 sock_update_classid +EXPORT_SYMBOL vmlinux 0xf85338db sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0xf89728b5 sk_net_capable +EXPORT_SYMBOL vmlinux 0xf898347b netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0xf8bfd5e2 pci_get_class +EXPORT_SYMBOL vmlinux 0xf8d37a60 bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0xf8e398fc memstart_addr +EXPORT_SYMBOL vmlinux 0xf903db9c kill_block_super +EXPORT_SYMBOL vmlinux 0xf940a328 __next_cpu +EXPORT_SYMBOL vmlinux 0xf95476d4 empty_aops +EXPORT_SYMBOL vmlinux 0xf956c339 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xf98b83eb xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0xf9953725 lease_get_mtime +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9c0b663 strlcat +EXPORT_SYMBOL vmlinux 0xf9dde891 wait_for_completion +EXPORT_SYMBOL vmlinux 0xfa10bbac phy_attach_direct +EXPORT_SYMBOL vmlinux 0xfa207405 iov_iter_copy_from_user +EXPORT_SYMBOL vmlinux 0xfa3c944f kernel_listen +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa5a928d pci_find_next_bus +EXPORT_SYMBOL vmlinux 0xfa6ca68e bio_add_pc_page +EXPORT_SYMBOL vmlinux 0xfa7f3156 wl12xx_get_platform_data +EXPORT_SYMBOL vmlinux 0xfa95c991 devm_gpio_request +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfad74f6c xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaf6c73f create_syslog_header +EXPORT_SYMBOL vmlinux 0xfaf98462 bitrev32 +EXPORT_SYMBOL vmlinux 0xfb0938f5 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0xfb16223f __ip_dev_find +EXPORT_SYMBOL vmlinux 0xfb19bda6 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0xfb3551b7 blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0xfb398c7a sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb7d6a88 tcp_splice_read +EXPORT_SYMBOL vmlinux 0xfb8747b6 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0xfb898257 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0xfb8f665e key_alloc +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfb9bf4cc mdiobus_free +EXPORT_SYMBOL vmlinux 0xfba77060 dquot_scan_active +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbb4850e revert_creds +EXPORT_SYMBOL vmlinux 0xfbc84895 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc252924 tcp_close +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc413cdd dev_uc_del +EXPORT_SYMBOL vmlinux 0xfc4b6d0a __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xfc52047f __wake_up_bit +EXPORT_SYMBOL vmlinux 0xfc60b16b ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xfc70d41d always_delete_dentry +EXPORT_SYMBOL vmlinux 0xfc832ccc __dev_get_by_name +EXPORT_SYMBOL vmlinux 0xfc8968e4 ___pskb_trim +EXPORT_SYMBOL vmlinux 0xfc8b5951 make_kgid +EXPORT_SYMBOL vmlinux 0xfca91e2b serio_close +EXPORT_SYMBOL vmlinux 0xfcaa04a0 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xfcaa4da6 mdiobus_write +EXPORT_SYMBOL vmlinux 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL vmlinux 0xfcb926cd kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcc52060 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0xfcd46761 ilookup +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcf6091e read_dev_sector +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd51ca03 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0xfd6293c2 boot_tvec_bases +EXPORT_SYMBOL vmlinux 0xfd6c0f55 nla_put +EXPORT_SYMBOL vmlinux 0xfd6cbf92 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xfd91062b generic_permission +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfda0dbe8 ftrace_print_hex_seq +EXPORT_SYMBOL vmlinux 0xfdae55a0 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0xfdb4c297 ndo_dflt_bridge_getlink +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdc03a1a clocksource_change_rating +EXPORT_SYMBOL vmlinux 0xfdd6b316 should_remove_suid +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfe01e1d5 elv_rb_find +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe1f8ba9 md_write_end +EXPORT_SYMBOL vmlinux 0xfe3ccdfa md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0xfe3e4e4f tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0xfe58bd8f input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe5e28d0 seq_open +EXPORT_SYMBOL vmlinux 0xfe703452 inc_nlink +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfea5e8ba buffer_migrate_page +EXPORT_SYMBOL vmlinux 0xfeab82ae inet_shutdown +EXPORT_SYMBOL vmlinux 0xfebd5999 init_special_inode +EXPORT_SYMBOL vmlinux 0xfed7a159 vm_event_states +EXPORT_SYMBOL vmlinux 0xfeda1e21 __bforget +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfeebc7c4 __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0xfef96e23 __scsi_print_command +EXPORT_SYMBOL vmlinux 0xff04df55 dev_get_by_flags_rcu +EXPORT_SYMBOL vmlinux 0xff0fab56 inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0xff1cd173 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff4cc8f7 blk_run_queue +EXPORT_SYMBOL vmlinux 0xff66aae0 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff72b745 pipe_lock +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff85ae0b iunique +EXPORT_SYMBOL vmlinux 0xff8ee326 mdiobus_read +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xff9d935f vfs_rename +EXPORT_SYMBOL vmlinux 0xffb3cad4 cfb_fillrect +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffd6e1b2 inet_csk_prepare_forced_close +EXPORT_SYMBOL_GPL crypto/af_alg 0x289197b2 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0x37a759a1 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x6d2a3948 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x74a972f1 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0x84e861d4 af_alg_release_parent +EXPORT_SYMBOL_GPL crypto/af_alg 0xa49a8e65 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xb61e66cf af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0xcb39de78 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0xea14b20c af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0xf95e8d53 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x432c4777 async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x56197661 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xafe6f71f async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x2904b85d async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xe490e3fb async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x1ca3de82 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x3a67d973 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x6d5acf26 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xb6718db6 __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x487c070e async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x629dbb47 async_xor +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0xe4be1c2c 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 0xd82f0eeb 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 0x7b119fde 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 0x0f006d44 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x5c5ce6d3 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x7c8a1047 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x8f36dc80 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0x961e2b70 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x9d1b7dc8 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xb5de5e37 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xd2e02cac cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xf14790fa cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xf6bfc65b cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0x6029076b lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x5ddb33e9 __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x77b39cb4 __serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x81f8a585 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 0xd32a95fe twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x770d8b2b xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x27c2b7f9 ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x437a6bf9 ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x65465f92 ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xa7117455 ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xb3152df6 ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xecccfee6 ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xfd03df74 ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x0dbbeea1 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x0f586ab7 ahci_restart_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x30bddac4 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3306938b ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3b977224 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3eaa3d71 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x4fffe2b4 ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5935a7f1 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5c08e8d5 ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5eacba1f ahci_interrupt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x61d0c7ed ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x65016bd8 ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x68fba191 ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x694f923e ahci_thread_fn +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6e05c4e7 ahci_hw_interrupt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x81399d4e ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8e26026e ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x95d7716e ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa1d95f2d ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa2b9a615 ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xb39d1499 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xbdf998b5 ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc87ee3ed ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xdc204f04 ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf0153e73 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf7f19cad ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x085cf345 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x361a196a bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3768fc6f bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x394b3f58 bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3c1252f8 bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3e9bb4a4 bcma_core_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x493ed479 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4a3e467a bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4e86d2d3 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x561d324a bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5b35730b bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x76b985ea bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8379c1a3 bcma_core_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x889505de bcma_core_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x938efdba bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x9d19b6df bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xce963745 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xcfc5c461 bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xdce80d60 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xde0dfd31 bcma_find_core +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe4ad363d bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xebb61428 bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf132023e __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf1966f00 bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x003e8719 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x43d889c4 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x592ba773 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x78b000fe btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x9552c579 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xb2a545b4 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xb2ce25ea btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd58263f8 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xe6465d50 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xec059087 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x907d4b52 dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xeac79515 dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xed30ef2c dw_dma_shutdown +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0xdf5689f6 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0xe290a049 bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x3a377443 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x6481567d __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x34acbc60 drm_vm_open_locked +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x444b9aef drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xdee329c0 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 0xd21ec01d ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xd7aceafb ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xdaa1769d ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00225a89 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x07c9acfa hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0b39194a hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1404ed5e hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1baef78c hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x21bcd352 hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x24673423 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x282b7094 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x30a36408 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x40b0c0af hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x478f4489 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4ff64287 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x540f3c33 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x556225a9 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x598129f6 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x614e10ab hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x68b94e3f hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6f5a76d7 hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0x707f33c8 hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7c92a6ea hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8cfecb5d hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x96059edb __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb573951c hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb6ede3f1 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbe461649 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xcad80706 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xccdd411d hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe07d3a52 hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe76e9f28 hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe7fc6867 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe83a3791 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xeeb99be2 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xef3b018b hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf612477e hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2ccb169b 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 0x26b13139 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x34e31dc7 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x3c9b3154 roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x9995a530 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xd1e77ebc roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xfbae18e6 roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x0e46effa sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x3ad8a53c sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x5b658031 sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x7eda7d98 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xb84a0985 sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xc854feae sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xcd76fd61 sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xeaab1a04 sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x0804423e hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x11124ef4 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x1b374e45 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x377f843e hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x3d693955 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x48975a4b hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x4f315998 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x706ed6dc hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x80c8a269 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x830fde35 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x9723e86c hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd926cbd7 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xded19cf0 hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xff236093 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x6c6526f1 adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x8503d7f9 adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x2bd9f2e4 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x4c828355 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x5581eb42 pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x5edcbb94 pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x7b04bbb3 pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x87206380 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x93ec950a pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xbd19a297 pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xcff09b34 pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xecfa3580 pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf4c47874 pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf82a3968 pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x15411498 i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x2e272525 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x3924f288 i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x53107e38 i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5701960f 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 0x88b1749f i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x94a44819 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xc1e5dffe i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xe25e5ba3 i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xa51b3796 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xdb38139c i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x4fcbbd3a i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x9be612b3 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x52e392ff ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x5bafbbef ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x629f7b3a ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x67dcbafa ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x81245a9f ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x9d4ffd92 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xc150a7ed ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xdd55676c ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xebcc8112 ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x02497c88 adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x1e72c2e4 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x207af6c7 adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x57a1cdd5 adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x60377480 adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x61522542 adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x9b8ab512 adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xa9d6793a adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xc43ea29f adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe3694cdb adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe76448dc adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xeb791c23 adis_reset +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x04e5e4f2 iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x054f66e1 iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0b3c891d iio_scan_mask_set +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x16f2394b iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1fe213d4 devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x24b63098 iio_validate_scan_mask_onehot +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 0x30f19827 iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x31c87a0a iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x472a67aa iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x54c8718f iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x59afbf4b iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5ce33394 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6d8e7d46 iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x70150e30 devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x72df871b iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x930a51c1 iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x93b43033 devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x96bb8b88 iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x98432ca1 iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9a3eaf5a iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xafd074ef iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb4d3bdce iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb5ee72da iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xcd7f20a8 iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd4f31ebe iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd92b880c devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdc9f4c32 iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe24568c3 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xed0d041c iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xfd7b7f76 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x4a8bc6ab input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0x5341c4bb 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 0x855fa443 adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x5d1a5ad3 cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xa454bf7d cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xf00d4904 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x44cecafa cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x93e8e1a6 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xa4a3c24e cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x82e22bd6 cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xf82b8aad cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x039d9a1f ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x135cbc8e ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x25517d81 ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xa84eb3b4 ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xb6ddd258 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xc91af799 ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xd3b9ae34 ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xd67db62c ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xdf4ec460 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 0x0291df99 gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x15768c1e gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x1c9bdd11 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x211db2dd gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2311b70e gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x58edd733 gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x5b7e3f39 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x7a6564b3 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x7b7fddc3 gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9f5d8f37 gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa3151853 gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xb8067d67 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc4d6b53d gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd9ce11ec gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe3ff6082 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe8af2731 gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xef562357 gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf87d70e1 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x00801543 lp55xx_init_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x03322726 lp55xx_write +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x10c7cf86 lp55xx_register_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x17e9bd37 lp55xx_read +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x2b9c393f lp55xx_unregister_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x63870723 lp55xx_of_populate_pdata +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x6a581bd6 lp55xx_is_extclk_used +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xd73e33da lp55xx_deinit_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xdf3de341 lp55xx_update_bits +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xe7564b48 lp55xx_register_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xf6f2de48 lp55xx_unregister_leds +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x749e05f2 ledtrig_flash_ctrl +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x7903e46e ledtrig_torch_ctrl +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 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 0xa9328730 __tracepoint_bcache_alloc_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 0x0b13dd19 dm_cell_error +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 0x680e0109 dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x7508f26b dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x8cde3a86 dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x9a56151d 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 0xbd1dff9d dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xd0f37d22 dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xebd06eaf dm_bio_prison_create +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 0xb3971cdb dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xcbb1bae2 dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe6024e59 dm_bufio_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xebcc64a4 dm_bufio_get_block_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xeca7949e dm_bufio_client_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x16a36574 dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x64c7ddff dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x6cd0f037 dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x883ebaca dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xa07d3ca0 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xc12f1444 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xfab5225c dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x4da91e28 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xcf71fb46 dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x01d2f9ac dm_rh_recovery_start +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x4430764e dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x45ab972a dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 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 0x8af932bb dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x970cba31 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 0xca7f1092 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xe14304f8 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf7e86fdc dm_region_hash_create +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/dm-region-hash 0xfe666946 dm_rh_delay +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 0x17c36f29 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1cac81ac dm_bitset_clear_bit +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 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 0x2f74609d dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x32b5f546 dm_array_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x38c75c44 dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x42dbdfc3 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 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 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 0x68fae9d2 dm_disk_bitset_init +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 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 0x966a8838 dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9a97bbb4 dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9e798e22 dm_bm_set_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9f624559 dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa0bbbb49 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa13861b4 dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa87c5b4d dm_array_resize +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 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 0xe44b4b9b dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed1e1f96 dm_btree_remove +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 0xf475af48 dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf5455120 dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/raid1 0x9de3270f md_raid1_congested +EXPORT_SYMBOL_GPL drivers/md/raid10 0xc661b810 md_raid10_congested +EXPORT_SYMBOL_GPL drivers/md/raid456 0x42484654 md_raid5_congested +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x36534bb8 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x40f8618d saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x6417ce36 saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x6955ee90 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x6de8b044 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xa19c1c32 saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xa6c51ce9 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xd8f8db19 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe0ed6e05 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xfcfe0f27 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x0f504795 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x27b3944a saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x513f0b8b saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x6d957e7c saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xa4fc01c0 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xc63a634f saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xdb861477 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x082d3313 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x0e867897 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x215d5400 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x24132ad3 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 0x380cf449 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x610a9c43 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x62917ee5 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x642ed818 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x6ed26c75 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x8ae2943b smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x8dde95b7 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x91029668 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x99a81ab3 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9fc4f60c smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa9c3499f smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc7d9b708 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xca10461f sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xf26e4e2f smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0xd08c0a78 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0x9e61370d cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x0ca4a4ae mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x10ce272f mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x1a65d21c mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x766b6782 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x9b781fc0 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa0edccba mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa6ccaa80 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xac11f006 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xb07b7387 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xbc874f3b mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc5933c19 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc7a459e0 mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xe018f4e5 mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xe0f02087 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xe32ed7da mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xfd1f438d mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xfef3b357 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x38df8273 saa7134_s_std_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x786e7320 saa7134_g_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x99262cd0 saa7134_s_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa71adb72 saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xae5534c7 saa7134_queryctrl +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x08fd536d ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x486297c6 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 0x8f5c3309 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xad257666 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xc507a7ab ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xce79f6b1 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xd39bf903 ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x3f64726a radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xb998fefe radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x0447c377 ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x27575c18 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x29e80cd2 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x33d247f0 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4f2976cf rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x50cbf9f8 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x53be745c rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x5f80c899 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x664ecea9 rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6c9a35b2 rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6ef1e02f rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x71d4e25b ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x750605f5 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xadf96273 rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xbd614783 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xcc7447cc rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xcdcf407a rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd136f94e ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe558ffda rc_open +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0x238153d6 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x2127fb9a microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0xb35a8959 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0xe1f74efe r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0xfaa8ef31 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0xd9542011 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x71c75af5 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xbadfe766 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0xc482ae16 tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xd479306a tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xf8c01545 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x85d6ed50 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xa54220cb tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0xc0b7f248 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x09e6380a cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x0a910491 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x0d1ba3eb cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x25838667 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x4351bb59 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x4c9045df cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x4d0cf557 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x534b39a7 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x61e3fbd9 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6268a329 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x703a0ac0 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x77689689 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x89cfad2d cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb2c0a1a4 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb803b2a0 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb9daee0b cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xbb359be2 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xdcfdb563 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf31b3a29 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x8bfb2720 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0xcd49ae6e mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x09a0fca5 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x145d840a em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x21b99254 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x35761b02 em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x481038e7 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x5476df05 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6527e0ce em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x8fc2b066 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x964c8f24 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xb927328d em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xc2b4b3b4 em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xd9a23c7e em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xe6134e44 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xf20dc16b em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x3ffadebc tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x81b0cac6 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xa05957bc tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xc8a1e4ca 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 0x4e3802cd v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x5476fd62 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x5879025a 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 0x8a33eb2e v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xc18def76 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xd6c04dbc 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 0x221d2fbc v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x36e8756a v4l2_find_dv_timings_cap +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 0x53105839 v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x6976cfe0 v4l2_valid_dv_timings +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 0x7eaf8e7a v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xb0891da2 v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0x6443895c v4l2_int_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0x90e3f169 v4l2_int_ioctl_0 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xa5228b24 v4l2_int_device_try_attach_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xe9400f68 v4l2_int_ioctl_1 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xf6e5d0e0 v4l2_int_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0286317d v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0ed6b8b3 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0fc54664 v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17eb0eee v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x559fb7dd v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x69444f8c v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x73de4c89 v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x77efda47 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x828290f3 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x84280604 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x89c92d6c v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa1043d39 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xaed62066 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc931c8e2 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd2de9024 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0233b609 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x04fd0249 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0a6ab96d videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x177ed198 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2cb9b210 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2e298250 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4675ccb8 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4b303bac videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4dc594b5 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4e3e7e1e videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x539d77ca videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5f70dacd videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x82e9cd32 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x833d0b8a videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8d9ec33b videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x90709e7f videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa09ef4df videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xbef5be98 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc8f03461 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xcae43fc9 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xdbaa0fb1 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xdfab4499 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe5fc9cdf videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf11b3c31 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x80e01e26 videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xa52469bb videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xe4eda71b videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x000903b0 videobuf_dma_init_overlay +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x026cd6ae videobuf_dma_map +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x33e3ca79 videobuf_dma_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x45d62821 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 0x746af381 videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x75fee127 videobuf_dma_init_kernel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xb2be6c85 videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xb8ca9601 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xf2a15182 videobuf_dma_init_user +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x35aca3ba videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x4c6ed9f5 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x9f8f1a15 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0ec0b88a vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x11cf1538 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x12e7b2d6 vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2728b464 vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2df10503 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x31df86fc vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x414856db vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x45ba2488 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x55f6667b vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5c1cbd85 vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5cac6f7f vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5f33bbba vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6d464e41 vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x80e82bc5 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8688c3aa vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9ddb90f2 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa135aaac vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa5ee2d37 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xab170711 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xab707f5e vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xab8743fa vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xadc80f02 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb01a8782 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb3ccb7dc vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb45a1a12 vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbacb8b8d vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc05bb72d vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc76b07ed vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd0cf3c99 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd2d4d160 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd5364b0c vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe2ce9568 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe8fabe81 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf2418dee vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x3c6817e4 vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x88c7c643 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-memops 0x4909b016 vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x6515b08c vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xad036757 vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xdb60d81e vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0x1cd833b5 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x05a97727 v4l2_compat_ioctl32 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x06b425a9 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x083818a3 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0b91f94f v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0ff9771a v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x119cd5fb v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x29b62c62 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2cc07366 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x31bd30a8 v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3891d2cc v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3b25fb06 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x51e902b0 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x58c2810e v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x63204365 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6ac7975a v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6f6a36d7 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x77adf885 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7cdeb3bb v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8c1aa5eb v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x950e2c7a v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbb00f98a v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbdc59e9a v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc6afcc55 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf854ea65 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x1a89619b i2o_dma_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x1cac0ea3 i2o_pool_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x58cb8e25 i2o_pool_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x83f62859 i2o_dma_map_single +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x8659b84a i2o_dma_realloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xbc8f5bdc i2o_dma_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xe6d7b8d3 i2o_dma_map_sg +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xf0a49170 i2o_sg_tablesize +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xa81ab23d pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd8cdc6a8 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xdb71e6e4 pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x08d10f6b kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x1d3a88f8 kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x54cd1ccd kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x575c354e kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x6518bfeb kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x9991d75c kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x9d224f28 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xbb06ef29 kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x2e696caa lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x5fe8d05b lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x7458dc93 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x0538a1f9 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x57a20e0c lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x6c998121 lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x877412d6 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xcf8d1a94 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xd5f17eb9 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xea1713b9 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x06c174c3 mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x0d0c800d mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x4db6cb2d mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x5fb93e45 mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x696c777a mc13xxx_common_cleanup +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xf70e817b mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x06144c19 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x2bd2cf0f pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x2f0b3e3d pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x3dfbeb14 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x4364278a pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x4a350ee4 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x787e9913 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x79a0c7d0 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xb18ccbe6 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xc8d5dcbb pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xfad7b0cb pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x6784aac5 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xff6d5f79 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x16bd9da5 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x1bfd0425 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x23c4a304 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x4534c28e pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x9a7312c7 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 0x081e7b0e rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2f95d58f rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x3634f80c rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x3c0dbe06 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x509d6114 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x54da1744 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5db8e60f rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5f6aa354 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x76b23d30 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x78d805d0 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x7a9daf21 rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x86b50ff0 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x86cd514f rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8c7f5de9 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8e216a38 rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x93e0da1b rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x95b1a456 rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb83b96c9 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc94d10bb rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf3d91f63 rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf9785cd4 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x032936fe si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x187a076a si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x19a4c54b si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1af5469d si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1b15af86 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x326b6f8a devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x39117e08 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x48cd9817 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4ad0d425 si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x51510d91 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x55d9e013 si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x58bf0a33 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x649428cc si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6cf5503b si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x76aef81f si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x78c5f638 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8238f784 si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9bbc0a3a si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9bf8f651 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9ff18160 si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xaaf0e7be si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xab42280a si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xae9fb788 si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb95f4e06 si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xba8b26ef si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xbd21fdfd si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc7167648 si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc840c6e3 si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd24acd36 si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe48afc02 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe6d0bb5c si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf088bb43 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf9d1d825 si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xfd3cd114 si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x03b041bb sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x32c9443a sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x3e7ed7c0 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xcd72c5c6 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xebac768d sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x442cebe0 tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x6fd7fb25 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x768b7aa6 tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xb3beac96 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0x155f136a bmp085_detect +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0xa08839fa bmp085_remove +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0xb44ea71f bmp085_probe +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0xcdf6d58b bmp085_regmap_config +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x4249356a cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x9df2f65b cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xd30139fc cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xffee95c7 cb710_sg_dwiter_write_next_block +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 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x0e97ecee enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x23d913ed enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x38bc985c enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x5cddfd8d enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x8e90a8e7 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xd4317c79 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xe0057017 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x0c66c90d lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x4691d17b lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x4acab722 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x602c5682 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xc1d99452 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xda1df1c1 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xe8d89775 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xe9a62999 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x3b301364 st_unregister +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x5339f055 st_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x113ce9a6 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x581fb52d sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x84d87127 sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xabec0495 sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xe9890e2e sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x01d26dc1 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x375b626b sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x6be4c63d sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x793a90e5 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x901c2ab1 sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xc3f6a6ae sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x1de2efb5 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xdfd5efcb cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xe0fcca23 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x21a98601 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xac020257 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xd2504987 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x6eaf3e50 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x2a1d9849 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x3cd050ff cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x522ad54a cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x05420620 mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x09c80974 mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x11d2497d mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x142eeb51 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1d920344 mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1e1b2731 get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1ea55eac __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x28436993 mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2d221a57 __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2ea13b56 unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x33f490ff mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x41059f0a mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4234050a mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4bb3ac01 mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4d14cf74 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x528027b3 mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x68343949 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x685a15e2 mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6df75d3c mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6e04efa3 mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x90d17b87 get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa3ec0531 mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb1444abc mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb91e7e1d mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbc265577 mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc09e71fd mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcceb66b2 put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xce0b92b6 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd3e960d3 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdcc22404 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe1784b6a mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe66621c9 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe810e931 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe9e3b2f0 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xec94e46d mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xeccd5996 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf2dbac33 __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf618ccdd mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf718ebda register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf7c51aaf register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf9fdaf79 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x2070a73f deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x9bc2bc67 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xa5ef6d36 add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xaa6e2056 register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xdba577e7 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xc580e6ec nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xce93224b nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0x999d8e10 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x4f231725 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xc418f00a onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x155e0c58 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 0x55216df0 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7a091cb0 ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x81ee4d5a ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x83e4006c ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x9db1a693 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb5520343 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xd7f266e4 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xde1287d5 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe005df17 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe2d63387 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe4e2c8e2 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xebf56fc8 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x480b66fc free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x7c82c466 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x90d06350 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xa2b57c36 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x05765fcd alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x0e56bb31 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x1ff5db03 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x34f0c949 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x40b5123f alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x439eeb2c free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x65352686 can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x752ffb11 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x774cb24a can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x8d8f52d6 devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xa0f2d8dc open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xa60369b7 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd2ebb67f safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xef493c19 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf24e46d8 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x56e57422 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x57f5fa81 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x80cb028a unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xb19e124b register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x0d3e761d unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x4efe1537 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xc268b123 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xd28642db free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x327df21e macb_set_rx_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x32ed98aa macb_get_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x8b88fcc3 macb_ioctl +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x9f99bcf2 macb_mii_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xa4343791 macb_get_hwaddr +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xc84ca26b macb_set_hwaddr +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xe447c2f7 macb_ethtool_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x02ddc1e5 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x05dbbc34 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x065fe6e6 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0d190020 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0de570e0 mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x166eeaca mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1e871dfc mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x24d70c61 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x272cd06c mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x280f3bfb mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x292480b0 mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2a72e0ed mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2c01a5ad mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2c3470c8 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2e97dd81 mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2fe956fa mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x32348adf mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3782de6e mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3d1bf5bf mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x40c90372 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x417a06b8 __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x44cdc23d mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x47152c94 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x48c2c8d8 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x517565ed mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x58d84225 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5c6003cb mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5d08ca96 __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5e893cf6 mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5ee1e4c7 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5f53596c mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x60f7a81e mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x61732bcc mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x65f2521e mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6d14872c mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6e3cae1a mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6fe2739c mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7094c01d mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7217c8d0 mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7ca2d858 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x802823e1 mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8031049d mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x82a0a7f4 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x835bd21a mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x88454b5a mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8affbcb9 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8b66a92a mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8df0cbe9 mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x92a43d4e mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x981e6117 mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x993b4cc6 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9c333e06 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9ca38e46 mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9e16eeb0 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9f1a82c3 mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa68cfd9e mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa68d7d9f mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaa0d59ba mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaa6d804f mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xad429e4f mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb0aac501 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb3510776 mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb51aa62e mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb5aba5a8 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xba2c0919 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbe048deb mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbfd027a7 mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc128b7d3 mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc1327463 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc9850393 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcb40aab9 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xccb914fd mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xccbcc1de mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcdae890d mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xce54896c mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xce79ac18 mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcf8cd92a mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcfafd236 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd05b937e mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd2fa63a4 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd7124063 mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdb06a971 mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdb76d826 mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdc89c056 mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdcbddca5 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdd404c23 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdde420f7 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xde5b7389 mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdfff10a5 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe30c0aaf mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe3d047d7 mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe56f5a30 mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xecf0038c mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeef7ce46 mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xefa0006c mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf178d1a0 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf328aa61 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf5bf6a47 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf66e1e18 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf8e9a4d8 mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfefbb42d mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xff7e5438 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0e3c4516 mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x123d95ed mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1a1ebf22 mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1ce74dad mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x20e8450c mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2cbdb0bd mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x502aa1ac mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x66fd536c mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x89f44e32 mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaa1ea622 mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb2c027c3 mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc4dc906d mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc6861aa2 mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc6efd15c mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcf84b8fa mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd6c4ef56 mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdabb8478 mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x120258b8 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x389cca2c macvlan_start_xmit +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x4569fac1 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xbaf06f09 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xf9da1918 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x0b63b261 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x103fedd5 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x5ddc6cce usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xe2e7b2e8 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xe3aca0c1 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x59a2dec0 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x6b07780b cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x9897f5dc cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xa0e1625a cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xbc89c80c cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xc9f9b92f cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xd53e89d1 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xf4af217b cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x025ba61e rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x027528e2 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x200f0bf5 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x36a19a26 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xc4544def rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xeeb747c4 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x01e5a33f usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0b237ecd usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x12f68beb usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1373190c usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1e38d9dc usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1f4f1b55 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x20c1ca6f usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x41783528 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x445ad030 usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4cec1f8b usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5787176d usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5931b69d usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5b732742 usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x645f7323 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7b93758a usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7f6c3b96 usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8449c292 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x88780758 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x88b5a6d3 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x91bb558c usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9fdb6f55 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa67be6f1 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa708c25d usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb46b76c5 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb4c46d62 usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbb436ceb usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcb56602d usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcd26f48e usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd6d76562 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe3321570 usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe5a97cf9 usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf7adf987 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x0a424725 vxlan_xmit_skb +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x12a9335e vxlan_sock_add +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x4d24115d vxlan_sock_release +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xcf415a62 vxlan_src_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xd0411aab vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x0105fbe7 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x0956d2b5 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x0cb242e2 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x233224bb i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x2cc77356 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8c7624d5 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8d8b5ce5 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x936a3072 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa31ac786 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc480d9ce i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xcf734d34 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xdc948c75 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xddb56179 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xec904ee9 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf36b3bf4 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xfa9fdc32 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x2722bf0a cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x652577c4 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xbfc33dba cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0xb8c4d816 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x03b1a6cf il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x41540236 il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x9e25967d _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xde89f865 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xefae5bce il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x08bb7916 iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1a31d0eb iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x247b9b8e __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x26a85d5a iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x4569ca0f iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x4db34eaf __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5d04dc09 __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5d0a212e iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6f984ab1 iwl_poll_bit +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 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 0x94a863a3 iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x9c553437 iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xae4a0279 iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xafa9cdb2 __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb2995198 iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb83cee15 iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xceb0ed9f iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd0501a81 iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd080f037 iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd708ac49 iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd9f02243 __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe616a011 iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe9446032 iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe95be3b7 iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf03a5420 iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xfdd5209c iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x1ef0d918 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x22a74180 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x35b8aa9f lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x3947cbe6 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x45f5f1d2 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x4959c97d lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8cd595e7 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x93bfe5c4 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x9e8ced60 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xacaf927d lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb79edd9d lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xba560ba4 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xbe44b7b8 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xc97b5dd5 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd10c6e7b lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xdd6ddfda lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x1002bbda lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x22b57b37 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x3220d4c9 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x436ac0a8 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x8d6bc970 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x90cd86ea lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xa7b0d55d 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 0xf370b479 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0xddd3c3f9 if_usb_prog_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0xe34a5434 if_usb_reset_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x0b7acd85 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x1a085d17 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x239f392c mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x4342313b mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x540cf4df mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x5d17890e mwifiex_deauthenticate +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x77b73272 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x7f0ae38a mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xadaaf609 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xadd82253 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc7d724d8 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xcd5d0c0c mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe3af3f2d mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xf0d16910 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x1080108c p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x3436e8aa p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x4c01bdca p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x88628194 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x8d6bee95 p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xc03d1c24 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xc9148f31 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xda14c510 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xf5641d8a p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x077752ec rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x07fa56b4 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x17b6d809 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x20293e06 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x24fd4939 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2baff45c rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2bffa520 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2db7aea2 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x31a4d7b4 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x36368f15 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3ed12721 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x40322373 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x722093a6 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7543ff23 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x78a875dc rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x79af9308 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x81982260 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8b1e1ae7 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9a40be89 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9a8612a2 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9b77f211 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9d880746 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa22ac231 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa385c5de rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa8ced6d5 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xaad03e54 rt2800_get_tkip_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xba11ee54 rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc997b816 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd6c7059b rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd8467e98 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd9ba7847 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdffc482e rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe0f29f87 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe405439d rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe6c14e76 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe6e4932c rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf3326588 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf621ae82 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0664f1d5 rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x221664fd rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2e6ff201 rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x4509ab86 rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x4d022f02 rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x73c88dc7 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x82df4087 rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x8f6c9083 rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x93adf01a rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xb7ff1577 rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc0ccc0ed rt2800mmio_init_queues +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 0xf4a48d79 rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xff0a55a6 rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x02bd3e7c rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x04834334 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x071174da rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x16133a4c rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1732283e rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1f0f1644 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2a06f2ea rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3532faeb rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x39560ada rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3dcc95d4 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x410d6f7f rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4332e49d rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x45285929 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4941a95e rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x54021c90 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5922391d rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x632d7898 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x66fdc022 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x678ec18b rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6bb806f8 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6da33238 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7321532a rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7b7ac5d5 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7e221d10 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7f40e3d9 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x84b80338 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8cf3a241 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9318bbef rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x97a1469b rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x97d073d2 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9fd81064 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa9d34c8c rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb29f9138 rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbc7f9778 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc3bf7562 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc5b8d3bb rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcf7e7394 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd64ed73f rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd66fe076 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf115e16e rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf17887b6 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf2e51009 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf7a052a3 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xff15597f rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x0ef08666 rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x5d914590 rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x731372db rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x8cd75526 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xdb5cbfee rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x6dec213b rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xd04611c4 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x00c72352 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x09c451ee rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x2ee79f4b rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x37d1ae95 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x6c5751c8 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x7add8015 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x839e4753 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8a59b682 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x9bcce399 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb7745a65 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb7fd0c9a rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xbd12b75d rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xd0388091 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xef2436a7 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0932f31e rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc28a545e dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xed79ccfc dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfc7a3e77 dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x00060f96 rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x00df282b rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x0195faaf rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x03269628 rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x036d1800 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x03a281a2 rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x046ac1a6 rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x0a8aa8c8 rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x162b4878 rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x3892e818 rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x3e820836 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 0x733db747 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x934d8fdf rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x9ab3fe12 rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x9abe6672 rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa2305d10 rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa6e43f28 rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa9a67ac9 rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xaea50c5a 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 0xb75c00ce rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xc0e74669 rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xc4d50844 rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd39da42c rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd73d857e rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xf1e15397 rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xf2efd6cf rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xf4635a33 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x076a3056 rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x12976b91 rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x1896f380 rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x241dedc1 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x3a3c3b64 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x4712fc67 rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x4910d376 rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x4949900d rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x4e49052a read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x542bb609 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x6b4de810 rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x79bff716 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x7dc2a3f0 rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x86d5206e rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xa9b15de9 rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xbebf7933 rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xcc3bdb49 rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xd339cb4b rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xda50849e rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf2aa8f30 rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x04c75957 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x8a76fc40 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xb3ea3bf6 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x07346fa7 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x08856759 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x179b06b5 wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x18ad610b wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x27a684e9 wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2e064997 wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2f36797f wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3ffcdab6 wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x49c2556c wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5192d3b8 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5a2db420 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x61ee7c45 wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x62a34b6a wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6664b4d7 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6774d0bc wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6fe11b79 wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7144951c wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7b49990f wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8169cac2 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8ba8ce71 wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x94b1c247 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x96dd2f1e wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x98da2e94 wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9a49f898 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xab744fe9 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xac56178e wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xadbc06ae wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xade8abd3 wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb17a5359 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb7664096 wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb805a0fa wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xbb220ca2 wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd3e1bce7 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd8b31a5c wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdd90a67e wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdfb379fa wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe2bd6e11 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe696194e wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xeedfd514 wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf36bd477 wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf47b0872 wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfe9782b3 wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xc3565871 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xcdb6a909 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xda0b8617 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x2dd0064c mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x36bf318f mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x3e5bf291 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x9a23c003 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xef3c3ad2 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x32acc452 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x48b8fb80 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x5672325a wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x6fa12233 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x9b03508a wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xbfbf8d47 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x36cf6349 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x02235e56 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x03e68fe1 cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x09b8635d cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0f33fbb0 cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1130cd22 cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1415f64e cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1fea42ed cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x254c5069 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2702b381 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x274ddc04 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x285d175a cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x32341f59 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x330da5f0 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x384fb2e1 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x39f16e86 cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a2759e1 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3cfe9cb6 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x46b163cd cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x48f71aa6 cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4a14b7da cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4b58a4fd cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5e697bb5 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x64ef71ad cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6cc491e3 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x74ce8541 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8016d7d3 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x99d91643 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa41933a5 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa56c2965 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa6ccfaa5 cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb1b1f984 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb2f98c21 cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb310286b cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc2567dcb cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcf47eb40 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd056bce8 cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd462652b cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdd559726 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdfea84cc cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe29110bf cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe5b35875 cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xec677747 cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xee50a609 cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfa4ff96b cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x1396e996 scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x2f87c713 scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x54280b04 scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x57705594 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 0x692cb8aa scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xbd229848 scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xd404ec59 scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x175b2a2b __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x42b42e48 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x43a61f8e fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x4f4a932c fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x57c54921 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x5a9bb16b fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x60ef3780 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x832919f8 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84da54a6 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x8b8a8523 fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9543a38f fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa74fef67 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa86f9ac1 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xae4a2c6a fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xda959a38 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf37fe96e fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x2ef6e5f9 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x6cb47ebc iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x7740afd1 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x9a780cad iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xa2e88f3e iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xda324e29 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x04bedbbf iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x090a0a91 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0b135b59 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1532146b __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1540d737 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1821ab79 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2a8b538f iscsi_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2b4dfb43 iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x30cfa02d iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3ad84e43 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3e58ca7e iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3f20294a iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x432aa214 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4cca7ff2 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4dae7d46 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x53c971d6 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5d28e816 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x632568e6 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x63e4b183 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x68f0fa3f iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6ebe8aab iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x746aa20d iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x839b97c5 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8ea9676a iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x909908f8 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x921056a2 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x926da1ad iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x948ea1be iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9c989993 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9ec3c8c0 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa1adf148 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa3dc701d iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa7342b87 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xad5a613a iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbb2f2164 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbd4a2603 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf890ee3 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc76b27dc iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc9533e09 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcb8d0467 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xce82256a iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdeedd689 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf130893d iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf540212c iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x054fa3b1 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x177e59fe iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x2c21e703 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x2f05f723 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x3a2da31f iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x5751b470 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x62dc4691 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x69c16a97 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x87fd1fb5 iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9877d029 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x99c4c2e2 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa3fa489f iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa56b34d4 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb33b7837 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xbd5d240d iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd3239f86 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd8a93edb iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00973344 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x13736648 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1487d199 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2a64123c sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3751e3b0 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3ebd1374 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3ec688b7 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x713b7a2a sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x766921c3 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7f24cc56 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x81473313 sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x83f161d7 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8668b559 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xaaef7807 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb5364963 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc24fcf5e sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xcaa057ea sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd8b34b82 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xddc06e94 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xdfb66f77 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe065a4aa sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe4e7940e sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xea907627 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xeb449ac9 sas_change_queue_type +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf0d86aea sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x6ee6b567 srp_transfer_data +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x71e0283f srp_target_free +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xcf85da52 srp_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xd8d26e71 srp_iu_get +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xe070b1cc srp_cmd_queue +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xfabe02a1 srp_iu_put +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x5624ea0a scsi_tgt_cmd_to_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x5fb85c79 scsi_tgt_tsk_mgmt_request +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x740c3b43 scsi_tgt_free_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x7ba8bb7e scsi_host_get_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x98fd8202 scsi_tgt_it_nexus_destroy +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xa0671f32 scsi_host_put_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xafa49373 scsi_tgt_queue_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xb7033460 scsi_tgt_it_nexus_create +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xd1120d10 scsi_tgt_alloc_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x16e51160 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x196de460 iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2357d073 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x23eb732e iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3108a931 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x44ff8631 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x49624cdb iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4e8248f0 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x52350941 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x57de2209 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x580ce1d9 iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x585ff844 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6f2a9be9 iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x72e52ffa iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x74d63db4 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7a3fdb55 iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7d7515b8 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x82f4f201 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x886c24a6 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x93de5931 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x96fde02e iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9bad1e5e iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9e0bde84 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa079fd0c iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa34f1f16 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa484ee87 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa6924c0a iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa7de7db9 iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa8d906b8 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb5e87b10 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc2cedd00 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcc5b3858 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcd94f688 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcee5ef76 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd6da0fa7 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd8abaa0b iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe8e42066 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf1d091be iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf467a6c5 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xff535424 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x65709e90 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x86dbab3b sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xa064ac64 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xd62efbfa 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_srp 0x07d4d18a srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x198811b4 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x4c1cc996 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x7b1d8a6c srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x8f89d954 srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x33569896 ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x9197a491 ufshcd_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xaad752be ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xb7d3495b ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xc6385cf4 ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xde19acc9 ufshcd_resume +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x8681d1f4 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xac6b9c9c spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xded5ce63 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xe8f3d351 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xf044d9ac spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x41aed308 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x60ccacd2 dw_spi_xfer_done +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xc4968b7f dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xdb43f5fa dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xfd1e455e dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x07a61bdc ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0516bbe1 comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x08528dc0 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0860c75a comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x09dbcc82 comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0f7aa2a4 comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x15491a46 comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x30154d77 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x31f8350c comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x33fa356e comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3661eb4c comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3dc0a748 comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x48a744e0 comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x49e76ee7 comedi_error +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4c77dcbf comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x607e4d2b comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x67e18ba2 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x70e3fcfb comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x73c4ce0f comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x772a6cbb comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x788e4479 comedi_buf_memcpy_to +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7913919b comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x80797246 comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x822c2b88 comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9de82921 comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa7a0ffeb comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa9a31076 comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb449d95d comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb679cebc range_0_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbb52fc7f range_bipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbdbe75c6 range_unipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xcb42fea1 comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xcbea8846 comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xcdedde21 __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd76f6c65 comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd8cda6c2 comedi_buf_memcpy_from +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdbb41aa6 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe514d76a comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe9a8035a comedi_dev_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf0c94a5d comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf36a0c9b comedi_buf_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf3a2bbef comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf6826db7 comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf824a45c comedi_buf_get +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfe379df9 comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/8255 0x3c47a72c subdev_8255_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/8255 0xa5abbc0c subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/8255 0xbbeb3bb5 subdev_8255_init_irq +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x617d1c5a 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 0x7e67883a amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x8888adc9 amplc_dio200_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0xfb74715f amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_fc 0x5481d25f cfc_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_fc 0xa4d3ba9d cfc_write_array_to_buffer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_fc 0xfb0548b7 cfc_read_array_from_buffer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x4b46d460 das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x0021164b mite_setup +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x01a1675e mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x12753e03 mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x1936b4da mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x2a2d0fe3 mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5c5e4245 mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5ffad400 mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x616be881 mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x67ab5cf4 mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x6d718431 mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x98def60d mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xa955cb86 mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xb2a76380 mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xba50285e mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd18a6bea mite_unsetup +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd2cfda87 mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd680cb31 mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd6b5d9c9 mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xde4315f7 mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe4c4c730 mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xf6515b24 mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xf733e023 mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc 0xbedc9962 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x0b0ed858 ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x30aaad3c ni_tio_rinsn +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x51159aa3 ni_tio_winsn +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x6b2fb368 ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x71184f10 ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xbfe28a95 ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xd6395556 ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xdc17c160 ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x044f14aa ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x0d89dffa ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x32253501 ni_tio_acknowledge_and_confirm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xcf4f7de5 ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xe170b276 ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xf7b92fd1 ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x2640d015 comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x2a9a24d9 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x71f48fdf comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x9f0ba8ae comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xbd22384c comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xc1f4fe8b comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xe6068fdc comedi_close +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0x102ff0ee dwc2_hcd_remove +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0x2206b003 dwc2_handle_common_intr +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0x8bb0f7a1 dwc2_hcd_init +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0xb05a818c dwc2_set_all_params +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x1a1b5249 oslec_flush +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x2feda75b oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x3227a28e oslec_snapshot +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x7dc9dddd oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xb2c66001 oslec_create +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xc8b5a524 oslec_free +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xd370f679 oslec_update +EXPORT_SYMBOL_GPL drivers/staging/rts5139/rts5139 0xbd5a0e51 rts5139_usb_ids +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 0x1741776c spk_synth_is_alive_restart +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 0x4885c24b spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x56355aa9 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x6da27faa synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x7360b84e synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x7da26908 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8dbc3c77 spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9084e5c0 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xaed9b5ab 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 0xbf972d3d spk_var_store +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 0xd6094017 spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x06467c05 usbip_start_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x28b5e62f usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x2b460a1e usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x36617904 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x47d0f685 usbip_recv +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x4c0a5df9 usbip_event_add +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x54008644 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x635a18c9 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x7807db50 sockfd_to_socket +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x8dc63019 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xdf8dceef dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xe4ebc96b usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xf4199fc0 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0x3969e65c pciserial_init_ports +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL drivers/uio/uio 0x9fe05d1a uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xef55941e __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xf415c2a1 uio_event_notify +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x1c7edfd9 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x9cafbac3 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x62e4b850 ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xdee312ee ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x170e9bea imx_usbmisc_init +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x74750d38 imx_usbmisc_init_post +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1b4c025a usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x378cac88 usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x44ad772a usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4cb05bc0 usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4e06c76d usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4e5762e0 usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4ebe4404 usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x56a0a9b5 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6254407a usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7027a08e usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7263427b usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x894920e1 usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x89c16461 usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8bb8e626 usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8ce6774f usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8eddd2c2 usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x90c0c400 usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9568fa28 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa538e5ec usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xac3ed65b usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb642698d usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbaae998e usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xcb102322 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xeb287975 usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf76b7d74 usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf7e307e8 usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfd94221c usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0x20135816 gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0x8e27d6de gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0xcea0537a gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0xf1981607 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x1c8ddb36 usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x3a62f517 usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x55ad3e6d udc_attach_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x5e037b38 usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x73eb2614 usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x8890e432 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xca21611f usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xd04da28d usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xe06fd492 usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x07e15c17 fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x0a5230df fsg_common_set_nluns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x141fce2a fsg_common_remove_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x1ccb58f7 fsg_common_set_num_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x2d10b6a7 fsg_common_create_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x51707c29 fsg_common_run_thread +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x6acb4179 fsg_common_set_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x7e26d4a5 fsg_common_set_sysfs +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x99023bfc fsg_common_put +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x9a0221c7 fsg_common_free_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x9dc025a5 fsg_common_free_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xa46e6443 fsg_common_get +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xd3ae3b65 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xd468f882 fsg_common_set_ops +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xe4d1591e fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xf948ee14 fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x43705608 ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x81e48fdc ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x224b627e usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x73ea1d95 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x8c0f7c32 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xa88a0d16 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xafe9164d usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xbe4259af usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xc18781bb usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xea21f886 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xeda906b2 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0xcb7de0b3 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x064badec samsung_usbphy_parse_dt +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x15605ea1 samsung_usbphy_rate_to_clksel_4x12 +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x1b69d60c samsung_usbphy_cfg_sel +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x52615224 samsung_usbphy_set_isolation_4210 +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x848dafc4 samsung_usbphy_set_type +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0xa17c85db samsung_usbphy_rate_to_clksel_64xx +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0xd06a9817 samsung_usbphy_get_refclk_freq +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0xa0541700 usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x042a37d1 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x135dd47e usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1aaa78eb usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x24415485 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2755631e usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3695bde9 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x487dbd38 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4feec1c0 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x54ab582a usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5d8044ac usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6d81cd12 usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6d92fbe4 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x79c33fd4 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x94ce3586 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb84265ab usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xce05b9e8 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd017c24d usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd0bb51c6 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xdab4b440 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xde2d6b95 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xfeb22bf4 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x03d31bd0 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0ebcfb16 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1183f500 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x12471e72 usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x19edf8d1 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x33e254b1 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3449d575 usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4c698135 usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x54a4588e usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6d1af5ac usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x78801c01 usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7f1b8d5e usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb4f5a450 fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xbd0752a6 usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc4e67e2e usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd176d662 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd3fefe1d usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe1c828b1 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf6ace3fa usb_stor_access_xfer_buf +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 0x4526d5eb wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x542a09c2 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x57fa344b wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x931a65c8 wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xe25f3f13 __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf305132a rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0784dfa6 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x15edeaf0 __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x2ac54ae6 wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x44c1d80d wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x4ab2717b wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x59849294 wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x835a8b39 wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa09fa3fe wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa7304b11 wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xab799b6c wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xbf3d1692 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xd3b24024 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xd8489ef3 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xe6b2673e wusbhc_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 0x31bc462f i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x90fe48db i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xe5a360dd i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x0a91fbd9 umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x11250c89 __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x274beb64 umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x2f5cc7b4 umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x727bbb56 umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xb4aafc23 umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xe066939a umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xf04842fa umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0096ec90 uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x06d27b25 uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0d78016e __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0f7560d8 uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0fc02440 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1e08edf8 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1ef0eec5 uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1faaed1f uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2490fd74 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2adfe399 uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3795efd0 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5042a0e0 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5865aca7 uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7b3bc9de uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7ee6c6ba uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x816b9e92 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x874dea40 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x88888558 uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8e9e6901 uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x90ac7cbe uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x97d4f549 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9bd37665 uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9cbaa9b7 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9d382256 uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9df98807 uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa1f5b1e8 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa742d6b7 uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xac97316b uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xad705604 uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb05dde5a uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb37fc271 uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb965bf30 uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb98ba978 uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc70e67d2 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd0885e9a uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xde552b18 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xed185e06 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf7d6727d uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf814d0bd uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf933efd4 uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfa2a68fb uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/whci 0x35994eb7 whci_wait_for +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x09173ba2 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x093ec0b2 vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x12ab3e8f vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x13b002ca vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x14781de2 vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1e52f6f9 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2479f7a9 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x26fded06 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3442c13a vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x39d9cab3 vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x39ee0b6f vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3e5381dc vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4bdf6d51 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5635df4a vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5eebf5f0 vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x616bc00c vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x694db85a vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6f6b7e48 vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x87f805d3 vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8890a32a vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x964f1d58 vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa0b47279 vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xacd39293 vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xade133db vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc919f609 vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xda124729 vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe08b6594 vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xec57d179 vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xeeed6f7c vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xefbbd362 vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x12627441 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x76b0c21b auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x7dbbb902 auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x85067b14 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x8e8b19b3 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xa1e5b5b2 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xa473284b auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xa4bc9a87 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xbc2eb428 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xf630045d auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x0c7f0eab ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x36f0de22 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x63d0979e ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x970f24cc ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x9db11c77 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/fb_ddc 0x0b519409 fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0x8dc6d684 fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0x94959466 fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0x48a11bea sis_free_new +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0x85c22720 sis_malloc_new +EXPORT_SYMBOL_GPL drivers/w1/wire 0x22056c23 w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x6273d079 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x6e934b91 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7f0c3a8d w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x83d26cd3 w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x97d94403 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0xb290198b w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xe6a32684 w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0xe94207b0 w1_touch_block +EXPORT_SYMBOL_GPL drivers/xen/xen-privcmd 0x89642528 xen_privcmd_fops +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x215d38e8 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x4b2d6adb 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 0xd9306268 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 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x39be7178 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x5f8280b4 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x65582d83 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x6da0adc4 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x7bc6189f locks_start_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x7f37972f nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x84ae6c1d locks_in_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xbc43811a lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xd3824808 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x026f2676 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x03a3c959 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x03b77855 nfs_file_splice_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x05666a06 nfs_setlease +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x060fb1d3 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0ae81b68 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0d4d769c nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0db0c2f9 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0e8c8062 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0f7c269c nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x10524303 nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x15fff57c nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x17a71d6e nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1f8977b9 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x222f10e3 nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x233800dd nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x23a047e4 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2427cc70 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26b05ada nfs_put_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2d7e42dd nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x31b16008 nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x32536002 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3293f40e nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x36a8a27d nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x389be4b2 nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x394cb40b nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3b1de677 nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3c80bf98 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f17ee40 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f67126d nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f8a3b35 nfs_initiate_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3fca8888 nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x44c93a04 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x48eadc37 nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x49445707 nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x497bf924 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x49963c7c nfs_readdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x499ac1e4 nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x49ef21d9 nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cfb434a nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4f70e28d nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51dca929 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x523e0eb1 nfs_writehdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x53c5372d nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5639a920 nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x56732da2 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x58f1b6a1 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5d621bda register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5d7e9a34 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x610ee058 nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x61b2509e nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6802628e nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x686523da nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6c3e867a nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6fb829ec nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7183a45c nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7208f719 nfs_writedata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7317d026 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x73464f96 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x73a5e6a0 nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x74656efc nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x747c6ddf nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x77aae778 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x78d2f34c nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7b09e7af nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7b498f78 nfs_readhdr_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c9722ba nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x85128a82 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x859e5ef5 nfs_generic_pagein +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x865c896b nfs_pageio_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x877eb751 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x89b07d63 nfs_writehdr_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x89bc5a64 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8c4e055e nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8cf2d847 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8cf85bd0 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90626e43 nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9093219d nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91a484d0 nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91a70d04 nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x94ffc2dd nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x950a055d nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x962f975f nfs_initiate_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x96371e53 nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x976cb327 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9cf704ff nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9f8ce34b nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa13cf600 nfs_readhdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8d2d1ce nfs_callback_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa9604c28 nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa9cd69fc nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaef05ca1 nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xafbae5b8 nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb00908ec nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb1451ad5 nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb676dbee nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb68bcd15 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb7299eec nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb72d2290 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc094a78c nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc31ab29f nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc7706664 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc7b83f9a nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc839ec44 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc8b27893 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xca7fe3ea nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcdc3b7a2 nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd1153caf nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2b3594c get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd4f31715 nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd7154161 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd7425b54 nfs_pageio_add_request +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xda13bf45 nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdcba7346 nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe1202877 nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe41a859a nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe79487c2 nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe86dc9ee nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe8b729de nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xec4bf8e6 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xece9ab21 nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xed0f337d nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf04ee66d nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf05651fa nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf0a70a88 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf1d1c8e7 nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf6ff0913 nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf8d2f824 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb2c6166 nfs_generic_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7ee006 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb82d9be nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0182c61f pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x04b698c8 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x07f772c4 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0aa9e450 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x12ed79c1 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x23f3bf2c nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3239cf54 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3a343346 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x40536a5a __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x427e70a9 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x43d614cd pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x496dc517 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4f43a108 nfs4_proc_getdevicelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x54cdec27 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5ac0aef5 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x68bcf707 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x696c6888 nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6f82884a nfs4_insert_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x73566fdc nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7425bf64 pnfs_writehdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7544c075 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7ba5bdfd __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x822a18a6 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x838aca04 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8616d7ee pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa7103724 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xaf34147f pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb8263a0c nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbc9dbdcd pnfs_readhdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc2e32db7 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc4425a4c __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd4a7b769 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd9d067f7 nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe229ca5b pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe4ad96f6 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe60c5493 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe653b356 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xeb719dc8 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf5b4e502 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf8fa84c7 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfcca6ed9 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfe1dba1e nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x49e4ee72 nfsacl_encode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xbccd517e nfsacl_decode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1b6508bb 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 0x23480642 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 0x6979beff o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x755a6e23 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x81a17396 mlog_and_bits +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 0xd287d36c o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd581568f o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xe224f0e2 o2hb_setup_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 0x11d478ef dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x131e6685 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x1beb1a70 dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x61c66def 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 0x7dfd6dec dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xb8232941 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x025e2d69 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0562c415 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x16b2e575 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x5469ce31 ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x7083dbd5 ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x89502fe7 ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xb4bd060c ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xd16f9e7a ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xdc823ea4 ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe2bd47db ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe417d940 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xed5df088 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xf44bbf61 ocfs2_plock +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 0x7152f83d notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xfb289942 notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x1803a6ed raid6_2data_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xe4b051cf raid6_datap_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xfdfcb8cb 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/802/garp 0x35d9627d garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x3c80b68e garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0x543f08b9 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x9d54e78c garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0xa193d6cc garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0xf14d926e garp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x01f3ec6c mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x388b0046 mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0xa1840a33 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0xc80e0332 mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0xd9f1dd8c mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0xf7e02922 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/stp 0xaafb42af stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0xfad8931c stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0x11422ca0 p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0x74e09065 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 0x7797b09b 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 0x5014b6b4 bt_debugfs +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0d69bb4d dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x121ed847 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1abb5239 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x223b9d53 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x38ecb904 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3a8cad73 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x408745f7 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x40d2ec63 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0x498f59a3 dccp_insert_option_elapsed_time +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4abdcba3 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4bcba92e dccp_sync_mss +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 0x55d23dc4 compat_dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6191ef0b dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x638aecd5 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x64e8ebe0 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0x70415b78 compat_dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7470690f dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x74d0ffae dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x893cddab dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8ac7ac7a dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8d5d8df8 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8e51f795 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa1c25538 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa30f5cf2 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa8088d1c dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb8b2758a dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbbc9fc55 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc93ed65f dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdbaf201f dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe1862cf9 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe5c070c8 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe68f5317 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0xecc10908 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf1611381 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf3017e21 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf833ee1c dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfdb8a12c dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfefb3b8e dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x59ccc6df dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x5c97b6b4 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x69714b48 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xbf6c575c dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xd98da751 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xf2033729 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x0fb90874 register_switch_driver +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x9f79ff16 unregister_switch_driver +EXPORT_SYMBOL_GPL net/ipv4/gre 0x349f5b4f gre_cisco_unregister +EXPORT_SYMBOL_GPL net/ipv4/gre 0x53c75887 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x90aeb7b8 gre_cisco_register +EXPORT_SYMBOL_GPL net/ipv4/gre 0xcc3a51a4 gre_build_header +EXPORT_SYMBOL_GPL net/ipv4/gre 0xebafd531 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x350901e9 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x55a7d1f9 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x62283f6b inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x885820f8 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xa238201d inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xd5de157c inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x06cee68b ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x24dc4894 ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x5bc07986 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x5d79ad38 ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x63bdab27 ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x64a7ca56 ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x802fadd4 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x9dce708d ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xa019e7ec ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xa63ed7b7 ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xa81a781f ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xfe0f8b33 ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xff9cf611 ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xfff4944b ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x25f74e2a arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0xeb2ab65e ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0x6d40a921 need_ipv4_conntrack +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x01eb4fb6 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x0535b0e3 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xa69fb990 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xafdcaa84 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xcfeebd7c tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xe7578fcd tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/xfrm4_mode_tunnel 0x785e8c0e xfrm4_mode_tunnel_input_register +EXPORT_SYMBOL_GPL net/ipv4/xfrm4_mode_tunnel 0x865270aa xfrm4_mode_tunnel_input_deregister +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x00bf7c97 ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x70652d9d ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xa8aa2c7a ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xde443f9f ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xfa0910d6 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0xbc4ede43 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 0x2feb7824 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/xfrm6_mode_tunnel 0x3aee8bf6 xfrm6_mode_tunnel_input_register +EXPORT_SYMBOL_GPL net/ipv6/xfrm6_mode_tunnel 0xc453cc0c xfrm6_mode_tunnel_input_deregister +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x08882475 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x2d12bcd3 l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6ddfcb7d l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x7fa70704 l2tp_tunnel_sock_put +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x8039b843 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x8945f073 __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x8d5bb287 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x994e604d l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xab16191e l2tp_tunnel_sock_lookup +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xb5ea683e l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xb7c0ae34 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xcc80c20b l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd452de89 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd5aaa840 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe38ce3c2 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xfa1f0a1f l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xfc96c172 l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0xffe5bed1 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x13a045f7 ieee80211_iterate_active_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x14cfbaf6 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x27845d00 ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3663a36d ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x47c57cac ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x4a1b49e6 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x4bf42798 ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5d38f601 ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x74dbc659 ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb804c464 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xbdac21ae ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xcac78c45 ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xdb8c13b0 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xe914808f ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf5f37540 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x171d45c6 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x2ee7073e ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x39150abc ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x3f9b52ae ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x47e9d0be ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x4deaf7bd ip_set_elem_len +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 0x991bc341 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 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 0xa84c7913 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc3039b15 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc5b21bb8 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd9bc6811 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe325d991 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe507046f ip_set_nfnl_get +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xec444b15 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xef13ebbe ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xefffc985 ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf3b4d4ae ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf834676b ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x528ad705 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x690592ba ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x6a45909d ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x78936c34 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x003279f8 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0046b33b nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x011cb5b8 nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x01f84db5 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x02c30062 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x048d7355 nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0af0a245 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0d07d700 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x10c58ddc nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x131a2ffa nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1e85671f nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x24f77088 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x26273896 nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x27a5ab0d nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x27df9ac7 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x29e7f0be __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2abf4031 nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x34cd87ea nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37b5a673 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3b9a2abf nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3c3b8891 nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f69bf30 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x43ce0bd8 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x45e3da0d nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x466518db nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x48192c38 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4b62a95f nf_conntrack_tmpl_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4cbfaba8 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x526abd25 nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5303cf54 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x54a49023 nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x578eed30 nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x57e43827 nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5a1e364d nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5fb12eaf __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x60e8183c nf_conntrack_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x65466b0a nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6692f2a1 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6c2f9c8d nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x70b196e6 nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x758c25aa 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 0x7bed35fa nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7e89c92a nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x84124308 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x84b29cef nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8d11349e nf_ct_helper_expectfn_find_by_name +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 0x910d8a91 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9a1ad073 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9df213c6 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9ece712d nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa05d10d2 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa0b5915c nf_ct_l3proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa47e8097 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa7d0cee0 nf_conntrack_unregister_notifier +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 0xae7548ca nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaecf4550 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb0b9ebcd nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb53c126f nf_conntrack_flush_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb696afaf seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc0137472 nf_nat_seq_adjust_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc0eaa73e __nf_conntrack_find +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 0xc4cc3d9f nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc9b48350 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcebfa585 nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xced3ed1f nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcf097fe6 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd1a843c4 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd4b2753c nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd71ad8d2 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd75964c5 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xde8ea7bd nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe11b73eb nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe187eb9c nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe24961a8 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe2a76a49 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe7817dc5 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe8a1e3e2 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf15e98f9 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf671d716 nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf8c2425f nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x48c3142c nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x1dd6cd46 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x858ba3a5 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x06d659c2 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x3d9670c1 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x40435386 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x4e481b2e nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x5c39e817 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x6b5d298c set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x8a14cb60 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xb1f506c2 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xc24ebbdd set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xfd8b2266 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x686f1b9f nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x11159ee4 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x7f3c5b7a nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x82a4c2c0 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x88aeebe5 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x8dca7cca nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xb45f508a nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x22f269c0 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x29fddcea ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x4f8c33b7 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x736345b0 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x7b1bd565 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x949a716f ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xadaf4165 nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0xbab92d1d nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0xbdbd4f98 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0b0b19dc nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0d9bae4b nf_nat_l4proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x131f636c nf_nat_l4proto_in_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x2d1d2efe nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x568984c4 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x75147fd0 nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x97f5eccc nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xbcd93330 nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xdc668788 nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xdf95339b __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x11a006b5 synproxy_check_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x8841d39b synproxy_build_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x90298227 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xa175d61c synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xa5696399 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 0x0fda3c99 nft_validate_output_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x19382f71 nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x231b653f nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3d49dab7 nft_validate_input_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x43303fa5 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x550a6f94 nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x733ad944 nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x858918f8 nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x9aeb139d nft_do_chain_pktinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xadc03559 nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe69f51e7 nft_validate_data_load +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe82db20a nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xeb2ccb2c nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf5598f2d nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf8ccc469 nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x1188a21e nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x1534b030 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x6531b856 nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x667dab17 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xa7969510 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xa7dba27c nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xfbff3964 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x8dc3c5a4 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x09913743 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x0ff43839 xt_compat_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x161d1417 xt_compat_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1e6c2fd2 xt_compat_target_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x24c8e482 xt_copy_counters_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x290f6851 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x443cf95b xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x470e4c7b xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x47a1fb3f xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x4feb8745 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x596f8213 xt_compat_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5aa50bd2 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5f82f1f7 xt_compat_flush_offsets +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x61b13d52 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x690a5021 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x691a6d69 xt_compat_calc_jump +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7204f21e xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x75fa37eb xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x88361005 xt_compat_match_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa09c745f xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xb48a9573 xt_compat_target_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xca851c1d xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xcee77ebc xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe0b4971b xt_compat_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xec24fd82 xt_compat_add_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf2d971ec xt_compat_match_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 0x16f5bd37 nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x94528369 nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xb13d71d8 nci_spi_read +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x0571f073 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x099e3769 rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x250549a2 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x51b6bf48 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x52ecbffb rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x56b60bf2 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x68e4f2e2 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x7a9eff96 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x7bc62829 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x83f3e753 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x85b42c48 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x932832a6 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x99b1c91b rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xb0079c09 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc3015ec3 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0xd17849f3 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0xdf3ad10a rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xeab73de6 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xebdc88e4 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0xebdf4da5 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0xedb81de6 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0xf1d782aa rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0xf4f023ff rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0xf556507f rds_inc_init +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x14227ad4 rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xc3b1f07f rxrpc_register_security +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00c52ef5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8f014246 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 0xdfbbc12f gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xebbd4018 svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00050e8f xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0036dbfa rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x008fcde3 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00ff76cc rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x014fc716 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0557eff7 rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05e807a9 xdr_encode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x06523fb2 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065994f1 xdr_encode_opaque_fixed +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x06d5eec0 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x086c3034 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b5c3aaa rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0bd9418f rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x114195f5 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x12f419c6 rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x13b27082 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x146a6590 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x14743f05 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x14944825 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1516e16c svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x162c9a6a write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1630428e svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x177b16d6 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x197125fd rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1a80eddf rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1bee3782 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1c14fd7a rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d655b64 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d6a5817 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f0f1dfe xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f2a9970 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x225e0d27 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x23687bd8 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x244a7499 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x266c7fc5 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x277c3fa0 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x27da5409 rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x27e149b9 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x29e1717c __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2ac60a21 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2bfa3301 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2dac54d9 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2ef4c4b9 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x312c98ef rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x355c7e94 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x35ca8a8c xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3776d540 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x391b96ea xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x39341938 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3a88d00f rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3ab993a5 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b1ccb0a rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3cfb5bb2 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3de3d9e4 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f3f73ec svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f7be564 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x40027361 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x411266da svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x43ce9b9f rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x45186a9e xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4695084f xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4828d223 xs_swapper +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x49e15b6b read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4aa40908 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d0f89d7 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d3d7c07 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4ff0f1f8 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x500dda43 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x508d3f8f rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x517d9197 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x534d1629 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x593835d3 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x59c54274 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5d719ae2 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60f1650a svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x61301e3b rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6513c46d xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x67031dec svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x675cc993 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6aa31983 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6cd18a96 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6fcbf7a8 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7094772e cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7106dd9d xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x712c1d4d svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71ca5416 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x724e4be1 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7398a68a svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x73d60ec5 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76da4fa7 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x770a7ac3 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7747d9e7 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77c8531b xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77e71264 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x78e24fbb rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a08578f csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7b695e63 rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c58f90b rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f8820a2 rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8269740c svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83535cd4 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x84653d36 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x854160e2 rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x880b1c15 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x88d8f850 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x88fd1802 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a53cfe1 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8b3419f5 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8cd869e2 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d2ab9a1 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e0a0f29 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x90a9d01c svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x92e846ca svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9351b967 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x971ba767 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x977080fa rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x97e7086a rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c737044 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d5efc17 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa009b625 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa2023575 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa5cc3627 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa70acda2 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa73e6f63 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa7d69c12 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaec3519d rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0b910ae xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb304b5b6 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb39af20e rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb507fc83 rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb5de57b1 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb614d0c3 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb7193e59 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb935fab1 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xba059d6b svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xba37106c rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xba61e6d3 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbc4e44df rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbc827373 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbcd5677c svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe1f1e3f svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbef02d7f cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbef665f7 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc08fa754 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc19f48de svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc2a2e902 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc5a4c017 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc5f18c6c xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc634d57f xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc76f90ef xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xca53b59f xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xca756d31 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xca7c6f45 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcaf2f9ce rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcd186c85 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf4908ae xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd2c08200 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd3c3ad6b cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd483883c xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd4fce000 svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd5427e85 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd5774ad7 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd6d114da xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xde6a6d27 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdf1d4019 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe0740d82 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe08519d2 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe24c08c7 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe2b31fc9 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe3f44507 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe402f367 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe4690181 gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe54dac85 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5fc4b5d sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe83a788e svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe877489f auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xebb165e5 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee087973 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef0a9333 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf0422624 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf8fc14ab rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa06d513 rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa30a825 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb156a2f cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb353cf8 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfcd3109c rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfdb84d0a rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe060da8 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe730578 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x01eefd72 vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0b424f34 vsock_stream_has_data +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 0x50bf0b0c vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x59d943c8 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x68f7cd43 __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 0x970b77bc vsock_pending_work +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x9b2dff92 vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x9f04b0c4 vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xa263d416 vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbaf8551e vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd10ac426 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe0b0521a vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xec5b7f84 vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf1ebc496 vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf5e5d615 __vsock_create +EXPORT_SYMBOL_GPL net/wimax/wimax 0x1549be18 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0x257f0308 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x30521a78 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x406d2af3 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x42c58fac wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x46927256 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x4aaab20b wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x4dfcfc47 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x4ffc6ae8 wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x79f3354c wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0xd91a013b wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0xf26e7147 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0xfa387200 wimax_dev_init +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x1c4358e4 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x21840534 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x40a433e3 cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x520272dd cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x71140d18 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x7d01b21e cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x84263d20 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x8d7daa4d cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xa91158e4 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb4387ca5 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xef445c84 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00778770 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x056bb269 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0a575945 xfrm_count_pfkey_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0b9e5852 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x74e1a843 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7c30b8c7 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x92dbc6c1 xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xbc8b0f41 xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xce7a55c1 xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xe122af95 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x327c20e6 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x646c90d1 ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x82d1f027 ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x9521fd0b ipcomp_input +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x00000000 compat_alloc_user_space +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x00000000 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sigset_from_compat +EXPORT_SYMBOL_GPL vmlinux 0x00000000 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x00082604 usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x004a2d8a skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x005c75ac pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x006461c4 nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0x006bc072 hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00744f1e usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x008173f8 blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x009f9226 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x00b0e0b2 regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x00c4dc87 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x00cc214f bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x00ec5dd5 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x011fadc3 hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x0144dcfe con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x015a1663 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x016a7156 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x0176402b page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x018acb18 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x01c01acf debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x01ca5ec3 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x01ce37b9 call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x01d35299 devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x01da9689 percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x01e93ee2 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x02032082 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0x021ed3bf kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x0231b73e da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x0237bad1 kvm_resched +EXPORT_SYMBOL_GPL vmlinux 0x0242f756 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x02584e3c ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x02690700 system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0x0278156c tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x027dfa3c find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x028862d0 phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0x02b1c148 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x02bc0c11 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x02f17689 dev_attr_unload_heads +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 0x035e5bc6 xen_swiotlb_sync_single_for_device +EXPORT_SYMBOL_GPL vmlinux 0x03a5c468 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x03bc923a wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x03bf1d5e gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x03c274e9 efivar_entry_set +EXPORT_SYMBOL_GPL vmlinux 0x03ca9529 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x03cde0fa ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03e85a06 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x04155089 ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x0433ffdd task_current_syscall +EXPORT_SYMBOL_GPL vmlinux 0x04486e88 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x045b452f of_clk_get_parent_count +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x047ccaa1 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x04c3f2c1 gnttab_empty_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x04c44e63 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04cd2529 phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0x04df8fbc lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0x053494cb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x055a5d38 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05a4ed5d invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x05c0a571 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x05ef1d10 virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x0600b366 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x0613b90a efivars_kobject +EXPORT_SYMBOL_GPL vmlinux 0x062fc169 xen_hvm_resume_frames +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x0667085a vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x06683ae8 percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0x066d1fa7 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x0674edfa security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x0686e2d5 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0x069a8578 ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x06bec319 fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x06dde51e regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0x06ded7e2 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x06ee8ca0 tpm_write +EXPORT_SYMBOL_GPL vmlinux 0x07168029 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x071ec896 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x072c75ac scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x072fbdbe user_match +EXPORT_SYMBOL_GPL vmlinux 0x073e866e add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x075e93c5 cgroup_taskset_next +EXPORT_SYMBOL_GPL vmlinux 0x078c0bc2 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x07a239e6 user_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07bffe2c regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x07f300c3 smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x081a16b3 platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x082281d1 alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x0829ab29 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x082a25dd dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x082b4c0e inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x085879e7 perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0x0884f13c posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x088bfa7e cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x089318a1 bdi_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x089ec89d debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x08bc0870 compat_put_timespec +EXPORT_SYMBOL_GPL vmlinux 0x08df6316 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x08e05d79 cred_to_ucred +EXPORT_SYMBOL_GPL vmlinux 0x08e52790 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x08edb1d8 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x09274774 ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x0933ddaa fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x0942f5c4 xenbus_dev_error +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x09469482 kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x09702991 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x09b04435 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x09e269c3 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x09f73e8e ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x0a168afd __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0x0a5f3091 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0a9fd3c5 gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x0aed9a96 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b5f4ce0 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x0b67df1b perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x0b6bfeae usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x0bae62b1 ktime_get_monotonic_offset +EXPORT_SYMBOL_GPL vmlinux 0x0bb667b4 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x0be81e88 clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c3ebf40 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x0c5c4419 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x0c68b016 device_move +EXPORT_SYMBOL_GPL vmlinux 0x0c80e3fe efivar_init +EXPORT_SYMBOL_GPL vmlinux 0x0c9f09c5 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cc913a5 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x0cce0227 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x0cde1678 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0x0cf95b6b tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x0d1006f9 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x0d1d22dd crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x0d6289d5 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x0dd86911 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0de02b7d list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x0e21cfc4 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x0e3895d4 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0e69115d usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x0eb1c564 xenbus_alloc_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x0eb686da ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x0eb82fa2 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0x0ed9302e percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0x0f4ff098 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x0f70c844 tpm_show_temp_deactivated +EXPORT_SYMBOL_GPL vmlinux 0x0f721c96 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f91f540 blkdev_aio_write +EXPORT_SYMBOL_GPL vmlinux 0x0fb06c3c thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0x0fe112dc of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x0fe2d570 xenbus_directory +EXPORT_SYMBOL_GPL vmlinux 0x0fe84401 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x101547b3 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0x10192e07 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x102f1842 regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x1094a400 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x10edfd20 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x1103677f posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0x11072bf4 regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0x114f11c5 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x1186a456 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x1190018d xen_dbgp_reset_prep +EXPORT_SYMBOL_GPL vmlinux 0x1190f4cd sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x119afd32 dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x11a224f8 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x11f494bc uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x1202b67f regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x121cd964 of_pci_range_parser_one +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x121ed3f3 add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0x12242553 sysfs_get +EXPORT_SYMBOL_GPL vmlinux 0x1235950f alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x12477bf1 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x1252f519 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x12658f5a __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x127c1b82 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x12df55cd rtc_set_mmss +EXPORT_SYMBOL_GPL vmlinux 0x12e209a1 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x13315189 xen_swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x138aff76 gnttab_init +EXPORT_SYMBOL_GPL vmlinux 0x13921363 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13ce87e8 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0x13d3022e mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0x13e0bd51 virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0x13fa5e07 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x1416c8d6 put_compat_timeval +EXPORT_SYMBOL_GPL vmlinux 0x14198825 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x141f4541 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x142a8be4 of_clk_get_parent_name +EXPORT_SYMBOL_GPL vmlinux 0x142df7fe xenbus_free_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x14c6e47a ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x14f875ce devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x15026a32 snmp_mib_init +EXPORT_SYMBOL_GPL vmlinux 0x152caf10 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x153a8841 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x154c0890 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x1551e02f dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x1559803c platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x155a9c53 regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x15da0e72 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x15ea7ced ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x160fd745 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x16480feb crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x1658797e ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x165e3c7f dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x16740312 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x16749916 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x168a95ba sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x169157da xenbus_watch_pathfmt +EXPORT_SYMBOL_GPL vmlinux 0x16fa8421 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x17080bd3 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x171bc90a ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x172d99b8 xenbus_dev_cancel +EXPORT_SYMBOL_GPL vmlinux 0x1753a32f hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x1763fc98 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0x17dfced5 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x17ee9c80 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x1807c121 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0x1809afd2 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x18592e39 regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x18831d47 devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x189c5495 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x18d5fa78 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x18d79a3e crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x18f83fab gnttab_grant_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x195b76cb irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x196408e4 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x198e8927 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19b384a5 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19b75b96 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x19beb68f dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x19c6e0e4 gpio_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x1a082d69 max77693_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x1a323362 __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x1a4a3837 devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0x1a6f2d99 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x1a7ff8e2 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x1a823c79 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0x1ab2f7a0 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x1ac09037 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1ad83009 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x1ae8847d irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x1ae9e5ad inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x1afffcb6 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x1b27f8d6 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x1b37e63d __clk_register +EXPORT_SYMBOL_GPL vmlinux 0x1b5b45de regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x1b8a4212 rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0x1b93aeba ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x1bcf63aa __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0x1bd0035b usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x1bdb77fd ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0x1be7903e spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1c01d6c1 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x1c4d0a60 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c60d159 swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c8d9345 register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x1cabc485 da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x1cb2126a __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x1cc2a326 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x1cc9faa2 blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x1cce0db7 alarm_init +EXPORT_SYMBOL_GPL vmlinux 0x1cdb2147 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x1cdda1ba platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x1ce498ad tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x1ce4e2eb arch_pick_mmap_layout +EXPORT_SYMBOL_GPL vmlinux 0x1cfe78d1 kvm_release_pfn_dirty +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 0x1d9fd8cb ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x1dc87b43 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x1ddc526b regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0x1dde53fc tpm_register_hardware +EXPORT_SYMBOL_GPL vmlinux 0x1de054d5 of_clk_del_provider +EXPORT_SYMBOL_GPL vmlinux 0x1df0501d pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x1e18ef27 tpm_dev_vendor_release +EXPORT_SYMBOL_GPL vmlinux 0x1e3a88fb trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x1e4921f9 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e83fee6 HYPERVISOR_physdev_op +EXPORT_SYMBOL_GPL vmlinux 0x1e872da4 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x1e8fac8e wireless_nlevent_flush +EXPORT_SYMBOL_GPL vmlinux 0x1ea907c4 kvm_release_page_clean +EXPORT_SYMBOL_GPL vmlinux 0x1eb1594f gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x1eb68189 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ee7a295 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x1ef060f5 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x1ef1e359 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x1f0208ab __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x1f24a957 serial8250_rx_dma +EXPORT_SYMBOL_GPL vmlinux 0x1f2bbfe8 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1f969f28 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x1fcece42 inet_twdr_twcal_tick +EXPORT_SYMBOL_GPL vmlinux 0x1fee4beb serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x1ff2bf6a __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x2001dc03 dma_buf_export_named +EXPORT_SYMBOL_GPL vmlinux 0x20243019 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x20bc3470 orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x20bf2ce4 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL vmlinux 0x20fae710 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x211622bd sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x213c18ad vchan_tx_submit +EXPORT_SYMBOL_GPL vmlinux 0x21acaaed regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x21b88199 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x21c61bda debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x21f452ba kvm_flush_remote_tlbs +EXPORT_SYMBOL_GPL vmlinux 0x22007c9c regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x224527bd crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x22529596 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x22827289 split_page +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x22c50afd inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x22edd522 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x22f1b920 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x2309b95b ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x232893c1 xenbus_dev_changed +EXPORT_SYMBOL_GPL vmlinux 0x23426b0c tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x23608823 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x2363bd03 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x236537a0 dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x23703e36 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x23854bf9 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x2388aeb6 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x23b797db btree_last +EXPORT_SYMBOL_GPL vmlinux 0x23c17187 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x23d7d2f8 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0x24011e14 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x24074096 da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x2418eccd sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0x242752f0 gnttab_unmap_refs +EXPORT_SYMBOL_GPL vmlinux 0x2431b9df vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0x2447533c ktime_get_real +EXPORT_SYMBOL_GPL vmlinux 0x2447fb0c xen_swiotlb_map_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0x245394b6 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24b7ffdb usb_bulk_msg +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 0x2501bc75 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0x2535b786 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x2545c170 unregister_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x254c1fcf gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL vmlinux 0x254f70d4 da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x2575f13a tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x25946787 devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x259b4cc1 list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0x25c1f517 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x25c21a5d crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x25eff2d9 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x25f5d621 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x2605b02b adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x26672ccf devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x267302ae regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26f653c3 init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL vmlinux 0x27b02e8a ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x27bfe225 PageHeadHuge +EXPORT_SYMBOL_GPL vmlinux 0x27c0c4be eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27ce74b8 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x27d422f6 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x27d96ccb tpm_show_durations +EXPORT_SYMBOL_GPL vmlinux 0x27ded988 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x282407d7 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x284cd413 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x287a04c8 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x287d0294 of_console_check +EXPORT_SYMBOL_GPL vmlinux 0x28a903c8 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0x28c89fbf perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x290942ac crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x290f9e72 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x2947f663 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x29672919 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x297a7b79 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x297c105c transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0x29d3e796 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x2a2f19f7 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x2a5099cd blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x2a547b8c phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2a68a03b inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x2a694e1c tracepoint_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0x2a9781d2 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x2ac1440c rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x2ad1ece4 zs_get_total_size_bytes +EXPORT_SYMBOL_GPL vmlinux 0x2af0a296 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x2b24a030 kick_process +EXPORT_SYMBOL_GPL vmlinux 0x2b373cf5 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x2b37a83c srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x2b37f2cc debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x2b449d8d cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x2b47d4ee shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x2b4a42c9 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x2b6d1877 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x2b7a6de8 syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x2b806cea kvm_clear_guest +EXPORT_SYMBOL_GPL vmlinux 0x2b8e4379 ref_module +EXPORT_SYMBOL_GPL vmlinux 0x2bfaef4e clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x2c13e71d gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c42d2c4 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x2c5b2b3d tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x2c7d9c64 xen_store_interface +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c96798f kobj_completion_release +EXPORT_SYMBOL_GPL vmlinux 0x2c9740ef tcp_reno_min_cwnd +EXPORT_SYMBOL_GPL vmlinux 0x2ca55fc2 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x2caa28b4 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2d021332 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x2d0564fb device_rename +EXPORT_SYMBOL_GPL vmlinux 0x2d102622 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x2d17a0e1 cgroup_taskset_size +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d470ef9 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x2d7531ff mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x2d84e8d5 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x2d9b6c96 xenbus_frontend_closed +EXPORT_SYMBOL_GPL vmlinux 0x2db4f309 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x2dba276a __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0x2ddc03d3 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x2de006da pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x2de1d389 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0x2e1da9fb probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e45e488 rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x2e5edac4 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x2e9670c0 pl320_ipc_transmit +EXPORT_SYMBOL_GPL vmlinux 0x2ebab9a2 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ec56a22 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x2f0686f7 pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f2c503b tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x3006b6f5 of_pci_get_devfn +EXPORT_SYMBOL_GPL vmlinux 0x300a5bc7 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x3019c2e5 devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x304a09ab alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x304b3610 thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x30504205 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x305b3207 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x308937f1 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x30896b69 percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0x308b733a getboottime +EXPORT_SYMBOL_GPL vmlinux 0x309c476c crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x30ad4523 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x3114a754 mmc_send_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x3118f134 phy_put +EXPORT_SYMBOL_GPL vmlinux 0x311d4579 pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x312787e6 gfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0x313be0f8 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x31859993 of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0x31a6318b spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31f5b8c2 __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x32008988 phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x321bdbb1 compat_get_timeval +EXPORT_SYMBOL_GPL vmlinux 0x323a2db3 palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0x3256ca45 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x325e677c gnttab_grant_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x326ecfdc pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x32736921 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x3276ae86 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x327bdb63 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x328c7930 usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x328ec655 devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x329bbbde timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0x32af4146 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x32b31a8c ktime_get_boottime +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32fd447a monotonic_to_bootbased +EXPORT_SYMBOL_GPL vmlinux 0x3310bf11 pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x3316e436 __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x332b047c ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x334ac0b7 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x3375acb6 __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x33a94a45 of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x33b4a5a5 sec_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x33d5696c crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x33dda770 dm_set_device_limits +EXPORT_SYMBOL_GPL vmlinux 0x33f0a903 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x33f7ab15 get_compat_timespec +EXPORT_SYMBOL_GPL vmlinux 0x34079933 __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0x34254556 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x34347857 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x344ba2bf blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x34a1cea1 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x34c2183e sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x34fd24b6 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0x35099ed5 device_create +EXPORT_SYMBOL_GPL vmlinux 0x352650ee gnttab_batch_map +EXPORT_SYMBOL_GPL vmlinux 0x3535cb4f crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x355ee8d8 ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3570114a pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x3579a9d3 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0x359f8185 smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x35b78b32 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x35c8f33f serial8250_tx_dma +EXPORT_SYMBOL_GPL vmlinux 0x35df0e05 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x35e89448 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x35ed1d16 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x35f10f43 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x35f165f1 devm_reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x3618843e pci_pri_status +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x365db7e6 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x3667a964 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x368772c3 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x36950eb3 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36ed44fe evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0x36f63718 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0x3707c488 sdhci_pci_o2_probe_slot +EXPORT_SYMBOL_GPL vmlinux 0x370ebff6 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x37450692 tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x37766ca4 efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0x378bccb1 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x37954307 scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x37c57460 virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0x37cc54e3 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x3820b47f __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x38291a21 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x382e7f97 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0x384d7d80 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x38620e38 gnttab_grant_foreign_access_trans_ref +EXPORT_SYMBOL_GPL vmlinux 0x386af38d regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x38784aa1 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x387e5e6f usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x38d578ef key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x38dd29ba dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x38fbbb75 tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0x39122942 blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x3945d7a8 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x39665302 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x396bb570 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x399f3084 kvm_clear_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x39b9bda9 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x39f778ab serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a30491a da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x3a316e90 tty_prepare_flip_string_flags +EXPORT_SYMBOL_GPL vmlinux 0x3a4f2f18 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3ab7122e anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x3ac9868c rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x3ad0e201 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x3ad82802 of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0x3af061b2 regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0x3afc7a49 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x3b9029ab kvm_is_visible_gfn +EXPORT_SYMBOL_GPL vmlinux 0x3bc6db64 __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x3bcd1299 max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x3bd91c49 swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x3bf4e676 thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0x3c0be780 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3c167bbc of_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x3c3ffa92 pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x3c4fed62 devres_get +EXPORT_SYMBOL_GPL vmlinux 0x3c5c6086 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x3c6b966f sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x3c8424a0 clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3c8d28cc of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3c9d9a7f regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x3cb3624c tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x3cbac3e8 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x3ccffec8 of_irq_parse_one +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3d01d579 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x3d23aa78 netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x3d25dc8c ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x3d3b40ee bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x3d3be6cf amba_device_add +EXPORT_SYMBOL_GPL vmlinux 0x3d3e4c37 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x3d7ea99a gnttab_grant_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x3d846b85 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x3dae97f6 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x3db0999b get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x3db1c6b2 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x3db4276a regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3dc526a9 arizona_of_match +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3e2fa31f wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3e3b6d3d watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x3e54887f regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3e5c17b1 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e77357d of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x3e8145b0 virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x3e971b8d regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x3ebe6e73 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x3ef9b9c9 ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f2e4374 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x3f6b4071 regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x3f6f8719 unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x3f84d4c9 gnttab_release_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x3f87d46d nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x3f8d33e4 blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x3fcab485 ping_err +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x407aae07 kvm_get_kvm +EXPORT_SYMBOL_GPL vmlinux 0x40811c34 ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x40912ce4 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x4097d6de relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x40add78e rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40b30214 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x40cad1ed regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0x40cdd66b usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x40f22969 of_pci_find_msi_chip_by_node +EXPORT_SYMBOL_GPL vmlinux 0x40f4e4b3 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x41191dc6 gfn_to_pfn_async +EXPORT_SYMBOL_GPL vmlinux 0x412dcaa2 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x41647e0f bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x41d81c5d of_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x41f26ef2 tracepoint_iter_start +EXPORT_SYMBOL_GPL vmlinux 0x4213a51a efivar_entry_set_safe +EXPORT_SYMBOL_GPL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x422157ca ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x422bed5b xenbus_dev_is_online +EXPORT_SYMBOL_GPL vmlinux 0x42496680 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x424adcb1 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x4280c1e1 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x4289ebcb pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x42ad8832 __kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0x42b27685 crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x42bf0cd9 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x42cba0b0 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x43029846 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x430e5257 of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0x431e1907 of_property_read_string_helper +EXPORT_SYMBOL_GPL vmlinux 0x4320abe0 dev_get_gen_pool +EXPORT_SYMBOL_GPL vmlinux 0x4345bb8b get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0x43666c30 xenbus_register_frontend +EXPORT_SYMBOL_GPL vmlinux 0x436c52bc ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x43882499 powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x438a7d48 virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x439fbe40 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43a8affe ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x43b466b0 gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL vmlinux 0x43b5c761 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x442f23df inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x44403d4e pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x4493f200 _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0x449bb450 cgroup_unload_subsys +EXPORT_SYMBOL_GPL vmlinux 0x44a60acf devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x44a793ab HYPERVISOR_grant_table_op +EXPORT_SYMBOL_GPL vmlinux 0x44cd78d0 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x44e892fe usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x4501e914 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x450fb522 kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x454c15ae __smp_call_function_single +EXPORT_SYMBOL_GPL vmlinux 0x45573c92 ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0x4571ab51 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x4573b089 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x4576337f atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x457b77ca of_fixed_factor_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0x459e56df pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x45afd0eb blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45caa194 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x45e917ba spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x46020021 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x460f7531 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x461a2e5d clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0x462251c9 gfn_to_hva +EXPORT_SYMBOL_GPL vmlinux 0x462aa82a transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x46ddbe27 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x46f6b61e pci_pri_enabled +EXPORT_SYMBOL_GPL vmlinux 0x46fc246a __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x470fa426 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x4712d1ba regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0x4714e7b0 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x471daf86 clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0x471e465c spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x47238c9e usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0x472539dc fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x474c7410 crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x478335eb crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x47aa7174 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x47cac6ce crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0x47cd104e regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x47de5c3e da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x47fd1761 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0x47fdb338 css_next_descendant_post +EXPORT_SYMBOL_GPL vmlinux 0x483e0d1b subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL vmlinux 0x48b403ea alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0x48c5353a tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x48e12783 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x48f70070 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x48f9cdb8 devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0x4919b77b fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x498d293a trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x49a209a7 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x49a2db19 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x49e3cbe3 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x4a324a3e pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x4a90160e bprintf +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4ac2b790 nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x4aec8ce2 xen_swiotlb_sync_single_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4affb621 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0x4affd08b put_compat_timespec +EXPORT_SYMBOL_GPL vmlinux 0x4b58ac6b adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4b982978 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x4bc62a81 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x4bd0232f usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x4c16a0e4 key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0x4c180e0b ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0x4c2e1f24 clk_disable +EXPORT_SYMBOL_GPL vmlinux 0x4c3afdc1 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x4c3d0470 kvm_set_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c83591c xenbus_unmap_ring_vfree +EXPORT_SYMBOL_GPL vmlinux 0x4ca4c9df clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x4caa27b7 __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x4cb33ed4 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x4cbf6581 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x4ce00740 pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x4d00a666 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x4d018930 driver_register +EXPORT_SYMBOL_GPL vmlinux 0x4d4a7850 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x4d6ed657 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0x4d7c7be2 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x4d9802bc ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0x4d9ba072 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0x4da565da device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0x4da71fea usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x4dbea364 wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x4dc5d7f6 usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0x4dcbbb40 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e113519 elf_hwcap +EXPORT_SYMBOL_GPL vmlinux 0x4e179dc8 crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e2b62a7 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x4e34d49b alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x4e6809aa gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0x4e75c46a blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x4ec9fea0 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f020dee public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x4f798c1b ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x4f86cf55 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x4f88a5c4 devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4fadb92b scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x4fc06143 bus_create_file +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 0x5005b69e btree_update +EXPORT_SYMBOL_GPL vmlinux 0x5011ca04 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x501ee5e3 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x5025c704 mmput +EXPORT_SYMBOL_GPL vmlinux 0x5026585c xen_irq_from_gsi +EXPORT_SYMBOL_GPL vmlinux 0x50280401 irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0x50601122 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x506691f1 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x5083bfc4 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50a42983 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x50a9ecc6 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x50c2369d regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x50d1fe30 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50ee66e4 kvm_read_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x50f3c95f key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x510ae22b i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x510ff45f pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0x5123c501 kvm_read_guest +EXPORT_SYMBOL_GPL vmlinux 0x513c33e9 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x516dfb57 usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0x5187ac4b xen_store_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x5191bd3c efivar_work +EXPORT_SYMBOL_GPL vmlinux 0x51935577 max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x519cea72 xenbus_probe_devices +EXPORT_SYMBOL_GPL vmlinux 0x51bcb643 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x51d0fa70 stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x5214f0bf device_reset +EXPORT_SYMBOL_GPL vmlinux 0x522b2126 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x522f538b tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x5272d8bc __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0x52a41251 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x52b07755 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x52bac38f of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0x52ce6d15 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x52f8343a setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x53104a0d ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x533900ff i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x53902ec2 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x53cb2800 __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x53ccf34e kvm_write_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x53d4e25d i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x53ec354f thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0x53f1957a tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x540cc52a usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x54215db5 visitor64 +EXPORT_SYMBOL_GPL vmlinux 0x54224e51 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x5445526a udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x54508f75 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54967949 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x54a75a86 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x54b61562 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x54c6196a perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x54e7a88b sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x54f71ffb crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x55062f8c crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x5506a3f9 regulator_set_optimum_mode +EXPORT_SYMBOL_GPL vmlinux 0x550ac147 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x552d526d sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x55526907 xen_features +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x557d6592 irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x55b6c2dc relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x55c98af5 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x55f490d3 tpm_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x55fecbff powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0x5606adb5 atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5613a9d5 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x561ae017 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x561e4b77 irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x5641485b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x564f1dca klist_add_after +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x56651957 pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x56656ba0 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x56842c77 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x56883912 pci_renumber_slot +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x5689946d ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x5692386f gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0x56b20cca sk_unattached_filter_destroy +EXPORT_SYMBOL_GPL vmlinux 0x56b92a13 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56e9a806 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x570a606b usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x575c5f94 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0x57624bc3 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x5779d445 xenbus_exists +EXPORT_SYMBOL_GPL vmlinux 0x578ab0e7 efivars_unregister +EXPORT_SYMBOL_GPL vmlinux 0x578f977e debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57a77757 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x580ef7bc of_pci_msi_chip_add +EXPORT_SYMBOL_GPL vmlinux 0x581467c3 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x582da369 devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x5853eaea device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x587f67a7 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x58897624 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58e14f15 HYPERVISOR_event_channel_op +EXPORT_SYMBOL_GPL vmlinux 0x5913a62b sysfs_notify_dirent +EXPORT_SYMBOL_GPL vmlinux 0x5918d744 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x5946b870 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x5946dc35 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x5947abbe max77693_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x597448a8 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x5982dc3b sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x59a6e91d clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x59b2adbf input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x59ca8c0e led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x59ec1f9f shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x5a217ebf get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x5a21eceb rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x5a255eea fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x5a2b1b67 gnttab_free_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5a3a2176 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x5a46adda pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x5a5e43f3 extcon_find_cable_index +EXPORT_SYMBOL_GPL vmlinux 0x5a634032 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a83eef1 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x5a8b98ab simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x5a8f3b69 of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0x5ab880b1 pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x5abb70a5 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x5ad23ea1 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x5af03a28 gnttab_claim_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5b3ee1b4 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x5b4e379c of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0x5b615fd1 dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x5bb4ab1e regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x5bda73b9 ping_bind +EXPORT_SYMBOL_GPL vmlinux 0x5bdd6da5 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x5be24e86 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x5be51621 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x5c18cd8b inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x5c1c8c8a sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x5c3f164f pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x5c4a8694 use_mm +EXPORT_SYMBOL_GPL vmlinux 0x5c6638c9 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5c66e90c efivar_run_worker +EXPORT_SYMBOL_GPL vmlinux 0x5c82bb02 hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x5cb52d1e tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0x5cbee3eb call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x5cca60bb virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5d1098c6 xen_start_info +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d1e1652 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x5d366dec gnttab_cancel_free_callback +EXPORT_SYMBOL_GPL vmlinux 0x5d6739c4 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x5d77952d hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x5da685eb usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5ec11e6e find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x5eda5e1b fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0x5ee03fea usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x5ee62701 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x5efc3e37 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x5efdb3bd irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0x5eff6d26 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x5f248f72 set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0x5f3bcdae tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x5f419491 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x5f710679 usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0x5f73ebdb adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x5fa67d76 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x5fafb870 extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x60041190 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x6021dc78 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x6026331d led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x6028df43 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x60442822 phys_to_mach +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x6073c39f balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x608e6280 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x608eb5ff tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x6094685f wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x60999b1d ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x609a8a73 skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL_GPL vmlinux 0x60a74aeb anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x60bb8029 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0x60cd7829 __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x60cfdeab dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x610e0cd2 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x613dd8f1 kvm_put_kvm +EXPORT_SYMBOL_GPL vmlinux 0x616ce7e6 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x61778ceb __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x6183ff15 sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0x61ada0e3 dm_dispatch_request +EXPORT_SYMBOL_GPL vmlinux 0x61b40beb inet_csk_reqsk_queue_prune +EXPORT_SYMBOL_GPL vmlinux 0x61bfdc9d register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x61e963ff regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x61f97116 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x620747cc cgroup_add_cftypes +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6232fe53 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0x6260f469 sec_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x627c2ee3 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x6294f0f9 regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0x62ae393c blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x62f29373 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x630bd3e0 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL vmlinux 0x631de49f ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x63205de1 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x63362f17 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0x6375dd4c __clocksource_updatefreq_scale +EXPORT_SYMBOL_GPL vmlinux 0x637bc038 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x6390efda of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0x63b31216 dev_hard_start_xmit +EXPORT_SYMBOL_GPL vmlinux 0x63dedf68 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x63dfb0a6 sdhci_pci_o2_probe +EXPORT_SYMBOL_GPL vmlinux 0x63e6e1d5 devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x63ec562e relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x63f37fc8 ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0x640165bf crypto_rng_type +EXPORT_SYMBOL_GPL vmlinux 0x641e93ef irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x64397f13 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x64424ad6 amba_ahb_device_add +EXPORT_SYMBOL_GPL vmlinux 0x647537f3 pl320_ipc_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x64d39ec3 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x64ebee9e perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x65550bcd dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x655d1b99 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65e8a7aa pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x6621fb50 ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0x662a0c3f x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x663b38a1 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x663c0aa3 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x663c16d6 gnttab_grant_foreign_access_subpage_ref +EXPORT_SYMBOL_GPL vmlinux 0x667fd156 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x66958878 fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL vmlinux 0x66a0d401 devres_release +EXPORT_SYMBOL_GPL vmlinux 0x66a26bc3 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x66ab55c2 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0x66b2bdc4 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66f40a93 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x66fc830b adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x6713b480 extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6739a503 balloon_set_new_target +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x679a9698 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x67d1c10a spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x67e89aa2 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x6839c285 inet_csk_compat_setsockopt +EXPORT_SYMBOL_GPL vmlinux 0x68480b94 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x684e0a01 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x687193e3 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x687934e9 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x68a6e1c1 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x68a9c0a3 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0x68dfe5f5 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x6921aa34 compat_put_timeval +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x69386451 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x69414458 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x694e5500 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x695de9e9 percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x697f7b89 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x69d57a56 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x69e9a2cb ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x69f36941 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x6a441db8 __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x6a4d1e29 pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x6a54c1ac rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a6cafd2 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x6aa20f5a device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x6ac276fb pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0x6af54773 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0x6b03de59 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x6b13b535 pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b3685cd fuse_conn_kill +EXPORT_SYMBOL_GPL vmlinux 0x6b388f32 mdio_mux_init +EXPORT_SYMBOL_GPL vmlinux 0x6b3e659b da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x6b711e29 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x6b93bf60 inet_twdr_twkill_work +EXPORT_SYMBOL_GPL vmlinux 0x6b972c0a ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x6b9d7d49 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0x6b9e7ad7 of_clk_src_simple_get +EXPORT_SYMBOL_GPL vmlinux 0x6be75b65 regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x6bfae1ed kvm_write_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0x6c1b09ab gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x6c49c4f2 clockevents_notify +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c5563e1 stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0x6c7069cd devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x6c711165 tpm_open +EXPORT_SYMBOL_GPL vmlinux 0x6c81e3c1 usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0x6c934b88 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6cb9930e crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6cd4ea62 wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x6ce1959f dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x6ce6148c user_describe +EXPORT_SYMBOL_GPL vmlinux 0x6d111838 phy_exit +EXPORT_SYMBOL_GPL vmlinux 0x6d2785b5 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d51ad5c wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x6d5e155f device_attach +EXPORT_SYMBOL_GPL vmlinux 0x6d6720ad pwm_request +EXPORT_SYMBOL_GPL vmlinux 0x6d93f3bc regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x6d9e5425 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x6df28640 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x6df8f4cd pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e4ee0dd ping_close +EXPORT_SYMBOL_GPL vmlinux 0x6e55f369 tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x6e58ddf0 gnttab_end_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6eac9f03 reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x6eaf1a42 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x6eccc761 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x6f36f606 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x6f821baa crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x6f86541a ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x6f9d562c ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x6fa8e12f regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x6fd56f87 devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x702bad6d debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x7047baf9 crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x704fd505 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x705d6665 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x7064da8b btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x70693293 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x709bb484 devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x70c6b8a0 pci_sriov_migration +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70e906ab tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7119cba7 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x715fb490 usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x71616c58 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x716b9736 register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x7170390e regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x71930ed3 of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x7196a51b extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x71a3371e gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x71b28753 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x71b461bc da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x71c5b887 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x71ca5253 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x71e8e240 pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x7200b731 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x72177e8e root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x72637904 clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x727d3dbe usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x72bea4b0 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x72da9763 led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x72e1920a kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x72e80901 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x72ecf212 driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x72f0c05b sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x73013896 xenbus_printf +EXPORT_SYMBOL_GPL vmlinux 0x7305edab wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x7306a342 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x731791c0 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x731dba7a xen_domain_type +EXPORT_SYMBOL_GPL vmlinux 0x73510609 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x73765527 public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0x73a421c3 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73a70dcd irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x73b4a81c sdio_f0_readb +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 0x73ea50f5 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x74042643 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x7409c2f4 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x7422c95e gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x742def44 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x74471ed3 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x74487d9f unregister_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0x7455abd8 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x74802cd6 xen_swiotlb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x74954462 timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74c397fb crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x74f6e90f crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x75133f6e visitor128 +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x7541677f arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0x754c1099 devres_add +EXPORT_SYMBOL_GPL vmlinux 0x757b49d2 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x7597f284 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x75ae8eca sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x75d57521 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x7612664e skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x7630c804 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x763f3747 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x76878728 __class_create +EXPORT_SYMBOL_GPL vmlinux 0x76885f77 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x768fea3d tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0x7694fa2b gfn_to_pfn_prot +EXPORT_SYMBOL_GPL vmlinux 0x76981bef ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x76b0d70b sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x76d07d6e gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x76fae02f verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x76fb72d8 dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x770b0080 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x7712771a unbind_from_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x771307b7 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x7798a95a dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x77a80409 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0x77cbb779 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x77ecb850 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x78116a80 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x781b23f6 mark_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x7861d4b4 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x7874d191 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x787c882b lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x7892acbe tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x78952c9d put_device +EXPORT_SYMBOL_GPL vmlinux 0x78a2ce77 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x78e377ea css_next_child +EXPORT_SYMBOL_GPL vmlinux 0x78e58d5f pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0x79247293 pci_msi_off +EXPORT_SYMBOL_GPL vmlinux 0x793fff69 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x79423d38 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x79601bd8 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x7980f896 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x79ad5cca tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x79c5e3bf rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x79d23b1a inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x79f3d2be xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x79ffc2f7 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x7a105538 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x7a319404 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x7a42fe3f pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x7a459b15 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0x7a5347df do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x7a582574 wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0x7a6c0217 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL vmlinux 0x7abf1a72 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7ac2d785 regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x7ae39243 register_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0x7af39ae5 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b2163bd HYPERVISOR_tmem_op +EXPORT_SYMBOL_GPL vmlinux 0x7b4a47c1 __scsi_get_command +EXPORT_SYMBOL_GPL vmlinux 0x7b65ba1e pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x7b7e8025 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x7b87a5f3 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x7b90d1a9 bind_virq_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x7b93d0ea usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x7bc9eacf kvm_vcpu_block +EXPORT_SYMBOL_GPL vmlinux 0x7bf8bda2 efivar_entry_size +EXPORT_SYMBOL_GPL vmlinux 0x7c147be2 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x7c227088 clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0x7c2a8749 srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x7c346357 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x7ca22992 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7cbc284e xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x7cbf1ab5 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x7cc1b7fd max77693_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x7cc7de1c x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x7cc8dfb7 devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7cd3c144 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x7cd6e2ee page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x7cdcbabf wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x7ce5b92a gpiod_sysfs_set_active_low +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7cf471bb pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x7cf8057a blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x7d397cc7 gpiod_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d64a2bc find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x7d6f856a sysfs_schedule_callback +EXPORT_SYMBOL_GPL vmlinux 0x7d75b972 balloon_devinfo_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7d76df55 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x7d84ed24 tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7d9a2b74 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7deb7851 powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x7defd8c8 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x7df9f26e devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0x7e14f5a6 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x7e519cbc xenbus_switch_state +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e69fa1a pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x7e6ee730 regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x7e734037 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x7ea1a2bc probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x7ebd69c5 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x7ec16677 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x7f049360 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x7f435d7c raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x7f504932 regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x7f5a3b48 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x7f667a20 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7f83d09e xenbus_map_ring_valloc +EXPORT_SYMBOL_GPL vmlinux 0x7f9449e0 extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0x7f9a9dee bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x7fa4b4a2 of_pci_parse_bus_range +EXPORT_SYMBOL_GPL vmlinux 0x7fb9465e __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x7fbc9a03 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x7fd38778 armpmu_get_max_events +EXPORT_SYMBOL_GPL vmlinux 0x7fe973d3 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x7ffada02 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x802b391b shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x80357887 hrtimer_start +EXPORT_SYMBOL_GPL vmlinux 0x803dd8c4 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x8049e4c3 tcp_is_cwnd_limited +EXPORT_SYMBOL_GPL vmlinux 0x80662cd8 xen_swiotlb_sync_sg_for_device +EXPORT_SYMBOL_GPL vmlinux 0x80698a68 pci_ioremap_io +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80df9b9d sec_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x80f69060 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x811b24b5 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x813304e8 ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x8140842a gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x81446777 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x8147181c ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x8167975d arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x817b06f8 user_update +EXPORT_SYMBOL_GPL vmlinux 0x81a24e32 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0x81c3005e ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x81c5fde3 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x81e9a4e0 inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x81f45c82 of_usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0x822377fb transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8249d4d0 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x8256138f sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x825b9835 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x8262a401 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x8267d8ac srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x82939ebd rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x829f5a34 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x8318eb66 clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x834616bb sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x834671f6 inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x8349ab5f kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL vmlinux 0x836e6ff4 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x8394f8eb kobj_completion_init +EXPORT_SYMBOL_GPL vmlinux 0x8395158e crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x83cc6eb5 device_del +EXPORT_SYMBOL_GPL vmlinux 0x83df2ac0 gfn_to_memslot +EXPORT_SYMBOL_GPL vmlinux 0x83eaf3f9 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x83ed4403 inet_csk_compat_getsockopt +EXPORT_SYMBOL_GPL vmlinux 0x84207533 fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0x84522608 fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0x848794e4 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0x8487a2b6 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x84bff1e9 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x84df3289 balloon_mapping_alloc +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x852d28bf crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x852e568d of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x854f7b6c usb_string +EXPORT_SYMBOL_GPL vmlinux 0x8567265b of_extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x857ac6a6 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x8597ee08 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x859d6f7a max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x85b14d33 clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x85c10896 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0x85c77c4a md_stop +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85c9712f ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x85dacdd2 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x85e6e135 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x8618375a __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x86314a27 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0x86330af6 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x8652c72a screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x86623fd7 notify_remote_via_irq +EXPORT_SYMBOL_GPL vmlinux 0x866b9687 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x8687c1e4 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x869232da pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x869388e9 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x86a51007 gnttab_end_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x86a813c3 sysfs_get_dirent_ns +EXPORT_SYMBOL_GPL vmlinux 0x86c00ca7 uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x86da21f9 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x8702e548 process_srcu +EXPORT_SYMBOL_GPL vmlinux 0x870da79c elv_register +EXPORT_SYMBOL_GPL vmlinux 0x870ddd2e i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x870e16b7 xen_test_irq_shared +EXPORT_SYMBOL_GPL vmlinux 0x87134d53 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x8724e5dd inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0x87263b4f extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x873d88bd sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0x873ea648 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x875ea8bd inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x876c3c08 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x8781b8e5 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x878cef36 usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x87bb4e32 of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x87bbaddf task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x87d67c96 aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x87df71b6 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x8834564a list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0x883c2740 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x8846fa6f regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x88594153 serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0x8887fafd __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x888935fa alarm_start +EXPORT_SYMBOL_GPL vmlinux 0x889646c1 sis_info133_for_sata +EXPORT_SYMBOL_GPL vmlinux 0x88aba29d cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88bb21c7 __efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0x88e1f13d usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x88fd08aa virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0x89151526 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x891a5a7f gnttab_max_grant_frames +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x892c2f91 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x892f4ecc wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x89502f0c gnttab_subpage_grants_available +EXPORT_SYMBOL_GPL vmlinux 0x8951ba42 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x896737f5 device_schedule_callback_owner +EXPORT_SYMBOL_GPL vmlinux 0x89803960 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x8987862f crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x898c349c usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x89a46aa2 xenbus_grant_ring +EXPORT_SYMBOL_GPL vmlinux 0x89b572bd class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89c49dfc hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x89df3c0d scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x89e2ce93 preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x8a23288c devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8a2b14ba wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0x8a329cac tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x8a6fd21a sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8a738aef pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x8a78989f irq_from_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x8a7a4f86 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x8a7eb6cc blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x8a8ceec3 kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0x8aaf09c8 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x8ab8cb82 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x8ababff8 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ad355fd of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8ae152b5 of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x8ae756f3 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x8aea4a4f driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x8b04668e bind_interdomain_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x8b295a25 napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x8b38b612 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x8b56739f tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0x8b62655a arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0x8b66f9e0 xen_platform_pci_unplug +EXPORT_SYMBOL_GPL vmlinux 0x8b816ac6 wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x8ba5afe9 HYPERVISOR_memory_op +EXPORT_SYMBOL_GPL vmlinux 0x8bb59194 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x8bc0b212 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x8bc5defb gpio_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x8bfa4101 wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c06a108 xenbus_transaction_start +EXPORT_SYMBOL_GPL vmlinux 0x8c542d44 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8c554fe5 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x8c61b82c hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8c639d54 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0x8c659b6c btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0x8ca49616 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8cc6f128 thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0x8cdfedee crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x8d36c088 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0x8d39558c platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x8d4e7bcc arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x8da01274 kvm_get_pfn +EXPORT_SYMBOL_GPL vmlinux 0x8da88711 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x8db92346 idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8dbf7aaa privcmd_call +EXPORT_SYMBOL_GPL vmlinux 0x8dcbe357 virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0x8e0af3fb disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x8e18c6fd ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x8e1cd06f kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL vmlinux 0x8e3940e5 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x8e405f4d crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0x8e4f1d69 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x8e5b04b2 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x8e6f99ea ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x8e7542c9 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x8e7e5233 regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0x8e902917 lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x8e91fdef regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8e9c7933 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x8eae1c3a led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8ec3f7da hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x8ee4a5dc rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x8ef0f260 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x8ef2cb62 devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0x8f14c58b __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x8f21d19a bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f8411ad platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8f8a365c ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x8f902a2c gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0x8fa32289 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x8faac947 clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0x8fd83bed kvm_vcpu_init +EXPORT_SYMBOL_GPL vmlinux 0x8fdc79c2 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0x8ffb6b56 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x90228869 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x9024d41e powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0x902e00a8 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x904de229 extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x90687b2d of_irq_parse_pci +EXPORT_SYMBOL_GPL vmlinux 0x90705b7f syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90b24544 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x90b763f1 HYPERVISOR_console_io +EXPORT_SYMBOL_GPL vmlinux 0x90cf00b7 devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x90d23c67 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x90d373b2 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x9120bad9 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x91286982 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x913a3738 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x913ee1ba ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x9146c585 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x91505721 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x9167e71f unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x9189a2f7 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x918cf71e default_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x9192cc6f platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x91941c06 sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x9194a074 blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0x91d964f1 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x91ecd40d usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x91f01e2c gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL vmlinux 0x920aacca nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x920bf1e0 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x920cc389 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x921e36e7 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x92368026 inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x9248fa2a pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x924e12e8 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x9258812d device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x926f3d00 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x92854dcd ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x92a30ea0 thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92d3ad08 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92e4a91d ftrace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x930ed9b9 of_usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0x9312d80e evtchn_put +EXPORT_SYMBOL_GPL vmlinux 0x9320d15c regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x933555d5 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x93b33b0c device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x93b772e4 da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x93ba09c3 tpm_show_caps +EXPORT_SYMBOL_GPL vmlinux 0x93c6f1d1 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x93ec34a9 tpm_show_active +EXPORT_SYMBOL_GPL vmlinux 0x93f8adab fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x941d4a1d debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x9420d87e stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0x942e8516 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x943fc708 xen_setup_shutdown_event +EXPORT_SYMBOL_GPL vmlinux 0x9460fa18 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x9481d034 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x94902d7e __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x949f7342 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x94a1efbd get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x94a68723 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x94d3311b pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0x94e62d2e __set_phys_to_machine_multi +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x9557da45 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x9564b6fe __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x9576bbd1 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x958a430f gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95e885c8 __efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x95fab3b5 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x95ffd0e7 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x961b7fcd pskb_put +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x9625e652 klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x964add15 xenbus_scanf +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9655a0e7 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x9677612b ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x96852555 extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x96f7f545 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x9730c462 gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x9732aa53 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x9745c52a of_fixed_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0x9767cfd2 virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0x977106ab regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x9786b3bc xen_swiotlb_unmap_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0x97b45698 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x97b9c1fc sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97dfb9ba inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x98063fc0 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x981d8f43 alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x9841e70c crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x98744d78 irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x989853ef ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x98cbed67 kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL vmlinux 0x98d6094b ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x98ec851a i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x9913d089 __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x99248b0e set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x99363540 xenbus_probe_node +EXPORT_SYMBOL_GPL vmlinux 0x994bba72 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x99711a83 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x997252f2 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x9973add9 __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x99804d55 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x9993c21d amba_apb_device_add +EXPORT_SYMBOL_GPL vmlinux 0x9999a6ba tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x99e26410 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a191505 xen_swiotlb_set_dma_mask +EXPORT_SYMBOL_GPL vmlinux 0x9a3ffd6b rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x9a7e72a4 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a923583 usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x9a9ce491 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0x9aa52767 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x9aa70d9f led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x9ab9bb22 skb_gro_receive +EXPORT_SYMBOL_GPL vmlinux 0x9aca444b get_monotonic_boottime +EXPORT_SYMBOL_GPL vmlinux 0x9acb21b5 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x9acb513b fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x9acf0851 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0x9ad01b2e shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x9ad7a6c4 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x9aea4b49 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9af8c9b4 kvm_vcpu_uninit +EXPORT_SYMBOL_GPL vmlinux 0x9b1de8e3 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0x9b267660 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x9b2c3340 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x9b3f1a8e usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x9b4dd52b ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0x9b6bd8e3 device_add +EXPORT_SYMBOL_GPL vmlinux 0x9b9f5290 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9ba2bb2b gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x9ba986b0 usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x9baa74a4 inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x9bc60fd2 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9c01d41c da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0x9c383678 tpm_show_owned +EXPORT_SYMBOL_GPL vmlinux 0x9c4e1575 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x9c6fa259 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x9ca187a7 sdhci_pci_o2_resume +EXPORT_SYMBOL_GPL vmlinux 0x9caaaff9 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x9cce4451 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x9cefb4bc ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x9cf4c16d pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x9d030b99 stop_machine +EXPORT_SYMBOL_GPL vmlinux 0x9d06688b register_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x9d138533 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x9d3819e4 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x9d3850e1 gnttab_alloc_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x9d8c13c4 xenbus_register_driver_common +EXPORT_SYMBOL_GPL vmlinux 0x9dbfa167 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x9ddc5a28 lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x9de23c6e usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x9e3630d2 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x9e47682c xenbus_dev_fatal +EXPORT_SYMBOL_GPL vmlinux 0x9e5d7e14 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x9e61ddc9 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x9eb2d56c gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x9ec0072e sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ef7dfda btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9f0664bf dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0x9f187580 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x9f3f98e1 of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x9f46c336 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x9f4b191c __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x9f517986 HYPERVISOR_hvm_op +EXPORT_SYMBOL_GPL vmlinux 0x9f7482ed rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x9f81d266 vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x9fb4a398 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x9fca1f34 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fdb82bd dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x9fdc1542 amba_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9fe3667f regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0xa00016ef ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0xa0208e02 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xa02b398b md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0xa0d71d8f ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xa10c11f4 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0xa11216be xen_store_domain_type +EXPORT_SYMBOL_GPL vmlinux 0xa1271b50 sec_reg_update +EXPORT_SYMBOL_GPL vmlinux 0xa12d929d desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0xa154dc93 vchan_init +EXPORT_SYMBOL_GPL vmlinux 0xa1f79553 xen_create_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0xa21a52ff __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xa22732ab spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0xa2531b70 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa2862fa1 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0xa28aee2d usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xa28f54d5 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xa2b48d16 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0xa2b9c993 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xa2bd6ed7 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0xa2d2daf2 phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0xa30635f5 xenbus_dev_groups +EXPORT_SYMBOL_GPL vmlinux 0xa30dad08 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0xa30efa8b blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0xa353fffc xenbus_rm +EXPORT_SYMBOL_GPL vmlinux 0xa361bc58 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0xa36c331b __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa396d80b fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3d47786 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa3f4e97d virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0xa40ab4da d_materialise_unique +EXPORT_SYMBOL_GPL vmlinux 0xa42e175e __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xa452f2a4 xen_pirq_from_irq +EXPORT_SYMBOL_GPL vmlinux 0xa45b15a7 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0xa4acc51f blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0xa4cba2dc input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0xa4ea04ee of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0xa5449d2d __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0xa557a1b4 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0xa56c2ee9 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0xa56e2d8b efivar_entry_add +EXPORT_SYMBOL_GPL vmlinux 0xa5922805 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xa599f7f0 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0xa5aa17d0 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0xa5b49584 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa5c1ad3f subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xa5eb3082 sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5f389eb of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xa5fafe46 regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa62892c6 efivar_sysfs_list +EXPORT_SYMBOL_GPL vmlinux 0xa6344f67 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0xa6352a7d ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0xa67a8811 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xa6863dc1 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0xa6920c5b input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa6a0a273 max77693_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xa6b820b8 xen_dma_ops +EXPORT_SYMBOL_GPL vmlinux 0xa6bb433c skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa724257f init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa755ff23 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0xa7592d6a ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xa76cbbfa device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xa7c322f0 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0xa7e19b8b ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xa7f92105 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0xa801b359 efivar_entry_iter_begin +EXPORT_SYMBOL_GPL vmlinux 0xa8256204 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0xa8384df3 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa85b93b6 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa88437b0 nl_table +EXPORT_SYMBOL_GPL vmlinux 0xa893e27b pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0xa8f0d0ff input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0xa9094789 sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0xa9360aaf ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0xa93d757e netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0xa96c1837 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0xa97235b7 blkio_subsys +EXPORT_SYMBOL_GPL vmlinux 0xa97665b3 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0xa97e5262 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xa980af16 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xa983d092 unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0xa9896042 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0xa9a82042 gnttab_trans_grants_available +EXPORT_SYMBOL_GPL vmlinux 0xa9aef2e1 gfn_to_hva_memslot +EXPORT_SYMBOL_GPL vmlinux 0xa9debc2c cgroup_load_subsys +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9f93463 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0xa9fc3f54 gnttab_grant_foreign_access_trans +EXPORT_SYMBOL_GPL vmlinux 0xa9fea46b bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0xaa221d33 xen_swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xaa635a0a pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xaa6ffd0a mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaaef6fdb sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0xab01acbe gnttab_request_free_callback +EXPORT_SYMBOL_GPL vmlinux 0xab04ab78 of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0xab093634 udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0xab0e3225 clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab72b7de seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0xab8ceced gnttab_batch_copy +EXPORT_SYMBOL_GPL vmlinux 0xab8e36cd tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0xab98ee93 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0xab9f8a18 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0xabab79ed usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xabcd2fe7 xen_swiotlb_dma_mapping_error +EXPORT_SYMBOL_GPL vmlinux 0xabced1aa trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0xac159bc0 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0xac4fef4d crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0xac4ff5ac elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0xac55929d usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0xac5ff315 ping_hash +EXPORT_SYMBOL_GPL vmlinux 0xac81dd61 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0xac8ceca0 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xad039c54 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0xad1664f7 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0xad376749 clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0xad5b9f44 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0xad708113 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xad903d05 ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0xadbc56ae queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xadcdc56d pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xadfe9b91 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xae0c8783 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0xae2554c4 of_clk_src_onecell_get +EXPORT_SYMBOL_GPL vmlinux 0xae45b0a3 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0xae50a060 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xae58a132 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae85a3a9 pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xae9409b4 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xae9f18a4 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xaebc5f3d phy_get +EXPORT_SYMBOL_GPL vmlinux 0xaee68385 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0xaf0f9a80 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xaf34e044 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0xaf9287a1 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0xafb07262 __pfn_to_mfn +EXPORT_SYMBOL_GPL vmlinux 0xafbbe830 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0xaff04c82 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0xb02ac411 register_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb047c95b clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0xb0509438 pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0xb05c6a70 tpm_show_pubek +EXPORT_SYMBOL_GPL vmlinux 0xb0862c4b task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0xb0a58462 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0d1656c gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0xb0e33eff vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0xb0fda4d5 iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0xb10d55bc cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xb117978d devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0xb119207f blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb14d00c4 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0xb151c285 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0xb1626617 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0xb172ffac efivars_sysfs_init +EXPORT_SYMBOL_GPL vmlinux 0xb1a7e3f6 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1c0c1c2 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1f9981b rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0xb1fdfbe1 tpm_show_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xb2071216 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb234d549 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0xb23ab74e irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xb24bf561 xenbus_watch_path +EXPORT_SYMBOL_GPL vmlinux 0xb260bfa5 unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xb276a519 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0xb3228f5e blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0xb32a1e28 __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0xb347bb2c work_busy +EXPORT_SYMBOL_GPL vmlinux 0xb352e1b2 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xb356ab77 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0xb383c4e3 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xb3899d21 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0xb3af0bde device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xb3bbbc9b usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xb3e5794e usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xb3e7caa7 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0xb42ef73e __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xb43d1991 list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb46af994 gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0xb46f051d ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0xb483240c __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4c420ed ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0xb4cf542b vchan_find_desc +EXPORT_SYMBOL_GPL vmlinux 0xb4e14553 gnttab_query_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb4eda1cd class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xb50fb928 pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xb515ca9d crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0xb52302f1 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0xb5271d85 virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb53db78b netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0xb53fdfba inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xb55c194b fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5cb8145 hrtimer_get_res +EXPORT_SYMBOL_GPL vmlinux 0xb5d859b6 tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xb5db11c7 irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb618e676 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0xb6230f1f gnttab_grant_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb628104a platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0xb67b2219 cm_suspend_again +EXPORT_SYMBOL_GPL vmlinux 0xb6822bef xen_xenbus_fops +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6c635af wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xb6caa6e1 devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb6d6bcb5 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xb6d8b390 of_pci_msi_chip_remove +EXPORT_SYMBOL_GPL vmlinux 0xb6dcf3d2 xen_swiotlb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0xb709e339 efivar_validate +EXPORT_SYMBOL_GPL vmlinux 0xb71fff60 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xb7319c65 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xb73b600a hypervisor_kobj +EXPORT_SYMBOL_GPL vmlinux 0xb73e76a3 kvm_read_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0xb7528b86 regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0xb78f7410 sysfs_put +EXPORT_SYMBOL_GPL vmlinux 0xb7b1003e __netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0xb7c9c049 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0xb7f6d7ed irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb803c8de crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xb81f9321 pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0xb87ed81e __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xb8827dab dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0xb8dfb791 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0xb8fdddcd napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb91c6979 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0xb925ca7b regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0xb98334fe ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb9994ef7 regmap_init +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 0xb9ca2dea devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9f79ca0 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xba1f88e0 pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xba211efc efivar_entry_set_get_size +EXPORT_SYMBOL_GPL vmlinux 0xba2af022 kobj_completion_del_and_wait +EXPORT_SYMBOL_GPL vmlinux 0xba409c86 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xba471186 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0xbab18fe5 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0xbabdd1e0 ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0xbad4a2f9 blk_queue_bio +EXPORT_SYMBOL_GPL vmlinux 0xbafb32ab crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb362d74 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0xbb52d9cb max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xbb824b16 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xbb970ae3 xenbus_map_ring +EXPORT_SYMBOL_GPL vmlinux 0xbb9a7e50 dm_kill_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0xbbb6a4ec put_pid +EXPORT_SYMBOL_GPL vmlinux 0xbbce8092 PageHuge +EXPORT_SYMBOL_GPL vmlinux 0xbbfe3706 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0xbc043370 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0xbc35ef2a usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xbc38a840 efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0xbc3f25c8 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0xbc52a831 scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0xbc56a20f netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbc7bb211 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xbc8ff8ea rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0xbc994606 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xbc9955e5 stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcb9ec72 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xbcc638a6 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0xbcf9818b security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xbcfbace0 bio_trim +EXPORT_SYMBOL_GPL vmlinux 0xbd03cd88 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0xbd18d980 percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0xbd191eac amba_apb_device_add_res +EXPORT_SYMBOL_GPL vmlinux 0xbd2ba1a2 kvm_vcpu_cache +EXPORT_SYMBOL_GPL vmlinux 0xbd3a3c79 xenbus_match +EXPORT_SYMBOL_GPL vmlinux 0xbd514a77 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd6d0790 pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0xbd909fda wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xbd9e50d5 devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xbdaf5686 get_compat_timeval +EXPORT_SYMBOL_GPL vmlinux 0xbdbaefa0 devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbdf68d3f sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe58bcfa mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0xbe62103d rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0xbe77ad3b ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0xbe7a8662 tcp_init_congestion_ops +EXPORT_SYMBOL_GPL vmlinux 0xbe7e5da0 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xbe9c31b4 wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbebaa0a6 of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xbec33e7f dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0xbecc50e3 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0xbecde83f ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xbef35a63 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf125142 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0xbf3a7048 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbf4d1378 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0xbf7ba92b fat_attach +EXPORT_SYMBOL_GPL vmlinux 0xbfa59d22 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0xbfd56ecf crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0xc0101ccf ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xc03a654b memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0xc0418cf0 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0xc0685db3 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xc07641fe simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0a02cda __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0xc0b1fb79 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0xc0bf6ead timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xc0d01bc0 percpu_ref_cancel_init +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0f2d376 of_irq_parse_and_map_pci +EXPORT_SYMBOL_GPL vmlinux 0xc1169a51 pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xc11b4470 balloon_stats +EXPORT_SYMBOL_GPL vmlinux 0xc11b45c6 gpiod_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xc11bd00f tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc14c2824 xenbus_probe +EXPORT_SYMBOL_GPL vmlinux 0xc14d8426 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0xc164642e xenbus_otherend_changed +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc1a0c634 i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0xc1bb5937 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0xc1c3058d xenbus_dev_probe +EXPORT_SYMBOL_GPL vmlinux 0xc1c61fe7 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xc1ea24e0 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xc1f37c6c class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xc1f58be0 tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0xc20408bf exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0xc20fb931 devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0xc21af438 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0xc221865b pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc2344754 class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xc252d2c6 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xc26351f8 bind_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xc26f253f xen_dbgp_external_startup +EXPORT_SYMBOL_GPL vmlinux 0xc2724aa4 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xc2926463 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0xc29f613b get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0xc2a34433 subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0xc2bd7249 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0xc2ec0b61 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc31addad led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0xc3389336 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0xc34104cd pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc349ed39 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0xc34efe27 snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0xc352cb02 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc37b1a60 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0xc37ec474 extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0xc385cb58 perf_num_counters +EXPORT_SYMBOL_GPL vmlinux 0xc38fc802 nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0xc3955b4e list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0xc4001dd8 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0xc407a1d4 gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0xc41ebb49 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc431ad24 pwm_free +EXPORT_SYMBOL_GPL vmlinux 0xc43a5450 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0xc480f8aa devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc4b132d2 cgroup_taskset_cur_css +EXPORT_SYMBOL_GPL vmlinux 0xc4bc860c power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0xc4cd759e bus_register +EXPORT_SYMBOL_GPL vmlinux 0xc4e2a30d crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0xc5064d2b exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0xc51e3384 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc525ec18 swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0xc5333022 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0xc5397da6 xenbus_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xc55023cf tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0xc55eebda xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0xc56a5336 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0xc56ee4bd usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc58dc8d2 driver_find +EXPORT_SYMBOL_GPL vmlinux 0xc5b92418 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0xc5e1ca16 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0xc60f75ec __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xc613bdf2 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc632fee8 sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xc63a1109 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xc63ab301 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc660779a get_device +EXPORT_SYMBOL_GPL vmlinux 0xc66097ad efivar_entry_remove +EXPORT_SYMBOL_GPL vmlinux 0xc662751c thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0xc690866c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6ad7c1f sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0xc6eb6579 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0xc7002ac4 evtchn_make_refcounted +EXPORT_SYMBOL_GPL vmlinux 0xc70e686f regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc72d67bc tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc7334069 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0xc75c4af7 cgroup_taskset_first +EXPORT_SYMBOL_GPL vmlinux 0xc78a80e7 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0xc790f18a relay_open +EXPORT_SYMBOL_GPL vmlinux 0xc7955254 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7ca00f5 spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc7ea0d33 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0xc8137921 devres_find +EXPORT_SYMBOL_GPL vmlinux 0xc841cd13 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc892d0b5 xen_swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8add853 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0xc8b033b3 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0xc8c2804d wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xc8de3f14 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0xc8e42cdb debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0xc8ea0d2c platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0xc8ec278c perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0xc8f2b465 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0xc921790a phy_init +EXPORT_SYMBOL_GPL vmlinux 0xc93535c3 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc9638cb2 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xc9641b48 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0xc969be7f rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0xc9ab2ddb kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0xc9ac1760 thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc9b1c154 usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc9cfa97f of_pci_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0xc9d8c3df vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xc9f3e606 xenbus_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xc9fdbc58 usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0xca465a04 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca81ea9a xenbus_transaction_end +EXPORT_SYMBOL_GPL vmlinux 0xca85d8cf tracepoint_probe_update_all +EXPORT_SYMBOL_GPL vmlinux 0xca8f1b7a __put_net +EXPORT_SYMBOL_GPL vmlinux 0xca946187 of_clk_add_provider +EXPORT_SYMBOL_GPL vmlinux 0xcaacc245 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xcabcad57 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0xcac7a63e thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0xcaf30ce9 gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0xcafa6c98 clockevents_unbind +EXPORT_SYMBOL_GPL vmlinux 0xcafa7236 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0xcb02c1ca lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0xcb0ef6fe usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb27feba usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb53501d regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0xcb57caba netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0xcb6f18ea fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0xcb70a6a8 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xcb9b162e clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0xcbe7e979 proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcc03f958 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0xcc1f1c3d inet_twdr_hangman +EXPORT_SYMBOL_GPL vmlinux 0xcc2b937c gfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0xcc51d807 regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0xcc7b3b43 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xccb192dc stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xcccd06b4 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xcce8c0ee ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xcd4ff392 blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0xcd532b90 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0xcd7703b9 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd94fe79 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0xcda6ba88 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xce06c538 dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xce0b9b59 max77693_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xce133300 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0xce1ec893 pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0xce2d93a8 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xce3372d1 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0xce46e140 ktime_get_ts +EXPORT_SYMBOL_GPL vmlinux 0xce5f2102 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0xce620c55 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce6e9d6b inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0xce8f1537 ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0xceb1f126 mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0xceb50817 devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xcebfd6a0 kvm_get_dirty_log +EXPORT_SYMBOL_GPL vmlinux 0xcebfe82c platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0xceed8c16 __set_phys_to_machine +EXPORT_SYMBOL_GPL vmlinux 0xcef5d297 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf71a3a9 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfc7ef4f blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0xcfdad369 sdhci_pci_o2_fujin2_pci_init +EXPORT_SYMBOL_GPL vmlinux 0xcfe563a5 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0xd026d518 HYPERVISOR_vcpu_op +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd0458ccb xenbus_strstate +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd07b2292 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0xd07db187 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0d750c3 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0xd14bc4d9 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xd14c2a87 tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd16c0f4c ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xd1845ba9 nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0xd1874558 irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xd18e7103 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0xd1b2db37 tracepoint_probe_register_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xd1be5eb6 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0xd1c632e9 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xd1d32a54 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xd2036a6a uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd216c344 irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd242be0f inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0xd2556d71 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0xd258217d clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd280b43b extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0xd29c3772 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xd29e6c68 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd2ab202f usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xd2c45ea4 of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0xd2d5977d phy_create +EXPORT_SYMBOL_GPL vmlinux 0xd2e7100b usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0xd2f01747 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0xd2fb352e ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0xd3034286 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xd313077e sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0xd32a46fe md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0xd32fe193 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xd337fab6 driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xd35c577f regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0xd3669a10 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xd383b4bf shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xd387f6ce locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0xd3b1282d i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0xd3e797bf trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0xd4012eeb cgroup_is_descendant +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd44fcbfc ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xd463caa0 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd4679214 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0xd469498b ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xd46c986f ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0xd47f66d7 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0xd4850ca0 regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xd4977821 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0xd49b8f81 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4cad45e clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0xd4cbf8f6 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xd4d3473f fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0xd51461a1 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xd5417f7c debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0xd54d98b5 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0xd598bcfa device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0xd5a2f9da gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0xd5b9664d xenbus_dev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5e446fc kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xd5eb0da6 devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd609d6ac usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0xd6431488 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0xd648b89f ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0xd670f167 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd6826264 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0xd695e960 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xd69e6d33 usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xd6e1e20f iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd722af82 apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0xd7237db4 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0xd725ecd9 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0xd727000c regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd72feba2 xenbus_read_driver_state +EXPORT_SYMBOL_GPL vmlinux 0xd7399d2a efivar_entry_iter_end +EXPORT_SYMBOL_GPL vmlinux 0xd743db13 xenbus_dev_remove +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd778ccf0 css_next_descendant_pre +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd792294d klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0xd79dd320 preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd7d6d02c regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7db151e mddev_init +EXPORT_SYMBOL_GPL vmlinux 0xd7e1e92a __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd7e59ffb aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xd814f00c hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd82ab929 relay_close +EXPORT_SYMBOL_GPL vmlinux 0xd8339d16 extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xd854bc75 devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd875effa platform_bus +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd89b1d38 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0xd8b894a5 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xd8cb5436 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0xd8cec6b1 __module_address +EXPORT_SYMBOL_GPL vmlinux 0xd8e4109b usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0xd8f8feda vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0xd91ba040 crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0xd936c1ae bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd95e8976 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0xd9785f55 phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0xd9a34035 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0xd9afbbf0 input_class +EXPORT_SYMBOL_GPL vmlinux 0xd9c31404 sec_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xd9d89bfc vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL vmlinux 0xd9e1379e ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda08b646 efivar_entry_find +EXPORT_SYMBOL_GPL vmlinux 0xda30704e unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xda34ba61 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0xda35dee3 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0xda44cb37 setup_charger_manager +EXPORT_SYMBOL_GPL vmlinux 0xda46dab8 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0xda57d192 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xda6b6f8e xen_swiotlb_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdaf5262d sync_filesystem +EXPORT_SYMBOL_GPL vmlinux 0xdb04cacc tracepoint_probe_unregister_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xdb059596 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xdb0a3fff crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0xdb0c9170 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdb16290d ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0xdb18dc5e __rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0xdb1f805c pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xdb440a96 unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xdb46f62a inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xdb6c49a2 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdba80fc1 of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0xdbbcc021 efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0xdbc5b3fe sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xdbe6e1a9 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0xdbed3622 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc14a211 xen_hvm_evtchn_do_upcall +EXPORT_SYMBOL_GPL vmlinux 0xdc1e15f1 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0xdc3a7f21 get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0xdc3f5c43 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0xdc42a694 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0xdc502d79 regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xdc55c7c8 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xdc5e238d wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0xdc806c0a xen_unmap_domain_mfn_range +EXPORT_SYMBOL_GPL vmlinux 0xdc8203e1 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdcabf312 usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xdcbe5530 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0xdcc89680 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0xdcdef7db tpm_show_pcrs +EXPORT_SYMBOL_GPL vmlinux 0xdd0d3652 tpm_remove_hardware +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd69c41c key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0xdd908d16 rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xdda5497d shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xddb8c8ac inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xddf6f61e perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0xde109145 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0xde114bbf da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xde1b649d attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0xde443f69 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0xde4bf7c6 filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xde683c1a pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xde730f80 kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL vmlinux 0xde91d01f amba_ahb_device_add_res +EXPORT_SYMBOL_GPL vmlinux 0xde928c68 xenbus_unmap_ring +EXPORT_SYMBOL_GPL vmlinux 0xde95fab1 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0xdea0ca3e xenbus_bind_evtchn +EXPORT_SYMBOL_GPL vmlinux 0xdecc990d amba_device_put +EXPORT_SYMBOL_GPL vmlinux 0xdee0337e ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xdeed4992 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xdef3bc23 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0xdf004f02 tpm_store_cancel +EXPORT_SYMBOL_GPL vmlinux 0xdf019edb dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf29b2bb leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xdf36c6d6 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0xdf6e1223 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0xdf7733f5 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0xdf8ed6c4 transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xdf9feaa9 tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0xe002ee94 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe016cf9e init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0xe0298e15 of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0xe02997e6 device_register +EXPORT_SYMBOL_GPL vmlinux 0xe02a9bed ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe0493417 phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0xe07c4074 tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0xe098176e of_get_named_gen_pool +EXPORT_SYMBOL_GPL vmlinux 0xe0b470ec blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xe0bfa889 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0xe0c78e85 virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0xe0e3147c HYPERVISOR_sched_op +EXPORT_SYMBOL_GPL vmlinux 0xe12432af __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe17c3c45 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0xe193f077 devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xe1b3c9e6 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0xe1c32794 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0xe1ec2151 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xe1fd1815 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0xe204e416 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0xe20a9aee usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0xe2a0b613 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0xe2b9a79e tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xe2c52535 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xe2e7840d regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe309d549 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe3aa1053 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xe3d3a975 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0xe3e8ec25 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0xe41534ce bind_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0xe471792d find_module +EXPORT_SYMBOL_GPL vmlinux 0xe480f45a css_rightmost_descendant +EXPORT_SYMBOL_GPL vmlinux 0xe4a38d98 clk_register +EXPORT_SYMBOL_GPL vmlinux 0xe4c074ef serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0xe4c4b28f gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xe4ccbd28 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0xe4fcc131 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xe52ae762 __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0xe5306af8 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0xe537045e sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0xe53d056d klist_next +EXPORT_SYMBOL_GPL vmlinux 0xe55e57c8 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58f2ddd smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5a45336 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xe5de4cb4 platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0xe606e457 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0xe63fbe4f bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe6a31c0a pwm_config +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6d15dda md_run +EXPORT_SYMBOL_GPL vmlinux 0xe6e0fc3b led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6eb55ee blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0xe717921f dm_requeue_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0xe7568bf5 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0xe75698c6 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0xe7599080 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0xe75b41fc extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe774ab1f platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0xe7a7ee5d wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xe7bf5d06 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe7d79fd1 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xe7e74c18 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe878029a vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xe879ecc7 sk_unattached_filter_create +EXPORT_SYMBOL_GPL vmlinux 0xe89bd243 ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe8a6b3e3 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0xe8a92718 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0xe8a96073 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0xe8afcf88 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0xe8b08f98 pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0xe8c08401 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0xe8ebe43e device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0xe8f01ab1 __mfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0xe9104bba __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0xe92cdf71 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe956a75c pl320_ipc_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe9596aea posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0xe97105fb ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0xe9cac06b usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0xe9d810b2 unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xe9e1b1d8 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xea05f283 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea2c23c2 phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0xea37714e pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0xea3f6df9 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea558ad4 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xea628c20 bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0xea84bea9 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xea915743 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0xea959e3f user_read +EXPORT_SYMBOL_GPL vmlinux 0xea960b5f md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0xeaa0cc4f bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xeac948ee zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0xeaf99c65 pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0xeb014fd3 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0xeb1c3628 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xeb2798f7 xen_destroy_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0xeb2fa6fc fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xeb33911b fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0xeb34adce pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xeb3ef01d arm_pm_restart +EXPORT_SYMBOL_GPL vmlinux 0xeb3f49dc __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0xeb5cf31c blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0xeb60d844 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0xeb70b0a7 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xeb971698 __efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0xeba4d884 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0xebba3c4c hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xebf307f4 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec2e1ff7 of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xec7375c5 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0xec801516 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0xecbcf7a4 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0xecc295fd ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xecd431d6 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0xed41c498 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0xeda95785 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xedb0ea61 of_reset_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xedbc6f67 gnttab_end_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xedd49930 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0xede0d3fa ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0xede49ded tpm_read +EXPORT_SYMBOL_GPL vmlinux 0xedfe7f5e usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0xee2561f0 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0xee48e3f8 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0xee4a88d9 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0xee61904f xen_remap_domain_mfn_range +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee97770e pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0xeec2c480 proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0xeec9a2bf blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0xeefe5b0d pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0xef02bb4b ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0xef0add12 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0xef1fda4a dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0xef5b79e0 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef782b88 gnttab_grant_foreign_access_subpage +EXPORT_SYMBOL_GPL vmlinux 0xefcb8c03 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0xefd4c6c7 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0xefe80c1b raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xefeae813 skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0xf008f0e3 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0xf00ef011 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0xf03dbd53 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0xf042bb0e ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0xf0928215 reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xf0a49b10 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xf0aca5a7 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0xf0b7f35a tpm_release +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf0fae00b task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xf122dfcb rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0xf12faf3b modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xf17eeeda wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf1a06288 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xf1a5f2cc inet_hash +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1c7f675 da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0xf1d5c509 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0xf1d71cb2 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0xf1f9b3ca hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf25efc61 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0xf26f9439 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf2829241 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0xf29f6951 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0xf2b35998 kvm_release_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0xf2d237e2 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xf2f077cc pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf323cc63 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0xf32bdc5d unregister_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf340e251 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0xf35e5d90 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0xf366149c skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0xf37bf921 xenbus_read_otherend_details +EXPORT_SYMBOL_GPL vmlinux 0xf37f8468 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0xf3aa714d vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xf3aac121 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0xf3d06b01 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0xf435bb93 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xf47fdac7 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xf483e642 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4b57b61 dm_underlying_device_busy +EXPORT_SYMBOL_GPL vmlinux 0xf4b7f5f5 gnttab_map_refs +EXPORT_SYMBOL_GPL vmlinux 0xf4badbc7 mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0xf4e50260 sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0xf4e79211 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf505d4f3 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0xf507d5d7 crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0xf522bc5b mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0xf528c1a0 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0xf52cb550 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xf52e66fc xenbus_dev_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xf53da6db power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf55fbfff tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xf5785b42 evtchn_get +EXPORT_SYMBOL_GPL vmlinux 0xf5851b8d cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xf5945bac gnttab_free_grant_references +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5b8a27c dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0xf5d146fa vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0xf5f2312c ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0xf5fef4e3 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf5ffced4 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xf62b2dff pci_pri_stopped +EXPORT_SYMBOL_GPL vmlinux 0xf6528b5a regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf67aef4a hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0xf686def0 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0xf687c81f ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xf69a6945 tracepoint_iter_stop +EXPORT_SYMBOL_GPL vmlinux 0xf6a3ade8 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0xf6becef8 rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf7016530 xenbus_gather +EXPORT_SYMBOL_GPL vmlinux 0xf70199ff pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xf72c561a regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0xf73e5b42 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0xf743d960 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xf74c3b55 pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xf76484a3 xenbus_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0xf7725dcb regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf780aa1c __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xf79f6f52 kvm_init +EXPORT_SYMBOL_GPL vmlinux 0xf7a6837e ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xf7bab61c pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0xf7bd9100 xenbus_register_backend +EXPORT_SYMBOL_GPL vmlinux 0xf7edf83c yield_to +EXPORT_SYMBOL_GPL vmlinux 0xf7f524e4 thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0xf7f9cf05 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0xf816c866 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf85e5e79 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0xf87e9511 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf882876c device_find_child +EXPORT_SYMBOL_GPL vmlinux 0xf89c0e17 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xf8a804b0 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xf8c21229 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0xf8da1f25 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf903efec crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0xf90b0981 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0xf9285c87 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf940c3a7 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf967422b HYPERVISOR_xen_version +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9d26ba4 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0xf9d9264e xen_have_vector_callback +EXPORT_SYMBOL_GPL vmlinux 0xf9e19213 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xfa012fe7 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0xfa0fd202 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0xfa1c86da crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa34bdee tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0xfa356627 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0xfa57c930 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xfa6fde12 tpm_show_enabled +EXPORT_SYMBOL_GPL vmlinux 0xfa901b31 compat_get_timespec +EXPORT_SYMBOL_GPL vmlinux 0xfab05101 devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xfad8bea1 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xfadc288c of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0xfae63bdb rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xfb22bc6c cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb460878 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xfb820e48 usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0xfb896c46 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0xfb8ab436 regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0xfb990fad devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xfbbedefd of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0xfbdbf4a3 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0xfbea0279 tracepoint_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc1edcdc arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0xfc201b66 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0xfc55a3a9 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xfc59ac0f device_create_file +EXPORT_SYMBOL_GPL vmlinux 0xfc5d5d85 kvm_vcpu_kick +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfce3b0a3 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0xfd041aeb register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xfd246a96 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0xfd2cc70c ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0xfd3721c5 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xfd51b281 gnttab_end_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0xfd6284c5 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0xfd78484d rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfde8aee4 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0xfe067fff aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xfe1fa0db of_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xfe46089e bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfe4c2fda sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xfe50bd28 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0xfe7f0137 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xfe912650 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfec9f82a ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff22eeb2 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0xff364ccb serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff6897e3 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0xff798255 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xff9971b4 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0xffb6fe05 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0xffbb420c usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0xffcffb12 efivars_register +EXPORT_SYMBOL_GPL vmlinux 0xffef746e usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0xfffcb3ee skcipher_geniv_init --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/arm64/generic.compiler +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/arm64/generic.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu/Linaro 4.8.4-2ubuntu1~14.04.3) 4.8.4 --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/arm64/generic.modules +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/arm64/generic.modules @@ -0,0 +1,3358 @@ +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250_dw +8250_pci +8255 +8255_pci +8390 +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm860x-ts +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +9p +9pnet +9pnet_rdma +9pnet_virtio +DAC960 +a100u2w +a3d +a8293 +aacraid +aat2870-regulator +aat2870_bl +ab3100 +ab3100-otp +acard-ahci +acecad +acenic +act200l-sir +act_csum +act_gact +act_ipt +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +actisys-sir +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 +ad5930 +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 +ad9850 +ad9852 +ad9910 +ad9951 +ad_sigma_delta +adcxx +addi_apci_035 +addi_apci_1032 +addi_apci_1500 +addi_apci_1516 +addi_apci_1564 +addi_apci_16xx +addi_apci_2032 +addi_apci_2200 +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 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1275 +adm8211 +adm9240 +adp5520-keys +adp5520_bl +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads1015 +ads7828 +ads7846 +ads7871 +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adv7180 +adv_pci1710 +adv_pci1723 +adv_pci1724 +adv_pci_dio +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +af-rxrpc +af9013 +af9033 +af_802154 +af_alg +af_key +af_packet_diag +affs +ah4 +ah6 +ahci +ahci_platform +ahci_xgene +aic79xx +aic7xxx +aic94xx +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +ak8975 +algif_hash +algif_skcipher +alim7101_wdt +alphatrack +altera-stapl +altera_jtaguart +altera_ps2 +altera_uart +alx +amba-pl010 +ambakmi +amc6821 +amd5536udc +amd8111e +amplc_dio200 +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pc263 +amplc_pci224 +amplc_pci230 +amplc_pci263 +ams369fg06 +analog +anatop-regulator +ansi_cprng +anubis +aoe +apbps2 +apds9300 +apds9802als +apds990x +appledisplay +appletalk +appletouch +applicom +ar5523 +ar7part +arc-rawmode +arc-rimi +arc4 +arc_emac +arc_ps2 +arc_uart +arcmsr +arcnet +arizona-i2c +arizona-spi +ark3116 +arkfb +arp_tables +arpt_mangle +arptable_filter +as3711-regulator +as3711_bl +as3722-regulator +as5011 +asc7621 +asix +ast +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at86rf230 +at91_ether +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-pwm-bl +atmel-ssc +atmel_mxt_ts +atmel_pci +atmel_pwm +atmtcp +atp870u +atxp1 +aty128fb +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo-pixcir-ts +auo_k1900fb +auo_k1901fb +auo_k190x +auth_rpcgss +authenc +authencesn +autofs4 +avmfritz +ax25 +ax88179_178a +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 +bcm5974 +bcm_wimax +bcma +bcma-hcd +bd6107 +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluetooth +bma150 +bma180 +bmp085 +bmp085-i2c +bmp085-spi +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bonding +bpa10x +bpctl_mod +bpqether +bq2415x_charger +bq24190_charger +bq24735-charger +bq27x00_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +broadsheetfb +bsd_comp +bt878 +btcoexist +btcx-risc +btmrvl +btmrvl_sdio +btmtk_usb +btrfs +btsdio +bttv +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +bw-qcam +bypass +c-qcam +c4 +c67x00 +c6xdigio +c_can +c_can_pci +c_can_platform +cachefiles +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 +cb710 +cb710-mmc +cb_pcidas +cb_pcidas64 +cb_pcidda +cb_pcimdas +cb_pcimdda +cc770 +cc770_isa +cc770_platform +cciss +ccm +cdc-acm +cdc-phonet +cdc-wdm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc_subset +cedusb +ceph +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chipreg +chnl_net +ci_hdrc +ci_hdrc_imx +ci_hdrc_msm +ci_hdrc_pci +cifs +cirrus +cirrusfb +clearpad_tm1217 +clip +clk-max77686 +clk-s2mps11 +clk-si5351 +clk-twl6040 +clk-wm831x +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm36651 +cma3000_d0x +cma3000_d0x_i2c +cmac +cmdlinepart +cmtp +cnic +cobra +coda +com20020 +com20020-pci +com90io +com90xx +comedi +comedi_bond +comedi_fc +comedi_parport +comedi_test +configfs +contec_pci_dio +cordic +core +cp210x +cpia2 +cpu-notifier-error-inject +cramfs +crc-ccitt +crc-itu-t +crc32 +crc7 +crc8 +cros_ec +cros_ec_i2c +cros_ec_keyb +cros_ec_spi +cryptd +crypto_null +crypto_user +cryptoloop +crystalhd +cs5345 +cs53l32a +csiostor +ctr +cts +cuse +cw1200_core +cw1200_wlan_sdio +cw1200_wlan_spi +cx18 +cx22700 +cx22702 +cx231xx +cx231xx-dvb +cx2341x +cx24110 +cx24113 +cx24116 +cx24123 +cx25821 +cx25840 +cx82310_eth +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx8800 +cx8802 +cx88xx +cxacru +cxd2099 +cxd2820r +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cxt1e1 +cy8ctmg110_ts +cyapa +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-hwmon +da9052-regulator +da9052_bl +da9052_onkey +da9052_tsi +da9052_wdt +da9055-hwmon +da9055-regulator +da9055_onkey +da9055_wdt +da9063-regulator +da9210-regulator +daqboard2000 +das08 +das08_isa +das08_pci +das16m1 +das6402 +das800 +db9 +dc395x +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +ddbridge +de2104x +decnet +deflate +defxx +denali +denali_dt +denali_pci +des_generic +dgap +dgnc +dgrp +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +diskonchip +diva_idi +diva_mnt +divacapi +divadidd +divas +dl2k +dlci +dlm +dm-bio-prison +dm-bufio +dm-cache +dm-cache-cleaner +dm-cache-mq +dm-crypt +dm-delay +dm-flakey +dm-log +dm-log-userspace +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 +dm1105 +dm9601 +dme1737 +dmfe +dmm32at +dmx3191d +dn_rtmsg +dnet +docg3 +docg4 +drbd +drm +drm_kms_helper +drm_usb +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsa_core +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +dt3000 +dt3155v4l +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-dw2102 +dvb-usb-ec168 +dvb-usb-friio +dvb-usb-gl861 +dvb-usb-gp8psk +dvb-usb-it913x +dvb-usb-lmedm04 +dvb-usb-m920x +dvb-usb-mxl111sf +dvb-usb-nova-t-usb2 +dvb-usb-opera +dvb-usb-pctv452e +dvb-usb-rtl28xxu +dvb-usb-technisat-usb2 +dvb-usb-ttusb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +dvb_usb_v2 +dw_dmac +dw_dmac_core +dw_dmac_pci +dwc2 +dwc2_pci +dwc2_platform +dwc3 +dwc3-omap +dwc3-pci +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e4000 +earth-pt1 +ebt_802_3 +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ec100 +echo +edt-ft5x06 +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efi-pstore +efs +egalax_ts +ehci-platform +ehset +elo +em28xx +em28xx-dvb +em28xx-rc +em_canid +em_cmp +em_ipset +em_meta +em_nbyte +em_text +em_u32 +emc1403 +emc2103 +emc6w201 +emi26 +emi62 +empeg +ems_pci +ems_usb +emu10k1-gp +enc28j60 +enclosure +eni +enic +epic100 +eql +esas2r +esd_usb2 +esi-sir +esp4 +esp6 +et131x +ethoc +evbug +exofs +extcon-adc-jack +extcon-gpio +extcon-max77693 +extcon-max8997 +extcon-palmas +ezusb +f2fs +f71805f +f71882fg +f75375s +f81232 +fakelb +fan53555 +farsync +faulty +fb_ddc +fb_sys_fops +fc0011 +fc0012 +fc0013 +fc2580 +fcoe +fcrypt +fdomain +fealnx +ff-memless +fid +firedtv +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +firewire-serial +fixed +fl512 +fld +fm801-gp +fm_drv +fmc +fmc-chardev +fmc-fakedev +fmc-trivial +fmc-write-eeprom +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +freevxfs +fsa9480 +fscache +ft1000 +ftdi-elan +ftdi_sio +ftl +fujitsu_ts +fusbh200-hcd +g450_pll +g760a +g762 +g_acm_ms +g_cdc +g_dbgp +g_ether +g_ffs +g_hid +g_mass_storage +g_ncm +g_nokia +g_printer +g_serial +g_webcam +g_zero +gadgetfs +gamecon +gameport +garmin_gps +garp +gcm +gdmtty +gdmulte +gdmwm +gen_probe +generic +generic-adc-battery +generic_bl +gf128mul +gf2k +gfs2 +ghash-generic +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +goku_udc +goldfishfb +gp2ap002a00f +gp2ap020a00f +gpio +gpio-74x164 +gpio-addr-flash +gpio-adnp +gpio-adp5520 +gpio-adp5588 +gpio-amd8111 +gpio-arizona +gpio-charger +gpio-da9052 +gpio-da9055 +gpio-dwapb +gpio-fan +gpio-generic +gpio-grgpio +gpio-ir-recv +gpio-janz-ttl +gpio-kempld +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio-pca953x +gpio-pcf857x +gpio-rdc321x +gpio-regulator +gpio-tps65912 +gpio-ts5500 +gpio-viperboard +gpio-vx855 +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +gpio_backlight +gpio_keys +gpio_keys_polled +gpio_mouse +gpio_tilt_polled +grcan +gre +grip +grip_mp +gsc_hpdi +gspca_benq +gspca_conex +gspca_cpia1 +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_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gtco +guillemot +gunze +hamachi +hampshire +hanwang +hci +hci_uart +hci_vhci +hdlc +hdlc_cisco +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdlcdrv +hdpvr +he +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfc_usb +hfcmulti +hfcpci +hfcsusb +hfs +hfsplus +hid +hid-a4tech +hid-apple +hid-appleir +hid-aureal +hid-axff +hid-belkin +hid-cherry +hid-chicony +hid-cypress +hid-dr +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-generic +hid-gyration +hid-holtek-kbd +hid-holtek-mouse +hid-holtekff +hid-huion +hid-icade +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-lenovo-tpkbd +hid-logitech +hid-logitech-dj +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hid-petalynx +hid-picolcd +hid-pl +hid-primax +hid-rmi +hid-roccat +hid-roccat-arvo +hid-roccat-common +hid-roccat-isku +hid-roccat-kone +hid-roccat-koneplus +hid-roccat-konepure +hid-roccat-kovaplus +hid-roccat-lua +hid-roccat-pyra +hid-roccat-ryos +hid-roccat-savu +hid-saitek +hid-samsung +hid-sensor-accel-3d +hid-sensor-als +hid-sensor-gyro-3d +hid-sensor-hub +hid-sensor-iio-common +hid-sensor-magn-3d +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-wacom +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hidp +hih6130 +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hmc5843 +hmc6352 +hopper +hostap +hostap_pci +hostap_plx +hp100 +hpfs +hpilo +hpsa +hptiop +hsi +hsi_char +hso +hsr +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-designware-core +i2c-designware-pci +i2c-designware-platform +i2c-dev +i2c-diolan-u2c +i2c-eg20t +i2c-gpio +i2c-hid +i2c-i801 +i2c-isch +i2c-kempld +i2c-matroxfb +i2c-mux +i2c-mux-gpio +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-nforce2 +i2c-nomadik +i2c-ocores +i2c-parport +i2c-parport-light +i2c-pca-platform +i2c-piix4 +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-xiic +i2o_block +i2o_bus +i2o_core +i2o_proc +i2o_scsi +i40e +i40evf +i5k_amb +i6300esb +i740fb +ib_addr +ib_cm +ib_core +ib_ipoib +ib_iser +ib_isert +ib_mad +ib_mthca +ib_qib +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +ibmaem +ibmpex +icp_multi +ics932s401 +idmouse +idt77252 +ieee802154 +ifb +iforce +igb +igbvf +iguanair +ii_pci20kc +iio-trig-interrupt +iio-trig-periodic-rtc +iio-trig-sysfs +iio_dummy +iio_hwmon +ili210x +ili922x +ili9320 +imon +ims-pcu +imx074 +ina209 +ina2xx +industrialio +industrialio-triggered-buffer +inet_diag +inexio +inftl +initio +input-polldev +int51x1 +intel_vr_nor +interact +interval_tree_test +inv-mpu6050 +io_edgeport +io_ti +ioc4 +iowarrior +ip6_gre +ip6_tables +ip6_tunnel +ip6_vti +ip6t_MASQUERADE +ip6t_NPT +ip6t_REJECT +ip6t_SYNPROXY +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_mh +ip6t_rpfilter +ip6t_rt +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6table_security +ip_gre +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netnet +ip_set_hash_netport +ip_set_hash_netportnet +ip_set_list_set +ip_tables +ip_tunnel +ip_vs +ip_vs_dh +ip_vs_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 +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ipg +iphase +ipip +ipmi_devintf +ipmi_poweroff +ipmi_si +ipmi_watchdog +ipoctal +ipr +ips +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_SYNPROXY +ipt_ULOG +ipt_ah +ipt_rpfilter +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +iptable_security +ipw +ipw2100 +ipw2200 +ipx +ir-jvc-decoder +ir-kbd-i2c +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +ir-rc5-decoder +ir-rc5-sz-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sony-decoder +ir-usb +ircomm +ircomm-tty +irda +irda-usb +irlan +irnet +irtty-sir +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isofs +isp116x-hcd +isp1362-hcd +isp1704_charger +isp1760 +it87 +it913x-fe +itd1000 +itg3200 +iuu_phoenix +ivtv +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iw_nes +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsm +kafs +kalmia +kbtab +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keucr +keyspan +keyspan_pda +keyspan_remote +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +ko2iblnd +kobil_sct +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksocklnd +ksz884x +kvaser_pci +kvaser_usb +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 +leds-88pm860x +leds-adp5520 +leds-atmel-pwm +leds-bd2802 +leds-blinkm +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-lm3530 +leds-lm3533 +leds-lm355x +leds-lm3642 +leds-lp3944 +leds-lp5521 +leds-lp5523 +leds-lp5562 +leds-lp55xx-common +leds-lp8501 +leds-lp8788 +leds-lt3593 +leds-max8997 +leds-mc13783 +leds-ot200 +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pca9685 +leds-pwm +leds-regulator +leds-tca6507 +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-oneshot +ledtrig-timer +ledtrig-transient +legousbtower +lg-vl600 +lg2160 +lgdt3305 +lgdt330x +lgs8gxx +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libceph +libcfs +libcomposite +libcrc32c +libcxgbi +libertas +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libore +libosd +libsas +libsrp +lightning +lineage-pem +linear +lirc_bt829 +lirc_dev +lirc_igorplugusb +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +litelink-sir +lkkbd +llc +llc2 +llog_test +lm25066 +lm3533-als +lm3533-core +lm3533-ctrlbank +lm3533_bl +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 +lov +lp +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp8755 +lp8788-charger +lp8788_bl +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc2978 +ltc4151 +ltc4215 +ltc4245 +ltc4261 +ltv350qv +lustre +lv5207lp +lvfs +lz4 +lz4_compress +lz4hc +lz4hc_compress +m25p80 +m2m-deinterlace +m52790 +m88rs2000 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +ma600-sir +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +mac80211 +mac80211_hwsim +mac802154 +macb +macmodes +macvlan +macvtap +mag3110 +magellan +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +matrix-keymap +matrix_keypad +matrox_w1 +matroxfb_DAC1064 +matroxfb_Ti3026 +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +max1111 +max11801_ts +max1363 +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max2165 +max3100 +max34440 +max517 +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77686 +max77693 +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925-regulator +max8925_bl +max8925_onkey +max8925_power +max8952 +max8973-regulator +max8997 +max8997_charger +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 +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp4725 +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdc +mdc800 +mdio +me4000 +me_daq +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mem2mem_testdev +memstick +mena21_wdt +metro-usb +metronomefb +mfd +mga +mgc +michael_mic +microread +microread_i2c +microtek +minix +mip6 +mite +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mma8450 +mmc_spi +mms114 +mos7720 +mos7840 +moxa +mpc624 +mpoa +mpr121_touchkey +mpt2sas +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +mrst_max3110 +ms_block +msdos +msp3400 +mspro_block +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt29f_spinand +mt312 +mt352 +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtd_dataflash +mtdblock +mtdblock_ro +mtdoops +mtdram +mtdswap +mtip32xx +mtouch +multipath +multiq3 +mv88e6060 +mv88e6xxx_drv +mv_u3d_core +mv_udc +mvmdio +mvsas +mvumi +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxl111sf-demod +mxl111sf-tuner +mxl5005s +mxl5007t +mxser +myri10ge +n_hdlc +n_r3964 +n_tracerouter +n_tracesink +nand +nand_bch +nand_ecc +nand_ids +nandsim +natsemi +nau7802 +navman +nbd +nci +ncpfs +nct6775 +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netlink_diag +netprio_cgroup +netrom +netxen_nic +newtonkbd +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 +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nf_synproxy_core +nf_tables +nf_tables_arp +nf_tables_bridge +nf_tables_ipv4 +nf_tables_ipv6 +nfc +nfc_digital +nfcsim +nfcwilink +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nfs +nfs_acl +nfs_layout_nfsv41_files +nfsd +nfsv2 +nfsv3 +nfsv4 +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 +nft_limit +nft_log +nft_meta +nft_nat +nft_rbtree +nft_reject_ipv4 +nftl +ngene +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_at_ao +ni_atmio +ni_atmio16d +ni_labpc +ni_labpc_pci +ni_pcidio +ni_pcimio +ni_tio +ni_tiocmd +nicstar +nilfs2 +niu +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 +ns558 +ns83820 +ntc_thermistor +ntfs +null_blk +nvidiafb +nvme +nxt200x +nxt6000 +obdclass +obdecho +objlayoutdriver +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stack_o2cb +ocfs2_stack_user +ocfs2_stackglue +ocrdma +of_mmc_spi +ofpart +ohci-platform +old_belkin-sir +olpc_apsp +omfs +omninet +onenand +opencores-kbd +openvswitch +opticon +option +or51132 +or51211 +orinoco +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +osc +osd +osdblk +osst +oti6858 +output +ov2640 +ov5642 +ov6650 +ov7670 +ov772x +ov9640 +ov9740 +overlayfs +oxu210hp-hcd +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +palmas-regulator +panel +parkbd +parport +parport_ax88796 +pata_ali +pata_amd +pata_arasan_cf +pata_artop +pata_atiixp +pata_atp867x +pata_cmd640 +pata_cmd64x +pata_cs5520 +pata_cs5530 +pata_cs5536 +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_sc1200 +pata_sch +pata_serverworks +pata_sil680 +pata_sl82c105 +pata_triflex +pata_via +pc300too +pc87360 +pc87427 +pcbc +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_can +pch_phub +pch_uart +pch_udc +pci +pci-stub +pci200syn +pcips2 +pcl711 +pcl724 +pcl726 +pcl730 +pcm3724 +pcmad +pcmda12 +pcmmio +pcmuio +pcnet32 +pcrypt +pcwd_pci +pcwd_usb +pda_power +pdc_adma +peak_pci +peak_usb +penmount +percpu_test +pfuze100-regulator +phantom +phison +phonet +phram +phy-exynos-dp-video +phy-gpio-vbus-usb +phy-isp1301 +phy-rcar-usb +phy-samsung-usb +phy-samsung-usb2 +phy-samsung-usb3 +physmap +physmap_of +pixcir_i2c_ts +pktcdvd +pktgen +pl2303 +pl330 +plat-ram +plat_nand +platform_lcd +plip +plusb +pluto2 +plx_pci +pm2fb +pm3fb +pm80xx +pmbus +pmbus_core +pmc551 +pmcraid +pn533 +pn544 +pn544_i2c +pn_pep +poc +port100 +powermate +ppdev +ppp_async +ppp_deflate +ppp_mppe +ppp_synctty +pppoatm +pppoe +pppox +pps-gpio +pps-ldisc +pps_core +pps_parport +pptp +prism2_usb +ps2mult +psmouse +psnap +ptlrpc +ptp +pvrusb2 +pwc +pwm-pca9685 +pwm_bl +pxa27x_udc +qcaux +qcserial +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qmi_wwan +qnx4 +qnx6 +qt1010 +qt1070 +qt2160 +quatech2 +quota_tree +quota_v1 +quota_v2 +qxl +r128 +r592 +r6040 +r815x +r8169 +r8187se +r8188eu +r8192e_pci +r8192u_usb +r820t +r852 +r8712u +r8a66597-hcd +r8a66597-udc +radeon +radeonfb +radio-i2c-si470x +radio-keene +radio-ma901 +radio-maxiradio +radio-mr800 +radio-shark +radio-si4713 +radio-tea5764 +radio-timb +radio-usb-si470x +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +rbd +rbtree_test +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-em-terratec +rc-encore-enltv +rc-encore-enltv-fm53 +rc-encore-enltv2 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-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-tbs-nec +rc-technisat-usb2 +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-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rc5t583-regulator +rcar_vin +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +redboot +redrat3 +reed_solomon +reiserfs +remoteproc +renesas_usbhs +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +rio500 +rivafb +rj54n1cb0c +rmd128 +rmd160 +rmd256 +rmd320 +rndis_host +rndis_wlan +rocket +romfs +rose +rotary_encoder +rp2 +rpcsec_gss_krb5 +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt61pci +rt73usb +rtc-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-as3722 +rtc-bq32k +rtc-bq4802 +rtc-da9052 +rtc-da9055 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1742 +rtc-ds2404 +rtc-ds3232 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-hid-sensor-time +rtc-isl12022 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max77686 +rtc-max8907 +rtc-max8925 +rtc-max8997 +rtc-max8998 +rtc-mc13xxx +rtc-moxart +rtc-msm6242 +rtc-palmas +rtc-pcf2123 +rtc-pcf2127 +rtc-pcf50633 +rtc-pcf8523 +rtc-pcf8563 +rtc-pcf8583 +rtc-pl030 +rtc-pl031 +rtc-r9701 +rtc-rc5t583 +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 +rtl8180 +rtl8187 +rtl8188ee +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192se +rtl8723-common +rtl8723ae +rtl8723be +rtl8821ae +rtl_pci +rtl_usb +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtlwifi +rts5139 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rxkad +s1d13xxxfb +s2255drv +s2io +s3fb +s526 +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s626 +s6e63m0 +s921 +saa6588 +saa6752hs +saa7115 +saa7127 +saa7134 +saa7134-dvb +saa7134-empress +saa7146 +saa7146_vv +saa7164 +saa717x +saa7706h +safe_serial +salsa20_generic +samsung-keypad +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 +sbe-2t3e3 +sbp_target +sbs-battery +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_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +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_tgt +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_srp +sctp +sdhci +sdhci-pci +sdhci-pltfm +sdhci-pxav2 +sdhci-pxav3 +sdio_uart +sdr-msi3101 +seed +sep_driver +seqiv +ser_gigaset +serial2002 +serio_raw +sermouse +serpent_generic +serport +serqt_usb2 +ses +sfc +sh_eth +sh_mobile_ceu_camera +sh_mobile_csi2 +sh_veu +shark2 +sht15 +sht21 +si21xx +si4713-i2c +si476x-core +sidewinder +sierra +sierra_net +sil164 +sir-dev +sis190 +sis5595 +sis900 +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_of_platform +sja1000_platform +skd +skel +skfp +skge +sky2 +sl811-hcd +slcan +slip +slram +sm501 +sm501fb +sm7xxfb +sm_common +sm_ftl +smb347-charger +smm665 +smsc47b397 +smsc47m1 +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +smscufx +smsdvb +smsmdtv +smssdio +smsusb +soc_camera +soc_camera_platform +soc_mediabus +soc_scale_crop +softdog +softing +solos-pci +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-dw +spi-dw-midpci +spi-dw-mmio +spi-gpio +spi-lm70llp +spi-oc-tiny +spi-pl022 +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-sc18is602 +spi-tle62x0 +spi-topcliff-pch +spi-xcomm +spi_ks8995 +spidev +squashfs +sr9700 +ssb +ssb-hcd +ssd1307fb +ssfdc +sst25l +sstfb +ssu100 +st +st1232 +st_accel +st_accel_i2c +st_accel_spi +st_drv +st_gyro +st_gyro_i2c +st_gyro_spi +st_magn +st_magn_i2c +st_magn_spi +st_pressure +st_pressure_i2c +st_pressure_spi +st_sensors +st_sensors_i2c +st_sensors_spi +starfire +stb0899 +stb6000 +stb6100 +ste_modem_rproc +stex +stinger +stir4200 +stk1160 +stkwebcam +stmmac +stmpe-keypad +stmpe-ts +stowaway +stp +streamzap +stv0288 +stv0297 +stv0299 +stv0900 +stv090x +stv6110 +stv6110x +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +svcrdma +svgalib +sx8 +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink_gt +synclinkmp +syscopyarea +sysfillrect +sysimgblt +sysv +t1pci +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +tc3589x-keypad +tca6416-keypad +tca8418_keypad +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bic +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcrypt +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-kstrtox +test-string_helpers +test_power +tg3 +tgr192 +thmc50 +ti-adc081c +ti_dac7512 +ti_usb_3410_5052 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timb_dma +timberdale +timblogiw +timbuart +timeriomem-rng +tipc +tlan +tm6000 +tm6000-dvb +tmdc +tmiofb +tmp006 +tmp102 +tmp401 +tmp421 +tmscsim +toim3232-sir +touchit213 +touchright +touchwin +tpci200 +tpm-rng +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm_i2c_stm_st33 +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-charger +tps65090-regulator +tps65217 +tps65217-regulator +tps65217_bl +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +tranzport +tridentfb +ts2020 +ts_bm +ts_fsm +ts_kmp +tsc2005 +tsc2007 +tsc40 +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +tsl4531 +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tuner_it913x +tunnel4 +tunnel6 +turbografx +tvaudio +tveeprom +tvp5150 +tw9910 +twidjoy +twl6040-vibra +twofish_common +twofish_generic +typhoon +u132-hcd +u_ether +u_rndis +u_serial +uartlite +ubi +ubifs +ucd9000 +ucd9200 +udc-core +udf +udl +udp_diag +ueagle-atm +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_sercos3 +uli526x +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 +usb-serial-simple +usb-storage +usb3503 +usb8xxx +usb_8dev +usb_debug +usb_f_acm +usb_f_ecm +usb_f_ecm_subset +usb_f_eem +usb_f_mass_storage +usb_f_ncm +usb_f_obex +usb_f_phonet +usb_f_rndis +usb_f_serial +usb_f_ss_lb +usb_gigaset +usb_wwan +usbatm +usbdux +usbduxfast +usbduxsigma +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmisc_imx +usbmon +usbmouse +usbnet +usbserial +usbsevseg +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +uwb +v4l2-common +v4l2-dv-timings +v4l2-int-device +v4l2-mem2mem +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vexpress +vgastate +vgg2432a4 +vhci-hcd +vhost +vhost_net +vhost_scsi +via +via-rhine +via-sdmmc +via-velocity +via686a +videobuf-core +videobuf-dma-contig +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videobuf2-core +videobuf2-dma-contig +videobuf2-memops +videobuf2-vmalloc +videodev +viperboard +viperboard_adc +virtio-rng +virtio_pci +virtio_scsi +virtual +visor +vivi +vlsi_ir +vmac +vme +vme_pio2 +vme_user +vme_vmivme7805 +vmk80xx +vmwgfx +vmxnet3 +vp27smpx +vringh +vsock +vsxxxaa +vt1211 +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +w1-gpio +w1_bq27000 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1_smem +w1_therm +w35und +w5100 +w5300 +w6692 +w83627ehf +w83627hf +w83781d +w83791d +w83792d +w83793 +w83795 +w83l785ts +w83l786ng +w90p910_ts +w9966 +wacom +wacom_i2c +wacom_w8001 +walkera0701 +wanxl +warrior +wcn36xx +wdt_pci +whc-rc +whci +whci-hcd +whiteheat +wil6210 +wimax +winbond-840 +wire +wishbone-serial +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wlcore +wlcore_sdio +wlcore_spi +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x-ts +wm831x_backup +wm831x_bl +wm831x_power +wm831x_wdt +wm8350-hwmon +wm8350-regulator +wm8350_power +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-regulator +wp512 +wusb-cbaf +wusb-wa +wusbcore +x25 +x25_asy +x_tables +xc4000 +xc5000 +xcbc +xen-blkback +xen-evtchn +xen-fbfront +xen-gntalloc +xen-gntdev +xen-kbdfront +xen-netback +xen-privcmd +xen-tpmfront +xen_wdt +xenfs +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-enet +xgene-rng +xgifb +xgmac +xilinx_uartps +xillybus_core +xillybus_of +xillybus_pcie +xor +xpad +xprtrdma +xsens_mt +xt_AUDIT +xt_CHECKSUM +xt_CLASSIFY +xt_CONNSECMARK +xt_CT +xt_DSCP +xt_HL +xt_HMARK +xt_IDLETIMER +xt_LED +xt_LOG +xt_NETMAP +xt_NFLOG +xt_NFQUEUE +xt_RATEEST +xt_REDIRECT +xt_SECMARK +xt_TCPMSS +xt_TCPOPTSTRIP +xt_TEE +xt_TPROXY +xt_TRACE +xt_addrtype +xt_bpf +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_conntrack +xt_cpu +xt_dccp +xt_devgroup +xt_dscp +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_iprange +xt_ipvs +xt_length +xt_limit +xt_mac +xt_mark +xt_multiport +xt_nat +xt_nfacct +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_realm +xt_recent +xt_sctp +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_tcpudp +xt_time +xt_u32 +xtkbd +xts +xusbatm +xz_dec_test +yam +yealink +yellowfin +yurex +zaurus +zd1201 +zd1211rw +zforce_ts +zhenhua +zl10036 +zl10039 +zl10353 +zl6100 +zlib +zr364xx +zram +zte_ev --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/armhf/generic +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/armhf/generic @@ -0,0 +1,16687 @@ +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/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/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/atm/suni 0xaf3f00cd suni_init +EXPORT_SYMBOL drivers/bcma/bcma 0xb3c7f39e 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 0x01d0009e pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x0744efd0 paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0x0a9a9c94 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0x2cbac21f pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0x417364d9 pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0x45df56a0 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x785003fa pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0x8821939e pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x91153a62 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xca3f1b84 pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0xdcef7d3c pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xf382d036 pi_write_regr +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/dma/dw/dw_dmac_core 0x4b74b1ba dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x599562e9 dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xbfd18921 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xc4aa42d8 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xcf84a5fd dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xfa7bbb02 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/pl330 0x0fb55a61 pl330_filter +EXPORT_SYMBOL drivers/edac/edac_core 0xc1ce0003 edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04dd92ce fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x13edf1eb fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1a85e087 fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2d8d7997 fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3156ef9c fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3e304393 fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3f60125a fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4d5d4eca fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5673913b fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0x57a74606 fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5a9917c8 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65dfb5ee fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x797f03cd 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 0x872faf1a fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x88da0da5 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8bf35f51 fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9108c5e7 fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x99de991b fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9b604272 fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa6aa0425 fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb2d17eb5 fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb56fedbe fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xbcbc92fa fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0xbf0a2795 fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe46529e7 fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf7904d83 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0xfb21a6c0 fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0xfe3c4c09 fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/fmc/fmc 0x18f7dee8 fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x20324689 fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0x324e8141 fmc_show_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x35f6a51e fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0x7ed41dd6 fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0x8a22b9b4 fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x955431d3 fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0x99367f10 fmc_free_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xbe837fc4 fmc_driver_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0xc6b204c8 fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0xd4dc060c fmc_find_sdb_device +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00025916 drm_mode_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00667d8a drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x01d8e08b drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x026c0d6b drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04ac2042 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04ffb870 drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0x055e4188 drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x05c9e269 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x05d921b4 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x096151dc drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b1de11b drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0bb1c89e drm_get_last_vbltimestamp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d7eab97 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0da833ff drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0dc740dc drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e11eae1 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ec527fc drm_flip_work_commit +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 0x12885d32 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12c6276a drm_buffer_read_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12ee5fc6 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x139d8841 drm_get_encoder_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13cdaadb drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x142b8b35 drm_buffer_copy_from_user +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14c97c7f drm_prime_destroy_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1770962f drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x189f6401 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19df171e drm_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19e44324 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a8a9ffe drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b04cce9 drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b738bfb drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f0c770a drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2196c065 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24c0053e drm_platform_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28c3822b drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29650f19 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a1bc31d drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a942ab2 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2b043f78 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d80be4d drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e6f9096 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2fff0b3d drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3111aa50 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x346127a7 drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34aa118e drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x35e7124c drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x35ffe1d2 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x364a73d7 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36f91ef3 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0x377a5efd drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38924162 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38c8ed2c drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x392aa733 drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3972e510 drm_core_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ae7b2d0 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b05d0e7 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3bf6e401 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3cd24786 drm_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d4b8108 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb63ae4 drm_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eeb7ed2 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x40821e2a drm_core_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41988de1 drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41b24d55 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x42b55fc0 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43384bd9 drm_buffer_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43bec02e drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x45235fbe drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x46ebd772 drm_prime_init_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x498dcb5e drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49b1ede1 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49fabf0d drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ab5e740 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b7fa589 drm_vma_offset_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e6a0bf5 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e77aac7 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50d94b1e drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x525fb687 drm_sysfs_connector_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5304fddc drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54334aed drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x55131e84 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x568a602d drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x585bee0d drm_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59d26007 drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a268d54 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b755a08 drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c06ce24 drm_bridge_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x606e800f drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6090be61 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61211f63 drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61300883 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63ee3465 drm_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0x640d4623 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x647cdd13 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x652dbb5b drm_bridge_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66803841 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x677fc863 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a1747ba drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b031aec drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b6d7375 drm_timestamp_precision +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6c9952e7 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cb0d417 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cee2e42 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6dd2b4aa drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f938100 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x715de6d3 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x724cd21f drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x73f09221 drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7648ffd8 drm_dev_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x76aad88a drm_get_connector_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a4e7297 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ac09ed8 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b7ddbdb drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ed05e6c drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f3e6f3f drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x80c1c7f0 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x812c87ea drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81ba930c drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x83562ac1 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x857c7d4c drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x877de5e4 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89e2263c drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b3c1a57 drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b702028 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b9f6b29 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8bb0e057 drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c192604 drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8cc83fd7 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8dfb019d drm_buffer_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ea0ede0 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f7df3a7 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91705292 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9228d47a drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x942628ba drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95096801 drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95fcdccd drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9633a5dc drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9745d638 drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c2b33e9 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d70fc2a drm_rnodes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9eb6b663 drm_mode_connector_detach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9eccfe56 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9efc26a3 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9ff5b23c drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0d3739a drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1f4e9e6 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa2494f5a drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa336b7ba drm_core_reclaim_buffers +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa36896f3 drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa49f1397 drm_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5dbd572 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa766445e drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa80f23d7 drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa88a41a4 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa1a6e72 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac1724c6 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae80eafe drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafb0cb6f drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb2339b91 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb55ddaa8 drm_sysfs_connector_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb572a9f0 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5f0b0bf drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb72437ca drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb95beb55 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9658b0c drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba92695c drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbac5394e drm_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe001c53 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe7f7431 drm_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbeb0e046 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf185d05 drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfc90154 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4000f9f drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc414c422 drm_vblank_offdelay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7fa6c29 drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc8ac9663 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb2ceb4d drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb83bced drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcc4a6411 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcc51a565 drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd6392fe drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf9c4163 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1c65029 drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd638c00e drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd6829d2f drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd6928441 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9490e70 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb162931 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb5a5852 drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbd88b98 drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde62d075 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdff4db13 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2ef97e4 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5f4e839 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe67d0b07 drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6f46e6e drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe860071e drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb08650b drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec90a546 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee0865c6 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef61a6d6 drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef6473ae drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xefdf9b69 drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf08d712a drm_mode_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf151e4c4 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1fe965e drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf446a0e2 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf59f1d24 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf5b0fd11 drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf67c9ae6 drm_global_mutex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf75ff410 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7cf26be drm_core_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf80ab849 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9be1ca4 drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb497216 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd063935 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe4a68c7 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff1bc1af drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x07f67c1a drm_dp_aux_unregister_i2c_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0a729cd3 drm_dp_aux_register_i2c_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0efc978b drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x10c64f9c drm_fb_helper_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 0x1c146406 i2c_dp_aux_add_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x21160603 drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34f0d1eb drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x36bfc275 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x39389539 drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x404c26f7 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x421bbcb2 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x484b9a9d drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4c08044d drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4cbdb7fb drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x61a6ed44 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6bf11343 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6f32c39c drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x703f3ef2 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7773aadd drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x80b35076 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 0x85ed2b2e drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8d26b534 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x920a8ce8 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x92383523 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9956c621 drm_fb_helper_restore_fbdev_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9f213f75 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 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb0fa6801 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb1708562 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb385e206 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb4326bd4 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb4c30455 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb614d0d0 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcdb1f432 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd181daca drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd43c1969 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe19c21a4 drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe42d566d drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeb3c79b1 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf0200d68 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf4916b0c drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf9c4e89f drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfddcd083 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x5bfb802c drm_get_usb_dev +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0xb923eab8 drm_usb_init +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0xe1abb367 drm_usb_exit +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x00134518 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x06d3f633 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0f7e9046 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x115ffd75 ttm_bo_kmap +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 0x18d78a5c ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x190c0f6f ttm_bo_del_sub_from_lru +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 0x32f3358a ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3dc9b59d ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x441a2678 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4628b006 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x463850e5 ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x500ac8f1 ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x570d5b1e ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5854dcd9 ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5bfa60f3 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5cf59609 ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5d0fca3e ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5ffb6368 ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x61422bc4 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x67b1d568 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x68af2a50 ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6b393b53 ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6c0ec969 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x70623a23 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x75377d66 ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8090cf7b ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x815ea550 ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8325e213 ttm_bo_kunmap +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 0x87c83dba ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x880a15ad ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8f07a6f5 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x953a91ce ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9650b7ac ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x98ca4143 ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9fa1b8c9 ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaa7998f5 ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xad59d163 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb6f640df ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb9cea824 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbaad7a07 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbbb0afc1 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbc4d839b ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbd2149d5 ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc30503ac ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc63c1028 ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc968d68f ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcd648ade ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce6e43a8 ttm_base_object_lookup_for_ref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd66dd4b8 ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd9c44e47 ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xda5a3aae ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdf310fd1 ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdfc60002 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe36934c9 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xeef0c90c ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xefc4df0d ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf1926cf1 ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf84b1b2a ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfa3955f8 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfcda22fa ttm_bo_unmap_virtual +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 0x309b1155 host1x_client_register +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x77b80cd1 host1x_client_unregister +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xd3c9e30d host1x_driver_unregister +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xd51e1707 host1x_syncpt_wait +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xedfdad41 host1x_driver_register +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 0x2914937c 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 0x391959f2 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xd5cdc043 i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xfbd2bb16 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x063a3eb1 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x5ab1d64d i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0xc8a65da8 amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x2524fda0 st_accel_common_probe +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xfce98844 st_accel_common_remove +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x62614c53 hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x6d866452 hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x8f2b3b06 hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x92a09e57 hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xdafb4092 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x870d4a00 hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xb524de62 hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x0434a687 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x074d7047 st_sensors_trigger_handler +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x0bde6fb8 st_sensors_sysfs_get_sampling_frequency +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x1de062be st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x1ecdd583 st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x4a0f77e8 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x52de9082 st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x56a98ba6 st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x8e34b9ba st_sensors_sysfs_set_sampling_frequency +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x9c1b892e st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xa82e171f st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb9236105 st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xd14c80f3 st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xd1eb3e3b st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xd312ea0a st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xf4c69c6b st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x0de404f7 st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0x92688c1b st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x6b7e98db st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xf36539fa st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x3143d621 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xb446b4da adis_enable_irq +EXPORT_SYMBOL drivers/iio/industrialio 0x0712d3eb iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x22e010a2 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x34c08fad iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0x3f38a8b8 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x40521ad2 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x5cfde8a8 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x6bbee988 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x73c1d25a iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x74a5f65f iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x8d107c37 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0xaf0558ad iio_buffer_read_length +EXPORT_SYMBOL drivers/iio/industrialio 0xb5b6d512 iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xbb9964dd iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0xc4182091 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0xc9814c17 iio_buffer_show_enable +EXPORT_SYMBOL drivers/iio/industrialio 0xd1fcfc03 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0xd39805b5 iio_buffer_register +EXPORT_SYMBOL drivers/iio/industrialio 0xde6b8b2f iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe07d93ae iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0xe808cc14 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0xeca926cc iio_buffer_write_length +EXPORT_SYMBOL drivers/iio/industrialio 0xf6d04940 iio_buffer_store_enable +EXPORT_SYMBOL drivers/iio/industrialio 0xf8a2e5a6 iio_buffer_unregister +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x2c6f8a07 iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x9fe87321 iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x49c8b104 iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x92fa6c32 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x70b5fe19 st_magn_common_remove +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xa7b14b1d st_magn_common_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x1f7aaa23 st_press_common_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x609b757f st_press_common_remove +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x049ace30 rdma_addr_find_smac_by_sgid +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x04b8b6d7 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1c3c0ad3 rdma_addr_size +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x273f4cca rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x446fd7c9 rdma_addr_find_dmac_by_grh +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 0xdfffee4e rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x01d7ce28 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0fd36eff ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x29b0d7ed ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x4777fd02 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x59eea95c ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x6778a7e6 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x6a958f5e ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x76dd702a ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x786ca749 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x843bd0c7 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x8fc7b102 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb95191ba ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xcbd2874b ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd5c622f6 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xde4d6a5c ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe04805fb ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf607c0d5 cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0430efd9 ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x06c82fcf mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x078575fa ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x09237b7e ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0cb9f2e7 ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x136c8c9c ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x13fe4ab9 ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x14f84918 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x15e4f158 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x171f99f1 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x19110d14 ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1ca93b64 ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x20cd9eaa ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x25b576a1 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x27522839 ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x276ebf49 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2cd19e36 ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ddeb939 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x340d4c1d ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3f5dce97 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x41557338 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x417f1d70 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4394411b ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x48520470 ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x487389df ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4a3ffe34 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4ccdfc07 ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4e3b60ee ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4fec2c78 ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x517b3dc0 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x520b2638 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x530cc3ca ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5413a5e4 ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x546e2727 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x55130d91 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x551cffea ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x569baa57 ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x598f1623 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x60c55753 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x632745e2 ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x635992f9 ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x64e5ccbf ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6ad9f9e3 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6d2d472c ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e030e26 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7102cc9d ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x76c548a5 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7c42e9bc ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7ca5518d ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7f5f034b ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8177dbce ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x83f149fb ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x87456aa2 ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8ced61ee ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8d0dfb4d ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x901ef484 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x924f733d ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x98cedb51 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa0166b62 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa0b87ca1 ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa2bb5198 ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab3a1783 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xac217df9 rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaf84f0ff ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1a312e1 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb7a0ed2a ib_resolve_eth_l2_attrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb8192644 ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb85cad10 ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbaeedb9a ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc014065c ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc0c6e752 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc3848521 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc96b3167 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd7326003 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd7efb2ba ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe1b65cd1 rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5c9fa68 ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe7dfee1d ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe818b63b ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf41dc2a1 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf7f5b5c3 ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfb4e2497 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfee94b2d ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x0db28401 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x1aae9932 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x35e62bfa ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x3a358b6c ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x3fc485b7 ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x51ca3b50 ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x73c6733f ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x93e3b8c6 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x946d5d27 ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xa86bbc30 ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xb112c8f0 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xf628acd4 ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xf6aad04d ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x22f07253 ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x3152b4d2 ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x81770ce2 ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x940ffd55 ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9d70fd29 ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9e7aad54 ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xa7d002dc ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xa7e1cdd5 ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xd8991e6d ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xddc330e7 ib_sa_pack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xde9e1b2c ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x2569d757 ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x52a6ce77 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x7971c00e ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xe350f2aa ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x1a1a5d6e iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6aa12a9c iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x8a72a3d9 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x8ee74e56 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xbabdfaef iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xdc82cdde iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xe18d27eb iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xeb901f0d iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x02faf2c0 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x11b497a9 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1ad2d663 rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x28a35d55 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x35e504ca rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3691e171 rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x477778e2 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x586f049c rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x603e3d42 rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7419507f rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x79d3b79b rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7b776db2 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x821168e7 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x90791cd3 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9a6ba318 rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa9733322 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xad4e07ad rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xbc5cb1e6 rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc1bc5c51 rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc1d6975b rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xfaedc545 rdma_bind_addr +EXPORT_SYMBOL drivers/input/gameport/gameport 0x09ed470a __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x11ac0d8e gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x13e13e88 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0x140e04aa gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x31574e34 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x77ce314c gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xa790968e gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0xb66747c8 gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0xfc232a1a gameport_unregister_driver +EXPORT_SYMBOL drivers/input/input-polldev 0x09adca36 input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x914f14d7 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xd3f92ca2 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xf1a1da7f input_free_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x7e03fc14 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x6683756e ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0x671aeac6 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x67b5b7f0 ad714x_remove +EXPORT_SYMBOL drivers/input/misc/ad714x 0xe2da2318 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 0xc8c8a50b cma3000_init +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/sparse-keymap 0x05682706 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x3fe9af44 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x45f658cf sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0x56834fba sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0x5d2524a3 sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0xecca138c sparse_keymap_setup +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x49baf49f ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x95721f63 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 0x181f8700 capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x1fd05352 capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x26036c23 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 0x33f536a3 capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x3b03aa79 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x47d3fc51 capi_info2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x54f33ad1 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7a33596c capi20_get_serial +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7e6f1307 capi20_get_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x88555125 capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f699913 capilib_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9d19d9f7 capi20_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 0xc532511f 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 0xed061606 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xefa49c61 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x1f1c58b5 b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x2ac2c1a9 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x44336e81 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x495ca653 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x4bac1ed4 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x5706a56d b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x6b72d636 avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x79ae4949 b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x808be11c b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x92843838 b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x9ec8d306 b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xa209f37e b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xbae337a2 b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xbbe7d2ff b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc0520eb5 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 0x099e27b9 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x38cf6d62 b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x6ab7ff55 b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x6bcf8cd5 t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x787cb2f0 b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x833804be b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xbae0d677 b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xe62af585 b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xea97f71f b1dma_release_appl +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 0x18820cc1 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xa2250600 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xb3b5e8d7 mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xbcb0aed4 mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x038f1fdc mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x5cb9a69d 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 0x7f29ce36 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xd0c2bdb6 hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xe227344e FsmRestartTimer +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 0xff2db2cf FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x042d21d7 isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x419ad711 isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x6398c3df isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x8ca6f0e8 isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xe89097e4 isac_setup +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x456d5bb2 register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xb60d1f3f isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xd918804c 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 0x04d1fed8 mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x058c355c recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x08cac924 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1a230dd9 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x38a4d342 dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3c738368 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3dbd18ad recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3faf8350 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x423b5352 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4607e21c mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x47466938 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4f3a6688 bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x54451388 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x58fd8775 create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x614ede30 mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6530c5b8 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7cd89648 bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7ed74136 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x82ff827c mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x96309324 mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc723b142 mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xdd4a3017 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xde645fb3 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe87943cf mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf60a3dc9 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf71d43b9 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xfc684862 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/mailbox/omap-mailbox 0x0b33a041 omap_mbox_register +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0x396b2219 omap_mbox_enable_irq +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0x43052ed8 omap_mbox_disable_irq +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0x5fe685c8 omap_mbox_msg_send +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0x7a24d3d3 omap_mbox_restore_ctx +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0xa9ecf617 omap_mbox_put +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0xd37b9276 omap_mbox_get +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0xdbc75fe3 omap_mbox_unregister +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0xff711efe omap_mbox_save_ctx +EXPORT_SYMBOL drivers/md/bcache/bcache 0x09f05aba closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0x0c8b7ca8 closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0x2368effc closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0x5f49a99c closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7f33d83b closure_trylock +EXPORT_SYMBOL drivers/md/bcache/bcache 0xbd08a38f __closure_lock +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe3c17af1 __closure_wake_up +EXPORT_SYMBOL drivers/md/dm-log 0x11a08bb9 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0x893909ed dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0xc715f89e dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0xd7b9dcf0 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x0fd0d5f0 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x130808d2 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x374106ba dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0x7ed04243 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0x9a5d0f1b dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0xd0e6fd95 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/raid456 0x1a85d773 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x18778f33 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x1bf0b11f flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x3f4d449f flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x3fa65019 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x5870374d flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x5b537a3b flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x6796c437 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x8161b27c flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xae96382d flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xb4e3f176 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xd9a99d47 flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xe205b868 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xfd267355 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/btcx-risc 0x495e4b0c btcx_calc_skips +EXPORT_SYMBOL drivers/media/common/btcx-risc 0x94ca4970 btcx_riscmem_alloc +EXPORT_SYMBOL drivers/media/common/btcx-risc 0xad2fe38b btcx_sort_clips +EXPORT_SYMBOL drivers/media/common/btcx-risc 0xb003dcdf btcx_riscmem_free +EXPORT_SYMBOL drivers/media/common/btcx-risc 0xc368f8e6 btcx_align +EXPORT_SYMBOL drivers/media/common/btcx-risc 0xcda0ded2 btcx_screen_clips +EXPORT_SYMBOL drivers/media/common/cx2341x 0x17018611 cx2341x_handler_set_busy +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 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x5b88faf6 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x942b7d90 cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0x94ba82c6 cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0xbddb7fde 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 0xca40080f cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x52c1fd59 tveeprom_read +EXPORT_SYMBOL drivers/media/common/tveeprom 0xf068dd50 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0a5cb8b3 dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x17523ce7 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1818fb6d dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1d2b6e40 dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x21de4ae1 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2ab0e4cf dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2e0a0e09 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2f963c63 dvb_register_adapter +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 0x3966ca26 dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5311aaec dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x53956a50 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5e10a745 dvb_generic_ioctl +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 0x7b3d5015 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7e9da08c dvb_unregister_frontend +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 0x900efbc6 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x910a4ba8 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x96263f30 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9c19040b dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9c6a0170 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa1f51a36 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa6b11f1c dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa7a43eba dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb6223c61 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xbd392d58 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc9f48b5d dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xcc622f21 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd0a5625a dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd68a099e timeval_usec_diff +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 0xe5559558 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xed39b331 dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf48116c6 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf528859e dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-frontends/a8293 0xcf3818ea a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0x46d4e13b af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9033 0xef6551b3 af9033_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x13592c63 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x08230fe5 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x341dcd12 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x5b4e08b5 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x5e106aea au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x7f2e0964 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x98f4705b au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xb65cb358 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xd49a4af4 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xd672f431 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x9e33b4ba au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0x1be84781 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x4cc9ad04 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0x171b88ed cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0x08b110ea cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x81dad168 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xdf1e39f5 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0xc74c95c7 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xaa4750ae cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xf59940c7 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0xeabdd5c9 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x425a68f3 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x80e87986 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x94ec2066 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xda5b688c dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xfea492fa dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x09befbd2 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x0aaaf868 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x21bb319e dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x2e1004d4 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x34566745 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x7269d5d9 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x7fd7dc33 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x84e3eb0a dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xa0a5abb2 dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xa89d6b3e dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xbb5a56fa dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xc029f928 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xc8c73201 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xf4ad9b68 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xfd35500a dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x5f953636 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x12b42fe5 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x2c514b11 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x6b487caf dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x82c3a775 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xc3abb6f8 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xe284c81c dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x0ed660e7 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x124a9d21 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x9894c66d dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x9f222c0f dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x0655dd2d dib7000p_get_agc_values +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x0dd6ca22 dib7000p_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x32829240 dib7000p_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x455a8b5f dib7090_get_adc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x456537d6 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x7f53cd28 dib7000p_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x8090aa42 dib7000p_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xa0feb09f dib7000p_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xb07fff73 dib7000p_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xb420ca91 dib7090_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xb8532b89 dib7000p_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xb8a64ff8 dib7000pc_detection +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xcdcbb1d7 dib7000p_update_pll +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xcf4050b4 dib7090_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xe1fbb105 dib7090_slave_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xf7aec163 dib7000p_set_agc1_min +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x0747ab0e dib8096p_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x0a650694 dib8000_pwm_agc_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x318d14ee dib8000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x3a596c97 dib8000_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x5f805518 dib8000_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x5fb37a79 dib8000_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x62a5367e dib8000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x7d706445 dib8000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x8b9a54cd dib8000_remove_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x8ea471f1 dib8000_get_adc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x8f0154b4 dib8000_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x9c1bacfd dib8096p_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xa19ea940 dib8000_update_pll +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xa7871d14 dib8000_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xababcf5b dib8000_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xc60c4163 dib8000_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xea6b5deb dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xecb05ece dib8000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xfcbc3a38 dib8090p_get_dc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x863f4f03 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xb4926abb dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xd7ed727d dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xfc3f800d dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xff4bb31e dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x8dc12a8a drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0xf393dfe9 drxd_config_i2c +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0xf24433e8 drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0x939adc3f ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0xb61de89a dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0xd4ab451b ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x48318cc6 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0xe7a88c83 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x15619c49 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/it913x-fe 0xce46b7d0 it913x_fe_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0x60b98f03 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0x2cac69f4 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0x6ac25b84 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0xaff00f92 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0xa91bfc86 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0x09f75a80 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x353f0e8b lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x07bc2f2b lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x9c7d92ef lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0xeb3d2be0 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0x03037b77 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0x09337c7f mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0x937620d2 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0xbb97de19 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0x642718e6 mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x52dd668e nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0xa0c48052 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0xd3a78a69 or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0x1d2b8245 or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2830 0x44852558 rtl2830_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2830 0x5a385f1d rtl2830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2832 0xaa0b91b6 rtl2832_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0x4449214b s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x7f8cd024 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x662f4945 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xde72aa94 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0xe57eb599 s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x72711a03 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0x217c0729 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0xb9e0fef2 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0x77c1df76 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0xcf70d6c1 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0xc8600492 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0x8d4d289f stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0x79bee7c4 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0xad5f519a stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x07d0bd14 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xdf139d29 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0x795edbf4 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x0056ce9f stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0xbff6a6a8 stv090x_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x1ba8c86d stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0xac178429 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0x7609f9fd tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0xa21c5c00 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0xc09a1142 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x34698083 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xe4051397 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0x84e8cbe6 tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x349dfb94 tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0xd0d516cb tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x4dd39a39 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0x753fc4a4 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0xae54ab08 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0x9d45a345 ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0x55615d8c tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0xce95f533 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0xb9914495 ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0xe6b2e03a zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0x9b563424 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0xf301021b zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x1387a355 flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x33004db5 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x3bdd5ee9 flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x3ca94294 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x564d0045 flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x7f0448ea flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xbea39d03 flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x335e0647 bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x89df9836 bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xcaaba6ba bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xf43894bb bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x00a5b30d bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8b4ac0f6 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 0xef52f9ff bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x1071e072 write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x3023098b dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x6b6ce53c dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x6c9e825d dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x9dc5c687 dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xcf041eac rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xd1f76f18 dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xd4835035 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe54ca7c7 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0xea9cdf68 dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x00f428c2 cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x4d14632b cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x89e0e41e cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xb23cf65e cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xcf48d384 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x374cf3ef altera_pid_feed_control +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x9247b72f altera_hw_filt_release +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xc04ef726 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/cx23885/altera-ci 0xffaaa211 altera_hw_filt_init +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x3bc83f09 cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x564d7d4f cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x83755fa5 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x9b4f2e4b cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xbcabff40 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xf7e54c84 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x8c0d8398 vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xeae72a49 vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x2a1459f8 cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x7ce700d0 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x7fe6cab8 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x8cde458b cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x13af14cf cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x804d9bb8 cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xab6d2fca cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xc3577bbd cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xefe1c5e0 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xf8036410 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x02d50e1e cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x0acdb65d cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x161256ee cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x1681fa35 cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x1920f003 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x21e26022 cx88_free_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x255d95fa cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x27bdd57f cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3d702c70 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x55197e24 cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x59051ef2 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x75a0afa9 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x80a7fb68 cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x80e36de2 cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x96fff091 cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x99aeed2f cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc0d3b08e cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc307d2c1 cx88_risc_stopper +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc8a5ffee cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd8a220fc cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xef73ee79 cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf41cd5d7 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x021b3141 ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x0a4c270d ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x0b65588d ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x1123adf9 ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x1d1560a0 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x24881f13 ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x2c64c5a8 ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x319d73e9 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5ea2a5c4 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x813e0022 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x979d1768 ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x9fe9b01e ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xae57271f ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xc178b92a ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xd5bca325 ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf58f993b ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf8e8e632 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x013c269d saa7134_pgtable_build +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 0x38919b49 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x4a1cb517 saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x4f228293 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x56305231 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x58702b95 saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x622bcba8 saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x73039031 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x73c74973 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x799d9e64 saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x95068a63 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x9d02b8e1 saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xfbb0ef08 saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xb8e77428 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/platform/davinci/vpfe_capture 0x412122a2 vpfe_register_ccdc_device +EXPORT_SYMBOL drivers/media/platform/davinci/vpfe_capture 0x93a5909c vpfe_unregister_ccdc_device +EXPORT_SYMBOL drivers/media/platform/davinci/vpss 0x088ccec9 vpss_select_ccdc_source +EXPORT_SYMBOL drivers/media/platform/davinci/vpss 0x319709a6 vpss_clear_wbl_overflow +EXPORT_SYMBOL drivers/media/platform/davinci/vpss 0x54146824 dm365_vpss_set_sync_pol +EXPORT_SYMBOL drivers/media/platform/davinci/vpss 0x6e5b5413 vpss_enable_clock +EXPORT_SYMBOL drivers/media/platform/davinci/vpss 0x72f7c8bb vpss_set_pg_frame_size +EXPORT_SYMBOL drivers/media/platform/davinci/vpss 0x749bf2c9 dm365_vpss_set_pg_frame_size +EXPORT_SYMBOL drivers/media/platform/davinci/vpss 0x7517e8d7 vpss_dma_complete_interrupt +EXPORT_SYMBOL drivers/media/platform/davinci/vpss 0x95f8c400 vpss_set_sync_pol +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x08363782 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x093a2e1f soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x1111e70a soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x197263b2 soc_camera_lock +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x1b155cff soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x52fdcf26 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x6bf926fd soc_camera_unlock +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x86a4264e soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xc30c00dc 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 0x5f3e3558 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xa9546115 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xfe2c3a07 soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x2b54bf29 soc_camera_calc_client_output +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0xbbe19d36 soc_camera_client_s_crop +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0xe007cce1 soc_camera_client_g_rect +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0xea8c481e soc_camera_client_scale +EXPORT_SYMBOL drivers/media/radio/tea575x 0x73a335a2 snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x90f70a1b snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0xc5adb31a snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0xe68413ac snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x062d5ac9 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x144b3b50 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x53034c62 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x689a5957 lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x971199b0 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xb248cd4e lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xbf471f9f lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xd3fc7abe lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/rc-core 0x64846423 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/rc/rc-core 0xe27538ee ir_raw_handler_register +EXPORT_SYMBOL drivers/media/tuners/e4000 0xa6b80623 e4000_attach +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x2b5ca75e fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0xd99f9ac5 fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x121cbe37 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x1b056fc3 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xaa28a3e4 fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc2580 0xfb96ac2d fc2580_attach +EXPORT_SYMBOL drivers/media/tuners/max2165 0x404a1748 max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x249787a8 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x40efc0b1 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0x6baca8f5 mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0x212435be mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0x36150b10 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0xcccb1628 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18212 0xa7e62b9d tda18212_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0xbdb6e971 tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tua9001 0x7f3a08e5 tua9001_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 0x9f5dd181 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/tuner_it913x 0xe6d93850 it913x_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x858b97ba xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0x4c99fc7d xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x42838e23 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0xdb7a0bab cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x11c59e44 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x14f4eb4b dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x5d540a4b dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x8c575368 dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x94c88833 dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x9b30cafd dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xbcfe2aed dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xd749f895 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xe0588270 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x196eec29 usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x2504b35d dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x2d49fde1 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x31930480 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x3274c735 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xae5dbc49 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xb952f6ca 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 0xa8fe7dd9 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 0x123a5400 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x22b18654 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x5ba48244 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x5eb51668 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x7f567b18 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb28e7e30 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 0xb895a650 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xbdfebe6c dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xce1664e7 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xd0117bd8 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xf5a28782 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x0fc005e5 em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xba00d3ec em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x18f62df0 gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x23e3c25d gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x2ed35779 gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x728bfbf1 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x73b8a7e0 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x80200489 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xb47a2e80 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xc03ec423 gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xaf00d71f tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xc092fefb tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xcf9513a5 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x5c0b630f ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x77cc62c5 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x42c8e001 v4l2_ctrl_next +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x4adaf0f3 v4l2_ctrl_query_menu_valid_items +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x53c9394f v4l2_ctrl_query_menu +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x5f96a661 v4l2_ctrl_check +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 0x95250343 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xa3495d23 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xa6c7d087 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x0e17f41e videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x2a2d1bd6 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x36166991 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x6c25a884 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x7f413c6b videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xa695af69 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0xb01ebb5e vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x037950f9 __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x042ddd09 v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x052e2b42 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0725e146 video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0c57d697 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x133843fb v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x140e371b v4l2_of_get_remote_port_parent +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1632ed6b v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1874ca01 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1975f4d4 v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b041ddf v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b8ccc70 video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x23d510c7 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x32ddfd29 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3715d9df v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x37c748b9 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x39f6562c v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3a4d5ad0 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3db7f213 v4l2_of_get_remote_port +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x48f3d107 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x516b6822 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x575f24e6 v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x594d25b0 v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5d33ca00 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6228c537 v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6a31ba64 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x70c9371a video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x71b9f524 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x72908e84 v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7865ce5e v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7bc4cf9c v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7f923f2a v4l2_of_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x821f98bf video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x82765282 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x84fe1eb9 video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8d752678 v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8f163f62 v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x953932aa v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9799a631 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9a224cc6 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9a30c20f v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9a5adce6 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9b16ebf4 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9bff02a5 v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9cc58bda v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa399cde6 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa9b10ace v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xabb64423 v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaea6934a v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb51217d6 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb90cbedf v4l2_of_get_next_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbac4a225 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbcd53a08 v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbf390857 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc0bc6497 v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc0dd9cec v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc12cf8f8 v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc37f4690 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc3f511ab v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcc4e6d8b v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd0908850 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd1b4cceb v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd494106d v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd78006a6 v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdbd2ac9e v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe233427b v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe6fce6f2 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xeea67903 v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3546fe6 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf67dc0ea __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf8c6b0b3 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf9d15f5c v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfa412a45 video_device_release +EXPORT_SYMBOL drivers/memstick/core/memstick 0x0c8c9dbb memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x0d1a86a9 memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4c83fff2 memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5b5c17c8 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x753eb2f7 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0x85d25bf1 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8618a122 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8b3b6892 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8c9b5da4 memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa0368a5c memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc5569d71 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0xd5e76d11 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xde2c71f0 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xfbe6490d memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x15d42255 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2141eb10 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x27995add mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x39165022 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3b3519dc mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x44157019 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x47063985 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x47f0a003 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x52fe8de8 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5508da8b mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5d4d5f05 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6216143a mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6b92236b mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x70529ed3 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x72283788 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x726e4ab4 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x77670100 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x78abd4d8 mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8adc6227 mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8f49dc99 mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xad212263 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb8b094c5 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xbcfc0f88 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc51b1412 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc7ae0956 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd2f63761 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd310a88b mpt_raid_phys_disk_get_num_paths +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 0xeaea0fa2 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xeca5f7b2 mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x129c239f mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x13e543e4 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x15bb7ec7 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x15fb48cb mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x20eafcf2 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x23ecc066 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x25937086 mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x360faa64 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3e4d1583 mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x490689f4 mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x516e9987 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x53fd647c mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x58003381 mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x70043c3c mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7da6a5e6 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7eead987 mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8187ba39 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8c0beb33 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x92bf01e5 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xadc28488 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb910acb5 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc3852fea mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd97d3edd mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe6ff7702 mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf4580e64 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf71c919c mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf9868c1c mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x1d4838f0 i2o_parm_issue +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x1d9b57e5 i2o_driver_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x1ff299e5 i2o_parm_field_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x2a843bef i2o_dump_message +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x3cf793e3 i2o_driver_notify_controller_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x3e602774 i2o_exec_lct_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x47d77acd i2o_device_claim +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x483aaf94 i2o_device_claim_release +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x5135b3ad i2o_driver_notify_device_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x55168e14 i2o_find_iop +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x663861df i2o_msg_post_wait_mem +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x6abe1a0b i2o_driver_notify_controller_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x7c19f397 i2o_parm_table_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x855d06f3 i2o_iop_find_device +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x8dab6055 i2o_driver_unregister +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xb4c00dcf i2o_controllers +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xbbd80ed9 i2o_driver_notify_device_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xbf4774ec i2o_msg_get_wait +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xeb42182b i2o_event_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xeef62097 i2o_status_get +EXPORT_SYMBOL drivers/mfd/cros_ec 0x4227ebba cros_ec_suspend +EXPORT_SYMBOL drivers/mfd/cros_ec 0x44d9df9e cros_ec_register +EXPORT_SYMBOL drivers/mfd/cros_ec 0x89dcf139 cros_ec_resume +EXPORT_SYMBOL drivers/mfd/cros_ec 0xf85edaf3 cros_ec_remove +EXPORT_SYMBOL drivers/mfd/cros_ec 0xfae0414c cros_ec_prepare_tx +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x79a04faa pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xc93e2e6e pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x02c368f9 mc13xxx_irq_request_nounmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x19eee3cc mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x23e1f3af mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x320a16d3 mc13xxx_irq_ack +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x3c7e7b55 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x45871415 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x7d213b81 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x7e6e95a9 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb7562c1f mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb9c3bf92 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xbfbfab0d mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xcbada10b mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xe326dac2 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/tps6105x 0x8a92af4d tps6105x_get +EXPORT_SYMBOL drivers/mfd/tps6105x 0xb407bac1 tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0xe72d84b4 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/misc/ad525x_dpot 0x5faacc20 ad_dpot_probe +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x6cd0ad90 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x8a05ed90 altera_init +EXPORT_SYMBOL drivers/misc/atmel-ssc 0x0d72dca6 ssc_free +EXPORT_SYMBOL drivers/misc/atmel-ssc 0x29bdbc00 ssc_request +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x0e9755b9 pwm_channel_free +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x5a8b82f9 pwm_channel_handler +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x5d5c2951 pwm_clk_free +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x6a5e1f70 pwm_channel_alloc +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x73330c97 pwm_clk_alloc +EXPORT_SYMBOL drivers/misc/atmel_pwm 0xeb7f2c6f __pwm_channel_onoff +EXPORT_SYMBOL drivers/misc/c2port/core 0x876e6cd1 c2port_device_unregister +EXPORT_SYMBOL drivers/misc/c2port/core 0xbe99c0d5 c2port_device_register +EXPORT_SYMBOL drivers/misc/ioc4 0x86e806dd ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0x989fc5b1 ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x230576e1 tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0x230daded tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x2bf52b57 tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x39f86aa1 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0x489a4346 tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0x5fa12ce8 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x61277d26 tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x680318ea tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xbf514b8f tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xe239a549 tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xf326bcc5 tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xf41b9b7e tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xf84a3c28 tifm_free_device +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x0ab1a0df dw_mci_probe +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x1f1e4925 dw_mci_suspend +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x316b7029 dw_mci_remove +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0xc687f631 dw_mci_resume +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x378f2335 tmio_mmc_irq +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x49f12511 tmio_mmc_host_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 0x8713c625 tmio_mmc_host_suspend +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x99ece960 tmio_mmc_host_runtime_resume +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xa0c19a43 tmio_mmc_host_runtime_suspend +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xafa602a5 tmio_mmc_host_probe +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xdf171d45 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 0x57be32f4 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x9e708ef4 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xe5754a58 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x31142e66 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0xdebdcad8 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/nand/denali 0xc016442f denali_remove +EXPORT_SYMBOL drivers/mtd/nand/denali 0xfd9d56c7 denali_init +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x533ca074 onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x603f5ed3 onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xa986382f flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xcbba1d22 onenand_addr +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x15429ad3 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x189d3077 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x1989db31 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x3aeaa3a2 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x79f9665d arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x7aa721e0 arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x9d807f64 alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xb1ab20a0 arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xe9815be9 arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xf84b5f38 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x131d86fb com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x7bc7da0d com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xa4c17e7f com20020_check +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x0eb57cdb NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x10c2d2e5 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x457eec16 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x6151a675 ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x8f5c528b ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x9b5dd1a0 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x9d9e40de ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xc0286809 ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xf3c73c8f ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xf9ffddfb ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0xd4a13bf5 cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x07d0c047 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x19be2ebb cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x4ca9fa52 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x50decddc cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x64c604c8 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x68a5972f cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x6f36c8e5 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x865f5bd2 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x989fa15c t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xb1402ad9 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xbc2d3c11 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xcdb85a71 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xcdd87e00 dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd383decf cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xeeaac92e cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xf7d03499 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x01ad0194 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0c7b42e7 cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x141e0138 cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x16482eb9 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x16d021c5 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1985c398 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3150de64 cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x31c9213c cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x38f5a65d cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x390c82b0 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4aea8a5c cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x59a86860 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x662e3238 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6f52f63c cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7014a26e cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7255b2a6 cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x940b1457 cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x96eb3577 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9aae99ec cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9f81cdc1 cxgb4_enable_db_coalescing +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa0c21417 cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa140ecc5 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa28337e7 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa52b3cd7 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xaf7cbd46 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb1c4a68d cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb8fbc513 cxgb4_disable_db_coalescing +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/cisco/enic/enic 0x0e712340 vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x146dd8b1 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 0x82f61120 vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x89154036 vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x9196d804 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x4c30d31d be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x70fca237 be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbab62e22 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x038c4c0f mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x11082059 mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2811f17d mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x327b8360 mlx4_set_stats_bitmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x48953926 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x53a1e077 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x57dc6262 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5bbb9ceb mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5d34cdf3 mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x682ab02e mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x72cc9af4 mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x823804db mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x82ab14d5 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x93757f60 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9d4fb8a0 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa393c0b0 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaab2892a mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc03fcf2b mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc96dca48 mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xca93c25b mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xda4cd1db mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe4ac66ea set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe71484a2 mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeb7ed561 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xed775b7a mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf7571343 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x03cf60ba mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0846b4b8 mlx5_dev_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0afadd6c mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1081dee0 mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x15b0cfbb mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1c6e0fa8 mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x29b34ca6 mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2dd66cd4 mlx5_dev_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x33aa19c3 mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4ece4033 mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x506e5892 mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x553d0814 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6fcecdcd mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x712527cc mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x76cc72d0 mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7bec4dbe mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7d803fe3 mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x82a6d3fb mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x855145e5 mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x977d553c mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa58c41f5 mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb61ffc90 mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb6dbf044 mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe6a79c69 mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xec4a2b9f mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfcbe9422 mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfe6d5191 mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x1aad0158 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x59480fba hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x5b192631 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x72da678d hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xef57020f hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x10d369f7 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x4d0cc424 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x5aee02ed sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x677ae35f sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x89f40967 sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x8be243e1 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x9e4aa37d sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xa2818b60 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xb3e93ce8 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xf8e7e3b2 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 0xb34a7575 mdio45_ethtool_spauseparam_an +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mii 0x0424db95 mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0x0667c6da mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0x2a7753b1 generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0x45483126 mii_check_media +EXPORT_SYMBOL drivers/net/mii 0x555334be mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0xd3ffded4 mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0xec3f1565 mii_check_link +EXPORT_SYMBOL drivers/net/mii 0xf94ccda9 mii_nway_restart +EXPORT_SYMBOL drivers/net/ppp/pppox 0x5476e71c pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0xa8c59cff pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xf150f1a1 register_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0xa677d55b sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x1bee330e team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0x495e9c28 team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0x72ddb1e8 team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0x973402e2 team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0xb3606576 team_options_register +EXPORT_SYMBOL drivers/net/team/team 0xb6db01c0 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0xbf56e8b6 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0xc89e91aa team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/usb/usbnet 0x892f73e7 usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/usb/usbnet 0x92c92109 usbnet_link_change +EXPORT_SYMBOL drivers/net/usb/usbnet 0xce7caa53 usbnet_manage_power +EXPORT_SYMBOL drivers/net/wan/hdlc 0x08a1762b detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x1af4011e hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x5b2cfd6f attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x7d1bc192 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x86b7394c unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x90136fc7 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x9cc42706 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0xac10c8a4 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xb66c5f13 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0xe9dc53a2 unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0xf5e8aa10 hdlc_open +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x02c54675 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x36ba6927 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4b75e289 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4e2481d5 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x53358ce3 ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x56825ef3 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x6c13bdc2 dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x7b1f1ba3 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x7cea04b1 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x936bdbaa ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x9aa2dcea ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xae9bd4ce ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xd3c0c4f9 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xdd29cc33 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x21f00d62 ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x556aac86 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8246be6c ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x851b6f77 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x895f9dc2 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xaf096710 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xca2cb3b4 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xe059a534 ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xeff93511 ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x0199ec46 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x0d402132 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x27cf1694 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4c6ddcb4 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4e1380ee ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x705e0558 ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7094ce52 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x79c27941 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x9a4baa38 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xabe79c51 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xc9a481e0 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcc5d2491 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xf1671056 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xfc37f9ad ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0x3ebc77b8 ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0x63300d6c ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0x91fc76f5 ath9k_hw_wow_event_to_string +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0xd24f8e3f ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x01d7ab6d ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x3ca3a88f ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x6a696a5c ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8ae14b24 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_hw 0x00f62fda ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x05fa82e6 ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x09e169fd ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0b0981f9 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0fb27fdc ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x11b6f36a ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1223409c ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x127226aa ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x12fbbccb ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x13d1a89d ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1627f568 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1cde94fd ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1cf60ab6 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x204d2838 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x20e05fb4 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2873aff0 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2a30376c ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2b3e5f98 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2e3938c6 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2ed9a471 ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2ff46628 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3632110a ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3a7ceacb ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3d241b9f ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3f320942 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x40cc4131 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x41a0f1fc ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x43f1c04b ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x451a9661 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4b8808cb ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4f49a9b1 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x53e11e07 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x53fc4fbb ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x560f0bef ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x56501c0d ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x568ec084 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x581f837b ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5aa862e4 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5c402031 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5fc803c5 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x639005d3 ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x64e9582a ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6748c2f9 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6a94f840 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6c330d4e ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6c811ae0 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6e173662 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6f7f6e6f ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x717e37aa ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x75d65a42 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x75ec4a72 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7c3a1578 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7c6ad08e ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7d35d36a ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7d4590d4 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7eb05e61 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x833b5af4 ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x851bbe56 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x853e12e9 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x86175935 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x863a90ea ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x871049fd ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8dd9c0a7 ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8f0a9a8c ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9e0075e6 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa0ade545 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa43a1505 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa65a7cb0 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa8db2cd4 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaba73100 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xae93ee15 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb360c9cd ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb4dffbf7 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb7002f76 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb8cf693b ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb93e6756 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbc835d6a ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc0a41a8d ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc4282a86 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc56d4fba ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc825a31c ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc9322c8b ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcb1d687d ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcde23bb8 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd40033b8 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdaeccae0 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe1339a77 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe22fefe2 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe2357306 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe3c4c9e5 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe4666383 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe6ddd525 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xecf01e99 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf1193f3f ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf47a232c ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf9cbacfb ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfb259ae7 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xff5648e4 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/atmel 0x51f6be52 atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0xb123dc82 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xc63696bf stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x2e2a1208 brcmf_sdio_probe +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0xb0c38bad brcmf_sdio_remove +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x00719ea5 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x1d986f65 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x2dc227f8 brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x305cc296 brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x46b473d0 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x4a33e4a2 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7a5ff182 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x81978c83 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x90f61002 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xa44a38b2 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xc15069c3 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd19353fa brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf1570f8c brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf3c20512 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0665d249 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x06a9036c hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x06aaba33 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0795296d hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x216a5af8 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x231df67c hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x302c16fc hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x33fb4243 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4dbb7855 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5fbf3c77 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7cf23247 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x81fa7015 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x930b4609 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x97499ff1 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa18780cd hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xae751d89 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb1bb3f0b hostap_info_process +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 0xc2d1e687 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xca339798 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd1d7e163 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe4058ac3 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe604b6ca hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe8e98944 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xebf8f373 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf27adc0e hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x00bae6dc libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x022923bc libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x04ae30e7 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1ca25dde libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x27d90ead free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3f2cf602 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x46194a7c libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x58548faf libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5864bd08 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6dba669d libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x885d2085 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8a2f21fc libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8cef325c libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x9ff5aea1 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa1bad0d4 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa5336997 libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa5f0d693 libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc3ea98ac libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe8a43ace libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xef297ca7 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf4311abf libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x01b22c3c il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0360e187 il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0651b2a2 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x087871f1 il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x09527444 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0a2c716b il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0d055799 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x11716b38 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x132e1b2c il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x13f38b4e il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x158a1255 il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x18ae7355 il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1f38d037 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1f8a7a46 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x20733835 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2a33cf90 il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2a833495 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2a91a389 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2c624166 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2e357645 il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2fd8d9a4 il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x32e8bf7e il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x352f1d24 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x35c7ad6e il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x39bdca73 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x42b4fc1b _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x432ee04b il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4392f9fb il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x458eab63 il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x468c99a0 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4af326bc il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4c3ac897 il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4ccf4ada il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5106fb89 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x53f87ccd il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x56adc942 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5c4140fc il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5ed85a08 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5fad01d3 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x65c60d23 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6953759a il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6bdbb8e7 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6cb2a3f3 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6d1f8899 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6e8a5137 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x70323c49 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x79b43421 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7f7fd411 il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x87b7eddb il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8c5b526c il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8d3ce886 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x90007c40 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x907148dd il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x982cf4c9 il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9a34ff30 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9dd2ea88 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9e67ac70 il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa739c97b il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa8ca5505 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa971d864 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xaa24f277 il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xac9a8a15 il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xadb78684 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb871a476 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb927314c il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb9adb124 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xba269411 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbc8b564d il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbd237d21 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbe0fecc2 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc30ef4f8 il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc5bfc568 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc7d406f1 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc854fe56 il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc97ed723 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcf9b144a il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd5ce3e89 il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd7aaa171 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd88df1b9 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd96d9a36 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xda8833bf il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdae05858 il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe397934c il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe43c79f3 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe4805cd5 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xec10d7fb il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xec823535 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xee758bd9 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeee54411 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xef21025e il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xef25c9f6 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf20718c6 il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf5eb19da il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf72ab30d il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf7be252e il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfd1c7b64 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfda69396 il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfe9ec083 il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xff24275f il_leds_init +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 0x0e7bc05f __tracepoint_iwlwifi_warn +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x201337b4 __tracepoint_iwlwifi_dev_tx +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x249e4b06 __tracepoint_iwlwifi_dev_rx +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x36dcef55 __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x4919d1a5 __tracepoint_iwlwifi_dbg +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x67381a2a __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x79e9bf26 __tracepoint_iwlwifi_crit +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x7edec07d __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x8bfcc307 __tracepoint_iwlwifi_info +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/iwlwifi/iwlwifi 0xda36f3a4 __tracepoint_iwlwifi_err +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x04040a80 __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x18a3099d orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x213fbeff orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x268eb74f orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x2bc54a68 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x2f80fbe0 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x37cf2e6f orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x4ef11069 orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5bfb0c47 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x62be9680 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x82fb73b8 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x8d63c1a6 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc98a7466 orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xcac48d7c alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd4b95069 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xe7d14cca free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xee4df9b5 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/btcoexist/btcoexist 0xe52ef4a1 rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x015b57d2 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2012fe72 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x260e1599 rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2e89e1a8 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2f694556 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2faa2e97 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x335a7ae7 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x336932f9 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3a4105b0 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x48145cac rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x48529b73 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4b4c743c rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4ec33a74 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4f5bb625 _rtl92c_phy_dbm_to_txpwr_Idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x50bc2d34 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x53c879dd rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5bae9e7c rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5e1cdf85 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6578422f rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x670acde2 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6b707026 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x792c1141 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x794c76b1 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7a725749 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x85a20de5 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8755438e _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9052898e rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x95d5cf09 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa8ce41ad _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb44a0b20 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbc6930d7 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbc883aa2 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcd698821 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcfa59624 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd5eb0ee5 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdc35c2a4 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe612cc7f _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe9e5243a rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xea476ca4 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf40f17dc rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf492e498 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x0cb37d89 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x21c5d23a rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x3f3f0a7e rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x623cbf73 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x28a7340d rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xae405174 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xbbdae5cc rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xfa8f09bf rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0ef48166 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x25fa9aa0 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x307e297b rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x424f6171 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x4fce03b5 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6d6f8496 rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x74a4812a rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x75585a8a rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x776b293a rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7c9e0470 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x88e0201b rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x89756866 rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xaaa227e2 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb4024a64 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xbca6ccdd rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xbef8737a rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xdec2001f rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xecc491b5 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xee85c32a rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf344c7be rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x2aaf05a3 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xa5ae5fe8 wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xd124b7b1 wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xf4cc36f4 wl1271_free_tx_id +EXPORT_SYMBOL drivers/nfc/microread/microread 0xc0646100 microread_probe +EXPORT_SYMBOL drivers/nfc/microread/microread 0xfb47e015 microread_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x48125ae9 pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x4c042a5a pn544_hci_remove +EXPORT_SYMBOL drivers/parport/parport 0x00bf181e parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x04ded69c parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x0a564873 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x1fb7bf5b parport_release +EXPORT_SYMBOL drivers/parport/parport 0x274b24cc parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x2a61bcde parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x459cd2f7 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x4879d4b5 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x48f27df2 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x4f7c55e2 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0x573773f5 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x5eeab249 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x6c3c1f85 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x71b72dbc parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x81c0bd73 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0xa26f3edc parport_claim +EXPORT_SYMBOL drivers/parport/parport 0xb88b6673 parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0xbf59d729 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0xc0257854 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0xc2adb9fe parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0xc60e328c parport_read +EXPORT_SYMBOL drivers/parport/parport 0xd0a74780 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0xd238c649 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0xd3c56e62 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xd4c57eb5 parport_write +EXPORT_SYMBOL drivers/parport/parport 0xdb2d70ec parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0xe1a19bc5 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xe7ee9129 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xfb57d045 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0xfbb9e5f6 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport_pc 0x11209acb parport_pc_unregister_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xe2f824ff parport_pc_probe_port +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x16f38589 rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x4018d398 rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x530c4a16 rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x57091d6b rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x8968193f rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xa1456ce7 rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xa28c3d2c rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xd6660831 rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xec2b4ce5 rproc_shutdown +EXPORT_SYMBOL drivers/rpmsg/virtio_rpmsg_bus 0x48334f8d rpmsg_create_ept +EXPORT_SYMBOL drivers/rpmsg/virtio_rpmsg_bus 0x5fe90659 unregister_rpmsg_driver +EXPORT_SYMBOL drivers/rpmsg/virtio_rpmsg_bus 0x8f84eb2a rpmsg_destroy_ept +EXPORT_SYMBOL drivers/rpmsg/virtio_rpmsg_bus 0xcae2752f rpmsg_send_offchannel_raw +EXPORT_SYMBOL drivers/rpmsg/virtio_rpmsg_bus 0xf0ebfac1 register_rpmsg_driver +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x01715d6e fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x2d3349b8 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x3b526e35 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x5b46ba70 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x64776dce fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x6f5a4b2b fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xa8050a9f fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xacb9083e fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xd9e7942b fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xf2a56385 fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xf3c746ef fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xffa358e3 fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1558abd5 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x16e3562b fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1b83bb9c fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1c9b604f fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x24eb15a3 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x398771bf fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x39d92a29 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x402a0f89 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4274d3f9 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4cead860 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x55c85f68 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x564db8c8 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5c21420a fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5f70ac1d fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x68c7afeb fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6903fd80 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x69c3bdbb fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x80175f90 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x838ac5d9 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x84bf42d7 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x84eb1b5a fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x89a36923 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x90977e4e fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x91821938 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x91aafb92 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9dfcfaf5 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9e9984e0 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa0cc54a0 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa14185aa fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa33420a0 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xacf07d41 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb330673f fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb59fa3ca fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb60f49e8 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbc10c2c4 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbd07a593 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbdd01d20 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbf57d9b1 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc260d3ae fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc5741d92 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc7646cd0 fc_change_queue_depth +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc767ea23 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xce8a3b6e fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcfc4be7c fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe4c9c5a9 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe521b3d7 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xebbb89d0 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xed30b2e2 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xee518f91 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf19640d6 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf50fe9fb _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfb86e36e fc_change_queue_type +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x776e7cd0 sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x7acc01ae sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a687a23 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xfcf4b83b sas_wait_eh +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2250c66e mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x4cd1d248 mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x512c956d mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x00232898 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0616d8f1 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x07c9414f osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1129d50c osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x13502a65 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2144b10d osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x24fd295c osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x269a6c79 osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x274324d0 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x37af4b11 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x388e44be osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x45e2c9ce osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x47b4eb7c osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4d185b96 osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x518d7ff1 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x54586086 osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x587a7620 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x67bd87ac osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6b97e63d osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8044899f osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa2455e40 osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xacb9b18a osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xaeae2e81 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb62afe13 osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb9fb875f osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc0a6ed23 osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc531cecb osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc6ce7c1f osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc8d81869 osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcc3d87db osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcd2d1e02 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd223b63f osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd56a0f29 osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd6f62545 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe3edab8b osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xfe1f37d3 osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/osd 0x3747e5d2 osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x83802094 osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0x8f761b99 osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0x99bf02a2 osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xd4361131 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xff0c60d0 osduld_register_test +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x02f55c0e qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x2e662629 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x4b4181cb qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x6b25b8c6 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x75f3d62f qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x7cb93f72 qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x8f701b67 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x9c774cc0 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xcbce04e3 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xea33d9af qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xf9d00ac2 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/raid_class 0x4ea7f09f raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0x7dad39d5 raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0xd872148d raid_component_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x15d8caec fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x160c4163 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x178e4346 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x34fc34af fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x49d76747 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x80c6096e fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x8cc6d00e fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x8dfd1e67 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xaf1f185f fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb7c13613 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xbafa7a22 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xcdf94e3b fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xdd4a341e fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x029a28fc sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x154bf26d sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x215d7558 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x21a41ff2 sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2b5085e1 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2b936025 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x36394a55 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x657ea941 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x71750f3a sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x75c907a0 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x80d7788f sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x88827b49 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8f8c79dc sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9c109f85 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb03820e2 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xbe0b8c32 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc698a097 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xcadd8fa6 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xcadec7d2 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xcdf4dfe0 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd449530f sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd73bfded sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdf7e5404 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe10337f7 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe6ed7ec3 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf2ee9ca8 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf3fcf82d sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf608aa40 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x2143768b spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x241ecd9d spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x7feba462 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x897a7fde spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xa675d912 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x35e1febc srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x449c53fb srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x61d4f052 srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xda1b1c30 srp_rport_get +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x0d70ac19 ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x5dfd73d2 ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xdc7c3225 ufshcd_runtime_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x06a212aa ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x11f29ee1 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x20f1501b ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x30929652 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0x57fb1fc1 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0x727eb410 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x824f993a __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x8614153f ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x8cbac0a7 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x960d4e18 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x9ae99f22 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x9b636529 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xb061eaa2 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0xb4113027 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xbccf6f34 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xda7ecd75 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0xe42bc905 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0xe4aafd80 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0xf99f5ec7 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0xfbe1ae0b ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xfeb55316 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xde62fd18 fwtty_port_get +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xe94cee7b fwtty_port_put +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x4a56538a adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xa01e6fb2 adt7316_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x38d0e29b ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xf8f870ff ade7854_probe +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0053916e lnet_kiov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x053935b9 lnet_unregister_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0bce7eef lnet_counters_get +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 0x1dc34c51 lnet_net2ni +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 0x3558e584 lnet_iov_nob +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 0x41e4bb41 lnet_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x473ad33b LNetDist +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x4bb00492 lnet_copy_iov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x4f9cb871 lnet_extract_iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5811a721 LNetInit +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 0x60d9c181 lnet_finalize +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 0x6dbdf8ea lnet_extract_kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x6f7be171 LNetEQGet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x70909431 lnet_copy_kiov2kiov +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 0x8179cca9 lnet_copy_kiov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x854ab844 LNetEQWait +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x8a3064f2 LNetSetAsync +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x8d78d603 lnet_parse +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9d526f35 lnet_notify +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9de986d3 LNetEQAlloc +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa8c2760b LNetFini +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 0xacc9905f lnet_register_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb6162d72 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 0xd2768a47 lnet_create_reply_msg +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd5d235c2 the_lnet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xeb72a30e lnet_copy_iov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf1b316bf LNetSnprintHandle +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf7cd162c lnet_set_ip_niaddr +EXPORT_SYMBOL drivers/staging/lustre/lnet/selftest/lnet_selftest 0x078db139 lstcon_ioctl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x01258f72 seq_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x14268433 client_fid_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x1c4bb5f9 LU_OBF_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x375e6f8d LUSTRE_BFL_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x66c48069 seq_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x83e221ef seq_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xae61cff5 LU_DOT_LUSTRE_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xc997a02f LUSTRE_SEQ_SPACE_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xda8f3e85 client_fid_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xecee2727 LUSTRE_SEQ_ZERO_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xed40f873 seq_client_alloc_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xf74ac1d9 seq_client_get_seq +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x149b7e96 fld_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x2e1d139b fld_client_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x54c7c065 fld_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x9c13461c fld_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x9f7b5fb9 fld_client_proc_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xa438dc23 fld_client_add_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xfefeb53f fld_client_del_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x000c507f libcfs_debug_dumplog +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x00c881f6 cfs_cpt_number +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x01db5172 cfs_percpt_atomic_summary +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x03387ca6 cfs_curproc_groups_nr +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0389f857 cfs_cpt_spread_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x04d3ce6a lbug_with_loc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x069f9bb2 cfs_wi_schedule +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x06e36844 libcfs_sock_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x08ada613 libcfs_console_backoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0900700a cfs_crypto_hash_update_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0b4b1546 libcfs_lnd2modname +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0c153e99 libcfs_sock_setbuf +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 0x0f10432d upcall_cache_init +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 0x12426266 libcfs_run_lbug_upcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x151e7546 cfs_cpt_table_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x155eedab libcfs_sock_listen +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 0x1d5a3928 cfs_timer_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1e516dc9 cfs_hash_debug_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x20160fa3 libcfs_sock_release +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 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 0x2b1e0458 cfs_get_environ +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2d18401b libcfs_sock_getbuf +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 0x30986343 cfs_range_expr_parse +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 0x3834f243 proc_call_handler +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 0x3ce75aa8 cfs_hash_debug_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3d5e6098 cfs_race_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3ea730c0 cfs_gettok +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3ef0d90c libcfs_kkuc_group_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3f4eac12 libcfs_sock_getaddr +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x411db754 cfs_crypto_hash_final +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x41ab33a1 libcfs_ipif_free_enumeration +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 0x44f07cfc cfs_pause +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x47fdb4d1 cfs_timer_is_armed +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 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 0x5c247297 libcfs_kkuc_group_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5ca50414 upcall_cache_flush_idle +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5d3be65a cfs_crypto_adler32_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5d73c3e3 cfs_expr_list_free_list +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 0x647a7b6d upcall_cache_get_entry +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 0x66136d2d cfs_timer_arm +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 0x6d06f612 libcfs_sock_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6df07f05 libcfs_sock_accept +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6dfa9ea1 cfs_crypto_adler32_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6e6af71c current_is_32bit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6f928e1b libcfs_debug_msg +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 0x7a3d49ae cfs_expr_list_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7b0b748a cfs_ip_addr_parse +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7c7986cf waitq_wait +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 0x818a300a libcfs_kkuc_msg_put +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 0x870a5e72 libcfs_sock_connect +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 0x8f12bb52 libcfs_log_goto +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8f45f10d cfs_init_timer +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 0x93611067 upcall_cache_flush_all +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 0xa9dc74e2 cfs_trace_copyin_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9eae690 cfs_str2mask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xab887583 init_waitqueue_entry_current +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 0xad019238 cfs_str2num_check +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 0xba5f659e libcfs_sock_abort_accept +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbb9cb508 cfs_curproc_cap_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbc275420 cfs_cpt_unset_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbd5d492e cfs_timer_init +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 0xc2911d96 cfs_expr_list_match +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 0xc3eb614e libcfs_ipif_query +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc47433a6 cfs_capable +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 0xcafda950 upcall_cache_downcall +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 0xcbab8493 schedule_timeout_and_set_state +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 0xd9541990 cfs_strncasecmp +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd96f406d cfs_cap_raise +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xda09d370 upcall_cache_flush_one +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 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 0xdfcd8209 upcall_cache_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdffc951d cfs_timer_disarm +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 0xe6555032 libcfs_ipif_enumerate +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 0xedf3a25a cfs_timer_deadline +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 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 0xf8efb8c5 waitq_timedwait +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 0xfbfbdc46 upcall_cache_put_entry +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/libcfs/libcfs 0xff0f98a6 libcfs_debug_vmsg2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x2572de88 ll_osscapa_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x29359b83 ll_iocontrol_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xbea24ef5 ll_direct_rw_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xcd3cde92 ll_iocontrol_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xf3df566a ll_stats_ops_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x37815018 lov_stripe_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x46dae4f8 lov_lsm_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xb63f5eb1 lov_device_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xbf9536b9 lov_read_and_clear_async_rc +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xd7578204 lov_stripe_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xda7ddddc lov_lsm_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x245b8433 push_ctxt +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x416d8483 l_dentry_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x4e627060 fsfilt_put_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x5de01627 lprocfs_counter_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x85d40144 obd_memory +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x93d1c220 fsfilt_register_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x982a7e6a pop_ctxt +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xb4f8ee63 lprocfs_read_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xd41fabab fsfilt_unregister_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xd94212be lprocfs_counter_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xdf623799 lprocfs_stats_alloc_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xe29e22b8 lustre_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xf9ca87ab fsfilt_get_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x14a47f31 it_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x9c22b84f it_open_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0xb57d8447 it_set_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0xf46a886f it_clear_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mgc/mgc 0xdc287f95 mgc_fsname2resid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0004595e llog_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x00e96616 dt_try_as_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0134af56 capa_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x013bc83e cl_lock_ext_match +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 0x04ca1158 cl_wait_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x04ec9052 lustre_process_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x051705de class_config_parse_llog +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 0x08082ebb obd_export_evict_by_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x083942ff class_del_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x09cf6e3e lu_site_purge +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0a3b01e7 cl_lock_hold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0aac8c58 llog_exist +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0bb6ab46 class_handle_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0cb7dfaa llog_thread_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0cf99bff dt_acct_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0e244a2d cl_page_make_ready +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ee0086b llog_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0f3ffdc8 lu_device_type_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0f4bf08e lprocfs_rd_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0fe91547 obdo_to_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x107b96b0 lprocfs_obd_rd_max_pages_per_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11495519 lprocfs_write_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11d79241 class_incref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x122c394b llog_copy_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1476b8c4 lu_ucred_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1491dc30 lu_context_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x14a2d38b lu_object_find_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x153b2039 lprocfs_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x167030a3 local_oid_storage_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16e8ae5a cl_page_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x17260880 obdo_cpy_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x17b14e45 cl_page_list_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x19b19e93 lustre_idmap_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x19e1e3f7 dt_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1a48c8f0 dt_locate_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1a90ead3 lprocfs_seq_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ac081a6 cl_page_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1c6d9f37 lu_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1cc487c7 capa_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1d93f065 cl_io_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1da74915 lu_context_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1e145d47 lu_context_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1e409398 llog_cat_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1e5ad52d cl_unuse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1edcc8eb cl_io_rw_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f3754cc lu_context_key_degister +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f3dfb0d lprocfs_stats_collect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1fcad1bb lustre_end_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ff5032a class_fail_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2085d09e cl_page_find_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2108da17 cl_page_list_splice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21307495 lu_buf_check_and_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x217028ad cl_page_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2171147e cl_io_loop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21aa0637 obd_exports_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x221826f1 class_parse_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x228167e3 lustre_in_group_p +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2362321f cl_lock_at_pgoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x23affe56 cl_page_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x23f8b849 lprocfs_register_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x240c2f41 lprocfs_rd_kbytestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x24cc69e3 cl_object_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x25184967 lprocfs_nid_stats_clear_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2528b4cc md_from_obdo +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 0x25cfdb47 lu_object_locate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x260ca9aa lprocfs_rd_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x265afe3e llog_cat_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2667d003 lu_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x26ef58b1 obdo_from_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x275443bd cl_2queue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x275cdc7a cl_env_reexit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x27f98ce5 lu_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x28ad0f71 cat_cancel_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x28fbabb3 cl_page_vmpage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x297cf5e0 class_handle2object +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a209f7b cl_2queue_init_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ab837e9 dt_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ad8face llog_init_handle +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 0x2eb77f86 class_conn2export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2eea4054 cl_page_list_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2f71b6ce class_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2fea20ee lprocfs_wr_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x32266a1d cl_lock_signal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x325ed695 lprocfs_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x32745446 cl_page_is_under_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x32d54a31 cl_vmpage_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x32f09325 llog_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3499cb5c cl_page_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x34caf674 lustre_idmap_lookup_gid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x350a8d2f cl_lock_closure_build +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x354f46a7 lu_context_key_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x361802f2 lustre_common_put_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x36672e22 llog_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37094ae4 obdo_from_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x374d1ed9 class_export_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x374e6ae5 cl_pages_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37648ade cl_lock_mutex_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3775830d cl_io_submit_rw +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37ed6e4b at_early_margin +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x384be401 cl_page_is_owned +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38d16d20 lu_site_init_finish +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 0x3b7421c0 cl_page_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3d1b6253 lu_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3d52cd05 lprocfs_rd_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3e3dc42f lu_object_assign_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3e49e233 lu_cdebug_printer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3fa97d4c cl_page_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4229440d cl_lock_mutex_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x43e06be8 lu_object_put_nocache +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x442a4c5f dt_record_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44c5f216 class_find_client_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44d44392 cl_page_list_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44e41abb lustre_posix_acl_xattr_filter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x450cd2ca dt_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x474ed5bd lustre_swab_ll_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x475eaf62 cl_env_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x477bb723 cl_2queue_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47b35f7d statfs_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47e3fa08 cl_2queue_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x48fa12ee lu_env_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4931177a class_process_proc_param +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 0x4ac58713 obd_connect_flags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4b2183e0 cl_page_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4b47d4f5 dt_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c8310f1 class_detach +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 0x4e267d6a llog_declare_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e3358d4 cl_page_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ec9f89e lu_context_key_register_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f4de87a cl_object_attr_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4fba4346 dt_directory_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4fded922 cl_lock_user_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50c7fc36 ptlrpc_put_connection_superhack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50d3ac74 cl_env_implant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x51618c78 class_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x51cffc63 llog_cat_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x524a0715 lu_object_find_slice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54885f87 ldlm_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5489ea49 obd_export_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5494b446 class_unlink_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54f985c4 lprocfs_at_hist_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x550fec3a cl_page_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5524614d capa_cpy +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5568fc37 cl_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x55880a1b llog_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x558bec27 obd_ioctl_getdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5596ce89 cl_req_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5627cce8 lprocfs_oh_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5634b061 lprocfs_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x564e9d44 init_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x569071c2 llog_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x570d09ae lustre_swab_lu_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x577a76d8 cl_env_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x57b621a1 class_disconnect_stale_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x57ee7351 cl_lock_nr_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5859ee53 lprocfs_obd_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x58728fa2 cl_offset +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5920a816 lprocfs_rd_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x593361ec cl_req_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a04e353 lu_context_key_degister_many +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 0x5a7ca19e lu_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a9e7ff4 cl_env_nested_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b40b932 cl_lock_unhold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bb1bb41 class_export_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bc022c5 lprocfs_dt_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5c11d0c4 cl_lock_enclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5c2208a4 lprocfs_rd_filesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d2758f2 lu_site_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d34ae0d cl_lock_mode_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d9ca97e class_search_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5daaf9f1 class_disconnect_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ddcb846 class_import_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5dfc566e class_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ed188a9 lprocfs_add_symlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fe97b73 block_debug_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ff8cd25 llog_cat_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x600ef978 cl_lock_modify +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x606c7e5e lu_env_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x60c3dc01 cl_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6181a7fb lprocfs_rd_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x61e9ee77 cl_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6214997b lprocfs_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6228de22 cl_io_commit_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6251addc class_conn2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x629d9ac7 cl_page_unassume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631a518d mea_name2idx +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631fd7b9 lustre_ext_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63694977 class_devices_in_group +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x637239ac lustre_idmap_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63d440b1 lustre_idmap_lookup_uid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6426bc8f dt_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6433957b cl_lock_discard_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x643efcab cl_io_iter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x64a6a24a lu_context_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x64c08e3b cl_lock_is_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x654e42d7 cl_io_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6565aa7d lu_object_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x65c90729 lprocfs_rd_numrefs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x66b55eb5 cl_io_read_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x66e03437 dt_store_resolve +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6734adbd lprocfs_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x677fd7f9 proc_lustre_root +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67977b42 lprocfs_remove_proc_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67a90622 la_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67dc223a lprocfs_remove +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x687da354 cl_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6890d175 lustre_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x68e47f41 cl_lock_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x68f4bb72 dt_lookup_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x694f02c9 capa_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x695c6bd4 cl_object_attr_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x699bd270 lprocfs_alloc_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69a352fa obd_devs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69c42114 at_min +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69c9d751 lu_context_key_revive +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6aa5a2a5 class_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6bb6d421 lu_buf_realloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6d03cede cl_object_attr_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6db3d822 cl_lock_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6e394607 lu_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f3e6225 dt_quota_slv_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f64bc33 llog_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6fb114b0 llog_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6fb1937b cl_lock_closure_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6fc85fb2 cl_page_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7038ebcf local_file_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x709320cc class_uuid2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x70c890c9 cl_page_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x712357e7 cl_lock_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x71be6d1d lu_context_key_revive_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x71e9dc54 lu_context_key_quiesce +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7250c2a6 cl_2queue_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72ddee4c obdo_le_to_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7396bcd4 lu_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x742559b1 class_unregister_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7485af6b dt_version_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x74aa95cf lprocfs_init_ldlm_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x75157395 obd_export_evict_by_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x752f71a8 class_get_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x754fe3b6 cl_io_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x756a77f3 class_parse_nid_quiet +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7572c2ae obdo_refresh_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77377787 lu_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x776c44c9 cl_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77ccefff llog_cat_cancel_records +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 0x7840f670 lustre_idmap_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x789796a1 obd_zombie_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x78a35b4e lprocfs_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7939ae6d cl_sync_io_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7a6320f4 cl_page_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b14c711 cl_io_sub_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b4fc57b at_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b5b7ed6 obdo_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b614011 llog_obd_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7bc143e0 lu_dev_add_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7bccb9d1 lu_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7c15a38f iattr_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7c188595 obdo_from_iattr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7c57eeda llog_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7c69deb0 obdo_to_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7cda1880 cl_lock_extransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7cf6252d cl_io_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7e3bff76 llog_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7ec63f68 cl_object_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7edcafa0 cl_env_reenter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7ee3d925 cl_locks_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f4bd46e lprocfs_free_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f9237e5 class_handle_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fad7291 raw_name2idx +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fe43288 cl_io_prepare_write +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 0x80744fc7 cl_object_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x80ada71d local_oid_storage_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81742d89 obd_ioctl_popdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81ce943b class_num2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x820fd1e6 lprocfs_nid_stats_clear_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x826c8434 cl_page_is_vmlocked +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x830a7c42 dt_record_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x831f656c class_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8322edbb cl_lock_enqueue_wait +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 0x859be4b0 local_index_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8600e75b cl_page_clip +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8692ec38 cl_object_glimpse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x87abf6f6 cl_env_unplant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8a506246 class_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aa2c358 lprocfs_dt_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ad69ed0 lu_object_add_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b2ba681 cl_lock_error +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 0x8bfac6de lprocfs_seq_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d2814a5 lprocfs_single_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e2c78bd dt_txn_hook_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f67314c obd_dump_on_eviction +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8fd3a605 cl_lock_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90730525 llog_cat_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90c8d327 lprocfs_init_mps_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x916c0106 local_file_find_or_create_with_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92b532d5 class_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92e58479 obd_dump_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x934feaf6 cl_io_lock_alloc_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93b46468 lu_session_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93c7a2fe cl_lock_descr_print +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 0x955f5220 ldlm_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95735c6c at_extra +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95d85253 lustre_register_kill_super_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95ec998a lustre_groups_sort +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x960b92a0 lprocfs_rd_num_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x967037d3 cl_page_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x96bc1d21 llog_osd_put_cat_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9712c6db class_new_import +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 0x981a158e lprocfs_add_vars +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x98aacd7a cl_page_list_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99e06a55 obd_llog_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99f42c35 cl_page_list_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9a152280 cl_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9a91fd97 dt_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9ad2e987 cl_lock_hold_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1ed9d8 obd_jobid_var +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b3750b7 lprocfs_exp_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b619368 llog_cancel_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b655d66 cl_page_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b8036ab lprocfs_rd_conn_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9be56ce1 lu_device_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9ce43321 cl_page_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dbb17b6 lprocfs_dt_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9e62e2fc llog_cat_declare_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9e75478b cl_lock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9fe1d628 dt_store_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa02d23c2 cl_io_is_going +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa0c9d57e lprocfs_alloc_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa114901c cl_unuse_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa1b2aed0 cl_io_lock_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa1f577fe llog_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa21c5ea1 obdo_from_la +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2585132 lprocfs_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa28ec6df capa_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2a2b782 cl_io_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2c1ff6e lu_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa3386453 lprocfs_free_per_client_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4335379 cl_sync_io_note +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4c90717 llog_declare_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4f82407 cl_req_page_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa513f7e4 lustre_groups_from_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5e619eb cl_req_page_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 0xa6cf7f15 cl_lock_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7a6d59a lu_env_refill_by_tags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa862d221 lprocfs_oh_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa1e7535 cl_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa21b7a0 lustre_register_quota_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa77e355 cl_lock_closure_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaacf596a cl_index +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 0xac86e94c lu_context_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xad151dcf lprocfs_wr_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xad4ba628 cl_page_list_move +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xad58e3a8 dt_txn_hook_commit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xadecba39 cl_lock_weigh +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf5e5fcc llog_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xafba94a8 cl_io_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xafec756c class_manual_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb01963a6 class_uuid_unparse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0fb9886 cl_lvb2attr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b6a407 lu_object_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b89b6d class_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb319db6d class_handle_hash_back +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb403d423 cl_io_submit_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb41998cd lustre_cfg_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb435071d cl_req_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6ba5dd5 kuc_ispayload +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6e0762f cl_io_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb743ec6a dt_mode_to_dft +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb74d5bb4 lprocfs_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb7a8bdea cl_lock_state_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb7c1a8f2 cl_page_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb8898336 dt_txn_callback_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb970b35c class_connected_export +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 0xbc7130bc cl_lock_hold_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbca44214 cl_page_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbd314d88 llog_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbd606b07 cl_enqueue_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe0b499a cl_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbed7f06c llog_declare_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf9e695e lprocfs_oh_tally_log2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc05fc8a1 cl_req_completion +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 0xc1bda3ee lprocfs_rd_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc2637b03 dt_declare_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc2d446a0 cl_page_gang_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc37d2156 dt_txn_callback_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc3ae1145 lprocfs_alloc_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc3cf385a cl_page_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc48ebd9c cl_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc594c0b9 class_exp2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc5dc1452 dt_index_walk +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc6061910 llog_osd_get_cat_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc6a912ec cl_page_cache_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc707cca6 cl_page_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc7677e43 dt_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc7e74a6f cl_object_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8dbaa87 lustre_swab_cfg_marker +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc95c8b9f lprocfs_rd_u64 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc97a3309 cl_queue_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9b3c667 dt_lfsck_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcaaf7ee4 cl_2queue_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcad86eeb cl_lock_is_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcafb480a cl_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0ab67f obd_max_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xccf7a8de obdo_cpu_to_le +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xccf808a6 cl_conf_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd27a1a6 llog_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd679f2c dump_lsm +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 0xce0d0b19 cl_page_own_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xceaa2852 lu_dev_del_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xced09c68 cl_lock_user_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcedb140a obdo_cmp_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcedc8916 cl_io_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcf17f9a2 llog_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcf9e3b02 lu_kmem_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0103eae cl_sync_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd08827c0 server_name2fsname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0b1158a lu_object_invariant +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 0xd1b1478b cl_attr2lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1f58645 lustre_swab_llog_hdr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd22e83ee cl_object_has_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd353d85c class_put_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd3b88655 class_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd3e37c7c local_object_unlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd444b92b lustre_register_client_fill_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd4e1fc36 lu_device_type_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd4fcb16f cl_io_iter_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd5918124 cl_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd5a69295 lu_context_key_quiesce_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd62bc40c llog_cat_init_and_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd638ac6e llog_osd_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd6413607 local_index_find_or_create_with_fid +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 0xd8191767 class_import_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd9192696 lu_device_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd98bccf9 dump_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda5b1ced class_find_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda74761c lu_ucred +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 0xdc3ba6a2 obd_llog_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdc5c5ff2 class_config_dump_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc40af0 class_check_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd78c0c7 lu_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xddbe85ef cl_type_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde290d53 lu_ucred_assert +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde7d985b obd_dirty_transit_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xded8fc4c lu_context_enter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdeefc386 cl_2queue_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf0f6c46 cl_object_kill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf51da3b cl_env_nested_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdfe4373d dt_txn_hook_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe028cf84 capa_encrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe086c5b6 cl_page_list_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe0c58e70 cl_page_list_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe10d9b04 lu_env_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe17edde0 lprocfs_add_simple +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe26327ec class_config_llog_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2eb4470 class_get_next_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe30b6258 cl_lock_get_trust +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe3323f5d class_handle_free_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe349ca29 cl_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe393a7db class_register_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe3aa35fc lu_kmem_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe466862b cl_lock_mutex_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe4b292d3 lprocfs_rd_server_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe60a9916 dt_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe66f73dc cl_io_rw_advance +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe6c4785a cl_lock_disclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe6dcd9c0 cl_lock_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7d83236 cleanup_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe87fffb7 cl_env_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8da0cd7 class_name2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8e84c32 class_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe9b13ba0 cl_use_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe9dd997d lprocfs_rd_timeouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xea7cf00e cl_lock_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeb3f388a _debug_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec3eae2c class_exp2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec7d6b85 obd_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee68bc29 lu_session_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeeeb5c27 class_conn2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeeeb79fa do_lcfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef0b9c22 cl_page_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef548e2c llog_cat_add_rec +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 0xf03c349c dt_index_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf095c5d6 cl_lock_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2fd6695 statfs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3236fa7 lprocfs_free_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3253e15 cl_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf490d5f9 class_del_profiles +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf58dc8cc lu_context_key_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf60d4659 capa_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf6529c0e lustre_idmap_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf652dad8 cl_req_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7020831 lprocfs_dt_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf70246f7 cl_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf71cfc21 lu_object_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7556526 class_new_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7a4e32e lprocfs_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7f42641 lprocfs_free_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf87e5702 llog_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8c2df92 obdo_set_parent_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf935f52d __llog_ctxt_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa813d06 capa_hmac +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfad9d987 llog_open_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfb26df05 lprocfs_exp_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbea0098 lu_types_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbfad22c cl_env_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc30433c lu_object_anon +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc7f18d0 obd_pages_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfce4103b lu_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfcead582 lu_object_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfcf926a0 class_disconnect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd5714f0 dump_lniobuf +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 0xfdc60dd2 cl_page_list_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfee4b7da cl_lock_descr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff57e92d class_match_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xffa4dda6 lprocfs_rd_connect_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfffc1f11 lustre_swab_ost_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xffff521b cl_page_list_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/osc/osc 0x5c4940c2 osc_update_enqueue +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 0x0204deac ldlm_lock_allow_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0240cd3f ptlrpc_free_rq_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0262daf2 ptlrpc_unregister_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0347df39 ldlm_cli_cancel_unused_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0348f0fc ptlrpc_prep_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x03b84a7a sptlrpc_sec_put +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 0x0546fc14 req_capsule_client_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x05e00208 ptlrpc_resend +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 0x08ba460f lustre_free_reply_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x08bb2d27 lustre_swab_obd_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x08feb985 ptlrpc_set_import_active +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 0x0afb26c5 _debug_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0bad546a __ptlrpc_free_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 0x0f66a6ab ldlm_cli_cancel_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0f8d53ff req_capsule_set_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10f18f20 interval_iterate_reverse +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10f40dde sptlrpc_target_export_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x115017f6 req_layout_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x11e39aed ldlm_destroy_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x127801cc ldlm_enqueue_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x12b6f5a3 ptlrpc_connection_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x12fce790 llog_origin_handle_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x13718f74 ptlrpc_restart_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1428ef45 llog_initiator_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x144ec27e ptlrpc_hpreq_handler +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 0x15b2ad65 ldlm_cli_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x165afdda ldlm_resource_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x172fb86d lustre_msg_hdr_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1747d8b3 ldlm_lockname +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x17950f60 RQF_SEC_CTX +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19108a0f RQF_OST_DISCONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19c08934 RQF_LDLM_INTENT_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1a4bca9c req_capsule_client_sized_get +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 0x1bae0270 interval_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1be21715 lustre_msg_size_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1c0343f8 ptlrpc_send_reply +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 0x1d258d33 sec2target_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d89b132 ptlrpc_prep_req_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d95fb78 ptlrpc_request_alloc +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 0x1ec8ceed ldlm_lock_change_resource +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 0x205fc33f lprocfs_wr_pinger_recov +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 0x233790b5 RMF_OST_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x235ea5f2 ptlrpc_mark_interrupted +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x24365f74 ldlm_register_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x244e5558 lustre_msg_get_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x24aafdba RMF_MGS_TARGET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2585a629 RMF_SEQ_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2587513c RQF_LDLM_CP_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x269554ce RQF_LDLM_INTENT_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x26f99d16 RQF_MGS_CONFIG_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x27d5227a client_obd_setup +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 0x2a866271 ptlrpc_set_add_new_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ba2c623 ptlrpc_set_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ba55672 sptlrpc_cli_enlarge_reqbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2c00c60d ptlrpc_sample_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2c676f21 ptlrpc_recover_import +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 0x2ce786b8 ptlrpc_request_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d12734a llog_origin_handle_read_header +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 0x2d83810a ldlm_resource_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2df11d30 ldlm_namespace_dump +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 0x2ed32de8 req_capsule_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f0e4f87 RQF_OST_QUOTACTL +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 0x306a2453 ldlm_pool_set_slv +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 0x32e7d84d lprocfs_wr_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33099569 ldlm_namespace_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x336bbd9a ptl_send_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33bb7761 ldlm_typename +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3560baf9 ptlrpcd_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35939a3d lustre_swab_fiemap +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x370169c6 ptlrpc_pinger_del_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3716e12c sptlrpc_enc_pool_put_pages +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 0x3a59ced1 req_capsule_server_get +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 0x3c12daec sptlrpc_req_replace_dead_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c63e62b RQF_MDS_REINT +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 0x3dddb3e2 dump_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ef3787b sptlrpc_conf_target_get_rules +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 0x3fcd3c51 ptlrpc_request_bufs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x401c60ff sptlrpc_conf_client_adapt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41008cef RQF_LDLM_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x42775277 ldlm_lock_allow_match_locked +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 0x4434037a req_capsule_init +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 0x4745fe2c ldlm_cli_cancel_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47f5e903 RMF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x48814c9f lustre_swab_ost_lvb_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4890b1b9 ldlm_prep_elc_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4969d25d client_import_add_conn +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 0x49b732a5 ptlrpc_activate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a5a2416 RMF_DLM_REQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4acc14bb ptlrpc_send_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4b09ce4b lustre_swab_mdt_rec_reint +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4b36b703 ptlrpc_stop_all_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4bcf0c29 ldlm_completion_ast_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4cde7af5 ldlm_reprocess_all_ns +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d082d6f ptlrpc_unpack_req_msg +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 0x4efb7869 ptlrpc_unregister_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f766c3b lustre_swab_generic_32s +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4faa48d8 sptlrpc_cli_wrap_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50443f6a ptlrpc_init_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5059128f ldlm_pool_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50dd74f8 RMF_STRING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5179690d ptlrpc_pinger_add_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5228bd66 lock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5262e81e ldlm_extent_shift_kms +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x52c62150 RMF_RCS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x53169521 ldlm_namespace_put +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 0x55d8c054 req_capsule_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5602b9d9 ptlrpc_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5725de0d ptlrpc_obd_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x574a368b ptlrpc_abort_inflight +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5838abe8 ldlm_get_enq_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x588035b4 RMF_UPDATE_REPLY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x591e6660 llog_origin_handle_close +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 0x59ca398b ptlrpc_add_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5a057439 interval_search +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ad7eda4 ldlm_init_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5af0d02a ldlm_lock_dump_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b1aa295 sptlrpc_import_flush_all_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b380edd lustre_pack_reply_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b6ba895 lustre_packed_msg_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c157199 ptlrpc_lprocfs_brw +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c6a3a83 RQF_SEQ_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5caae213 ptlrpc_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5d18473a client_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5d7f178f ldlm_pool_set_clv +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 0x5f8aed04 sptlrpc_cli_unwrap_bulk_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5f96ccdd ptlrpc_connection_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x60339a6d client_import_find_conn +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 0x609b6bad sptlrpc_import_flush_my_ctx +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 0x61ddf826 lprocfs_wr_evict_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x62192cf8 dump_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x624da948 ptlrpc_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x62aaae3f RQF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x62d677bb sptlrpc_import_sec_ref +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 0x6396fd6b sptlrpc_enc_pool_get_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6409c786 req_capsule_field_present +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x64599885 req_capsule_filled_sizes +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 0x65653203 llog_origin_handle_next_block +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x66dd00fa client_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6705c74c ldlm_namespace_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x67142172 sptlrpc_sec_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6812ff23 ldlm_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x685eeaba RMF_DLM_GL_DESC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6899f967 llog_origin_handle_cancel +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 0x6aa4d247 ptlrpc_pinger_sending_on_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6be97e7d ptlrpc_wake_delayed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c193a25 ldlm_glimpse_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c1fdf67 unlock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6cc8460a ptlrpc_req_finished_with_imp_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6d145443 ptlrpc_req_finished +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 0x6d88806b lustre_pack_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6e0d828b ldlm_lock2desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6e4f5587 ptlrpc_set_add_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6ed20499 ldlm_revalidate_lock_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6efa82b0 RQF_MGS_TARGET_REG +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6f6dc736 lustre_swab_mdt_remote_perm +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6fb92092 sptlrpc_flavor2name_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x703538e4 lustre_swab_hsm_current_action +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x709fd697 ptlrpc_request_alloc_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x70f9c966 ptlrpc_lprocfs_register_obd +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 0x72ef862c req_capsule_server_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x72f85bdb ptlrpc_nrs_policy_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x73a1d58b ldlm_pool_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x74840056 lustre_msg_set_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x74af6779 ptlrpc_lprocfs_unregister_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x756f5770 sptlrpc_cli_unwrap_bulk_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75a2c40d ldlm_put_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7652d9f6 ldlm_cli_enqueue_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x769cc715 ptlrpc_buf_set_swabbed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x76b728e5 lustre_swab_update_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77571cc6 lustre_swab_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x776728a2 req_capsule_init_area +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77840c82 sptlrpc_rule_set_choose +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77a487b9 ldlm_prep_enqueue_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7821a910 client_import_del_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7862ec3f sptlrpc_cli_ctx_wakeup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78bf9136 lustre_swab_ldlm_lock_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78c570ac ptlrpc_request_set_replen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a5d2b4f ldlm_namespace_new +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 0x7d9f5be2 target_pack_pool_reply +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 0x7fd2a92a do_set_info_async +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 0x814255a2 ptlrpc_deactivate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x817d7f1f lustre_msg_add_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8239fb2a client_disconnect_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8259c627 req_capsule_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x826d3c4f RQF_LDLM_GL_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x82ea8086 ptlrpc_reconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x832c6d2a ptlrpcd_wake +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x837efb00 RMF_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x849dcc85 sptlrpc_get_bulk_checksum +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85135801 RMF_DLM_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85191601 sptlrpc_gc_add_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 0x883cf13d sptlrpc_sec_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8859cf27 ldlm_lock_fail_match_locked +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 0x89cc92cb req_capsule_server_sized_get +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 0x8a8a276c req_capsule_has_field +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ac440fa ptlrpc_uuid_to_connection +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b854254 lustre_swab_mgs_config_res +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8cb71d4b RQF_MDS_REINT_CREATE_SLAVE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8d77ea75 lustre_msg_set_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8da3fca7 lustre_msg_add_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e9abe4d RMF_GENERIC_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e9f2903 ptlrpc_retain_replayable_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ef37a10 ldlm_pool_set_limit +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 0x9113abcc ptlrpc_nrs_policy_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x91439c26 ldlm_pool_add +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 0x92e13165 ldlm_resource_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x937531a5 ldlm_resource_unlink_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x937b1ee0 lustre_swab_mdt_ioepoch +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x94f855f4 sptlrpc_lprocfs_cliobd_attach +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 0x96115ba5 ptlrpc_connect_import +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 0x96beaa3d ptlrpc_request_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9798f2f1 RQF_MDS_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x980fcfdc ptlrpc_connection_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x99294b76 llog_origin_handle_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x993ab690 __ptlrpc_prep_bulk_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x99b6f731 ptlrpc_queue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a258886 RQF_MDS_GETSTATUS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a624ba9 ptlrpc_request_alloc_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a6f2f6d lustre_msg_set_opc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b5370ee req_capsule_server_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b70d3a6 llog_origin_handle_prev_block +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 0x9e5f5ddd ptlrpc_fail_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9fb088f1 lustre_swab_lov_mds_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa0ffa8a8 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 0xa2157e72 __ldlm_handle2lock +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 0xa37e887f ldlm_cli_cancel_unused +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3cf4b83 sptlrpc_cli_ctx_expire +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3d2a6ee RMF_CAPA1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3f19485 ptlrpc_save_lock +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 0xa65c6d5e ldlm_lock_cancel +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 0xa8045ea3 ldlm_lock_fail_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa82eb865 ldlm_namespace_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa93695ca ldlm_lock_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 0xaac8c9bd ldlm_pool_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xababc46b sptlrpc_svc_ctx_invalidate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xac0dc0f5 target_print_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xada9f2d1 target_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaddc3979 lustre_swab_lustre_capa_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae5360dd req_capsule_set +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 0xafaeba63 ptlrpc_set_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0751fa4 RQF_LLOG_ORIGIN_HANDLE_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb108bf13 ldlm_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1b43d8a dump_rcs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1d11096 ldlm_cli_enqueue_fini +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 0xb2b1817d lustre_swab_ost_lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb3be7092 ldlm_pool_get_lvf +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 0xb6c8faeb ptlrpc_register_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7b38189 RMF_MDT_MD +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7cb5bd4 ldlm_cancel_resource_local +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 0xb92b8558 ptlrpc_cleanup_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9b631cf lustre_swab_mgs_config_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xba041aeb ptlrpc_cleanup_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbaa76097 lustre_msg_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbbdf44bb lustre_pack_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc1370dc lustre_shrink_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc8b840b req_capsule_other_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbd83bc44 RQF_OBD_SET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbdef49fa sptlrpc_target_sec_part +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 0xbf38f4ac _ldlm_lock_debug +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 0xc14e8577 ptlrpc_replay_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc15dcaf9 lprocfs_wr_import +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 0xc40faf03 sptlrpc_target_update_exp_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc4681cb8 ldlm_blocking_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc47f55dc ptlrpc_register_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc49b2607 client_obd_cleanup +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 0xc61305ca ptlrpc_buf_need_swab +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc694be4b RQF_LLOG_ORIGIN_HANDLE_PREV_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc72ad037 ldlm_lock2handle +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 0xc8113fbe sptlrpc_gc_del_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc88e1c9b ldlm_resource_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc8f586a9 ptlrpc_connection_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xca43348d ldlm_cli_update_pool +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 0xcb8bc4fc ldlm_init_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcc06e763 ptlrpc_service_health_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcc98ed5c req_capsule_client_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcd3174ae ptlrpc_req_xid +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 0xcf64ef91 ldlm_destroy_export +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 0xd0bfdea5 sptlrpc_gc_add_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd13b5861 ldlm_flock_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd20fba81 ptlrpc_at_set_req_timeout +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 0xd537ded2 lustre_swab_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd54cd13a ptlrpc_disconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd55498b5 llog_client_ops +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 0xda2ac111 sptlrpc_proc_root +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xda4b7697 ptlrpc_invalidate_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 0xdcf910b9 lustre_swab_ost_last_id +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 0xdd7cc5a0 sptlrpc_register_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xddc40a85 lustre_msg_get_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xddcbaae5 ptlrpc_prep_bulk_imp +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 0xdece2246 sptlrpc_cli_ctx_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdee87192 sptlrpc_conf_log_update_begin +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdf2509af req_capsule_server_sized_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdf701ae7 lustre_swab_fid2path +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdf8f52d8 sptlrpc_cli_ctx_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0494b74 ldlm_replay_locks +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 0xe17da9ad ptlrpc_init_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe2a507fe req_capsule_client_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe40e0a50 lustre_msg_get_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe4ba30f8 ldlm_pool_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe57bd972 sptlrpc_current_user_desc_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe5c3c2c4 req_capsule_extend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe5d03b7e ptlrpcd_alloc_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe5d3db39 req_capsule_server_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe5e8169b lustre_errno_ntoh +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe60bc74e ldlm_pool_get_clv +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 0xea23efe2 sptlrpc_unregister_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeabaa0b1 lustre_swab_mdt_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeabac4fc sptlrpc_rule_set_merge +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeb74a4dd ptlrpc_req_set_repsize +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeb8b249c ldlm_pool_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xebb64e68 req_layout_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xebe4cb3d ptlrpc_commit_replies +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 0xed0e6c7e lprocfs_rd_pinger_recov +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 0xef07d9f7 ptlrpc_unregister_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef1aeca9 RMF_FLD_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xefe1fc00 req_capsule_server_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xefe63f9f ldlm_lock_downgrade +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 0xf17b0527 ptlrpc_check_set +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 0xf37550b8 ldlm_pool_del +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 0xf46b5774 lustre_pack_reply_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf4792c99 ptlrpc_request_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf510e37b ldlm_lock_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf5267e2b ptlrpc_start_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf544c1a2 ptlrpc_unpack_rep_msg +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 0xf7e4766e ldlm_lock_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf85cb27e sptlrpc_parse_rule +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf85e7b5f ldlm_namespace_foreach +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 0xfaea9d0e ldlm_blocking_ast_nocheck +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 0xfc575cf5 ldlm_pool_shrink +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 0xff86de71 ptlrpc_schedule_difficult_reply +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 0x50779b6c cxd2099_attach +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x0dd87cf5 go7007_read_interrupt +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x115af83e go7007_alloc +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x2e9858bd go7007_register_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x2f34cf14 go7007_parse_video_stream +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x34d94fec go7007_read_addr +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x5b9a2a05 go7007_boot_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x601bb749 go7007_update_board +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x6be59471 go7007_snd_remove +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xf60e6552 go7007_snd_init +EXPORT_SYMBOL drivers/staging/nvec/nvec 0x2099145e nvec_write_async +EXPORT_SYMBOL drivers/staging/nvec/nvec 0x84402fff nvec_write_sync +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x003a2a4e rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x026c2670 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x03e620d1 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0693991b dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0e86da2b rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1070efd6 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x10dc0217 rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1312d6d8 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x13572e9d rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1550c02b rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1576772d rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1924d4e3 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x21c7058f rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x235c128a rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2627fbf1 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x26b102fc rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2900ba9e rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2fe539c9 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4325c6ba alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4b7cadf7 Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x54681d78 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5cd8b2c7 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x60d905c3 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x67c84813 rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7139b64a notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x74e829e2 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7fba2a86 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8479ae49 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8969a01c free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8a508782 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8d2d957c rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8fcfce84 rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x969f37ee rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9b864ada rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa3bd2e8d rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb679fcaf rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb7bfffea rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb91226e0 rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbf5d68d9 rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc157a8b8 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xca5014e8 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcf36dd0e rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd0ba0845 rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd352b2be rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdcea179a rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe1155c4f rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe841677a rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf165c8d4 rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf7f6c7a7 rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfa9f18fb rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0bb89fcb ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x11bd27a9 ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1b207440 ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1c2f3ab8 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x21e71c5b ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x25b8d5d3 ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x279d24e8 SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3338840e ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3a53f21c ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3cbb989d ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x40fd4632 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x41b9e807 Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4660214e ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5011b1dc ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5210ecf6 ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x570f6169 ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5a422d06 Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5d2df6f9 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5d4b53e4 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x622424bb IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6328661b ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x63cc1de0 DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x64e647aa ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6af4ead1 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6c32c8b5 ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6ffecd48 ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7062cc5a ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7834921c ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7d631112 ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7fc3088d ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8056346f ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x835339ec ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x91c5c27c HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x95629138 ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9ab66d49 ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9b5c8574 ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9dd7222a ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9fe2cd15 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa08ab22d DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa5268e0b ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xabd7aab1 ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xae4060d9 ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb2d4a950 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc4ed39ff ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc8bc15bf ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd0b3a927 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd32ce5c1 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd5085392 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdb6db557 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdb85d5ce ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe52e08d5 ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe6bedd79 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf03252b6 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf814afce ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf99170a9 ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfcf9d16f Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x0017f35f set_bp_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x00ea0cde set_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x06d6f244 get_bp_dis_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x09df8f3e set_tap_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x0a8d32c3 get_bypass_slave_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x1936264c set_dis_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x1d2eb8ca get_tap_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x203af1f7 reset_bypass_wd_timer_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2070f14a set_bypass_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x27b990ef get_bypass_info_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2ba7cd35 get_wd_autoreset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2c3f1c17 get_tx_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2f59e636 get_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2fdb893a get_tap_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x361cf40a get_dis_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x45ca99c3 set_wd_autoreset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x550a188c set_bypass_wd_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x5cb59e92 get_bypass_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x66b60122 set_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x675208c0 set_tx_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x692623f2 get_std_nic_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x75131ec6 set_bypass_pwoff_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x76c0b7d0 set_tpl_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x7e872825 get_wd_exp_mode_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x7e8d701e get_wd_expire_time_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x86388b07 get_bp_disc_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x93ae4648 get_wd_set_caps_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x95e42b0d is_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x9df5f807 set_dis_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x9e21f42e set_std_nic_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xa689a214 get_bypass_wd_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xae117788 get_bp_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xc368d30d get_dis_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xccab5de0 get_bypass_caps_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd3e034b3 get_bypass_pwoff_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd9c1ccfc get_bp_disc_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd9d38d97 set_wd_exp_mode_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xe640f06e set_bp_disc_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xecdaa456 set_bp_hw_reset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xedcd3c1b get_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf06d67bf set_bp_dis_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf57c1671 get_bp_hw_reset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf693c3a1 bp_if_scan_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf8237882 get_bypass_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xfa59240d get_tpl_sd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x05af3c4c set_wd_exp_mode +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x05b08a42 set_bp_hw_reset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x0b0d5ce0 get_tap_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x0fc2e83c reset_bypass_wd_timer +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x123a8133 get_tx +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x157ec89c get_bp_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2440f05a get_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2b01d1d4 set_bp_dis_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2c27a2f0 set_dis_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2da97f4b is_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2e86c67b get_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x37416370 get_bp_hw_reset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x37bdab27 get_wd_autoreset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x3da96a18 get_bypass_caps +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4025805e get_bypass_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4940a0cc get_bypass_info +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4d21ff51 get_bypass_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5147360c get_bp_disc_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x515d4df1 get_bypass_slave +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5560267e set_wd_autoreset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5be44d44 set_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x6653590c get_wd_exp_mode +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x6bda14ec get_bp_dis_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x72c618ae set_bypass_wd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x76d47e6f set_bp_disc_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x794e3815 set_tap_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x7c6cbc16 get_tpl +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x84a263dc set_tx +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x8a16f22c set_tpl +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x946ff795 get_wd_set_caps +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x94f6aff2 get_bypass_wd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x9d1ecf73 set_bypass_pwoff +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xb1385629 set_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xbff68c45 set_bypass_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xc871c561 get_dis_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xcee528df set_std_nic +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xd202dd85 get_bypass_pwoff +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xd787f151 get_wd_expire_time +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xdb6a39d2 get_dis_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xebd25ae5 get_std_nic +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf1e9f8c1 set_bp_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf224abd9 get_tap_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf5a591b2 set_dis_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf643fd4c get_bp_disc_pwup +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x1693b5df xillybus_do_cleanup +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0xe640b6c1 xillybus_init_endpoint +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0xe69f07c6 xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0xefc235fd xillybus_endpoint_remove +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x02824a38 iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x097fa9b6 iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0a1d2e07 iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0b8d2b7e iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1164401b iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x11fb9319 iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1a94294e iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1db540b0 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2c38d21f iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3c4d714b iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4be6ed9b iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4d9b93b4 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4f793e5e iscsit_handle_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x50facec4 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x57cb0152 iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7057daf1 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x70c36754 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7434751d iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7688c123 iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9000bcc3 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9503f84f iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9d0b4d75 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc153a06a iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc33ca542 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc6adb0d9 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd56dc35f iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe066c478 iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xfb0af327 iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/target_core_mod 0x00fd6832 fc_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x092529cb core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x095a44f3 target_to_linux_sector +EXPORT_SYMBOL drivers/target/target_core_mod 0x09974c37 fc_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x103eed04 sbc_execute_unmap +EXPORT_SYMBOL drivers/target/target_core_mod 0x1324a880 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x143f5342 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x150f941b target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x1d19db52 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x1ea84735 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x1f8c74bc sas_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x218fe909 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x28ae9e11 core_tpg_clear_object_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x2d3f8ac1 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x33dc2783 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x3976bc6a transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x39ef5505 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x3a523a7f target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x3e193f6a transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x4407bc45 target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x4c2ad844 target_fabric_configfs_init +EXPORT_SYMBOL drivers/target/target_core_mod 0x4f1d8ce8 iscsi_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x4fb5d1da core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x521dd0de target_configure_unmap_from_queue +EXPORT_SYMBOL drivers/target/target_core_mod 0x55942ea2 sas_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x635bc033 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x64a27583 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x68e71460 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x6b6ac2ca sas_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x6c217128 target_fabric_configfs_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x725f443c core_tpg_add_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x7b4c2886 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x82d57a4c transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x8372c3f0 iscsi_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x875a888b transport_subsystem_release +EXPORT_SYMBOL drivers/target/target_core_mod 0x8afbaba5 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x8c33858d fc_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x8ca15c25 iscsi_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x8ff5fbde sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x936c54a1 sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x93b61605 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x93d0f9b5 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x94c8b13b transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x97943b87 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x9b5fd97c transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0xa56e0ed1 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xa59dee0c target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xa91111a5 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xab35e8cd transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0xb1f3f18c transport_subsystem_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xb559d205 iscsi_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0xba2541f6 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0xbad7d2bf target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0xbfa00836 core_tpg_del_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xc070fe59 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xc0a8064b spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0xc0c49b10 spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0xc48818cc spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0xc771d330 target_fabric_configfs_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xc8ca331a target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xcc816099 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0xcd672c42 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xcf355ac7 sas_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0xd6a6781d fc_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0xd7d9050e target_fabric_configfs_free +EXPORT_SYMBOL drivers/target/target_core_mod 0xd9b66f00 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xdc4c78d0 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xdd027ca1 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0xdfb428bc core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0xe0be538d target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xe42ea419 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xe8fd66d2 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf3b02ef7 __transport_register_session +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0xcbfca94a usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0x77ecd44b unregister_gadget_item +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x37a81d43 gether_set_qmult +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x45220cde gether_get_qmult +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x4d610571 gether_get_host_addr_u8 +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x557f65d4 gether_get_host_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x65533010 gether_get_host_addr_cdc +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x79606d7c gether_connect +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x7be7455d gether_set_gadget +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x7c0e51e9 gether_set_host_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x7ea1ba0a gether_get_dev_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x8c2fef54 gether_setup_name +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x90f58beb gether_get_ifname +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xa39c901b gether_register_netdev +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xdfd86df6 gether_setup_name_default +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xe8153332 gether_disconnect +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xef86deb0 gether_set_dev_addr +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x161acefb rndis_set_param_dev +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x3a6d4f22 rndis_free_response +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x3ca38e3a rndis_signal_connect +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x4ca90996 rndis_signal_disconnect +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x5d22b406 rndis_register +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x785d494b rndis_msg_parser +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x840dd143 rndis_deregister +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x988ad2a2 rndis_set_param_vendor +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x9acf72e4 rndis_set_param_medium +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x9eda98fe rndis_add_hdr +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xa90054ee rndis_uninit +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xb677b391 rndis_rm_hdr +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xb971ebca rndis_get_next_response +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xd2fe47b1 rndis_set_host_mac +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x1710b539 fsg_fs_bulk_out_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x1b1cc3af store_cdrom_address +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x28fc1680 fsg_lun_fsync_sub +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x2933ee1d fsg_ss_bulk_in_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x2fcc5362 fsg_lun_open +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x398778e1 fsg_ss_function +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x4119ac6f fsg_store_cdrom +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x41fc3a5e fsg_show_file +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x423845e4 fsg_ss_bulk_in_comp_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x47feeb4d fsg_store_removable +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x538fb37c fsg_store_nofua +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x56344daf fsg_hs_bulk_out_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x5bdeb24c fsg_show_removable +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x5f9ebdf6 fsg_show_nofua +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x6582fa41 fsg_store_file +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x844f7125 fsg_show_ro +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x857b6dc2 fsg_hs_function +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x870e5af7 fsg_show_cdrom +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x94fe0e84 fsg_store_ro +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x95cffb3e fsg_hs_bulk_in_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xa5cae92f fsg_ss_bulk_out_comp_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xa5f99b69 fsg_fs_function +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xaa8c684a fsg_lun_close +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xb52ba28a fsg_intf_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xb54d0d95 fsg_fs_bulk_in_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xf4efc0c8 fsg_ss_bulk_out_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_rndis 0xc4d651ca rndis_borrow_net +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0x8dbf251b sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x03b59783 usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x05d98151 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x07aaf935 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x2f34b793 usb_wwan_set_termios +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x4792ec47 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x757d5263 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x9d276636 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xaa965d84 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xcb72b56b usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xd7ade17f usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe640c485 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe6c6adb9 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf2d39bcc usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x1e5ac459 usb_serial_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x21fc8a6b usb_serial_resume +EXPORT_SYMBOL drivers/vhost/vringh 0x0dda8c5a vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x1f063017 vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x2e91ca97 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x367ce26a vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x36dfce73 vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3eaf442a vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x3fa42e4f vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x5dafbd4e vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x66af098b vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x6d0e7948 vringh_abandon_user +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 0xaf8e4a0e vringh_notify_disable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xafb47dae vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0xc884d704 vringh_notify_disable_user +EXPORT_SYMBOL drivers/vhost/vringh 0xc8bee0a4 vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xd11d2709 vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xda4ea4cc vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0xfc7dcad2 vringh_getdesc_user +EXPORT_SYMBOL drivers/video/backlight/generic_bl 0x366d19ef genericbl_limit_intensity +EXPORT_SYMBOL drivers/video/backlight/lcd 0x0f630945 devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x0fda52ec lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xd5839e5c lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xea685d5a devm_lcd_device_register +EXPORT_SYMBOL drivers/video/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/cyber2000fb 0x534b6f18 cyber2000fb_disable_extregs +EXPORT_SYMBOL drivers/video/cyber2000fb 0x9e6ebdc1 cyber2000fb_attach +EXPORT_SYMBOL drivers/video/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/macmodes 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL drivers/video/macmodes 0x3c577bb2 mac_find_mode +EXPORT_SYMBOL drivers/video/macmodes 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x1186a3d4 matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x3c96eb24 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x8b895288 g450_mnp2f +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x553a34b5 matrox_mystique +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xa3b0bc1f DAC1064_global_restore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xe92ff968 matrox_G100 +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xfafa8832 DAC1064_global_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_Ti3026 0xebdad533 matrox_millennium +EXPORT_SYMBOL drivers/video/matrox/matroxfb_accel 0x19344a39 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x0590c8a9 matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x16db095e matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x6b14f010 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0xa3bc07f3 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0x579f7cb5 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0x9a2cde13 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x2ef9225b matroxfb_read_pins +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x4f86d9bb matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x5efe79de matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x647dfed7 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xe0d1b6fa matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/mb862xx/mb862xxfb 0xdaa4cb49 mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/output 0x69e60bf2 video_output_register +EXPORT_SYMBOL drivers/video/output 0x9fdc5a09 video_output_unregister +EXPORT_SYMBOL drivers/video/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/svgalib 0x011998c4 svga_tilefill +EXPORT_SYMBOL drivers/video/svgalib 0x0db8b6f7 svga_tilecopy +EXPORT_SYMBOL drivers/video/svgalib 0x1638bb71 svga_tilecursor +EXPORT_SYMBOL drivers/video/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/svgalib 0x3301dc82 svga_tileblit +EXPORT_SYMBOL drivers/video/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/svgalib 0x5ac39db8 svga_get_caps +EXPORT_SYMBOL drivers/video/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/svgalib 0x78b8abe6 svga_get_tilemax +EXPORT_SYMBOL drivers/video/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/svgalib 0xff0b5d9b svga_settile +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/vme/vme 0x00d7e722 vme_lm_count +EXPORT_SYMBOL drivers/vme/vme 0x04e58e28 vme_slot_get +EXPORT_SYMBOL drivers/vme/vme 0x072f901c vme_master_rmw +EXPORT_SYMBOL drivers/vme/vme 0x0ec5babe vme_dma_free +EXPORT_SYMBOL drivers/vme/vme 0x108498b3 vme_dma_list_free +EXPORT_SYMBOL drivers/vme/vme 0x2157965d vme_dma_pci_attribute +EXPORT_SYMBOL drivers/vme/vme 0x219ba6f5 vme_slave_request +EXPORT_SYMBOL drivers/vme/vme 0x22d31765 vme_master_request +EXPORT_SYMBOL drivers/vme/vme 0x2527a087 vme_slave_set +EXPORT_SYMBOL drivers/vme/vme 0x271bc5cc vme_bus_type +EXPORT_SYMBOL drivers/vme/vme 0x2e893401 vme_unregister_driver +EXPORT_SYMBOL drivers/vme/vme 0x46649cd1 vme_lm_set +EXPORT_SYMBOL drivers/vme/vme 0x48b99a13 vme_lm_free +EXPORT_SYMBOL drivers/vme/vme 0x4baf35a7 vme_master_get +EXPORT_SYMBOL drivers/vme/vme 0x4da25d4a vme_unregister_bridge +EXPORT_SYMBOL drivers/vme/vme 0x50abb7e1 vme_register_driver +EXPORT_SYMBOL drivers/vme/vme 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL drivers/vme/vme 0x5aff4177 vme_lm_get +EXPORT_SYMBOL drivers/vme/vme 0x66227eae vme_alloc_consistent +EXPORT_SYMBOL drivers/vme/vme 0x7cf35220 vme_master_free +EXPORT_SYMBOL drivers/vme/vme 0x7fde2edb vme_master_read +EXPORT_SYMBOL drivers/vme/vme 0x81cea36f vme_irq_free +EXPORT_SYMBOL drivers/vme/vme 0x84a69fdc vme_slave_get +EXPORT_SYMBOL drivers/vme/vme 0x84a79a51 vme_irq_handler +EXPORT_SYMBOL drivers/vme/vme 0x8adeb682 vme_dma_request +EXPORT_SYMBOL drivers/vme/vme 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL drivers/vme/vme 0x94b2590f vme_free_consistent +EXPORT_SYMBOL drivers/vme/vme 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL drivers/vme/vme 0xa31bdf07 vme_master_set +EXPORT_SYMBOL drivers/vme/vme 0xbe85daf9 vme_new_dma_list +EXPORT_SYMBOL drivers/vme/vme 0xbf51f3b5 vme_irq_request +EXPORT_SYMBOL drivers/vme/vme 0xc0bc7aca vme_lm_request +EXPORT_SYMBOL drivers/vme/vme 0xcad82f09 vme_dma_list_add +EXPORT_SYMBOL drivers/vme/vme 0xd29a15b7 vme_dma_list_exec +EXPORT_SYMBOL drivers/vme/vme 0xd797b9a5 vme_master_write +EXPORT_SYMBOL drivers/vme/vme 0xd8a2f5e1 vme_irq_generate +EXPORT_SYMBOL drivers/vme/vme 0xdff905e5 vme_slave_free +EXPORT_SYMBOL drivers/vme/vme 0xe693a6ce vme_get_size +EXPORT_SYMBOL drivers/vme/vme 0xe87d223e vme_register_bridge +EXPORT_SYMBOL drivers/vme/vme 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL drivers/vme/vme 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x622b883d w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x89e57116 w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x8ef7f946 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xc6b8e9ad w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xc136cfcf w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xd32ae889 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x23aa7d63 w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xeaccfc4d w1_ds2781_io +EXPORT_SYMBOL drivers/w1/wire 0x01e7ce63 w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0x0ae32d1e w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0xe6ed26f4 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0xf7ff3ec0 w1_unregister_family +EXPORT_SYMBOL fs/btrfs/btrfs 0x27476846 ulist_reinit +EXPORT_SYMBOL fs/btrfs/btrfs 0x41e6a9d2 ulist_init +EXPORT_SYMBOL fs/btrfs/btrfs 0x7e2ee765 ulist_free +EXPORT_SYMBOL fs/btrfs/btrfs 0xa2eec2e8 ulist_fini +EXPORT_SYMBOL fs/btrfs/btrfs 0xb1320bc8 ulist_add +EXPORT_SYMBOL fs/btrfs/btrfs 0xb42289d2 ulist_alloc +EXPORT_SYMBOL fs/btrfs/btrfs 0xc2c745db ulist_next +EXPORT_SYMBOL fs/configfs/configfs 0x4b00a430 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x69bd97da configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0x6a3544ae config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0x70f90bf7 config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x87a4fbca config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0xa34d8996 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xb5aa91af config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0xbd3b36c1 configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0xd21cd71c configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xe0018a88 config_item_init +EXPORT_SYMBOL fs/configfs/configfs 0xe77ea769 configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xfd49c23e config_item_get +EXPORT_SYMBOL fs/exofs/libore 0x0961a380 ore_read +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x3be69638 ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0x4396105e ore_create +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x4cce0fa4 ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0x554e92f7 ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0x869c65d2 ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xccaada51 ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0xe6eb3700 ore_write +EXPORT_SYMBOL fs/exofs/libore 0xf2e3f7ab extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0xf63aa712 ore_remove +EXPORT_SYMBOL fs/fscache/fscache 0x09d309fb __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x136f4925 __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0x20cdcabb __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x25631afd fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x306bcaf8 __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x32aad8c0 fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0x344b794c fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0x35fe7b7a __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x3c90a394 __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x3d60a721 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x44249d7a fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x533be0d5 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x55f6ba1e __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x58f264fb __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0x59fe4929 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x5da1d09d fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x66df0cb6 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0x7347d924 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x75f8e643 __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x7cbcc462 __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x806671fc fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x8dfa517b fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x9347a574 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x9583b8fa __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x95e12a8f __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0xa4a003ec __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xadfb152c __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0xaec64fc7 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xaf147cc8 fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0xb2a1aac7 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0xd944a1ec __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xe547e32f fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0xe6109c0b fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0xe86fc423 fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0xe88382f6 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xed8f2fef fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0xf09e307c __fscache_update_cookie +EXPORT_SYMBOL fs/nfsd/nfsd 0x35e33c1e nfs4_acl_write_who +EXPORT_SYMBOL fs/nfsd/nfsd 0x5a157ae4 nfs4_acl_get_whotype +EXPORT_SYMBOL fs/nfsd/nfsd 0xa0f4b528 nfs4_acl_posix_to_nfsv4 +EXPORT_SYMBOL fs/nfsd/nfsd 0xb25b2957 nfs4_acl_nfsv4_to_posix +EXPORT_SYMBOL fs/nfsd/nfsd 0xe13337f0 nfs4_acl_new +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x2d84c702 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x3069cd24 qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0x4b25d1b6 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x9e91ea21 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xd578fa83 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 0xa7587646 crc7 +EXPORT_SYMBOL lib/crc7 0xd80c3603 crc7_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 0x08b05f73 lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x2686c90f lc_get_cumulative +EXPORT_SYMBOL lib/lru_cache 0x46fbdfab lc_find +EXPORT_SYMBOL lib/lru_cache 0x5817613d lc_del +EXPORT_SYMBOL lib/lru_cache 0x79fae9f7 lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x85cb3257 lc_reset +EXPORT_SYMBOL lib/lru_cache 0x906dc1af lc_try_get +EXPORT_SYMBOL lib/lru_cache 0x9da3f346 lc_set +EXPORT_SYMBOL lib/lru_cache 0xaf36660e lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0xbb720813 lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0xc418dc0b lc_is_used +EXPORT_SYMBOL lib/lru_cache 0xc63c4ce8 lc_committed +EXPORT_SYMBOL lib/lru_cache 0xd91d1d0a lc_create +EXPORT_SYMBOL lib/lru_cache 0xda2a1a5f lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0xe4fd51f2 lc_put +EXPORT_SYMBOL lib/lru_cache 0xe56bf09b lc_get +EXPORT_SYMBOL lib/lru_cache 0xf1edcc81 lc_destroy +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/802/p8022 0xb5ab5f2a unregister_8022_client +EXPORT_SYMBOL net/802/p8022 0xeda2374c register_8022_client +EXPORT_SYMBOL net/802/p8023 0x1941f084 make_8023_client +EXPORT_SYMBOL net/802/p8023 0xdc3c2e9e destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0x2e70ad4a unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0x5518a21c register_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x03528a9a p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x0f95eb12 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x1a37c7e9 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x20b4df62 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x2483cbe2 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x259488ac p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x272670d2 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x281f75ee p9_payload_gup +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x3841d9e5 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x45a1fdc2 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x4b874846 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x4c5dd9e0 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x4f331379 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x51f46af2 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x52714d4f p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x57a11d87 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x57c689b7 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x5b6a4af0 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x60aeff09 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x6c9f1886 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x6f2c821e v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x7498aa6e v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x8825700d p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x91622b08 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x977a0030 p9_nr_pages +EXPORT_SYMBOL net/9p/9pnet 0x99d75331 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x9b29249d v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0xa057af5f p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0xa4414ce5 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0xa681995f p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0xa8ad92f8 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xb51bd54a v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0xba4804f5 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0xbc8876a1 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0xbd74ac54 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xc916c292 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0xca8ea1f4 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0xd24a436e p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0xd40ebecb p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0xd4706ae8 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0xe2cd7b3f p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe8c833a0 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0xe9f7ead3 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0xea58e3a1 p9_client_write +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 0x1b3c4cb9 atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0x366bfef9 aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0x75cf2c24 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0xe25f4b4a atrtr_get_dev +EXPORT_SYMBOL net/atm/atm 0x08f996f4 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x156e0dc2 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x16113925 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x29f2c62a vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x69d51edb atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x7baa4706 atm_charge +EXPORT_SYMBOL net/atm/atm 0x85aba5a7 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x9b8b43c6 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x9d3f5eed 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 0xbf46d006 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0xebfbc088 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0xf0174755 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/atm/atm 0xf5d132c5 atm_alloc_charge +EXPORT_SYMBOL net/ax25/ax25 0x026c1368 ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0x135aacbf ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x2be1ab5a 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 0x69800b6c ax25_hard_header +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0xa1ac87cb ax25_rebuild_header +EXPORT_SYMBOL net/ax25/ax25 0xa61ee53a ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0xab374e4c ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0xbfdca580 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xd7d8d881 ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0xfa220fe9 ax25_find_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x02ae7e93 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0x06403279 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1a15b890 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1a32a590 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1d326b83 l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1e2f40d8 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1f7f18f5 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x277449b8 __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x28a81585 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x37777646 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x42e61966 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47b98319 l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4d3977e8 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x55668e93 hci_recv_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x56e85c5a bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5b68cdbd l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5dcb06ae bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x75647b40 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7c640527 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7d573758 l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7f565c57 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8151bc62 hci_recv_stream_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8219eee8 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x84349b53 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x89a81efb bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8ef2ebad __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x95944c24 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa3d5dd87 hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb3a6693e hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb61a0c3b bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb97a0408 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcce1932d hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdc04413a hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe5758f2e bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe6cc7675 l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf18142ab bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf73799f1 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf9662367 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfaa6f6f7 bt_sock_link +EXPORT_SYMBOL net/bridge/bridge 0xd90d2ea2 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x75f7a33e ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x865ad73b ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xd88a9d1d 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 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x436770bc caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x4fc25776 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x6e01bb6c cfcnfg_add_phy_layer +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 0xa0b0bf38 get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xec37e03f caif_connect_client +EXPORT_SYMBOL net/can/can 0x0b6db3f7 can_proto_register +EXPORT_SYMBOL net/can/can 0x4beeff53 can_ioctl +EXPORT_SYMBOL net/can/can 0x87516e35 can_rx_register +EXPORT_SYMBOL net/can/can 0xcab7ad90 can_send +EXPORT_SYMBOL net/can/can 0xcfa7d170 can_rx_unregister +EXPORT_SYMBOL net/can/can 0xfebc3328 can_proto_unregister +EXPORT_SYMBOL net/ceph/libceph 0x019672db ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0a44d594 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0x0b072832 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x0b63a816 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x0f9eed76 ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x10940306 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0x1475bf0d ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x15aca8bc ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x197effcb ceph_osdc_release_request +EXPORT_SYMBOL net/ceph/libceph 0x1c61b3c2 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x1dfe3b44 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x1ee048f2 osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0x201050a5 osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x256d10c4 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x2d281471 osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x2e84a8bc ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x3158173e ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x346aca84 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x3888d473 ceph_osdc_unregister_linger_request +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3b5cdcfa ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x3d241167 osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x3df0ec7c ceph_calc_ceph_pg +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x41d35005 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0x4205ffd7 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x42541a8d ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x43c8d341 ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x43efd647 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x45fc1c25 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x493264f5 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x4b7d5241 ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x55da53fc osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x5727b9d4 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x5ba7f355 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x5ca341da ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0x5f2af9c1 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x5fe4b2fa ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x63fa2f33 ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0x68e499c1 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6c5d5ac1 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x6d2d06a1 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0x6ea41c07 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x6ed41be2 ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0x747d7f73 ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x77692acb ceph_msg_last_put +EXPORT_SYMBOL net/ceph/libceph 0x7d84953e ceph_monc_create_snapid +EXPORT_SYMBOL net/ceph/libceph 0x8378f518 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x86d690b7 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0x949b4be0 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x94d14e53 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x97b2aee3 ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0x9840d770 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x99423302 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9a440e6c ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa40bd703 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0xa5a6333f ceph_copy_page_vector_to_user +EXPORT_SYMBOL net/ceph/libceph 0xa99d0516 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xaaa75162 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0xac9b7f85 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb0be59ae osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xb90a8818 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0xb99ce8ac ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xbe3bb304 osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc4b8021e ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0xc55de604 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xd1e89a8d ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd329bef0 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0xd50948d0 osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xd6858ad7 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0xda99fd54 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xdd49f78e ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0xe43c5ebc ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xe56b653d osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0xe82c9c32 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0xe99cf991 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0xeb25aa17 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xeb73d589 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xeceafdd8 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0xf0f98c16 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0xf548f7a0 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0xf869d56a osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0xfbc49a62 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0xfcee79ba ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0xff3cca6a osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0xff678124 ceph_messenger_init +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x82e07db0 dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/ieee802154 0x1521a3f8 ieee802154_nl_assoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x24c101d1 ieee802154_nl_disassoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x31752814 ieee802154_nl_start_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x32d73d29 ieee802154_nl_scan_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x43f0010c wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x77581ac9 ieee802154_nl_beacon_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x8af3ec7f wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0x90bcd1d8 wpan_phy_alloc +EXPORT_SYMBOL net/ieee802154/ieee802154 0x9495cc83 ieee802154_nl_assoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0xa5cbe7cf wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0xb3221f7f wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0xb7125bae ieee802154_nl_disassoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xc1ce020c wpan_phy_free +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x94b1eabe arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xb6ac8778 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xef2f967b arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x4cce173f ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xa4197ff3 ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xaca8e75d ipt_unregister_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x8546eccc xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0xab40d735 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x60c35143 ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x7ef74e12 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x1b5e7938 ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x5f75414f ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xfeeb1a09 ip6t_register_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x5143e450 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/tunnel6 0xf22a85be xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xa7811475 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xf8819f29 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x541d65d8 ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x5f490034 ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x8e2a101c ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x96396b36 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xa051d6f8 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xaf810eca ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xd0dd438f ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xee24799d ircomm_connect_request +EXPORT_SYMBOL net/irda/irda 0x00542c1e irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x014f82b8 iriap_close +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x0c895ad4 irlap_open +EXPORT_SYMBOL net/irda/irda 0x17a491c5 irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0x2036ad06 irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x2cd2b9f2 iriap_open +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 0x4761a49d irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x58d5d74d irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x5b6a347f irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x63b42fd3 irttp_close_tsap +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 0x6eb15a40 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x731cec71 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x79211e97 irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7e67ca6e irias_new_object +EXPORT_SYMBOL net/irda/irda 0x81d42cf3 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x854d01e6 irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x8982c8d9 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x8a44dd5e hashbin_new +EXPORT_SYMBOL net/irda/irda 0x8f86f520 irttp_dup +EXPORT_SYMBOL net/irda/irda 0x90ddb6bd hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x993ad14b irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x9a405955 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x9ffda243 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0xb3c13d7f irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0xb521d4d3 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 0xbce72bb7 irttp_open_tsap +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 0xc222f32c irda_notify_init +EXPORT_SYMBOL net/irda/irda 0xc477368d irias_find_object +EXPORT_SYMBOL net/irda/irda 0xc858fe6d irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0xcf65c5fc irlap_close +EXPORT_SYMBOL net/irda/irda 0xd1abbde6 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0xd7f25691 irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xea975caf iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0xeb440ee9 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 0xf8d17da4 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0xfbac3b33 async_unwrap_char +EXPORT_SYMBOL net/l2tp/l2tp_core 0xc242cbe6 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x05ffb007 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x24677c45 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x57be028c lapb_register +EXPORT_SYMBOL net/lapb/lapb 0x5b6e2594 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x74f181af lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x78a23688 lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x964910bd lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0xc2d72063 lapb_disconnect_request +EXPORT_SYMBOL net/llc/llc 0x1e9e99fd llc_sap_list_lock +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x436428fa llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x4766c845 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x542d6bf7 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x6d887e83 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x84a90460 llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0xade6c349 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0xc5406959 llc_sap_find +EXPORT_SYMBOL net/mac80211/mac80211 0x009376f2 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x019d141f ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x05c4cbaf ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0x0f507372 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x12f6c9a2 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x14eae6d3 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x174a8ef3 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x1954de2e ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x1aef196d ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x1bb5bb01 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x21a2ae71 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x25ce974c ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x27ce41e5 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x2c617a6c ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x2dea74db ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x2e816dd2 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x2f7d893c ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x3201681b ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x3ba4982c ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0x441962ad ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x4dc375ab ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x4efd5255 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x512cd3c1 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x545951cd ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x5520e2e6 ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x5713d4e2 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0x59d45398 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x5c28cca5 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x60a078eb ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x6cb65163 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x70eac0dd ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x787ae00e ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x79d507f5 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x84a0b932 ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x8a97e9a3 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x8b6c5569 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x96625dcf ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x97e00205 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x985aeaed ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x9c5e6334 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0x9dc856f2 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xa01a376d rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xa0b69e0f ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xa1a17021 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0xa1fc36c4 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xa32e8bac ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0xa5ff3ca8 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xa71086e2 ieee80211_alloc_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xa978c6a9 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0xaa157485 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0xaf71379a wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xb383f60b ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0xb5a306d2 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xb6c65c8b ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0xc09eea0b ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xc2822ca2 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xc516ddc5 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xc7e9782e ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xcccafe99 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xd0c8e178 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xd1d948b5 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0xd5af5e1e ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xd5f1413e ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0xd915bd59 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0xddb47d52 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xe36d1491 ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0xe5037985 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xe57715e3 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0xf32448fd ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xf395de03 ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0xf3cb2b12 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0xf5e19137 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xfca9adbd ieee80211_rx +EXPORT_SYMBOL net/mac802154/mac802154 0x5be77b24 ieee802154_register_device +EXPORT_SYMBOL net/mac802154/mac802154 0x79c8a8fe ieee802154_alloc_device +EXPORT_SYMBOL net/mac802154/mac802154 0x82780fd3 ieee802154_free_device +EXPORT_SYMBOL net/mac802154/mac802154 0x9cbec427 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0xef193046 ieee802154_unregister_device +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0e77ff3a register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0f83a51a register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x31f69419 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x519f933f ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x6375c1ce ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x8755c3b4 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x8857a318 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x8c34ecba ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x917e1d0a ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xbf119d1e ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc27eabb8 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xda16e034 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe1d1da10 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xffc6bd5e unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x77269602 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x9cc34b07 __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xc159ec0a nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_conntrack_proto_gre 0xebc6873d nf_ct_gre_keymap_flush +EXPORT_SYMBOL net/netfilter/nf_nat 0x14da7ec7 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x2101b4a3 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x81673adc nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0x9141f067 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0x9ba09724 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0xf88a041b nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/x_tables 0x08c473b7 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x0bcf74e8 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x3edfbd6b xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x5163fb96 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x796354e5 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x80d1997c xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xa1b1604c xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0xb28f5ef1 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xb71058a4 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0xc0250d4c xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xc88c3308 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0xd87ae60d xt_check_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0xe646e440 xt_register_targets +EXPORT_SYMBOL net/nfc/hci/hci 0x10510092 nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0x1361d23f nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x31f9f06d nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x375013a0 nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x45b2015a nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x4ea33072 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x7f07ce26 nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0x8756b6c9 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x8a232972 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0x91c6c30d nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x996fd51b nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xc090efd1 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0xd0bf948e nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0xd4cbb4a0 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0xe8344673 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xfa44d076 nfc_hci_send_response +EXPORT_SYMBOL net/nfc/hci/hci 0xff552f0c nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xff8270f1 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/nci/nci 0x46385589 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xbe07756c nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0xdd221e7b nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0xf1f405b2 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0xf23d7de2 nci_register_device +EXPORT_SYMBOL net/nfc/nfc 0x12411c2d nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x163ce0fb nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x25f6bcf1 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x28cbfeaf nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x2f3137b4 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x409c7f02 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0x61e9483f nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0x6bf10dfe nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0x6d8cc6e1 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0x70d2470c nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x7194d7e2 nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x7783d566 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x77f32c20 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x832b804b nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0xa7832963 nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0xada80b9a nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xb31ed1b0 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0xba0e0f74 nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0xbf11924a nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0xd35475f9 nfc_class +EXPORT_SYMBOL net/nfc/nfc_digital 0x72e4e09d nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xa6db85de nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xde9636fe nfc_digital_register_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xfe97654f nfc_digital_free_device +EXPORT_SYMBOL net/phonet/phonet 0x13f2dae3 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0x36c783d6 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x3a828137 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0x8f7aeb32 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0x9e8946af pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0xb0a38f4f pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0xc8642d68 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0xe8646843 phonet_proto_register +EXPORT_SYMBOL net/rds/rds 0x5031b8c5 rds_str_array +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x1556a503 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x1d7caa34 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x4022a4ee rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x69b42895 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x6b6bbaa5 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x6e2ff6b9 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x6f566072 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x7c2086bc rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x7d5d3f85 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x7ef904e2 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x91bfd279 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x98484f28 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xda0d02b4 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xded6f692 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe1da1209 rxrpc_kernel_send_data +EXPORT_SYMBOL net/sctp/sctp 0xd85949f8 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x8a6f8b7d gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x99eb255f gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xf83b3603 gss_mech_get +EXPORT_SYMBOL net/sunrpc/sunrpc 0x7948db15 svc_pool_stats_open +EXPORT_SYMBOL net/wimax/wimax 0x622edbd9 wimax_reset +EXPORT_SYMBOL net/wimax/wimax 0x9afe1fda wimax_rfkill +EXPORT_SYMBOL net/wireless/cfg80211 0x00c2622c cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x038d7349 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x045efb07 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x0650375c cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0x06f45a00 cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x09142b27 cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x111cba19 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 0x1b1455d5 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x1ea2a7d2 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x21360af8 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x2613fbdc cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x26b74be8 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x288f0a8d cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0x3318dab1 cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x33d799c2 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x344c2923 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x347b680d cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x36a27241 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x385ed021 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x3cc96289 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x3d6d1d42 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x406a8302 cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x44a1f8c0 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x44fc2fd6 cfg80211_del_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x49807196 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x4c3b5878 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x4c40b2fb ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x4d3206ff cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0x54839cf3 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x549ae50f ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x559d6cc4 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x56efbfa6 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x63cebdad cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x63d735c7 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x64f902df ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x656868f9 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x6e3a844c cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x6f7289ec cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x709a7676 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x747fc634 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x776faf99 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x795241eb cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x7cb50354 cfg80211_inform_bss_width +EXPORT_SYMBOL net/wireless/cfg80211 0x7e60462b cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x8a0dae57 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x9318fdb7 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x9578965b cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x95a919a0 wiphy_new +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x9a1cc98c cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0xa097e120 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0xa1425906 ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa4750a9c cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0xaf07a327 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0xb5976384 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xba46c6b0 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0xbc787682 cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0xbf3c03bb cfg80211_inform_bss_width_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xc15c8611 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xcedadf3b cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0xcf618a57 cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0xd5c81d43 cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xda93880e wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xdc874972 cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0xdf8256d2 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xe096e1d7 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0xe0fca52a cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xe2799390 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xe34ade0c ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xeb3ee0fb cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xec6c4255 cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xee42db3c cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0xf5c63ff0 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xf630839e cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0xfdc17a3c cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x1d2fbf25 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x2d0f99e5 print_ssid +EXPORT_SYMBOL net/wireless/lib80211 0x44732aa9 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x5ad4a8b8 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0x96ea59a2 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0xe600272c lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xe7ce8488 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL sound/core/seq/snd-seq 0x18ea3650 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 0x3061c52d snd_use_lock_sync_helper +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3128c6b4 snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3fb4d161 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6bb71038 snd_seq_delete_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x78a1dc53 snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7ac2f329 snd_seq_expand_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7b8699eb snd_seq_event_port_detach +EXPORT_SYMBOL sound/core/seq/snd-seq 0xb8e448a0 snd_seq_set_queue_tempo +EXPORT_SYMBOL sound/core/seq/snd-seq 0xc3db9ad8 snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0xcac0a3be snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x3a57f235 snd_seq_autoload_unlock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x7a136011 snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x9df13361 snd_seq_device_register_driver +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xb90668b2 snd_seq_autoload_lock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xc622fb29 snd_seq_device_unregister_driver +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 0x142a8391 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd-hwdep 0x29d95af5 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0d129c7f snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x124d0edf snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x1415a862 snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0x189f52bf snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x1cbbf1a2 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x25b9c1d4 __snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x42eb4901 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x6d6fe6a5 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x82e85a5a __snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8793a65e snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8f8affe0 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa14a3cc8 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa8720b47 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xab330057 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb3e40503 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xcd7ae249 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe31282dc snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf5bfe99a snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0xfa0881e7 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x0d8eb249 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 0x2d0e6217 snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x8b846f59 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x982b908b snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x9f1125a8 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xa5db78f1 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xb81195d2 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xc60ec3fc snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xe9d2c2ac snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xf9f3cc30 snd_opl3_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x050201b2 snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x05a04620 snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x165b1d97 snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x23c37e6d snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x398ada8c snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x5c229cd0 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x736bc761 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x92ee7f85 snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xd5ffd775 snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20341c60 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x21f3e415 amdtp_out_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x493c3aef cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4945ad61 amdtp_out_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53659bca iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x633b824e amdtp_out_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x63c6b2df amdtp_out_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6ed07183 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6f39a398 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x76f45159 amdtp_out_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7848dbaa fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7850d1b8 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7a8679d0 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x836ffb33 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9603343b amdtp_out_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa0206f9a fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa61dd824 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa77cb081 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb0a07f81 amdtp_out_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb898538e fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbe2791ab amdtp_out_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc45bbb22 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd171ecb0 amdtp_out_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe57225a2 amdtp_out_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xed64d230 amdtp_out_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf9d62a74 cmp_connection_establish +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x1c302cdd snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x3a43bd8d snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x57881180 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x96c0da83 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xe2f712f4 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xfc396c87 snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x05ab0c6c snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x910582e1 snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xafd935b0 snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xf021271c snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xf6284840 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xfe7dfba5 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x06371685 snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x35652016 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x6a53c7b5 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xb2667a3f snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xc6a2b573 snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-i2c 0x02510fa5 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x46c4fa73 snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0x6c85d3d2 snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x6ce944dc snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xa06c8d78 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0xb1921701 snd_i2c_device_create +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x108c93b6 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x1a062a32 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x2dc13ce2 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x5e2922e9 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x677d07ba snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x684d412b snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6ec8436b snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x724f75bf snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x7baf7321 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x85125ce3 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb0f7965a snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb874c9a8 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xbcd0a239 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xbe4582dd snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe063a602 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe7c43153 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xea6367af snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x112079c0 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x14f117e1 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x203d8b53 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x29812ab4 snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x53e72400 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x5dd16197 snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x6631ac81 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xb45c192a snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xe1e5a715 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x0acc90fb snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x555e46d0 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x968f994b snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x24fe846e oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x25ba277e oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x286213d5 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x34ae2be8 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x355125ab oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x35cd15ad oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x38c3d6bd oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x3e7126e9 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x43e5a87e oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x4d5d78e0 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x6626f626 oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x73070de0 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x7674fe7e oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x7f2bc24f oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa597ba5d oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xaca2b4cb oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb5a80107 oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xcf327e61 oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf35062b4 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf919a3a7 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x9c75527f snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xb8725ccb snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xc8bac067 snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xf8f7a87e snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xfbec67a6 snd_trident_free_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x1b4cf03d 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 0x681b516b snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x76c70d28 snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xa2517fef snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xb1eb25b2 snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xd3f0234e snd_emux_register +EXPORT_SYMBOL sound/synth/snd-util-mem 0x3a674330 snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0x49ef2c3c __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x4d00dc9e snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x90090056 __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x904b8744 snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xa5f7f704 snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xd1380832 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xd8d2b6a8 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 0x79069a67 snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL vmlinux 0x00000000 __symbol_put +EXPORT_SYMBOL vmlinux 0x00000000 current_fs_time +EXPORT_SYMBOL vmlinux 0x00000000 d_tmpfile +EXPORT_SYMBOL vmlinux 0x00000000 do_sync_read +EXPORT_SYMBOL vmlinux 0x00000000 filp_close +EXPORT_SYMBOL vmlinux 0x00000000 finish_open +EXPORT_SYMBOL vmlinux 0x00000000 generic_getxattr +EXPORT_SYMBOL vmlinux 0x00000000 generic_write_sync +EXPORT_SYMBOL vmlinux 0x00000000 get_unmapped_area +EXPORT_SYMBOL vmlinux 0x00000000 in_group_p +EXPORT_SYMBOL vmlinux 0x00000000 inode_add_bytes +EXPORT_SYMBOL vmlinux 0x00000000 iov_shorten +EXPORT_SYMBOL vmlinux 0x00000000 iterate_fd +EXPORT_SYMBOL vmlinux 0x00000000 ns_capable +EXPORT_SYMBOL vmlinux 0x00000000 path_is_under +EXPORT_SYMBOL vmlinux 0x00000000 register_exec_domain +EXPORT_SYMBOL vmlinux 0x00000000 sock_register +EXPORT_SYMBOL vmlinux 0x00000000 sys_close +EXPORT_SYMBOL vmlinux 0x00000000 task_nice +EXPORT_SYMBOL vmlinux 0x00000000 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x00000000 vm_brk +EXPORT_SYMBOL vmlinux 0x00152023 blk_complete_request +EXPORT_SYMBOL vmlinux 0x001ee95a imx_ssi_fiq_base +EXPORT_SYMBOL vmlinux 0x001f7d0f simple_lookup +EXPORT_SYMBOL vmlinux 0x00205f44 snd_card_free_when_closed +EXPORT_SYMBOL vmlinux 0x003ed69a __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x0043572b netdev_emerg +EXPORT_SYMBOL vmlinux 0x004dc574 snd_jack_report +EXPORT_SYMBOL vmlinux 0x0064f5fd __lru_cache_add +EXPORT_SYMBOL vmlinux 0x00801678 flush_scheduled_work +EXPORT_SYMBOL vmlinux 0x00943bd5 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x009e4dd0 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x00a5b5b0 neigh_ifdown +EXPORT_SYMBOL vmlinux 0x00b66682 tcp_child_process +EXPORT_SYMBOL vmlinux 0x00bb73c3 vfs_rename +EXPORT_SYMBOL vmlinux 0x00c061a2 pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0x00cf4a7f of_get_parent +EXPORT_SYMBOL vmlinux 0x00e19947 user_revoke +EXPORT_SYMBOL vmlinux 0x00e423b5 phy_start_aneg +EXPORT_SYMBOL vmlinux 0x00e8097b csum_partial_copy_fromiovecend +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x01089f19 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x01193c91 block_invalidatepage +EXPORT_SYMBOL vmlinux 0x0121d37f skb_put +EXPORT_SYMBOL vmlinux 0x012ef4d5 ppp_input_error +EXPORT_SYMBOL vmlinux 0x013c1a93 read_cache_pages +EXPORT_SYMBOL vmlinux 0x0186e2de smp_call_function_many +EXPORT_SYMBOL vmlinux 0x0188a3aa scsi_adjust_queue_depth +EXPORT_SYMBOL vmlinux 0x01902adf netpoll_trap +EXPORT_SYMBOL vmlinux 0x01a3d310 omap_set_dma_channel_mode +EXPORT_SYMBOL vmlinux 0x01b7fd59 dispc_read_irqstatus +EXPORT_SYMBOL vmlinux 0x01c5ef5c sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x01e95025 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x01ea132e dispc_runtime_put +EXPORT_SYMBOL vmlinux 0x01f1ce67 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x01f825b5 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x020c27f1 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x02196324 __aeabi_idiv +EXPORT_SYMBOL vmlinux 0x021bb2eb __locks_copy_lock +EXPORT_SYMBOL vmlinux 0x021deb7d inet_addr_type +EXPORT_SYMBOL vmlinux 0x0221e2f7 input_event +EXPORT_SYMBOL vmlinux 0x023d5790 padata_add_cpu +EXPORT_SYMBOL vmlinux 0x0249a4d1 free_netdev +EXPORT_SYMBOL vmlinux 0x024bf88f omap_modify_dma_chain_params +EXPORT_SYMBOL vmlinux 0x02573b36 omap_disable_dma_irq +EXPORT_SYMBOL vmlinux 0x025e703c elm_decode_bch_error_page +EXPORT_SYMBOL vmlinux 0x0262d42c bitmap_endwrite +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 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02b8ea86 bio_integrity_tag_size +EXPORT_SYMBOL vmlinux 0x02baa664 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x02e0f42b xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x02ee26c1 free_pages_exact +EXPORT_SYMBOL vmlinux 0x02ef742b percpu_counter_set +EXPORT_SYMBOL vmlinux 0x03026722 mempool_alloc +EXPORT_SYMBOL vmlinux 0x031be37d nf_log_register +EXPORT_SYMBOL vmlinux 0x0334795d icst307_s2div +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x0347c237 mb_cache_create +EXPORT_SYMBOL vmlinux 0x0349b74d blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x034cdcf7 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x0358c736 inet_stream_ops +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x03635439 edma_stop +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x0371fd5e tty_pair_get_pty +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x0388219f ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x0392961d init_net +EXPORT_SYMBOL vmlinux 0x03935944 mmc_cache_ctrl +EXPORT_SYMBOL vmlinux 0x039a088e inode_dio_wait +EXPORT_SYMBOL vmlinux 0x03ba39b0 v7_flush_user_cache_all +EXPORT_SYMBOL vmlinux 0x03c06156 bitmap_fold +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x04153165 neigh_table_init +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x042a806f gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x046e0e72 serio_close +EXPORT_SYMBOL vmlinux 0x046f5396 key_invalidate +EXPORT_SYMBOL vmlinux 0x0486b03a remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x048a4e49 dev_activate +EXPORT_SYMBOL vmlinux 0x04a48a20 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x04cda566 snd_interval_refine +EXPORT_SYMBOL vmlinux 0x04cf1bb6 xfrm_lookup +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04f55a06 __free_pages +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x05251017 elevator_alloc +EXPORT_SYMBOL vmlinux 0x0528ae04 kernel_getsockname +EXPORT_SYMBOL vmlinux 0x054434d6 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x057ce975 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0x05898c66 dev_addr_del +EXPORT_SYMBOL vmlinux 0x05920f53 skb_queue_purge +EXPORT_SYMBOL vmlinux 0x0593a99b init_timer_key +EXPORT_SYMBOL vmlinux 0x05a25025 __get_user_pages +EXPORT_SYMBOL vmlinux 0x05a6092a tty_pair_get_tty +EXPORT_SYMBOL vmlinux 0x05ae3cd7 irq_set_chip +EXPORT_SYMBOL vmlinux 0x05ae7ec4 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x05bbee71 keyring_clear +EXPORT_SYMBOL vmlinux 0x05f9aea8 netif_rx +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x06199060 phy_disconnect +EXPORT_SYMBOL vmlinux 0x06259210 netlink_net_capable +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x06347ef6 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x065bb174 unlock_rename +EXPORT_SYMBOL vmlinux 0x06607f92 dss_feat_get_supported_outputs +EXPORT_SYMBOL vmlinux 0x066fd3c2 snd_pcm_open_substream +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x06860e49 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x069716d4 no_llseek +EXPORT_SYMBOL vmlinux 0x06ae0740 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x06c592a2 phy_stop +EXPORT_SYMBOL vmlinux 0x06cfd801 netdev_alert +EXPORT_SYMBOL vmlinux 0x06de1243 get_write_access +EXPORT_SYMBOL vmlinux 0x06e29e9e follow_pfn +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x0724fcab dev_addr_flush +EXPORT_SYMBOL vmlinux 0x074e2c5b __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x074ec2fb tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x074fe4a8 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0x075d4a03 rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0x076055a7 swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0x0779de1e xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x078b9752 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x0799aca4 local_bh_enable +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07b32379 mdio_bus_type +EXPORT_SYMBOL vmlinux 0x07c1f1da loop_register_transfer +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07cf9099 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0x07e796e2 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x08044eee netdev_notice +EXPORT_SYMBOL vmlinux 0x081f3afb complete_all +EXPORT_SYMBOL vmlinux 0x081f5ad1 security_path_truncate +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x082e780b register_netdevice +EXPORT_SYMBOL vmlinux 0x083c2cbe of_get_next_parent +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x08b68057 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x08bbdf60 uart_match_port +EXPORT_SYMBOL vmlinux 0x092c0202 prepare_binprm +EXPORT_SYMBOL vmlinux 0x094b2e47 sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0x09561246 pci_set_ltr +EXPORT_SYMBOL vmlinux 0x097ec1ff _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0x09820788 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x099ddc8e tcp_md5_do_add +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 0x09e938d6 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x09f7ebe4 inet_frags_fini +EXPORT_SYMBOL vmlinux 0x09fafa56 seq_write +EXPORT_SYMBOL vmlinux 0x0a0786de udplite_table +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a2a038a dm_io +EXPORT_SYMBOL vmlinux 0x0a3131f6 strnchr +EXPORT_SYMBOL vmlinux 0x0a3ac5a0 pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x0a469d23 mfd_clone_cell +EXPORT_SYMBOL vmlinux 0x0a52e784 replace_mount_options +EXPORT_SYMBOL vmlinux 0x0a5c73e2 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x0a74a620 __netif_schedule +EXPORT_SYMBOL vmlinux 0x0a75294a ptp_clock_unregister +EXPORT_SYMBOL vmlinux 0x0a7cd523 netdev_update_features +EXPORT_SYMBOL vmlinux 0x0a958ed4 down_write +EXPORT_SYMBOL vmlinux 0x0aa13d05 __raw_readsw +EXPORT_SYMBOL vmlinux 0x0acb1a3c __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0adfab73 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x0ae2c0c2 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x0ae4c09d __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x0aee26dc dquot_alloc +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b381097 cfb_fillrect +EXPORT_SYMBOL vmlinux 0x0b3c90bb elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0c097200 finish_no_open +EXPORT_SYMBOL vmlinux 0x0c0ee15d seq_release_private +EXPORT_SYMBOL vmlinux 0x0c2f32c1 __dev_remove_offload +EXPORT_SYMBOL vmlinux 0x0c37e841 vfs_readv +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c6295b3 con_is_bound +EXPORT_SYMBOL vmlinux 0x0c65e73c scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0x0c701627 pci_read_vpd +EXPORT_SYMBOL vmlinux 0x0c8c9e99 scsi_show_extd_sense +EXPORT_SYMBOL vmlinux 0x0c9132df address_space_init_once +EXPORT_SYMBOL vmlinux 0x0c956c16 set_binfmt +EXPORT_SYMBOL vmlinux 0x0c9bcad9 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0ca54fee _test_and_set_bit +EXPORT_SYMBOL vmlinux 0x0ca65817 console_start +EXPORT_SYMBOL vmlinux 0x0cad4c0e __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cb30116 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x0cb3599e neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x0cc44847 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0x0cc44eb0 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x0cdf54ca d_prune_aliases +EXPORT_SYMBOL vmlinux 0x0ce6ab25 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x0ce900af blk_finish_plug +EXPORT_SYMBOL vmlinux 0x0cfefe1e percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x0d03ffca ipmi_smi_watcher_unregister +EXPORT_SYMBOL vmlinux 0x0d15eca8 eth_validate_addr +EXPORT_SYMBOL vmlinux 0x0d36ce1a generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x0d3f57a2 _find_next_bit_le +EXPORT_SYMBOL vmlinux 0x0d46d7a3 block_write_begin +EXPORT_SYMBOL vmlinux 0x0d4d7a32 _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x0d4d7f33 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d5d65e4 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0x0d74692c sock_kfree_s +EXPORT_SYMBOL vmlinux 0x0d83a0c7 snd_pcm_stop +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0dd5e87b neigh_destroy +EXPORT_SYMBOL vmlinux 0x0dfdd7f5 __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x0e23ed3b pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x0e3bfa3a simple_readpage +EXPORT_SYMBOL vmlinux 0x0e4010d8 mount_bdev +EXPORT_SYMBOL vmlinux 0x0e564b5e __lock_buffer +EXPORT_SYMBOL vmlinux 0x0e564d98 register_md_personality +EXPORT_SYMBOL vmlinux 0x0e5dc518 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e950e8c of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0x0eaf451e hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x0eb9b80d pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f1003b2 tty_unlock +EXPORT_SYMBOL vmlinux 0x0f36f361 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f4ce84d skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x0f5a1e80 ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0x0f81d1d6 __invalidate_device +EXPORT_SYMBOL vmlinux 0x0f83b6a7 inet_stream_connect +EXPORT_SYMBOL vmlinux 0x0f972536 netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0x0fa2a45e __memzero +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb00724 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x0fcc83d7 ip_defrag +EXPORT_SYMBOL vmlinux 0x0fea3b17 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x0ff178f6 __aeabi_idivmod +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x100ae96d search_binary_handler +EXPORT_SYMBOL vmlinux 0x1011cf4c kill_fasync +EXPORT_SYMBOL vmlinux 0x1025af69 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x10378cbc xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x10604896 ps2_begin_command +EXPORT_SYMBOL vmlinux 0x106f13ab crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x1072a394 csum_partial_copy_from_user +EXPORT_SYMBOL vmlinux 0x109bd01b input_set_keycode +EXPORT_SYMBOL vmlinux 0x109eb45b sock_i_uid +EXPORT_SYMBOL vmlinux 0x10a4ad01 dcache_readdir +EXPORT_SYMBOL vmlinux 0x10c7c82b del_gendisk +EXPORT_SYMBOL vmlinux 0x10d60355 omapdss_output_unset_device +EXPORT_SYMBOL vmlinux 0x10d94e71 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x10e5b5eb inet_del_offload +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x10f51258 swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0x10fe3ee3 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x111f01ca generic_write_checks +EXPORT_SYMBOL vmlinux 0x11267875 scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0x112748bd omap_vrfb_adjust_size +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x117da1fa bio_map_user +EXPORT_SYMBOL vmlinux 0x1186c9b8 input_unregister_handle +EXPORT_SYMBOL vmlinux 0x119b50e7 elf_check_arch +EXPORT_SYMBOL vmlinux 0x119f0478 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x11c2ed6a sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x11c9185c of_iomap +EXPORT_SYMBOL vmlinux 0x11e2ec12 flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x122043a8 of_find_node_with_property +EXPORT_SYMBOL vmlinux 0x122f91eb filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x123c3daf genphy_suspend +EXPORT_SYMBOL vmlinux 0x12414800 serio_reconnect +EXPORT_SYMBOL vmlinux 0x124704a1 netlink_ack +EXPORT_SYMBOL vmlinux 0x124a4c30 nf_getsockopt +EXPORT_SYMBOL vmlinux 0x1259b859 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x125e5048 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x1263aab7 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL vmlinux 0x126e822c __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12a44652 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x12a8704c tcp_prequeue +EXPORT_SYMBOL vmlinux 0x12c203de pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0x12cda90a dev_alloc_name +EXPORT_SYMBOL vmlinux 0x12da5bb2 __kmalloc +EXPORT_SYMBOL vmlinux 0x12f76893 clear_inode +EXPORT_SYMBOL vmlinux 0x130b52e8 blk_mq_end_io +EXPORT_SYMBOL vmlinux 0x131f43fa twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x13219d10 vfs_statfs +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x1337fd38 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x13423fa7 inc_nlink +EXPORT_SYMBOL vmlinux 0x1344a52e sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x1348760d ipmi_request_settime +EXPORT_SYMBOL vmlinux 0x1351e237 noop_llseek +EXPORT_SYMBOL vmlinux 0x13896c66 pci_bus_get +EXPORT_SYMBOL vmlinux 0x138f1a20 sock_edemux +EXPORT_SYMBOL vmlinux 0x13b831b5 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13d868dd inetdev_by_index +EXPORT_SYMBOL vmlinux 0x13e3e908 generic_file_mmap +EXPORT_SYMBOL vmlinux 0x13f2d4ca nand_bch_init +EXPORT_SYMBOL vmlinux 0x1400d9d2 mount_ns +EXPORT_SYMBOL vmlinux 0x14087116 __frontswap_test +EXPORT_SYMBOL vmlinux 0x140f957e scsi_device_get +EXPORT_SYMBOL vmlinux 0x141566d7 scsi_remove_host +EXPORT_SYMBOL vmlinux 0x1420b379 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x14661563 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x146717f1 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x14675423 get_task_io_context +EXPORT_SYMBOL vmlinux 0x147e1bda kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x1485eca2 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x148b44b7 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x149701da omap_dss_get_overlay +EXPORT_SYMBOL vmlinux 0x14ad4777 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x14cc3946 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0x14d1a791 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x14d331f8 vfs_link +EXPORT_SYMBOL vmlinux 0x14d4a9c5 _change_bit +EXPORT_SYMBOL vmlinux 0x150fac28 skb_copy_expand +EXPORT_SYMBOL vmlinux 0x15349cee cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x1551dc51 bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x156ac5de uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x156e1a68 kernel_getpeername +EXPORT_SYMBOL vmlinux 0x1576623c dentry_unhash +EXPORT_SYMBOL vmlinux 0x1581f2cf eth_header_parse +EXPORT_SYMBOL vmlinux 0x15904523 may_umount_tree +EXPORT_SYMBOL vmlinux 0x15995473 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x15ac80ed unregister_filesystem +EXPORT_SYMBOL vmlinux 0x15ae858a crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x15b824a7 arp_invalidate +EXPORT_SYMBOL vmlinux 0x15c326a6 xfrm_init_state +EXPORT_SYMBOL vmlinux 0x15f571ec blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x160b5f4f amba_driver_register +EXPORT_SYMBOL vmlinux 0x162ccc0c lg_local_lock +EXPORT_SYMBOL vmlinux 0x16305289 warn_slowpath_null +EXPORT_SYMBOL vmlinux 0x167a7a54 kernel_connect +EXPORT_SYMBOL vmlinux 0x167d6b97 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x16874c77 input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0x168b10c7 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x169072fe __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x16a0e340 wait_on_sync_kiocb +EXPORT_SYMBOL vmlinux 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL vmlinux 0x16df2886 dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x16e363c1 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x16f894b4 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x16fcca4d d_set_d_op +EXPORT_SYMBOL vmlinux 0x1734061c override_creds +EXPORT_SYMBOL vmlinux 0x1737df98 security_file_permission +EXPORT_SYMBOL vmlinux 0x174afb1a __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0x174f40b0 inode_init_always +EXPORT_SYMBOL vmlinux 0x175a6875 generic_removexattr +EXPORT_SYMBOL vmlinux 0x177c2a7c page_put_link +EXPORT_SYMBOL vmlinux 0x1795df94 wireless_send_event +EXPORT_SYMBOL vmlinux 0x17a142df __copy_from_user +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17cdc227 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x17df291a d_lookup +EXPORT_SYMBOL vmlinux 0x17e77fad devfreq_add_governor +EXPORT_SYMBOL vmlinux 0x18154710 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x181e2990 arm_dma_zone_size +EXPORT_SYMBOL vmlinux 0x1826f089 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x18355de2 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x18375b1e file_ns_capable +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x184cc2cb inet_shutdown +EXPORT_SYMBOL vmlinux 0x184e6c85 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x1862722c bio_integrity_set_tag +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18b10b99 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x18bd76a4 _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x18c2227f cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x18d07e89 send_sig +EXPORT_SYMBOL vmlinux 0x194439b7 lock_fb_info +EXPORT_SYMBOL vmlinux 0x19610e1f cpu_all_bits +EXPORT_SYMBOL vmlinux 0x197dc3b3 omap_set_dma_src_burst_mode +EXPORT_SYMBOL vmlinux 0x198bb584 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x199c25ab simple_getattr +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19a8d904 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x19bb11b6 sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19c3ca39 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x19c99f86 devm_gpiod_put +EXPORT_SYMBOL vmlinux 0x19cb702c dev_change_carrier +EXPORT_SYMBOL vmlinux 0x19e62e50 bio_unmap_user +EXPORT_SYMBOL vmlinux 0x19f5809b dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL vmlinux 0x1a1667b5 sk_reset_timer +EXPORT_SYMBOL vmlinux 0x1a20c540 omap_vrfb_supported +EXPORT_SYMBOL vmlinux 0x1a2b212e bd_set_size +EXPORT_SYMBOL vmlinux 0x1a5abc79 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x1a65f4ad __arm_ioremap_pfn +EXPORT_SYMBOL vmlinux 0x1a69800b __scm_destroy +EXPORT_SYMBOL vmlinux 0x1a972bd3 key_validate +EXPORT_SYMBOL vmlinux 0x1aa52eb2 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x1aa537c7 blk_end_request +EXPORT_SYMBOL vmlinux 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL vmlinux 0x1acac443 padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x1ace138d bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0x1ad1f2e7 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0x1adf2f38 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x1af01eda simple_transaction_set +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b0ac272 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x1b16d848 vfs_llseek +EXPORT_SYMBOL vmlinux 0x1b197711 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x1b215369 snd_ctl_new1 +EXPORT_SYMBOL vmlinux 0x1b37e26c scm_detach_fds +EXPORT_SYMBOL vmlinux 0x1b39a17c __ps2_command +EXPORT_SYMBOL vmlinux 0x1b494142 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x1b494c79 from_kgid_munged +EXPORT_SYMBOL vmlinux 0x1b58647e eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b650635 sync_blockdev +EXPORT_SYMBOL vmlinux 0x1b82e4b5 submit_bio +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b9e0ff1 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x1ba4df30 neigh_event_ns +EXPORT_SYMBOL vmlinux 0x1bcebbea xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x1bdf414e input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x1bf15586 blk_rq_init +EXPORT_SYMBOL vmlinux 0x1bfbc22b pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x1c0ae4d3 remove_proc_subtree +EXPORT_SYMBOL vmlinux 0x1c46657a snd_ctl_replace +EXPORT_SYMBOL vmlinux 0x1c4909c5 inet_release +EXPORT_SYMBOL vmlinux 0x1c5afa64 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x1c5e3878 icst525_idx2s +EXPORT_SYMBOL vmlinux 0x1c671d19 ata_dev_printk +EXPORT_SYMBOL vmlinux 0x1c720103 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x1c76053f elm_config +EXPORT_SYMBOL vmlinux 0x1c8101d4 scsi_device_put +EXPORT_SYMBOL vmlinux 0x1c82e777 find_or_create_page +EXPORT_SYMBOL vmlinux 0x1caa60c5 of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0x1cca0bb2 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x1cca57a9 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x1ceba5ae xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x1cfb04fa finish_wait +EXPORT_SYMBOL vmlinux 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL vmlinux 0x1d1d669f input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0x1d1ecb4a dev_driver_string +EXPORT_SYMBOL vmlinux 0x1d33ea67 wake_up_process +EXPORT_SYMBOL vmlinux 0x1d439c02 md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0x1d4524cd netif_carrier_on +EXPORT_SYMBOL vmlinux 0x1d61f20d dma_find_channel +EXPORT_SYMBOL vmlinux 0x1d6fe719 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x1d83b6ac vga_client_register +EXPORT_SYMBOL vmlinux 0x1db7dc40 pgprot_kernel +EXPORT_SYMBOL vmlinux 0x1db7de70 tcp_close +EXPORT_SYMBOL vmlinux 0x1db94c09 dev_get_nest_level +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dd16fbc ata_link_printk +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1df9c4f5 mtd_concat_destroy +EXPORT_SYMBOL vmlinux 0x1e047854 warn_slowpath_fmt +EXPORT_SYMBOL vmlinux 0x1e190666 pcim_iomap +EXPORT_SYMBOL vmlinux 0x1e2484ec blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e39d9b1 kernel_write +EXPORT_SYMBOL vmlinux 0x1e422f92 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x1e5facbb jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e7943ae unregister_qdisc +EXPORT_SYMBOL vmlinux 0x1e8868f6 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ea4b770 padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x1ec3bed9 hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0x1ec4eb34 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x1eeb848e __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0x1ef2983f misc_deregister +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1fab5905 wait_for_completion +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 0x1ffeeb79 md_check_recovery +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x202524eb pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x202df6b0 input_register_handle +EXPORT_SYMBOL vmlinux 0x20421305 on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x2042b507 bioset_create +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x205ec8de omap_dispc_register_isr +EXPORT_SYMBOL vmlinux 0x2072bab3 tty_port_hangup +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x2074efcd mapping_tagged +EXPORT_SYMBOL vmlinux 0x2075e12e done_path_create +EXPORT_SYMBOL vmlinux 0x208707b8 vfs_read +EXPORT_SYMBOL vmlinux 0x209fe9ee dss_mgr_start_update +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20a86b3f of_get_pci_address +EXPORT_SYMBOL vmlinux 0x20b2bb2d param_array_ops +EXPORT_SYMBOL vmlinux 0x20b6e8d2 __pv_phys_offset +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20df2681 ida_simple_remove +EXPORT_SYMBOL vmlinux 0x2109395b serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x211101b6 fsnotify_get_group +EXPORT_SYMBOL vmlinux 0x211331fa __divsi3 +EXPORT_SYMBOL vmlinux 0x2128da96 pci_remove_bus +EXPORT_SYMBOL vmlinux 0x212d2b8d ilookup5 +EXPORT_SYMBOL vmlinux 0x21414e8b tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x2147370c nf_register_hook +EXPORT_SYMBOL vmlinux 0x214fff44 blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0x215ebd78 bitrev16 +EXPORT_SYMBOL vmlinux 0x216137ea fb_class +EXPORT_SYMBOL vmlinux 0x21764563 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x217dda13 flex_array_get +EXPORT_SYMBOL vmlinux 0x21985c88 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0x21e35fb1 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x21f470a8 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x21ff2d79 seq_escape +EXPORT_SYMBOL vmlinux 0x2203176a buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x220f035a scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x221b9d13 pci_release_region +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 0x22406e51 bio_endio +EXPORT_SYMBOL vmlinux 0x2256fafa div64_u64_rem +EXPORT_SYMBOL vmlinux 0x225e16bc invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x2276beb2 kern_unmount +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x22830711 edma_clear_event +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22d09c28 snd_pcm_lib_free_pages +EXPORT_SYMBOL vmlinux 0x22e1ae6f up_read +EXPORT_SYMBOL vmlinux 0x22e4fcd0 pm860x_page_bulk_write +EXPORT_SYMBOL vmlinux 0x2312ea5e scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x23532c4d ftrace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x23788cbd mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0x23830674 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x23911e6f nand_lock +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23aa49d3 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c1a25b __scsi_put_command +EXPORT_SYMBOL vmlinux 0x23c8f257 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x23dbc0bb dquot_free_inode +EXPORT_SYMBOL vmlinux 0x23eee173 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x241c2e3e kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x24406fdc jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x2442ac32 pci_release_regions +EXPORT_SYMBOL vmlinux 0x244945d7 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x24556124 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x248fea79 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL vmlinux 0x24b0f90c of_clk_get_by_name +EXPORT_SYMBOL vmlinux 0x24c1e5b1 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x24c431b4 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x24c4fc75 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0x24d644f9 ip6_frag_init +EXPORT_SYMBOL vmlinux 0x24d7b4eb cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x24f46fc3 of_find_device_by_node +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x250f4c02 bio_alloc_pages +EXPORT_SYMBOL vmlinux 0x250fc772 inode_get_bytes +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x254758f2 dev_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x25540332 inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0x255e8ec0 softnet_data +EXPORT_SYMBOL vmlinux 0x2570e24d mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25922c06 user_path_at +EXPORT_SYMBOL vmlinux 0x25a48e67 vfs_create +EXPORT_SYMBOL vmlinux 0x25c677c4 mac_pton +EXPORT_SYMBOL vmlinux 0x25ec4719 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x25f673fc gen_replace_estimator +EXPORT_SYMBOL vmlinux 0x260cf8f8 of_get_property +EXPORT_SYMBOL vmlinux 0x261e21df __pci_enable_wake +EXPORT_SYMBOL vmlinux 0x263b9339 dev_mc_sync +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x26695728 lockref_mark_dead +EXPORT_SYMBOL vmlinux 0x266bdafb pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0x2675ecd7 tcp_parse_options +EXPORT_SYMBOL vmlinux 0x26884300 tty_free_termios +EXPORT_SYMBOL vmlinux 0x268c1732 pci_enable_ido +EXPORT_SYMBOL vmlinux 0x269faf17 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x26ab9f76 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x26aee201 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x26bb950b __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x26c1c190 scsi_free_command +EXPORT_SYMBOL vmlinux 0x26c2e65a nf_setsockopt +EXPORT_SYMBOL vmlinux 0x26c4257f vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x26d19261 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26f0453a blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x270b60f1 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x270be7e2 scsi_cmd_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x271bec49 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x273192d7 freeze_super +EXPORT_SYMBOL vmlinux 0x2750de91 ftrace_raw_output_prep +EXPORT_SYMBOL vmlinux 0x27549628 sk_common_release +EXPORT_SYMBOL vmlinux 0x275ef902 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0x276f8f30 mmc_gpio_free_cd +EXPORT_SYMBOL vmlinux 0x2780d9f7 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x279685ef clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x27aab503 pci_request_region +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27e23d65 bh_submit_read +EXPORT_SYMBOL vmlinux 0x27edd3d2 sk_alloc +EXPORT_SYMBOL vmlinux 0x2801177e tcp_poll +EXPORT_SYMBOL vmlinux 0x28111f6a ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x28118cb6 __get_user_1 +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x281d6fd3 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x283ad9d2 bmap +EXPORT_SYMBOL vmlinux 0x2846fb1f bio_sector_offset +EXPORT_SYMBOL vmlinux 0x286b9372 fb_find_mode +EXPORT_SYMBOL vmlinux 0x2893d4bb md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28d6861d __vmalloc +EXPORT_SYMBOL vmlinux 0x28da415e sock_no_getname +EXPORT_SYMBOL vmlinux 0x28dadc55 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x292cb36b fb_validate_mode +EXPORT_SYMBOL vmlinux 0x293801b4 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x29459a54 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0x29523f6e netpoll_rx_disable +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x295d2331 ptp_clock_index +EXPORT_SYMBOL vmlinux 0x296b44ce dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x29853322 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x29869e95 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x2989946c dma_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x299f1245 __serio_register_port +EXPORT_SYMBOL vmlinux 0x29b1c366 __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x29baff70 ida_remove +EXPORT_SYMBOL vmlinux 0x29c2f894 simple_open +EXPORT_SYMBOL vmlinux 0x29fdda53 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x2a01dac5 devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0x2a2c9395 iunique +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a3aa678 _test_and_clear_bit +EXPORT_SYMBOL vmlinux 0x2a45c116 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x2a4fabcf videomode_to_omap_video_timings +EXPORT_SYMBOL vmlinux 0x2a6f3698 pci_scan_bus_parented +EXPORT_SYMBOL vmlinux 0x2a79ac13 clkdev_add +EXPORT_SYMBOL vmlinux 0x2a7cac99 pci_add_resource +EXPORT_SYMBOL vmlinux 0x2a95583e input_unregister_handler +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2aaabfb0 phy_device_register +EXPORT_SYMBOL vmlinux 0x2ab3bd9b vm_map_ram +EXPORT_SYMBOL vmlinux 0x2ab5bcc3 snd_pcm_limit_hw_rates +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2ad0329c __breadahead +EXPORT_SYMBOL vmlinux 0x2ae8d41c generic_read_dir +EXPORT_SYMBOL vmlinux 0x2b03a5ce sk_filter +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b12925d cpumask_next_and +EXPORT_SYMBOL vmlinux 0x2b1ba58b tty_unlock_pair +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b3460aa nobh_write_end +EXPORT_SYMBOL vmlinux 0x2b36cd58 touch_buffer +EXPORT_SYMBOL vmlinux 0x2b38681c snd_ctl_find_id +EXPORT_SYMBOL vmlinux 0x2b3d6450 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x2b4314ea blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x2b49ae95 generic_make_request +EXPORT_SYMBOL vmlinux 0x2b4b029c dst_destroy +EXPORT_SYMBOL vmlinux 0x2b4e956e mempool_create +EXPORT_SYMBOL vmlinux 0x2b74199a snd_jack_set_parent +EXPORT_SYMBOL vmlinux 0x2b7d1825 devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0x2b8181bd __bread +EXPORT_SYMBOL vmlinux 0x2b83f3ec napi_gro_frags +EXPORT_SYMBOL vmlinux 0x2b8accf8 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x2b9454cf mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bc98489 neigh_lookup +EXPORT_SYMBOL vmlinux 0x2bd64864 pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x2be07b24 d_genocide +EXPORT_SYMBOL vmlinux 0x2be0f12d dql_completed +EXPORT_SYMBOL vmlinux 0x2be7cbc5 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x2bebecb3 locks_remove_posix +EXPORT_SYMBOL vmlinux 0x2bf1fbb8 starget_for_each_device +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c2e73f5 thaw_bdev +EXPORT_SYMBOL vmlinux 0x2c430ab8 __bforget +EXPORT_SYMBOL vmlinux 0x2c52d748 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x2c6f734d dev_mc_flush +EXPORT_SYMBOL vmlinux 0x2c7a29b8 __mutex_init +EXPORT_SYMBOL vmlinux 0x2c7c8e9a pcibios_min_mem +EXPORT_SYMBOL vmlinux 0x2c81ec75 __irq_regs +EXPORT_SYMBOL vmlinux 0x2c900d91 cpufreq_put_global_kobject +EXPORT_SYMBOL vmlinux 0x2c90efc0 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x2c9732f8 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0x2c988955 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x2cb05e47 snd_pcm_hw_constraint_list +EXPORT_SYMBOL vmlinux 0x2cc65233 omapdss_find_output_from_display +EXPORT_SYMBOL vmlinux 0x2cd49295 blk_make_request +EXPORT_SYMBOL vmlinux 0x2d03c10d posix_acl_create +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d1ab4ae pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d44ff4e dss_mgr_enable +EXPORT_SYMBOL vmlinux 0x2d6507b5 _find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0x2d770676 dispc_mgr_go +EXPORT_SYMBOL vmlinux 0x2d786705 scsi_block_requests +EXPORT_SYMBOL vmlinux 0x2d89342a scsi_show_sense_hdr +EXPORT_SYMBOL vmlinux 0x2d955d60 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x2daaaba9 param_get_byte +EXPORT_SYMBOL vmlinux 0x2dcbe5ae alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2df2102b twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e3e1f9f posix_lock_file_wait +EXPORT_SYMBOL vmlinux 0x2e4cecf2 mntget +EXPORT_SYMBOL vmlinux 0x2e52ae8d skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x2e5810c6 __aeabi_unwind_cpp_pr1 +EXPORT_SYMBOL vmlinux 0x2e6c8ca0 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x2e75484f snd_pcm_notify +EXPORT_SYMBOL vmlinux 0x2e7774d8 brioctl_set +EXPORT_SYMBOL vmlinux 0x2ec524ad __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x2eeceb42 sk_chk_filter +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2effe587 names_cachep +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f2d8f44 uart_suspend_port +EXPORT_SYMBOL vmlinux 0x2f346add blk_end_request_all +EXPORT_SYMBOL vmlinux 0x2f6e9510 pipe_lock +EXPORT_SYMBOL vmlinux 0x2fa11fa7 pps_event +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fcb09a5 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x2fce5a82 crypto_sha256_update +EXPORT_SYMBOL vmlinux 0x2fd7ee5e ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x30494ec9 tcf_hash_search +EXPORT_SYMBOL vmlinux 0x3056edce pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0x3059dabf iget_failed +EXPORT_SYMBOL vmlinux 0x306564d2 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x306aa620 alloc_disk +EXPORT_SYMBOL vmlinux 0x306adfc3 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x3082a0b3 dss_feat_get_supported_color_modes +EXPORT_SYMBOL vmlinux 0x30899418 vfs_symlink +EXPORT_SYMBOL vmlinux 0x308a28c7 netif_receive_skb +EXPORT_SYMBOL vmlinux 0x308aad56 omap_vrfb_min_phys_size +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30cada8f radix_tree_next_hole +EXPORT_SYMBOL vmlinux 0x30e1dabc __i2c_transfer +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x30fb416e nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310917fe sort +EXPORT_SYMBOL vmlinux 0x310d816e nf_log_unregister +EXPORT_SYMBOL vmlinux 0x3112e97b generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x312824e0 hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL vmlinux 0x313db5b8 disk_stack_limits +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x31524e91 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x315c65fd zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x317bae32 should_remove_suid +EXPORT_SYMBOL vmlinux 0x318cadb1 reciprocal_value +EXPORT_SYMBOL vmlinux 0x3191f109 __krealloc +EXPORT_SYMBOL vmlinux 0x31a9576a __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x31b31f5c csum_partial_copy_nocheck +EXPORT_SYMBOL vmlinux 0x31b97c8e mount_nodev +EXPORT_SYMBOL vmlinux 0x31b99f40 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x31da3133 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x31de14a3 blk_get_queue +EXPORT_SYMBOL vmlinux 0x31f0bb78 __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x31f789fa jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x31fe3039 read_code +EXPORT_SYMBOL vmlinux 0x32024da4 omapdss_unregister_output +EXPORT_SYMBOL vmlinux 0x3204d467 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x3206fc5a devm_gpio_free +EXPORT_SYMBOL vmlinux 0x322f48d4 abx500_dump_all_banks +EXPORT_SYMBOL vmlinux 0x32388970 generic_listxattr +EXPORT_SYMBOL vmlinux 0x323caa0c dev_get_by_name +EXPORT_SYMBOL vmlinux 0x3275ca97 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x327bf883 of_can_translate_address +EXPORT_SYMBOL vmlinux 0x328a05f1 strncpy +EXPORT_SYMBOL vmlinux 0x329e9763 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x32a2c013 pagevec_lookup +EXPORT_SYMBOL vmlinux 0x32b10a87 mdiobus_free +EXPORT_SYMBOL vmlinux 0x32b658b2 phy_device_free +EXPORT_SYMBOL vmlinux 0x32b81e2a audit_log_start +EXPORT_SYMBOL vmlinux 0x32c2cefc atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x32d1f06e pps_unregister_source +EXPORT_SYMBOL vmlinux 0x33048cee pci_write_vpd +EXPORT_SYMBOL vmlinux 0x3311dcf0 phy_detach +EXPORT_SYMBOL vmlinux 0x33154fa1 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x331bb729 genl_unregister_family +EXPORT_SYMBOL vmlinux 0x332e3e51 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL vmlinux 0x3330a47d gen_pool_free +EXPORT_SYMBOL vmlinux 0x3330fda7 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x3352865f qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x33542d8e sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x336ae80d snd_timer_close +EXPORT_SYMBOL vmlinux 0x337a07af sk_free +EXPORT_SYMBOL vmlinux 0x337cce46 put_cmsg +EXPORT_SYMBOL vmlinux 0x3380a900 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x33855011 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x338b1ecf inet_frag_evictor +EXPORT_SYMBOL vmlinux 0x33ae2acf scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x33b5620d pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x33ba5cd4 param_ops_bool +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33c80b65 read_cache_page +EXPORT_SYMBOL vmlinux 0x33d3bcf2 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x33dbfd93 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x33e4b8f9 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x34005465 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x341dbfa3 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x34200021 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x34288ff4 simple_transaction_read +EXPORT_SYMBOL vmlinux 0x343dba30 qdisc_list_del +EXPORT_SYMBOL vmlinux 0x34454459 scsi_unregister +EXPORT_SYMBOL vmlinux 0x344931c8 textsearch_register +EXPORT_SYMBOL vmlinux 0x344b7739 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x344b9526 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x344d3a12 mnt_unpin +EXPORT_SYMBOL vmlinux 0x34627deb dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x347478de jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x34769e99 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x347eb9bd param_set_bool +EXPORT_SYMBOL vmlinux 0x3485a65d unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x34876e31 nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34c4ac69 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x34e6872a elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x34f2a440 unregister_md_personality +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x34f7d74e inet_add_offload +EXPORT_SYMBOL vmlinux 0x3507a132 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x3537e132 vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0x353a87f4 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x353e3fa5 __get_user_4 +EXPORT_SYMBOL vmlinux 0x3544f6db icmpv6_send +EXPORT_SYMBOL vmlinux 0x354537a3 netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x356b8c18 netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0x3595a7e8 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x359d062b __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x35f1e03e touch_atime +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 0x36494d31 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x364dc880 blk_sync_queue +EXPORT_SYMBOL vmlinux 0x3656fc86 i2c_master_recv +EXPORT_SYMBOL vmlinux 0x368382e2 of_get_named_gpiod_flags +EXPORT_SYMBOL vmlinux 0x368ed8d0 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x369da4a1 dcache_dir_close +EXPORT_SYMBOL vmlinux 0x36a5c3cc sk_wait_data +EXPORT_SYMBOL vmlinux 0x36b3c8b6 pneigh_lookup +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36d4275c generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x36d7b11a of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0x36e360e3 __hw_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x36e543d0 pci_enable_msi_block_auto +EXPORT_SYMBOL vmlinux 0x36e5794d __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x36ecf323 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x371bc4d8 bdi_destroy +EXPORT_SYMBOL vmlinux 0x372ce842 mark_page_accessed +EXPORT_SYMBOL vmlinux 0x373b3c02 sg_miter_next +EXPORT_SYMBOL vmlinux 0x37412b73 bio_split +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x374eebd2 __sock_create +EXPORT_SYMBOL vmlinux 0x377275b8 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x377b75cf blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x378700fd mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x3789bf12 dss_mgr_set_lcd_config +EXPORT_SYMBOL vmlinux 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37cf162e fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0x37e74642 get_jiffies_64 +EXPORT_SYMBOL vmlinux 0x37f614b7 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x37f619fa generic_file_remap_pages +EXPORT_SYMBOL vmlinux 0x381144a9 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x383f8c73 put_disk +EXPORT_SYMBOL vmlinux 0x384b62e7 d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0x3881790b scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388f9128 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x3898910f page_readlink +EXPORT_SYMBOL vmlinux 0x389acf0c gpmc_configure +EXPORT_SYMBOL vmlinux 0x38a28de2 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38aa97be jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x38b0aebf pps_lookup_dev +EXPORT_SYMBOL vmlinux 0x38b5d54e directly_mappable_cdev_bdi +EXPORT_SYMBOL vmlinux 0x38c74a9b devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x38c78e11 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x38c97d50 idr_get_next +EXPORT_SYMBOL vmlinux 0x391d9157 snd_pcm_set_ops +EXPORT_SYMBOL vmlinux 0x3924dd56 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x395ba680 pci_disable_obff +EXPORT_SYMBOL vmlinux 0x396bea86 keyring_alloc +EXPORT_SYMBOL vmlinux 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL vmlinux 0x39956dcc swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0x39ac8352 cont_write_begin +EXPORT_SYMBOL vmlinux 0x39aea7f1 security_path_mknod +EXPORT_SYMBOL vmlinux 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL vmlinux 0x39c7278d tc6393xb_lcd_mode +EXPORT_SYMBOL vmlinux 0x39dc2764 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0x39e3ae23 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0x3a0bd94d kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0x3a0ec520 __secpath_destroy +EXPORT_SYMBOL vmlinux 0x3a1c1b6c vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x3a23db35 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x3a2581aa blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x3a37821b key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x3a7dff94 __dquot_free_space +EXPORT_SYMBOL vmlinux 0x3a838596 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3aa3fa50 input_get_keycode +EXPORT_SYMBOL vmlinux 0x3ab8b69a dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x3ae51dca dput +EXPORT_SYMBOL vmlinux 0x3b0a0319 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x3b211acd pci_select_bars +EXPORT_SYMBOL vmlinux 0x3b2f9998 qdisc_destroy +EXPORT_SYMBOL vmlinux 0x3b3abe9e sg_miter_start +EXPORT_SYMBOL vmlinux 0x3b4702cf mpage_writepages +EXPORT_SYMBOL vmlinux 0x3b754937 netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x3b84715c of_phy_find_device +EXPORT_SYMBOL vmlinux 0x3b896fa7 find_lock_page +EXPORT_SYMBOL vmlinux 0x3b91f3af snd_free_pages +EXPORT_SYMBOL vmlinux 0x3b9f7895 simple_rmdir +EXPORT_SYMBOL vmlinux 0x3bbb0ab5 tcp_proc_register +EXPORT_SYMBOL vmlinux 0x3bbf46ea vga_base +EXPORT_SYMBOL vmlinux 0x3bcb4de0 pci_reenable_device +EXPORT_SYMBOL vmlinux 0x3bd1b1f6 msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x3bd7452e ip_ct_attach +EXPORT_SYMBOL vmlinux 0x3bef03b9 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x3c0faccf tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x3c50a25f bio_clone_bioset +EXPORT_SYMBOL vmlinux 0x3c75e38d netif_device_detach +EXPORT_SYMBOL vmlinux 0x3c79a063 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c9d1211 string_get_size +EXPORT_SYMBOL vmlinux 0x3ca3752d pcie_get_mps +EXPORT_SYMBOL vmlinux 0x3cab7e3d rtnl_notify +EXPORT_SYMBOL vmlinux 0x3ccc3b57 snd_pcm_period_elapsed +EXPORT_SYMBOL vmlinux 0x3ccd939d generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3ce8a990 page_symlink +EXPORT_SYMBOL vmlinux 0x3d0e5a23 arm_coherent_dma_ops +EXPORT_SYMBOL vmlinux 0x3d253465 lease_get_mtime +EXPORT_SYMBOL vmlinux 0x3d310d94 find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x3d39ef38 nonseekable_open +EXPORT_SYMBOL vmlinux 0x3d3c540f elf_hwcap +EXPORT_SYMBOL vmlinux 0x3d41904f of_get_next_child +EXPORT_SYMBOL vmlinux 0x3d45a87f dev_err +EXPORT_SYMBOL vmlinux 0x3d5ad934 input_reset_device +EXPORT_SYMBOL vmlinux 0x3d875443 locks_free_lock +EXPORT_SYMBOL vmlinux 0x3d993f94 phy_drivers_register +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dda9ad4 redraw_screen +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e181a0a sk_stream_error +EXPORT_SYMBOL vmlinux 0x3e34b5a3 htc_egpio_get_wakeup_irq +EXPORT_SYMBOL vmlinux 0x3e49e2fa blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x3e4e6804 nf_log_set +EXPORT_SYMBOL vmlinux 0x3e65ca72 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x3e721744 snd_timer_global_new +EXPORT_SYMBOL vmlinux 0x3e884f4b vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x3e88c541 snd_ctl_register_ioctl +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3ea1d47a nand_scan_bbt +EXPORT_SYMBOL vmlinux 0x3eafcd43 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x3ed63055 zlib_inflateReset +EXPORT_SYMBOL vmlinux 0x3ee81bd2 jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x3eecc607 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x3f1e7f9d sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x3f2bafbc vfs_fsync +EXPORT_SYMBOL vmlinux 0x3f34ceaa build_skb +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f5b67d5 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x3f5dc1b5 kunmap +EXPORT_SYMBOL vmlinux 0x3f6e1dd9 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x3f868aea __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x3fab3ca9 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x3fbd0fed netdev_change_features +EXPORT_SYMBOL vmlinux 0x3fd55724 of_n_size_cells +EXPORT_SYMBOL vmlinux 0x3ff62317 local_bh_disable +EXPORT_SYMBOL vmlinux 0x3ffbdf26 sock_create +EXPORT_SYMBOL vmlinux 0x402a3263 skb_dequeue +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x404084d5 km_report +EXPORT_SYMBOL vmlinux 0x405640c3 sock_rfree +EXPORT_SYMBOL vmlinux 0x4059792f print_hex_dump +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x405f821f bdi_init +EXPORT_SYMBOL vmlinux 0x407136b1 __put_user_8 +EXPORT_SYMBOL vmlinux 0x40753dd8 sock_common_setsockopt +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 0x40b16820 mmc_cleanup_queue +EXPORT_SYMBOL vmlinux 0x40bad545 pci_choose_state +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40ce485b mempool_resize +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40e3cb19 dispc_ovl_check +EXPORT_SYMBOL vmlinux 0x40ed524a _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x40f07981 __ashldi3 +EXPORT_SYMBOL vmlinux 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL vmlinux 0x4107e39a get_gendisk +EXPORT_SYMBOL vmlinux 0x410bc5e0 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x41488dda register_quota_format +EXPORT_SYMBOL vmlinux 0x414c7597 dev_uc_sync +EXPORT_SYMBOL vmlinux 0x41606953 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x41f1844d sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x41fe66c6 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x4211c3c1 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x421938ff __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x4225987b sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x423b776a ipmi_create_user +EXPORT_SYMBOL vmlinux 0x4264bc24 lookup_bdev +EXPORT_SYMBOL vmlinux 0x4271995a ppp_input +EXPORT_SYMBOL vmlinux 0x42977ad4 __hw_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x4298b775 v7_flush_kern_cache_all +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42e15a4d jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x42f45692 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x43163625 blk_mq_free_single_hw_queue +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x43559ebc blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x4357b6fe netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x43586a03 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x43632d7d of_find_property +EXPORT_SYMBOL vmlinux 0x4364e48c xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x43716c6d bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x43786289 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x43954111 gen10g_config_advert +EXPORT_SYMBOL vmlinux 0x4396fbf0 mutex_unlock +EXPORT_SYMBOL vmlinux 0x4397e76b bio_advance +EXPORT_SYMBOL vmlinux 0x43b113bc uart_update_timeout +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x43f49045 map_destroy +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 0x44643b93 __aeabi_lmul +EXPORT_SYMBOL vmlinux 0x4476e340 __sb_start_write +EXPORT_SYMBOL vmlinux 0x44777603 dquot_operations +EXPORT_SYMBOL vmlinux 0x448a0776 sock_update_memcg +EXPORT_SYMBOL vmlinux 0x44b897a5 arp_create +EXPORT_SYMBOL vmlinux 0x44b907bb dma_mmap_from_coherent +EXPORT_SYMBOL vmlinux 0x44cea532 lock_may_read +EXPORT_SYMBOL vmlinux 0x44da5d0f __csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0x44dd3d8d completion_done +EXPORT_SYMBOL vmlinux 0x44e18c1c inet_recvmsg +EXPORT_SYMBOL vmlinux 0x44e90d60 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44ebfe75 flush_kernel_dcache_page +EXPORT_SYMBOL vmlinux 0x44f12171 mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x44f1b401 udp_ioctl +EXPORT_SYMBOL vmlinux 0x44f5e8b5 of_allnodes +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x454592e9 dquot_destroy +EXPORT_SYMBOL vmlinux 0x454d4a5d padata_stop +EXPORT_SYMBOL vmlinux 0x455293f6 down_read +EXPORT_SYMBOL vmlinux 0x45783aa6 snd_card_file_add +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x45a6be13 cpufreq_sysfs_remove_file +EXPORT_SYMBOL vmlinux 0x45bda0d5 system_serial_low +EXPORT_SYMBOL vmlinux 0x45db7a1c jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x45f8823f __napi_complete +EXPORT_SYMBOL vmlinux 0x462233f6 fget +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +EXPORT_SYMBOL vmlinux 0x463645f8 phy_attach +EXPORT_SYMBOL vmlinux 0x46457632 alloc_fcdev +EXPORT_SYMBOL vmlinux 0x465757c3 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46608fa0 getnstimeofday +EXPORT_SYMBOL vmlinux 0x4663cf58 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x466e4f8d __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x467bb18f pci_map_rom +EXPORT_SYMBOL vmlinux 0x467bb2f3 kset_unregister +EXPORT_SYMBOL vmlinux 0x4683d042 drop_nlink +EXPORT_SYMBOL vmlinux 0x469fa245 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x46d3b28c __div0 +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x4709c030 blk_stop_queue +EXPORT_SYMBOL vmlinux 0x472f6887 fixed_size_llseek +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x47452991 dev_notice +EXPORT_SYMBOL vmlinux 0x4763fe2f key_reject_and_link +EXPORT_SYMBOL vmlinux 0x477fb751 scsi_setup_blk_pc_cmnd +EXPORT_SYMBOL vmlinux 0x478c2729 uart_add_one_port +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479ba4ad ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x47b3f862 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0x47b6a10f ftrace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x47bcf84c param_set_ulong +EXPORT_SYMBOL vmlinux 0x47c80d7c alloc_fddidev +EXPORT_SYMBOL vmlinux 0x47c8baf4 param_ops_uint +EXPORT_SYMBOL vmlinux 0x47dfea74 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x47e70229 v7_flush_user_cache_range +EXPORT_SYMBOL vmlinux 0x47e8435e d_make_root +EXPORT_SYMBOL vmlinux 0x47e87c05 module_put +EXPORT_SYMBOL vmlinux 0x47f757de elf_platform +EXPORT_SYMBOL vmlinux 0x48034724 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x481986e3 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x481ce6ce cpu_active_mask +EXPORT_SYMBOL vmlinux 0x4827c524 scsi_scan_target +EXPORT_SYMBOL vmlinux 0x48296224 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0x482a2a49 param_set_charp +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x487a4460 cpumask_set_cpu_local_first +EXPORT_SYMBOL vmlinux 0x4881d505 idr_for_each +EXPORT_SYMBOL vmlinux 0x488882e7 downgrade_write +EXPORT_SYMBOL vmlinux 0x48a08c54 eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x48a5b067 __machine_arch_type +EXPORT_SYMBOL vmlinux 0x48c6db53 of_get_child_by_name +EXPORT_SYMBOL vmlinux 0x48f072c6 __quota_error +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x4930d300 __blk_run_queue +EXPORT_SYMBOL vmlinux 0x49348b74 sys_imageblit +EXPORT_SYMBOL vmlinux 0x4948a573 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x49598840 sock_wake_async +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x4964d489 unregister_mtd_chip_driver +EXPORT_SYMBOL vmlinux 0x497961d7 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x499cb58c prepare_to_wait +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49c23f79 get_super_thawed +EXPORT_SYMBOL vmlinux 0x49c6d1aa module_refcount +EXPORT_SYMBOL vmlinux 0x49c9aa66 scsi_nonblockable_ioctl +EXPORT_SYMBOL vmlinux 0x49d6a333 writeback_in_progress +EXPORT_SYMBOL vmlinux 0x49db1bf8 mnt_pin +EXPORT_SYMBOL vmlinux 0x49e47810 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0x49ebacbd _clear_bit +EXPORT_SYMBOL vmlinux 0x49f55355 __find_get_block +EXPORT_SYMBOL vmlinux 0x4a358252 __bitmap_subset +EXPORT_SYMBOL vmlinux 0x4a39e5a1 omap_set_dma_src_params +EXPORT_SYMBOL vmlinux 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL vmlinux 0x4a3f269d dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x4a42b1d8 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x4a473d70 __dquot_transfer +EXPORT_SYMBOL vmlinux 0x4a57b339 wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x4a68ef7f blkdev_put +EXPORT_SYMBOL vmlinux 0x4a7fb243 percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x4abf4459 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0x4ad5f4ca neigh_seq_start +EXPORT_SYMBOL vmlinux 0x4ae3bc5f i2c_clients_command +EXPORT_SYMBOL vmlinux 0x4ae49b12 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b015768 snd_iprintf +EXPORT_SYMBOL vmlinux 0x4b10d30d kmap_to_page +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b25f6f7 snd_info_free_entry +EXPORT_SYMBOL vmlinux 0x4b26d717 devm_clk_get +EXPORT_SYMBOL vmlinux 0x4b34fbf5 block_all_signals +EXPORT_SYMBOL vmlinux 0x4b3bf30b netpoll_setup +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b804a7b amba_device_unregister +EXPORT_SYMBOL vmlinux 0x4b8cdca7 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x4b9dc15d always_delete_dentry +EXPORT_SYMBOL vmlinux 0x4bbc67a1 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x4bc6bbe9 tcp_sendpage +EXPORT_SYMBOL vmlinux 0x4bc8760d setup_new_exec +EXPORT_SYMBOL vmlinux 0x4be7fb63 up +EXPORT_SYMBOL vmlinux 0x4be85a03 memweight +EXPORT_SYMBOL vmlinux 0x4bf5fc3b __nla_put +EXPORT_SYMBOL vmlinux 0x4c0041fb netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x4c1182cb bitmap_scnprintf +EXPORT_SYMBOL vmlinux 0x4c233a44 _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0x4c2ae700 strnstr +EXPORT_SYMBOL vmlinux 0x4c33081d omapdss_compat_uninit +EXPORT_SYMBOL vmlinux 0x4c5fc58c _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c6f5464 kill_pid +EXPORT_SYMBOL vmlinux 0x4c6fc71f scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x4c81ecaf page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x4c86184b remove_wait_queue +EXPORT_SYMBOL vmlinux 0x4c86d2b5 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x4c8a87ee xfrm_state_update +EXPORT_SYMBOL vmlinux 0x4c91829c sock_from_file +EXPORT_SYMBOL vmlinux 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL vmlinux 0x4c9dfff7 complete_request_key +EXPORT_SYMBOL vmlinux 0x4caa7bd7 __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x4cb4903e cad_pid +EXPORT_SYMBOL vmlinux 0x4cbbd171 __bitmap_weight +EXPORT_SYMBOL vmlinux 0x4cc2854d tegra114_clock_assert_dfll_dvco_reset +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4cdfcf33 skb_unlink +EXPORT_SYMBOL vmlinux 0x4ced6095 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x4cfe6093 set_bdi_congested +EXPORT_SYMBOL vmlinux 0x4d0d163d copy_page +EXPORT_SYMBOL vmlinux 0x4d0f5d0d submit_bh +EXPORT_SYMBOL vmlinux 0x4d10639f iterate_dir +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d5e5ff0 elevator_exit +EXPORT_SYMBOL vmlinux 0x4d729a8b bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x4d83b295 sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x4d936093 dss_install_mgr_ops +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4d9b6d35 snd_pcm_format_size +EXPORT_SYMBOL vmlinux 0x4db1e4aa elv_add_request +EXPORT_SYMBOL vmlinux 0x4dc01751 inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x4dcbd7ab d_find_alias +EXPORT_SYMBOL vmlinux 0x4dcd47eb inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0x4dd107b0 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x4dd45150 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4dec6038 memscan +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4df5035e tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x4e266965 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e506013 omap_dma_link_lch +EXPORT_SYMBOL vmlinux 0x4e5653dd tty_do_resize +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6a7aeb lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e830a3e strnicmp +EXPORT_SYMBOL vmlinux 0x4e908deb padata_alloc +EXPORT_SYMBOL vmlinux 0x4e9afc2b __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x4e9ce9f9 edma_link +EXPORT_SYMBOL vmlinux 0x4ead1482 __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x4eaf18a9 snd_dma_reserve_buf +EXPORT_SYMBOL vmlinux 0x4eb5709e request_key +EXPORT_SYMBOL vmlinux 0x4ec1e9d7 inet_accept +EXPORT_SYMBOL vmlinux 0x4ee27a0c phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x4efa1aa7 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f248523 of_find_node_by_name +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f3a7d5f __seq_open_private +EXPORT_SYMBOL vmlinux 0x4f476e96 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x4f5a7e2e __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL vmlinux 0x4f871bf2 udplite_prot +EXPORT_SYMBOL vmlinux 0x4f89c9de gpmc_cs_free +EXPORT_SYMBOL vmlinux 0x4f8dfe66 snd_pcm_suspend_all +EXPORT_SYMBOL vmlinux 0x4f96fd6e nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0x4fa01832 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x4fde0834 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x50108962 pci_get_device +EXPORT_SYMBOL vmlinux 0x501832eb inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x50196625 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x50445ae8 commit_creds +EXPORT_SYMBOL vmlinux 0x50560990 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x505da9c8 arp_find +EXPORT_SYMBOL vmlinux 0x507ffa2a netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0x508bcd9f __vexpress_config_func_get +EXPORT_SYMBOL vmlinux 0x508dfcea blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x509817cf vprintk_emit +EXPORT_SYMBOL vmlinux 0x509a34c2 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0x50a85497 contig_page_data +EXPORT_SYMBOL vmlinux 0x50ac1b82 blk_start_request +EXPORT_SYMBOL vmlinux 0x50ac4c94 mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x50b64227 skb_copy_and_csum_datagram_iovec +EXPORT_SYMBOL vmlinux 0x50bbbb0d mmc_detect_change +EXPORT_SYMBOL vmlinux 0x50ccff03 omap_dma_set_prio_lch +EXPORT_SYMBOL vmlinux 0x50d5612e dispc_mgr_get_sync_lost_irq +EXPORT_SYMBOL vmlinux 0x50d8227e ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x50ebaa8e elv_abort_queue +EXPORT_SYMBOL vmlinux 0x50ec6d33 simple_map_init +EXPORT_SYMBOL vmlinux 0x5101fad1 account_page_redirty +EXPORT_SYMBOL vmlinux 0x510cefdf snd_pcm_set_sync +EXPORT_SYMBOL vmlinux 0x51133357 i2c_release_client +EXPORT_SYMBOL vmlinux 0x51168003 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x511746c1 dump_fpu +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x511b75dc tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x51546437 dst_discard +EXPORT_SYMBOL vmlinux 0x5168eea3 generic_readlink +EXPORT_SYMBOL vmlinux 0x5169161d omap_free_dma_chain +EXPORT_SYMBOL vmlinux 0x51908eb8 __raw_writesl +EXPORT_SYMBOL vmlinux 0x51afea8e phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0x51d0231e d_obtain_alias +EXPORT_SYMBOL vmlinux 0x51d559d1 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x51dce73b xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x51e30983 proc_remove +EXPORT_SYMBOL vmlinux 0x51e77c97 pfn_valid +EXPORT_SYMBOL vmlinux 0x51ef33b8 kstrndup +EXPORT_SYMBOL vmlinux 0x5201c158 scsi_init_io +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x5202b3b9 kdb_current_task +EXPORT_SYMBOL vmlinux 0x520c5d23 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x524ca022 adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0x524eded4 __getblk +EXPORT_SYMBOL vmlinux 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL vmlinux 0x525f65de phy_connect +EXPORT_SYMBOL vmlinux 0x527a16cb ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x528c709d simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x52abfb25 sock_alloc_file +EXPORT_SYMBOL vmlinux 0x52b3e981 qdisc_reset +EXPORT_SYMBOL vmlinux 0x52c29f4a sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x52cc6a3d pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x531fd305 pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0x532a35b6 pci_iounmap +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x53380127 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x533efe4f mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x536747e7 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL vmlinux 0x536ec013 bioset_free +EXPORT_SYMBOL vmlinux 0x5375524b sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x53905af7 d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0x53a7d82a __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x53a8c3d4 inet_sendpage +EXPORT_SYMBOL vmlinux 0x53ba4adf set_security_override +EXPORT_SYMBOL vmlinux 0x53bb01e2 vm_stat +EXPORT_SYMBOL vmlinux 0x53c2d137 icmp_send +EXPORT_SYMBOL vmlinux 0x53ce1c34 may_umount +EXPORT_SYMBOL vmlinux 0x53dd9721 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x53e11de3 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x53e1fc9a set_groups +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x541a9d30 dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0x542acea0 input_register_handler +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x544a90f2 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x544e7840 swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x54535fcd path_get +EXPORT_SYMBOL vmlinux 0x54699f46 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x547077ec __wake_up_bit +EXPORT_SYMBOL vmlinux 0x547ce898 dispc_read_irqenable +EXPORT_SYMBOL vmlinux 0x548e9536 __devm_release_region +EXPORT_SYMBOL vmlinux 0x54906c17 init_buffer +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54e3cc3b param_get_int +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54ea477a skb_copy_bits +EXPORT_SYMBOL vmlinux 0x54ed34fb tcf_generic_walker +EXPORT_SYMBOL vmlinux 0x54ef766c from_kgid +EXPORT_SYMBOL vmlinux 0x54f6830a omapdss_get_default_display_name +EXPORT_SYMBOL vmlinux 0x54fa53ed bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x5560665d __get_page_tail +EXPORT_SYMBOL vmlinux 0x5565201c ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x556c2740 hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x557e49aa shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x5594be03 bitmap_remap +EXPORT_SYMBOL vmlinux 0x560147fd edma_unlink +EXPORT_SYMBOL vmlinux 0x560f2157 pci_find_bus +EXPORT_SYMBOL vmlinux 0x5614b010 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x5642793a radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x565bd4de dev_addr_add +EXPORT_SYMBOL vmlinux 0x56789ac5 omap_set_dma_color_mode +EXPORT_SYMBOL vmlinux 0x56893764 scsi_release_buffers +EXPORT_SYMBOL vmlinux 0x5689afe7 dispc_ovl_enable +EXPORT_SYMBOL vmlinux 0x56a533c0 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x56b4b4f9 kill_block_super +EXPORT_SYMBOL vmlinux 0x56b6ea90 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL vmlinux 0x56bc2f15 dispc_ovl_set_channel_out +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56e87969 snd_seq_root +EXPORT_SYMBOL vmlinux 0x56f0896f tegra_periph_reset_assert +EXPORT_SYMBOL vmlinux 0x56f54c75 notify_change +EXPORT_SYMBOL vmlinux 0x56fdaa41 inet_sendmsg +EXPORT_SYMBOL vmlinux 0x5700d48d skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x570413e3 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x572c07d5 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x572dfdc5 mdiobus_read +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x5738f7da poll_freewait +EXPORT_SYMBOL vmlinux 0x5739843b ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x57632980 snd_jack_new +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x578b2416 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x5793bc89 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x579c6580 netdev_crit +EXPORT_SYMBOL vmlinux 0x57a31e57 nand_flash_ids +EXPORT_SYMBOL vmlinux 0x57af6b17 padata_free +EXPORT_SYMBOL vmlinux 0x57b09771 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x57bc66d6 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x57d3abfe mmc_register_driver +EXPORT_SYMBOL vmlinux 0x58058073 inet_add_protocol +EXPORT_SYMBOL vmlinux 0x581e646f padata_do_serial +EXPORT_SYMBOL vmlinux 0x5824a7c2 inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x5845ba90 zerocopy_sg_from_iovec +EXPORT_SYMBOL vmlinux 0x584d1fcc pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x58516557 omap_set_dma_src_data_pack +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x58822313 sock_sendmsg +EXPORT_SYMBOL vmlinux 0x588738bf tty_lock_pair +EXPORT_SYMBOL vmlinux 0x588a1b51 inode_change_ok +EXPORT_SYMBOL vmlinux 0x588c130c vexpress_config_func_put +EXPORT_SYMBOL vmlinux 0x58ad4dc7 file_remove_suid +EXPORT_SYMBOL vmlinux 0x58b59159 sock_recvmsg +EXPORT_SYMBOL vmlinux 0x58d1070a of_get_address +EXPORT_SYMBOL vmlinux 0x58d633c7 neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x58e0b7e9 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x590a8e8e dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x5940fb40 security_path_link +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x594e1317 __modsi3 +EXPORT_SYMBOL vmlinux 0x5959cc2b seq_path +EXPORT_SYMBOL vmlinux 0x5962a69e xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x598542b2 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x598cd828 udp_table +EXPORT_SYMBOL vmlinux 0x5991b4be i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x5997d3da vlan_vid_add +EXPORT_SYMBOL vmlinux 0x5999365b blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x59a17bfc tegra114_clock_tune_cpu_trimmers_high +EXPORT_SYMBOL vmlinux 0x59a9c867 tty_devnum +EXPORT_SYMBOL vmlinux 0x59b414eb md_done_sync +EXPORT_SYMBOL vmlinux 0x59be7ef6 clone_cred +EXPORT_SYMBOL vmlinux 0x59ce25a2 phy_scan_fixups +EXPORT_SYMBOL vmlinux 0x59d29dab v7_flush_kern_dcache_area +EXPORT_SYMBOL vmlinux 0x59d8223a ioport_resource +EXPORT_SYMBOL vmlinux 0x59e5070d __do_div64 +EXPORT_SYMBOL vmlinux 0x5a057c09 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x5a461562 put_tty_driver +EXPORT_SYMBOL vmlinux 0x5a5536c2 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x5a72870d mmc_erase +EXPORT_SYMBOL vmlinux 0x5aa96ec5 skb_copy_datagram_const_iovec +EXPORT_SYMBOL vmlinux 0x5aaa5d3e sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x5ad00c21 snd_dma_alloc_pages +EXPORT_SYMBOL vmlinux 0x5ae02b41 blk_init_queue +EXPORT_SYMBOL vmlinux 0x5ae5be44 lg_lock_init +EXPORT_SYMBOL vmlinux 0x5aef6615 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x5af09130 snd_pcm_mmap_data +EXPORT_SYMBOL vmlinux 0x5b1135cd call_netdevice_notifiers_info +EXPORT_SYMBOL vmlinux 0x5b11e0f7 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x5b19634d div_s64_rem +EXPORT_SYMBOL vmlinux 0x5b667a4e netlink_broadcast +EXPORT_SYMBOL vmlinux 0x5b72009f ida_simple_get +EXPORT_SYMBOL vmlinux 0x5b79e98b genphy_resume +EXPORT_SYMBOL vmlinux 0x5b80be21 gen10g_read_status +EXPORT_SYMBOL vmlinux 0x5bb27982 splice_from_pipe_end +EXPORT_SYMBOL vmlinux 0x5bb9daec __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0x5bc3ac0b inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x5bebce50 sockfd_lookup +EXPORT_SYMBOL vmlinux 0x5bf9399d swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x5c132aeb init_task +EXPORT_SYMBOL vmlinux 0x5c1752c2 free_task +EXPORT_SYMBOL vmlinux 0x5c265cba sg_init_one +EXPORT_SYMBOL vmlinux 0x5c588acf proc_set_size +EXPORT_SYMBOL vmlinux 0x5c5d91ab mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x5c9284a0 processor_id +EXPORT_SYMBOL vmlinux 0x5cad982d dm_register_target +EXPORT_SYMBOL vmlinux 0x5cd12c6f kill_pgrp +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5d0a3b2f ping_prot +EXPORT_SYMBOL vmlinux 0x5d16f827 set_nlink +EXPORT_SYMBOL vmlinux 0x5d2f3bf1 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x5d41915d is_bad_inode +EXPORT_SYMBOL vmlinux 0x5d41c87c param_ops_charp +EXPORT_SYMBOL vmlinux 0x5d4d0d77 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0x5d501c8d km_policy_notify +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d5b5a16 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x5d61f309 put_page +EXPORT_SYMBOL vmlinux 0x5d67edb4 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x5d799b81 dquot_transfer +EXPORT_SYMBOL vmlinux 0x5d891a64 idr_destroy +EXPORT_SYMBOL vmlinux 0x5d91e924 pci_request_regions +EXPORT_SYMBOL vmlinux 0x5da210e1 kobject_init +EXPORT_SYMBOL vmlinux 0x5db6e657 have_submounts +EXPORT_SYMBOL vmlinux 0x5e0b8b50 pci_enable_msix +EXPORT_SYMBOL vmlinux 0x5e1e04ea xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x5e26edbd scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x5e346cf0 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x5e55f4ce single_open +EXPORT_SYMBOL vmlinux 0x5e60eb27 omap_dma_unlink_lch +EXPORT_SYMBOL vmlinux 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL vmlinux 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL vmlinux 0x5e8e082f mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x5e947009 tty_port_close +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ec4aaaf make_bad_inode +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ed94d7a generic_setlease +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f27323c _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x5f3c8f5c mmc_assume_removable +EXPORT_SYMBOL vmlinux 0x5f41265e key_put +EXPORT_SYMBOL vmlinux 0x5f47f882 nla_put +EXPORT_SYMBOL vmlinux 0x5f58f676 flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x5f706d79 swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0x5f754e5a memset +EXPORT_SYMBOL vmlinux 0x5f7f7525 inet_csk_accept +EXPORT_SYMBOL vmlinux 0x5f938a40 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL vmlinux 0x5fced672 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5ff11cc3 pcibios_min_io +EXPORT_SYMBOL vmlinux 0x5ff77504 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x60055baa dispc_mgr_get_vsync_irq +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x60145930 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x60146795 snd_device_new +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x60228ca6 netdev_printk +EXPORT_SYMBOL vmlinux 0x60296c5a dev_get_flags +EXPORT_SYMBOL vmlinux 0x602c96f0 copy_to_user_fromio +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x60384165 dm_kobject_release +EXPORT_SYMBOL vmlinux 0x604d1c1b mutex_lock +EXPORT_SYMBOL vmlinux 0x60541702 edma_alloc_slot +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x60711b89 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x6087a71d unlock_page +EXPORT_SYMBOL vmlinux 0x609d23fa __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL vmlinux 0x60cf6271 clocksource_unregister +EXPORT_SYMBOL vmlinux 0x60d2da36 vfs_open +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60e2a5d6 iterate_mounts +EXPORT_SYMBOL vmlinux 0x60f4f6af tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x61084483 blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0x61188d33 seq_printf +EXPORT_SYMBOL vmlinux 0x612234e4 empty_zero_page +EXPORT_SYMBOL vmlinux 0x612390ad netpoll_set_trap +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x6137f931 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x613b7732 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x61405669 ___pskb_trim +EXPORT_SYMBOL vmlinux 0x61538ad0 param_get_charp +EXPORT_SYMBOL vmlinux 0x61762016 tegra_periph_reset_deassert +EXPORT_SYMBOL vmlinux 0x617a218d __cond_resched_lock +EXPORT_SYMBOL vmlinux 0x617bddaa gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x6191a2d7 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x6193044f dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x61a048bc max8998_update_reg +EXPORT_SYMBOL vmlinux 0x61a382e7 devm_gpiod_get +EXPORT_SYMBOL vmlinux 0x61b0b681 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61bbe92a serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x61dceeab vga_tryget +EXPORT_SYMBOL vmlinux 0x61e1850a edma_write_slot +EXPORT_SYMBOL vmlinux 0x61f13395 phy_register_fixup +EXPORT_SYMBOL vmlinux 0x62008928 ihold +EXPORT_SYMBOL vmlinux 0x62029e5d cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x62194024 omapdss_find_mgr_from_display +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x623172a3 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x624227d9 of_match_device +EXPORT_SYMBOL vmlinux 0x624da08a pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x6263e0c1 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0x6269de14 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x6281fcbf gen10g_suspend +EXPORT_SYMBOL vmlinux 0x62822d05 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x62a6699c input_flush_device +EXPORT_SYMBOL vmlinux 0x62b99fbe inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x62f8ddc9 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x632666ff pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x6327d5a9 security_path_rmdir +EXPORT_SYMBOL vmlinux 0x63452781 kernel_accept +EXPORT_SYMBOL vmlinux 0x636250fe unregister_console +EXPORT_SYMBOL vmlinux 0x636b3461 omap_dss_get_num_overlays +EXPORT_SYMBOL vmlinux 0x6374a066 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x637e2066 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x63812e5d dss_mgr_disable +EXPORT_SYMBOL vmlinux 0x63964cd8 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x63a35039 prepare_creds +EXPORT_SYMBOL vmlinux 0x63b5f91d jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x63c55016 security_path_chown +EXPORT_SYMBOL vmlinux 0x63da54dd nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x63db252e d_alloc +EXPORT_SYMBOL vmlinux 0x63df951d save_mount_options +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63f4c6e4 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x64014cbc elevator_change +EXPORT_SYMBOL vmlinux 0x64026a56 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x64158d22 seq_open_private +EXPORT_SYMBOL vmlinux 0x641ea9b6 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x644cbfc3 nand_correct_data +EXPORT_SYMBOL vmlinux 0x645a3811 input_free_device +EXPORT_SYMBOL vmlinux 0x64632352 dcb_setapp +EXPORT_SYMBOL vmlinux 0x646ee415 uart_resume_port +EXPORT_SYMBOL vmlinux 0x648c8cb9 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64a22ff0 dispc_mgr_set_lcd_config +EXPORT_SYMBOL vmlinux 0x64c0d6b1 skb_pull +EXPORT_SYMBOL vmlinux 0x64d50b73 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x64e21913 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x64e5c197 devfreq_interval_update +EXPORT_SYMBOL vmlinux 0x64e6e444 kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0x6504b046 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x650c3618 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL vmlinux 0x650fef16 pipe_unlock +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x65200c7b gen10g_config_aneg +EXPORT_SYMBOL vmlinux 0x653925f8 snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL vmlinux 0x653d0a55 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x65466939 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x65592665 mmc_can_reset +EXPORT_SYMBOL vmlinux 0x65651417 sock_release +EXPORT_SYMBOL vmlinux 0x6577dc0a ps2_handle_response +EXPORT_SYMBOL vmlinux 0x657f8e54 ppp_dev_name +EXPORT_SYMBOL vmlinux 0x6585e310 alloc_pages_exact_nid +EXPORT_SYMBOL vmlinux 0x6592fb94 dss_mgr_disconnect +EXPORT_SYMBOL vmlinux 0x65abc2d6 dquot_quota_off +EXPORT_SYMBOL vmlinux 0x65becac1 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x65c484d1 bdget_disk +EXPORT_SYMBOL vmlinux 0x65c92e16 blk_run_queue +EXPORT_SYMBOL vmlinux 0x65ce91bc cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65f36d72 of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x65f953bd pci_get_class +EXPORT_SYMBOL vmlinux 0x6605f97f flex_array_clear +EXPORT_SYMBOL vmlinux 0x662b38c1 block_read_full_page +EXPORT_SYMBOL vmlinux 0x662ee2bf snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL vmlinux 0x663b5efc gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x66442c15 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x66451e58 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x66524abf simple_dir_operations +EXPORT_SYMBOL vmlinux 0x6656d79d kill_anon_super +EXPORT_SYMBOL vmlinux 0x665b4618 of_phy_attach +EXPORT_SYMBOL vmlinux 0x66802574 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x6682441c follow_up +EXPORT_SYMBOL vmlinux 0x668da8d5 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x669fd068 con_copy_unimap +EXPORT_SYMBOL vmlinux 0x66a14726 snd_pcm_lib_malloc_pages +EXPORT_SYMBOL vmlinux 0x66a5b8b5 bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0x66a67dab flex_array_shrink +EXPORT_SYMBOL vmlinux 0x66bdcfcc pci_disable_ido +EXPORT_SYMBOL vmlinux 0x66d21596 pci_enable_device +EXPORT_SYMBOL vmlinux 0x66deedbb udp_disconnect +EXPORT_SYMBOL vmlinux 0x67004c33 check_submounts_and_drop +EXPORT_SYMBOL vmlinux 0x67054ebf omap_dss_find_output_by_node +EXPORT_SYMBOL vmlinux 0x670d9cb2 __pskb_copy +EXPORT_SYMBOL vmlinux 0x6711692a dev_alert +EXPORT_SYMBOL vmlinux 0x671c943a mount_single +EXPORT_SYMBOL vmlinux 0x67277647 mmc_add_host +EXPORT_SYMBOL vmlinux 0x672794c5 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x6733a104 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x6738c01c inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0x674d56e5 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x675b8f61 param_get_string +EXPORT_SYMBOL vmlinux 0x676804c9 blk_delay_queue +EXPORT_SYMBOL vmlinux 0x676bbc0f _set_bit +EXPORT_SYMBOL vmlinux 0x6797483f invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67b7b786 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x67bec71c jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL vmlinux 0x67d603eb scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x67e8a4b5 eth_rebuild_header +EXPORT_SYMBOL vmlinux 0x6831b7c2 mmc_gpio_free_ro +EXPORT_SYMBOL vmlinux 0x6841d701 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x684b68cd dma_release_from_coherent +EXPORT_SYMBOL vmlinux 0x684d5365 register_mtd_chip_driver +EXPORT_SYMBOL vmlinux 0x684eb004 ata_port_printk +EXPORT_SYMBOL vmlinux 0x68750f06 security_path_rename +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x68869bae panic_notifier_list +EXPORT_SYMBOL vmlinux 0x688b00a0 splice_from_pipe_feed +EXPORT_SYMBOL vmlinux 0x688e2729 __skb_dst_set_noref +EXPORT_SYMBOL vmlinux 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL vmlinux 0x68b66efc dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68ba36cb security_dentry_init_security +EXPORT_SYMBOL vmlinux 0x68c382c3 skb_find_text +EXPORT_SYMBOL vmlinux 0x68e05d57 getrawmonotonic +EXPORT_SYMBOL vmlinux 0x68fb581a icst307_idx2s +EXPORT_SYMBOL vmlinux 0x6915eb38 down_interruptible +EXPORT_SYMBOL vmlinux 0x692e02c8 sync_inode +EXPORT_SYMBOL vmlinux 0x6938fd12 swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0x69513c9e pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x6983db0b blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x69872085 iget_locked +EXPORT_SYMBOL vmlinux 0x6992667a phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x69a374c0 tty_unthrottle +EXPORT_SYMBOL vmlinux 0x69a5d445 blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69b6f8d9 omap_set_dma_transfer_params +EXPORT_SYMBOL vmlinux 0x69d38ed9 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x69db86bd sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x69e27c7a bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a0c018d tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x6a1469e4 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x6a1ccb1b edma_get_position +EXPORT_SYMBOL vmlinux 0x6a1d5048 simple_write_begin +EXPORT_SYMBOL vmlinux 0x6a29e661 blk_init_tags +EXPORT_SYMBOL vmlinux 0x6a3f4119 mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a5fbfe7 generic_permission +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a9c907b bio_integrity_free +EXPORT_SYMBOL vmlinux 0x6aa1eee7 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x6ab386de get_user_pages +EXPORT_SYMBOL vmlinux 0x6acee5c7 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x6adbd645 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x6aed3c1f mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x6afe4b27 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x6b05131d from_kuid +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b2d6304 clk_get +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b60a2dd mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x6b8e63c9 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x6b94297a generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x6ba35af6 devfreq_add_device +EXPORT_SYMBOL vmlinux 0x6bc2e3ad task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bd44d3a follow_down_one +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6beb2078 param_set_copystring +EXPORT_SYMBOL vmlinux 0x6c11c91e ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c3bc5d6 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0x6c4eae2c register_cdrom +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c53b409 mpage_readpages +EXPORT_SYMBOL vmlinux 0x6c5c3423 security_inode_readlink +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c6cdd4d wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c7e6587 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x6ca5b0f8 __net_get_random_once +EXPORT_SYMBOL vmlinux 0x6cb8c195 soft_cursor +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6cdf1cf6 fsync_bdev +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d260549 neigh_table_clear +EXPORT_SYMBOL vmlinux 0x6d27ef64 __bitmap_empty +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d340f64 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0x6d464175 __sg_free_table +EXPORT_SYMBOL vmlinux 0x6d53c399 ata_std_end_eh +EXPORT_SYMBOL vmlinux 0x6d630748 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x6d662533 _find_first_bit_le +EXPORT_SYMBOL vmlinux 0x6d76f113 tty_port_put +EXPORT_SYMBOL vmlinux 0x6d98a110 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x6db61d7c __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x6dc09b36 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0x6dcb014f cpu_user +EXPORT_SYMBOL vmlinux 0x6dd1d10a unregister_exec_domain +EXPORT_SYMBOL vmlinux 0x6dd6291d inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6dfd7230 bdi_register_dev +EXPORT_SYMBOL vmlinux 0x6e2c9952 account_page_writeback +EXPORT_SYMBOL vmlinux 0x6e3ce4fa vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x6e5189f6 snd_pcm_debug_name +EXPORT_SYMBOL vmlinux 0x6e5f05d4 get_io_context +EXPORT_SYMBOL vmlinux 0x6e5f96b3 empty_aops +EXPORT_SYMBOL vmlinux 0x6e64db61 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e75d8d8 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x6e763d8f ip_getsockopt +EXPORT_SYMBOL vmlinux 0x6e85998f snd_card_set_id +EXPORT_SYMBOL vmlinux 0x6e9e11e7 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x6ebc5149 param_ops_long +EXPORT_SYMBOL vmlinux 0x6ec1e75c d_validate +EXPORT_SYMBOL vmlinux 0x6ec9ccdb _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0x6eeaf4ed tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL vmlinux 0x6efb35d8 __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f33aaf3 kfree_put_link +EXPORT_SYMBOL vmlinux 0x6f33ce2b pci_set_power_state +EXPORT_SYMBOL vmlinux 0x6f77b2f5 dquot_get_dqinfo +EXPORT_SYMBOL vmlinux 0x6f81073f jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x6fc591e6 skb_push +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fcf52ec dev_remove_pack +EXPORT_SYMBOL vmlinux 0x6fd29878 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x6fd43522 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x6ff6924d ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x70097aa0 nand_bch_free +EXPORT_SYMBOL vmlinux 0x701cdcc1 of_dev_get +EXPORT_SYMBOL vmlinux 0x70292968 vlan_vid_del +EXPORT_SYMBOL vmlinux 0x70397dcc input_set_abs_params +EXPORT_SYMBOL vmlinux 0x7051e2f8 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x70564ece ip6_route_output +EXPORT_SYMBOL vmlinux 0x7057b645 register_qdisc +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x708cba89 flock_lock_file_wait +EXPORT_SYMBOL vmlinux 0x709314c9 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x709bbbdf netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0x70a18c86 dquot_release +EXPORT_SYMBOL vmlinux 0x70ad5a5c ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x70bc17d7 inode_wait +EXPORT_SYMBOL vmlinux 0x70cbeb89 dev_printk_emit +EXPORT_SYMBOL vmlinux 0x70d053fd try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0x70d496c5 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x70e39dae dss_uninstall_mgr_ops +EXPORT_SYMBOL vmlinux 0x70f688ab bdget +EXPORT_SYMBOL vmlinux 0x710b7466 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x712ea63f napi_gro_receive +EXPORT_SYMBOL vmlinux 0x7142c63c edma_free_slot +EXPORT_SYMBOL vmlinux 0x71658a05 dispc_ovl_setup +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x719c5509 blk_integrity_register +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71b19fad dmam_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x71b8f0af backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x71c90087 memcmp +EXPORT_SYMBOL vmlinux 0x71d08816 check_disk_size_change +EXPORT_SYMBOL vmlinux 0x71dc48fd udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x71f59345 __nla_reserve +EXPORT_SYMBOL vmlinux 0x71f65175 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0x72350130 ___ratelimit +EXPORT_SYMBOL vmlinux 0x7244702b dev_get_by_index +EXPORT_SYMBOL vmlinux 0x725bf0b6 udp_prot +EXPORT_SYMBOL vmlinux 0x7264ef5f tty_register_device +EXPORT_SYMBOL vmlinux 0x727e9690 snd_ctl_add +EXPORT_SYMBOL vmlinux 0x72b362ae amba_device_register +EXPORT_SYMBOL vmlinux 0x72b5b2b7 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x72c2bba9 of_device_unregister +EXPORT_SYMBOL vmlinux 0x72d58de9 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x72d884b7 mmc_start_req +EXPORT_SYMBOL vmlinux 0x72ddecb9 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x72e9b966 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72fc0d0c in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x72fc3a69 scsi_prep_state_check +EXPORT_SYMBOL vmlinux 0x7308d7e8 security_inode_permission +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x731b81f1 __wait_on_bit +EXPORT_SYMBOL vmlinux 0x731bb692 sg_miter_stop +EXPORT_SYMBOL vmlinux 0x733a1758 tcp_gso_segment +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x7341b496 proc_mkdir +EXPORT_SYMBOL vmlinux 0x737de5e9 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x739cdac2 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x73a3860d pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x73ae85e8 pci_enable_obff +EXPORT_SYMBOL vmlinux 0x73be5bd5 omapdss_output_set_device +EXPORT_SYMBOL vmlinux 0x73c6214d __neigh_event_send +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x73e5abec scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x73e5dd0c serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x741ef41f _dev_info +EXPORT_SYMBOL vmlinux 0x7421aa14 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x744c4ad9 simple_rename +EXPORT_SYMBOL vmlinux 0x745dd039 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x745e2905 dev_load +EXPORT_SYMBOL vmlinux 0x7469fcfe radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x746bacc9 kern_path +EXPORT_SYMBOL vmlinux 0x746c391d inet6_protos +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x749406e0 free_mdio_bitbang +EXPORT_SYMBOL vmlinux 0x74986795 sys_fillrect +EXPORT_SYMBOL vmlinux 0x74a52899 mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0x74adfad9 pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0x74bc4225 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74ce05b8 flush_delayed_work +EXPORT_SYMBOL vmlinux 0x74d4feff max8998_read_reg +EXPORT_SYMBOL vmlinux 0x74db3616 blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0x74e46dac imx_ssi_fiq_tx_buffer +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74ed61cc proc_set_user +EXPORT_SYMBOL vmlinux 0x74fa022d edma_trigger_channel +EXPORT_SYMBOL vmlinux 0x74fc5752 do_sync_write +EXPORT_SYMBOL vmlinux 0x75022ef3 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x75030a9b sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x750d7227 drop_super +EXPORT_SYMBOL vmlinux 0x752abe4f vm_insert_page +EXPORT_SYMBOL vmlinux 0x754dac78 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x7555429a set_anon_super +EXPORT_SYMBOL vmlinux 0x756aed1e vga_get +EXPORT_SYMBOL vmlinux 0x75788604 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x758c9256 block_truncate_page +EXPORT_SYMBOL vmlinux 0x7593d385 div64_s64 +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75ca8361 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x75f960dc dev_change_flags +EXPORT_SYMBOL vmlinux 0x75fee7fd __raw_writesb +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x7631a72f scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x76372859 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x76447abc wireless_spy_update +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x76574516 pci_clear_master +EXPORT_SYMBOL vmlinux 0x7665bf7c neigh_seq_next +EXPORT_SYMBOL vmlinux 0x767d7063 sock_no_connect +EXPORT_SYMBOL vmlinux 0x768652f2 filemap_flush +EXPORT_SYMBOL vmlinux 0x768dd90e security_d_instantiate +EXPORT_SYMBOL vmlinux 0x7698b6ed call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0x769cd6ea snd_timer_pause +EXPORT_SYMBOL vmlinux 0x76a70939 seq_puts +EXPORT_SYMBOL vmlinux 0x76bf656d __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x76cf2236 capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0x76cf47f6 __aeabi_llsl +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76d7b24c netdev_has_any_upper_dev +EXPORT_SYMBOL vmlinux 0x76f7fc63 __genl_register_family +EXPORT_SYMBOL vmlinux 0x76fb79e0 pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0x77234332 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL vmlinux 0x7735c668 get_phy_device +EXPORT_SYMBOL vmlinux 0x7746bf95 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x778cf2c6 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x778e89d9 ppp_register_channel +EXPORT_SYMBOL vmlinux 0x7791193f icst525_s2div +EXPORT_SYMBOL vmlinux 0x779133a2 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77a59beb page_address +EXPORT_SYMBOL vmlinux 0x77bad09a security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77c42556 rfkill_alloc +EXPORT_SYMBOL vmlinux 0x77c82611 xfrm_state_add +EXPORT_SYMBOL vmlinux 0x77cf99fe snd_pcm_new +EXPORT_SYMBOL vmlinux 0x77d5b6b6 kobject_set_name +EXPORT_SYMBOL vmlinux 0x77df0847 __set_personality +EXPORT_SYMBOL vmlinux 0x77e87b91 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x77ecac9f zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x77f12a62 snd_card_unref +EXPORT_SYMBOL vmlinux 0x77f3054f registered_fb +EXPORT_SYMBOL vmlinux 0x77fe4cb2 sleep_on_timeout +EXPORT_SYMBOL vmlinux 0x78187242 ptp_clock_register +EXPORT_SYMBOL vmlinux 0x781e4451 __blk_end_request +EXPORT_SYMBOL vmlinux 0x782567ec memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x782928b3 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x782a9e42 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x785d5c15 pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x7865c074 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x788fe103 iomem_resource +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x789b5f5f devm_clk_put +EXPORT_SYMBOL vmlinux 0x78a46dac lock_rename +EXPORT_SYMBOL vmlinux 0x78a99b9c tcp_syn_flood_action +EXPORT_SYMBOL vmlinux 0x78ba3887 dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78e2371e kfree_skb +EXPORT_SYMBOL vmlinux 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL vmlinux 0x78ff02e7 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x79006e10 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x792156b8 dss_mgr_connect +EXPORT_SYMBOL vmlinux 0x7926c7aa sk_release_kernel +EXPORT_SYMBOL vmlinux 0x7930d225 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x7984580b phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0x799c04db pci_vpd_truncate +EXPORT_SYMBOL vmlinux 0x799c1f22 blk_register_region +EXPORT_SYMBOL vmlinux 0x799e9598 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x799e9635 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL vmlinux 0x79a690d0 tcf_exts_change +EXPORT_SYMBOL vmlinux 0x79a8abba pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79b3783d set_blocksize +EXPORT_SYMBOL vmlinux 0x79be2aab __pci_register_driver +EXPORT_SYMBOL vmlinux 0x79c14b66 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x79c3a7a1 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x79f4d5fd omapdss_register_display +EXPORT_SYMBOL vmlinux 0x79f6afd3 remap_pfn_range +EXPORT_SYMBOL vmlinux 0x79fa1deb imx_ssi_fiq_rx_buffer +EXPORT_SYMBOL vmlinux 0x7a048ebb of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0x7a16af54 snd_timer_stop +EXPORT_SYMBOL vmlinux 0x7a188791 prandom_bytes +EXPORT_SYMBOL vmlinux 0x7a1fe9f9 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a3e3f7f dev_get_stats +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a5fef80 tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x7a785243 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x7a87b5bd do_splice_direct +EXPORT_SYMBOL vmlinux 0x7a8bf7fd __register_binfmt +EXPORT_SYMBOL vmlinux 0x7a91726b clkdev_alloc +EXPORT_SYMBOL vmlinux 0x7a925833 cpufreq_get_global_kobject +EXPORT_SYMBOL vmlinux 0x7aa0569b __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x7aa0d396 snd_timer_global_free +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7ab6390b qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7ad5f09b xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7afa89fc vsnprintf +EXPORT_SYMBOL vmlinux 0x7b024345 ppp_unit_number +EXPORT_SYMBOL vmlinux 0x7b0d9a4e sock_create_kern +EXPORT_SYMBOL vmlinux 0x7b0fdf5c fifo_set_limit +EXPORT_SYMBOL vmlinux 0x7b111907 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x7b12b00f dquot_commit +EXPORT_SYMBOL vmlinux 0x7b1ade38 lz4_decompress +EXPORT_SYMBOL vmlinux 0x7b50f433 scsi_print_result +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b69a247 make_kgid +EXPORT_SYMBOL vmlinux 0x7b7051a1 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x7b7618c6 bitmap_unplug +EXPORT_SYMBOL vmlinux 0x7b8ee0e4 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0x7bb2b149 md_integrity_register +EXPORT_SYMBOL vmlinux 0x7bde8690 __lock_page +EXPORT_SYMBOL vmlinux 0x7be68a87 dquot_disable +EXPORT_SYMBOL vmlinux 0x7c05fc68 __devm_request_region +EXPORT_SYMBOL vmlinux 0x7c0ec35b __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c1c42df mdiobus_scan +EXPORT_SYMBOL vmlinux 0x7c208634 bdi_register +EXPORT_SYMBOL vmlinux 0x7c383cf7 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c4bb78a snd_device_free +EXPORT_SYMBOL vmlinux 0x7c5b0381 scsi_finish_command +EXPORT_SYMBOL vmlinux 0x7c5e7178 pci_save_state +EXPORT_SYMBOL vmlinux 0x7c92af0f pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7c993004 mmc_of_parse +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cb23bf6 kobject_del +EXPORT_SYMBOL vmlinux 0x7cbe8095 dispc_mgr_set_timings +EXPORT_SYMBOL vmlinux 0x7cc035a7 __ucmpdi2 +EXPORT_SYMBOL vmlinux 0x7cc4e80e blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x7cc578da param_get_long +EXPORT_SYMBOL vmlinux 0x7ccdc04b jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7cea360d bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x7cfcecb2 __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d0e3e72 ida_get_new_above +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d4e2276 __init_rwsem +EXPORT_SYMBOL vmlinux 0x7d607cc6 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x7da00527 devm_ioremap +EXPORT_SYMBOL vmlinux 0x7da1af7b ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x7db15371 skb_free_datagram +EXPORT_SYMBOL vmlinux 0x7dc73a07 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL vmlinux 0x7dccc294 proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x7dcd0cd9 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x7dce37bd skb_seq_read +EXPORT_SYMBOL vmlinux 0x7dd144a0 zero_fill_bio +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7df29952 kern_path_create +EXPORT_SYMBOL vmlinux 0x7e052f07 d_drop +EXPORT_SYMBOL vmlinux 0x7e1bb441 nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0x7e394c4e sysctl_local_reserved_ports +EXPORT_SYMBOL vmlinux 0x7e4bfb3a kobject_get +EXPORT_SYMBOL vmlinux 0x7e5714dd request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x7e5e4fb7 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x7e98d318 vexpress_config_read +EXPORT_SYMBOL vmlinux 0x7e9efe8e complete_and_exit +EXPORT_SYMBOL vmlinux 0x7ea22f9b __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x7ea6973d init_special_inode +EXPORT_SYMBOL vmlinux 0x7ead817c __idr_pre_get +EXPORT_SYMBOL vmlinux 0x7ec89972 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x7ee73c0c memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0x7f005e06 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x7f028112 generic_file_splice_write +EXPORT_SYMBOL vmlinux 0x7f0ea3b5 input_allocate_device +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f2e164c tcp_check_req +EXPORT_SYMBOL vmlinux 0x7f33a63b omap_get_dma_chain_dst_pos +EXPORT_SYMBOL vmlinux 0x7f3c4da5 filemap_fault +EXPORT_SYMBOL vmlinux 0x7f63b31e _memcpy_toio +EXPORT_SYMBOL vmlinux 0x7f9f07f5 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x7fa54e2f load_nls +EXPORT_SYMBOL vmlinux 0x7fa64cca omap_dss_pal_timings +EXPORT_SYMBOL vmlinux 0x7fa73465 lock_sock_fast +EXPORT_SYMBOL vmlinux 0x7fae2d52 ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x7fb95227 nand_scan_ident +EXPORT_SYMBOL vmlinux 0x7fd56c7c handle_edge_irq +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7fec7d72 omap_dss_put_device +EXPORT_SYMBOL vmlinux 0x7ff9d95f dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x800e4ffa __muldi3 +EXPORT_SYMBOL vmlinux 0x80145422 input_inject_event +EXPORT_SYMBOL vmlinux 0x8026f91e __blk_end_request_all +EXPORT_SYMBOL vmlinux 0x802b9c19 register_console +EXPORT_SYMBOL vmlinux 0x804f922a ipmi_addr_length +EXPORT_SYMBOL vmlinux 0x805e7b0f vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x806579a4 __scm_send +EXPORT_SYMBOL vmlinux 0x80a900b8 xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0x80bd9df0 alloc_file +EXPORT_SYMBOL vmlinux 0x80c1c54e mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x80c37e71 eth_change_mtu +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80d81308 omap_vrfb_release_ctx +EXPORT_SYMBOL vmlinux 0x81177757 snd_card_proc_new +EXPORT_SYMBOL vmlinux 0x8127c838 omap_dss_get_overlay_manager +EXPORT_SYMBOL vmlinux 0x8129dc31 lro_receive_frags +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x815fbd64 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x817b8bec ac97_bus_type +EXPORT_SYMBOL vmlinux 0x817c85ff check_disk_change +EXPORT_SYMBOL vmlinux 0x81897bb1 snd_pcm_kernel_ioctl +EXPORT_SYMBOL vmlinux 0x81aaca25 d_instantiate +EXPORT_SYMBOL vmlinux 0x81acadb6 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL vmlinux 0x81c1619b nand_scan +EXPORT_SYMBOL vmlinux 0x81d10f5f trace_seq_putc +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81e02447 seq_pad +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x821c465a sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x8230d4c0 snd_pcm_hw_constraint_step +EXPORT_SYMBOL vmlinux 0x8241eb33 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x824a4367 tmio_core_mmc_pwr +EXPORT_SYMBOL vmlinux 0x8251bcc3 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x8260686f bitmap_find_next_zero_area +EXPORT_SYMBOL vmlinux 0x827a4697 vfs_mknod +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82c8eeb2 simple_unlink +EXPORT_SYMBOL vmlinux 0x82ce3b46 __ip_dev_find +EXPORT_SYMBOL vmlinux 0x82e8c508 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x82f8c55d tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x8304941e arm_dma_ops +EXPORT_SYMBOL vmlinux 0x83053246 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x8311495a alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x8320bea8 __umodsi3 +EXPORT_SYMBOL vmlinux 0x83211609 up_write +EXPORT_SYMBOL vmlinux 0x832a9d1c request_key_async +EXPORT_SYMBOL vmlinux 0x83343045 dev_add_offload +EXPORT_SYMBOL vmlinux 0x83477bf9 netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0x8363e56b amba_release_regions +EXPORT_SYMBOL vmlinux 0x83654c82 pci_enable_ltr +EXPORT_SYMBOL vmlinux 0x83743765 mpage_writepage +EXPORT_SYMBOL vmlinux 0x839c980c dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x839cdf99 edma_resume +EXPORT_SYMBOL vmlinux 0x839fb571 tty_port_destroy +EXPORT_SYMBOL vmlinux 0x83a476ce bitmap_scnlistprintf +EXPORT_SYMBOL vmlinux 0x83ca2e70 I_BDEV +EXPORT_SYMBOL vmlinux 0x83d70683 edma_start +EXPORT_SYMBOL vmlinux 0x83e5ab5b sound_class +EXPORT_SYMBOL vmlinux 0x83e93b64 key_revoke +EXPORT_SYMBOL vmlinux 0x8415328c pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0x841962f8 param_get_ushort +EXPORT_SYMBOL vmlinux 0x84269300 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x8430dd3c blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x8449c421 pci_dev_put +EXPORT_SYMBOL vmlinux 0x8464bed0 inet_listen +EXPORT_SYMBOL vmlinux 0x8468d3d9 pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x846aa2ef blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x849a990f fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0x849c285b devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x84b183ae strncmp +EXPORT_SYMBOL vmlinux 0x84c70186 request_firmware +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x8509c540 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0x8518eca9 param_get_short +EXPORT_SYMBOL vmlinux 0x85233771 bdevname +EXPORT_SYMBOL vmlinux 0x853bf7c1 param_set_int +EXPORT_SYMBOL vmlinux 0x854e1c0b sg_nents +EXPORT_SYMBOL vmlinux 0x85505ebe pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0x8552278e audit_log +EXPORT_SYMBOL vmlinux 0x85559380 input_set_capability +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x85737519 edma_read_slot +EXPORT_SYMBOL vmlinux 0x85765fee omap_enable_dma_irq +EXPORT_SYMBOL vmlinux 0x8591c8b3 nlmsg_notify +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85ce1b04 dm_get_mapinfo +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85e34218 install_exec_creds +EXPORT_SYMBOL vmlinux 0x85e7deb2 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x86297101 kill_bdev +EXPORT_SYMBOL vmlinux 0x863c45aa flush_dcache_page +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x8656953a mark_buffer_dirty_inode +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 0x869ac5e1 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0x869f3327 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x869fb282 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x86a4889a kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x86c28ca2 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x86c350a7 max8998_write_reg +EXPORT_SYMBOL vmlinux 0x86c39873 mpage_readpage +EXPORT_SYMBOL vmlinux 0x86d16535 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x86e70a3a unregister_key_type +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x870bf928 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x8723b074 dump_emit +EXPORT_SYMBOL vmlinux 0x8729f950 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x873335b1 blk_recount_segments +EXPORT_SYMBOL vmlinux 0x874ac5e1 update_region +EXPORT_SYMBOL vmlinux 0x87648740 simple_fill_super +EXPORT_SYMBOL vmlinux 0x876b74fa blk_mq_run_queues +EXPORT_SYMBOL vmlinux 0x8771bbd0 dqget +EXPORT_SYMBOL vmlinux 0x8771bdd3 devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0x8779a34f param_ops_byte +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x879057b7 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x87966b9b omapdss_get_version +EXPORT_SYMBOL vmlinux 0x8798e453 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x87cb071d blkdev_fsync +EXPORT_SYMBOL vmlinux 0x87d79a77 framebuffer_release +EXPORT_SYMBOL vmlinux 0x881039d0 zlib_inflate +EXPORT_SYMBOL vmlinux 0x8811bbd2 dma_supported +EXPORT_SYMBOL vmlinux 0x8834396c mod_timer +EXPORT_SYMBOL vmlinux 0x88513970 param_set_byte +EXPORT_SYMBOL vmlinux 0x88872623 bio_map_kern +EXPORT_SYMBOL vmlinux 0x8897da12 max8925_set_bits +EXPORT_SYMBOL vmlinux 0x8898eb08 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x88a5ae50 genphy_update_link +EXPORT_SYMBOL vmlinux 0x88b5e6c0 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x88df5144 revalidate_disk +EXPORT_SYMBOL vmlinux 0x88e2f5b7 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x88fc68e1 alloc_pci_dev +EXPORT_SYMBOL vmlinux 0x890dc2ed idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0x8917b742 snd_dma_get_reserved_buf +EXPORT_SYMBOL vmlinux 0x892a8f54 netdev_err +EXPORT_SYMBOL vmlinux 0x894f4d85 cfb_imageblit +EXPORT_SYMBOL vmlinux 0x8953f8ff __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x89607623 blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x8961b2ae key_unlink +EXPORT_SYMBOL vmlinux 0x8970b86e qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x89719ef7 bdput +EXPORT_SYMBOL vmlinux 0x897473df mktime +EXPORT_SYMBOL vmlinux 0x899950d1 tcp_seq_open +EXPORT_SYMBOL vmlinux 0x899e2617 skb_tx_error +EXPORT_SYMBOL vmlinux 0x89a3c4f4 omap_get_dma_chain_index +EXPORT_SYMBOL vmlinux 0x89b30212 freezing_slow_path +EXPORT_SYMBOL vmlinux 0x89b35f75 bio_put +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89f3b304 mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0x89fcd2c7 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x8a0001fc bio_phys_segments +EXPORT_SYMBOL vmlinux 0x8a0f4230 rename_lock +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a1b328f ipv4_specific +EXPORT_SYMBOL vmlinux 0x8a415c91 tty_kref_put +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a4fa83b __aeabi_llsr +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a58ca5b pci_set_master +EXPORT_SYMBOL vmlinux 0x8a6d95cf generic_file_aio_read +EXPORT_SYMBOL vmlinux 0x8a7a1384 simple_transaction_get +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a81576d cookie_check_timestamp +EXPORT_SYMBOL vmlinux 0x8a89775d ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8ac8f8d8 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x8acd8fea __serio_register_driver +EXPORT_SYMBOL vmlinux 0x8afa5983 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x8b0b1c4b skb_append +EXPORT_SYMBOL vmlinux 0x8b1a7a66 pcie_aspm_enabled +EXPORT_SYMBOL vmlinux 0x8b2006b5 nf_afinfo +EXPORT_SYMBOL vmlinux 0x8b2b9ddd unregister_binfmt +EXPORT_SYMBOL vmlinux 0x8b2fadf1 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x8b33aa4f scsi_put_command +EXPORT_SYMBOL vmlinux 0x8b352ba5 truncate_setsize +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b4c70e6 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x8b6019f6 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b83f557 snd_ctl_boolean_mono_info +EXPORT_SYMBOL vmlinux 0x8b8c0c20 inet6_ioctl +EXPORT_SYMBOL vmlinux 0x8b982037 scm_fp_dup +EXPORT_SYMBOL vmlinux 0x8bcbbee4 set_bh_page +EXPORT_SYMBOL vmlinux 0x8bcc3bda clear_nlink +EXPORT_SYMBOL vmlinux 0x8bd3d2d5 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x8be65b41 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x8be8868e snd_ctl_make_virtual_master +EXPORT_SYMBOL vmlinux 0x8bf12352 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x8bf66c09 cfb_copyarea +EXPORT_SYMBOL vmlinux 0x8bfb743f neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x8bfdab23 blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0x8c2183d9 eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0x8c4c768e gen10g_resume +EXPORT_SYMBOL vmlinux 0x8c4d6523 omap_dma_chain_a_transfer +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c700974 inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0x8c705b8c edma_clean_channel +EXPORT_SYMBOL vmlinux 0x8c7362e6 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x8c74dd40 dma_common_mmap +EXPORT_SYMBOL vmlinux 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL vmlinux 0x8ca31a53 snd_ctl_free_one +EXPORT_SYMBOL vmlinux 0x8ca9e14e loop_backing_file +EXPORT_SYMBOL vmlinux 0x8cba418d blk_mq_alloc_single_hw_queue +EXPORT_SYMBOL vmlinux 0x8cd8c339 omap_free_dma +EXPORT_SYMBOL vmlinux 0x8d011435 nobh_write_begin +EXPORT_SYMBOL vmlinux 0x8d0de053 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x8d114afa ip_check_defrag +EXPORT_SYMBOL vmlinux 0x8d1e4bf3 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x8d2e268b param_ops_ulong +EXPORT_SYMBOL vmlinux 0x8d3c316b dma_sync_wait +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d64ec28 sock_update_classid +EXPORT_SYMBOL vmlinux 0x8d6f6d1e snd_card_register +EXPORT_SYMBOL vmlinux 0x8d6f81b4 __div64_32 +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d8b6353 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x8da076f7 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x8da3de51 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x8da8dbfb snd_pcm_suspend +EXPORT_SYMBOL vmlinux 0x8dbeedf4 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0x8dcb8fd1 generic_ro_fops +EXPORT_SYMBOL vmlinux 0x8dcff6e2 __pv_offset +EXPORT_SYMBOL vmlinux 0x8ddcecb8 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x8df59176 insert_inode_locked +EXPORT_SYMBOL vmlinux 0x8dfc761d __f_setown +EXPORT_SYMBOL vmlinux 0x8e079f50 dev_add_pack +EXPORT_SYMBOL vmlinux 0x8e0d66f4 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x8e2085f1 pci_match_id +EXPORT_SYMBOL vmlinux 0x8e46bb18 mmc_free_host +EXPORT_SYMBOL vmlinux 0x8e484565 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x8e5c580a ida_init +EXPORT_SYMBOL vmlinux 0x8e653520 xfrm_cfg_mutex +EXPORT_SYMBOL vmlinux 0x8e654a23 tcp_gro_receive +EXPORT_SYMBOL vmlinux 0x8e864a86 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x8e865d3c arm_delay_ops +EXPORT_SYMBOL vmlinux 0x8eb1eb7f scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x8eb2a7fa ip6_xmit +EXPORT_SYMBOL vmlinux 0x8ee255d9 sock_wmalloc +EXPORT_SYMBOL vmlinux 0x8eeb41ec scsi_host_put +EXPORT_SYMBOL vmlinux 0x8f045d1c cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x8f248080 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x8f272d5e __sk_dst_check +EXPORT_SYMBOL vmlinux 0x8f421796 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x8f46ba0a dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x8f595b11 snd_major +EXPORT_SYMBOL vmlinux 0x8f678b07 __stack_chk_guard +EXPORT_SYMBOL vmlinux 0x8f857b0c dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x8f97746b dqput +EXPORT_SYMBOL vmlinux 0x8fa4130a omap_set_dma_callback +EXPORT_SYMBOL vmlinux 0x8faa4598 of_translate_address +EXPORT_SYMBOL vmlinux 0x8fbdf9cb load_nls_default +EXPORT_SYMBOL vmlinux 0x8fd180e7 kernel_neon_begin +EXPORT_SYMBOL vmlinux 0x8ffdb3b8 crc16 +EXPORT_SYMBOL vmlinux 0x90156669 module_layout +EXPORT_SYMBOL vmlinux 0x902382e0 release_sock +EXPORT_SYMBOL vmlinux 0x9050e209 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0x9070ad54 of_platform_device_create +EXPORT_SYMBOL vmlinux 0x908b53ed param_set_short +EXPORT_SYMBOL vmlinux 0x90a18efc dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x90bef85f fget_raw +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x90e732c4 __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x90ea7dec skb_copy_datagram_iovec +EXPORT_SYMBOL vmlinux 0x90f7fbcb dev_deactivate +EXPORT_SYMBOL vmlinux 0x90fff988 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x91008c9d vlan_untag +EXPORT_SYMBOL vmlinux 0x910575a8 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL vmlinux 0x911e7a08 bio_integrity_get_tag +EXPORT_SYMBOL vmlinux 0x912dd2c0 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x913d0cef phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x9150cb42 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x91516970 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0x915bad05 swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x91621d6a allocate_resource +EXPORT_SYMBOL vmlinux 0x916e6c04 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x919029aa __readwrite_bug +EXPORT_SYMBOL vmlinux 0x919b444b simple_statfs +EXPORT_SYMBOL vmlinux 0x91a89959 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x91aec064 down_read_trylock +EXPORT_SYMBOL vmlinux 0x91c0980e icst_hz +EXPORT_SYMBOL vmlinux 0x91c2980f __block_write_begin +EXPORT_SYMBOL vmlinux 0x91e46e6d eth_header_cache +EXPORT_SYMBOL vmlinux 0x91e6f41b from_kprojid_munged +EXPORT_SYMBOL vmlinux 0x91f0ee1b pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0x91f6cc86 create_syslog_header +EXPORT_SYMBOL vmlinux 0x91fddd73 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x920eb90c interruptible_sleep_on_timeout +EXPORT_SYMBOL vmlinux 0x921e4e80 open_exec +EXPORT_SYMBOL vmlinux 0x922c7339 sget +EXPORT_SYMBOL vmlinux 0x922ce48e mmc_can_discard +EXPORT_SYMBOL vmlinux 0x922def26 skb_clone +EXPORT_SYMBOL vmlinux 0x9233971a rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x923cfda0 of_phy_connect_fixed_link +EXPORT_SYMBOL vmlinux 0x925520d2 blk_start_plug +EXPORT_SYMBOL vmlinux 0x926dec6f netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0x9272dff0 __ip_select_ident +EXPORT_SYMBOL vmlinux 0x927448fe input_open_device +EXPORT_SYMBOL vmlinux 0x9276ce28 edma_set_dest +EXPORT_SYMBOL vmlinux 0x927ae46d snd_timer_interrupt +EXPORT_SYMBOL vmlinux 0x92840a90 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x929f5301 netlink_set_err +EXPORT_SYMBOL vmlinux 0x92a582f1 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92b0572a read_cache_page_async +EXPORT_SYMBOL vmlinux 0x92c9ba0b skb_pad +EXPORT_SYMBOL vmlinux 0x92d49c07 d_invalidate +EXPORT_SYMBOL vmlinux 0x92ec5d1b dispc_mgr_enable +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x932998c7 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x9330cb9f sg_alloc_table +EXPORT_SYMBOL vmlinux 0x935a3178 input_unregister_device +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x937dc265 pci_dev_get +EXPORT_SYMBOL vmlinux 0x938514d4 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x938e92b0 vm_mmap +EXPORT_SYMBOL vmlinux 0x93963a85 dss_feat_get_num_mgrs +EXPORT_SYMBOL vmlinux 0x93a6e0b2 io_schedule +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93c32efb dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x93caf6bc inet_ioctl +EXPORT_SYMBOL vmlinux 0x93dd151c lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x93fed1ab lock_may_write +EXPORT_SYMBOL vmlinux 0x93ff4e6f ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x94098ff8 snd_interval_list +EXPORT_SYMBOL vmlinux 0x941d2b2e __module_get +EXPORT_SYMBOL vmlinux 0x943f2310 netpoll_print_options +EXPORT_SYMBOL vmlinux 0x945a3a8f snd_pcm_lib_ioctl +EXPORT_SYMBOL vmlinux 0x9467aca4 tty_register_driver +EXPORT_SYMBOL vmlinux 0x94854fa3 snd_dma_free_pages +EXPORT_SYMBOL vmlinux 0x9494d092 dcb_getapp +EXPORT_SYMBOL vmlinux 0x9495a8b7 input_register_device +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94c24603 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x94d3da68 rtc_lock +EXPORT_SYMBOL vmlinux 0x94d5d501 xfrm_register_km +EXPORT_SYMBOL vmlinux 0x94ebb40e i2c_transfer +EXPORT_SYMBOL vmlinux 0x9508f166 param_ops_bint +EXPORT_SYMBOL vmlinux 0x9527bee6 mtd_concat_create +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x9554804f i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x95622f41 down_timeout +EXPORT_SYMBOL vmlinux 0x9580479f dma_pool_create +EXPORT_SYMBOL vmlinux 0x95841223 netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x9586c890 sk_receive_skb +EXPORT_SYMBOL vmlinux 0x958a7888 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x9591f2d3 pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x95cb929c of_find_all_nodes +EXPORT_SYMBOL vmlinux 0x95d82318 nand_bch_correct_data +EXPORT_SYMBOL vmlinux 0x95dbe078 __get_user_2 +EXPORT_SYMBOL vmlinux 0x95e6e500 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x960a3703 single_open_size +EXPORT_SYMBOL vmlinux 0x960d2d43 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x9610ea30 backlight_force_update +EXPORT_SYMBOL vmlinux 0x9613509a idr_replace +EXPORT_SYMBOL vmlinux 0x961493a4 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x961c7bfc led_set_brightness +EXPORT_SYMBOL vmlinux 0x962872ea edma_filter_fn +EXPORT_SYMBOL vmlinux 0x96568cda xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x9657e0d6 of_device_alloc +EXPORT_SYMBOL vmlinux 0x96717e1e pci_disable_device +EXPORT_SYMBOL vmlinux 0x96898769 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x96a73d85 pskb_expand_head +EXPORT_SYMBOL vmlinux 0x96acc739 of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x96ae69bf mmc_put_card +EXPORT_SYMBOL vmlinux 0x96b39b6e omap_start_dma_chain_transfers +EXPORT_SYMBOL vmlinux 0x96b4e031 omapdss_register_output +EXPORT_SYMBOL vmlinux 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96d9f52c elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x9718884a xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x97255bdf strlen +EXPORT_SYMBOL vmlinux 0x9733bb44 __register_chrdev +EXPORT_SYMBOL vmlinux 0x97498eb7 snd_pcm_release_substream +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x9765a80e kmap +EXPORT_SYMBOL vmlinux 0x976ade4d seq_vprintf +EXPORT_SYMBOL vmlinux 0x976e700f down_trylock +EXPORT_SYMBOL vmlinux 0x9789fd07 skb_trim +EXPORT_SYMBOL vmlinux 0x9793c93a dispc_mgr_setup +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a60e3d param_get_bool +EXPORT_SYMBOL vmlinux 0x97b4500c __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x97c1e6d9 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0x97d8836b inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x97deea1b mmc_release_host +EXPORT_SYMBOL vmlinux 0x97f2b06d seq_lseek +EXPORT_SYMBOL vmlinux 0x98082893 __copy_to_user +EXPORT_SYMBOL vmlinux 0x980a7c34 block_write_end +EXPORT_SYMBOL vmlinux 0x980bccd9 skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0x9820b644 warn_slowpath_fmt_taint +EXPORT_SYMBOL vmlinux 0x9826d5db ps2_init +EXPORT_SYMBOL vmlinux 0x9834b453 noop_qdisc +EXPORT_SYMBOL vmlinux 0x983bd8ef scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x9852e939 elv_rb_find +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x987dc7e9 netdev_lower_dev_get_private_rcu +EXPORT_SYMBOL vmlinux 0x9898a9c3 devfreq_resume_device +EXPORT_SYMBOL vmlinux 0x98b79eaa kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x98bef535 vfs_unlink +EXPORT_SYMBOL vmlinux 0x98d47845 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x98ecda57 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x98fa21b0 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x990a5e1f netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x99115d2c abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x992ac999 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x9930ba18 snd_jack_set_key +EXPORT_SYMBOL vmlinux 0x99464b7f mddev_congested +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x9952f23e dev_close +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x996c4d30 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x9982b1a6 netif_carrier_off +EXPORT_SYMBOL vmlinux 0x9986c12a abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x9997d27e dquot_file_open +EXPORT_SYMBOL vmlinux 0x999c3148 __raw_readsb +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99b567c8 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x99bb8806 memmove +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99ed9326 d_rehash +EXPORT_SYMBOL vmlinux 0x99f58330 lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0x9a123277 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x9a18428b simple_release_fs +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a6ae737 block_write_full_page_endio +EXPORT_SYMBOL vmlinux 0x9a6e183a __idr_remove_all +EXPORT_SYMBOL vmlinux 0x9a795e1f udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x9a8318ef v7_coherent_kern_range +EXPORT_SYMBOL vmlinux 0x9a8b09e4 from_kuid_munged +EXPORT_SYMBOL vmlinux 0x9a9ab400 genphy_read_status +EXPORT_SYMBOL vmlinux 0x9a9b0ae3 kunmap_high +EXPORT_SYMBOL vmlinux 0x9aa2e3a9 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x9ab4797b udp_del_offload +EXPORT_SYMBOL vmlinux 0x9ac648c5 udp_seq_open +EXPORT_SYMBOL vmlinux 0x9ac7250f scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x9ac9bce5 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x9ad851dd fb_set_var +EXPORT_SYMBOL vmlinux 0x9aeb6bb1 gen10g_restart_aneg +EXPORT_SYMBOL vmlinux 0x9af32ca8 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x9af3ad81 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x9afc3f0d snd_component_add +EXPORT_SYMBOL vmlinux 0x9b33c8d0 scsi_register +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b4080c2 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x9b41fb61 ip_setsockopt +EXPORT_SYMBOL vmlinux 0x9b526d71 security_mmap_file +EXPORT_SYMBOL vmlinux 0x9b570176 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b90ae09 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bb15eb3 force_sig +EXPORT_SYMBOL vmlinux 0x9bce482f __release_region +EXPORT_SYMBOL vmlinux 0x9bda4bb4 edma_set_src +EXPORT_SYMBOL vmlinux 0x9bdee0ec i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9be9df2e xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x9bedb578 pcim_pin_device +EXPORT_SYMBOL vmlinux 0x9bee7b66 pci_platform_rom +EXPORT_SYMBOL vmlinux 0x9c0bd51f _raw_spin_lock +EXPORT_SYMBOL vmlinux 0x9c1616d0 tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x9c35bd74 udp_proc_register +EXPORT_SYMBOL vmlinux 0x9c3737fc __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x9c421cdc ndo_dflt_bridge_getlink +EXPORT_SYMBOL vmlinux 0x9c52dc56 simple_write_end +EXPORT_SYMBOL vmlinux 0x9c97082e edma_pause +EXPORT_SYMBOL vmlinux 0x9c9ec2a0 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x9ca9c018 unregister_cdrom +EXPORT_SYMBOL vmlinux 0x9caa19da cdrom_release +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cba3c37 _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x9cc4ce28 blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x9ceb163c memcpy_toiovec +EXPORT_SYMBOL vmlinux 0x9cf14a77 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x9cfd56c5 scsi_print_status +EXPORT_SYMBOL vmlinux 0x9d05f6c4 ktime_get_clocktai +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d157d52 netlink_unicast +EXPORT_SYMBOL vmlinux 0x9d2362de snd_timer_continue +EXPORT_SYMBOL vmlinux 0x9d36e44b revert_creds +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d503fb2 inode_dio_done +EXPORT_SYMBOL vmlinux 0x9d58349a of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0x9d669763 memcpy +EXPORT_SYMBOL vmlinux 0x9d7a5efa linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x9d8dd852 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x9d90f95f __crc32c_le_combine +EXPORT_SYMBOL vmlinux 0x9d96c840 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x9da163f8 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x9dbad8cb xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x9dc2e272 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x9dd23246 proto_unregister +EXPORT_SYMBOL vmlinux 0x9df344ed __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0x9dfe7307 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e2000a7 memcpy_toiovecend +EXPORT_SYMBOL vmlinux 0x9e21f669 __skb_checksum +EXPORT_SYMBOL vmlinux 0x9e3c0213 uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x9e40ddd3 __generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x9e44b9b7 of_get_next_available_child +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 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL vmlinux 0x9e7568e8 blk_mq_init_commands +EXPORT_SYMBOL vmlinux 0x9e8e692e __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x9e9f1714 __bitmap_andnot +EXPORT_SYMBOL vmlinux 0x9ec370ee bio_pair_release +EXPORT_SYMBOL vmlinux 0x9ecc6a7a interruptible_sleep_on +EXPORT_SYMBOL vmlinux 0x9ed2eec7 param_set_ushort +EXPORT_SYMBOL vmlinux 0x9ed3a2ad kill_litter_super +EXPORT_SYMBOL vmlinux 0x9ed685ee iov_iter_advance +EXPORT_SYMBOL vmlinux 0x9edaa763 tty_set_operations +EXPORT_SYMBOL vmlinux 0x9ee4fbf3 snd_pcm_hw_refine +EXPORT_SYMBOL vmlinux 0x9ee7040c bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x9ef2f0fb skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x9ef363e0 nand_bch_calculate_ecc +EXPORT_SYMBOL vmlinux 0x9f0639ad truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x9f085b6c udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x9f1a6800 truncate_pagecache +EXPORT_SYMBOL vmlinux 0x9f2bdaac __bitmap_or +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f491e5d ftrace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0x9f51a64f __nlmsg_put +EXPORT_SYMBOL vmlinux 0x9f6b3a65 bio_integrity_split +EXPORT_SYMBOL vmlinux 0x9f823cea dispc_mgr_is_enabled +EXPORT_SYMBOL vmlinux 0x9f87263d _snd_ctl_add_slave +EXPORT_SYMBOL vmlinux 0x9f8b44f5 consume_skb +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9f9a7516 sock_i_ino +EXPORT_SYMBOL vmlinux 0x9f9b6cfc kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x9fb3dd30 memcpy_fromiovec +EXPORT_SYMBOL vmlinux 0x9fcd53ff twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x9fd94989 kthread_bind +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9fe11035 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0x9ffe516e padata_start +EXPORT_SYMBOL vmlinux 0xa003a830 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0xa00eb15b ioremap_page +EXPORT_SYMBOL vmlinux 0xa033c906 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa047fe8a skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa0512c24 km_state_expired +EXPORT_SYMBOL vmlinux 0xa0576437 tegra_ahb_enable_smmu +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa05ef6f7 skb_store_bits +EXPORT_SYMBOL vmlinux 0xa06df9e1 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa0966e4b unregister_shrinker +EXPORT_SYMBOL vmlinux 0xa09b9296 tty_throttle +EXPORT_SYMBOL vmlinux 0xa09e3791 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0xa0a05397 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0xa0a34959 dma_release_declared_memory +EXPORT_SYMBOL vmlinux 0xa0aae687 imx_ssi_fiq_end +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0ceef51 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa127f858 napi_complete +EXPORT_SYMBOL vmlinux 0xa1288f8e snd_timer_global_register +EXPORT_SYMBOL vmlinux 0xa12a2b34 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0xa13e69d6 would_dump +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa156055b inet6_getname +EXPORT_SYMBOL vmlinux 0xa16cff2a do_splice_from +EXPORT_SYMBOL vmlinux 0xa17cc95f dev_emerg +EXPORT_SYMBOL vmlinux 0xa18457fd km_state_notify +EXPORT_SYMBOL vmlinux 0xa1852ebd pcim_iounmap +EXPORT_SYMBOL vmlinux 0xa1ae1d01 skb_insert +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1d55e90 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xa1e18421 vfs_setpos +EXPORT_SYMBOL vmlinux 0xa1f0ebea bit_waitqueue +EXPORT_SYMBOL vmlinux 0xa1f2a011 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0xa20ce1b8 net_msg_warn +EXPORT_SYMBOL vmlinux 0xa20f97ee delete_from_page_cache +EXPORT_SYMBOL vmlinux 0xa21e4ae2 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0xa2455341 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0xa25204bd PDE_DATA +EXPORT_SYMBOL vmlinux 0xa256bf7f pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0xa25c2a31 register_framebuffer +EXPORT_SYMBOL vmlinux 0xa25cd8d5 d_alloc_name +EXPORT_SYMBOL vmlinux 0xa2627388 netif_skb_dev_features +EXPORT_SYMBOL vmlinux 0xa2743b33 security_path_symlink +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa28a2ace ipmi_set_gets_events +EXPORT_SYMBOL vmlinux 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL vmlinux 0xa2b1e6ae inet_frags_init +EXPORT_SYMBOL vmlinux 0xa2ba287a mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0xa2be6b00 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0xa2d81d90 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0xa2e4ccb0 dquot_resume +EXPORT_SYMBOL vmlinux 0xa2ef34d7 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0xa2f0425d twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0xa2fb174e scsi_print_command +EXPORT_SYMBOL vmlinux 0xa2fc4c6c pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0xa31e44ba edma_free_channel +EXPORT_SYMBOL vmlinux 0xa3321efe nla_append +EXPORT_SYMBOL vmlinux 0xa332464a of_get_cpu_node +EXPORT_SYMBOL vmlinux 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL vmlinux 0xa34f1ef5 crc32_le +EXPORT_SYMBOL vmlinux 0xa35444e4 dispc_write_irqenable +EXPORT_SYMBOL vmlinux 0xa35de80f ipv4_config +EXPORT_SYMBOL vmlinux 0xa374bada __d_drop +EXPORT_SYMBOL vmlinux 0xa3776187 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0xa381944f dql_reset +EXPORT_SYMBOL vmlinux 0xa3944167 md_finish_reshape +EXPORT_SYMBOL vmlinux 0xa39e878c tcf_exts_dump +EXPORT_SYMBOL vmlinux 0xa3bbe72d netdev_notify_peers +EXPORT_SYMBOL vmlinux 0xa3c2e8e7 update_devfreq +EXPORT_SYMBOL vmlinux 0xa3cbe2c7 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0xa3f0c369 mdiobus_register +EXPORT_SYMBOL vmlinux 0xa3f35bf5 rwsem_is_locked +EXPORT_SYMBOL vmlinux 0xa4108375 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0xa414882d add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0xa4255538 tcf_hash_create +EXPORT_SYMBOL vmlinux 0xa43a065a genphy_config_aneg +EXPORT_SYMBOL vmlinux 0xa43b1297 vscnprintf +EXPORT_SYMBOL vmlinux 0xa43b9539 memcpy_fromiovecend +EXPORT_SYMBOL vmlinux 0xa45279a5 snd_pcm_hw_rule_add +EXPORT_SYMBOL vmlinux 0xa452ec0a omap_video_timings_to_videomode +EXPORT_SYMBOL vmlinux 0xa4610bc6 omap_rev +EXPORT_SYMBOL vmlinux 0xa46bbc62 sk_run_filter +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa48f5b09 omap_dma_set_global_params +EXPORT_SYMBOL vmlinux 0xa4a7fefa fb_set_cmap +EXPORT_SYMBOL vmlinux 0xa4b42c55 omap_set_dma_priority +EXPORT_SYMBOL vmlinux 0xa4cdc9c9 keyring_search +EXPORT_SYMBOL vmlinux 0xa4d4dd59 dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0xa4f3cb74 rt6_lookup +EXPORT_SYMBOL vmlinux 0xa524370a dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0xa531a667 vsc824x_add_skew +EXPORT_SYMBOL vmlinux 0xa54cb00a __alloc_skb +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa5728894 buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0xa5753eee igrab +EXPORT_SYMBOL vmlinux 0xa5844142 d_move +EXPORT_SYMBOL vmlinux 0xa58fea9d mempool_destroy +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5a633b9 sg_last +EXPORT_SYMBOL vmlinux 0xa5b3ae41 uart_register_driver +EXPORT_SYMBOL vmlinux 0xa5cef8ad release_resource +EXPORT_SYMBOL vmlinux 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL vmlinux 0xa61e4362 omap_request_dma +EXPORT_SYMBOL vmlinux 0xa63a2f9b param_get_ulong +EXPORT_SYMBOL vmlinux 0xa63c99cd netdev_state_change +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa64a4cea usb_nop_xceiv_unregister +EXPORT_SYMBOL vmlinux 0xa652c4ef __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0xa656b92c set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0xa6607941 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0xa66edc06 netlink_capable +EXPORT_SYMBOL vmlinux 0xa6715115 do_settimeofday +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa67589c1 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0xa67f7b1a snd_pcm_hw_param_last +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6970398 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0xa6ae2626 mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0xa6aefb55 snd_ctl_unregister_ioctl +EXPORT_SYMBOL vmlinux 0xa6bab23d dqstats +EXPORT_SYMBOL vmlinux 0xa6de6672 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0xa6f16db9 __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xa728d9fd iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0xa734a3e9 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa73fc98f of_n_addr_cells +EXPORT_SYMBOL vmlinux 0xa74ca657 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0xa77a369d idr_init +EXPORT_SYMBOL vmlinux 0xa77cd907 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0xa7921e22 arp_send +EXPORT_SYMBOL vmlinux 0xa7a1d015 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0xa7bcb7fc pci_enable_msi_block +EXPORT_SYMBOL vmlinux 0xa7c07668 scsi_scan_host +EXPORT_SYMBOL vmlinux 0xa808bcb8 vexpress_config_wait +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa839d2be irq_to_desc +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa8480831 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0xa87044cb mmc_remove_host +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa89b6ecb skb_queue_head +EXPORT_SYMBOL vmlinux 0xa8a8110c kernel_neon_end +EXPORT_SYMBOL vmlinux 0xa8bcc12d amba_request_regions +EXPORT_SYMBOL vmlinux 0xa8ed3d9f snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL vmlinux 0xa8f01b6d xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0xa8fd9f65 netdev_info +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa9102a56 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa95d21e2 ps2_command +EXPORT_SYMBOL vmlinux 0xa964dd13 gpmc_cs_request +EXPORT_SYMBOL vmlinux 0xa96d11ac dmam_release_declared_memory +EXPORT_SYMBOL vmlinux 0xa971fbc8 unregister_quota_format +EXPORT_SYMBOL vmlinux 0xa99f2d0b set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0xa9ade668 devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0xa9b63345 of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0xa9d7ed75 snd_timer_start +EXPORT_SYMBOL vmlinux 0xa9e7f3c0 tcp_sync_mss +EXPORT_SYMBOL vmlinux 0xa9effda5 __first_cpu +EXPORT_SYMBOL vmlinux 0xaa195950 migrate_page +EXPORT_SYMBOL vmlinux 0xaa67645d inet_del_protocol +EXPORT_SYMBOL vmlinux 0xaa6901ac __kfifo_out_r +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa7c31f7 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0xaa823b99 mmc_can_erase +EXPORT_SYMBOL vmlinux 0xaa8638ce napi_gro_flush +EXPORT_SYMBOL vmlinux 0xaa8acf1d inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xaa9087c0 param_ops_string +EXPORT_SYMBOL vmlinux 0xaaa5c0e2 tty_port_open +EXPORT_SYMBOL vmlinux 0xaac72c5d fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0xaac8c6d8 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaaec4c86 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab190114 scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0xab2b2f9a inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0xab34f64a __memcg_kmem_get_cache +EXPORT_SYMBOL vmlinux 0xab497b85 abort_creds +EXPORT_SYMBOL vmlinux 0xab4e2168 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0xab600421 probe_irq_off +EXPORT_SYMBOL vmlinux 0xab694444 bsearch +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab7603e7 imx_ssi_fiq_start +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab7c13a4 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0xab974a39 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0xabb7c249 wait_iff_congested +EXPORT_SYMBOL vmlinux 0xabc6dd63 cpufreq_sysfs_create_file +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabcac104 tty_check_change +EXPORT_SYMBOL vmlinux 0xabd0c91c rtc_time_to_tm +EXPORT_SYMBOL vmlinux 0xabd2e22c setup_arg_pages +EXPORT_SYMBOL vmlinux 0xabd81c79 devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0xabed627a km_query +EXPORT_SYMBOL vmlinux 0xabf6d66c __brelse +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac2a3e96 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0xac390091 dev_base_lock +EXPORT_SYMBOL vmlinux 0xac5c5dca sock_wfree +EXPORT_SYMBOL vmlinux 0xac861574 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0xac8f37b2 outer_cache +EXPORT_SYMBOL vmlinux 0xac95a509 mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0xac9df81f fd_install +EXPORT_SYMBOL vmlinux 0xaca04707 generic_show_options +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacb3ab55 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xacbd12d7 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0xacc0f897 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0xacc4b30b posix_unblock_lock +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad040fd4 dev_addr_init +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad2fbb8a omapdss_default_get_timings +EXPORT_SYMBOL vmlinux 0xad3dbf19 blk_put_request +EXPORT_SYMBOL vmlinux 0xad3ec427 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0xad46dec2 of_count_phandle_with_args +EXPORT_SYMBOL vmlinux 0xad7a0ef2 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad8e1c06 pipe_to_file +EXPORT_SYMBOL vmlinux 0xada4a6fd blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0xadddb84a mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0xade46cfe tty_port_close_end +EXPORT_SYMBOL vmlinux 0xade88e76 snd_malloc_pages +EXPORT_SYMBOL vmlinux 0xadf06e60 textsearch_prepare +EXPORT_SYMBOL vmlinux 0xadf42bd5 __request_region +EXPORT_SYMBOL vmlinux 0xae04082e splice_from_pipe_begin +EXPORT_SYMBOL vmlinux 0xae1d9ae3 mmc_can_trim +EXPORT_SYMBOL vmlinux 0xae3ad94f i2c_use_client +EXPORT_SYMBOL vmlinux 0xae5ec2db led_blink_set +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae8c7673 dmam_pool_create +EXPORT_SYMBOL vmlinux 0xaec655c7 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0xaee3f1db mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0xaef1921c vc_resize +EXPORT_SYMBOL vmlinux 0xaf0050c8 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0xaf05b91b of_device_is_available +EXPORT_SYMBOL vmlinux 0xaf0cf781 inet_frag_kill +EXPORT_SYMBOL vmlinux 0xaf0e9183 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf50e76d elf_set_personality +EXPORT_SYMBOL vmlinux 0xaf5d4c1f nf_unregister_hook +EXPORT_SYMBOL vmlinux 0xaf5f7994 remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xaf64ad0d zlib_deflate +EXPORT_SYMBOL vmlinux 0xaf8437fa pci_scan_slot +EXPORT_SYMBOL vmlinux 0xaf8aa518 system_rev +EXPORT_SYMBOL vmlinux 0xaf91d89f __kernel_param_lock +EXPORT_SYMBOL vmlinux 0xafa1e608 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0xafa36c52 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0xafa3b7f9 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0xafad493b param_ops_ushort +EXPORT_SYMBOL vmlinux 0xafbe1757 ipmi_register_smi +EXPORT_SYMBOL vmlinux 0xafcb1f22 kernel_bind +EXPORT_SYMBOL vmlinux 0xafdbbed4 __inode_permission +EXPORT_SYMBOL vmlinux 0xafffff5b tcp_make_synack +EXPORT_SYMBOL vmlinux 0xb00b2221 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0xb04cf0fe lg_local_unlock +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0b5c71a jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0xb0b847ac __bitmap_full +EXPORT_SYMBOL vmlinux 0xb0c44f53 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0eac9fb pci_get_subsys +EXPORT_SYMBOL vmlinux 0xb0ffda2f blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xb1130e1d padata_set_cpumask +EXPORT_SYMBOL vmlinux 0xb1143957 ll_rw_block +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb12379b0 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb1304bfe of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0xb139df61 user_path_create +EXPORT_SYMBOL vmlinux 0xb194018b bio_reset +EXPORT_SYMBOL vmlinux 0xb19760c3 bitmap_onto +EXPORT_SYMBOL vmlinux 0xb1a0aa22 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1cc7d9e pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1d9aabd lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0xb1db9e4e param_get_invbool +EXPORT_SYMBOL vmlinux 0xb1ea5cbb pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0xb23a4f67 kernel_sendpage +EXPORT_SYMBOL vmlinux 0xb2434d75 tcf_hash_release +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb26fa308 tcf_hash_check +EXPORT_SYMBOL vmlinux 0xb27ad590 d_delete +EXPORT_SYMBOL vmlinux 0xb29814ee pci_disable_ltr +EXPORT_SYMBOL vmlinux 0xb2b0b6e9 scsi_add_device +EXPORT_SYMBOL vmlinux 0xb2b14f91 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0xb2b39765 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0xb2b94674 __crc32c_le +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2c8f457 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0xb2d34a6e xfrm_user_policy +EXPORT_SYMBOL vmlinux 0xb2d48a2e queue_work_on +EXPORT_SYMBOL vmlinux 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL vmlinux 0xb2e6980a snd_timer_notify +EXPORT_SYMBOL vmlinux 0xb2eb88d4 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0xb3038477 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0xb30cfab5 mount_pseudo +EXPORT_SYMBOL vmlinux 0xb3115552 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0xb31526ee sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0xb343e24f tc_classify_compat +EXPORT_SYMBOL vmlinux 0xb34b044e omap_dss_get_next_device +EXPORT_SYMBOL vmlinux 0xb3582970 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0xb3659051 read_dev_sector +EXPORT_SYMBOL vmlinux 0xb3660e95 scsi_allocate_command +EXPORT_SYMBOL vmlinux 0xb367c984 mxc_set_irq_fiq +EXPORT_SYMBOL vmlinux 0xb368b2bb inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0xb3726e1f neigh_compat_output +EXPORT_SYMBOL vmlinux 0xb37c4994 snd_timer_resolution +EXPORT_SYMBOL vmlinux 0xb3926c88 snd_card_file_remove +EXPORT_SYMBOL vmlinux 0xb39be933 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0xb3a17c04 neigh_app_ns +EXPORT_SYMBOL vmlinux 0xb3b5cd46 phy_device_create +EXPORT_SYMBOL vmlinux 0xb3ee9db3 skb_queue_tail +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb423fdbb blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0xb444227a new_inode +EXPORT_SYMBOL vmlinux 0xb44dc3cb dst_release +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb4a473e0 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL vmlinux 0xb4c8f38a omap_dma_chain_status +EXPORT_SYMBOL vmlinux 0xb4cfb40d netlink_kernel_release +EXPORT_SYMBOL vmlinux 0xb4d0ff59 md_flush_request +EXPORT_SYMBOL vmlinux 0xb4d3d934 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0xb4de1bf3 netdev_features_change +EXPORT_SYMBOL vmlinux 0xb4f41033 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0xb5198b77 _raw_read_lock +EXPORT_SYMBOL vmlinux 0xb54533f7 usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb586cead dentry_open +EXPORT_SYMBOL vmlinux 0xb58a730a netdev_warn +EXPORT_SYMBOL vmlinux 0xb59cc218 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0xb59dac18 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5b76d38 unlock_buffer +EXPORT_SYMBOL vmlinux 0xb5c00014 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5ca8977 pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0xb5cd1691 vexpress_config_complete +EXPORT_SYMBOL vmlinux 0xb5d9454c printk_emit +EXPORT_SYMBOL vmlinux 0xb5ed1971 pci_alloc_dev +EXPORT_SYMBOL vmlinux 0xb61af2e4 dev_disable_lro +EXPORT_SYMBOL vmlinux 0xb6394d4b param_set_bint +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb6822a33 radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xb68675dc nf_ct_attach +EXPORT_SYMBOL vmlinux 0xb6896671 crc_t10dif +EXPORT_SYMBOL vmlinux 0xb68d502d skb_try_coalesce +EXPORT_SYMBOL vmlinux 0xb68da603 pci_set_mwi +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb69beeee __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0xb6a0ac49 deactivate_super +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6aed5ae __skb_get_hash +EXPORT_SYMBOL vmlinux 0xb6b46a7c param_ops_int +EXPORT_SYMBOL vmlinux 0xb6c09bcc jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0xb6c5a973 scsi_show_result +EXPORT_SYMBOL vmlinux 0xb6c77b5d scsi_reset_provider +EXPORT_SYMBOL vmlinux 0xb6e558f2 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0xb70e5d17 snd_device_register +EXPORT_SYMBOL vmlinux 0xb724f37e tty_name +EXPORT_SYMBOL vmlinux 0xb73188ad try_module_get +EXPORT_SYMBOL vmlinux 0xb740866e pci_disable_msix +EXPORT_SYMBOL vmlinux 0xb74b616b gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0xb7551ac2 from_kprojid +EXPORT_SYMBOL vmlinux 0xb7712c44 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb794f6f3 skb_orphan_partial +EXPORT_SYMBOL vmlinux 0xb7b61546 crc32_be +EXPORT_SYMBOL vmlinux 0xb7ba76c7 __aeabi_unwind_cpp_pr2 +EXPORT_SYMBOL vmlinux 0xb7c6db70 sysctl_max_skb_frags +EXPORT_SYMBOL vmlinux 0xb7e2bbaa netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0xb7f9724e input_grab_device +EXPORT_SYMBOL vmlinux 0xb7fc18c8 sock_create_lite +EXPORT_SYMBOL vmlinux 0xb7fc70cd set_page_dirty +EXPORT_SYMBOL vmlinux 0xb81960ca snprintf +EXPORT_SYMBOL vmlinux 0xb81f286d ip6_frag_match +EXPORT_SYMBOL vmlinux 0xb820c9b1 skb_make_writable +EXPORT_SYMBOL vmlinux 0xb825f3a6 scsi_get_command +EXPORT_SYMBOL vmlinux 0xb8280430 ipmi_get_smi_info +EXPORT_SYMBOL vmlinux 0xb835b3e4 radix_tree_prev_hole +EXPORT_SYMBOL vmlinux 0xb84224e2 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0xb85c48af seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb89075ed dev_uc_init +EXPORT_SYMBOL vmlinux 0xb89390f1 dev_crit +EXPORT_SYMBOL vmlinux 0xb8aa2342 __check_region +EXPORT_SYMBOL vmlinux 0xb8d73e97 param_set_uint +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb8f3f2d6 net_dma_find_channel +EXPORT_SYMBOL vmlinux 0xb929f667 max8925_reg_write +EXPORT_SYMBOL vmlinux 0xb951539a bdi_unregister +EXPORT_SYMBOL vmlinux 0xb95ad26f sock_no_shutdown +EXPORT_SYMBOL vmlinux 0xb95f98d6 _memset_io +EXPORT_SYMBOL vmlinux 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL vmlinux 0xb96966f5 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0xb98a0185 rtc_tm_to_time +EXPORT_SYMBOL vmlinux 0xb9a46ccf generic_file_llseek +EXPORT_SYMBOL vmlinux 0xb9a8f03b omap_stop_dma +EXPORT_SYMBOL vmlinux 0xb9acd3d9 __put_user_2 +EXPORT_SYMBOL vmlinux 0xb9b0e383 blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0xb9d4716e abx500_register_ops +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9ef2835 secpath_dup +EXPORT_SYMBOL vmlinux 0xba053ac3 mark_info_dirty +EXPORT_SYMBOL vmlinux 0xba07cb33 dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0xba1fc062 inet6_bind +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba4f23aa netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0xba7d870a __mxc_cpu_type +EXPORT_SYMBOL vmlinux 0xba9adfb3 datagram_poll +EXPORT_SYMBOL vmlinux 0xba9d0f5e kernel_listen +EXPORT_SYMBOL vmlinux 0xbaa0d669 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0xbabc0450 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0xbabffa4d dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0xbacc174e seq_bitmap +EXPORT_SYMBOL vmlinux 0xbacf094f vfs_writev +EXPORT_SYMBOL vmlinux 0xbae77ba7 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0xbaf566d6 ppp_channel_index +EXPORT_SYMBOL vmlinux 0xbafeee36 dispc_runtime_get +EXPORT_SYMBOL vmlinux 0xbb0abb7c dquot_initialize +EXPORT_SYMBOL vmlinux 0xbb0c545c serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0xbb189cad disallow_signal +EXPORT_SYMBOL vmlinux 0xbb196d3e dst_alloc +EXPORT_SYMBOL vmlinux 0xbb1ce4ac inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0xbb1d8a60 tc_classify +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb6fda26 dev_set_mtu +EXPORT_SYMBOL vmlinux 0xbb713e6d sk_filter_release_rcu +EXPORT_SYMBOL vmlinux 0xbb7152ab pci_restore_state +EXPORT_SYMBOL vmlinux 0xbb72d4fe __put_user_1 +EXPORT_SYMBOL vmlinux 0xbb81b89b try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xbb87c98c vmap +EXPORT_SYMBOL vmlinux 0xbb906c9f pci_disable_msi +EXPORT_SYMBOL vmlinux 0xbb9122da vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbbac6499 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0xbbb8fb1a ab3100_event_register +EXPORT_SYMBOL vmlinux 0xbbc76432 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0xbbdebe2a fb_firmware_edid +EXPORT_SYMBOL vmlinux 0xbc10dd97 __put_user_4 +EXPORT_SYMBOL vmlinux 0xbc5a970b vfs_path_lookup +EXPORT_SYMBOL vmlinux 0xbc5c66e0 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0xbc6f4334 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0xbc869410 ether_setup +EXPORT_SYMBOL vmlinux 0xbc88577f da903x_query_status +EXPORT_SYMBOL vmlinux 0xbc906770 phy_attach_direct +EXPORT_SYMBOL vmlinux 0xbcaf737c fail_migrate_page +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcdcdcfa textsearch_unregister +EXPORT_SYMBOL vmlinux 0xbcdedba7 of_get_mac_address +EXPORT_SYMBOL vmlinux 0xbce8a632 tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0xbd1eff84 remove_proc_entry +EXPORT_SYMBOL vmlinux 0xbd21f69d tty_unregister_device +EXPORT_SYMBOL vmlinux 0xbd2dbaea console_stop +EXPORT_SYMBOL vmlinux 0xbd419dd0 account_page_dirtied +EXPORT_SYMBOL vmlinux 0xbd43519f phy_driver_register +EXPORT_SYMBOL vmlinux 0xbd54b96b start_tty +EXPORT_SYMBOL vmlinux 0xbd96c85a vexpress_config_write +EXPORT_SYMBOL vmlinux 0xbda7340e nf_register_hooks +EXPORT_SYMBOL vmlinux 0xbda87607 __elv_add_request +EXPORT_SYMBOL vmlinux 0xbdac1eb7 lockref_get +EXPORT_SYMBOL vmlinux 0xbdba9828 hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xbdc3d999 mem_map +EXPORT_SYMBOL vmlinux 0xbdedb6b2 irq_stat +EXPORT_SYMBOL vmlinux 0xbdefc7a6 amba_driver_unregister +EXPORT_SYMBOL vmlinux 0xbdf2580d __raw_readsl +EXPORT_SYMBOL vmlinux 0xbe0c19b3 fget_light +EXPORT_SYMBOL vmlinux 0xbe0e5118 nla_memcmp +EXPORT_SYMBOL vmlinux 0xbe2c0274 add_timer +EXPORT_SYMBOL vmlinux 0xbe3156ee kmap_atomic +EXPORT_SYMBOL vmlinux 0xbe5b3132 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0xbe63ee40 request_resource +EXPORT_SYMBOL vmlinux 0xbe6980c6 kthread_stop +EXPORT_SYMBOL vmlinux 0xbe8860a8 dispc_mgr_go_busy +EXPORT_SYMBOL vmlinux 0xbe89727e lro_flush_pkt +EXPORT_SYMBOL vmlinux 0xbe8fb90c dispc_mgr_get_framedone_irq +EXPORT_SYMBOL vmlinux 0xbea8febe skb_copy_datagram_from_iovec +EXPORT_SYMBOL vmlinux 0xbeb016ef sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0xbebef5ba sk_stop_timer +EXPORT_SYMBOL vmlinux 0xbec25473 of_parse_phandle +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf103ada i2c_add_adapter +EXPORT_SYMBOL vmlinux 0xbf1a51b3 devm_free_irq +EXPORT_SYMBOL vmlinux 0xbf1e8c50 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0xbf3d4696 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0xbf40f9e6 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0xbf75ea6c tegra114_clock_tune_cpu_trimmers_low +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8788b0 serio_interrupt +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf947ffc inode_permission +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfadc74e fasync_helper +EXPORT_SYMBOL vmlinux 0xbfbe264e bio_uncopy_user +EXPORT_SYMBOL vmlinux 0xbfc05b3a dev_set_mac_address +EXPORT_SYMBOL vmlinux 0xbfc2808e posix_lock_file +EXPORT_SYMBOL vmlinux 0xbfcbc0d2 stmp_reset_block +EXPORT_SYMBOL vmlinux 0xbfdc04a7 dquot_quota_on +EXPORT_SYMBOL vmlinux 0xbfe50556 seq_open +EXPORT_SYMBOL vmlinux 0xbfea1fb8 snd_ctl_notify +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xc004f83f gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0xc0056be5 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0xc00e0c8b jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0xc0126422 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0xc0256846 i2c_del_driver +EXPORT_SYMBOL vmlinux 0xc02cf69b clkdev_drop +EXPORT_SYMBOL vmlinux 0xc053268e nf_reinject +EXPORT_SYMBOL vmlinux 0xc057a5d2 proc_symlink +EXPORT_SYMBOL vmlinux 0xc068440e __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc07dcb78 of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc0850f0f register_key_type +EXPORT_SYMBOL vmlinux 0xc0a6a8c5 omap_set_dma_dest_burst_mode +EXPORT_SYMBOL vmlinux 0xc0a98385 profile_pc +EXPORT_SYMBOL vmlinux 0xc0b0e105 inet_register_protosw +EXPORT_SYMBOL vmlinux 0xc0b12d61 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0xc0cf95f9 omap_vrfb_request_ctx +EXPORT_SYMBOL vmlinux 0xc0d7457c snd_power_wait +EXPORT_SYMBOL vmlinux 0xc0defd9c dev_get_drvdata +EXPORT_SYMBOL vmlinux 0xc109af9a xfrm_register_type +EXPORT_SYMBOL vmlinux 0xc10ae1ee generic_writepages +EXPORT_SYMBOL vmlinux 0xc11d2a11 mmc_request_done +EXPORT_SYMBOL vmlinux 0xc12ec3a6 dns_query +EXPORT_SYMBOL vmlinux 0xc13ad0a0 pcie_set_mps +EXPORT_SYMBOL vmlinux 0xc15fdf19 free_buffer_head +EXPORT_SYMBOL vmlinux 0xc166e736 vfs_write +EXPORT_SYMBOL vmlinux 0xc17fb98b dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0xc19f16a2 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0xc1a51d69 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0xc1a5cb5f i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0xc1b82d22 register_shrinker +EXPORT_SYMBOL vmlinux 0xc1b9a82d blk_peek_request +EXPORT_SYMBOL vmlinux 0xc1c2dd09 __hw_addr_flush +EXPORT_SYMBOL vmlinux 0xc1d3c64e add_disk +EXPORT_SYMBOL vmlinux 0xc1f9ef53 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0xc2081a83 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0xc2165d85 __arm_iounmap +EXPORT_SYMBOL vmlinux 0xc22ed41c sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0xc233a943 clk_add_alias +EXPORT_SYMBOL vmlinux 0xc23bb948 __vlan_find_dev_deep +EXPORT_SYMBOL vmlinux 0xc256e762 __bitmap_equal +EXPORT_SYMBOL vmlinux 0xc25e245a d_path +EXPORT_SYMBOL vmlinux 0xc2662e6b ata_print_version +EXPORT_SYMBOL vmlinux 0xc2a6f171 security_inode_init_security +EXPORT_SYMBOL vmlinux 0xc2cad3e6 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xc2d711e1 krealloc +EXPORT_SYMBOL vmlinux 0xc2e0d315 kfree_skb_list +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2ea94aa inode_init_once +EXPORT_SYMBOL vmlinux 0xc2f93211 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc3141f85 mmc_get_card +EXPORT_SYMBOL vmlinux 0xc3462226 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0xc359fb65 abort +EXPORT_SYMBOL vmlinux 0xc35f930a jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0xc37b9c98 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0xc3b68b51 tty_port_init +EXPORT_SYMBOL vmlinux 0xc3bff48c sk_ns_capable +EXPORT_SYMBOL vmlinux 0xc3ca85b2 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0xc3d1fa4d edma_alloc_cont_slots +EXPORT_SYMBOL vmlinux 0xc3d2dad6 ip_options_compile +EXPORT_SYMBOL vmlinux 0xc3eabb6b tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0xc40d140e neigh_resolve_output +EXPORT_SYMBOL vmlinux 0xc41f0516 node_states +EXPORT_SYMBOL vmlinux 0xc4215bf9 inet6_del_offload +EXPORT_SYMBOL vmlinux 0xc47b1f25 tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc4cd99bc posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0xc4d69688 cpu_tlb +EXPORT_SYMBOL vmlinux 0xc4ddec8f fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0xc4e70e36 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0xc52da066 omap_set_dma_dest_params +EXPORT_SYMBOL vmlinux 0xc534663b thaw_super +EXPORT_SYMBOL vmlinux 0xc5368838 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0xc5402e5f skb_split +EXPORT_SYMBOL vmlinux 0xc55bb877 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xc5718627 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0xc5720678 cdev_del +EXPORT_SYMBOL vmlinux 0xc5720693 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0xc583196d tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0xc588c816 devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0xc589e044 param_set_long +EXPORT_SYMBOL vmlinux 0xc5aa0303 eth_mac_addr +EXPORT_SYMBOL vmlinux 0xc5b81203 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0xc5c5b162 default_llseek +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc62adcb3 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc665d6d7 of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0xc67d4b0d pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0xc693e5bd dquot_commit_info +EXPORT_SYMBOL vmlinux 0xc698475d grab_cache_page_nowait +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6df6d65 snd_card_free +EXPORT_SYMBOL vmlinux 0xc70079e9 tcp_disconnect +EXPORT_SYMBOL vmlinux 0xc71acfdd neigh_seq_stop +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc725555b of_get_min_tck +EXPORT_SYMBOL vmlinux 0xc72b32e3 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xc73050f0 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0xc761aa0f i2c_verify_client +EXPORT_SYMBOL vmlinux 0xc767c3be security_task_getsecid +EXPORT_SYMBOL vmlinux 0xc77d5ae8 phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7b3a58d dma_async_device_register +EXPORT_SYMBOL vmlinux 0xc7bcbc8d add_wait_queue +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc7f03e5d generic_file_buffered_write +EXPORT_SYMBOL vmlinux 0xc80b98ea max8925_reg_read +EXPORT_SYMBOL vmlinux 0xc8194eea tty_schedule_flip +EXPORT_SYMBOL vmlinux 0xc8276a79 nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xc828ff78 end_page_writeback +EXPORT_SYMBOL vmlinux 0xc82a346f poll_initwait +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 0xc85481d1 blk_requeue_request +EXPORT_SYMBOL vmlinux 0xc861ec9d scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc875b436 bio_init +EXPORT_SYMBOL vmlinux 0xc8857e20 tty_hangup +EXPORT_SYMBOL vmlinux 0xc89862b4 snd_cards +EXPORT_SYMBOL vmlinux 0xc89d8909 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0xc8ab7815 dev_set_group +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8bda147 udp6_csum_init +EXPORT_SYMBOL vmlinux 0xc8c52e91 try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xc90b34e1 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0xc929dfd7 lro_receive_skb +EXPORT_SYMBOL vmlinux 0xc93a2f4d edma_free_cont_slots +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc964a262 vga_put +EXPORT_SYMBOL vmlinux 0xc9788b8f scsi_prep_return +EXPORT_SYMBOL vmlinux 0xc996d097 del_timer +EXPORT_SYMBOL vmlinux 0xc99c292a ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9b31ca1 register_netdev +EXPORT_SYMBOL vmlinux 0xc9b3b7a1 fb_set_suspend +EXPORT_SYMBOL vmlinux 0xc9b8c308 __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0xc9bbb713 vexpress_config_bridge_register +EXPORT_SYMBOL vmlinux 0xc9db27ba lock_sock_nested +EXPORT_SYMBOL vmlinux 0xc9f9d0bb tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0xca43634b devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xca5dbc50 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xca5f7323 elv_register_queue +EXPORT_SYMBOL vmlinux 0xca6ce8ba omap_dss_ntsc_timings +EXPORT_SYMBOL vmlinux 0xca765572 netif_napi_del +EXPORT_SYMBOL vmlinux 0xca884a5e clear_bdi_congested +EXPORT_SYMBOL vmlinux 0xca8bcc41 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xca94b092 blk_put_queue +EXPORT_SYMBOL vmlinux 0xcabd8031 dma_mark_declared_memory_occupied +EXPORT_SYMBOL vmlinux 0xcad9c796 tty_port_close_start +EXPORT_SYMBOL vmlinux 0xcaddbd7e edma_set_dest_index +EXPORT_SYMBOL vmlinux 0xcae40b95 follow_down +EXPORT_SYMBOL vmlinux 0xcaf8f3fc xfrm_register_mode +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb0c5d50 param_get_uint +EXPORT_SYMBOL vmlinux 0xcb466063 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xcb5b0166 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0xcb6c0c6a bio_copy_kern +EXPORT_SYMBOL vmlinux 0xcb6c7ca9 __destroy_inode +EXPORT_SYMBOL vmlinux 0xcb7499cd alloc_disk_node +EXPORT_SYMBOL vmlinux 0xcb74b9a0 blkdev_get +EXPORT_SYMBOL vmlinux 0xcb86ad31 snd_info_create_card_entry +EXPORT_SYMBOL vmlinux 0xcb889f11 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc75589 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbd0f249 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0xcbdd1c13 genlmsg_put +EXPORT_SYMBOL vmlinux 0xcc1193d9 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0xcc1217dd nf_log_packet +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc2fc55d mem_cgroup_subsys +EXPORT_SYMBOL vmlinux 0xcc37f55c blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xcc402913 pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0xcc4b84da of_find_node_by_type +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc56cac3 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0xcc5a957f blk_mq_free_queue +EXPORT_SYMBOL vmlinux 0xcc7fa952 local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0xcc8cd08d simple_transaction_release +EXPORT_SYMBOL vmlinux 0xcca50975 pci_dev_driver +EXPORT_SYMBOL vmlinux 0xccaf2f30 xfrm_input +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccce80fd sk_dst_check +EXPORT_SYMBOL vmlinux 0xccd35d00 simple_pin_fs +EXPORT_SYMBOL vmlinux 0xccdda7e7 block_write_full_page +EXPORT_SYMBOL vmlinux 0xccf670a1 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0xcd2279dd snd_ctl_rename_id +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd27d68d i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0xcd30b95a tmio_core_mmc_clk_div +EXPORT_SYMBOL vmlinux 0xcd587207 eth_type_trans +EXPORT_SYMBOL vmlinux 0xcd616711 md_unregister_thread +EXPORT_SYMBOL vmlinux 0xcd63c845 __aeabi_lasr +EXPORT_SYMBOL vmlinux 0xcd87a784 pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0xcda9ab85 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0xcdc200a0 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdc7e2b6 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xcde172ac radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0xcde426a6 dquot_scan_active +EXPORT_SYMBOL vmlinux 0xce1c6b39 free_user_ns +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce39b7ca omap_dss_find_output +EXPORT_SYMBOL vmlinux 0xce3c1d12 register_filesystem +EXPORT_SYMBOL vmlinux 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL vmlinux 0xce44761c phy_connect_direct +EXPORT_SYMBOL vmlinux 0xce47c86f snd_pcm_lib_writev +EXPORT_SYMBOL vmlinux 0xce4bfdfe get_fs_type +EXPORT_SYMBOL vmlinux 0xce4dff52 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce9c677b pci_get_slot +EXPORT_SYMBOL vmlinux 0xce9ed8f6 tcp_read_sock +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceb88d62 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0xcebabaf7 arp_xmit +EXPORT_SYMBOL vmlinux 0xcecbccb0 scsi_host_get +EXPORT_SYMBOL vmlinux 0xcecdc7d6 dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0xced41dd6 snd_pcm_link_rwlock +EXPORT_SYMBOL vmlinux 0xced63af7 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0xcedaa804 simple_dentry_operations +EXPORT_SYMBOL vmlinux 0xceed7f85 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcef71568 snd_pcm_lib_read +EXPORT_SYMBOL vmlinux 0xcefa7a5a snd_pci_quirk_lookup +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf03e019 nand_calculate_ecc +EXPORT_SYMBOL vmlinux 0xcf1af57c input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0xcf1c4155 tegra_powergate_sequence_power_up +EXPORT_SYMBOL vmlinux 0xcf48d21a inet_getname +EXPORT_SYMBOL vmlinux 0xcf6e5114 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0xcf88625f mempool_create_node +EXPORT_SYMBOL vmlinux 0xcf913d2d sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0xcfad8027 generic_pipe_buf_unmap +EXPORT_SYMBOL vmlinux 0xcfbfb45a pci_target_state +EXPORT_SYMBOL vmlinux 0xcfc3b1c7 pci_pme_capable +EXPORT_SYMBOL vmlinux 0xcff3de95 scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0xcff6b676 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0xd00cb81f unload_nls +EXPORT_SYMBOL vmlinux 0xd0131c9f __napi_schedule +EXPORT_SYMBOL vmlinux 0xd0181f4f __bitmap_xor +EXPORT_SYMBOL vmlinux 0xd01f3574 do_SAK +EXPORT_SYMBOL vmlinux 0xd0265de6 ip_fragment +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd075f33a kmem_cache_free +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0b1bb9e skb_checksum +EXPORT_SYMBOL vmlinux 0xd0b37c4d snd_pcm_new_internal +EXPORT_SYMBOL vmlinux 0xd0c0b618 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0xd0c17aa0 genl_notify +EXPORT_SYMBOL vmlinux 0xd0ca63f9 of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0xd0cdff06 key_task_permission +EXPORT_SYMBOL vmlinux 0xd0d204ec aio_complete +EXPORT_SYMBOL vmlinux 0xd0d42c42 mod_timer_pending +EXPORT_SYMBOL vmlinux 0xd0db7305 update_time +EXPORT_SYMBOL vmlinux 0xd0e43207 usb_nop_xceiv_register +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 0xd1057c4f cdrom_ioctl +EXPORT_SYMBOL vmlinux 0xd1067ba7 dispc_ovl_enabled +EXPORT_SYMBOL vmlinux 0xd1157735 release_and_free_resource +EXPORT_SYMBOL vmlinux 0xd11c0dc1 __kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xd139599f neigh_parms_release +EXPORT_SYMBOL vmlinux 0xd13ca7e6 netif_device_attach +EXPORT_SYMBOL vmlinux 0xd1407d5b nf_log_unset +EXPORT_SYMBOL vmlinux 0xd169c649 pci_scan_bus +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd196c9be kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xd19cf741 input_close_device +EXPORT_SYMBOL vmlinux 0xd1a9d6ad pagecache_write_end +EXPORT_SYMBOL vmlinux 0xd1aeac8a blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0xd1b07520 blk_get_request +EXPORT_SYMBOL vmlinux 0xd1c9e272 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0xd1cac80c snd_card_create +EXPORT_SYMBOL vmlinux 0xd1ed82ba release_pages +EXPORT_SYMBOL vmlinux 0xd202dff6 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd22aabe0 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0xd2394313 ndo_dflt_fdb_del +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 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd2a941d4 sg_init_table +EXPORT_SYMBOL vmlinux 0xd2af138b reservation_ww_class +EXPORT_SYMBOL vmlinux 0xd2afc28b jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0xd2c6c601 make_kprojid +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2e7e7c7 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0xd2e894d2 sock_no_accept +EXPORT_SYMBOL vmlinux 0xd2eb5fb9 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0xd2facbb9 send_sig_info +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd327078f __frontswap_load +EXPORT_SYMBOL vmlinux 0xd331cda4 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xd333de2f pci_claim_resource +EXPORT_SYMBOL vmlinux 0xd3505f4d single_release +EXPORT_SYMBOL vmlinux 0xd350c9cb flush_signals +EXPORT_SYMBOL vmlinux 0xd3c3c80a pcie_port_service_register +EXPORT_SYMBOL vmlinux 0xd3dbfbc4 _find_first_zero_bit_le +EXPORT_SYMBOL vmlinux 0xd3dcab0b flex_array_alloc +EXPORT_SYMBOL vmlinux 0xd3de6c81 d_find_any_alias +EXPORT_SYMBOL vmlinux 0xd3e515d3 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0xd3e6f60d cpu_possible_mask +EXPORT_SYMBOL vmlinux 0xd3ed1d1a pci_pme_active +EXPORT_SYMBOL vmlinux 0xd3fdd176 pm860x_page_set_bits +EXPORT_SYMBOL vmlinux 0xd404b1f0 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0xd417f53a phy_start_interrupts +EXPORT_SYMBOL vmlinux 0xd418e1c0 adjust_resource +EXPORT_SYMBOL vmlinux 0xd425af3e phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0xd4271dbb tcf_em_register +EXPORT_SYMBOL vmlinux 0xd45ff351 generic_fillattr +EXPORT_SYMBOL vmlinux 0xd4669fad complete +EXPORT_SYMBOL vmlinux 0xd4786100 scsi_print_sense +EXPORT_SYMBOL vmlinux 0xd4793385 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0xd494e574 generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0xd4bd00ff mmc_alloc_host +EXPORT_SYMBOL vmlinux 0xd4da1738 backlight_device_register +EXPORT_SYMBOL vmlinux 0xd4dc3518 scsi_remove_device +EXPORT_SYMBOL vmlinux 0xd4e3d5a5 snd_pcm_lib_write +EXPORT_SYMBOL vmlinux 0xd4eaef7e mntput +EXPORT_SYMBOL vmlinux 0xd4ec4999 scsi_setup_fs_cmnd +EXPORT_SYMBOL vmlinux 0xd4f59108 dma_alloc_from_coherent +EXPORT_SYMBOL vmlinux 0xd5291692 audit_log_task_info +EXPORT_SYMBOL vmlinux 0xd5536c00 sock_no_poll +EXPORT_SYMBOL vmlinux 0xd562428f tty_vhangup +EXPORT_SYMBOL vmlinux 0xd56b1c2a __module_put_and_exit +EXPORT_SYMBOL vmlinux 0xd56e9485 omap_set_dma_dest_index +EXPORT_SYMBOL vmlinux 0xd57ee471 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0xd587c68a bio_copy_user +EXPORT_SYMBOL vmlinux 0xd5adc9bb iput +EXPORT_SYMBOL vmlinux 0xd5b2fbec dev_open +EXPORT_SYMBOL vmlinux 0xd5c5ff75 inet_frags_init_net +EXPORT_SYMBOL vmlinux 0xd5f21671 blk_start_queue +EXPORT_SYMBOL vmlinux 0xd5f2172f del_timer_sync +EXPORT_SYMBOL vmlinux 0xd6057efe dev_get_by_flags_rcu +EXPORT_SYMBOL vmlinux 0xd61347c6 register_sysctl +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd616aa06 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0xd62077a8 make_kuid +EXPORT_SYMBOL vmlinux 0xd627480b strncat +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd64361e5 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0xd6451b5b md_write_start +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd6738da1 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0xd67f9629 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd6942669 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0xd6dac844 ipmi_smi_add_proc_entry +EXPORT_SYMBOL vmlinux 0xd6e7d3ce blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0xd6ebb8fd netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0xd6ec6d59 tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6fbb902 security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0xd702ee4e inet_dgram_ops +EXPORT_SYMBOL vmlinux 0xd703646d ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0xd7056654 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xd73299b5 get_tz_trend +EXPORT_SYMBOL vmlinux 0xd74289f9 __percpu_counter_add +EXPORT_SYMBOL vmlinux 0xd743409e fb_blank +EXPORT_SYMBOL vmlinux 0xd74b6522 cdev_init +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd75db372 devm_gpio_request +EXPORT_SYMBOL vmlinux 0xd75f6231 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0xd766173e stop_tty +EXPORT_SYMBOL vmlinux 0xd76e8619 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0xd77485b3 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0xd77a5aa5 __bitmap_and +EXPORT_SYMBOL vmlinux 0xd78025ae gen_pool_create +EXPORT_SYMBOL vmlinux 0xd79b5a02 allow_signal +EXPORT_SYMBOL vmlinux 0xd7ae2361 vexpress_config_bridge_unregister +EXPORT_SYMBOL vmlinux 0xd7af7117 pci_find_capability +EXPORT_SYMBOL vmlinux 0xd7b4599b __idr_get_new_above +EXPORT_SYMBOL vmlinux 0xd7b73743 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0xd7bcf8c0 cdev_alloc +EXPORT_SYMBOL vmlinux 0xd7c1ca67 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd7fdf92f neigh_direct_output +EXPORT_SYMBOL vmlinux 0xd8088573 generic_file_open +EXPORT_SYMBOL vmlinux 0xd81affcc phy_init_eee +EXPORT_SYMBOL vmlinux 0xd824a8e1 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0xd82fc8ad ilookup +EXPORT_SYMBOL vmlinux 0xd85cd67e __wake_up +EXPORT_SYMBOL vmlinux 0xd86f91fb udp_sendmsg +EXPORT_SYMBOL vmlinux 0xd8789555 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0xd8be1b0e end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0xd8c518e3 snd_pcm_lib_readv +EXPORT_SYMBOL vmlinux 0xd8c72cf0 ifla_policy +EXPORT_SYMBOL vmlinux 0xd8c8df75 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8e77a88 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0xd8e7adf4 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0xd8ff7f6d cap_mmap_file +EXPORT_SYMBOL vmlinux 0xd91243c4 devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0xd9192c26 noop_fsync +EXPORT_SYMBOL vmlinux 0xd92afabe bitmap_clear +EXPORT_SYMBOL vmlinux 0xd94876bd dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0xd952040a iget5_locked +EXPORT_SYMBOL vmlinux 0xd955b5b9 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0xd955d2b7 omap_set_dma_dest_data_pack +EXPORT_SYMBOL vmlinux 0xd95b1326 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0xd95b8e87 devm_iounmap +EXPORT_SYMBOL vmlinux 0xd96a32d8 pci_bus_type +EXPORT_SYMBOL vmlinux 0xd96f4522 rtnl_create_link +EXPORT_SYMBOL vmlinux 0xd97edd47 neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd9a1dd2a generic_shutdown_super +EXPORT_SYMBOL vmlinux 0xd9a40812 blk_mq_alloc_reserved_request +EXPORT_SYMBOL vmlinux 0xd9a9bb30 getname +EXPORT_SYMBOL vmlinux 0xd9add739 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0xd9b27113 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0xd9bece84 tc6393xb_lcd_set_power +EXPORT_SYMBOL vmlinux 0xd9ce8f0c strnlen +EXPORT_SYMBOL vmlinux 0xd9e96ae0 iov_iter_copy_from_user +EXPORT_SYMBOL vmlinux 0xd9f0087c bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0xda0809c1 fb_show_logo +EXPORT_SYMBOL vmlinux 0xda1273e7 bitmap_end_sync +EXPORT_SYMBOL vmlinux 0xda2478d0 param_ops_short +EXPORT_SYMBOL vmlinux 0xda252af9 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda4413c0 phy_start +EXPORT_SYMBOL vmlinux 0xda4e12c6 dev_trans_start +EXPORT_SYMBOL vmlinux 0xda7288ee mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0xda7387ed inode_set_bytes +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda83b305 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda9b228f pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0xdaa16b82 of_clk_get +EXPORT_SYMBOL vmlinux 0xdaa57ec3 totalhigh_pages +EXPORT_SYMBOL vmlinux 0xdaafc807 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0xdadc4c4d ipmi_smi_watcher_register +EXPORT_SYMBOL vmlinux 0xdaeaab26 seq_read +EXPORT_SYMBOL vmlinux 0xdafd0e95 cdrom_open +EXPORT_SYMBOL vmlinux 0xdb0c65d4 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0xdb0fd0f8 mmc_hw_reset_check +EXPORT_SYMBOL vmlinux 0xdb2af358 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xdb2d1d32 dev_mc_del +EXPORT_SYMBOL vmlinux 0xdb3d7097 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0xdb4292e4 omap_set_dma_params +EXPORT_SYMBOL vmlinux 0xdb4f6d56 sock_kmalloc +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb6d0698 pid_task +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb8fe3ab mmc_start_bkops +EXPORT_SYMBOL vmlinux 0xdb928e15 snd_add_device_sysfs_file +EXPORT_SYMBOL vmlinux 0xdb93b838 dispc_free_irq +EXPORT_SYMBOL vmlinux 0xdb95fa75 register_gifconf +EXPORT_SYMBOL vmlinux 0xdba38ceb alloc_anon_inode +EXPORT_SYMBOL vmlinux 0xdbcd416e sysctl_ip_nonlocal_bind +EXPORT_SYMBOL vmlinux 0xdbd84d74 kobject_put +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc0ab456 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc2c71a0 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc41e82d seq_bitmap_list +EXPORT_SYMBOL vmlinux 0xdc583c24 nla_reserve +EXPORT_SYMBOL vmlinux 0xdc60265b tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0xdc6da355 dump_align +EXPORT_SYMBOL vmlinux 0xdc74b64d invalidate_bdev +EXPORT_SYMBOL vmlinux 0xdc7fd85a tcp_ioctl +EXPORT_SYMBOL vmlinux 0xdc942659 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xdcae92d1 snd_ctl_remove +EXPORT_SYMBOL vmlinux 0xdccc453a udp_lib_unhash +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd27fa87 memchr +EXPORT_SYMBOL vmlinux 0xdd3916ac _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xdd4867cd dev_uc_add +EXPORT_SYMBOL vmlinux 0xdd4ff8ac dev_warn +EXPORT_SYMBOL vmlinux 0xdd754369 d_splice_alias +EXPORT_SYMBOL vmlinux 0xddb17ec5 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0xddb91090 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0xddcb158c __scsi_add_device +EXPORT_SYMBOL vmlinux 0xddff73d9 snd_unregister_device +EXPORT_SYMBOL vmlinux 0xde0d11de kobject_add +EXPORT_SYMBOL vmlinux 0xde10eb10 param_set_invbool +EXPORT_SYMBOL vmlinux 0xde15c042 omap_set_dma_src_index +EXPORT_SYMBOL vmlinux 0xde25119d kset_register +EXPORT_SYMBOL vmlinux 0xde56d10e scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0xde680e8f jbd2_journal_load +EXPORT_SYMBOL vmlinux 0xde692d94 omap_get_dma_chain_src_pos +EXPORT_SYMBOL vmlinux 0xde8c763d cpu_v7_set_pte_ext +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde95dbe6 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xdea8f7eb security_path_unlink +EXPORT_SYMBOL vmlinux 0xded30645 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0xded84ac7 give_up_console +EXPORT_SYMBOL vmlinux 0xdee06913 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0xdee2f361 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0xdee72df3 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0xdf0616c1 of_dev_put +EXPORT_SYMBOL vmlinux 0xdf11759e skb_copy +EXPORT_SYMBOL vmlinux 0xdf17a4d6 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0xdf2abf75 fb_pan_display +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf2c7215 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0xdf401846 idr_remove +EXPORT_SYMBOL vmlinux 0xdf48a0eb flex_array_put +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf5841e3 blk_free_tags +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf860092 snd_register_device_for_dev +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdfb01a80 cpu_v7_dcache_clean_area +EXPORT_SYMBOL vmlinux 0xdfb51104 inet_select_addr +EXPORT_SYMBOL vmlinux 0xdfbc3f08 snd_ctl_find_numid +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfd91ce9 omap_type +EXPORT_SYMBOL vmlinux 0xdfe8929c mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xdff587db inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0xe0025075 scsi_execute +EXPORT_SYMBOL vmlinux 0xe0060ad6 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0xe00c6649 set_create_files_as +EXPORT_SYMBOL vmlinux 0xe02ab162 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0xe033395c inet6_add_offload +EXPORT_SYMBOL vmlinux 0xe03d788f dm_unregister_target +EXPORT_SYMBOL vmlinux 0xe0438fd5 skb_checksum_help +EXPORT_SYMBOL vmlinux 0xe0490768 mutex_trylock +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe05c1989 vc_cons +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe06c5f72 get_thermal_instance +EXPORT_SYMBOL vmlinux 0xe06dc296 serio_rescan +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe076e214 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0xe076fec0 seq_putc +EXPORT_SYMBOL vmlinux 0xe094ef39 sg_next +EXPORT_SYMBOL vmlinux 0xe09cd584 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0xe09e3d13 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0bcece1 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0xe0bef318 icst_hz_to_vco +EXPORT_SYMBOL vmlinux 0xe0e34e67 alloc_mdio_bitbang +EXPORT_SYMBOL vmlinux 0xe0ec7331 pci_assign_resource +EXPORT_SYMBOL vmlinux 0xe0f99a2f ida_pre_get +EXPORT_SYMBOL vmlinux 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL vmlinux 0xe10942c9 simple_link +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe12511fa inet_put_port +EXPORT_SYMBOL vmlinux 0xe127fb18 down_killable +EXPORT_SYMBOL vmlinux 0xe1453d3d skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xe16bd37b security_path_mkdir +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe1762783 write_inode_now +EXPORT_SYMBOL vmlinux 0xe1911b81 __page_symlink +EXPORT_SYMBOL vmlinux 0xe1a6a176 sock_setsockopt +EXPORT_SYMBOL vmlinux 0xe1bdc929 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0xe1ee8f90 dquot_drop +EXPORT_SYMBOL vmlinux 0xe1f0ab3a _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe223d0b0 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe245315d pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe250937f inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xe251bc48 set_user_nice +EXPORT_SYMBOL vmlinux 0xe267bd15 remove_arg_zero +EXPORT_SYMBOL vmlinux 0xe292fb9f gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe29e5e18 lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xe2adbe80 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xe2b25f93 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0xe2c0bbf4 unregister_nls +EXPORT_SYMBOL vmlinux 0xe2c3b6e4 __pagevec_release +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2dd7937 snd_info_create_module_entry +EXPORT_SYMBOL vmlinux 0xe2e45900 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0xe2e8065e memdup_user +EXPORT_SYMBOL vmlinux 0xe2f6247a blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0xe2f85664 dquot_enable +EXPORT_SYMBOL vmlinux 0xe2fae716 kmemdup +EXPORT_SYMBOL vmlinux 0xe30cd910 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0xe336c8a0 mount_subtree +EXPORT_SYMBOL vmlinux 0xe33af227 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0xe35c5285 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0xe37d10ae omap_dispc_unregister_isr +EXPORT_SYMBOL vmlinux 0xe3aaaa08 iterate_supers_type +EXPORT_SYMBOL vmlinux 0xe3aacb39 __sb_end_write +EXPORT_SYMBOL vmlinux 0xe3b5fcc4 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3da809e vfs_mkdir +EXPORT_SYMBOL vmlinux 0xe3f8c4e2 nf_hook_slow +EXPORT_SYMBOL vmlinux 0xe41d15ee blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0xe42ad891 vfs_getattr +EXPORT_SYMBOL vmlinux 0xe43274bc proc_dointvec +EXPORT_SYMBOL vmlinux 0xe447ede8 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0xe4566c57 elevator_init +EXPORT_SYMBOL vmlinux 0xe463f26f unregister_netdev +EXPORT_SYMBOL vmlinux 0xe4876c4c km_new_mapping +EXPORT_SYMBOL vmlinux 0xe48b155c dev_mc_del_global +EXPORT_SYMBOL vmlinux 0xe49cb093 __put_cred +EXPORT_SYMBOL vmlinux 0xe4c4a800 ps2_drain +EXPORT_SYMBOL vmlinux 0xe4c80097 cacheid +EXPORT_SYMBOL vmlinux 0xe4c92232 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0xe4cdf64b nobh_writepage +EXPORT_SYMBOL vmlinux 0xe4d194d0 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0xe4d204aa sk_mc_loop +EXPORT_SYMBOL vmlinux 0xe4f3a513 write_cache_pages +EXPORT_SYMBOL vmlinux 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL vmlinux 0xe505070b snd_pcm_new_stream +EXPORT_SYMBOL vmlinux 0xe5122890 flow_cache_genid +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe53d1faa of_translate_dma_address +EXPORT_SYMBOL vmlinux 0xe5445af6 omap_get_dma_dst_pos +EXPORT_SYMBOL vmlinux 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe582f13f get_mem_type +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe58a94af dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xe58fb0d7 generic_block_bmap +EXPORT_SYMBOL vmlinux 0xe599e169 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0xe5b0029e mmc_flush_cache +EXPORT_SYMBOL vmlinux 0xe5bea5d7 fs_bio_set +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5cba6f3 tcf_register_action +EXPORT_SYMBOL vmlinux 0xe5e3eeb4 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0xe5ecc485 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe5fbb477 serio_open +EXPORT_SYMBOL vmlinux 0xe614115f simple_setattr +EXPORT_SYMBOL vmlinux 0xe632da0b bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0xe63543ad dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0xe641b8b5 tcp_connect +EXPORT_SYMBOL vmlinux 0xe65f6d2d udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0xe6610078 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0xe66452ab dql_init +EXPORT_SYMBOL vmlinux 0xe673e994 do_truncate +EXPORT_SYMBOL vmlinux 0xe6744a89 omap_clear_dma +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL vmlinux 0xe6affa0e misc_register +EXPORT_SYMBOL vmlinux 0xe6c3ebb0 __raw_writesw +EXPORT_SYMBOL vmlinux 0xe6c48c88 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0xe6da6668 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0xe6ebc016 key_create_or_update +EXPORT_SYMBOL vmlinux 0xe6fbb64f __dst_free +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe707d823 __aeabi_uidiv +EXPORT_SYMBOL vmlinux 0xe7195883 dev_printk +EXPORT_SYMBOL vmlinux 0xe72d3b05 dev_remove_offload +EXPORT_SYMBOL vmlinux 0xe74d13d9 vfs_readlink +EXPORT_SYMBOL vmlinux 0xe755555d register_nls +EXPORT_SYMBOL vmlinux 0xe75f8ffc abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0xe7654a18 proc_create_data +EXPORT_SYMBOL vmlinux 0xe7722171 flex_array_free +EXPORT_SYMBOL vmlinux 0xe7769141 tcf_hash_lookup +EXPORT_SYMBOL vmlinux 0xe77fb02f dss_mgr_unregister_framedone_handler +EXPORT_SYMBOL vmlinux 0xe79cc02c __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7d77105 locks_copy_lock +EXPORT_SYMBOL vmlinux 0xe7e15910 dispc_clear_irqstatus +EXPORT_SYMBOL vmlinux 0xe7f8cf05 kmap_high +EXPORT_SYMBOL vmlinux 0xe7ff63eb arp_tbl +EXPORT_SYMBOL vmlinux 0xe801a1ad remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0xe824623a rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0xe8337cfb fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0xe84401cb xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0xe851bb05 queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0xe85dbe88 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0xe85dd024 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0xe87653ad ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe898bfba crc32_le_combine +EXPORT_SYMBOL vmlinux 0xe8b4a2c7 find_get_page +EXPORT_SYMBOL vmlinux 0xe8b53ecc down_write_trylock +EXPORT_SYMBOL vmlinux 0xe8b63ace radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xe8b700d6 splice_from_pipe_next +EXPORT_SYMBOL vmlinux 0xe8b841bb cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8c11581 omap_dss_get_output +EXPORT_SYMBOL vmlinux 0xe8cfbc73 elv_rb_add +EXPORT_SYMBOL vmlinux 0xe8cfce09 tegra114_clock_deassert_dfll_dvco_reset +EXPORT_SYMBOL vmlinux 0xe911a371 blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0xe912da6b unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe9342c42 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xe9417035 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0xe945f860 __frontswap_store +EXPORT_SYMBOL vmlinux 0xe94c3fa1 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe957ca44 generic_delete_inode +EXPORT_SYMBOL vmlinux 0xe95ea06e snd_ctl_remove_id +EXPORT_SYMBOL vmlinux 0xe9840fc6 kmalloc_caches +EXPORT_SYMBOL vmlinux 0xe9ac01a9 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0xe9ce189a jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0xe9d119cc poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0xe9e4ad67 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0xe9e59be0 omap_dss_get_device +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xe9f734db filp_open +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea0ca659 inet_frag_find +EXPORT_SYMBOL vmlinux 0xea10212a int_to_scsilun +EXPORT_SYMBOL vmlinux 0xea10655a __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xea16dd4c tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xea24e43b dev_uc_del +EXPORT_SYMBOL vmlinux 0xea2ef17a ip_cmsg_recv +EXPORT_SYMBOL vmlinux 0xea69a242 fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0xea6e3003 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0xea7987f1 key_update +EXPORT_SYMBOL vmlinux 0xea8945ff scsi_register_interface +EXPORT_SYMBOL vmlinux 0xea9688d0 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0xeab740ed locks_init_lock +EXPORT_SYMBOL vmlinux 0xeaca0713 pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0xead29463 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0xeaf2af64 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0xeaf534ba dentry_path_raw +EXPORT_SYMBOL vmlinux 0xeb1b120e omap_set_dma_write_mode +EXPORT_SYMBOL vmlinux 0xeb2dbbc7 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb444ceb serio_unregister_port +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb916790 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0xeb9b4bc9 dss_mgr_register_framedone_handler +EXPORT_SYMBOL vmlinux 0xeb9dea36 vm_event_states +EXPORT_SYMBOL vmlinux 0xeb9e7cdd ida_destroy +EXPORT_SYMBOL vmlinux 0xebafb50c d_add_ci +EXPORT_SYMBOL vmlinux 0xebb91309 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0xebca9d3b path_nosuid +EXPORT_SYMBOL vmlinux 0xebd04ede sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0xebd2ba43 blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0xebdbe48c radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xebe51cbd dss_mgr_set_timings +EXPORT_SYMBOL vmlinux 0xebf835e6 md_register_thread +EXPORT_SYMBOL vmlinux 0xebfc7202 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0xebfdcbdf system_serial_high +EXPORT_SYMBOL vmlinux 0xec17ebb0 of_match_node +EXPORT_SYMBOL vmlinux 0xec1aa6ef memzero_explicit +EXPORT_SYMBOL vmlinux 0xec419ec4 dev_mc_add +EXPORT_SYMBOL vmlinux 0xec46211a tcp_init_sock +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xeca1833f generic_write_end +EXPORT_SYMBOL vmlinux 0xeca43691 fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0xecca750f fddi_type_trans +EXPORT_SYMBOL vmlinux 0xeccd5908 get_disk +EXPORT_SYMBOL vmlinux 0xecd194a7 input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0xecd1a2ee snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecf2318c pm860x_page_reg_read +EXPORT_SYMBOL vmlinux 0xecf29a0c snd_timer_new +EXPORT_SYMBOL vmlinux 0xecf8834e dm_get_device +EXPORT_SYMBOL vmlinux 0xecff2466 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0xed059305 bio_add_page +EXPORT_SYMBOL vmlinux 0xed18c494 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0xed56428b filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed6ddf5a phy_find_first +EXPORT_SYMBOL vmlinux 0xed854dac omap_stop_dma_chain_transfers +EXPORT_SYMBOL vmlinux 0xed898a96 udp_add_offload +EXPORT_SYMBOL vmlinux 0xed93f29e __kunmap_atomic +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xeda1778d pcim_enable_device +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc7f4ec dq_data_lock +EXPORT_SYMBOL vmlinux 0xedd9106d __ashrdi3 +EXPORT_SYMBOL vmlinux 0xede41d61 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0xede5400c scsi_target_resume +EXPORT_SYMBOL vmlinux 0xedea32ff try_to_release_page +EXPORT_SYMBOL vmlinux 0xedfa2b74 elv_rb_del +EXPORT_SYMBOL vmlinux 0xee0ab881 put_io_context +EXPORT_SYMBOL vmlinux 0xee140169 dump_skip +EXPORT_SYMBOL vmlinux 0xee2bc2d0 omapdss_is_initialized +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee3496c3 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0xee35f5b2 inode_init_owner +EXPORT_SYMBOL vmlinux 0xee52c163 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0xee715ef8 lg_global_unlock +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xeea8c25a proto_register +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeced61f fput +EXPORT_SYMBOL vmlinux 0xeed3635b proc_dostring +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xef12a3b6 freeze_bdev +EXPORT_SYMBOL vmlinux 0xef29abb9 file_open_root +EXPORT_SYMBOL vmlinux 0xef53fb60 __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0xef5a31ce sock_no_mmap +EXPORT_SYMBOL vmlinux 0xef680da8 md_write_end +EXPORT_SYMBOL vmlinux 0xef89a148 snd_timer_open +EXPORT_SYMBOL vmlinux 0xef8e52dd generic_pipe_buf_map +EXPORT_SYMBOL vmlinux 0xef917b43 bio_copy_data +EXPORT_SYMBOL vmlinux 0xef95b02a pci_bus_put +EXPORT_SYMBOL vmlinux 0xef960b09 scsi_ioctl +EXPORT_SYMBOL vmlinux 0xef983f82 set_device_ro +EXPORT_SYMBOL vmlinux 0xef9fd255 key_type_keyring +EXPORT_SYMBOL vmlinux 0xefa5d3da pci_unregister_driver +EXPORT_SYMBOL vmlinux 0xefb66a95 omap_request_dma_chain +EXPORT_SYMBOL vmlinux 0xefc1cc51 i2c_register_driver +EXPORT_SYMBOL vmlinux 0xefcc452d omap_dss_find_device +EXPORT_SYMBOL vmlinux 0xefcdb944 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0xefcf3143 wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xefd6cf06 __aeabi_unwind_cpp_pr0 +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefe7aed7 scsi_remove_target +EXPORT_SYMBOL vmlinux 0xefec312f omap_get_dma_active_status +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf006e26f scsi_register_driver +EXPORT_SYMBOL vmlinux 0xf00fd087 blk_execute_rq +EXPORT_SYMBOL vmlinux 0xf024bf69 tty_mutex +EXPORT_SYMBOL vmlinux 0xf03586c3 sk_capable +EXPORT_SYMBOL vmlinux 0xf03dbb5c of_phy_connect +EXPORT_SYMBOL vmlinux 0xf0414bf0 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf0619801 timekeeping_clocktai +EXPORT_SYMBOL vmlinux 0xf07a0ab4 setattr_copy +EXPORT_SYMBOL vmlinux 0xf087137d __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0xf092ef45 neigh_connected_output +EXPORT_SYMBOL vmlinux 0xf09d8ba5 sock_init_data +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0ac535c key_alloc +EXPORT_SYMBOL vmlinux 0xf0b46e2e page_follow_link_light +EXPORT_SYMBOL vmlinux 0xf0b47b9d dm_put_device +EXPORT_SYMBOL vmlinux 0xf0b54b58 pci_fixup_device +EXPORT_SYMBOL vmlinux 0xf0bf8a2f cdrom_check_events +EXPORT_SYMBOL vmlinux 0xf0d40ec1 bdev_read_only +EXPORT_SYMBOL vmlinux 0xf0d68ed6 clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0xf0d7d0bf pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xf0db037f fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0xf0e114eb sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0f1246c kvasprintf +EXPORT_SYMBOL vmlinux 0xf0fdf6cb __stack_chk_fail +EXPORT_SYMBOL vmlinux 0xf12c2d20 kmem_cache_create +EXPORT_SYMBOL vmlinux 0xf13feb57 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf17bcb8b twl6040_power +EXPORT_SYMBOL vmlinux 0xf1806da9 idr_find_slowpath +EXPORT_SYMBOL vmlinux 0xf191dd96 scsi_dma_map +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf19e9355 cpu_online_mask +EXPORT_SYMBOL vmlinux 0xf1ac74a0 padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xf1acc986 pci_iomap +EXPORT_SYMBOL vmlinux 0xf1ca4ec0 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0xf1cdacdb bioset_integrity_create +EXPORT_SYMBOL vmlinux 0xf1cfc675 nand_unlock +EXPORT_SYMBOL vmlinux 0xf1d936ca tcf_action_exec +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1deabf2 div64_u64 +EXPORT_SYMBOL vmlinux 0xf1e0b260 edma_set_transfer_params +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1efc598 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0xf201c525 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0xf202c5cb radix_tree_insert +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf234a35b kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf246fd90 uart_get_divisor +EXPORT_SYMBOL vmlinux 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL vmlinux 0xf25d4ad9 snd_info_register +EXPORT_SYMBOL vmlinux 0xf2997713 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2ae31a6 netif_rx_ni +EXPORT_SYMBOL vmlinux 0xf2b1ac8e __getnstimeofday +EXPORT_SYMBOL vmlinux 0xf2d4f45e __neigh_create +EXPORT_SYMBOL vmlinux 0xf2eba4a0 dquot_acquire +EXPORT_SYMBOL vmlinux 0xf2fa40b3 neigh_for_each +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 0xf3661c40 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0xf36a8ef5 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0xf3797152 snd_interval_ratnum +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 0xf398287c sock_no_listen +EXPORT_SYMBOL vmlinux 0xf3b9c637 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xf3bf0bce __bitmap_complement +EXPORT_SYMBOL vmlinux 0xf3c55952 file_update_time +EXPORT_SYMBOL vmlinux 0xf3de5fbe padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0xf40019c0 tegra114_clock_tune_cpu_trimmers_init +EXPORT_SYMBOL vmlinux 0xf40b2297 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xf4332a36 tty_write_room +EXPORT_SYMBOL vmlinux 0xf43724ee phy_print_status +EXPORT_SYMBOL vmlinux 0xf4479cc6 sk_net_capable +EXPORT_SYMBOL vmlinux 0xf4561b0b sys_copyarea +EXPORT_SYMBOL vmlinux 0xf473ffaf down +EXPORT_SYMBOL vmlinux 0xf4783f8a eth_header +EXPORT_SYMBOL vmlinux 0xf478bd0e led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0xf4957c4a inode_needs_sync +EXPORT_SYMBOL vmlinux 0xf4a7fc6d omapdss_compat_init +EXPORT_SYMBOL vmlinux 0xf4a9b4a3 snd_card_disconnect +EXPORT_SYMBOL vmlinux 0xf4ad7e4e lro_flush_all +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4c9e5c6 key_link +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f71fc3 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0xf50a97c8 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0xf51b45dd wait_on_page_bit +EXPORT_SYMBOL vmlinux 0xf522ec35 bdgrab +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf54c51a2 dma_pool_free +EXPORT_SYMBOL vmlinux 0xf54da398 mfd_add_devices +EXPORT_SYMBOL vmlinux 0xf554fca0 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0xf559bb64 default_file_splice_read +EXPORT_SYMBOL vmlinux 0xf564412a __aeabi_ulcmp +EXPORT_SYMBOL vmlinux 0xf58ac244 tcp_release_cb +EXPORT_SYMBOL vmlinux 0xf59be297 find_vma +EXPORT_SYMBOL vmlinux 0xf5c05914 generic_segment_checks +EXPORT_SYMBOL vmlinux 0xf5ddbc36 scsi_prep_fn +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5f3461c tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0xf62d95c8 dcache_dir_open +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf6544915 set_disk_ro +EXPORT_SYMBOL vmlinux 0xf66b7f9c kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf6851d5f register_sysctl_paths +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6c2c4a9 submit_bio_wait +EXPORT_SYMBOL vmlinux 0xf6cb07a4 amba_find_device +EXPORT_SYMBOL vmlinux 0xf6d689b4 omapdss_default_get_resolution +EXPORT_SYMBOL vmlinux 0xf6dfccc8 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6f3cef6 omap_vrfb_setup +EXPORT_SYMBOL vmlinux 0xf6f61602 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0xf70f5f53 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0xf70f864e dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0xf7163bfc pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0xf725d586 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0xf7271948 edma_set_src_index +EXPORT_SYMBOL vmlinux 0xf7336e49 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0xf7376fce do_splice_to +EXPORT_SYMBOL vmlinux 0xf73d2244 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0xf7402853 __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xf7409567 __kfree_skb +EXPORT_SYMBOL vmlinux 0xf741c793 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf76c154e nand_scan_tail +EXPORT_SYMBOL vmlinux 0xf7802486 __aeabi_uidivmod +EXPORT_SYMBOL vmlinux 0xf78262bf __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xf78e8a31 posix_test_lock +EXPORT_SYMBOL vmlinux 0xf792f895 blk_mq_insert_request +EXPORT_SYMBOL vmlinux 0xf7a1f757 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xf7b12aee __next_cpu +EXPORT_SYMBOL vmlinux 0xf7b2e1be security_path_chmod +EXPORT_SYMBOL vmlinux 0xf7c1884a simple_empty +EXPORT_SYMBOL vmlinux 0xf7d63edb neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0xf7dff811 neigh_update +EXPORT_SYMBOL vmlinux 0xf803fe39 bitmap_set +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf8201fb1 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0xf820c28a do_map_probe +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf829d483 flush_old_exec +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf853bbca omap_vrfb_map_angle +EXPORT_SYMBOL vmlinux 0xf88d5c1d end_buffer_async_write +EXPORT_SYMBOL vmlinux 0xf8a388d0 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0xf8a77825 sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0xf8a9fcc0 write_one_page +EXPORT_SYMBOL vmlinux 0xf8d371d6 mdiobus_write +EXPORT_SYMBOL vmlinux 0xf8fbb4f0 __bad_xchg +EXPORT_SYMBOL vmlinux 0xf900d332 __bio_clone +EXPORT_SYMBOL vmlinux 0xf91ae42e __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0xf9275c48 dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0xf9304461 rtnl_unicast +EXPORT_SYMBOL vmlinux 0xf9348cbc xz_dec_run +EXPORT_SYMBOL vmlinux 0xf935049b omapdss_unregister_display +EXPORT_SYMBOL vmlinux 0xf9427374 dispc_request_irq +EXPORT_SYMBOL vmlinux 0xf9534d10 seq_release +EXPORT_SYMBOL vmlinux 0xf9599183 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0xf9606ab6 cdev_add +EXPORT_SYMBOL vmlinux 0xf968f875 get_super +EXPORT_SYMBOL vmlinux 0xf969ce88 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0xf9741baa unlock_new_inode +EXPORT_SYMBOL vmlinux 0xf9795234 tty_lock +EXPORT_SYMBOL vmlinux 0xf97cbb66 security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0xf98543c7 inet_bind +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9a58318 km_policy_expired +EXPORT_SYMBOL vmlinux 0xf9ae4c2e napi_get_frags +EXPORT_SYMBOL vmlinux 0xf9c367e0 iov_pages +EXPORT_SYMBOL vmlinux 0xf9c9bc82 create_empty_buffers +EXPORT_SYMBOL vmlinux 0xf9d3a67e generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0xf9e73082 scnprintf +EXPORT_SYMBOL vmlinux 0xf9ea60b5 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0xfa1fe6a3 pps_register_source +EXPORT_SYMBOL vmlinux 0xfa2a9a64 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa61af8d netif_napi_add +EXPORT_SYMBOL vmlinux 0xfa6fd22d generic_file_fsync +EXPORT_SYMBOL vmlinux 0xfa78d480 inet6_release +EXPORT_SYMBOL vmlinux 0xfa7f3156 wl12xx_get_platform_data +EXPORT_SYMBOL vmlinux 0xfa855815 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0xfa8c673e jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xfa917997 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0xfa97dc2f clocksource_register +EXPORT_SYMBOL vmlinux 0xfa99cf53 md_error +EXPORT_SYMBOL vmlinux 0xfaba5b16 i2c_smbus_read_word_data +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 0xfad328bb blk_bio_map_sg +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaf98462 bitrev32 +EXPORT_SYMBOL vmlinux 0xfaf9995e sleep_on +EXPORT_SYMBOL vmlinux 0xfafcd839 dev_uc_flush +EXPORT_SYMBOL vmlinux 0xfb14c0da i2c_master_send +EXPORT_SYMBOL vmlinux 0xfb340879 release_firmware +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb6c8ab4 inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0xfb6dc0b4 ptp_clock_event +EXPORT_SYMBOL vmlinux 0xfb7d9c45 __udivsi3 +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfb961d14 __arm_ioremap +EXPORT_SYMBOL vmlinux 0xfb9681a1 omapdss_default_get_recommended_bpp +EXPORT_SYMBOL vmlinux 0xfba7c7c0 lease_modify +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbb814c8 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0xfbccc618 scsi_calculate_bounce_limit +EXPORT_SYMBOL vmlinux 0xfbf6ce13 generic_setxattr +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc459495 phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0xfc5ed62f sock_no_bind +EXPORT_SYMBOL vmlinux 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfc79bdf4 fb_get_mode +EXPORT_SYMBOL vmlinux 0xfc8d5fda dev_addr_del_multiple +EXPORT_SYMBOL vmlinux 0xfca94e62 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0xfcaa04a0 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL vmlinux 0xfcb8d9c8 blk_fetch_request +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfccdb1e2 of_device_register +EXPORT_SYMBOL vmlinux 0xfce7df6a __skb_gso_segment +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcf990f1 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd20bd98 ps2_end_command +EXPORT_SYMBOL vmlinux 0xfd2b4842 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0xfd305341 walk_stackframe +EXPORT_SYMBOL vmlinux 0xfd4096a7 pci_find_next_bus +EXPORT_SYMBOL vmlinux 0xfd41a8d2 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0xfd5683b9 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0xfd587da6 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0xfd5bc45a __break_lease +EXPORT_SYMBOL vmlinux 0xfd5ff978 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0xfd6293c2 boot_tvec_bases +EXPORT_SYMBOL vmlinux 0xfd7c3fab block_commit_write +EXPORT_SYMBOL vmlinux 0xfd98e94d dev_mc_init +EXPORT_SYMBOL vmlinux 0xfd994617 snd_pcm_hw_param_first +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfd9a400b tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0xfda0dbe8 ftrace_print_hex_seq +EXPORT_SYMBOL vmlinux 0xfdb38d5a nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0xfdbda531 f_setown +EXPORT_SYMBOL vmlinux 0xfdc3ef40 udp_poll +EXPORT_SYMBOL vmlinux 0xfdcff304 padata_do_parallel +EXPORT_SYMBOL vmlinux 0xfddb8a54 input_release_device +EXPORT_SYMBOL vmlinux 0xfddea30c kernel_read +EXPORT_SYMBOL vmlinux 0xfde1b754 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfe004707 devm_request_and_ioremap +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe0be8ed dget_parent +EXPORT_SYMBOL vmlinux 0xfe108e28 tcp_splice_read +EXPORT_SYMBOL vmlinux 0xfe1ba87a tcp_prot +EXPORT_SYMBOL vmlinux 0xfe40bf95 dss_feat_get_num_ovls +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe6374c3 dev_set_drvdata +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe7dd8e6 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0xfe7e06b7 path_put +EXPORT_SYMBOL vmlinux 0xfe945698 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfee706ea max8925_bulk_read +EXPORT_SYMBOL vmlinux 0xfef96e23 __scsi_print_command +EXPORT_SYMBOL vmlinux 0xfefb6077 edma_alloc_channel +EXPORT_SYMBOL vmlinux 0xff064fee gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff5759bc netpoll_rx_enable +EXPORT_SYMBOL vmlinux 0xff5f0efd lookup_one_len +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 0xff955817 invalidate_partition +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 0xffdb82bc sg_free_table +EXPORT_SYMBOL vmlinux 0xffffee44 __inet6_hash +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x0a0474be ablk_init_common +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x2fe5ee89 ablk_set_key +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x664e9da3 ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x75cfbd47 __ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x97ba9881 ablk_exit +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xa9043c55 ablk_decrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xbe4d9808 ablk_init +EXPORT_SYMBOL_GPL crypto/af_alg 0x3ef8c911 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x54a8d116 af_alg_release_parent +EXPORT_SYMBOL_GPL crypto/af_alg 0x64b8f8ef af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x76044dcb af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x8a98572b af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x93957c0c af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0xb602d406 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xd954ef95 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0xfc706bd5 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xff78aaa8 af_alg_complete +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0xc3d074dc async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x7226b16a async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x8d7ee086 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x2967572d async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x3b42329e async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x377ddefa async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x8b5f1255 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xce536fdf __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xd9f1fce6 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x46ae795b async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xd7127d3f async_xor +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x11769065 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x27278ca9 __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x394b4554 cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x4a2a3ca6 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x08b47b70 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 0x0ad8eadc cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0x252ba052 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x654c5fbc cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x6bcc5b82 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x75925563 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x81f07a1c cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x9b618162 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xbddb4000 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xc9aa7e72 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xcc808a66 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/lrw 0xf7fe52dd lrw_crypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x328dee01 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 0x5dfa7c67 twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x1883318a xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0xed1e8ae4 __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/bcma/bcma 0x0081e9b9 bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x078b0f53 bcma_core_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1f01b627 bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x223ddb7a bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x249a1979 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x35ccb595 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x39c12335 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3b19348b bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3c17f900 bcma_find_core +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3d2a64ae bcma_core_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4467ad30 bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6019930c bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7f238c11 bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8ac37e14 bcma_core_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8d1c3821 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8f90b8dc bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xad7b9260 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc1cb2671 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xce094cbe bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd7322118 bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xdaacbfcf bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf326fc55 bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xfe6e7a7b bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x0487c1a6 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x26c1b99a btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x27913459 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x3d0fab86 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x3f6049a5 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x874c5788 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x8adb6ff4 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xb2300e74 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xcd3d2e88 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xdb96ffc7 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/cpufreq/arm_big_little 0x46a614b0 bL_cpufreq_unregister +EXPORT_SYMBOL_GPL drivers/cpufreq/arm_big_little 0x9e2f3ac7 bL_cpufreq_register +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x55700acc dw_dma_resume +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x765c3430 dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x8a237d85 dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xc282af10 dw_dma_shutdown +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xf30bb80b dw_dma_suspend +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2cb8fd0b edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x31ca6523 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x3acc9ab3 edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x40f71a91 edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x4539b6e1 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x46360a8e edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x4e69e505 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5450f429 edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5df56123 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x655a1329 edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x69259f22 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x791ac80a edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7c74a1b7 edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7f73967a edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x85227340 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa880567e edac_mc_add_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb489abb4 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc90e55bc edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xdc326b5a edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe75afc96 find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe912ea88 edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xecff5964 edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xef16cf4e edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xfd98a58c edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x0d933f40 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xb0b613a3 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x04ff0891 drm_gem_cma_prime_vunmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x1560453e drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x158cb491 drm_gem_cma_vm_ops +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x2799fbc1 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x494af7ac drm_gem_cma_prime_vmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x4a798e78 drm_gem_cma_free_object +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x4fceedee drm_gem_cma_prime_import_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x5093736c drm_gem_cma_describe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x5be4dfca drm_gem_cma_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x67ecbb65 drm_gem_cma_prime_get_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x686912a3 drm_gem_cma_dumb_map_offset +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x798f89e4 drm_gem_cma_prime_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x86da5f8e of_get_drm_display_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x9a514974 drm_gem_cma_dumb_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x9d175c01 drm_display_mode_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xe765f29a drm_gem_cma_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xef2fe89f drm_vm_open_locked +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x1148b623 drm_fbdev_cma_fini +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x33d1f92b drm_fb_cma_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x975af48c drm_fb_cma_get_gem_obj +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x99cec427 drm_fb_cma_debugfs_show +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 0xfae0272f drm_fbdev_cma_init +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x6adf436b ttm_prime_fd_to_handle +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x993995db ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xa1c660be ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xadf492c7 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 0x0775e696 hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1076130e hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x169da4af hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x18978abb hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1cac7e2d hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1f60cd0b hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x22bae921 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x27e0f151 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x37b67079 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x42e9a6f8 hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x49d8b560 hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4f370fd2 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x508439ba hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5425dca0 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5c95ed8a hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x60d367e3 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x623b7a96 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6c64298d hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8a2c5c8a hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0x93c44e44 hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x95f53c3e __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9ff26ff1 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa25411a7 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xaa3aa4ed hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb01e825a hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb5b4f61c hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb8abacb1 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbb953aa9 hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc6b7d4be hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xcdd45f1f hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd4ff9101 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0xda8a71a4 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe9011c16 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xec7de91d hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x063324e0 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 0x220738f8 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x735b26ab roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x7db21ff7 roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x8eaa5d40 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xb0ac6967 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xb12a2c9e roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x31b1dab9 sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x38e48f1f sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x43a21de0 sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x4f196ba7 sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x90648c93 sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xdbc1dac1 sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xe1325ed3 sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xec4b48a0 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x4e171485 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x19863384 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x38ed41f5 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x3f906a9c hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x47c83b48 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x4ad8e5a1 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x4ee36664 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5b1c321d hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x6104648b hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x638f6434 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x6ae4a0b9 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x8713ea2c hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xdbfe6a98 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe2aa5948 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x22e0489a adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x86db1519 adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xf1559a28 adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x0279546d pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x03a4c417 pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x191be5c5 pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x28fb473d pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x2967a4c5 pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x2be3ff29 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x3027a752 pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x3c28a9bf pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x68dd83dd pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xa319a29d pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xe4ac0692 pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xed7db2c9 pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x37bacc5b i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x3e47d2e9 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 0x79b64f39 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x87d1534d i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x9b7ffa0c i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xb5413767 i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xbb44812b i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xf7cb3919 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xf9b5fc1f i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x73d24d35 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xe0d8b8ef i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x3f90cbc8 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x816a0cfa i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x13298a98 ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x19361497 ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x4ddf1792 ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x52f77dab ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x7c53b20b ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x8ad947fa ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x9015e4ee ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x98f7b56c ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xaae4d741 ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x1ee5370e adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x3b4c6695 adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x3cb4bd6a adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x3d276abd adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x406a9d6a adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x58ac7231 adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x8de829d0 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x9ed29815 adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xab021bb2 adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xad2f8a13 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xd3d18b71 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe96cf6a4 adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0133b49f iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x050db85e iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x19a1e34a devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1e76d0f3 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x267c0508 iio_channel_release_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26ef4608 iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26f6b499 iio_str_to_fixpoint +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x281ebe07 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2b32a01e iio_scan_mask_set +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2f3acafb iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3315dfd6 iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3a59ca63 iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4a17a820 iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x51cefabe iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5645e596 devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x589200c4 iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x650b21ee iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x68056c53 iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x68f844fc devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6dcdcacb iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x70243368 iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7196e955 iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x768bc223 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x80dd7fca iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x87d93bc8 devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8b2415d1 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd22977a0 iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd3b87caf iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe15a1fab iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe276483d iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe2bb97f3 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xfbb3071b iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x78c060b6 input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0xb71a53d7 matrix_keypad_parse_of_params +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x1a1ed9ad 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 0x1cfd9c5f cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xc8d49585 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xfecc4aa7 cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x84a064ad cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x99d8d0fa cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x9bd0262b cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x89607280 cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x8f5e311d cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x0480de56 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x15a98b4b wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x2df13d0a wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x33d8022d wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x5ff78f19 wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6db269a4 wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x9abaec5f wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xa118693a wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xbca67460 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xd19b57a2 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xd756cf9d wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xdd44ca47 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x28e687df ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x5c574a94 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x720d0e9f ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xaf957529 ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xb2ff1eb6 ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xba9068e0 ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xc6987735 ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xf2e3e89c ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xf3e4ee60 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 0x0ee3399b gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x31f12e8a gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x338e087f gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x35aecbfe gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x38d8c788 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x497ce1e6 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x5a79ab5e gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x5b058274 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6ed35f60 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x7a23766d gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8a111378 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8eff32df gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9c90950a gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xb9b916c3 gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd5eb2667 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe48eb7db gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf672c2ac gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf86d3def gigaset_initcs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x0e15fe0a lp55xx_update_bits +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x25398ad5 lp55xx_register_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x3915db48 lp55xx_is_extclk_used +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x3a468650 lp55xx_write +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x4320dde8 lp55xx_register_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x443b0a5f lp55xx_deinit_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xc1ec3364 lp55xx_unregister_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xc30cb318 lp55xx_of_populate_pdata +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xcd13da86 lp55xx_init_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xddc3afdd lp55xx_read +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xf3d18a9c lp55xx_unregister_sysfs +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x749e05f2 ledtrig_flash_ctrl +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x7903e46e ledtrig_torch_ctrl +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 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 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 0x7b488fb1 __tracepoint_bcache_alloc_invalidate +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 0x392099bc dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x45a04125 dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x675d1b1d dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x77180f00 dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x7eb45d41 dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x7eda6eb4 dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x83363298 dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb6d5c65d dm_deferred_set_add_work +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb70b342a dm_bio_prison_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xebd06eaf dm_bio_prison_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 0x3f034b4e 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 0x34e9c5c1 dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x461afd7b dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x496363d1 dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x5840973f dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x640f72ff dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xb78158da dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xf0e8f05e dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x87cf2a17 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xa5774abc 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 0x0ecc7924 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 0x50f58a74 dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x5545d2e9 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x88c828a2 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 0xb1a770fe 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 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 0xfcfc0acf dm_region_hash_create +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 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 0x1cac81ac dm_bitset_clear_bit +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 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 0x2f74609d dm_bitset_test_bit +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 0x38c75c44 dm_bitset_empty +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 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 0x68fae9d2 dm_disk_bitset_init +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 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 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 0xa0bbbb49 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa13861b4 dm_bitset_del +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 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 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 0xd4702d13 dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xe44b4b9b dm_bitset_set_bit +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 0xf475af48 dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/raid1 0xe52ba42b md_raid1_congested +EXPORT_SYMBOL_GPL drivers/md/raid10 0xb1c89c6b md_raid10_congested +EXPORT_SYMBOL_GPL drivers/md/raid456 0x7d66f4a8 md_raid5_congested +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x0d79aaa5 saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x0f065be1 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x2cb09cb1 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x78c0dd28 saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x8bce696b saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x94cd8053 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xa4c7e828 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xab67024d saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xc09fb888 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xfc76ff6f saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x29341a8e saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x4cc1c2ab saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x5c06f5fb saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x5f1a442b saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x809ae4ad saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xabbd5448 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xfa343664 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x032a1849 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x16726e5f smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x2867b7c6 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x2877800f smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x3191e688 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x3a682fb0 smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x3ff31d2c sms_board_setup +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 0x68a0b4db 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 0x871db602 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x93cb4bdb smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa280fee9 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa2bc573e smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb16f3d67 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc32f6864 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xcd14c9a4 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd89cbcb0 smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xf6958993 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0xff957ddd cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0x73997358 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0x13c05eb8 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x00575b4e mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x03a5b306 mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x03adca80 mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x04acf1be mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x15e58aea mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x3ae469a2 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x3d07a811 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x5432d4f6 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7649ce57 mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x8aa367da mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x932aa884 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x99eefccc mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa8d87d7b mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xbbf9a577 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xfc52ad34 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xfc773a26 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xfcbdf2c3 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x219835c7 saa7134_queryctrl +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x59def87a saa7134_g_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x81f28ed1 saa7134_s_std_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xc2f96285 saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xff69cbbb saa7134_s_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x053ae7b3 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x479508d8 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x490c0563 ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x6552ae3a ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x72ec16ac ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x74ac8057 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 0x936cbba4 ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/platform/omap/omap-vout 0x090b7ab2 omap_vout_default_crop +EXPORT_SYMBOL_GPL drivers/media/platform/omap/omap-vout 0x3f08714d omap_vout_try_window +EXPORT_SYMBOL_GPL drivers/media/platform/omap/omap-vout 0x87006df4 omap_vout_new_window +EXPORT_SYMBOL_GPL drivers/media/platform/omap/omap-vout 0xd5aa61c6 omap_vout_new_format +EXPORT_SYMBOL_GPL drivers/media/platform/omap/omap-vout 0xe168e379 omap_vout_new_crop +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x495ad403 radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x89c49535 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x175702c0 rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1c851fc6 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x2a4445b3 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x324cf564 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x465bdd61 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4f6471c9 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x51b81d19 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x74e8ffb8 rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7706221f ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x82a03904 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x88c29ad4 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x92bfc1ae rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9324e3b9 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x99b60600 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9d376238 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb85bff1b rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xbaa2520f ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xbfe57b86 ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf250b650 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0x5ac16059 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x612da922 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0xd08d4472 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x9019b95a r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0x53305721 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0xfaabab1f tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x7062f3d3 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xc5b5b5cd tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x79057d98 tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xc15f1b67 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xf696aaed tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x3ccf743d tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x9cdd2ee9 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x0b365f40 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x09b25eb8 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x16b3b5d5 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1a3c3d70 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x2d4ab509 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x2db53734 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x64029b3e cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6b3c5fd5 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6d8c15c7 cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x9137dafe cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x92c13714 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x9f295884 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa26a7a30 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa9643416 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb478ac88 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb5c66967 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xcda1838f cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd2537bf6 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe626ec80 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xeb155629 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x31280d04 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0x94f50d6e mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x23e4d2bf em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x3838c28e em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x4573e681 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x471483ed em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x482ce064 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x5043783d em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x5b0a86e1 em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6fe9c00a em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7195b36c em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x765d9d3f em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x991c6a28 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x9d6edf2b em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xe1d50b76 em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xe34c646b em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x0ece17db tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x3a1d69e1 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xb29f5488 tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xd514e6e0 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x0132e183 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x01c483a9 v4l2_get_timestamp +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x3db7c7f7 v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x7f5be750 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 0x8f43fcb8 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xb8efa55a v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xd4995646 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 0x221d2fbc v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x36e8756a v4l2_find_dv_timings_cap +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 0x53105839 v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x6976cfe0 v4l2_valid_dv_timings +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 0x7eaf8e7a v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xb0891da2 v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0x9dbfd652 v4l2_int_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xa5228b24 v4l2_int_device_try_attach_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xcef46e1e v4l2_int_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xd7a34bcf v4l2_int_ioctl_1 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xda7a9e3b v4l2_int_ioctl_0 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17eb0eee v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x1df2e409 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x23bef07b v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4207aec9 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x77f15867 v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7f5f54e4 v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x81ec3670 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8d318db7 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x92e55601 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9cfc63d5 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xabcef25c v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb89ae7a3 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc3066b76 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 0xd29ce54b v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfe94316b v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x05138490 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0bc755b0 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0e2d7e88 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1551d089 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2ea5d4e8 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2fbcb8bb videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x31d1a442 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x365d0d20 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x388373be videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3d7fceb0 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6340d908 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x637b1b8f videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6a956447 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6e02f3db videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x77f1edc9 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7cadad26 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9093d7ee videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9942389c videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9a91c0f6 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xac5dc002 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc84d62ce videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe73ecbef videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf74ddcc1 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xff029238 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xc05ef2ba videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xd9b08491 videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xe2c24ffb videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x1cd743f1 videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x31d1da58 videobuf_dma_init_user +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x31e53b90 videobuf_dma_init_kernel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x357dc9e9 videobuf_dma_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x3912f604 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x7410e8be videobuf_dma_init_overlay +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x8545bc07 videobuf_dma_map +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xa825c75b videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xac53aeb4 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xe02525e4 videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x828064b9 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x984cc252 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xf0f2563c videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0211286a vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0cc2906b vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1639ed44 vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x19337dc1 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1a65f053 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x21067503 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x22c5a7e2 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2b24ad96 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2dc68a07 vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3109435f vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3360dde1 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x41414fce vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x436e3d90 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4805616b vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4e848b37 vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4fef5d1a vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x55e16536 vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5bf18555 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x704526f7 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x75423398 vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7576dee2 vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x764d04f4 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7d666a1d vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x83d2725b vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x849eccb4 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9b990b50 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa132fdcc vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb20cd510 vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc3575096 vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc7e8d7a3 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xccdb972f vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd33f6064 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf37b825d vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xfb2cd777 vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x30c7eaf1 vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x7d75ceb2 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 0xae570795 vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x0351aa6e vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x2625c33a vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x3ed824bf vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x82763474 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0xf9164af1 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0cffe07a v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x15ab0162 v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x412f2ce3 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x482c92ee v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4e08342b v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x514f66f0 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x51abd518 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7753bff3 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x796ede91 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa746ec4a v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa89c96fc v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb7446c8d v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc41d95ac v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd5f1794e v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd6593fcd v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd6996ab1 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd7cf67c5 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe34677a9 v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xeb76251a v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf38a0514 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf48741fe v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf8486156 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xfe82cf66 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x15757b38 i2o_pool_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x306aece0 i2o_dma_realloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x34a5cfc4 i2o_sg_tablesize +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x51907a76 i2o_dma_map_single +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x94c2ea71 i2o_dma_map_sg +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xb4278b12 i2o_pool_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xba0bf83a i2o_dma_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xbf81d858 i2o_dma_free +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x85c63d87 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x9b847684 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xf8a1bf9b pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x147d3ffd kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x15b94ce0 kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x176e2ab0 kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x9ab3476f kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x9b3847a6 kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xcdafc7d4 kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xf205562f kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xfbc9fb1d kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x21ed2f00 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x5514463b lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x98532aed lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x0aa51173 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x0fc2cda0 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x63c1296e lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x8dd737f0 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xaa21a1f9 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xce2ce011 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xe815a3ad lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x04302249 mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x163fd721 mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x448a6969 mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x90f07e45 mc13xxx_common_cleanup +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xa7002b5c mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xca72b91e mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x4c532205 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x761e63c7 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x79d17054 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x85831e29 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x8d9f8310 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x98288751 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xa6647517 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xb679f576 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xda390cbc pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe6232187 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xfb2af850 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x06ed1cc4 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xdace5e1c pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x1394947b pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x17bd94ce pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x3f625fcc pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xd2b93d5e pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xd3fe624f 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 0x03a4fc83 rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x0542c87b rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x05917d11 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1d280e6a rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1efae09c rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2514b48e rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x3bbabeb4 rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x3de17397 rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4646a38f rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x59c46817 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5df03062 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x69ab2a67 rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9f81e447 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa0f9c33e rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xaccd9856 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xbf7bd713 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe6d44b9c rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe9daae08 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xefec26d1 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf44c9bb4 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xff8f7daa rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x015773ae si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x09d380e9 si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x11650ac0 si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1544952a si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1623ed08 si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x189c7404 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1d983f70 devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x360bddfb si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x479f9196 si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4aa7b524 si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4fa1ff95 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5d3a9da0 si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x671770f0 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6ceb52ef si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6dffac0a si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x74b9c898 si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7b532255 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x881f19c5 si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x89bf456f si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8a39dbbe si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8e53890c si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x93339d67 si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x94ce90e6 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa493ea56 si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa83d32ca si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb774cd26 si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc5ceb07d si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xcd20e9d5 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xcfda6093 si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xdd049566 si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe510bc96 si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe8028937 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xea316bc5 si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf64caced si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x1f39d8fd sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x2c1fd31b sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x3187ed1d sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x39d43c18 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x7b20b5bd sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x196ecf5a am335x_tsc_se_update +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xa9e044f7 am335x_tsc_se_set +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xafd5b149 am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x1ceddc0f tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x311d0a14 tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x7915fc45 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x9fc38aef tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/mfd/twl4030-madc 0x9effbf1a twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x2cf20d8a ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0x16f07ca5 bmp085_detect +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0x63d41452 bmp085_probe +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0x8ff152ac bmp085_regmap_config +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0xf49b0b7f bmp085_remove +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x010ac53b cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x72af6c61 cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x7444138d cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xd7e387df cb710_set_irq_handler +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 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x3fe4b807 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x83a66f7f enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x9cef35d1 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xb21a027e enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xd82c7c0b enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xe7658daf enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xefafadda enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x002786e3 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x06ed65c6 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x573cbc35 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x5ff10e5e lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x6697a897 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x808af4fb lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x956e56e7 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xb5839a2f lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x1b628187 st_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x324416c3 st_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0x10a86406 dw_mci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0x6cea8b76 dw_mci_pltfm_remove +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0xe3f020b1 dw_mci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x439bfe69 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x7cb2db81 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x81acfe17 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x1df721f1 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x905ca5a7 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xee0eee77 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0xf2e12ff2 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x467087f1 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xbdf47c30 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xfba3a3f5 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0x78bf5206 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x7f88f79c onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xc2187d6f onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x16edec69 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x1e291e05 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2993be9b ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x32981b75 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 0x56d427ce ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5728370f ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6ec18dcc ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xa3f7b11e ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xa531ffe6 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xd80558bc ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe9a1829c ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xeb9897a4 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf4a5032e ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x017fbc20 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x18c8abfa c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x31761ba4 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x657a8b6c c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xb0743ea2 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xbdab4b67 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x002859aa alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x03b8e54e free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x3dd51d41 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x3e5c938f close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x4924c44d open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x4c6f4889 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x4d4d56f3 can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x70920f39 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xae7ed0cb can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb749d6b8 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd00adbb8 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd48e96ab can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd7b24c7f can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xdb17008e can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf8560819 devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x39f8d469 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x82809178 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x85a0b986 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x85cb1fbd register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x3f4d815b free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x51e02266 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xd5a8cfc5 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xd6af264b register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x5e206023 macb_ethtool_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x8ca109d4 macb_set_hwaddr +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x9d692e2d macb_mii_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xc4ea739e macb_set_rx_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xc953aff4 macb_get_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xcaddc595 macb_get_hwaddr +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xddf7dc32 macb_ioctl +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x00f92b94 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x011716df mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x03230e61 mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x06c2f58a mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0ab4e6f6 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0cc9fd4b mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x18e56e11 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1b77a757 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1bdbbac0 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x23b24b02 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x279a064d mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x28def739 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x333e0b35 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x34d0bd36 mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x36856d73 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3cb4b092 mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3d067432 mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3f6d33d2 mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x42d872ec mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x44c7f93f mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x45a0f338 mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x46f070c0 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4956bb86 mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4978e925 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4a4b7e39 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4ef545e1 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x51462166 mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x53235ae8 mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x56676c8b mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5bba1f6d mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5e81c919 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5f9e87f5 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x606f0c3e mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6597426a mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x660e783b mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x66c0e86d mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x675b49b9 mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6ddcbc60 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7025fe5e mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x707fe5b3 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x713e7b52 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7169a2ae mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x720f972a __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x735263a4 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x76d11019 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7a64746a mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7ba423ba mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8161cc9c mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8841fb3f mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x88681291 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x88ff39e8 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x89e8c205 mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8d4e8aad mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8ebc8b95 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x904aa835 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x927065f0 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x957c4d2c mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x959cf1c9 mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x96dffcc1 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x979f8b68 mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9afc6875 mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa205285d mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa326e5ce mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa66c1ceb mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa690eee6 __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa7452d58 mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xab87ee95 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xae416d62 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb01ad448 mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb230f05c mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb34ea9c4 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb41192a0 mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb441f973 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb4870fc1 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb4b32fb7 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb8470fe5 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbbf1fee0 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbd932226 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbf67cf81 mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc471c4df mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc94d8322 mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcca2aaa8 mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcedc406b mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd0e249d6 mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd1883b4f mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd36b0876 mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd37ab207 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd38b4056 mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd552fb1f mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd92bcdb4 mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd986b193 mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdbc38d89 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xde7a9c13 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdf436213 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe068d48b mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe0c0f28e mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe64fbc10 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe8433727 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe92f614d mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf36b6a6d mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf70a8dbe mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfda5f851 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x03f5573f mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0bec0168 mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1ece86d0 mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1f09dfcc mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3f3ea955 mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5d5b95e2 mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5d952116 mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x68a5427f mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x81e63197 mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x86d0e782 mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9331af4a mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9d9bda94 mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xab72d9ae mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb2ea1ea0 mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe6c3df9b mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe71046cb mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe77bc354 mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x1c57ed3e macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x43d5e508 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x50ee2003 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x71b80bb0 macvlan_start_xmit +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x96cd941a macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x60cd0534 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x6877308d usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x79ba83d7 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x8705dc7c usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xd4bc433d usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x1bb4e82f cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x2755dbdd cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x3d01017b cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xadeac058 cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xb4f423ef cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xbb8197b6 cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xbbac9860 cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xe2b5ba7b cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x230c3135 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x23d3c871 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x7e2edaa0 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x80c52d34 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x8e9f2774 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xe11ecdb6 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x03254f8e usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x07b4aee6 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0a81e39b usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0abf5100 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x13ba2530 usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x17919280 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1c457f0c usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x43551283 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x45a85fe4 usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x460e5438 usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x52e568a4 usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x54cbf9c0 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x556093f5 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x611fdf67 usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6946c917 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6da4d27d usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x79fcf52b usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x849f389b usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x89facfc7 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9a96ef1d usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9fb8e859 usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa4f14f37 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbbd52843 usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc366f073 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd548b40c usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd90628d9 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe3e2633d usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe66b8d19 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe71c4369 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xeb32a536 usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf71bab7a usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xfcd82e0c usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x19bc25a2 vxlan_sock_add +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x74a06cf2 vxlan_src_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xbd43aaa2 vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xdd491c01 vxlan_xmit_skb +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xf360f18b vxlan_sock_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x0501db6c i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x1943dea6 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x19b05780 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x1cd7f71d i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x62ecc022 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x6e3b03db i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x7c03e8a9 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x80b2f2fb i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8baa00ca i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9d54dc5a i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa6fabe59 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xaee02dde i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb27790b7 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb8246236 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd3cce9f8 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xee36ccac i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x3dd5d8fd cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x4f69a645 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x67ccdf06 cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x95c446e8 cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x232a31a3 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x087b9179 il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x52f898c3 il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x85cfd0a6 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x9807891d il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xcbd13190 _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0175ad74 iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0cff935d __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x194202ee iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x221512b4 iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x294507bb iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2956cc2a iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2b8d53bb __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2fc60e38 iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3f0b9a6d iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x45834532 __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x4870a1fd iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5a10d898 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c200735 iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5d0a212e iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x7040d2a6 __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x7676d44f iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x773f8607 iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8b582394 iwl_opmode_register +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 0xb748a58a iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xbcf0517c iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc0e81d0b iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd3524574 iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe11f9eaa iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe7b96e7a iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe85718ea __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf5032a20 iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x04ca5ac4 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x07daf240 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x13ae53ef lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x1b922338 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x211bf6c0 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x31357f38 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x41d07eeb __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x629e0396 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x67a78d7b lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x6c430361 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x7346453f lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x86d77365 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb98fab09 lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xbdd420e2 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd840a702 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xfc5ae8e4 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x044846d9 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x35692852 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x45d30838 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x5b526287 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x7c916969 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xa909062e 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 0xf00c43a3 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xf7779701 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0x1810ef4f if_usb_prog_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0xc532ce61 if_usb_reset_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x10ff416c mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x24e5f55b mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x30da6c6e mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x39c79790 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x714b36d8 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x735278dc mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x7427136f mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x90fc3f8a mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x9638bbb1 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x990b7844 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xdeb83efb mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe43673bf mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe5bf6eea mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xf32fa5b0 mwifiex_deauthenticate +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x0aed33d1 p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x0f504e05 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x45dc3c52 p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x81c4d4d8 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x841a74b3 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xb037ec1c p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xc8fd2217 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xd4a485f3 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xf360671c p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00a3744a rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x02bc7446 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0754e5d3 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0f289ca1 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1e6b58c8 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2502e72c rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x293aa088 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2b55f8d0 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3253c44a rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3a04411e rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3a96b118 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x44f7855f rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x579ff615 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5bea283a rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5e6d314e rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6297fbc4 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x62f21a4e rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6635e6d6 rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x714d9f74 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x78c0fe20 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9b1509f3 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9b47cf38 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9ffff864 rt2800_rt2x00debug +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa2d308b2 rt2800_get_tkip_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa31e4cfd rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa9d86ac8 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb22a5ddb rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb3ffd908 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc1afb179 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc78ac0f7 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xca6e4a79 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd881be94 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe4a38e43 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe64cdb9c rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe8d02259 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe9e49c49 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xedd704b6 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf5334285 rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfb056b24 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x06285010 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0a02c15b rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x1883fa55 rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x28103cb4 rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2ba20ac9 rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x3024e1c7 rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x6025a778 rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x89844ac0 rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x89f4a8a9 rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xa1384a11 rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xbb676ed9 rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc1f36188 rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xd8155cc6 rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x04a2257e rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0788d37d rt2x00debug_dump_frame +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x17a818a2 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x202204ce rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x28ac1ec5 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2da93627 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2e46844a rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3a2b269d rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3d076553 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4039cfdd rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x52518fdb rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x54c1aedb rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5cea96eb rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x603c6577 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x632abc03 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6ec4dc19 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x73c62192 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7a7571b3 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x894f397a rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x92d23f85 rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x93f239a4 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9642c71b rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x976af15b rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9a346cde rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9c0c6775 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa28193a4 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa4d3ff1a rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa86da1ec rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xabc50ecb rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xaf283218 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb36fbaad rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbd173774 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbe7432fc rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc09ce5c0 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc72918ac rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcf6bb2ad rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd36a92f7 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd922028b rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdbbf686b rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdd734ba3 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdf76bc7d rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe331335c rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xeaa2c1e9 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xead0c7b3 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf7cb02a2 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf8d39219 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfa8e63c8 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x0436b6f7 rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x16876473 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x5adbfb30 rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x79b9dc43 rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xbadc3393 rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x11c5e216 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x1955681b rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x9b52dbf4 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xfcbccccd rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x041e7f30 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x28ff7c3a rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x43b102c4 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x58ba43aa rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x66e10d17 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x6edf064b rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x81e34787 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x923799e2 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xa7d892f1 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xaf7e422a rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb25ed023 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb3818eb3 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xbc583390 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xcd6d5996 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xcf20afd1 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xee26af1f rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x02bd9245 dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1a22427b dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x27537b34 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe89780b3 dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x1b94d4b3 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x1c78dc75 rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x30aad62a rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x32cf67a7 rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x333cffaa rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x373e305b rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6a43a249 rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6ade5e61 rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6fee3a6c rtl8723_phy_set_sw_chnl_cmdarray +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x73ccadee rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x924e8733 rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x9bbf17e4 rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x9fe3f16a rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa3e97b8e rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xac647b2b 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 0xb8fdacbe rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xbecf3f1f rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xc0675d2d rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xc146a132 rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xcbf299f1 rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd96b14c6 rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xde4d6f22 rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xe2e6c9f1 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xe91b33b5 rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xee874cda rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xf425990e rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xfa61cd48 rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xfd1eea6b rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x0f121d95 rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x12d56ec0 read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x1405c501 rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x15bee244 rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x241dedc1 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x2d882d91 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x3ba38932 rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x4237e238 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x5ca61541 rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x8ee87cf6 rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xbaeebd0a rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xbc62a384 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xc1ab5a52 rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xdb9396f2 rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xe1e8a0c0 rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xe33cf604 rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf1cd7cd1 rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf1da509b rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf8ff6add rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xfd155ac5 rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x0c5771f1 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xc381a422 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xe7d69962 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x09e4447e wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1d3f343d wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x20a56a56 wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x251ca7c8 wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2e433127 wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x319ba568 wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x31fab3a9 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3ebd8147 wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4083a241 wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x469a42fd wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x50019c04 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x54b9ab3a wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5839e6f4 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x59ba7672 wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x65a879a3 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x67fb2cb0 wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6b3299b5 wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x78b1e202 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7a8a7605 wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7d5db1bb wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7df8031b wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x86e10bf6 wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8ac3a724 wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x91da5146 wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9376df73 wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9ad737ac wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9dde5a83 wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa0e77f78 wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa133922b wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xaa2aa4a9 wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xab33da99 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb429d7ec wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc8964f49 wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xccbb3a65 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd268aa3d wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd83b8c9d wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe31b5363 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe7146cb4 wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf3be2dbe wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf7592a5c wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf947d1ca wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfb6e2f64 wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x1328c8ab pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x2866e680 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x833eb6cb pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x01a65bc7 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x33dc358c mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x3ed3f60a mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x6063940e mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xc164b5c2 mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x5900ea6c wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x8385a6dd wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x8ebffc50 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x95ddd5ed wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xa62ea4ac wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xdd15345b wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x7ca91f7f wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0a6f2d3c cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0cf3a4ea cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x12e84496 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1d3b175e cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x31500947 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3636e92b cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x363ed36d cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x370f036c cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x39eb092b cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x47e5de7e cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4882a2b6 cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x57ff1ef7 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5831ae32 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x61024b8e cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6128a5a2 cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x64ca087c cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x76718643 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7ab14482 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x81902013 cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x84f6a016 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8e34e78d cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x971f13a7 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9b120bbd cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9dd1fbd5 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xae7d15e7 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb0be940d cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb15c3871 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb78a2958 cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb92f5a54 cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc6a3c3e7 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xce57ecee cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcf0bc147 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd74d10c6 cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd853b0f5 cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd95fc63a cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdade907f cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe6e6cca0 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe848e4dc cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe94a0d83 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xeeb16f9a cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf00100fa cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf21b9353 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf2ce6818 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfbad44bf cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x151d0078 scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x350384eb 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 0x7899f97d scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x9790055f scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xb9c82e70 scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xe3b0db8b scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xebf4eb36 scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0cdafc0e fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x13b7bd35 fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x208eb8a3 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x276508a2 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x3120479d fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x32772898 fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x37beca32 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x6d40a95c __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7e8949f0 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x93ae7910 fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9e28967b fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa216c597 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb883999c fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xbbd8fe08 fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xc23fe48f fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf0f7bc3a fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x1f12a175 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x2bc63241 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x69dd7d05 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xa345a89c iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xb9c01250 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xf094c22e iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0416437a iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12ad3ded iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x13aa3f90 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x23318e39 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2aa3216e __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2e5508aa iscsi_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2f0a9436 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x33dc77f0 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x37ab6626 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3aa34bd0 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3e58ca7e iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x483159af iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x485147ca iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x54129364 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5554968f iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x55ee834b iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x56121c3e iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6164a3b3 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x65542337 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x688c41ed iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x896302ae iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x99bc2b2d iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9d8be364 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xaa97f45a iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xaa9aeb19 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xacd68d52 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb38400ad iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb893f30a iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xba1762c5 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xca223049 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xce179788 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xceac7a05 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcfb8cd86 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd1061ad2 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd35d79d9 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdaf5c475 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdfe622c2 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe69329f8 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe791b385 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe9c5745c iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xec2263c3 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf15285ee iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf5c76bdc iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfc919933 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x15ca207d iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x199c0fcd iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x1cea62be iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x4126bf1b iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x72b300b0 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x78435290 iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x7a574aa1 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8273e6b9 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x929589f1 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9abc4b6a iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xaf2d0db4 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb320beb3 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc6b213c0 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc7e6f57b iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe1ca02f5 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xecb9fed0 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf01525e5 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x10e69b3e sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x20a9c982 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x239757d3 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3691bc38 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x37fb52d3 sas_change_queue_type +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x450c7c70 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x46d16a4d sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4f8c554d sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5a07ef7a sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5db5bcab sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7072bfd1 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7287947e sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8ec60ad7 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa3f5d99f sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa79c00b7 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb6c1cc2c sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb90b646f sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbbfd00b0 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbe36b779 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xce60895c sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xdc554a85 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe13b0be0 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe5fdf827 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe94d9d41 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xff744c47 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x11c02c27 srp_cmd_queue +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x8389d747 srp_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xb6d941d9 srp_iu_get +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xd92c8a1b srp_transfer_data +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xe962de1e srp_iu_put +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xf3cd2597 srp_target_free +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x5b958567 scsi_tgt_it_nexus_create +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x8022b5a2 scsi_host_put_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xaa9459b3 scsi_tgt_it_nexus_destroy +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xb07f9589 scsi_tgt_free_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xb7eafa23 scsi_tgt_cmd_to_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xba2eb662 scsi_tgt_alloc_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xc733e6b2 scsi_tgt_tsk_mgmt_request +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xe1f02221 scsi_tgt_queue_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xe79c7992 scsi_host_get_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x027cbf9d iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x04ff6f2c iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x09f943ba iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0b351c96 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x115a93a3 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x17cddad5 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x185d879b iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x22846608 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x23e1a17e iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2d9ea856 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x35752d5d iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x41bb6027 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x48c6627c iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x49141c40 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4bebf98e iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4ed2b941 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5dca31f0 iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x65d94c1e iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x67fdbe52 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6d5a4c95 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x75941306 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x83a70778 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8c61eb80 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8e894d27 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x906f2a59 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x92263b1a iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x96f4710d iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x984576d5 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa15ed322 iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xaed8b83c iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb4418853 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb79aa4b5 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbfac3910 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc86b9339 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xca04fb74 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xce0803be iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd3cde195 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd7575413 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd8c792a9 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xff434f31 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x42a68b1d sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x7cc5c8cb sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xa8f66a86 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xd22a8252 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_srp 0x260b9e2b srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x5858e3bb srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x818960f2 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xaf2615d2 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xde55981d srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x2e2d0a92 ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x43038c94 ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x53a6a239 ufshcd_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xa558d1fe ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xdb85b9be ufshcd_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xe1f5e034 ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x384d1351 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x4a6f219a spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x6fb14954 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xb22260ee spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xdd646a43 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x2d1d9c09 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x3057e0e5 dw_spi_xfer_done +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x533f7828 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xcd2edbc4 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xdf122ef2 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x1f86432d ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x019e63ed comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x09ba27d7 comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0e4f405c comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x11c47bc0 comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1c7cd0d1 comedi_buf_get +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x223670ec comedi_error +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x310e7d5c comedi_buf_memcpy_from +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x34b0fd28 comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3c9ebe68 comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x44f5e05a comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x54704829 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x558dee48 comedi_buf_memcpy_to +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x575b84a1 comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5a6e9d9a comedi_buf_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5d59310a comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5e036554 comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5f42bd2f comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x61196f1e __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x65d630ee comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x665fc33c comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6a8f0020 comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6b4fa02a comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6c851476 comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x73c3e217 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7cb3ce32 comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7de4c958 comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x858d77d8 comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8b3e4eb1 comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x907d3843 comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x92b5a561 comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x97df8733 comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9cca5982 comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xade59e34 comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb53eb2a0 comedi_usb_auto_config +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 0xca1a2007 comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xcda52625 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd03f1bc6 comedi_dev_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd49d80dd comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd9212550 comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfa2d6b18 comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfc746e4c comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/8255 0xa0d9bb77 subdev_8255_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/8255 0xdd33bbf0 subdev_8255_init_irq +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/8255 0xe127cb43 subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x79f4a6cf addi_watchdog_reset +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0xcfc466d5 addi_watchdog_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x2db53e4d amplc_dio200_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x314060a3 amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x8b2a1e63 amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_fc 0x3e251ecd cfc_read_array_from_buffer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_fc 0x6ca581ee cfc_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_fc 0xc76a08a7 cfc_write_array_to_buffer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x39e59eb3 das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x0aebc6f0 mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x168e3104 mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x16effd84 mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x1c8b99c5 mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x3a847321 mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x4150be2e mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x4770b40d mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x4f8a819c mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x72d27f4f mite_setup +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x780a1743 mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x81dfc567 mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x8aa04d4a mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x8fe09cb3 mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x98cee7b6 mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x9b4f9ae1 mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xbb4b39ba mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xc51a8bff mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xc848be13 mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xcc48c39e mite_unsetup +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd34b53c5 mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xdce7b841 mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe37a12dd mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc 0x9455c2c8 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x23dc4471 ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x27cc89d1 ni_tio_rinsn +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x3cd5a450 ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x5782611a ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xae9e2f9e ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xbad1541c ni_tio_winsn +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xd1ccda93 ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xd695b0a1 ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x07a0cfb3 ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x8041a60e ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x86da8558 ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x97ec022c ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xd59307d8 ni_tio_acknowledge_and_confirm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xf21cd7c0 ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x0334683b comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x03b1081e comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x14485753 comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x448574bf comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x778066be comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x8711dd39 comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xdfcdef90 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0x2206b003 dwc2_handle_common_intr +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0x4a3e334b dwc2_hcd_remove +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0xb05a818c dwc2_set_all_params +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0xd771e0de dwc2_hcd_init +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x1a1b5249 oslec_flush +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x2feda75b oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x3227a28e oslec_snapshot +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x7dc9dddd oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xb2c66001 oslec_create +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xc8b5a524 oslec_free +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xd370f679 oslec_update +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x333016cb adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/nvec/nvec 0x0b00aaad nvec_register_notifier +EXPORT_SYMBOL_GPL drivers/staging/nvec/nvec 0x15f25915 nvec_unregister_notifier +EXPORT_SYMBOL_GPL drivers/staging/nvec/nvec 0x83d2a4b3 nvec_msg_free +EXPORT_SYMBOL_GPL drivers/staging/rts5139/rts5139 0xbd5a0e51 rts5139_usb_ids +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x08e55008 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0e81c76d spk_serial_out +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x137f235d spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x14f06fe7 spk_serial_in_nowait +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x40311796 spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41acf4c9 spk_synth_is_alive_nop +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 0x77faa502 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x7a3c8249 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x86442336 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xa3977de3 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xad0962f3 spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb14e51c2 spk_var_store +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 0xcc70a2dc synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd1b551a2 spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x05465cee usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x147158e8 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x6a989ed5 usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x7d3f58a6 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x8d931a38 sockfd_to_socket +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x8f2b1788 usbip_event_add +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x9349105c usbip_recv +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x9ddedefd usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xae1a4232 usbip_start_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xb93b6a78 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xba514c88 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xbd37780a usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xcfb359e4 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x2715e979 uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0x426db197 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xeb0821fd uio_unregister_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x68fff55a usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xaf3d895b usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x09e0faec usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0b252e75 usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0c51261f usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x12b9a1b2 usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x146069f1 usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x15f6b6fd usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1f6a763a usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2103b205 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x23f39fa2 usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x268fcc50 usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3d488cdf usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x52623304 usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x639bb636 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6d1fb504 usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x74978a9a usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x77b6329c usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7df52e8e usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x84c827e1 usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x917ee680 usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x92cb5463 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb9231312 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc0016491 usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc1f8dbf1 usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xce092cce usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf726fb74 usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfc236360 usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xff1fccb9 usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0x3ca48308 gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0x450e1fb7 gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0xa064fc2f gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0xff23857a gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x0a5230df fsg_common_set_nluns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x141fce2a fsg_common_remove_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x1ccb58f7 fsg_common_set_num_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x2d10b6a7 fsg_common_create_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x51707c29 fsg_common_run_thread +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x6acb4179 fsg_common_set_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x7e26d4a5 fsg_common_set_sysfs +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x99023bfc fsg_common_put +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x9a0221c7 fsg_common_free_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x9dc025a5 fsg_common_free_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xa46e6443 fsg_common_get +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xa4e4bf75 fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xd3ae3b65 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xd468f882 fsg_common_set_ops +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xe4d1591e fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xeb945c66 fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x91d2005a ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x935bf8c8 ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x661b0089 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x84c1b83b usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x8be69031 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x93524e09 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xa4257019 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xbbe4b657 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xc1ad85e6 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xe208c182 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xf91f6f4f ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/musb/omap2430 0x6fb55e1f omap_musb_mailbox +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-am335x-control 0xf1ca06a0 am335x_get_phy_control +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0xff5615ab isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x03554d7c samsung_usbphy_set_isolation_4210 +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x41cd354f samsung_usbphy_cfg_sel +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x641456c0 samsung_usbphy_parse_dt +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x8ac1b5bd samsung_usbphy_rate_to_clksel_4x12 +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x9c9a8561 samsung_usbphy_rate_to_clksel_64xx +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0xb7eba0eb samsung_usbphy_get_refclk_freq +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0xbe731a5d samsung_usbphy_set_type +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0xaad56594 usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x046f3427 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x14a7cff9 usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x19618ed4 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1af66705 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x277a03e9 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x472625c5 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4cf64075 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x51a255d1 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6e507d23 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x73d54a82 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x960fdd6c usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x99f730e0 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa18c1c93 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa55b850a usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa9902123 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb5b105dd usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc10396de usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc68190ba usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd90fb67e usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xdb0a03ad usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe5a1c138 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x1fcbab0d wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x3f933482 wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x597859f7 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x602fdc03 wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xc543b60e wa_process_errored_transfers_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xc923d76c __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xe92e64de rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf4654c3f wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0ad26e01 wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x10bf36f9 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x1db3055d wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x37c0f96b wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x58c372ed wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x750a3586 wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x756cfedf wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7b087ed4 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7cf4be68 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7d28e040 wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x8944d4b5 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x9b7bf39c wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb419bf07 wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfa02dcdb __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x213382eb i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x761e01d0 i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x88c6c78a i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x45d38721 umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x6251685b __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x89e7b84e umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x986af4e6 umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xacdbb041 umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xb5757866 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xf1c9836e umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xfd90018f umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0b8aad57 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x11368454 uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1248bd2a uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x12a30314 uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1a065b00 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2a4b521d uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2bad7635 uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2f9a7e5e uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x323f9ab6 uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5828f81b uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e4bc088 __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x67ced594 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6e6ab52a uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7dcfcd23 uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7f39285a uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8fb6f162 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x929a9853 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9bad9ee4 uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa69567c0 uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa7189643 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb044c43b uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb70f890d uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbc4c6979 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbf349714 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc2ab1407 uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc301bcf0 uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc4794d4b uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc5a5a5ef uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc7eda579 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc8f34d22 uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xcab35e7c uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xcb801ca3 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xcf7a8919 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe1716f06 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe3a23e89 uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe54b9378 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe7232a98 uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xeb2c14ea uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf46a7f0f uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf594f239 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfb4fa40e uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/whci 0x07f44e2a whci_wait_for +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x03c77a5b vfio_register_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x2e3f7699 vfio_add_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x58f684b0 vfio_del_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x5a116e68 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 0xa25fb30f vfio_group_get_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc4913442 vfio_group_put_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xcea83c79 vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x04260856 vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x135f3656 vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x19dc7d89 vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1c2388f0 vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x297fa586 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2ddd6a9d vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x32bcc5e8 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3d8f6a50 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x42ff4e91 vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5c812fa7 vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5eeb5c6a vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5f78f0fe vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6670560a vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x84b23917 vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8c4b8130 vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x93bbf1c8 vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x95520024 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa08d36c2 vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa33fc68f vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xac044c73 vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb00fb588 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb5b56d5e vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xbf90f882 vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc5e35212 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xca0aebfe vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd8d55fb3 vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe64aae0a vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf79a91d7 vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xfca3fcf1 vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xfd03c865 vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x43dcbc21 auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x4cdc1814 auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x5f3726c6 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x66259f44 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x6ef18560 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x77185254 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x8aec1b20 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x8c503060 auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x98ff1d0e auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xc68de154 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x2b0a7bf2 ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x5961cb70 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x6dbdad58 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x6e09c0bf ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xb429642a ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xe3e755b1 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xe7165538 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/fb_ddc 0x76041777 fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0xa8b8b016 fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0xdbf2c6a0 fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0x14776ff3 sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0x28f10795 sis_free_new +EXPORT_SYMBOL_GPL drivers/w1/wire 0x20b3703d w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x2cfd5512 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x3bd188ae w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x45bf8b49 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x5223b451 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0x78380850 w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x9ca5c8ab w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xb5e4a85a w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xb76c60ec w1_next_pullup +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x04d73b85 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 0xcc2eff43 dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xf870732b dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x02678af6 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x0b205f8b nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x200723c6 locks_start_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x4977825b nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x66018f2b nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x7280dd4c locks_in_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x7825fbe5 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xa92e2f2d nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xcd72f792 lockd_up +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x01faf3ab nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x028a3dae nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x02c640db nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0557993b nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x05d3ce82 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0a7e01d1 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0c72734c nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0da4b3c9 nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0df86104 nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x10595bc8 nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x11d1422e nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1246a313 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x13641b36 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x16af7a51 nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x188990ea nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1ab61231 nfs_pageio_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1f3196d6 nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1f8f4ec2 nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x21d559d8 nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x22d4e6f2 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x246eea64 nfs_initiate_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x24c2bd2b nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x29aaaa12 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x29cf2e27 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2a057346 nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2a779e62 nfs_readhdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2cd98cda nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2dbbc7ad nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2ded3ca5 nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x316227ba nfs_put_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x33d20f96 nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3596a676 nfs_wait_client_init_complete +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 0x42902d34 nfs_writedata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x434e4b4d nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x451e5910 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x456993d1 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x45fdc4cb nfs_pageio_add_request +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x47ea828e nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4826e76a nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4c835aa9 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4e5e8094 get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4eafd63d nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4f93184f nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x553e98e1 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x559b689e nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5b5aff43 nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5c1429b6 nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5c42a8bc nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5cccf908 nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x629c54d8 nfs_file_splice_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x69448bb9 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6ba8d2d8 nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6deef554 nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6f763a17 nfs_readhdr_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x70d353e8 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x75f248cc nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x77428fd6 nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7822b22b nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7a86f709 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7af9338d nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7fa0e895 nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x80934765 nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8294be25 nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8444b499 nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x862799b5 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x86d29ad3 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x88085a56 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x88d26476 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x89bc5a64 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8b7a7c87 nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8bf0704c nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8cca7adb nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90dfadf0 nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x929f04bb nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9342e804 nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x94edc6a7 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x954efe6e alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9eb02dd6 nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa3d5e688 nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa662f4e3 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa82e3e10 nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8cf6a38 nfs_invalidate_atime +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 0xadc609bd nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaf43410e nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb0170f11 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb039852c nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb08e2c3f nfs_readdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb0f2aa35 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb265a24f nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb4429d3c nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb90d79e3 nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xba0e0bc9 nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbab57fd9 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbb0d0968 nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbb63679d nfs_generic_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbbdbe2ea nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbdb4e123 nfs_generic_pagein +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc003cac6 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc011f401 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc016e27f nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc2445836 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc3213dda nfs_initiate_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4c084a0 nfs_file_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 0xc772afa7 nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcdd36771 nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd0e1ee91 nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd63b761d nfs_writehdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd6cac7e9 nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd8f5e514 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd9c3166f nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdbfbb34c nfs_setlease +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdc2ea6c4 nfs_writehdr_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe1d8bdf6 nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe3911c10 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe3a24694 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe40b1bee nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe59e5b83 nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe627f01d nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe8728c7d nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeb95a333 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xebd6644b nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xedcf1f6b nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf15d57a0 nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf4f1d910 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf50799a4 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf79cd116 nfs_pageio_reset_write_mds +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 0xfc91f7ef nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfef08b58 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x03a3cefa nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x040ca46e pnfs_writehdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0445dbad nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0e3c250f nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x11bda27c __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x129f78d2 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x18774b64 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x27958c18 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2d575df3 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2ed8fb32 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x33818033 nfs4_insert_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x36d4f8f4 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x36e83ee8 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x40dad09f nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x450e769f nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x518355a1 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x57161415 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x665fa50e __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x68b93afb nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6d78f33f nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6de4c0df pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7b15acc5 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8118a9e0 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x89faf517 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8f36e3fe nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x91da538b nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9274e69d pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x983bd683 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x98b8eb72 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9b2543c3 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9f6ff713 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xab032df4 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb4fce9d0 nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb953a850 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbdf3df91 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc975eff1 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdb813e84 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdc8b9208 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe01fb2cc nfs4_proc_getdevicelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed7dbdeb pnfs_readhdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf2d36683 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf4dffb58 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x835e87e3 nfsacl_encode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x9c2d78d2 nfsacl_decode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x0f9f5b3f o2nm_get_node_by_num +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 0x2134709b o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x687f6251 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x771a1117 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x9e0ac9ce o2nm_get_node_by_ip +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 0xbaccad8f o2hb_setup_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 0xd3b295e4 o2nm_node_put +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 0xea8e1c89 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x22dea8fa dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x4a5211d1 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7331fde5 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd2c7848b 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 0xee38fe4c dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xef246f89 dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x025e2d69 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0562c415 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0b1d4161 ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x16b2e575 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x5469ce31 ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x7083dbd5 ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x89502fe7 ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x91a73ca9 ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xaea25544 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xb4bd060c ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xdc823ea4 ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe2bd47db ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe417d940 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x353e85e8 notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xef6976aa notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x021957e1 raid6_datap_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x05513b71 raid6_call +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x0f8a2742 raid6_2data_recov +EXPORT_SYMBOL_GPL net/802/garp 0x2df078a7 garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x3513f9e0 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x3cca9d4f garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0x7b6b20dd garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x8c7a0c3a garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0xe3cc4561 garp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0x10da0035 mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0x2af491ee mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x3c161b68 mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0x62a31219 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xf8dddaa5 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xfed440e7 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/stp 0x10157465 stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0x637d5267 stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0x1ab068b6 p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0xc6d5b63a 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 0xd079ae45 ax25_register_pid +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x2886e99a bt_debugfs +EXPORT_SYMBOL_GPL net/dccp/dccp 0x03007496 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x04236df2 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x09a123b7 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0x09c84c20 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x23cdbd62 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2536fd02 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x268249ed dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x26e20d80 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2c4e3a84 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x33e9f3ae dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x42a3df9c dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x45669efa dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x475516e9 dccp_close +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 0x53a881ec dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x540f06b0 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6b759f59 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x77937ace dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7e47a0ca dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x80054d6d dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8f775b02 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x91dfd6bb dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa8d88786 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0xae2564ab dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb50ea2ca dccp_insert_option_elapsed_time +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbb5588c1 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc3a73fca dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc6e392c2 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd2fb8179 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd47a248b dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd622333b dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd690ca9f dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdc291622 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe20b3068 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe33f6b2b dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf01477c5 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf3017e21 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x79844954 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x85d4a1b9 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x86622565 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xa142e42f dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xa95cf6ca dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xc9a85ebd dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x5e03408f register_switch_driver +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xe60c4917 unregister_switch_driver +EXPORT_SYMBOL_GPL net/ipv4/gre 0x21b0054d gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x6fac7af2 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x71be8731 gre_cisco_register +EXPORT_SYMBOL_GPL net/ipv4/gre 0x9194bd7a gre_build_header +EXPORT_SYMBOL_GPL net/ipv4/gre 0xa40c8e47 gre_cisco_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x271ecae1 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x397b740e inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x659e569b inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x8619bdf6 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x8eaef0d9 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xa78fa10c inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x26aedd8d ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x2cd84439 ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x2edb0a18 ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x34310866 ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x41799f46 ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x50992016 ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x513fac00 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x5fabd624 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x8cbc85f7 ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xb35885d9 ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xb915cedb ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xcc41f0a6 ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xda6ea623 ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xec83fb26 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0xdb92fd4b arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x100c0845 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0x6d40a921 need_ipv4_conntrack +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xb0a97de5 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x503908f1 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x7df65897 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x92426fea tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x95d98a72 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xa2307389 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/xfrm4_mode_tunnel 0x5c213355 xfrm4_mode_tunnel_input_register +EXPORT_SYMBOL_GPL net/ipv4/xfrm4_mode_tunnel 0x86ae6c29 xfrm4_mode_tunnel_input_deregister +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x51a98221 ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x94182ca7 ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xb56b5887 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xb9ac9d9a ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xfd957a15 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x5f74f5e3 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 0x033b12e7 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/xfrm6_mode_tunnel 0xb338f77b xfrm6_mode_tunnel_input_deregister +EXPORT_SYMBOL_GPL net/ipv6/xfrm6_mode_tunnel 0xb6eea4a2 xfrm6_mode_tunnel_input_register +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0018f9b8 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x1432e459 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x156a7994 l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x15bb29d2 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3c468e5d l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4d55a39a l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4fe5523b l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x53b91aae l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x67c32f4d l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6c44dc68 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x824525d9 l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x8f9ed32c l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa79ba473 l2tp_tunnel_sock_put +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xdb951451 l2tp_tunnel_sock_lookup +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe18b92ed l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xfbbc312a __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xff0a215c l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0xf6be0468 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x0de47b11 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x11be73f0 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x28254e50 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x2a14a832 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3663a36d ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x4bf42798 ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x508adb60 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5d38f601 ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x852e6c7b ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x91865258 ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x98acffae ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x9fff9471 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc7371e18 ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xe13cff84 ieee80211_iterate_active_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xe9092414 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x15400cc0 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x19e446fe ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x4f94650f ip_set_nfnl_get +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x5475889a 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 0x641a7450 ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x69de552e ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7bbab60f ip_set_name_byindex +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 0xa237e189 ip_set_nfnl_put +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 0xaaac81af ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xb2abbffe ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xbad1eeb0 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd5285035 ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xdf55fa64 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xea693537 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xeae13e05 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xef13ebbe ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf9ad2174 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x565382c1 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x7ad27c05 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x8a0c6158 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xd1337985 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x015d6a9e nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x01f84db5 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x02f4a348 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x030acdd7 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0322a920 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x053118f3 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x080ea0a4 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1329d4fb nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x13cc67d3 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1658b9bf nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1be1cbf3 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1c715adf nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1ee7fa93 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2684ce08 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2b9c30ab nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2ca7f467 nf_nat_seq_adjust_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x313caf55 nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x32ddaf5e nf_ct_l3proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x35282c0d nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x354ccc10 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x393997de nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3d15660f nf_conntrack_tmpl_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3d75317e __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3fd873b5 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x406e38c3 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x40acc575 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x438c829b nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x46c39baf nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4cc05ca8 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4e63016e nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4f9d0ee3 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4fe5d0a7 __nf_conntrack_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x543805d6 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x54de68e5 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x561d8ffa nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x577863a2 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5aef530c nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x68c1333d nf_ct_iterate_cleanup +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 0x6f17956c nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6fd7c28e nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x702e25e8 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7068d451 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x747b89fa nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x79919824 nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x82e16118 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8321ef12 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x83acb816 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8b6fb2cd nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8c26c90a nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8c3ad5fc nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8d236d82 nf_connlabels_replace +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 0x9dd5fd8c __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad145cf6 nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xade907ba nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb02f9939 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb0d7039a nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb23f3373 nf_conntrack_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb2d848b1 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb4b46204 nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbdf4b847 nf_conntrack_flush_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc326247d nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc3783772 nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcc7399e6 nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcdf82b35 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xce9a14e3 nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcfd9ebd5 nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd4b999d8 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd5a7db1b nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd9edbcc9 nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xda7ca3a6 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdde61b24 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe048bf0d nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe25d7347 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe3ca8bb2 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe7121d3c nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeabdd6b0 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xec2efcb7 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf21be53a nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfdacca36 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xffcc9bcb nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x788c2e8f nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x5ffffda5 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0xbfd453fc nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x01620279 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x178b6b4a get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x2cfcd196 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x541c9f0b nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x85e04855 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xc88f1713 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xd8b701c7 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xe2a861ab nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xf3f08fbb nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xfba5bc69 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x1f4c1ba3 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x0644aed9 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x1f889571 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x47df8bb6 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xc350c71b nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x71f31857 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xd0037de5 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x2480ea0b ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x2cf1c8c4 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x39cc9a39 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x77c817f0 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xb4512d80 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xc8bf1c96 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xe058343e nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0xcae044a7 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0xc1a79414 nf_nat_tftp_hook +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 0x31e56f39 nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x4944062a nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x7f627c50 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x9faaa478 nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xb877097f __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xc9d33443 nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xe4750e4c nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xea4089cf nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x0babd621 synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x11a006b5 synproxy_check_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x8841d39b synproxy_build_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x90298227 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb42e336a synproxy_options_size +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xc026727b synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xef7db50c synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x02b29759 nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0fda3c99 nft_validate_output_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x13825515 nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x180cefaa nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x25960eff nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3d49dab7 nft_validate_input_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x432644aa nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x4bd8a579 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x58c2d9c7 nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x77bac114 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa206142a nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb239e12c nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd16da0e8 nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xec04b3ef nft_validate_data_load +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf8a11607 nft_do_chain_pktinfo +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x2266d5e9 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x4a13b438 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x62aed343 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xc7c49a20 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xd42c1c9a nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xe49a9754 nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xf1f97414 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xdd850861 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0xe331d672 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x0004d6f4 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x05fe30a2 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1aee1736 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x24c8e482 xt_copy_counters_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x26533648 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x27d39c85 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x30c8c3be xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x60fad8e9 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7a4d0352 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x91da8b44 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa3211426 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbfb45488 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf6246b53 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xfc1f3de6 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x57909dc1 xt_rateest_put +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xd0f26ea3 xt_rateest_lookup +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x104d577d nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x42b5d26a nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x813cf1d3 nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x0302ad5e rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0x05933617 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x1669fd78 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x25e422a0 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x262135fb rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x28f6a51d 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 0x35fa8972 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x3d7b45c6 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x4622b59b rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x54538c2d rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x96fafe85 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x9765ca0d rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0xa12bb3f8 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xa2a44269 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0xa4d62a29 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xb28890eb rds_send_drop_acked +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 0xce978109 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xd19423c9 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xd7d8703b rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0xe219c3ce rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0xee6e1b54 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0xeff7fe58 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0xf85567e6 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0xfdc67f7c rds_recv_incoming +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x9f9af0c0 rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xe870c072 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 0x3e76bec7 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 0xade74ea6 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 0xba5a6112 gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +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 0x0800a024 rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x09002d8c rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0aa1f9bd auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x12c586c5 rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x134bb32d xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x153bd474 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1543bb09 rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x17921a06 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1896558d xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1a06ed10 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1a0eba5b rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1a722278 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b21280e rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1cb447f3 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x208456c4 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x210898e4 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x22140130 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x224ab6e4 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2319a653 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2382b5ca xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x24f6cd1b xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2536406b xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2750ed01 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x276f5666 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x27a31254 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2b6b1ac9 xprt_release_xprt_cong +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 0x2fc2fa53 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x334d0107 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x344da6cd xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x36d4433b rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x374ac245 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3765fa33 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x37fc0f07 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3938a200 rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3a947531 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b412254 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c05fe47 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3ee88b62 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f5eb1e4 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3fde8248 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4019e200 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x40e88d67 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4117116f xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x427b57bf xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x42ebe6d5 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x43cd8151 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x47f8d888 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x47ff5647 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x48a169ac xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x49cf0466 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x49dcdfa0 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4a975b70 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b301a2f unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d3d7c07 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4dfca4ba xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4e35e5d3 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4f062481 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x502d228f sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x50bc0309 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x51bffe48 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x56c349d1 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x592502a4 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b1aa3d2 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5bc66f32 svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5c157cec xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5ddab8e0 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60e0819f svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x653ae7e4 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x654bb352 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65ca4e35 rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x668cca5a xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x66b2685a read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x679e1d5a xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6e35e97f cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6e8a3168 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x70615a8c svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7096d874 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7293de7d svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x72a6349e svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x737aae5f xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7380f08b xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x74ae7a8f cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x777e9cf8 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77c15b16 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7b162506 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ba8b325 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c478ad7 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7db35d13 gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7e82e26e rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ee45729 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7efb9b99 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f074f6c xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80a8fb9a rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x861ece2b write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x86be5090 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8872b353 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8b3bc73f rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8c20adc6 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8c503418 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e4c272b rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ebe8cd1 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8fa24dda xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x907a8f98 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x908615b4 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x91950ca2 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x960867b4 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x99c5b51f svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a9dc77b xs_swapper +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9b4fc6eb rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d47026f svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9da1a362 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9df50d42 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e486d8c rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e5ab9be svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9f70a5af svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9fc61405 rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa144bb23 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa147ad13 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa2357839 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa2c74d38 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa4002c0d rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa48d86bd rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa4fa22e0 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa53651c8 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa5590a79 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa5877dd9 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa91e663f xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaace9333 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xabe2beae rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xacac9025 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb092332a xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0df0b66 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb129ebec xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb1adbf1c rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb3b1b4b7 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb762238e rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbaa849a9 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb6cbfe4 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbbd3b877 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbbe04fa2 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbd23dd9b xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbdd6945e svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbdec48f3 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe83fbb1 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf76b8ff rpc_pton +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 0xc17ad2bf svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc39e3248 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc51d7ba8 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc64b9caa rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc943ffcd rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb3904ec svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xce4467f1 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcfab0649 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd11218c8 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd11368fc svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd159c29e rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd1fe41cb rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd2c2cada xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd36c8d6a rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd46107ac svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd498b092 rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd57e931c svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd619db0a sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7067a9e svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd8ef5a96 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdb7eb3b5 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdb83d288 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd2125fb xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe0946772 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1b43b2a auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe22d226a svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe4dd32f1 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe641b2e5 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe73f91e6 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe91181f5 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xec9b79ec rpc_add_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 0xefba58bd rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf8951d4a rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf966f805 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf97f2d68 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb03ad4c rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb1049ce rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfc569a05 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfccf735d xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe0b6674 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfea34bed xdr_inline_pages +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0c79d5ef vm_sockets_get_local_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0f7d4c37 vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x15c0c57c vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x38b2bda7 vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x6e53c10a vsock_remove_bound +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 0x7dd37c4b __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7fc9fc24 vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x82de0abf vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xaef73939 vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xb41d1b9e vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbea218d0 vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc71b1bf6 __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xca0fc36a vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd5e1aba9 vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xdb4c8e2e vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf593c40a vsock_pending_work +EXPORT_SYMBOL_GPL net/wimax/wimax 0x1583ddbc wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x2fead90c wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x3b4ef398 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x5bf7586f wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x6b2757f5 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x6e05f271 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x7287bf4b wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x7365043b wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x8c63a190 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0x911d105b wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x9f87d457 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0xbec269b5 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xef9bf374 wimax_state_get +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x03828f99 cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x1295e452 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x6cd144cf cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x731ee2cd cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x7ff1f681 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x9453c1b6 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xa2ee0e2c cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xae5f1a04 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xda29018a cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xdbdc631e cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xff6653ab cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00778770 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x056bb269 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0a575945 xfrm_count_pfkey_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0b9e5852 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x74e1a843 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7c30b8c7 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x92dbc6c1 xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xbc8b0f41 xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xce7a55c1 xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xe122af95 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x748f3c96 ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x797a01c7 ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x9b0b6fdf ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xad3f0210 ipcomp_destroy +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x17c15f84 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x26c2b9b7 snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x3b680b37 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x4512a3fc snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x732fac36 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xc2716d03 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0357fa49 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0370af3b snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x06295c97 snd_hda_jack_add_kctl +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 0x069dbc9a snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x091e3d4d snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0cdb9674 snd_hda_check_board_codec_sid_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0e1f448c snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x10045738 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x113b1e82 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x11f1ede4 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1417d52d snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1510016a snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x18275245 snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x195b3ad0 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1a6ce50c snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1ad0e834 snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x219eb991 snd_hda_queue_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x222b6be5 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x251a793f snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x27783425 snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2a22fd5a snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2a6403cb snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2c107e7b snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2c5bf9c6 snd_hda_override_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2c94ead8 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2ca333dc snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x311d6776 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x32d4927b snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x33f1a06f snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x34ca2fa6 snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x35f64512 snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x363f28ce snd_hda_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38345674 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x387f393d snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3a882744 snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3b6aea67 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3c3ff44c snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4518699e snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x46d19c93 snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x48cafa7f snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4904329b snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4dab1f60 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4e1f9a1e snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4eab2d03 is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x502e9822 snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x52d682da snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5318e2ae snd_hda_delete_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x54da3c20 snd_hda_check_board_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x56e933c9 snd_hda_ch_mode_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x576cdbaa snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x582dc0b0 snd_hda_ch_mode_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5d000ace snd_hda_bus_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5e1e9c03 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5ecb6150 snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5fd21bb4 snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x62d65b0d snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x663b7c42 snd_hda_jack_tbl_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x669244c4 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x66aabded snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6b081f00 snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6c4580af snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6dde0978 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6e5cda87 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6ef6b066 snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x725f3ffd snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x729de499 snd_hda_codec_flush_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x76dc6871 hda_main_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7a6ef5ad snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7b7cce25 snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7bd6f3db snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7d1c51ce snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7f859d07 snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x871a6e44 hda_extra_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x888a330d snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x889de76f snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x89b371a5 snd_hda_get_sub_nodes +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x89f5914f snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8a651675 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8a68d1f1 snd_hda_codec_resume_amp +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8c573859 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8d3e5028 snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e4c6826 snd_hda_calc_stream_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e7f90a1 snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8ea1114f snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8f0bc988 snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8f92378c snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x911b9391 snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x94069b26 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x96d1ab63 snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9791a9a5 snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x983b4112 snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9c97eddf snd_hda_is_supported_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9ce40ad5 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9d14f05e __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9f4aaf57 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 0xa4322622 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa45a3a6e snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa6404570 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa8308447 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa86af895 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa8c47947 snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaa016e1b snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xab5078b3 snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xabfef842 snd_hda_query_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xac55e12a snd_hda_gen_spec_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xac7ab353 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xadf2950d snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xae6cd568 snd_hda_sequence_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xafc8508b snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb13b2724 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb1ba7bd7 snd_hda_bus_reboot_notify +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb4b46038 snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb7be78e2 snd_hda_parse_generic_codec +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb7ec33a7 snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb8cae7db snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb98f6660 snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbcbf62b8 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbdebabc9 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc029fcf7 snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc652fd69 snd_hda_get_jack_connectivity +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc6cf10a1 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc9a6ad6e snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb26293e snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb301b6e snd_hda_get_jack_type +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcc449772 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcd6e86c4 snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcf3a6e5e snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd2399b5e snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd396c18b snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd5240fe1 snd_hda_codec_update_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd73271b4 snd_hda_codec_resume_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd8bf49ca snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd99c19ff snd_hda_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd9bbab19 snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdc6bf39d snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdf80152b snd_hda_resume +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe1fab72e snd_hda_suspend +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe3f0359d snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe7285792 snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe9150603 snd_hda_codec_amp_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe92806e2 snd_hda_codec_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe96f5cfc snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xedc2206f snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xee6cb5b4 snd_hda_ch_mode_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf149f64c snd_hda_add_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf3ce6e4e snd_hda_query_supported_pcm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf484c6f7 snd_hda_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf644189c snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf737e521 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf7b1f939 snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf98316a8 snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfaea8f80 snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfb2eb6fc snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfc51393a snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfc8f6fc2 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xffb7ebee snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/soc/atmel/snd-soc-atmel-pcm 0x6b0ce4ea atmel_pcm_mmap +EXPORT_SYMBOL_GPL sound/soc/atmel/snd-soc-atmel-pcm 0xdd8e7956 atmel_pcm_new +EXPORT_SYMBOL_GPL sound/soc/atmel/snd-soc-atmel-pcm 0xe4418825 atmel_pcm_free +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x495c3a29 wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0x6841deae wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/davinci/snd-soc-davinci 0x1b5248fa davinci_soc_platform_unregister +EXPORT_SYMBOL_GPL sound/soc/davinci/snd-soc-davinci 0x334c2c15 davinci_soc_platform_register +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra-pcm 0x748df2b8 tegra_pcm_platform_register +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra-pcm 0xa1b01193 tegra_pcm_platform_unregister +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra-utils 0x2646aafd tegra_asoc_utils_fini +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra-utils 0x6ca07d27 tegra_asoc_utils_set_rate +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra-utils 0x7a958fd3 tegra_asoc_utils_init +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra-utils 0x877e7fdc tegra_asoc_utils_set_ac97_rate +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra20-das 0x0d54c9b9 tegra20_das_connect_dap_to_dac +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra20-das 0xb52cfca4 tegra20_das_connect_dac_to_dap +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra20-das 0xbced7431 tegra20_das_connect_dap_to_dap +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra30-ahub 0x33e6f259 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 0x5cf6f91f tegra30_ahub_allocate_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 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 vmlinux 0x00000000 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x00000000 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x00000000 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x0011349d mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL vmlinux 0x0022a699 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x00604515 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x00632780 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x0070fd38 dev_pm_opp_find_freq_exact +EXPORT_SYMBOL_GPL vmlinux 0x007804d6 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x007e8ce8 dev_pm_opp_free_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0x0085857d pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x008ad5ab sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x00a0a251 mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x00c2496b ahci_start_engine +EXPORT_SYMBOL_GPL vmlinux 0x00c4dc87 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x00d48f33 omap_usb2_set_comparator +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x0107933b netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x0148adb6 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x014e66c5 register_mtd_user +EXPORT_SYMBOL_GPL vmlinux 0x01575d3b fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x016a1f69 omap_dm_timer_set_load_start +EXPORT_SYMBOL_GPL vmlinux 0x018145dc inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x018edcce cpdma_ctlr_dump +EXPORT_SYMBOL_GPL vmlinux 0x0190d09e kobj_completion_del_and_wait +EXPORT_SYMBOL_GPL vmlinux 0x0196a5bb phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x01a8e43a mtd_table_mutex +EXPORT_SYMBOL_GPL vmlinux 0x01afbd58 pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x01b5532f __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x01c6cb0c cpu_cluster_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01fc8aea ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x026672d2 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL vmlinux 0x026a08ac usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x02a60d30 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0x02c979f4 nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0x02f65cb6 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x02feec35 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x033d8eb5 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x0343388b sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x034771c6 ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x03552f3d usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x035c7efd ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x035f8002 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x037b0052 page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x039431d9 serial8250_rx_dma +EXPORT_SYMBOL_GPL vmlinux 0x039b8036 max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x03ab14f9 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x03bd8bc4 devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x03bf1d5e gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x03ce9c5b pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x0402b504 __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x0429750c md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x043c9806 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x04486e88 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0453cf25 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x045b452f of_clk_get_parent_count +EXPORT_SYMBOL_GPL vmlinux 0x045bf056 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x046c7ea9 subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x046fb474 device_move +EXPORT_SYMBOL_GPL vmlinux 0x0472caae of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x049d951c cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x04b0bef2 cgroup_taskset_first +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04dbafd3 snd_soc_jack_report +EXPORT_SYMBOL_GPL vmlinux 0x04e05e48 pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x04e1b99f snd_pcm_std_chmaps +EXPORT_SYMBOL_GPL vmlinux 0x04e56cd0 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL vmlinux 0x04e9c4a9 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x04ee5219 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x04fc9c9e snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL vmlinux 0x0539cd27 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x05411e8a pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x054c31c2 pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x054ece45 usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x055caa7e __scsi_get_command +EXPORT_SYMBOL_GPL vmlinux 0x0574068b cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0x05863b89 phy_put +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05a54ab9 ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0x05d629b3 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x060a60ac crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x06372e28 gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x063a70da ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x06438115 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x065ff142 regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x0674afb3 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x0677fed3 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x068af90a mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x06982fea pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x06aab713 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x06aad7c0 pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x06c7445a pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x06d549e6 pinctrl_free_gpio +EXPORT_SYMBOL_GPL vmlinux 0x06dceffb snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL vmlinux 0x070f3b09 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x07238fa2 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x07455fa9 srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x074c8421 usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x074db248 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x075481cc generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x07623f7a __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x07a114ae deregister_mtd_blktrans +EXPORT_SYMBOL_GPL vmlinux 0x07a246d8 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07c1fcd6 irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x07d312a0 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x07d7a5dc fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x07eb5778 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x07ed48c3 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x07f982c2 ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0x08009637 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0x082a8705 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x082f1ccd omap_uninstall_iommu_arch +EXPORT_SYMBOL_GPL vmlinux 0x08573700 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x0863d717 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x0877bf67 mdio_mux_init +EXPORT_SYMBOL_GPL vmlinux 0x0897c7a3 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x0899f091 hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x08c9b1e3 __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x09250ad9 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x09264554 ata_pci_sff_init_one +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 0x09949469 devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x09955334 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x09b32e28 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL vmlinux 0x09da7f4b pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0x09e16cf0 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x09e913c1 snd_pcm_alt_chmaps +EXPORT_SYMBOL_GPL vmlinux 0x0a237d04 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x0a31bc23 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x0a9fd3c5 gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x0ae4e60f arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x0afa94c0 musb_dma_completion +EXPORT_SYMBOL_GPL vmlinux 0x0afd03e6 dm_dispatch_request +EXPORT_SYMBOL_GPL vmlinux 0x0afd4610 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b12a18d ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x0b138ecf lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0x0b401306 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x0b59390b __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0b72db6f regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x0b74ef77 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x0b7e0da4 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0b85ed03 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0x0ba4e2b0 regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x0ba8374b __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x0bae62b1 ktime_get_monotonic_offset +EXPORT_SYMBOL_GPL vmlinux 0x0bbae511 return_address +EXPORT_SYMBOL_GPL vmlinux 0x0bd1683f regulator_set_voltage_sel_regmap +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 0x0c5334f7 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0x0cb05a9c extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cce0227 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x0cd21903 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x0ce34e5d regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x0cf5b1a5 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0d105bf4 snd_soc_cnew +EXPORT_SYMBOL_GPL vmlinux 0x0d15a25f fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x0d2260e3 md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x0d2d91a0 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x0d6240c0 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x0d9d852e subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x0dbd0e20 of_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0e0de1bc ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x0e13ab29 ahci_platform_resume +EXPORT_SYMBOL_GPL vmlinux 0x0e5405bb __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x0e77806e fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x0e7bb2b0 ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0x0e85b4ee rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x0e93f145 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0ea862bd ahci_shost_attrs +EXPORT_SYMBOL_GPL vmlinux 0x0ed36b2f call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x0ed9302e percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0x0f15681d led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0x0f46fb4d pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f8c2464 tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x0fa73125 crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x0fa9ed41 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL vmlinux 0x0fafb9b6 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x0fc01e9f static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x0fc3bd35 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x0fd509b4 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x0fe112dc of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x0fe65e8c synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x0ff9af09 cpdma_ctlr_int_ctrl +EXPORT_SYMBOL_GPL vmlinux 0x0ffdc857 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0x1009add4 pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x1018fefd iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0x1026c1d9 srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x1047a84b snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL vmlinux 0x104dd00d regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x10ad5e90 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x10f3b60c flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x11303a81 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x113d4043 snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL vmlinux 0x11408eaf ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0x1150dfd6 gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0x116d4458 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x1179530b snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL vmlinux 0x11896c0e device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x1195b25f fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x11caaa0f blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x11cd0101 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x11cf193b irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x11d7f357 snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL vmlinux 0x1204b630 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x1216c608 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x121cd964 of_pci_range_parser_one +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x121ed3f3 add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0x122966a0 tpm_store_cancel +EXPORT_SYMBOL_GPL vmlinux 0x122a3634 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x12587413 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x125d89cb usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x12714715 unregister_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0x1279b57e sdhci_pltfm_free +EXPORT_SYMBOL_GPL vmlinux 0x127f06bc snd_soc_suspend +EXPORT_SYMBOL_GPL vmlinux 0x129e304e ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x12c37a84 vchan_find_desc +EXPORT_SYMBOL_GPL vmlinux 0x12c50d82 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x130150e2 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x1304a5ba unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x1309caa3 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x13286c82 devm_snd_soc_register_component +EXPORT_SYMBOL_GPL vmlinux 0x13354608 scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0x1337c067 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x133a1c78 omap_install_iommu_arch +EXPORT_SYMBOL_GPL vmlinux 0x133de1ea spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1343e9b0 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x13530710 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x1382f28b dm_underlying_device_busy +EXPORT_SYMBOL_GPL vmlinux 0x13921363 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x13a8b946 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x13af9f3c gpiochip_add_pin_range +EXPORT_SYMBOL_GPL vmlinux 0x13b5bb8f snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL vmlinux 0x13b89dee pinctrl_request_gpio +EXPORT_SYMBOL_GPL vmlinux 0x13c6ef3c pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0x13d316a2 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0x13d504f8 da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0x141ec143 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x142a8be4 of_clk_get_parent_name +EXPORT_SYMBOL_GPL vmlinux 0x142c9017 extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0x142d69f1 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x14396f33 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x146b26d6 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x1472ff58 iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0x14774ae7 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x14b37a52 pinctrl_pm_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0x14be10e7 tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0x14c26a8a ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x14d024d9 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x14ec5032 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x14f875ce devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x15044255 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x150d8456 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x1525f36d __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x153f3c8e tpm_release +EXPORT_SYMBOL_GPL vmlinux 0x155f1512 dev_pm_opp_init_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0x158683cc platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x15901c1f __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x159c654f sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x159f2e48 ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x15dbc5d9 nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0x15f3e265 vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x1611d87a snd_kctl_jack_new +EXPORT_SYMBOL_GPL vmlinux 0x1620359c deregister_mtd_parser +EXPORT_SYMBOL_GPL vmlinux 0x162e8c99 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x169bbe19 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0x16a71d6a pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0x16b1e692 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x16cec4f8 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x16d17552 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x16eb008c usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x170e9bea imx_usbmisc_init +EXPORT_SYMBOL_GPL vmlinux 0x1712e528 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x1719e710 ahci_platform_ops +EXPORT_SYMBOL_GPL vmlinux 0x1753a32f hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x177d095b __class_register +EXPORT_SYMBOL_GPL vmlinux 0x17cc8c5f tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x17e7724d rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x17f80573 reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x18192a1f __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x1846cb11 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x185f767c usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x187af527 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x189a2419 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x18a27f34 jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0x18f8df66 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x19191d83 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x19376db4 ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x1971e611 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19b384a5 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19f9c9ef usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x19ff90a3 get_mtd_device_nm +EXPORT_SYMBOL_GPL vmlinux 0x1a082d69 max77693_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x1a323362 __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x1a3d5b47 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x1a5b9bef of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x1a65920b omap_iommu_arch_version +EXPORT_SYMBOL_GPL vmlinux 0x1a972c1d ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x1aaf8068 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1ad83009 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x1af9268a pci_pri_enabled +EXPORT_SYMBOL_GPL vmlinux 0x1b2ec7ae ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x1b3193ff gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x1b3261e0 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x1b39c8f4 omap_dm_timer_set_pwm +EXPORT_SYMBOL_GPL vmlinux 0x1b415657 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x1b41fd6d ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x1b46fa6f securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x1b52db1c probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x1b54e284 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x1b7a1d9b devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0x1b8653a6 rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0x1b8822d8 pinctrl_gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1bb5fc26 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x1bb699f1 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x1bb99a3c devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL vmlinux 0x1bc5eebe pinctrl_gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x1bc8afd7 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x1bd06aab cpufreq_frequency_table_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x1bdbe347 of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x1c1aeda7 pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x1c200d12 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c6894e2 irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c8f2e2d evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x1cdbb866 call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x1d0a02a5 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x1d131f24 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x1d293d93 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d5eb5c8 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x1d73daaf crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1da69714 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x1dad1ba0 tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x1de054d5 of_clk_del_provider +EXPORT_SYMBOL_GPL vmlinux 0x1dfe02b1 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1e065d2d device_rename +EXPORT_SYMBOL_GPL vmlinux 0x1e10b2fa list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x1e10d72c serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x1e3a3a49 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x1e3a88fb trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x1e49165a blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e5bd2a7 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x1e5d38ff dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x1e6bbba9 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x1e7999c1 sec_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e8fac8e wireless_nlevent_flush +EXPORT_SYMBOL_GPL vmlinux 0x1e92f8a0 usb_stor_pre_reset +EXPORT_SYMBOL_GPL vmlinux 0x1e94e3b4 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x1eb1594f gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ecbb579 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x1ed4ba5a fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x1edcd9e6 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x1eeaf936 pinctrl_lookup_state +EXPORT_SYMBOL_GPL vmlinux 0x1ef0adcc spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x1f37286e register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x1f67c827 iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x1f7de1ea virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1fbe31f7 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x1fc9f36d raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x1fcece42 inet_twdr_twcal_tick +EXPORT_SYMBOL_GPL vmlinux 0x20011ef0 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x20190af1 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x201d8ea3 encode_rs8 +EXPORT_SYMBOL_GPL vmlinux 0x20284082 regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x203539c2 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x203c5ef3 pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x20441ffc ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x20bc3470 orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x20c0cba1 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x20c6a010 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0x20c9a693 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x20e7d89f devres_find +EXPORT_SYMBOL_GPL vmlinux 0x20f199df ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x21181450 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x212ec533 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x2138eda2 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x213bddf0 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x21481b58 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x21613a74 blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21c409be dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x2231e2ef attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x226a674d atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x229236a1 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x229ae0dd sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x22c16ecb dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x22d015b4 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0x22d7d0ff dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x22e563ba relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x2319e2ec smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL vmlinux 0x231db0a5 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0x2328fb49 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x232c4b3a device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x233171ba i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x233b4a17 vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x2354f87c scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x23679939 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0x236904e2 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0x2378e6cc tpm_open +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x238c308e crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x238c5b14 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x23926810 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x2392bc6e pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x23a78ba5 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x23d03b35 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x23df1d49 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0x23f59fbc exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x2447533c ktime_get_real +EXPORT_SYMBOL_GPL vmlinux 0x244c5eba bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x2476a232 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x249fc06d snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24c119e0 __tracepoint_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0x24d443ad thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0x24eb0176 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f16ce5 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x24f61f90 balloon_devinfo_alloc +EXPORT_SYMBOL_GPL vmlinux 0x24f7df43 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL vmlinux 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL vmlinux 0x2543588a crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x254e37dd omap_dm_timer_set_int_disable +EXPORT_SYMBOL_GPL vmlinux 0x25695bf8 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x2570647f pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x25e4fa8c btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x2640afb1 ping_close +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x26597d4e iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0x265ebbfa ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x2685d38e devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x268792a9 device_create +EXPORT_SYMBOL_GPL vmlinux 0x26adb815 thread_notify_head +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26badcaa devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x26c547c0 bL_switcher_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26dd67f2 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x26f68055 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x26ff9d2d context_tracking_enabled +EXPORT_SYMBOL_GPL vmlinux 0x2712b2f9 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x2756adba platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x275c118a dm_set_device_limits +EXPORT_SYMBOL_GPL vmlinux 0x27654700 mtd_erase_callback +EXPORT_SYMBOL_GPL vmlinux 0x277bbdd1 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0x2787db00 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x278dd59c ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x2799a757 ahci_platform_disable_resources +EXPORT_SYMBOL_GPL vmlinux 0x27a7ee49 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x27c00584 ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x28656215 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x287d0294 of_console_check +EXPORT_SYMBOL_GPL vmlinux 0x2883dfc4 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0x28852a0e da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x28a82da4 snmp_mib_init +EXPORT_SYMBOL_GPL vmlinux 0x28a903c8 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0x28c913bf inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x28d010d2 snd_soc_get_value_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x28ebc170 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x29047f1a __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x2914667c dapm_clock_event +EXPORT_SYMBOL_GPL vmlinux 0x292477f1 mmput +EXPORT_SYMBOL_GPL vmlinux 0x296d3f8a blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x29759185 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x2981359b snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0x29e6a5b9 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x29f13e83 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x29fa419f decode_rs8 +EXPORT_SYMBOL_GPL vmlinux 0x2a504ad2 init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a87f12a usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x2a97b684 devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2aa5c731 devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0x2ad1ece4 zs_get_total_size_bytes +EXPORT_SYMBOL_GPL vmlinux 0x2ad9d326 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x2adda44f sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0x2aee8588 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x2afad589 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x2b5db214 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x2b7a6de8 syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x2b807061 dapm_regulator_event +EXPORT_SYMBOL_GPL vmlinux 0x2b9c6a79 irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2babe81f __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x2bd772a0 ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x2bfaef4e clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x2bfb29ea blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x2bfe0d51 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c264ed9 pinctrl_pm_select_idle_state +EXPORT_SYMBOL_GPL vmlinux 0x2c3b3561 pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0x2c475a78 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0x2c512985 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x2c66ace0 iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x2c6ecae7 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c8b5919 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL vmlinux 0x2cc2ca08 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x2cceaca7 of_irq_parse_and_map_pci +EXPORT_SYMBOL_GPL vmlinux 0x2cd211d8 pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x2cd329be usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x2cda49f0 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2cf85e0c sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x2d014d3d usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL vmlinux 0x2d14c555 ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x2d17a0e1 cgroup_taskset_size +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d3c1abb ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d47851f serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x2d4ad8f8 pinctrl_get_group_pins +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d801065 tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x2d93d642 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x2dbf422f pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0x2e083920 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2e20e0fa crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x2e278f88 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x2e2ba509 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e33b973 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x2e3bc2a4 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x2e45e488 rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x2e5fd54f iommu_map +EXPORT_SYMBOL_GPL vmlinux 0x2e8b8e2d usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x2e9670c0 pl320_ipc_transmit +EXPORT_SYMBOL_GPL vmlinux 0x2e9c90f7 snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ed1bb18 snd_soc_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x2ef6085d pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x2ef6b5bf smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x2efe7340 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f2858a3 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x2f30b97c sec_reg_update +EXPORT_SYMBOL_GPL vmlinux 0x2f3f2536 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f44c0c6 perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0x2f84d25a omap_dm_timer_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x2f91085e fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x2fbc88c5 ahci_stop_engine +EXPORT_SYMBOL_GPL vmlinux 0x2fbcbf33 mtd_write +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x3006b6f5 of_pci_get_devfn +EXPORT_SYMBOL_GPL vmlinux 0x300be588 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x300d7e57 free_rs +EXPORT_SYMBOL_GPL vmlinux 0x3011c6e6 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0x3029599d regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x30381f47 snd_soc_cache_sync +EXPORT_SYMBOL_GPL vmlinux 0x3041b75b crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x306097c2 device_register +EXPORT_SYMBOL_GPL vmlinux 0x30693bb7 imx_audmux_v1_configure_port +EXPORT_SYMBOL_GPL vmlinux 0x30702d8a unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x308822ad devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x308b733a getboottime +EXPORT_SYMBOL_GPL vmlinux 0x30950a3f irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x30a4f4ca bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x30b364c3 sdhci_remove_host +EXPORT_SYMBOL_GPL vmlinux 0x30d1fff0 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x30e60b80 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x30eb0980 tegra_pinctrl_remove +EXPORT_SYMBOL_GPL vmlinux 0x3105c9fd __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x31061da4 pinctrl_dev_get_name +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x313126be single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x3146aa58 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x314b754b bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x318d6962 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x31a820ed register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x31ab2a57 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x31be35d5 of_get_named_gen_pool +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31cd3bdc skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x31d2d6c1 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x31d7094c mtd_unlock +EXPORT_SYMBOL_GPL vmlinux 0x31f407f2 tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x320c98f9 extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x322194c6 usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0x3225cf47 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x322f3511 __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0x3256bb5d rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3256ca45 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x3262ed4b tpm_register_hardware +EXPORT_SYMBOL_GPL vmlinux 0x3268087d ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x326bceeb musb_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3279dd34 driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x3295fef4 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x329bbbde timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0x32b31a8c ktime_get_boottime +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32c496f1 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x32cb00e0 devm_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x32f23353 dev_get_gen_pool +EXPORT_SYMBOL_GPL vmlinux 0x32fd447a monotonic_to_bootbased +EXPORT_SYMBOL_GPL vmlinux 0x333908e6 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x3356f86e sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x33611972 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x338db54e inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x339c157b device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x33b7c4ea usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x33ba0ced extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x33ce1a56 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x3409d5ad serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x341643ba omap_dm_timer_modify_idlect_mask +EXPORT_SYMBOL_GPL vmlinux 0x343a931c shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0x34513d47 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x34691031 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL vmlinux 0x34711747 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x34731fcd cpdma_ctlr_create +EXPORT_SYMBOL_GPL vmlinux 0x3479db81 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x347be17f mtd_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x348bc8e9 iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x34ac50a4 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x34b12a88 fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x34cc3702 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL vmlinux 0x34de2387 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x34ff85a4 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x35077268 swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x351e6b5a edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x353edd9a phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0x354b52b8 devres_add +EXPORT_SYMBOL_GPL vmlinux 0x35872410 snd_soc_codec_readable_register +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35c0fed1 device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x35c21901 pinctrl_force_default +EXPORT_SYMBOL_GPL vmlinux 0x35f10f43 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x35f165f1 devm_reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x35fb50ed power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x360d9ab4 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x3614b520 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x362e4eb2 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x363692df of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0x36446f32 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x36788f81 snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36a915d2 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x36af19ae eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x36c30919 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x36e274a1 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x3708597a handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x37293bb4 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x374a55f0 iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0x37763651 od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x37b52bc4 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x37bcdf38 phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0x37cf8abd tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x37e812ce tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x381a6a8d irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x38302372 ftrace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x38480817 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL vmlinux 0x38a9c2c7 input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x394178c5 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x397373c0 dapm_reg_event +EXPORT_SYMBOL_GPL vmlinux 0x39864018 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x399d9a24 __get_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x39b633ed dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x39dc6710 wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x39ebf5a6 crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0x39f306bc pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x3a00b875 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x3a0aac0d blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x3a12d49d gpio_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a42be56 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3a46ce65 tty_prepare_flip_string_flags +EXPORT_SYMBOL_GPL vmlinux 0x3a4c3edb bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0x3a4c6000 of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a616348 sec_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x3a91684b of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0x3ab03e02 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ad82802 of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0x3af7576e ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x3b0fb9af napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x3b180c8c led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3b19ee01 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x3b4aee4a serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x3b73fe74 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x3b99d023 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x3bcbd4df sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x3bcc5e79 scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x3bfe4c40 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x3c39c429 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x3c831441 arm_check_condition +EXPORT_SYMBOL_GPL vmlinux 0x3c8424a0 clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3c8d28cc of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3ca17104 __snd_printk +EXPORT_SYMBOL_GPL vmlinux 0x3ccffec8 of_irq_parse_one +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3ce5c096 i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0x3cfd1818 pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x3d0d7725 arm_iommu_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x3d29bb9d dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3d2c3e1f virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d41b4f9 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x3d4256e9 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x3d662141 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x3d7034f5 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x3dbcd33a da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x3dc526a9 arizona_of_match +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dd239f2 mtd_lock +EXPORT_SYMBOL_GPL vmlinux 0x3dd4d3a7 bprintf +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3e1261d1 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x3e2d9dc3 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x3e2fa31f wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3e452a00 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x3e4d61c7 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x3e524fe2 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x3e599ded vtime_guest_enter +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e9574dc sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x3e971b8d regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x3eaa91e6 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x3ec10e17 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f00a639 xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x3f0208ae class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x3f097e5e usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x3f0e31be thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x3f1c22a1 thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0x3f319ba6 regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x3f4f1e8c usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x3f5633aa sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x3f61c2f3 regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3f620a84 disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x3f69c73a unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x3f79c567 ahci_platform_disable_clks +EXPORT_SYMBOL_GPL vmlinux 0x3f7d4ca2 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x3f86cf94 pskb_put +EXPORT_SYMBOL_GPL vmlinux 0x3ff46e55 tpm_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x40440fce amba_device_put +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x406e259f nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x40752f20 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x407a3e19 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40b1e586 register_mtd_blktrans +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x40fee4fa xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x416faf66 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x4179b1e0 ulpi_viewport_access_ops +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x419bd995 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL vmlinux 0x41a2ed20 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x41a3e193 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x41b5dc32 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x41c0b0ba do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x41dd51d8 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x41e0a509 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x420ca256 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x4219ff58 omap_dm_timer_request_specific +EXPORT_SYMBOL_GPL vmlinux 0x42267f74 udc_attach_driver +EXPORT_SYMBOL_GPL vmlinux 0x42312cb0 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x4272413b usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x4282e3c9 sec_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x42896be1 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x428c6dbc cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x42a9a163 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x42b364ef scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x42c9d405 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x42d3d92f regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x42dcbae4 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x42e02528 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x42ed14bd sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0x42f6cae2 ahci_platform_resume_host +EXPORT_SYMBOL_GPL vmlinux 0x4304286f filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x430e5257 of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0x431289dd digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x43166e83 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x4351ebea i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x43a198fe rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43b6d05c platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x43e3a299 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x43ecf183 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x4403961e sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x44342182 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x44404f11 kdb_register_repeat +EXPORT_SYMBOL_GPL vmlinux 0x44473c85 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x444f1735 cpu_pm_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4475e427 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x4483051d ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x4499b655 dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x44d44f71 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL vmlinux 0x45319a76 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x454ae361 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0x454c15ae __smp_call_function_single +EXPORT_SYMBOL_GPL vmlinux 0x455794a6 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x4572f2a3 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x457b77ca of_fixed_factor_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0x45ba1367 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0x45bc3f8e sysfs_schedule_callback +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45cac323 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x45ea81b1 usb_stor_CB_transport +EXPORT_SYMBOL_GPL vmlinux 0x46066e5b perf_pmu_name +EXPORT_SYMBOL_GPL vmlinux 0x460f7531 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x4630c38e usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x464b1748 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0x464d0daa mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x4685ac17 blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x46b3439b max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x46d93ba1 ahci_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x46ddf02d md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x470fa426 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x471b2620 user_match +EXPORT_SYMBOL_GPL vmlinux 0x471c9f95 usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x474e0084 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x4751ffca snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x477a6ec6 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47bc691b ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x47c22927 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x47d1c851 mtd_read_oob +EXPORT_SYMBOL_GPL vmlinux 0x480a0de6 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x481b0bac tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x482467c0 stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0x48440571 need_load_eval +EXPORT_SYMBOL_GPL vmlinux 0x486f2595 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x4873adf0 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x4878acad snd_soc_put_volsw_s8 +EXPORT_SYMBOL_GPL vmlinux 0x488327a1 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x48868899 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x48af4593 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x48ba2763 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x48be390a unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x48c008c3 virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0x48ca8947 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x48f62e5c ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x4923f2d9 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0x492bb2f2 cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0x492dfd91 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL vmlinux 0x49417412 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x4946da71 omap_iotlb_cr_to_e +EXPORT_SYMBOL_GPL vmlinux 0x4969ecf0 mtd_blktrans_cease_background +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 0x4a231e83 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x4a30398f snd_soc_info_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x4a38ac7c platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x4a73adbf ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4ab1a16b usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x4ab5e3ed ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x4acc2d47 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x4ae83c27 snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x4b17b645 of_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x4b2e64a4 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x4b51d5d3 pin_is_valid +EXPORT_SYMBOL_GPL vmlinux 0x4b6f7a74 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x4b78100d gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x4b81b2f1 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x4b834b0c blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x4bafcdd8 btree_update +EXPORT_SYMBOL_GPL vmlinux 0x4bb586d2 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x4bba7c6a tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0x4bc62a81 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x4bff4b40 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x4c0a51a7 usb_stor_CB_reset +EXPORT_SYMBOL_GPL vmlinux 0x4c1f5b1d thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0x4c2ba05c disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x4c2e1f24 clk_disable +EXPORT_SYMBOL_GPL vmlinux 0x4c2ea426 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x4c44cd11 wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x4c47ec15 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4ca4c9df clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x4ca65a24 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x4ccdfcf6 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0x4ce2b8de wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x4cf451c7 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x4d094f8c inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0x4d18907f ci_hdrc_add_device +EXPORT_SYMBOL_GPL vmlinux 0x4d1d593f inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x4d256213 tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x4d38f1e0 bL_switcher_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4d4bf568 ahci_init_controller +EXPORT_SYMBOL_GPL vmlinux 0x4d66da34 omap_dm_timer_read_counter +EXPORT_SYMBOL_GPL vmlinux 0x4d7d5d82 css_next_child +EXPORT_SYMBOL_GPL vmlinux 0x4dba5437 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x4dba88b1 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x4dcca1c6 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4df773c4 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x4dfb5ad6 bio_trim +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e1dcd69 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e3acdca ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x4e65af05 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x4e67d750 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x4e7aa053 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x4e7c39c9 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x4e8331d2 adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x4e992228 proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0x4ead5708 blkdev_aio_write +EXPORT_SYMBOL_GPL vmlinux 0x4ebaab61 blk_queue_bio +EXPORT_SYMBOL_GPL vmlinux 0x4eea8258 snd_soc_info_volsw +EXPORT_SYMBOL_GPL vmlinux 0x4eee58c7 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x4ef29549 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f020dee public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x4f2b6c7a dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x4f524926 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x4f6172ff crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0x4f98d766 cpu_pm_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4fa09a3d alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0x4fc52e8d __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fd9c16b dapm_mark_io_dirty +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4feae6ba device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x4fec4aa0 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x4ff126f5 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x4ff62b94 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x5017afbb regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x5022fce5 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x504f3b67 devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x5053e2a6 leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x50601122 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x50612a68 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x506691f1 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x506b06ef inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x506cc085 tracepoint_iter_stop +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50a8dbfe blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x50ba9a99 amba_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x50c89f23 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x50df07d9 omap_dm_timer_start +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x511b7420 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL vmlinux 0x51239579 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x512cd6da __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x512cf16c wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x51493084 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x515b28c3 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x515b4a90 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0x516f7537 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x5180811b usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x5184c11c ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x5189bc98 devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0x51a327a5 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x51db093c sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x51e4c49b snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL vmlinux 0x51e4e101 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0x51ee2498 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x5200c3b4 usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x520d3347 usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x52120583 of_get_display_timings +EXPORT_SYMBOL_GPL vmlinux 0x52212010 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x522f0f31 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0x5243d3b7 css_next_descendant_post +EXPORT_SYMBOL_GPL vmlinux 0x5272d8bc __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0x52a41251 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x52b1001f driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x52c0d5d8 scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x52d066f7 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x52fb807d use_mm +EXPORT_SYMBOL_GPL vmlinux 0x53290fa7 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0x5350e361 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x5360c3f4 usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x53614ed9 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL vmlinux 0x537b8ae6 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x53857aa0 pwm_config +EXPORT_SYMBOL_GPL vmlinux 0x538b624c __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x53922106 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x53992393 mtd_read +EXPORT_SYMBOL_GPL vmlinux 0x53bfefe0 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x53db8675 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x5414f0ac get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x5424ffbc fixed_phy_set_link_update +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 0x5469c583 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x54704c0e regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x5478b0a6 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54e21dbd bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x54e6fcc2 regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0x54eada43 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x54ebda6b bgpio_remove +EXPORT_SYMBOL_GPL vmlinux 0x54f75c51 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x550c54ec regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5510b0cc usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5548aded ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x55777e01 list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x559182aa key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x55a5b867 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x55ae9387 skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0x55f04c21 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x5600dc89 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x560647d8 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x561e4b77 irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x5641485b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x564b7f74 __put_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x564f1dca klist_add_after +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x566596ca regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x5692386f gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0x56967dc3 fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x56b63670 lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x56c731a9 snd_soc_remove_platform +EXPORT_SYMBOL_GPL vmlinux 0x56cc2c50 devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56dab1d1 put_pid +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56e9103b cpu_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x56eaf6fe __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x56f993b8 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x56fd0fad blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x56fe5359 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x570afd6c usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x57121d45 cgroup_add_cftypes +EXPORT_SYMBOL_GPL vmlinux 0x5712d6aa regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x57552937 omap_dm_timer_request_by_node +EXPORT_SYMBOL_GPL vmlinux 0x5756259a iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0x575977fe regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57ea8952 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0x57ed420a __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x57f6f461 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x57f831de dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x580650aa iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x582be91b wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0x582d17e6 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x582dd529 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x5831486d inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x584d15ac pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0x585e2918 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x58631dab imx_audmux_v2_configure_port +EXPORT_SYMBOL_GPL vmlinux 0x58743c07 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x587775d8 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x587b9128 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58af8067 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x58f8bb1c skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x58f9cee8 regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x5932304a blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x593e0033 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x5947abbe max77693_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x594e97cb fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x59515359 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x597a435d usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x598c81b4 snd_soc_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x59959d0a cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x59a6e91d clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x59f8c11b ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x59fd4970 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x5a100627 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x5a3cfaea ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x5a4bdd50 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x5a6ca033 __rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a7ee8e8 find_module +EXPORT_SYMBOL_GPL vmlinux 0x5a8f213c cpdma_ctlr_eoi +EXPORT_SYMBOL_GPL vmlinux 0x5a8f3b69 of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0x5aa36123 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x5acf6567 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x5afb47fc of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0x5b03cdfb raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x5b0c14c0 snd_soc_dapm_kcontrol_codec +EXPORT_SYMBOL_GPL vmlinux 0x5b0f7744 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x5b18fd2c __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x5b1cfbcd of_get_fb_videomode +EXPORT_SYMBOL_GPL vmlinux 0x5b4bf06d mtd_del_partition +EXPORT_SYMBOL_GPL vmlinux 0x5b4e379c of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0x5b62d3de default_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x5b66a466 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x5b7dd4f4 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x5b829403 usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x5b8a432b power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x5b8a6cf1 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x5bcc5858 fuse_conn_kill +EXPORT_SYMBOL_GPL vmlinux 0x5bd346a2 pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x5bea2d1c tpm_show_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x5bed3e3e dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x5bf33790 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x5c1877ff dm_kill_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0x5c2fe4a5 cpdma_chan_stop +EXPORT_SYMBOL_GPL vmlinux 0x5c4d9823 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x5c80b018 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cc94215 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x5cc9995a usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x5cccca8d fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x5cd81b93 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x5ceedeb2 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x5d03bf75 device_reset +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d1ad86b sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x5d1c1bac blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x5d24e024 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x5d519de8 of_init_opp_table +EXPORT_SYMBOL_GPL vmlinux 0x5d51bcf7 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0x5d6d8ed3 blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5d8746f6 omap_dm_timer_set_load +EXPORT_SYMBOL_GPL vmlinux 0x5d950433 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5dc4b7d1 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x5dc54637 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5dcceba4 devm_snd_soc_register_card +EXPORT_SYMBOL_GPL vmlinux 0x5de182f5 tpm_show_temp_deactivated +EXPORT_SYMBOL_GPL vmlinux 0x5dea1a83 device_add +EXPORT_SYMBOL_GPL vmlinux 0x5e233bbc ahci_platform_init_host +EXPORT_SYMBOL_GPL vmlinux 0x5e23d215 tcp_init_congestion_ops +EXPORT_SYMBOL_GPL vmlinux 0x5e2ee50b ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x5e3ad14d mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5ea40cfa crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x5eacba1f ahci_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x5f16aa22 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x5f248f72 set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0x5f419491 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x5f59fd76 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x5f5ac12e snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x5f5cfac1 pinctrl_utils_reserve_map +EXPORT_SYMBOL_GPL vmlinux 0x5f6cdbd5 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x5f7a0da8 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0x5fb35c40 tegra_ehci_phy_restore_start +EXPORT_SYMBOL_GPL vmlinux 0x600e10fb sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x603a1e9c snd_soc_register_component +EXPORT_SYMBOL_GPL vmlinux 0x603bf9df aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x60559a8c aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x605f0ef9 omap_dm_timer_free +EXPORT_SYMBOL_GPL vmlinux 0x60677318 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x6068e1b0 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x6075d0c7 omap_tll_init +EXPORT_SYMBOL_GPL vmlinux 0x6090e976 snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL vmlinux 0x6094685f wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60d1d2df driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x60dd2340 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x6100d107 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x610ee164 ahci_check_ready +EXPORT_SYMBOL_GPL vmlinux 0x6112d5f7 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x612ef7e7 regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x61480a76 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x616e5e53 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x619b7627 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x61bb6924 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x61bec84e usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x61bf689d bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x61d572bc tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x6221f385 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL vmlinux 0x62285031 device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6238769b inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x624a6406 hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x62a3b992 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x62c0a9f9 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x62ca956a transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x62caa0d9 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x62cfca54 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x62ec0784 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x62f6d198 snd_soc_cache_read +EXPORT_SYMBOL_GPL vmlinux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL vmlinux 0x63205de1 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x6329dcef single_release_net +EXPORT_SYMBOL_GPL vmlinux 0x63361d30 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x633f8186 amba_apb_device_add +EXPORT_SYMBOL_GPL vmlinux 0x6359bda3 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x637d0d20 ahci_reset_controller +EXPORT_SYMBOL_GPL vmlinux 0x6390efda of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0x63ada971 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x64256424 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0x644451bc rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6456c3ad pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x646ad293 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL vmlinux 0x646ce2f0 of_get_display_timing +EXPORT_SYMBOL_GPL vmlinux 0x647537f3 pl320_ipc_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x64c70ce7 extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x64cd7610 __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x64d1c7f5 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x650fb819 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x65191ff5 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x65222383 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x6544b119 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x6553cb29 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x655a2ff7 sk_unattached_filter_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6577e256 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x65ae2402 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65c72f4c sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x66014fbe sdhci_pltfm_init +EXPORT_SYMBOL_GPL vmlinux 0x660a7cda skb_gro_receive +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x66194baa thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x662a0c3f x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x6643b264 tpm_show_enabled +EXPORT_SYMBOL_GPL vmlinux 0x664ea891 ata_sas_port_async_resume +EXPORT_SYMBOL_GPL vmlinux 0x665211ce cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x66793216 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x667c6967 vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x66ae0985 amba_device_add +EXPORT_SYMBOL_GPL vmlinux 0x66c9a281 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL vmlinux 0x66d3650a wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x670ee745 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x671143d9 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x67128609 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x67169078 pci_pri_status +EXPORT_SYMBOL_GPL vmlinux 0x6748c0ae shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6751a492 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x67643d26 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x67847551 snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67983564 sdhci_get_of_property +EXPORT_SYMBOL_GPL vmlinux 0x679afea5 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x6809f8c2 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x680b0b1c ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x6812cf8d __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x6825e231 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x68393ad4 ahci_reset_em +EXPORT_SYMBOL_GPL vmlinux 0x687934e9 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x68956406 static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x68a0e32d tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x68b1e67f da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x68d3ebf3 usb_stor_suspend +EXPORT_SYMBOL_GPL vmlinux 0x68e47b2c cpdma_ctlr_destroy +EXPORT_SYMBOL_GPL vmlinux 0x68f2edcd spi_register_driver +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 0x694be42a usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0x694f4e26 ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0x694f923e ahci_thread_fn +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x69c3368a snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL vmlinux 0x69d72419 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x69e9a2cb ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x69fe1281 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x6a0053fa class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x6a06f037 css_rightmost_descendant +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a19e1e8 omap_dm_timer_set_int_enable +EXPORT_SYMBOL_GPL vmlinux 0x6a1a64dd phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a69926c pci_pri_stopped +EXPORT_SYMBOL_GPL vmlinux 0x6a9c54c2 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x6ae59347 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x6af0943f sec_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b4d3a72 ci_hdrc_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x6b5f85ed devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6b6d5a37 platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL vmlinux 0x6b9e7ad7 of_clk_src_simple_get +EXPORT_SYMBOL_GPL vmlinux 0x6bac18bf fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x6baf08c7 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x6bb1c490 snd_soc_codec_volatile_register +EXPORT_SYMBOL_GPL vmlinux 0x6bb6afe4 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x6bf37d90 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x6c0f6abb pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x6c1b09ab gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x6c328197 ahci_platform_get_resources +EXPORT_SYMBOL_GPL vmlinux 0x6c49c4f2 clockevents_notify +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c749afe __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x6c824310 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x6c8d981c hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6c9a29a9 __netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x6c9c34a9 usb_gadget_map_request +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6cc78c5c set_irq_flags +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6cd4ea62 wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x6cf6c4c1 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x6d1f027c i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d31e93b tracepoint_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x6d32fae9 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x6d339861 __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0x6d4741e6 pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x6d75bdff ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x6d8d3053 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL vmlinux 0x6d8faf19 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x6da52296 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x6dc58d19 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x6dfdd58b regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e052b87 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x6e05c4e7 ahci_hw_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x6e503072 snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL vmlinux 0x6e5349c2 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x6e65c57d omap_dm_timer_request +EXPORT_SYMBOL_GPL vmlinux 0x6e7943ec iommu_group_id +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e8adbb2 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x6eb4a624 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x6ec672e9 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x6efec112 virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0x6f144fd3 tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f1ff096 of_irq_parse_pci +EXPORT_SYMBOL_GPL vmlinux 0x6f2aa23c ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x6f3a1919 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x6f88d3c7 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x6fb069d7 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x6fbb3bd9 init_rs_non_canonical +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x70068643 devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x700f5900 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL vmlinux 0x702a7b21 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0x70540a7a tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x7064b418 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x706e6f8a tpm_show_caps +EXPORT_SYMBOL_GPL vmlinux 0x7073d3e4 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x70979443 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x709b9d4e cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x70b4406e ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x70bb651d __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x70bb9724 snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL vmlinux 0x70c3ca7a stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70d1b418 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x70d45c8b mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x70d68869 da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x70d85f89 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0x70d9507c usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x70e34390 snd_soc_put_strobe +EXPORT_SYMBOL_GPL vmlinux 0x70e5ef52 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x70eac68b usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x70f22921 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x70f563b8 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL vmlinux 0x70f78166 usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL vmlinux 0x71008581 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7127e664 dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0x71558ab2 ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0x715c58ef omap_dm_timer_stop +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x71666580 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x716da88c twl6040_get_clk_id +EXPORT_SYMBOL_GPL vmlinux 0x71930ed3 of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x71993b14 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x71a79ff9 devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x71c0f45e pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x71c45e9c regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x71e36225 public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0x7244706e pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x725d0ee9 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x7267db00 hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x7291019b __cci_control_port_by_index +EXPORT_SYMBOL_GPL vmlinux 0x72b31731 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x72bdf2a0 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x72c5ed48 ref_module +EXPORT_SYMBOL_GPL vmlinux 0x72c6540b ahci_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x72ca61c9 __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x72de64bb unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x72f35130 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL vmlinux 0x730191d4 ahci_platform_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0x730bd0c7 asic3_write_register +EXPORT_SYMBOL_GPL vmlinux 0x73510609 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x7381eb3e __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x738b7a0c shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x738c0088 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x73946dc7 bgpio_init +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73dcc9f4 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x74046fdb dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x74169f84 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x7422c95e gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x74371db6 mtd_is_locked +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x744249ec xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x74628570 context_tracking +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x746db475 dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x74750d38 imx_usbmisc_init_post +EXPORT_SYMBOL_GPL vmlinux 0x74954462 timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74cbdafb ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x74e970ee fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x74eafce8 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x74fdd56d sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x75364b63 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x753e263d gpiochip_add_pingroup_range +EXPORT_SYMBOL_GPL vmlinux 0x756797df bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x7577e5a3 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x758e098a iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x75a4fd88 usb_stor_probe2 +EXPORT_SYMBOL_GPL vmlinux 0x75b5c30b tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x75bd9281 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x75c1078b ahci_platform_enable_clks +EXPORT_SYMBOL_GPL vmlinux 0x75c2b9f1 memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x75c8a11c inet_twdr_twkill_work +EXPORT_SYMBOL_GPL vmlinux 0x761e0aca btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x76210372 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x763b3453 wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x764928a2 cpdma_chan_create +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x76931198 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x76941618 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0x76b86789 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x76ba2880 omap_dm_timer_set_match +EXPORT_SYMBOL_GPL vmlinux 0x76d07d6e gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x76df8f13 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x76e77b9c sdhci_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0x76e9cf57 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x770cf981 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x771207f9 omap_iommu_save_ctx +EXPORT_SYMBOL_GPL vmlinux 0x771239e1 of_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x77164c4e pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x77165094 disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x7718cd58 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x77214cea sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0x7726bb42 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x77376535 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x7775737f subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x77803c0c __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x77a8eb30 omap_iopgtable_store_entry +EXPORT_SYMBOL_GPL vmlinux 0x77b9832f crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x77e2709d cpufreq_notify_transition +EXPORT_SYMBOL_GPL vmlinux 0x78368c02 dev_pm_opp_get_freq +EXPORT_SYMBOL_GPL vmlinux 0x7840b42c hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x784782ad blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x7849be54 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x7869752e scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x786e8962 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x78ad39c8 sdhci_add_host +EXPORT_SYMBOL_GPL vmlinux 0x78c8edb0 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x78fa4182 vtime_common_account_irq_enter +EXPORT_SYMBOL_GPL vmlinux 0x78fbce45 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x792dac76 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x794db74b dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x795f784c regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x796694fa irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x7973d2c4 nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x79b41464 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x79fc287e usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x7a06c3e5 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x7a0a1f51 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x7a115bd2 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x7a167cc0 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x7a2eace3 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a319404 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x7a35455b usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x7a431bb2 led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x7a4331ed usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x7a53173d snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7a7b6fb9 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x7a8ff1c3 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7a986a8c __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x7ab3ca18 eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x7ac8cbca debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x7ae1ae8e cpufreq_frequency_table_put_attr +EXPORT_SYMBOL_GPL vmlinux 0x7afec1bd usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b2fcea4 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x7b2fe006 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x7b53962a clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x7b6d1948 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x7b8040e1 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x7b868496 pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0x7bb02670 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x7be51c55 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x7bf248fb pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x7bffa592 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL vmlinux 0x7c1d5b4a fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x7c2177cd sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x7c227088 clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0x7c279dbf usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x7c2aade5 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x7c346357 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x7c46ca8a mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL vmlinux 0x7c48d646 snd_soc_platform_write +EXPORT_SYMBOL_GPL vmlinux 0x7c53de2a regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x7c6a49ce unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x7c81d9bd usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x7c964e20 sdhci_resume_host +EXPORT_SYMBOL_GPL vmlinux 0x7cc1b7fd max77693_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x7cc7de1c x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7ce5b92a gpiod_sysfs_set_active_low +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7cf80453 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x7d095243 ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x7d25e435 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x7d2dca3a ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0x7d397cc7 gpiod_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d3b58be crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x7d4f6170 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d60f6e4 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x7d61936d sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x7d861e95 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x7d9db0d7 pinctrl_dev_get_devname +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dc2992e snd_soc_get_volsw +EXPORT_SYMBOL_GPL vmlinux 0x7dc73333 snd_soc_dapm_put_value_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x7df956c9 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7dfefda1 dev_pm_opp_enable +EXPORT_SYMBOL_GPL vmlinux 0x7e27df9b dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x7e285bdc pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x7e29e870 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x7e317250 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7eb7b3f8 of_get_dma_window +EXPORT_SYMBOL_GPL vmlinux 0x7ed0c60a phy_get +EXPORT_SYMBOL_GPL vmlinux 0x7ed68941 asic3_read_register +EXPORT_SYMBOL_GPL vmlinux 0x7ef09371 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x7f05e07b pci_renumber_slot +EXPORT_SYMBOL_GPL vmlinux 0x7f264169 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x7f27eac3 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x7f336923 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x7f5dc801 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL vmlinux 0x7f60e837 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x7f7e284d setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x7fa459a2 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x7fa96d1a shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x7fab5350 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7ffff202 mtd_add_partition +EXPORT_SYMBOL_GPL vmlinux 0x8005899c bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x8010d2c6 percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x8036bf11 user_read +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80a65392 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x80a8c9ad tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80e42183 unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x80e48af2 iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x8121d102 ping_err +EXPORT_SYMBOL_GPL vmlinux 0x8129a53e spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x8140842a gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x8173e628 dev_pm_opp_find_freq_floor +EXPORT_SYMBOL_GPL vmlinux 0x817d3c80 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x81f45c82 of_usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0x8201dfb3 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0x820cca3e virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x821856cb ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x822b549f pinctrl_force_sleep +EXPORT_SYMBOL_GPL vmlinux 0x82628bfc netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0x8289f045 snd_soc_register_platform +EXPORT_SYMBOL_GPL vmlinux 0x82939ebd rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x82bfbc44 snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82ff0452 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x8318eb66 clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x833a510f ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x834616bb sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x834f9d98 iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x83672f5d fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x837892f7 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x8386a31e phy_create +EXPORT_SYMBOL_GPL vmlinux 0x838749ba sdhci_pci_o2_fujin2_pci_init +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x8395bd2a tcp_is_cwnd_limited +EXPORT_SYMBOL_GPL vmlinux 0x839c29ec lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x83a5ae2e __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x83b39d7c dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x83b80de6 snd_soc_bytes_put +EXPORT_SYMBOL_GPL vmlinux 0x83ef0f7b phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x8406dabe __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x8407bfdb crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0x84229462 devm_pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x84277541 dev_pm_opp_get_opp_count +EXPORT_SYMBOL_GPL vmlinux 0x8466554f xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x849d2469 snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL vmlinux 0x84bc52bd ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x84e2c45b pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x852e568d of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x85469eb0 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x854fd655 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x8551ff9b dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x85584a17 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0x856629e7 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x8574ca6c gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x8592f514 ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x8598d5a7 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x85a89a53 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x85b14d33 clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x85c10896 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85d8d3e6 hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x85e152a1 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x85e5c32c omap_dm_timer_disable +EXPORT_SYMBOL_GPL vmlinux 0x862b9816 cpu_topology +EXPORT_SYMBOL_GPL vmlinux 0x86455e60 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0x865595d9 snd_soc_cache_write +EXPORT_SYMBOL_GPL vmlinux 0x86670463 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x866b9687 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0x868644dc lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x86c05914 devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x86cd9e9e irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x86db36b7 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86ffbf0b hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x871f3bd5 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0x87391376 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x8743aa5a vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x87519171 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8766239a nl_table +EXPORT_SYMBOL_GPL vmlinux 0x876945ef pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x876d3cee irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x87984b16 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x87ba8758 __cci_control_port_by_device +EXPORT_SYMBOL_GPL vmlinux 0x87bb4e32 of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x87e7c2dc virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0x87e96c55 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x87eaef0e crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x87ebec28 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x881e2243 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0x88367728 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0x883c2740 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x88597a02 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x8882c4de pci_sriov_migration +EXPORT_SYMBOL_GPL vmlinux 0x888822f6 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x8889240f snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL vmlinux 0x8890ce86 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88fc6f90 pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x89042f91 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0x890ff729 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x89377453 arm_iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x893bda2f uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x894ab039 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x896e9002 stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0x897a209c crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x899a2c6b tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0x89b51de0 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89bdd871 usb_stor_probe1 +EXPORT_SYMBOL_GPL vmlinux 0x89ca5622 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x89dbdcc1 __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0x89e9a79c pinconf_generic_dt_node_to_map +EXPORT_SYMBOL_GPL vmlinux 0x89e9f8af pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x89ffdd6f usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x8a04b9fe tracepoint_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0x8a27046a omap_dm_timer_write_status +EXPORT_SYMBOL_GPL vmlinux 0x8a2b14ba wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0x8a4159d3 usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x8aa30083 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x8ab0a1ff mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8abc5763 devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8ae152b5 of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x8aec746a inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x8b10bb00 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL vmlinux 0x8b11130a fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0x8b22a45a anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8b65d19d md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x8b72a670 regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0x8b775d3a __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x8b868600 kick_process +EXPORT_SYMBOL_GPL vmlinux 0x8b8f0988 dapm_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x8b9286d8 kobj_completion_release +EXPORT_SYMBOL_GPL vmlinux 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL vmlinux 0x8bd1d559 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8bd6e81e wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x8bdd4636 regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x8bf5e21a regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c48ad21 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x8c91f596 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x8c975083 nand_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x8cbf092b uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x8cc91408 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x8cd1b06a pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x8ce2e2e6 devres_release +EXPORT_SYMBOL_GPL vmlinux 0x8cf7ab87 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x8d1ef451 debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x8d1efac3 sdhci_pci_o2_probe_slot +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d8cc50e snd_soc_jack_new +EXPORT_SYMBOL_GPL vmlinux 0x8da17b42 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x8de5b78d devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x8de740ab rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x8de9db76 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x8dea35fe snd_soc_platform_read +EXPORT_SYMBOL_GPL vmlinux 0x8e2b25c2 videomode_from_timings +EXPORT_SYMBOL_GPL vmlinux 0x8e34a538 irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0x8e49ce37 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x8e7894bd __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x8e7cdc12 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x8e9c7933 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x8eabfb7c ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x8ead33c5 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x8ecdc982 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL vmlinux 0x8edd284f ahci_start_fis_rx +EXPORT_SYMBOL_GPL vmlinux 0x8effebd3 pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x8f01fda1 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x8f047409 tegra_pinctrl_probe +EXPORT_SYMBOL_GPL vmlinux 0x8f2fa801 amba_apb_device_add_res +EXPORT_SYMBOL_GPL vmlinux 0x8f3c86eb ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x8f68d9f9 yield_to +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f902a2c gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0x8f9acebc split_page +EXPORT_SYMBOL_GPL vmlinux 0x8fb73209 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x8ff374ad get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0x8ff4d27a ahci_set_em_messages +EXPORT_SYMBOL_GPL vmlinux 0x90038cfa vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x90228869 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x90255fdb pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x90432791 regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x9047d4a4 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x90574050 cci_ace_get_port +EXPORT_SYMBOL_GPL vmlinux 0x905b385b mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x90705b7f syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9082d068 kprobe_decode_arm_table +EXPORT_SYMBOL_GPL vmlinux 0x90844388 bus_register +EXPORT_SYMBOL_GPL vmlinux 0x90846e92 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x908d0aef devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x90981da7 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x909b4107 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90a177a7 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x90bf5572 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x90d88f90 tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x90e66d47 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x90fa6b57 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x9106c5df verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x91286982 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x912bee1b sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x91547f37 ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0x91845d85 tpm_remove_hardware +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91a9dc65 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL vmlinux 0x91c9e961 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0x91d53cf2 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x91dad723 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x91f1b527 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0x91f279c6 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x920195a0 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x920e043d crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x9220ff47 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x92328889 snd_compress_deregister +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x92590969 pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x9269f258 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x92769663 sysfs_notify_dirent +EXPORT_SYMBOL_GPL vmlinux 0x929f298b xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x92b57248 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x92be802b snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL vmlinux 0x92c6ddf0 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92fccac1 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x930b481f crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x930ed9b9 of_usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0x9324d47f ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x933f8d68 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x937790fd pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x93bb5a87 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0x93e5bfe4 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL vmlinux 0x93ee6e8d crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x93fdc632 snd_soc_get_volsw_s8 +EXPORT_SYMBOL_GPL vmlinux 0x93ff0af0 ahci_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x94070249 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x940e5ed7 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x94345675 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x9435eddb snd_soc_put_volsw +EXPORT_SYMBOL_GPL vmlinux 0x943887d7 swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0x945a85ee mtd_erase +EXPORT_SYMBOL_GPL vmlinux 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL vmlinux 0x947bcd1e of_pci_msi_chip_add +EXPORT_SYMBOL_GPL vmlinux 0x94888eb8 crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x949334db cpdma_ctlr_start +EXPORT_SYMBOL_GPL vmlinux 0x949a5ce0 snd_soc_read +EXPORT_SYMBOL_GPL vmlinux 0x949f9fe4 __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x94a0c921 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x94a68723 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x94a90585 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x94aa50ca usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x94abb745 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0x94e1823c hrtimer_start +EXPORT_SYMBOL_GPL vmlinux 0x94e723d6 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x9501a1bc aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x9509292f snd_soc_unregister_card +EXPORT_SYMBOL_GPL vmlinux 0x95120dbe usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x951c92b5 snd_soc_dapm_free +EXPORT_SYMBOL_GPL vmlinux 0x951fc450 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x95481e0a da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x955f0325 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x956e5ab8 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x957fdf93 cgroup_load_subsys +EXPORT_SYMBOL_GPL vmlinux 0x9586a6ed cpdma_chan_get_stats +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95bd2d40 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x95c578a0 ioremap_page_range +EXPORT_SYMBOL_GPL vmlinux 0x95c86ab7 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x95d087d5 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x95e865c8 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x95f6ee15 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x95f7d91c device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x960761f5 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x96222705 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9623d4e6 dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0x9634bb6c clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x965baa55 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x968cdf50 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x9692681d map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x969d7722 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x969da8bd thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x96a22790 vmcore_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x96b63d49 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x96f1213c tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x9730c462 gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x974126a2 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9745c52a of_fixed_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0x97704c40 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x9780c788 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x97a3ec56 ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x97a9d6dc fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x97a9e78b wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x97aa4361 sdhci_disable_irq_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x97af46a2 otg_ulpi_create +EXPORT_SYMBOL_GPL vmlinux 0x97ce8d5b spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0x97cf700f __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x97d82b1c __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x97daf947 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97ee0b54 __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x97f1fb3b __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x97ffd6da screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x981c611e thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x984ba6ce tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x98595eed __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x986f420f pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x987aadfa crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x987f462c dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL vmlinux 0x9892d1ab iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0x98b1118d pinctrl_find_and_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x98c9f584 klist_init +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x9904dced fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x990bd78c fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x990e72f2 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x991a3bab sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x99270eb1 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x992bb20c blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x992d634b apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x9931890f usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL vmlinux 0x993a454b blkio_subsys +EXPORT_SYMBOL_GPL vmlinux 0x9959eb3a input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x99693b15 pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x9973add9 __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x9975fcbd bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x997a70e2 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x99863423 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x99cb4cea scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x99e60d56 omap_dm_timer_trigger +EXPORT_SYMBOL_GPL vmlinux 0x99ecefa2 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x99f9a914 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a181b50 cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x9a2032fd ahci_do_softreset +EXPORT_SYMBOL_GPL vmlinux 0x9a22159a posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x9a27fb3c ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x9a33a21c snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL vmlinux 0x9a556bb0 irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0x9a788163 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9ab49ccc i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9aca444b get_monotonic_boottime +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9af8c58a wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x9afc4a35 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x9b28b272 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x9b28fe82 tpm_show_owned +EXPORT_SYMBOL_GPL vmlinux 0x9b391822 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x9bea7a40 wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9bf7afd9 led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x9c052aa4 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x9c0d2312 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x9c3e5b59 percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9c73a2b9 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x9c797afc regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x9c92fabd usb_gadget_probe_driver +EXPORT_SYMBOL_GPL vmlinux 0x9ca14d52 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x9ca47a85 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9cdc9867 cpdma_ctlr_stop +EXPORT_SYMBOL_GPL vmlinux 0x9cfccc56 vchan_tx_submit +EXPORT_SYMBOL_GPL vmlinux 0x9d0dbc0e unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x9d138533 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x9d190db3 i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x9d26c232 snd_soc_resume +EXPORT_SYMBOL_GPL vmlinux 0x9d334746 register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x9d3c62cc blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x9d3e8646 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x9d402b76 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9d65d155 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x9d7043c8 usb_stor_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x9d7e2ad7 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x9d8167f5 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x9d8331c0 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9dd6ffd8 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x9dd93584 get_device +EXPORT_SYMBOL_GPL vmlinux 0x9dea684f ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9e02cdaf powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0x9e10abc5 pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x9e19e1b2 kill_mtd_super +EXPORT_SYMBOL_GPL vmlinux 0x9e3b7580 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x9e4511e4 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x9e458cf1 omap_dm_timer_set_source +EXPORT_SYMBOL_GPL vmlinux 0x9e5011da regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x9e5a8f59 iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0x9ea556f8 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9ebfe06e list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9eee094d amba_ahb_device_add +EXPORT_SYMBOL_GPL vmlinux 0x9f0664bf dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0x9f23507a regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x9f3f98e1 of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x9f4217d0 omap_iommu_restore_ctx +EXPORT_SYMBOL_GPL vmlinux 0x9f49282f scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x9f4c7cd9 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x9f56e13d rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x9f6da137 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x9f7c2cff blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x9f8b2f6c ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0x9f8bf599 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x9f9321a5 mtd_panic_write +EXPORT_SYMBOL_GPL vmlinux 0x9faa6686 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL vmlinux 0x9fc5abe4 user_update +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe747d1 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9fecde47 kobj_completion_init +EXPORT_SYMBOL_GPL vmlinux 0x9ff5ce0f ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x9ff7332b swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0xa0316846 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0xa033df40 clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0xa064f393 ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0xa073aeba usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0xa087db56 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xa091e5ac shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0xa095d570 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa0a3f31f usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xa0b2522c ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0xa0bf2412 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0xa0c0bda3 task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0xa0f00e73 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL vmlinux 0xa0f44f04 devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa1080de2 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0xa11a6e5e sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0xa12179a6 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xa12d929d desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0xa12e7d5c pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0xa144b9ce perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0xa14d4c26 pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0xa158ecf1 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xa1719d50 devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa17b2ace pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xa1b95fe7 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa1bd7822 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xa1d2fe66 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0xa1eadd3a usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0xa212af81 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0xa24705c8 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa248d9c9 of_extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0xa24a54fb snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa27aba1b twl6040_get_hs_step_size +EXPORT_SYMBOL_GPL vmlinux 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL vmlinux 0xa2a90bfd pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0xa2afeca0 sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0xa2b1acf2 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0xa2b910ae snd_soc_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xa2b9c993 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xa2e4a04c __clocksource_updatefreq_scale +EXPORT_SYMBOL_GPL vmlinux 0xa2f251d8 usb_stor_post_reset +EXPORT_SYMBOL_GPL vmlinux 0xa3066909 snd_soc_lookup_platform +EXPORT_SYMBOL_GPL vmlinux 0xa32fed62 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xa36d7a5d wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa3885051 usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa38b6a91 snd_compress_register +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3a62f22 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0xa3b3e0b3 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0xa3b7b013 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa447ffab usb_add_gadget_udc +EXPORT_SYMBOL_GPL vmlinux 0xa472b717 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa4aae884 pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xa4b37c17 register_mtd_parser +EXPORT_SYMBOL_GPL vmlinux 0xa4bc86a9 tpm_show_pubek +EXPORT_SYMBOL_GPL vmlinux 0xa4c2ba67 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0xa4e062b5 tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0xa4e4ea1f fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xa4ea04ee of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0xa4ece59b omap_dm_timer_enable +EXPORT_SYMBOL_GPL vmlinux 0xa4fa2ab6 iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0xa503823d xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0xa50d570d devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xa5192ea9 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xa56cbb28 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xa5b6b6c6 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xa5bb9362 of_pci_find_msi_chip_by_node +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5f8854a usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xa6005948 regulator_set_optimum_mode +EXPORT_SYMBOL_GPL vmlinux 0xa6129a15 tpm_write +EXPORT_SYMBOL_GPL vmlinux 0xa61b1477 tracepoint_iter_start +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa658dc41 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xa66bd85c snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL vmlinux 0xa67517a0 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0xa67fbfe3 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0xa6924ae8 usb_gadget_unmap_request +EXPORT_SYMBOL_GPL vmlinux 0xa6a0a273 max77693_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6cbe32d ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0xa6d66008 mtd_get_device_size +EXPORT_SYMBOL_GPL vmlinux 0xa6d6a185 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa724257f init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0xa728626c unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xa72f94cc sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL vmlinux 0xa732f9f5 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa753efe8 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xa7744ebb arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0xa77b1466 sysfs_get_dirent_ns +EXPORT_SYMBOL_GPL vmlinux 0xa7abbd99 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0xa7aed12e devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xa7eb4d46 regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0xa7f6c674 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xa7f92105 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0xa83ed617 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0xa83efc59 snd_soc_dapm_get_value_enum_double +EXPORT_SYMBOL_GPL vmlinux 0xa84ee742 ahci_restart_engine +EXPORT_SYMBOL_GPL vmlinux 0xa84f769b irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa887491b omap_dma_filter_fn +EXPORT_SYMBOL_GPL vmlinux 0xa887cee4 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xa89cd70c class_find_device +EXPORT_SYMBOL_GPL vmlinux 0xa8b5e6f2 ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xa8bc717e percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0xa8c329b4 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xa8e88822 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa8e98132 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0xa8fe315e vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xa90a6da8 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0xa92172e7 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xa944025b usb_gadget_set_state +EXPORT_SYMBOL_GPL vmlinux 0xa94c4bf8 pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0xa980af16 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xa98438a5 iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0xa98534ff sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0xa998fdb1 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0xa9c46fe9 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9ef0fdd devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xa9ef6924 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xaa097009 crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0xaa12314c snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL vmlinux 0xaa2a72bf __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0xaa44acff omap_tll_disable +EXPORT_SYMBOL_GPL vmlinux 0xaa70f199 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaab45034 alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0xaac14bac da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0xaae54b69 cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0xaae605aa wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xaaf64917 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0xaaf83275 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0xab0aa74a sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0xab33fa64 virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0xab42f100 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0xab5093de tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab7d6868 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0xaba8f0eb relay_close +EXPORT_SYMBOL_GPL vmlinux 0xabb16dfa disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0xabc62add crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xabce9c98 ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0xabda1e2e decode_rs16 +EXPORT_SYMBOL_GPL vmlinux 0xabf49b09 register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xac0605a4 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0xac2bf278 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0xac2cc981 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0xac351c7c pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xac38e108 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0xac50d677 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0xaca0d683 regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0xacb45937 tegra_usb_phy_preresume +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xace92acf user_destroy +EXPORT_SYMBOL_GPL vmlinux 0xad01a529 usb_string +EXPORT_SYMBOL_GPL vmlinux 0xad077717 relay_open +EXPORT_SYMBOL_GPL vmlinux 0xad200133 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0xad26a732 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0xad376749 clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0xad386387 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0xad3a2833 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xad40bdf1 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0xad47e95f usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0xad965578 pinctrl_add_gpio_ranges +EXPORT_SYMBOL_GPL vmlinux 0xad9b17ba irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0xadc38c59 snd_soc_bytes_get +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadc7bfbe phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0xadcbf88d pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0xadee2dd3 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae2554c4 of_clk_src_onecell_get +EXPORT_SYMBOL_GPL vmlinux 0xae36da88 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xae4ce988 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xae64678b usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae8aa931 dev_pm_opp_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xae9f9d59 nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xaec4a66f __put_net +EXPORT_SYMBOL_GPL vmlinux 0xaefe0991 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xaf348da7 cpu_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0xaf43ff47 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0xaf66522d sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0xaff43211 omap_dm_timer_get_fclk +EXPORT_SYMBOL_GPL vmlinux 0xaffcac35 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xb050f329 init_rs +EXPORT_SYMBOL_GPL vmlinux 0xb085ffe5 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0xb09b680b phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0xb0a8c3ef tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xb0b736a9 snd_soc_bytes_info +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0ed75f8 devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0xb0f06dbe snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0xb10d55bc cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xb12337b0 snd_soc_test_bits +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 0xb150a185 swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0xb1565cce regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0xb1593776 twl6040_get_trim_value +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb1925f2d blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0xb1a7e3f6 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1b22afa sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1c0c1c2 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xb1c26dc4 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xb1c79131 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb20594bd wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb22b1715 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0xb254e040 gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0xb29cc4ff driver_find +EXPORT_SYMBOL_GPL vmlinux 0xb2aeb590 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0xb2b4526c debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0xb2cc9c9d unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0xb2d15dcb usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb3226dd9 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xb3350aad css_next_descendant_pre +EXPORT_SYMBOL_GPL vmlinux 0xb33efab7 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xb3413243 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0xb36383e7 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xb3661ddb tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xb36a3dd4 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xb37eeacf device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0xb38119bd relay_reset +EXPORT_SYMBOL_GPL vmlinux 0xb383c4e3 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xb392f27a cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xb39552ba mount_mtd +EXPORT_SYMBOL_GPL vmlinux 0xb3b2baeb device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0xb3e38639 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0xb3f5cc9a key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0xb41976ae debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xb419b38f __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xb43a73e5 ping_bind +EXPORT_SYMBOL_GPL vmlinux 0xb44b0503 ahci_save_initial_config +EXPORT_SYMBOL_GPL vmlinux 0xb453d037 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb4657d49 omap_dm_timer_read_status +EXPORT_SYMBOL_GPL vmlinux 0xb483598e pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4cf0322 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb4e5fc05 alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4ee1aab ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0xb4f7783d rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xb4fc89bb balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0xb50fc1e1 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb555fe0c arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0xb56575d2 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0xb572cfed add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xb579d4ed snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL vmlinux 0xb5809783 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xb58d209b snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5cb8145 hrtimer_get_res +EXPORT_SYMBOL_GPL vmlinux 0xb5e896fb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb5f65d9b sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL vmlinux 0xb5f6c234 cgroup_is_descendant +EXPORT_SYMBOL_GPL vmlinux 0xb5f8d89f pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0xb5f99b34 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xb608fc26 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0xb61e7fbc kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xb6238dd8 serial8250_tx_dma +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb63455f3 usb_stor_resume +EXPORT_SYMBOL_GPL vmlinux 0xb634c5ec cpsw_phy_sel +EXPORT_SYMBOL_GPL vmlinux 0xb63a2361 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0xb6443e6f replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0xb67b2219 cm_suspend_again +EXPORT_SYMBOL_GPL vmlinux 0xb67c64fd __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0xb687bb86 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0xb68ea85c crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0xb69e7345 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xb6a5f59d vchan_init +EXPORT_SYMBOL_GPL vmlinux 0xb6a63790 regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xb6ab1c1e blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0xb6ab64e4 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6c635af wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xb6d96944 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0xb6f2c578 __tracepoint_unmap +EXPORT_SYMBOL_GPL vmlinux 0xb7003fd4 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0xb713b0dc dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0xb7289e2c dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0xb732cc01 rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xb750ac9b sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0xb758e044 dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xb75d81c6 regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0xb771e6b7 bL_switch_request_cb +EXPORT_SYMBOL_GPL vmlinux 0xb77cb0a8 cpdma_chan_submit +EXPORT_SYMBOL_GPL vmlinux 0xb77d8fd1 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0xb7d67d40 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xb7d8380e inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb82566eb omap_tll_enable +EXPORT_SYMBOL_GPL vmlinux 0xb8325a4e usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0xb8346aeb percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb868d059 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0xb88ead0c inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0xb8a335b7 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0xb8a7039f sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xb8b287f0 register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xb8c89451 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0xb8f7ffbf inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb90b2187 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0xb90e7754 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xb91162ed usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0xb9176155 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0xb947f921 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0xb95fda5e pinctrl_utils_dt_free_map +EXPORT_SYMBOL_GPL vmlinux 0xb96f8da9 inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xb970ea23 tpm_show_durations +EXPORT_SYMBOL_GPL vmlinux 0xb977dc8f snd_soc_register_card +EXPORT_SYMBOL_GPL vmlinux 0xb9b0109a xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0xb9b2a385 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0xb9b7d939 usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9baf73a usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9c80898 snd_soc_dapm_get_enum_virt +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9d6bb49 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xb9da2997 snmp_fold_field64 +EXPORT_SYMBOL_GPL vmlinux 0xb9e87b94 bL_switcher_trace_trigger +EXPORT_SYMBOL_GPL vmlinux 0xb9ebf862 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0xb9f42b04 user_instantiate +EXPORT_SYMBOL_GPL vmlinux 0xba1afe8c gpiochip_remove_pin_ranges +EXPORT_SYMBOL_GPL vmlinux 0xba1c6ea5 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0xba3345e5 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0xba43edd2 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xba66c87b usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xba7b2706 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0xba95c3a1 dev_pm_opp_add +EXPORT_SYMBOL_GPL vmlinux 0xbac149a0 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xbad4eebd sdhci_pci_o2_probe +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb0f7bbc ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xbb11cfba klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xbb1cebef usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xbb2ce617 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL vmlinux 0xbb34516a crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0xbb979226 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0xbba7cc94 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xbbaf9ade skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0xbbc5ca88 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0xbc53f69a tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0xbc7c3f91 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0xbc7e4202 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0xbca7b001 powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcaf3971 crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0xbcbaa80a __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0xbcc741b0 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbcec2320 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0xbcf89ab6 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0xbcfc8aa3 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0xbd304453 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xbd4c7d8b pci_ioremap_io +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd686aed sysfs_get +EXPORT_SYMBOL_GPL vmlinux 0xbd98d2ac pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbdd57b3b debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0xbdddb277 snd_soc_get_strobe +EXPORT_SYMBOL_GPL vmlinux 0xbdf512de free_bch +EXPORT_SYMBOL_GPL vmlinux 0xbe0aedf9 ahci_kick_engine +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe8d4cd7 bdi_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbebaaa51 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0xbef9c9b4 task_current_syscall +EXPORT_SYMBOL_GPL vmlinux 0xbf035310 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf305e33 pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbf440e5a snd_soc_platform_trigger +EXPORT_SYMBOL_GPL vmlinux 0xbf5f7b2d netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0xbf60ac62 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0xbf760b6a da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xbf93450c snd_soc_codec_writable_register +EXPORT_SYMBOL_GPL vmlinux 0xbfa17e09 md_stop +EXPORT_SYMBOL_GPL vmlinux 0xbfa42820 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xbfac78a4 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0xbfb4f868 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfcf5623 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0xbfdac871 regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0xc00131cf visitor64 +EXPORT_SYMBOL_GPL vmlinux 0xc01d8530 extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0xc01f7e73 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc024476d blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0xc02e3904 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0xc05080ef i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0xc05d0464 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xc081c246 bL_switcher_put_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc091a528 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0xc0bb896e nand_release +EXPORT_SYMBOL_GPL vmlinux 0xc0bf6ead timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xc0c50b2f each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0xc0cb735f ahci_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0xc0d01bc0 percpu_ref_cancel_init +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0e75cec visitor128 +EXPORT_SYMBOL_GPL vmlinux 0xc10a6681 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0xc114196c inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xc11b45c6 gpiod_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xc11b82f4 iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xc11bd00f tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc1790e3f devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xc1791589 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0xc1813396 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0xc18578ed process_srcu +EXPORT_SYMBOL_GPL vmlinux 0xc1a71109 sdhci_pltfm_register +EXPORT_SYMBOL_GPL vmlinux 0xc1c0d63c regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0xc1dbeecd modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc1ec78f5 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc22a3bcd ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0xc2369180 mtd_writev +EXPORT_SYMBOL_GPL vmlinux 0xc23751e0 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0xc243ebbd shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xc25249a1 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0xc269525f register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc28ff1bd blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0xc2a22ae5 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL vmlinux 0xc2a51899 ahci_ops +EXPORT_SYMBOL_GPL vmlinux 0xc2a894ea regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xc2c20371 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0xc2c37005 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL vmlinux 0xc2d6a90b arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0xc2d9f991 pinctrl_pm_select_sleep_state +EXPORT_SYMBOL_GPL vmlinux 0xc3024422 fill_inquiry_response +EXPORT_SYMBOL_GPL vmlinux 0xc3053bf9 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0xc307bfcc clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0xc30b3a36 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0xc310af39 virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0xc317d8c4 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xc31846b5 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0xc31a509f crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc34efe27 snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0xc3683f84 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc3819aba snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL vmlinux 0xc385ca3e phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xc385cb58 perf_num_counters +EXPORT_SYMBOL_GPL vmlinux 0xc38efa3b class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xc390b809 stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0xc39492e7 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0xc3a47733 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc3b691f0 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xc3b93bba klist_next +EXPORT_SYMBOL_GPL vmlinux 0xc3be9891 pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0xc3e486a3 clockevents_unbind +EXPORT_SYMBOL_GPL vmlinux 0xc407a1d4 gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0xc41e0178 btree_last +EXPORT_SYMBOL_GPL vmlinux 0xc42076a9 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc42d5b1b locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0xc448f22b kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc46f8c67 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc4720c78 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0xc4826c52 sdhci_alloc_host +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc49fc1b5 usb_stor_disconnect +EXPORT_SYMBOL_GPL vmlinux 0xc4aea827 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xc4b10170 dev_pm_opp_find_freq_ceil +EXPORT_SYMBOL_GPL vmlinux 0xc4c2dbf5 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0xc4cf6ebd twl6040_hs_jack_detect +EXPORT_SYMBOL_GPL vmlinux 0xc4e524e1 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xc4f0899b ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0xc50cfdfd regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0xc50dbc4b devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xc53c737e wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0xc5488077 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xc54cfdd4 inet_csk_reqsk_queue_prune +EXPORT_SYMBOL_GPL vmlinux 0xc551f12f rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc584af43 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0xc5928a5c devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xc596cdf5 usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0xc5d37180 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0xc5d5513e cpdma_chan_process +EXPORT_SYMBOL_GPL vmlinux 0xc5f762d1 vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xc60f75ec __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc626055f unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xc629cdcd snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL vmlinux 0xc63a1109 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xc649229a clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc673dc74 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xc685c037 cpdma_check_free_tx_desc +EXPORT_SYMBOL_GPL vmlinux 0xc68aa090 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0xc68fea18 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0xc690866c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6ab0feb pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0xc6bc8d85 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL vmlinux 0xc6c67a8c i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0xc6c944d9 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xc6f48d38 snd_ctl_activate_id +EXPORT_SYMBOL_GPL vmlinux 0xc705d5a3 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc734507c crypto_rng_type +EXPORT_SYMBOL_GPL vmlinux 0xc740e417 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL vmlinux 0xc75ee4e0 device_schedule_callback_owner +EXPORT_SYMBOL_GPL vmlinux 0xc786f0f0 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7a64e52 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0xc7a84c5d tcp_reno_min_cwnd +EXPORT_SYMBOL_GPL vmlinux 0xc7af55eb sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xc7bb824f invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7da0f6e tpm_read +EXPORT_SYMBOL_GPL vmlinux 0xc7dacdae udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8b96a93 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc9047ef3 device_attach +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc9152ec4 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xc93ba763 serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0xc94902be snd_soc_add_platform +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc97d1140 cpufreq_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0xc98c5ffd __mtd_next_device +EXPORT_SYMBOL_GPL vmlinux 0xc9b75e2d sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0xc9cfa97f of_pci_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xc9ff3f61 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL vmlinux 0xca072f80 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0xca0d42bf tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0xca272d0a bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0xca44fd2b disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xca7c3891 dma_buf_export_named +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca85d8cf tracepoint_probe_update_all +EXPORT_SYMBOL_GPL vmlinux 0xca946187 of_clk_add_provider +EXPORT_SYMBOL_GPL vmlinux 0xca99ea99 usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xca9de869 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0xcac97862 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0xcadf9b49 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0xcb0b5e8e of_display_timings_exist +EXPORT_SYMBOL_GPL vmlinux 0xcb11a771 phy_exit +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb225a52 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0xcb38881d blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0xcb431c23 snd_soc_write +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb597eb7 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0xcb604f28 pinctrl_utils_add_map_configs +EXPORT_SYMBOL_GPL vmlinux 0xcb6c3445 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL vmlinux 0xcb6d89c4 mtd_device_parse_register +EXPORT_SYMBOL_GPL vmlinux 0xcb788dcb dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0xcb9b162e clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0xcbb9675b __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0xcbbeafe7 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcc1b9167 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0xcc1f1c3d inet_twdr_hangman +EXPORT_SYMBOL_GPL vmlinux 0xcc56f4c1 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xcc5e1731 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xcc69d44b file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0xcc802b99 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcc9f9f7b pwm_free +EXPORT_SYMBOL_GPL vmlinux 0xccab9778 cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0xccbfe1a2 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0xcccbf853 tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xcd17039e ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xcd37e9b1 arm_iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xcd5ccf43 ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0xcd7aeb4c crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd995e65 phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0xcda15927 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0xcda2b728 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xce0b9b59 max77693_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xce372507 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0xce46e140 ktime_get_ts +EXPORT_SYMBOL_GPL vmlinux 0xce4a772f __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce8cc924 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0xce93c67b tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xced3599b blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcef50e6d snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL vmlinux 0xcefad43d snd_soc_limit_volume +EXPORT_SYMBOL_GPL vmlinux 0xcefc0c17 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xcf0eef02 register_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0xcf2c3bef led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0xcf2efdfa queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xcf382b47 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0xcf5363f6 task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0xcf53ffef snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf57201b crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0xcf827a7a irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0xcf8905b5 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0xcf8a63b6 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0xcf90f906 input_class +EXPORT_SYMBOL_GPL vmlinux 0xcf979018 snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL vmlinux 0xcfb5e357 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfcef4b3 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0xcfd08adc hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0xcfe0c86b dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xd0310338 d_materialise_unique +EXPORT_SYMBOL_GPL vmlinux 0xd0334525 led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd04fd8a2 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0xd0565728 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0xd060edcb snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd06f91c0 arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0xd08b4a42 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xd09fa31b pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0xd0a6baa6 da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0dfd1f2 tpm_show_active +EXPORT_SYMBOL_GPL vmlinux 0xd0e1a150 alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0xd0ff4afc fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0xd1007a4f __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0xd11a21ea __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xd14bc4d9 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xd1562938 of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd15b0550 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd17a5ce0 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xd1822f0b cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd1a0d8a7 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xd1b2db37 tracepoint_probe_register_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xd1baf452 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xd1c2df77 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xd1c509d1 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0xd1e9abb1 iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0xd1f0a011 usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xd1fb95a7 usb_del_gadget_udc +EXPORT_SYMBOL_GPL vmlinux 0xd203779a cgroup_unload_subsys +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd216c482 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd24a47d1 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xd2534497 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0xd258217d clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0xd26c6252 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd27a5033 pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0xd28e07d7 pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xd29dad01 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd2aaeb4e kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0xd2ad4733 sdhci_free_host +EXPORT_SYMBOL_GPL vmlinux 0xd2c45ea4 of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0xd2ee81f6 snd_soc_register_codec +EXPORT_SYMBOL_GPL vmlinux 0xd2f271c5 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0xd2f53380 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL vmlinux 0xd32fe193 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xd33ada8b cci_probed +EXPORT_SYMBOL_GPL vmlinux 0xd34999d3 snd_soc_codec_set_cache_io +EXPORT_SYMBOL_GPL vmlinux 0xd3927792 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0xd3b24fb1 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0xd3ed6143 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xd3f44435 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xd3ffea12 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd44b6aa2 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0xd44c2f38 cci_disable_port_by_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd46d29f2 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0xd489427b securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xd48eb7a6 snd_compress_new +EXPORT_SYMBOL_GPL vmlinux 0xd4aa5cba raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4cad45e clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0xd4d0387e pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0xd4e89744 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xd4ebbf15 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0xd508b6ae ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xd530337f scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0xd53d17e9 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0xd53da4e3 omap_dm_timers_active +EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd5bd435a xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5c478da snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL vmlinux 0xd5db845c driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xd5fb8481 omap_dm_timer_request_by_cap +EXPORT_SYMBOL_GPL vmlinux 0xd62586d1 snd_soc_update_bits_locked +EXPORT_SYMBOL_GPL vmlinux 0xd62bc474 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xd63a85d8 _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0xd6505d86 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd686eca4 of_reset_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xd69ed30f dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0xd6c2e04b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0xd70511fb usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd722a323 ahci_platform_enable_resources +EXPORT_SYMBOL_GPL vmlinux 0xd743e33e irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xd7487269 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0xd74d3ad0 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0xd75281be mtd_block_markbad +EXPORT_SYMBOL_GPL vmlinux 0xd755548d imx_pcm_dma_exit +EXPORT_SYMBOL_GPL vmlinux 0xd7660dec pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd7723a62 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xd773bee7 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xd7790f3a pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd787b9c2 devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xd788742d perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0xd7b47c36 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd81ffcd3 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd8218dd7 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0xd82646d9 pinctrl_find_gpio_range_from_pin +EXPORT_SYMBOL_GPL vmlinux 0xd839ae9a sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xd85274bd ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0xd87210b1 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd898cd9c enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xd8ac5868 tpm_show_pcrs +EXPORT_SYMBOL_GPL vmlinux 0xd8cbeacf get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0xd8d2bb0c wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xd8e2e956 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xd8f243f9 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL vmlinux 0xd9006947 __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0xd90506e9 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0xd90e9603 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd94aa457 display_timings_release +EXPORT_SYMBOL_GPL vmlinux 0xd9930a34 rtc_set_mmss +EXPORT_SYMBOL_GPL vmlinux 0xd9967b4e crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xd996cc45 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0xd9a34035 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0xd9c60bff sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda3177db gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0xda362e05 omap_mcpdm_configure_dn_offsets +EXPORT_SYMBOL_GPL vmlinux 0xda376654 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0xda44c731 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0xda44cb37 setup_charger_manager +EXPORT_SYMBOL_GPL vmlinux 0xda57bf4a pinctrl_dev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xda7cf6ba regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0xda87c038 of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xda9b05a5 usb_stor_reset_resume +EXPORT_SYMBOL_GPL vmlinux 0xdac11bae of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xdae715e0 videomode_from_timing +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb04cacc tracepoint_probe_unregister_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xdb31ac05 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0xdb49125d md_run +EXPORT_SYMBOL_GPL vmlinux 0xdb5ce5ed regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xdb83a188 sk_unattached_filter_create +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb8efe15 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0xdba2a633 put_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0xdba4ad93 static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0xdba80fc1 of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc00c276 skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xdc10bc2f spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0xdc139563 sdhci_send_command +EXPORT_SYMBOL_GPL vmlinux 0xdc1900ff pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0xdc1e15f1 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0xdc2e766e vtime_guest_exit +EXPORT_SYMBOL_GPL vmlinux 0xdc4352bb snd_soc_dapm_put_enum_virt +EXPORT_SYMBOL_GPL vmlinux 0xdc461430 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xdc4ad272 sync_page_io +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 0xdc9fe448 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0xdca716a2 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdca9367d shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0xdcb4f41d sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0xdcc05c40 mtd_point +EXPORT_SYMBOL_GPL vmlinux 0xdcc71f0f gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xdccbe827 pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xdce43250 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0xdd0935f4 devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xdd1cdd7e da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd47dc88 extcon_find_cable_index +EXPORT_SYMBOL_GPL vmlinux 0xdd5a5faf class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xdd60dc8c power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0xdd669a15 tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xdd6a73ed twl6040_get_dl1_gain +EXPORT_SYMBOL_GPL vmlinux 0xdd8f1a09 put_device +EXPORT_SYMBOL_GPL vmlinux 0xdda0eccd tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xddb69a4a pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0xddbb6f7f sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0xddbc2b3d usb_stor_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xde0008f7 snd_soc_put_value_enum_double +EXPORT_SYMBOL_GPL vmlinux 0xde07c877 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xde1931db regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xde224e42 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0xde2c5a6e alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0xde3ddd60 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xde4b59f3 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0xde58d76f dev_hard_start_xmit +EXPORT_SYMBOL_GPL vmlinux 0xde6e056e netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0xdeec5326 ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf241f22 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xdf336787 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0xdf633c3c dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xdf704866 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0xdf723c92 tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0xdf767dfd alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0xdf806c15 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0xdf94cb9c regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0xdfb43495 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0xdfd5baf4 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0xdff205ca snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL vmlinux 0xdff7c9ce blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe003e044 __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe033093e devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0xe04085b6 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0xe0520a66 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0xe0633f2e sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0xe06347fe power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0xe07ca631 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0xe07ed12a pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xe0d500a5 bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0xe0d73fe6 scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0xe10ca5fc pinconf_generic_dt_subnode_to_map +EXPORT_SYMBOL_GPL vmlinux 0xe121042b led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0xe13e2c1f flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xe15114bf spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0xe152dc6f sysfs_put +EXPORT_SYMBOL_GPL vmlinux 0xe1552dd7 virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0xe16591ab stop_machine +EXPORT_SYMBOL_GPL vmlinux 0xe167c42d wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe17799a9 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0xe17b3610 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe1802abf crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0xe19cdfb5 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0xe1a1bb61 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0xe1c32794 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0xe1d474d5 of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0xe1d4b796 extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0xe1e60f7d ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0xe22e845a __module_address +EXPORT_SYMBOL_GPL vmlinux 0xe23643a6 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0xe26825df list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xe27153f8 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xe27355f5 devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0xe283c570 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe2e7840d regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xe2f34799 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe337d0a8 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xe35140a3 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0xe3546a00 regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe359bc3a scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0xe3671ef7 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0xe37d99f7 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe38bdd33 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0xe3d00fd5 get_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0xe3d0bf91 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe3db700b fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xe3ecc943 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0xe3f8293c __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0xe409696e pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0xe42e1f70 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe430c4e4 irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0xe47fb1ea fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0xe480002d scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xe4803c91 of_get_videomode +EXPORT_SYMBOL_GPL vmlinux 0xe49a13b0 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0xe49b8e0b extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xe49f0704 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xe4a97680 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xe4b0941e da903x_write +EXPORT_SYMBOL_GPL vmlinux 0xe4b5348e evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0xe4bb53c9 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0xe4c22565 cpdma_chan_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe4c4b28f gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xe4d667f6 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0xe4d9095c crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe4fe5197 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0xe50d2085 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xe50e65bf blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xe52abe63 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0xe52ae762 __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0xe52af64a wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0xe543e9f8 mtd_block_isbad +EXPORT_SYMBOL_GPL vmlinux 0xe5524eab of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xe558f8c3 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL vmlinux 0xe559650d extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe589101b unregister_mtd_user +EXPORT_SYMBOL_GPL vmlinux 0xe58aac8d thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe592120e iommu_domain_has_cap +EXPORT_SYMBOL_GPL vmlinux 0xe5971d9a smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xe5bb2228 pinconf_generic_dump_config +EXPORT_SYMBOL_GPL vmlinux 0xe5d46ce1 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe5e692b2 sdhci_pci_o2_resume +EXPORT_SYMBOL_GPL vmlinux 0xe5ebc1e6 snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL vmlinux 0xe5fdccbf key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0xe602b3e3 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0xe621823c seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0xe62cb530 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0xe63d67e6 arm_iommu_release_mapping +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe65f8450 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0xe661f89c usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0xe69c17a0 omap_mcbsp_st_add_controls +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6d43108 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xe6d47fa5 pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0xe6d67d57 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6e204ee virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0xe7017995 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0xe71d7e04 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL vmlinux 0xe720694d imx_pcm_dma_init +EXPORT_SYMBOL_GPL vmlinux 0xe7243738 cgroup_taskset_next +EXPORT_SYMBOL_GPL vmlinux 0xe72c7059 soc_ac97_ops +EXPORT_SYMBOL_GPL vmlinux 0xe7481949 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0xe7574e5b crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xe75e0cf3 thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0xe764488a alarm_start +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe76b142c pinctrl_select_state +EXPORT_SYMBOL_GPL vmlinux 0xe786bfb2 inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0xe786e992 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe7b8a457 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL vmlinux 0xe7dc835c ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe7dd7f83 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xe7e116d6 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0xe7fd6ba2 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe820177a mtd_unpoint +EXPORT_SYMBOL_GPL vmlinux 0xe827c634 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0xe8352d6e get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe85a9fd3 cpu_cluster_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0xe8605bc3 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe87485cd usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xe89d55c8 pinctrl_utils_add_config +EXPORT_SYMBOL_GPL vmlinux 0xe8a2c997 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0xe8ab971e device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0xe8c692b5 snd_soc_unregister_component +EXPORT_SYMBOL_GPL vmlinux 0xe8d0bbb7 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xe8d60743 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0xe8ddf47a regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0xe906962f regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xe932168d blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe956a75c pl320_ipc_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe9597d9b crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0xe96fb9a3 mmc_send_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0xe997a768 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0xe99c0d4e vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0xe9ed5703 ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea1bb291 bL_switcher_get_enabled +EXPORT_SYMBOL_GPL vmlinux 0xea329426 crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0xea367983 of_pci_msi_chip_remove +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea43355b gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xea4fbbef scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL vmlinux 0xea8b851b regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xea9c03d9 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0xeaa1fc21 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xeaa44515 tpm_dev_vendor_release +EXPORT_SYMBOL_GPL vmlinux 0xeaa92b15 dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0xead990b6 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0xeaeb32ce zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0xeb17fe9e ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0xeb1c3628 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xeb2028f8 snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL vmlinux 0xeb212389 fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0xeb26b0d3 blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0xeb296120 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0xeb3ef01d arm_pm_restart +EXPORT_SYMBOL_GPL vmlinux 0xeb4a2187 pinctrl_utils_add_map_mux +EXPORT_SYMBOL_GPL vmlinux 0xeb5796dd thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0xeb5b3533 omap_dm_timer_set_prescaler +EXPORT_SYMBOL_GPL vmlinux 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL vmlinux 0xeb729f71 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0xeb7a6f4b iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0xeb9abbee ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xebcb1db6 elv_register +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xebf253c3 stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0xec02758a skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec250fba mtd_is_partition +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec693665 fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0xec6f00ed unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xec9b6752 ahci_platform_suspend +EXPORT_SYMBOL_GPL vmlinux 0xeca766b2 amba_ahb_device_add_res +EXPORT_SYMBOL_GPL vmlinux 0xecae250c reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xecbdc59e pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xecdceb5f usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xece4f814 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xecf77d19 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0xecf93c7f cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0xecfd8761 usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xed06b916 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0xed0e0532 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0xed260363 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0xed346e28 gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0xed64ec80 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL vmlinux 0xed695a2d unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xed73d6d8 __clk_register +EXPORT_SYMBOL_GPL vmlinux 0xed760d2a sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xed9f7915 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0xedcc3653 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0xedd49930 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0xeddf78b2 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0xede543ca pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xeded8287 spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0xee0b33e3 irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0xee1b61c7 powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0xee4d5e95 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0xee4f3181 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee8d7539 cpdma_chan_start +EXPORT_SYMBOL_GPL vmlinux 0xeeef2b14 clk_register +EXPORT_SYMBOL_GPL vmlinux 0xeeeff5ef snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL vmlinux 0xef2b0cd5 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xef38b476 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0xef3d87d4 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0xef409b74 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0xef652278 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0xef66075c usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef750677 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0xef87b0ea ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xefdaf9de adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0xefe4a93e pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0xf00d58f7 alarm_init +EXPORT_SYMBOL_GPL vmlinux 0xf01c6067 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0xf03e431d crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0xf04eca4f sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL vmlinux 0xf08cef3a driver_register +EXPORT_SYMBOL_GPL vmlinux 0xf0970ea2 regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0xf0bf5358 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0xf0d19eb4 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0xf0e0e562 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf0f87dc1 ahci_print_info +EXPORT_SYMBOL_GPL vmlinux 0xf0fb6731 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0xf11babb5 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf129eb98 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xf12caf22 clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0xf134e9de skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xf15d8ac8 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0xf17a873d snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf1ac5480 rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1b728d7 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0xf2045f04 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0xf21166a6 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf22405e5 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xf225b5dd ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xf22b483f regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0xf2373dde proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0xf24d6a4b add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL vmlinux 0xf2659e5b ata_sas_port_async_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf283e690 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0xf2851153 gpio_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xf2a7a897 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0xf2b4e71c fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0xf2bcbb62 napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0xf2c23997 snd_kctl_jack_report +EXPORT_SYMBOL_GPL vmlinux 0xf2c69068 pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xf2d95b34 dm_requeue_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0xf2e3e9d2 ahci_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xf2f077cc pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0xf2fc7f6e __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf30032a2 pinctrl_remove_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xf30fda27 lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0xf319ced1 ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf31e596a tegra_usb_phy_postresume +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf34c98a3 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xf3704854 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xf393253c ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3b4b5a5 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xf3eb0136 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0xf40ecc16 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0xf41679b7 phy_init +EXPORT_SYMBOL_GPL vmlinux 0xf4365a75 inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xf44e3bb5 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0xf467ec23 usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4a4ff9d tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf4c24e04 __class_create +EXPORT_SYMBOL_GPL vmlinux 0xf4d402fe sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0xf4d999aa wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf517d44d class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0xf5371f96 hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0xf54251a5 pci_msi_off +EXPORT_SYMBOL_GPL vmlinux 0xf543bd34 omap_dm_timer_write_counter +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf5613f30 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0xf58b3e9a sis_info133_for_sata +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5a917b1 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf5b8e767 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xf5e2908f snd_soc_info_volsw_s8 +EXPORT_SYMBOL_GPL vmlinux 0xf5f184a1 netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0xf5f67d52 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0xf5fef4e3 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf61dfc45 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0xf6222993 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xf67c9929 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xf695597e bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0xf69c6f8e ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0xf6cf9fa9 regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0xf6d1a38f snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6fa93a4 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0xf704665b sync_filesystem +EXPORT_SYMBOL_GPL vmlinux 0xf7183c20 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0xf7186883 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf73af386 device_del +EXPORT_SYMBOL_GPL vmlinux 0xf73ca10a usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0xf74dae0f idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf76b0a59 read_current_timer +EXPORT_SYMBOL_GPL vmlinux 0xf771149f usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0xf7714159 transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xf7a33d57 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xf7a3d1d0 cred_to_ucred +EXPORT_SYMBOL_GPL vmlinux 0xf7b5d824 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xf7b755bb sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0xf7bfecfd system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0xf7c49324 of_pci_parse_bus_range +EXPORT_SYMBOL_GPL vmlinux 0xf7ce2b17 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0xf7e19dbc register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xf7e884c6 regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0xf7ed3ec1 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0xf7f51710 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0xf816c866 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0xf82f16b3 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf845c450 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xf846506f irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf8694d7b crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf88a9dcf devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xf8964a9e __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xf8b0d3ec spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf9063cd7 devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xf92777f5 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf935a32c of_property_read_string_helper +EXPORT_SYMBOL_GPL vmlinux 0xf93baf23 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0xf95b88d6 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0xf990d96d regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0xf9961f38 cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9c9aa14 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9e0a7dc device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0xfa012fe7 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0xfa0f63b4 thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0xfa1bc97f dev_pm_opp_disable +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa5e909f devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xfab82123 extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0xfad11846 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0xfaf7c257 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0xfb05dd89 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0xfb147864 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xfb2ab70b regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb39097e srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfb43ec0e ping_hash +EXPORT_SYMBOL_GPL vmlinux 0xfb6e454a pinctrl_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb94f014 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xfb97cb41 serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0xfba21e0f hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xfbbedefd of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0xfbcb158a devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xfbf9e499 snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc462842 ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0xfc5aa64f cgroup_taskset_cur_css +EXPORT_SYMBOL_GPL vmlinux 0xfc62ea45 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0xfc688276 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0xfc952d53 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xfca1d062 omap_control_usb_phy_power +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfcdb4034 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0xfd399f5f br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0xfd41c7ce btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xfd735b16 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0xfd8d1d7d class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xfdc91bf3 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0xfe0eb0bd handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0xfe1ae317 omap_control_usb_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xfe6dc30e ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0xfe7e8855 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0xfe8d06ce pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0xfe95e170 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfeb3a142 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xfebafe21 iommu_present +EXPORT_SYMBOL_GPL vmlinux 0xfebbdaaa inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0xfec0e8d6 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfeda4e1c look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0xfee3dbc2 tegra_ehci_phy_restore_end +EXPORT_SYMBOL_GPL vmlinux 0xfee50f28 devres_get +EXPORT_SYMBOL_GPL vmlinux 0xfee7df4b class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xfeeb2f67 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0xfef4022e user_describe +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff015216 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff240c98 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0xff550a1a palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff5c7210 devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xff5cda7c wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0xff675c25 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0xff807599 regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0xffa598e4 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0xffe1a47e regulator_put --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/armhf/generic-lpae +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/armhf/generic-lpae @@ -0,0 +1,14108 @@ +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/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/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/bcma/bcma 0x344ad6b9 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 0x01d0009e pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x0744efd0 paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0x0a9a9c94 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0x2cbac21f pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0x417364d9 pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0x45df56a0 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x785003fa pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0x8821939e pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x91153a62 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xca3f1b84 pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0xdcef7d3c pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xf382d036 pi_write_regr +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/dma/dw/dw_dmac_core 0x0fda42de dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x6787ada8 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x7734cd3d dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xb0d6fd1e dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xc5f6cef7 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xd51a4497 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/pl330 0xf76d35fe pl330_filter +EXPORT_SYMBOL drivers/edac/edac_core 0xf63abc77 edac_mc_find +EXPORT_SYMBOL drivers/fmc/fmc 0x18f7dee8 fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x20324689 fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0x324e8141 fmc_show_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x35f6a51e fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0x7ed41dd6 fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0x8a22b9b4 fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x955431d3 fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0x99367f10 fmc_free_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xbe837fc4 fmc_driver_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0xc6b204c8 fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0xd4dc060c fmc_find_sdb_device +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00025916 drm_mode_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0003c382 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00667d8a drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x01b1ee94 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x026c0d6b drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x044084f4 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08451722 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ada898b drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0c3e7f6d drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e9908c7 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ec527fc drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f29f783 drm_framebuffer_lookup +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 0x108f73f5 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10e18003 drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12c6276a drm_buffer_read_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13b9ef8c drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13cdaadb drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13e10cf7 drm_bridge_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x142b8b35 drm_buffer_copy_from_user +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1532126b drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1536b51e drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1738aa9a drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18933364 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x189f6401 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19e44324 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b04cce9 drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1bb937df drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1c2e28a1 drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1c5291fd drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d246d81 drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d49b066 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e64771c drm_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1ef2def0 drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21550bdb drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21c50e05 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x228ddd7e drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25ab6428 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x27506df1 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29746811 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a942ab2 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d80be4d drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e9b581d drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f24004f drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30605761 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30a73004 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x334c2421 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x346127a7 drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3482d307 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36f91ef3 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37ef2366 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3894f631 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x389af9ae drm_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x397c2f71 drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x398de194 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ae7b2d0 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d4b8108 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e3685a7 drm_core_reclaim_buffers +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x406df13f drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41c77b2c drm_bridge_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43384bd9 drm_buffer_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x449b3bbe drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4634894d drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4798f77e drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x492760ba drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x498dcb5e drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49fabf0d drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ad39ac1 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b7fa589 drm_vma_offset_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4bb4e264 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c367a65 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4cb18575 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f2c3dcd drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4feb7329 drm_get_encoder_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5177b905 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x53ac9bf9 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x55123418 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x557a91c9 drm_prime_init_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x570662be drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58452fc6 drm_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58502626 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x587b6e39 drm_platform_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a80a562 drm_core_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5aa66421 drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b314099 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5ddf50b4 drm_get_last_vbltimestamp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e4b3db3 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f1ebfb6 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6090be61 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6321ed2e drm_sysfs_connector_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63887ddf drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66803841 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b6d7375 drm_timestamp_precision +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6baa0494 drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6bd50bf1 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6c5c52c8 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cee2e42 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d4bb61e drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d6080d8 drm_prime_destroy_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x710a9f70 drm_mode_connector_detach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x712c1cde drm_get_connector_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71b9002d drm_global_mutex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x75582e43 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x77cdc30b drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x78f5cddc drm_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7949aae2 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79e70c2f drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a4e7297 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a8dc8fa drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c231128 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c6fbb51 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81ba930c drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x83dd7e47 drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x85bcbe9e drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x866677b9 drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x885a7f94 drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x899c7e79 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8bb0e057 drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c196cca drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d6cec02 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8dfb019d drm_buffer_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eed14b2 drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f115ed1 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f7df3a7 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8fae5076 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8fcf344f drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x929ba66c drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x938afdbb drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95cea00c drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95fcdccd drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9745d638 drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99bdbd2b drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9afd0fe1 drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b994ef7 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d70fc2a drm_rnodes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e578234 drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9eccfe56 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9efc26a3 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa033588a drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1eed187 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1f4e9e6 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5dbd572 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa9dbef34 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa1a6e72 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac70040a drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad705d16 drm_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf1d9cc0 drm_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafb0cb6f drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaff2fdcb drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb020d646 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb245eee4 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb572a9f0 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb58e0209 drm_dev_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb649b77c drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb7ebfc00 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb7f2a50b drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb95beb55 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb98771dc drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba14e5a8 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc8f5bc5 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbcbc5773 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe001c53 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe189707 drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe84012f drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc012045c drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2ec3dd6 drm_core_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4000f9f drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc414c422 drm_vblank_offdelay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc485709d drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc70508ed drm_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc78e47ae drm_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc8d6deb0 drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb111a25 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb9a5500 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0xccf65921 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcdae9a81 drm_sysfs_connector_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce809810 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcec39ff5 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd20bec79 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd38fc1f2 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd40247f7 drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd42ee632 drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5f65b3f drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd7a7e266 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda07e0ed drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb5a5852 drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb86fe16 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdcc5ab73 drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0cd2849 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2ef97e4 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe4c12673 drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6f46e6e drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7418db3 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7848e5b drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe864211c drm_core_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea6d6fdd drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec345b1b drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0xefdf9b69 drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf08d712a drm_mode_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf446a0e2 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf5136895 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf54d6b1b drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf87d94db drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9a920d7 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9be1ca4 drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb497216 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb5fa801 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcdf750d drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd063935 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfdc43f77 drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe4a68c7 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe5df03b drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffbeade3 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffee4791 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0716b87f drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0b05158b drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0bd109df drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x107ebd21 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x143f03c3 drm_kms_helper_poll_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 0x16703ab7 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x259fdb4e drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x27a6fde7 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2c3a96f3 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x354a3a71 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x360a8d0e i2c_dp_aux_add_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3a36215d drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4299e60f drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4567ae21 drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4943f4f1 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4a27ae17 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x527c9137 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x58bd7599 drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6c096f91 drm_fb_helper_restore_fbdev_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6cca78c0 drm_helper_crtc_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 0x769af961 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x774e921c drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x77820898 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x93e3f89b drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x956bb641 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x969af2a0 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x97185464 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa418399e drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa77858bb drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xab06ef20 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb0675574 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbb1bf698 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc552f2b7 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc6a7ed7d drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcfbed79b drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd1c0c686 drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd2892b4a drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd9921d5b drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe1294232 drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe940fb4d drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xee5908b8 drm_dp_aux_unregister_i2c_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeee3ac37 drm_dp_aux_register_i2c_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf053ad19 drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0xb6b59854 drm_usb_init +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0xc059dadd drm_usb_exit +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0xc634f808 drm_get_usb_dev +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x0d0bf975 host1x_driver_unregister +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x0f964dda host1x_syncpt_wait +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x291c6808 host1x_client_register +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x93c03ee0 host1x_driver_register +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xf95dd9a5 host1x_client_unregister +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 0x2914937c 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 0x85edbdbe i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xbd732c61 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xfe7283e8 i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x1306eec6 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xdb72a395 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xa6f29374 st_accel_common_remove +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xf9330b83 st_accel_common_probe +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x2e27ae1f hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x397c49aa hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x513c43d9 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x62c5a7c4 hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xb4e5c3ce hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x3665b545 hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xf477b211 hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x074d7047 st_sensors_trigger_handler +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x0ede3501 st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x111254e6 st_sensors_sysfs_get_sampling_frequency +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x11232605 st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x233f30b7 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x49f5d57b st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x56234875 st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x6855cb23 st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x69034ada st_sensors_sysfs_set_sampling_frequency +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x9df23249 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xbe2a0849 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xc73efc17 st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xd43e98ec st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xd8cdf148 st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xdfada95b st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xf9d2d258 st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0xbea180e9 st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0x0d8f408a st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x15acadae st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x2e2c7e4e st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x94e13662 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xc4f5519c adis_enable_irq +EXPORT_SYMBOL drivers/iio/industrialio 0x1190e15a iio_buffer_store_enable +EXPORT_SYMBOL drivers/iio/industrialio 0x135e3370 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x1a43af4b iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x280ef9e2 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x2f556c66 iio_buffer_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x34c08fad iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0x3f38a8b8 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x40521ad2 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x411b4166 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x6ab87c96 iio_buffer_register +EXPORT_SYMBOL drivers/iio/industrialio 0x6bbee988 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x74a5f65f iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x75bbb761 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x949613d8 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x9971a331 iio_buffer_show_enable +EXPORT_SYMBOL drivers/iio/industrialio 0xa0e8bb45 iio_buffer_read_length +EXPORT_SYMBOL drivers/iio/industrialio 0xb5b6d512 iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xbb9964dd iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0xc4182091 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0xc9b67ba8 iio_buffer_write_length +EXPORT_SYMBOL drivers/iio/industrialio 0xd1fcfc03 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe6ec2aa8 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0xf779bb6e iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x1e757cae iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0xbea60589 iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x895d0f35 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xe28555ef iio_kfifo_free +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x15db8f86 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x96a9b4bf st_magn_common_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x68a13422 st_press_common_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xec9c36e3 st_press_common_remove +EXPORT_SYMBOL drivers/input/gameport/gameport 0x33d54580 gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x45b57970 gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x49394b00 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x6155c1b2 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x6953fbea gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x74d22939 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0x92eb63ae gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xbc885ec1 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0xf86d59bb __gameport_register_driver +EXPORT_SYMBOL drivers/input/input-polldev 0x09adca36 input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x914f14d7 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xd3f92ca2 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xf1a1da7f input_free_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x7e03fc14 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x6683756e ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0x671aeac6 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x67b5b7f0 ad714x_remove +EXPORT_SYMBOL drivers/input/misc/ad714x 0xe2da2318 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 0xc8c8a50b cma3000_init +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/sparse-keymap 0x05682706 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x3fe9af44 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x45f658cf sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0x56834fba sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0x5d2524a3 sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0xecca138c sparse_keymap_setup +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x2baa3e7f ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xa4281095 ad7879_pm_ops +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x137430b5 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x1e51ac53 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 0x47d3fc51 capi_info2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x5980fa98 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 0x69819e41 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x73166470 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7a33596c capi20_get_serial +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7e6f1307 capi20_get_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8c04e149 capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f699913 capilib_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9f823278 register_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xa33f4b1a capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xa7c4fd6c capi_message2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa165d27 capilib_release_appl +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc08135b6 capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc10fe128 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xd6877848 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 0xed061606 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xeea3b15c capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x07f4f2ce hisax_unregister +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x148f0c99 FsmFree +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x59ea1691 hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x7f29ce36 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xe227344e FsmRestartTimer +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 0xff2db2cf FsmDelTimer +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x577f8b4a isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xa3651ac4 isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xae5f8d07 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 0x045aad1b mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0567d1ee bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0ddc21df recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x12ebeb0d recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x15c524e9 mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x18bb9840 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1db8b577 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4a41aca1 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4a583cac recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4cf28a3f get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x54451388 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5ea87ccb mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x614ede30 mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6c46cc58 mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7767efde get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x799524d3 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x96309324 mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9e45b899 bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa6571081 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa7e623ba dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xacd87f9a mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xbdaf937f mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xcab0f563 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 0xdeedb96e mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe87943cf mISDN_FsmInitTimer +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 0xf9fcb00c mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xfbc393a4 queue_ch_frame +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 0x35d1c31e closure_trylock +EXPORT_SYMBOL drivers/md/bcache/bcache 0x5090ff29 closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0x58884a2a closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0x6f014919 closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0x83af1c43 closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0x90481a7e __closure_lock +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe3c17af1 __closure_wake_up +EXPORT_SYMBOL drivers/md/dm-log 0x3fc19e46 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0x9fc4badd dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0xdac04d0a dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0xf1cea9e1 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x03bdb1d9 dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x0fa79d91 dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0x0fd0d5f0 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x130808d2 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x3e9255a8 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0xd0e6fd95 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/raid456 0x918e1937 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x052ee95e flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x06d21b4c flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x07a5c5a2 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x0c0756e9 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x35861619 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x4115be7b flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x4cd49b8f flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x71b73d9c flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x8ad670b6 flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x9ff9f155 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xd91a371c flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xe02d7a43 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xfedc0d57 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/common/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x53bbb2d8 cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0x5b88faf6 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x5d59dc10 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0x91884351 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/cx2341x 0xf4fc05fa cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0xadf706f8 cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0xb1d03c79 tveeprom_read +EXPORT_SYMBOL drivers/media/common/tveeprom 0xfcbe7e6f tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x01847aa1 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x07158592 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0db2695c dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0e19cd9b dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x17523ce7 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1d2b6e40 dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x28df1286 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2f963c63 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x32443ab0 dvb_net_init +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 0x3939f09d dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x41f6ded1 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x45dbd2ea dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5311aaec dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5e10a745 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x629f9d31 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6b274228 dvb_frontend_suspend +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 0x7b3d5015 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x81b801ca dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8633f37b dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9c19040b dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9c6a0170 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb6223c61 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xbd392d58 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc9f48b5d dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xcc622f21 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd090b223 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd68a099e timeval_usec_diff +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdb1a8bd4 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdb9814c4 dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdc094c39 dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xddfe0a4e dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe7a7d354 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xed39b331 dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xef335368 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf48116c6 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfe550f2d dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-frontends/a8293 0x66a51942 a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0x79b7de6b af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9033 0x9c13fe0c af9033_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0xe0aeaef1 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x0c1721fc au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x31a8640b au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x39700418 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x5004f619 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x7189ffc8 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x95e173eb au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xaf9d6d79 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xdad734cb au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xf83077b9 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0xdf5d713b au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0x9159759c bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0x06c22707 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x8825283c cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xf266bd98 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0x9b032013 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x4c64c468 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xf1a19fba cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0x8227e158 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x67cfbf3f dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x77ad58d9 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x786ed976 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x8076aacd dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xd239b555 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x0ed94d1f dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x19bfbb9a dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x22f61df5 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x44737182 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x4996fbe2 dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x7ab90e40 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xa110201a dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xa2cd0c06 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xae241d5d dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb593aa73 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb670fbc4 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xc20c4aec dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xc35c321b dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xde03b623 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xeb9a55ab dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x4efc39ee dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x1c39a071 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x22b0d25a dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x41dd622b dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xc3da1ced dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xf227dc74 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xfef19e14 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x9520f6ac dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xa15326ae dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xdfb5c4cf dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xe6e66d81 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x1864a595 dib7000p_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x33a7c083 dib7000p_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x4c32b385 dib7000p_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x6b786ba3 dib7000p_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x87552971 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x9088a578 dib7000p_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x92156827 dib7000pc_detection +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x9855d16a dib7000p_set_agc1_min +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x9eee75a2 dib7000p_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xab6b0e34 dib7090_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xbd17e636 dib7000p_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xc17f210b dib7000p_get_agc_values +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xda6afb0c dib7090_get_adc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xdd0cdae0 dib7000p_update_pll +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xe16ab07b dib7090_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xe6583001 dib7090_slave_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x086d18d0 dib8090p_get_dc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x0fe224da dib8000_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x1652b429 dib8000_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x34482a3c dib8000_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x36083f53 dib8000_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x45dcc865 dib8000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x4b39d3b8 dib8000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x51af9027 dib8000_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x54e95488 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x620d1ea2 dib8000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x683b0711 dib8000_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x74fc1f46 dib8000_get_adc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x75c98c9a dib8000_pwm_agc_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x96422cfb dib8000_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x9c6b85b2 dib8000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xd225c758 dib8000_remove_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xdc91ede1 dib8096p_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xe38346c5 dib8096p_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xf43922d2 dib8000_update_pll +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x35f9d949 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x4cb8bc59 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x9ae94584 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xbd32ba43 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xe6487ecc dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x2fb34125 drxd_config_i2c +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0xa39eb9f2 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0x0356b141 drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0xc2c081bc ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0x0c74fb4b dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0xa46ea48c ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x16c607d2 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x37dd518a isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/it913x-fe 0x4a1b0ee1 it913x_fe_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0xb81d39d8 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0xa66a4fab ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0x880777cf lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0xd5782ee3 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0xfbbcc873 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x4542e023 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xc98ab0a2 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xdaa31822 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0x3dd423cd lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0x9967b800 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0xb1acae3c mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x716a8c86 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0x565b222f mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x677bcb60 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0x6b86e9a9 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2830 0x04c3926c rtl2830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2830 0x40bdfa25 rtl2830_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2832 0xed9b8447 rtl2832_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0x7b2a1e1b s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0xf8629142 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x25c4f517 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x62179638 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0xfa7dfc30 s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x63a8b5e9 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0x6a7609a7 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0xabb24f1b stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x39f23135 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0x563de91e stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0x6abbf3ec stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0x9d33f030 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0x6805ac7b stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x5c2ee205 stv090x_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x96c789e0 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x7224b675 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0xd9aec671 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0x38789f77 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x2a0e329e tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x48c7e143 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x98ab7257 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0x84149914 tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0xbe5bddcb tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x527d9451 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0xdac2ca97 ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0x32672e3d zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x2b44fa3a zl10353_attach +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x841d3167 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 0x44213674 soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x4d8dc8e3 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x5e267a70 soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x66696097 soc_camera_lock +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x6d5b744a soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x79891f74 soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xb3e0a2cc soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xce5a7348 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xee7fa31e soc_camera_unlock +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 0x5f3e3558 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xa9546115 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xfe2c3a07 soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x52ac7cc2 soc_camera_client_g_rect +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0xe51205b5 soc_camera_client_scale +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0xebffe9b2 soc_camera_calc_client_output +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0xf16b7296 soc_camera_client_s_crop +EXPORT_SYMBOL drivers/media/radio/tea575x 0x0f0b35f2 snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0x23804686 snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0x54e46378 snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x681026e1 snd_tea575x_init +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x3f7746d4 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x5de1fcce lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x6f5aacb2 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x9034abb2 lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x9c9fe24c lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xaad35aff lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xe46b17a9 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xfba0cfa1 lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/rc-core 0x2bcc4675 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/rc/rc-core 0xaff76890 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/tuners/e4000 0x659e2ceb e4000_attach +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x59b9386f fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0xba13472e fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x36ba3ab5 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x739f5b52 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xff0fadda fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc2580 0x230efb9b fc2580_attach +EXPORT_SYMBOL drivers/media/tuners/max2165 0x98d240fe max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x63079259 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0xfd218ec1 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0x008bce52 mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0x568aefbb mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0xed64edc4 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18212 0xd5076f8c tda18212_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0xd43a9769 tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tua9001 0x643551d1 tua9001_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 0x0375561c xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/tuner_it913x 0xb32e1a1d it913x_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x0265d6dc xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0xbfc63355 xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x60de9960 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x89ae1002 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x1b68da47 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x20dd3c58 dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x4040c785 dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x59a2ec41 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x69924947 dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x7bc553b5 dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x7faccc3e dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xc9767cd9 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xdfb88a31 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x3ba51856 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x444405b3 usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x5823eac7 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x98085f81 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x986e9672 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xa5dd9eca dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xee0ae73f dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x0e2d9b3e af9005_rc_decode +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x1a1a41db dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x30ea2c74 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x64209239 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x6f82a3e0 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x85252a75 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x90421293 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x9bfabd82 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 0xcc9d77be dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xd1cb2412 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xe21e5718 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xe92ccff3 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x1c6e57db em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x54b8dd1d em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x1dd3b0f4 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x3677327a gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x3dc09c30 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x7a237a1f gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xc6b7bd23 gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xd262e3f4 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xd965fc8d gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xfe4e7d80 gspca_suspend +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x56c419e9 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x9681e6d8 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xffbc2173 tm6000_register_extension +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x42c8e001 v4l2_ctrl_next +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x4adaf0f3 v4l2_ctrl_query_menu_valid_items +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x53c9394f v4l2_ctrl_query_menu +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x5f96a661 v4l2_ctrl_check +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x28c8b511 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x2dfb3751 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 0x751dabb2 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x116b3f53 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x692d0ab0 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x6d982ee1 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x8b88aba2 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x8ea13811 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x9b9f860e videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0xb2e509c6 vb2_querybuf +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 0x140e371b v4l2_of_get_remote_port_parent +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x18c6feed v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1bc770d1 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1d056337 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x21a60f51 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x222b90c3 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x22c58382 v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x279ce86b v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2900f2ba v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2d96e41b v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2de165a4 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2e3c0664 v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2e47854d v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2ed19e62 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x336cb3b0 v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x37706fe4 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3ab7b95a v4l2_ctrl_s_ctrl_int64 +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 0x3c726cc5 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3db7f213 v4l2_of_get_remote_port +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3f2221ec video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x42ee220b v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x50d83cf3 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x53e83145 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x54918264 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x54d5b3c5 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x58efef7b v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5ec7d62f v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x62a59aa7 v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6326706a v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6501fe83 v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x65140767 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x66357f15 v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x667b660f v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x671664d5 v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6773d04d v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6e27229e v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x710ff535 v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7759d8b2 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x780cefdc v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7bbe8de4 v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7f923f2a v4l2_of_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7faf57a7 v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x88b68e1d v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x97d7a73c v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x98157a45 v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa1138e61 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa7428976 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xad73f4c4 video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb3207e31 video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb51a166e video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb90cbedf v4l2_of_get_next_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbac4a225 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbbf99e0c v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbdc5eb73 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbeed9fee __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc12cf8f8 v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc204cd83 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc4b70973 v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc5099d2b v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc73ad816 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc7d3ec0c v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcbc93205 v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xced94e62 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd478a2b7 video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd5584f58 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd979070c video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdf9dc2ba v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe1e1b1c4 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe3f450e7 v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe6fce6f2 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe71f9a67 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf6490b43 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfbab8e0b v4l2_ctrl_poll +EXPORT_SYMBOL drivers/memstick/core/memstick 0x21f4d74c memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x2e34bb83 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x3005622e memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x337f450b memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x426be81e memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x614ce47f memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x777374ec memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa5987a36 memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xb6664a8b memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xce1e8832 memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdc840938 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0xe9155a05 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0xf92d08e3 memstick_suspend_host +EXPORT_SYMBOL drivers/mfd/cros_ec 0x4227ebba cros_ec_suspend +EXPORT_SYMBOL drivers/mfd/cros_ec 0x44d9df9e cros_ec_register +EXPORT_SYMBOL drivers/mfd/cros_ec 0x89dcf139 cros_ec_resume +EXPORT_SYMBOL drivers/mfd/cros_ec 0xf85edaf3 cros_ec_remove +EXPORT_SYMBOL drivers/mfd/cros_ec 0xfae0414c cros_ec_prepare_tx +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x79a04faa pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xc93e2e6e pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x02c368f9 mc13xxx_irq_request_nounmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x19eee3cc mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x23e1f3af mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x320a16d3 mc13xxx_irq_ack +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x3c7e7b55 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x45871415 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x7d213b81 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x7e6e95a9 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb7562c1f mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb9c3bf92 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xbfbfab0d mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xcbada10b mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xe326dac2 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/tps6105x 0x375401e7 tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x81ae9c35 tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0xecbcdf14 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/misc/ad525x_dpot 0x5faacc20 ad_dpot_probe +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x6cd0ad90 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x8a05ed90 altera_init +EXPORT_SYMBOL drivers/misc/atmel-ssc 0x307d1b37 ssc_request +EXPORT_SYMBOL drivers/misc/atmel-ssc 0x4511ca1a ssc_free +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x0e9755b9 pwm_channel_free +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x5a8b82f9 pwm_channel_handler +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x5d5c2951 pwm_clk_free +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x6a5e1f70 pwm_channel_alloc +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x73330c97 pwm_clk_alloc +EXPORT_SYMBOL drivers/misc/atmel_pwm 0xeb7f2c6f __pwm_channel_onoff +EXPORT_SYMBOL drivers/misc/c2port/core 0x1105d8b1 c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0x18bb45d0 c2port_device_unregister +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x212c88c1 dw_mci_resume +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x4d6758e4 dw_mci_suspend +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x836e1b17 dw_mci_remove +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0xe1ad2bb9 dw_mci_probe +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x0ae974bd tmio_mmc_host_suspend +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x378f2335 tmio_mmc_irq +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x6d3deee9 tmio_mmc_sdcard_irq +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x758de6be tmio_mmc_host_runtime_suspend +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x7a6fd700 tmio_mmc_sdio_irq +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x949440aa tmio_mmc_host_remove +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xb3516815 tmio_mmc_host_resume +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xbdced059 tmio_mmc_host_runtime_resume +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xddbb618d 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 0x86aa838e cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xba806073 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xd402b8dc cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x07bcb56d mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x4f0b3c68 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/nand/denali 0xa981ae1e denali_init +EXPORT_SYMBOL drivers/mtd/nand/denali 0xc847788c denali_remove +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x38cd2161 flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x897a3f37 onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x92c54b8f onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xed9129fa onenand_scan_bbt +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x0a061b85 hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x54b6e1eb hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xbf35e1be hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xea47385c hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xee421aba hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x02ee219a sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x0b0e9284 irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x37f5c5a1 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x45e5aa6c sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x6be8af22 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x6f2c355c sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x82b3e879 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xdb1f9d06 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xdc3c4afa irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xf13f93b4 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/mii 0x4cd57391 mii_check_media +EXPORT_SYMBOL drivers/net/mii 0x6072cace generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0x6365318c mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0xb875a877 mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0xbe3ae903 mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0xd36a5f62 mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0xd6fc5150 mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0xeb8f9d2f mii_check_link +EXPORT_SYMBOL drivers/net/ppp/pppox 0x14d3c948 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0x398d0bd6 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xc137fb73 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/team/team 0x0347d1d8 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0x0b817d08 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0x4859d657 team_options_register +EXPORT_SYMBOL drivers/net/team/team 0xa9b7cb99 team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0xae9bac69 team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0xb0390c3e team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0xe08152b5 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0xe4c2d040 team_options_change_check +EXPORT_SYMBOL drivers/net/usb/usbnet 0x5845e7ac usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0x74f3f949 usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/usb/usbnet 0xb053fc4c usbnet_link_change +EXPORT_SYMBOL drivers/net/wan/hdlc 0x166c2266 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x2dc85a05 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x3046e09e hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x35a600da detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x37c0610c hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x673f8c64 unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0x91c38e7e unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x9be4b467 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0xd3aa0bbc register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xd6e4dbb9 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xdb2688ca hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x11461103 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x256610b3 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x2e2dc24d ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x34607292 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4e2481d5 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x53358ce3 ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x55d59e71 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x7656625e ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xc67f4604 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xcf7478c1 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xd5d1f4b9 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xdc6acb97 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xf1dcedd5 dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xf9b00c11 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x24e26125 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x5ed42399 ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x67508b17 ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8246be6c ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x895f9dc2 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xa2734f08 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xaf096710 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xbcb6c70d ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xc55176da ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x0199ec46 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x0581d52c ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x0af0cbc5 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x1502d2f7 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x27cf1694 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4c6ddcb4 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4e1380ee ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x57f8b86b ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x75ea0fd6 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x9211dee7 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xbfbea89c ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcfb81406 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xe59f1d9e ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xf6a0f57c ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0x865c3af5 ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0x8b33452c ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0x91fc76f5 ath9k_hw_wow_event_to_string +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0x937ffd8b ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x371af044 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x83bec321 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc6b288d5 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd684cd5f ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x002f0f58 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x052ca033 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x057e7839 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x129dda7d ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x157a54dd ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1b95dd60 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x222fbf5f ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2305c6f7 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x24e6a614 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x252d8b64 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x26aefb2d ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x287685b8 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x28e49222 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2aee36b4 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2bd4aed0 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3005671a ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x30894536 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x31ee903c ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x327510ca ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x36b0dbff ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x38b78e4e ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3c846449 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3e7415cc ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x416a265b ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x42fd7c74 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x47fbd0b3 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4947681f ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4af9ee59 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4ef72d67 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4eff20ab ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4f2f9211 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x562b85a1 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5a2139cc ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5bac3e9c ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5c9c1136 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x62bded14 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x651b973f ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6b8aa771 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6cb34952 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x702a1ba1 ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7525a955 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x756e942e ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7758a476 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7c6a767b ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7f2989aa ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x80c707cd ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x82d28a84 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8736d164 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8dcd1957 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9317bd0c ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x950b4d60 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x96c8ae23 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa14cb403 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa508acb0 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xac3fbfd5 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaca83bfd ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xada324c5 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xafcbf556 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb079c497 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb30c4d83 ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb333b2ba ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb3bcedc8 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb41648bd ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xba1a8633 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbe626320 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc139659e ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc16fc6f0 ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc287edcf ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc2c99b9d ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc2fc2be1 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc333dd89 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc3cbda33 ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc6e171dd ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc9c52531 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcac48d10 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcae3e5e3 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcc6d01fc ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xccf20014 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd5dcad97 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd67bebea ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd717394b ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd79058a1 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd7d0e637 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdc6b0507 ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdd28fe56 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdf596f3d ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe7aed711 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe9482833 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeac6c18b ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xecd3fa7a ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf064def0 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf11e074d ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf175a21f ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf387d162 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf5f660f2 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf81ae457 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfd9d9e9c ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xff557218 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0xd6c7ad65 brcmf_sdio_remove +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0xfa9a6a3c brcmf_sdio_probe +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x018a8dd6 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x086fc447 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x2dc227f8 brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x335c33dd brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x340c9d4e brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3febc887 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x483d60a3 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x65985f98 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x79022349 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xaece63cb brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xb8d60b65 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xcee082e9 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xceec35b2 brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xec062204 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0f6b6a88 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1080ea17 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1c9a17d0 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1e9dc7f3 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x2513c307 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x2b573a16 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x2c0369ef hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3860b2e3 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x400334f3 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x42462598 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x45512fdc hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4ac03089 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x55bcc7c6 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7dd35c4c hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x844a6b9a hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x86a4b1ea hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x903dbf08 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x944a2d75 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xaf3a1c65 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 0xc322a345 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xda68b588 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xdfcc393d hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf01118d0 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xfac7a2ad hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xfc8f0a86 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x021a47af rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x04cb9063 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x05330f75 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x05d49f93 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x08982720 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x130015f9 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x18657f01 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1dafe51c rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1efd4b08 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x284ce987 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x287a9534 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x29e2573d _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2c754f2b rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2dcd1593 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x35b5c958 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3819f345 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3aa45623 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3d8d9bb0 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3dac209a rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x47d20321 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x50d68665 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x55077c18 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x59de1644 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5a0e865a rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5e178060 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x67ac1afd rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x68beedfc _rtl92c_phy_dbm_to_txpwr_Idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x690a90d0 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7a8a545b _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7bffe9d0 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x95af8797 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa53750c0 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbcb525fd _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc2f3d4ed rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd3addf07 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdd37c10d _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe353d914 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe5165dd1 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xed5d7966 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf4fe1379 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfcef5d85 rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x30ff522a rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x34c98c13 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x779d0bad rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xbaec408c rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x08d9fb0f rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0d90f9dc rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x3cc30683 rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x3cf54f22 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x40f4800b rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x4fe78bc7 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x514ea22f rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x52464028 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x54079cd9 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x70d04271 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7291923f rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x87b26572 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9343e89e rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9de9b928 rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa1a9d3fa rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa71225bf rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xaab16cb3 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd8f38749 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xdddfb4d3 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf5180c98 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x27c32a61 wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x3fb843cf wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x6f3994d4 wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xbb172c64 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/nfc/microread/microread 0x18190780 microread_probe +EXPORT_SYMBOL drivers/nfc/microread/microread 0xba3c6516 microread_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x2ea9c2c3 pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xea2c7f8d pn544_hci_probe +EXPORT_SYMBOL drivers/parport/parport 0x00bf181e parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x04ded69c parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x0a564873 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x1fb7bf5b parport_release +EXPORT_SYMBOL drivers/parport/parport 0x274b24cc parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x2a61bcde parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x459cd2f7 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x4879d4b5 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x48f27df2 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x4f7c55e2 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0x573773f5 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x5eeab249 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x6c3c1f85 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x71b72dbc parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x81c0bd73 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0xa26f3edc parport_claim +EXPORT_SYMBOL drivers/parport/parport 0xb88b6673 parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0xbf59d729 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0xc0257854 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0xc2adb9fe parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0xc60e328c parport_read +EXPORT_SYMBOL drivers/parport/parport 0xd0a74780 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0xd238c649 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0xd3c56e62 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xd4c57eb5 parport_write +EXPORT_SYMBOL drivers/parport/parport 0xdb2d70ec parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0xe1a19bc5 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xe7ee9129 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xfb57d045 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0xfbb9e5f6 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport_pc 0x23ed81be parport_pc_unregister_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xafd50073 parport_pc_probe_port +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x205e10d2 rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x63c871f3 rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x72a25ec8 rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x7428d1d2 rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x97735cf5 rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x9ad4bdcf rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xa3a2ffc5 rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xc20d9ba8 rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xd0188ee4 rproc_vq_interrupt +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x04097cea fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x13f9c9cd fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x1e123759 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x45445c46 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x52ffcce7 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x639005e9 fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x7b63c63a fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x7be61ba7 fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x7f7d22ca fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x84ae059c fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x8fa7997a fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xe4cfd9f5 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x01dfd2d8 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x035bfff0 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0655eae1 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x06e6a582 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0876834a fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0a5e42dd fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0b0dc5e5 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0e037e74 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1b83bb9c fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1c1fa077 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1f2f93a5 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2b08c9a5 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x398771bf fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3c22e544 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x42218a84 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x45f929d0 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4647b45a fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4ae06f0e fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x54ee114a fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x55c85f68 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x68056910 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6903fd80 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6a338dba fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x71b41ed5 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x75d1676b fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x76c40bad libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7dd34d47 fc_change_queue_type +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x80175f90 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x838faa32 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x870e7da2 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8bd2cf24 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8dffd6df fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8ffef501 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x911383ea fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9362e897 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x984032c4 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa4216a67 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb6668580 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbdf1f729 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbeb775fc fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc5741d92 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc767ea23 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc90d8a93 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc9be1ead fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd0c549f6 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd2f72c84 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe1c70949 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe1ed07eb fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xed729483 fc_change_queue_depth +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf50fe9fb _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf981f45e fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfda91cfe fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x29d94481 sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xbc0aee69 sas_wait_eh +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xe2116e90 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xe4139fbd sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1523d343 osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1bfc279f osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2188be6e osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x287d0c55 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x29634e3b osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x37ff94b2 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3f047093 osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x438ba699 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4f5f7be5 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x53af1f14 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x65ce1a59 osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x65f82ca1 osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6c411145 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x71baece5 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x742a59fe osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x784b016f osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8a50684c osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x919aad90 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9490605c osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x96e2255a osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9f413f95 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9fd90269 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa0797097 osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa0826ee2 osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa9845052 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb58c21cf osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xbb25fb9d osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xbbce5061 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xbd72946c osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xbf71600d osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd4bfe378 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd672c866 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe3c1a02c osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe41b4599 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf5332f00 osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf7eed8ef osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/osd 0x20ba7a3e osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0x536bfd9d osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x9d87bbe4 osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xbe023002 osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0xe47c0597 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xf7716fe6 osduld_put_device +EXPORT_SYMBOL drivers/scsi/raid_class 0x1893714b raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0xa7c1d488 raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0xe792cc8b raid_class_attach +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x12e3f6f9 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x28f014e3 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3900d82e fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x4688a566 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x5b299cc2 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x65cc1e39 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x6d2f988c fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x6dac1966 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7ce4ba12 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x840dde5b fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x8f8ca862 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xa10258c6 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xd4c6ebd1 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x017da067 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x05a17cbf sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x17fb2436 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2c7fff6a sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3245ac9f sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3d4a90a2 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x53b52c37 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x55a5407e sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5d053170 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x70feda84 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x750866b7 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7c05ac5a sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x81a84215 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9d32b21a sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa3a5098e sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xaab8709a sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb17375b0 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb2606dee sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc13efbe3 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc53e00a6 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xcf86f643 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd1291c06 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd88ed785 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe5e2ce6b sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xea4cf821 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf52f9851 sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf7235413 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xfd23950e sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3c2acad5 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x5b2d145b spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x86170c93 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xe23ea235 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xf9a2f0f8 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xb10f586b srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xb636f985 srp_rport_get +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xc5a0035d srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xfd67de80 srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x71fcd30d ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x963b699b ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xc69310d8 ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x3fbb89d6 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x40f04b32 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0x4633559e ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x5814b957 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x5f527e06 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x8f133797 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0xb0849a55 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xb52966be ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0xb668f2fa ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0xbafd2da7 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0xbda02783 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xc127c7b6 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0xd1e3078c ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0xd203a380 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xd4fe688e ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xdbe55016 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0xe865be24 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0xfbf5127b ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x3a6d7006 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xdd14dc8d adt7316_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x38d0e29b ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xf8f870ff ade7854_probe +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x010b7b9d lnet_net2ni +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x044732ab lnet_set_ip_niaddr +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0852c30a lnet_unregister_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0bce7eef lnet_counters_get +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0ebc88c6 lnet_copy_iov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x13215268 the_lnet +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 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 0x2d04aec2 lnet_extract_kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x33202a6c LNetGetId +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3558e584 lnet_iov_nob +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 0x4bb00492 lnet_copy_iov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x4f9cb871 lnet_extract_iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x523209b0 lnet_copy_kiov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5811a721 LNetInit +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 0x6f7be171 LNetEQGet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x722c76e5 LNetMDAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x79f6df94 lnet_register_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7d59a7fe LNetMEInsert +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7dfd6fba lnet_kiov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x854ab844 LNetEQWait +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x8a3064f2 LNetSetAsync +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x8f7cc75b lnet_set_reply_msg_len +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x948eb004 lnet_create_reply_msg +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9de986d3 LNetEQAlloc +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa01f8dd3 lnet_finalize +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa8c2760b LNetFini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xaa414970 LNetMEUnlink +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xaa9b477e LNetMDBind +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb75f7953 LNetEQFree +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xba5566d2 lnet_acceptor_port +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xbf0760a2 LNetMEAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd5ca67be lnet_copy_kiov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd85b51d7 lnet_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xdd32270c lnet_notify +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe42999a5 lnet_parse +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf1b316bf LNetSnprintHandle +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 0x37128023 client_fid_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x375e6f8d LUSTRE_BFL_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x392149dd seq_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x95a052b7 client_fid_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xae61cff5 LU_DOT_LUSTRE_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xc8fa7a48 seq_client_alloc_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xc997a02f LUSTRE_SEQ_SPACE_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xeb3a648d seq_client_get_seq +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xecee2727 LUSTRE_SEQ_ZERO_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xf4a6bdc4 seq_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xff93712b seq_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x2ba513a2 fld_client_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x4a44649c fld_client_proc_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x4c5e1190 fld_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x75bb7752 fld_client_add_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xa2c0720e fld_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xa4fd9207 fld_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xeac0cfa4 fld_client_del_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x000c507f libcfs_debug_dumplog +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x00c881f6 cfs_cpt_number +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x01db5172 cfs_percpt_atomic_summary +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x03387ca6 cfs_curproc_groups_nr +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0389f857 cfs_cpt_spread_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x04d3ce6a lbug_with_loc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x069f9bb2 cfs_wi_schedule +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x08ac5b37 cfs_hash_debug_str +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 0x0f10432d upcall_cache_init +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 0x12426266 libcfs_run_lbug_upcall +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 0x1abcd8c2 libcfs_sock_getbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1c7ec980 cfs_hash_for_each_safe +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1d5a3928 cfs_timer_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1f999553 libcfs_sock_setbuf +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 0x25f22a9a cfs_hash_debug_header +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 0x29def395 cfs_crypto_hash_update_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2b1e0458 cfs_get_environ +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 0x30986343 cfs_range_expr_parse +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 0x3834f243 proc_call_handler +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 0x3ea730c0 cfs_gettok +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3ef0d90c libcfs_kkuc_group_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x411db754 cfs_crypto_hash_final +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x41ab33a1 libcfs_ipif_free_enumeration +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 0x44f07cfc cfs_pause +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x47fdb4d1 cfs_timer_is_armed +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 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 0x4c00a017 libcfs_sock_write +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 0x59013074 libcfs_kkuc_msg_put +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 0x5ca50414 upcall_cache_flush_idle +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5d3be65a cfs_crypto_adler32_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5d73c3e3 cfs_expr_list_free_list +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 0x647a7b6d upcall_cache_get_entry +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 0x66136d2d cfs_timer_arm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x67398404 cfs_wi_sched_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x680036d1 libcfs_sock_accept +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 0x6dfa9ea1 cfs_crypto_adler32_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6e6af71c current_is_32bit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6f928e1b libcfs_debug_msg +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 0x75710259 libcfs_sock_getaddr +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x790dbd66 cfs_hash_rehash_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7a3d49ae cfs_expr_list_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7b0b748a cfs_ip_addr_parse +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7c7986cf waitq_wait +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 0x8f12bb52 libcfs_log_goto +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8f45f10d cfs_init_timer +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 0x93611067 upcall_cache_flush_all +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x940ed192 libcfs_stack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x951b1b92 libcfs_kkuc_group_add +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 0xa3c07316 libcfs_sock_listen +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 0xa9dc74e2 cfs_trace_copyin_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9eae690 cfs_str2mask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xab887583 init_waitqueue_entry_current +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 0xad019238 cfs_str2num_check +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 0xbb9cb508 cfs_curproc_cap_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbc275420 cfs_cpt_unset_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbd5d492e cfs_timer_init +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 0xc2911d96 cfs_expr_list_match +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 0xc3eb614e libcfs_ipif_query +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc47433a6 cfs_capable +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 0xcafda950 upcall_cache_downcall +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 0xcbab8493 schedule_timeout_and_set_state +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 0xd15dedcf libcfs_sock_abort_accept +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 0xd6bc2ae1 libcfs_sock_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd9541990 cfs_strncasecmp +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd96f406d cfs_cap_raise +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xda09d370 upcall_cache_flush_one +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 0xde216a8c libcfs_sock_read +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 0xdfcd8209 upcall_cache_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdffc951d cfs_timer_disarm +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 0xe6555032 libcfs_ipif_enumerate +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 0xec8d6883 libcfs_sock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeceac781 cfs_fail_val +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xedf3a25a cfs_timer_deadline +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 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 0xf8efb8c5 waitq_timedwait +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 0xfbfbdc46 upcall_cache_put_entry +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/libcfs/libcfs 0xff0f98a6 libcfs_debug_vmsg2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xb1d2010b ll_direct_rw_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xc1a6d86c ll_osscapa_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xcd3cde92 ll_iocontrol_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xd1410940 ll_iocontrol_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xe24bb661 ll_stats_ops_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x03ff44dd lov_lsm_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x37815018 lov_stripe_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x45c160f9 lov_device_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xae1d7ec3 lov_read_and_clear_async_rc +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xaf1ad817 lov_lsm_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xd7578204 lov_stripe_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x054fbba4 fsfilt_get_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x4498cd1f fsfilt_register_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x5a7a9221 fsfilt_put_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x5de01627 lprocfs_counter_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x5f50e969 l_dentry_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x85d40144 obd_memory +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x86941057 fsfilt_unregister_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x94b0a557 push_ctxt +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x94cc997f pop_ctxt +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xa9ee6f89 lustre_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xb4f8ee63 lprocfs_read_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xd94212be lprocfs_counter_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xdf623799 lprocfs_stats_alloc_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x14a47f31 it_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x9c22b84f it_open_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0xb57d8447 it_set_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0xf46a886f it_clear_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mgc/mgc 0xdc287f95 mgc_fsname2resid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0067f365 cl_lock_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01665e34 class_parse_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x017b1970 lprocfs_free_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x02d0687e cl_offset +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x033b3593 dt_index_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x035852d0 lustre_swab_llog_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03649103 class_manual_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0521b010 lu_context_key_quiesce_many +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 0x0668f1d1 cl_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0673370b cl_io_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x06775ae8 cl_lock_mutex_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x06a8a105 class_conn2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x06b4ea2d llog_cat_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07aa68bb lustre_swab_lustre_cfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x08349cb8 class_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x083942ff class_del_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x08916a93 cl_2queue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x091e567c dump_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x093220c4 lu_site_init_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0940a3d0 cl_io_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0a8d3007 class_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0aab5a87 local_file_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b99184d cl_io_rw_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0bb6ab46 class_handle_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0cbdd030 cl_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0cf99bff dt_acct_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d324b4d cl_unuse_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0db17340 lu_object_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0dd71569 cl_io_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ea2f65c cl_page_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0f5fbbf7 md_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0f99a9c6 cl_io_lock_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0fa3ac75 lu_object_find_slice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0fb1f611 cl_lock_mutex_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0fe91547 obdo_to_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10ad5806 cl_io_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11495519 lprocfs_write_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11abbe4f llog_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11bb5d6a lprocfs_rd_connect_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11e30a49 cl_page_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11fe3c13 lprocfs_nid_stats_clear_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x120a3299 cl_object_attr_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x12b5f994 cl_lock_nr_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x12ee2aff lu_device_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x141ea2a0 local_index_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1445b01f lprocfs_rd_kbytestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x14703033 dt_txn_callback_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1476b8c4 lu_ucred_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1491dc30 lu_context_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x14ea3562 dt_txn_hook_commit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x155f9b76 class_import_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16d3e748 llog_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x170b47c5 llog_cat_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x17260880 obdo_cpy_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x174207b8 cl_lock_is_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x186a7c22 cl_lock_descr_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x18b8b904 lprocfs_wr_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x18bf940e class_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x196f2a82 cl_object_glimpse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x19b19e93 lustre_idmap_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1b3706e0 cl_env_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1cc487c7 capa_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1e1a0a74 class_connected_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1e3ff82b cl_page_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f3dfb0d lprocfs_stats_collect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21307495 lu_buf_check_and_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x218710ce cl_lock_signal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2206f3df lu_context_enter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x221826f1 class_parse_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x228167e3 lustre_in_group_p +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x23cafc6a cl_lock_get_trust +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x23f8b849 lprocfs_register_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x240f5b9c cl_req_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x250affde lu_context_key_degister +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 0x25c20d4b cl_io_iter_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x26278eb2 cl_page_clip +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x275cdc7a cl_env_reexit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x28bac886 llog_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2934f063 lu_device_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x297cf5e0 class_handle2object +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x29ecd828 cl_lock_disclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a8ce2a9 cl_lock_enclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ac801ac llog_osd_ops +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 0x2bb6a909 class_exp2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2bb6cf91 lu_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2d6ac5b8 cl_lock_hold_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2e2f5d30 cl_page_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2e9bb8d5 capa_cpy +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2f16c0fc cl_lock_is_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2f3cb1b7 class_uuid2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2f8b1f36 cl_io_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x319dd13d dt_txn_hook_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x32004154 cl_lock_unhold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3231fcbd cl_lock_weigh +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x328bb811 obdo_from_iattr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x331d0944 cl_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3370d0d5 cl_env_nested_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x33bac5c2 lprocfs_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3496dad9 lu_kmem_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x34caf674 lustre_idmap_lookup_gid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x36acfc38 cl_lock_ext_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x377b38fd cl_page_list_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x379fd294 cl_io_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37a9cb94 cl_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37ed6e4b at_early_margin +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x384f6d24 lprocfs_obd_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38f21f8f cl_lock_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38fb0c90 class_match_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x391f8893 lu_object_assign_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a005065 dt_otable_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b9df710 cl_2queue_init_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3cb8e3ac lu_object_add_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3e24b047 dt_store_resolve +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f02600e lu_device_type_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x40c7e1c9 lprocfs_rd_server_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4132ff57 cl_lock_user_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x41598f55 lu_context_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x417b1782 cl_object_attr_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x42125da5 cl_env_implant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x42299010 cl_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4367f8af llog_cat_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4406a446 cl_lock_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x448cdb7b cl_type_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x448e5f6e llog_cancel_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44b6a72f cl_lock_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44d0b252 lprocfs_alloc_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44e41abb lustre_posix_acl_xattr_filter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x45082e41 cl_object_has_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4533e94c cl_2queue_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x454848f4 lu_context_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x46486887 cl_object_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x46fbe078 dt_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47241130 lprocfs_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x474ed5bd lustre_swab_ll_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4782f442 cl_env_nested_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47b35f7d statfs_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x485b4f29 dt_locate_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x486089ba class_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x487ccca8 dt_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x48cd37e2 llog_declare_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x48efa2cd cl_lock_mutex_try +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 0x49cfae3b class_conn2export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ac58713 obd_connect_flags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4af4411d lprocfs_seq_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4b1451d5 lustre_register_kill_super_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4b477bc8 lu_object_anon +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4bb57ca7 class_unlink_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c4a72f4 cl_page_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c625e15 class_conn2cliimp +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 0x4d627a1b cl_unuse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e1142c9 cl_page_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e58d435 class_incref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ea7fe32 lu_context_key_quiesce +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ec20e0e cl_io_rw_advance +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f3a0a4c lu_context_key_revive_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f603bb8 cl_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4fba4346 dt_directory_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x503e86a8 class_config_llog_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50c7fc36 ptlrpc_put_connection_superhack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50ccc4db cl_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x52bfaaad class_fail_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5332848d lprocfs_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x53deb2c3 cl_page_list_move +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x547f9dfc lprocfs_rd_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54885f87 ldlm_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54b1082f lprocfs_rd_numrefs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54e9fac9 cl_io_iter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x553f3710 cl_lock_discard_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x554b49d5 dump_lniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5575db7d cl_io_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x558b4967 local_file_find_or_create_with_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x558bec27 obd_ioctl_getdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x55c1909f class_process_proc_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x55ea8bfd cl_2queue_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x56091099 cl_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5627cce8 lprocfs_oh_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x564e9d44 init_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x570d09ae lustre_swab_lu_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x57500aef dt_record_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x58382330 cl_use_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x587fb4d3 cl_page_is_under_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x58a2978e llog_cat_init_and_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x58ebb246 dt_declare_version_set +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 0x5a84367f __llog_ctxt_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bc022c5 lprocfs_dt_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5be689e5 cl_queue_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d34ae0d cl_lock_mode_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ed188a9 lprocfs_add_symlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fa63318 lu_context_key_degister_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fe97b73 block_debug_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x61e81d6d cl_page_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x622cf34b cl_lock_descr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x62dcaa30 obdo_refresh_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631a518d mea_name2idx +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631fd7b9 lustre_ext_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x637239ac lustre_idmap_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63b3a447 class_devices_in_group +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63c2b27e class_disconnect_stale_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63d440b1 lustre_idmap_lookup_uid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63fb3d50 lu_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x647dcf19 lprocfs_nid_stats_clear_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6488a136 lu_context_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x64e5904d llog_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x651c72cd lu_cdebug_printer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x653c3387 cl_page_list_splice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6569f6a1 lprocfs_obd_rd_max_pages_per_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x668029a0 dt_txn_hook_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x66c3bd13 cl_lock_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6734adbd lprocfs_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x673fadfd cl_lock_user_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x677fd7f9 proc_lustre_root +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67977b42 lprocfs_remove_proc_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67a90622 la_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67dc223a lprocfs_remove +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6820269e cl_lock_closure_build +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6877da23 lu_kmem_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x687cf9a5 lu_context_key_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6890d175 lustre_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x694388c2 llog_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6978cf34 cl_page_list_discard +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 0x6ab617a7 obdo_from_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6b4e854c lu_site_purge +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6b5ad2ea obd_exports_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6bb6d421 lu_buf_realloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6c302809 cl_object_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6db50a6d cl_page_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6eb35119 dt_index_walk +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f3e6225 dt_quota_slv_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f8bbee2 lprocfs_rd_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x70a77a3d cl_page_is_owned +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x70c81261 llog_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7164f5e8 cl_req_page_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x71b08481 lu_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7204684b cl_lock_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72b762a1 cl_2queue_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72ddee4c obdo_le_to_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x742559b1 class_unregister_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x74861bb5 cl_io_read_page +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 0x763ef639 dt_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77281138 lprocfs_rd_conn_uuid +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 0x7840f670 lustre_idmap_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x789796a1 obd_zombie_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x794566f1 cl_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7961af46 cl_io_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x79b57b2f cl_env_unplant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x79fe77e9 llog_cat_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7ad8e3af lprocfs_alloc_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b4fc57b at_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b5d49af obd_devs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7c3b2e03 llog_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7ca2fb15 obdo_from_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7d414176 cl_page_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7d507ee2 cl_page_vmpage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7e1c928f dt_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7eb5b580 class_import_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7edcafa0 cl_env_reenter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f364255 class_config_parse_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f9237e5 class_handle_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fad7291 raw_name2idx +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fe5561a obd_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x802105fa lu_object_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 0x80a9317c class_new_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x80c35d57 lu_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x80de6bed llog_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x811a2e7a local_oid_storage_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81742d89 obd_ioctl_popdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x820e437f capa_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x831f656c class_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8365f224 llog_open_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x83b909cb lprocfs_add_vars +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 0x85e805ff cl_object_attr_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x860626a7 lprocfs_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8620f41d lprocfs_at_hist_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x863ab250 cat_cancel_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x863b9bfb cl_page_list_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x86844cfa cl_lock_hold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x873702ec cl_wait_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aa2c358 lprocfs_dt_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b481443 cl_page_list_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b5f4057 lu_context_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b842785 lustre_common_put_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ba6e479 lustre_swab_lu_seq_range +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8bb5bea0 cl_page_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8c19871b dt_record_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d17e389 class_exp2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8deaf785 cl_io_submit_rw +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e303dc7 cl_io_is_going +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8eb3197f llog_obd_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f67314c obd_dump_on_eviction +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ff84104 cl_locks_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90a83bef lprocfs_free_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90b1d5b6 lprocfs_seq_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90c8d327 lprocfs_init_mps_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x916e67ae lprocfs_free_per_client_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x917b42fc lu_context_key_revive +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x923e99e9 cl_io_commit_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92e58479 obd_dump_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9368bbd6 cl_page_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93a9c833 cl_page_make_ready +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93b46468 lu_session_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93bde13f lu_dev_del_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x94677235 lprocfs_clear_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x946f4201 llog_copy_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x94799140 lprocfs_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x94b2a7a5 dt_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x94d16e4d lu_context_key_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x94e4579d cl_object_top +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 0x95aa4c88 class_config_dump_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95ec998a lustre_groups_sort +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x96d0c324 llog_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x971b9e13 cl_io_prepare_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9767adce class_uuid2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97b9651c obd_export_evict_by_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97cb8b49 lu_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97d03783 at_history +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9898830b cl_lock_enqueue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99269163 lu_object_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x993e3563 cl_io_loop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9a89c1cd llog_cat_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1ed9d8 obd_jobid_var +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b37f865 dt_version_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9bcc4bc2 cl_page_list_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9d515e3f lu_object_put_nocache +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9d88e5e2 llog_cat_cancel_records +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dbb17b6 lprocfs_dt_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9e1f323d dt_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa09ba137 dt_lookup_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa10a8f10 dt_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa12373c8 lu_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa1667b6f cl_req_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa17aa445 cl_pages_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa21c5ea1 obdo_from_la +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2637976 cl_2queue_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa317ab9c cl_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa3f09ad8 cl_page_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4335379 cl_sync_io_note +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4b50a1a local_oid_storage_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4c0a54d class_detach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa513f7e4 lustre_groups_from_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5582efd lprocfs_rd_num_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa585476f obd_llog_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5d7e229 lu_object_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5fb234f lprocfs_write_frac_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa64dee65 obdo_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa674c241 kuc_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa6f5f0e9 cl_object_kill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa862d221 lprocfs_oh_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa8d569e8 lprocfs_rd_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa21b7a0 lustre_register_quota_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa6e3458 class_find_client_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab6ad944 cl_lock_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabf45922 capa_decrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac289faa cl_req_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac7f1596 kuc_ptr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xad2e8729 lu_object_locate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xadaac47c cl_vmpage_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xadb95ca7 cl_page_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaed8dc9e cl_page_list_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0003e0a cl_page_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb01963a6 class_uuid_unparse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0f7e160 cl_env_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0fb9886 cl_lvb2attr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb14043f0 lprocfs_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1489bd5 cl_lock_at_pgoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1a279a9 class_export_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b89b6d class_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb319db6d class_handle_hash_back +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb3f67001 lprocfs_single_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb41998cd lustre_cfg_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb58f98cf iattr_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6ba5dd5 kuc_ispayload +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb719b519 class_num2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb743ec6a dt_mode_to_dft +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb7c589a4 llog_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb83cb58f lprocfs_add_simple +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba0f20fd lu_object_invariant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba4e46ff cl_lock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba8cb0ea class_disconnect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba985283 lustre_register_client_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbaa20d75 lu_site_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbacac922 lprocfs_write_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbb1d3583 lu_object_find_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbb3ef99d cl_req_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc368d7d cl_page_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbd344e47 lu_context_key_register_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe431338 cl_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe9f5029 cl_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbee4f8e7 llog_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbefe3b3c lu_env_refill_by_tags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf9e695e lprocfs_oh_tally_log2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0310a59 cl_env_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0bf7ef2 obd_debug_peer_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0c0ed94 cl_page_is_vmlocked +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc1b9a319 lprocfs_oh_sum +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc20d9a35 cl_lock_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc22aa741 lprocfs_rd_filesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc234ac34 llog_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc2e4f370 cl_lock_state_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc44d5c74 dt_store_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc4851c70 cl_page_unassume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc65c5983 cl_page_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc7a06d25 cl_page_list_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc7b9f6c6 lu_context_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8606774 cl_object_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8bb8ae2 cl_page_list_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8dbaa87 lustre_swab_cfg_marker +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc925c1f0 llog_cat_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc989bc26 local_object_unlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9b3c667 dt_lfsck_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9dd03a8 cl_page_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9f99b73 cl_lock_closure_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xca372621 obd_llog_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xca7b68d9 cl_page_gang_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcaeb5e04 lu_object_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0739ab cl_lock_hold_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0ab67f obd_max_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb47142b lprocfs_wr_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xccf7a8de obdo_cpu_to_le +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd679f2c dump_lsm +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 0xcde38da1 class_export_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xce3b7cc9 cl_lock_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcedb140a obdo_cmp_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcee05369 class_put_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0103eae cl_sync_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0451701 llog_thread_key +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 0xd133b362 lustre_register_client_fill_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1b1478b cl_attr2lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1dacc7a obd_export_evict_by_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1f58645 lustre_swab_llog_hdr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd3014b43 cl_conf_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd3a41b51 lprocfs_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd3c80a21 cl_page_find_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd3d1f782 cl_lock_modify +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd4a8d364 cl_page_cache_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd4bd94e0 llog_declare_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd4bf97d6 cl_io_sub_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd55f751a llog_osd_put_cat_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd5918124 cl_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd69349d8 lu_env_refill +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 0xd86ad1c1 lprocfs_exp_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd9391077 obdo_to_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd979a5f9 cl_req_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda1e2241 obd_export_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda5b1ced class_find_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda6205e8 lprocfs_rd_timeouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda74761c lu_ucred +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdaae802c lprocfs_exp_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdac644c8 lustre_posix_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdadf17de llog_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb13dce1 capa_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb401de2 lu_env_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdba86148 class_search_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdc223fe5 capa_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdc3f2864 capa_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdca56fca lprocfs_rd_u64 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc40af0 class_check_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd78c0c7 lu_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde290d53 lu_ucred_assert +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde73cd63 llog_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde7d985b obd_dirty_transit_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf71b62a cl_2queue_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf91e5eb class_new_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdffbf0b6 cl_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe028cf84 capa_encrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe0e3ebb1 lu_dev_add_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe121a095 cl_lock_extransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe1eb79b3 local_index_find_or_create_with_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2d3c165 cl_io_submit_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2db77a2 cl_enqueue_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2eb4470 class_get_next_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe3323f5d class_handle_free_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe36f3bf0 cl_page_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe429c6b6 dt_txn_callback_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe4f329d8 lprocfs_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe65d5416 llog_osd_get_cat_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe76fce89 class_register_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7d83236 cleanup_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8218027 llog_cat_declare_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8345789 cl_lock_closure_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8e84c32 class_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeb1b95c7 cl_sync_io_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeb3f388a _debug_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeb4784e5 lu_device_type_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xebbcd223 class_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec7d6b85 obd_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeca74c25 lu_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed1f335b cl_io_lock_alloc_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed6b116a llog_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed9215f8 llog_init_handle +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 0xeffc7b1b llog_declare_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf01e2527 server_name2index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf193a6b7 class_name2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf22207e3 cl_page_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2fd6695 statfs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3253e15 cl_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf37c6c90 llog_exist +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3d949d9 class_disconnect_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf427e6b7 cl_page_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf477589b dt_try_as_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf490d5f9 class_del_profiles +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf4a4def6 lu_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf50d6fbd lprocfs_rd_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf55a2a4d class_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf60d4659 capa_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf6529c0e lustre_idmap_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf6e516c3 cl_page_own_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7020831 lprocfs_dt_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf757ce34 llog_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7f42641 lprocfs_free_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8c2df92 obdo_set_parent_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8fc0e37 lprocfs_rd_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf9565194 cl_page_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa813d06 capa_hmac +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfb3cdbe4 lustre_end_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfb90e14b cl_page_list_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbea0098 lu_types_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc7f18d0 obd_pages_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfce4103b lu_object_header_init +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 0xfdbf2066 lustre_process_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdea664a cl_env_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfe0c4868 lu_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfe294f22 lu_env_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfef077fb class_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfef6cf21 cl_req_page_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff3531dd lprocfs_rd_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff57e92d class_match_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xffee7e62 dt_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfffc1f11 lustre_swab_ost_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/osc/osc 0x5c4940c2 osc_update_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00d95039 ptlrpcd_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0199e939 ldlm_cli_enqueue_fini +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 0x0258e359 ptlrpc_commit_replies +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 0x05754963 ptlrpc_nrs_policy_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x05afc705 sptlrpc_unregister_policy +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 0x077e514b ptlrpc_req_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x08170b4b req_capsule_field_present +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x088e494d ldlm_cli_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x08bb2d27 lustre_swab_obd_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x08e60f86 ptlrpc_set_add_new_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x095587d0 lustre_msg_buflen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x09f62904 ptlrpc_request_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0a0fa6ca ptlrpc_pinger_del_import +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 0x0afa6c5a ldlm_cancel_resource_local +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 0x0ce1511e ldlm_resource_unlink_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0cf343dd RQF_LDLM_INTENT_BASIC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0e1ca141 sptlrpc_conf_target_get_rules +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0f10ea21 ldlm_enqueue_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0f71db5e client_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0f7a4e8d ptlrpc_init_import +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 0x123a40be req_capsule_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x12b6f5a3 ptlrpc_connection_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x138f1d0f ptlrpc_req_set_repsize +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x13abbc32 ptlrpc_service_health_check +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 0x1603e4d5 ldlm_resource_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x16d7f413 _debug_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 0x181b6fd9 client_import_find_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x181d9539 lustre_pack_reply_flags +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 0x1bae0270 interval_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1be21715 lustre_msg_size_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1c21e24a req_capsule_client_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1c2758fd req_capsule_client_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1c300d8e lustre_msg_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1c69174d sptlrpc_req_replace_dead_ctx +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 0x1f2384e3 sptlrpc_cli_ctx_expire +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1f453616 ptlrpc_cleanup_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1f6db0e2 client_destroy_import +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 0x21b0732f ldlm_get_enq_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2293d2f5 ldlm_lock_put +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 0x249027ee ldlm_namespace_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x24aafdba RMF_MGS_TARGET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2585a629 RMF_SEQ_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2587513c RQF_LDLM_CP_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x269554ce RQF_LDLM_INTENT_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x26f99d16 RQF_MGS_CONFIG_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x285e5b99 lustre_msg_set_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x28f3e706 ldlm_blocking_ast_nocheck +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x298f8b48 ptlrpc_pinger_add_import +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 0x2ac181f3 target_print_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2b91ab33 ldlm_lock2desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ba2c623 ptlrpc_set_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2c00c60d ptlrpc_sample_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ca92fa8 ldlm_lock_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ccd5b87 ldlm_cli_cancel_list_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d56f168 ptlrpc_pinger_ir_up +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d725c3f lprocfs_wr_evict_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d798316 RMF_MGS_CONFIG_RES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2e4562fe RQF_LLOG_ORIGIN_HANDLE_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2e4ca396 RQF_LDLM_INTENT_UNLINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2eb9c047 ptlrpc_deactivate_import +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 0x2fc3dd94 sptlrpc_register_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2fd2f737 lustre_msg_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2fe3ed73 lustre_free_reply_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x30004709 llog_origin_handle_cancel +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 0x30339980 llog_client_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3060b9c6 sptlrpc_rule_set_expand +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x306a2453 ldlm_pool_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31838cb4 RMF_IDX_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31d5c650 sptlrpc_cli_wrap_bulk +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 0x346bc9ee ldlm_lock_fail_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x352f219d ptlrpc_send_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35939a3d lustre_swab_fiemap +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35c414ef ldlm_lock_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3631e143 ptlrpc_schedule_difficult_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3694a175 ptlrpc_prep_req +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 0x39b26ddd lprocfs_wr_import +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 0x3a51917a ldlm_destroy_flock_export +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 0x3c51087c ptlrpc_request_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c63e62b RQF_MDS_REINT +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 0x3dddb3e2 dump_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f034caf lustre_msg_get_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f2d08df sptlrpc_cli_ctx_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f752e78 RQF_MDS_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x40689eeb req_capsule_has_field +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41008cef RQF_LDLM_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41ea2fac ptlrpcd_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4200f079 ptlrpc_fail_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x425224b2 sptlrpc_lprocfs_cliobd_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x42b5b4b4 ptlrpc_resend_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x42bedc11 req_capsule_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43705ee4 RQF_LOG_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4398eb0e ptlrpc_queue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43d7efc8 lustre_msg_set_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43ea48b6 sptlrpc_sec_get +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 0x483d9f1b req_capsule_set_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x48814c9f lustre_swab_ost_lvb_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x48b8859c __ldlm_handle2lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x48da01a8 sptlrpc_import_flush_my_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x495e13df ldlm_init_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x49780d98 ptlrpcd_add_rqset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x497a35e1 sptlrpc_svc_ctx_invalidate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x498c03c5 lustre_msg_set_last_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x49975d33 ptlrpc_lprocfs_brw +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a5a2416 RMF_DLM_REQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4ab60104 ptlrpc_request_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4b09ce4b lustre_swab_mdt_rec_reint +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4ba3e685 ptlrpc_unpack_rep_msg +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 0x4e3d8192 ldlm_resource_putref +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 0x5059128f ldlm_pool_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50dd74f8 RMF_STRING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50fbc388 sptlrpc_gc_del_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x52c62150 RMF_RCS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x532ac8a5 sptlrpc_import_flush_all_ctx +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 0x54266ca8 ptlrpc_request_set_replen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x54ae5021 ldlm_lock_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x54f0f581 sptlrpc_cli_enlarge_reqbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5528ace4 ldlm_lock_cancel +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 0x589caa22 ptlrpc_lprocfs_unregister_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5943d2ce ldlm_prep_enqueue_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 0x5986fec2 ldlm_lock_downgrade +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x59ca398b ptlrpc_add_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x59fae655 lustre_pack_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x59fe9185 sec2target_str +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 0x5b0902a2 sptlrpc_enc_pool_get_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b1000ee ptlrpc_unregister_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b6ba895 lustre_packed_msg_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c59e031 client_import_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c6a3a83 RQF_SEQ_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5caae213 ptlrpc_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5d0b3a7d _ldlm_lock_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5d7f178f ldlm_pool_set_clv +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 0x5ee11561 ptlrpc_save_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ef831ee lustre_msg_get_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5f5b43c4 ldlm_completion_ast_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5f96ccdd ptlrpc_connection_get +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 0x61df0d3a client_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x62192cf8 dump_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x621d82e0 ldlm_namespace_free +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 0x634321af req_capsule_server_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6352a62d ldlm_get_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x63577760 ldlm_namespace_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x645cc444 ptlrpc_stop_all_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x647b6e48 lustre_swab_ldlm_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x64ce4bcb req_capsule_client_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x653723dc RMF_LOGCOOKIES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x659801fa lprocfs_rd_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x66f0502e ptlrpc_buf_set_swabbed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6733c7d0 ptlrpc_start_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x677ce77c ldlm_lock_allow_match +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 0x6abb72ca ldlm_namespace_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6b1f88bb ptlrpc_abort_inflight +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 0x6f775789 ptlrpc_unpack_req_msg +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 0x7041a568 ldlm_reprocess_all_ns +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x71096327 __ptlrpc_prep_bulk_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x714bc6c4 ptlrpc_replay_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x723d43b6 sptlrpc_rule_set_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x725a892c RQF_MDS_REINT_OPEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x72750de7 ptlrpc_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x74840056 lustre_msg_set_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7488f782 lprocfs_wr_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75159b20 ptlrpc_resend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75a2c40d ldlm_put_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x762c7ef6 ldlm_pool_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x76435622 llog_origin_handle_next_block +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x76b728e5 lustre_swab_update_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77571cc6 lustre_swab_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77840c82 sptlrpc_rule_set_choose +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77841b59 ldlm_extent_shift_kms +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77928e5f req_capsule_server_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78bf9136 lustre_swab_ldlm_lock_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7925fc31 ldlm_cli_update_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a832f10 RMF_CONN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7b132bef sptlrpc_get_bulk_checksum +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 0x7bceabb8 ldlm_resource_iterate +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 0x7da21fc0 ptlrpc_register_service +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 0x7e990852 ptlrpc_request_bufs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7ed48ef0 ldlm_namespace_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7ee000a2 ptlrpc_recover_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f4925d8 interval_expand +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f4c99b1 ldlm_expired_completion_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f5a1cc7 lustre_msg_set_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f6d2357 lustre_msg_is_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7fae657f ptlrpc_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80a682b2 ptlrpc_wake_delayed +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 0x824ca20f ldlm_register_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x826d3c4f RQF_LDLM_GL_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x82774379 llog_origin_handle_prev_block +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x831d756a ptlrpc_obd_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x837efb00 RMF_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x84589f36 ptlrpc_pinger_sending_on_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85135801 RMF_DLM_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x855b3fc3 ptlrpc_cleanup_client +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 0x8790e9af req_capsule_client_get +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 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 0x8a41eff5 req_capsule_server_sized_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a444ae9 ldlm_cli_cancel_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a8aff90 ptlrpc_request_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ac440fa ptlrpc_uuid_to_connection +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8aeab554 ldlm_destroy_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b854254 lustre_swab_mgs_config_res +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8c978a59 llog_origin_handle_destroy +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 0x8e0ca438 lustre_pack_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e9abe4d RMF_GENERIC_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ef37a10 ldlm_pool_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8f0aceac RQF_MDS_HSM_ACTION +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8fbb3574 ptlrpc_prep_req_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8fec0451 lustre_msg_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ff4b8f0 sptlrpc_target_export_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x913e6edb ptlrpc_prep_bulk_imp +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 0x937b1ee0 lustre_swab_mdt_ioepoch +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9464f770 sptlrpc_cli_ctx_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x94d524f4 ptlrpc_send_reply +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 0x9686bfe2 ldlm_namespace_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x96fb70d6 client_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x97162641 ptl_send_rpc +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 0x988fffde req_capsule_init_area +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x98a9957b ldlm_lock_change_resource +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 0x9a9df3ed ptlrpc_retain_replayable_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b0e634f ldlm_cli_cancel_unused +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b87a9bc llog_origin_handle_open +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 0x9d16fd35 ldlm_resource_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d7ea314 sptlrpc_pack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9e6908a4 sptlrpc_sec_put +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 0xa4aac7dc ldlm_lock2handle +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 0xa6b809fe llog_origin_handle_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa6c436ca RQF_MDS_WRITEPAGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa71949a2 req_capsule_server_grow +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 0xa834ccce sptlrpc_cli_unwrap_bulk_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa84afcad ptlrpc_mark_interrupted +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 0xaa7f99b1 ptlrpc_invalidate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaac8c9bd ldlm_pool_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xabd56894 llog_origin_handle_read_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xad2b44e4 sptlrpc_import_sec_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaddc3979 lustre_swab_lustre_capa_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaea5ac54 req_capsule_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf4e9658 RQF_MDS_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf50a0d6 RMF_HSM_STATE_SET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0751fa4 RQF_LLOG_ORIGIN_HANDLE_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1b43d8a dump_rcs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb25c6a90 unlock_res_and_lock +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 0xb2b1817d lustre_swab_ost_lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb3be7092 ldlm_pool_get_lvf +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 0xb6ddcffc req_capsule_extend +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 0xb8063400 ptlrpc_register_bulk +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 0xbb208520 ldlm_namespace_new +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbb8f8968 req_capsule_server_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbba1faa8 ldlm_lock_allow_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc1370dc lustre_shrink_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbd2ad8c2 ldlm_flock_completion_ast +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 0xbe5108ab ptlrpc_buf_need_swab +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbe9b8301 sptlrpc_cli_unwrap_bulk_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbeb7e023 ptlrpc_set_next_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbf540888 ptlrpc_unregister_bulk +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 0xc01ee13a ptlrpcd_alloc_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc06c4670 lustre_msg_get_versions +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0790b71 ptlrpc_lprocfs_register_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc07d1a2f sptlrpc_cli_ctx_wakeup +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 0xc0f7d506 ldlm_cli_enqueue_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc1dfaa9a ptlrpc_request_alloc_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc20e8d05 sptlrpc_enc_pool_put_pages +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 0xc309e8b2 lustre_pack_reply_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc4caab0c sptlrpc_target_update_exp_flavor +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 0xc6d5de55 ptlrpc_req_finished +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc763fabc sptlrpc_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc76e2e93 ldlm_replay_locks +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 0xcbaf35c3 req_capsule_server_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcc4f1116 target_pack_pool_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xccb683a2 ldlm_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcd022a37 client_import_del_conn +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 0xd10dbe4d ptlrpc_req_finished_with_imp_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd1616c02 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 0xd3dae408 ldlm_it2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd537ded2 lustre_swab_obdo +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 0xd7495cb0 ptlrpc_nrs_policy_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd7910326 lustre_swab_obd_statfs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd7f472e9 ldlm_pool_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8b91b3e lustre_swab_lov_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8c411d3 req_capsule_server_dump +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 0xda2ac111 sptlrpc_proc_root +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdaf61dee ptlrpcd_wake +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 0xdc0df55f ptlrpc_activate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdcf910b9 lustre_swab_ost_last_id +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 0xddaf94cb ptlrpc_unregister_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xddbbed21 sptlrpc_gc_add_ctx +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 0xdf352623 target_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdf57697b ldlm_lock_fail_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdf64b8ba ptlrpc_set_add_req +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 0xe1416d49 ldlm_prep_elc_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe1a4401e ldlm_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe2e678fe ldlm_lock_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe30fb9f0 ldlm_pool_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe40e0a50 lustre_msg_get_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe4ba30f8 ldlm_pool_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe514f7f5 sptlrpc_sec_destroy +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 0xe60bc74e ldlm_pool_get_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe61603ca req_capsule_other_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe61837df ptlrpc_disconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe61a8d5c ptlrpc_set_import_active +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 0xe7c29aa7 req_capsule_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe9c4d014 sptlrpc_gc_add_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeabaa0b1 lustre_swab_mdt_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeabac4fc sptlrpc_rule_set_merge +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeb0cdbba do_set_info_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeb4203f2 req_capsule_filled_sizes +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeb8b249c ldlm_pool_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xebb64e68 req_layout_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xebd8e8ed ldlm_cli_cancel_list +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 0xecd2227b __ptlrpc_free_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xed1c10d6 ptlrpc_connection_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xed90f117 client_disconnect_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xedcb740d sptlrpc_name2flavor_base +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeeaad4c6 ptlrpc_reconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeef2b578 lprocfs_wr_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef1188da ptlrpc_hpreq_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef1aeca9 RMF_FLD_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef6d24a9 lock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0241d6e lustre_swab_hsm_progress_kernel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf06d89de ldlm_glimpse_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0d52b5f ptlrpc_pinger_suppress_pings +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf12d38c8 req_capsule_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf1300275 _sptlrpc_enlarge_msg_inplace +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf277c125 RQF_OST_GET_INFO_FIEMAP +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf27d49dc sptlrpc_target_choose_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf2c7f793 ptlrpc_set_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf2e2e48b ptlrpc_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf2fc1a6f ldlm_blocking_ast +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 0xf3dd3dba ptlrpc_check_set +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 0xf570563b sptlrpc_conf_client_adapt +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 0xf707b6e0 llog_initiator_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf73c1625 ptlrpc_restart_req +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 0xfa7824c3 ldlm_cli_cancel_unused_resource +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 0xfc575cf5 ldlm_pool_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfd148bf8 RMF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfd2e39ad ptlrpc_at_set_req_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff02a0e9 ldlm_lock_set_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff0642f1 ptlrpc_request_alloc_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffc807e8 sptlrpc_unpack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffe29c3f RQF_LDLM_ENQUEUE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfff25eeb ldlm_init_export +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x1140cbcd go7007_snd_remove +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x2575ad30 go7007_alloc +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x4999d309 go7007_boot_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x50745924 go7007_register_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x6aa3b373 go7007_read_addr +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x9f215419 go7007_parse_video_stream +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xc4c224ab go7007_update_board +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xe675547f go7007_read_interrupt +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xecaf4bc4 go7007_snd_init +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x46b0940a xillybus_init_endpoint +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x6d8d7d42 xillybus_endpoint_remove +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0xdfc3b668 xillybus_do_cleanup +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0xe0a883e2 xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0973df76 iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0a1b7bd4 iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0b14240e iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x106c772e iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1ad4849f iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2f3bd7a8 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x37a8f29c iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3914f64f iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x518750ec iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5638f1d0 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5ce76144 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x60a90d93 iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x638a6f8b iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x70e59977 iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x73bda098 iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7f4703bc iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x912e1766 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x92f540b5 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x95700a53 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xacd1b215 iscsit_handle_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xad827aac iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc4c05b39 iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xcea07686 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd2be2905 iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd4b5ace0 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf15230b9 iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf1f1898a iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf82d1b1d iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/target_core_mod 0x0235c8fd core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x03825412 target_fabric_configfs_free +EXPORT_SYMBOL drivers/target/target_core_mod 0x07b42b87 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x0e345a41 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x0e475692 sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x12256c3a sas_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x122b8ed9 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x13bd5639 target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x163c3781 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x1f65da1e transport_subsystem_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x2036c9ab core_tpg_add_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x25802503 sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x277ce42d fc_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x298e7313 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x2cf5d7db spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x2e5f35cf core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x3a3a2130 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x3f4c363c target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x4173e8ce core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x4593e001 fc_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x49779dc7 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x4b06e9b5 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x4f088fa9 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x523c7a48 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x56c8ba57 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x57fd3c25 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x5837c325 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x5c60445a iscsi_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x5cd5a244 sas_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x5d119a9f transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x6122a9fe target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x613f1d36 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0x676b3414 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x6f59d83e iscsi_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x7225e77d fc_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x76040ef0 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x77923439 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x79489b90 target_to_linux_sector +EXPORT_SYMBOL drivers/target/target_core_mod 0x7d2c4296 target_configure_unmap_from_queue +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x81553063 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x82f06b02 target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x8551da60 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x86cdf2e4 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x88fbca03 target_fabric_configfs_init +EXPORT_SYMBOL drivers/target/target_core_mod 0x8ae0ba90 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x8f2291a1 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x95ef8463 core_tpg_del_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x96405364 sas_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x998b61b2 target_fabric_configfs_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x9a5d3922 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x9be19513 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xa61154b1 spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0xaa4492bf core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0xaade9cd7 spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0xaaf4db80 target_fabric_configfs_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xadb377dc sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xbf13fa35 core_tpg_clear_object_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0xc765560b target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xce207029 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xd22a9ecb transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xd28bf2bc sas_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0xd9ed87bc sbc_execute_unmap +EXPORT_SYMBOL drivers/target/target_core_mod 0xda72a9ce transport_subsystem_release +EXPORT_SYMBOL drivers/target/target_core_mod 0xde97872c __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xdf987ae3 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xe274af84 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xe80bf9f0 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xec6a9740 iscsi_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf20564c1 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0xf4a2331a iscsi_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0xf834c972 fc_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf9cad0e3 transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xfafb35b4 transport_wait_for_tasks +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x1312fea3 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0x8f01740d unregister_gadget_item +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x05c172fb gether_setup_name_default +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x05f5bb7f gether_get_dev_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x0c4c679a gether_get_qmult +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x270ee844 gether_set_gadget +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x359f0cd2 gether_set_dev_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x55fe7868 gether_get_host_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x66b09c25 gether_set_qmult +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x85dfc1f0 gether_get_host_addr_cdc +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x97bc7cc9 gether_setup_name +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x9bd10079 gether_connect +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xa3e5853a gether_disconnect +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xaacbc4bf gether_get_host_addr_u8 +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xce1efc2f gether_get_ifname +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xf7327519 gether_register_netdev +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xfffd8441 gether_set_host_addr +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x3a6d4f22 rndis_free_response +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x3ca38e3a rndis_signal_connect +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x4ca90996 rndis_signal_disconnect +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x5d22b406 rndis_register +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x785d494b rndis_msg_parser +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x840dd143 rndis_deregister +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x988ad2a2 rndis_set_param_vendor +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x9acf72e4 rndis_set_param_medium +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xa90054ee rndis_uninit +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xb971ebca rndis_get_next_response +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xc38fb24b rndis_set_param_dev +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xcdb2ccd2 rndis_rm_hdr +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xd2fe47b1 rndis_set_host_mac +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xfab4250a rndis_add_hdr +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x10a8b1f3 fsg_lun_open +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x12d5acca fsg_show_file +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x1710b539 fsg_fs_bulk_out_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x1b1cc3af store_cdrom_address +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x2933ee1d fsg_ss_bulk_in_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x2dfc3830 fsg_lun_close +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x398778e1 fsg_ss_function +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x3c927d6f fsg_show_cdrom +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x3e2f570a fsg_store_cdrom +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x423845e4 fsg_ss_bulk_in_comp_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x56344daf fsg_hs_bulk_out_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x5795b1ac fsg_store_removable +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x5d99727b fsg_store_ro +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x7c622990 fsg_show_removable +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x82fc43ff fsg_lun_fsync_sub +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x857b6dc2 fsg_hs_function +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x95cffb3e fsg_hs_bulk_in_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x9913cee8 fsg_show_ro +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x9a47687d fsg_store_nofua +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xa5cae92f fsg_ss_bulk_out_comp_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xa5f99b69 fsg_fs_function +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xb52ba28a fsg_intf_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xb54d0d95 fsg_fs_bulk_in_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xc91ed5e9 fsg_store_file +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xd22dff1c fsg_show_nofua +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xf4efc0c8 fsg_ss_bulk_out_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_rndis 0xe2b18bb8 rndis_borrow_net +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0x5a78ea1f sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x1768e0f3 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x1f492745 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x21415261 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x45356895 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x4da79ad4 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x5adf79db usb_wwan_set_termios +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x72b0d31f usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x8cd7e4c3 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x92baa732 usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xcfd8efd4 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xd43db62b usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xd9288619 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xdadac905 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xe98adc84 usb_serial_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xe9b15eeb usb_serial_resume +EXPORT_SYMBOL drivers/vhost/vringh 0x0dda8c5a vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x1f063017 vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x2e91ca97 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x367ce26a vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x36dfce73 vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3eaf442a vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x3fa42e4f vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x5dafbd4e vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x66af098b vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x6d0e7948 vringh_abandon_user +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 0xaf8e4a0e vringh_notify_disable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xafb47dae vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0xc884d704 vringh_notify_disable_user +EXPORT_SYMBOL drivers/vhost/vringh 0xc8bee0a4 vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xd11d2709 vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xda4ea4cc vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0xfc7dcad2 vringh_getdesc_user +EXPORT_SYMBOL drivers/video/backlight/generic_bl 0x366d19ef genericbl_limit_intensity +EXPORT_SYMBOL drivers/video/backlight/lcd 0x9ef1364e devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xaed393f2 lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xb2c13855 lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xfb11a1ae devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/output 0x69e60bf2 video_output_register +EXPORT_SYMBOL drivers/video/output 0x9fdc5a09 video_output_unregister +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x622b883d w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x89e57116 w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x8ef7f946 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xc6b8e9ad w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xc136cfcf w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xd32ae889 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x23aa7d63 w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xeaccfc4d w1_ds2781_io +EXPORT_SYMBOL drivers/w1/wire 0x74069c84 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0x905f325d w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0x9938d043 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0xf457c2e6 w1_unregister_family +EXPORT_SYMBOL fs/btrfs/btrfs 0x27476846 ulist_reinit +EXPORT_SYMBOL fs/btrfs/btrfs 0x41e6a9d2 ulist_init +EXPORT_SYMBOL fs/btrfs/btrfs 0x7e2ee765 ulist_free +EXPORT_SYMBOL fs/btrfs/btrfs 0xa2eec2e8 ulist_fini +EXPORT_SYMBOL fs/btrfs/btrfs 0xb1320bc8 ulist_add +EXPORT_SYMBOL fs/btrfs/btrfs 0xb42289d2 ulist_alloc +EXPORT_SYMBOL fs/btrfs/btrfs 0xc2c745db ulist_next +EXPORT_SYMBOL fs/configfs/configfs 0x4b00a430 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x69bd97da configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0x6a3544ae config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0x70f90bf7 config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x87a4fbca config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0xa34d8996 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xb5aa91af config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0xbd3b36c1 configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0xd21cd71c configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xe0018a88 config_item_init +EXPORT_SYMBOL fs/configfs/configfs 0xe77ea769 configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xfd49c23e config_item_get +EXPORT_SYMBOL fs/exofs/libore 0x15bebde2 ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x3e0083f7 ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x45a5ecb4 ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0x6b3df70d ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0x6c8e88f2 ore_create +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xac598e3e ore_remove +EXPORT_SYMBOL fs/exofs/libore 0xadc5b291 ore_read +EXPORT_SYMBOL fs/exofs/libore 0xbbc5f453 ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0xd8236594 extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0xeb79a0c0 ore_write +EXPORT_SYMBOL fs/fscache/fscache 0x05b2676d __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x07a0d1dc fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x0b87cef0 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x18af8215 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x19c7c961 fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x1c77217b __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x1f027422 fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0x2033b267 __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x20ae5cf1 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x21ae8e85 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x25631afd fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x310700de __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x4505e64a __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0x45e65ac7 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x48fe3011 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0x4c2b6e40 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x66b430f0 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x68186be8 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0x7109e794 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x79c20c24 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x7a600e64 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x90cf05f2 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x9bd55433 __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xa2f4aa82 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0xa84fc86c fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0xae009768 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xb0c585a9 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0xb103b175 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0xc028491b fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0xdd7bb4a4 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0xe6139f21 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0xe613d35c fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0xe89924dc __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xee210d0a __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0xf023e11f __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xf8d84062 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0xfc4034dd fscache_object_destroy +EXPORT_SYMBOL fs/nfsd/nfsd 0x35e33c1e nfs4_acl_write_who +EXPORT_SYMBOL fs/nfsd/nfsd 0x5a157ae4 nfs4_acl_get_whotype +EXPORT_SYMBOL fs/nfsd/nfsd 0xa0f4b528 nfs4_acl_posix_to_nfsv4 +EXPORT_SYMBOL fs/nfsd/nfsd 0xb25b2957 nfs4_acl_nfsv4_to_posix +EXPORT_SYMBOL fs/nfsd/nfsd 0xe13337f0 nfs4_acl_new +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x2d84c702 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x3069cd24 qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0x4b25d1b6 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x9e91ea21 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xd578fa83 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 0xa7587646 crc7 +EXPORT_SYMBOL lib/crc7 0xd80c3603 crc7_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 0x08b05f73 lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x2686c90f lc_get_cumulative +EXPORT_SYMBOL lib/lru_cache 0x46fbdfab lc_find +EXPORT_SYMBOL lib/lru_cache 0x5817613d lc_del +EXPORT_SYMBOL lib/lru_cache 0x79fae9f7 lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x85cb3257 lc_reset +EXPORT_SYMBOL lib/lru_cache 0x906dc1af lc_try_get +EXPORT_SYMBOL lib/lru_cache 0x9da3f346 lc_set +EXPORT_SYMBOL lib/lru_cache 0xaf36660e lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0xbb720813 lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0xc418dc0b lc_is_used +EXPORT_SYMBOL lib/lru_cache 0xc63c4ce8 lc_committed +EXPORT_SYMBOL lib/lru_cache 0xd91d1d0a lc_create +EXPORT_SYMBOL lib/lru_cache 0xda2a1a5f lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0xe4fd51f2 lc_put +EXPORT_SYMBOL lib/lru_cache 0xe56bf09b lc_get +EXPORT_SYMBOL lib/lru_cache 0xf1edcc81 lc_destroy +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/802/p8022 0x23301ec7 unregister_8022_client +EXPORT_SYMBOL net/802/p8022 0x32acd884 register_8022_client +EXPORT_SYMBOL net/802/p8023 0x8431b389 make_8023_client +EXPORT_SYMBOL net/802/p8023 0x9305fed3 destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0x381ca198 register_snap_client +EXPORT_SYMBOL net/802/psnap 0x4de1e3ca unregister_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x0720f75c p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x0766da3b p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x152ecdf9 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x17555ef6 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x1a37c7e9 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x1b5f71dd p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x272670d2 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x2856af05 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x2bf8d5dd p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x2f56dab7 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x300558b7 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x313d1d96 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x315131d8 p9_client_setattr +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 0x4d43f9eb p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x4f331379 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x51f93499 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x5d3d158c p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x606232d3 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x6193cb90 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x62acc5ca p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x63f4cae1 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x6540a480 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x66fca51e p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x6f2c821e v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x7235b56e p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x7498aa6e v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x81d7dacb p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x8d7ed964 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x8fd26746 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x977a0030 p9_nr_pages +EXPORT_SYMBOL net/9p/9pnet 0x9b29249d v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x9cf47cf2 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0xa0058925 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0xa3167e24 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0xa88e24fb p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0xad2f72ea p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0xb51bd54a v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xc8841c30 p9_payload_gup +EXPORT_SYMBOL net/9p/9pnet 0xd0900a44 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe7ea6341 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0xeaa8670e p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xef81e380 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfa9f46e1 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/9p/9pnet 0xfdb32d6f p9_is_proto_dotu +EXPORT_SYMBOL net/appletalk/appletalk 0x78e34ed2 atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0xb67eadf7 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0xd4f7389e atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0xfad21b72 aarp_send_ddp +EXPORT_SYMBOL net/atm/atm 0x01f544cc vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x07181e36 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x2f9f9168 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x49e86da5 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x72b2b694 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x73283142 atm_charge +EXPORT_SYMBOL net/atm/atm 0x8104d518 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x82d7d936 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x8ceaa2a6 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xa6216c0f vcc_release_async +EXPORT_SYMBOL net/atm/atm 0xa74946e6 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xb6bef02e atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0xf1774b53 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/atm/atm 0xfc5b9d5d atm_dev_release_vccs +EXPORT_SYMBOL net/ax25/ax25 0x026c1368 ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0x0534f02c ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0x1fc4729d ax25_find_cb +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 0x47686eb1 ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x50c65456 ax25_hard_header +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x68262abd ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0x686120e3 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x86565afc ax25_rebuild_header +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xc4522d7e ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0xc991ca99 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0211d23d hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x022f82cc __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x06820f37 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1d0b7189 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x27de74e0 bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2e0fa66e hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x34d52da1 l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3b6d8c4f bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4242a5f4 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x468ab158 hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4bd0c90e l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5252c784 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6a46da56 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7602e067 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7b9c35ff hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7c640527 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7e4705bb l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8296b4ce __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x84ee3c4c bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9128e56f bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9531d507 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9818d809 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa00a544d bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa9bd7e60 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb61a0c3b bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb969201e hci_recv_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc28dfb56 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc5822b19 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xccedb72b bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcfbe5cd1 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd22ee27f bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd60dd244 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd845fd3c bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe7dd13cf hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe80d8690 bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe9fc1c6b hci_recv_stream_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0xeb82bab1 l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0xec13ba12 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0xed058e39 bt_sock_ioctl +EXPORT_SYMBOL net/bridge/bridge 0x4ac4c085 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x1b7635e4 ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x31af08a0 ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x8d186393 ebt_register_table +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x1dd53b71 caif_connect_client +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x6ca17dbf caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x8f1a6924 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 0xa9526102 get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xe9c2a845 caif_disconnect_client +EXPORT_SYMBOL net/can/can 0x4e4b64ce can_proto_register +EXPORT_SYMBOL net/can/can 0x5dd82cb7 can_send +EXPORT_SYMBOL net/can/can 0x7e34feda can_proto_unregister +EXPORT_SYMBOL net/can/can 0xd0524872 can_rx_register +EXPORT_SYMBOL net/can/can 0xd3001403 can_ioctl +EXPORT_SYMBOL net/can/can 0xd9d896a5 can_rx_unregister +EXPORT_SYMBOL net/ceph/libceph 0x00a3b6d9 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x0806c811 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x09dbd7fd ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x0abe77c2 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x102047dd ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x10940306 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0x10b2b0ed ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x1475bf0d ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x18e89440 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x197effcb ceph_osdc_release_request +EXPORT_SYMBOL net/ceph/libceph 0x19c75843 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x1b238fc1 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x1c2615e5 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x20f7c8a8 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x2244e2b9 ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x244e367b ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x249d19cd ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x2581e6f6 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x2e020071 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x2e6e7b3a ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x3158173e ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x33a8cd0a ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0x35ce2a38 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3df0ec7c ceph_calc_ceph_pg +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x4205ffd7 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x43c8d341 ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x43efd647 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x4428ea11 osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x49763567 osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x4beaa466 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x519db014 osd_req_op_raw_data_in_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 0x5a43dd5d ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0x5cec767b ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x5d6e517d ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x5ebd978a ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0x5fe4b2fa ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x63b5f81f ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x6463cff4 osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0x67bb9ed8 osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6c5d5ac1 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x6c690e05 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0x6d2d06a1 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0x6ed41be2 ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0x70828d52 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0x77692acb ceph_msg_last_put +EXPORT_SYMBOL net/ceph/libceph 0x7cdeebdd ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x7d4c30d7 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x80c6340f ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x83a94b23 ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0x8796f231 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x8a8181cb osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x9186acd6 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x95162216 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9a75481e osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x9b85e588 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x9c3dad8c ceph_osdc_unregister_linger_request +EXPORT_SYMBOL net/ceph/libceph 0x9cc1f6cd ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x9e19cc04 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa2def7e0 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0xa40bd703 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0xadd895fd __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb1673e41 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0xb3b50fc9 ceph_monc_create_snapid +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xbe83080d ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0xc0806bd2 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0xc3f100be ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc55de604 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xd29c062a ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0xd2bc3605 osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xda14aeb0 osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0xdba7ffee osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xdc402918 ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0xe3c49f02 osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xe7af3e3e ceph_copy_page_vector_to_user +EXPORT_SYMBOL net/ceph/libceph 0xe82c9c32 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0xef6b7ad2 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0xf059e189 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xf07a9db3 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xf41f53b4 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xf450d55e ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xf4d5a410 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0xf75387a7 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0xfbec0300 ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xff678124 ceph_messenger_init +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xccf52fab dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/ieee802154 0x0c39da19 wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0x22a8caf8 ieee802154_nl_disassoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x22dbc2ac ieee802154_nl_assoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x276bf0c9 ieee802154_nl_start_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x370dea07 ieee802154_nl_assoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x3f02e963 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0x53917697 ieee802154_nl_beacon_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x77b937e5 ieee802154_nl_disassoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x8d58402d wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0xa067f09f wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0xa747ed9c wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0xcef26522 wpan_phy_alloc +EXPORT_SYMBOL net/ieee802154/ieee802154 0xe54b613f ieee802154_nl_scan_confirm +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x6552c286 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x89c25783 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xf7ed07e2 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x5a3da5d7 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xd33e858f ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xfe62196d ipt_register_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x56ba552a xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0x56d7ca85 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x80b6f976 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x9eca03e2 ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x21288bee ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xbb5fb0a1 ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xc705726d ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x842cff32 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0xde6f06bc xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x14d7da96 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xea826be7 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x0384179d ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x1f2e7fa5 ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x3162a7bc ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x80154409 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x85e78196 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x87af1a44 ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x9b849514 ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xcb68e5ae ircomm_data_request +EXPORT_SYMBOL net/irda/irda 0x0219954b irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x07726757 irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x117d0641 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0x17a491c5 irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0x17cc04eb alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x1f9722eb iriap_open +EXPORT_SYMBOL net/irda/irda 0x2036ad06 irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x206eb567 irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0x2ed050ee async_wrap_skb +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 0x495c2fac irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x5509d8ad irttp_dup +EXPORT_SYMBOL net/irda/irda 0x629a1b4d iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0x6492e28c hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x6b76aa70 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x731cec71 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7e67ca6e irias_new_object +EXPORT_SYMBOL net/irda/irda 0x8982c8d9 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x8a44dd5e hashbin_new +EXPORT_SYMBOL net/irda/irda 0x908668fd irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x90c537aa irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x90ddb6bd hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x95b8f536 irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x97915bf2 irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x993ad14b irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x9c4a651a irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0x9ffda243 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0xa0613f7b irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xae0ca731 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0xb1627083 async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0xb3c13d7f irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0xb84ca5e2 irlap_open +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 0xc66691ea iriap_close +EXPORT_SYMBOL net/irda/irda 0xd6cb275e irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0xdbe8f15d irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xe1e34d8e irda_notify_init +EXPORT_SYMBOL net/irda/irda 0xe83f99ab irlap_close +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xf049f8f5 irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0xf199cba4 irias_insert_object +EXPORT_SYMBOL net/l2tp/l2tp_core 0xab67f859 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x018b4661 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x16845bb5 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x29752d06 lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x48ab7e3f lapb_register +EXPORT_SYMBOL net/lapb/lapb 0x9b7749ec lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x9eaaa8e0 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0xb87378fd lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0xd07d4f12 lapb_data_request +EXPORT_SYMBOL net/llc/llc 0x00ea2b89 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x1e9e99fd llc_sap_list_lock +EXPORT_SYMBOL net/llc/llc 0x27f2741b llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x3e6656ea llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0xa1d3295b llc_sap_find +EXPORT_SYMBOL net/llc/llc 0xa689dbcb llc_add_pack +EXPORT_SYMBOL net/llc/llc 0xcf40d245 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0xd7ad1ad5 llc_sap_close +EXPORT_SYMBOL net/mac80211/mac80211 0x009376f2 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x02074ca1 ieee80211_alloc_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x036301fd ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x03e96c5d ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x051d91aa ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x0829c8cf ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x096178d9 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x0d8d7774 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x10a43751 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x13922b9a ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x14029e80 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x1f9282ab ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x201c8e6c ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x20b31771 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x21126b8e ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x21a2ae71 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x2e00c624 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x3032ecc4 ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x380deaff ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x39378aa1 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x3cc580d0 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x3dcef720 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x46c64ebb ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x471b9b3b ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x4f0fcd34 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x520f4a07 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x545951cd ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x5b88ffdb ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x5c28cca5 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x5cd00b9b ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x616b1754 ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x6449898f rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x64893f2c __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x6d8b6140 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x6e7f873e ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0x75040947 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x75473866 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x7d31c6fa ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x84aa6ec3 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x86c13e56 wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x8fd44012 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x98f827ba ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0x9b39c867 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x9b97c395 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x9c5e6334 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0x9fe7600c ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xa001ecad ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xa1283822 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xa1fc36c4 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xa59aae9e ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xa6a729a8 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0xaa157485 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0xac7b302e __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xb75803c0 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0xb8b0047a __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xc7e9782e ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xcb5b2afc ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xcccafe99 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xd1c15361 ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0xd7b961c9 ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0xdd0c0fb9 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0xddb47d52 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xe03a6aae ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xe2182e34 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0xecfde74e ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xef96e7a1 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xf1347d3f ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xf395de03 ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0xf71a100d __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xf9a3948b ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xf9eecc44 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0xfdc96041 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0xff1355c6 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac802154/mac802154 0x040673be ieee802154_unregister_device +EXPORT_SYMBOL net/mac802154/mac802154 0x4b5a283f ieee802154_alloc_device +EXPORT_SYMBOL net/mac802154/mac802154 0x74e5615c ieee802154_free_device +EXPORT_SYMBOL net/mac802154/mac802154 0xa06513e7 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0xebb6a32e ieee802154_register_device +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0b9758bd ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x16f21771 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x2f239560 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x3229ee42 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x59cf73be ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x5cf5d83e ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x64beeab3 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x6c02715a ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x6dc7fbfc ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x7ab1589f register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x831133a7 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x9d51d1a7 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb507d009 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc2908c47 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x468922b7 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x5686dbf2 __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x95ec35b5 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_conntrack_proto_gre 0x6dbdc937 nf_ct_gre_keymap_flush +EXPORT_SYMBOL net/netfilter/nf_nat 0x21f832cb nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0x2e5846b8 nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0x5c81043f __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x6d304b60 nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0x94acfd48 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0x9b0bfde1 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/x_tables 0x08c473b7 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x145aca7d xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x552c673b xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x5e3d1fba xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x8e46a966 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x93544a27 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0xa813e333 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xac589b56 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0xb28f5ef1 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xd87ae60d xt_check_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0xe67198d7 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xf2052321 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xf9486e2e xt_unregister_target +EXPORT_SYMBOL net/nfc/hci/hci 0x0072a76a nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x1b8e938f nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x27c6cc4f nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x3b2f7737 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x3c2d9b25 nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x4efb86b8 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x5a5552f0 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x6c30a3b7 nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0x78a40197 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x7b824606 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x7d2b8472 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x82c4fefc nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0x978715cd nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0xa45d85b6 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0xa6e6a438 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0xa8103eeb nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0xb6eebb6b nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xf9b11ac5 nfc_hci_send_response +EXPORT_SYMBOL net/nfc/nci/nci 0x10c8bcd5 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x2ecd75b2 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x6930426c nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x6bc63550 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xcf5daa8b nci_free_device +EXPORT_SYMBOL net/nfc/nfc 0x06269ed2 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0x1d50fbf3 nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0x21a0003d nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x22841d24 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x23342b17 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x332c2e72 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x4507d72d nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x69fa343c nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x75204be6 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0xa1a74d9e nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0xab494da4 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0xb5150df6 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0xb7694a9c nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0xbda84fdf nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xc4f1487a nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0xccb0fb43 nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0xceb800bc nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0xd237d3f2 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0xe28d6464 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0xe4433409 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc_digital 0xb8ba66fa nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xd98183ce nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xdddd1a40 nfc_digital_register_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xe5929b0d nfc_digital_unregister_device +EXPORT_SYMBOL net/phonet/phonet 0x01cbc5dc pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0x43805848 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0x6e472c51 pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x7e8a802d phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x8ec3a4e2 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0xb3aef21c phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0xe4cf145f pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0xee1b4590 phonet_header_ops +EXPORT_SYMBOL net/rds/rds 0x5031b8c5 rds_str_array +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x038aa5c4 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x15a7265e rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x31acba0a key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x51c49038 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x7c54035c rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x96da3428 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x9f3c15dd rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb718f9b4 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd3b0ad1e rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd677252a rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xdff43994 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe2837e03 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe7716ea8 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf56b6664 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf7bfe5d8 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/sctp/sctp 0xbc6aa6ab sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x0052f13b gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xa6028797 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xc9e3f894 gss_mech_get +EXPORT_SYMBOL net/sunrpc/sunrpc 0xf86db9b9 svc_pool_stats_open +EXPORT_SYMBOL net/wimax/wimax 0x78c16524 wimax_reset +EXPORT_SYMBOL net/wimax/wimax 0x92f64c7d wimax_rfkill +EXPORT_SYMBOL net/wireless/cfg80211 0x02164ad9 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0c89bc4a cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x0d26343e cfg80211_inform_bss_width_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x0e582ecc regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x10846492 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x17a58bd3 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x18812d4d cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1cab1754 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x1d304a91 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x22523a6a cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x23b51166 cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x25935c50 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x2679d160 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x2f01179b cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x33e8e33b cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x3430452a cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x3e2116e7 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x3edaec9b cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x3f870711 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0x406a8302 cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x4779212f cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x4c3b5878 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x4c40b2fb ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x4dd26822 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0x549ae50f ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x585d46f8 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x5a7be315 cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0x5c00f3f1 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x5d77145e cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6b9b0500 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x77730ce1 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x78a8785e cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x7aa29c1b cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fad931c cfg80211_del_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x81c21fec cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x858e3a00 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x86310e82 cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x8ca0f860 cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0x8ea9f43d cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0x914a8aca cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x9218cf42 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x92a07ed1 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x92e8dc81 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x93b6ca1d cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x94bdc24a cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x9ba1fccc freq_reg_info +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 0xa4a4d91e wiphy_new +EXPORT_SYMBOL net/wireless/cfg80211 0xa69b9e37 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xad47524c cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xb1556209 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0xb58edbf5 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xbdf81824 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xc0f07835 cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0xc15c8611 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xc15f977e cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc716e0a3 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xcf618a57 cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0xd1bd8207 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0xd25b2d5c cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xd340d872 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xdce06b8a wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0xdf640ada cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0xe09ed8e1 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0xe7fab492 cfg80211_inform_bss_width +EXPORT_SYMBOL net/wireless/cfg80211 0xee41ff7b cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0xee42db3c cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0xeed39ce0 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0xf09601e7 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xf3c1f710 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0xf3c74e84 cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0xf584fdf6 cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0xf87cf170 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xf9809c93 cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x2d0f99e5 print_ssid +EXPORT_SYMBOL net/wireless/lib80211 0x5f80ac2d lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x66b4a4a7 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0x7dc15e91 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x9e94b803 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0xa519160f lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xcd54c82c lib80211_crypt_info_free +EXPORT_SYMBOL sound/ac97_bus 0xb05b438e ac97_bus_type +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 0x5a79f634 snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6bb71038 snd_seq_delete_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x743b098a snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0x78a1dc53 snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7ac2f329 snd_seq_expand_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7b8699eb snd_seq_event_port_detach +EXPORT_SYMBOL sound/core/seq/snd-seq 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 0xfeb7dc0f snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x3a57f235 snd_seq_autoload_unlock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x618eba3f 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-device 0x79956dac snd_seq_device_register_driver +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xb90668b2 snd_seq_autoload_lock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xc622fb29 snd_seq_device_unregister_driver +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 0x1363e7c6 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd-hwdep 0x84c8ad5a snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x07598bb8 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0c1615b7 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x10fccd1c snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x12bbe40e __snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x2798b5fa snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x54bab535 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5cb4327d snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8bb1410d snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x91f07823 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0x940aedfb snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0xae05734b snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xafd76d80 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb1464183 snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb57219e8 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc3e27ade snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc446535e snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd326e4eb snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0xeb91fac7 __snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0xecbbc2ff snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x382e6c3b 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 0x040bcee3 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x1520b953 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3858978e snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x40c7987d snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x486be5b5 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x5cb9d4e5 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x64ddb0dd snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6de8c41f snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6fe8cf3e snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x799a8181 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x8ef8f47e snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x97e08286 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xa0ad3044 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xaa50f94c snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb60e4786 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc4e2b1e7 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xd6f3b7ed snd_ac97_suspend +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x4b3ee94e snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x63343b1d snd_usbmidi_input_stop +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL vmlinux 0x00000000 __symbol_put +EXPORT_SYMBOL vmlinux 0x00000000 current_fs_time +EXPORT_SYMBOL vmlinux 0x00000000 d_tmpfile +EXPORT_SYMBOL vmlinux 0x00000000 do_sync_read +EXPORT_SYMBOL vmlinux 0x00000000 filp_close +EXPORT_SYMBOL vmlinux 0x00000000 finish_open +EXPORT_SYMBOL vmlinux 0x00000000 generic_getxattr +EXPORT_SYMBOL vmlinux 0x00000000 generic_write_sync +EXPORT_SYMBOL vmlinux 0x00000000 get_unmapped_area +EXPORT_SYMBOL vmlinux 0x00000000 in_group_p +EXPORT_SYMBOL vmlinux 0x00000000 inode_add_bytes +EXPORT_SYMBOL vmlinux 0x00000000 iov_shorten +EXPORT_SYMBOL vmlinux 0x00000000 iterate_fd +EXPORT_SYMBOL vmlinux 0x00000000 ns_capable +EXPORT_SYMBOL vmlinux 0x00000000 path_is_under +EXPORT_SYMBOL vmlinux 0x00000000 register_exec_domain +EXPORT_SYMBOL vmlinux 0x00000000 sock_register +EXPORT_SYMBOL vmlinux 0x00000000 sys_close +EXPORT_SYMBOL vmlinux 0x00000000 task_nice +EXPORT_SYMBOL vmlinux 0x00000000 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x00000000 vm_brk +EXPORT_SYMBOL vmlinux 0x001ab8c0 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x00261594 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x002cdd34 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x005c97d4 follow_down +EXPORT_SYMBOL vmlinux 0x007a2672 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x007c66da lro_receive_skb +EXPORT_SYMBOL vmlinux 0x00801678 flush_scheduled_work +EXPORT_SYMBOL vmlinux 0x0089c1b1 input_unregister_device +EXPORT_SYMBOL vmlinux 0x00a334be dma_sync_wait +EXPORT_SYMBOL vmlinux 0x00ab9984 md_write_start +EXPORT_SYMBOL vmlinux 0x00abd1d3 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x00cf4a7f of_get_parent +EXPORT_SYMBOL vmlinux 0x00d703ac tcp_child_process +EXPORT_SYMBOL vmlinux 0x00dd0758 snd_ctl_notify +EXPORT_SYMBOL vmlinux 0x00e8097b csum_partial_copy_fromiovecend +EXPORT_SYMBOL vmlinux 0x00e878b1 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x01137308 security_path_unlink +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x01168c97 mmc_hw_reset_check +EXPORT_SYMBOL vmlinux 0x0135d153 udp_add_offload +EXPORT_SYMBOL vmlinux 0x0186e2de smp_call_function_many +EXPORT_SYMBOL vmlinux 0x018e7088 security_path_truncate +EXPORT_SYMBOL vmlinux 0x01902adf netpoll_trap +EXPORT_SYMBOL vmlinux 0x01a60466 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x01d52283 kernel_read +EXPORT_SYMBOL vmlinux 0x01ee61a0 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x02196324 __aeabi_idiv +EXPORT_SYMBOL vmlinux 0x0220552c dquot_commit +EXPORT_SYMBOL vmlinux 0x022e35c0 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x0275f606 kern_unmount +EXPORT_SYMBOL vmlinux 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02c19625 snd_ctl_replace +EXPORT_SYMBOL vmlinux 0x02dba905 write_cache_pages +EXPORT_SYMBOL vmlinux 0x02df9141 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x02ee26c1 free_pages_exact +EXPORT_SYMBOL vmlinux 0x02ef742b percpu_counter_set +EXPORT_SYMBOL vmlinux 0x02ff492d mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x03026722 mempool_alloc +EXPORT_SYMBOL vmlinux 0x030ced9c tcf_exts_change +EXPORT_SYMBOL vmlinux 0x030d4f3b skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x0318e81f tcf_generic_walker +EXPORT_SYMBOL vmlinux 0x0334795d icst307_s2div +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x03423539 dev_get_nest_level +EXPORT_SYMBOL vmlinux 0x034448d0 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x0358dd44 seq_printf +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x0368321f proc_set_user +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x0388511a done_path_create +EXPORT_SYMBOL vmlinux 0x03894402 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x03b68145 xfrm_init_state +EXPORT_SYMBOL vmlinux 0x03ba39b0 v7_flush_user_cache_all +EXPORT_SYMBOL vmlinux 0x03c06156 bitmap_fold +EXPORT_SYMBOL vmlinux 0x03d189dd swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0x03dd07f3 netif_device_attach +EXPORT_SYMBOL vmlinux 0x03e780f6 inode_needs_sync +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x04097d39 dquot_disable +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x0429a37c write_one_page +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x045156d8 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x04616199 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x0466efe7 tc6393xb_lcd_mode +EXPORT_SYMBOL vmlinux 0x047a4a96 gen10g_config_aneg +EXPORT_SYMBOL vmlinux 0x0481ca87 pps_unregister_source +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x048acb6c dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x04a048ba netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x04b598a7 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x04cda566 snd_interval_refine +EXPORT_SYMBOL vmlinux 0x04e34b89 netlink_capable +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x052dba26 input_reset_device +EXPORT_SYMBOL vmlinux 0x054434d6 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x0547171d bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x0547e7dd scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x05592798 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x056151ff dquot_alloc +EXPORT_SYMBOL vmlinux 0x057817c0 sock_rfree +EXPORT_SYMBOL vmlinux 0x057ce975 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0x0581b871 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x0593a99b init_timer_key +EXPORT_SYMBOL vmlinux 0x05a570f1 path_get +EXPORT_SYMBOL vmlinux 0x05ae3cd7 irq_set_chip +EXPORT_SYMBOL vmlinux 0x05b06055 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x05d2ef78 pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0x05db1d85 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x05e80792 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x05ff30c8 serio_unregister_port +EXPORT_SYMBOL vmlinux 0x0604f8db bd_set_size +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x0622cda8 security_d_instantiate +EXPORT_SYMBOL vmlinux 0x06275abc xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x064226a3 i2c_master_recv +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x069bbfc1 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x06a3880d netif_rx +EXPORT_SYMBOL vmlinux 0x06a7f9f1 dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x06bc2861 bio_map_user +EXPORT_SYMBOL vmlinux 0x06d9fc39 kernel_listen +EXPORT_SYMBOL vmlinux 0x06e72ba2 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x06f6299d cdrom_check_events +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x07281ed7 blk_mq_free_single_hw_queue +EXPORT_SYMBOL vmlinux 0x07756c4c mount_ns +EXPORT_SYMBOL vmlinux 0x078c7b60 new_inode +EXPORT_SYMBOL vmlinux 0x079333f2 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0x0799aca4 local_bh_enable +EXPORT_SYMBOL vmlinux 0x07a81d99 simple_dentry_operations +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07a90d70 lock_may_read +EXPORT_SYMBOL vmlinux 0x07c10e04 devm_request_and_ioremap +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07cf9099 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0x07ec41ab netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x0802bb4e __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x08050acf dev_addr_del +EXPORT_SYMBOL vmlinux 0x081f3afb complete_all +EXPORT_SYMBOL vmlinux 0x08246b9a aio_complete +EXPORT_SYMBOL vmlinux 0x08258db6 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x082fb260 netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0x083c2cbe of_get_next_parent +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x0859cddc inet_listen +EXPORT_SYMBOL vmlinux 0x08c0745c xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x08c77db6 __getblk +EXPORT_SYMBOL vmlinux 0x08d0cb34 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x08ef5f1f xfrm_lookup +EXPORT_SYMBOL vmlinux 0x08f144fb mb_cache_create +EXPORT_SYMBOL vmlinux 0x08f6aade mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x090881f8 of_platform_device_create +EXPORT_SYMBOL vmlinux 0x097e7e4a cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x097ec1ff _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x09b12e9f dm_io +EXPORT_SYMBOL vmlinux 0x09c44364 pipe_to_file +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09cf1b46 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x09d08b0c simple_link +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09db4c8f padata_stop +EXPORT_SYMBOL vmlinux 0x09edb473 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x09f54e2f tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x0a0786de udplite_table +EXPORT_SYMBOL vmlinux 0x0a22a434 kfree_skb +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a3131f6 strnchr +EXPORT_SYMBOL vmlinux 0x0a469d23 mfd_clone_cell +EXPORT_SYMBOL vmlinux 0x0a958ed4 down_write +EXPORT_SYMBOL vmlinux 0x0aa13d05 __raw_readsw +EXPORT_SYMBOL vmlinux 0x0ab086e1 simple_unlink +EXPORT_SYMBOL vmlinux 0x0acb1a3c __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0x0ace6909 setup_new_exec +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ad51f28 __elv_add_request +EXPORT_SYMBOL vmlinux 0x0adfab73 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x0ae4580f tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x0aeb6deb tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x0afa992e tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b39bfbe generic_file_aio_read +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b77b0f8 phy_attach_direct +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0c01cfdc inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0x0c0583a1 blk_integrity_register +EXPORT_SYMBOL vmlinux 0x0c44736b skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c65e73c scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0x0c6d3b63 scsi_put_command +EXPORT_SYMBOL vmlinux 0x0c8c9e99 scsi_show_extd_sense +EXPORT_SYMBOL vmlinux 0x0c9bd4df iget5_locked +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 0x0cc31df6 kernel_sendpage +EXPORT_SYMBOL vmlinux 0x0cc3a71d xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x0cdb6f01 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x0cdbf59c mmc_get_card +EXPORT_SYMBOL vmlinux 0x0ce900af blk_finish_plug +EXPORT_SYMBOL vmlinux 0x0cf39801 inetdev_by_index +EXPORT_SYMBOL vmlinux 0x0cfefe1e percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x0d095b38 sk_free +EXPORT_SYMBOL vmlinux 0x0d136720 grab_cache_page_nowait +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 0x0d77f07b dev_alloc_name +EXPORT_SYMBOL vmlinux 0x0d9fbc2e generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0daa34db do_truncate +EXPORT_SYMBOL vmlinux 0x0dbc3ac9 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x0dc4dcf2 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x0df4783a inet_bind +EXPORT_SYMBOL vmlinux 0x0e0d6058 phy_driver_register +EXPORT_SYMBOL vmlinux 0x0e455f49 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x0e67fdaa __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x0e6d3049 abx500_register_ops +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e950e8c of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0x0e9f2034 netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0x0eaf451e hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x0eb9fc1d mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f020389 fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0x0f157947 cpu_v7_set_pte_ext +EXPORT_SYMBOL vmlinux 0x0f1647ea ip6_frag_init +EXPORT_SYMBOL vmlinux 0x0f29a9fd simple_pin_fs +EXPORT_SYMBOL vmlinux 0x0f32b440 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f5f9a43 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x0f732114 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x0f7322d9 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x0f8b793e adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0x0f9bc681 block_write_end +EXPORT_SYMBOL vmlinux 0x0fa2a45e __memzero +EXPORT_SYMBOL vmlinux 0x0fa45e97 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fda8c0c sockfd_lookup +EXPORT_SYMBOL vmlinux 0x0ff178f6 __aeabi_idivmod +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x101cf1e3 nand_unlock +EXPORT_SYMBOL vmlinux 0x104c6bef names_cachep +EXPORT_SYMBOL vmlinux 0x106506f0 account_page_dirtied +EXPORT_SYMBOL vmlinux 0x106f13ab crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x1072a394 csum_partial_copy_from_user +EXPORT_SYMBOL vmlinux 0x1077e91a snd_pcm_set_ops +EXPORT_SYMBOL vmlinux 0x10c2c41e tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x10f2bccc phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x1117f5d0 __ip_dev_find +EXPORT_SYMBOL vmlinux 0x1123f960 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x11267875 scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0x112b9054 dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0x114f3cee vm_map_ram +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x118c3f7b __napi_complete +EXPORT_SYMBOL vmlinux 0x11953c3b set_bdi_congested +EXPORT_SYMBOL vmlinux 0x119a034f dmam_pool_create +EXPORT_SYMBOL vmlinux 0x119b50e7 elf_check_arch +EXPORT_SYMBOL vmlinux 0x11a32cea swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x11adfe85 snd_jack_set_parent +EXPORT_SYMBOL vmlinux 0x11bd975c km_report +EXPORT_SYMBOL vmlinux 0x11c9185c of_iomap +EXPORT_SYMBOL vmlinux 0x11e2ec12 flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x11f1ecf2 nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x12166390 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x122043a8 of_find_node_with_property +EXPORT_SYMBOL vmlinux 0x126a608b bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x1279ec3d nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x1282809f eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0x1283bf48 security_path_mkdir +EXPORT_SYMBOL vmlinux 0x1294bf49 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12d6685d set_device_ro +EXPORT_SYMBOL vmlinux 0x12da5bb2 __kmalloc +EXPORT_SYMBOL vmlinux 0x12db1509 remove_proc_subtree +EXPORT_SYMBOL vmlinux 0x12de2206 kmem_cache_create +EXPORT_SYMBOL vmlinux 0x12e03d1d cdev_add +EXPORT_SYMBOL vmlinux 0x12eb8bdd jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x130039d4 init_special_inode +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x1348760d ipmi_request_settime +EXPORT_SYMBOL vmlinux 0x1362e2f8 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x1369a46c inet_frag_find +EXPORT_SYMBOL vmlinux 0x136a2b10 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x1375fe78 iov_iter_copy_from_user +EXPORT_SYMBOL vmlinux 0x1388cb8c pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0x13a13424 skb_clone +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13efe561 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x1420b379 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x143d192b phy_print_status +EXPORT_SYMBOL vmlinux 0x14595c0f fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0x1478a8aa tty_unthrottle +EXPORT_SYMBOL vmlinux 0x148406ab kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0x148c3f80 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x14a71555 dev_emerg +EXPORT_SYMBOL vmlinux 0x14d4a9c5 _change_bit +EXPORT_SYMBOL vmlinux 0x14d852a8 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x14fabc63 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x1506ea5b udp_sendmsg +EXPORT_SYMBOL vmlinux 0x150bb6ed snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL vmlinux 0x1512313b tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x15213d64 dev_deactivate +EXPORT_SYMBOL vmlinux 0x15315a77 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x15349cee cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x1551dc51 bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x159816c2 dev_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x15a2054f ata_dev_printk +EXPORT_SYMBOL vmlinux 0x15e42145 dget_parent +EXPORT_SYMBOL vmlinux 0x15f571ec blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x1603d78a redraw_screen +EXPORT_SYMBOL vmlinux 0x162ccc0c lg_local_lock +EXPORT_SYMBOL vmlinux 0x16305289 warn_slowpath_null +EXPORT_SYMBOL vmlinux 0x166263ec inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x166ea96c register_md_personality +EXPORT_SYMBOL vmlinux 0x16766435 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x16874c77 input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL vmlinux 0x16def92f skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x16fe6683 dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0x171747f5 dev_err +EXPORT_SYMBOL vmlinux 0x1729b3f6 irq_to_desc +EXPORT_SYMBOL vmlinux 0x1734061c override_creds +EXPORT_SYMBOL vmlinux 0x173407c2 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x1779f59d generic_file_splice_write +EXPORT_SYMBOL vmlinux 0x17a142df __copy_from_user +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17c335f0 of_device_alloc +EXPORT_SYMBOL vmlinux 0x17c4a6f4 devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0x17cfddf0 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0x17fef107 uart_suspend_port +EXPORT_SYMBOL vmlinux 0x1826f089 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x1846444b writeback_in_progress +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x184e6c85 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18bd76a4 _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x18c2227f cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x18c3a5d5 napi_gro_receive +EXPORT_SYMBOL vmlinux 0x18c4c74f iterate_dir +EXPORT_SYMBOL vmlinux 0x18d6a714 elevator_change +EXPORT_SYMBOL vmlinux 0x1911b0f7 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x19141d35 eth_header_parse +EXPORT_SYMBOL vmlinux 0x194245ee inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x1946470e simple_transaction_read +EXPORT_SYMBOL vmlinux 0x1950a575 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x19610e1f cpu_all_bits +EXPORT_SYMBOL vmlinux 0x1968397e block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19c5da72 mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x19c99f86 devm_gpiod_put +EXPORT_SYMBOL vmlinux 0x19f5809b dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0x1a069d5f cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x1a0db24a mount_bdev +EXPORT_SYMBOL vmlinux 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL vmlinux 0x1a1c696a snd_dma_free_pages +EXPORT_SYMBOL vmlinux 0x1a3057f0 zerocopy_sg_from_iovec +EXPORT_SYMBOL vmlinux 0x1a3c9b98 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x1a54db43 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x1a65f4ad __arm_ioremap_pfn +EXPORT_SYMBOL vmlinux 0x1a6f7baa sock_edemux +EXPORT_SYMBOL vmlinux 0x1a75b659 generic_setxattr +EXPORT_SYMBOL vmlinux 0x1a84ec43 md_error +EXPORT_SYMBOL vmlinux 0x1aaf27ca inet_shutdown +EXPORT_SYMBOL vmlinux 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL vmlinux 0x1ac19323 tcp_poll +EXPORT_SYMBOL vmlinux 0x1ace138d bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0x1ad1f2e7 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0x1ad4908a blk_free_tags +EXPORT_SYMBOL vmlinux 0x1ae71f32 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b0ac272 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x1b163016 __bforget +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b1eb4fc elv_rb_add +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b64a422 snd_ctl_free_one +EXPORT_SYMBOL vmlinux 0x1b64f060 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0x1b7ebc93 snd_pcm_suspend +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b9b6f4a security_path_chmod +EXPORT_SYMBOL vmlinux 0x1b9e0ff1 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x1bb2985f dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x1bb9ac67 sock_wfree +EXPORT_SYMBOL vmlinux 0x1bcb0899 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x1bce35bc keyring_search +EXPORT_SYMBOL vmlinux 0x1bda5487 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x1bdf414e input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x1be9bf7b inet_add_protocol +EXPORT_SYMBOL vmlinux 0x1c21475d rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0x1c269660 tty_unlock_pair +EXPORT_SYMBOL vmlinux 0x1c2d5f0c poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x1c307b79 inode_dio_done +EXPORT_SYMBOL vmlinux 0x1c4ff324 generic_file_fsync +EXPORT_SYMBOL vmlinux 0x1c5e3878 icst525_idx2s +EXPORT_SYMBOL vmlinux 0x1c737e51 eth_header +EXPORT_SYMBOL vmlinux 0x1c9d2858 input_release_device +EXPORT_SYMBOL vmlinux 0x1ca5c0ab __quota_error +EXPORT_SYMBOL vmlinux 0x1ca974e1 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x1cdadb6a __frontswap_store +EXPORT_SYMBOL vmlinux 0x1cdf8f1d dev_mc_del +EXPORT_SYMBOL vmlinux 0x1ce142a1 padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x1ce3537d devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0x1ce842f2 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x1ceaf338 lock_sock_fast +EXPORT_SYMBOL vmlinux 0x1cefd3a9 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x1cfb04fa finish_wait +EXPORT_SYMBOL vmlinux 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL vmlinux 0x1d0c6f0a lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x1d1d669f input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0x1d1ece00 __alloc_skb +EXPORT_SYMBOL vmlinux 0x1d3308a1 skb_make_writable +EXPORT_SYMBOL vmlinux 0x1d353dec __d_drop +EXPORT_SYMBOL vmlinux 0x1d39bb21 bio_integrity_tag_size +EXPORT_SYMBOL vmlinux 0x1d45807a ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x1d4c376e dma_mmap_from_coherent +EXPORT_SYMBOL vmlinux 0x1da632b9 netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dcc4738 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1ddfb233 dev_disable_lro +EXPORT_SYMBOL vmlinux 0x1de6c27f fb_set_suspend +EXPORT_SYMBOL vmlinux 0x1e047854 warn_slowpath_fmt +EXPORT_SYMBOL vmlinux 0x1e2405f2 snd_card_file_add +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e2ceeca __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e80bebb pskb_expand_head +EXPORT_SYMBOL vmlinux 0x1e839483 bdget_disk +EXPORT_SYMBOL vmlinux 0x1e9de15f seq_open +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1eb9047c dump_skip +EXPORT_SYMBOL vmlinux 0x1ebf957d __genl_register_family +EXPORT_SYMBOL vmlinux 0x1ec3bed9 hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0x1ec4eb34 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x1edca165 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x1edd6aa0 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x1ee36dcf mdiobus_free +EXPORT_SYMBOL vmlinux 0x1ee54618 sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x1ee6cbe4 ppp_input_error +EXPORT_SYMBOL vmlinux 0x1eeb848e __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0x1eeeac32 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x1ef2983f misc_deregister +EXPORT_SYMBOL vmlinux 0x1f2a2189 scsi_print_command +EXPORT_SYMBOL vmlinux 0x1f3798c0 snd_info_free_entry +EXPORT_SYMBOL vmlinux 0x1f6c2cb4 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1f867b3c snd_pcm_open_substream +EXPORT_SYMBOL vmlinux 0x1faa695c netlink_broadcast +EXPORT_SYMBOL vmlinux 0x1fab5905 wait_for_completion +EXPORT_SYMBOL vmlinux 0x1fad9ab7 gen10g_read_status +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fe47305 unregister_cdrom +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fe9f800 unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x1fedf0f4 __request_region +EXPORT_SYMBOL vmlinux 0x1ff37568 sock_create_lite +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x20130964 ip_defrag +EXPORT_SYMBOL vmlinux 0x20421305 on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x204ac95b jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20a96e66 elevator_init +EXPORT_SYMBOL vmlinux 0x20acf083 kmap_atomic +EXPORT_SYMBOL vmlinux 0x20b2bb2d param_array_ops +EXPORT_SYMBOL vmlinux 0x20b6e8d2 __pv_phys_offset +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20d28e21 seq_open_private +EXPORT_SYMBOL vmlinux 0x20df2681 ida_simple_remove +EXPORT_SYMBOL vmlinux 0x20e4f90d seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x20eb9da3 account_page_redirty +EXPORT_SYMBOL vmlinux 0x211331fa __divsi3 +EXPORT_SYMBOL vmlinux 0x2148a74e read_cache_pages +EXPORT_SYMBOL vmlinux 0x215dda0f xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x215ebd78 bitrev16 +EXPORT_SYMBOL vmlinux 0x2172052c inet_frag_kill +EXPORT_SYMBOL vmlinux 0x21728630 neigh_table_clear +EXPORT_SYMBOL vmlinux 0x217dda13 flex_array_get +EXPORT_SYMBOL vmlinux 0x21be6437 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x21c69517 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x21d2bc48 security_path_mknod +EXPORT_SYMBOL vmlinux 0x21e1552f d_genocide +EXPORT_SYMBOL vmlinux 0x21e28bde filemap_fault +EXPORT_SYMBOL vmlinux 0x21f63e21 drop_super +EXPORT_SYMBOL vmlinux 0x2208ed31 default_file_splice_read +EXPORT_SYMBOL vmlinux 0x220d360a __mutex_init +EXPORT_SYMBOL vmlinux 0x221a0e23 generic_file_open +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x222fa684 lg_global_lock +EXPORT_SYMBOL vmlinux 0x2232a8a5 mempool_free +EXPORT_SYMBOL vmlinux 0x223bbec7 sock_no_getname +EXPORT_SYMBOL vmlinux 0x224b900e bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x2256fafa div64_u64_rem +EXPORT_SYMBOL vmlinux 0x226fb7fd simple_write_end +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x227bcc62 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x2282ebb9 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22e1ae6f up_read +EXPORT_SYMBOL vmlinux 0x22fae3ca bio_endio +EXPORT_SYMBOL vmlinux 0x22ffb3a6 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x23216668 dqput +EXPORT_SYMBOL vmlinux 0x2348c054 snd_ctl_remove_id +EXPORT_SYMBOL vmlinux 0x2351e306 of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x23532c4d ftrace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x238f6432 snd_pcm_set_sync +EXPORT_SYMBOL vmlinux 0x23a2e9f2 skb_pad +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23a938a8 inode_set_bytes +EXPORT_SYMBOL vmlinux 0x23aa49d3 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c2404e skb_queue_tail +EXPORT_SYMBOL vmlinux 0x23c8f257 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x23cdfa82 page_put_link +EXPORT_SYMBOL vmlinux 0x23d8b4cd md_integrity_register +EXPORT_SYMBOL vmlinux 0x23db34fe dev_load +EXPORT_SYMBOL vmlinux 0x23f96d62 nla_reserve +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x243a7e19 blk_execute_rq +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x245d20f4 skb_trim +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x249dfa8e md_register_thread +EXPORT_SYMBOL vmlinux 0x24a255e8 padata_alloc +EXPORT_SYMBOL vmlinux 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL vmlinux 0x24acf5e7 kernel_connect +EXPORT_SYMBOL vmlinux 0x24aebd24 inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0x24b0f90c of_clk_get_by_name +EXPORT_SYMBOL vmlinux 0x24cad04b dma_find_channel +EXPORT_SYMBOL vmlinux 0x24d7b4eb cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x24df7566 nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x25540332 inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0x2572920d __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25a767ee ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0x25b0f1b6 scsi_target_resume +EXPORT_SYMBOL vmlinux 0x25c677c4 mac_pton +EXPORT_SYMBOL vmlinux 0x25ccaab8 blk_start_request +EXPORT_SYMBOL vmlinux 0x25e01762 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x25f673fc gen_replace_estimator +EXPORT_SYMBOL vmlinux 0x25f7cbb6 snd_timer_interrupt +EXPORT_SYMBOL vmlinux 0x260cf8f8 of_get_property +EXPORT_SYMBOL vmlinux 0x2611b7da init_buffer +EXPORT_SYMBOL vmlinux 0x2615409a proc_mkdir +EXPORT_SYMBOL vmlinux 0x26258431 nf_log_unregister +EXPORT_SYMBOL vmlinux 0x2637058b sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x2639833d bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x263b5b76 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x26695728 lockref_mark_dead +EXPORT_SYMBOL vmlinux 0x266d5917 always_delete_dentry +EXPORT_SYMBOL vmlinux 0x2685c3d7 __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x26910481 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x26adc5c1 snd_timer_resolution +EXPORT_SYMBOL vmlinux 0x26b6ac63 get_write_access +EXPORT_SYMBOL vmlinux 0x26bb950b __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x26d9e52e __scm_destroy +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26f0453a blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x275ef902 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0x2767a7f5 bio_init +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x279868d6 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27c4ee1c i2c_clients_command +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x2804c6eb soft_cursor +EXPORT_SYMBOL vmlinux 0x28118cb6 __get_user_1 +EXPORT_SYMBOL vmlinux 0x28145757 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x281e86a6 start_tty +EXPORT_SYMBOL vmlinux 0x283a8122 genphy_suspend +EXPORT_SYMBOL vmlinux 0x28693393 jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x2869f9c9 netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x287a5791 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x28900725 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0x28a0b6a3 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28a4f8f2 neigh_compat_output +EXPORT_SYMBOL vmlinux 0x28b5d91d tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x28b86055 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x28c5b38f mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x29421273 unregister_netdev +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x295d918a __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x295f98af sk_filter +EXPORT_SYMBOL vmlinux 0x297266e4 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x29b72689 tty_port_destroy +EXPORT_SYMBOL vmlinux 0x29baff70 ida_remove +EXPORT_SYMBOL vmlinux 0x29c97258 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x29d908da mmc_can_reset +EXPORT_SYMBOL vmlinux 0x29e08b6f blk_requeue_request +EXPORT_SYMBOL vmlinux 0x29f00537 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x29fdda53 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x2a1bcff0 tty_port_init +EXPORT_SYMBOL vmlinux 0x2a250873 padata_add_cpu +EXPORT_SYMBOL vmlinux 0x2a3102af jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a3aa678 _test_and_clear_bit +EXPORT_SYMBOL vmlinux 0x2a79ac13 clkdev_add +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2aa8f3f8 add_disk +EXPORT_SYMBOL vmlinux 0x2aa8f55c snd_pcm_lib_malloc_pages +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2ae3deaa release_and_free_resource +EXPORT_SYMBOL vmlinux 0x2b0200c2 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b12925d cpumask_next_and +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b412477 d_find_any_alias +EXPORT_SYMBOL vmlinux 0x2b413c28 scsi_register_interface +EXPORT_SYMBOL vmlinux 0x2b4e956e mempool_create +EXPORT_SYMBOL vmlinux 0x2b52c161 dentry_path_raw +EXPORT_SYMBOL vmlinux 0x2b6a7d27 i2c_release_client +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba1b130 mem_cgroup_subsys +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bb62d1a pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x2be04322 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x2be0f12d dql_completed +EXPORT_SYMBOL vmlinux 0x2bef6469 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x2bf00107 dev_get_by_name +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c5cabd8 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x2c6464de blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x2c784722 d_add_ci +EXPORT_SYMBOL vmlinux 0x2c81ec75 __irq_regs +EXPORT_SYMBOL vmlinux 0x2c900d91 cpufreq_put_global_kobject +EXPORT_SYMBOL vmlinux 0x2c969fd6 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x2c9732f8 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0x2c988955 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x2c9f3500 simple_rmdir +EXPORT_SYMBOL vmlinux 0x2cb1e608 vlan_vid_add +EXPORT_SYMBOL vmlinux 0x2cb4baec mfd_add_devices +EXPORT_SYMBOL vmlinux 0x2cdcbb66 no_llseek +EXPORT_SYMBOL vmlinux 0x2d022871 __frontswap_load +EXPORT_SYMBOL vmlinux 0x2d03c10d posix_acl_create +EXPORT_SYMBOL vmlinux 0x2d0b136a vfs_symlink +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d19accd ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x2d1dc94b d_move +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d6507b5 _find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0x2d89342a scsi_show_sense_hdr +EXPORT_SYMBOL vmlinux 0x2d976460 check_submounts_and_drop +EXPORT_SYMBOL vmlinux 0x2d9f7d57 qdisc_list_del +EXPORT_SYMBOL vmlinux 0x2daaaba9 param_get_byte +EXPORT_SYMBOL vmlinux 0x2dadc0fb qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2dfa96d2 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x2e028fa9 mutex_lock +EXPORT_SYMBOL vmlinux 0x2e0dc490 inet6_add_offload +EXPORT_SYMBOL vmlinux 0x2e102a9a netif_napi_del +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e228832 splice_from_pipe_begin +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e31cdd8 map_destroy +EXPORT_SYMBOL vmlinux 0x2e5810c6 __aeabi_unwind_cpp_pr1 +EXPORT_SYMBOL vmlinux 0x2e686553 mdiobus_scan +EXPORT_SYMBOL vmlinux 0x2e701563 vfs_fsync +EXPORT_SYMBOL vmlinux 0x2eadc26f locks_copy_lock +EXPORT_SYMBOL vmlinux 0x2ec35d2e blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x2ec524ad __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x2edfa4df dma_pool_create +EXPORT_SYMBOL vmlinux 0x2eeceb42 sk_chk_filter +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 0x2f2adfb3 padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x2f3cc1e2 snd_card_create +EXPORT_SYMBOL vmlinux 0x2f67e0f9 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fc846e3 kern_path +EXPORT_SYMBOL vmlinux 0x2fcdafae jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x2fcf3558 check_disk_change +EXPORT_SYMBOL vmlinux 0x2fdba058 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0x2fe0f23b mount_single +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2fec6e69 path_put +EXPORT_SYMBOL vmlinux 0x2fed72c8 lro_flush_pkt +EXPORT_SYMBOL vmlinux 0x2ff75d2d sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0x300deecd wireless_send_event +EXPORT_SYMBOL vmlinux 0x301c49b3 serio_rescan +EXPORT_SYMBOL vmlinux 0x3059dabf iget_failed +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x30811788 dev_printk +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30b27b50 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x30c405db bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x30cada8f radix_tree_next_hole +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x30e8fb5c mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0x30ee109e skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0x30f8f95a blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310917fe sort +EXPORT_SYMBOL vmlinux 0x312824e0 hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x315c65fd zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x3163d7a6 devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0x318cadb1 reciprocal_value +EXPORT_SYMBOL vmlinux 0x3191f109 __krealloc +EXPORT_SYMBOL vmlinux 0x3197b1de blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x31adb5e0 pipe_unlock +EXPORT_SYMBOL vmlinux 0x31b31f5c csum_partial_copy_nocheck +EXPORT_SYMBOL vmlinux 0x31f0bb78 __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x31f90dbf dquot_free_inode +EXPORT_SYMBOL vmlinux 0x31fd9b7a inet_sendpage +EXPORT_SYMBOL vmlinux 0x3200682b mpage_readpage +EXPORT_SYMBOL vmlinux 0x3206fc5a devm_gpio_free +EXPORT_SYMBOL vmlinux 0x320ae10c scsi_remove_target +EXPORT_SYMBOL vmlinux 0x321ddf96 security_task_getsecid +EXPORT_SYMBOL vmlinux 0x321f2636 gen10g_restart_aneg +EXPORT_SYMBOL vmlinux 0x322f48d4 abx500_dump_all_banks +EXPORT_SYMBOL vmlinux 0x3230ec7a blk_rq_init +EXPORT_SYMBOL vmlinux 0x32592c05 nla_put +EXPORT_SYMBOL vmlinux 0x325f98f8 vlan_untag +EXPORT_SYMBOL vmlinux 0x327bf883 of_can_translate_address +EXPORT_SYMBOL vmlinux 0x328a05f1 strncpy +EXPORT_SYMBOL vmlinux 0x32b7ccfe get_mem_type +EXPORT_SYMBOL vmlinux 0x32b7ef1a simple_transaction_set +EXPORT_SYMBOL vmlinux 0x32cf2615 noop_llseek +EXPORT_SYMBOL vmlinux 0x32dbec11 d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0x32ee911a del_gendisk +EXPORT_SYMBOL vmlinux 0x3306deca i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x33095e71 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x331d2898 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x3330a47d gen_pool_free +EXPORT_SYMBOL vmlinux 0x3336cba6 replace_mount_options +EXPORT_SYMBOL vmlinux 0x334f085a gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x335a75a7 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x336afb2b fd_install +EXPORT_SYMBOL vmlinux 0x337cce46 put_cmsg +EXPORT_SYMBOL vmlinux 0x33855011 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x33899fb3 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x338a9ec1 dma_mark_declared_memory_occupied +EXPORT_SYMBOL vmlinux 0x33a40222 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x33ba5cd4 param_ops_bool +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33dbfd93 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x33dd675f i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x341dbfa3 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x3428b7b3 blk_recount_segments +EXPORT_SYMBOL vmlinux 0x34290376 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x3438a9fd jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x343f5de0 phy_attach +EXPORT_SYMBOL vmlinux 0x344931c8 textsearch_register +EXPORT_SYMBOL vmlinux 0x34495f69 inet6_del_offload +EXPORT_SYMBOL vmlinux 0x344b7739 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x345c2d42 force_sig +EXPORT_SYMBOL vmlinux 0x34681038 md_check_recovery +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x347eb9bd param_set_bool +EXPORT_SYMBOL vmlinux 0x3490353b generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x34987b18 blk_get_queue +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34aa65eb unregister_filesystem +EXPORT_SYMBOL vmlinux 0x34b60bca tcp_disconnect +EXPORT_SYMBOL vmlinux 0x34b81106 security_path_rmdir +EXPORT_SYMBOL vmlinux 0x34ef5d3e kmap_to_page +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x34f47e62 d_prune_aliases +EXPORT_SYMBOL vmlinux 0x34fc0789 blk_mq_alloc_reserved_request +EXPORT_SYMBOL vmlinux 0x3507a132 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0x3516df4f read_dev_sector +EXPORT_SYMBOL vmlinux 0x35172eff sk_reset_timer +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x353bec39 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x353e3fa5 __get_user_4 +EXPORT_SYMBOL vmlinux 0x356ec7a7 snd_pcm_lib_writev +EXPORT_SYMBOL vmlinux 0x35a45d3d snd_pcm_hw_param_first +EXPORT_SYMBOL vmlinux 0x35ae82c2 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x35c209ab dquot_destroy +EXPORT_SYMBOL vmlinux 0x35fdc2c1 insert_inode_locked +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x3612c10f tmio_core_mmc_enable +EXPORT_SYMBOL vmlinux 0x364967a5 nobh_writepage +EXPORT_SYMBOL vmlinux 0x364a23b3 inode_dio_wait +EXPORT_SYMBOL vmlinux 0x365a44dc d_invalidate +EXPORT_SYMBOL vmlinux 0x368382e2 of_get_named_gpiod_flags +EXPORT_SYMBOL vmlinux 0x3688082c blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36c0bf21 __ps2_command +EXPORT_SYMBOL vmlinux 0x36c67290 key_reject_and_link +EXPORT_SYMBOL vmlinux 0x36d7b11a of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0x36d90c35 snd_pcm_hw_constraint_list +EXPORT_SYMBOL vmlinux 0x36e360e3 __hw_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x36fcb1ad dquot_acquire +EXPORT_SYMBOL vmlinux 0x36fd2b43 nand_correct_data +EXPORT_SYMBOL vmlinux 0x371ea7e9 dev_remove_pack +EXPORT_SYMBOL vmlinux 0x372c2e9c blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x373e30aa key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x3747acb5 input_set_capability +EXPORT_SYMBOL vmlinux 0x3791c24f vfs_readv +EXPORT_SYMBOL vmlinux 0x37938915 blk_mq_alloc_single_hw_queue +EXPORT_SYMBOL vmlinux 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37dea15a xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x37e74642 get_jiffies_64 +EXPORT_SYMBOL vmlinux 0x37f614b7 __kfifo_len_r +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 0x381d8823 __dev_remove_offload +EXPORT_SYMBOL vmlinux 0x383051e9 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x3840735e bdi_register +EXPORT_SYMBOL vmlinux 0x387b88b8 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x38859468 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388c04ff ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x388f15f5 scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x388f9128 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38b3d05b snd_device_free +EXPORT_SYMBOL vmlinux 0x38c0ebbd d_alloc +EXPORT_SYMBOL vmlinux 0x38c4e604 nf_log_unset +EXPORT_SYMBOL vmlinux 0x38c97d50 idr_get_next +EXPORT_SYMBOL vmlinux 0x38e08caa mdiobus_register +EXPORT_SYMBOL vmlinux 0x38eb7d7c uart_match_port +EXPORT_SYMBOL vmlinux 0x390cc374 account_page_writeback +EXPORT_SYMBOL vmlinux 0x3918cabf nand_lock +EXPORT_SYMBOL vmlinux 0x3924dd56 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL vmlinux 0x39823b91 simple_transaction_get +EXPORT_SYMBOL vmlinux 0x3989df44 scsi_nonblockable_ioctl +EXPORT_SYMBOL vmlinux 0x39949327 scsi_get_command +EXPORT_SYMBOL vmlinux 0x399510db dst_destroy +EXPORT_SYMBOL vmlinux 0x399718c0 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL vmlinux 0x39c34ffb inet_sendmsg +EXPORT_SYMBOL vmlinux 0x39d77d4f cad_pid +EXPORT_SYMBOL vmlinux 0x3a131a35 bio_put +EXPORT_SYMBOL vmlinux 0x3a23055b skb_free_datagram +EXPORT_SYMBOL vmlinux 0x3a4b9cbd mdio_bus_type +EXPORT_SYMBOL vmlinux 0x3a7827d5 d_drop +EXPORT_SYMBOL vmlinux 0x3a8030e6 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3aa12093 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x3aed4bbb blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0x3aed56e8 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x3af8aa6e update_devfreq +EXPORT_SYMBOL vmlinux 0x3b0c813f bio_reset +EXPORT_SYMBOL vmlinux 0x3b2966ec dev_driver_string +EXPORT_SYMBOL vmlinux 0x3b41657f inet_stream_ops +EXPORT_SYMBOL vmlinux 0x3b606df9 __locks_copy_lock +EXPORT_SYMBOL vmlinux 0x3b91f3af snd_free_pages +EXPORT_SYMBOL vmlinux 0x3b952793 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x3ba08629 ip_options_compile +EXPORT_SYMBOL vmlinux 0x3bbc3937 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x3bbf46ea vga_base +EXPORT_SYMBOL vmlinux 0x3bc1ec88 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x3bd1b1f6 msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x3be0ee0f __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x3bee0837 tty_throttle +EXPORT_SYMBOL vmlinux 0x3bef03b9 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x3bfd449d neigh_seq_start +EXPORT_SYMBOL vmlinux 0x3c046b2a mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x3c11939a ps2_drain +EXPORT_SYMBOL vmlinux 0x3c27d716 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x3c2d14bd sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x3c65bfda __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x3c70fbfe netif_carrier_on +EXPORT_SYMBOL vmlinux 0x3c733a57 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c9d1211 string_get_size +EXPORT_SYMBOL vmlinux 0x3ca2166d generic_file_buffered_write +EXPORT_SYMBOL vmlinux 0x3cb3931b sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3ce7b78c user_revoke +EXPORT_SYMBOL vmlinux 0x3d0ad8da scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x3d20e77d swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0x3d281ab7 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x3d3c540f elf_hwcap +EXPORT_SYMBOL vmlinux 0x3d41904f of_get_next_child +EXPORT_SYMBOL vmlinux 0x3d49bf14 ps2_begin_command +EXPORT_SYMBOL vmlinux 0x3d60d639 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x3d8da5d3 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x3da09d99 bh_submit_read +EXPORT_SYMBOL vmlinux 0x3da2a2bb fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dd07c2c dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x3dd8f186 __arm_ioremap +EXPORT_SYMBOL vmlinux 0x3de01f2c __skb_get_hash +EXPORT_SYMBOL vmlinux 0x3dfa0141 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3dfe82c9 bioset_create +EXPORT_SYMBOL vmlinux 0x3e05907c neigh_ifdown +EXPORT_SYMBOL vmlinux 0x3e1c5c86 fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0x3e1e7ba0 blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0x3e32fce3 blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x3e34b5a3 htc_egpio_get_wakeup_irq +EXPORT_SYMBOL vmlinux 0x3e469f4b ll_rw_block +EXPORT_SYMBOL vmlinux 0x3e6ef7b1 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x3e711eef dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x3e79237c sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x3e8373c2 inet_release +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e91f87f blk_bio_map_sg +EXPORT_SYMBOL vmlinux 0x3e9657e2 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x3e9a6464 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x3eacda2b ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x3eb0ac49 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x3ed63055 zlib_inflateReset +EXPORT_SYMBOL vmlinux 0x3f019e5f pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x3f19ee9a vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x3f37a375 phy_drivers_register +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f50facf dquot_operations +EXPORT_SYMBOL vmlinux 0x3f5b67d5 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x3f5b9728 make_kuid +EXPORT_SYMBOL vmlinux 0x3f5de016 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x3f86cd95 neigh_lookup +EXPORT_SYMBOL vmlinux 0x3fab3ca9 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x3fcc37a3 phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x3fd55724 of_n_size_cells +EXPORT_SYMBOL vmlinux 0x3fd62fe7 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x3fe908d9 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3fee79a2 snd_pcm_new_internal +EXPORT_SYMBOL vmlinux 0x3ff62317 local_bh_disable +EXPORT_SYMBOL vmlinux 0x400e88fd sock_create +EXPORT_SYMBOL vmlinux 0x4021a56e mtd_concat_destroy +EXPORT_SYMBOL vmlinux 0x4022e7f5 eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x403f0a28 snd_timer_close +EXPORT_SYMBOL vmlinux 0x404a239d md_done_sync +EXPORT_SYMBOL vmlinux 0x4059792f print_hex_dump +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x406fa066 elv_register_queue +EXPORT_SYMBOL vmlinux 0x407136b1 __put_user_8 +EXPORT_SYMBOL vmlinux 0x407e1a01 blk_peek_request +EXPORT_SYMBOL vmlinux 0x4081b52d kdb_current_task +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x409873e3 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x409c4769 nf_hook_slow +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a2d1dd dm_table_get_size +EXPORT_SYMBOL vmlinux 0x40a7289a dmam_release_declared_memory +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40ad3abc neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x40b52c99 of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40ce485b mempool_resize +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40ed524a _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x40f07981 __ashldi3 +EXPORT_SYMBOL vmlinux 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL vmlinux 0x4107be8a tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x414a9c09 skb_checksum +EXPORT_SYMBOL vmlinux 0x4152cc87 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x416f35e2 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x417f7295 __napi_schedule +EXPORT_SYMBOL vmlinux 0x4187c2f2 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x41c369e8 __i2c_transfer +EXPORT_SYMBOL vmlinux 0x41ea658d __free_pages +EXPORT_SYMBOL vmlinux 0x4211c3c1 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x421b6498 directly_mappable_cdev_bdi +EXPORT_SYMBOL vmlinux 0x423b776a ipmi_create_user +EXPORT_SYMBOL vmlinux 0x42588822 mmc_release_host +EXPORT_SYMBOL vmlinux 0x426098d3 vm_mmap +EXPORT_SYMBOL vmlinux 0x4266c265 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x4277ca28 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x428e04c5 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x429102cb inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x42977ad4 __hw_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x4298b775 v7_flush_kern_cache_all +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42d989fc bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x42dc1853 blk_start_queue +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x43053795 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x430f37de init_task +EXPORT_SYMBOL vmlinux 0x4329d2ad skb_append +EXPORT_SYMBOL vmlinux 0x43412d93 scsi_print_result +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x43632d7d of_find_property +EXPORT_SYMBOL vmlinux 0x436b6b2b swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0x437f3fb7 km_query +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x4396ee18 nf_log_packet +EXPORT_SYMBOL vmlinux 0x43bbc3d0 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x43d560d9 __destroy_inode +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x442495c9 tmio_core_mmc_resume +EXPORT_SYMBOL vmlinux 0x4434a68f find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x44366cfc simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x44423790 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x44438b96 hex2bin +EXPORT_SYMBOL vmlinux 0x44454589 alloc_disk_node +EXPORT_SYMBOL vmlinux 0x444aca30 file_open_root +EXPORT_SYMBOL vmlinux 0x44643b93 __aeabi_lmul +EXPORT_SYMBOL vmlinux 0x447c0168 dma_common_mmap +EXPORT_SYMBOL vmlinux 0x44962e2b unregister_mtd_chip_driver +EXPORT_SYMBOL vmlinux 0x449dafb7 block_write_begin +EXPORT_SYMBOL vmlinux 0x44b45a4a blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0x44c0ed73 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x44c8a80a amba_request_regions +EXPORT_SYMBOL vmlinux 0x44da5d0f __csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0x44dd3d8d completion_done +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44eee039 generic_show_options +EXPORT_SYMBOL vmlinux 0x44f12171 mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x44f5e8b5 of_allnodes +EXPORT_SYMBOL vmlinux 0x45026e45 input_unregister_handle +EXPORT_SYMBOL vmlinux 0x45229447 snd_card_proc_new +EXPORT_SYMBOL vmlinux 0x452c3f30 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x453da513 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x455293f6 down_read +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x45a6be13 cpufreq_sysfs_remove_file +EXPORT_SYMBOL vmlinux 0x45ab2c2c sock_alloc_file +EXPORT_SYMBOL vmlinux 0x45bda0d5 system_serial_low +EXPORT_SYMBOL vmlinux 0x45bdcbeb snd_pcm_hw_constraint_integer +EXPORT_SYMBOL vmlinux 0x45c84111 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0x45d1147c input_register_handle +EXPORT_SYMBOL vmlinux 0x45eac0dd gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0x45ef275c sound_class +EXPORT_SYMBOL vmlinux 0x460edb60 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x4612fcdc mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x461eddf6 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x4626fb43 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +EXPORT_SYMBOL vmlinux 0x462eabf7 build_skb +EXPORT_SYMBOL vmlinux 0x4640327e scsi_remove_host +EXPORT_SYMBOL vmlinux 0x465757c3 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46608fa0 getnstimeofday +EXPORT_SYMBOL vmlinux 0x46770fad scsi_reset_provider +EXPORT_SYMBOL vmlinux 0x467bb2f3 kset_unregister +EXPORT_SYMBOL vmlinux 0x46809aee snd_timer_open +EXPORT_SYMBOL vmlinux 0x468b8dc4 generic_permission +EXPORT_SYMBOL vmlinux 0x46c33181 __pagevec_release +EXPORT_SYMBOL vmlinux 0x46d3b28c __div0 +EXPORT_SYMBOL vmlinux 0x46f2a9fc jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x47830644 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x478d6014 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x478dc680 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x47b3f862 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0x47b6a10f ftrace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x47bcf84c param_set_ulong +EXPORT_SYMBOL vmlinux 0x47c50177 vsc824x_add_skew +EXPORT_SYMBOL vmlinux 0x47c8baf4 param_ops_uint +EXPORT_SYMBOL vmlinux 0x47ded645 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x47e70229 v7_flush_user_cache_range +EXPORT_SYMBOL vmlinux 0x47e951a1 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x47f757de elf_platform +EXPORT_SYMBOL vmlinux 0x48034724 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x481b07a9 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x481ce6ce cpu_active_mask +EXPORT_SYMBOL vmlinux 0x482a2a49 param_set_charp +EXPORT_SYMBOL vmlinux 0x48444a78 skb_copy_datagram_iovec +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x485b6d2f swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0x487a4460 cpumask_set_cpu_local_first +EXPORT_SYMBOL vmlinux 0x4881d505 idr_for_each +EXPORT_SYMBOL vmlinux 0x488882e7 downgrade_write +EXPORT_SYMBOL vmlinux 0x4890f190 seq_write +EXPORT_SYMBOL vmlinux 0x48a5b067 __machine_arch_type +EXPORT_SYMBOL vmlinux 0x48b9cad0 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x48c0834d __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x48c6db53 of_get_child_by_name +EXPORT_SYMBOL vmlinux 0x48d450c8 arm_coherent_dma_ops +EXPORT_SYMBOL vmlinux 0x48e2f109 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x48f196f6 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x48f89fc1 md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x490e331c proc_remove +EXPORT_SYMBOL vmlinux 0x491b185d netdev_crit +EXPORT_SYMBOL vmlinux 0x492dec56 swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0x49318748 vfs_write +EXPORT_SYMBOL vmlinux 0x494daa72 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x495a5c4f __f_setown +EXPORT_SYMBOL vmlinux 0x495ac0f0 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x4961cbe1 generic_setlease +EXPORT_SYMBOL vmlinux 0x49750449 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL vmlinux 0x4995c31f tcp_gso_segment +EXPORT_SYMBOL vmlinux 0x499cb58c prepare_to_wait +EXPORT_SYMBOL vmlinux 0x49a87172 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49b36742 elv_rb_find +EXPORT_SYMBOL vmlinux 0x49d8ec2b posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x49de580f blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0x49ebacbd _clear_bit +EXPORT_SYMBOL vmlinux 0x49eeea46 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x49f42dd1 nla_append +EXPORT_SYMBOL vmlinux 0x4a2bdfa7 snd_card_free_when_closed +EXPORT_SYMBOL vmlinux 0x4a358252 __bitmap_subset +EXPORT_SYMBOL vmlinux 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL vmlinux 0x4a57b339 wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x4a628b72 input_open_device +EXPORT_SYMBOL vmlinux 0x4a72333e do_splice_direct +EXPORT_SYMBOL vmlinux 0x4a7fb243 percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x4a9ce4a8 devfreq_add_device +EXPORT_SYMBOL vmlinux 0x4ac6689c get_disk +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4ad50f62 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x4ad6c6d7 update_time +EXPORT_SYMBOL vmlinux 0x4aec1149 snd_register_device_for_dev +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b015768 snd_iprintf +EXPORT_SYMBOL vmlinux 0x4b073d72 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b24994e vfs_open +EXPORT_SYMBOL vmlinux 0x4b26d717 devm_clk_get +EXPORT_SYMBOL vmlinux 0x4b30a8c7 ip_ct_attach +EXPORT_SYMBOL vmlinux 0x4b34fbf5 block_all_signals +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b8705ab bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x4bce3984 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x4be7fb63 up +EXPORT_SYMBOL vmlinux 0x4be85a03 memweight +EXPORT_SYMBOL vmlinux 0x4bedc792 dev_uc_add +EXPORT_SYMBOL vmlinux 0x4bf7e9ab ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x4bf82b10 netdev_lower_dev_get_private_rcu +EXPORT_SYMBOL vmlinux 0x4c07e032 inet_del_offload +EXPORT_SYMBOL vmlinux 0x4c1182cb bitmap_scnprintf +EXPORT_SYMBOL vmlinux 0x4c233a44 _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0x4c2ae700 strnstr +EXPORT_SYMBOL vmlinux 0x4c2e9ed4 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x4c4a7ce3 submit_bio_wait +EXPORT_SYMBOL vmlinux 0x4c5bfbbc generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x4c5c334f sock_from_file +EXPORT_SYMBOL vmlinux 0x4c5e9c38 mmc_free_host +EXPORT_SYMBOL vmlinux 0x4c5fc58c _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c64a589 inet_csk_accept +EXPORT_SYMBOL vmlinux 0x4c86184b remove_wait_queue +EXPORT_SYMBOL vmlinux 0x4c875df8 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL vmlinux 0x4ca8d78b udp_prot +EXPORT_SYMBOL vmlinux 0x4ca9f5cc kvm_read_guest_atomic +EXPORT_SYMBOL vmlinux 0x4caf2ca1 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x4cbbd171 __bitmap_weight +EXPORT_SYMBOL vmlinux 0x4cd2d36f twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4ce5be9c vfs_link +EXPORT_SYMBOL vmlinux 0x4ce8d53c blk_init_queue +EXPORT_SYMBOL vmlinux 0x4d097b79 __module_get +EXPORT_SYMBOL vmlinux 0x4d0d163d copy_page +EXPORT_SYMBOL vmlinux 0x4d21ac2c devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d42311d dcache_readdir +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d67cda7 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x4d84efca inet6_protos +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4d9b6d35 snd_pcm_format_size +EXPORT_SYMBOL vmlinux 0x4dba588d scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x4dbd04c3 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x4dd107b0 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x4ddd7ba0 should_remove_suid +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4de3a61a find_lock_page +EXPORT_SYMBOL vmlinux 0x4dec6038 memscan +EXPORT_SYMBOL vmlinux 0x4ded9fb1 mmc_gpio_free_ro +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4e221aca skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e38c189 freezing_slow_path +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6a7aeb lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e830a3e strnicmp +EXPORT_SYMBOL vmlinux 0x4e881b03 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x4e9566dc dev_uc_init +EXPORT_SYMBOL vmlinux 0x4e9b8259 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x4eb5326c proc_set_size +EXPORT_SYMBOL vmlinux 0x4ec95485 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x4f04d106 get_user_pages +EXPORT_SYMBOL vmlinux 0x4f09c712 inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0x4f18f265 scsi_host_put +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f248523 of_find_node_by_name +EXPORT_SYMBOL vmlinux 0x4f371898 bio_advance +EXPORT_SYMBOL vmlinux 0x4f375cd0 dev_alert +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f4400ad filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x4f476e96 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x4f50b308 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x4f61b098 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL vmlinux 0x4f8768a1 amba_release_regions +EXPORT_SYMBOL vmlinux 0x4fa1e0d2 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x4fa2e3e6 sk_common_release +EXPORT_SYMBOL vmlinux 0x4fe5acd1 vc_resize +EXPORT_SYMBOL vmlinux 0x4fea7379 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x5013f448 kmap +EXPORT_SYMBOL vmlinux 0x5015035f tty_lock_pair +EXPORT_SYMBOL vmlinux 0x50445ae8 commit_creds +EXPORT_SYMBOL vmlinux 0x50551e0c simple_setattr +EXPORT_SYMBOL vmlinux 0x50593283 dev_get_flags +EXPORT_SYMBOL vmlinux 0x508bcd9f __vexpress_config_func_get +EXPORT_SYMBOL vmlinux 0x509817cf vprintk_emit +EXPORT_SYMBOL vmlinux 0x50b148f0 pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x50df94ae tty_mutex +EXPORT_SYMBOL vmlinux 0x50fecabf fget_raw +EXPORT_SYMBOL vmlinux 0x511746c1 dump_fpu +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x5139f65f flush_signals +EXPORT_SYMBOL vmlinux 0x5147f7a4 seq_path +EXPORT_SYMBOL vmlinux 0x514cbd17 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL vmlinux 0x515589f4 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x516696de phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x516bbe9d __get_user_pages +EXPORT_SYMBOL vmlinux 0x51908eb8 __raw_writesl +EXPORT_SYMBOL vmlinux 0x51cb78df blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0x51cda1f1 scsi_adjust_queue_depth +EXPORT_SYMBOL vmlinux 0x51d23da2 I_BDEV +EXPORT_SYMBOL vmlinux 0x51d559d1 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x51dce73b xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x51deef32 sk_stop_timer +EXPORT_SYMBOL vmlinux 0x51e77c97 pfn_valid +EXPORT_SYMBOL vmlinux 0x51ef33b8 kstrndup +EXPORT_SYMBOL vmlinux 0x51f8a9aa nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x51fa4261 blk_complete_request +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x520ef632 netif_receive_skb +EXPORT_SYMBOL vmlinux 0x5218fcae nand_scan +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL vmlinux 0x5268c445 keyring_clear +EXPORT_SYMBOL vmlinux 0x528beec3 skb_pull +EXPORT_SYMBOL vmlinux 0x528c709d simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x52a8e86b free_mdio_bitbang +EXPORT_SYMBOL vmlinux 0x52b140d6 unregister_binfmt +EXPORT_SYMBOL vmlinux 0x52bbce1b udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x52c72d5e vfs_readlink +EXPORT_SYMBOL vmlinux 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL vmlinux 0x530478e0 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x5308223a console_start +EXPORT_SYMBOL vmlinux 0x5308897a sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x530e3017 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x5386a4c4 may_umount_tree +EXPORT_SYMBOL vmlinux 0x53932cab pneigh_lookup +EXPORT_SYMBOL vmlinux 0x539710ab free_netdev +EXPORT_SYMBOL vmlinux 0x53ba4adf set_security_override +EXPORT_SYMBOL vmlinux 0x53bb01e2 vm_stat +EXPORT_SYMBOL vmlinux 0x53bf2b33 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x53e1fc9a set_groups +EXPORT_SYMBOL vmlinux 0x53fe8edb mdiobus_write +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x540f55f0 tcp_parse_options +EXPORT_SYMBOL vmlinux 0x5437eb24 create_syslog_header +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x545083ce snd_pcm_hw_rule_noresample +EXPORT_SYMBOL vmlinux 0x547077ec __wake_up_bit +EXPORT_SYMBOL vmlinux 0x54778659 nf_register_hooks +EXPORT_SYMBOL vmlinux 0x5477beb0 register_qdisc +EXPORT_SYMBOL vmlinux 0x549a5bf5 register_key_type +EXPORT_SYMBOL vmlinux 0x549b603f tty_vhangup +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54b042de netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0x54d41fe8 netdev_info +EXPORT_SYMBOL vmlinux 0x54e3cc3b param_get_int +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x550b6895 skb_copy_datagram_from_iovec +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x556c2740 hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x5594be03 bitmap_remap +EXPORT_SYMBOL vmlinux 0x55a1f833 nf_register_hook +EXPORT_SYMBOL vmlinux 0x55b6ca06 skb_queue_head +EXPORT_SYMBOL vmlinux 0x55c7afd1 __break_lease +EXPORT_SYMBOL vmlinux 0x5614b010 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x56195eb8 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x56254e2e netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x562ccaa6 rtnl_unicast +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x563fef00 of_phy_connect_fixed_link +EXPORT_SYMBOL vmlinux 0x5642793a radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x56437bcb inet_add_offload +EXPORT_SYMBOL vmlinux 0x56ba2714 sock_no_mmap +EXPORT_SYMBOL vmlinux 0x56c42060 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56cb67d7 __inode_permission +EXPORT_SYMBOL vmlinux 0x56e5cfd2 generic_write_end +EXPORT_SYMBOL vmlinux 0x56ffdb22 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x572e97a1 key_unlink +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x579b01c4 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x57a31e57 nand_flash_ids +EXPORT_SYMBOL vmlinux 0x57a9bbef clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x57bb792e nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x57c0e5cf kill_anon_super +EXPORT_SYMBOL vmlinux 0x57d35d2d crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x580d77bc tcp_connect +EXPORT_SYMBOL vmlinux 0x5820e21f free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x58270659 __lock_page +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x5857b7cd pgprot_kernel +EXPORT_SYMBOL vmlinux 0x585bba2f kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x585d4e6a i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x5860a321 bio_integrity_free +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x588c130c vexpress_config_func_put +EXPORT_SYMBOL vmlinux 0x588d6f3e tcp_gro_receive +EXPORT_SYMBOL vmlinux 0x58d1070a of_get_address +EXPORT_SYMBOL vmlinux 0x58d633c7 neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x58dce2fd generic_file_llseek +EXPORT_SYMBOL vmlinux 0x58e6489f __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0x59453c42 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x594e1317 __modsi3 +EXPORT_SYMBOL vmlinux 0x594fd07a crypto_sha512_update +EXPORT_SYMBOL vmlinux 0x59546c96 tty_hangup +EXPORT_SYMBOL vmlinux 0x598542b2 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x598cd828 udp_table +EXPORT_SYMBOL vmlinux 0x59aac958 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0x59b6cb71 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x59be7ef6 clone_cred +EXPORT_SYMBOL vmlinux 0x59c347bf nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x59d29dab v7_flush_kern_dcache_area +EXPORT_SYMBOL vmlinux 0x59e5070d __do_div64 +EXPORT_SYMBOL vmlinux 0x59fcd674 serio_interrupt +EXPORT_SYMBOL vmlinux 0x5a17f8b7 follow_down_one +EXPORT_SYMBOL vmlinux 0x5a224c76 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL vmlinux 0x5a22b166 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x5a3142e6 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x5a425e30 dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0x5a5536c2 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x5aa067b5 kill_pgrp +EXPORT_SYMBOL vmlinux 0x5aa5e8da xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x5aaa727b phy_init_eee +EXPORT_SYMBOL vmlinux 0x5ac81ef5 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0x5ae5be44 lg_lock_init +EXPORT_SYMBOL vmlinux 0x5b19634d div_s64_rem +EXPORT_SYMBOL vmlinux 0x5b2bded2 dev_set_group +EXPORT_SYMBOL vmlinux 0x5b72009f ida_simple_get +EXPORT_SYMBOL vmlinux 0x5b797d47 vfs_llseek +EXPORT_SYMBOL vmlinux 0x5b8a52f3 read_cache_page_async +EXPORT_SYMBOL vmlinux 0x5ba0d7c6 try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x5ba87b59 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x5bfa8e64 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x5c1357cd igrab +EXPORT_SYMBOL vmlinux 0x5c1db162 do_map_probe +EXPORT_SYMBOL vmlinux 0x5c2acfd4 d_instantiate +EXPORT_SYMBOL vmlinux 0x5c4fd52f pid_task +EXPORT_SYMBOL vmlinux 0x5c526fa0 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x5c8748ae tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x5c9284a0 processor_id +EXPORT_SYMBOL vmlinux 0x5cad1294 dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x5cb54294 devm_iounmap +EXPORT_SYMBOL vmlinux 0x5cb92845 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x5ce2a28b snd_timer_pause +EXPORT_SYMBOL vmlinux 0x5cec8775 tty_port_hangup +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5cf6d753 remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0x5d04c2bd unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x5d0c0a5c tcp_shutdown +EXPORT_SYMBOL vmlinux 0x5d110f7e jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x5d41915d is_bad_inode +EXPORT_SYMBOL vmlinux 0x5d41c87c param_ops_charp +EXPORT_SYMBOL vmlinux 0x5d47f8df unlock_buffer +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d5b5a16 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x5d65498a blk_mq_free_queue +EXPORT_SYMBOL vmlinux 0x5d676d50 console_stop +EXPORT_SYMBOL vmlinux 0x5d733d47 d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0x5d751faa ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x5d77ae2e mddev_congested +EXPORT_SYMBOL vmlinux 0x5d7efc8f dev_notice +EXPORT_SYMBOL vmlinux 0x5d891a64 idr_destroy +EXPORT_SYMBOL vmlinux 0x5d8d1af2 neigh_update +EXPORT_SYMBOL vmlinux 0x5d8dc1cd dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x5da210e1 kobject_init +EXPORT_SYMBOL vmlinux 0x5dd6490e serio_close +EXPORT_SYMBOL vmlinux 0x5e3c8f87 find_get_page +EXPORT_SYMBOL vmlinux 0x5e5a451c phy_stop +EXPORT_SYMBOL vmlinux 0x5e75ffb0 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x5e760f7a __block_write_begin +EXPORT_SYMBOL vmlinux 0x5e7d9c07 eth_validate_addr +EXPORT_SYMBOL vmlinux 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL vmlinux 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL vmlinux 0x5e8c40db filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5eb11516 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5eb3c792 netdev_err +EXPORT_SYMBOL vmlinux 0x5eb979d5 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x5ebde896 netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x5ec4aaaf make_bad_inode +EXPORT_SYMBOL vmlinux 0x5ecda40a udp_proc_register +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ee30687 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x5ef69cd4 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x5efcc013 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f17db5f jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x5f1bfcbc elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x5f27323c _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x5f3c8f5c mmc_assume_removable +EXPORT_SYMBOL vmlinux 0x5f58f676 flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x5f68dd8d file_update_time +EXPORT_SYMBOL vmlinux 0x5f754e5a memset +EXPORT_SYMBOL vmlinux 0x5f7dcc2a mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x5f82dd63 inet_accept +EXPORT_SYMBOL vmlinux 0x5f84b860 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x5f8f0c25 snd_card_unref +EXPORT_SYMBOL vmlinux 0x5f91d610 phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0x5fb09225 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x5fc63f76 inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL vmlinux 0x5fd8571a input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x602c96f0 copy_to_user_fromio +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x60384165 dm_kobject_release +EXPORT_SYMBOL vmlinux 0x6047e9dd elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x604d421f eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x60523bcd gen10g_config_advert +EXPORT_SYMBOL vmlinux 0x605639e1 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x6063e0dc sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x60880fbc sock_no_bind +EXPORT_SYMBOL vmlinux 0x6090050d blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL vmlinux 0x60b86f61 sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x60cf6271 clocksource_unregister +EXPORT_SYMBOL vmlinux 0x60db2b03 seq_bitmap_list +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x611b22da vfs_unlink +EXPORT_SYMBOL vmlinux 0x612390ad netpoll_set_trap +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x613b7732 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x61490826 security_inode_init_security +EXPORT_SYMBOL vmlinux 0x614a9fb7 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x61538ad0 param_get_charp +EXPORT_SYMBOL vmlinux 0x61604c94 _snd_ctl_add_slave +EXPORT_SYMBOL vmlinux 0x6169b008 scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x616dc80e sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x617a218d __cond_resched_lock +EXPORT_SYMBOL vmlinux 0x618dfc70 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x619d1a0e blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x61a382e7 devm_gpiod_get +EXPORT_SYMBOL vmlinux 0x61a78c98 __sb_start_write +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61bddd51 snd_pcm_release_substream +EXPORT_SYMBOL vmlinux 0x61efd60b swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x621e670c nlmsg_notify +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6225cbca single_open +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x624227d9 of_match_device +EXPORT_SYMBOL vmlinux 0x6260533d dev_addr_add +EXPORT_SYMBOL vmlinux 0x6263e0c1 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0x6269de14 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0x6272be69 neigh_connected_output +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62822d05 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x62a867ab nonseekable_open +EXPORT_SYMBOL vmlinux 0x62b4d211 tcp_syn_flood_action +EXPORT_SYMBOL vmlinux 0x62bf684f tty_register_driver +EXPORT_SYMBOL vmlinux 0x63062a5b scm_detach_fds +EXPORT_SYMBOL vmlinux 0x630e4ffa scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x631c3918 bdi_unregister +EXPORT_SYMBOL vmlinux 0x6337b818 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x634ec59c bioset_free +EXPORT_SYMBOL vmlinux 0x63763ecd skb_insert +EXPORT_SYMBOL vmlinux 0x63778864 inode_permission +EXPORT_SYMBOL vmlinux 0x637e2066 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x638ecaed ptp_clock_unregister +EXPORT_SYMBOL vmlinux 0x63a26e33 audit_log_start +EXPORT_SYMBOL vmlinux 0x63a35039 prepare_creds +EXPORT_SYMBOL vmlinux 0x63cbfae5 uart_add_one_port +EXPORT_SYMBOL vmlinux 0x63d39458 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x6413ba47 seq_putc +EXPORT_SYMBOL vmlinux 0x64272d4f blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x6429e1be __lru_cache_add +EXPORT_SYMBOL vmlinux 0x645a5ab0 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x64681977 generic_write_checks +EXPORT_SYMBOL vmlinux 0x6490f4af sock_update_memcg +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64bcfeef mdiobus_read +EXPORT_SYMBOL vmlinux 0x64cddc93 snd_pcm_period_elapsed +EXPORT_SYMBOL vmlinux 0x64f927ec inet_frags_init +EXPORT_SYMBOL vmlinux 0x64fd6307 do_splice_from +EXPORT_SYMBOL vmlinux 0x6502c1f9 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL vmlinux 0x65115823 mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x6513dd47 __sock_create +EXPORT_SYMBOL vmlinux 0x651586e8 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x651ef37c tcp_check_req +EXPORT_SYMBOL vmlinux 0x6533deaa truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x65466939 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x6556e3ac stop_tty +EXPORT_SYMBOL vmlinux 0x6565d33f scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x6585e310 alloc_pages_exact_nid +EXPORT_SYMBOL vmlinux 0x65af8c6a install_exec_creds +EXPORT_SYMBOL vmlinux 0x65bc439c __scsi_add_device +EXPORT_SYMBOL vmlinux 0x65bfa9c7 register_mtd_chip_driver +EXPORT_SYMBOL vmlinux 0x65c5f2e7 sg_miter_start +EXPORT_SYMBOL vmlinux 0x65ce91bc cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x65cf4f94 sock_kfree_s +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65ead041 generic_file_mmap +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x6605f97f flex_array_clear +EXPORT_SYMBOL vmlinux 0x66896337 __serio_register_port +EXPORT_SYMBOL vmlinux 0x668da8d5 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x669c9c18 contig_page_data +EXPORT_SYMBOL vmlinux 0x66a67dab flex_array_shrink +EXPORT_SYMBOL vmlinux 0x66ad0922 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x66c3272b nf_afinfo +EXPORT_SYMBOL vmlinux 0x6710b8b6 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x67238165 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x672eb5ac scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x673ba1b6 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x6741dbdc napi_gro_flush +EXPORT_SYMBOL vmlinux 0x6741e212 set_binfmt +EXPORT_SYMBOL vmlinux 0x6751d486 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x675b8f61 param_get_string +EXPORT_SYMBOL vmlinux 0x676bbc0f _set_bit +EXPORT_SYMBOL vmlinux 0x677b75ba register_gifconf +EXPORT_SYMBOL vmlinux 0x67a2a670 blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b78057 security_file_permission +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL vmlinux 0x67f37b13 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x680d016c jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x688190cf dmam_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x68869bae panic_notifier_list +EXPORT_SYMBOL vmlinux 0x68a1b6cf kill_pid +EXPORT_SYMBOL vmlinux 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68c0211b sget +EXPORT_SYMBOL vmlinux 0x68dc30db thermal_cdev_update +EXPORT_SYMBOL vmlinux 0x68e05d57 getrawmonotonic +EXPORT_SYMBOL vmlinux 0x68ee8353 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x68fb581a icst307_idx2s +EXPORT_SYMBOL vmlinux 0x6915eb38 down_interruptible +EXPORT_SYMBOL vmlinux 0x691881f1 __pskb_copy +EXPORT_SYMBOL vmlinux 0x69242ead tcf_hash_check +EXPORT_SYMBOL vmlinux 0x69457333 simple_fill_super +EXPORT_SYMBOL vmlinux 0x694b0093 input_free_device +EXPORT_SYMBOL vmlinux 0x6968442e max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x69a2d86c amba_driver_register +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69d38ed9 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x69e27c7a bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a333781 snd_jack_new +EXPORT_SYMBOL vmlinux 0x6a399bb5 dev_close +EXPORT_SYMBOL vmlinux 0x6a3f4119 mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0x6a441750 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x6a44b43f bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0x6a5aee77 snd_pcm_mmap_data +EXPORT_SYMBOL vmlinux 0x6a5b9693 genl_notify +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a74092a security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x6a762a57 user_path_create +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a7fb5d5 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x6abc0a5b netdev_update_features +EXPORT_SYMBOL vmlinux 0x6abc1e25 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x6abc3487 ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0x6abf4d1a snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL vmlinux 0x6ad2edbf rtnl_notify +EXPORT_SYMBOL vmlinux 0x6aec0efc blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0x6af181d3 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x6afeecb6 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b2d6304 clk_get +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b2e8c8d sock_init_data +EXPORT_SYMBOL vmlinux 0x6b3786ce security_dentry_init_security +EXPORT_SYMBOL vmlinux 0x6b3d1316 bio_map_kern +EXPORT_SYMBOL vmlinux 0x6b56a1f9 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x6b66ced9 mmc_gpio_free_cd +EXPORT_SYMBOL vmlinux 0x6b6fa875 __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x6b774fdb bio_alloc_pages +EXPORT_SYMBOL vmlinux 0x6b7a0681 scsi_scan_target +EXPORT_SYMBOL vmlinux 0x6b9211df security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6beb2078 param_set_copystring +EXPORT_SYMBOL vmlinux 0x6bf2596d dev_set_mtu +EXPORT_SYMBOL vmlinux 0x6c1c8445 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c3cafba snd_unregister_device +EXPORT_SYMBOL vmlinux 0x6c4037c2 tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x6c42e161 ps2_end_command +EXPORT_SYMBOL vmlinux 0x6c4663c9 _dev_info +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c551325 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c6cdd4d wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6ca5b0f8 __net_get_random_once +EXPORT_SYMBOL vmlinux 0x6ca978e9 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x6ca9a1f0 fget_light +EXPORT_SYMBOL vmlinux 0x6cbef8f3 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x6cceea49 tcp_init_sock +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6cfbc403 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x6cfcc67c input_flush_device +EXPORT_SYMBOL vmlinux 0x6d050392 scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d27ef64 __bitmap_empty +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d340f64 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0x6d3f23e6 fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0x6d4c65bf inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x6d525690 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x6d5447b7 scm_fp_dup +EXPORT_SYMBOL vmlinux 0x6d5e5b63 xfrm_state_update +EXPORT_SYMBOL vmlinux 0x6d630748 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x6d631a29 proto_register +EXPORT_SYMBOL vmlinux 0x6d662533 _find_first_bit_le +EXPORT_SYMBOL vmlinux 0x6d928501 netdev_has_any_upper_dev +EXPORT_SYMBOL vmlinux 0x6d949d47 vfs_read +EXPORT_SYMBOL vmlinux 0x6d98a110 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x6d9fc308 alloc_file +EXPORT_SYMBOL vmlinux 0x6dd09713 vlan_vid_del +EXPORT_SYMBOL vmlinux 0x6dddf9dd blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x6de5e122 dentry_unhash +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df7bfb3 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0x6e16a76f filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x6e16fbe8 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x6e4a4be7 input_unregister_handler +EXPORT_SYMBOL vmlinux 0x6e717029 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e7b015a netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x6e7ba92a genlmsg_put +EXPORT_SYMBOL vmlinux 0x6e83c1d4 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x6e874941 bdput +EXPORT_SYMBOL vmlinux 0x6eac4b6a netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0x6eafa82e init_net +EXPORT_SYMBOL vmlinux 0x6ebc5149 param_ops_long +EXPORT_SYMBOL vmlinux 0x6ec9ccdb _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0x6eea581f fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL vmlinux 0x6f0ccdd5 tty_write_room +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f27166c __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x6f371a10 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x6f3fa490 of_phy_find_device +EXPORT_SYMBOL vmlinux 0x6f42e53d lock_sock_nested +EXPORT_SYMBOL vmlinux 0x6f694ec2 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fded181 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x6fe472c5 inet_frags_fini +EXPORT_SYMBOL vmlinux 0x700299a5 sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x7006b1fe simple_open +EXPORT_SYMBOL vmlinux 0x70097aa0 nand_bch_free +EXPORT_SYMBOL vmlinux 0x701dd646 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x7029e7c2 inet_getname +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x705f86ac bio_unmap_user +EXPORT_SYMBOL vmlinux 0x706a3aeb vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0x706bd119 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x707021b2 security_inode_permission +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x709d1975 loop_backing_file +EXPORT_SYMBOL vmlinux 0x70bc17d7 inode_wait +EXPORT_SYMBOL vmlinux 0x70d053fd try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0x70d40fca snd_timer_global_new +EXPORT_SYMBOL vmlinux 0x70e1bea1 kunmap_high +EXPORT_SYMBOL vmlinux 0x70edc58b mapping_tagged +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x7137b5bb security_path_link +EXPORT_SYMBOL vmlinux 0x71473fed snd_pcm_notify +EXPORT_SYMBOL vmlinux 0x715b2fe3 devfreq_add_governor +EXPORT_SYMBOL vmlinux 0x715ca226 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x71600b41 vfs_writev +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x718be69a input_register_device +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71c90087 memcmp +EXPORT_SYMBOL vmlinux 0x71e57bfa snd_timer_global_register +EXPORT_SYMBOL vmlinux 0x71f65175 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0x72350130 ___ratelimit +EXPORT_SYMBOL vmlinux 0x724647b6 tty_port_open +EXPORT_SYMBOL vmlinux 0x7251db66 sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x7274a5af ilookup +EXPORT_SYMBOL vmlinux 0x727eba47 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x728fab4e __inet6_hash +EXPORT_SYMBOL vmlinux 0x72abd62f single_release +EXPORT_SYMBOL vmlinux 0x72adc619 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x72b5b2b7 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x72bdbdbf in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x72d58de9 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x72dac5c7 put_tty_driver +EXPORT_SYMBOL vmlinux 0x72e2f4d1 inet_register_protosw +EXPORT_SYMBOL vmlinux 0x72e7fdb7 skb_dequeue +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72ea7dc6 remove_proc_entry +EXPORT_SYMBOL vmlinux 0x72f6c735 locks_free_lock +EXPORT_SYMBOL vmlinux 0x72ff0388 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x73018fd3 lease_get_mtime +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x731b81f1 __wait_on_bit +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x734d7a90 i2c_verify_client +EXPORT_SYMBOL vmlinux 0x7352d55e dev_get_by_index +EXPORT_SYMBOL vmlinux 0x736348a4 snd_pcm_hw_param_last +EXPORT_SYMBOL vmlinux 0x737de5e9 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x73ba8550 bio_add_page +EXPORT_SYMBOL vmlinux 0x73bc1836 inode_get_bytes +EXPORT_SYMBOL vmlinux 0x73d56d9c tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x73d8f9ec snd_ctl_new1 +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x73e70213 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x73fdfec0 mark_page_accessed +EXPORT_SYMBOL vmlinux 0x7413c814 twl6040_power +EXPORT_SYMBOL vmlinux 0x743050f8 proto_unregister +EXPORT_SYMBOL vmlinux 0x743963b6 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x7443141a __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x744fa35a ip6_xmit +EXPORT_SYMBOL vmlinux 0x74577581 bdi_register_dev +EXPORT_SYMBOL vmlinux 0x7458dcab mnt_pin +EXPORT_SYMBOL vmlinux 0x7469fcfe radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x7475e552 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x747fd23b dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x748b4fdf mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x74aa8421 poll_initwait +EXPORT_SYMBOL vmlinux 0x74af0f50 snd_timer_stop +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74ce05b8 flush_delayed_work +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74ef603a key_task_permission +EXPORT_SYMBOL vmlinux 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x75361364 fixed_size_llseek +EXPORT_SYMBOL vmlinux 0x753cd3b8 clear_bdi_congested +EXPORT_SYMBOL vmlinux 0x754dac78 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x75779c51 set_page_dirty +EXPORT_SYMBOL vmlinux 0x7582649a skb_orphan_partial +EXPORT_SYMBOL vmlinux 0x75850d01 __vmalloc +EXPORT_SYMBOL vmlinux 0x7593d385 div64_s64 +EXPORT_SYMBOL vmlinux 0x75b40253 __page_symlink +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75fee7fd __raw_writesb +EXPORT_SYMBOL vmlinux 0x76028ffd wait_on_sync_kiocb +EXPORT_SYMBOL vmlinux 0x76039add tty_unlock +EXPORT_SYMBOL vmlinux 0x7609a6b7 touch_buffer +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x7633457b framebuffer_release +EXPORT_SYMBOL vmlinux 0x76338d99 inc_nlink +EXPORT_SYMBOL vmlinux 0x76372859 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x764eb57f elv_rb_del +EXPORT_SYMBOL vmlinux 0x767a4eb1 dm_get_mapinfo +EXPORT_SYMBOL vmlinux 0x7698b6ed call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0x76aff4c7 dev_activate +EXPORT_SYMBOL vmlinux 0x76b94866 mmc_add_host +EXPORT_SYMBOL vmlinux 0x76bf656d __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x76cf47f6 __aeabi_llsl +EXPORT_SYMBOL vmlinux 0x76cfbff9 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x76d26eb5 dquot_resume +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x77200baa dev_trans_start +EXPORT_SYMBOL vmlinux 0x77312d07 serio_open +EXPORT_SYMBOL vmlinux 0x7748a63d register_console +EXPORT_SYMBOL vmlinux 0x775721bd ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x77598337 follow_up +EXPORT_SYMBOL vmlinux 0x776f73ed pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x7774b460 cfb_fillrect +EXPORT_SYMBOL vmlinux 0x777a7c07 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x7783e185 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x7791193f icst525_s2div +EXPORT_SYMBOL vmlinux 0x77945cf1 bio_split +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77a2fd71 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77d5b6b6 kobject_set_name +EXPORT_SYMBOL vmlinux 0x77df0847 __set_personality +EXPORT_SYMBOL vmlinux 0x77e52c6d lock_fb_info +EXPORT_SYMBOL vmlinux 0x77ecac9f zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x77f5fb36 inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0x77fe4cb2 sleep_on_timeout +EXPORT_SYMBOL vmlinux 0x782567ec memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x7833deb2 pgprot_user +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x784edd75 __scsi_put_command +EXPORT_SYMBOL vmlinux 0x7865c074 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x7866b849 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x78903f87 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x78973977 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x789b5f5f devm_clk_put +EXPORT_SYMBOL vmlinux 0x789c96d3 find_or_create_page +EXPORT_SYMBOL vmlinux 0x789ce4aa generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x78b1149d set_blocksize +EXPORT_SYMBOL vmlinux 0x78dd00b7 cont_write_begin +EXPORT_SYMBOL vmlinux 0x78e9d96d d_alloc_name +EXPORT_SYMBOL vmlinux 0x78ea1aba napi_complete +EXPORT_SYMBOL vmlinux 0x78f55350 bio_integrity_set_tag +EXPORT_SYMBOL vmlinux 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL vmlinux 0x7911f87c scsi_prep_return +EXPORT_SYMBOL vmlinux 0x7930d225 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0x7931b585 sock_recvmsg +EXPORT_SYMBOL vmlinux 0x795980c7 block_truncate_page +EXPORT_SYMBOL vmlinux 0x7966c9bf snd_jack_report +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x797f63b2 tty_name +EXPORT_SYMBOL vmlinux 0x7990cfd1 phy_disconnect +EXPORT_SYMBOL vmlinux 0x799c1f22 blk_register_region +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79d6c800 update_region +EXPORT_SYMBOL vmlinux 0x79d8a95b phy_device_register +EXPORT_SYMBOL vmlinux 0x79e39d60 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x7a041cae inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0x7a188791 prandom_bytes +EXPORT_SYMBOL vmlinux 0x7a195370 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x7a217c4d cfb_copyarea +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a304c93 fb_set_cmap +EXPORT_SYMBOL vmlinux 0x7a33a15b pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a55e179 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x7a5fef80 tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x7a6e6541 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x7a6e76df elevator_exit +EXPORT_SYMBOL vmlinux 0x7a748f54 handle_edge_irq +EXPORT_SYMBOL vmlinux 0x7a91726b clkdev_alloc +EXPORT_SYMBOL vmlinux 0x7a925833 cpufreq_get_global_kobject +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7aa1c14d mnt_unpin +EXPORT_SYMBOL vmlinux 0x7aa6f55c inet_stream_connect +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ac46843 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7ae192d6 __dquot_free_space +EXPORT_SYMBOL vmlinux 0x7af1ef4a sock_no_poll +EXPORT_SYMBOL vmlinux 0x7afa89fc vsnprintf +EXPORT_SYMBOL vmlinux 0x7aff2fcf key_type_keyring +EXPORT_SYMBOL vmlinux 0x7b1ade38 lz4_decompress +EXPORT_SYMBOL vmlinux 0x7b1d0a3c phy_connect +EXPORT_SYMBOL vmlinux 0x7b1ea2d1 call_netdevice_notifiers_info +EXPORT_SYMBOL vmlinux 0x7b4398ec snd_pcm_debug_name +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b600406 sk_receive_skb +EXPORT_SYMBOL vmlinux 0x7b8b1b38 __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x7bb88a22 netdev_state_change +EXPORT_SYMBOL vmlinux 0x7bbd8201 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x7bce7b56 dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x7bd4d173 devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0x7bdb1b50 lookup_one_len +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c383cf7 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x7c3a07ba unregister_quota_format +EXPORT_SYMBOL vmlinux 0x7c442991 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c4a37a0 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x7c4c8b01 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c66257d prepare_binprm +EXPORT_SYMBOL vmlinux 0x7c71869f __memcg_kmem_get_cache +EXPORT_SYMBOL vmlinux 0x7c7407ec i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x7c7a6769 sk_mc_loop +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7ca2f604 skb_copy_bits +EXPORT_SYMBOL vmlinux 0x7ca44901 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cb23bf6 kobject_del +EXPORT_SYMBOL vmlinux 0x7cb9906e jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x7cc035a7 __ucmpdi2 +EXPORT_SYMBOL vmlinux 0x7cc578da param_get_long +EXPORT_SYMBOL vmlinux 0x7cc5d279 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7d02731e mtd_concat_create +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d0e3e72 ida_get_new_above +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d3a6dde snd_card_file_remove +EXPORT_SYMBOL vmlinux 0x7d3b7d0b tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x7d4a4d16 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x7d4e2276 __init_rwsem +EXPORT_SYMBOL vmlinux 0x7d8fef01 bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x7d9e2ab2 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x7dbc927e truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x7dccc294 proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x7de4d88c uart_update_timeout +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7e2387da fput +EXPORT_SYMBOL vmlinux 0x7e286a8f tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x7e394c4e sysctl_local_reserved_ports +EXPORT_SYMBOL vmlinux 0x7e4bfb3a kobject_get +EXPORT_SYMBOL vmlinux 0x7e8039c9 tty_port_put +EXPORT_SYMBOL vmlinux 0x7e881d4c free_user_ns +EXPORT_SYMBOL vmlinux 0x7e98d318 vexpress_config_read +EXPORT_SYMBOL vmlinux 0x7e9efe8e complete_and_exit +EXPORT_SYMBOL vmlinux 0x7ea07651 dm_register_target +EXPORT_SYMBOL vmlinux 0x7ead817c __idr_pre_get +EXPORT_SYMBOL vmlinux 0x7eb8de05 padata_do_serial +EXPORT_SYMBOL vmlinux 0x7ebece2f eth_header_cache +EXPORT_SYMBOL vmlinux 0x7ecbc9db __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x7ee73c0c memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0x7ee87577 generic_pipe_buf_map +EXPORT_SYMBOL vmlinux 0x7f098796 register_cdrom +EXPORT_SYMBOL vmlinux 0x7f19db1b tty_register_device +EXPORT_SYMBOL vmlinux 0x7f1a457b i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f2cffef seq_read +EXPORT_SYMBOL vmlinux 0x7f63b31e _memcpy_toio +EXPORT_SYMBOL vmlinux 0x7f78b576 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x7f9e6f2b page_readlink +EXPORT_SYMBOL vmlinux 0x7fa54e2f load_nls +EXPORT_SYMBOL vmlinux 0x7fdb3cc8 ptp_clock_event +EXPORT_SYMBOL vmlinux 0x7fdfde1f skb_checksum_help +EXPORT_SYMBOL vmlinux 0x7fe0149f kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7fe93629 mount_nodev +EXPORT_SYMBOL vmlinux 0x800cca89 wake_up_process +EXPORT_SYMBOL vmlinux 0x800e4ffa __muldi3 +EXPORT_SYMBOL vmlinux 0x8024b9d7 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x802947f3 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0x803159b1 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x804f922a ipmi_addr_length +EXPORT_SYMBOL vmlinux 0x80631c41 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x80c1c54e mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80db4759 scsi_finish_command +EXPORT_SYMBOL vmlinux 0x80e11927 dquot_transfer +EXPORT_SYMBOL vmlinux 0x812c8712 generic_removexattr +EXPORT_SYMBOL vmlinux 0x81361af1 get_io_context +EXPORT_SYMBOL vmlinux 0x813e8e69 __register_chrdev +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x818f90ce dquot_drop +EXPORT_SYMBOL vmlinux 0x81a3f4f1 snd_dma_get_reserved_buf +EXPORT_SYMBOL vmlinux 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL vmlinux 0x81bc0985 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x81d10f5f trace_seq_putc +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81f1c7eb snd_timer_global_free +EXPORT_SYMBOL vmlinux 0x8206aeab ping_prot +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x82201e29 nand_bch_calculate_ecc +EXPORT_SYMBOL vmlinux 0x8239de0c unregister_exec_domain +EXPORT_SYMBOL vmlinux 0x824a4367 tmio_core_mmc_pwr +EXPORT_SYMBOL vmlinux 0x8251bcc3 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x8260686f bitmap_find_next_zero_area +EXPORT_SYMBOL vmlinux 0x8275d460 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x829f3e7a bio_pair_release +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82c64db0 pm860x_page_set_bits +EXPORT_SYMBOL vmlinux 0x82cd2e49 skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0x82db8dd6 mmc_cache_ctrl +EXPORT_SYMBOL vmlinux 0x83101edb __invalidate_device +EXPORT_SYMBOL vmlinux 0x8320bea8 __umodsi3 +EXPORT_SYMBOL vmlinux 0x83211609 up_write +EXPORT_SYMBOL vmlinux 0x832ed81e netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0x8353b068 kmalloc_caches +EXPORT_SYMBOL vmlinux 0x836cce78 inet_put_port +EXPORT_SYMBOL vmlinux 0x8386dfd9 snd_card_set_id +EXPORT_SYMBOL vmlinux 0x83a476ce bitmap_scnlistprintf +EXPORT_SYMBOL vmlinux 0x8400c006 from_kprojid +EXPORT_SYMBOL vmlinux 0x840293a1 netpoll_rx_enable +EXPORT_SYMBOL vmlinux 0x840512a0 dev_mc_add +EXPORT_SYMBOL vmlinux 0x840903a9 arp_send +EXPORT_SYMBOL vmlinux 0x84132ed2 scsi_free_command +EXPORT_SYMBOL vmlinux 0x841962f8 param_get_ushort +EXPORT_SYMBOL vmlinux 0x843e680e page_follow_link_light +EXPORT_SYMBOL vmlinux 0x844d0a94 serio_reconnect +EXPORT_SYMBOL vmlinux 0x8453c5f0 simple_lookup +EXPORT_SYMBOL vmlinux 0x8453f2b5 phy_start +EXPORT_SYMBOL vmlinux 0x8459a419 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x845c75dc md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x846e727b dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x8474bb35 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x84754a37 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x8477e071 iterate_mounts +EXPORT_SYMBOL vmlinux 0x847c40b1 clear_nlink +EXPORT_SYMBOL vmlinux 0x849c285b devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x84b183ae strncmp +EXPORT_SYMBOL vmlinux 0x84c785c2 mmc_register_driver +EXPORT_SYMBOL vmlinux 0x84cbfada scsi_calculate_bounce_limit +EXPORT_SYMBOL vmlinux 0x84d7f3fc __dquot_transfer +EXPORT_SYMBOL vmlinux 0x84e2014b scsi_dma_map +EXPORT_SYMBOL vmlinux 0x84e61741 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x8509c540 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0x8518eca9 param_get_short +EXPORT_SYMBOL vmlinux 0x8519355d mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x852040b9 swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x853bf7c1 param_set_int +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85e7deb2 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x85efb9a9 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x8606c870 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x86104cfd generic_delete_inode +EXPORT_SYMBOL vmlinux 0x86155494 tty_free_termios +EXPORT_SYMBOL vmlinux 0x86273e8b blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x8646ce8a tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x865e4f89 vfs_rename +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x86676984 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x866f5202 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x86806743 get_fs_type +EXPORT_SYMBOL vmlinux 0x868378e4 ata_link_printk +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x86967998 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x86a181f0 neigh_destroy +EXPORT_SYMBOL vmlinux 0x86a1ee7a pagecache_write_end +EXPORT_SYMBOL vmlinux 0x86a4889a kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x86aaf0c8 of_device_unregister +EXPORT_SYMBOL vmlinux 0x86dad01e jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x870bf928 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x873f12be netif_rx_ni +EXPORT_SYMBOL vmlinux 0x8764c7b1 amba_device_unregister +EXPORT_SYMBOL vmlinux 0x8779a34f param_ops_byte +EXPORT_SYMBOL vmlinux 0x877b8336 notify_change +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x8798e453 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x879bb456 mmc_of_parse +EXPORT_SYMBOL vmlinux 0x87bbdf42 arp_invalidate +EXPORT_SYMBOL vmlinux 0x87df3b84 generic_fillattr +EXPORT_SYMBOL vmlinux 0x881039d0 zlib_inflate +EXPORT_SYMBOL vmlinux 0x882dab9d sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0x8834396c mod_timer +EXPORT_SYMBOL vmlinux 0x883b0ae9 unregister_md_personality +EXPORT_SYMBOL vmlinux 0x88513970 param_set_byte +EXPORT_SYMBOL vmlinux 0x8895037d xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x88e4af2a mmc_can_trim +EXPORT_SYMBOL vmlinux 0x88ec6e20 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x890dc2ed idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0x89153a52 kfree_put_link +EXPORT_SYMBOL vmlinux 0x894d1883 generic_make_request +EXPORT_SYMBOL vmlinux 0x8953f8ff __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x897473df mktime +EXPORT_SYMBOL vmlinux 0x89778aaf kernel_getsockname +EXPORT_SYMBOL vmlinux 0x89918c83 backlight_force_update +EXPORT_SYMBOL vmlinux 0x899c4ae7 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89b84755 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89f83ec9 input_event +EXPORT_SYMBOL vmlinux 0x8a0f4230 rename_lock +EXPORT_SYMBOL vmlinux 0x8a1278b9 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a4101fa empty_zero_page +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a4fa83b __aeabi_llsr +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a7568f9 tc_classify_compat +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a955485 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8aa43112 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x8aabca43 security_path_chown +EXPORT_SYMBOL vmlinux 0x8ab41aa7 netlink_unicast +EXPORT_SYMBOL vmlinux 0x8aebb6fa wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x8b04c100 module_layout +EXPORT_SYMBOL vmlinux 0x8b0976b9 cfb_imageblit +EXPORT_SYMBOL vmlinux 0x8b13eb4e genphy_resume +EXPORT_SYMBOL vmlinux 0x8b27c960 scsi_scan_host +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b4f4ad1 dev_mc_init +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b6c481e fget +EXPORT_SYMBOL vmlinux 0x8b8a1fdf padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x8b9e1bf1 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x8bd86b70 scsi_setup_fs_cmnd +EXPORT_SYMBOL vmlinux 0x8c2bbdc9 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x8c34b071 registered_fb +EXPORT_SYMBOL vmlinux 0x8c4d2041 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c6df6dc __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x8c7ca826 simple_write_begin +EXPORT_SYMBOL vmlinux 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL vmlinux 0x8c9ac9bb kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x8c9cf833 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x8cabcfbe tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x8ccce800 phy_start_aneg +EXPORT_SYMBOL vmlinux 0x8cebe8d0 __frontswap_test +EXPORT_SYMBOL vmlinux 0x8cecb64b jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0x8cf7b665 __get_page_tail +EXPORT_SYMBOL vmlinux 0x8d0eff0c fasync_helper +EXPORT_SYMBOL vmlinux 0x8d284831 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x8d2e268b param_ops_ulong +EXPORT_SYMBOL vmlinux 0x8d366743 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0x8d397c0f snd_pcm_suspend_all +EXPORT_SYMBOL vmlinux 0x8d43c882 simple_empty +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d568824 bio_phys_segments +EXPORT_SYMBOL vmlinux 0x8d6f81b4 __div64_32 +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d8b6353 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x8d8bf948 fb_blank +EXPORT_SYMBOL vmlinux 0x8d9d4d11 sock_i_ino +EXPORT_SYMBOL vmlinux 0x8da263c0 snd_pcm_lib_write +EXPORT_SYMBOL vmlinux 0x8dbed00b flock_lock_file_wait +EXPORT_SYMBOL vmlinux 0x8dc1d172 snd_cards +EXPORT_SYMBOL vmlinux 0x8dcff6e2 __pv_offset +EXPORT_SYMBOL vmlinux 0x8e0a4b5d ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x8e0d66f4 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x8e2b6438 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x8e30f12c seq_bitmap +EXPORT_SYMBOL vmlinux 0x8e5c580a ida_init +EXPORT_SYMBOL vmlinux 0x8e649c83 blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0x8e77e806 net_dma_find_channel +EXPORT_SYMBOL vmlinux 0x8e7fe2dd __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x8e864a86 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x8e865d3c arm_delay_ops +EXPORT_SYMBOL vmlinux 0x8e8ac9a9 skb_store_bits +EXPORT_SYMBOL vmlinux 0x8ec50616 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x8ed669cd scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x8f045d1c cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x8f047577 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x8f0c9e3e inet6_release +EXPORT_SYMBOL vmlinux 0x8f19fd56 xfrm_state_add +EXPORT_SYMBOL vmlinux 0x8f1a7d80 snd_info_create_module_entry +EXPORT_SYMBOL vmlinux 0x8f2241f9 eth_rebuild_header +EXPORT_SYMBOL vmlinux 0x8f3bcdb9 dev_add_pack +EXPORT_SYMBOL vmlinux 0x8f4f7edf km_policy_expired +EXPORT_SYMBOL vmlinux 0x8f595b11 snd_major +EXPORT_SYMBOL vmlinux 0x8f678b07 __stack_chk_guard +EXPORT_SYMBOL vmlinux 0x8f6afaec jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x8f6eba1d blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x8fa02246 amba_find_device +EXPORT_SYMBOL vmlinux 0x8faa4598 of_translate_address +EXPORT_SYMBOL vmlinux 0x8faa863d truncate_pagecache +EXPORT_SYMBOL vmlinux 0x8facf472 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x8fbdf9cb load_nls_default +EXPORT_SYMBOL vmlinux 0x8fcde4aa md_flush_request +EXPORT_SYMBOL vmlinux 0x8fd180e7 kernel_neon_begin +EXPORT_SYMBOL vmlinux 0x8fdb0c60 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x8fddcff9 try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x8fe83082 netlink_ack +EXPORT_SYMBOL vmlinux 0x8ffdb3b8 crc16 +EXPORT_SYMBOL vmlinux 0x90153345 blk_end_request +EXPORT_SYMBOL vmlinux 0x9015c917 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x9025de2b tty_pair_get_pty +EXPORT_SYMBOL vmlinux 0x9038ea7b bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x905ab3ad vm_insert_page +EXPORT_SYMBOL vmlinux 0x90623a7b snd_timer_continue +EXPORT_SYMBOL vmlinux 0x90683a54 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x908b53ed param_set_short +EXPORT_SYMBOL vmlinux 0x908fbf35 input_close_device +EXPORT_SYMBOL vmlinux 0x9099319e md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x90bc36cd dev_add_offload +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x90f1233d bdgrab +EXPORT_SYMBOL vmlinux 0x90f7fd3f snd_jack_set_key +EXPORT_SYMBOL vmlinux 0x91168fa0 fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0x91346c71 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x913e3fa7 inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x9175ba6a snd_pcm_hw_constraint_step +EXPORT_SYMBOL vmlinux 0x91793630 zero_fill_bio +EXPORT_SYMBOL vmlinux 0x919029aa __readwrite_bug +EXPORT_SYMBOL vmlinux 0x91a467e6 dev_printk_emit +EXPORT_SYMBOL vmlinux 0x91aec064 down_read_trylock +EXPORT_SYMBOL vmlinux 0x91c0980e icst_hz +EXPORT_SYMBOL vmlinux 0x91d60509 __secpath_destroy +EXPORT_SYMBOL vmlinux 0x91dc4790 block_read_full_page +EXPORT_SYMBOL vmlinux 0x92056ad1 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x9206fa16 bdi_init +EXPORT_SYMBOL vmlinux 0x920eb90c interruptible_sleep_on_timeout +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x92447c80 blk_mq_insert_request +EXPORT_SYMBOL vmlinux 0x924ea9c7 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x925520d2 blk_start_plug +EXPORT_SYMBOL vmlinux 0x9265caa8 sock_i_uid +EXPORT_SYMBOL vmlinux 0x9272dff0 __ip_select_ident +EXPORT_SYMBOL vmlinux 0x927a9a3f rtnl_create_link +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92b2e896 cdrom_open +EXPORT_SYMBOL vmlinux 0x92b55bd2 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x92b8f398 xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x92ce37b2 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x92d40412 __lock_buffer +EXPORT_SYMBOL vmlinux 0x92d44e4c dcache_dir_close +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x931f5e82 empty_aops +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x9349d084 d_delete +EXPORT_SYMBOL vmlinux 0x935d1e17 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x936364af blkdev_get +EXPORT_SYMBOL vmlinux 0x9364c727 key_link +EXPORT_SYMBOL vmlinux 0x936ccf61 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x9382486b mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x938f0ab0 ppp_register_channel +EXPORT_SYMBOL vmlinux 0x93994d26 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x9399d792 d_rehash +EXPORT_SYMBOL vmlinux 0x93a6e0b2 io_schedule +EXPORT_SYMBOL vmlinux 0x93af20fb serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93b80d42 neigh_parms_release +EXPORT_SYMBOL vmlinux 0x93c7b150 xfrm_register_km +EXPORT_SYMBOL vmlinux 0x93dd151c lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x94098ff8 snd_interval_list +EXPORT_SYMBOL vmlinux 0x941e6ac5 snd_pcm_lib_free_pages +EXPORT_SYMBOL vmlinux 0x942f5392 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x9433961a consume_skb +EXPORT_SYMBOL vmlinux 0x9470639c tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x949ae3cc simple_statfs +EXPORT_SYMBOL vmlinux 0x94d3da68 rtc_lock +EXPORT_SYMBOL vmlinux 0x94d9cb49 key_alloc +EXPORT_SYMBOL vmlinux 0x94eb1c19 gen10g_resume +EXPORT_SYMBOL vmlinux 0x9502fce1 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0x9508f166 param_ops_bint +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x95534ba1 sys_imageblit +EXPORT_SYMBOL vmlinux 0x95588cd5 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x95622f41 down_timeout +EXPORT_SYMBOL vmlinux 0x958b05a2 snd_card_register +EXPORT_SYMBOL vmlinux 0x959dd937 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x95a23cb7 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x95a7bd33 kill_litter_super +EXPORT_SYMBOL vmlinux 0x95ae0527 __devm_request_region +EXPORT_SYMBOL vmlinux 0x95c6af1e blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x95cb929c of_find_all_nodes +EXPORT_SYMBOL vmlinux 0x95dbe078 __get_user_2 +EXPORT_SYMBOL vmlinux 0x95dd10fb sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0x95e6e500 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x95e82afc eth_type_trans +EXPORT_SYMBOL vmlinux 0x960b2960 module_refcount +EXPORT_SYMBOL vmlinux 0x961299fd gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0x9613509a idr_replace +EXPORT_SYMBOL vmlinux 0x961c7bfc led_set_brightness +EXPORT_SYMBOL vmlinux 0x96239e4e sk_dst_check +EXPORT_SYMBOL vmlinux 0x9639f008 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x963f6b8f sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x96611f4c tcp_prot +EXPORT_SYMBOL vmlinux 0x96898769 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x96a2d997 tcp_proc_register +EXPORT_SYMBOL vmlinux 0x96a57a14 pps_event +EXPORT_SYMBOL vmlinux 0x96b34c7a snd_dma_alloc_pages +EXPORT_SYMBOL vmlinux 0x96c968b3 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96d1b3dd tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x96f22a5f tty_pair_get_tty +EXPORT_SYMBOL vmlinux 0x96f6c3f7 ab3100_event_register +EXPORT_SYMBOL vmlinux 0x96fed043 tty_check_change +EXPORT_SYMBOL vmlinux 0x970863de seq_puts +EXPORT_SYMBOL vmlinux 0x97255bdf strlen +EXPORT_SYMBOL vmlinux 0x973596d3 page_symlink +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x976e700f down_trylock +EXPORT_SYMBOL vmlinux 0x97817ceb inode_newsize_ok +EXPORT_SYMBOL vmlinux 0x978bace0 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a60e3d param_get_bool +EXPORT_SYMBOL vmlinux 0x97b4500c __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x97c1e6d9 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0x97c68d92 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x97f098bf filp_open +EXPORT_SYMBOL vmlinux 0x98001a05 from_kgid_munged +EXPORT_SYMBOL vmlinux 0x98082893 __copy_to_user +EXPORT_SYMBOL vmlinux 0x9818deed dma_supported +EXPORT_SYMBOL vmlinux 0x981987b3 netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x9820b644 warn_slowpath_fmt_taint +EXPORT_SYMBOL vmlinux 0x98479b8d seq_escape +EXPORT_SYMBOL vmlinux 0x984821bb pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x984f15f9 vfs_mkdir +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x9884cf51 vc_cons +EXPORT_SYMBOL vmlinux 0x988c7b6c inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x98fa21b0 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x9901bb82 mmc_request_done +EXPORT_SYMBOL vmlinux 0x9931cca4 fsync_bdev +EXPORT_SYMBOL vmlinux 0x994ea5eb d_set_d_op +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x996c4d30 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x997b9702 posix_lock_file_wait +EXPORT_SYMBOL vmlinux 0x997c83c1 qdisc_destroy +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999c3148 __raw_readsb +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99a88129 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x99ac222f blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x99bab69d skb_push +EXPORT_SYMBOL vmlinux 0x99bb8806 memmove +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99dd1426 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x99e65e2f scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x99f58330 lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0x9a12226e release_sock +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a3977e2 max8998_update_reg +EXPORT_SYMBOL vmlinux 0x9a48115d blk_end_request_all +EXPORT_SYMBOL vmlinux 0x9a611fc2 softnet_data +EXPORT_SYMBOL vmlinux 0x9a6e183a __idr_remove_all +EXPORT_SYMBOL vmlinux 0x9a7369a1 swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x9a82d60e security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x9a8318ef v7_coherent_kern_range +EXPORT_SYMBOL vmlinux 0x9a8b1e27 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x9a9aac08 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x9abdcb6a sock_create_kern +EXPORT_SYMBOL vmlinux 0x9af53773 skb_copy_datagram_const_iovec +EXPORT_SYMBOL vmlinux 0x9b03670d generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x9b0bdc50 mutex_unlock +EXPORT_SYMBOL vmlinux 0x9b0cd1ba netpoll_rx_disable +EXPORT_SYMBOL vmlinux 0x9b2aa8ca dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b6d24d8 fifo_set_limit +EXPORT_SYMBOL vmlinux 0x9b6deb4e genphy_update_link +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b984206 mmc_can_erase +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bc53704 napi_get_frags +EXPORT_SYMBOL vmlinux 0x9bd14fbc generic_block_bmap +EXPORT_SYMBOL vmlinux 0x9bd5fc9b blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x9be3202d tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x9be63c1a module_put +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9c01cc70 scsi_ioctl +EXPORT_SYMBOL vmlinux 0x9c0bd51f _raw_spin_lock +EXPORT_SYMBOL vmlinux 0x9c27dc3d gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x9c296eb8 free_buffer_head +EXPORT_SYMBOL vmlinux 0x9c30f0c5 input_set_abs_params +EXPORT_SYMBOL vmlinux 0x9c3737fc __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c541633 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL vmlinux 0x9c5ac2ba snd_device_new +EXPORT_SYMBOL vmlinux 0x9c5e9878 rt6_lookup +EXPORT_SYMBOL vmlinux 0x9c81cb98 tc6393xb_lcd_set_power +EXPORT_SYMBOL vmlinux 0x9c876868 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x9c992406 ftrace_raw_output_prep +EXPORT_SYMBOL vmlinux 0x9c9ec2a0 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9caf47d9 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x9cba3c37 _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x9cc0d007 phy_device_create +EXPORT_SYMBOL vmlinux 0x9cd03cfa jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x9ceb163c memcpy_toiovec +EXPORT_SYMBOL vmlinux 0x9cf317cb udp_ioctl +EXPORT_SYMBOL vmlinux 0x9cf63726 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x9cf82cd8 PDE_DATA +EXPORT_SYMBOL vmlinux 0x9cfd56c5 scsi_print_status +EXPORT_SYMBOL vmlinux 0x9d05f6c4 ktime_get_clocktai +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d12cd42 seq_release +EXPORT_SYMBOL vmlinux 0x9d21f286 ps2_handle_response +EXPORT_SYMBOL vmlinux 0x9d22a3b5 netdev_alert +EXPORT_SYMBOL vmlinux 0x9d36e44b revert_creds +EXPORT_SYMBOL vmlinux 0x9d387e13 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d58349a of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0x9d669763 memcpy +EXPORT_SYMBOL vmlinux 0x9d70646f dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x9d73fb63 ip6_frag_match +EXPORT_SYMBOL vmlinux 0x9d792cc9 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x9d7c93fb simple_transaction_release +EXPORT_SYMBOL vmlinux 0x9d90f95f __crc32c_le_combine +EXPORT_SYMBOL vmlinux 0x9dc37bd3 fsnotify_get_group +EXPORT_SYMBOL vmlinux 0x9dcd96fe sock_wmalloc +EXPORT_SYMBOL vmlinux 0x9dcedbd7 tty_do_resize +EXPORT_SYMBOL vmlinux 0x9deeb874 put_io_context +EXPORT_SYMBOL vmlinux 0x9dfe7307 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e0e8baf of_dev_put +EXPORT_SYMBOL vmlinux 0x9e2000a7 memcpy_toiovecend +EXPORT_SYMBOL vmlinux 0x9e335388 skb_copy +EXPORT_SYMBOL vmlinux 0x9e44b9b7 of_get_next_available_child +EXPORT_SYMBOL vmlinux 0x9e4b3747 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e5734fe qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL vmlinux 0x9e79b904 skb_copy_and_csum_datagram_iovec +EXPORT_SYMBOL vmlinux 0x9e7e26ec snd_pcm_hw_refine +EXPORT_SYMBOL vmlinux 0x9e87855e datagram_poll +EXPORT_SYMBOL vmlinux 0x9e9d662b blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0x9e9f1714 __bitmap_andnot +EXPORT_SYMBOL vmlinux 0x9ea0ad49 __sg_free_table +EXPORT_SYMBOL vmlinux 0x9ea91a52 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ec1e664 __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0x9ec448a0 udp_del_offload +EXPORT_SYMBOL vmlinux 0x9ecc6a7a interruptible_sleep_on +EXPORT_SYMBOL vmlinux 0x9ed2eec7 param_set_ushort +EXPORT_SYMBOL vmlinux 0x9ed685ee iov_iter_advance +EXPORT_SYMBOL vmlinux 0x9edc4310 skb_split +EXPORT_SYMBOL vmlinux 0x9edf763a dev_mc_sync +EXPORT_SYMBOL vmlinux 0x9f21a353 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x9f2bdaac __bitmap_or +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f491e5d ftrace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0x9f7d00f8 generic_file_remap_pages +EXPORT_SYMBOL vmlinux 0x9f967e63 sk_stream_error +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9f9b4499 send_sig +EXPORT_SYMBOL vmlinux 0x9fb3dd30 memcpy_fromiovec +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9febdb8b ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x9ff58f96 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa02ea832 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa052b65f sys_copyarea +EXPORT_SYMBOL vmlinux 0xa05befd6 netpoll_print_options +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa06df9e1 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0xa07c185e snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa0966e4b unregister_shrinker +EXPORT_SYMBOL vmlinux 0xa0993571 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xa0ac947f get_thermal_instance +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0ceef51 out_of_line_wait_on_bit +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 0xa105609e phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa10d71eb dquot_enable +EXPORT_SYMBOL vmlinux 0xa11b0c1b tcf_unregister_action +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa13e126a __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa186e6e3 kernel_getpeername +EXPORT_SYMBOL vmlinux 0xa1997387 unlock_new_inode +EXPORT_SYMBOL vmlinux 0xa19bc628 of_find_device_by_node +EXPORT_SYMBOL vmlinux 0xa1a60824 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0xa1a87024 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1cc5e47 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0xa1cf5f75 tcf_register_action +EXPORT_SYMBOL vmlinux 0xa1d55e90 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xa1d5dba3 unregister_qdisc +EXPORT_SYMBOL vmlinux 0xa1da1604 snd_ctl_make_virtual_master +EXPORT_SYMBOL vmlinux 0xa1f0ebea bit_waitqueue +EXPORT_SYMBOL vmlinux 0xa1fe00df bprm_change_interp +EXPORT_SYMBOL vmlinux 0xa2006dd2 __nla_reserve +EXPORT_SYMBOL vmlinux 0xa2055200 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0xa20ce1b8 net_msg_warn +EXPORT_SYMBOL vmlinux 0xa225d3de xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0xa2398068 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0xa258da97 noop_qdisc +EXPORT_SYMBOL vmlinux 0xa25f9f34 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0xa26657a5 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0xa268b9f8 make_kprojid +EXPORT_SYMBOL vmlinux 0xa2704a96 kill_bdev +EXPORT_SYMBOL vmlinux 0xa27ff2ee ptp_clock_index +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa28a2ace ipmi_set_gets_events +EXPORT_SYMBOL vmlinux 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL vmlinux 0xa2b223c8 snd_pcm_hw_rule_add +EXPORT_SYMBOL vmlinux 0xa2b5c886 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0xa2e282e6 arp_create +EXPORT_SYMBOL vmlinux 0xa2ef34d7 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0xa332464a of_get_cpu_node +EXPORT_SYMBOL vmlinux 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL vmlinux 0xa33a553b elv_add_request +EXPORT_SYMBOL vmlinux 0xa3474565 dev_uc_flush +EXPORT_SYMBOL vmlinux 0xa34a6bd1 ipmi_get_smi_info +EXPORT_SYMBOL vmlinux 0xa34f1ef5 crc32_le +EXPORT_SYMBOL vmlinux 0xa3513188 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0xa35de80f ipv4_config +EXPORT_SYMBOL vmlinux 0xa373b9cc netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0xa381944f dql_reset +EXPORT_SYMBOL vmlinux 0xa3852b42 fail_migrate_page +EXPORT_SYMBOL vmlinux 0xa3cb4209 scsi_init_io +EXPORT_SYMBOL vmlinux 0xa3f35bf5 rwsem_is_locked +EXPORT_SYMBOL vmlinux 0xa3f3eecf locks_init_lock +EXPORT_SYMBOL vmlinux 0xa414882d add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0xa43b1297 vscnprintf +EXPORT_SYMBOL vmlinux 0xa43b3bf1 nobh_write_begin +EXPORT_SYMBOL vmlinux 0xa43b9539 memcpy_fromiovecend +EXPORT_SYMBOL vmlinux 0xa4634721 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa47479c3 locks_remove_posix +EXPORT_SYMBOL vmlinux 0xa487739a sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0xa4f6d9e0 __neigh_create +EXPORT_SYMBOL vmlinux 0xa5017efb generic_ro_fops +EXPORT_SYMBOL vmlinux 0xa50d1a70 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0xa51b4238 dquot_initialize +EXPORT_SYMBOL vmlinux 0xa52d305d sk_net_capable +EXPORT_SYMBOL vmlinux 0xa53a329a i2c_put_adapter +EXPORT_SYMBOL vmlinux 0xa54bdd3a udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0xa54f87ee dm_unregister_target +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa56f20ce blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0xa58fea9d mempool_destroy +EXPORT_SYMBOL vmlinux 0xa5969aaf dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5a3b723 nf_log_register +EXPORT_SYMBOL vmlinux 0xa5a8fb48 proc_symlink +EXPORT_SYMBOL vmlinux 0xa5b150e2 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0xa5b6614d padata_alloc_possible +EXPORT_SYMBOL vmlinux 0xa5d575c1 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0xa5f8c91e mntget +EXPORT_SYMBOL vmlinux 0xa6101869 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0xa617d49b d_make_root +EXPORT_SYMBOL vmlinux 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL vmlinux 0xa6241e03 d_find_alias +EXPORT_SYMBOL vmlinux 0xa63475b3 mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0xa63a2f9b param_get_ulong +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa641a986 snd_info_create_card_entry +EXPORT_SYMBOL vmlinux 0xa64a4cea usb_nop_xceiv_unregister +EXPORT_SYMBOL vmlinux 0xa656b92c set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0xa6702edb alloc_disk +EXPORT_SYMBOL vmlinux 0xa6715115 do_settimeofday +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa683bec9 security_path_symlink +EXPORT_SYMBOL vmlinux 0xa6908eb4 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0xa6970398 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0xa69d3480 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0xa6a1c75b kill_block_super +EXPORT_SYMBOL vmlinux 0xa6bab23d dqstats +EXPORT_SYMBOL vmlinux 0xa6bd6c64 kern_path_create +EXPORT_SYMBOL vmlinux 0xa6bd9566 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0xa6e16781 vfs_getattr +EXPORT_SYMBOL vmlinux 0xa734a3e9 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa73a15de snd_ctl_find_id +EXPORT_SYMBOL vmlinux 0xa73fc98f of_n_addr_cells +EXPORT_SYMBOL vmlinux 0xa7485842 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0xa779a6c5 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0xa77a369d idr_init +EXPORT_SYMBOL vmlinux 0xa783f4c0 sk_run_filter +EXPORT_SYMBOL vmlinux 0xa78de54d ilookup5 +EXPORT_SYMBOL vmlinux 0xa7d6378c inet6_register_protosw +EXPORT_SYMBOL vmlinux 0xa7dc7bc2 __nla_put +EXPORT_SYMBOL vmlinux 0xa7dd5e5e mdiobus_unregister +EXPORT_SYMBOL vmlinux 0xa7fdf843 __bread +EXPORT_SYMBOL vmlinux 0xa808bcb8 vexpress_config_wait +EXPORT_SYMBOL vmlinux 0xa81badbe kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa8474ab4 unregister_key_type +EXPORT_SYMBOL vmlinux 0xa85280a6 generic_read_dir +EXPORT_SYMBOL vmlinux 0xa86dae8b vfs_rmdir +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa8a6f639 __check_region +EXPORT_SYMBOL vmlinux 0xa8a8110c kernel_neon_end +EXPORT_SYMBOL vmlinux 0xa8a83c12 bio_integrity_split +EXPORT_SYMBOL vmlinux 0xa8b90071 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0xa8e61d88 flush_dcache_page +EXPORT_SYMBOL vmlinux 0xa8fc656f __bio_clone +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa90b9a0d pm860x_page_reg_read +EXPORT_SYMBOL vmlinux 0xa911582d tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa91e76f3 xfrm_register_type +EXPORT_SYMBOL vmlinux 0xa923267b ether_setup +EXPORT_SYMBOL vmlinux 0xa97c2aad bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0xa9b09201 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0xa9b632af vfs_setpos +EXPORT_SYMBOL vmlinux 0xa9b63345 of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0xa9d3c279 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0xa9d6d68c icmpv6_send +EXPORT_SYMBOL vmlinux 0xa9d79bb0 tcp_read_sock +EXPORT_SYMBOL vmlinux 0xa9d79d18 dquot_quota_on +EXPORT_SYMBOL vmlinux 0xa9e667f6 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0xa9effda5 __first_cpu +EXPORT_SYMBOL vmlinux 0xaa0b8ad2 i2c_register_driver +EXPORT_SYMBOL vmlinux 0xaa2435d4 dump_emit +EXPORT_SYMBOL vmlinux 0xaa25772d __vlan_find_dev_deep +EXPORT_SYMBOL vmlinux 0xaa4e9ed0 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0xaa50a1e3 sock_no_listen +EXPORT_SYMBOL vmlinux 0xaa52323d simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0xaa58ea61 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0xaa5d7dcc mmc_remove_host +EXPORT_SYMBOL vmlinux 0xaa6901ac __kfifo_out_r +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa718d87 try_to_release_page +EXPORT_SYMBOL vmlinux 0xaa7ce8e3 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0xaa9087c0 param_ops_string +EXPORT_SYMBOL vmlinux 0xaaab5026 ip_fragment +EXPORT_SYMBOL vmlinux 0xaab3178a kernel_write +EXPORT_SYMBOL vmlinux 0xaac0d392 freeze_bdev +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab497b85 abort_creds +EXPORT_SYMBOL vmlinux 0xab600421 probe_irq_off +EXPORT_SYMBOL vmlinux 0xab694444 bsearch +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab71ff94 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab84f32e uart_register_driver +EXPORT_SYMBOL vmlinux 0xab9904dc release_pages +EXPORT_SYMBOL vmlinux 0xabc6dd63 cpufreq_sysfs_create_file +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabd0c91c rtc_time_to_tm +EXPORT_SYMBOL vmlinux 0xac0b501f pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac340866 snd_power_wait +EXPORT_SYMBOL vmlinux 0xac390091 dev_base_lock +EXPORT_SYMBOL vmlinux 0xac3b9a05 udplite_prot +EXPORT_SYMBOL vmlinux 0xac459794 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0xac5991e7 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0xac640e3f ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0xac6697b4 tcp_splice_read +EXPORT_SYMBOL vmlinux 0xac865f1d __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xac8f37b2 outer_cache +EXPORT_SYMBOL vmlinux 0xaca8d3fa inet_ioctl +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd38371 snd_pcm_limit_hw_rates +EXPORT_SYMBOL vmlinux 0xaceeb325 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0xacf40613 netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad077e72 sys_fillrect +EXPORT_SYMBOL vmlinux 0xad0c85ba neigh_seq_next +EXPORT_SYMBOL vmlinux 0xad1cc0a9 kunmap +EXPORT_SYMBOL vmlinux 0xad46dec2 of_count_phandle_with_args +EXPORT_SYMBOL vmlinux 0xad5403eb mmc_cleanup_queue +EXPORT_SYMBOL vmlinux 0xad544a4f lro_flush_all +EXPORT_SYMBOL vmlinux 0xad5d96fe thaw_super +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad907ac0 scsi_register_driver +EXPORT_SYMBOL vmlinux 0xad9b3306 send_sig_info +EXPORT_SYMBOL vmlinux 0xadb9a8ae tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0xade88e76 snd_malloc_pages +EXPORT_SYMBOL vmlinux 0xadf06e60 textsearch_prepare +EXPORT_SYMBOL vmlinux 0xadfdea65 bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0xae30c880 tc_classify +EXPORT_SYMBOL vmlinux 0xae34d339 cdev_del +EXPORT_SYMBOL vmlinux 0xae420441 elevator_alloc +EXPORT_SYMBOL vmlinux 0xae4675e0 pipe_lock +EXPORT_SYMBOL vmlinux 0xae5df669 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0xae5ec2db led_blink_set +EXPORT_SYMBOL vmlinux 0xae632e49 dev_remove_offload +EXPORT_SYMBOL vmlinux 0xae643db1 mount_subtree +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xaeb3f6f5 dev_get_drvdata +EXPORT_SYMBOL vmlinux 0xaec655c7 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0xaeea7895 sk_ns_capable +EXPORT_SYMBOL vmlinux 0xaf05b91b of_device_is_available +EXPORT_SYMBOL vmlinux 0xaf2b347f devfreq_resume_device +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf50e76d elf_set_personality +EXPORT_SYMBOL vmlinux 0xaf570154 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0xaf64ad0d zlib_deflate +EXPORT_SYMBOL vmlinux 0xaf69b4ad inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0xaf8aa518 system_rev +EXPORT_SYMBOL vmlinux 0xaf8b14c0 dquot_quota_off +EXPORT_SYMBOL vmlinux 0xaf91d89f __kernel_param_lock +EXPORT_SYMBOL vmlinux 0xafac6291 simple_release_fs +EXPORT_SYMBOL vmlinux 0xafad493b param_ops_ushort +EXPORT_SYMBOL vmlinux 0xaff6dcde __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0xaffc6a26 neigh_app_ns +EXPORT_SYMBOL vmlinux 0xb00f727f posix_lock_file +EXPORT_SYMBOL vmlinux 0xb04cf0fe lg_local_unlock +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb0600337 snd_timer_notify +EXPORT_SYMBOL vmlinux 0xb06b6a46 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0xb0754edf jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0xb094f6c5 nand_scan_ident +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0ae9c03 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0xb0b145b4 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0xb0b847ac __bitmap_full +EXPORT_SYMBOL vmlinux 0xb0cec9c0 pps_lookup_dev +EXPORT_SYMBOL vmlinux 0xb0d285ae lock_rename +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0ffda2f blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb12e1af5 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0xb1304bfe of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0xb148dcf5 from_kuid_munged +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb19760c3 bitmap_onto +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1d83d3a blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0xb1d9aabd lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0xb1db9e4e param_get_invbool +EXPORT_SYMBOL vmlinux 0xb220a6ef blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0xb2225dd2 skb_copy_expand +EXPORT_SYMBOL vmlinux 0xb2434d75 tcf_hash_release +EXPORT_SYMBOL vmlinux 0xb247e71a __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0xb253d74c iterate_supers_type +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb268cc8d bio_copy_data +EXPORT_SYMBOL vmlinux 0xb28197b7 input_grab_device +EXPORT_SYMBOL vmlinux 0xb2b6e087 dev_get_by_flags_rcu +EXPORT_SYMBOL vmlinux 0xb2b94674 __crc32c_le +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2c2bbc7 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0xb2c30b0d blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0xb2d48a2e queue_work_on +EXPORT_SYMBOL vmlinux 0xb2d4b1a8 arm_dma_zone_size +EXPORT_SYMBOL vmlinux 0xb2d8d2e3 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL vmlinux 0xb2ee3b54 blk_run_queue +EXPORT_SYMBOL vmlinux 0xb32530eb nand_scan_tail +EXPORT_SYMBOL vmlinux 0xb33fbb6d dquot_get_dqinfo +EXPORT_SYMBOL vmlinux 0xb35678e5 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0xb3757cc5 md_finish_reshape +EXPORT_SYMBOL vmlinux 0xb382ca88 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0xb38dba3a i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0xb39b875b serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0xb3a4f838 arp_tbl +EXPORT_SYMBOL vmlinux 0xb3af7bf4 nf_reinject +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb425499a kernel_setsockopt +EXPORT_SYMBOL vmlinux 0xb431082a jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0xb437bf84 da903x_query_status +EXPORT_SYMBOL vmlinux 0xb4511d73 dev_addr_init +EXPORT_SYMBOL vmlinux 0xb45e3623 kthread_bind +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb4889d5a fb_set_var +EXPORT_SYMBOL vmlinux 0xb4b6e946 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL vmlinux 0xb50c3872 tcp_ioctl +EXPORT_SYMBOL vmlinux 0xb50f2425 security_path_rename +EXPORT_SYMBOL vmlinux 0xb5198b77 _raw_read_lock +EXPORT_SYMBOL vmlinux 0xb51d7c61 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0xb526a24b mmc_start_bkops +EXPORT_SYMBOL vmlinux 0xb538aad9 d_validate +EXPORT_SYMBOL vmlinux 0xb54533f7 usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xb554f431 mutex_trylock +EXPORT_SYMBOL vmlinux 0xb56def80 xfrm_input +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb59f9424 proc_create_data +EXPORT_SYMBOL vmlinux 0xb5a442df __dst_free +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5c00014 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5cd1691 vexpress_config_complete +EXPORT_SYMBOL vmlinux 0xb5d9454c printk_emit +EXPORT_SYMBOL vmlinux 0xb5f36e97 from_kuid +EXPORT_SYMBOL vmlinux 0xb6016bb5 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0xb60b322f blk_stop_queue +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb62eddd0 dev_warn +EXPORT_SYMBOL vmlinux 0xb6394d4b param_set_bint +EXPORT_SYMBOL vmlinux 0xb64ec94a audit_log +EXPORT_SYMBOL vmlinux 0xb64fcdf6 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0xb661770d dm_put_device +EXPORT_SYMBOL vmlinux 0xb674540e security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb67a57cb cpu_user +EXPORT_SYMBOL vmlinux 0xb680a85d scsi_device_put +EXPORT_SYMBOL vmlinux 0xb6822a33 radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xb6896671 crc_t10dif +EXPORT_SYMBOL vmlinux 0xb69238a7 search_binary_handler +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6b46a7c param_ops_int +EXPORT_SYMBOL vmlinux 0xb6c5a973 scsi_show_result +EXPORT_SYMBOL vmlinux 0xb6d409cc blk_put_queue +EXPORT_SYMBOL vmlinux 0xb6ef1680 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0xb707a75b dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0xb714978b cap_mmap_file +EXPORT_SYMBOL vmlinux 0xb71d6511 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0xb7204a30 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0xb725069c inet_confirm_addr +EXPORT_SYMBOL vmlinux 0xb72dd854 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0xb730a26c bio_clone_bioset +EXPORT_SYMBOL vmlinux 0xb73d42aa udp_poll +EXPORT_SYMBOL vmlinux 0xb75b4847 __breadahead +EXPORT_SYMBOL vmlinux 0xb76af768 inet_select_addr +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb77b1cf0 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0xb77d47c6 ata_port_printk +EXPORT_SYMBOL vmlinux 0xb78c392b backlight_device_register +EXPORT_SYMBOL vmlinux 0xb790f6b8 kernel_bind +EXPORT_SYMBOL vmlinux 0xb79311ba __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xb7a2319b dev_change_carrier +EXPORT_SYMBOL vmlinux 0xb7b61546 crc32_be +EXPORT_SYMBOL vmlinux 0xb7ba76c7 __aeabi_unwind_cpp_pr2 +EXPORT_SYMBOL vmlinux 0xb7bbf36e ata_std_end_eh +EXPORT_SYMBOL vmlinux 0xb7c6db70 sysctl_max_skb_frags +EXPORT_SYMBOL vmlinux 0xb8085837 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0xb81960ca snprintf +EXPORT_SYMBOL vmlinux 0xb835b3e4 radix_tree_prev_hole +EXPORT_SYMBOL vmlinux 0xb83b6aab ip_getsockopt +EXPORT_SYMBOL vmlinux 0xb84cf8e6 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0xb85286e4 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xb8701773 udp_seq_open +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb87c46f8 sock_sendmsg +EXPORT_SYMBOL vmlinux 0xb8d73e97 param_set_uint +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb904fdc4 find_vma +EXPORT_SYMBOL vmlinux 0xb92de0d5 snd_info_register +EXPORT_SYMBOL vmlinux 0xb940072c snd_seq_root +EXPORT_SYMBOL vmlinux 0xb95f98d6 _memset_io +EXPORT_SYMBOL vmlinux 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL vmlinux 0xb98a0185 rtc_tm_to_time +EXPORT_SYMBOL vmlinux 0xb9a90eb7 arm_dma_ops +EXPORT_SYMBOL vmlinux 0xb9acd3d9 __put_user_2 +EXPORT_SYMBOL vmlinux 0xb9c86895 security_inode_readlink +EXPORT_SYMBOL vmlinux 0xb9d65a7f block_write_full_page_endio +EXPORT_SYMBOL vmlinux 0xb9e4c72b set_anon_super +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9f7fa58 snd_pcm_new_stream +EXPORT_SYMBOL vmlinux 0xba2016c1 sync_blockdev +EXPORT_SYMBOL vmlinux 0xba2f9e1f delete_from_page_cache +EXPORT_SYMBOL vmlinux 0xba40ed32 padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba548087 __kfree_skb +EXPORT_SYMBOL vmlinux 0xbaad1b1a snd_ctl_rename_id +EXPORT_SYMBOL vmlinux 0xbab15d64 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0xbab98d69 ptp_clock_register +EXPORT_SYMBOL vmlinux 0xbac0b7ab __sk_dst_check +EXPORT_SYMBOL vmlinux 0xbad9e986 mpage_readpages +EXPORT_SYMBOL vmlinux 0xbb14b357 file_ns_capable +EXPORT_SYMBOL vmlinux 0xbb189cad disallow_signal +EXPORT_SYMBOL vmlinux 0xbb1eef14 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0xbb3959a6 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0xbb4ef8c3 fb_validate_mode +EXPORT_SYMBOL vmlinux 0xbb585837 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb6f17fc snd_pcm_lib_readv +EXPORT_SYMBOL vmlinux 0xbb713e6d sk_filter_release_rcu +EXPORT_SYMBOL vmlinux 0xbb72d4fe __put_user_1 +EXPORT_SYMBOL vmlinux 0xbb73ab8b gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0xbb7ca39f __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0xbb86e226 kill_fasync +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbbab9b99 i2c_master_send +EXPORT_SYMBOL vmlinux 0xbbc59483 arp_find +EXPORT_SYMBOL vmlinux 0xbbc5a3ac padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0xbbe5ce86 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0xbc0aac36 set_disk_ro +EXPORT_SYMBOL vmlinux 0xbc10dd97 __put_user_4 +EXPORT_SYMBOL vmlinux 0xbc2638ea __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0xbc3d5aaf gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0xbc6c503b bitmap_unplug +EXPORT_SYMBOL vmlinux 0xbc751307 __seq_open_private +EXPORT_SYMBOL vmlinux 0xbc92e120 keyring_alloc +EXPORT_SYMBOL vmlinux 0xbc9e2aa2 alloc_mdio_bitbang +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcdcdcfa textsearch_unregister +EXPORT_SYMBOL vmlinux 0xbcdedba7 of_get_mac_address +EXPORT_SYMBOL vmlinux 0xbce8a632 tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0xbd01965a snd_dma_alloc_pages_fallback +EXPORT_SYMBOL vmlinux 0xbd1de022 sock_no_connect +EXPORT_SYMBOL vmlinux 0xbd55bd9d skb_kill_datagram +EXPORT_SYMBOL vmlinux 0xbd5bab11 snd_ctl_unregister_ioctl +EXPORT_SYMBOL vmlinux 0xbd96c85a vexpress_config_write +EXPORT_SYMBOL vmlinux 0xbdab9e7a alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0xbdac1eb7 lockref_get +EXPORT_SYMBOL vmlinux 0xbdba9828 hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xbdedb6b2 irq_stat +EXPORT_SYMBOL vmlinux 0xbdf2580d __raw_readsl +EXPORT_SYMBOL vmlinux 0xbe0e5118 nla_memcmp +EXPORT_SYMBOL vmlinux 0xbe2c0274 add_timer +EXPORT_SYMBOL vmlinux 0xbe376639 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0xbe44c9ed phy_scan_fixups +EXPORT_SYMBOL vmlinux 0xbe80919b pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xbe9385b8 bdev_read_only +EXPORT_SYMBOL vmlinux 0xbec25473 of_parse_phandle +EXPORT_SYMBOL vmlinux 0xbeda80eb pps_register_source +EXPORT_SYMBOL vmlinux 0xbee15209 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbee9a63f security_mmap_file +EXPORT_SYMBOL vmlinux 0xbeea846c lookup_bdev +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf062cdc scsi_device_set_state +EXPORT_SYMBOL vmlinux 0xbf1a51b3 devm_free_irq +EXPORT_SYMBOL vmlinux 0xbf278862 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0xbf2ee956 sock_setsockopt +EXPORT_SYMBOL vmlinux 0xbf3d54a8 phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0xbf466e72 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0xbf5d2b50 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0xbf618a40 ndo_dflt_bridge_getlink +EXPORT_SYMBOL vmlinux 0xbf68507e jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf97cdee blk_sync_queue +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfd088a5 tcf_action_exec +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xc0056be5 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0xc012b452 buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0xc0222dd3 submit_bh +EXPORT_SYMBOL vmlinux 0xc024b0be sock_update_classid +EXPORT_SYMBOL vmlinux 0xc0295ec6 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0xc02cf69b clkdev_drop +EXPORT_SYMBOL vmlinux 0xc030320a set_user_nice +EXPORT_SYMBOL vmlinux 0xc05e6957 bmap +EXPORT_SYMBOL vmlinux 0xc068440e __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xc074f1f2 simple_dir_operations +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc07dcb78 of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc09569c0 may_umount +EXPORT_SYMBOL vmlinux 0xc09e6e27 end_page_writeback +EXPORT_SYMBOL vmlinux 0xc0a98385 profile_pc +EXPORT_SYMBOL vmlinux 0xc0b436b1 __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0xc0bbf42f __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0xc0e561df xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xc0fb3b1d cookie_check_timestamp +EXPORT_SYMBOL vmlinux 0xc0fed801 request_firmware +EXPORT_SYMBOL vmlinux 0xc10389bf __skb_gso_segment +EXPORT_SYMBOL vmlinux 0xc1118f74 __blk_end_request +EXPORT_SYMBOL vmlinux 0xc11bf6d1 dquot_release +EXPORT_SYMBOL vmlinux 0xc12c6caa ip_cmsg_recv +EXPORT_SYMBOL vmlinux 0xc12ec3a6 dns_query +EXPORT_SYMBOL vmlinux 0xc146ee30 inode_init_always +EXPORT_SYMBOL vmlinux 0xc180e501 tcp_make_synack +EXPORT_SYMBOL vmlinux 0xc181cffe tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0xc196bf37 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0xc1996d9d freeze_super +EXPORT_SYMBOL vmlinux 0xc19c77e8 blkdev_fsync +EXPORT_SYMBOL vmlinux 0xc1a10e3d netdev_warn +EXPORT_SYMBOL vmlinux 0xc1a3bf72 max8925_reg_read +EXPORT_SYMBOL vmlinux 0xc1a549f0 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0xc1ad6e72 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0xc1b82d22 register_shrinker +EXPORT_SYMBOL vmlinux 0xc1c2dd09 __hw_addr_flush +EXPORT_SYMBOL vmlinux 0xc1ca9f85 sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0xc1d550b4 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0xc1df5e4c bdget +EXPORT_SYMBOL vmlinux 0xc1f50d26 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0xc2165d85 __arm_iounmap +EXPORT_SYMBOL vmlinux 0xc233a943 clk_add_alias +EXPORT_SYMBOL vmlinux 0xc2464085 amba_driver_unregister +EXPORT_SYMBOL vmlinux 0xc24e7708 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0xc256e762 __bitmap_equal +EXPORT_SYMBOL vmlinux 0xc26b98cc call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0xc2731382 xfrm_register_mode +EXPORT_SYMBOL vmlinux 0xc27a7b83 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0xc27caf9b inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0xc2988a1e snd_add_device_sysfs_file +EXPORT_SYMBOL vmlinux 0xc29d378b dma_async_device_register +EXPORT_SYMBOL vmlinux 0xc2a3f0ab complete_request_key +EXPORT_SYMBOL vmlinux 0xc2a7f590 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0xc2c0edb4 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL vmlinux 0xc2ca2ba4 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0xc2cc4e91 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0xc2d711e1 krealloc +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc320849d km_new_mapping +EXPORT_SYMBOL vmlinux 0xc32b2b37 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0xc3351d28 unlock_rename +EXPORT_SYMBOL vmlinux 0xc3532c2b deactivate_locked_super +EXPORT_SYMBOL vmlinux 0xc357fb60 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0xc359fb65 abort +EXPORT_SYMBOL vmlinux 0xc35e1555 seq_lseek +EXPORT_SYMBOL vmlinux 0xc366bfd3 md_unregister_thread +EXPORT_SYMBOL vmlinux 0xc379638c inet6_bind +EXPORT_SYMBOL vmlinux 0xc37fe2bf dm_get_device +EXPORT_SYMBOL vmlinux 0xc39b1e70 skb_tx_error +EXPORT_SYMBOL vmlinux 0xc41f0516 node_states +EXPORT_SYMBOL vmlinux 0xc4516527 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0xc45225cf ppp_unit_number +EXPORT_SYMBOL vmlinux 0xc45b19bc sb_min_blocksize +EXPORT_SYMBOL vmlinux 0xc46fc95b snd_dma_reserve_buf +EXPORT_SYMBOL vmlinux 0xc4753091 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0xc475e6d3 simple_rename +EXPORT_SYMBOL vmlinux 0xc478c0da key_revoke +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc4a107de scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0xc4a18927 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0xc4a26c26 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xc4a3b0d8 f_setown +EXPORT_SYMBOL vmlinux 0xc4b3847c read_code +EXPORT_SYMBOL vmlinux 0xc4bf7bd8 snd_timer_new +EXPORT_SYMBOL vmlinux 0xc4cd99bc posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0xc4f0c58f udp_disconnect +EXPORT_SYMBOL vmlinux 0xc50268f6 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xc523c6d0 netdev_notify_peers +EXPORT_SYMBOL vmlinux 0xc54fc8e9 filemap_flush +EXPORT_SYMBOL vmlinux 0xc56db0a1 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0xc58178ef register_framebuffer +EXPORT_SYMBOL vmlinux 0xc5899ea2 scsi_device_get +EXPORT_SYMBOL vmlinux 0xc589e044 param_set_long +EXPORT_SYMBOL vmlinux 0xc593339d set_bh_page +EXPORT_SYMBOL vmlinux 0xc5a023ae dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0xc5cea4b5 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0xc5ee2723 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0xc5f17484 dev_set_drvdata +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc60666a8 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0xc611141a scsi_unregister +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc6364e33 dev_crit +EXPORT_SYMBOL vmlinux 0xc640af8d ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0xc6465520 netif_napi_add +EXPORT_SYMBOL vmlinux 0xc64d43ba seq_vprintf +EXPORT_SYMBOL vmlinux 0xc6570c8c md_write_end +EXPORT_SYMBOL vmlinux 0xc665d6d7 of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0xc681fb77 mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0xc6888c2c snd_timer_start +EXPORT_SYMBOL vmlinux 0xc697bf62 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6de57ea crypto_sha256_update +EXPORT_SYMBOL vmlinux 0xc6fdd446 uart_resume_port +EXPORT_SYMBOL vmlinux 0xc6feefa5 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0xc7161066 save_mount_options +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc725555b of_get_min_tck +EXPORT_SYMBOL vmlinux 0xc76f72e3 ps2_command +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc78acfa9 scsi_add_device +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7aa019b genl_unregister_family +EXPORT_SYMBOL vmlinux 0xc7bcbc8d add_wait_queue +EXPORT_SYMBOL vmlinux 0xc7c44f3e __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0xc7d10b51 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0xc7e19463 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc7f5618a skb_put +EXPORT_SYMBOL vmlinux 0xc820b78f md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0xc8276a79 nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xc8339e24 string_unescape +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc846187e scsi_register +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc84bf04a task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0xc8526d9a input_allocate_device +EXPORT_SYMBOL vmlinux 0xc869a8a1 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0xc86bf564 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc8910c66 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc8b18b57 dev_addr_del_multiple +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8ce3083 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0xc8f157e9 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0xc91d4a39 netdev_printk +EXPORT_SYMBOL vmlinux 0xc93fb260 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0xc9402d7d neigh_event_ns +EXPORT_SYMBOL vmlinux 0xc95838f6 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc967a093 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0xc96c921d netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0xc986b1d3 netlink_set_err +EXPORT_SYMBOL vmlinux 0xc98e6d12 audit_log_task_info +EXPORT_SYMBOL vmlinux 0xc996d097 del_timer +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9bb86b4 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0xc9bbb713 vexpress_config_bridge_register +EXPORT_SYMBOL vmlinux 0xc9e8ce24 snd_ctl_add +EXPORT_SYMBOL vmlinux 0xc9f537ec neigh_direct_output +EXPORT_SYMBOL vmlinux 0xca1cbf1d mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0xca397658 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0xca51486e blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0xca5dbc50 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xca82e3a9 mmc_start_req +EXPORT_SYMBOL vmlinux 0xca8cb7dc sock_kmalloc +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xca95fecb devm_ioremap +EXPORT_SYMBOL vmlinux 0xca9c2da2 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0xcad24177 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xcad3475a inode_init_once +EXPORT_SYMBOL vmlinux 0xcaf258af dst_discard +EXPORT_SYMBOL vmlinux 0xcafa21e8 phy_register_fixup +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb0c5d50 param_get_uint +EXPORT_SYMBOL vmlinux 0xcb1c7110 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0xcb227cbf phy_device_free +EXPORT_SYMBOL vmlinux 0xcb436dd0 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0xcb44d131 release_firmware +EXPORT_SYMBOL vmlinux 0xcb466063 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xcb50e021 simple_getattr +EXPORT_SYMBOL vmlinux 0xcb5b0166 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0xcb70c66b scsi_cmd_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xcb86bec8 create_empty_buffers +EXPORT_SYMBOL vmlinux 0xcb9fbb3a blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0xcbb0d9b3 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0xcbb90da3 tcp_seq_open +EXPORT_SYMBOL vmlinux 0xcbbb14cf pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbf41a23 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0xcc200302 ___pskb_trim +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc37f55c blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xcc4871b0 secpath_dup +EXPORT_SYMBOL vmlinux 0xcc4b84da of_find_node_by_type +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc61fdba tty_port_close +EXPORT_SYMBOL vmlinux 0xcc7fa952 local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0xcc85d850 dev_get_stats +EXPORT_SYMBOL vmlinux 0xcc974926 __nlmsg_put +EXPORT_SYMBOL vmlinux 0xcc9fdd0c dev_uc_sync +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccd08070 udp6_csum_init +EXPORT_SYMBOL vmlinux 0xccd5ef95 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0xccfb9f6f submit_bio +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd30b95a tmio_core_mmc_clk_div +EXPORT_SYMBOL vmlinux 0xcd4b4b25 tty_port_close_end +EXPORT_SYMBOL vmlinux 0xcd4c77c1 key_validate +EXPORT_SYMBOL vmlinux 0xcd63c845 __aeabi_lasr +EXPORT_SYMBOL vmlinux 0xcd6601dd pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0xcd67c57d input_set_keycode +EXPORT_SYMBOL vmlinux 0xcd68e2b1 would_dump +EXPORT_SYMBOL vmlinux 0xcd90f207 dev_change_flags +EXPORT_SYMBOL vmlinux 0xcdbf149a phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0xcdc0a2c7 max8998_read_reg +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdc6f860 devfreq_interval_update +EXPORT_SYMBOL vmlinux 0xcde172ac radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0xce0e7baa nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce363fde get_gendisk +EXPORT_SYMBOL vmlinux 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL vmlinux 0xce3e7b4a i2c_use_client +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce622d32 __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0xce852ae4 get_super +EXPORT_SYMBOL vmlinux 0xce871620 eth_mac_addr +EXPORT_SYMBOL vmlinux 0xce9d802a nf_getsockopt +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceb9399f max8925_reg_write +EXPORT_SYMBOL vmlinux 0xcec8b53d nf_ip_checksum +EXPORT_SYMBOL vmlinux 0xcec8d761 unregister_console +EXPORT_SYMBOL vmlinux 0xced41dd6 snd_pcm_link_rwlock +EXPORT_SYMBOL vmlinux 0xcee141b0 check_disk_size_change +EXPORT_SYMBOL vmlinux 0xcee17299 blk_fetch_request +EXPORT_SYMBOL vmlinux 0xceed7f85 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcef7a8d3 netif_carrier_off +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf17601a padata_start +EXPORT_SYMBOL vmlinux 0xcf1af57c input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0xcf220115 blk_make_request +EXPORT_SYMBOL vmlinux 0xcf6cbc3a jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0xcf78bec2 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0xcf88625f mempool_create_node +EXPORT_SYMBOL vmlinux 0xcf9916e5 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0xcfcec0b7 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0xcfe3e1b5 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0xcff0c9d2 dma_release_declared_memory +EXPORT_SYMBOL vmlinux 0xcff6b676 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0xd00cb81f unload_nls +EXPORT_SYMBOL vmlinux 0xd0181f4f __bitmap_xor +EXPORT_SYMBOL vmlinux 0xd01c9aa7 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0xd01ddcb4 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0xd01e03b3 dput +EXPORT_SYMBOL vmlinux 0xd01e5eac input_register_handler +EXPORT_SYMBOL vmlinux 0xd043feaa splice_from_pipe_next +EXPORT_SYMBOL vmlinux 0xd0495074 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0xd06568a7 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0xd069aedd sk_stream_write_space +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd09cf352 cdrom_release +EXPORT_SYMBOL vmlinux 0xd0a280cb sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0b2aad4 put_page +EXPORT_SYMBOL vmlinux 0xd0b6fb72 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0xd0be5559 __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xd0ca6bdb mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0xd0d42c42 mod_timer_pending +EXPORT_SYMBOL vmlinux 0xd0e43207 usb_nop_xceiv_register +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 0xd11c0dc1 __kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xd11e472f __skb_dst_set_noref +EXPORT_SYMBOL vmlinux 0xd1393b6b sock_wake_async +EXPORT_SYMBOL vmlinux 0xd14aaf07 brioctl_set +EXPORT_SYMBOL vmlinux 0xd14fb554 dquot_commit_info +EXPORT_SYMBOL vmlinux 0xd17688f4 snd_pcm_stop +EXPORT_SYMBOL vmlinux 0xd17e400d xfrm6_rcv +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd196c9be kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xd1ab6380 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0xd1b1f03b simple_map_init +EXPORT_SYMBOL vmlinux 0xd1b3fa87 sock_release +EXPORT_SYMBOL vmlinux 0xd1b68eba __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xd1cdefe1 splice_from_pipe_feed +EXPORT_SYMBOL vmlinux 0xd215a289 tty_kref_put +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd22ddfc9 snd_pcm_kernel_ioctl +EXPORT_SYMBOL vmlinux 0xd234e1f6 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0xd249c6d3 padata_free +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd2593c7c __insert_inode_hash +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd2673616 phy_detach +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd28fa5ee con_set_default_unimap +EXPORT_SYMBOL vmlinux 0xd29f5b99 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0xd2a1f4fa key_invalidate +EXPORT_SYMBOL vmlinux 0xd2a747b1 netlink_net_capable +EXPORT_SYMBOL vmlinux 0xd2af138b reservation_ww_class +EXPORT_SYMBOL vmlinux 0xd2be8bfe __register_binfmt +EXPORT_SYMBOL vmlinux 0xd2c99e80 km_policy_notify +EXPORT_SYMBOL vmlinux 0xd2cb57e3 snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL vmlinux 0xd2cc82fd vfs_path_lookup +EXPORT_SYMBOL vmlinux 0xd2d63b77 revalidate_disk +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd326fe8d setup_arg_pages +EXPORT_SYMBOL vmlinux 0xd3375a2f dev_uc_del +EXPORT_SYMBOL vmlinux 0xd36481ba request_key +EXPORT_SYMBOL vmlinux 0xd36f1457 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0xd397156d of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0xd3a06344 tcp_sendpage +EXPORT_SYMBOL vmlinux 0xd3aaacd0 flush_kernel_dcache_page +EXPORT_SYMBOL vmlinux 0xd3dbfbc4 _find_first_zero_bit_le +EXPORT_SYMBOL vmlinux 0xd3dcab0b flex_array_alloc +EXPORT_SYMBOL vmlinux 0xd3e6f60d cpu_possible_mask +EXPORT_SYMBOL vmlinux 0xd4021871 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0xd41ac208 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0xd4226542 vfs_mknod +EXPORT_SYMBOL vmlinux 0xd448d663 neigh_for_each +EXPORT_SYMBOL vmlinux 0xd45a690c inet_recvmsg +EXPORT_SYMBOL vmlinux 0xd45f9357 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0xd4651d3f blk_queue_make_request +EXPORT_SYMBOL vmlinux 0xd4669fad complete +EXPORT_SYMBOL vmlinux 0xd466d05e scsi_allocate_command +EXPORT_SYMBOL vmlinux 0xd46bce07 nf_log_set +EXPORT_SYMBOL vmlinux 0xd475607b get_phy_device +EXPORT_SYMBOL vmlinux 0xd49620bb iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0xd4d427e9 kthread_stop +EXPORT_SYMBOL vmlinux 0xd52afe59 tty_lock +EXPORT_SYMBOL vmlinux 0xd539faaf kmap_high +EXPORT_SYMBOL vmlinux 0xd5410e04 ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0xd569c943 dquot_file_open +EXPORT_SYMBOL vmlinux 0xd5753a23 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0xd57d4b80 blk_mq_run_queues +EXPORT_SYMBOL vmlinux 0xd59d1df0 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0xd5b68404 d_obtain_alias +EXPORT_SYMBOL vmlinux 0xd5c5ff75 inet_frags_init_net +EXPORT_SYMBOL vmlinux 0xd5ef54f5 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0xd5f2172f del_timer_sync +EXPORT_SYMBOL vmlinux 0xd5fe01f8 uart_remove_one_port +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 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd670b97e bdi_destroy +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd68fcb56 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0xd6b046c7 scsi_remove_device +EXPORT_SYMBOL vmlinux 0xd6b4d1da __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0xd6b5496f cpu_tlb +EXPORT_SYMBOL vmlinux 0xd6c4c415 user_path_at +EXPORT_SYMBOL vmlinux 0xd6c86080 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0xd6ddf10b set_create_files_as +EXPORT_SYMBOL vmlinux 0xd6e25e56 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6fbb2ca inet6_ioctl +EXPORT_SYMBOL vmlinux 0xd71025d5 migrate_page +EXPORT_SYMBOL vmlinux 0xd7110014 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0xd7110205 max8998_write_reg +EXPORT_SYMBOL vmlinux 0xd7203f05 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0xd72e6cfb devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0xd72fb4c6 generic_file_aio_write +EXPORT_SYMBOL vmlinux 0xd7321c6a gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0xd74289f9 __percpu_counter_add +EXPORT_SYMBOL vmlinux 0xd75c3e7b udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd75db372 devm_gpio_request +EXPORT_SYMBOL vmlinux 0xd77a5aa5 __bitmap_and +EXPORT_SYMBOL vmlinux 0xd78025ae gen_pool_create +EXPORT_SYMBOL vmlinux 0xd786ffbb inode_init_owner +EXPORT_SYMBOL vmlinux 0xd78d2729 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL vmlinux 0xd79b5a02 allow_signal +EXPORT_SYMBOL vmlinux 0xd7a31b6c mount_pseudo +EXPORT_SYMBOL vmlinux 0xd7a7830a ipmi_smi_watcher_register +EXPORT_SYMBOL vmlinux 0xd7ae2361 vexpress_config_bridge_unregister +EXPORT_SYMBOL vmlinux 0xd7b4599b __idr_get_new_above +EXPORT_SYMBOL vmlinux 0xd7c1ca67 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd7eb34a8 phy_find_first +EXPORT_SYMBOL vmlinux 0xd7f0c565 fb_pan_display +EXPORT_SYMBOL vmlinux 0xd82cc0da kfree_skb_list +EXPORT_SYMBOL vmlinux 0xd850b3ff mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0xd8525abe disk_stack_limits +EXPORT_SYMBOL vmlinux 0xd85833cb __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0xd85cd67e __wake_up +EXPORT_SYMBOL vmlinux 0xd85fa7ed inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0xd8662a86 icmp_send +EXPORT_SYMBOL vmlinux 0xd883878a sk_capable +EXPORT_SYMBOL vmlinux 0xd8b280bd scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xd8b9c43c __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0xd8c72cf0 ifla_policy +EXPORT_SYMBOL vmlinux 0xd8d50c8f scsi_mode_sense +EXPORT_SYMBOL vmlinux 0xd8d91ca3 tcp_close +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd91243c4 devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0xd92afabe bitmap_clear +EXPORT_SYMBOL vmlinux 0xd92dd9c0 netif_device_detach +EXPORT_SYMBOL vmlinux 0xd95c5ed7 snd_device_register +EXPORT_SYMBOL vmlinux 0xd96b1478 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0xd97edd47 neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd98d65d4 poll_freewait +EXPORT_SYMBOL vmlinux 0xd998c4cc jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0xd9a9bb30 getname +EXPORT_SYMBOL vmlinux 0xd9ce8f0c strnlen +EXPORT_SYMBOL vmlinux 0xd9dda66a tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0xd9e20ae0 key_put +EXPORT_SYMBOL vmlinux 0xd9e48eb9 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0xd9f0c656 blk_mq_init_commands +EXPORT_SYMBOL vmlinux 0xd9fb1ec3 fb_class +EXPORT_SYMBOL vmlinux 0xda14b7e7 blkdev_put +EXPORT_SYMBOL vmlinux 0xda2478d0 param_ops_short +EXPORT_SYMBOL vmlinux 0xda35d96d inet_addr_type +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda40c2e0 qdisc_reset +EXPORT_SYMBOL vmlinux 0xda4e08cf blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0xda551138 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0xda729508 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda945a92 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0xdaa16b82 of_clk_get +EXPORT_SYMBOL vmlinux 0xdaa57ec3 totalhigh_pages +EXPORT_SYMBOL vmlinux 0xdaafc807 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0xdadc81a2 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0xdaf050ae km_state_notify +EXPORT_SYMBOL vmlinux 0xdb27433d scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0xdb3a44c1 lease_modify +EXPORT_SYMBOL vmlinux 0xdb64ee25 invalidate_bdev +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb7239ef __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdbad17da sk_alloc +EXPORT_SYMBOL vmlinux 0xdbcd416e sysctl_ip_nonlocal_bind +EXPORT_SYMBOL vmlinux 0xdbd5b5eb invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0xdbd84d74 kobject_put +EXPORT_SYMBOL vmlinux 0xdbee1ecd i2c_del_driver +EXPORT_SYMBOL vmlinux 0xdbfedfa3 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc064cff capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0xdc2a1d68 ipmi_smi_watcher_unregister +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc578774 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0xdc904683 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0xdc956c24 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0xdca0e99f max8925_set_bits +EXPORT_SYMBOL vmlinux 0xdccf9730 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0xdce77a2b mmc_flush_cache +EXPORT_SYMBOL vmlinux 0xdd04e5c0 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd19ecdb path_nosuid +EXPORT_SYMBOL vmlinux 0xdd1f97de jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0xdd23455e dump_align +EXPORT_SYMBOL vmlinux 0xdd27fa87 memchr +EXPORT_SYMBOL vmlinux 0xdd2abd82 gen10g_suspend +EXPORT_SYMBOL vmlinux 0xdd33e3f4 dev_mc_flush +EXPORT_SYMBOL vmlinux 0xdd36361f dma_alloc_from_coherent +EXPORT_SYMBOL vmlinux 0xdd3916ac _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xdd488808 nand_scan_bbt +EXPORT_SYMBOL vmlinux 0xdd48bf25 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0xdd605ee4 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0xdd723b0c inet_del_protocol +EXPORT_SYMBOL vmlinux 0xdd8e0ad6 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0xdd8edec1 file_remove_suid +EXPORT_SYMBOL vmlinux 0xdda06ff3 __brelse +EXPORT_SYMBOL vmlinux 0xddb24c12 iunique +EXPORT_SYMBOL vmlinux 0xdde27037 register_quota_format +EXPORT_SYMBOL vmlinux 0xddf3af0e mark_info_dirty +EXPORT_SYMBOL vmlinux 0xde0d11de kobject_add +EXPORT_SYMBOL vmlinux 0xde10eb10 param_set_invbool +EXPORT_SYMBOL vmlinux 0xde167600 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0xde231353 snd_ctl_find_numid +EXPORT_SYMBOL vmlinux 0xde25119d kset_register +EXPORT_SYMBOL vmlinux 0xde413228 mmc_can_discard +EXPORT_SYMBOL vmlinux 0xde55198a posix_test_lock +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9c523e twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0xdea4441e unlink_framebuffer +EXPORT_SYMBOL vmlinux 0xdec14317 inet_frag_evictor +EXPORT_SYMBOL vmlinux 0xdedc84ca page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xdf078a66 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xdf28d95f register_filesystem +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf2c42b2 __netif_schedule +EXPORT_SYMBOL vmlinux 0xdf2dafca phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0xdf401846 idr_remove +EXPORT_SYMBOL vmlinux 0xdf48a0eb flex_array_put +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf5a0193 nand_bch_init +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf74629f scsi_block_requests +EXPORT_SYMBOL vmlinux 0xdf7a3ada sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf9f6a67 d_path +EXPORT_SYMBOL vmlinux 0xdfb01a80 cpu_v7_dcache_clean_area +EXPORT_SYMBOL vmlinux 0xdfbb5dc7 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfd399d1 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0xe030b094 tty_devnum +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe0680d75 __blk_run_queue +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe08e32b4 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0xe09725c9 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0bef318 icst_hz_to_vco +EXPORT_SYMBOL vmlinux 0xe0c36849 blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0xe0e89965 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0xe0f99a2f ida_pre_get +EXPORT_SYMBOL vmlinux 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe11596b5 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0xe127fb18 down_killable +EXPORT_SYMBOL vmlinux 0xe145bf55 security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe1929de5 dev_open +EXPORT_SYMBOL vmlinux 0xe19b402f inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0xe19eb361 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xe1a4d51a mmc_detect_change +EXPORT_SYMBOL vmlinux 0xe1b16f9c do_splice_to +EXPORT_SYMBOL vmlinux 0xe1bc6ae6 register_netdev +EXPORT_SYMBOL vmlinux 0xe1c2f9bc seq_pad +EXPORT_SYMBOL vmlinux 0xe1cef5ec get_task_io_context +EXPORT_SYMBOL vmlinux 0xe1ea5b47 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0xe1f0ab3a _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xe1f41b99 blk_get_request +EXPORT_SYMBOL vmlinux 0xe1fb8b48 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe2074e06 ppp_channel_index +EXPORT_SYMBOL vmlinux 0xe2333ca3 get_super_thawed +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe250937f inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xe25b7de5 invalidate_partition +EXPORT_SYMBOL vmlinux 0xe269fb22 noop_fsync +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2a9df0d remap_pfn_range +EXPORT_SYMBOL vmlinux 0xe2b16599 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0xe2c0bbf4 unregister_nls +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2d81586 sk_release_kernel +EXPORT_SYMBOL vmlinux 0xe2e8065e memdup_user +EXPORT_SYMBOL vmlinux 0xe2fae716 kmemdup +EXPORT_SYMBOL vmlinux 0xe2fe16dd nf_ct_attach +EXPORT_SYMBOL vmlinux 0xe30b7ce3 ip_check_defrag +EXPORT_SYMBOL vmlinux 0xe34947be bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0xe35c5285 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0xe3755ba5 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0xe38eaba5 nand_bch_correct_data +EXPORT_SYMBOL vmlinux 0xe3ad183b fb_get_mode +EXPORT_SYMBOL vmlinux 0xe3bd6992 tty_set_operations +EXPORT_SYMBOL vmlinux 0xe3bd97d0 blk_mq_end_io +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3e88a7e seq_release_private +EXPORT_SYMBOL vmlinux 0xe43274bc proc_dointvec +EXPORT_SYMBOL vmlinux 0xe4346290 dst_release +EXPORT_SYMBOL vmlinux 0xe44e41e5 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0xe4559090 inode_change_ok +EXPORT_SYMBOL vmlinux 0xe45ef32a cdev_alloc +EXPORT_SYMBOL vmlinux 0xe4715e50 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0xe47ec869 lro_receive_frags +EXPORT_SYMBOL vmlinux 0xe49c31bd write_inode_now +EXPORT_SYMBOL vmlinux 0xe49cb093 __put_cred +EXPORT_SYMBOL vmlinux 0xe4a2d272 of_device_register +EXPORT_SYMBOL vmlinux 0xe4c80097 cacheid +EXPORT_SYMBOL vmlinux 0xe4f1b6ee of_dev_get +EXPORT_SYMBOL vmlinux 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL vmlinux 0xe4f743b2 pagevec_lookup +EXPORT_SYMBOL vmlinux 0xe5122890 flow_cache_genid +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe53d1faa of_translate_dma_address +EXPORT_SYMBOL vmlinux 0xe53e23e3 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0xe55401d2 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0xe561a3ce default_llseek +EXPORT_SYMBOL vmlinux 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe5bcb005 padata_do_parallel +EXPORT_SYMBOL vmlinux 0xe5c5d8ef bio_integrity_get_tag +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5cd9852 flush_old_exec +EXPORT_SYMBOL vmlinux 0xe5ed1d46 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe60e65ec skb_find_text +EXPORT_SYMBOL vmlinux 0xe6174f7a try_module_get +EXPORT_SYMBOL vmlinux 0xe6205496 netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xe623ac46 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0xe63614a4 ps2_init +EXPORT_SYMBOL vmlinux 0xe64f555f amba_device_register +EXPORT_SYMBOL vmlinux 0xe6560971 ip6_route_output +EXPORT_SYMBOL vmlinux 0xe657af83 open_exec +EXPORT_SYMBOL vmlinux 0xe66452ab dql_init +EXPORT_SYMBOL vmlinux 0xe664af1a __find_get_block +EXPORT_SYMBOL vmlinux 0xe67f5bad fib_default_rule_add +EXPORT_SYMBOL vmlinux 0xe686acae simple_readpage +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL vmlinux 0xe6affa0e misc_register +EXPORT_SYMBOL vmlinux 0xe6b5491f generic_pipe_buf_unmap +EXPORT_SYMBOL vmlinux 0xe6c3ebb0 __raw_writesw +EXPORT_SYMBOL vmlinux 0xe6d1306a dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0xe6d42039 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0xe6ebc016 key_create_or_update +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe701a082 __serio_register_driver +EXPORT_SYMBOL vmlinux 0xe707d823 __aeabi_uidiv +EXPORT_SYMBOL vmlinux 0xe7216c5a dcb_setapp +EXPORT_SYMBOL vmlinux 0xe724744d tcp_prequeue +EXPORT_SYMBOL vmlinux 0xe7267f93 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0xe755555d register_nls +EXPORT_SYMBOL vmlinux 0xe75862c1 mmc_put_card +EXPORT_SYMBOL vmlinux 0xe7722171 flex_array_free +EXPORT_SYMBOL vmlinux 0xe7769141 tcf_hash_lookup +EXPORT_SYMBOL vmlinux 0xe785ac20 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0xe7887051 do_sync_write +EXPORT_SYMBOL vmlinux 0xe78c76e4 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0xe79cd8a7 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0xe79ff18c sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7b5b600 of_phy_connect +EXPORT_SYMBOL vmlinux 0xe7b77f09 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0xe7c44130 elv_abort_queue +EXPORT_SYMBOL vmlinux 0xe7d0cc69 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0xe7d2636a dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7da3b9c nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0xe7e47014 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0xe7e539f8 sync_inode +EXPORT_SYMBOL vmlinux 0xe7f53266 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0xe812fd4b bdevname +EXPORT_SYMBOL vmlinux 0xe813c58c generic_writepages +EXPORT_SYMBOL vmlinux 0xe81b8769 __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xe839b377 netif_skb_dev_features +EXPORT_SYMBOL vmlinux 0xe851bb05 queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0xe85a2b0c snd_ctl_register_ioctl +EXPORT_SYMBOL vmlinux 0xe85cc88e __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0xe869d8e9 snd_pcm_lib_read +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe8848907 block_commit_write +EXPORT_SYMBOL vmlinux 0xe898bfba crc32_le_combine +EXPORT_SYMBOL vmlinux 0xe8993d6d max8925_bulk_read +EXPORT_SYMBOL vmlinux 0xe8b53ecc down_write_trylock +EXPORT_SYMBOL vmlinux 0xe8b63ace radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8d17c6e nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0xe8d9fce8 give_up_console +EXPORT_SYMBOL vmlinux 0xe8deb67e netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0xe8f65041 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0xe912da6b unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe921144f d_lookup +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe971948f truncate_setsize +EXPORT_SYMBOL vmlinux 0xe98d7313 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0xe99281c5 netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0xe9a03190 finish_no_open +EXPORT_SYMBOL vmlinux 0xe9a30b3b jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0xe9a3e055 tcf_hash_search +EXPORT_SYMBOL vmlinux 0xe9a5a4c3 tcf_em_register +EXPORT_SYMBOL vmlinux 0xe9a8c1ca alloc_anon_inode +EXPORT_SYMBOL vmlinux 0xe9ae39e8 dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0xe9b35630 sk_wait_data +EXPORT_SYMBOL vmlinux 0xe9c5697e twl6040_get_pll +EXPORT_SYMBOL vmlinux 0xe9db0c03 snd_pcm_new +EXPORT_SYMBOL vmlinux 0xe9db4cb7 netdev_change_features +EXPORT_SYMBOL vmlinux 0xe9e6d8a3 block_invalidatepage +EXPORT_SYMBOL vmlinux 0xe9ec1441 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xea0387a3 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea10212a int_to_scsilun +EXPORT_SYMBOL vmlinux 0xea10655a __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xea16dd4c tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xea2d0a30 generic_readlink +EXPORT_SYMBOL vmlinux 0xea4d2fb1 tcp_release_cb +EXPORT_SYMBOL vmlinux 0xea5e5816 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0xea5fd602 ppp_input +EXPORT_SYMBOL vmlinux 0xea6e3003 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0xea7987f1 key_update +EXPORT_SYMBOL vmlinux 0xea9ca262 con_copy_unimap +EXPORT_SYMBOL vmlinux 0xea9e6aca ip_setsockopt +EXPORT_SYMBOL vmlinux 0xeabf2ffc do_SAK +EXPORT_SYMBOL vmlinux 0xeac36588 iput +EXPORT_SYMBOL vmlinux 0xeacbbf25 wait_iff_congested +EXPORT_SYMBOL vmlinux 0xead30fcf __skb_checksum +EXPORT_SYMBOL vmlinux 0xeae0f01b scsi_prep_state_check +EXPORT_SYMBOL vmlinux 0xeae58445 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0xeb0edfdd make_kgid +EXPORT_SYMBOL vmlinux 0xeb10d87f blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb4cfb96 tty_unregister_device +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb6e4033 eth_change_mtu +EXPORT_SYMBOL vmlinux 0xeb78ec41 cdev_init +EXPORT_SYMBOL vmlinux 0xeb7f6d3b tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0xeb9e7cdd ida_destroy +EXPORT_SYMBOL vmlinux 0xebb91309 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0xebdbe48c radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xebec71c2 pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0xebf36c5b ihold +EXPORT_SYMBOL vmlinux 0xebfdcbdf system_serial_high +EXPORT_SYMBOL vmlinux 0xec17ebb0 of_match_node +EXPORT_SYMBOL vmlinux 0xec1aa6ef memzero_explicit +EXPORT_SYMBOL vmlinux 0xec48d028 fs_bio_set +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec80c06c neigh_table_init +EXPORT_SYMBOL vmlinux 0xec90183a mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0xeccd7e14 iget_locked +EXPORT_SYMBOL vmlinux 0xecd194a7 input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecfb702d __sb_end_write +EXPORT_SYMBOL vmlinux 0xed378be1 skb_unlink +EXPORT_SYMBOL vmlinux 0xed39382c blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0xed4cfe03 netdev_features_change +EXPORT_SYMBOL vmlinux 0xed539b79 dcb_getapp +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed6dad51 sock_no_accept +EXPORT_SYMBOL vmlinux 0xed72ceb9 snd_component_add +EXPORT_SYMBOL vmlinux 0xed78508a snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL vmlinux 0xed93f29e __kunmap_atomic +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xeda6c70a wireless_spy_update +EXPORT_SYMBOL vmlinux 0xedb1011e con_is_bound +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc7f4ec dq_data_lock +EXPORT_SYMBOL vmlinux 0xedd9106d __ashrdi3 +EXPORT_SYMBOL vmlinux 0xee0fa6fe rfkill_alloc +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee2fa8cf frontswap_register_ops +EXPORT_SYMBOL vmlinux 0xee347643 address_space_init_once +EXPORT_SYMBOL vmlinux 0xee50e0cb xfrm4_rcv +EXPORT_SYMBOL vmlinux 0xee715ef8 lg_global_unlock +EXPORT_SYMBOL vmlinux 0xee8c9ba3 thaw_bdev +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeb16abc add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0xeed3635b proc_dostring +EXPORT_SYMBOL vmlinux 0xeee0c8d2 netdev_notice +EXPORT_SYMBOL vmlinux 0xeee3568a deactivate_super +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xeefc2d0c dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xef40eccb napi_gro_frags +EXPORT_SYMBOL vmlinux 0xef481ea4 lock_may_write +EXPORT_SYMBOL vmlinux 0xef89aca6 scsi_execute +EXPORT_SYMBOL vmlinux 0xef949885 kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0xefc5db22 uart_get_divisor +EXPORT_SYMBOL vmlinux 0xefcf3143 wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xefd6cf06 __aeabi_unwind_cpp_pr0 +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf010f52c mntput +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf0189cf1 have_submounts +EXPORT_SYMBOL vmlinux 0xf01ba746 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0xf0389453 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xf055cc27 nand_calculate_ecc +EXPORT_SYMBOL vmlinux 0xf055ea4b __cleancache_get_page +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf0619801 timekeeping_clocktai +EXPORT_SYMBOL vmlinux 0xf0677509 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0xf0734714 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xf087137d __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0af8e2b sg_miter_stop +EXPORT_SYMBOL vmlinux 0xf0cdddeb dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0xf0d68ed6 clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0xf0d86966 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0xf0e030e9 kmem_cache_free +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0f1246c kvasprintf +EXPORT_SYMBOL vmlinux 0xf0fdf6cb __stack_chk_fail +EXPORT_SYMBOL vmlinux 0xf100416a remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xf1027e76 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xf10cde57 single_open_size +EXPORT_SYMBOL vmlinux 0xf1213958 dma_release_from_coherent +EXPORT_SYMBOL vmlinux 0xf13feb57 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0xf144ae0d of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf165c164 __generic_file_aio_write +EXPORT_SYMBOL vmlinux 0xf166d8e5 km_state_expired +EXPORT_SYMBOL vmlinux 0xf1806da9 idr_find_slowpath +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf19e9355 cpu_online_mask +EXPORT_SYMBOL vmlinux 0xf1b855d2 drop_nlink +EXPORT_SYMBOL vmlinux 0xf1cb11a9 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0xf1d00778 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0xf1d1e85e netdev_emerg +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1deabf2 div64_u64 +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf202c5cb radix_tree_insert +EXPORT_SYMBOL vmlinux 0xf204a305 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0xf2076c22 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf24740c4 snd_pcm_lib_ioctl +EXPORT_SYMBOL vmlinux 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL vmlinux 0xf2862775 mpage_writepage +EXPORT_SYMBOL vmlinux 0xf2997713 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0xf29cdf84 vfs_create +EXPORT_SYMBOL vmlinux 0xf29f2ae5 tty_port_close_start +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2b1ac8e __getnstimeofday +EXPORT_SYMBOL vmlinux 0xf2bc714d from_kgid +EXPORT_SYMBOL vmlinux 0xf2c14c13 fb_show_logo +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf32dac04 ipv4_specific +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf3653680 __scm_send +EXPORT_SYMBOL vmlinux 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL vmlinux 0xf3863321 request_key_async +EXPORT_SYMBOL vmlinux 0xf386a7a6 free_task +EXPORT_SYMBOL vmlinux 0xf388017f get_tz_trend +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf39694fa sock_no_shutdown +EXPORT_SYMBOL vmlinux 0xf396cd21 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xf3bf0bce __bitmap_complement +EXPORT_SYMBOL vmlinux 0xf3ef0bee input_get_keycode +EXPORT_SYMBOL vmlinux 0xf3fdfc1b __neigh_event_send +EXPORT_SYMBOL vmlinux 0xf40b2297 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xf473ffaf down +EXPORT_SYMBOL vmlinux 0xf4768ea3 of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0xf478bd0e led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0xf48834e2 nf_setsockopt +EXPORT_SYMBOL vmlinux 0xf4b94e8c dst_alloc +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4c5fa23 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0xf4d4cc85 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0xf4ed607f page_address +EXPORT_SYMBOL vmlinux 0xf4f025da sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f3e23b tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xf4f71fc3 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0xf51d9ace ppp_dev_name +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf5514ce0 ioremap_page +EXPORT_SYMBOL vmlinux 0xf559a4aa __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0xf564412a __aeabi_ulcmp +EXPORT_SYMBOL vmlinux 0xf5c05914 generic_segment_checks +EXPORT_SYMBOL vmlinux 0xf5cb3efb read_cache_page +EXPORT_SYMBOL vmlinux 0xf5ceceec sk_send_sigurg +EXPORT_SYMBOL vmlinux 0xf5d11432 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0xf5d1955e pagecache_write_begin +EXPORT_SYMBOL vmlinux 0xf5d451af kernel_accept +EXPORT_SYMBOL vmlinux 0xf5e2103b blk_init_tags +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5f5ad96 scsi_print_sense +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf6805863 snd_ctl_boolean_mono_info +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf6851d5f register_sysctl_paths +EXPORT_SYMBOL vmlinux 0xf68687be __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xf6aa3165 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0xf6b174c3 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6c37319 kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0xf6c833dd uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6ef0121 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0xf6f8d7cc phy_connect_direct +EXPORT_SYMBOL vmlinux 0xf741c793 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf7802486 __aeabi_uidivmod +EXPORT_SYMBOL vmlinux 0xf786f354 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0xf7b12aee __next_cpu +EXPORT_SYMBOL vmlinux 0xf7b927a1 dqget +EXPORT_SYMBOL vmlinux 0xf7c0cdb4 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0xf7c6d237 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0xf7d329ad mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0xf7d3371f nobh_write_end +EXPORT_SYMBOL vmlinux 0xf7dba8cb unlock_page +EXPORT_SYMBOL vmlinux 0xf7edd634 arp_xmit +EXPORT_SYMBOL vmlinux 0xf803fe39 bitmap_set +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82b363f inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf8398a88 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0xf843c001 splice_from_pipe_end +EXPORT_SYMBOL vmlinux 0xf858406d xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0xf85fa55a mem_map +EXPORT_SYMBOL vmlinux 0xf863b66f blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0xf87b6a37 follow_pfn +EXPORT_SYMBOL vmlinux 0xf8a28b84 genphy_read_status +EXPORT_SYMBOL vmlinux 0xf8b40759 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0xf8fbb4f0 __bad_xchg +EXPORT_SYMBOL vmlinux 0xf8ff1ef0 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0xf901c99c mmc_align_data_size +EXPORT_SYMBOL vmlinux 0xf905c5b1 xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0xf9089e13 bio_sector_offset +EXPORT_SYMBOL vmlinux 0xf92ca041 netpoll_setup +EXPORT_SYMBOL vmlinux 0xf9348cbc xz_dec_run +EXPORT_SYMBOL vmlinux 0xf938f07b scsi_setup_blk_pc_cmnd +EXPORT_SYMBOL vmlinux 0xf94fd848 sg_miter_next +EXPORT_SYMBOL vmlinux 0xf96e5530 block_write_full_page +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9af457d snd_ctl_remove +EXPORT_SYMBOL vmlinux 0xf9c367e0 iov_pages +EXPORT_SYMBOL vmlinux 0xf9d2c7b5 __devm_release_region +EXPORT_SYMBOL vmlinux 0xf9e73082 scnprintf +EXPORT_SYMBOL vmlinux 0xf9eb791c inet6_getname +EXPORT_SYMBOL vmlinux 0xf9f26cdc register_netdevice +EXPORT_SYMBOL vmlinux 0xfa2dd441 blk_put_request +EXPORT_SYMBOL vmlinux 0xfa342b03 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0xfa379ea0 snd_card_free +EXPORT_SYMBOL vmlinux 0xfa3898a1 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xfa509c5d blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa66963d blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0xfa7f3156 wl12xx_get_platform_data +EXPORT_SYMBOL vmlinux 0xfa97dc2f clocksource_register +EXPORT_SYMBOL vmlinux 0xfab70829 starget_for_each_device +EXPORT_SYMBOL vmlinux 0xfab9ebab put_disk +EXPORT_SYMBOL vmlinux 0xfac68eba arm_elf_read_implies_exec +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacdceb2 scsi_prep_fn +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaf07539 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0xfaf98462 bitrev32 +EXPORT_SYMBOL vmlinux 0xfaf9995e sleep_on +EXPORT_SYMBOL vmlinux 0xfb0cecfd vm_event_states +EXPORT_SYMBOL vmlinux 0xfb1ca763 tcf_hash_create +EXPORT_SYMBOL vmlinux 0xfb3d01f0 i2c_transfer +EXPORT_SYMBOL vmlinux 0xfb3deee2 bio_copy_kern +EXPORT_SYMBOL vmlinux 0xfb3e472d ipmi_register_smi +EXPORT_SYMBOL vmlinux 0xfb468b66 vmap +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb6c5b01 dma_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0xfb7a0a1d dquot_scan_active +EXPORT_SYMBOL vmlinux 0xfb7d9c45 __udivsi3 +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfb9ca9f2 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbc52e1c d_splice_alias +EXPORT_SYMBOL vmlinux 0xfbdd741e snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL vmlinux 0xfbfd8d04 set_nlink +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc0d8113 bio_copy_user +EXPORT_SYMBOL vmlinux 0xfc168279 dentry_open +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfc75aa33 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0xfc7af23b skb_seq_read +EXPORT_SYMBOL vmlinux 0xfc7e270e fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0xfc7eee52 dev_addr_flush +EXPORT_SYMBOL vmlinux 0xfcaa04a0 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcc5e426 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0xfcea1e24 scsi_host_get +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcefaa81 ata_print_version +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd17ecda swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0xfd29c8db udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0xfd305341 walk_stackframe +EXPORT_SYMBOL vmlinux 0xfd3e4b82 skb_queue_purge +EXPORT_SYMBOL vmlinux 0xfd497a98 devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0xfd4a74a5 mpage_writepages +EXPORT_SYMBOL vmlinux 0xfd5683b9 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0xfd5b4812 xfrm_cfg_mutex +EXPORT_SYMBOL vmlinux 0xfd6293c2 boot_tvec_bases +EXPORT_SYMBOL vmlinux 0xfd7195c8 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0xfd98e102 remove_arg_zero +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfd9ff789 pm860x_page_bulk_write +EXPORT_SYMBOL vmlinux 0xfda0dbe8 ftrace_print_hex_seq +EXPORT_SYMBOL vmlinux 0xfde657cb generic_listxattr +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe739d52 scsi_release_buffers +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe8ea15d tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0xfe956232 of_phy_attach +EXPORT_SYMBOL vmlinux 0xfe98ff98 mmc_erase +EXPORT_SYMBOL vmlinux 0xfeb9c9ab loop_register_transfer +EXPORT_SYMBOL vmlinux 0xfecc3455 clear_inode +EXPORT_SYMBOL vmlinux 0xfedbe297 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfef96e23 __scsi_print_command +EXPORT_SYMBOL vmlinux 0xff064fee gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0xff09263e touch_atime +EXPORT_SYMBOL vmlinux 0xff0b160d setattr_copy +EXPORT_SYMBOL vmlinux 0xff1cab3c phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0xff1d8949 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff2efab6 input_inject_event +EXPORT_SYMBOL vmlinux 0xff370b9f blk_delay_queue +EXPORT_SYMBOL vmlinux 0xff45b150 skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL vmlinux 0xff670c27 vfs_statfs +EXPORT_SYMBOL vmlinux 0xff67b37f __lshrdi3 +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff6a999b dcache_dir_open +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff758cc9 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0xff850d24 ipmi_smi_add_proc_entry +EXPORT_SYMBOL vmlinux 0xff88d462 fb_find_mode +EXPORT_SYMBOL vmlinux 0xff9a50b7 inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffb94ef0 _test_and_change_bit +EXPORT_SYMBOL vmlinux 0xffbcaab7 snd_card_disconnect +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x1a94f685 ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x560027e7 __ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xaef80db6 ablk_set_key +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xbe4f72e0 ablk_decrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xd088e4c8 ablk_exit +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xe9aeffc9 ablk_init +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xf30c4300 ablk_init_common +EXPORT_SYMBOL_GPL crypto/af_alg 0x0676abf3 af_alg_release_parent +EXPORT_SYMBOL_GPL crypto/af_alg 0x07ae08b3 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x2d307955 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x3582bbac af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x53c88ecc af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0x93957c0c af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0xa2b00ab0 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xa55f0da9 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xa777c1d0 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0xd954ef95 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x58edd45b async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x02f3ebdd async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xe91aa2cf async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x095da76d async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xec180cd9 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x00e0513d async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x7b35bfd0 __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x8b0e4acd async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xf080696a async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x9272d50e async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xf3b8c17d async_xor +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x11769065 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x27278ca9 __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x394b4554 cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x4a2a3ca6 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x08b47b70 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 0x174545f5 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x202d8087 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x2309ee14 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x513ea3a6 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x6ca1e7c9 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xbf9bd4c9 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xd0f8d7b3 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xd9418363 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xdcc7dad9 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xe7914ca8 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0x9280f96d lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x328dee01 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 0x5dfa7c67 twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x7225f225 xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x1cb61b40 ahci_platform_resume_host +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x269afc86 ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x339893f2 ahci_platform_suspend_host +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x5be263db ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x93a6d2fd ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x945f71f8 ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xb9657787 ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xce44aad3 ahci_platform_suspend +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xdd2f6465 ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xf0c81a49 ahci_platform_resume +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xf7241c19 ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0xf33b00f8 __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/bcma/bcma 0x13890418 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1dd42b52 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1e6d446d bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2d2a9033 bcma_core_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2e4fbf96 bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x365d378e bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x365e8a91 bcma_find_core +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x43d3fac1 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x498dc512 bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4fdc35d6 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5ea202e5 bcma_core_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x63e4b302 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x72d0f812 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7d1b1f94 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8101fa56 bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8de4e46c bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xaa9f2309 bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb0cf9904 bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc3b3d116 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xca1ea449 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe3c03cfe bcma_core_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe6ed913e bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xeb5b012e bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x48fc9b6d btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x8996032a btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x8dcdaf11 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xa17da188 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xb14c1201 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xbb866553 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xf7eef3a1 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xf85ef105 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xff96bf17 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xffd4fe0e btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/cpufreq/arm_big_little 0x46a614b0 bL_cpufreq_unregister +EXPORT_SYMBOL_GPL drivers/cpufreq/arm_big_little 0x9e2f3ac7 bL_cpufreq_register +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x4338c28a dw_dma_resume +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x6fa255df dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xc849625d dw_dma_suspend +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xdcdc06b4 dw_dma_shutdown +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xe0ba7fd0 dw_dma_probe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x00dc540e edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x23799e93 edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x3954cb5d edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x69259f22 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6f8f08ee edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7d6c7283 edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x8384ea46 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x86ca53dc edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa60450e8 edac_mc_add_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb32daf4c edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xbcab3706 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xbed91736 edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xcd897088 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd3bc95ac find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xfdc5dc6d edac_device_del_device +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x54ebda6b bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x73946dc7 bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x0d933f40 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xb0b613a3 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x05604d0e drm_gem_cma_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x1ba2f40d drm_gem_cma_describe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x1e1450cc drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x2267047e drm_gem_cma_dumb_map_offset +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x4e9ecd10 drm_gem_cma_prime_import_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x62150898 drm_gem_cma_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x76fb9cca drm_gem_cma_prime_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x7d0d84dd drm_gem_cma_prime_vunmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x85a622fd drm_gem_cma_prime_get_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xaceb64d7 drm_gem_cma_dumb_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xbfdfa59a drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xc60b1129 drm_gem_cma_free_object +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xd01a46c5 drm_vm_open_locked +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xe3eaf2d9 drm_gem_cma_prime_vmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xe6a680cc drm_gem_cma_vm_ops +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x1148b623 drm_fbdev_cma_fini +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x1ed72aeb drm_fb_cma_debugfs_show +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x50ccd21c drm_fb_cma_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x7a31269f 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 0xd7d61874 drm_fb_cma_get_gem_obj +EXPORT_SYMBOL_GPL drivers/hid/hid 0x02c5ee1b hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0ffb4d68 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x11d195e4 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0x173d79a1 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x19032319 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1f60cd0b hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1ff26496 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x363cc564 hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0x37b67079 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3a845bd0 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x42e9a6f8 hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x434d0969 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x49d8b560 hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0x54796163 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x547b33d5 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5f8e2519 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x691bf01d hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6d81ad0b hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7a1498e6 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8fd4a662 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x92700bae hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x93c44e44 hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9f2be378 hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9f854fd3 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa0037e53 hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa1df9e1f hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb8abacb1 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbd3d8a22 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc6b7d4be hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xde854c21 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe61dbd9f hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe888c202 hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfcea1f1d hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xff2c0a04 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x88709c8d roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x050e5c12 roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x423a4125 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x54c887a5 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x6d49eb5e roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x92b49af2 roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xdff1f681 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x31b1dab9 sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x38e48f1f sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x43a21de0 sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x4f196ba7 sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x90648c93 sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xd2f5b475 sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xe1325ed3 sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xec4b48a0 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xce375b4d hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x199437df hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x2692e57b hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x2bb8512c hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x38345be8 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x3ee4b4a6 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5cc6dd1d hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x6c90e347 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x8a8b3e34 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x9d6154b1 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa0210c57 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa45401e7 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe27c4baf hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf755dba6 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x22e0489a adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x86db1519 adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xf1559a28 adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x0c37b54e pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x30d6d15b pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x39cec581 pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x3e2ea3b4 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x4b11335b pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x4baab803 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x4ff36182 pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x721a5736 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x8c5fa979 pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xbacc0815 pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xc0b2e632 pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf292be86 pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x0eca188a i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x21b2bb76 i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x23b5c770 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x412109a0 i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x41492ed3 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 0x942d2bde i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x9bdd1458 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xa29cb02b i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xaa2820ec i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x6005e71d i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x9f113a3a i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x0e643daa i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xe4aaea97 i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x0dada7e2 ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x2297e2dc ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x4d8b9967 ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x4f20fe7d ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x95bd97fc ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xbb8953be ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xc050ab38 ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xc66ef8ed ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xf8a22d1c ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x152cc6e0 adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x19f5015a adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x5026a0eb adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x5b73e543 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x6009100e adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x6a178f90 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x6bae7554 adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x71cc82b2 adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xb6244a09 adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xd0394709 adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xfc757d47 adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xff6f8784 adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0133b49f iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x050db85e iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x16226543 devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1e76d0f3 iio_alloc_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 0x281ebe07 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3315dfd6 iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x381c879b devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3a59ca63 iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3ce237bb iio_scan_mask_set +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x51cefabe iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x589200c4 iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6334fcea iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x68056c53 iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x68f844fc devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6b1d305d iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6dcdcacb iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x768bc223 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7a6851ef iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x87d93bc8 devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa273a070 iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd22977a0 iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd3b87caf iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd3eaf87e iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdcce6a21 iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe1711c04 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe276483d iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe2bb97f3 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe5649cc8 iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xeee90b11 iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf7b8d7a7 iio_update_buffers +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x78c060b6 input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0xb71a53d7 matrix_keypad_parse_of_params +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x1a1ed9ad 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 0x3fd02f29 cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xaa234781 cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xceca4d4b cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x84a064ad cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x99d8d0fa cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x9bd0262b cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x41051361 cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xefbfd508 cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x0a8a3188 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x284f8a8e wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x2d75300f wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x30cb2d55 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x374d4007 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x445190ff wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x9227bc32 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xab682db2 wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xcd84e8e9 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xd4c4ec35 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xe1df3091 wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xe961b107 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x04590541 ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x19b77d1f ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x29e087e1 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x5eb28c01 ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x6213f1a8 ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x7e29fccb ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x962fea7e ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xde5c6a02 ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xea27f5ab 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 0x00e45a60 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x0cee2cc2 gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x37463ae6 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x462368a4 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6f24753f gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8783c57f gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x88dc4ed2 gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8a8c5d17 gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8eff32df gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x98b27720 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa3519077 gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xb341121e gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe0e5f6a9 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe9fd0261 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xed9b4d33 gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf0557773 gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf53c0edb gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf8d597d3 gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x0b3b1fbd lp55xx_register_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x2d7c5cca lp55xx_unregister_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x68629246 lp55xx_init_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x7b4e58ab lp55xx_read +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x7fb50f7a lp55xx_register_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x92f68a36 lp55xx_deinit_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xabc56d10 lp55xx_update_bits +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xb58be33b lp55xx_of_populate_pdata +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xbfb7a48f lp55xx_is_extclk_used +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xeeb7f5fc lp55xx_write +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xf0c27ded lp55xx_unregister_leds +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x749e05f2 ledtrig_flash_ctrl +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x7903e46e ledtrig_torch_ctrl +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 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 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 0x7b488fb1 __tracepoint_bcache_alloc_invalidate +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 0x2087fe2e dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2e643248 dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2eb01e04 dm_deferred_set_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x3f83455c dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x42d49c3b dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x4eedaec8 dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x5ccc0e2c dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +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 0xbff7fea3 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 0xebd06eaf dm_bio_prison_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x186492e8 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 0x418b2dad dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x6b785313 dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x9057a2e6 dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xa83603ed dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xc17856d9 dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xd1a4da78 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xd8a2dd71 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x09f1820d dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x59c12ddb 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 0x2050a36b dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x25cd5ff8 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 0x65052d83 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x778fce16 dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x8cb388b9 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 0xb430bdd2 dm_rh_mark_nosync +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 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 0x1cac81ac dm_bitset_clear_bit +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 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 0x2f74609d dm_bitset_test_bit +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 0x38c75c44 dm_bitset_empty +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 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 0x68fae9d2 dm_disk_bitset_init +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 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 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 0xa0bbbb49 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa13861b4 dm_bitset_del +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 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 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 0xdd94a878 dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xe44b4b9b dm_bitset_set_bit +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 0xf475af48 dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/raid1 0xe2ebb9be md_raid1_congested +EXPORT_SYMBOL_GPL drivers/md/raid10 0xa560ab27 md_raid10_congested +EXPORT_SYMBOL_GPL drivers/md/raid456 0x1b390c37 md_raid5_congested +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x06c07c59 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x175b2e4f smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x1f27cf8b smscore_get_device_mode +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 0x3d5b97ba sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x413ed8ea smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x42de4dbd smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x46cebd66 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x4b26d616 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x63222b29 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x6d9c68eb smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x76853b00 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x867f8103 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x903917b9 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x97f95d9e smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa202eae8 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xba2c1362 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xcce95283 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe8de20d8 smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0x7ba1b957 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x23ac1683 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x535ab04a radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x3955856e ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4f6471c9 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x50e5175e ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x62e12d4f rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7213c10c rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x82b992d7 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x88c29ad4 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9a594f73 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9d376238 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb2c75733 rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xcb264e92 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd15a1487 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd981aa6e rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xdb44a5da ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xdcb11c48 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe20e2bae rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe857dcdf ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xfe4977c8 rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xffcaa695 rc_close +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0x1d5175a8 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x074f5071 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x1f7f8296 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0xb72582eb r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0x6be5074d tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x722c5e7d tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x2c081242 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x3abe5f42 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0xaf3cf03e tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x686e017e tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xdb788778 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x35ec34f0 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xb231efe6 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x8f6be671 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x06a42941 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x0de0d395 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1a5d2dd9 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x203175ed cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x25c06b16 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x3ad78bcb cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x58bcd719 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6ec2ab48 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7b4dc47f cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x9bbf4e3e is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x9e5ab5d1 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa68a9916 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xac292f9b cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xad153e49 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc35a2316 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc9d0f96b cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xccb6f8cd cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd4e4a1db cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf89f295a cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x8f8a7353 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0xdc358c3a mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x0b419ebe em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x0bf6888e em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x18e4c8a1 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x190d7ee6 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x2f658a1f em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x34db79a4 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x478bc2e2 em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6b650082 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7e4a8fc2 em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa737428d em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa867ebd9 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xaa81b609 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xed810864 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xf6c9b4d4 em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x24719e44 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x4375655d tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x746e5609 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xff1f50d8 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 0x0ce96009 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x2edfbf75 v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x31ad0b3e v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x4c473117 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x686098f1 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 0xba1b72fb 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 0x221d2fbc v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x36e8756a v4l2_find_dv_timings_cap +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 0x53105839 v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x6976cfe0 v4l2_valid_dv_timings +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 0x7eaf8e7a v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xb0891da2 v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0x9dbfd652 v4l2_int_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xa5228b24 v4l2_int_device_try_attach_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xcef46e1e v4l2_int_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xd7a34bcf v4l2_int_ioctl_1 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xda7a9e3b v4l2_int_ioctl_0 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x00eeed39 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0d8cd18a 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 0x4b07fbc7 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x59a0ff2b v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x72a392dc v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x818c361d v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8e970d51 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9126de33 v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xbf220e5b v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc7960a43 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe6dbc79b v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe86ecc30 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xeea6e51f v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf2e4968e v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x13cfd719 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x182da92c videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x19457871 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x195bff87 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1e8d51ac videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x25ea7e4c videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2785d80e videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2c730b6c videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5525e690 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x69ef996c videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6be2c8d8 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x703fad03 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x812fc1ea videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8a4559f7 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8ad02183 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x99bd5443 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xaf7d0334 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc543988e videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd6a34c01 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe1444e11 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe77de6a9 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xec312d92 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xed93b0d7 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xfdbbb143 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x444c6e07 videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xae8ce61a videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xeb8b3751 videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x37f8e61e videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xd8fa85b0 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xfec8c7cd videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x02d0e3e6 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x06a42515 vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0a7cae62 vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x18e49588 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1e37ca0e vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2564cd6e vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x314ebd8b vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3713ff77 vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x375f9b43 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x37be3a47 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3c6cc0fb vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3e81678a vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x40122d87 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5b0b634c vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x669b985a vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x67fbff52 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6a4c63c3 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x884a500b vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x92ce5f70 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa4d1b86d vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa51e1035 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa8f8b681 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb35a8ce0 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb3c55b13 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb61d6bbc vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb77a4b6c vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc8185b53 vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xcd714738 vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xcfb1200c vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe37863d5 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe52d9525 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xeea0f9b5 vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf00c96cd vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf139e2ea vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x21734bce vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xd01ece02 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-memops 0x02daa2af vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xbbb26eb5 vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xce0eeecc vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xd4d788af vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0x7a335a16 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x05cdffec v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x15ab0162 v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2e5b4ce4 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x42262685 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x458d3ec0 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x482c92ee v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4e08342b v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4f338f2b v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x52098893 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x57b6b497 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5e161840 v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x87a19dc0 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x93fbf14b v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x956ed96c v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa090c248 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc1b151c8 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc41d95ac v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd7cf67c5 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd935f13d v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe330442d v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe34677a9 v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe7f32dd1 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf38a0514 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x018245cd pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x9c408d60 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xad609b13 pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x147d3ffd kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x15b94ce0 kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x176e2ab0 kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x9ab3476f kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x9b3847a6 kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xcdafc7d4 kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xf205562f kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xfbc9fb1d kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x00aa13d3 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x6f93635f lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x99be0221 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x0aa51173 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x0fc2cda0 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x63c1296e lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x8dd737f0 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xaa21a1f9 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xce2ce011 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xe815a3ad lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x04302249 mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x163fd721 mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x448a6969 mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x90f07e45 mc13xxx_common_cleanup +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xa7002b5c mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xca72b91e mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x2571384a pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x36d8cbf5 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x4e1292b7 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x548df677 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x9e262282 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xa13221bc pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xaa3f5033 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xbc5329a2 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe439e5a5 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe920b1ac pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xead234b6 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xac1d1167 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xc8688cab pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x015ede52 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x65d86ae3 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x9388926d pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x940f9a86 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xe288b398 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/si476x-core 0x0033a7df si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x06b84b99 si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0f979b7e si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1cc60902 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1e332113 si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x28e1654e si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3982d880 si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3de8c345 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x44f991e1 si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4ced2be6 si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x535229d9 si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5d7b2e5f si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6853e4d2 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x75cca68a si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x77f59720 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7884accc si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x807aafb2 si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x85f48218 si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8a8840d6 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x98314c38 si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa3a98d04 si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa5056302 si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa5283ca6 si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa6b53eab si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa9d71372 si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb05bb436 si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb1d7a27d si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb3ad59e0 si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xbfbabc08 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc698f1c3 si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xdf0806f3 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe5b6c36e si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe6b2c688 si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xedb57019 devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x40a20289 sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x50dd7fc8 sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x7cad83f0 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xc702a7d1 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xe1be804c sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x1d8af6ea tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x7caef2d9 tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xa069237b tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xac5a9b36 tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/mfd/twl4030-madc 0x9effbf1a twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x8740791c ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0x16f07ca5 bmp085_detect +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0x63d41452 bmp085_probe +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0x8ff152ac bmp085_regmap_config +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0xf49b0b7f bmp085_remove +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 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x3fe4b807 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x83a66f7f enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x9cef35d1 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xb21a027e enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xd82c7c0b enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xe7658daf enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xefafadda enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x3111a691 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x321f1afd lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x6e4d3ca1 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x76c6c1f9 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x9e5c16d8 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xa0eb3e5f lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xc7fe9dae lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xd86a3a2a lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x1b628187 st_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x324416c3 st_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0xa1d24b2b dw_mci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0xbf0feb38 dw_mci_pltfm_remove +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0xc1a13f99 dw_mci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x65539c3b cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x984db9ad cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xa7649c45 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x62fd658d cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x9104aa0b cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xef56e1db cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x161e4dde cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x271c0514 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xc808c595 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xe77812bb cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x2e52bdac onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xfeac66cf onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x125af056 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x1d27c558 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2945c27c ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x3ae18e45 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x4d149c4c ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5dabbe91 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x67d8a51f ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7205eb8a ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7bc2a933 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xa320a614 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xab832a5f ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xd31c2e2f ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf06fc852 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x4c661997 c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x8d01adbc alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x966f365e unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x969e6d4c register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xaf6c6636 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xbc24eecc free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x0cbb8cf9 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x172f662a can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x1daeff99 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x284f8a7b can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x2a7c2c1f open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x3f06fc43 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x6f2aca02 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x71b2cd5c alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x76c6e033 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x7739b3d7 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x7e8c9665 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x9726acda devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xc4e059e2 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xea4ed557 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf20df821 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x12438c9c register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x413110ab alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xc7eb9867 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xe3189e9c unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x10e1084c register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x614ac4bd alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xe358885f unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xfd7331ef free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x3cf1615e macb_get_hwaddr +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x8c493ba0 macb_set_rx_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x963defed macb_get_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xa37e598d macb_mii_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xbaf1e8a3 macb_ioctl +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xbcab2960 macb_set_hwaddr +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xfe7dfbe5 macb_ethtool_ops +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x6a90780c macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x8b287d10 macvlan_start_xmit +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x9a279eb7 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xbce20c56 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xd5a382df macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvtap 0xb58a90fe macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x0dd061e8 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x17daa58b usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xa15e6f73 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xc4e51201 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x126ed00f cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x1b6f3dfc cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x1dc881a9 cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x2c064302 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x35ff1138 cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xa350843c cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xb57e9030 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xffc62103 cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x30f06f96 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x51610653 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x6c8a6224 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x751694b7 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xa1312a00 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xb1dea70e rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0304d669 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x13569e61 usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x15c7c1f7 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1c34c666 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x27236c76 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x29996142 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x32890fbb usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3869e613 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3c001245 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6431cfb4 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6bf37661 usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x75b42be1 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x940f461d usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x98640400 usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9e3637ae usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa19bdc39 usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xace1c2a3 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb07835ee usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb890bf8a usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbeb2355f usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc150785b usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcf3f71f4 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd59a283f usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd5be91d7 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xdb413cee usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xdffd8cd9 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe7800a75 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xed2c5f78 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf082222c usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf8aed7bc usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xfbf147e7 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xff174c0f usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x0818822f vxlan_src_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x8eca035e vxlan_xmit_skb +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x98a02586 vxlan_sock_add +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xac9bec13 vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xd61e2f68 vxlan_sock_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x0bcba0bc i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x0ff1b5c3 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x1fbd3bad i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x3d728085 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x61021076 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x7401018c i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x7daf8514 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8f9a4945 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x98e4430b i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa6d738c7 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xcc301494 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd168765d i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd4cf2afe i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xde51bcfa i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xed021408 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf9362e36 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x0e2f273d cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x61bbbaac cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xc6dd4718 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xe2cd2849 cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x0095c6c3 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x02275df2 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x03a75fbb lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x0ed65783 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x315e0bf5 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x350321e6 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x59906029 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x66d7d8e6 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x7bf940f4 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x9808a72a lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x9af3c21f lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xa1562b5b __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xcbd045c7 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xda92ee82 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe2ca3dcc lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xfa65d6f4 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x0c363122 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x6bdd14d8 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x844ea6df lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xb50715dd lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xb78025a8 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc8224d16 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 0xcd4e2c10 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xe71e89fe lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0x604fdfbe if_usb_reset_device +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0x68e2575c if_usb_prog_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x21e31575 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x7d98910f mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x87e22f74 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x89a2c21a mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa04461d8 mwifiex_deauthenticate +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa2bb64b0 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa94bff89 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xae26e38a mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xbd2395dc mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe3a0f5d9 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xf1ff5417 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xf8a346a9 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xf94dfab1 mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xfedeef18 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x13071b1b p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x317b88d3 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x69eccfff p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x9d60e3c8 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x9e268afd p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xc2ba525c p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xd17cabfb p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xd3c2b5ca p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xd8d5e8b9 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x02b7f63d rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x048b1c30 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x06846f6f rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0749821e rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0ae5332f rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x16476ce1 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1e9571a5 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x20867e6c rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3043b3d6 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x39817b63 rt2800_rt2x00debug +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3e8b2620 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x53a7efce rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x608a1bba rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x688d91aa rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6ce3fe46 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x78b70575 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7a3cbe51 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7e313991 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x825d5a9e rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x83f8045d rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa35301d0 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa8f68905 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xada30174 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb24182d1 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb4e7b054 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb8916297 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc164e1ef rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc3d65f7e rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc4c353f1 rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc8561aba rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xcf06c250 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd3795d95 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdbffc0ba rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xddd02acf rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe4ccddb4 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xebe8f73c rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf0516979 rt2800_get_tkip_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf9b3676a rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfd8edad2 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x075bc9f1 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0a90675b rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x134f5595 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x154405c2 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1c9f65ae rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1ed5d115 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x22dfaa96 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x255f6f15 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2e1d6866 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x345faeca rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3460b9a4 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x397891f5 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x39ed6201 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x41433d46 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5225c2d4 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x56eb14dd rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6d0a48f3 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7b2d6432 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x80522e81 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x884f95db rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x912ee962 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x92b6a5c6 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x94f967bd rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9749088b rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa09d78ea rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa6480c8d rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa6afce09 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa77592bd rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xae249f3f rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb0313f97 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb83b3075 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb88e4238 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc0d6a3fc rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc6d0e970 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcf61b802 rt2x00debug_dump_frame +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcfb772ed rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd0c30e39 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd11298c0 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd1969115 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd202ac07 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd43fcbd2 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd4eb6afd rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe2a92b8c rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe4b7946b rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe93c59f4 rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf9a70354 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfdff30a6 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x020d94a5 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x093c9d18 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x1babb07e rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3db9b6d6 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x55fd5037 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x5860446c rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x6049c8d7 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x65418144 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x79f480d2 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8af763fc rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8d8d4728 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8dc2e0fe rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xad748660 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb3cc3389 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc4e03575 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xcf7c9cf5 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2ee515df dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x761285f1 dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf853342f rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf9708973 dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x0b6a76a9 rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x241dedc1 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x2d882d91 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x3f100b14 rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x801fbaaf rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x81ce5706 rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x901c687d rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x95bfa38a rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x97d4b9ef rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xc35c07cd rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xc4d82e07 rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xdc41bcb3 read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xe6e233b3 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xe9e75f47 rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf18204db rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf7d0df46 rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf8c87338 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf8ff6add rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf96f291e rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xfaccb122 rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x1bd18fbc wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x86bded29 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x99dc4f4d wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0020e401 wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x021fc69a wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x03369732 wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0470e94c wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x05a5136c wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x05d4ab3a wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0aed64e2 wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0cab4680 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0f1712fd wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x11ce0f8b wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x15a95e4c wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3684de07 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x424b87d7 wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4c5203cf wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4e1cf1ef wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5028bc2d wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5560c585 wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x62671632 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x62ea0eea wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x659c2a29 wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7397e590 wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x807b9416 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x817f90e5 wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8d263bcf wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x90336d10 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x91da5146 wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x960188b4 wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xac9420fc wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xaf645445 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb1c76822 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb58bef2e wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb9ed718d wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xccc1dc50 wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xcd1a1b21 wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd2144ff7 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd4624cd4 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd4dc7846 wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdae121f5 wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdf21ed79 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe00c991e wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe62e1ce6 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe7821dc8 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x0196a5bb phy_destroy +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x05863b89 phy_put +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x09949469 devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x1bb99a3c devm_phy_put +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x353edd9a phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x37bcdf38 phy_pm_runtime_put +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x6a1a64dd phy_pm_runtime_get +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x7ed0c60a phy_get +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x8386a31e phy_create +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x83ef0f7b phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x949f9fe4 __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xa1719d50 devm_phy_destroy +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xadc7bfbe phy_power_on +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xb09b680b phy_power_off +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xc385ca3e phy_pm_runtime_allow +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xcb11a771 phy_exit +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xcd995e65 phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xd1562938 of_phy_provider_unregister +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xd9006947 __of_phy_provider_register +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xda87c038 of_phy_simple_xlate +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xdd0935f4 devm_phy_get +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xe27355f5 devm_phy_create +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xf41679b7 phy_init +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x353da548 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x8022f452 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xc3e49ffa pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x0159d3ee mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x1cf13717 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x597e227d mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x9d174897 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xce245813 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x253ab861 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x7e6c21c6 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x86b17891 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x9161f41b wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xf09ad981 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xf5750884 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x5867d2af wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x1d736b7c scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x238b7a52 scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x291eec07 scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x344fe874 scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x495039bb 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 0x7463d3e8 scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xa3290327 scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x04c33714 fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0ab5f650 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x1c50c2a7 fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x1de9ba20 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x1e8da69b fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x1f173322 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x2daf10a3 fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x2e558136 fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x2ed7c41a fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x39093796 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x3f6c9f3c fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x4413d6ac fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x8d8f3645 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x8db3d7bf fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x988cfaaa fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xef6efb77 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x1f12a175 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x2bc63241 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x69dd7d05 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xa345a89c iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xb9c01250 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xf094c22e iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x05adb4d0 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0bdc95dc iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x18c9fec3 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2fd5871e iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x30a24567 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x366155c2 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x380eb140 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x383c7574 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3e58ca7e iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x49826782 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x498cc195 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x49d1ada8 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4ac89a33 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x59102160 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5a86c77b __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5fc9db90 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x693d0909 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x74283ec8 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x832a9fd4 iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x85f0198b iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x872839f2 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x87b0efca iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8e5539cb iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8f4c733e iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9b854e34 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa82179ca iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa8b5e6cf iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa8c58282 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xade3f0a4 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb8737659 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd06ae0d6 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd0ebcddb iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd32dfdd7 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd44c78a1 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdfe6266c iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe271bb61 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe327feea iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe3c0c453 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe471901b iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf325032b iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf43a7fb2 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf4728412 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf9fe7314 iscsi_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfa0b76eb iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x088254ef iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x0eb017a4 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x110aaebe iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x340975ef iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x3a67d973 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x625648c4 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x626f4977 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6b8cc172 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x7a0c0c7b iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x7bdb0dae iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8e3cd796 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9e3f46eb iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa7a334a3 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xcf782ab1 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd919a580 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe0b14faf iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xfd1b5052 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x063b4bac sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0b76e0b9 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1a751dd7 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x20ad2241 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2b529e58 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2c25462f sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2c36c3b5 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3972930e sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3c363bb8 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4cc4543d sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x52b430cd sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x61dee45d sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x62278e62 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x64a13194 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6685edc1 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6b052c92 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x9148e43c sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x96a29878 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa1001492 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa998235a sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb13fef2e sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbc7c1cd5 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd5c2ecd9 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd5dafc31 sas_change_queue_type +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf4d162af sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x4ccd04bc scsi_tgt_it_nexus_create +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x7e727457 scsi_tgt_free_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x8f27d6d4 scsi_host_put_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x8f8b57b9 scsi_tgt_queue_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x96d0b2bc scsi_tgt_it_nexus_destroy +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xa65d6e44 scsi_tgt_tsk_mgmt_request +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xb0463252 scsi_tgt_alloc_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xc096107f scsi_host_get_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xce4ca026 scsi_tgt_cmd_to_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00162761 iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x04ee1909 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x05f6ec6f iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x13e8924f iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1477adc8 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1bc9eebc iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1e37f1e4 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1ecf0be4 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x22e14451 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x23aa4668 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2c345064 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x321f2239 iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3351c86a iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x47442bd5 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x47b9a9eb iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x47fca238 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x50fd6cb0 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x52949ec9 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x671b057d iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x691a145b iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6fcd4e3f iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7257d077 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x74ef3da9 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x753765f1 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x76d9b8a1 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x77d090e6 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9035761f iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x91e8a3df iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9be513d8 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb3e3cf2d iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb9ceab0b iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbbd6ec08 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc1af2b52 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc4b3ab9d iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc596faf0 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc6dc6378 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcdebf976 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd0e59dfe iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xeafd70c8 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xeb5d264a iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x329ec715 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x54921c9a sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x6549d6e9 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xb3171fa1 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 0xcffa2aff spi_populate_width_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x180e4eac srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x47594217 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x60482357 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x847e1986 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xa2f8b0f2 srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x04af3804 ufshcd_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x5c37dcf9 ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x8ab7cb8c ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x927c738a ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x94d5f35b ufshcd_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xbde15aeb ufshcd_init +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x376925b4 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x37dd956c spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x514058c7 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xcf6fbbe4 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xfd7c5707 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x0d95de99 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x50040f37 dw_spi_xfer_done +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x9594d047 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x9abf12af dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xf774a2b3 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x7db59734 ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0c2bd68b comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1ad0babe comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1bc7a56f comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x22a07d3d comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x22c9a91e comedi_buf_get +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x231dbe4b comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x25724dbb comedi_error +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2772cce5 comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x27a9a9b8 comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2d2a2072 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x380f8bbb comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4801c5f9 comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4e08cb9d comedi_buf_memcpy_to +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5071231d comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5be13e42 comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6257826b comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6a00e042 comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x736b001a comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7444b778 comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x81abd26d comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x83d5af71 comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa54dafda comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa5671eaa comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb3faa7a6 __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 0xbdbe75c6 range_unipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbe6384c8 comedi_buf_memcpy_from +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc5ba519f comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc792ef2a comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xce905c6d comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd180d28d comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdeb57e41 comedi_dev_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xeb365975 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xefc28e1d comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf02400cc comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf2244be6 comedi_buf_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/8255 0x20f9debe subdev_8255_init_irq +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/8255 0xe409d86d subdev_8255_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/8255 0xedb93a47 subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x0686592a amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x157b4ee1 amplc_dio200_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x7033dce5 amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_fc 0x2c359ac6 cfc_read_array_from_buffer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_fc 0x5df8e166 cfc_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_fc 0x811d2bcd cfc_write_array_to_buffer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x13064ec6 das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc 0x6d68f5b0 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x18682c89 ni_tio_winsn +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x39f3a094 ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x6459e590 ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x906fbc87 ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x9c080ee2 ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x9c50a4fa ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xa3fd50d5 ni_tio_rinsn +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xba3dbe10 ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x37b4cd90 comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x4dc1490e comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x9b86eb63 comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xa2ca42cd comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xa3bf7c92 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xd932c8e3 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xfb13a66b comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0x2206b003 dwc2_handle_common_intr +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0x60b8f5e4 dwc2_hcd_remove +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0x93c4d01d dwc2_hcd_init +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0xb05a818c dwc2_set_all_params +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x1a1b5249 oslec_flush +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x2feda75b oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x3227a28e oslec_snapshot +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x7dc9dddd oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xb2c66001 oslec_create +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xc8b5a524 oslec_free +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xd370f679 oslec_update +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x40f171b9 adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/rts5139/rts5139 0xbd5a0e51 rts5139_usb_ids +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x09b57e5b 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 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4449e1dd synth_buffer_clear +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4659d870 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4e050d6f 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 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xa70ea176 spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xad0962f3 spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb14e51c2 spk_var_store +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 0xb54910ff spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb6c27280 spk_synth_immediate +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 0xe939d820 synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xf880cb4a spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x09fa34c4 usbip_recv +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x0fb2f51e usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x33fe63e1 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x3d34ae86 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x40d9ff15 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x4419f6df usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x4bd4214a usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x4c4efc90 usbip_start_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x51ec0c2c sockfd_to_socket +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x76bd641f usbip_event_add +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x9b7e9510 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xaf4eec05 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xc857da96 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x118b8417 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0x66fed630 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xddd88b74 uio_event_notify +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xa5eeb7f3 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xd81488e9 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0731f902 usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x19ba4391 usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x326a99f3 usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x38e0ce5c usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3e4868c4 usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3eb5bde3 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4740b706 usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x50c90fc5 usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x525c873f usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5dea686c usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x648abe68 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6512300c usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x67fca1de usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x72cfe452 usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x78b06cac usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7c8edb5b usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x81ce8aec usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8aab236c usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8e37ec06 usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x96538ab0 usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa0db0e91 usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb1963c67 usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd4cd8d8e usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xed95d347 usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf2a889b5 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf7946e3b usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfe096e4c usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0x3d41946f gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0x8e27d6de gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0xf1981607 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0xfe07fc4c gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x0a5230df fsg_common_set_nluns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x141fce2a fsg_common_remove_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x16934a50 fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x1ccb58f7 fsg_common_set_num_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x2d10b6a7 fsg_common_create_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x51707c29 fsg_common_run_thread +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x6acb4179 fsg_common_set_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x7e26d4a5 fsg_common_set_sysfs +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x99023bfc fsg_common_put +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x9a0221c7 fsg_common_free_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x9dc025a5 fsg_common_free_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xa46e6443 fsg_common_get +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xbe940d56 fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xd3ae3b65 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xd468f882 fsg_common_set_ops +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xe4d1591e fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x0ba4644e ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x20a2b98f ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x01829f2f usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x1c06b226 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x34e012cd usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x445e0c6c usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x47a8de29 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xae51b514 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xcc982b41 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xf67a655f usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xf8e0d628 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-am335x-control 0xf1ca06a0 am335x_get_phy_control +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0xa62e5055 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x72afddea samsung_usbphy_set_isolation_4210 +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x798696e5 samsung_usbphy_parse_dt +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x8d8dc8c8 samsung_usbphy_cfg_sel +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x94a78a0c samsung_usbphy_set_type +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x9828172f samsung_usbphy_rate_to_clksel_4x12 +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0xba140214 samsung_usbphy_rate_to_clksel_64xx +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0xe42c412a samsung_usbphy_get_refclk_freq +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x05a45662 usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0b6b8165 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1190c2ad usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3000a13e usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x30f1cc91 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x357dc4f9 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4531d487 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x548c8ae4 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x668f3d85 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6851c00a usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x68784636 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x71923a99 usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x81b1bc63 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8b815e11 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa773cec5 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb0e5548d usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb65a21df usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc78c8916 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe71de3ac usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xeb7e662c usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf6b110ab usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf9334bfa usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x21695c42 vfio_device_get_from_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x31ac3fc0 vfio_del_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x95258207 vfio_device_data +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x969c73d9 vfio_device_put +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xb5afa4c8 vfio_group_get_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc012014d vfio_register_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc4913442 vfio_group_put_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xd2e1bfe1 vfio_add_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xf618d32f vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x07f108e3 vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0a375099 vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2502c203 vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x29a2a083 vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2bbc30a7 vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3290e8ab vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x32bcc5e8 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3f30682e vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4d038ce2 vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4f32b74f vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5f315a54 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6b6aa03e vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6bab9044 vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7d480dff vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7d6f1cba vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8099d57b vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8eb4df6c vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x99532585 vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb5e58221 vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb930082d vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc0b79dcd vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc927138e vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xcb7c9897 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd213b4a5 vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd30bbd10 vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd392084d vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd40d4c04 vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xdebae3ac vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe0f2608d vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf878f210 vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x26598ecc auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x2f5a599e auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x337038eb auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x477fc1b8 auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x5a01b50a auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xbc34e365 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xbc40f730 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xbe737462 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xe215ad96 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xfa1875b9 auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x19d81a04 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x327bc76e ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x4bfefd68 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x76e53b69 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x9c0a4633 ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xcea619e8 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xda439871 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0x583458ca fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0xa17b4416 fb_sys_read +EXPORT_SYMBOL_GPL drivers/w1/wire 0x20b3703d w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x2cfd5512 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x3bd188ae w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x45bf8b49 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x5223b451 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0x78380850 w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x9ca5c8ab w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xb5e4a85a w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xb76c60ec w1_next_pullup +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x58ac0033 dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xb8daf49f 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 0xf3417613 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x0cf94754 locks_start_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x19cfe1e8 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x23c9a3de locks_in_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x4d051382 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x65c893a0 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x8e44c388 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x994838e2 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xb20520bc nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xb228d411 lockd_down +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00410317 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00492436 nfs_put_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00f2bd92 nfs_generic_pagein +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x01020d32 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x033831da nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x073b9212 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0949680e nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0d4a0ace nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x10643e39 nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x107bb769 nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x11ba07da nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1350bdc7 nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x154551e4 nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x154e5017 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x17e99efd nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1893a1eb nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x19665d7d nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1ccfe686 nfs_writedata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x209b509c nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x20b21833 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x20d183b4 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x21fb9b5d nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26ff08a3 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2840072a nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2852d91a nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x28545fb1 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2a5aac44 nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2b683497 nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2c7db79e nfs_writehdr_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x30484905 nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x306c83cc nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x33b92ae8 nfs_pageio_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x38056b55 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x388e7057 nfs_readdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3b36bf37 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3c3031a9 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca59df2 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3eda8215 nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x455bfcbe nfs_readhdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4848e7cf nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x49ce31b7 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x50134be2 nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5148504c nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51da8ed5 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5220ac77 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x52e60fe4 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5419e719 nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x559ad81a nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x567b8ea3 nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5a026f0d nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5b2047ff nfs_writehdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5f088882 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x60c234cf nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x658b0f34 nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6b33cfa7 nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6c9e383b nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6d6a206b nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6e1144ad nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6e2b143f nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6eb9e9e5 nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x766e722f nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7dbd2419 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8036b551 nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x80e9e636 nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x81b8d1c3 nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x86ae5087 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x874e9c1f nfs_initiate_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8770de69 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x877ccd36 nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x89bc5a64 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8b3d3158 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8dc1053a nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8ddaa77d nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8e666857 nfs_set_sb_security +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 0x95d12501 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x99e685cd nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9c244294 nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa2b5e211 nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa439ec22 nfs_generic_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa6ffee71 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa81eea03 nfs_commitdata_release +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 0xa9635332 nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa9a8b1a0 nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaaa14361 nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xadf0b38a nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xae073d13 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb08c9fd8 nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb0c025ef nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb0d07af7 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb201bb2a nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb45bf76f nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbb9bf5f3 nfs_initiate_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbbff59c5 nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbfc43401 nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc00a31a6 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc0b2a35f nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc1741201 nfs_file_splice_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc1ed6426 nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc27d68f2 nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc42992c3 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5608152 nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xca77e8f2 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcad243ff nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xccd9adfd nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xce9f513c nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd6864766 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd6da4b91 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd6e95e79 nfs_pageio_add_request +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd803b3bf nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd9d3ca5e nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xda0b0895 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xda7ed47a nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdf642a26 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdffa193b nfs_setlease +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe5f4e3e2 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe666f564 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xea7262b0 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeb2449e0 get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xedc7b1d7 nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xee7c98de nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeea38f95 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xef0d6d93 nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf107b16a nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf1372f22 nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf1acf24f nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf559c6c8 nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf9ed04d2 nfs_umount_begin +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 0xfebee4bf nfs_readhdr_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xffad9a86 nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0350edf8 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x059e1c02 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0a98cdf9 nfs4_set_rw_stateid +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 0x1edf98ed pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x28561537 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2876cf42 nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x314dfc46 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x39da51ff pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3ee101e9 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x40a3b4b1 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4bd493e0 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x56a4bc17 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x59d8b3c1 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5be6330d pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5bfc81da pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6055591e pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x665fa50e __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x676ba72a pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x689c3f80 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x75f49254 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7b049886 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7d81e3fb pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7f934f18 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x97b098ba nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9dc22c06 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9f5cdbc4 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa2c26763 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa50268e4 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xaa4cd52c pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xacccd2c5 nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb2c48aea nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb544ad84 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb57aa94d nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd24b420a nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd60bf61e nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd9076a59 nfs4_proc_getdevicelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdb813e84 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe22a7d12 pnfs_readhdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe46c451e pnfs_writehdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe9bf6774 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xebc9aedf nfs4_insert_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x44b5432c nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x4efb23fe nfsacl_encode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x05a74799 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x09cf780f o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x11fa4f8d 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 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x40eb90c5 o2hb_setup_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 0x95d18d14 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x9ee7f2db o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa0723c5b o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa82a8645 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa9f5379a o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbaeb4700 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc3679d7b o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x0008ee6a dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x08975d97 dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x10a3da18 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x574d8a95 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 0xa81ff067 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/dlm/ocfs2_dlm 0xff99ed1d dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x025e2d69 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0562c415 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0b1d4161 ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x16b2e575 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x5469ce31 ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x7083dbd5 ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x89502fe7 ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x91a73ca9 ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xaea25544 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xb4bd060c ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xdc823ea4 ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe2bd47db ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe417d940 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x353e85e8 notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xef6976aa notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x021957e1 raid6_datap_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x05513b71 raid6_call +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x0f8a2742 raid6_2data_recov +EXPORT_SYMBOL_GPL net/802/garp 0x1f338594 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x4ba10104 garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0x6a4bf0a2 garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x94089e61 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0xbaf69dcf garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xf5b44c35 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0x2089dba5 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x2f37f77b mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x688682aa mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0x6c1842f9 mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0xab87c06d mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xb9922363 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/stp 0xc5419f50 stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0xcdbcec71 stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0x75bf8715 p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/9p/9pnet 0xcf93ad4b 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 0xe645f51f ax25_register_pid +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x0cd44452 bt_debugfs +EXPORT_SYMBOL_GPL net/dccp/dccp 0x02f5c31e dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x06acd411 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x09a123b7 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0dcd3bc9 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x121767aa dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x12995e61 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0x151de6a6 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x168bbe74 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x189ee4b2 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1902772f dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x330a18ec dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x38c6c9ab dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4d4fae48 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4e1c7d74 dccp_insert_option_elapsed_time +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x534b1567 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x55b66289 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59a921cc dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6ac83df7 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7745322e dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7a49fba7 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7a736a09 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7dd963a5 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8b6a43e8 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8db1b4bf dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x95f8bedf dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0xae0df4a0 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xaf7fe76c dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc121193b dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd7d8b79c dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe0a497a8 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe3464492 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe5b23669 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe7df4962 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe9f03395 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf29231cb dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf3017e21 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x1dd802ce dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x4dc8287e dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x7268c2ad dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x86092ed6 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x9fe44489 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xef60541a dccp_v4_connect +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x76d9bdcb unregister_switch_driver +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xe909fb2b register_switch_driver +EXPORT_SYMBOL_GPL net/ipv4/gre 0x432ee8f8 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x6f12772a gre_cisco_unregister +EXPORT_SYMBOL_GPL net/ipv4/gre 0x70e27709 gre_cisco_register +EXPORT_SYMBOL_GPL net/ipv4/gre 0xa591be75 gre_build_header +EXPORT_SYMBOL_GPL net/ipv4/gre 0xd05b7d74 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x0f787824 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x72b4a9b2 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x7ed12fd3 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xc3d81006 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xd97bedf0 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xe8870f40 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x03de07f2 ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x214656d7 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x38bb023f ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x3c17d1a2 ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x567b5733 ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x7d2dd0b0 ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xa4c9dc7f ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xb0cfa243 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xb2e9cb3b ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xb651d9eb ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xc07088dd ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xcc1c49f2 ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xda45fa31 ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf5b30416 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x7d32f136 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x38b72567 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0x6d40a921 need_ipv4_conntrack +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x3a0d8798 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x61232703 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x724d92cb tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xc4dec89f tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xece75e7e tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xf0d27309 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/xfrm4_mode_tunnel 0x519e980f xfrm4_mode_tunnel_input_deregister +EXPORT_SYMBOL_GPL net/ipv4/xfrm4_mode_tunnel 0x7c767f11 xfrm4_mode_tunnel_input_register +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x144a56b0 ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x45dd09c6 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x69be16d7 ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x8506d1f6 ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xdb2d047c ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0xade115b3 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 0x7546aafa nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/xfrm6_mode_tunnel 0x7211e336 xfrm6_mode_tunnel_input_register +EXPORT_SYMBOL_GPL net/ipv6/xfrm6_mode_tunnel 0x72e2fb62 xfrm6_mode_tunnel_input_deregister +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x1b781190 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x20369bce l2tp_tunnel_sock_lookup +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x31b14904 l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3bff4b06 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x5ab9b843 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x5c6389e3 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6c88d03e l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x8107a073 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x8a09366d l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9d9e50e7 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xae956888 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc9275174 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd6ed2629 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe0b16167 __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe1c50ec3 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe6619247 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf62a1803 l2tp_tunnel_sock_put +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0xc3989229 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x229955ea ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x2bde171b ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3663a36d ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x37023144 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3f7faa1a ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x4bf42798 ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5d38f601 ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x606327c4 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x6742a5f3 ieee80211_iterate_active_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x7403734c ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8fbede1a ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x9e70b7f8 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xafe0f9de ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xbcb1f934 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf1a9f8fe ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x117c5d4a ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x273f5ec0 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x36227a6d ip_set_nfnl_get +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x40bc3a04 ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x4652c4d4 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x4819f193 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x483cd942 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x56fc96de ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x5e26fdc1 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 0x7856c678 ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x867d1eb0 ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x981df456 ip_set_get_byname +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 0xa86ef486 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xccfc7149 ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xde6b950e ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xdff81747 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xef13ebbe ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x1ddf34ec unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xae0bb147 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xb3ced9e6 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xf259bebd register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x01f84db5 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x07fec62f nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0d7cf1b4 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x119e7f8b nf_nat_seq_adjust_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1384ae34 nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1f8e4d2f __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2120e5dc nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x24490bfc __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x24ee53e6 nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x26e790db nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x29009ad2 nf_conntrack_flush_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x325d2f12 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3343a6db nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x347fbaac nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x35c8a4ad nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x36784627 nf_ct_l3proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x36a6a370 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3b6fa369 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x414c0ce5 nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4430dd4b nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x44c28224 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x44f45cd9 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x45439f05 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x45f837eb nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x472b2868 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x53bdcf50 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5e61a384 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x64f0d84a __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x657a408b nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6784dfdf nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x69a6c3ff nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6b4b5f1e nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6be2a26b nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6d2be548 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6ea49479 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6fb31aa8 nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x70776425 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x72071977 nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78ed0dbe nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7c0c1b3e nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7dcf9682 nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x89428571 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8a917b0c nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8b15d5f1 nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ba6ede5 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8d214302 nf_conntrack_tmpl_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8d2b0d37 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90d09c0b nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9166d2b4 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x91ab4133 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x99cf8fa9 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9de34b40 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa258e798 nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaa578724 nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab910344 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb23f3373 nf_conntrack_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb69fb4c0 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb79b79a0 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbb334d32 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbb74e7f3 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbe8fb3d2 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbec30fb0 nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbfddf929 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18020cf nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc2d70b8d nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd09551dd __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd1b814a8 nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd3a5f6e3 __nf_conntrack_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd7d5d361 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd8471eb2 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdf35dfd9 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe0847c43 nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe30c40a4 nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xea3d2dc5 nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeff12ea6 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf2f3b5b5 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf5314fcc nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf6b7cfb8 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf838c75c nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xffdbf752 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x77cfc0a1 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x62942413 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0xb66f313f nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x14c5bd99 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x3fcc3a67 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x68dd572e nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x760ef9eb nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x9fe713d2 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xa481d1af set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xb3ef0fe2 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xc3483334 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xcb07c3d9 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xceff09c4 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x8f29f5e6 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x1ffa4fee nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x338e8488 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x36088ee6 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x714f2a90 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x0c738a23 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xb201f574 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x03b0e7e7 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x17025d95 nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x69c1b498 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x73267a2e ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xa3c5d426 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xf8353c03 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xfed7436b ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x3485bb86 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0xf2de5751 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x030d43ad nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x08df5ffb 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 0x1c332fa5 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x51311676 __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x64be9ac9 nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x856bbec8 nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x8b15b8b1 nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x9426c590 nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x11a006b5 synproxy_check_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x8841d39b synproxy_build_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x90298227 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb42e336a synproxy_options_size +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb8fc32f3 synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xc7355e6e synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xef7db50c synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0195e32a nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0fda3c99 nft_validate_output_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x36e6dc1c nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3d49dab7 nft_validate_input_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x40e66382 nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5822304d nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5a9dcd18 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5aaf8ab6 nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6737bf39 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x86eb5ed5 nft_validate_data_load +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x94e74b61 nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x9c78d43a nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x9eb06624 nft_do_chain_pktinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb4c7621b nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe3bf43a9 nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x0a80ae8d nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x0ee93244 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x11206858 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x66af43bf nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x7ef1afc6 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xa82132d4 nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xf58a813e nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xfcdf647c nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x58262283 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x0297cbe3 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x0fb44f5c xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x223e3467 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x24c8e482 xt_copy_counters_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x3925bf69 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x3e460e23 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x4e25ea82 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x54038dd8 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x791966d9 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x989662c6 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa7c19f49 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd0472fc1 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf851b723 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xfae61d30 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 0x6035b4ff nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xd708ded9 nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xfb6311dc nci_spi_send +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x257973a2 rds_send_drop_acked +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 0x3691106f rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x3ce73562 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x3fe185e5 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x4151b016 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x41dcf370 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x5a59c1ac rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x602b57eb rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x6138c687 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x829c0780 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x8aad278a rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0x8ee93e30 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x915ec022 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x949ccd1d rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x957a8ec3 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x96fafe85 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xa8bcca41 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0xab9c2499 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xbd260e86 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 0xd0d58c80 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0xd90325e9 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0xddb49e2f rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0xf4988512 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x4ef85992 rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x5cc9b3cd 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 0x2ebb001b gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x412eded0 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 0xf8508d15 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00a711dc sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00b88068 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x03136b94 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0397e88b csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x04306a06 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x04894d6d rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x053e44d7 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05c370b8 unix_domain_find +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 0x07eef02d svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0a3d9a12 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0af39410 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0bbe123c xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0bcbf233 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0dd7f64d cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0e12434f xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0e663c8a svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0ed08548 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f534cd8 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f9fa132 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x12bd79e3 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x12c586c5 rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1492f5c6 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1640883c rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b1c7cce svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1bedd9c8 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1cb447f3 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1cf83fab cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e7cb027 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f35b13c rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x206f9e21 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x207afaf5 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2111c4fe xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x21d7f4af rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x225b0e91 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x23e5b846 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2506dee4 rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x266573e4 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2737718d rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2750ed01 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2b230535 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2b56eb04 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2b9d2a75 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2bcd45d2 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2bdbe447 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d4e114a rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e3b70c9 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2ebc9fbc xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f00b5d5 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f6aea38 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f8ebbe0 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x342afb5f svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x34957132 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x36da74e5 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x395a3c0f svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3ad35d4e rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c5bfa8a svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3e06f218 rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3fdbd813 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x41397cc7 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x46184203 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4c9553cc xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d3d7c07 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d6535a0 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4e37f2df xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4eddb69c rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4f7d1807 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x526f6119 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5549971b svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x57c936ba xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x57deef01 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x586a547e rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5e244d1a rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5edaa88a rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5f102f22 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5fb1f35c xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5fbb2306 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60259540 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x614a1166 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x63bc95df xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x654cb4b4 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65b17b93 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x665510aa rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6661c2b7 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x668cae73 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x68dd5846 svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x693d228f xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6b758c0a xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x702a8fb5 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x722380a1 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x773d606a xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c180bce svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7cf096d7 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ea300ff rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80a8fb9a rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x845e7de5 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x85aa123c rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x876a3a9d xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x88b2212d rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x89c30d3c rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8b3bc73f rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d6abc14 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e81a10c svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8eee21ba rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8fadacc1 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x90d10b2d rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x91c078f5 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9279788b cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x92973546 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x932b251b xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x959c7f7f xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x973d3a18 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x99650f0e rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c8d2371 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c953a38 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d5b2d47 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9f903add rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9fe7cd6b rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa377442b xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa755cb9f rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa77e8332 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa8ece777 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9194ea0 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaaf19c8b rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xae1972a5 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xae3647d1 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb042e1fe rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb1301843 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb5cf430f svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb78a718d sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9d62798 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9f7d4c5 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbbe15caf xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbc77befe cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbd171241 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbfe4b428 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbfec8d2b rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc0f07166 svc_sock_update_bufs +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 0xc4a68d28 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc53052e4 rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc5b54ca8 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc6b8d9a7 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc705b7d1 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc79a8cc3 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc821ddfa xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xccbb28ea xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcd5c40ee svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf0e8fa8 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf7a7b73 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd0a91ec4 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd0f3078f svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd26b64ae rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd2b5a8e7 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd3e16925 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd68423c6 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd9fba853 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda456a89 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdb52c475 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd41e856 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xde6fa38a svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdfce653d rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe08f0d62 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe0e19ddd rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe0e2a99a rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe7456d70 xs_swapper +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe95361bf xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xea2148e1 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xed51128b read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xed962ae6 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedf8a6ed sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf09b3b33 gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf0c41487 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf0ff278f auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf1598eda xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf26462d3 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf2e211ca rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf2f21d7c svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf603fcbe bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf67c9ab6 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf74aee35 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf789a72a _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf96849b1 rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb0c77b6 rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb5e3a4a xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfbf9ad51 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfee3f57c xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xff26c6ed rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfff94be1 svc_exit_thread +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 0x3d8e681b vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x43339e83 vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x6d75f8f9 vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x74e91915 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x751ff010 vsock_addr_unbind +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7a10de59 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x90e18084 vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x978f5e66 __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xa017d93c vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc0d4a130 vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xcc51469c vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd4035117 vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe0e8996b __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe4e51549 vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xeea16669 vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf593c40a vsock_pending_work +EXPORT_SYMBOL_GPL net/wimax/wimax 0x16deded3 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x33df7fea wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x41ad53b1 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x497c3503 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x6057a609 wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x68915bf2 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x6d176bbc wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x766ab344 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x8d55e0ec wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0x97e61c8b wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x9c1d16d9 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc7da1f3c wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0xce4045f4 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x0d5a7a47 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x2a642086 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x2eeef018 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x3404cf3e cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x4369fd54 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x4725915d cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x547e0bc4 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x5a4a7e8e cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x5cb0711b cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x9a61af6a cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xae78cd4f cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00778770 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x056bb269 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0a575945 xfrm_count_pfkey_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0b9e5852 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x74e1a843 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7c30b8c7 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x92dbc6c1 xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xbc8b0f41 xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xce7a55c1 xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xe122af95 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x19000c8b ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xb1b38ca8 ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xbe49dd4b ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xbfbfdca7 ipcomp_input +EXPORT_SYMBOL_GPL sound/soc/atmel/snd-soc-atmel-pcm 0x042ab61a atmel_pcm_new +EXPORT_SYMBOL_GPL sound/soc/atmel/snd-soc-atmel-pcm 0x0b2c414c atmel_pcm_free +EXPORT_SYMBOL_GPL sound/soc/atmel/snd-soc-atmel-pcm 0xc7fb5e5d atmel_pcm_mmap +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x00000000 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x00000000 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x000d4da5 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x0011caf4 fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0x001c4b6d __clk_register +EXPORT_SYMBOL_GPL vmlinux 0x00632780 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x0070fd38 dev_pm_opp_find_freq_exact +EXPORT_SYMBOL_GPL vmlinux 0x007e8ce8 dev_pm_opp_free_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x00a9e164 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x00c4dc87 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x00db7a86 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x0112c9e0 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x0133ebce __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0148adb6 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x01637888 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x016f398c exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x0190d09e kobj_completion_del_and_wait +EXPORT_SYMBOL_GPL vmlinux 0x01c6cb0c cpu_cluster_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x024a0218 lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x0262b6ec ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL vmlinux 0x02728586 nl_table +EXPORT_SYMBOL_GPL vmlinux 0x02886d0d snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL vmlinux 0x02a60d30 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0x02cdd629 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x02d453a2 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0x02ef0089 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL vmlinux 0x031ef825 cgroup_load_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x0345555a ioremap_page_range +EXPORT_SYMBOL_GPL vmlinux 0x035603bc crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x035f8002 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x0384caad crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x038502b3 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x03ab14f9 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x03bf1d5e gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03f65576 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x0402b504 __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x04145249 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x043c9806 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x04486e88 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x045b452f of_clk_get_parent_count +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x04673224 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x046c7ea9 subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x048a1c46 arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x049d951c cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04ce8d96 sdhci_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0x04d0cee3 devm_snd_soc_register_component +EXPORT_SYMBOL_GPL vmlinux 0x04e1b99f snd_pcm_std_chmaps +EXPORT_SYMBOL_GPL vmlinux 0x04eb62d4 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0509be1f crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x05426049 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x05544e2e snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL vmlinux 0x0574068b cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05982a9c mdio_mux_init +EXPORT_SYMBOL_GPL vmlinux 0x05d629b3 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x05e9729b __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x060263a4 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x0614d425 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x0634a4d9 scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x063f2435 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x06438115 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x067e0a55 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x06905f01 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x06d549e6 pinctrl_free_gpio +EXPORT_SYMBOL_GPL vmlinux 0x06dceffb snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL vmlinux 0x06fe9e6d css_next_child +EXPORT_SYMBOL_GPL vmlinux 0x0718746d usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x0721e0c8 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x072b85c2 iommu_domain_has_cap +EXPORT_SYMBOL_GPL vmlinux 0x07455fa9 srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x074d39ac bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x074f094d ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0x0755b3ea usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b4b1eb ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07ed48c3 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x07f10f04 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x080b1e5b pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0x0821984d regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x082617b6 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x08290fee usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x08428d80 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x086207b6 PageHeadHuge +EXPORT_SYMBOL_GPL vmlinux 0x086a42af usb_stor_disconnect +EXPORT_SYMBOL_GPL vmlinux 0x087e988f usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x088c09b1 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x0899f091 hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x089bb653 da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x08b58dda iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0x08c74376 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x08e2179f usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x08fc323a tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x09354743 tpm_read +EXPORT_SYMBOL_GPL vmlinux 0x093d467a tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x093d9405 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x09469482 kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x09650064 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x0986a201 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x09996bf7 devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x09a2ee88 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL vmlinux 0x09da7f4b pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0x09e7fc41 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x09e913c1 snd_pcm_alt_chmaps +EXPORT_SYMBOL_GPL vmlinux 0x09f3aec2 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x09fa914b mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x0a0cbef0 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x0a1d0a61 dm_underlying_device_busy +EXPORT_SYMBOL_GPL vmlinux 0x0a256ba5 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x0a3e5652 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x0a6dc576 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x0a9fd3c5 gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x0aa67ba7 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x0aa80740 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x0aaa3780 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x0abf5d29 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0acc8534 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x0afd4610 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b30d2af unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x0b31aec4 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x0b401306 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x0b59390b __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0b79965a rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x0b85ed03 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0x0b8bf21f __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0x0b935274 kvm_vcpu_kick +EXPORT_SYMBOL_GPL vmlinux 0x0ba8374b __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x0bae62b1 ktime_get_monotonic_offset +EXPORT_SYMBOL_GPL vmlinux 0x0bbae511 return_address +EXPORT_SYMBOL_GPL vmlinux 0x0bc54267 thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0x0bcf0086 snd_compress_deregister +EXPORT_SYMBOL_GPL vmlinux 0x0bd1683f regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x0be52ade default_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x0be780e9 snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0bfb4ac0 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c3782ec usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL vmlinux 0x0c5334f7 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0x0c92f186 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0c94a1e8 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x0c9fa878 device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x0cb05a9c extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cc508b8 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x0cc5cf7b da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x0cce0227 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x0cdbb660 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0x0cdbdb4f netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0x0cf5b1a5 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0d013b62 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0x0d091291 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x0d2260e3 md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x0d2851d8 devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x0d2d91a0 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x0d5d93aa regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0x0d6dd02e __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x0d72d5ed snd_soc_remove_platform +EXPORT_SYMBOL_GPL vmlinux 0x0d9d852e subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x0db78037 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0x0dbb784e mtd_panic_write +EXPORT_SYMBOL_GPL vmlinux 0x0dbd0e20 of_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x0dccc38a ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x0dcd2f82 tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0df652ae snd_soc_bytes_get +EXPORT_SYMBOL_GPL vmlinux 0x0e148dc3 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x0e6e03df debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x0e93f145 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0ea65ba5 kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL vmlinux 0x0ecdf814 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x0ed36b2f call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x0ed9302e percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0x0edf129f tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x0eeb00e9 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x0efc0ec0 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x0f126485 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x0f147f73 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x0f15681d led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0x0f6f684e blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f757c72 ahci_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x0f86c9ef mark_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x0f881f21 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x0fb897f6 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0x0fba6940 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x0fc01e9f static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x0fc3bd35 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x0fc91be2 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x0fe112dc of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x0fe65e8c synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x1009add4 pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x1026c1d9 srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x1047a84b snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL vmlinux 0x1065b71b con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x10bbad0e security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x10eb0efb ping_err +EXPORT_SYMBOL_GPL vmlinux 0x10f9d685 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x10fd474b crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x1107512a relay_close +EXPORT_SYMBOL_GPL vmlinux 0x1122bc33 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0x112fdd4b __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x11345b71 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x113b4d94 ahci_shost_attrs +EXPORT_SYMBOL_GPL vmlinux 0x116151d5 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x11869166 regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x1194ae64 ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0x119b3e1e blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x11f1fa16 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL vmlinux 0x11f92be8 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x11ff112d sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x121e6126 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x121ed3f3 add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0x122a3634 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x122b9abd relay_open +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 0x12a3186f __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x12bf3334 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x13162783 snd_soc_register_codec +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x1337c067 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x133c6753 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x133d1b61 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x136a32a9 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x136b0e99 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x138b9349 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x13921363 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13b89dee pinctrl_request_gpio +EXPORT_SYMBOL_GPL vmlinux 0x13d504f8 da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0x1402d6c7 aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x1424c74e tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x142a8be4 of_clk_get_parent_name +EXPORT_SYMBOL_GPL vmlinux 0x142c9017 extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0x14577148 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x1459e530 ahci_start_engine +EXPORT_SYMBOL_GPL vmlinux 0x145bd359 of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0x145e5d1e irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x14630d6a register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x148162b7 hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x14a50cff dm_requeue_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0x14b37a52 pinctrl_pm_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0x14d024d9 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x14ea4aea nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x14f2e99a mtd_read_oob +EXPORT_SYMBOL_GPL vmlinux 0x14f875ce devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x151b9f53 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x1521e52f usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x1525f36d __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x152d28c3 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x1547873a get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0x155f1512 dev_pm_opp_init_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0x157f4206 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x1587d978 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x16beefaf skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x16cec4f8 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x16d29bd7 iommu_map +EXPORT_SYMBOL_GPL vmlinux 0x170e026f vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x170e9bea imx_usbmisc_init +EXPORT_SYMBOL_GPL vmlinux 0x172b45ad cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x172f887c hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x1743476f gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x174b6132 serial8250_tx_dma +EXPORT_SYMBOL_GPL vmlinux 0x1753a32f hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x177d095b __class_register +EXPORT_SYMBOL_GPL vmlinux 0x17b9055d blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x17c6d6fe snd_soc_platform_trigger +EXPORT_SYMBOL_GPL vmlinux 0x17ee905b adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x17f20447 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x17f80573 reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x1846f422 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x18a27f34 jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0x18bc2df4 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x18bd78c2 vtime_guest_exit +EXPORT_SYMBOL_GPL vmlinux 0x18cdbdbc crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x19482bbb snd_compress_new +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x195b2145 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0x1974a88d ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x1981740e scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x199c6948 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19a64919 snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0x19b384a5 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19b7062d pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x19c06b88 snd_soc_test_bits +EXPORT_SYMBOL_GPL vmlinux 0x19c4f551 dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x1a082d69 max77693_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x1a0aa110 snd_soc_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x1a323362 __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x1a380895 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x1a518584 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x1a5b9bef of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x1a6dec64 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1ad83009 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x1ae58319 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x1afb8cbf hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x1b3193ff gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x1b3261e0 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x1b4a0dc0 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x1b52db1c probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x1b7a1d9b devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0x1b7c801d tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x1b8822d8 pinctrl_gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1bb577bc devm_hwmon_device_register_with_groups +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 0x1bd06aab cpufreq_frequency_table_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x1beb67f1 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x1c1abe45 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x1c21e27d ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c6894e2 irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c9bfbff netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0x1ca47105 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x1cd535bd unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x1cd6c059 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL vmlinux 0x1cfe78d1 kvm_release_pfn_dirty +EXPORT_SYMBOL_GPL vmlinux 0x1d21843a add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL vmlinux 0x1d251b9f tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x1d2c0cab fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d5f93e2 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x1d6520a5 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x1d6e7605 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d813728 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x1d93b7ed inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x1dd64c53 regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0x1de054d5 of_clk_del_provider +EXPORT_SYMBOL_GPL vmlinux 0x1df438f4 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1dfbbea1 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x1e10b2fa list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x1e178548 snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL vmlinux 0x1e3a88fb trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e85060e br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x1e8fac8e wireless_nlevent_flush +EXPORT_SYMBOL_GPL vmlinux 0x1ea5776c snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL vmlinux 0x1eae4e30 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x1eb1594f gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x1eb90a00 dma_buf_export_named +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6035 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL vmlinux 0x1ec87022 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x1edcd9e6 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x1eeaf936 pinctrl_lookup_state +EXPORT_SYMBOL_GPL vmlinux 0x1f2d2358 fill_inquiry_response +EXPORT_SYMBOL_GPL vmlinux 0x1f2f1a37 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x1f37286e register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x1f7e84ee regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1f8e340a debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x1fce0bb8 sdhci_disable_irq_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x1fcece42 inet_twdr_twcal_tick +EXPORT_SYMBOL_GPL vmlinux 0x20011ef0 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x201d8ea3 encode_rs8 +EXPORT_SYMBOL_GPL vmlinux 0x2034b3eb regulator_set_optimum_mode +EXPORT_SYMBOL_GPL vmlinux 0x2046f857 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x2064b0c8 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL vmlinux 0x2083d8f6 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x20b172b2 snd_soc_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x20bc3470 orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x20c9a693 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL vmlinux 0x20e7d89f devres_find +EXPORT_SYMBOL_GPL vmlinux 0x20f6c82f snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL vmlinux 0x21195099 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x212d5bae gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21cf750b snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL vmlinux 0x21e8648e free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x21ed4e93 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x2206824f unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x2231e2ef attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x2231fa8b __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x225d749e rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x226a674d atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x226b81c5 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x22724e1b driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x227fbc03 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x22ae4044 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x22bd33e7 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x22c16ecb dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x22cf90b9 mtd_read +EXPORT_SYMBOL_GPL vmlinux 0x22e9cc73 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x22e9d952 tpm_register_hardware +EXPORT_SYMBOL_GPL vmlinux 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL vmlinux 0x23446c84 __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0x2344de1e tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x2352b9a9 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x23679939 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0x236904e2 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0x2374eeaf serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0x2375bbd7 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x2392bc6e pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x23a4ce3c skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x23efe8e0 usb_gadget_map_request +EXPORT_SYMBOL_GPL vmlinux 0x2447533c ktime_get_real +EXPORT_SYMBOL_GPL vmlinux 0x246db835 usb_stor_post_reset +EXPORT_SYMBOL_GPL vmlinux 0x246f30d0 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x2473c031 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x248477d6 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24ae5569 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x24c119e0 __tracepoint_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0x24e3e931 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x25254ec5 gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL vmlinux 0x2530daca invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL vmlinux 0x255159ee blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x2554448a sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x257bf89f dapm_mark_io_dirty +EXPORT_SYMBOL_GPL vmlinux 0x259e4a18 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x25baacbf ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x25f3cf12 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x26a38a41 regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x26a57401 crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x26adb815 thread_notify_head +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26badcaa devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x26bcf0ec snd_soc_get_volsw +EXPORT_SYMBOL_GPL vmlinux 0x26c547c0 bL_switcher_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26d5da4a ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0x26d85ea6 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x26f845e2 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x26fbfcac platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x26ff9d2d context_tracking_enabled +EXPORT_SYMBOL_GPL vmlinux 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL vmlinux 0x27143148 page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x271ba20b debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x2787db00 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x2793d85c iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0x27ba09b7 unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x27d74423 stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x28018b84 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x2819342f mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x286eb556 blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x287d0294 of_console_check +EXPORT_SYMBOL_GPL vmlinux 0x28852f7e devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x288c7ba9 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x28a82da4 snmp_mib_init +EXPORT_SYMBOL_GPL vmlinux 0x28a903c8 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0x28c22bb0 crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x28dfad74 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL vmlinux 0x28f19280 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x28f9c741 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x29047f1a __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x290da509 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x29292ee3 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL vmlinux 0x293f9fa9 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x29623633 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x29649472 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x29759185 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x29b56562 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL vmlinux 0x29d06d6f snd_soc_lookup_platform +EXPORT_SYMBOL_GPL vmlinux 0x29dd18dd crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x29fa419f decode_rs8 +EXPORT_SYMBOL_GPL vmlinux 0x2a0fdf76 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x2a23dd56 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x2a3b1a9f unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x2a504ad2 init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a97b684 devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2aa08401 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL vmlinux 0x2aa5c731 devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0x2ac131c3 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0x2ad1ece4 zs_get_total_size_bytes +EXPORT_SYMBOL_GPL vmlinux 0x2ad9d326 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x2b10f718 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x2b26d6f3 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x2b2c0b33 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x2b3d805b usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x2b557142 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x2b7a6de8 syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x2b9c6a79 irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2ba55031 _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0x2babe81f __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x2badbbb9 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x2bb2d2e5 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x2be9716a mtd_lock +EXPORT_SYMBOL_GPL vmlinux 0x2bfaef4e clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x2c0d7315 fuse_conn_kill +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c264ed9 pinctrl_pm_select_idle_state +EXPORT_SYMBOL_GPL vmlinux 0x2c44ce97 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x2c475a78 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0x2c501f9b dapm_clock_event +EXPORT_SYMBOL_GPL vmlinux 0x2c52f4d8 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2ca2a59a kvm_get_dirty_log +EXPORT_SYMBOL_GPL vmlinux 0x2ccfd168 kick_process +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2d0ddaa2 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x2d17a0e1 cgroup_taskset_size +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d3e174e get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d4ad8f8 pinctrl_get_group_pins +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d87ccfa ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x2d93e48d gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x2d98c996 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x2d9fdf23 mtd_unpoint +EXPORT_SYMBOL_GPL vmlinux 0x2e24e992 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e45e488 rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x2e52faeb blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x2e557d2b sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x2e7769b3 serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x2e9670c0 pl320_ipc_transmit +EXPORT_SYMBOL_GPL vmlinux 0x2e9d3bbc shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x2ea0fde4 snd_soc_cache_read +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ed69e1b blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x2ef6b5bf smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x2efb009a regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f464d3f ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x2fa71e7f regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0x2fa8d9da usb_stor_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x30084b2f inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x300d7e57 free_rs +EXPORT_SYMBOL_GPL vmlinux 0x3011c6e6 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0x3062f7cf mtd_table_mutex +EXPORT_SYMBOL_GPL vmlinux 0x308822ad devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x308b733a getboottime +EXPORT_SYMBOL_GPL vmlinux 0x30950a3f irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x30a4f4ca bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x30d16556 usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0x30e126c5 put_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x30f12845 tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0x30fb3c46 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0x31061da4 pinctrl_dev_get_name +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x31181df5 mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x3141478a vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x314b754b bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3150fa3f platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x31600c90 put_pid +EXPORT_SYMBOL_GPL vmlinux 0x31859993 of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0x318d6962 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x318d8dc2 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x31a820ed register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x31ab2a57 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x31ac2289 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x31be35d5 of_get_named_gen_pool +EXPORT_SYMBOL_GPL vmlinux 0x31bfc383 sysfs_get +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31deffce regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x31e1890b unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x320c98f9 extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3225cf47 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x3226660e __module_address +EXPORT_SYMBOL_GPL vmlinux 0x322f3511 __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0x324e3128 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x3256ca45 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x3279dd34 driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x32924a4d scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x329bbbde timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0x32b31a8c ktime_get_boottime +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32c496f1 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x32cb00e0 devm_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x32ec4b63 inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x32f23353 dev_get_gen_pool +EXPORT_SYMBOL_GPL vmlinux 0x32f2f9ce mmput +EXPORT_SYMBOL_GPL vmlinux 0x32fd447a monotonic_to_bootbased +EXPORT_SYMBOL_GPL vmlinux 0x3345878e inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x339da71b tpm_show_owned +EXPORT_SYMBOL_GPL vmlinux 0x33a94a45 of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x33ba0ced extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x33c143a8 split_page +EXPORT_SYMBOL_GPL vmlinux 0x33cde23c filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x34644314 balloon_devinfo_alloc +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x34b12a88 fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x34d59e84 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x34ddf121 platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x34fed004 kill_mtd_super +EXPORT_SYMBOL_GPL vmlinux 0x34ff85a4 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x351e6b5a edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x352e3ff3 __rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x354b52b8 devres_add +EXPORT_SYMBOL_GPL vmlinux 0x35573a07 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x35793c4a usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x3595b590 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x35b8eccd ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x35bb702a handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x35c21901 pinctrl_force_default +EXPORT_SYMBOL_GPL vmlinux 0x35c815f8 kvm_is_visible_gfn +EXPORT_SYMBOL_GPL vmlinux 0x35c844b0 tpm_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x35d07a16 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x35f10f43 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x35f165f1 devm_reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x35fb50ed power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x3637c6ae snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x37075518 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x371f366c usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL vmlinux 0x375a97ad ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x37763651 od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x37a948a8 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x37b69f07 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x37d62222 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x37eaa34a bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x38a9c2c7 input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x38c67bcb ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x38e32dae regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x38fed977 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x392d69ed dm_dispatch_request +EXPORT_SYMBOL_GPL vmlinux 0x392e9832 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x393fcf0d thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0x3952f702 regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x39583137 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x395b8e3e device_del +EXPORT_SYMBOL_GPL vmlinux 0x396b84b3 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL vmlinux 0x39864018 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x39b94b67 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x39dc6710 wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x3a087999 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a42be56 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3a4a074c platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a554851 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x3a5e633e virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0x3a72fbb7 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x3a73af1e eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x3a7428d7 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL vmlinux 0x3aaab7c9 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3acc5d7c irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ad82802 of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0x3af3fd70 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x3b180c8c led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3b19ee01 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x3b24f227 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x3b73fe74 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x3b873bf5 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x3b8a812d mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0x3b938177 get_device +EXPORT_SYMBOL_GPL vmlinux 0x3bacb8cd mtd_del_partition +EXPORT_SYMBOL_GPL vmlinux 0x3bbe7c73 gfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0x3bfd8848 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x3bfe562a wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x3c39c429 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x3c494c55 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x3c531425 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x3c6cc0c5 usb_stor_reset_resume +EXPORT_SYMBOL_GPL vmlinux 0x3c73b234 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x3c831441 arm_check_condition +EXPORT_SYMBOL_GPL vmlinux 0x3c8424a0 clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3c8d28cc of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x3ca17104 __snd_printk +EXPORT_SYMBOL_GPL vmlinux 0x3ccffec8 of_irq_parse_one +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3d29bb9d dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3d3207c4 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x3d33c132 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d41b4f9 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x3d63e9ed tpm_show_pcrs +EXPORT_SYMBOL_GPL vmlinux 0x3d797c39 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x3db87e2f scsi_mode_select +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 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3defedd9 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x3df10970 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3e07ba52 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x3e2d9dc3 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x3e2e543d cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x3e2fa31f wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3e452a00 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x3e45c331 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x3e59bb87 unregister_mtd_user +EXPORT_SYMBOL_GPL vmlinux 0x3e66d107 dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e7442dc kvm_release_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x3e943489 virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x3e971b8d regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x3ee069ae __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3ee64140 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f0208ae class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x3f0d0a1a regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0x3f61c2f3 regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3f620a84 disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x3f69c73a unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x3f6f409e css_rightmost_descendant +EXPORT_SYMBOL_GPL vmlinux 0x3f771829 sdhci_pltfm_free +EXPORT_SYMBOL_GPL vmlinux 0x3f9f1284 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x3fc1542b bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x4026867c task_current_syscall +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x40598f34 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x409a4364 spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0x409fc98c sata_async_notification +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 0x410ec4b1 sdhci_send_command +EXPORT_SYMBOL_GPL vmlinux 0x411ad751 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x416faf66 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x41828ad3 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x41928c88 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x41a5e55a dev_hard_start_xmit +EXPORT_SYMBOL_GPL vmlinux 0x41baf414 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x41bfbb40 usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x41d07531 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0x41d79e13 snd_soc_put_value_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x4207e040 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x42087551 swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x420ca256 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x4216865e snd_soc_register_platform +EXPORT_SYMBOL_GPL vmlinux 0x4227d315 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x426c0016 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x42805324 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x428c6dbc cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x42a77274 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x42c9d405 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x42ed14bd sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0x42ef462b sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x430e5257 of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0x431289dd digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x43166e83 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x43673a84 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x439974f0 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43b466b0 gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL vmlinux 0x43c8ba7a adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x43ec34ec snd_soc_dapm_get_value_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43fab9d3 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x44404f11 kdb_register_repeat +EXPORT_SYMBOL_GPL vmlinux 0x444f1735 cpu_pm_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x44533d2e evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x446b0742 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x446ed2e5 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x4475e427 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x44827569 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x44946d4f kvm_put_kvm +EXPORT_SYMBOL_GPL vmlinux 0x44b72fe0 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x44cc5aed md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x450c1038 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x454c15ae __smp_call_function_single +EXPORT_SYMBOL_GPL vmlinux 0x4554e6a0 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x45553b23 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x455a231c fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x457b77ca of_fixed_factor_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45d132b5 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x46066e5b perf_pmu_name +EXPORT_SYMBOL_GPL vmlinux 0x460accf1 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x460f7531 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x461484b4 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x464b1748 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x46b75ec8 regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0x46cf8d1e snd_soc_platform_write +EXPORT_SYMBOL_GPL vmlinux 0x46e3d1d3 snd_soc_jack_new +EXPORT_SYMBOL_GPL vmlinux 0x46ebdb92 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x470f001a i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x470fa426 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x473094b3 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x4750523e fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x47731ec1 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x477a6ec6 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x477ae556 snd_soc_limit_volume +EXPORT_SYMBOL_GPL vmlinux 0x477efcbd i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x47a3a4c4 gpio_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47c1002e ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x47d2b6c0 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x47e53aa1 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x47ea0c30 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x47f95de1 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x48252104 tpm_store_cancel +EXPORT_SYMBOL_GPL vmlinux 0x483b2081 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x48558c33 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL vmlinux 0x485dc05f crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x4873adf0 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x487bfdb9 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x489bafcb wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x489c64eb xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x48ba2763 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x48ca8947 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x48eab517 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x48ecb35e xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x4932e9b3 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x49340b0b bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0x49417412 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x495d21aa usb_alloc_streams +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 0x4993ba2a skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x49a45ac2 ahci_stop_engine +EXPORT_SYMBOL_GPL vmlinux 0x49b45564 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x49c2a5e0 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL vmlinux 0x4a2df14e serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x4a3f0f85 ahci_start_fis_rx +EXPORT_SYMBOL_GPL vmlinux 0x4a527132 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4ab1a16b usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x4ac4578f regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x4b0f2ce0 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x4b17b645 of_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x4b51d5d3 pin_is_valid +EXPORT_SYMBOL_GPL vmlinux 0x4b6b80b0 sec_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x4b6b95f3 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x4b6f7a74 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x4b919ca5 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x4ba2c69f dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x4bc62a81 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x4bebc268 pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x4bf5be93 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x4bff4b40 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x4c0e6a8d blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x4c2e1f24 clk_disable +EXPORT_SYMBOL_GPL vmlinux 0x4c44cd11 wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x4c478a4b swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x4c47ec15 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c77d740 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x4ca4c9df clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x4cb6957d sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x4d0558b8 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x4d094f8c inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0x4d1344d4 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x4d29e848 inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x4d34ad93 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x4d38f1e0 bL_switcher_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4d7a5e60 cgroup_taskset_next +EXPORT_SYMBOL_GPL vmlinux 0x4da5b4d1 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x4db4d833 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x4dbc056e module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x4dc715ef __mtd_next_device +EXPORT_SYMBOL_GPL vmlinux 0x4dd3e965 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e8c3e2a regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x4ec0838d __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x4ee4839b ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x4ef29549 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4efaa007 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0x4f020dee public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x4f2c5806 kvm_set_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x4f524926 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x4f6172ff crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0x4f62d507 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x4f6bfb24 snd_soc_cnew +EXPORT_SYMBOL_GPL vmlinux 0x4f98d766 cpu_pm_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4fa09a3d alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0x4fa5d204 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL vmlinux 0x4fc52e8d __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4ff126f5 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x5003721a snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0x500b51ef crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x5027ee8f ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5053e2a6 leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x50601122 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x5061b645 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL vmlinux 0x506691f1 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x506cc085 tracepoint_iter_stop +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50c89f23 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x50d1ef16 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x50d6db07 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x51074e5a blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x510a386c netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0x5114ee8e uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x511e44a3 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0x51239579 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x512cf16c wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x51490975 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x515b4a90 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0x516f7537 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x5189bc98 devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0x51a327a5 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x51a51d98 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x51bd7208 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL vmlinux 0x5200c3b4 usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x520438ea fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x520871ef virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x52212010 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x5229b034 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x523180e3 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x526c0687 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0x5272d8bc __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0x52959685 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x52a41251 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x52b1001f driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x52e20956 lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x52f4d949 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0x52f9433d ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL vmlinux 0x52fd62ca snd_soc_suspend +EXPORT_SYMBOL_GPL vmlinux 0x53485e78 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x53523f56 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x535e6d90 ahci_reset_em +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x5384a2f3 usb_stor_suspend +EXPORT_SYMBOL_GPL vmlinux 0x53857aa0 pwm_config +EXPORT_SYMBOL_GPL vmlinux 0x53931e32 kvm_vcpu_uninit +EXPORT_SYMBOL_GPL vmlinux 0x539d8c73 find_module +EXPORT_SYMBOL_GPL vmlinux 0x53b4a9a3 gpio_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x53bdd732 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x53cb4878 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x53cc3c8a usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL vmlinux 0x53de573d get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x53e3e5d4 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x5404b2fc usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x54129267 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x5414f0ac get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +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 0x5463751e usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x5469c583 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x54704c0e regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x5490fa5c cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54a37a2e crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x54bc2e64 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x54c53f4d spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x54d13d7f platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x54e46e17 dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x54eabe29 snd_soc_bytes_put +EXPORT_SYMBOL_GPL vmlinux 0x54f75c51 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x54f9458e device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x5522d36c spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5560ae09 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x55612ff0 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x55777e01 list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x5596b92a ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x55aae228 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x55b93755 platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x55bb3aa3 snd_soc_cache_write +EXPORT_SYMBOL_GPL vmlinux 0x55d4afc3 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x55f04c21 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x55f315b5 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x561e4b77 irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x5641485b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x564f1dca klist_add_after +EXPORT_SYMBOL_GPL vmlinux 0x56550864 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x566022ed thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5682f6e1 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x569001e9 regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x5691ad1f user_read +EXPORT_SYMBOL_GPL vmlinux 0x5692386f gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0x5692e939 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x56a78390 debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x56b63670 lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x56cc2c50 devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56e9103b cpu_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x56eaf6fe __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x56ed8a24 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x57421539 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57b4ee64 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0x57be4751 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x57ea8952 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0x580085ff inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x582be91b wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0x582d17e6 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x58743c07 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x587b9128 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x587f0316 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58af8067 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x58b57b6a securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x58cd667f spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0x58ecbed1 ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x5905943e usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x5931b458 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x5947abbe max77693_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x59533097 vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x598b30ec md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x59959d0a cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x59a6e91d clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x59af25fe ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x59b62b0e snd_soc_codec_volatile_register +EXPORT_SYMBOL_GPL vmlinux 0x59bc6b3f arm_iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x59d67e34 tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5a70e411 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a8f3b69 of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0x5abbc284 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x5ac64288 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x5b17db84 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x5b41e095 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x5b471fdb dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x5b4e379c of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0x5b4f38e6 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x5b623f76 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x5b8a432b power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x5b9958fd napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x5bb8e2fa usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x5bbb3691 usb_gadget_set_state +EXPORT_SYMBOL_GPL vmlinux 0x5bc365e9 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x5bc7ac95 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x5bd346a2 pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x5be8e155 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x5bfe33fe ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x5c0d9663 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x5c309d39 dapm_reg_event +EXPORT_SYMBOL_GPL vmlinux 0x5c5161f7 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x5c554ab0 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x5c757ca3 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x5c845c55 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x5c950a99 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x5c98c1e9 gpiochip_add_pingroup_range +EXPORT_SYMBOL_GPL vmlinux 0x5c99c20e tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5ce1577a device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x5d03bf75 device_reset +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d1c1bac blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x5d24e024 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x5d25d96c __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x5d519de8 of_init_opp_table +EXPORT_SYMBOL_GPL vmlinux 0x5d568a8e usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x5d574c35 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x5d812fea gpiochip_remove_pin_ranges +EXPORT_SYMBOL_GPL vmlinux 0x5d9138e6 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x5d94c6ea tpm_show_caps +EXPORT_SYMBOL_GPL vmlinux 0x5d950433 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5dbace50 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x5de82911 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x5e094a25 mtd_erase_callback +EXPORT_SYMBOL_GPL vmlinux 0x5e278494 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x5e3ad14d mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x5e3bbb30 tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x5e3c1193 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x5e3fa9b3 devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x5e502218 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e65fa24 pskb_put +EXPORT_SYMBOL_GPL vmlinux 0x5e751168 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x5eacba1f ahci_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x5eba354c usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x5ee45951 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x5f0c106e __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x5f157523 kvm_release_page_clean +EXPORT_SYMBOL_GPL vmlinux 0x5f16aa22 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x5f248f72 set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0x5f28b842 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x5f32d4e9 irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0x5f3dd96e regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x5f419491 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x5f5cfac1 pinctrl_utils_reserve_map +EXPORT_SYMBOL_GPL vmlinux 0x5f67b9db ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x5f7638ef bio_trim +EXPORT_SYMBOL_GPL vmlinux 0x5f7a0da8 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0x5f7ec0af regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0x5f81c478 devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5fbcade3 iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0x5fe1f267 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x5fe29aa7 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x6050923e platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x6055fbc4 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x6094685f wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60b93600 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x60cbc6b9 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x60d1d2df driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x60dfbb03 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL vmlinux 0x60e4a283 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x60f300de ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x61480a76 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x6161c6e7 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x616e5e53 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x61aa395d cgroup_taskset_first +EXPORT_SYMBOL_GPL vmlinux 0x61ac83cf usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL vmlinux 0x61bf689d bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x61c6f493 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0x61c9b056 ci_hdrc_add_device +EXPORT_SYMBOL_GPL vmlinux 0x61eec999 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x621e9daf unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x624a6406 hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x62508ab6 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x625e6050 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x6278eccb tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x627e7b5a ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x628e4dc4 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0x62b1f4c9 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x62b7c57b ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x62bf9ee9 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0x62ca956a transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL vmlinux 0x63205de1 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x633484e7 snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL vmlinux 0x636376c9 snd_soc_info_volsw_s8 +EXPORT_SYMBOL_GPL vmlinux 0x636a091a uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x637fed95 inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x638e0d70 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x638fdf35 skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0x6390efda of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0x6395a932 __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x63ada971 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x63fc4006 ftrace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x641f2697 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x6439597e usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x644451bc rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6445988e snd_soc_add_platform +EXPORT_SYMBOL_GPL vmlinux 0x645974ef arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x6459f1f6 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x647537f3 pl320_ipc_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6497a202 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0x64c70ce7 extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x6530fcfb skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x653b8795 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x654f77df snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0x65551076 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x6556ef85 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x655ff0e4 mtd_erase +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x660d61e5 unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x660ed9e0 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x662a0c3f x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x665211ce cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x668890cb arm_iommu_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x66918174 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x6693da1b __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL vmlinux 0x66cbc5bf adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66f87e87 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x670ee745 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x67128609 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6751a492 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x67539e72 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x67643d26 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x676a3f0f pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x676b6b4c snd_soc_read +EXPORT_SYMBOL_GPL vmlinux 0x6780c86a fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0x6787867d crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x679792da ahci_init_controller +EXPORT_SYMBOL_GPL vmlinux 0x67a43185 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x67cc11fa crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0x67d2f9cf gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL vmlinux 0x67e1f972 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x6812cf8d __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x6867e5bd tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x687934e9 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x68956406 static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x68b1e67f da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x68c3263a spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x693f75f6 gfn_to_hva +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 0x694f923e ahci_thread_fn +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x69cb14ba mtd_write +EXPORT_SYMBOL_GPL vmlinux 0x69e9a2cb ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x6a0053fa class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x6a0f6c02 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a2a97fa dapm_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a6b8f89 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x6a8a5ace fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x6a91b3d1 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x6a95443e device_add +EXPORT_SYMBOL_GPL vmlinux 0x6ad21576 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x6adc5f0d usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x6aeb44ce vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x6afeebbe xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x6b040eef iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x6b04a81a snd_soc_platform_read +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b5f85ed devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL vmlinux 0x6b77d229 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x6b9e7ad7 of_clk_src_simple_get +EXPORT_SYMBOL_GPL vmlinux 0x6c1b09ab gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x6c29cb00 kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL vmlinux 0x6c49c4f2 clockevents_notify +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c516fe2 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x6c5e6962 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x6c749afe __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x6c824310 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x6c9f8e77 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6cb3d9a5 usb_stor_probe2 +EXPORT_SYMBOL_GPL vmlinux 0x6cc78c5c set_irq_flags +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6cd4ea62 wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x6ce9a436 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0x6ceb2d06 virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0x6cf09cb6 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x6cf6c4c1 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x6d191053 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x6d21c4dc irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x6d2e314a usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d31e93b tracepoint_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x6d339861 __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0x6d9e5425 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x6dba651f usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x6dd7894e crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x6dfdd58b regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e05c4e7 ahci_hw_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x6e0a8069 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6e1c6020 register_mtd_parser +EXPORT_SYMBOL_GPL vmlinux 0x6e1de262 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x6e41fa14 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0x6e4243ff regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x6e4534f5 iommu_present +EXPORT_SYMBOL_GPL vmlinux 0x6e4ae0db mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x6e52fc7a disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x6e605267 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x6e7943ec iommu_group_id +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e9c4903 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x6ec519dd aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6ee0a46d get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x6ef5a6d0 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f338fbd md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x6f3bb50b xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x6f40a95e ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x6f9f61ec ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x6fb63570 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x6fbb3bd9 init_rs_non_canonical +EXPORT_SYMBOL_GPL vmlinux 0x6fd57590 sdhci_free_host +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x70068643 devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x7007f3ed uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x702e22bd ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x7053c737 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x7055bae0 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x70bb651d __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70d68869 da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x70d85f89 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0x70dbc0a4 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x70e5ef52 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x70f6cfbc gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x71008581 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x711b73b0 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x7127e664 dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0x7135c355 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x71930ed3 of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x71a79ff9 devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x71b706c1 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0x71c3e817 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL vmlinux 0x71c45e9c regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x71e15b15 pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x71e36225 public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0x72209668 amba_apb_device_add +EXPORT_SYMBOL_GPL vmlinux 0x7244706e pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x72627574 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7267db00 hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x727c9b35 __netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x7291019b __cci_control_port_by_index +EXPORT_SYMBOL_GPL vmlinux 0x72a4c784 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x72d02dab iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x72e9e281 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x72fba160 __kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0x72fffe16 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL vmlinux 0x73023e71 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x730bd0c7 asic3_write_register +EXPORT_SYMBOL_GPL vmlinux 0x732fc752 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x73510609 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x7360aebe ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x7363f533 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73bca099 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x73c0b725 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73e50c8c spi_async +EXPORT_SYMBOL_GPL vmlinux 0x73ec4f0d cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x73f1beed thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x742255dd securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x7422c95e gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x742848f4 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x7435b3ba iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x743a1c62 tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x74446ede snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL vmlinux 0x74628570 context_tracking +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x74750d38 imx_usbmisc_init_post +EXPORT_SYMBOL_GPL vmlinux 0x748459df spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x74954462 timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0x74a0f7c3 get_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74ffb4b3 usb_string +EXPORT_SYMBOL_GPL vmlinux 0x751bbcec rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x75364b63 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x759c567b fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x75b59778 kvm_vcpu_init +EXPORT_SYMBOL_GPL vmlinux 0x75c2b9f1 memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x75c8a11c inet_twdr_twkill_work +EXPORT_SYMBOL_GPL vmlinux 0x75e9ee16 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL vmlinux 0x762de969 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x765db4b2 dapm_regulator_event +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x76891ee9 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x768d9de7 gfn_to_pfn_prot +EXPORT_SYMBOL_GPL vmlinux 0x76991b59 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x76bf3786 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x76c57f82 sdhci_get_of_property +EXPORT_SYMBOL_GPL vmlinux 0x76d07d6e gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x76efc512 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x770cf981 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x77171b6d virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0x77214cea sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0x7726bb42 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x7740b0ef mtd_point +EXPORT_SYMBOL_GPL vmlinux 0x77522ad5 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL vmlinux 0x7775737f subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x77795a99 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x779c98d6 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x77b9e6dd ref_module +EXPORT_SYMBOL_GPL vmlinux 0x77bbbcc8 usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL vmlinux 0x77c91b82 ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x77c92078 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0x77e2709d cpufreq_notify_transition +EXPORT_SYMBOL_GPL vmlinux 0x77e4e2eb regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x77f5ce22 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x780f05dd fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x782157d0 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL vmlinux 0x782ce0e7 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x78356d73 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x78368c02 dev_pm_opp_get_freq +EXPORT_SYMBOL_GPL vmlinux 0x783fbd13 ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x7840b42c hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x788bf112 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x78ae2088 snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL vmlinux 0x78d05377 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x78ef1b4e max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x78f3411b ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x78ff4748 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x79010504 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x790b54a3 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x790cc1db snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0x7943f48b dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x794c656d __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x795f784c regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x796694fa irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x798d68d3 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x79b2d53f snd_soc_dapm_kcontrol_codec +EXPORT_SYMBOL_GPL vmlinux 0x79b4540a skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0x79f7961e unregister_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0x7a084b4b unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x7a2eace3 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a319404 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x7a33f423 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x7a431bb2 led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x7a516ee4 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x7a5e0c5b snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL vmlinux 0x7a7cf06f crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x7a8de5b0 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL vmlinux 0x7ab3ca18 eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x7ab7c3fd regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x7ae1ae8e cpufreq_frequency_table_put_attr +EXPORT_SYMBOL_GPL vmlinux 0x7ae4b871 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL vmlinux 0x7ae94df5 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b17ab37 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b2fcea4 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x7b3210a4 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x7b367904 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0x7b53962a clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x7b95349d preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7ba47e61 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x7ba70b9d posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0x7bd82cf1 ahci_check_ready +EXPORT_SYMBOL_GPL vmlinux 0x7c227088 clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0x7c346357 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x7c53de2a regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x7c5df489 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x7c6a49ce unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x7c7e55f6 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x7c89a16f stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0x7ca0a2ad mtd_add_partition +EXPORT_SYMBOL_GPL vmlinux 0x7cb07496 user_describe +EXPORT_SYMBOL_GPL vmlinux 0x7cb98a1e rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x7cc1b7fd max77693_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x7cc2c6ea rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x7cc7de1c x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7ce5b92a gpiod_sysfs_set_active_low +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7cf80453 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x7d36e534 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x7d397cc7 gpiod_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d640bb1 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x7d9db0d7 pinctrl_dev_get_devname +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dea5422 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x7df3ccb4 regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x7dfefda1 dev_pm_opp_enable +EXPORT_SYMBOL_GPL vmlinux 0x7e2b0143 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7e461f4d task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x7e5b930f serial8250_rx_dma +EXPORT_SYMBOL_GPL vmlinux 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e7f2ea5 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x7e85109a tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x7e985ebd ata_sas_port_async_suspend +EXPORT_SYMBOL_GPL vmlinux 0x7ec0ee36 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x7ed68941 asic3_read_register +EXPORT_SYMBOL_GPL vmlinux 0x7ed98812 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7ef20e83 css_next_descendant_pre +EXPORT_SYMBOL_GPL vmlinux 0x7efa9a73 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x7f27eac3 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x7f3d5d88 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x7f597e89 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x7f60e837 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x7f96a99a ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x7f98c884 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x7f9ac7e2 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x7fab5350 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7faec97a snd_soc_cache_sync +EXPORT_SYMBOL_GPL vmlinux 0x7fd710a9 ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x8010d2c6 percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x8019cdd1 register_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0x8020b941 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x805727f3 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x806027a5 ahci_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x806989a9 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x806e8ad6 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80a65392 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80d808fe irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x80f5b8a4 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x80f7f720 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x80fe5e66 tpm_remove_hardware +EXPORT_SYMBOL_GPL vmlinux 0x811b1384 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x8131b89a virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0x8140842a gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x81442c55 mtd_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x815118c6 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x8173e628 dev_pm_opp_find_freq_floor +EXPORT_SYMBOL_GPL vmlinux 0x81782459 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x818026c6 sysfs_notify_dirent +EXPORT_SYMBOL_GPL vmlinux 0x81b398a7 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x81b4b7b1 snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL vmlinux 0x81bd33af tpm_show_temp_deactivated +EXPORT_SYMBOL_GPL vmlinux 0x81e05227 mtd_is_partition +EXPORT_SYMBOL_GPL vmlinux 0x81f45c82 of_usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0x822b549f pinctrl_force_sleep +EXPORT_SYMBOL_GPL vmlinux 0x82518dd9 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x82668906 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x82939ebd rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82ecaeec snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0x8318eb66 clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x833662f6 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x834616bb sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8364a61d clk_register +EXPORT_SYMBOL_GPL vmlinux 0x83691d01 regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x83705e7e blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x837892f7 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x837bbdee devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x83845796 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x83a5ae2e __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x83a66f10 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x83f091f3 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x8420bccd cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0x84229462 devm_pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x84277541 dev_pm_opp_get_opp_count +EXPORT_SYMBOL_GPL vmlinux 0x843e76da ahci_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x8452e6d8 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x8499a38a __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x84abbd22 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x84ebfbd3 blk_queue_bio +EXPORT_SYMBOL_GPL vmlinux 0x84edcaff __scsi_get_command +EXPORT_SYMBOL_GPL vmlinux 0x84fa6393 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x8505e1ae inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x8509bf77 ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x852e568d of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x8538f9c6 netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x85469eb0 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x855bb408 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x856629e7 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x8574ca6c gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x8598d5a7 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x85b14d33 clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x85be5922 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x85c10896 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85dcd78d fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x85e0544b wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x86106636 devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x861f9c8c snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL vmlinux 0x862b9816 cpu_topology +EXPORT_SYMBOL_GPL vmlinux 0x866b9687 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x868945bf page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x86922a7b snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL vmlinux 0x86cd9e9e irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x86db36b7 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86ffbf0b hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x871c2d08 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x87519171 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x876d3cee irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x87720db1 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x8786fc92 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0x87984b16 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x87a5b285 virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0x87ba22dd elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x87ba8758 __cci_control_port_by_device +EXPORT_SYMBOL_GPL vmlinux 0x87bb4e32 of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x87cb9c02 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x87cf5a6e sdhci_pltfm_register +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x882e972a pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x8838f15b pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x883c2740 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x883d2025 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0x8864ea9d iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0x88744b80 __put_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x88890438 cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x888ed1c4 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x8890ce86 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0x889eb770 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b49b98 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88b89010 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x88c9866a ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0x88d5b149 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x88d6fb3a sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x88ed8d5c usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x88ef470f devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x88fc6f90 pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x890d6e9d debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x895e9dc4 snd_compress_register +EXPORT_SYMBOL_GPL vmlinux 0x897fa9f5 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x899c320b mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89dbdcc1 __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0x89e6efa4 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x89e9a79c pinconf_generic_dt_node_to_map +EXPORT_SYMBOL_GPL vmlinux 0x8a04b9fe tracepoint_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0x8a10cd8b rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x8a2b14ba wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0x8a404ab5 irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x8a9eb75f snd_soc_jack_report +EXPORT_SYMBOL_GPL vmlinux 0x8aa9f325 ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0x8ab18fc2 __put_net +EXPORT_SYMBOL_GPL vmlinux 0x8ab8968a gfn_to_memslot +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ae102fa ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x8ae152b5 of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x8b180057 regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x8b1e97dc snd_soc_get_volsw_s8 +EXPORT_SYMBOL_GPL vmlinux 0x8b21b0d1 regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0x8b22a45a anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8b33d5b5 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x8b58af2f regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x8b619754 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x8b69255c iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0x8b700d59 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x8b74bc35 tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x8b775d3a __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x8b7f742d usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x8b9286d8 kobj_completion_release +EXPORT_SYMBOL_GPL vmlinux 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL vmlinux 0x8bd1d559 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8bd6e81e wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x8bed024a kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x8c012df0 snd_soc_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x8c0260a4 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c0f62b4 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL vmlinux 0x8c15534c debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x8c9687d3 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL vmlinux 0x8ca08204 amba_device_put +EXPORT_SYMBOL_GPL vmlinux 0x8cb9b2fe pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x8cc3547d regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x8cd0d90d spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x8ce2e2e6 devres_release +EXPORT_SYMBOL_GPL vmlinux 0x8cf31e72 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x8d01b460 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x8d1fed82 kvm_write_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d45becb use_mm +EXPORT_SYMBOL_GPL vmlinux 0x8d6ed46c tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x8da01274 kvm_get_pfn +EXPORT_SYMBOL_GPL vmlinux 0x8dd76083 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x8de5b78d devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x8e0d3f5d kvm_resched +EXPORT_SYMBOL_GPL vmlinux 0x8e1cd06f kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL vmlinux 0x8e329ad2 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x8e58197c css_next_descendant_post +EXPORT_SYMBOL_GPL vmlinux 0x8e59cf9a ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x8e62f804 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL vmlinux 0x8e7894bd __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x8e8125a5 swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0x8e9c7933 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x8eb32231 blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0x8ec7d4aa disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x8eda9ede apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x8effebd3 pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x8f01fda1 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x8f15e295 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x8f48f210 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x8f57a60f tcp_reno_min_cwnd +EXPORT_SYMBOL_GPL vmlinux 0x8f589c46 snd_soc_dapm_get_enum_virt +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f902a2c gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0x8f951993 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x8f9608d0 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x8fa8b241 thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x8faa8ddd spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x8ff11ea3 amba_ahb_device_add +EXPORT_SYMBOL_GPL vmlinux 0x900a10fa input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x900cca9e usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x9015f3e6 napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0x90176f8b mtd_get_user_prot_info +EXPORT_SYMBOL_GPL vmlinux 0x901a1b0f fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x901fa444 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x90228869 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x9028ab1a debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x902d44ba sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x904282ee perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x90574050 cci_ace_get_port +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x906ce9e6 snd_soc_update_bits_locked +EXPORT_SYMBOL_GPL vmlinux 0x90705b7f syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9081a27a max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x9082d068 kprobe_decode_arm_table +EXPORT_SYMBOL_GPL vmlinux 0x90844388 bus_register +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90b15eaf sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x90bb4cd6 tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x90ca51ca dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x90ca542c ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x90cc20f8 cgroup_taskset_cur_css +EXPORT_SYMBOL_GPL vmlinux 0x90dca07a crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x90e66d47 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x9106c5df verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x91286982 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x91322933 bdi_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x9172814b usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91ba40ea crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x91bbf0b0 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x91c9e961 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0x91dad723 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x92042655 kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0x9209412d n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x920f965c irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x923671a4 put_device +EXPORT_SYMBOL_GPL vmlinux 0x9247e66e crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x927348e8 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x92b57248 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x92bfd744 __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x92cb6a12 gfn_to_pfn_async +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x930ed9b9 of_usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0x93344b1f crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0x93513bcd ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x9365c538 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x93b763cc udc_attach_driver +EXPORT_SYMBOL_GPL vmlinux 0x940346d5 kvm_init +EXPORT_SYMBOL_GPL vmlinux 0x94070249 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x9449dca7 iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL vmlinux 0x9484c58a regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x948978e2 vtime_guest_enter +EXPORT_SYMBOL_GPL vmlinux 0x94a68723 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x94abb745 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0x94d0fd1d usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x94e1823c hrtimer_start +EXPORT_SYMBOL_GPL vmlinux 0x9507220a snd_soc_register_component +EXPORT_SYMBOL_GPL vmlinux 0x950d8754 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x95481e0a da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x956894d9 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x956ae4e1 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x95c86ab7 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x95c9bb2b ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x95d087d5 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x95ecb1c3 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x95f6ee15 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x96037545 kvm_write_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x960553d0 balloon_mapping_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x9623d4e6 dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0x96263f4f usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x962ed701 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x96337204 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x9633b883 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x9634bb6c clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0x9638b465 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x96451566 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9667b888 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x967c50f6 cgroup_is_descendant +EXPORT_SYMBOL_GPL vmlinux 0x969d7722 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x96a22790 vmcore_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x96dddc69 sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL vmlinux 0x96eca8ac ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x97097b1f sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x970d1091 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x9730c462 gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x974126a2 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9745c52a of_fixed_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0x97564d2a perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x97704c40 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x97875c5d smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x978ef84e rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x97a3ec56 ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x97a9e78b wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x97d299a1 preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x980020f0 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x9811200c usb_add_gadget_udc +EXPORT_SYMBOL_GPL vmlinux 0x9813e7e4 ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x98393bf0 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x983bd0b3 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x986f420f pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x98b1118d pinctrl_find_and_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x98c472e1 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x98c9f584 klist_init +EXPORT_SYMBOL_GPL vmlinux 0x98ca379e raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x98ca73bc ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x98df5abb iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0x98f3ed01 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x990f68ea adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x992bcdc7 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x9935807e crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x993aeded fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x993b7500 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x99566352 usb_stor_CB_transport +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x995de721 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x99693b15 pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x9973add9 __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x99ae34c8 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x99b6ce88 vchan_init +EXPORT_SYMBOL_GPL vmlinux 0x99bc18b5 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x99f5d2e2 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x99f9a914 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a181b50 cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x9a375cb9 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x9a479711 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x9a6e7ee4 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9aca444b get_monotonic_boottime +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9afb3dee sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x9b2e00ea regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x9b373455 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x9b391822 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x9b4aed43 kvm_read_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0x9b92f2a7 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x9bb3f54d ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x9bbdbc33 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0x9bea7a40 wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9bf7afd9 led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x9c052aa4 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x9c3e5b59 percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9c5697d7 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x9c6444b4 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9c6d18ad dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x9c797afc regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x9c7fdefc scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x9ca47a85 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0x9cb01d12 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9d0dbc0e unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x9d0ec732 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x9d138533 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x9d1e7c1f tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x9d2ce782 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x9d535cd2 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x9d8167f5 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x9d8331c0 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9d867a3b wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x9da6a028 usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0x9da99a23 devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9db02557 device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0x9dbb02fb tpm_show_active +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9e02cdaf powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0x9e2ce27b mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x9e57910a platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x9e958741 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL vmlinux 0x9e9b8b47 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x9eb2e639 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x9ebbe9eb snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL vmlinux 0x9ebfe06e list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0x9ec63e6f __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9f0664bf dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0x9f162f0a find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x9f3f98e1 of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x9f82bfa1 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x9f9966f0 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL vmlinux 0x9fc75e4a snd_soc_dapm_put_enum_virt +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9fecde47 kobj_completion_init +EXPORT_SYMBOL_GPL vmlinux 0xa0149c3e debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0xa030b82f ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xa0316846 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0xa033df40 clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0xa05ec2a6 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0xa064f393 ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0xa06e5e7e hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0xa07439aa stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0xa087db56 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xa0ad4562 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL vmlinux 0xa12d929d desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0xa163f7e3 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xa16e7289 cgroup_add_cftypes +EXPORT_SYMBOL_GPL vmlinux 0xa173891e ahci_set_em_messages +EXPORT_SYMBOL_GPL vmlinux 0xa17b2ace pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xa17e30a4 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0xa19a7309 kvm_clear_guest +EXPORT_SYMBOL_GPL vmlinux 0xa1a7a45d snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL vmlinux 0xa1b6a64e virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0xa1bd7822 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xa1c7c6b2 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL vmlinux 0xa1f54992 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xa248d9c9 of_extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0xa2535281 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0xa25d7f9e blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa27cf6c4 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xa280745c ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL vmlinux 0xa2b9c993 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xa2ddbfb5 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0xa2e4a04c __clocksource_updatefreq_scale +EXPORT_SYMBOL_GPL vmlinux 0xa32fed62 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xa345d4c3 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0xa35f213f regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa385037d rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa392d44d i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0xa3a48b47 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xa3aaf3b0 crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0xa3b3e0b3 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa3fe68ef sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xa41aa193 register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xa4254f38 nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0xa4297966 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0xa447f3b9 sysfs_schedule_callback +EXPORT_SYMBOL_GPL vmlinux 0xa454b674 blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xa460a6da shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa4874ca0 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0xa4aae884 pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xa4b0e762 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xa4b172ac amba_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa4b32aa4 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL vmlinux 0xa4bd13a9 tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0xa4ea04ee of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0xa4f87275 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xa4fab8fe crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0xa50d570d devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xa52c6e88 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL vmlinux 0xa570414e nand_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0xa57c4fe4 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0xa59f1ea3 usb_gadget_unmap_request +EXPORT_SYMBOL_GPL vmlinux 0xa5cc0e1e blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0xa5d911b8 ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xa5dad407 dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xa5e9120d tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0xa5ef031d udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5f8854a usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xa5fa76a9 inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xa61b1477 tracepoint_iter_start +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa658dc41 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xa67517a0 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0xa6784deb sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xa68554bc snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL vmlinux 0xa6a0a273 max77693_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6c4e484 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0xa6c726f5 kvm_flush_remote_tlbs +EXPORT_SYMBOL_GPL vmlinux 0xa6e08cca skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6f1506c ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xa71ca644 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0xa7219db0 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xa724257f init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0xa728626c unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xa72986d4 usb_stor_probe1 +EXPORT_SYMBOL_GPL vmlinux 0xa73be081 __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xa74c0b4d vchan_find_desc +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa75811d0 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0xa764dbd8 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xa7650522 sec_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xa7744ebb arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0xa777a212 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0xa77a9885 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0xa77b1466 sysfs_get_dirent_ns +EXPORT_SYMBOL_GPL vmlinux 0xa792a773 kvm_get_kvm +EXPORT_SYMBOL_GPL vmlinux 0xa79a2e9f ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0xa7aed12e devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xa7f6c674 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xa7f92105 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0xa8020e59 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa84f769b irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa88ab9ea kvm_vcpu_block +EXPORT_SYMBOL_GPL vmlinux 0xa895de4a __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0xa899af87 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xa89cd70c class_find_device +EXPORT_SYMBOL_GPL vmlinux 0xa8bc717e percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0xa8e8185a dm_kill_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0xa8ea3f5a snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL vmlinux 0xa8f2d43a regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xa904dffa crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0xa912178e of_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xa922da18 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa94c4bf8 pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0xa980af16 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xa99b9da1 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xa99efe35 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xa9aef2e1 gfn_to_hva_memslot +EXPORT_SYMBOL_GPL vmlinux 0xa9af235b user_update +EXPORT_SYMBOL_GPL vmlinux 0xa9ce18eb md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xaa133a8e regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xaa2a72bf __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0xaa5fc5e4 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xaa70f199 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaab45034 alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0xaab6c730 iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0xaac00d95 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xaac14bac da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0xaae54b69 cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0xaae605aa wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xaafb837c rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0xab0494bf mtd_is_locked +EXPORT_SYMBOL_GPL vmlinux 0xab250df0 crypto_rng_type +EXPORT_SYMBOL_GPL vmlinux 0xab4b17a7 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xabb2b7d9 snd_soc_bytes_info +EXPORT_SYMBOL_GPL vmlinux 0xabb5e5ce snd_soc_resume +EXPORT_SYMBOL_GPL vmlinux 0xabda1e2e decode_rs16 +EXPORT_SYMBOL_GPL vmlinux 0xabf13a45 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0xac03006d device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0xac1ad9fe usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0xac24b5c7 fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0xac354803 sysfs_put +EXPORT_SYMBOL_GPL vmlinux 0xac3f29b0 sk_unattached_filter_destroy +EXPORT_SYMBOL_GPL vmlinux 0xaca01f8f __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0xaca031b9 ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xacaaf4ef usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0xacac2ace __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xacdbd6aa tpm_dev_vendor_release +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xacedebf0 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0xacf7a852 blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0xad26a732 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0xad2a8768 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0xad376749 clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0xad7bf816 vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL vmlinux 0xad965578 pinctrl_add_gpio_ranges +EXPORT_SYMBOL_GPL vmlinux 0xad97aa76 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0xad9d2e2b usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xada709a6 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0xadb3261b smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadcbf88d pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae2554c4 of_clk_src_onecell_get +EXPORT_SYMBOL_GPL vmlinux 0xae277682 ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xae34eadb amba_apb_device_add_res +EXPORT_SYMBOL_GPL vmlinux 0xae5a9de2 device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xae5b0188 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae8aa931 dev_pm_opp_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xae92293b fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0xae9f9d59 nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xaec13f83 user_instantiate +EXPORT_SYMBOL_GPL vmlinux 0xaefe0991 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xaf028ab2 gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0xaf33cb86 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0xaf348da7 cpu_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0xaf681818 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0xaf7171f6 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0xaf8787ad thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0xaf8d4cef i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0xaf97fd38 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0xafc5c56e ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0xafe98a2b mddev_init +EXPORT_SYMBOL_GPL vmlinux 0xb050f329 init_rs +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0d77fa1 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xb0ed75f8 devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0xb0f221de usb_stor_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0xb107150d usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0xb10d55bc cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xb12cb2d6 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0xb134469d virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb1632c4c regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb18f034a snd_soc_put_volsw +EXPORT_SYMBOL_GPL vmlinux 0xb1a7e3f6 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xb1a88375 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1ad9ed1 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0xb1b22afa sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1c0c1c2 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xb1c79131 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb22cae82 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0xb268daa4 regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0xb29cc4ff driver_find +EXPORT_SYMBOL_GPL vmlinux 0xb2a9265e ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb33efab7 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xb3661ddb tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xb36a3dd4 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xb383c4e3 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xb392f27a cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xb3937dd1 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0xb3978f87 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb3b5ee95 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0xb3d4e2ef gpiochip_add_pin_range +EXPORT_SYMBOL_GPL vmlinux 0xb3f5cc9a key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0xb4193744 ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0xb44d271d blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0xb4755be0 arm_iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0xb48296a6 pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0xb492dc67 serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0xb493b8f2 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4dd9424 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0xb4e5fc05 alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4f0337f regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb52dddda register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb595f420 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5b6b89c ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0xb5cb8145 hrtimer_get_res +EXPORT_SYMBOL_GPL vmlinux 0xb5e896fb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb5f8d89f pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0xb61e7fbc kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb67b2219 cm_suspend_again +EXPORT_SYMBOL_GPL vmlinux 0xb67c64fd __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0xb68885e6 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6c635af wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xb6e343a3 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xb6f2c578 __tracepoint_unmap +EXPORT_SYMBOL_GPL vmlinux 0xb6fa9f1c fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0xb7231ea2 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0xb732cc01 rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xb738f02d find_vpid +EXPORT_SYMBOL_GPL vmlinux 0xb73a31a3 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL vmlinux 0xb740c010 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xb7464ae7 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0xb75cd88d palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0xb7713fa5 snd_soc_register_card +EXPORT_SYMBOL_GPL vmlinux 0xb771e6b7 bL_switch_request_cb +EXPORT_SYMBOL_GPL vmlinux 0xb7c3c905 ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb80e7e8b blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0xb816e859 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL vmlinux 0xb8346aeb percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb84bb39c kvm_read_guest_page +EXPORT_SYMBOL_GPL vmlinux 0xb87ebec3 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0xb8847905 nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xb8868e4f arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xb895007c skb_morph +EXPORT_SYMBOL_GPL vmlinux 0xb8ba520a usb_gadget_probe_driver +EXPORT_SYMBOL_GPL vmlinux 0xb8c1af99 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xb8e8c4c1 usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb9051178 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xb90e7754 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xb9176155 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0xb935ff9a sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xb94f4b0a usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0xb959d990 ahci_kick_engine +EXPORT_SYMBOL_GPL vmlinux 0xb95fda5e pinctrl_utils_dt_free_map +EXPORT_SYMBOL_GPL vmlinux 0xb98e2c9d stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0xb9b2a385 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0xb9b5f7cb tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9cf8560 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9d406a0 crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0xb9da2997 snmp_fold_field64 +EXPORT_SYMBOL_GPL vmlinux 0xb9de2f25 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0xb9e87b94 bL_switcher_trace_trigger +EXPORT_SYMBOL_GPL vmlinux 0xb9f684ca rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0xba082b11 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL vmlinux 0xba095169 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0xba1c6ea5 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0xba43edd2 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xba52ecd5 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0xba8fedcb scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xba95c3a1 dev_pm_opp_add +EXPORT_SYMBOL_GPL vmlinux 0xbaa92ef0 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xbadb867c tcp_is_cwnd_limited +EXPORT_SYMBOL_GPL vmlinux 0xbb034dab tty_port_tty_wakeup +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 0xbb1d7e91 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xbb3fa8ea device_destroy +EXPORT_SYMBOL_GPL vmlinux 0xbb3fcdca usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0xbb4f0022 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0xbb5558e5 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xbb7ba44a i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0xbba1cfaa device_move +EXPORT_SYMBOL_GPL vmlinux 0xbbc5ca88 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0xbbc9f2fa device_create_file +EXPORT_SYMBOL_GPL vmlinux 0xbc009d17 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0xbc0eb4a1 usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0xbc11512f ci_hdrc_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xbc1655f5 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0xbc17c37e rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0xbc5f0e2e ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xbc645086 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0xbc7e4202 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0xbca7b001 powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcaf3971 crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0xbcbaa80a __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0xbcc834be console_drivers +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcd4334a platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbcee2857 cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0xbcf89ab6 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0xbd577485 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbdf512de free_bch +EXPORT_SYMBOL_GPL vmlinux 0xbe15eb63 vtime_common_account_irq_enter +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe84d94f regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0xbe987b78 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0xbe9f190b ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbeb55ab9 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbf021696 proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf305e33 pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbf313ea1 of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xbf5d36eb snd_soc_codec_writable_register +EXPORT_SYMBOL_GPL vmlinux 0xbf65775c sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0xbf6716bf fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0xbf75e3a8 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0xbf760b6a da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xbf79668e register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0xbf83ece4 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL vmlinux 0xbf91ecd7 wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0xbfa82096 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0xbfb9c4b2 ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0xbfd143fb usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0xbfd806e0 kvm_read_guest +EXPORT_SYMBOL_GPL vmlinux 0xbff21068 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbffa9bf0 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xc0137f5e rtc_set_mmss +EXPORT_SYMBOL_GPL vmlinux 0xc01d8530 extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0xc032e335 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0xc03377f1 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xc03383fd generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0xc04019cd inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0xc075441c inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0xc081c246 bL_switcher_put_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0bf6ead timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xc0d01bc0 percpu_ref_cancel_init +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0d6a6dd snd_soc_write +EXPORT_SYMBOL_GPL vmlinux 0xc101e6f1 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0xc11b45c6 gpiod_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xc11bd00f tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc128c69d __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc12be2c8 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xc14ce93b blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0xc161fe92 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xc16ab832 snd_soc_unregister_component +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc1790e3f devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xc1791589 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0xc183a021 ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0xc18578ed process_srcu +EXPORT_SYMBOL_GPL vmlinux 0xc1a041d9 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0xc1fef824 regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0xc1ffd076 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xc218baea iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc25da574 musb_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xc272c23c mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc2d9f991 pinctrl_pm_select_sleep_state +EXPORT_SYMBOL_GPL vmlinux 0xc2dda106 tpm_show_pubek +EXPORT_SYMBOL_GPL vmlinux 0xc2e45879 sync_filesystem +EXPORT_SYMBOL_GPL vmlinux 0xc2e884dd snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL vmlinux 0xc2ee9d18 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0xc307bfcc clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0xc3094f3d platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0xc3119c15 snd_soc_dapm_put_value_enum_double +EXPORT_SYMBOL_GPL vmlinux 0xc3193669 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0xc31bf1c5 snd_soc_put_strobe +EXPORT_SYMBOL_GPL vmlinux 0xc32891b5 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc34d1a1d max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xc34efe27 snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0xc36b6152 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc385cb58 perf_num_counters +EXPORT_SYMBOL_GPL vmlinux 0xc38efa3b class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xc3b93bba klist_next +EXPORT_SYMBOL_GPL vmlinux 0xc3be9891 pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0xc3e486a3 clockevents_unbind +EXPORT_SYMBOL_GPL vmlinux 0xc407a1d4 gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0xc4215852 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc43b3ff7 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xc448f22b kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc455e814 rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0xc4686be4 mtd_block_markbad +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc472345a sk_unattached_filter_create +EXPORT_SYMBOL_GPL vmlinux 0xc476dace device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0xc47c64bc sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL vmlinux 0xc47e2735 sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0xc4878e17 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc498c7dd crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0xc4a9f626 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0xc4b10170 dev_pm_opp_find_freq_ceil +EXPORT_SYMBOL_GPL vmlinux 0xc4c05d61 dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0xc4e204ea xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0xc4e42612 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc5463756 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc5488077 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xc55fc5c9 need_load_eval +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc580eeef user_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc58447e8 dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc58cf507 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xc596022b usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xc59902f7 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0xc5a95913 regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc5b0cb04 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0xc5ba2187 spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xc5d37180 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0xc5f30383 sec_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xc60f75ec __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xc615b1c2 ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc63a1109 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xc649229a clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc66cc4cc usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL vmlinux 0xc6735e23 devm_snd_soc_register_card +EXPORT_SYMBOL_GPL vmlinux 0xc6744c4f dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xc68aa090 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0xc690866c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6b048bc sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0xc6ce010e platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0xc6db5d3b ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0xc705d5a3 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc7064796 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc762dc03 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7b1b8cf ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xc7c0e47b rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7d75ea0 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0xc7df8073 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0xc7e16315 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc7e81da6 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc881b540 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL vmlinux 0xc89c74cd da903x_update +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8b5f66c arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc8b96a93 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc97d1140 cpufreq_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0xc9a16e64 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xc9a983ad sec_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xc9b75e2d sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0xc9cb579e blkio_subsys +EXPORT_SYMBOL_GPL vmlinux 0xc9dc1cd0 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0xc9eb3c67 inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xca03f3e5 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0xca173dd0 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xca5c5b3a bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0xca6acbe3 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca85d8cf tracepoint_probe_update_all +EXPORT_SYMBOL_GPL vmlinux 0xca8dbb7b snd_soc_codec_readable_register +EXPORT_SYMBOL_GPL vmlinux 0xca946187 of_clk_add_provider +EXPORT_SYMBOL_GPL vmlinux 0xca9c92a1 ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0xcab7854f crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcad5ed32 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0xcafd9e2b of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0xcb0a0ae4 regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0xcb133d95 mtd_get_device_size +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb604f28 pinctrl_utils_add_map_configs +EXPORT_SYMBOL_GPL vmlinux 0xcb788dcb dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0xcb8a2dad crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0xcb9b162e clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0xcbb9675b __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0xcbc230b8 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xcbc9b954 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xcbce587e d_materialise_unique +EXPORT_SYMBOL_GPL vmlinux 0xcbe038ba tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcc05faa4 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcc1f1c3d inet_twdr_hangman +EXPORT_SYMBOL_GPL vmlinux 0xcc32a3cc tpm_release +EXPORT_SYMBOL_GPL vmlinux 0xcc506ce4 iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0xcc608580 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0xcc7705d8 input_class +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcc9224bc blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xcc9f9f7b pwm_free +EXPORT_SYMBOL_GPL vmlinux 0xccab9778 cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0xccbfe1a2 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0xcccbf853 tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccd17bd9 iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0xccf57bb1 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0xccf59734 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0xcd5a7999 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0xcd627cb8 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0xcd73be2c of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcda2b728 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0xcdbc2468 amba_ahb_device_add_res +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcdec51a8 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0xcdfaf77e skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0xce098830 yield_to +EXPORT_SYMBOL_GPL vmlinux 0xce0b9b59 max77693_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xce0e6b7b ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xce46e140 ktime_get_ts +EXPORT_SYMBOL_GPL vmlinux 0xce57410b register_mtd_blktrans +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce7a537b scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xce867413 tpm_show_enabled +EXPORT_SYMBOL_GPL vmlinux 0xcec5ba1a snd_soc_dapm_free +EXPORT_SYMBOL_GPL vmlinux 0xcee06092 ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcf2c3bef led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0xcf4e26d7 ahci_ops +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf5a0813 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xcf7e86f0 ahci_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xcf827a7a irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0xcf8905b5 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0xcfb2c9d1 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0xcfb905b6 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0xcfc24a61 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfc6b6a0 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0xd0186eea tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0xd0334525 led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd03b6408 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd05bf0cc crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd06f9392 ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xd0942815 usb_del_gadget_udc +EXPORT_SYMBOL_GPL vmlinux 0xd099645d tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0xd0a6baa6 da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0e1a150 alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0xd0edd30e devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xd11941e1 bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0xd1375ab3 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0xd14aeab6 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0xd14bc4d9 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd1822f0b cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd1b2db37 tracepoint_probe_register_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xd1c509d1 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0xd1f0a011 usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd20fe259 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd2534497 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0xd258217d clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd2796c82 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0xd27a5033 pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0xd2851109 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0xd2aaeb4e kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0xd2d7cd90 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL vmlinux 0xd304bc30 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0xd31e7e19 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0xd32fe193 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xd33ada8b cci_probed +EXPORT_SYMBOL_GPL vmlinux 0xd3571661 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xd35b5682 register_mtd_user +EXPORT_SYMBOL_GPL vmlinux 0xd373bb6c call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xd39c7551 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0xd3bc2cb7 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0xd3ded94a md_stop +EXPORT_SYMBOL_GPL vmlinux 0xd3eb8665 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd3f023eb locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0xd3ffea12 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4341b05 tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd44c2f38 cci_disable_port_by_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd4552b26 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0xd46d29f2 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0xd4835331 devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xd4942c0b bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0xd4a21421 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0xd4bb8b3c sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4c170ee usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xd4cad45e clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0xd4d0387e pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0xd4e327d9 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0xd4e714c9 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0xd50d8a98 usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xd51876f9 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xd53c9fd7 device_register +EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd584a40c iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5cb1bb0 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0xd5db845c driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xd61e04b6 usb_stor_resume +EXPORT_SYMBOL_GPL vmlinux 0xd62b4eb1 cgroup_unload_subsys +EXPORT_SYMBOL_GPL vmlinux 0xd6428258 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL vmlinux 0xd6505d86 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd67eeea2 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xd67fbfde snd_soc_info_volsw +EXPORT_SYMBOL_GPL vmlinux 0xd686eca4 of_reset_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xd6aa65f1 snd_soc_put_volsw_s8 +EXPORT_SYMBOL_GPL vmlinux 0xd6c2e04b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0xd6cc5cb6 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd7228282 gfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0xd72fdfdc tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0xd74d3ad0 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0xd7592c0d sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0xd761f154 nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0xd7660dec pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd76fc446 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0xd7790f3a pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd77cac1f virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0xd787b9c2 devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xd788742d perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0xd79a17bd ahci_print_info +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7f8d930 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xd800b74c thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd81ffcd3 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd8218dd7 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0xd82646d9 pinctrl_find_gpio_range_from_pin +EXPORT_SYMBOL_GPL vmlinux 0xd82b07b3 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0xd842bffa regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xd86e1c53 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd88c6d68 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xd898cd9c enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xd8a1b2af platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0xd8a5cf0a usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0xd8c43f2d ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0xd8c9bfe8 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0xd8c9e69a ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xd8cfc577 ahci_save_initial_config +EXPORT_SYMBOL_GPL vmlinux 0xd8d2bb0c wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xd8da0e7b vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0xd90e9603 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0xd912816b debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd942edc9 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0xd9a34035 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0xd9e57432 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda071e89 pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0xda0c6973 sdhci_alloc_host +EXPORT_SYMBOL_GPL vmlinux 0xda17e3fb usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0xda2d5497 __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0xda44cb37 setup_charger_manager +EXPORT_SYMBOL_GPL vmlinux 0xda57bf4a pinctrl_dev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xda69e69f snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL vmlinux 0xda6d499a rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0xda715cec sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0xda9789c2 user_match +EXPORT_SYMBOL_GPL vmlinux 0xdabd22be rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0xdabd8b93 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0xdac11bae of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xdac1344d i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0xdad8d87f usb_stor_pre_reset +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdaf5889b ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0xdb04cacc tracepoint_probe_unregister_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xdb29e330 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0xdb54c55e virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb999986 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0xdba4ad93 static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0xdba80fc1 of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0xdbd3f0a2 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xdbd57700 sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc1900ff pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0xdc1e15f1 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0xdc27d370 vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0xdc461430 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xdc579bad tcp_init_congestion_ops +EXPORT_SYMBOL_GPL vmlinux 0xdc8f29ab deregister_mtd_parser +EXPORT_SYMBOL_GPL vmlinux 0xdc90c928 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdcc0116b usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0xdceeec69 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xdd0d53a1 __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0xdd1cdd7e da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd47dc88 extcon_find_cable_index +EXPORT_SYMBOL_GPL vmlinux 0xdd5a5faf class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xdd60dc8c power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0xdd669a15 tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xdd7f6284 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xdd95979e dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0xdd9d3324 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0xddb1fa60 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0xddd0411a dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xddf76f7c soc_ac97_ops +EXPORT_SYMBOL_GPL vmlinux 0xddff52dd i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xde224e42 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0xde2c5a6e alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0xde3ddd60 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xde93fad0 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xde966361 ping_close +EXPORT_SYMBOL_GPL vmlinux 0xdecaaab8 tty_prepare_flip_string_flags +EXPORT_SYMBOL_GPL vmlinux 0xdef0c06b device_attach +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf121390 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xdf241f22 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xdf34856c iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0xdf633c3c dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xdf6dcec7 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0xdf945961 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0xdf94cb9c regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0xdf9bc3b5 device_rename +EXPORT_SYMBOL_GPL vmlinux 0xdff7c9ce blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdffb785a kvm_vcpu_cache +EXPORT_SYMBOL_GPL vmlinux 0xdffd206d tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0xe003e044 __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe01af8c9 arm_iommu_release_mapping +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe03f69ba snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL vmlinux 0xe0507f4c snd_soc_codec_set_cache_io +EXPORT_SYMBOL_GPL vmlinux 0xe058fad1 blkdev_aio_write +EXPORT_SYMBOL_GPL vmlinux 0xe06347fe power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0xe0716a86 PageHuge +EXPORT_SYMBOL_GPL vmlinux 0xe07ca631 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0xe0870007 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0xe0af0830 mtd_writev +EXPORT_SYMBOL_GPL vmlinux 0xe0b9533c get_mtd_device_nm +EXPORT_SYMBOL_GPL vmlinux 0xe0e7547e cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0xe10ca5fc pinconf_generic_dt_subnode_to_map +EXPORT_SYMBOL_GPL vmlinux 0xe121042b led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0xe16591ab stop_machine +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe1781a50 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0xe17b3610 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe19cdfb5 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0xe19e0624 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0xe1c32794 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0xe1cacbcd seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0xe1d4b796 extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0xe1e23b0a elv_register +EXPORT_SYMBOL_GPL vmlinux 0xe1e2fa5f inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0xe1e58c5b snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe1ffde5c dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0xe20f5e88 usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0xe231a3d3 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0xe23643a6 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0xe23da00c regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0xe240c7a0 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xe24422a8 thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0xe26825df list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xe2712f39 virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0xe2912d07 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0xe29971ed usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xe29d59b2 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0xe2c30d8b devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xe2e7840d regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xe2e8dd1e mtd_get_unmapped_area +EXPORT_SYMBOL_GPL vmlinux 0xe2eb2e79 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe3088466 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0xe337d0a8 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xe3380fc0 tpm_show_durations +EXPORT_SYMBOL_GPL vmlinux 0xe3482dd8 iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0xe35379ea usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xe35dd360 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0xe3655fe5 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0xe3751bc4 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe3f07996 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0xe4137d71 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0xe4209c15 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0xe42e1f70 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xe4302c96 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe430c4e4 irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0xe49b8e0b extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xe4a1bdd7 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0xe4a2d57d ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xe4ad8a0a ahci_do_softreset +EXPORT_SYMBOL_GPL vmlinux 0xe4c4b28f gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xe4d4f647 dm_set_device_limits +EXPORT_SYMBOL_GPL vmlinux 0xe4fe5197 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0xe509baf2 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xe50a9c69 otg_ulpi_create +EXPORT_SYMBOL_GPL vmlinux 0xe50e65bf blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xe52ae762 __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0xe52ca980 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xe5560080 ata_sas_port_async_resume +EXPORT_SYMBOL_GPL vmlinux 0xe55655c6 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xe559650d extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe596479d regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe5a529e3 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0xe5bb2228 pinconf_generic_dump_config +EXPORT_SYMBOL_GPL vmlinux 0xe5f34bf5 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0xe5fdccbf key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0xe62b635f sdhci_add_host +EXPORT_SYMBOL_GPL vmlinux 0xe6363bae i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0xe63d6fad usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe684f589 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0xe68d6aad usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xe694c886 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6d01a2b input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0xe6d0f266 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0xe6d47fa5 pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0xe6d67d57 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6fa68cc blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xe7049aed rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xe764488a alarm_start +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe76b142c pinctrl_select_state +EXPORT_SYMBOL_GPL vmlinux 0xe781339f ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0xe7911635 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0xe793f62d pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0xe796f7dd modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe80595dc ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe829409c device_schedule_callback_owner +EXPORT_SYMBOL_GPL vmlinux 0xe84a2845 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xe85a9fd3 cpu_cluster_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0xe861f76c snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe891eda1 regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xe8935fb5 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL vmlinux 0xe89d55c8 pinctrl_utils_add_config +EXPORT_SYMBOL_GPL vmlinux 0xe8d60743 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0xe8e281ac lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0xe906962f regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe94f35f1 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0xe9546af8 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL vmlinux 0xe956a75c pl320_ipc_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe95a75fb fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0xe9753e6a ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xe9895726 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xe999af81 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe9a57c8d netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe9dae885 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea14eabe sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0xea1bb291 bL_switcher_get_enabled +EXPORT_SYMBOL_GPL vmlinux 0xea226176 mmc_send_ext_csd +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 0xea7f5445 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0xea886795 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL vmlinux 0xea993e15 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0xea9b2f29 perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0xea9d02c1 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0xeaa1fc21 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xeaa8d0a2 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xeaa92b15 dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0xeaae13f4 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0xeb0d984a snd_soc_get_value_enum_double +EXPORT_SYMBOL_GPL vmlinux 0xeb0fce03 sec_reg_update +EXPORT_SYMBOL_GPL vmlinux 0xeb1c3628 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xeb3ef01d arm_pm_restart +EXPORT_SYMBOL_GPL vmlinux 0xeb4a2187 pinctrl_utils_add_map_mux +EXPORT_SYMBOL_GPL vmlinux 0xeb59cfee iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL vmlinux 0xeb9abbee ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xebd079be crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xebd0f6f4 ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xec06ea17 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec24e7ea snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec5a9b05 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0xec5d1fc4 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL vmlinux 0xecae250c reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xecbbb86e ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xecbdc59e pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xecd4260e crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0xece5581e perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0xecfd8761 usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xed06093e regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0xed06b916 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0xed6902e4 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0xed695a2d unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xedbf3cbb of_get_dma_window +EXPORT_SYMBOL_GPL vmlinux 0xedd49930 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0xeddf78b2 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0xede0ff00 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0xee042d34 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xee0ada90 kvm_clear_guest_page +EXPORT_SYMBOL_GPL vmlinux 0xee0afa6c sdhci_remove_host +EXPORT_SYMBOL_GPL vmlinux 0xee0b33e3 irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0xee1b61c7 powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0xee3f327d snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0xee4aa661 irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xee4d5e95 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0xee4f3181 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0xee60b610 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xee6a3ff4 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee6dcd93 ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0xee9deae0 tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0xeee77753 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0xef1757eb nand_release +EXPORT_SYMBOL_GPL vmlinux 0xef38b476 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0xef3ceb3d virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0xef409b74 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0xef598dbb crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0xef66075c usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef750677 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0xef8e4ded mtd_device_parse_register +EXPORT_SYMBOL_GPL vmlinux 0xefa02e3d ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0xefaee306 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0xefe89778 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0xefeeb5c4 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0xeff1be99 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xf00d58f7 alarm_init +EXPORT_SYMBOL_GPL vmlinux 0xf01004da usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0xf0246022 vchan_tx_submit +EXPORT_SYMBOL_GPL vmlinux 0xf026ac0e snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL vmlinux 0xf02da380 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0xf0751960 virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0xf08cef3a driver_register +EXPORT_SYMBOL_GPL vmlinux 0xf0970ea2 regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0xf09ca911 cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0xf0a6b5c5 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0xf0d19eb4 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0xf0f1bc9f sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf0f5e841 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0xf12caf22 clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0xf14b3993 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0xf157b07d regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0xf16651b9 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf19fc439 disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1cdd162 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0xf1d9454c snd_soc_unregister_card +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf22b02b6 md_run +EXPORT_SYMBOL_GPL vmlinux 0xf2523e74 amba_device_add +EXPORT_SYMBOL_GPL vmlinux 0xf25ace9c aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0xf2678df1 __get_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf284ec17 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL vmlinux 0xf2aa9a47 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xf2b1f20e snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL vmlinux 0xf2c69068 pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xf2e3d0e7 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0xf2f077cc pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0xf2f6f21d usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0xf2fc7f6e __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf30032a2 pinctrl_remove_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xf30fda27 lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf32aaed0 spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xf34dab19 tpm_open +EXPORT_SYMBOL_GPL vmlinux 0xf34e3152 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0xf3704854 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3b4b5a5 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xf3c37807 ahci_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xf3c4fd89 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0xf4072a9d dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0xf43d8f9b shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0xf43f50f0 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xf4458b55 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xf467ec23 usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4b19a41 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0xf4c24e04 __class_create +EXPORT_SYMBOL_GPL vmlinux 0xf4c314cb fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf4fc7385 ahci_restart_engine +EXPORT_SYMBOL_GPL vmlinux 0xf50fe097 tpm_write +EXPORT_SYMBOL_GPL vmlinux 0xf517d44d class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0xf539a260 proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf56dec38 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0xf5a2d830 device_create +EXPORT_SYMBOL_GPL vmlinux 0xf5a2f5c0 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5fef4e3 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf61e287a thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0xf65825da input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0xf673ba40 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0xf68d40fa ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0xf695597e bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0xf696fae8 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0xf6b0a562 mount_mtd +EXPORT_SYMBOL_GPL vmlinux 0xf6ccbfab nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf7186883 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf7224ed8 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0xf7252fba wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0xf7305879 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xf747c127 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0xf74c77f6 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf74dae0f idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf76b0a59 read_current_timer +EXPORT_SYMBOL_GPL vmlinux 0xf7714159 transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xf782083b tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf7970fb4 sdhci_pltfm_init +EXPORT_SYMBOL_GPL vmlinux 0xf7a3d1d0 cred_to_ucred +EXPORT_SYMBOL_GPL vmlinux 0xf7a4ba87 iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xf7bc2851 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0xf7bfecfd system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0xf7d0ff2e __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xf7e19dbc register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xf801d134 gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xf816c866 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0xf82f16b3 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf838682e regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0xf845c450 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xf846506f irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf8750d5e crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf881f584 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0xf88a9dcf devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf90241b4 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0xf905a057 snd_ctl_activate_id +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf935a32c of_property_read_string_helper +EXPORT_SYMBOL_GPL vmlinux 0xf93d6c2a __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0xf93eb8c7 queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xf949fdfe single_open_net +EXPORT_SYMBOL_GPL vmlinux 0xf9737c17 regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xf97f0093 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0xf9961f38 cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0xf99873f3 __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9b2c51e ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9e97068 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0xfa012fe7 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0xfa1bc97f dev_pm_opp_disable +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa56e500 ping_bind +EXPORT_SYMBOL_GPL vmlinux 0xfa7522db seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0xfa8e42eb i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0xfa9e61bb kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL vmlinux 0xfab82123 extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0xfab9c101 skb_gro_receive +EXPORT_SYMBOL_GPL vmlinux 0xfaba1fb8 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xfac0d811 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xfacb746b mtd_block_isbad +EXPORT_SYMBOL_GPL vmlinux 0xfaccfa8e rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xfad11846 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0xfaf7c257 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0xfb01ff92 ahci_reset_controller +EXPORT_SYMBOL_GPL vmlinux 0xfb09f907 inet_csk_reqsk_queue_prune +EXPORT_SYMBOL_GPL vmlinux 0xfb0ea1c2 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb4bee69 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xfb6e454a pinctrl_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb94f014 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xfbafce60 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0xfbbedefd of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0xfbcb158a devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xfbcb4177 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xfbcff4dc sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc39c4eb snd_soc_get_strobe +EXPORT_SYMBOL_GPL vmlinux 0xfc58d34e unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xfc8dfeef zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0xfcb7eac6 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfcdb4034 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0xfd1dc513 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xfd652f28 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0xfd6fa612 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0xfd8d1d7d class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xfdd4952a tpm_show_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xfde8952e usb_stor_CB_reset +EXPORT_SYMBOL_GPL vmlinux 0xfdf0a8ab mtd_unlock +EXPORT_SYMBOL_GPL vmlinux 0xfe0d00c0 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0xfe326254 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0xfe3eea48 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0xfe95e170 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfec0e8d6 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfeda4e1c look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0xfee50f28 devres_get +EXPORT_SYMBOL_GPL vmlinux 0xfee7df4b class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff309658 usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0xff31a502 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0xff4edc65 task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff5c7210 devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xff5cda7c wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0xff983a70 sdhci_resume_host +EXPORT_SYMBOL_GPL vmlinux 0xffa598e4 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0xffc4b110 vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0xffcf83fe __netpoll_free_async --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/armhf/generic-lpae.compiler +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/armhf/generic-lpae.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu/Linaro 4.8.4-2ubuntu1~14.04.3) 4.8.4 --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/armhf/generic-lpae.modules +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/armhf/generic-lpae.modules @@ -0,0 +1,2808 @@ +6lowpan +6pack +8021q +8250_dw +8255 +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm860x-ts +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +9p +9pnet +9pnet_virtio +a3d +a8293 +aat2870-regulator +aat2870_bl +ab3100 +ab3100-otp +ablk_helper +ac97_bus +acecad +act200l-sir +act_csum +act_gact +act_ipt +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +actisys-sir +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 +ad5930 +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 +ad9850 +ad9852 +ad9910 +ad9951 +ad_sigma_delta +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-keys +adp5520_bl +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads1015 +ads7828 +ads7846 +ads7871 +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adv7180 +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +aes-arm +aes-arm-bs +af-rxrpc +af9013 +af9033 +af_802154 +af_alg +af_key +af_packet_diag +affs +afs +ah4 +ah6 +ahci_platform +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +ak8975 +algif_hash +algif_skcipher +alphatrack +altera-stapl +altera_jtaguart +altera_ps2 +altera_uart +amba-pl010 +ambakmi +amc6821 +amplc_dio200 +amplc_dio200_common +amplc_pc236 +amplc_pc263 +ams369fg06 +analog +anatop-regulator +ansi_cprng +anubis +aoe +apbps2 +apds9300 +apds9802als +apds990x +appledisplay +appletalk +appletouch +ar5523 +ar7part +arc4 +arc_emac +arc_ps2 +arc_uart +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arm_big_little +arm_big_little_dt +armada +arp_tables +arpt_mangle +arptable_filter +as3711-regulator +as3711_bl +as3722-regulator +as5011 +asc7621 +asix +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at86rf230 +at91_can +at91_ether +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-pwm-bl +atmel-ssc +atmel_mxt_ts +atmel_pwm +atmtcp +atxp1 +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo-pixcir-ts +auo_k1900fb +auo_k1901fb +auo_k190x +auth_rpcgss +authenc +authencesn +autofs4 +ax25 +ax88179_178a +ax88796 +b2c2-flexcop +b2c2-flexcop-usb +b43 +b43legacy +b44 +bL_switcher_dummy_if +bas_gigaset +batman-adv +baycom_epp +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcache +bcm203x +bcm3510 +bcm5974 +bcm_wimax +bcma +bd6107 +befs +belkin_sa +bfs +bfusb +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluetooth +bma150 +bma180 +bmp085 +bmp085-i2c +bmp085-spi +bnep +bonding +bpa10x +bpck +bpck6 +bpqether +bq2415x_charger +bq24190_charger +bq24735-charger +bq27x00_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +broadsheetfb +bsd_comp +btmrvl +btmrvl_sdio +btmtk_usb +btrfs +btsdio +btusb +btwilink +bu21013_ts +bw-qcam +c-qcam +c67x00 +c6xdigio +c_can +c_can_platform +cachefiles +caif +caif_hsi +caif_serial +caif_socket +caif_usb +caif_virtio +camellia_generic +can +can-bcm +can-dev +can-gw +can-raw +capi +capidrv +carl9170 +cast5_generic +cast6_generic +cast_common +catc +cc770 +cc770_isa +cc770_platform +ccm +cdc-acm +cdc-phonet +cdc-wdm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc_subset +cedusb +ceph +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chnl_net +cifs +clearpad_tm1217 +clip +clk-max77686 +clk-s2mps11 +clk-si5351 +clk-twl6040 +clk-wm831x +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm36651 +cma3000_d0x +cma3000_d0x_i2c +cmac +cmtp +cobra +coda +comedi +comedi_bond +comedi_fc +comedi_parport +comedi_test +comm +configfs +cordic +core +cp210x +cpia2 +cpu-notifier-error-inject +cramfs +crc-ccitt +crc-itu-t +crc32 +crc7 +crc8 +cros_ec +cros_ec_i2c +cros_ec_keyb +cros_ec_spi +cryptd +crypto_null +crypto_user +cryptoloop +cs53l32a +cs89x0 +ctr +cts +cuse +cw1200_core +cw1200_wlan_sdio +cw1200_wlan_spi +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx24113 +cx24116 +cx24123 +cx25840 +cx82310_eth +cxacru +cxd2820r +cy8ctmg110_ts +cyapa +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-hwmon +da9052-regulator +da9052_bl +da9052_onkey +da9052_tsi +da9052_wdt +da9055-hwmon +da9055-regulator +da9055_onkey +da9055_wdt +da9063-regulator +da9210-regulator +das08 +das08_isa +das16m1 +das6402 +das800 +db9 +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +decnet +deflate +denali +denali_dt +des_generic +designware_i2s +dgap +dgrp +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +diskonchip +dlci +dlm +dm-bio-prison +dm-bufio +dm-cache +dm-cache-cleaner +dm-cache-mq +dm-crypt +dm-delay +dm-flakey +dm-log +dm-log-userspace +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 +dm9000 +dm9601 +dme1737 +dmm32at +dn_rtmsg +dnet +docg3 +docg4 +drbd +drm +drm_kms_helper +drm_usb +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsa_core +dsbr100 +dss1_divert +dstr +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +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-dw2102 +dvb-usb-ec168 +dvb-usb-friio +dvb-usb-gl861 +dvb-usb-gp8psk +dvb-usb-it913x +dvb-usb-lmedm04 +dvb-usb-m920x +dvb-usb-mxl111sf +dvb-usb-nova-t-usb2 +dvb-usb-opera +dvb-usb-pctv452e +dvb-usb-rtl28xxu +dvb-usb-technisat-usb2 +dvb-usb-ttusb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +dvb_usb_v2 +dw_dmac +dw_dmac_core +dw_mmc +dw_mmc-exynos +dw_mmc-pltfm +dw_mmc-socfpga +dw_wdt +dwc2 +dwc2_platform +dwc3 +dynapro +e4000 +ebt_802_3 +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ec100 +echo +edac_core +edt-ft5x06 +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efs +egalax_ts +ehset +elo +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em_canid +em_cmp +em_ipset +em_meta +em_nbyte +em_text +em_u32 +emc1403 +emc2103 +emc6w201 +emi26 +emi62 +empeg +ems_usb +enc28j60 +enclosure +epat +epia +eql +esd_usb2 +esi-sir +esp4 +esp6 +ethoc +evbug +exofs +extcon-adc-jack +extcon-arizona +extcon-gpio +extcon-max77693 +extcon-max8997 +extcon-palmas +ezusb +f2fs +f71805f +f71882fg +f75375s +f81232 +fakelb +fan53555 +faulty +fb_sys_fops +fc0011 +fc0012 +fc0013 +fc2580 +fcrypt +ff-memless +fid +fit2 +fit3 +fl512 +fld +flexcan +fm_drv +fmc +fmc-chardev +fmc-fakedev +fmc-trivial +fmc-write-eeprom +fotg210-hcd +fotg210-udc +freevxfs +friq +frpw +fsa9480 +fscache +ft1000 +ftdi-elan +ftdi_sio +ftgmac100 +ftl +ftmac100 +fujitsu_ts +fusbh200-hcd +g760a +g762 +g_acm_ms +g_audio +g_cdc +g_dbgp +g_ether +g_ffs +g_hid +g_mass_storage +g_midi +g_multi +g_ncm +g_nokia +g_printer +g_serial +g_webcam +g_zero +gadgetfs +gamecon +gameport +garmin_gps +garp +gcm +gdmtty +gdmulte +gdmwm +gen_probe +generic +generic-adc-battery +generic_bl +gf128mul +gf2k +gfs2 +ghash-generic +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +go7007 +go7007-loader +go7007-usb +goldfishfb +gp2ap002a00f +gp2ap020a00f +gpio +gpio-74x164 +gpio-addr-flash +gpio-adnp +gpio-adp5520 +gpio-adp5588 +gpio-arizona +gpio-charger +gpio-da9052 +gpio-da9055 +gpio-dwapb +gpio-fan +gpio-generic +gpio-grgpio +gpio-ir-recv +gpio-kempld +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-pca953x +gpio-pcf857x +gpio-rcar +gpio-regulator +gpio-tps65912 +gpio-ts5500 +gpio-twl6040 +gpio-ucb1400 +gpio-viperboard +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +gpio_backlight +gpio_keys +gpio_keys_polled +gpio_mouse +gpio_tilt_polled +grcan +gre +grip +grip_mp +gspca_benq +gspca_conex +gspca_cpia1 +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_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gtco +guillemot +gunze +hampshire +hanwang +hci +hci_uart +hci_vhci +hdlc +hdlc_cisco +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdlcdrv +hdpvr +hfc4s8s_l1 +hfc_usb +hfcsusb +hfs +hfsplus +hid +hid-a4tech +hid-apple +hid-appleir +hid-aureal +hid-axff +hid-belkin +hid-cherry +hid-chicony +hid-cypress +hid-dr +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-generic +hid-gyration +hid-holtek-kbd +hid-holtek-mouse +hid-holtekff +hid-huion +hid-icade +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-lenovo-tpkbd +hid-logitech +hid-logitech-dj +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hid-petalynx +hid-picolcd +hid-pl +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-gyro-3d +hid-sensor-hub +hid-sensor-iio-common +hid-sensor-magn-3d +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-wacom +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hidp +highbank_l2_edac +highbank_mc_edac +hih6130 +hisax +hisax_st5481 +hmc5843 +hmc6352 +host1x +hostap +hpfs +hsi +hsi_char +hso +hsr +htc-pasic3 +htu21 +huawei_cdc_ncm +hwmon-vid +hx8357 +i2400m +i2400m-usb +i2c-algo-bit +i2c-algo-pca +i2c-arb-gpio-challenge +i2c-cbus-gpio +i2c-designware-core +i2c-designware-platform +i2c-dev +i2c-diolan-u2c +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-rcar +i2c-sh_mobile +i2c-simtec +i2c-smbus +i2c-stub +i2c-taos-evm +i2c-tiny-usb +i2c-versatile +i2c-viperboard +i2c-xiic +ibmaem +ibmpex +ics932s401 +idmouse +ieee802154 +ifb +iforce +iguanair +ii_pci20kc +iio-trig-interrupt +iio-trig-periodic-rtc +iio-trig-sysfs +iio_dummy +iio_hwmon +ili210x +ili922x +ili9320 +imm +imon +impa7 +ims-pcu +imx074 +imx_thermal +ina209 +ina2xx +industrialio +industrialio-triggered-buffer +inet_diag +inexio +inftl +input-polldev +int51x1 +interact +interval_tree_test +inv-mpu6050 +io_edgeport +io_ti +iowarrior +ip6_gre +ip6_tables +ip6_tunnel +ip6_vti +ip6t_MASQUERADE +ip6t_NPT +ip6t_REJECT +ip6t_SYNPROXY +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_mh +ip6t_rpfilter +ip6t_rt +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6table_security +ip_gre +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netnet +ip_set_hash_netport +ip_set_hash_netportnet +ip_set_list_set +ip_tables +ip_tunnel +ip_vs +ip_vs_dh +ip_vs_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 +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ipheth +ipip +ipmi_devintf +ipmi_poweroff +ipmi_si +ipmi_watchdog +ipoctal +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_SYNPROXY +ipt_ULOG +ipt_ah +ipt_rpfilter +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +iptable_security +ipw +ipx +ir-jvc-decoder +ir-kbd-i2c +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +ir-rc5-decoder +ir-rc5-sz-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sony-decoder +ir-usb +ircomm +ircomm-tty +irda +irda-usb +irlan +irnet +irtty-sir +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl6271a-regulator +isl6421 +isl6423 +isofs +isp116x-hcd +isp1362-hcd +isp1704_charger +isp1760 +it87 +it913x-fe +itd1000 +itg3200 +iuu_phoenix +ix2505v +jc42 +jedec_probe +jffs2 +jfs +joydev +joydump +kafs +kalmia +kaweth +kbic +kbtab +kcomedilib +kempld-core +kempld_wdt +kernelcapi +keucr +keyspan +keyspan_pda +keyspan_remote +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kobil_sct +ks0108 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksocklnd +ktti +kvaser_usb +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 +leds-88pm860x +leds-adp5520 +leds-atmel-pwm +leds-bd2802 +leds-blinkm +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-lm3530 +leds-lm3533 +leds-lm355x +leds-lm3642 +leds-lp3944 +leds-lp5521 +leds-lp5523 +leds-lp5562 +leds-lp55xx-common +leds-lp8501 +leds-lp8788 +leds-lt3593 +leds-max8997 +leds-mc13783 +leds-ot200 +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pca9685 +leds-pwm +leds-regulator +leds-tca6507 +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-oneshot +ledtrig-timer +ledtrig-transient +legousbtower +lg-vl600 +lg2160 +lgdt3305 +lgdt330x +lgs8gxx +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libceph +libcfs +libcomposite +libcrc32c +libertas +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libiscsi +libiscsi_tcp +libore +libosd +libsas +lightning +line6usb +lineage-pem +linear +lirc_dev +lirc_igorplugusb +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +litelink-sir +lkkbd +llc +llc2 +llog_test +lm25066 +lm3533-als +lm3533-core +lm3533-ctrlbank +lm3533_bl +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 +lov +lp +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp8755 +lp8788-charger +lp8788_bl +lpddr_cmds +lru_cache +lrw +ltc2978 +ltc4151 +ltc4215 +ltc4245 +ltc4261 +ltv350qv +lustre +lv5207lp +lvfs +lz4 +lz4_compress +lz4hc +lz4hc_compress +m25p80 +m2m-deinterlace +m88rs2000 +mISDN_core +mISDN_dsp +ma600-sir +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +mac80211 +mac80211_hwsim +mac802154 +macb +macvlan +macvtap +mag3110 +magellan +map_absent +map_ram +map_rom +matrix-keymap +matrix_keypad +max1111 +max11801_ts +max1363 +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max2165 +max3100 +max34440 +max517 +max63xx_wdt +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77686 +max77693 +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925-regulator +max8925_bl +max8925_onkey +max8925_power +max8952 +max8973-regulator +max8997 +max8997_charger +max8998 +max8998_charger +mb86a20s +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc44s803 +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp4725 +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdc +mdc800 +mem2mem_testdev +memstick +mena21_wdt +metro-usb +metronomefb +mg_disk +mgc +michael_mic +microread +microread_i2c +microtek +mii +minix +mip6 +mk712 +mkiss +mma8450 +mms114 +mos7720 +mos7840 +mpc624 +mpoa +mpr121_touchkey +mpu3050 +mrf24j40 +mrp +ms_block +msdos +msp3400 +mspro_block +mt2060 +mt2063 +mt20xx +mt2266 +mt29f_spinand +mt312 +mt352 +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd_dataflash +mtdoops +mtdram +mtdswap +mtouch +multipath +multiq3 +mv88e6060 +mv88e6xxx_drv +mv_u3d_core +mv_udc +mvmdio +mwifiex +mwifiex_sdio +mwifiex_usb +mxl111sf-demod +mxl111sf-tuner +mxl5005s +mxl5007t +n_hdlc +n_r3964 +n_tracerouter +n_tracesink +nandsim +nau7802 +navman +nbd +nci +ncpfs +nct6775 +net1080 +net2272 +netconsole +netlink_diag +netprio_cgroup +netrom +newtonkbd +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 +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nf_synproxy_core +nf_tables +nf_tables_arp +nf_tables_bridge +nf_tables_ipv4 +nf_tables_ipv6 +nfc +nfc_digital +nfcsim +nfcwilink +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nfs +nfs_acl +nfs_layout_nfsv41_files +nfsd +nfsv2 +nfsv3 +nfsv4 +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 +nft_limit +nft_log +nft_meta +nft_nat +nft_rbtree +nft_reject_ipv4 +nftl +ni_at_ao +ni_atmio +ni_atmio16d +ni_labpc +ni_tio +nilfs2 +nlmon +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +notifier-error-inject +ns558 +ntc_thermistor +ntfs +null_blk +nvram +nxt200x +nxt6000 +obdclass +obdecho +objlayoutdriver +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stack_o2cb +ocfs2_stack_user +ocfs2_stackglue +old_belkin-sir +olpc_apsp +omfs +omninet +on20 +on26 +onenand +opencores-kbd +openvswitch +oprofile +opticon +option +osc +osd +osdblk +osst +oti6858 +output +ov2640 +ov5642 +ov6650 +ov7640 +ov772x +ov9640 +ov9740 +overlayfs +oxu210hp-hcd +p54common +p54spi +p54usb +p8022 +p8023 +palmas-regulator +pandora_bl +panel +paride +parkbd +parport +parport_ax88796 +parport_pc +pata_arasan_cf +pata_of_platform +pata_platform +pc87360 +pc87427 +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pcl711 +pcl724 +pcl726 +pcl730 +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-core +phy-exynos-dp-video +phy-gpio-vbus-usb +phy-isp1301 +phy-rcar-usb +phy-samsung-usb +phy-samsung-usb2 +phy-samsung-usb3 +physmap +physmap_of +pixcir_i2c_ts +pktcdvd +pktgen +pl2303 +pl330 +plat-ram +plat_nand +platform_lcd +plip +plusb +pm-notifier-error-inject +pmbus +pmbus_core +pn533 +pn544 +pn544_i2c +pn_pep +poc +port100 +poseidon +powermate +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +ppp_synctty +pppoatm +pppoe +pppox +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +ps2mult +psmouse +psnap +pt +ptlrpc +pvrusb2 +pwc +pwm-pca9685 +pwm-twl +pwm-twl-led +pwm_bl +pxa27x_udc +qcaux +qcserial +qinfo_probe +qmi_wwan +qnx4 +qnx6 +qt1010 +qt1070 +qt2160 +quatech2 +quota_tree +quota_v1 +quota_v2 +r8152 +r815x +r8188eu +r820t +r8712u +r8a66597-hcd +r8a66597-udc +radio-i2c-si470x +radio-keene +radio-ma901 +radio-mr800 +radio-shark +radio-si4713 +radio-si476x +radio-tea5764 +radio-usb-si470x +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +raw +rbd +rbtree_test +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-em-terratec +rc-encore-enltv +rc-encore-enltv-fm53 +rc-encore-enltv2 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-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-tbs-nec +rc-technisat-usb2 +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-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rc5t583-regulator +rcar-du-drm +rcar_vin +rds +rds_tcp +redboot +redrat3 +reiserfs +remoteproc +renesas_usbhs +retu-mfd +retu-pwrbutton +retu_wdt +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +rio500 +rj54n1cb0c +rmd128 +rmd160 +rmd256 +rmd320 +rndis_host +rndis_wlan +romfs +rose +rotary_encoder +rpcsec_gss_krb5 +rt2500usb +rt2800lib +rt2800usb +rt2x00lib +rt2x00usb +rt73usb +rtc-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-as3722 +rtc-bq32k +rtc-bq4802 +rtc-cmos +rtc-da9052 +rtc-da9055 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1742 +rtc-ds2404 +rtc-ds3232 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-hid-sensor-time +rtc-isl12022 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max77686 +rtc-max8907 +rtc-max8925 +rtc-max8997 +rtc-max8998 +rtc-mc13xxx +rtc-moxart +rtc-msm6242 +rtc-palmas +rtc-pcf2123 +rtc-pcf2127 +rtc-pcf50633 +rtc-pcf8523 +rtc-pcf8563 +rtc-pcf8583 +rtc-pl030 +rtc-r9701 +rtc-rc5t583 +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 +rtl8150 +rtl8187 +rtl8192c-common +rtl8192cu +rtl_usb +rtlwifi +rts5139 +rx51_battery +rxkad +s1d13xxxfb +s2250 +s2255drv +s526 +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s6e63m0 +s921 +saa7115 +saa7706h +safe_serial +salsa20_generic +samsung-keypad +sata_mv +sata_rcar +sbs-battery +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_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +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_tgt +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_srp +sctp +sctp_probe +sdhci-pxav2 +sdhci-pxav3 +sdio_uart +sdr-msi3101 +seed +seqiv +ser_gigaset +serial2002 +serio_raw +sermouse +serpent_generic +serport +serqt_usb2 +ses +sh-sci +sh_eth +sh_keysc +sh_mobile_ceu_camera +sh_mobile_csi2 +sh_veu +sha1-arm +shark2 +shmob-drm +sht15 +sht21 +si21xx +si4713-i2c +si476x-core +sidewinder +sierra +sierra_net +sil164 +sir-dev +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_of_platform +sja1000_platform +skel +sl811-hcd +slcan +slip +slram +sm501 +sm501fb +sm_ftl +smb347-charger +smc911x +smc91x +smm665 +smsc47b397 +smsc47m1 +smsc47m192 +smsc75xx +smsc911x +smsc95xx +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd-aaci +snd-ac97-codec +snd-aloop +snd-at73c213 +snd-dummy +snd-hrtimer +snd-hwdep +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-atmel-pcm +snd-soc-si476x +snd-soc-simple-card +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usbmidi-lib +snd-virmidi +soc_camera +soc_camera_platform +soc_mediabus +soc_scale_crop +softdog +softing +sony-btf-mpx +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-bitbang +spi-butterfly +spi-dw +spi-dw-mmio +spi-gpio +spi-lm70llp +spi-oc-tiny +spi-pl022 +spi-sc18is602 +spi-tle62x0 +spi-xcomm +spi_ks8995 +spidev +squashfs +sr9700 +ssb +ssd1307fb +ssfdc +sst25l +ssu100 +st +st-asc +st1232 +st_accel +st_accel_i2c +st_accel_spi +st_drv +st_gyro +st_gyro_i2c +st_gyro_spi +st_magn +st_magn_i2c +st_magn_spi +st_pressure +st_pressure_i2c +st_pressure_spi +st_sensors +st_sensors_i2c +st_sensors_spi +stb0899 +stb6000 +stb6100 +ste_modem_rproc +stinger +stir4200 +stk1160 +stkwebcam +stmmac +stmpe-keypad +stmpe-ts +stowaway +stp +streamzap +stv0288 +stv0297 +stv0299 +stv0900 +stv090x +stv6110 +stv6110x +sunkbd +sunrpc +sur40 +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +sysv +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +tc3589x-keypad +tca6416-keypad +tca8418_keypad +tcm_fc +tcm_loop +tcm_usb_gadget +tcp_bic +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 +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-kprobes +test-kstrtox +test-string_helpers +test_power +tgr192 +thmc50 +ti-adc081c +ti_dac7512 +ti_usb_3410_5052 +timb_dma +timblogiw +timbuart +timeriomem-rng +tipc +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmio_mmc +tmio_mmc_core +tmio_nand +tmiofb +tmp006 +tmp102 +tmp401 +tmp421 +toim3232-sir +touchit213 +touchright +touchwin +tpm-rng +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm_i2c_stm_st33 +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-charger +tps65090-regulator +tps65217 +tps65217-regulator +tps65217_bl +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +tranzport +ts2020 +ts_bm +ts_fsm +ts_kmp +tsc2005 +tsc2007 +tsc40 +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +tsl4531 +ttpci-eeprom +ttusbir +tua9001 +tuner +tuner-simple +tuner-types +tuner-xc2028 +tuner_it913x +tunnel4 +tunnel6 +turbografx +tveeprom +tvp5150 +tw2804 +tw9903 +tw9906 +tw9910 +twidjoy +twl4030-madc +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_charger +twl4030_keypad +twl4030_madc_battery +twl4030_wdt +twl6030-gpadc +twl6040-vibra +twofish_common +twofish_generic +u132-hcd +u_ether +u_rndis +u_serial +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +uda1342 +udf +udl +udlfb +udp_diag +ueagle-atm +ufs +ufshcd +ufshcd-pltfrm +uhid +uio +uio_dmem_genirq +uio_pdrv_genirq +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 +usb-serial-simple +usb3503 +usb8xxx +usb_8dev +usb_debug +usb_f_acm +usb_f_ecm +usb_f_ecm_subset +usb_f_eem +usb_f_mass_storage +usb_f_ncm +usb_f_obex +usb_f_phonet +usb_f_rndis +usb_f_serial +usb_f_ss_lb +usb_gigaset +usb_wwan +usbatm +usbdux +usbduxfast +usbduxsigma +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usbsevseg +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +ux500 +v4l2-common +v4l2-dv-timings +v4l2-int-device +v4l2-mem2mem +vcan +vcnl4000 +veth +vexpress +vexpress-spc-cpufreq +vfio +vgg2432a4 +vhci-hcd +vhost +vhost_net +vhost_scsi +via-velocity +videobuf-core +videobuf-dma-contig +videobuf-dvb +videobuf-vmalloc +videobuf2-core +videobuf2-dma-contig +videobuf2-memops +videobuf2-vmalloc +videodev +viperboard +viperboard_adc +virtio-rng +virtio_scsi +virtual +visor +vivi +vmac +vmk80xx +vringh +vsock +vsxxxaa +vt1211 +vt6656_stage +vub300 +vxlan +w1-gpio +w1_bq27000 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1_smem +w1_therm +w35und +w5100 +w5300 +w83627ehf +w83627hf +w83781d +w83791d +w83792d +w83793 +w83795 +w83l785ts +w83l786ng +w90p910_ts +w9966 +wacom +wacom_i2c +wacom_w8001 +walkera0701 +warrior +wcn36xx +whiteheat +wimax +wire +wishbone-serial +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wlcore +wlcore_sdio +wlcore_spi +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x-ts +wm831x_backup +wm831x_bl +wm831x_power +wm831x_wdt +wm8350-hwmon +wm8350-regulator +wm8350_power +wm8350_wdt +wm8400-regulator +wm8775 +wm8994-regulator +wm97xx-ts +wp512 +x25 +x25_asy +x_tables +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 +xgene-enet +xgmac +xilinx_uartps +xillybus_core +xillybus_of +xor +xor-neon +xpad +xsens_mt +xt_AUDIT +xt_CHECKSUM +xt_CLASSIFY +xt_CONNSECMARK +xt_CT +xt_DSCP +xt_HL +xt_HMARK +xt_IDLETIMER +xt_LED +xt_LOG +xt_NETMAP +xt_NFLOG +xt_NFQUEUE +xt_RATEEST +xt_REDIRECT +xt_SECMARK +xt_TCPMSS +xt_TCPOPTSTRIP +xt_TEE +xt_TPROXY +xt_TRACE +xt_addrtype +xt_bpf +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_conntrack +xt_cpu +xt_dccp +xt_devgroup +xt_dscp +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_iprange +xt_ipvs +xt_length +xt_limit +xt_mac +xt_mark +xt_multiport +xt_nat +xt_nfacct +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_realm +xt_recent +xt_sctp +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_tcpudp +xt_time +xt_u32 +xtkbd +xts +xusbatm +xz_dec_test +yam +yealink +yurex +zaurus +zd1201 +zd1211rw +zforce_ts +zhenhua +zl10039 +zl10353 +zl6100 +zlib +zr364xx +zram +zte_ev --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/armhf/generic.compiler +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/armhf/generic.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu/Linaro 4.8.4-2ubuntu1~14.04.3) 4.8.4 --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/armhf/generic.modules +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/armhf/generic.modules @@ -0,0 +1,3673 @@ +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250_dw +8255 +8255_pci +8390 +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm860x-ts +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +9p +9pnet +9pnet_rdma +9pnet_virtio +DAC960 +a100u2w +a3d +a8293 +aacraid +aat2870-regulator +aat2870_bl +ab3100 +ab3100-otp +ablk_helper +acard-ahci +acecad +acenic +act200l-sir +act_csum +act_gact +act_ipt +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +actisys-sir +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 +ad5930 +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 +ad9850 +ad9852 +ad9910 +ad9951 +ad_sigma_delta +adcxx +addi_apci_035 +addi_apci_1032 +addi_apci_1500 +addi_apci_1516 +addi_apci_1564 +addi_apci_16xx +addi_apci_2032 +addi_apci_2200 +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 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1275 +adm8211 +adm9240 +adp5520-keys +adp5520_bl +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads1015 +ads7828 +ads7846 +ads7871 +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adv7180 +adv_pci1710 +adv_pci1723 +adv_pci1724 +adv_pci_dio +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +aes-arm +aes-arm-bs +af-rxrpc +af9013 +af9033 +af_802154 +af_alg +af_key +af_packet_diag +affs +afs +ah4 +ah6 +ahci +aic79xx +aic7xxx +aic94xx +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +ak8975 +algif_hash +algif_skcipher +alim7101_wdt +alphatrack +altera-ci +altera-stapl +altera_jtaguart +altera_ps2 +altera_uart +alx +amba-pl010 +ambakmi +amc6821 +amd5536udc +amd8111e +amplc_dio200 +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pc263 +amplc_pci224 +amplc_pci230 +amplc_pci263 +ams369fg06 +analog +anatop-regulator +ansi_cprng +anubis +aoe +apbps2 +apds9300 +apds9802als +apds990x +appledisplay +appletalk +appletouch +applicom +ar5523 +ar7part +arc-rawmode +arc-rimi +arc4 +arc_emac +arc_ps2 +arc_uart +arcmsr +arcnet +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arm_big_little +arm_big_little_dt +armada +arp_tables +arpt_mangle +arptable_filter +as3711-regulator +as3711_bl +as3722-regulator +as5011 +asc7621 +asix +ast +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at86rf230 +at91_can +at91_ether +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-pwm-bl +atmel-ssc +atmel_mxt_ts +atmel_pci +atmel_pwm +atmtcp +atp870u +atxp1 +aty128fb +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo-pixcir-ts +auo_k1900fb +auo_k1901fb +auo_k190x +auth_rpcgss +authenc +authencesn +autofs4 +avmfritz +ax25 +ax88179_178a +ax88796 +b1 +b1dma +b1pci +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b43 +b43legacy +b44 +bL_switcher_dummy_if +bas_gigaset +batman-adv +baycom_epp +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcache +bcm203x +bcm3510 +bcm5974 +bcm_wimax +bcma +bd6107 +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluetooth +bma150 +bma180 +bmp085 +bmp085-i2c +bmp085-spi +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bonding +bpa10x +bpck +bpck6 +bpctl_mod +bpqether +bq2415x_charger +bq24190_charger +bq24735-charger +bq27x00_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +broadsheetfb +bsd_comp +bt878 +btcoexist +btcx-risc +btmrvl +btmrvl_sdio +btmtk_usb +btrfs +btsdio +bttv +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +bw-qcam +bypass +c-qcam +c4 +c67x00 +c6xdigio +c_can +c_can_pci +c_can_platform +cachefiles +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_pcidas +cb_pcidas64 +cb_pcidda +cb_pcimdas +cb_pcimdda +cc770 +cc770_isa +cc770_platform +cciss +ccm +cdc-acm +cdc-phonet +cdc-wdm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc_subset +cedusb +ceph +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chnl_net +cifs +cirrus +cirrusfb +clearpad_tm1217 +clip +clk-max77686 +clk-s2mps11 +clk-si5351 +clk-twl6040 +clk-wm831x +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm36651 +cma3000_d0x +cma3000_d0x_i2c +cmac +cmtp +cnic +cobra +coda +com20020 +com20020-pci +com90io +com90xx +comedi +comedi_bond +comedi_fc +comedi_parport +comedi_test +comm +configfs +connector-analog-tv +connector-dvi +contec_pci_dio +cordic +core +cp210x +cpia2 +cppi41 +cpu-notifier-error-inject +cramfs +crc-ccitt +crc-itu-t +crc32 +crc7 +crc8 +cros_ec +cros_ec_i2c +cros_ec_keyb +cros_ec_spi +cryptd +crypto_null +crypto_user +cryptoloop +crystalhd +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 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx8800 +cx8802 +cx88xx +cxacru +cxd2099 +cxd2820r +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cxt1e1 +cy8ctmg110_ts +cyapa +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-hwmon +da9052-regulator +da9052_bl +da9052_onkey +da9052_tsi +da9052_wdt +da9055-hwmon +da9055-regulator +da9055_onkey +da9055_wdt +da9063-regulator +da9210-regulator +daqboard2000 +das08 +das08_isa +das08_pci +das16m1 +das6402 +das800 +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 +dgrp +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +diskonchip +diva_idi +diva_mnt +divacapi +divadidd +divas +dl2k +dlci +dlm +dm-bio-prison +dm-bufio +dm-cache +dm-cache-cleaner +dm-cache-mq +dm-crypt +dm-delay +dm-flakey +dm-log +dm-log-userspace +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 +dm1105 +dm644x_ccdc +dm9000 +dm9601 +dme1737 +dmfe +dmm32at +dmx3191d +dn_rtmsg +dnet +docg3 +docg4 +drbd +drm +drm_kms_helper +drm_usb +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsa_core +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +dt3000 +dt3155v4l +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-dw2102 +dvb-usb-ec168 +dvb-usb-friio +dvb-usb-gl861 +dvb-usb-gp8psk +dvb-usb-it913x +dvb-usb-lmedm04 +dvb-usb-m920x +dvb-usb-mxl111sf +dvb-usb-nova-t-usb2 +dvb-usb-opera +dvb-usb-pctv452e +dvb-usb-rtl28xxu +dvb-usb-technisat-usb2 +dvb-usb-ttusb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +dvb_usb_v2 +dw_dmac +dw_dmac_core +dw_dmac_pci +dw_mmc +dw_mmc-exynos +dw_mmc-pci +dw_mmc-pltfm +dw_mmc-socfpga +dw_wdt +dwc2 +dwc2_pci +dwc2_platform +dwc3 +dwc3-omap +dwc3-pci +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e4000 +earth-pt1 +ebt_802_3 +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ec100 +echo +edac_core +edt-ft5x06 +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efs +egalax_ts +ehset +elo +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em_canid +em_cmp +em_ipset +em_meta +em_nbyte +em_text +em_u32 +emc1403 +emc2103 +emc6w201 +emi26 +emi62 +emif +empeg +ems_pci +ems_usb +emu10k1-gp +enc28j60 +enclosure +encoder-tfp410 +eni +enic +epat +epia +epic100 +eql +esas2r +esd_usb2 +esi-sir +esp4 +esp6 +et131x +ethoc +evbug +exofs +extcon-adc-jack +extcon-arizona +extcon-gpio +extcon-max77693 +extcon-max8997 +extcon-palmas +ezusb +f2fs +f71805f +f71882fg +f75375s +f81232 +fakelb +fan53555 +farsync +faulty +fb_ddc +fb_sys_fops +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 +fm801-gp +fm_drv +fmc +fmc-chardev +fmc-fakedev +fmc-trivial +fmc-write-eeprom +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +freevxfs +friq +frpw +fsa9480 +fscache +fsl_lpuart +ft1000 +ftdi-elan +ftdi_sio +ftgmac100 +ftl +ftmac100 +fujitsu_ts +fusb300_udc +fusbh200-hcd +g450_pll +g760a +g762 +g_acm_ms +g_audio +g_cdc +g_dbgp +g_ether +g_ffs +g_hid +g_mass_storage +g_midi +g_multi +g_ncm +g_nokia +g_printer +g_serial +g_webcam +g_zero +gadgetfs +gamecon +gameport +garmin_gps +garp +gcm +gdmtty +gdmulte +gdmwm +gen_probe +generic +generic-adc-battery +generic_bl +gf128mul +gf2k +gfs2 +ghash-generic +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +go7007 +go7007-loader +go7007-usb +goku_udc +goldfishfb +gp2ap002a00f +gp2ap020a00f +gpio +gpio-74x164 +gpio-addr-flash +gpio-adnp +gpio-adp5520 +gpio-adp5588 +gpio-amd8111 +gpio-arizona +gpio-charger +gpio-da9052 +gpio-da9055 +gpio-dwapb +gpio-fan +gpio-grgpio +gpio-ir-recv +gpio-janz-ttl +gpio-kempld +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio-pca953x +gpio-pcf857x +gpio-rcar +gpio-rdc321x +gpio-regulator +gpio-tps65912 +gpio-ts5500 +gpio-ucb1400 +gpio-viperboard +gpio-vx855 +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +gpio_backlight +gpio_keys +gpio_keys_polled +gpio_mouse +gpio_tilt_polled +grcan +gre +grip +grip_mp +gsc_hpdi +gspca_benq +gspca_conex +gspca_cpia1 +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_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gtco +guillemot +gunze +hamachi +hampshire +hanwang +hci +hci_uart +hci_vhci +hdlc +hdlc_cisco +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdlcdrv +hdpvr +he +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfc_usb +hfcmulti +hfcpci +hfcsusb +hfs +hfsplus +hid +hid-a4tech +hid-apple +hid-appleir +hid-aureal +hid-axff +hid-belkin +hid-cherry +hid-chicony +hid-cypress +hid-dr +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-generic +hid-gyration +hid-holtek-kbd +hid-holtek-mouse +hid-holtekff +hid-huion +hid-icade +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-lenovo-tpkbd +hid-logitech +hid-logitech-dj +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hid-petalynx +hid-picolcd +hid-pl +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-gyro-3d +hid-sensor-hub +hid-sensor-iio-common +hid-sensor-magn-3d +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-wacom +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hidp +hifn_795x +highbank_l2_edac +highbank_mc_edac +hih6130 +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hmc5843 +hmc6352 +hopper +host1x +hostap +hostap_pci +hostap_plx +hp100 +hpfs +hpilo +hpsa +hptiop +hsi +hsi_char +hso +hsr +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-designware-core +i2c-designware-pci +i2c-designware-platform +i2c-dev +i2c-diolan-u2c +i2c-eg20t +i2c-gpio +i2c-hid +i2c-i801 +i2c-isch +i2c-kempld +i2c-matroxfb +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-rcar +i2c-sh_mobile +i2c-simtec +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-smbus +i2c-stub +i2c-taos-evm +i2c-tegra +i2c-tiny-usb +i2c-versatile +i2c-via +i2c-viapro +i2c-viperboard +i2c-xiic +i2o_block +i2o_bus +i2o_core +i2o_proc +i2o_scsi +i40e +i40evf +i5k_amb +i6300esb +i740fb +ib_addr +ib_cm +ib_core +ib_ipoib +ib_iser +ib_isert +ib_mad +ib_mthca +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +ibmaem +ibmpex +icp_multi +ics932s401 +idmouse +idt77252 +ieee802154 +ifb +iforce +igb +igbvf +iguanair +ii_pci20kc +iio-trig-interrupt +iio-trig-periodic-rtc +iio-trig-sysfs +iio_dummy +iio_hwmon +ili210x +ili922x +ili9320 +imm +imon +impa7 +ims-pcu +imx074 +imx6q-cpufreq +imx_thermal +ina209 +ina2xx +industrialio +industrialio-triggered-buffer +inet_diag +inexio +inftl +initio +input-polldev +int51x1 +intel_vr_nor +interact +interval_tree_test +inv-mpu6050 +io_edgeport +io_ti +ioc4 +iowarrior +ip6_gre +ip6_tables +ip6_tunnel +ip6_vti +ip6t_MASQUERADE +ip6t_NPT +ip6t_REJECT +ip6t_SYNPROXY +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_mh +ip6t_rpfilter +ip6t_rt +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6table_security +ip_gre +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netnet +ip_set_hash_netport +ip_set_hash_netportnet +ip_set_list_set +ip_tables +ip_tunnel +ip_vs +ip_vs_dh +ip_vs_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 +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ipg +iphase +ipheth +ipip +ipmi_devintf +ipmi_poweroff +ipmi_si +ipmi_watchdog +ipoctal +ipr +ips +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_SYNPROXY +ipt_ULOG +ipt_ah +ipt_rpfilter +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +iptable_security +ipw +ipw2100 +ipw2200 +ipx +ir-jvc-decoder +ir-kbd-i2c +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +ir-rc5-decoder +ir-rc5-sz-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sony-decoder +ir-usb +ircomm +ircomm-tty +irda +irda-usb +irlan +irnet +irtty-sir +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isofs +isp116x-hcd +isp1362-hcd +isp1704_charger +isp1760 +it87 +it913x-fe +itd1000 +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iw_nes +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsm +kafs +kalmia +kaweth +kbic +kbtab +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keucr +keyspan +keyspan_pda +keyspan_remote +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +ko2iblnd +kobil_sct +ks0108 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksocklnd +ksz884x +ktti +kvaser_pci +kvaser_usb +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 +leds-88pm860x +leds-adp5520 +leds-atmel-pwm +leds-bd2802 +leds-blinkm +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-lm3530 +leds-lm3533 +leds-lm355x +leds-lm3642 +leds-lp3944 +leds-lp5521 +leds-lp5523 +leds-lp5562 +leds-lp55xx-common +leds-lp8501 +leds-lp8788 +leds-lt3593 +leds-max8997 +leds-mc13783 +leds-ot200 +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pca9685 +leds-pwm +leds-regulator +leds-tca6507 +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-oneshot +ledtrig-timer +ledtrig-transient +legousbtower +lg-vl600 +lg2160 +lgdt3305 +lgdt330x +lgs8gxx +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 +libsrp +lightning +line6usb +lineage-pem +linear +lirc_bt829 +lirc_dev +lirc_igorplugusb +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +litelink-sir +lkkbd +llc +llc2 +llog_test +lm25066 +lm3533-als +lm3533-core +lm3533-ctrlbank +lm3533_bl +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 +lov +lp +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp8755 +lp8788-charger +lp8788_bl +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc2978 +ltc4151 +ltc4215 +ltc4245 +ltc4261 +ltv350qv +lustre +lv5207lp +lvfs +lz4 +lz4_compress +lz4hc +lz4hc_compress +m25p80 +m2m-deinterlace +m52790 +m88rs2000 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +ma600-sir +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +mac80211 +mac80211_hwsim +mac802154 +macb +macmodes +macvlan +macvtap +mag3110 +magellan +mailbox_omap2 +mantis +mantis_core +map_absent +map_ram +map_rom +matrix-keymap +matrix_keypad +matrox_w1 +matroxfb_DAC1064 +matroxfb_Ti3026 +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +max1111 +max11801_ts +max1363 +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max2165 +max3100 +max34440 +max517 +max63xx_wdt +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77686 +max77693 +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925-regulator +max8925_bl +max8925_onkey +max8925_power +max8952 +max8973-regulator +max8997 +max8997_charger +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 +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp4725 +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdc +mdc800 +mdio +me4000 +me_daq +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mem2mem_testdev +memstick +mena21_wdt +metro-usb +metronomefb +mfd +mg_disk +mga +mgc +michael_mic +microread +microread_i2c +microtek +mii +minix +mip6 +mite +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mma8450 +mms114 +mos7720 +mos7840 +moxa +mpc624 +mpoa +mpr121_touchkey +mpt2sas +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +mrst_max3110 +ms_block +msdos +msp3400 +mspro_block +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt29f_spinand +mt312 +mt352 +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd_dataflash +mtdoops +mtdram +mtdswap +mtip32xx +mtouch +multipath +multiq3 +mv88e6060 +mv88e6xxx_drv +mv_u3d_core +mv_udc +mvmdio +mvsas +mvumi +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxc_w1 +mxl111sf-demod +mxl111sf-tuner +mxl5005s +mxl5007t +mxser +myri10ge +n_hdlc +n_r3964 +n_tracerouter +n_tracesink +nandsim +natsemi +nau7802 +navman +nbd +nci +ncpfs +nct6775 +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netlink_diag +netprio_cgroup +netrom +netxen_nic +newtonkbd +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 +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nf_synproxy_core +nf_tables +nf_tables_arp +nf_tables_bridge +nf_tables_ipv4 +nf_tables_ipv6 +nfc +nfc_digital +nfcsim +nfcwilink +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nfs +nfs_acl +nfs_layout_nfsv41_files +nfsd +nfsv2 +nfsv3 +nfsv4 +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 +nft_limit +nft_log +nft_meta +nft_nat +nft_rbtree +nft_reject_ipv4 +nftl +ngene +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_at_ao +ni_atmio +ni_atmio16d +ni_labpc +ni_labpc_pci +ni_pcidio +ni_pcimio +ni_tio +ni_tiocmd +nicstar +nilfs2 +niu +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 +ns558 +ns83820 +nsp32 +ntc_thermistor +ntfs +null_blk +nvec +nvec_kbd +nvec_paz00 +nvec_power +nvec_ps2 +nvidiafb +nvme +nvram +nxt200x +nxt6000 +obdclass +obdecho +objlayoutdriver +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stack_o2cb +ocfs2_stack_user +ocfs2_stackglue +ocrdma +old_belkin-sir +olpc_apsp +omap +omap-aes +omap-mailbox +omap-ocp2scp +omap-rng +omap-sham +omap-vout +omap2 +omap2430 +omap3-rom-rng +omap4-keypad +omap_hdq +omap_remoteproc +omap_wdt +omapdrm +omfs +omninet +on20 +on26 +onenand +opencores-kbd +openvswitch +oprofile +opticon +option +or51132 +or51211 +orinoco +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +osc +osd +osdblk +osst +oti6858 +output +ov2640 +ov5642 +ov6650 +ov7640 +ov7670 +ov772x +ov9640 +ov9740 +overlayfs +oxu210hp-hcd +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +palmas-regulator +pandora_bl +panel +panel-dpi +panel-dsi-cm +panel-lgphilips-lb035q02 +panel-nec-nl8048hl11 +panel-sharp-ls037v7dw01 +panel-sony-acx565akm +panel-tpo-td028ttec1 +panel-tpo-td043mtea1 +paride +parkbd +parport +parport_ax88796 +parport_pc +parport_serial +pata_ali +pata_amd +pata_arasan_cf +pata_artop +pata_atiixp +pata_atp867x +pata_cmd640 +pata_cmd64x +pata_cs5520 +pata_cs5530 +pata_cs5536 +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_sc1200 +pata_sch +pata_serverworks +pata_sil680 +pata_sl82c105 +pata_triflex +pata_via +pc300too +pc87360 +pc87427 +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_can +pch_phub +pch_uart +pch_udc +pci +pci-stub +pci200syn +pcips2 +pcl711 +pcl724 +pcl726 +pcl730 +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 +phison +phonet +phram +phy-am335x +phy-am335x-control +phy-exynos-dp-video +phy-gpio-vbus-usb +phy-isp1301 +phy-omap-usb3 +phy-rcar-usb +phy-samsung-usb +phy-samsung-usb2 +phy-samsung-usb3 +phy-twl4030-usb +phy-twl6030-usb +physmap +physmap_of +pixcir_i2c_ts +pktcdvd +pktgen +pl2303 +pl330 +plat-ram +plat_nand +platform_lcd +plip +plusb +pluto2 +plx_pci +pm-notifier-error-inject +pm2fb +pm3fb +pm80xx +pmbus +pmbus_core +pmc551 +pmcraid +pn533 +pn544 +pn544_i2c +pn_pep +poc +port100 +poseidon +powermate +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +ppp_synctty +pppoatm +pppoe +pppox +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +ps2mult +psmouse +psnap +pt +ptlrpc +pvrusb2 +pwc +pwm-pca9685 +pwm-tegra +pwm-twl +pwm-twl-led +pwm_bl +pxa27x_udc +qcaux +qcserial +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qmi_wwan +qnx4 +qnx6 +qt1010 +qt1070 +qt2160 +quatech2 +quota_tree +quota_v1 +quota_v2 +qxl +r128 +r592 +r6040 +r8152 +r815x +r8169 +r8187se +r8188eu +r8192e_pci +r8192u_usb +r820t +r852 +r8712u +r8a66597-hcd +r8a66597-udc +radeon +radeonfb +radio-i2c-si470x +radio-keene +radio-ma901 +radio-maxiradio +radio-mr800 +radio-shark +radio-si4713 +radio-si476x +radio-tea5764 +radio-timb +radio-usb-si470x +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +raw +rbd +rbtree_test +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-em-terratec +rc-encore-enltv +rc-encore-enltv-fm53 +rc-encore-enltv2 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-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-tbs-nec +rc-technisat-usb2 +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-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rc5t583-regulator +rcar-du-drm +rcar_vin +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +redboot +redrat3 +reiserfs +remoteproc +renesas_usbhs +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +rio500 +rivafb +rj54n1cb0c +rmd128 +rmd160 +rmd256 +rmd320 +rndis_host +rndis_wlan +rocket +romfs +rose +rotary_encoder +rp2 +rpcsec_gss_krb5 +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt61pci +rt73usb +rtc-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-as3722 +rtc-bq32k +rtc-bq4802 +rtc-cmos +rtc-da9052 +rtc-da9055 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1742 +rtc-ds2404 +rtc-ds3232 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-hid-sensor-time +rtc-isl12022 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max77686 +rtc-max8907 +rtc-max8925 +rtc-max8997 +rtc-max8998 +rtc-mc13xxx +rtc-moxart +rtc-msm6242 +rtc-palmas +rtc-pcf2123 +rtc-pcf2127 +rtc-pcf50633 +rtc-pcf8523 +rtc-pcf8563 +rtc-pcf8583 +rtc-pl030 +rtc-r9701 +rtc-rc5t583 +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 +rtl8150 +rtl8180 +rtl8187 +rtl8188ee +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192se +rtl8723-common +rtl8723ae +rtl8723be +rtl8821ae +rtl_pci +rtl_usb +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtlwifi +rts5139 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rx51_battery +rxkad +s1d13xxxfb +s2250 +s2255drv +s2io +s3fb +s526 +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s626 +s6e63m0 +s921 +saa6588 +saa6752hs +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7146 +saa7146_vv +saa7164 +saa717x +saa7706h +safe_serial +sahara +salsa20_generic +samsung-keypad +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 +sbe-2t3e3 +sbp_target +sbs-battery +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_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +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_tgt +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_srp +sctp +sctp_probe +sdhci-pci +sdhci-pxav2 +sdhci-pxav3 +sdhci-tegra +sdio_uart +sdr-msi3101 +seed +sep_driver +seqiv +ser_gigaset +serial-tegra +serial2002 +serio_raw +sermouse +serpent_generic +serport +serqt_usb2 +ses +sfc +sh-sci +sh_eth +sh_keysc +sh_mobile_ceu_camera +sh_mobile_csi2 +sh_veu +sha1-arm +shark2 +shmob-drm +sht15 +sht21 +si21xx +si4713-i2c +si476x-core +sidewinder +sierra +sierra_net +sil164 +sir-dev +sis190 +sis5595 +sis900 +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_of_platform +sja1000_platform +skel +skfp +skge +sky2 +sl811-hcd +slcan +slip +slram +sm501 +sm501fb +sm7xxfb +sm_common +sm_ftl +smb347-charger +smc911x +smc91x +smm665 +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-at73c213 +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt3328 +snd-bt87x +snd-ca0106 +snd-cmipci +snd-cs4281 +snd-cs46xx +snd-cs5535audio +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-firewire-speakers +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-hdmi +snd-hda-codec-idt +snd-hda-codec-realtek +snd-hda-codec-si3054 +snd-hda-codec-via +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-mona +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-mts64 +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-oxygen +snd-oxygen-lib +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-alc5632 +snd-soc-atmel-pcm +snd-soc-davinci +snd-soc-davinci-mcasp +snd-soc-evm +snd-soc-fsl-spdif +snd-soc-imx-mc13783 +snd-soc-imx-spdif +snd-soc-imx-ssi +snd-soc-imx-wm8962 +snd-soc-mc13783 +snd-soc-omap3pandora +snd-soc-rt5640 +snd-soc-si476x +snd-soc-simple-card +snd-soc-spdif-rx +snd-soc-spdif-tx +snd-soc-tegra-alc5632 +snd-soc-tegra-pcm +snd-soc-tegra-rt5640 +snd-soc-tegra-trimslice +snd-soc-tegra-utils +snd-soc-tegra-wm8753 +snd-soc-tegra-wm8903 +snd-soc-tegra-wm9712 +snd-soc-tegra20-ac97 +snd-soc-tegra20-das +snd-soc-tegra20-i2s +snd-soc-tegra20-spdif +snd-soc-tegra30-ahub +snd-soc-tegra30-i2s +snd-soc-tlv320aic23 +snd-soc-tlv320aic3x +snd-soc-wm8753 +snd-soc-wm8903 +snd-soc-wm8962 +snd-soc-wm9712 +snd-sonicvibes +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usbmidi-lib +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx-lib +snd-vx222 +snd-ymfpci +soc_camera +soc_camera_platform +soc_mediabus +soc_scale_crop +softdog +softing +solo6x10 +solos-pci +sony-btf-mpx +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-dw +spi-dw-midpci +spi-dw-mmio +spi-fsl-dspi +spi-gpio +spi-imx +spi-lm70llp +spi-oc-tiny +spi-pl022 +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-sc18is602 +spi-tegra114 +spi-tegra20-sflash +spi-tegra20-slink +spi-ti-qspi +spi-tle62x0 +spi-topcliff-pch +spi-xcomm +spi_ks8995 +spidev +squashfs +sr9700 +ssb +ssd1307fb +ssfdc +sst25l +sstfb +ssu100 +st +st-asc +st1232 +st_accel +st_accel_i2c +st_accel_spi +st_drv +st_gyro +st_gyro_i2c +st_gyro_spi +st_magn +st_magn_i2c +st_magn_spi +st_pressure +st_pressure_i2c +st_pressure_spi +st_sensors +st_sensors_i2c +st_sensors_spi +starfire +stb0899 +stb6000 +stb6100 +ste_modem_rproc +stex +stinger +stir4200 +stk1160 +stkwebcam +stmmac +stmpe-keypad +stmpe-ts +stowaway +stp +streamzap +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +svcrdma +svgalib +sx8 +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink_gt +synclinkmp +sysv +t1pci +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +tc3589x-keypad +tca6416-keypad +tca8418_keypad +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bic +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 +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-aes +tegra-kbc +tehuti +tekram-sir +test-kprobes +test-kstrtox +test-string_helpers +test_power +tg3 +tgr192 +thmc50 +ti-adc081c +ti-soc-thermal +ti-vpe +ti_am335x_adc +ti_am335x_tsc +ti_am335x_tscadc +ti_dac7512 +ti_hecc +ti_usb_3410_5052 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +tilcdc +timb_dma +timberdale +timblogiw +timbuart +timeriomem-rng +tipc +tlan +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmio_mmc +tmio_mmc_core +tmio_nand +tmiofb +tmp006 +tmp102 +tmp401 +tmp421 +tmscsim +toim3232-sir +touchit213 +touchright +touchwin +tpci200 +tpm-rng +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm_i2c_stm_st33 +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-charger +tps65090-regulator +tps65217 +tps65217-regulator +tps65217_bl +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +tranzport +tridentfb +ts2020 +ts_bm +ts_fsm +ts_kmp +tsc2005 +tsc2007 +tsc40 +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +tsl4531 +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tuner_it913x +tunnel4 +tunnel6 +turbografx +tvaudio +tveeprom +tvp5150 +tw2804 +tw9903 +tw9906 +tw9910 +twidjoy +twl4030-madc +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_charger +twl4030_keypad +twl4030_madc_battery +twl4030_wdt +twl6030-gpadc +twl6040-vibra +twofish_common +twofish_generic +typhoon +u132-hcd +u_ether +u_rndis +u_serial +uartlite +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +uda1342 +udf +udl +udlfb +udp_diag +ueagle-atm +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_sercos3 +uli526x +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 +usb-serial-simple +usb3503 +usb8xxx +usb_8dev +usb_debug +usb_f_acm +usb_f_ecm +usb_f_ecm_subset +usb_f_eem +usb_f_mass_storage +usb_f_ncm +usb_f_obex +usb_f_phonet +usb_f_rndis +usb_f_serial +usb_f_ss_lb +usb_gigaset +usb_wwan +usbatm +usbdux +usbduxfast +usbduxsigma +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usbsevseg +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +uwb +ux500 +v4l2-common +v4l2-dv-timings +v4l2-int-device +v4l2-mem2mem +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vexpress +vexpress-spc-cpufreq +vfio +vfio-pci +vgastate +vgg2432a4 +vhci-hcd +vhost +vhost_net +vhost_scsi +via +via-rhine +via-sdmmc +via-velocity +via686a +videobuf-core +videobuf-dma-contig +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videobuf2-core +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-memops +videobuf2-vmalloc +videodev +viperboard +viperboard_adc +virtio-rng +virtio_rpmsg_bus +virtio_scsi +virtual +visor +vivi +vlsi_ir +vmac +vme +vme_pio2 +vme_user +vme_vmivme7805 +vmk80xx +vmwgfx +vmxnet3 +vp27smpx +vpfe_capture +vpss +vringh +vsock +vsxxxaa +vt1211 +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +w1-gpio +w1_bq27000 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1_smem +w1_therm +w35und +w5100 +w5300 +w6692 +w83627ehf +w83627hf +w83781d +w83791d +w83792d +w83793 +w83795 +w83l785ts +w83l786ng +w90p910_ts +w9966 +wacom +wacom_i2c +wacom_w8001 +walkera0701 +wanxl +warrior +wcn36xx +wdt_pci +whc-rc +whci +whci-hcd +whiteheat +wimax +winbond-840 +wire +wishbone-serial +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wlcore +wlcore_sdio +wlcore_spi +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x-ts +wm831x_backup +wm831x_bl +wm831x_power +wm831x_wdt +wm8350-hwmon +wm8350-regulator +wm8350_power +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-regulator +wm97xx-ts +wp512 +wusb-cbaf +wusb-wa +wusbcore +x25 +x25_asy +x_tables +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 +xgene-enet +xgifb +xgmac +xilinx_uartps +xillybus_core +xillybus_of +xillybus_pcie +xor +xor-neon +xpad +xprtrdma +xsens_mt +xt_AUDIT +xt_CHECKSUM +xt_CLASSIFY +xt_CONNSECMARK +xt_CT +xt_DSCP +xt_HL +xt_HMARK +xt_IDLETIMER +xt_LED +xt_LOG +xt_NETMAP +xt_NFLOG +xt_NFQUEUE +xt_RATEEST +xt_REDIRECT +xt_SECMARK +xt_TCPMSS +xt_TCPOPTSTRIP +xt_TEE +xt_TPROXY +xt_TRACE +xt_addrtype +xt_bpf +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_conntrack +xt_cpu +xt_dccp +xt_devgroup +xt_dscp +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_iprange +xt_ipvs +xt_length +xt_limit +xt_mac +xt_mark +xt_multiport +xt_nat +xt_nfacct +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_realm +xt_recent +xt_sctp +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_tcpudp +xt_time +xt_u32 +xtkbd +xts +xusbatm +xz_dec_test +yam +yealink +yellowfin +yurex +zaurus +zd1201 +zd1211rw +zforce_ts +zhenhua +zl10036 +zl10039 +zl10353 +zl6100 +zlib +zr364xx +zram +zte_ev --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/fwinfo +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/fwinfo @@ -0,0 +1,765 @@ +firmware: 3826.arm +firmware: 3com/typhoon.bin +firmware: 6fire/dmx6fireap.ihx +firmware: 6fire/dmx6firecf.bin +firmware: 6fire/dmx6firel2.ihx +firmware: BCM2033-FW.bin +firmware: BCM2033-MD.hex +firmware: BT3CPCC.bin +firmware: RTL8192E/boot.img +firmware: RTL8192E/data.img +firmware: RTL8192E/main.img +firmware: RTL8192U/boot.img +firmware: RTL8192U/data.img +firmware: RTL8192U/main.img +firmware: acenic/tg1.bin +firmware: acenic/tg2.bin +firmware: adaptec/starfire_rx.bin +firmware: adaptec/starfire_tx.bin +firmware: advansys/3550.bin +firmware: advansys/38C0800.bin +firmware: advansys/38C1600.bin +firmware: advansys/mcode.bin +firmware: agere_ap_fw.bin +firmware: agere_sta_fw.bin +firmware: aic94xx-seq.fw +firmware: 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: ath10k/QCA988X/hw2.0/board.bin +firmware: ath10k/QCA988X/hw2.0/firmware.bin +firmware: ath10k/QCA988X/hw2.0/otp.bin +firmware: ath3k-1.fw +firmware: ath6k/AR6003/hw2.0/athwlan.bin.z77 +firmware: ath6k/AR6003/hw2.0/bdata.SD31.bin +firmware: ath6k/AR6003/hw2.0/bdata.bin +firmware: ath6k/AR6003/hw2.0/data.patch.bin +firmware: ath6k/AR6003/hw2.0/otp.bin.z77 +firmware: ath6k/AR6003/hw2.1.1/athwlan.bin +firmware: ath6k/AR6003/hw2.1.1/bdata.SD31.bin +firmware: ath6k/AR6003/hw2.1.1/bdata.bin +firmware: ath6k/AR6003/hw2.1.1/data.patch.bin +firmware: ath6k/AR6003/hw2.1.1/otp.bin +firmware: ath6k/AR6004/hw1.0/bdata.DB132.bin +firmware: ath6k/AR6004/hw1.0/bdata.bin +firmware: ath6k/AR6004/hw1.0/fw.ram.bin +firmware: ath6k/AR6004/hw1.1/bdata.DB132.bin +firmware: ath6k/AR6004/hw1.1/bdata.bin +firmware: ath6k/AR6004/hw1.1/fw.ram.bin +firmware: ath6k/AR6004/hw1.2/bdata.bin +firmware: ath6k/AR6004/hw1.2/fw.ram.bin +firmware: ath6k/AR6004/hw1.3/bdata.bin +firmware: ath6k/AR6004/hw1.3/fw.ram.bin +firmware: atmel_at76c502-wpa.bin +firmware: atmel_at76c502.bin +firmware: atmel_at76c502_3com-wpa.bin +firmware: atmel_at76c502_3com.bin +firmware: atmel_at76c502d-wpa.bin +firmware: atmel_at76c502d.bin +firmware: atmel_at76c502e-wpa.bin +firmware: atmel_at76c502e.bin +firmware: atmel_at76c503-i3861.bin +firmware: atmel_at76c503-i3863.bin +firmware: atmel_at76c503-rfmd-acc.bin +firmware: atmel_at76c503-rfmd.bin +firmware: atmel_at76c504-wpa.bin +firmware: atmel_at76c504.bin +firmware: atmel_at76c504_2958-wpa.bin +firmware: atmel_at76c504_2958.bin +firmware: atmel_at76c504a_2958-wpa.bin +firmware: atmel_at76c504a_2958.bin +firmware: atmel_at76c505-rfmd.bin +firmware: atmel_at76c505-rfmd2958.bin +firmware: atmel_at76c505a-rfmd2958.bin +firmware: atmel_at76c505amx-rfmd.bin +firmware: atmel_at76c506-wpa.bin +firmware: atmel_at76c506.bin +firmware: atmsar11.fw +firmware: atsc_denver.inp +firmware: av7110/bootcode.bin +firmware: b43/ucode11.fw +firmware: b43/ucode13.fw +firmware: b43/ucode14.fw +firmware: b43/ucode15.fw +firmware: b43/ucode16_mimo.fw +firmware: b43/ucode5.fw +firmware: b43/ucode9.fw +firmware: b43legacy/ucode2.fw +firmware: b43legacy/ucode4.fw +firmware: bfubase.frm +firmware: bnx2/bnx2-mips-06-6.2.3.fw +firmware: bnx2/bnx2-mips-09-6.2.1b.fw +firmware: bnx2/bnx2-rv2p-06-6.0.15.fw +firmware: bnx2/bnx2-rv2p-09-6.0.17.fw +firmware: bnx2/bnx2-rv2p-09ax-6.0.17.fw +firmware: bnx2x/bnx2x-e1-7.8.17.0.fw +firmware: bnx2x/bnx2x-e1h-7.8.17.0.fw +firmware: bnx2x/bnx2x-e2-7.8.17.0.fw +firmware: brcm/bcm43xx-0.fw +firmware: brcm/bcm43xx_hdr-0.fw +firmware: brcm/brcmfmac43143-sdio.bin +firmware: brcm/brcmfmac43143-sdio.txt +firmware: brcm/brcmfmac43143.bin +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/brcmfmac43242a.bin +firmware: brcm/brcmfmac4329-sdio.bin +firmware: brcm/brcmfmac4329-sdio.txt +firmware: brcm/brcmfmac4330-sdio.bin +firmware: brcm/brcmfmac4330-sdio.txt +firmware: brcm/brcmfmac4334-sdio.bin +firmware: brcm/brcmfmac4334-sdio.txt +firmware: brcm/brcmfmac4335-sdio.bin +firmware: brcm/brcmfmac4335-sdio.txt +firmware: c218tunx.cod +firmware: c320tunx.cod +firmware: carl9170-1.fw +firmware: cbfw-3.2.1.1.bin +firmware: cis/3CCFEM556.cis +firmware: cis/3CXEM556.cis +firmware: cis/COMpad2.cis +firmware: cis/COMpad4.cis +firmware: cis/DP83903.cis +firmware: cis/LA-PCM.cis +firmware: cis/MT5634ZLX.cis +firmware: cis/NE2K.cis +firmware: cis/PCMLM28.cis +firmware: cis/PE-200.cis +firmware: cis/PE520.cis +firmware: cis/RS-COM-2P.cis +firmware: cis/SW_555_SER.cis +firmware: cis/SW_7xx_SER.cis +firmware: cis/SW_8xx_SER.cis +firmware: cis/tamarack.cis +firmware: cmmb_ming_app.inp +firmware: cmmb_vega_12mhz.inp +firmware: cmmb_venice_12mhz.inp +firmware: comedi/jr3pci.idm +firmware: cp204unx.cod +firmware: cpia2/stv0672_vp4.bin +firmware: ct2fw-3.2.1.1.bin +firmware: ctefx.bin +firmware: ctfw-3.2.1.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-fe-af9013.fw +firmware: dvb-fe-cx24117.fw +firmware: dvb-fe-ds3000.fw +firmware: dvb-fe-tda10071.fw +firmware: dvb-fe-xc5000-1.6.114.fw +firmware: dvb-fe-xc5000c-4.1.30.7.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-it9137-01.fw +firmware: dvb-usb-lme2510-lg.fw +firmware: dvb-usb-lme2510-s0194.fw +firmware: dvb-usb-lme2510c-lg.fw +firmware: dvb-usb-lme2510c-rs2000.fw +firmware: dvb-usb-lme2510c-s0194.fw +firmware: dvb-usb-lme2510c-s7395.fw +firmware: dvb-usb-p1100.fw +firmware: dvb-usb-p7500.fw +firmware: dvb-usb-s630.fw +firmware: dvb-usb-s660.fw +firmware: dvb-usb-terratec-h7-az6007.fw +firmware: dvb_nova_12mhz.inp +firmware: dvb_nova_12mhz_b0.inp +firmware: dvb_rio.inp +firmware: dvbh_rio.inp +firmware: e100/d101m_ucode.bin +firmware: e100/d101s_ucode.bin +firmware: e100/d102e_ucode.bin +firmware: ea/3g_asic.fw +firmware: ea/darla20_dsp.fw +firmware: ea/darla24_dsp.fw +firmware: ea/echo3g_dsp.fw +firmware: ea/gina20_dsp.fw +firmware: ea/gina24_301_asic.fw +firmware: ea/gina24_301_dsp.fw +firmware: ea/gina24_361_asic.fw +firmware: ea/gina24_361_dsp.fw +firmware: ea/indigo_dj_dsp.fw +firmware: ea/indigo_djx_dsp.fw +firmware: ea/indigo_dsp.fw +firmware: ea/indigo_io_dsp.fw +firmware: ea/indigo_iox_dsp.fw +firmware: ea/layla20_asic.fw +firmware: ea/layla20_dsp.fw +firmware: ea/layla24_1_asic.fw +firmware: ea/layla24_2A_asic.fw +firmware: ea/layla24_2S_asic.fw +firmware: ea/layla24_dsp.fw +firmware: ea/loader_dsp.fw +firmware: ea/mia_dsp.fw +firmware: ea/mona_2_asic.fw +firmware: ea/mona_301_1_asic_48.fw +firmware: ea/mona_301_1_asic_96.fw +firmware: ea/mona_301_dsp.fw +firmware: ea/mona_361_1_asic_48.fw +firmware: ea/mona_361_1_asic_96.fw +firmware: ea/mona_361_dsp.fw +firmware: edgeport/boot.fw +firmware: edgeport/boot2.fw +firmware: edgeport/down.fw +firmware: edgeport/down2.fw +firmware: edgeport/down3.bin +firmware: emi26/bitstream.fw +firmware: emi26/firmware.fw +firmware: emi26/loader.fw +firmware: emi62/bitstream.fw +firmware: emi62/loader.fw +firmware: emi62/spdif.fw +firmware: emu/audio_dock.fw +firmware: emu/emu0404.fw +firmware: emu/emu1010_notebook.fw +firmware: emu/emu1010b.fw +firmware: emu/hana.fw +firmware: emu/micro_dock.fw +firmware: ene-ub6250/ms_init.bin +firmware: ene-ub6250/ms_rdwr.bin +firmware: ene-ub6250/msp_rdwr.bin +firmware: ene-ub6250/sd_init1.bin +firmware: ene-ub6250/sd_init2.bin +firmware: ene-ub6250/sd_rdwr.bin +firmware: ess/maestro3_assp_kernel.fw +firmware: ess/maestro3_assp_minisrc.fw +firmware: f2255usb.bin +firmware: fm_radio.inp +firmware: fm_radio_rio.inp +firmware: fw.ram.bin +firmware: go7007/go7007fw.bin +firmware: go7007/go7007tv.bin +firmware: go7007/lr192.fw +firmware: go7007/px-m402u.fw +firmware: go7007/px-tv402u.fw +firmware: go7007/s2250-1.fw +firmware: go7007/s2250-2.fw +firmware: go7007/wis-startrek.fw +firmware: 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: icom_asc.bin +firmware: icom_call_setup.bin +firmware: icom_res_dce.bin +firmware: ipw2100-1.3-i.fw +firmware: ipw2100-1.3-p.fw +firmware: ipw2100-1.3.fw +firmware: ipw2200-bss.fw +firmware: ipw2200-ibss.fw +firmware: ipw2200-sniffer.fw +firmware: isci/isci_firmware.bin +firmware: isdbt_nova_12mhz.inp +firmware: isdbt_nova_12mhz_b0.inp +firmware: isdbt_pele.inp +firmware: isdbt_rio.inp +firmware: isdn/ISAR.BIN +firmware: isi4608.bin +firmware: isi4616.bin +firmware: isi608.bin +firmware: isi608em.bin +firmware: isi616em.bin +firmware: isight.fw +firmware: isl3886pci +firmware: isl3886usb +firmware: isl3887usb +firmware: iwlwifi-100-5.ucode +firmware: iwlwifi-1000-5.ucode +firmware: iwlwifi-105-6.ucode +firmware: iwlwifi-135-6.ucode +firmware: iwlwifi-2000-6.ucode +firmware: iwlwifi-2030-6.ucode +firmware: iwlwifi-3160-7.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-7.ucode +firmware: iwlwifi-7265-7.ucode +firmware: kaweth/new_code.bin +firmware: kaweth/new_code_fix.bin +firmware: kaweth/trigger_code.bin +firmware: kaweth/trigger_code_fix.bin +firmware: keyspan/mpr.fw +firmware: keyspan/usa18x.fw +firmware: keyspan/usa19.fw +firmware: keyspan/usa19qi.fw +firmware: keyspan/usa19qw.fw +firmware: keyspan/usa19w.fw +firmware: keyspan/usa28.fw +firmware: keyspan/usa28x.fw +firmware: keyspan/usa28xa.fw +firmware: keyspan/usa28xb.fw +firmware: keyspan/usa49w.fw +firmware: keyspan/usa49wlc.fw +firmware: keyspan_pda/keyspan_pda.fw +firmware: keyspan_pda/xircom_pgs.fw +firmware: korg/k1212.dsp +firmware: lbtf_usb.bin +firmware: lgs8g75.fw +firmware: libertas/cf8305.bin +firmware: libertas/cf8381.bin +firmware: libertas/cf8381_helper.bin +firmware: libertas/cf8385.bin +firmware: libertas/cf8385_helper.bin +firmware: libertas/gspi8385.bin +firmware: libertas/gspi8385_helper.bin +firmware: libertas/gspi8385_hlp.bin +firmware: libertas/gspi8686.bin +firmware: libertas/gspi8686_hlp.bin +firmware: libertas/gspi8686_v9.bin +firmware: libertas/gspi8686_v9_helper.bin +firmware: libertas/gspi8688.bin +firmware: libertas/gspi8688_helper.bin +firmware: libertas/sd8385.bin +firmware: libertas/sd8385_helper.bin +firmware: libertas/sd8686_v8.bin +firmware: libertas/sd8686_v8_helper.bin +firmware: libertas/sd8686_v9.bin +firmware: libertas/sd8686_v9_helper.bin +firmware: libertas/sd8688.bin +firmware: libertas/sd8688_helper.bin +firmware: libertas/usb8388.bin +firmware: libertas/usb8388_v5.bin +firmware: libertas/usb8388_v9.bin +firmware: libertas/usb8682.bin +firmware: libertas_cs.fw +firmware: libertas_cs_helper.fw +firmware: matrox/g200_warp.fw +firmware: matrox/g400_warp.fw +firmware: me2600_firmware.bin +firmware: mixart/miXart8.elf +firmware: mixart/miXart8.xlx +firmware: mixart/miXart8AES.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_caldata.conf +firmware: mrvl/sd8797_uapsta.bin +firmware: mrvl/sd8897_uapsta.bin +firmware: mrvl/usb8797_uapsta.bin +firmware: mt7650.bin +firmware: mt7662.bin +firmware: mts_cdma.fw +firmware: mts_edge.fw +firmware: mts_gsm.fw +firmware: mts_mt9234mu.fw +firmware: mts_mt9234zba.fw +firmware: multiface_firmware.bin +firmware: multiface_firmware_rev11.bin +firmware: mwl8k/fmimage_8363.fw +firmware: mwl8k/fmimage_8366.fw +firmware: mwl8k/fmimage_8366_ap-3.fw +firmware: mwl8k/fmimage_8687.fw +firmware: mwl8k/helper_8363.fw +firmware: mwl8k/helper_8366.fw +firmware: mwl8k/helper_8687.fw +firmware: myri10ge_eth_z8e.dat +firmware: myri10ge_ethp_z8e.dat +firmware: myri10ge_rss_eth_z8e.dat +firmware: myri10ge_rss_ethp_z8e.dat +firmware: 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: ql2100_fw.bin +firmware: ql2200_fw.bin +firmware: ql2300_fw.bin +firmware: ql2322_fw.bin +firmware: ql2400_fw.bin +firmware: ql2500_fw.bin +firmware: qlogic/1040.bin +firmware: qlogic/12160.bin +firmware: qlogic/1280.bin +firmware: qlogic/sd7220.fw +firmware: r128/r128_cce.bin +firmware: radeon/ARUBA_me.bin +firmware: radeon/ARUBA_pfp.bin +firmware: radeon/ARUBA_rlc.bin +firmware: radeon/BARTS_mc.bin +firmware: radeon/BARTS_me.bin +firmware: radeon/BARTS_pfp.bin +firmware: radeon/BARTS_smc.bin +firmware: radeon/BONAIRE_ce.bin +firmware: radeon/BONAIRE_mc.bin +firmware: radeon/BONAIRE_mc2.bin +firmware: radeon/BONAIRE_me.bin +firmware: radeon/BONAIRE_mec.bin +firmware: radeon/BONAIRE_pfp.bin +firmware: radeon/BONAIRE_rlc.bin +firmware: radeon/BONAIRE_sdma.bin +firmware: radeon/BONAIRE_smc.bin +firmware: radeon/BONAIRE_uvd.bin +firmware: radeon/BTC_rlc.bin +firmware: radeon/CAICOS_mc.bin +firmware: radeon/CAICOS_me.bin +firmware: radeon/CAICOS_pfp.bin +firmware: radeon/CAICOS_smc.bin +firmware: radeon/CAYMAN_mc.bin +firmware: radeon/CAYMAN_me.bin +firmware: radeon/CAYMAN_pfp.bin +firmware: radeon/CAYMAN_rlc.bin +firmware: radeon/CAYMAN_smc.bin +firmware: radeon/CEDAR_me.bin +firmware: radeon/CEDAR_pfp.bin +firmware: radeon/CEDAR_rlc.bin +firmware: radeon/CEDAR_smc.bin +firmware: radeon/CYPRESS_me.bin +firmware: radeon/CYPRESS_pfp.bin +firmware: radeon/CYPRESS_rlc.bin +firmware: radeon/CYPRESS_smc.bin +firmware: radeon/CYPRESS_uvd.bin +firmware: radeon/HAINAN_ce.bin +firmware: radeon/HAINAN_mc.bin +firmware: radeon/HAINAN_mc2.bin +firmware: radeon/HAINAN_me.bin +firmware: radeon/HAINAN_pfp.bin +firmware: radeon/HAINAN_rlc.bin +firmware: radeon/HAINAN_smc.bin +firmware: radeon/HAWAII_ce.bin +firmware: radeon/HAWAII_mc.bin +firmware: radeon/HAWAII_mc2.bin +firmware: radeon/HAWAII_me.bin +firmware: radeon/HAWAII_mec.bin +firmware: radeon/HAWAII_pfp.bin +firmware: radeon/HAWAII_rlc.bin +firmware: radeon/HAWAII_sdma.bin +firmware: radeon/HAWAII_smc.bin +firmware: radeon/JUNIPER_me.bin +firmware: radeon/JUNIPER_pfp.bin +firmware: radeon/JUNIPER_rlc.bin +firmware: radeon/JUNIPER_smc.bin +firmware: radeon/KABINI_ce.bin +firmware: radeon/KABINI_me.bin +firmware: radeon/KABINI_mec.bin +firmware: radeon/KABINI_pfp.bin +firmware: radeon/KABINI_rlc.bin +firmware: radeon/KABINI_sdma.bin +firmware: radeon/KAVERI_ce.bin +firmware: radeon/KAVERI_me.bin +firmware: radeon/KAVERI_mec.bin +firmware: radeon/KAVERI_pfp.bin +firmware: radeon/KAVERI_rlc.bin +firmware: radeon/KAVERI_sdma.bin +firmware: radeon/OLAND_ce.bin +firmware: radeon/OLAND_mc.bin +firmware: radeon/OLAND_mc2.bin +firmware: radeon/OLAND_me.bin +firmware: radeon/OLAND_pfp.bin +firmware: radeon/OLAND_rlc.bin +firmware: radeon/OLAND_smc.bin +firmware: radeon/PALM_me.bin +firmware: radeon/PALM_pfp.bin +firmware: radeon/PITCAIRN_ce.bin +firmware: radeon/PITCAIRN_mc.bin +firmware: radeon/PITCAIRN_mc2.bin +firmware: radeon/PITCAIRN_me.bin +firmware: radeon/PITCAIRN_pfp.bin +firmware: radeon/PITCAIRN_rlc.bin +firmware: radeon/PITCAIRN_smc.bin +firmware: radeon/R100_cp.bin +firmware: radeon/R200_cp.bin +firmware: radeon/R300_cp.bin +firmware: radeon/R420_cp.bin +firmware: radeon/R520_cp.bin +firmware: radeon/R600_me.bin +firmware: radeon/R600_pfp.bin +firmware: radeon/R600_rlc.bin +firmware: radeon/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/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/SUMO2_me.bin +firmware: radeon/SUMO2_pfp.bin +firmware: radeon/SUMO_me.bin +firmware: radeon/SUMO_pfp.bin +firmware: radeon/SUMO_rlc.bin +firmware: radeon/SUMO_uvd.bin +firmware: radeon/TAHITI_ce.bin +firmware: radeon/TAHITI_mc.bin +firmware: radeon/TAHITI_mc2.bin +firmware: radeon/TAHITI_me.bin +firmware: radeon/TAHITI_pfp.bin +firmware: radeon/TAHITI_rlc.bin +firmware: radeon/TAHITI_smc.bin +firmware: radeon/TAHITI_uvd.bin +firmware: radeon/TURKS_mc.bin +firmware: radeon/TURKS_me.bin +firmware: radeon/TURKS_pfp.bin +firmware: radeon/TURKS_smc.bin +firmware: radeon/VERDE_ce.bin +firmware: radeon/VERDE_mc.bin +firmware: radeon/VERDE_mc2.bin +firmware: radeon/VERDE_me.bin +firmware: radeon/VERDE_pfp.bin +firmware: radeon/VERDE_rlc.bin +firmware: radeon/VERDE_smc.bin +firmware: riptide.hex +firmware: rp2.fw +firmware: rpm_firmware.bin +firmware: rt2561.bin +firmware: rt2561s.bin +firmware: rt2661.bin +firmware: rt2860.bin +firmware: rt2870.bin +firmware: rt73.bin +firmware: rtl_nic/rtl8105e-1.fw +firmware: rtl_nic/rtl8106e-1.fw +firmware: rtl_nic/rtl8106e-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/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.bin +firmware: rtlwifi/rtl8192cfwU_B.bin +firmware: rtlwifi/rtl8192cufw.bin +firmware: rtlwifi/rtl8192cufw_A.bin +firmware: rtlwifi/rtl8192cufw_B.bin +firmware: rtlwifi/rtl8192cufw_TMSC.bin +firmware: rtlwifi/rtl8192defw.bin +firmware: rtlwifi/rtl8192sefw.bin +firmware: rtlwifi/rtl8712u.bin +firmware: rtlwifi/rtl8723befw.bin +firmware: rtlwifi/rtl8723fw.bin +firmware: rtlwifi/rtl8723fw_B.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/bcard.bin +firmware: softing-4.6/bcard2.bin +firmware: softing-4.6/cancard.bin +firmware: softing-4.6/cancrd2.bin +firmware: softing-4.6/cansja.bin +firmware: softing-4.6/ldcard.bin +firmware: softing-4.6/ldcard2.bin +firmware: solos-FPGA.bin +firmware: solos-Firmware.bin +firmware: solos-db-FPGA.bin +firmware: sun/cassini.bin +firmware: symbol_sp24t_prim_fw +firmware: symbol_sp24t_sec_fw +firmware: tdmb_denver.inp +firmware: tdmb_nova_12mhz.inp +firmware: tdmb_nova_12mhz_b0.inp +firmware: tehuti/bdx.bin +firmware: ti-connectivity/wl1251-fw.bin +firmware: ti-connectivity/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-2.bin +firmware: ti_3410.fw +firmware: ti_5052.fw +firmware: tigon/tg3.bin +firmware: tigon/tg3_tso.bin +firmware: tigon/tg3_tso5.bin +firmware: tlg2300_firmware.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/CMV4i.bin +firmware: ueagle-atm/CMV4i.bin.v2 +firmware: ueagle-atm/CMV4p.bin +firmware: ueagle-atm/CMV4p.bin.v2 +firmware: ueagle-atm/CMV9i.bin +firmware: ueagle-atm/CMV9i.bin.v2 +firmware: ueagle-atm/CMV9p.bin +firmware: ueagle-atm/CMV9p.bin.v2 +firmware: ueagle-atm/CMVei.bin +firmware: ueagle-atm/CMVei.bin.v2 +firmware: ueagle-atm/CMVep.bin +firmware: ueagle-atm/CMVep.bin.v2 +firmware: ueagle-atm/DSP4i.bin +firmware: ueagle-atm/DSP4p.bin +firmware: ueagle-atm/DSP9i.bin +firmware: ueagle-atm/DSP9p.bin +firmware: ueagle-atm/DSPei.bin +firmware: ueagle-atm/DSPep.bin +firmware: ueagle-atm/adi930.fw +firmware: ueagle-atm/eagle.fw +firmware: ueagle-atm/eagleI.fw +firmware: ueagle-atm/eagleII.fw +firmware: ueagle-atm/eagleIII.fw +firmware: ueagle-atm/eagleIV.fw +firmware: usb8388.bin +firmware: usbdux_firmware.bin +firmware: usbduxfast_firmware.bin +firmware: usbduxsigma_firmware.bin +firmware: v4l-cx231xx-avcore-01.fw +firmware: v4l-cx23418-apu.fw +firmware: v4l-cx23418-cpu.fw +firmware: v4l-cx23418-dig.fw +firmware: v4l-cx2341x-dec.fw +firmware: v4l-cx2341x-enc.fw +firmware: v4l-cx2341x-init.mpg +firmware: v4l-cx23885-avcore-01.fw +firmware: v4l-cx23885-enc.fw +firmware: v4l-cx25840.fw +firmware: v4l-pvrusb2-24xxx-01.fw +firmware: v4l-pvrusb2-29xxx-01.fw +firmware: v4l-pvrusb2-73xxx-01.fw +firmware: vicam/firmware.fw +firmware: vntwusb.fw +firmware: vpdma-1b8.bin +firmware: vx/bd56002.boot +firmware: vx/bd563s3.boot +firmware: vx/bd563v2.boot +firmware: vx/bx_1_vp4.b56 +firmware: vx/bx_1_vxp.b56 +firmware: vx/l_1_v22.d56 +firmware: vx/l_1_vp4.d56 +firmware: vx/l_1_vx2.d56 +firmware: vx/l_1_vxp.d56 +firmware: vx/x1_1_vp4.xlx +firmware: vx/x1_1_vx2.xlx +firmware: vx/x1_1_vxp.xlx +firmware: vx/x1_2_v22.xlx +firmware: vxge/X3fw-pxe.ncf +firmware: vxge/X3fw.ncf +firmware: wavefront.os +firmware: whiteheat.fw +firmware: whiteheat_loader.fw +firmware: wlan/prima/WCNSS_qcom_wlan_nv.bin +firmware: xc3028-v27.fw +firmware: xc3028L-v36.fw +firmware: yam/1200.bin +firmware: yam/9600.bin +firmware: yamaha/ds1_ctrl.fw +firmware: yamaha/ds1_dsp.fw +firmware: yamaha/ds1e_ctrl.fw +firmware: yamaha/yss225_registers.bin +firmware: zd1201-ap.fw +firmware: zd1201.fw +firmware: zd1211/zd1211_ub +firmware: zd1211/zd1211_uphr +firmware: zd1211/zd1211_ur +firmware: zd1211/zd1211b_ub +firmware: zd1211/zd1211b_uphr +firmware: zd1211/zd1211b_ur --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/i386/generic +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/i386/generic @@ -0,0 +1,17562 @@ +EXPORT_SYMBOL arch/x86/kvm/kvm 0x67472e8b kvm_read_guest_atomic +EXPORT_SYMBOL arch/x86/kvm/kvm 0xe4594c74 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/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/acpi/video 0x205ce0cc acpi_video_get_edid +EXPORT_SYMBOL drivers/acpi/video 0x7a45377b acpi_video_unregister +EXPORT_SYMBOL drivers/acpi/video 0x8826c13b acpi_video_register +EXPORT_SYMBOL drivers/atm/suni 0x20ed3130 suni_init +EXPORT_SYMBOL drivers/atm/uPD98402 0x125b8cf1 uPD98402_init +EXPORT_SYMBOL drivers/bcma/bcma 0xce287351 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 0x0696679e pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0x207024aa pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0x2e3501b8 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x3960a2dc pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x61971c7b pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x76f14824 pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0x8eec5b04 pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0x9b2ae687 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xa0d7b4c9 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0xc8f63c37 pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xed872f92 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0xfd602024 paride_unregister +EXPORT_SYMBOL drivers/char/nsc_gpio 0x31abda8d nsc_gpio_read +EXPORT_SYMBOL drivers/char/nsc_gpio 0x77310b79 nsc_gpio_dump +EXPORT_SYMBOL drivers/char/nsc_gpio 0x7c3b36e3 nsc_gpio_write +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/dma/dw/dw_dmac_core 0x25cc3a26 dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x86b7f08f dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xc56d7a89 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xcddd2e26 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xd88db725 dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xeaeff3b6 dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/ioat/ioatdma 0xa49d8803 ioat_dma_setup_interrupts +EXPORT_SYMBOL drivers/edac/edac_core 0x6789b10e edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04dd92ce fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0d8798fd fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x10548f36 fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16d6f709 fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x18c787bc fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x21ff3e44 fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0x258cd50a fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x35700a15 fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3d519ffd fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4040ce5c fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x452d0fc7 fw_core_handle_bus_reset +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 0x6b0444a3 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x6bc1918e fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x6ec05789 fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7769b96a fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7e431b14 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8fa7751f fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9422b419 fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0x95789391 fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9ba34880 fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa2c5fdcc fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa6c011f3 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb6b3ed57 fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc776379e fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd6192a3f fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd8d32d4f fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xdb69f2f4 fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0xdf94fe53 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firmware/dcdbas 0xa75079d6 dcdbas_smi_request +EXPORT_SYMBOL drivers/fmc/fmc 0x010cb8cb fmc_find_sdb_device +EXPORT_SYMBOL drivers/fmc/fmc 0x11dd3e20 fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0x2baab5f1 fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x456db5e8 fmc_driver_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x4cb76ff4 fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0x609a7c12 fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x80931cfc fmc_free_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x9aaec048 fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0xaeb1d3a2 fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0xb2e27784 fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0xbaa9b976 fmc_show_sdb_tree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00025916 drm_mode_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00667d8a drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x026c0d6b drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x028c0e3b drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04120119 drm_core_reclaim_buffers +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0525c9ab drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07250614 drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07994834 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07a7dc53 drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x09a8e505 drm_sysfs_connector_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0bc1262f drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0c3d64c9 drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ec527fc drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f0cbacd drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f222a09 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f3cc670 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f968ff0 drm_mode_probed_add +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 0x0ff75d63 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x103c4649 drm_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12c6276a drm_buffer_read_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13cdaadb drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1427014f drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x142b8b35 drm_buffer_copy_from_user +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x159270dd drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15a7a2a6 drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0x189f6401 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18fa1c81 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19e44324 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b15d3ef drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b5765cc drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22cca6fb drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x242b1a20 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24742a39 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25cc6054 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2729373d drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x27df6caf drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x282e4758 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a942ab2 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2b9236e5 drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2bcb8783 drm_get_encoder_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2c0cf455 drm_prime_init_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2cafca87 drm_get_last_vbltimestamp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d30e8f2 drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d80be4d drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2fa8a08d drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x318ce76e drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3282529b drm_core_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x33194389 drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3418a42d drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x346127a7 drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34a71390 drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x35b8f220 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36b2d49e drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36cf92d8 drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36f91ef3 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ab5cdb5 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ae7b2d0 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b63c076 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c448c0e drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d4b8108 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d6f32b3 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f353932 drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x403c6d91 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41dee8bf drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x426372d9 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x42b7132d drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43384bd9 drm_buffer_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44a18d9e drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x455a6ba1 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x45967121 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4650feda drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x468abfc3 drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x476cd9ec drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x498dcb5e drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49fabf0d drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a55d1bc drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4d9fe108 drm_noop +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 0x5208b267 drm_get_connector_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x524e9659 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b93330 drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58762d19 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b28d54e drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d2a2076 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5ef4a423 drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5ff3b313 drm_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6090be61 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x60a0a645 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x62478ff2 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64a454da drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64bc3074 drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66803841 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6686830c drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67bfe557 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a7ca8ea drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b6d7375 drm_timestamp_precision +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cee2e42 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6def8c58 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f08acc3 drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x70dde75a drm_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x713074d9 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72ed2572 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x739b8f81 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x75a0c2a9 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x779b1d80 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x78b4229c drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a4e7297 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b650947 drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7bc1ee9f drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c143460 drm_bridge_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c2f5322 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7d1f42b6 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ebd58ad drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f8d00f0 drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7fd4bbeb drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x80fad237 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81ba930c drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82a040c4 drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x83a395cf drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x84ef4e88 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x852d8bc7 drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x85dc6813 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x863e5800 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x88492d3f drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8949b19d drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a78a37b drm_core_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ce8d486 drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8dfb019d drm_buffer_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8e7b0390 drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f6b686c drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f7df3a7 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x903e3285 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x915afbc6 drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95612859 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9654004a drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9691c176 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x96c61083 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9717cf48 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9745d638 drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x97a9d128 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x98469576 drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a885482 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9ccfcc5d drm_dev_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d70fc2a drm_rnodes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9eccfe56 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9efc26a3 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0481eca drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0573d73 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa09abf94 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0fca6c6 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1bd86fc drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1f4e9e6 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa316054d drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa3f6f4bb drm_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5dbd572 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5f59e3d drm_bridge_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa6902f65 drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa7323c52 drm_mode_connector_detach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa8d65834 drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaadc5aeb drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xacdcf80d drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaefba54e drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafb0cb6f drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafd51394 drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb572a9f0 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5a9e76f drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb70573e1 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8890498 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb95beb55 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe001c53 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf245b5c drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc10f7584 drm_platform_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc3d17baf drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4000f9f drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc414c422 drm_vblank_offdelay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4b4b3fb drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc55ad8b2 drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc5820068 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6444e27 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca93ede3 drm_vma_offset_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb110f46 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb289165 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb7aecd2 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xccc63a9b drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd8813b4 drm_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce1fda96 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf64e944 drm_core_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcfdc56c6 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd085eb67 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd220cf70 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd3ebb0b4 drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd55aea8d drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd582781d drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd6becbd2 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9c5a4a2 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda89e317 drm_global_mutex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb5a5852 drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0c82d79 drm_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe1f0931b drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2ef97e4 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe3b2fd0b drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe3f4562c drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5144a28 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe59456ee drm_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6f46e6e drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe789c092 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7a3d7cb drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9d0a94f drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeab618c5 drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeaffa066 drm_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xebf7aae4 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xede8c2d6 drm_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef0364ff drm_sysfs_connector_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xefdf9b69 drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeff587bf drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf08d712a drm_mode_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf18d0554 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf446a0e2 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf550cdf7 drm_prime_destroy_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf71e4190 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7935374 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8ff38df drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb497216 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfc5fab77 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd063935 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe426d74 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe4a68c7 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff7354dc drm_platform_init +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 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x150022ec drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x16baf5f0 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x19e3bc2b drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1e5b820e drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x23752b6f drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2486fb8c drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x28cb5e1d drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x40fb686b drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4374205b drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x43a1aff5 drm_dp_aux_register_i2c_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x60ce31ed 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 0x71a7b1b5 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x737fe8f8 drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x74648cf7 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7476e733 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x770154d5 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7730b82f drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x78d9edd8 drm_dp_aux_unregister_i2c_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x79856d8f drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7cffe840 drm_fb_helper_restore_fbdev_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7f569a98 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8a79f813 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9e74cfc5 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa070a366 drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa22dc05c drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa4869a4b drm_kms_helper_poll_enable +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 0xac0b7fe7 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb30c42a3 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbbbb4a0c drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbf9ab7ff drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbff10e12 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc04ca1af drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd1ff1674 drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd25802b8 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe17829b8 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xec02d15c drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf25c416b drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf6031a6c i2c_dp_aux_add_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf6c3f99d drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfb809fec drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfe3e4100 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xffd8ff83 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x06df8f94 drm_usb_exit +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0xc22bfef2 drm_usb_init +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0xdac64c62 drm_get_usb_dev +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x004ebba8 ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x05c0b8ba ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0b79622d ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x132b05be ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1b17e695 ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1ba4e68a ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1d1d1b6a ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1d3ec53d ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x22d61ee9 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x23e6a3df ttm_vt_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 0x384a615e ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3cf8d4fa ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x46db4b24 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x47d10c29 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4bc2dbfa ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x532306fe ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5590115e ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5626ac38 ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x57489bb3 ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5cf59609 ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6019c13c ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x612c1117 ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6503a07b ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x669c263f ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x67b1d568 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x687f28bd ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6c5d8343 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7488f3d4 ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7aeaeba2 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x82e03a46 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x83496a3b ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x83861433 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x839e6591 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x880a15ad ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x88e5835d ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8bc7b329 ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8cad3cc2 ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8e8fc0b2 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x904d8ef7 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x91ce58ec ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x93895441 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9402b443 ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x96bee8ec ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9b7dfecb ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9f27104a ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa1eb1a57 ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa2bcbb81 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa884c5c0 ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb25e55ef ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb6b9218d ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xba8da978 ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbc2a647e ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbcb59301 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbea98ad5 ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbf04f15e ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcb35b9c0 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcd5b8fb7 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce6e43a8 ttm_base_object_lookup_for_ref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd0a459ff ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd7229807 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd7a41a37 ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xddeadec4 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xde1c5ef0 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe5dd885e ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe79eac56 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe9209470 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xeea4e125 ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf2cb2be0 ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xffcb8d9b ttm_read_lock +EXPORT_SYMBOL drivers/hv/hv_vmbus 0x1208c8f3 vmbus_sendpacket_ctl +EXPORT_SYMBOL drivers/hv/hv_vmbus 0x807c8bdd vmbus_sendpacket +EXPORT_SYMBOL drivers/hv/hv_vmbus 0x817d36b5 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 0x5c9fb617 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 0x1146e5c7 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x5f8679aa i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xccf41f0f i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x5b954ddb i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xe70c515b i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0x78ba18b3 amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x23126d84 st_accel_common_remove +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xd9d721df st_accel_common_probe +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x66902cac hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x7ef872dd hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xac4314b9 hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xe5413b8f hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xff06e3b0 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x734b79f0 hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xb2783781 hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x00dda161 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 0x14bd5967 st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x2bfb134a st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x34d1fc59 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x49119269 st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x4b6afe92 st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x4c9c449f st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x5c286a0a st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x94de9461 st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x9bec2eec st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xacfff0eb st_sensors_sysfs_set_sampling_frequency +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb033be46 st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb06a00ff st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xbcd4cc7a st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xdf631eb9 st_sensors_sysfs_get_sampling_frequency +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x275cc467 st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0xd528b100 st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xac24c403 st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xf673beb4 st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x528c7124 adis_enable_irq +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x79a0f4cd adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/industrialio 0x10b54d10 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x1d2d9069 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x23c56ffa iio_buffer_store_enable +EXPORT_SYMBOL drivers/iio/industrialio 0x26b24f32 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x32607b60 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x329344c6 iio_buffer_read_length +EXPORT_SYMBOL drivers/iio/industrialio 0x4044a792 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x413c35cf iio_buffer_write_length +EXPORT_SYMBOL drivers/iio/industrialio 0x4596fd8e iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x536edcce iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x54e4b87b iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0x5a3cbf3e iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x68c3689f iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x709d2472 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x712c65b6 iio_buffer_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x8f3d78ef iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x8fc5024b iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x90d37d56 iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x9fbe7bd3 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0xa9546576 iio_buffer_register +EXPORT_SYMBOL drivers/iio/industrialio 0xc03debd8 iio_buffer_show_enable +EXPORT_SYMBOL drivers/iio/industrialio 0xd4a07a68 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xf0521ea7 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x5ef564ce iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0xfe351728 iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x0747331c iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x3b981339 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x3002115f st_magn_common_remove +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x920df258 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x0ad4751b st_press_common_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x9ad924fe st_press_common_remove +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x049ace30 rdma_addr_find_smac_by_sgid +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x04b8b6d7 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1c3c0ad3 rdma_addr_size +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x273f4cca rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x446fd7c9 rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x71f3076f rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x8ed679ff rdma_addr_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x91d92eb5 rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xc0bf4edc rdma_addr_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0585bb5d cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x11b40c3b ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x1d17cdc4 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x2590b670 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x25e2beba ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x2bd3a22e ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x4212f1c3 ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x69f84458 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x74dfb71b ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x76a8dcd5 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa533350a ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa628b014 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb2a83ae4 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb9cbc0f5 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc8e0fa31 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd8304265 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf8a3b14e ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x007f8f79 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x06c82fcf mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x084c6c3b ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0997849c ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0f979101 ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x142a2b72 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x14f84918 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x154fd821 ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x171f99f1 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1ad98122 ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1cfa8b8b ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x209d7aad ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x23664fe0 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x23fdc22a ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ac96d1d ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x30f306d8 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x32315f4d ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x32e424be ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x32fef0ee ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3484c283 ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x36245c7b ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3fce5a91 ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x462644fc ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4a37af6e ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4a4a62a1 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4a80150a ib_umem_get +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 0x53e040b1 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x54a3f394 ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x609807e1 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x62db7c29 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x64ccfbe2 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x655b97b4 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6905b693 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e030e26 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x72395bfd ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x72bbea06 ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x755e1575 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7f6fbd4b ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x85142473 ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x851e20cd ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x89867cae ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x89e2019a ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8d741424 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x941507b1 ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x95f68c87 ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x981fd2e8 ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x983eb369 ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9a1f5d17 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9dea20d5 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa7d7ad9d ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xac217df9 rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xad21494d ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xae693d36 ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1a312e1 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb7937686 ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb948d1d9 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbb95f8dd ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbce33474 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc04470f4 ib_resolve_eth_l2_attrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc09a9368 ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc192892f ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc3279515 ib_reg_phys_mr +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 0xcd2b80f7 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcf85366d ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd319eaf3 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd585f2e8 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd70c0e78 rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdec3ffd3 ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe125a53d ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe7c04b84 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe86fe686 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xed02df1e ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xed78cd07 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf0320879 ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf621a2f2 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfaa5e1cc ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfb91723c ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc524360 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfdaec1a5 ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfde552b1 ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfe992c61 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xffec8329 ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x0335ab05 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x04c76482 ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x05efbf78 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x08ceb7e5 ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x24078dba ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x27040e3c ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2e25a57d ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x3d57d605 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f4bd840 ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x75afceb4 ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x946d5d27 ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xd3829bd8 ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xd48b815b ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x0553e35b ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x1377f85e ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x22f07253 ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x540363e7 ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x62f1c11b ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x6e44fd9f ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x8001438f ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xa64392ac ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xacf70b5b ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xc12236fb ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xddc330e7 ib_sa_pack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x2569d757 ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x52a6ce77 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x7971c00e ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xe350f2aa ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x193dcbb6 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x432c97b8 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x69aace33 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9103d028 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9db5bc14 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xa93c0a0f iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xacdc5070 iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xc4fa5d27 iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x01567b57 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0327247e rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x101d33d2 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x130cc10c rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1b31da09 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x22d5f990 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4dedc4a4 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x50a79d02 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6507f1c0 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x685547bb rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7ece85f3 rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7f2d94c8 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9bbf8424 rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa0de5eb6 rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb9a61660 rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xbdd45210 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc31a7eb8 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe6a8d8cc rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xee61db33 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf2574743 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xff8aee0a rdma_get_service_id +EXPORT_SYMBOL drivers/input/gameport/gameport 0x149d5430 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x14bf9754 gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x18d23f67 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x2a510228 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x41942a30 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x45f631bc __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x8f554028 gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0xadeb1a9e gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0xdede9ca2 __gameport_register_port +EXPORT_SYMBOL drivers/input/input-polldev 0x1962fbf7 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xbb49b230 input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xce7b1773 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xf408a524 input_free_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x0fe51fbc matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x10ef7248 ad714x_remove +EXPORT_SYMBOL drivers/input/misc/ad714x 0xafd243f3 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xc3641cd7 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xc88bf078 ad714x_probe +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 0xc9cd67f2 cma3000_init +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/sparse-keymap 0x23200f0d sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x7ccc9d8f sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0x7da3f16b sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0xa90ca2bb sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xb93c9db6 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0xcdbb8860 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x999812b3 ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xc405df0d ad7879_pm_ops +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x0eb6eb8b capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x20a8bcc3 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 0x47d3fc51 capi_info2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x4f053540 capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x788f72f1 capi_ctr_suspend_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 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 0xbc2327ce capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xbe1dceca capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc10fe128 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xca9a4156 capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xcf8d6a87 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe4c9394e capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe78d9408 attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe8ad9bd1 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xed061606 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x0c8aca12 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x0dd46029 b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x24d3020c b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x2526f394 b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x2a03b1e7 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x39a3f545 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x66dbb59a b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x788cd816 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x7f1e0ab4 b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x93048595 b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xac3dc96d b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xbcec7a5b b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc8144833 b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xd5d2c352 b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xe5880d9c avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x0a9485c5 b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x542e359f b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x691194df b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x71c56948 t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x779fa2bf b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x9b39ed2b b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xb757d7e5 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xe0622046 b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xffab6479 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 0x0846dbac mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x98e0a6d1 mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xce5e681d mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xe436ea9b mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xb7473a9a mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xcf1e15b6 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 0x7f29ce36 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xb0fb20cd hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xe227344e FsmRestartTimer +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 0xff2db2cf FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x5690488b isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x7638c991 isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x9a99049c isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x9c6ef199 isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xb00b6d59 isacsx_setup +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xcb87fd43 register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xe21e657f isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xf5038867 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 0x028b4efc recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x03dc754a recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1714f5d3 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2a89c805 mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x35705b57 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3ceeaa5c bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x54451388 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6083b18a mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x614ede30 mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7f5bbbf8 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7fdd5682 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x80179d10 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x806b961e mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x96309324 mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9d160093 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xab3f4742 create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xae0b4966 mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xaed7ce40 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb64a9bbf get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xba6c7f64 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xbfe0ed81 mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd594984d recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xdfc6d3b7 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe0b11ce7 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe5943c4a bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe87943cf mISDN_FsmInitTimer +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 0xfd562ca2 dchannel_senddata +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 0x28a5eece closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0x407a9ed1 closure_trylock +EXPORT_SYMBOL drivers/md/bcache/bcache 0x4bc745d4 closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0x5cf03885 closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0x6a36a106 __closure_lock +EXPORT_SYMBOL drivers/md/bcache/bcache 0xb136ffd3 closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe3c17af1 __closure_wake_up +EXPORT_SYMBOL drivers/md/dm-log 0x0673e23d dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0x1600c131 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0x3f80121a dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0x9f07074a dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x0ce286c3 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x17bebd3b dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0x407d0890 dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x538f41a7 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0xc50fd9fc dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0xef228097 dm_snap_cow +EXPORT_SYMBOL drivers/md/raid456 0x34044d35 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x0e898d92 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x2657a810 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x2b37a4ea flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x2cc57904 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x352527d4 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x841c972c flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x922dfb01 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xa029f1ac flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xa66c2d36 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xaaa656dd flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xcaa8988f flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xeee13392 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xf7f0d156 flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/btcx-risc 0x03447611 btcx_riscmem_free +EXPORT_SYMBOL drivers/media/common/btcx-risc 0x495e4b0c btcx_calc_skips +EXPORT_SYMBOL drivers/media/common/btcx-risc 0x58bdd789 btcx_riscmem_alloc +EXPORT_SYMBOL drivers/media/common/btcx-risc 0xad2fe38b btcx_sort_clips +EXPORT_SYMBOL drivers/media/common/btcx-risc 0xc368f8e6 btcx_align +EXPORT_SYMBOL drivers/media/common/btcx-risc 0xcda0ded2 btcx_screen_clips +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 0x39d739c9 cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x5b88faf6 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x5c14c79b cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0x5d984f19 cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0x62dff1ce 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 0x3d7cbd03 cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x39940fe7 tveeprom_read +EXPORT_SYMBOL drivers/media/common/tveeprom 0x41a8b569 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x06634ae6 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x08f46a94 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x101a29b8 dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x17523ce7 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x196f1ac1 dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1dc3df95 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1f6cd268 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x20cd96e0 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x237f7910 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x249f44ce dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2b8b877b dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x300f2abb dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x32f7da23 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x34ec1345 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x379d71e4 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3f692521 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4c70c35a dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5947bd28 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x606d913c dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7a5d977b dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7ac5494c dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x975e0329 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x987dcfde dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9af53149 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa9fea6be dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac3e8777 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb3d9a7d8 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb5d50039 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb72b5fa0 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd3a28a4a dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd3d58c9b dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd3ee7530 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd68a099e timeval_usec_diff +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd70811eb dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdace1533 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdc38fa40 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe293a54f dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf6afae00 dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfcc0ed9c dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-frontends/a8293 0xaa30c126 a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0xcb2143a0 af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9033 0x84bb759c af9033_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0xc357ff91 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x182a12b2 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x19fc2aed au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x211d4606 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x40d2f185 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x72d4cc89 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x743424e7 au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x8647eb46 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xd7b1193a au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xef9a03b5 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x1cb5a8d0 au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0xa018ed9e bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x7b8eb04f cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0x8f5b1fd7 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0x3ff60da1 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xd144386c cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xf104a969 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0x1ba1ce95 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x282b0a6f cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xa8f50990 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0xbbdadffd cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x00552bbf dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x477ed988 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x6452d640 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x6a52247c dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x92f6e7e8 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x03d434da dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x0fbd3ad7 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x11c9d2f4 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x2082d687 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x2ba2f8ff dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x5635b84d dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x57037140 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x88a2eb43 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xa15816a8 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb8043554 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd280ad97 dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd5a81273 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xeb1fc5b9 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xf0b98b08 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xfae7c5f9 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x8efb9d3d dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x0b62f540 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x174a22fd dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x294366db dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x61cec398 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xb46b8f1a dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xf5ee4efd dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x04bcf0b9 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x54fd7270 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xd20d91be dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xd808d3f7 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x09895130 dib7090_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x0cd69f7a dib7000p_update_pll +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x208b91c3 dib7000p_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x2ce2436f dib7000p_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x2f3b16a1 dib7000p_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x3a31e6ae dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x3c36244d dib7000p_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x40f97793 dib7000p_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x550ab1e4 dib7000p_get_agc_values +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x6bac3ca3 dib7000p_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xbeb1f3cc dib7000p_set_agc1_min +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xcca96001 dib7090_slave_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xdc8a9f9d dib7000pc_detection +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xdfd0d5f0 dib7090_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xf0a797a4 dib7090_get_adc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xfd027b6c dib7000p_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x039d9800 dib8000_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x0fc02340 dib8000_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x3d779618 dib8096p_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x439abb90 dib8000_remove_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x49a4cd49 dib8000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x4c4e03e4 dib8000_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x64286753 dib8000_update_pll +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x745fa295 dib8000_get_adc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xad8ea6ea dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xb5ffda78 dib8000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xc328882a dib8000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xd01fb9a2 dib8000_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xdf1c7c5d dib8000_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xe0ac8d25 dib8000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xe9ffe90c dib8096p_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xea52e3d8 dib8000_pwm_agc_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xec633f0f dib8000_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xf7c4c269 dib8090p_get_dc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xfe2efba0 dib8000_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x04386cb5 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x3d0fca12 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x3e5cb5b9 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xa9f7d9c6 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xf15cdb2d dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x20afe7f2 drxd_config_i2c +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x8de6f7e1 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0xe27b22d9 drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0xc9357f2f ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0xa92d86b1 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0x7893652e ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0xd3b46aa2 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x4b0b45ad isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x485d77af isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/it913x-fe 0x643abc2e it913x_fe_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0xf20e0941 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0x902efa1e ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0xf39d15c2 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0x95728ee1 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0x73f6d490 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0x2212c227 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x850cf98c lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xe698fbeb lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xfecc870e lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0xa9a071e7 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0xc65a94ba m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0x62ed5850 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0xb22311ba mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x476d1ed9 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0xa180960b mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x3e075ef8 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0x7088e1e8 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0xbf7db21f or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0xe7d4d716 or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2830 0x19e96c0f rtl2830_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2830 0xf9aa40de rtl2830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2832 0xe9432ded rtl2832_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0xc9bc83d0 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x7dcf0c34 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x3b430012 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x8c54a931 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0x824a408a s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0xea318d39 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0x182cd776 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0x80b02ead sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0xdbe3ba89 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0xbf49b0c9 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0xdba1644e stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0x6e995b27 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0xa5137c90 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0x46f397d7 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x7c8182ea stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xa442a2d7 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0xc845e671 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x09845ab8 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0xa12cec91 stv090x_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x603e5343 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0x7f8cccfa stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0x3dcbb923 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0x6745b3cd tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x811ae5e9 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x44035b4c tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x946fc858 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0xbaa02f74 tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x881f687e tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0x44213cc3 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x7a948772 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0x99de5ad8 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x8da774f3 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0x244fad74 ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0x25583b84 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0xe965fac6 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0x98c475fd ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0xcaeddf69 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0xc8c4b321 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0xb0c5b839 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x4e6c87aa flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x4f81d509 flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x55c8218a flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xb3bfc9b9 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xe93a522c flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xeb068523 flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xfc70b151 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x0f1fb66e bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x23c1a80d bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x3feff5c9 bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd973b149 bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x01b2016d bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x31bf7d13 bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xa8efbc9a bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x232499df dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x32b71e25 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x5ce46bc0 dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x8a4929f0 dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xc3408835 dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xee162448 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xef2db080 rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xf1e5b578 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xf8ec9143 write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x7e4e0806 dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x17e30c31 cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x599ef350 cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xa1460229 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xbf741b9a cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xfff48dab cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x2e43c483 altera_hw_filt_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x714aa5c7 altera_ci_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x9247b72f altera_hw_filt_release +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xc723f2f2 altera_pid_feed_control +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 0x21927c55 cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x6663584b cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x959f5786 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xafae6fe3 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xd1a1f2c7 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xeef5995e cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x6d315519 vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xc36da35c vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x4011de03 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x73d07956 cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x8d6b31d2 cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xae2b3f79 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x25e4feec cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x830ba907 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x904c650b cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xa14fcec7 cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xd5866549 cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xfc9934e2 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2d6774ca cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3778b5b8 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x379f0b68 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x42c6e606 cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4bd862f7 cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5165ea3c cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x611def74 cx88_risc_stopper +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x667d7e00 cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x77d0e981 cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7a1d64e7 cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x81510642 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8dbe616d cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x9521c200 cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa4a1c4a7 cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa81296ab cx88_free_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xac7e326c cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb477c4eb cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xbaa5e7cc cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc8835b69 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe1fd8773 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf3e583cd cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xfab56d2e cx88_newstation +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x1ccbc15a ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x228dc90d ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x2c3a50b8 ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x31a1f2a7 ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x36718045 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x36db8d4f ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x45353e8a ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5a76f48a ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x72865323 ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x915aea49 ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xa32fea3f ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xa7bd4e77 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb3dab77c ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xbe2098b3 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xbec99d2c ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xd973bedd ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf7e3c100 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x03e0a171 saa7134_tvaudio_setmute +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 0x12a9cb9f saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x14a82712 saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x3c14f56d saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x73039031 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x8143877e saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xa1aa9723 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xb28fce59 saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xc3b5fcbd saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xc43eb0f3 saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xccef30be saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xf3f1b993 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xf6b98129 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xe22cb326 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x3a1c6fea videocodec_unregister +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x484c91d1 videocodec_register +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0xc527f854 videocodec_attach +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0xd028a184 videocodec_detach +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x0b26b80f soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x14b8c09e soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x1b9adf95 soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x53db6363 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x86e6653b soc_camera_unlock +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x90f365c5 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xa7e02de0 soc_camera_lock +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xaa9f5ee8 soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xd2d91f1a 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 0x5f3e3558 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xa9546115 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xfe2c3a07 soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x0a564712 soc_camera_client_g_rect +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x30faa2f7 soc_camera_calc_client_output +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x3db7f992 soc_camera_client_s_crop +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x5bbdeb44 soc_camera_client_scale +EXPORT_SYMBOL drivers/media/radio/tea575x 0x0b517aa2 snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x2014667f snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0x23825658 snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0xa9ec1c3a snd_tea575x_init +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x39a57009 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x48d895e8 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x6c1f7de9 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x8cb7550b lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xa83f9362 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xdd9c0a5d lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xe5cb96db lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xec17b89e lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/rc-core 0x2133a0ba ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0xf27e2b56 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/tuners/e4000 0x8227c193 e4000_attach +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x4a7c9acd fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0x542c679a fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x19f0e29e fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x4a6265f7 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xc2ce9789 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc2580 0x1a537119 fc2580_attach +EXPORT_SYMBOL drivers/media/tuners/max2165 0xa18fca7c max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x67df3bf3 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x47d29a41 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0x6c91f205 mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0x99243fe6 mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0x069f7e03 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0x74cb1c70 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18212 0x4b07b5e1 tda18212_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0xc620725f tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tua9001 0xc2955fd2 tua9001_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 0xab03fc99 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/tuner_it913x 0x84682db1 it913x_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x87c84baa xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0xb7f40bbe xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x2d51ceff cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x81585762 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x0ee9edd6 dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x176dcdbd dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x1e4fd7ad dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x35e6e35c dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x37fbeb2a dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x3fab3cb0 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x5a606723 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x6a703bef dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x973b3bb2 dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x77e6dacd usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x82577da1 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xb5c0132f dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xbe6cd2e4 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xf79f51a6 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xfa7691c4 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xfb593a05 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x21f4cd01 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 0x2c9f6cab dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x2f5720d4 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x40ba575b dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x49b8613b dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x519be998 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x55a3973c dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x6565972d dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x6d017f65 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x7f5a995f dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb1e25cd8 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 0xf1b1c30d dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x40b06f61 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x891d5f68 em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x506d36da gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x87e5f0f9 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x8f491df7 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x911d52a3 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xa8864c9f gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xe8d0ca15 gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xe94dd676 gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xfbc804cd gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x98f82b0b tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x9b09022f tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xe8193b17 tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x418485c5 ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x6a43840f ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x42c8e001 v4l2_ctrl_next +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x4adaf0f3 v4l2_ctrl_query_menu_valid_items +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x53c9394f v4l2_ctrl_query_menu +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x5f96a661 v4l2_ctrl_check +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x25a6f484 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 0x7e7a3dc0 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xface4ab9 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x155ab95b videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x5b78e32e videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x70cbf5d0 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x8d184d40 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x9f444614 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xfd6009fb videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x211d5520 vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x011ba562 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x024cc626 v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x045bef8c v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x070024f4 video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x080630f2 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x134ce712 v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x168a6ae3 v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1d232ebe v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1d3ac7a9 video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1f93e7b2 v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2cfe3099 v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3498b30e v4l2_ctrl_find +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 0x3dcacd37 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x47b0f92b v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4e30b3ce v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x507812ef v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x507fcf10 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5400e667 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x57087fad video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x58c6d650 v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5c28d8c0 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x685eb578 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6a7612f3 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6bc2b055 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x716d3581 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x71badcfa v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x752672f1 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x755bf74d v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x798a9fed v4l2_ctrl_s_ctrl +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 0x8128b3fd video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x83e043dd v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8f812cd0 v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x90c0c276 v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x937b3f27 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x94da71e9 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9c1c4afb v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9db47521 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9e10c4f0 v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9e9b8b2c v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9feb446d v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaa5c9ddd v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaeb66128 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb4eca5ce v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb88bbecb v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb9bf3144 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbac4a225 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc12cf8f8 v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc39f3941 v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc91840fb v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc9d46ea4 v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xca31148f v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcc1ff993 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcd65ba7a v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd0a9875d v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd44a166c __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd7957ff4 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdc8d12a3 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe01e5fd8 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe08ad48b v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe4347058 video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe56df894 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe6fce6f2 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe70abc46 __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3895535 video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3b5f9e8 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3bd2a6e v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf5ad9ebe v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf9fa1473 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfb21c451 v4l2_clk_disable +EXPORT_SYMBOL drivers/memstick/core/memstick 0x0b309e7b memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x21c54359 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x429d2896 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x68c68374 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0x6fe03dbf memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0x88a8a3e4 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa5987a36 memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa8149791 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xb7551abe memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc7b8cac2 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc7f1df92 memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc9803226 memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xef19816c memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x00140380 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x014a4f1e mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0fea7a9c mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x127cea3c mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x18627e01 mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x19d89279 mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2eafb385 mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3769183a mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x40ef7de2 mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x413aa48d mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4160ff7f mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x494d7894 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5227af41 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x59b04eab mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5ae914a6 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5e27717c mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x65d468a1 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6f4afa44 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x727838d5 mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x862f39f0 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x95ae9a74 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9c926b89 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9d332c07 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb26f3922 mpt_set_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 0xc60472d5 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xcb805fba mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xcc7b1aff mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd289e171 mpt_put_msg_frame_hi_pri +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 0xf77f75e7 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x02e952c9 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x05037503 mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x085c52d7 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0cf56ec6 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x15e4d393 mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x180ce133 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x31142e08 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3b82752b mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x40450016 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x426e9605 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x45253a86 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5a43b9ca mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6081017e mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x67c870e8 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6b4da392 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7206ab86 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x818cb9f6 mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x95a9221b mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xade9e289 mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb0fbf855 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xba67676d mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc82665b6 mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd6c39063 mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd6d3a26b mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xdcc5b417 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xdec7d74a mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf9efd325 mptscsih_remove +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x057d8bcf i2o_parm_issue +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x08afc83a i2o_find_iop +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x0eaeb11e i2o_exec_lct_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x10b4a5bc i2o_msg_post_wait_mem +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x2a843bef i2o_dump_message +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x3807a2a0 i2o_parm_table_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x38f1b155 i2o_driver_notify_controller_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x4a1f27c1 i2o_parm_field_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x59850d58 i2o_driver_unregister +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x6ba29fcd i2o_iop_find_device +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x7b99ff5f i2o_driver_notify_controller_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x7c345e8c i2o_driver_notify_device_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x80139ac8 i2o_device_claim +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x9b669832 i2o_msg_get_wait +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xb4c00dcf i2o_controllers +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xbe417b04 i2o_status_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xc90b7d36 i2o_event_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xe9383cec i2o_driver_notify_device_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xfb57f230 i2o_driver_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xfc67c3aa i2o_device_claim_release +EXPORT_SYMBOL drivers/mfd/cros_ec 0x86da6c0e cros_ec_prepare_tx +EXPORT_SYMBOL drivers/mfd/cros_ec 0x895a901a cros_ec_register +EXPORT_SYMBOL drivers/mfd/cros_ec 0x97ee5fe0 cros_ec_remove +EXPORT_SYMBOL drivers/mfd/cros_ec 0x9dfa7ca4 cros_ec_suspend +EXPORT_SYMBOL drivers/mfd/cros_ec 0xb557dd3d cros_ec_resume +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x305ac995 pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x7c1c798b pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x0dedc23d mc13xxx_irq_request_nounmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x0e1bc4d7 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x236ebd32 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x3e5333ab mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x5ac92eb5 mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x85ef25be mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x8aaecfde mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x9538b8e5 mc13xxx_irq_ack +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x984dd7f7 mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x9a84b573 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xa807d477 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xe647dd2a mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xefa2ed24 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/tps6105x 0x4cd7e5db tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0xa33823f4 tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0xd73295d6 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/misc/ad525x_dpot 0x3089f00c ad_dpot_probe +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xd56b287b ad_dpot_remove +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x8a05ed90 altera_init +EXPORT_SYMBOL drivers/misc/atmel-ssc 0x41fdac9a ssc_free +EXPORT_SYMBOL drivers/misc/atmel-ssc 0x5cd5df8e ssc_request +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x0e9755b9 pwm_channel_free +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x5a8b82f9 pwm_channel_handler +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x5d5c2951 pwm_clk_free +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x6a5e1f70 pwm_channel_alloc +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x73330c97 pwm_clk_alloc +EXPORT_SYMBOL drivers/misc/atmel_pwm 0xeb7f2c6f __pwm_channel_onoff +EXPORT_SYMBOL drivers/misc/c2port/core 0x884c6b48 c2port_device_unregister +EXPORT_SYMBOL drivers/misc/c2port/core 0xd67fdf6c c2port_device_register +EXPORT_SYMBOL drivers/misc/ioc4 0x1435ccd7 ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0x3be93a2f ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x0525d3d5 tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x0b0a4de4 tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0x1205ab63 tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x285aa4a8 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x34d48649 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x39f86aa1 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0x5262b9e9 tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x863b4237 tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xab9a4a82 tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xb2da7412 tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0xca5c45bd tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xe32aa7b4 tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xf56c2420 tifm_unregister_driver +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0xe7850f4c mmc_cleanup_queue +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xd3b675e5 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xd8399bd4 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xf2e5412b cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x0dd43908 map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x6c7c01bd unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x74f18ea9 register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x76902409 do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x0be3245d mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x4d4266e0 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x43139453 simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x6b5c482d mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/mtd 0xdd0d2610 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/nand/denali 0x06bc8f63 denali_init +EXPORT_SYMBOL drivers/mtd/nand/denali 0x83223cc3 denali_remove +EXPORT_SYMBOL drivers/mtd/nand/nand 0x10ff64d1 nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x1d76cf3c nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0x54d1ca5b nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0xae9ebfde nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0xce522da3 nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0xfed9b0e8 nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x4dd4d760 nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x5f231ed7 nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xce4a7f1d nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x267dc28c nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x8eb1a1a4 nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x57a31e57 nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x07736459 onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x8981016b flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x9e3d0cb2 onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xb3cab15b onenand_addr +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x0079c91f arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x098b2b50 arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x15183b18 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x197c7d1a arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x2ea5f7ef arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x35f9ba7a arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xa636f952 arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xa881a9c1 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xe67b1adf arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xea448de2 alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x080f6485 com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x115eb30d com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x83894e71 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x035a09ac ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x28ccec13 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x5e202d2c NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x60ea50fb ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x639bb0a8 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x9b3d5691 ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x9b71be6a ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xad928ab3 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xb2f6321c __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xd2e093cc ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x0e40da60 eip_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x1abcaf53 eip_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x1bfa7d37 eip_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x3200168e NS8390p_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x4dd252c9 eip_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x7a232b90 eip_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x99c03fd7 eip_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x9bef4da8 eip_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0xaa44c67e eip_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0xb244073b eip_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0xd7fc5b5e __alloc_eip_netdev +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x4994f5fc cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x01f4deb9 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x26cbbfdc cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x28007c2b cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x32059f6e cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x3a87d11c t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x407a29ec cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x660090ee dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x8c839c1e t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xab34f016 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd9070fec cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xdc7e44b5 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe0374e40 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe8996162 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xec23551f cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xf9db4f44 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xf9f41090 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x145e2fd3 cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3f91fecc cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3fc554d7 cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4040efca cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x42fe3937 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x49492655 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4b937cb6 cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x523eb042 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x546d5488 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x622a767a cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x65691993 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6e4d0afe cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6fcb1bb8 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x71ca7588 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x796b5a5f cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7d6f3bc1 cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8564be29 cxgb4_disable_db_coalescing +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x919dcf33 cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9c21fafa cxgb4_enable_db_coalescing +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa1121b1f cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa77f331c cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb3bcaa2b cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc599c038 cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xcd848c58 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd4c4fd1f cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xdc4db331 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xec588167 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf27b01e9 cxgb4_free_atid +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 0x7b10e498 vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x7f464e4e enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x9196d804 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xa8d60b9b vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x0bf413b6 be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x2e1b85c2 be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbab62e22 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x02cb0b41 mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x07cbab5e mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0cb43c2b mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x147f417f mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1cff25a9 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x215df867 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x26004ed2 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2ceafdda mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2e594c04 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x343d2055 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3580a9d7 mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x53167b5d mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x77bca1be mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7c708892 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8cfdf2a7 mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa360e2e4 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa8a94923 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xac551726 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb7ff1c47 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc315e6d5 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc9a5d848 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd3bb3e5c mlx4_set_stats_bitmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe3c24ac5 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe410838e mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xea46a488 mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf41a908f mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x02a7631e mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x08dba194 mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0cc17927 mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x361f9b7d mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3b4ba7f7 mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x467d7e62 mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4b379132 mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4bf8080e mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5a216e86 mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6d75e241 mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x78c0e73d mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7950541e mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x82dc52e7 mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x865abb4b mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8d63775a mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9134b34a mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaddca030 mlx5_dev_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb6456ad6 mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb86d2a33 mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc5b46f65 mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd8b9d93a mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd96f4812 mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe6051cb8 mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xea6455e6 mlx5_dev_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xed21ddc3 mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfcbb313c mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfd2d7b53 mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x0fbbf6f9 hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x25d388eb hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x3f466985 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xc4f1b205 hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xd400e880 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x357e8483 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x3af74438 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x4c771875 sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x68d070e5 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x6d8d76c0 irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x74634903 sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x7b251575 sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x81efdecf irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xcb25435c sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xf4b217fc 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 0xb34a7575 mdio45_ethtool_spauseparam_an +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mii 0x4b250fc8 mii_check_media +EXPORT_SYMBOL drivers/net/mii 0x72303523 mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0x888f5e0c mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0x8f94e9ba mii_check_link +EXPORT_SYMBOL drivers/net/mii 0x94f960e9 mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0xa645d6db mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0xb1a0b6c7 generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0xeac6bd83 mii_ethtool_sset +EXPORT_SYMBOL drivers/net/ppp/pppox 0x762cd226 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0x7b520af0 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xa544a762 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0x3aba9b8f sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x08548bc7 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0x38950832 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0x571ca55f team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0x5c243c78 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0x60b112b0 team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0x8961147f team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0xd4319318 team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0xfb806ba6 team_options_register +EXPORT_SYMBOL drivers/net/usb/usbnet 0x57ba50ca usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/usb/usbnet 0x8810af6c usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0x9836219a usbnet_link_change +EXPORT_SYMBOL drivers/net/wan/hdlc 0x02c5b4e3 hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x0e78b222 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x4c5aebf1 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x740fc050 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x7b96d8c3 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x84d03444 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x8a0d9867 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0xb2972d94 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0xd3b8fd2b unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0xe2569339 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0xf2c36eff hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/z85230 0x041fb8f9 z8530_sync_txdma_open +EXPORT_SYMBOL drivers/net/wan/z85230 0x10c78988 z8530_dead_port +EXPORT_SYMBOL drivers/net/wan/z85230 0x1b2cc6b9 z8530_nop +EXPORT_SYMBOL drivers/net/wan/z85230 0x1c1e3839 z8530_channel_load +EXPORT_SYMBOL drivers/net/wan/z85230 0x39790059 z8530_sync_dma_open +EXPORT_SYMBOL drivers/net/wan/z85230 0x5b36938c z8530_sync_dma_close +EXPORT_SYMBOL drivers/net/wan/z85230 0x5cd24d29 z8530_hdlc_kilostream +EXPORT_SYMBOL drivers/net/wan/z85230 0x7b242167 z8530_sync +EXPORT_SYMBOL drivers/net/wan/z85230 0x8cf16d8c z8530_queue_xmit +EXPORT_SYMBOL drivers/net/wan/z85230 0x8ddd56dc z8530_sync_txdma_close +EXPORT_SYMBOL drivers/net/wan/z85230 0x8edcacbc z8530_init +EXPORT_SYMBOL drivers/net/wan/z85230 0x9463e8e0 z8530_sync_open +EXPORT_SYMBOL drivers/net/wan/z85230 0xbf5246e3 z8530_null_rx +EXPORT_SYMBOL drivers/net/wan/z85230 0xc71b098f z8530_shutdown +EXPORT_SYMBOL drivers/net/wan/z85230 0xd4ffebf0 z8530_interrupt +EXPORT_SYMBOL drivers/net/wan/z85230 0xdadc2d6b z8530_describe +EXPORT_SYMBOL drivers/net/wan/z85230 0xe3d80064 z8530_hdlc_kilostream_85230 +EXPORT_SYMBOL drivers/net/wan/z85230 0xe926824c z8530_sync_close +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x20f4ea7a i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x96cc5f0b init_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x97ac1900 reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xbe2831e5 stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x038c8fc3 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x10819296 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x202a9842 dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x2782102d ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x464c4cce ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4e2481d5 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x51a84dab ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x53358ce3 ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x95eb656f ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xacf75d2f ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xb3f1c829 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xc96d1c87 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfee240f1 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x238f0142 ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x6f1ddfb7 ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x7367a247 ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8246be6c ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x85ef1dd2 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x895f9dc2 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xae7f3a5d ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xaf096710 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xe9529160 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x009cb055 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x0199ec46 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x27cf1694 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4c6ddcb4 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4e1380ee ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x5c2db650 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x865ffa92 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 0x9340b8c7 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xaa78066f ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xbd6a30c0 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xc0eee2ad ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xdb7555b9 ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xedb5dda9 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xf6a9bf96 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0x084e98bc ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0x91fc76f5 ath9k_hw_wow_event_to_string +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0xbf30bfee ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0xc71f37cb ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x201f64c9 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9fc78f8f ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa84af7bb 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 0xf7fb37b6 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x002b25c2 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0052d9a9 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x04a78f5c ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0699cfc1 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0bdd7382 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0d64c21e ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x17072a4d ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x17b31dc4 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1a24b6ec ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1ad32546 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1de858b9 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1f030fc5 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2133eab5 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x222bd4d6 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x249b2e04 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x26ad6218 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x27b736b6 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x280ea853 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2b71d6c9 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x369e9859 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3be7bc07 ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4113872d ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x45a9d558 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x45e662a3 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4aa99697 ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4c3a5434 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4d9fad99 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4e7789f9 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4f758efa ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4fbf0c7f ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x549f9df7 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x575e6be0 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x57f957fb ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5b04e359 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5b10cd79 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5d5df9d3 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x65e36121 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x667c42e0 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x66e69162 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x68325385 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6a40521c ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6cbb3303 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6fa715d0 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7114f943 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x711b4e21 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x73ee9e27 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7eb6f030 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7eed4897 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7f8e1d0e ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8685bd6b ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x873c3a92 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x88b1c023 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x893ce5ab ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x897020e6 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x92310a68 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x93e7bf26 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9780c3df ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9b1bd980 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa7b0d197 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa9f3fb3f ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xab089475 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xac49d5b5 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb43ebef6 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb4de3b91 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb6268e74 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb8f46309 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb9984da4 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xba3b2b42 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc13cc40b ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc25dedbb ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc54cd56d ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc591ab0b ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcc501cbe ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xccb35d73 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd0cd125f ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd3006da6 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd3119d0c ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd31ac3e3 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd8a43f97 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdfc3c996 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe397e49d ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe81613c6 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe82f37c9 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe90ec1a4 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeabf3503 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xecf485bd ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xedaa84de ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xede36364 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeebdd1d8 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xefb14d9e ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf242feb8 ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf2bfa126 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf2cb904b ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf4121a43 ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfb0efdd5 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfe7faeff ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xff1386a8 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xff665a89 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/atmel 0x32e60e4f stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0x8e12c702 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xa8fb2797 atmel_open +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x9028477c brcmf_sdio_remove +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x9c863caf brcmf_sdio_probe +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x2a67060f brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x2aa44697 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x2dc227f8 brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x501c7efb brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x690f1c2d brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x73172e46 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x78fc00b0 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x80d3d8b2 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x8a45e65e brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x900b8bc7 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xbe69bd3a brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xc3963afa brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd4631d7b brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xdb1caac7 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x034038ad hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x097e00e1 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0b44bb7d hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0cd01cde hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x2cd83ac5 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x445720b8 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4587d741 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x530c231d hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6535abe0 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6d924dfd hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x80e796c7 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x84c871ce hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8ee6121b hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x925c17f9 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x95dc61f7 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x97c755d9 hostap_master_start_xmit +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 0xb687262d hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc941100b hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd0799628 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xdc496cc3 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe51bd7e1 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe58cd464 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe79b25fc hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf0ba5b05 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf846b2c1 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x006bb586 free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x011c7d85 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x0264cc15 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x04f694db libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x4410d44c libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x7256e165 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x7e182a5d libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x804d520e libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x90a10267 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x96a14529 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb210e2bc libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xbc1f0e6e libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xbd121d6f libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc41a531c libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd532ef2c libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd7231cc2 libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd78b2b7b alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xde936636 libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe9e1729f libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf64dae7d libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xfcd9d3d3 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x00541747 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x00587554 il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x00b03fe0 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x03c6a71a il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x086c3e36 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0bc8c3f2 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0ead4b1c il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x17be4849 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1af1d7a1 il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1bfd82b4 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x211adc8d il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2583a0f6 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x281a7681 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x28242238 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2824a190 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x282cb7de il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x28899f53 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2b965050 _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2c382df3 il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2d40d702 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x318b204f il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x382cb1a4 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x416de4e2 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x45f3ee26 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4a867628 il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4d9e429b il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4da0868b il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x55ed414d il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x56498fae il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x574bb3c6 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5b21e801 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x696160d2 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6a243383 il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6cf9faf2 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6f63b0c4 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7681036e il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x76908a64 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x788d830b il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7a260116 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7c6b9f3a il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x82dd5512 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8510ed26 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x892b6e0b il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8c440a22 il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8eb01d94 il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8f18c286 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x91234aa0 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x93ff402d il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x946bb7b9 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9548a485 il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9754c75c il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9af1a720 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9e24edb8 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9f052800 il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa0b25160 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa3015f84 il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa74b0c22 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa975d03d il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa9f5fdb7 il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xabcd537e il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xac1f37e3 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xae99084a il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb30756a2 il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb4a1f381 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb52f2c7a il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb5b99c52 il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb9910cb2 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xba23bb2a il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbc441bcd il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc009942e il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc0957bac il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc31ea52d il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc4d84827 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc71a0254 il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc74767f1 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc78d203a il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc8624950 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc9ccd146 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcc80e6cd il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd2b085ca il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd3c5c8f9 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd4998f17 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd5c44161 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd691bedf il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xddb15315 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe470cb16 il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe702d199 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe8e16744 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeaebf7f6 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xebe84f15 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf06e42f8 il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf143afbe il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf2eea9a9 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf42c39d8 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf684e49a il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf710b62c il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfaa7cab6 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xffb4f2e2 il_rx_queue_update_write_ptr +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 0x0e7bc05f __tracepoint_iwlwifi_warn +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x201337b4 __tracepoint_iwlwifi_dev_tx +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x249e4b06 __tracepoint_iwlwifi_dev_rx +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x36dcef55 __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x4919d1a5 __tracepoint_iwlwifi_dbg +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x67381a2a __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x79e9bf26 __tracepoint_iwlwifi_crit +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x7edec07d __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x8bfcc307 __tracepoint_iwlwifi_info +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/iwlwifi/iwlwifi 0xda36f3a4 __tracepoint_iwlwifi_err +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x098fe25c orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x3c94921b orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x4fa25d94 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x51156056 __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x59fbd9da orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x6307dfb6 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x64260efa orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x79983868 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x7cb242b5 free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x8aaa8692 orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x9b5edf53 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x9d0b87b4 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xab41b80b __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc00d91ea orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xcc0ff055 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xde91d3b8 orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xf8b9c9e3 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/btcoexist/btcoexist 0x92f541d1 rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x117db984 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x122f2ed3 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1528e0b0 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x17de5e2e rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x23f12631 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2466d637 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3a7cb379 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3e969b50 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4462711e rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4c8af60a _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x593216fc rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5a0db66d rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5bb53045 _rtl92c_phy_dbm_to_txpwr_Idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x60926ad1 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x65c71b76 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x682a7700 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6c6a8548 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x774a65bb _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7bb9ace5 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7bd3b62b rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7c2a926b _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7e4161bf rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x88f7191a rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8c39cc3b rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8eec696a rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8f513477 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x92106037 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9bd634e1 rtl92c_phy_ap_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 0xb5e98ed8 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbb38d16a _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc1c12e48 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd15d5cf0 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd20e4f49 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd76cb723 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdf5f45b9 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe09642fa rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe77e7629 _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe7a67e00 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xed1889fe rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xedaa9341 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfa965fae rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x5b2e0d26 rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0xb2f4d7f7 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0xbe16784b rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0xdbc19109 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x3934efc7 rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x3fd2a616 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x8d36e2f3 rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xf29422e4 rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x02a57233 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x10900b41 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x120c4d47 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x12903b76 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x1487450b rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x21823bef rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2272951e rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x284f9352 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x4d17807e rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x50d73aa6 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x700893f1 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x70ff4794 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7c974f38 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8da74169 rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9801d2e5 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9f909c28 rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xac9989ce rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb438b4ed rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb8ada71b rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc72844fd rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x0b326b65 wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x202477bf wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x9afe3eea wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xab7e688c wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/nfc/microread/microread 0x0df39db5 microread_probe +EXPORT_SYMBOL drivers/nfc/microread/microread 0xb184b22d microread_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x1d8c259a pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xa95bf79d pn544_hci_probe +EXPORT_SYMBOL drivers/parport/parport 0x00147d4c parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x0bcc496a parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x0e90b490 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x1069f395 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x24564172 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x2a8622f0 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x2c6279f4 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x3a472710 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x4fa40bec parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x62602e8f parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x6545a01b parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x6df63b10 parport_release +EXPORT_SYMBOL drivers/parport/parport 0x7b096b77 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x7d5755bb parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x81bfcc21 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x91c3fcb6 parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x9b5977a7 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0xa0367a37 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0xa47f9fef parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0xacff8391 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xb23e468d parport_write +EXPORT_SYMBOL drivers/parport/parport 0xb8bf62c0 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0xbcca273f parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xc098569b parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0xd3cfb131 parport_read +EXPORT_SYMBOL drivers/parport/parport 0xe3c8a034 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xe823d9aa parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xee236be1 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0xefae5eb2 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0xf116d756 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport_pc 0x8501e7c6 parport_pc_probe_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xb676b2ce parport_pc_unregister_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x2f2de757 __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x336ebf51 pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x35f6e8d3 pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x441ad468 pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x4d24d58f pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x6452ab2f pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x6c9b9a82 pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x73f413d0 pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x74101e5d pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x7d4e3ea5 pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x8ecf3350 pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa041208f pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa1e61842 pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xb416c25e pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xbce18d1f pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc16ce637 pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xdc3458da pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xdd236ea4 pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe6aac32e pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x1b3e09f2 pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x2c5b7596 pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x4f7ea01b pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x6c4b78f4 pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x97082d0e pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x9e8bc3cc pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xa88f5902 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xaa2a8638 pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xaef4c053 pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xba8ce4d9 pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xc6cc66f2 pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x2c424d39 pccard_static_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0xc234387b pccard_nonstatic_ops +EXPORT_SYMBOL drivers/platform/x86/intel_ips 0xd32b0b5b i915_bdw_enabled +EXPORT_SYMBOL drivers/platform/x86/sony-laptop 0x5bb1e117 sony_pic_camera_command +EXPORT_SYMBOL drivers/pps/pps_core 0x6b24dff8 pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0x8c97e3dd pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0xb0805d6d pps_register_source +EXPORT_SYMBOL drivers/pps/pps_core 0xc1ff5e98 pps_unregister_source +EXPORT_SYMBOL drivers/ptp/ptp 0x47b4eb93 ptp_clock_register +EXPORT_SYMBOL drivers/ptp/ptp 0x4d7f46e8 ptp_clock_event +EXPORT_SYMBOL drivers/ptp/ptp 0x5b08d4e4 ptp_clock_unregister +EXPORT_SYMBOL drivers/ptp/ptp 0xcbc9aa5a ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x134cee51 pch_ch_control_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x135ef083 pch_tx_snap_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x1c92207f pch_set_station_address +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x2f1b9187 pch_src_uuid_hi_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x391f1844 pch_ch_event_write +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x820d8867 pch_rx_snap_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xb0469eff pch_ch_event_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xcdc3b2b2 pch_src_uuid_lo_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xcf37f613 pch_ch_control_write +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x379bd23b rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x59748bb9 rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x6018cbf7 rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x9c43cba7 rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xa783362a rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xd02e5d6d rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xd23ceb9d rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xde3764c5 rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xe55a4f09 rproc_vq_interrupt +EXPORT_SYMBOL drivers/scsi/53c700 0x3d9cece0 NCR_700_intr +EXPORT_SYMBOL drivers/scsi/53c700 0x3fd547ca NCR_700_release +EXPORT_SYMBOL drivers/scsi/53c700 0x58db6231 NCR_700_detect +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x06566056 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x0d61163d fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x133c382e fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x3f162c3f fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x4480f282 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x4d71910f fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x64575d83 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x6eb8ddba fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x98c5f743 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xab35bcfa fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xbd84447a fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xc452843a fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x09f91d5d fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x17c55b8c fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x18d59b0b fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1b83bb9c fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1f2a9fb7 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x21020f87 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2b8a0cf1 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2cc498d0 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2e69cf08 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x337a83e0 fc_change_queue_type +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x363fbda5 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36fd831e fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3890353a fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x398771bf fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3f8dddae fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x458761ab fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x55390b41 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x55c85f68 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x57fed263 fc_change_queue_depth +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6903fd80 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6cc4cf74 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x73fb9d17 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7a4630f0 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7cb979cf fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7f7b95a5 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x80175f90 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x898c58b3 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8ca559f0 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x94e3a600 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9a73da96 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9b9e908c fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9f6e8597 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa09730c8 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa1d377ff fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb29fe1f2 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb8993310 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xba7c2d9e fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbce5f9ed fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc767ea23 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd02213f2 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdad40ff6 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe3f4cce7 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xec5b3a13 fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf209e092 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf23e23cc fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf2529206 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf2d54761 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf50fe9fb _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf6ad7fcc fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf9557f4e fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xff15c43b fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xffc2b323 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x2cf848a4 sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x5c80034b sas_wait_eh +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x7a0c9047 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xbcab745c sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x0152eeb7 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 0x04c343bd osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0f1f838c osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x10538e20 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1377dee3 osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x16a29bcf osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1c171382 osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x24b58b4a osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2f7367ec osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3432ccee osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3b0e0b53 osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3d6c0b57 osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x493ac0ac osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4c94a7f6 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4e235cd8 osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5ea75397 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5fa84ac6 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6709074a osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6905d7d9 osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6fa1ee34 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x777e7e15 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x80d20996 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x85f4ce78 osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8c331408 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9a5fee99 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xadfb9e48 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb434a02c osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb612e35f osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc3f1b862 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc713aef0 osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc9c7194a osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcccb0ce6 osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd0733a1c osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd2c9e28d osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe45f1872 osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xea422b89 osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xeeb3ac6b osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/osd 0x09e5b9a2 osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0x57cf57bc osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x6c095517 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x80dc9d38 osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xc635be4a osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0xf0bfbcec osduld_register_test +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x1e180534 qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x21075803 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x25ddd921 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x3b6eeed1 qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x47d59e3a qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x48e86e43 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x9a44be88 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x9e9c0452 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xcd1b94c6 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xda7dd81b qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xed6a3e01 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x144079aa qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x731c5e11 qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xab315b52 qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xc464f312 qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe47094dd qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe6e33295 qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe76b3b20 qlogicfas408_get_chip_type +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xf2b95199 qlogicfas408_setup +EXPORT_SYMBOL drivers/scsi/raid_class 0x866b840a raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0xcf6ba926 raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0xd8930820 raid_class_release +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x0b3699fa fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x1902fcc7 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x4597d130 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x72b15308 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x73e36b77 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x8579ce9a fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x99c0ed51 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xa2f993bb scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xa8894faa scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xc91b5d2f fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xd10dbf5c fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe433f2a0 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xfb4bd2fe fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x057ed417 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1467ca88 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1af62b1a scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x22248609 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2fc68f4f sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x30c31c2b sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3e0debf6 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x51356f1a scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x51537e3a sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5439b5a7 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5a31ed9a sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5accedd7 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5c201cac sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x64c97381 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x64fd08e1 sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6d807b5b sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6e49da3f sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x76736101 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8258eb4a sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8267037c sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x83f5ac2e sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9102b21f sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9b584f00 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb466a940 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe13fe439 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe61280a5 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe8d758ea sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xffa5c52d sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x01523749 srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x08deb3f0 srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x5c59ef14 srp_rport_get +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xa608adc0 srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x4485f2f8 ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x81c354b1 ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xc19adf06 ufshcd_runtime_idle +EXPORT_SYMBOL drivers/ssb/ssb 0x1468b343 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0x2bfe59c3 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x3daf8c7f ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0x46366f10 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x4a4a7a2c ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x4ba50f79 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x67263dc0 ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x8bf9507e ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x8e6f325f ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x8f2655e5 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0xb006a840 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xb378deb5 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0xb37f93a1 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0xb4ce4088 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xc1f4fc22 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0xc43b2413 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xd63ee4bf ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0xebcf2b28 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0xf38505fa ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0xfaafafd7 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0xfcaaf778 ssb_bus_unregister +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x62cdeb02 fwtty_port_get +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xc3491700 fwtty_port_put +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x3145147a adt7316_remove +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xd64b4fa5 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x893c23ee ade7854_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xe49825f3 ade7854_remove +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x01187f5b lnet_kiov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0bce7eef lnet_counters_get +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x111ac6c6 lnet_finalize +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1366b7ac LNetSetLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x19670622 LNetNIInit +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1b191752 lnet_msgtyp2str +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1f20216e lnet_notify +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 0x3558e584 lnet_iov_nob +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 0x4bb00492 lnet_copy_iov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x4f9cb871 lnet_extract_iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5811a721 LNetInit +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x58a1ca89 LNetMDUnlink +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5f9fcc8a lnet_extract_kiov +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 0x6cfa445a the_lnet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x6f7be171 LNetEQGet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x6fe58bc7 lnet_net2ni +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x722c76e5 LNetMDAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x749ce8fd lnet_parse +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7a0c5d1d lnet_copy_iov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7d59a7fe LNetMEInsert +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x854ab844 LNetEQWait +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x863cc51d lnet_unregister_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x8a3064f2 LNetSetAsync +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9c08aaca lnet_copy_kiov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9de986d3 LNetEQAlloc +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa8ba9160 lnet_create_reply_msg +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa8c2760b LNetFini +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 0xaf27dedd lnet_copy_kiov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb1fbf197 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 0xba6c76c6 lnet_register_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xbf0760a2 LNetMEAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd1365a61 lnet_set_reply_msg_len +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf1b316bf LNetSnprintHandle +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xff8a8f1a lnet_set_ip_niaddr +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 0x320901ce seq_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x375e6f8d LUSTRE_BFL_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x5b4c6f79 seq_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x661557c6 client_fid_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x8556048f seq_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xae61cff5 LU_DOT_LUSTRE_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xb79fd28e seq_client_alloc_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xc997a02f LUSTRE_SEQ_SPACE_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xd0000c40 seq_client_get_seq +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xd34caf8d client_fid_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xecee2727 LUSTRE_SEQ_ZERO_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x4d7f5cd3 fld_client_add_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x4fca58bb fld_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x9d59340b fld_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xb5c82372 fld_client_del_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xb62d5948 fld_client_proc_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xf16bc63c fld_client_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xffa8b8de fld_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x000c507f libcfs_debug_dumplog +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0165a161 libcfs_sock_getaddr +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x01db5172 cfs_percpt_atomic_summary +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x03387ca6 cfs_curproc_groups_nr +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x041282f5 upcall_cache_flush_all +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x04d3ce6a lbug_with_loc +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 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 0x108d2e2b cfs_percpt_lock_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x117c8a95 cfs_cpt_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x12426266 libcfs_run_lbug_upcall +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 0x19b06de7 cfs_hash_size_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1a60d439 cfs_parse_nidlist +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1d5a3928 cfs_timer_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x209b1f7e cfs_crypto_hash_update_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x23f6f445 cfs_restore_sigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2557589f cfs_hash_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2589f0af cfs_hash_rehash_cancel_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 0x2b1e0458 cfs_get_environ +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2bcfe9f4 libcfs_sock_accept +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 0x30986343 cfs_range_expr_parse +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x31fc5082 cfs_crypto_hash_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x343a54df libcfs_sock_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x377f93fb cfs_srand +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3791e0c9 cfs_hash_bd_add_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3834f243 proc_call_handler +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 0x391763fd libcfs_sock_setbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3962e3ee cfs_race_waitq +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 0x3ea730c0 cfs_gettok +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 0x4087f890 cfs_hash_del +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 0x417b22b1 libcfs_kkuc_group_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x41ab33a1 libcfs_ipif_free_enumeration +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 0x44f07cfc cfs_pause +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x47fdb4d1 cfs_timer_is_armed +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x48f163c6 libcfs_str2anynid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x493a5cb4 upcall_cache_put_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4947bd6b cfs_hash_dual_bd_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x496b3c4f upcall_cache_get_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4a99af72 cfs_clear_sigpending +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4ad36ef2 libcfs_sock_abort_accept +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 0x5094a56a libcfs_sock_read +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 0x55507792 libcfs_sock_getbuf +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 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 0x5d3be65a cfs_crypto_adler32_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5d73c3e3 cfs_expr_list_free_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5dce9e80 libcfs_lnd2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5e4afc8d cfs_hash_debug_header +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 0x65e2b9d3 cfs_hash_rehash_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x66136d2d cfs_timer_arm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x67398404 cfs_wi_sched_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6756a801 cfs_hash_bd_finddel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x68497dbf cfs_cpt_number +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x687788c4 cfs_percpt_lock_free +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 0x6cf325d6 upcall_cache_flush_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6dfa9ea1 cfs_crypto_adler32_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6e6af71c current_is_32bit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6f928e1b libcfs_debug_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6ff4020b cfs_hash_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x71d7b2fa cfs_hash_cond_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x71f662a3 libcfs_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x74dde658 cfs_hash_dual_bd_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x752858fb cfs_cpt_table_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7a3d49ae cfs_expr_list_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7aa1f2e0 libcfs_sock_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7b0b748a cfs_ip_addr_parse +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7c7986cf waitq_wait +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 0x842864cd cfs_hash_dual_bd_lookup_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x843daa93 cfs_hash_debug_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x857aaea7 libcfs_register_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x89e0937b cfs_hash_for_each_safe +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 0x8eef69ba cfs_hash_for_each +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8f12bb52 libcfs_log_goto +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8f45f10d cfs_init_timer +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x904c4251 cfs_hash_getref +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 0x9548a4f1 upcall_cache_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x95620e8c cfs_wi_deschedule +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x978b5836 cfs_hash_rehash_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x97ab5498 cfs_hash_bd_peek_locked +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 0xa0ddfce7 cfs_hash_bd_move_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa2b68b2a cfs_array_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa4522d96 cfs_hash_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa4d43b13 cfs_hash_del_key +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 0xa9dc74e2 cfs_trace_copyin_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9eae690 cfs_str2mask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xaaf59b75 cfs_cpt_set_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xab887583 init_waitqueue_entry_current +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xad019238 cfs_str2num_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb43456f1 cfs_percpt_lock +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 0xb8897bad cfs_percpt_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb9c87f94 cfs_hash_bd_lookup_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb9ec0fbc libcfs_sock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbada117b cfs_cpt_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbb59ad6e cfs_hash_findadd_unique +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbb9cb508 cfs_curproc_cap_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbd5d492e cfs_timer_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbefb6c3c cfs_hash_dual_bd_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbf013175 cfs_hash_rehash +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 0xc2911d96 cfs_expr_list_match +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 0xc3eb614e libcfs_ipif_query +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc47433a6 cfs_capable +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc49b1c62 cfs_percpt_atomic_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc53890de add_wait_queue_exclusive_head +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 0xcbab8493 schedule_timeout_and_set_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcc195787 cfs_hash_dual_bd_finddel_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 0xd2037eb5 cfs_hash_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd217e869 upcall_cache_downcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd2db9312 upcall_cache_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd6a52be3 libcfs_printk +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd9541990 cfs_strncasecmp +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd96f406d cfs_cap_raise +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdb92f14c cfs_hash_add_unique +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdc23ceb0 libcfs_kkuc_msg_put +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 0xdffc951d cfs_timer_disarm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe1224965 cfs_hash_for_each_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe2da56ad cfs_hash_hlist_for_each +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe3bf6897 cfs_percpt_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe6555032 libcfs_ipif_enumerate +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe7202360 cfs_hash_bd_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe7b54314 libcfs_arch_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xea8b46c8 cfs_hash_dual_bd_findadd_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeab3e30f libcfs_sock_listen +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xec1f56d5 libcfs_str2nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeca4d884 cfs_hash_create +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 0xedf3a25a cfs_timer_deadline +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xee28e153 cfs_hash_for_each_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf2c02048 cfs_cpt_bind +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf372d1c2 cfs_firststr +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf38927af cfs_hash_bd_del_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf40279f5 upcall_cache_flush_idle +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf440bb38 libcfs_kkuc_group_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf79d9217 cfs_hash_for_each_nolock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf8a8644b libcfs_id2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf8efb8c5 waitq_timedwait +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf94025d1 libcfs_str2lnd +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfe565fa9 cfs_crypto_hash_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfe5c8c6b cfs_hash_bd_findadd_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xff0f98a6 libcfs_debug_vmsg2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x6497427e ll_stats_ops_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x66411063 ll_direct_rw_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xaf9c1715 ll_iocontrol_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xcd3cde92 ll_iocontrol_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xce0aa008 ll_osscapa_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x06465a20 lov_stripe_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x291caa9f lov_read_and_clear_async_rc +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x37864f1f lov_stripe_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x8dfa66e9 lov_lsm_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xe308f8ac lov_device_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xfc42b0dd lov_lsm_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x388b3263 lprocfs_counter_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x5a5a3d91 l_dentry_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x91edfb23 lprocfs_counter_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x9d225f6d push_ctxt +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x9dfb62dd fsfilt_get_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xa5992178 obd_memory +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xb3d4d0cf lprocfs_stats_alloc_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xb4f8ee63 lprocfs_read_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xc66d3b22 fsfilt_register_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xe7a68a2b pop_ctxt +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xed05e01f fsfilt_unregister_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xf2177ec9 lustre_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xf71f89b6 fsfilt_put_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x14a47f31 it_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x9c22b84f it_open_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0xb57d8447 it_set_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0xf46a886f it_clear_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mgc/mgc 0xdc287f95 mgc_fsname2resid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x001a0a6b cl_object_attr_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x00ec2ad7 lprocfs_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x010eebdc class_config_dump_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x015dbc0d lprocfs_seq_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01665e34 class_parse_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01966e73 class_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01ad3bb4 cl_page_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01f469c4 cl_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01f611b5 cl_lock_mutex_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x021fa9b0 lu_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x023531ea dt_store_resolve +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x02bcbba6 lu_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x02f91fea llog_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0315ced3 dt_txn_callback_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x035852d0 lustre_swab_llog_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03726fc9 dt_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03b8ca1d cl_lock_discard_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03fa79f7 lprocfs_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x042d996a llog_copy_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x046da7d1 llog_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x04869806 cl_lock_at_pgoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0540b137 lustre_register_kill_super_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0566d4d1 lprocfs_rd_name +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 0x06c6a4d2 obdo_to_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x06d866f5 lprocfs_rd_num_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x06d8f7b4 lprocfs_exp_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x073cd5df lu_object_locate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x077bdcf7 lu_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07aa68bb lustre_swab_lustre_cfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x083942ff class_del_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x08679c66 cl_object_has_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x086f1a31 local_index_find_or_create_with_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x08d13323 class_disconnect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x095e6657 dt_txn_hook_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x097f159b obd_llog_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b78b5d6 lprocfs_rd_filesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0cf99bff dt_acct_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d32d301 cl_lock_extransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0dcc33ec lu_ucred +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0e9dbfc1 llog_cancel_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0f7e311a lu_env_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0f88b03b dt_version_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0fe91547 obdo_to_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10390056 cl_lock_ext_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10408407 cl_page_is_under_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10b30c9d lprocfs_init_ldlm_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10c7f570 cl_2queue_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10f3adcc cl_page_list_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11495519 lprocfs_write_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1201edfb lprocfs_single_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x123a0583 lu_context_key_register_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x12aa1ebb lu_object_assign_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x12f231e0 obd_llog_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x134459e2 cl_io_prepare_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x135496e8 cl_conf_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x135f40b0 lu_context_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1491dc30 lu_context_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x162b4449 class_devices_in_group +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x17260880 obdo_cpy_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x17f6183f lustre_idmap_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1818dd33 lu_context_key_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1956b3c5 class_new_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1a076de6 cl_vmpage_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1a39fb0b cl_pages_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1b0bae32 cl_page_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1b1d4e89 class_find_client_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1b88a4ff class_put_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1bfce265 cl_object_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1c47e72e cl_io_rw_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1c6a95d0 dt_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1d4b9eee dt_lookup_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1dbfb235 llog_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1e3fce10 lu_object_find_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x203946c0 lu_cdebug_printer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21307495 lu_buf_check_and_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x218dcbc7 cl_lock_is_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x221826f1 class_parse_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2327749c lprocfs_rd_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x24236801 dt_index_walk +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 0x263d95b5 local_file_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x267d2244 lu_context_key_revive +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x26e7a247 cl_io_submit_rw +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x275cdc7a cl_env_reexit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x27e8f08b llog_osd_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x28e2c5e2 lprocfs_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2933450b cl_page_gang_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x297cf5e0 class_handle2object +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x29f04fe8 cl_page_make_ready +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2aa56c9c llog_thread_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2abbc0dd llog_cat_cancel_records +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 0x2c69bf14 dt_txn_hook_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2d3895fe dump_lsm +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2dba5bc0 capa_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2e56b5e3 llog_cat_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2eab89b2 lu_context_key_degister_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2eee74c5 class_search_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2f28bbd5 cl_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x306e0808 cl_page_is_owned +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x30e9f330 cl_page_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3147b251 class_import_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x31d58fc1 cl_io_submit_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x31df3170 cl_page_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x324c8aa9 lu_site_init_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x32686a0f local_oid_storage_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x32c1b9d8 cl_page_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x337a188d cl_io_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3432a7f1 lprocfs_add_vars +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x34d998e2 cl_page_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x350f4d5b class_process_proc_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x352af812 obd_export_evict_by_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x35526d19 lprocfs_oh_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x362d3c5a cl_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x366f8381 llog_cat_declare_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x369ce81f lu_context_key_quiesce +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x36bdfe9b cl_io_is_going +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37ed6e4b at_early_margin +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x387ef588 cl_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38fb0c90 class_match_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3905b878 class_unlink_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x390f38bd __llog_ctxt_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x39aefe56 llog_cat_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x39f7ef96 capa_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a005065 dt_otable_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3bdf5bdd lprocfs_free_per_client_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c137000 cl_lock_get_trust +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c145dea llog_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c29bbbc cl_lock_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c3b7b6a cl_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c76763e cl_lock_signal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3e65f0ba cl_page_own_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f0c9414 cl_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3fa727d5 lprocfs_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x40b304df cl_io_sub_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x40e5f950 lprocfs_rd_timeouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x41f6af84 lu_context_key_degister +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x425857dd cl_lock_weigh +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x426cec05 local_oid_storage_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x42d0504f iattr_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x43d69ed9 cl_object_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x43f33acb cl_2queue_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x43fe2363 cl_io_read_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44e41abb lustre_posix_acl_xattr_filter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x45daf7e6 llog_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x474ed5bd lustre_swab_ll_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4760779c lustre_idmap_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47b35f7d statfs_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47bd8ae0 capa_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x484d326f cl_sync_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x48d6c483 cl_sync_io_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x48ee8230 cl_2queue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x493dca71 lprocfs_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x494cfb52 lustre_acl_xattr_merge2ext +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x497cfdc0 obdo_from_inode +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 0x4aa331a6 cl_page_list_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ac58713 obd_connect_flags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4b4baf52 dt_txn_callback_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4b94a7d8 cl_page_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4bbb9f31 obdo_from_iattr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d13458b kuc_len +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e48def2 cl_page_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e8f7b05 cl_lock_state_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f7570cb cl_page_unassume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4fba4346 dt_directory_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4fd049b3 cl_page_list_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50c17627 cl_lock_hold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50c7fc36 ptlrpc_put_connection_superhack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5113b37f cl_req_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x518c78c7 cl_page_find_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5393acc1 cl_io_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x53d8f42b cl_page_vmpage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5428f680 lprocfs_at_hist_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54885f87 ldlm_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x55851b25 cl_page_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x558bec27 obd_ioctl_getdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x56026abb lu_context_key_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x564e9d44 init_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x565e4032 cl_io_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x570d09ae lustre_swab_lu_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x578d0f1f cl_page_list_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x57c8fd24 lprocfs_free_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x57d58a40 obdo_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5861e031 cl_lock_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5956db79 cl_page_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5972b56e obd_export_evict_by_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x59d1a811 llog_cleanup +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 0x5be7fc91 llog_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bf1d2ee lprocfs_rd_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5c468483 cl_page_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d34ae0d cl_lock_mode_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d3f5aa2 lprocfs_stats_collect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5daea7c8 cl_req_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e4e77e5 cl_unuse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ed188a9 lprocfs_add_symlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fc37607 lu_dev_del_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fe97b73 block_debug_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x60b3fb18 llog_declare_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x60eeadc8 llog_osd_put_cat_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6144f7c4 lustre_common_put_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x62d029f4 llog_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631a518d mea_name2idx +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631fd7b9 lustre_ext_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6337b1a3 cl_lock_user_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6362be55 cl_wait_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63d74d50 cl_object_attr_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x64116e1a lu_object_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x647938ce cl_lock_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x64b75721 llog_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x64bdb3ac cl_page_list_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x65d2b993 class_handle_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x671f213f class_config_parse_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6734adbd lprocfs_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67428fce lprocfs_oh_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x677fd7f9 proc_lustre_root +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67977b42 lprocfs_remove_proc_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67a90622 la_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67dc223a lprocfs_remove +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x68107bfc cl_page_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x687fe5ec cl_lock_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6890d175 lustre_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x68aaa4b4 lprocfs_rd_kbytestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69522e66 cl_env_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69c42114 at_min +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69cc0c72 cl_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6bb6d421 lu_buf_realloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6c4ee859 class_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6d34ccbe class_conn2export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6da2d59f lustre_in_group_p +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6e511945 lu_context_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6e6ed090 lustre_process_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6ef7b7ee cl_lock_descr_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f39a8e5 cl_req_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f3e6225 dt_quota_slv_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x71319189 obd_export_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7199841c cl_io_lock_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x71b8ebf4 llog_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x720d2d76 lprocfs_wr_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72ddee4c obdo_le_to_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x738fa681 llog_declare_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x741fd050 class_config_llog_handler +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 0x7598a172 cl_2queue_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x75f7021e llog_process_or_fork +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 0x78065e34 cl_page_clip +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x782c576f cl_req_page_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7852376b cl_io_iter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x789796a1 obd_zombie_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b4fc57b at_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b861afc cl_2queue_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7be78927 cl_object_kill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7c0b6608 cl_env_nested_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7c9f742d cl_offset +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7ceb58af dt_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7e403706 cl_env_unplant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7e57e370 cl_page_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7edcafa0 cl_env_reenter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7ef66ea0 lu_ucred_assert +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f46064f class_fail_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fad7291 raw_name2idx +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fc13803 cl_object_attr_unlock +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 0x80c76bd4 lu_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x810b3430 class_disconnect_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x812cfb71 dt_record_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x816eac98 class_connected_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81742d89 obd_ioctl_popdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8231afe2 lprocfs_init_mps_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x82843987 cl_lock_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8315f877 class_handle_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x831f656c class_process_config +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 0x84f0ac17 lu_object_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8564e39b cl_lock_hold_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85fc556f cl_page_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x87c63762 class_exp2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8965becc llog_init_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x896e032b lu_object_add_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aa2c358 lprocfs_dt_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aa30278 cl_lock_is_mutexed +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 0x8cce7dc2 cl_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f67314c obd_dump_on_eviction +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8fb84d99 cl_enqueue_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90e4df52 lu_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9178905b obd_devs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x91f45b88 cl_lock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x929e13eb cl_object_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92e58479 obd_dump_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x930c1e70 cl_lock_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93143a3b local_file_find_or_create_with_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93b46468 lu_session_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9412dacd dt_store_open +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 0x95ec998a lustre_groups_sort +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9767adce class_uuid2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97a9d814 cl_page_list_splice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97d03783 at_history +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9861c5c5 lu_context_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x996086b7 lprocfs_free_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99aa60a2 cl_page_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1ed9d8 obd_jobid_var +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b451992 local_object_unlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b47b23d dt_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b6b6f4d class_disconnect_stale_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b6c65d3 cl_locks_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b74b166 dt_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9cf5a875 lu_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dbb17b6 lprocfs_dt_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9e3a6519 capa_cpy +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f594a35 cl_page_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9fefa11e llog_open_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa012f629 cl_page_cache_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa0dade38 class_manual_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa145ebe4 cl_queue_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa199c5f5 lu_object_anon +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa1d8dda1 lprocfs_exp_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa209607a lprocfs_counter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa21c5ea1 obdo_from_la +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2844a03 cl_io_loop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa28d30e0 cl_sync_io_note +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2aafefb obdo_from_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2b7c1a9 cl_object_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2d71043 lu_context_key_revive_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa447035c lu_context_enter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa513f7e4 lustre_groups_from_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5fb234f lprocfs_write_frac_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa65c7619 cl_lock_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa674c241 kuc_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa704bf9a lustre_idmap_lookup_uid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa751241d class_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7c39026 lprocfs_rd_conn_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa90fcaae class_exp2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa9621e28 class_num2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa21b7a0 lustre_register_quota_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaafaae3f lu_device_type_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaafe1e97 llog_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab2b5441 lprocfs_init_ops_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab2db9a1 lprocfs_rd_connect_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabc26f9e dt_device_fini +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 0xad201db9 llog_obd_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xad959e1a cl_lock_disclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xadb2f462 lprocfs_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xadca221a cl_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xadfa5d00 lu_context_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xae95ef9e cl_page_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaeb93ec1 llog_declare_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaed4a8c5 lu_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf54e025 cl_lock_modify +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf9a74b0 lu_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xafc3c17a lu_env_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb01963a6 class_uuid_unparse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0535906 class_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb08687ce cl_lock_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0fb9886 cl_lvb2attr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1596a62 llog_cat_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb179cb7b lu_dev_add_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b89b6d class_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb252f3d6 class_detach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb2664453 lprocfs_alloc_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb3dbff9b class_register_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb3ef19fa lprocfs_rd_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb41998cd lustre_cfg_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb43b7b51 cl_page_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4812ce1 cl_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb5dceae3 llog_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb614569e lprocfs_register_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb69988e0 llog_cat_close +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 0xb7f1664e cl_io_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba4e78cf cl_lock_mutex_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba7db2fc lprocfs_rd_server_uuid +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 0xbb1b60c6 cl_lock_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbbb39856 cl_unuse_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc5dfcba cl_lock_mutex_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbcc6a2fe lprocfs_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbcdc3b09 cl_page_list_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbcf33057 cl_env_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbcfdddef cl_io_commit_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbdaf2451 class_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbde49eca cl_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe16d43e lprocfs_alloc_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe56dbd9 cl_page_list_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe74ab22 lprocfs_rd_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbfed5dfe lprocfs_nid_stats_clear_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0609d3a cl_page_list_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0bf7ef2 obd_debug_peer_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc1f73324 lu_ucred_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc22bdd2b llog_osd_get_cat_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc2f22e94 lustre_register_client_fill_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc3bc90c3 lprocfs_rd_numrefs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc3fb180e lu_site_purge +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc480df80 cl_lock_nr_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc4984964 cl_env_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc4c2967e lprocfs_oh_tally_log2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc4ffc5d1 cl_page_list_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc612f802 lprocfs_alloc_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc6eaabbb lu_object_invariant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc6f7a9e7 cl_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc72370c8 lu_context_key_quiesce_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc7eb331d cl_lock_enqueue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc85fb4b0 cl_lock_user_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8ad8c35 dt_try_as_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8d7ed9a cl_env_nested_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8dbaa87 lustre_swab_cfg_marker +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9b3c667 dt_lfsck_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xca1bd9ef cl_req_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xca333153 cl_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xca5faa66 cl_page_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb07c117 lu_env_refill_by_tags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0ab67f obd_max_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcc24506a cl_env_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcc913b64 lustre_idmap_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcca9b33a llog_cat_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcce5887b class_incref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xccf7a8de obdo_cpu_to_le +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 0xcdad42f1 llog_cat_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcdcb8cca lprocfs_nid_stats_clear_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xceb17fe0 llog_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcedb140a obdo_cmp_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcee99051 class_import_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcf504482 obdo_refresh_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd032467a capa_lock +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 0xd1a11089 dump_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1b1478b cl_attr2lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1f58645 lustre_swab_llog_hdr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1f93e18 cl_io_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1feef70 cl_req_page_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd2444976 cl_lock_hold_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd24b19e2 lustre_end_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd2ded3eb lu_object_find_slice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd3b365f7 llog_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd3ecffca lu_object_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd4444a9c cat_cancel_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd44fc28d lu_device_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd4ac024e dt_record_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd539445b lustre_idmap_lookup_gid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd59b38ea cl_req_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd5cdb878 cl_lock_enclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd5e5c37a class_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd68839d5 class_name2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd6d7900b dt_declare_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd6d8f37b lu_kmem_init +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 0xd834617a cl_io_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd8451db3 cl_lock_closure_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd9f60b73 cl_io_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 0xdbe3a214 lu_env_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdc207590 lprocfs_add_simple +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdc70c698 cl_2queue_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc40af0 class_check_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd78c0c7 lu_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde2fc23d lprocfs_obd_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde3e2264 cl_page_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde7d985b obd_dirty_transit_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde81ed1e lu_device_type_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdecbbd56 lu_object_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xded270f1 cl_io_lock_alloc_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe028cf84 capa_encrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe094d0dc dt_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe125ad27 cl_2queue_init_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe1b3d6c3 lu_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe220e9e7 dt_txn_hook_commit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe26c5054 cl_lock_closure_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe28f6b10 lprocfs_rd_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2eb4470 class_get_next_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe3323f5d class_handle_free_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe35b9a9c class_uuid2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe470d139 cl_env_implant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe6bab6cc lprocfs_free_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7596110 llog_exist +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7d83236 cleanup_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8150299 llog_cat_init_and_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8529c41 lu_site_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8e84c32 class_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe92eb8d8 cl_lock_closure_build +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe9799b5a lu_device_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe99535aa lu_object_put_nocache +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xea4b124f cl_page_is_vmlocked +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xea59fa1b lprocfs_obd_rd_max_pages_per_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeaab2580 cl_io_iter_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeb3f388a _debug_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec7d6b85 obd_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xecd9a33b dump_lniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xececc118 lprocfs_wr_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xecfbc3b1 llog_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed19e69d lu_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed5dd2c8 class_conn2obd +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 0xefede392 lprocfs_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeff15368 dt_index_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf01e2527 server_name2index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf079c9dd lprocfs_rd_u64 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf1f41841 lprocfs_clear_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf20c8080 class_export_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf28896e7 cl_object_glimpse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf295b4a0 cl_io_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2fd6695 statfs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf36e4e97 lu_kmem_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3f08504 lustre_idmap_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf441c77a lprocfs_oh_sum +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf44e06da cl_use_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf490d5f9 class_del_profiles +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf55ba958 local_index_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf59c1006 cl_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf60d4659 capa_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7010b4b obd_exports_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7020831 lprocfs_dt_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7ae0db6 cl_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf803c875 class_conn2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8c2df92 obdo_set_parent_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8f91eca cl_page_list_move +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf943bb60 cl_lock_unhold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa451ff6 cl_type_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa46847b dt_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa813d06 capa_hmac +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfaf587ac class_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfb29d88b dt_locate_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfb2e6b3b class_handle_hash_back +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfb89cccc class_new_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbea0098 lu_types_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc6f848c lprocfs_seq_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc7f18d0 obd_pages_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfce4103b lu_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd0b0d52 cl_page_prep +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 0xfe3ee844 class_export_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfe662f44 cl_lock_descr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff017407 md_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff57e92d class_match_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xffb2dab3 cl_io_rw_advance +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfffc1f11 lustre_swab_ost_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/osc/osc 0x5c4940c2 osc_update_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00977ec0 ptlrpc_register_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00d95039 ptlrpcd_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x018ecc1a client_import_find_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01d6ef7f ldlm_pools_recalc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x028a91dc req_capsule_server_sized_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x02a66970 req_capsule_client_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x038a417a ldlm_pool_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x03cd02be ldlm_lock_fail_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x03d96563 ptlrpc_pinger_add_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x048b59d5 lustre_msg_set_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x04e80dbc ldlm_lock_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0515f93b RQF_FLD_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0614cc2d sptlrpc_cli_unwrap_bulk_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06b3942b lustre_swab_lov_user_md_objects +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x070892d5 ptlrpc_fail_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x071b778e sptlrpc_enc_pool_get_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x071fc74a RQF_LDLM_ENQUEUE_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0757a8fc ldlm_lock_change_resource +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 0x093e9d8b ptlrpc_cleanup_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x095587d0 lustre_msg_buflen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x096c40e1 req_capsule_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x09952e04 ldlm_namespace_new +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 0x0afed134 ldlm_pool_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0bcacb5d RMF_MDS_HSM_USER_ITEM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0be7b8cc ldlm_namespace_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0c0d9eba req_capsule_fini +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 0x0d7e32ca ldlm_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0da41f24 ldlm_pool_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0e2af27d ldlm_lock2handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0fd95112 sptlrpc_cli_unwrap_bulk_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x102d98fb ptlrpc_buf_set_swabbed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10e80877 ldlm_pool_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10f18f20 interval_iterate_reverse +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x114d874e sptlrpc_import_sec_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x115017f6 req_layout_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x11deee56 ptl_send_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x12b6f5a3 ptlrpc_connection_fini +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 0x16aef1da ldlm_blocking_ast_nocheck +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x16b46a3b ptlrpc_req_set_repsize +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x172fb86d lustre_msg_hdr_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1747d8b3 ldlm_lockname +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x17950f60 RQF_SEC_CTX +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19108a0f RQF_OST_DISCONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19c08934 RQF_LDLM_INTENT_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1a0170a5 sptlrpc_req_replace_dead_ctx +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 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 0x1da9a4de ptlrpcd_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1dc2051d RMF_SEQ_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1de9c288 lustre_swab_layout_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1e47e128 ptlrpc_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1e8e48a4 sptlrpc_flavor_has_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1e9e4865 sptlrpc_enc_pool_put_pages +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 0x1f7c79ea lustre_pack_reply_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x202a087c ptlrpc_request_alloc +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 0x2114cb19 ldlm_namespace_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x216fb52e ldlm_cli_enqueue_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x218a36ce ldlm_cli_cancel +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 0x24630164 ldlm_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x248cf1c3 sptlrpc_cli_ctx_put +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 0x259ba464 ptlrpc_set_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x25b55e00 ldlm_cli_enqueue +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 0x2aae94ac ptlrpc_nrs_policy_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2b9ac71a ldlm_resource_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2c00c60d ptlrpc_sample_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2c805102 req_capsule_client_sized_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 0x2cee74f1 ldlm_pool_setup +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 0x2da2cef2 ptlrpc_reconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2e3e509f ptlrpc_replay_req +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 0x2ee6a18f ldlm_destroy_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f0e4f87 RQF_OST_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2fa095b6 req_capsule_get_size +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 0x305bf3e2 ptlrpc_service_health_check +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 0x3236c591 ptlrpc_resend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x32459770 sptlrpc_conf_client_adapt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3261b862 RQF_OST_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x328681df req_capsule_client_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33bb7761 ldlm_typename +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33bb97b0 ldlm_prep_elc_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35939a3d lustre_swab_fiemap +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3633f555 sptlrpc_cli_enlarge_reqbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3701308c sptlrpc_import_flush_my_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3753e09c ldlm_namespace_get +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 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 0x3b9d7ad0 ldlm_cancel_resource_local +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 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 0x3dddb3e2 dump_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3e2f5b05 req_capsule_server_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3e56e482 sec2target_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3eaed993 ptlrpc_add_rqs_to_pool +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 0x41008cef RQF_LDLM_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4172adfa ptlrpc_schedule_difficult_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41aef4cf req_capsule_server_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x42896337 ldlm_register_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x42aa7b4d lprocfs_wr_evict_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x42cc063d ldlm_namespace_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4321bde0 ptlrpc_request_alloc_pack +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 0x442778e9 ldlm_pool_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4481591d RQF_OST_SET_INFO_LAST_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x44ff0350 req_capsule_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x452403af llog_origin_handle_prev_block +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 0x46365918 llog_origin_handle_read_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x476c38bd ptlrpc_restart_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47dc917f ldlm_reprocess_all_ns +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47f5e903 RMF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4858b25b sptlrpc_svc_ctx_invalidate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x48814c9f lustre_swab_ost_lvb_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x498c03c5 lustre_msg_set_last_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x49c04115 ptlrpc_abort_inflight +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a5a2416 RMF_DLM_REQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4b09ce4b lustre_swab_mdt_rec_reint +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4c0b3f2c ptlrpcd_add_rqset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4c99006f ptlrpc_prep_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d172a35 sptlrpc_cli_ctx_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d7580d0 lustre_swab_hsm_user_item +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4dcdca8c ptlrpc_request_alloc_pool +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 0x4ebc93b5 ldlm_prep_enqueue_req +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 0x50764a55 ptlrpc_error +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 0x53f79ac1 llog_client_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x545bd67b ldlm_glimpse_ast +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 0x564487b1 ldlm_lock_allow_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x569d2f14 ptlrpc_deactivate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x57c9a12b ptlrpc_cleanup_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x587eb03d ptlrpc_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x588035b4 RMF_UPDATE_REPLY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x58e72e36 lustre_pack_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 0x59ca398b ptlrpc_add_timeout_client +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 0x5b3e50bc ptlrpc_init_rq_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b6ba895 lustre_packed_msg_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c2ec617 ldlm_resource_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c6a3a83 RQF_SEQ_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5caae213 ptlrpc_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5d1b626d ldlm_lock_fail_match_locked +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 0x5f58d68c ptlrpc_recover_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5f96ccdd ptlrpc_connection_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5fd45c1b ptlrpc_request_addref +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 0x60b903d5 ptlrpc_prep_req +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 0x619a99d6 ldlm_cli_update_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x62192cf8 dump_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x626cbde5 ptlrpc_lprocfs_brw +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 0x642963d5 ptlrpc_prep_bulk_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x647b6e48 lustre_swab_ldlm_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x652052d2 ptlrpc_free_rq_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x653723dc RMF_LOGCOOKIES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x66eca49e ldlm_pool_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x67f86c7b ldlm_cli_cancel_unused +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 0x68fcfed0 sptlrpc_sec_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6912990a RQF_OST_QUOTACHECK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6934e702 ldlm_replay_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x694c68d6 ldlm_extent_shift_kms +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 0x6c053f67 ldlm_cli_cancel_unused_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c83e797 req_capsule_set +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 0x6e901772 sptlrpc_gc_del_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6ed20499 ldlm_revalidate_lock_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6ed7d54b ptlrpc_req_finished_with_imp_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6ee69682 lprocfs_rd_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6ef299ad client_import_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6efa82b0 RQF_MGS_TARGET_REG +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6f0c5a6e _debug_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6f3836cb ptlrpc_nrs_policy_unregister +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 0x724bfa99 req_capsule_server_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x725a892c RQF_MDS_REINT_OPEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x73a6b67d ptlrpc_commit_replies +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7416fae2 lprocfs_wr_pinger_recov +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 0x7697eb5b ldlm_pool_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x76b728e5 lustre_swab_update_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7718303b ptlrpc_unregister_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77571cc6 lustre_swab_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77840c82 sptlrpc_rule_set_choose +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78651ad7 client_disconnect_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78bf9136 lustre_swab_ldlm_lock_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x792726f8 ptlrpc_request_bufs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x79e3dcc0 ldlm_resource_unlink_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a2b9490 ldlm_pool_get_lvf +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 0x7c9ae719 do_set_info_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7cda4e8b ptlrpc_register_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d1ecd7f RQF_LDLM_INTENT_LAYOUT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d242204 ptlrpc_set_next_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d41a8b9 RQF_QUOTA_DQACQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7da39bf2 req_capsule_other_get +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 0x7e4abfc2 __ldlm_handle2lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f364195 sptlrpc_cli_ctx_wakeup +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 0x80193a3c ptlrpc_request_set_replen +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 0x821f70fb target_print_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x826d3c4f RQF_LDLM_GL_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x82ab8d4b sptlrpc_unregister_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x837efb00 RMF_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x84081895 ldlm_get_enq_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8492f46d _ldlm_lock_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x84d1bf3e ptlrpc_prep_req_pool +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 0x87bf7b3c sptlrpc_get_next_secid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x886deb2b ldlm_cli_cancel_list +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 0x89c9f3ec ptlrpc_set_add_req +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 0x8a61e407 sptlrpc_target_export_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ab967f1 sptlrpc_register_policy +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 0x8b8be2b6 ptlrpc_request_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8c180040 req_capsule_server_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8c96722f ptlrpc_connect_import +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 0x8e15bcfd req_capsule_init_area +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e9abe4d RMF_GENERIC_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ec57a07 ptlrpc_unregister_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8f0aceac RQF_MDS_HSM_ACTION +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8f2fe17e ldlm_pool_set_limit +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 0x92ba555e ptlrpc_req_finished +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9303e8c2 ptlrpc_lprocfs_register_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x937b1ee0 lustre_swab_mdt_ioepoch +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x942765d5 sptlrpc_sec_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x94316a2e ptlrpc_buf_need_swab +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9473c4fa ldlm_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9475d2d5 ptlrpc_wake_delayed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x94cefe8d ldlm_init_export +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 0x961a9c03 ldlm_blocking_ast +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 0x96b6b470 sptlrpc_target_sec_part +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9798f2f1 RQF_MDS_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x97db80bf ptlrpc_request_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x980fcfdc ptlrpc_connection_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x987a669d req_capsule_filled_sizes +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 0x9cc86f7a ptlrpc_req_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9cf7798e sptlrpc_get_bulk_checksum +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d41c266 lustre_pack_reply_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d7ea314 sptlrpc_pack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9db99c2a ptlrpc_retain_replayable_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9fb088f1 lustre_swab_lov_mds_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9fed9919 req_capsule_server_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa0e2ee8a ptlrpc_invalidate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa0fc0edb ldlm_destroy_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa10f0d3d RMF_UPDATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa12b7149 lprocfs_wr_ping +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 0xa2ddb250 req_capsule_server_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3d2a6ee RMF_CAPA1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa47787ef RMF_PTLRPC_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4a2d089 RQF_OST_PUNCH +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4bea5ef lustre_swab_lmv_user_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5458dad ldlm_lock_decref_and_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5880075 ldlm_errno2error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa6c436ca RQF_MDS_WRITEPAGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa700a230 req_capsule_field_present +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa72fdb31 ptlrpc_set_add_cb +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 0xa8b6230b ptlrpc_save_lock +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 0xa9e9605c ldlm_resource_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9edf09d RQF_OBD_IDX_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xab0372cb llog_origin_handle_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xab08a361 llog_origin_handle_next_block +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaddc3979 lustre_swab_lustre_capa_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf0f46dd ptlrpc_set_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf32bb16 req_capsule_has_field +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 0xaf9b6c70 llog_origin_handle_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xafb5be83 ptlrpc_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0751fa4 RQF_LLOG_ORIGIN_HANDLE_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0aebcbe ldlm_flock_completion_ast +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 0xb2b1817d lustre_swab_ost_lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb3261920 target_pack_pool_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb4a7ecf3 lustre_msg_add_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb4f252bf lprocfs_wr_import +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 0xb62e38e5 sptlrpc_conf_target_get_rules +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 0xb77ed313 sptlrpc_lprocfs_cliobd_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7b38189 RMF_MDT_MD +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7eb05bb llog_origin_handle_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7fa3cc8 RMF_LLOG_LOG_HDR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb83eea89 req_capsule_set_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb903634e RQF_OST_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9a92136 ldlm_cli_cancel_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9b631cf lustre_swab_mgs_config_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9bb918c ldlm_lock_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xba9145e8 sptlrpc_cli_wrap_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbaa76097 lustre_msg_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbb024f58 client_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbb57bee6 ldlm_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbbd373d3 ldlm_resource_iterate +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 0xbd86defc lock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbe0b8044 ptlrpc_at_set_req_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbe47bc7e ping_evictor_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbf4ff84a ldlm_lock_downgrade +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 0xc0f4da87 ldlm_lock_allow_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0f67a83 sptlrpc_gc_add_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc1168db1 ptlrpc_unregister_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc14091f9 ptlrpcd_wake +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2594542 ldlm_pool_get_clv +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 0xc2e3b816 ldlm_enqueue_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc35dadad ptlrpc_pinger_del_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc3cd29a2 lustre_free_reply_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc559a634 RMF_LAYOUT_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc593388e ptlrpc_prep_fcset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc5c806bd unlock_res_and_lock +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 0xc7b371c8 ptlrpc_obd_ping +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 0xc91ecc11 ptlrpc_set_import_active +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc9fd9337 req_capsule_extend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xca5a81ec ptlrpc_pinger_ir_down +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb19364d llog_initiator_connect +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 0xcbaf4af4 ptlrpc_stop_all_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcd368b67 sptlrpc_import_flush_all_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce1a689b sptlrpc_enc_pool_add_user +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce23d542 __ptlrpc_prep_bulk_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce5dd2b8 ldlm_lock2desc +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 0xd007f8ca sptlrpc_target_update_exp_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd227c685 ptlrpcd_alloc_work +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 0xd3eda364 sptlrpc_gc_add_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd537ded2 lustre_swab_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd58a8dde ptlrpc_lprocfs_unregister_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd58c1807 ptlrpc_disconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd67a5d7b lustre_swab_update_reply_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd69e0a27 RQF_MDS_IS_SUBDIR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd6c3ebfb RMF_FIEMAP_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd7910326 lustre_swab_obd_statfs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8b91b3e lustre_swab_lov_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8ede296 req_capsule_client_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8f06300 RQF_MDS_HSM_PROGRESS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd92f82af ptlrpc_activate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd9561861 RQF_LDLM_INTENT_OPEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd9d7758e ptlrpc_init_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xda2ac111 sptlrpc_proc_root +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdaa63fab ptlrpc_send_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb1284f9 ldlm_namespace_put +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 0xdcf910b9 lustre_swab_ost_last_id +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 0xdd4b2750 sptlrpc_cli_ctx_expire +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd5bbc0e ldlm_completion_ast_async +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 0xde73301d lustre_pack_request +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 0xe0dbf10a ptlrpc_unpack_req_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe144c229 client_obd_setup +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 0xe643998e RQF_OST_SETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe65b4d24 ptlrpc_set_add_new_req +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 0xe753385f ptlrpc_start_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe88d40c0 ptlrpc_mark_interrupted +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xea75db98 ptlrpc_queue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeabaa0b1 lustre_swab_mdt_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeabac4fc sptlrpc_rule_set_merge +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeafd2aa8 ldlm_pool_set_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeba464fa ldlm_pool_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xebb64e68 req_layout_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xebfac49a sptlrpc_sec_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec226f66 ping_evictor_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec8c2521 llog_origin_handle_close +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 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 0xf1258d84 client_import_del_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf1300275 _sptlrpc_enlarge_msg_inplace +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf277c125 RQF_OST_GET_INFO_FIEMAP +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf27d49dc sptlrpc_target_choose_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf35f132b lustre_swab_ldlm_resource_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf3d44370 RQF_OST_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf43540b9 lustre_swab_mgs_nidtbl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf45085e1 sptlrpc_conf_log_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf47a893f ptlrpc_pinger_sending_on_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf55c033b RMF_MGS_CONFIG_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf584a16b sptlrpc_part2name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf596e9ae sptlrpc_conf_log_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf5a4ac82 client_connect_import +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 0xf6846adb ptlrpc_hpreq_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf697b756 ldlm_dump_all_namespaces +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf6c0874f ptlrpc_unpack_rep_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf6ea73f8 ldlm_cli_enqueue_fini +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 0xfa380bdd ldlm_init_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfa51688d interval_insert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfb99cee8 client_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfbc4ee33 target_send_reply +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 0xfd2f6309 ldlm_namespace_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfd37a4ac __ptlrpc_free_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfed34a05 ptlrpc_resend_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff02a0e9 ldlm_lock_set_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffc807e8 sptlrpc_unpack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffe29c3f RQF_LDLM_ENQUEUE +EXPORT_SYMBOL drivers/staging/media/cxd2099/cxd2099 0xc3a4a532 cxd2099_attach +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x1ef582a0 go7007_parse_video_stream +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x2ff03840 go7007_read_addr +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x72406ae5 go7007_update_board +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x8a992466 go7007_boot_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x8dcfd17e go7007_snd_init +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x920c1759 go7007_register_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x9731b3b5 go7007_snd_remove +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xb64c234e go7007_alloc +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xe78e709b go7007_read_interrupt +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x03099723 free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x07a8cf39 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x07e55059 rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0d70a324 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x249e5c5f rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x460f0cc4 rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x488a44bb rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4b01efd0 rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4ba1d2b4 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x52841152 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5744150d rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x586fbeb7 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5aeacb7d rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5de85d0a rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5e85e147 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x662080c6 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x668bd26a rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x68559b93 rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6c6f7fe4 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6f326138 rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x73fa0259 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x74e1b966 rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x79b2cbfd rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8119397a rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8201292a rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8217af0b rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8542963a rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9a07322c rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa3e69cf3 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xaa006c2b rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xacdb2567 rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xad1bd6f8 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb3297914 Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb50921d6 rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbacacea2 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbb998b65 rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbedcacd9 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbfd14dcb rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc0190d1b rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc9730600 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc9eeb02a rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd437a194 rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd4816e29 rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe661d7d4 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe7a996a0 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe902ab9c rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf2f91929 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf9a0013f rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf9e9ee2d rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfb06fc07 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x02c2489f ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x06baa3ca ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0939ecce DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x09e93ba0 ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0b9162fe ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0fe88286 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x141780b5 ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x167c4f26 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1d12d018 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2226e935 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2782da9f ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x31190507 ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x31a209a2 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3429da89 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x37a3b084 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3b8ec6a0 DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3cbb989d ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3f44f308 ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4ece1f01 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4f0ad4a2 ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x51fd9798 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5b378f0d ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5f23a2db IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5ff12659 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x607e2f83 ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x671fc12b ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6c32c8b5 ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x72410f42 ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x73a1c692 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x82325a89 ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x893c0b49 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8a76f165 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8c85a18f ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8dfaa21d ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x92f0612a ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9cc59b45 ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9dcadcbc ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9f6cf231 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa30032af SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xab9005ce ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc96cc34a Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd1937cb2 HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd47e5629 ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd4b1278e ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd502d79d ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd5501afd ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xde1c1b36 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe35ca0e8 Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe5e96666 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe6a9e8aa ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf51a4713 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf6d01897 ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf9a6cf46 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfa33d714 ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfb4fc64c ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xff4d286d ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x0017f35f set_bp_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x00ea0cde set_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x06d6f244 get_bp_dis_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x09df8f3e set_tap_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x0a8d32c3 get_bypass_slave_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x1936264c set_dis_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x1d2eb8ca get_tap_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x203af1f7 reset_bypass_wd_timer_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2070f14a set_bypass_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x27b990ef get_bypass_info_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2ba7cd35 get_wd_autoreset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2c3f1c17 get_tx_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2f59e636 get_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2fdb893a get_tap_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x361cf40a get_dis_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x45ca99c3 set_wd_autoreset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x550a188c set_bypass_wd_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x5cb59e92 get_bypass_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x66b60122 set_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x675208c0 set_tx_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x692623f2 get_std_nic_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x75131ec6 set_bypass_pwoff_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x76c0b7d0 set_tpl_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x7e872825 get_wd_exp_mode_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x7e8d701e get_wd_expire_time_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x86388b07 get_bp_disc_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x93ae4648 get_wd_set_caps_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x95e42b0d is_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x9df5f807 set_dis_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x9e21f42e set_std_nic_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xa689a214 get_bypass_wd_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xae117788 get_bp_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xc368d30d get_dis_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xccab5de0 get_bypass_caps_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd3e034b3 get_bypass_pwoff_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd9c1ccfc get_bp_disc_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd9d38d97 set_wd_exp_mode_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xe640f06e set_bp_disc_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xecdaa456 set_bp_hw_reset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xedcd3c1b get_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf06d67bf set_bp_dis_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf57c1671 get_bp_hw_reset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf693c3a1 bp_if_scan_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf8237882 get_bypass_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xfa59240d get_tpl_sd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x05af3c4c set_wd_exp_mode +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x05b08a42 set_bp_hw_reset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x0b0d5ce0 get_tap_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x0fc2e83c reset_bypass_wd_timer +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x123a8133 get_tx +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x157ec89c get_bp_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2440f05a get_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2b01d1d4 set_bp_dis_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2c27a2f0 set_dis_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2da97f4b is_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2e86c67b get_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x37416370 get_bp_hw_reset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x37bdab27 get_wd_autoreset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x3da96a18 get_bypass_caps +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4025805e get_bypass_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4940a0cc get_bypass_info +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4d21ff51 get_bypass_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5147360c get_bp_disc_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x515d4df1 get_bypass_slave +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5560267e set_wd_autoreset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5be44d44 set_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x6653590c get_wd_exp_mode +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x6bda14ec get_bp_dis_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x72c618ae set_bypass_wd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x76d47e6f set_bp_disc_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x794e3815 set_tap_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x7c6cbc16 get_tpl +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x84a263dc set_tx +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x8a16f22c set_tpl +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x946ff795 get_wd_set_caps +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x94f6aff2 get_bypass_wd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x9d1ecf73 set_bypass_pwoff +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xb1385629 set_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xbff68c45 set_bypass_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xc871c561 get_dis_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xcee528df set_std_nic +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xd202dd85 get_bypass_pwoff +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xd787f151 get_wd_expire_time +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xdb6a39d2 get_dis_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xebd25ae5 get_std_nic +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf1e9f8c1 set_bp_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf224abd9 get_tap_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf5a591b2 set_dis_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf643fd4c get_bp_disc_pwup +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x3cecb2f8 xillybus_do_cleanup +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x67927885 xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x7212e3cd xillybus_endpoint_remove +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0xf8a6833f xillybus_init_endpoint +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x07fc0c7f iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2694b27d iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x414950e4 iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5120707d iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x53c8a5d2 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x57697d3e iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5adb9914 iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6f9bcab8 iscsit_handle_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7197a971 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7a05ae93 iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7b2d0f12 iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8506fcea iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x86854a7f iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x977fbb86 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9c4c2580 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9e9b92c3 iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa5d103e2 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb64b9e87 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbc027871 iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xce152006 iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xcee382ff iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd09037ad iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd966ed4f iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd9baf5ae iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xdf0c2ec6 iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe56b0bce iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf1fc8604 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf60fe7fd iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/target_core_mod 0x021fad8e target_fabric_configfs_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x023a0054 sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x028d654c spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x079fe9e2 target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x09e2370e transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x0d04be30 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x0ec7e536 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x11ea5aa8 iscsi_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x12d464ff fc_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x160774a3 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x17103a3c core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0x1adb1655 fc_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x1ccc2c7b transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x23541589 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x27548c83 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x2ba707a8 target_fabric_configfs_free +EXPORT_SYMBOL drivers/target/target_core_mod 0x2bcd7ea6 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x2f2b8381 sbc_execute_unmap +EXPORT_SYMBOL drivers/target/target_core_mod 0x3300048e transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x36c4c2b6 core_tpg_clear_object_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x3d5ba16c spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x4d9741bd target_configure_unmap_from_queue +EXPORT_SYMBOL drivers/target/target_core_mod 0x4e83ecf0 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x4f8bcd7a target_to_linux_sector +EXPORT_SYMBOL drivers/target/target_core_mod 0x513443ce transport_subsystem_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x54cbbc58 spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0x57950808 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x5d3207fe iscsi_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x653a8406 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x65e9bfe0 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x66e7a110 transport_subsystem_release +EXPORT_SYMBOL drivers/target/target_core_mod 0x73365ce7 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x73d4aeee target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x78336e9d transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x786afad9 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x7b93b623 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x7c9b18b1 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x7d4c13e8 spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x8062164d target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x863cdb32 core_tpg_add_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x894970d8 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x8980bdc0 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x8ede79b1 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x904029c7 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x90f7a8ec iscsi_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x93f5471d sas_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x96ac87a4 sas_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x98514410 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xa07ae2d9 target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0xa0d2bed1 sas_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xa1f1ab4d core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0xa6eb97fd transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xa7e7c93d __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xb8151fc5 fc_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0xbb128ba7 target_fabric_configfs_init +EXPORT_SYMBOL drivers/target/target_core_mod 0xc09865c0 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0xc1c5893a iscsi_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xc5f9e11f transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xc675a946 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xcb5443a8 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0xcc4169ed transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xd00599b9 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xd5e6f0b2 core_tpg_del_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xd73b9df8 sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0xd934bd5f transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xe64e4dbf target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xe8e1deec target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xe8f8299a transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf054bfe9 sas_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0xf1c243d0 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xf1e4be46 fc_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf2810d58 transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xff7580f2 target_fabric_configfs_register +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0xcbe2a16c usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0x7b4d07d3 unregister_gadget_item +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x052e19a5 gether_set_qmult +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x0a37b34a gether_set_gadget +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x172c7ebf gether_disconnect +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x1a21fc55 gether_get_host_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x1f5ed38b gether_get_ifname +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x3a887884 gether_set_dev_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x47ffd33f gether_get_qmult +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x5df0c131 gether_get_host_addr_cdc +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x70e24523 gether_connect +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x7b4408d2 gether_get_dev_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x85a81ce0 gether_register_netdev +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x9a3c8d2f gether_set_host_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xd74973f6 gether_setup_name +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xe6920c4d gether_get_host_addr_u8 +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xec481be6 gether_setup_name_default +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x3a6d4f22 rndis_free_response +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x3ca38e3a rndis_signal_connect +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x4ca90996 rndis_signal_disconnect +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x5d22b406 rndis_register +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x5dabd9c3 rndis_set_param_dev +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x785d494b rndis_msg_parser +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x840dd143 rndis_deregister +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x988ad2a2 rndis_set_param_vendor +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x9acf72e4 rndis_set_param_medium +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xa90054ee rndis_uninit +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xb971ebca rndis_get_next_response +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xd2fe47b1 rndis_set_host_mac +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xd738cec0 rndis_rm_hdr +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xf3670c7f rndis_add_hdr +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x0e1ad7d5 fsg_store_nofua +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x170be7c4 fsg_lun_close +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x1710b539 fsg_fs_bulk_out_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x1b1cc3af store_cdrom_address +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x2933ee1d fsg_ss_bulk_in_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x33d26c4d fsg_lun_open +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x398778e1 fsg_ss_function +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x423845e4 fsg_ss_bulk_in_comp_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x4a4b19ca fsg_show_file +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x56344daf fsg_hs_bulk_out_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x5cf3d6f8 fsg_show_ro +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x6a3afa1c fsg_store_ro +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x73b2dbfa fsg_show_cdrom +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x7e6b1143 fsg_store_removable +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x838d1b61 fsg_store_file +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x857b6dc2 fsg_hs_function +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x95cffb3e fsg_hs_bulk_in_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x965776bb fsg_store_cdrom +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xa5cae92f fsg_ss_bulk_out_comp_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xa5f99b69 fsg_fs_function +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xb52ba28a fsg_intf_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xb54d0d95 fsg_fs_bulk_in_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xc861d40b fsg_show_nofua +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xd4a79946 fsg_show_removable +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xf0bac811 fsg_lun_fsync_sub +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xf4efc0c8 fsg_ss_bulk_out_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_rndis 0x29321356 rndis_borrow_net +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0xe8c1da20 sl811h_driver +EXPORT_SYMBOL drivers/usb/phy/phy-generic 0xa64a4cea usb_nop_xceiv_unregister +EXPORT_SYMBOL drivers/usb/phy/phy-generic 0xd0e43207 usb_nop_xceiv_register +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x10a9e290 usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x1b6d9715 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x53a5ab3c usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x620483f5 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x68be9edf usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x89e683c4 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x96d34d86 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xacece763 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xae847836 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xc1f7e5aa usb_wwan_set_termios +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xdbbfcf8e usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xea786c5e usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xeb71df40 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x0ae7f8ca usb_serial_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xdf2e4062 usb_serial_resume +EXPORT_SYMBOL drivers/vhost/vringh 0x0dda8c5a vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x1f063017 vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x2e91ca97 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x367ce26a vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x36dfce73 vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3eaf442a vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x3fa42e4f vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x5dafbd4e vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x66af098b vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x6d0e7948 vringh_abandon_user +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 0xaf8e4a0e vringh_notify_disable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xafb47dae vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0xc884d704 vringh_notify_disable_user +EXPORT_SYMBOL drivers/vhost/vringh 0xc8bee0a4 vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xd11d2709 vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xda4ea4cc vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0xfc7dcad2 vringh_getdesc_user +EXPORT_SYMBOL drivers/video/backlight/generic_bl 0x366d19ef genericbl_limit_intensity +EXPORT_SYMBOL drivers/video/backlight/lcd 0x19513b76 devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x47d7c305 devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x73de1128 lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xbebe6814 lcd_device_unregister +EXPORT_SYMBOL drivers/video/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/cyber2000fb 0x534b6f18 cyber2000fb_disable_extregs +EXPORT_SYMBOL drivers/video/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/cyber2000fb 0xe31eb7fe cyber2000fb_attach +EXPORT_SYMBOL drivers/video/macmodes 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL drivers/video/macmodes 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL drivers/video/macmodes 0xeb1abc49 mac_find_mode +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x1ea8cf75 matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x607e3460 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x93797c56 g450_mnp2f +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x2ea60089 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x37beddd1 DAC1064_global_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xb93d65f0 matrox_mystique +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xd5d7a939 matrox_G100 +EXPORT_SYMBOL drivers/video/matrox/matroxfb_Ti3026 0x7ab8e316 matrox_millennium +EXPORT_SYMBOL drivers/video/matrox/matroxfb_accel 0x9b314acd matrox_cfbX_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x336fd12e matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0xa09d128a matroxfb_register_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0xcc36702b matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0xff59b0a8 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0x56c96107 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0xb9ec6b70 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x3cca10e0 matroxfb_read_pins +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x5d900c27 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x7fefa85e matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x853b6271 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xe0b6c826 matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/mb862xx/mb862xxfb 0xf9cf5f22 mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/output 0x3c4683e4 video_output_unregister +EXPORT_SYMBOL drivers/video/output 0xa70ec602 video_output_register +EXPORT_SYMBOL drivers/video/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/svgalib 0x24c470d2 svga_tilecursor +EXPORT_SYMBOL drivers/video/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/svgalib 0x4dc750cd svga_get_tilemax +EXPORT_SYMBOL drivers/video/svgalib 0x5cdc6151 svga_tilefill +EXPORT_SYMBOL drivers/video/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/svgalib 0x89ca84e1 svga_tilecopy +EXPORT_SYMBOL drivers/video/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/svgalib 0xb840dbe7 svga_get_caps +EXPORT_SYMBOL drivers/video/svgalib 0xcbf7f1d3 svga_settile +EXPORT_SYMBOL drivers/video/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/svgalib 0xd4cbb041 svga_tileblit +EXPORT_SYMBOL drivers/video/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/syscopyarea 0x4edb3517 sys_copyarea +EXPORT_SYMBOL drivers/video/sysfillrect 0xd1fa77e7 sys_fillrect +EXPORT_SYMBOL drivers/video/sysimgblt 0x39bb276d sys_imageblit +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/vme/vme 0x00d7e722 vme_lm_count +EXPORT_SYMBOL drivers/vme/vme 0x025f7d67 vme_irq_request +EXPORT_SYMBOL drivers/vme/vme 0x072f901c vme_master_rmw +EXPORT_SYMBOL drivers/vme/vme 0x0ec5babe vme_dma_free +EXPORT_SYMBOL drivers/vme/vme 0x1c500a60 vme_slave_request +EXPORT_SYMBOL drivers/vme/vme 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL drivers/vme/vme 0x22ae2145 vme_dma_request +EXPORT_SYMBOL drivers/vme/vme 0x2c3cee0a vme_dma_list_free +EXPORT_SYMBOL drivers/vme/vme 0x358cd566 vme_unregister_bridge +EXPORT_SYMBOL drivers/vme/vme 0x3e95083c vme_slave_get +EXPORT_SYMBOL drivers/vme/vme 0x41862ad4 vme_alloc_consistent +EXPORT_SYMBOL drivers/vme/vme 0x46649cd1 vme_lm_set +EXPORT_SYMBOL drivers/vme/vme 0x48b99a13 vme_lm_free +EXPORT_SYMBOL drivers/vme/vme 0x4baf35a7 vme_master_get +EXPORT_SYMBOL drivers/vme/vme 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL drivers/vme/vme 0x5aff4177 vme_lm_get +EXPORT_SYMBOL drivers/vme/vme 0x5b692a7f vme_slot_get +EXPORT_SYMBOL drivers/vme/vme 0x5dbdf865 vme_register_driver +EXPORT_SYMBOL drivers/vme/vme 0x77883e2d vme_lm_request +EXPORT_SYMBOL drivers/vme/vme 0x7cf35220 vme_master_free +EXPORT_SYMBOL drivers/vme/vme 0x7f1440ac vme_unregister_driver +EXPORT_SYMBOL drivers/vme/vme 0x7fde2edb vme_master_read +EXPORT_SYMBOL drivers/vme/vme 0x8c8732b9 vme_irq_free +EXPORT_SYMBOL drivers/vme/vme 0x8d88de3b vme_dma_list_exec +EXPORT_SYMBOL drivers/vme/vme 0x90695906 vme_free_consistent +EXPORT_SYMBOL drivers/vme/vme 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL drivers/vme/vme 0x9a6aa650 vme_dma_list_add +EXPORT_SYMBOL drivers/vme/vme 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL drivers/vme/vme 0xa31bdf07 vme_master_set +EXPORT_SYMBOL drivers/vme/vme 0xb1c9bc70 vme_register_bridge +EXPORT_SYMBOL drivers/vme/vme 0xb22a9032 vme_master_request +EXPORT_SYMBOL drivers/vme/vme 0xd797b9a5 vme_master_write +EXPORT_SYMBOL drivers/vme/vme 0xdde10d85 vme_irq_handler +EXPORT_SYMBOL drivers/vme/vme 0xdff905e5 vme_slave_free +EXPORT_SYMBOL drivers/vme/vme 0xe0d1edbf vme_irq_generate +EXPORT_SYMBOL drivers/vme/vme 0xe693a6ce vme_get_size +EXPORT_SYMBOL drivers/vme/vme 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL drivers/vme/vme 0xf4e3ca6b vme_bus_type +EXPORT_SYMBOL drivers/vme/vme 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL drivers/vme/vme 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL drivers/vme/vme 0xfdcd0100 vme_new_dma_list +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x0e3e12c3 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x2c11afbd w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xaa0cea1f w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xdf33d956 w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x0ec97810 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x55ef1a2b w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x6eccd76b w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xa30d6bf8 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/wire 0x5dc79d25 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0x834fcf81 w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0xad8de92c w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0xd37722e3 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/btrfs/btrfs 0x27476846 ulist_reinit +EXPORT_SYMBOL fs/btrfs/btrfs 0x41e6a9d2 ulist_init +EXPORT_SYMBOL fs/btrfs/btrfs 0x7e2ee765 ulist_free +EXPORT_SYMBOL fs/btrfs/btrfs 0xa2eec2e8 ulist_fini +EXPORT_SYMBOL fs/btrfs/btrfs 0xb1320bc8 ulist_add +EXPORT_SYMBOL fs/btrfs/btrfs 0xb42289d2 ulist_alloc +EXPORT_SYMBOL fs/btrfs/btrfs 0xc2c745db ulist_next +EXPORT_SYMBOL fs/configfs/configfs 0x16347ad5 config_item_init +EXPORT_SYMBOL fs/configfs/configfs 0x26078fef config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x3c0c9875 config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0x54d27089 config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0x68c9744d config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0x7893f263 config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x7ac93aff configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x89dbbbae configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0xb81fc9eb configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0xe08e6e14 configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xfa4f6701 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xfa50cd70 config_group_find_item +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x4bd68f05 ore_remove +EXPORT_SYMBOL fs/exofs/libore 0x5960ee89 ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0x5fbf819a ore_create +EXPORT_SYMBOL fs/exofs/libore 0x6346cfec ore_write +EXPORT_SYMBOL fs/exofs/libore 0x6855e212 ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0x6c443dcd ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xa4bc0056 extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0xb34d9cda ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0xde0e15a5 ore_read +EXPORT_SYMBOL fs/exofs/libore 0xf3d39f3b ore_put_io_state +EXPORT_SYMBOL fs/fscache/fscache 0x06789675 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x06badc9d fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x072287ac __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x17b66af5 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x243748c7 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x2ea14e05 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x31a8b412 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x32e8bea5 fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0x3eb47a22 fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x46bb9e93 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x4e10b7d9 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x4f67ae6c __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x56a367ac __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x5c4ce15e __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x6270a85d __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x65047661 __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x75323ad3 __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x79bb4340 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x7f0815da fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0x96bf635e __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x9b2b2a0e fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0xa333469a __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xa523026c fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0xa905f2fa __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0xaffe181b fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0xb1276c67 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0xb1d4aaf1 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0xb1f24900 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0xbbb3b361 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0xc18093c4 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xd3da2839 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xd7f4fb2b fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0xdfd506fc fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0xe96976f1 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xf81fd01d fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0xfe15dbdb __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0xff55a7fa __fscache_disable_cookie +EXPORT_SYMBOL fs/nfsd/nfsd 0x35e33c1e nfs4_acl_write_who +EXPORT_SYMBOL fs/nfsd/nfsd 0x5a157ae4 nfs4_acl_get_whotype +EXPORT_SYMBOL fs/nfsd/nfsd 0xa0f4b528 nfs4_acl_posix_to_nfsv4 +EXPORT_SYMBOL fs/nfsd/nfsd 0xb25b2957 nfs4_acl_nfsv4_to_posix +EXPORT_SYMBOL fs/nfsd/nfsd 0xe13337f0 nfs4_acl_new +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x17b5acf1 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x3582e6a3 qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0x79f8c515 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xc14bfc1e qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xcbd1c097 qtree_release_dquot +EXPORT_SYMBOL lib/cordic 0x434bfd07 cordic_calc_iq +EXPORT_SYMBOL lib/crc-ccitt 0x3771b461 crc_ccitt +EXPORT_SYMBOL lib/crc-ccitt 0x75811312 crc_ccitt_table +EXPORT_SYMBOL lib/crc-itu-t 0xd29b009f crc_itu_t_table +EXPORT_SYMBOL lib/crc-itu-t 0xf5b4a948 crc_itu_t +EXPORT_SYMBOL lib/crc7 0xa7587646 crc7 +EXPORT_SYMBOL lib/crc7 0xd80c3603 crc7_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 0x1097f090 lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0x1611f01c lc_get_cumulative +EXPORT_SYMBOL lib/lru_cache 0x1ae95c1a lc_get +EXPORT_SYMBOL lib/lru_cache 0x22bdae4d lc_committed +EXPORT_SYMBOL lib/lru_cache 0x2324a210 lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x245f4bed lc_is_used +EXPORT_SYMBOL lib/lru_cache 0x72f8100b lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0x741d6b5d lc_try_get +EXPORT_SYMBOL lib/lru_cache 0x94933238 lc_put +EXPORT_SYMBOL lib/lru_cache 0x9c797a6a lc_destroy +EXPORT_SYMBOL lib/lru_cache 0xa35c2d4d lc_create +EXPORT_SYMBOL lib/lru_cache 0xa8226c6b lc_set +EXPORT_SYMBOL lib/lru_cache 0xc011064b lc_reset +EXPORT_SYMBOL lib/lru_cache 0xcee796cb lc_find +EXPORT_SYMBOL lib/lru_cache 0xd0afa00c lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0xd37ef4a2 lc_del +EXPORT_SYMBOL lib/lru_cache 0xfabb5c85 lc_element_by_index +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/802/p8022 0xaf19d244 unregister_8022_client +EXPORT_SYMBOL net/802/p8022 0xf2e3f18a register_8022_client +EXPORT_SYMBOL net/802/p8023 0x452e5fe3 destroy_8023_client +EXPORT_SYMBOL net/802/p8023 0x7d3e7182 make_8023_client +EXPORT_SYMBOL net/802/psnap 0x0b0c44bd unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0x60a89f87 register_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x0d870361 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x0e969a5d p9_payload_gup +EXPORT_SYMBOL net/9p/9pnet 0x166a8dc3 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x1a37c7e9 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x1e782dc6 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x1ea55a48 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x2956865c p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x2b256d0a p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0x2d2d2ce1 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x326c4bb7 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x34a7b26e p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x3cc3863d p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x44ad3917 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x4e9bc0a5 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x52edbe53 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x5a0a1d29 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x66068a82 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x700f3cbb p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0x7267f668 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x74ca3a4e p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x81908b7e p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x8190f0dc v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0x83b77199 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x83c0e8e7 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x83e586f9 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x859115cc p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x88fb10d0 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x8a364c23 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x8ff0ed2c p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x977a0030 p9_nr_pages +EXPORT_SYMBOL net/9p/9pnet 0xbb527c7a p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0xbd849f94 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0xc3902d52 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0xc41540c1 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xd1a09dbb p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0xd25c7032 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0xd7dbd1c6 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0xe29e618e p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe6a7599e p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0xeb1b9e2b v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0xf3a2d24f p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf4c9a404 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0xf7858f6b p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/9p/9pnet 0xff2d7683 p9_client_readdir +EXPORT_SYMBOL net/appletalk/appletalk 0x6bd4398c aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0x6d42a44e atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0x6fca6792 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0x90b131b2 atalk_find_dev_addr +EXPORT_SYMBOL net/atm/atm 0x055c1293 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x15c61e19 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x2a4a0238 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x3be66444 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x41a67dd0 atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x449c3314 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x509a12c8 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x93136f41 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0x9c481b7a atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xc3064a23 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0xc7bfa3e0 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0xc8aaea6e register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xe1844a8f deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/atm/atm 0xfdc5f539 atm_charge +EXPORT_SYMBOL net/ax25/ax25 0x026c1368 ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0x08a7baed ax25_hard_header +EXPORT_SYMBOL net/ax25/ax25 0x1938d084 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x30f74907 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 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0x8f9778ad ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0xb46caaf9 ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0xbbbcda66 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xe6768e90 ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0xe6775be6 ax25_rebuild_header +EXPORT_SYMBOL net/ax25/ax25 0xf56aeff6 ax25_send_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x07bffb06 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0e024764 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x154e0d78 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2340988d bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x28e780bd bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2e23ad07 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2e6ef172 hci_recv_stream_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3263b91d bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3ca89332 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x400008f4 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x43137411 l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0x59e67922 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x637a7e4e hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x63e1496f bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6c4b5d15 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6dc3e5ab hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6ec81503 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6f09f668 hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x70c671ad bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x79c499d3 bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7b38a689 __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7c640527 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8cc624fa bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91427786 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x95734163 l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x96675760 l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0x98c704b1 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9fff139e hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xae496e13 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb61a0c3b bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb704866d __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb99f5a7b hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc78af107 l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcfa37f13 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd3ee7f7b hci_recv_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd677ae79 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0xda70a923 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe45bef01 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf140a93a hci_conn_security +EXPORT_SYMBOL net/bridge/bridge 0xafe1cfb4 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xac6dbe11 ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xc868a257 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xff23ee9b ebt_unregister_table +EXPORT_SYMBOL net/caif/caif 0x016d656e get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x5bb5fb86 caif_connect_client +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x8238cfc4 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xcf56a448 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0xff850d73 caif_enroll_dev +EXPORT_SYMBOL net/can/can 0x12e06241 can_proto_register +EXPORT_SYMBOL net/can/can 0x16106f19 can_send +EXPORT_SYMBOL net/can/can 0x4ccfab6c can_proto_unregister +EXPORT_SYMBOL net/can/can 0x717116b7 can_rx_register +EXPORT_SYMBOL net/can/can 0xbd74809d can_ioctl +EXPORT_SYMBOL net/can/can 0xdb7328bd can_rx_unregister +EXPORT_SYMBOL net/ceph/libceph 0x06070cdf ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x06ff2fbf ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x080766b0 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0f509358 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x10940306 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0x1475bf0d ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x14c97ce8 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x183b16bb ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0x18e19ec4 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x197effcb ceph_osdc_release_request +EXPORT_SYMBOL net/ceph/libceph 0x1d11cfd4 ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x1d293d1e osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0x1e48a57a ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x1f6b640d ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x23498016 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x2c061632 osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x3158173e ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x31e52459 ceph_osdc_unregister_linger_request +EXPORT_SYMBOL net/ceph/libceph 0x33cc5e37 osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x34a64292 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3b591bc6 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x3cffaca2 ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0x3df0ec7c ceph_calc_ceph_pg +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x4205ffd7 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x42a25487 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x43c8d341 ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x43efd647 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x4a90ab9a osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0x4bd0465c ceph_copy_page_vector_to_user +EXPORT_SYMBOL net/ceph/libceph 0x518e559b ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x553aee6b osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x5625ed16 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x582ca1d4 ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x5a412006 ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x5df6c5e8 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x5fe4b2fa ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0x602b9ffb osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x62c28428 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x65ae1d3b osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6c5d5ac1 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x6d2d06a1 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0x6d430f00 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0x6da6560d ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x6dcb5b21 osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0x6e2c7df0 ceph_monc_create_snapid +EXPORT_SYMBOL net/ceph/libceph 0x6ed41be2 ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0x74641ce1 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x77692acb ceph_msg_last_put +EXPORT_SYMBOL net/ceph/libceph 0x78288168 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0x794e897a ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x84689373 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x861126fc osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x88a5aa59 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x8fa9ada0 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x90f24089 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x92a43258 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x92e98605 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x932959e5 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x94c929e1 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x95f0c29b osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x99e5525e ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa0cc5631 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xa305b7e8 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xa370e129 osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xa40bd703 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0xa7e954f8 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0xacbd964a 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 0xb232fa6c ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0xb530c3b2 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xba7bcaf4 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xbb83018d ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0xc12a0426 ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc55de604 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xca03e86f ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xcbe37742 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0xcf5d812b ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xdc8320fc ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0xe1c6a512 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0xe4c3e84e ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0xe82c9c32 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0xecc99367 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0xeed77845 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xef8df707 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0xf062d327 ceph_con_open +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xd92492c1 dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/ieee802154 0x18e00025 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0x2d8c05de ieee802154_nl_beacon_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x2e1341cb ieee802154_nl_start_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x336da9ce ieee802154_nl_scan_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x36a63b66 wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0x491d0801 ieee802154_nl_disassoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x4c91b910 ieee802154_nl_disassoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x5e430c19 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x6708641b wpan_phy_alloc +EXPORT_SYMBOL net/ieee802154/ieee802154 0xb6fcbbda wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0xd1938207 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0xed5ae27e ieee802154_nl_assoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xfa276b7e ieee802154_nl_assoc_indic +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x36c973ef arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x5bcfed8e arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xc925697a arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x1252acba ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x134b8823 ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x2c810f57 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x28b313d4 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/tunnel4 0x4cdb44a5 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x5e9c4e79 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xfb7d096b ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x4ff95b88 ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x779b96d5 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xe6e7f585 ip6t_register_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x3a7e9072 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0xf727220e xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x57715a44 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xdce22434 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x102032f8 ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x5029bdb0 ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x5bc2d0da ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x5ce7b489 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x7bd6bd12 ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x93c22c77 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xa3e8186c ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xc6d73e2a ircomm_connect_response +EXPORT_SYMBOL net/irda/irda 0x01bcefd1 irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x01dbeb0e irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x02d482e5 irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x030e6ff7 irttp_udata_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 0x0bab6037 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x136ca046 irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x19b7c4e9 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x1a750a49 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x2036ad06 irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x20a3b9d0 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0x23a2eee7 hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0x28ae7981 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x359de411 irias_insert_object +EXPORT_SYMBOL net/irda/irda 0x3b0a2ab6 irias_find_object +EXPORT_SYMBOL net/irda/irda 0x3b9bdefe irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0x428321fa hashbin_get_next +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 0x48d17824 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x4fe76a53 iriap_open +EXPORT_SYMBOL net/irda/irda 0x52f0407c iriap_close +EXPORT_SYMBOL net/irda/irda 0x533c1f48 async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x54a8d8f6 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x5e7a39c5 irlap_close +EXPORT_SYMBOL net/irda/irda 0x62acf28c irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x648c7478 hashbin_get_first +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 0x7345ca66 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7d54adaf irias_new_object +EXPORT_SYMBOL net/irda/irda 0x7ff509a2 hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0x8cd99be0 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x993ad14b irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x9e326eb3 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0xa35735b0 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0xa370c681 hashbin_find +EXPORT_SYMBOL net/irda/irda 0xa38854b5 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xbb43a8e3 irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0xbba62ffe irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0xbcd3ef13 irias_object_change_attribute +EXPORT_SYMBOL net/irda/irda 0xbe40ace9 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0xbfcba50e irlap_open +EXPORT_SYMBOL net/irda/irda 0xc0bee29c hashbin_new +EXPORT_SYMBOL net/irda/irda 0xd65ff427 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0xd6deeaae irda_setup_dma +EXPORT_SYMBOL net/irda/irda 0xd8db61b6 irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xe67c4dcc irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0xe967a6e0 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0xe9cd1f0e irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xee60e663 irttp_dup +EXPORT_SYMBOL net/l2tp/l2tp_core 0xda382876 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x1e3f7031 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0x3b0a1a6b lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x40043906 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0xacf42134 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0xaf42cc13 lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0xc095e9a0 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0xc5748b3b lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0xf6fa1784 lapb_getparms +EXPORT_SYMBOL net/llc/llc 0x09862020 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x1aecae3a llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x5da59d47 llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0xbc6dca59 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0xd629316a llc_sap_list_lock +EXPORT_SYMBOL net/llc/llc 0xe818172d llc_sap_close +EXPORT_SYMBOL net/llc/llc 0xf8453cab llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0xfc4beeb0 llc_sap_open +EXPORT_SYMBOL net/mac80211/mac80211 0x000e3594 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x009376f2 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x054838f1 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x06fafde5 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x07e3535a ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x07eeef89 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x0bbaee0f ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x10493d5f ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0x14eaaea6 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x1ab26de2 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x1b1b8d29 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x2001b45a ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x205b400e ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x21a2ae71 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x21d9bcac ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x27c1ef5f ieee80211_alloc_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x29e3158a ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x308d88e7 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x31ad7db3 ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x362b6421 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x3cc938fa ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x3d64e325 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x41cc26cb ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0x4490cb17 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x497ddaa9 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0x4ea5895d ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x4f856f28 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x51e1e501 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x52539550 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x540c7799 ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x545951cd ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x568baf3e ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x595b5052 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x5bd46ee4 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x5c28cca5 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x5d813a45 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x5e8bf877 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x649446eb ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x64e2acec wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x6c4a8ed3 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x6d5fd1a0 ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x7fc9fde2 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x7ffa16c1 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x81043900 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x87fbdf76 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x896271db ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x8b21d1db ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0x8be58bc2 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x8d6ad967 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x8fb3ad29 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x9506859e ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x981f2fd4 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x9c5e6334 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0x9c9b2f34 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xa1fc36c4 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xa576b074 ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xaa157485 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0xbc26f51a ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xc27652c9 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0xc7e9782e ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xc84f3d4e __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xca402501 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0xcccafe99 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xcce42268 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0xd1755a33 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0xd4816e13 ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0xdab147d6 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xddb47d52 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xdf00ebd5 ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0xf25e6559 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xf395de03 ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0xfe060747 ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xffff4b2c ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac802154/mac802154 0x32b4909b ieee802154_register_device +EXPORT_SYMBOL net/mac802154/mac802154 0x640a36c0 ieee802154_free_device +EXPORT_SYMBOL net/mac802154/mac802154 0x66183c62 ieee802154_unregister_device +EXPORT_SYMBOL net/mac802154/mac802154 0x80a82f5b ieee802154_alloc_device +EXPORT_SYMBOL net/mac802154/mac802154 0xaacb9507 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x033ed46b ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x1c65c415 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x31e43a11 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x46f06243 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x61ff7ebe ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x968cdb7d unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x9d6bb3eb register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb3df45cd ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb8570e28 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc97489b1 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xcf352c82 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd56996d2 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe6bdacb8 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xf085ac03 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x0caee889 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x2b050436 __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x824f74c9 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_conntrack_proto_gre 0xad65504f nf_ct_gre_keymap_flush +EXPORT_SYMBOL net/netfilter/nf_nat 0x4461fb23 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x6287a7aa nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0x68ce4c1f nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0xb29c4d83 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xbf03b5fa nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0xf82aa0bb nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/x_tables 0x0199f037 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x08c473b7 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x1b6e5076 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x1f9b6138 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x2b72f21f xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x2ef1138e xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x60e319da xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x6a7c5b4d xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x84ea85b0 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x85d77e13 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x891a5995 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0xb28f5ef1 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xd87ae60d xt_check_entry_offsets +EXPORT_SYMBOL net/nfc/hci/hci 0x1388cbe6 nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0x1ba66276 nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0x26d27643 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x328e4a1c nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x3787ea62 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x52d2cf35 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x617bfdce nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x693fdc37 nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0x6a09b433 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x765fec2b nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x84dbb124 nfc_hci_send_response +EXPORT_SYMBOL net/nfc/hci/hci 0x91051f5e nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0xa3460385 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xc8610536 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0xd5f41db9 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0xe29134b0 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xe624bedb nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xf8ce234d nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/nci/nci 0x2a8a864d nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x7a76e561 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0xa5403561 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0xb556d4d3 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xf8cd7be7 nci_recv_frame +EXPORT_SYMBOL net/nfc/nfc 0x0b55f22a nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0x26109d3f nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x28b21000 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x3b01dba0 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0x412a9add nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0x61ec4c89 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0x7e2ec98e nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x8a6a467e nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x8ec59a0a nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x909c4f04 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x90c79642 nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0xa7fd05ce nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0xb791cf64 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0xbdb5314b nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0xc12f2207 nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0xc79ca12f nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0xd5b6fc11 nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0xdfc15a70 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0xedf056a0 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xf8242471 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc_digital 0x166e6746 nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x6d6f4967 nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x785bd77c nfc_digital_register_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x868be2a3 nfc_digital_free_device +EXPORT_SYMBOL net/phonet/phonet 0x1b6c1396 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x61e0f9e3 phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0x70470267 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0xcb397977 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0xe8d5c2f3 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0xee809c65 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0xf6c0b6fe phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0xfa853009 pn_skb_send +EXPORT_SYMBOL net/rds/rds 0x5031b8c5 rds_str_array +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x22180f59 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x2dc4a948 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x36bed797 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x5776b4c8 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x618e6ab3 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x6a2e2ff5 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x7c1c262a rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x7d340910 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x8097d9b3 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x8f549467 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb014aa4c rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb77d6689 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xbe8b3527 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xeef6530e rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf4af2550 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/sctp/sctp 0x5c3e5a36 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x09371555 gss_mech_get +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x26c4158d gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xfaeb5652 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/sunrpc 0x6bb75789 svc_pool_stats_open +EXPORT_SYMBOL net/wimax/wimax 0x0433dc8f wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0x9482b06e wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x0123cdbf cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x04d1cf81 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x05a413fb cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x07276b5f cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x087a5e93 cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0df9c50f cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x0f4094b4 cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x105143e7 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x12ba16ac wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1af42559 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x1d12d6c9 cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x2230b22b cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x22d8d37a cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0x2341fea3 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x24b57331 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x297a6743 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x319d95f9 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x33795dcf cfg80211_inform_bss_width_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x38bf73bf cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0x406a8302 cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x413843c3 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x494badc8 cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x4bd0332d cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0x4c3b5878 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x4c40b2fb ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x4c9236ad cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x53d55785 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x549ae50f ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x5914803a cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x5ef55501 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x6444d4a0 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x6e5df4a3 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x7234546b cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x72458b24 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x77ff458c cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x82637d53 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x85eb0232 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x925e6e52 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x98f95256 wiphy_new +EXPORT_SYMBOL net/wireless/cfg80211 0x9edf5dee cfg80211_remain_on_channel_expired +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 0xa3f6595f cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0xa5d10c7b cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0xa8768310 cfg80211_del_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xab789c1f cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0xad4e594d cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xb0499570 cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0xb1795bd2 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0xb1956a6d wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xb50b764f freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0xb5bcd1ae cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0xb6474d3b cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xbe14f26c ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xc15c8611 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xcb1e3312 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xcdaa8711 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0xcf618a57 cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0xd56d25b6 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xd9203bd5 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xd941fb46 cfg80211_inform_bss_width +EXPORT_SYMBOL net/wireless/cfg80211 0xd9527a4d wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0xdabfb315 cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xdc02f385 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xdc7be649 cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0xdd76fb49 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xdf9bf52c ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xeaa57297 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xee42db3c cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0xf0107b44 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xf08320ae cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xf387d63a cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0xf9c645e9 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0xfb9e8b12 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/cfg80211 0xffa3f462 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/lib80211 0x2d0f99e5 print_ssid +EXPORT_SYMBOL net/wireless/lib80211 0x41a5d43d lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x681e3bf6 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0x7b949896 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0x81810cb5 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0x93622ae0 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xe678e0d5 lib80211_register_crypto_ops +EXPORT_SYMBOL sound/ac97_bus 0x42d6be8f ac97_bus_type +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1a724fcc snd_seq_kernel_client_ctl +EXPORT_SYMBOL sound/core/seq/snd-seq 0x25f5e4aa snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3061c52d snd_use_lock_sync_helper +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3fb4d161 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6bb71038 snd_seq_delete_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6c48be3a snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7ac2f329 snd_seq_expand_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7b8699eb snd_seq_event_port_detach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x8f7f28ea snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0xa39f9d07 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 0x21d127e1 snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x3a57f235 snd_seq_autoload_unlock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xb90668b2 snd_seq_autoload_lock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xc622fb29 snd_seq_device_unregister_driver +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xf7de5b47 snd_seq_device_register_driver +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 0x2b51b084 snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x350963b4 snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x7f62d029 snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x83914b9a snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x92ee6bb0 snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x9e7d3f0f snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xbc141dfc snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xf2bf1549 snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0x8f7857da snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x015d0ca7 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0x04e79805 snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0x0586946c snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0x06c8b343 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0x0b12f308 snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0x0ea2b6ff snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0x12877458 snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0x18dc48bd snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0x18e1683f snd_dma_program +EXPORT_SYMBOL sound/core/snd 0x191e88cf snd_dma_pointer +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x284d3cce snd_card_register +EXPORT_SYMBOL sound/core/snd 0x2ae3deaa release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0x2e5c41f3 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x34103730 snd_seq_root +EXPORT_SYMBOL sound/core/snd 0x38f2e99e snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x3982e6d0 snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x3e7d71dd snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0x40adb810 snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0x421a7320 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x453e52c6 snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0x465f1c0f snd_card_free +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4b015768 snd_iprintf +EXPORT_SYMBOL sound/core/snd 0x575f1406 snd_jack_new +EXPORT_SYMBOL sound/core/snd 0x5a8025b2 snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0x5b24e987 snd_cards +EXPORT_SYMBOL sound/core/snd 0x5c54fdaf snd_device_register +EXPORT_SYMBOL sound/core/snd 0x5e7ddc8c snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0x602c96f0 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x64a0a9cc snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x6d8bd447 snd_device_new +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x70fd1da6 snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0x71b521ab snd_add_device_sysfs_file +EXPORT_SYMBOL sound/core/snd 0x78823d03 snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0x7983bda3 snd_component_add +EXPORT_SYMBOL sound/core/snd 0x7dae4c5a snd_info_register +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x83bcfc45 snd_register_device_for_dev +EXPORT_SYMBOL sound/core/snd 0x8be3bbcf snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x907b4791 snd_jack_report +EXPORT_SYMBOL sound/core/snd 0x9297ff7d snd_device_free +EXPORT_SYMBOL sound/core/snd 0x934b5b70 snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0x97b44394 snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0x986ff58f snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0x9f4c2e94 snd_card_proc_new +EXPORT_SYMBOL sound/core/snd 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0xaea8335d snd_card_unref +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xb973698f snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0xc1199035 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL sound/core/snd 0xd38fcb21 snd_power_wait +EXPORT_SYMBOL sound/core/snd 0xdaccf452 snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0xe8424433 snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0xff9ea8f9 snd_card_create +EXPORT_SYMBOL sound/core/snd-hwdep 0x382b0492 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-page-alloc 0x20424e2a snd_sgbuf_get_chunk_size +EXPORT_SYMBOL sound/core/snd-page-alloc 0x3b91f3af snd_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x719a7cdb snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x87415077 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-page-alloc 0x8b9e86e6 snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0xa55fb04e snd_dma_get_reserved_buf +EXPORT_SYMBOL sound/core/snd-page-alloc 0xade88e76 snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0xedb7e08d snd_dma_reserve_buf +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 0x09ed6722 snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0x0d10c3c4 snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x15a6deb0 snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x1e651356 snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0x24bf4d98 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x29b31801 snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0x2ee4d0e3 snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x33364926 snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0x33a7984a snd_pcm_kernel_ioctl +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 0x3c6ba2f7 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0x3d11c0e9 snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0x3e01e227 snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0x4002633d snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x42ad1f6d snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0x47ab3083 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0x4a4bf0ff snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0x4b3f1ed7 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0x4c18acb8 snd_pcm_lib_free_pages +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 0x5160e84d snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x565c5c7e snd_pcm_debug_name +EXPORT_SYMBOL sound/core/snd-pcm 0x5b50b616 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x632bcf09 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL sound/core/snd-pcm 0x66c73365 snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x6bc75b2e snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8ea0b snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x71851efd snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0x72936964 snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0x802e2c69 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x866f62b1 snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0x8a2691ce snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x8e90c971 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0xa16619ca snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0xa19998d9 snd_pcm_sgbuf_ops_page +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xa9adc229 snd_pcm_link_rwlock +EXPORT_SYMBOL sound/core/snd-pcm 0xabf7b581 snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0xb583caf6 snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0xb5cd60dd snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0xb8e0aca6 snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xbf7fac4b snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xc612289a snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0xe25a0ed2 snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0xe32091c9 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xf4b91372 snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0xfd2a576b snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-pcm 0xfffa813b snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-rawmidi 0x01554cfd snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x02654649 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x03205d2e snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0dc04108 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x36a28c06 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x3db27acc snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0x45ee59ce __snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x4fb52a2b snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x96754a18 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa9b4fea7 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0xafa8bfc6 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb69091b2 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0xca0a8e0a snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe03a5f4b snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe37764c3 snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe53b4542 __snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf26d0014 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf852861d snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xffb10201 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-timer 0x0f26319a snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0x38bbd8a3 snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0x406107d1 snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0x432a57ab snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0x44f7da13 snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0x51e1d3af snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0x527dd3d0 snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0x775765ce snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0x83932304 snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0x846ad63a snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0x969e5164 snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0xa1c1c7ea snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0xa6c06ae0 snd_timer_close +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x74e9550a 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 0x4fcc0618 snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x52c01473 snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x6afa67db snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xb63f6ab0 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xc0a33c1e snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xeb01bfc3 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xeffcc7c8 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xf87d1137 snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xfa7e6652 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0x183db72e snd_opl4_read_memory +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0x663b4d51 snd_opl4_write_memory +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0xcf45824e snd_opl4_write +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0xe1147583 snd_opl4_read +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0xf862900d snd_opl4_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x1aebb13c snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x2b0e3a6b snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x59f19725 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x83dce208 snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x91cd6f54 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x99c27f78 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xab03f6fc snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xb6b07f5f snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xd35870ae snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x07a00fc4 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x09abbe77 amdtp_out_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0bdd7f47 amdtp_out_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0c07a2e0 amdtp_out_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1137d545 amdtp_out_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x15a3e9c5 cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1794bb60 amdtp_out_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x369aabc3 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x38da1e6d fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3929d859 amdtp_out_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3ba18f41 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3bf31c61 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x47f5333b fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4da65f54 amdtp_out_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5d162df1 amdtp_out_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5da9e501 amdtp_out_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6dfd7df8 fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7762f132 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7c89f10f cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa0b3898c cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb1123ab7 amdtp_out_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xdc68fc1f cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe5fccf9f fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe61a474b iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe832c19c amdtp_out_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf040cf9f fw_iso_resources_free +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x19e924ea snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x3780771d snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x56f7339d snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x6c4e3525 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x7edaf268 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xa503e223 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x17016518 snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x206ec7df snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x87112782 snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x8b488ca8 snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x9f4610d2 snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xd181fb6f snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x2dcd1b50 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x7b7f93ac snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x9be09018 snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x9bee2c68 snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x47bed18c snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xcb8d63cc snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x4d47100f snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x50ce5cb3 snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xc8883055 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xd5c2e804 snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xd8349aab snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-i2c 0x24ddc92c snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0x45c1a26c snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x7a62645a snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x7b1db6e7 snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x9f5bbc8d snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0xa338e630 snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-tea6330t 0xca663aaa snd_tea6330t_detect +EXPORT_SYMBOL sound/i2c/snd-tea6330t 0xf7aaf7e7 snd_tea6330t_update_mixer +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0x008dd990 snd_es1688_pcm +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0x2d44763c snd_es1688_mixer +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0x3ba3d4ff snd_es1688_create +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0xb3f07f27 snd_es1688_mixer_write +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0xddc72fbf snd_es1688_reset +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x00e32a3b snd_gf1_new_mixer +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x01dd9e3e snd_gf1_mem_lock +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x0501fb48 snd_gf1_mem_alloc +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x09c485db snd_gf1_i_write8 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x109abf1b snd_gf1_ctrl_stop +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x19e10640 snd_gf1_mem_free +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x1c1ce117 snd_gus_interrupt +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x24f57c2c snd_gf1_alloc_voice +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x2870cc64 snd_gf1_peek +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x296222f7 snd_gf1_i_look8 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x38f8124c snd_gf1_stop_voice +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x39d8a4a4 snd_gf1_translate_freq +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x46db8d67 snd_gf1_lvol_to_gvol_raw +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x4bebb6e5 snd_gf1_mem_xfree +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x4fe66452 snd_gf1_i_look16 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x635629b4 snd_gf1_pcm_new +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x653db39b snd_gus_use_dec +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x762f1cbe snd_gus_use_inc +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x79898a6d snd_gf1_write8 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x7d4827c3 snd_gf1_write16 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x813d5c1e snd_gf1_dram_addr +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x946524e9 snd_gf1_look16 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x987b29c0 snd_gus_dram_write +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xb02a8dbe snd_gf1_poke +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xbf5045bc snd_gf1_write_addr +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xc1609fea snd_gus_initialize +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xc43a5527 snd_gf1_atten_table +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xc9322b78 snd_gus_create +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xdd75ca21 snd_gus_dram_read +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xdfd8f374 snd_gf1_rawmidi_new +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xebac3543 snd_gf1_delay +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xeedcb90a snd_gf1_free_voice +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xf0e81c83 snd_gf1_look8 +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x0e096be3 snd_msnd_init_queue +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x3e267f9f snd_msnd_enable_irq +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x41453ca5 snd_msnd_send_dsp_cmd +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x50fe1df2 snd_msndmix_new +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x62f8c833 snd_msnd_DAPQ +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x75026b24 snd_msndmidi_input_read +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x8637b504 snd_msnd_DARQ +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x8cc3fb75 snd_msnd_send_word +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x9141f46a snd_msnd_pcm +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x9cfd66ba snd_msndmix_force_recsrc +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xa554b6eb snd_msnd_upload_host +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xb249bc6b snd_msndmix_setup +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xf6bed4fb snd_msnd_dsp_halt +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xf8853213 snd_msnd_disable_irq +EXPORT_SYMBOL sound/isa/opti9xx/snd-miro 0x29223eec snd_aci_get_aci +EXPORT_SYMBOL sound/isa/opti9xx/snd-miro 0x9c910ad7 snd_aci_cmd +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x0aee4410 snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x34b183dc snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x5afbef50 snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x642d88ba snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x643af916 snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x707439d4 snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x7247a5dd snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x97ad6123 snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xc9ab7f9f snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xd1bfe70b snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb16-csp 0x40bf4587 snd_sb_csp_new +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x92465c98 snd_sb16dsp_pcm +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xaaf12351 snd_sb16dsp_configure +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xc607f812 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 0x19550bd4 snd_sb8dsp_midi +EXPORT_SYMBOL sound/isa/sb/snd-sb8-dsp 0x1bed82ce snd_sb8dsp_interrupt +EXPORT_SYMBOL sound/isa/sb/snd-sb8-dsp 0xa0e5114d snd_sb8dsp_midi_interrupt +EXPORT_SYMBOL sound/isa/sb/snd-sb8-dsp 0xd0610f7a snd_sb8dsp_pcm +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x0848e920 snd_emu8000_update_equalizer +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x350a8391 snd_emu8000_dma_chan +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x502928c4 snd_emu8000_update_chorus_mode +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x7a8e1be3 snd_emu8000_load_reverb_fx +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x83070998 snd_emu8000_update_reverb_mode +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x89874ef3 snd_emu8000_poke_dw +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x8e273e30 snd_emu8000_poke +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x9b3146bd snd_emu8000_load_chorus_fx +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xac4f992a snd_emu8000_peek_dw +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xb07913e4 snd_emu8000_init_fm +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xc5255e3a snd_emu8000_peek +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x007c89f1 snd_wss_info_single +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x08926085 snd_wss_mixer +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x277c0df0 snd_wss_create +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x33eaa9b1 snd_wss_in +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x349d0788 snd_wss_get_double +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x385ac8b3 snd_wss_overrange +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x4ebf4488 snd_wss_put_double +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x5a0a395c snd_wss_timer +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x627fb581 snd_wss_pcm +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x69c799da snd_wss_mce_down +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x78448595 snd_wss_out +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x7b202637 snd_wss_interrupt +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x83056e8a snd_cs4236_ext_out +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xa3b216fd snd_wss_get_single +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xcc0876f5 snd_wss_get_pcm_ops +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xd83d3c67 snd_wss_chip_id +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xd99055fd snd_wss_put_single +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xe15a748f snd_wss_mce_up +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xfdb474fa snd_wss_info_double +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xff3e146c snd_cs4236_ext_in +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x03038241 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0e2059cc snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x10d8b71e snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x16909cf3 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x4e5f758b snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x70981921 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x717c7614 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x8eb1ca57 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xa1312d43 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb7694bac snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc1735ecc snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc4cf83af snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc6068863 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xceb76138 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xd2cb2221 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xd994a11f snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe1c40fdd snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/asihpi/snd-asihpi 0x2443d715 hpi_send_recv +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x2b09d5e1 snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x2ee40a79 snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x368cd1df snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x486b1f8c snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x5eb554ee snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x7b6e3d4d snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x949d0fc3 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x9f96ef07 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xae255813 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x25db068a snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x5267fb7e snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x9c4e0890 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x031ca852 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x05c32bde oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x13e40853 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1551428c oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x19fd8163 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x31f5e425 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x33791b50 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x49d05bc0 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x4ad9a662 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x649a6537 oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x711b528d oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x82f8d2c7 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa49be8fc oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa90dca65 oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc65312e1 oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xcc10987e oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xcedc4ea8 oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf067c1b6 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf4b6c87f oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf69bcd03 oxygen_pci_pm +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x2db5b05b snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x32051035 snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xbc051119 snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xbe4388dc snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xe90c0c80 snd_trident_write_voice_regs +EXPORT_SYMBOL sound/soundcore 0x4e5b00f1 sound_class +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x297227d5 snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x4a30698e 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 0x7ae81676 snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x8a15fc27 snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xd49f335d snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xedf4027d snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/snd-util-mem 0x0bada5c4 snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x54938f28 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x81b2be5b snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x9c11b57f snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0xddae8749 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xe019d09b __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xe8bdd3bd snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xfebe4040 __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 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xeaa0bdf5 snd_usbmidi_create +EXPORT_SYMBOL vmlinux 0x00000000 __symbol_put +EXPORT_SYMBOL vmlinux 0x00000000 current_fs_time +EXPORT_SYMBOL vmlinux 0x00000000 d_tmpfile +EXPORT_SYMBOL vmlinux 0x00000000 do_sync_read +EXPORT_SYMBOL vmlinux 0x00000000 filp_close +EXPORT_SYMBOL vmlinux 0x00000000 finish_open +EXPORT_SYMBOL vmlinux 0x00000000 generic_getxattr +EXPORT_SYMBOL vmlinux 0x00000000 generic_write_sync +EXPORT_SYMBOL vmlinux 0x00000000 get_unmapped_area +EXPORT_SYMBOL vmlinux 0x00000000 in_group_p +EXPORT_SYMBOL vmlinux 0x00000000 inode_add_bytes +EXPORT_SYMBOL vmlinux 0x00000000 iov_shorten +EXPORT_SYMBOL vmlinux 0x00000000 iterate_fd +EXPORT_SYMBOL vmlinux 0x00000000 ns_capable +EXPORT_SYMBOL vmlinux 0x00000000 path_is_under +EXPORT_SYMBOL vmlinux 0x00000000 register_exec_domain +EXPORT_SYMBOL vmlinux 0x00000000 schedule_timeout +EXPORT_SYMBOL vmlinux 0x00000000 sock_register +EXPORT_SYMBOL vmlinux 0x00000000 sys_close +EXPORT_SYMBOL vmlinux 0x00000000 task_nice +EXPORT_SYMBOL vmlinux 0x00000000 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x00000000 vm_brk +EXPORT_SYMBOL vmlinux 0x0015810d abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x0021f4b5 tty_port_init +EXPORT_SYMBOL vmlinux 0x0067e6bd spi_release_transport +EXPORT_SYMBOL vmlinux 0x006b0f17 kill_litter_super +EXPORT_SYMBOL vmlinux 0x006f6e83 __neigh_create +EXPORT_SYMBOL vmlinux 0x00801678 flush_scheduled_work +EXPORT_SYMBOL vmlinux 0x00826636 dev_get_drvdata +EXPORT_SYMBOL vmlinux 0x0089bf58 neigh_lookup +EXPORT_SYMBOL vmlinux 0x009057a2 __elv_add_request +EXPORT_SYMBOL vmlinux 0x0093a14e arp_find +EXPORT_SYMBOL vmlinux 0x0096486a mdiobus_write +EXPORT_SYMBOL vmlinux 0x00a9dfee dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x00abda07 migrate_page +EXPORT_SYMBOL vmlinux 0x00bf9f91 efi +EXPORT_SYMBOL vmlinux 0x00c0f654 default_llseek +EXPORT_SYMBOL vmlinux 0x00c52430 ida_simple_get +EXPORT_SYMBOL vmlinux 0x00cc401c nlmsg_notify +EXPORT_SYMBOL vmlinux 0x00d31c8c scsi_host_get +EXPORT_SYMBOL vmlinux 0x00e8097b csum_partial_copy_fromiovecend +EXPORT_SYMBOL vmlinux 0x00ea67cf dma_mark_declared_memory_occupied +EXPORT_SYMBOL vmlinux 0x00ee4269 read_cache_page +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x011ab4bc scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x0129895c generic_block_bmap +EXPORT_SYMBOL vmlinux 0x012b7b4e tty_unthrottle +EXPORT_SYMBOL vmlinux 0x01444cd1 idr_replace +EXPORT_SYMBOL vmlinux 0x014465e3 alloc_anon_inode +EXPORT_SYMBOL vmlinux 0x01607271 eth_header_cache +EXPORT_SYMBOL vmlinux 0x0187751a bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x01902adf netpoll_trap +EXPORT_SYMBOL vmlinux 0x01a6676e blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x01cc1821 submit_bh +EXPORT_SYMBOL vmlinux 0x01d5df71 tcp_ioctl +EXPORT_SYMBOL vmlinux 0x01dd50eb get_tz_trend +EXPORT_SYMBOL vmlinux 0x01ebe307 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0x01ed1ce0 napi_get_frags +EXPORT_SYMBOL vmlinux 0x01f09740 x86_dma_fallback_dev +EXPORT_SYMBOL vmlinux 0x01f5646b generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x021793b7 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x02217a62 pnp_get_resource +EXPORT_SYMBOL vmlinux 0x0237b57a arch_unregister_cpu +EXPORT_SYMBOL vmlinux 0x0237f2f8 _dev_info +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x028080a4 kobject_add +EXPORT_SYMBOL vmlinux 0x029444f0 native_read_tsc +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a2434a alloc_mdio_bitbang +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02c21479 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x02c6224c processors +EXPORT_SYMBOL vmlinux 0x02ee26c1 free_pages_exact +EXPORT_SYMBOL vmlinux 0x03004b9d security_path_chmod +EXPORT_SYMBOL vmlinux 0x031d27df neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x034aee27 unlock_rename +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x0362b3e3 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x03684951 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0x03693d47 blk_end_request_all +EXPORT_SYMBOL vmlinux 0x03710a4a blk_make_request +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x037ba9da tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x0383891c mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0x03a3a8ca xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x03b580eb wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x03c06156 bitmap_fold +EXPORT_SYMBOL vmlinux 0x03c2a8cc jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x03d5c74f scm_fp_dup +EXPORT_SYMBOL vmlinux 0x03dc8cff xfrm_state_update +EXPORT_SYMBOL vmlinux 0x03e5002f dev_get_by_flags_rcu +EXPORT_SYMBOL vmlinux 0x03e8f6db generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x04337ca4 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x045c5d50 block_truncate_page +EXPORT_SYMBOL vmlinux 0x04695e4c seq_bitmap_list +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x04c25d45 skb_make_writable +EXPORT_SYMBOL vmlinux 0x04d8c750 release_perfctr_nmi +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x050877b9 dmi_first_match +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x0528f0f6 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x054434d6 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x0569d3c9 md_finish_reshape +EXPORT_SYMBOL vmlinux 0x0574a221 netlink_unicast +EXPORT_SYMBOL vmlinux 0x057ce975 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0x057e06c7 generic_writepages +EXPORT_SYMBOL vmlinux 0x058fd89a qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x0593790e mmc_erase +EXPORT_SYMBOL vmlinux 0x0593a99b init_timer_key +EXPORT_SYMBOL vmlinux 0x05aaa1a2 blk_mq_free_single_hw_queue +EXPORT_SYMBOL vmlinux 0x05b1d647 get_disk +EXPORT_SYMBOL vmlinux 0x05ce6e70 scsi_cmd_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x05d883ed grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x05dc9833 pci_bus_put +EXPORT_SYMBOL vmlinux 0x05dd3114 touch_buffer +EXPORT_SYMBOL vmlinux 0x05eda269 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x05f13c86 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x0601eb38 seq_vprintf +EXPORT_SYMBOL vmlinux 0x060fa2e6 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x0613ed8a security_path_mkdir +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x0625af6f from_kgid_munged +EXPORT_SYMBOL vmlinux 0x0632d9b4 keyring_search +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x06597f65 kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x068c7263 ioremap_cache +EXPORT_SYMBOL vmlinux 0x06a9c0c5 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x06b15f1b wait_on_sync_kiocb +EXPORT_SYMBOL vmlinux 0x06c0dae5 __kernel_fpu_end +EXPORT_SYMBOL vmlinux 0x06d2cf63 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x06d2f086 dma_spin_lock +EXPORT_SYMBOL vmlinux 0x06e458e0 ida_get_new_above +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x071669cc i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x0717158a set_pages_uc +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x0729e4ef jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x0738444d scsi_free_command +EXPORT_SYMBOL vmlinux 0x073dfa12 generate_resume_trace +EXPORT_SYMBOL vmlinux 0x0749da2d vga_tryget +EXPORT_SYMBOL vmlinux 0x075f3278 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x07608604 acpi_get_vendor_resource +EXPORT_SYMBOL vmlinux 0x076c8ca0 input_unregister_handle +EXPORT_SYMBOL vmlinux 0x076de778 cfb_fillrect +EXPORT_SYMBOL vmlinux 0x0799aca4 local_bh_enable +EXPORT_SYMBOL vmlinux 0x07a66cf2 tcf_hash_release +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07aa3290 acpi_walk_resource_buffer +EXPORT_SYMBOL vmlinux 0x07abbacd ida_destroy +EXPORT_SYMBOL vmlinux 0x07c86d9d dev_remove_offload +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07d3fdad security_d_instantiate +EXPORT_SYMBOL vmlinux 0x07d50a24 csum_partial +EXPORT_SYMBOL vmlinux 0x07d7d8f4 d_rehash +EXPORT_SYMBOL vmlinux 0x07db2adb seq_write +EXPORT_SYMBOL vmlinux 0x07f22bb4 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x07fe2de2 inet6_bind +EXPORT_SYMBOL vmlinux 0x080a220f iterate_dir +EXPORT_SYMBOL vmlinux 0x081471d2 ip_options_compile +EXPORT_SYMBOL vmlinux 0x08234552 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x082c6fda sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x086bdff8 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x086c869e vfs_link +EXPORT_SYMBOL vmlinux 0x087fc7aa __sb_start_write +EXPORT_SYMBOL vmlinux 0x08836db1 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x088bf21f xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x088e2bd2 md_done_sync +EXPORT_SYMBOL vmlinux 0x0897287b acpi_disable_all_gpes +EXPORT_SYMBOL vmlinux 0x089c1ff3 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x08a4db91 page_address +EXPORT_SYMBOL vmlinux 0x08b796b7 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x08bf826c _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0x08e90019 dev_uc_del +EXPORT_SYMBOL vmlinux 0x08f05c1a udp_sendmsg +EXPORT_SYMBOL vmlinux 0x092fed3b ps2_drain +EXPORT_SYMBOL vmlinux 0x0946f655 __get_user_pages +EXPORT_SYMBOL vmlinux 0x0947151f input_reset_device +EXPORT_SYMBOL vmlinux 0x094e7688 vlan_vid_add +EXPORT_SYMBOL vmlinux 0x09617d3a jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x09623fa0 vsc824x_add_skew +EXPORT_SYMBOL vmlinux 0x0983eafb dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x098fb70c agp_free_page_array +EXPORT_SYMBOL vmlinux 0x0992780d efi_enabled +EXPORT_SYMBOL vmlinux 0x09ba5d9a ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09e61a12 single_release +EXPORT_SYMBOL vmlinux 0x0a0551d3 get_thermal_instance +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a3131f6 strnchr +EXPORT_SYMBOL vmlinux 0x0a3c70cc bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x0a408a36 tcp_sendpage +EXPORT_SYMBOL vmlinux 0x0a469d23 mfd_clone_cell +EXPORT_SYMBOL vmlinux 0x0a56d356 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x0a59baa0 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x0a62700b insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x0a739bc3 padata_stop +EXPORT_SYMBOL vmlinux 0x0a7e76ac dev_disable_lro +EXPORT_SYMBOL vmlinux 0x0a844408 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x0a84be16 request_key_async +EXPORT_SYMBOL vmlinux 0x0ab19de2 kfree_put_link +EXPORT_SYMBOL vmlinux 0x0ac525e6 register_sysctl +EXPORT_SYMBOL vmlinux 0x0acb1a3c __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0x0ace91b7 nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ada18ee skb_free_datagram +EXPORT_SYMBOL vmlinux 0x0b04b38c tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b19a80d pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b48c680 pnp_is_active +EXPORT_SYMBOL vmlinux 0x0b6ee8bb swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b825955 page_readlink +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bca5a43 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x0bcca7ba inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x0be1e856 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x0beafcde gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x0c42f18f lock_fb_info +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c52461c mmc_request_done +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c65e73c scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0x0c82d802 bd_set_size +EXPORT_SYMBOL vmlinux 0x0c8c9e99 scsi_show_extd_sense +EXPORT_SYMBOL vmlinux 0x0ca3e61e iterate_mounts +EXPORT_SYMBOL vmlinux 0x0ca5d322 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x0ca7b7a8 acpi_check_region +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cc616ff serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x0cc7fc0a pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0x0cdb7d12 __kernel_fpu_begin +EXPORT_SYMBOL vmlinux 0x0ce900af blk_finish_plug +EXPORT_SYMBOL vmlinux 0x0ceea8e9 iunique +EXPORT_SYMBOL vmlinux 0x0cf3cdea dm_get_mapinfo +EXPORT_SYMBOL vmlinux 0x0d3dda14 acpi_get_type +EXPORT_SYMBOL vmlinux 0x0d4dda24 gen10g_config_advert +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d7a40d3 kill_pgrp +EXPORT_SYMBOL vmlinux 0x0d9b1311 security_file_permission +EXPORT_SYMBOL vmlinux 0x0da0dbe5 wake_up_process +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0da60192 dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x0de81517 dquot_operations +EXPORT_SYMBOL vmlinux 0x0e06d97d dentry_open +EXPORT_SYMBOL vmlinux 0x0e08c4fd pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0x0e1404db tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x0e30d79f elv_register_queue +EXPORT_SYMBOL vmlinux 0x0e4515d2 save_mount_options +EXPORT_SYMBOL vmlinux 0x0e630160 bh_submit_read +EXPORT_SYMBOL vmlinux 0x0e6bbfdb __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e91a45f __inode_permission +EXPORT_SYMBOL vmlinux 0x0ea31478 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0x0eaf451e hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x0eb6e7c6 cfb_imageblit +EXPORT_SYMBOL vmlinux 0x0ed938e8 blk_run_queue +EXPORT_SYMBOL vmlinux 0x0ee2a81a blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0x0eea7efa generic_file_open +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0efd31de pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x0f109c80 scsi_device_get +EXPORT_SYMBOL vmlinux 0x0f362da1 seq_putc +EXPORT_SYMBOL vmlinux 0x0f3958c5 serio_reconnect +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f73dfea splice_from_pipe_next +EXPORT_SYMBOL vmlinux 0x0fa7cd5c __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x0fadc924 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fd00a68 acpi_clear_event +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x1015d9a7 blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0x1019174e devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x10248e19 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x10298ffd dma_ops +EXPORT_SYMBOL vmlinux 0x102c56de irq_regs +EXPORT_SYMBOL vmlinux 0x10469bab blk_mq_insert_request +EXPORT_SYMBOL vmlinux 0x104b08e6 udplite_prot +EXPORT_SYMBOL vmlinux 0x104ec310 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x105bf7fa register_cdrom +EXPORT_SYMBOL vmlinux 0x106f13ab crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x107c3d27 scsi_dma_map +EXPORT_SYMBOL vmlinux 0x109c97d5 netif_carrier_on +EXPORT_SYMBOL vmlinux 0x109d9e59 inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0x109e251c tty_check_change +EXPORT_SYMBOL vmlinux 0x10ab7e05 devm_gpiod_put +EXPORT_SYMBOL vmlinux 0x10ab7e68 down_killable +EXPORT_SYMBOL vmlinux 0x10ade99e jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x10b00e11 security_path_link +EXPORT_SYMBOL vmlinux 0x10cffc85 proc_mkdir +EXPORT_SYMBOL vmlinux 0x10dcdb58 mmc_get_card +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x11267875 scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0x112fc2d5 free_mdio_bitbang +EXPORT_SYMBOL vmlinux 0x1154d2ce scsi_execute +EXPORT_SYMBOL vmlinux 0x115dad89 agp_put_bridge +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x11763fd5 PDE_DATA +EXPORT_SYMBOL vmlinux 0x1193a6f4 dma_mmap_from_coherent +EXPORT_SYMBOL vmlinux 0x11ac6173 input_release_device +EXPORT_SYMBOL vmlinux 0x11dd01ad intel_scu_ipc_command +EXPORT_SYMBOL vmlinux 0x11e2ec12 flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x11f34073 bdput +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x12121dc2 ipmi_smi_watcher_register +EXPORT_SYMBOL vmlinux 0x12358ef4 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0x123cbe92 netdev_err +EXPORT_SYMBOL vmlinux 0x123e6d81 read_code +EXPORT_SYMBOL vmlinux 0x12705056 blk_start_queue +EXPORT_SYMBOL vmlinux 0x12804b31 __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x128a5cf9 complete_all +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12b2c51d i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x12da5bb2 __kmalloc +EXPORT_SYMBOL vmlinux 0x12dc8dbb dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x12f4f682 dev_close +EXPORT_SYMBOL vmlinux 0x131c5f6e filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x132174e0 gen10g_config_aneg +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x13471e97 intel_gmch_probe +EXPORT_SYMBOL vmlinux 0x1348760d ipmi_request_settime +EXPORT_SYMBOL vmlinux 0x136bc4ca dquot_drop +EXPORT_SYMBOL vmlinux 0x1387400e posix_test_lock +EXPORT_SYMBOL vmlinux 0x13916c88 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13e50642 read_cache_page_async +EXPORT_SYMBOL vmlinux 0x13ee1574 netlink_broadcast +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x13f7e2d1 padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x140558e0 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x1420b379 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x1436aef4 __lock_buffer +EXPORT_SYMBOL vmlinux 0x14757485 kfree_skb_list +EXPORT_SYMBOL vmlinux 0x1478a11f input_open_device +EXPORT_SYMBOL vmlinux 0x148fa42f i8042_install_filter +EXPORT_SYMBOL vmlinux 0x14a78365 x86_hyper +EXPORT_SYMBOL vmlinux 0x14aa680a mount_single +EXPORT_SYMBOL vmlinux 0x14b49155 pci_request_regions +EXPORT_SYMBOL vmlinux 0x14d2046a ndo_dflt_bridge_getlink +EXPORT_SYMBOL vmlinux 0x150389d6 acpi_processor_power_init_bm_check +EXPORT_SYMBOL vmlinux 0x1514761b neigh_table_init +EXPORT_SYMBOL vmlinux 0x15250735 pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x152cb04f tcp_shutdown +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x1551dc51 bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x1573814a gen_new_estimator +EXPORT_SYMBOL vmlinux 0x15c9dcd3 mfd_add_devices +EXPORT_SYMBOL vmlinux 0x15d22fde blk_free_tags +EXPORT_SYMBOL vmlinux 0x15e58fd3 dquot_commit +EXPORT_SYMBOL vmlinux 0x15f1e1e1 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x15f571ec blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x160ea4c8 sfi_disabled +EXPORT_SYMBOL vmlinux 0x16305289 warn_slowpath_null +EXPORT_SYMBOL vmlinux 0x1634caff find_or_create_page +EXPORT_SYMBOL vmlinux 0x1646c243 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0x164cbc7a lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0x1651097e textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x167e7f9d __get_user_1 +EXPORT_SYMBOL vmlinux 0x168f1082 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x16d9f5c5 textsearch_unregister +EXPORT_SYMBOL vmlinux 0x16db7f46 scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL vmlinux 0x16ea5d9f lockref_get +EXPORT_SYMBOL vmlinux 0x16edd0c2 generic_file_aio_read +EXPORT_SYMBOL vmlinux 0x16eea816 xfrm_state_add +EXPORT_SYMBOL vmlinux 0x170c25ee acpi_get_next_object +EXPORT_SYMBOL vmlinux 0x17195a7d secpath_dup +EXPORT_SYMBOL vmlinux 0x1768b576 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x176fa965 lro_flush_all +EXPORT_SYMBOL vmlinux 0x1790d76b _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0x17a33588 dquot_quota_off +EXPORT_SYMBOL vmlinux 0x17a49637 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17c77bc7 tcp_parse_options +EXPORT_SYMBOL vmlinux 0x17cb8a1a call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x17dc5e55 ip6_route_output +EXPORT_SYMBOL vmlinux 0x17dd0705 iput +EXPORT_SYMBOL vmlinux 0x17e873a3 skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x17f3f5b7 lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x17fa81cd __idr_get_new_above +EXPORT_SYMBOL vmlinux 0x17fdea61 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x18198cd6 agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0x1826f089 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x184e6c85 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x185beb0a seq_release +EXPORT_SYMBOL vmlinux 0x18706428 skb_copy_datagram_const_iovec +EXPORT_SYMBOL vmlinux 0x187c3b21 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18b3da0c backlight_force_update +EXPORT_SYMBOL vmlinux 0x18cdcc7f xfrm_lookup +EXPORT_SYMBOL vmlinux 0x18d5a01c dev_set_group +EXPORT_SYMBOL vmlinux 0x18d96501 atomic64_dec_if_positive_cx8 +EXPORT_SYMBOL vmlinux 0x18da4625 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x18f05b0c input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0x190a982b jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x193878a8 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x1952dd14 arp_xmit +EXPORT_SYMBOL vmlinux 0x1961b633 swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0x19643526 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x1983d904 con_copy_unimap +EXPORT_SYMBOL vmlinux 0x198d56d0 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19a373f6 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x19a9e62b complete +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19cd57a1 simple_empty +EXPORT_SYMBOL vmlinux 0x19f901b1 netpoll_print_options +EXPORT_SYMBOL vmlinux 0x1a0d0d88 skb_insert +EXPORT_SYMBOL vmlinux 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL vmlinux 0x1a45cb6c acpi_disabled +EXPORT_SYMBOL vmlinux 0x1a4fea3f lockref_mark_dead +EXPORT_SYMBOL vmlinux 0x1a588006 fsync_bdev +EXPORT_SYMBOL vmlinux 0x1a63af34 vga_switcheroo_process_delayed_switch +EXPORT_SYMBOL vmlinux 0x1a725b41 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x1a7b2f90 framebuffer_release +EXPORT_SYMBOL vmlinux 0x1a82c724 skb_copy_and_csum_datagram_iovec +EXPORT_SYMBOL vmlinux 0x1aa93bf2 __quota_error +EXPORT_SYMBOL vmlinux 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL vmlinux 0x1ace138d bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0x1ad6fa1c jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x1ae14ef5 _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x1af0695b set_nlink +EXPORT_SYMBOL vmlinux 0x1af765c7 xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b0ac272 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b2c663c dev_crit +EXPORT_SYMBOL vmlinux 0x1b351f8a dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x1b4edc58 start_tty +EXPORT_SYMBOL vmlinux 0x1b570d23 acpi_warning +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b76f7be i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1b9e0ff1 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x1b9e3bac pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0x1bc01e90 sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x1bc3bba3 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x1bd1bea4 ll_rw_block +EXPORT_SYMBOL vmlinux 0x1bd269d8 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x1be0b155 __locks_copy_lock +EXPORT_SYMBOL vmlinux 0x1c021eb5 pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x1c0b9bbf tty_unlock +EXPORT_SYMBOL vmlinux 0x1c114abc unregister_netdev +EXPORT_SYMBOL vmlinux 0x1c13c120 genl_unregister_family +EXPORT_SYMBOL vmlinux 0x1c20dc65 md_error +EXPORT_SYMBOL vmlinux 0x1c219a4e dev_alert +EXPORT_SYMBOL vmlinux 0x1c43200f check_submounts_and_drop +EXPORT_SYMBOL vmlinux 0x1c4a847f blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x1c527158 pipe_unlock +EXPORT_SYMBOL vmlinux 0x1c8a04b0 acpi_reset +EXPORT_SYMBOL vmlinux 0x1c941c9a bio_pair_release +EXPORT_SYMBOL vmlinux 0x1cc4f049 sock_setsockopt +EXPORT_SYMBOL vmlinux 0x1ccae1c2 sk_free +EXPORT_SYMBOL vmlinux 0x1ce71c81 account_page_redirty +EXPORT_SYMBOL vmlinux 0x1cf1a902 freezing_slow_path +EXPORT_SYMBOL vmlinux 0x1d3279b4 scsi_block_requests +EXPORT_SYMBOL vmlinux 0x1d38ad54 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x1d463e6f input_grab_device +EXPORT_SYMBOL vmlinux 0x1d4ff032 uart_get_divisor +EXPORT_SYMBOL vmlinux 0x1d9cf87a unregister_key_type +EXPORT_SYMBOL vmlinux 0x1da14a41 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x1db17d3f xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1de4b1a9 agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0x1de74f72 acpi_execute_simple_method +EXPORT_SYMBOL vmlinux 0x1df3ebba phy_driver_register +EXPORT_SYMBOL vmlinux 0x1e047854 warn_slowpath_fmt +EXPORT_SYMBOL vmlinux 0x1e0c2be4 ioremap_wc +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e34c2b7 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x1e3b6c82 fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e739062 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x1e913766 address_space_init_once +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ec3bed9 hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0x1ec4eb34 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x1eea414a ipmi_get_smi_info +EXPORT_SYMBOL vmlinux 0x1f013ebb input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x1f09a226 uart_add_one_port +EXPORT_SYMBOL vmlinux 0x1f1df270 eisa_driver_register +EXPORT_SYMBOL vmlinux 0x1f2b5f4f netdev_info +EXPORT_SYMBOL vmlinux 0x1f39f078 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x1f3ade03 inet_release +EXPORT_SYMBOL vmlinux 0x1f3d7671 scsi_register_driver +EXPORT_SYMBOL vmlinux 0x1f4f4c48 skb_clone +EXPORT_SYMBOL vmlinux 0x1f592db3 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x1f64365f __seq_open_private +EXPORT_SYMBOL vmlinux 0x1f689076 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x1f7b732c pci_enable_obff +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1f81d4fd pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x1fa957bb xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x1faa3161 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x1fb8433d blk_mq_alloc_single_hw_queue +EXPORT_SYMBOL vmlinux 0x1fb9f79c scsi_scan_target +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fc605d2 agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fd52338 inet_frag_destroy +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 0x2005e68a acpi_remove_fixed_event_handler +EXPORT_SYMBOL vmlinux 0x20092385 acpi_enter_sleep_state_s4bios +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x20212af0 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x202f4e92 acpi_extract_package +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x204d580c sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x2074ea57 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x208739f6 acpi_load_table +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20a992b4 poll_freewait +EXPORT_SYMBOL vmlinux 0x20b2bb2d param_array_ops +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20c6192f intel_scu_ipc_ioread32 +EXPORT_SYMBOL vmlinux 0x20d3c41d ip6_frag_match +EXPORT_SYMBOL vmlinux 0x20e599c5 blkdev_fsync +EXPORT_SYMBOL vmlinux 0x20fec8b0 rtnl_notify +EXPORT_SYMBOL vmlinux 0x215ebd78 bitrev16 +EXPORT_SYMBOL vmlinux 0x2168f66f security_path_symlink +EXPORT_SYMBOL vmlinux 0x217dda13 flex_array_get +EXPORT_SYMBOL vmlinux 0x217fb36a neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x218ba2a7 genphy_read_status +EXPORT_SYMBOL vmlinux 0x2199337a down_timeout +EXPORT_SYMBOL vmlinux 0x21a828ce file_ns_capable +EXPORT_SYMBOL vmlinux 0x21b6a706 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0x21cf32cf skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x21e067ed dma_pool_create +EXPORT_SYMBOL vmlinux 0x21e0ea22 acpi_get_id +EXPORT_SYMBOL vmlinux 0x21fb443e _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x221163ae __scsi_add_device +EXPORT_SYMBOL vmlinux 0x2217b5ea mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x22395e21 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x224391c6 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x224a048f __free_pages +EXPORT_SYMBOL vmlinux 0x2256fafa div64_u64_rem +EXPORT_SYMBOL vmlinux 0x2268909a kernel_sendpage +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x227a3c88 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x2282a793 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x229a6b4c jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x22abc104 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22d92022 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x22df1758 pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0x22e399e4 scsi_put_command +EXPORT_SYMBOL vmlinux 0x22ed2a50 commit_creds +EXPORT_SYMBOL vmlinux 0x22f9555e generic_fillattr +EXPORT_SYMBOL vmlinux 0x2300a3f0 tcp_connect +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x232d0bbe register_nls +EXPORT_SYMBOL vmlinux 0x23444ce3 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x23485a96 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x234d9b52 dev_add_pack +EXPORT_SYMBOL vmlinux 0x23532c4d ftrace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x2379e600 pci_reenable_device +EXPORT_SYMBOL vmlinux 0x23867921 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x2394db67 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23afd1ef ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x23b79006 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c5d04a padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x23c8f257 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x23cdec30 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x23df2f66 dquot_scan_active +EXPORT_SYMBOL vmlinux 0x23e681c3 phy_detach +EXPORT_SYMBOL vmlinux 0x23f4a246 simple_dir_operations +EXPORT_SYMBOL vmlinux 0x23f563e2 zero_fill_bio +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x240d6e8c bio_map_user +EXPORT_SYMBOL vmlinux 0x24118a17 pci_iounmap +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x242708a8 kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0x2428b454 kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x24326790 pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x2436a1e4 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x24455934 inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x246617af elevator_change +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x2484328b acpi_match_device_ids +EXPORT_SYMBOL vmlinux 0x2490a4cc ida_remove +EXPORT_SYMBOL vmlinux 0x24aa3f87 pci_release_region +EXPORT_SYMBOL vmlinux 0x24b4a000 force_sig +EXPORT_SYMBOL vmlinux 0x24c804f6 udp_seq_open +EXPORT_SYMBOL vmlinux 0x24d7b4eb cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x24e52ebf i2c_transfer +EXPORT_SYMBOL vmlinux 0x24eaf15b locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x24f169fc down_read_trylock +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x25297da2 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x252bac9b kernel_connect +EXPORT_SYMBOL vmlinux 0x253e3f0e generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x253f0a74 __nlmsg_put +EXPORT_SYMBOL vmlinux 0x254111e4 acpi_bus_get_status +EXPORT_SYMBOL vmlinux 0x254669c1 vfs_readv +EXPORT_SYMBOL vmlinux 0x25638903 phy_device_register +EXPORT_SYMBOL vmlinux 0x2564ecfc netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0x256e365f mdiobus_register +EXPORT_SYMBOL vmlinux 0x25703521 input_register_handle +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x2588327f dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x25a17434 mapping_tagged +EXPORT_SYMBOL vmlinux 0x25c1a927 dcache_dir_close +EXPORT_SYMBOL vmlinux 0x25c3f54a unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x25c677c4 mac_pton +EXPORT_SYMBOL vmlinux 0x25da132e write_cache_pages +EXPORT_SYMBOL vmlinux 0x25e61bea blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x25e8e904 invalidate_partition +EXPORT_SYMBOL vmlinux 0x25ee1b01 mount_subtree +EXPORT_SYMBOL vmlinux 0x25f4697f setattr_copy +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x263c46cf jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x2642aab8 skb_copy_expand +EXPORT_SYMBOL vmlinux 0x2646c7b0 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x265cd3bf bio_clone_bioset +EXPORT_SYMBOL vmlinux 0x266dcd30 locks_free_lock +EXPORT_SYMBOL vmlinux 0x2671311d mmc_hw_reset_check +EXPORT_SYMBOL vmlinux 0x26852f8e ida_simple_remove +EXPORT_SYMBOL vmlinux 0x2685c3d7 __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x26b0f74f vfs_setpos +EXPORT_SYMBOL vmlinux 0x26b16cf8 give_up_console +EXPORT_SYMBOL vmlinux 0x26bb950b __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x26df9a29 md_flush_request +EXPORT_SYMBOL vmlinux 0x26e2a676 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26f0453a blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x27095974 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0x270d7a33 vfs_symlink +EXPORT_SYMBOL vmlinux 0x271cba95 acpi_bus_private_data_handler +EXPORT_SYMBOL vmlinux 0x271d0f8d inet_del_protocol +EXPORT_SYMBOL vmlinux 0x271ebb6b phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x2721c945 tty_kref_put +EXPORT_SYMBOL vmlinux 0x2726db4a pnp_release_card_device +EXPORT_SYMBOL vmlinux 0x272d394e mtrr_del +EXPORT_SYMBOL vmlinux 0x2731a9d1 sock_wake_async +EXPORT_SYMBOL vmlinux 0x273351be amd_northbridges +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x275635ec ip_cmsg_recv +EXPORT_SYMBOL vmlinux 0x275c3456 make_kprojid +EXPORT_SYMBOL vmlinux 0x27779a8f key_type_keyring +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x278989e7 input_register_device +EXPORT_SYMBOL vmlinux 0x278b6644 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x27a90db4 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x27ae7d0c ec_transaction +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27cd4bb8 locks_copy_lock +EXPORT_SYMBOL vmlinux 0x27d24267 generic_setlease +EXPORT_SYMBOL vmlinux 0x27dbf3ae sock_update_memcg +EXPORT_SYMBOL vmlinux 0x27e9a2ce i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x28039d05 bio_copy_data +EXPORT_SYMBOL vmlinux 0x280aa17a dst_destroy +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x28257674 vga_switcheroo_init_domain_pm_ops +EXPORT_SYMBOL vmlinux 0x283bd775 net_dma_find_channel +EXPORT_SYMBOL vmlinux 0x28457480 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x284cf4d1 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x284f1e8b xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x2866a807 mark_page_accessed +EXPORT_SYMBOL vmlinux 0x2866b072 __invalidate_device +EXPORT_SYMBOL vmlinux 0x289ccacd dquot_commit_info +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28b002ba fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x28b715a6 isapnp_cfg_end +EXPORT_SYMBOL vmlinux 0x28c0515c netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x28ee7fac tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x28f0f0a2 netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x298a5a4b create_empty_buffers +EXPORT_SYMBOL vmlinux 0x299abed6 read_cache_pages +EXPORT_SYMBOL vmlinux 0x29fdda53 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x2a0dbcbb clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a48e8bf blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x2a5def2f intel_scu_ipc_iowrite32 +EXPORT_SYMBOL vmlinux 0x2a79ac13 clkdev_add +EXPORT_SYMBOL vmlinux 0x2a84a97c skb_dequeue +EXPORT_SYMBOL vmlinux 0x2a9be584 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2abb157e rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x2ac0f2bb dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x2ac10977 __i2c_transfer +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2ad2ca2d scsi_release_buffers +EXPORT_SYMBOL vmlinux 0x2af2f206 generic_make_request +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b1466f1 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x2b1f4c80 spi_attach_transport +EXPORT_SYMBOL vmlinux 0x2b214634 unlock_new_inode +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b358a0d agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0x2b5ad97b first_ec +EXPORT_SYMBOL vmlinux 0x2b6b6dcd input_free_device +EXPORT_SYMBOL vmlinux 0x2b6ecab3 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0x2b7414b7 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x2b9798b3 generic_setxattr +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 0x2bc95bd4 memset +EXPORT_SYMBOL vmlinux 0x2beeba06 inode_dio_done +EXPORT_SYMBOL vmlinux 0x2bf8d577 sleep_on_timeout +EXPORT_SYMBOL vmlinux 0x2bfeb410 acpi_get_handle +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c488d50 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0x2c4d638b vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x2c76d078 __frontswap_load +EXPORT_SYMBOL vmlinux 0x2c900d91 cpufreq_put_global_kobject +EXPORT_SYMBOL vmlinux 0x2ca319a6 wrmsrl_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x2ca5c89f tty_unregister_device +EXPORT_SYMBOL vmlinux 0x2cbe6f74 alloc_pci_dev +EXPORT_SYMBOL vmlinux 0x2cc2e0f5 d_alloc_name +EXPORT_SYMBOL vmlinux 0x2cc54d5f single_open_size +EXPORT_SYMBOL vmlinux 0x2cc840c9 simple_transaction_set +EXPORT_SYMBOL vmlinux 0x2cf9eec2 scsi_print_result +EXPORT_SYMBOL vmlinux 0x2d03c10d posix_acl_create +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d144e21 rdmsrl_on_cpu +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d31b081 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d37342e cpu_online_mask +EXPORT_SYMBOL vmlinux 0x2d89342a scsi_show_sense_hdr +EXPORT_SYMBOL vmlinux 0x2d8f01bf key_alloc +EXPORT_SYMBOL vmlinux 0x2daaaba9 param_get_byte +EXPORT_SYMBOL vmlinux 0x2daaeebd mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x2daf4d8c swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x2dccb34f phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x2dd16564 arch_register_cpu +EXPORT_SYMBOL vmlinux 0x2de1d33e km_policy_expired +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 0x2df49647 irq_set_chip +EXPORT_SYMBOL vmlinux 0x2e074ea8 security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e2ab8c3 lock_sock_nested +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e398b29 netif_skb_dev_features +EXPORT_SYMBOL vmlinux 0x2e60bace memcpy +EXPORT_SYMBOL vmlinux 0x2e713b1a idr_init +EXPORT_SYMBOL vmlinux 0x2e92994e phy_start +EXPORT_SYMBOL vmlinux 0x2e9a0b9d make_kuid +EXPORT_SYMBOL vmlinux 0x2ea7f3bd xfrm_register_km +EXPORT_SYMBOL vmlinux 0x2eacb03e nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0x2ebca0e1 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x2ec524ad __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x2ed00533 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x2ed8e014 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0x2eeceb42 sk_chk_filter +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2efd7f6b consume_skb +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f064b55 allocate_resource +EXPORT_SYMBOL vmlinux 0x2f086fb5 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x2f0de9bf kernel_getpeername +EXPORT_SYMBOL vmlinux 0x2f1f7fb1 vfs_fsync +EXPORT_SYMBOL vmlinux 0x2f384db3 acpi_is_video_device +EXPORT_SYMBOL vmlinux 0x2f3c6e65 inet_stream_ops +EXPORT_SYMBOL vmlinux 0x2f42bb64 padata_alloc +EXPORT_SYMBOL vmlinux 0x2f7bbee0 swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0x2f851b52 netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x2fa17827 block_write_end +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fb7f148 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0x2fcbbe33 dma_async_device_register +EXPORT_SYMBOL vmlinux 0x2fceea64 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2fec0d4c kobject_get +EXPORT_SYMBOL vmlinux 0x301004b2 sock_from_file +EXPORT_SYMBOL vmlinux 0x30214faf md_unregister_thread +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x306718d2 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30b8ed58 led_set_brightness +EXPORT_SYMBOL vmlinux 0x30cada8f radix_tree_next_hole +EXPORT_SYMBOL vmlinux 0x30d7bdd7 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x30fca6b9 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310917fe sort +EXPORT_SYMBOL vmlinux 0x312824e0 hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x312a6961 cont_write_begin +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3146e423 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x315c65fd zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x31604005 skb_tx_error +EXPORT_SYMBOL vmlinux 0x3162df77 skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x3163f8ce blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x3166f4c0 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x317e6ea0 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x318cadb1 reciprocal_value +EXPORT_SYMBOL vmlinux 0x3191f109 __krealloc +EXPORT_SYMBOL vmlinux 0x31c18cc9 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x31e76b57 recalibrate_cpu_khz +EXPORT_SYMBOL vmlinux 0x31f0bb78 __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x31f554cf blk_mq_free_queue +EXPORT_SYMBOL vmlinux 0x31ffb269 freeze_bdev +EXPORT_SYMBOL vmlinux 0x3202435a wrmsr_safe_regs +EXPORT_SYMBOL vmlinux 0x322f48d4 abx500_dump_all_banks +EXPORT_SYMBOL vmlinux 0x32618f3b scsi_allocate_command +EXPORT_SYMBOL vmlinux 0x326425ca pci_unmap_biosrom +EXPORT_SYMBOL vmlinux 0x32c3c372 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x32cea339 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0x32e77939 rt6_lookup +EXPORT_SYMBOL vmlinux 0x32edcbf3 sg_miter_start +EXPORT_SYMBOL vmlinux 0x32eeaded _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0x33057a71 scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x331831be scsi_setup_fs_cmnd +EXPORT_SYMBOL vmlinux 0x33187b1e pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0x33309e38 directly_mappable_cdev_bdi +EXPORT_SYMBOL vmlinux 0x3345e2ea get_super +EXPORT_SYMBOL vmlinux 0x336b0751 agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0x33748ecb security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x337cce46 put_cmsg +EXPORT_SYMBOL vmlinux 0x339a164c da903x_query_status +EXPORT_SYMBOL vmlinux 0x33ad1452 eisa_driver_unregister +EXPORT_SYMBOL vmlinux 0x33b7533a i2c_clients_command +EXPORT_SYMBOL vmlinux 0x33ba5cd4 param_ops_bool +EXPORT_SYMBOL vmlinux 0x33bb83ea inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x33c4ef9c bdi_destroy +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33c95dc4 dev_activate +EXPORT_SYMBOL vmlinux 0x33dbfd93 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x33ef5941 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x340a28c1 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x341f631e load_nls_default +EXPORT_SYMBOL vmlinux 0x342f60fe apm_info +EXPORT_SYMBOL vmlinux 0x343149af d_drop +EXPORT_SYMBOL vmlinux 0x3437d4a9 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x345bdd02 dev_change_carrier +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x347eb9bd param_set_bool +EXPORT_SYMBOL vmlinux 0x349853b4 skb_trim +EXPORT_SYMBOL vmlinux 0x349b160f register_netdev +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34d932c5 pci_enable_ido +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x351410cd vga_switcheroo_client_fb_set +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x35178bed kill_anon_super +EXPORT_SYMBOL vmlinux 0x351ee630 genphy_suspend +EXPORT_SYMBOL vmlinux 0x353e21e3 acpi_bios_warning +EXPORT_SYMBOL vmlinux 0x35415b3e lock_may_read +EXPORT_SYMBOL vmlinux 0x35420688 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x356ee3d4 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x35a24a33 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x35a55fb4 mmc_start_req +EXPORT_SYMBOL vmlinux 0x35a66d0c bdgrab +EXPORT_SYMBOL vmlinux 0x35c46c32 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x35d4e5d4 kmap +EXPORT_SYMBOL vmlinux 0x35f48de5 nla_reserve +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x360b8d16 x86_cpu_to_apicid +EXPORT_SYMBOL vmlinux 0x36381cfe simple_unlink +EXPORT_SYMBOL vmlinux 0x36552561 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x36648916 registered_fb +EXPORT_SYMBOL vmlinux 0x367c5531 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0x3686ea09 spi_print_msg +EXPORT_SYMBOL vmlinux 0x368f7f0a devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x369a3766 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x36a58ab1 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x36a5f194 phy_connect_direct +EXPORT_SYMBOL vmlinux 0x36aad357 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x36b54ca8 d_delete +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36c6af51 intel_scu_ipc_iowrite8 +EXPORT_SYMBOL vmlinux 0x36d7fbab d_find_any_alias +EXPORT_SYMBOL vmlinux 0x36e0d451 tty_port_destroy +EXPORT_SYMBOL vmlinux 0x36e360e3 __hw_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x36ecd6e1 idr_remove +EXPORT_SYMBOL vmlinux 0x36f494f5 set_disk_ro +EXPORT_SYMBOL vmlinux 0x370b532d bmap +EXPORT_SYMBOL vmlinux 0x3719618d nf_log_set +EXPORT_SYMBOL vmlinux 0x37246415 acpi_pm_device_sleep_state +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x376f2cad fget +EXPORT_SYMBOL vmlinux 0x37818a11 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x379fc30b bio_endio +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37d58cba inet6_ioctl +EXPORT_SYMBOL vmlinux 0x37d81ac1 clk_add_alias +EXPORT_SYMBOL vmlinux 0x37db8f19 dmi_get_date +EXPORT_SYMBOL vmlinux 0x37de6c03 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0x37e74642 get_jiffies_64 +EXPORT_SYMBOL vmlinux 0x37f3872a block_write_begin +EXPORT_SYMBOL vmlinux 0x37f614b7 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x37f96079 pcim_iomap_regions_request_all +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 0x38230eba phy_attach_direct +EXPORT_SYMBOL vmlinux 0x38308309 pnp_unregister_card_driver +EXPORT_SYMBOL vmlinux 0x3834ac96 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0x384829d5 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x386c41a2 netpoll_rx_disable +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388799f6 unregister_kmmio_probe +EXPORT_SYMBOL vmlinux 0x388f9128 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x389b5ee6 fb_set_var +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38cc258d blk_rq_init +EXPORT_SYMBOL vmlinux 0x38f446ba sock_alloc_file +EXPORT_SYMBOL vmlinux 0x38f62c90 acpi_device_hid +EXPORT_SYMBOL vmlinux 0x3912c217 mmc_free_host +EXPORT_SYMBOL vmlinux 0x393460b3 generic_listxattr +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x3946d2fa tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x395bf644 __pci_register_driver +EXPORT_SYMBOL vmlinux 0x396e2157 sg_miter_stop +EXPORT_SYMBOL vmlinux 0x398efb38 nla_put +EXPORT_SYMBOL vmlinux 0x39a055f3 acpi_remove_gpe_handler +EXPORT_SYMBOL vmlinux 0x39a74c0f generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x39a7dab0 lro_flush_pkt +EXPORT_SYMBOL vmlinux 0x39b0e6e7 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x39b84967 mmc_can_trim +EXPORT_SYMBOL vmlinux 0x39bec3cb netif_napi_del +EXPORT_SYMBOL vmlinux 0x39c8217a netdev_notice +EXPORT_SYMBOL vmlinux 0x39eb8e0c dput +EXPORT_SYMBOL vmlinux 0x3a013b7d remove_wait_queue +EXPORT_SYMBOL vmlinux 0x3a05e9f8 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x3a08475f platform_thermal_notify +EXPORT_SYMBOL vmlinux 0x3a18c728 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x3a32839e intel_gtt_chipset_flush +EXPORT_SYMBOL vmlinux 0x3a488e92 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x3a7f5304 simple_release_fs +EXPORT_SYMBOL vmlinux 0x3a8e29d8 dev_driver_string +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3ab1d9f2 release_sock +EXPORT_SYMBOL vmlinux 0x3ac69eda pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x3acdecf1 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x3ad1b785 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x3afdcaa1 tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0x3b1a2e3a textsearch_prepare +EXPORT_SYMBOL vmlinux 0x3b1dac0c sock_sendmsg +EXPORT_SYMBOL vmlinux 0x3b1fe42d remove_proc_subtree +EXPORT_SYMBOL vmlinux 0x3b201620 machine_real_restart +EXPORT_SYMBOL vmlinux 0x3b20eea1 nf_log_unset +EXPORT_SYMBOL vmlinux 0x3b2b96ef sock_no_bind +EXPORT_SYMBOL vmlinux 0x3b3373ad __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x3b40d235 input_close_device +EXPORT_SYMBOL vmlinux 0x3b55c169 write_inode_now +EXPORT_SYMBOL vmlinux 0x3b59c27b wireless_spy_update +EXPORT_SYMBOL vmlinux 0x3b77f7ce dma_set_mask +EXPORT_SYMBOL vmlinux 0x3b83ecba vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x3b9e22eb __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x3bd1b1f6 msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x3be37e06 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x3bef03b9 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x3c3d510f input_unregister_device +EXPORT_SYMBOL vmlinux 0x3c63481c sk_capable +EXPORT_SYMBOL vmlinux 0x3c64bfed tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x3c7c9100 ilookup5 +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c9d1211 string_get_size +EXPORT_SYMBOL vmlinux 0x3ca4b697 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0x3cb3931b sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x3cb538c5 pnp_device_attach +EXPORT_SYMBOL vmlinux 0x3cc7b91a ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x3cce62b3 agp_create_memory +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3ce7a7d3 __nla_put +EXPORT_SYMBOL vmlinux 0x3ce7bdfe proto_unregister +EXPORT_SYMBOL vmlinux 0x3d090a88 netif_device_attach +EXPORT_SYMBOL vmlinux 0x3d105cb2 scsi_print_sense +EXPORT_SYMBOL vmlinux 0x3d20ee24 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x3d338716 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x3d36fd5b gen_pool_alloc +EXPORT_SYMBOL vmlinux 0x3d3fcf21 arch_debugfs_dir +EXPORT_SYMBOL vmlinux 0x3d46d97d inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x3d473525 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x3d69dd61 agp_free_memory +EXPORT_SYMBOL vmlinux 0x3d7c1ed7 msrs_alloc +EXPORT_SYMBOL vmlinux 0x3da171f9 pci_mem_start +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3ddb544e dma_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x3de32068 mdiobus_read +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e223858 tty_port_close_end +EXPORT_SYMBOL vmlinux 0x3e25cdc5 should_remove_suid +EXPORT_SYMBOL vmlinux 0x3e2ae3a8 acpi_release_global_lock +EXPORT_SYMBOL vmlinux 0x3e472199 fb_validate_mode +EXPORT_SYMBOL vmlinux 0x3e60f333 dump_align +EXPORT_SYMBOL vmlinux 0x3e7c3b26 pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e95dfd1 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x3eab3ed4 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0x3eb61899 flush_old_exec +EXPORT_SYMBOL vmlinux 0x3ebc8582 pci_disable_device +EXPORT_SYMBOL vmlinux 0x3ed63055 zlib_inflateReset +EXPORT_SYMBOL vmlinux 0x3ed6b727 have_submounts +EXPORT_SYMBOL vmlinux 0x3ef482ff sock_no_mmap +EXPORT_SYMBOL vmlinux 0x3ef78d80 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x3eff5ac2 intel_scu_ipc_writev +EXPORT_SYMBOL vmlinux 0x3f00fdbb pci_set_master +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f0bc708 alloc_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f4ad011 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x3f55c3dd __mutex_init +EXPORT_SYMBOL vmlinux 0x3f59b9aa skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x3f5f75e5 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x3f77076d ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x3f94d7fe rtnl_unicast +EXPORT_SYMBOL vmlinux 0x3f95362d max8998_write_reg +EXPORT_SYMBOL vmlinux 0x3f9f868f __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x3fa26e1b init_task +EXPORT_SYMBOL vmlinux 0x3fa58ef8 wait_for_completion +EXPORT_SYMBOL vmlinux 0x3fb894c5 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x3fbe7ad4 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x3fc77aed ida_pre_get +EXPORT_SYMBOL vmlinux 0x3fce4c17 vga_switcheroo_fini_domain_pm_ops +EXPORT_SYMBOL vmlinux 0x3fd28096 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3ff62317 local_bh_disable +EXPORT_SYMBOL vmlinux 0x4007af4d netlink_set_err +EXPORT_SYMBOL vmlinux 0x40298c62 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x4059792f print_hex_dump +EXPORT_SYMBOL vmlinux 0x405bfc16 register_xen_selfballooning +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x4097fa45 acpi_read_bit_register +EXPORT_SYMBOL vmlinux 0x409873e3 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a2d1dd dm_table_get_size +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40c770ab set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x40c89d46 acpi_get_table_by_index +EXPORT_SYMBOL vmlinux 0x40ccc315 xen_biovec_phys_mergeable +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d3f053 lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x40d5f32a jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x40df8e61 cpu_info +EXPORT_SYMBOL vmlinux 0x40f22c04 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL vmlinux 0x40f5382f mdio_bus_type +EXPORT_SYMBOL vmlinux 0x4103b76f mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x411f1968 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0x41420235 pnp_find_dev +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x415b54f8 unregister_quota_format +EXPORT_SYMBOL vmlinux 0x415b5e11 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x415c5604 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x41a09c17 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x41a12911 mntput +EXPORT_SYMBOL vmlinux 0x41ab08d2 tcp_make_synack +EXPORT_SYMBOL vmlinux 0x41b0d8f6 __dst_free +EXPORT_SYMBOL vmlinux 0x41b2193f scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x41badef9 netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x41bb2acb uart_update_timeout +EXPORT_SYMBOL vmlinux 0x41d6cb07 wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x41f318be register_console +EXPORT_SYMBOL vmlinux 0x4211c3c1 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x42162eb5 neigh_direct_output +EXPORT_SYMBOL vmlinux 0x42238b66 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x42287ddd jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x42350e8d ucs2_strlen +EXPORT_SYMBOL vmlinux 0x423b776a ipmi_create_user +EXPORT_SYMBOL vmlinux 0x423ee71c mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x4245afcc xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x425adbf4 dm_unregister_target +EXPORT_SYMBOL vmlinux 0x4260bc32 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x4274946e sock_create_kern +EXPORT_SYMBOL vmlinux 0x4292364c schedule +EXPORT_SYMBOL vmlinux 0x42977ad4 __hw_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42a27f5f bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x42ae60d4 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x42b03073 mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0x42c81938 dev_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x42c8de35 ioremap_nocache +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x4330513f jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x433559e3 set_bh_page +EXPORT_SYMBOL vmlinux 0x433ba982 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x434828f8 padata_do_parallel +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x4361b6a1 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x4381c4b7 thaw_bdev +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x4398e679 iterate_supers_type +EXPORT_SYMBOL vmlinux 0x439cb751 pv_lock_ops +EXPORT_SYMBOL vmlinux 0x43b9d782 bdi_register +EXPORT_SYMBOL vmlinux 0x43c2a9f9 vm_mmap +EXPORT_SYMBOL vmlinux 0x43d0b602 dev_uc_sync +EXPORT_SYMBOL vmlinux 0x43d49ed6 bio_copy_user +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x4400fc30 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x44049cf5 set_pages_nx +EXPORT_SYMBOL vmlinux 0x44119523 scsi_adjust_queue_depth +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x4412f973 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x44205e77 bdi_unregister +EXPORT_SYMBOL vmlinux 0x442c336a tty_free_termios +EXPORT_SYMBOL vmlinux 0x44319199 phy_drivers_register +EXPORT_SYMBOL vmlinux 0x44366cfc simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x44438b96 hex2bin +EXPORT_SYMBOL vmlinux 0x444b32ab pci_set_mwi +EXPORT_SYMBOL vmlinux 0x44540e45 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x445a8b2b tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x445b624a tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x445c72be pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x4462be58 netif_rx_ni +EXPORT_SYMBOL vmlinux 0x4480d9a6 inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0x449ae641 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0x449e2965 tty_hangup +EXPORT_SYMBOL vmlinux 0x44a69e2e rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x44aaf30f tsc_khz +EXPORT_SYMBOL vmlinux 0x44bacf14 swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x44bef6a1 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x44bfd136 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0x44c217ef netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0x44e089b3 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x44e83ffb bdi_register_dev +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44f1606d down_trylock +EXPORT_SYMBOL vmlinux 0x45081703 ec_get_handle +EXPORT_SYMBOL vmlinux 0x45095081 follow_down_one +EXPORT_SYMBOL vmlinux 0x452d2751 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x452ddd0a md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x457165a4 nobh_writepage +EXPORT_SYMBOL vmlinux 0x4576a2a0 inet6_getname +EXPORT_SYMBOL vmlinux 0x4578661a _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x457bdafc phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x45a6be13 cpufreq_sysfs_remove_file +EXPORT_SYMBOL vmlinux 0x45a7101e swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45cbd90a generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x45d0dfbc unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x45e02090 fb_class +EXPORT_SYMBOL vmlinux 0x45ed8336 find_vma +EXPORT_SYMBOL vmlinux 0x45ee298a ip_defrag +EXPORT_SYMBOL vmlinux 0x45ff57b5 elv_abort_queue +EXPORT_SYMBOL vmlinux 0x46156d29 kthread_stop +EXPORT_SYMBOL vmlinux 0x4624bed1 drop_super +EXPORT_SYMBOL vmlinux 0x4629334c __preempt_count +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +EXPORT_SYMBOL vmlinux 0x46380eb6 sock_init_data +EXPORT_SYMBOL vmlinux 0x46555736 tty_devnum +EXPORT_SYMBOL vmlinux 0x46584253 __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x46596efa linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46608fa0 getnstimeofday +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x46792958 input_set_capability +EXPORT_SYMBOL vmlinux 0x467c1c9a ip_check_defrag +EXPORT_SYMBOL vmlinux 0x467e1a58 pnp_disable_dev +EXPORT_SYMBOL vmlinux 0x468bcda6 cpumask_set_cpu_local_first +EXPORT_SYMBOL vmlinux 0x469b5694 acpi_bus_register_driver +EXPORT_SYMBOL vmlinux 0x46a6bec2 led_blink_set +EXPORT_SYMBOL vmlinux 0x46b724d9 dma_find_channel +EXPORT_SYMBOL vmlinux 0x46d26002 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x46ff3836 inetdev_by_index +EXPORT_SYMBOL vmlinux 0x470504a0 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x47438710 pci_enable_msi_block_auto +EXPORT_SYMBOL vmlinux 0x47541725 mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x4756e29e tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x475f010b acpi_purge_cached_objects +EXPORT_SYMBOL vmlinux 0x4773d439 __secpath_destroy +EXPORT_SYMBOL vmlinux 0x47785dae tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x4778947f elevator_exit +EXPORT_SYMBOL vmlinux 0x478d10b2 ht_destroy_irq +EXPORT_SYMBOL vmlinux 0x4792c572 down_interruptible +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47a10f9e xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x47b3f862 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0x47b6a10f ftrace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x47bcf84c param_set_ulong +EXPORT_SYMBOL vmlinux 0x47c83e11 d_invalidate +EXPORT_SYMBOL vmlinux 0x47c8baf4 param_ops_uint +EXPORT_SYMBOL vmlinux 0x47e6ba9e vfs_mkdir +EXPORT_SYMBOL vmlinux 0x47ffc1f0 security_inode_init_security +EXPORT_SYMBOL vmlinux 0x4802a242 __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x48034724 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x48193639 acpi_lid_open +EXPORT_SYMBOL vmlinux 0x481cb9ab acpi_enter_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x4826d288 tc_classify +EXPORT_SYMBOL vmlinux 0x482a2a49 param_set_charp +EXPORT_SYMBOL vmlinux 0x483f2d94 netdev_printk +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x486d2f29 dqstats +EXPORT_SYMBOL vmlinux 0x48754e7b page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x487d7c9e acpi_lock_ac_dir +EXPORT_SYMBOL vmlinux 0x48a830e8 clear_bdi_congested +EXPORT_SYMBOL vmlinux 0x48bbaba7 nf_log_register +EXPORT_SYMBOL vmlinux 0x48f0269d pci_restore_state +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x4925459b buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0x49278bb3 tcp_child_process +EXPORT_SYMBOL vmlinux 0x492ccd99 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x494dcd15 eth_validate_addr +EXPORT_SYMBOL vmlinux 0x494dd541 tcp_syn_flood_action +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x4963ef79 try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x496843f1 __break_lease +EXPORT_SYMBOL vmlinux 0x4981a911 rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0x499f721d devm_gpiod_get +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49b163b8 acpi_bus_scan +EXPORT_SYMBOL vmlinux 0x49c76b6c ip_ct_attach +EXPORT_SYMBOL vmlinux 0x49e78c0a blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x49f33029 mdiobus_free +EXPORT_SYMBOL vmlinux 0x49f97417 tty_register_device +EXPORT_SYMBOL vmlinux 0x4a139b2b elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x4a17ccc1 inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0x4a28990a pci_find_capability +EXPORT_SYMBOL vmlinux 0x4a358252 __bitmap_subset +EXPORT_SYMBOL vmlinux 0x4a35a7c7 twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x4a390038 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x4a47ae19 d_find_alias +EXPORT_SYMBOL vmlinux 0x4a4a92e0 get_user_pages +EXPORT_SYMBOL vmlinux 0x4a4f1342 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x4a6f80b6 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x4a843e62 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0x4ac09930 skb_split +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4affd016 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b120ebc neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x4b137725 fail_migrate_page +EXPORT_SYMBOL vmlinux 0x4b1baf68 acpi_unlock_ac_dir +EXPORT_SYMBOL vmlinux 0x4b1c6b9d mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b34fbf5 block_all_signals +EXPORT_SYMBOL vmlinux 0x4b37240c __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x4b484b4e read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b6c427e eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0x4b81bd7c __vlan_find_dev_deep +EXPORT_SYMBOL vmlinux 0x4ba62bb5 agp_enable +EXPORT_SYMBOL vmlinux 0x4baaf4f0 pagevec_lookup +EXPORT_SYMBOL vmlinux 0x4badfd83 pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x4bc3c8f6 blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0x4bc4d5a5 __cond_resched_lock +EXPORT_SYMBOL vmlinux 0x4bdf761f pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0x4be85a03 memweight +EXPORT_SYMBOL vmlinux 0x4bf5b26b dma_alloc_from_coherent +EXPORT_SYMBOL vmlinux 0x4bf7b27d inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0x4c1182cb bitmap_scnprintf +EXPORT_SYMBOL vmlinux 0x4c119c9c generic_file_mmap +EXPORT_SYMBOL vmlinux 0x4c194799 i2c_register_driver +EXPORT_SYMBOL vmlinux 0x4c2ae700 strnstr +EXPORT_SYMBOL vmlinux 0x4c2ea5a2 sock_release +EXPORT_SYMBOL vmlinux 0x4c407569 netpoll_rx_enable +EXPORT_SYMBOL vmlinux 0x4c64ad19 vfs_unlink +EXPORT_SYMBOL vmlinux 0x4c9479b6 tcf_em_register +EXPORT_SYMBOL vmlinux 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL vmlinux 0x4caf1752 from_kuid +EXPORT_SYMBOL vmlinux 0x4cb07988 dm_put_device +EXPORT_SYMBOL vmlinux 0x4cbbd171 __bitmap_weight +EXPORT_SYMBOL vmlinux 0x4cc4aed4 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x4cd87ab9 generic_file_splice_write +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4ce0f13f pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x4cec1986 nf_log_packet +EXPORT_SYMBOL vmlinux 0x4cf5a46d __put_cred +EXPORT_SYMBOL vmlinux 0x4cfb34ce phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x4d019d20 key_invalidate +EXPORT_SYMBOL vmlinux 0x4d0ddf60 netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0x4d24913d i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x4d32da0e seq_puts +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d3d1373 generic_write_checks +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d68d598 devm_iounmap +EXPORT_SYMBOL vmlinux 0x4d736578 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x4d9127ba fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4da95bf3 put_io_context +EXPORT_SYMBOL vmlinux 0x4daa360a acpi_resource_to_address64 +EXPORT_SYMBOL vmlinux 0x4dc514c7 kobject_put +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4dedd47c filemap_fdatawait +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4e22b23c mpage_writepages +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e36b75a ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x4e3ef819 neigh_parms_release +EXPORT_SYMBOL vmlinux 0x4e4aa3c6 fb_set_suspend +EXPORT_SYMBOL vmlinux 0x4e55be8a nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x4e64cbe5 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x4e67ed66 kill_bdev +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e830a3e strnicmp +EXPORT_SYMBOL vmlinux 0x4ea25709 dql_reset +EXPORT_SYMBOL vmlinux 0x4eb8e7c2 tcp_poll +EXPORT_SYMBOL vmlinux 0x4f181f2f netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f40503c serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x4f476e96 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x4f4e93d8 bdev_read_only +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f6b400b _copy_from_user +EXPORT_SYMBOL vmlinux 0x4f783f30 acpi_read +EXPORT_SYMBOL vmlinux 0x4f8b5ddb _copy_to_user +EXPORT_SYMBOL vmlinux 0x4fc09449 mutex_trylock +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4feadf31 dev_printk +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x5013fd0e i2c_master_recv +EXPORT_SYMBOL vmlinux 0x504101ad set_blocksize +EXPORT_SYMBOL vmlinux 0x50468eaa xfrm_register_type +EXPORT_SYMBOL vmlinux 0x504bdb2e request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x50529870 acpi_get_gpe_status +EXPORT_SYMBOL vmlinux 0x50559bc0 alloc_fddidev +EXPORT_SYMBOL vmlinux 0x50576cd9 sg_miter_next +EXPORT_SYMBOL vmlinux 0x50784c83 account_page_writeback +EXPORT_SYMBOL vmlinux 0x5087a2cf sk_ns_capable +EXPORT_SYMBOL vmlinux 0x5096ac1e ata_print_version +EXPORT_SYMBOL vmlinux 0x509b64ea acpi_has_method +EXPORT_SYMBOL vmlinux 0x50d68377 arch_phys_wc_del +EXPORT_SYMBOL vmlinux 0x50da9e77 serio_interrupt +EXPORT_SYMBOL vmlinux 0x50e4887b serio_rescan +EXPORT_SYMBOL vmlinux 0x50eedeb8 printk +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x513a8e99 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x513bf511 __ps2_command +EXPORT_SYMBOL vmlinux 0x513e8817 is_bad_inode +EXPORT_SYMBOL vmlinux 0x5152e605 memcmp +EXPORT_SYMBOL vmlinux 0x5153cac4 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x51563cd0 pnpbios_protocol +EXPORT_SYMBOL vmlinux 0x516d7c5b inet_recvmsg +EXPORT_SYMBOL vmlinux 0x517755ec blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0x51776dff mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x5186518f profile_pc +EXPORT_SYMBOL vmlinux 0x518cea86 put_disk +EXPORT_SYMBOL vmlinux 0x519a0f59 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x51a14b5a crypto_sha256_update +EXPORT_SYMBOL vmlinux 0x51abd12f bio_sector_offset +EXPORT_SYMBOL vmlinux 0x51ce69f3 __sock_create +EXPORT_SYMBOL vmlinux 0x51d12d4e acpi_pci_disabled +EXPORT_SYMBOL vmlinux 0x51da56e9 set_trace_device +EXPORT_SYMBOL vmlinux 0x51dce73b xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x51dd481d pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0x51e60957 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x51ef33b8 kstrndup +EXPORT_SYMBOL vmlinux 0x51f13b49 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x52006d56 acpi_walk_resources +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x5206459c proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x5206a116 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x52095e19 acpi_get_data +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x5230ae10 current_task +EXPORT_SYMBOL vmlinux 0x5235b3f2 skb_queue_tail +EXPORT_SYMBOL vmlinux 0x5240fa78 __devm_release_region +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL vmlinux 0x525e026f acpi_os_unmap_generic_address +EXPORT_SYMBOL vmlinux 0x528c709d simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x52911d8e md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0x529144c2 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x52e5d8be tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x52efa8ba mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x530b1e4c rdmsr_on_cpus +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x5317c23c dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x531b604e __virt_addr_valid +EXPORT_SYMBOL vmlinux 0x53243c0f filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x533227bf bio_alloc_pages +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x5383d524 netif_carrier_off +EXPORT_SYMBOL vmlinux 0x5383f34b _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x53991846 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0x539c9424 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0x53b0ba6b dev_open +EXPORT_SYMBOL vmlinux 0x53b1ad6f dma_release_declared_memory +EXPORT_SYMBOL vmlinux 0x53bb01e2 vm_stat +EXPORT_SYMBOL vmlinux 0x53e924ba dev_mc_del +EXPORT_SYMBOL vmlinux 0x53f2ef10 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x53fad5f3 alloc_disk +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x540a556d netdev_features_change +EXPORT_SYMBOL vmlinux 0x54152e04 percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x54176d8d padata_add_cpu +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x544b0c11 acpi_lid_notifier_register +EXPORT_SYMBOL vmlinux 0x5464538f __idr_remove_all +EXPORT_SYMBOL vmlinux 0x549e94fb cdev_alloc +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54c1c165 textsearch_register +EXPORT_SYMBOL vmlinux 0x54c86dc9 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x54e3cc3b param_get_int +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54efb5d6 cpu_number +EXPORT_SYMBOL vmlinux 0x54f030f1 km_report +EXPORT_SYMBOL vmlinux 0x55121105 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x5521332f pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x552e3b07 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x5539b890 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x554663cb blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x556c2740 hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x55841578 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x558758d1 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x558d86a1 ip_setsockopt +EXPORT_SYMBOL vmlinux 0x5594be03 bitmap_remap +EXPORT_SYMBOL vmlinux 0x55b0f4b5 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0x55b52311 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x55c7a172 neigh_ifdown +EXPORT_SYMBOL vmlinux 0x55e6a7f5 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x55f2dffa skb_checksum_help +EXPORT_SYMBOL vmlinux 0x55fcf866 agp_generic_enable +EXPORT_SYMBOL vmlinux 0x56115ce7 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x5614b010 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x56300c51 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x5642793a radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x566853e5 stop_tty +EXPORT_SYMBOL vmlinux 0x5676a3e5 intel_scu_ipc_ioread8 +EXPORT_SYMBOL vmlinux 0x5688d3db blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x568ac819 dquot_transfer +EXPORT_SYMBOL vmlinux 0x568e44ef pci_bus_type +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56e0b57c tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x56e12435 simple_getattr +EXPORT_SYMBOL vmlinux 0x56fd847b tty_name +EXPORT_SYMBOL vmlinux 0x5705088a __vmalloc +EXPORT_SYMBOL vmlinux 0x572d9924 tty_unlock_pair +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x5753be1e pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x575af70c on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x577c4d48 inode_init_owner +EXPORT_SYMBOL vmlinux 0x577d1ae4 pci_find_bus +EXPORT_SYMBOL vmlinux 0x57965caf fasync_helper +EXPORT_SYMBOL vmlinux 0x57970ae8 pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0x579fbcd2 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0x57a23fe8 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x57c7119c scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x57cf7b3f bio_unmap_user +EXPORT_SYMBOL vmlinux 0x580e91ae open_exec +EXPORT_SYMBOL vmlinux 0x58372973 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x583ce438 phy_device_create +EXPORT_SYMBOL vmlinux 0x584738f9 rdmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x584b9bb8 d_lookup +EXPORT_SYMBOL vmlinux 0x58576da1 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x586103be acpi_setup_gpe_for_wake +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x587a3c60 make_bad_inode +EXPORT_SYMBOL vmlinux 0x587ca96b kdb_current_task +EXPORT_SYMBOL vmlinux 0x58a553af invalidate_bdev +EXPORT_SYMBOL vmlinux 0x58a6d1d3 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x58bacdab abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x58cef1de uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x58f4edbe dev_get_flags +EXPORT_SYMBOL vmlinux 0x58fa0bc6 scsi_finish_command +EXPORT_SYMBOL vmlinux 0x58fef6f8 ist_info +EXPORT_SYMBOL vmlinux 0x59024a39 follow_down +EXPORT_SYMBOL vmlinux 0x590c8d2b user_path_create +EXPORT_SYMBOL vmlinux 0x590d5e9b __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x595aff3f set_pages_array_wb +EXPORT_SYMBOL vmlinux 0x595e571c md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x59b43f3d sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x59bc9609 acpi_write_bit_register +EXPORT_SYMBOL vmlinux 0x59f51538 agp_find_bridge +EXPORT_SYMBOL vmlinux 0x5a0a4f55 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x5a1a33b6 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x5a25f82d dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x5a263889 dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x5a2aa62e __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x5a4896a8 __put_user_2 +EXPORT_SYMBOL vmlinux 0x5a4a3068 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x5a5536c2 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x5a653b8d tty_port_close_start +EXPORT_SYMBOL vmlinux 0x5a790a95 uart_register_driver +EXPORT_SYMBOL vmlinux 0x5a7a5ac1 x86_hyper_ms_hyperv +EXPORT_SYMBOL vmlinux 0x5a994d32 register_gifconf +EXPORT_SYMBOL vmlinux 0x5aa3691e scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x5aa860c6 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x5ac09239 blk_mq_run_queues +EXPORT_SYMBOL vmlinux 0x5ac21822 irq_stat +EXPORT_SYMBOL vmlinux 0x5ac376a5 acpi_install_fixed_event_handler +EXPORT_SYMBOL vmlinux 0x5ae82b05 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x5aeb006c xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x5af594dc i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x5afe337d locks_remove_posix +EXPORT_SYMBOL vmlinux 0x5b0c6ff0 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x5b1204d4 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x5b19634d div_s64_rem +EXPORT_SYMBOL vmlinux 0x5b271d86 acpi_video_dmi_promote_vendor +EXPORT_SYMBOL vmlinux 0x5b32a8bf uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x5b4138d4 __get_page_tail +EXPORT_SYMBOL vmlinux 0x5b53cf09 mount_nodev +EXPORT_SYMBOL vmlinux 0x5b618453 __getblk +EXPORT_SYMBOL vmlinux 0x5bc7b7b3 seq_release_private +EXPORT_SYMBOL vmlinux 0x5bc8d583 copy_from_user_overflow +EXPORT_SYMBOL vmlinux 0x5bdb88fb kobject_del +EXPORT_SYMBOL vmlinux 0x5be96ac8 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x5be9717f splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x5c3edd59 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x5c4bbc0c security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x5c527fb5 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x5c545234 ucs2_strncmp +EXPORT_SYMBOL vmlinux 0x5cc90d81 pv_mmu_ops +EXPORT_SYMBOL vmlinux 0x5cd3a13d block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x5cd6a373 bio_integrity_get_tag +EXPORT_SYMBOL vmlinux 0x5ce64034 do_splice_direct +EXPORT_SYMBOL vmlinux 0x5cf23d99 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5d0eef3b dquot_release +EXPORT_SYMBOL vmlinux 0x5d3244eb input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0x5d41c87c param_ops_charp +EXPORT_SYMBOL vmlinux 0x5d4e92f5 datagram_poll +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d5b5a16 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x5d5f8776 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x5d670f59 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x5d6b08ad redraw_screen +EXPORT_SYMBOL vmlinux 0x5d74dbcf pnp_range_reserved +EXPORT_SYMBOL vmlinux 0x5d7920ab sock_no_accept +EXPORT_SYMBOL vmlinux 0x5d8a5278 ip_getsockopt +EXPORT_SYMBOL vmlinux 0x5d9768a4 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x5d9f94e2 acpi_device_set_power +EXPORT_SYMBOL vmlinux 0x5da7bea8 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x5daea7d9 __scm_send +EXPORT_SYMBOL vmlinux 0x5dce6b75 complete_and_exit +EXPORT_SYMBOL vmlinux 0x5de8f1cf blk_mq_alloc_reserved_request +EXPORT_SYMBOL vmlinux 0x5e1294a1 pipe_lock +EXPORT_SYMBOL vmlinux 0x5e1b286d fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0x5e28773d inet_addr_type +EXPORT_SYMBOL vmlinux 0x5e35b6dd get_gendisk +EXPORT_SYMBOL vmlinux 0x5e5abe69 free_task +EXPORT_SYMBOL vmlinux 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL vmlinux 0x5e932df5 netdev_state_change +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ecd6c26 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f018d06 pci_pme_active +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f1a4ccf intel_scu_ipc_update_register +EXPORT_SYMBOL vmlinux 0x5f235bff ata_std_end_eh +EXPORT_SYMBOL vmlinux 0x5f27544a mempool_destroy +EXPORT_SYMBOL vmlinux 0x5f3c8f5c mmc_assume_removable +EXPORT_SYMBOL vmlinux 0x5f58f676 flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x5f69440b pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0x5f6b2195 vga_put +EXPORT_SYMBOL vmlinux 0x5f6f4e96 blk_integrity_register +EXPORT_SYMBOL vmlinux 0x5f811480 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x5f8e2972 inet6_add_offload +EXPORT_SYMBOL vmlinux 0x5faa817d netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0x5fc3defd setup_new_exec +EXPORT_SYMBOL vmlinux 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5fe41fb6 percpu_counter_set +EXPORT_SYMBOL vmlinux 0x5ff42b08 acpi_video_get_capabilities +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x60188a9b generic_show_options +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 0x6048b96e i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0x604bd9f7 input_set_keycode +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x6076c7c8 tcf_hash_check +EXPORT_SYMBOL vmlinux 0x607ff749 pnp_request_card_device +EXPORT_SYMBOL vmlinux 0x60825933 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x6091a43d generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x60960a9a udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL vmlinux 0x60b2e38a rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x60b86f61 sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x60ba148a abx500_register_ops +EXPORT_SYMBOL vmlinux 0x60d2874a clear_inode +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60f0ce95 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x60f1627a end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x61010a3d del_gendisk +EXPORT_SYMBOL vmlinux 0x6119c25c generic_file_remap_pages +EXPORT_SYMBOL vmlinux 0x612390ad netpoll_set_trap +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x613b470e pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x614383c0 acpi_get_object_info +EXPORT_SYMBOL vmlinux 0x61538ad0 param_get_charp +EXPORT_SYMBOL vmlinux 0x6173de95 i2c_del_driver +EXPORT_SYMBOL vmlinux 0x61783ddf sk_net_capable +EXPORT_SYMBOL vmlinux 0x619b187b add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0x619b5c1a mount_pseudo +EXPORT_SYMBOL vmlinux 0x61a489cb __neigh_event_send +EXPORT_SYMBOL vmlinux 0x61b5ade0 down_write +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61bd8789 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x62028508 sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0x62049256 acpi_disable +EXPORT_SYMBOL vmlinux 0x62139f72 dquot_disable +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x621b1e3a key_payload_reserve +EXPORT_SYMBOL vmlinux 0x621d77a0 sleep_on +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 0x622949d0 vga_switcheroo_register_client +EXPORT_SYMBOL vmlinux 0x622fa02a prepare_to_wait +EXPORT_SYMBOL vmlinux 0x6230b018 ip6_xmit +EXPORT_SYMBOL vmlinux 0x6237f6b5 acpi_enable_event +EXPORT_SYMBOL vmlinux 0x6241a2ab __copy_from_user_ll_nocache +EXPORT_SYMBOL vmlinux 0x62627ab1 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x6279187f elevator_init +EXPORT_SYMBOL vmlinux 0x62822d05 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x628ae9ab console_stop +EXPORT_SYMBOL vmlinux 0x6291fdc3 pci_get_slot +EXPORT_SYMBOL vmlinux 0x62b2bebc copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x62cb4cee interruptible_sleep_on +EXPORT_SYMBOL vmlinux 0x62da03d8 agp_bridge +EXPORT_SYMBOL vmlinux 0x62fa57d6 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x62fc128d tty_throttle +EXPORT_SYMBOL vmlinux 0x630203a2 netdev_crit +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x63192d41 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x63238b53 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x6355afda posix_lock_file +EXPORT_SYMBOL vmlinux 0x636a5691 acpi_register_ioapic +EXPORT_SYMBOL vmlinux 0x6376301b tty_port_open +EXPORT_SYMBOL vmlinux 0x6381b05d fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x63a01291 acpi_leave_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x63a06d8f free_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x63a6bcc9 acpi_map_lsapic +EXPORT_SYMBOL vmlinux 0x63ae0138 intel_gtt_get +EXPORT_SYMBOL vmlinux 0x63b3f311 skb_copy +EXPORT_SYMBOL vmlinux 0x63bc7223 mem_cgroup_subsys +EXPORT_SYMBOL vmlinux 0x63c55d20 __skb_dst_set_noref +EXPORT_SYMBOL vmlinux 0x63e6726d tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63f76cf1 xfrm_input +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x63fc83ea kernel_read +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x6449fd41 acpi_install_address_space_handler +EXPORT_SYMBOL vmlinux 0x645a63a5 vfs_statfs +EXPORT_SYMBOL vmlinux 0x6478134c ec_burst_enable +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64a4b84d cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x64dfbfdd nf_hook_slow +EXPORT_SYMBOL vmlinux 0x64eae7ad set_memory_array_wb +EXPORT_SYMBOL vmlinux 0x64f4a448 inet_stream_connect +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x65172c4f eth_header +EXPORT_SYMBOL vmlinux 0x6517ccd0 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x65271ccd vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x65594850 pci_disable_msi +EXPORT_SYMBOL vmlinux 0x655f1ab0 set_memory_array_wc +EXPORT_SYMBOL vmlinux 0x65636eb0 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x6565d33f scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x657879ce __init_rwsem +EXPORT_SYMBOL vmlinux 0x65832908 padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0x6585e310 alloc_pages_exact_nid +EXPORT_SYMBOL vmlinux 0x658a6c13 scsi_get_command +EXPORT_SYMBOL vmlinux 0x65931e6f remap_pfn_range +EXPORT_SYMBOL vmlinux 0x65a295bb atomic64_xchg_cx8 +EXPORT_SYMBOL vmlinux 0x65a778fc tcp_read_sock +EXPORT_SYMBOL vmlinux 0x65b06b5b skb_put +EXPORT_SYMBOL vmlinux 0x65cc24ff mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x65d51650 agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65dd5e57 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x65e56ee3 ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0x65e583cd tcf_action_exec +EXPORT_SYMBOL vmlinux 0x65e62710 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x6605f97f flex_array_clear +EXPORT_SYMBOL vmlinux 0x6626059b ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x66355efc vprintk +EXPORT_SYMBOL vmlinux 0x663f7cd0 acpi_install_table_handler +EXPORT_SYMBOL vmlinux 0x665cba92 mpage_writepage +EXPORT_SYMBOL vmlinux 0x6662dafa pnp_stop_dev +EXPORT_SYMBOL vmlinux 0x668da8d5 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x6697ee5c generic_removexattr +EXPORT_SYMBOL vmlinux 0x66a67dab flex_array_shrink +EXPORT_SYMBOL vmlinux 0x66c44365 netdev_emerg +EXPORT_SYMBOL vmlinux 0x66c8b825 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0x66d42664 blk_execute_rq +EXPORT_SYMBOL vmlinux 0x66eb3d63 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x6729d3df __get_user_4 +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x6745639b module_put +EXPORT_SYMBOL vmlinux 0x675b8f61 param_get_string +EXPORT_SYMBOL vmlinux 0x678dcf23 blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0x679ed9ff ata_link_printk +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL vmlinux 0x67dcffb7 lg_lock_init +EXPORT_SYMBOL vmlinux 0x67ec74a3 dm_register_target +EXPORT_SYMBOL vmlinux 0x67efb754 kill_block_super +EXPORT_SYMBOL vmlinux 0x67f0979c neigh_app_ns +EXPORT_SYMBOL vmlinux 0x67f7403e _raw_spin_lock +EXPORT_SYMBOL vmlinux 0x680a2c20 dump_emit +EXPORT_SYMBOL vmlinux 0x6821410d iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x687baa6b inet_frags_init_net +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68ce7b97 from_kuid_munged +EXPORT_SYMBOL vmlinux 0x68d10fab shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x68dfc59f __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0x68e05d57 getrawmonotonic +EXPORT_SYMBOL vmlinux 0x68e2f221 _raw_spin_unlock +EXPORT_SYMBOL vmlinux 0x68ea5704 filemap_flush +EXPORT_SYMBOL vmlinux 0x68eaa973 kernel_listen +EXPORT_SYMBOL vmlinux 0x691001b5 acpi_evaluate_integer +EXPORT_SYMBOL vmlinux 0x693541e6 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x69394394 devm_gpio_request +EXPORT_SYMBOL vmlinux 0x6956614a vga_switcheroo_get_client_state +EXPORT_SYMBOL vmlinux 0x696bb8f7 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x696ccc30 sock_recvmsg +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x6988d0ca cpu_dr7 +EXPORT_SYMBOL vmlinux 0x6999a6bd kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x699caab5 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69a54be1 names_cachep +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69be7c6d __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x69c1944c jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x69d38ed9 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x69e27c7a bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x69fcec91 pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a259cf3 blk_stop_queue +EXPORT_SYMBOL vmlinux 0x6a27bfce csum_partial_copy_generic +EXPORT_SYMBOL vmlinux 0x6a3536f0 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x6a3585cb xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0x6a3651d8 netif_rx +EXPORT_SYMBOL vmlinux 0x6a48e16b percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x6a520c06 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a77c0ee sk_mc_loop +EXPORT_SYMBOL vmlinux 0x6a797cd2 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x6a7adeaf eth_change_mtu +EXPORT_SYMBOL vmlinux 0x6a9e1072 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x6a9ede57 simple_lookup +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6ad4be9c __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x6ad85887 acpi_enable_gpe +EXPORT_SYMBOL vmlinux 0x6add5c9a dmi_find_device +EXPORT_SYMBOL vmlinux 0x6aef84c0 d_validate +EXPORT_SYMBOL vmlinux 0x6b0599f6 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b0eee63 locks_init_lock +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b35d286 generic_ro_fops +EXPORT_SYMBOL vmlinux 0x6b7c0bbb ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x6b868153 inet_add_offload +EXPORT_SYMBOL vmlinux 0x6b870f15 sock_no_poll +EXPORT_SYMBOL vmlinux 0x6bac85cc fsnotify_get_group +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bc95019 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x6bd07345 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6beb2078 param_set_copystring +EXPORT_SYMBOL vmlinux 0x6c099b64 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x6c0cca1e dcache_readdir +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c2986d7 pci_map_rom +EXPORT_SYMBOL vmlinux 0x6c2e3320 strncmp +EXPORT_SYMBOL vmlinux 0x6c2ffb36 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x6c389761 acpi_bus_get_private_data +EXPORT_SYMBOL vmlinux 0x6c44bcfd __find_get_block +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c5f0b58 __napi_schedule +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c66f9c9 acpi_lock_battery_dir +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c7a195f simple_open +EXPORT_SYMBOL vmlinux 0x6c7f5917 mmc_release_host +EXPORT_SYMBOL vmlinux 0x6c80130e netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x6c8624ea register_framebuffer +EXPORT_SYMBOL vmlinux 0x6c865306 scsi_target_resume +EXPORT_SYMBOL vmlinux 0x6c8ca0ca tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x6ca170dc blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x6ca4f9f5 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x6ca5b0f8 __net_get_random_once +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6cff7ad6 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x6d05d27e create_syslog_header +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d1dafa8 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x6d22c5e4 skb_append +EXPORT_SYMBOL vmlinux 0x6d27ef64 __bitmap_empty +EXPORT_SYMBOL vmlinux 0x6d2887db blk_mq_end_io +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d2a7bfc d_move +EXPORT_SYMBOL vmlinux 0x6d334118 __get_user_8 +EXPORT_SYMBOL vmlinux 0x6d340f64 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0x6d47e6ab free_buffer_head +EXPORT_SYMBOL vmlinux 0x6d7c839d vfs_rename +EXPORT_SYMBOL vmlinux 0x6d800bdc ps2_command +EXPORT_SYMBOL vmlinux 0x6d8ff076 inet_frag_find +EXPORT_SYMBOL vmlinux 0x6da6cf0f blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0x6dc87490 mmc_can_reset +EXPORT_SYMBOL vmlinux 0x6de49d52 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6e00a23f qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x6e0d7706 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x6e0fe29d pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x6e29d832 insert_inode_locked +EXPORT_SYMBOL vmlinux 0x6e51ac2e _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x6e65f2dc rtc_lock +EXPORT_SYMBOL vmlinux 0x6e6c1835 dev_deactivate +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e8747c6 ip6_frag_init +EXPORT_SYMBOL vmlinux 0x6e8a54b0 ps2_begin_command +EXPORT_SYMBOL vmlinux 0x6eb37539 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x6ebc5149 param_ops_long +EXPORT_SYMBOL vmlinux 0x6ef8f398 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x6f0f7407 do_truncate +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f37340f devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x6f4c6b71 lg_local_unlock +EXPORT_SYMBOL vmlinux 0x6f54e29e fb_set_cmap +EXPORT_SYMBOL vmlinux 0x6f556bdb acpi_get_gpe_device +EXPORT_SYMBOL vmlinux 0x6f7b6e9c skb_store_bits +EXPORT_SYMBOL vmlinux 0x6f9e1187 install_exec_creds +EXPORT_SYMBOL vmlinux 0x6fa3e3ec skb_queue_head +EXPORT_SYMBOL vmlinux 0x6fc659d2 splice_from_pipe_feed +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fd39cbe eth_header_parse +EXPORT_SYMBOL vmlinux 0x6feb2039 acpi_write +EXPORT_SYMBOL vmlinux 0x700eb564 elv_add_request +EXPORT_SYMBOL vmlinux 0x7023bea8 unregister_acpi_notifier +EXPORT_SYMBOL vmlinux 0x702657f3 keyring_alloc +EXPORT_SYMBOL vmlinux 0x703b4352 _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x705dbfca from_kprojid +EXPORT_SYMBOL vmlinux 0x706ff5c0 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x70792f71 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x70a7d377 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x70b7ed87 __kfree_skb +EXPORT_SYMBOL vmlinux 0x70bc17d7 inode_wait +EXPORT_SYMBOL vmlinux 0x70c83a95 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x70d053fd try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0x70d1f8f3 strncat +EXPORT_SYMBOL vmlinux 0x70d8ab82 acpi_acquire_global_lock +EXPORT_SYMBOL vmlinux 0x710078de unload_nls +EXPORT_SYMBOL vmlinux 0x7114a71f bit_waitqueue +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x71336873 __pagevec_release +EXPORT_SYMBOL vmlinux 0x713edb6d acpi_bus_get_device +EXPORT_SYMBOL vmlinux 0x714284b2 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x71494a50 loop_backing_file +EXPORT_SYMBOL vmlinux 0x716b4bb4 elv_rb_add +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x71872d44 md_write_start +EXPORT_SYMBOL vmlinux 0x718c667a bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x71918a38 call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0x71a29717 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x71a4a7ac inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71ac5dd8 remove_proc_entry +EXPORT_SYMBOL vmlinux 0x71b0378b __serio_register_port +EXPORT_SYMBOL vmlinux 0x71c6e4ee dentry_path_raw +EXPORT_SYMBOL vmlinux 0x71e20d2f posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x71e925f8 devm_request_and_ioremap +EXPORT_SYMBOL vmlinux 0x71f65175 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0x72275f40 blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x7239c489 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x724d3042 dst_discard +EXPORT_SYMBOL vmlinux 0x726d27ae pcie_port_service_register +EXPORT_SYMBOL vmlinux 0x726fe53c register_filesystem +EXPORT_SYMBOL vmlinux 0x7282e4ac scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x728eb220 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x729fb19f kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72b252ce block_write_full_page_endio +EXPORT_SYMBOL vmlinux 0x72b53745 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x72b5b2b7 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x72b7657b __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x72bf2140 mtrr_add +EXPORT_SYMBOL vmlinux 0x72d462f0 input_set_abs_params +EXPORT_SYMBOL vmlinux 0x72d58de9 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x72df2f2a up_read +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72f3aa32 acpi_get_physical_device_location +EXPORT_SYMBOL vmlinux 0x731859dc module_layout +EXPORT_SYMBOL vmlinux 0x7325e81a simple_rmdir +EXPORT_SYMBOL vmlinux 0x732c82bb inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x7332b582 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x73590c9b d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0x735a0bd5 native_io_delay +EXPORT_SYMBOL vmlinux 0x7372e937 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x737de5e9 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x738803e6 strnlen +EXPORT_SYMBOL vmlinux 0x7388dddf arp_invalidate +EXPORT_SYMBOL vmlinux 0x73baad0d serio_close +EXPORT_SYMBOL vmlinux 0x73c922fb kernel_getsockname +EXPORT_SYMBOL vmlinux 0x73d6fbb7 clear_nlink +EXPORT_SYMBOL vmlinux 0x73dd54eb irq_fpu_usable +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x740a1b95 reserve_evntsel_nmi +EXPORT_SYMBOL vmlinux 0x7413793a EISA_bus +EXPORT_SYMBOL vmlinux 0x741e6a6a neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x74368ddc jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x743b4ae3 atomic64_inc_not_zero_cx8 +EXPORT_SYMBOL vmlinux 0x7447997c end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x7449da94 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x7461b6e6 tcp_prot +EXPORT_SYMBOL vmlinux 0x7461f697 __lock_page +EXPORT_SYMBOL vmlinux 0x7469fcfe radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x74803308 input_unregister_handler +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x748804b6 kernel_bind +EXPORT_SYMBOL vmlinux 0x74881d07 acpi_unlock_battery_dir +EXPORT_SYMBOL vmlinux 0x74898636 acpi_processor_notify_smm +EXPORT_SYMBOL vmlinux 0x748c50c3 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x748ec6d6 lock_sock_fast +EXPORT_SYMBOL vmlinux 0x748f6c29 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x74946944 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x74bb2181 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74ce05b8 flush_delayed_work +EXPORT_SYMBOL vmlinux 0x74e2a1a6 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x74e408ed sock_no_getname +EXPORT_SYMBOL vmlinux 0x74e5c98f ucs2_strnlen +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74ee4244 iget_failed +EXPORT_SYMBOL vmlinux 0x74f232c1 vmap +EXPORT_SYMBOL vmlinux 0x75001ac3 fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x7506f20e unregister_md_personality +EXPORT_SYMBOL vmlinux 0x7511235d uart_suspend_port +EXPORT_SYMBOL vmlinux 0x7519dbe6 sk_run_filter +EXPORT_SYMBOL vmlinux 0x75271716 save_processor_state +EXPORT_SYMBOL vmlinux 0x7531e3dc acpi_get_event_resources +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x753b568d d_set_d_op +EXPORT_SYMBOL vmlinux 0x7541e6f8 blk_put_queue +EXPORT_SYMBOL vmlinux 0x754dac78 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x756c33fa cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x758cc520 scsi_ioctl +EXPORT_SYMBOL vmlinux 0x7593d385 div64_s64 +EXPORT_SYMBOL vmlinux 0x75ad1045 icmp_send +EXPORT_SYMBOL vmlinux 0x75bb675a finish_wait +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75c57579 dump_skip +EXPORT_SYMBOL vmlinux 0x75d08c36 led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0x75d21809 vprintk_emit +EXPORT_SYMBOL vmlinux 0x75eb9857 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x75fbdefd acpi_remove_address_space_handler +EXPORT_SYMBOL vmlinux 0x76041d4c seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x76211731 key_put +EXPORT_SYMBOL vmlinux 0x7628f3c7 this_cpu_off +EXPORT_SYMBOL vmlinux 0x762add85 atomic64_inc_return_cx8 +EXPORT_SYMBOL vmlinux 0x762db671 input_inject_event +EXPORT_SYMBOL vmlinux 0x7641ed47 clk_get +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x76581e0b pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x7660993e inet_shutdown +EXPORT_SYMBOL vmlinux 0x767ddb02 set_memory_wc +EXPORT_SYMBOL vmlinux 0x769e06d7 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x76b93be0 adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0x76bf656d __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x770a0036 isapnp_cfg_begin +EXPORT_SYMBOL vmlinux 0x771452e0 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x77151980 cdev_del +EXPORT_SYMBOL vmlinux 0x771835ff xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x7719ecec skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x77237395 blk_complete_request +EXPORT_SYMBOL vmlinux 0x7724ef70 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x772f9eec __percpu_counter_add +EXPORT_SYMBOL vmlinux 0x774231c0 generic_file_llseek +EXPORT_SYMBOL vmlinux 0x77456e0a acpi_root_dir +EXPORT_SYMBOL vmlinux 0x775c2190 fb_pan_display +EXPORT_SYMBOL vmlinux 0x7766450b unlock_buffer +EXPORT_SYMBOL vmlinux 0x7772745d xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x777d7ee6 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77a87079 dquot_file_open +EXPORT_SYMBOL vmlinux 0x77ba8486 lease_get_mtime +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77d24156 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x77df0847 __set_personality +EXPORT_SYMBOL vmlinux 0x77e67d08 disk_stack_limits +EXPORT_SYMBOL vmlinux 0x77ecac9f zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x780fdfd1 intel_enable_gtt +EXPORT_SYMBOL vmlinux 0x7818b812 sock_i_uid +EXPORT_SYMBOL vmlinux 0x782567ec memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x785ff538 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x7865ec91 simple_write_begin +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x78814bf3 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x789abae5 cdrom_release +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78bb2011 dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0x78c4b90a crypto_sha512_update +EXPORT_SYMBOL vmlinux 0x78ca05d4 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x78db38d3 proc_dointvec +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78ef955b pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL vmlinux 0x79068fda acpi_install_method +EXPORT_SYMBOL vmlinux 0x79661f3c inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x796835b1 netdev_update_features +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x799c5c6a netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x79a41131 user_revoke +EXPORT_SYMBOL vmlinux 0x79a95ba9 __napi_complete +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79b4c00d dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x79b9a69a mb_cache_create +EXPORT_SYMBOL vmlinux 0x79d266ff do_splice_from +EXPORT_SYMBOL vmlinux 0x7a0a763f wireless_send_event +EXPORT_SYMBOL vmlinux 0x7a188791 prandom_bytes +EXPORT_SYMBOL vmlinux 0x7a1e5351 tcf_exts_change +EXPORT_SYMBOL vmlinux 0x7a23c243 set_bdi_congested +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a373f10 pci_fixup_device +EXPORT_SYMBOL vmlinux 0x7a3da54e max8998_update_reg +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a51e313 devm_clk_put +EXPORT_SYMBOL vmlinux 0x7a554fa2 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x7a6b9de0 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0x7a82cb47 rdmsrl_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x7a91726b clkdev_alloc +EXPORT_SYMBOL vmlinux 0x7a925833 cpufreq_get_global_kobject +EXPORT_SYMBOL vmlinux 0x7a9bf88d udplite_table +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7ad79802 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7aec9089 clear_user +EXPORT_SYMBOL vmlinux 0x7afa89fc vsnprintf +EXPORT_SYMBOL vmlinux 0x7b1089f7 pnp_find_card +EXPORT_SYMBOL vmlinux 0x7b12e336 devfreq_interval_update +EXPORT_SYMBOL vmlinux 0x7b134ddf acpi_get_name +EXPORT_SYMBOL vmlinux 0x7b1ade38 lz4_decompress +EXPORT_SYMBOL vmlinux 0x7b253231 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x7b52a859 wrmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b659aa3 icmpv6_send +EXPORT_SYMBOL vmlinux 0x7b783751 bio_integrity_free +EXPORT_SYMBOL vmlinux 0x7b81e815 dmam_release_declared_memory +EXPORT_SYMBOL vmlinux 0x7b9457a3 mmc_put_card +EXPORT_SYMBOL vmlinux 0x7b9a6116 intel_agp_enabled +EXPORT_SYMBOL vmlinux 0x7b9c24b4 vfs_mknod +EXPORT_SYMBOL vmlinux 0x7bbeaa00 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x7bc89057 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x7c03fdc7 inet_getname +EXPORT_SYMBOL vmlinux 0x7c0412da i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c1758e1 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x7c3d4cdf jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c484533 lro_receive_skb +EXPORT_SYMBOL vmlinux 0x7c52f16a tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c6474b2 __blk_end_request +EXPORT_SYMBOL vmlinux 0x7c6490f0 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x7c7c0e06 pci_biosrom_size +EXPORT_SYMBOL vmlinux 0x7c8a3ff1 seq_open +EXPORT_SYMBOL vmlinux 0x7c9e7652 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x7c9f6f70 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cc578da param_get_long +EXPORT_SYMBOL vmlinux 0x7cdb586b kobject_set_name +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7ce83365 acpi_remove_table_handler +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d2322d1 starget_for_each_device +EXPORT_SYMBOL vmlinux 0x7d2fc3b6 mmc_gpio_free_cd +EXPORT_SYMBOL vmlinux 0x7d42fd93 fput +EXPORT_SYMBOL vmlinux 0x7d54fbcf mutex_lock +EXPORT_SYMBOL vmlinux 0x7d5cb401 generic_permission +EXPORT_SYMBOL vmlinux 0x7d71db48 kset_register +EXPORT_SYMBOL vmlinux 0x7d91ba9e cookie_check_timestamp +EXPORT_SYMBOL vmlinux 0x7d94f746 acpi_os_write_port +EXPORT_SYMBOL vmlinux 0x7dac7325 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x7dbc2e57 mmiotrace_printk +EXPORT_SYMBOL vmlinux 0x7dc3e155 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x7dddcfd1 kmap_atomic_to_page +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7e13e9b2 pci_get_subsys +EXPORT_SYMBOL vmlinux 0x7e16a83b vfs_readlink +EXPORT_SYMBOL vmlinux 0x7e394c4e sysctl_local_reserved_ports +EXPORT_SYMBOL vmlinux 0x7e3991a9 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x7e3cad63 netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x7e50584c vfs_writev +EXPORT_SYMBOL vmlinux 0x7e8114fd pcibios_set_irq_routing +EXPORT_SYMBOL vmlinux 0x7e8ed23c nf_getsockopt +EXPORT_SYMBOL vmlinux 0x7e9e07ad gen10g_restart_aneg +EXPORT_SYMBOL vmlinux 0x7ea4292a simple_transaction_release +EXPORT_SYMBOL vmlinux 0x7ea903a8 __frontswap_test +EXPORT_SYMBOL vmlinux 0x7eac34eb path_put +EXPORT_SYMBOL vmlinux 0x7ebcd7d7 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x7ebf4efa inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x7ecb001b __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x7edb7b12 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x7ee73c0c memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0x7ef5c309 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x7eff72d5 phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0x7f0f2eba bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x7f14d747 nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x7f1aef8c alloc_file +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f416569 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x7f44f272 dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x7f658e80 _raw_write_lock +EXPORT_SYMBOL vmlinux 0x7f6a960e pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x7f6c1ae8 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x7f9a3785 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x7f9b803b path_nosuid +EXPORT_SYMBOL vmlinux 0x7fb15a7c __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x7fc2e19e mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x7fc85509 blk_get_queue +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x802174f7 vfs_open +EXPORT_SYMBOL vmlinux 0x804745d9 __idr_pre_get +EXPORT_SYMBOL vmlinux 0x804f922a ipmi_addr_length +EXPORT_SYMBOL vmlinux 0x808021ef truncate_pagecache +EXPORT_SYMBOL vmlinux 0x809cacbc sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x80b1438a backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x80c05ce3 revalidate_disk +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80d9ca85 paravirt_ticketlocks_enabled +EXPORT_SYMBOL vmlinux 0x80dd0608 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x80e58ede page_put_link +EXPORT_SYMBOL vmlinux 0x812e5c0a skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x813f8c4d ppp_unit_number +EXPORT_SYMBOL vmlinux 0x81472677 acpi_get_table +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x8150c0ba mempool_resize +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x815c56d0 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x815f2897 empty_zero_page +EXPORT_SYMBOL vmlinux 0x81651235 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x81bbf9c7 unregister_exec_domain +EXPORT_SYMBOL vmlinux 0x81c3d21e dm_io +EXPORT_SYMBOL vmlinux 0x81cc7b39 free_netdev +EXPORT_SYMBOL vmlinux 0x81d10f5f trace_seq_putc +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81ddc467 vfs_llseek +EXPORT_SYMBOL vmlinux 0x81e6b37f dmi_get_system_info +EXPORT_SYMBOL vmlinux 0x8204cb25 agp_copy_info +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x8212721d xenbus_dev_request_and_reply +EXPORT_SYMBOL vmlinux 0x822e745c devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0x8235805b memmove +EXPORT_SYMBOL vmlinux 0x8243a18d kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x8248905a pnp_start_dev +EXPORT_SYMBOL vmlinux 0x8251bcc3 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x8260686f bitmap_find_next_zero_area +EXPORT_SYMBOL vmlinux 0x826f2cda dev_uc_init +EXPORT_SYMBOL vmlinux 0x8273673a scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x82758116 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x8298d3f1 km_query +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82ad27a6 set_pages_wb +EXPORT_SYMBOL vmlinux 0x82af5b10 elv_rb_find +EXPORT_SYMBOL vmlinux 0x82d84ce7 __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x830d4751 elevator_alloc +EXPORT_SYMBOL vmlinux 0x830e547b ioremap_prot +EXPORT_SYMBOL vmlinux 0x83271fda load_nls +EXPORT_SYMBOL vmlinux 0x833c03aa acpi_enable_all_runtime_gpes +EXPORT_SYMBOL vmlinux 0x8345f89e inet_frag_kill +EXPORT_SYMBOL vmlinux 0x834b3900 follow_up +EXPORT_SYMBOL vmlinux 0x834ffc54 pci_disable_ltr +EXPORT_SYMBOL vmlinux 0x83502fcb sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x83928e0a scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x83a476ce bitmap_scnlistprintf +EXPORT_SYMBOL vmlinux 0x83b4a326 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x83d2d6d2 splice_from_pipe_begin +EXPORT_SYMBOL vmlinux 0x84060081 xen_poll_irq_timeout +EXPORT_SYMBOL vmlinux 0x8406ede2 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x8417f512 acpi_update_all_gpes +EXPORT_SYMBOL vmlinux 0x841962f8 param_get_ushort +EXPORT_SYMBOL vmlinux 0x843ad484 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x84544edf pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0x84545d4e __ht_create_irq +EXPORT_SYMBOL vmlinux 0x8456e3c6 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x8459237c input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x846be09e tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x84be886f completion_done +EXPORT_SYMBOL vmlinux 0x84c330f2 dev_printk_emit +EXPORT_SYMBOL vmlinux 0x84cc2ef8 __dev_remove_offload +EXPORT_SYMBOL vmlinux 0x84ff4f77 __bforget +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x8509c540 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0x8518eca9 param_get_short +EXPORT_SYMBOL vmlinux 0x852b6a49 ppp_input_error +EXPORT_SYMBOL vmlinux 0x852bb738 build_skb +EXPORT_SYMBOL vmlinux 0x852f572b ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x853b7f2b register_quota_format +EXPORT_SYMBOL vmlinux 0x853bf7c1 param_set_int +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x85903a1e __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x85931c7b may_umount +EXPORT_SYMBOL vmlinux 0x85a239f2 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x85a6f212 dqput +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85ba16c8 neigh_compat_output +EXPORT_SYMBOL vmlinux 0x85c962ec sk_alloc +EXPORT_SYMBOL vmlinux 0x85cd3386 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x85d2c710 sk_receive_skb +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85e7deb2 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x85fce7fd skb_copy_bits +EXPORT_SYMBOL vmlinux 0x860f7715 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x861fba98 wait_for_completion_io +EXPORT_SYMBOL vmlinux 0x86341410 tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x86582982 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x8674dfb9 iov_iter_copy_from_user +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x868f0614 md_write_end +EXPORT_SYMBOL vmlinux 0x869dba48 proc_set_size +EXPORT_SYMBOL vmlinux 0x86a4889a kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x86d08b90 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x86d5255f _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0x86e03ae1 padata_free +EXPORT_SYMBOL vmlinux 0x86e72b77 pm860x_page_set_bits +EXPORT_SYMBOL vmlinux 0x86e828e4 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x86fd7706 tcp_release_cb +EXPORT_SYMBOL vmlinux 0x8706c90f scsi_init_io +EXPORT_SYMBOL vmlinux 0x870bf928 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x8734e6d6 unregister_binfmt +EXPORT_SYMBOL vmlinux 0x8735f4cb scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x876dafc3 ec_write +EXPORT_SYMBOL vmlinux 0x8775590b lock_may_write +EXPORT_SYMBOL vmlinux 0x8779a34f param_ops_byte +EXPORT_SYMBOL vmlinux 0x877be148 pci_select_bars +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x8791c6b4 bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0x8798e453 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x879ac15d __nla_reserve +EXPORT_SYMBOL vmlinux 0x87aaddf8 wrmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0x87d2890f xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x87dc4ad0 dquot_initialize +EXPORT_SYMBOL vmlinux 0x87e041e3 scsi_add_device +EXPORT_SYMBOL vmlinux 0x87e350d7 bio_reset +EXPORT_SYMBOL vmlinux 0x87e922d6 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x8809a075 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x881039d0 zlib_inflate +EXPORT_SYMBOL vmlinux 0x8819fd46 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x882bb56e do_sync_write +EXPORT_SYMBOL vmlinux 0x882dab9d sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0x8834396c mod_timer +EXPORT_SYMBOL vmlinux 0x884bffe5 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x88513970 param_set_byte +EXPORT_SYMBOL vmlinux 0x88626d5e bio_integrity_set_tag +EXPORT_SYMBOL vmlinux 0x888c180b netif_device_detach +EXPORT_SYMBOL vmlinux 0x88992fc8 vlan_untag +EXPORT_SYMBOL vmlinux 0x88994ebf rename_lock +EXPORT_SYMBOL vmlinux 0x88d4400b tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x88ebea2d framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x88f4e49f udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x8928776e blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x892b26a0 set_memory_nx +EXPORT_SYMBOL vmlinux 0x892fb297 pci_scan_slot +EXPORT_SYMBOL vmlinux 0x8953f8ff __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x896bd0d1 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x8971906c ata_port_printk +EXPORT_SYMBOL vmlinux 0x897473df mktime +EXPORT_SYMBOL vmlinux 0x898266e5 tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0x89a5e41b nonseekable_open +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89b54999 kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x89b6dcea d_instantiate +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x8a048ed2 mmc_can_erase +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a5ee6c2 bio_advance +EXPORT_SYMBOL vmlinux 0x8a6872c9 napi_gro_receive +EXPORT_SYMBOL vmlinux 0x8a69f5f8 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a80d7a5 acpi_error +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8ab94ca2 proc_symlink +EXPORT_SYMBOL vmlinux 0x8ac99318 blkdev_get +EXPORT_SYMBOL vmlinux 0x8adc491f sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x8afdff23 get_agp_version +EXPORT_SYMBOL vmlinux 0x8aff5743 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x8b013f3d bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x8b18496f __copy_to_user_ll +EXPORT_SYMBOL vmlinux 0x8b1987a1 unlazy_fpu +EXPORT_SYMBOL vmlinux 0x8b1a7a66 pcie_aspm_enabled +EXPORT_SYMBOL vmlinux 0x8b226a81 acpi_video_dmi_demote_vendor +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b403e17 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b53ad58 key_unlink +EXPORT_SYMBOL vmlinux 0x8b5f4a2e IO_APIC_get_PCI_irq_vector +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b69ce89 pagecache_write_end +EXPORT_SYMBOL vmlinux 0x8b6ca054 agp_backend_acquire +EXPORT_SYMBOL vmlinux 0x8b73e50f sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x8b7ec388 no_llseek +EXPORT_SYMBOL vmlinux 0x8b7f8a24 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x8b848a6e init_net +EXPORT_SYMBOL vmlinux 0x8b9253d1 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x8b931b92 inet_register_protosw +EXPORT_SYMBOL vmlinux 0x8b989cf9 acpi_bus_can_wakeup +EXPORT_SYMBOL vmlinux 0x8b9fd070 dev_get_nest_level +EXPORT_SYMBOL vmlinux 0x8ba12810 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x8bb008ea blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x8bb6d2ef kthread_bind +EXPORT_SYMBOL vmlinux 0x8bcecafc pneigh_lookup +EXPORT_SYMBOL vmlinux 0x8bd0311e dev_warn +EXPORT_SYMBOL vmlinux 0x8bd7481f ps2_end_command +EXPORT_SYMBOL vmlinux 0x8bfa0345 cdev_init +EXPORT_SYMBOL vmlinux 0x8c0fffdc ihold +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c28c523 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x8c44151a __memcg_kmem_get_cache +EXPORT_SYMBOL vmlinux 0x8c4ae962 udp6_csum_init +EXPORT_SYMBOL vmlinux 0x8c5d1ef2 qdisc_destroy +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c64e8ca mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x8c6f264e ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x8c873776 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL vmlinux 0x8c9473e0 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0x8c9cd020 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8cda8029 xen_clear_irq_pending +EXPORT_SYMBOL vmlinux 0x8ce95608 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x8d1b77e8 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x8d2e268b param_ops_ulong +EXPORT_SYMBOL vmlinux 0x8d4000cb netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d5a9e28 idr_get_next +EXPORT_SYMBOL vmlinux 0x8d6f81b4 __div64_32 +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d76d077 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x8d8a0267 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x8d8d96c6 acpi_get_sleep_type_data +EXPORT_SYMBOL vmlinux 0x8da1a3cb acpi_remove_interface +EXPORT_SYMBOL vmlinux 0x8daf8c42 dql_init +EXPORT_SYMBOL vmlinux 0x8dc6e564 restore_processor_state +EXPORT_SYMBOL vmlinux 0x8dd1efed mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x8dd2aa98 release_pages +EXPORT_SYMBOL vmlinux 0x8dd43d1a filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x8dd7d381 module_refcount +EXPORT_SYMBOL vmlinux 0x8de2c481 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x8e002cda acpi_remove_gpe_block +EXPORT_SYMBOL vmlinux 0x8e0d66f4 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x8e1b5cc2 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x8e2d5b8e vga_switcheroo_set_dynamic_switch +EXPORT_SYMBOL vmlinux 0x8e37cfea ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x8e477d7e nf_register_hook +EXPORT_SYMBOL vmlinux 0x8e809ad4 kill_pid +EXPORT_SYMBOL vmlinux 0x8e864a86 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x8e8797be kunmap +EXPORT_SYMBOL vmlinux 0x8e87aed4 idr_for_each +EXPORT_SYMBOL vmlinux 0x8e888ec3 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x8eaf2a5f vga_switcheroo_unregister_handler +EXPORT_SYMBOL vmlinux 0x8eafc712 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x8ed34267 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x8ed88356 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x8ef2da44 pci_dev_get +EXPORT_SYMBOL vmlinux 0x8f0204a4 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x8f045d1c cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x8f199209 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x8f1a8b7c dev_uc_add +EXPORT_SYMBOL vmlinux 0x8f2703b7 wbinvd_on_all_cpus +EXPORT_SYMBOL vmlinux 0x8f2a830f sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x8f2fd71a spi_dv_device +EXPORT_SYMBOL vmlinux 0x8f34947c netlink_capable +EXPORT_SYMBOL vmlinux 0x8f8e9db7 pci_scan_bus_parented +EXPORT_SYMBOL vmlinux 0x8f9c199c __get_user_2 +EXPORT_SYMBOL vmlinux 0x8faf590a file_open_root +EXPORT_SYMBOL vmlinux 0x8fb58bec inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x8fc278a5 ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x8fca7483 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0x8fce8400 sk_release_kernel +EXPORT_SYMBOL vmlinux 0x8ff29c4e blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0x8ff4079b pv_irq_ops +EXPORT_SYMBOL vmlinux 0x8ff6d7ba i2c_use_client +EXPORT_SYMBOL vmlinux 0x8ffdb3b8 crc16 +EXPORT_SYMBOL vmlinux 0x90274494 find_get_page +EXPORT_SYMBOL vmlinux 0x904409c6 acpi_set_firmware_waking_vector +EXPORT_SYMBOL vmlinux 0x90878deb __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x908b53ed param_set_short +EXPORT_SYMBOL vmlinux 0x90c226bf eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x90c7f323 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x90f74d55 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x9103c202 pci_vpd_truncate +EXPORT_SYMBOL vmlinux 0x911ce72b xfrm_init_state +EXPORT_SYMBOL vmlinux 0x9120f77a unregister_cdrom +EXPORT_SYMBOL vmlinux 0x9141ec9e proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x91434c84 ppp_register_channel +EXPORT_SYMBOL vmlinux 0x9144a8e2 ec_burst_disable +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x915ec4da devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0x91607d95 set_memory_wb +EXPORT_SYMBOL vmlinux 0x916e4116 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x91967e8e xen_selfballoon_init +EXPORT_SYMBOL vmlinux 0x91cadde1 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x91d2e45c kernel_accept +EXPORT_SYMBOL vmlinux 0x91fdd7ff pci_scan_bus +EXPORT_SYMBOL vmlinux 0x9202d4aa sock_no_listen +EXPORT_SYMBOL vmlinux 0x920dff5f dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x9239eb2e vc_resize +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x924c0afd netdev_change_features +EXPORT_SYMBOL vmlinux 0x925520d2 blk_start_plug +EXPORT_SYMBOL vmlinux 0x9272dff0 __ip_select_ident +EXPORT_SYMBOL vmlinux 0x927ad120 pci_set_ltr +EXPORT_SYMBOL vmlinux 0x92897e3d default_idle +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92b4e1a4 tty_lock_pair +EXPORT_SYMBOL vmlinux 0x92b7dd5e md_integrity_register +EXPORT_SYMBOL vmlinux 0x92f229d8 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x9305413c skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x9320a6cd pnp_register_card_driver +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x93350a14 idr_find_slowpath +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x934621b9 inet6_protos +EXPORT_SYMBOL vmlinux 0x934bbe16 skb_seq_read +EXPORT_SYMBOL vmlinux 0x935d58a5 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x939cf21e proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x93a6e0b2 io_schedule +EXPORT_SYMBOL vmlinux 0x93b04778 inc_nlink +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93b6f8ff dev_mc_init +EXPORT_SYMBOL vmlinux 0x93c55364 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0x93f2771a __blk_run_queue +EXPORT_SYMBOL vmlinux 0x93f969ba skb_pull +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x93fe6e26 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x944863c8 inet_csk_accept +EXPORT_SYMBOL vmlinux 0x945f077b pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94b541b5 cpu_active_mask +EXPORT_SYMBOL vmlinux 0x94bf225d pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x94d303a0 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x94e5b86f ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x9508f166 param_ops_bint +EXPORT_SYMBOL vmlinux 0x9515fdda dev_addr_init +EXPORT_SYMBOL vmlinux 0x9522b52a bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x95395301 acpi_exception +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x9575893b tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x95c7cb18 kern_path_create +EXPORT_SYMBOL vmlinux 0x95cdf98a pnp_possible_config +EXPORT_SYMBOL vmlinux 0x95db3dc1 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x95df658a put_page +EXPORT_SYMBOL vmlinux 0x95e6e500 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x95ed7306 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0x95ef3284 set_user_nice +EXPORT_SYMBOL vmlinux 0x95f89a33 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x963f0203 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x965a20de netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0x96898769 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x96a27dc4 ht_create_irq +EXPORT_SYMBOL vmlinux 0x96a98aae __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x96ad6cda posix_lock_file_wait +EXPORT_SYMBOL vmlinux 0x96c14781 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96d02121 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x96d8c864 dquot_get_dqinfo +EXPORT_SYMBOL vmlinux 0x96fc8107 sock_edemux +EXPORT_SYMBOL vmlinux 0x970b1cad cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x9713f788 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x973c931e unlock_page +EXPORT_SYMBOL vmlinux 0x973fa82e register_acpi_notifier +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x977381c0 max8998_read_reg +EXPORT_SYMBOL vmlinux 0x977b7ffd scsi_host_put +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a60e3d param_get_bool +EXPORT_SYMBOL vmlinux 0x97b4500c __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x97b59586 lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0x97c4669d con_is_bound +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 0x9820b644 warn_slowpath_fmt_taint +EXPORT_SYMBOL vmlinux 0x9842606d blk_end_request +EXPORT_SYMBOL vmlinux 0x98496ebd vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x984ca588 cfb_copyarea +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x9882c9d7 input_event +EXPORT_SYMBOL vmlinux 0x988ed85d set_memory_x +EXPORT_SYMBOL vmlinux 0x98a344ef devm_free_irq +EXPORT_SYMBOL vmlinux 0x98c400a4 clocksource_unregister +EXPORT_SYMBOL vmlinux 0x98cb654b blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x98deedd9 ___pskb_trim +EXPORT_SYMBOL vmlinux 0x98fa21b0 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x98fa35c1 dquot_enable +EXPORT_SYMBOL vmlinux 0x990a225d devm_gpio_free +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x997343c8 kern_unmount +EXPORT_SYMBOL vmlinux 0x9976ea56 may_umount_tree +EXPORT_SYMBOL vmlinux 0x997ff9b3 blk_recount_segments +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99e8dc79 simple_fill_super +EXPORT_SYMBOL vmlinux 0x99ed86e5 single_open +EXPORT_SYMBOL vmlinux 0x9a167919 dev_set_drvdata +EXPORT_SYMBOL vmlinux 0x9a1b8776 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1e274c dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a6a83f9 cmos_lock +EXPORT_SYMBOL vmlinux 0x9a7fdaec pnp_device_detach +EXPORT_SYMBOL vmlinux 0x9a91eba7 acpi_get_hp_hw_control_from_firmware +EXPORT_SYMBOL vmlinux 0x9ab13ee5 udp_poll +EXPORT_SYMBOL vmlinux 0x9ac23bf7 pci_write_vpd +EXPORT_SYMBOL vmlinux 0x9adafc0b dcache_dir_open +EXPORT_SYMBOL vmlinux 0x9af7988b pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b3eee2d file_update_time +EXPORT_SYMBOL vmlinux 0x9b6a7c70 generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b75cb81 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x9b7b0755 agp_collect_device_status +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bb1f98a cdrom_open +EXPORT_SYMBOL vmlinux 0x9bbeba46 neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9bf8a682 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x9c08df6d pci_read_vpd +EXPORT_SYMBOL vmlinux 0x9c2c944a __copy_from_user_ll_nocache_nozero +EXPORT_SYMBOL vmlinux 0x9c30853e key_reject_and_link +EXPORT_SYMBOL vmlinux 0x9c3a5026 gen_pool_free +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c7798c4 __generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x9c8ecd26 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cb22f2b sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x9cba41b6 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x9cc09e11 cdrom_check_events +EXPORT_SYMBOL vmlinux 0x9ceb163c memcpy_toiovec +EXPORT_SYMBOL vmlinux 0x9cfd56c5 scsi_print_status +EXPORT_SYMBOL vmlinux 0x9d05f6c4 ktime_get_clocktai +EXPORT_SYMBOL vmlinux 0x9d0a7f50 dquot_destroy +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d2b3758 sock_no_connect +EXPORT_SYMBOL vmlinux 0x9d33ef5e acpi_enable +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d4a46f3 skb_push +EXPORT_SYMBOL vmlinux 0x9d5a08bd dev_mc_sync +EXPORT_SYMBOL vmlinux 0x9d5ea3a5 dev_notice +EXPORT_SYMBOL vmlinux 0x9d71646b phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x9d90f95f __crc32c_le_combine +EXPORT_SYMBOL vmlinux 0x9d9898e0 setup_arg_pages +EXPORT_SYMBOL vmlinux 0x9dba1663 done_path_create +EXPORT_SYMBOL vmlinux 0x9dbb1190 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x9dc76dfc ata_dev_printk +EXPORT_SYMBOL vmlinux 0x9df94ff5 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x9dfe7307 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e174af8 dst_release +EXPORT_SYMBOL vmlinux 0x9e2000a7 memcpy_toiovecend +EXPORT_SYMBOL vmlinux 0x9e363b6b acpi_disable_gpe +EXPORT_SYMBOL vmlinux 0x9e4a0ba5 tcf_generic_walker +EXPORT_SYMBOL vmlinux 0x9e4b3747 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e64fbfe rtc_cmos_read +EXPORT_SYMBOL vmlinux 0x9e7d6bd0 __udelay +EXPORT_SYMBOL vmlinux 0x9e85b70a __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x9e929ae8 tcp_splice_read +EXPORT_SYMBOL vmlinux 0x9e9f1714 __bitmap_andnot +EXPORT_SYMBOL vmlinux 0x9ea0ad49 __sg_free_table +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ec4a5b4 phy_connect +EXPORT_SYMBOL vmlinux 0x9ed2eec7 param_set_ushort +EXPORT_SYMBOL vmlinux 0x9ed685ee iov_iter_advance +EXPORT_SYMBOL vmlinux 0x9edc3777 alloc_fcdev +EXPORT_SYMBOL vmlinux 0x9ee1f39d pci_pme_capable +EXPORT_SYMBOL vmlinux 0x9ee25e8f mpage_readpages +EXPORT_SYMBOL vmlinux 0x9f19259a phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x9f27a51e agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0x9f2bdaac __bitmap_or +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f491e5d ftrace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fadbb8e dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x9fb3dd30 memcpy_fromiovec +EXPORT_SYMBOL vmlinux 0x9fb4759b blk_mq_init_commands +EXPORT_SYMBOL vmlinux 0x9fc89aec jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9fe31ce6 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0x9ff3367d inode_init_always +EXPORT_SYMBOL vmlinux 0x9ff53749 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa00aca2a dql_completed +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa06d0925 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0xa06df9e1 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa0966e4b unregister_shrinker +EXPORT_SYMBOL vmlinux 0xa0a0e780 agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0xa0a81247 fd_install +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0ceef51 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0ef6599 pci_get_class +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa0fde545 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa10fd710 devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0xa11a0b22 serio_open +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa12c8214 release_firmware +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa16e7650 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0xa170c369 generic_pipe_buf_unmap +EXPORT_SYMBOL vmlinux 0xa1827234 dev_change_flags +EXPORT_SYMBOL vmlinux 0xa183a097 set_page_dirty +EXPORT_SYMBOL vmlinux 0xa1b4aefa udp_disconnect +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1d01536 get_write_access +EXPORT_SYMBOL vmlinux 0xa1d3cf79 check_disk_size_change +EXPORT_SYMBOL vmlinux 0xa1f299ff nf_reinject +EXPORT_SYMBOL vmlinux 0xa206e4b9 simple_setattr +EXPORT_SYMBOL vmlinux 0xa20ce1b8 net_msg_warn +EXPORT_SYMBOL vmlinux 0xa213c969 phy_print_status +EXPORT_SYMBOL vmlinux 0xa2256ce3 scsi_prep_fn +EXPORT_SYMBOL vmlinux 0xa2336d3a skb_checksum +EXPORT_SYMBOL vmlinux 0xa24ea552 dev_emerg +EXPORT_SYMBOL vmlinux 0xa25d9b12 gen10g_read_status +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa28a2ace ipmi_set_gets_events +EXPORT_SYMBOL vmlinux 0xa296855a inode_set_bytes +EXPORT_SYMBOL vmlinux 0xa29aedc1 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0xa29cd7db pipe_to_file +EXPORT_SYMBOL vmlinux 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL vmlinux 0xa2b11e1c soft_cursor +EXPORT_SYMBOL vmlinux 0xa2e153aa generic_readlink +EXPORT_SYMBOL vmlinux 0xa2ef34d7 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0xa3032dc1 register_qdisc +EXPORT_SYMBOL vmlinux 0xa334a14d noop_fsync +EXPORT_SYMBOL vmlinux 0xa339ef35 kernel_write +EXPORT_SYMBOL vmlinux 0xa33d9a48 acpi_decode_pld_buffer +EXPORT_SYMBOL vmlinux 0xa349e061 bio_split +EXPORT_SYMBOL vmlinux 0xa34f1ef5 crc32_le +EXPORT_SYMBOL vmlinux 0xa3504378 rwsem_wake +EXPORT_SYMBOL vmlinux 0xa350a8f8 set_memory_array_uc +EXPORT_SYMBOL vmlinux 0xa35b509a ps2_init +EXPORT_SYMBOL vmlinux 0xa35de80f ipv4_config +EXPORT_SYMBOL vmlinux 0xa363dab4 udp_table +EXPORT_SYMBOL vmlinux 0xa37b7352 qdisc_list_del +EXPORT_SYMBOL vmlinux 0xa37cb301 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0xa3a3b817 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0xa3cbe393 input_get_keycode +EXPORT_SYMBOL vmlinux 0xa3e5c7b4 acpi_bus_unregister_driver +EXPORT_SYMBOL vmlinux 0xa3fa7e45 max8925_reg_write +EXPORT_SYMBOL vmlinux 0xa40f7aae phy_device_free +EXPORT_SYMBOL vmlinux 0xa42bc8fa set_pages_array_wc +EXPORT_SYMBOL vmlinux 0xa435d8e8 dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0xa439cbb7 vc_cons +EXPORT_SYMBOL vmlinux 0xa43b1297 vscnprintf +EXPORT_SYMBOL vmlinux 0xa43b9539 memcpy_fromiovecend +EXPORT_SYMBOL vmlinux 0xa4409c3e dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa47d16ec scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4eb4eff _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xa51cdfe8 __FIXADDR_TOP +EXPORT_SYMBOL vmlinux 0xa548f066 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0xa54d16ba skb_queue_purge +EXPORT_SYMBOL vmlinux 0xa54f9618 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0xa5515a83 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa582d3f0 tcp_prequeue +EXPORT_SYMBOL vmlinux 0xa5850807 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xa587d416 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0xa58af841 pci_enable_ltr +EXPORT_SYMBOL vmlinux 0xa58edd9c register_md_personality +EXPORT_SYMBOL vmlinux 0xa5982ede sync_inodes_sb +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5afcf14 qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0xa5b5c696 inode_dio_wait +EXPORT_SYMBOL vmlinux 0xa5c3771e pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0xa5ce705c jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0xa5e1fc9c dev_get_by_index +EXPORT_SYMBOL vmlinux 0xa60c3368 clone_cred +EXPORT_SYMBOL vmlinux 0xa62e6e4f acpi_get_table_with_size +EXPORT_SYMBOL vmlinux 0xa63a2f9b param_get_ulong +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa655e85a d_make_root +EXPORT_SYMBOL vmlinux 0xa657ef5e inet_frags_fini +EXPORT_SYMBOL vmlinux 0xa6715115 do_settimeofday +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa67da660 mempool_alloc +EXPORT_SYMBOL vmlinux 0xa67e2845 dq_data_lock +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa68e7bfb pagecache_write_begin +EXPORT_SYMBOL vmlinux 0xa6970398 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0xa6b13658 __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xa6bd63ca acpi_bios_error +EXPORT_SYMBOL vmlinux 0xa70dbb63 pci_find_next_bus +EXPORT_SYMBOL vmlinux 0xa70fabbe release_evntsel_nmi +EXPORT_SYMBOL vmlinux 0xa71e7463 __first_cpu +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa739d408 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0xa76d4e40 vlan_vid_del +EXPORT_SYMBOL vmlinux 0xa7738f27 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0xa78c6948 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0xa79d71fa nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0xa79df844 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0xa7a0ed05 vga_get +EXPORT_SYMBOL vmlinux 0xa7a80b67 __lru_cache_add +EXPORT_SYMBOL vmlinux 0xa7c1bc91 mutex_unlock +EXPORT_SYMBOL vmlinux 0xa7c675ef dev_uc_flush +EXPORT_SYMBOL vmlinux 0xa7cab1b8 devm_ioremap +EXPORT_SYMBOL vmlinux 0xa7cf6c2f atomic64_dec_return_cx8 +EXPORT_SYMBOL vmlinux 0xa7e56a8d __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0xa80634fb netdev_warn +EXPORT_SYMBOL vmlinux 0xa82043d7 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa841f138 nf_register_hooks +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa84b4e6f kmem_cache_free +EXPORT_SYMBOL vmlinux 0xa855905b security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa879eda3 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0xa89a2407 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0xa8a6f639 __check_region +EXPORT_SYMBOL vmlinux 0xa8bc40ab set_pages_array_uc +EXPORT_SYMBOL vmlinux 0xa8ced4d6 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0xa8d522a1 dmam_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0xa8f9218e tcp_getsockopt +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa909528e padata_start +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa918291f lro_receive_frags +EXPORT_SYMBOL vmlinux 0xa91b5561 acpi_video_backlight_support +EXPORT_SYMBOL vmlinux 0xa9317313 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0xa9417054 fixed_size_llseek +EXPORT_SYMBOL vmlinux 0xa9611fe0 bitmap_unplug +EXPORT_SYMBOL vmlinux 0xa9714662 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0xa975905e end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0xa976f612 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0xa979924a bioset_free +EXPORT_SYMBOL vmlinux 0xa9a8e17f arch_phys_wc_add +EXPORT_SYMBOL vmlinux 0xaa01f911 generic_file_buffered_write +EXPORT_SYMBOL vmlinux 0xaa18e374 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0xaa214a0a vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0xaa2bc86b sk_dst_check +EXPORT_SYMBOL vmlinux 0xaa5663f8 __serio_register_driver +EXPORT_SYMBOL vmlinux 0xaa5d682f sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0xaa643fc9 bdget_disk +EXPORT_SYMBOL vmlinux 0xaa6901ac __kfifo_out_r +EXPORT_SYMBOL vmlinux 0xaa6aa95c devfreq_add_device +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa8fea18 acpi_processor_register_performance +EXPORT_SYMBOL vmlinux 0xaa9050b1 scsi_prep_state_check +EXPORT_SYMBOL vmlinux 0xaa9087c0 param_ops_string +EXPORT_SYMBOL vmlinux 0xaa93eb56 tcf_hash_search +EXPORT_SYMBOL vmlinux 0xaac1c795 blk_bio_map_sg +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaae8ab0e acpi_bus_power_manageable +EXPORT_SYMBOL vmlinux 0xaaeee73b blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab000847 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0xab040574 kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0xab0896b6 __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0xab28271c i8253_lock +EXPORT_SYMBOL vmlinux 0xab331704 pci_enable_device +EXPORT_SYMBOL vmlinux 0xab4df7b3 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xab5c3b06 send_sig_info +EXPORT_SYMBOL vmlinux 0xab5cb606 sync_inode +EXPORT_SYMBOL vmlinux 0xab5ec300 flush_signals +EXPORT_SYMBOL vmlinux 0xab600421 probe_irq_off +EXPORT_SYMBOL vmlinux 0xab65ed80 set_memory_uc +EXPORT_SYMBOL vmlinux 0xab66f507 blk_post_runtime_suspend +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 0xab8d95cd dev_err +EXPORT_SYMBOL vmlinux 0xaba39ddd pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0xaba7edcb balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0xabc5d3c6 agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0xabc6dd63 cpufreq_sysfs_create_file +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabd0c91c rtc_time_to_tm +EXPORT_SYMBOL vmlinux 0xabe3b9f3 __ip_dev_find +EXPORT_SYMBOL vmlinux 0xabe73b98 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0xabfe6aa5 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0xabfe9b92 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac12d109 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac2d2fb8 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0xac3ab1f4 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0xac3b4824 file_remove_suid +EXPORT_SYMBOL vmlinux 0xac42514b __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0xac58ea5e acpi_unload_table_id +EXPORT_SYMBOL vmlinux 0xac8b610d inet6_release +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacad5e5a ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0xacc02e18 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad0bad15 lookup_one_len +EXPORT_SYMBOL vmlinux 0xad13c689 acpi_os_execute +EXPORT_SYMBOL vmlinux 0xad222909 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0xad268ca0 __block_write_begin +EXPORT_SYMBOL vmlinux 0xad2a8bd2 x86_bios_cpu_apicid +EXPORT_SYMBOL vmlinux 0xad5830c2 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0xad6db962 blk_fetch_request +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad879bb3 arp_create +EXPORT_SYMBOL vmlinux 0xad9136a7 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0xae035d34 pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0xae0e1397 agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0xae21fb1f set_binfmt +EXPORT_SYMBOL vmlinux 0xae4879ac clocksource_register +EXPORT_SYMBOL vmlinux 0xae67f838 make_kgid +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xaea976a8 acpi_check_resource_conflict +EXPORT_SYMBOL vmlinux 0xaec655c7 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0xaef5d730 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0xaefa2130 d_obtain_alias +EXPORT_SYMBOL vmlinux 0xaf14ffe5 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf40dafc neigh_destroy +EXPORT_SYMBOL vmlinux 0xaf4b1540 acpi_get_irq_routing_table +EXPORT_SYMBOL vmlinux 0xaf5dd78b security_path_truncate +EXPORT_SYMBOL vmlinux 0xaf611eac amd_nb_misc_ids +EXPORT_SYMBOL vmlinux 0xaf64ad0d zlib_deflate +EXPORT_SYMBOL vmlinux 0xaf91d89f __kernel_param_lock +EXPORT_SYMBOL vmlinux 0xaf9a42c3 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0xaf9d9ecc __register_nmi_handler +EXPORT_SYMBOL vmlinux 0xafa0a58a __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xafad493b param_ops_ushort +EXPORT_SYMBOL vmlinux 0xafbe725a send_sig +EXPORT_SYMBOL vmlinux 0xafd5c392 f_setown +EXPORT_SYMBOL vmlinux 0xafe284d0 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0xafe86d3b inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0xaff76725 sock_create_lite +EXPORT_SYMBOL vmlinux 0xb0064c7f __sb_end_write +EXPORT_SYMBOL vmlinux 0xb0171887 proto_register +EXPORT_SYMBOL vmlinux 0xb01b193c notify_change +EXPORT_SYMBOL vmlinux 0xb01b1db8 intel_gtt_insert_sg_entries +EXPORT_SYMBOL vmlinux 0xb0207ecf ___ratelimit +EXPORT_SYMBOL vmlinux 0xb02d1769 nobh_write_begin +EXPORT_SYMBOL vmlinux 0xb02f8626 ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0xb03e24dc scsi_nonblockable_ioctl +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb06525c3 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0xb067f50e blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0xb068f619 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0xb0745548 noop_qdisc +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0b72133 sock_wfree +EXPORT_SYMBOL vmlinux 0xb0b847ac __bitmap_full +EXPORT_SYMBOL vmlinux 0xb0dcd9ad md_check_recovery +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0e1128c skb_pad +EXPORT_SYMBOL vmlinux 0xb0ffda2f blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xb101f655 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb15e37fa xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb1802451 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0xb192fec8 mpage_readpage +EXPORT_SYMBOL vmlinux 0xb19760c3 bitmap_onto +EXPORT_SYMBOL vmlinux 0xb198459e isapnp_protocol +EXPORT_SYMBOL vmlinux 0xb19fe8b4 flock_lock_file_wait +EXPORT_SYMBOL vmlinux 0xb1aaab39 tty_set_operations +EXPORT_SYMBOL vmlinux 0xb1c30c34 __scsi_device_lookup_by_target +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 0xb1d9523e wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0xb1db9e4e param_get_invbool +EXPORT_SYMBOL vmlinux 0xb1dc00ba tty_pair_get_tty +EXPORT_SYMBOL vmlinux 0xb1eca60a dcb_setapp +EXPORT_SYMBOL vmlinux 0xb219d56c wbinvd_on_cpu +EXPORT_SYMBOL vmlinux 0xb2338c0a search_binary_handler +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb2744b36 down_write_trylock +EXPORT_SYMBOL vmlinux 0xb28b946d swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0xb2972db1 __bread +EXPORT_SYMBOL vmlinux 0xb2ab4f2d sk_common_release +EXPORT_SYMBOL vmlinux 0xb2b94674 __crc32c_le +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2c67d4e tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0xb2cf225e unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0xb2d252a1 seq_open_private +EXPORT_SYMBOL vmlinux 0xb2d48a2e queue_work_on +EXPORT_SYMBOL vmlinux 0xb2d82eda twl6040_set_bits +EXPORT_SYMBOL vmlinux 0xb2e03b1f pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0xb2e2ad27 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0xb2f74fb6 intel_gmch_remove +EXPORT_SYMBOL vmlinux 0xb2fd51cc d_splice_alias +EXPORT_SYMBOL vmlinux 0xb2fd5ceb __put_user_4 +EXPORT_SYMBOL vmlinux 0xb3113e05 inet_sendmsg +EXPORT_SYMBOL vmlinux 0xb321a4c7 scsi_register_interface +EXPORT_SYMBOL vmlinux 0xb3284531 acpi_dbg_layer +EXPORT_SYMBOL vmlinux 0xb32be6d6 kern_path +EXPORT_SYMBOL vmlinux 0xb34ef535 x86_hyper_vmware +EXPORT_SYMBOL vmlinux 0xb352177e find_first_bit +EXPORT_SYMBOL vmlinux 0xb35ef2d2 splice_from_pipe_end +EXPORT_SYMBOL vmlinux 0xb36cc024 ping_prot +EXPORT_SYMBOL vmlinux 0xb3bbf7ca vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0xb3e0590d acpi_set_current_resources +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb428decd blk_init_queue_node +EXPORT_SYMBOL vmlinux 0xb4378929 agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0xb437d506 dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0xb4390f9a mcount +EXPORT_SYMBOL vmlinux 0xb45578b8 memscan +EXPORT_SYMBOL vmlinux 0xb45eaf64 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb472ffe2 __genl_register_family +EXPORT_SYMBOL vmlinux 0xb47ddd1a invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0xb483ac2c fb_get_mode +EXPORT_SYMBOL vmlinux 0xb48db1ce blk_init_tags +EXPORT_SYMBOL vmlinux 0xb48f9802 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0xb4b26b3d scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0xb4b33be9 deactivate_super +EXPORT_SYMBOL vmlinux 0xb4d6fd6c in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xb4d9005f sk_filter +EXPORT_SYMBOL vmlinux 0xb4fef63a cdev_add +EXPORT_SYMBOL vmlinux 0xb52ee8be intel_gtt_clear_range +EXPORT_SYMBOL vmlinux 0xb53f40a8 iget_locked +EXPORT_SYMBOL vmlinux 0xb54533f7 usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xb55916dd phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb58aca75 generic_write_end +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5ad20e5 dev_load +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5de0aa5 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0xb61c5128 km_state_notify +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb6394d4b param_set_bint +EXPORT_SYMBOL vmlinux 0xb6743c51 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb67fc747 proc_create_data +EXPORT_SYMBOL vmlinux 0xb6822a33 radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xb6896671 crc_t10dif +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6b46a7c param_ops_int +EXPORT_SYMBOL vmlinux 0xb6b6d58b __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0xb6c5a973 scsi_show_result +EXPORT_SYMBOL vmlinux 0xb6c6b12f dma_release_from_coherent +EXPORT_SYMBOL vmlinux 0xb6dd5495 always_delete_dentry +EXPORT_SYMBOL vmlinux 0xb6e10bc0 register_key_type +EXPORT_SYMBOL vmlinux 0xb6ed1e53 strncpy +EXPORT_SYMBOL vmlinux 0xb6f8999a ip_queue_xmit +EXPORT_SYMBOL vmlinux 0xb70bf4ce tty_pair_get_pty +EXPORT_SYMBOL vmlinux 0xb71029f6 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0xb7232c84 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0xb758b225 acpi_disable_event +EXPORT_SYMBOL vmlinux 0xb766cc0b request_firmware +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb776d7ee cap_mmap_file +EXPORT_SYMBOL vmlinux 0xb7a2a998 mount_ns +EXPORT_SYMBOL vmlinux 0xb7b0d041 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0xb7b61546 crc32_be +EXPORT_SYMBOL vmlinux 0xb7c41cfd blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0xb7c6db70 sysctl_max_skb_frags +EXPORT_SYMBOL vmlinux 0xb7de0f2f pci_platform_rom +EXPORT_SYMBOL vmlinux 0xb7f55ecc atomic64_add_return_cx8 +EXPORT_SYMBOL vmlinux 0xb80e8bdf __dquot_transfer +EXPORT_SYMBOL vmlinux 0xb80f1b0c dmam_pool_create +EXPORT_SYMBOL vmlinux 0xb81960ca snprintf +EXPORT_SYMBOL vmlinux 0xb81a87e6 seq_pad +EXPORT_SYMBOL vmlinux 0xb835b3e4 radix_tree_prev_hole +EXPORT_SYMBOL vmlinux 0xb8402359 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0xb8738e69 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb87cedf9 sock_create +EXPORT_SYMBOL vmlinux 0xb883b843 dquot_resume +EXPORT_SYMBOL vmlinux 0xb883f0e7 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0xb8b88aa0 devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0xb8d2af25 override_creds +EXPORT_SYMBOL vmlinux 0xb8d73e97 param_set_uint +EXPORT_SYMBOL vmlinux 0xb8e7ce2c __put_user_8 +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb8f2e7cf pcim_pin_device +EXPORT_SYMBOL vmlinux 0xb907513f unpoison_memory +EXPORT_SYMBOL vmlinux 0xb9111c0b scsi_print_command +EXPORT_SYMBOL vmlinux 0xb94e5f95 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0xb95d88c4 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0xb98a0185 rtc_tm_to_time +EXPORT_SYMBOL vmlinux 0xb9b40e2a devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xb9b602ee mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0xb9cb7531 key_validate +EXPORT_SYMBOL vmlinux 0xb9e67785 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9fd2205 add_efi_memmap +EXPORT_SYMBOL vmlinux 0xba026c94 phy_scan_fixups +EXPORT_SYMBOL vmlinux 0xba073fe1 try_module_get +EXPORT_SYMBOL vmlinux 0xba0cf143 fb_blank +EXPORT_SYMBOL vmlinux 0xba2d8594 ec_read +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba658f3e __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0xba878a4c ps2_handle_response +EXPORT_SYMBOL vmlinux 0xba8ea6ad rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0xbab83a80 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0xbae3b71e dev_queue_xmit +EXPORT_SYMBOL vmlinux 0xbaf99e45 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0xbafa8012 pci_bus_get +EXPORT_SYMBOL vmlinux 0xbb189cad disallow_signal +EXPORT_SYMBOL vmlinux 0xbb1d3f4d tcf_register_action +EXPORT_SYMBOL vmlinux 0xbb279a6a pci_disable_msix +EXPORT_SYMBOL vmlinux 0xbb2ab806 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0xbb47cf1d inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xbb4c8664 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0xbb514f90 igrab +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb713e6d sk_filter_release_rcu +EXPORT_SYMBOL vmlinux 0xbb7d01f5 block_commit_write +EXPORT_SYMBOL vmlinux 0xbb8c9ea3 phy_disconnect +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbb9f0625 mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0xbbc11255 pid_task +EXPORT_SYMBOL vmlinux 0xbbc29965 ab3100_event_register +EXPORT_SYMBOL vmlinux 0xbbdbe324 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0xbc0469eb netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0xbc1afedf up_write +EXPORT_SYMBOL vmlinux 0xbc2031de acpi_processor_get_bios_limit +EXPORT_SYMBOL vmlinux 0xbc258f8b genphy_setup_forced +EXPORT_SYMBOL vmlinux 0xbc3a0f45 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0xbc3b7bfe scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0xbc435770 dump_stack +EXPORT_SYMBOL vmlinux 0xbc4a90fa pci_map_biosrom +EXPORT_SYMBOL vmlinux 0xbc5c1d99 netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0xbc748d13 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0xbc77fc57 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0xbc79e8f7 pci_choose_state +EXPORT_SYMBOL vmlinux 0xbc7b3e69 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0xbc7f746d cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0xbc98b793 dquot_quota_on +EXPORT_SYMBOL vmlinux 0xbcbfab53 pci_match_id +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbccb086a drop_nlink +EXPORT_SYMBOL vmlinux 0xbccdc99c __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xbcd59676 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0xbce64abb ppp_dev_name +EXPORT_SYMBOL vmlinux 0xbcf8b3c3 check_disk_change +EXPORT_SYMBOL vmlinux 0xbd0ab8e5 skb_copy_datagram_from_iovec +EXPORT_SYMBOL vmlinux 0xbd28696c xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0xbd600ec2 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0xbd610577 read_dev_sector +EXPORT_SYMBOL vmlinux 0xbd76b5d5 bio_map_kern +EXPORT_SYMBOL vmlinux 0xbda6067f devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0xbdaf5b07 acpi_os_read_port +EXPORT_SYMBOL vmlinux 0xbdb042e9 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0xbdba9828 hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xbdcb865e tty_unregister_driver +EXPORT_SYMBOL vmlinux 0xbde19480 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xbdf2fc6f dquot_quota_sync +EXPORT_SYMBOL vmlinux 0xbe0108c6 ipmi_smi_watcher_unregister +EXPORT_SYMBOL vmlinux 0xbe0e5118 nla_memcmp +EXPORT_SYMBOL vmlinux 0xbe1ac3aa blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0xbe2c0274 add_timer +EXPORT_SYMBOL vmlinux 0xbe342028 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0xbe38dfda md_register_thread +EXPORT_SYMBOL vmlinux 0xbe3c9280 d_prune_aliases +EXPORT_SYMBOL vmlinux 0xbe7c685f get_fs_type +EXPORT_SYMBOL vmlinux 0xbe8c37d9 intel_scu_ipc_simple_command +EXPORT_SYMBOL vmlinux 0xbebbbc10 xfrm_cfg_mutex +EXPORT_SYMBOL vmlinux 0xbec30d05 x86_match_cpu +EXPORT_SYMBOL vmlinux 0xbec670d5 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0xbecf5f84 free_user_ns +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf14ab61 __destroy_inode +EXPORT_SYMBOL vmlinux 0xbf2d4847 tcf_hash_lookup +EXPORT_SYMBOL vmlinux 0xbf6a1ff8 neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0xbf7c43b9 kmap_atomic +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8b39e9 isapnp_present +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbf9bea3b i2c_verify_client +EXPORT_SYMBOL vmlinux 0xbfaa984f vga_switcheroo_init_domain_pm_optimus_hdmi_audio +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbff52cf9 security_path_rename +EXPORT_SYMBOL vmlinux 0xc00040c7 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0xc01cf848 _raw_read_lock +EXPORT_SYMBOL vmlinux 0xc01eed33 __copy_from_user_ll_nozero +EXPORT_SYMBOL vmlinux 0xc02cf69b clkdev_drop +EXPORT_SYMBOL vmlinux 0xc03faeed dev_mc_add_global +EXPORT_SYMBOL vmlinux 0xc0415db1 __page_symlink +EXPORT_SYMBOL vmlinux 0xc055f9e9 inode_init_once +EXPORT_SYMBOL vmlinux 0xc068440e __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc09ae076 set_groups +EXPORT_SYMBOL vmlinux 0xc09ebc61 tty_vhangup +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0a86c94 seq_escape +EXPORT_SYMBOL vmlinux 0xc0ac1189 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0xc0f7bc01 update_time +EXPORT_SYMBOL vmlinux 0xc11c7d9d xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0xc12ec3a6 dns_query +EXPORT_SYMBOL vmlinux 0xc1524068 rfkill_alloc +EXPORT_SYMBOL vmlinux 0xc15c7777 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0xc18391c0 pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0xc186f617 from_kgid +EXPORT_SYMBOL vmlinux 0xc191cd47 pci_dev_driver +EXPORT_SYMBOL vmlinux 0xc1a4025a blk_delay_queue +EXPORT_SYMBOL vmlinux 0xc1b41ff6 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0xc1b82d22 register_shrinker +EXPORT_SYMBOL vmlinux 0xc1c250ca phy_attach +EXPORT_SYMBOL vmlinux 0xc1c2dd09 __hw_addr_flush +EXPORT_SYMBOL vmlinux 0xc1e2503b thaw_super +EXPORT_SYMBOL vmlinux 0xc1e4ae14 mmc_remove_host +EXPORT_SYMBOL vmlinux 0xc2016933 eth_mac_addr +EXPORT_SYMBOL vmlinux 0xc2090a33 get_phy_device +EXPORT_SYMBOL vmlinux 0xc2177ac8 fifo_set_limit +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc256e762 __bitmap_equal +EXPORT_SYMBOL vmlinux 0xc258f9a4 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0xc26259e1 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0xc26a7f25 i8042_remove_filter +EXPORT_SYMBOL vmlinux 0xc27dda21 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0xc280a525 __copy_from_user_ll +EXPORT_SYMBOL vmlinux 0xc293a804 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0xc29bf6fe udp_proc_unregister +EXPORT_SYMBOL vmlinux 0xc2a3b76c __skb_get_hash +EXPORT_SYMBOL vmlinux 0xc2a4bf5b abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0xc2b17a39 block_invalidatepage +EXPORT_SYMBOL vmlinux 0xc2d108dd scsi_calculate_bounce_limit +EXPORT_SYMBOL vmlinux 0xc2d711e1 krealloc +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc303c500 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0xc30a08a8 blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0xc327e564 kset_unregister +EXPORT_SYMBOL vmlinux 0xc3521bd8 dma_supported +EXPORT_SYMBOL vmlinux 0xc37a7940 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0xc37a819e tty_do_resize +EXPORT_SYMBOL vmlinux 0xc3848f50 bioset_create +EXPORT_SYMBOL vmlinux 0xc38724eb netlink_ack +EXPORT_SYMBOL vmlinux 0xc390c1f0 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0xc3a1abfe sget +EXPORT_SYMBOL vmlinux 0xc3a95b38 tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xc3aaf0a9 __put_user_1 +EXPORT_SYMBOL vmlinux 0xc3bb9e57 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0xc3e3c957 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0xc3ef30ad skb_unlink +EXPORT_SYMBOL vmlinux 0xc3fa6a59 memchr +EXPORT_SYMBOL vmlinux 0xc3fd24ae would_dump +EXPORT_SYMBOL vmlinux 0xc40213fa pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xc41e8f7a wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0xc41f0516 node_states +EXPORT_SYMBOL vmlinux 0xc4217100 pv_cpu_ops +EXPORT_SYMBOL vmlinux 0xc42baaa7 pci_disable_ido +EXPORT_SYMBOL vmlinux 0xc43c86fe sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0xc44afdba __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xc4554217 up +EXPORT_SYMBOL vmlinux 0xc479c628 init_special_inode +EXPORT_SYMBOL vmlinux 0xc48422e0 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc4c5b636 dqget +EXPORT_SYMBOL vmlinux 0xc4dcfb52 tcf_hash_create +EXPORT_SYMBOL vmlinux 0xc4e5c070 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0xc4e88331 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0xc508ab53 __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0xc5169697 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc55eeccf scsi_prep_return +EXPORT_SYMBOL vmlinux 0xc57ab7bc proc_dostring +EXPORT_SYMBOL vmlinux 0xc589e044 param_set_long +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc6285db5 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc63cc125 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0xc6423c5a netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc6645b42 mempool_create_node +EXPORT_SYMBOL vmlinux 0xc66a5191 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0xc696780b kmap_to_page +EXPORT_SYMBOL vmlinux 0xc6b23120 intel_scu_ipc_iowrite16 +EXPORT_SYMBOL vmlinux 0xc6b368d3 acpi_gpe_count +EXPORT_SYMBOL vmlinux 0xc6bb00a0 km_state_expired +EXPORT_SYMBOL vmlinux 0xc6c14052 sock_rfree +EXPORT_SYMBOL vmlinux 0xc6c248e6 iget5_locked +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc7004e21 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc72e3d4a skb_orphan_partial +EXPORT_SYMBOL vmlinux 0xc7398dee write_one_page +EXPORT_SYMBOL vmlinux 0xc75155ef try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xc7575dfe submit_bio_wait +EXPORT_SYMBOL vmlinux 0xc759280e phy_stop +EXPORT_SYMBOL vmlinux 0xc75c63c9 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0xc761d2d3 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0xc7635436 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0xc768de19 cpu_all_bits +EXPORT_SYMBOL vmlinux 0xc77529bf writeback_in_progress +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a35d44 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7b9aed2 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0xc7d2d7e8 x86_hyper_xen_hvm +EXPORT_SYMBOL vmlinux 0xc7e0f64e twl6040_reg_read +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc7ec6cde security_mmap_file +EXPORT_SYMBOL vmlinux 0xc816c482 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0xc8276a79 nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xc8339e24 string_unescape +EXPORT_SYMBOL vmlinux 0xc8393083 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc84e01e1 page_follow_link_light +EXPORT_SYMBOL vmlinux 0xc84e2931 tcp_gso_segment +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8b975f4 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0xc8b9d3af dma_common_mmap +EXPORT_SYMBOL vmlinux 0xc8cfca08 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0xc8d423ad gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0xc8e0325d capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0xc8e44761 request_key +EXPORT_SYMBOL vmlinux 0xc8ff115e jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0xc92d15f3 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xc9335b03 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0xc94c02ec sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xc95c984e seq_bitmap +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc993fc0f find_lock_page +EXPORT_SYMBOL vmlinux 0xc996d097 del_timer +EXPORT_SYMBOL vmlinux 0xc9b56929 pci_set_power_state +EXPORT_SYMBOL vmlinux 0xc9baed4f dm_get_device +EXPORT_SYMBOL vmlinux 0xc9c26e37 zerocopy_sg_from_iovec +EXPORT_SYMBOL vmlinux 0xc9c3b2e1 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0xc9c41f4e pci_clear_master +EXPORT_SYMBOL vmlinux 0xc9e5c0ac neigh_for_each +EXPORT_SYMBOL vmlinux 0xc9eaedd1 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0xca15707b i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0xca18bdf8 mmc_add_host +EXPORT_SYMBOL vmlinux 0xca1a7317 __register_chrdev +EXPORT_SYMBOL vmlinux 0xca20f222 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0xca25c977 scsi_setup_blk_pc_cmnd +EXPORT_SYMBOL vmlinux 0xca2fb3b0 register_netdevice +EXPORT_SYMBOL vmlinux 0xca323892 inet_add_protocol +EXPORT_SYMBOL vmlinux 0xca589746 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0xca5dbc50 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xca7e00af get_io_context +EXPORT_SYMBOL vmlinux 0xca8acc78 acpi_dbg_level +EXPORT_SYMBOL vmlinux 0xca8c299e simple_transaction_get +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xca9637b6 __pci_enable_wake +EXPORT_SYMBOL vmlinux 0xcaac74dc fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0xcabe7c10 key_link +EXPORT_SYMBOL vmlinux 0xcabf4017 neigh_table_clear +EXPORT_SYMBOL vmlinux 0xcad88ce1 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0xcad9381c blk_peek_request +EXPORT_SYMBOL vmlinux 0xcae68706 find_get_pages_tag +EXPORT_SYMBOL vmlinux 0xcaecac16 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb07f41d unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xcb0c5d50 param_get_uint +EXPORT_SYMBOL vmlinux 0xcb3d3191 tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0xcb5f1443 complete_request_key +EXPORT_SYMBOL vmlinux 0xcb733bf2 acpi_bus_set_power +EXPORT_SYMBOL vmlinux 0xcb739b77 kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0xcb77bc47 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0xcb8bf417 mmc_of_parse +EXPORT_SYMBOL vmlinux 0xcb8efd90 block_read_full_page +EXPORT_SYMBOL vmlinux 0xcb9da882 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0xcba7da5f skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0xcbae6c7a acpi_lid_notifier_unregister +EXPORT_SYMBOL vmlinux 0xcbb0a4e9 keyring_clear +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbcaf401 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0xcbf6aa2d sk_stop_timer +EXPORT_SYMBOL vmlinux 0xcbfe6850 tty_port_close +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc33e9bd inet_dgram_connect +EXPORT_SYMBOL vmlinux 0xcc37f55c blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xcc441614 __alloc_skb +EXPORT_SYMBOL vmlinux 0xcc45bb1e ilookup +EXPORT_SYMBOL vmlinux 0xcc4d1bfb atomic64_read_cx8 +EXPORT_SYMBOL vmlinux 0xcc4f496f qdisc_reset +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc6b4397 vfs_create +EXPORT_SYMBOL vmlinux 0xcc7fa952 local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0xcc8257a1 i2c_master_send +EXPORT_SYMBOL vmlinux 0xcc84fd22 pci_claim_resource +EXPORT_SYMBOL vmlinux 0xccbf927d jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0xccbffddf scsi_remove_target +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccc3c921 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0xccc5d025 set_pages_x +EXPORT_SYMBOL vmlinux 0xcccbf197 loop_register_transfer +EXPORT_SYMBOL vmlinux 0xccd6e1a9 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xcd036810 contig_page_data +EXPORT_SYMBOL vmlinux 0xcd06d933 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd2b5b35 dev_add_offload +EXPORT_SYMBOL vmlinux 0xcd461650 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0xcd50357b follow_pfn +EXPORT_SYMBOL vmlinux 0xcd57d15d truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0xcd57e404 bio_phys_segments +EXPORT_SYMBOL vmlinux 0xcd6a28ed napi_complete +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdc40fae panic_notifier_list +EXPORT_SYMBOL vmlinux 0xcdce699f mmc_cache_ctrl +EXPORT_SYMBOL vmlinux 0xcde172ac radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0xce01b50f vga_switcheroo_unregister_client +EXPORT_SYMBOL vmlinux 0xce0d2338 finish_no_open +EXPORT_SYMBOL vmlinux 0xce1b8fc6 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce3f49b1 pci_dev_put +EXPORT_SYMBOL vmlinux 0xce45f448 i2c_release_client +EXPORT_SYMBOL vmlinux 0xce460bf6 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0xce4904a4 acpi_leave_sleep_state +EXPORT_SYMBOL vmlinux 0xce55498e vm_map_ram +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce77bfce xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0xce828c02 proc_set_user +EXPORT_SYMBOL vmlinux 0xce88efb4 boot_cpu_data +EXPORT_SYMBOL vmlinux 0xcea40407 I_BDEV +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xcebe7255 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0xcec0e52c udp_ioctl +EXPORT_SYMBOL vmlinux 0xcef4b591 vfs_write +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf08f580 inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0xcf0c369c filemap_fault +EXPORT_SYMBOL vmlinux 0xcf1f61c6 generic_delete_inode +EXPORT_SYMBOL vmlinux 0xcf27228b remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0xcf5576c9 sock_wmalloc +EXPORT_SYMBOL vmlinux 0xcf6afd5d sock_update_classid +EXPORT_SYMBOL vmlinux 0xcf6cfe1f msrs_free +EXPORT_SYMBOL vmlinux 0xcf72f1a8 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0xcf791d2b call_netdevice_notifiers_info +EXPORT_SYMBOL vmlinux 0xcf965ed7 tty_write_room +EXPORT_SYMBOL vmlinux 0xcf997011 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0xcfa66576 phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0xcfb4ae59 blk_get_request +EXPORT_SYMBOL vmlinux 0xcfbe4462 bdevname +EXPORT_SYMBOL vmlinux 0xcfe05d4d register_kmmio_probe +EXPORT_SYMBOL vmlinux 0xcffd9980 inet_frags_init +EXPORT_SYMBOL vmlinux 0xd007f3b5 console_start +EXPORT_SYMBOL vmlinux 0xd01386c1 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0xd0181f4f __bitmap_xor +EXPORT_SYMBOL vmlinux 0xd01d7742 security_path_chown +EXPORT_SYMBOL vmlinux 0xd0216784 pnp_unregister_driver +EXPORT_SYMBOL vmlinux 0xd0252a80 inet_sendpage +EXPORT_SYMBOL vmlinux 0xd03baf85 __sk_dst_check +EXPORT_SYMBOL vmlinux 0xd05d98a5 skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd0750837 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0xd076d081 vga_switcheroo_register_audio_client +EXPORT_SYMBOL vmlinux 0xd07865c9 submit_bio +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0b397cf inet_accept +EXPORT_SYMBOL vmlinux 0xd0d42c42 mod_timer_pending +EXPORT_SYMBOL vmlinux 0xd0d8621b strlen +EXPORT_SYMBOL vmlinux 0xd0dff60f __register_binfmt +EXPORT_SYMBOL vmlinux 0xd0e21ff3 prepare_creds +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0f0d945 down_read +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 0xd11c0dc1 __kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xd162b56c __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0xd1652a93 acpi_info +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd182b14a netdev_lower_dev_get_private_rcu +EXPORT_SYMBOL vmlinux 0xd18b6eb2 acpi_unmap_lsapic +EXPORT_SYMBOL vmlinux 0xd196c9be kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xd197a30f pskb_expand_head +EXPORT_SYMBOL vmlinux 0xd1a4fe37 pm860x_page_bulk_write +EXPORT_SYMBOL vmlinux 0xd1cd48d7 __dquot_free_space +EXPORT_SYMBOL vmlinux 0xd1f6c5f3 smp_num_siblings +EXPORT_SYMBOL vmlinux 0xd201cc42 pci_request_region +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd2271508 pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0xd2329de3 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xd23c2d2d input_allocate_device +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd2587931 agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd25ef840 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0xd266efe7 mempool_create +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd2952229 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0xd29aba98 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0xd2aefd86 get_super_thawed +EXPORT_SYMBOL vmlinux 0xd2af138b reservation_ww_class +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2e6a582 acpi_processor_preregister_performance +EXPORT_SYMBOL vmlinux 0xd2eae178 agp_unbind_memory +EXPORT_SYMBOL vmlinux 0xd2ee63cd vga_switcheroo_register_handler +EXPORT_SYMBOL vmlinux 0xd2fa208d block_write_full_page +EXPORT_SYMBOL vmlinux 0xd327ca1a __f_setown +EXPORT_SYMBOL vmlinux 0xd35e249a _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0xd39fc559 security_inode_readlink +EXPORT_SYMBOL vmlinux 0xd3a83d2a ipmi_smi_add_proc_entry +EXPORT_SYMBOL vmlinux 0xd3b8b97d sync_blockdev +EXPORT_SYMBOL vmlinux 0xd3bb7b57 mddev_congested +EXPORT_SYMBOL vmlinux 0xd3bdd620 dev_get_by_name +EXPORT_SYMBOL vmlinux 0xd3cd9041 phy_start_aneg +EXPORT_SYMBOL vmlinux 0xd3dcab0b flex_array_alloc +EXPORT_SYMBOL vmlinux 0xd3f21bce mnt_pin +EXPORT_SYMBOL vmlinux 0xd415bd25 pci_remove_bus +EXPORT_SYMBOL vmlinux 0xd41aafdf dev_mc_add +EXPORT_SYMBOL vmlinux 0xd428a101 fget_light +EXPORT_SYMBOL vmlinux 0xd446cc8a alloc_disk_node +EXPORT_SYMBOL vmlinux 0xd4835ef8 dmi_check_system +EXPORT_SYMBOL vmlinux 0xd4897c02 pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0xd4ac58cd netdev_has_any_upper_dev +EXPORT_SYMBOL vmlinux 0xd4bd4573 tc_classify_compat +EXPORT_SYMBOL vmlinux 0xd4c3b174 printk_emit +EXPORT_SYMBOL vmlinux 0xd4d53c4f udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0xd4ea3900 uart_resume_port +EXPORT_SYMBOL vmlinux 0xd4f11c2f seq_lseek +EXPORT_SYMBOL vmlinux 0xd5059be0 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0xd50fef48 acpi_detach_data +EXPORT_SYMBOL vmlinux 0xd532ee1b __skb_checksum +EXPORT_SYMBOL vmlinux 0xd55f62dd posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0xd57db610 dev_addr_flush +EXPORT_SYMBOL vmlinux 0xd5f2172f del_timer_sync +EXPORT_SYMBOL vmlinux 0xd5f92465 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0xd6010d4b pnpacpi_protocol +EXPORT_SYMBOL vmlinux 0xd613a13f kernel_getsockopt +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd61b5f36 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0xd61b7311 simple_pin_fs +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd64bd9d4 page_symlink +EXPORT_SYMBOL vmlinux 0xd652ccfe security_path_mknod +EXPORT_SYMBOL vmlinux 0xd667f6da jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xd6744ab9 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0xd67ecc95 dev_remove_pack +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd6b1cae6 genphy_update_link +EXPORT_SYMBOL vmlinux 0xd6b33026 cpu_khz +EXPORT_SYMBOL vmlinux 0xd6bb42cb lookup_bdev +EXPORT_SYMBOL vmlinux 0xd6c2d62e blk_init_queue +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6f816dc devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0xd7046977 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xd7309f12 inet_del_offload +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd76be303 scsi_device_put +EXPORT_SYMBOL vmlinux 0xd76e8340 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0xd77a5aa5 __bitmap_and +EXPORT_SYMBOL vmlinux 0xd77ab9ae __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0xd79b5a02 allow_signal +EXPORT_SYMBOL vmlinux 0xd7b73857 inode_permission +EXPORT_SYMBOL vmlinux 0xd7bd3af2 add_wait_queue +EXPORT_SYMBOL vmlinux 0xd7bdefd1 neigh_connected_output +EXPORT_SYMBOL vmlinux 0xd7d05c2e ppp_input +EXPORT_SYMBOL vmlinux 0xd7d8f66e dquot_acquire +EXPORT_SYMBOL vmlinux 0xd7dd777b reserve_perfctr_nmi +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7e958fa pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd7ecba0c sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0xd81f5995 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0xd820af05 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0xd83bf290 dev_trans_start +EXPORT_SYMBOL vmlinux 0xd85833cb __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0xd85d884a arp_send +EXPORT_SYMBOL vmlinux 0xd863fab8 simple_readpage +EXPORT_SYMBOL vmlinux 0xd8653dba __pskb_copy +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a154cd backlight_device_register +EXPORT_SYMBOL vmlinux 0xd8b2ab6b netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0xd8b35db9 misc_deregister +EXPORT_SYMBOL vmlinux 0xd8c4af31 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0xd8c72cf0 ifla_policy +EXPORT_SYMBOL vmlinux 0xd8cc1e96 vfs_read +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8e49997 dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0xd8e53169 ip_fragment +EXPORT_SYMBOL vmlinux 0xd8f2fb69 agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0xd9091363 acpi_install_notify_handler +EXPORT_SYMBOL vmlinux 0xd91d92dc proc_remove +EXPORT_SYMBOL vmlinux 0xd92afabe bitmap_clear +EXPORT_SYMBOL vmlinux 0xd942436b mmc_start_bkops +EXPORT_SYMBOL vmlinux 0xd94322e7 acpi_evaluate_reference +EXPORT_SYMBOL vmlinux 0xd95c4655 tcp_disconnect +EXPORT_SYMBOL vmlinux 0xd969b2c7 amd_e400_c1e_detected +EXPORT_SYMBOL vmlinux 0xd9802349 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd990546c lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0xd9a8f059 pci_enable_msi_block +EXPORT_SYMBOL vmlinux 0xd9a9bb30 getname +EXPORT_SYMBOL vmlinux 0xd9af20af simple_transaction_read +EXPORT_SYMBOL vmlinux 0xd9af55af jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0xd9b077d9 fddi_type_trans +EXPORT_SYMBOL vmlinux 0xd9c4dd72 generic_read_dir +EXPORT_SYMBOL vmlinux 0xd9c57b29 inode_change_ok +EXPORT_SYMBOL vmlinux 0xd9c7f9ce ipmi_register_smi +EXPORT_SYMBOL vmlinux 0xd9cbf49d gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0xd9cc1d31 udp_proc_register +EXPORT_SYMBOL vmlinux 0xd9ccbf59 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0xd9f646a3 mark_info_dirty +EXPORT_SYMBOL vmlinux 0xd9fc82b6 padata_do_serial +EXPORT_SYMBOL vmlinux 0xda067b6a bitmap_end_sync +EXPORT_SYMBOL vmlinux 0xda08c0d7 pcibios_get_irq_routing_table +EXPORT_SYMBOL vmlinux 0xda091228 pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0xda0c3849 idr_destroy +EXPORT_SYMBOL vmlinux 0xda11442f pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0xda1b2810 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0xda2478d0 param_ops_short +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda4e8e66 mntget +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda8ec0f8 blk_start_request +EXPORT_SYMBOL vmlinux 0xda8fd495 isapnp_write_byte +EXPORT_SYMBOL vmlinux 0xdaa57ec3 totalhigh_pages +EXPORT_SYMBOL vmlinux 0xdaa62f43 freeze_super +EXPORT_SYMBOL vmlinux 0xdac2c9a6 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0xdace8122 dst_alloc +EXPORT_SYMBOL vmlinux 0xdad94ca5 blkdev_put +EXPORT_SYMBOL vmlinux 0xdb18a521 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0xdb26d200 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0xdb2a3d58 gen10g_suspend +EXPORT_SYMBOL vmlinux 0xdb329d39 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0xdb389b21 fs_bio_set +EXPORT_SYMBOL vmlinux 0xdb3c71e2 agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0xdb4d548a blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb6a6e0b pci_disable_obff +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdbab6272 kmap_high +EXPORT_SYMBOL vmlinux 0xdbc0fe41 __frontswap_store +EXPORT_SYMBOL vmlinux 0xdbc8bc0d d_add_ci +EXPORT_SYMBOL vmlinux 0xdbcd416e sysctl_ip_nonlocal_bind +EXPORT_SYMBOL vmlinux 0xdbf91dc1 ida_init +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc2b10e1 nf_afinfo +EXPORT_SYMBOL vmlinux 0xdc3c5dee bdget +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc570f62 lg_global_unlock +EXPORT_SYMBOL vmlinux 0xdc57f532 acpi_install_gpe_handler +EXPORT_SYMBOL vmlinux 0xdc640563 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0xdc75407f fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0xdc78c7b0 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0xdd00d570 add_disk +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd1a2871 down +EXPORT_SYMBOL vmlinux 0xdd25c01e dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0xdd2d2b53 replace_mount_options +EXPORT_SYMBOL vmlinux 0xdd3a0881 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0xdd3dc1c9 security_inode_permission +EXPORT_SYMBOL vmlinux 0xdd5cf863 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0xdd812eb4 neigh_event_ns +EXPORT_SYMBOL vmlinux 0xdda3caf0 filp_open +EXPORT_SYMBOL vmlinux 0xdda4f6a4 fb_find_mode +EXPORT_SYMBOL vmlinux 0xddc6b1a9 lock_rename +EXPORT_SYMBOL vmlinux 0xddd0a0e0 kobject_init +EXPORT_SYMBOL vmlinux 0xde005dab netdev_alert +EXPORT_SYMBOL vmlinux 0xde08f342 serio_unregister_port +EXPORT_SYMBOL vmlinux 0xde10eb10 param_set_invbool +EXPORT_SYMBOL vmlinux 0xde16dc16 tboot +EXPORT_SYMBOL vmlinux 0xde184a20 devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0xde324383 brioctl_set +EXPORT_SYMBOL vmlinux 0xde42c1ae ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0xde489957 phy_register_fixup +EXPORT_SYMBOL vmlinux 0xde4d4275 gen10g_resume +EXPORT_SYMBOL vmlinux 0xde5d378c d_alloc +EXPORT_SYMBOL vmlinux 0xde7ab75d pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0xde7f8dbb agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0xde8d99a4 user_path_at +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xdea128c6 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0xdec84d42 softnet_data +EXPORT_SYMBOL vmlinux 0xdecf790a __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0xdf0da3cc acpi_get_devices +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf32b30d generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0xdf38426b elv_rb_del +EXPORT_SYMBOL vmlinux 0xdf3b2ef0 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0xdf48a0eb flex_array_put +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf8b4ae6 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0xdf8c695a __ndelay +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdfc30aea inet_select_addr +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfce146f tcp_gro_receive +EXPORT_SYMBOL vmlinux 0xdfd8dc65 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0xdfdab05a pci_enable_msix +EXPORT_SYMBOL vmlinux 0xdfe4bbbe i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0xdfeb9bb3 __module_get +EXPORT_SYMBOL vmlinux 0xdff14d21 __d_drop +EXPORT_SYMBOL vmlinux 0xe0078a50 tcp_check_req +EXPORT_SYMBOL vmlinux 0xe011d008 __inet6_hash +EXPORT_SYMBOL vmlinux 0xe02f7d75 unregister_filesystem +EXPORT_SYMBOL vmlinux 0xe03859f5 netlink_net_capable +EXPORT_SYMBOL vmlinux 0xe047b60f nla_append +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe04f8361 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe07e9809 touch_atime +EXPORT_SYMBOL vmlinux 0xe08b07aa put_tty_driver +EXPORT_SYMBOL vmlinux 0xe0a16a20 intel_scu_ipc_i2c_cntrl +EXPORT_SYMBOL vmlinux 0xe0ac8bd2 acpi_bus_generate_netlink_event +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0d832b3 tty_port_hangup +EXPORT_SYMBOL vmlinux 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL vmlinux 0xe12ec842 security_path_rmdir +EXPORT_SYMBOL vmlinux 0xe130233f tty_register_driver +EXPORT_SYMBOL vmlinux 0xe13cd8a7 dmi_name_in_vendors +EXPORT_SYMBOL vmlinux 0xe151729c neigh_update +EXPORT_SYMBOL vmlinux 0xe1712f58 audit_log_task_info +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe1889a23 scsi_register +EXPORT_SYMBOL vmlinux 0xe1a444f3 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0xe1ba93e0 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0xe1cae912 pnp_register_driver +EXPORT_SYMBOL vmlinux 0xe1d8bb00 km_policy_notify +EXPORT_SYMBOL vmlinux 0xe1f6e057 end_page_writeback +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe2034333 acpi_evaluate_hotplug_ost +EXPORT_SYMBOL vmlinux 0xe22b490b tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe250937f inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xe275c053 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0xe282217e bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2b33c18 nobh_write_end +EXPORT_SYMBOL vmlinux 0xe2b4b20e __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2d9cc70 abort_creds +EXPORT_SYMBOL vmlinux 0xe2e8065e memdup_user +EXPORT_SYMBOL vmlinux 0xe2fa7c5b pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0xe2fae716 kmemdup +EXPORT_SYMBOL vmlinux 0xe2fed439 mount_bdev +EXPORT_SYMBOL vmlinux 0xe306a421 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0xe319eb24 acpi_pci_osc_control_set +EXPORT_SYMBOL vmlinux 0xe31d92a3 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xe31e87b3 dquot_alloc +EXPORT_SYMBOL vmlinux 0xe32c7675 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0xe3383733 inet6_del_offload +EXPORT_SYMBOL vmlinux 0xe33a3922 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xe34a83e7 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0xe35000fa sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0xe352db63 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0xe368debb scm_detach_fds +EXPORT_SYMBOL vmlinux 0xe3799094 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xe39c3644 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0xe3a25b07 bio_integrity_tag_size +EXPORT_SYMBOL vmlinux 0xe3aaedb8 pcim_iounmap +EXPORT_SYMBOL vmlinux 0xe3b2be48 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0xe3c37130 phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0xe3c7fd65 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0xe3ce0f07 generic_file_fsync +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3d73fb7 pci_target_state +EXPORT_SYMBOL vmlinux 0xe3fbbbce pci_get_device +EXPORT_SYMBOL vmlinux 0xe405a5b3 set_anon_super +EXPORT_SYMBOL vmlinux 0xe41f46bb nf_log_unregister +EXPORT_SYMBOL vmlinux 0xe420124b fb_firmware_edid +EXPORT_SYMBOL vmlinux 0xe428a082 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0xe42c2e5a blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0xe43c649a uart_match_port +EXPORT_SYMBOL vmlinux 0xe4441555 dma_sync_wait +EXPORT_SYMBOL vmlinux 0xe445db4a acpi_check_address_range +EXPORT_SYMBOL vmlinux 0xe45f60d8 __wake_up +EXPORT_SYMBOL vmlinux 0xe46381b1 __brelse +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe4861a3d vm_insert_page +EXPORT_SYMBOL vmlinux 0xe49a9e16 devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0xe4a5b336 input_register_handler +EXPORT_SYMBOL vmlinux 0xe4b7efbf do_splice_to +EXPORT_SYMBOL vmlinux 0xe4cdff2b blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xe4d481f1 pcim_enable_device +EXPORT_SYMBOL vmlinux 0xe4db2493 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xe4eafc62 key_task_permission +EXPORT_SYMBOL vmlinux 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL vmlinux 0xe4f70677 genphy_resume +EXPORT_SYMBOL vmlinux 0xe50f904f intel_scu_ipc_ioread16 +EXPORT_SYMBOL vmlinux 0xe5122890 flow_cache_genid +EXPORT_SYMBOL vmlinux 0xe5208918 acpi_gbl_FADT +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe530d757 acpi_clear_gpe +EXPORT_SYMBOL vmlinux 0xe5351d00 genl_notify +EXPORT_SYMBOL vmlinux 0xe53751f8 udp_prot +EXPORT_SYMBOL vmlinux 0xe5377c5d __scm_destroy +EXPORT_SYMBOL vmlinux 0xe5623572 pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0xe563954b cdrom_ioctl +EXPORT_SYMBOL vmlinux 0xe56b5bdf netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe5899cd7 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xe58a9130 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0xe591161a bio_copy_kern +EXPORT_SYMBOL vmlinux 0xe59a0119 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0xe5bb60c5 max8925_set_bits +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5cc4920 security_task_getsecid +EXPORT_SYMBOL vmlinux 0xe5e67e42 pm860x_page_reg_read +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe5f42f9b eisa_bus_type +EXPORT_SYMBOL vmlinux 0xe60662f8 blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0xe60d9576 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0xe61e7f13 mdiobus_scan +EXPORT_SYMBOL vmlinux 0xe64d98fe rdmsr_safe_regs +EXPORT_SYMBOL vmlinux 0xe6851170 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe697dae0 blk_register_region +EXPORT_SYMBOL vmlinux 0xe69f3b4f agp_allocate_memory +EXPORT_SYMBOL vmlinux 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL vmlinux 0xe6b3fe21 interruptible_sleep_on_timeout +EXPORT_SYMBOL vmlinux 0xe6b88b94 udp_del_offload +EXPORT_SYMBOL vmlinux 0xe6ebc016 key_create_or_update +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe716baed acpi_unregister_ioapic +EXPORT_SYMBOL vmlinux 0xe74554d9 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0xe7549ff1 blk_sync_queue +EXPORT_SYMBOL vmlinux 0xe7722171 flex_array_free +EXPORT_SYMBOL vmlinux 0xe780720e seq_read +EXPORT_SYMBOL vmlinux 0xe781b5f6 intel_scu_ipc_readv +EXPORT_SYMBOL vmlinux 0xe78d37a1 genlmsg_put +EXPORT_SYMBOL vmlinux 0xe78dcf76 seq_path +EXPORT_SYMBOL vmlinux 0xe798d71c cpu_core_map +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7b0c06d sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0xe7b124c1 devfreq_resume_device +EXPORT_SYMBOL vmlinux 0xe7cc602f d_path +EXPORT_SYMBOL vmlinux 0xe7d0c400 pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0xe7d2b026 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe808edfc i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0xe80a1154 tty_lock +EXPORT_SYMBOL vmlinux 0xe80c8c34 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0xe81b8ee2 netlink_kernel_release +EXPORT_SYMBOL vmlinux 0xe82cbf9e __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0xe832522e blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0xe849a1cc audit_log_start +EXPORT_SYMBOL vmlinux 0xe84b912c scsi_reset_provider +EXPORT_SYMBOL vmlinux 0xe851bb05 queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0xe85e65e0 __devm_request_region +EXPORT_SYMBOL vmlinux 0xe86a8376 nf_setsockopt +EXPORT_SYMBOL vmlinux 0xe87025f0 acpi_evaluate_object_typed +EXPORT_SYMBOL vmlinux 0xe876f265 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe88e7a93 lg_global_lock +EXPORT_SYMBOL vmlinux 0xe88f7b47 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0xe898bfba crc32_le_combine +EXPORT_SYMBOL vmlinux 0xe89e6aa9 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0xe8a1149f pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0xe8b63ace radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xe8b68849 wrmsr_on_cpus +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8c4992d __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0xe8cece7f napi_gro_frags +EXPORT_SYMBOL vmlinux 0xe8d6a238 netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0xe90018b1 mmc_detect_change +EXPORT_SYMBOL vmlinux 0xe90fbcc3 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe91a609b acpi_pm_device_run_wake +EXPORT_SYMBOL vmlinux 0xe93aa02d ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe9819302 misc_register +EXPORT_SYMBOL vmlinux 0xe98ea202 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0xe9938d4f unregister_qdisc +EXPORT_SYMBOL vmlinux 0xe997667b wrmsr_on_cpu +EXPORT_SYMBOL vmlinux 0xe9aeca2e d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0xe9ca7c8d scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0xe9e39761 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0xe9e5a29c bio_integrity_split +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea069d3f __cleancache_put_page +EXPORT_SYMBOL vmlinux 0xea10212a int_to_scsilun +EXPORT_SYMBOL vmlinux 0xea10655a __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xea16dd4c tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xea3ca20c dev_addr_del +EXPORT_SYMBOL vmlinux 0xea6db6dc fb_show_logo +EXPORT_SYMBOL vmlinux 0xea7987f1 key_update +EXPORT_SYMBOL vmlinux 0xea7b8a44 acpi_install_interface +EXPORT_SYMBOL vmlinux 0xea837ab6 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0xea8bb181 pcie_set_mps +EXPORT_SYMBOL vmlinux 0xea90bdd3 acpi_attach_data +EXPORT_SYMBOL vmlinux 0xeac44182 remove_arg_zero +EXPORT_SYMBOL vmlinux 0xeac6723a devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0xeae3dfd6 __const_udelay +EXPORT_SYMBOL vmlinux 0xeae90718 bio_init +EXPORT_SYMBOL vmlinux 0xeb1437d4 netif_receive_skb +EXPORT_SYMBOL vmlinux 0xeb2f8851 dev_get_stats +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb3bbda9 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0xeb3fe2ff set_device_ro +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb60037b revert_creds +EXPORT_SYMBOL vmlinux 0xeb7bc6a9 __scsi_put_command +EXPORT_SYMBOL vmlinux 0xeb7e2e78 prepare_binprm +EXPORT_SYMBOL vmlinux 0xebacdff8 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xebb17289 init_buffer +EXPORT_SYMBOL vmlinux 0xebc959a0 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0xebdbe48c radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xebdead99 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0xebe818b5 kmap_atomic_prot +EXPORT_SYMBOL vmlinux 0xebe85459 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0xebf36caf simple_rename +EXPORT_SYMBOL vmlinux 0xec1aa6ef memzero_explicit +EXPORT_SYMBOL vmlinux 0xec435fb5 key_revoke +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec5e7829 neigh_seq_next +EXPORT_SYMBOL vmlinux 0xec62255c jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0xec635bbc tty_port_tty_set +EXPORT_SYMBOL vmlinux 0xec9601c4 blk_put_request +EXPORT_SYMBOL vmlinux 0xec9d2080 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0xecb721f1 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0xecc08bba inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0xeccd3e0c acpi_handle_printk +EXPORT_SYMBOL vmlinux 0xecd3787c dev_mc_flush +EXPORT_SYMBOL vmlinux 0xecd4335c __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecfc3711 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0xed00a2bd tcp_proc_register +EXPORT_SYMBOL vmlinux 0xed15c851 tcp_init_sock +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed780d42 bio_put +EXPORT_SYMBOL vmlinux 0xed7e1295 gen_pool_create +EXPORT_SYMBOL vmlinux 0xed93f29e __kunmap_atomic +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xedaf33a0 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc803dc tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0xede170f3 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0xede5c098 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0xedfe9df7 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0xee1015aa scsi_unregister +EXPORT_SYMBOL vmlinux 0xee18ef8e dcb_getapp +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee493f5b nf_ct_attach +EXPORT_SYMBOL vmlinux 0xee4ffd00 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0xee600d99 bdi_init +EXPORT_SYMBOL vmlinux 0xee7eb9e1 pnp_platform_devices +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xee9bb059 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeca0ff3 netpoll_setup +EXPORT_SYMBOL vmlinux 0xeed0e262 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0xeeed8be5 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xeeef3ec4 sock_i_ino +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xeefd9089 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0xef17327b gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0xef1b3968 devm_clk_get +EXPORT_SYMBOL vmlinux 0xef1fba82 pci_assign_resource +EXPORT_SYMBOL vmlinux 0xef331aa2 max8925_reg_read +EXPORT_SYMBOL vmlinux 0xef3d4c09 inode_get_bytes +EXPORT_SYMBOL vmlinux 0xef47f89e mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0xef49f0a2 tcp_close +EXPORT_SYMBOL vmlinux 0xef4acc93 pci_release_regions +EXPORT_SYMBOL vmlinux 0xef5685d4 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0xef9aedfc boot_option_idle_override +EXPORT_SYMBOL vmlinux 0xefb17dea dev_alloc_name +EXPORT_SYMBOL vmlinux 0xefb4d910 mmc_can_discard +EXPORT_SYMBOL vmlinux 0xefc6f914 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0xefd84a69 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefe099c3 acpi_get_event_status +EXPORT_SYMBOL vmlinux 0xeff834b2 netif_napi_add +EXPORT_SYMBOL vmlinux 0xeffc0c67 bio_add_page +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf0028afa blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0xf0040079 rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf0461467 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0xf04c7597 audit_log +EXPORT_SYMBOL vmlinux 0xf050cb64 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf06189ea __netif_schedule +EXPORT_SYMBOL vmlinux 0xf0619801 timekeeping_clocktai +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf0661fea kmem_cache_create +EXPORT_SYMBOL vmlinux 0xf068772b account_page_dirtied +EXPORT_SYMBOL vmlinux 0xf087137d __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0xf0969efe unregister_console +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0ce7d50 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0xf0d68ed6 clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0f11735 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0xf0f1246c kvasprintf +EXPORT_SYMBOL vmlinux 0xf0fdf6cb __stack_chk_fail +EXPORT_SYMBOL vmlinux 0xf100416a remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf11543ff find_first_zero_bit +EXPORT_SYMBOL vmlinux 0xf12cddde rtnl_create_link +EXPORT_SYMBOL vmlinux 0xf12d331c lg_local_lock +EXPORT_SYMBOL vmlinux 0xf133feeb dev_addr_add +EXPORT_SYMBOL vmlinux 0xf135445a generic_file_direct_write +EXPORT_SYMBOL vmlinux 0xf13feb57 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf14daa5f udp_add_offload +EXPORT_SYMBOL vmlinux 0xf155cccc security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0xf178578d sk_wait_data +EXPORT_SYMBOL vmlinux 0xf18242e1 atomic64_set_cx8 +EXPORT_SYMBOL vmlinux 0xf18fa2cc unregister_nls +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1a0c963 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0xf1a9f505 grab_cache_page_nowait +EXPORT_SYMBOL vmlinux 0xf1b6895a update_devfreq +EXPORT_SYMBOL vmlinux 0xf1c1cbf8 new_inode +EXPORT_SYMBOL vmlinux 0xf1c66f96 pci_iomap +EXPORT_SYMBOL vmlinux 0xf1d4452d neigh_seq_start +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1deabf2 div64_u64 +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1faac3a _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xf202c5cb radix_tree_insert +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf2309a8a mmc_gpio_free_ro +EXPORT_SYMBOL vmlinux 0xf238f192 scsi_remove_host +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf24121dc skb_copy_datagram_iovec +EXPORT_SYMBOL vmlinux 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL vmlinux 0xf25b6022 inet_bind +EXPORT_SYMBOL vmlinux 0xf266184d simple_link +EXPORT_SYMBOL vmlinux 0xf26d0871 vfs_getattr +EXPORT_SYMBOL vmlinux 0xf275f37b max8998_bulk_write +EXPORT_SYMBOL vmlinux 0xf28ed6e2 machine_to_phys_nr +EXPORT_SYMBOL vmlinux 0xf2997713 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0xf29a7376 get_task_io_context +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2a37e87 dquot_free_inode +EXPORT_SYMBOL vmlinux 0xf2b1ac8e __getnstimeofday +EXPORT_SYMBOL vmlinux 0xf2e277fa xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0xf2e33236 truncate_setsize +EXPORT_SYMBOL vmlinux 0xf30a825d scsi_remove_device +EXPORT_SYMBOL vmlinux 0xf312cb9d ucs2_strsize +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf32055e7 dev_base_lock +EXPORT_SYMBOL vmlinux 0xf32598cf sock_kmalloc +EXPORT_SYMBOL vmlinux 0xf328447d ppp_channel_index +EXPORT_SYMBOL vmlinux 0xf32a414b padata_remove_cpu +EXPORT_SYMBOL vmlinux 0xf333ba0b dm_kobject_release +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf35970e6 kunmap_high +EXPORT_SYMBOL vmlinux 0xf361f2bf qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0xf37260ab _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf38bbd6d pcim_iomap +EXPORT_SYMBOL vmlinux 0xf3901de4 devm_ioremap_nocache +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 0xf3abb147 blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0xf3bf0bce __bitmap_complement +EXPORT_SYMBOL vmlinux 0xf4075c63 do_SAK +EXPORT_SYMBOL vmlinux 0xf40b2297 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xf41484ed arp_tbl +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf458d4c3 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0xf48831e2 mmc_register_driver +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 0xf4c10727 poll_initwait +EXPORT_SYMBOL vmlinux 0xf4c6bf0a dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0xf4d9e9a0 generic_pipe_buf_map +EXPORT_SYMBOL vmlinux 0xf4db6b47 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0xf4dec802 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f19e51 downgrade_write +EXPORT_SYMBOL vmlinux 0xf502d273 acpi_get_current_resources +EXPORT_SYMBOL vmlinux 0xf507dd54 devfreq_add_governor +EXPORT_SYMBOL vmlinux 0xf51ae235 touch_nmi_watchdog +EXPORT_SYMBOL vmlinux 0xf51e2533 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0xf536d22e acpi_set_gpe_wake_mask +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf5420484 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0xf5874c19 phy_init_eee +EXPORT_SYMBOL vmlinux 0xf5b10e67 acpi_install_global_event_handler +EXPORT_SYMBOL vmlinux 0xf5c05914 generic_segment_checks +EXPORT_SYMBOL vmlinux 0xf5c398c5 inet_listen +EXPORT_SYMBOL vmlinux 0xf5e8e81c napi_gro_flush +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5f7ed00 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0xf5fddefa inet_frag_evictor +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf6458d54 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0xf65433b0 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0xf65bddae generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf68687be __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xf69aa523 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0xf6a1da04 sock_kfree_s +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6bcfe5e agp_bind_memory +EXPORT_SYMBOL vmlinux 0xf6de7bca blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0xf6ea0d4d agp_backend_release +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6edee88 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0xf70c5231 update_region +EXPORT_SYMBOL vmlinux 0xf7106fa7 acpi_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xf726d02f atomic64_add_unless_cx8 +EXPORT_SYMBOL vmlinux 0xf741c793 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xf745cb16 atomic64_sub_return_cx8 +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf7619544 nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0xf771359f scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0xf7867824 ftrace_raw_output_prep +EXPORT_SYMBOL vmlinux 0xf7b69c35 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0xf7d1d818 pcie_get_mps +EXPORT_SYMBOL vmlinux 0xf7dc75f9 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0xf7e37635 __wait_on_bit +EXPORT_SYMBOL vmlinux 0xf7f247c5 set_create_files_as +EXPORT_SYMBOL vmlinux 0xf803fe39 bitmap_set +EXPORT_SYMBOL vmlinux 0xf8050fac acpi_evaluate_object +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf81846e9 lease_modify +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82cee08 ipv4_specific +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf8302822 set_security_override +EXPORT_SYMBOL vmlinux 0xf83e7b2c pcim_iomap_table +EXPORT_SYMBOL vmlinux 0xf847ca1f inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0xf867a429 __breadahead +EXPORT_SYMBOL vmlinux 0xf869b6a2 eth_type_trans +EXPORT_SYMBOL vmlinux 0xf86bba05 mem_map +EXPORT_SYMBOL vmlinux 0xf887f47f pci_save_state +EXPORT_SYMBOL vmlinux 0xf88e0ee2 acpi_get_table_header +EXPORT_SYMBOL vmlinux 0xf8925ec6 empty_aops +EXPORT_SYMBOL vmlinux 0xf89ba4b5 ether_setup +EXPORT_SYMBOL vmlinux 0xf8af82ac handle_edge_irq +EXPORT_SYMBOL vmlinux 0xf8cf0bf6 sockfd_lookup +EXPORT_SYMBOL vmlinux 0xf8d2bf45 blk_requeue_request +EXPORT_SYMBOL vmlinux 0xf8eec74e dev_set_mtu +EXPORT_SYMBOL vmlinux 0xf90f4ae5 try_to_release_page +EXPORT_SYMBOL vmlinux 0xf91de453 fget_raw +EXPORT_SYMBOL vmlinux 0xf9348cbc xz_dec_run +EXPORT_SYMBOL vmlinux 0xf940a328 __next_cpu +EXPORT_SYMBOL vmlinux 0xf9461e5e gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xf9654ccf pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0xf97456ea _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xf987915f dget_parent +EXPORT_SYMBOL vmlinux 0xf993134c pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0xf99caad9 spi_display_xfer_agreement +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9a8b5f3 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0xf9c367e0 iov_pages +EXPORT_SYMBOL vmlinux 0xf9d347f4 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0xf9e73082 scnprintf +EXPORT_SYMBOL vmlinux 0xfa14bf81 default_file_splice_read +EXPORT_SYMBOL vmlinux 0xfa199518 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0xfa2efc78 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0xfa30957c mempool_free +EXPORT_SYMBOL vmlinux 0xfa3e76a4 fb_is_primary_device +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa7f3156 wl12xx_get_platform_data +EXPORT_SYMBOL vmlinux 0xfaa4d8fa pnp_activate_dev +EXPORT_SYMBOL vmlinux 0xfaa4dfcf abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0xfac207d7 irq_to_desc +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacb0e62 dev_addr_del_multiple +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaf4a0ab tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0xfaf98462 bitrev32 +EXPORT_SYMBOL vmlinux 0xfb0443fb acpi_get_parent +EXPORT_SYMBOL vmlinux 0xfb0cecfd vm_event_states +EXPORT_SYMBOL vmlinux 0xfb1e5d17 security_path_unlink +EXPORT_SYMBOL vmlinux 0xfb51c824 mnt_unpin +EXPORT_SYMBOL vmlinux 0xfb523727 blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0xfb674997 noop_llseek +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb6fcbea path_get +EXPORT_SYMBOL vmlinux 0xfb716c7b dump_trace +EXPORT_SYMBOL vmlinux 0xfb7262ac __bio_clone +EXPORT_SYMBOL vmlinux 0xfb7e61b7 inode_needs_sync +EXPORT_SYMBOL vmlinux 0xfb80c7a0 acpi_walk_namespace +EXPORT_SYMBOL vmlinux 0xfb83c030 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfb95519e ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0xfb993f9f cad_pid +EXPORT_SYMBOL vmlinux 0xfbaada83 input_flush_device +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbd430de eth_rebuild_header +EXPORT_SYMBOL vmlinux 0xfbd4f052 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0xfbd85de6 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0xfbf08da0 tcp_seq_open +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc153585 scsi_scan_host +EXPORT_SYMBOL vmlinux 0xfc367839 aio_complete +EXPORT_SYMBOL vmlinux 0xfc381417 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc4852a7 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0xfc562165 acpi_run_osc +EXPORT_SYMBOL vmlinux 0xfc5b402d tty_port_put +EXPORT_SYMBOL vmlinux 0xfc603ac2 simple_dentry_operations +EXPORT_SYMBOL vmlinux 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfc75fd20 fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0xfc872fd1 get_ibs_caps +EXPORT_SYMBOL vmlinux 0xfca0abc3 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0xfca2d7f6 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0xfcaa04a0 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xfcac0d40 acpi_install_interface_handler +EXPORT_SYMBOL vmlinux 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL vmlinux 0xfcc0e813 tty_mutex +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcf95068 kmalloc_caches +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd016e7b inet_put_port +EXPORT_SYMBOL vmlinux 0xfd0192da gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0xfd07c646 devm_ioport_map +EXPORT_SYMBOL vmlinux 0xfd2143eb tty_port_tty_get +EXPORT_SYMBOL vmlinux 0xfd3f9404 kill_fasync +EXPORT_SYMBOL vmlinux 0xfd485ec8 seq_printf +EXPORT_SYMBOL vmlinux 0xfd5d4284 d_genocide +EXPORT_SYMBOL vmlinux 0xfd6293c2 boot_tvec_bases +EXPORT_SYMBOL vmlinux 0xfd7ae511 simple_statfs +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfda0dbe8 ftrace_print_hex_seq +EXPORT_SYMBOL vmlinux 0xfda2a42a sk_reset_timer +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdc2ceee phy_find_first +EXPORT_SYMBOL vmlinux 0xfdcec265 kfree_skb +EXPORT_SYMBOL vmlinux 0xfdd33b29 swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0xfdee7d42 _raw_read_lock_bh +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 0xfe31ab82 inet_ioctl +EXPORT_SYMBOL vmlinux 0xfe42c990 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe85e804 sk_stream_error +EXPORT_SYMBOL vmlinux 0xfe9ebbbb acpi_osi_is_win8 +EXPORT_SYMBOL vmlinux 0xfed7b900 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfef38c9e vga_client_register +EXPORT_SYMBOL vmlinux 0xfef96e23 __scsi_print_command +EXPORT_SYMBOL vmlinux 0xff199f37 km_new_mapping +EXPORT_SYMBOL vmlinux 0xff1cdba3 dentry_unhash +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff480992 dump_fpu +EXPORT_SYMBOL vmlinux 0xff5a880a blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff6a1082 twl6040_power +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffa7628b sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0xffa77084 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0xffad014b __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffe5de93 skb_find_text +EXPORT_SYMBOL vmlinux 0xfffae01b simple_write_end +EXPORT_SYMBOL vmlinux 0xfffd4c32 spi_schedule_dv_device +EXPORT_SYMBOL_GPL arch/x86/crypto/aes-i586 0x7060bf0a crypto_aes_encrypt_x86 +EXPORT_SYMBOL_GPL arch/x86/crypto/aes-i586 0xe409b491 crypto_aes_decrypt_x86 +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x01f4c304 glue_ctr_crypt_final_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x41a8b0ea glue_xts_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x47c50091 glue_cbc_encrypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x4adc6b95 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 0x9d2754f4 glue_ctr_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0xfd64be6f glue_cbc_decrypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-i586 0x28afd262 twofish_enc_blk +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-i586 0x6f068d90 twofish_dec_blk +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x00aaf935 kvm_disable_tdp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x05882e20 kvm_requeue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x07415e79 kvm_read_guest_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0970a1dc kvm_get_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0ba88b50 kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0c317db7 kvm_is_visible_gfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0c601201 kvm_valid_efer +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x130259ce gfn_to_pfn_async +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1617fdb7 kvm_apic_write_nodecode +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x18e257ab __tracepoint_kvm_nested_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1a4342a5 __tracepoint_kvm_invlpga +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1cfe78d1 kvm_release_pfn_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1e3188f8 kvm_mmu_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1efdd47e kvm_queue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2015ed3d kvm_mmu_unprotect_page_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x20f5ec95 kvm_mmu_load +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x236985ac gfn_to_pfn_prot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x23f51438 kvm_cpuid +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 0x29e56974 kvm_mmu_sync_roots +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2e0e80cd kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2f636c31 kvm_spurious_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3057e185 kvm_read_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x317f9e6b kvm_enable_efer_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x321f518e kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x331c30cc kvm_get_dirty_log +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x373f511b kvm_mmu_unload +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x38e2526b kvm_complete_insn_gp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3b484ca3 kvm_inject_realmode_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3b7dcf75 kvm_mmu_invlpg +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3c5de6f8 kvm_flush_remote_tlbs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3c822e22 kvm_task_switch +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3ee59a92 __tracepoint_kvm_skinit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4057ce1f kvm_set_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x438c16e0 kvm_vcpu_cache +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x43a8fe24 kvm_release_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x45ab1e2c kvm_get_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4a8b96d0 kvm_set_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4cb05da4 gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x50adfe35 kvm_read_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x52d70062 kvm_apic_update_irr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x56553461 gfn_to_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5a78f052 kvm_get_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5b8909b7 kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5c5e89bc kvm_lmsw +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5c8328ce kvm_is_linear_rip +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5dfb6a22 kvm_emulate_wbinvd +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6197c995 kvm_arch_has_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x64020e10 kvm_set_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x65524ac2 kvm_cpu_has_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x655290c7 kvm_vcpu_kick +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x66c00145 kvm_resched +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x67c12ef3 kvm_find_cpuid_entry +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6d391c72 kvm_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6df79625 kvm_set_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6effe69f kvm_inject_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7214e0ba kvm_release_page_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x73232155 kvm_read_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x74a0c69f kvm_init_shadow_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x758782d7 kvm_requeue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x75f545fe kvm_lapic_set_eoi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x79192704 kvm_vcpu_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x82fe1bcd kvm_get_cr8 +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 0x85ec25cd x86_emulate_instruction +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x86d1d422 kvm_put_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x880e122e fx_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x899e004c kvm_vcpu_uninit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8a759084 gfn_to_hva +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 0x8f04176c kvm_write_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8f7b3d71 kvm_vcpu_block +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x928ac2bf kvm_emulate_hypercall +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9333f676 gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x936fa685 kvm_arch_register_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x94d341d1 __kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9a216313 kvm_define_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa0a773d3 kvm_inject_pending_timer_irqs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa0e89a5d kvm_get_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa0ec3a0a gfn_to_hva_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa1408233 kvm_set_cr0 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaac7c868 __tracepoint_kvm_nested_intr_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaacfcffc kvm_set_cr4 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xac2f12af kvm_x86_ops +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaccc210a kvm_set_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xacf7f97c gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb0956dcf kvm_clear_guest_page +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 0xb4d466f1 kvm_queue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb5463cae kvm_mmu_get_spte_hierarchy +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb65e19ad kvm_set_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb75f3fd9 kvm_arch_unregister_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb85f2bea kvm_set_xcr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb93a3077 kvm_set_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xba9ed435 kvm_mmu_set_mmio_spte_mask +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbba8d48b kvm_get_apic_base +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 0xc0da8eba kvm_mmu_reset_context +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc14041a9 kvm_write_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc323150b kvm_mmu_unprotect_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc3a6fe3a kvm_write_guest_virt_system +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc5130a1b kvm_write_tsc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc62d7830 kvm_require_cpl +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc71deaf0 kvm_emulate_halt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcb67ce10 __tracepoint_kvm_nested_intercepts +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcbc59d4d load_pdptrs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xccc9e159 handle_mmio_page_fault_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xce728187 kvm_clear_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcfb17127 kvm_get_cs_db_l_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd0459e67 kvm_has_tsc_control +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd07dac17 kvm_init_shadow_ept_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd0b2727a kvm_mmu_set_mask_ptes +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd0b8b637 kvm_set_cr3 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd10ffe25 kvm_apic_set_eoi_accelerated +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd129a6ac kvm_before_handle_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd50800d4 mark_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd63a9e89 kvm_after_handle_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd9dcd761 kvm_fast_pio_out +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdb17c61e gfn_to_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe327be0e gfn_to_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe7df9630 kvm_set_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe9790e86 __tracepoint_kvm_cr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xed04f085 kvm_mmu_flush_tlb +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xef4648fd kvm_irq_has_notifier +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf07b4ab6 kvm_rdpmc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf48b2ec3 kvm_inject_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfbafb2ab kvm_read_guest_page_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfdf4e409 kvm_emulate_cpuid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfef928b7 kvm_get_guest_memory_type +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x001a235d ablk_init_common +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x318dc70c __ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x9a29d65b ablk_set_key +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xbdb25961 ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xeb409f34 ablk_init +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xebca5964 ablk_exit +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xf1bd9f0b ablk_decrypt +EXPORT_SYMBOL_GPL crypto/af_alg 0x18212efc af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x27a97ad3 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x3b847fac af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0x52ce0676 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x7578c6a5 af_alg_release_parent +EXPORT_SYMBOL_GPL crypto/af_alg 0x7e7cde9c af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x93957c0c af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0xa95c6db9 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0xebb5a000 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xf352c9cb af_alg_register_type +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0xc9d88c33 async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x2334e505 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x54836283 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x60d2fa4d async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xb901ba43 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x50c822f2 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x710437f3 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x7cbb453e __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x9bff0651 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x50d4b530 async_xor +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xaaf081f4 async_xor_val +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0xb2adfe89 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 0xb543ae09 cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1291971c __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1758daa9 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 0x0a391695 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x2de798e8 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x433ce786 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0x5b73ecbd cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x70398c7c cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xab13218c cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xb3755e40 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xb3b010a8 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xe0f1e852 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xf59af484 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0xc1d8d117 lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +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 0xbf6690b9 serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0xd35146c7 twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x7959145b xts_crypt +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/ahci_platform 0x0211905d ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x143af151 ahci_platform_resume_host +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x1c40cba8 ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x2ea54fde ahci_platform_suspend_host +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x329e220c ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x6165dd1c ahci_platform_suspend +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x7a4a0fd0 ahci_platform_resume +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x9b9091fa ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xb265d749 ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xfa6673d9 ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xfabad4e6 ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x03a87845 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x083585e4 ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x0f783b90 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x1546f482 ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x17d1d1ce ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x33fb6075 ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x39c855c7 ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5eacba1f ahci_interrupt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x63629376 ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x694f923e ahci_thread_fn +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6e05c4e7 ahci_hw_interrupt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x743153f5 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x768328a5 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x92c2daca ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x949cc525 ahci_restart_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x96ab339d ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa98a359f ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xb7ff5f85 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xb8326ef9 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc4cdd4af ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xcb598668 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xce1640be ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd0f5190b ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd6295caf ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xfca76914 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x0a501d31 __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/bcma/bcma 0x16593dba bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x19d8ffe6 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2dffef42 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x344edd7a bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x403f303e bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x40ef44e6 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x448ff933 bcma_find_core +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4ac5417c bcma_core_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4ed8a385 bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x51794556 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7cbd41a4 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7f0a1974 bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa568300a bcma_core_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xad020583 bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xcb1a10bc bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd392ef12 bcma_core_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe2c256dc bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe32bc83d bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf034fd7e bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf06de78c bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf4fa3519 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xfa5044e0 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xfe622409 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x2309cdf1 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x25b76ab1 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x45758d4d btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x4a83adcb btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x4ba6deac btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x4e9c0174 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x809b2f17 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xa231a9c3 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xb4d37a28 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xb933ac69 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/char/scx200_gpio 0xc08af08c scx200_gpio_ops +EXPORT_SYMBOL_GPL drivers/dca/dca 0x01a33ab9 dca_unregister_notify +EXPORT_SYMBOL_GPL drivers/dca/dca 0x2835ba1d alloc_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0x297651f4 dca_add_requester +EXPORT_SYMBOL_GPL drivers/dca/dca 0x31a2c8df dca_get_tag +EXPORT_SYMBOL_GPL drivers/dca/dca 0x731870d2 dca_remove_requester +EXPORT_SYMBOL_GPL drivers/dca/dca 0x8dc97ad0 unregister_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0x989b4c6e free_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0xac34ecec dca_register_notify +EXPORT_SYMBOL_GPL drivers/dca/dca 0xbc654a26 dca3_get_tag +EXPORT_SYMBOL_GPL drivers/dca/dca 0xe977341e register_dca_provider +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x202edce6 dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x55e2e8e9 dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x74df78b8 dw_dma_shutdown +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xa7e51549 dw_dma_suspend +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xd3d9cffc dw_dma_resume +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0502b9a9 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0b29628d edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x401e928d edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x47bd39bd edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x49656ede edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x4e853038 edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5092383a edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5b54ab69 edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5fce69a3 edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x69259f22 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6a2e1057 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x783c0f2e edac_mc_add_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7a9407ff edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x8b926764 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9e901e29 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa168393e edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xae6b3f33 edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb006af99 edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xcbef1f91 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd575f973 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xdb6bdbcd edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xee3c6d88 edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf0a0f39d edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf9cb42b1 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 0x71cda701 bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0xc9057f2e bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x0a82c103 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x5ebd2c65 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x04aa0729 drm_vm_open_locked +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x39b859a0 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x7f025ef1 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 0x2b2c59ae i915_release_power_well +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 0x96108893 i915_request_power_well +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0xb76bf2ac i915_get_cdclk_freq +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0xe7237b0b i915_gpu_turbo_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x6adf436b ttm_prime_fd_to_handle +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x942309e4 ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xce36343e ttm_prime_handle_to_fd +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xd2fd00c3 ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xe53815e8 ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x06689272 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x09dae107 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0b2fa19e hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1aba9b5f hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1cd82e4e hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x22f9c374 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x28663d6b hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2a52a8ac hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2aced677 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2c271af5 hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x315526a7 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x33a6f03f hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x529cb393 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x53abec0a hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5d0e94f6 hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x67c04b09 hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0x852b3b2b hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x907f9314 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x94580d15 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x956a904a hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb2038e81 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb296c43c hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb3c9bc95 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb8277729 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xba1f238b hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbb7f6e09 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbc7996a2 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbc8776e0 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd05bb2ef hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe09756de __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf65bab3e hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf98b1329 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfce2fdc0 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0xff6f84c7 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x529971d9 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x3ff779a3 roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x9ae65602 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xa8e5b0bf roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xaf73cb09 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xb21968fe roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xb76f88c7 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x0308419f sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x03b78fe2 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x46d04d5e sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x50e5faf3 sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x5e18207e sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x9575777c sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xa5d3f037 sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xf8f14e2d sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x05cea917 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x175b3684 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x1df9c917 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x50111279 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x57f0dd28 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5d9bfd3d hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x6f20018b hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x851e7e10 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x8e06ab12 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xaf7fbd03 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc739c752 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd67358c8 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe0fe7fb5 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe42d304a hsi_event +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x0d0bc316 vmbus_teardown_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x2cd923b0 vmbus_sendpacket_pagebuffer +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x32df1c0e __vmbus_driver_register +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 0x4c4c9e84 vmbus_are_subchannels_present +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x609c503a vmbus_open +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x64ac7675 vmbus_driver_unregister +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x6d99d301 vmbus_sendpacket_pagebuffer_ctl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x7e36ee17 vmbus_sendpacket_mpb_desc +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x8423547e vmbus_set_sc_create_callback +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x9571c5c6 vmbus_establish_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xb05cf8c0 vmbus_get_outgoing_channel +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xc9087fa1 vmbus_recvpacket_raw +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xcb8db92d vmbus_close +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xe7229f1d vmbus_sendpacket_multipagebuffer +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xf45dd651 hyperv_mmio +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x6fc0d5c3 adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xd432e877 adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xda5bfa52 adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x083cd7ce pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x43f6e305 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x4b4e04b5 pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x7eba0464 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x8fa7aea4 pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x933086f0 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9805282a pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9a2bcb2e pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xa932a3a4 pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xb513253d pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xdb9f2200 pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xfcf2ae41 pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x0973cc25 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x1f4e6077 i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x2a1c0ce0 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 0x73e4c4f4 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x741d1480 i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x83e3aa18 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xa198dff1 i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xc56faca5 i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xc9a48790 i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-nforce2 0xd825e50a nforce2_smbus +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x628fa6e9 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xce258696 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x7ea5fd15 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xe6790faf i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x10454bdf ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x1716ac98 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x32f1f2ae ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x7335b47c ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x95706735 ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x97059bbd ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xb05f1942 ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xce182afe ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xdca16a13 ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x20bb5a19 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x51e18cec adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x71b9f4f5 adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x86294a86 adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x98d78387 adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xb29568f5 adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xb3ba9373 adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xb9270b39 adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xc45fec3c adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe819913c adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe92c650d adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xfa6056e0 adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x06b46d14 iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0b195eda 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 0x2ea3995d iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x46420b32 iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4dbe0aa0 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4e9f48af iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x50251de8 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x50f570d3 iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5323e500 devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x557f6a98 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5ac23ca8 iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5b946ec0 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x668e05d4 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x68eefadc iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7470c8f9 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8e2fe224 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x901cdc83 devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9778575f iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9f9a0c60 iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc1c63819 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc2832ea3 iio_scan_mask_set +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xca1899d3 devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdc12d7fe iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xddeda66d iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xeaf61731 devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf880a5b7 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf8f96a7d iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf9cba307 iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xfb3490ef iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xfbb36508 iio_buffer_get +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x9621429b input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x2f4edb23 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 0x54977138 cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x5a798f66 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x7a5cb8a9 cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x7442d22c cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xc7dd6b15 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xcb82af21 cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xd21f411b cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xf98e69ed cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x2966fa0a wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x323a04be wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x64af7a6c wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x64d5e777 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6df85b13 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xacaf0a1b wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xc1a16695 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xc294e20f wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xc34d9e45 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xe212b879 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xe32e197a wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xfe900420 wm9712_codec +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x0fd4b20f ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x1b12ca64 ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x35ee9721 ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x58d5688d ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x58d6209b ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x76809916 ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x8d3d5ff5 ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xca497e25 ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xe11a83ef 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 0x0f32ec5d gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x13848e81 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x1dbc92a7 gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x217e514d gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x32c38915 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x5e1a5c2f gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x787c463b gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x7c6f6360 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8037ac66 gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x809aebb3 gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8eff32df gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9c1832fb gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa7cc47cc gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xab8393bd gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xb01b1129 gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xb2fc3d16 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe820369b gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xee73a018 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/leds/dell-led 0x86fd1ffb dell_app_wmi_led_set +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x11e98bf8 lp55xx_unregister_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x3584dfc8 lp55xx_read +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x3a52cf90 lp55xx_of_populate_pdata +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x7798dc66 lp55xx_register_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xa29cf368 lp55xx_deinit_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xa4a022a9 lp55xx_is_extclk_used +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xada6cb7d lp55xx_update_bits +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xc592cd42 lp55xx_init_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xdb1a0760 lp55xx_register_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xe73e95d7 lp55xx_unregister_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xedc23462 lp55xx_write +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x749e05f2 ledtrig_flash_ctrl +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x7903e46e ledtrig_torch_ctrl +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 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 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 0x7b488fb1 __tracepoint_bcache_alloc_invalidate +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 0x099bcf3d dm_cell_error +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 0x49a9a409 dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x81a54d22 dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x8781cbbc dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xa3024c43 dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb6d5c65d dm_deferred_set_add_work +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb70b342a dm_bio_prison_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xcbc30bc5 dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xebd06eaf dm_bio_prison_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xfde54e87 dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x22163b69 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x3909d3a8 dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x547af531 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 0x2e2995df dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x438fdd3c dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xc89ace6c dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xe2b54fd5 dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xe337998b dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xf51cf3b5 dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xfcc5caf1 dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x2655cc4d dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xa1bc7488 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 0x42a72afd dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x63a6c3ce dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7585bbc1 dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x76a56f11 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 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 0xcf2ddde8 dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd1aadc8d dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 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 0x10031236 dm_block_manager_create +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 0x1cac81ac dm_bitset_clear_bit +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 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 0x2f74609d dm_bitset_test_bit +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 0x38c75c44 dm_bitset_empty +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 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 0x68fae9d2 dm_disk_bitset_init +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 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 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 0xa0bbbb49 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa13861b4 dm_bitset_del +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 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 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 0xe44b4b9b dm_bitset_set_bit +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 0xf475af48 dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/raid1 0x8ac96c45 md_raid1_congested +EXPORT_SYMBOL_GPL drivers/md/raid10 0x09e2bd9d md_raid10_congested +EXPORT_SYMBOL_GPL drivers/md/raid456 0x9a078b5e md_raid5_congested +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x2a0b18eb saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x4b27ec56 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x5daec99c saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x6b5aae84 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x8a5ee14b saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x9243f998 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x9f134cf9 saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xbf9354c5 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xcc683031 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xfb02ae68 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x34fb8b69 saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x5769bf36 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x751abd86 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x97f00984 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xa3c4fb5e saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xc8220d71 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xdd09da89 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x02414ee5 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x0620a23d 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 0x43d7a2dd smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x4b05cbff smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x4eaed1ec smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x5194c8df smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x59ae9b09 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x63222b29 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x68691cf7 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x6f247c79 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 0x7f0ffd7a smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9bb4ec71 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9efc8959 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa66f542d sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbaffc3e9 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc615fd84 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd7ac34eb smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe638a55f smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0xc8d26096 cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0xa4f610a3 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0x9c15910d cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x01dfcc22 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x01e947d2 mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x0db385e0 mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x21f6479b mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x3671b71e mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x464d5fb0 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x77f6c290 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7ce2f8ae mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7d054776 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7d8f6d4e mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7ea7540d mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x91206dc1 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x9a4d9d3e mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xca8f6235 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd1b3476e mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xdafc1ae1 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xfd601ac3 mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x04d93fe1 saa7134_s_std_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x4a3077fa saa7134_s_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x7c06f790 saa7134_g_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x9fd73cf9 saa7134_queryctrl +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xd736d35d saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x380cc845 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x6145c7fd 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 0x8dad78ac ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xc8fe0528 ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xd323668a ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xd5131e31 ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xf2203d09 ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0x20d0a13b radio_isa_remove +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0x867fc953 radio_isa_match +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0x86a5c738 radio_isa_pnp_remove +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0xdbaf9a63 radio_isa_pnp_probe +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0xdd090d0b radio_isa_probe +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x5bde8900 radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x7372511b radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x051cd812 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x0d9024c6 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x0fa6b5d3 rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1a9e2117 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x2a342179 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x3be1aee3 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x45b80357 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4fb06212 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x5b381183 rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6c1ce3e2 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x8f675d31 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa7726488 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc0826599 ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc17b9913 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc924fbb4 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xce849b4a rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe6b544f3 rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf2a445d5 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf60b2555 ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0x1989dc02 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x6f861876 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0xc66b661a mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x3b960377 r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0x22e8f339 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x949af6ce tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x012ddc06 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x6c89dd1f tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0xbe87dd1b tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x467aa3c2 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x92cd9c62 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x65f0723b tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xcf4fa9ec tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x1f1ca3b7 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x0edc6705 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x126eb8ba cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x386c6148 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x3befbd58 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x3ec72e2e cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x41649928 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x64271eb9 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6d9a9456 cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x73f8a9ec cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x75ba286e cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x79aae22c cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x86899bc3 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x96458574 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xab8b8f1e cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xac22d70b cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xaf6a5d4f cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc3837152 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xcb06d5fa cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf7456ef6 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0xcad262e7 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0xc913876e mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x0acefac8 em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x119a4c4a em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x24e9f79b em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x53966d37 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6b3c0407 em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x860a39ec em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x9b404989 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa2f0ebd3 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xabd18886 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xc2140dd6 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcd891954 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xd77155ab em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xe825537e em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xf90a25d3 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x09bd8ede tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x10dbeab4 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xa0fcf97f tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xa74e1554 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 0x369103fc v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x399b3b3d v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x3de816b9 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x85fda4db v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x9347326a v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xc7828184 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 0x221d2fbc v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x36e8756a v4l2_find_dv_timings_cap +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 0x53105839 v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x6976cfe0 v4l2_valid_dv_timings +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 0x7eaf8e7a v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xb0891da2 v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0x33b7cc99 v4l2_int_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0x908df381 v4l2_int_ioctl_1 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xa5228b24 v4l2_int_device_try_attach_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xdbfda013 v4l2_int_ioctl_0 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xf06b4662 v4l2_int_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17eb0eee v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3aca0901 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3cdb98b2 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4cfaaa16 v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5912c616 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5b27a105 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x70963a1c v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7f229cd9 v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8da1469c v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9b0daa79 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa25e68b4 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb1900f80 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb784f38d v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xeb9e4121 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf7da0142 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x21318417 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2bc9d17c videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x36a04d7d videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x37b08c4d videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x39b13a14 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3a346546 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4306292d videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x44397df3 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x63b4f90d videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7479d743 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7b6c0bb9 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8a77d421 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x91a81ed8 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x93daeb51 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9bfc1b02 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9d951c61 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa56c59c3 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xac5fd3e3 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd776a791 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd9811b2a videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf155c0a4 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf1608a1b videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf1feb3b4 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf8b79244 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x1a9f5376 videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x3b9f7d20 videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x8e8b380f videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x43d36e3a videobuf_dma_init_overlay +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x449fa711 videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x47e8fae1 videobuf_dma_init_user +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x63f70bc0 videobuf_dma_init_kernel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x67e7952c videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x79db5171 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x9036f663 videobuf_dma_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 0xcb49163a videobuf_dma_map +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xdd930e5c videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x9a935f58 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xbed8448c videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xe0a517b5 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x09cccfaf vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x11f0edc4 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1c370724 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1f80c146 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x25c3b271 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x32d5af33 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3bb488b6 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3e1d001f vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x405073a6 vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x43c627b8 vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4b181ec3 vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6e6e2b53 vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6f5b120c vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8879d32a vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8a6472f4 vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8d8e17a8 vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x91361514 vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x91f0b34b vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa6862d79 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbe506223 vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbf964bf1 vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xccbf8570 vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd1583460 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd44e8535 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe12f62fa vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe1d0e40c vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe369c213 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe65a26b3 vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe7188ff1 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xeb7f13c8 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xeca01a51 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xed1be84d vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf0a1ed3e vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xfbea4b09 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xa976e6c7 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 0xfa0a0d70 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0x8163e68f vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x4d2613cd vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x95287a75 vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xcb6f5f27 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xd9a217c7 vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0x045b876a vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0543ac3c v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x07960d29 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1778f949 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2ece8dcd v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3080cb9b v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x34fa59e5 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x358db69e v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3f272ab0 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4d9c284d v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6b389025 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7a7a9a1f v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8dc3fdc8 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8fdca633 v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9ee3cf94 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc4ffd846 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc720cbef v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcc27533b v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xccc4a178 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xdaa0509a v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xdf0b4c0a v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe4710a77 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf2285d2a v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf9e981a3 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x03f5e801 i2o_dma_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x121f5767 i2o_sg_tablesize +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x22811d2c i2o_dma_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x4c95818e i2o_dma_map_single +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x670031c7 i2o_dma_map_sg +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x95350fa2 i2o_dma_realloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x9676972a i2o_pool_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xf2fd0ce6 i2o_pool_alloc +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x3d79ab1c pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x80897850 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xef018565 pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x08395a84 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x0e47a1d6 kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x14e53f0f kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x24dca629 kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x2ed45cd9 kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x2f4f0299 kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x4fc15898 kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x51af4e2a kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x848d9cd9 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x908c28ee lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xb9341855 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x0bc14d44 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x2ca1c350 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x46574663 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xabcf4d60 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xbafc1486 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xea7e750a lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xfae5c98e lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x1bf5a6ee mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x3ddb2b60 mc13xxx_common_cleanup +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x494018a6 mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x5b4fedce mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x60832a0c mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xeed802cf mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x28980881 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x2e37bf56 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x35908e7a pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x38da3c4a pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x5f2bedd5 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x750d5f6c pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x85f56a77 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x902f54e9 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xb0d7ede4 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xbe819433 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xf80906c4 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xb01739df pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xbf714731 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x1c4f1df1 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x81f627d3 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xa404e9cd pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xe8224746 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xfbf1781a 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 0x0fbb02d0 rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2e5f4740 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x35e2d27c rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x414e8f27 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4d0ce1e7 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4e000c5a rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x63f3d493 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x6a1ae158 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x7aa37032 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x907b37fb rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x908ebd8b rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9a778e5a rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9d8c2e2f rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9f1c070a rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc48a4a51 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xcf68b2a1 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd0c72270 rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xeb4a63b5 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xebee4f8e rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf6b99f86 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf74260ce rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0719a7ca si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x197a929a si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1c91c46d si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x203af68e si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x327a87f7 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3946c0ec si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x49ef0be2 si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4b27e37d si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4bd464c3 si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5bfbf912 si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x663e61bf si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x794b81fb si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7aa9dabc si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7ae4792a si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8fb7c29d si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x93c43e35 si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9a3bab0a si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa45ff347 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa7f58b8c si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xab7abffd si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb0cfc60d si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb5b6ed3f si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xbb3e1fbd si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc5ca7176 si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd2f12cb0 si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd6918d93 si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd723cecf si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd912626f si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xda203c29 si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xdb9d10bd si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe690e65c si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe9608d53 devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xeac93abd si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xfc7a88cf si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x37c83eeb sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x6032fcd6 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xc2a57b6c sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xd7fc6d93 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xfc827eee sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x22a13f3d tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x32eea5bd tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xdde16ce9 tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xfb7e301f tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x6cccca17 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0x6469aa8d bmp085_probe +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0xa3f06f08 bmp085_remove +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0xc6d7e798 bmp085_detect +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0xf9a43952 bmp085_regmap_config +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x172c8c24 cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x214b505e cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x7d26d112 cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x8a11831c cb710_sg_dwiter_write_next_block +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 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x019193a2 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x276d4c22 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x4f2e0be2 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x9a699715 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xa92800fd enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xe1c384a0 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xea7eb7a6 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x07ca738d lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x1f2d576a lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x608fd677 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x84c7ee82 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x91f956b3 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xb08f025a lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xc5ad0ce7 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xf18114bc lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x00c59054 mei_restart +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x19b10ef2 mei_cl_add_device +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x2ec8ce81 mei_register +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x3a1fe462 mei_cl_disable_device +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x4b32ab94 mei_cl_driver_unregister +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x530f9135 mei_deregister +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x5c6b1c40 __mei_cl_driver_register +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x644c1a94 mei_cl_enable_device +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x6f847003 mei_cl_remove_device +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x70357fd9 mei_irq_write_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x7b90f9a8 mei_irq_read_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x807f1c69 mei_irq_compl_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x8ea76b47 mei_stop +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x9e76675f mei_cl_send +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xa8b28e74 mei_device_init +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xba7101df mei_cancel_work +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xbc9945db mei_cl_set_drvdata +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xd46143e7 mei_start +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xd5bd6c2a mei_cl_get_drvdata +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xdc50f6d1 mei_cl_recv +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xe40d3aed mei_cl_register_event_cb +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xff71a869 mei_reset +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 0x1b628187 st_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x324416c3 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 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 0x4c498e60 vmci_qpair_peekv +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x4ea2ccbc vmci_qpair_peek +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x50a255c9 vmci_doorbell_create +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x612df9ae vmci_qpair_detach +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x677c36d0 vmci_is_context_owner +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x69ef87ff vmci_datagram_destroy_handle +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x6bfa603a vmci_qpair_dequev +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 0xbbcb4c48 vmci_qpair_enquev +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xccbb53d1 vmci_doorbell_notify +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xcf5ed7ef vmci_event_subscribe +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xdac94780 vmci_qpair_get_consume_indexes +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xe7e7c107 vmci_doorbell_destroy +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x15897d09 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x1afa9dfb sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x2bd3088a sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x386344ff sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x6d79f6a6 sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x75556ebd sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x7e720a0d sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xaff622cb sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xb88832db sdhci_disable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xd88d3394 sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xe49e9850 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x2ef7217e sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x6303cc79 sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x70644e5a sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x9c5c18db sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xbca271c1 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xc5bd7553 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xe472d669 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x1d7d6555 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x225440bd cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xe06340c3 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x3a03fafd cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x4451b12d cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xc9fa357b cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x932e9126 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x1ac1c704 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xafab52ad cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xf290b1b9 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x07cc2785 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0832a2d0 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0b16b976 mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0ce15996 get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x16a18980 mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x16e6800b mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x305be3e9 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x308acc4b __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3db504a5 mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4fb2726e mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5129e698 mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x57cf30d3 mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x593e2d15 mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7b70b3ce mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7c6d4213 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7f4f1414 mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x892190ed mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8d0cfa77 __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x99500714 mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9c8e512b register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa00552d9 register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa286ca11 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xac290b00 mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xacbfccaa mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xacded270 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xad685d41 mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xae118928 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb9625bbc __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbd6fa414 mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc63d5d54 unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd1d14fc2 put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd427ee84 mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd587df0d mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdcc65770 mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xddf1e1a9 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe33cbdc0 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe6a4f38d get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe9334da2 mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xeeeb2455 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf1ed1346 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf8961b33 mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x1f506786 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x32bd6cd1 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x586ecbf8 register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x666420bb del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xa7ca2e06 add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x30c8d2b4 nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xe57e60df nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0x6874c1ed sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x054b2615 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x86f9ae0f onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x187608ea ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x35cfa73c ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x35eef6e7 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x4cb7e2f3 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7b4332e1 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7e817a91 ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x8973213e ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xae5c3915 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc95f63e7 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xd6d16730 ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xdeec1419 ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe3a7561e ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe6a4547c ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x08ab7f89 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x75c9b812 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x9487d013 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xa20e8c90 c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xb2748429 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xee3ac044 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x136fef69 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x550cf171 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x5e9d9da2 can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x5f7c8859 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x6737103b open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x6bea7412 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x7c632b8f alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x8dacb0e7 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x93462acc can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb3bba231 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xba15b635 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xbf534312 devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xc8659cc7 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xfa3547d2 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xfec5c192 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x8245a816 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x8d880de2 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x9885dace alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xe71c8299 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x0271a945 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x1288287c unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x75280077 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xa3447c64 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x20b51628 macb_mii_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x3a82009b macb_get_hwaddr +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x4ee440d4 macb_set_rx_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x897b5b1e macb_get_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x94c14d44 macb_set_hwaddr +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xc6c631fe macb_ethtool_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xd6e77725 macb_ioctl +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x09b826b3 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0c936ea6 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0cb8662e mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0ecb29af mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x14447663 mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x14529d8b mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x162d9bec mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x16d9c3df mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1a0828aa __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2004c9c2 mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2357db69 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x242d7588 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x251007f0 mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2731fb3a mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x284914fa mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x31282e81 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x31b71d0f mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x31c67462 mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3379cd99 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x35a362b0 mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x36894661 mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3b22a123 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3e333c85 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x43288ec0 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x46ef4326 mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x471abf7e __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4a640e85 mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4bc0b966 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4de029be mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x539576e0 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5a73c823 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5b211793 mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5ba15d7d mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5bc8c1b6 mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5eb8a6e2 mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5f1d155c mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x655d50b2 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x68a35376 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6dd2135c mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6e91c9d0 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x778692a6 mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7a8da7d0 mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7b328f72 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7ca37951 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7cdf75d8 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7ce051c9 mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8227ed08 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x825389fc mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x82eaa354 mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x84165895 mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8442b003 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x86112161 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8627383b mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8754dddc mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8928c562 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8a5bc96c mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8a654424 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8b895c18 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8cfb2421 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9205001a mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x92a4059c mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x96d0c40a mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x970f23e5 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x973b2bd0 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x99d75193 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x99d9a19d mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9b05f03d mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9ba5a6fb mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9f1fada1 mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa0f1c034 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa1171b0b mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa583508a mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa99765c3 mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaaf47f92 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xae7bd7e2 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xae806e62 mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb0fe646e __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb81f0c9d mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbebbf902 mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc0672342 mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc51aa9d6 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc55d5e11 mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc8f3e33c mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xca020727 mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcf839fc1 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd0010b59 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd4822f4a mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd50bda52 mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd8be4819 mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdc3d9383 mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe135b19c mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe68e0517 mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe6a191a9 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe77a0945 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe80fb9e2 mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe9a22133 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xef992ba6 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf1cd9f25 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf220e04e mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf403bad0 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf80fb44a mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfa631458 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0b829ed5 mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0f2a930c mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x12fe022b mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x13160231 mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x19db44a8 mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2e4ec79a mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3de5d8c9 mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x42e77732 mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4c5d5812 mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4c8cb937 mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x63476f0b mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x64b0d066 mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9e2d5ba9 mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa92965d2 mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd6c4ef56 mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfaceb4c9 mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfd9c955e mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x5173cbeb macvlan_start_xmit +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x5e079d80 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xaaaad82c macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xbad54b22 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xc88931c4 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvtap 0xe6cb3646 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x8d829704 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xa77a7cb2 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xeff396fb usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xf7686dfa usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x4a454362 cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x57b2d686 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x9dfc0d51 cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xa6d522a1 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xae896262 cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xc1a4cb0b cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xe0c39fe7 cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xf0534221 cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x25d175d8 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x344e909c generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x40253b86 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x9c7df741 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xea5a61c8 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xff0dd1c4 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0034ecbc usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0f09867e usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x14ea8697 usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1584b47a usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2dbb1b82 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x30e199ec usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x452cd215 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4bff938f usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4e66118b usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x50e4c081 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5ca2dbde usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6542d2c9 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6c2ed0c3 usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7177cc7b usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x79433a4f usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x81f4def3 usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9144731d usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9549ef49 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x99792685 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa07ef8c8 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa2a76d1b usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xaf5feea3 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb172086f usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb5acbbcb usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb912a2d0 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcfdf24e6 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcfe43886 usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd2ac9b04 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd879d47c usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe5a0f92f usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xecc96935 usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xeee69c3d usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x42abad80 vxlan_src_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x668bcf50 vxlan_sock_add +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x75b8befb vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x861366b5 vxlan_sock_release +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xcc737a19 vxlan_xmit_skb +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x013be9d2 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x0453711d i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x15a2b44d i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x1c23e11f i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x1ebb378d i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x2c2f2557 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x38009ff7 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x3c7c5449 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x5d08a2ee i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x63903731 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x7fa885a4 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x7faac13b i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x890a42ed i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9b29d7b9 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc207c8a5 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd7cd3716 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x8b89d177 cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xbabcce8e cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xc8afdd40 cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xe8886b71 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x7fc71b40 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x1a59e5cf il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x26084141 il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x2cda1871 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xad644fe4 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xb1980c89 _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x062e6811 iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x215daec5 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x23e0ef6d iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3e0dc6e3 iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x429cfbcf iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5d0a212e iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5fae9ba3 __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6101306b iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6d572730 iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6ef2f68c __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6ff134cf __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x7b10ebd7 iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8174050d iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x86d2ece9 __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8c5d5ab3 iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8c739cba __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8caceb62 iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x91cb1965 iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x942d19a5 iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x9e979c8f iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xaa8ef586 iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb6a646c2 iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xbd568726 iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc13f28c0 iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xcd935b91 iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xce66ba49 iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xcea0b361 iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xfda7ebbd iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x063112aa lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x1485e0d2 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x37ed6ddb lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x7580973d lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x86a51e34 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x892b71a1 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x99a497e0 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x9c9b426b lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb61d2727 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xbc4c45c4 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xbff324fe lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xcc6cafbc lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd537dea7 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xed2fdd87 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xee737da2 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf4579e64 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x25be794a __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x60a0def9 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x961742b4 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xa4bf6c18 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xad0b8e29 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 0xed02c21e lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xf9a7af25 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xfc263739 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0x3f63cff1 if_usb_prog_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0xe37f9795 if_usb_reset_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x0525df85 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x0d6f95fe mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x2ba5e6b8 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x42702aef mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x4745de0d mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x4844367e mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x5f50cedd mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x821c486c mwifiex_deauthenticate +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x89f4b96e mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x9bee2186 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb0eefd95 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc46ee730 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xdaeb8c5f mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xefdd3202 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x05cfabdb p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x1dc1e434 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x384a264a p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x75f2902e p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x87abff36 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x958cb6e4 p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xb173b508 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xe944b2d2 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xf15d6156 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0737fa6e rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x07dee62a rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0e5ef834 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x11f607b2 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x25fa5ea4 rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3c384285 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3ed364ba rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3fead306 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4030481f rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x415c434b rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x439149dc rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4772e6c1 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x49a73d02 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4c78c8ac rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x52bf2afd rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x596f8615 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x694347d7 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x72f41264 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x81263e9b rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8b637a42 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8fd0e40e rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x90aec6e1 rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x940f16db rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb036ccb4 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb71cf4fd rt2800_get_tkip_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb9a96277 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xbbe8c8ca rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc349f49d rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xce7a3c94 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd99f02ce rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe7d3964d rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe9fe8338 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xea4fd3c8 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xea69841a rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xec50584b rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf11b53ae rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf8ef4985 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfcff6e53 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x171c27ff rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2b17fdba rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x4051c950 rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5f877047 rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x6c1f3b26 rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x763a3a33 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x80c6769d rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x90991d5d rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xa634d42b rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xcca50e4a rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xee7b3767 rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xef811689 rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xf9558728 rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0f0a2fbd rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0fc72893 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1108a86b rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1144642c rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x22dae50b rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x242b1129 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x25c04d21 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2850f423 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3a0a555c rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3d288682 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x40a442da rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x482986c7 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4d2125c0 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4df4ead6 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5e9363f3 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x64eaa6e1 rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x66d016bb rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x69781468 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6d053c11 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x765c5ade rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x778f0606 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7a6446d8 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7e161f9c rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9a1143d4 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa0088090 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa310c809 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa87be6aa rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa90d509c rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb0c08203 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb3522d41 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb74c0fde rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb7f7db21 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbe4d2e65 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc2247152 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc5154071 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc64d283d rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc65a90f9 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc7ffc004 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcfb6991a rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd1815f3f rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xded9eaf2 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe59c392c rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xecdb9e06 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xee6a6fb4 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf0508f91 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfa1e8846 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x0b9e23e4 rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x5152e517 rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x831180d9 rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x83d5a381 rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x97f7b396 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x6e69c385 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x883d0d05 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xd0596da2 rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xd4b54039 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x104f467a rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x288ef0ca rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3561f740 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x361deefa rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3d498092 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x56534ca0 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x594e44a7 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x71dcfc2b rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x74985e38 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8effc034 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x905c2dd2 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x98eb1bcb rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x9d65bfff rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xa21237a3 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xa4e77fe8 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xefe55848 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x40c9f8fb dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x52f8b0ce rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7559e508 dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x850fb9e5 dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x015fb3b0 rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x0a6573d9 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x180287ab rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x31ef6e47 rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x43862a48 rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x538534a0 rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x5938164c rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x69717f8d rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6d52786d 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 0x75269de7 rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x77c13e08 rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x7e402aa3 rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x7e98d98a rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x84d57efe rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x88ea9bb7 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x89e95555 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x8c87adec rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x90a47d35 rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x95b059c1 rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x9be354c8 rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa1a2335f rtl8723_phy_path_a_standby +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 0xcf44022d rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd1f86966 rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xdea0aff8 rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xe54a31bb rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xec825735 rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xfd96cb52 rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x1281ccf9 rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x155ae25e read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x16724e1d rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x1ceb2d36 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x241dedc1 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x2d00c94d rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x5d03afd6 rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x613e9f2b rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x6a74e4d2 rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x723b7989 rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x82564ebd rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x8d127bff rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x8d7d039e rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xac2b0149 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xaf53dc87 rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xbd970cc7 rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xc438a0fa rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xd816052b rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf8ff6add rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xfe205f10 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x2d93869f wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x74e3fc87 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x8f074d80 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x09b06a21 wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1d5f8167 wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1f97f0d5 wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x20ca2485 wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x22655945 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x22800f94 wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x279eb3f4 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3bade40a wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3e18a39d wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4309cce7 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4a694082 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x50676e95 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x50b6779e wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x51bc5b6d 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 0x5672bb87 wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5e005803 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x661429c9 wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6b7703d4 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x741579f4 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x78153bae wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7e2f1ecc wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x80547ab3 wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x833f0ce5 wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8f5912ef wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x91da5146 wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x924a9ca0 wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x93449e7b wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x967a4c94 wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9944d30f wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9cfb39c0 wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xae102b9d wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xaef970f3 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xaf602f50 wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xbf181848 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc5e5bf9a wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc7e341b0 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xce2a7b21 wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd0a74a33 wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe752a969 wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xea039ecb wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xeacbd5df wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xeeb8a91d wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x012b31a9 nfc_mei_phy_free +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x08ae3e97 nfc_mei_phy_alloc +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x3b577068 nfc_mei_phy_disable +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x741025a3 mei_phy_ops +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x8b4e7b3b nfc_mei_event_cb +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0xe82e19a5 nfc_mei_phy_enable +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0x24dd6555 ntb_register_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0x30934216 ntb_transport_max_size +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0x32537aca ntb_transport_link_query +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0x3d54dbfc ntb_transport_tx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0x436098aa ntb_transport_link_down +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0x77ae9ef1 ntb_register_client_dev +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0x82e6c13d ntb_transport_qp_num +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0x9c992c8f ntb_transport_link_up +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0x9d2611b7 ntb_unregister_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0xc270dc24 ntb_transport_free_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0xc37d9036 ntb_transport_rx_remove +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0xd40e7a02 ntb_transport_rx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0xf53fc25a ntb_transport_create_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0xfe897ddd ntb_unregister_client_dev +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x08f361a6 phy_create +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x08fdf187 phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x09f1a9d3 phy_init +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x170c4802 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x43b7029d phy_put +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x54f2f297 devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x7402e1e5 __of_phy_provider_register +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x77a00b22 devm_phy_destroy +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x902f4667 phy_power_on +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x94cddb96 devm_phy_create +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x9add069e phy_get +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xab5a445d phy_pm_runtime_put +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xacd6f002 phy_pm_runtime_allow +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xaeb8db0c __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xbd08ff99 devm_phy_get +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xbecd0976 phy_destroy +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xc1c9e72c of_phy_provider_unregister +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xc75a2264 phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xcc9b9bb1 devm_phy_put +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xdb5a2835 phy_exit +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xe1ba45a1 phy_power_off +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xe2dc35e8 phy_pm_runtime_get +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xea04955f of_phy_simple_xlate +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0x459be15b asus_wmi_register_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0x98597b3b asus_wmi_unregister_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_ips 0x46809fa9 ips_link_to_i915_driver +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 0x1cbad5d9 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x4ed7739e pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xe5453248 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x1cb6758c mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x3ad57f98 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xaa564315 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x37429bff wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x5e36a44d wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xacc0a64d wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xb2b9143d wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xd0e2edd4 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xd50ca3b8 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x5b91ecde wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x09aa65a2 cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x102a3d50 cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x14d2f693 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x18894654 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1ae5736f cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1c3bf4ba cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1e1aa92e cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x42b56cbe cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4c91b547 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x51ba34e7 cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x570d9dd3 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6067bd92 cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x61df0e3d cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6430cb1f cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x683a1a94 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x69c6b4bb cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6b628e73 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6da90c30 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x70765e92 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7be4e809 cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x840ff4dd cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x88e8063c cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x917f2b08 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x94a60b18 cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9b4e9271 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9bd2ebe5 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9f66eead cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa8aa8f07 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xad20d575 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb0e097f4 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb237b30c cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb78d521e cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xba79e2e7 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc103336b cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc404c049 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc4438591 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc5cf357b cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc99774ea cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd5646270 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe134af75 cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe1ce5df3 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf11a9b7d cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf54a0de9 cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfefcc016 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x1f5bb182 scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x22391b4f scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x2a925dce scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x401302f6 scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x44332bc4 scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x593a36c2 scsi_dh_handler_exist +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xf02cc285 scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xf9e5f327 scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0a3693df fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x36006e52 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x3b4f1266 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x4d7eac1b fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x50f47e33 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x755c0d9c fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x75a62b06 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x86459adc fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa46c441a fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb513a9ab fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xc0f4cbfc fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xc384029b fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xcf4e1ce5 fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd76ed7b1 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xddf23d0a __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xfd52a09c fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x15d10a41 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x1d7688be iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x8a902369 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xc451771b iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xdec1bca6 iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xdfdaff7b iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x01990e66 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x13c37d7c iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x199d2685 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1ba475b5 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1d663173 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1e8ad527 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x20f1d57b iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x22319f5c iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x29ed6893 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x348510ab iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3b7c56fb iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3d6f8e36 iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3e58ca7e iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x41571ed1 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4a86bfcd __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4fc4fdaf iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x56cc6921 iscsi_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x59671375 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5de023c2 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6c0d28a3 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x787c7981 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7afcc5fb iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7f444199 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x87d73add iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8bdb2d1d __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9137225d iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9290eb76 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9629fdce iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9e403a0e iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa5d2ea64 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa97e4904 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb015c79f iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbd04fd02 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc2560423 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc435cedf iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc616afdd iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc9d7e166 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xca725e7c __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd22bd243 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd5795153 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd5aea9bf iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdc40b91e iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe1eb580a iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe9c18bae iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x029d7389 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x0bdcc8ee iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x10b0fa41 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x288450c5 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x32428539 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x3a6845aa iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x4ac680e8 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x4baefadb iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6b408750 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6b670bdf iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8ad92afa iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8b59e790 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x96bfdc92 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa18972e3 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb7c6026d iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd4fc14bc iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xfeafe7dc iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x029522df sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x02d71995 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x09f80b15 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0e77ed43 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x129c8585 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x18f3491b sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1dd9ba2a sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x289736dc sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4c6c69eb sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x73d048c2 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x740620f4 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x91114fc7 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa414f85e sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xaadae2b7 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xaec8db94 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xaf078d7c sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb3ecf7b5 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc54ed971 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd185ff94 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xdb662c7d sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe2cb8822 sas_change_queue_type +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf4b60858 sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf506896d sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf65e554e sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xfa511274 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x3876a021 srp_cmd_queue +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x43065860 srp_iu_put +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x79273f8c srp_iu_get +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x91666daf srp_transfer_data +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xda53600d srp_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xfb20234c srp_target_free +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x2a039e7a scsi_tgt_alloc_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xa4ce21a0 scsi_tgt_free_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xb8316e2c scsi_tgt_tsk_mgmt_request +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xbf8060a1 scsi_tgt_cmd_to_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xc2697d90 scsi_tgt_queue_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xc99245cc scsi_tgt_it_nexus_create +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xde14336b scsi_host_get_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xe18c0255 scsi_host_put_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xeb0a2647 scsi_tgt_it_nexus_destroy +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x032dccba iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x184b1a0c iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1ea4493c iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1f330259 iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x23aa7e12 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x29ff8d4a iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2e2c3962 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x39d91be1 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3d855ebe iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x40359ba7 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x46f31a9f iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x493d5ac0 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4fed3cd9 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x53f7025a iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5540df09 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x58368dbb iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5d2a5d56 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x694120b7 iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6dd9a2c6 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x703752a7 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x77a3c4b7 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7c645e53 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8670b04c iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x92504476 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9fcb4e5c iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa10bed50 iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xaa3f16e6 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xaa40575e iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb036b99d iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbf3cebc4 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc3880042 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc5e0c1c2 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xde030cae iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe20175d6 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe2d67202 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe4502964 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe6b485e7 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe961a558 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xedc15388 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf19c8dc5 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x07c61a06 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x450d3793 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xa485046b sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xe0c72061 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x3fa40a31 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x798e50b8 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x8842ed19 srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xbc81858b srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xc1a41f51 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x06397ecc ufshcd_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x0da71f9f ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x271e2cc8 ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x787c6f05 ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x88be2deb ufshcd_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xf2862c29 ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x17b5645e spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x1edd2658 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x727b1f3c spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xbf5e4fb1 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xf0df8199 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x0216e0a5 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x1831639f dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x2ba1bb06 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x494e8053 dw_spi_xfer_done +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x58738be0 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x29cd2ddb ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x094017d7 comedi_buf_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0a33ac66 comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0addd131 comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0ba36cb3 comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x137ddeef comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x15406cce comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1690cf0d comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x18943865 comedi_pcmcia_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x19e6979b comedi_buf_memcpy_from +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1b705f48 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1d4915c4 comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1e66072c comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2b3e2c4b comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2d554508 comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f4eae0c comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2ff8b7c1 comedi_to_pcmcia_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x373550d0 comedi_pcmcia_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3e7f3d44 comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3fbe0224 comedi_error +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x40251172 comedi_pcmcia_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x46bc21cd comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fbacb86 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5333f6b5 comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5c1ba884 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5f50bb96 __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x65e393ed comedi_pcmcia_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x71465d28 comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7174e35e comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7738f408 comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7b32ed11 comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7c03f93d comedi_pcmcia_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x805fd944 comedi_dev_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8e8580ab comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9538ca4d comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x995cbfec comedi_pcmcia_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x99ad4f43 comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x99f09ea5 comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa12b8302 comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa4682268 comedi_buf_get +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 0xbe83ea77 comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbfd20cfa comedi_buf_memcpy_to +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc2582edd comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe512689f comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe76d10dc comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf0353757 comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf21ca239 comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf2e11b55 comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf905a25c comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/8255 0x142edf81 subdev_8255_init_irq +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/8255 0x3362dbee subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/8255 0xf69140c5 subdev_8255_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x161eb235 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 0x113e06a7 amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x9721bf5b amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0xbb140035 amplc_dio200_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_fc 0x816e1737 cfc_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_fc 0xabb72032 cfc_write_array_to_buffer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_fc 0xd2968b35 cfc_read_array_from_buffer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x864239c7 das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x0139dc2b mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x0f2dd40b mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x21a47ff5 mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x2fd67af6 mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x3291b2b1 mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x33bdd323 mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5ff4ca8f mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x6a597136 mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x75e7719a mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x7ecbbe44 mite_setup +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x86cd5343 mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x87d660d4 mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x9115df6a mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x9896ff3d mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xa1025725 mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xa36698d4 mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xb4c88548 mite_unsetup +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xbb89fe90 mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd34428ad mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xedfb3a78 mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xf0dd209b mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xfaafeb81 mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc 0xe429fc7d labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x423116b6 labpc_init_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x745150fa labpc_drain_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x920f159f labpc_setup_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x9de9bddd labpc_free_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xb44e02e1 labpc_handle_dma_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x0b571738 ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x601637cf ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x6240d6d9 ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x896d1122 ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x8acd76fa ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xacb43f81 ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xbc653b51 ni_tio_winsn +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xd3858a3b ni_tio_rinsn +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x0954af5a ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x4a417c10 ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x5879a720 ni_tio_acknowledge_and_confirm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x88e3efa6 ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xea37ba60 ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xff1ee7ff ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x1e5864ad comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x6cf692ff comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xbf4e53f5 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xe7199fcc comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xeb293304 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xf08ef6a7 comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xf9ec172f comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0x1d6c7f01 dwc2_hcd_init +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0x2206b003 dwc2_handle_common_intr +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0x9341b56e dwc2_hcd_remove +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0xb05a818c dwc2_set_all_params +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x1a1b5249 oslec_flush +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x2feda75b oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x3227a28e oslec_snapshot +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x7dc9dddd oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xb2c66001 oslec_create +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xc8b5a524 oslec_free +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xd370f679 oslec_update +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x94bf7756 adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/rts5139/rts5139 0xbd5a0e51 rts5139_usb_ids +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x02ed84f5 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0c038150 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 0x353cea36 spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4449e1dd synth_buffer_clear +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x5f23a9c8 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 0x9e5a462b spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xa13d4982 spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb48956f8 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xba1dd5b7 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbfde302 spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc59f7648 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc766ae09 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xccd2712b spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xce56e8c5 speakup_info +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 0xf642439b synth_remove +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x10f3c855 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x1905fdb9 usbip_start_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x1a3dafc8 usbip_event_add +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x2253e71b sockfd_to_socket +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x2da034ac usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x4594315d usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x488ae8cb usbip_recv +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x806a1f1b usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x9097137c usbip_event_happened +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x93cd2074 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x993f289d usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xaf9bb38d usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xd44fe5bb usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x397c3099 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0x598871cd uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0xd042e525 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x1ab7aa8a usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xeb71edd4 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x06fa80c6 ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x222626cf ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0a23a081 usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x13123170 usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x25f00bf9 usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x33e841fa usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x36176fe9 usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x54c59c37 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6500b1ff usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x73e416d1 usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7645fc61 usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7704c1c7 usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7d90226f config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x805f0a05 usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x82f777f7 usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x89bc269e usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8ab1f0b1 usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa14e0766 usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xabfceaab usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb697f007 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbd302612 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc52942a2 usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc756ddf3 usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xdad19030 usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf1fe2ff4 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf3574738 usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf6747aa0 usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfb719ddc usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfe7c152b usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0x5c07524e gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0x8e27d6de gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0xf1981607 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0xfb12fa4b gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x1de6d0a3 usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x26d83941 usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x2a97af6d usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x589bb235 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x9fa2e78c usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xa83401ce usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xc6cc1038 usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xd97c64ff udc_attach_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xdaf72880 usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x0a5230df fsg_common_set_nluns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x141fce2a fsg_common_remove_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x1ccb58f7 fsg_common_set_num_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x2d10b6a7 fsg_common_create_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x4f90ce1a fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x51707c29 fsg_common_run_thread +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x6acb4179 fsg_common_set_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x7e26d4a5 fsg_common_set_sysfs +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x99023bfc fsg_common_put +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x9a0221c7 fsg_common_free_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x9dc025a5 fsg_common_free_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xa46e6443 fsg_common_get +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xa74eeb0d fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xd3ae3b65 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xd468f882 fsg_common_set_ops +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xe4d1591e fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x567b8d8c ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x5d8731c9 ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x0242aeaf usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x06e493d4 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x0a22d95c usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x1577e72d usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x828e345d usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xa4136b3c usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xa6f6f6a5 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xa7017108 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xe2169136 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xc350664b musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/tusb6010 0x118225f1 tusb_get_revision +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0x425727f9 usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0x7cbf96fb usb_gen_phy_init +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0x9f7ad0af usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0xc9195ec0 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x0963f84f samsung_usbphy_rate_to_clksel_4x12 +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x0a3ebf13 samsung_usbphy_cfg_sel +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x1b73ddb1 samsung_usbphy_set_isolation_4210 +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x8213704b samsung_usbphy_rate_to_clksel_64xx +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0xb8957c0f samsung_usbphy_set_type +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0xbdfba901 samsung_usbphy_parse_dt +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0xf897e7e8 samsung_usbphy_get_refclk_freq +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x355b4ed7 usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x08c65ff1 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0917b0ed usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x10e96c48 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2aab130c usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2aea9cc0 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2c8dfe09 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4e23c744 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x62e36779 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x711aabb0 usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9830392b usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x98e0c7c3 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa2722e3b usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb0588e93 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb185a5ba usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xbfc99ec4 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd3f812b4 usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xddc59802 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe3d519c0 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe6e2bbc1 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe9a7a741 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf3a55b21 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x18d8e894 usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x224b7094 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x24943467 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x311d649d usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x320dacab usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3a956cb5 fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x40c0bffd usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x44ea6fbd usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x499c1862 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x70a48a57 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9816a4fc usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa2b17960 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa45564fb usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa6d05721 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa74df63d usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xcb00012c usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xccd43057 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd7ffa9b8 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xda2338df usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xeb3b506a usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xec8e65ad usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf3e31f0d usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x48281d19 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 0xc91669ed __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xc94f1887 rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf4654c3f wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf55561de wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf65ad4dc wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xfc2a5b5b wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x01987c27 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bfdb008 wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x13396051 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x2fb69ed5 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x5b53c61b wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x5b6e4987 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x6331c9ef wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x6494319c wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7e50a015 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x82a4e9b7 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xaddd78e4 wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xdb4b046b __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xe7ac31d3 wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf5938dd3 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 0x11985701 i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xadbe519e i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xbf63b1a9 i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x17261988 __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x3ef4059d umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x5ae81fa7 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x7a3b5eaa umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xabd436d1 umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xc82c1faf umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xd86f8323 umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xe63f42de umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x061edfc0 uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0a5841f9 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0b8aad57 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0dcca24a uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0f6c4dad uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2315dac1 uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2aa11d32 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2e504534 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x31fc7d2a uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3396987b uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x35a403b4 uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x48fe1687 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e4bc088 __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x676e4f1a uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6da107e0 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6edd4e18 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x754b34bb uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7c75f9ca uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7dcfcd23 uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x83e43ae9 uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x84d08717 uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8f901625 uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa6c979b1 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xaf711e02 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb3d33ba1 uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb6d0df71 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbc8c5f7a uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbecf15bd uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc26c4330 uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc306ead9 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xce042b17 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xcf5c653e uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd9afbc1f uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe1716f06 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe1a07aa8 uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe1ebcbdd uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe6b4ed84 uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf8011fb8 uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf84a7a3a uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfdff0bf6 uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfe3aeed4 uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/whci 0xc955940d whci_wait_for +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x000faf7c vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3071e051 vfio_group_get_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3fd395fa 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 0xa2f8dc08 vfio_register_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xbcdbbb39 vfio_del_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc4913442 vfio_group_put_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xdbe0e4b0 vfio_add_group_dev +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0600ab95 vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0adc3c73 vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1e2cfcfe vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1e81e418 vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x256f6fb2 vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x32c5520a vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x33742ae9 vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x35166a64 vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x35a01ac1 vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x45c2b736 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x46c48f45 vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4ca55794 vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4d9245ab vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4ede84c1 vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5119a5d6 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x58c995dd vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x58ddc1c1 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6340af50 vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x653ef1bb vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6c58a2a4 vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6d0bc06f vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8923e027 vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8abc7c05 vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xbd8600ca vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xbfae9a47 vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc9264303 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe1429a17 vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe3755282 vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe8d56341 vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xea67d15e vhost_work_flush +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x241de633 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x2a492649 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x3c5cf39c auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x6419d55e auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x6e0ed69e auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x9ccf6329 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xbc38e322 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xca650355 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xd61c67d2 auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xf6b20a97 auok190x_send_cmdargs_nowait +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 0x0bd2c6d3 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x2840faaa ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x2d2b5a3c ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x7fe0a8bb ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x8933fa52 ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xc5ea95a1 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xdd3a8e22 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/fb_ddc 0xd1468ff4 fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0x28c6d336 fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0x344d7eb9 fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0x17a3954f sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0x3b308382 sis_free_new +EXPORT_SYMBOL_GPL drivers/video/vermilion/vmlfb 0x016e6c20 vmlfb_unregister_subsys +EXPORT_SYMBOL_GPL drivers/video/vermilion/vmlfb 0x90c018c6 vmlfb_register_subsys +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0x22a7af24 viafb_dma_copy_out_sg +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0x292da7a2 viafb_irq_enable +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0x30cc9311 viafb_request_dma +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0x31469540 viafb_pm_unregister +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0x79e6190a viafb_irq_disable +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0xb4f863e6 viafb_pm_register +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0xbf24bb18 viafb_find_i2c_adapter +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0xcaefb732 viafb_release_dma +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0xfff2dfd2 viafb_gpio_lookup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x1b9c7f83 w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x45d374de w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x71a0fea3 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x969c4441 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xb75688b1 w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xd6dba624 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xe00a7e90 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xf091e0dc w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0xf88a5934 w1_next_pullup +EXPORT_SYMBOL_GPL drivers/xen/xen-privcmd 0x98fd5b65 xen_privcmd_fops +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x05d74c68 dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x80102245 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xf9bd0cb7 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x1b28b3cc nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x1e52aadd nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x4b4a7c4a nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x4c68554f locks_in_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x79bbb6b4 locks_start_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x985db20b nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xa25b40f2 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xde84245d lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xfa86cc75 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x06b8f184 nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0aae40a6 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0afccd01 nfs_put_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0cf1aeeb nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0db7a2a6 nfs_writehdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0e57271a nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0f2ae4d6 nfs_pageio_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x12c27abd nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x13a113d7 nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x141a315a nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x16f30661 nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x176a952b nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x184faa46 nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1a562acb nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1b515b81 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1ce53297 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x274f39e2 nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x28532a2f nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x28bb6076 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x28dd046c nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2adc9937 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2aff0119 nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2cbd1f00 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2cf1561d nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x37d13941 nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x38839257 nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3939f386 nfs_free_server +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 0x40083c64 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x450c4f2c nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x45612f59 nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x45aca0fd nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x498289ba nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x49eedc45 nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4eb17231 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4fc9b776 nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4fe90ba9 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x504a6524 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x55f54a4b nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x566993d9 nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5751a013 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5c916b18 nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5eec9bb1 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5fb03dfb nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x626f1903 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x62badbe2 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x64790c99 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x689d58f2 nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6afd3c42 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6c6dc434 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6fde3f3b nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7079dce8 nfs_readhdr_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x72bb8582 nfs_writedata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x747e1fa0 nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x765b6ee4 nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x778d92f0 nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x77993d19 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x780832f5 nfs_initiate_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7a41c3bd nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7bb4d0c6 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7d399da3 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7e58a258 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x80a207ca unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x80da3dcb nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x81e35616 nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x83700635 nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x84d8b740 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8543213d nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8775b67a nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x888d1a1d nfs_generic_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x89bc5a64 nfs_wait_bit_killable +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 0x94511903 nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x99b4d398 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9db736e9 nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa1962e2d nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa4d39cc9 nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa4fd1119 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa56d562a nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa6214766 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa65424e4 nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa65cbd39 nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa7d2ca64 nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa7da206f nfs_post_op_update_inode_force_wcc +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 0xa98dec2f nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaaa14361 nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xab6ea872 nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xac0b925f nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xacb2093d nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xacf97725 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb0d7aec9 nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb1c2e3f4 nfs_pageio_add_request +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb1db5f4d nfs_readhdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb56a9380 nfs_file_splice_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb8fe25d3 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbc6d07dd nfs_writehdr_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbd277c29 nfs_setlease +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbf1a5202 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbf52d27e nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbfb91164 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc1fda1f0 nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc33a7c41 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc57de6c0 nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc6bee9e4 nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc6f4048f nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc6fc2697 nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc940126a nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc9cb9cd4 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xca513d10 nfs_generic_pagein +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcf1e69b2 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcf93b8d0 nfs_initiate_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd0454036 nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2d50b92 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd3702325 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd47bcb49 nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd9a5a61c nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdc8d4f92 nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdeb3b052 nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe4533bc2 nfs_readdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe7558e61 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe9f39e11 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xec2600c0 get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xef6c9826 nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xef81928e nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf3e69b9f nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf5814d0d nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf83f0806 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf8748a41 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfaf75674 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 0xfddbcb4a nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfefed46a nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1061bc71 pnfs_readhdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x11bda27c __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x15fd877e nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x166080a5 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x19260912 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x21e47984 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x25a2cc7c _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2628058a pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2867b0fa pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x37c936c6 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3863f6f4 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x39043419 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4d570718 nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5010eb17 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5780f2d8 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5e088d74 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5fad12eb nfs4_proc_getdevicelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x628b47d4 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x665fa50e __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7025f255 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x75c64ada pnfs_writehdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x774cec30 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x81d72adf pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8cd56541 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8de98cc9 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8fcfe9a9 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9f9e4f08 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa548c965 nfs4_insert_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa5c84782 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa6f67080 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xaa8013c9 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc003b055 nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc64fb93c nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc81d886c nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd926ffd8 nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdb813e84 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xef327b89 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf1003136 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf690fb9c nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf8a77303 nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf8af64d6 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfbd13f22 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x0ca28b13 nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xb71eaf74 nfsacl_encode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x196871a3 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 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x48e1e8d1 o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x55f976e8 o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x687f6251 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x94d8854d o2nm_get_node_by_ip +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 0xb8787a57 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbaeb4700 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc02c01bc o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc3679d7b o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xfbfc577c o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x3016dbf7 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x5d1ebf80 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x9339a6a3 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x9a47f7ad dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xb5800f65 dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xc6b085af 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 0x025e2d69 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0562c415 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x16b2e575 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x5469ce31 ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x7083dbd5 ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x89502fe7 ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xab44edca ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xb4bd060c ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbd32bdd8 ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xdc823ea4 ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe2bd47db ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe417d940 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe7a0f17a ocfs2_plock +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 0x83862b89 notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xd07fb8cf notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x021957e1 raid6_datap_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x05513b71 raid6_call +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x0f8a2742 raid6_2data_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/802/garp 0x06966b5b garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x0c17b0f0 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0x355d5fc3 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xa0d295ae garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0xb4d0182a garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0xdc9318f2 garp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x086fa3ce mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x7accf0c8 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x901d54fb mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x9dae7240 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xdf3d3d6a mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0xdf82da03 mrp_register_application +EXPORT_SYMBOL_GPL net/802/stp 0x8f070a22 stp_proto_unregister +EXPORT_SYMBOL_GPL net/802/stp 0xa0dbc7d2 stp_proto_register +EXPORT_SYMBOL_GPL net/9p/9pnet 0xa5c50096 p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0xe675a399 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 0xf51d16b9 ax25_register_pid +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xee69ca3f bt_debugfs +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0ac4f679 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x11f98d02 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0x152313fe dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d4439a0 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2fdb944f dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3961cb57 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3acc1d21 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x40bd3d42 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4aa2e74c 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 0x4f8e421d dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x64915c68 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x68708a4d dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x70d5bdcf dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7517288f dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7e53160f dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x807b910b dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x83724c81 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8b09fe6c dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8eb68a86 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0x921b1aae dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x97141a92 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9c3ad105 dccp_insert_option_elapsed_time +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa0d7a122 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0xaedbcbb3 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb460aa0d dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbdd86d5d dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbe785cb4 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc24f7add dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc34b8876 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xda3578da dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdb2d8e5c dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdcc6103e dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe1567874 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0xef8acd5f dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf3017e21 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf6fcac90 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x1afd3da5 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x1e137222 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x499317c5 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x992498bf dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x9f65a5be dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xeb31ecac dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x24a5eb79 register_switch_driver +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x49350f1c unregister_switch_driver +EXPORT_SYMBOL_GPL net/ipv4/gre 0x4e0fdb37 gre_build_header +EXPORT_SYMBOL_GPL net/ipv4/gre 0xa466dcda gre_cisco_register +EXPORT_SYMBOL_GPL net/ipv4/gre 0xa831e976 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xb65160c6 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xdc19eff3 gre_cisco_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x1143df74 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x356384a7 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x3b86bebc inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x3bd52b2b inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x6a8f093f inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x736871de inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x0b76ba40 ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x21dbebcf ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x23858f88 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x2f1a8ac4 ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x3d3c41c7 ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x54aeb8c9 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x560cf4c2 ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x7c81a65a ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x7e4f7b10 ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x9091ef7c ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xab761714 ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xc4fe70ba ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xe6d74c5e ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf940ec79 ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x9ea37d68 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x0d784ed5 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0x6d40a921 need_ipv4_conntrack +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xb6931764 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x045d7d18 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x1b4770e8 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x3148111f tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xa45aa4d8 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xa5a16827 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/xfrm4_mode_tunnel 0x9cdf1f98 xfrm4_mode_tunnel_input_deregister +EXPORT_SYMBOL_GPL net/ipv4/xfrm4_mode_tunnel 0xa545ff5b xfrm4_mode_tunnel_input_register +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x08b3768f ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x167ed597 ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x4f56907d ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x5018d343 ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x8b373b95 ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x4c4a1c86 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 0x4a085cd7 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/xfrm6_mode_tunnel 0x7e2e454c xfrm6_mode_tunnel_input_register +EXPORT_SYMBOL_GPL net/ipv6/xfrm6_mode_tunnel 0xb2e81af7 xfrm6_mode_tunnel_input_deregister +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x17686698 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x390eaee5 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3a85a943 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x477c1314 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x5758906f __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x66e2b796 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6fa74a42 l2tp_tunnel_sock_lookup +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x79f73605 l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x7aed6e6e l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x7e30bda4 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x890081f1 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x90df9656 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x95ffc350 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9e2af84b l2tp_tunnel_sock_put +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa7b816c9 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xad46003a l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd3611bd4 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x8c1b3ab6 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x20552959 ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x2ab9fd84 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x315e4cb1 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3663a36d ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x465de5f0 ieee80211_iterate_active_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x4bf42798 ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5d38f601 ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x6c08d6cb ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x858f34ae ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xad9b63e4 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb7a9cbb1 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd5244a3d ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd706721e ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xe4c2bed8 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf0349b38 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x04b450c4 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x29eddffe ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x5b700b39 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6344eaf6 ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x66aaa370 ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7f895e41 ip_set_nfnl_get +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x92c1ce57 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9938cd84 ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9bc9845a ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa28663a2 ip_set_put_byindex +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 0xa3e7b80a ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa8dc7157 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc7ddde8b ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc8c7a180 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xda83e3ea ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xeb9d2aae ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xef13ebbe ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xff5d2a7d ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x1563cbf8 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x513a0189 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x8d14673f ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xb10dc950 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x01f84db5 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x02ada157 nf_conntrack_flush_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x074aeacb nf_ct_l3proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1318cf10 nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1847dbf0 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x19a595cd nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1daf100f nf_nat_seq_adjust_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x204dcd25 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x261f88a0 nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2abeac99 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2bd0650b nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2dbac025 nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x30d16059 nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x33f9c072 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x36fa8e98 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x395ed9bf nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3b63bfe3 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3d0f61b7 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x447c6914 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4810fa97 nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x48352f34 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x49976932 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4a87376d __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4b748af1 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4d7a15aa nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5005e96f nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x55a255a1 __nf_conntrack_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x573d513a nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x58fe8c8d nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5976cb3b nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5c095f8e nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x61335356 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x61a0721f nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x623b5822 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62473a70 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x63e85ce4 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x650722f9 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6ac8ee0f nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6ce1fb02 nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6f062224 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x70124d3e nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x722fbd11 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x736ac20b nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x775f3faa __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x77e3f7ac nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7a889be4 nf_conntrack_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x80a11836 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8266e101 nf_conntrack_tmpl_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ae19114 nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ecf73c1 nf_ct_expect_init +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 0x96321bd4 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9686016b nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x99606bd1 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa08ee7d9 nf_ct_extend_register +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 0xad233514 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xae76fcf1 nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb1f9b7be nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb53c6b19 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb9e45054 nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbc278491 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbe74a245 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc1aa38ae nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc482a36b nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc4dcd563 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc834293a nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcb44875a nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcfb6323b nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xddeeacb8 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xde46c0c8 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdef249d9 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe78e6b19 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe7e2860f nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xec6ecdc0 nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xecac600b nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf1285383 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf39c5a2c nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf546c00b nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf8a49604 nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfa354a98 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xff0340f1 nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x097eafed nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0xc29ed24e nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0xa6f2a8df nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x04b13659 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x0bb8d94b nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x104a1edc nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x1c71b596 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x7235ae21 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x7ebf44cb nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xa1ceec65 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xc89f7f42 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xe9dcea52 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xefa3faa3 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x444328a9 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x658352e9 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x6db4be50 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xa3c67a92 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xf3eca196 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x0c2e4015 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x2b669e70 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x0e5e0571 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x48d54f54 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x9b74606f ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xb4701921 nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xcda1044b ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xd96e5397 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xe35a16bd ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x0b079d97 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x1ae4d00d nf_nat_tftp_hook +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 0x3d319eda nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x55cc4f5d nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x5eed8ad1 nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x73d25e07 __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xa757a34c nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xd05703ec nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xe76ac8a5 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xeace05fe nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x11a006b5 synproxy_check_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x185b0d4b synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x49188447 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 0x0fda3c99 nft_validate_output_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1a9cd9bb nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x37a0db74 nft_validate_data_load +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3d49dab7 nft_validate_input_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3f8bda34 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x50052961 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5ac14deb nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5cc6dcbe nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6c39a53b nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6f605477 nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x7b39f4ba nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xaeb9f654 nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc2593b05 nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcd6bdb51 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe03929fe nft_do_chain_pktinfo +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x0b38f043 nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x0edd1141 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x13e9ceb3 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5f17370e nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x7a200a76 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x86b66f8d nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xab93dd2e nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x352a62fb nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0xda72e0f5 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x00a9ecaa xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x24c8e482 xt_copy_counters_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x35b97ddf xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x57293eaf xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x728e14ff xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7774720e xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x77e391ff xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x83f5eb80 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x933cd9fd xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xaf1eca5a xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc216d515 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd19b0899 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xdfa6052e xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe2ae25c1 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x3a099777 xt_rateest_put +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xf4e9cb5d xt_rateest_lookup +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x5c519351 nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x97429e7b nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xf70c49f7 nci_spi_send +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x142786d7 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x1d31a5b2 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x25ac7ab3 rds_trans_register +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 0x36c62d06 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x48081298 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x4ac2ba7d rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x58b3f325 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x6c1a7f8f rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x766f2de1 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x82f99aff rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x8977bac8 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x8b39433b rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x93a1e388 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x96fafe85 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x97d0d735 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x97deb61e rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0xb0fc8501 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0xb796916b rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0xb84a336e rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc756beb5 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0xcd7cdced rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0xe6d4fd22 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xec09dba7 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0xef3220d2 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x848d9b38 rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xa8a9dbcf 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 0x32600f8d svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x60d353ba 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 0xe8758d7c gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x006d2b84 rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x010030e0 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x01816514 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0243163a rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0306aa3f rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x047c7d59 xdr_skb_read_bits +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 0x06f06136 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x07df9614 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0804b6f3 rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x091e147b xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b5def9b svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0c2ba17e rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0d51d6b8 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0da16998 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0e17afb8 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x10c717db rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1193253f auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x12c7734a svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x133f8f04 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1374071e xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x13cd57c8 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x13f887e2 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x14655ff0 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x157ed305 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x15a03f77 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x15a934a8 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x176fbb04 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x18594eca xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x18d9579c svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x19f51d7a rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ae214cc cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1af46594 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d2eafa4 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e555fbd xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e6d6cb3 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x20a6a549 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x20bd2615 rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2151b253 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x23467ca6 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x24f30d5d svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2701fb66 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x285ddecc svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2863385d svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2911fb64 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2c4130c1 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2c516bad xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2da43b6c rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2db8ca04 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e99b3ae rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f4969f7 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f8ebbe0 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2fa68516 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2fe97e68 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x30481c50 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x33596986 rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x34af8dc1 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x35610271 rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x38a232e5 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x38a745b7 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3bc0c530 gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3bc58065 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3d4fb1c4 svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x42acf729 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d3d7c07 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4e24c6da rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4f37031c svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4fe20dc9 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x51475dd7 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x557ff8e6 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5650c3aa sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x573ea757 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x581b92db svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x584357fc sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x58838a99 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a74bafc svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5d5fd958 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5dd28634 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60b28315 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60b8090c _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x612bf8b9 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x63a53b09 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x63d9896b sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x647d9649 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x653edba1 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65c71639 rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x66448baa svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x66bd8d94 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x674ec0b6 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x69cd5a6b rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6c8404eb svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6cd8d244 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6dbad5c1 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6ef5642e svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x73503979 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x745ce4d8 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x74c9f641 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7535ddab svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x761c583f rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7aefa05c sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7bc96a65 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c049f7c rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c40b115 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7e5b1eb3 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f7ff317 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f9e44a8 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x82575b38 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8393580d xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83c75f20 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x857a4893 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87fe680e rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x890aa7ef xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x89d211da xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a28088a xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8b8ecbf2 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d1a8cab xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8f7287d9 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8f7df6a6 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x901c1b12 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9087c269 rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x96262cf2 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x966f9fd1 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9973ed7f xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a0d2c5f svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c6517db svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9cbcdfbf rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d221657 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa0771981 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa3c9e614 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa4111dc6 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa621621b xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xab73cd38 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xade1f7a9 rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf277c6e rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf987a70 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0116611 rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0e53bd9 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb190db34 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb5dceb43 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb97dbf17 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9d6186a xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb8b39df svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbbfc11bd write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbc103717 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbd2b0075 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbd5ebe70 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe6ed3cc svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbfaefd55 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc2052196 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc6cfbe02 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcba09bfc rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xccde0a7d xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf5d9e24 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd1f26c38 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd2fb8490 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd2fddf0b rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd3bbae67 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd44672c2 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd49925f0 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd5504347 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd5e1c52b svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd6127773 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd6e2d935 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7b5ccff rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdb96ecab svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe275a779 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe2ab7083 rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe3b56743 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe3ee957c xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe73873e1 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe835d979 xs_swapper +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97b5c86 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb808543 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee1d6167 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf090b932 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf15d34a2 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf2e6590e xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf72c4464 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf7512cd5 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf7931f32 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa6011b0 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfbb737cf rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe690f0a sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe6b6e2c rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfebb3cc0 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfebd6233 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xff785c52 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xffaf4138 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0c79d5ef vm_sockets_get_local_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x137eca67 vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x15c0c57c vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x40bba8e7 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x519f91cb vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x694d5ca6 vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x74e91915 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x751ff010 vsock_addr_unbind +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x8390075e vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x88b52752 vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x956a8a12 __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x97fb26c3 __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xa6aa8ba2 vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xa7bd91ae vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbc20398d vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe429f62c vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf593c40a vsock_pending_work +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf916d1d1 vsock_insert_connected +EXPORT_SYMBOL_GPL net/wimax/wimax 0x07943073 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x14ceb008 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0x1b470ca4 wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x34efce58 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x47e19b87 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x4b292825 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x6655ad8e wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x68a19754 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x83311efc wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xe0b6b4bd wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0xe25c1cea wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0xed2632c4 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0xf2e8dba7 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x0e659eea cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x37fec281 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x46d78020 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x5e8b7640 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x68525cf4 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x7e29073e cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x97395a36 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xc4ff7d8c cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xcf8d5fe5 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xe460bd92 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xfe20339f cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00778770 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x056bb269 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0a575945 xfrm_count_pfkey_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0b9e5852 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x74e1a843 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7c30b8c7 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x92dbc6c1 xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xbc8b0f41 xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xce7a55c1 xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xe122af95 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x0c823634 ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x46c82eb3 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x944c8a77 ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x9e6710b0 ipcomp_output +EXPORT_SYMBOL_GPL sound/core/snd 0x07159b0b snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd 0x3ca17104 __snd_printk +EXPORT_SYMBOL_GPL sound/core/snd 0x49ef4d76 snd_kctl_jack_report +EXPORT_SYMBOL_GPL sound/core/snd 0xa48b3957 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0xddd02360 snd_kctl_jack_new +EXPORT_SYMBOL_GPL sound/core/snd 0xfd72dc56 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x72715272 snd_compress_register +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x7936b8a7 snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xc6a27ac2 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 0x37a73688 snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa35414dd snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x49f21cc6 snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x4a0b8d86 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x7f539a1f snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xab1aae74 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xb1711c9c snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xd365f38b snd_ak4113_create +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0342dfd0 snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x05a9b7a8 snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x06525ae5 snd_hda_enable_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 0x0a31f3e3 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0a424314 snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0be27917 snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0e885d65 snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0e93e314 is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0f343634 snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0fe7f8b9 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x10f47db9 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x12c88f43 snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x15fdf4a5 snd_hda_ch_mode_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x181da008 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x195283c8 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1b6692ac snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1c586086 snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1dfab457 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1eb22671 snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1ed57cd6 snd_hda_codec_flush_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1f2623c3 snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2111b4bf snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x217fafea snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x22c0250c snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x24c5f600 snd_hda_get_sub_nodes +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x27c61d1a snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x28888738 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2a414e1e snd_hda_is_supported_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2af57e58 snd_hda_jack_tbl_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2d0ee84f snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2fff6151 snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x330539e7 snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x340d8c53 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x342ad2e4 snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x365b84f6 snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38883736 snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3954c7be snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3a1646ed snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3a3d1395 snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3a746f9a snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3cd0d77a snd_hda_ch_mode_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3d5a8b0b snd_hda_add_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3e4040c7 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x40c99cbe snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4480fdf3 snd_hda_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4566835c snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x461d6ab8 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4b7b23a8 snd_hda_check_board_codec_sid_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4b8b05bc snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4dab1f60 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4ddded5f snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4e3a07e1 snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4f35fcb9 snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4fe5d18d snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x50293da8 snd_hda_suspend +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x55d05f3e snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5663fba7 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x57a65486 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x57e477b8 snd_hda_bus_reboot_notify +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5872ebab snd_hda_ch_mode_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5975e25b snd_hda_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5e8c93ae snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5f719dbb snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5fc2ce0b snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x613b0218 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x623955a8 snd_hda_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x64c6a1dc snd_hda_codec_resume_amp +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x65de83c1 snd_hda_override_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x661e0bd1 snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x688679f5 snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x69d215d2 snd_hda_gen_spec_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6ef85947 snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7023a515 snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x70970a37 snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x71e0095d snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x756e371f snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x769daa3c snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x76dc6871 hda_main_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7937ac59 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7960f803 snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7bb667e7 snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7bd3a5f4 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7c783a9b snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7cec5b0e snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7e6e534f snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x81c2dec5 snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8240ed6f snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x82ad01ee snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x83150c24 snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8491a24c query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x85042404 snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x86fc4fd8 snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x871a6e44 hda_extra_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8b2ccd73 snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8bf168c1 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8c126aa9 snd_hda_check_board_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e4c6826 snd_hda_calc_stream_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8fb63a81 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9123752f snd_hda_codec_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x91c887ab snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x91e8e513 snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x96271554 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x979cf85b snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x97a30d8b snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x97c59158 snd_hda_query_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x989979e0 snd_hda_delete_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9b37feb1 snd_hda_parse_generic_codec +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9d2ca348 snd_hda_codec_amp_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa1a7fb32 snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa1fa19ff snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2827d76 snd_hda_get_jack_location +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2ccf1a5 snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2fdbd1f snd_hda_query_supported_pcm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa74d3767 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xac0f2246 snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xadce43d6 snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xae0e680e snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb05ec44f snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb1b6c918 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb2f60ba5 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb5cd0f1c snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb826b5a8 snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbb04b541 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbcba9100 snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc143370b snd_hda_codec_resume_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc15ccfbf snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc4f8f539 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc652fd69 snd_hda_get_jack_connectivity +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc9035bd8 snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb301b6e snd_hda_get_jack_type +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcd65917c snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcd74ef96 snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd2621c76 snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd3479da6 snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd52fe1df snd_hda_codec_update_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xda676072 __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdc2b5105 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xddbf1e6f snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe22af308 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe2c544ed snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe319a474 snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe31d6420 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe44036a5 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe54b03cd snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe5bca677 snd_hda_sequence_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeab9af48 snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeff6398a snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf24e29b9 snd_hda_bus_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf2797f01 snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf6b36550 snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfa24a1d6 snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfcc6385e snd_hda_queue_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfd7dcf5e snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfdc8b791 snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfe73f006 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xffba7ded snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xffc25c97 snd_hda_resume +EXPORT_SYMBOL_GPL sound/soc/atmel/snd-soc-atmel-pcm 0x0725a41b atmel_pcm_mmap +EXPORT_SYMBOL_GPL sound/soc/atmel/snd-soc-atmel-pcm 0x1036ce2c atmel_pcm_new +EXPORT_SYMBOL_GPL sound/soc/atmel/snd-soc-atmel-pcm 0x1a45c7d2 atmel_pcm_free +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sn95031 0xf1798f59 sn95031_jack_detection +EXPORT_SYMBOL_GPL sound/soc/mid-x86/snd-soc-sst-platform 0x4ad9017f sst_register_dsp +EXPORT_SYMBOL_GPL sound/soc/mid-x86/snd-soc-sst-platform 0x848a4c47 sst_unregister_dsp +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x041b3761 snd_soc_codec_writable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x04ecba00 snd_soc_remove_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x06dceffb snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x06edcab5 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0873dbf9 snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0bb60591 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0c58d4d6 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0d998085 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1047a84b snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x10e90792 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x10eefd9b snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1171ddcc snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x175fda11 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x17b4ce41 snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1881aced snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x23051219 soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x289d6c60 snd_soc_dapm_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2cd72ce7 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2e665164 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2ea1ac65 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2f7da754 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2f94188f snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x33ee2411 snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x36ff6c33 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3770c7ad snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x37e44adf snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3bac11a4 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x41a21fe8 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x42c0e3ce snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4360ce43 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x45bf0875 snd_soc_lookup_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x47149a53 snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x47883461 snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x494a2072 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4a160eb8 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4cf351e8 snd_soc_cache_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4f5d8f45 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4fa28975 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x500f0398 snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x516e3f68 snd_soc_dapm_put_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x521d830e snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x52b2c1ab snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x537180ba snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x54c326c9 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x57c4b212 snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x58ce909b snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x58f6c87d snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x59ce7196 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5c28f039 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6041d92a snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6ac034c8 snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6c2c5a3b snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6e82e067 snd_soc_codec_readable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6f67bb58 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6fb21742 snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x704a997a snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x710eb850 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x74898923 dapm_mark_io_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x77eaa142 snd_soc_info_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7c2ceb1c snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7c545fd7 dapm_mark_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7d1e449a snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7d1efe31 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7d31dc24 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7d56951f snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7fb5ea51 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8111163b snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x81fb4230 snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x85d5c26d snd_soc_cache_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x88a8d7de snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x89959fa7 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x89aa716d snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x89dbe205 snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8d8295b2 snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x90320be4 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x91079ac4 snd_soc_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9236a481 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x928d31a3 snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x94cff64c snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x960f546f snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x98797e4d snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x991f7d3c snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9a48861f snd_soc_dapm_kcontrol_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9cddc753 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9f4a4b46 snd_soc_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9f64b272 snd_soc_dapm_get_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa20e1c86 devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa31279c1 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa656ea92 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa7055f79 snd_soc_add_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaa5d357c snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xabff3aaf dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb5462e10 snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb5ac5b7d snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb798de2b dapm_reg_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xba066868 snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xba3bb670 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbb37c474 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbbaa509d snd_soc_get_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbc9b35d4 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbcdbd7ae snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbe076994 snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbe9329a2 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc0596419 snd_soc_put_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc0a13737 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc0f4712c snd_soc_codec_set_cache_io +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc1577417 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc4253b04 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc45ff7bd snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc6c4a2e4 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcd36cb1f snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcd48b28b snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xce40a903 dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd10f0de2 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd39967ad snd_soc_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd60a40e0 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd6838a50 snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd6bb89b0 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd7ecdfdb devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdb99bf6d snd_soc_dapm_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe2ca25b5 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe3a31fee snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe56a5138 snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe6508f42 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe6c04b7b snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe80a8650 snd_soc_codec_volatile_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe8553e72 snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xed0f7d49 snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeef7b43b snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf0357372 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf0d442e6 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf2de1f2e snd_soc_update_bits_locked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf544f542 snd_soc_cache_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf7daa048 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf859da3a snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf892a35f snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xffeafc82 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL ubuntu/i915/i915_bdw 0x118a3f6e i915_bdw_gpu_busy +EXPORT_SYMBOL_GPL ubuntu/i915/i915_bdw 0x34af3be3 i915_bdw_release_power_well +EXPORT_SYMBOL_GPL ubuntu/i915/i915_bdw 0x7381c75a i915_bdw_read_mch_val +EXPORT_SYMBOL_GPL ubuntu/i915/i915_bdw 0x8993eade i915_bdw_request_power_well +EXPORT_SYMBOL_GPL ubuntu/i915/i915_bdw 0x8b28f943 i915_bdw_get_cdclk_freq +EXPORT_SYMBOL_GPL ubuntu/i915/i915_bdw 0x96d7119d i915_bdw_gpu_raise +EXPORT_SYMBOL_GPL ubuntu/i915/i915_bdw 0xa17bc3aa i915_bdw_gpu_turbo_disable +EXPORT_SYMBOL_GPL ubuntu/i915/i915_bdw 0xde54f019 i915_bdw_gpu_lower +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x00000000 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x00000000 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x0034f3b6 xen_has_pv_nic_devices +EXPORT_SYMBOL_GPL vmlinux 0x005019f2 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x005fa88a acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x00632780 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x00634507 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x00871e4b __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x009386b8 cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00b0ed0d device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00c4dc87 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x00ef63db ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x012724f6 irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0x01356c28 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x013e6458 get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0x014f1724 acpi_subsys_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0170cb6c efivar_work +EXPORT_SYMBOL_GPL vmlinux 0x017652b6 devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x017e32b7 regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x01848a8e local_apic_timer_c2_ok +EXPORT_SYMBOL_GPL vmlinux 0x01d11a05 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x01dad12d raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01f1fa55 list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0x021d8f97 regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0x022df4ee ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0x025eec5b dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x026211e2 memory_failure_queue +EXPORT_SYMBOL_GPL vmlinux 0x0268512a lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x026a4f9c aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x0271e832 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0x02b24324 devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x02b2b3e7 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x02b9826f elv_register +EXPORT_SYMBOL_GPL vmlinux 0x02c599ff ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x02d11cd7 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x02d69567 ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x02e7119e sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x02fb8100 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x03094b7b kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x031eed7d __clocksource_updatefreq_scale +EXPORT_SYMBOL_GPL vmlinux 0x032e4e5b fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x033f58b8 __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x03983a36 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0x03990cea regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0x03a66810 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x03bf1d5e gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x03d63e42 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03ffd331 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x0409c94f pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x04350513 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x0444e4e2 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x0445210b percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x04486e88 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x047bab9a pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x049275b4 pin_is_valid +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 0x04d3b91e regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x04d4fcd9 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x04ec65ff sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x04efa836 cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x052f0ef0 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x0531ec58 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x053909d0 xen_remap_domain_mfn_range +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x0550d05d raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x055a87d1 balloon_devinfo_alloc +EXPORT_SYMBOL_GPL vmlinux 0x057c92d6 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05b34edb ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x05c4b85a cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0x05d1b442 __efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x05d40977 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x05ece82a regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0x060d1064 set_memory_ro +EXPORT_SYMBOL_GPL vmlinux 0x061d8ad8 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x062fc169 xen_hvm_resume_frames +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x065ec397 regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x06963c36 intel_msic_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x06a79f8f rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0x06a8f7eb inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x06cd0c26 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x06cd59c8 rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0x06d549e6 pinctrl_free_gpio +EXPORT_SYMBOL_GPL vmlinux 0x06db2690 pinctrl_get_group_pins +EXPORT_SYMBOL_GPL vmlinux 0x06e4ed63 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x07006336 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x07116c85 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x071e45b4 efivar_entry_set +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x07690913 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x07847849 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x078bc93f __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x078c0137 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0x0798b997 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x079cebb7 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07d91337 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x07dc9890 xenbus_register_driver_common +EXPORT_SYMBOL_GPL vmlinux 0x07f25490 print_context_stack +EXPORT_SYMBOL_GPL vmlinux 0x07f300c3 smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x07fc478e acpi_dev_resource_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x07fd149d __clk_register +EXPORT_SYMBOL_GPL vmlinux 0x08204501 xen_swiotlb_dma_mapping_error +EXPORT_SYMBOL_GPL vmlinux 0x0848b319 usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x08563404 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x0869ee27 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x0870a084 napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x08735401 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x087a101c bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0x087d53b8 __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x08b75fe5 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x08c2cddc sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x08c6cc25 sec_reg_update +EXPORT_SYMBOL_GPL vmlinux 0x08cd8b36 ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x08d86a46 regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0x08e66bbd crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x08fa7e0e do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x09025670 iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x09125859 ata_std_sched_eh +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 0x094a87e1 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x0962d0e8 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0x096764a2 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x098d9845 pinctrl_pm_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0x09975de2 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x099d7b2e __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x09adfcb8 device_move +EXPORT_SYMBOL_GPL vmlinux 0x09b0778b __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x09bbd422 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x09d3820d ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x0a26b3d7 regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x0a53508e xen_swiotlb_sync_sg_for_device +EXPORT_SYMBOL_GPL vmlinux 0x0a8c916e reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x0a9fd3c5 gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x0aae4c2b pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x0aef63e7 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x0afd4610 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b10c6c8 driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x0b128080 xenbus_unmap_ring_vfree +EXPORT_SYMBOL_GPL vmlinux 0x0b1ea5a6 devres_get +EXPORT_SYMBOL_GPL vmlinux 0x0b4ce7cc devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0x0b50b786 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x0b52e502 apei_resources_add +EXPORT_SYMBOL_GPL vmlinux 0x0b59390b __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0bae62b1 ktime_get_monotonic_offset +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 0x0c805f93 clflush_cache_range +EXPORT_SYMBOL_GPL vmlinux 0x0c80e3fe efivar_init +EXPORT_SYMBOL_GPL vmlinux 0x0c9b2d7c relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cce0227 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x0cf26b9b usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0x0d1dae60 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x0d1e28dc usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0x0d281d53 led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x0d2b4560 percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0x0d507cc8 xenbus_frontend_closed +EXPORT_SYMBOL_GPL vmlinux 0x0d8289c7 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x0d9377f8 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x0dca82a3 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0e0d1152 nl_table +EXPORT_SYMBOL_GPL vmlinux 0x0e13cb4d apei_resources_release +EXPORT_SYMBOL_GPL vmlinux 0x0e19256c tpm_show_durations +EXPORT_SYMBOL_GPL vmlinux 0x0e19c5ee queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x0e20b7bc serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x0e45f2fa ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x0e80869b agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0x0e93fd2d thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0x0ea08d04 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x0ebe2d64 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x0ed69c59 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x0ed8cd75 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x0ed9302e percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0x0ed9b164 iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x0edb82e8 ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL vmlinux 0x0f01c4c3 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0f2d7d87 mce_unregister_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0x0f3954ce wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x0f4ffc55 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x0f5e75e4 tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f9b862c platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x0f9ed9cf ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0x0fa138de xen_hvm_need_lapic +EXPORT_SYMBOL_GPL vmlinux 0x0fc01e9f static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x0fcc1969 copy_from_user_nmi +EXPORT_SYMBOL_GPL vmlinux 0x0fdfd63e btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x0fe2d570 xenbus_directory +EXPORT_SYMBOL_GPL vmlinux 0x0ff635df regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x0fff2240 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x101385b2 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x106e37e2 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x108f6fad rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x10e156a1 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x10f8aab6 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x10fb0477 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x110106c1 cper_severity_to_aer +EXPORT_SYMBOL_GPL vmlinux 0x110d53a3 ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x110f5039 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x111eaeed sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x1168a9f2 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x1179985a ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x117c7305 hwpoison_filter_dev_major +EXPORT_SYMBOL_GPL vmlinux 0x11bb3d33 css_rightmost_descendant +EXPORT_SYMBOL_GPL vmlinux 0x11da4bd7 rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x11e000f5 stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0x11f21c69 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x11f39572 udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0x11f59b39 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x12030fa6 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x1208bcfe dm_dispatch_request +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x121ed3f3 add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0x1230ea05 efivars_kobject +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x12553b2c crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x1261846b ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x1289b18d ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x12a9b883 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x12f04d63 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x13004422 device_remove_bin_file +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 0x132fc939 cper_estatus_print +EXPORT_SYMBOL_GPL vmlinux 0x1349d415 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0x136316a2 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x13650b7d usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x136e4d98 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x13792679 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x1385ce3b sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x138aff76 gnttab_init +EXPORT_SYMBOL_GPL vmlinux 0x13921363 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13b89dee pinctrl_request_gpio +EXPORT_SYMBOL_GPL vmlinux 0x13bdc295 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x13bfee20 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x13cf6e7b power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x13d77394 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x13e6cc28 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x13ea56e4 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x13f3e3fb klist_init +EXPORT_SYMBOL_GPL vmlinux 0x14132d0f uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x14208b3f dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x145784d1 gdt_page +EXPORT_SYMBOL_GPL vmlinux 0x147cf4b2 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x14f20fa7 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x14f875ce devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x14fc0c63 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x15010e1f arbitrary_virt_to_machine +EXPORT_SYMBOL_GPL vmlinux 0x150d2c31 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x1510d16c blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x1542e618 dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x15568631 lookup_address +EXPORT_SYMBOL_GPL vmlinux 0x1567dedc acpi_dev_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x156b462d transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x159b7969 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x159ed1e4 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x15af7f8e wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x15b0606e e820_any_mapped +EXPORT_SYMBOL_GPL vmlinux 0x15ba55fc tpm_show_temp_deactivated +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x160cbb89 rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x164aed4a dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x166bee54 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x16972134 crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0x169c2167 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x16ba671c md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x16ba9546 xenbus_bind_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x16cf8699 __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x1711aaf8 tpm_show_pcrs +EXPORT_SYMBOL_GPL vmlinux 0x172e72d4 vdso_enabled +EXPORT_SYMBOL_GPL vmlinux 0x173a77c8 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x1746f98e __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x1753a32f hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x1756f2cf led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x17580218 ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0x17614bf3 apei_resources_sub +EXPORT_SYMBOL_GPL vmlinux 0x17784270 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x1799c94c adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x17b096bb __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x17f44200 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x1827ba55 call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x1829b9ed hwpoison_filter_memcg +EXPORT_SYMBOL_GPL vmlinux 0x18459035 irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x18582826 amd_pmu_disable_virt +EXPORT_SYMBOL_GPL vmlinux 0x185e30a4 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x18822c9b ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x18a27f34 jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0x18ca8c5e wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x18cf6328 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x18d97124 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x18f83fab gnttab_grant_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0x190b4e85 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x192e2816 thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x193243f3 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x19496284 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x1950a143 isa_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x196614ce hw_breakpoint_restore +EXPORT_SYMBOL_GPL vmlinux 0x196e32d3 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x1999f67b da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19b384a5 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19e0b8ca usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x19e94f7e ata_acpi_cbl_80wire +EXPORT_SYMBOL_GPL vmlinux 0x19eee275 acpi_subsys_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x19f49249 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x1a082d69 max77693_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x1a20e102 __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x1a2813b2 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1a323362 __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x1a33ce74 efivar_entry_find +EXPORT_SYMBOL_GPL vmlinux 0x1a66a548 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x1a8c0833 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x1ac83e3c inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1ad7400b devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x1ad83009 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x1ae76ccc acpi_kobj +EXPORT_SYMBOL_GPL vmlinux 0x1b1e83ed pinctrl_dev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x1b1f2bda speedstep_get_freqs +EXPORT_SYMBOL_GPL vmlinux 0x1b2215ae __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x1b22b61d pinctrl_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x1b2ef993 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x1b51bbc8 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x1b52db1c probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x1b670076 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x1b742858 device_create +EXPORT_SYMBOL_GPL vmlinux 0x1b851290 xenbus_unmap_ring +EXPORT_SYMBOL_GPL vmlinux 0x1b8822d8 pinctrl_gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1b9f5df9 css_next_child +EXPORT_SYMBOL_GPL vmlinux 0x1ba0d156 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x1ba8067a rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x1bb4d3ab vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x1bc33767 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x1bc5eebe pinctrl_gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x1bd06aab cpufreq_frequency_table_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x1bea9e09 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x1c0bac55 rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0x1c0f0ea9 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0x1c179374 ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c5fc3b3 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x1c6347a8 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1c71916f xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x1c7cea5a wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1cbbabb0 usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x1ce98df1 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x1d278b96 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x1d459685 xstate_size +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d5f7b43 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x1d6ef363 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x1d739e1c xen_set_callback_via +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d80a599 pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x1d8fb3bb acpi_dev_resource_address_space +EXPORT_SYMBOL_GPL vmlinux 0x1dab556b invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x1dd2811b wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x1e000879 hwpoison_filter_enable +EXPORT_SYMBOL_GPL vmlinux 0x1e1f5d24 extcon_find_cable_index +EXPORT_SYMBOL_GPL vmlinux 0x1e376078 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x1e3a88fb trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x1e44ebc8 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e6ce93f regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x1e719c92 pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e8d6ad1 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x1e8fac8e wireless_nlevent_flush +EXPORT_SYMBOL_GPL vmlinux 0x1eaff244 inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x1eb1594f gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1edc21cb hwpoison_filter_flags_mask +EXPORT_SYMBOL_GPL vmlinux 0x1f068f87 skb_gro_receive +EXPORT_SYMBOL_GPL vmlinux 0x1f1988f7 hwpoison_filter_flags_value +EXPORT_SYMBOL_GPL vmlinux 0x1f26ac83 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x1f442f18 preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x1f50a743 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x1f56e3d8 mnt_want_write +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 0x1f915754 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x1facd162 system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0x1fb86905 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x1fcece42 inet_twdr_twcal_tick +EXPORT_SYMBOL_GPL vmlinux 0x1fd4c625 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x1fefa125 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x2004ef93 devm_acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x200ac2b4 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x20121d65 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x201b71be pwm_request +EXPORT_SYMBOL_GPL vmlinux 0x202bb71c acpi_preset_companion +EXPORT_SYMBOL_GPL vmlinux 0x20304652 put_pid +EXPORT_SYMBOL_GPL vmlinux 0x20454829 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0x20588ca7 register_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0x205ee55d xenbus_map_ring_valloc +EXPORT_SYMBOL_GPL vmlinux 0x2060204a __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x20671650 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x2097fb17 extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0x209ec764 xen_event_channel_op_compat +EXPORT_SYMBOL_GPL vmlinux 0x20ad5a9c inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x20b452c5 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x20bc3470 orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x20c8112f crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0x20d4a18d __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x20dc773e __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x2111db74 uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0x211cd7d9 user_read +EXPORT_SYMBOL_GPL vmlinux 0x2136428e find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x21574900 devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0x216f1a07 virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0x2184b458 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x219044c6 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x21a7d628 clk_register +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21b5df04 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x21f0d7c0 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x2210116c hwpoison_filter +EXPORT_SYMBOL_GPL vmlinux 0x2226fb88 rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0x222c7348 tpm_store_cancel +EXPORT_SYMBOL_GPL vmlinux 0x225d7370 rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x2279fc70 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x229b14fe pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x22a927e0 pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x230bd81c tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x232f0bd3 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x2356d56e rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x2366a2c0 errata +EXPORT_SYMBOL_GPL vmlinux 0x23679939 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0x23827f5d gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x2392bc6e pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x23ac37db usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x23c249b7 skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0x23dbde3a subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x23fc3bfb ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0x23fd624d ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x240580a9 xenbus_probe +EXPORT_SYMBOL_GPL vmlinux 0x2421cd74 rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x2447533c ktime_get_real +EXPORT_SYMBOL_GPL vmlinux 0x244758b4 acpi_dma_request_slave_chan_by_index +EXPORT_SYMBOL_GPL vmlinux 0x244ab570 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x24811e53 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x24a78a7a usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x24a9b591 disk_map_sector_rcu +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 0x24cb82ab dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x24d833fb lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0x24e2a420 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x24f62a3c sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x250900cd xenbus_grant_ring +EXPORT_SYMBOL_GPL vmlinux 0x250fc64f ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x253014fa devm_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x2545c170 unregister_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x2559504c _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0x25710f21 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x25836a0a mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x2594526c wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x25b78258 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x260d89ce nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x2656ed90 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x266dbaef crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x26965721 slow_virt_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x26a373d5 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x26ac0eaa usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c84704 default_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26d271db blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x26eb0688 list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0x271ead18 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2767aedd dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x2787db00 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x279cb985 apei_exec_pre_map_gars +EXPORT_SYMBOL_GPL vmlinux 0x27a46685 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x27aa3713 serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x27b0fffd devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x27bccc8a stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27cb8deb vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x27cc7241 iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x27ddb33d acpi_dev_resource_io +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x27fca502 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x282a3a78 usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x28431889 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x285d309e ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x28654f29 pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x28754a76 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x28a258b0 tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x28a82da4 snmp_mib_init +EXPORT_SYMBOL_GPL vmlinux 0x28a903c8 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0x28d8117e subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x28e64c64 xen_has_pv_and_legacy_disk_devices +EXPORT_SYMBOL_GPL vmlinux 0x28fc61a8 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x29059b53 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x29227ab6 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x2933f088 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x293f073e vrtc_cmos_write +EXPORT_SYMBOL_GPL vmlinux 0x29a8768b generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x2a1ed518 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a89b366 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2a8c6bab cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x2ac36de7 btree_last +EXPORT_SYMBOL_GPL vmlinux 0x2ad1ece4 zs_get_total_size_bytes +EXPORT_SYMBOL_GPL vmlinux 0x2af2b131 ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x2b04d129 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x2b1b65b2 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0x2b2e10c6 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x2b34c61c evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x2b43c566 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x2b62526c rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x2b67f096 speedstep_get_frequency +EXPORT_SYMBOL_GPL vmlinux 0x2b7a6de8 syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x2b80e376 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x2bac390c regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0x2bd15cc2 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x2bd6b8f8 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2bd858f6 dm_kill_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0x2be5f59a sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0x2bfaef4e clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x2c153630 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x2c1981c5 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c5c85d1 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x2c6a0410 xen_set_domain_pte +EXPORT_SYMBOL_GPL vmlinux 0x2c754e36 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x2c7cf540 pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x2c7d9c64 xen_store_interface +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2cbe8ccb acpi_get_pci_dev +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2d0d11aa reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2d119ee3 usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x2d17a0e1 cgroup_taskset_size +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d2a7c79 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0x2d3e8d27 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d710d89 iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0x2d718286 dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0x2d86e49a usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x2d9f2ce3 sched_clock_idle_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x2daf1bf2 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x2db38ae9 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x2dd3da81 wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x2df790a2 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0x2df87637 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x2e1ad76e spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e386261 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2e3c64d4 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x2e45e488 rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x2e8b6c8c __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ee05faf cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x2ee87a74 tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0x2eee1e2e usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x2ef7a4ef pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f64415f unregister_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2f707633 pinctrl_lookup_state +EXPORT_SYMBOL_GPL vmlinux 0x2f7c945e usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x2f813a7e input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x2f857551 machine_check_poll +EXPORT_SYMBOL_GPL vmlinux 0x2f90f06b ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x2fa4cc61 rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x2fbbb8dc ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0x2fcaa6a4 __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x30120585 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x3025ec67 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x302ef577 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x3035e972 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x307953e8 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x308b733a getboottime +EXPORT_SYMBOL_GPL vmlinux 0x30a4f4ca bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x30a685a2 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x30c2fe6b get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0x30f12599 bus_register +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x311e5248 unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x313d7a97 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x31430cad usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x3151bf72 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x3151ff57 unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x3155976f invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x315bb54e __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x31689784 wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x3168ddb2 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x3178d151 ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x317d59a6 atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3189f244 iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31d577ca bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x32056c39 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0x320e9f69 thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0x3215c3af thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0x322f3511 __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0x32385d47 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x3256ca45 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x325e677c gnttab_grant_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x32924a4d scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x329bbbde timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0x32a486c7 cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x32b31a8c ktime_get_boottime +EXPORT_SYMBOL_GPL vmlinux 0x32b52277 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x32b8d25b rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0x32b942b8 gpiochip_remove_pin_ranges +EXPORT_SYMBOL_GPL vmlinux 0x32b9923a intel_scu_notifier +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32fc25de pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x32fd447a monotonic_to_bootbased +EXPORT_SYMBOL_GPL vmlinux 0x32fd4b62 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x3304c2fe fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x331816b4 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x331f88af securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x333228ec intel_msic_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x333d928a mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x33520d72 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x33655159 xen_pcpu_hotplug_sync +EXPORT_SYMBOL_GPL vmlinux 0x336fcf9a mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0x338edbc5 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x33b96e5d apei_exec_write_register +EXPORT_SYMBOL_GPL vmlinux 0x33c6865d serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0x33d70387 i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0x33f70713 pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x3408e012 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3438ab34 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x3475f2cd xenbus_dev_is_online +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x34ac50a4 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x34acc824 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x34aff409 ata_sas_port_async_resume +EXPORT_SYMBOL_GPL vmlinux 0x34baae52 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x34d17821 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x34e9a984 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x34fa8c37 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x3504ff06 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x352650ee gnttab_batch_map +EXPORT_SYMBOL_GPL vmlinux 0x3532702d device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x35369157 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x353e1cd1 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x358020b1 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3581f995 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x35ab93d9 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x35bd6aba ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x35df06bc power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x35e3fe8d pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x35f10f43 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x35f165f1 devm_reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x35f3ae51 unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x35f7c25b bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x35fd49ca rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x36341cd8 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x364321ea ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x3647c59d regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x366b2108 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36a1fef6 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x36ae3a7e iommu_domain_has_cap +EXPORT_SYMBOL_GPL vmlinux 0x36b5497e intel_iommu_enabled +EXPORT_SYMBOL_GPL vmlinux 0x36b9d0b7 ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0x36ba2551 intel_scu_devices_destroy +EXPORT_SYMBOL_GPL vmlinux 0x36e92a73 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0x36f9e8ba pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0x370fbd6f swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0x375a8b5a device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x37637c2f __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x377e0c94 smp_ops +EXPORT_SYMBOL_GPL vmlinux 0x37968642 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x37b69a5b iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x37d41824 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x37dad54d da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x38620e38 gnttab_grant_foreign_access_trans_ref +EXPORT_SYMBOL_GPL vmlinux 0x38a9c2c7 input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x38ba5264 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x38bcc007 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x38c06cee usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x38dc2548 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x38e69d99 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x38f83c61 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x39191f33 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x391dfd6b fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0x391f36e6 regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0x39270d14 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x392dc293 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x393d29cf ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x39470404 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x3947e378 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x399f1bd0 regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x39c78ce1 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x39d6c244 ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0x39e6ab2a ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x39e948ee unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x3a15d0ed tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x3a1b4025 blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x3a23aa1a tpm_show_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x3a26af9a dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a38dc65 memory_failure +EXPORT_SYMBOL_GPL vmlinux 0x3a4eea50 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a53b45a acpi_dev_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x3a676e07 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x3a77578f rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0x3a888e73 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x3a90b493 regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x3a99b7ed crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x3aa4897b wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3aa7438c dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x3ac1aa46 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x3ad25ae4 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x3adf77ad pci_msi_off +EXPORT_SYMBOL_GPL vmlinux 0x3aeaddb1 crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x3af1d9fb clockevents_unbind +EXPORT_SYMBOL_GPL vmlinux 0x3af2a25c md_stop +EXPORT_SYMBOL_GPL vmlinux 0x3af851e1 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x3b082cdd ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x3b346015 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x3b549951 pci_configure_slot +EXPORT_SYMBOL_GPL vmlinux 0x3b55911d cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x3b5b3421 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x3b7145bb apei_exec_read_register_value +EXPORT_SYMBOL_GPL vmlinux 0x3b8a64fd __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x3b993ea3 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x3bc29613 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x3bdcf0cd device_del +EXPORT_SYMBOL_GPL vmlinux 0x3be7c39e scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x3bf2f30a xen_unmap_domain_mfn_range +EXPORT_SYMBOL_GPL vmlinux 0x3c029b9e mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x3c4f827e xen_find_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x3c5c1886 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0x3c642cfe vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x3c751760 devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x3c8424a0 clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3c8f4428 clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cf04db4 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x3d003abb vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x3d2886b3 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d3adc7b i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0x3d56b013 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x3d76a01a __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3d7ea99a gnttab_grant_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x3da3e14c dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x3dac4829 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0x3db76a48 thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0x3dc4d9fa pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x3dc6fdbc regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dd4d3a7 bprintf +EXPORT_SYMBOL_GPL vmlinux 0x3dd83e3a inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3dea1c48 regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x3e1f1e08 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x3e2e543d cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x3e2fa31f wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3e309633 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x3e65e4f7 acpi_dev_pm_attach +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e757637 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0x3e7f0dfc __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x3e971b8d regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x3ea5196d apei_osc_setup +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f09279d get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x3f0ea1af alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x3f229c4c oops_begin +EXPORT_SYMBOL_GPL vmlinux 0x3f31cc8f regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0x3f3fb448 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x3f4e8769 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x3f7a6f50 bdi_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x3f83c74a thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3f84d4c9 gnttab_release_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x3fb1bd15 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x3fd89494 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x3fe0d65c rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x3fe967ca usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x4001309c bitmap_load +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 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x4097e815 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x40a0c9bc virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40af2c6d devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40e12709 tpm_show_pubek +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x41299916 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x415b26d5 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x415c9f9e pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x415d73f5 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x4169a138 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x416b16e5 virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x419f2561 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x41a304f6 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x41a70f7a scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x41a8ae47 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x41d883df regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x41d97018 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x41e64994 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x41febb25 blkdev_aio_write +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x4213a51a efivar_entry_set_safe +EXPORT_SYMBOL_GPL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x42738ae1 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x42920688 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x42bd8202 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x42c989ff iomap_atomic_prot_pfn +EXPORT_SYMBOL_GPL vmlinux 0x433722a2 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x435e6c6e crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x439e75c5 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43b2d2da wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x43d07bfd do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x43d633d7 xenbus_dev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43fcb5ae crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0x44103a37 cgroup_load_subsys +EXPORT_SYMBOL_GPL vmlinux 0x44404f11 kdb_register_repeat +EXPORT_SYMBOL_GPL vmlinux 0x4443bc0d ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x444b5b08 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x445a3740 usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x44bdf078 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x44cc9c55 klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x44e40b31 rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0x4512b086 intel_scu_devices_create +EXPORT_SYMBOL_GPL vmlinux 0x4523cab9 cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4541fe0d mtrr_state +EXPORT_SYMBOL_GPL vmlinux 0x454c15ae __smp_call_function_single +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x45778b84 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0x45825372 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45d14bdf hypercall_page +EXPORT_SYMBOL_GPL vmlinux 0x45d9fbc5 pinctrl_utils_add_config +EXPORT_SYMBOL_GPL vmlinux 0x45f3d8b6 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x460f31aa rodata_test_data +EXPORT_SYMBOL_GPL vmlinux 0x460f7531 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x46610fcf usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x46649969 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x467649db dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x46849313 rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x46ec0d55 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x46f13326 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0x470fa426 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x4728e65b usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x472dafde clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x477a6ec6 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x47aa6dfe tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47bfe638 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x4828e77b acpi_scan_lock_acquire +EXPORT_SYMBOL_GPL vmlinux 0x484f98f6 gnttab_map_refs +EXPORT_SYMBOL_GPL vmlinux 0x48682db9 perf_guest_get_msrs +EXPORT_SYMBOL_GPL vmlinux 0x487fafb9 tpm_release +EXPORT_SYMBOL_GPL vmlinux 0x48a02d65 tpm_dev_vendor_release +EXPORT_SYMBOL_GPL vmlinux 0x48ca8947 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x48d04ab4 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x48d4115a rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x48d587b8 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x48e2f45d serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x48e45d4b extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x48fc1802 sec_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x490a8df6 x86_platform +EXPORT_SYMBOL_GPL vmlinux 0x49339f55 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x4935d58a devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x494e0120 ftrace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x49556fbf PageHeadHuge +EXPORT_SYMBOL_GPL vmlinux 0x49750407 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x4978ba8f irq_get_irq_data +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 0x499c50d5 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x49a84150 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x49ab5ef2 devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x49bddb4b pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0x49c74bfb posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x49d8b302 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x49eb7f4b uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x4a33ce4a bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x4a3c3cf9 microcode_sanity_check +EXPORT_SYMBOL_GPL vmlinux 0x4a3d223f inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x4a57c5e8 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x4a834743 ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4abfee00 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x4addb07c bio_trim +EXPORT_SYMBOL_GPL vmlinux 0x4ae10d5a ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x4afb573b vrtc_cmos_read +EXPORT_SYMBOL_GPL vmlinux 0x4b000286 devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x4b0150d4 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x4b0b2b1f sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x4b3179f1 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x4b3425f1 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x4b35233c rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x4b41d84a skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x4b5257e0 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x4b67ce25 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x4bac84fa crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x4bb7ebdd platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x4bc62a81 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x4beaad2f fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x4c10d14d __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x4c16f764 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x4c23beb3 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x4c292449 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x4c2a472b __static_cpu_has_safe +EXPORT_SYMBOL_GPL vmlinux 0x4c2d526b fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x4c2e1f24 clk_disable +EXPORT_SYMBOL_GPL vmlinux 0x4c37ef6c sdhci_pci_o2_resume +EXPORT_SYMBOL_GPL vmlinux 0x4c55afde regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x4c5f0632 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c7ed7ac skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0x4c94c810 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x4ca4c9df clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x4caf81ae pinctrl_add_gpio_ranges +EXPORT_SYMBOL_GPL vmlinux 0x4cfc8057 xen_unregister_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x4d0d4526 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x4d2d790c bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x4d48c0dc i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x4d76a35a set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x4d92b653 pinctrl_utils_add_map_configs +EXPORT_SYMBOL_GPL vmlinux 0x4d9ad6ab power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x4d9d295f ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x4d9fb109 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x4dde2495 xen_swiotlb_sync_single_for_device +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4e02cb3a rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e273ef0 init_fpu +EXPORT_SYMBOL_GPL vmlinux 0x4e4d9399 stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0x4e57723d apei_read +EXPORT_SYMBOL_GPL vmlinux 0x4e5a2a0f rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0x4e74e625 gnttab_batch_copy +EXPORT_SYMBOL_GPL vmlinux 0x4e752219 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x4e842e7c acpi_register_gsi +EXPORT_SYMBOL_GPL vmlinux 0x4eabb919 of_reset_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x4eb2003e sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x4eb9bed5 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x4ef31ecf pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f020dee public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x4f4ac914 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4f647aaa platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x4f6b0baa efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0x4f8ef009 __efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0x4f8fae7f crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x4fa74513 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x4fb72f99 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x4fc03fa0 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x4fc52e8d __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4fe62f3e dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x4fee057a spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x500bf833 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x5015d92a ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0x5021d48f __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x5026585c xen_irq_from_gsi +EXPORT_SYMBOL_GPL vmlinux 0x506691f1 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x506b0164 efivar_entry_add +EXPORT_SYMBOL_GPL vmlinux 0x506cc085 tracepoint_iter_stop +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x508bacb7 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50a108db sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x50c89f23 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x50cc9b4a usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x50d56517 xenbus_read_otherend_details +EXPORT_SYMBOL_GPL vmlinux 0x50e5d2d1 perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50f90a8f crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x510790e1 acpi_subsys_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x512afd7e xenbus_probe_devices +EXPORT_SYMBOL_GPL vmlinux 0x514ba044 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x5187ac4b xen_store_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x518c2fc6 hpet_rtc_dropped_irq +EXPORT_SYMBOL_GPL vmlinux 0x51a48c70 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x51b360b7 pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x51b55e8e split_page +EXPORT_SYMBOL_GPL vmlinux 0x51ca7d08 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x52212010 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x5252b1b4 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x5255ded8 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0x525cbf07 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0x5272d8bc __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0x527f9205 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x5293896f proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0x52a41251 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x52acadb3 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x52cdd808 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x52e60dbd rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x52f06854 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x532218f4 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x53524a33 netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x5365bc82 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x5390cc71 tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x5391b3b0 srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x539f157b pci_xen_swiotlb_init_late +EXPORT_SYMBOL_GPL vmlinux 0x53bfe4ff dm_underlying_device_busy +EXPORT_SYMBOL_GPL vmlinux 0x53d92b1b acpi_dma_request_slave_chan_by_name +EXPORT_SYMBOL_GPL vmlinux 0x53daf4e0 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x540099ee __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x54103d57 pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0x5413836b pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x54478dd3 dma_buf_export_named +EXPORT_SYMBOL_GPL vmlinux 0x544fae99 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x545096ee __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x546c1941 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x546e02d6 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x5473b328 save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x548990d0 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54a2326c efivar_entry_size +EXPORT_SYMBOL_GPL vmlinux 0x54b2240c __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x54b8aaa5 acpiphp_register_attention +EXPORT_SYMBOL_GPL vmlinux 0x54b8ac68 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0x551ec183 device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0x55248128 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x552c222b apei_get_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0x5530652d cred_to_ucred +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5550c5fc seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x55526907 xen_features +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x559831ec napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0x55bfa798 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x55cc1c4e ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0x55edd53d unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x56008b20 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x5625f546 hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x562fef23 unregister_ftrace_event +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 0x5646f04a inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x564f1dca klist_add_after +EXPORT_SYMBOL_GPL vmlinux 0x5654f836 erst_get_record_id_next +EXPORT_SYMBOL_GPL vmlinux 0x56564240 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x56694a69 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x568a0256 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0x5692386f gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0x56947347 dmi_walk +EXPORT_SYMBOL_GPL vmlinux 0x56b63670 lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x56b7db1b usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x56d133a9 xenbus_dev_remove +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56e78f1d pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x574c3932 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x57520d16 cper_estatus_check_header +EXPORT_SYMBOL_GPL vmlinux 0x57545532 blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x5779d445 xenbus_exists +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57d80f1c fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0x57de47c0 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x581d9fd2 pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x5839fc62 gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x584c2302 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x584c5acb led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x585704ab aer_recover_queue +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x592c1fb7 filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x592d2c3c blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x593e4641 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x5940c1b9 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5942c515 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x5943b7ec crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x5947abbe max77693_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x595bef5a dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x5996e9f5 xenbus_dev_groups +EXPORT_SYMBOL_GPL vmlinux 0x59a6e91d clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x59f961b2 extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0x5a2b1b67 gnttab_free_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5a35bd88 xen_pci_frontend +EXPORT_SYMBOL_GPL vmlinux 0x5a441ebd efi_query_variable_store +EXPORT_SYMBOL_GPL vmlinux 0x5a4c328d inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x5a4def21 __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x5a58b0f5 ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x5a74be61 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5aaded2f __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0x5abaec3a transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x5ae9eef5 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x5af03a28 gnttab_claim_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5b3df481 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x5b781172 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5b7b1868 cpufreq_notify_transition +EXPORT_SYMBOL_GPL vmlinux 0x5b85a494 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x5babf842 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x5bca810c virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x5be0ee4b regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0x5bead93a sysfs_put +EXPORT_SYMBOL_GPL vmlinux 0x5c0504b7 ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0x5c392d0b tpm_register_hardware +EXPORT_SYMBOL_GPL vmlinux 0x5c40200b pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x5c66e90c efivar_run_worker +EXPORT_SYMBOL_GPL vmlinux 0x5c67eccb class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x5c863496 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x5c8d4df9 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5d11d250 user_update +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d366dec gnttab_cancel_free_callback +EXPORT_SYMBOL_GPL vmlinux 0x5d38cced ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5d4863af fuse_conn_kill +EXPORT_SYMBOL_GPL vmlinux 0x5d48a650 m2p_find_override_pfn +EXPORT_SYMBOL_GPL vmlinux 0x5d4ce426 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5d50317b virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x5d5e9e3d kobj_completion_del_and_wait +EXPORT_SYMBOL_GPL vmlinux 0x5d83a3ac i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x5d90d5e8 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x5d9616f3 cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x5db3ddd3 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0x5dbcfa4f boot_cpu_physical_apicid +EXPORT_SYMBOL_GPL vmlinux 0x5ddfb42f ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x5dfacd76 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x5e45c572 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e72107a tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x5eb31a9e handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x5eba5876 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x5ec7e87a device_reset +EXPORT_SYMBOL_GPL vmlinux 0x5ed3937d fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x5ed81bb7 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0x5ef3fbf9 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x5f18bea4 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x5f248f72 set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0x5f2d6563 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x5f2da8c4 check_tsc_unstable +EXPORT_SYMBOL_GPL vmlinux 0x5f3512ae ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x5f419491 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x5f7af28d bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0x5fa9eeb0 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x5fb49dbb tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x5fbc66de aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x5fc27be9 acpi_dev_irq_flags +EXPORT_SYMBOL_GPL vmlinux 0x5fdfa2c1 amd_pmu_enable_virt +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x6055e35c ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x606e97e2 extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0x60930d37 save_mc_for_early +EXPORT_SYMBOL_GPL vmlinux 0x6094685f wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a325ba debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x60ac7b9f dev_get_gen_pool +EXPORT_SYMBOL_GPL vmlinux 0x60cd73ed pv_apic_ops +EXPORT_SYMBOL_GPL vmlinux 0x611006d5 apic +EXPORT_SYMBOL_GPL vmlinux 0x613953bd sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x6164bfac rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x616bdaab key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x61a9880a ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x61f2f9aa mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x621a7fbb skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6231765a ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x623803c8 hest_disable +EXPORT_SYMBOL_GPL vmlinux 0x624a6406 hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x627ebab7 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x62c5569a platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x62eadbe4 ata_acpi_gtm +EXPORT_SYMBOL_GPL vmlinux 0x62fa4469 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0x630ec2d5 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x631c407e sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x63205de1 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x635ec980 apei_exec_post_unmap_gars +EXPORT_SYMBOL_GPL vmlinux 0x63690c5e led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x63744b5c usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x63aa8fed device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x63bb8b64 pinctrl_utils_reserve_map +EXPORT_SYMBOL_GPL vmlinux 0x63bd6ec9 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0x63c31c2d ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x641c671c pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x64256424 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0x6425af17 __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x6437870e uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x6437e325 pinctrl_dev_get_name +EXPORT_SYMBOL_GPL vmlinux 0x646fa014 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x648193e1 virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0x64a209ce securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x64b7069e apei_mce_report_mem_error +EXPORT_SYMBOL_GPL vmlinux 0x64bed438 pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0x64c33cf4 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x64c6c626 pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x64dc1723 register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x6527a231 dbgp_external_startup +EXPORT_SYMBOL_GPL vmlinux 0x652bac4d devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x653cb02d intel_msic_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x658818f8 crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x658c8186 amd_get_nb_id +EXPORT_SYMBOL_GPL vmlinux 0x65b51ca2 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65df6b84 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x65ff2579 get_matching_microcode +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x661cb877 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x6627eec6 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x662a0c3f x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x663b01df regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0x663c16d6 gnttab_grant_foreign_access_subpage_ref +EXPORT_SYMBOL_GPL vmlinux 0x6643644b sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x66649e32 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x66724f93 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x667a16b5 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x66834a62 pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x66d46995 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x66d856c1 hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66ff7eb7 devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x670b4c00 crypto_rng_type +EXPORT_SYMBOL_GPL vmlinux 0x6731553f attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x6739a503 balloon_set_new_target +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x67643d26 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x677c4b5a relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x677d6526 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67ac0d49 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x67ad90aa tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x67bab1cb __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x67be3eb9 pwm_config +EXPORT_SYMBOL_GPL vmlinux 0x67c73890 device_register +EXPORT_SYMBOL_GPL vmlinux 0x67cd5ad0 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x6812cf8d __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x68142933 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x681bc269 register_mce_write_callback +EXPORT_SYMBOL_GPL vmlinux 0x687934e9 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x68956406 static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x68b657e0 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x68dd3576 gpio_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x68dfc1d4 devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0x69091f91 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x691dc065 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x69348e64 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x69415b78 xen_swiotlb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x6945725e mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0x69469666 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x69511d0b tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x6963fac7 tpm_open +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x69a1a039 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x69b0dd55 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x69c7cf74 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x69c898cd ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x69d964e7 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x69e9a2cb ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a2a6a19 disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x6a3b26e3 ping_bind +EXPORT_SYMBOL_GPL vmlinux 0x6a46143f ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x6a4ec41e find_module +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6aa15282 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6acad21f acpi_get_cpuid +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b4ae509 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x6b4e43cb debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x6b583303 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x6b5b478e anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6b6f2339 acpi_dev_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6b7b80cb class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6b7f1cb0 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x6b7f5a74 swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x6b82366c xenbus_alloc_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x6ba3f3dc device_rename +EXPORT_SYMBOL_GPL vmlinux 0x6bf1b90d dmi_memdev_name +EXPORT_SYMBOL_GPL vmlinux 0x6c0a036e devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x6c1251fd apei_exec_read_register +EXPORT_SYMBOL_GPL vmlinux 0x6c1b09ab gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x6c206726 xenbus_dev_fatal +EXPORT_SYMBOL_GPL vmlinux 0x6c439bf9 acpi_pci_find_root +EXPORT_SYMBOL_GPL vmlinux 0x6c455ba1 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x6c49c4f2 clockevents_notify +EXPORT_SYMBOL_GPL vmlinux 0x6c4b1942 crypto_givcipher_type +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 0x6c84d835 sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0x6c9aba3b sdhci_pci_o2_probe_slot +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6cb8b425 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6cbc231c arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x6cc16ac9 tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x6cc93a63 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6cd4ea62 wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x6d05bb5e regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x6d0931ef usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d31e93b tracepoint_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x6d339861 __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0x6d5e014e tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x6d65adf9 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x6d89e997 ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x6d9a4eba led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x6da03bbf get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x6dbafd58 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x6dc39f2f da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e26879b sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x6e37c21d debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x6e3941f1 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0x6e46ba56 devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x6e58ddf0 gnttab_end_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x6e68b22e swiotlb_tbl_map_single +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 0x6e9e3170 ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0x6ec8e2b4 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x6edc1509 xen_swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x6ee18f74 pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x6efd837f ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0x6f0a17b0 irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f34ba04 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x6f5e6c3a usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6fee1926 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x701ada2a irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x701f8373 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x70201233 unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x70825112 srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x708adb2a xenbus_switch_state +EXPORT_SYMBOL_GPL vmlinux 0x70918003 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x70bb651d __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70f13caf get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x71481ce4 led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x715ffe02 page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x71639d2d bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7198df01 percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0x71b44949 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x72093ac9 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x723b5424 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x7247b9e8 sysfs_get_dirent_ns +EXPORT_SYMBOL_GPL vmlinux 0x7267db00 hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x72acfafe inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x72bac6ce acpi_dev_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x72e1faec scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x72e34c7d skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x72e886db extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0x72fc7061 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x73013896 xenbus_printf +EXPORT_SYMBOL_GPL vmlinux 0x730512ad fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0x7314c54c ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x731dba7a xen_domain_type +EXPORT_SYMBOL_GPL vmlinux 0x73303b64 xenbus_watch_pathfmt +EXPORT_SYMBOL_GPL vmlinux 0x734f93da da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x73502174 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x7350aa79 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x73510609 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x73519a11 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x735b1cd6 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0x738fd248 intel_msic_reg_update +EXPORT_SYMBOL_GPL vmlinux 0x7392517d wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73b44982 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x73c45714 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73cd906e agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73f0d5ab kobj_completion_release +EXPORT_SYMBOL_GPL vmlinux 0x740e4616 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x7413743e cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x7422c95e gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x742c9158 cn_add_callback +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 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x74954462 timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0x749c42b1 pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x74a25fb3 usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x74af26e4 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74c08941 kvm_async_pf_task_wake +EXPORT_SYMBOL_GPL vmlinux 0x74c4a222 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x74cf3e5e tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x74deb10c used_vectors +EXPORT_SYMBOL_GPL vmlinux 0x74e5da17 pinctrl_dev_get_devname +EXPORT_SYMBOL_GPL vmlinux 0x74f07377 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x74f465f2 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x75026c41 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x750416f9 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x7517a929 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x7521afb6 leave_mm +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x755bd351 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x75600866 napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0x75825ab6 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x7597ac2d ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x759f913d xenbus_map_ring +EXPORT_SYMBOL_GPL vmlinux 0x75a7f3a1 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x75c2b9f1 memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x75c8a11c inet_twdr_twkill_work +EXPORT_SYMBOL_GPL vmlinux 0x75f94ba1 ata_sas_port_async_suspend +EXPORT_SYMBOL_GPL vmlinux 0x7608eb3c netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x76353426 xenbus_dev_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x763d5e54 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x76521c82 iommu_map +EXPORT_SYMBOL_GPL vmlinux 0x767226d6 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x769e2a53 regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x76af90fd devres_release +EXPORT_SYMBOL_GPL vmlinux 0x76d07d6e gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x76d9eae7 mmc_send_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x76da912c device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x770cf981 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x7710acd4 pinctrl_force_sleep +EXPORT_SYMBOL_GPL vmlinux 0x7712771a unbind_from_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x77214cea sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x775a6ef5 kvm_read_and_reset_pf_reason +EXPORT_SYMBOL_GPL vmlinux 0x776f034d crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x7790adc0 aout_dump_debugregs +EXPORT_SYMBOL_GPL vmlinux 0x77abe2d7 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0x77e2776c devm_acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x77f1f5f6 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x77ff86db gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x780ac440 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x781bd59b efivar_entry_set_get_size +EXPORT_SYMBOL_GPL vmlinux 0x781c6eca hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x782adb74 hpet_rtc_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x784beae8 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x784f3b3b debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x788f4529 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x789f4379 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x78b62a80 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x78d76a51 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x78ea227b acpi_bus_no_hotplug +EXPORT_SYMBOL_GPL vmlinux 0x78ef178c ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x79265b6e dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x793a9062 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x7941390a sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x7958f9e8 regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x79763252 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x7991fd8d crash_vmclear_loaded_vmcss +EXPORT_SYMBOL_GPL vmlinux 0x7992e77e inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x799c4837 wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x79a71c48 kernel_stack_pointer +EXPORT_SYMBOL_GPL vmlinux 0x79d5dbcd m2p_add_override +EXPORT_SYMBOL_GPL vmlinux 0x79e69460 intel_iommu_gfx_mapped +EXPORT_SYMBOL_GPL vmlinux 0x7a0559fc register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x7a2f052f __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x7a319404 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x7a47f5e1 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x7a4c1438 pv_info +EXPORT_SYMBOL_GPL vmlinux 0x7a552182 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x7a61c55d ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x7a6df21b blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x7a7f7891 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x7a7f7f06 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x7a900900 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 0x7ad88027 xenbus_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x7ae1ae8e cpufreq_frequency_table_put_attr +EXPORT_SYMBOL_GPL vmlinux 0x7af87147 da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b304cd4 usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x7b90d1a9 bind_virq_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x7b963f6b __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x7ba12ea1 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x7bec81f4 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x7bff4171 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x7c0103b9 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x7c15b471 ping_close +EXPORT_SYMBOL_GPL vmlinux 0x7c1745b1 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x7c227088 clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0x7c282f8a ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x7c32a4e5 pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x7c346357 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x7c488d38 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x7c66c630 regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0x7c6cba0f ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x7cbbdfd1 tpm_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x7cc1b7fd max77693_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x7cc7de1c x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7ce5b92a gpiod_sysfs_set_active_low +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7cec151c ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x7cef22fe wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x7d24e1c9 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x7d2fe936 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x7d311b4f pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0x7d36e534 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x7d397cc7 gpiod_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d53858a pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d730042 print_context_stack_bp +EXPORT_SYMBOL_GPL vmlinux 0x7d93528e sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7db4b533 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x7dc3c28d dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x7dcb2958 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x7dfc2552 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x7e321edc inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x7e3f154d extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x7e52df0f thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e8253ee init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x7eb0e62c unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x7efb35b2 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x7f59e8f6 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x7f86d4b1 fpu_finit +EXPORT_SYMBOL_GPL vmlinux 0x7f91612a nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x7f9ed9bb pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x7fa56a99 od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x7ffe64d1 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x8009db20 regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x800a3cb0 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x80150314 device_attach +EXPORT_SYMBOL_GPL vmlinux 0x8022b88b usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x80292a49 da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0x8050c590 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x8067a6ea rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80a91800 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80edda49 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x8126eabe simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x8140842a gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x8145fd23 blkio_subsys +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x8186561a dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x818a868f max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x81e4d30c hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x8237aa42 stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0x823a9c00 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x825438e1 pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x82939ebd rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x829fcbe9 class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82dbec19 erst_write +EXPORT_SYMBOL_GPL vmlinux 0x82e1766f __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x82e8ee84 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x82ec9536 tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0x82f89884 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0x82f8d007 uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x83072cbc cgroup_unload_subsys +EXPORT_SYMBOL_GPL vmlinux 0x8318eb66 clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x831c1ec4 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x833ccbae hypervisor_kobj +EXPORT_SYMBOL_GPL vmlinux 0x834616bb sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x83557151 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x836930b9 xenbus_dev_error +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x83a424b6 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x83a5ae2e __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x83b6b3ca of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x83cc5e67 pskb_put +EXPORT_SYMBOL_GPL vmlinux 0x83f48719 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x8405ba6b bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x84131591 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x8420bccd cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0x84264cba exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x842d40d2 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x843d70ef acpi_is_root_bridge +EXPORT_SYMBOL_GPL vmlinux 0x8455d808 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x846164a6 tpm_remove_hardware +EXPORT_SYMBOL_GPL vmlinux 0x84739397 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x8492be5a device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x84f7a641 cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x85137fd7 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x8528b38d ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x85526eef usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0x856629e7 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x857331cd acpi_subsys_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x8574ca6c gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x85765674 powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x8576dfda hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x858af395 acpi_match_device +EXPORT_SYMBOL_GPL vmlinux 0x858de17f dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x85a5ef02 tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x85b14d33 clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x85c10896 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0x85c2a045 rtc_irq_unregister +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 0x85d877e9 pinctrl_force_default +EXPORT_SYMBOL_GPL vmlinux 0x86087428 swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x861993b4 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x861ae0aa dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0x865d5c96 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x86623fd7 notify_remote_via_irq +EXPORT_SYMBOL_GPL vmlinux 0x866b9687 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x869c326d tpm_read +EXPORT_SYMBOL_GPL vmlinux 0x86a09b70 cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0x86a51007 gnttab_end_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x86aa16e6 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x86aca0a2 iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0x86bf9baf tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x86d2c15b sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x870cf952 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x870e16b7 xen_test_irq_shared +EXPORT_SYMBOL_GPL vmlinux 0x87196313 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x87263b25 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x8772c91a aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x87984b16 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x87d1204a input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x87fc0e91 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x87fdb240 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x8801bc93 pci_sriov_migration +EXPORT_SYMBOL_GPL vmlinux 0x880f2866 xen_swiotlb_sync_single_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x8831f8b1 kmap_atomic_pfn +EXPORT_SYMBOL_GPL vmlinux 0x883a8aee devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x883c2740 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x888503f1 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x888a3335 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x88a30065 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b0844e btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88bbb515 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x891a5a7f gnttab_max_grant_frames +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x89502f0c gnttab_subpage_grants_available +EXPORT_SYMBOL_GPL vmlinux 0x8956aeae apei_exec_ctx_init +EXPORT_SYMBOL_GPL vmlinux 0x899620ec crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x899d2b4a pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x89a23022 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89ce0eb2 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x89dbdcc1 __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0x89e79e09 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x89e8c3be xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x8a04b9fe tracepoint_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0x8a0b108e regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8a133153 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x8a17b2ed ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x8a29c31c xenbus_probe_node +EXPORT_SYMBOL_GPL vmlinux 0x8a2b14ba wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0x8a5463f4 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x8a75c225 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8a78989f irq_from_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x8a7cb9c4 platform_thermal_package_rate_control +EXPORT_SYMBOL_GPL vmlinux 0x8a885e08 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x8a99a8d2 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8aef589e usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x8b04668e bind_interdomain_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x8b50c8da rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0x8b5ca6a1 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x8b66f9e0 xen_platform_pci_unplug +EXPORT_SYMBOL_GPL vmlinux 0x8b8670f5 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x8b978794 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x8ba7ad24 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x8bb4c07d regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x8be6b94d acpi_dev_pm_detach +EXPORT_SYMBOL_GPL vmlinux 0x8be91021 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x8befcff5 xen_xenbus_fops +EXPORT_SYMBOL_GPL vmlinux 0x8bfbc0f0 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c05b4af dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x8c0627f3 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x8c06a108 xenbus_transaction_start +EXPORT_SYMBOL_GPL vmlinux 0x8c1e1a81 usb_acpi_set_power_state +EXPORT_SYMBOL_GPL vmlinux 0x8c3a6f6f crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x8c510b3b usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x8c723fab fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x8cb04ebb tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x8cbf4d14 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x8cd71fd8 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x8cd9f935 setup_APIC_eilvt +EXPORT_SYMBOL_GPL vmlinux 0x8ce68666 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x8cf244b5 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d3d2fac devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0x8d4d4036 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x8d4f8d12 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x8d6bf11d gpiochip_add_pingroup_range +EXPORT_SYMBOL_GPL vmlinux 0x8d6c1e74 rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0x8dca1e49 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0x8df33f03 netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x8e050d6b wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0x8e09a195 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8e223dbf clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0x8e22c674 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x8e3de9d2 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x8e3f4106 xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x8e4ccb64 xen_swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x8e5bdd32 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x8e631da1 hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x8e6722ad ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x8e6fe831 cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x8e9187f3 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x8e93c702 rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x8e93d886 tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x8e9c7933 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x8ea960cb blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8eb66baf da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x8eb77847 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x8edf0355 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x8edfb574 injectm +EXPORT_SYMBOL_GPL vmlinux 0x8effebd3 pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x8f17da1e virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0x8f2b0b71 css_next_descendant_pre +EXPORT_SYMBOL_GPL vmlinux 0x8f37ea60 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x8f3cd551 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f7bd0d2 rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x8f825793 tcp_reno_min_cwnd +EXPORT_SYMBOL_GPL vmlinux 0x8f902a2c gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0x8f9ed508 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x8fdd1fc5 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9009602a acpi_bus_get_ejd +EXPORT_SYMBOL_GPL vmlinux 0x900feb56 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x90228869 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x90257106 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x9028d367 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x902cc99b tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x9047b217 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x905bd618 acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x90705b7f syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x907fb4b1 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x9083694c sysfs_notify_dirent +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90a8aede usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0x90de0452 platform_thermal_package_notify +EXPORT_SYMBOL_GPL vmlinux 0x90ed3243 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x9111b361 vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x91286982 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x916ec48c sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x9184da09 regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0x918a00ec pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x918ca013 acpi_bind_one +EXPORT_SYMBOL_GPL vmlinux 0x91d9b654 acpi_get_gpiod_by_index +EXPORT_SYMBOL_GPL vmlinux 0x91db642c public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0x91e5e10d regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x91f0bfaa __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x920baaf9 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x922837a7 rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0x922a99c5 md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x92727e01 efivars_unregister +EXPORT_SYMBOL_GPL vmlinux 0x928c7c32 sis_info133_for_sata +EXPORT_SYMBOL_GPL vmlinux 0x928cc741 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x929c467f btree_get_prev +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 0x92def416 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x92e00a23 sdhci_pci_o2_probe +EXPORT_SYMBOL_GPL vmlinux 0x92e6ec67 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x92f153b2 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x92f4296a sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x9312d80e evtchn_put +EXPORT_SYMBOL_GPL vmlinux 0x9324e78e acpi_dev_resource_memory +EXPORT_SYMBOL_GPL vmlinux 0x933c524b efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x93577bee srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x9373865c rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x9398076d scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x93a193d0 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x93a58aed fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x93bc33a1 mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x93df00be regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0x93e513a5 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x93fd8261 devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x94012c7d fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x94300a5b crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x94321c26 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x943fc708 xen_setup_shutdown_event +EXPORT_SYMBOL_GPL vmlinux 0x944a6f2b ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x94527ad7 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x945a2138 cgroup_is_descendant +EXPORT_SYMBOL_GPL vmlinux 0x946ca9dc list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x94846083 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x94a68723 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x94abb745 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0x94af2d40 tcp_init_congestion_ops +EXPORT_SYMBOL_GPL vmlinux 0x94c318be apei_exec_collect_resources +EXPORT_SYMBOL_GPL vmlinux 0x94ca8109 sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x954cf48f virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x957eec09 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x95aae0fd scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x95abf3fd arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x95b6f4a9 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95e77f7c perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x95e9777f sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x9610592a rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x961a062f devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x961dd227 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x962130f3 iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x964add15 xenbus_scanf +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x965f5b39 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x96643372 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x966a0b28 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x967b11fc cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x967f2ae8 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x969216a6 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x96982c64 dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x96a22790 vmcore_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x96b0e17d pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x96bf98f9 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x96c46063 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x96c4db77 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x96d03264 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0x96edeb93 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x970ed5a4 devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9730c462 gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x9733cb77 ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0x97394d61 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x9764c842 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x976bc049 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x97916a26 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x97a3ec56 ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x97b093dd btree_update +EXPORT_SYMBOL_GPL vmlinux 0x97dba9eb pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97f836e2 xen_swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0x9815cb63 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x985b96f3 reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x986a087b i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x98a3cf6f dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x99188fb7 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x991e3543 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x99277fb2 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x9957749a m2p_remove_override +EXPORT_SYMBOL_GPL vmlinux 0x99596ede tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x9973add9 __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x998857e2 irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0x9992a522 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x99c87be9 pinctrl_utils_add_map_mux +EXPORT_SYMBOL_GPL vmlinux 0x99dd0967 regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a209299 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9a4eba81 ref_module +EXPORT_SYMBOL_GPL vmlinux 0x9a7f66e0 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a9824ef btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9aaa1208 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0x9ab63b16 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x9abd4197 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9ac334e2 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x9ac7ea07 devres_find +EXPORT_SYMBOL_GPL vmlinux 0x9aca444b get_monotonic_boottime +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9b5c2385 percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0x9b6fc858 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x9b80143d dm_requeue_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0x9b80e64d attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9b8d9503 hv_register_vmbus_handler +EXPORT_SYMBOL_GPL vmlinux 0x9b9f3648 pcibios_scan_specific_bus +EXPORT_SYMBOL_GPL vmlinux 0x9ba0dccf platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x9babf390 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x9bd72b78 apei_write +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9bf27863 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x9c2b0943 devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x9c2e4b66 acpi_unregister_gsi +EXPORT_SYMBOL_GPL vmlinux 0x9c702327 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x9c8838a1 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0x9cbc373d sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9cd0184d init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x9cf5eea7 serial8250_tx_dma +EXPORT_SYMBOL_GPL vmlinux 0x9d030b99 stop_machine +EXPORT_SYMBOL_GPL vmlinux 0x9d06688b register_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x9d0c2d32 irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x9d0ca2a4 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0x9d108dd3 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x9d138533 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x9d2676d2 regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x9d3850e1 gnttab_alloc_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x9d62c898 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x9d6edff0 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x9d7fd1cb blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x9d8331c0 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9dac3350 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x9dcfaf53 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9dff30ec sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x9e0014c1 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x9e4a3d22 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0x9e6e137a crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0x9e91ac23 crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0x9ebc59db ping_err +EXPORT_SYMBOL_GPL vmlinux 0x9ebfe676 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x9ebff902 start_thread +EXPORT_SYMBOL_GPL vmlinux 0x9ec26efb led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9eed1494 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x9f0664bf dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0x9f13c6e8 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0x9f212dc4 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0x9f2d5802 ata_acpi_gtm_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x9f92588e driver_register +EXPORT_SYMBOL_GPL vmlinux 0x9faf3fe0 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9fb00c08 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x9fb189b1 thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fd1cba5 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x9fe69652 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9fea5fb4 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0xa006d1b3 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xa0092b15 max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xa015c7a6 balloon_mapping_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa0208e02 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xa0699624 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0xa06c6487 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0xa090e52b find_vpid +EXPORT_SYMBOL_GPL vmlinux 0xa09f0f1a __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0xa0c71dac spi_populate_sync_msg +EXPORT_SYMBOL_GPL vmlinux 0xa0cb132e regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0xa0ceee33 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0xa0d2411f posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0xa0d2ff84 gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0xa0dee1b6 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0xa103ff00 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0xa11216be xen_store_domain_type +EXPORT_SYMBOL_GPL vmlinux 0xa117ef42 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xa126b415 device_schedule_callback_owner +EXPORT_SYMBOL_GPL vmlinux 0xa12d929d desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0xa156a1f2 erst_get_record_id_end +EXPORT_SYMBOL_GPL vmlinux 0xa15d3c0b clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0xa166dee0 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0xa16e0eb5 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xa17d85d8 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0xa1a7bcee relay_flush +EXPORT_SYMBOL_GPL vmlinux 0xa1bd7822 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xa1e203c5 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0xa1e970a5 devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0xa1f79553 xen_create_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0xa1f92938 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa27aca1f usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0xa27cb33b kobj_completion_init +EXPORT_SYMBOL_GPL vmlinux 0xa290cdb5 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xa29ab8c4 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0xa29e8ed9 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0xa2b2817b devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xa2b9c993 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xa3057e70 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0xa311d17f pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xa34fd67a ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0xa353fffc xenbus_rm +EXPORT_SYMBOL_GPL vmlinux 0xa36cc444 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa3814158 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa3866af4 __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3bc524b irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0xa3c8a9c9 xen_swiotlb_map_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa3ec9850 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0xa3ee7d9f acpi_ec_add_query_handler +EXPORT_SYMBOL_GPL vmlinux 0xa422c011 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0xa423eea8 devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xa452c297 hpet_mask_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa452f2a4 xen_pirq_from_irq +EXPORT_SYMBOL_GPL vmlinux 0xa4606a29 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xa466de38 acpi_processor_ffh_cstate_enter +EXPORT_SYMBOL_GPL vmlinux 0xa46e7e95 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa48c2510 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0xa4a47275 sdhci_pci_o2_fujin2_pci_init +EXPORT_SYMBOL_GPL vmlinux 0xa4b5e286 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xa4c0f5f9 dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xa4d4959b xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0xa4d58669 math_state_restore +EXPORT_SYMBOL_GPL vmlinux 0xa5390492 rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0xa53b9ae2 __class_register +EXPORT_SYMBOL_GPL vmlinux 0xa53d6672 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0xa5a4d4e3 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0xa5bceb0a devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xa5c6ecb5 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa61b1477 tracepoint_iter_start +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa6263925 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0xa62892c6 efivar_sysfs_list +EXPORT_SYMBOL_GPL vmlinux 0xa62f063c gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0xa6310d22 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0xa65a67cc pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0xa682d0ec bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0xa6a0a273 max77693_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6b2ee7e raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xa6cf3d3f efivar_entry_remove +EXPORT_SYMBOL_GPL vmlinux 0xa6df863c relay_reset +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6e312d2 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xa7053cb1 regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa724257f init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0xa738a9c3 skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xa7510d89 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa75811d0 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0xa785d8f6 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0xa7a6e02e shake_page +EXPORT_SYMBOL_GPL vmlinux 0xa7d0b0d5 rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0xa7d153ca sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xa7f92105 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0xa801b359 efivar_entry_iter_begin +EXPORT_SYMBOL_GPL vmlinux 0xa80fd8f5 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0xa82f4aa4 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0xa840393a ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0xa847e321 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa897fd11 acpiphp_unregister_attention +EXPORT_SYMBOL_GPL vmlinux 0xa8a48f99 acpi_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xa8ad7d7a pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0xa8c3b6a3 subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0xa8ed179a pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0xa8ff95a1 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0xa9126bff hpet_set_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa919382d netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0xa929c082 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xa95226e4 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0xa952528f rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0xa957ca00 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0xa97d48a0 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0xa980af16 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xa9a6521f thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0xa9a82042 gnttab_trans_grants_available +EXPORT_SYMBOL_GPL vmlinux 0xa9bab0c4 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0xa9bc690c virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0xa9c85e61 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0xa9d7af74 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0xa9d99c84 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xa9df2b30 xenbus_match +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9fc3f54 gnttab_grant_foreign_access_trans +EXPORT_SYMBOL_GPL vmlinux 0xaa2a47c6 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0xaa2a72bf __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0xaa44dff0 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xaa7dee82 pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0xaa8a2dd2 ata_acpi_stm +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xab01acbe gnttab_request_free_callback +EXPORT_SYMBOL_GPL vmlinux 0xab3def81 xenbus_free_evtchn +EXPORT_SYMBOL_GPL vmlinux 0xab4e0d1a crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xab57e07b dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab6e5c4f regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0xabac190f blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0xabaeea71 register_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xabc78e79 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0xabc8aabb ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0xabf918c6 dm_set_device_limits +EXPORT_SYMBOL_GPL vmlinux 0xac18ac2d blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0xac3bac46 relay_close +EXPORT_SYMBOL_GPL vmlinux 0xac9ce195 kvm_async_pf_task_wait +EXPORT_SYMBOL_GPL vmlinux 0xacafa8e7 vector_used_by_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xacb3e124 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xacc0bd68 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xad1c1ac1 dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0xad1f63da sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0xad25b646 spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xad2c87ba irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0xad376749 clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0xad602d2f pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0xad70e75f device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xad7f3078 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xad8d8ab0 xen_physdev_op_compat +EXPORT_SYMBOL_GPL vmlinux 0xada02918 pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xada8247a pwm_free +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xadfd6e1c dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0xae0a0c7d remove_irq +EXPORT_SYMBOL_GPL vmlinux 0xae47c47f tpm_show_active +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae6a2dcf serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0xae6eaf93 hwpoison_filter_dev_minor +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae7c5411 ms_hyperv +EXPORT_SYMBOL_GPL vmlinux 0xaea68a11 usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xaec306b2 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0xaed96bb5 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0xaeeee259 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xaef1b1a9 pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0xaef528c9 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0xaf4cd6d3 acpi_os_map_memory +EXPORT_SYMBOL_GPL vmlinux 0xaf635e3d arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0xaf7c763a firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0xafa2b7b9 leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xafbc98d5 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0xafd9cc8e __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xafe3bb27 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xb0280a89 usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xb02ac411 register_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb02b3a42 usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xb05c57c2 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0xb07785c3 iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0xb080e4d6 pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xb08d1aa9 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xb090b42b uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xb0a3ed95 pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb10d55bc cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xb11cc493 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0xb11ea4b8 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0xb13f0486 verify_signature +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb172ffac efivars_sysfs_init +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb18d8ac3 rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xb1a7e3f6 clk_round_rate +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 0xb1c0d556 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb20391d3 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xb20bd21e dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb22c1832 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0xb23edbc6 pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0xb2447e88 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0xb266e318 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0xb26d69bf ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0xb270f3c6 __put_net +EXPORT_SYMBOL_GPL vmlinux 0xb27d4b97 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0xb28a92e9 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0xb2943a9e sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0xb2a09a5d swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xb2c15baf debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0xb2d49fb0 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb302b8f5 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xb31338e4 adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xb3253ed9 hpet_rtc_timer_init +EXPORT_SYMBOL_GPL vmlinux 0xb3461643 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0xb360e67c dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0xb371fc01 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0xb382cb29 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0xb383c4e3 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xb38fc486 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb3969cbd rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xb3e6db78 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0xb3f40879 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xb4343a92 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0xb458a89d debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xb4701ef7 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0xb486b46d crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0xb487a4f2 tcp_is_cwnd_limited +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4bf73ca dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0xb4de3cb4 __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0xb4e14553 gnttab_query_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4f16db7 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0xb4fba061 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb539b415 inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5c50546 rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0xb5cb8145 hrtimer_get_res +EXPORT_SYMBOL_GPL vmlinux 0xb5cd31d8 iommu_present +EXPORT_SYMBOL_GPL vmlinux 0xb5d6d43e perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0xb5e896fb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb5fb2571 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0xb60361d5 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0xb6212caa alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0xb6230f1f gnttab_grant_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb6484373 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0xb66421b2 acpi_str_to_uuid +EXPORT_SYMBOL_GPL vmlinux 0xb67b2219 cm_suspend_again +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 0xb6bfa704 rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0xb6c266ec thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb6c635af wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xb6c9fe29 tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xb6d29c55 inet_csk_reqsk_queue_prune +EXPORT_SYMBOL_GPL vmlinux 0xb6e3cdd3 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xb6f2c578 __tracepoint_unmap +EXPORT_SYMBOL_GPL vmlinux 0xb6fedf19 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0xb709e339 efivar_validate +EXPORT_SYMBOL_GPL vmlinux 0xb718f2f9 sfi_table_parse +EXPORT_SYMBOL_GPL vmlinux 0xb73c6426 __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0xb75d3976 sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xb7779e73 idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb79306d5 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xb79c1c1e debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0xb7a881ef fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0xb7d7c12e hpet_set_alarm_time +EXPORT_SYMBOL_GPL vmlinux 0xb7d8f47d usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xb7e41d7f tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0xb7f6711d __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb8024240 tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0xb8083ba5 ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0xb84e3fad get_device +EXPORT_SYMBOL_GPL vmlinux 0xb86bcceb klist_next +EXPORT_SYMBOL_GPL vmlinux 0xb8716d5f ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0xb8ab53b2 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xb8b2b1f7 mce_register_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0xb8b45c9e ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb8e62b4f sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb909d928 kick_process +EXPORT_SYMBOL_GPL vmlinux 0xb9176155 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0xb924aa80 sysfs_schedule_callback +EXPORT_SYMBOL_GPL vmlinux 0xb9288e05 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0xb92d6b13 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xb93c77fc __class_create +EXPORT_SYMBOL_GPL vmlinux 0xb93f84f7 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0xb9456eda module_mutex +EXPORT_SYMBOL_GPL vmlinux 0xb999f00c alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0xb99d5837 xenbus_read +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9bc4ec3 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xb9c11d11 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9da2997 snmp_fold_field64 +EXPORT_SYMBOL_GPL vmlinux 0xb9fa4763 __efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0xba02119a fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0xba0ce89f crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0xba2a9682 sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0xba347261 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xba365983 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0xba3b58d2 tpm_show_enabled +EXPORT_SYMBOL_GPL vmlinux 0xba45e7ad device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xba669fa1 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xbab32ef1 tpm_show_caps +EXPORT_SYMBOL_GPL vmlinux 0xbab82db7 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0xbaf81c6c n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb2aa1bd __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0xbb33ec97 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0xbb49f825 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xbb4c82fd gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xbb57c94b scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xbb58b814 iomap_free +EXPORT_SYMBOL_GPL vmlinux 0xbb7362b0 clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0xbb82a440 extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xbb87c080 rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xbb88fba2 i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0xbba00526 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xbbac4572 irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0xbbb75a47 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0xbbb98859 edid_info +EXPORT_SYMBOL_GPL vmlinux 0xbbd0c416 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xbbd4f657 xen_pcpu_id +EXPORT_SYMBOL_GPL vmlinux 0xbbd86303 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0xbc0ad340 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0xbc33c7c6 bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0xbc3a161b usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0xbc64d555 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0xbc64f8dd sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xbc6cb7df sec_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xbc72aa45 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0xbc72c43e crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0xbc75f729 pci_renumber_slot +EXPORT_SYMBOL_GPL vmlinux 0xbc8dc799 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xbca0201a sfi_mrtc_array +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcb838a1 amd_flush_garts +EXPORT_SYMBOL_GPL vmlinux 0xbcb9f86b xenbus_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0xbcce529b crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbd172806 regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0xbd234c65 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xbd506a46 unregister_hotplug_dock_device +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd652546 iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0xbd6c077b usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xbdb257ba hrtimer_start +EXPORT_SYMBOL_GPL vmlinux 0xbdb8d509 ata_link_next +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 0xbdef08e9 rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0xbe10e16b apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe2fb8a3 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xbe3796f6 tpm_show_owned +EXPORT_SYMBOL_GPL vmlinux 0xbe439d66 sec_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xbe43a163 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xbe5338fb rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0xbe5fba23 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xbea51603 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbed3e235 user_match +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf1abe2f fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0xbf2750fa unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xbf5b47a5 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfbf7077 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0xbfc25aed usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0xbfe59b8d inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xbfe7e7f2 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0xc00131cf visitor64 +EXPORT_SYMBOL_GPL vmlinux 0xc0141e14 blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0xc01d7112 regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0xc08624e8 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0900fcf acpi_os_get_iomem +EXPORT_SYMBOL_GPL vmlinux 0xc09b3599 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0xc0b87d5f crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0xc0bf6ead timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xc0ce1f2d ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0xc0d01bc0 percpu_ref_cancel_init +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0dce9b1 tty_prepare_flip_string_flags +EXPORT_SYMBOL_GPL vmlinux 0xc0e75cec visitor128 +EXPORT_SYMBOL_GPL vmlinux 0xc10f9cc6 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0xc1123d0a alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0xc11b4470 balloon_stats +EXPORT_SYMBOL_GPL vmlinux 0xc11b45c6 gpiod_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xc11bd00f tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc11ee86b ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0xc12d4a08 need_load_eval +EXPORT_SYMBOL_GPL vmlinux 0xc1332dfa platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0xc136c47e rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0xc164642e xenbus_otherend_changed +EXPORT_SYMBOL_GPL vmlinux 0xc164ddfb pinctrl_remove_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc18578ed process_srcu +EXPORT_SYMBOL_GPL vmlinux 0xc1876287 pci_pri_stopped +EXPORT_SYMBOL_GPL vmlinux 0xc1bb61b8 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xc1bbe613 devm_pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0xc1c2828c scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0xc1dc0d5d acpi_find_child +EXPORT_SYMBOL_GPL vmlinux 0xc1e06ad1 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0xc1e74095 PageHuge +EXPORT_SYMBOL_GPL vmlinux 0xc1f3ee20 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0xc1fa5615 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc1fd18ea usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xc205fa4e synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc22e299e pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0xc237644e vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0xc24c5214 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0xc26351f8 bind_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xc271da89 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xc278a8a5 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc29d9c04 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0xc2baf303 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xc2de02ae ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xc2de6422 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xc2e03c9c pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0xc2ea4559 xen_swiotlb_unmap_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0xc2fa376f devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xc31b617f crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xc339a895 extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc3467651 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0xc34efe27 snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0xc36fce39 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc391dcb7 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0xc3aeee96 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc3b66a2e wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0xc3bc625e xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0xc3bce41a fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0xc3bef09f watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xc3fb4bc9 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xc403c529 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0xc405fefa input_class +EXPORT_SYMBOL_GPL vmlinux 0xc407a1d4 gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0xc413f526 tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0xc423c431 gnttab_unmap_refs +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc4595cc5 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xc4641afe powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0xc46ac4b9 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0xc474676b usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc49cf170 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0xc4cb15d4 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xc4d17116 pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0xc4e1feaa preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc5397da6 xenbus_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xc554c399 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0xc570ef00 isa_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc5a581da cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0xc5b21eb7 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0xc5bab3fe btree_init +EXPORT_SYMBOL_GPL vmlinux 0xc5d37180 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0xc5df9d82 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xc60f75ec __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc61f24d8 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0xc629231c pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xc63a1109 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xc651eb89 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc6711f44 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xc677ccb3 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0xc68aa090 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0xc690866c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6a2a3ec scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0xc6b0a4da i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xc6b68d9d ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xc6bdf7f2 rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xc6c107ff iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xc6cd2e4c stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0xc6d13e91 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0xc6d3bdd7 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0xc7002ac4 evtchn_make_refcounted +EXPORT_SYMBOL_GPL vmlinux 0xc723c710 devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc732767e list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0xc7342bd5 xenbus_dev_cancel +EXPORT_SYMBOL_GPL vmlinux 0xc745f3e6 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0xc75e620a sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0xc787d152 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7b3df5b tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xc7c06879 rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7df829e disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc86bf16f blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc87e487a sched_clock_idle_sleep_event +EXPORT_SYMBOL_GPL vmlinux 0xc888df7d devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8bb19e4 pinctrl_find_and_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc97d1140 cpufreq_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0xc97f2094 __netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0xc9877b39 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0xc9991b31 pinctrl_pm_select_sleep_state +EXPORT_SYMBOL_GPL vmlinux 0xc99b690b da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc99e32d0 xenbus_register_backend +EXPORT_SYMBOL_GPL vmlinux 0xc9c3f176 hpet_register_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xc9f12078 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0xc9f1f656 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0xca1c94f0 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0xca23f68d __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xca28c49a __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0xca2c3973 irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xca322bb0 max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xca3f2a02 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0xca57eaeb tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0xca5939cb device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0xca75ba38 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca81ea9a xenbus_transaction_end +EXPORT_SYMBOL_GPL vmlinux 0xca85d8cf tracepoint_probe_update_all +EXPORT_SYMBOL_GPL vmlinux 0xca8d4d7e crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xca9a3b4b acpi_pci_check_ejectable +EXPORT_SYMBOL_GPL vmlinux 0xca9f055f spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0xcaa6540f balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0xcabc06ee devres_add +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcac72d90 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0xcb10214a blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb27d994 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb537501 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0xcb808fd0 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0xcb923126 relay_open +EXPORT_SYMBOL_GPL vmlinux 0xcb941e57 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0xcb9b162e clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0xcb9c74ca i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0xcbd78af5 regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xcbeca954 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcbf098af key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0xcbfbadf1 md_run +EXPORT_SYMBOL_GPL vmlinux 0xcc05573f ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0xcc14e968 extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcc158f5d pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0xcc1f1c3d inet_twdr_hangman +EXPORT_SYMBOL_GPL vmlinux 0xcc24f8ea scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0xcc33b861 thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xcc51bdba rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xcc6ab305 is_dock_device +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcca72bbf sec_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccea3a23 regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0xccea4e34 perf_get_x86_pmu_capability +EXPORT_SYMBOL_GPL vmlinux 0xcd1516df register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xcd178ce1 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xcd54f70b usb_acpi_power_manageable +EXPORT_SYMBOL_GPL vmlinux 0xcd5a0040 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd93199f vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcdd74d04 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xcdf80a53 use_mm +EXPORT_SYMBOL_GPL vmlinux 0xcdfdd485 gpio_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xce06c538 dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xce0b9b59 max77693_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xce2643f1 sk_unattached_filter_create +EXPORT_SYMBOL_GPL vmlinux 0xce37d313 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0xce46e140 ktime_get_ts +EXPORT_SYMBOL_GPL vmlinux 0xce51f476 acpi_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce9c922e rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0xceb13b60 efivars_register +EXPORT_SYMBOL_GPL vmlinux 0xceb4a460 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0xcebc82d4 user_describe +EXPORT_SYMBOL_GPL vmlinux 0xcece3aed blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xced06bfa ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0xced18604 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xceef1330 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xcef18a33 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0xcef1dd0e perf_check_microcode +EXPORT_SYMBOL_GPL vmlinux 0xcefc5de9 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcf291b1f sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0xcf30926e fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0xcf428da8 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf7e7f1b debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0xcfc62f27 xen_start_info +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfeb2f6b generic_access_phys +EXPORT_SYMBOL_GPL vmlinux 0xcffa2aff spi_populate_width_msg +EXPORT_SYMBOL_GPL vmlinux 0xd00ce6ee rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xd01e744a usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd044fae3 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xd0458ccb xenbus_strstate +EXPORT_SYMBOL_GPL vmlinux 0xd05284eb add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd07f5d7c __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0xd0a3d426 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0c58898 regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0xd0d72364 iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0xd0dd448a led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0xd0f7613d dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xd114f873 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd115ce7a fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0xd126f87c vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0xd1270bf2 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xd14bc4d9 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xd14f5bcf percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd1507e59 erst_clear +EXPORT_SYMBOL_GPL vmlinux 0xd1577bb6 pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd17fb779 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0xd1916490 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0xd1931636 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0xd19f34c9 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xd1a8a99b ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0xd1b2db37 tracepoint_probe_register_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xd1c41705 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xd1f9ba36 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd21161a3 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xd217ce9f wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd242f90e virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0xd258217d clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd27b70cb xen_register_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0xd2844ca5 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0xd2aaeb4e kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0xd2c58ab2 apei_exec_noop +EXPORT_SYMBOL_GPL vmlinux 0xd2d4dac8 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xd2e46d01 usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0xd32563a8 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xd32fe193 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xd384fd29 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xd3cc991f usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4038c54 regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd4774b79 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0xd48509be set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0xd496d8c8 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0xd4a350c7 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0xd4a365a0 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xd4ba25d9 rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4cad45e clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0xd4f6cf79 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0xd51f84c0 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xd53607a5 xenbus_register_frontend +EXPORT_SYMBOL_GPL vmlinux 0xd544e902 pgprot_writecombine +EXPORT_SYMBOL_GPL vmlinux 0xd550560f __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd56d6d88 task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0xd5840e07 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0xd5a1bb8c cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0xd5a8fc71 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5f6ed69 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0xd62ba0e9 pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0xd63a85ee iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0xd64a2da8 pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0xd65218c0 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd67f5217 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd6931743 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xd69df484 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xd6a07f73 xen_swiotlb_set_dma_mask +EXPORT_SYMBOL_GPL vmlinux 0xd6ba1076 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0xd6c2e04b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0xd6d0cf7d platform_get_irq +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 0xd7191c48 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0xd72feba2 xenbus_read_driver_state +EXPORT_SYMBOL_GPL vmlinux 0xd7399d2a efivar_entry_iter_end +EXPORT_SYMBOL_GPL vmlinux 0xd7432a9d pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xd74a6fbc raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0xd74e91b7 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0xd75eb7b9 register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd773e424 virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd7ab2c0c speedstep_detect_processor +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd81dbf1c bus_for_each_drv +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 0xd85ab9ae usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87f28d2 palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd89c0820 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0xd8a7138f irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0xd8c76e12 pci_pri_status +EXPORT_SYMBOL_GPL vmlinux 0xd8f335cb __scsi_get_command +EXPORT_SYMBOL_GPL vmlinux 0xd9006ca5 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xd919806a amd_cache_northbridges +EXPORT_SYMBOL_GPL vmlinux 0xd91dcec5 register_hotplug_dock_device +EXPORT_SYMBOL_GPL vmlinux 0xd91ff793 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xd9272ff0 iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0xd930715b fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0xd93f6fe9 tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd94b737e erst_read +EXPORT_SYMBOL_GPL vmlinux 0xd9546ca9 smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xd993e411 extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd9a34035 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0xd9c2640c task_current_syscall +EXPORT_SYMBOL_GPL vmlinux 0xd9e26529 rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xd9e2e56d __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda1cd035 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0xda23077c __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0xda44cb37 setup_charger_manager +EXPORT_SYMBOL_GPL vmlinux 0xdab03074 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0xdaf0632a dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb04cacc tracepoint_probe_unregister_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xdb2da2c8 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0xdb32bfe7 ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xdb42df0b key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0xdb51d17c ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0xdb580386 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0xdb79de07 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb9eec41 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0xdba4ad93 static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0xdbbaa460 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0xdbc69676 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0xdbd2be6b irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xdbefcd64 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc0faa0c tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xdc10652d arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xdc14a211 xen_hvm_evtchn_do_upcall +EXPORT_SYMBOL_GPL vmlinux 0xdc1e15f1 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0xdc457185 ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xdc4791a9 powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0xdc59a32f wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0xdc5df0ca usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0xdc621fba tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xdc6699cb acpi_dev_free_resource_list +EXPORT_SYMBOL_GPL vmlinux 0xdc67bb8a wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xdc70f20e pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc84666b srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc9dd8c3 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdcc055b2 alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0xdcc50aac __rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0xdcf246d4 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0xdcfc2a4e pinctrl_utils_dt_free_map +EXPORT_SYMBOL_GPL vmlinux 0xdd1a5349 css_next_descendant_post +EXPORT_SYMBOL_GPL vmlinux 0xdd1d9ad5 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd33d79a cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd660831 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0xdd794d33 phys_wc_to_mtrr_index +EXPORT_SYMBOL_GPL vmlinux 0xdd79b2bd regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0xdd7e91e0 pinctrl_find_gpio_range_from_pin +EXPORT_SYMBOL_GPL vmlinux 0xdd82c075 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xddb5de2b list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0xddbca96d rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xddbdb12f dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xddd6c2e5 da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xddf576c9 gpiochip_add_pin_range +EXPORT_SYMBOL_GPL vmlinux 0xddf5b959 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0xddfa53d6 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xde40dcc6 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0xde40e8b7 regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xde501e28 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xde51146e wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0xde747356 intel_msic_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xde8a6d69 sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xdea4c108 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xdeb00a25 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0xdeb8b14f subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xdedac2d6 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0xdee2aa02 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf17218f watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0xdf1882af dbgp_reset_prep +EXPORT_SYMBOL_GPL vmlinux 0xdf2a7ad9 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xdf2af64c alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0xdf2ce89e ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0xdf45db4c da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0xdf66ca81 ucode_cpu_info +EXPORT_SYMBOL_GPL vmlinux 0xdf8e67dc da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xdf9d128a iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0xdfa1fd06 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xdfb0dfac platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xdfc57cb2 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0xdfd1edb0 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0xe003e044 __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe01bac37 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xe01ee5f2 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0xe02addd7 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe083c7a2 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe09be257 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe0aecc5d cgroup_taskset_first +EXPORT_SYMBOL_GPL vmlinux 0xe0af0394 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0xe0bb6409 regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xe0bbb65c usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0xe0c4c876 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xe0c77bb5 mce_notify_irq +EXPORT_SYMBOL_GPL vmlinux 0xe0d6936d __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0xe0ef1b1b udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe0f42189 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xe10cd6ad erst_get_record_id_begin +EXPORT_SYMBOL_GPL vmlinux 0xe142daea arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0xe15b35d0 iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0xe165e5ff driver_find +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe18681cd virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0xe1923c28 efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0xe19fec0f power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe1b4f41b ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1c32794 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0xe1c5f049 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xe1dc0dec xen_swiotlb_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0xe2053f03 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0xe21c2d71 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xe22cc836 i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0xe26309a4 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xe26e46f0 acpi_dev_resource_ext_address_space +EXPORT_SYMBOL_GPL vmlinux 0xe281d574 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0xe2837ee5 usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0xe284c66f inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0xe295c0ff is_hpet_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe2c177c5 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xe2e7840d regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xe2e8b2c3 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0xe2ea0c60 regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0xe2f84739 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe3146e05 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0xe316ce59 pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0xe31a7c99 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xe33e20c9 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe398ffda tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0xe3a6421b dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe3bb6ba0 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xe3bc7fd4 hpet_unregister_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xe3cad4a7 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0xe3d4e7f1 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xe3dadc9b xenbus_watch_path +EXPORT_SYMBOL_GPL vmlinux 0xe402fe08 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0xe404ab35 pci_get_hp_params +EXPORT_SYMBOL_GPL vmlinux 0xe40ef98c pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0xe41534ce bind_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0xe41c7011 inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xe42db92f regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe439815c erst_get_record_count +EXPORT_SYMBOL_GPL vmlinux 0xe465b9d7 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0xe47114e0 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0xe4a08923 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0xe4aab70a uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe4b7b812 rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0xe4c331b6 acpi_os_unmap_memory +EXPORT_SYMBOL_GPL vmlinux 0xe4c4b28f gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xe4cc2690 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0xe4e68bc8 apei_map_generic_address +EXPORT_SYMBOL_GPL vmlinux 0xe5067032 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0xe5177ea9 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0xe523d899 regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0xe52ae762 __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0xe53ac38f alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0xe54207d7 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xe55b0358 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0xe566eb5a ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe598647a usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xe59ca065 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0xe5a76460 register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0xe5f28cc9 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0xe61d967a pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xe62ab4c5 rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xe6373c56 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xe64ad8ea unregister_nmi_handler +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe6536ab1 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0xe6587ba7 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xe65f3f06 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0xe669c38e scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xe68a9e12 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0xe6ba40b1 driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6dd7afc blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe71de6da ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0xe7232e0f user_return_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe748a6ca cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0xe74e6eda skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe7695a2e rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xe76a57fe ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe76b3ccf __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0xe775306c device_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe79fa053 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0xe7fd20c1 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe8290708 acpi_ec_remove_query_handler +EXPORT_SYMBOL_GPL vmlinux 0xe8348d1e ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xe846edc3 sync_filesystem +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe88cbfaf bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0xe8a6554e d_materialise_unique +EXPORT_SYMBOL_GPL vmlinux 0xe8e3f3f8 device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0xe8f0ad27 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0xe8fcf909 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0xe9277854 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0xe93b7d1d usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe953b1d7 __intel_mid_cpu_chip +EXPORT_SYMBOL_GPL vmlinux 0xe9579a46 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xe9613bf5 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0xe96f8023 nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0xe97a2d5e tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xe97dfd43 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xe9bd2cfc sk_unattached_filter_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe9c987c4 dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe9ce931a kvm_para_available +EXPORT_SYMBOL_GPL vmlinux 0xe9e770e1 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0xea03d087 blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea1f47d5 pinctrl_pm_select_idle_state +EXPORT_SYMBOL_GPL vmlinux 0xea276f24 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0xea379cc2 usb_string +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea4694dc usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0xea4f9b06 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0xea861b1a regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xeaa78cf7 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xeacdca7d smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xeada7497 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xeae749b1 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0xeae831c6 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0xeb01f6a0 ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xeb1c3628 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xeb2798f7 xen_destroy_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0xeb370805 __apei_exec_run +EXPORT_SYMBOL_GPL vmlinux 0xeb4e8cfc crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0xeb535558 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0xeb6e4f5c virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0xeb81e55a ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0xeb831887 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0xeb833c22 xen_has_pv_disk_devices +EXPORT_SYMBOL_GPL vmlinux 0xeb9abbee ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xeb9c40dd init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0xebaba5a3 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0xebb8d784 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xebf55d41 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec20ee54 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec35cf3b task_xstate_cachep +EXPORT_SYMBOL_GPL vmlinux 0xec52cd52 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0xec7c221e edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0xec9763ce stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0xecdd85b5 xen_swiotlb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0xecf0732a blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xecfb2711 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0xed094662 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0xed0ae140 ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xed1549cb xenbus_dev_changed +EXPORT_SYMBOL_GPL vmlinux 0xed1f313f cgroup_add_cftypes +EXPORT_SYMBOL_GPL vmlinux 0xed276b38 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0xed2866ac usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0xed30127e inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xed350687 rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0xed56659f xenbus_dev_probe +EXPORT_SYMBOL_GPL vmlinux 0xed57080a fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0xed63f275 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0xed6ae166 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0xed741cd4 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0xedb5d390 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0xedbc6f67 gnttab_end_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xedd49930 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0xeddb6f45 clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0xedf3f1f1 do_machine_check +EXPORT_SYMBOL_GPL vmlinux 0xedf4adf3 devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0xedfaa0d0 ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0xedfec8c2 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0xee0d75ef sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0xee18acaa setup_irq +EXPORT_SYMBOL_GPL vmlinux 0xee1cc1ab netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0xee280688 regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xee3027f4 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xee594a4a acpi_unbind_one +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee86859b usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xeec4e97c pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0xeed83c1c wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0xeedad153 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xeef35db0 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xef1f6e23 apei_resources_request +EXPORT_SYMBOL_GPL vmlinux 0xef23d470 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0xef2b26c6 yield_to +EXPORT_SYMBOL_GPL vmlinux 0xef2dbd61 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0xef409b74 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0xef433266 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef782b88 gnttab_grant_foreign_access_subpage +EXPORT_SYMBOL_GPL vmlinux 0xef84abbe unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xef97af26 usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xef9ae766 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0xefb44f46 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0xefd5ad6b regulator_set_optimum_mode +EXPORT_SYMBOL_GPL vmlinux 0xeff3732b ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0xeff4e0f5 acpi_bus_trim +EXPORT_SYMBOL_GPL vmlinux 0xf03bbed8 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf042d5d3 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0xf054ac97 intel_msic_irq_read +EXPORT_SYMBOL_GPL vmlinux 0xf0696401 acpi_pci_detect_ejectable +EXPORT_SYMBOL_GPL vmlinux 0xf0bc0c85 cgroup_taskset_cur_css +EXPORT_SYMBOL_GPL vmlinux 0xf0c7fbf5 da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf0f779ae proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0xf10050e3 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0xf119ea4a ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0xf13572bd attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0xf144a2ae dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0xf163a70f crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf186c82f nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xf194a16a __module_address +EXPORT_SYMBOL_GPL vmlinux 0xf197ab0a pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0xf1aa5773 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1b551d9 ibft_addr +EXPORT_SYMBOL_GPL vmlinux 0xf1cf8a99 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0xf1def73e disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xf1f966c8 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xf1fda13e device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0xf217e512 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf22853a4 nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0xf23148a4 cper_estatus_check +EXPORT_SYMBOL_GPL vmlinux 0xf2696d97 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf26cf7c3 rtc_set_mmss +EXPORT_SYMBOL_GPL vmlinux 0xf26db523 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf2ade1bb zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0xf2b8d4da unregister_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xf2c85436 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0xf2d11fd4 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xf2d8b231 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0xf2daa1de pinctrl_select_state +EXPORT_SYMBOL_GPL vmlinux 0xf2f077cc pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0xf2f2b182 pstore_register +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf30fda27 lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0xf319f8c9 lp8788_update_bits +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 0xf346d423 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0xf36510ed pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xf36e81bc wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xf3807986 sysfs_get +EXPORT_SYMBOL_GPL vmlinux 0xf380ef1f rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0xf3846d05 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3b743f4 dev_hard_start_xmit +EXPORT_SYMBOL_GPL vmlinux 0xf3c46ec1 acpi_processor_get_performance_info +EXPORT_SYMBOL_GPL vmlinux 0xf3c7521c class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xf3d9dc2f usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0xf3e1c863 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0xf417f1d1 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xf44cec00 fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0xf46c391d x86_hyper_kvm +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4e10b8f power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0xf4e88ed6 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf51d412b pci_enable_ats +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 0xf5907283 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0xf5945bac gnttab_free_grant_references +EXPORT_SYMBOL_GPL vmlinux 0xf59472af iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5bebe67 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0xf5c6397f user_instantiate +EXPORT_SYMBOL_GPL vmlinux 0xf5ec088e ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0xf5fb8d52 pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xf5fef4e3 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf62dc8de __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf65b5b80 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0xf6894d86 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xf6955bfa usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0xf69f966b shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xf6b4ecca pci_pri_enabled +EXPORT_SYMBOL_GPL vmlinux 0xf6b924c2 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xf6d58f88 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6f16f66 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0xf7016530 xenbus_gather +EXPORT_SYMBOL_GPL vmlinux 0xf7291794 pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0xf7322bc8 pv_time_ops +EXPORT_SYMBOL_GPL vmlinux 0xf78b7b9d pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0xf79993b4 cgroup_taskset_next +EXPORT_SYMBOL_GPL vmlinux 0xf7daadc3 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xf7dd224d transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0xf7df38c0 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0xf7ee915a mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xf816c866 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0xf81db888 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0xf82f16b3 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf836cf48 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0xf841ff72 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xf846eec4 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf8640980 usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xf86d2c2f adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf8911f54 spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xf8a875fe modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xf8e6fee5 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf910f152 mmput +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf95618a2 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xf96ea2f8 rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0xf9765833 dmi_match +EXPORT_SYMBOL_GPL vmlinux 0xf97666a0 set_memory_rw +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9a30768 inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xf9abe6ea perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0xf9ac3d4b regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xf9bb7f2f blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9ca6f37 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xf9cd6d0c key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0xf9d9264e xen_have_vector_callback +EXPORT_SYMBOL_GPL vmlinux 0xf9edd907 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xfa012fe7 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0xfa01f426 crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa315899 put_device +EXPORT_SYMBOL_GPL vmlinux 0xfa4335e4 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0xfa5d3b6d regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0xfa5f0324 acpi_dev_get_resources +EXPORT_SYMBOL_GPL vmlinux 0xfa66a844 acpi_subsys_prepare +EXPORT_SYMBOL_GPL vmlinux 0xfaac59f2 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0xfaae1df9 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xfac54663 tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb3432ee pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xfb35a347 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0xfb37b315 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0xfb402b3a pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0xfb41f604 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0xfb5741b0 clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0xfb64b230 acpi_processor_ffh_cstate_probe +EXPORT_SYMBOL_GPL vmlinux 0xfb69732f tpm_write +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb83db03 cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xfba21b22 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xfbba81f4 da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0xfbd6b5d0 blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc3b4246 acpi_bus_update_power +EXPORT_SYMBOL_GPL vmlinux 0xfc4f4953 alarm_init +EXPORT_SYMBOL_GPL vmlinux 0xfc63eb4c iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0xfc894788 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0xfc903735 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xfc968c8b apei_exec_write_register_value +EXPORT_SYMBOL_GPL vmlinux 0xfcd0e345 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfd05464b klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0xfd15ad53 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0xfd51b281 gnttab_end_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0xfd673e7a devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xfd7243c7 erst_disable +EXPORT_SYMBOL_GPL vmlinux 0xfd824ec8 vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xfd8e8ca4 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xfd92ba02 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xfd9692c8 rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xfda20492 serial8250_rx_dma +EXPORT_SYMBOL_GPL vmlinux 0xfda7f6d3 pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0xfdb2de2f device_add +EXPORT_SYMBOL_GPL vmlinux 0xfdb83b3c screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0xfdc8fa33 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xfe4483b9 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0xfe727411 get_phys_to_machine +EXPORT_SYMBOL_GPL vmlinux 0xfe9169c0 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfeb9e7e3 fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0xfebdee1c blk_queue_bio +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfeda4e1c look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xfefd6465 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff0ec8d0 pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xff44bfee crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0xff55cb24 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xff589287 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff5f2b0e __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0xff6036de bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xff67fab7 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0xff6c7850 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0xff7ca573 spi_async +EXPORT_SYMBOL_GPL vmlinux 0xffa675e6 sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0xffbc83ff rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xffbf64ed task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0xffef693e cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0xfff593f0 usb_bus_list_lock --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/i386/generic.compiler +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/i386/generic.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4 --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/i386/generic.modules +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/i386/generic.modules @@ -0,0 +1,4090 @@ +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_fourport +8250_hub6 +8255 +8255_pci +8390 +8390p +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm860x-ts +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +9p +9pnet +9pnet_rdma +9pnet_virtio +BusLogic +DAC960 +NCR53c406a +a100u2w +a3d +a8293 +aacraid +aat2870-regulator +aat2870_bl +ab3100 +ab3100-otp +abituguru +abituguru3 +ablk_helper +ac97_bus +acard-ahci +acecad +acenic +acer-wmi +acerhdf +acpi_extlog +acpi_ipmi +acpi_pad +acpi_power_meter +acpiphp_ibm +acquirewdt +act2000 +act200l-sir +act_csum +act_gact +act_ipt +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +actisys-sir +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 +ad5930 +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 +ad9850 +ad9852 +ad9910 +ad9951 +ad_sigma_delta +adcxx +addi_apci_035 +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-keys +adp5520_bl +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads1015 +ads7828 +ads7846 +ads7871 +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adv7170 +adv7175 +adv7180 +adv_pci1710 +adv_pci1723 +adv_pci1724 +adv_pci_dio +advansys +advantechwdt +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +aes-i586 +aesni-intel +af-rxrpc +af9013 +af9033 +af_802154 +af_alg +af_key +af_packet_diag +affs +ah4 +ah6 +aha152x +aha152x_cs +aha1542 +aha1740 +ahci +ahci_platform +aic79xx +aic7xxx +aic94xx +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +airo +airo_cs +ak8975 +algif_hash +algif_skcipher +ali-agp +ali-ircc +alim1535_wdt +alim7101_wdt +alphatrack +altera-ci +altera-stapl +altera_jtaguart +altera_ps2 +altera_uart +alx +ambassador +amc6821 +amd-rng +amd5536udc +amd76x_edac +amd76xrom +amd8111e +amd_freq_sensitivity +amilo-rfkill +amplc_dio200 +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pc263 +amplc_pci224 +amplc_pci230 +amplc_pci263 +ams369fg06 +analog +anatop-regulator +ansi_cprng +anubis +aoe +apanel +apds9300 +apds9802als +apds990x +apm +apple-gmux +apple_bl +appledisplay +applesmc +appletalk +appletouch +applicom +ar5523 +ar7part +arc-rawmode +arc-rimi +arc4 +arc_ps2 +arc_uart +arcfb +arcmsr +arcnet +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arp_tables +arpt_mangle +arptable_filter +as3711-regulator +as3711_bl +as5011 +asb100 +asc7621 +asix +ast +asus-laptop +asus-nb-wmi +asus-wmi +asus_atk0110 +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at86rf230 +at91_ether +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-pwm-bl +atmel-ssc +atmel_cs +atmel_mxt_ts +atmel_pci +atmel_pwm +atmtcp +atp +atp870u +atxp1 +aty128fb +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo-pixcir-ts +auo_k1900fb +auo_k1901fb +auo_k190x +auth_rpcgss +authenc +authencesn +autofs4 +avm_cs +avma1_cs +avmfritz +ax25 +ax88179_178a +axnet_cs +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 +bcm5974 +bcm_wimax +bcma +bcma-hcd +bd6107 +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1770glc +bh1780gli +binfmt_aout +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluecard_cs +bluetooth +bma150 +bma180 +bmp085 +bmp085-i2c +bmp085-spi +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bonding +bpa10x +bpck +bpck6 +bpctl_mod +bpqether +bq2415x_charger +bq24190_charger +bq24735-charger +bq27x00_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +broadsheetfb +bsd_comp +bt3c_cs +bt819 +bt856 +bt866 +bt878 +btcoexist +btcx-risc +btmrvl +btmrvl_sdio +btmtk_usb +btrfs +btsdio +bttv +btuart_cs +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +bw-qcam +bypass +c-qcam +c101 +c2port-duramar2150 +c4 +c67x00 +c6xdigio +c_can +c_can_pci +c_can_platform +cachefiles +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 +cc770 +cc770_isa +cc770_platform +cciss +ccm +cdc-acm +cdc-phonet +cdc-wdm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc_subset +cedusb +ceph +cfag12864b +cfag12864bfb +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chipreg +chnl_net +chromeos_laptop +ci_hdrc +ci_hdrc_msm +ci_hdrc_pci +cifs +cirrus +cirrusfb +ck804xrom +classmate-laptop +clearpad_tm1217 +clip +clk-max77686 +clk-s2mps11 +clk-si5351 +clk-twl6040 +clk-wm831x +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm36651 +cm4000_cs +cm4040_cs +cma3000_d0x +cma3000_d0x_i2c +cmac +cmdlinepart +cmtp +cnic +cobra +coda +com20020 +com20020-isa +com20020-pci +com20020_cs +com90io +com90xx +comedi +comedi_bond +comedi_fc +comedi_parport +comedi_test +comm +compal-laptop +configfs +contec_pci_dio +cops +cordic +core +coretemp +cosa +cp210x +cpcihp_generic +cpcihp_zt5550 +cpia2 +cpqphp +cpu-notifier-error-inject +cpu5wdt +cpuid +cr_bllcd +cramfs +crc-ccitt +crc-itu-t +crc32 +crc32-pclmul +crc7 +crc8 +cros_ec +cros_ec_i2c +cros_ec_keyb +cros_ec_spi +crvml +cryptd +crypto_null +crypto_user +cryptoloop +crystalhd +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 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx8800 +cx8802 +cx88xx +cxacru +cxd2099 +cxd2820r +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cxt1e1 +cy8ctmg110_ts +cyapa +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-hwmon +da9052-regulator +da9052_bl +da9052_onkey +da9052_tsi +da9052_wdt +da9055-hwmon +da9055-regulator +da9055_onkey +da9055_wdt +da9063-regulator +da9210-regulator +daqboard2000 +das08 +das08_cs +das08_isa +das08_pci +das16 +das16m1 +das1800 +das6402 +das800 +db9 +dc395x +dca +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +dcdbas +ddbridge +de2104x +de4x5 +decnet +deflate +defxx +dell-laptop +dell-led +dell-wmi +dell-wmi-aio +dell_rbu +denali +denali_dt +denali_pci +des_generic +designware_i2s +dgap +dgnc +dgrp +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +diskonchip +diva_idi +diva_mnt +divacapi +divadidd +divas +dl2k +dlci +dlm +dm-bio-prison +dm-bufio +dm-cache +dm-cache-cleaner +dm-cache-mq +dm-crypt +dm-delay +dm-flakey +dm-log +dm-log-userspace +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 +dm1105 +dm9601 +dme1737 +dmfe +dmi-sysfs +dmm32at +dmx3191d +dn_rtmsg +dnet +docg3 +docg4 +donauboe +dpt_i2o +drbd +drm +drm_kms_helper +drm_usb +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsa_core +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +dt282x +dt3000 +dt3155v4l +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-dw2102 +dvb-usb-ec168 +dvb-usb-friio +dvb-usb-gl861 +dvb-usb-gp8psk +dvb-usb-it913x +dvb-usb-lmedm04 +dvb-usb-m920x +dvb-usb-mxl111sf +dvb-usb-nova-t-usb2 +dvb-usb-opera +dvb-usb-pctv452e +dvb-usb-rtl28xxu +dvb-usb-technisat-usb2 +dvb-usb-ttusb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +dvb_usb_v2 +dw_dmac +dw_dmac_core +dw_dmac_pci +dwc2 +dwc2_pci +dwc2_platform +dwc3 +dwc3-pci +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e4000 +e752x_edac +e7xxx_edac +earth-pt1 +eata +ebt_802_3 +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ec100 +ec_sys +echo +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 +elo +elsa_cs +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em_canid +em_cmp +em_ipset +em_meta +em_nbyte +em_text +em_u32 +emc1403 +emc2103 +emc6w201 +emi26 +emi62 +empeg +ems_pci +ems_pcmcia +ems_usb +emu10k1-gp +enc28j60 +enclosure +ene_ir +eni +enic +epat +epia +epic100 +eql +esas2r +esb2rom +esd_usb2 +esi-sir +esp4 +esp6 +et131x +ethoc +eurotechwdt +evbug +exofs +extcon-adc-jack +extcon-arizona +extcon-gpio +extcon-max77693 +extcon-max8997 +extcon-palmas +ezusb +f2fs +f71805f +f71808e_wdt +f71882fg +f75375s +f81232 +fakelb +fam15h_power +fan53555 +farsync +faulty +fb_ddc +fb_sys_fops +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 +floppy +fm801-gp +fm_drv +fmc +fmc-chardev +fmc-fakedev +fmc-trivial +fmc-write-eeprom +fmvj18x_cs +fnic +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +freevxfs +friq +frpw +fsa9480 +fscache +fschmd +ft1000 +ft1000_pcmcia +ftdi-elan +ftdi_sio +ftl +fujitsu-laptop +fujitsu-tablet +fujitsu_ts +fusbh200-hcd +g450_pll +g760a +g762 +g_NCR5380 +g_NCR5380_mmio +g_acm_ms +g_audio +g_cdc +g_dbgp +g_ether +g_ffs +g_hid +g_mass_storage +g_midi +g_ncm +g_nokia +g_printer +g_serial +g_webcam +g_zero +gadgetfs +gamecon +gameport +garmin_gps +garp +gcm +gdmtty +gdmulte +gdmwm +gdth +gen_probe +generic +generic-adc-battery +generic_bl +geode-aes +geode-rng +gf128mul +gf2k +gfs2 +ghash-generic +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +glue_helper +gluebi +gma500_gfx +go7007 +go7007-loader +go7007-usb +goku_udc +goldfishfb +gp2ap002a00f +gp2ap020a00f +gpio +gpio-74x164 +gpio-addr-flash +gpio-adp5520 +gpio-adp5588 +gpio-amd8111 +gpio-arizona +gpio-charger +gpio-cs5535 +gpio-da9052 +gpio-da9055 +gpio-f7188x +gpio-fan +gpio-generic +gpio-ich +gpio-ir-recv +gpio-it8761e +gpio-janz-ttl +gpio-kempld +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio-pca953x +gpio-pcf857x +gpio-pch +gpio-rdc321x +gpio-regulator +gpio-sch +gpio-tps65912 +gpio-ts5500 +gpio-twl6040 +gpio-ucb1400 +gpio-viperboard +gpio-vx855 +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +gpio_backlight +gpio_keys +gpio_keys_polled +gpio_mouse +gpio_tilt_polled +gre +grip +grip_mp +gsc_hpdi +gspca_benq +gspca_conex +gspca_cpia1 +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_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gtco +guillemot +gunze +gx-suspmod +gx1fb +gxfb +hamachi +hampshire +hangcheck-timer +hanwang +hci +hci_uart +hci_vhci +hdaps +hdlc +hdlc_cisco +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdlcdrv +hdpvr +he +hecubafb +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfc_usb +hfcmulti +hfcpci +hfcsusb +hfs +hfsplus +hgafb +hid +hid-a4tech +hid-apple +hid-appleir +hid-aureal +hid-axff +hid-belkin +hid-cherry +hid-chicony +hid-cypress +hid-dr +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-generic +hid-gyration +hid-holtek-kbd +hid-holtek-mouse +hid-holtekff +hid-huion +hid-hyperv +hid-icade +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-lenovo-tpkbd +hid-logitech +hid-logitech-dj +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hid-petalynx +hid-picolcd +hid-pl +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-gyro-3d +hid-sensor-hub +hid-sensor-iio-common +hid-sensor-magn-3d +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-wacom +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hidp +hih6130 +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hmc5843 +hmc6352 +hopper +horizon +hostap +hostap_cs +hostap_pci +hostap_plx +hostess_sv11 +hp-wireless +hp-wmi +hp100 +hp_accel +hpfs +hpilo +hpsa +hptiop +hpwdt +hsi +hsi_char +hso +hsr +htc-pasic3 +htcpen +htu21 +huawei_cdc_ncm +hv_balloon +hv_netvsc +hv_storvsc +hv_utils +hv_vmbus +hwa-hc +hwa-rc +hwmon-vid +hwpoison-inject +hx8357 +hyperv-keyboard +hyperv_fb +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-designware-core +i2c-designware-pci +i2c-designware-platform +i2c-dev +i2c-diolan-u2c +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-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 +i2o_block +i2o_bus +i2o_config +i2o_core +i2o_proc +i2o_scsi +i3000_edac +i3200_edac +i40e +i40evf +i5000_edac +i5100_edac +i5400_edac +i5k_amb +i6300esb +i7300_edac +i740fb +i7core_edac +i810 +i810fb +i82092 +i82365 +i82860_edac +i82875p_edac +i82975x_edac +i8k +i915 +i915_bdw +iTCO_vendor_support +iTCO_wdt +ib700wdt +ib_addr +ib_cm +ib_core +ib_ipoib +ib_iser +ib_isert +ib_mad +ib_mthca +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +ibm_rtl +ibmaem +ibmasm +ibmasr +ibmpex +ibmphp +ichxrom +icn +icp_multi +ics932s401 +ideapad-laptop +ideapad_slidebar +idmouse +idt77252 +idt_gen2 +idtcps +ie6xx_wdt +ieee802154 +ifb +iforce +igb +igbvf +iguanair +ii_pci20kc +iio-trig-interrupt +iio-trig-periodic-rtc +iio-trig-sysfs +iio_dummy +iio_hwmon +ili210x +ili922x +ili9320 +imm +imon +ims-pcu +imx074 +in2000 +ina209 +ina2xx +industrialio +industrialio-triggered-buffer +inet_diag +inexio +inftl +initio +input-polldev +int51x1 +intel-mid-touch +intel-rng +intel-rst +intel-smartconnect +intel_ips +intel_menlow +intel_mid_battery +intel_mid_dma +intel_mid_powerbtn +intel_mid_thermal +intel_oaktrail +intel_powerclamp +intel_rapl +intel_scu_ipcutil +intel_vr_nor +intelfb +interact +interval_tree_test +inv-mpu6050 +io_edgeport +io_ti +ioatdma +ioc4 +iowarrior +ip6_gre +ip6_tables +ip6_tunnel +ip6_vti +ip6t_MASQUERADE +ip6t_NPT +ip6t_REJECT +ip6t_SYNPROXY +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_mh +ip6t_rpfilter +ip6t_rt +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6table_security +ip_gre +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netnet +ip_set_hash_netport +ip_set_hash_netportnet +ip_set_list_set +ip_tables +ip_tunnel +ip_vs +ip_vs_dh +ip_vs_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 +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ipg +iphase +ipheth +ipip +ipmi_devintf +ipmi_poweroff +ipmi_si +ipmi_watchdog +ipoctal +ipr +ips +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_SYNPROXY +ipt_ULOG +ipt_ah +ipt_rpfilter +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +iptable_security +ipw +ipw2100 +ipw2200 +ipwireless +ipx +ir-jvc-decoder +ir-kbd-i2c +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +ir-rc5-decoder +ir-rc5-sz-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sony-decoder +ir-usb +ircomm +ircomm-tty +irda +irda-usb +iris +irlan +irnet +irtty-sir +isci +iscsi_boot_sysfs +iscsi_ibft +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isofs +isp116x-hcd +isp1362-hcd +isp1704_charger +isp1760 +it87 +it8712f_wdt +it87_wdt +it913x-fe +itd1000 +ite-cir +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iw_nes +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsm +k10temp +k8temp +kafs +kalmia +kaweth +kb3886_bl +kbic +kbtab +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keucr +keyspan +keyspan_pda +keyspan_remote +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +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 +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 +leds-88pm860x +leds-adp5520 +leds-atmel-pwm +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-lp5521 +leds-lp5523 +leds-lp5562 +leds-lp55xx-common +leds-lp8501 +leds-lp8788 +leds-lt3593 +leds-max8997 +leds-mc13783 +leds-net48xx +leds-ot200 +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pca9685 +leds-pwm +leds-regulator +leds-ss4200 +leds-tca6507 +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 +lg-vl600 +lg2160 +lgdt3305 +lgdt330x +lgs8gxx +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +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 +libsrp +lightning +line6usb +lineage-pem +linear +lirc_bt829 +lirc_dev +lirc_igorplugusb +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +litelink-sir +lkkbd +llc +llc2 +llog_test +lm25066 +lm3533-als +lm3533-core +lm3533-ctrlbank +lm3533_bl +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 +logibm +longhaul +longrun +lov +lp +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp8755 +lp8788-charger +lp8788_bl +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc2978 +ltc4151 +ltc4215 +ltc4245 +ltc4261 +ltpc +ltv350qv +lustre +lv5207lp +lvfs +lxfb +lz4 +lz4_compress +lz4hc +lz4hc_compress +m25p80 +m2m-deinterlace +m52790 +m88rs2000 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +ma600-sir +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +mac80211 +mac80211_hwsim +mac802154 +mac_hid +macb +machzwd +macmodes +macvlan +macvtap +mag3110 +magellan +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +matrix-keymap +matrix_keypad +matrox_w1 +matroxfb_DAC1064 +matroxfb_Ti3026 +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +max1111 +max11801_ts +max1363 +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max2165 +max3100 +max34440 +max517 +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77686 +max77693 +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925-regulator +max8925_bl +max8925_onkey +max8925_power +max8952 +max8973-regulator +max8997 +max8997_charger +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 +mce-inject +mce_amd_inj +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp4725 +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdacon +mdc +mdc800 +mdio +me4000 +me_daq +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mei +mei-me +mei_phy +mem2mem_testdev +memstick +mena21_wdt +metro-usb +metronomefb +meye +mfd +mga +mgc +michael_mic +microread +microread_i2c +microread_mei +microtek +mii +minix +mip6 +mite +mixcomwd +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mma8450 +mmc_block +mms114 +mos7720 +mos7840 +moxa +mpc624 +mpoa +mpr121_touchkey +mpt2sas +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +mrst_max3110 +ms_block +msdos +msi-laptop +msi-wmi +msp3400 +mspro_block +msr +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt29f_spinand +mt312 +mt352 +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtd_dataflash +mtdblock +mtdblock_ro +mtdoops +mtdram +mtdswap +mtip32xx +mtouch +multipath +multiq3 +musb_hdrc +mv88e6060 +mv88e6xxx_drv +mv_u3d_core +mv_udc +mvmdio +mvsas +mvumi +mwave +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxl111sf-demod +mxl111sf-tuner +mxl5005s +mxl5007t +mxm-wmi +mxser +myri10ge +n2 +n411 +n_hdlc +n_r3964 +n_tracerouter +n_tracesink +nand +nand_bch +nand_ecc +nand_ids +nandsim +natsemi +nau7802 +navman +nbd +nci +ncpfs +nct6775 +ne +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netlink_diag +netprio_cgroup +netrom +netsc520 +nettel +netxen_nic +newtonkbd +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 +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nf_synproxy_core +nf_tables +nf_tables_arp +nf_tables_bridge +nf_tables_ipv4 +nf_tables_ipv6 +nfc +nfc_digital +nfcsim +nfcwilink +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nfs +nfs_acl +nfs_layout_nfsv41_files +nfsd +nfsv2 +nfsv3 +nfsv4 +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 +nft_limit +nft_log +nft_meta +nft_nat +nft_rbtree +nft_reject_ipv4 +nftl +ngene +ni65 +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_at_a2150 +ni_at_ao +ni_atmio +ni_atmio16d +ni_daq_700 +ni_daq_dio24 +ni_labpc +ni_labpc_cs +ni_labpc_isadma +ni_labpc_pci +ni_mio_cs +ni_pcidio +ni_pcimio +ni_tio +ni_tiocmd +nicstar +nilfs2 +niu +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 +ns558 +ns83820 +nsc-ircc +nsc_gpio +nsp32 +nsp_cs +ntb +ntb_netdev +ntc_thermistor +ntfs +null_blk +nuvoton-cir +nv_tco +nvidiafb +nvme +nvram +nxt200x +nxt6000 +obdclass +obdecho +objlayoutdriver +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stack_o2cb +ocfs2_stack_user +ocfs2_stackglue +ocrdma +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 +output +ov2640 +ov5642 +ov6650 +ov7640 +ov7670 +ov772x +ov9640 +ov9740 +overlayfs +oxu210hp-hcd +p4-clockmod +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +padlock-aes +padlock-sha +palmas-regulator +panasonic-laptop +panel +paride +parkbd +parport +parport_ax88796 +parport_cs +parport_pc +parport_serial +pas16 +pata_acpi +pata_ali +pata_amd +pata_arasan_cf +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 +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 +pci-stub +pci200syn +pcips2 +pcl711 +pcl724 +pcl726 +pcl730 +pcl812 +pcl816 +pcl818 +pcm3724 +pcmad +pcmcia +pcmcia_core +pcmcia_rsrc +pcmciamtd +pcmda12 +pcmmio +pcmuio +pcnet32 +pcnet_cs +pcrypt +pcspkr +pcwd +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 +phison +phonet +phram +phy-core +phy-generic +phy-gpio-vbus-usb +phy-isp1301 +phy-rcar-usb +phy-samsung-usb +phy-samsung-usb2 +phy-samsung-usb3 +physmap +pixcir_i2c_ts +pktcdvd +pktgen +pl2303 +plat-ram +plat_nand +platform_lcd +plip +plusb +pluto2 +plx_pci +pm-notifier-error-inject +pm2fb +pm3fb +pm80xx +pmbus +pmbus_core +pmc551 +pmcraid +pms +pn533 +pn544 +pn544_i2c +pn544_mei +pn_pep +poc +port100 +poseidon +powermate +powernow-k6 +powernow-k7 +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +ppp_synctty +pppoatm +pppoe +pppox +pps-gpio +pps-ldisc +pps_core +pps_parport +pptp +prism2_usb +ps2mult +psmouse +psnap +pt +pti +ptlrpc +ptp +ptp_pch +pvpanic +pvrusb2 +pwc +pwm_bl +pxa27x_udc +qcaux +qcserial +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qlogic_cs +qlogicfas +qlogicfas408 +qmi_wwan +qnx4 +qnx6 +qt1010 +qt1070 +qt2160 +quatech2 +quatech_daqp_cs +quickstart +quota_tree +quota_v1 +quota_v2 +qxl +r128 +r592 +r6040 +r8152 +r815x +r8169 +r8187se +r8188eu +r8192e_pci +r8192u_usb +r820t +r82600_edac +r852 +r8712u +r8a66597-hcd +r8a66597-udc +radeon +radeonfb +radio-aimslab +radio-aztech +radio-cadet +radio-gemtek +radio-i2c-si470x +radio-isa +radio-keene +radio-ma901 +radio-maxiradio +radio-miropcm20 +radio-mr800 +radio-rtrack2 +radio-sf16fmi +radio-sf16fmr2 +radio-shark +radio-si4713 +radio-si476x +radio-tea5764 +radio-terratec +radio-timb +radio-trust +radio-typhoon +radio-usb-si470x +radio-wl1273 +radio-zoltrix +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +ray_cs +rbd +rbtree_test +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-em-terratec +rc-encore-enltv +rc-encore-enltv-fm53 +rc-encore-enltv2 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-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-tbs-nec +rc-technisat-usb2 +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-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rc5t583-regulator +rcar_vin +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +redboot +redrat3 +reed_solomon +reiserfs +remoteproc +renesas_usbhs +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +rio-scan +rio500 +rionet +rivafb +rj54n1cb0c +rmd128 +rmd160 +rmd256 +rmd320 +rndis_host +rndis_wlan +rocket +romfs +rose +rotary_encoder +rp2 +rpcsec_gss_krb5 +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt61pci +rt73usb +rtc-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-bq32k +rtc-bq4802 +rtc-da9052 +rtc-da9055 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1742 +rtc-ds2404 +rtc-ds3232 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-hid-sensor-time +rtc-isl12022 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max77686 +rtc-max8907 +rtc-max8925 +rtc-max8997 +rtc-max8998 +rtc-mc13xxx +rtc-moxart +rtc-mrst +rtc-msm6242 +rtc-palmas +rtc-pcf2123 +rtc-pcf2127 +rtc-pcf50633 +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-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtd520 +rti800 +rti802 +rtl2830 +rtl2832 +rtl8150 +rtl8180 +rtl8187 +rtl8188ee +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192se +rtl8723-common +rtl8723ae +rtl8723be +rtl8821ae +rtl_pci +rtl_usb +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtlwifi +rts5139 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rxkad +s1d13xxxfb +s2250 +s2255drv +s2io +s3fb +s526 +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s626 +s6e63m0 +s921 +saa6588 +saa6752hs +saa7110 +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7146 +saa7146_vv +saa7164 +saa717x +saa7185 +saa7706h +safe_serial +salsa20-i586 +salsa20_generic +samsung-keypad +samsung-laptop +samsung-q10 +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 +sb1000 +sbc60xxwdt +sbc7240_wdt +sbc8360 +sbc_epx_c3 +sbc_fitpc2_wdt +sbc_gxx +sbe-2t3e3 +sbni +sbp_target +sbs +sbs-battery +sbshc +sc +sc1200wdt +sc520_wdt +sc520cdp +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_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +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_tgt +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_srp +sctp +sctp_probe +scx200 +scx200_acb +scx200_docflash +scx200_gpio +scx200_hrt +scx200_wdt +sdhci +sdhci-acpi +sdhci-pci +sdhci-pltfm +sdhci-pxav2 +sdhci-pxav3 +sdio_uart +sdla +sdr-msi3101 +sdricoh_cs +sealevel +sedlbauer_cs +seed +sep_driver +seqiv +ser_gigaset +serial2002 +serial_cs +serio_raw +sermouse +serpent-sse2-i586 +serpent_generic +serport +serqt_usb2 +ses +sfc +sh_eth +sh_mobile_ceu_camera +sh_mobile_csi2 +sh_veu +shark2 +shpchp +sht15 +sht21 +si21xx +si4713-i2c +si476x-core +sidewinder +sierra +sierra_net +sil164 +sim710 +sir-dev +sis +sis-agp +sis190 +sis5595 +sis900 +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_platform +skel +skfp +skge +sky2 +sl811-hcd +sl811_cs +slcan +slicoss +slip +slram +sm501 +sm501fb +sm7xxfb +sm_common +sm_ftl +smb347-charger +smc-ultra +smc9194 +smc91c92_cs +smm665 +smsc-ircc2 +smsc37b787_wdt +smsc47b397 +smsc47m1 +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +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-at73c213 +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt1605 +snd-azt2316 +snd-azt2320 +snd-azt3328 +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-firewire-speakers +snd-fm801 +snd-gina20 +snd-gina24 +snd-gus-lib +snd-gusclassic +snd-gusextreme +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-hdmi +snd-hda-codec-idt +snd-hda-codec-realtek +snd-hda-codec-si3054 +snd-hda-codec-via +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-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-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-opl3-synth +snd-opl3sa2 +snd-opl4-lib +snd-opl4-synth +snd-opti92x-ad1848 +snd-opti92x-cs4231 +snd-opti93x +snd-oxygen +snd-oxygen-lib +snd-page-alloc +snd-pcm +snd-pcsp +snd-pcxhr +snd-pdaudiocf +snd-portman2x4 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb-common +snd-sb16 +snd-sb16-csp +snd-sb16-dsp +snd-sb8 +snd-sb8-dsp +snd-sbawe +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-atmel-pcm +snd-soc-core +snd-soc-mfld-machine +snd-soc-si476x +snd-soc-simple-card +snd-soc-sn95031 +snd-soc-sst-platform +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-us122l +snd-usb-usx2y +snd-usbmidi-lib +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx-lib +snd-vx222 +snd-vxpocket +snd-wavefront +snd-wss-lib +snd-ymfpci +soc_camera +soc_camera_platform +soc_mediabus +soc_scale_crop +softdog +softing +softing_cs +solo6x10 +solos-pci +sony-btf-mpx +sony-laptop +sonypi +soundcore +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-dw +spi-dw-midpci +spi-dw-mmio +spi-gpio +spi-lm70llp +spi-oc-tiny +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-sc18is602 +spi-tle62x0 +spi-topcliff-pch +spi-xcomm +spi_ks8995 +spidev +squashfs +sr9700 +ssb +ssb-hcd +ssfdc +sst25l +sstfb +ssu100 +ssv_dnp +st +st1232 +st_accel +st_accel_i2c +st_accel_spi +st_drv +st_gyro +st_gyro_i2c +st_gyro_spi +st_magn +st_magn_i2c +st_magn_spi +st_pressure +st_pressure_i2c +st_pressure_spi +st_sensors +st_sensors_i2c +st_sensors_spi +starfire +stb0899 +stb6000 +stb6100 +ste_modem_rproc +stex +stinger +stir4200 +stk1160 +stkwebcam +stmmac +stmpe-keypad +stmpe-ts +stowaway +stp +streamzap +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +svcrdma +svgalib +sworks-agp +sx8 +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 +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +tc1100-wmi +tc3589x-keypad +tca6416-keypad +tca8418_keypad +tcic +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bic +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 +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-kstrtox +test-string_helpers +test_power +tg3 +tgr192 +thinkpad_acpi +thmc50 +ti-adc081c +ti_dac7512 +ti_usb_3410_5052 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timb_dma +timberdale +timblogiw +timbuart +timeriomem-rng +tipc +tlan +tlclk +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmem +tmiofb +tmp006 +tmp102 +tmp401 +tmp421 +tmscsim +toim3232-sir +topstar-laptop +toshiba_acpi +toshiba_bluetooth +touchit213 +touchright +touchwin +tpci200 +tpm-rng +tpm_atmel +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm_i2c_stm_st33 +tpm_infineon +tpm_nsc +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-charger +tps65090-regulator +tps65217 +tps65217-regulator +tps65217_bl +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +tranzport +tridentfb +ts2020 +ts5500_flash +ts_bm +ts_fsm +ts_kmp +tsc2005 +tsc2007 +tsc40 +tscan1 +tsi568 +tsi57x +tsi721_mport +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +tsl4531 +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tuner_it913x +tunnel4 +tunnel6 +turbografx +tusb6010 +tvaudio +tveeprom +tvp5150 +tw2804 +tw9903 +tw9906 +tw9910 +twidjoy +twl6040-vibra +twofish-i586 +twofish_common +twofish_generic +typhoon +u132-hcd +u14-34f +uPD98402 +u_ether +u_rndis +u_serial +uartlite +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +uda1342 +udc-core +udf +udl +udlfb +udp_diag +ueagle-atm +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_sercos3 +uli526x +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 +usb-serial-simple +usb-storage +usb3503 +usb8xxx +usb_8dev +usb_debug +usb_f_acm +usb_f_ecm +usb_f_ecm_subset +usb_f_eem +usb_f_mass_storage +usb_f_ncm +usb_f_obex +usb_f_phonet +usb_f_rndis +usb_f_serial +usb_f_ss_lb +usb_gigaset +usb_wwan +usbatm +usbdux +usbduxfast +usbduxsigma +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usbsevseg +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +userspace-consumer +ushc +usnic_verbs +uss720 +uvcvideo +uvesafb +uwb +ux500 +v4l2-common +v4l2-dv-timings +v4l2-int-device +v4l2-mem2mem +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vfio +vfio-pci +vfio_iommu_type1 +vga16fb +vgastate +vgg2432a4 +vhci-hcd +vhost +vhost_net +vhost_scsi +via +via-camera +via-cputemp +via-ircc +via-rhine +via-rng +via-sdmmc +via-velocity +via686a +via_wdt +viafb +video +videobuf-core +videobuf-dma-contig +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videobuf2-core +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-memops +videobuf2-vmalloc +videocodec +videodev +viperboard +viperboard_adc +virtio-rng +virtio_scsi +virtual +visor +vivi +vlsi_ir +vmac +vme +vme_ca91cx42 +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmlfb +vmw_balloon +vmw_pvscsi +vmw_vmci +vmw_vsock_vmci_transport +vmwgfx +vmxnet3 +vp27smpx +vpx3220 +vringh +vsock +vsxxxaa +vt1211 +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +w1-gpio +w1_bq27000 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1_smem +w1_therm +w35und +w5100 +w5300 +w6692 +w83627ehf +w83627hf +w83627hf_wdt +w83697hf_wdt +w83697ug_wdt +w83781d +w83791d +w83792d +w83793 +w83795 +w83877f_wdt +w83977af_ir +w83977f_wdt +w83l785ts +w83l786ng +w90p910_ts +w9966 +wacom +wacom_i2c +wacom_w8001 +wafer5823wdt +walkera0701 +wanxl +warrior +wbsd +wcn36xx +wd +wd7000 +wdt +wdt_pci +whc-rc +whci +whci-hcd +whiteheat +wil6210 +wimax +winbond-840 +winbond-cir +wire +wishbone-serial +wistron_btns +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wl3501_cs +wlags49_h25_cs +wlags49_h2_cs +wlcore +wlcore_sdio +wlcore_spi +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x-ts +wm831x_backup +wm831x_bl +wm831x_power +wm831x_wdt +wm8350-hwmon +wm8350-regulator +wm8350_power +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-regulator +wm97xx-ts +wmi +wp512 +wusb-cbaf +wusb-wa +wusbcore +x25 +x25_asy +x38_edac +x86_pkg_temp_thermal +x_tables +xc4000 +xc5000 +xcbc +xen-blkback +xen-evtchn +xen-fbfront +xen-gntalloc +xen-gntdev +xen-kbdfront +xen-netback +xen-pciback +xen-pcifront +xen-privcmd +xen-tpmfront +xen_wdt +xenfs +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-enet +xgifb +xgmac +xillybus_core +xillybus_pcie +xirc2ps_cs +xircom_cb +xo15-ebook +xor +xpad +xprtrdma +xsens_mt +xt_AUDIT +xt_CHECKSUM +xt_CLASSIFY +xt_CONNSECMARK +xt_CT +xt_DSCP +xt_HL +xt_HMARK +xt_IDLETIMER +xt_LED +xt_LOG +xt_NETMAP +xt_NFLOG +xt_NFQUEUE +xt_RATEEST +xt_REDIRECT +xt_SECMARK +xt_TCPMSS +xt_TCPOPTSTRIP +xt_TEE +xt_TPROXY +xt_TRACE +xt_addrtype +xt_bpf +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_conntrack +xt_cpu +xt_dccp +xt_devgroup +xt_dscp +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_iprange +xt_ipvs +xt_length +xt_limit +xt_mac +xt_mark +xt_multiport +xt_nat +xt_nfacct +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_realm +xt_recent +xt_sctp +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_tcpudp +xt_time +xt_u32 +xtkbd +xts +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 +zte_ev --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/i386/lowlatency +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/i386/lowlatency @@ -0,0 +1,17574 @@ +EXPORT_SYMBOL arch/x86/kvm/kvm 0x57438f70 kvm_cpu_has_pending_timer +EXPORT_SYMBOL arch/x86/kvm/kvm 0x60d29581 kvm_read_guest_atomic +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/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/acpi/video 0x7a45377b acpi_video_unregister +EXPORT_SYMBOL drivers/acpi/video 0x8826c13b acpi_video_register +EXPORT_SYMBOL drivers/acpi/video 0xb49fe443 acpi_video_get_edid +EXPORT_SYMBOL drivers/atm/suni 0x5ebdd404 suni_init +EXPORT_SYMBOL drivers/atm/uPD98402 0x7cb8cfb8 uPD98402_init +EXPORT_SYMBOL drivers/bcma/bcma 0xce287351 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 0x0696679e pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0x207024aa pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0x2e3501b8 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x3960a2dc pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x61971c7b pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x76f14824 pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0x8eec5b04 pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0x9b2ae687 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xa0d7b4c9 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0xc8f63c37 pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xed872f92 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0xfd602024 paride_unregister +EXPORT_SYMBOL drivers/char/nsc_gpio 0x31abda8d nsc_gpio_read +EXPORT_SYMBOL drivers/char/nsc_gpio 0x77310b79 nsc_gpio_dump +EXPORT_SYMBOL drivers/char/nsc_gpio 0x7c3b36e3 nsc_gpio_write +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/dma/dw/dw_dmac_core 0x25cc3a26 dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x86b7f08f dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xc56d7a89 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xcddd2e26 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xd88db725 dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xeaeff3b6 dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/ioat/ioatdma 0x88b8a0f8 ioat_dma_setup_interrupts +EXPORT_SYMBOL drivers/edac/edac_core 0xdcb2aae4 edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04dd92ce fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0d8798fd fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x10548f36 fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16d6f709 fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x18c787bc fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x21ff3e44 fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0x258cd50a fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x35700a15 fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3d519ffd fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4040ce5c fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x452d0fc7 fw_core_handle_bus_reset +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 0x6b0444a3 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x6bc1918e fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x6ec05789 fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7769b96a fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7e431b14 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8fa7751f fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9422b419 fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0x95789391 fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9ba34880 fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa2c5fdcc fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa6c011f3 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb6b3ed57 fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc776379e fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd6192a3f fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd8d32d4f fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xdb69f2f4 fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0xdf94fe53 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firmware/dcdbas 0xa75079d6 dcdbas_smi_request +EXPORT_SYMBOL drivers/fmc/fmc 0x010cb8cb fmc_find_sdb_device +EXPORT_SYMBOL drivers/fmc/fmc 0x11dd3e20 fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0x2baab5f1 fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x456db5e8 fmc_driver_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x4cb76ff4 fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0x609a7c12 fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x80931cfc fmc_free_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x9aaec048 fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0xaeb1d3a2 fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0xb2e27784 fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0xbaa9b976 fmc_show_sdb_tree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00025916 drm_mode_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00667d8a drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x007a95cc drm_sysfs_connector_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x01d0e794 drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x026c0d6b drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03f30907 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x047bf9ef drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04c4b03b drm_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a3e3bc6 drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0af8edda drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0c8ab40d drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ca21569 drm_prime_init_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d005e16 drm_global_mutex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e37ce5a drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ec527fc drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ed133aa drm_gem_prime_export +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 0x101dc119 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1187384b drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12c6276a drm_buffer_read_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13cdaadb drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x142b8b35 drm_buffer_copy_from_user +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x16571151 drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x17a813b9 drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18822170 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x189d5c0c drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x189f6401 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19e44324 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1adf25a7 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1ea044c8 drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2061496c drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x250d890e drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26cd9c88 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28885315 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x291718e4 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a47abfd drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a942ab2 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2b968bf6 drm_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2c9b50b3 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d425b1b drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d5056f5 drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d80be4d drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2db87514 drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a9fc9 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2efc8e78 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f863e52 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x305d64db drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x307aacdd drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x346127a7 drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x35286b1f drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x361e8769 drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36f91ef3 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0x389aa430 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3aa5bdaf drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ae7b2d0 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b2050a4 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b667394 drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d4b8108 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e1bc912 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f118d3b drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x426372d9 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x42c37334 drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43384bd9 drm_buffer_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4347be39 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4426e7a1 drm_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44814256 drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x45c3bbf3 drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x475daf2e drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x498dcb5e drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49fabf0d drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49ff90ec drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b33f073 drm_get_encoder_name +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 0x500ad065 drm_i2c_encoder_restore +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 0x571f6356 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x588080e2 drm_sysfs_connector_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x596e463a drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b96dcf5 drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5be30d74 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c808254 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5cd5b7fe drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6003fab4 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6090be61 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61dd286a drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x652f8991 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x656b1d99 drm_prime_destroy_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66603651 drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66803841 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x670c7208 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67228b33 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6761af56 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x678d6905 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b056ece drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b6adaf7 drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b6d7375 drm_timestamp_precision +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6c0ea20c drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6c52c280 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cee2e42 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cf5050c drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f08acc3 drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7048d0ff drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x713f97dc drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71456ee3 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71a13421 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71b84e62 drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7226917e drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72bb569a drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72bee649 drm_dev_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x756bf73e drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7594178b drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x760e7e27 drm_core_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7654773a drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x78dc92f0 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a4e7297 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b25aee5 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c12887c drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c43cd91 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c4732c5 drm_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7cb789cb drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ff5e701 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x801bc376 drm_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x815e2019 drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81ba930c drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81bae571 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x839efc42 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x880e3db9 drm_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89d27e57 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ac13e60 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ccf4752 drm_bridge_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d625e77 drm_get_connector_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8dfb019d drm_buffer_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f7df3a7 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93941a16 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x94a7f4c1 drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x964643cb drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9745d638 drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x97c7ee01 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99182818 drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99652d4f drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b214844 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9bb77d6d drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d113d59 drm_platform_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d70fc2a drm_rnodes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9eccfe56 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9efc26a3 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f0098e9 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa01f92b8 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0e72889 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1b92de0 drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1f4e9e6 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1fab418 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa24f7fe6 drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa2735dd7 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4cbe583 drm_get_last_vbltimestamp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5479170 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5c11171 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5dbd572 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa6902f65 drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa80eceb0 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa873df90 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xab2ed526 drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac167bde drm_core_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xacb598a1 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0xacdca492 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafb0cb6f drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafbc28f8 drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafd51394 drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb0ac7d35 drm_mode_connector_detach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb572a9f0 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb82cafe0 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb83627a5 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb95beb55 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc509059 drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc77043a drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe001c53 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc1ab5536 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4000f9f drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc414c422 drm_vblank_offdelay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc629b2b9 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7239327 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc817b301 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc9244dac drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc95ba7ec drm_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca93ede3 drm_vma_offset_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcaa5abca drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcad5ebc5 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcadae8a9 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb733aba drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf0f6091 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd3627758 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd55aea8d drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd817e42e drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd8bc3fa7 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda2747ee drm_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb5a5852 drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd37829c drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdfc4452c drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe01b6e2c drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe02d9ebc drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0870b0d drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe11feb70 drm_core_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe14ea729 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe227c42a drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe23ccd16 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2ef97e4 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe389bd23 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe4a3968f drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe507cb60 drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6f46e6e drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe73c8ce6 drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe99b6e89 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef1d1af0 drm_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef30332c drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xefdf9b69 drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf08d712a drm_mode_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf14f45bd drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf446a0e2 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf46624e3 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7b938b2 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf84c3271 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb497216 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb8054ed drm_core_reclaim_buffers +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfc48c848 drm_bridge_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd063935 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfdaf3eb6 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfdf5da67 drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe224c0b drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe4a68c7 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfea86b00 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0620a47d drm_dp_aux_unregister_i2c_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0dc88dd8 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x11a06758 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x121a0524 i2c_dp_aux_add_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2276da87 drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x23591c2b drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x27020731 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x27758c90 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2d8af977 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2f0edade drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x33caf77e drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x37923c09 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3fb3f7a8 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x414a04fa drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4642321a drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4d78d102 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x57009262 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x58a22815 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5d04b53c drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x672f0a6d drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6e035faa drm_dp_aux_register_i2c_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6ffa7a0c drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x87d72e9b drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x892f2ab5 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x90470f26 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x93ccb218 drm_dp_link_probe +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 0xaebaca11 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb31dab20 drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb4674bd6 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb6074eaf drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb8680722 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc940cc97 drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc9535dde drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xca5494d4 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcc6908ed drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd15514d5 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdb6b1f47 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdf031886 drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe3452b14 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xebc547c0 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xed4eb98d drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf83a24a4 drm_fb_helper_restore_fbdev_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x1224255d drm_get_usb_dev +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x56fdf482 drm_usb_init +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x836ac5b9 drm_usb_exit +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0882ac34 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x127de314 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x132b05be ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x18220418 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x187a4191 ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1a69a545 ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1ba4e68a ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1bcf934c ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1d1d1b6a ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x210b0528 ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x23e6a3df ttm_vt_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 0x2ec9f993 ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2f2d0f75 ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3842fc69 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x384a615e ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3daa8c40 ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3f6c3af3 ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x40679116 ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4bcbcf11 ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x532306fe ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x57489bb3 ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5c68253e ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5cf59609 ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6019c13c ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x669c263f ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x67b1d568 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x699e8b64 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6d930e89 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6f641d81 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x71d1b593 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x76775783 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7aeaeba2 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7de353ff ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x83496a3b ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x880a15ad ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x881ef92f ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x88e5835d ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8c7d2b45 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8cad3cc2 ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x96bee8ec ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9c29b4b0 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9ef2e982 ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9f27104a ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa4df7d46 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa79fad0f ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa7b07e7d ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xade5959c ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb16c2124 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb25af0f1 ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb25e55ef ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb53b44d4 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb6b9218d ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb8989c19 ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbc2a647e ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc2fdc6d1 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc4a9381b ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc62f1fe1 ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc8e2c312 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcd5b8fb7 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce6e43a8 ttm_base_object_lookup_for_ref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd6e57abf ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd7a41a37 ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xda66c3ef ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe4255fff ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe5f4c17f ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe6bcbacd ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xeb75a149 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xeea4e125 ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xffcb8d9b ttm_read_lock +EXPORT_SYMBOL drivers/hv/hv_vmbus 0x3bb9c78d vmbus_sendpacket +EXPORT_SYMBOL drivers/hv/hv_vmbus 0xc9e450a3 vmbus_sendpacket_ctl +EXPORT_SYMBOL drivers/hv/hv_vmbus 0xce849da5 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 0x8657f357 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 0x282f0863 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x4d5f9581 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xfb4295a5 i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xcd8fe856 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xefdc30b0 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0x84165da0 amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xa89a338a st_accel_common_probe +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xae790a54 st_accel_common_remove +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x66902cac hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x7ef872dd hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xac4314b9 hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xe5413b8f hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xff06e3b0 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x734b79f0 hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xb2783781 hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x0404fd80 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 0x2134a266 st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x5c8a948c st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x635441b1 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x64a455a5 st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x64f2e93c st_sensors_sysfs_get_sampling_frequency +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x6d0eb6b1 st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x6f50583b st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x857c5f1b st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x95de8623 st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xdea7a79d st_sensors_sysfs_set_sampling_frequency +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xec3cb1e8 st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xed2c0b69 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xfae62962 st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xfd3b78b3 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0xdcf80549 st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0x861b2ee7 st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x017f0386 st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x3138e3f8 st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x7b90d360 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xc9aa6786 adis_enable_irq +EXPORT_SYMBOL drivers/iio/industrialio 0x10b54d10 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x14cedd11 iio_buffer_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x1fa1ddc1 iio_buffer_register +EXPORT_SYMBOL drivers/iio/industrialio 0x25eec0cb iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x4596fd8e iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x48c8da77 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x54e4b87b iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0x5958867e iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x5a3cbf3e iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x5d8b8195 iio_buffer_store_enable +EXPORT_SYMBOL drivers/iio/industrialio 0x60c55f53 iio_buffer_show_enable +EXPORT_SYMBOL drivers/iio/industrialio 0x76c80c6a iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x89bec75d iio_buffer_read_length +EXPORT_SYMBOL drivers/iio/industrialio 0x8f3d78ef iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x8fc5024b iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x90d37d56 iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x9fbe7bd3 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0xa8a3a13c iio_buffer_write_length +EXPORT_SYMBOL drivers/iio/industrialio 0xc1947d85 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0xc64ad4ea iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0xd04c2b03 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xd4a07a68 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe032c7d7 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x5ef564ce iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0xfe351728 iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x1fec67a9 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x6497c8c9 iio_kfifo_free +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x4250abae st_magn_common_probe +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xf5ad4236 st_magn_common_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x6571f18b st_press_common_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xc30c4923 st_press_common_remove +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x049ace30 rdma_addr_find_smac_by_sgid +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x04b8b6d7 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1c3c0ad3 rdma_addr_size +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x273f4cca rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x446fd7c9 rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x71f3076f rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x8ed679ff rdma_addr_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xc0bf4edc rdma_addr_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xc2987ae7 rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x04b55aa3 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x1ab14a33 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x1d642685 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x2b94afeb ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x2cf0cb59 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x381735c5 cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x481b6592 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x547d6534 ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x6170dfe5 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x6b3d6cc0 ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x71a41953 ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x8ff4618f ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x9386f3a4 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x9b2ad3a6 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa4395c99 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xad31959b ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd41a8b44 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x03da143d ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x06c82fcf mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x084c6c3b ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x14146e41 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1459be54 ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x14f84918 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x15d60c41 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x16d7590a ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x171f99f1 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x173c742d ib_resolve_eth_l2_attrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x185d2b89 ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1f2ce3f4 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x20edc514 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2115fda6 ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x237e75c7 ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x280c2e2f ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x29ae755b ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2cb03191 ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2d7d3559 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x30b8df19 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x34828cf5 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3cf35f41 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4678c1ba ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x482e9602 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4abae93d ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4b1789ba ib_query_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 0x608ceef9 ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x62db7c29 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6483f3f3 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6530240c ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6905b693 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x696634c2 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6aa88709 ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e030e26 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x775a737b ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x778d7c65 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x86832ed8 ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8b0dedd3 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8e9201a6 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x914c7eaa ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x91ddd24f ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9273b2c0 ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9301ede0 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x94c78c12 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x95384ee9 rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x975f81cf ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9e04a6a5 ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9fbdbf27 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa0c1c905 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa6695830 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xac217df9 rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xae4b7e07 ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xae5333e3 ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xae5c88fc ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1a312e1 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb2432bd6 ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb2f4a5fb ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb4f91cb3 ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb9b5b28f ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbb95f8dd ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc09a9368 ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc2a0ffef ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc5d3340c ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc63ea4fa ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc76b22b6 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xceb1171f ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcf2efde4 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd62cedd4 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd8dd06f7 ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd8f0265b ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xda9fa511 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xddeb1fe7 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xddfa0aed ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdefefd58 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe0893aec ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe58d8f3c ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe82d8392 ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xec598d5a ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xed78cd07 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf03f1c78 ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf57e29ed ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfabb5239 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x0335ab05 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x04c76482 ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x05efbf78 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x08ceb7e5 ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x24078dba ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x27040e3c ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2e25a57d ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x3d57d605 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f4bd840 ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x75afceb4 ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x946d5d27 ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xd3829bd8 ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xd48b815b ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x0553e35b ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x1377f85e ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x22f07253 ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x540363e7 ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x62f1c11b ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x6e44fd9f ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x8001438f ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xa64392ac ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xacf70b5b ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xc12236fb ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xddc330e7 ib_sa_pack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x2569d757 ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x52a6ce77 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x7971c00e ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xe350f2aa ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x09f9a2c0 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x71396ce7 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x740e3ac3 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xaa3a94a8 iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xaeaf8a31 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xe2346790 iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xe5ae4404 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf3ccf9ef iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x023fd01b rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0467b28b rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x080d7148 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0b628085 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x147ef0f3 rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x219328da rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x28205ad6 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2f6c1a1b rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x35adb1a7 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3a375a9b rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4fd0e6c8 rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x55d6ff0b rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8dcbeec0 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa6734376 rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xcdf6d443 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd2e5c0aa rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd86fc546 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd9f28ebb rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xeb491fec rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf3e09bf7 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xff04bc0c rdma_accept +EXPORT_SYMBOL drivers/input/gameport/gameport 0x054a546e __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x71509889 gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x8149c5ce gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x8e0dedee gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xa75d712f gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xe0a863ce gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xee515bda gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0xef6f1601 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xfd4ecc04 __gameport_register_driver +EXPORT_SYMBOL drivers/input/input-polldev 0x1962fbf7 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xbb49b230 input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xce7b1773 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xf408a524 input_free_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x0fe51fbc matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x10ef7248 ad714x_remove +EXPORT_SYMBOL drivers/input/misc/ad714x 0xafd243f3 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xc3641cd7 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xc88bf078 ad714x_probe +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 0xc9cd67f2 cma3000_init +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/sparse-keymap 0x23200f0d sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x7ccc9d8f sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0x7da3f16b sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0xa90ca2bb sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xb93c9db6 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0xcdbb8860 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xb96a64a2 ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xd5c7c3c5 ad7879_probe +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x00021ac5 capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x06c9aaf6 capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x15728ca1 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 0x47d3fc51 capi_info2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x56cc6490 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 0x6fc05c7d capi_ctr_ready +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 0x969f77ec capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9835a692 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x99da6dac capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9f823278 register_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xa7c4fd6c capi_message2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa165d27 capilib_release_appl +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 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 0xdb0e2f22 capi_ctr_suspend_output +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 0xeba3c3bb capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xed061606 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x0b088e44 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x217e555e b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x339b0f60 b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x4abd78bc b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x54669d62 b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x59ea0f95 b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x68854ec1 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x6b59797b b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb1b7c254 b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc0405bbd b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xcfea2102 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xda69c92b b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xde5ad487 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xedbfec5b b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xf93701b2 avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x2433b946 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x37d4f7b1 b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x6d7390e9 t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xa363189c b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xaa7348bc b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xb7749d1f b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xc4eb5692 b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd80bafe7 b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xffcbfff2 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 0x027bf2a5 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x6c95333d mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x82e32821 mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xff0f9aed mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x119902d8 mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x907d0b05 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 0x274eda3b hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x7f29ce36 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xe227344e FsmRestartTimer +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 0xff2db2cf FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x143b5f25 isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x80ed942e isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x9ec06697 isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xe0d87127 isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xe7fbc149 isac_setup +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x2ffaec79 register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x7f45edf1 isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x80cffb5e 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 0x053389bf recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0daa7e90 bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1945a967 bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1a38a057 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2ac1db5c mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x398f6b57 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3b88e895 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x43cf1982 mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x456565f2 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x462adea6 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x54451388 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5d20c6fd get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5d5c904a mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x614ede30 mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6ecfd7d9 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x871f7b40 mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x96309324 mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa4b78282 recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa658f4bd mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc06b4c6d create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd0310d84 dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd4b7e3a7 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xde5d5a5f get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe87943cf mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xeccaabc8 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xed5e2d89 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xeee0cac8 mISDN_freebchannel +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 0x12260184 closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0x48b6c6c9 closure_trylock +EXPORT_SYMBOL drivers/md/bcache/bcache 0x646cef0b closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0x97d7a294 closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0xc948845b closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe3c17af1 __closure_wake_up +EXPORT_SYMBOL drivers/md/bcache/bcache 0xf937970c __closure_lock +EXPORT_SYMBOL drivers/md/dm-log 0x6b579ff7 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0x6d40accc dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0xd75f6916 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0xff5c6831 dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x0ce286c3 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x2e8f0fbd dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x538f41a7 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x8e7ca980 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0xc50fd9fc dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0xc642ebb7 dm_snap_origin +EXPORT_SYMBOL drivers/md/raid456 0x2eab4d86 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x33390cfe flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x4f603355 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x5bb8d8d4 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x628ab2c7 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x7fd97e70 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x8ca321ea flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x99accd41 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x9f52f72b flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xb9c5a2de flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xc63d3584 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xe7ea2395 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xef198e31 flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xefb20943 flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/btcx-risc 0x03447611 btcx_riscmem_free +EXPORT_SYMBOL drivers/media/common/btcx-risc 0x495e4b0c btcx_calc_skips +EXPORT_SYMBOL drivers/media/common/btcx-risc 0x58bdd789 btcx_riscmem_alloc +EXPORT_SYMBOL drivers/media/common/btcx-risc 0xad2fe38b btcx_sort_clips +EXPORT_SYMBOL drivers/media/common/btcx-risc 0xc368f8e6 btcx_align +EXPORT_SYMBOL drivers/media/common/btcx-risc 0xcda0ded2 btcx_screen_clips +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0x26fa5c9a cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/common/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x5b88faf6 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0xab60ff75 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0xb6128d4c 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 0xcfe82d3b cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0xbf694343 cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x108eead2 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/common/tveeprom 0x5797eed4 tveeprom_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x06634ae6 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0751e4f9 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x08f46a94 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0a3a8c27 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0bbdac6f dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0c6fa866 dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x101a29b8 dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x17523ce7 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x196f1ac1 dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1f6cd268 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x237f7910 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x27432f6c dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x300f2abb dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x32f7da23 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x39fd1e59 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3f692521 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x421e7acd dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x47011f9c dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4c70c35a dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x527a0fc7 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6ca9fcf2 dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7a5d977b dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7ac5494c dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x810f9efa dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8ce093db dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x987dcfde dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9e858d84 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa9b79b52 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb72b5fa0 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xbebc1504 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc8f4f318 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd3d58c9b dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd3ee7530 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd68a099e timeval_usec_diff +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdace1533 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdbdaf0ef dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdc38fa40 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe293a54f dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfcc0ed9c dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-frontends/a8293 0xd0815604 a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0x48bdc768 af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9033 0x1748e684 af9033_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x3aad761d atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x0562d581 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x218461a9 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x5448ce54 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x55d886e9 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x6d4ed993 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xb103e4de au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xbae3c923 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xc68ca6e7 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xda210d62 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0xb5d24204 au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0xc341879d bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x2c0e89a8 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0x468225a1 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0x68763446 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xb303a436 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xcd9f5a6d cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0xa6617a79 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x5389721f cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xe95e7dc2 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0x58280b9f cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x17f62466 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x918ed965 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xbfa555cf dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xd8d3f97d dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xf6fae64e dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x083cf4a7 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x1c6ba765 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x1f0e6c57 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x2bb5c231 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x4038e83c dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x43eedea7 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x54243fa9 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x7c24ee8b dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x8d6c2c2d dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x9450aaa4 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x94c254d9 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd41429b6 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xea9101d1 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xf4cce434 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xf6a5be20 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x0eb0b094 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x0fb206ee dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x29e5404d dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xb54e121c dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xe055583e dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xf24e1a5d dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xf6245d3c dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x0ddfd4c7 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x4ba19203 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x4e77042a dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x5caed1f8 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x01ff2071 dib7000p_set_agc1_min +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x27d15988 dib7000p_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x2ba56d8f dib7000p_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x359a27a0 dib7090_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x425e769b dib7090_get_adc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x4f429fab dib7090_slave_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x697c9b9f dib7000p_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x7a9da9b1 dib7000pc_detection +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x81658f04 dib7000p_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xab3f4b33 dib7000p_update_pll +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xcc6bdbcd dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xd1755c38 dib7000p_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xd53953e8 dib7000p_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xdc83e207 dib7000p_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xe997c992 dib7090_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xf4d8d717 dib7000p_get_agc_values +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x19dee588 dib8090p_get_dc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x1a86d979 dib8000_pwm_agc_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x29506073 dib8000_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x2bfa44ba dib8000_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x3608a473 dib8000_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x41494906 dib8096p_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x44d639ac dib8000_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x6f5ac246 dib8000_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x725e7bd0 dib8000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x7dfc33af dib8000_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x8a69082e dib8000_update_pll +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x933fb0e1 dib8000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x9ef75d55 dib8000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xa42898c7 dib8000_get_adc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xb27907bf dib8000_remove_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xb492678b dib8000_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xb4e0def5 dib8000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xcd44162a dib8096p_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xd470e4b0 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x180ec451 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x713ed7c4 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xa38802c4 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xadd253ac dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xb1886852 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x6e0c0601 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x81f85150 drxd_config_i2c +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0xb8d6394e drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0x0cb9cfea ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0x055886d6 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0xe1e1ae66 ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x58134b1e isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x9871c456 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0xd12fe648 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/it913x-fe 0x52b1c796 it913x_fe_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0x2714f932 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0x22f66eb1 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0xc78b5285 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0x3f10e1ce lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0xfef65cc8 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0x91b010f0 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0xfb33cebc lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xa66890f6 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xff01adb1 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0x207e1f0a lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0x88c5404e m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0xf11ecb48 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0xa6949fd3 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0xf95274a7 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0x03d5914b mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x851b41b6 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0xc79044ae nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0x0461ad51 or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0x03728a4b or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2830 0x5842185d rtl2830_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2830 0x9547c8fa rtl2830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2832 0xdd39439f rtl2832_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0x4a200718 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0xd391cc18 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x7ae87440 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xbb7dfcbd s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0xa993ed40 s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x23e8b74f si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0x1b7ec24f sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0x83e23b94 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0xe4ab0db9 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0x495421bd stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x1045f5fa stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0xf5cefbc5 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0xb24b3125 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0x517e334f stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x106c0ace stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xc8af2af3 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0x71ebc1bc stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x237f1dc2 stv090x_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x6a6fb9ba stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x8fcda5dd stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0x47ec9e59 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0x82a27738 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0x29da6739 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x55c92b1b tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x70cd4776 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xa0a1d462 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0x8ba3f048 tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x3ac7fcd1 tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0x6e14a3e2 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x2d14be95 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0xc9a0899c tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0xe248b5a4 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0xb590ddfc ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0xd345aaf0 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0xe176df4d ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0x8c73fb94 ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0x63372f64 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0x6c739cf4 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0xb554ef64 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x8dd6533b flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x8fd2f30e flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x9d728da1 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x9ecdbc75 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xdf31e1c2 flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xfca10034 flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xff23f952 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x5a6905a8 bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x6207d858 bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xb3dbda4b bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xdabb43c8 bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x02d33e40 bttv_sub_register +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 0xb69af30d bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xbc8d46b5 bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x130712b4 dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x15a4afef rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x20bc90dc write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x25f3d044 dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x34fb596f dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x60f188e8 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x7aee47c8 dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x99de3dc0 dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xebebb0a1 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x093e3bec dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x0b752c4a cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2135c14a cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x262659d8 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x98e06aa0 cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xf25386cf cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x59b05cdc altera_pid_feed_control +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x9247b72f altera_hw_filt_release +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xace24634 altera_ci_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xcc2ce234 altera_hw_filt_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 0x2d084bb5 cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x7307ecb1 cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x7a8c66b5 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x7b663e31 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc87fa164 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xf6338e34 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x2ef0bd98 vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x61db955e vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x6c225186 cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x7e21a11a cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xa3bfa889 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xaa6147d5 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x4d261526 cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x686596a4 cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xc55d250f cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xc851b893 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xe4793b4d cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xe560d945 cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x0062cdb0 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x04aaa59c cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x0f690488 cx88_risc_stopper +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x15a74424 cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2b15abbe cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2b82a0f2 cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x36e8dff0 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3c05c0ec cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x53fc1e74 cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x544bca7e cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x59700096 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5acec938 cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5f19e47a cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6e14ac77 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x798e01f4 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x806fa625 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8e1e462b cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x96738b72 cx88_free_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc7cb958f cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd6c33f85 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd97dea57 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe174b752 cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x030556e0 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x0c107438 ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x10073e77 ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x10eec73e ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x1e3a3264 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x2dc180ca ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5c05019d ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x74ad4467 ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x7841492a ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x7bd87d9d ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x8368e83d ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xaac5ca3c ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xae7fa0d9 ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xc7911860 ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xcb0b3b3b ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xcdc4df58 ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xdc229e19 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x280c6f07 saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x49e6df27 saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x55e31f8e saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x5ac76496 saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x66862c9b saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x73039031 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x74b38989 saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xb7752363 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xd4a15c04 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xeea23567 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xf8a3a2f7 saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xfb899bb5 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xfdc9c462 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xd13b6a55 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x3a1c6fea videocodec_unregister +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x484c91d1 videocodec_register +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0xc527f854 videocodec_attach +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0xd028a184 videocodec_detach +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x19f4a87e soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x23d28100 soc_camera_lock +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x2405c4dc soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x7c89f285 soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xa3091526 soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xbcfcd48c soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xc63876f2 soc_camera_unlock +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xca423c57 soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xfff498f5 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 0x5f3e3558 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xa9546115 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xfe2c3a07 soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x034e8dd6 soc_camera_client_scale +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x7b29ee35 soc_camera_calc_client_output +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x9a0b1ea2 soc_camera_client_s_crop +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0xc061a730 soc_camera_client_g_rect +EXPORT_SYMBOL drivers/media/radio/tea575x 0x0a258dac snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0x781cc96b snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0x82eaebab snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0xd48a46dd snd_tea575x_init +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x322d9d13 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x6bf46e5f lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x7364c4bc lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xb073f2ff lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xbb8ebd5a lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xe81b0858 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xf516a0f0 lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xfaeee46a lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/rc-core 0x71000d93 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/rc/rc-core 0xc0f69a87 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/tuners/e4000 0x82b8c96f e4000_attach +EXPORT_SYMBOL drivers/media/tuners/fc0011 0xc0a63aef fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0xcd466f4a fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xa990b195 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xc07db01c fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xf441b684 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc2580 0xac815705 fc2580_attach +EXPORT_SYMBOL drivers/media/tuners/max2165 0x175dec60 max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x53a55581 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x30c971b5 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0x1b8a19f1 mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0x42e9b56d mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0x253ce5d1 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0xaf0696fb qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18212 0x1b7966a5 tda18212_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0x29d384c1 tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tua9001 0xb4d602f8 tua9001_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 0x53adf425 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/tuner_it913x 0xdccc3a49 it913x_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x29968b86 xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0xdf51cb51 xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x09867ded cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0xe44be988 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x26ff5823 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x3f563ba6 dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x51e544e7 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x8304cdfb dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x8e3e583c dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xa0c49af5 dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xd6d3477c dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xf24a075e dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xf7dd9bb6 dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x09fd8653 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x4acd0ff3 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x5735c35a dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x6bdb4e01 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x6e74099a usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x75a09516 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xb35e16a7 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xcd51a384 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 0x026ff98d dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x08f67321 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x2d09f854 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x5f3bcf22 dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x629fc70a dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x832e5bf3 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xaa084b54 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xacb8c478 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xafaff1d5 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 0xe3cadfd6 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xed4d1fee dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x0491e345 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xb6f3943a em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x0e3bec0a gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x6324fde4 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x690766e1 gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x97828ef9 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9eacb5e4 gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xa6af32fa gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xdf3fa885 gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xf41a4c79 gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x3826cb03 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x4257f81f tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xfb8af97a tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x58a869b0 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x736f687a ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x42c8e001 v4l2_ctrl_next +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x4adaf0f3 v4l2_ctrl_query_menu_valid_items +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x53c9394f v4l2_ctrl_query_menu +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x5f96a661 v4l2_ctrl_check +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x1b1d85b2 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x316995d6 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 0x6693145e v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x36d8731a videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x3ef5dec8 videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x492d6341 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x7398a7c6 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xb12c23f7 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xb77b3169 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0xe03e4219 vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x01dfe046 v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0885a21e __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0b441c0c v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0c54b7db v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0da23adc v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0df393ef v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x11f10946 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1575b2b5 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x164685de v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1f400150 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2d77609a v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2d791e40 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2e46c8bc v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x30799d50 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x30df913d video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x319119cd v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x39aea8c6 v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x39e1c154 v4l2_ctrl_new_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 0x3f8404e7 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45b0a9af video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4a467992 v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4f3897e0 v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x55a71bbd v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5ef75491 video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x61272afe v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x633220d0 v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6406ee6c v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x65978bc0 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x67468925 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x68737947 video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x69b1bf6a v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6a1e0765 v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6e202dd4 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x76f83ee5 v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7d8ff286 v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7f00a823 v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8111db4a v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8929a490 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8b642432 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x98e52cbe v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9c842f6b v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9dea3127 v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa15d0686 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa248e917 v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa2a5adb8 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb0fcbb2f v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb3a6e670 v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbac4a225 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc8206a0 video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbef6d3b0 v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc12cf8f8 v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc177423f v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc3655474 v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc454ffc3 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd4c68af9 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd79026ad __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdd73bcbc video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdffd4adf v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2e46bcf v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe6e5a728 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe6fce6f2 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xede6bfb3 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf5af7fdd v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf7152887 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfac45949 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfbe408cc v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfc284879 v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfce97d30 v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfd5f93c2 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/memstick/core/memstick 0x0b309e7b memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x21c54359 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x429d2896 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x68c68374 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0x6fe03dbf memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0x88a8a3e4 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa5987a36 memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa8149791 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xb7551abe memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc7b8cac2 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc7f1df92 memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc9803226 memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xef19816c memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x01d880b9 mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1d4f425e mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2200056b mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3180824a mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x35b5bf0c mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3a4d9092 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x496bd8b9 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4b768fca mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4c90ca01 mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x640cc078 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6b8c619d mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6f786ddd mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7b8ff8f1 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x82cb38b1 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x886323ee mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x956599b3 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9997ff1f mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9a6ca2e5 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9cd6bd90 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa2b1f700 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb10d451b mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc01e392f mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdaaec466 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xde6b3fa4 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe74e84a2 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe8363aff mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xebfe830b mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xfa61cb16 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xfcc68fa3 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0228036d mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x108924e2 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x15bf6580 mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2ab781ac mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2ebaa28a mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x397a4367 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x42e40c4f mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x51d75df1 mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x581a62fc mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5874ddf6 mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5d5bd8b8 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x60d9680a mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6856f526 mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa6669975 mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xae1693f8 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xae62b0d5 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb8fdc9b5 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xba2e365d mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xbd09fb69 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc25ff191 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc379949a mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd5ffe163 mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xdacc77e6 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xea70d5c2 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xecef6cc8 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xed0a6f14 mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf71aca1e mptscsih_info +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x057d8bcf i2o_parm_issue +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x18ac5a62 i2o_msg_get_wait +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x22874d07 i2o_find_iop +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x2a843bef i2o_dump_message +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x3807a2a0 i2o_parm_table_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x38f1b155 i2o_driver_notify_controller_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x3f71e7a6 i2o_iop_find_device +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x49b37ae7 i2o_msg_post_wait_mem +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x4a1f27c1 i2o_parm_field_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x59850d58 i2o_driver_unregister +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x7b99ff5f i2o_driver_notify_controller_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x7c345e8c i2o_driver_notify_device_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x80139ac8 i2o_device_claim +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x8d562eb0 i2o_exec_lct_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x9af41824 i2o_event_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xb4c00dcf i2o_controllers +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xbcb75797 i2o_status_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xe9383cec i2o_driver_notify_device_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xfb57f230 i2o_driver_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xfc67c3aa i2o_device_claim_release +EXPORT_SYMBOL drivers/mfd/cros_ec 0x86da6c0e cros_ec_prepare_tx +EXPORT_SYMBOL drivers/mfd/cros_ec 0x895a901a cros_ec_register +EXPORT_SYMBOL drivers/mfd/cros_ec 0x97ee5fe0 cros_ec_remove +EXPORT_SYMBOL drivers/mfd/cros_ec 0x9dfa7ca4 cros_ec_suspend +EXPORT_SYMBOL drivers/mfd/cros_ec 0xb557dd3d cros_ec_resume +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x305ac995 pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x7c1c798b pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x0dedc23d mc13xxx_irq_request_nounmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x0e1bc4d7 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x236ebd32 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x3e5333ab mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x5ac92eb5 mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x85ef25be mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x8aaecfde mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x9538b8e5 mc13xxx_irq_ack +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x984dd7f7 mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x9a84b573 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xa807d477 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xe647dd2a mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xefa2ed24 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/tps6105x 0x51528969 tps6105x_get +EXPORT_SYMBOL drivers/mfd/tps6105x 0x5c042d0f tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0xfe1539c6 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/misc/ad525x_dpot 0x3089f00c ad_dpot_probe +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xd56b287b ad_dpot_remove +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x8a05ed90 altera_init +EXPORT_SYMBOL drivers/misc/atmel-ssc 0x41fdac9a ssc_free +EXPORT_SYMBOL drivers/misc/atmel-ssc 0x5cd5df8e ssc_request +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x0e9755b9 pwm_channel_free +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x5a8b82f9 pwm_channel_handler +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x5d5c2951 pwm_clk_free +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x6a5e1f70 pwm_channel_alloc +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x73330c97 pwm_clk_alloc +EXPORT_SYMBOL drivers/misc/atmel_pwm 0xeb7f2c6f __pwm_channel_onoff +EXPORT_SYMBOL drivers/misc/c2port/core 0x33a8d0c1 c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0x775300b3 c2port_device_unregister +EXPORT_SYMBOL drivers/misc/ioc4 0x1435ccd7 ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0x3be93a2f ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x0525d3d5 tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x0b0a4de4 tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0x1205ab63 tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x285aa4a8 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x34d48649 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x39f86aa1 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0x5262b9e9 tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x863b4237 tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xab9a4a82 tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xb2da7412 tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0xca5c45bd tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xe32aa7b4 tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xf56c2420 tifm_unregister_driver +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0x73f807cf mmc_cleanup_queue +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x1427a2fb cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x642e2a80 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xce2d42aa cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x0dd43908 map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x6c7c01bd unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x74f18ea9 register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x76902409 do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x3b186c42 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x48db5d9b lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x43139453 simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x153c86b5 mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/mtd 0xaa681026 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/nand/denali 0xdcf2e895 denali_init +EXPORT_SYMBOL drivers/mtd/nand/denali 0xf486022a denali_remove +EXPORT_SYMBOL drivers/mtd/nand/nand 0x2b901f63 nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0x3e7d5b08 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0x48183dce nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x80ccc8e3 nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0x9ee3b043 nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0xa3ff9587 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x745a7812 nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xdf27729a nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xec526194 nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x5652c036 nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xf099c043 nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x57a31e57 nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xc3a40fcf onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xc5a22830 flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xee28d652 onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xf2632a1e onenand_default_bbt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x0a23f5d4 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x10bee736 arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x283bdae9 arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x322072f9 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x60f7c2c2 arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x9a73e2d3 alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xa4c6d08c arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xd00a43bf arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xd3a5864f arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xdec21747 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x02c3908e com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x4a53d7b9 com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xf89f3fab com20020_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x01c5863e ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x06b54881 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x08984f62 ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x14e60e6d ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x388a9cc1 NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x663b5b2f ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x87d5a887 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x8b26f104 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xb5e81003 ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xc36b30c2 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x1d7f96c5 eip_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x29e36c97 eip_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x59f6f7dd __alloc_eip_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x67d0ea6f NS8390p_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x68f1b194 eip_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x6ed97626 eip_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x888c0b68 eip_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x96630184 eip_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x99c03fd7 eip_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0xd94143ce eip_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0xda938405 eip_open +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0xf72c7ff5 cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x088ca2a4 cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x1bebe673 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x2550728b t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x4070fe96 t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x4918ee97 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x4a11bd92 dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x5fa675b3 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x612cdb89 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x78713b52 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x972e2079 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x988ad814 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xb2f5baf1 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xb49d5f36 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xb9db7602 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xdba124f6 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xf4022b66 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0435ca98 cxgb4_enable_db_coalescing +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1c24c8b7 cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x31a4efad cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3694177e cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3fc554d7 cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x46edbf5a cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4b937cb6 cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7e7d57da cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x85f714c0 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x89d73ed3 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x919dcf33 cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x93993ea9 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xaf611788 cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xaf9c77b3 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb3af98ef cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc2116f70 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc24e2a5a cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xcd848c58 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xcfabc51b cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd345ed78 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd4c4fd1f cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd52f0968 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd7d947ce cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe14a8b73 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe18377c1 cxgb4_disable_db_coalescing +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf27b01e9 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf3726822 cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf4f224f9 cxgb4_select_ntuple +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 0x7b10e498 vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x9196d804 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xa8d60b9b vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xc4b42797 enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x40952d16 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 0xd0fcab81 be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x013b62c0 mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1e7efad2 mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x25362855 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2d24befc mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x444a6f0d mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x57ce7220 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x613f6707 mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6528aa37 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x78e3d7c0 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9212fe37 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x94c96fdd mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9d5c658f mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa200ad43 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb085fd1b mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb0da495d mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc73413c9 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc9593058 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xca723ac7 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcf54c837 mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd0d73562 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe5d0dd7d mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe71a537c mlx4_set_stats_bitmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe77e5805 mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe96fb888 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf6442e26 mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf6d3442e set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x07b5c083 mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x07ba2fd8 mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0d7f3b7d mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0e5df34e mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x19dc5265 mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1b784676 mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1fcfc3d4 mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x204bbbd8 mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x481f8d3c mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4bfffaf0 mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x532630ba mlx5_dev_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6af7cb58 mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x79217f3f mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7b38ac5a mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x838ad7c0 mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9ef4b5ff mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa47c0e5f mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaa97bc94 mlx5_dev_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb8175ab2 mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xba7465e6 mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc98e539f mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcf527944 mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd4a2877f mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe1cc602d mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe277eb55 mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe7c7f71a mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xea3095fa mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x2bd604ff hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x727941f8 hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xbe973dee hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xdc19d203 hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xffdc5fe1 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x284bb6dc irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x3fae73ab irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x499cd83b sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x5023ac76 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x887c318d sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x8e0322bd sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xbbd9f4d4 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xbe3d36df sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xe00c8ff8 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xe75eacd9 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 0xb34a7575 mdio45_ethtool_spauseparam_an +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mii 0x0b918ada mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0x2d0f9895 generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0x436dd70c mii_check_link +EXPORT_SYMBOL drivers/net/mii 0x48c7e4cd mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0xaf0a5f84 mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0xe5e28c45 mii_check_media +EXPORT_SYMBOL drivers/net/mii 0xea79b886 mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0xed7159e5 mii_ethtool_sset +EXPORT_SYMBOL drivers/net/ppp/pppox 0x5ee167a2 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0xd3689990 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe36b512c pppox_ioctl +EXPORT_SYMBOL drivers/net/sungem_phy 0xbf3bfdef sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x3ec9a35c team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0x5c464cc9 team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0x83b627ce team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0xa9ab0d66 team_options_register +EXPORT_SYMBOL drivers/net/team/team 0xbf8cbac6 team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0xcc55a496 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0xed48cca7 team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0xefdc7b1b team_mode_unregister +EXPORT_SYMBOL drivers/net/usb/usbnet 0x72c037ab usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/usb/usbnet 0xab0a927f usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0xe093cfe8 usbnet_link_change +EXPORT_SYMBOL drivers/net/wan/hdlc 0x02d2d232 hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x10513cd4 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x4dd00d57 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x59e779ef hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x7534678f hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x762b3079 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0xa3c6a14a unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0xd18bbbe8 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xd1c983ce unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xf56d21b1 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xf8df485b hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/z85230 0x0a23b894 z8530_sync_close +EXPORT_SYMBOL drivers/net/wan/z85230 0x10c78988 z8530_dead_port +EXPORT_SYMBOL drivers/net/wan/z85230 0x216e319a z8530_sync_dma_open +EXPORT_SYMBOL drivers/net/wan/z85230 0x2524eb4d z8530_null_rx +EXPORT_SYMBOL drivers/net/wan/z85230 0x31ab84af z8530_sync_open +EXPORT_SYMBOL drivers/net/wan/z85230 0x3b0763ff z8530_channel_load +EXPORT_SYMBOL drivers/net/wan/z85230 0x44fe923c z8530_sync_txdma_close +EXPORT_SYMBOL drivers/net/wan/z85230 0x52d47ada z8530_describe +EXPORT_SYMBOL drivers/net/wan/z85230 0x5c80b902 z8530_sync_dma_close +EXPORT_SYMBOL drivers/net/wan/z85230 0x5cd24d29 z8530_hdlc_kilostream +EXPORT_SYMBOL drivers/net/wan/z85230 0x5dae796f z8530_queue_xmit +EXPORT_SYMBOL drivers/net/wan/z85230 0x68670a52 z8530_shutdown +EXPORT_SYMBOL drivers/net/wan/z85230 0x8923f5c6 z8530_init +EXPORT_SYMBOL drivers/net/wan/z85230 0x90eb5ed5 z8530_sync +EXPORT_SYMBOL drivers/net/wan/z85230 0xd4ffebf0 z8530_interrupt +EXPORT_SYMBOL drivers/net/wan/z85230 0xda654b7c z8530_nop +EXPORT_SYMBOL drivers/net/wan/z85230 0xe3d80064 z8530_hdlc_kilostream_85230 +EXPORT_SYMBOL drivers/net/wan/z85230 0xe802784d z8530_sync_txdma_open +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x186dc638 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x08298646 init_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x2927c04d reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xd6e7640c stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x01173c98 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x16fd3ddd ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x3bef2130 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4c94641c ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4e2481d5 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x53358ce3 ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x6e7fe655 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x8ed051d3 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x942959b0 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x94f12d53 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xb99203af ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xd3b7b1cb ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xf406495d dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x2c32fdec ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x498cdd14 ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x6ccbdc75 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8022a09f ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x80e000e1 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8246be6c ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x895f9dc2 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x9dc094bc ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xaf096710 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x0199ec46 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x1aeae5a8 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x27cf1694 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x2d8c20ff ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x410d1045 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4c6ddcb4 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4df9c92a ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4e1380ee ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x619a5603 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x6bce5cd7 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x6e270de9 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x728a8184 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x76c4be7d 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 0xd0fc58ae ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0x067e7c7a ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0x0a9aeb32 ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0x91fc76f5 ath9k_hw_wow_event_to_string +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0xfc75a5df ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x3878543b ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x5f1cb5ca ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8ca2dabc 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 0xf0476fd4 ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x09ccf6f3 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0c2fd7fd ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0d659ac6 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0eed3ad7 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0f98b18c ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x11db5043 ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x11f5c787 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x15f82ce2 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x176e081c ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x178a35e6 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x18a3b165 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x19f0c779 ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1c03291b ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2386883c ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x244aa8db ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x24fdb969 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x309c03e2 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x321fe8b0 ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x37abc284 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x39452683 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x39ab3235 ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3ab5edd0 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3b7ff09c ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3b90ffad ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3d77f92e ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3ed64cfa ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4114027d ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x446709f5 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x44d5a698 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x456d49fb ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x47af6555 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4bba8438 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4c7fc3c3 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4dbe8ebc ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x505bef2c ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5aaf80a0 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5b404f6e ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5feda9e7 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6098724f ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x696f668d ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x710be526 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x75455494 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7816f686 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x78a8e8bc ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7d3a3793 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7d5396b2 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7d6f606f ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x807d1082 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x816e167e ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8576ab11 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x86cfd8da ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8c90fbaa ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8dacff91 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8dcf800e ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x92897e45 ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9787dfb3 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x98195830 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9ac754ea ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9b3aa607 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa0d9ca1c ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa16bb19d ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa34b2ec2 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa3ab03c3 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa75820f4 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xac07752b ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xac0b34ce ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xad136d62 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb522aaf3 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbffd338c ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc87caa0b ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc8d646ba ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc9b80377 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc9bf7a0c ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcf267ea9 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd4fa0575 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd76988e7 ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xda51fb08 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdb17a817 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdfa45644 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe2615e12 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe516aad9 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe60ed77e ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe7280cc1 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe86fdb8f ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xea291188 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeb2b9081 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeb67a07f ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xee77fd71 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf1174679 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf22d2330 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf3dd03fe ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf48d2a29 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf5d00c77 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfa22794c ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfbe78d00 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfc6f9762 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfdb0aa4b ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xff7a0809 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/atmel 0x1d47a77a init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0x39a14504 atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0xdb3fc81e stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0xb0be17cf brcmf_sdio_remove +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0xfecf8842 brcmf_sdio_probe +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x1e0e1518 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x2d9fd589 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x2dc227f8 brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x56a5ce1d brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7086ee9c brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7b53b12f brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x8098f936 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xb608839b brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xbc8039b6 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xc28dcef0 brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xc4d4b9fc brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd2b2ddb8 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xfb2bf426 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xfd1b189d brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x10c7f744 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x12f98b95 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x2c77a6a4 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3309a16d hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3e7c1c2a hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x442f18eb hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x443b8850 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x450a20e3 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5e15de28 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x64083c77 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6a8724e4 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6b454357 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6b764862 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x82119450 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x859fadb7 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8bd074b6 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x9834a91e hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x9d42f199 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa81b72aa hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xab78e3e0 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xae6a61d0 hostap_init_ap_proc +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 0xbf66a127 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xdff1b327 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf01d9bb1 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf599bb1b hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x002796d6 libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x13cfc83d libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1c525c59 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x240df2b8 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x31ba11fa libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x4154e5c5 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x46678469 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x46df2029 libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x74c9b24c libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x7a1c7bc7 free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8cee2a70 libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa752592e libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xba0d0bd4 libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xbb6a7e95 libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xbf071035 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc5a75e28 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xce1eea7e libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xcfa043ea libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xdf8125ac libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe9e72799 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf00b3980 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x013f05d8 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x02353d57 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x04167b99 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0afdcb11 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x11de6fa3 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x12349d65 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x126bed17 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x12ef2349 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1624b55d il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1d957bbe il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1eaf1255 il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1f2f1164 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x20da2c39 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x28ee8b6e il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2b2366b2 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2c16bc23 il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2d5d56d3 il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x32fe81e1 il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3b67cff9 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3c614fdf il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3d265b5e il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3d822fe2 il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3e9579cf il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4013ff77 il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x41e797bf il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x451b5508 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x49465415 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x49cc4bf2 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4c29989a il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4e3a51f1 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4ecba803 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4fc63ae9 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x55712011 il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x601dc407 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x606d1215 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x64ff7a2e il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x69396528 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6d9f5fe7 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x785b292f il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7873228b il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7c013640 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7c9e12ab il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7ce921cb _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7e26d000 il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x86d20e8a il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x876c17bf il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x88cac0a0 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8a25bb0a il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8c1fb5e4 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8dad8b8c il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8e27f68f il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x915217db il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x944973ec il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x95e6c5e0 il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x98220bd5 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x98b516f4 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9cc57c31 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9edc6ecf il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa042f6ec il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa35dee34 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa8b9d0cd il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xae497ffc il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xaedff37b il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb0086522 il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb1348b81 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb16feb06 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb21cf689 il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb642a051 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb6b3ddd3 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb854921b il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbaa3f3cd il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbbc1d67b il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbe73ad89 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc11c4b9e il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc1934a43 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc68f630c il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcae787a1 il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcd173d5d il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd0722123 il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd158ea08 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd1d261c9 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd25bf5db il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd6355b80 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd63c5cae il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xda6f4cc5 il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe0e31c3c il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe19bde13 il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe21fad13 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe277f4ac il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe2e7e26a il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe4721800 il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe829e1a2 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xea3161d4 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeb8bcaf2 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf449480f il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf6fe4db5 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf98c4650 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfb64b587 il_clear_ucode_stations +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 0x0e7bc05f __tracepoint_iwlwifi_warn +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x201337b4 __tracepoint_iwlwifi_dev_tx +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x249e4b06 __tracepoint_iwlwifi_dev_rx +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x36dcef55 __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x4919d1a5 __tracepoint_iwlwifi_dbg +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x67381a2a __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x79e9bf26 __tracepoint_iwlwifi_crit +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x7edec07d __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x8bfcc307 __tracepoint_iwlwifi_info +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/iwlwifi/iwlwifi 0xda36f3a4 __tracepoint_iwlwifi_err +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x145be57c orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x168d85e1 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x17478dac orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x307a41ae orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x3dfd4d30 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5a16769f orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x8f9a5418 orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x9bbd6d49 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x9d0b87b4 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xa7eeeaf8 __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xac93dcd1 free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb373d9cb orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xbcc653b1 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xcb62ea04 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xcc1cab10 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xe2e56d4e orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xeafb1559 orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/btcoexist/btcoexist 0x73c1f586 rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1b813a67 _rtl92c_phy_dbm_to_txpwr_Idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1ceebee0 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1ec1cf2e rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1f0bb49d rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x20a43379 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2251b2d3 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x268edd64 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x274a4412 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x36c28236 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x40f1271c rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x43f0a082 rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4ac21837 _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4c39e5c8 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5fce92a3 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6ad479cb rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6b14d71f rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6e734b3f rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x751eb3d7 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x776ee36f rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x79efb05e rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7bc31bab rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x85169d25 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x869e47e8 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x94a80035 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x983001ec rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9c31e65c rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9dc20cb1 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa014ba23 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa118ef9f _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa9aa8c3a rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xaaf2ecd1 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb03e7dc2 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb4c0dca6 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbffe7c76 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc377c564 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc5030bd1 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcc8a744b _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdd3eeba3 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe2d936e9 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe56a5053 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xee8d707a rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x066bb657 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x078adbfa rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x103bcd89 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0xc24c6cde rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x135bcde2 rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x25cd30a1 rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xbaf988b2 rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xd129f68b rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00d2f126 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0cec0bce rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x14fcd300 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2205ede4 rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x50c99a9b rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5c75478d rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x660bce24 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6eafc5e7 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x87491315 rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x89848bf0 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8ff4e20a rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x93f5e5de rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xbfce9a3e efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xbffbe1cc rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xcbfd2b61 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xda32f8be rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xdc04ef83 rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe1025404 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xea8b69eb rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf8bcbcf4 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x45706ea1 wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x8271c6ca wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x913c4358 wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xb83f85ed wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/nfc/microread/microread 0x0df39db5 microread_probe +EXPORT_SYMBOL drivers/nfc/microread/microread 0xb184b22d microread_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x1d8c259a pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xa95bf79d pn544_hci_probe +EXPORT_SYMBOL drivers/parport/parport 0x00147d4c parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x0bcc496a parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x0e90b490 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x1069f395 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x24564172 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x2a8622f0 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x2c6279f4 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x3a472710 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x4fa40bec parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x62602e8f parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x6545a01b parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x6df63b10 parport_release +EXPORT_SYMBOL drivers/parport/parport 0x7b096b77 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x7d5755bb parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x81bfcc21 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x91c3fcb6 parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x9b5977a7 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0xa0367a37 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0xa47f9fef parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0xacff8391 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xb23e468d parport_write +EXPORT_SYMBOL drivers/parport/parport 0xb8bf62c0 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0xbcca273f parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xc098569b parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0xd3cfb131 parport_read +EXPORT_SYMBOL drivers/parport/parport 0xe3c8a034 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xe823d9aa parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xee236be1 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0xefae5eb2 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0xf116d756 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport_pc 0x18d8fcca parport_pc_probe_port +EXPORT_SYMBOL drivers/parport/parport_pc 0x23137eea parport_pc_unregister_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x08f31261 pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x0faeea4d pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x2e7d47a0 pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x41359e89 pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x45318e2b pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x4f6bc896 pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x70dc298f __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x7223d1b1 pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x779c3f75 pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x7e6b650d pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x9ec23275 pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x9fe0ef3f pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xb0d7cd2c pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xb13f1050 pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xb2557e23 pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc23cd1bb pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xdc630543 pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe6a2c835 pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xeb89f85d pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x06d71a65 pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x0787c2e1 pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x36586490 pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x4adb30af pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x6c0bfa81 pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x714274c4 pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xaa2a8638 pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xad7b5c7e pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xd37dd167 pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xdd4d0860 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xf801dc36 pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x006d78ca pccard_nonstatic_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x0e76d678 pccard_static_ops +EXPORT_SYMBOL drivers/platform/x86/intel_ips 0xd32b0b5b i915_bdw_enabled +EXPORT_SYMBOL drivers/platform/x86/sony-laptop 0x5bb1e117 sony_pic_camera_command +EXPORT_SYMBOL drivers/pps/pps_core 0x8e296e74 pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0xb5eb810f pps_register_source +EXPORT_SYMBOL drivers/pps/pps_core 0xdd650d2e pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0xea7f3275 pps_unregister_source +EXPORT_SYMBOL drivers/ptp/ptp 0x9ba37e34 ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp 0xf75d75c9 ptp_clock_unregister +EXPORT_SYMBOL drivers/ptp/ptp 0xfa751f3a ptp_clock_event +EXPORT_SYMBOL drivers/ptp/ptp 0xff5f8ed0 ptp_clock_register +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x134cee51 pch_ch_control_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x135ef083 pch_tx_snap_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x1c92207f pch_set_station_address +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x2f1b9187 pch_src_uuid_hi_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x391f1844 pch_ch_event_write +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x820d8867 pch_rx_snap_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xb0469eff pch_ch_event_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xcdc3b2b2 pch_src_uuid_lo_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xcf37f613 pch_ch_control_write +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x379bd23b rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x59748bb9 rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x6018cbf7 rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x9c43cba7 rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xa783362a rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xd02e5d6d rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xd23ceb9d rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xde3764c5 rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xe55a4f09 rproc_vq_interrupt +EXPORT_SYMBOL drivers/scsi/53c700 0x186bc7a7 NCR_700_detect +EXPORT_SYMBOL drivers/scsi/53c700 0x3d9cece0 NCR_700_intr +EXPORT_SYMBOL drivers/scsi/53c700 0x4d17dd52 NCR_700_release +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x1d4784de fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x294750fe fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x2aada1d4 fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x325cb5f2 fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x3a7cf9a8 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x58312d51 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x60f462b8 fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x7c95242d fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xb9b6f164 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xd333fac7 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xe71471cd fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xf739e613 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x023b69ea fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x027afbe8 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x07a9a3ad fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0900bad2 fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0abbff72 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x11f30a56 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1a802c7b fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1b83bb9c fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x237a7319 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x26ded42c fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2e74125c fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2f7816fd fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x35f4ad04 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x398771bf fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x417b4a59 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x44b58454 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4bf615a3 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4f4efd8c fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x50f3140e fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x55c85f68 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5f54a1d7 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6903fd80 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x698c3059 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6c52b194 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6f955038 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6ff0f2f5 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7f7b95a5 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x80175f90 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x851f55f6 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x85a9a991 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x861ab650 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8faa0cc1 fc_change_queue_type +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xae90580d fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb29034e1 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb39ed893 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb45e79ba fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb74355af fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbc772951 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc34eb81b fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc61ba542 fc_change_queue_depth +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc663400f fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc767ea23 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xca581dd5 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xce0a7d91 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdf846804 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe0b54a33 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe1a3e6bb fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe3966adc fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe70e3885 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xee58782f fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf50fe9fb _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xff46b13b fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x0bad5446 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x3f496f3b sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x51bddc2a sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xb3b4fe66 sas_wait_eh +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2250c66e mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2cca511d mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x512c956d mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0240217a osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0ecd5c48 osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x13d85513 osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1b3d9ecb osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1d6c911a osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2471391a osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4168627c osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x41fd784f osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x43c46df1 osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4e61b419 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x55a9b3c6 osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x60d28d7f osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6391de4b osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7027ecbe osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x72f062e1 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x74aa70dd osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x75fa7a52 osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x765ffe4c osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7e8f7b75 osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x870888b6 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8a88c704 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8c092525 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x93aa5e11 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa52c0af1 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa6512ff1 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb1009192 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb2b0001f osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb812043a osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xba7f7e62 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc09c7581 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc31c9525 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc37513e2 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xdd2ef304 osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe44e4b45 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf5319a83 osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xfdabc462 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/osd 0x226e891b osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x56c59052 osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fe41b04 osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0xc49bd63a osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xd250434c osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0xfec33170 osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x006600e7 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x237d718f qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x43421740 qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x458015c8 qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x5f13f363 qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x5feb2cfc qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x70d51d6f qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x8a23fb31 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xb3326d9a qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xbf9c711a qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xc8d52f65 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x6125b444 qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x70037542 qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x8c1ee16e qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x995c8c41 qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe750eb36 qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe76b3b20 qlogicfas408_get_chip_type +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xed1f666d qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xf2b95199 qlogicfas408_setup +EXPORT_SYMBOL drivers/scsi/raid_class 0x393c2b58 raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0x9ea2d362 raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0xd7fd86bd raid_class_release +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x1cb13715 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x35607d81 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x38775f3d fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x5a5089a2 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x5d914e17 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7e23eb93 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x80fca855 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x93db40f8 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xa06098c6 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xa46bf610 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xbe581013 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xcb2b8bd5 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe34a7ece scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x052ab442 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x09e6e4d0 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0ccdf18b sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1008cfe3 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1e904980 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1ffc05db sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3897e8cd sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4f3fc81f sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x514163ef sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x682a6c73 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7c3802ff sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x83454983 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x86747f10 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8db490c5 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8f30ae74 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9adabb15 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb7dcbce1 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xbb1e1990 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc3329b9d sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc72b63de sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xcb9fcfbc sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xcc45513f sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd1fe6eb6 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd82828de sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe5781e59 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe7aeeb52 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe9095b8b sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf56c65e1 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x2379bc80 srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x5e7056ab srp_rport_get +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x63be1eae srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xf06dda47 srp_rport_put +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x6caa7e1b ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x78b6d13b ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xae1b322f ufshcd_runtime_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x07bd6d32 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x1cecd01f ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x1e1e6d02 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x2bcb113f ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x2dd1dd6f ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x3daf8c7f ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0x46366f10 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x4754a647 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0x4ba50f79 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x4c92220f ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0x8cff0820 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0xa28f2454 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0xad64260a ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0xb4ce4088 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xc68d9547 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xe66a0d04 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xebcf2b28 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0xecd34f92 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0xf4c8072e ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0xfd9f6219 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0xffbcb2bf ssb_driver_unregister +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x78954d6d fwtty_port_get +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xb47527a8 fwtty_port_put +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x1efe0c1a adt7316_remove +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xfcd3a36c adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x893c23ee ade7854_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xe49825f3 ade7854_remove +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x09276ca1 lnet_net2ni +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0bce7eef lnet_counters_get +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1366b7ac LNetSetLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x17e5b010 lnet_extract_kiov +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 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 0x30577499 lnet_kiov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x33202a6c LNetGetId +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3558e584 lnet_iov_nob +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 0x4bb00492 lnet_copy_iov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x4f9cb871 lnet_extract_iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5811a721 LNetInit +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 0x684b19e8 lnet_create_reply_msg +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 0x850e9717 lnet_set_reply_msg_len +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x854ab844 LNetEQWait +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x87b750d9 lnet_notify +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x8a3064f2 LNetSetAsync +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x8e5d8bb5 lnet_register_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x991b9c60 lnet_unregister_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9abb39ee lnet_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9de986d3 LNetEQAlloc +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa8c2760b LNetFini +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 0xab913a69 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 0xbc8b39aa lnet_set_ip_niaddr +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xbf0760a2 LNetMEAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xc1d292b8 lnet_copy_iov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd0233214 lnet_finalize +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe1acfab7 the_lnet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xee06f40e lnet_copy_kiov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xefbeca54 lnet_copy_kiov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf1b316bf LNetSnprintHandle +EXPORT_SYMBOL drivers/staging/lustre/lnet/selftest/lnet_selftest 0x078db139 lstcon_ioctl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x19504443 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 0x43fa5562 seq_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x4d92a708 seq_client_get_seq +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x571c6e76 client_fid_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x708cf05b seq_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x826f6d8a client_fid_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xae61cff5 LU_DOT_LUSTRE_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xc997a02f LUSTRE_SEQ_SPACE_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xe487ef7a seq_client_alloc_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xecee2727 LUSTRE_SEQ_ZERO_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x557d828f fld_client_proc_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x61b3bf96 fld_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x996ea559 fld_client_add_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xab31fa6a fld_client_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xc95d714b fld_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xfb5c2ae8 fld_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xfbeea278 fld_client_del_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 0x03387ca6 cfs_curproc_groups_nr +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x041282f5 upcall_cache_flush_all +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x04a5b175 libcfs_kkuc_group_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x04d3ce6a lbug_with_loc +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 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 0x108d2e2b cfs_percpt_lock_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x117c8a95 cfs_cpt_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x12426266 libcfs_run_lbug_upcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x12e67c62 libcfs_sock_write +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 0x19b06de7 cfs_hash_size_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1a60d439 cfs_parse_nidlist +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1d26b208 libcfs_sock_listen +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1d5a3928 cfs_timer_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x23f6f445 cfs_restore_sigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x24ff8613 libcfs_sock_abort_accept +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2557589f cfs_hash_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2589f0af cfs_hash_rehash_cancel_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 0x29c0cab1 libcfs_sock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2b1e0458 cfs_get_environ +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 0x30986343 cfs_range_expr_parse +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 0x3791e0c9 cfs_hash_bd_add_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3834f243 proc_call_handler +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 0x3962e3ee cfs_race_waitq +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 0x3dc22a8c libcfs_sock_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3ea730c0 cfs_gettok +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 0x4087f890 cfs_hash_del +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 0x41ab33a1 libcfs_ipif_free_enumeration +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4268c6c1 libcfs_sock_connect +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 0x44f07cfc cfs_pause +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x47fdb4d1 cfs_timer_is_armed +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x48f163c6 libcfs_str2anynid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x493a5cb4 upcall_cache_put_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4947bd6b cfs_hash_dual_bd_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x496b3c4f upcall_cache_get_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4a727e2d libcfs_kkuc_msg_put +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 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 0x5b9b1c8a cfs_hash_debug_header +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 0x5d3be65a cfs_crypto_adler32_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5d73c3e3 cfs_expr_list_free_list +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 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 0x65e2b9d3 cfs_hash_rehash_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x66136d2d cfs_timer_arm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x67398404 cfs_wi_sched_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6756a801 cfs_hash_bd_finddel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x68497dbf cfs_cpt_number +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x687788c4 cfs_percpt_lock_free +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 0x6cf325d6 upcall_cache_flush_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6dfa9ea1 cfs_crypto_adler32_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6e6af71c current_is_32bit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6f928e1b libcfs_debug_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6ff4020b cfs_hash_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x704c9cd2 libcfs_sock_setbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x71d7b2fa cfs_hash_cond_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x71f662a3 libcfs_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x74dde658 cfs_hash_dual_bd_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x752858fb cfs_cpt_table_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x75a99d2f libcfs_sock_accept +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7a3d49ae cfs_expr_list_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7b0b748a cfs_ip_addr_parse +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7c7986cf waitq_wait +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 0x842864cd cfs_hash_dual_bd_lookup_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x857aaea7 libcfs_register_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x89e0937b cfs_hash_for_each_safe +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 0x8eef69ba cfs_hash_for_each +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8f12bb52 libcfs_log_goto +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8f45f10d cfs_init_timer +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x904c4251 cfs_hash_getref +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 0x9548a4f1 upcall_cache_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x95620e8c cfs_wi_deschedule +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x978b5836 cfs_hash_rehash_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x97ab5498 cfs_hash_bd_peek_locked +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 0xa0ddfce7 cfs_hash_bd_move_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa2b68b2a cfs_array_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa4522d96 cfs_hash_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa4d43b13 cfs_hash_del_key +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 0xa9dc74e2 cfs_trace_copyin_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9eae690 cfs_str2mask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xaaf59b75 cfs_cpt_set_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xab887583 init_waitqueue_entry_current +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xac73969f cfs_crypto_hash_update_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xad019238 cfs_str2num_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb43456f1 cfs_percpt_lock +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 0xb8897bad cfs_percpt_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb9c87f94 cfs_hash_bd_lookup_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbada117b cfs_cpt_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbb59ad6e cfs_hash_findadd_unique +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbb9cb508 cfs_curproc_cap_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbd5d492e cfs_timer_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbefb6c3c cfs_hash_dual_bd_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbf013175 cfs_hash_rehash +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 0xc2911d96 cfs_expr_list_match +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 0xc3eb614e libcfs_ipif_query +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc47433a6 cfs_capable +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc49b1c62 cfs_percpt_atomic_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc53890de add_wait_queue_exclusive_head +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 0xcbab8493 schedule_timeout_and_set_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcc195787 cfs_hash_dual_bd_finddel_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 0xd2037eb5 cfs_hash_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd217e869 upcall_cache_downcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd2db9312 upcall_cache_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd6a52be3 libcfs_printk +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd6d6fd4a cfs_hash_debug_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd9541990 cfs_strncasecmp +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd96f406d cfs_cap_raise +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdb92f14c cfs_hash_add_unique +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 0xdffc951d cfs_timer_disarm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe1224965 cfs_hash_for_each_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe2da56ad cfs_hash_hlist_for_each +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe3bf6897 cfs_percpt_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe6555032 libcfs_ipif_enumerate +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe7202360 cfs_hash_bd_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe7b54314 libcfs_arch_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xea8b46c8 cfs_hash_dual_bd_findadd_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xec1f56d5 libcfs_str2nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeca4d884 cfs_hash_create +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 0xedf3a25a cfs_timer_deadline +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xee28e153 cfs_hash_for_each_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf0fb3eed libcfs_sock_getaddr +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf2c02048 cfs_cpt_bind +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf372d1c2 cfs_firststr +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf38927af cfs_hash_bd_del_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf40279f5 upcall_cache_flush_idle +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf440bb38 libcfs_kkuc_group_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf79d9217 cfs_hash_for_each_nolock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf8a8644b libcfs_id2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf8efb8c5 waitq_timedwait +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf94025d1 libcfs_str2lnd +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfd20b65c libcfs_sock_getbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfe565fa9 cfs_crypto_hash_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfe5c8c6b cfs_hash_bd_findadd_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xff0f98a6 libcfs_debug_vmsg2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x159835fe ll_osscapa_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x1f0c573e ll_stats_ops_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x2152b5da ll_iocontrol_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x71ad4669 ll_direct_rw_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xcd3cde92 ll_iocontrol_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x06465a20 lov_stripe_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x1c10657d lov_device_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x309eeba8 lov_lsm_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x37864f1f lov_stripe_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x6a332b53 lov_read_and_clear_async_rc +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xfa918fde lov_lsm_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x3694334e fsfilt_get_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x388b3263 lprocfs_counter_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x552e95c1 l_dentry_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x80854377 fsfilt_register_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x91edfb23 lprocfs_counter_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x927acae0 pop_ctxt +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x9565aff7 push_ctxt +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xa0893cd8 lustre_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xa5992178 obd_memory +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xb3d4d0cf lprocfs_stats_alloc_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xb4f8ee63 lprocfs_read_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xcb791a65 fsfilt_put_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xe08f0b07 fsfilt_unregister_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x14a47f31 it_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x9c22b84f it_open_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0xb57d8447 it_set_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0xf46a886f it_clear_disposition +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 0x035852d0 lustre_swab_llog_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x037e3e18 lu_env_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03fd6222 lprocfs_rd_numrefs +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 0x05b2b687 cl_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05f84e88 LU_BUF_NULL +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0630d1ae lprocfs_rd_u64 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0667099a cl_lock_at_pgoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x067ffcf6 llog_open_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x06c8a5e2 cl_io_lock_alloc_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07aa68bb lustre_swab_lustre_cfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x082a650a lprocfs_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x083942ff class_del_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x096f26f0 cl_req_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x09830730 lu_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0a2eb285 class_fail_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0a55d344 cl_io_read_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0a66cf79 llog_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0a9ce5db cl_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0adb86e3 cl_page_list_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b2e5124 cl_page_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b961fe8 lu_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0bf8776b llog_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c1f0b04 lu_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c5b49e6 cl_lock_closure_build +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c63e02b cl_io_submit_rw +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0cf99bff dt_acct_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0dcc33ec lu_ucred +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0df0a724 llog_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0e55fb28 cl_io_prepare_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0f3f9406 lu_site_init_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0fa3e6de llog_cat_init_and_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0fe91547 obdo_to_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10b30c9d lprocfs_init_ldlm_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11495519 lprocfs_write_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11fe6f62 cl_page_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x13080ce9 cl_page_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1431d531 cl_page_gang_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1491dc30 lu_context_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x14aafc76 class_num2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16195362 cl_io_is_going +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1678bc30 dt_record_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16b424b9 lu_context_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x170aec49 lu_object_assign_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x17260880 obdo_cpy_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x17a64e83 cl_type_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x17f6183f lustre_idmap_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x18fdfe2a cl_page_make_ready +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x19928dd7 class_conn2export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1bee4c2e class_config_dump_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1dd8197d lu_device_type_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1eb6f402 cl_object_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ed07bc0 dt_declare_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1eeef3c6 cl_io_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f19126d cl_io_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1fff16de dt_store_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21307495 lu_buf_check_and_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x217f644c dt_try_as_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21c6ab61 lprocfs_rd_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x221826f1 class_parse_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x22ed5785 cl_page_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x243cae77 cl_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x245b821d lprocfs_obd_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x24d974d8 class_export_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2547efae lustre_uuid_to_peer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x256878a2 lprocfs_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x259ebac6 obd_alloc_fail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x263f3da0 dump_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x269042fe lu_context_enter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2693f679 lu_object_locate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x26b21555 cl_lock_unhold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x275cdc7a cl_env_reexit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x27e0a1e7 lu_context_key_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x296d4f52 llog_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x29774f03 cl_page_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x297c3c47 lprocfs_seq_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x297cf5e0 class_handle2object +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x298793db llog_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ae1cd79 kuc_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b3f9e11 cl_page_find_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b4c48e9 server_name2svname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b90ca1b class_new_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2bb213b6 cl_pages_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2bb28573 cl_io_iter_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2cc700dd cl_page_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2cf6fb56 lu_object_put_nocache +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2d3895fe dump_lsm +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ea680ee cl_lock_user_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2fbcdbba cl_object_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x30196d9d cl_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x30236997 obdo_to_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x30b01305 class_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x316706f6 cl_env_nested_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3287674f cl_lock_discard_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x347a5d0c cl_lock_enqueue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x34925169 cl_lock_extransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x35526d19 lprocfs_oh_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x35a6e3a8 cl_page_vmpage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x36c52d91 class_conn2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x36db630e cl_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3719f0d7 dt_version_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x371c280e cl_lock_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37ed6e4b at_early_margin +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37f78740 cl_object_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3802713c llog_cat_cancel_records +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3824c506 cl_req_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38fb0c90 class_match_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x39051976 cl_io_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x39171c26 cl_page_list_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a005065 dt_otable_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3ad3a11f class_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b379585 lprocfs_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b7c5132 cl_io_iter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c23bf69 cl_env_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c972d61 cl_lock_nr_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3cfddce3 cl_io_submit_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3e273427 cl_lock_modify +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x422e31cc cl_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4250941d lustre_register_client_fill_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x42f45a97 class_new_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x433820b1 cl_unuse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x43d4ae61 lu_object_anon +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x43dba309 class_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x43e5f9c9 local_index_find_or_create_with_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44d33f70 cl_env_nested_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44e41abb lustre_posix_acl_xattr_filter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x473bffa9 lu_dev_del_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x474ed5bd lustre_swab_ll_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4760779c lustre_idmap_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47b35f7d statfs_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47f72bcc llog_copy_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x484d326f cl_sync_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x48866a8d lu_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x48dbf081 cat_cancel_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x493b353a llog_add +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 0x49c37407 cl_req_page_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4a29a7e3 lprocfs_rd_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4a313800 lprocfs_rd_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4a870ee8 lustre_common_put_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ac58713 obd_connect_flags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ae36ce9 cl_lock_get_trust +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4bda218e cl_page_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4bdbfa7f lprocfs_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4bf5dd12 md_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c7a4e32 lprocfs_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4cabe355 llog_declare_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d13458b kuc_len +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4eae77e8 llog_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4fba4346 dt_directory_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x507eb50b llog_cat_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50c7fc36 ptlrpc_put_connection_superhack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5126066a class_config_parse_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5324ce05 cl_page_cache_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5373416a cl_2queue_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54722564 cl_env_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54885f87 ldlm_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x548aec00 llog_cat_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54f13711 lprocfs_single_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x558bec27 obd_ioctl_getdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x56077b2a lu_object_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x563e96bc lprocfs_seq_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x564e9d44 init_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x56808b32 lprocfs_rd_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x570d09ae lustre_swab_lu_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x575ff7d1 lprocfs_rd_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x58c624f5 lprocfs_at_hist_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x58ee863e lu_context_key_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x598e6a3a lprocfs_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5999bea7 cl_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a158b23 lu_context_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a20d896 obd_memory_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ade4e2b class_conn2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b47e86f lu_kmem_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bc022c5 lprocfs_dt_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5beffb1a lprocfs_rd_num_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d34ae0d cl_lock_mode_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d3f5aa2 lprocfs_stats_collect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d6dd0bc lu_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d707a17 cl_lock_mutex_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5eb1be34 llog_cancel_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ed188a9 lprocfs_add_symlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5f17c725 dt_txn_hook_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fe97b73 block_debug_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x60c2bcfa cl_page_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x60c9311c local_file_find_or_create_with_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x60f0787f lu_context_key_register_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x61658802 llog_thread_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6169ddb0 class_unlink_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6177e7d8 llog_cat_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x618a84b1 cl_lock_hold_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x627fa347 cl_lock_user_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631a518d mea_name2idx +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631fd7b9 lustre_ext_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x634a02b2 obdo_from_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63637c63 cl_lock_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6420cfab cl_page_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x64291471 cl_sync_io_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x64d8d09a llog_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x65499e73 capa_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x65d2b993 class_handle_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x65e1870d 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 0x67428fce lprocfs_oh_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x675359eb dt_index_walk +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x677fd7f9 proc_lustre_root +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67977b42 lprocfs_remove_proc_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67a90622 la_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67dc223a lprocfs_remove +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6890d175 lustre_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x68deda4b cl_conf_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69052697 dt_store_resolve +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x690f5382 cl_2queue_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6984a5b5 lu_site_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69c42114 at_min +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6a4e5107 cl_lock_mutex_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6aba301a class_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6aee7136 cl_page_list_splice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6b605304 cl_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6bb6d421 lu_buf_realloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6cb2c706 class_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6cc9f16e dt_txn_hook_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6d3d8921 cl_io_commit_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6da2d59f lustre_in_group_p +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f3e6225 dt_quota_slv_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6fa0f3de llog_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7079908c cl_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7183ca18 cl_lock_mutex_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72ddee4c obdo_le_to_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72f26132 cl_page_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x73bbde53 capa_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x73f69bdd class_detach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x742559b1 class_unregister_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x74641182 dt_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x747f45f2 cl_page_list_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x748eed59 local_oid_storage_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x752f71a8 class_get_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x75307daf cl_env_implant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x756a77f3 class_parse_nid_quiet +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x75c02323 local_file_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7605e653 lprocfs_wr_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7669206b obd_devs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x769718aa cl_page_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x76d08020 lu_object_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x76fdd07f cl_page_is_vmlocked +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x771c3695 class_register_type +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 0x787934ca cl_io_sub_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x789796a1 obd_zombie_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7916cc79 class_exp2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7ae87947 llog_cat_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b4fc57b at_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7d9d464c cl_lock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7da429f3 cl_io_rw_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7e23fe86 lu_dev_add_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7edcafa0 cl_env_reenter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7ef66ea0 lu_ucred_assert +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fad7291 raw_name2idx +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fdaa2a2 cl_page_discard +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 0x80801cad lprocfs_nid_stats_clear_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x80a7b293 dt_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x80feb5e0 cl_io_rw_advance +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8170f419 cl_page_list_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81742d89 obd_ioctl_popdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8231afe2 lprocfs_init_mps_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x82ce1118 cl_lock_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8315f877 class_handle_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x831f656c class_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x833d7968 cl_object_kill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x83cab1e2 local_oid_storage_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x84447bf6 dt_index_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8489f086 obd_alloc_fail_rate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x849dbf7b dt_locate_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x849e5385 obd_update_maxusage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x86aa0833 lu_context_key_quiesce +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x878bbd38 cl_lock_state_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x87a9f30d class_export_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x88422224 llog_cat_declare_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x88ed768d llog_osd_put_cat_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x89aab7a2 cl_lock_ext_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x89d529a1 lu_context_key_degister_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8a03b8ab cl_page_list_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8a2157ec lprocfs_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aa2c358 lprocfs_dt_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aa3c367 lu_context_key_revive_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b1c5ba6 cl_lock_delete +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 0x8bb9b937 obdo_from_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8c88ee9e dt_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d7454a1 class_name2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d9bd8c4 cl_page_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8defc1c3 lprocfs_nid_stats_clear_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8df3a054 dt_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f67314c obd_dump_on_eviction +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f71e071 cl_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f964d63 cl_2queue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x906dc001 cl_lock_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90706a4b cl_object_attr_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9105eb0a class_config_llog_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x910b7e20 lu_context_key_revive +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x91bfcd5e cl_page_at +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 0x93ecf997 cl_object_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9412799e cl_object_has_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x94c00b0a obd_export_evict_by_nid +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 0x95a83eae cl_lock_weigh +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95aa35ac llog_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95ad0a9d llog_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95cb3db7 llog_declare_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95e8a4ed obd_llog_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95ec998a lustre_groups_sort +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x969aee36 class_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x96a97a1b cl_lock_is_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x96daf920 cl_locks_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x972faf96 cl_page_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9741f245 cl_page_clip +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 0x989bdcb9 lu_object_invariant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x98a25a15 lu_device_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x996086b7 lprocfs_free_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99f001bc lprocfs_free_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b07eef4 llog_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1ed9d8 obd_jobid_var +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9c8f692b cl_lock_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9cb4dff3 cl_lock_closure_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9d09891c cl_lock_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9d9b6dfc lprocfs_rd_kbytestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dbb17b6 lprocfs_dt_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9e348bc2 cl_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9eaead4b llog_cat_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9ed68812 cl_2queue_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f52be00 lu_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa0b404eb local_index_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa14a505b cl_2queue_init_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa209607a lprocfs_counter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa21c5ea1 obdo_from_la +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa28d30e0 cl_sync_io_note +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa29371ff cl_lock_descr_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2ea996d lu_context_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa3224cfa lprocfs_rd_conn_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa38971e8 dt_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa3d48140 cl_lock_enclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4331ad7 dt_txn_callback_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4c2e02c cl_unuse_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa513f7e4 lustre_groups_from_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa562d4fb lu_object_find +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 0xa704bf9a lustre_idmap_lookup_uid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa84d9ddf llog_exist +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa8738f12 cl_page_list_move +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa89d5159 capa_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa8ce6b83 llog_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa8d4e41e cl_lock_is_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa8e6df29 cl_io_loop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa946d7c0 cl_use_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa9f49874 lprocfs_rd_server_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa21b7a0 lustre_register_quota_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab2b5441 lprocfs_init_ops_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab8b32df lprocfs_add_vars +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabaad8d3 lustre_end_log +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 0xad8534ec class_disconnect_stale_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xadca221a cl_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaeb08fee cl_page_unassume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaee2577e llog_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf341588 lu_context_key_degister +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf88001a class_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xafa82171 cl_page_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb01963a6 class_uuid_unparse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0696faf lprocfs_free_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0fb9886 cl_lvb2attr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b89b6d class_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb23d939b lu_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb26b66b8 dump_lniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb336ba05 cl_req_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb41998cd lustre_cfg_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb614569e lprocfs_register_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6ba5dd5 kuc_ispayload +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6c9651c class_find_client_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb70037cf cl_queue_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb743ec6a dt_mode_to_dft +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb786b361 cl_env_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb7983284 cl_page_list_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb814b535 llog_osd_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb8916491 obdo_from_iattr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb9176ad3 capa_cpy +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb9784a40 cl_page_own_try +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 0xbb373049 cl_page_list_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc734d0b cl_lock_hold_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbdb85c8a lu_object_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbde0113d class_incref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe16d43e lprocfs_alloc_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf00a2a8 lu_env_refill_by_tags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf12969d dt_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc045ee97 cl_io_lock_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0bf7ef2 obd_debug_peer_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0cac6f5 llog_cat_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0ebefc6 cl_vmpage_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc1095bde cl_io_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc16f1db3 cl_lock_descr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc1b6ff0c lprocfs_free_per_client_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc1f69f68 lu_env_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc1f73324 lu_ucred_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc2656b13 class_process_proc_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc3413aef lu_context_key_quiesce_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc3d4fd66 class_uuid2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc422c4f1 llog_obd_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc4c2967e lprocfs_oh_tally_log2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc5021928 llog_declare_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc5dcf4bf lu_context_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc794b2b5 class_import_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8dbaa87 lustre_swab_cfg_marker +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9a4ab62 cl_page_list_del +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 0xcc913b64 lustre_idmap_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xccf7a8de obdo_cpu_to_le +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 0xcdd00d26 lustre_register_kill_super_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcea11b2e lprocfs_wr_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcedb140a obdo_cmp_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xceefdd32 cl_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcf21a077 lu_kmem_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcf2a14d7 cl_page_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcfba019a lprocfs_rd_filesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd00de8c6 cl_2queue_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd032467a capa_lock +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 0xd130bb93 obdo_refresh_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1b1478b cl_attr2lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1f58645 lustre_swab_llog_hdr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd2bc1dfa llog_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd2f280d9 obdo_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd3a117a8 cl_req_page_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd3ae6a10 lprocfs_alloc_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd539445b lustre_idmap_lookup_gid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd587acb4 cl_wait_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd6d5a6ac lu_object_find_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd70fe669 lustre_swab_llogd_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd75bd9e7 cl_lock_hold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7667c4f dt_txn_callback_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7bc8654 obd_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7bfbc9c lprocfs_dt_rd_filesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7f7b340 cl_lock_mode_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd85de7db obd_export_evict_by_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd8e2f4e7 local_object_unlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda2140c5 lprocfs_obd_rd_max_pages_per_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda5b1ced class_find_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda8ea307 class_exp2obd +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 0xdb4c8b77 lu_site_purge +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdc86d0ec cl_enqueue_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcacbd0b llog_osd_get_cat_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcbd5ca5 dt_record_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc40af0 class_check_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd169cd5 lprocfs_add_simple +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd4abba9 cl_lock_signal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd78c0c7 lu_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde5bbe2d llog_init_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde7d985b obd_dirty_transit_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdea5fa90 class_devices_in_group +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe028cf84 capa_encrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe150ca93 lprocfs_exp_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe15eb486 class_import_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe170cf47 class_disconnect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe1b02762 cl_lock_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe21fc8cc cl_page_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2eb4470 class_get_next_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2ec887c __llog_ctxt_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe3323f5d class_handle_free_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe35b6128 cl_object_glimpse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe3dc2075 iattr_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe42998d2 cl_page_is_owned +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe5459318 cl_page_list_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe6153005 cl_env_unplant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe66e3b80 cl_object_attr_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe67cf2d2 class_manual_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe6cba52a lu_cdebug_printer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7d83236 cleanup_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7e73153 lprocfs_rd_connect_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe811fcf1 lprocfs_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8891e14 class_disconnect_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8e84c32 class_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe9c81603 lu_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xea390fb4 cl_page_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xea475fd2 cl_page_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeb3f388a _debug_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec3b6441 cl_req_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec780094 obd_exports_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec7d6b85 obd_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xecfd403b cl_lock_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeda79eb1 llog_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee4eaf93 obd_llog_init +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 0xef61cec3 lu_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef76f858 block_debug_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf002e9dc cl_page_is_under_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf01e2527 server_name2index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf10cad02 cl_offset +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf14f5ea6 cl_page_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf1d60a84 cl_env_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf1e417a7 class_connected_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf1f41841 lprocfs_clear_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf1f637b8 cl_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2fd6695 statfs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3613e9e lu_object_find_slice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3d5c642 lu_object_add_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3f08504 lustre_idmap_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf43301a7 lprocfs_alloc_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf441c77a lprocfs_oh_sum +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf490d5f9 class_del_profiles +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf52163d3 dt_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf5919cca cl_lock_disclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf59c1006 cl_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf5d3161c lprocfs_rd_timeouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf60d4659 capa_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf64d98be class_put_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf66d9af4 lu_env_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7020831 lprocfs_dt_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8663bb4 cl_lock_closure_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf883e15d class_search_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8975567 cl_io_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8c2df92 obdo_set_parent_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8e46baa lprocfs_rd_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8fc2840 dt_txn_hook_commit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa524071 lprocfs_exp_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa544b23 dt_lookup_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa813d06 capa_hmac +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa8b24f2 cl_req_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfb054ae8 cl_2queue_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfb266c2f lu_device_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfb2e6b3b class_handle_hash_back +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfb95b627 cl_object_attr_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbea0098 lu_types_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc53d19e cl_io_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc7f18d0 obd_pages_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc97bea2 dt_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfce4103b lu_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfcf0dc49 lu_object_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd2e3e11 lu_device_type_init +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 0xff9aab01 cl_io_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xffbda929 obd_export_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xffc3129a lustre_process_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfffc1f11 lustre_swab_ost_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/osc/osc 0x5c4940c2 osc_update_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00d95039 ptlrpcd_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x017653dd client_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01801d65 ptlrpc_set_import_active +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01d6ef7f ldlm_pools_recalc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x02d76e5e ldlm_lock_fail_match_locked +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 0x06015ea4 ldlm_prep_elc_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0680aae1 lprocfs_rd_pinger_recov +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 0x0771f584 sptlrpc_cli_ctx_expire +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 0x09d2319f ptlrpc_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0a3130b0 RMF_MDT_EPOCH +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0a568d99 ldlm_resource_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ac252b2 lustre_msg_set_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0afed134 ldlm_pool_fini +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 0x0d571f8e ptlrpc_cleanup_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0d579027 ptlrpcd_wake +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0f8892b7 ldlm_namespace_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10e62a95 client_import_del_conn +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 0x1155bcc5 req_capsule_server_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1214eef8 ldlm_lock_fail_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x129b4802 req_capsule_extend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x12b6f5a3 ptlrpc_connection_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x130aa205 llog_origin_handle_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x13e7e5e4 ldlm_resource_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x140d8261 ptlrpc_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1483eca4 ldlm_lock_addref_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1487c09c ldlm_reprocess_all_ns +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14aebdc3 ldlm_cli_update_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14d192db lustre_msg_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15a3e4db RMF_GETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x172fb86d lustre_msg_hdr_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1747d8b3 ldlm_lockname +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x17950f60 RQF_SEC_CTX +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x189ab1cd ldlm_destroy_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x18e168c2 ptlrpcd_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19108a0f RQF_OST_DISCONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19bce551 lock_res_and_lock +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 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 0x1c72cdeb ptlrpc_schedule_difficult_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d043548 lustre_msg_set_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d7fdccc ldlm_flock_completion_ast +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 0x1e1bbdf1 ptlrpc_obd_ping +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 0x209c7811 sptlrpc_cli_unwrap_bulk_read +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 0x231bfe4d ldlm_cli_cancel_unused +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x233790b5 RMF_OST_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2342226c ptlrpc_unregister_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x239c52fe sptlrpc_import_flush_all_ctx +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 0x24df499f sptlrpc_gc_add_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x24f10b36 _debug_req +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 0x259633b3 ptlrpc_abort_inflight +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x259ba464 ptlrpc_set_wait +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 0x27bbbe0e sec2target_str +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 0x2b817c75 ptlrpcd_alloc_work +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 0x2cee74f1 ldlm_pool_setup +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 0x2fb8f1e3 ptlrpc_lprocfs_brw +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 0x31f7912b ptlrpc_request_set_replen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x325ffe97 sptlrpc_conf_client_adapt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3261b862 RQF_OST_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x337674e5 ldlm_namespace_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33bb7761 ldlm_typename +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33c489ae req_capsule_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x340af0ab sptlrpc_cli_ctx_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x345cc4eb ptlrpc_request_alloc_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35939a3d lustre_swab_fiemap +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x370afa6a ldlm_lock_change_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x374ceb05 req_capsule_server_get +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 0x395cc08f ptlrpc_req_finished_with_imp_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39efc44c ldlm_resource_unlink_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39f60a5f RMF_OST_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3a1e4bcb __lustre_unpack_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3a5016f3 sptlrpc_target_export_check +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 0x3b3f93d8 ldlm_prep_enqueue_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3b46c6ef sptlrpc_req_replace_dead_ctx +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 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 0x3dddb3e2 dump_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3df49610 sptlrpc_import_sec_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3e2f1082 ptlrpc_request_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3eaed993 ptlrpc_add_rqs_to_pool +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 0x40cd4315 ptlrpc_nrs_policy_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41008cef RQF_LDLM_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x414f4936 __ptlrpc_prep_bulk_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x42021fc3 ptlrpc_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x432b3a0d ptlrpc_commit_replies +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43705ee4 RQF_LOG_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4378c436 ptlrpc_service_health_check +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 0x440a359e ldlm_lock2desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x440c2a71 RMF_FIEMAP_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x442778e9 ldlm_pool_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4481591d RQF_OST_SET_INFO_LAST_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4483c541 ptlrpc_reconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x44acea30 sptlrpc_cli_ctx_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4513274d lustre_pack_request +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 0x46ec1a2d sptlrpc_sec_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47b65b9b req_capsule_init_area +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47f5e903 RMF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4813cd05 ldlm_lock_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x48814c9f lustre_swab_ost_lvb_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x497a24f6 llog_origin_handle_next_block +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 0x4ae1bf5d ldlm_register_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4afe751e ldlm_pool_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4b09ce4b lustre_swab_mdt_rec_reint +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4b5ca509 lprocfs_wr_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4b7d198b ldlm_resource_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4c0998a2 lprocfs_wr_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4c0b3f2c ptlrpcd_add_rqset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4c27bcb0 ptlrpc_activate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4c571c2b do_set_info_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4c6c0f8e req_capsule_client_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4c99006f ptlrpc_prep_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d7580d0 lustre_swab_hsm_user_item +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d9c0cec ptlrpc_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e1706e5 lustre_msg_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e696b96 ptlrpcd_queue_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4eb03a6f ptlrpcd_destroy_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f62e9f2 ldlm_lock_downgrade +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f766c3b lustre_swab_generic_32s +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4fe052c4 sptlrpc_cli_unwrap_bulk_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4ff64d06 req_capsule_server_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50443f6a ptlrpc_init_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50633e88 ldlm_cancel_resource_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50dd74f8 RMF_STRING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5275713d ptlrpc_buf_need_swab +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 0x57d30881 ldlm_replay_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x588035b4 RMF_UPDATE_REPLY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x58bf25c7 sptlrpc_enc_pool_put_pages +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 0x59ca398b ptlrpc_add_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5a057439 interval_search +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5a6c053e sptlrpc_cli_enlarge_reqbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5a8111b9 sptlrpc_get_bulk_checksum +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5a9a922f ldlm_resource_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5af0d02a ldlm_lock_dump_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b3e50bc ptlrpc_init_rq_pool +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 0x5caae213 ptlrpc_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5d721e76 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 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 0x60a02fb1 ptlrpc_disconnect_import +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 0x62192cf8 dump_obdo +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 0x645d62e4 ldlm_lock_allow_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x647b6e48 lustre_swab_ldlm_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x648baf3f lustre_pack_reply_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x652052d2 ptlrpc_free_rq_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x653723dc RMF_LOGCOOKIES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x658a7d2f ptlrpc_hpreq_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x65e3f7e6 req_capsule_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x66eca49e ldlm_pool_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x67c70bcc ldlm_cli_enqueue_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6823acf2 ptlrpc_recover_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6832f45c ptlrpc_queue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x683d2211 ptlrpc_mark_interrupted +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x685eeaba RMF_DLM_GL_DESC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6879b213 sptlrpc_target_update_exp_flavor +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 0x690a959b lprocfs_wr_pinger_recov +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 0x6b99f641 llog_origin_handle_destroy +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 0x6ea6943e target_print_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6ed20499 ldlm_revalidate_lock_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6ef2c464 ptlrpc_save_lock +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 0x703a7101 req_capsule_client_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7075af9b sptlrpc_import_flush_my_ctx +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 0x72aaf632 req_capsule_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x72cecd49 client_import_find_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x73363567 sptlrpc_gc_add_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7403219c lprocfs_wr_evict_client +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 0x75b9d195 client_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7697eb5b ldlm_pool_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x76b728e5 lustre_swab_update_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77571cc6 lustre_swab_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77840c82 sptlrpc_rule_set_choose +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77bebd4c ldlm_glimpse_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78bf9136 lustre_swab_ldlm_lock_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78d91402 ptlrpc_resend_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a0ad7bc req_capsule_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a2b9490 ldlm_pool_get_lvf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a4ae631 ptlrpc_prep_req_pool +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 0x7c846df6 ldlm_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7caba26b ptlrpc_deactivate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d1ecd7f RQF_LDLM_INTENT_LAYOUT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d242204 ptlrpc_set_next_timeout +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 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 0x84b9846b ptlrpc_req_set_repsize +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85135801 RMF_DLM_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8523e997 ldlm_cli_enqueue +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 0x88dd52e7 ldlm_lock_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x88fff52d RMF_CAPA2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x89f9edf7 RQF_MDS_REINT_SETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a1ea476 lustre_swab_hsm_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a257736 RQF_MDS_HSM_STATE_GET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ac440fa ptlrpc_uuid_to_connection +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b854254 lustre_swab_mgs_config_res +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8c0e9b66 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 0x8d0a11d8 req_capsule_client_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 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 0x8f2fe17e ldlm_pool_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8f515d26 client_disconnect_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8faad274 ptlrpc_request_alloc_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8fec0451 lustre_msg_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x905b24cd ptlrpc_request_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x916d56bb ldlm_get_enq_timeout +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 0x91fa270d ldlm_init_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x92180cf5 llog_client_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x92b0bfe4 sptlrpc_gc_del_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x934ce91f ptlrpc_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x937b1ee0 lustre_swab_mdt_ioepoch +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x944fd3dd ldlm_cli_cancel_unused_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9553c633 RQF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x95601c73 ptlrpc_register_bulk +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 0x968b9700 ldlm_namespace_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9768e15b client_import_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x977d9899 ldlm_lock_put +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 0x98558ed9 ptlrpc_request_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x98ce57d9 req_capsule_client_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x98e26554 ldlm_namespace_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x995eefb2 sptlrpc_cli_ctx_wakeup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x999bf70b sptlrpc_conf_target_get_rules +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x99e05aee ldlm_pool_add +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 0x9a84f331 ptlrpc_pinger_sending_on_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a87636a sptlrpc_sec_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b88f6ce RMF_NIOBUF_REMOTE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b94cfc3 ptlrpc_prep_bulk_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9bb5198b RQF_MDS_CLOSE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9cc50961 ptlrpc_lprocfs_register_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9ce430de ptlrpc_wake_delayed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d7ea314 sptlrpc_pack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d8b6a4e ptlrpc_at_set_req_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9e1c6f86 sptlrpc_enc_pool_get_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9eddb420 ptlrpc_request_bufs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9f0959d7 ptlrpc_unpack_req_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9fb088f1 lustre_swab_lov_mds_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9fff3900 ptlrpc_pinger_add_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa0172711 ptlrpc_set_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa0a611bb ldlm_namespace_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 0xa2415074 ptlrpc_prep_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3c5553c ptlrpc_set_add_new_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3d2a6ee RMF_CAPA1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3fc15c0 target_pack_pool_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa42c26f5 req_capsule_server_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa47787ef RMF_PTLRPC_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa49e3ee2 ptl_send_rpc +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 0xa66b91c4 ldlm_cli_cancel_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa6c436ca RQF_MDS_WRITEPAGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa72fdb31 ptlrpc_set_add_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7ce79f1 ptlrpc_request_pack +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 0xabd3a511 ldlm_init_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xac97469b req_capsule_server_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xacf949ff ptlrpc_cleanup_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xad5cd3be ldlm_blocking_ast_nocheck +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaddc3979 lustre_swab_lustre_capa_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf0f46dd ptlrpc_set_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf4e9658 RQF_MDS_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf50a0d6 RMF_HSM_STATE_SET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0751fa4 RQF_LLOG_ORIGIN_HANDLE_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1b43d8a dump_rcs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb26aac49 sptlrpc_sec_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb26e2eef ptlrpc_replay_req +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 0xb2b1817d lustre_swab_ost_lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb4a7ecf3 lustre_msg_add_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb512ebc2 sptlrpc_parse_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb61cb95a RQF_MDS_GETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb68476df interval_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb6aafd03 RQF_MDS_DONE_WRITING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7b38189 RMF_MDT_MD +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7fa3cc8 RMF_LLOG_LOG_HDR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb903634e RQF_OST_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb93bcaec ptlrpc_pinger_del_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb997fbed __ldlm_handle2lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9b631cf lustre_swab_mgs_config_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xba2374dc ptlrpc_nrs_policy_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbaa76097 lustre_msg_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbb1601a5 ptlrpc_lprocfs_unregister_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbbdc2984 req_capsule_filled_sizes +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc1370dc lustre_shrink_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbd7e6c3b ptlrpc_resend +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 0xbe99b736 ldlm_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbf98b86f RQF_MDS_QUOTACHECK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbfce5413 ptlrpc_buf_set_swabbed +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 0xc0926792 ptlrpc_invalidate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0cdf55e RMF_MGS_SEND_PARAM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2594542 ldlm_pool_get_clv +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 0xc593388e ptlrpc_prep_fcset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc5c24061 ldlm_lock2handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc60a60e1 RQF_OST_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc65821ec sptlrpc_cli_wrap_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc68723ed sptlrpc_lprocfs_cliobd_attach +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 0xc7e299b2 sptlrpc_svc_ctx_invalidate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc7e47564 ptlrpc_interrupted_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc8afab99 ldlm_cli_cancel_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc8f586a9 ptlrpc_connection_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xca2d0a96 lustre_pack_reply +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 0xcc5756f7 llog_origin_handle_prev_block +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcde30cdd ldlm_pool_del +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 0xceb4f719 ldlm_enqueue_pack +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 0xd000cb90 ptlrpc_restart_req +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 0xd3b6264a llog_origin_handle_read_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd3dae408 ldlm_it2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd502bac9 req_capsule_server_sized_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd537ded2 lustre_swab_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd5cdcfb9 ptlrpc_req_finished +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 0xd6c2c034 ptlrpc_stop_all_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd6c3ebfb RMF_FIEMAP_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd74dd8a9 req_capsule_other_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd7910326 lustre_swab_obd_statfs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd7ff9a9c sptlrpc_register_policy +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 0xda2ac111 sptlrpc_proc_root +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 0xdcf910b9 lustre_swab_ost_last_id +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 0xdd49fbc1 req_capsule_set_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd97c29c lustre_free_reply_state +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 0xde5cf80f ptlrpc_send_error +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 0xdfcf8002 ptlrpc_unregister_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0cc694c RQF_LLOG_ORIGIN_HANDLE_NEXT_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe1912534 ptlrpc_fail_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe1d45e67 req_capsule_server_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe3f636d8 ptlrpc_register_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe40e0a50 lustre_msg_get_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe4151893 client_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe57bd972 sptlrpc_current_user_desc_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe6146614 ldlm_namespace_new +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 0xe871f2ef ptlrpc_retain_replayable_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xea4a28e5 ldlm_cli_enqueue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xea9358ac lustre_pack_reply_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeabaa0b1 lustre_swab_mdt_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeabac4fc sptlrpc_rule_set_merge +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeafa940c ldlm_namespace_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeafd2aa8 ldlm_pool_set_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeb2ed530 _ldlm_lock_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeba464fa ldlm_pool_set_slv +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 0xec8b83ff ldlm_lock_get +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 0xef0d8de2 ldlm_blocking_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef1aeca9 RMF_FLD_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef2f46ed req_capsule_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xefac9684 ptlrpc_start_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xefd0a0db ldlm_completion_ast_async +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 0xf15f641b ldlm_lock_allow_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf1f8a751 sptlrpc_unregister_policy +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 0xf332537c ptlrpc_init_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf356fd75 ldlm_extent_shift_kms +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf35f132b lustre_swab_ldlm_resource_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf3c3cad7 llog_origin_handle_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf3d44370 RQF_OST_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf3df1693 ptlrpc_req_xid +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 0xf584c1d8 llog_initiator_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf596e9ae sptlrpc_conf_log_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf5aaf00b req_capsule_field_present +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 0xf625561d ptlrpc_unpack_rep_msg +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 0xf77ea7c0 __ptlrpc_free_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7ba40c0 RMF_MDS_HSM_PROGRESS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7c45c76 ldlm_destroy_export +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 0xfaae3cb9 llog_origin_handle_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfb68132b target_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfb7097ea req_capsule_has_field +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 0xfed1272b ptlrpc_unregister_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff02a0e9 ldlm_lock_set_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff0ff8fc client_obd_cleanup +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 0xf9ead489 cxd2099_attach +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xaa425015 go7007_register_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xb8aca1a9 go7007_parse_video_stream +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xcaf684cf go7007_boot_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xd944cfd0 go7007_read_addr +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xdb35fa6d go7007_snd_remove +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xed420e63 go7007_alloc +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xf01d9a24 go7007_read_interrupt +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xfc296587 go7007_update_board +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xfcf0001b go7007_snd_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x00bd57a0 rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0e12aeb4 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1b2663d9 rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1ddd4149 rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1e5e050e Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1f1111c9 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x24acfdc8 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x25bf166d rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2c2f038b rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2da25649 rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2dc515d8 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2f967371 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3186ab15 free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x37918380 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x398e3423 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3e00d08e rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x42f89921 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4eb2bb68 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x52604053 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x57b4bf3b rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x59475fc2 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x65fcfee9 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6a3a45bb rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6a5f9fca rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x776817c3 rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7b480ae1 rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7d20ec22 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x89e48820 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8c0ec944 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x964726d2 rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x988fd72d rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x997862dc rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9dc11ebc rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa561e522 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xae4ebb09 rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb6db84ed rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb9e02224 rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbf5dd0f3 rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc348b834 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc3d2ad77 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xca1b8f74 rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd0061c39 rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf6d24ec rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe43f0c8a rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe54d889d rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe7861d75 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xed4d354d dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf325a417 rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfedfd974 rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfff56414 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x012c4875 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x04c98eb8 ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x05c98772 ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x08351c6d ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0d1fac07 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x16ec845c ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x17186537 ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x22bbf021 ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2333039a ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2a7dd6f5 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2f68cbc5 ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x30dd665d ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3583d3b6 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3799ea0f Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3b7cc8b9 ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3cbb989d ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x41a30ea7 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x43e97132 ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x59e80b21 DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5a273b5f ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x609b5c37 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x651f268e ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6c32c8b5 ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6d70d0ae ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7008691e SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x746338f0 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x78b18058 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7e27af34 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8049fd11 ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8130a450 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x844c5afb ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8fd27f14 ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x94b82688 ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9896216a ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa0662e93 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa50aaf08 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa6b77421 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xaaf586ff DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xaffdac96 ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb1623800 Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb5c5387e ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbda14ff2 ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc104a152 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc3111a58 ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc3e5890b ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcab7caa5 ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcbe33d02 HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xce3dccf7 ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcfe3f31d IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdf452a97 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe051c885 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe0c2f621 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf0f17b10 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf20a6a87 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf2c30682 ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfb291c5d notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x0017f35f set_bp_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x00ea0cde set_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x06d6f244 get_bp_dis_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x09df8f3e set_tap_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x0a8d32c3 get_bypass_slave_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x1936264c set_dis_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x1d2eb8ca get_tap_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x203af1f7 reset_bypass_wd_timer_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2070f14a set_bypass_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x27b990ef get_bypass_info_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2ba7cd35 get_wd_autoreset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2c3f1c17 get_tx_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2f59e636 get_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2fdb893a get_tap_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x361cf40a get_dis_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x45ca99c3 set_wd_autoreset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x550a188c set_bypass_wd_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x5cb59e92 get_bypass_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x66b60122 set_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x675208c0 set_tx_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x692623f2 get_std_nic_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x75131ec6 set_bypass_pwoff_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x76c0b7d0 set_tpl_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x7e872825 get_wd_exp_mode_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x7e8d701e get_wd_expire_time_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x86388b07 get_bp_disc_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x93ae4648 get_wd_set_caps_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x95e42b0d is_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x9df5f807 set_dis_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x9e21f42e set_std_nic_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xa689a214 get_bypass_wd_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xae117788 get_bp_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xc368d30d get_dis_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xccab5de0 get_bypass_caps_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd3e034b3 get_bypass_pwoff_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd9c1ccfc get_bp_disc_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd9d38d97 set_wd_exp_mode_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xe640f06e set_bp_disc_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xecdaa456 set_bp_hw_reset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xedcd3c1b get_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf06d67bf set_bp_dis_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf57c1671 get_bp_hw_reset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf693c3a1 bp_if_scan_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf8237882 get_bypass_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xfa59240d get_tpl_sd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x05af3c4c set_wd_exp_mode +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x05b08a42 set_bp_hw_reset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x0b0d5ce0 get_tap_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x0fc2e83c reset_bypass_wd_timer +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x123a8133 get_tx +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x157ec89c get_bp_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2440f05a get_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2b01d1d4 set_bp_dis_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2c27a2f0 set_dis_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2da97f4b is_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2e86c67b get_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x37416370 get_bp_hw_reset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x37bdab27 get_wd_autoreset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x3da96a18 get_bypass_caps +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4025805e get_bypass_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4940a0cc get_bypass_info +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4d21ff51 get_bypass_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5147360c get_bp_disc_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x515d4df1 get_bypass_slave +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5560267e set_wd_autoreset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5be44d44 set_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x6653590c get_wd_exp_mode +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x6bda14ec get_bp_dis_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x72c618ae set_bypass_wd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x76d47e6f set_bp_disc_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x794e3815 set_tap_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x7c6cbc16 get_tpl +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x84a263dc set_tx +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x8a16f22c set_tpl +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x946ff795 get_wd_set_caps +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x94f6aff2 get_bypass_wd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x9d1ecf73 set_bypass_pwoff +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xb1385629 set_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xbff68c45 set_bypass_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xc871c561 get_dis_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xcee528df set_std_nic +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xd202dd85 get_bypass_pwoff +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xd787f151 get_wd_expire_time +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xdb6a39d2 get_dis_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xebd25ae5 get_std_nic +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf1e9f8c1 set_bp_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf224abd9 get_tap_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf5a591b2 set_dis_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf643fd4c get_bp_disc_pwup +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x2f1c7862 xillybus_init_endpoint +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x883f2416 xillybus_endpoint_remove +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0xa460b7f7 xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0xc1c8e90b xillybus_do_cleanup +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0964b501 iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0fca1f8b iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x101a438c iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1220526d iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1fa2afab iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2fb9f9bf iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x37fb04e5 iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x38292a89 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x38d191df iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4b89ef33 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4cdb2d0f iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x56132f54 iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x62acfd3f iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x64c2aa70 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x65bd73ad iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x673d819a iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x754ebd4d iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x907e8e47 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x93678f1a iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9389393f iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x941b23c6 iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa6a67291 iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb0abdc39 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb967f4d8 iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xcd790ef2 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xdf64db7b iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xef2ea4bb iscsit_handle_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xfa501291 iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/target_core_mod 0x00f37b10 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x02fd4180 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x03565e48 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x06b70e46 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x073c2e28 target_to_linux_sector +EXPORT_SYMBOL drivers/target/target_core_mod 0x0ff747ad target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x1169b5c3 iscsi_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x1215f4e9 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x1296bb44 sas_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x1427ed6f target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x238e80cc transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x245bcd41 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x2a3ead57 spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0x35ac14a0 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x3772c102 iscsi_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x3db4b519 fc_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x4f9e9451 target_fabric_configfs_free +EXPORT_SYMBOL drivers/target/target_core_mod 0x54aeb4d3 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x55cc8ba6 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x55ef970f core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x5b396cda transport_subsystem_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x5d3df644 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x5fcf8416 sas_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x6225ca07 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x629939f3 target_fabric_configfs_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x6f7a4152 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x6fba1cf6 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x7078ae4e transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x7673b45a core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x79558e07 core_tpg_del_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x7c850736 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x7d4bb740 fc_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x7de3c44e core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x7ed5cd51 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x808dc66f transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x82dd4488 transport_subsystem_release +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x874ea26f core_tpg_add_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x8e68c29c transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x928f9f3c sbc_execute_unmap +EXPORT_SYMBOL drivers/target/target_core_mod 0x95748c99 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x97c917f9 spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x9971900a core_tpg_clear_object_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x9c14afe7 target_fabric_configfs_init +EXPORT_SYMBOL drivers/target/target_core_mod 0x9cf09168 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xa5510237 spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0xa5cbf72c target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xa6c27aa1 sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0xa7a4395c transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xa80cabcc transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xad1e3b8e iscsi_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0xb846bdf8 target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0xba92de4a sas_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0xc5573a33 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xc720e107 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xc83ba5ab target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xc8a77908 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xcefbdad5 fc_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xd51fac6d iscsi_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xd5fd581c target_fabric_configfs_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xda84ee51 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xe3b1f16d core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xe6eedae6 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0xe8dc5140 sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf0dde863 target_configure_unmap_from_queue +EXPORT_SYMBOL drivers/target/target_core_mod 0xf374557f fc_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0xf3895d8d target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xf58af581 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0xf7246f13 sas_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf8dbf6eb core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xfa01d822 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0xfa4e74b9 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xfc0962ba transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xfc9faa32 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x148269ee usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0x7b4d07d3 unregister_gadget_item +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x1166d891 gether_get_host_addr_cdc +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x1aeeef75 gether_get_dev_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x570f2525 gether_register_netdev +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x72f11de9 gether_connect +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x80b992cd gether_get_qmult +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x89d7c260 gether_set_dev_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x9271d61d gether_setup_name_default +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x9fc4abfe gether_get_host_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xb6d1b8f1 gether_get_ifname +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xd9f6f89f gether_get_host_addr_u8 +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xe6240d81 gether_setup_name +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xf0de3ff3 gether_set_host_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xf1f3accb gether_set_qmult +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xf6940c84 gether_set_gadget +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xfe7df220 gether_disconnect +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x3a6d4f22 rndis_free_response +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x3ca38e3a rndis_signal_connect +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x4ca90996 rndis_signal_disconnect +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x5d22b406 rndis_register +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x785d494b rndis_msg_parser +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x840dd143 rndis_deregister +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x988ad2a2 rndis_set_param_vendor +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x9acf72e4 rndis_set_param_medium +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xa90054ee rndis_uninit +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xb971ebca rndis_get_next_response +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xd2fe47b1 rndis_set_host_mac +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xdd513090 rndis_add_hdr +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xeb484b9e rndis_rm_hdr +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xeff0be7f rndis_set_param_dev +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x06f750b2 fsg_store_ro +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x1710b539 fsg_fs_bulk_out_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x1b1cc3af store_cdrom_address +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x24be0aa7 fsg_lun_fsync_sub +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x2933ee1d fsg_ss_bulk_in_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x398778e1 fsg_ss_function +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x423845e4 fsg_ss_bulk_in_comp_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x56344daf fsg_hs_bulk_out_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x5a609340 fsg_lun_close +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x6c26dea6 fsg_show_file +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x6c3f59bf fsg_store_cdrom +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x6ca56207 fsg_show_cdrom +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x718a3504 fsg_show_ro +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x857b6dc2 fsg_hs_function +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x89ef75e7 fsg_store_removable +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x95cffb3e fsg_hs_bulk_in_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x9b0c890a fsg_store_nofua +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xa5cae92f fsg_ss_bulk_out_comp_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xa5f99b69 fsg_fs_function +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xad524682 fsg_lun_open +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xb52ba28a fsg_intf_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xb54d0d95 fsg_fs_bulk_in_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xd6a7d72c fsg_show_removable +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xec554d60 fsg_show_nofua +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xeef23f8e fsg_store_file +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xf4efc0c8 fsg_ss_bulk_out_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_rndis 0xfdef1bce rndis_borrow_net +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0x1ce4147a sl811h_driver +EXPORT_SYMBOL drivers/usb/phy/phy-generic 0xa64a4cea usb_nop_xceiv_unregister +EXPORT_SYMBOL drivers/usb/phy/phy-generic 0xd0e43207 usb_nop_xceiv_register +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x0f991686 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x10feb69a usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x141db272 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x401d52ca usb_wwan_set_termios +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x43c8653f usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x4e590e7a usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x5f261967 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x9ac8cf90 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xa09a79b7 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xd431b95d usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xd45882dd usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xeed03b65 usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf8b99f35 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x983ae8df usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xf61bc378 usb_serial_suspend +EXPORT_SYMBOL drivers/vhost/vringh 0x0dda8c5a vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x1f063017 vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x2e91ca97 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x367ce26a vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x36dfce73 vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3eaf442a vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x3fa42e4f vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x5dafbd4e vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x66af098b vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x6d0e7948 vringh_abandon_user +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 0xaf8e4a0e vringh_notify_disable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xafb47dae vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0xc884d704 vringh_notify_disable_user +EXPORT_SYMBOL drivers/vhost/vringh 0xc8bee0a4 vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xd11d2709 vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xda4ea4cc vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0xfc7dcad2 vringh_getdesc_user +EXPORT_SYMBOL drivers/video/backlight/generic_bl 0x366d19ef genericbl_limit_intensity +EXPORT_SYMBOL drivers/video/backlight/lcd 0x0adbc7a8 devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x2210812d lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x91095f70 devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xb0f2c0ff lcd_device_register +EXPORT_SYMBOL drivers/video/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/cyber2000fb 0x534b6f18 cyber2000fb_disable_extregs +EXPORT_SYMBOL drivers/video/cyber2000fb 0x70e94332 cyber2000fb_attach +EXPORT_SYMBOL drivers/video/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/macmodes 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL drivers/video/macmodes 0x29e04e2c mac_find_mode +EXPORT_SYMBOL drivers/video/macmodes 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x0bc5d6be matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x7549e35b g450_mnp2f +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0xace9de10 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x5c51a8ae matrox_G100 +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x61d5d293 matrox_mystique +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xcdcfb420 DAC1064_global_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xff121062 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_Ti3026 0x616d25b5 matrox_millennium +EXPORT_SYMBOL drivers/video/matrox/matroxfb_accel 0x0d6ec465 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x049aef5d matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x576a0768 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x8341df0b matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0xa40b95d4 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0x0bd8d0e9 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0x127e7073 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x02c889de matroxfb_read_pins +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x17eec3e0 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x5d1a5f50 matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xfa5777af matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xfb5220bd matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/mb862xx/mb862xxfb 0x9ab9518b mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/output 0x3c4683e4 video_output_unregister +EXPORT_SYMBOL drivers/video/output 0xa70ec602 video_output_register +EXPORT_SYMBOL drivers/video/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/svgalib 0x287b232d svga_get_caps +EXPORT_SYMBOL drivers/video/svgalib 0x301d7163 svga_get_tilemax +EXPORT_SYMBOL drivers/video/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/svgalib 0x822d7960 svga_tileblit +EXPORT_SYMBOL drivers/video/svgalib 0x885e907d svga_tilecursor +EXPORT_SYMBOL drivers/video/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/svgalib 0x8f2f65fd svga_tilecopy +EXPORT_SYMBOL drivers/video/svgalib 0xa2e2970a svga_tilefill +EXPORT_SYMBOL drivers/video/svgalib 0xcba934e1 svga_settile +EXPORT_SYMBOL drivers/video/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/syscopyarea 0x917870e8 sys_copyarea +EXPORT_SYMBOL drivers/video/sysfillrect 0x20b675ec sys_fillrect +EXPORT_SYMBOL drivers/video/sysimgblt 0x91ebd9e9 sys_imageblit +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/vme/vme 0x00d7e722 vme_lm_count +EXPORT_SYMBOL drivers/vme/vme 0x044e4c76 vme_register_bridge +EXPORT_SYMBOL drivers/vme/vme 0x04c050c8 vme_dma_list_add +EXPORT_SYMBOL drivers/vme/vme 0x072f901c vme_master_rmw +EXPORT_SYMBOL drivers/vme/vme 0x08fbb26f vme_lm_request +EXPORT_SYMBOL drivers/vme/vme 0x0ec5babe vme_dma_free +EXPORT_SYMBOL drivers/vme/vme 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL drivers/vme/vme 0x2f905f51 vme_irq_generate +EXPORT_SYMBOL drivers/vme/vme 0x38376de6 vme_irq_request +EXPORT_SYMBOL drivers/vme/vme 0x3d8982ab vme_unregister_driver +EXPORT_SYMBOL drivers/vme/vme 0x3e95083c vme_slave_get +EXPORT_SYMBOL drivers/vme/vme 0x41862ad4 vme_alloc_consistent +EXPORT_SYMBOL drivers/vme/vme 0x46649cd1 vme_lm_set +EXPORT_SYMBOL drivers/vme/vme 0x48b99a13 vme_lm_free +EXPORT_SYMBOL drivers/vme/vme 0x4baf35a7 vme_master_get +EXPORT_SYMBOL drivers/vme/vme 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL drivers/vme/vme 0x5aff4177 vme_lm_get +EXPORT_SYMBOL drivers/vme/vme 0x6d977f8f vme_irq_handler +EXPORT_SYMBOL drivers/vme/vme 0x7cf35220 vme_master_free +EXPORT_SYMBOL drivers/vme/vme 0x7fde2edb vme_master_read +EXPORT_SYMBOL drivers/vme/vme 0x8d7fc8f0 vme_bus_type +EXPORT_SYMBOL drivers/vme/vme 0x902aafdb vme_dma_list_exec +EXPORT_SYMBOL drivers/vme/vme 0x90695906 vme_free_consistent +EXPORT_SYMBOL drivers/vme/vme 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL drivers/vme/vme 0x96aefc49 vme_dma_list_free +EXPORT_SYMBOL drivers/vme/vme 0x99ce1d29 vme_unregister_bridge +EXPORT_SYMBOL drivers/vme/vme 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL drivers/vme/vme 0xa31bdf07 vme_master_set +EXPORT_SYMBOL drivers/vme/vme 0xa7075512 vme_slave_request +EXPORT_SYMBOL drivers/vme/vme 0xb6f062cb vme_register_driver +EXPORT_SYMBOL drivers/vme/vme 0xcc0e2660 vme_new_dma_list +EXPORT_SYMBOL drivers/vme/vme 0xce187fa0 vme_irq_free +EXPORT_SYMBOL drivers/vme/vme 0xd797b9a5 vme_master_write +EXPORT_SYMBOL drivers/vme/vme 0xdb0f4978 vme_master_request +EXPORT_SYMBOL drivers/vme/vme 0xde31f412 vme_dma_request +EXPORT_SYMBOL drivers/vme/vme 0xdff905e5 vme_slave_free +EXPORT_SYMBOL drivers/vme/vme 0xe693a6ce vme_get_size +EXPORT_SYMBOL drivers/vme/vme 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL drivers/vme/vme 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL drivers/vme/vme 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL drivers/vme/vme 0xfb456120 vme_slot_get +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x0e3e12c3 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x2c11afbd w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xaa0cea1f w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xdf33d956 w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x0ec97810 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x55ef1a2b w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x6eccd76b w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xa30d6bf8 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/wire 0x32094a14 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0x4f259d27 w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0x55460fd1 w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0xb881347d 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/btrfs/btrfs 0x27476846 ulist_reinit +EXPORT_SYMBOL fs/btrfs/btrfs 0x41e6a9d2 ulist_init +EXPORT_SYMBOL fs/btrfs/btrfs 0x7e2ee765 ulist_free +EXPORT_SYMBOL fs/btrfs/btrfs 0xa2eec2e8 ulist_fini +EXPORT_SYMBOL fs/btrfs/btrfs 0xb1320bc8 ulist_add +EXPORT_SYMBOL fs/btrfs/btrfs 0xb42289d2 ulist_alloc +EXPORT_SYMBOL fs/btrfs/btrfs 0xc2c745db ulist_next +EXPORT_SYMBOL fs/configfs/configfs 0x16347ad5 config_item_init +EXPORT_SYMBOL fs/configfs/configfs 0x26078fef config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x3c0c9875 config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0x54d27089 config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0x68c9744d config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0x7893f263 config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x7ac93aff configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x89dbbbae configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0xb81fc9eb configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0xe08e6e14 configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xfa4f6701 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xfa50cd70 config_group_find_item +EXPORT_SYMBOL fs/exofs/libore 0x03d71399 ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0x15af245f ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x3d049e08 ore_read +EXPORT_SYMBOL fs/exofs/libore 0x44647048 ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x9a470792 ore_write +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xb23877d0 ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0xd4101ce6 ore_remove +EXPORT_SYMBOL fs/exofs/libore 0xd74b4fe4 ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0xdb8abbc3 ore_create +EXPORT_SYMBOL fs/exofs/libore 0xe530e6ad extract_attr_from_ios +EXPORT_SYMBOL fs/fscache/fscache 0x06f8701b __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x0d248fef __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x10d624c1 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x11b26c6a __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0x1ceba88d fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0x24fd12a5 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x2cb8d368 __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0x2ea14e05 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x2fbc0ec5 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x47399b39 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x501e0b0f fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x557c5eec __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x559f2d59 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x59e23244 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x69c00daa __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x6c153c5c fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x6e14b240 fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x76efe9f6 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x77e8760a __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x7ade9ec2 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x7c9acdca fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0x8d6ac1cb __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x96107931 __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x9cf2912e __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x9dc1f5b7 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xa083acb6 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0xac60980e fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0xb1e252cf __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xb9d7790a fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0xd65a38e6 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0xd7ebaf63 fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0xd93def9c fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0xe9eb4bf3 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0xedab33df __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xef278b3d fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0xf5aa0f7b __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0xfcf3b265 fscache_check_aux +EXPORT_SYMBOL fs/nfsd/nfsd 0x35e33c1e nfs4_acl_write_who +EXPORT_SYMBOL fs/nfsd/nfsd 0x5a157ae4 nfs4_acl_get_whotype +EXPORT_SYMBOL fs/nfsd/nfsd 0xa0f4b528 nfs4_acl_posix_to_nfsv4 +EXPORT_SYMBOL fs/nfsd/nfsd 0xb25b2957 nfs4_acl_nfsv4_to_posix +EXPORT_SYMBOL fs/nfsd/nfsd 0xe13337f0 nfs4_acl_new +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x17b5acf1 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x3582e6a3 qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0x79f8c515 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xc14bfc1e qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xcbd1c097 qtree_release_dquot +EXPORT_SYMBOL lib/cordic 0x434bfd07 cordic_calc_iq +EXPORT_SYMBOL lib/crc-ccitt 0x3771b461 crc_ccitt +EXPORT_SYMBOL lib/crc-ccitt 0x75811312 crc_ccitt_table +EXPORT_SYMBOL lib/crc-itu-t 0xd29b009f crc_itu_t_table +EXPORT_SYMBOL lib/crc-itu-t 0xf5b4a948 crc_itu_t +EXPORT_SYMBOL lib/crc7 0xa7587646 crc7 +EXPORT_SYMBOL lib/crc7 0xd80c3603 crc7_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 0x1097f090 lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0x1611f01c lc_get_cumulative +EXPORT_SYMBOL lib/lru_cache 0x1ae95c1a lc_get +EXPORT_SYMBOL lib/lru_cache 0x22bdae4d lc_committed +EXPORT_SYMBOL lib/lru_cache 0x2324a210 lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x245f4bed lc_is_used +EXPORT_SYMBOL lib/lru_cache 0x72f8100b lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0x741d6b5d lc_try_get +EXPORT_SYMBOL lib/lru_cache 0x94933238 lc_put +EXPORT_SYMBOL lib/lru_cache 0x9c797a6a lc_destroy +EXPORT_SYMBOL lib/lru_cache 0xa35c2d4d lc_create +EXPORT_SYMBOL lib/lru_cache 0xa8226c6b lc_set +EXPORT_SYMBOL lib/lru_cache 0xc011064b lc_reset +EXPORT_SYMBOL lib/lru_cache 0xcee796cb lc_find +EXPORT_SYMBOL lib/lru_cache 0xd0afa00c lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0xd37ef4a2 lc_del +EXPORT_SYMBOL lib/lru_cache 0xfabb5c85 lc_element_by_index +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/802/p8022 0xdc0f40f4 register_8022_client +EXPORT_SYMBOL net/802/p8022 0xe480e4bf unregister_8022_client +EXPORT_SYMBOL net/802/p8023 0x28ee5d33 make_8023_client +EXPORT_SYMBOL net/802/p8023 0x3211b0d9 destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0x400712ad register_snap_client +EXPORT_SYMBOL net/802/psnap 0xb687330d unregister_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x0313f03d p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x04799b57 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x0a450893 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x12f694d5 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x13c2e043 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x1a37c7e9 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x1f225af8 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x2956865c p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x2d2d2ce1 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x2d8f144f p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x326c4bb7 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x3366b8b1 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x38c3a2c8 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x3999a1df p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x52edbe53 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x61a2a7a9 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x637ad38e p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x6b220722 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x74e6b566 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x772b5716 p9_payload_gup +EXPORT_SYMBOL net/9p/9pnet 0x7a8a69d2 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x81449743 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x8190f0dc v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0x8bee1096 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x977a0030 p9_nr_pages +EXPORT_SYMBOL net/9p/9pnet 0x9dd2c68a p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0xa1be383e p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0xb2222fbf p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0xb6e8f7f7 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0xb8606fde p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0xbd1fa4b2 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0xc1aad5d3 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xc71d151f p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0xd2b5c70c p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0xdbef8661 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0xdf5242c6 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0xe1b23fe7 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0xe3bba701 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe64c5772 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0xeb1b9e2b v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0xeb92c9c5 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0xed094dd5 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0xf2ec5288 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/9p/9pnet 0xfd648e16 p9_client_link +EXPORT_SYMBOL net/appletalk/appletalk 0x060767ec atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0x2f3c50d2 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0x80769caa atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0xeb122cf6 aarp_send_ddp +EXPORT_SYMBOL net/atm/atm 0x0fc0c6b1 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x11d8e440 atm_charge +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x2e3c308c vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x4a59e87e register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x564a010a atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x5fe6621d atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x6d7ccd55 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x7416a9a4 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x76d8cb99 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x89999d38 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x93136f41 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0x947d5226 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x950ac456 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 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/atm/atm 0xf50c3fed vcc_release_async +EXPORT_SYMBOL net/ax25/ax25 0x026c1368 ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0x1fd432e2 ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x2fb8fb2a ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0x3afee63e ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x4536ad71 ax25_rebuild_header +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x7d5ce78d ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0x96733203 ax25_hard_header +EXPORT_SYMBOL net/ax25/ax25 0xacba8969 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0xbdbd6531 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xc3ecedcb ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xed4da6ad ax25_listen_release +EXPORT_SYMBOL net/bluetooth/bluetooth 0x02736f71 bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0b09a223 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x19037131 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x193df4f0 hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2c41e823 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2e3e61e8 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x358cce0e __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3603919a hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3fbcdf60 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4227d3b2 l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4a36ec5d bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x531640ce hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x57b391b1 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x66d9ac53 l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0x68c1f7b8 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6c7eaa36 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7c417432 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7c640527 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x86e4cf64 bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8e9105d4 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x902d82f8 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x90525ad4 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9703627b l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x997f7f9d hci_recv_stream_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9d29289a hci_recv_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9ef32118 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb59e00cb bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb61a0c3b bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbe4533ce hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc48a227c bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc79ecc15 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc9bebd6f __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc034886 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc6fb8b7 bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0xccaa695e hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7175661 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe121e9c6 l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf49d7458 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfcc873cb bt_sock_link +EXPORT_SYMBOL net/bridge/bridge 0x77e6ef51 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x4de7b5fe ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x636866ce ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xbb89dcfe ebt_unregister_table +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x1a7182ee caif_connect_client +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x519ec8d5 get_cfcnfg +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 0xa3119668 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0xa62ecaf3 caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xe24a94ce caif_disconnect_client +EXPORT_SYMBOL net/can/can 0x063eee6e can_ioctl +EXPORT_SYMBOL net/can/can 0x156d5fb1 can_proto_unregister +EXPORT_SYMBOL net/can/can 0x21ee433d can_proto_register +EXPORT_SYMBOL net/can/can 0x68823d63 can_send +EXPORT_SYMBOL net/can/can 0x6c41d2f0 can_rx_register +EXPORT_SYMBOL net/can/can 0xf41663d7 can_rx_unregister +EXPORT_SYMBOL net/ceph/libceph 0x014fa80c ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x0764a936 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x10940306 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0x1475bf0d ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x178db1ac ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x197effcb ceph_osdc_release_request +EXPORT_SYMBOL net/ceph/libceph 0x1d0b31ff ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x25aa82ab ceph_copy_page_vector_to_user +EXPORT_SYMBOL net/ceph/libceph 0x2a2fb894 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x3135b694 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x3158173e ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x3361545b ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x34a64292 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x37ddda1f ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x38b30507 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3ce60228 osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0x3df0ec7c ceph_calc_ceph_pg +EXPORT_SYMBOL net/ceph/libceph 0x3f61b679 osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x3f70e3a2 ceph_osdc_unregister_linger_request +EXPORT_SYMBOL net/ceph/libceph 0x4165c1fd ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x4205ffd7 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x43329437 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0x43c8d341 ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x43efd647 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x47fc2c76 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x4a3cc6b3 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x4f0fc7a3 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x5e716c45 osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0x5fe4b2fa ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0x61f3cc02 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x6aefe76d ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6c5d5ac1 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x6d2d06a1 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0x6e1dc510 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x6ed41be2 ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0x754e7bed osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x77692acb ceph_msg_last_put +EXPORT_SYMBOL net/ceph/libceph 0x77effd39 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x788d61c1 ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0x79e9cb32 osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x7ee6fd64 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x7f69a107 ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0x81441810 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x8169c5b2 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x8686d153 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x87aceef2 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0x892d0376 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x896158d5 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x8d017612 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0x8e49ba3b ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x8f80a34e ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x8f84b388 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x90da5a4e ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x942a6db5 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x98dddf2d ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa2954d3d osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0xa40bd703 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0xa8785fc0 ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xa87df06f ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xaa5a31ca ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb2a57b23 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xb2b798b8 osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xbc75f7d3 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xbc791dde ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xc1c970e9 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc55de604 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xc6ae7eae 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 0xce8dcfe4 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0xd1a3c3fe ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd3a0970a osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xd47b6c3e ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0xd54742d7 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0xd77919bb ceph_monc_create_snapid +EXPORT_SYMBOL net/ceph/libceph 0xd7f81a4f ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0xddb0b3bc ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xdea3a7e3 ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xe190ea19 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0xe1fdc547 ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0xe6247929 osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0xe78eb031 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0xe82c9c32 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0xe966be17 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0xe9ee14f2 ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0xfa5b8d41 osd_req_op_extent_init +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xceedbc0f dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/ieee802154 0x06b59ce2 ieee802154_nl_disassoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x0dd515f9 ieee802154_nl_assoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x137ef996 ieee802154_nl_disassoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x40540405 ieee802154_nl_start_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x45cb9558 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x69adf02b wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0x6d8f62d8 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0x7e13c5c1 wpan_phy_alloc +EXPORT_SYMBOL net/ieee802154/ieee802154 0x8a16a7d1 ieee802154_nl_beacon_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x90bc4599 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0xd3f4aa1c ieee802154_nl_assoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0xe3a2f008 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0xe6400c15 ieee802154_nl_scan_confirm +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x0075bb5f arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x3fa7b645 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xdfe675f9 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x9cc94bd6 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xca15d640 ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xe4feae68 ipt_register_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x0c70cd5c xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0x949084af xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x7ce1e79c ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xe607bac8 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x58a8da4f ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xaaae0aea ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xbb5eae0a ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/tunnel6 0xaf75c7d7 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0xdbca32b2 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x17b9e03d xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x3b72b38f xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x1787f50f ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x2fd632b4 ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x3bd8b110 ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x9a481433 ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xaf3368d0 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xe2f22827 ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xe848d792 ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xfbaa42d0 ircomm_data_request +EXPORT_SYMBOL net/irda/irda 0x01dbeb0e irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x0bab6037 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x2036ad06 irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x23a2eee7 hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0x2946d589 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0x2a9970f9 irlap_open +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x33dbef0a irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x359de411 irias_insert_object +EXPORT_SYMBOL net/irda/irda 0x37cd3b4a irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x3b0a2ab6 irias_find_object +EXPORT_SYMBOL net/irda/irda 0x3b9bdefe irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0x428321fa hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x46c003fc irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x48d17824 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x49cf5429 async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x4f9ab5b7 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x62acf28c irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x648c7478 hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0x64fd5a90 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0x66648054 irttp_dup +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 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7b4e3c80 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x7d54adaf irias_new_object +EXPORT_SYMBOL net/irda/irda 0x7ff509a2 hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0x84f26cbc irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0x8745ce69 iriap_open +EXPORT_SYMBOL net/irda/irda 0x8cd99be0 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x956193b1 iriap_close +EXPORT_SYMBOL net/irda/irda 0x97d00b57 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x993ad14b irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x9ccc3575 irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x9e326eb3 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0xa370c681 hashbin_find +EXPORT_SYMBOL net/irda/irda 0xb1da2488 irlap_close +EXPORT_SYMBOL net/irda/irda 0xb27d5592 irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0xb6d81c7d irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0xb79a7ea8 irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0xb8fd0fa4 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 0xbf1e7d75 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0xc0bee29c hashbin_new +EXPORT_SYMBOL net/irda/irda 0xc7c1b3b1 irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0xd53d64bb irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0xd6deeaae irda_setup_dma +EXPORT_SYMBOL net/irda/irda 0xdd57d838 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xfdeb0de1 irlmp_disconnect_request +EXPORT_SYMBOL net/l2tp/l2tp_core 0x1f6c5981 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x14bee283 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x3c33c478 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x43623580 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x94eaf57f lapb_register +EXPORT_SYMBOL net/lapb/lapb 0xc5036918 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0xd8369710 lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0xe2ee72b0 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0xe73c7229 lapb_getparms +EXPORT_SYMBOL net/llc/llc 0x20478b3b llc_sap_close +EXPORT_SYMBOL net/llc/llc 0x37974cb4 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x468dd21c llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x4f5e1cdb llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x4f872156 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x7d7b431e llc_add_pack +EXPORT_SYMBOL net/llc/llc 0xd629316a llc_sap_list_lock +EXPORT_SYMBOL net/llc/llc 0xddbafcb5 llc_set_station_handler +EXPORT_SYMBOL net/mac80211/mac80211 0x009376f2 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x013b2b66 ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x025f8f5c ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x02984b73 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x04a45730 ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x1386ff37 ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x164d75df ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x179860dd ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x1815318d ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x18def10d ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0x1e991270 ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x21a2ae71 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x25b1c9a7 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x2a224a9a ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x2ef62cb7 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x3a5faaa8 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x3d83e53b ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x3de9470e ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x40b76779 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x4833b83d ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x4ea0a9c7 wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x52847a60 ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0x545951cd ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x54d1e273 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x56580955 ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x56fdb009 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x5b4ff2ec ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x5bb2d03e ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x5c28cca5 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x6039c8df ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x6d8ac58e rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x6dac46ae ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x7a0cd4b5 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x7bae48ef ieee80211_alloc_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x82ec87fc ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x855a9bc7 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x85c68c49 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x8a27af15 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x9344d0f4 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x960cb179 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x9bb38df1 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x9c39eac5 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x9c5e6334 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0x9dc60242 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0xa1fc36c4 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xa4e87b3a ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xa84acb53 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0xa942df4a ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0xa9a8ee5a __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0xaa157485 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0xab58bd9b ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xaf8591c5 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xaf9fe7f8 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xb0a94d3e ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0xb1e8e233 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0xb5530174 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xb5e47fae ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xb7aa2d83 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0xbe60f771 ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0xbe68e153 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0xc1b1093a ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0xc4b6032f ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xc7e9782e ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xcccafe99 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xcdd4f678 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xddb47d52 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xdf93349e ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xe0674db2 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0xe2b2f753 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0xe8b0f1db ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xe9c79aa7 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xf395de03 ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0xf626bd18 ieee80211_iter_keys +EXPORT_SYMBOL net/mac802154/mac802154 0x01ab2d41 ieee802154_free_device +EXPORT_SYMBOL net/mac802154/mac802154 0x2b41d97b ieee802154_unregister_device +EXPORT_SYMBOL net/mac802154/mac802154 0x313b76ea ieee802154_register_device +EXPORT_SYMBOL net/mac802154/mac802154 0x4e0860ef ieee802154_alloc_device +EXPORT_SYMBOL net/mac802154/mac802154 0xed12f322 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x10935c2c ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x2803a993 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x367a3670 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x37435129 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x3936275a ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x44cf7bcb ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x47887865 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x517bcc35 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x542bb229 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x609f4919 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x806f0fef ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x90107382 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb3f20fa4 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xba472788 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x3ec1bedf nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x6fd4e591 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x7ffc185a __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_conntrack_proto_gre 0xe4c46f8d nf_ct_gre_keymap_flush +EXPORT_SYMBOL net/netfilter/nf_nat 0x2310f9af nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0x9c29f8d7 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xca90c782 nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0xcba8c321 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xe821356e nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0xef70cdd6 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/x_tables 0x08c473b7 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x136ba8f4 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x14db95c2 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x3d9c0a0c xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x43316321 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x4f83fa42 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x67108aaf xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x8913ed2a xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0xb28f5ef1 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xcfde9af6 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xd87ae60d xt_check_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0xe63dd031 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0xfdf7810b xt_register_matches +EXPORT_SYMBOL net/nfc/hci/hci 0x06e0b0e9 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x1388cbe6 nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0x1ba66276 nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0x20cacd27 nfc_hci_send_response +EXPORT_SYMBOL net/nfc/hci/hci 0x26d27643 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x328e4a1c nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x37f556c5 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x3b618a7c nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x3c6f69d9 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x52d2cf35 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x64a21399 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0x6a09b433 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x890812e6 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x8feece01 nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x9868ccc2 nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xc8610536 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0xd5f41db9 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0xe29134b0 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/nci/nci 0x07ed61bf nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x1b6af465 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x506ac23b nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xe9ca7cc1 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0xecf58340 nci_recv_frame +EXPORT_SYMBOL net/nfc/nfc 0x02cf6d2c nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x0b6b0f20 nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0x1691104a nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0x23d5c5b5 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x27c6f5e7 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x3b3b582e nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x3eb29fda nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0x48bd5ed1 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x5060c5ed nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x5c4c6348 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x7c42f086 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x87bf0f00 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0xa7f1296e nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0xb078cc69 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0xb346c0fd nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0xba3743b0 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0xbab843c6 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0xc6da327f nfc_class +EXPORT_SYMBOL net/nfc/nfc 0xcc0ac797 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0xf7e6b985 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc_digital 0x166e6746 nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x6d6f4967 nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x785bd77c nfc_digital_register_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x868be2a3 nfc_digital_free_device +EXPORT_SYMBOL net/phonet/phonet 0x08988466 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x137f9080 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x1d1da160 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0x69dc2f49 pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0xa1b6e53d pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0xa4c6b36f pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0xad3dfe85 phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0xc790d9ce pn_sock_unhash +EXPORT_SYMBOL net/rds/rds 0x5031b8c5 rds_str_array +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x05b054b9 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x2bbc5c0e rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x2ecb89fe rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x35595d4f rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x51588716 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x57791269 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x5bddf466 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x6c550987 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x910cefa5 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x9c7b4829 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb5463c8d rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc1b4fa0c rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd6ffe9fd rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd91b5b3b rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe59e3d7c rxrpc_kernel_begin_call +EXPORT_SYMBOL net/sctp/sctp 0x22def1d6 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x56229b3f gss_mech_get +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xba623c84 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xe476d18f gss_mech_put +EXPORT_SYMBOL net/sunrpc/sunrpc 0x84405935 svc_pool_stats_open +EXPORT_SYMBOL net/wimax/wimax 0x4e02aae5 wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0xbf0f92b6 wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x014c6bd6 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x01f578a0 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0b38dff0 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0d62f988 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x0e7f7f4c wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x1108882a cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x21c17545 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x26baa60c cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x2a4c7029 cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x2fe84799 cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x31cc2e8d cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x34bdd237 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x381b4209 cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0x3b410f7d cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x3ca4c1fa ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x406a8302 cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x4a2b0a9c cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x4c3b5878 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x4c40b2fb ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x52b6132a cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x549ae50f ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x57c3d755 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x5a738974 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x5b44fd09 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x5b4dc269 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x60c9e9b4 cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0x638e474f wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x659ef5a9 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x65beb803 cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x6df170a5 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x706bb865 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x7355acf9 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x74f534ad wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x7554ee40 cfg80211_inform_bss_width_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x759cbdc7 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x7ac1bf18 cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x7aca2a53 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x7bb5df2d cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x7dbd11e3 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fab53e6 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x82544ace cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x87fb5556 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x88ccd905 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0x9152caf7 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x969b3b45 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x97afa597 wiphy_new +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x9e2b3cb1 cfg80211_rx_unprot_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 0xa5a35425 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0xa5be8641 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xabfef820 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0xb206db38 cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0xb66fce5d cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0xb7cadba5 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0xb7cdd477 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0xc15c8611 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xcf618a57 cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0xd346c98a cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xd4a7dc7e cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xd6aae7ff cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xd8aa40bd cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0xdae1386c cfg80211_del_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xdc9e5dc0 cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0xddb01edf cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0xe52f638b cfg80211_inform_bss_width +EXPORT_SYMBOL net/wireless/cfg80211 0xe882a9e5 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0xece9e435 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xee42db3c cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0xf05da8c2 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0xf0736cbd cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xf3185dd3 cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xf548d241 cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0xf5840574 cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0xfa57b259 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x2d0f99e5 print_ssid +EXPORT_SYMBOL net/wireless/lib80211 0x41a5d43d lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x681e3bf6 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0x7b949896 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0x81810cb5 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0x93622ae0 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xe678e0d5 lib80211_register_crypto_ops +EXPORT_SYMBOL sound/ac97_bus 0x42d6be8f ac97_bus_type +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 0x3c7affea snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3fb4d161 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x5dab8e92 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 0x6c48be3a snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7ac2f329 snd_seq_expand_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7b8699eb snd_seq_event_port_detach +EXPORT_SYMBOL sound/core/seq/snd-seq 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 0xdc94aee6 snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x30143428 snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x3a57f235 snd_seq_autoload_unlock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x623b0279 snd_seq_device_register_driver +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xb90668b2 snd_seq_autoload_lock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xc622fb29 snd_seq_device_unregister_driver +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 0x2b51b084 snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x350963b4 snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x7f62d029 snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x83914b9a snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x92ee6bb0 snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x9e7d3f0f snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xbc141dfc snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xf2bf1549 snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0xdb08bb93 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x019aa2fa snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0x0746fe48 snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0x081b368e snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0x08f00cf2 snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0x0bd7cc61 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0x0c338903 snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0x0df8b92a snd_jack_report +EXPORT_SYMBOL sound/core/snd 0x165aca63 snd_card_proc_new +EXPORT_SYMBOL sound/core/snd 0x18e1683f snd_dma_program +EXPORT_SYMBOL sound/core/snd 0x191e88cf snd_dma_pointer +EXPORT_SYMBOL sound/core/snd 0x1cd3a292 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x1f9bd629 snd_card_free_when_closed +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 0x3040e042 snd_add_device_sysfs_file +EXPORT_SYMBOL sound/core/snd 0x31a2f264 snd_register_device_for_dev +EXPORT_SYMBOL sound/core/snd 0x35887694 snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x3eac8733 snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4b015768 snd_iprintf +EXPORT_SYMBOL sound/core/snd 0x4e91b510 snd_device_register +EXPORT_SYMBOL sound/core/snd 0x57881c35 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x587fb9b8 snd_jack_new +EXPORT_SYMBOL sound/core/snd 0x602c96f0 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x62018358 snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x67583fc1 snd_card_free +EXPORT_SYMBOL sound/core/snd 0x6bd2e8cc snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x6c3182b4 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x70f406e8 snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x79ee192b snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0x7a95a3f9 snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0x7b28ece1 snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x84161460 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x932bc765 snd_power_wait +EXPORT_SYMBOL sound/core/snd 0x9ca0cd70 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0x9db3248b snd_cards +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0xa1a34148 snd_device_new +EXPORT_SYMBOL sound/core/snd 0xa7aa1d79 snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0xb0e6af16 snd_info_register +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xb481ffc2 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0xb8510c6d snd_component_add +EXPORT_SYMBOL sound/core/snd 0xc51fefaf snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0xca5f63d3 snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0xccd3a719 snd_seq_root +EXPORT_SYMBOL sound/core/snd 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL sound/core/snd 0xd272b64f snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0xd77f6dfa snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0xdacc9bb2 snd_card_register +EXPORT_SYMBOL sound/core/snd 0xde7b8247 snd_device_free +EXPORT_SYMBOL sound/core/snd 0xe1e549eb snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0xe52e69b0 snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0xe64eb164 snd_card_create +EXPORT_SYMBOL sound/core/snd 0xed0580f9 snd_card_unref +EXPORT_SYMBOL sound/core/snd-hwdep 0xb20d4fcc snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-page-alloc 0x20424e2a snd_sgbuf_get_chunk_size +EXPORT_SYMBOL sound/core/snd-page-alloc 0x3b91f3af snd_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x719a7cdb snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x87415077 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-page-alloc 0x8b9e86e6 snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0xa55fb04e snd_dma_get_reserved_buf +EXPORT_SYMBOL sound/core/snd-page-alloc 0xade88e76 snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0xedb7e08d snd_dma_reserve_buf +EXPORT_SYMBOL sound/core/snd-pcm 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL sound/core/snd-pcm 0x02e03101 snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0x04cda566 snd_interval_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x0a8f0f14 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x0c3aece3 snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0x138b2591 snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0x170846f1 snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x21305920 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0x2fe57b90 snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x342e1e5a snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0x363431b9 snd_pcm_release_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 0x3a0d5908 snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0x3b8f77d5 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x4579d3bd snd_pcm_hw_param_last +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 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x54462528 snd_pcm_stop +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 0x687ad07f snd_pcm_lib_malloc_pages +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 0x74aea955 snd_pcm_debug_name +EXPORT_SYMBOL sound/core/snd-pcm 0x7d4f21fb snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x7f32f2c4 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0x82d382a5 snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0x89a251d3 snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0x8ff6e8e5 snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0x91428484 snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x978b4dc7 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0x9c20d0f4 snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x9d5a2ee5 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0x9f3e27b9 snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0xa29c5a9f snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0xa5e1e367 snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xa9adc229 snd_pcm_link_rwlock +EXPORT_SYMBOL sound/core/snd-pcm 0xac0a1aa9 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0xb387f689 snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xb594f41a snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xc35f5fcb snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0xcc66cd19 snd_pcm_sgbuf_ops_page +EXPORT_SYMBOL sound/core/snd-pcm 0xd8f7f1d8 snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0xddd8fba6 snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0xe1a7142c snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0xe48522a8 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xed0f4441 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0xf16a2f6e snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xf2434945 snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xf5cf876c snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0xf651a49e _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0xf6f7d354 snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xfac676ac snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0xfc78aa7b snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x08c1835e snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0e63386c snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x12393982 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x22703205 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0x22b356e5 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x3ebfcfd3 __snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5153b33c snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x74151939 snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0x97f197e2 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa036f5fc snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa5d4090b snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0xacc5c67a snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb5bf618c snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd9bbd325 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe4ae2966 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe73f36ba snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xea625bed snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf1edcae6 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf9f64f09 __snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-timer 0x09550b3e snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0x0e8ae29e snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0x35c20921 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0x391f4876 snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0x6960dc64 snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0x96597786 snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0xa67c2758 snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0xb8194fdf snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0xbe493d43 snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0xc00356ec snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0xd04b1233 snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0xdc82585b snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0xfff4825e snd_timer_resolution +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xc0fec227 snd_mpu401_uart_interrupt +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xe7143e38 snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x0092cfa4 snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x05060a19 snd_opl3_regmap +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x0868f9b8 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x43e257d7 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x571e71ab snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x8509b453 snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x85e82ca7 snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xb078541a snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xb446a3ba snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xb5e14e3a snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0x3e00c0f2 snd_opl4_write +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0x573106bc snd_opl4_read +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0x7bfa8ea0 snd_opl4_write_memory +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0x95dec9db snd_opl4_create +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0xb6891219 snd_opl4_read_memory +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x06e5d247 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x1354f9a5 snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x4800a34e snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x48a26909 snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x8bd348b1 snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x8beacba0 snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xb087d96c snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xcb1dccab snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xd2e4f18c snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x09abbe77 amdtp_out_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0bdd7f47 amdtp_out_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0c07a2e0 amdtp_out_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0d1e0990 fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1137d545 amdtp_out_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x123cb1f4 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1794bb60 amdtp_out_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1d10af99 cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1efefab1 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2940fcce fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x369aabc3 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3929d859 amdtp_out_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3ba18f41 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x407174ba fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4da65f54 amdtp_out_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5d162df1 amdtp_out_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5da9e501 amdtp_out_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6793c449 fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6bba9bf6 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x746eb0a4 cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa3d7ac7b cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb1123ab7 amdtp_out_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xdec30ff9 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe61a474b iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe729db6c fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe832c19c amdtp_out_stream_set_parameters +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x07241e7a snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x141bc3e6 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x413a3c9d snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x95029307 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xa50e1a7c snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xdc6ecd26 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x44d3a0a5 snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x7112ea21 snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x8fd13b17 snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xd0529d4d snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xd4b43a21 snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xf32c0519 snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x6258aef9 snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x78d653ab snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xa59cfe7e snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xd07723ba snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x692d303e snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xc62eeeb7 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x1e7ab3d4 snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x5a7f1496 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x997d1154 snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xd6b9a2d3 snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xff0416e3 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-i2c 0x202724fe snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x809a9a7a snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xa6e18e7c snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xf9a52b38 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0xfbe2d2a0 snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0xfdaa3e7a snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-tea6330t 0x2f834bc8 snd_tea6330t_detect +EXPORT_SYMBOL sound/i2c/snd-tea6330t 0xf53bd49f snd_tea6330t_update_mixer +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0x0a0afbc3 snd_es1688_create +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0x20bb88da snd_es1688_pcm +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0x4e19b3fd snd_es1688_mixer +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0x84bfd2f5 snd_es1688_mixer_write +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0xd0c030d9 snd_es1688_reset +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x0bb08308 snd_gf1_write8 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x12aefa6f snd_gf1_look8 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x15755194 snd_gf1_stop_voice +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x1c1ce117 snd_gus_interrupt +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x2df72cbd snd_gf1_new_mixer +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x2ececc91 snd_gf1_dram_addr +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x2f2268ff snd_gf1_write16 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x3d269ba1 snd_gf1_i_write8 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x45f6dd21 snd_gf1_free_voice +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x46db8d67 snd_gf1_lvol_to_gvol_raw +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x5beadb41 snd_gf1_translate_freq +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x5fc3ca73 snd_gus_use_inc +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x61ab101d snd_gf1_i_look16 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x61f57c61 snd_gf1_ctrl_stop +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x6ccec238 snd_gf1_peek +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x6fee7dc4 snd_gf1_delay +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x756682ab snd_gus_use_dec +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x762e0947 snd_gf1_write_addr +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x778d97ed snd_gf1_mem_xfree +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x785c9c2a snd_gf1_pcm_new +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x78fb8c6b snd_gf1_mem_lock +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x8297dd30 snd_gus_dram_write +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x8e4d871c snd_gus_initialize +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x94b23f21 snd_gf1_poke +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x9af14f43 snd_gus_create +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x9d24d8be snd_gf1_mem_free +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xb798d6a9 snd_gf1_mem_alloc +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xbde3164e snd_gf1_i_look8 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xc007c50c snd_gf1_rawmidi_new +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xc3e80ea6 snd_gus_dram_read +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xc43a5527 snd_gf1_atten_table +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xc9ae8b5e snd_gf1_look16 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xcd55d30a snd_gf1_alloc_voice +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x032aed8c snd_msnd_DAPQ +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x0e096be3 snd_msnd_init_queue +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x1028b1cd snd_msnd_pcm +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x1b1ccb69 snd_msnd_send_dsp_cmd +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x1e5b4005 snd_msndmix_force_recsrc +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x35025185 snd_msnd_enable_irq +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x75026b24 snd_msndmidi_input_read +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x75721002 snd_msnd_DARQ +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x948815b5 snd_msnd_send_word +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x9615098c snd_msnd_dsp_halt +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xb4c97774 snd_msnd_upload_host +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xb6073368 snd_msndmix_new +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xcb2a51b4 snd_msndmix_setup +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xfc3c462a snd_msnd_disable_irq +EXPORT_SYMBOL sound/isa/opti9xx/snd-miro 0x3bf170a5 snd_aci_get_aci +EXPORT_SYMBOL sound/isa/opti9xx/snd-miro 0x8186edb4 snd_aci_cmd +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x02d66db8 snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x1db819f7 snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x5a30f4bd snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x5d78691b snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x62a84435 snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x8dbd407e snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x9114e705 snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xab710e24 snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xd51f25ea snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xf7ae667d snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb16-csp 0xb5afeb84 snd_sb_csp_new +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x398dcc38 snd_sb16dsp_configure +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x425b23fe snd_sb16dsp_get_pcm_ops +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x96ddf320 snd_sb16dsp_pcm +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xe0b3f690 snd_sb16dsp_interrupt +EXPORT_SYMBOL sound/isa/sb/snd-sb8-dsp 0x46d60209 snd_sb8dsp_midi_interrupt +EXPORT_SYMBOL sound/isa/sb/snd-sb8-dsp 0x92576058 snd_sb8dsp_pcm +EXPORT_SYMBOL sound/isa/sb/snd-sb8-dsp 0xb003ee7c snd_sb8dsp_interrupt +EXPORT_SYMBOL sound/isa/sb/snd-sb8-dsp 0xbf486f58 snd_sb8dsp_midi +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x175d304a snd_emu8000_init_fm +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x47287da5 snd_emu8000_peek +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x5759aed5 snd_emu8000_poke_dw +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x62a7f1dc snd_emu8000_poke +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x785fcbd3 snd_emu8000_load_reverb_fx +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x7f928b2a snd_emu8000_dma_chan +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x8e846b2c snd_emu8000_peek_dw +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x978f87f0 snd_emu8000_update_equalizer +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xab7f4e3a snd_emu8000_load_chorus_fx +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xf7695225 snd_emu8000_update_chorus_mode +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xfb128f14 snd_emu8000_update_reverb_mode +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x02079e45 snd_wss_mixer +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x0259a26d snd_wss_chip_id +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x049f9a2b snd_wss_get_pcm_ops +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x075a2a11 snd_cs4236_ext_in +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x140f0ffd snd_wss_info_double +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x24dcff63 snd_wss_get_single +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x2961cf61 snd_wss_mce_up +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x456bea06 snd_wss_get_double +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x63dd9730 snd_wss_out +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x7ae36391 snd_wss_overrange +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x7b202637 snd_wss_interrupt +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x9a74c216 snd_wss_put_double +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x9a8e66b2 snd_wss_timer +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x9dbb8815 snd_wss_in +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x9dcfbf71 snd_cs4236_ext_out +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xc8e5b923 snd_wss_info_single +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xd3df39c8 snd_wss_pcm +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xe3be8cdb snd_wss_create +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xf0c7f958 snd_wss_mce_down +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xfbc3d773 snd_wss_put_single +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x01400ef0 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x2b13be69 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x2de0132d snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3fa22f3b snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x757da535 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x7690d5dc snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x83a7df1e snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x951e77b6 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9847851e snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb8137200 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc5e0c8e7 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xd0531e33 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xd584abad snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xda586f03 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xdad374ea snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xebb57b8c snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xef6da6c1 snd_ac97_resume +EXPORT_SYMBOL sound/pci/asihpi/snd-asihpi 0x2443d715 hpi_send_recv +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x11bd1d41 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x61abc114 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x7267c108 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x94809b91 snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xa42053bb snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xa9f92a09 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xbbbe32dc snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xee5bc665 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xf9558542 snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x0d92b790 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x4de07be1 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xe9074a10 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x18b999f1 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1da8a5e2 oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1dca1ccd oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2a65e70d oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2c9aa4c9 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x39cc360f oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x42120d5d oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x57aeb2a2 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x7ee00a9b oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x8a1f2292 oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb443ad46 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb62f8eaf oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb9d5002b oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc30b798c oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc9439a6b oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xcbf6d761 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xea149c56 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf9bbb5e2 oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xfaf63db6 oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xfde77614 oxygen_write16 +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x02439daf snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x30bf6a3b snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x91ea5749 snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x9f269d20 snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xda613ac2 snd_trident_stop_voice +EXPORT_SYMBOL sound/soundcore 0x672ed50f sound_class +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x23bbf4d9 snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x49191f18 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 0x7b9a6ee1 snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x85e8b56c snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xe690bfe9 snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xf9eccff2 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/snd-util-mem 0x13a4d3bc __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x1ef79f63 snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x2c25d537 __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x7fbd3a68 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0xa0b5912d snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xc8e0e455 snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xc9a2313b snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0xd841835c __snd_util_mem_alloc +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x38878a96 snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x63343b1d snd_usbmidi_input_stop +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL vmlinux 0x00000000 __symbol_put +EXPORT_SYMBOL vmlinux 0x00000000 current_fs_time +EXPORT_SYMBOL vmlinux 0x00000000 d_tmpfile +EXPORT_SYMBOL vmlinux 0x00000000 do_sync_read +EXPORT_SYMBOL vmlinux 0x00000000 filp_close +EXPORT_SYMBOL vmlinux 0x00000000 finish_open +EXPORT_SYMBOL vmlinux 0x00000000 generic_getxattr +EXPORT_SYMBOL vmlinux 0x00000000 generic_write_sync +EXPORT_SYMBOL vmlinux 0x00000000 get_unmapped_area +EXPORT_SYMBOL vmlinux 0x00000000 in_group_p +EXPORT_SYMBOL vmlinux 0x00000000 inode_add_bytes +EXPORT_SYMBOL vmlinux 0x00000000 iov_shorten +EXPORT_SYMBOL vmlinux 0x00000000 iterate_fd +EXPORT_SYMBOL vmlinux 0x00000000 ns_capable +EXPORT_SYMBOL vmlinux 0x00000000 path_is_under +EXPORT_SYMBOL vmlinux 0x00000000 register_exec_domain +EXPORT_SYMBOL vmlinux 0x00000000 schedule_timeout +EXPORT_SYMBOL vmlinux 0x00000000 sock_register +EXPORT_SYMBOL vmlinux 0x00000000 sys_close +EXPORT_SYMBOL vmlinux 0x00000000 task_nice +EXPORT_SYMBOL vmlinux 0x00000000 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x00000000 vm_brk +EXPORT_SYMBOL vmlinux 0x000f78d8 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x004f5b0c i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x00572faf __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x00777ad1 phy_driver_register +EXPORT_SYMBOL vmlinux 0x007a6387 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x00801678 flush_scheduled_work +EXPORT_SYMBOL vmlinux 0x00888ff5 netpoll_print_options +EXPORT_SYMBOL vmlinux 0x0097cc84 swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0x009b3154 dev_crit +EXPORT_SYMBOL vmlinux 0x00a67cf9 bio_map_kern +EXPORT_SYMBOL vmlinux 0x00b9985e mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x00bf9f91 efi +EXPORT_SYMBOL vmlinux 0x00c52430 ida_simple_get +EXPORT_SYMBOL vmlinux 0x00e33fac security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x00e8097b csum_partial_copy_fromiovecend +EXPORT_SYMBOL vmlinux 0x00ea40cd clear_nlink +EXPORT_SYMBOL vmlinux 0x00ea67cf dma_mark_declared_memory_occupied +EXPORT_SYMBOL vmlinux 0x00f43fb3 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x00ffc120 mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x0105b4c0 netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x01080003 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x010983e2 vfs_statfs +EXPORT_SYMBOL vmlinux 0x01127a28 default_llseek +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x0118223e alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x0124529a agp_free_page_array +EXPORT_SYMBOL vmlinux 0x0137cc2b page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x013c76f8 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x01444cd1 idr_replace +EXPORT_SYMBOL vmlinux 0x016913dd block_write_begin +EXPORT_SYMBOL vmlinux 0x017a9df4 ipmi_smi_watcher_unregister +EXPORT_SYMBOL vmlinux 0x01902adf netpoll_trap +EXPORT_SYMBOL vmlinux 0x01ab1939 prepare_binprm +EXPORT_SYMBOL vmlinux 0x01c508f1 check_submounts_and_drop +EXPORT_SYMBOL vmlinux 0x01d62396 input_unregister_device +EXPORT_SYMBOL vmlinux 0x01ee56e9 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x02217a62 pnp_get_resource +EXPORT_SYMBOL vmlinux 0x022e8b34 agp_allocate_memory +EXPORT_SYMBOL vmlinux 0x0237b57a arch_unregister_cpu +EXPORT_SYMBOL vmlinux 0x0239fa2e kern_path +EXPORT_SYMBOL vmlinux 0x023d15f2 cad_pid +EXPORT_SYMBOL vmlinux 0x024f26f7 mmc_cache_ctrl +EXPORT_SYMBOL vmlinux 0x02629369 phy_print_status +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x028080a4 kobject_add +EXPORT_SYMBOL vmlinux 0x029444f0 native_read_tsc +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a2434a alloc_mdio_bitbang +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02ba6b9a udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x02c69fd5 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x02dce467 ipmi_smi_watcher_register +EXPORT_SYMBOL vmlinux 0x02ee26c1 free_pages_exact +EXPORT_SYMBOL vmlinux 0x02ef67b3 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x02f9a2bb simple_write_end +EXPORT_SYMBOL vmlinux 0x030e5a90 sock_edemux +EXPORT_SYMBOL vmlinux 0x031ae89a blkdev_get +EXPORT_SYMBOL vmlinux 0x031d27df neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x033ecc52 ll_rw_block +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x035e571f skb_copy_datagram_const_iovec +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x03761220 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x039e864c put_tty_driver +EXPORT_SYMBOL vmlinux 0x03b580eb wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x03c06156 bitmap_fold +EXPORT_SYMBOL vmlinux 0x03eb77a6 ihold +EXPORT_SYMBOL vmlinux 0x03eec0c9 vga_switcheroo_register_audio_client +EXPORT_SYMBOL vmlinux 0x03f68611 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x03f73059 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x040d21e8 set_blocksize +EXPORT_SYMBOL vmlinux 0x041d2f30 ipmi_smi_add_proc_entry +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x0424ff2e bio_clone_bioset +EXPORT_SYMBOL vmlinux 0x043af86f set_pages_wb +EXPORT_SYMBOL vmlinux 0x0444c000 udp_del_offload +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x045d46d9 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x04695e4c seq_bitmap_list +EXPORT_SYMBOL vmlinux 0x0478b539 d_obtain_alias +EXPORT_SYMBOL vmlinux 0x04870d16 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x0487881c bio_reset +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x04aaba1d elevator_change +EXPORT_SYMBOL vmlinux 0x04acf2a6 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x04b2c328 soft_cursor +EXPORT_SYMBOL vmlinux 0x04b8ba34 napi_complete +EXPORT_SYMBOL vmlinux 0x04d0dcd4 dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x04d8c750 release_perfctr_nmi +EXPORT_SYMBOL vmlinux 0x04e18d9e security_task_getsecid +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04fae6d2 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x050877b9 dmi_first_match +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x052da8e3 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x052f3308 dev_warn +EXPORT_SYMBOL vmlinux 0x054434d6 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x056b3f0e insert_inode_locked +EXPORT_SYMBOL vmlinux 0x05716d8c keyring_alloc +EXPORT_SYMBOL vmlinux 0x0571f18c agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0x05784661 netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x057ce975 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0x057f37fe sync_blockdev +EXPORT_SYMBOL vmlinux 0x0587d27b agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0x0592b0de gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x0593a99b init_timer_key +EXPORT_SYMBOL vmlinux 0x0598dc94 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x059da1fa xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x05ab024b bitmap_unplug +EXPORT_SYMBOL vmlinux 0x05c43232 from_kgid +EXPORT_SYMBOL vmlinux 0x05dc9833 pci_bus_put +EXPORT_SYMBOL vmlinux 0x0600eaa8 netlink_set_err +EXPORT_SYMBOL vmlinux 0x06012e5d sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x0601eb38 seq_vprintf +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x068c7263 ioremap_cache +EXPORT_SYMBOL vmlinux 0x068dd493 vc_cons +EXPORT_SYMBOL vmlinux 0x06adc31d loop_backing_file +EXPORT_SYMBOL vmlinux 0x06ae02fb elv_rb_add +EXPORT_SYMBOL vmlinux 0x06ae0ef3 skb_queue_head +EXPORT_SYMBOL vmlinux 0x06c0dae5 __kernel_fpu_end +EXPORT_SYMBOL vmlinux 0x06cb7d2e blk_bio_map_sg +EXPORT_SYMBOL vmlinux 0x06d2f086 dma_spin_lock +EXPORT_SYMBOL vmlinux 0x06d8b30a pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x06e458e0 ida_get_new_above +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x071f6d2f devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x0727e44e pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x073dfa12 generate_resume_trace +EXPORT_SYMBOL vmlinux 0x07608604 acpi_get_vendor_resource +EXPORT_SYMBOL vmlinux 0x0766bdfe ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x078c9b3c end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x0799aca4 local_bh_enable +EXPORT_SYMBOL vmlinux 0x07a66cf2 tcf_hash_release +EXPORT_SYMBOL vmlinux 0x07a7314c blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07aa3290 acpi_walk_resource_buffer +EXPORT_SYMBOL vmlinux 0x07abbacd ida_destroy +EXPORT_SYMBOL vmlinux 0x07b5f6a3 kfree_skb +EXPORT_SYMBOL vmlinux 0x07bd87f7 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x07bf48c9 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x07c8564d dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x07cbe0c8 dump_trace +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07d02ec7 irq_to_desc +EXPORT_SYMBOL vmlinux 0x07d376a4 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x07d4822d vfs_mkdir +EXPORT_SYMBOL vmlinux 0x07d50a24 csum_partial +EXPORT_SYMBOL vmlinux 0x07d90c37 neigh_lookup +EXPORT_SYMBOL vmlinux 0x07db2adb seq_write +EXPORT_SYMBOL vmlinux 0x07e0d69d scsi_remove_target +EXPORT_SYMBOL vmlinux 0x08000a57 dev_trans_start +EXPORT_SYMBOL vmlinux 0x081e377f ata_print_version +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x085bbdab blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x0897287b acpi_disable_all_gpes +EXPORT_SYMBOL vmlinux 0x089dd2b1 netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x08bf826c _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0x08eaa49d sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x08fb226a unregister_filesystem +EXPORT_SYMBOL vmlinux 0x0908a28e agp_collect_device_status +EXPORT_SYMBOL vmlinux 0x0945610d neigh_connected_output +EXPORT_SYMBOL vmlinux 0x0949a3c9 ip_fragment +EXPORT_SYMBOL vmlinux 0x094ec2a4 blk_end_request +EXPORT_SYMBOL vmlinux 0x09594ae1 blk_start_queue +EXPORT_SYMBOL vmlinux 0x09623fa0 vsc824x_add_skew +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x0992780d efi_enabled +EXPORT_SYMBOL vmlinux 0x099fa7e1 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09ca8099 agp_bridge +EXPORT_SYMBOL vmlinux 0x09cbf110 pipe_unlock +EXPORT_SYMBOL vmlinux 0x09d163ac agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09e61a12 single_release +EXPORT_SYMBOL vmlinux 0x0a170234 free_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a2dbd30 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x0a3131f6 strnchr +EXPORT_SYMBOL vmlinux 0x0a469d23 mfd_clone_cell +EXPORT_SYMBOL vmlinux 0x0a4cd025 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x0a56d356 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x0a5c6fbb spi_schedule_dv_device +EXPORT_SYMBOL vmlinux 0x0a620f0e tcf_generic_walker +EXPORT_SYMBOL vmlinux 0x0a6e4657 skb_push +EXPORT_SYMBOL vmlinux 0x0a866e48 blk_fetch_request +EXPORT_SYMBOL vmlinux 0x0a86e25b _raw_read_unlock_irq +EXPORT_SYMBOL vmlinux 0x0aa2b937 register_quota_format +EXPORT_SYMBOL vmlinux 0x0ac135d4 lro_flush_all +EXPORT_SYMBOL vmlinux 0x0ac525e6 register_sysctl +EXPORT_SYMBOL vmlinux 0x0ac59f4e kmap_atomic +EXPORT_SYMBOL vmlinux 0x0acb1a3c __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0b06489e __blk_end_request_all +EXPORT_SYMBOL vmlinux 0x0b070b33 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b0febcd read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x0b12fad0 phy_start_aneg +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b3b5391 agp_find_bridge +EXPORT_SYMBOL vmlinux 0x0b44b10d mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b48c680 pnp_is_active +EXPORT_SYMBOL vmlinux 0x0b5d364c free_netdev +EXPORT_SYMBOL vmlinux 0x0b64cef9 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x0b73486a pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b80ec98 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0x0b92cda5 kernel_listen +EXPORT_SYMBOL vmlinux 0x0ba7fdd2 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0beafcde gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x0bf99dc2 nf_register_hook +EXPORT_SYMBOL vmlinux 0x0bfc7f2f scsi_free_command +EXPORT_SYMBOL vmlinux 0x0bfd8155 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x0c0321a4 scsi_print_result +EXPORT_SYMBOL vmlinux 0x0c1ab441 inet_add_offload +EXPORT_SYMBOL vmlinux 0x0c1df7da current_task +EXPORT_SYMBOL vmlinux 0x0c210c6b iunique +EXPORT_SYMBOL vmlinux 0x0c24dd54 __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x0c27db4a __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c4b180b mb_cache_create +EXPORT_SYMBOL vmlinux 0x0c581fc8 padata_do_parallel +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c65e73c scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0x0c8c9e99 scsi_show_extd_sense +EXPORT_SYMBOL vmlinux 0x0ca7b7a8 acpi_check_region +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cbf0bae shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x0cc7fc0a pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0x0cdb7d12 __kernel_fpu_begin +EXPORT_SYMBOL vmlinux 0x0ce900af blk_finish_plug +EXPORT_SYMBOL vmlinux 0x0cf0f427 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x0d2a66c4 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x0d3dda14 acpi_get_type +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d5d6811 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x0d69f418 uart_get_divisor +EXPORT_SYMBOL vmlinux 0x0d9bedac inet6_release +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0db8b9b1 sock_i_uid +EXPORT_SYMBOL vmlinux 0x0dbe1bcf kmap_high +EXPORT_SYMBOL vmlinux 0x0de92f51 tcp_syn_flood_action +EXPORT_SYMBOL vmlinux 0x0de959c9 netdev_err +EXPORT_SYMBOL vmlinux 0x0ded1e20 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x0e08c4fd pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0x0e24a07e d_validate +EXPORT_SYMBOL vmlinux 0x0e4d4fdf cdev_add +EXPORT_SYMBOL vmlinux 0x0e574ed7 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x0e62f046 thaw_super +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e78f571 lock_may_write +EXPORT_SYMBOL vmlinux 0x0e7cf4f6 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x0e971cb4 simple_link +EXPORT_SYMBOL vmlinux 0x0ea31478 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0x0eaf451e hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x0ec1a170 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0efd31de pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x0f362da1 seq_putc +EXPORT_SYMBOL vmlinux 0x0f4106ce acpi_get_hp_hw_control_from_firmware +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f569da5 tcf_register_action +EXPORT_SYMBOL vmlinux 0x0f575ca0 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x0f6a9694 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x0f714a1f simple_statfs +EXPORT_SYMBOL vmlinux 0x0f714e1a pci_map_biosrom +EXPORT_SYMBOL vmlinux 0x0f8d4575 scm_fp_dup +EXPORT_SYMBOL vmlinux 0x0f97fb36 mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fd00a68 acpi_clear_event +EXPORT_SYMBOL vmlinux 0x0ff1e34b key_reject_and_link +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x1016a6ab d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x102c56de irq_regs +EXPORT_SYMBOL vmlinux 0x10409619 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x1045bf56 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x105c2447 init_special_inode +EXPORT_SYMBOL vmlinux 0x106f13ab crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x1077bd3d d_find_any_alias +EXPORT_SYMBOL vmlinux 0x10ab7e05 devm_gpiod_put +EXPORT_SYMBOL vmlinux 0x10ab7e68 down_killable +EXPORT_SYMBOL vmlinux 0x10d4c33b ata_port_printk +EXPORT_SYMBOL vmlinux 0x10db594e dev_change_carrier +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x111c50bc drop_super +EXPORT_SYMBOL vmlinux 0x11267875 scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0x112fc2d5 free_mdio_bitbang +EXPORT_SYMBOL vmlinux 0x1159c4a4 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x1168097b find_lock_page +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x11834182 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x1193a6f4 dma_mmap_from_coherent +EXPORT_SYMBOL vmlinux 0x119d2d4d nf_register_hooks +EXPORT_SYMBOL vmlinux 0x11a3db32 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x11dd01ad intel_scu_ipc_command +EXPORT_SYMBOL vmlinux 0x11e2ec12 flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x11fb63b9 inetdev_by_index +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x122cc3e8 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x12358ef4 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0x125041c1 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x125f793c inet_accept +EXPORT_SYMBOL vmlinux 0x12771390 setattr_copy +EXPORT_SYMBOL vmlinux 0x128a5cf9 complete_all +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12ab2767 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x12abae06 netif_rx +EXPORT_SYMBOL vmlinux 0x12b422f9 bdi_register_dev +EXPORT_SYMBOL vmlinux 0x12cb08bb inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x12cfca1c dev_notice +EXPORT_SYMBOL vmlinux 0x12da5bb2 __kmalloc +EXPORT_SYMBOL vmlinux 0x12e4373a writeback_in_progress +EXPORT_SYMBOL vmlinux 0x12fb511c security_file_permission +EXPORT_SYMBOL vmlinux 0x1315458d dquot_release +EXPORT_SYMBOL vmlinux 0x13250089 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x133e6410 devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x1348760d ipmi_request_settime +EXPORT_SYMBOL vmlinux 0x135f2a03 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x136b759d sock_no_socketpair +EXPORT_SYMBOL vmlinux 0x137d0a41 force_sig +EXPORT_SYMBOL vmlinux 0x137f3de4 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0x13abab4d get_fs_type +EXPORT_SYMBOL vmlinux 0x13c31c3c blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x13c4666c scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x14194ae0 __sb_end_write +EXPORT_SYMBOL vmlinux 0x1420b379 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x143835a1 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x146a2bf0 md_unregister_thread +EXPORT_SYMBOL vmlinux 0x147c31ba mddev_congested +EXPORT_SYMBOL vmlinux 0x148fa42f i8042_install_filter +EXPORT_SYMBOL vmlinux 0x14a78365 x86_hyper +EXPORT_SYMBOL vmlinux 0x14ab99e6 blk_mq_free_single_hw_queue +EXPORT_SYMBOL vmlinux 0x14d89f59 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x14e18ee4 generic_setlease +EXPORT_SYMBOL vmlinux 0x150389d6 acpi_processor_power_init_bm_check +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x1551dc51 bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x1573814a gen_new_estimator +EXPORT_SYMBOL vmlinux 0x1599fd3d netif_rx_ni +EXPORT_SYMBOL vmlinux 0x15a4bedd scsi_host_put +EXPORT_SYMBOL vmlinux 0x15c00246 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x15e4bbda i2c_clients_command +EXPORT_SYMBOL vmlinux 0x15eed636 generic_listxattr +EXPORT_SYMBOL vmlinux 0x15f3548a follow_up +EXPORT_SYMBOL vmlinux 0x15f571ec blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x15fbff6f uart_suspend_port +EXPORT_SYMBOL vmlinux 0x160ea4c8 sfi_disabled +EXPORT_SYMBOL vmlinux 0x161fc0e7 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x16305289 warn_slowpath_null +EXPORT_SYMBOL vmlinux 0x1646c243 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0x164cbc7a lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0x1651097e textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x1651413a tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x1653c74a phy_connect_direct +EXPORT_SYMBOL vmlinux 0x167e7f9d __get_user_1 +EXPORT_SYMBOL vmlinux 0x167f8d66 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x168148e8 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x1689b486 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x168f1082 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x16a6391d neigh_ifdown +EXPORT_SYMBOL vmlinux 0x16b4f5b2 __memcg_kmem_get_cache +EXPORT_SYMBOL vmlinux 0x16b680e1 da903x_query_status +EXPORT_SYMBOL vmlinux 0x16bbee93 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x16c6a86a tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x16d9f5c5 textsearch_unregister +EXPORT_SYMBOL vmlinux 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL vmlinux 0x16ea5d9f lockref_get +EXPORT_SYMBOL vmlinux 0x16f26304 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x16fb371b pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0x16fc7b95 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x170c25ee acpi_get_next_object +EXPORT_SYMBOL vmlinux 0x1716684a pci_clear_master +EXPORT_SYMBOL vmlinux 0x17203cb5 generic_delete_inode +EXPORT_SYMBOL vmlinux 0x17244fae eth_header_cache +EXPORT_SYMBOL vmlinux 0x173082da __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0x1754a1a3 secpath_dup +EXPORT_SYMBOL vmlinux 0x175b21ef xfrm_state_add +EXPORT_SYMBOL vmlinux 0x1790d76b _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0x17a49637 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17df6123 generic_read_dir +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x17f3f5b7 lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x17fa81cd __idr_get_new_above +EXPORT_SYMBOL vmlinux 0x180a2aa0 filemap_fault +EXPORT_SYMBOL vmlinux 0x1822f875 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x1826f089 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x184e6c85 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x185beb0a seq_release +EXPORT_SYMBOL vmlinux 0x18699f7e blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x188d98d6 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18a6ffdd md_error +EXPORT_SYMBOL vmlinux 0x18c80bc8 dev_addr_flush +EXPORT_SYMBOL vmlinux 0x18d96501 atomic64_dec_if_positive_cx8 +EXPORT_SYMBOL vmlinux 0x18e0dbf0 swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0x18e2faa4 kmap_atomic_to_page +EXPORT_SYMBOL vmlinux 0x18e9b25c security_path_rename +EXPORT_SYMBOL vmlinux 0x18f05b0c input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0x19094397 agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0x19264cda napi_gro_receive +EXPORT_SYMBOL vmlinux 0x196228d5 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0x196790d9 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x197f13e8 block_truncate_page +EXPORT_SYMBOL vmlinux 0x198260eb bio_integrity_set_tag +EXPORT_SYMBOL vmlinux 0x1983d904 con_copy_unimap +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19a3e32e backlight_force_update +EXPORT_SYMBOL vmlinux 0x19a9e62b complete +EXPORT_SYMBOL vmlinux 0x19ac1e38 tc_classify +EXPORT_SYMBOL vmlinux 0x19ba9e67 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19be1a5c tcp_connect +EXPORT_SYMBOL vmlinux 0x19e70aab bio_add_page +EXPORT_SYMBOL vmlinux 0x19ec3b3b blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0x1a0d10bc tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL vmlinux 0x1a4441e6 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x1a45cb6c acpi_disabled +EXPORT_SYMBOL vmlinux 0x1a4fea3f lockref_mark_dead +EXPORT_SYMBOL vmlinux 0x1a5b746a netdev_lower_dev_get_private_rcu +EXPORT_SYMBOL vmlinux 0x1a63af34 vga_switcheroo_process_delayed_switch +EXPORT_SYMBOL vmlinux 0x1a6ade57 sock_setsockopt +EXPORT_SYMBOL vmlinux 0x1ab1400f xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL vmlinux 0x1abca9c2 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x1ace138d bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0x1ace4b57 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x1adde4a4 fb_validate_mode +EXPORT_SYMBOL vmlinux 0x1ae14ef5 _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x1afe1f59 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b0a4751 mmc_request_done +EXPORT_SYMBOL vmlinux 0x1b0ac272 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x1b1302b0 max8925_set_bits +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b2862e5 dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0x1b36e5a5 blk_mq_insert_request +EXPORT_SYMBOL vmlinux 0x1b405da3 skb_clone +EXPORT_SYMBOL vmlinux 0x1b413c38 dump_align +EXPORT_SYMBOL vmlinux 0x1b41d63a dev_err +EXPORT_SYMBOL vmlinux 0x1b570d23 acpi_warning +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1b8d20aa sock_no_poll +EXPORT_SYMBOL vmlinux 0x1b9e0ff1 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x1bb79666 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x1bfaf1dd netlink_broadcast +EXPORT_SYMBOL vmlinux 0x1c069f88 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x1c5712f5 locks_copy_lock +EXPORT_SYMBOL vmlinux 0x1c5ad730 twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x1c815ee5 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x1c8a04b0 acpi_reset +EXPORT_SYMBOL vmlinux 0x1ca419f1 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x1cabd1ea simple_write_begin +EXPORT_SYMBOL vmlinux 0x1cac63b0 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x1cb2f04d __sk_dst_check +EXPORT_SYMBOL vmlinux 0x1ccb1128 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x1ce55631 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x1cf53458 generic_readlink +EXPORT_SYMBOL vmlinux 0x1cf9f54b nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x1d05310f scsi_register +EXPORT_SYMBOL vmlinux 0x1d0738f4 dqput +EXPORT_SYMBOL vmlinux 0x1d1e143d dev_uc_del +EXPORT_SYMBOL vmlinux 0x1d42b779 pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0x1d48a71d pci_set_ltr +EXPORT_SYMBOL vmlinux 0x1d4b2223 ab3100_event_register +EXPORT_SYMBOL vmlinux 0x1d5d7465 dev_get_nest_level +EXPORT_SYMBOL vmlinux 0x1d72f742 account_page_dirtied +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dcb00b9 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1de6ec02 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x1de74f72 acpi_execute_simple_method +EXPORT_SYMBOL vmlinux 0x1df2d585 input_inject_event +EXPORT_SYMBOL vmlinux 0x1df4de0c tty_unlock_pair +EXPORT_SYMBOL vmlinux 0x1dfa712e security_path_truncate +EXPORT_SYMBOL vmlinux 0x1e047854 warn_slowpath_fmt +EXPORT_SYMBOL vmlinux 0x1e04f3cf ppp_dev_name +EXPORT_SYMBOL vmlinux 0x1e0bc64a audit_log_task_info +EXPORT_SYMBOL vmlinux 0x1e0c2be4 ioremap_wc +EXPORT_SYMBOL vmlinux 0x1e0d8aff pm860x_page_bulk_write +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e47e4ac dquot_free_inode +EXPORT_SYMBOL vmlinux 0x1e49868a security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0x1e5a50f2 netlink_capable +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e739062 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x1e9029a5 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x1e9af2e4 splice_from_pipe_begin +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ea78f63 page_follow_link_light +EXPORT_SYMBOL vmlinux 0x1eb65fad sock_kfree_s +EXPORT_SYMBOL vmlinux 0x1ec3bed9 hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0x1ec4eb34 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x1ecfb21b sock_wmalloc +EXPORT_SYMBOL vmlinux 0x1efdd7bf ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x1f013ebb input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x1f148a0c __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x1f1df270 eisa_driver_register +EXPORT_SYMBOL vmlinux 0x1f2c2bb5 sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x1f5194a0 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x1f525598 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x1f6422d2 fb_set_var +EXPORT_SYMBOL vmlinux 0x1f64365f __seq_open_private +EXPORT_SYMBOL vmlinux 0x1f6cc13a blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1f92af55 noop_fsync +EXPORT_SYMBOL vmlinux 0x1f9e63fb mfd_add_devices +EXPORT_SYMBOL vmlinux 0x1fb8eb98 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fbdb9df input_free_device +EXPORT_SYMBOL vmlinux 0x1fcb38a3 kmap +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fe85c53 bio_unmap_user +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fe9f800 unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x1feb22cc user_path_at +EXPORT_SYMBOL vmlinux 0x1fedf0f4 __request_region +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 0x201c53ad blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0x202048ab scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x202591a7 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x202f4e92 acpi_extract_package +EXPORT_SYMBOL vmlinux 0x204ac4f2 d_move +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x2051824e blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x205c1a63 lookup_one_len +EXPORT_SYMBOL vmlinux 0x205f68ac qdisc_reset +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x208739f6 acpi_load_table +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20b2bb2d param_array_ops +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20c6192f intel_scu_ipc_ioread32 +EXPORT_SYMBOL vmlinux 0x20d59e23 mmc_can_erase +EXPORT_SYMBOL vmlinux 0x21130c37 netpoll_rx_enable +EXPORT_SYMBOL vmlinux 0x211ef3e5 napi_gro_flush +EXPORT_SYMBOL vmlinux 0x21483828 add_disk +EXPORT_SYMBOL vmlinux 0x214e6fa4 blk_run_queue +EXPORT_SYMBOL vmlinux 0x215ebd78 bitrev16 +EXPORT_SYMBOL vmlinux 0x21631cba inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x216365e0 kmalloc_caches +EXPORT_SYMBOL vmlinux 0x217dda13 flex_array_get +EXPORT_SYMBOL vmlinux 0x217df42d atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x2199337a down_timeout +EXPORT_SYMBOL vmlinux 0x21b5a83b spi_dv_device +EXPORT_SYMBOL vmlinux 0x21c42535 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x21e0ea22 acpi_get_id +EXPORT_SYMBOL vmlinux 0x21e114fb sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x21e6453b jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x21eb157e jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x21faaa5f pci_save_state +EXPORT_SYMBOL vmlinux 0x21fb443e _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x2205e728 nla_put +EXPORT_SYMBOL vmlinux 0x2211c210 dquot_transfer +EXPORT_SYMBOL vmlinux 0x2213f146 generic_file_splice_write +EXPORT_SYMBOL vmlinux 0x22204333 dump_emit +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x2256fafa div64_u64_rem +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x22afb3ab xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22b3973e register_console +EXPORT_SYMBOL vmlinux 0x22ed2a50 commit_creds +EXPORT_SYMBOL vmlinux 0x230b788e bdi_unregister +EXPORT_SYMBOL vmlinux 0x231bc0d3 uart_match_port +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x232d0bbe register_nls +EXPORT_SYMBOL vmlinux 0x2338a3fd vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x23532c4d ftrace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x2356600b mark_page_accessed +EXPORT_SYMBOL vmlinux 0x2365edda jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23beb73b netdev_change_features +EXPORT_SYMBOL vmlinux 0x23c8f257 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x23ca463d fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x23e6cd60 tty_do_resize +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x24118a17 pci_iounmap +EXPORT_SYMBOL vmlinux 0x241bf4af dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x24326790 pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x243c34c1 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x2450ab32 __frontswap_load +EXPORT_SYMBOL vmlinux 0x24535c6d uart_add_one_port +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x2463a77e dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x246fb656 sock_create +EXPORT_SYMBOL vmlinux 0x24719f96 send_sig_info +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x2490a4cc ida_remove +EXPORT_SYMBOL vmlinux 0x249ba27a pci_disable_ido +EXPORT_SYMBOL vmlinux 0x24a778d4 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x24abffe1 __skb_dst_set_noref +EXPORT_SYMBOL vmlinux 0x24b08559 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x24b96f6c __genl_register_family +EXPORT_SYMBOL vmlinux 0x24bf3aac fget +EXPORT_SYMBOL vmlinux 0x24c5f10d disk_stack_limits +EXPORT_SYMBOL vmlinux 0x24d7b4eb cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x24da7051 agp_unbind_memory +EXPORT_SYMBOL vmlinux 0x24daa4fa abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x24e13b3c netif_device_attach +EXPORT_SYMBOL vmlinux 0x24ecb2bd sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0x24f169fc down_read_trylock +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x2520dc2b directly_mappable_cdev_bdi +EXPORT_SYMBOL vmlinux 0x25212a83 get_io_context +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x252ce497 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x25418248 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x25541c9d pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x257974e2 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25c57f8b ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x25c677c4 mac_pton +EXPORT_SYMBOL vmlinux 0x25d5b8fb tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x25df3944 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x25e62fae __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x26387772 alloc_fddidev +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x265ba173 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x266fa62e dm_unregister_target +EXPORT_SYMBOL vmlinux 0x267cca61 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x26852f8e ida_simple_remove +EXPORT_SYMBOL vmlinux 0x2685c3d7 __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x268701ff dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x26b2ee65 km_report +EXPORT_SYMBOL vmlinux 0x26b5e65c should_remove_suid +EXPORT_SYMBOL vmlinux 0x26bb950b __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x26c7542e tcf_exts_change +EXPORT_SYMBOL vmlinux 0x26dd8fcd bdi_destroy +EXPORT_SYMBOL vmlinux 0x26ddad1c scsi_print_sense +EXPORT_SYMBOL vmlinux 0x26e5ae98 xfrm_register_type +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26e9e125 sock_kmalloc +EXPORT_SYMBOL vmlinux 0x26f0453a blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x26faaf98 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x270b5196 netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x271cba95 acpi_bus_private_data_handler +EXPORT_SYMBOL vmlinux 0x2726db4a pnp_release_card_device +EXPORT_SYMBOL vmlinux 0x272d394e mtrr_del +EXPORT_SYMBOL vmlinux 0x27316dbc blk_mq_end_io +EXPORT_SYMBOL vmlinux 0x273351be amd_northbridges +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x27739f0f page_put_link +EXPORT_SYMBOL vmlinux 0x2773beb0 __break_lease +EXPORT_SYMBOL vmlinux 0x277f2caa fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27ae7d0c ec_transaction +EXPORT_SYMBOL vmlinux 0x27b2befe scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x27b3276c skb_copy_datagram_from_iovec +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27bf104f vga_switcheroo_fini_domain_pm_ops +EXPORT_SYMBOL vmlinux 0x2803dd84 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x285d83df make_kuid +EXPORT_SYMBOL vmlinux 0x2888b2ea tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x288debbd jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x2892e34d ipmi_get_smi_info +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28a6e7e1 km_query +EXPORT_SYMBOL vmlinux 0x28ad2da4 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0x28b42e55 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x28b715a6 isapnp_cfg_end +EXPORT_SYMBOL vmlinux 0x28bdc58e con_is_bound +EXPORT_SYMBOL vmlinux 0x28ce804a jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x28eefb1a vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x2900f31a input_grab_device +EXPORT_SYMBOL vmlinux 0x2903af2f dev_get_drvdata +EXPORT_SYMBOL vmlinux 0x2925a253 grab_cache_page_nowait +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x295bbac2 netdev_crit +EXPORT_SYMBOL vmlinux 0x295f2e00 skb_orphan_partial +EXPORT_SYMBOL vmlinux 0x297ff094 __devm_request_region +EXPORT_SYMBOL vmlinux 0x298b1987 dget_parent +EXPORT_SYMBOL vmlinux 0x2991155d cdrom_open +EXPORT_SYMBOL vmlinux 0x29f3a540 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x29fc46c7 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x29fcc247 skb_trim +EXPORT_SYMBOL vmlinux 0x29fdda53 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x2a0dbcbb clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x2a12cf62 lease_modify +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a5def2f intel_scu_ipc_iowrite32 +EXPORT_SYMBOL vmlinux 0x2a79ac13 clkdev_add +EXPORT_SYMBOL vmlinux 0x2aa037fe swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b5c8cdc remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x2b62e366 do_truncate +EXPORT_SYMBOL vmlinux 0x2b6ccaa3 pci_enable_device +EXPORT_SYMBOL vmlinux 0x2b75ada9 uart_update_timeout +EXPORT_SYMBOL vmlinux 0x2b845fc6 agp_free_memory +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bab60aa pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0x2bb55d6e acpi_remove_notify_handler +EXPORT_SYMBOL vmlinux 0x2bc7b1c8 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x2bc95bd4 memset +EXPORT_SYMBOL vmlinux 0x2bcd4f9e ipmi_register_smi +EXPORT_SYMBOL vmlinux 0x2bdf68e9 __skb_checksum +EXPORT_SYMBOL vmlinux 0x2bf8d577 sleep_on_timeout +EXPORT_SYMBOL vmlinux 0x2bfeb410 acpi_get_handle +EXPORT_SYMBOL vmlinux 0x2c05e3ad __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x2c14149d mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c417629 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x2c6c071b pipe_to_file +EXPORT_SYMBOL vmlinux 0x2c900d91 cpufreq_put_global_kobject +EXPORT_SYMBOL vmlinux 0x2c9a20a3 drop_nlink +EXPORT_SYMBOL vmlinux 0x2ca319a6 wrmsrl_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x2cbe6f74 alloc_pci_dev +EXPORT_SYMBOL vmlinux 0x2cc54d5f single_open_size +EXPORT_SYMBOL vmlinux 0x2ce76754 inode_dio_wait +EXPORT_SYMBOL vmlinux 0x2ce989cf vfs_rmdir +EXPORT_SYMBOL vmlinux 0x2d03c10d posix_acl_create +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 0x2d37d63a __f_setown +EXPORT_SYMBOL vmlinux 0x2d3e14c7 dev_get_by_index +EXPORT_SYMBOL vmlinux 0x2d784b04 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x2d7af72c blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x2d89342a scsi_show_sense_hdr +EXPORT_SYMBOL vmlinux 0x2d96d274 __skb_get_hash +EXPORT_SYMBOL vmlinux 0x2da877c3 unlock_buffer +EXPORT_SYMBOL vmlinux 0x2daaaba9 param_get_byte +EXPORT_SYMBOL vmlinux 0x2dc10511 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x2dc619b0 phy_register_fixup +EXPORT_SYMBOL vmlinux 0x2dd16564 arch_register_cpu +EXPORT_SYMBOL vmlinux 0x2de05349 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x2deb3a25 skb_recv_datagram +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 0x2df49647 irq_set_chip +EXPORT_SYMBOL vmlinux 0x2df5ca5f vga_tryget +EXPORT_SYMBOL vmlinux 0x2dfbcc72 scsi_setup_blk_pc_cmnd +EXPORT_SYMBOL vmlinux 0x2e0460f3 write_cache_pages +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e1f45a6 alloc_anon_inode +EXPORT_SYMBOL vmlinux 0x2e27472a noop_qdisc +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e33cb1c inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x2e46352e elevator_exit +EXPORT_SYMBOL vmlinux 0x2e4b44e9 scsi_cmd_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x2e4c9df6 dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0x2e60bace memcpy +EXPORT_SYMBOL vmlinux 0x2e64d85c pci_set_mwi +EXPORT_SYMBOL vmlinux 0x2e6af656 alloc_file +EXPORT_SYMBOL vmlinux 0x2e713b1a idr_init +EXPORT_SYMBOL vmlinux 0x2ea11ea4 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x2ea51b39 dquot_quota_on +EXPORT_SYMBOL vmlinux 0x2eb9905e netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x2ebb5080 finish_no_open +EXPORT_SYMBOL vmlinux 0x2ec524ad __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x2ed2b986 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x2eeceb42 sk_chk_filter +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 0x2f0bc7dc pci_fixup_device +EXPORT_SYMBOL vmlinux 0x2f1f5ac0 kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0x2f31d516 sg_miter_stop +EXPORT_SYMBOL vmlinux 0x2f384db3 acpi_is_video_device +EXPORT_SYMBOL vmlinux 0x2f8fd9f5 tcp_sendpage +EXPORT_SYMBOL vmlinux 0x2f969935 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x2fb44ed2 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2fec0d4c kobject_get +EXPORT_SYMBOL vmlinux 0x2ff698b8 dump_skip +EXPORT_SYMBOL vmlinux 0x2ff6b0b7 dev_driver_string +EXPORT_SYMBOL vmlinux 0x3005046c scsi_register_driver +EXPORT_SYMBOL vmlinux 0x30105568 simple_dentry_operations +EXPORT_SYMBOL vmlinux 0x301ffa73 sock_update_classid +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x30330e80 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x3043ba4c inode_permission +EXPORT_SYMBOL vmlinux 0x306718d2 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x3069fa05 kunmap_high +EXPORT_SYMBOL vmlinux 0x306b582f jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x30889dfd sock_no_getname +EXPORT_SYMBOL vmlinux 0x308a69ad dcb_setapp +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30ad6860 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x30b8ed58 led_set_brightness +EXPORT_SYMBOL vmlinux 0x30cada8f radix_tree_next_hole +EXPORT_SYMBOL vmlinux 0x30d4d070 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310917fe sort +EXPORT_SYMBOL vmlinux 0x31169e95 phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x31228d8c truncate_setsize +EXPORT_SYMBOL vmlinux 0x312824e0 hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x31379117 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x313a0ebd jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x3143f340 phy_start +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x314a1f61 set_device_ro +EXPORT_SYMBOL vmlinux 0x315c65fd zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x316349fb rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x316e15cd genl_unregister_family +EXPORT_SYMBOL vmlinux 0x31818a28 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x318cadb1 reciprocal_value +EXPORT_SYMBOL vmlinux 0x3190e96d __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x3191f109 __krealloc +EXPORT_SYMBOL vmlinux 0x319214a8 may_umount +EXPORT_SYMBOL vmlinux 0x3195ba5b follow_pfn +EXPORT_SYMBOL vmlinux 0x31b07c49 set_bdi_congested +EXPORT_SYMBOL vmlinux 0x31b0a02c pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x31c18cc9 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x31e0eee3 block_write_full_page +EXPORT_SYMBOL vmlinux 0x31e5d623 scsi_ioctl +EXPORT_SYMBOL vmlinux 0x31e76b57 recalibrate_cpu_khz +EXPORT_SYMBOL vmlinux 0x31f0bb78 __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x3202435a wrmsr_safe_regs +EXPORT_SYMBOL vmlinux 0x322f48d4 abx500_dump_all_banks +EXPORT_SYMBOL vmlinux 0x3262f562 tty_port_destroy +EXPORT_SYMBOL vmlinux 0x326425ca pci_unmap_biosrom +EXPORT_SYMBOL vmlinux 0x32808b5c poll_freewait +EXPORT_SYMBOL vmlinux 0x32a0ecd1 __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x32a19014 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x32b9f23b tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x32c17eda sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x32cb8402 acpi_bus_get_device +EXPORT_SYMBOL vmlinux 0x32cea339 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0x32eeaded _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0x32f7fa84 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x332d43c2 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x332e5182 input_unregister_handler +EXPORT_SYMBOL vmlinux 0x33440e4a request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x334ece18 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x335ba531 pci_pme_capable +EXPORT_SYMBOL vmlinux 0x33626d1b devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x33736076 sk_common_release +EXPORT_SYMBOL vmlinux 0x337875d1 security_mmap_file +EXPORT_SYMBOL vmlinux 0x337cce46 put_cmsg +EXPORT_SYMBOL vmlinux 0x33ad1452 eisa_driver_unregister +EXPORT_SYMBOL vmlinux 0x33b7f0f4 pci_write_vpd +EXPORT_SYMBOL vmlinux 0x33ba5cd4 param_ops_bool +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33d4b8e0 arp_xmit +EXPORT_SYMBOL vmlinux 0x33d7d83e get_thermal_instance +EXPORT_SYMBOL vmlinux 0x33dbfd93 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33f1366b pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x33f683fa iterate_dir +EXPORT_SYMBOL vmlinux 0x3400b98c i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x341f631e load_nls_default +EXPORT_SYMBOL vmlinux 0x342d7dfa bio_integrity_free +EXPORT_SYMBOL vmlinux 0x342f60fe apm_info +EXPORT_SYMBOL vmlinux 0x3437d4a9 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x345249d4 mark_info_dirty +EXPORT_SYMBOL vmlinux 0x346e9922 cfb_copyarea +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x347eb9bd param_set_bool +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34a0f94d vfs_unlink +EXPORT_SYMBOL vmlinux 0x34a2c86b fddi_type_trans +EXPORT_SYMBOL vmlinux 0x34b02e67 security_path_unlink +EXPORT_SYMBOL vmlinux 0x34c330b9 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x34fb1280 __dev_remove_offload +EXPORT_SYMBOL vmlinux 0x3504c833 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x350ec2e5 dst_destroy +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x352eda8c dm_io +EXPORT_SYMBOL vmlinux 0x352fa397 scsi_block_requests +EXPORT_SYMBOL vmlinux 0x353e21e3 acpi_bios_warning +EXPORT_SYMBOL vmlinux 0x35420688 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x354b1718 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x35b021ca give_up_console +EXPORT_SYMBOL vmlinux 0x35dc7ee7 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x35e2684d tcp_prot +EXPORT_SYMBOL vmlinux 0x35f466f4 dquot_initialize +EXPORT_SYMBOL vmlinux 0x36093133 mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x360b8d16 x86_cpu_to_apicid +EXPORT_SYMBOL vmlinux 0x3624b997 devfreq_add_device +EXPORT_SYMBOL vmlinux 0x36299f00 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x36372dc3 ndo_dflt_bridge_getlink +EXPORT_SYMBOL vmlinux 0x363935de free_task +EXPORT_SYMBOL vmlinux 0x366dae56 fget_light +EXPORT_SYMBOL vmlinux 0x367c5531 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0x367d5465 pci_restore_state +EXPORT_SYMBOL vmlinux 0x3686ea09 spi_print_msg +EXPORT_SYMBOL vmlinux 0x368f7f0a devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x36aad357 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x36ba5990 empty_aops +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36bfe6d4 sk_receive_skb +EXPORT_SYMBOL vmlinux 0x36c6af51 intel_scu_ipc_iowrite8 +EXPORT_SYMBOL vmlinux 0x36dce2bd scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x36e360e3 __hw_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x36e49ffd xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x36e6568b elv_abort_queue +EXPORT_SYMBOL vmlinux 0x36eb663e fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x36ecd6e1 idr_remove +EXPORT_SYMBOL vmlinux 0x36edb4b9 blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x370ab569 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x37434adf eth_type_trans +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x374588de pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x377b5cb4 fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0x3784585e blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x3790ddf7 sk_stop_timer +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37d81ac1 clk_add_alias +EXPORT_SYMBOL vmlinux 0x37db8f19 dmi_get_date +EXPORT_SYMBOL vmlinux 0x37e48886 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x37e6d258 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x37e74642 get_jiffies_64 +EXPORT_SYMBOL vmlinux 0x37e7e34f __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x37f18069 blk_mq_run_queues +EXPORT_SYMBOL vmlinux 0x37f614b7 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x37f96079 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0x38099e13 wrmsrl_on_cpu +EXPORT_SYMBOL vmlinux 0x381144a9 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x381c415e tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x381ccc13 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x3822e48f agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0x38308309 pnp_unregister_card_driver +EXPORT_SYMBOL vmlinux 0x38344b40 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x38659776 padata_do_serial +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388799f6 unregister_kmmio_probe +EXPORT_SYMBOL vmlinux 0x388f9128 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38ba7822 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0x38c4ba15 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x38d4869f netlink_ack +EXPORT_SYMBOL vmlinux 0x38d5b18d tty_port_init +EXPORT_SYMBOL vmlinux 0x38df6a67 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x38fd3bdb mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x392a57ce lro_flush_pkt +EXPORT_SYMBOL vmlinux 0x39313607 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x3932871d unregister_quota_format +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x39582838 try_module_get +EXPORT_SYMBOL vmlinux 0x396cd68d twl6040_power +EXPORT_SYMBOL vmlinux 0x3979197b abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x397927f4 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x3984dc3e fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0x39a055f3 acpi_remove_gpe_handler +EXPORT_SYMBOL vmlinux 0x39a9c03d setup_new_exec +EXPORT_SYMBOL vmlinux 0x39ba0421 gen10g_read_status +EXPORT_SYMBOL vmlinux 0x3a013b7d remove_wait_queue +EXPORT_SYMBOL vmlinux 0x3a06c4a3 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x3a08475f platform_thermal_notify +EXPORT_SYMBOL vmlinux 0x3a1d9a15 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x3a32839e intel_gtt_chipset_flush +EXPORT_SYMBOL vmlinux 0x3a405a9f eth_header +EXPORT_SYMBOL vmlinux 0x3a66a455 scsi_register_interface +EXPORT_SYMBOL vmlinux 0x3a84f3f6 __scsi_put_command +EXPORT_SYMBOL vmlinux 0x3a890e21 neigh_event_ns +EXPORT_SYMBOL vmlinux 0x3a8e7e04 agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0x3a8f6816 __inode_permission +EXPORT_SYMBOL vmlinux 0x3a99d3b0 from_kgid_munged +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3aa85b8c twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x3ab86488 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x3ac69e9e d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0x3ac69eda pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x3af0a95f sock_from_file +EXPORT_SYMBOL vmlinux 0x3b06133c inet6_del_offload +EXPORT_SYMBOL vmlinux 0x3b1a2e3a textsearch_prepare +EXPORT_SYMBOL vmlinux 0x3b201620 machine_real_restart +EXPORT_SYMBOL vmlinux 0x3b25f59a blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x3b2e4aa4 kmap_atomic_prot +EXPORT_SYMBOL vmlinux 0x3b312e50 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x3b45b99a sk_run_filter +EXPORT_SYMBOL vmlinux 0x3b4b5888 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x3bb653f2 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x3bd1b1f6 msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x3be99b98 pneigh_lookup +EXPORT_SYMBOL vmlinux 0x3bef03b9 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x3c3d1dff acpi_notifier_call_chain +EXPORT_SYMBOL vmlinux 0x3c5212ac blk_sync_queue +EXPORT_SYMBOL vmlinux 0x3c5813f4 tcp_release_cb +EXPORT_SYMBOL vmlinux 0x3c62e03c i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x3c69ce99 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x3c6efc96 qdisc_destroy +EXPORT_SYMBOL vmlinux 0x3c7ba758 kdb_current_task +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c9d1211 string_get_size +EXPORT_SYMBOL vmlinux 0x3c9f761f jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x3ca0bd50 d_drop +EXPORT_SYMBOL vmlinux 0x3ca984ae locks_free_lock +EXPORT_SYMBOL vmlinux 0x3cb3931b sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x3cb538c5 pnp_device_attach +EXPORT_SYMBOL vmlinux 0x3cc068eb unregister_md_personality +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3d0beb21 kmem_cache_create +EXPORT_SYMBOL vmlinux 0x3d0e8284 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x3d36fd5b gen_pool_alloc +EXPORT_SYMBOL vmlinux 0x3d3fcf21 arch_debugfs_dir +EXPORT_SYMBOL vmlinux 0x3d4fa8f4 neigh_for_each +EXPORT_SYMBOL vmlinux 0x3d5ee565 phy_device_free +EXPORT_SYMBOL vmlinux 0x3d7c1ed7 msrs_alloc +EXPORT_SYMBOL vmlinux 0x3da171f9 pci_mem_start +EXPORT_SYMBOL vmlinux 0x3dba5859 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3ddb544e dma_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e11049a vfs_read +EXPORT_SYMBOL vmlinux 0x3e174492 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x3e2109f0 kernel_getpeername +EXPORT_SYMBOL vmlinux 0x3e2ae3a8 acpi_release_global_lock +EXPORT_SYMBOL vmlinux 0x3e3ae181 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x3e60ae94 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x3e7c3b26 pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3eb2b669 blk_put_request +EXPORT_SYMBOL vmlinux 0x3ec26e54 neigh_seq_start +EXPORT_SYMBOL vmlinux 0x3ed63055 zlib_inflateReset +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 0x3f3ee114 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x3f3f5f58 read_cache_page +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f60d3a7 key_task_permission +EXPORT_SYMBOL vmlinux 0x3f765fc5 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x3f953cc6 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x3f9ab964 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x3f9f868f __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x3fa58ef8 wait_for_completion +EXPORT_SYMBOL vmlinux 0x3fb894c5 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x3fc77aed ida_pre_get +EXPORT_SYMBOL vmlinux 0x3fcba5cb would_dump +EXPORT_SYMBOL vmlinux 0x3fcfb971 tty_lock +EXPORT_SYMBOL vmlinux 0x3fd28096 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3ff1c1e4 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x3ff62317 local_bh_disable +EXPORT_SYMBOL vmlinux 0x3ffdbdc1 release_sock +EXPORT_SYMBOL vmlinux 0x400465a7 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x401a2d97 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x4023b7b5 __ps2_command +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x404cd95c dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x4059792f print_hex_dump +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x4077f163 tcp_shutdown +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 0x40a2d1dd dm_table_get_size +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40c770ab set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x40c89d46 acpi_get_table_by_index +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d8ada1 get_user_pages +EXPORT_SYMBOL vmlinux 0x40df8e61 cpu_info +EXPORT_SYMBOL vmlinux 0x40e90949 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x40ec7fb6 input_event +EXPORT_SYMBOL vmlinux 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL vmlinux 0x41112266 vga_switcheroo_register_handler +EXPORT_SYMBOL vmlinux 0x411f1968 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0x413236fd jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x41420235 pnp_find_dev +EXPORT_SYMBOL vmlinux 0x4144a917 generic_file_aio_read +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x415ff6ec __frontswap_test +EXPORT_SYMBOL vmlinux 0x416decec pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x41a09c17 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x41a21ad6 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x41d6cb07 wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x41ef00c1 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x42033610 dev_add_pack +EXPORT_SYMBOL vmlinux 0x4206b3d8 vga_client_register +EXPORT_SYMBOL vmlinux 0x4211c3c1 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x42350e8d ucs2_strlen +EXPORT_SYMBOL vmlinux 0x423752f8 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0x423b776a ipmi_create_user +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x4292364c schedule +EXPORT_SYMBOL vmlinux 0x42973ee6 inet_stream_ops +EXPORT_SYMBOL vmlinux 0x42977ad4 __hw_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42c8de35 ioremap_nocache +EXPORT_SYMBOL vmlinux 0x42d15f7a elv_rb_del +EXPORT_SYMBOL vmlinux 0x42e1d90c block_write_full_page_endio +EXPORT_SYMBOL vmlinux 0x42ed4181 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x43179742 sk_filter +EXPORT_SYMBOL vmlinux 0x434b90bc set_pages_nx +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x43616fc2 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x439811f9 new_inode +EXPORT_SYMBOL vmlinux 0x439cb751 pv_lock_ops +EXPORT_SYMBOL vmlinux 0x43a6727d blk_mq_alloc_single_hw_queue +EXPORT_SYMBOL vmlinux 0x43ad1621 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x43ad8102 pm860x_page_reg_read +EXPORT_SYMBOL vmlinux 0x43d68f5a dma_supported +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x43f773ac filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x43ffc2fe __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x44166ef8 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x44231e8e netdev_emerg +EXPORT_SYMBOL vmlinux 0x44233575 jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x4429e101 tty_lock_pair +EXPORT_SYMBOL vmlinux 0x44366cfc simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x44438b96 hex2bin +EXPORT_SYMBOL vmlinux 0x446b4d7f inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x446d9514 agp_enable +EXPORT_SYMBOL vmlinux 0x446f9ff6 sk_stream_error +EXPORT_SYMBOL vmlinux 0x447b9b80 netif_napi_del +EXPORT_SYMBOL vmlinux 0x449c41af netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x44aaf30f tsc_khz +EXPORT_SYMBOL vmlinux 0x44bcb22c module_put +EXPORT_SYMBOL vmlinux 0x44bfd136 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44f1606d down_trylock +EXPORT_SYMBOL vmlinux 0x45081703 ec_get_handle +EXPORT_SYMBOL vmlinux 0x452dccef jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x4578661a _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x457b843f kill_pgrp +EXPORT_SYMBOL vmlinux 0x45a6be13 cpufreq_sysfs_remove_file +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45c27934 inet_ioctl +EXPORT_SYMBOL vmlinux 0x462873f8 blk_peek_request +EXPORT_SYMBOL vmlinux 0x4629334c __preempt_count +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +EXPORT_SYMBOL vmlinux 0x46517f6f scsi_device_put +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46608fa0 getnstimeofday +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x467e1a58 pnp_disable_dev +EXPORT_SYMBOL vmlinux 0x468bcda6 cpumask_set_cpu_local_first +EXPORT_SYMBOL vmlinux 0x469030bc bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x46a3a45e scm_detach_fds +EXPORT_SYMBOL vmlinux 0x46a4299a pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x46a6bec2 led_blink_set +EXPORT_SYMBOL vmlinux 0x46b289fd generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x46b7d447 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x47130e36 sock_rfree +EXPORT_SYMBOL vmlinux 0x4729e720 sk_release_kernel +EXPORT_SYMBOL vmlinux 0x472a0e60 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x4734d4cf eth_change_mtu +EXPORT_SYMBOL vmlinux 0x473a0828 dev_change_flags +EXPORT_SYMBOL vmlinux 0x473db6be arp_create +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x47438710 pci_enable_msi_block_auto +EXPORT_SYMBOL vmlinux 0x47541725 mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x475c62bd nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0x475d0678 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0x475f010b acpi_purge_cached_objects +EXPORT_SYMBOL vmlinux 0x478d10b2 ht_destroy_irq +EXPORT_SYMBOL vmlinux 0x4792c572 down_interruptible +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x4793d518 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47b3f862 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0x47b6a10f ftrace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x47bcf84c param_set_ulong +EXPORT_SYMBOL vmlinux 0x47c8b4ea bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x47c8baf4 param_ops_uint +EXPORT_SYMBOL vmlinux 0x47d020cf dev_addr_del +EXPORT_SYMBOL vmlinux 0x47dc1724 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x48034724 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x48075758 pci_set_power_state +EXPORT_SYMBOL vmlinux 0x480f654e rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x481740ab bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x48193639 acpi_lid_open +EXPORT_SYMBOL vmlinux 0x481cb9ab acpi_enter_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x482a2a49 param_set_charp +EXPORT_SYMBOL vmlinux 0x482fbf99 capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0x484771cc vfs_getattr +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x485e24ec pv_mmu_ops +EXPORT_SYMBOL vmlinux 0x486d2f29 dqstats +EXPORT_SYMBOL vmlinux 0x487d7c9e acpi_lock_ac_dir +EXPORT_SYMBOL vmlinux 0x489afb8e i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x48c1c45f console_start +EXPORT_SYMBOL vmlinux 0x48e7db56 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x48ef3031 __mutex_init +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x491f30a0 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x493c4a2d vlan_vid_del +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x496ed4e7 serio_rescan +EXPORT_SYMBOL vmlinux 0x4999a542 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x499f721d devm_gpiod_get +EXPORT_SYMBOL vmlinux 0x49acec65 kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49b163b8 acpi_bus_scan +EXPORT_SYMBOL vmlinux 0x49cfa5d9 ether_setup +EXPORT_SYMBOL vmlinux 0x4a14e73a pci_disable_device +EXPORT_SYMBOL vmlinux 0x4a278d15 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x4a358252 __bitmap_subset +EXPORT_SYMBOL vmlinux 0x4a45d177 dquot_scan_active +EXPORT_SYMBOL vmlinux 0x4a609d88 inet_frag_evictor +EXPORT_SYMBOL vmlinux 0x4a770e12 mdiobus_scan +EXPORT_SYMBOL vmlinux 0x4a8924b5 netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x4aafdf54 dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4acddc51 __scm_send +EXPORT_SYMBOL vmlinux 0x4ae9532a bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x4afca78e __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b0ccb5e skb_copy_bits +EXPORT_SYMBOL vmlinux 0x4b15c072 fs_bio_set +EXPORT_SYMBOL vmlinux 0x4b1baf68 acpi_unlock_ac_dir +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b34fbf5 block_all_signals +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b9383cc tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x4bad6a07 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0x4badfd83 pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x4bc4d5a5 __cond_resched_lock +EXPORT_SYMBOL vmlinux 0x4bcefc3e skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x4be85a03 memweight +EXPORT_SYMBOL vmlinux 0x4bf1d454 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x4bf5b26b dma_alloc_from_coherent +EXPORT_SYMBOL vmlinux 0x4bf7b27d inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0x4c0e3615 sock_release +EXPORT_SYMBOL vmlinux 0x4c1182cb bitmap_scnprintf +EXPORT_SYMBOL vmlinux 0x4c2ae700 strnstr +EXPORT_SYMBOL vmlinux 0x4c380a44 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x4c54c6ef page_symlink +EXPORT_SYMBOL vmlinux 0x4c71890b dcb_getapp +EXPORT_SYMBOL vmlinux 0x4c7de044 pci_disable_ltr +EXPORT_SYMBOL vmlinux 0x4c852428 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL vmlinux 0x4c9affd3 zerocopy_sg_from_iovec +EXPORT_SYMBOL vmlinux 0x4c9fb1c0 pagevec_lookup +EXPORT_SYMBOL vmlinux 0x4ca2f620 neigh_parms_release +EXPORT_SYMBOL vmlinux 0x4cbbd171 __bitmap_weight +EXPORT_SYMBOL vmlinux 0x4cd0d77c skb_checksum_help +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4ce80370 acpi_pm_device_sleep_state +EXPORT_SYMBOL vmlinux 0x4cf5a46d __put_cred +EXPORT_SYMBOL vmlinux 0x4d250895 put_io_context +EXPORT_SYMBOL vmlinux 0x4d317686 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x4d32da0e seq_puts +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d4e717f tty_name +EXPORT_SYMBOL vmlinux 0x4d68d598 devm_iounmap +EXPORT_SYMBOL vmlinux 0x4d8e3705 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x4d9002fb bd_set_size +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4daa360a acpi_resource_to_address64 +EXPORT_SYMBOL vmlinux 0x4db5ce8f nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x4dc514c7 kobject_put +EXPORT_SYMBOL vmlinux 0x4de22559 dquot_drop +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4dea9474 unregister_netdev +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4dfc6930 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x4e14efde netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e612b51 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x4e63b946 blk_stop_queue +EXPORT_SYMBOL vmlinux 0x4e64cbe5 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x4e6743f9 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e830a3e strnicmp +EXPORT_SYMBOL vmlinux 0x4ea25709 dql_reset +EXPORT_SYMBOL vmlinux 0x4eb35020 alloc_disk_node +EXPORT_SYMBOL vmlinux 0x4edbffe5 input_get_keycode +EXPORT_SYMBOL vmlinux 0x4f03d97b scsi_prep_state_check +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f2c5e54 kernel_getsockname +EXPORT_SYMBOL vmlinux 0x4f2fd614 generic_file_remap_pages +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f476e96 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x4f638d73 netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f6b400b _copy_from_user +EXPORT_SYMBOL vmlinux 0x4f728e2f input_open_device +EXPORT_SYMBOL vmlinux 0x4f783f30 acpi_read +EXPORT_SYMBOL vmlinux 0x4f8b5ddb _copy_to_user +EXPORT_SYMBOL vmlinux 0x4fc542f3 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4fe1e606 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x50175206 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x502a4349 __free_pages +EXPORT_SYMBOL vmlinux 0x5046c6d6 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x50529870 acpi_get_gpe_status +EXPORT_SYMBOL vmlinux 0x509b64ea acpi_has_method +EXPORT_SYMBOL vmlinux 0x50a6fec5 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x50d6194c phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0x50d68377 arch_phys_wc_del +EXPORT_SYMBOL vmlinux 0x50eb41b6 simple_empty +EXPORT_SYMBOL vmlinux 0x50eedeb8 printk +EXPORT_SYMBOL vmlinux 0x50f1ab07 lock_rename +EXPORT_SYMBOL vmlinux 0x510aaf3f ip_options_compile +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x5127674f __i2c_transfer +EXPORT_SYMBOL vmlinux 0x513e8817 is_bad_inode +EXPORT_SYMBOL vmlinux 0x5152e605 memcmp +EXPORT_SYMBOL vmlinux 0x517b2bb1 framebuffer_release +EXPORT_SYMBOL vmlinux 0x5186518f profile_pc +EXPORT_SYMBOL vmlinux 0x51a1108a sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x51a14b5a crypto_sha256_update +EXPORT_SYMBOL vmlinux 0x51d12d4e acpi_pci_disabled +EXPORT_SYMBOL vmlinux 0x51da56e9 set_trace_device +EXPORT_SYMBOL vmlinux 0x51da63e8 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x51dce73b xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x51ef33b8 kstrndup +EXPORT_SYMBOL vmlinux 0x51f1b8f8 dev_mc_flush +EXPORT_SYMBOL vmlinux 0x52006d56 acpi_walk_resources +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x5206459c proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x52095e19 acpi_get_data +EXPORT_SYMBOL vmlinux 0x520cb929 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x5211f820 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x5220e15f mutex_trylock +EXPORT_SYMBOL vmlinux 0x5231ce55 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x5237490e dquot_enable +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x5247ff62 __register_binfmt +EXPORT_SYMBOL vmlinux 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL vmlinux 0x525e026f acpi_os_unmap_generic_address +EXPORT_SYMBOL vmlinux 0x526642ae security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x5270c4cf dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x527a86c7 scsi_prep_fn +EXPORT_SYMBOL vmlinux 0x527bc3d6 icmpv6_send +EXPORT_SYMBOL vmlinux 0x528c709d simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x529e10cb skb_split +EXPORT_SYMBOL vmlinux 0x52a85ee7 __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x52f132d5 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x530b1e4c rdmsr_on_cpus +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x531b604e __virt_addr_valid +EXPORT_SYMBOL vmlinux 0x532ed5be arp_invalidate +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x533d9995 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x53619517 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x536554f3 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x537155d0 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x5379dc52 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x5383f34b _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x538fc55b fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x53afe252 rt6_lookup +EXPORT_SYMBOL vmlinux 0x53b1ad6f dma_release_declared_memory +EXPORT_SYMBOL vmlinux 0x53b22fcc abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x53bb01e2 vm_stat +EXPORT_SYMBOL vmlinux 0x53bcc648 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x53c55338 km_policy_expired +EXPORT_SYMBOL vmlinux 0x53f2ef10 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x53faf34c xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x53fe6724 netif_skb_dev_features +EXPORT_SYMBOL vmlinux 0x53ff3a2f elv_rb_find +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x540f135d input_unregister_handle +EXPORT_SYMBOL vmlinux 0x5411795b blk_get_request +EXPORT_SYMBOL vmlinux 0x54152e04 percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x5439f875 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x544aeaac kfree_skb_list +EXPORT_SYMBOL vmlinux 0x544b0c11 acpi_lid_notifier_register +EXPORT_SYMBOL vmlinux 0x5464538f __idr_remove_all +EXPORT_SYMBOL vmlinux 0x546bac6d dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x54801605 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x5485bab3 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x54a29e22 vfs_link +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54c1c165 textsearch_register +EXPORT_SYMBOL vmlinux 0x54d4b7c8 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x54e3cc3b param_get_int +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54e8aadf phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x54efb5d6 cpu_number +EXPORT_SYMBOL vmlinux 0x550c5d42 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x551b01fc simple_fill_super +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x552683ec inet_stream_connect +EXPORT_SYMBOL vmlinux 0x5537ef38 tty_vhangup +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x556c2740 hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x5583e593 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x55870224 kill_litter_super +EXPORT_SYMBOL vmlinux 0x558868b6 skb_pull +EXPORT_SYMBOL vmlinux 0x5594be03 bitmap_remap +EXPORT_SYMBOL vmlinux 0x55caa536 netdev_alert +EXPORT_SYMBOL vmlinux 0x55cadc7a inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0x55d1a2c2 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x5614b010 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x562331f0 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x56298b7f tc_classify_compat +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x5636ff58 dev_mc_add +EXPORT_SYMBOL vmlinux 0x5637b5a6 __napi_schedule +EXPORT_SYMBOL vmlinux 0x5642793a radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x564381ff fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0x56608546 input_flush_device +EXPORT_SYMBOL vmlinux 0x566afef4 free_buffer_head +EXPORT_SYMBOL vmlinux 0x56736a7c find_or_create_page +EXPORT_SYMBOL vmlinux 0x5673921c pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0x5676a3e5 intel_scu_ipc_ioread8 +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56f15253 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x56f9b1c7 netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0x56fe8da1 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x5705088a __vmalloc +EXPORT_SYMBOL vmlinux 0x57245bc0 tcf_hash_check +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x57324df1 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x5736fecc input_set_capability +EXPORT_SYMBOL vmlinux 0x5753be1e pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x575af70c on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x575b834a mmc_start_bkops +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x577d1ae4 pci_find_bus +EXPORT_SYMBOL vmlinux 0x57970ae8 pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0x579fbcd2 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0x57f6b1c9 pskb_expand_head +EXPORT_SYMBOL vmlinux 0x5807eacd rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x5832f889 skb_unlink +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x584738f9 rdmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x5854429e dev_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x585b4cf7 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x586103be acpi_setup_gpe_for_wake +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x587a3c60 make_bad_inode +EXPORT_SYMBOL vmlinux 0x588057bf input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x5880f777 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x58b92d66 pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x58fe0fb5 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x58fef6f8 ist_info +EXPORT_SYMBOL vmlinux 0x5904056c request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x59194075 set_anon_super +EXPORT_SYMBOL vmlinux 0x5919db43 dev_get_stats +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x59540f50 page_address +EXPORT_SYMBOL vmlinux 0x595d6109 bdi_init +EXPORT_SYMBOL vmlinux 0x597798a1 sock_wfree +EXPORT_SYMBOL vmlinux 0x599a3dd6 _raw_write_unlock_irq +EXPORT_SYMBOL vmlinux 0x59aed2e7 kmem_cache_free +EXPORT_SYMBOL vmlinux 0x59bc9609 acpi_write_bit_register +EXPORT_SYMBOL vmlinux 0x59cccfac I_BDEV +EXPORT_SYMBOL vmlinux 0x59d68610 inet_select_addr +EXPORT_SYMBOL vmlinux 0x5a093605 security_path_link +EXPORT_SYMBOL vmlinux 0x5a16f4b5 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x5a17d970 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x5a296a88 mutex_lock +EXPORT_SYMBOL vmlinux 0x5a2aa62e __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x5a4896a8 __put_user_2 +EXPORT_SYMBOL vmlinux 0x5a52331e eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x5a5536c2 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x5a7a5ac1 x86_hyper_ms_hyperv +EXPORT_SYMBOL vmlinux 0x5a809385 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x5a85034e inet_sendmsg +EXPORT_SYMBOL vmlinux 0x5ab97b07 skb_make_writable +EXPORT_SYMBOL vmlinux 0x5ac21822 irq_stat +EXPORT_SYMBOL vmlinux 0x5ac376a5 acpi_install_fixed_event_handler +EXPORT_SYMBOL vmlinux 0x5acfa613 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x5af0bce9 wireless_spy_update +EXPORT_SYMBOL vmlinux 0x5afa330c inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x5b1204d4 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x5b19634d div_s64_rem +EXPORT_SYMBOL vmlinux 0x5b271d86 acpi_video_dmi_promote_vendor +EXPORT_SYMBOL vmlinux 0x5b30d64a __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x5b54576d blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0x5b80368c netdev_features_change +EXPORT_SYMBOL vmlinux 0x5b857063 input_close_device +EXPORT_SYMBOL vmlinux 0x5b94b052 kill_fasync +EXPORT_SYMBOL vmlinux 0x5bb78db8 poll_initwait +EXPORT_SYMBOL vmlinux 0x5bc7b7b3 seq_release_private +EXPORT_SYMBOL vmlinux 0x5bc8d583 copy_from_user_overflow +EXPORT_SYMBOL vmlinux 0x5bcfaec5 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x5bdb88fb kobject_del +EXPORT_SYMBOL vmlinux 0x5c09f114 pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0x5c0ca88e sock_no_accept +EXPORT_SYMBOL vmlinux 0x5c271f0b twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x5c2b26da __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x5c3edd59 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x5c545234 ucs2_strncmp +EXPORT_SYMBOL vmlinux 0x5c7e4ab7 napi_get_frags +EXPORT_SYMBOL vmlinux 0x5c829bc1 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x5c8c795f pci_bus_type +EXPORT_SYMBOL vmlinux 0x5c8cd835 fget_raw +EXPORT_SYMBOL vmlinux 0x5ca09f01 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x5cabeff8 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5d11dbb2 bdevname +EXPORT_SYMBOL vmlinux 0x5d1d63a2 xen_biovec_phys_mergeable +EXPORT_SYMBOL vmlinux 0x5d1f6d47 tcp_child_process +EXPORT_SYMBOL vmlinux 0x5d3244eb input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0x5d3ca873 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x5d41c87c param_ops_charp +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d5b5a16 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x5d5dcf14 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0x5d72d08b jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0x5d74dbcf pnp_range_reserved +EXPORT_SYMBOL vmlinux 0x5d7a0093 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x5dce6b75 complete_and_exit +EXPORT_SYMBOL vmlinux 0x5de3a748 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL vmlinux 0x5e833dd9 path_get +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5ea956fc sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ecd8d9b wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ede12fc mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f1a4ccf intel_scu_ipc_update_register +EXPORT_SYMBOL vmlinux 0x5f27544a mempool_destroy +EXPORT_SYMBOL vmlinux 0x5f33813f blk_mq_alloc_reserved_request +EXPORT_SYMBOL vmlinux 0x5f3c8f5c mmc_assume_removable +EXPORT_SYMBOL vmlinux 0x5f482693 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x5f58f676 flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x5f63ceb5 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x5f662b0a sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x5f77b974 remap_pfn_range +EXPORT_SYMBOL vmlinux 0x5f7f5830 dcache_dir_close +EXPORT_SYMBOL vmlinux 0x5f811480 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x5f867b30 sk_mc_loop +EXPORT_SYMBOL vmlinux 0x5fbcfd41 generic_file_mmap +EXPORT_SYMBOL vmlinux 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5fe41fb6 percpu_counter_set +EXPORT_SYMBOL vmlinux 0x5fe9002a linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x5fec3a7e mdiobus_free +EXPORT_SYMBOL vmlinux 0x5ff42b08 acpi_video_get_capabilities +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x600edc20 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x600fc3de mmc_erase +EXPORT_SYMBOL vmlinux 0x6017e717 netdev_lower_dev_get_private +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 0x6048b96e i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0x60558828 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x605dcb5e mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x607ff749 pnp_request_card_device +EXPORT_SYMBOL vmlinux 0x60891795 inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0x609d0ca0 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60a196e6 scsi_finish_command +EXPORT_SYMBOL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL vmlinux 0x60b1e5ac sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x60b2e38a rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x60b86f61 sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x60bcc130 free_user_ns +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60e37f4f nf_log_packet +EXPORT_SYMBOL vmlinux 0x60e53036 tty_unthrottle +EXPORT_SYMBOL vmlinux 0x60f75e37 swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x60ffe6e6 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x611736de kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x611b4892 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x612390ad netpoll_set_trap +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x61318848 thaw_bdev +EXPORT_SYMBOL vmlinux 0x6135a810 generic_pipe_buf_unmap +EXPORT_SYMBOL vmlinux 0x6138e0fe intel_gmch_probe +EXPORT_SYMBOL vmlinux 0x613e89cd inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0x614383c0 acpi_get_object_info +EXPORT_SYMBOL vmlinux 0x6149453b cap_mmap_file +EXPORT_SYMBOL vmlinux 0x61538ad0 param_get_charp +EXPORT_SYMBOL vmlinux 0x6157b085 phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x6162de60 blk_complete_request +EXPORT_SYMBOL vmlinux 0x618ba7f9 redraw_screen +EXPORT_SYMBOL vmlinux 0x619b187b add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0x61a12010 pci_dev_put +EXPORT_SYMBOL vmlinux 0x61aaa9c3 genphy_read_status +EXPORT_SYMBOL vmlinux 0x61b5ade0 down_write +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61b97412 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x61bda583 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x61d3a0e2 skb_store_bits +EXPORT_SYMBOL vmlinux 0x62049256 acpi_disable +EXPORT_SYMBOL vmlinux 0x620cec9f pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0x62148a0c blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x621d77a0 sleep_on +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 0x622fa02a prepare_to_wait +EXPORT_SYMBOL vmlinux 0x6237f6b5 acpi_enable_event +EXPORT_SYMBOL vmlinux 0x6241a2ab __copy_from_user_ll_nocache +EXPORT_SYMBOL vmlinux 0x6244aa54 get_tz_trend +EXPORT_SYMBOL vmlinux 0x6245b2f5 bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x6258e986 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x6277f246 __ip_dev_find +EXPORT_SYMBOL vmlinux 0x62822d05 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x6291fdc3 pci_get_slot +EXPORT_SYMBOL vmlinux 0x62943c62 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x62aad12e acpi_pm_device_run_wake +EXPORT_SYMBOL vmlinux 0x62ba06b4 scsi_target_resume +EXPORT_SYMBOL vmlinux 0x62c75d79 scsi_unregister +EXPORT_SYMBOL vmlinux 0x62cb4cee interruptible_sleep_on +EXPORT_SYMBOL vmlinux 0x62ebe446 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x62f211d6 nla_append +EXPORT_SYMBOL vmlinux 0x630937db dev_remove_offload +EXPORT_SYMBOL vmlinux 0x630d714b ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x63114208 generic_file_buffered_write +EXPORT_SYMBOL vmlinux 0x63160ba1 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x636a5691 acpi_register_ioapic +EXPORT_SYMBOL vmlinux 0x6375a86c simple_getattr +EXPORT_SYMBOL vmlinux 0x63a01291 acpi_leave_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x63a6bcc9 acpi_map_lsapic +EXPORT_SYMBOL vmlinux 0x63ae0138 intel_gtt_get +EXPORT_SYMBOL vmlinux 0x63aed155 pci_request_regions +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63ed5160 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x63fed362 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x640ebe56 skb_tx_error +EXPORT_SYMBOL vmlinux 0x6449fd41 acpi_install_address_space_handler +EXPORT_SYMBOL vmlinux 0x644d05f5 generic_file_open +EXPORT_SYMBOL vmlinux 0x646e4a0e cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x646e512b xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x6478134c ec_burst_enable +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64a24ef1 xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0x64a4b84d cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x64a8fc3b netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x64c089f7 ilookup +EXPORT_SYMBOL vmlinux 0x64cdb92f pci_target_state +EXPORT_SYMBOL vmlinux 0x64d05e3a write_inode_now +EXPORT_SYMBOL vmlinux 0x64df0cfc ppp_input_error +EXPORT_SYMBOL vmlinux 0x64e9dc4a find_vma +EXPORT_SYMBOL vmlinux 0x64eae7ad set_memory_array_wb +EXPORT_SYMBOL vmlinux 0x64f1598f blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x650fa396 dentry_open +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x651ceb0a nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0x65205ce0 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x65372137 stop_tty +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x6548a7f6 dev_get_flags +EXPORT_SYMBOL vmlinux 0x65594850 pci_disable_msi +EXPORT_SYMBOL vmlinux 0x655f1ab0 set_memory_array_wc +EXPORT_SYMBOL vmlinux 0x65633c3f sock_wake_async +EXPORT_SYMBOL vmlinux 0x6565d33f scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x657879ce __init_rwsem +EXPORT_SYMBOL vmlinux 0x6585e310 alloc_pages_exact_nid +EXPORT_SYMBOL vmlinux 0x65a295bb atomic64_xchg_cx8 +EXPORT_SYMBOL vmlinux 0x65a87507 udp_prot +EXPORT_SYMBOL vmlinux 0x65a908f1 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x65d9b0c5 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65e3d36b install_exec_creds +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x6605f97f flex_array_clear +EXPORT_SYMBOL vmlinux 0x66095c06 input_register_handle +EXPORT_SYMBOL vmlinux 0x661405a5 md_finish_reshape +EXPORT_SYMBOL vmlinux 0x66355efc vprintk +EXPORT_SYMBOL vmlinux 0x663afe6e neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x663f7cd0 acpi_install_table_handler +EXPORT_SYMBOL vmlinux 0x6662dafa pnp_stop_dev +EXPORT_SYMBOL vmlinux 0x6679bf5e ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x667da2b7 inode_init_always +EXPORT_SYMBOL vmlinux 0x668da8d5 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x66a67dab flex_array_shrink +EXPORT_SYMBOL vmlinux 0x66ac3d43 inet_frags_init +EXPORT_SYMBOL vmlinux 0x66c8b825 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0x66ec2a5e pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0x66f9ea3c find_get_page +EXPORT_SYMBOL vmlinux 0x66fbf165 tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x671c5994 generic_ro_fops +EXPORT_SYMBOL vmlinux 0x6729d3df __get_user_4 +EXPORT_SYMBOL vmlinux 0x6732ccf6 input_reset_device +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x675b8f61 param_get_string +EXPORT_SYMBOL vmlinux 0x6763d0da inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x67af104a get_agp_version +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67b8e957 sock_no_connect +EXPORT_SYMBOL vmlinux 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL vmlinux 0x67dcffb7 lg_lock_init +EXPORT_SYMBOL vmlinux 0x67f7403e _raw_spin_lock +EXPORT_SYMBOL vmlinux 0x681256c0 swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0x6819f3aa touch_buffer +EXPORT_SYMBOL vmlinux 0x68309480 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x687baa6b inet_frags_init_net +EXPORT_SYMBOL vmlinux 0x68984878 inet_frags_fini +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68be69bf __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x68c47cbf blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x68dfc59f __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0x68e05d57 getrawmonotonic +EXPORT_SYMBOL vmlinux 0x68e2f221 _raw_spin_unlock +EXPORT_SYMBOL vmlinux 0x68ec52d2 pid_task +EXPORT_SYMBOL vmlinux 0x68f11732 lookup_bdev +EXPORT_SYMBOL vmlinux 0x691001b5 acpi_evaluate_integer +EXPORT_SYMBOL vmlinux 0x69394394 devm_gpio_request +EXPORT_SYMBOL vmlinux 0x693f78dd dma_set_mask +EXPORT_SYMBOL vmlinux 0x696bb8f7 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x697b9c08 __blk_run_queue +EXPORT_SYMBOL vmlinux 0x6988d0ca cpu_dr7 +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69ab7f16 scsi_allocate_command +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69b58846 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x69bde5e1 __invalidate_device +EXPORT_SYMBOL vmlinux 0x69bfc99d ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x69d179db __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x69d2db62 xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x69d38ed9 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x69e27c7a bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a0d9f3b bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0x6a27bfce csum_partial_copy_generic +EXPORT_SYMBOL vmlinux 0x6a30dc3e pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x6a48e16b percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a813c22 eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x6a86f539 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6ad85887 acpi_enable_gpe +EXPORT_SYMBOL vmlinux 0x6add5c9a dmi_find_device +EXPORT_SYMBOL vmlinux 0x6afc1204 tty_unlock +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b363e6b cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x6b3d170b ping_prot +EXPORT_SYMBOL vmlinux 0x6b68b298 fsync_bdev +EXPORT_SYMBOL vmlinux 0x6b711295 bio_alloc_pages +EXPORT_SYMBOL vmlinux 0x6b7341d9 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x6bb4900e abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bce0982 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6beb2078 param_set_copystring +EXPORT_SYMBOL vmlinux 0x6bf3d574 ps2_command +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c287511 fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0x6c2986d7 pci_map_rom +EXPORT_SYMBOL vmlinux 0x6c2e3320 strncmp +EXPORT_SYMBOL vmlinux 0x6c326ee6 tcp_make_synack +EXPORT_SYMBOL vmlinux 0x6c389761 acpi_bus_get_private_data +EXPORT_SYMBOL vmlinux 0x6c4cafad km_policy_notify +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c66f9c9 acpi_lock_battery_dir +EXPORT_SYMBOL vmlinux 0x6c6f8a0f _raw_write_unlock +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c7becac pci_choose_state +EXPORT_SYMBOL vmlinux 0x6c8ed6cf phy_attach_direct +EXPORT_SYMBOL vmlinux 0x6ca4f9f5 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x6ca5b0f8 __net_get_random_once +EXPORT_SYMBOL vmlinux 0x6cb133f8 get_super +EXPORT_SYMBOL vmlinux 0x6cc21ba3 cookie_check_timestamp +EXPORT_SYMBOL vmlinux 0x6cd20070 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d16e3ce d_prune_aliases +EXPORT_SYMBOL vmlinux 0x6d1c1ab9 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x6d27ef64 __bitmap_empty +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d2d513d agp_generic_enable +EXPORT_SYMBOL vmlinux 0x6d334118 __get_user_8 +EXPORT_SYMBOL vmlinux 0x6d340f64 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0x6d80bee8 skb_copy_expand +EXPORT_SYMBOL vmlinux 0x6d91d855 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x6d998c34 block_write_end +EXPORT_SYMBOL vmlinux 0x6db9b683 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x6dc9c0ec security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x6deba062 block_invalidatepage +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df7fc73 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x6e0f404a rfkill_alloc +EXPORT_SYMBOL vmlinux 0x6e0fe29d pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x6e295a96 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x6e34ad53 sock_recvmsg +EXPORT_SYMBOL vmlinux 0x6e51ac2e _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x6e557634 put_page +EXPORT_SYMBOL vmlinux 0x6e65c952 tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0x6e65f2dc rtc_lock +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e95c35e ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x6e98292e padata_free +EXPORT_SYMBOL vmlinux 0x6e9bceb4 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x6ebc5149 param_ops_long +EXPORT_SYMBOL vmlinux 0x6ec559e0 scsi_add_device +EXPORT_SYMBOL vmlinux 0x6ee20257 acpi_bus_unregister_driver +EXPORT_SYMBOL vmlinux 0x6ef45196 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x6f092412 skb_find_text +EXPORT_SYMBOL vmlinux 0x6f195879 init_buffer +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f37340f devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x6f404bea __locks_copy_lock +EXPORT_SYMBOL vmlinux 0x6f407fd2 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x6f4c6b71 lg_local_unlock +EXPORT_SYMBOL vmlinux 0x6f556bdb acpi_get_gpe_device +EXPORT_SYMBOL vmlinux 0x6f615c7b key_revoke +EXPORT_SYMBOL vmlinux 0x6f63d787 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x6f872c3c vfs_mknod +EXPORT_SYMBOL vmlinux 0x6fb31f89 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x6fc0901e set_pages_array_wb +EXPORT_SYMBOL vmlinux 0x6fc2e284 inet_frag_kill +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fcec114 sync_inode +EXPORT_SYMBOL vmlinux 0x6fe58671 __dquot_transfer +EXPORT_SYMBOL vmlinux 0x6feb2039 acpi_write +EXPORT_SYMBOL vmlinux 0x6fed0ad5 tcp_read_sock +EXPORT_SYMBOL vmlinux 0x6fedf792 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x70161114 simple_readpage +EXPORT_SYMBOL vmlinux 0x701995a5 dev_alert +EXPORT_SYMBOL vmlinux 0x7023bea8 unregister_acpi_notifier +EXPORT_SYMBOL vmlinux 0x702eb7ac bio_pair_release +EXPORT_SYMBOL vmlinux 0x703b4352 _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x70462a35 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x70527dca cdrom_check_events +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x705d29bd inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x705f7537 processors +EXPORT_SYMBOL vmlinux 0x7062b639 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x706ac86f mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0x706ae6d5 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x707f93dd preempt_schedule +EXPORT_SYMBOL vmlinux 0x708e7a48 register_xen_selfballooning +EXPORT_SYMBOL vmlinux 0x7091df1a del_gendisk +EXPORT_SYMBOL vmlinux 0x709f1707 acpi_device_set_power +EXPORT_SYMBOL vmlinux 0x70bbddf0 pcim_enable_device +EXPORT_SYMBOL vmlinux 0x70bc17d7 inode_wait +EXPORT_SYMBOL vmlinux 0x70d053fd try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0x70d1f8f3 strncat +EXPORT_SYMBOL vmlinux 0x70d36b36 pci_dev_get +EXPORT_SYMBOL vmlinux 0x70d4a62c neigh_table_clear +EXPORT_SYMBOL vmlinux 0x70d59b14 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x70d8ab82 acpi_acquire_global_lock +EXPORT_SYMBOL vmlinux 0x70e0c465 set_nlink +EXPORT_SYMBOL vmlinux 0x710078de unload_nls +EXPORT_SYMBOL vmlinux 0x7114a71f bit_waitqueue +EXPORT_SYMBOL vmlinux 0x7126d588 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x71918a38 call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0x71a29717 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71c595f5 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x71e20d2f posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x71e73db2 pci_biosrom_size +EXPORT_SYMBOL vmlinux 0x71e8d707 tcp_splice_read +EXPORT_SYMBOL vmlinux 0x71e925f8 devm_request_and_ioremap +EXPORT_SYMBOL vmlinux 0x71f3d1ee vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x71f65175 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0x7211be69 blk_delay_queue +EXPORT_SYMBOL vmlinux 0x72148957 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x7228e031 __nlmsg_put +EXPORT_SYMBOL vmlinux 0x726233e0 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x726d27ae pcie_port_service_register +EXPORT_SYMBOL vmlinux 0x728a49cd tcp_gso_segment +EXPORT_SYMBOL vmlinux 0x728bb5f1 unregister_console +EXPORT_SYMBOL vmlinux 0x72ab650d inet_shutdown +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72b5b2b7 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x72bcd193 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x72bf2140 mtrr_add +EXPORT_SYMBOL vmlinux 0x72cbf326 d_set_d_op +EXPORT_SYMBOL vmlinux 0x72d58de9 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x72de6c68 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x72df2f2a up_read +EXPORT_SYMBOL vmlinux 0x72e25d22 __sb_start_write +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72f3aa32 acpi_get_physical_device_location +EXPORT_SYMBOL vmlinux 0x731a95ff file_update_time +EXPORT_SYMBOL vmlinux 0x733b90e6 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x735a0bd5 native_io_delay +EXPORT_SYMBOL vmlinux 0x7372e937 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x737cfc45 alloc_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x737de5e9 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x7381a724 agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0x738803e6 strnlen +EXPORT_SYMBOL vmlinux 0x73963094 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x73ab3752 inet_listen +EXPORT_SYMBOL vmlinux 0x73c2916b dev_add_offload +EXPORT_SYMBOL vmlinux 0x73dd54eb irq_fpu_usable +EXPORT_SYMBOL vmlinux 0x73e1c2fe mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x73e2b329 nf_afinfo +EXPORT_SYMBOL vmlinux 0x73e65319 md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0x740a1b95 reserve_evntsel_nmi +EXPORT_SYMBOL vmlinux 0x7413793a EISA_bus +EXPORT_SYMBOL vmlinux 0x741ceb54 inet_del_protocol +EXPORT_SYMBOL vmlinux 0x743b4ae3 atomic64_inc_not_zero_cx8 +EXPORT_SYMBOL vmlinux 0x743f4d30 blkdev_fsync +EXPORT_SYMBOL vmlinux 0x745a946d __sock_create +EXPORT_SYMBOL vmlinux 0x7469fcfe radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x74881d07 acpi_unlock_battery_dir +EXPORT_SYMBOL vmlinux 0x74898636 acpi_processor_notify_smm +EXPORT_SYMBOL vmlinux 0x748d2f77 ip_ct_attach +EXPORT_SYMBOL vmlinux 0x74946944 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x74b72f96 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x74bb2181 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74c81cfa xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x74ce05b8 flush_delayed_work +EXPORT_SYMBOL vmlinux 0x74e5c98f ucs2_strnlen +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74e8f313 i2c_master_send +EXPORT_SYMBOL vmlinux 0x74ebe584 flush_signals +EXPORT_SYMBOL vmlinux 0x74eda017 xfrm_state_update +EXPORT_SYMBOL vmlinux 0x74ee4244 iget_failed +EXPORT_SYMBOL vmlinux 0x750338db dev_emerg +EXPORT_SYMBOL vmlinux 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x75098a1f dcache_readdir +EXPORT_SYMBOL vmlinux 0x751a560a pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0x75230f66 security_inode_init_security +EXPORT_SYMBOL vmlinux 0x75271716 save_processor_state +EXPORT_SYMBOL vmlinux 0x7531e3dc acpi_get_event_resources +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x754dac78 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x756b7780 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x7593d385 div64_s64 +EXPORT_SYMBOL vmlinux 0x75ae2b19 security_path_mknod +EXPORT_SYMBOL vmlinux 0x75bb675a finish_wait +EXPORT_SYMBOL vmlinux 0x75bc611d pci_release_region +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75c5773a jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x75d042ad invalidate_partition +EXPORT_SYMBOL vmlinux 0x75d08c36 led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0x75d09b28 mpage_writepages +EXPORT_SYMBOL vmlinux 0x75d21809 vprintk_emit +EXPORT_SYMBOL vmlinux 0x75f0368a names_cachep +EXPORT_SYMBOL vmlinux 0x75f3ea52 padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x75fbdefd acpi_remove_address_space_handler +EXPORT_SYMBOL vmlinux 0x7600a3e7 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x76041d4c seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x7615a0ec gen10g_config_advert +EXPORT_SYMBOL vmlinux 0x7628f3c7 this_cpu_off +EXPORT_SYMBOL vmlinux 0x762add85 atomic64_inc_return_cx8 +EXPORT_SYMBOL vmlinux 0x7636f2f7 __scsi_add_device +EXPORT_SYMBOL vmlinux 0x763f436d scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x7641ed47 clk_get +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x76581e0b pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x766045e1 vga_switcheroo_init_domain_pm_optimus_hdmi_audio +EXPORT_SYMBOL vmlinux 0x767ddb02 set_memory_wc +EXPORT_SYMBOL vmlinux 0x76989bf7 kern_path_create +EXPORT_SYMBOL vmlinux 0x769e06d7 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x76bf656d __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76e54db9 tcf_em_register +EXPORT_SYMBOL vmlinux 0x76fe4329 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x770a0036 isapnp_cfg_begin +EXPORT_SYMBOL vmlinux 0x771bbf94 input_set_keycode +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x772594e1 blk_recount_segments +EXPORT_SYMBOL vmlinux 0x772f9eec __percpu_counter_add +EXPORT_SYMBOL vmlinux 0x774415d5 lro_receive_skb +EXPORT_SYMBOL vmlinux 0x77456e0a acpi_root_dir +EXPORT_SYMBOL vmlinux 0x7756d0eb jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x7761aad7 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77a81f79 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x77b78cf9 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77c0eb82 i2c_use_client +EXPORT_SYMBOL vmlinux 0x77d24156 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x77df0847 __set_personality +EXPORT_SYMBOL vmlinux 0x77ecac9f zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x780fdfd1 intel_enable_gtt +EXPORT_SYMBOL vmlinux 0x782567ec memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x786879b2 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x78803da9 blk_make_request +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x7880dfe0 flush_old_exec +EXPORT_SYMBOL vmlinux 0x78817dad register_netdev +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78a101ac ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x78bb2011 dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0x78c4b90a crypto_sha512_update +EXPORT_SYMBOL vmlinux 0x78db38d3 proc_dointvec +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL vmlinux 0x79049560 get_task_io_context +EXPORT_SYMBOL vmlinux 0x79068fda acpi_install_method +EXPORT_SYMBOL vmlinux 0x790fbb51 elv_register_queue +EXPORT_SYMBOL vmlinux 0x79331bea dma_ops +EXPORT_SYMBOL vmlinux 0x7935e9d5 kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x794c02f1 release_pages +EXPORT_SYMBOL vmlinux 0x7960a2dc mpage_readpages +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79c5750c xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x79d870eb set_binfmt +EXPORT_SYMBOL vmlinux 0x7a10fabc i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x7a188791 prandom_bytes +EXPORT_SYMBOL vmlinux 0x7a19a2d7 init_net +EXPORT_SYMBOL vmlinux 0x7a1cd66d eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a3da490 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a51e313 devm_clk_put +EXPORT_SYMBOL vmlinux 0x7a82cb47 rdmsrl_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x7a91726b clkdev_alloc +EXPORT_SYMBOL vmlinux 0x7a925833 cpufreq_get_global_kobject +EXPORT_SYMBOL vmlinux 0x7a96b732 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x7a9bf88d udplite_table +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7abf8c27 uart_resume_port +EXPORT_SYMBOL vmlinux 0x7abfaa17 __netif_schedule +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7aea6d95 skb_free_datagram +EXPORT_SYMBOL vmlinux 0x7aec9089 clear_user +EXPORT_SYMBOL vmlinux 0x7af0a33c ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x7afa89fc vsnprintf +EXPORT_SYMBOL vmlinux 0x7b1089f7 pnp_find_card +EXPORT_SYMBOL vmlinux 0x7b134ddf acpi_get_name +EXPORT_SYMBOL vmlinux 0x7b1ade38 lz4_decompress +EXPORT_SYMBOL vmlinux 0x7b1b7ebc kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0x7b202e14 neigh_destroy +EXPORT_SYMBOL vmlinux 0x7b21f488 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x7b528ce1 dquot_get_dqinfo +EXPORT_SYMBOL vmlinux 0x7b52a859 wrmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x7b5912e2 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b5d7376 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x7b81e815 dmam_release_declared_memory +EXPORT_SYMBOL vmlinux 0x7b9a6116 intel_agp_enabled +EXPORT_SYMBOL vmlinux 0x7bba0dbd genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x7bbaad29 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x7bbb401c acpi_bus_register_driver +EXPORT_SYMBOL vmlinux 0x7bcbdffb abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c58a238 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c73ac60 inet_bind +EXPORT_SYMBOL vmlinux 0x7c886e93 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x7c8a3ff1 seq_open +EXPORT_SYMBOL vmlinux 0x7ca0103f bio_copy_data +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cb6cae5 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x7cc578da param_get_long +EXPORT_SYMBOL vmlinux 0x7ccb504d tcp_check_req +EXPORT_SYMBOL vmlinux 0x7cdb586b kobject_set_name +EXPORT_SYMBOL vmlinux 0x7ce184d3 dev_activate +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7ce83365 acpi_remove_table_handler +EXPORT_SYMBOL vmlinux 0x7cf08b33 make_kgid +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d1cdd8c iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x7d205594 sock_no_bind +EXPORT_SYMBOL vmlinux 0x7d26cb3e pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x7d3c7e57 inet_csk_accept +EXPORT_SYMBOL vmlinux 0x7d4c08b6 security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x7d4c2cbe get_disk +EXPORT_SYMBOL vmlinux 0x7d71db48 kset_register +EXPORT_SYMBOL vmlinux 0x7d94f746 acpi_os_write_port +EXPORT_SYMBOL vmlinux 0x7d97a6ac pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0x7da501f7 d_delete +EXPORT_SYMBOL vmlinux 0x7dacebfa inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x7dbc2e57 mmiotrace_printk +EXPORT_SYMBOL vmlinux 0x7dd39349 tty_unregister_device +EXPORT_SYMBOL vmlinux 0x7de99864 mmc_gpio_free_cd +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7e06dd19 blk_mq_free_queue +EXPORT_SYMBOL vmlinux 0x7e08e4fb read_code +EXPORT_SYMBOL vmlinux 0x7e13e9b2 pci_get_subsys +EXPORT_SYMBOL vmlinux 0x7e2fcbb1 kill_pid +EXPORT_SYMBOL vmlinux 0x7e314f48 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x7e394c4e sysctl_local_reserved_ports +EXPORT_SYMBOL vmlinux 0x7e57eefe ip6_frag_match +EXPORT_SYMBOL vmlinux 0x7e8114fd pcibios_set_irq_routing +EXPORT_SYMBOL vmlinux 0x7e8aa2e0 freeze_bdev +EXPORT_SYMBOL vmlinux 0x7e95ae5d dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0x7eb41074 __pagevec_release +EXPORT_SYMBOL vmlinux 0x7ebf4efa inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x7ec31977 lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x7ecb001b __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x7ee73c0c memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0x7f05820b phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f4618ee blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x7f51a635 dquot_commit_info +EXPORT_SYMBOL vmlinux 0x7f658e80 _raw_write_lock +EXPORT_SYMBOL vmlinux 0x7f6e8653 dquot_file_open +EXPORT_SYMBOL vmlinux 0x7f7177ed xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x7f748db3 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0x7f80d40b bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x7fb15a7c __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x7fd17ba9 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x7fd54522 submit_bh +EXPORT_SYMBOL vmlinux 0x7fdca63a generic_permission +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7fecf981 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x7fef0b1e acpi_match_device_ids +EXPORT_SYMBOL vmlinux 0x7ffec59d blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x800336c3 vmap +EXPORT_SYMBOL vmlinux 0x80265765 gen10g_suspend +EXPORT_SYMBOL vmlinux 0x8032aedf __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x804745d9 __idr_pre_get +EXPORT_SYMBOL vmlinux 0x804f922a ipmi_addr_length +EXPORT_SYMBOL vmlinux 0x806ff8fc pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80d9ca85 paravirt_ticketlocks_enabled +EXPORT_SYMBOL vmlinux 0x80de1dca scsi_device_get +EXPORT_SYMBOL vmlinux 0x8101870a mem_cgroup_subsys +EXPORT_SYMBOL vmlinux 0x81038186 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0x811dec4d skb_insert +EXPORT_SYMBOL vmlinux 0x81472677 acpi_get_table +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x8150a1f1 simple_rename +EXPORT_SYMBOL vmlinux 0x8150c0ba mempool_resize +EXPORT_SYMBOL vmlinux 0x815819b1 iget5_locked +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x815c56d0 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x815f2897 empty_zero_page +EXPORT_SYMBOL vmlinux 0x81bae999 follow_down_one +EXPORT_SYMBOL vmlinux 0x81bc40a0 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x81c2536b __module_get +EXPORT_SYMBOL vmlinux 0x81d10f5f trace_seq_putc +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81e6b37f dmi_get_system_info +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x8212721d xenbus_dev_request_and_reply +EXPORT_SYMBOL vmlinux 0x8224b2ea ps2_end_command +EXPORT_SYMBOL vmlinux 0x8235805b memmove +EXPORT_SYMBOL vmlinux 0x8248905a pnp_start_dev +EXPORT_SYMBOL vmlinux 0x8251bcc3 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x8260686f bitmap_find_next_zero_area +EXPORT_SYMBOL vmlinux 0x826da92f scsi_calculate_bounce_limit +EXPORT_SYMBOL vmlinux 0x8280048f register_cdrom +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x8280f3d8 bio_sector_offset +EXPORT_SYMBOL vmlinux 0x82898a72 dev_uc_add +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82b68851 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x82ba81c7 vfs_fsync +EXPORT_SYMBOL vmlinux 0x82d46821 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x82f0e17e bdgrab +EXPORT_SYMBOL vmlinux 0x82fb965b filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x830a4e60 dma_sync_wait +EXPORT_SYMBOL vmlinux 0x830e547b ioremap_prot +EXPORT_SYMBOL vmlinux 0x83156c18 mount_bdev +EXPORT_SYMBOL vmlinux 0x83271fda load_nls +EXPORT_SYMBOL vmlinux 0x832e8a38 udp_ioctl +EXPORT_SYMBOL vmlinux 0x833c03aa acpi_enable_all_runtime_gpes +EXPORT_SYMBOL vmlinux 0x836e01ed elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x83802101 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x83a476ce bitmap_scnlistprintf +EXPORT_SYMBOL vmlinux 0x83b61dd9 md_write_start +EXPORT_SYMBOL vmlinux 0x83cd74ce dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x84060081 xen_poll_irq_timeout +EXPORT_SYMBOL vmlinux 0x8406ede2 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x8407aacc uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x8417f512 acpi_update_all_gpes +EXPORT_SYMBOL vmlinux 0x84188fe1 PDE_DATA +EXPORT_SYMBOL vmlinux 0x841962f8 param_get_ushort +EXPORT_SYMBOL vmlinux 0x8420967c generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x844f6d02 clear_inode +EXPORT_SYMBOL vmlinux 0x84532181 pci_assign_resource +EXPORT_SYMBOL vmlinux 0x84545d4e __ht_create_irq +EXPORT_SYMBOL vmlinux 0x845e831e pagecache_write_end +EXPORT_SYMBOL vmlinux 0x84b028db blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x84be886f completion_done +EXPORT_SYMBOL vmlinux 0x84edec15 __inet6_hash +EXPORT_SYMBOL vmlinux 0x84f58711 __dst_free +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x8509c540 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0x8518eca9 param_get_short +EXPORT_SYMBOL vmlinux 0x852316b6 bh_submit_read +EXPORT_SYMBOL vmlinux 0x852be3a1 user_revoke +EXPORT_SYMBOL vmlinux 0x853bf7c1 param_set_int +EXPORT_SYMBOL vmlinux 0x85544411 __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x85560025 ps2_drain +EXPORT_SYMBOL vmlinux 0x8563340f blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x859752f7 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x85a09c26 cfb_fillrect +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85c75995 freezing_slow_path +EXPORT_SYMBOL vmlinux 0x85c98758 __lru_cache_add +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85e143d9 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x85e7deb2 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x8604f565 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x861fba98 wait_for_completion_io +EXPORT_SYMBOL vmlinux 0x86290182 posix_lock_file +EXPORT_SYMBOL vmlinux 0x86341410 tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x8671e6a2 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x86786ca7 inode_dio_done +EXPORT_SYMBOL vmlinux 0x867d78a6 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x869ee37d __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x86a128cf simple_transaction_get +EXPORT_SYMBOL vmlinux 0x86a4889a kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x86c700bb nf_log_register +EXPORT_SYMBOL vmlinux 0x86ce666a __neigh_event_send +EXPORT_SYMBOL vmlinux 0x86d5255f _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x87013d72 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x870bf928 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x87137d22 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x8747c38d ip6_xmit +EXPORT_SYMBOL vmlinux 0x874c3de2 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x875cc8ba dev_close +EXPORT_SYMBOL vmlinux 0x876dafc3 ec_write +EXPORT_SYMBOL vmlinux 0x8779a34f param_ops_byte +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x878e692d blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0x8796fb9f block_read_full_page +EXPORT_SYMBOL vmlinux 0x8798e453 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x87aaddf8 wrmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0x87caf5d7 dquot_commit +EXPORT_SYMBOL vmlinux 0x87da7a17 ip_check_defrag +EXPORT_SYMBOL vmlinux 0x8805cb4c nf_setsockopt +EXPORT_SYMBOL vmlinux 0x880640f1 dquot_quota_off +EXPORT_SYMBOL vmlinux 0x881039d0 zlib_inflate +EXPORT_SYMBOL vmlinux 0x882dab9d sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0x8834396c mod_timer +EXPORT_SYMBOL vmlinux 0x883bbdb5 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x88513970 param_set_byte +EXPORT_SYMBOL vmlinux 0x8867d1a8 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x886cf69e dquot_destroy +EXPORT_SYMBOL vmlinux 0x8892c7d8 fb_get_mode +EXPORT_SYMBOL vmlinux 0x88994ebf rename_lock +EXPORT_SYMBOL vmlinux 0x88c6afd5 __devm_release_region +EXPORT_SYMBOL vmlinux 0x88d6033e pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x88ee730c ipv4_specific +EXPORT_SYMBOL vmlinux 0x8915a36f account_page_writeback +EXPORT_SYMBOL vmlinux 0x892b26a0 set_memory_nx +EXPORT_SYMBOL vmlinux 0x892fb297 pci_scan_slot +EXPORT_SYMBOL vmlinux 0x89408469 dev_get_by_name +EXPORT_SYMBOL vmlinux 0x894d369d mdiobus_write +EXPORT_SYMBOL vmlinux 0x895094d3 __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x8953f8ff __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x89558603 d_lookup +EXPORT_SYMBOL vmlinux 0x896dd74f bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x897473df mktime +EXPORT_SYMBOL vmlinux 0x898266e5 tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89b04298 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89f64d4f kern_unmount +EXPORT_SYMBOL vmlinux 0x89fbd74a nla_reserve +EXPORT_SYMBOL vmlinux 0x8a0bc550 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a28b9c5 nf_reinject +EXPORT_SYMBOL vmlinux 0x8a2e6138 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x8a428f86 dev_load +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a706fb8 tcp_parse_options +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a80d7a5 acpi_error +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8aa9809b cdev_del +EXPORT_SYMBOL vmlinux 0x8ab37e10 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x8abaf962 kill_bdev +EXPORT_SYMBOL vmlinux 0x8abe86ad inet6_bind +EXPORT_SYMBOL vmlinux 0x8ae672a2 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x8aeda1e2 max8925_reg_read +EXPORT_SYMBOL vmlinux 0x8b01097a __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x8b078694 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x8b18496f __copy_to_user_ll +EXPORT_SYMBOL vmlinux 0x8b189598 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x8b1a7a66 pcie_aspm_enabled +EXPORT_SYMBOL vmlinux 0x8b226a81 acpi_video_dmi_demote_vendor +EXPORT_SYMBOL vmlinux 0x8b2d4622 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x8b31689b neigh_table_init +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b5f4a2e IO_APIC_get_PCI_irq_vector +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b65b21d dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x8b6d6f81 ip_setsockopt +EXPORT_SYMBOL vmlinux 0x8b714246 sock_i_ino +EXPORT_SYMBOL vmlinux 0x8b989cf9 acpi_bus_can_wakeup +EXPORT_SYMBOL vmlinux 0x8ba8c784 bio_map_user +EXPORT_SYMBOL vmlinux 0x8bc900ee abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x8be298fc __lock_buffer +EXPORT_SYMBOL vmlinux 0x8be4742e acpi_device_hid +EXPORT_SYMBOL vmlinux 0x8c02bb1a input_register_handler +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c601ecd __get_page_tail +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c82cec6 vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL vmlinux 0x8c911e90 file_remove_suid +EXPORT_SYMBOL vmlinux 0x8c9473e0 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0x8ca30390 alloc_disk +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8cda8029 xen_clear_irq_pending +EXPORT_SYMBOL vmlinux 0x8d03649e fasync_helper +EXPORT_SYMBOL vmlinux 0x8d15f707 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0x8d26c88a balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0x8d2e268b param_ops_ulong +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d5a9e28 idr_get_next +EXPORT_SYMBOL vmlinux 0x8d6f81b4 __div64_32 +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d8d96c6 acpi_get_sleep_type_data +EXPORT_SYMBOL vmlinux 0x8d9a4e7c call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x8da1a3cb acpi_remove_interface +EXPORT_SYMBOL vmlinux 0x8da443f1 set_pages_x +EXPORT_SYMBOL vmlinux 0x8daf8c42 dql_init +EXPORT_SYMBOL vmlinux 0x8dc6e564 restore_processor_state +EXPORT_SYMBOL vmlinux 0x8dd708da dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x8dfa6953 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x8e002cda acpi_remove_gpe_block +EXPORT_SYMBOL vmlinux 0x8e0d66f4 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x8e3785b6 try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x8e5179dd vga_switcheroo_set_dynamic_switch +EXPORT_SYMBOL vmlinux 0x8e52717a vfs_writev +EXPORT_SYMBOL vmlinux 0x8e76d612 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x8e81c174 generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x8e864a86 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x8e87aed4 idr_for_each +EXPORT_SYMBOL vmlinux 0x8e888ec3 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x8e9e747f scsi_put_command +EXPORT_SYMBOL vmlinux 0x8eaf2a5f vga_switcheroo_unregister_handler +EXPORT_SYMBOL vmlinux 0x8ee97bba sk_alloc +EXPORT_SYMBOL vmlinux 0x8efaf08e neigh_direct_output +EXPORT_SYMBOL vmlinux 0x8f045d1c cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x8f2703b7 wbinvd_on_all_cpus +EXPORT_SYMBOL vmlinux 0x8f51e1cf swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x8f59581e devfreq_interval_update +EXPORT_SYMBOL vmlinux 0x8f5dcf90 xfrm_init_state +EXPORT_SYMBOL vmlinux 0x8f5ebb04 neigh_update +EXPORT_SYMBOL vmlinux 0x8f6dcaff ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x8f7cb1c1 find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x8f822fef skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x8f8e9db7 pci_scan_bus_parented +EXPORT_SYMBOL vmlinux 0x8f9c199c __get_user_2 +EXPORT_SYMBOL vmlinux 0x8fb37163 proc_create_data +EXPORT_SYMBOL vmlinux 0x8fb7cf99 generic_block_bmap +EXPORT_SYMBOL vmlinux 0x8fbe9c26 __napi_complete +EXPORT_SYMBOL vmlinux 0x8fbf5b8f ip6_frag_init +EXPORT_SYMBOL vmlinux 0x8fc0ec42 mdio_bus_type +EXPORT_SYMBOL vmlinux 0x8fefff24 security_path_mkdir +EXPORT_SYMBOL vmlinux 0x8ff4079b pv_irq_ops +EXPORT_SYMBOL vmlinux 0x8ffdb3b8 crc16 +EXPORT_SYMBOL vmlinux 0x9018bde1 dst_alloc +EXPORT_SYMBOL vmlinux 0x9037706e d_add_ci +EXPORT_SYMBOL vmlinux 0x904409c6 acpi_set_firmware_waking_vector +EXPORT_SYMBOL vmlinux 0x90711f4b unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x908b53ed param_set_short +EXPORT_SYMBOL vmlinux 0x908bdcd3 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x90957347 netdev_notice +EXPORT_SYMBOL vmlinux 0x909f54b0 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x90a6d2ec tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x90a7f636 __find_get_block +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x90da6c8d dev_alloc_name +EXPORT_SYMBOL vmlinux 0x911d01c9 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x9141ec9e proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x9144a8e2 ec_burst_disable +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x915c91ec gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x91607d95 set_memory_wb +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x9172e756 kfree_put_link +EXPORT_SYMBOL vmlinux 0x917ea7ff pcim_pin_device +EXPORT_SYMBOL vmlinux 0x91967e8e xen_selfballoon_init +EXPORT_SYMBOL vmlinux 0x91ec90f8 unlazy_fpu +EXPORT_SYMBOL vmlinux 0x91f465a0 md_done_sync +EXPORT_SYMBOL vmlinux 0x91f4cd15 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x91f75e24 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x91f8bd9b request_key_async +EXPORT_SYMBOL vmlinux 0x91f90a9c sock_no_listen +EXPORT_SYMBOL vmlinux 0x91fac6d3 pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0x91fbc3b8 file_ns_capable +EXPORT_SYMBOL vmlinux 0x91fdd7ff pci_scan_bus +EXPORT_SYMBOL vmlinux 0x920669dd pci_find_capability +EXPORT_SYMBOL vmlinux 0x921098ce tty_port_close +EXPORT_SYMBOL vmlinux 0x921accf5 mmc_gpio_free_ro +EXPORT_SYMBOL vmlinux 0x9223e5ca tty_port_close_end +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x924262e3 tty_port_put +EXPORT_SYMBOL vmlinux 0x925288fe i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x925520d2 blk_start_plug +EXPORT_SYMBOL vmlinux 0x9272dff0 __ip_select_ident +EXPORT_SYMBOL vmlinux 0x92829af4 release_firmware +EXPORT_SYMBOL vmlinux 0x92897e3d default_idle +EXPORT_SYMBOL vmlinux 0x9297972b phy_device_register +EXPORT_SYMBOL vmlinux 0x929b9191 from_kuid +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x930d8a51 pci_dev_driver +EXPORT_SYMBOL vmlinux 0x9320a6cd pnp_register_card_driver +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x93350a14 idr_find_slowpath +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x9365e3ee max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x9398ce15 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x93a474f1 agp_backend_acquire +EXPORT_SYMBOL vmlinux 0x93a6e0b2 io_schedule +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93b8605b inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x93bca72b tty_register_driver +EXPORT_SYMBOL vmlinux 0x93d5de52 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x93d84a26 security_path_symlink +EXPORT_SYMBOL vmlinux 0x93de242d unlock_new_inode +EXPORT_SYMBOL vmlinux 0x93ec22f5 blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x93f7b61e tcp_disconnect +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x9408524d unlock_rename +EXPORT_SYMBOL vmlinux 0x941380d7 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0x9421ce44 d_rehash +EXPORT_SYMBOL vmlinux 0x94225a67 serio_close +EXPORT_SYMBOL vmlinux 0x946624d1 simple_open +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x949729a3 dm_get_device +EXPORT_SYMBOL vmlinux 0x94b541b5 cpu_active_mask +EXPORT_SYMBOL vmlinux 0x94d80fdb bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x94e9d7ba cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x9508f166 param_ops_bint +EXPORT_SYMBOL vmlinux 0x95395301 acpi_exception +EXPORT_SYMBOL vmlinux 0x953a6fa5 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x9566e671 simple_unlink +EXPORT_SYMBOL vmlinux 0x9592801f __alloc_skb +EXPORT_SYMBOL vmlinux 0x95933b0d nf_unregister_hook +EXPORT_SYMBOL vmlinux 0x9593d9a6 scsi_remove_device +EXPORT_SYMBOL vmlinux 0x95985325 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x95b21851 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x95c6d1f1 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x95cdf98a pnp_possible_config +EXPORT_SYMBOL vmlinux 0x95e5e836 pci_enable_ltr +EXPORT_SYMBOL vmlinux 0x95e6e500 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x95f89a33 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x9602c63c lock_sock_fast +EXPORT_SYMBOL vmlinux 0x96449375 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x964f626a vga_switcheroo_client_fb_set +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x967315ee jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x967baec0 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x96898769 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x9693ea1d __brelse +EXPORT_SYMBOL vmlinux 0x96a1b6e9 tty_mutex +EXPORT_SYMBOL vmlinux 0x96a27dc4 ht_create_irq +EXPORT_SYMBOL vmlinux 0x96a6ee4b netdev_update_features +EXPORT_SYMBOL vmlinux 0x96b1d4ec phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96fb9a92 iput +EXPORT_SYMBOL vmlinux 0x96fd3d2c devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0x970b1cad cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x9719a91f unregister_binfmt +EXPORT_SYMBOL vmlinux 0x973fa82e register_acpi_notifier +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x977ad20b skb_put +EXPORT_SYMBOL vmlinux 0x97808b3d key_type_keyring +EXPORT_SYMBOL vmlinux 0x97844d02 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x9785d655 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x97905d1c read_dev_sector +EXPORT_SYMBOL vmlinux 0x9797126f mmc_register_driver +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a60e3d param_get_bool +EXPORT_SYMBOL vmlinux 0x97b4500c __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x97b59586 lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0x97b68ebc pci_release_regions +EXPORT_SYMBOL vmlinux 0x97befae4 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x97c5bd0a acpi_unload_parent_table +EXPORT_SYMBOL vmlinux 0x97ca7596 __page_symlink +EXPORT_SYMBOL vmlinux 0x97dcef29 acpi_processor_unregister_performance +EXPORT_SYMBOL vmlinux 0x97de0ddd acpi_install_gpe_block +EXPORT_SYMBOL vmlinux 0x97f40479 dev_set_mtu +EXPORT_SYMBOL vmlinux 0x9820b644 warn_slowpath_fmt_taint +EXPORT_SYMBOL vmlinux 0x983207b0 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0x98332766 build_skb +EXPORT_SYMBOL vmlinux 0x984690fa free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x9846a1f4 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x984fb26f i2c_release_client +EXPORT_SYMBOL vmlinux 0x98503a08 _raw_spin_unlock_irq +EXPORT_SYMBOL vmlinux 0x98505889 nf_getsockopt +EXPORT_SYMBOL vmlinux 0x986c78cf eth_header_parse +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x98801480 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x988ed85d set_memory_x +EXPORT_SYMBOL vmlinux 0x989e42dc phy_device_create +EXPORT_SYMBOL vmlinux 0x98a344ef devm_free_irq +EXPORT_SYMBOL vmlinux 0x98b69149 blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0x98c400a4 clocksource_unregister +EXPORT_SYMBOL vmlinux 0x98fa21b0 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x990a225d devm_gpio_free +EXPORT_SYMBOL vmlinux 0x990e8b57 security_inode_readlink +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x9960d27e no_llseek +EXPORT_SYMBOL vmlinux 0x99650816 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99a4f128 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x99a7aeeb scsi_setup_fs_cmnd +EXPORT_SYMBOL vmlinux 0x99b1263b set_pages_uc +EXPORT_SYMBOL vmlinux 0x99c07225 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99ed86e5 single_open +EXPORT_SYMBOL vmlinux 0x99fa7294 mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x9a0b5f35 dcache_dir_open +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a3c9c4c blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x9a49260b mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x9a4b26c1 d_find_alias +EXPORT_SYMBOL vmlinux 0x9a59d43f mmc_can_discard +EXPORT_SYMBOL vmlinux 0x9a6a83f9 cmos_lock +EXPORT_SYMBOL vmlinux 0x9a7ccafd ata_link_printk +EXPORT_SYMBOL vmlinux 0x9a7f2390 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x9a7fdaec pnp_device_detach +EXPORT_SYMBOL vmlinux 0x9ae2f087 update_devfreq +EXPORT_SYMBOL vmlinux 0x9ae4f36f tcp_gro_receive +EXPORT_SYMBOL vmlinux 0x9ae73e77 kill_block_super +EXPORT_SYMBOL vmlinux 0x9b01325e udp_seq_open +EXPORT_SYMBOL vmlinux 0x9b1d867c scsi_remove_host +EXPORT_SYMBOL vmlinux 0x9b28838a __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x9b2d8800 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b3fdc79 input_set_abs_params +EXPORT_SYMBOL vmlinux 0x9b6a8b3b __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b75cb81 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x9b94e757 rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0x9b950d4c inet_add_protocol +EXPORT_SYMBOL vmlinux 0x9b97ef4a vga_switcheroo_init_domain_pm_ops +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9ba8e2d0 do_sync_write +EXPORT_SYMBOL vmlinux 0x9bbeba46 neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9c217574 dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x9c25104a scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x9c27b964 simple_rmdir +EXPORT_SYMBOL vmlinux 0x9c2c944a __copy_from_user_ll_nocache_nozero +EXPORT_SYMBOL vmlinux 0x9c3a5026 gen_pool_free +EXPORT_SYMBOL vmlinux 0x9c478e54 vfs_open +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c8ecd26 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cb067c8 devfreq_add_governor +EXPORT_SYMBOL vmlinux 0x9cba41b6 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x9ceb163c memcpy_toiovec +EXPORT_SYMBOL vmlinux 0x9cfd56c5 scsi_print_status +EXPORT_SYMBOL vmlinux 0x9cff3a49 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x9d05f6c4 ktime_get_clocktai +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d33ef5e acpi_enable +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d3d320d __bforget +EXPORT_SYMBOL vmlinux 0x9d4280df ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x9d54d538 scsi_dma_map +EXPORT_SYMBOL vmlinux 0x9d6b22da blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x9d90f95f __crc32c_le_combine +EXPORT_SYMBOL vmlinux 0x9df5162f create_empty_buffers +EXPORT_SYMBOL vmlinux 0x9dfe7307 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e038c49 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x9e05dd10 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e2000a7 memcpy_toiovecend +EXPORT_SYMBOL vmlinux 0x9e363b6b acpi_disable_gpe +EXPORT_SYMBOL vmlinux 0x9e46f110 generic_make_request +EXPORT_SYMBOL vmlinux 0x9e4b3747 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e5aa074 tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e64fbfe rtc_cmos_read +EXPORT_SYMBOL vmlinux 0x9e6862cd blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x9e6c5802 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x9e7d6bd0 __udelay +EXPORT_SYMBOL vmlinux 0x9e9f1714 __bitmap_andnot +EXPORT_SYMBOL vmlinux 0x9ea0ad49 __sg_free_table +EXPORT_SYMBOL vmlinux 0x9eb90f5b thermal_cdev_update +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ed2eec7 param_set_ushort +EXPORT_SYMBOL vmlinux 0x9ed685ee iov_iter_advance +EXPORT_SYMBOL vmlinux 0x9ef9ea16 mount_subtree +EXPORT_SYMBOL vmlinux 0x9effa6b4 inode_change_ok +EXPORT_SYMBOL vmlinux 0x9f27bb56 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x9f2bdaac __bitmap_or +EXPORT_SYMBOL vmlinux 0x9f2e6daa wake_up_process +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f491e5d ftrace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0x9f622f82 arp_send +EXPORT_SYMBOL vmlinux 0x9f68a078 pci_set_master +EXPORT_SYMBOL vmlinux 0x9f765087 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x9f7bc6d2 xfrm_register_km +EXPORT_SYMBOL vmlinux 0x9f7e81cc tcp_proc_register +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fadbb8e dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x9fb3dd30 memcpy_fromiovec +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa00aca2a dql_completed +EXPORT_SYMBOL vmlinux 0xa0144a7a generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0xa017b669 blk_free_tags +EXPORT_SYMBOL vmlinux 0xa0255b8b brioctl_set +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 0xa071776e key_invalidate +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa0966e4b unregister_shrinker +EXPORT_SYMBOL vmlinux 0xa0987ee8 account_page_redirty +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0ceef51 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0ec17ba get_phy_device +EXPORT_SYMBOL vmlinux 0xa0ef6599 pci_get_class +EXPORT_SYMBOL vmlinux 0xa0f2f646 consume_skb +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa1176f9d inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0xa117a27d skb_copy_and_csum_datagram_iovec +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa12b9cb8 cfb_imageblit +EXPORT_SYMBOL vmlinux 0xa13a87f5 module_refcount +EXPORT_SYMBOL vmlinux 0xa13bc284 qdisc_list_del +EXPORT_SYMBOL vmlinux 0xa143473e __register_chrdev +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa16ae881 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0xa1a1bfa4 security_path_chown +EXPORT_SYMBOL vmlinux 0xa1b5c0db mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1c9a3ab bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xa1dc895e end_page_writeback +EXPORT_SYMBOL vmlinux 0xa1ec5a91 blk_init_queue +EXPORT_SYMBOL vmlinux 0xa20c58cc netdev_state_change +EXPORT_SYMBOL vmlinux 0xa20ce1b8 net_msg_warn +EXPORT_SYMBOL vmlinux 0xa2159a4f register_qdisc +EXPORT_SYMBOL vmlinux 0xa22562a0 filp_open +EXPORT_SYMBOL vmlinux 0xa25da69d net_dma_find_channel +EXPORT_SYMBOL vmlinux 0xa27ad30d __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa28a2ace ipmi_set_gets_events +EXPORT_SYMBOL vmlinux 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL vmlinux 0xa2d93995 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0xa2dea990 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0xa2deda28 devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0xa2ef34d7 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0xa2fc8f26 bdget +EXPORT_SYMBOL vmlinux 0xa31e7e14 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0xa31f8e65 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0xa334936d tty_free_termios +EXPORT_SYMBOL vmlinux 0xa33d9a48 acpi_decode_pld_buffer +EXPORT_SYMBOL vmlinux 0xa34f1ef5 crc32_le +EXPORT_SYMBOL vmlinux 0xa3504378 rwsem_wake +EXPORT_SYMBOL vmlinux 0xa350a8f8 set_memory_array_uc +EXPORT_SYMBOL vmlinux 0xa3515007 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0xa35de80f ipv4_config +EXPORT_SYMBOL vmlinux 0xa363dab4 udp_table +EXPORT_SYMBOL vmlinux 0xa367379c md_integrity_register +EXPORT_SYMBOL vmlinux 0xa37cb301 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0xa381ed41 open_exec +EXPORT_SYMBOL vmlinux 0xa3975123 dput +EXPORT_SYMBOL vmlinux 0xa3d16031 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0xa3e2291d md_check_recovery +EXPORT_SYMBOL vmlinux 0xa3f326f3 d_path +EXPORT_SYMBOL vmlinux 0xa40aa346 remove_proc_subtree +EXPORT_SYMBOL vmlinux 0xa43b1297 vscnprintf +EXPORT_SYMBOL vmlinux 0xa43b9539 memcpy_fromiovecend +EXPORT_SYMBOL vmlinux 0xa468cd56 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa47a85d7 mmc_release_host +EXPORT_SYMBOL vmlinux 0xa48b02ed agp_bind_memory +EXPORT_SYMBOL vmlinux 0xa48c7254 request_firmware +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4bfa998 sk_net_capable +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4eb4eff _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xa4f2381d tcp_prequeue +EXPORT_SYMBOL vmlinux 0xa507eed8 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0xa517e79d __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0xa51cdfe8 __FIXADDR_TOP +EXPORT_SYMBOL vmlinux 0xa5460430 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa555bb09 vga_get +EXPORT_SYMBOL vmlinux 0xa5758574 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0xa5977807 key_unlink +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5bc0659 freeze_super +EXPORT_SYMBOL vmlinux 0xa6085179 __nla_reserve +EXPORT_SYMBOL vmlinux 0xa60c3368 clone_cred +EXPORT_SYMBOL vmlinux 0xa61725d4 netpoll_setup +EXPORT_SYMBOL vmlinux 0xa6288350 devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0xa62a2e67 tcp_seq_open +EXPORT_SYMBOL vmlinux 0xa62a454f fb_set_suspend +EXPORT_SYMBOL vmlinux 0xa62e6e4f acpi_get_table_with_size +EXPORT_SYMBOL vmlinux 0xa63a2f9b param_get_ulong +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa6715115 do_settimeofday +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa67da660 mempool_alloc +EXPORT_SYMBOL vmlinux 0xa67e2845 dq_data_lock +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa68b2dae nf_log_set +EXPORT_SYMBOL vmlinux 0xa6922a62 sockfd_lookup +EXPORT_SYMBOL vmlinux 0xa6970398 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0xa6ad128f inet6_protos +EXPORT_SYMBOL vmlinux 0xa6b13658 __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xa6bd63ca acpi_bios_error +EXPORT_SYMBOL vmlinux 0xa6e405bc tcp_close +EXPORT_SYMBOL vmlinux 0xa6e54917 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0xa70dbb63 pci_find_next_bus +EXPORT_SYMBOL vmlinux 0xa70fabbe release_evntsel_nmi +EXPORT_SYMBOL vmlinux 0xa71e7463 __first_cpu +EXPORT_SYMBOL vmlinux 0xa730f1ce __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa739d408 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0xa73ca02a bio_integrity_split +EXPORT_SYMBOL vmlinux 0xa75e3830 iget_locked +EXPORT_SYMBOL vmlinux 0xa7738f27 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0xa78209cc vfs_readlink +EXPORT_SYMBOL vmlinux 0xa7ad1db5 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0xa7c92a55 phy_connect +EXPORT_SYMBOL vmlinux 0xa7cab1b8 devm_ioremap +EXPORT_SYMBOL vmlinux 0xa7cf6c2f atomic64_dec_return_cx8 +EXPORT_SYMBOL vmlinux 0xa7f24e25 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xa8225e35 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa83be7b9 phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa86f9722 padata_add_cpu +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa886d72f blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0xa8a66053 bio_split +EXPORT_SYMBOL vmlinux 0xa8a6f639 __check_region +EXPORT_SYMBOL vmlinux 0xa8b4ee4b inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0xa8cb7fbc register_netdevice +EXPORT_SYMBOL vmlinux 0xa8cf6af4 skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0xa8d522a1 dmam_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0xa8fd6c6b genlmsg_put +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa91b5561 acpi_video_backlight_support +EXPORT_SYMBOL vmlinux 0xa923b958 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0xa94d9ac9 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0xa95c1aed genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0xa962befa blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0xa97a46d2 proc_remove +EXPORT_SYMBOL vmlinux 0xa9835f46 unlock_page +EXPORT_SYMBOL vmlinux 0xa9a8e17f arch_phys_wc_add +EXPORT_SYMBOL vmlinux 0xa9ba74b0 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0xa9c9b833 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0xaa024c08 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0xaa2d93ce pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0xaa47a291 udp_sendmsg +EXPORT_SYMBOL vmlinux 0xaa501265 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0xaa6901ac __kfifo_out_r +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa7165fe skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0xaa7cc44d pci_select_bars +EXPORT_SYMBOL vmlinux 0xaa8d0aaa d_genocide +EXPORT_SYMBOL vmlinux 0xaa8fea18 acpi_processor_register_performance +EXPORT_SYMBOL vmlinux 0xaa9087c0 param_ops_string +EXPORT_SYMBOL vmlinux 0xaa9351ac blk_init_tags +EXPORT_SYMBOL vmlinux 0xaab567ff ps2_handle_response +EXPORT_SYMBOL vmlinux 0xaaba9a9c acpi_bus_get_status +EXPORT_SYMBOL vmlinux 0xaac09c35 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaae8ab0e acpi_bus_power_manageable +EXPORT_SYMBOL vmlinux 0xaaf86473 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab28271c i8253_lock +EXPORT_SYMBOL vmlinux 0xab4d79db udp_disconnect +EXPORT_SYMBOL vmlinux 0xab54c56e serio_unregister_driver +EXPORT_SYMBOL vmlinux 0xab600421 probe_irq_off +EXPORT_SYMBOL vmlinux 0xab62bfb8 fb_class +EXPORT_SYMBOL vmlinux 0xab65ed80 set_memory_uc +EXPORT_SYMBOL vmlinux 0xab694444 bsearch +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab7162d7 __getblk +EXPORT_SYMBOL vmlinux 0xab728a07 mnt_pin +EXPORT_SYMBOL vmlinux 0xab73d9ab proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0xab770678 rdmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab927c18 audit_log_start +EXPORT_SYMBOL vmlinux 0xaba0d755 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0xabb7a68c __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0xabc6dd63 cpufreq_sysfs_create_file +EXPORT_SYMBOL vmlinux 0xabc710aa search_binary_handler +EXPORT_SYMBOL vmlinux 0xabc869b1 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabd0c91c rtc_time_to_tm +EXPORT_SYMBOL vmlinux 0xabdac6f2 pci_disable_obff +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac1dfeae pci_request_region +EXPORT_SYMBOL vmlinux 0xac2d2fb8 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0xac32ae21 scsi_scan_target +EXPORT_SYMBOL vmlinux 0xac40044f vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0xac56643b pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0xac58ea5e acpi_unload_table_id +EXPORT_SYMBOL vmlinux 0xac5fae98 genphy_resume +EXPORT_SYMBOL vmlinux 0xac87fbc9 remove_proc_entry +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacb2da40 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0xacb44300 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0xacbe22e5 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xacf613a7 have_submounts +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad099f3d zero_fill_bio +EXPORT_SYMBOL vmlinux 0xad13c689 acpi_os_execute +EXPORT_SYMBOL vmlinux 0xad27fb5d deactivate_super +EXPORT_SYMBOL vmlinux 0xad2a8bd2 x86_bios_cpu_apicid +EXPORT_SYMBOL vmlinux 0xad30d1b7 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0xad65ccf7 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0xad827c63 mapping_tagged +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad84c2de scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0xadac69b6 pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0xade2ed21 __bread +EXPORT_SYMBOL vmlinux 0xadecfeb7 iterate_mounts +EXPORT_SYMBOL vmlinux 0xadfaa867 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0xae0625a8 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0xae28a1c3 invalidate_bdev +EXPORT_SYMBOL vmlinux 0xae2be48d proto_register +EXPORT_SYMBOL vmlinux 0xae4879ac clocksource_register +EXPORT_SYMBOL vmlinux 0xae4a1417 clear_bdi_congested +EXPORT_SYMBOL vmlinux 0xae6eb8e0 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xae6fdb27 kmap_to_page +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xaea976a8 acpi_check_resource_conflict +EXPORT_SYMBOL vmlinux 0xaeacfeae vlan_untag +EXPORT_SYMBOL vmlinux 0xaec655c7 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0xaec7678e generic_shutdown_super +EXPORT_SYMBOL vmlinux 0xaf141523 set_user_nice +EXPORT_SYMBOL vmlinux 0xaf2f77df mmc_remove_host +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf48c126 agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0xaf4b1540 acpi_get_irq_routing_table +EXPORT_SYMBOL vmlinux 0xaf5ee623 pipe_lock +EXPORT_SYMBOL vmlinux 0xaf611eac amd_nb_misc_ids +EXPORT_SYMBOL vmlinux 0xaf64ad0d zlib_deflate +EXPORT_SYMBOL vmlinux 0xaf7558c9 kernel_sendpage +EXPORT_SYMBOL vmlinux 0xaf91d89f __kernel_param_lock +EXPORT_SYMBOL vmlinux 0xaf9d9ecc __register_nmi_handler +EXPORT_SYMBOL vmlinux 0xafad493b param_ops_ushort +EXPORT_SYMBOL vmlinux 0xafbc1458 __breadahead +EXPORT_SYMBOL vmlinux 0xafbc9d56 fail_migrate_page +EXPORT_SYMBOL vmlinux 0xafcdb10f iov_iter_copy_from_user +EXPORT_SYMBOL vmlinux 0xafe97906 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0xb00f07cb inode_init_once +EXPORT_SYMBOL vmlinux 0xb01341b1 tty_port_open +EXPORT_SYMBOL vmlinux 0xb0145423 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0xb01b1db8 intel_gtt_insert_sg_entries +EXPORT_SYMBOL vmlinux 0xb0207ecf ___ratelimit +EXPORT_SYMBOL vmlinux 0xb02ab6c3 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0xb03d780b check_disk_size_change +EXPORT_SYMBOL vmlinux 0xb05af33a dm_get_mapinfo +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb06525c3 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0xb0953337 posix_test_lock +EXPORT_SYMBOL vmlinux 0xb09d04d3 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0xb09f45d4 dev_remove_pack +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0b06ca8 mmc_free_host +EXPORT_SYMBOL vmlinux 0xb0b847ac __bitmap_full +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0ffda2f blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xb115cd4c inet_sendpage +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb1238f08 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb145e5da blk_integrity_compare +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb167485b backlight_device_register +EXPORT_SYMBOL vmlinux 0xb1774f93 keyring_clear +EXPORT_SYMBOL vmlinux 0xb180b097 start_tty +EXPORT_SYMBOL vmlinux 0xb1814c1a xfrm_state_walk +EXPORT_SYMBOL vmlinux 0xb19760c3 bitmap_onto +EXPORT_SYMBOL vmlinux 0xb198459e isapnp_protocol +EXPORT_SYMBOL vmlinux 0xb19a6598 bprm_change_interp +EXPORT_SYMBOL vmlinux 0xb1b37ee2 proc_set_size +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1cfad22 rdmsr_on_cpu +EXPORT_SYMBOL vmlinux 0xb1d9523e wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0xb1db9e4e param_get_invbool +EXPORT_SYMBOL vmlinux 0xb1e12f75 elv_add_request +EXPORT_SYMBOL vmlinux 0xb219d56c wbinvd_on_cpu +EXPORT_SYMBOL vmlinux 0xb221d3ea jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb26a319b blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0xb2744b36 down_write_trylock +EXPORT_SYMBOL vmlinux 0xb2b94674 __crc32c_le +EXPORT_SYMBOL vmlinux 0xb2bba6e0 vfs_write +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2be8b29 loop_register_transfer +EXPORT_SYMBOL vmlinux 0xb2cd99f8 get_write_access +EXPORT_SYMBOL vmlinux 0xb2d252a1 seq_open_private +EXPORT_SYMBOL vmlinux 0xb2d48a2e queue_work_on +EXPORT_SYMBOL vmlinux 0xb2e03b1f pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0xb2f2ee21 kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0xb2f35d9d gen10g_resume +EXPORT_SYMBOL vmlinux 0xb2f74fb6 intel_gmch_remove +EXPORT_SYMBOL vmlinux 0xb2fd5ceb __put_user_4 +EXPORT_SYMBOL vmlinux 0xb3238b98 abx500_register_ops +EXPORT_SYMBOL vmlinux 0xb3284531 acpi_dbg_layer +EXPORT_SYMBOL vmlinux 0xb34ef535 x86_hyper_vmware +EXPORT_SYMBOL vmlinux 0xb352177e find_first_bit +EXPORT_SYMBOL vmlinux 0xb35d389e fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0xb3723e82 vfs_symlink +EXPORT_SYMBOL vmlinux 0xb3c3e938 dev_addr_add +EXPORT_SYMBOL vmlinux 0xb3da3c36 padata_start +EXPORT_SYMBOL vmlinux 0xb3e0590d acpi_set_current_resources +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb403e106 input_allocate_device +EXPORT_SYMBOL vmlinux 0xb4090cd3 buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0xb4171285 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0xb41cccfe phy_stop +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb4354093 lock_sock_nested +EXPORT_SYMBOL vmlinux 0xb4390f9a mcount +EXPORT_SYMBOL vmlinux 0xb454d9a2 skb_append +EXPORT_SYMBOL vmlinux 0xb45578b8 memscan +EXPORT_SYMBOL vmlinux 0xb45c23ce dev_printk +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb4726769 nobh_write_begin +EXPORT_SYMBOL vmlinux 0xb48df370 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0xb48f3aad udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0xb493b607 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0xb4f428a6 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0xb514ec15 __vlan_find_dev_deep +EXPORT_SYMBOL vmlinux 0xb523ffd6 register_filesystem +EXPORT_SYMBOL vmlinux 0xb52ee8be intel_gtt_clear_range +EXPORT_SYMBOL vmlinux 0xb54533f7 usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5b79d55 softnet_data +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5f7ca00 __pci_register_driver +EXPORT_SYMBOL vmlinux 0xb61edd2e padata_stop +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb6394d4b param_set_bint +EXPORT_SYMBOL vmlinux 0xb6684499 mmc_can_trim +EXPORT_SYMBOL vmlinux 0xb670c202 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb6822a33 radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xb6896671 crc_t10dif +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb69e0575 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0xb6a3d025 agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6ae076e simple_transaction_read +EXPORT_SYMBOL vmlinux 0xb6b46a7c param_ops_int +EXPORT_SYMBOL vmlinux 0xb6c05e31 mem_map +EXPORT_SYMBOL vmlinux 0xb6c5a973 scsi_show_result +EXPORT_SYMBOL vmlinux 0xb6c6b12f dma_release_from_coherent +EXPORT_SYMBOL vmlinux 0xb6c7465c unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xb6dcf0aa inode_init_owner +EXPORT_SYMBOL vmlinux 0xb6ed1e53 strncpy +EXPORT_SYMBOL vmlinux 0xb6eecf80 phy_detach +EXPORT_SYMBOL vmlinux 0xb70dd3ca dev_get_by_flags_rcu +EXPORT_SYMBOL vmlinux 0xb714aa9b mmc_put_card +EXPORT_SYMBOL vmlinux 0xb7422c9c iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0xb758b225 acpi_disable_event +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb79c71d7 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0xb7ae1ce3 generic_setxattr +EXPORT_SYMBOL vmlinux 0xb7ae95e1 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0xb7b2f16b security_inode_permission +EXPORT_SYMBOL vmlinux 0xb7b61546 crc32_be +EXPORT_SYMBOL vmlinux 0xb7c6db70 sysctl_max_skb_frags +EXPORT_SYMBOL vmlinux 0xb7d51a04 scsi_prep_return +EXPORT_SYMBOL vmlinux 0xb7de0f2f pci_platform_rom +EXPORT_SYMBOL vmlinux 0xb7f55ecc atomic64_add_return_cx8 +EXPORT_SYMBOL vmlinux 0xb81548f4 inode_set_bytes +EXPORT_SYMBOL vmlinux 0xb81960ca snprintf +EXPORT_SYMBOL vmlinux 0xb81a87e6 seq_pad +EXPORT_SYMBOL vmlinux 0xb81f6f11 phy_find_first +EXPORT_SYMBOL vmlinux 0xb835b3e4 radix_tree_prev_hole +EXPORT_SYMBOL vmlinux 0xb86b66fb uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb88782d3 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0xb88b40cb bio_put +EXPORT_SYMBOL vmlinux 0xb8aef291 napi_gro_frags +EXPORT_SYMBOL vmlinux 0xb8c217e4 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0xb8d2af25 override_creds +EXPORT_SYMBOL vmlinux 0xb8d73e97 param_set_uint +EXPORT_SYMBOL vmlinux 0xb8e7ce2c __put_user_8 +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb8fceae2 splice_from_pipe_end +EXPORT_SYMBOL vmlinux 0xb907513f unpoison_memory +EXPORT_SYMBOL vmlinux 0xb90dbdb4 sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0xb91ce26a bio_advance +EXPORT_SYMBOL vmlinux 0xb92d9161 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0xb935082e set_create_files_as +EXPORT_SYMBOL vmlinux 0xb948393f f_setown +EXPORT_SYMBOL vmlinux 0xb94e5f95 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0xb9570eba sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xb96a95d6 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0xb98985a9 mntput +EXPORT_SYMBOL vmlinux 0xb98a0185 rtc_tm_to_time +EXPORT_SYMBOL vmlinux 0xb9a0419d ppp_input +EXPORT_SYMBOL vmlinux 0xb9b5e885 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9f19b56 generic_writepages +EXPORT_SYMBOL vmlinux 0xb9fd2205 add_efi_memmap +EXPORT_SYMBOL vmlinux 0xba1411db icmp_send +EXPORT_SYMBOL vmlinux 0xba2d8594 ec_read +EXPORT_SYMBOL vmlinux 0xba3c947c neigh_app_ns +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba4e518d migrate_page +EXPORT_SYMBOL vmlinux 0xba53ddc4 user_path_create +EXPORT_SYMBOL vmlinux 0xba57f3c2 inode_get_bytes +EXPORT_SYMBOL vmlinux 0xba68ea4c set_page_dirty +EXPORT_SYMBOL vmlinux 0xba8ea6ad rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0xba9c37a4 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0xbaa3f49a dqget +EXPORT_SYMBOL vmlinux 0xbab83a80 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0xbab9087f ata_std_end_eh +EXPORT_SYMBOL vmlinux 0xbab9d97d udp_lib_unhash +EXPORT_SYMBOL vmlinux 0xbae97592 agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0xbafa8012 pci_bus_get +EXPORT_SYMBOL vmlinux 0xbb189cad disallow_signal +EXPORT_SYMBOL vmlinux 0xbb1ac919 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0xbb22b71c skb_copy +EXPORT_SYMBOL vmlinux 0xbb259253 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0xbb279a6a pci_disable_msix +EXPORT_SYMBOL vmlinux 0xbb465c00 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0xbb4fb76e mnt_set_expiry +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb616937 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0xbb6dd029 sock_create_kern +EXPORT_SYMBOL vmlinux 0xbb713e6d sk_filter_release_rcu +EXPORT_SYMBOL vmlinux 0xbb77dbe0 noop_llseek +EXPORT_SYMBOL vmlinux 0xbb85fa74 datagram_poll +EXPORT_SYMBOL vmlinux 0xbb8f00f9 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbb9da58e neigh_changeaddr +EXPORT_SYMBOL vmlinux 0xbba53064 alloc_fcdev +EXPORT_SYMBOL vmlinux 0xbbc643f1 mount_ns +EXPORT_SYMBOL vmlinux 0xbbc87996 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0xbc1afedf up_write +EXPORT_SYMBOL vmlinux 0xbc2031de acpi_processor_get_bios_limit +EXPORT_SYMBOL vmlinux 0xbc35b7b7 dm_register_target +EXPORT_SYMBOL vmlinux 0xbc408b1e dentry_unhash +EXPORT_SYMBOL vmlinux 0xbc435770 dump_stack +EXPORT_SYMBOL vmlinux 0xbc7f746d cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0xbc972902 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0xbcb68615 padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbccbc974 remove_arg_zero +EXPORT_SYMBOL vmlinux 0xbcdf4bee kernel_connect +EXPORT_SYMBOL vmlinux 0xbce1af9c generic_show_options +EXPORT_SYMBOL vmlinux 0xbcf71239 pnpbios_protocol +EXPORT_SYMBOL vmlinux 0xbcf94bad phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0xbd122a4f blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0xbd214bd9 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0xbd33a96b scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0xbd4d657f agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0xbd4e140c devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0xbd86e390 bio_copy_kern +EXPORT_SYMBOL vmlinux 0xbd86e7cf posix_lock_file_wait +EXPORT_SYMBOL vmlinux 0xbd983311 __serio_register_driver +EXPORT_SYMBOL vmlinux 0xbdaf5b07 acpi_os_read_port +EXPORT_SYMBOL vmlinux 0xbdb45632 try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xbdb9dfb3 serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0xbdba9828 hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xbdceac87 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0xbdd3b78e vfs_llseek +EXPORT_SYMBOL vmlinux 0xbdd8d2fe sock_no_mmap +EXPORT_SYMBOL vmlinux 0xbdedb616 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0xbe0e5118 nla_memcmp +EXPORT_SYMBOL vmlinux 0xbe2b755f mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0xbe2c0274 add_timer +EXPORT_SYMBOL vmlinux 0xbe2e9bc2 splice_from_pipe_next +EXPORT_SYMBOL vmlinux 0xbe31ec67 do_SAK +EXPORT_SYMBOL vmlinux 0xbe342028 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0xbe44de3f from_kprojid +EXPORT_SYMBOL vmlinux 0xbe4ceb9f inc_nlink +EXPORT_SYMBOL vmlinux 0xbe6db734 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0xbe756f69 km_state_expired +EXPORT_SYMBOL vmlinux 0xbe77716b tcp_sync_mss +EXPORT_SYMBOL vmlinux 0xbe778af3 ppp_unit_number +EXPORT_SYMBOL vmlinux 0xbe84777c aio_complete +EXPORT_SYMBOL vmlinux 0xbe8c37d9 intel_scu_ipc_simple_command +EXPORT_SYMBOL vmlinux 0xbe99db9d fb_blank +EXPORT_SYMBOL vmlinux 0xbec0f3d3 kthread_bind +EXPORT_SYMBOL vmlinux 0xbec30d05 x86_match_cpu +EXPORT_SYMBOL vmlinux 0xbec4dcfd sock_no_sendpage +EXPORT_SYMBOL vmlinux 0xbee06feb dev_open +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf1dca1d tcp_poll +EXPORT_SYMBOL vmlinux 0xbf25c334 tty_register_device +EXPORT_SYMBOL vmlinux 0xbf2d4847 tcf_hash_lookup +EXPORT_SYMBOL vmlinux 0xbf46e6fd generic_file_aio_write +EXPORT_SYMBOL vmlinux 0xbf48d167 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0xbf67470c elevator_init +EXPORT_SYMBOL vmlinux 0xbf6a1ff8 neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0xbf6fb7da netdev_printk +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf87794d phy_driver_unregister +EXPORT_SYMBOL vmlinux 0xbf8b39e9 isapnp_present +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfb7d7f0 proc_symlink +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfc5af35 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0xbfd1a8fa pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0xbfd492c6 genphy_update_link +EXPORT_SYMBOL vmlinux 0xbfd5617d padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbff2271c qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0xc01991ab first_ec +EXPORT_SYMBOL vmlinux 0xc01cf848 _raw_read_lock +EXPORT_SYMBOL vmlinux 0xc01eed33 __copy_from_user_ll_nozero +EXPORT_SYMBOL vmlinux 0xc02cf69b clkdev_drop +EXPORT_SYMBOL vmlinux 0xc04eb856 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xc068440e __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xc06e1b51 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc077bf31 padata_alloc +EXPORT_SYMBOL vmlinux 0xc09ae076 set_groups +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0a86c94 seq_escape +EXPORT_SYMBOL vmlinux 0xc0a99d10 sk_capable +EXPORT_SYMBOL vmlinux 0xc0d9e2e5 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0xc0ed2be3 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0xc1226bd0 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0xc12ec3a6 dns_query +EXPORT_SYMBOL vmlinux 0xc12ffa5e mfd_remove_devices +EXPORT_SYMBOL vmlinux 0xc135c87e dev_deactivate +EXPORT_SYMBOL vmlinux 0xc1399a8c simple_lookup +EXPORT_SYMBOL vmlinux 0xc15485fa sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0xc15f1f2a swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0xc16872b2 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0xc1a2dede xfrm_cfg_mutex +EXPORT_SYMBOL vmlinux 0xc1b78307 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0xc1b82d22 register_shrinker +EXPORT_SYMBOL vmlinux 0xc1c2dd09 __hw_addr_flush +EXPORT_SYMBOL vmlinux 0xc1ca164e dquot_operations +EXPORT_SYMBOL vmlinux 0xc1e0b2d2 pm860x_page_set_bits +EXPORT_SYMBOL vmlinux 0xc1eaf2a8 unregister_cdrom +EXPORT_SYMBOL vmlinux 0xc1fc29d1 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0xc21ac5eb __scm_destroy +EXPORT_SYMBOL vmlinux 0xc21cdd2d vga_switcheroo_register_client +EXPORT_SYMBOL vmlinux 0xc22c76c7 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0xc23030f4 mmc_can_reset +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc256e762 __bitmap_equal +EXPORT_SYMBOL vmlinux 0xc25dfb72 registered_fb +EXPORT_SYMBOL vmlinux 0xc2683eff md_write_end +EXPORT_SYMBOL vmlinux 0xc26a7f25 i8042_remove_filter +EXPORT_SYMBOL vmlinux 0xc2716106 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0xc280a525 __copy_from_user_ll +EXPORT_SYMBOL vmlinux 0xc293a804 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0xc29e3eca inet_getname +EXPORT_SYMBOL vmlinux 0xc2a780f4 mmc_get_card +EXPORT_SYMBOL vmlinux 0xc2c95540 tty_pair_get_pty +EXPORT_SYMBOL vmlinux 0xc2d711e1 krealloc +EXPORT_SYMBOL vmlinux 0xc2db7449 bio_integrity_tag_size +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2e5bdaa dst_release +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc302fdbd scsi_get_command +EXPORT_SYMBOL vmlinux 0xc306a6a8 inet_addr_type +EXPORT_SYMBOL vmlinux 0xc31b25f4 bio_init +EXPORT_SYMBOL vmlinux 0xc327e564 kset_unregister +EXPORT_SYMBOL vmlinux 0xc369dcd1 make_kprojid +EXPORT_SYMBOL vmlinux 0xc38fe676 tty_set_operations +EXPORT_SYMBOL vmlinux 0xc39f9a51 tty_hangup +EXPORT_SYMBOL vmlinux 0xc3a087e2 __pskb_copy +EXPORT_SYMBOL vmlinux 0xc3aaf0a9 __put_user_1 +EXPORT_SYMBOL vmlinux 0xc3d16f9b fd_install +EXPORT_SYMBOL vmlinux 0xc3d6f88c fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0xc3da13e8 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0xc3fa6a59 memchr +EXPORT_SYMBOL vmlinux 0xc3fbed8b twl6040_reg_write +EXPORT_SYMBOL vmlinux 0xc3fec0bc fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0xc40b40ad phy_disconnect +EXPORT_SYMBOL vmlinux 0xc41e8f7a wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0xc41ea134 tty_pair_get_tty +EXPORT_SYMBOL vmlinux 0xc41f0516 node_states +EXPORT_SYMBOL vmlinux 0xc423436e ilookup5 +EXPORT_SYMBOL vmlinux 0xc4554217 up +EXPORT_SYMBOL vmlinux 0xc458aa39 netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0xc45a4757 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0xc45a8c97 netdev_info +EXPORT_SYMBOL vmlinux 0xc45d4fcd blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc4bb389e setup_arg_pages +EXPORT_SYMBOL vmlinux 0xc4c02a77 get_gendisk +EXPORT_SYMBOL vmlinux 0xc4eda460 scsi_host_get +EXPORT_SYMBOL vmlinux 0xc4f767d2 dmam_pool_create +EXPORT_SYMBOL vmlinux 0xc4f7a57c bio_add_pc_page +EXPORT_SYMBOL vmlinux 0xc514a139 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0xc51cd45c __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0xc5374185 tty_port_close_start +EXPORT_SYMBOL vmlinux 0xc54eaa76 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc5587e03 neigh_compat_output +EXPORT_SYMBOL vmlinux 0xc57ab7bc proc_dostring +EXPORT_SYMBOL vmlinux 0xc589e044 param_set_long +EXPORT_SYMBOL vmlinux 0xc58be98a md_register_thread +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5dcfa41 key_link +EXPORT_SYMBOL vmlinux 0xc5e896f4 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0xc5edce1c splice_from_pipe_feed +EXPORT_SYMBOL vmlinux 0xc5f35d6e bitmap_close_sync +EXPORT_SYMBOL vmlinux 0xc5faed03 blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc6017331 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0xc61e95e6 vm_mmap +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc63cc125 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0xc643a6f0 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0xc651cd6d mb_cache_shrink +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc6645b42 mempool_create_node +EXPORT_SYMBOL vmlinux 0xc66a4a3c sb_min_blocksize +EXPORT_SYMBOL vmlinux 0xc67befff __serio_register_port +EXPORT_SYMBOL vmlinux 0xc67f7ac9 simple_transaction_set +EXPORT_SYMBOL vmlinux 0xc697b131 filemap_flush +EXPORT_SYMBOL vmlinux 0xc6af5d31 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xc6b23120 intel_scu_ipc_iowrite16 +EXPORT_SYMBOL vmlinux 0xc6b368d3 acpi_gpe_count +EXPORT_SYMBOL vmlinux 0xc6c4cd0a tty_check_change +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc71526fb scsi_adjust_queue_depth +EXPORT_SYMBOL vmlinux 0xc718a846 nf_log_unregister +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc7260968 sg_miter_start +EXPORT_SYMBOL vmlinux 0xc75b8d0e ip6_route_output +EXPORT_SYMBOL vmlinux 0xc768de19 cpu_all_bits +EXPORT_SYMBOL vmlinux 0xc771e8f8 dm_put_device +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc7856f92 nobh_writepage +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7a87710 __frontswap_store +EXPORT_SYMBOL vmlinux 0xc7c43b74 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0xc7d2d7e8 x86_hyper_xen_hvm +EXPORT_SYMBOL vmlinux 0xc7d6e7c5 udp_add_offload +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc7fc894f fsnotify_get_group +EXPORT_SYMBOL vmlinux 0xc824419f tcp_ioctl +EXPORT_SYMBOL vmlinux 0xc8276a79 nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xc832bb90 inet_del_offload +EXPORT_SYMBOL vmlinux 0xc8339e24 string_unescape +EXPORT_SYMBOL vmlinux 0xc83a7d72 key_validate +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc84a5187 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0xc869b03a __d_drop +EXPORT_SYMBOL vmlinux 0xc86d6799 ___preempt_schedule +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc8846838 nf_hook_slow +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc8a8d5fa dev_disable_lro +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8b9d3af dma_common_mmap +EXPORT_SYMBOL vmlinux 0xc8c89c5e unregister_qdisc +EXPORT_SYMBOL vmlinux 0xc8e9104e d_alloc +EXPORT_SYMBOL vmlinux 0xc8f1655f __dev_get_by_name +EXPORT_SYMBOL vmlinux 0xc8f1b973 eth_validate_addr +EXPORT_SYMBOL vmlinux 0xc8f7c285 starget_for_each_device +EXPORT_SYMBOL vmlinux 0xc94e5d83 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0xc95c984e seq_bitmap +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc96ee55d d_alloc_name +EXPORT_SYMBOL vmlinux 0xc996d097 del_timer +EXPORT_SYMBOL vmlinux 0xc9a16117 dev_mc_del +EXPORT_SYMBOL vmlinux 0xc9c728df generic_file_llseek +EXPORT_SYMBOL vmlinux 0xc9db07c4 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0xc9faf3cc vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0xca04a3aa mpage_writepage +EXPORT_SYMBOL vmlinux 0xca11ce4b phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0xca18af71 register_framebuffer +EXPORT_SYMBOL vmlinux 0xca20e9e2 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0xca3e6ea0 udp6_csum_init +EXPORT_SYMBOL vmlinux 0xca41b182 mmc_start_req +EXPORT_SYMBOL vmlinux 0xca5497f4 serio_open +EXPORT_SYMBOL vmlinux 0xca589746 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0xca5dbc50 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xca8acc78 acpi_dbg_level +EXPORT_SYMBOL vmlinux 0xca8dff76 lock_fb_info +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xcac223db wait_for_key_construction +EXPORT_SYMBOL vmlinux 0xcacbc7bf d_make_root +EXPORT_SYMBOL vmlinux 0xcae024da pcie_set_mps +EXPORT_SYMBOL vmlinux 0xcaf74a7e agp_backend_release +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb07f41d unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xcb0c5d50 param_get_uint +EXPORT_SYMBOL vmlinux 0xcb148933 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0xcb1b7f4e kernel_bind +EXPORT_SYMBOL vmlinux 0xcb6d6b21 netdev_warn +EXPORT_SYMBOL vmlinux 0xcb733bf2 acpi_bus_set_power +EXPORT_SYMBOL vmlinux 0xcb971f38 pci_enable_obff +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 0xcbe33ee8 d_instantiate +EXPORT_SYMBOL vmlinux 0xcbfe5981 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc3101fa filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0xcc37f55c blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xcc4d1bfb atomic64_read_cx8 +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc67aeb9 sock_update_memcg +EXPORT_SYMBOL vmlinux 0xcc7fa952 local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0xcc84fd22 pci_claim_resource +EXPORT_SYMBOL vmlinux 0xcc945310 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0xccac4ceb set_bh_page +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xcccdece4 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0xcd036810 contig_page_data +EXPORT_SYMBOL vmlinux 0xcd23a5a2 blk_execute_rq +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd3a0111 ip_defrag +EXPORT_SYMBOL vmlinux 0xcd676052 serio_interrupt +EXPORT_SYMBOL vmlinux 0xcd77a38a max8998_write_reg +EXPORT_SYMBOL vmlinux 0xcd82bfa4 inode_needs_sync +EXPORT_SYMBOL vmlinux 0xcd9cb2a1 console_stop +EXPORT_SYMBOL vmlinux 0xcd9f4c39 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0xcdbef61b update_region +EXPORT_SYMBOL vmlinux 0xcdc0318a bdput +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdc40fae panic_notifier_list +EXPORT_SYMBOL vmlinux 0xcdcfc1b5 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0xcdd505fc spi_display_xfer_agreement +EXPORT_SYMBOL vmlinux 0xcdd9ba1b vfs_readv +EXPORT_SYMBOL vmlinux 0xcde172ac radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0xcde9dd09 keyring_search +EXPORT_SYMBOL vmlinux 0xcdf4359f blk_queue_io_min +EXPORT_SYMBOL vmlinux 0xcdfa7e72 __destroy_inode +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce2d02a2 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0xce4904a4 acpi_leave_sleep_state +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce5b6394 dev_set_drvdata +EXPORT_SYMBOL vmlinux 0xce88efb4 boot_cpu_data +EXPORT_SYMBOL vmlinux 0xce981664 generic_file_fsync +EXPORT_SYMBOL vmlinux 0xce9b0134 pci_read_vpd +EXPORT_SYMBOL vmlinux 0xce9eb60a __quota_error +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceb73033 unregister_exec_domain +EXPORT_SYMBOL vmlinux 0xcecb61f9 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0xcedd5804 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0xcee6aa36 x86_dma_fallback_dev +EXPORT_SYMBOL vmlinux 0xcee7352a mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0xcef11036 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf24d6fe netlink_unicast +EXPORT_SYMBOL vmlinux 0xcf3c3af3 scsi_report_opcode +EXPORT_SYMBOL vmlinux 0xcf6cfe1f msrs_free +EXPORT_SYMBOL vmlinux 0xcf9eda82 __bio_clone +EXPORT_SYMBOL vmlinux 0xcfaee9a8 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0xcfb83aea pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0xcfc57db7 tcp_init_sock +EXPORT_SYMBOL vmlinux 0xcfc93a6d submit_bio_wait +EXPORT_SYMBOL vmlinux 0xcfe05d4d register_kmmio_probe +EXPORT_SYMBOL vmlinux 0xcfe91aae uart_register_driver +EXPORT_SYMBOL vmlinux 0xd00bfedf kunmap +EXPORT_SYMBOL vmlinux 0xd0181f4f __bitmap_xor +EXPORT_SYMBOL vmlinux 0xd0216784 pnp_unregister_driver +EXPORT_SYMBOL vmlinux 0xd02dc0e9 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0xd041c495 d_invalidate +EXPORT_SYMBOL vmlinux 0xd04c003e gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd07633f1 scsi_init_io +EXPORT_SYMBOL vmlinux 0xd07c6a16 set_pages_array_uc +EXPORT_SYMBOL vmlinux 0xd07ce56e wait_on_sync_kiocb +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0d42c42 mod_timer_pending +EXPORT_SYMBOL vmlinux 0xd0d4833c vm_insert_pfn +EXPORT_SYMBOL vmlinux 0xd0d8621b strlen +EXPORT_SYMBOL vmlinux 0xd0dd6452 dquot_alloc +EXPORT_SYMBOL vmlinux 0xd0e21ff3 prepare_creds +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0eeab1d mmc_detect_change +EXPORT_SYMBOL vmlinux 0xd0f061cc __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0xd0f0d945 down_read +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 0xd118583e agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0xd11c0dc1 __kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xd132c87e netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0xd1367948 dma_find_channel +EXPORT_SYMBOL vmlinux 0xd15b04c1 vc_resize +EXPORT_SYMBOL vmlinux 0xd1652a93 acpi_info +EXPORT_SYMBOL vmlinux 0xd17a235d __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd18ab96a bio_endio +EXPORT_SYMBOL vmlinux 0xd18b6eb2 acpi_unmap_lsapic +EXPORT_SYMBOL vmlinux 0xd1932f86 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0xd1944e74 elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0xd196c9be kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xd19cea6a ftrace_raw_output_prep +EXPORT_SYMBOL vmlinux 0xd1be4d99 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0xd1ed7681 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0xd1f6c5f3 smp_num_siblings +EXPORT_SYMBOL vmlinux 0xd203ef37 tty_throttle +EXPORT_SYMBOL vmlinux 0xd21004aa agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0xd218de99 dst_discard +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd227fa18 skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0xd2329de3 wait_for_completion_killable_timeout +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 0xd266efe7 mempool_create +EXPORT_SYMBOL vmlinux 0xd273888f sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd294bcab file_open_root +EXPORT_SYMBOL vmlinux 0xd2951dd1 netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0xd2af138b reservation_ww_class +EXPORT_SYMBOL vmlinux 0xd2af3de0 _dev_info +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2e6a582 acpi_processor_preregister_performance +EXPORT_SYMBOL vmlinux 0xd2efd3b2 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0xd327bb91 agp_copy_info +EXPORT_SYMBOL vmlinux 0xd3286400 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0xd330676d blk_end_request_all +EXPORT_SYMBOL vmlinux 0xd331e95b tty_port_tty_get +EXPORT_SYMBOL vmlinux 0xd3357ea5 phy_init_eee +EXPORT_SYMBOL vmlinux 0xd34b0856 mdiobus_read +EXPORT_SYMBOL vmlinux 0xd34b56e5 blkdev_put +EXPORT_SYMBOL vmlinux 0xd353ba69 bio_phys_segments +EXPORT_SYMBOL vmlinux 0xd35e249a _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0xd39e8040 mount_pseudo +EXPORT_SYMBOL vmlinux 0xd3abf1d4 agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0xd3bfa0c1 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0xd3dcab0b flex_array_alloc +EXPORT_SYMBOL vmlinux 0xd3f3f81b vfs_create +EXPORT_SYMBOL vmlinux 0xd415bd25 pci_remove_bus +EXPORT_SYMBOL vmlinux 0xd416a5e2 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0xd44f1586 qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0xd464dd63 pv_cpu_ops +EXPORT_SYMBOL vmlinux 0xd4835ef8 dmi_check_system +EXPORT_SYMBOL vmlinux 0xd4897c02 pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0xd490b022 __elv_add_request +EXPORT_SYMBOL vmlinux 0xd4c3b174 printk_emit +EXPORT_SYMBOL vmlinux 0xd4d5d2a5 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0xd4e4264e cdev_init +EXPORT_SYMBOL vmlinux 0xd4f11c2f seq_lseek +EXPORT_SYMBOL vmlinux 0xd4f7057e page_readlink +EXPORT_SYMBOL vmlinux 0xd50fef48 acpi_detach_data +EXPORT_SYMBOL vmlinux 0xd513ee55 tty_devnum +EXPORT_SYMBOL vmlinux 0xd52431d7 ps2_init +EXPORT_SYMBOL vmlinux 0xd53ddf8c dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0xd5419fe8 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0xd5441ddf fb_is_primary_device +EXPORT_SYMBOL vmlinux 0xd5575682 get_super_thawed +EXPORT_SYMBOL vmlinux 0xd55f62dd posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0xd573a991 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0xd59510b2 elevator_alloc +EXPORT_SYMBOL vmlinux 0xd59ce483 blk_requeue_request +EXPORT_SYMBOL vmlinux 0xd59f8a8b fifo_set_limit +EXPORT_SYMBOL vmlinux 0xd5a9f733 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0xd5b4a31c mmc_add_host +EXPORT_SYMBOL vmlinux 0xd5b6adbb __blk_end_request +EXPORT_SYMBOL vmlinux 0xd5ef0e87 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0xd5f2172f del_timer_sync +EXPORT_SYMBOL vmlinux 0xd5fb13e6 mdiobus_register +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd62abc39 _raw_read_unlock +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd66d627f inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0xd681e530 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd6b33026 cpu_khz +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6f816dc devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0xd70a4248 lock_may_read +EXPORT_SYMBOL vmlinux 0xd7279c2d dquot_disable +EXPORT_SYMBOL vmlinux 0xd72de902 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0xd7458656 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0xd745d7cb vm_map_ram +EXPORT_SYMBOL vmlinux 0xd746fc84 inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0xd756ee26 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd77a5aa5 __bitmap_and +EXPORT_SYMBOL vmlinux 0xd79b5a02 allow_signal +EXPORT_SYMBOL vmlinux 0xd7bd3af2 add_wait_queue +EXPORT_SYMBOL vmlinux 0xd7ca6045 cdev_alloc +EXPORT_SYMBOL vmlinux 0xd7dd777b reserve_perfctr_nmi +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7e958fa pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd7f14164 address_space_init_once +EXPORT_SYMBOL vmlinux 0xd84eef9e tty_port_hangup +EXPORT_SYMBOL vmlinux 0xd853b96c flock_lock_file_wait +EXPORT_SYMBOL vmlinux 0xd8560891 __generic_file_aio_write +EXPORT_SYMBOL vmlinux 0xd8577755 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0xd85833cb __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0xd8690eee scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0xd870eb79 cdrom_release +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a61ca8 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0xd8b35db9 misc_deregister +EXPORT_SYMBOL vmlinux 0xd8c11898 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0xd8c72cf0 ifla_policy +EXPORT_SYMBOL vmlinux 0xd8d612c9 kernel_read +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8e49997 dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0xd8f2d8a7 genl_notify +EXPORT_SYMBOL vmlinux 0xd8f45562 swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0xd9091363 acpi_install_notify_handler +EXPORT_SYMBOL vmlinux 0xd90d5993 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0xd92afabe bitmap_clear +EXPORT_SYMBOL vmlinux 0xd92e7384 spi_release_transport +EXPORT_SYMBOL vmlinux 0xd932eed0 dquot_resume +EXPORT_SYMBOL vmlinux 0xd94322e7 acpi_evaluate_reference +EXPORT_SYMBOL vmlinux 0xd95e4361 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0xd969b2c7 amd_e400_c1e_detected +EXPORT_SYMBOL vmlinux 0xd96da051 skb_flow_dissect +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd990546c lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0xd9a8f059 pci_enable_msi_block +EXPORT_SYMBOL vmlinux 0xd9a9bb30 getname +EXPORT_SYMBOL vmlinux 0xd9a9bc99 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0xd9b78b89 ata_dev_printk +EXPORT_SYMBOL vmlinux 0xd9c565d1 fb_show_logo +EXPORT_SYMBOL vmlinux 0xd9d479ee igrab +EXPORT_SYMBOL vmlinux 0xd9e2cab0 sg_miter_next +EXPORT_SYMBOL vmlinux 0xd9eca783 path_put +EXPORT_SYMBOL vmlinux 0xda08c0d7 pcibios_get_irq_routing_table +EXPORT_SYMBOL vmlinux 0xda0c3849 idr_destroy +EXPORT_SYMBOL vmlinux 0xda2478d0 param_ops_short +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda3f677f scsi_host_lookup +EXPORT_SYMBOL vmlinux 0xda45b840 submit_bio +EXPORT_SYMBOL vmlinux 0xda49160e xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0xda49b4d3 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0xda543bc5 unregister_key_type +EXPORT_SYMBOL vmlinux 0xda59879b elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0xda59d317 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0xda623750 mutex_unlock +EXPORT_SYMBOL vmlinux 0xda645aee fb_find_mode +EXPORT_SYMBOL vmlinux 0xda69dce7 nlmsg_notify +EXPORT_SYMBOL vmlinux 0xda720f46 dev_mc_init +EXPORT_SYMBOL vmlinux 0xda798a14 netif_napi_add +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda7fd43a jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0xda83a90b __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda8fd495 isapnp_write_byte +EXPORT_SYMBOL vmlinux 0xda9534d4 km_new_mapping +EXPORT_SYMBOL vmlinux 0xdaa57ec3 totalhigh_pages +EXPORT_SYMBOL vmlinux 0xdaa8b292 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0xdada9ced send_sig +EXPORT_SYMBOL vmlinux 0xdb1084ba pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0xdb2939ac notify_change +EXPORT_SYMBOL vmlinux 0xdb29559f delete_from_page_cache +EXPORT_SYMBOL vmlinux 0xdb2dc3af padata_alloc_possible +EXPORT_SYMBOL vmlinux 0xdb34b366 __pci_enable_wake +EXPORT_SYMBOL vmlinux 0xdb41a8a4 request_key +EXPORT_SYMBOL vmlinux 0xdb541513 max8925_reg_write +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb70095e tcp_sendmsg +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb87e34c iterate_supers_type +EXPORT_SYMBOL vmlinux 0xdbbe5e3a phy_attach +EXPORT_SYMBOL vmlinux 0xdbc65836 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0xdbcd416e sysctl_ip_nonlocal_bind +EXPORT_SYMBOL vmlinux 0xdbd69467 fput +EXPORT_SYMBOL vmlinux 0xdbf91dc1 ida_init +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc16ab89 bioset_create +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc433e7c blk_put_queue +EXPORT_SYMBOL vmlinux 0xdc4c013b audit_log +EXPORT_SYMBOL vmlinux 0xdc4ea87f inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0xdc570f62 lg_global_unlock +EXPORT_SYMBOL vmlinux 0xdc57f532 acpi_install_gpe_handler +EXPORT_SYMBOL vmlinux 0xdc82678c sock_sendmsg +EXPORT_SYMBOL vmlinux 0xdcaeac2f rtnl_notify +EXPORT_SYMBOL vmlinux 0xdcb5c929 tcf_hash_create +EXPORT_SYMBOL vmlinux 0xdccbef9a xfrm_lookup +EXPORT_SYMBOL vmlinux 0xdcd17b49 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0xdcf9fcb0 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd1a2871 down +EXPORT_SYMBOL vmlinux 0xdd5525fa complete_request_key +EXPORT_SYMBOL vmlinux 0xdd5e1403 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0xdd947d36 sock_init_data +EXPORT_SYMBOL vmlinux 0xdd9fbc11 dev_addr_init +EXPORT_SYMBOL vmlinux 0xddb25691 ___pskb_trim +EXPORT_SYMBOL vmlinux 0xddd0a0e0 kobject_init +EXPORT_SYMBOL vmlinux 0xddd15a4b tcp_recvmsg +EXPORT_SYMBOL vmlinux 0xddd572a1 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xddfaeb4b ps2_begin_command +EXPORT_SYMBOL vmlinux 0xde00cb6f filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0xde0c8453 generic_pipe_buf_map +EXPORT_SYMBOL vmlinux 0xde10eb10 param_set_invbool +EXPORT_SYMBOL vmlinux 0xde16dc16 tboot +EXPORT_SYMBOL vmlinux 0xde184a20 devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0xde2a22ba tty_unregister_driver +EXPORT_SYMBOL vmlinux 0xde614b40 gen10g_config_aneg +EXPORT_SYMBOL vmlinux 0xde621c9f blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xdebc9245 i2c_register_driver +EXPORT_SYMBOL vmlinux 0xded0a67b scsi_print_command +EXPORT_SYMBOL vmlinux 0xdefe3be8 call_netdevice_notifiers_info +EXPORT_SYMBOL vmlinux 0xdf0da3cc acpi_get_devices +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf371e62 generic_fillattr +EXPORT_SYMBOL vmlinux 0xdf456566 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0xdf48a0eb flex_array_put +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf7d7199 __secpath_destroy +EXPORT_SYMBOL vmlinux 0xdf8b3f9b jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0xdf8c695a __ndelay +EXPORT_SYMBOL vmlinux 0xdf8d920a nobh_write_end +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf93997d __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0xdf9ea506 pci_enable_ido +EXPORT_SYMBOL vmlinux 0xdfb3b1ef tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xdfbfaeac kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0xdfc07439 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0xdfc252dc mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfcdd044 scsi_nonblockable_ioctl +EXPORT_SYMBOL vmlinux 0xdfdab05a pci_enable_msix +EXPORT_SYMBOL vmlinux 0xdfe652ef neigh_resolve_output +EXPORT_SYMBOL vmlinux 0xe04d189b lease_get_mtime +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 0xe07a3a5d blk_rq_init +EXPORT_SYMBOL vmlinux 0xe09dcd9f proc_mkdir +EXPORT_SYMBOL vmlinux 0xe0a16a20 intel_scu_ipc_i2c_cntrl +EXPORT_SYMBOL vmlinux 0xe0ab949f ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0xe0ac8bd2 acpi_bus_generate_netlink_event +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0c73cb1 xfrm_register_mode +EXPORT_SYMBOL vmlinux 0xe0dd28ca skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0xe0e9f666 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0xe0f6a4aa tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL vmlinux 0xe11da22d from_kuid_munged +EXPORT_SYMBOL vmlinux 0xe1222372 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0xe12e6517 dev_addr_del_multiple +EXPORT_SYMBOL vmlinux 0xe1348556 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0xe13cd8a7 dmi_name_in_vendors +EXPORT_SYMBOL vmlinux 0xe14bf21c inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0xe1642c7c pci_reenable_device +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe17af2b4 sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0xe17d4927 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xe1866e0f inet_release +EXPORT_SYMBOL vmlinux 0xe1a8e470 inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0xe1cae912 pnp_register_driver +EXPORT_SYMBOL vmlinux 0xe1ed35c4 path_nosuid +EXPORT_SYMBOL vmlinux 0xe1fa5146 mnt_unpin +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe2034333 acpi_evaluate_hotplug_ost +EXPORT_SYMBOL vmlinux 0xe2052d10 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe250937f inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xe2605b65 replace_mount_options +EXPORT_SYMBOL vmlinux 0xe27eaa8c cdrom_mode_select +EXPORT_SYMBOL vmlinux 0xe28cc435 devfreq_resume_device +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2b421ff unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0xe2c3edcb blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2d9cc70 abort_creds +EXPORT_SYMBOL vmlinux 0xe2e8065e memdup_user +EXPORT_SYMBOL vmlinux 0xe2fae716 kmemdup +EXPORT_SYMBOL vmlinux 0xe3091361 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0xe319eb24 acpi_pci_osc_control_set +EXPORT_SYMBOL vmlinux 0xe32b1d63 vfs_setpos +EXPORT_SYMBOL vmlinux 0xe3877662 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0xe3922adb inet6_ioctl +EXPORT_SYMBOL vmlinux 0xe3a45416 agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0xe3aaedb8 pcim_iounmap +EXPORT_SYMBOL vmlinux 0xe3b5817d __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3fbbbce pci_get_device +EXPORT_SYMBOL vmlinux 0xe41e93b8 default_file_splice_read +EXPORT_SYMBOL vmlinux 0xe435e70d eth_rebuild_header +EXPORT_SYMBOL vmlinux 0xe445db4a acpi_check_address_range +EXPORT_SYMBOL vmlinux 0xe451dc55 tty_write_room +EXPORT_SYMBOL vmlinux 0xe4590ec0 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0xe45f60d8 __wake_up +EXPORT_SYMBOL vmlinux 0xe463bb3a tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0xe46e26eb udp_poll +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe4856210 proto_unregister +EXPORT_SYMBOL vmlinux 0xe485d12b phy_scan_fixups +EXPORT_SYMBOL vmlinux 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL vmlinux 0xe5012359 blk_start_request +EXPORT_SYMBOL vmlinux 0xe50bec3b sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0xe50c09bb dev_set_group +EXPORT_SYMBOL vmlinux 0xe50c4a48 dquot_acquire +EXPORT_SYMBOL vmlinux 0xe50f904f intel_scu_ipc_ioread16 +EXPORT_SYMBOL vmlinux 0xe5122890 flow_cache_genid +EXPORT_SYMBOL vmlinux 0xe51c28bd __neigh_create +EXPORT_SYMBOL vmlinux 0xe5208918 acpi_gbl_FADT +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe530d757 acpi_clear_gpe +EXPORT_SYMBOL vmlinux 0xe54041e2 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0xe55b8891 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0xe5623572 pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0xe571b3b6 revalidate_disk +EXPORT_SYMBOL vmlinux 0xe574fd15 save_mount_options +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe59a0119 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0xe59f9713 block_commit_write +EXPORT_SYMBOL vmlinux 0xe5acf8c9 scsi_reset_provider +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5cb6295 generic_write_end +EXPORT_SYMBOL vmlinux 0xe5d22bd1 inet_put_port +EXPORT_SYMBOL vmlinux 0xe5e90093 dma_async_device_register +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe5f42f9b eisa_bus_type +EXPORT_SYMBOL vmlinux 0xe5f7af91 vga_switcheroo_get_client_state +EXPORT_SYMBOL vmlinux 0xe602c874 locks_remove_posix +EXPORT_SYMBOL vmlinux 0xe60d3496 agp_create_memory +EXPORT_SYMBOL vmlinux 0xe613bc9c dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0xe63bc1b0 __dquot_free_space +EXPORT_SYMBOL vmlinux 0xe64d98fe rdmsr_safe_regs +EXPORT_SYMBOL vmlinux 0xe65289e2 bdi_register +EXPORT_SYMBOL vmlinux 0xe657904c create_syslog_header +EXPORT_SYMBOL vmlinux 0xe662a49e d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0xe66bd231 write_one_page +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe697dae0 blk_register_region +EXPORT_SYMBOL vmlinux 0xe6a2c873 sk_free +EXPORT_SYMBOL vmlinux 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL vmlinux 0xe6b3fe21 interruptible_sleep_on_timeout +EXPORT_SYMBOL vmlinux 0xe6bb1920 netif_receive_skb +EXPORT_SYMBOL vmlinux 0xe6e27051 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0xe6ebc016 key_create_or_update +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe6fc9523 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0xe7008914 gen10g_restart_aneg +EXPORT_SYMBOL vmlinux 0xe716baed acpi_unregister_ioapic +EXPORT_SYMBOL vmlinux 0xe71d9139 pcie_get_mps +EXPORT_SYMBOL vmlinux 0xe72ef3f2 md_flush_request +EXPORT_SYMBOL vmlinux 0xe746a439 sk_dst_check +EXPORT_SYMBOL vmlinux 0xe74cb361 serio_reconnect +EXPORT_SYMBOL vmlinux 0xe75ac68f locks_init_lock +EXPORT_SYMBOL vmlinux 0xe75fafea mpage_readpage +EXPORT_SYMBOL vmlinux 0xe75fb1d0 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0xe7722171 flex_array_free +EXPORT_SYMBOL vmlinux 0xe780720e seq_read +EXPORT_SYMBOL vmlinux 0xe781b5f6 intel_scu_ipc_readv +EXPORT_SYMBOL vmlinux 0xe787fa2f check_disk_change +EXPORT_SYMBOL vmlinux 0xe78dcf76 seq_path +EXPORT_SYMBOL vmlinux 0xe798d71c cpu_core_map +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7add944 do_splice_from +EXPORT_SYMBOL vmlinux 0xe7b7640e netdev_has_any_upper_dev +EXPORT_SYMBOL vmlinux 0xe7bfac51 sock_create_lite +EXPORT_SYMBOL vmlinux 0xe7c693e0 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe81400be netif_carrier_off +EXPORT_SYMBOL vmlinux 0xe851bb05 queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0xe854c0b7 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0xe866fe82 sk_wait_data +EXPORT_SYMBOL vmlinux 0xe86b736b fb_set_cmap +EXPORT_SYMBOL vmlinux 0xe87025f0 acpi_evaluate_object_typed +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe88c3f87 done_path_create +EXPORT_SYMBOL vmlinux 0xe88e7a93 lg_global_lock +EXPORT_SYMBOL vmlinux 0xe898bfba crc32_le_combine +EXPORT_SYMBOL vmlinux 0xe8b4b145 bmap +EXPORT_SYMBOL vmlinux 0xe8b63ace radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xe8b68849 wrmsr_on_cpus +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8c57b4a touch_atime +EXPORT_SYMBOL vmlinux 0xe8dde83d jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0xe8fbeb62 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0xe9034bef set_disk_ro +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe9163980 bdget_disk +EXPORT_SYMBOL vmlinux 0xe9271c88 follow_down +EXPORT_SYMBOL vmlinux 0xe92bbe5c blk_mq_init_commands +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe9819302 misc_register +EXPORT_SYMBOL vmlinux 0xe997667b wrmsr_on_cpu +EXPORT_SYMBOL vmlinux 0xe9a3a84c mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0xe9b6ec41 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0xe9cd3d12 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea069d3f __cleancache_put_page +EXPORT_SYMBOL vmlinux 0xea10212a int_to_scsilun +EXPORT_SYMBOL vmlinux 0xea10655a __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xea16dd4c tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xea19f80e set_pages_array_wc +EXPORT_SYMBOL vmlinux 0xea3a9d56 tcf_action_exec +EXPORT_SYMBOL vmlinux 0xea43939c register_gifconf +EXPORT_SYMBOL vmlinux 0xea43ed2e pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0xea65fc54 module_layout +EXPORT_SYMBOL vmlinux 0xea7987f1 key_update +EXPORT_SYMBOL vmlinux 0xea7b8a44 acpi_install_interface +EXPORT_SYMBOL vmlinux 0xea85dc17 i2c_master_recv +EXPORT_SYMBOL vmlinux 0xea90bdd3 acpi_attach_data +EXPORT_SYMBOL vmlinux 0xea925688 nf_ct_attach +EXPORT_SYMBOL vmlinux 0xeab0f611 ip_cmsg_recv +EXPORT_SYMBOL vmlinux 0xeab319a1 kthread_stop +EXPORT_SYMBOL vmlinux 0xeae3dfd6 __const_udelay +EXPORT_SYMBOL vmlinux 0xeb09bbe6 i2c_verify_client +EXPORT_SYMBOL vmlinux 0xeb10d1c8 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0xeb261859 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb60037b revert_creds +EXPORT_SYMBOL vmlinux 0xebb1f8b3 key_alloc +EXPORT_SYMBOL vmlinux 0xebc8548d security_path_chmod +EXPORT_SYMBOL vmlinux 0xebdbe48c radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xebe1bcf5 simple_dir_operations +EXPORT_SYMBOL vmlinux 0xebebfd2f __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0xec08c198 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0xec17716f jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xec1aa6ef memzero_explicit +EXPORT_SYMBOL vmlinux 0xec1bfa2f dev_uc_init +EXPORT_SYMBOL vmlinux 0xec36e5cc pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0xec397c8f pci_match_id +EXPORT_SYMBOL vmlinux 0xec423ea6 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec72272f xfrm_input +EXPORT_SYMBOL vmlinux 0xec9d2080 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0xecb721f1 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0xecba2104 blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0xecbdc587 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0xeccd3e0c acpi_handle_printk +EXPORT_SYMBOL vmlinux 0xecd5d269 handle_edge_irq +EXPORT_SYMBOL vmlinux 0xece414de dquot_quota_sync +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xeceb2f01 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0xed39c995 tcf_hash_search +EXPORT_SYMBOL vmlinux 0xed3c11eb do_splice_to +EXPORT_SYMBOL vmlinux 0xed4cacef vga_put +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed71473e rtnl_create_link +EXPORT_SYMBOL vmlinux 0xed7e1295 gen_pool_create +EXPORT_SYMBOL vmlinux 0xed8bfec7 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0xed93f29e __kunmap_atomic +EXPORT_SYMBOL vmlinux 0xed950e41 skb_copy_datagram_iovec +EXPORT_SYMBOL vmlinux 0xed95fd1e __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xedabb2de input_release_device +EXPORT_SYMBOL vmlinux 0xedb135b8 i2c_del_driver +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedca94ed sock_no_ioctl +EXPORT_SYMBOL vmlinux 0xedcde86e sget +EXPORT_SYMBOL vmlinux 0xedd91077 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0xede170f3 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0xee070268 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0xee19033a simple_release_fs +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee329d16 i2c_transfer +EXPORT_SYMBOL vmlinux 0xee3b47df d_splice_alias +EXPORT_SYMBOL vmlinux 0xee471cf3 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0xee7eb9e1 pnp_platform_devices +EXPORT_SYMBOL vmlinux 0xee851513 netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0xee917b07 ppp_register_channel +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xee9da441 netlink_net_capable +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeed169da nonseekable_open +EXPORT_SYMBOL vmlinux 0xeed2b024 ppp_channel_index +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xef02d2b4 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0xef0be3b6 register_key_type +EXPORT_SYMBOL vmlinux 0xef1b3968 devm_clk_get +EXPORT_SYMBOL vmlinux 0xef24c81c nf_log_unset +EXPORT_SYMBOL vmlinux 0xef57114d __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xef5a047c ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0xef870a08 scsi_execute +EXPORT_SYMBOL vmlinux 0xef9aedfc boot_option_idle_override +EXPORT_SYMBOL vmlinux 0xefc372f7 bio_integrity_get_tag +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 0xf0040079 rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf04c04f8 blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0xf0520f19 genphy_suspend +EXPORT_SYMBOL vmlinux 0xf05c3895 bdev_read_only +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf0619801 timekeeping_clocktai +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf087137d __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0ae0904 phy_drivers_register +EXPORT_SYMBOL vmlinux 0xf0c3b596 generic_removexattr +EXPORT_SYMBOL vmlinux 0xf0ce7d50 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0xf0d68ed6 clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0xf0e12954 inet_frag_find +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0f1246c kvasprintf +EXPORT_SYMBOL vmlinux 0xf0f76649 tty_kref_put +EXPORT_SYMBOL vmlinux 0xf0fdf6cb __stack_chk_fail +EXPORT_SYMBOL vmlinux 0xf100416a remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf10e6c49 agp_put_bridge +EXPORT_SYMBOL vmlinux 0xf11543ff find_first_zero_bit +EXPORT_SYMBOL vmlinux 0xf12d331c lg_local_lock +EXPORT_SYMBOL vmlinux 0xf13feb57 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf14abce0 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0xf14f3b59 udplite_prot +EXPORT_SYMBOL vmlinux 0xf17b4a31 arp_tbl +EXPORT_SYMBOL vmlinux 0xf17e5238 serio_unregister_port +EXPORT_SYMBOL vmlinux 0xf18242e1 atomic64_set_cx8 +EXPORT_SYMBOL vmlinux 0xf18250fc padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xf18fa2cc unregister_nls +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1bab7b9 may_umount_tree +EXPORT_SYMBOL vmlinux 0xf1c66f96 pci_iomap +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1deabf2 div64_u64 +EXPORT_SYMBOL vmlinux 0xf1e077ff vfs_rename +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1faac3a _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xf202c5cb radix_tree_insert +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf21b818d mount_nodev +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf24cc89e kernel_write +EXPORT_SYMBOL vmlinux 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL vmlinux 0xf26c7142 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0xf276690c mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0xf27b4aa3 dentry_path_raw +EXPORT_SYMBOL vmlinux 0xf28ed6e2 machine_to_phys_nr +EXPORT_SYMBOL vmlinux 0xf2933064 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0xf2941e1c max8998_read_reg +EXPORT_SYMBOL vmlinux 0xf2997713 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0xf29c13eb proc_set_user +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2a33a7c __get_user_pages +EXPORT_SYMBOL vmlinux 0xf2b1ac8e __getnstimeofday +EXPORT_SYMBOL vmlinux 0xf2bc5836 km_state_notify +EXPORT_SYMBOL vmlinux 0xf2fcb4a9 dev_uc_sync +EXPORT_SYMBOL vmlinux 0xf312cb9d ucs2_strsize +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf32055e7 dev_base_lock +EXPORT_SYMBOL vmlinux 0xf333ba0b dm_kobject_release +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf3505942 register_md_personality +EXPORT_SYMBOL vmlinux 0xf351cd42 ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf3609aef mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0xf368abd2 skb_queue_tail +EXPORT_SYMBOL vmlinux 0xf37260ab _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0xf3758f85 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0xf384856d gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf38bbd6d pcim_iomap +EXPORT_SYMBOL vmlinux 0xf3901de4 devm_ioremap_nocache +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 0xf399bea5 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0xf3b3a3c2 key_put +EXPORT_SYMBOL vmlinux 0xf3babb5f generic_file_direct_write +EXPORT_SYMBOL vmlinux 0xf3bf0bce __bitmap_complement +EXPORT_SYMBOL vmlinux 0xf3cc48dc eth_mac_addr +EXPORT_SYMBOL vmlinux 0xf3e0793b netif_device_detach +EXPORT_SYMBOL vmlinux 0xf40b2297 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xf4194cc0 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0xf42c3b3e vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf46f18b9 key_instantiate_and_link +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 0xf4ce2746 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xf4f0c741 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f19e51 downgrade_write +EXPORT_SYMBOL vmlinux 0xf4f7386f __kfree_skb +EXPORT_SYMBOL vmlinux 0xf4fc6fb9 dma_pool_create +EXPORT_SYMBOL vmlinux 0xf4fcbb6c sock_alloc_file +EXPORT_SYMBOL vmlinux 0xf502d273 acpi_get_current_resources +EXPORT_SYMBOL vmlinux 0xf509ea91 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0xf51ae235 touch_nmi_watchdog +EXPORT_SYMBOL vmlinux 0xf51f72d4 input_register_device +EXPORT_SYMBOL vmlinux 0xf52c54c6 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0xf52db112 vm_insert_page +EXPORT_SYMBOL vmlinux 0xf536d22e acpi_set_gpe_wake_mask +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf542f609 simple_setattr +EXPORT_SYMBOL vmlinux 0xf54590ae init_task +EXPORT_SYMBOL vmlinux 0xf546e954 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0xf56cfd28 read_cache_page_async +EXPORT_SYMBOL vmlinux 0xf581c199 lro_receive_frags +EXPORT_SYMBOL vmlinux 0xf5b10e67 acpi_install_global_event_handler +EXPORT_SYMBOL vmlinux 0xf5c05914 generic_segment_checks +EXPORT_SYMBOL vmlinux 0xf5e9f803 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf627e003 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xf62e526c kernel_accept +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf656c3e8 __lock_page +EXPORT_SYMBOL vmlinux 0xf661632b skb_queue_purge +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf68687be __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xf6a0aecc inet_register_protosw +EXPORT_SYMBOL vmlinux 0xf6a121af blk_integrity_register +EXPORT_SYMBOL vmlinux 0xf6b97cca dev_mc_sync +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6de44a5 wireless_send_event +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6fd218f scsi_device_resume +EXPORT_SYMBOL vmlinux 0xf711eb27 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0xf713ccfa neigh_seq_next +EXPORT_SYMBOL vmlinux 0xf721733a netpoll_rx_disable +EXPORT_SYMBOL vmlinux 0xf726d02f atomic64_add_unless_cx8 +EXPORT_SYMBOL vmlinux 0xf735c515 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0xf741c793 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xf745cb16 atomic64_sub_return_cx8 +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf75ca844 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0xf78f1eae dev_printk_emit +EXPORT_SYMBOL vmlinux 0xf7c21ca2 inet6_getname +EXPORT_SYMBOL vmlinux 0xf7c65cfd devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0xf7d4b6f9 pnpacpi_protocol +EXPORT_SYMBOL vmlinux 0xf7e37635 __wait_on_bit +EXPORT_SYMBOL vmlinux 0xf7e3f7ed scsi_is_host_device +EXPORT_SYMBOL vmlinux 0xf7f357fe dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xf803fe39 bitmap_set +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 0xf8302822 set_security_override +EXPORT_SYMBOL vmlinux 0xf83e7b2c pcim_iomap_table +EXPORT_SYMBOL vmlinux 0xf8476374 rtnl_unicast +EXPORT_SYMBOL vmlinux 0xf848dd4b invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0xf86271f7 sk_reset_timer +EXPORT_SYMBOL vmlinux 0xf86bd3b2 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0xf872812e inet_frag_destroy +EXPORT_SYMBOL vmlinux 0xf875685a always_delete_dentry +EXPORT_SYMBOL vmlinux 0xf87749b4 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0xf877e070 remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0xf88e0ee2 acpi_get_table_header +EXPORT_SYMBOL vmlinux 0xf8b90ab7 netif_carrier_on +EXPORT_SYMBOL vmlinux 0xf8de9afd mmc_of_parse +EXPORT_SYMBOL vmlinux 0xf9001588 skb_pad +EXPORT_SYMBOL vmlinux 0xf925495e __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xf9348cbc xz_dec_run +EXPORT_SYMBOL vmlinux 0xf9367d85 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0xf9382917 __nla_put +EXPORT_SYMBOL vmlinux 0xf940a328 __next_cpu +EXPORT_SYMBOL vmlinux 0xf9461e5e gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xf946d4ee put_disk +EXPORT_SYMBOL vmlinux 0xf953eba0 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0xf97456ea _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xf97be7e0 skb_checksum +EXPORT_SYMBOL vmlinux 0xf998b80a __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9c367e0 iov_pages +EXPORT_SYMBOL vmlinux 0xf9c967eb spi_attach_transport +EXPORT_SYMBOL vmlinux 0xf9e2769b mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0xf9e73082 scnprintf +EXPORT_SYMBOL vmlinux 0xfa223350 udp_proc_register +EXPORT_SYMBOL vmlinux 0xfa30957c mempool_free +EXPORT_SYMBOL vmlinux 0xfa406c55 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa60e683 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0xfa7f3156 wl12xx_get_platform_data +EXPORT_SYMBOL vmlinux 0xfaa4d8fa pnp_activate_dev +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfae60b9e arp_find +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaf98462 bitrev32 +EXPORT_SYMBOL vmlinux 0xfb0443fb acpi_get_parent +EXPORT_SYMBOL vmlinux 0xfb0cecfd vm_event_states +EXPORT_SYMBOL vmlinux 0xfb2b98f6 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xfb563fa1 bio_copy_user +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb7a4d66 cont_write_begin +EXPORT_SYMBOL vmlinux 0xfb80c7a0 acpi_walk_namespace +EXPORT_SYMBOL vmlinux 0xfb869555 scsi_release_buffers +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfb95791a max8998_update_reg +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbc09e93 mntget +EXPORT_SYMBOL vmlinux 0xfbd5b6cf xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0xfbe33af1 sk_ns_capable +EXPORT_SYMBOL vmlinux 0xfbe77d08 simple_transaction_release +EXPORT_SYMBOL vmlinux 0xfc00ffad pci_vpd_truncate +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc0b31fe do_splice_direct +EXPORT_SYMBOL vmlinux 0xfc11b12b nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0xfc381417 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc4868c1 fb_pan_display +EXPORT_SYMBOL vmlinux 0xfc562165 acpi_run_osc +EXPORT_SYMBOL vmlinux 0xfc5fb52d bioset_free +EXPORT_SYMBOL vmlinux 0xfc6166fb vlan_vid_add +EXPORT_SYMBOL vmlinux 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfc872fd1 get_ibs_caps +EXPORT_SYMBOL vmlinux 0xfc92e0fa pm860x_set_bits +EXPORT_SYMBOL vmlinux 0xfcaa04a0 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xfcac0d40 acpi_install_interface_handler +EXPORT_SYMBOL vmlinux 0xfcb051c3 security_d_instantiate +EXPORT_SYMBOL vmlinux 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcdf2130 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd0192da gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0xfd07c646 devm_ioport_map +EXPORT_SYMBOL vmlinux 0xfd164031 vga_switcheroo_unregister_client +EXPORT_SYMBOL vmlinux 0xfd3fae52 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0xfd485ec8 seq_printf +EXPORT_SYMBOL vmlinux 0xfd628cfc inet_recvmsg +EXPORT_SYMBOL vmlinux 0xfd6293c2 boot_tvec_bases +EXPORT_SYMBOL vmlinux 0xfd846888 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0xfd861372 adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0xfd98ab02 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfda0dbe8 ftrace_print_hex_seq +EXPORT_SYMBOL vmlinux 0xfda962ce fixed_size_llseek +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdee7d42 _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe0309a5 kill_anon_super +EXPORT_SYMBOL vmlinux 0xfe047ce6 acpi_enter_sleep_state +EXPORT_SYMBOL vmlinux 0xfe2a40f4 read_cache_pages +EXPORT_SYMBOL vmlinux 0xfe2aa572 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0xfe35dead skb_seq_read +EXPORT_SYMBOL vmlinux 0xfe4fab7a blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0xfe51f68e __block_write_begin +EXPORT_SYMBOL vmlinux 0xfe56f407 scsi_scan_host +EXPORT_SYMBOL vmlinux 0xfe587328 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe83cf23 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0xfe880c21 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0xfe94860f try_to_release_page +EXPORT_SYMBOL vmlinux 0xfe9cf07e update_time +EXPORT_SYMBOL vmlinux 0xfe9ebbbb acpi_osi_is_win8 +EXPORT_SYMBOL vmlinux 0xfeabbe9d iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0xfeb357fa skb_dequeue +EXPORT_SYMBOL vmlinux 0xfed6677d mount_single +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfeeaa009 security_path_rmdir +EXPORT_SYMBOL vmlinux 0xfef96e23 __scsi_print_command +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff2e1ced inet6_add_offload +EXPORT_SYMBOL vmlinux 0xff330c2e pci_pme_active +EXPORT_SYMBOL vmlinux 0xff358165 blk_get_queue +EXPORT_SYMBOL vmlinux 0xff451080 generic_write_checks +EXPORT_SYMBOL vmlinux 0xff480992 dump_fpu +EXPORT_SYMBOL vmlinux 0xff552517 ip_getsockopt +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff932b1d writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffaa2f85 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0xffc1d1ab truncate_pagecache +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffe9378d mmc_hw_reset_check +EXPORT_SYMBOL vmlinux 0xffeb989c pci_bus_write_config_dword +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 0x2c17c517 glue_ctr_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x43c9fc1a 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 0xbd686d41 glue_cbc_encrypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0xdd79387d glue_ctr_crypt_final_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0xeee0b033 glue_cbc_decrypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0xef1f9c40 glue_xts_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 0x00d8af6d kvm_read_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x00d90697 kvm_valid_efer +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x07415e79 kvm_read_guest_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x09f6340c kvm_mmu_flush_tlb +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0b58f883 kvm_mmu_get_spte_hierarchy +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0d529a88 kvm_read_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x104acf76 kvm_mmu_load +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x109ecfbf kvm_get_dirty_log +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x11712c2c kvm_cpu_has_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x143e761e kvm_task_switch +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x163ea3ed kvm_mmu_unprotect_page_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x16b46318 kvm_rdpmc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x18e257ab __tracepoint_kvm_nested_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1a4342a5 __tracepoint_kvm_invlpga +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1cf6160b kvm_before_handle_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1cfe78d1 kvm_release_pfn_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1f608c7e kvm_set_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1f78059e kvm_write_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1fb574a3 kvm_vcpu_kick +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x218ec06c kvm_read_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2335e579 kvm_x86_ops +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2433d6fd __tracepoint_kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x25bc178b gfn_to_pfn_async +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x27683497 kvm_write_tsc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x297a7cc9 kvm_set_xcr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2b90ea45 gfn_to_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2d195e63 kvm_emulate_halt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2f636c31 kvm_spurious_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2ff1bc83 kvm_set_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x317f9e6b kvm_enable_efer_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x399c8970 gfn_to_hva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3ee59a92 __tracepoint_kvm_skinit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x479aabb2 kvm_set_cr3 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x47df2a53 fx_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x49df3e74 kvm_set_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4b4f45c2 kvm_mmu_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4c2235f4 kvm_resched +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4f22c46f gfn_to_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x58f57f5f kvm_inject_realmode_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5b716a5d kvm_get_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5c353c1f kvm_get_guest_memory_type +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5f982207 kvm_flush_remote_tlbs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x63c157cc kvm_release_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x64020e10 kvm_set_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x644a2f01 kvm_find_cpuid_entry +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x659b9e31 kvm_get_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x66aed8d7 kvm_mmu_reset_context +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x687539b8 kvm_set_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7182d36c kvm_mmu_unload +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x71ee1d3a gfn_to_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x71f71219 kvm_vcpu_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x72d5a626 kvm_is_visible_gfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x75eed924 gfn_to_pfn_prot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x766a2ea8 kvm_is_linear_rip +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x773a8afb kvm_apic_write_nodecode +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7c695f00 kvm_fast_pio_out +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7cb07c1c kvm_inject_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7e4e5482 kvm_emulate_wbinvd +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7f0de8ca kvm_read_guest_page_mmu +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 0x8564e96b kvm_get_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8595c79c kvm_init_shadow_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x86b55828 handle_mmio_page_fault_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x872e854c gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8a27f051 mark_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8afaa686 kvm_lmsw +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 0x91681880 kvm_release_page_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x957dbc80 kvm_queue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x978f3c52 kvm_set_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9a01c941 kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9a216313 kvm_define_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9b6c4caf kvm_arch_has_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9cb53bc8 kvm_requeue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9e95d239 kvm_inject_pending_timer_irqs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9f0c3095 kvm_irq_has_notifier +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9f436dac kvm_set_cr4 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa0ec3a0a gfn_to_hva_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa1202ab7 kvm_lapic_set_eoi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa1cdc22a kvm_require_cpl +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa2075944 kvm_get_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaac7c868 __tracepoint_kvm_nested_intr_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xac5bbd12 kvm_set_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xacf7f97c gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xae3034c4 kvm_after_handle_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaf644677 kvm_emulate_hypercall +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xafb5dbd2 kvm_queue_exception_e +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 0xb77576b7 load_pdptrs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb85d9d40 kvm_vcpu_cache +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xba1a59dd kvm_arch_unregister_noncoherent_dma +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 0xbe7343dd kvm_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbee10042 kvm_set_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbf05ab76 __tracepoint_kvm_inj_virq +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc1540230 kvm_clear_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc3a6fe3a kvm_write_guest_virt_system +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc4dfe9da kvm_inject_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc7265be5 kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcb67ce10 __tracepoint_kvm_nested_intercepts +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcb8187b7 kvm_vcpu_block +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcc9f7d23 kvm_write_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcee7ffd0 kvm_init_shadow_ept_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd0459e67 kvm_has_tsc_control +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd055eb9e __kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd0b2727a kvm_mmu_set_mask_ptes +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd14be630 kvm_mmu_unprotect_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd476d035 kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd8061895 kvm_get_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd9494e4d kvm_apic_update_irr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdb6a3e2a kvm_mmu_sync_roots +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdd2091c5 kvm_cpuid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xddddaeaf kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xde8db26d kvm_complete_insn_gp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdf701329 kvm_get_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe47f8989 gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe8d7285e kvm_requeue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe9790e86 __tracepoint_kvm_cr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xeb238859 kvm_get_cs_db_l_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xed33f36b x86_emulate_instruction +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xed64dec3 kvm_mmu_invlpg +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf0d2dd49 kvm_set_cr0 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf2b80050 kvm_vcpu_uninit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf81d3ef3 kvm_emulate_cpuid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf9f0f5dc kvm_clear_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfa07a68f kvm_arch_register_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfb55f026 kvm_apic_set_eoi_accelerated +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfd5fc7c5 kvm_put_kvm +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x13b89e64 ablk_set_key +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x26756db9 ablk_exit +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x547f7450 ablk_init +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x5c4d9960 ablk_decrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xae46762e ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xafda14f2 __ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xb87b6a9e ablk_init_common +EXPORT_SYMBOL_GPL crypto/af_alg 0x1671f269 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x1af2cca0 af_alg_release_parent +EXPORT_SYMBOL_GPL crypto/af_alg 0x24676028 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0x7e7cde9c af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x93957c0c af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0xa8bc4a0a af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xb9e21d4b af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xe32db673 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0xe35c96e5 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xf8d7bd6d af_alg_accept +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0xaf9bdde8 async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x143e1c9b async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xa9e3e289 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x9424f284 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xae562c89 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x50c822f2 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x710437f3 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x7cbb453e __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x9bff0651 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x50d4b530 async_xor +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xaaf081f4 async_xor_val +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0xb2adfe89 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 0xb543ae09 cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1291971c __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1758daa9 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 0x2a3cd2ce cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x404b1c29 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x5789907e cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x6dd9c0ba cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x789d6e23 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x8430064d cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x844a4683 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x9bbaeb4e cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xeb158d74 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xfe16c5f6 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0xc1d8d117 lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +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 0xbf6690b9 serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0xd35146c7 twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x7959145b xts_crypt +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/ahci_platform 0x07167443 ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x0cb91581 ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x0e469616 ahci_platform_suspend +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x34d608e9 ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x94b45bab ahci_platform_resume_host +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xa0696224 ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xb125bd27 ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xd4a74df4 ahci_platform_resume +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xd5ccbefe ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xdeb21685 ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xe402668e ahci_platform_suspend_host +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x012e1b69 ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x108f2f50 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x27edc6d2 ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x340bf1ed ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3bff324b ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3d74d967 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3e5896b1 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x419661b0 ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5eacba1f ahci_interrupt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x694f923e ahci_thread_fn +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6c709865 ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6e05c4e7 ahci_hw_interrupt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7cd4a8da ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x851a4333 ahci_restart_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x87609616 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x9d3b2c49 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x9e7e5095 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x9eed5bbc ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xb13ec779 ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xb5c011fe ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xb9240415 ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xcdb5ff19 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd9f87f59 ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xec6d70ec ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xfe78ea0a ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x621315ac __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/bcma/bcma 0x16593dba bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x19d8ffe6 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2dffef42 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x344edd7a bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x403f303e bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x40ef44e6 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x448ff933 bcma_find_core +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4ac5417c bcma_core_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4ed8a385 bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x51794556 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7cbd41a4 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7f0a1974 bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa568300a bcma_core_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xad020583 bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xcb1a10bc bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd392ef12 bcma_core_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe2c256dc bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe32bc83d bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf034fd7e bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf06de78c bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf4fa3519 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xfa5044e0 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xfe622409 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x0ee416a0 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x20de9a41 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x2147f759 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x46ab2043 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x52899db2 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x6c857622 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x73f02120 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x73f3362d btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x978ddafa btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xdc10d6db btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/char/scx200_gpio 0xc08af08c scx200_gpio_ops +EXPORT_SYMBOL_GPL drivers/dca/dca 0x01a33ab9 dca_unregister_notify +EXPORT_SYMBOL_GPL drivers/dca/dca 0x2835ba1d alloc_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0x297651f4 dca_add_requester +EXPORT_SYMBOL_GPL drivers/dca/dca 0x31a2c8df dca_get_tag +EXPORT_SYMBOL_GPL drivers/dca/dca 0x731870d2 dca_remove_requester +EXPORT_SYMBOL_GPL drivers/dca/dca 0x8dc97ad0 unregister_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0x989b4c6e free_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0xac34ecec dca_register_notify +EXPORT_SYMBOL_GPL drivers/dca/dca 0xbc654a26 dca3_get_tag +EXPORT_SYMBOL_GPL drivers/dca/dca 0xe977341e register_dca_provider +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x202edce6 dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x55e2e8e9 dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x74df78b8 dw_dma_shutdown +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xa7e51549 dw_dma_suspend +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xd3d9cffc dw_dma_resume +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x105d9b95 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x42333197 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x458e5476 edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x49145cae edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x59fa118d edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5bbc260f edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5c5a86d3 edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5e3b2218 find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6203b217 edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x69259f22 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6f46860b edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x76df37dc edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x8c64bf68 edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa7e7b2bb edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa9ec5de0 edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xba97f338 edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd0fc56b0 edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd2829ddc edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd44eb189 edac_mc_add_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd6bf9c92 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xdddf2f6d edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xde507bfb edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf4dfdfd1 edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf9779cf8 edac_device_handle_ce +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 0x71cda701 bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0xc9057f2e bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x0a82c103 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x5ebd2c65 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x8699f0a3 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x86b0095a drm_vm_open_locked +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xe8fa9543 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 0x2b2c59ae i915_release_power_well +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 0x96108893 i915_request_power_well +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0xb76bf2ac i915_get_cdclk_freq +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0xe7237b0b i915_gpu_turbo_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x1e0661de 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 0xac9df6c5 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 0xdb10308c ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/hid/hid 0x01f500a0 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x04e28849 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0ab55d2b hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1aba9b5f hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1bb5b80f hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2a52a8ac hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2aced677 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2b2bea79 hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2e755145 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x35cce577 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x418e6837 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4760b2e5 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x529cb393 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5d018371 hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7add0c73 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7c217584 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x852b3b2b hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x87883151 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8b3538dc hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x93577396 hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0x96e1dd97 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9d0be717 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa80e604c hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb2038e81 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb840ff64 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc52c6968 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xcd7d80ff hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd05bb2ef hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd0b9b478 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xdfe3f344 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe5811c66 hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe60234c4 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe74a5b91 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe970cba0 hid_allocate_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 0xfcd9ece0 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x4be04cbf roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x5b118591 roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xa6b22cac roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xbe85df43 roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xe56c00d7 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xfcc5c63f roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x0308419f sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x03b78fe2 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x46d04d5e sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x50e5faf3 sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x5e18207e sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x9575777c sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xa5d3f037 sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xf8f14e2d sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x8a595455 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x175b3684 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x1df9c917 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x50111279 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x57f0dd28 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5d9bfd3d hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x6f20018b hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x851e7e10 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x8e06ab12 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xaf7fbd03 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc739c752 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd67358c8 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe0fe7fb5 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe42d304a hsi_event +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x0600725e vmbus_driver_unregister +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x0d2f65f3 vmbus_teardown_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x264ab84c vmbus_sendpacket_pagebuffer +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x358fafa5 vmbus_prep_negotiate_resp +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x3b9516f3 vmbus_get_outgoing_channel +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x46a417ca vmbus_proto_version +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x538a0340 vmbus_sendpacket_mpb_desc +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x6308c250 __vmbus_driver_register +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x71d76f46 vmbus_recvpacket_raw +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x73121afc vmbus_open +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x772cb21e vmbus_set_sc_create_callback +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x7d74e1aa vmbus_establish_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x8b2bed10 vmbus_close +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x9eb026ad vmbus_are_subchannels_present +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xec7e322e vmbus_sendpacket_multipagebuffer +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xf45dd651 hyperv_mmio +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xfedabb1b vmbus_sendpacket_pagebuffer_ctl +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x6fc0d5c3 adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xd432e877 adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xda5bfa52 adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x25b11528 pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x281a6fc5 pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x3553b48c pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x3c3c4f54 pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x49c85f59 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x538ebe5f pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x54a8bbe1 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x5be843b7 pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x72f1d78f pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x779baec0 pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xc3d59ad0 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf52e1e22 pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x4a6023e1 i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x568ebc87 i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x58e6c687 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 0x739fa434 i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x9c010f6e i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x9ead46af i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xa0abcf85 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xe36cb47c i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xf1268026 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-nforce2 0x942bac5c nforce2_smbus +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x0b7c3cfb i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x8fa735c7 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x27fe6080 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x66c78be5 i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x1d97197b ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x1db18f4e ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x46054ed9 ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x4aa6efa6 ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x739cd06c ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x7d6aaa13 ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x96b77c45 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xb41398f3 ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xb4486633 ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x12aa8199 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x606e121e adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x691db842 adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x6a1e3fe2 adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x79be406c adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xa4d0b0ec adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xa5a1a9ce adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xc0bd950d adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xc6a9d409 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe2b1fe03 adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe3108bb6 adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xfdf89c94 adis_reset +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x06b46d14 iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0798d5c8 iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1bf0a94d iio_validate_scan_mask_onehot +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 0x2a775728 iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2ea3995d iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x39866c7c iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x414ea170 iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x46420b32 iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4dbe0aa0 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5323e500 devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x557f6a98 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5ac23ca8 iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5b946ec0 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5c9f7826 iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x668e05d4 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8e2fe224 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9690cac4 iio_scan_mask_set +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9778575f iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9e70fd0d iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9f9a0c60 iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa0a6e688 iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc642d9ee devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc919a2a7 iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xca1899d3 devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd67dbc8a devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdc12d7fe iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf880a5b7 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf8f96a7d iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xfb3490ef iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xfc1e8b56 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x9621429b input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x2f4edb23 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 0x1283a0fa cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x39a02eaf cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x641ca2e6 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x7442d22c cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xc7dd6b15 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xcb82af21 cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x3b4312e6 cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xb7ba2e47 cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x0ab9a20c wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x43b2e975 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x4501f931 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x569aff74 wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x582baf51 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x878ee2b0 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x97b5d4ba wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x9a30ffea wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xaa68c191 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xca96d8c2 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xcbd04c71 wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xf7715476 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x0fd4b20f ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x1b12ca64 ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x35ee9721 ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x58d5688d ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x58d6209b ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x76809916 ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x8d3d5ff5 ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xca497e25 ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xe11a83ef 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 0x111e2939 gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x1bd0e199 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2a2c82e8 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3faafdb8 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3ffec34c gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x45c475c1 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x60182fbf gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6c5fd30f gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x768245a1 gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x791896f9 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8eff32df gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9c63ee09 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xae196b99 gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xb15ca092 gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xbaa96324 gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd2c621ff gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xeab7a9e0 gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf8ff056e gigaset_add_event +EXPORT_SYMBOL_GPL drivers/leds/dell-led 0x86fd1ffb dell_app_wmi_led_set +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x01810d6d lp55xx_unregister_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x201a3be9 lp55xx_unregister_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x376688e3 lp55xx_of_populate_pdata +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x3fd9f52d lp55xx_deinit_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x7373dc60 lp55xx_register_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x8245d3e4 lp55xx_is_extclk_used +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xbabf0c0a lp55xx_read +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xbb289fe7 lp55xx_update_bits +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xd112b056 lp55xx_write +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xe015b045 lp55xx_register_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xe2dd4e04 lp55xx_init_device +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x749e05f2 ledtrig_flash_ctrl +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x7903e46e ledtrig_torch_ctrl +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 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 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 0x7b488fb1 __tracepoint_bcache_alloc_invalidate +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 0x09f8578c dm_cell_error +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 0x4e9f66ae dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +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 0xc9093f53 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 0xd608e9c8 dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xd87e047b dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xe7a4eeb9 dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xe8e795ba dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xebd06eaf dm_bio_prison_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 0x2724919a 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 0x461536af dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x47cf739d dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x5d7ae626 dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x7812a9b5 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x7c30effa dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x9d67cc1d dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xe2e73ad3 dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x346f0725 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x546b8794 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 0x29989a67 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 0x4f917515 dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x52266b03 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 0x915990f2 dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa8813ad6 dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc66ce277 dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xcab63c3d dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd913e25b dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xdf39fa97 dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf37a3cfe dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfd93482e dm_rh_recovery_in_flight +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0054f69d dm_tm_pre_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x01445176 dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 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 0x1cac81ac dm_bitset_clear_bit +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 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 0x2f74609d dm_bitset_test_bit +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 0x38c75c44 dm_bitset_empty +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 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 0x68fae9d2 dm_disk_bitset_init +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 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 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 0xa0bbbb49 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa13861b4 dm_bitset_del +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 0xa4324fe1 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 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 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 0xe44b4b9b dm_bitset_set_bit +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 0xf475af48 dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/raid1 0x9c7ef889 md_raid1_congested +EXPORT_SYMBOL_GPL drivers/md/raid10 0xe0d46582 md_raid10_congested +EXPORT_SYMBOL_GPL drivers/md/raid456 0xb635eff8 md_raid5_congested +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x183dc450 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x1e8b3249 saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x341ebda5 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x3c8bde60 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x56aac7e5 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x669ddd96 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x7b1e3e69 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x84bdd71a saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x8eea8079 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x972e2ef1 saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x2e40dc05 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x555d62b5 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x5dd07dec saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x92593f13 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xb0be6e34 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xe4e70822 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xf53f6e8e saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x0946e1e2 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x32e5d5bd smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x35cbcd7a 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 0x3c3ae3ec sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x41220cdd smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x4ee211be smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x63222b29 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x6e0ac24c 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 0x818b33a9 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x8e2f00af smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xada3077d smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xafca8a21 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc28da0cd sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc3e7e718 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd4c25ace sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xdc39f805 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe228e3ad smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xeb7aa7c2 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0x9f525971 cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0x17c8ce9a tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0x76f14a67 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x08ed0406 mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x0e04b45c mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x13f9323a mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x20ca8ae6 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x3a98ea16 mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x474f45d9 mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x5d1d2529 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x5f575eea mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x753aabc9 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x76beae50 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x79389d97 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x81368b3e mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x89f0b441 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x93411778 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x9874d376 mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa9f182db mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf74144d7 mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x1db580bb saa7134_g_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x7b1f721a saa7134_s_std_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x81d44537 saa7134_s_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xb7ba2161 saa7134_queryctrl +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xe234dfc2 saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x0720214f ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x1fe1febc ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x27ef259e ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x28e5b68c ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x614efdda ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x6b80cb1a 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 0x7ad36b80 ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0x4f45ce47 radio_isa_remove +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0x53b3be55 radio_isa_probe +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0x56a74811 radio_isa_pnp_remove +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0x98ff0887 radio_isa_match +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0xd230c0bb radio_isa_pnp_probe +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x96375c80 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xbc7e0466 radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x051cd812 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x0d9024c6 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x0f798628 ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x0fa6b5d3 rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1a9e2117 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x2a342179 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x3be1aee3 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x45b80357 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x5b381183 rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x8f675d31 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x91036d5e ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9474026a ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa7726488 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xaeb40532 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc17b9913 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xce849b4a rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe6b544f3 rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf2a445d5 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf3aaf74d ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0x2df3b270 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x3818b0c2 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x5ba2338e mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0xb75e91ef r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0xce96b15d tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x9568959a tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x28854324 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xfaabceb8 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0xf186d20c tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x367ab3b7 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xe91b9531 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x45047379 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x6bf88639 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x2997d80f simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x0ec2f551 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x28404103 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x2ba5f0df cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x30f06fde cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x43bf53c1 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x49cf9af3 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x600e3a69 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x662610d7 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x68f6a024 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x76fda9e6 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x8c75f170 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x925c27a3 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x98134ba4 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb371c1ad cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xbd0fc3a3 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xcd0a6ba1 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe5dfbb18 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf61fa19e is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xfda09afa cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0xb2eb0523 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0x47dee707 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x00620b20 em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x0f99108a em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x218f0d23 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x348ce044 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x549e1d2f em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x64101252 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x74ee8b41 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x779f0a7b em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7d5fe409 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xab9608d3 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xb0606dee em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xb14ede87 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xe4cd402f em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xea08ed5f em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x0642a907 tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x30a5f9c3 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x3139239d tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xf1323d25 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x0183398a v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x01c483a9 v4l2_get_timestamp +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x5e17c530 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 0x88402ac2 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xe5dfc488 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xedaca7c4 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf202e0e6 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 0x221d2fbc v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x36e8756a v4l2_find_dv_timings_cap +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 0x53105839 v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x6976cfe0 v4l2_valid_dv_timings +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 0x7eaf8e7a v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xb0891da2 v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0x33b7cc99 v4l2_int_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0x908df381 v4l2_int_ioctl_1 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xa5228b24 v4l2_int_device_try_attach_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xdbfda013 v4l2_int_ioctl_0 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xf06b4662 v4l2_int_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x06ad7644 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 0x207d2273 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x29999893 v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x336452d5 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x504fcac7 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x54aabfdf v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x54e8ffda v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x62f73312 v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8a727678 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa461766e v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xafdb1608 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc0e85ab7 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 0xce26f7b6 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe6d0e5fe v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x088af8b7 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0e39bf32 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1d199d70 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1f2ad7d9 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x38d81727 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3966a548 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x60d4dc0b videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x632c6f3d videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6e550e67 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7307527b videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x777429c2 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7f3e79f9 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x812c2e4d videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x82061c6c __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9347e159 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x96edbad0 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa5ebbc0d videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xbbe988e5 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xbce1a668 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc2d5c540 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xcf1bc3ba videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd9026e2b videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe2d100d4 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xedd58726 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x4843c610 videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x6ea417da videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xa703beac videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x0920e5a0 videobuf_dma_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x0ede6fdc videobuf_dma_init_kernel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x1777b6a9 videobuf_dma_init_overlay +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x22736bff videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x40b99020 videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xa825c75b videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xaf107ada videobuf_dma_init_user +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xd8d3cdd7 videobuf_dma_map +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xe4b74e9e videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xed55f186 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x7874a147 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xd61f12e5 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xf38a3e44 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x013dacce vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x099ab96e vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0e2c28e8 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2678159b vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2923df35 vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2d9c1f75 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2da450dc vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2ee670b6 vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2fc728ac vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x47f3bd1d vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4f7547a4 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x51b9a563 vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x65bdae1b vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6922c56a vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x72c24955 vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x810f44a9 vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8ab83c63 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x91659855 vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x937c2c98 vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9bd2ba13 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9d3f966c vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9d47bc05 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9fa76876 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xac10e71d vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbbfd0fdf vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc50980ee vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc9002061 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xcef9b4f2 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd70590f8 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd8a01201 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xdf2a7c97 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xecd7a0cc vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf5107422 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf5fe1277 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x197d71e9 vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xc60a56c9 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 0xe62e3bab vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x74416238 vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x7813ec9a vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xc4f9102a vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xca0956eb vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0x383f2e66 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0af76a7a v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1d4349b3 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x358db69e v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x367665f5 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4d9c284d v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x544b6f84 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x604cfd1f v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6b8b7f75 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6cdc2ab5 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x70495286 v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7a7a9a1f v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8d232117 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8fdca633 v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x92fe6073 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x98605bad v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc4ffd846 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcc27533b v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd1261777 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd2c56c24 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xdaa0509a v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe8045220 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf4d394cd v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xfb92a6ed v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x03f5e801 i2o_dma_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x121f5767 i2o_sg_tablesize +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x22811d2c i2o_dma_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x4c95818e i2o_dma_map_single +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x670031c7 i2o_dma_map_sg +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x95350fa2 i2o_dma_realloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x9676972a i2o_pool_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xf2fd0ce6 i2o_pool_alloc +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x1028d669 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x259c6c10 pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x282bf35c pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x08395a84 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x0e47a1d6 kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x14e53f0f kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x24dca629 kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x2ed45cd9 kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x2f4f0299 kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x4fc15898 kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x51af4e2a kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x26607f98 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xadc09567 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xed362d84 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x0bc14d44 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x2ca1c350 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x46574663 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xabcf4d60 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xbafc1486 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xea7e750a lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xfae5c98e lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x1bf5a6ee mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x3ddb2b60 mc13xxx_common_cleanup +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x494018a6 mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x5b4fedce mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x60832a0c mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xeed802cf mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x215e5508 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x37ff9259 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x3fe360a5 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x4adfb90e pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x58cb44cb pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x6c9b1528 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xa15fe00f pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xbbae1d6d pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe7cc46a2 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xf0f40b61 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xf52aada3 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x285b594b pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x64dcdad0 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x02aa0007 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x3f92f1b9 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x4c84840a pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x5a54bed9 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xff998a6a 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 0x10e85495 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1bf803d2 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x25342d16 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2d94d8e7 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x50dd8be5 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5fb210da rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x6400ad70 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x7222d62c rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x7232eb6b rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8c2be764 rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa171a499 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa48dfc21 rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa63eee65 rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa8805706 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc192169c rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xddc13cf0 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe2c95081 rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe3a3febe rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf1f9f9a9 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf232ce46 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf9a0755d rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x03c36a8f si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x06ffccc9 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1ae1bca4 si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1ce7cf04 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1fdb85f4 si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1ff020bc si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2c25387b si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2dadcd24 si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3dae5ec9 si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x42e350c6 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x49490226 si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x49c08e35 si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x55d51f79 si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x582d8e81 si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5adb7d04 si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5be5ad25 si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5e67a93e si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x617a012d si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6ba1f832 si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7d77b5d4 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7e740c91 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8577b79d si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8b0f36b9 si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9fb44aff si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa965ee29 si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb6feaf57 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xba153c13 si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc1eb5e16 si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc6a769a1 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe7168f5d si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xed6796b2 si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf37d0b12 si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf99bcfd3 devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xfc3b71b7 si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x2e2a3e44 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x93c93a7d sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xc9e4ab98 sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xd241cf9b sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xfef9bd99 sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x3dda8693 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x45da9892 tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x7f760f64 tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xb5d87257 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x25a945fb ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0x6469aa8d bmp085_probe +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0xa3f06f08 bmp085_remove +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0xc6d7e798 bmp085_detect +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0xf9a43952 bmp085_regmap_config +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x36c59de9 cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x3de41fad cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x5a1ff2d0 cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x9255d97b cb710_pci_update_config_reg +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 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x019193a2 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x276d4c22 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x4f2e0be2 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x9a699715 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xa92800fd enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xe1c384a0 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xea7eb7a6 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x04150332 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x1650507c lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x5749becf lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x9c8a06b1 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x9cada316 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xcb6138fe lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xcd39e7f3 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xed12e663 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x04ffed44 mei_start +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x1037064e mei_deregister +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x2394e19b mei_cl_get_drvdata +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x24751ecb mei_irq_compl_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x2ffa473b mei_cl_remove_device +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x37b1c284 __mei_cl_driver_register +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x4101d7f6 mei_irq_read_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x51bd694b mei_cancel_work +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x52b1aa94 mei_device_init +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x67329a76 mei_cl_send +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x6beda3a6 mei_cl_register_event_cb +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x9e574bb9 mei_cl_driver_unregister +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xb03531c3 mei_restart +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xba5c9814 mei_reset +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xc34d315d mei_register +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xcb439be8 mei_cl_add_device +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xcd3fbcf1 mei_cl_set_drvdata +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xd6260986 mei_cl_disable_device +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xdd02e708 mei_cl_enable_device +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xdfec569c mei_stop +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xf83dfc23 mei_cl_recv +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xf9d7c65f mei_irq_write_handler +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 0x1b628187 st_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x324416c3 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 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 0x4c498e60 vmci_qpair_peekv +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x4ea2ccbc vmci_qpair_peek +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x50a255c9 vmci_doorbell_create +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x612df9ae vmci_qpair_detach +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x677c36d0 vmci_is_context_owner +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x69ef87ff vmci_datagram_destroy_handle +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x6bfa603a vmci_qpair_dequev +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 0xbbcb4c48 vmci_qpair_enquev +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xccbb53d1 vmci_doorbell_notify +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xcf5ed7ef vmci_event_subscribe +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xdac94780 vmci_qpair_get_consume_indexes +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xe7e7c107 vmci_doorbell_destroy +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x22c6cc03 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x2b8bc080 sdhci_disable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x3a20aa85 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x5bd09247 sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x6a893dd9 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xa36305ee sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xa61703e0 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xdc19c6a9 sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xf2aa0198 sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xf6fe45a7 sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xf95d31c2 sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x14bc4535 sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x19e99682 sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x3b55873a sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x567dd0f7 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x74ad3ee0 sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x7584d461 sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xb656ab9b sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x60aff0bc cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x9db1d52a cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xa298f0c2 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x0373d183 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x7d219a53 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xf08a1e05 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x13e22159 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x6a48a431 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x82dbe577 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x9d369222 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x03c42556 mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0601a5b4 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x15f76bb6 mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x19257eed get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3347478d mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x377e3a0c unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3db504a5 mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5129e698 mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x53a43df2 mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5c3630b4 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x649b59ad mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6681243d mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x77dbace1 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7a34ef35 mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x86e13d85 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8d0a4c41 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x910bfb29 __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9a0e87c4 mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa00552d9 register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xabaacd26 mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xad685d41 mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xaf42902d mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb78bbd8b mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbd73f01d mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcf1ac68c register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd427ee84 mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd467946f mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd87f18b0 mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdb9ea620 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdcc65770 mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdfeadb03 mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe2570513 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe596385b get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe9334da2 mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xeb95eda5 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xeca7a054 mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xeeeb2455 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf1ed1346 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf7e91381 put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfaaab1d0 __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfccb2e30 __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x30236f78 add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x52c3253f del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xe75a484e register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xf0e92863 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xfd838bb5 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x9dbad808 nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xd0669617 nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0x0a6ba1ff sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x83bcf048 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xe109da9a onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x131857be ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x25120bf8 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2ace7693 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 0x5831fe83 ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5d0c9bbc ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6450bd16 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x974d9142 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xaf549335 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc4306283 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xddf4121b ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xea2a4855 ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xeda2c8bc ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf44b9210 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x80351d15 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x853aa8ec unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x8b13ead3 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x96c4ee91 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xa6fe6ab8 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xe50a5bf8 c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x0457cfe1 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x08ad14aa can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x15484d80 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x221d9ce2 devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x31bad6bf can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x4eed3376 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x69d8b0e2 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x6ad3b567 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x7af46024 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x9516a637 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x95d9b338 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x9e0c49bc can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb6326af3 open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xdad86c1a free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xffc75a03 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x08fb1e74 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x68ef3864 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x9a25356c unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xd873ed8e alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x34d3106b free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x4ab503b9 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x82bb1414 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xac1ce7d3 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x109773c0 macb_ioctl +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x4906adc1 macb_get_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x502a7fbf macb_get_hwaddr +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x59a2f51f macb_set_hwaddr +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x6cc9ef91 macb_set_rx_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xd9b76ff4 macb_mii_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xf390fe5e macb_ethtool_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x02e44aaa mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x08ad5bf8 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x08b65ee6 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x08ba9d81 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x096f15f7 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x09c52ee9 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x12de30be mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x163911b5 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1ab5c1f2 mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1aea07b3 mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1fa722a6 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x20fe0ea7 mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x22db4d9f mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x27032422 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2f2bbdd8 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2f3cbc5d mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2f6ff59c mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x305e61cf mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x30746086 mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x30e5ce18 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x39c62d79 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3b4351fa mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3bf9f12e mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3f92588e mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x40a8aa60 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x428eae33 mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x42b9516d mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x46a45e81 mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x49235bf5 mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4fef1915 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x503d65ee mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5134175d mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x521ad34c mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x540e4a03 __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5b8faf69 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5bed0748 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5c480a67 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5d96f35b mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x60f4accc mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x617865eb mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x695e72c1 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x69e3f23e mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6dfd59d5 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6f6941e1 mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6fdf6a54 mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x70b1ff6d mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x738df26f mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x745f4fcb mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7682c445 mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x78423f8a mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x799888fe mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7a8338de mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7cb31631 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7d00c260 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x83cfc4a2 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x88093c70 mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8a2f8abf mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8b48f072 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8c8a5bb3 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8cf39a3b mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8d9e44b3 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x95316cd1 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x97e4105e mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9bc02d99 mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9bca70a5 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa8b2a517 mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa8b59618 mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaa9a8b98 __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xad44bc04 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaf235c59 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaf6dfba8 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb390dc95 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb7bf5e70 mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb7c43145 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb96ae54d mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbb25aa38 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc068069e mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc0905fb4 mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc0a5a245 mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc1b7a52c mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc1e679ee mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc221689e mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc7dd33a6 mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcb943fcc mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcf8341e4 mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd02619b4 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd5624c10 mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd56ccf7c mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd6ce07da mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xda555880 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xda9f908d mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdb766a8a mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe12c4c2c mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe17e65ec mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe6dca818 mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf1e7a703 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf37051df mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf3784356 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf6549f49 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfa11d6da mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfa9c5950 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfb9dfdac mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x038af6ab mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x08754383 mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x15919e65 mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1935357c mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1dc889ff mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3aa76956 mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3ff6c52d mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5f5e7eca mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6daa518a mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x889b7edb mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x95429ee0 mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa6a853d4 mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xab499768 mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd6c4ef56 mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe0132220 mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf1facd25 mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf35f954f mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x385fe636 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xabd86f7f macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xb6c6a666 macvlan_start_xmit +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xd07039c8 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xd640845f macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvtap 0xaa7dff4c macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x887df7f1 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xa32b821c usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xaecccf20 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xffc9e1c9 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x1285bb0d cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x334152d8 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x564cc48e cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x57d10b75 cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x5ee9fb76 cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x606f158f cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x98301fb7 cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xdd7f3da0 cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x13463b74 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x4268b512 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x8d2469a7 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x9772a5ba rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xc8d8d53d rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xcb50f118 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x01726c06 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x153a19b9 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x23b970c7 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x27d184f5 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2c5245ee usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3167ef52 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x38b92979 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x396a5c34 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3f281e14 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x40aa065c usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4a6e404b usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4e98bef1 usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4f19f156 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5a13ab88 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6002ac97 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6dc80365 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7eddf2f5 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x80ae9dce usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x859604fd usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8ba1603c usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9d177e16 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9dcdcd60 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xaac61cb9 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbb389e4b usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc39db877 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc516e503 usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcc16d6af usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcea15625 usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd568add0 usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xda472dad usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe33a0f45 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf44d0c7c usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x24a33419 vxlan_sock_release +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x292fa9b4 vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x4e2bbb52 vxlan_sock_add +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xc13066f3 vxlan_src_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xcedb9989 vxlan_xmit_skb +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x284e7eb7 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x2e8e548f i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x369013f0 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x548d11b6 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x6faeb4ca i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x70d269bd i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x745223e0 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x770b04cb i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x7a0caff3 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9d0bb317 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xaa4f889e i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe4ffd565 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe55c4458 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe56f6b83 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe65ede9a i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe8fc61a3 i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x4fdce322 cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x7bc9ded6 cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x836948e8 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x8ee171a1 cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x1344d43d libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x6a061f37 _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x6e2f60b0 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xa096e2ba il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xa55eeb57 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xea679648 il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x051a5fc4 iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x17611b7c iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1882de15 iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x19aaf83a iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x215daec5 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2b0d9953 iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3b1fa7c0 iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3e0dc6e3 iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3e3fea17 iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x444a3a88 iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x4d197b03 __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5d0a212e iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5f952a47 iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6101306b iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x66bd1f0a iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6d0f04a7 __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6e9a3111 iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x79c1d214 iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x7b10ebd7 iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8ba3ca87 __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8c5d5ab3 iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8caceb62 iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x99c12dd5 __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xca2412b5 iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xcea0b361 iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe87fc833 __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe8e051b1 iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xeaf87b01 iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x172270ec lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x18686ebc lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x272eaec9 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x27becc8d __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x44798928 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x50645b13 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x7d4f54c6 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x87f6c9db lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x91c7fb7c lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x9552328f lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x9a2609c9 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xa47ee824 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xaa24ad76 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xac9500a2 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xcda2bb01 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd14b64d7 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x3439f296 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x50a25605 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x7a731c57 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x95b4e482 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xaa86e760 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc529e0a8 __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 0xd0543743 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xf6a96682 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0x3b93497a if_usb_reset_device +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0xf9eb26cb if_usb_prog_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x42bbdc82 mwifiex_deauthenticate +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x4947e701 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x4c0c6292 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x4e28a285 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa07a0510 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xade21a29 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc801cf87 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc893c4f5 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd58afc96 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xda770079 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xde981872 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe780370e mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xeae8858c mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xeb07d768 mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x10e892fc p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x1b65e5b3 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x2639bc24 p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x5178d3dc p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x9553c54f p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x9ca6ab8a p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xb4f252eb p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xd89f4a8b p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xe3ce00e1 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x07f34eaf rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0908de13 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0be6ba0c rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1559cd9a rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x23631009 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2602295b rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x290a1281 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2995126d rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x31e49e05 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x33dc1a6c rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x36aec875 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3ca9ce63 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5138d339 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5756fd7a rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5814870a rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5fce9dcb rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6aa33f4d rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7032b99f rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x760b1d30 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x77e5347a rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x88fbd11d rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8a00ea69 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa008a382 rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa183b9bd rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xaa14cf6e rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xab1d8831 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xaebe8f75 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb2b85237 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb7dc18ed rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xba80612c rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc52d44a2 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xccf09b04 rt2800_get_tkip_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd4c32390 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdb90ce77 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xeac2212f rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xeb951dd2 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xef94e332 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfe05f04f rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x16db64c3 rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x37162681 rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x3a18a6e3 rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x4ef00d45 rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x6789f03d rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x7ae0eeca rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x883f9e74 rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x8ec26dd4 rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x96ceea3f rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x9bd60280 rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xabfd4ee4 rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xba28f4f3 rt2800mmio_enable_radio +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 0xffb339a6 rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x05d3f830 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1b99a995 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1bda1f97 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1bdd4a80 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1ee09824 rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x25180899 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x25b042c3 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x29159a4d rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x36af5030 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3cba3b4d rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x42360fcd rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x429af59e rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x46123207 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x468763fd rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x46917916 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x478da9a9 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x49616898 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x49a90bf4 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5ab859ca rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5f474d5f rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5f8ffe98 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x909fd88b rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x981b53b3 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x998de1b9 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa012d787 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xaa5a2700 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb39fd286 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb8425f1c rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbb364a72 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbb751c67 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbe9df90f rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc0dcfe65 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc5ce8da4 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc6aac811 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc94a2634 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdc9701a3 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe1922731 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xecfc5e55 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xed432696 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf0dbafe6 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf3b976c9 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf4cf6e7e rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf737b423 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfac550d7 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfe43b7fc rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xffc89b60 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x2a0ea75b rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x48b6c023 rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x565b2a76 rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x918551cf rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xe39506f6 rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x0ed75bc7 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x2732e522 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x6275167b rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xb440b34b rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x27cbe845 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x413a1f69 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x4571755d rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x4614e6d6 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x5081dbf5 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x62308652 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x63c0a141 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x69bba0fb rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x6af8cd8e rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x9fd5ea07 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xa6ccec3d rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xa895a375 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xcbd33746 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xd8d149ec rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xea69d064 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xeeadf578 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x223ed442 dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x312abfc4 dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x530a5280 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe74c930f dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x0438254c rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x0e8fa73b rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x3e768ad8 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x5089c0b1 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x5a67c567 rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x5b423d91 rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x5ffa08fb rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6aa322c9 rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6c772eb9 rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6fee3a6c rtl8723_phy_set_sw_chnl_cmdarray +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x8b058e03 rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x9fb64f80 rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa2c0a7e2 rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa3fc39a9 rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa6e37c66 rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xaf4d6d94 rtl8723_phy_calculate_bit_shift +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xb2b9403f rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xb6617caa rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xb7121aa9 rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xb9d95f22 rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xbf2aad9d rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xc74bca2a rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xccab8980 rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd15e5a84 rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd4ade7cf rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xdff1e835 rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xe1a0de71 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xe453ee38 rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xe7423c54 rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x1bd25537 rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x2304abc8 rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x241dedc1 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x3bad8cfe rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x5f37739c read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x613e9f2b rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x68d51acf rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x7150e270 rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x8c99e847 rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xa5385bef rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xab5e2260 rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xaf3ff54b rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xb47e2fe1 rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xc70fac57 rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xca1cc222 rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xdc885bb4 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xefb440fb rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf1798792 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 0xfc738803 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x047f8e0c wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x8f222565 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xc9c14436 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x018a63f2 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x041c4c5d wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0a6e7be8 wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0bde1922 wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1517bd00 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x24892d52 wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x26862cc9 wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3063b574 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3079587e wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x307ed5d1 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3557dcc1 wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x373a44df wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x520e48c3 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x52f3cd3d wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53ff9913 wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5e3387f6 wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5e3b2b50 wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7a033c1d wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7eee1efe wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7f7b2123 wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8210a2fc wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8bd97000 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8ebbc645 wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x91da5146 wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa54f0e00 wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa73cd6b1 wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xada8a239 wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xaff3b4fb wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb52ce2c3 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb80e3a97 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xbbd99e6f wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xbd3e0adc wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xbdc232ea wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xbfb2be1e wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc1c2c388 wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc9d1d9da wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd18196ec wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe3c89be2 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe5a2b440 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xed39f61b wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf4ee13b3 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfb0f810a wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x012b31a9 nfc_mei_phy_free +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x08ae3e97 nfc_mei_phy_alloc +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x3b577068 nfc_mei_phy_disable +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x741025a3 mei_phy_ops +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x8b4e7b3b nfc_mei_event_cb +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0xe82e19a5 nfc_mei_phy_enable +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0x24dd6555 ntb_register_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0x30934216 ntb_transport_max_size +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0x32537aca ntb_transport_link_query +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0x3d54dbfc ntb_transport_tx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0x436098aa ntb_transport_link_down +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0x77ae9ef1 ntb_register_client_dev +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0x82e6c13d ntb_transport_qp_num +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0x9c992c8f ntb_transport_link_up +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0x9d2611b7 ntb_unregister_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0xc270dc24 ntb_transport_free_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0xc37d9036 ntb_transport_rx_remove +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0xd40e7a02 ntb_transport_rx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0xf53fc25a ntb_transport_create_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb 0xfe897ddd ntb_unregister_client_dev +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x08f361a6 phy_create +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x08fdf187 phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x09f1a9d3 phy_init +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x170c4802 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x43b7029d phy_put +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x54f2f297 devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x7402e1e5 __of_phy_provider_register +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x77a00b22 devm_phy_destroy +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x902f4667 phy_power_on +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x94cddb96 devm_phy_create +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x9add069e phy_get +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xab5a445d phy_pm_runtime_put +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xacd6f002 phy_pm_runtime_allow +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xaeb8db0c __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xbd08ff99 devm_phy_get +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xbecd0976 phy_destroy +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xc1c9e72c of_phy_provider_unregister +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xc75a2264 phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xcc9b9bb1 devm_phy_put +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xdb5a2835 phy_exit +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xe1ba45a1 phy_power_off +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xe2dc35e8 phy_pm_runtime_get +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xea04955f of_phy_simple_xlate +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0x801573e7 asus_wmi_unregister_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0xcdb3662a asus_wmi_register_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_ips 0x46809fa9 ips_link_to_i915_driver +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 0x0aad6e54 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x536bfa7d pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x8d8125b5 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x5c138893 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x717af6fa mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xf1d13e19 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x1a88aab4 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x3ab85e62 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x893f230d wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xbee757e3 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xdb74518d wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xf1b98cf3 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x6be963a0 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x05090a41 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0555a7e7 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0731c3e0 cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0b79db1c cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x10359f21 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x18285573 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1b4f53f0 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x23344ec2 cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2ce47cec cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x32d971de cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3683bfd2 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x37d80b4b cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3ff8f33b cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x418e70a5 cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x45f6dc75 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x466e2d29 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4d7ed1e6 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x589aac57 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5ff09590 cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x61b47095 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x63cd02bf cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6477d656 cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x66f92618 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x68827e45 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6cfe13a3 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6f807832 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x70ffb6d5 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7d581cbd cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x808a7666 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x969ceaf3 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9965f6c1 cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9e9f03bd cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa383c9e6 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa5c3ad06 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa664471e cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa7bb22e8 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xaf622cf7 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb4d37a1d cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbabadf27 cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc69cc291 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe4835aa0 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xed26aec6 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf9672d31 cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfc8aea7c cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x062c051b scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x0c871ce3 scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x4434ef97 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 0x5fbefd1a scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x6856ad3f scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x856ba023 scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xdc31bafa scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x01cf521c fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x05a88874 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x17fa72df fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x34de7af5 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x40a1312b fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x46d35868 fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7089164e __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7b55cbda fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7ef86fce fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x840a0f5e fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x97b7dd1d fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xafab6d30 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xc570eb13 fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe27ffbb9 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe29bb237 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xfed3e1a9 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x15d10a41 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x1d7688be iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x8a902369 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xc451771b iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xdec1bca6 iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xdfdaff7b iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x01075382 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0500e0c8 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1ad7785a iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x237753ec iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x24c65822 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x27eefd79 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2bdd0d10 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3673e5c7 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3af77b00 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3b266123 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3b33e7dd iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3d0c9767 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3e58ca7e iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3e72ea6d iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x456dcf55 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x46c62950 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4715d08b iscsi_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4db3ace3 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x50f20a27 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5491cfdd iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5e710172 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5ee24a8c iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5eedbc60 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x723812ed iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7505579d iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x78ec03c1 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7948e1e6 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x79e76af1 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7bf28a3f iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8a037c38 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x97b0d81d iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9d964c25 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa60cb5b1 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa7daea57 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa979dc74 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xad3e2c90 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc368be6b __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcb51e9f4 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd445076b iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdccf0694 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe6e7b656 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xeb916f1b iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xeefd176d iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf3a6eb26 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x0ba19b39 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x0d204528 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x0ed717d7 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x4069beba iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x4914edcd iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x526df2c8 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x529de680 iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6198ba85 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6d8c69ba iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x7603ec9c iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x83da5197 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb94c5758 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb9b91238 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xba48bb1c iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd6e83daf iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf3aa5c2f iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xffaaae39 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x035bb766 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x05bfa2b5 sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0ee9a10c sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1d53c289 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3970aff2 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3e68b398 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x56e56f84 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x76b063f4 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7d407072 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8e9b4840 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x954bd01d sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x9b24959b sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa23229a1 sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa4981bcd sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbb534c24 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbc6849a8 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbd02973a sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc508ce2d sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xcc2d2a61 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd9484b3b sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xda8a8269 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe5d2f2b6 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe9342383 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xec509138 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf07f1068 sas_change_queue_type +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x7ead002a srp_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x82086f13 srp_iu_put +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x936a11ca srp_iu_get +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xc086d4dc srp_target_free +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xc1e77d37 srp_cmd_queue +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xc512b58e srp_transfer_data +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x258e98ba scsi_tgt_queue_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x2b7e6710 scsi_tgt_alloc_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x5227a9fd scsi_host_get_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x71127b60 scsi_tgt_it_nexus_create +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x8203ebbd scsi_tgt_cmd_to_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x92e2eb85 scsi_tgt_tsk_mgmt_request +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x9ab01dff scsi_tgt_it_nexus_destroy +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x9fcf1c74 scsi_tgt_free_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xcc4ba019 scsi_host_put_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x007c024f iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x118daaea iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x13096726 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x18f3495d iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1da599ad iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x320225e0 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x38e73bd0 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3ae36362 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x50bfe0f9 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x561cbbf3 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5745abbf iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x59e2571f iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x60a51c0c iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x66ff07b6 iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6de7bea2 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x75ac0af2 iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x799d1795 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7af444a2 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7f55e3f4 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8735a4b1 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8b20ad04 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9578f8a5 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x96e989c6 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9db72ce0 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa299675b iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb675e191 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb85295f0 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc08a31ec iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc93fffe1 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcb6de2ee iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcbba77e3 iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcf6ddda7 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd0a711b7 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd66db85f iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd7d8808a iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdcdcd700 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe5245f28 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf519f80d iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf8969f21 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfee0248e iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x766ae093 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xc6fabc86 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xddac4f20 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xe85d9670 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x0a5b1241 srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x4f3684de srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x858ead70 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x92b514c7 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xc1fe29a3 srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x38b7fae7 ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x8693c467 ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x95bfb404 ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xbda96609 ufshcd_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xeb96756b ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xee1970bd ufshcd_suspend +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x011bff43 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x1d2e01b7 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x48b50d4b spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x4efc9780 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x7fee22f4 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x5bd36001 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xa755cda5 dw_spi_xfer_done +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xd872d60a dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xd9fcff2a dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xe778083c dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x29cd2ddb ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x08948099 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x094017d7 comedi_buf_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0addd131 comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0d756c5d comedi_pcmcia_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x19e6979b comedi_buf_memcpy_from +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1aa24551 comedi_pcmcia_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1e66072c comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x25766790 comedi_pcmcia_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x28684365 comedi_dev_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2b1f33db comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3269ef6b comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x35efb217 comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3af6d66d comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x46bc21cd comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4a064e29 __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fbacb86 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x51484e76 comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5333f6b5 comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x56720a00 comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5e68567e comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6075c805 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6addd462 comedi_pcmcia_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6b1ebc44 comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6fdbef11 comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x71465d28 comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7174e35e comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7738f408 comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x78dc6e79 comedi_error +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7bb6f0a4 comedi_pcmcia_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7e3c12d0 comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9538ca4d comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x99f09ea5 comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa0060422 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa0395a3d comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa12b8302 comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa4682268 comedi_buf_get +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa490de92 comedi_to_pcmcia_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa7b34145 comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb679cebc range_0_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbb52fc7f range_bipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbdbe75c6 range_unipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbfd20cfa comedi_buf_memcpy_to +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc583b169 comedi_pcmcia_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xcb9869a3 comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe0a81f79 comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe76d10dc comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xec9dda2a comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xee1bfe86 comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf0353757 comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf398b6fe comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf3a26b7e comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/8255 0x142edf81 subdev_8255_init_irq +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/8255 0x3362dbee subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/8255 0xf69140c5 subdev_8255_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x161eb235 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 0x113e06a7 amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x9721bf5b amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0xbb140035 amplc_dio200_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_fc 0x816e1737 cfc_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_fc 0xabb72032 cfc_write_array_to_buffer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_fc 0xd2968b35 cfc_read_array_from_buffer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x864239c7 das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x0139dc2b mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x0f2dd40b mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x21a47ff5 mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x2fd67af6 mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x3291b2b1 mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x33bdd323 mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5ff4ca8f mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x6a597136 mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x75e7719a mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x7ecbbe44 mite_setup +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x86cd5343 mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x87d660d4 mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x9115df6a mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x9896ff3d mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xa1025725 mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xa36698d4 mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xb4c88548 mite_unsetup +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xbb89fe90 mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd34428ad mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xedfb3a78 mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xf0dd209b mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xfaafeb81 mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc 0xe429fc7d labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x423116b6 labpc_init_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x745150fa labpc_drain_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x920f159f labpc_setup_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x9de9bddd labpc_free_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xb44e02e1 labpc_handle_dma_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x0b571738 ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x601637cf ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x6240d6d9 ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x896d1122 ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x8acd76fa ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xacb43f81 ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xbc653b51 ni_tio_winsn +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xd3858a3b ni_tio_rinsn +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x0954af5a ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x4a417c10 ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x5879a720 ni_tio_acknowledge_and_confirm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x88e3efa6 ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xea37ba60 ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xff1ee7ff ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x071759bd comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x142768c2 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x488a707e comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x5307f6f0 comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x9214db23 comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x92dd5e43 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x9a8d99a9 comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0x1b90c53d dwc2_hcd_remove +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0x2206b003 dwc2_handle_common_intr +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0x278b3024 dwc2_hcd_init +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0xb05a818c dwc2_set_all_params +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x1a1b5249 oslec_flush +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x2feda75b oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x3227a28e oslec_snapshot +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x7dc9dddd oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xb2c66001 oslec_create +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xc8b5a524 oslec_free +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xd370f679 oslec_update +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0xb657624c adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/rts5139/rts5139 0xbd5a0e51 rts5139_usb_ids +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 0x2fbc9bf4 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x353cea36 spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x37455e2e 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 0x44a47668 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x577ea6a1 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x57ce092c spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x5f23a9c8 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x6480b6b3 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 0x9e5a462b 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 0xce56e8c5 speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd1b551a2 spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd6ae9792 spk_synth_flush +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 0xf7945159 spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x112e6ca6 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x2828c3cd usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x28326198 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x2e4ace8d usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x3f971aa7 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x6ceeae78 sockfd_to_socket +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x9bf5846d usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xb969b2a1 usbip_start_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xbb3967d9 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xc8623648 usbip_event_add +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xc96772e2 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xd3e2b9c6 usbip_recv +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xfa166cee usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x07c96265 uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0x2e22f5f9 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xfb40c226 __uio_register_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x439549f7 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xe130cd75 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x26d631d7 ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xe716b5dc ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1172d1bf usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x13123170 usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x23ff1c25 usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3a281a98 usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3e266958 usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4830dbe7 usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x54c59c37 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6500b1ff usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x71df52cc usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x73e416d1 usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7704c1c7 usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x82f777f7 usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8a18a10a usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8ab1f0b1 usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8b7e6afa usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x90a5dbc7 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa8fb2469 usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb697f007 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc770865c usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xcc3f319e usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xcd7e0ab7 usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd76fa25f usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd85d48f9 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe7f3799b usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf3574738 usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf6747aa0 usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfe7c152b usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0x39b0764b gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0x8e27d6de gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0xe03a2fea gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0xf1981607 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x1de6d0a3 usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x26d83941 usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x2a97af6d usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x589bb235 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x9fa2e78c usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xa83401ce usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xc6cc1038 usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xd97c64ff udc_attach_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xdaf72880 usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x0490e810 fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x0a5230df fsg_common_set_nluns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x141fce2a fsg_common_remove_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x1ccb58f7 fsg_common_set_num_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x2d10b6a7 fsg_common_create_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x51707c29 fsg_common_run_thread +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x5a0ca27a fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x6acb4179 fsg_common_set_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x7e26d4a5 fsg_common_set_sysfs +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x99023bfc fsg_common_put +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x9a0221c7 fsg_common_free_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x9dc025a5 fsg_common_free_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xa46e6443 fsg_common_get +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xd3ae3b65 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xd468f882 fsg_common_set_ops +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xe4d1591e fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0xd72d4e47 ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0xf16b8f9f ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x05f403f4 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x2e9a068a usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x2eeb6545 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x31bf1a40 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x34d5272b usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x626bd74a usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xc8400d5e ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xcf09585c usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xd3c2c92c usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x7f0ce9c2 musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/tusb6010 0x01e0cc6f tusb_get_revision +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0x45aecb48 usb_gen_phy_init +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0x495063fd usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0x5b803897 usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0x114c3673 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x4d49b641 samsung_usbphy_cfg_sel +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x577e1933 samsung_usbphy_rate_to_clksel_64xx +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x88dde5a8 samsung_usbphy_set_isolation_4210 +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0xd7d5905e samsung_usbphy_set_type +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0xe9853678 samsung_usbphy_rate_to_clksel_4x12 +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0xf9887e7d samsung_usbphy_get_refclk_freq +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0xfc48fc31 samsung_usbphy_parse_dt +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0xccc3c8a6 usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0aa84fd9 usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0b14d739 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1b88cdc0 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x27816589 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4b54bbd0 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5243f308 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5764b4b5 usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5cfb3452 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x636ac216 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x85ca386f usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x948bd0d3 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x99693339 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa725ae72 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xad0c8b67 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xaff6d31e usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb989734b usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd422675f usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd990df16 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe069d96d usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe67905f7 usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xeadc4dd1 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x24515886 usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x350cb08c usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x39e2e13d usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4b3f31b5 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5b5062ec usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5c2441a2 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x610b9d3f usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x65c1233c usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x681f5e5b usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6b932de6 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x78d3797a usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x832096b9 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8c606c5e usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9b43a163 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xaafc21e0 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xac985f3e fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb0c9cacd usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb7d79476 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xcf77c802 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd21a6480 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xeec21d5c usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xfc16d711 usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x3625a355 wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x4b8308d8 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x55d772af __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x747a3dbe wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x75cc808e 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 0xe1e3cf9c rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf4654c3f wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x00ea1189 wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x2b832349 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x360b2005 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x46390e8f wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x46d9a3c8 wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x4fd135e1 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x675ef0d5 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x9950062d wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x9ec8666d wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc17745bd wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc4d3e3c6 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xd13db760 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xd9f77ac7 __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xea013ace 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 0x11985701 i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xadbe519e i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xbf63b1a9 i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x17261988 __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x3ef4059d umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x5ae81fa7 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x7a3b5eaa umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xabd436d1 umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xc82c1faf umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xd86f8323 umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xe63f42de umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x061edfc0 uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0a5841f9 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0a8e071d __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0b8aad57 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0f6c4dad uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1c8b6ec4 uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2aa11d32 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x31fc7d2a uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x35a403b4 uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x48fe1687 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5a4054f7 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e4bc088 __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x63073ab8 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x676e4f1a uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6da107e0 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6edd4e18 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7023490c uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x754b34bb uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7c75f9ca uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7dcfcd23 uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x83e43ae9 uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x84d08717 uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x874152e5 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8f901625 uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa22720c1 uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa6c979b1 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb3d33ba1 uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb5d322a4 uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbc8c5f7a uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbecf15bd uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc26c4330 uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc306ead9 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xce042b17 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd1059dec uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd9afbc1f uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe1716f06 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe1ebcbdd uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf240afa3 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf8011fb8 uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf84a7a3a uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfdff0bf6 uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/whci 0xc955940d whci_wait_for +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x5916abcf vfio_del_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x60e522cc vfio_group_get_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x649757eb vfio_device_get_from_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x7bf2d0a2 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 0xc4913442 vfio_group_put_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xe887261d vfio_register_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xf172dc0d vfio_add_group_dev +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0a4ee667 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0d4bb513 vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0f325f60 vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x21adc312 vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x45610f57 vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x45c2b736 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x46f25b6d vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4dc8a975 vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5517a072 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5b6cf5f7 vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x64bc85f6 vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x775f164e vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x78fcfcbf vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8c612039 vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9213a9f8 vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x99bb8e06 vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xabf1202c vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb037b5f4 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb6f15515 vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xbe6e102b vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc6589f34 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc79af7b5 vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc7a53b3c vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd30f8dc1 vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd6a03a80 vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd6f85d35 vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xed72deb1 vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf32e0917 vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf4ca2dca vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf8384f46 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x1d8a8f1a auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x4f22f84f auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x60c0a8f5 auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x6b739999 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x7019ce15 auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xa100db51 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xaa34143b auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xb4eec661 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xbfb15f4a auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xd2e4519b auok190x_pm +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 0x110570db ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x1c6291a7 ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x2d76fc0b ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x5ea7aa55 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x99555fe0 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x9cee7183 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xd2c6c0f1 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/fb_ddc 0x1f75f9ce fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0x11f8f8c6 fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0xa14bf41b fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0x2a693e74 sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0x99b86e71 sis_free_new +EXPORT_SYMBOL_GPL drivers/video/vermilion/vmlfb 0x016e6c20 vmlfb_unregister_subsys +EXPORT_SYMBOL_GPL drivers/video/vermilion/vmlfb 0x90c018c6 vmlfb_register_subsys +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0x22a7af24 viafb_dma_copy_out_sg +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0x292da7a2 viafb_irq_enable +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0x30cc9311 viafb_request_dma +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0x31469540 viafb_pm_unregister +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0x3a939ad2 viafb_find_i2c_adapter +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0x79e6190a viafb_irq_disable +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0xb4f863e6 viafb_pm_register +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0xcaefb732 viafb_release_dma +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0xfff2dfd2 viafb_gpio_lookup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x1b9c7f83 w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x45d374de w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x71a0fea3 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x969c4441 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xb75688b1 w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xd6dba624 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xe00a7e90 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xf091e0dc w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0xf88a5934 w1_next_pullup +EXPORT_SYMBOL_GPL drivers/xen/xen-privcmd 0xa20b992b xen_privcmd_fops +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x3aea60d0 dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x84975ab0 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 0xf6168ab0 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x097cc854 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x3d19a924 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x4c68554f locks_in_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x760b9514 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x78d443f0 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x79bbb6b4 locks_start_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xc9163313 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xcf3925db lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xd1a613fe nlmclnt_proc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x06d288d9 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x09958371 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0b9121ec nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0cda10aa nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0d2bbcf8 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0db36af6 nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0fef210d nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x109fa10d nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x115aa054 nfs_put_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x12fe8763 nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x13bbd3d5 nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x147291fa nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x149add38 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x150eeee2 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1672da47 nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x172e9200 nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1838d0bc nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x19ee205a nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1b057801 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1ba92525 nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1d2ec639 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1f08f202 nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2134722f nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x24688b2a nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x25cda5a5 nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26995a51 nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2834d65e nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x292f4d33 nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2ae0c5d5 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2b035d66 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3578c798 nfs_pageio_add_request +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x35d420c3 nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x38664981 nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3b66b699 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3bebd489 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ce52da9 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3dbc72c3 nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4151dfa9 nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4303c09b nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x44439a01 get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x45b85798 nfs_pageio_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x49bebb06 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4a25c496 nfs_generic_pagein +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cd3b2d4 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4d188061 nfs_file_splice_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4f23c770 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x552306e4 nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5af99e32 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5b882829 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5d58f662 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6034ed4e nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x620833c3 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x626f2d79 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x641a7356 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6bed8b0f nfs_initiate_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6f412972 nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x71745598 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x72cbfa4d nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7302d6a9 nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x78677b27 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7a3d9113 nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7f1fa5be nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8166052f nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x84b63f2e nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8814b875 nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x89bc5a64 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8ec9fa4c nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90445df7 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90ba7043 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x910ec6e0 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9223c866 nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x92446e68 nfs_initiate_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x98ec10f8 nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9af372f6 nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9daf34a2 nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9e733bad nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa1253724 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa61fc399 nfs_server_insert_lists +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 0xa9b1e3a6 nfs_writedata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaa0e0b45 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaaa14361 nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xace25b83 nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xadc18552 nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xae12c2ce nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaf7f4a72 nfs_readhdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaf9eb4a9 nfs_setlease +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xafd88c4b put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb0eb9bb2 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb25018f2 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb70ad3a3 nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbad1a526 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbb230ce0 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbbb5dbde nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc02b0815 nfs_readhdr_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc287586c nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc33a8223 nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc514c79b nfs_writehdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc679c053 nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc975cc70 nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xccb4f3c0 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xce961a58 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd00beadd nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2f37f73 nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd5673a81 nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd6bb671c nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd8a74653 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd921aaa6 nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd9ba78ff nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdd2af42a nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xde372b03 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe257c998 nfs_writehdr_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe2e75408 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe3622e7a nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe7fd7014 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe9374d1e nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xea7f630b nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xee957410 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xefbf90d0 nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf0d37427 nfs_generic_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf2788906 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf2d6b292 nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf5f6da4e nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf62ed48d nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb24e743 nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb683496 nfs_fs_type +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 0xfcc8064a nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfdd4ba40 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfebfeb9a nfs_readdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xffdcb1a4 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x01d1392e pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0685d3a8 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x098c60b7 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0d7ff311 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0f3d65b1 nfs4_schedule_lease_recovery +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 0x1aba822c nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1b1665e4 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1ba381f1 pnfs_readhdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x25615eb5 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2d8f2fa6 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x32ac1437 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3b51fcd8 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3e2bfe40 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x41d67145 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4780fd9a nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x49b68a02 pnfs_writehdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5175514c nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5c585391 nfs4_insert_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x602a0aa5 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x665fa50e __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6a9448dc nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x734de405 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x73791bce nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7ab73851 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7c5d9dc9 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x89dabe4b nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8bc5ca69 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8c5550ad nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9d946d95 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb25342f0 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc5cb76ff pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc99ca280 nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcee159ca nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd1ce2d16 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdb813e84 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdd1d458b pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdf5bfb81 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe6a59489 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf64cf26d pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf8761122 nfs4_proc_getdevicelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfb3c4642 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x0ca28b13 nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xb71eaf74 nfsacl_encode +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 0x480914ca o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4fdfd8c5 o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x687f6251 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x6c93a539 o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x91bbb70b o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa32911ad o2nm_get_node_by_num +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 0xb8276000 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 0xd45eaf0b o2hb_register_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 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x18b4cd3d dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x42a564f2 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x4c890b62 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x56ea03d2 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x951367ec dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xc0e55d3c 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 0x025e2d69 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0562c415 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x16b2e575 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x5469ce31 ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x7083dbd5 ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x89502fe7 ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xab44edca ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xb4bd060c ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbd32bdd8 ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xdc823ea4 ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe2bd47db ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe417d940 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe7a0f17a ocfs2_plock +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 0x83862b89 notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xd07fb8cf notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x021957e1 raid6_datap_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x05513b71 raid6_call +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x0f8a2742 raid6_2data_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/802/garp 0x5c37da81 garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x8e19a356 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0xa01332c2 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0xac1dd547 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xd4cc7fc2 garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0xea476368 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x31ca18c4 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x3a585aee mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x6615ffb0 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x91ba218c mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0x9b5592f4 mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0x9f97dab5 mrp_request_join +EXPORT_SYMBOL_GPL net/802/stp 0x4e3cd87d stp_proto_unregister +EXPORT_SYMBOL_GPL net/802/stp 0xdc43588d stp_proto_register +EXPORT_SYMBOL_GPL net/9p/9pnet 0x77f19e33 p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0x9cf1f580 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 0x02c2ec90 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 0x434cb0e9 bt_debugfs +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0c006da4 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x11de5fcd dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x13ac0f5a dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1788553a dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x23a33e11 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2f1bc15e dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x389b13e6 dccp_insert_option_elapsed_time +EXPORT_SYMBOL_GPL net/dccp/dccp 0x38de330d dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x421abff4 dccp_sendmsg +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 0x574179a7 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x65c333db inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x67e336bc dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6d28be43 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6ef641be dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x71545d27 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x75251a55 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7be72606 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7fad0ed5 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8d1c2e8e dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8eb68a86 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0x92b76549 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x94263245 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9ea84b9a dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa0ea70d7 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0xab3f58c3 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xadc365a9 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb1e22391 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb371616a dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb63d104a dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0xba346f32 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xba5fd373 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbf0ea872 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xce19be7b dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd70587cb dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xea429481 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf3017e21 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x052863c9 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x423b009b dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x5ad243cd dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x8631e7b8 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x9776724a dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xdb7c1a0b dccp_v4_connect +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x9408d8af register_switch_driver +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xe619698a unregister_switch_driver +EXPORT_SYMBOL_GPL net/ipv4/gre 0x06d29cf7 gre_cisco_unregister +EXPORT_SYMBOL_GPL net/ipv4/gre 0x6d2ba3ca gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xce3433c5 gre_cisco_register +EXPORT_SYMBOL_GPL net/ipv4/gre 0xe22b452d gre_build_header +EXPORT_SYMBOL_GPL net/ipv4/gre 0xe78f098c gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x00b5ba81 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x4dd3e3d4 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x85c1c7be inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x98d55637 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xb3f2fca2 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xeb120904 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x0b8f9c62 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x161552aa ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x2c28d980 ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x2d3e0348 ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x316c50b0 ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x409a7689 ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x5d06f787 ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x6966497f ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x778d932e ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x9cccc8c0 ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xa4bf229e ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xaaef3192 ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xc4aa260c ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf197aab0 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0xd7fd121a arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x85469b43 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0x6d40a921 need_ipv4_conntrack +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x14e00ebb nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x04cfb677 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x72a2a91f tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x8b3a5b87 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xbf3b3b1f tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xc26410f4 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/xfrm4_mode_tunnel 0x26a79868 xfrm4_mode_tunnel_input_deregister +EXPORT_SYMBOL_GPL net/ipv4/xfrm4_mode_tunnel 0x5156de85 xfrm4_mode_tunnel_input_register +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x0538be75 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x91521cd8 ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xa76322b6 ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xb62de274 ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xbbd0f9e1 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x2ee660d8 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 0xa4431193 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/xfrm6_mode_tunnel 0x1bfb9125 xfrm6_mode_tunnel_input_deregister +EXPORT_SYMBOL_GPL net/ipv6/xfrm6_mode_tunnel 0x738d6596 xfrm6_mode_tunnel_input_register +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x097977ec l2tp_tunnel_sock_lookup +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0b58fb6c l2tp_tunnel_sock_put +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0c9f7b93 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x35fc9a15 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3c01ff8b l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x53272d5b l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x56f4ed77 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x57899583 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x72376d1c l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x78d3573a l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x8c87b464 __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc9cf1fb9 l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xcaf29ce6 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd8fac4b5 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xdc106473 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf0005d4c l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf7f2a474 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x5ae45070 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x0037abde ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x0b4a8a6d ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3663a36d ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3722fde0 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x475253dd ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x4bf42798 ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5d38f601 ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5ea52880 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x707ee191 ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x7860d13e ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x7b4b6507 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x85a384c7 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xcb28a372 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xcb7fc5a0 ieee80211_iterate_active_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xffc2a382 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x07fcc5d5 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x25a6b961 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x33879484 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 0x4f610ff0 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x5f62f29e ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6344eaf6 ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6dc40a89 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 0x949e3fdf ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9b0e2da0 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa1803405 ip_set_nfnl_get +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 0xb50b8aff ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xdb70bce6 ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xea647672 ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xef13ebbe ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xef532161 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf3113d88 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xfb9242cd ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xff5df344 ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x41b802b3 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x66623dde unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xb5f862e7 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xe75f318d register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x01f84db5 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x044c1ee2 nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x08362ea9 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x09a552b1 nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0ee6419c nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0fad69e5 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1b02f53b seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1cb581ef nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1f002697 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x26468217 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x268af09a nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x277dd47b nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x28d5a31d nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x34f0ab37 nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x35a5cde1 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x38d9fa47 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3ed375bc __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f726f48 __nf_conntrack_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x423462e6 nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x42d8cb73 nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x454915be nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x47d797ba nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x47dd7f31 nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4a24fd63 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4b058335 nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4dd3588f nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x50da1ccd nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x556735c8 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x569a7ca0 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x57bc3f76 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x59a45485 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5f47caab nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x606fb51d nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x651da532 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x65cb4400 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x664fa401 nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6afebdd8 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e4ab7fd nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x70020064 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x75aba42c nf_conntrack_flush_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x79da0f18 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7a889be4 nf_conntrack_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7cf9da19 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x817dd423 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x888e464e nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8993cc6a __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8b6261b7 nf_conntrack_tmpl_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8facd20a nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9011515f nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9581bae1 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa05fb8e7 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa1ce6b8e nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa7522077 nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaba7035a nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaf52720b nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb34bb6a1 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb4e84af8 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb773c386 nf_nat_seq_adjust_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb7b82b82 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbabbb62c nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc0874220 nf_ct_l4proto_unregister +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 0xc47d8747 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc72de47a __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc8d133ca nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcbe9ab60 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcf0aabaf nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd1307f37 nf_ct_l3proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd45e96de __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd9f07034 nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdcc4d77d nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdff9b694 nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe047f745 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe0896f62 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe41ff0b4 nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xee3dd4d6 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf35ca327 nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfa46651f __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfa7ca261 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfef8ac5e __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xff268fd1 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x475a28e2 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x2d77135c nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0xe4e69f13 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x427d3cc7 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x50bc853a nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x5c06c11a nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x69b6b95d nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x6e96616f nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x81c4390c set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x91bb3374 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x96b0bc9b set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xb01e2fc1 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xbc31846a nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0xd67e9be3 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x13e6e2e0 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x1dcbb09d nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x4a598def nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xf46dbd14 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x15febf60 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x4b6f3d59 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x12c5f7a4 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x36eca16a ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x680ca591 nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x9e3a2181 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xb05cdedb ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xc506826c ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xceff9634 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0xaf645b72 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0xa4c4a89f nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x000c41ff nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x02606cc9 nf_nat_alloc_null_binding +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 0x25b98f1c __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x353da35e nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x396384a3 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x931c3533 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xd787847a nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xef3bd7ab nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x11a006b5 synproxy_check_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x1f07fa44 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 0xec52a7b8 synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xef7db50c synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x02082aad nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x029fdd68 nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0f70342c nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0fda3c99 nft_validate_output_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2c825204 nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x360cb7ce nft_validate_data_load +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3d49dab7 nft_validate_input_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3f3b25bd nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa7de273b nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb6dfccd4 nft_do_chain_pktinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xceb873e1 nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd15775dd nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd7ad9fe5 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe6147818 nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xee34ecb0 nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x60b10b16 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x6baf30a8 nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x7a9240b5 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x823854f9 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xb0a76365 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xcb3a27c7 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xece4549f nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xa522effc nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x026831c7 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x24c8e482 xt_copy_counters_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2e2cdb99 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x4691053e xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x59674550 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5e13498d xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x972bce97 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa5b66a02 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xafb117ed xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xb372aa72 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc2b8f04b xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xdf300ef7 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe1430a26 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf936d30f xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf97ed828 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x3a099777 xt_rateest_put +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xf4e9cb5d xt_rateest_lookup +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x8ea175fe nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xfb5c6520 nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xfb8cf0ea nci_spi_read +EXPORT_SYMBOL_GPL net/rds/rds 0x004d288b rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x020ce2bd rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x0867536e rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x0cb77327 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x21f75ee0 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x24849168 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x2655d1ee rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x447d26f3 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x478204a0 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x4ed918a3 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x6b045d57 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x6fec7b6e rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x8f7a3cd8 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x96fafe85 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x97deb61e rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x9e6a0fed rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x9fc49db4 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0xa1b5ec62 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0xae0207af rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0xb5cbce36 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xd11168e0 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0xdf9aec4d rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xe90115cd rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0xf275a1e2 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x5b8c215c rxrpc_register_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xbe5ba1f3 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 0x1f99cc4b gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8bdd8727 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 0xf1d8829f gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00bd3bd2 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x03933b26 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x049e14b9 xprt_wake_pending_tasks +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 0x0682d614 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x07ba86d9 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0a7cc831 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0c467ab8 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0cf6a8ab put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f9f2e27 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1012bff3 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1193253f auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x11bb0d07 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x11ff6fca rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x15a03f77 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x176fbb04 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x17dee2c2 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x189b07d4 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x18d9579c svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d136206 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ebdbfb9 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x21b2841e rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x24268a18 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x24b89b23 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2570c705 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x26a1141a svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x270ec25d svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2dd02c8a xdr_partial_copy_from_skb +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 0x2fd22910 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31d167db rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32db408b xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32e6ab89 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x355fd046 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x37296bde rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3e58e7b0 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x402b3892 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x418626ee svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4252d0f9 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x44dc81ea rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4540930a xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4707e117 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x489e1872 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x48a82ef2 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x493d1a5a svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x49d742e9 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4a673e7c rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4cd35400 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d3d7c07 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4f8fef7a svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4f91ecd0 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x50e2864d xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x51d0e2de rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5277d41c xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x52c84a0a svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5376aff1 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a5ae29e rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5aa82906 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5caaa273 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5e4af0aa sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5ede0206 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x636d38ff svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x655658a1 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65c71639 rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x67c921ea xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6821fe1d svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6bd8b171 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6c3465fd svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d1fb8bd rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6ddbb990 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6e6098d7 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6f6a4ed2 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6fd2b4df rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71828611 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x732615c2 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x73bf795d rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x74cce1bd rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x75d1bd47 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76fb03cc svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x797ff617 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a8c5c71 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7acc55a1 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7b680052 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7b9602f3 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c5b7689 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7d78c6ac svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7dee87f9 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f23ae44 rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x81495dfb rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x85c39d7c rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8726c60f xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8853cb26 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x88770ca9 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x894cedfd sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9045df0c cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x915f0672 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x92d64486 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x93b35ab6 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x945b2f5a rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x94d73a2c rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x95721560 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x964f04c7 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x99162260 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9b70c8a0 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9b87eb40 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c54a225 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ccf364b rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ecaaeb7 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9f3e45c8 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa1fea37b xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa23ef5c4 rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa27013df svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa34ccacf cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa403fad3 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa5af8088 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa67a723d rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xabffb42f rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0116611 rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb30d948d rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb3a484df xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb4411b3b rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb798c9d7 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb8778e49 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb976c2b3 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9f7ac2c rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe962399 rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf4cc0db rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc0a1e078 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc13a7877 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc18d12d7 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc38feff6 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc755a3b3 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xca5dc998 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcaa1d9f0 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb2a5d76 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcbc1bf7d rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcbd2dc4b xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xccff3e36 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcd1c37f3 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcd5d41ae rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcd7661a3 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xce18269f xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xce840bb1 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcec0e95a xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xceeebcd8 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd08521d5 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd0f38316 svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd17ad58d svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd210c0da rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd219c0a4 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd44672c2 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd49925f0 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd5504347 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd70f6d13 svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd916ae82 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdb645a24 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdba79790 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdc0ac367 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdf77b594 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe195f402 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1a1f25b xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe21c1f31 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe2273a82 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe2e420b3 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe42e4e8c _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe55d34e6 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5e47421 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe657c654 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe7b02f6e rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe938d282 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe9959c0c xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeba7b0a6 xs_swapper +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee7f06d2 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeecfd69f svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef6d30a1 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf08ded8a rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf379e52d rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf4150b39 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf71153c1 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf72c4464 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf7d00e33 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d18721 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9f424de rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb8d8f74 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb9a3eff rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfbb737cf rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfdf86771 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xffb7976f gssd_running +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x040e3f08 vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0a117c13 __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0c79d5ef vm_sockets_get_local_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0ead952a vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x15c0c57c vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x1ec17be7 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x260a67fe vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x4730111a __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x712d8bd0 vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x74e91915 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x751ff010 vsock_addr_unbind +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7d897588 vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x83120a12 vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x9b641b5f vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xce07bd19 vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xeb812f6e vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf0bae8af vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf593c40a vsock_pending_work +EXPORT_SYMBOL_GPL net/wimax/wimax 0x24068668 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x361d1e2f wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x3801c18e wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x562990e6 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x7a9dc71b wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0x7d0ff4e9 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xa1e43278 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xa39e2155 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0xa6ebed7f wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0xcaa8d0fc wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0xcdcc1ebb wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0xe4d0b05a wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0xe54c4f4f wimax_msg_len +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x43887238 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x67dd7f37 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x75fccf55 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x928d8bec cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x9c55d9a2 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xa13ecc8b cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xbcfcfac1 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xbf2686c9 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xc9adf093 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xe73371e1 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xeee69672 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00778770 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x056bb269 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0a575945 xfrm_count_pfkey_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0b9e5852 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x74e1a843 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7c30b8c7 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x92dbc6c1 xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xbc8b0f41 xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xce7a55c1 xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xe122af95 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x613a1fea ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x893b87cc ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xacab2713 ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xeaf99f2a ipcomp_init_state +EXPORT_SYMBOL_GPL sound/core/snd 0x3ca17104 __snd_printk +EXPORT_SYMBOL_GPL sound/core/snd 0x3feba99e snd_kctl_jack_new +EXPORT_SYMBOL_GPL sound/core/snd 0x48ddfcc0 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0x8a762672 snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd 0xb8598a5c snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0xcb2215db snd_kctl_jack_report +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x9b6b7205 snd_compress_register +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xe21e1d77 snd_compress_deregister +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xf1989ee1 snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x04e1b99f snd_pcm_std_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x09e913c1 snd_pcm_alt_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x12b575c6 snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xf8e51bca snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x18303c91 snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x23d64d97 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x69ff56bb snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x7678f32e snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xf04db54b snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xf0c68045 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0187d58a snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x02c4214d snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x036ce3b5 snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x041da08a snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x04aba8a0 snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0637078f snd_hda_add_new_path +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 0x09125e5f snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0931bd2e snd_hda_codec_update_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x11434aec snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1189b28b snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x121cced8 snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x126062ce snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x185e785d snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1e5007a3 snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1ff01425 snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x210b2d01 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x24898f80 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x24c26d14 snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x25596c49 snd_hda_suspend +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x26f9da0a snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2a36c9f2 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2d3e2ea1 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2e59352b snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3053b1d3 snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x32a188b0 snd_hda_gen_spec_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x33438824 snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x33f18d53 is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x37085288 snd_hda_codec_resume_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x385bfaff snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x399b5d5c snd_hda_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x39e02939 snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3c6ba5cb snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3e1aed36 snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3eee900d snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x43c36e83 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x46bea302 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x47bcaf17 snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x47d2d87d snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x482f36e3 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x486c247d snd_hda_delete_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x49fb960f snd_hda_codec_flush_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4ad1a6be snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4b3b79f9 snd_hda_ch_mode_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4d391f6d snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4d3ec732 snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4d4d0747 snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4dab1f60 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4f4802c5 snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4fe560b2 snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5067062c snd_hda_sequence_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x52b44a37 snd_hda_ch_mode_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5336fb23 snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5355a7e2 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x53fc421c snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x54756aa5 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x55694b41 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x566cc5ca snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5a8e6e62 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5b91b308 snd_hda_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5e1ced27 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5fe6cc00 snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x62085ed9 snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x624caf04 snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x65abc635 snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x66412670 snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x66544855 snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x696ce4b2 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6a07d317 snd_hda_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6b28cadc snd_hda_get_sub_nodes +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6d40cf79 snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x72b75080 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x733077ae query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7374b373 snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x73ea278b snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x741e2ae6 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x74aba9ef snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x75089306 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x75e6b896 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x76525942 snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x76dc6871 hda_main_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7efc049e snd_hda_bus_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x80305dc6 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x84ca7cf6 snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x857ea8bc snd_hda_check_board_codec_sid_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x85d59b7b snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x871a6e44 hda_extra_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x88b07c0e snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e4c6826 snd_hda_calc_stream_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8fe36f46 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x901adc0e snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x902450e0 snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x91608e5a snd_hda_resume +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9278f8e3 snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9343f008 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x967ced5d _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x98a3076b snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9911e891 snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9b7295d9 snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9d8f3a95 snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9de13899 snd_hda_add_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9f6033df snd_hda_parse_generic_codec +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa0df83a6 snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa13aa870 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2827d76 snd_hda_get_jack_location +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa406d47d snd_hda_codec_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa49107e5 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa4d9838e snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa50ff5f9 snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa525ec9d snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa70606ba snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa7856d97 snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaab1fbf0 snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xab0071d6 snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xabf47d55 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xadc8d6ad snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb3d38656 snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbfdd2185 snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc0fd1962 snd_hda_query_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc2cc518c snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc652fd69 snd_hda_get_jack_connectivity +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc9cde6c9 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc9f89c3d snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb301b6e snd_hda_get_jack_type +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcc05882c __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcd511ca7 snd_hda_query_supported_pcm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xce23cb9e snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xce6c2b52 snd_hda_is_supported_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd0c5c3ef snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd0e040bc snd_hda_queue_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd16e8a8e snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd1ddcc39 snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd3671c49 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd62703a4 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xda1bdcb7 snd_hda_bus_reboot_notify +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdc4b69cc snd_hda_override_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe0f2a4a2 snd_hda_mixer_bind_ctls_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 0xe593dc58 snd_hda_check_board_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe7322258 snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe9ebf108 snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xea3e9966 snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xec7eb4db snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xedeaebf6 snd_hda_codec_resume_amp +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf0e06525 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf1458ad9 snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf2ba0187 snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf2e1784d hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf3eac428 snd_hda_codec_amp_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf55c90e8 snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf59770fc snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf5977d8b snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf784e778 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf86ff3aa snd_hda_jack_tbl_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf9164f63 snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf9a2735c snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfd2b7f7b snd_hda_ch_mode_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfecd9716 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xff663a55 snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/soc/atmel/snd-soc-atmel-pcm 0x97bc98b9 atmel_pcm_new +EXPORT_SYMBOL_GPL sound/soc/atmel/snd-soc-atmel-pcm 0x9882aea7 atmel_pcm_free +EXPORT_SYMBOL_GPL sound/soc/atmel/snd-soc-atmel-pcm 0xb2f45986 atmel_pcm_mmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sn95031 0x045bbff9 sn95031_jack_detection +EXPORT_SYMBOL_GPL sound/soc/mid-x86/snd-soc-sst-platform 0x5494f7ae sst_register_dsp +EXPORT_SYMBOL_GPL sound/soc/mid-x86/snd-soc-sst-platform 0xe6f9ee17 sst_unregister_dsp +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0149b397 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x06dceffb snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x080ae3e0 snd_soc_dapm_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0b0c289a snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0f13e011 snd_soc_cache_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1047a84b snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x13e434a9 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1a0b5655 snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1b6530c7 snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1dbf688e snd_soc_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1e11286d snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1f4f44ff snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2011008a dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x20faede4 snd_soc_get_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2252e66d snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2344cc10 snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x24fb8d37 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x26f9de77 snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x286e3ae5 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2a0d6e71 snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2a621b75 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2d67c736 snd_soc_codec_volatile_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2ea45d90 snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2f7ca39c devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2fa77b87 snd_soc_dapm_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2fbb8a4a snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x317b5734 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x32473a6e snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x33d3b8a0 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3687ca9d snd_soc_cache_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3a1ef18c snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3c4df6bc snd_soc_dapm_kcontrol_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3d8bb4c3 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3f3fc511 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3f46f1ff snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x40c9c281 snd_soc_cache_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x44b324cd snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x45140209 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x48963624 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x49b8f072 snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4a00df6c soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4aca2164 snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4e9ed7a0 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5371427f snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x53f04491 dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x579015cd snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x588c8318 snd_soc_codec_readable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x589ed429 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x591f98db snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5954b421 snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5a66205b snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5ddca8ef snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x60507091 snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x60cbb98e snd_soc_dapm_put_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x614c23f3 snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x628f7a98 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6525c02d snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x668e77a0 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x689f5202 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x693b292d snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6a4d2e82 snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6b6cba9c snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6bd4d5ae snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6bf38aa1 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6bfd2b85 snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6c756278 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6d34bcd0 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6ef0fa8e snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6f034700 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6fdef139 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6ff90d27 snd_soc_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x72036e95 snd_soc_add_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7253a8b8 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x77b47adc snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x77b6d819 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7a8d13e0 snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7f19e800 dapm_reg_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x81478d2b snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8165dd57 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x823777fa snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x823a3a0e snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x858a5d9f snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x89727bdb snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8ab5fbaa snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x90482ace snd_soc_dapm_get_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x917b9edb snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9a30a1f2 snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9cde6f74 snd_soc_lookup_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9cf6f2fc snd_soc_codec_set_cache_io +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9d27d1d1 snd_soc_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9e84d960 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa003e74c snd_soc_remove_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa1a5a75e devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa2881186 snd_soc_put_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa2b951a5 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa31f1c6b snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa4569215 snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa4fc34e6 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa9226008 snd_soc_codec_writable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xabea4431 snd_soc_info_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xad811d0c snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaf2afe96 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb3f87220 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb6a2a628 dapm_mark_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xba363c40 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbb6f99af snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbce82705 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbf2ebc0e snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc0681033 snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc4a3d597 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc4adc47f snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc5857a82 dapm_mark_io_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc6fd8387 snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc7f29cf4 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd08da219 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd1f443cf snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd9e8ebe3 snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdba2f4be snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdc94ada5 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe2798f68 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe773a314 snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe792e2cb snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe7ccb08d snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xea811330 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb4214cb snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xedf0bcef snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf02154da snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf204a245 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf2461095 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf2602fbf snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf5e31652 snd_soc_update_bits_locked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf63e38c2 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf703b6d3 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf76b4f28 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfb7f11f7 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfba12c6f snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfda3c6cb snd_soc_add_card_controls +EXPORT_SYMBOL_GPL ubuntu/i915/i915_bdw 0x118a3f6e i915_bdw_gpu_busy +EXPORT_SYMBOL_GPL ubuntu/i915/i915_bdw 0x34af3be3 i915_bdw_release_power_well +EXPORT_SYMBOL_GPL ubuntu/i915/i915_bdw 0x7381c75a i915_bdw_read_mch_val +EXPORT_SYMBOL_GPL ubuntu/i915/i915_bdw 0x8993eade i915_bdw_request_power_well +EXPORT_SYMBOL_GPL ubuntu/i915/i915_bdw 0x8b28f943 i915_bdw_get_cdclk_freq +EXPORT_SYMBOL_GPL ubuntu/i915/i915_bdw 0x96d7119d i915_bdw_gpu_raise +EXPORT_SYMBOL_GPL ubuntu/i915/i915_bdw 0xa17bc3aa i915_bdw_gpu_turbo_disable +EXPORT_SYMBOL_GPL ubuntu/i915/i915_bdw 0xde54f019 i915_bdw_gpu_lower +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x00000000 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x00000000 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x0034c1e0 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x0034f3b6 xen_has_pv_nic_devices +EXPORT_SYMBOL_GPL vmlinux 0x004c8dac __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x00632780 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x006d871e regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x00753935 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x00810bf5 device_create +EXPORT_SYMBOL_GPL vmlinux 0x008910ff gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x009386b8 cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x009767ca trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x00b76489 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x00c4dc87 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x00c72d14 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x00edd692 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x00f8dbd2 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x012c35b7 gpio_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x013e6458 get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0x014695ff devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0170cb6c efivar_work +EXPORT_SYMBOL_GPL vmlinux 0x017652b6 devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x01844237 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x01848a8e local_apic_timer_c2_ok +EXPORT_SYMBOL_GPL vmlinux 0x01b65860 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x01bf7dce blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x01c56422 user_describe +EXPORT_SYMBOL_GPL vmlinux 0x01d11a05 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01f1fa55 list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0x01f9f232 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x0234d946 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x0243fcbc ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x025b6789 user_match +EXPORT_SYMBOL_GPL vmlinux 0x025eec5b dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x02616e43 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x026211e2 memory_failure_queue +EXPORT_SYMBOL_GPL vmlinux 0x028e4ce7 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x02a0366f ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x02b24324 devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x02cc7e1c fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0x02d9eb1d sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x03041fe2 xenbus_register_frontend +EXPORT_SYMBOL_GPL vmlinux 0x031eed7d __clocksource_updatefreq_scale +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x03748e6e blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x037a820e sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0x0385fffb irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x03983a36 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0x03bf1d5e gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x03c71c15 blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x03d63e42 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03e57869 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x0444e4e2 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x0445210b percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x04486e88 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x047d0f33 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x049275b4 pin_is_valid +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 0x04d741c6 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x04d98eea netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x04efa836 cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x051683ea ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x052f0ef0 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x0531ec58 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x056a4a49 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x056fc27c uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0x057af458 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05b08380 ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x05b50f87 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x05d1b442 __efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x05ece82a regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0x05efeb65 __clk_register +EXPORT_SYMBOL_GPL vmlinux 0x060d1064 set_memory_ro +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x062fc169 xen_hvm_resume_frames +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x066bcb34 regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0x068ab1d6 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x06929466 modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x06963c36 intel_msic_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x06a79f8f rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0x06cd59c8 rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0x06d549e6 pinctrl_free_gpio +EXPORT_SYMBOL_GPL vmlinux 0x06d5dd28 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x06db2690 pinctrl_get_group_pins +EXPORT_SYMBOL_GPL vmlinux 0x06ef3472 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x07006336 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x071e45b4 efivar_entry_set +EXPORT_SYMBOL_GPL vmlinux 0x07258a0c sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x076126e5 usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0773e35d pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x0776cc5e bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0x078c0137 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0x0791b1b8 ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0x0797e12c bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x079867a2 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x079cebb7 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07c659a3 css_next_child +EXPORT_SYMBOL_GPL vmlinux 0x07f300c3 smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x07f32cde sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07fc478e acpi_dev_resource_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x07fcd4b8 sec_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x08204501 xen_swiotlb_dma_mapping_error +EXPORT_SYMBOL_GPL vmlinux 0x083b2ae6 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x0859735e max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x085c475a xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x08d1e1fc __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0x09025670 iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x090c3546 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x0914ea82 ata_sff_dev_classify +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 0x0962d0e8 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0x096e067a gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x098d9845 pinctrl_pm_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0x09b09da5 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x09b50564 devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x09ed569d ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x09fb010d ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x0a4646b7 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x0a4819cd napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0x0a5184a6 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x0a53508e xen_swiotlb_sync_sg_for_device +EXPORT_SYMBOL_GPL vmlinux 0x0a77ce86 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x0a8c916e reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x0a9fd3c5 gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x0aa12c4f ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x0aafada6 pci_configure_slot +EXPORT_SYMBOL_GPL vmlinux 0x0aceac86 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x0afd4610 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b10c6c8 driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x0b128080 xenbus_unmap_ring_vfree +EXPORT_SYMBOL_GPL vmlinux 0x0b1ea5a6 devres_get +EXPORT_SYMBOL_GPL vmlinux 0x0b3fda64 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0b4ce7cc devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0x0b52e502 apei_resources_add +EXPORT_SYMBOL_GPL vmlinux 0x0b59390b __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0bae62b1 ktime_get_monotonic_offset +EXPORT_SYMBOL_GPL vmlinux 0x0bdabed1 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x0bea8496 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c22b322 init_fpu +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c4b965f crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x0c805f93 clflush_cache_range +EXPORT_SYMBOL_GPL vmlinux 0x0c80e3fe efivar_init +EXPORT_SYMBOL_GPL vmlinux 0x0ca7e875 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cce0227 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x0d241bd7 skb_gro_receive +EXPORT_SYMBOL_GPL vmlinux 0x0d281d53 led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x0d2b4560 percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0x0d507cc8 xenbus_frontend_closed +EXPORT_SYMBOL_GPL vmlinux 0x0d5e61df crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x0d6f482e disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x0d91e55e sysfs_put +EXPORT_SYMBOL_GPL vmlinux 0x0d9377f8 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x0da89384 devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x0dc62ba9 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x0dd70655 acpi_dma_request_slave_chan_by_name +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0df8fee2 iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0x0e0341f1 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x0e13cb4d apei_resources_release +EXPORT_SYMBOL_GPL vmlinux 0x0e35c68e cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0e398e23 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x0e3a0888 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x0ea08d04 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x0eb33a27 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0ecac9be tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x0ed9302e percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0x0ed9b164 iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x0ee6dbff pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL vmlinux 0x0ef6767c pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x0f0022e3 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x0f1a57c8 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x0f2d7d87 mce_unregister_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0x0f3954ce wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x0f67be2a kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f800b35 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0x0f96f3a9 clk_register +EXPORT_SYMBOL_GPL vmlinux 0x0fa138de xen_hvm_need_lapic +EXPORT_SYMBOL_GPL vmlinux 0x0fc01e9f static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x0fcc1969 copy_from_user_nmi +EXPORT_SYMBOL_GPL vmlinux 0x0fdfd63e btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x0fe2d570 xenbus_directory +EXPORT_SYMBOL_GPL vmlinux 0x0ff635df regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x0ffa1eb2 ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x101e69c0 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x1027ae33 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x1078f24a ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x107c37fb hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x10954f7e br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x10f236dc xenbus_dev_probe +EXPORT_SYMBOL_GPL vmlinux 0x110106c1 cper_severity_to_aer +EXPORT_SYMBOL_GPL vmlinux 0x111db31c uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x112553ba sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x112ccf97 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x1170f7af ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x117c7305 hwpoison_filter_dev_major +EXPORT_SYMBOL_GPL vmlinux 0x11da4bd7 rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x11e000f5 stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0x11e3b933 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x11f21c69 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x11f59b39 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x12030fa6 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x121ed3f3 add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0x1230ea05 efivars_kobject +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x126123ab unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x1293e99f acpi_dev_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x12e502ec do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x130bd388 check_tsc_disabled +EXPORT_SYMBOL_GPL vmlinux 0x130c2f57 acpiphp_register_attention +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131b0644 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x132fc939 cper_estatus_print +EXPORT_SYMBOL_GPL vmlinux 0x136843a2 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x13720e8b xen_find_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x1375794f thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x1385ce3b sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x138aff76 gnttab_init +EXPORT_SYMBOL_GPL vmlinux 0x13921363 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x139e0cb5 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x13a05726 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x13a60f30 regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x13a970a8 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13b89dee pinctrl_request_gpio +EXPORT_SYMBOL_GPL vmlinux 0x13bfee20 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x13cf6e7b power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x13d77394 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x13f3e3fb klist_init +EXPORT_SYMBOL_GPL vmlinux 0x14301ef7 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x145784d1 gdt_page +EXPORT_SYMBOL_GPL vmlinux 0x14efec86 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x14f26940 rtc_set_mmss +EXPORT_SYMBOL_GPL vmlinux 0x14f875ce devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x14fc0c63 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x15010e1f arbitrary_virt_to_machine +EXPORT_SYMBOL_GPL vmlinux 0x15033b0d crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x1511addd usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x151b1910 device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x1532be4b usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x1542e618 dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x15568631 lookup_address +EXPORT_SYMBOL_GPL vmlinux 0x156b462d transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x157a139c fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x15a09f7b pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x15b0606e e820_any_mapped +EXPORT_SYMBOL_GPL vmlinux 0x15ba759d usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x15cfb38d relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x15d625cd __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x160cbb89 rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1610ecd7 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x16128754 generic_access_phys +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x166bee54 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x16ba9546 xenbus_bind_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x16fc8863 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x170d61d6 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x171588ea thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0x172e72d4 vdso_enabled +EXPORT_SYMBOL_GPL vmlinux 0x1746f98e __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x17517e68 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0x1753a32f hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x1756f2cf led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x175a8c00 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x17614bf3 apei_resources_sub +EXPORT_SYMBOL_GPL vmlinux 0x176f7d26 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x17a3b726 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x17fb599b sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x1804bccb crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x1829b9ed hwpoison_filter_memcg +EXPORT_SYMBOL_GPL vmlinux 0x184f888f smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1855a9b3 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x18582826 amd_pmu_disable_virt +EXPORT_SYMBOL_GPL vmlinux 0x1862bbde regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x186e5021 acpi_get_gpiod_by_index +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x18a27f34 jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0x18ca8c5e wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x18f83fab gnttab_grant_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x1947cc61 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x19496284 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x1950a143 isa_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x196614ce hw_breakpoint_restore +EXPORT_SYMBOL_GPL vmlinux 0x19681ff4 devm_acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x1999f67b da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19b384a5 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19b47b1e pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x19f49249 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x19f7ed30 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x1a082d69 max77693_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x1a0c2c17 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x1a11d8cc tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x1a2813b2 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1a323362 __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x1a33ce74 efivar_entry_find +EXPORT_SYMBOL_GPL vmlinux 0x1a3ac6df devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x1a42ce89 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x1a847823 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x1a9523b1 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1ad83009 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x1ae76ccc acpi_kobj +EXPORT_SYMBOL_GPL vmlinux 0x1aeda1a4 acpi_subsys_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x1b1e83ed pinctrl_dev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x1b1f2bda speedstep_get_freqs +EXPORT_SYMBOL_GPL vmlinux 0x1b22b61d pinctrl_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x1b52db1c probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x1b670076 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x1b794941 tty_prepare_flip_string_flags +EXPORT_SYMBOL_GPL vmlinux 0x1b80d0dd crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x1b851290 xenbus_unmap_ring +EXPORT_SYMBOL_GPL vmlinux 0x1b8822d8 pinctrl_gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1ba0d156 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x1ba7342c __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x1bc5eebe pinctrl_gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x1bd06aab cpufreq_frequency_table_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x1bea9e09 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x1c0bac55 rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0x1c0f0ea9 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0x1c57722b inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c5fc3b3 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x1c638416 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c8d5c07 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x1c948e0b sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x1c96e7ec debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x1cb91e28 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x1cbbabb0 usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x1ce227fa fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1ce98df1 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x1cf39cdf sk_clear_memalloc +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 0x1d8ccb1b shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0x1d8fb3bb acpi_dev_resource_address_space +EXPORT_SYMBOL_GPL vmlinux 0x1db079a1 kick_process +EXPORT_SYMBOL_GPL vmlinux 0x1db58316 sdhci_pci_o2_resume +EXPORT_SYMBOL_GPL vmlinux 0x1df8b6b6 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x1e000879 hwpoison_filter_enable +EXPORT_SYMBOL_GPL vmlinux 0x1e072f46 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x1e16a929 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x1e1f5d24 extcon_find_cable_index +EXPORT_SYMBOL_GPL vmlinux 0x1e3665ee inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x1e3a88fb trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x1e457988 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x1e508021 tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e828d78 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x1e8fac8e wireless_nlevent_flush +EXPORT_SYMBOL_GPL vmlinux 0x1e9a8bfa crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x1eb1594f gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1edc21cb hwpoison_filter_flags_mask +EXPORT_SYMBOL_GPL vmlinux 0x1eeb5d36 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x1f037618 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x1f1988f7 hwpoison_filter_flags_value +EXPORT_SYMBOL_GPL vmlinux 0x1f1fc432 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x1f494235 agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0x1f50a743 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x1f7e7352 da903x_clr_bits +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 0x1f8f254d blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x1f941983 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0x1f9fb184 crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0x1facd162 system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0x1fcece42 inet_twdr_twcal_tick +EXPORT_SYMBOL_GPL vmlinux 0x201b71be pwm_request +EXPORT_SYMBOL_GPL vmlinux 0x205ee55d xenbus_map_ring_valloc +EXPORT_SYMBOL_GPL vmlinux 0x20671650 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x2097fb17 extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0x209ec764 xen_event_channel_op_compat +EXPORT_SYMBOL_GPL vmlinux 0x209fef46 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x20bc3470 orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x20d4a18d __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x21010be5 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x213f37fe device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x215344e1 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x21574900 devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0x216f1a07 virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0x219044c6 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21ade92f tpm_show_pcrs +EXPORT_SYMBOL_GPL vmlinux 0x21bb84db securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x21f0d7c0 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x21f13f01 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x21f96bc8 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x2226fb88 rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0x2250c863 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x225d7370 rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x22689f05 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x22701ca4 ata_acpi_stm +EXPORT_SYMBOL_GPL vmlinux 0x2279fc70 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x228fc7ba usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x229b14fe pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x22a927e0 pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x22bf7073 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x22c7bb00 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x22d3341a usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x22ebde0a ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x2351b01a __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x2356d56e rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x236452b4 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x2366a2c0 errata +EXPORT_SYMBOL_GPL vmlinux 0x23679939 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x2392bc6e pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x23a63025 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x23d8cc94 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x23dbde3a subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x240580a9 xenbus_probe +EXPORT_SYMBOL_GPL vmlinux 0x241799d2 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x24217f1c fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x2421cd74 rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x242f4c73 xen_pci_frontend +EXPORT_SYMBOL_GPL vmlinux 0x24314ef1 blk_queue_bio +EXPORT_SYMBOL_GPL vmlinux 0x2447533c ktime_get_real +EXPORT_SYMBOL_GPL vmlinux 0x244ab570 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x2468393e ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x2469810f __rcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x24818d85 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24aaef4b crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0x24c119e0 __tracepoint_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0x24c7698a xenbus_write +EXPORT_SYMBOL_GPL vmlinux 0x24cb82ab dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x250900cd xenbus_grant_ring +EXPORT_SYMBOL_GPL vmlinux 0x253014fa devm_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x2545c170 unregister_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x254cdc92 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x255c5031 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x25bca658 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0x25d3b66b debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x26062472 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x26180bc1 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x2636b9c2 xenbus_dev_cancel +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x26965721 slow_virt_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x2696ed1d sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26cab55b thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x26d0c1b1 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x26eb0688 list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0x26f06c21 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x2767aedd dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x27753ff6 disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x2776e14b ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x2787db00 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x27932ebb page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x279cb985 apei_exec_pre_map_gars +EXPORT_SYMBOL_GPL vmlinux 0x27b0fffd devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x27bccc8a stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27cc7241 iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x27ddb33d acpi_dev_resource_io +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x2829560c fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0x282a3a78 usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x28717883 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x28a3ecf4 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x28a82da4 snmp_mib_init +EXPORT_SYMBOL_GPL vmlinux 0x28a903c8 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0x28b898cb blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x28d8117e subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x28dff95b crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x28e64c64 xen_has_pv_and_legacy_disk_devices +EXPORT_SYMBOL_GPL vmlinux 0x29059b53 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x29227ab6 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x2923fa20 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x293f073e vrtc_cmos_write +EXPORT_SYMBOL_GPL vmlinux 0x29a7555e usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x29e75146 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a7930a1 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x2a7bf0f6 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x2ac36de7 btree_last +EXPORT_SYMBOL_GPL vmlinux 0x2ad1ece4 zs_get_total_size_bytes +EXPORT_SYMBOL_GPL vmlinux 0x2b12b471 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x2b1b65b2 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0x2b32aa24 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x2b3a951d relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x2b44f87b anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x2b581076 unregister_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x2b62526c rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x2b67f096 speedstep_get_frequency +EXPORT_SYMBOL_GPL vmlinux 0x2b7a6de8 syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x2b7dcc89 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x2be5f59a sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0x2bfaef4e clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x2c061052 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x2c153630 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +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 0x2cbcedb9 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x2cc3b4e5 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x2cdba754 tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x2ce590a3 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2d0d11aa reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2d17a0e1 cgroup_taskset_size +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d249cf8 acpi_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d710d89 iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0x2d718286 dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0x2d82f245 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2d84cf43 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x2d93405d tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x2d9f2ce3 sched_clock_idle_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x2daecb68 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x2daffe49 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x2dbee3f4 blkdev_aio_write +EXPORT_SYMBOL_GPL vmlinux 0x2dbfd017 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x2dd3da81 wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x2e1a5f50 ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e386261 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2e3f06a8 sec_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x2e44a0e7 css_next_descendant_pre +EXPORT_SYMBOL_GPL vmlinux 0x2e45e488 rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x2e51fe0f spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x2e8225ef da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x2e8b6c8c __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x2e9a8ef3 irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0x2ebb8c33 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ee05faf cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x2ee4ee92 regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x2ef50562 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x2ef7a4ef pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f1392a8 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f64415f unregister_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2f6cbabf ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x2f705396 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x2f707633 pinctrl_lookup_state +EXPORT_SYMBOL_GPL vmlinux 0x2f725450 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x2f8559ad usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x2f857551 machine_check_poll +EXPORT_SYMBOL_GPL vmlinux 0x2f95cc4e netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x2fa08daa usb_acpi_set_power_state +EXPORT_SYMBOL_GPL vmlinux 0x2fa4cc61 rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x2fae6c97 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0x2fb6ad22 xenbus_dev_remove +EXPORT_SYMBOL_GPL vmlinux 0x2fbdcc27 dm_dispatch_request +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x300476c2 __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x30350bb4 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x30618017 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x308b733a getboottime +EXPORT_SYMBOL_GPL vmlinux 0x30a4f4ca bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x30ef7348 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x30f12599 bus_register +EXPORT_SYMBOL_GPL vmlinux 0x3109a765 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x311e5248 unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x3151ff57 unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x315bb54e __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x31689784 wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x3168990e inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x317d59a6 atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3189f244 iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x31a17e6d __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0x31b712eb rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31d577ca bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x32056c39 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0x322f3511 __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0x32385d47 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x3256ca45 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x325e677c gnttab_grant_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x3271235c ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x32924a4d scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x329bbbde timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0x32a486c7 cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x32b31a8c ktime_get_boottime +EXPORT_SYMBOL_GPL vmlinux 0x32b9923a intel_scu_notifier +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32ddd5b6 call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x32fc25de pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x32fd447a monotonic_to_bootbased +EXPORT_SYMBOL_GPL vmlinux 0x32fd4b62 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x3317754a debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x333228ec intel_msic_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x33520d72 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x33655159 xen_pcpu_hotplug_sync +EXPORT_SYMBOL_GPL vmlinux 0x33787a6c fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x338812a6 gnttab_map_refs +EXPORT_SYMBOL_GPL vmlinux 0x338edbc5 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x339d640c ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0x33b96e5d apei_exec_write_register +EXPORT_SYMBOL_GPL vmlinux 0x33c06ff5 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x3431ec81 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0x343598b8 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x345707c9 pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x3475f2cd xenbus_dev_is_online +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x34ac50a4 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x34c49233 ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x34d1565d xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0x34fa8c37 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x350366f0 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x351581c7 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x352650ee gnttab_batch_map +EXPORT_SYMBOL_GPL vmlinux 0x35274836 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x354ca1e4 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x355d408b ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x35718320 regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0x3581f995 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x35ab93d9 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x35df06bc power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x35e3fe8d pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x35f10f43 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x35f165f1 devm_reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x35f3ae51 unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3615aa6b ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x3618bb68 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x36236c2b vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x368c28a6 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36a1fef6 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x36ae3a7e iommu_domain_has_cap +EXPORT_SYMBOL_GPL vmlinux 0x36b5497e intel_iommu_enabled +EXPORT_SYMBOL_GPL vmlinux 0x36ba2551 intel_scu_devices_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3717a5cb crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x373b6129 ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0x374881ca security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x378921cd ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x37968642 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x37a31b55 tpm_show_enabled +EXPORT_SYMBOL_GPL vmlinux 0x37b3e0f7 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x37b69a5b iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x37ce4594 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x37dad54d da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x37dc026f pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0x37e4f662 acpi_get_pci_dev +EXPORT_SYMBOL_GPL vmlinux 0x38620e38 gnttab_grant_foreign_access_trans_ref +EXPORT_SYMBOL_GPL vmlinux 0x386a85cc adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x38809454 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x38a2ef11 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x38a9c2c7 input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x38b655d8 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x38ba5264 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x38e1a28d thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0x38f15ae1 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x38f348ca blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x38f83c61 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x39270d14 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x3933874a serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x393f86d6 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x39470404 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x396dd9d4 tpm_open +EXPORT_SYMBOL_GPL vmlinux 0x3993024f find_module +EXPORT_SYMBOL_GPL vmlinux 0x399f1bd0 regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x39b5a652 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x39dfb750 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x3a1a09ba regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a2888b5 securityfs_remove +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 0x3a77578f rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0x3aa4897b wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3ab1ab6c pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x3af1d9fb clockevents_unbind +EXPORT_SYMBOL_GPL vmlinux 0x3b0ea6c1 regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x3b1a1579 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x3b55911d cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x3b7145bb apei_exec_read_register_value +EXPORT_SYMBOL_GPL vmlinux 0x3b9c2c7d md_run +EXPORT_SYMBOL_GPL vmlinux 0x3ba23968 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x3bab97c8 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x3bc191eb locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x3bc29613 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x3bd5ecaa tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x3be0ae93 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x3bf50214 sk_unattached_filter_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3bf6dd0f tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x3c184dd0 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x3c39aa75 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x3c477fcd crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0x3c4cc11a __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3c8424a0 clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3c8f4428 clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cdccbf2 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x3ceea573 tcp_reno_min_cwnd +EXPORT_SYMBOL_GPL vmlinux 0x3cf04db4 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x3d003abb vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d3bea96 tpm_store_cancel +EXPORT_SYMBOL_GPL vmlinux 0x3d458eec rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x3d56b013 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x3d7ea99a gnttab_grant_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x3d8bb77f ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x3db9edbf tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0x3dc16865 pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dd4d3a7 bprintf +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3e1f1e08 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x3e2e543d cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x3e2fa31f wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3e53c3e6 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x3e5e9a35 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x3e66b7c9 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e757637 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0x3e7f0dfc __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x3e971b8d regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x3e9e1dd9 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x3ea5196d apei_osc_setup +EXPORT_SYMBOL_GPL vmlinux 0x3ece2973 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x3eeee906 nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f229c4c oops_begin +EXPORT_SYMBOL_GPL vmlinux 0x3f31cc8f regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0x3f3fb448 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x3f61acc1 irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0x3f75b25e tpm_release +EXPORT_SYMBOL_GPL vmlinux 0x3f84d4c9 gnttab_release_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x3f85e38a usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x3fcae08a sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x3fd079c0 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x3fd723bb dev_hard_start_xmit +EXPORT_SYMBOL_GPL vmlinux 0x3fe5b80e fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x40071d7e inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x400a024b acpi_scan_lock_release +EXPORT_SYMBOL_GPL vmlinux 0x4031f7d3 regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x40561ece da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x406dd1f9 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x4080b132 irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x4099c79a blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x40a0c9bc virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40af2c6d devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x40cacf45 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x40cb0423 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x41299916 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x4157f038 lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x415d73f5 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x416b16e5 virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x417d87cb crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x41a304f6 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x41a8ae47 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x41f6095a tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x4213a51a efivar_entry_set_safe +EXPORT_SYMBOL_GPL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x4218204a rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x422b952b lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0x424113d3 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x42470501 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x42738ae1 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x4282b5c4 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x42ac8a27 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x42ad78e9 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x42c989ff iomap_atomic_prot_pfn +EXPORT_SYMBOL_GPL vmlinux 0x42da1181 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0x42e3ebff unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x42e4b30e pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x42e892a1 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x4319653c blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x432d35fe find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x434f826b tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x435e6c6e crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x4365eb18 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4374112e ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x4379d93e PageHeadHuge +EXPORT_SYMBOL_GPL vmlinux 0x43a160f5 cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43b63859 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x43c04b4c device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x43da7594 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x43f04046 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x4418aa48 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x44368ce7 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x44380391 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x44404f11 kdb_register_repeat +EXPORT_SYMBOL_GPL vmlinux 0x444b7213 udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x449c17ec ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x44a31b3c pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x44ba44be debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x44bdf078 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x44c49453 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x44cc9c55 klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x44e40b31 rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0x4512b086 intel_scu_devices_create +EXPORT_SYMBOL_GPL vmlinux 0x4523cab9 cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4541fe0d mtrr_state +EXPORT_SYMBOL_GPL vmlinux 0x454c15ae __smp_call_function_single +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x45778b84 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0x45825372 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x4591094d xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45cd2ac1 vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x45d14bdf hypercall_page +EXPORT_SYMBOL_GPL vmlinux 0x45d9fbc5 pinctrl_utils_add_config +EXPORT_SYMBOL_GPL vmlinux 0x460f31aa rodata_test_data +EXPORT_SYMBOL_GPL vmlinux 0x460f7531 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x463ba1ed napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x463cf29b ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x46649969 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x46e9870d sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x46f13326 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0x4706cc0f get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x470fa426 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x47108bf6 split_page +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x472dafde clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x473cf1dc elv_register +EXPORT_SYMBOL_GPL vmlinux 0x47407ed0 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x477a6ec6 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x47901912 pci_msi_off +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47bc5719 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x47d18c3c debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x47f4aaf5 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x48069417 gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x4812bd0c device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x481c74d4 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x4828e77b acpi_scan_lock_acquire +EXPORT_SYMBOL_GPL vmlinux 0x482bb93f fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x483d4811 gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x48493e6d fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x48682db9 perf_guest_get_msrs +EXPORT_SYMBOL_GPL vmlinux 0x48739b96 dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0x48ab064c sdhci_pci_o2_probe_slot +EXPORT_SYMBOL_GPL vmlinux 0x48b25055 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x48c1f336 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x48ca8947 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x48d4115a rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x48d587b8 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x48da127d md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x48e45d4b extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x48e71b60 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x49027ae5 sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x490a8df6 x86_platform +EXPORT_SYMBOL_GPL vmlinux 0x49339f55 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x4978ba8f irq_get_irq_data +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 0x49a3281f adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x49bddb4b pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0x49ca57c3 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x4a0e4651 regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x4a20924b ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x4a223107 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x4a33ce4a bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x4a3c3cf9 microcode_sanity_check +EXPORT_SYMBOL_GPL vmlinux 0x4a414704 device_rename +EXPORT_SYMBOL_GPL vmlinux 0x4a5250a9 xen_register_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x4a57c5e8 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x4a8bdb39 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x4aa3bd55 __netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4afb573b vrtc_cmos_read +EXPORT_SYMBOL_GPL vmlinux 0x4b00952f set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x4b0150d4 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x4b15a512 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x4b163fb8 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x4b3425f1 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x4b349e8c mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x4b94f412 uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x4b9b8bd2 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x4bc62a81 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x4bd9d142 proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0x4c0583df tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x4c10d14d __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x4c16f764 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x4c292449 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x4c2a472b __static_cpu_has_safe +EXPORT_SYMBOL_GPL vmlinux 0x4c2e1f24 clk_disable +EXPORT_SYMBOL_GPL vmlinux 0x4c5d74b6 task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c8293eb sysfs_get +EXPORT_SYMBOL_GPL vmlinux 0x4c9e4a4f user_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x4ca4c9df clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x4caf81ae pinctrl_add_gpio_ranges +EXPORT_SYMBOL_GPL vmlinux 0x4cbc4626 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x4cbfcf88 agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x4cd6435f gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x4cdb84f5 pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x4d2d790c bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x4d3c684d trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x4d4c075e pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x4d4cad92 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x4d694c76 sec_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x4d92b653 pinctrl_utils_add_map_configs +EXPORT_SYMBOL_GPL vmlinux 0x4d942dd1 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x4d9ad6ab power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x4dca869b unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x4dde2495 xen_swiotlb_sync_single_for_device +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4e02cb3a rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e3cdedd put_pid +EXPORT_SYMBOL_GPL vmlinux 0x4e433653 tcp_is_cwnd_limited +EXPORT_SYMBOL_GPL vmlinux 0x4e483f56 preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4e4d9399 stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0x4e57723d apei_read +EXPORT_SYMBOL_GPL vmlinux 0x4e5a2a0f rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0x4e6b6a06 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x4e74e625 gnttab_batch_copy +EXPORT_SYMBOL_GPL vmlinux 0x4e7f2b94 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x4eaad8a5 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x4eabb919 of_reset_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x4eb9bed5 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f020dee public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x4f210e04 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x4f6b0baa efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0x4f8ef009 __efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0x4fb4e70b dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x4fb72f99 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x4fbab400 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x4fc03fa0 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x4fc52e8d __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4fe32e1c inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x500be86b device_add +EXPORT_SYMBOL_GPL vmlinux 0x5026585c xen_irq_from_gsi +EXPORT_SYMBOL_GPL vmlinux 0x502c2668 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x503e01f6 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x506691f1 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x506b0164 efivar_entry_add +EXPORT_SYMBOL_GPL vmlinux 0x506cc085 tracepoint_iter_stop +EXPORT_SYMBOL_GPL vmlinux 0x5073b824 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50b9217b crypto_lookup_skcipher +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 0x515358ee usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0x516c7b2e input_class +EXPORT_SYMBOL_GPL vmlinux 0x51701be4 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x518777e7 acpi_preset_companion +EXPORT_SYMBOL_GPL vmlinux 0x5187ac4b xen_store_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x518c2fc6 hpet_rtc_dropped_irq +EXPORT_SYMBOL_GPL vmlinux 0x51a00744 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x51a48c70 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x51b2935a get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x51ef061c ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x52190636 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x52212010 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x5254ace9 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x5255ded8 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0x525cbf07 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0x5272d8bc __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0x52807f20 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x52a41251 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x533fdc1b arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x5346061a inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x53624798 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5391b3b0 srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x539f157b pci_xen_swiotlb_init_late +EXPORT_SYMBOL_GPL vmlinux 0x53ab4f4c regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x53e2ec0e tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x540099ee __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x54103d57 pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x542f808f crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x54455f78 spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x54478dd3 dma_buf_export_named +EXPORT_SYMBOL_GPL vmlinux 0x544fae99 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x5453376f __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x54631cbc __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x547a713b scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x548990d0 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54a2326c efivar_entry_size +EXPORT_SYMBOL_GPL vmlinux 0x54aa315f crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x54b8ac68 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0x54d4095a udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x54ea1047 usb_string +EXPORT_SYMBOL_GPL vmlinux 0x54eeaf4f __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x54f4310a ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x54f971df regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x552739a9 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x5530652d cred_to_ucred +EXPORT_SYMBOL_GPL vmlinux 0x55319352 gpiochip_add_pin_range +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x55526907 xen_features +EXPORT_SYMBOL_GPL vmlinux 0x555f27b2 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x556c9c18 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x556f9ede rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x55d61b8a pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x55edd53d unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x55fc00d2 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x56300dc0 i2c_new_device +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 0x564f1dca klist_add_after +EXPORT_SYMBOL_GPL vmlinux 0x5654f836 erst_get_record_id_next +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x56694a69 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x567928da mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x5692386f gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0x56947347 dmi_walk +EXPORT_SYMBOL_GPL vmlinux 0x569d31fc crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x56b63670 lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x56bb95fc sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x56c39409 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x57366250 task_current_syscall +EXPORT_SYMBOL_GPL vmlinux 0x57520d16 cper_estatus_check_header +EXPORT_SYMBOL_GPL vmlinux 0x5779d445 xenbus_exists +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57febbbd ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x581d9fd2 pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x581f0712 regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x58295775 dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x5839fc62 gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x584c5acb led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x584eb5fd ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x585704ab aer_recover_queue +EXPORT_SYMBOL_GPL vmlinux 0x5869f869 acpiphp_unregister_attention +EXPORT_SYMBOL_GPL vmlinux 0x5874597e ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x587d52f1 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0x5883124e device_attach +EXPORT_SYMBOL_GPL vmlinux 0x5891de13 acpi_ec_add_query_handler +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58c40682 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x592cb9de save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0x593c83b8 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x5940c1b9 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5947abbe max77693_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x594936fb usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x595bef5a dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x597c394c usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x59915d16 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x59a6e91d clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x59ecb417 ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x59ef4bf1 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x59f961b2 extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0x5a04c338 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x5a061f26 arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x5a0f5663 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x5a1c5b16 scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x5a1f591b __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x5a2b1b67 gnttab_free_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5a33ef0d ata_acpi_gtm_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x5a441ebd efi_query_variable_store +EXPORT_SYMBOL_GPL vmlinux 0x5a463ce9 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x5a4def21 __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x5a564c8c __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x5a7afd2b blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a93bc97 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x5abaec3a transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x5af03a28 gnttab_claim_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5b256c31 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x5b2e43c6 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x5b6b144a mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x5b73c966 spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0x5b7b1868 cpufreq_notify_transition +EXPORT_SYMBOL_GPL vmlinux 0x5b937857 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x5ba32175 ping_bind +EXPORT_SYMBOL_GPL vmlinux 0x5babf842 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x5bca810c virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x5bdbf08f __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x5be5ede1 register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x5bf0c20c ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0x5c40200b pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x5c5622b4 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x5c66e90c efivar_run_worker +EXPORT_SYMBOL_GPL vmlinux 0x5c67eccb class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x5c83d877 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x5c8de2f0 relay_close +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cf592ec single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x5cff45c7 filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d166de3 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x5d366dec gnttab_cancel_free_callback +EXPORT_SYMBOL_GPL vmlinux 0x5d48a650 m2p_find_override_pfn +EXPORT_SYMBOL_GPL vmlinux 0x5d4ce426 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5d50317b virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x5d5e9e3d kobj_completion_del_and_wait +EXPORT_SYMBOL_GPL vmlinux 0x5d703c6a usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x5d723980 acpi_bus_trim +EXPORT_SYMBOL_GPL vmlinux 0x5dbcfa4f boot_cpu_physical_apicid +EXPORT_SYMBOL_GPL vmlinux 0x5deb1883 debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e84b5c8 acpi_dma_request_slave_chan_by_index +EXPORT_SYMBOL_GPL vmlinux 0x5eb92269 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x5eba5876 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x5ec7e87a device_reset +EXPORT_SYMBOL_GPL vmlinux 0x5ecded30 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x5ef3bece task_xstate_cachep +EXPORT_SYMBOL_GPL vmlinux 0x5ef3fbf9 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x5f18bea4 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x5f1ea782 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x5f248f72 set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0x5f2da8c4 check_tsc_unstable +EXPORT_SYMBOL_GPL vmlinux 0x5f340903 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x5f419491 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x5f495664 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x5f5ce2ef max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x5f94b097 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x5fa1f2c0 ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5fa79e50 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x5fb49dbb tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x5fc27be9 acpi_dev_irq_flags +EXPORT_SYMBOL_GPL vmlinux 0x5fdfa2c1 amd_pmu_enable_virt +EXPORT_SYMBOL_GPL vmlinux 0x60071b30 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x603ac726 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x606e97e2 extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0x608bb8a4 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x6091797f synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x60930d37 save_mc_for_early +EXPORT_SYMBOL_GPL vmlinux 0x6094685f wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60ac7b9f dev_get_gen_pool +EXPORT_SYMBOL_GPL vmlinux 0x60cd73ed pv_apic_ops +EXPORT_SYMBOL_GPL vmlinux 0x60dc3514 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x60ec79b6 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x610966e1 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x611006d5 apic +EXPORT_SYMBOL_GPL vmlinux 0x6120f9b1 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x6164bfac rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x617cf074 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x61f726aa sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x6227ab10 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6232963b ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x623803c8 hest_disable +EXPORT_SYMBOL_GPL vmlinux 0x623b0fed xenbus_probe_devices +EXPORT_SYMBOL_GPL vmlinux 0x624579ef bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x624a6406 hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x626293f4 __put_net +EXPORT_SYMBOL_GPL vmlinux 0x62cece5a __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x63205de1 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x635ec980 apei_exec_post_unmap_gars +EXPORT_SYMBOL_GPL vmlinux 0x636464e3 acpi_pci_find_root +EXPORT_SYMBOL_GPL vmlinux 0x6368e0f2 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x63690c5e led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x63691cac inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x63a836b8 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x63ae14d6 ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x63bb8b64 pinctrl_utils_reserve_map +EXPORT_SYMBOL_GPL vmlinux 0x63bd6ec9 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0x63e21002 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x640a0c8f ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x641c671c pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x64256424 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0x6437e325 pinctrl_dev_get_name +EXPORT_SYMBOL_GPL vmlinux 0x648193e1 virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0x64b7069e apei_mce_report_mem_error +EXPORT_SYMBOL_GPL vmlinux 0x64c33cf4 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x64c8d2fb ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x6510da5e ata_acpi_gtm +EXPORT_SYMBOL_GPL vmlinux 0x6527a231 dbgp_external_startup +EXPORT_SYMBOL_GPL vmlinux 0x653cb02d intel_msic_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x65857341 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x658c8186 amd_get_nb_id +EXPORT_SYMBOL_GPL vmlinux 0x65906741 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x65b51ca2 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65d26620 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x65e7813b sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x65ff2579 get_matching_microcode +EXPORT_SYMBOL_GPL vmlinux 0x66069582 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x6627eec6 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x662a0c3f x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x663c16d6 gnttab_grant_foreign_access_subpage_ref +EXPORT_SYMBOL_GPL vmlinux 0x664194ce acpi_subsys_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x6664ac34 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x667e830e blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x66834a62 pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x6689e023 pci_get_hp_params +EXPORT_SYMBOL_GPL vmlinux 0x6699c51d acpi_match_device +EXPORT_SYMBOL_GPL vmlinux 0x66adda6b adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x66c7ca10 print_context_stack +EXPORT_SYMBOL_GPL vmlinux 0x66d856c1 hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66e5f7eb debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x66e986a8 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x66fdf85c mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x66ff7eb7 devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x670cf6fa pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x6731553f attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x6739a503 balloon_set_new_target +EXPORT_SYMBOL_GPL vmlinux 0x6748f7ca fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x67643d26 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x677d6526 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x678719ba usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67be3eb9 pwm_config +EXPORT_SYMBOL_GPL vmlinux 0x67d15a93 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x6812cf8d __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x681e37c1 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x6826c8d5 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x685c2420 regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x686a3eee __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0x68777e7d regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x687934e9 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x687e4715 regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0x68956406 static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x68abfbad unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x68c0a5e0 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x68d7b817 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x68dfc1d4 devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0x68f91fc7 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x69415b78 xen_swiotlb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x6942f4a5 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x6945725e mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0x69469666 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x695d8873 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0x695e43ec pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x69a6c959 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x69aa785b blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x69c7cf74 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x69e9a2cb ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x6a042989 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a2a6a19 disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a8c737c aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x6ac369a2 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x6acad21f acpi_get_cpuid +EXPORT_SYMBOL_GPL vmlinux 0x6ad06d16 sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0x6ad3b105 serial8250_rx_dma +EXPORT_SYMBOL_GPL vmlinux 0x6ad9a8d1 acpi_register_gsi +EXPORT_SYMBOL_GPL vmlinux 0x6ae1c01c cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x6ae7b85e platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b4d5309 ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x6b5b478e anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6b7b80cb class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6b82366c xenbus_alloc_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x6b8ce0b5 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x6bdc033b inet_csk_reqsk_queue_prune +EXPORT_SYMBOL_GPL vmlinux 0x6bf1b90d dmi_memdev_name +EXPORT_SYMBOL_GPL vmlinux 0x6c0a036e devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x6c1251fd apei_exec_read_register +EXPORT_SYMBOL_GPL vmlinux 0x6c1b09ab gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x6c206726 xenbus_dev_fatal +EXPORT_SYMBOL_GPL vmlinux 0x6c2ae156 ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0x6c3ae2e7 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x6c3d781c dm_requeue_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0x6c455ba1 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x6c49c4f2 clockevents_notify +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c655913 register_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6c71449e ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x6c749afe __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6cb8b425 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6ccb3560 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6cd4ea62 wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x6d0aa2c6 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d31e93b tracepoint_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x6d339861 __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0x6d5c8976 cgroup_taskset_next +EXPORT_SYMBOL_GPL vmlinux 0x6d66d395 __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x6d813aea sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x6d9a4eba led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x6da9280c inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x6dfc8099 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x6dfdaf92 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e2aef61 wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x6e46ba56 devm_regulator_register +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 0x6e835129 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x6e85b00b local_touch_nmi +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e94b6a5 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x6e97332e usb_acpi_power_manageable +EXPORT_SYMBOL_GPL vmlinux 0x6eceb408 ping_close +EXPORT_SYMBOL_GPL vmlinux 0x6ecfe3e4 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0x6edc1509 xen_swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x6ee18f74 pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x6f0844a9 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x6f0a17b0 irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f3b9bde device_del +EXPORT_SYMBOL_GPL vmlinux 0x6f628993 acpi_bind_one +EXPORT_SYMBOL_GPL vmlinux 0x6f6c5cfd regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x6f6eb055 dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x6f96a704 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff3edfe da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x70007d62 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x701ada2a irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x70201233 unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x705a4dd6 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x7060da57 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x706896aa usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x707b5675 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x70825112 srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x708adb2a xenbus_switch_state +EXPORT_SYMBOL_GPL vmlinux 0x709c2de2 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x70bb651d __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x70caac73 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x70ce97bf fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70e3eb48 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x70ea96b8 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x7106adaa __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x71481ce4 led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x715d5fc0 ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0x716203ec task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x71639d2d bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7165e676 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x717356f0 palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0x718c393b cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x719215a0 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x7198df01 percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0x71b44949 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x71e11bfb skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0x72093ac9 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x721cbd7d key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x721d2b22 ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x723b5424 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x7247b9e8 sysfs_get_dirent_ns +EXPORT_SYMBOL_GPL vmlinux 0x7267db00 hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7275ac14 cgroup_taskset_cur_css +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x729d7354 sdhci_pci_o2_fujin2_pci_init +EXPORT_SYMBOL_GPL vmlinux 0x72e886db extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0x73013896 xenbus_printf +EXPORT_SYMBOL_GPL vmlinux 0x730512ad fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0x731dba7a xen_domain_type +EXPORT_SYMBOL_GPL vmlinux 0x73303b64 xenbus_watch_pathfmt +EXPORT_SYMBOL_GPL vmlinux 0x7335bde5 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x734f93da da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x73510609 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x735b1cd6 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0x73754e57 tpm_remove_hardware +EXPORT_SYMBOL_GPL vmlinux 0x73897831 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x738c7642 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x738fd248 intel_msic_reg_update +EXPORT_SYMBOL_GPL vmlinux 0x7392517d wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x739697c3 spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x739ce590 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x739da709 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73f0d5ab kobj_completion_release +EXPORT_SYMBOL_GPL vmlinux 0x7413743e cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x741ac4a2 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x7421d491 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7422c95e gpiod_get_direction +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 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x746d1dc5 usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x747747fa ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x74780afb apei_get_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0x748f7b80 acpi_pci_check_ejectable +EXPORT_SYMBOL_GPL vmlinux 0x74954462 timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0x74b012b1 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74c08941 kvm_async_pf_task_wake +EXPORT_SYMBOL_GPL vmlinux 0x74c4a222 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x74cc203a nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0x74deb10c used_vectors +EXPORT_SYMBOL_GPL vmlinux 0x74e5da17 pinctrl_dev_get_devname +EXPORT_SYMBOL_GPL vmlinux 0x74f465f2 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x751c3385 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x7521afb6 leave_mm +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x753e8ab0 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x755bd351 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x759f913d xenbus_map_ring +EXPORT_SYMBOL_GPL vmlinux 0x75a2eb3c usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x75a79843 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x75a97978 ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0x75c2b9f1 memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x75c8a11c inet_twdr_twkill_work +EXPORT_SYMBOL_GPL vmlinux 0x75d98c52 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x75e2f3c8 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x761fb075 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x763aff28 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x7644d2b1 regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x76521c82 iommu_map +EXPORT_SYMBOL_GPL vmlinux 0x765a3ee5 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x767fdee4 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x768a5814 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x76af90fd devres_release +EXPORT_SYMBOL_GPL vmlinux 0x76d07d6e gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x76ed7765 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x770cf981 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x7710acd4 pinctrl_force_sleep +EXPORT_SYMBOL_GPL vmlinux 0x7712771a unbind_from_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x77214cea sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x7730e119 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x773dc899 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x773ea6a0 tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x773f3f7d sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x7742289c vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x775a6ef5 kvm_read_and_reset_pf_reason +EXPORT_SYMBOL_GPL vmlinux 0x7790adc0 aout_dump_debugregs +EXPORT_SYMBOL_GPL vmlinux 0x77cb6e53 device_move +EXPORT_SYMBOL_GPL vmlinux 0x7803a6a4 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x7805cbe6 serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x780ac440 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x781b7de9 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x781bd59b efivar_entry_set_get_size +EXPORT_SYMBOL_GPL vmlinux 0x781c6eca hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x781fcb97 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0x782adb74 hpet_rtc_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x7834f8fb usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x78468d72 acpi_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x784a556d file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x784beae8 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x7856b678 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x78b59cf9 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x78bf4853 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x78d15ea6 pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0x78ea227b acpi_bus_no_hotplug +EXPORT_SYMBOL_GPL vmlinux 0x79265b6e dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x792cabce __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x793a9062 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x7945e066 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x79763252 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x7991fd8d crash_vmclear_loaded_vmcss +EXPORT_SYMBOL_GPL vmlinux 0x799c4837 wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x79a6266f spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x79a71c48 kernel_stack_pointer +EXPORT_SYMBOL_GPL vmlinux 0x79ba930d dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x79bc5061 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0x79e69460 intel_iommu_gfx_mapped +EXPORT_SYMBOL_GPL vmlinux 0x79ec8fc0 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x7a055d29 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x7a12b60c fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7a2f052f __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x7a319404 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x7a41d52c pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x7a47f5e1 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x7a4c1438 pv_info +EXPORT_SYMBOL_GPL vmlinux 0x7a7f7891 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x7a8d354b inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7a9f3063 mmput +EXPORT_SYMBOL_GPL vmlinux 0x7ab0fcc1 regulator_set_optimum_mode +EXPORT_SYMBOL_GPL vmlinux 0x7ab3ca18 eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x7ac8e5b0 acpi_gsi_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x7ae1ae8e cpufreq_frequency_table_put_attr +EXPORT_SYMBOL_GPL vmlinux 0x7af299e7 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x7af40c4a ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x7af87147 da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b12937d xen_remap_domain_mfn_range +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b304cd4 usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x7b3d2973 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x7b4f17e0 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x7b70e1cc xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x7b90d1a9 bind_virq_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x7bb52c62 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7bcdd626 put_device +EXPORT_SYMBOL_GPL vmlinux 0x7bd3b2f1 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x7bd76f53 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x7bff4171 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x7c0269c2 devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7c227088 clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0x7c2fade1 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x7c32a4e5 pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x7c346357 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x7c37a1ba ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x7c4a1c74 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x7c5557ff free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x7c59037a usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x7c86a705 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x7c8f099b __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7c904378 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x7cab4426 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x7cad03a0 __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x7cc1b7fd max77693_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x7cc7de1c x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x7cd3f861 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7ce5b92a gpiod_sysfs_set_active_low +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7cef22fe wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x7cf2e090 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x7cf70af2 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x7d2efb54 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x7d2fe936 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x7d311b4f pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0x7d329796 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7d36e534 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x7d397cc7 gpiod_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d53858a pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dc3c28d dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x7ddb68d2 irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0x7ddbdd9a ping_err +EXPORT_SYMBOL_GPL vmlinux 0x7def35db tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x7e3f154d extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x7e5c0662 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x7e5f721c unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e7ba465 __scsi_get_command +EXPORT_SYMBOL_GPL vmlinux 0x7e86877c alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x7ea61f42 tpm_show_active +EXPORT_SYMBOL_GPL vmlinux 0x7eb0e62c unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x7ec22690 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x7ed6f556 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x7eebb783 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x7f04a72f ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x7f772149 xenbus_probe_node +EXPORT_SYMBOL_GPL vmlinux 0x7f842451 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x7f86d4b1 fpu_finit +EXPORT_SYMBOL_GPL vmlinux 0x7f99578e swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x7f9ed9bb pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x7fa56a99 od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x7fa6efa5 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x7fc74cce acpi_subsys_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x7fe2c669 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x7fe374c6 xen_unmap_domain_mfn_range +EXPORT_SYMBOL_GPL vmlinux 0x7ff2121f ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x7ffe64d1 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x80292a49 da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0x803e94c3 sync_filesystem +EXPORT_SYMBOL_GPL vmlinux 0x8044e6bc inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x805922b7 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x805bc60f usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x8067bc22 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x80799044 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80ab660b i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x80af72ae pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80edda49 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x8105d195 ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x81066b77 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x81271eb9 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x8130c255 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x8140842a gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x816e6362 pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0x8186561a dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x81874d61 xenbus_register_driver_common +EXPORT_SYMBOL_GPL vmlinux 0x818aad41 bio_trim +EXPORT_SYMBOL_GPL vmlinux 0x81c1d204 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x81e4d30c hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x81f5f507 gpiochip_add_pingroup_range +EXPORT_SYMBOL_GPL vmlinux 0x82071ac5 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x82079138 regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x8237aa42 stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0x82939ebd rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x829fcbe9 class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x82c195bc pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x82c3ca1c page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x82c736fd regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82dbec19 erst_write +EXPORT_SYMBOL_GPL vmlinux 0x82e1a96e usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x82e6dcf7 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x82f177ae devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x82f89884 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0x8318eb66 clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x833ccbae hypervisor_kobj +EXPORT_SYMBOL_GPL vmlinux 0x834111da bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x834616bb sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x835d8a70 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x8364bb2d register_mce_write_callback +EXPORT_SYMBOL_GPL vmlinux 0x836930b9 xenbus_dev_error +EXPORT_SYMBOL_GPL vmlinux 0x836a6a2e wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x838f1954 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x839ef146 pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x83a5ae2e __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x83b6b3ca of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x83d03ef4 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x8420bccd cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0x84289270 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x842a7afc ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x842d3985 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x843d70ef acpi_is_root_bridge +EXPORT_SYMBOL_GPL vmlinux 0x845c4965 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x84642e7e regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x846d430f __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x84ba8b58 tpm_register_hardware +EXPORT_SYMBOL_GPL vmlinux 0x84c1234f disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x84e1450a call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x84f7a641 cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x8519d146 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x853ded36 __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x85526eef usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0x856629e7 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x8574ca6c gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x85765674 powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x8576dfda hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x85b14d33 clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x85c10896 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85cb2c45 xen_has_pv_devices +EXPORT_SYMBOL_GPL vmlinux 0x85cf1472 tpm_show_pubek +EXPORT_SYMBOL_GPL vmlinux 0x85d7edfd hpet_set_periodic_freq +EXPORT_SYMBOL_GPL vmlinux 0x85d877e9 pinctrl_force_default +EXPORT_SYMBOL_GPL vmlinux 0x85f51ebb ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x85f84f52 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x861045f1 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x861ae0aa dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0x86623fd7 notify_remote_via_irq +EXPORT_SYMBOL_GPL vmlinux 0x866b9687 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0x867ecb19 cgroup_load_subsys +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x86a09b70 cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0x86a51007 gnttab_end_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x86aa16e6 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x86aca0a2 iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x870cf952 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x870e16b7 xen_test_irq_shared +EXPORT_SYMBOL_GPL vmlinux 0x87195d92 __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x87196313 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x87435619 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x8793e58a ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x87984b16 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x87bdcdf1 acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x87ee4715 pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x8801bc93 pci_sriov_migration +EXPORT_SYMBOL_GPL vmlinux 0x880f2866 xen_swiotlb_sync_single_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x8831f8b1 kmap_atomic_pfn +EXPORT_SYMBOL_GPL vmlinux 0x883c2740 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x8874f102 regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0x887c543d acpi_dev_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x887cfa41 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x889b4520 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b0844e btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88bbb515 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x88ca250e device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x891a5a7f gnttab_max_grant_frames +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x89385ad6 tpm_write +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x89502f0c gnttab_subpage_grants_available +EXPORT_SYMBOL_GPL vmlinux 0x8956aeae apei_exec_ctx_init +EXPORT_SYMBOL_GPL vmlinux 0x896baa01 gpiochip_remove_pin_ranges +EXPORT_SYMBOL_GPL vmlinux 0x89957a4d pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x899a54f0 platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x899d2b4a pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x89a23022 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89bd47ce rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x89bda022 tpm_show_temp_deactivated +EXPORT_SYMBOL_GPL vmlinux 0x89dbdcc1 __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0x8a0077a7 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x8a04b9fe tracepoint_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0x8a0b108e regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8a2b14ba wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0x8a6072ff devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x8a757137 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8a75c225 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8a78989f irq_from_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x8a7cb9c4 platform_thermal_package_rate_control +EXPORT_SYMBOL_GPL vmlinux 0x8a8ebc6f crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x8a99a8d2 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8b04668e bind_interdomain_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x8b2918bb inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x8b2cf8a1 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x8b2e6abd user_read +EXPORT_SYMBOL_GPL vmlinux 0x8b50c8da rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0x8b53d3eb serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0x8b66f9e0 xen_platform_pci_unplug +EXPORT_SYMBOL_GPL vmlinux 0x8b978794 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x8bbe565a usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x8bd5b02a exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c06a108 xenbus_transaction_start +EXPORT_SYMBOL_GPL vmlinux 0x8c2ebf83 acpi_dev_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8c660ed2 sec_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x8c724f12 swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x8c9e1092 inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x8cd9f935 setup_APIC_eilvt +EXPORT_SYMBOL_GPL vmlinux 0x8ce68666 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x8d0bd87c wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d317049 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x8d3d2fac devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0x8d4f8d12 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x8d522714 __rcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x8d5c9d55 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x8d6c1e74 rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0x8d86a5cf tcp_init_congestion_ops +EXPORT_SYMBOL_GPL vmlinux 0x8dc51117 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x8dec9cf9 usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x8e050d6b wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0x8e19a9e6 device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x8e223dbf clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0x8e22c674 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x8e251fce regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0x8e43df33 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x8e4ccb64 xen_swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x8e5706b2 netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0x8e631da1 hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x8e6fe831 cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x8e9187f3 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x8e93c702 rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x8e93d886 tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x8e9c7933 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x8ea960cb blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8eb66baf da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x8edfb574 injectm +EXPORT_SYMBOL_GPL vmlinux 0x8eeb7ea0 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x8ef572f1 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x8effebd3 pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x8f146bfa device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x8f1732e4 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x8f17da1e virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0x8f1d574f relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x8f37ea60 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x8f38d043 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f7bd0d2 rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x8f902a2c gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0x8f9ed508 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x8fbb3349 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x8fbdf2f0 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x8ff2a7ac rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x8ff5ba60 acpi_unbind_one +EXPORT_SYMBOL_GPL vmlinux 0x9005b18f spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x9009602a acpi_bus_get_ejd +EXPORT_SYMBOL_GPL vmlinux 0x90228869 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x902f8a44 acpi_subsys_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x906fd6bc inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x90705b7f syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x907fb4b1 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x9081889a ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x908e2475 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x909f1486 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90d88e4d usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x90d9a61a pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0x90de0452 platform_thermal_package_notify +EXPORT_SYMBOL_GPL vmlinux 0x90e587c5 netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0x91119458 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x91195958 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x91286982 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x9155beb6 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0x9169f965 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91b2483d usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x91db642c public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0x91e43710 serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x91e5e10d regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x920baaf9 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x922837a7 rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0x922a99c5 md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x9257f44f page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x92727e01 efivars_unregister +EXPORT_SYMBOL_GPL vmlinux 0x929c467f btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x92a92288 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x92b40ef5 tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x92b57248 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x92b5d743 dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92d75cf6 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x93071608 yield_to +EXPORT_SYMBOL_GPL vmlinux 0x9312d80e evtchn_put +EXPORT_SYMBOL_GPL vmlinux 0x931b61e3 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x9323a632 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9324e78e acpi_dev_resource_memory +EXPORT_SYMBOL_GPL vmlinux 0x9327e587 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x933c524b efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x934c2081 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x939199c2 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x93cddb8a gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x93f6fd8e pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x94032092 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x94321c26 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x94349565 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x943fc708 xen_setup_shutdown_event +EXPORT_SYMBOL_GPL vmlinux 0x946ca9dc list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x94846083 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x948ac89d hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x949a3e2a blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x949dad7d n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x94a68723 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x94abb745 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0x94c318be apei_exec_collect_resources +EXPORT_SYMBOL_GPL vmlinux 0x94ca8109 sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0x94cdf9b5 ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0x94d219a1 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x94e3750e _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x9501faaf usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x95388570 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x953bdcb3 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x954cf48f virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0x955671f4 ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x955eaadb cgroup_taskset_first +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x959f5c49 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x95b70f0d balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x961a062f devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x961d1757 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x962c00c6 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x96315741 css_rightmost_descendant +EXPORT_SYMBOL_GPL vmlinux 0x96323a77 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x964add15 xenbus_scanf +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x965f5b39 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x9670ce26 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x967b11fc cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x969216a6 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x96a22790 vmcore_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x96a822eb platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x96b0e17d pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x970c4569 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x970ed5a4 devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9730c462 gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x974711b8 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x9761cf72 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x9764c842 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x976d2e76 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x97839455 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x97a3ec56 ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x97b093dd btree_update +EXPORT_SYMBOL_GPL vmlinux 0x97c2d193 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97f836e2 xen_swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0x9810abff ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x98475df1 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x984d8bef rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9850b156 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x985b96f3 reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9887d19b usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x989f8b48 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x98a3cf6f dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x99412003 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x9948d3ed proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0x99572d3f ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x9973add9 __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x99741a43 hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x998857e2 irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0x9997c534 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x99a2b7e6 __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x99a984f7 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x99c87be9 pinctrl_utils_add_map_mux +EXPORT_SYMBOL_GPL vmlinux 0x99d5ea45 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x99eeb882 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x99f29302 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x9a0e1b3a dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x9a0ed691 sk_unattached_filter_create +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a198622 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x9a5c782b ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0x9a7f66e0 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a8c238c __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x9a9824ef btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9aaa1208 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0x9ab63b16 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9ac7ea07 devres_find +EXPORT_SYMBOL_GPL vmlinux 0x9aca444b get_monotonic_boottime +EXPORT_SYMBOL_GPL vmlinux 0x9acd71ed ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x9add12d4 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x9ae84c2a lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9b04a11e crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9b5c2385 percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0x9b63c455 i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0x9b80e64d attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9b8d9503 hv_register_vmbus_handler +EXPORT_SYMBOL_GPL vmlinux 0x9b964c63 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x9b9f3648 pcibios_scan_specific_bus +EXPORT_SYMBOL_GPL vmlinux 0x9babf390 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x9bb165a7 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x9bbd2d80 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9bd72b78 apei_write +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9bf84f7c usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x9c2b0943 devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x9c2e4b66 acpi_unregister_gsi +EXPORT_SYMBOL_GPL vmlinux 0x9c357c34 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ccb0a46 usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x9cd0184d init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x9d030b99 stop_machine +EXPORT_SYMBOL_GPL vmlinux 0x9d06688b register_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x9d07c0b7 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x9d0c2d32 irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x9d0ca2a4 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0x9d108dd3 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x9d138533 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x9d3834af ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x9d3850e1 gnttab_alloc_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x9d40e3dc regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0x9d4368f9 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x9d4e8151 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9d62c898 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x9d76ba58 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x9d79e964 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x9d8331c0 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9d8a8b10 acpi_processor_get_performance_info +EXPORT_SYMBOL_GPL vmlinux 0x9d8cc706 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x9d9f16b6 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x9da1b857 tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x9dbae06e sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x9dcfaf53 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x9de60b29 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9e00ba1a __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x9e0d2794 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x9e1bcca5 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x9e2f6a59 queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x9e4540dd __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x9e762cb2 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x9e86d57d inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x9ebff902 start_thread +EXPORT_SYMBOL_GPL vmlinux 0x9ec26efb led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9f0664bf dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0x9f212dc4 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0x9f4c458f fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x9f503bfe thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0x9f92588e driver_register +EXPORT_SYMBOL_GPL vmlinux 0x9fc3fcf6 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x9fca5dd0 rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fd1cba5 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0xa0208e02 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xa04e2529 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0xa051afbd sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xa0699624 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0xa0c71dac spi_populate_sync_msg +EXPORT_SYMBOL_GPL vmlinux 0xa1095d99 cgroup_add_cftypes +EXPORT_SYMBOL_GPL vmlinux 0xa11216be xen_store_domain_type +EXPORT_SYMBOL_GPL vmlinux 0xa12d929d desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0xa156a1f2 erst_get_record_id_end +EXPORT_SYMBOL_GPL vmlinux 0xa15d3c0b clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0xa16b27fa mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa186771b ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xa1bd7822 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xa1c8f224 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xa1cd6a65 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xa1e4c013 regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0xa1e970a5 devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0xa1f79553 xen_create_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0xa1f8dc77 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xa1f92938 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0xa20ef39f sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa2736d3b acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xa27cb33b kobj_completion_init +EXPORT_SYMBOL_GPL vmlinux 0xa288ba55 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0xa28bd87d sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0xa29ab8c4 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0xa2b2817b devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xa2b9c993 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xa2baca34 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0xa2ca5ea1 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xa2d4564a usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xa32a3dd1 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0xa353fffc xenbus_rm +EXPORT_SYMBOL_GPL vmlinux 0xa357720c nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0xa36cc444 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa36d78b2 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa377c055 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0xa37f57ff uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa3866af4 __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3bc524b irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0xa3c8a9c9 xen_swiotlb_map_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa3f5959e thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0xa422c011 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0xa4329c85 fuse_conn_kill +EXPORT_SYMBOL_GPL vmlinux 0xa452c297 hpet_mask_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa452f2a4 xen_pirq_from_irq +EXPORT_SYMBOL_GPL vmlinux 0xa45e2527 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0xa46438d5 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0xa466de38 acpi_processor_ffh_cstate_enter +EXPORT_SYMBOL_GPL vmlinux 0xa46e91aa find_symbol +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa4c05579 swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0xa4c297af rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xa4ce9177 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xa4d20e22 sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xa4d58669 math_state_restore +EXPORT_SYMBOL_GPL vmlinux 0xa5390492 rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0xa53b9ae2 __class_register +EXPORT_SYMBOL_GPL vmlinux 0xa55f179e shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0xa584392f crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0xa5877e3b fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0xa5bceb0a devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5f1857a sec_reg_update +EXPORT_SYMBOL_GPL vmlinux 0xa61b1477 tracepoint_iter_start +EXPORT_SYMBOL_GPL vmlinux 0xa61e9e85 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0xa6211350 apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa62892c6 efivar_sysfs_list +EXPORT_SYMBOL_GPL vmlinux 0xa6449b73 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0xa65a67cc pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0xa682d0ec bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0xa6a0a273 max77693_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6cf3d3f efivar_entry_remove +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6fb3a72 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xa7110103 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0xa722dca8 sis_info133_for_sata +EXPORT_SYMBOL_GPL vmlinux 0xa724257f init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0xa7510d89 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa75811d0 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0xa777a0af crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xa77ebfe2 serial8250_tx_dma +EXPORT_SYMBOL_GPL vmlinux 0xa797d083 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0xa79c00db dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xa7af24c8 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xa7c42103 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0xa7d0b0d5 rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0xa7e5c688 dm_kill_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0xa7f92105 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0xa801b359 efivar_entry_iter_begin +EXPORT_SYMBOL_GPL vmlinux 0xa80fd8f5 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0xa82a2e21 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0xa84c49b5 gpio_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa8ad7d7a pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0xa8c3b6a3 subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0xa8cbd703 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0xa8d2a487 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0xa8d6318a device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0xa8dabd81 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xa8eb8fec register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xa8ed179a pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0xa8ff95a1 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0xa9097175 m2p_remove_override +EXPORT_SYMBOL_GPL vmlinux 0xa9126bff hpet_set_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa929976e usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0xa952528f rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0xa9721be0 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0xa980af16 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xa999d9ec __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xa9a7cf0d crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0xa9a82042 gnttab_trans_grants_available +EXPORT_SYMBOL_GPL vmlinux 0xa9bc690c virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9fc3f54 gnttab_grant_foreign_access_trans +EXPORT_SYMBOL_GPL vmlinux 0xa9ffe899 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xaa2a72bf __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0xaa352430 usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0xaa3aeb62 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xaa69bc82 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0xaa7dee82 pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0xaaa1d37a ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaab2020f xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0xaad3c7ae usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0xaaecb954 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xab01acbe gnttab_request_free_callback +EXPORT_SYMBOL_GPL vmlinux 0xab2618ec crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0xab3def81 xenbus_free_evtchn +EXPORT_SYMBOL_GPL vmlinux 0xab57e07b dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xabade581 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0xac377856 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xac499559 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0xac9ce195 kvm_async_pf_task_wait +EXPORT_SYMBOL_GPL vmlinux 0xacafa8e7 vector_used_by_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xacb3e124 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xacc09e0e regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xad1c1ac1 dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0xad2e8c90 dm_underlying_device_busy +EXPORT_SYMBOL_GPL vmlinux 0xad376749 clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0xad602d2f pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0xad748af6 dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xad8a30bd ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0xad8d8ab0 xen_physdev_op_compat +EXPORT_SYMBOL_GPL vmlinux 0xad998da8 tpm_show_owned +EXPORT_SYMBOL_GPL vmlinux 0xad9cdec2 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0xada02918 pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xada8247a pwm_free +EXPORT_SYMBOL_GPL vmlinux 0xadbdb01f rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae1d3a30 inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0xae28df70 devm_acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xae30e453 crypto_rng_type +EXPORT_SYMBOL_GPL vmlinux 0xae39f46d raw_seq_stop +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 0xae7c4ac8 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xae7c5411 ms_hyperv +EXPORT_SYMBOL_GPL vmlinux 0xae7f1880 relay_open +EXPORT_SYMBOL_GPL vmlinux 0xaea68a11 usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xaeabaf95 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xaec236ea rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xaed96bb5 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0xaede3486 vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0xaef1b1a9 pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0xaf4cd6d3 acpi_os_map_memory +EXPORT_SYMBOL_GPL vmlinux 0xaf502e1f regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0xaf58755d xenbus_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xaf7c763a firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0xaf870be4 device_schedule_callback_owner +EXPORT_SYMBOL_GPL vmlinux 0xafa2b7b9 leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xafa89015 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0xafe2170c raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0xaffb4325 ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0xb02ac411 register_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb06d333a crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0xb07785c3 iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0xb083a460 fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0xb0a16dc9 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0dd5cb9 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0xb10d55bc cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xb11ea4b8 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0xb13635f1 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0xb13e2a29 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0xb13f0486 verify_signature +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb172ffac efivars_sysfs_init +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb189a0a2 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xb18d8ac3 rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xb196a373 pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0xb1a7e3f6 clk_round_rate +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 0xb1deb569 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb20bd21e dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0xb212ec96 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xb21b40cf __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb22c1832 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0xb23edbc6 pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0xb250f977 ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0xb251414e find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0xb2d3c717 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0xb2d49fb0 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb2e952f0 tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xb3253ed9 hpet_rtc_timer_init +EXPORT_SYMBOL_GPL vmlinux 0xb3554b20 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0xb360e67c dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0xb382cb29 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0xb383c4e3 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xb3969cbd rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xb3befce5 irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xb3cd4a55 hwpoison_filter +EXPORT_SYMBOL_GPL vmlinux 0xb3dedc10 usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xb44a2579 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0xb4a4a405 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4bf73ca dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0xb4c42157 d_materialise_unique +EXPORT_SYMBOL_GPL vmlinux 0xb4c506ca regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xb4e14553 gnttab_query_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4fc2a26 pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb56ce52e handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0xb5869580 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5c50546 rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0xb5cb8145 hrtimer_get_res +EXPORT_SYMBOL_GPL vmlinux 0xb5cd31d8 iommu_present +EXPORT_SYMBOL_GPL vmlinux 0xb5db494c need_load_eval +EXPORT_SYMBOL_GPL vmlinux 0xb5e896fb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb6212caa alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0xb6230f1f gnttab_grant_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb633b2c5 mmc_send_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0xb649795f aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0xb66421b2 acpi_str_to_uuid +EXPORT_SYMBOL_GPL vmlinux 0xb67b2219 cm_suspend_again +EXPORT_SYMBOL_GPL vmlinux 0xb67c64fd __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6baa935 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0xb6bc49a9 __supported_pte_mask +EXPORT_SYMBOL_GPL vmlinux 0xb6bfa704 rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0xb6c635af wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xb6c9fe29 tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xb6d67ec5 thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0xb6e02725 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0xb6e3cdd3 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xb6f2c578 __tracepoint_unmap +EXPORT_SYMBOL_GPL vmlinux 0xb6f52d7d sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0xb709e339 efivar_validate +EXPORT_SYMBOL_GPL vmlinux 0xb713da72 regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0xb718f2f9 sfi_table_parse +EXPORT_SYMBOL_GPL vmlinux 0xb720906e tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0xb7228969 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0xb73c6426 __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0xb7779e73 idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb77e7bc1 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xb78352fb simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0xb79306d5 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xb798dea9 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0xb79fda61 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0xb7a87c06 device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0xb7d7c12e hpet_set_alarm_time +EXPORT_SYMBOL_GPL vmlinux 0xb7f6711d __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb811d5d5 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0xb8149c7c serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0xb86bcceb klist_next +EXPORT_SYMBOL_GPL vmlinux 0xb8a1fca3 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0xb8b2b1f7 mce_register_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0xb8d1a31e perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0xb8d517b9 sysfs_notify_dirent +EXPORT_SYMBOL_GPL vmlinux 0xb8df320f arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0xb8eab73e inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb9176155 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0xb9288e05 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0xb92d6b13 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xb92f3595 regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xb93c77fc __class_create +EXPORT_SYMBOL_GPL vmlinux 0xb93d9bb4 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xb965094c ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xb9813d24 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xb9837e8c simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0xb999f00c alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0xb99d5837 xenbus_read +EXPORT_SYMBOL_GPL vmlinux 0xb99d712c ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9c51620 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9da2997 snmp_fold_field64 +EXPORT_SYMBOL_GPL vmlinux 0xb9ea3b90 sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xb9fa4763 __efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0xba02d290 ata_sas_port_async_resume +EXPORT_SYMBOL_GPL vmlinux 0xbaa5f689 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0xbab82db7 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb48269b regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0xbb58b814 iomap_free +EXPORT_SYMBOL_GPL vmlinux 0xbb5fc7d6 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0xbb7362b0 clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0xbb82a440 extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xbb87c080 rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xbbac4572 irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0xbbb98859 edid_info +EXPORT_SYMBOL_GPL vmlinux 0xbbc4d095 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0xbbd33839 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xbbd4f657 xen_pcpu_id +EXPORT_SYMBOL_GPL vmlinux 0xbbed41b6 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0xbc0311c1 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0xbc29024b register_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xbc33c7c6 bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0xbc348d5d thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0xbc365201 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0xbc64d555 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0xbc64f8dd sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xbc75f729 pci_renumber_slot +EXPORT_SYMBOL_GPL vmlinux 0xbc7d99de ref_module +EXPORT_SYMBOL_GPL vmlinux 0xbc8dc799 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xbca0201a sfi_mrtc_array +EXPORT_SYMBOL_GPL vmlinux 0xbca5c966 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcb838a1 amd_flush_garts +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcdb602f crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbd234c65 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xbd3704f8 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0xbd506a46 unregister_hotplug_dock_device +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd6292b4 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xbd652546 iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0xbd800daa da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbdb257ba hrtimer_start +EXPORT_SYMBOL_GPL vmlinux 0xbdb25dda __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xbdb33c26 relay_subbufs_consumed +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 0xbdef08e9 rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe1d3e99 regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0xbe1f704f cgroup_is_descendant +EXPORT_SYMBOL_GPL vmlinux 0xbe35c0ca tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0xbe5338fb rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0xbe9350aa ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xbea0f690 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbea9fcb7 regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbeae09cb bdi_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0xbeaefae6 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0xbeb53f62 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0xbed34ae3 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0xbef6d1c5 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf26ebf0 pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xbf3c54bf fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0xbf44b7b8 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0xbf55553c usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0xbf6e570f skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0xbf8758de sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xbfa9326c regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfbd37f9 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0xbfe21c09 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0xbff95278 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0xc000e979 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0xc00131cf visitor64 +EXPORT_SYMBOL_GPL vmlinux 0xc01426b7 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0xc02fedac pci_intx +EXPORT_SYMBOL_GPL vmlinux 0xc03a6beb devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xc03c910e regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0900fcf acpi_os_get_iomem +EXPORT_SYMBOL_GPL vmlinux 0xc09b3599 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0xc0ad8696 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0xc0bf6ead timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xc0d01bc0 percpu_ref_cancel_init +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0dc6f42 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0xc0e22cab sdhci_pci_o2_probe +EXPORT_SYMBOL_GPL vmlinux 0xc0e75cec visitor128 +EXPORT_SYMBOL_GPL vmlinux 0xc1123d0a alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0xc11b4470 balloon_stats +EXPORT_SYMBOL_GPL vmlinux 0xc11b45c6 gpiod_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xc11bd00f tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc136c47e rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0xc15aad13 sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0xc164642e xenbus_otherend_changed +EXPORT_SYMBOL_GPL vmlinux 0xc164ddfb pinctrl_remove_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xc16674cb arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc1786491 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xc18578ed process_srcu +EXPORT_SYMBOL_GPL vmlinux 0xc1876287 pci_pri_stopped +EXPORT_SYMBOL_GPL vmlinux 0xc1bbe613 devm_pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0xc1bf6950 xenbus_read_otherend_details +EXPORT_SYMBOL_GPL vmlinux 0xc1d11312 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0xc1dc0d5d acpi_find_child +EXPORT_SYMBOL_GPL vmlinux 0xc1e06ad1 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0xc1e362f6 balloon_mapping_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc1e57f29 usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0xc205fa4e synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc237644e vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0xc23caca0 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0xc241d329 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0xc2439138 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0xc244dc4d gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0xc26351f8 bind_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xc27062ea bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0xc278a8a5 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc2a2a8d9 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0xc2ea4559 xen_swiotlb_unmap_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0xc2f5ab1a usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xc2fa376f devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xc317ba7b spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0xc335c86b crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc339a895 extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc34efe27 snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0xc3556714 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc37549ed spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0xc3a53769 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0xc3bef09f watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xc3c8d7ab register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xc3eddc8e __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0xc4036450 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xc407a1d4 gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc4346bfd inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xc43871d9 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0xc4641afe powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0xc47c969d usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc4ad62d3 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xc4d17116 pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0xc4d70a93 css_next_descendant_post +EXPORT_SYMBOL_GPL vmlinux 0xc4ec93a4 skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xc5022a42 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0xc531ef3c skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0xc5397da6 xenbus_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xc554c399 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0xc56a0276 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0xc570ef00 isa_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc5927284 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0xc5a581da cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0xc5b95e71 PageHuge +EXPORT_SYMBOL_GPL vmlinux 0xc5bab3fe btree_init +EXPORT_SYMBOL_GPL vmlinux 0xc5d37180 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0xc5dddc3a __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xc5e8954e crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xc60f75ec __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc6381610 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0xc63a1109 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc66b981e shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xc6708d8b ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xc6711f44 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xc6839eba blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0xc68aa090 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0xc690866c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xc690a479 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0xc6918f09 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6bdf7f2 rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xc6c107ff iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xc6cd2e4c stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0xc6d13e91 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0xc7002ac4 evtchn_make_refcounted +EXPORT_SYMBOL_GPL vmlinux 0xc723c710 devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xc7248390 ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc732767e list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0xc75940a7 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0xc76228a5 blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0xc763ff24 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0xc792e653 print_context_stack_bp +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7c06879 rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7e05263 tpm_dev_vendor_release +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc8637d46 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xc877ff0e regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc87e487a sched_clock_idle_sleep_event +EXPORT_SYMBOL_GPL vmlinux 0xc89798af tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0xc8adc423 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8bb19e4 pinctrl_find_and_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xc8e65221 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc926d07e tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0xc94e9242 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0xc954d2e5 tpm_show_caps +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc97d1140 cpufreq_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0xc9856577 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0xc9991b31 pinctrl_pm_select_sleep_state +EXPORT_SYMBOL_GPL vmlinux 0xc99e32d0 xenbus_register_backend +EXPORT_SYMBOL_GPL vmlinux 0xc9b34516 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0xc9badf3e ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0xc9c3f176 hpet_register_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xc9c90505 smp_ops +EXPORT_SYMBOL_GPL vmlinux 0xc9d2cde7 devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xca23f68d __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xca608981 get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0xca74f9fb usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca81ea9a xenbus_transaction_end +EXPORT_SYMBOL_GPL vmlinux 0xca85d8cf tracepoint_probe_update_all +EXPORT_SYMBOL_GPL vmlinux 0xca9b5363 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xcabc06ee devres_add +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcaf2a012 device_register +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb25f6ed shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb76f80a task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0xcb7eda6e flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xcb808fd0 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0xcb89b667 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xcb9b162e clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0xcbe358cf ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0xcbe6a2b2 default_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcbf098af key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0xcc14e968 extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcc1f07f9 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0xcc1f1c3d inet_twdr_hangman +EXPORT_SYMBOL_GPL vmlinux 0xcc6ab305 is_dock_device +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcc8a9239 gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccea4e34 perf_get_x86_pmu_capability +EXPORT_SYMBOL_GPL vmlinux 0xcd1516df register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xcd6be6ca rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcdacffdc tpm_read +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xce06c538 dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xce0b9b59 max77693_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xce289c1e fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0xce36abd7 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0xce37d313 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0xce46e140 ktime_get_ts +EXPORT_SYMBOL_GPL vmlinux 0xce50de91 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce8afbb5 m2p_add_override +EXPORT_SYMBOL_GPL vmlinux 0xce9c922e rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0xceb13b60 efivars_register +EXPORT_SYMBOL_GPL vmlinux 0xced2c4c4 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xced7fa8f ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0xcedcf64b ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcef0284d pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0xcef1dd0e perf_check_microcode +EXPORT_SYMBOL_GPL vmlinux 0xcf13f754 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0xcf2574d0 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0xcf3d30a4 inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xcf4bedb2 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf5c51ce xenbus_dev_groups +EXPORT_SYMBOL_GPL vmlinux 0xcf6a9fe7 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0xcf763092 register_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0xcf8c8879 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0xcfc62f27 xen_start_info +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfd4057e __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0xcfeea3be usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0xcffa2aff spi_populate_width_msg +EXPORT_SYMBOL_GPL vmlinux 0xd019b5ad spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd0458ccb xenbus_strstate +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd08de544 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0xd0a3d426 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0c857a1 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0xd0d72364 iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0xd0dcba7c netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd0dd448a led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0xd0f2a18d __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0xd0f7613d dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xd10f835d xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0xd119f1f9 usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0xd1270bf2 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xd12ff91b tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0xd14bc4d9 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xd14f5bcf percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd1507e59 erst_clear +EXPORT_SYMBOL_GPL vmlinux 0xd1577bb6 pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xd161ae71 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd1808904 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0xd1b2afe5 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0xd1b2db37 tracepoint_probe_register_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xd1d26fa4 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd1f51a37 nl_table +EXPORT_SYMBOL_GPL vmlinux 0xd1fad3c4 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd21161a3 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xd217ce9f wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd242f90e virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0xd258217d clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd2aaeb4e kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0xd2c58ab2 apei_exec_noop +EXPORT_SYMBOL_GPL vmlinux 0xd2ce2404 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd2d4dac8 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xd2d6467b fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0xd2df9046 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0xd2e3357f tpm_show_durations +EXPORT_SYMBOL_GPL vmlinux 0xd2e9400e usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xd30332ae crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0xd32fe193 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xd349ff4a thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd389c399 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0xd3a5f5f4 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd3c92154 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xd3d0a97d cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0xd3d75c09 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xd3d85cf5 preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xd3e1358f dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0xd3eb68a4 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4038c54 regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0xd407adfe xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0xd4430fdb tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd4536e0f rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0xd4774b79 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0xd47e45c1 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xd48b0005 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0xd48c435b max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xd496d8c8 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0xd49816f5 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0xd4ba25d9 rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4cad45e clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0xd4ec9eba device_store_int +EXPORT_SYMBOL_GPL vmlinux 0xd51f84c0 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xd53d6280 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd544e902 pgprot_writecombine +EXPORT_SYMBOL_GPL vmlinux 0xd550560f __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd55d358d ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0xd5840e07 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5d68fd4 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0xd5f7b608 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0xd6099a80 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xd6235fa7 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd62392dc da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0xd62ba0e9 pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0xd63a85ee iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0xd64a2da8 pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0xd65218c0 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xd65282b7 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd67f5217 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd69df484 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xd6a07f73 xen_swiotlb_set_dma_mask +EXPORT_SYMBOL_GPL vmlinux 0xd6ba1076 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0xd6c2e04b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0xd6dea45f usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0xd6ed3a8e cper_next_record_id +EXPORT_SYMBOL_GPL vmlinux 0xd6f4fb85 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0xd6fcfde7 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd7167eba usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0xd72feba2 xenbus_read_driver_state +EXPORT_SYMBOL_GPL vmlinux 0xd7399d2a efivar_entry_iter_end +EXPORT_SYMBOL_GPL vmlinux 0xd73d6ee4 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0xd75eb7b9 register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd773e424 virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0xd7747a9e tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0xd77a381d shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd7ab2c0c speedstep_detect_processor +EXPORT_SYMBOL_GPL vmlinux 0xd7b24ce0 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0xd7c16d98 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0xd7cde0e0 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd81dbf1c bus_for_each_drv +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 0xd85b4d20 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd8c76e12 pci_pri_status +EXPORT_SYMBOL_GPL vmlinux 0xd8f896f6 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0xd9008788 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xd913167c ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0xd919806a amd_cache_northbridges +EXPORT_SYMBOL_GPL vmlinux 0xd91af119 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xd91dcec5 register_hotplug_dock_device +EXPORT_SYMBOL_GPL vmlinux 0xd91f0996 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0xd9223f88 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0xd9272ff0 iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0xd92f64d4 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd94b737e erst_read +EXPORT_SYMBOL_GPL vmlinux 0xd985b972 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0xd98e8809 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xd993e411 extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd99e3207 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xd9a34035 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0xd9e26529 rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda44cb37 setup_charger_manager +EXPORT_SYMBOL_GPL vmlinux 0xda91dbbf ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0xdaaa0507 acpi_dev_get_resources +EXPORT_SYMBOL_GPL vmlinux 0xdaac0774 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0xdae2266d driver_attach +EXPORT_SYMBOL_GPL vmlinux 0xdaedb6b2 acpi_dev_pm_attach +EXPORT_SYMBOL_GPL vmlinux 0xdaf0632a dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb04cacc tracepoint_probe_unregister_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xdb07195b wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0xdb2b68f0 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xdb2da2c8 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0xdb37b04c tpm_show_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xdb42df0b key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0xdb580386 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0xdb5d34e0 rcu_batches_completed_preempt +EXPORT_SYMBOL_GPL vmlinux 0xdb79de07 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb9c132e blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0xdb9eec41 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0xdba2c332 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0xdba4ad93 static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0xdbb2be31 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0xdbefcd64 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0xdbf2175b inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc01f8d5 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0xdc14a211 xen_hvm_evtchn_do_upcall +EXPORT_SYMBOL_GPL vmlinux 0xdc1e15f1 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0xdc4791a9 powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0xdc59a32f wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0xdc6699cb acpi_dev_free_resource_list +EXPORT_SYMBOL_GPL vmlinux 0xdc67bb8a wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xdc70f20e pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc9d14e5 ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdcc055b2 alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0xdce98c04 uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdcfc2a4e pinctrl_utils_dt_free_map +EXPORT_SYMBOL_GPL vmlinux 0xdd09d4ba perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd33d79a cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd4ce99a acpi_dev_pm_detach +EXPORT_SYMBOL_GPL vmlinux 0xdd794d33 phys_wc_to_mtrr_index +EXPORT_SYMBOL_GPL vmlinux 0xdd7e91e0 pinctrl_find_gpio_range_from_pin +EXPORT_SYMBOL_GPL vmlinux 0xddadfcf9 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0xddb4863b crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0xddb5de2b list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0xddbca96d rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xddbdb12f dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0xddd50a38 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xddfa53d6 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xde032fec rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0xde2458da posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0xde29c0fc get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xde4dbb6e i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xde4fbfa1 cgroup_unload_subsys +EXPORT_SYMBOL_GPL vmlinux 0xde501e28 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xde624413 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0xde6afac7 md_stop +EXPORT_SYMBOL_GPL vmlinux 0xde747356 intel_msic_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xde768861 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0xde85d836 ftrace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0xde9cc27a usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xdea4c108 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xdeb406f8 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0xdeb8b14f subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xdec5de33 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf17218f watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0xdf1882af dbgp_reset_prep +EXPORT_SYMBOL_GPL vmlinux 0xdf2af64c alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0xdf45db4c da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0xdf538dcc blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xdf560d85 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0xdf66ca81 ucode_cpu_info +EXPORT_SYMBOL_GPL vmlinux 0xdf9a360b iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0xdf9d128a iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0xdfa1fd06 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xdfdc7396 acpi_subsys_prepare +EXPORT_SYMBOL_GPL vmlinux 0xdfed13af sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0xdfee1eb7 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0xdfee5911 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0xdfeff455 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0xdfff2efe xen_xenbus_fops +EXPORT_SYMBOL_GPL vmlinux 0xe003e044 __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe01ee5f2 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe04f02bf user_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe0a59706 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe0b26381 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xe0b6b646 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xe0b7414d cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0xe0c4c876 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xe0c77bb5 mce_notify_irq +EXPORT_SYMBOL_GPL vmlinux 0xe0f94f1c ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0xe0fc2a09 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0xe10cbc03 skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0xe10cd6ad erst_get_record_id_begin +EXPORT_SYMBOL_GPL vmlinux 0xe135a5eb platform_bus +EXPORT_SYMBOL_GPL vmlinux 0xe142daea arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0xe14ce7cb inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xe15b35d0 iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0xe165e5ff driver_find +EXPORT_SYMBOL_GPL vmlinux 0xe16e7ccb thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe16fa96a usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe1798bfd md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0xe18681cd virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0xe189d8cb md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0xe1923c28 efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0xe19fec0f power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1c32794 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0xe1dc0dec xen_swiotlb_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0xe1ded3e8 pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xe1e39241 spi_async +EXPORT_SYMBOL_GPL vmlinux 0xe21bf28e init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xe2651b2b usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0xe26e46f0 acpi_dev_resource_ext_address_space +EXPORT_SYMBOL_GPL vmlinux 0xe2946a41 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xe295c0ff is_hpet_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe2d6396d blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0xe2e7840d regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xe2ea0c60 regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0xe2f84739 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xe2fb3706 device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe316ce59 pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0xe31a7c99 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xe354ac92 ata_acpi_cbl_80wire +EXPORT_SYMBOL_GPL vmlinux 0xe36b5dd5 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe386f0e3 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xe3887904 blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xe388fb39 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xe38cf369 regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xe3a6421b dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe3bc7fd4 hpet_unregister_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xe3dadc9b xenbus_watch_path +EXPORT_SYMBOL_GPL vmlinux 0xe3f3ba4f usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0xe40237f9 devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xe40ef98c pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0xe41534ce bind_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe439815c erst_get_record_count +EXPORT_SYMBOL_GPL vmlinux 0xe46d7533 tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xe4768cec srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0xe4b7b812 rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0xe4bfe6db sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xe4c331b6 acpi_os_unmap_memory +EXPORT_SYMBOL_GPL vmlinux 0xe4c4b28f gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xe4e68bc8 apei_map_generic_address +EXPORT_SYMBOL_GPL vmlinux 0xe51595ea regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe52ae762 __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0xe53ac38f alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0xe542e1d6 __rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0xe56c421f invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0xe574fdd2 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0xe57d2df5 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58b267c shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe598647a usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xe5a215c1 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0xe5a76460 register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0xe5d59bad xenbus_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0xe5e087ec tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0xe6180c9d eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0xe629c9ed dm_set_device_limits +EXPORT_SYMBOL_GPL vmlinux 0xe62ab4c5 rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xe63400b4 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0xe64ad8ea unregister_nmi_handler +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe6587ba7 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xe65f3f06 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0xe68a9e12 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0xe696bf27 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0xe69d1f9e usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0xe6ba40b1 driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6eb4954 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xe7232e0f user_return_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe72f586f xen_unregister_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0xe748a6ca cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe7695a2e rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xe7d50d1e unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xe7e47d4c ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe88c442a dm_disk +EXPORT_SYMBOL_GPL vmlinux 0xe89f6e5e ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe8ac2447 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0xe8bfab65 ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xe8c646d1 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0xe8c6fdec ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0xe8dffb72 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xe8f4ff94 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0xe93b7d1d usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe945358b irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xe953b1d7 __intel_mid_cpu_chip +EXPORT_SYMBOL_GPL vmlinux 0xe97dfd43 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xe99fc055 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0xe9cdf80c regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0xe9ce931a kvm_para_available +EXPORT_SYMBOL_GPL vmlinux 0xea03d087 blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea1f47d5 pinctrl_pm_select_idle_state +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea4f9b06 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0xead796ee __module_address +EXPORT_SYMBOL_GPL vmlinux 0xeb1c3628 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xeb2798f7 xen_destroy_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0xeb370805 __apei_exec_run +EXPORT_SYMBOL_GPL vmlinux 0xeb6e4f5c virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0xeb769e9b usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0xeb833c22 xen_has_pv_disk_devices +EXPORT_SYMBOL_GPL vmlinux 0xeb93db7e usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0xeb9abbee ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xeb9c40dd init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0xebaba5a3 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0xebd2dc94 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xec0c1b33 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec276fd5 regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0xec2d9cab crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0xec2e99aa fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0xec3b6ea2 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xec52cd52 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0xec788ee5 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xec7c221e edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0xec7ceff4 xenbus_dev_changed +EXPORT_SYMBOL_GPL vmlinux 0xec8ba774 cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0xec9763ce stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0xecdd85b5 xen_swiotlb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0xecf875f9 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0xed350687 rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0xed5da170 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0xed62eb5c crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0xed63f275 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0xed741cd4 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0xedbc6f67 gnttab_end_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xedd49930 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0xedd8663b platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xeddb6f45 clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0xedf3f1f1 do_machine_check +EXPORT_SYMBOL_GPL vmlinux 0xedf4adf3 devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0xee000d34 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0xee3c0c9c crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee9f4efd pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0xeea943d0 tpm_dev_release +EXPORT_SYMBOL_GPL vmlinux 0xeee81199 crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0xef1c08c6 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0xef1f6e23 apei_resources_request +EXPORT_SYMBOL_GPL vmlinux 0xef23d470 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0xef36cc77 acpi_ec_remove_query_handler +EXPORT_SYMBOL_GPL vmlinux 0xef409b74 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0xef45507d fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef6e1627 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0xef782b88 gnttab_grant_foreign_access_subpage +EXPORT_SYMBOL_GPL vmlinux 0xef81ff47 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0xef8b26c8 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xef999af2 regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0xefbb1b84 ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0xefc2e581 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0xefce8127 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0xefe2eaf7 ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0xefeb4b6b __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0xeff20bc5 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0xeff3732b ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0xf03bbed8 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf054ac97 intel_msic_irq_read +EXPORT_SYMBOL_GPL vmlinux 0xf066a3e6 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0xf0696401 acpi_pci_detect_ejectable +EXPORT_SYMBOL_GPL vmlinux 0xf0c7fbf5 da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0xf0cbeb5d ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xf0d4a290 regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf13572bd attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0xf163c4b9 shake_page +EXPORT_SYMBOL_GPL vmlinux 0xf16b32f3 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf186c82f nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xf197ab0a pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0xf1aa5773 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1b551d9 ibft_addr +EXPORT_SYMBOL_GPL vmlinux 0xf1b9afbc ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0xf1c2d74d ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xf1c3f187 balloon_devinfo_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf1c88249 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0xf1f966c8 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf23148a4 cper_estatus_check +EXPORT_SYMBOL_GPL vmlinux 0xf23fd83f mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xf2469a92 tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0xf256af21 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf27bf269 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xf2825085 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0xf2c85436 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0xf2d11fd4 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xf2d8b231 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0xf2da4aa5 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0xf2daa1de pinctrl_select_state +EXPORT_SYMBOL_GPL vmlinux 0xf2f077cc pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0xf2f2b182 pstore_register +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf30fda27 lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0xf3181005 usb_debug_root +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 0xf33ae5da tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xf33c21d0 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0xf35b2937 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf3846d05 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf3935258 xenbus_dev_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xf3935cae sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3c7521c class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xf3e1c863 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0xf3ec6b41 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0xf42c7ed9 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xf43582f7 ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0xf443dba1 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf4448803 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xf449c61f scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0xf46c391d x86_hyper_kvm +EXPORT_SYMBOL_GPL vmlinux 0xf479e616 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0xf47b42dd __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0xf4924995 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4d06157 acpi_dev_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0xf4d0b190 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0xf4d17267 use_mm +EXPORT_SYMBOL_GPL vmlinux 0xf4dd36d2 xenbus_match +EXPORT_SYMBOL_GPL vmlinux 0xf4e10b8f power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0xf4e88ed6 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf51d412b pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0xf53de117 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf5566122 get_device +EXPORT_SYMBOL_GPL vmlinux 0xf5785b42 evtchn_get +EXPORT_SYMBOL_GPL vmlinux 0xf578f538 devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xf581e3ef sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0xf5907283 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0xf5945bac gnttab_free_grant_references +EXPORT_SYMBOL_GPL vmlinux 0xf59472af iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5bebe67 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0xf5fef4e3 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf6028e3c register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xf60eb9b7 blkio_subsys +EXPORT_SYMBOL_GPL vmlinux 0xf61dd806 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0xf6263c71 xenbus_dev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf6325e4c ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0xf675ce82 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0xf6b4ecca pci_pri_enabled +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6f5ed26 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0xf7016530 xenbus_gather +EXPORT_SYMBOL_GPL vmlinux 0xf7149251 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0xf7322bc8 pv_time_ops +EXPORT_SYMBOL_GPL vmlinux 0xf75b77c1 ata_sas_port_async_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf7d60ed2 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0xf7daadc3 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xf7dd224d transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0xf7e75b8a i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0xf80c70c8 nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xf816c866 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0xf82f16b3 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf8405493 gnttab_unmap_refs +EXPORT_SYMBOL_GPL vmlinux 0xf856d280 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xf87a8c07 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf89aa463 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xf8d33468 usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0xf8defb37 crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0xf8e6fee5 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8f730ba spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0xf8fbd915 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf912d0a2 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf951de99 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0xf95c868b setup_irq +EXPORT_SYMBOL_GPL vmlinux 0xf9626b53 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0xf96ea2f8 rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0xf97001ad crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xf970fdd1 user_update +EXPORT_SYMBOL_GPL vmlinux 0xf9765833 dmi_match +EXPORT_SYMBOL_GPL vmlinux 0xf97666a0 set_memory_rw +EXPORT_SYMBOL_GPL vmlinux 0xf9978681 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9b2480f tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9d9264e xen_have_vector_callback +EXPORT_SYMBOL_GPL vmlinux 0xf9fa6f36 unregister_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0xfa012fe7 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0xfa0314f2 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0xfa15bdc5 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa43ba05 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0xfa5d3b6d regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0xfa663a39 pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xfa666115 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0xfa684f57 scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0xfa73ea99 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0xfa84243f inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0xfa93547d pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xfaa12e98 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0xfaae1df9 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xfaceeff7 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0xfada7758 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0xfadd9ac5 smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xfb00c55f dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb402b3a pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0xfb44b4f1 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0xfb4d1857 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0xfb513d97 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0xfb5741b0 clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0xfb64b230 acpi_processor_ffh_cstate_probe +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb8148f8 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0xfb83db03 cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xfb9989b2 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0xfbb856af relay_flush +EXPORT_SYMBOL_GPL vmlinux 0xfbba81f4 da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0xfbc059c2 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0xfbd43474 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0xfbfc9b69 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc322a3b regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0xfc3b4246 acpi_bus_update_power +EXPORT_SYMBOL_GPL vmlinux 0xfc4f4953 alarm_init +EXPORT_SYMBOL_GPL vmlinux 0xfc63eb4c iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0xfc968c8b apei_exec_write_register_value +EXPORT_SYMBOL_GPL vmlinux 0xfcd0e345 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfd05464b klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0xfd1de4bd __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0xfd4ced63 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0xfd51b281 gnttab_end_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0xfd5314f1 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xfd673e7a devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xfd7243c7 erst_disable +EXPORT_SYMBOL_GPL vmlinux 0xfd824ec8 vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xfd9692c8 rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xfda7f6d3 pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0xfdabe872 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xfdb43a46 platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0xfde173ed scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xfe2f0230 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0xfe40866e __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0xfe727411 get_phys_to_machine +EXPORT_SYMBOL_GPL vmlinux 0xfe8ecb93 sysfs_schedule_callback +EXPORT_SYMBOL_GPL vmlinux 0xfe90a939 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfea34980 pskb_put +EXPORT_SYMBOL_GPL vmlinux 0xfeb9e7e3 fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfed28f78 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0xfeda4e1c look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff068350 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0xff1c9e41 usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xff25501a cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff5f2b0e __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0xff6036de bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xffa40307 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xffafc111 fuse_dev_operations --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/i386/lowlatency.compiler +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/i386/lowlatency.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4 --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/i386/lowlatency.modules +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/i386/lowlatency.modules @@ -0,0 +1,4089 @@ +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_fourport +8250_hub6 +8255 +8255_pci +8390 +8390p +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm860x-ts +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +9p +9pnet +9pnet_rdma +9pnet_virtio +BusLogic +DAC960 +NCR53c406a +a100u2w +a3d +a8293 +aacraid +aat2870-regulator +aat2870_bl +ab3100 +ab3100-otp +abituguru +abituguru3 +ablk_helper +ac97_bus +acard-ahci +acecad +acenic +acer-wmi +acerhdf +acpi_extlog +acpi_ipmi +acpi_pad +acpi_power_meter +acpiphp_ibm +acquirewdt +act2000 +act200l-sir +act_csum +act_gact +act_ipt +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +actisys-sir +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 +ad5930 +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 +ad9850 +ad9852 +ad9910 +ad9951 +ad_sigma_delta +adcxx +addi_apci_035 +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-keys +adp5520_bl +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads1015 +ads7828 +ads7846 +ads7871 +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adv7170 +adv7175 +adv7180 +adv_pci1710 +adv_pci1723 +adv_pci1724 +adv_pci_dio +advansys +advantechwdt +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +aes-i586 +aesni-intel +af-rxrpc +af9013 +af9033 +af_802154 +af_alg +af_key +af_packet_diag +affs +ah4 +ah6 +aha152x +aha152x_cs +aha1542 +aha1740 +ahci +ahci_platform +aic79xx +aic7xxx +aic94xx +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +airo +airo_cs +ak8975 +algif_hash +algif_skcipher +ali-agp +ali-ircc +alim1535_wdt +alim7101_wdt +alphatrack +altera-ci +altera-stapl +altera_jtaguart +altera_ps2 +altera_uart +alx +ambassador +amc6821 +amd-rng +amd5536udc +amd76x_edac +amd76xrom +amd8111e +amd_freq_sensitivity +amilo-rfkill +amplc_dio200 +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pc263 +amplc_pci224 +amplc_pci230 +amplc_pci263 +ams369fg06 +analog +anatop-regulator +ansi_cprng +anubis +aoe +apanel +apds9300 +apds9802als +apds990x +apm +apple-gmux +apple_bl +appledisplay +applesmc +appletalk +appletouch +applicom +ar5523 +ar7part +arc-rawmode +arc-rimi +arc4 +arc_ps2 +arc_uart +arcfb +arcmsr +arcnet +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arp_tables +arpt_mangle +arptable_filter +as3711-regulator +as3711_bl +as5011 +asb100 +asc7621 +asix +ast +asus-laptop +asus-nb-wmi +asus-wmi +asus_atk0110 +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at86rf230 +at91_ether +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-pwm-bl +atmel-ssc +atmel_cs +atmel_mxt_ts +atmel_pci +atmel_pwm +atmtcp +atp +atp870u +atxp1 +aty128fb +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo-pixcir-ts +auo_k1900fb +auo_k1901fb +auo_k190x +auth_rpcgss +authenc +authencesn +autofs4 +avm_cs +avma1_cs +avmfritz +ax25 +ax88179_178a +axnet_cs +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 +bcm5974 +bcm_wimax +bcma +bcma-hcd +bd6107 +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1770glc +bh1780gli +binfmt_aout +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluecard_cs +bluetooth +bma150 +bma180 +bmp085 +bmp085-i2c +bmp085-spi +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bonding +bpa10x +bpck +bpck6 +bpctl_mod +bpqether +bq2415x_charger +bq24190_charger +bq24735-charger +bq27x00_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +broadsheetfb +bsd_comp +bt3c_cs +bt819 +bt856 +bt866 +bt878 +btcoexist +btcx-risc +btmrvl +btmrvl_sdio +btmtk_usb +btrfs +btsdio +bttv +btuart_cs +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +bw-qcam +bypass +c-qcam +c101 +c2port-duramar2150 +c4 +c67x00 +c6xdigio +c_can +c_can_pci +c_can_platform +cachefiles +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 +cc770 +cc770_isa +cc770_platform +cciss +ccm +cdc-acm +cdc-phonet +cdc-wdm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc_subset +cedusb +ceph +cfag12864b +cfag12864bfb +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chipreg +chnl_net +chromeos_laptop +ci_hdrc +ci_hdrc_msm +ci_hdrc_pci +cifs +cirrus +cirrusfb +ck804xrom +classmate-laptop +clearpad_tm1217 +clip +clk-max77686 +clk-s2mps11 +clk-si5351 +clk-twl6040 +clk-wm831x +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm36651 +cm4000_cs +cm4040_cs +cma3000_d0x +cma3000_d0x_i2c +cmac +cmdlinepart +cmtp +cnic +cobra +coda +com20020 +com20020-isa +com20020-pci +com20020_cs +com90io +com90xx +comedi +comedi_bond +comedi_fc +comedi_parport +comedi_test +comm +compal-laptop +configfs +contec_pci_dio +cops +cordic +core +coretemp +cosa +cp210x +cpcihp_generic +cpcihp_zt5550 +cpia2 +cpqphp +cpu-notifier-error-inject +cpu5wdt +cpuid +cr_bllcd +cramfs +crc-ccitt +crc-itu-t +crc32 +crc32-pclmul +crc7 +crc8 +cros_ec +cros_ec_i2c +cros_ec_keyb +cros_ec_spi +crvml +cryptd +crypto_null +crypto_user +cryptoloop +crystalhd +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 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx8800 +cx8802 +cx88xx +cxacru +cxd2099 +cxd2820r +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cxt1e1 +cy8ctmg110_ts +cyapa +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-hwmon +da9052-regulator +da9052_bl +da9052_onkey +da9052_tsi +da9052_wdt +da9055-hwmon +da9055-regulator +da9055_onkey +da9055_wdt +da9063-regulator +da9210-regulator +daqboard2000 +das08 +das08_cs +das08_isa +das08_pci +das16 +das16m1 +das1800 +das6402 +das800 +db9 +dc395x +dca +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +dcdbas +ddbridge +de2104x +de4x5 +decnet +deflate +defxx +dell-laptop +dell-led +dell-wmi +dell-wmi-aio +dell_rbu +denali +denali_dt +denali_pci +des_generic +designware_i2s +dgap +dgnc +dgrp +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +diskonchip +diva_idi +diva_mnt +divacapi +divadidd +divas +dl2k +dlci +dlm +dm-bio-prison +dm-bufio +dm-cache +dm-cache-cleaner +dm-cache-mq +dm-crypt +dm-delay +dm-flakey +dm-log +dm-log-userspace +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 +dm1105 +dm9601 +dme1737 +dmfe +dmi-sysfs +dmm32at +dmx3191d +dn_rtmsg +dnet +docg3 +docg4 +donauboe +dpt_i2o +drbd +drm +drm_kms_helper +drm_usb +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsa_core +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +dt282x +dt3000 +dt3155v4l +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-dw2102 +dvb-usb-ec168 +dvb-usb-friio +dvb-usb-gl861 +dvb-usb-gp8psk +dvb-usb-it913x +dvb-usb-lmedm04 +dvb-usb-m920x +dvb-usb-mxl111sf +dvb-usb-nova-t-usb2 +dvb-usb-opera +dvb-usb-pctv452e +dvb-usb-rtl28xxu +dvb-usb-technisat-usb2 +dvb-usb-ttusb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +dvb_usb_v2 +dw_dmac +dw_dmac_core +dw_dmac_pci +dwc2 +dwc2_pci +dwc2_platform +dwc3 +dwc3-pci +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e4000 +e752x_edac +e7xxx_edac +earth-pt1 +eata +ebt_802_3 +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ec100 +ec_sys +echo +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 +elo +elsa_cs +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em_canid +em_cmp +em_ipset +em_meta +em_nbyte +em_text +em_u32 +emc1403 +emc2103 +emc6w201 +emi26 +emi62 +empeg +ems_pci +ems_pcmcia +ems_usb +emu10k1-gp +enc28j60 +enclosure +ene_ir +eni +enic +epat +epia +epic100 +eql +esas2r +esb2rom +esd_usb2 +esi-sir +esp4 +esp6 +et131x +ethoc +eurotechwdt +evbug +exofs +extcon-adc-jack +extcon-arizona +extcon-gpio +extcon-max77693 +extcon-max8997 +extcon-palmas +ezusb +f2fs +f71805f +f71808e_wdt +f71882fg +f75375s +f81232 +fakelb +fam15h_power +fan53555 +farsync +faulty +fb_ddc +fb_sys_fops +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 +floppy +fm801-gp +fm_drv +fmc +fmc-chardev +fmc-fakedev +fmc-trivial +fmc-write-eeprom +fmvj18x_cs +fnic +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +freevxfs +friq +frpw +fsa9480 +fscache +fschmd +ft1000 +ft1000_pcmcia +ftdi-elan +ftdi_sio +ftl +fujitsu-laptop +fujitsu-tablet +fujitsu_ts +fusbh200-hcd +g450_pll +g760a +g762 +g_NCR5380 +g_NCR5380_mmio +g_acm_ms +g_audio +g_cdc +g_dbgp +g_ether +g_ffs +g_hid +g_mass_storage +g_midi +g_ncm +g_nokia +g_printer +g_serial +g_webcam +g_zero +gadgetfs +gamecon +gameport +garmin_gps +garp +gcm +gdmtty +gdmulte +gdmwm +gdth +gen_probe +generic +generic-adc-battery +generic_bl +geode-aes +geode-rng +gf128mul +gf2k +gfs2 +ghash-generic +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +glue_helper +gluebi +gma500_gfx +go7007 +go7007-loader +go7007-usb +goku_udc +goldfishfb +gp2ap002a00f +gp2ap020a00f +gpio +gpio-74x164 +gpio-addr-flash +gpio-adp5520 +gpio-adp5588 +gpio-amd8111 +gpio-arizona +gpio-charger +gpio-cs5535 +gpio-da9052 +gpio-da9055 +gpio-f7188x +gpio-fan +gpio-generic +gpio-ich +gpio-ir-recv +gpio-it8761e +gpio-janz-ttl +gpio-kempld +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio-pca953x +gpio-pcf857x +gpio-pch +gpio-rdc321x +gpio-regulator +gpio-sch +gpio-tps65912 +gpio-ts5500 +gpio-twl6040 +gpio-ucb1400 +gpio-viperboard +gpio-vx855 +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +gpio_backlight +gpio_keys +gpio_keys_polled +gpio_mouse +gpio_tilt_polled +gre +grip +grip_mp +gsc_hpdi +gspca_benq +gspca_conex +gspca_cpia1 +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_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gtco +guillemot +gunze +gx-suspmod +gx1fb +gxfb +hamachi +hampshire +hangcheck-timer +hanwang +hci +hci_uart +hci_vhci +hdaps +hdlc +hdlc_cisco +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdlcdrv +hdpvr +he +hecubafb +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfc_usb +hfcmulti +hfcpci +hfcsusb +hfs +hfsplus +hgafb +hid +hid-a4tech +hid-apple +hid-appleir +hid-aureal +hid-axff +hid-belkin +hid-cherry +hid-chicony +hid-cypress +hid-dr +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-generic +hid-gyration +hid-holtek-kbd +hid-holtek-mouse +hid-holtekff +hid-huion +hid-hyperv +hid-icade +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-lenovo-tpkbd +hid-logitech +hid-logitech-dj +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hid-petalynx +hid-picolcd +hid-pl +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-gyro-3d +hid-sensor-hub +hid-sensor-iio-common +hid-sensor-magn-3d +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-wacom +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hidp +hih6130 +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hmc5843 +hmc6352 +hopper +horizon +hostap +hostap_cs +hostap_pci +hostap_plx +hostess_sv11 +hp-wireless +hp-wmi +hp100 +hp_accel +hpfs +hpilo +hpsa +hptiop +hpwdt +hsi +hsi_char +hso +hsr +htc-pasic3 +htcpen +htu21 +huawei_cdc_ncm +hv_balloon +hv_netvsc +hv_storvsc +hv_utils +hv_vmbus +hwa-hc +hwa-rc +hwmon-vid +hwpoison-inject +hx8357 +hyperv-keyboard +hyperv_fb +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-designware-core +i2c-designware-pci +i2c-designware-platform +i2c-dev +i2c-diolan-u2c +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-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 +i2o_block +i2o_bus +i2o_config +i2o_core +i2o_proc +i2o_scsi +i3000_edac +i3200_edac +i40e +i40evf +i5000_edac +i5100_edac +i5400_edac +i5k_amb +i6300esb +i7300_edac +i740fb +i7core_edac +i810fb +i82092 +i82365 +i82860_edac +i82875p_edac +i82975x_edac +i8k +i915 +i915_bdw +iTCO_vendor_support +iTCO_wdt +ib700wdt +ib_addr +ib_cm +ib_core +ib_ipoib +ib_iser +ib_isert +ib_mad +ib_mthca +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +ibm_rtl +ibmaem +ibmasm +ibmasr +ibmpex +ibmphp +ichxrom +icn +icp_multi +ics932s401 +ideapad-laptop +ideapad_slidebar +idmouse +idt77252 +idt_gen2 +idtcps +ie6xx_wdt +ieee802154 +ifb +iforce +igb +igbvf +iguanair +ii_pci20kc +iio-trig-interrupt +iio-trig-periodic-rtc +iio-trig-sysfs +iio_dummy +iio_hwmon +ili210x +ili922x +ili9320 +imm +imon +ims-pcu +imx074 +in2000 +ina209 +ina2xx +industrialio +industrialio-triggered-buffer +inet_diag +inexio +inftl +initio +input-polldev +int51x1 +intel-mid-touch +intel-rng +intel-rst +intel-smartconnect +intel_ips +intel_menlow +intel_mid_battery +intel_mid_dma +intel_mid_powerbtn +intel_mid_thermal +intel_oaktrail +intel_powerclamp +intel_rapl +intel_scu_ipcutil +intel_vr_nor +intelfb +interact +interval_tree_test +inv-mpu6050 +io_edgeport +io_ti +ioatdma +ioc4 +iowarrior +ip6_gre +ip6_tables +ip6_tunnel +ip6_vti +ip6t_MASQUERADE +ip6t_NPT +ip6t_REJECT +ip6t_SYNPROXY +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_mh +ip6t_rpfilter +ip6t_rt +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6table_security +ip_gre +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netnet +ip_set_hash_netport +ip_set_hash_netportnet +ip_set_list_set +ip_tables +ip_tunnel +ip_vs +ip_vs_dh +ip_vs_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 +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ipg +iphase +ipheth +ipip +ipmi_devintf +ipmi_poweroff +ipmi_si +ipmi_watchdog +ipoctal +ipr +ips +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_SYNPROXY +ipt_ULOG +ipt_ah +ipt_rpfilter +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +iptable_security +ipw +ipw2100 +ipw2200 +ipwireless +ipx +ir-jvc-decoder +ir-kbd-i2c +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +ir-rc5-decoder +ir-rc5-sz-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sony-decoder +ir-usb +ircomm +ircomm-tty +irda +irda-usb +iris +irlan +irnet +irtty-sir +isci +iscsi_boot_sysfs +iscsi_ibft +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isofs +isp116x-hcd +isp1362-hcd +isp1704_charger +isp1760 +it87 +it8712f_wdt +it87_wdt +it913x-fe +itd1000 +ite-cir +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iw_nes +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsm +k10temp +k8temp +kafs +kalmia +kaweth +kb3886_bl +kbic +kbtab +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keucr +keyspan +keyspan_pda +keyspan_remote +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +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 +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 +leds-88pm860x +leds-adp5520 +leds-atmel-pwm +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-lp5521 +leds-lp5523 +leds-lp5562 +leds-lp55xx-common +leds-lp8501 +leds-lp8788 +leds-lt3593 +leds-max8997 +leds-mc13783 +leds-net48xx +leds-ot200 +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pca9685 +leds-pwm +leds-regulator +leds-ss4200 +leds-tca6507 +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 +lg-vl600 +lg2160 +lgdt3305 +lgdt330x +lgs8gxx +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +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 +libsrp +lightning +line6usb +lineage-pem +linear +lirc_bt829 +lirc_dev +lirc_igorplugusb +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +litelink-sir +lkkbd +llc +llc2 +llog_test +lm25066 +lm3533-als +lm3533-core +lm3533-ctrlbank +lm3533_bl +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 +logibm +longhaul +longrun +lov +lp +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp8755 +lp8788-charger +lp8788_bl +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc2978 +ltc4151 +ltc4215 +ltc4245 +ltc4261 +ltpc +ltv350qv +lustre +lv5207lp +lvfs +lxfb +lz4 +lz4_compress +lz4hc +lz4hc_compress +m25p80 +m2m-deinterlace +m52790 +m88rs2000 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +ma600-sir +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +mac80211 +mac80211_hwsim +mac802154 +mac_hid +macb +machzwd +macmodes +macvlan +macvtap +mag3110 +magellan +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +matrix-keymap +matrix_keypad +matrox_w1 +matroxfb_DAC1064 +matroxfb_Ti3026 +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +max1111 +max11801_ts +max1363 +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max2165 +max3100 +max34440 +max517 +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77686 +max77693 +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925-regulator +max8925_bl +max8925_onkey +max8925_power +max8952 +max8973-regulator +max8997 +max8997_charger +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 +mce-inject +mce_amd_inj +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp4725 +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdacon +mdc +mdc800 +mdio +me4000 +me_daq +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mei +mei-me +mei_phy +mem2mem_testdev +memstick +mena21_wdt +metro-usb +metronomefb +meye +mfd +mga +mgc +michael_mic +microread +microread_i2c +microread_mei +microtek +mii +minix +mip6 +mite +mixcomwd +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mma8450 +mmc_block +mms114 +mos7720 +mos7840 +moxa +mpc624 +mpoa +mpr121_touchkey +mpt2sas +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +mrst_max3110 +ms_block +msdos +msi-laptop +msi-wmi +msp3400 +mspro_block +msr +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt29f_spinand +mt312 +mt352 +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtd_dataflash +mtdblock +mtdblock_ro +mtdoops +mtdram +mtdswap +mtip32xx +mtouch +multipath +multiq3 +musb_hdrc +mv88e6060 +mv88e6xxx_drv +mv_u3d_core +mv_udc +mvmdio +mvsas +mvumi +mwave +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxl111sf-demod +mxl111sf-tuner +mxl5005s +mxl5007t +mxm-wmi +mxser +myri10ge +n2 +n411 +n_hdlc +n_r3964 +n_tracerouter +n_tracesink +nand +nand_bch +nand_ecc +nand_ids +nandsim +natsemi +nau7802 +navman +nbd +nci +ncpfs +nct6775 +ne +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netlink_diag +netprio_cgroup +netrom +netsc520 +nettel +netxen_nic +newtonkbd +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 +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nf_synproxy_core +nf_tables +nf_tables_arp +nf_tables_bridge +nf_tables_ipv4 +nf_tables_ipv6 +nfc +nfc_digital +nfcsim +nfcwilink +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nfs +nfs_acl +nfs_layout_nfsv41_files +nfsd +nfsv2 +nfsv3 +nfsv4 +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 +nft_limit +nft_log +nft_meta +nft_nat +nft_rbtree +nft_reject_ipv4 +nftl +ngene +ni65 +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_at_a2150 +ni_at_ao +ni_atmio +ni_atmio16d +ni_daq_700 +ni_daq_dio24 +ni_labpc +ni_labpc_cs +ni_labpc_isadma +ni_labpc_pci +ni_mio_cs +ni_pcidio +ni_pcimio +ni_tio +ni_tiocmd +nicstar +nilfs2 +niu +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 +ns558 +ns83820 +nsc-ircc +nsc_gpio +nsp32 +nsp_cs +ntb +ntb_netdev +ntc_thermistor +ntfs +null_blk +nuvoton-cir +nv_tco +nvidiafb +nvme +nvram +nxt200x +nxt6000 +obdclass +obdecho +objlayoutdriver +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stack_o2cb +ocfs2_stack_user +ocfs2_stackglue +ocrdma +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 +output +ov2640 +ov5642 +ov6650 +ov7640 +ov7670 +ov772x +ov9640 +ov9740 +overlayfs +oxu210hp-hcd +p4-clockmod +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +padlock-aes +padlock-sha +palmas-regulator +panasonic-laptop +panel +paride +parkbd +parport +parport_ax88796 +parport_cs +parport_pc +parport_serial +pas16 +pata_acpi +pata_ali +pata_amd +pata_arasan_cf +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 +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 +pci-stub +pci200syn +pcips2 +pcl711 +pcl724 +pcl726 +pcl730 +pcl812 +pcl816 +pcl818 +pcm3724 +pcmad +pcmcia +pcmcia_core +pcmcia_rsrc +pcmciamtd +pcmda12 +pcmmio +pcmuio +pcnet32 +pcnet_cs +pcrypt +pcspkr +pcwd +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 +phison +phonet +phram +phy-core +phy-generic +phy-gpio-vbus-usb +phy-isp1301 +phy-rcar-usb +phy-samsung-usb +phy-samsung-usb2 +phy-samsung-usb3 +physmap +pixcir_i2c_ts +pktcdvd +pktgen +pl2303 +plat-ram +plat_nand +platform_lcd +plip +plusb +pluto2 +plx_pci +pm-notifier-error-inject +pm2fb +pm3fb +pm80xx +pmbus +pmbus_core +pmc551 +pmcraid +pms +pn533 +pn544 +pn544_i2c +pn544_mei +pn_pep +poc +port100 +poseidon +powermate +powernow-k6 +powernow-k7 +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +ppp_synctty +pppoatm +pppoe +pppox +pps-gpio +pps-ldisc +pps_core +pps_parport +pptp +prism2_usb +ps2mult +psmouse +psnap +pt +pti +ptlrpc +ptp +ptp_pch +pvpanic +pvrusb2 +pwc +pwm_bl +pxa27x_udc +qcaux +qcserial +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qlogic_cs +qlogicfas +qlogicfas408 +qmi_wwan +qnx4 +qnx6 +qt1010 +qt1070 +qt2160 +quatech2 +quatech_daqp_cs +quickstart +quota_tree +quota_v1 +quota_v2 +qxl +r128 +r592 +r6040 +r8152 +r815x +r8169 +r8187se +r8188eu +r8192e_pci +r8192u_usb +r820t +r82600_edac +r852 +r8712u +r8a66597-hcd +r8a66597-udc +radeon +radeonfb +radio-aimslab +radio-aztech +radio-cadet +radio-gemtek +radio-i2c-si470x +radio-isa +radio-keene +radio-ma901 +radio-maxiradio +radio-miropcm20 +radio-mr800 +radio-rtrack2 +radio-sf16fmi +radio-sf16fmr2 +radio-shark +radio-si4713 +radio-si476x +radio-tea5764 +radio-terratec +radio-timb +radio-trust +radio-typhoon +radio-usb-si470x +radio-wl1273 +radio-zoltrix +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +ray_cs +rbd +rbtree_test +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-em-terratec +rc-encore-enltv +rc-encore-enltv-fm53 +rc-encore-enltv2 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-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-tbs-nec +rc-technisat-usb2 +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-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rc5t583-regulator +rcar_vin +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +redboot +redrat3 +reed_solomon +reiserfs +remoteproc +renesas_usbhs +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +rio-scan +rio500 +rionet +rivafb +rj54n1cb0c +rmd128 +rmd160 +rmd256 +rmd320 +rndis_host +rndis_wlan +rocket +romfs +rose +rotary_encoder +rp2 +rpcsec_gss_krb5 +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt61pci +rt73usb +rtc-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-bq32k +rtc-bq4802 +rtc-da9052 +rtc-da9055 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1742 +rtc-ds2404 +rtc-ds3232 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-hid-sensor-time +rtc-isl12022 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max77686 +rtc-max8907 +rtc-max8925 +rtc-max8997 +rtc-max8998 +rtc-mc13xxx +rtc-moxart +rtc-mrst +rtc-msm6242 +rtc-palmas +rtc-pcf2123 +rtc-pcf2127 +rtc-pcf50633 +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-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtd520 +rti800 +rti802 +rtl2830 +rtl2832 +rtl8150 +rtl8180 +rtl8187 +rtl8188ee +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192se +rtl8723-common +rtl8723ae +rtl8723be +rtl8821ae +rtl_pci +rtl_usb +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtlwifi +rts5139 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rxkad +s1d13xxxfb +s2250 +s2255drv +s2io +s3fb +s526 +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s626 +s6e63m0 +s921 +saa6588 +saa6752hs +saa7110 +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7146 +saa7146_vv +saa7164 +saa717x +saa7185 +saa7706h +safe_serial +salsa20-i586 +salsa20_generic +samsung-keypad +samsung-laptop +samsung-q10 +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 +sb1000 +sbc60xxwdt +sbc7240_wdt +sbc8360 +sbc_epx_c3 +sbc_fitpc2_wdt +sbc_gxx +sbe-2t3e3 +sbni +sbp_target +sbs +sbs-battery +sbshc +sc +sc1200wdt +sc520_wdt +sc520cdp +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_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +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_tgt +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_srp +sctp +sctp_probe +scx200 +scx200_acb +scx200_docflash +scx200_gpio +scx200_hrt +scx200_wdt +sdhci +sdhci-acpi +sdhci-pci +sdhci-pltfm +sdhci-pxav2 +sdhci-pxav3 +sdio_uart +sdla +sdr-msi3101 +sdricoh_cs +sealevel +sedlbauer_cs +seed +sep_driver +seqiv +ser_gigaset +serial2002 +serial_cs +serio_raw +sermouse +serpent-sse2-i586 +serpent_generic +serport +serqt_usb2 +ses +sfc +sh_eth +sh_mobile_ceu_camera +sh_mobile_csi2 +sh_veu +shark2 +shpchp +sht15 +sht21 +si21xx +si4713-i2c +si476x-core +sidewinder +sierra +sierra_net +sil164 +sim710 +sir-dev +sis +sis-agp +sis190 +sis5595 +sis900 +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_platform +skel +skfp +skge +sky2 +sl811-hcd +sl811_cs +slcan +slicoss +slip +slram +sm501 +sm501fb +sm7xxfb +sm_common +sm_ftl +smb347-charger +smc-ultra +smc9194 +smc91c92_cs +smm665 +smsc-ircc2 +smsc37b787_wdt +smsc47b397 +smsc47m1 +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +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-at73c213 +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt1605 +snd-azt2316 +snd-azt2320 +snd-azt3328 +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-firewire-speakers +snd-fm801 +snd-gina20 +snd-gina24 +snd-gus-lib +snd-gusclassic +snd-gusextreme +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-hdmi +snd-hda-codec-idt +snd-hda-codec-realtek +snd-hda-codec-si3054 +snd-hda-codec-via +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-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-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-opl3-synth +snd-opl3sa2 +snd-opl4-lib +snd-opl4-synth +snd-opti92x-ad1848 +snd-opti92x-cs4231 +snd-opti93x +snd-oxygen +snd-oxygen-lib +snd-page-alloc +snd-pcm +snd-pcsp +snd-pcxhr +snd-pdaudiocf +snd-portman2x4 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb-common +snd-sb16 +snd-sb16-csp +snd-sb16-dsp +snd-sb8 +snd-sb8-dsp +snd-sbawe +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-atmel-pcm +snd-soc-core +snd-soc-mfld-machine +snd-soc-si476x +snd-soc-simple-card +snd-soc-sn95031 +snd-soc-sst-platform +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-us122l +snd-usb-usx2y +snd-usbmidi-lib +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx-lib +snd-vx222 +snd-vxpocket +snd-wavefront +snd-wss-lib +snd-ymfpci +soc_camera +soc_camera_platform +soc_mediabus +soc_scale_crop +softdog +softing +softing_cs +solo6x10 +solos-pci +sony-btf-mpx +sony-laptop +sonypi +soundcore +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-dw +spi-dw-midpci +spi-dw-mmio +spi-gpio +spi-lm70llp +spi-oc-tiny +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-sc18is602 +spi-tle62x0 +spi-topcliff-pch +spi-xcomm +spi_ks8995 +spidev +squashfs +sr9700 +ssb +ssb-hcd +ssfdc +sst25l +sstfb +ssu100 +ssv_dnp +st +st1232 +st_accel +st_accel_i2c +st_accel_spi +st_drv +st_gyro +st_gyro_i2c +st_gyro_spi +st_magn +st_magn_i2c +st_magn_spi +st_pressure +st_pressure_i2c +st_pressure_spi +st_sensors +st_sensors_i2c +st_sensors_spi +starfire +stb0899 +stb6000 +stb6100 +ste_modem_rproc +stex +stinger +stir4200 +stk1160 +stkwebcam +stmmac +stmpe-keypad +stmpe-ts +stowaway +stp +streamzap +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +svcrdma +svgalib +sworks-agp +sx8 +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 +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +tc1100-wmi +tc3589x-keypad +tca6416-keypad +tca8418_keypad +tcic +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bic +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 +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-kstrtox +test-string_helpers +test_power +tg3 +tgr192 +thinkpad_acpi +thmc50 +ti-adc081c +ti_dac7512 +ti_usb_3410_5052 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timb_dma +timberdale +timblogiw +timbuart +timeriomem-rng +tipc +tlan +tlclk +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmem +tmiofb +tmp006 +tmp102 +tmp401 +tmp421 +tmscsim +toim3232-sir +topstar-laptop +toshiba_acpi +toshiba_bluetooth +touchit213 +touchright +touchwin +tpci200 +tpm-rng +tpm_atmel +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm_i2c_stm_st33 +tpm_infineon +tpm_nsc +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-charger +tps65090-regulator +tps65217 +tps65217-regulator +tps65217_bl +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +tranzport +tridentfb +ts2020 +ts5500_flash +ts_bm +ts_fsm +ts_kmp +tsc2005 +tsc2007 +tsc40 +tscan1 +tsi568 +tsi57x +tsi721_mport +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +tsl4531 +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tuner_it913x +tunnel4 +tunnel6 +turbografx +tusb6010 +tvaudio +tveeprom +tvp5150 +tw2804 +tw9903 +tw9906 +tw9910 +twidjoy +twl6040-vibra +twofish-i586 +twofish_common +twofish_generic +typhoon +u132-hcd +u14-34f +uPD98402 +u_ether +u_rndis +u_serial +uartlite +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +uda1342 +udc-core +udf +udl +udlfb +udp_diag +ueagle-atm +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_sercos3 +uli526x +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 +usb-serial-simple +usb-storage +usb3503 +usb8xxx +usb_8dev +usb_debug +usb_f_acm +usb_f_ecm +usb_f_ecm_subset +usb_f_eem +usb_f_mass_storage +usb_f_ncm +usb_f_obex +usb_f_phonet +usb_f_rndis +usb_f_serial +usb_f_ss_lb +usb_gigaset +usb_wwan +usbatm +usbdux +usbduxfast +usbduxsigma +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usbsevseg +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +userspace-consumer +ushc +usnic_verbs +uss720 +uvcvideo +uvesafb +uwb +ux500 +v4l2-common +v4l2-dv-timings +v4l2-int-device +v4l2-mem2mem +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vfio +vfio-pci +vfio_iommu_type1 +vga16fb +vgastate +vgg2432a4 +vhci-hcd +vhost +vhost_net +vhost_scsi +via +via-camera +via-cputemp +via-ircc +via-rhine +via-rng +via-sdmmc +via-velocity +via686a +via_wdt +viafb +video +videobuf-core +videobuf-dma-contig +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videobuf2-core +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-memops +videobuf2-vmalloc +videocodec +videodev +viperboard +viperboard_adc +virtio-rng +virtio_scsi +virtual +visor +vivi +vlsi_ir +vmac +vme +vme_ca91cx42 +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmlfb +vmw_balloon +vmw_pvscsi +vmw_vmci +vmw_vsock_vmci_transport +vmwgfx +vmxnet3 +vp27smpx +vpx3220 +vringh +vsock +vsxxxaa +vt1211 +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +w1-gpio +w1_bq27000 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1_smem +w1_therm +w35und +w5100 +w5300 +w6692 +w83627ehf +w83627hf +w83627hf_wdt +w83697hf_wdt +w83697ug_wdt +w83781d +w83791d +w83792d +w83793 +w83795 +w83877f_wdt +w83977af_ir +w83977f_wdt +w83l785ts +w83l786ng +w90p910_ts +w9966 +wacom +wacom_i2c +wacom_w8001 +wafer5823wdt +walkera0701 +wanxl +warrior +wbsd +wcn36xx +wd +wd7000 +wdt +wdt_pci +whc-rc +whci +whci-hcd +whiteheat +wil6210 +wimax +winbond-840 +winbond-cir +wire +wishbone-serial +wistron_btns +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wl3501_cs +wlags49_h25_cs +wlags49_h2_cs +wlcore +wlcore_sdio +wlcore_spi +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x-ts +wm831x_backup +wm831x_bl +wm831x_power +wm831x_wdt +wm8350-hwmon +wm8350-regulator +wm8350_power +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-regulator +wm97xx-ts +wmi +wp512 +wusb-cbaf +wusb-wa +wusbcore +x25 +x25_asy +x38_edac +x86_pkg_temp_thermal +x_tables +xc4000 +xc5000 +xcbc +xen-blkback +xen-evtchn +xen-fbfront +xen-gntalloc +xen-gntdev +xen-kbdfront +xen-netback +xen-pciback +xen-pcifront +xen-privcmd +xen-tpmfront +xen_wdt +xenfs +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-enet +xgifb +xgmac +xillybus_core +xillybus_pcie +xirc2ps_cs +xircom_cb +xo15-ebook +xor +xpad +xprtrdma +xsens_mt +xt_AUDIT +xt_CHECKSUM +xt_CLASSIFY +xt_CONNSECMARK +xt_CT +xt_DSCP +xt_HL +xt_HMARK +xt_IDLETIMER +xt_LED +xt_LOG +xt_NETMAP +xt_NFLOG +xt_NFQUEUE +xt_RATEEST +xt_REDIRECT +xt_SECMARK +xt_TCPMSS +xt_TCPOPTSTRIP +xt_TEE +xt_TPROXY +xt_TRACE +xt_addrtype +xt_bpf +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_conntrack +xt_cpu +xt_dccp +xt_devgroup +xt_dscp +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_iprange +xt_ipvs +xt_length +xt_limit +xt_mac +xt_mark +xt_multiport +xt_nat +xt_nfacct +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_realm +xt_recent +xt_sctp +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_tcpudp +xt_time +xt_u32 +xtkbd +xts +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 +zte_ev --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/powerpc/powerpc-e500 +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/powerpc/powerpc-e500 @@ -0,0 +1,16626 @@ +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/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/atm/suni 0x41a6553d suni_init +EXPORT_SYMBOL drivers/atm/uPD98402 0x9800d116 uPD98402_init +EXPORT_SYMBOL drivers/bcma/bcma 0x829fee72 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 0x0300a23f pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x10a51b15 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x3502da60 pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x3a526428 pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0x4aeb7bf2 paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0x5142fc25 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x89af5313 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0xa1c12ae8 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xab1a82d1 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0xd1221a65 pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0xe61ee8bb pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0xf5521a1f pi_write_block +EXPORT_SYMBOL drivers/crypto/caam/caam 0xfd2b02dc caam_get_era +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0x31da6a18 caam_jr_alloc +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0x85b454dc caam_jr_enqueue +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0xbae384a1 gen_split_key +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0xbb030d6e caam_jr_strstatus +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0xd33f25d2 split_key_done +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0xfefa43c2 caam_jr_free +EXPORT_SYMBOL drivers/crypto/talitos 0x1461bc7f talitos_submit +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x1435b903 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x33583de4 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x89fa390e dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xa9f0cfa2 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xc92a295c dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xea211389 dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/edac/edac_core 0x711b03c7 edac_mc_find +EXPORT_SYMBOL drivers/edac/mpc85xx_edac 0x381c29ac mpc85xx_pci_err_probe +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0456635f fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04dd92ce fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x05ed782f fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x09695bef fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x09bbd054 fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x208cb6f2 fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0x23c4312a fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2b8092db fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x39a35790 fw_iso_context_create +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 0x4d95b7dd fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0x50d6f8d4 fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x6495aa4d fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x6c5daae3 fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x748f907f fw_bus_type +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 0x94276a8b fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x985a98ea fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa0fd586f fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa299ab2f fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xad21f13a fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xbd8034ac fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd1786018 fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe307a17d fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe3baa7a8 fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe435020c fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe974f881 fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0xfb165bf6 fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xfb6edb2a fw_send_request +EXPORT_SYMBOL drivers/fmc/fmc 0x213a388c fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0x248317e7 fmc_find_sdb_device +EXPORT_SYMBOL drivers/fmc/fmc 0x383f9147 fmc_free_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x4723698c fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0x64a11a76 fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x9cd79435 fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0xb981adc3 fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0xcd2e40cc fmc_driver_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0xdfb5dbb7 fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0xe685f1bd fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0xf6afc12d fmc_show_sdb_tree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00025916 drm_mode_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0047d6b1 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00667d8a drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02477abf drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x026c0d6b drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x028cda49 drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03311093 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x054a6f7f drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07384ce7 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0810e887 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x085026c1 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a51a9ee drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0cd46cdf drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d25836c drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ec527fc drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fc5b7e7 drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fccafb1 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fd4fd09 drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fd60df2 drm_get_connector_status_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x104c22b0 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12a67f2b drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12c6276a drm_buffer_read_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13878243 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13cdaadb drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x142b8b35 drm_buffer_copy_from_user +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a000aa drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14c92a39 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1522c071 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15402849 drm_bridge_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x189f6401 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18ca11f3 drm_get_encoder_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19e44324 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e3fa8bd drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e6001c3 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x205b6c21 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x206dae17 drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20d844d7 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21343c3b drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2379d3ca drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2470ae72 drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28a6bbaf drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28d174a9 drm_prime_destroy_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29ad006c drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29d7a862 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a942ab2 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2b59ff51 drm_platform_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2c635857 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d80be4d drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f0b064f drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30a03244 drm_get_last_vbltimestamp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x321473e1 drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x32357dca drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3261e784 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x33764941 drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x339bfb96 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34227448 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x346127a7 drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x35a6e76b drm_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36f91ef3 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0x383d562e drm_mode_connector_detach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x398d59f2 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3a669b20 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ae7b2d0 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b681e27 drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d4b8108 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3da0dcaf drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e6fd4d3 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ed0af68 drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x40f095cb drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43384bd9 drm_buffer_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4605e4ea drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x498dcb5e drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49fabf0d drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4adaf043 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4de0a4b7 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e6bf2ab drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f56447c drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50382cab drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50ddaa46 drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x523eb82c drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x52bc361c drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x534b295a drm_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56c020e7 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5859eebd drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f0efd5b drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6090be61 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x619e506f drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x646afd8c drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66803841 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66e37338 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b378d2d drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b6d7375 drm_timestamp_precision +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6c73e934 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cc0794f drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cee2e42 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d49d7ff drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6df4d697 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6ea24d4f drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f4602c1 drm_core_reclaim_buffers +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71d9cede drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7423a6fd drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x751a43e6 drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x76d587d7 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x77c4dd65 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x789966b1 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a4e7297 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b487239 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7bb15af6 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c0cbbdc drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ceabd88 drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f1dfae7 drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8029f69d drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8179b97d drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81ba930c drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x838cd05f drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x83fc41a7 drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x86424f49 drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x873f0152 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x875c851a drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89dc3c4f drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a4e7a81 drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b69232b drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d353585 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d3ddf88 drm_get_connector_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8dfb019d drm_buffer_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f6e3523 drm_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f7df3a7 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x938fff38 drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x941e031c drm_sysfs_connector_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9437a5e8 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x94b4f631 drm_dev_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95da76fd drm_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x964ba7da drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x968588bd drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x96e31764 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9745d638 drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x98cf740e drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d70fc2a drm_rnodes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9eccfe56 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9efc26a3 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f0043cd drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f04e8e4 drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f848886 drm_core_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa11dfa1c drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa17c131d drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1f4e9e6 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5dbd572 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa71b9050 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa9445c1a drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa9a7c47b drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa9853ce drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa9add12 drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xab7c2924 drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae248d63 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf82f2ad drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafb0cb6f drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb0d3088c drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb3ef1afa drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4842f86 drm_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb54dcf54 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb572a9f0 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb60b19e7 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb87bba3a drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8f4b93d drm_core_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb95beb55 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb977d0c9 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9dff6a1 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba590376 drm_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbcf73afe drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd96fd5a drm_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe001c53 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc0408e22 drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc3a64a6f drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4000f9f drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc414c422 drm_vblank_offdelay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc41d3b63 drm_bridge_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc614cf89 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6bc7b63 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc77dc66c drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7f7cc11 drm_vma_offset_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca016114 drm_core_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcbbbf4ec drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcca90954 drm_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcec158f0 drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xced041a1 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1275afe drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2436257 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2591f29 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd4566ae3 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd6f7c8c6 drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd8722eca drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd8a47934 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda2bf832 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdae1f814 drm_sysfs_connector_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb5a5852 drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbaf863b drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc650ab5 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdcb9be3f drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdcf605a6 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf349863 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe06c34c9 drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe15d839e drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2ef97e4 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe3466a38 drm_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe3881afd drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6e8aa0a drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6f46e6e drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe77fd131 drm_prime_init_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe88f44cd drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9d17143 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee5e405e drm_global_mutex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xefdf9b69 drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf08d712a drm_mode_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf219f21d drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2451b38 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2a7b47f drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3f1ac5f drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf446a0e2 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf5e1a069 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6d3a423 drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf71bc18a drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf736b6a3 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf879a238 drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfaed1d31 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb497216 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfc361395 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd063935 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe4a68c7 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff4b2799 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0111ae7b drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0a7b2e17 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1d5871fe drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1f01bb15 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2a4ced6f 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 0x366f8058 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3e783dc9 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3efd3204 drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x42c6480d drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4993c086 drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4ab0ef94 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x63cf6f7a drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6bb13471 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x702fef97 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7cf6d625 drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7ebc8ed4 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x82165138 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8234eb8d drm_dp_aux_register_i2c_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x827300a8 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 0x8a298136 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9082e900 drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x976b992c drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9923fd8c drm_dp_aux_unregister_i2c_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9b0c9805 drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa1c0267b drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa25dd474 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa401336a drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa4fce139 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 0xc303bfa8 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc62bcfb6 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc7ccf161 i2c_dp_aux_add_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc96be7cc drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcc5ae87b drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xce4118cf drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd7f5c213 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd8d6f097 drm_fb_helper_restore_fbdev_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe051c32f drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe447e960 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf32ac0dc drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfa72c63d drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfcb6bedf drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfddc8b88 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x0111207c drm_usb_exit +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x159ceb3f drm_get_usb_dev +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0xdac9c538 drm_usb_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x00eacbfb ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0956841f ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x11a8e50a ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x127487da ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x132b05be ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2286c9f1 ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b9d24d1 ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2c0fe5e0 ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2f4cae36 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2fcdc0f4 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x394a371f ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4b32f289 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4ece1d32 ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5a8fdfea ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5ac3280a ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5be89672 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5cf59609 ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x61a3ee82 ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x67b1d568 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6c5044a4 ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x71c4d56b ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x75200571 ttm_bo_unmap_virtual +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 0x85dc880b ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x87338ae7 ttm_dma_tt_init +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 0x8a1c61d1 ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8d14adbf ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8d29175b ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x92eef7bb ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x96a8baa9 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9fc516bd ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9ff27293 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa2a129fd ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa428d66b ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa73de2a9 ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xab303f95 ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xac31659d ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xafb45967 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb83c6470 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc17c88d3 ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc22e9ad0 ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc3c89929 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc5f0c2da ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc9283f3b ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xca700036 ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xca7fec6d ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcb067710 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce2b8a14 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce32157d ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce6e43a8 ttm_base_object_lookup_for_ref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf0f69d7 ttm_tt_fini +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 0xdb72e5b6 ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdcf55baf ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdf1e07a3 ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe3394b78 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe48596a3 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xec1cef1c ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xef4b9697 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf14653ff ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf1c1be3d ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf61bff6b ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf7f9f0d5 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf9e4338a ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfc7987ff ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfc978f59 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfdf1b73b ttm_mem_global_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-pca 0x583ed82e i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xf8d89280 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0x90d97400 amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x73e9f2d4 st_accel_common_remove +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xe41485de st_accel_common_probe +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x251ff2ec hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x2a0f335f hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x5aaf372d hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x5ed5fb09 hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x87f9ef52 hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x0d7b6df6 hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x306f89c1 hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x074d7047 st_sensors_trigger_handler +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x20d4fc4d st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x224b7544 st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x224f7915 st_sensors_sysfs_set_sampling_frequency +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x2d776c6b st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x434e83fb st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x540729be st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x650b8da6 st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x65b7b676 st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x75e065d1 st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x836fb951 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x8b337a1d st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x9ea1ed8e st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb672d9f3 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xeb334104 st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xfa624c54 st_sensors_sysfs_get_sampling_frequency +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0xa23e4c41 st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0x46661c29 st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x704f0b90 st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xe0bfa5d9 st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x969f2144 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xdaae502b adis_enable_irq +EXPORT_SYMBOL drivers/iio/industrialio 0x05ff1188 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x06807372 iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x1f4878e9 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x274c13d9 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x328f97e3 iio_buffer_read_length +EXPORT_SYMBOL drivers/iio/industrialio 0x34fa10f0 iio_buffer_register +EXPORT_SYMBOL drivers/iio/industrialio 0x4bd126ff iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x4c878333 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x5193ab37 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x68b02572 iio_buffer_write_length +EXPORT_SYMBOL drivers/iio/industrialio 0x73aedf7e iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x77557251 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x7b5a53c6 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x8cf8a562 iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x9a676236 iio_buffer_show_enable +EXPORT_SYMBOL drivers/iio/industrialio 0xa1ec8767 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0xab6361f8 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0xb9f7dbe2 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xbc5531ed iio_buffer_store_enable +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe4b3f6ec iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0xf7688fa9 iio_buffer_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xfd3791aa iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0xfd9b25cb iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x39f4b08a iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x4e70af35 iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x3d875730 iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x57c83741 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x64842d87 st_magn_common_remove +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x7941eef0 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x61cf7741 st_press_common_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x92c50ba2 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 0x446fd7c9 rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x59252c9d rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x9805714e rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x2047f8c2 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x206704cd cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x3238b4e2 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x34fa5463 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x4a87dfd0 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x640e5c7f ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x6da64b6f ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x744fa7d0 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xaa445aa8 ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xaa4c3465 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xbe5764f6 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc9326850 ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd0ceda20 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xefba5377 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xfaa2f0e7 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xfb4a1d9b ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xfb709d90 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x004ce103 ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x06c82fcf mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x07a0a1d7 ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0b3bfb56 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0b6db8ce ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0e089143 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x14f84918 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x171f99f1 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x17d67e2b rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1bec5ce8 ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1f015dd9 ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x20e34230 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x234a5ec0 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x26bdd438 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2da7e334 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x34437a36 ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3685ac5e ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3e9f4664 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3eca4cfb ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x406764ad ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x413d8f16 ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x42089f4e ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x43316fd8 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4402dcbc ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x499135e3 ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4deccc4c ib_umem_release +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 0x532b9aa1 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x579028fb ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5a36127a ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5bbd6c18 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5fab2e3c ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x610f7fa1 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x66eaf696 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6985021b ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6c99c04a ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e030e26 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x700f3e74 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x709b0daa ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x73e73c23 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x780e250a ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7d4329a8 ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7fcc0024 ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x804c2f1e ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x816fdae9 ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x83da85d3 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8680a99f ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x892febbc ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8c074f11 ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8c4dbf4f ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8dd90705 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8f78d456 ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x91275514 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x92027d30 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x93748064 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x97d680c1 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9c57af88 ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9c69d9e3 ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9d69f3f7 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9ed0bc70 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa36c08d7 ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xac217df9 rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1a312e1 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb25420a9 ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb77408e3 ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc28d4085 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc8d2258a ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xca933971 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcffc907b ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd671dd7b ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd6a72cb1 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd87b0495 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd97e147b ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xda1024c3 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdaee3097 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdd26bae8 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xde0daba4 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdfa27450 ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe0cd51bb ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xea93e050 ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf217de5d ib_resolve_eth_l2_attrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf6bda5e1 ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfe73ec47 ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x00f43203 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x13f80770 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x195c4a52 ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x4b614aa4 ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x54cae5cf ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x55987ff5 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6a4fbb1a ib_register_mad_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 0x80687d4b ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x8cd69a10 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x946d5d27 ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xacaef4a9 ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xd00aedf9 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xd8a14eca ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x22f07253 ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x26b9ba35 ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x5328d7a6 ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x55caec4c ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x69823831 ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x69d33bfc ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9a1cd50d ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xce218943 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xd8863998 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 0xe24d323c 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 0x1e45d31f iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x61b2b5c8 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x701ebd40 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x7e0c2129 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x8baf9583 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xca41f226 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xcb2e8131 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xdd070770 iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x026191ad rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x10901f02 rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x20173776 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x37ce3d50 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x387f20b7 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3a284bf1 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x48c5de76 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4cfe9aad rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4f4a523c rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x50669a88 rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x566419f3 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x5f22a9cd rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x73930922 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8265a989 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x901e1ea0 rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa4488e91 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa4c13f7f rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xaa2c7d15 rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc34691e8 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xeeafa570 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf0de9bfe rdma_set_reuseaddr +EXPORT_SYMBOL drivers/input/gameport/gameport 0x060ad4e8 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x0edaad12 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0x45fa149b gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x6e36b5d0 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x8842351a gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x935deaa2 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x9554ca01 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xa5713b0a gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xf6a96d32 __gameport_register_driver +EXPORT_SYMBOL drivers/input/input-polldev 0x12920d19 input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x58cf1880 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xc6854fd9 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xdaec8349 input_free_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x2dbbde52 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x27ab0cbe ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0x54e48263 ad714x_remove +EXPORT_SYMBOL drivers/input/misc/ad714x 0xd4f95c50 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xf0e4c170 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 0xe2863016 cma3000_init +EXPORT_SYMBOL drivers/input/sparse-keymap 0x1dba13af sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x3f4edc69 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0x530da99e sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0x6bb55f75 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x8d8ea13d sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0xd6f4b927 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x5bd609b0 ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xafdaf45e ad7879_probe +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x007b9b44 capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x025a18a9 capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x05ee83ea capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x12ce1b73 attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x24dac2eb capi20_release +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 0x315c8322 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x47d3fc51 capi_info2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7a33596c capi20_get_serial +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7e6f1307 capi20_get_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f699913 capilib_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 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 0xb713b2a9 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xbe7c69b3 capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc10fe128 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xdac51cc4 capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe3594f9d capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe8ad9bd1 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xed061606 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x0dca63f1 b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x39fbfcb9 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x3a535c84 b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x3d525a6e b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x435d6fb4 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x59ac4369 b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x624cb6ac b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x7ac97875 b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x7afbc47a b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x8488836e b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x8d2473cf b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x97e21971 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xbb8894c7 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xd3a7fbc6 b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xf140bf10 avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x26d30e45 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x2758be40 b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x3a6f98b0 b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x4253805c b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x4330599f t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x62185541 b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x651604f8 b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xb8c8ebf3 b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xc411cb44 b1dma_register_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 0x6ea9652b mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x8eb5e1bf mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xb1857300 mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xbed38e8c mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xb6aab7ee mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xd7ded027 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 0x7f29ce36 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xbbfa5471 hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xe227344e FsmRestartTimer +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 0xff2db2cf FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x199c7f7a isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x2b1e490c isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x80577f30 isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x9311568b isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xad11edb0 isacsx_irq +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x66ad6b3d isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xc6a5003e isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xdc91f62e 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 0x0cf3b12a mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0e00bda9 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x120266d1 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x20aabfd9 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x229abc06 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x32ac81e9 bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4e95ea26 dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x54451388 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5f02fddf mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x614ede30 mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x68eac760 bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x73061e34 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7ebcf31a recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8eb88370 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x95ec6d91 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x96309324 mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa501adb1 mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa5c4cc9d mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xbe47a700 create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc2525ac1 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc38b7719 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd6377b8a recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xdfcf3d80 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe0b70bc4 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe87943cf mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xee066cc7 mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xfb7458c5 mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x60721da7 dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xa215f1b2 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/md/bcache/bcache 0x37a6e1bf closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0x4320dba5 closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0xb24beff2 closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0xc304d1e5 closure_trylock +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe3c17af1 __closure_wake_up +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe46087f0 closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0xf1589ffd __closure_lock +EXPORT_SYMBOL drivers/md/dm-log 0x00ee8bca dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0x0df0c8ca dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0xc8116649 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0xe9c89d49 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x5478c4bc dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x5e79b36d dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x736e1242 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0x891dc2c6 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0xa0e1af5f dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0xaf623f81 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/raid456 0xebb25451 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x0b12b482 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x2ecdb142 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x33654c59 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x46f6c021 flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x480669ec flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x60b99d94 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x6f29f102 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xa72579be flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xa815d0c6 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xd808f473 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xefac2674 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xf7103219 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xf93dd9cc flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/btcx-risc 0x028776da btcx_riscmem_free +EXPORT_SYMBOL drivers/media/common/btcx-risc 0x34fb221e btcx_riscmem_alloc +EXPORT_SYMBOL drivers/media/common/btcx-risc 0x495e4b0c btcx_calc_skips +EXPORT_SYMBOL drivers/media/common/btcx-risc 0xad2fe38b btcx_sort_clips +EXPORT_SYMBOL drivers/media/common/btcx-risc 0xc368f8e6 btcx_align +EXPORT_SYMBOL drivers/media/common/btcx-risc 0xcda0ded2 btcx_screen_clips +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1c4d026b cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0x244570fb cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/common/cx2341x 0x30d87624 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x5b88faf6 cx2341x_ext_ctrls +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 0xd49ed8e6 cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0x1d076cc4 cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x09c3d15d tveeprom_read +EXPORT_SYMBOL drivers/media/common/tveeprom 0x7e6f02f0 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x07dd6be7 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x07e8340d dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0f4c074d dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x17523ce7 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x19591134 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x22d6ce4a dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x28ee2ae8 dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2a1299e8 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x332f6056 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x361a7512 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3f7224d5 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3fef90be dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x420532dc dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4a2e79a0 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4d3b9a9c dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x53edf5de dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5f176f50 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6219a1e8 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6573681e dvb_dmxdev_init +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 0x8142f7b7 dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x81711731 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8211a729 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x89eb092c dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8e47dce5 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x95527b94 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xae2fe625 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xaebb7b62 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd68a099e timeval_usec_diff +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd86150a5 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdb576668 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe0ca4c4b dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe2ad75a0 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe56d11d5 dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe877c5d0 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xee420406 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xefe39f53 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf8ee597c dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-frontends/a8293 0x95960364 a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0xffde3000 af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9033 0x1726b201 af9033_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x127fcb38 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x0c06076e au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x2e1f3e2d au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x35a132b4 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x52579aef au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xa7b6818a au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xac35f168 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xc24f3cc6 au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xed25a520 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xf69df1eb au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0xfe1d55d2 au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0x1f90bab5 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x46643344 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0x387eae6a cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0x021c8eaa cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x9abc54e3 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xb5234314 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0x11eb901b cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x58a94965 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xe3e2b453 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0xab3d2e87 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x3305dc59 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x64c116c8 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x68627270 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xb8a1d375 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xd5610244 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x08a2426e dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x4108b31e dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x51d340dd dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x547f048f dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x5850347e dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x6afc4c35 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x753140bd dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x7b296a06 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x8fa040c3 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x94038519 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xab4994d5 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xc3d865d7 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xdfe3cb00 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xe1399b29 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xff5e4da7 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x88bdd6b5 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x23f51603 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x3802de8f dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x6bd84da4 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xa7ad8ae6 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xc0ca6835 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xf85a82c8 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x1b0cc72c dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x6179d153 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xcb2edd8d dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xcc9058fb dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x10695c03 dib7000p_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x1088c039 dib7090_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x1dcb5304 dib7000p_set_agc1_min +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x2da33b6a dib7000p_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x61766712 dib7000pc_detection +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x6651f2ce dib7000p_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x81c6f4be dib7000p_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x92eb0994 dib7000p_update_pll +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xb00a7a05 dib7090_get_adc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xb75a710b dib7090_slave_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xc5a4f856 dib7090_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xc848cee5 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xcd8c530d dib7000p_get_agc_values +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xd219834a dib7000p_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xda71a5e6 dib7000p_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xf38d377e dib7000p_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x021f2796 dib8000_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x218b564d dib8000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x44b22f2d dib8096p_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x589f4242 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x5ad5f987 dib8000_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x747ca079 dib8000_remove_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x8708726b dib8000_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x87c1d08f dib8000_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x962763bd dib8000_get_adc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x9bfe34c7 dib8000_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xa6c3b7ec dib8000_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xbe7ae060 dib8000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xbeadd3e0 dib8096p_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xc2361bfb dib8090p_get_dc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xc7637d19 dib8000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xe9354d55 dib8000_update_pll +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xef5ffba2 dib8000_pwm_agc_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xf2964edd dib8000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xf4fcb138 dib8000_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x325a5bd2 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x71c84c3a dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x773406c9 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x94ce0f62 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xb16bc8c5 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x1ccbe1da drxd_config_i2c +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0xe4fd4a7b drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0x35ff3fc1 drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0xb826127e ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0x08e2cd26 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0xa147e38a ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0xed225883 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x25c18c01 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x4a8c1692 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/it913x-fe 0xc6d2646a it913x_fe_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0x6ae38f3f itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0x54ffb72f ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0x3d2d93ee l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0xf2400a5f lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0xbe112221 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0x78ae2bd4 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x4128ac54 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x1edd010c lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xf339a8d8 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0x8c47e649 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0xa0d8bd37 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0xf1709fcd mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0x26b61fa2 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x22ce3f12 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0xfed26f5a mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x6db2139d nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0x4eff260b nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0xecc8ff7a or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0x1ec24bf9 or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2830 0x0664c59e rtl2830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2830 0xe9b52cfa rtl2830_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2832 0xfabb20b5 rtl2832_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0xfd43f070 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x64231040 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x22495c63 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xcb1f40e7 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0x33a1a349 s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x5d143c84 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0x465df54b sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0xdec10c90 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0x8c1d735a stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0xa5a67ac2 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0xe2349bdb stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0xea8b1cfd stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0xa3cd2962 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0x25e7af82 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x5b8c2797 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x834f07aa stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0x98205f07 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x238c05d7 stv090x_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0xa7267f28 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x08debe06 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0x9afffc26 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0xd0c65de9 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0x01c79a40 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x00c0a5f5 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x3e4391ec tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xee2f02f8 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0xa6a9bb95 tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x4cce254f tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0xfcae84ab tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x477e0479 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0xb67aefe1 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0xdb680382 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0x19c48dee ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0x3fb7f18f tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0xfda95764 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0x0c517be5 ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0xec06509c zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0xfddac535 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x140e6d26 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x13c18586 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x1e0ce4d4 flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x1ec62374 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x360854e8 flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x5fd0f1da flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x80204a29 flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xa430faf1 flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x2875d264 bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xa8640258 bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xe922c686 bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xfb4a8e83 bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x46108b4d 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 0xd059dced bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xda67409c bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x0a99b768 dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x1392c408 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x1d95948e dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x5e9ac675 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x6a13c7d1 dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x6eb473e1 dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xb2f65b80 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xebe3e37b write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xf848967f rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x30668267 dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x0d1aabff cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x1e6ebfeb cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x45940b06 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x4fb4d206 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x757807f0 cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x163dd46b altera_pid_feed_control +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x4c2112ff altera_ci_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x9247b72f altera_hw_filt_release +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xdb3faf38 altera_ci_release +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xe5c43805 altera_hw_filt_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xe66b9812 altera_ci_irq +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x38605818 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x3e0d1f61 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x3fc62fdf cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xa7a2a6ee cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xcfd2e0be cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xd5d794e7 cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x297053d2 vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x3939e23f vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x34666088 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x3e06fec1 cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x9eeed237 cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xc9c25cc0 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x03cd425e cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x54a62156 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x7cb77403 cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x8b1ba170 cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xefb4454f cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xf3bde65a cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2c29d27e cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2cbb1029 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2da200a0 cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3c1e80a3 cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3c42a6ce cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3df6dbdb cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x44df8c2d cx88_risc_stopper +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4c885042 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x57aa3c2f cx88_free_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x586d6739 cx88_dsp_detect_stereo_sap +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 0x773fc66b cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x96ddef33 cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x9ced3bc3 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa31f1a9b cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa47da5c6 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xaa4bdb11 cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc4286433 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xce60a76a cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd6fa6075 cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe1b93637 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf87944c8 cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xfc80f7a9 cx88_reset +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x1be60613 ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x38325b00 ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x4793aca3 ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x54f04da6 ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5d47b3b9 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x6d4cdd2d ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x86725d5a ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x86af443d ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x8afe857e ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x970502cb ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x99ef0ef5 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xae3d0345 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb3d5d024 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xcdbd715d ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xde15a028 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xed0ebc1c ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf93b90b2 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 0x17e83f0f saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x211b4a7a saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x355615e1 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x5085b7af saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x73039031 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x88814206 saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x98be500a saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x9dba1393 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xa0907a41 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xb0693c62 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xd42b4edb saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xd4e4879f saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xdbe1bcf4 saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x17a96f99 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x011a5ac6 videocodec_detach +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x629fc1bb videocodec_attach +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x8a5c8743 videocodec_unregister +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0xdbcc60d1 videocodec_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x4cb272c4 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x57b593a4 soc_camera_lock +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x5b33a7fb soc_camera_unlock +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x96e3c78b soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x9ec084eb soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xa5adb3da soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xbc4d4049 soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xc61f7b4f soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xd7c94e34 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 0x5f3e3558 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xa9546115 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xfe2c3a07 soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x1cec6246 soc_camera_calc_client_output +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x2cd5b062 soc_camera_client_g_rect +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x844447b8 soc_camera_client_s_crop +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0xf9e9d235 soc_camera_client_scale +EXPORT_SYMBOL drivers/media/radio/tea575x 0x237bf53c snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0x238d0c94 snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x5640ff6a snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x9acbedc0 snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x2ff7d59b lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x4592e6be lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x5bc3b0b8 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x6df7dca7 lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x9f2773a3 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xaf1fe8bc lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xcf50cf96 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xff6e5fbd lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/rc-core 0x71073cc3 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0x864486c5 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/tuners/e4000 0xf27408d8 e4000_attach +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x3120bc87 fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0xf82f168d fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x5a85948d fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x7d5c0317 fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xf36fba6d fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc2580 0xeb66ed90 fc2580_attach +EXPORT_SYMBOL drivers/media/tuners/max2165 0x50ba56f5 max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x742736ab mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x19680434 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0x322b6c70 mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0x8ae0a040 mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0x3be66a1a mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0x670f83d6 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18212 0x64a300d8 tda18212_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0xaec09f1a tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tua9001 0x6a92afca tua9001_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 0x2d007da8 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/tuner_it913x 0x899d0267 it913x_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x9e2457de xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0x35a2abe7 xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x1d82b7c1 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x7f378a88 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x24f10e22 dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x5e30d203 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x5f4dbf65 dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x77ae6b7f dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xae4043db dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xba9e32d2 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xc5c72712 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xf4d54f53 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xfb8023de dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x4e90d8b9 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x5428a045 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x89ad9d98 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x8d082dfd dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x94adb38e dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x955dddc4 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xe19b67e2 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 0x8ca76ead 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 0x494cc625 dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x5e36f1fc dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x6244f777 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x67b6abb6 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x6ca1312d dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x912194e9 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x9a830a3c dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb042e95d dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb41f39b4 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 0xd21df111 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xdaa79cac dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xa7896598 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xd620fbac em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x0b089e1b gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x174e46ac gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x18b38f11 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x549fbf39 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x97d1e299 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xb16863ed gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xd886cad5 gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xfa535c37 gspca_resume +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x1d6b273f tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x69a183da tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x7652899e tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x8343ca94 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xa884cb5e ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x42c8e001 v4l2_ctrl_next +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x4adaf0f3 v4l2_ctrl_query_menu_valid_items +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x53c9394f v4l2_ctrl_query_menu +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x5f96a661 v4l2_ctrl_check +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x2dbd48c9 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 0x72d50b7c v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x9e07f7a8 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x7ba1d699 videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xa3bda69e videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xb5e1bb2d videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xbed5cd2d videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xdee306b5 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xfa29d293 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x376a4a4b vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x01095ee0 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0683bd45 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x088f97a9 v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x093bbe48 v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x11728c37 v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x12d905f6 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x140e371b v4l2_of_get_remote_port_parent +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x155add04 v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1718fa05 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x239a7eef v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x284b717c v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2d6f6768 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2dced308 v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3716f5b4 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3893ea0b v4l2_ctrl_new_std +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 0x3c459eb3 video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3db7f213 v4l2_of_get_remote_port +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3e604f2f v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3f89b9cf video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4096a760 v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x431e898e v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x48a6d120 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4b26566f video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4c14e6d2 v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4e913d71 __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4eac6a49 v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4f65a6e0 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x56c8f662 v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x63471000 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x63669129 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x64603f0e v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x659bc0fc v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7c59de82 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7c8cf60e v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7e135a24 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7e6ba6ce v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7f923f2a v4l2_of_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x806340ee v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x84e1c4ff v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x956dab49 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x98a2ceb3 v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9cff0146 v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9e2e9144 video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9f176d1f v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9f8413df v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa018e44c v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa113ea3c v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa65e80c0 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa9c4b6f1 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaa802551 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xad3a2396 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaff34636 v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb1cb9b3c v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb90cbedf v4l2_of_get_next_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb9d0035a v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xba8cc16b video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbac4a225 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc12cf8f8 v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc1a23b7b v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc37ccaa6 v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc5b6b335 v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcac888bd video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xce3d2102 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcf7e983d v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd1a8fd3a v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd670dcee v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe14d7770 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe6fce6f2 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe9e2902e v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xede7db42 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf2eba868 v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf35b31fa v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xffb92667 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/memstick/core/memstick 0x30437812 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x345da5c6 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x37e8b37b memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4204c6a1 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4d0c2482 memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x76f316ec memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x98d76df7 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa5987a36 memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc1fd14b3 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xd4605f18 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xd98c5022 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xe7946ca8 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xee51e286 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x00801d67 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x25f8f142 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2aa9ab00 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x328235d9 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x49c7f7a3 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4a051379 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4b7f969a mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4f445b0c mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x610ef8c7 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x65fbae09 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6a4feb56 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x72122d3d mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x772a4035 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x776fd1f4 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x778f90d5 mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7e5ad7f8 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x966e0d68 mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x99fdfeb2 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa0474c85 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xafa1cac2 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb2f48b8a mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb318fd5a mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb9a6793d mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc10eda09 mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xcbdae0b5 mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xcdb4edae mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd08bb789 mpt_event_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 0xea8b74e7 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xfa9dcdac mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0f7ed2a7 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x19c6d4d7 mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2786fef7 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x284a7f38 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x34d0895c mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x370f679c mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3c9cb598 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x52fdf2a8 mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x71a76b6c mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x74d8b35b mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x79825b2b mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7ffb63e6 mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8074552b mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8c3ddff6 mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8e744758 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9c17b981 mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa21c4733 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb3e677e0 mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc239b197 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc31bc951 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc3d45e85 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xca3cb2f6 mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd01b0e46 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd1c3d633 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xde093b1c mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf258e24b mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf724eba7 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x1c931cd7 i2o_msg_post_wait_mem +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x291161b4 i2o_msg_get_wait +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x2a843bef i2o_dump_message +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x2e77ccac i2o_driver_notify_device_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x354362f2 i2o_parm_table_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x45918a6e i2o_driver_notify_controller_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x49e612e2 i2o_device_claim +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x553ad6f5 i2o_event_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x5579129b i2o_find_iop +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x648c63dd i2o_exec_lct_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x6ac17b51 i2o_driver_notify_device_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xa467d729 i2o_driver_unregister +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xb4c00dcf i2o_controllers +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xbef2206a i2o_driver_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xc461e709 i2o_driver_notify_controller_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xcf7ea7f5 i2o_device_claim_release +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xd0bc8318 i2o_parm_issue +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xe12ab84e i2o_iop_find_device +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xe289596f i2o_parm_field_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xf310ea1f i2o_status_get +EXPORT_SYMBOL drivers/mfd/cros_ec 0x25746143 cros_ec_prepare_tx +EXPORT_SYMBOL drivers/mfd/cros_ec 0x7b7a7124 cros_ec_register +EXPORT_SYMBOL drivers/mfd/cros_ec 0x868e1805 cros_ec_remove +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xa8d3c46b pasic3_write_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xbcbccc9f pasic3_read_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x1bb07c33 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x2764d948 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x417b1e24 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x510896ab mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x55a42efa mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x774332d5 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xaf0586fe mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb0467479 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb43592c2 mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xbd3db5b8 mc13xxx_irq_request_nounmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xcb21471e mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xd3bf9039 mc13xxx_irq_ack +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xfb424296 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/tps6105x 0x3d521c0e tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x7870963f tps6105x_get +EXPORT_SYMBOL drivers/mfd/tps6105x 0xc875976d 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/misc/ad525x_dpot 0x0d40cdda ad_dpot_remove +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x45dbbd3f ad_dpot_probe +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x58765536 altera_init +EXPORT_SYMBOL drivers/misc/atmel-ssc 0x7f0babd7 ssc_request +EXPORT_SYMBOL drivers/misc/atmel-ssc 0x9c29aff4 ssc_free +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x0e9755b9 pwm_channel_free +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x5a8b82f9 pwm_channel_handler +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x5d5c2951 pwm_clk_free +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x6a5e1f70 pwm_channel_alloc +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x73330c97 pwm_clk_alloc +EXPORT_SYMBOL drivers/misc/atmel_pwm 0xeb7f2c6f __pwm_channel_onoff +EXPORT_SYMBOL drivers/misc/c2port/core 0xa303a975 c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0xbe43200f c2port_device_unregister +EXPORT_SYMBOL drivers/misc/ioc4 0x8540fddf ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0xdbabb46e ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x03ef43f8 tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x082b9192 tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x39f86aa1 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0x63d2e8e4 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x68a5880a tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x752adec4 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x8b2384cb tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0xbfffa8ff tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xc5ecdbc0 tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0xd880642e tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xe48389b2 tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xefeb42b7 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xf95eb40d tifm_add_adapter +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0x786994bf mmc_cleanup_queue +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x3fb8d9ec cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x931e2d7c cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xba8a4c45 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x1f942723 do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x3e90ddd4 register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x54074557 map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xd005b324 unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x545c8c7e mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x3933933d lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x21b8831d simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x30cb4337 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0xc03f1293 mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/denali 0x8bbed237 denali_remove +EXPORT_SYMBOL drivers/mtd/nand/denali 0xc86d7f7b denali_init +EXPORT_SYMBOL drivers/mtd/nand/nand 0x1382195b nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x36738660 nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x57b2782d nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0x764d6378 nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0xa4c7d924 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0xcd599640 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x5268f70e nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x88c6de21 nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x93f074ac nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x1b50905c nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x9273da56 nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x57a31e57 nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x871b573d onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xaf150248 flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xd9d5d1c0 onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xf9b3fd32 onenand_addr +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x0a001965 arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x21cac718 alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x238ce017 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x38382baa arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x8733cad1 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xb28d5eb2 arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xc11fe51c arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xd7977a92 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xdea9369b arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xe4a6061a arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x628bbd81 com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x76c4ca82 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x8f8cdea3 com20020_found +EXPORT_SYMBOL drivers/net/dpa/dpaa_1588 0x0cf2f9bf dpa_ptp_init +EXPORT_SYMBOL drivers/net/dpa/dpaa_1588 0xaa7b4a7e dpa_ptp_cleanup +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x01156a5e ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x0498bb39 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x111757d1 ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x7c9cdcb4 ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x85b32c3d ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xbcd1e137 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xc2c538db __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xc9ba0aa1 NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xf41a030e ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xfcbcb808 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0xe3c5827a cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x019b1b18 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x19a5418d dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x20694d14 cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x2f73cf04 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x41a24a51 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x5ec28e3d cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x63ab0c02 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x6f2138a1 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x76925906 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x85e238f4 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x8668459c cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xb99e31e1 t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xc45090c1 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xcbe23b36 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xeb63fb17 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xfd9c6284 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x09247316 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1e705788 cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1e94a403 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x20ddb9d1 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x22a411df cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x286f9dcd cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2f358e54 cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x434b9989 cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4c2e3573 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5a3a55e2 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5ef9fa29 cxgb4_enable_db_coalescing +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x61959ff2 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6e2f6ec6 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x705a22fe cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x777ac858 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x855c6214 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9a478264 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9fb25c50 cxgb4_disable_db_coalescing +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xab1f779d cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbae792b0 cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc2347078 cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc4f4c775 cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd3929e35 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd3c51e84 cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf2dc8081 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf40818c0 cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf55dff29 cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xff2c7912 cxgb4_create_server6 +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 0x53c65b72 vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x71bb9773 enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x8da1e010 vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x9196d804 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x2f51a13b be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x99990691 be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbab62e22 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/freescale/gianfar_driver 0x79f28897 gfar_phc_index +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0996fc21 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x20dce54f mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x23bd9105 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x27392f0a mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2776a500 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x28173199 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x31e0a5ae mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4468c2c1 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4b9b10f1 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4fd2d5e6 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5049469d mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x544f0da7 mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x57bd4530 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6809a801 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x78fc3005 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8ef779b7 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x96ba6d0b mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9d40a49f set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa437ef28 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb8ff804e mlx4_set_stats_bitmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcc854dbe mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd374dc44 mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe1fa6b15 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf3a5082f mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf9365968 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfced2b95 mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x039c7e0d mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x059aea0d mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0662ee5f mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1a2c2958 mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1d1044b4 mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x25225f87 mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x26e223ca mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x355b7d23 mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3ccb1287 mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x45afbf41 mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4789c630 mlx5_dev_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x499e0850 mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4aa858d2 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4e1f22b0 mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5f5f590a mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6637d221 mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8ed9d538 mlx5_dev_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x98cfee72 mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa4b0d3e6 mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb23c6ee8 mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbfa33451 mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xce2e9d03 mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd823abed mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xde97378b mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe80f2684 mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf0c3b993 mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf3311b2e mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x0b6c1df8 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x4d6a0362 hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x571396b2 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x6a198024 hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x9ca3549b hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x3a1e4e67 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x425dc641 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x53f2aeba sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x63cdc4f9 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x7e6aff89 sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x9650c06a sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x96a840f3 irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xaa5d38e9 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xb06f48e2 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xe040c144 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 0xb34a7575 mdio45_ethtool_spauseparam_an +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mii 0x0ffd98b8 mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0x14efb644 mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0x56ddeea2 mii_check_link +EXPORT_SYMBOL drivers/net/mii 0x5fabba5d mii_check_media +EXPORT_SYMBOL drivers/net/mii 0x79b6ee9d mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0xa4433cae generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0xb01f4d67 mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0xe9660d02 mii_nway_restart +EXPORT_SYMBOL drivers/net/ppp/pppox 0x155c8dbd pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0x2ebd4591 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0xacdf678c register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0xc4871833 sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x3b5a5b93 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0x4011f648 team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0x91bd84e4 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0xaf4d9f6d team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0xaf5ee852 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0xca8cb8ce team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0xd41a2f71 team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0xedca26d0 team_options_register +EXPORT_SYMBOL drivers/net/usb/usbnet 0x260192b1 usbnet_link_change +EXPORT_SYMBOL drivers/net/usb/usbnet 0x269ad657 usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/usb/usbnet 0xed7d2eb6 usbnet_manage_power +EXPORT_SYMBOL drivers/net/wan/hdlc 0x153ca0bd hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x22821f83 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x2fb23573 unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0x5bca582d hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0x659ebd4f alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x6cb5a5d6 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x805e7822 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0xa48a3805 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xab919d22 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0xbcbc389e register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xf2327754 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x095c7b04 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x15f01788 stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xc0090d5a reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xddff7266 init_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x0ad7ccaf ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x12ae8f85 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x3e727ca6 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x41bb7dd7 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x435ad459 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4e2481d5 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x53358ce3 ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x8a7fc485 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x95f278b2 dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa6cd23b1 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa9a87b49 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xadb112be ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xf9fcbf5d ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x7eabb331 ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8246be6c ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x895f9dc2 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xa1332cc8 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xa41e03e3 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xaf096710 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xc2b5911e ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xc447815d ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xd886fb62 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x0199ec46 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x0c934827 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x1063fbcd ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x27cf1694 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x3845f397 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x3b48ec75 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4c6ddcb4 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4e1380ee ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x69525a35 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7318ed2d ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x9001230c 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 0x9611d02d ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xda565d47 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xf42fb0d9 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x118f86d9 ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x16b0cc66 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2f2c3e80 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb62401e5 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_hw 0x0844155e ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0b47d3df ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0c43c52a ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0cae112c ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1076d33e ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1085b4b5 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1a49bcb5 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1b8e17c0 ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1fb22fa6 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x22555a22 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x22d73925 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x25b0bd31 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x270a3d2f ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2981585e ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2a074bda ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2a25a9fb ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2d8e7eef ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2e66c317 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x30595286 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x31e29e0a ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x31f14fde ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x323c7f9d ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3c688cbe ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3d1be602 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3e8fba1f ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x41187715 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x47ca7781 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4943d650 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x51165b76 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x53eac82b ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x56752fd7 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5c64c130 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x61bd9752 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6275efd5 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6277e3a3 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x63a4d23f ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x63ec9afc ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x66fb3df5 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6a41cd17 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x78be28d4 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8018bca3 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x81a45a33 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x83588b31 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x852e28da ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x86729b3b ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x87a1a738 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8d2cfd01 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8ea8a01d ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x90841318 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x97f058fb ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x99005e3b ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa413b4f1 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa424653f ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa713e41c ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa76fb53e ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa8903673 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa92ddfd7 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xac41d9af ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xad80457f ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xae03d593 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaf5d12b7 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb36ba05e ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb5d08e38 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb65c52f9 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb819b4f5 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb99dfac8 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xba923139 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbaf40a3a ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbd385b4f ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbd9534c0 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbe5aebc2 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbec0ba17 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc1407199 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc21de79d ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc4097fc0 ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc517b9e4 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc78cf234 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xccfb38b6 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcf59d665 ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcfb4a3ae ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd0b0d3a6 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd3a3ea0c ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdae43247 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdb6afe42 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe2177e92 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe2af9980 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe33e98af ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe4567fd1 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe4665191 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe60cf740 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xea8a281f ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xec888d13 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xee3f11e6 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf43ae1d4 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf6549c40 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfad827fd ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfc355189 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfd4bc28c ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/atmel 0x6d708378 atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0x72027230 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xbe0fba94 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x2e9c7555 brcmf_sdio_probe +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x93112fff brcmf_sdio_remove +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x18a01001 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x27812ee9 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x2dc227f8 brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x4731a4c0 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x526cf8f3 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x6d9241ca brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7bcd88ea brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7d162684 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x99dca48d brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xa72bd733 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xc0c54cd0 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd12159a7 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd7e386de brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xe8734de3 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1d85560f hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x278cd56b hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3d9b78cc hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3fbcc7fe hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x603c8ab4 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6b36bf4b hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6f726556 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x857b85e6 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x99fb1c6c hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x9df68915 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa3b41188 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xab5570d0 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xab6304ea hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb174adf4 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb180ca8b hostap_remove_proc +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 0xb5730b79 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb5a52ab4 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xbbef19e7 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xcb5fd06f hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd8743ed7 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xdbf3a7fe hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xdc5ea5fd hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe7214ff7 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf4eb0182 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xfe9cf598 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1c998669 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x40557781 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x4415f26b libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x50c42bca libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5d669506 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x610212fa libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x87fabe4b libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8b4c8000 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x95e37fa3 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x9aad09b0 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa1639e03 free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa4adf3d1 libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb37f1ec8 libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc1286c98 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xcbb96bee libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd0346797 libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd9dae50b libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xda5c29a2 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe23f4c1d libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xec60f51c libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xfc07d645 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x016c153d il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x018bb553 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0633a306 il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0b15830f il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0b56fd86 il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0e2447fd il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x10357879 _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x10b0288f il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x10ce9a4e il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x14e49492 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x16df260a il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x22f489f8 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x24f0d84d il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x252bd6d3 il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2542cf6d il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x25c6f859 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x267da290 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x274ffc5d il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2b062e97 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2b1ecd38 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2b551885 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2c5c0a37 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2f57af75 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2feb9d4d il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x32cc340c il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x33027c31 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x331c53e3 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3514ff37 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3c087422 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3c44d448 il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3e2c28d4 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3f351cae il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x42bcb142 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4a08b763 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aec9219 il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4c035345 il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4e9dd47f il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5097142e il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x510bb66e _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5780d8e6 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5dc6e772 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x61dca7b1 il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x63df3955 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6643413f il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6b58041d il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6b624365 il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6d647452 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x75d181f1 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x77e40537 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7ae91f5c il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7e843bca il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7ea56e8f il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x808e2a1b il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x84d9ffec il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x869b7c72 il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8757b58d il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x88f6f91b il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x89c9c55b il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x89df667e il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8d8a29dc il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x906ee735 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9360551a il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x937cd9a2 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x982172e6 il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9a369b2c il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9ee4060d il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9f4b4db1 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa26e21af il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa2e71bdf il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xaed60f86 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb3cb77c2 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb6601b88 il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb6b8cdba il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb9147f82 il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbd4e410c il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbef63fb7 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc46bf644 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc46d0d19 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc600b3b4 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc87ce2db il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xce0ae160 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd1dc08cc il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd3d75985 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd43892ff il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd7640bc7 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd7881351 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xde69b828 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdee54559 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdf3c0c71 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe08e1b56 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe0aa3678 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe26e6057 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeadcea13 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xee51bd24 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf3571186 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfb2ac939 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfb5494b1 il_hdl_pm_sleep +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 0x0e7bc05f __tracepoint_iwlwifi_warn +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x201337b4 __tracepoint_iwlwifi_dev_tx +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x249e4b06 __tracepoint_iwlwifi_dev_rx +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x36dcef55 __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x4919d1a5 __tracepoint_iwlwifi_dbg +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x67381a2a __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x79e9bf26 __tracepoint_iwlwifi_crit +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x7edec07d __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x8bfcc307 __tracepoint_iwlwifi_info +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/iwlwifi/iwlwifi 0xda36f3a4 __tracepoint_iwlwifi_err +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x0266da79 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x0b69a7e1 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x27800cea orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x4890cfae __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x55ba6eb2 orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x59e8109c orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5dea5bf1 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5ea2eeec alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x8bef4520 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x8c8d313b orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xad943e07 orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd4bd161f orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd6fbfe29 free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xdd17222b orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xe9c44fe1 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xeec67623 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xf265061a orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/btcoexist/btcoexist 0x493c85b4 rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0e6a90d6 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x11d8acbb rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1213271c rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1b17fdeb rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2a32931c rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2ba0f9bd rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4d4a837b rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4d8e7e77 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x500bcb8d _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x60bc768a rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x63046195 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x67c910cd rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6c4690e0 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x731b1619 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7635d9a0 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7cb7c9b9 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7cda4c2e rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7d8aad4f rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8047ee05 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8148d4cb _rtl92c_phy_dbm_to_txpwr_Idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8ef35da6 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x93ba55a6 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x99537d16 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9bcd75dd rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9d7fa952 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9f8e5570 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa1edf772 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa29f6255 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa4715cb6 _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa8f19d20 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb0b229d1 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 0xc055d60f rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc597188c rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xca26dad2 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd519f3be rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdb3c181f _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdfe8c4c4 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe1a17681 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf27d5def rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf54dcefc rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf6c1f369 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x77041e94 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0xa56a271b rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x0d93c80d rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x69d2d2a2 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x79b79693 rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x7f631219 rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x07f1d051 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x1d787c18 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 0x262edec2 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2da4a840 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x39ed1724 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x3eaa9d0f rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x3f448c86 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5c8d1291 rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6e3b5400 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x80ae5bc4 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x90b34ce2 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x92d68042 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa03fd5be rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa108d6b9 rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa30aa20f rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xac27b019 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb2339407 rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xda000174 rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xeb1545d1 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xede7d5ec rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x0445b909 wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x044877a6 wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x208305c4 wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xfa25e603 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/nfc/microread/microread 0xab989089 microread_probe +EXPORT_SYMBOL drivers/nfc/microread/microread 0xb9da4f22 microread_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xc07436f7 pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xf140778a pn544_hci_probe +EXPORT_SYMBOL drivers/parport/parport 0x11e844b2 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x12095124 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0x136eaf5a parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x1438e717 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x226019c5 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x2e8bf2a8 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x30ec28d0 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x330d1025 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x37dc101b parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x3d63f8af parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x49137eae parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x4e6073b5 parport_read +EXPORT_SYMBOL drivers/parport/parport 0x5de134fe parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x6a47782a parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x6b414d00 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x7bd6dcce parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x7e93fe04 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x82e7ff0f parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x83f2c223 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x859b3db2 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x93d7a41d parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x9d26c0a3 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xac3e54fe parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0xba1660bb parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0xbf7fa00c parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0xc0e8b2f5 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0xc12f5db9 parport_release +EXPORT_SYMBOL drivers/parport/parport 0xded6c608 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xe0bfd659 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0xf9608b0b parport_write +EXPORT_SYMBOL drivers/parport/parport_pc 0x67b2d09c parport_pc_probe_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xab264b9a parport_pc_unregister_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x06e40cfb pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x29ce56b9 pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x2b0576b2 pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x2da8d9fe pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x4563bbed pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x45db9800 pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x55be40e4 pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x5cfadeda pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x61fc37e3 pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x7871e9d7 pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x8716154f pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x9abc3a63 pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa6ca92b8 pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xaa1a2349 pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xab05ec48 pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xd6b2392f pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xeb845eb1 __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xf0dbeb33 pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xf62a7ce3 pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x08ced9d8 pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x0b7fc270 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x15ad852f pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x22ba1116 pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x399a54d7 pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x4f8c4e6a pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xc94215d6 pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xd420fd7f pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xdd60143c pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xe9d6800a pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xf56db2f8 pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x0a06068d pccard_static_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x625f7dd6 pccard_nonstatic_ops +EXPORT_SYMBOL drivers/pps/pps_core 0x1524020a pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0x2a148a3b pps_unregister_source +EXPORT_SYMBOL drivers/pps/pps_core 0x531042cf pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0xd37e9ed4 pps_register_source +EXPORT_SYMBOL drivers/ptp/ptp 0x036225e3 ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp 0x076da39d ptp_clock_register +EXPORT_SYMBOL drivers/ptp/ptp 0xdff09301 ptp_clock_event +EXPORT_SYMBOL drivers/ptp/ptp 0xfc415f44 ptp_clock_unregister +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x030fec98 rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x154cef67 rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x4dc5f9ea rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x507a7666 rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x9b393ede rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xc7f9e949 rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xc8dfd42b rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xfb72ae57 rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xff39d722 rproc_report_crash +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x02eb28fe fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x0396da9d fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x0d90e27d fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x1ead4d8e fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x3d77d465 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x45255fde fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x80c3e3bc fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x8336e87b fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x8c176dbe fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xa6b76e24 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xcefb94ee fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xf85eadf7 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0008e9db fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0a99dae3 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0b3df59b fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1030534b fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x16756c59 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1e080ed8 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x284038a8 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x28b71ac6 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2a24bdab fc_change_queue_type +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x30a628c9 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x37fced3f fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3873894f fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x446cc9fc fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x480be05e fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5f77e8e1 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x62502fbb fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x62eaab8f fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6a1d82b5 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6b7959b7 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6e52fab8 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x71c6f007 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x72e73a92 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x75c5a40f fc_change_queue_depth +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x77aa363e fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7d1e15b9 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x86646c90 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8b42d81e fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8ce5274b fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8e0abfd4 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x923bcffb fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x92ffd91e fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x98932b27 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x99bce0a8 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9aaf9244 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9bac2dff fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9fc6ee08 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa307e69e fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xad6ee12b libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb091ba74 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb822d1ca fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc01a5c0e fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xca344ad5 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcfe5486b fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd1f4a85b fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd6fe3049 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd75567ff fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd92218b3 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xda384d93 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf52322c9 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf8531d05 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf9ac3413 fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfce66b31 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x3686b479 sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x3ac5ddc8 sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x44bd3d34 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x511c8759 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 0x6f9f5574 mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x05eda10c osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0801ff59 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1162a25f osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x15826f6b osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2fa3358c osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x31bfcb88 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x34e808d3 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3750e824 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x39e27c3a osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x579916a3 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5998f234 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5dded04e osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x69e4c10d osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x720c443f osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x75249c19 osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x78efe5e2 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7cc0b05d osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7f03919b osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8efe5ae8 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9552306a osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9658e30b osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9f83e709 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa13d2c21 osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa673f14c osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa7129409 osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb28f75b6 osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb5957c93 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb89665c2 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xbe7fbee0 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd14d898f osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd4d8349e osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xdf6c2f41 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe19e7b25 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf623488a osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf7883eed osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xfa8e3249 osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/osd 0x06614c74 osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x4bc29813 osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x9486fcc1 osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0xa812c3b0 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xde963320 osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0xe3664281 osduld_device_same +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x023a92ea qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x1006f67b qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x15d92a6d qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x250f8281 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x6eb4d0f0 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x751aaf2f qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x9b3e5ebd qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xa170fea9 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xb352b118 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xc9606a18 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xd623bc8e qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x0720cdc9 qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x153838a2 qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x27a741c6 qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x6f4d89b7 qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x824245df qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xc1685613 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 0x448feee5 raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0x589ee0a4 raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0xe55f5f6f raid_class_release +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x2230e095 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x2f1f8638 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x31519ccc fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x4b80f118 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x5a799fd1 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x5ca6f5b9 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x759898c0 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x87641f4b fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb631c324 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xd8db6258 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe198b29b fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xf307ea69 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xf9944feb fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x01a26ac3 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x04ac9b05 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0b7a8317 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0d108966 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2209b6e6 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2b7b06f9 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x323b2e0b scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x344b852c sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3959aa22 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x39f9b987 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3c5c1eeb sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x605ac1c9 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x783f0701 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x87058f9e sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x88c83d12 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x92dc0238 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x95b10435 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9d2b3dd2 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa0f03918 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xacf6b156 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc48e95c5 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc6c82674 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xcc906470 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd68e018b sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xda1132ab scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf1dda9bf sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf8433e72 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xfacaa11f sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x395f4444 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x5bcab16a spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xc7a17e9d spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xc99ee7fd spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xf1bfd3f1 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x50c45af6 srp_rport_get +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x66929f68 srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x6ad7c945 srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x8d795763 srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x6ed14aab ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x6fc37b10 ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xe37a373d ufshcd_runtime_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x034b3141 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x0c9042cc ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0x105e7a1f ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x1ecf1d3d __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x39a9262e ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x4a5e6da4 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x4fc5847b ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x5af15978 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x70ac7e85 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x70d336ef ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x7885c8c0 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x7f5d1872 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x8980a90f ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x985d0233 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0xb1aaa149 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0xb2ec243e ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xc0399f99 ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xd4259590 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xd4f2cc76 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0xf4f12679 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xf589a6fe ssb_bus_resume +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x6dba1404 fwtty_port_put +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xaf8f31bd fwtty_port_get +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x35acb3e2 adt7316_remove +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xefc9a072 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x8a071f8d ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xae721115 ade7854_probe +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0bce7eef lnet_counters_get +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x135f5ed9 the_lnet +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 0x19b463cf lnet_register_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1b191752 lnet_msgtyp2str +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 0x2a0037de lnet_notify +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 0x2ed9f960 lnet_copy_iov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x33202a6c LNetGetId +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3558e584 lnet_iov_nob +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 0x44558931 lnet_net2ni +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x473ad33b LNetDist +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x483ad571 lnet_parse +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x4bb00492 lnet_copy_iov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x4f9cb871 lnet_extract_iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5811a721 LNetInit +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x58a1ca89 LNetMDUnlink +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5de2a02f lnet_extract_kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5fee352c lnet_acceptor_timeout +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x6057e91f lnet_unregister_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x61f784b2 LNetClearLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x64cdea3a LNetCtl +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x6f7be171 LNetEQGet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x70e2b1e9 lnet_kiov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x722c76e5 LNetMDAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x77bd110e lnet_set_ip_niaddr +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7a172f31 lnet_connect +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 0x8a3064f2 LNetSetAsync +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9de986d3 LNetEQAlloc +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa8c2760b LNetFini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xaa2d9284 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 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 0xc59c5f5c lnet_finalize +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe38d6ea2 lnet_set_reply_msg_len +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe7e048c9 lnet_create_reply_msg +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf098fa75 lnet_copy_kiov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf1b316bf LNetSnprintHandle +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 0x531c627b seq_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x649a5cfc seq_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x8f7f18bf client_fid_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xa0ad2ffb 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 0xaf4d4c5d seq_client_get_seq +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xc997a02f LUSTRE_SEQ_SPACE_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xdb542d4a seq_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xdf524efd client_fid_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xecee2727 LUSTRE_SEQ_ZERO_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x10d7ef46 fld_client_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x7b500755 fld_client_del_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x7eb2114c fld_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xafc8c354 fld_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xb0bc34a4 fld_client_proc_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xb9828d1a fld_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xdffbdde2 fld_client_add_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x000c507f libcfs_debug_dumplog +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x01d84452 libcfs_sock_getbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x01db5172 cfs_percpt_atomic_summary +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x01e1c271 cfs_hash_debug_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x03387ca6 cfs_curproc_groups_nr +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x04d3ce6a lbug_with_loc +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 0x12426266 libcfs_run_lbug_upcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x12c54b77 cfs_hash_findadd_unique +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x15089e7d libcfs_sock_read +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 0x1d5a3928 cfs_timer_done +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 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 0x2b1e0458 cfs_get_environ +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 0x2f4181b7 libcfs_sock_getaddr +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2fb7eae8 cfs_hash_bd_finddel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x30986343 cfs_range_expr_parse +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 0x3834f243 proc_call_handler +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 0x3ea730c0 cfs_gettok +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 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 0x41ab33a1 libcfs_ipif_free_enumeration +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 0x44f07cfc cfs_pause +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x468bace1 cfs_hash_rehash_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4782689b cfs_hash_debug_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x47fdb4d1 cfs_timer_is_armed +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x48f163c6 libcfs_str2anynid +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 0x50941bb6 libcfs_sock_connect +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 0x5d3be65a cfs_crypto_adler32_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5d73c3e3 cfs_expr_list_free_list +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 0x62f56738 upcall_cache_init +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 0x66136d2d cfs_timer_arm +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 0x6d49f48d libcfs_sock_accept +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6de1464b libcfs_sock_setbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6dfa9ea1 cfs_crypto_adler32_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6e6af71c current_is_32bit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6f928e1b libcfs_debug_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7190502f upcall_cache_cleanup +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 0x7327b6e3 libcfs_sock_listen +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x75161168 upcall_cache_flush_idle +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 0x7a3d49ae cfs_expr_list_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7a47b94d cfs_hash_size_get +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 0x7c7986cf waitq_wait +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 0x841679dd upcall_cache_get_entry +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 0x8f12bb52 libcfs_log_goto +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8f45f10d cfs_init_timer +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 0x991d2a98 libcfs_sock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9f82f712 cfs_trace_copyout_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa13a57c0 libcfs_sock_abort_accept +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa1cbf250 upcall_cache_flush_all +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 0xa9dc74e2 cfs_trace_copyin_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9eae690 cfs_str2mask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xaaf59b75 cfs_cpt_set_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xab887583 init_waitqueue_entry_current +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xad019238 cfs_str2num_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xad04a879 libcfs_kkuc_group_add +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 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 0xbb9cb508 cfs_curproc_cap_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbd5d492e cfs_timer_init +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 0xc2911d96 cfs_expr_list_match +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 0xc3eb614e libcfs_ipif_query +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc47433a6 cfs_capable +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 0xc9b78bb4 upcall_cache_downcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcb385db9 libcfs_debug_binary +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcbab8493 schedule_timeout_and_set_state +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 0xd9541990 cfs_strncasecmp +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 0xdffc951d cfs_timer_disarm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe0214dd9 libcfs_sock_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe3bf6897 cfs_percpt_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe6555032 libcfs_ipif_enumerate +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe7b54314 libcfs_arch_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe94553b9 upcall_cache_flush_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeaeb5c6e cfs_crypto_hash_update_page +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 0xedf3a25a cfs_timer_deadline +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeed48ba7 cfs_hash_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xefbf6d86 upcall_cache_put_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf2c02048 cfs_cpt_bind +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 0xf66c26f6 libcfs_kkuc_msg_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf8a8644b libcfs_id2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf8efb8c5 waitq_timedwait +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 0xff0f98a6 libcfs_debug_vmsg2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x0984ac25 ll_iocontrol_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x6c2c4518 ll_osscapa_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xba9d2da9 ll_stats_ops_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xcd3cde92 ll_iocontrol_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xceffdad8 ll_direct_rw_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x17cdeffd lov_read_and_clear_async_rc +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x27095531 lov_stripe_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x415f6a35 lov_device_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xa0435552 lov_lsm_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xa288d560 lov_stripe_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xb2c7d092 lov_lsm_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x24e1671d lprocfs_counter_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x3bcbdc4b lprocfs_stats_alloc_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x45a1243f fsfilt_put_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x4d8d6dfa lprocfs_counter_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x516b5d9a fsfilt_unregister_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x584f2bd4 lustre_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x6a21384b pop_ctxt +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x8553b369 obd_memory +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x85c076bc push_ctxt +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x9a2730ab fsfilt_get_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x9b2979d1 fsfilt_register_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xb4f8ee63 lprocfs_read_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xe382fc78 l_dentry_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x14a47f31 it_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x9c22b84f it_open_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0xb57d8447 it_set_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0xf46a886f it_clear_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mgc/mgc 0xdc287f95 mgc_fsname2resid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x006513a0 dt_index_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0125a7c2 cl_req_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x013f487b lu_object_put_nocache +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01665e34 class_parse_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0184f6b0 dt_store_resolve +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x018626cb cl_page_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01def0a2 llog_cat_cancel_records +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x026f55ba cl_req_page_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x02a8f1c8 llog_copy_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x02ce7b9a cl_use_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x035852d0 lustre_swab_llog_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03779933 llog_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x057f6d4b class_find_old_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0599094f iattr_from_obdo +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 0x06f0f68d class_disconnect_stale_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x072e0407 lustre_in_group_p +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07453049 dt_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07481ae9 cl_env_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x077d3270 cl_2queue_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0787e100 cl_conf_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07aa68bb lustre_swab_lustre_cfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x082200a3 lprocfs_rd_filesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0836daca lprocfs_register_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x083942ff class_del_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x09533ae2 lustre_process_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0a2dcaed cl_page_list_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0cf99bff dt_acct_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d3a031c lprocfs_rd_conn_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d6b1428 cl_env_nested_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d84aea4 cl_type_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0e5ef714 dt_record_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0e79a6bd llog_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ea58058 cl_lock_closure_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ec22fd6 llog_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0f2d0165 cl_lock_modify +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0f6cbdbd cl_unuse_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0fe91547 obdo_to_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10bdf519 class_conn2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11495519 lprocfs_write_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11634783 cl_io_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x117f74a8 cl_sync_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11cf99f5 lprocfs_rd_numrefs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x12bed1e1 obd_llog_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x130b401b llog_cat_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x132d07b4 cl_page_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1477ae5c class_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1491dc30 lu_context_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1598e154 llog_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16446921 cl_lock_at_pgoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16728a89 class_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x17260880 obdo_cpy_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x17cf4a44 lu_object_locate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1850c5e0 cl_io_lock_alloc_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1a9245d9 cl_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ac93e33 obd_devs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ae8956c cl_io_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1b8e7fec cl_lock_disclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1bcb2e5e cl_lock_unhold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1bf029bf cl_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1c131df1 cl_io_commit_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1e8d3f41 cl_page_list_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1eb01483 llog_open_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ebe26aa lprocfs_add_simple +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ef9df43 cl_page_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1efb42f1 cl_queue_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2040e6a1 class_config_parse_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x205a7d2f lprocfs_nid_stats_clear_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x20ad9d22 class_name2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x20fca73d class_new_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x211e36b3 lustre_idmap_lookup_uid +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 0x22e5bc88 obd_llog_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2343676f lu_context_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x237757a5 cl_object_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x23a12c0a lu_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x240b33eb cl_page_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x247f118c class_conn2export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2515e85f cl_io_read_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2547efae lustre_uuid_to_peer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x255f2474 cl_page_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x259ebac6 obd_alloc_fail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x260cac93 cl_lock_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2668ccb4 llog_init_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x26ba5ebf cl_req_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x275cdc7a cl_env_reexit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x284628c0 cl_lock_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x294a29c2 lu_context_enter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x297cf5e0 class_handle2object +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a95d707 llog_declare_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ae1cd79 kuc_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b18d32b lu_site_purge +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b23ebeb class_devices_in_group +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b4c48e9 server_name2svname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b57a15a llog_cat_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ba8735d dt_txn_callback_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2bd8993b cl_io_rw_advance +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2bd94a07 llog_cat_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2c5377fb class_exp2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2cf30ddf lprocfs_obd_rd_max_pages_per_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2e1c12c2 dt_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2e219d56 lu_context_key_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2f078202 cl_object_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2fb83195 __llog_ctxt_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x30256d18 lu_site_init_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3039fdb5 cl_page_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3121689c cl_page_list_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3149d2e8 cl_2queue_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x33149787 cl_page_vmpage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3361ddbc cl_io_submit_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x33808ba8 obdo_to_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x33ac499b obd_export_evict_by_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x347c877d llog_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x353f0716 lu_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x353fc8aa lprocfs_wr_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x35a32f4f lu_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x364ba2b5 cl_page_list_move +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37ed6e4b at_early_margin +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x385ebf66 cl_page_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x387f2e8b capa_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38c3397a cl_page_cache_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38fb0c90 class_match_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x39c8580f class_handle_hash_back +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a005065 dt_otable_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a591be2 cl_lock_enqueue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b25c7ce lprocfs_rd_num_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b49e18c lu_object_invariant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b524395 cl_lock_user_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b566bd5 llog_cat_init_and_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c9caa92 class_disconnect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3ccc7291 dt_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3d4dcffb lu_context_key_register_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3d537536 local_index_find_or_create_with_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3d5f442d dt_index_walk +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3da2aa39 lprocfs_alloc_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x404bd7a7 class_handle_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x404d85d1 lu_context_key_revive +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x40f3b807 llog_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x41514a71 local_object_unlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x41b67e21 lprocfs_alloc_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4210ff0b obdo_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x421e78ff cl_req_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x42618f6a cl_req_page_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x42b4f2c7 llog_cat_declare_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x438df067 lprocfs_rd_timeouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4464ab2e lprocfs_seq_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x447cf2a4 cl_locks_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44e41abb lustre_posix_acl_xattr_filter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x45237bcf cl_io_submit_rw +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x45ebdca2 cl_2queue_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x45f5aacc class_import_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x46db7430 cl_lock_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x474ed5bd lustre_swab_ll_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47b35f7d statfs_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 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 0x4a8725c7 lprocfs_rd_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ac58713 obd_connect_flags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4afb5e75 class_manual_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4b1f6477 cl_lock_is_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4b82d00f cl_env_implant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4bf356ca lustre_idmap_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d13458b kuc_len +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d835ed9 lprocfs_free_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4de36f3c lustre_idmap_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4dfd5d22 local_index_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e0a5a9a lu_object_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e128117 class_disconnect_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e704793 obd_exports_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4fba4346 dt_directory_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4fbb86c8 dt_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x507d111b llog_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50c7fc36 ptlrpc_put_connection_superhack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x52ef852c obdo_from_iattr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x53c01db6 lu_object_assign_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x53e131c9 cl_page_list_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54149074 class_config_dump_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54885f87 ldlm_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5558d9b5 class_fail_export +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 0x56638001 cl_page_list_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5708f193 cl_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x570d09ae lustre_swab_lu_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5953bbeb cl_sync_io_note +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x597b0771 cl_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a20d896 obd_memory_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b5b746e obdo_from_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b72ff1f cl_io_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b8766b3 obd_export_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bc022c5 lprocfs_dt_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5cb70ad1 lu_context_key_degister_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d294e9b lprocfs_rd_connect_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d34ae0d cl_lock_mode_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5db1c3e2 cl_page_list_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5de38a73 cl_env_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e62e708 lprocfs_rd_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e92d027 dt_txn_hook_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e93341f lprocfs_oh_sum +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ebe6dc1 cl_lock_signal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ed188a9 lprocfs_add_symlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fda0107 lu_dev_del_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fe97b73 block_debug_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x624ffe24 lprocfs_counter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x628dd2e7 cl_page_list_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631a518d mea_name2idx +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631fd7b9 lustre_ext_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6360e272 dt_txn_hook_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x642fa7c9 lprocfs_free_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x645492f2 class_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x648a7f66 lprocfs_free_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x65749dfd cl_lock_closure_build +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6614d32b class_find_client_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x666d8e7a cl_lock_mutex_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x670000a1 cl_req_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x672b83ac lu_kmem_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6734adbd lprocfs_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6767e29f class_new_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x677fd7f9 proc_lustre_root +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67977b42 lprocfs_remove_proc_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67a6f6d0 lu_context_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67a90622 la_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67dc223a lprocfs_remove +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x680f5340 llog_thread_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x68819ab2 lprocfs_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6890d175 lustre_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x68b50c41 cl_lock_state_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69488268 cl_page_is_under_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69a97687 cl_object_kill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69c42114 at_min +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6a1eb97e cl_lock_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6a4c921a class_detach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6a4e5c73 cl_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6a9362a8 lprocfs_init_mps_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6b4bce71 cl_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6bb6d421 lu_buf_realloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6bc7ec45 lprocfs_alloc_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6c3d2cfe cl_lock_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6d1da476 cl_env_nested_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6d91b326 lu_object_anon +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6dfa4770 class_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6e47778f lu_device_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6ec4442d cl_enqueue_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f3e6225 dt_quota_slv_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x705f0a2b cl_io_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x70b378ac class_incref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72151fd2 lprocfs_exp_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x727aa15f class_exp2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72ddee4c obdo_le_to_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72ec7a56 lu_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x73ba021d cl_lock_user_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x73dea1a5 cl_io_sub_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x742559b1 class_unregister_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7437a7fe cl_object_attr_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 0x7545c1be cl_page_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x755bfb5a cl_io_is_going +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x756a77f3 class_parse_nid_quiet +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x76094aee llog_osd_put_cat_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7723e909 dt_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x772c2d8f cat_cancel_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77ca5a14 llog_cancel_rec +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 0x792471fe cl_object_attr_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7968881a cl_lock_enclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7997cd0f lustre_register_client_fill_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7a999096 lprocfs_at_hist_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b4fc57b at_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b78243a lprocfs_rd_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7bb2c1d8 lu_context_key_quiesce +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7bc12d2a lprocfs_init_ops_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7bd6b64a cl_lock_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7ed7680b obd_export_evict_by_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7edcafa0 cl_env_reenter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f1dcc4b llog_osd_get_cat_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f93f379 lu_context_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f96186e lu_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fad7291 raw_name2idx +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fe5561a obd_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7feec67d lprocfs_rd_blksize +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 0x80d2a5af class_config_llog_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81742d89 obd_ioctl_popdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x826c9480 dt_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x831f656c class_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8409660f lu_context_key_register +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 0x84e2eed4 lu_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8534f055 llog_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x860a0e3d cl_lock_weigh +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8616a052 cl_io_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x86e32aa4 lu_cdebug_printer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x86e63d99 cl_page_is_owned +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8768f7a4 llog_obd_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8770484a lu_kmem_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8776fca2 class_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x880a16e1 llog_cat_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8829aa15 dt_version_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8869a6df local_file_find_or_create_with_fid +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 0x8a200bb6 cl_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8a594897 cl_lock_hold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8a73a9f1 class_export_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aa2c358 lprocfs_dt_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b00be9b cl_object_put +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 0x8c45d563 lprocfs_rd_u64 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8c58337e lprocfs_rd_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ca636e4 cl_page_is_vmlocked +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d0d0a99 lu_object_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d658ed0 capa_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8dcdc835 cl_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e7c8e1a llog_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f047192 llog_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f67314c obd_dump_on_eviction +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8fbd67bf cl_lock_is_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8fcc3c9e cl_page_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8fd9d8cf cl_2queue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x902bd72e dt_lookup_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x912d1e76 md_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9145ecf8 cl_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x916da5f4 cl_req_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x91c0b25b cl_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x922adc16 lu_object_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92758d91 dt_store_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92cee2d8 cl_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92e58479 obd_dump_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x937b7a5c dt_txn_hook_commit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93859814 lprocfs_oh_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93aabbcc dt_declare_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93b46468 lu_session_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93fcdf93 llog_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93ff80a9 cl_lock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9505c895 lustre_idmap_lookup_gid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95128d92 cl_lock_descr_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9512d507 lustre_acl_xattr_merge2posix +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x951879f1 cl_io_iter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x953125de lprocfs_obd_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 0x95e4ddee cl_lock_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95ec998a lustre_groups_sort +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9661bedd local_oid_storage_fini +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 0x98a8e222 cl_io_rw_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x98d3a3d6 lprocfs_seq_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99d08f09 lprocfs_exp_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9a49b209 cl_page_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9a9beb29 obdo_from_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9aa8523c dt_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1ed9d8 obd_jobid_var +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b4f72bd cl_page_find_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b916770 cl_lock_descr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b9aec75 cl_page_list_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9bab17de lprocfs_add_vars +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9c764eb2 cl_page_list_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9cacf8dd class_search_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dbb17b6 lprocfs_dt_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f8bfce0 dt_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9fa879bf lprocfs_nid_stats_clear_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa0432c80 dt_locate_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa0525839 lprocfs_rd_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa0711a94 cl_wait_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa1f44572 lprocfs_single_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa21c5ea1 obdo_from_la +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2ba6988 cl_page_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2ecf7e7 lu_device_type_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa35d7b0f llog_declare_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4062864 capa_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa48c4a30 lustre_idmap_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4ec9b97 lu_env_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa513f7e4 lustre_groups_from_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa56370af lprocfs_rd_kbytestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa57d1f4d llog_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5cd8043 class_process_proc_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5fb234f lprocfs_write_frac_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5fd5c67 lu_object_add_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa674c241 kuc_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa6ea4f8b llog_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7265ab3 class_uuid2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa83da236 cl_page_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa8ad2a7e cl_object_attr_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa9711c2b cl_env_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa9f01f78 lu_site_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa21b7a0 lustre_register_quota_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa8db86b lu_context_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab11d822 cl_lock_discard_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabf45922 capa_decrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac1762e1 cl_lock_hold_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac4b12ad cl_sync_io_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac7f1596 kuc_ptr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xadaa1a5d cl_lock_hold_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xadd13fab cl_lock_nr_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xae6a2a9f dt_txn_callback_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf3084fe cl_page_clip +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb01963a6 class_uuid_unparse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0fb9886 cl_lvb2attr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b89b6d class_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1e5af75 lu_ucred +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb39aa844 llog_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb3ad2527 dt_try_as_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb40adf17 lu_device_type_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb41998cd lustre_cfg_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb41b62a3 lprocfs_rd_server_uuid +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 0xb7a461d6 cl_io_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb89907d9 lu_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb91dd710 cl_page_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb9bd3a6a cl_lock_get_trust +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 0xbaf53444 lprocfs_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbb151fcb dump_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbbad012f cl_page_make_ready +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc701b85 lprocfs_wr_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbcd77bcd lu_context_key_quiesce_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbcee1990 cl_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbd237925 cl_io_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe349ce3 cl_offset +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbeb5a418 cl_io_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbedb6bd9 class_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbfed0275 obdo_refresh_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc021ff94 llog_declare_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0578b7c class_export_put +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 0xc1121b99 class_conn2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc123a1f2 lu_context_key_revive_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc23deb45 llog_cat_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc243a8e9 lu_object_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc5972c8a cl_io_loop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc5c5bf05 cl_lock_mutex_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc5ef50ba class_register_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc6363469 lu_env_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc7c31616 lprocfs_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8308e4c cl_env_unplant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8b773ea dump_lniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8dbaa87 lustre_swab_cfg_marker +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8ddbef1 lu_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9b3c667 dt_lfsck_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xca77b20a cl_io_prepare_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0ab67f obd_max_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcc5c98ab cl_page_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcca48747 capa_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xccf7a8de obdo_cpu_to_le +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 0xcdcdda20 lu_env_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcedb140a obdo_cmp_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xceffcc37 lustre_common_put_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcfb3f3c7 lprocfs_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd08827c0 server_name2fsname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd092e655 lustre_register_kill_super_cb +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 0xd1b1478b cl_attr2lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1f58645 lustre_swab_llog_hdr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd2820c63 cl_lock_closure_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd2a8821a local_file_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd6500c29 cl_page_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd666e878 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 0xd715e19a cl_io_init +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 0xd9470f5d class_num2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd9cb11b2 local_oid_storage_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd9e972a8 class_connected_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda5b1ced class_find_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdab2e483 cl_object_glimpse +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 0xdb4a60f6 lu_dev_add_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb5e0d39 lu_device_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdbeea54e cl_page_gang_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdbef9c2d cl_lock_mutex_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdc4b71b8 class_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc40af0 class_check_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdce450b0 cl_page_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdceb2067 cl_object_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd64e86e cl_pages_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd78c0c7 lu_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdda3d949 class_handle_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde7d985b obd_dirty_transit_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdfa9d700 cl_2queue_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe028cf84 capa_encrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe12d8136 dt_record_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe1e2eb6c cl_2queue_init_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe273ce40 cl_page_own_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2eb4470 class_get_next_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe3323f5d class_handle_free_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe373ef5c lprocfs_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe39fcef2 class_unlink_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe617f911 lu_env_refill_by_tags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe65b7f8f cl_page_unassume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7d83236 cleanup_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe896f80d cl_lock_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8e84c32 class_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe916e382 cl_page_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xea32d9a0 class_import_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeacec47c lprocfs_oh_tally_log2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xead00173 lu_object_find_slice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeb2c961f lprocfs_rd_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeb3f388a _debug_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec76847f lustre_idmap_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec7d6b85 obd_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec8082d3 lustre_end_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec9e3bc2 cl_page_list_splice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xecb31105 cl_lock_ext_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed826a7b lu_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xedacdc2a lu_object_find_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xedba43b0 cl_page_slice_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 0xeefbadec llog_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef30172d cl_lock_extransit +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 0xf0979848 lprocfs_obd_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf1248699 cl_2queue_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf17acd42 lu_context_key_degister +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2339f12 capa_cpy +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf29b9e5e cl_env_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2fd6695 statfs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf40e35a2 cl_io_iter_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf490d5f9 class_del_profiles +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf51394e8 cl_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf55fc3e6 lprocfs_free_per_client_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf5773720 lu_ucred_assert +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf59230de cl_lock_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf5bbe615 llog_write_rec +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 0xf7d0deee cl_page_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8594a73 llog_exist +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf874c950 dump_lsm +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8b77e5b lu_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8c2df92 obdo_set_parent_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa813d06 capa_hmac +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfb2d558a cl_page_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfb31db5b cl_vmpage_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfb66866f cl_object_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbea0098 lu_types_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc13862f cl_page_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc5ff24a llog_osd_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc7f18d0 obd_pages_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfce4103b lu_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd68d17a class_notify_sptlrpc_conf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd8118ad class_put_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd8f5cf4 lu_buf_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdbb4a3e cl_unuse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdbe1557 lprocfs_write_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdd139d4 llog_cat_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfe16597e lu_ucred_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfe55333a lprocfs_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff57e92d class_match_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff66c647 cl_io_lock_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfffc1f11 lustre_swab_ost_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/osc/osc 0x5c4940c2 osc_update_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00603411 ptlrpc_save_lock +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 0x02db52bd ldlm_pool_get_slv +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 0x06a03b57 ptlrpc_request_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06b3942b lustre_swab_lov_user_md_objects +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x071fc74a RQF_LDLM_ENQUEUE_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x07605c7d interval_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x081d185b sptlrpc_enc_pool_get_pages +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 0x09978720 sptlrpc_import_sec_ref +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 0x0b3e410d ldlm_init_flock_export +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 0x0e55cc12 sptlrpc_register_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ed1f888 ldlm_namespace_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0eebc8f2 llog_origin_handle_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0f0c56ac sptlrpc_cli_enlarge_reqbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0fab32de ptlrpc_lprocfs_brw +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x109ecb2f ldlm_cli_update_pool +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 0x1474440e ldlm_pool_setup +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 0x15315e4d ptlrpc_schedule_difficult_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15618c83 ldlm_cli_cancel_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15a3e4db RMF_GETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x172fb86d lustre_msg_hdr_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1747d8b3 ldlm_lockname +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x17950f60 RQF_SEC_CTX +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 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 0x1aabbec3 sptlrpc_target_sec_part +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 0x1b0a245d lprocfs_wr_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1b3722e9 ptlrpc_prep_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1b400291 ptlrpc_unregister_service +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 0x1c63764a ptlrpc_unregister_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d043548 lustre_msg_set_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d5e8e1e req_capsule_server_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1dc2051d RMF_SEQ_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1de9c288 lustre_swab_layout_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1e8e48a4 sptlrpc_flavor_has_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1eb2a65f RQF_OST_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ee46b51 lustre_init_msg_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ee9eb3c RQF_MDS_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2096f5b5 RQF_OST_SET_GRANT_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x20d6b82c RQF_LDLM_INTENT_QUOTA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x218a36ce ldlm_cli_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x233790b5 RMF_OST_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x244e5558 lustre_msg_get_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x24aafdba RMF_MGS_TARGET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2585a629 RMF_SEQ_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2587513c RQF_LDLM_CP_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x25a9a940 ptlrpc_lprocfs_register_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x25c87eed ldlm_lock_allow_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x263304c6 ldlm_resource_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x269554ce RQF_LDLM_INTENT_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x26ae7429 ptlrpc_nrs_policy_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x26f99d16 RQF_MGS_CONFIG_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x28200e64 llog_origin_handle_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x285e5b99 lustre_msg_set_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2887c78b req_capsule_client_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x291350c4 ldlm_namespace_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x29e0869a sptlrpc_get_hash_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x29f80656 ptlrpc_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2a1ad16a sptlrpc_conf_client_adapt +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 0x2d3f6b59 ptlrpc_error +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 0x2e709edd ldlm_extent_shift_kms +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 0x2f1fb6ef ptlrpc_restart_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 0x30203669 ldlm_completion_ast +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 0x30cc5be1 ldlm_cli_enqueue_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x310a526c req_capsule_filled_sizes +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x313a0558 sptlrpc_sec_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31838cb4 RMF_IDX_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x318a4c57 ldlm_pool_set_limit +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 0x34cacaa7 ptlrpc_set_add_new_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35939a3d lustre_swab_fiemap +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x369c3256 ldlm_namespace_new +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3779645d ptlrpc_req_finished_with_imp_lock +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 0x3896ba40 ldlm_pool_shrink +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 0x399f5986 ptlrpcd_wake +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 0x3a47804a _ldlm_lock_debug +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 0x3ae247e5 req_capsule_other_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 0x3ca50f33 RQF_MDS_HSM_CT_REGISTER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3cb520d3 sptlrpc_cli_unwrap_bulk_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3d47572c ldlm_destroy_flock_export +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 0x3dddb3e2 dump_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ee4579b ldlm_pool_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f034caf lustre_msg_get_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f41e0e7 ldlm_prep_elc_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f752e78 RQF_MDS_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x40eb98d5 ldlm_cli_cancel_unused +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41008cef RQF_LDLM_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x436aa038 ptlrpc_prep_bulk_imp +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 0x442bdd46 ptlrpc_deactivate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4481591d RQF_OST_SET_INFO_LAST_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x44c9f534 sec2target_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45697435 ptlrpc_unregister_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45d05893 lustre_swab_lustre_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45e30cea lustre_swab_ldlm_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x465386df sptlrpc_gc_del_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x46d035a8 ptlrpc_pinger_add_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4760011d ptlrpc_at_set_req_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x476e99a6 sptlrpc_target_update_exp_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47f5e903 RMF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x48814c9f lustre_swab_ost_lvb_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x48bf35fe ptlrpc_send_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x498c03c5 lustre_msg_set_last_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x49c4e290 req_capsule_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a51606a __ptlrpc_prep_bulk_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a5a2416 RMF_DLM_REQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4b09ce4b lustre_swab_mdt_rec_reint +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4c2e8458 ldlm_lock2handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4ceb56cb lprocfs_wr_evict_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d7580d0 lustre_swab_hsm_user_item +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4dc27e14 ldlm_lock_fail_match +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 0x4e8dc969 ldlm_lock_downgrade +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4eb03a6f ptlrpcd_destroy_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f084705 ptlrpc_request_set_replen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f2a3b10 ptlrpc_replay_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f73e059 req_capsule_get_size +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 0x52a2df05 lock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x52c62150 RMF_RCS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x532653d7 ptlrpc_resend_req +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 0x54bfc252 llog_initiator_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x555eb7fe RQF_MDS_HSM_STATE_SET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x56bed5f0 req_capsule_client_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x56db4c66 ldlm_cli_cancel_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x56ef8209 ldlm_register_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x57049238 lprocfs_rd_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5819efea ptlrpc_unpack_req_msg +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 0x595cac0a req_capsule_server_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x596582bf RMF_GETINFO_VALLEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x59ca398b ptlrpc_add_timeout_client +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 0x5af3e450 sptlrpc_get_bulk_checksum +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b60133d ldlm_destroy_export +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 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 0x5e84b6b9 req_capsule_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ec3284d RQF_MDS_HSM_CT_UNREGISTER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ef560c2 llog_origin_handle_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ef831ee lustre_msg_get_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5f7249be ptlrpc_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5f96ccdd ptlrpc_connection_get +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 0x62192cf8 dump_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x62aaae3f RQF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x62b833ac ldlm_resource_foreach +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 0x63b20c2b client_disconnect_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x647b6e48 lustre_swab_ldlm_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x64c58364 ldlm_glimpse_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x653723dc RMF_LOGCOOKIES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6540a1ea ptlrpc_register_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x657b00b7 ptlrpc_init_rq_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x67196dc0 ptlrpc_resend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x683243bf ptlrpc_set_next_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6845acf6 ldlm_blocking_ast +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 0x68f418fa req_capsule_extend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68f49e5e ptlrpc_expired_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6911f1eb ldlm_lock_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6912990a RQF_OST_QUOTACHECK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6945a044 ptlrpc_disconnect_import +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 0x6b6f4bc2 req_capsule_has_field +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c147713 ptlrpc_buf_need_swab +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 0x6e52dd2e sptlrpc_gc_add_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6e792230 ptlrpc_mark_interrupted +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 0x707633ff ldlm_namespace_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x71b72048 ptlrpc_recover_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x71d4eb55 ptlrpcd_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x71e1f2c4 lustre_pack_reply_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x723a3269 ptlrpc_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x723d43b6 sptlrpc_rule_set_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x725a892c RQF_MDS_REINT_OPEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7287b6c0 ldlm_pool_get_lvf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x72b2fe09 ptlrpc_stop_all_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x731a371f ptlrpc_req_set_repsize +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 0x75072e84 sptlrpc_conf_target_get_rules +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 0x77571cc6 lustre_swab_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77840c82 sptlrpc_rule_set_choose +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x784daca4 ptlrpc_request_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x789ed66d ptlrpc_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78ad61ec sptlrpc_lprocfs_cliobd_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78bf9136 lustre_swab_ldlm_lock_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x79e12c1b sptlrpc_cli_unwrap_bulk_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a832f10 RMF_CONN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7adad336 lustre_free_reply_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7ae9eb54 sptlrpc_cli_ctx_expire +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 0x7c3ae858 llog_origin_handle_prev_block +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7c4c6107 RQF_LDLM_CONVERT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7c504932 ldlm_namespace_cleanup +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 0x7dc5ec4c req_capsule_server_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7dfb3c18 lustre_msg_clear_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7e32f87a client_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7e433804 llog_origin_handle_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7e9d44f4 ptlrpc_retain_replayable_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7eb123c1 ptlrpc_service_health_check +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 0x808498df target_send_reply +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 0x8205dea7 ptlrpc_set_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8216a2c8 ptlrpc_reconnect_import +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 0x84edf124 ldlm_enqueue_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85135801 RMF_DLM_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85a27736 sptlrpc_target_export_check +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 0x879c11ea req_capsule_set_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x87bf7b3c sptlrpc_get_next_secid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x87ff2afb ldlm_pool_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x881a9be0 __ldlm_handle2lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x883a54ba ptlrpc_nrs_policy_unregister +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 0x8901ee11 ldlm_namespace_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x893636b3 ptlrpc_queue_wait +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 0x8a67de3c ptlrpc_commit_replies +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ac440fa ptlrpc_uuid_to_connection +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b065022 ldlm_cancel_resource_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b854254 lustre_swab_mgs_config_res +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8c407274 llog_client_ops +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 0x8de97e75 ldlm_lock2desc +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 0x8f857006 ldlm_reprocess_all_ns +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8fc65ff5 ldlm_resource_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8fec0451 lustre_msg_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x904ff4dc __ptlrpc_free_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x905dd234 req_capsule_server_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x919c4ce3 RMF_OBD_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x91ba4b9d sptlrpc_req_replace_dead_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x91cf58d3 RQF_MDS_PIN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9261ad50 ptlrpc_abort_inflight +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 0x967516a7 sptlrpc_svc_ctx_invalidate +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 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 0x9afc5487 ldlm_init_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b1899e0 ptlrpc_pinger_sending_on_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b229a92 ldlm_namespace_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b7a7cea unlock_res_and_lock +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 0x9c2e0d85 sptlrpc_sec_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9c88f4f1 ldlm_lock_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d2f768b ldlm_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d493f58 lprocfs_wr_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d7ea314 sptlrpc_pack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9dba10f2 ptlrpc_cleanup_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9e0e21e1 ptl_send_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9e635ace ptlrpc_request_alloc_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9f8db019 req_capsule_server_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9fb088f1 lustre_swab_lov_mds_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa0914142 sptlrpc_cli_ctx_wakeup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa10f0d3d RMF_UPDATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa1316777 client_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa1493713 ptlrpc_start_threads +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 0xa2679979 ldlm_cli_cancel_unused_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa2a9ea50 sptlrpc_unregister_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa2d718c0 lustre_pack_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa337b47e req_capsule_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3d2a6ee RMF_CAPA1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa44b90e0 lustre_pack_request +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 0xa4ed8656 ldlm_pool_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4fa9d01 sptlrpc_gc_add_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5458dad ldlm_lock_decref_and_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5657510 req_capsule_init +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 0xa7ad33f8 ldlm_lock_change_resource +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 0xabba4d10 ldlm_resource_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xac63ed31 llog_origin_handle_read_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xad017208 ldlm_pool_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaddc3979 lustre_swab_lustre_capa_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae058ab7 do_set_info_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae39d321 ptlrpc_request_free +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 0xaf9ca4eb ldlm_pool_set_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0751fa4 RQF_LLOG_ORIGIN_HANDLE_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1aba1dc ptlrpc_init_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1b43d8a dump_rcs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb230b8f2 ldlm_lock_fail_match_locked +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 0xb2b1817d lustre_swab_ost_lvb +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 0xb62d3007 ldlm_lock_cancel +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 0xb996c12a lprocfs_wr_pinger_recov +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 0xbda4b750 ptlrpc_request_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbe47bc7e ping_evictor_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbe6c5a86 ptlrpc_request_bufs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbec491af lustre_pack_reply_v2 +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 0xc1c37843 ptlrpc_set_import_active +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc1ed015f ldlm_pool_get_clv +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 0xc596965f target_print_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc60a60e1 RQF_OST_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc65cf09d client_import_find_conn +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 0xc8be12e1 ptlrpc_buf_set_swabbed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc8f586a9 ptlrpc_connection_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc9b7b8ae llog_origin_handle_next_block +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc9c1e7cf sptlrpc_cli_wrap_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xca5a81ec ptlrpc_pinger_ir_down +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcaa0c517 client_connect_import +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 0xcbf0062e ptlrpc_request_alloc_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce1a689b sptlrpc_enc_pool_add_user +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce86066d lustre_msg_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce894822 ptlrpc_lprocfs_unregister_obd +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 0xcfd6895a req_capsule_server_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd047ce74 _debug_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd1a73e12 ldlm_cli_enqueue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2983334 lustre_swab_swap_layouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2e0d4eb lustre_msg_get_opc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd3794247 ptlrpc_activate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd3dae408 ldlm_it2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd4939679 ptlrpc_fail_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd537ded2 lustre_swab_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd5e67598 ldlm_completion_ast_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd619d3b8 ptlrpc_obd_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd67a5d7b lustre_swab_update_reply_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd68a2225 ldlm_flock_completion_ast +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 0xd89b0701 ldlm_cli_enqueue +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 0xda2ac111 sptlrpc_proc_root +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 0xdbd61cc2 ptlrpcd_alloc_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdc9e986e ptlrpc_pinger_del_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdcf910b9 lustre_swab_ost_last_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdcffb147 ldlm_get_enq_timeout +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 0xde30af49 ptlrpc_cleanup_client +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 0xe036cca1 ldlm_pool_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe05e2070 sptlrpc_import_flush_my_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0cc694c RQF_LLOG_ORIGIN_HANDLE_NEXT_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0daa98f client_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe146fb71 ptlrpc_prep_req_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe22ff8df target_pack_pool_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe3188ab7 req_capsule_client_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe38cae63 ptlrpc_invalidate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe40e0a50 lustre_msg_get_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe57bd972 sptlrpc_current_user_desc_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe5e8169b lustre_errno_ntoh +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe61c687d ptlrpc_unpack_rep_msg +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 0xe765e98a req_capsule_field_present +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe8871431 req_capsule_server_sized_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xea610cdc sptlrpc_import_flush_all_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeabaa0b1 lustre_swab_mdt_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeabac4fc sptlrpc_rule_set_merge +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeb5627ce ptlrpc_register_service +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 0xecefc351 sptlrpc_sec_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xed1c10d6 ptlrpc_connection_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xed5440cc req_capsule_client_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xedcb740d sptlrpc_name2flavor_base +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef1aeca9 RMF_FLD_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef62b74b ldlm_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xefb519ad ldlm_prep_enqueue_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0241d6e lustre_swab_hsm_progress_kernel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0d52b5f ptlrpc_pinger_suppress_pings +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf1300275 _sptlrpc_enlarge_msg_inplace +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf13f4236 sptlrpc_cli_ctx_get +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 0xf2eb8a63 sptlrpc_cli_ctx_put +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 0xf40f29d9 req_capsule_init_area +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf43540b9 lustre_swab_mgs_nidtbl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf44354a0 ptlrpc_req_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf45085e1 sptlrpc_conf_log_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf469d32e ldlm_replay_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf5192c19 ptlrpc_req_finished +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 0xf6d18915 sptlrpc_enc_pool_put_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf6d7d4f2 ldlm_blocking_ast_nocheck +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf70eb5d3 ldlm_resource_unlink_lock +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 0xf7f400b5 ldlm_lock_allow_match_locked +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 0xf9512a17 client_import_del_conn +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 0xfacd1418 ptlrpc_wake_delayed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfaf6bf37 ptlrpc_hpreq_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfb444a98 ptlrpc_prep_fcset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfbdd1965 ldlm_pool_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc2fa83f ptlrpc_del_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfd148bf8 RMF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff02a0e9 ldlm_lock_set_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff2b5341 ptlrpc_prep_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffc7607a client_import_add_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 0xe2679d59 cxd2099_attach +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x0294fde4 go7007_read_addr +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x0669830e go7007_alloc +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x23053eff go7007_snd_init +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x2af2835d go7007_boot_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x492af1b4 go7007_register_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x557c0580 go7007_read_interrupt +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x64ccac28 go7007_update_board +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x9259b20e go7007_snd_remove +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xa465e8e6 go7007_parse_video_stream +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x090fb11f rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0be5787f rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0e5ef1cb rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x18d27928 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1938dc88 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1b7a80d9 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1c366e80 rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1cb13d9e rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x22bab9bc rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x31bf9bea rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3393a589 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x36750492 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x37027544 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3af59b8f alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3b4ec757 rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4b8fbeed rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4e0d3a33 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5648f0ab rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x66217283 Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6f39d372 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x73886d59 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x81500699 rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x81810af0 rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x83570d7a rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x837d6ab6 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x851e74e7 rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x854161e3 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x85ce9ffc rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x875c28b6 rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x88914fe9 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8adc8965 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8bd9aaca rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x958bb9c8 rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9732b495 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9bfdf3a9 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9e4fef19 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa909b459 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xacd3ac72 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xae2fcc34 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xafb50de6 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb969858e rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc2449df4 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc68a92b9 rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd461dd1d rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xde2ef252 free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xec2ec18b rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xec61d625 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf31f7b1d rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf8132eaa rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfff48881 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x02243a55 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x06b1093a SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0b2e7e75 ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0c5ce451 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x114c33a6 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x127b80b9 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x129d32ef ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x13b6b690 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1a33f268 ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1a646b0f ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1c5d4a3f ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x213dbf37 Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x26db050f ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x28be46c6 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2ac3e3bb ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2e29326e ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x37a2faf1 DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3cbb989d ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x420d6d90 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4529270a ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4fb6d5a3 ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x564f305f ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5c503b55 ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5c5eb5f3 ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x63939a29 Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x63fc5d5c IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x65e92b5a ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x66a23d1a ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x683c861d ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6c32c8b5 ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6d1ba3fd ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6f95ac84 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x71d9748c ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x740c9fa5 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x749027b9 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7f6b900a ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x82fb9ba7 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8a9711a6 ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8f367cc8 ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8f46e522 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa2962d34 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xab794cf5 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xabf8f207 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb583235d ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc093ca11 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc4676b54 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc548c13b ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xccdc4d3a ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd1cc9acd ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe13f5351 DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe5befed5 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe7a75ddf HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xea434ad0 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf57ec966 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf88c07f1 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfed37f1b ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x0017f35f set_bp_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x00ea0cde set_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x06d6f244 get_bp_dis_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x09df8f3e set_tap_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x0a8d32c3 get_bypass_slave_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x1936264c set_dis_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x1d2eb8ca get_tap_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x203af1f7 reset_bypass_wd_timer_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2070f14a set_bypass_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x27b990ef get_bypass_info_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2ba7cd35 get_wd_autoreset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2c3f1c17 get_tx_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2f59e636 get_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2fdb893a get_tap_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x361cf40a get_dis_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x45ca99c3 set_wd_autoreset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x550a188c set_bypass_wd_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x5cb59e92 get_bypass_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x66b60122 set_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x675208c0 set_tx_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x692623f2 get_std_nic_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x75131ec6 set_bypass_pwoff_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x76c0b7d0 set_tpl_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x7e872825 get_wd_exp_mode_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x7e8d701e get_wd_expire_time_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x86388b07 get_bp_disc_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x93ae4648 get_wd_set_caps_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x95e42b0d is_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x9df5f807 set_dis_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x9e21f42e set_std_nic_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xa689a214 get_bypass_wd_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xae117788 get_bp_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xc368d30d get_dis_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xccab5de0 get_bypass_caps_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd3e034b3 get_bypass_pwoff_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd9c1ccfc get_bp_disc_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd9d38d97 set_wd_exp_mode_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xe640f06e set_bp_disc_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xecdaa456 set_bp_hw_reset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xedcd3c1b get_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf06d67bf set_bp_dis_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf57c1671 get_bp_hw_reset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf693c3a1 bp_if_scan_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf8237882 get_bypass_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xfa59240d get_tpl_sd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x05af3c4c set_wd_exp_mode +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x05b08a42 set_bp_hw_reset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x0b0d5ce0 get_tap_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x0fc2e83c reset_bypass_wd_timer +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x123a8133 get_tx +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x157ec89c get_bp_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2440f05a get_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2b01d1d4 set_bp_dis_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2c27a2f0 set_dis_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2da97f4b is_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2e86c67b get_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x37416370 get_bp_hw_reset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x37bdab27 get_wd_autoreset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x3da96a18 get_bypass_caps +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4025805e get_bypass_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4940a0cc get_bypass_info +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4d21ff51 get_bypass_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5147360c get_bp_disc_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x515d4df1 get_bypass_slave +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5560267e set_wd_autoreset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5be44d44 set_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x6653590c get_wd_exp_mode +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x6bda14ec get_bp_dis_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x72c618ae set_bypass_wd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x76d47e6f set_bp_disc_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x794e3815 set_tap_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x7c6cbc16 get_tpl +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x84a263dc set_tx +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x8a16f22c set_tpl +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x946ff795 get_wd_set_caps +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x94f6aff2 get_bypass_wd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x9d1ecf73 set_bypass_pwoff +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xb1385629 set_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xbff68c45 set_bypass_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xc871c561 get_dis_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xcee528df set_std_nic +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xd202dd85 get_bypass_pwoff +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xd787f151 get_wd_expire_time +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xdb6a39d2 get_dis_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xebd25ae5 get_std_nic +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf1e9f8c1 set_bp_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf224abd9 get_tap_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf5a591b2 set_dis_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf643fd4c get_bp_disc_pwup +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x172b1a9b xillybus_init_endpoint +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x4c6468f2 xillybus_endpoint_remove +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x921eb5a3 xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0xd7235c89 xillybus_do_cleanup +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0215e5f0 iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x069ec5cc iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x109cf6af iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x10a6b1f6 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1bf3d29b iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2630f757 iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x31bac25c iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x320378d0 iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3779e14f iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4a12509f iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4abceba0 iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4ae09244 iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4c26902d iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4e5a7510 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x51deabbd iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5c8b1b03 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x61fe62e7 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x62caad9b iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x65638f75 iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x73ccee7b iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x85cd4560 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x98e9c023 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9a5cd2d8 iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbbb22eec iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xcc6daa28 iscsit_handle_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xcd5e2561 iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe36bc22b iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf07f51b3 iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/target_core_mod 0x00356e1d transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x0239cf37 iscsi_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x211be17b core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x21b15ff2 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x2278b216 target_fabric_configfs_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x24c44dc2 fc_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x2641fde1 fc_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x2b70abbc sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x2c0b6bd6 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x34a44c59 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x424a776b core_tpg_clear_object_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x45143ea9 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x4c066026 fc_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x4e535b9d core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x4f205471 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x53091de3 core_tpg_add_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x53876af6 sas_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x55d178b4 spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x57f4568c transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x58aa26db __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x5a981f00 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x5c43301e transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x5df39ae5 spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0x5e20df6b sas_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x5f904b69 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x67d71214 core_tpg_del_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x6bc37280 transport_subsystem_release +EXPORT_SYMBOL drivers/target/target_core_mod 0x6bd97444 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x792f5380 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x79965f60 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x7b59f986 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x7eb93e93 transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x81363c48 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x8beb6674 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x8c0179f2 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x8d293459 target_to_linux_sector +EXPORT_SYMBOL drivers/target/target_core_mod 0x8f73cd5e iscsi_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x8fff794b core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x936d850f transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x99db5199 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0xa393b551 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0xa51eef2d transport_subsystem_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xa76d9206 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0xa7c66352 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xa9513a16 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xa98642ca transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xaa8d481c sas_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xb17cb425 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xb200b180 target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0xb68d0b6e transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xb8ba21df transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xbee64a95 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xc0a12c05 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xc2645c85 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xc4f66f5f transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xcadda669 iscsi_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0xcbe4ebeb sas_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0xcf1f8119 sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0xcfa40a15 target_fabric_configfs_free +EXPORT_SYMBOL drivers/target/target_core_mod 0xd636651a target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0xd78106f0 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0xdc27f692 iscsi_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0xdcdd0e49 target_fabric_configfs_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xdee6cc6d sbc_execute_unmap +EXPORT_SYMBOL drivers/target/target_core_mod 0xdfa728f5 target_fabric_configfs_init +EXPORT_SYMBOL drivers/target/target_core_mod 0xdffd100a fc_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xe2da87da core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xe85d1564 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xeea8b746 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 0xfe82466b core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0xfea865b0 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0xffd480db target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xffebc516 spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0xc13b5d8e usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0xc11c6e99 unregister_gadget_item +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x05e02f8c gether_register_netdev +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x2259d70a gether_get_host_addr_u8 +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x27ec1d39 gether_get_host_addr_cdc +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x2b3798fc gether_get_host_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x394363e1 gether_set_host_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x693fc0c2 gether_get_ifname +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x76cb53a3 gether_set_dev_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x86d62833 gether_setup_name +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x8c03df39 gether_get_dev_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x914da0d8 gether_connect +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x9cda5411 gether_set_qmult +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x9d8ffe4d gether_disconnect +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xbd1956e5 gether_get_qmult +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xd35175f3 gether_set_gadget +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xe8160b70 gether_setup_name_default +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x3a6d4f22 rndis_free_response +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x3ca38e3a rndis_signal_connect +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x4ca90996 rndis_signal_disconnect +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x5d22b406 rndis_register +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x785d494b rndis_msg_parser +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x840dd143 rndis_deregister +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x988ad2a2 rndis_set_param_vendor +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x9acf72e4 rndis_set_param_medium +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xa03665cd rndis_set_param_dev +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xa564cebf rndis_rm_hdr +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xa90054ee rndis_uninit +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xb971ebca rndis_get_next_response +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xcb253d65 rndis_add_hdr +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xd2fe47b1 rndis_set_host_mac +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x001af3ff fsg_show_ro +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x028c4769 fsg_store_file +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x07e85a9e fsg_show_removable +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x096b8dc3 fsg_store_cdrom +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x1710b539 fsg_fs_bulk_out_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x1b1cc3af store_cdrom_address +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x2933ee1d fsg_ss_bulk_in_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x34e3e02d fsg_lun_open +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x398778e1 fsg_ss_function +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x423845e4 fsg_ss_bulk_in_comp_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x56344daf fsg_hs_bulk_out_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x773a975e fsg_show_file +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x7ab797ef fsg_lun_fsync_sub +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x857b6dc2 fsg_hs_function +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x8fa992ab fsg_lun_close +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x95cffb3e fsg_hs_bulk_in_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xa4786eb2 fsg_store_removable +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xa5cae92f fsg_ss_bulk_out_comp_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xa5f99b69 fsg_fs_function +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xad07adce fsg_store_ro +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xb52ba28a fsg_intf_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xb54d0d95 fsg_fs_bulk_in_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xea454d96 fsg_store_nofua +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xeb2d82f0 fsg_show_cdrom +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xf13e8cd2 fsg_show_nofua +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xf4efc0c8 fsg_ss_bulk_out_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_rndis 0x56110684 rndis_borrow_net +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0xfb6881b3 sl811h_driver +EXPORT_SYMBOL drivers/usb/phy/phy-generic 0xa64a4cea usb_nop_xceiv_unregister +EXPORT_SYMBOL drivers/usb/phy/phy-generic 0xd0e43207 usb_nop_xceiv_register +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x068f3dcf usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x176de7b7 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x510da7b6 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x5822b070 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x5eeb4522 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x67e3cc48 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x959a183a usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb5e9c451 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xc21ff956 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xcf4b3f37 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe4e193c2 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe863951c usb_wwan_set_termios +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf4d1ba46 usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x03373072 usb_serial_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x723411ea usb_serial_resume +EXPORT_SYMBOL drivers/vhost/vringh 0x0dda8c5a vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x1f063017 vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x2e91ca97 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x367ce26a vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x36dfce73 vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3eaf442a vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x3fa42e4f vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x5dafbd4e vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x66af098b vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x6d0e7948 vringh_abandon_user +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 0xaf8e4a0e vringh_notify_disable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xafb47dae vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0xc884d704 vringh_notify_disable_user +EXPORT_SYMBOL drivers/vhost/vringh 0xc8bee0a4 vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xd11d2709 vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xda4ea4cc vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0xfc7dcad2 vringh_getdesc_user +EXPORT_SYMBOL drivers/video/backlight/generic_bl 0x366d19ef genericbl_limit_intensity +EXPORT_SYMBOL drivers/video/backlight/lcd 0x1fb85b22 devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x7662dc8b lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xbb6994e9 lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xccb256ba devm_lcd_device_register +EXPORT_SYMBOL drivers/video/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/cyber2000fb 0x534b6f18 cyber2000fb_disable_extregs +EXPORT_SYMBOL drivers/video/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/cyber2000fb 0xdfb28f20 cyber2000fb_attach +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x5f5d8e33 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x6db8e0fb matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0xd2df7a5c g450_mnp2f +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x3c2721d6 matrox_mystique +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x3c4f2d39 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xacf3756a matrox_G100 +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xf26dea3c DAC1064_global_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_Ti3026 0xc8d760a1 matrox_millennium +EXPORT_SYMBOL drivers/video/matrox/matroxfb_accel 0x5d8b76dd matrox_cfbX_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x058ab9a1 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x8d1a56bd matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0xdc0262c6 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0xf946c6f5 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0x618cb893 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0x70aefa3c matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x1b2dc43d matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x3f052de0 matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x561f0476 matroxfb_read_pins +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xb1f5e823 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xe99e4410 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/mb862xx/mb862xxfb 0x67209340 mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/output 0x727c32d6 video_output_register +EXPORT_SYMBOL drivers/video/output 0x926d6885 video_output_unregister +EXPORT_SYMBOL drivers/video/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/svgalib 0x1cead839 svga_settile +EXPORT_SYMBOL drivers/video/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/svgalib 0x4cec462a svga_tilecursor +EXPORT_SYMBOL drivers/video/svgalib 0x5de85075 svga_get_tilemax +EXPORT_SYMBOL drivers/video/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/svgalib 0xa617bbd5 svga_tilefill +EXPORT_SYMBOL drivers/video/svgalib 0xa7292179 svga_tileblit +EXPORT_SYMBOL drivers/video/svgalib 0xcdd7d472 svga_get_caps +EXPORT_SYMBOL drivers/video/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/svgalib 0xf1f07c2e svga_tilecopy +EXPORT_SYMBOL drivers/video/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/syscopyarea 0xd1e1b852 sys_copyarea +EXPORT_SYMBOL drivers/video/sysfillrect 0xcdd5caaa sys_fillrect +EXPORT_SYMBOL drivers/video/sysimgblt 0x90d157b7 sys_imageblit +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/vme/vme 0x00d7e722 vme_lm_count +EXPORT_SYMBOL drivers/vme/vme 0x072f901c vme_master_rmw +EXPORT_SYMBOL drivers/vme/vme 0x0ec5babe vme_dma_free +EXPORT_SYMBOL drivers/vme/vme 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL drivers/vme/vme 0x27f497b1 vme_register_driver +EXPORT_SYMBOL drivers/vme/vme 0x381a3c86 vme_new_dma_list +EXPORT_SYMBOL drivers/vme/vme 0x3e95083c vme_slave_get +EXPORT_SYMBOL drivers/vme/vme 0x3f82aaa4 vme_irq_handler +EXPORT_SYMBOL drivers/vme/vme 0x411af1d9 vme_lm_request +EXPORT_SYMBOL drivers/vme/vme 0x41862ad4 vme_alloc_consistent +EXPORT_SYMBOL drivers/vme/vme 0x4434b2c7 vme_slave_request +EXPORT_SYMBOL drivers/vme/vme 0x46649cd1 vme_lm_set +EXPORT_SYMBOL drivers/vme/vme 0x48b99a13 vme_lm_free +EXPORT_SYMBOL drivers/vme/vme 0x4baf35a7 vme_master_get +EXPORT_SYMBOL drivers/vme/vme 0x50140a71 vme_register_bridge +EXPORT_SYMBOL drivers/vme/vme 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL drivers/vme/vme 0x5aff4177 vme_lm_get +EXPORT_SYMBOL drivers/vme/vme 0x7cf35220 vme_master_free +EXPORT_SYMBOL drivers/vme/vme 0x7d15e244 vme_dma_list_add +EXPORT_SYMBOL drivers/vme/vme 0x7fde2edb vme_master_read +EXPORT_SYMBOL drivers/vme/vme 0x90695906 vme_free_consistent +EXPORT_SYMBOL drivers/vme/vme 0x90adb6d3 vme_dma_list_free +EXPORT_SYMBOL drivers/vme/vme 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL drivers/vme/vme 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL drivers/vme/vme 0x9bbf55a4 vme_slot_get +EXPORT_SYMBOL drivers/vme/vme 0xa31bdf07 vme_master_set +EXPORT_SYMBOL drivers/vme/vme 0xb23e3e08 vme_dma_list_exec +EXPORT_SYMBOL drivers/vme/vme 0xb49df8c8 vme_master_request +EXPORT_SYMBOL drivers/vme/vme 0xc409dcb2 vme_irq_generate +EXPORT_SYMBOL drivers/vme/vme 0xd3aad6d1 vme_unregister_driver +EXPORT_SYMBOL drivers/vme/vme 0xd797b9a5 vme_master_write +EXPORT_SYMBOL drivers/vme/vme 0xdff905e5 vme_slave_free +EXPORT_SYMBOL drivers/vme/vme 0xe693a6ce vme_get_size +EXPORT_SYMBOL drivers/vme/vme 0xecc5d9c7 vme_irq_free +EXPORT_SYMBOL drivers/vme/vme 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL drivers/vme/vme 0xf118f83f vme_irq_request +EXPORT_SYMBOL drivers/vme/vme 0xf35d4d26 vme_unregister_bridge +EXPORT_SYMBOL drivers/vme/vme 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL drivers/vme/vme 0xf90b8f0d vme_bus_type +EXPORT_SYMBOL drivers/vme/vme 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL drivers/vme/vme 0xfc950f87 vme_dma_request +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x02acca08 w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x32358016 w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x36376394 w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x524ed81e w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x5872c0e5 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x880ca077 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x71102234 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xa1edf7b3 w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/wire 0x3935f4ec w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0x3be029f4 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0x8054721a w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0xc134b625 w1_register_family +EXPORT_SYMBOL fs/btrfs/btrfs 0x27476846 ulist_reinit +EXPORT_SYMBOL fs/btrfs/btrfs 0x41e6a9d2 ulist_init +EXPORT_SYMBOL fs/btrfs/btrfs 0x7e2ee765 ulist_free +EXPORT_SYMBOL fs/btrfs/btrfs 0xa2eec2e8 ulist_fini +EXPORT_SYMBOL fs/btrfs/btrfs 0xb1320bc8 ulist_add +EXPORT_SYMBOL fs/btrfs/btrfs 0xb42289d2 ulist_alloc +EXPORT_SYMBOL fs/btrfs/btrfs 0xc2c745db ulist_next +EXPORT_SYMBOL fs/configfs/configfs 0x42ec315b config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0x6c08ead3 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x8a95d463 config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0x9b855248 configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x9c71b7d3 configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0xa2404ae0 configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xa5cc5c91 config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xae8af9f6 config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0xd0e3107d config_item_init +EXPORT_SYMBOL fs/configfs/configfs 0xd2a4b019 config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0xd355e6af config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xe9ce7c64 configfs_undepend_item +EXPORT_SYMBOL fs/exofs/libore 0x11804d12 ore_write +EXPORT_SYMBOL fs/exofs/libore 0x12e7780a ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0x15f27093 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 0x900d2601 ore_create +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xb116dfce ore_read +EXPORT_SYMBOL fs/exofs/libore 0xba62d3bf ore_remove +EXPORT_SYMBOL fs/exofs/libore 0xde88f36c extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0xe507ff64 ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0xf85f5d73 ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0xf8916395 ore_check_io +EXPORT_SYMBOL fs/fscache/fscache 0x0fdd36bc __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x1d5deb24 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x21a8d971 __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x2d20e9e7 fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0x312ed012 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x35381092 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x356e19e7 __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0x438d0256 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x43f12e5c __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x445e1c5c fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0x44ec7fe9 __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x466a0428 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x46fa4690 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x4a9110aa __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x50398648 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x5dbb0927 __fscache_wait_on_invalidate +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 0x883e2920 __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x8b1a830e fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x8dcbf1c8 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0x8ea90bd1 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x9894d146 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x9a3b3568 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x9f3c980e fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0xa3ab6d40 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0xb363647c __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0xb71b39d8 __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0xb7dc7587 fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0xbcbd05d2 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0xc23c1ef5 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xc501019d fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0xc87b315d __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0xd250c3c5 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0xdd0bc8b7 fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0xec7dacbb fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0xef61c073 __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xf34e8ef3 __fscache_register_netfs +EXPORT_SYMBOL fs/nfsd/nfsd 0x35e33c1e nfs4_acl_write_who +EXPORT_SYMBOL fs/nfsd/nfsd 0x5a157ae4 nfs4_acl_get_whotype +EXPORT_SYMBOL fs/nfsd/nfsd 0xa0f4b528 nfs4_acl_posix_to_nfsv4 +EXPORT_SYMBOL fs/nfsd/nfsd 0xb25b2957 nfs4_acl_nfsv4_to_posix +EXPORT_SYMBOL fs/nfsd/nfsd 0xe13337f0 nfs4_acl_new +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x5c6f9f7a qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xb0639cd4 qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0xbd64fbf7 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xc7508b52 qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xf75ef7da 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 0xa7587646 crc7 +EXPORT_SYMBOL lib/crc7 0xd80c3603 crc7_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 0x039735b7 lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0x0c9ff2c3 lc_find +EXPORT_SYMBOL lib/lru_cache 0x0d2dc6b3 lc_reset +EXPORT_SYMBOL lib/lru_cache 0x2bca6ccb lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x34be4533 lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x3691748f lc_set +EXPORT_SYMBOL lib/lru_cache 0x43e46a2d lc_committed +EXPORT_SYMBOL lib/lru_cache 0x452c8b46 lc_del +EXPORT_SYMBOL lib/lru_cache 0x60fd5d64 lc_is_used +EXPORT_SYMBOL lib/lru_cache 0x75a91db9 lc_destroy +EXPORT_SYMBOL lib/lru_cache 0x8af6181d lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0xa2873827 lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0xb74693bf lc_try_get +EXPORT_SYMBOL lib/lru_cache 0xbb6d3769 lc_create +EXPORT_SYMBOL lib/lru_cache 0xbd032277 lc_put +EXPORT_SYMBOL lib/lru_cache 0xef129f5b lc_get +EXPORT_SYMBOL lib/lru_cache 0xf9b6ff79 lc_get_cumulative +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/802/p8022 0xc025ac1c unregister_8022_client +EXPORT_SYMBOL net/802/p8022 0xcf2fed33 register_8022_client +EXPORT_SYMBOL net/802/p8023 0xae9b3235 make_8023_client +EXPORT_SYMBOL net/802/p8023 0xb0451aaf destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0x222b698d unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0x36f40649 register_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x0c6b9250 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x11d0c4d2 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x18caeff9 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x1a37c7e9 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x1e474db5 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x298087fb p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x37ce6d37 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x3f0f6cd0 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x3f9ce32f p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x458687ce v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x5240103c p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x55ebc19f p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x564a801d p9_payload_gup +EXPORT_SYMBOL net/9p/9pnet 0x59a82099 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x62e699d9 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x63957ad5 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x65f2d024 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x70f1f51f v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x71cdd204 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x73e06f35 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x7456b89d p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x7495489f p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x754647a0 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x7ae33790 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x84873814 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x87675956 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x9471b9e6 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x977a0030 p9_nr_pages +EXPORT_SYMBOL net/9p/9pnet 0x98b39eb3 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x9bf5ddce p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0xa2b3d237 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xa2e2c489 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0xb003efbf p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xb292ef8c p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0xba1607a7 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0xbaf061c6 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0xc1b74143 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xcece4454 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0xd0203d30 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0xdb349148 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0xdc729e26 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0xe06b8dc3 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xf0c50cac p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0xf23b02c9 p9_client_statfs +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 0x417d44d0 atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0x76baaa1e atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0xa8b943f2 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0xacc5716d aarp_send_ddp +EXPORT_SYMBOL net/atm/atm 0x20010ed4 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x280538a4 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x435cba24 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x4cb2a52a atm_charge +EXPORT_SYMBOL net/atm/atm 0x5194a7f5 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x785f3c19 atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x8f1e5a57 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xa365a6f3 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xb3d0245e atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0xca87b453 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xcd00303e vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0xd097079e atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0xdfd82a21 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0xeb20a84c register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/ax25/ax25 0x00f3c316 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x026c1368 ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0x04f3e475 ax25_rebuild_header +EXPORT_SYMBOL net/ax25/ax25 0x0d80ede0 ax25_hard_header +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x3afee63e ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x3b07dcd5 ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x3d1ae8a6 ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0x411dafe4 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x4f583e4f ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x7ddad2b9 ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xcc1de21e ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/bluetooth/bluetooth 0x02c2c507 hci_recv_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x06537f46 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0c6cd7a9 bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x12f92125 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x157ec8e0 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1abb41e5 __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1e685867 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x30940dfd bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x364d1e2f bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x37453aec hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3e06ff98 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3f8eb0b8 l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x46a49cf3 l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4c6806c4 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x50d7acda bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x63742e39 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6788c998 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x67b0fea6 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7224ef16 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x767a7711 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7c640527 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7c79e2e1 hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x822ce87b hci_recv_stream_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9127e343 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa699cf8d hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa8eddf3d bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa9524c61 __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb61a0c3b bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb9bf0fac bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbbd1114a hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc5f7ad3c l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd4504c19 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd4f5d6db hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd597c6a6 l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0xde0bd7df bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe09e7b24 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe3c6ae7f bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe700a823 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfb105681 hci_conn_security +EXPORT_SYMBOL net/bridge/bridge 0xf41052b3 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x65ccf527 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x747877a4 ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x8aebc9a5 ebt_do_table +EXPORT_SYMBOL net/caif/caif 0x0fa96889 caif_disconnect_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 0x3b23999d cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0x40167ef8 get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x6473d63c caif_connect_client +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xbd2b4bfc caif_enroll_dev +EXPORT_SYMBOL net/can/can 0x484ce262 can_proto_unregister +EXPORT_SYMBOL net/can/can 0x8465de91 can_ioctl +EXPORT_SYMBOL net/can/can 0x859bdcdf can_send +EXPORT_SYMBOL net/can/can 0x9b9e536c can_rx_register +EXPORT_SYMBOL net/can/can 0xcdbceae2 can_proto_register +EXPORT_SYMBOL net/can/can 0xd7be0f8a can_rx_unregister +EXPORT_SYMBOL net/ceph/libceph 0x064f37d7 ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x06676776 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x086d5cc1 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0e342ea2 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x0ebcec73 osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x0f308f66 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x1030bb51 osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x10940306 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0x1377d0bc ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0x1475bf0d ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x169b7ea5 osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0x197effcb ceph_osdc_release_request +EXPORT_SYMBOL net/ceph/libceph 0x1eef9c6d ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x1ef909c5 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x1fd47035 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x2797ae7a ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x27fc8492 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0x30d779cb ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x3158173e ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x335c79e4 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3df0ec7c ceph_calc_ceph_pg +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x4205ffd7 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x43c8d341 ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x43efd647 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x46a1edce __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x5754d0df ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x57c66a93 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0x5d9ccc8a ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x5df1ce02 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x5fe4b2fa ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0x603e4178 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x689ca91a ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6c17485a ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x6c5d5ac1 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x6c6b0625 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x6d2d06a1 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0x6ed41be2 ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0x6f39775d osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x72aba3f9 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x77692acb ceph_msg_last_put +EXPORT_SYMBOL net/ceph/libceph 0x808b169e ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x8177e592 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0x83d80dae osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0x92f49b40 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0x95870595 osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x9699a8b9 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x99de4738 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9d1e6ee1 ceph_copy_page_vector_to_user +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa3d647fa osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xa40bd703 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0xa7e4e86c ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0xa7e6b6e9 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0xab3928db ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb324795a ceph_copy_user_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 0xb60bb614 ceph_monc_create_snapid +EXPORT_SYMBOL net/ceph/libceph 0xb6722057 osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xb6c01735 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0xb77455a4 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xb961d076 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0xbc12ff6c ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0xc00324d2 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xc11bebc9 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0xc3729952 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc55de604 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xc90e9112 ceph_osdc_unregister_linger_request +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xccc4d271 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0xcda06c87 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0xcf382881 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0xd1aa5097 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd5441e31 ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0xd6b8ad6d ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0xd8361e10 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0xd914324a ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xe3535514 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0xe3f13681 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0xe64ab045 osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xe66a9c11 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0xe82c9c32 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0xeb3c0fb7 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0xed26a654 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xedf06910 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0xef8524a4 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0xf3bd6a8c osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0xff7533c5 ceph_auth_update_authorizer +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x719c1bbe dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/ieee802154 0x1d04f28d ieee802154_nl_beacon_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x371409f0 ieee802154_nl_assoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x58219e2e ieee802154_nl_disassoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x707acad3 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x7edca6a6 ieee802154_nl_start_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x98e646e0 ieee802154_nl_assoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xaaeedcf2 wpan_phy_alloc +EXPORT_SYMBOL net/ieee802154/ieee802154 0xca580fef wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0xcfcf2814 ieee802154_nl_disassoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xd198d083 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0xe1709d77 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0xeb0f9145 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0xf9fa9ca0 ieee802154_nl_scan_confirm +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x0b9e6d50 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xd1329cec arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xf547dd34 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x1a439f49 ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x1db8b651 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x6797f6f6 ipt_register_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x761cbd44 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/tunnel4 0xa7c34c5d xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x901c7dc2 ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xe5ce8efb ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x27a3d275 ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x535a2669 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xef50e874 ip6t_register_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x21ccabec xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0x6ef3f65f xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x7bb9ba21 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xe36abe21 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x05564cd1 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x201dc3ae ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x22fae6b1 ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x29ea98f8 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x60ec1430 ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x640285ec ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x6a2602ee ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x6ec4aec1 ircomm_open +EXPORT_SYMBOL net/irda/irda 0x0064e0ea hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0x03080bba 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 0x082f79fa iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0x1e6cade0 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x2036ad06 irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x20d8b023 iriap_open +EXPORT_SYMBOL net/irda/irda 0x2663326c irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x27b066b8 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x30ff6035 irlap_close +EXPORT_SYMBOL net/irda/irda 0x330dc000 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x3e56064f hashbin_new +EXPORT_SYMBOL net/irda/irda 0x413a8922 irttp_close_tsap +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 0x49678fb7 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x5aaee893 iriap_close +EXPORT_SYMBOL net/irda/irda 0x601bda46 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x69a486cd 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 0x75a2412f irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x761c1889 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 0x7c27d112 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x7cc0146a irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x85d88217 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x9046b006 irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x993ad14b irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0xa1d41e58 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0xa5b27f2b irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0xa705dfe1 irlap_open +EXPORT_SYMBOL net/irda/irda 0xaa557515 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xb6428afc 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 0xc68e43be irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0xc83e3b1d async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0xcead7dbb hashbin_find +EXPORT_SYMBOL net/irda/irda 0xd2108314 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0xd39b8301 irttp_dup +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 0xeba6c4d7 irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0xec9a4634 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xf0a694a1 irias_find_object +EXPORT_SYMBOL net/irda/irda 0xf34bacdf irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0xf3ebb6dd irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0xf5876b95 hashbin_remove_this +EXPORT_SYMBOL net/l2tp/l2tp_core 0x9d93b60a l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x0a2138ec lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x29a0f4d7 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x4013cc4f lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x61b1bd1a lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x72e7c760 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x7bf85742 lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0xb9b9e890 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0xe0a3ce64 lapb_register +EXPORT_SYMBOL net/llc/llc 0x1b7a9205 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 0x8835c4ec llc_sap_close +EXPORT_SYMBOL net/llc/llc 0xbaf000b5 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0xc35e28f7 llc_sap_list_lock +EXPORT_SYMBOL net/llc/llc 0xc748a656 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0xc9372b81 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0xd7d40b94 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0xea8973c5 llc_mac_hdr_init +EXPORT_SYMBOL net/mac80211/mac80211 0x0027db1e __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x009376f2 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x01d981da ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x0463a74c ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x09d05370 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x1a11bf00 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x1fbe22e0 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x20b6fa1c ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x21a2ae71 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x2278fef7 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x24ea9f25 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x2667b110 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x2675d48a ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x35c34592 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x371c50dc ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x3ad99ff2 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x3b04705d ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x43e5ae6d ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x46fb97c2 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x48d9b8b6 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x545951cd ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x546a3728 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x57395ac9 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x58c8c7ce ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x5c28cca5 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x5ddadca3 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x5e165de9 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x5e82380d ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x60c837bc ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x65a21cb0 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0x689eb63f ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x6f4abeca ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x77c94ba8 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x78d50981 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x78fd754d ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x7951ab9b ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x862373fa ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x9033761e wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x91171c58 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x9285c1b7 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x929673d7 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x96bfdb22 ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0x98134a9c ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x9c536d4f ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x9c5e6334 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0x9c863d06 ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x9e0af6cf ieee80211_alloc_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xa1fc36c4 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xa55f8a7c ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xa900fed1 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0xaa157485 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0xbe65af1d ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xbea139d8 ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0xc0844f4c ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xc7e9782e ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xc7fa5000 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xc9faef9b ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0xcaa12ae8 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0xcccafe99 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xcda02b0a ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xcf202ee0 ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xd37af6ed ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0xd3ae1287 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xd5a600d1 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0xddb47d52 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xdea26f3d ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0xe0cba728 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xf2093777 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0xf38fc8f0 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xf395de03 ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0xf4721c6f rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0xf90428f1 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0xf96ae81a __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac802154/mac802154 0x017aa771 ieee802154_unregister_device +EXPORT_SYMBOL net/mac802154/mac802154 0x593be480 ieee802154_register_device +EXPORT_SYMBOL net/mac802154/mac802154 0x746bdf76 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0x9c5471a9 ieee802154_alloc_device +EXPORT_SYMBOL net/mac802154/mac802154 0xb58bc93e ieee802154_free_device +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0629ff4b ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x1daeb43e ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x5bfc108e ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x6b01f1be register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x7e9eb216 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x814a3d21 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x8fe18956 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x99c52502 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xba527881 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc11547e0 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc1ae7d2d ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xce61e5ae ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xcf9bc14f ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd182dfcf register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x9f054920 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xebe81931 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xfda7cfbb __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_conntrack_proto_gre 0xc75ef347 nf_ct_gre_keymap_flush +EXPORT_SYMBOL net/netfilter/nf_nat 0x23d05468 nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0x260183a4 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0x35ac845f nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0x35e289b2 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x620f12b4 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0xd63e4944 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/x_tables 0x08c473b7 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x15abba4b xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x60422421 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x62af98a1 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x8ba58aed xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x9461f83e xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x9bfed227 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0xafca6196 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0xb28f5ef1 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xbab14624 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0xcd19d15a xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0xd87ae60d xt_check_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0xfff13239 xt_unregister_matches +EXPORT_SYMBOL net/nfc/hci/hci 0x1edcb948 nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0x2b8aad13 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x2db3e0a4 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x33793af3 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x3e9b0ba4 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x41066349 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x657ea003 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x77f108ef nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x7c4e6ad5 nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0x875a0f52 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x93c3c0ca nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0x964b652f nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xae18fd10 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0xaf91d3a7 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xc1438c35 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0xc86d7db3 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xcc000b40 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0xe1cd470c nfc_hci_send_response +EXPORT_SYMBOL net/nfc/nci/nci 0x5b725bfe nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x5d4f9e47 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0xafaf59c2 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xbb32c33a nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0xdb24a115 nci_free_device +EXPORT_SYMBOL net/nfc/nfc 0x0aaf8419 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x0f06d4ca nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0x2864e841 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x446c68e0 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x453ee129 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x4898ffd1 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x4dd66e55 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x512216ad nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x599d43a9 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0x5d53a05b nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x60734769 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x7b82d38e nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x7d426e0f nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xa1fe36e4 nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0xab4518d4 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0xc1aebc5e nfc_class +EXPORT_SYMBOL net/nfc/nfc 0xdf464320 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0xf7688276 nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0xf8a65176 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0xfa4d1665 nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc_digital 0x7042706b nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x8c5c9a1a nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xc5bba18f nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xe48820cc nfc_digital_register_device +EXPORT_SYMBOL net/phonet/phonet 0x37bab1cf phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x631da055 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x6595effa pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0x83fa3502 pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x9bd2a10d phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0x9c0d7da6 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0x9f51083f phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0xb13ff1e5 pn_sock_unhash +EXPORT_SYMBOL net/rds/rds 0x5031b8c5 rds_str_array +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x0539ae8b rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x079acb79 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x0d6ad136 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x110426e5 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x205a3cc8 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x2da4220b rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x409f8678 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x667e98d4 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x70514ee5 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x7f633135 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x82321e0d rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x8f2040c6 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x928a4588 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x99ff704f rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf8e7935b rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/sctp/sctp 0x3f9ba00e sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x2380c795 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x70f29e8f gss_mech_get +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x78207c08 gss_mech_put +EXPORT_SYMBOL net/sunrpc/sunrpc 0x54033fa3 svc_pool_stats_open +EXPORT_SYMBOL net/wimax/wimax 0x3e5c78f8 wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0xea5b0e38 wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x03549613 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0x0985b7eb cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0cbe04b3 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x19ae96a5 cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x234a3634 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x25f62f5d cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x30033072 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x30aa1b62 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x35cbd4a1 cfg80211_del_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x37b6d4df cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x393aff51 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x3f880c9f ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x406a8302 cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x40892263 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x46d1b4a2 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x48743c6b cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x4962632e __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x4a1d8799 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x4bff9e19 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x4c3b5878 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x4c40b2fb ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x549ae50f ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x5504bea2 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x5dc20380 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x6026a8d8 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6c7e49e6 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x78762739 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x7b7ac78b cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0x7cec173d cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x7ec60b9e cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x820c3adc cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x90866a09 cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x911981cf cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x9854d447 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x987462bf wiphy_new +EXPORT_SYMBOL net/wireless/cfg80211 0x9c68ef88 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x9d3abaa4 cfg80211_report_wowlan_wakeup +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 0xa274988f cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xa597f972 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0xa8b3d24b cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xa9b95a92 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xaabffc31 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xadeb5d82 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0xafdb6301 cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0xb21cd061 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xb30e8384 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xb33a0220 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0xb3b81282 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xb9e3b286 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0xbb4f3ced cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0xc15c8611 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xc44f1ea4 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc7cd221a cfg80211_inform_bss_width +EXPORT_SYMBOL net/wireless/cfg80211 0xcf618a57 cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0xd3c7c137 cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xd53dd5b0 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0xd7808963 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xdba6a0d4 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0xdfdd71b4 cfg80211_inform_bss_width_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xe311a6a1 cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0xe38b4958 cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xe41545cb cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xe5dd1b08 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xecc6a86b cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0xed9daa9a cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xee42db3c cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0xee4b5fd1 cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0xf0a7d46b cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0xf1a857ff ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xf4ede9bd wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0xf9c09900 cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0xfa127e26 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0xfde6e963 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x0c198af7 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0x11e5cfb9 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0x2d0f99e5 print_ssid +EXPORT_SYMBOL net/wireless/lib80211 0x529a59e9 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0x934d6119 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xa9c5e8d7 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xc3c662cb lib80211_unregister_crypto_ops +EXPORT_SYMBOL sound/ac97_bus 0x6c311339 ac97_bus_type +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 0x3c4beff1 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 0x6c1f1cf8 snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7ac2f329 snd_seq_expand_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7b8699eb snd_seq_event_port_detach +EXPORT_SYMBOL sound/core/seq/snd-seq 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 0xd54124a1 snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0xd63e4dc7 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 0x1085bc5e snd_seq_device_register_driver +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x3a57f235 snd_seq_autoload_unlock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xad409d38 snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xb90668b2 snd_seq_autoload_lock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xc622fb29 snd_seq_device_unregister_driver +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 0xab9e06ba snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x04161b96 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0x0cf7dc19 snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0x0d4eae6a snd_info_register +EXPORT_SYMBOL sound/core/snd 0x15cc6e40 snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0x18da7000 snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0x18e1683f snd_dma_program +EXPORT_SYMBOL sound/core/snd 0x191e88cf snd_dma_pointer +EXPORT_SYMBOL sound/core/snd 0x1d3d6216 snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x25a5610e snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x276ec133 snd_card_free +EXPORT_SYMBOL sound/core/snd 0x2ae3deaa release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0x2e5ad4c9 snd_cards +EXPORT_SYMBOL sound/core/snd 0x2e5be22c snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x31219dba snd_seq_root +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x3b94c2a3 snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x41d80bde snd_device_register +EXPORT_SYMBOL sound/core/snd 0x4207c5df snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4b015768 snd_iprintf +EXPORT_SYMBOL sound/core/snd 0x4ca8a723 snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0x4d81186c snd_card_proc_new +EXPORT_SYMBOL sound/core/snd 0x5df9f2c5 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x602c96f0 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x61a87e36 snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0x628298b4 snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x694757d1 snd_power_wait +EXPORT_SYMBOL sound/core/snd 0x702233d9 snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x73f7b7e9 snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x94f67558 snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0x97bec7ab snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0x9f896f7d snd_register_device_for_dev +EXPORT_SYMBOL sound/core/snd 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0xaab998f3 snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0xae4d1974 snd_jack_report +EXPORT_SYMBOL sound/core/snd 0xb08bcaf7 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xb5e6153f snd_card_unref +EXPORT_SYMBOL sound/core/snd 0xb79a8b3c snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0xc6356f4a snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0xcb4d4fb8 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0xcb51bcd6 snd_component_add +EXPORT_SYMBOL sound/core/snd 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL sound/core/snd 0xcf71fdd0 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0xd437196d snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0xd46582cb snd_card_create +EXPORT_SYMBOL sound/core/snd 0xd60fb252 snd_jack_new +EXPORT_SYMBOL sound/core/snd 0xd64693a5 snd_device_free +EXPORT_SYMBOL sound/core/snd 0xd72cb040 snd_device_new +EXPORT_SYMBOL sound/core/snd 0xd9809055 snd_card_register +EXPORT_SYMBOL sound/core/snd 0xde8c5f30 snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0xe384a503 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0xefc2fa27 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0xf691618c snd_add_device_sysfs_file +EXPORT_SYMBOL sound/core/snd 0xf7d78b36 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd-hwdep 0xde0457b3 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-page-alloc 0x07a6db8c snd_dma_reserve_buf +EXPORT_SYMBOL sound/core/snd-page-alloc 0x307c8689 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-page-alloc 0x3b91f3af snd_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x66724481 snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x78ecf44b snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0xade88e76 snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0xeb2fc3c7 snd_dma_get_reserved_buf +EXPORT_SYMBOL sound/core/snd-pcm 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL sound/core/snd-pcm 0x039a3d23 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0x04cda566 snd_interval_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x196442be snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x2253021e snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0x2d8742eb snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x318e87c7 snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0x32c73e33 snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0x3653fc2d snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x3807ea73 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL sound/core/snd-pcm 0x3b43370e snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0x485256ee snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0x49a96266 snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0x4b06a005 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0x4b8616d1 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0x4d9b6d35 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x4db3b39f snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x5062bc1e snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x57cb4fbd snd_pcm_hw_refine +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 0x66e3109d snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x689bab1d snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x6aee5a00 snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0x6decd830 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0x6e945f92 snd_pcm_debug_name +EXPORT_SYMBOL sound/core/snd-pcm 0x6eacd073 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x7033548d _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x7bb00572 snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x825a9d1e snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0x894af2d9 snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x9224b677 snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x971388d7 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x989c7270 snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0xa14f0858 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xb83f7c05 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xbab68fbe snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0xbb1fa9bb snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0xbf31b562 snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0xd0877d72 snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xd1f498ac snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0xd5fb21a2 snd_pcm_link_rwlock +EXPORT_SYMBOL sound/core/snd-pcm 0xdd8a5924 snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xde1522bd snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0xe17e0309 snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xe5eef2a2 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0xf10848b6 snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xfc4f1b44 snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0xfcf0fc42 snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0e5fb5dd snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0e8c6751 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x14e2e1da snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x1fef978e snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x454521f6 __snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x52dcd70e snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5aeb5e89 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x78c7eb2a snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0x844f979c snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x9af9a5ed snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x9fadca59 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc4cf7e45 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc82477c6 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd00f6519 __snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd0284927 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe7ddf5f7 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf3c27c1d snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf4d52c54 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0xfa463e19 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-timer 0x012f3ac6 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0x096907cd snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0x156d8fb8 snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0x2ce99655 snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0x34e8a605 snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0x4e8f4d28 snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0x5a832310 snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0x6f016b65 snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0x8c3b9b81 snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0x8d27231c snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0x9ce5ffeb snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0xa4a3ef5b snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0xb0b35589 snd_timer_notify +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xb59f14b3 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 0x053fbad5 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x1d44dc2a snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x3f576afb snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x9a2f5172 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x9bc3c9ce snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xbb709172 snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xe0b868d3 snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xeef156be snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xf06a6650 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x00f1dac7 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x037d6150 snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x21fd9cdc snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x31d92882 snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x621be7ec snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x801f2074 snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x8875fb98 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xd8f0dc07 snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xe675a2f0 snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x05b8b67d fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1909a58b amdtp_out_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x21ada78d amdtp_out_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2fddde81 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x37f7d644 amdtp_out_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x535c35c0 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x62b90c4e amdtp_out_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x637f27cc cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6803aba5 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6a2be584 fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x710299c3 cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x762e85a1 amdtp_out_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7ecc3a73 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8d0370cc amdtp_out_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x952d3335 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9e012d61 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa43638c5 amdtp_out_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb92cab5c amdtp_out_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbfc0c607 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc3d73e3b amdtp_out_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xcc1db6f9 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe4f7956c fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe5ab0496 amdtp_out_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe5b4a8d9 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xef3968b3 amdtp_out_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf880afdd cmp_connection_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x0191c7d5 snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x02d304d9 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xac466980 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xb32a45b2 snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xd0c29634 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xe50b7326 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x54445395 snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x8a23477e snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x8aac8488 snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xae3a8753 snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xb3b7b93f snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xfe283027 snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x09e3c4fc snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x45f30aab snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x84c8b94e snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xd0aff7fb snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x3fb28335 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xeb7dd280 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x4b2ee973 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x6ef3e15d snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x87dfd18d snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xb90a7191 snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xdf220bda snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-i2c 0x103859e4 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x378122ab snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0xb3c42494 snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xbe84bc27 snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xc6c6f812 snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xdcff8381 snd_i2c_device_free +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x207948b2 snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x2830273f snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x2c9230d8 snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x37c65ba9 snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x3a1e2ba7 snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x52c5c9be snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x95ca63c8 snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xc48e334b snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xd4507fd5 snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xee57ec16 snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x493c637a snd_sb16dsp_pcm +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x7a84e454 snd_sb16dsp_configure +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xe0b3f690 snd_sb16dsp_interrupt +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xf2da3912 snd_sb16dsp_get_pcm_ops +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0a54829e snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3745c100 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x41675a88 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x49d24d4f snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x8315a00a snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x852e4d27 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x877b79e3 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x8cd584a4 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9482e98f snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x94d10997 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xade0557a snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xbf1d77df snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc8a32134 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xd7e44038 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xde9a1a89 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe76155e1 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xfb0d26b9 snd_ac97_bus +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x044807c0 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x301aef2e snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x631eecab snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x6e3bf7a8 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x7d1b9e38 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x969e8b26 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xafbf3099 snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xb1baaa41 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xe1f317cb snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x290def43 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x3adc6168 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xab777638 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x10c859ca oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x10d7d132 oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1776e560 oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1bb688ee oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1cd28939 oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2a207916 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2c800e42 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x3630c6d0 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x68a7119a oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x6c0def60 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x98920782 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x9a455d61 oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb97ed63a oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xbba5e192 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xbf999a9e oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xcdb2d7cb oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe2b3c6ac oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf0afcad7 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xfc251e0d oxygen_write_i2c +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x4857229a snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x667c6717 snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x6682f4cd snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x84f3d3e4 snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xbdbcd5b0 snd_trident_alloc_voice +EXPORT_SYMBOL sound/soc/fsl/snd-soc-fsl-utils 0x9b8f2d4e fsl_asoc_get_dma_channel +EXPORT_SYMBOL sound/soundcore 0x9a64c0f6 sound_class +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x19f8cff1 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 0x823496d2 snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x991bf2f3 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xb80627d6 snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xd5201848 snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xd7bbdecf snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/snd-util-mem 0x1988bd28 snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0x26a61420 __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x6739d899 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x6753c04f snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x6da05748 snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x8cd3e5fb snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x911ca897 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xcb7f61e6 __snd_util_memblk_new +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x2f45595c snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x63343b1d snd_usbmidi_input_stop +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL vmlinux 0x00000000 __symbol_put +EXPORT_SYMBOL vmlinux 0x00000000 current_fs_time +EXPORT_SYMBOL vmlinux 0x00000000 d_tmpfile +EXPORT_SYMBOL vmlinux 0x00000000 do_sync_read +EXPORT_SYMBOL vmlinux 0x00000000 filp_close +EXPORT_SYMBOL vmlinux 0x00000000 finish_open +EXPORT_SYMBOL vmlinux 0x00000000 generic_getxattr +EXPORT_SYMBOL vmlinux 0x00000000 generic_write_sync +EXPORT_SYMBOL vmlinux 0x00000000 get_unmapped_area +EXPORT_SYMBOL vmlinux 0x00000000 in_group_p +EXPORT_SYMBOL vmlinux 0x00000000 inode_add_bytes +EXPORT_SYMBOL vmlinux 0x00000000 iov_shorten +EXPORT_SYMBOL vmlinux 0x00000000 iterate_fd +EXPORT_SYMBOL vmlinux 0x00000000 ns_capable +EXPORT_SYMBOL vmlinux 0x00000000 path_is_under +EXPORT_SYMBOL vmlinux 0x00000000 register_exec_domain +EXPORT_SYMBOL vmlinux 0x00000000 schedule_timeout +EXPORT_SYMBOL vmlinux 0x00000000 sock_register +EXPORT_SYMBOL vmlinux 0x00000000 sys_close +EXPORT_SYMBOL vmlinux 0x00000000 task_nice +EXPORT_SYMBOL vmlinux 0x00000000 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x00000000 vm_brk +EXPORT_SYMBOL vmlinux 0x00077f59 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x000a35ff __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x000bab24 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x0011b882 aio_complete +EXPORT_SYMBOL vmlinux 0x002203ff qman_volatile_dequeue +EXPORT_SYMBOL vmlinux 0x0030751f filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x003996a5 simple_link +EXPORT_SYMBOL vmlinux 0x0042a781 simple_empty +EXPORT_SYMBOL vmlinux 0x00446b6b __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x004f58b7 tty_port_close +EXPORT_SYMBOL vmlinux 0x00512125 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x0055bbe7 pci_disable_ido +EXPORT_SYMBOL vmlinux 0x0056523c nf_getsockopt +EXPORT_SYMBOL vmlinux 0x0076749d twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x00801678 flush_scheduled_work +EXPORT_SYMBOL vmlinux 0x0089692f dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x00975109 pme_ctx_is_dead +EXPORT_SYMBOL vmlinux 0x00a52dbe sync_inode +EXPORT_SYMBOL vmlinux 0x00ce79fd kill_anon_super +EXPORT_SYMBOL vmlinux 0x00cf4a7f of_get_parent +EXPORT_SYMBOL vmlinux 0x00e8097b csum_partial_copy_fromiovecend +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x010c026c mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x010e9205 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x011abb62 d_make_root +EXPORT_SYMBOL vmlinux 0x0170240c dm_get_mapinfo +EXPORT_SYMBOL vmlinux 0x017568ee generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x018169e7 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x01902adf netpoll_trap +EXPORT_SYMBOL vmlinux 0x0195ff2a contig_page_data +EXPORT_SYMBOL vmlinux 0x019e7765 __init_rwsem +EXPORT_SYMBOL vmlinux 0x01bdddaa gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0x01c3dc55 __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x01c57961 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x01c8e84d ida_simple_get +EXPORT_SYMBOL vmlinux 0x01dce368 inet_release +EXPORT_SYMBOL vmlinux 0x01dd4b66 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x01f833fc vfs_write +EXPORT_SYMBOL vmlinux 0x02057dd2 tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0x020b75c4 d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0x025a3546 lock_may_write +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x0277f9d4 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x0281c777 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x0284367f i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a496aa scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02b3f081 skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x02ba154f jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x02be4426 write_inode_now +EXPORT_SYMBOL vmlinux 0x02daf773 dma_set_mask +EXPORT_SYMBOL vmlinux 0x02ee26c1 free_pages_exact +EXPORT_SYMBOL vmlinux 0x0309ef9c tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x030c1da6 cap_mmap_file +EXPORT_SYMBOL vmlinux 0x03149455 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x0325b2f8 pci_enable_msi_block_auto +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x035f91e5 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x0368db65 register_key_type +EXPORT_SYMBOL vmlinux 0x036aab16 pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0x036ef192 __nla_reserve +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x037ac217 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x037d9051 tcp_disconnect +EXPORT_SYMBOL vmlinux 0x03803e25 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x03c06156 bitmap_fold +EXPORT_SYMBOL vmlinux 0x03c25531 inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x04074f48 ioremap +EXPORT_SYMBOL vmlinux 0x0408aa64 replace_mount_options +EXPORT_SYMBOL vmlinux 0x041d8047 blk_get_queue +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x043294e8 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x0443c2c8 iterate_dir +EXPORT_SYMBOL vmlinux 0x044668e0 sk_run_filter +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x0449bd98 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x045fe3d7 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x04be183f lookup_bdev +EXPORT_SYMBOL vmlinux 0x04cdf3bf cfb_copyarea +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04f4d4a7 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x04fe4bc3 __inet6_hash +EXPORT_SYMBOL vmlinux 0x05110696 udp_ioctl +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x05269f78 unregister_exec_domain +EXPORT_SYMBOL vmlinux 0x0530dede _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x0533b15d __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x054434d6 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x055f4a23 irq_set_chip +EXPORT_SYMBOL vmlinux 0x057b9276 inet_frag_kill +EXPORT_SYMBOL vmlinux 0x057ce975 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0x057fd236 __nla_put +EXPORT_SYMBOL vmlinux 0x0593a99b init_timer_key +EXPORT_SYMBOL vmlinux 0x05a514a1 _insl_ns +EXPORT_SYMBOL vmlinux 0x05c26263 skb_orphan_partial +EXPORT_SYMBOL vmlinux 0x05c7c35e qman_get_null_cb +EXPORT_SYMBOL vmlinux 0x05dc7fe0 sock_wfree +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x062525b6 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0x0633aed2 try_module_get +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x06425ddd xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x0645932f textsearch_register +EXPORT_SYMBOL vmlinux 0x06489d52 bman_rcr_is_empty +EXPORT_SYMBOL vmlinux 0x064fb2c3 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x065cadb7 mem_cgroup_subsys +EXPORT_SYMBOL vmlinux 0x0675c7eb atomic64_cmpxchg +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x0689f971 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x068cfc9a blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0x06945a3d pci_assign_resource +EXPORT_SYMBOL vmlinux 0x06bbb24a mempool_resize +EXPORT_SYMBOL vmlinux 0x06bec42c sk_dst_check +EXPORT_SYMBOL vmlinux 0x06d05719 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x06ff14f0 dev_change_carrier +EXPORT_SYMBOL vmlinux 0x07068d89 drop_nlink +EXPORT_SYMBOL vmlinux 0x070f6368 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0x07147be2 udp_disconnect +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x074257ef phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x0742742c sock_alloc_file +EXPORT_SYMBOL vmlinux 0x074e9213 down_killable +EXPORT_SYMBOL vmlinux 0x0754f7fb input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x076c0d61 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x0771805a skb_trim +EXPORT_SYMBOL vmlinux 0x077265ef __serio_register_driver +EXPORT_SYMBOL vmlinux 0x07954817 dev_uc_del +EXPORT_SYMBOL vmlinux 0x0799aca4 local_bh_enable +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07b4e4d7 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x07c4b8d2 scsi_print_command +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07d5c2f6 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x07f2ce8f devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0x0810fbfc __inode_permission +EXPORT_SYMBOL vmlinux 0x081d573b xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x08264ddd sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083c2cbe of_get_next_parent +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x08698cb4 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x086d9299 agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0x08b5a151 ip_check_defrag +EXPORT_SYMBOL vmlinux 0x08cc84e7 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x08df9457 neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x08e76946 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x08ec4dc7 sock_rfree +EXPORT_SYMBOL vmlinux 0x0912e79b pci_platform_rom +EXPORT_SYMBOL vmlinux 0x0914885c mmc_release_host +EXPORT_SYMBOL vmlinux 0x091f0997 kernel_accept +EXPORT_SYMBOL vmlinux 0x093989a1 posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x093b0cdf dquot_drop +EXPORT_SYMBOL vmlinux 0x09652570 tty_port_open +EXPORT_SYMBOL vmlinux 0x096559d9 mach_p1020_rdb +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x0992a364 skb_copy_expand +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09d47e21 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x09db7d71 nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0x09e9cc7a bio_integrity_set_tag +EXPORT_SYMBOL vmlinux 0x09fd93b4 qman_create_fq +EXPORT_SYMBOL vmlinux 0x09ffc93c devm_free_irq +EXPORT_SYMBOL vmlinux 0x0a11b9f6 block_truncate_page +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a3131f6 strnchr +EXPORT_SYMBOL vmlinux 0x0a469d23 mfd_clone_cell +EXPORT_SYMBOL vmlinux 0x0a5d00aa netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x0a621f9a sock_create_kern +EXPORT_SYMBOL vmlinux 0x0a68d047 fd_install +EXPORT_SYMBOL vmlinux 0x0a802c18 do_SAK +EXPORT_SYMBOL vmlinux 0x0a866c70 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x0a9f6d59 pme_attr_set +EXPORT_SYMBOL vmlinux 0x0aa4562c pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x0aa6f083 ip_ct_attach +EXPORT_SYMBOL vmlinux 0x0abd431e __block_write_begin +EXPORT_SYMBOL vmlinux 0x0acb1a3c __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ae97a81 bio_map_user +EXPORT_SYMBOL vmlinux 0x0b0b47ec __devm_release_region +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b2c2bdb devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x0b439b86 fput +EXPORT_SYMBOL vmlinux 0x0b450274 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b68c580 dst_destroy +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b9687e3 of_create_pci_dev +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc2024e vfs_open +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0c12e626 __debugger_bpt +EXPORT_SYMBOL vmlinux 0x0c42c0cb pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x0c42f0cf sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c6126e6 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x0c62389e cdev_init +EXPORT_SYMBOL vmlinux 0x0c65e73c scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0x0c8c9e99 scsi_show_extd_sense +EXPORT_SYMBOL vmlinux 0x0c9b6089 nvram_get_size +EXPORT_SYMBOL vmlinux 0x0c9ef76a key_alloc +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0ce78275 netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0x0ce900af blk_finish_plug +EXPORT_SYMBOL vmlinux 0x0d082860 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x0d1416d0 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x0d50d537 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d58cbf8 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x0d6e9446 new_inode +EXPORT_SYMBOL vmlinux 0x0d790aab sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x0d9e7dea xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0da5a5ef end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x0dbd4c50 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x0dc55bcd dm_register_target +EXPORT_SYMBOL vmlinux 0x0dd0bdbc sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x0df49897 simple_transaction_get +EXPORT_SYMBOL vmlinux 0x0df68776 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x0e082473 pneigh_lookup +EXPORT_SYMBOL vmlinux 0x0e0dd7b0 skb_copy_datagram_const_iovec +EXPORT_SYMBOL vmlinux 0x0e458b28 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x0e5a4c95 bio_copy_user +EXPORT_SYMBOL vmlinux 0x0e672a7b md_done_sync +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e70d603 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x0e72c89b pci_iounmap +EXPORT_SYMBOL vmlinux 0x0e8cd4c0 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x0e8f30f6 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x0ea8a8a7 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x0eaf451e hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x0eb11920 unregister_nls +EXPORT_SYMBOL vmlinux 0x0eb9a22d of_phy_connect +EXPORT_SYMBOL vmlinux 0x0ebeed8b proc_set_user +EXPORT_SYMBOL vmlinux 0x0ec3406a dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0x0edc0a81 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x0ef69857 pme_ctx_pmtcc +EXPORT_SYMBOL vmlinux 0x0ef955eb thaw_super +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f25071f uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x0f258daf keyring_clear +EXPORT_SYMBOL vmlinux 0x0f28cb91 nvram_read_byte +EXPORT_SYMBOL vmlinux 0x0f440154 fb_pan_display +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f5faa7e wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x0f70fec4 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0x0f8c0149 pme2_have_control +EXPORT_SYMBOL vmlinux 0x0f8e61c8 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x0f9316c8 fm_mutex_unlock +EXPORT_SYMBOL vmlinux 0x0fa0352c fail_migrate_page +EXPORT_SYMBOL vmlinux 0x0fa3d491 dev_mc_flush +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fc1e1c9 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x0fc5eeeb netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x0fcf09f0 dev_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x0ff8e04e i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x102fa4af of_find_device_by_node +EXPORT_SYMBOL vmlinux 0x10342a5f nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x1049d2a9 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x106f13ab crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x10757ff9 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x10926d05 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x1095cea6 ata_dev_printk +EXPORT_SYMBOL vmlinux 0x10a7eea7 proc_mkdir +EXPORT_SYMBOL vmlinux 0x10ab5d65 sock_no_listen +EXPORT_SYMBOL vmlinux 0x10c24fda swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0x10d7f60f nf_setsockopt +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x10eff9bc blk_stop_queue +EXPORT_SYMBOL vmlinux 0x10f8033f blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0x1101fb11 d_rehash +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x111b558e nf_unregister_hook +EXPORT_SYMBOL vmlinux 0x11267875 scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0x113905b9 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x113bf445 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x113eb475 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x1140ac30 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x114532b7 netdev_warn +EXPORT_SYMBOL vmlinux 0x116263f0 find_or_create_page +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x1164c7aa tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x1177f144 sock_no_accept +EXPORT_SYMBOL vmlinux 0x1182d83a cpuidle_disable +EXPORT_SYMBOL vmlinux 0x1194d8af security_path_chown +EXPORT_SYMBOL vmlinux 0x11c3d304 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x11c9185c of_iomap +EXPORT_SYMBOL vmlinux 0x11cf6d44 path_nosuid +EXPORT_SYMBOL vmlinux 0x11f2e3e7 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x121d2154 phy_drivers_register +EXPORT_SYMBOL vmlinux 0x122043a8 of_find_node_with_property +EXPORT_SYMBOL vmlinux 0x122ab20d blk_complete_request +EXPORT_SYMBOL vmlinux 0x12323781 drop_super +EXPORT_SYMBOL vmlinux 0x126b5ba2 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x126cbfc9 dev_disable_lro +EXPORT_SYMBOL vmlinux 0x128eae38 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x1299733c tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12baa04f netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x12c35870 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x12cacf47 locks_init_lock +EXPORT_SYMBOL vmlinux 0x12da5bb2 __kmalloc +EXPORT_SYMBOL vmlinux 0x12f35d17 call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x134534ed scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x1348760d ipmi_request_settime +EXPORT_SYMBOL vmlinux 0x13767956 qman_enqueue +EXPORT_SYMBOL vmlinux 0x13c954fc skb_find_text +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13e38f5c up_read +EXPORT_SYMBOL vmlinux 0x13eb0cb1 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x13f652fa __ps2_command +EXPORT_SYMBOL vmlinux 0x1407c6e7 kmap_prot +EXPORT_SYMBOL vmlinux 0x14091cee dev_addr_del +EXPORT_SYMBOL vmlinux 0x140e8543 scsi_nonblockable_ioctl +EXPORT_SYMBOL vmlinux 0x1420b379 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x142dfcd6 generic_pipe_buf_map +EXPORT_SYMBOL vmlinux 0x1459799c mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x1460f99d pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x146bada2 kernel_read +EXPORT_SYMBOL vmlinux 0x14752e06 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0x14855648 pci_enable_obff +EXPORT_SYMBOL vmlinux 0x14b7d23f ping_prot +EXPORT_SYMBOL vmlinux 0x14b89868 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x14c1fa6c jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x14e41f8b pci_vpd_truncate +EXPORT_SYMBOL vmlinux 0x14eb7b16 tcp_release_cb +EXPORT_SYMBOL vmlinux 0x14f45fcc bman_free_pool +EXPORT_SYMBOL vmlinux 0x153ef25d scsi_device_get +EXPORT_SYMBOL vmlinux 0x15477b72 clocksource_register +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x1551dc51 bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x1553c9c0 __scsi_put_command +EXPORT_SYMBOL vmlinux 0x155cfa95 scsi_setup_fs_cmnd +EXPORT_SYMBOL vmlinux 0x156393b5 devm_ioremap +EXPORT_SYMBOL vmlinux 0x15864b03 flex_array_get +EXPORT_SYMBOL vmlinux 0x158cc525 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x15911046 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0x159d2dd9 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x159e2850 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x15a530b5 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0x15bef7db vga_client_register +EXPORT_SYMBOL vmlinux 0x15c39118 mpage_readpages +EXPORT_SYMBOL vmlinux 0x15c6a2de gen10g_read_status +EXPORT_SYMBOL vmlinux 0x15cd3fe3 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x15d07605 bio_alloc_pages +EXPORT_SYMBOL vmlinux 0x15d3fd60 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x15e1b9f2 try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x15f571ec blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x161d0033 proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x16263819 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x162fd864 submit_bio_wait +EXPORT_SYMBOL vmlinux 0x164451ef pme_ctx_reconfigure_rx +EXPORT_SYMBOL vmlinux 0x1646dc67 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x16540bbc __cmpdi2 +EXPORT_SYMBOL vmlinux 0x167350ec register_gifconf +EXPORT_SYMBOL vmlinux 0x167896c6 lro_flush_pkt +EXPORT_SYMBOL vmlinux 0x168f02f9 fm_get_handle +EXPORT_SYMBOL vmlinux 0x1698080e bio_endio +EXPORT_SYMBOL vmlinux 0x1698df7b set_create_files_as +EXPORT_SYMBOL vmlinux 0x16b00955 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL vmlinux 0x16df0b2b pci_disable_obff +EXPORT_SYMBOL vmlinux 0x16f62392 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x17039a83 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x172b4b6d pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x173b7bc6 dev_get_by_index +EXPORT_SYMBOL vmlinux 0x17450a39 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x174f6483 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x174fcc2f simple_fill_super +EXPORT_SYMBOL vmlinux 0x17648396 dev_base_lock +EXPORT_SYMBOL vmlinux 0x1770c8aa inet_del_protocol +EXPORT_SYMBOL vmlinux 0x177974f5 fb_set_cmap +EXPORT_SYMBOL vmlinux 0x177da96d eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x17a642ff sock_kmalloc +EXPORT_SYMBOL vmlinux 0x17aa156a __ucmpdi2 +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17b94aae register_quota_format +EXPORT_SYMBOL vmlinux 0x17d642ac cont_write_begin +EXPORT_SYMBOL vmlinux 0x17e28473 fsl_upm_run_pattern +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x18068120 padata_free +EXPORT_SYMBOL vmlinux 0x18132efd __napi_schedule +EXPORT_SYMBOL vmlinux 0x1823e852 nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0x1826f089 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x18282b46 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x18420901 kernel_connect +EXPORT_SYMBOL vmlinux 0x18468e94 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x184e6c85 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x18580ba0 kobject_put +EXPORT_SYMBOL vmlinux 0x1870f8c1 qman_fqid_pool_alloc +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x18985801 ppp_register_channel +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x189f266c nf_log_packet +EXPORT_SYMBOL vmlinux 0x18a3ade3 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x18a45772 inode_init_always +EXPORT_SYMBOL vmlinux 0x18ab9a85 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x18e30420 devm_gpiod_get +EXPORT_SYMBOL vmlinux 0x18f98147 cfb_fillrect +EXPORT_SYMBOL vmlinux 0x190d241d qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x19111a40 lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x1915fc92 neigh_destroy +EXPORT_SYMBOL vmlinux 0x194651ee deactivate_super +EXPORT_SYMBOL vmlinux 0x194e52b8 netdev_change_features +EXPORT_SYMBOL vmlinux 0x1950f696 pci_choose_state +EXPORT_SYMBOL vmlinux 0x1963cf5b elv_abort_queue +EXPORT_SYMBOL vmlinux 0x198469a3 tty_throttle +EXPORT_SYMBOL vmlinux 0x198e0ea6 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19bcabd3 release_pages +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19c8d9f8 block_write_full_page +EXPORT_SYMBOL vmlinux 0x19d4ac4a simple_getattr +EXPORT_SYMBOL vmlinux 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL vmlinux 0x1a111a41 ftrace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x1a20ee32 kobject_add +EXPORT_SYMBOL vmlinux 0x1a2f0768 vfs_llseek +EXPORT_SYMBOL vmlinux 0x1a361ab9 dma_find_channel +EXPORT_SYMBOL vmlinux 0x1a44c54f sk_capable +EXPORT_SYMBOL vmlinux 0x1a648c7f tcp_seq_open +EXPORT_SYMBOL vmlinux 0x1a8265c9 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL vmlinux 0x1ace138d bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0x1af62a99 panic_notifier_list +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b0ac272 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x1b132009 rename_lock +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b524838 phy_stop +EXPORT_SYMBOL vmlinux 0x1b59581e xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0x1b61906f shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b68d5b5 rtnl_unicast +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b89f76d sk_receive_skb +EXPORT_SYMBOL vmlinux 0x1b8a8f85 generic_file_llseek +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1b93fbb3 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x1b9b58cf mount_pseudo +EXPORT_SYMBOL vmlinux 0x1b9e0ff1 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x1ba5a6ff inet_put_port +EXPORT_SYMBOL vmlinux 0x1bb45b96 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x1bbe7469 dev_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x1bc4ff03 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0x1bca2b59 load_fp_state +EXPORT_SYMBOL vmlinux 0x1be0220c blk_integrity_register +EXPORT_SYMBOL vmlinux 0x1be1e0a7 nf_ct_attach +EXPORT_SYMBOL vmlinux 0x1befbf5c pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x1c09aba3 qman_static_dequeue_get +EXPORT_SYMBOL vmlinux 0x1c12ef80 pci_dev_get +EXPORT_SYMBOL vmlinux 0x1c2a32ee i2c_clients_command +EXPORT_SYMBOL vmlinux 0x1c4b1580 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x1c6de298 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x1c80de9c ip_send_check +EXPORT_SYMBOL vmlinux 0x1cb67e9e put_tty_driver +EXPORT_SYMBOL vmlinux 0x1cb6bdb5 dm_io +EXPORT_SYMBOL vmlinux 0x1cc5233e blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x1cca2efa inet_stream_ops +EXPORT_SYMBOL vmlinux 0x1cce1bab phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0x1ce933f9 dm_unregister_target +EXPORT_SYMBOL vmlinux 0x1cfe0d6a jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x1d177281 __skb_checksum +EXPORT_SYMBOL vmlinux 0x1d484dbe prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x1d6bb9c2 netif_napi_del +EXPORT_SYMBOL vmlinux 0x1d860035 mach_tqm85xx +EXPORT_SYMBOL vmlinux 0x1d8ea6ec bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x1da2d636 pci_enable_device +EXPORT_SYMBOL vmlinux 0x1dc32222 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dc7ff95 max8925_set_bits +EXPORT_SYMBOL vmlinux 0x1dd36df5 seq_lseek +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1e04bf0a netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e47be0c pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x1e4a6de7 netif_receive_skb +EXPORT_SYMBOL vmlinux 0x1e4cc754 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e6e5d66 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x1e7db6b0 phy_start +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ea38329 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x1eb1d473 dev_uc_sync +EXPORT_SYMBOL vmlinux 0x1ec3bed9 hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0x1ecd8907 blk_requeue_request +EXPORT_SYMBOL vmlinux 0x1ed4c60c agp_create_memory +EXPORT_SYMBOL vmlinux 0x1ed5b6e7 mdio_bus_type +EXPORT_SYMBOL vmlinux 0x1ede7112 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x1ee3946c pci_disable_msix +EXPORT_SYMBOL vmlinux 0x1ee56a4f skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x1f081201 read_cache_page +EXPORT_SYMBOL vmlinux 0x1f152669 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x1f294c89 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x1f29d615 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x1f2f0cf5 console_stop +EXPORT_SYMBOL vmlinux 0x1f47d96c pci_set_power_state +EXPORT_SYMBOL vmlinux 0x1f52041f mdiobus_write +EXPORT_SYMBOL vmlinux 0x1f5ad908 pme_attr_get +EXPORT_SYMBOL vmlinux 0x1f7945e8 flush_icache_user_range +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1f815c6d i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fd404d8 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x1fe86d1f phy_device_free +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1feb9ab3 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x1fedf0f4 __request_region +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x20060c39 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x201598ab pci_find_next_bus +EXPORT_SYMBOL vmlinux 0x2019d489 netdev_notice +EXPORT_SYMBOL vmlinux 0x202e9508 __secpath_destroy +EXPORT_SYMBOL vmlinux 0x20368cb4 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x203e68d4 register_console +EXPORT_SYMBOL vmlinux 0x203f4dd5 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x205f6604 directly_mappable_cdev_bdi +EXPORT_SYMBOL vmlinux 0x20640d37 textsearch_unregister +EXPORT_SYMBOL vmlinux 0x206687ad cpm_muram_alloc_fixed +EXPORT_SYMBOL vmlinux 0x206b0322 mb_cache_create +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x2076b9bf xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x2087162a tty_port_hangup +EXPORT_SYMBOL vmlinux 0x20a57734 do_splice_to +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20a86b3f of_get_pci_address +EXPORT_SYMBOL vmlinux 0x20b2bb2d param_array_ops +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20e259f5 dquot_acquire +EXPORT_SYMBOL vmlinux 0x2116f335 dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0x211be324 agp_enable +EXPORT_SYMBOL vmlinux 0x2120d0f9 mmc_start_req +EXPORT_SYMBOL vmlinux 0x2129817e sock_no_poll +EXPORT_SYMBOL vmlinux 0x2139fef2 inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x213a2ce0 bd_set_size +EXPORT_SYMBOL vmlinux 0x214638d8 simple_release_fs +EXPORT_SYMBOL vmlinux 0x215ebd78 bitrev16 +EXPORT_SYMBOL vmlinux 0x2187a8c1 gen10g_suspend +EXPORT_SYMBOL vmlinux 0x218a8578 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x21918de4 splice_from_pipe_feed +EXPORT_SYMBOL vmlinux 0x2193fa69 udp_proc_register +EXPORT_SYMBOL vmlinux 0x21a4a7c9 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x21f3dc15 cpm_command +EXPORT_SYMBOL vmlinux 0x2201153c padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x2236ffef blk_init_tags +EXPORT_SYMBOL vmlinux 0x22386332 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x224e97df get_agp_version +EXPORT_SYMBOL vmlinux 0x2256fafa div64_u64_rem +EXPORT_SYMBOL vmlinux 0x2265b514 qman_get_portal_config +EXPORT_SYMBOL vmlinux 0x2274207e from_kgid_munged +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x2278e94b slhc_remember +EXPORT_SYMBOL vmlinux 0x2288ed28 agp_unbind_memory +EXPORT_SYMBOL vmlinux 0x22a6cf45 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22bf4ceb dev_addr_add +EXPORT_SYMBOL vmlinux 0x22d73c62 bman_get_params +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL vmlinux 0x2345aa82 mach_p1022_ds +EXPORT_SYMBOL vmlinux 0x235e90f3 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x23681981 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x23702bca sk_ns_capable +EXPORT_SYMBOL vmlinux 0x2376eaeb mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x2382d960 tty_pair_get_pty +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23b6c167 d_genocide +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c72e85 dev_remove_offload +EXPORT_SYMBOL vmlinux 0x23d86417 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x23eb7812 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0x23f2243d mempool_free +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x24248bc5 pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0x24282d19 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x242c2acf blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x242c9a80 mach_mpc8569_mds +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x244484b5 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x245a5a94 sleep_on_timeout +EXPORT_SYMBOL vmlinux 0x24621b20 iput +EXPORT_SYMBOL vmlinux 0x246717d3 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x2486f803 blk_init_queue +EXPORT_SYMBOL vmlinux 0x24953b10 bio_map_kern +EXPORT_SYMBOL vmlinux 0x249f4ebf seq_putc +EXPORT_SYMBOL vmlinux 0x24af679b xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x24b0f90c of_clk_get_by_name +EXPORT_SYMBOL vmlinux 0x24cdd8ed dm_kobject_release +EXPORT_SYMBOL vmlinux 0x24d0f08a sock_recvmsg +EXPORT_SYMBOL vmlinux 0x24d7b4eb cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x24e8a2cc blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0x24f71f0e uart_add_one_port +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x250e4d89 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x2533dda1 bman_query_pools +EXPORT_SYMBOL vmlinux 0x254d24e5 __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x25552d14 tty_pair_get_tty +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25931343 skb_queue_head +EXPORT_SYMBOL vmlinux 0x259b7c60 sk_release_kernel +EXPORT_SYMBOL vmlinux 0x25c3af85 i2c_master_recv +EXPORT_SYMBOL vmlinux 0x25c677c4 mac_pton +EXPORT_SYMBOL vmlinux 0x25c731af pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x25d3040a setup_new_exec +EXPORT_SYMBOL vmlinux 0x25d6f943 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x25d8d9f7 agp_generic_enable +EXPORT_SYMBOL vmlinux 0x25f3bd2e atomic64_xchg +EXPORT_SYMBOL vmlinux 0x260cf8f8 of_get_property +EXPORT_SYMBOL vmlinux 0x260dadf4 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x2621e0ce ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0x2627581b scsi_scan_target +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x26477c07 __vmalloc +EXPORT_SYMBOL vmlinux 0x26491add pci_scan_slot +EXPORT_SYMBOL vmlinux 0x2650a31d netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x266df44d sock_init_data +EXPORT_SYMBOL vmlinux 0x26743f10 sk_reset_timer +EXPORT_SYMBOL vmlinux 0x2685c3d7 __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x26b760c4 slhc_init +EXPORT_SYMBOL vmlinux 0x26bb950b __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x26cc4dfd pci_bus_put +EXPORT_SYMBOL vmlinux 0x26d7a31c xfrm_input +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26f0453a blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x26f6d1a3 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x270e92d4 pci_get_class +EXPORT_SYMBOL vmlinux 0x270f2e3c pci_claim_resource +EXPORT_SYMBOL vmlinux 0x2711d793 input_inject_event +EXPORT_SYMBOL vmlinux 0x2714f7c2 nf_log_register +EXPORT_SYMBOL vmlinux 0x2717e05d sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x272a08bf seq_pad +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x276b704c tcp_sendpage +EXPORT_SYMBOL vmlinux 0x277f6a05 block_write_full_page_endio +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x278abb3c skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0x27b23603 dev_remove_pack +EXPORT_SYMBOL vmlinux 0x27b53139 pme_fd_cmd_pmtcc +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27bc8365 tcp_ioctl +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27e5019e sock_edemux +EXPORT_SYMBOL vmlinux 0x27ea854c agp_bind_memory +EXPORT_SYMBOL vmlinux 0x27f2313e idr_replace +EXPORT_SYMBOL vmlinux 0x27f5c0ac ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x2810cbb7 f_setown +EXPORT_SYMBOL vmlinux 0x2810fef9 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x281f40a8 __page_symlink +EXPORT_SYMBOL vmlinux 0x2866a46c pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x288f3f4d pci_device_from_OF_node +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28e35c70 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x28f784f5 __debugger_break_match +EXPORT_SYMBOL vmlinux 0x29199408 dput +EXPORT_SYMBOL vmlinux 0x291ce23d pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0x29204bc9 agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0x29270e23 sock_i_ino +EXPORT_SYMBOL vmlinux 0x293182bf devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x294b7073 mach_bsc9131_rdb +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x29563ff7 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x295ac58d jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x295ed9a8 mntget +EXPORT_SYMBOL vmlinux 0x29a67db1 bman_recovery_cleanup_bpid +EXPORT_SYMBOL vmlinux 0x29aef245 __get_user_pages +EXPORT_SYMBOL vmlinux 0x29bf5655 get_user_pages +EXPORT_SYMBOL vmlinux 0x29f59efc xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x29fdda53 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x2a029d63 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x2a0c02f7 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x2a0f3563 tty_free_termios +EXPORT_SYMBOL vmlinux 0x2a27cc8a cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a30a2be jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a5decb0 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x2a79ac13 clkdev_add +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2aa17a93 bdi_destroy +EXPORT_SYMBOL vmlinux 0x2ab75a3b nf_hook_slow +EXPORT_SYMBOL vmlinux 0x2ac03358 dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x2ace6f65 ip6_xmit +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2ad4ab98 pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0x2ad982a0 scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x2b0670f8 netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b39aee0 bman_release +EXPORT_SYMBOL vmlinux 0x2b3fbe17 read_cache_page_async +EXPORT_SYMBOL vmlinux 0x2b5ef7d5 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x2b635221 eth_header +EXPORT_SYMBOL vmlinux 0x2b679dbe rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x2b85e1d9 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x2b902029 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bc13898 tcp_make_synack +EXPORT_SYMBOL vmlinux 0x2bc61da1 program_check_exception +EXPORT_SYMBOL vmlinux 0x2be0f12d dql_completed +EXPORT_SYMBOL vmlinux 0x2beb7ed9 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x2c0c05d5 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x2c0d81e9 mmc_add_host +EXPORT_SYMBOL vmlinux 0x2c117d11 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c2111f4 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x2c21f91c ppp_dev_name +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c37d7bc inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x2c53e8e2 security_path_mknod +EXPORT_SYMBOL vmlinux 0x2c7b1fca down_timeout +EXPORT_SYMBOL vmlinux 0x2c900d91 cpufreq_put_global_kobject +EXPORT_SYMBOL vmlinux 0x2c97c4d1 mach_p1021_mds +EXPORT_SYMBOL vmlinux 0x2ca46a5a uart_get_divisor +EXPORT_SYMBOL vmlinux 0x2cfb8378 qman_stop_dequeues +EXPORT_SYMBOL vmlinux 0x2cfddf80 xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0x2d03c10d posix_acl_create +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d200744 d_splice_alias +EXPORT_SYMBOL vmlinux 0x2d24ee3d of_device_register +EXPORT_SYMBOL vmlinux 0x2d2ba7b9 lease_modify +EXPORT_SYMBOL vmlinux 0x2d2f2f7d __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d34a681 mddev_congested +EXPORT_SYMBOL vmlinux 0x2d37342e cpu_online_mask +EXPORT_SYMBOL vmlinux 0x2d39157c sg_miter_next +EXPORT_SYMBOL vmlinux 0x2d3e176c uart_suspend_port +EXPORT_SYMBOL vmlinux 0x2d4c6a52 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x2d4d5cfc dev_trans_start +EXPORT_SYMBOL vmlinux 0x2d5c562f genlmsg_put +EXPORT_SYMBOL vmlinux 0x2d89342a scsi_show_sense_hdr +EXPORT_SYMBOL vmlinux 0x2d8f739e flush_tlb_mm +EXPORT_SYMBOL vmlinux 0x2daaaba9 param_get_byte +EXPORT_SYMBOL vmlinux 0x2dcded29 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x2dd159a1 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0x2dd97cfa ps2_end_command +EXPORT_SYMBOL vmlinux 0x2dea945b register_cdrom +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2dfdd30e i2c_bit_add_numbered_bus +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e1e95e5 arp_send +EXPORT_SYMBOL vmlinux 0x2e2232fc mach_mpc85xx_ads +EXPORT_SYMBOL vmlinux 0x2e27e595 mmc_gpio_free_ro +EXPORT_SYMBOL vmlinux 0x2e2b9f3a filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e48bdcf qman_poll_dqrr +EXPORT_SYMBOL vmlinux 0x2e5ba8ce __blk_run_queue +EXPORT_SYMBOL vmlinux 0x2e5bdc6a commit_creds +EXPORT_SYMBOL vmlinux 0x2e97bf98 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x2eb2e714 lock_rename +EXPORT_SYMBOL vmlinux 0x2ec524ad __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x2ed0701b mach_p1021_rdb_pc +EXPORT_SYMBOL vmlinux 0x2eeceb42 sk_chk_filter +EXPORT_SYMBOL vmlinux 0x2ef3e3b7 mmc_start_bkops +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 0x2f3e42ec irq_stat +EXPORT_SYMBOL vmlinux 0x2f434dfb mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x2f5502a0 blk_fetch_request +EXPORT_SYMBOL vmlinux 0x2f64616b register_netdev +EXPORT_SYMBOL vmlinux 0x2f6ae025 kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0x2f6d2d46 save_mount_options +EXPORT_SYMBOL vmlinux 0x2fa484a4 dquot_release +EXPORT_SYMBOL vmlinux 0x2fa74a91 vfs_create +EXPORT_SYMBOL vmlinux 0x2fa96fd9 devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x301e5a48 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x304856ec ipmi_register_smi +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x307f5956 tcp_close +EXPORT_SYMBOL vmlinux 0x3092c6b5 __neigh_event_send +EXPORT_SYMBOL vmlinux 0x3092f0de tty_port_close_start +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30b8b35c cpu_to_chip_id +EXPORT_SYMBOL vmlinux 0x30cada8f radix_tree_next_hole +EXPORT_SYMBOL vmlinux 0x30d2cdbb of_device_alloc +EXPORT_SYMBOL vmlinux 0x30da351a phy_find_first +EXPORT_SYMBOL vmlinux 0x30e8651c mach_p2020_rdb +EXPORT_SYMBOL vmlinux 0x30ec27cd mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x30f2627f sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310917fe sort +EXPORT_SYMBOL vmlinux 0x310da4d7 scsi_print_result +EXPORT_SYMBOL vmlinux 0x312824e0 hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x3148c056 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x3158c43a make_kgid +EXPORT_SYMBOL vmlinux 0x315c65fd zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x3177871a clear_inode +EXPORT_SYMBOL vmlinux 0x31858796 __i2c_transfer +EXPORT_SYMBOL vmlinux 0x318cadb1 reciprocal_value +EXPORT_SYMBOL vmlinux 0x3191f109 __krealloc +EXPORT_SYMBOL vmlinux 0x31ab040b skb_insert +EXPORT_SYMBOL vmlinux 0x31b055ac nla_append +EXPORT_SYMBOL vmlinux 0x31b75c96 blk_mq_end_io +EXPORT_SYMBOL vmlinux 0x31bafada bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x31c5fefe cdev_add +EXPORT_SYMBOL vmlinux 0x31e660ed jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x31f0bb78 __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x31f7d40a pme_fd_cmd_fcw +EXPORT_SYMBOL vmlinux 0x31f7ee3e blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x31ffc75b fb_set_suspend +EXPORT_SYMBOL vmlinux 0x32180f09 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x322f48d4 abx500_dump_all_banks +EXPORT_SYMBOL vmlinux 0x32424b34 qman_query_wq +EXPORT_SYMBOL vmlinux 0x3258a5f2 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x3268ce3a ip_setsockopt +EXPORT_SYMBOL vmlinux 0x327bf883 of_can_translate_address +EXPORT_SYMBOL vmlinux 0x3284c88d tcf_hash_lookup +EXPORT_SYMBOL vmlinux 0x32860d7e qman_fqid_pool_free +EXPORT_SYMBOL vmlinux 0x328a05f1 strncpy +EXPORT_SYMBOL vmlinux 0x329a85a1 dentry_unhash +EXPORT_SYMBOL vmlinux 0x329c2f26 scsi_unregister +EXPORT_SYMBOL vmlinux 0x32b6067f bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x33099bc1 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0x33278048 md_integrity_register +EXPORT_SYMBOL vmlinux 0x334e0293 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x335da768 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x335f1b3a scsi_remove_host +EXPORT_SYMBOL vmlinux 0x33658558 dquot_transfer +EXPORT_SYMBOL vmlinux 0x3366f668 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x337cce46 put_cmsg +EXPORT_SYMBOL vmlinux 0x33883dff mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x338dbf36 tc_classify_compat +EXPORT_SYMBOL vmlinux 0x33aa48f2 qman_static_dequeue_del +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33b8c25d dst_alloc +EXPORT_SYMBOL vmlinux 0x33ba5cd4 param_ops_bool +EXPORT_SYMBOL vmlinux 0x33c00070 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33dbfd93 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x342623eb fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x343b6fb1 pci_bus_get +EXPORT_SYMBOL vmlinux 0x344adbd5 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x344d839c scsi_prep_state_check +EXPORT_SYMBOL vmlinux 0x34561905 pme_ctx_enable +EXPORT_SYMBOL vmlinux 0x346c4ded rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x347eb9bd param_set_bool +EXPORT_SYMBOL vmlinux 0x348109c3 noop_qdisc +EXPORT_SYMBOL vmlinux 0x3484ce56 scsi_prep_fn +EXPORT_SYMBOL vmlinux 0x348b9d99 napi_gro_flush +EXPORT_SYMBOL vmlinux 0x34947710 devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0x34950133 ihold +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34d62cbf inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x350f1a33 generic_removexattr +EXPORT_SYMBOL vmlinux 0x350fed94 iget_locked +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x351bbbb6 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x3527314d blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x352acac0 serio_close +EXPORT_SYMBOL vmlinux 0x352e5bd4 xfrm_init_state +EXPORT_SYMBOL vmlinux 0x355279a7 __vlan_find_dev_deep +EXPORT_SYMBOL vmlinux 0x3562f3f5 page_readlink +EXPORT_SYMBOL vmlinux 0x357b6822 tcp_read_sock +EXPORT_SYMBOL vmlinux 0x35ae1439 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x35c88865 serio_rescan +EXPORT_SYMBOL vmlinux 0x35ed3914 __lock_page +EXPORT_SYMBOL vmlinux 0x3606504e filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x364fed4d __register_chrdev +EXPORT_SYMBOL vmlinux 0x365f0f17 __frontswap_test +EXPORT_SYMBOL vmlinux 0x3666930a dma_async_device_register +EXPORT_SYMBOL vmlinux 0x36815df7 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0x368382e2 of_get_named_gpiod_flags +EXPORT_SYMBOL vmlinux 0x36995ea6 account_page_dirtied +EXPORT_SYMBOL vmlinux 0x36b0e732 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x36bccb74 elv_register_queue +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36c31027 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x36d7b11a of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0x36e360e3 __hw_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x36f46a40 tcf_action_exec +EXPORT_SYMBOL vmlinux 0x36fc135b skb_clone +EXPORT_SYMBOL vmlinux 0x371d2130 check_legacy_ioport +EXPORT_SYMBOL vmlinux 0x37386600 mmc_can_trim +EXPORT_SYMBOL vmlinux 0x3739fb05 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x3742873b set_user_nice +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x37741ea1 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37c99b73 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x37cea259 netdev_err +EXPORT_SYMBOL vmlinux 0x37e74642 get_jiffies_64 +EXPORT_SYMBOL vmlinux 0x37f614b7 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x37f9f349 simple_rename +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 0x382b7dbe ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x383c577f tcf_hash_release +EXPORT_SYMBOL vmlinux 0x384a767d phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388a3b61 pcim_iomap +EXPORT_SYMBOL vmlinux 0x388d4344 mach_p1010_rdb +EXPORT_SYMBOL vmlinux 0x388e39ce qman_oos_fq +EXPORT_SYMBOL vmlinux 0x388f9128 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38b0fbb4 fm_port_pcd_bind +EXPORT_SYMBOL vmlinux 0x38cb4873 kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x38eb81e0 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x38eb8762 md_check_recovery +EXPORT_SYMBOL vmlinux 0x38f21777 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x38f3b159 send_sig +EXPORT_SYMBOL vmlinux 0x38fb9933 tty_std_termios +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x393fa780 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x39410f01 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x39ab6458 mach_p1020_rdb_pc +EXPORT_SYMBOL vmlinux 0x39c2b4a4 simple_transaction_release +EXPORT_SYMBOL vmlinux 0x39cdf63c wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x3a22cca2 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x3a4ae4ec fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x3a4d4a62 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x3a547236 __serio_register_port +EXPORT_SYMBOL vmlinux 0x3a6e64e2 eth_header_cache +EXPORT_SYMBOL vmlinux 0x3a77c4dc qdisc_list_del +EXPORT_SYMBOL vmlinux 0x3a811884 pipe_lock +EXPORT_SYMBOL vmlinux 0x3a96fe70 make_kprojid +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3ad86c71 __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x3afd4260 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x3b081ccf create_empty_buffers +EXPORT_SYMBOL vmlinux 0x3b13b5d7 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x3b31a483 of_get_min_tck +EXPORT_SYMBOL vmlinux 0x3b36fe3d pme_hw_residue_new +EXPORT_SYMBOL vmlinux 0x3b3efdb4 mount_nodev +EXPORT_SYMBOL vmlinux 0x3b590d26 force_sig +EXPORT_SYMBOL vmlinux 0x3b615a21 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x3b8dad21 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x3ba6b235 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x3ba9e730 skb_free_datagram +EXPORT_SYMBOL vmlinux 0x3bafa890 swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x3bb709dd md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x3bc960e9 flush_signals +EXPORT_SYMBOL vmlinux 0x3bd1b1f6 msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x3be136b0 unload_nls +EXPORT_SYMBOL vmlinux 0x3bef03b9 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x3c02f99b scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x3c06fb14 blk_get_request +EXPORT_SYMBOL vmlinux 0x3c1882d5 sk_stream_error +EXPORT_SYMBOL vmlinux 0x3c1d37ab fifo_set_limit +EXPORT_SYMBOL vmlinux 0x3c1e7880 tcp_splice_read +EXPORT_SYMBOL vmlinux 0x3c2fb7f8 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x3c4baa38 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x3c53a77e bdi_register +EXPORT_SYMBOL vmlinux 0x3c652b24 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c9d1211 string_get_size +EXPORT_SYMBOL vmlinux 0x3c9d2746 sync_blockdev +EXPORT_SYMBOL vmlinux 0x3cb3931b sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x3cba71be dquot_operations +EXPORT_SYMBOL vmlinux 0x3cc11cb2 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x3cc4b0dc lg_lock_init +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3cee9edd __napi_complete +EXPORT_SYMBOL vmlinux 0x3cf43113 phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x3cffd163 cur_cpu_spec +EXPORT_SYMBOL vmlinux 0x3d41904f of_get_next_child +EXPORT_SYMBOL vmlinux 0x3d52a241 lro_flush_all +EXPORT_SYMBOL vmlinux 0x3d6c82a1 should_remove_suid +EXPORT_SYMBOL vmlinux 0x3d993f70 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dd13db7 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0x3ded29ac scsi_get_command +EXPORT_SYMBOL vmlinux 0x3df25708 default_llseek +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e118756 agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0x3e256339 serio_reconnect +EXPORT_SYMBOL vmlinux 0x3e4a0732 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x3e4d223c pme_ctx_init +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e8fbd9c try_to_release_page +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e934a0c inet_frag_evictor +EXPORT_SYMBOL vmlinux 0x3ed63055 zlib_inflateReset +EXPORT_SYMBOL vmlinux 0x3ef7fd94 pci_disable_msi +EXPORT_SYMBOL vmlinux 0x3efa757f pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f458019 bitmap_unplug +EXPORT_SYMBOL vmlinux 0x3f5de707 devfreq_resume_device +EXPORT_SYMBOL vmlinux 0x3fadc74c scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x3fb1cf71 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x3fbea51d is_bad_inode +EXPORT_SYMBOL vmlinux 0x3fd55724 of_n_size_cells +EXPORT_SYMBOL vmlinux 0x3fd70ca5 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x3fe0d1c0 slhc_free +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3ff62317 local_bh_disable +EXPORT_SYMBOL vmlinux 0x3ff8069b tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x3ff8e495 lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0x3fff6a2a generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x40122205 skb_dequeue +EXPORT_SYMBOL vmlinux 0x401ed28d mount_subtree +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x404066c5 idr_for_each +EXPORT_SYMBOL vmlinux 0x4059792f print_hex_dump +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x4081e413 phy_driver_register +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x40a01cf1 tty_chars_in_buffer +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 0x40b57158 pme_initfq +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 0x40e68677 kobject_get +EXPORT_SYMBOL vmlinux 0x40f1ad10 tb_ticks_per_jiffy +EXPORT_SYMBOL vmlinux 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL vmlinux 0x4117e309 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x4159c38f ioremap_wc +EXPORT_SYMBOL vmlinux 0x4168619e bman_pool_max +EXPORT_SYMBOL vmlinux 0x416a6f56 udp6_csum_init +EXPORT_SYMBOL vmlinux 0x417c9bc6 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x418cf053 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0x419078a2 from_kgid +EXPORT_SYMBOL vmlinux 0x41dc86a8 find_get_page +EXPORT_SYMBOL vmlinux 0x41dfde30 mmc_of_parse +EXPORT_SYMBOL vmlinux 0x41e81ea1 mach_stx_gp3 +EXPORT_SYMBOL vmlinux 0x41e882d2 irq_to_desc +EXPORT_SYMBOL vmlinux 0x4203c06c md_unregister_thread +EXPORT_SYMBOL vmlinux 0x4207a194 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x4211c3c1 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x423b776a ipmi_create_user +EXPORT_SYMBOL vmlinux 0x4241f32c netif_device_attach +EXPORT_SYMBOL vmlinux 0x424ad3bb update_time +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x425b44a8 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x42678fc8 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x42689607 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x4275cb6e km_new_mapping +EXPORT_SYMBOL vmlinux 0x427750dd ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x428da188 d_delete +EXPORT_SYMBOL vmlinux 0x42977ad4 __hw_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42c65986 qman_alloc_fqid_range +EXPORT_SYMBOL vmlinux 0x42de3ac3 tcp_parse_options +EXPORT_SYMBOL vmlinux 0x42eb6ff7 __d_drop +EXPORT_SYMBOL vmlinux 0x42ee6973 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x430154ae bman_irqsource_remove +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x43632d7d of_find_property +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x437620c9 ip6_route_output +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x438df40a vfs_getattr +EXPORT_SYMBOL vmlinux 0x43983b16 lock_sock_fast +EXPORT_SYMBOL vmlinux 0x439cba37 neigh_ifdown +EXPORT_SYMBOL vmlinux 0x43a01f90 complete_all +EXPORT_SYMBOL vmlinux 0x43ac8fc9 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x43b4324b security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x43ddc579 blk_start_queue +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x43fad79d inet6_protos +EXPORT_SYMBOL vmlinux 0x440dab28 agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x4418d4ad agp_backend_acquire +EXPORT_SYMBOL vmlinux 0x441c6195 neigh_lookup +EXPORT_SYMBOL vmlinux 0x44330023 d_lookup +EXPORT_SYMBOL vmlinux 0x44366cfc simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x44433d8c seq_release_private +EXPORT_SYMBOL vmlinux 0x44438b96 hex2bin +EXPORT_SYMBOL vmlinux 0x4467d430 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0x447516bc ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x4478bb87 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x4484c9f6 fm_mutex_lock +EXPORT_SYMBOL vmlinux 0x44b771d7 arp_find +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44eb192e wait_for_completion +EXPORT_SYMBOL vmlinux 0x44ef925f blk_bio_map_sg +EXPORT_SYMBOL vmlinux 0x44f5e8b5 of_allnodes +EXPORT_SYMBOL vmlinux 0x44f7929b qm_fq_new +EXPORT_SYMBOL vmlinux 0x450e4295 inet_select_addr +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x453d8b72 misc_register +EXPORT_SYMBOL vmlinux 0x4549f5d6 nf_log_unset +EXPORT_SYMBOL vmlinux 0x454bdee5 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x457aa3a1 soft_cursor +EXPORT_SYMBOL vmlinux 0x4596db6a sys_sigreturn +EXPORT_SYMBOL vmlinux 0x45a0bcd6 dev_load +EXPORT_SYMBOL vmlinux 0x45a6be13 cpufreq_sysfs_remove_file +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45bf7ed0 xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x45c012f4 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x45cc367f seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0x45e5aff3 netif_device_detach +EXPORT_SYMBOL vmlinux 0x4612c59d down_trylock +EXPORT_SYMBOL vmlinux 0x461ebfa0 __copy_tofrom_user +EXPORT_SYMBOL vmlinux 0x4626b647 pagevec_lookup +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +EXPORT_SYMBOL vmlinux 0x462b9e7e abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x4637a433 pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0x4638177f generic_read_dir +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46608fa0 getnstimeofday +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x468a27c4 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x468bcda6 cpumask_set_cpu_local_first +EXPORT_SYMBOL vmlinux 0x468d6324 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x46ae9991 netlink_set_err +EXPORT_SYMBOL vmlinux 0x46b55435 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x46c1147d qman_poll_slow +EXPORT_SYMBOL vmlinux 0x46d12956 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x46ffccee pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x471dee3c unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x473c5dd1 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x4785cb1d tty_unthrottle +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47a06b05 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x47a461be I_BDEV +EXPORT_SYMBOL vmlinux 0x47a4f3e6 blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0x47b3f862 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0x47bb9517 inet_frags_fini +EXPORT_SYMBOL vmlinux 0x47bcf84c param_set_ulong +EXPORT_SYMBOL vmlinux 0x47c8baf4 param_ops_uint +EXPORT_SYMBOL vmlinux 0x47ece0ed pme_ctx_ctrl_read_flow +EXPORT_SYMBOL vmlinux 0x47edb03b sockfd_lookup +EXPORT_SYMBOL vmlinux 0x47f1005a max8925_reg_read +EXPORT_SYMBOL vmlinux 0x48034724 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x48230027 bdgrab +EXPORT_SYMBOL vmlinux 0x482a2a49 param_set_charp +EXPORT_SYMBOL vmlinux 0x48404b9a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x4864407d key_put +EXPORT_SYMBOL vmlinux 0x48868118 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x48a771c5 cpu_core_map +EXPORT_SYMBOL vmlinux 0x48a97487 simple_write_begin +EXPORT_SYMBOL vmlinux 0x48b00000 xfrm_state_update +EXPORT_SYMBOL vmlinux 0x48c6db53 of_get_child_by_name +EXPORT_SYMBOL vmlinux 0x48fabfbf gen_new_estimator +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x4910fe50 ps2_init +EXPORT_SYMBOL vmlinux 0x491f775c __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x4932b48d sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x4945b592 set_bh_page +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x4965bdd5 netlink_capable +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49d0e972 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x49dd4d58 machine_id +EXPORT_SYMBOL vmlinux 0x49e1bf91 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x49f27caa generic_setlease +EXPORT_SYMBOL vmlinux 0x49fd4af1 inet6_release +EXPORT_SYMBOL vmlinux 0x4a358252 __bitmap_subset +EXPORT_SYMBOL vmlinux 0x4a442c85 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x4a5d5f5b __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0x4a6d6005 open_exec +EXPORT_SYMBOL vmlinux 0x4a7a1678 input_open_device +EXPORT_SYMBOL vmlinux 0x4a8589d7 __f_setown +EXPORT_SYMBOL vmlinux 0x4ac456d5 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4ad3d4d7 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x4af06ca6 pcim_enable_device +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b2f6b34 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x4b34fbf5 block_all_signals +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b666681 dquot_initialize +EXPORT_SYMBOL vmlinux 0x4b6cb659 km_state_notify +EXPORT_SYMBOL vmlinux 0x4b7ed27b sleep_on +EXPORT_SYMBOL vmlinux 0x4b806851 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x4b90572b inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x4b91626f __scm_send +EXPORT_SYMBOL vmlinux 0x4bb9ce93 blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0x4bc4de6d agp_copy_info +EXPORT_SYMBOL vmlinux 0x4bdb22fc cdrom_check_events +EXPORT_SYMBOL vmlinux 0x4bdcf394 unlock_buffer +EXPORT_SYMBOL vmlinux 0x4be85a03 memweight +EXPORT_SYMBOL vmlinux 0x4c04d3e1 __devm_request_region +EXPORT_SYMBOL vmlinux 0x4c11435a _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c1182cb bitmap_scnprintf +EXPORT_SYMBOL vmlinux 0x4c1ee241 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x4c27fd13 keyring_alloc +EXPORT_SYMBOL vmlinux 0x4c2ae700 strnstr +EXPORT_SYMBOL vmlinux 0x4c5e5e13 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x4c602731 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x4c8ee747 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL vmlinux 0x4ca6dcf0 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x4caeab0d gen10g_config_advert +EXPORT_SYMBOL vmlinux 0x4cb7552a tty_register_device +EXPORT_SYMBOL vmlinux 0x4cbbd171 __bitmap_weight +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4cefa237 mark_info_dirty +EXPORT_SYMBOL vmlinux 0x4cf2ed21 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x4d1086f2 serio_interrupt +EXPORT_SYMBOL vmlinux 0x4d37bb51 qdisc_reset +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d71004a __cpm2_setbrg +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4d9dcda5 qman_fqid_pool_destroy +EXPORT_SYMBOL vmlinux 0x4da20c63 inode_needs_sync +EXPORT_SYMBOL vmlinux 0x4da7c931 rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0x4db7bfdb neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x4dbd81da proc_create_data +EXPORT_SYMBOL vmlinux 0x4dc85eb0 sg_miter_stop +EXPORT_SYMBOL vmlinux 0x4dcf7626 dev_add_pack +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4dec6038 memscan +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4dfed71c flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x4e28b535 sock_create_lite +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e35b6a8 mach_p2020_rdb_pc +EXPORT_SYMBOL vmlinux 0x4e38a2d9 napi_complete +EXPORT_SYMBOL vmlinux 0x4e4379e6 mach_socrates +EXPORT_SYMBOL vmlinux 0x4e4c2455 mach_xes_mpc8572 +EXPORT_SYMBOL vmlinux 0x4e4cdcc4 eth_mac_addr +EXPORT_SYMBOL vmlinux 0x4e620d70 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0x4e671dda block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6ac869 mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e786d13 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0x4e830a3e strnicmp +EXPORT_SYMBOL vmlinux 0x4e8ff237 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x4e92d242 i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0x4e9dffb5 ip_fast_csum +EXPORT_SYMBOL vmlinux 0x4ea6bc8f netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x4eb2f02a misc_deregister +EXPORT_SYMBOL vmlinux 0x4eb98943 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x4ed83d54 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x4edb0a03 neigh_table_init +EXPORT_SYMBOL vmlinux 0x4f177ef7 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f248523 of_find_node_by_name +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f4b8a05 skb_copy_datagram_iovec +EXPORT_SYMBOL vmlinux 0x4f60bcf2 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x4f60e09c mmc_hw_reset_check +EXPORT_SYMBOL vmlinux 0x4f68cb1a padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f69ea64 vfs_writev +EXPORT_SYMBOL vmlinux 0x4f844801 dma_sync_wait +EXPORT_SYMBOL vmlinux 0x4f86c616 single_release +EXPORT_SYMBOL vmlinux 0x4f899627 vfs_statfs +EXPORT_SYMBOL vmlinux 0x4f937cae __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x4f96a038 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0x4f9c55b9 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0x4fafc59c filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x4fb7cff6 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x4fcd68a2 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4fe99583 atomic64_dec_if_positive +EXPORT_SYMBOL vmlinux 0x4ff2ab86 pci_pme_capable +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x50168b8e mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x50196e72 bh_submit_read +EXPORT_SYMBOL vmlinux 0x5028314a revalidate_disk +EXPORT_SYMBOL vmlinux 0x50384baf vgacon_remap_base +EXPORT_SYMBOL vmlinux 0x504d0510 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x5054adb8 dma_common_mmap +EXPORT_SYMBOL vmlinux 0x50645d3c tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x506c7ab8 phy_detach +EXPORT_SYMBOL vmlinux 0x50861cb7 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x50980d18 ppp_channel_index +EXPORT_SYMBOL vmlinux 0x509817cf vprintk_emit +EXPORT_SYMBOL vmlinux 0x50ae7d80 __idr_pre_get +EXPORT_SYMBOL vmlinux 0x50ea9977 register_filesystem +EXPORT_SYMBOL vmlinux 0x5103b082 freeze_bdev +EXPORT_SYMBOL vmlinux 0x51131e8b put_io_context +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x5123139c __sb_end_write +EXPORT_SYMBOL vmlinux 0x51243084 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x512459e6 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x5142a919 set_nlink +EXPORT_SYMBOL vmlinux 0x51432596 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x51548987 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0x515e24a7 flush_instruction_cache +EXPORT_SYMBOL vmlinux 0x51777351 follow_down_one +EXPORT_SYMBOL vmlinux 0x51818a70 md_error +EXPORT_SYMBOL vmlinux 0x519b0da3 finish_wait +EXPORT_SYMBOL vmlinux 0x51a84618 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x51bb9013 key_unlink +EXPORT_SYMBOL vmlinux 0x51c93ad0 fm_get_rtc_handle +EXPORT_SYMBOL vmlinux 0x51cebbcf block_write_end +EXPORT_SYMBOL vmlinux 0x51dce73b xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x51e7797d blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0x51ef33b8 kstrndup +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x520518f9 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x5218641b get_fs_type +EXPORT_SYMBOL vmlinux 0x521a21ef bdev_read_only +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x52281c01 blk_free_tags +EXPORT_SYMBOL vmlinux 0x522b92af sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL vmlinux 0x527bfacc tcp_syn_flood_action +EXPORT_SYMBOL vmlinux 0x527c3c76 user_path_create +EXPORT_SYMBOL vmlinux 0x528c709d simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x528de627 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x52ada15b sock_setsockopt +EXPORT_SYMBOL vmlinux 0x5313572a netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0x532d3b37 bio_phys_segments +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x534b3bca inet_bind +EXPORT_SYMBOL vmlinux 0x538a8811 fget_light +EXPORT_SYMBOL vmlinux 0x53b257b2 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x53bb01e2 vm_stat +EXPORT_SYMBOL vmlinux 0x53c770c4 follow_down +EXPORT_SYMBOL vmlinux 0x53ebab1b _outsl_ns +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x540c239d of_dev_get +EXPORT_SYMBOL vmlinux 0x5412c7c7 up +EXPORT_SYMBOL vmlinux 0x54132316 mmc_cache_ctrl +EXPORT_SYMBOL vmlinux 0x5422015c vfs_mknod +EXPORT_SYMBOL vmlinux 0x542ce589 mmc_can_discard +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x5449ac61 invalidate_bdev +EXPORT_SYMBOL vmlinux 0x544f46a7 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x545838ee splice_from_pipe_begin +EXPORT_SYMBOL vmlinux 0x545c542c scsi_reset_provider +EXPORT_SYMBOL vmlinux 0x546e4ec8 blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x5489312b filemap_flush +EXPORT_SYMBOL vmlinux 0x548cb517 bman_poll +EXPORT_SYMBOL vmlinux 0x54a4e9b8 input_reset_device +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54c3de15 skb_copy +EXPORT_SYMBOL vmlinux 0x54c9dc8e qman_fq_fqid +EXPORT_SYMBOL vmlinux 0x54ca85f9 pci_get_subsys +EXPORT_SYMBOL vmlinux 0x54e3cc3b param_get_int +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54fea01f pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x5511556c dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x551a7a6a tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x55410bb9 devfreq_add_device +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x5549253a tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x555ded57 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x555ef355 seq_printf +EXPORT_SYMBOL vmlinux 0x55660527 dev_set_drvdata +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x5568c553 complete +EXPORT_SYMBOL vmlinux 0x556a2934 filemap_fault +EXPORT_SYMBOL vmlinux 0x556bf51d blk_mq_free_single_hw_queue +EXPORT_SYMBOL vmlinux 0x556c2740 hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x55770bc8 __quota_error +EXPORT_SYMBOL vmlinux 0x5577ef9e udp_table +EXPORT_SYMBOL vmlinux 0x5581c40c kill_pid +EXPORT_SYMBOL vmlinux 0x5594be03 bitmap_remap +EXPORT_SYMBOL vmlinux 0x55b2a5ac ip_options_compile +EXPORT_SYMBOL vmlinux 0x55b75947 dquot_file_open +EXPORT_SYMBOL vmlinux 0x55dfc113 skb_copy_datagram_from_iovec +EXPORT_SYMBOL vmlinux 0x55f31d41 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x55ff6494 block_read_full_page +EXPORT_SYMBOL vmlinux 0x56016b8f _dev_info +EXPORT_SYMBOL vmlinux 0x5614b010 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x563c8e1a security_path_symlink +EXPORT_SYMBOL vmlinux 0x5642793a radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x567ee4c3 noop_fsync +EXPORT_SYMBOL vmlinux 0x56a10071 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x56a10763 csum_tcpudp_magic +EXPORT_SYMBOL vmlinux 0x56a17932 gen10g_resume +EXPORT_SYMBOL vmlinux 0x56a3334c skb_checksum +EXPORT_SYMBOL vmlinux 0x56bf5cf7 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56f4d3a7 __destroy_inode +EXPORT_SYMBOL vmlinux 0x56fbaaab fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0x5709f87d get_io_context +EXPORT_SYMBOL vmlinux 0x570fc001 ip_fragment +EXPORT_SYMBOL vmlinux 0x5719f25d mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x573eb4f2 inet_recvmsg +EXPORT_SYMBOL vmlinux 0x5752dde8 submit_bh +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x575af70c on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x57649614 finish_no_open +EXPORT_SYMBOL vmlinux 0x57665bf8 put_page +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x5785384a flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x5786f4d4 simple_statfs +EXPORT_SYMBOL vmlinux 0x57883c00 agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0x579f65c8 pme_fd_cmd_fcr +EXPORT_SYMBOL vmlinux 0x579fbcd2 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0x57b332de vlan_vid_del +EXPORT_SYMBOL vmlinux 0x57de83d3 pci_disable_ltr +EXPORT_SYMBOL vmlinux 0x57ea142d poll_initwait +EXPORT_SYMBOL vmlinux 0x57ea5bf9 mpage_writepages +EXPORT_SYMBOL vmlinux 0x57ff2a2d arp_tbl +EXPORT_SYMBOL vmlinux 0x5808e20e kthread_stop +EXPORT_SYMBOL vmlinux 0x5814e055 bm_pool_free +EXPORT_SYMBOL vmlinux 0x582a4747 cacheable_memcpy +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x58623807 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x586ee1e3 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x5877d8ef qman_static_dequeue_add +EXPORT_SYMBOL vmlinux 0x587ba12c sk_alloc +EXPORT_SYMBOL vmlinux 0x5883d326 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x58accf66 block_invalidatepage +EXPORT_SYMBOL vmlinux 0x58ad8892 pci_get_device +EXPORT_SYMBOL vmlinux 0x58d1070a of_get_address +EXPORT_SYMBOL vmlinux 0x58deaed3 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x58f15678 write_cache_pages +EXPORT_SYMBOL vmlinux 0x58f429d4 vfs_read +EXPORT_SYMBOL vmlinux 0x591241d0 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x5920c091 sk_free +EXPORT_SYMBOL vmlinux 0x59237c5d agp_allocate_memory +EXPORT_SYMBOL vmlinux 0x593a90e9 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x595d0946 empty_zero_page +EXPORT_SYMBOL vmlinux 0x597626cf vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x597e39a9 generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x59a8c86a mach_p1025_rdb +EXPORT_SYMBOL vmlinux 0x59b3378a completion_done +EXPORT_SYMBOL vmlinux 0x59b44ff6 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x59f0fb56 bdi_unregister +EXPORT_SYMBOL vmlinux 0x5a12550e inet_getname +EXPORT_SYMBOL vmlinux 0x5a28edca mntput +EXPORT_SYMBOL vmlinux 0x5a36523e pme_ctx_ctrl_nop +EXPORT_SYMBOL vmlinux 0x5a3e8aa2 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x5a4a1ffe padata_stop +EXPORT_SYMBOL vmlinux 0x5a5536c2 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x5a725a67 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x5aa754d3 security_file_permission +EXPORT_SYMBOL vmlinux 0x5ab67931 do_IRQ +EXPORT_SYMBOL vmlinux 0x5aba11a1 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0x5ac4cc31 tty_unlock_pair +EXPORT_SYMBOL vmlinux 0x5ac91449 devm_gpiod_put +EXPORT_SYMBOL vmlinux 0x5ad1f99d dquot_get_dqinfo +EXPORT_SYMBOL vmlinux 0x5b01bed8 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x5b18b697 __memcg_kmem_get_cache +EXPORT_SYMBOL vmlinux 0x5b19634d div_s64_rem +EXPORT_SYMBOL vmlinux 0x5b2b40cd get_gendisk +EXPORT_SYMBOL vmlinux 0x5b2c7574 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x5b3089a4 elv_add_request +EXPORT_SYMBOL vmlinux 0x5b372653 rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0x5b39988e ftrace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x5b3fa0db set_bdi_congested +EXPORT_SYMBOL vmlinux 0x5b424bd3 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x5b42712a blk_mq_alloc_single_hw_queue +EXPORT_SYMBOL vmlinux 0x5b615646 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0x5b7b8de1 vm_mmap +EXPORT_SYMBOL vmlinux 0x5b935439 pci_enable_msix +EXPORT_SYMBOL vmlinux 0x5b98283a dev_printk +EXPORT_SYMBOL vmlinux 0x5b9828c5 dma_spin_lock +EXPORT_SYMBOL vmlinux 0x5bb58389 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x5bd161a6 key_link +EXPORT_SYMBOL vmlinux 0x5bf63794 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0x5c06437b unregister_key_type +EXPORT_SYMBOL vmlinux 0x5c1c7781 mnt_unpin +EXPORT_SYMBOL vmlinux 0x5c320958 ps2_drain +EXPORT_SYMBOL vmlinux 0x5c37f319 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x5c3b07b9 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x5c3fcec6 bio_advance +EXPORT_SYMBOL vmlinux 0x5c5f7fec tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x5c68c4a9 get_thermal_instance +EXPORT_SYMBOL vmlinux 0x5c6c09a3 __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x5c77a8f7 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0x5ca045e9 __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x5cad600f find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x5cc04511 devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0x5ce0c840 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x5ced1227 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5d2c94d1 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x5d41a0d4 scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x5d41c87c param_ops_charp +EXPORT_SYMBOL vmlinux 0x5d4bba59 touch_atime +EXPORT_SYMBOL vmlinux 0x5d4f363c pci_find_bus +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d58efa0 convert_ifc_address +EXPORT_SYMBOL vmlinux 0x5d5b5a16 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x5d60ca62 km_report +EXPORT_SYMBOL vmlinux 0x5d6b2fc7 skb_split +EXPORT_SYMBOL vmlinux 0x5d6bdce1 flex_array_alloc +EXPORT_SYMBOL vmlinux 0x5d8e0c0b pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0x5d9428e0 netpoll_rx_disable +EXPORT_SYMBOL vmlinux 0x5da27d8b make_kuid +EXPORT_SYMBOL vmlinux 0x5daeebdd phy_connect_direct +EXPORT_SYMBOL vmlinux 0x5db46543 simple_transaction_read +EXPORT_SYMBOL vmlinux 0x5dcd3280 md_flush_request +EXPORT_SYMBOL vmlinux 0x5ddf9f7d dev_uc_add +EXPORT_SYMBOL vmlinux 0x5e0b9d1c xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x5e15425b tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0x5e1b4951 release_firmware +EXPORT_SYMBOL vmlinux 0x5e27321b register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x5e3a8a9c __wake_up +EXPORT_SYMBOL vmlinux 0x5e67450c nf_register_hooks +EXPORT_SYMBOL vmlinux 0x5e80dda8 nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL vmlinux 0x5e945e53 pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5eaf1de9 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x5eb0401e proc_dostring +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ec9524d dev_emerg +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5edc4a40 ata_link_printk +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f050298 arp_create +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f115a9a audit_log_task_info +EXPORT_SYMBOL vmlinux 0x5f1eec36 __netif_schedule +EXPORT_SYMBOL vmlinux 0x5f28c2dc idr_remove +EXPORT_SYMBOL vmlinux 0x5f3aed9a input_allocate_device +EXPORT_SYMBOL vmlinux 0x5f3c8f5c mmc_assume_removable +EXPORT_SYMBOL vmlinux 0x5f421c6e scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x5f471e16 validate_sp +EXPORT_SYMBOL vmlinux 0x5f5c8128 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x5f68684c netdev_alert +EXPORT_SYMBOL vmlinux 0x5f6a5a68 pci_reenable_device +EXPORT_SYMBOL vmlinux 0x5f752c1d of_device_unregister +EXPORT_SYMBOL vmlinux 0x5f754e5a memset +EXPORT_SYMBOL vmlinux 0x5f7a5907 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x5f8a2728 isa_io_base +EXPORT_SYMBOL vmlinux 0x5f9e6a8e neigh_update +EXPORT_SYMBOL vmlinux 0x5facace0 mdiobus_scan +EXPORT_SYMBOL vmlinux 0x5fb16430 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x5fb9a589 zero_fill_bio +EXPORT_SYMBOL vmlinux 0x5fc7ad92 from_kuid +EXPORT_SYMBOL vmlinux 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x603adb2a dev_addr_flush +EXPORT_SYMBOL vmlinux 0x60417379 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x604636f1 netdev_lower_dev_get_private_rcu +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x6086fae9 rwsem_wake +EXPORT_SYMBOL vmlinux 0x60920061 kmap_high +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60b86f61 sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x60b87ec4 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60f38ce3 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x60f8c21f atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x610ea147 abort_creds +EXPORT_SYMBOL vmlinux 0x6121c58f bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x612390ad netpoll_set_trap +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x6150462f dst_release +EXPORT_SYMBOL vmlinux 0x61538ad0 param_get_charp +EXPORT_SYMBOL vmlinux 0x615eec54 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x61666969 generic_make_request +EXPORT_SYMBOL vmlinux 0x6191299c i2c_transfer +EXPORT_SYMBOL vmlinux 0x61a2abc9 file_remove_suid +EXPORT_SYMBOL vmlinux 0x61a3c128 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x61b4c268 bman_poll_slow +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61e6d3d5 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x61e7c6d1 neigh_compat_output +EXPORT_SYMBOL vmlinux 0x61e8fad3 cdev_alloc +EXPORT_SYMBOL vmlinux 0x61ea5a38 flush_dcache_page +EXPORT_SYMBOL vmlinux 0x61eef2c9 _insb +EXPORT_SYMBOL vmlinux 0x61fb5121 follow_up +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x6217bac0 agp_free_memory +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x6230284a generic_ro_fops +EXPORT_SYMBOL vmlinux 0x62480c0a have_submounts +EXPORT_SYMBOL vmlinux 0x62538167 slhc_toss +EXPORT_SYMBOL vmlinux 0x626ad07a tcp_prot +EXPORT_SYMBOL vmlinux 0x627254ac mem_map +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62822d05 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x629164c9 dev_alloc_name +EXPORT_SYMBOL vmlinux 0x629c2143 skb_append +EXPORT_SYMBOL vmlinux 0x62e259d4 d_find_alias +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x631b281c mdiobus_free +EXPORT_SYMBOL vmlinux 0x63231951 gen_pool_create +EXPORT_SYMBOL vmlinux 0x63385cc3 starget_for_each_device +EXPORT_SYMBOL vmlinux 0x633b86a8 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x63428546 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x63478134 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x634d8020 qman_enqueue_orp +EXPORT_SYMBOL vmlinux 0x636e4ec5 dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x63939617 ipmi_smi_watcher_register +EXPORT_SYMBOL vmlinux 0x63cacee0 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x63cbd862 serio_unregister_port +EXPORT_SYMBOL vmlinux 0x63cc6c52 pme_map_error +EXPORT_SYMBOL vmlinux 0x63ccc627 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x64094895 pci_read_vpd +EXPORT_SYMBOL vmlinux 0x64143813 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x641b22b0 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x6437b09e pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0x6457c160 blk_mq_init_commands +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64a4b84d cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x64db7cd7 phy_device_create +EXPORT_SYMBOL vmlinux 0x64de081e md_write_end +EXPORT_SYMBOL vmlinux 0x64e6e5dc vfs_unlink +EXPORT_SYMBOL vmlinux 0x64ec81e3 update_devfreq +EXPORT_SYMBOL vmlinux 0x64ef1953 sock_sendmsg +EXPORT_SYMBOL vmlinux 0x64f5bf80 pci_map_rom +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x652e2784 vfs_rename +EXPORT_SYMBOL vmlinux 0x653237f3 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x65400222 __irq_offset_value +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x6565d33f scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x6585e310 alloc_pages_exact_nid +EXPORT_SYMBOL vmlinux 0x65b60fb2 insert_inode_locked +EXPORT_SYMBOL vmlinux 0x65bb58a2 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65e3ea9d serio_open +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x65fb9f84 ps2_begin_command +EXPORT_SYMBOL vmlinux 0x65fbef10 seq_path +EXPORT_SYMBOL vmlinux 0x66029b36 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x6604c290 simple_rmdir +EXPORT_SYMBOL vmlinux 0x661b8ff8 pci_target_state +EXPORT_SYMBOL vmlinux 0x6621ca58 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x66536fba remove_arg_zero +EXPORT_SYMBOL vmlinux 0x665e4609 vga_put +EXPORT_SYMBOL vmlinux 0x66822f06 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x6687e69a blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x668da8d5 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x66b596f9 __sk_dst_check +EXPORT_SYMBOL vmlinux 0x66b9ca3f vfs_link +EXPORT_SYMBOL vmlinux 0x66be8713 devfreq_interval_update +EXPORT_SYMBOL vmlinux 0x66de4e48 phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x66e19382 kill_pgrp +EXPORT_SYMBOL vmlinux 0x670db6cb genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x67190995 input_set_keycode +EXPORT_SYMBOL vmlinux 0x672f7a69 audit_log +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x67426eb3 fm_get_mem_region +EXPORT_SYMBOL vmlinux 0x67512aab path_put +EXPORT_SYMBOL vmlinux 0x675b1fc2 bman_get_portal_config +EXPORT_SYMBOL vmlinux 0x675b8f61 param_get_string +EXPORT_SYMBOL vmlinux 0x6776df85 pci_match_id +EXPORT_SYMBOL vmlinux 0x67871e7d truncate_pagecache +EXPORT_SYMBOL vmlinux 0x678af300 ___pskb_trim +EXPORT_SYMBOL vmlinux 0x679a1016 create_syslog_header +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67b830f7 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL vmlinux 0x67ce3108 xfrm_state_add +EXPORT_SYMBOL vmlinux 0x67d0bfca tty_unregister_device +EXPORT_SYMBOL vmlinux 0x67d71a44 vm_event_states +EXPORT_SYMBOL vmlinux 0x67e65643 tcp_prequeue +EXPORT_SYMBOL vmlinux 0x6807af94 dev_close +EXPORT_SYMBOL vmlinux 0x68113f73 mutex_trylock +EXPORT_SYMBOL vmlinux 0x68406323 __invalidate_device +EXPORT_SYMBOL vmlinux 0x6849a15f flex_array_clear +EXPORT_SYMBOL vmlinux 0x684e4e68 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x68609857 complete_and_exit +EXPORT_SYMBOL vmlinux 0x68728470 genphy_update_link +EXPORT_SYMBOL vmlinux 0x6872de32 inode_get_bytes +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x68809ca9 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x689f4994 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68bcf286 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x68e05d57 getrawmonotonic +EXPORT_SYMBOL vmlinux 0x68eb9a47 padata_add_cpu +EXPORT_SYMBOL vmlinux 0x69208bbb blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x693933d2 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x6967085e blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x69749e53 inode_permission +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69cd3f5f udplite_prot +EXPORT_SYMBOL vmlinux 0x69d133a0 __module_get +EXPORT_SYMBOL vmlinux 0x69d38ed9 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x69d7e5b8 __debugger_ipi +EXPORT_SYMBOL vmlinux 0x69e27c7a bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a23ed4d single_open_size +EXPORT_SYMBOL vmlinux 0x6a3f4119 mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a61f874 to_tm +EXPORT_SYMBOL vmlinux 0x6a740c54 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a80a3f5 cpm_muram_free +EXPORT_SYMBOL vmlinux 0x6a8c3864 read_code +EXPORT_SYMBOL vmlinux 0x6a8e005a mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6ace7316 get_task_io_context +EXPORT_SYMBOL vmlinux 0x6addccbe dump_align +EXPORT_SYMBOL vmlinux 0x6ae6f8b0 led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0x6af7422c pm860x_page_bulk_write +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b2548b2 default_file_splice_read +EXPORT_SYMBOL vmlinux 0x6b2dbc0e register_md_personality +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b7a8cbf skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x6b7f1917 idr_find_slowpath +EXPORT_SYMBOL vmlinux 0x6b8029e9 generic_file_buffered_write +EXPORT_SYMBOL vmlinux 0x6b913512 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0x6b976719 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x6bacd6bd scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bc575a7 inet_accept +EXPORT_SYMBOL vmlinux 0x6bceaebc gen_replace_estimator +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6beb2078 param_set_copystring +EXPORT_SYMBOL vmlinux 0x6c0b0ecd ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c2faee3 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x6c3c047e pme_ctx_exclusive_inc +EXPORT_SYMBOL vmlinux 0x6c3eaa57 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x6c48f6c0 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c63f079 i2c_del_driver +EXPORT_SYMBOL vmlinux 0x6c665691 flex_array_shrink +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c9e0720 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x6ca1d1a4 atomic64_read +EXPORT_SYMBOL vmlinux 0x6ca5b0f8 __net_get_random_once +EXPORT_SYMBOL vmlinux 0x6cbbaa6e mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x6cbf6ba6 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d27ef64 __bitmap_empty +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d2eb1e6 __skb_get_hash +EXPORT_SYMBOL vmlinux 0x6d456af5 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x6d4a7375 __sb_start_write +EXPORT_SYMBOL vmlinux 0x6d6af3cc locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x6d824d59 arp_invalidate +EXPORT_SYMBOL vmlinux 0x6da928f4 _insw_ns +EXPORT_SYMBOL vmlinux 0x6db57346 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x6dd59d58 blk_run_queue +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df142ad __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0x6df98dc6 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x6dfdf7ba udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x6e058f36 ip6_frag_match +EXPORT_SYMBOL vmlinux 0x6e0af026 iterate_mounts +EXPORT_SYMBOL vmlinux 0x6e0ef838 inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0x6e1d35ac input_close_device +EXPORT_SYMBOL vmlinux 0x6e379526 kernstart_addr +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e764332 idr_destroy +EXPORT_SYMBOL vmlinux 0x6e8a5dd6 dev_add_offload +EXPORT_SYMBOL vmlinux 0x6eb74dff proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x6ebc5149 param_ops_long +EXPORT_SYMBOL vmlinux 0x6ec096aa napi_gro_receive +EXPORT_SYMBOL vmlinux 0x6ec530c0 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x6ecb2bd7 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x6ecfbe66 arp_xmit +EXPORT_SYMBOL vmlinux 0x6ed9dbd4 input_grab_device +EXPORT_SYMBOL vmlinux 0x6ee0c6e0 led_blink_set +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f268538 bman_acquire +EXPORT_SYMBOL vmlinux 0x6f269e95 brioctl_set +EXPORT_SYMBOL vmlinux 0x6f2c72fc input_unregister_handler +EXPORT_SYMBOL vmlinux 0x6f645a5c module_layout +EXPORT_SYMBOL vmlinux 0x6f798356 dcache_dir_close +EXPORT_SYMBOL vmlinux 0x6f85b211 ida_remove +EXPORT_SYMBOL vmlinux 0x6f8bebd8 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x6f91df19 seq_bitmap_list +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x700071f9 elevator_alloc +EXPORT_SYMBOL vmlinux 0x70099837 netif_napi_add +EXPORT_SYMBOL vmlinux 0x700a41fe scsi_dma_map +EXPORT_SYMBOL vmlinux 0x70173efe pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x7029199d dquot_enable +EXPORT_SYMBOL vmlinux 0x7045dea9 qman_modify_cgr +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x70a9f1d7 kernel_getpeername +EXPORT_SYMBOL vmlinux 0x70acd365 tcp_gro_receive +EXPORT_SYMBOL vmlinux 0x70bc17d7 inode_wait +EXPORT_SYMBOL vmlinux 0x70cbf8ae generic_file_splice_write +EXPORT_SYMBOL vmlinux 0x70d053fd try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0x70d888b7 __debugger_fault_handler +EXPORT_SYMBOL vmlinux 0x70e181c0 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x71338a86 __blk_end_request +EXPORT_SYMBOL vmlinux 0x713a2718 do_sync_write +EXPORT_SYMBOL vmlinux 0x71545786 dcache_dir_open +EXPORT_SYMBOL vmlinux 0x715d78a5 dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x716dd19c i8042_install_filter +EXPORT_SYMBOL vmlinux 0x716ffef6 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x7180b2c0 qman_delete_cgr +EXPORT_SYMBOL vmlinux 0x719936ba ppp_input +EXPORT_SYMBOL vmlinux 0x71a240c5 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71a9e904 truncate_setsize +EXPORT_SYMBOL vmlinux 0x71af0c20 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x71c90087 memcmp +EXPORT_SYMBOL vmlinux 0x71cf7345 tcp_init_sock +EXPORT_SYMBOL vmlinux 0x71dda9e8 scsi_cmd_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x71e8cf2f tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x71f65175 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0x71f8e216 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x71fed9a3 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x7203ecc3 pci_domain_nr +EXPORT_SYMBOL vmlinux 0x72072325 vm_map_ram +EXPORT_SYMBOL vmlinux 0x721f816b of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x722a13aa mach_ge_imp3a +EXPORT_SYMBOL vmlinux 0x7235ece8 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x7237a039 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x7239220d backlight_device_register +EXPORT_SYMBOL vmlinux 0x723bb829 dqput +EXPORT_SYMBOL vmlinux 0x7249f32a scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x724d1f32 __breadahead +EXPORT_SYMBOL vmlinux 0x72530e99 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x7262cf89 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x728ce230 qm_fq_free_flags +EXPORT_SYMBOL vmlinux 0x72a70b7f pme_ctx_scan_orp +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72b5b2b7 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x72d4c23c fsl_get_sys_freq +EXPORT_SYMBOL vmlinux 0x72d58de9 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x72d89d69 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72f82974 pci_dev_driver +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x7318e8b5 fb_find_mode +EXPORT_SYMBOL vmlinux 0x731b9eb5 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x733b2383 next_tlbcam_idx +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x7349ff53 __neigh_create +EXPORT_SYMBOL vmlinux 0x73540ea3 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x735d8503 add_wait_queue +EXPORT_SYMBOL vmlinux 0x736b1233 dev_addr_init +EXPORT_SYMBOL vmlinux 0x736fd5f9 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x737de5e9 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x73bc4b2e padata_do_parallel +EXPORT_SYMBOL vmlinux 0x73c1a102 sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x73c7b067 mapping_tagged +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x73e32c6e tcf_hash_search +EXPORT_SYMBOL vmlinux 0x74000c53 input_flush_device +EXPORT_SYMBOL vmlinux 0x74017fa2 of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0x741b5b20 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x7469fcfe radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x7470a7d7 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x7480b7c1 dev_alert +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x74884158 qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0x7499b38b inode_set_bytes +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74ce05b8 flush_delayed_work +EXPORT_SYMBOL vmlinux 0x74d37349 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x750e952b dump_skip +EXPORT_SYMBOL vmlinux 0x7519d137 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x751c2917 __wait_on_bit +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x754dac78 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x756dd160 start_thread +EXPORT_SYMBOL vmlinux 0x7573dec2 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0x757f088f cpm_muram_offset +EXPORT_SYMBOL vmlinux 0x758e9beb sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x7593d385 div64_s64 +EXPORT_SYMBOL vmlinux 0x75986e6f ipv6_dev_get_saddr +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 0x75d36cc4 dev_notice +EXPORT_SYMBOL vmlinux 0x75f27532 seq_release +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x760a74b6 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x7612bbcb of_phy_find_device +EXPORT_SYMBOL vmlinux 0x7617fd50 generic_writepages +EXPORT_SYMBOL vmlinux 0x761be191 try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x762b5490 key_type_keyring +EXPORT_SYMBOL vmlinux 0x7630bbe2 mutex_unlock +EXPORT_SYMBOL vmlinux 0x763bb0c9 tcp_child_process +EXPORT_SYMBOL vmlinux 0x763d4b2e get_pci_dma_ops +EXPORT_SYMBOL vmlinux 0x763f47cc find_vma +EXPORT_SYMBOL vmlinux 0x764210b1 dquot_destroy +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x765c7991 inode_init_once +EXPORT_SYMBOL vmlinux 0x766c783f tcp_proc_register +EXPORT_SYMBOL vmlinux 0x76843c58 fm_port_enable +EXPORT_SYMBOL vmlinux 0x769e06d7 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x76bf656d __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x76bffdde page_put_link +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76e27581 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x76e430a9 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x76e78974 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x76eaf29f mach_p1020_rdb_pd +EXPORT_SYMBOL vmlinux 0x76eeb31e inet_frags_init +EXPORT_SYMBOL vmlinux 0x76f234b1 ktime_get_clocktai +EXPORT_SYMBOL vmlinux 0x770e043a complete_request_key +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x7739d181 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x773ab3d0 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x773c3efc noop_llseek +EXPORT_SYMBOL vmlinux 0x7745cb69 dquot_alloc +EXPORT_SYMBOL vmlinux 0x7749823f wake_up_process +EXPORT_SYMBOL vmlinux 0x776d126c twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x7770dabf dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x777d96f6 blk_mq_run_queues +EXPORT_SYMBOL vmlinux 0x777f0104 bdi_register_dev +EXPORT_SYMBOL vmlinux 0x77920e50 generic_file_aio_read +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77b851c4 cacheable_memzero +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77bc6c3c scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x77dcb1a4 igrab +EXPORT_SYMBOL vmlinux 0x77df0847 __set_personality +EXPORT_SYMBOL vmlinux 0x77ecac9f zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x780a9f2d tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x782567ec memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x782dc2a2 scsi_put_command +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x784a89b0 max8998_update_reg +EXPORT_SYMBOL vmlinux 0x787ed23f uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78cad38f tcf_em_register +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78dfdd9f pme_hw_residue_free +EXPORT_SYMBOL vmlinux 0x78e087e0 flush_tlb_page +EXPORT_SYMBOL vmlinux 0x78e590c8 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0x78ece478 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x78f45450 bio_init +EXPORT_SYMBOL vmlinux 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL vmlinux 0x78febcf9 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x790df6ca __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x79167b5c ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x791e1f15 inetdev_by_index +EXPORT_SYMBOL vmlinux 0x7930d225 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0x796c1c7b kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x797f0131 ata_std_end_eh +EXPORT_SYMBOL vmlinux 0x798aa1ec vfs_readlink +EXPORT_SYMBOL vmlinux 0x798e3164 fm_port_get_handle +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79cac480 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x79d25a15 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x79e70346 i2c_verify_client +EXPORT_SYMBOL vmlinux 0x79fbf0a9 dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0x7a14b05d d_prune_aliases +EXPORT_SYMBOL vmlinux 0x7a188791 prandom_bytes +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a2e4fe8 get_write_access +EXPORT_SYMBOL vmlinux 0x7a35f47a elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a8e6ebe kobject_init +EXPORT_SYMBOL vmlinux 0x7a91726b clkdev_alloc +EXPORT_SYMBOL vmlinux 0x7a925833 cpufreq_get_global_kobject +EXPORT_SYMBOL vmlinux 0x7a975daf tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7aa43557 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7acf9211 wait_on_sync_kiocb +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7af06d34 phy_init_eee +EXPORT_SYMBOL vmlinux 0x7af950ee generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x7afa89fc vsnprintf +EXPORT_SYMBOL vmlinux 0x7b0d56b4 generic_readlink +EXPORT_SYMBOL vmlinux 0x7b0d6113 skb_tx_error +EXPORT_SYMBOL vmlinux 0x7b1ade38 lz4_decompress +EXPORT_SYMBOL vmlinux 0x7b3f7861 alloc_disk +EXPORT_SYMBOL vmlinux 0x7b506bb0 agp_collect_device_status +EXPORT_SYMBOL vmlinux 0x7b5470bc fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x7b59dee7 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b5d5ec9 tc_classify +EXPORT_SYMBOL vmlinux 0x7b794050 kmalloc_caches +EXPORT_SYMBOL vmlinux 0x7bc1a235 phy_connect +EXPORT_SYMBOL vmlinux 0x7be0e07d security_path_rename +EXPORT_SYMBOL vmlinux 0x7be4827c pci_dram_offset +EXPORT_SYMBOL vmlinux 0x7c003aef _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c455a2d pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c67618c inet_sendmsg +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 0x7cb7d327 inode_change_ok +EXPORT_SYMBOL vmlinux 0x7cbc0b12 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x7cc210fd generic_block_bmap +EXPORT_SYMBOL vmlinux 0x7cc3579f netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x7cc578da param_get_long +EXPORT_SYMBOL vmlinux 0x7cd304e7 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7ce323cd pcim_iounmap +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d3448b9 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x7d7f5fc6 ftrace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0x7d8574ca key_payload_reserve +EXPORT_SYMBOL vmlinux 0x7d8acf9c mach_p1020_utm_pc +EXPORT_SYMBOL vmlinux 0x7d938e9f xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x7db7c781 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x7db7d98f kfree_skb +EXPORT_SYMBOL vmlinux 0x7dbb5d9a blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x7dc0e109 idr_get_next +EXPORT_SYMBOL vmlinux 0x7dd71ade flush_tlb_range +EXPORT_SYMBOL vmlinux 0x7dd92a1b lro_receive_skb +EXPORT_SYMBOL vmlinux 0x7de7c35b security_d_instantiate +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7e0d17c5 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x7e394c4e sysctl_local_reserved_ports +EXPORT_SYMBOL vmlinux 0x7e3cf88e mach_xes_mpc8540 +EXPORT_SYMBOL vmlinux 0x7e49f281 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0x7e510ae3 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x7e8360a6 read_dev_sector +EXPORT_SYMBOL vmlinux 0x7e87227e slhc_compress +EXPORT_SYMBOL vmlinux 0x7ea2a6b7 dquot_commit +EXPORT_SYMBOL vmlinux 0x7eba59ba sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x7ec7d574 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0x7ecb001b __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x7ed4836a vfs_symlink +EXPORT_SYMBOL vmlinux 0x7ee73c0c memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0x7efc2d09 unregister_cdrom +EXPORT_SYMBOL vmlinux 0x7f0b2960 qman_fqid_pool_create +EXPORT_SYMBOL vmlinux 0x7f156189 add_disk +EXPORT_SYMBOL vmlinux 0x7f174649 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0x7f1e3f55 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f271356 skb_unlink +EXPORT_SYMBOL vmlinux 0x7f33478e nf_reinject +EXPORT_SYMBOL vmlinux 0x7f508eb1 generic_delete_inode +EXPORT_SYMBOL vmlinux 0x7f51aa5d add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x7f5414e1 powerpc_debugfs_root +EXPORT_SYMBOL vmlinux 0x7f57303e neigh_direct_output +EXPORT_SYMBOL vmlinux 0x7f9074ef __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x7fb14feb writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7ff91954 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x80049c50 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x8008ba9b pci_set_ltr +EXPORT_SYMBOL vmlinux 0x80110b18 inet_shutdown +EXPORT_SYMBOL vmlinux 0x804f922a ipmi_addr_length +EXPORT_SYMBOL vmlinux 0x8051f19f scsi_prep_return +EXPORT_SYMBOL vmlinux 0x80625b97 inet_add_offload +EXPORT_SYMBOL vmlinux 0x80aeff92 seq_write +EXPORT_SYMBOL vmlinux 0x80b778c0 devm_ioremap_prot +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80ce8454 scsi_setup_blk_pc_cmnd +EXPORT_SYMBOL vmlinux 0x80cfc5b4 inet_sendpage +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80e30edb tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x80f810f5 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x810e310a tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x811654d5 prepare_binprm +EXPORT_SYMBOL vmlinux 0x811a8437 sk_mc_loop +EXPORT_SYMBOL vmlinux 0x81271f9b find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x812accfc account_page_redirty +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x815311b3 kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x815c56d0 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x81a07f4e _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x81ab195a devm_clk_put +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81e57e98 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x81eb672e fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x81fefd97 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x82008b60 from_kprojid +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x820fe08a mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0x8212bf52 dquot_resume +EXPORT_SYMBOL vmlinux 0x821a1011 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x82360efd simple_write_end +EXPORT_SYMBOL vmlinux 0x823dca3f con_is_bound +EXPORT_SYMBOL vmlinux 0x824fc78a pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x8251bcc3 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x8260686f bitmap_find_next_zero_area +EXPORT_SYMBOL vmlinux 0x826d4941 sk_filter +EXPORT_SYMBOL vmlinux 0x826fd629 unregister_binfmt +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82b02b67 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x82c75f86 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x82d8a443 sock_no_bind +EXPORT_SYMBOL vmlinux 0x82e5a238 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x830eb527 elevator_change +EXPORT_SYMBOL vmlinux 0x831beff8 alloc_fcdev +EXPORT_SYMBOL vmlinux 0x832684fd ab3100_event_register +EXPORT_SYMBOL vmlinux 0x8348896f dev_get_by_name +EXPORT_SYMBOL vmlinux 0x834f9b67 nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x835f5e49 gen10g_config_aneg +EXPORT_SYMBOL vmlinux 0x836c821a scsi_target_resume +EXPORT_SYMBOL vmlinux 0x8380dae0 names_cachep +EXPORT_SYMBOL vmlinux 0x838d5d24 seq_open +EXPORT_SYMBOL vmlinux 0x83903752 uart_match_port +EXPORT_SYMBOL vmlinux 0x8392ab96 unregister_console +EXPORT_SYMBOL vmlinux 0x839cb4e6 vfs_fsync +EXPORT_SYMBOL vmlinux 0x83a476ce bitmap_scnlistprintf +EXPORT_SYMBOL vmlinux 0x83acc8aa dev_warn +EXPORT_SYMBOL vmlinux 0x83b2f28a security_path_mkdir +EXPORT_SYMBOL vmlinux 0x83c8ab4e fm_set_tx_port_params +EXPORT_SYMBOL vmlinux 0x83d2d15f truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x83d32fa0 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0x83d8a937 qman_fqid_pool_used +EXPORT_SYMBOL vmlinux 0x83d94f44 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x83f6c3e0 splice_from_pipe_end +EXPORT_SYMBOL vmlinux 0x841962f8 param_get_ushort +EXPORT_SYMBOL vmlinux 0x84245a3d dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x842bfa77 mach_mpc85xx_cds +EXPORT_SYMBOL vmlinux 0x8432b319 mach_mpc8572_ds +EXPORT_SYMBOL vmlinux 0x844404cf ISA_DMA_THRESHOLD +EXPORT_SYMBOL vmlinux 0x846ed934 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x8496e345 inet6_add_offload +EXPORT_SYMBOL vmlinux 0x84a316da poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x84a4e1c5 invalidate_partition +EXPORT_SYMBOL vmlinux 0x84b183ae strncmp +EXPORT_SYMBOL vmlinux 0x84bd69bf dq_data_lock +EXPORT_SYMBOL vmlinux 0x84bece2e vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x84d2cc3d pci_fixup_device +EXPORT_SYMBOL vmlinux 0x84d5b45f neigh_for_each +EXPORT_SYMBOL vmlinux 0x84d70075 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x84ed5fbd end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x84f52d33 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x8509c540 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0x8518eca9 param_get_short +EXPORT_SYMBOL vmlinux 0x851e6e56 kill_block_super +EXPORT_SYMBOL vmlinux 0x853bf7c1 param_set_int +EXPORT_SYMBOL vmlinux 0x855b36ca dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x85770d74 pci_select_bars +EXPORT_SYMBOL vmlinux 0x8579dbf6 bio_integrity_get_tag +EXPORT_SYMBOL vmlinux 0x85acb2c8 ppp_input_error +EXPORT_SYMBOL vmlinux 0x85add83e pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85c0b3b4 udp_poll +EXPORT_SYMBOL vmlinux 0x85d736d7 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85e7deb2 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x85f6f611 pci_set_mwi +EXPORT_SYMBOL vmlinux 0x860ee0a1 dev_activate +EXPORT_SYMBOL vmlinux 0x862349d8 start_tty +EXPORT_SYMBOL vmlinux 0x86239f1b init_task +EXPORT_SYMBOL vmlinux 0x8632c816 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x86629a28 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x8675bc0e netlink_ack +EXPORT_SYMBOL vmlinux 0x8689b064 netdev_crit +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x86916fa2 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x869deb51 d_drop +EXPORT_SYMBOL vmlinux 0x86a0cadd sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0x86a4889a kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x86aed893 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x86bab009 request_key +EXPORT_SYMBOL vmlinux 0x86f253a4 stop_tty +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x870bf928 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x87263de0 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x8738c331 inode_dio_wait +EXPORT_SYMBOL vmlinux 0x875e9782 inet_ioctl +EXPORT_SYMBOL vmlinux 0x8779a34f param_ops_byte +EXPORT_SYMBOL vmlinux 0x877da262 netdev_emerg +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x8798e453 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x879ad06c decrementer_clockevent +EXPORT_SYMBOL vmlinux 0x87a0e8b6 bioset_create +EXPORT_SYMBOL vmlinux 0x87a6f145 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x87ea28cc tty_name +EXPORT_SYMBOL vmlinux 0x87ee1eef blk_sync_queue +EXPORT_SYMBOL vmlinux 0x87f35f8e pm860x_page_reg_read +EXPORT_SYMBOL vmlinux 0x881039d0 zlib_inflate +EXPORT_SYMBOL vmlinux 0x88164b0f dev_mc_init +EXPORT_SYMBOL vmlinux 0x881d31a3 clk_get +EXPORT_SYMBOL vmlinux 0x88279f25 cpm_muram_alloc +EXPORT_SYMBOL vmlinux 0x882dab9d sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0x8834396c mod_timer +EXPORT_SYMBOL vmlinux 0x8837eee5 devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0x883a794e ilookup +EXPORT_SYMBOL vmlinux 0x8842aad3 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x88513970 param_set_byte +EXPORT_SYMBOL vmlinux 0x8860895c mmc_remove_host +EXPORT_SYMBOL vmlinux 0x88618cac netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x8886984d ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x88895e98 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x88a7b8e8 neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x88ad616b devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0x88b3407f input_release_device +EXPORT_SYMBOL vmlinux 0x88e780c2 free_task +EXPORT_SYMBOL vmlinux 0x88ed0c18 scsi_block_requests +EXPORT_SYMBOL vmlinux 0x891fbb10 mempool_destroy +EXPORT_SYMBOL vmlinux 0x8922d3d5 scsi_remove_device +EXPORT_SYMBOL vmlinux 0x8923f359 security_path_rmdir +EXPORT_SYMBOL vmlinux 0x893340e5 icmpv6_send +EXPORT_SYMBOL vmlinux 0x8953f8ff __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x8959a2b2 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x89609c2f blk_start_request +EXPORT_SYMBOL vmlinux 0x8967415b scsi_device_put +EXPORT_SYMBOL vmlinux 0x897473df mktime +EXPORT_SYMBOL vmlinux 0x89797060 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x897f061d downgrade_write +EXPORT_SYMBOL vmlinux 0x898a34ab dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x89a6525c skb_queue_tail +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89e0cab5 alloc_fddidev +EXPORT_SYMBOL vmlinux 0x89f31d5c mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a29ff89 blk_delay_queue +EXPORT_SYMBOL vmlinux 0x8a384dca search_binary_handler +EXPORT_SYMBOL vmlinux 0x8a45b29c pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x8a474f08 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a5493bb qman_recovery_cleanup_fq +EXPORT_SYMBOL vmlinux 0x8a5b6794 blk_mq_alloc_reserved_request +EXPORT_SYMBOL vmlinux 0x8a6f0850 notify_change +EXPORT_SYMBOL vmlinux 0x8a7527e1 bm_pool_new +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a876f54 ida_init +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8a9f3b74 set_disk_ro +EXPORT_SYMBOL vmlinux 0x8aacd961 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x8ab4079e atomic64_add +EXPORT_SYMBOL vmlinux 0x8ab68840 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x8abb0cb3 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x8ae4c3c1 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0x8af707f1 crypto_sha256_update +EXPORT_SYMBOL vmlinux 0x8b14cd35 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x8b17bce3 of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0x8b1a7a66 pcie_aspm_enabled +EXPORT_SYMBOL vmlinux 0x8b1c31ef security_path_truncate +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b36058b account_page_writeback +EXPORT_SYMBOL vmlinux 0x8b4f35ef seq_open_private +EXPORT_SYMBOL vmlinux 0x8b5a8401 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b73e2e9 fsnotify_get_group +EXPORT_SYMBOL vmlinux 0x8b79d207 mmc_register_driver +EXPORT_SYMBOL vmlinux 0x8baf3116 percpu_counter_set +EXPORT_SYMBOL vmlinux 0x8bc56252 pci_get_slot +EXPORT_SYMBOL vmlinux 0x8bdc2cb7 qman_query_cgr +EXPORT_SYMBOL vmlinux 0x8be9ac8a bdput +EXPORT_SYMBOL vmlinux 0x8bf2ae1f fsl_lbc_addr +EXPORT_SYMBOL vmlinux 0x8bf7db72 agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0x8c026d8d done_path_create +EXPORT_SYMBOL vmlinux 0x8c02a7e5 sock_create +EXPORT_SYMBOL vmlinux 0x8c1306b0 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c280c42 xfrm_cfg_mutex +EXPORT_SYMBOL vmlinux 0x8c4481c7 audit_log_start +EXPORT_SYMBOL vmlinux 0x8c5fbacc scsi_finish_command +EXPORT_SYMBOL vmlinux 0x8c6008e8 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c682814 padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL vmlinux 0x8c9f73ca ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x8cb096af pagecache_write_end +EXPORT_SYMBOL vmlinux 0x8cbaa0b9 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8cce089e pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x8cd18162 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0x8cd2d5aa jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x8cded151 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x8d015dd4 __bswapdi2 +EXPORT_SYMBOL vmlinux 0x8d2a0fd0 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x8d2e268b param_ops_ulong +EXPORT_SYMBOL vmlinux 0x8d448681 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d842654 agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0x8d8840a3 unlock_new_inode +EXPORT_SYMBOL vmlinux 0x8da66444 softnet_data +EXPORT_SYMBOL vmlinux 0x8da79d04 loop_register_transfer +EXPORT_SYMBOL vmlinux 0x8dbb9c60 freezing_slow_path +EXPORT_SYMBOL vmlinux 0x8de0b5ac mempool_create +EXPORT_SYMBOL vmlinux 0x8de2cd6f bman_irqsource_get +EXPORT_SYMBOL vmlinux 0x8de63417 mach_mpc8544_ds +EXPORT_SYMBOL vmlinux 0x8e0d66f4 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x8e319ac6 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x8e432d64 input_unregister_device +EXPORT_SYMBOL vmlinux 0x8e50e247 ps2_command +EXPORT_SYMBOL vmlinux 0x8e8078d5 phy_register_fixup +EXPORT_SYMBOL vmlinux 0x8e8458cb remove_proc_subtree +EXPORT_SYMBOL vmlinux 0x8e864a86 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x8e888ec3 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x8e8d58da diu_ops +EXPORT_SYMBOL vmlinux 0x8e9f0732 skb_store_bits +EXPORT_SYMBOL vmlinux 0x8ec04552 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x8f02d564 pci_find_capability +EXPORT_SYMBOL vmlinux 0x8f045d1c cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x8f20da0d scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x8f245de2 neigh_parms_release +EXPORT_SYMBOL vmlinux 0x8f371f2d tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x8f4f4a29 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x8f600c0c netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x8f6ac0a5 vmap +EXPORT_SYMBOL vmlinux 0x8f85f835 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x8f939637 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x8fa3d24c framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x8faa4598 of_translate_address +EXPORT_SYMBOL vmlinux 0x8fbf37e0 profile_pc +EXPORT_SYMBOL vmlinux 0x8fe1adaf do_splice_from +EXPORT_SYMBOL vmlinux 0x8fea7b25 sock_from_file +EXPORT_SYMBOL vmlinux 0x8ffa9caf security_inode_permission +EXPORT_SYMBOL vmlinux 0x8ffdb3b8 crc16 +EXPORT_SYMBOL vmlinux 0x90205e8f dm_get_device +EXPORT_SYMBOL vmlinux 0x90400b6e path_get +EXPORT_SYMBOL vmlinux 0x90501868 transfer_to_handler +EXPORT_SYMBOL vmlinux 0x90507ee3 skb_pad +EXPORT_SYMBOL vmlinux 0x906b879f free_mdio_bitbang +EXPORT_SYMBOL vmlinux 0x907e4606 skb_make_writable +EXPORT_SYMBOL vmlinux 0x908b53ed param_set_short +EXPORT_SYMBOL vmlinux 0x90954605 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x90c8f1cc xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x90e146c2 trace_seq_putc +EXPORT_SYMBOL vmlinux 0x90ebac6f pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x911166ba sock_no_connect +EXPORT_SYMBOL vmlinux 0x91206b45 tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x912e788d flush_old_exec +EXPORT_SYMBOL vmlinux 0x913e806f pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x9152c5e1 dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x915e1208 tb_ticks_per_usec +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x91786d7d input_get_keycode +EXPORT_SYMBOL vmlinux 0x919d1163 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x91b573fd blk_make_request +EXPORT_SYMBOL vmlinux 0x91b795fc elv_rb_find +EXPORT_SYMBOL vmlinux 0x91c8502b pci_clear_master +EXPORT_SYMBOL vmlinux 0x91cb8cb5 md_register_thread +EXPORT_SYMBOL vmlinux 0x91f1bbc5 phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0x9213263e call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x9217c5de netpoll_print_options +EXPORT_SYMBOL vmlinux 0x9229af21 netdev_printk +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x92523cab dcache_readdir +EXPORT_SYMBOL vmlinux 0x925520d2 blk_start_plug +EXPORT_SYMBOL vmlinux 0x928e9a74 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0x92a7e6c5 bman_new_pool +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92ba9159 blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x92bc220b lockref_get +EXPORT_SYMBOL vmlinux 0x92bdb6e7 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x92f41bcf mach_p1024_rdb +EXPORT_SYMBOL vmlinux 0x92f9cbf6 revert_creds +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x932d98c1 cpm_muram_dma +EXPORT_SYMBOL vmlinux 0x933e10ec qman_ip_rev +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x93590ae8 phy_print_status +EXPORT_SYMBOL vmlinux 0x935b8821 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x9398af08 uart_register_driver +EXPORT_SYMBOL vmlinux 0x93a671a0 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0x93a6e0b2 io_schedule +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93b84b8c __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x93e4b50e ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0x93f05f7f tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x943b2131 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x94631b98 qman_irqsource_get +EXPORT_SYMBOL vmlinux 0x94853a5f bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94b541b5 cpu_active_mask +EXPORT_SYMBOL vmlinux 0x94b845a9 wireless_spy_update +EXPORT_SYMBOL vmlinux 0x94c48e1c input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x94d5c420 put_disk +EXPORT_SYMBOL vmlinux 0x94d78b7c qman_create_cgr +EXPORT_SYMBOL vmlinux 0x94ef4eab pid_task +EXPORT_SYMBOL vmlinux 0x9508f166 param_ops_bint +EXPORT_SYMBOL vmlinux 0x950a5c90 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x9514151a _mcount +EXPORT_SYMBOL vmlinux 0x952485b1 pme_fd_cmd_nop +EXPORT_SYMBOL vmlinux 0x9524b0ae _outsb +EXPORT_SYMBOL vmlinux 0x952f9953 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x953c1017 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x956f439b mach_p1022_rdk +EXPORT_SYMBOL vmlinux 0x959a06fb init_net +EXPORT_SYMBOL vmlinux 0x959c2ed7 qman_query_fq_np +EXPORT_SYMBOL vmlinux 0x95b3550d dev_get_drvdata +EXPORT_SYMBOL vmlinux 0x95cb929c of_find_all_nodes +EXPORT_SYMBOL vmlinux 0x95e542a8 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x95e6e500 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x9621eb81 mmc_detect_change +EXPORT_SYMBOL vmlinux 0x9622a682 __register_binfmt +EXPORT_SYMBOL vmlinux 0x96313fae scsi_remove_target +EXPORT_SYMBOL vmlinux 0x963fa8b9 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x9641eb5d alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x96431255 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x9646348b mmc_gpio_free_cd +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x965bf765 md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0x96846e42 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x96898769 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x9699cee2 set_binfmt +EXPORT_SYMBOL vmlinux 0x969f877c set_page_dirty +EXPORT_SYMBOL vmlinux 0x96b5931a of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL vmlinux 0x96cbeba5 md_finish_reshape +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96cfee46 vga_get +EXPORT_SYMBOL vmlinux 0x96f9d43e pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x970cf6d4 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x97109e3f sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x97255bdf strlen +EXPORT_SYMBOL vmlinux 0x9748927f _outsw_ns +EXPORT_SYMBOL vmlinux 0x975376fe bio_integrity_free +EXPORT_SYMBOL vmlinux 0x975454a9 tty_kref_put +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x9763bf08 pci_request_region +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a60e3d param_get_bool +EXPORT_SYMBOL vmlinux 0x97a87c16 inet_frags_init_net +EXPORT_SYMBOL vmlinux 0x97aa4b04 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x97b4500c __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x97b71c5a filemap_fdatawait +EXPORT_SYMBOL vmlinux 0x97ffb370 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x9806e54c setattr_copy +EXPORT_SYMBOL vmlinux 0x981661a0 __idr_get_new_above +EXPORT_SYMBOL vmlinux 0x981d8d61 elevator_exit +EXPORT_SYMBOL vmlinux 0x982725fe tty_lock +EXPORT_SYMBOL vmlinux 0x982e4d60 pci_restore_state +EXPORT_SYMBOL vmlinux 0x9865758a xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x98668903 pme_sw_flow_init +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x9879fe5d blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x987b9654 kobject_del +EXPORT_SYMBOL vmlinux 0x9887dcb9 net_dma_find_channel +EXPORT_SYMBOL vmlinux 0x98b2b6e5 xfrm_register_km +EXPORT_SYMBOL vmlinux 0x98d6d158 eth_rebuild_header +EXPORT_SYMBOL vmlinux 0x98d720be pcie_set_mps +EXPORT_SYMBOL vmlinux 0x98fa21b0 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x98fe7882 DMA_MODE_READ +EXPORT_SYMBOL vmlinux 0x99133663 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x9924e4ad free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x994eb535 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x998498e2 tty_do_resize +EXPORT_SYMBOL vmlinux 0x9986a248 __lru_cache_add +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99ab4190 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x99abb92b insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x99afe916 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x99bb8806 memmove +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99dbc7f9 __find_get_block +EXPORT_SYMBOL vmlinux 0x99eace08 rfkill_alloc +EXPORT_SYMBOL vmlinux 0x9a1bf350 genphy_suspend +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a27cb20 free_netdev +EXPORT_SYMBOL vmlinux 0x9a626734 ftrace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x9a65ace6 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x9a65b68b scsi_adjust_queue_depth +EXPORT_SYMBOL vmlinux 0x9a900eae netif_rx_ni +EXPORT_SYMBOL vmlinux 0x9a9bd0f6 mac_find_mode +EXPORT_SYMBOL vmlinux 0x9a9dcb5f of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0x9ab90248 sock_release +EXPORT_SYMBOL vmlinux 0x9ac220d4 agp_put_bridge +EXPORT_SYMBOL vmlinux 0x9af25dbf dquot_disable +EXPORT_SYMBOL vmlinux 0x9b07d026 del_gendisk +EXPORT_SYMBOL vmlinux 0x9b2725d3 mach_p1023_rdb +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b464f04 pci_release_region +EXPORT_SYMBOL vmlinux 0x9b62a9bd pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0x9b63bb71 qdisc_destroy +EXPORT_SYMBOL vmlinux 0x9b68be83 dcb_setapp +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9b9ec2fe mpage_readpage +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9bfb93c0 ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0x9c167c06 proc_symlink +EXPORT_SYMBOL vmlinux 0x9c1e7c57 vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0x9c2092b9 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x9c389995 of_scan_pci_bridge +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c4def48 pme_fd_cmd_scan +EXPORT_SYMBOL vmlinux 0x9c5e99c0 blk_put_request +EXPORT_SYMBOL vmlinux 0x9c614b2e nonseekable_open +EXPORT_SYMBOL vmlinux 0x9c6734ba i2c_bit_algo +EXPORT_SYMBOL vmlinux 0x9c6819ed tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x9c7951f1 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x9ca4b223 tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cae41cf remove_proc_entry +EXPORT_SYMBOL vmlinux 0x9cb15aef generic_file_fsync +EXPORT_SYMBOL vmlinux 0x9cc4db27 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x9cc8d60f pci_iomap +EXPORT_SYMBOL vmlinux 0x9cc9281e inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x9cc99288 fm_unbind +EXPORT_SYMBOL vmlinux 0x9cd78347 dev_get_stats +EXPORT_SYMBOL vmlinux 0x9ce3f83f nvram_write_byte +EXPORT_SYMBOL vmlinux 0x9ceb163c memcpy_toiovec +EXPORT_SYMBOL vmlinux 0x9cef3cc5 __idr_remove_all +EXPORT_SYMBOL vmlinux 0x9cfd56c5 scsi_print_status +EXPORT_SYMBOL vmlinux 0x9d07ee7b tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d14983a ppc_enable_pmcs +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d58349a of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0x9d5c0212 prepare_creds +EXPORT_SYMBOL vmlinux 0x9d5f5da0 tty_lock_pair +EXPORT_SYMBOL vmlinux 0x9d669763 memcpy +EXPORT_SYMBOL vmlinux 0x9d72229b fsl_ifc_find +EXPORT_SYMBOL vmlinux 0x9d7ce8dd _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x9d90f95f __crc32c_le_combine +EXPORT_SYMBOL vmlinux 0x9da08865 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0x9da0d642 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0x9da17bb6 get_tz_trend +EXPORT_SYMBOL vmlinux 0x9daa76d7 bioset_free +EXPORT_SYMBOL vmlinux 0x9dcac822 capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0x9dd4efd9 lock_fb_info +EXPORT_SYMBOL vmlinux 0x9ddbf874 skb_copy_bits +EXPORT_SYMBOL vmlinux 0x9ddefa7d dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x9dee9a84 cpm2_immr +EXPORT_SYMBOL vmlinux 0x9df0178c sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x9dfc1edd bman_irqsource_add +EXPORT_SYMBOL vmlinux 0x9dfe7307 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e15c5b3 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x9e2000a7 memcpy_toiovecend +EXPORT_SYMBOL vmlinux 0x9e3e6b4c phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x9e44b9b7 of_get_next_available_child +EXPORT_SYMBOL vmlinux 0x9e4b3747 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e57aa5a xfrm_register_type +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e656f15 clear_user_page +EXPORT_SYMBOL vmlinux 0x9e74056f ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x9e7a24b0 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x9e96ed6e netlink_broadcast +EXPORT_SYMBOL vmlinux 0x9e9f1714 __bitmap_andnot +EXPORT_SYMBOL vmlinux 0x9ea0ad49 __sg_free_table +EXPORT_SYMBOL vmlinux 0x9eb77a45 kern_path_create +EXPORT_SYMBOL vmlinux 0x9eb83a57 generic_setxattr +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ed2eec7 param_set_ushort +EXPORT_SYMBOL vmlinux 0x9ed685ee iov_iter_advance +EXPORT_SYMBOL vmlinux 0x9f0c5ecf fm_set_rx_port_params +EXPORT_SYMBOL vmlinux 0x9f221ed5 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x9f2bdaac __bitmap_or +EXPORT_SYMBOL vmlinux 0x9f3ac7a2 pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x9f463d4a unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f55c07a napi_gro_frags +EXPORT_SYMBOL vmlinux 0x9f670d90 netdev_features_change +EXPORT_SYMBOL vmlinux 0x9f684c9d inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x9f6c67f0 agp_bridge +EXPORT_SYMBOL vmlinux 0x9f6d9fe9 __skb_dst_set_noref +EXPORT_SYMBOL vmlinux 0x9f977151 input_set_abs_params +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9faab431 scsi_register_driver +EXPORT_SYMBOL vmlinux 0x9fb3dd30 memcpy_fromiovec +EXPORT_SYMBOL vmlinux 0x9fbed79d qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x9fcb07c3 input_register_device +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9fdfa1f9 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x9ff63731 icmp_send +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa002b09e inet_confirm_addr +EXPORT_SYMBOL vmlinux 0xa021d9e5 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0xa02239a4 dev_mc_del +EXPORT_SYMBOL vmlinux 0xa02b5fa5 bio_split +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa04d6603 pci_request_regions +EXPORT_SYMBOL vmlinux 0xa0560158 scsi_allocate_command +EXPORT_SYMBOL vmlinux 0xa058674c __generic_file_aio_write +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa068877a seq_escape +EXPORT_SYMBOL vmlinux 0xa06df9e1 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0xa07448e1 mnt_pin +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa0813980 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0xa0966e4b unregister_shrinker +EXPORT_SYMBOL vmlinux 0xa09f8be2 qman_affine_cpus +EXPORT_SYMBOL vmlinux 0xa0a29b8b scm_detach_fds +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0b46833 generic_write_checks +EXPORT_SYMBOL vmlinux 0xa0bb5e84 blk_end_request +EXPORT_SYMBOL vmlinux 0xa0c5ebd4 key_validate +EXPORT_SYMBOL vmlinux 0xa0ceef51 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xa0d6dc84 uart_update_timeout +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 0xa1028b2f udp_lib_get_port +EXPORT_SYMBOL vmlinux 0xa1046768 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa11aca09 mount_single +EXPORT_SYMBOL vmlinux 0xa1206e5a swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa163747d vga_tryget +EXPORT_SYMBOL vmlinux 0xa16b1bf7 inet6_bind +EXPORT_SYMBOL vmlinux 0xa184a6d2 i2c_use_client +EXPORT_SYMBOL vmlinux 0xa1977df7 iov_iter_copy_from_user +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1c99385 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xa1dbd047 inet6_ioctl +EXPORT_SYMBOL vmlinux 0xa1dc9e3a request_key_async +EXPORT_SYMBOL vmlinux 0xa1f8fe75 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xa20ce1b8 net_msg_warn +EXPORT_SYMBOL vmlinux 0xa20ef3f1 skb_put +EXPORT_SYMBOL vmlinux 0xa241bfa0 blk_recount_segments +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa288918e of_dev_put +EXPORT_SYMBOL vmlinux 0xa28a2ace ipmi_set_gets_events +EXPORT_SYMBOL vmlinux 0xa28eeb03 __genl_register_family +EXPORT_SYMBOL vmlinux 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL vmlinux 0xa2bbed37 crash_shutdown_register +EXPORT_SYMBOL vmlinux 0xa2ebae74 may_umount_tree +EXPORT_SYMBOL vmlinux 0xa2ef34d7 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0xa2fccfc2 sock_wake_async +EXPORT_SYMBOL vmlinux 0xa303d1ff dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0xa31e0535 pci_pme_active +EXPORT_SYMBOL vmlinux 0xa332464a of_get_cpu_node +EXPORT_SYMBOL vmlinux 0xa335945c padata_do_serial +EXPORT_SYMBOL vmlinux 0xa34f1ef5 crc32_le +EXPORT_SYMBOL vmlinux 0xa3533b8c free_user_ns +EXPORT_SYMBOL vmlinux 0xa35de80f ipv4_config +EXPORT_SYMBOL vmlinux 0xa3715c31 __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0xa37bfc0e lease_get_mtime +EXPORT_SYMBOL vmlinux 0xa381944f dql_reset +EXPORT_SYMBOL vmlinux 0xa38e691a ioremap_bot +EXPORT_SYMBOL vmlinux 0xa39b4cf2 udelay +EXPORT_SYMBOL vmlinux 0xa39cdbb8 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0xa3a5248b set_security_override +EXPORT_SYMBOL vmlinux 0xa3abc422 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xa3b577e8 i2c_register_driver +EXPORT_SYMBOL vmlinux 0xa3b8e627 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0xa3e03024 kmap_atomic_prot +EXPORT_SYMBOL vmlinux 0xa3e53377 __nlmsg_put +EXPORT_SYMBOL vmlinux 0xa3e75545 flush_tlb_kernel_range +EXPORT_SYMBOL vmlinux 0xa405b134 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0xa423d9ff __bforget +EXPORT_SYMBOL vmlinux 0xa42ac0e4 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0xa43b1297 vscnprintf +EXPORT_SYMBOL vmlinux 0xa43b9539 memcpy_fromiovecend +EXPORT_SYMBOL vmlinux 0xa44b7cdf bprm_change_interp +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa49b5e03 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0xa49d8b85 blk_mq_insert_request +EXPORT_SYMBOL vmlinux 0xa4a94d26 find_next_bit_le +EXPORT_SYMBOL vmlinux 0xa4b0edb5 kthread_bind +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4ff7e6a mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0xa5037635 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0xa5070b99 ata_print_version +EXPORT_SYMBOL vmlinux 0xa5173b15 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0xa51b2d46 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa56039c4 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xa56bd3df kunmap_high +EXPORT_SYMBOL vmlinux 0xa57dff84 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa59b78e1 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0xa5a20c30 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0xa5b1722f padata_alloc +EXPORT_SYMBOL vmlinux 0xa5c65e77 ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0xa60f2f3c alloc_anon_inode +EXPORT_SYMBOL vmlinux 0xa619c181 pme_ctx_reconfigure_tx +EXPORT_SYMBOL vmlinux 0xa6282f0e agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0xa628ac24 get_disk +EXPORT_SYMBOL vmlinux 0xa63069f9 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0xa6384b7f abx500_register_ops +EXPORT_SYMBOL vmlinux 0xa63a2f9b param_get_ulong +EXPORT_SYMBOL vmlinux 0xa64bd1d8 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0xa65972b8 _memcpy_toio +EXPORT_SYMBOL vmlinux 0xa66dabdf agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0xa6715115 do_settimeofday +EXPORT_SYMBOL vmlinux 0xa67465bc ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa675b56b skb_push +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6970398 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0xa69c1fed bio_copy_data +EXPORT_SYMBOL vmlinux 0xa6af1a94 pme2_exclusive_unset +EXPORT_SYMBOL vmlinux 0xa6b96c10 unlock_rename +EXPORT_SYMBOL vmlinux 0xa6c5f287 devm_iounmap +EXPORT_SYMBOL vmlinux 0xa6caa63c proc_remove +EXPORT_SYMBOL vmlinux 0xa6ebbbe4 posix_lock_file +EXPORT_SYMBOL vmlinux 0xa6f2347c ipmi_smi_watcher_unregister +EXPORT_SYMBOL vmlinux 0xa6f31235 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0xa70a1d03 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0xa718fd60 d_alloc_name +EXPORT_SYMBOL vmlinux 0xa71e7463 __first_cpu +EXPORT_SYMBOL vmlinux 0xa720678c lg_global_lock +EXPORT_SYMBOL vmlinux 0xa72da99d blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa73fc98f of_n_addr_cells +EXPORT_SYMBOL vmlinux 0xa781ddbc xfrm_state_flush +EXPORT_SYMBOL vmlinux 0xa78d9eb7 slhc_uncompress +EXPORT_SYMBOL vmlinux 0xa79ec147 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0xa7c0c4b9 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0xa7c8003e skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0xa7ce7ecb __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xa7cf7ec8 max8998_write_reg +EXPORT_SYMBOL vmlinux 0xa7e94902 kmap_pte +EXPORT_SYMBOL vmlinux 0xa7fd0146 security_inode_init_security +EXPORT_SYMBOL vmlinux 0xa81be51b kern_unmount +EXPORT_SYMBOL vmlinux 0xa81de2a3 mount_ns +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa826e3dc __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0xa8326b11 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0xa833055e __scsi_add_device +EXPORT_SYMBOL vmlinux 0xa8337b72 blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa89464b7 __ashldi3 +EXPORT_SYMBOL vmlinux 0xa8950b1f fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0xa8991eda sk_wait_data +EXPORT_SYMBOL vmlinux 0xa8a6f639 __check_region +EXPORT_SYMBOL vmlinux 0xa8ccf264 register_nls +EXPORT_SYMBOL vmlinux 0xa8ee226f devm_request_and_ioremap +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa9087d25 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa9273e1a epapr_hypercall_start +EXPORT_SYMBOL vmlinux 0xa933a442 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0xa9571d6d DMA_MODE_WRITE +EXPORT_SYMBOL vmlinux 0xa96b9627 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0xa97f48bc gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0xa97feae7 agp_backend_release +EXPORT_SYMBOL vmlinux 0xa99011f6 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0xa99b9bc7 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0xa9b63345 of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0xa9bb2e14 swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0xa9c50590 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0xa9f66a28 free_buffer_head +EXPORT_SYMBOL vmlinux 0xa9fd599b security_path_chmod +EXPORT_SYMBOL vmlinux 0xa9fda4a3 override_creds +EXPORT_SYMBOL vmlinux 0xaa1b01e9 dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0xaa46e87e lg_local_unlock +EXPORT_SYMBOL vmlinux 0xaa4b470a get_super +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 0xaa9087c0 param_ops_string +EXPORT_SYMBOL vmlinux 0xaa956681 kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0xaaab8067 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0xaaac3b52 sock_i_uid +EXPORT_SYMBOL vmlinux 0xaaae8773 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0xaacb645a udp_sendmsg +EXPORT_SYMBOL vmlinux 0xaad69e23 qman_fq_state +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab116098 iterate_supers_type +EXPORT_SYMBOL vmlinux 0xab49b086 clocksource_unregister +EXPORT_SYMBOL vmlinux 0xab694444 bsearch +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab6d2ae0 pci_write_vpd +EXPORT_SYMBOL vmlinux 0xab6ea283 locks_remove_posix +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab7920ee touch_buffer +EXPORT_SYMBOL vmlinux 0xab92fe0e d_validate +EXPORT_SYMBOL vmlinux 0xab9c993f mmc_get_card +EXPORT_SYMBOL vmlinux 0xaba89373 led_set_brightness +EXPORT_SYMBOL vmlinux 0xabc6dd63 cpufreq_sysfs_create_file +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabcaa81c d_add_ci +EXPORT_SYMBOL vmlinux 0xabd0c91c rtc_time_to_tm +EXPORT_SYMBOL vmlinux 0xabd20aae security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0xabf0f964 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac0da514 may_umount +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac26b820 _raw_write_lock +EXPORT_SYMBOL vmlinux 0xac382810 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0xac3a1167 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0xac84183c fb_class +EXPORT_SYMBOL vmlinux 0xac89d4ce dentry_path_raw +EXPORT_SYMBOL vmlinux 0xac9e101a qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacb08364 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xacb34962 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0xacba6b71 dquot_free_inode +EXPORT_SYMBOL vmlinux 0xacc5b5d2 csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad0a6e0a flex_array_prealloc +EXPORT_SYMBOL vmlinux 0xad0cda17 set_groups +EXPORT_SYMBOL vmlinux 0xad1201cd __bio_clone +EXPORT_SYMBOL vmlinux 0xad169a8c mmc_request_done +EXPORT_SYMBOL vmlinux 0xad286dd4 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xad3b6fda uart_remove_one_port +EXPORT_SYMBOL vmlinux 0xad438445 nla_reserve +EXPORT_SYMBOL vmlinux 0xad46dec2 of_count_phandle_with_args +EXPORT_SYMBOL vmlinux 0xad6d093d d_invalidate +EXPORT_SYMBOL vmlinux 0xad7e811b kill_fasync +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad90f33a fm_port_get_base_addr +EXPORT_SYMBOL vmlinux 0xadaceefd mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0xadbf5d12 kmap_to_page +EXPORT_SYMBOL vmlinux 0xadc8df4e filp_open +EXPORT_SYMBOL vmlinux 0xadce54d0 input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0xadcea0a5 swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0xadd1e971 alignment_exception +EXPORT_SYMBOL vmlinux 0xadd2bebf register_netdevice +EXPORT_SYMBOL vmlinux 0xaddd4770 __debugger_iabr_match +EXPORT_SYMBOL vmlinux 0xadf0811d get_baudrate +EXPORT_SYMBOL vmlinux 0xae320f4f pci_enable_ido +EXPORT_SYMBOL vmlinux 0xae545f06 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xae59453d blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xae59a3b0 fm_port_bind +EXPORT_SYMBOL vmlinux 0xae5e88b3 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0xae671255 local_flush_tlb_mm +EXPORT_SYMBOL vmlinux 0xae68e7d6 dquot_quota_off +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae8f5383 pci_scan_bus +EXPORT_SYMBOL vmlinux 0xaea79b23 d_path +EXPORT_SYMBOL vmlinux 0xaec11a90 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0xaec526f1 pme_ctx_scan +EXPORT_SYMBOL vmlinux 0xaec655c7 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0xaeec19db mdiobus_read +EXPORT_SYMBOL vmlinux 0xaef9c0e5 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xaf05b91b of_device_is_available +EXPORT_SYMBOL vmlinux 0xaf063510 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xaf16d558 cdev_del +EXPORT_SYMBOL vmlinux 0xaf218756 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0xaf2d872c prepare_to_wait +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf43be82 __pskb_copy +EXPORT_SYMBOL vmlinux 0xaf49919e d_set_d_op +EXPORT_SYMBOL vmlinux 0xaf64ad0d zlib_deflate +EXPORT_SYMBOL vmlinux 0xaf6a0f53 __alloc_skb +EXPORT_SYMBOL vmlinux 0xaf91d89f __kernel_param_lock +EXPORT_SYMBOL vmlinux 0xaf9a4ae9 bio_integrity_split +EXPORT_SYMBOL vmlinux 0xafac437f max8925_reg_write +EXPORT_SYMBOL vmlinux 0xafad493b param_ops_ushort +EXPORT_SYMBOL vmlinux 0xafafc493 scsi_register +EXPORT_SYMBOL vmlinux 0xafbcaaf9 clone_cred +EXPORT_SYMBOL vmlinux 0xafd01e14 qman_retire_fq +EXPORT_SYMBOL vmlinux 0xafd1ffad __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0xafd68c33 flex_array_free +EXPORT_SYMBOL vmlinux 0xafd70bf2 qman_dca +EXPORT_SYMBOL vmlinux 0xafff3d1d mempool_alloc +EXPORT_SYMBOL vmlinux 0xb00c9690 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0xb00cae17 framebuffer_release +EXPORT_SYMBOL vmlinux 0xb03b5a4c delete_from_page_cache +EXPORT_SYMBOL vmlinux 0xb05bb6d6 blkdev_put +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb087a1f3 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0xb09c303e phy_attach_direct +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0ad23d7 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0xb0b847ac __bitmap_full +EXPORT_SYMBOL vmlinux 0xb0b9b582 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0xb0c98de4 netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0e8a44e udp_seq_open +EXPORT_SYMBOL vmlinux 0xb0ffda2f blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xb106727d pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0xb10bb652 loop_backing_file +EXPORT_SYMBOL vmlinux 0xb1216e61 gen10g_restart_aneg +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb136257d fixed_size_llseek +EXPORT_SYMBOL vmlinux 0xb155b848 vfs_setpos +EXPORT_SYMBOL vmlinux 0xb156805c skb_queue_purge +EXPORT_SYMBOL vmlinux 0xb156c609 mfd_add_devices +EXPORT_SYMBOL vmlinux 0xb15bd8fa tb_ticks_per_sec +EXPORT_SYMBOL vmlinux 0xb15c63e0 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0xb16209f0 file_ns_capable +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb16daed0 d_alloc +EXPORT_SYMBOL vmlinux 0xb1915aa2 __brelse +EXPORT_SYMBOL vmlinux 0xb19760c3 bitmap_onto +EXPORT_SYMBOL vmlinux 0xb1a91f33 backlight_force_update +EXPORT_SYMBOL vmlinux 0xb1c13940 pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1c6e787 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0xb1cae014 bdevname +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1d72b47 bitmap_end_sync +EXPORT_SYMBOL vmlinux 0xb1db9e4e param_get_invbool +EXPORT_SYMBOL vmlinux 0xb1f03b11 mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0xb1f98d3c register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xb20e32ff simple_transaction_set +EXPORT_SYMBOL vmlinux 0xb2264a39 mutex_lock +EXPORT_SYMBOL vmlinux 0xb233762c atomic64_set +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb273de85 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0xb280bb00 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0xb2acf19d pme_ctx_finish +EXPORT_SYMBOL vmlinux 0xb2b94674 __crc32c_le +EXPORT_SYMBOL vmlinux 0xb2baec0c tty_port_init +EXPORT_SYMBOL vmlinux 0xb2bce994 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2d48a2e queue_work_on +EXPORT_SYMBOL vmlinux 0xb304acff ida_get_new_above +EXPORT_SYMBOL vmlinux 0xb32d8f74 inet_addr_type +EXPORT_SYMBOL vmlinux 0xb332e248 __pagevec_release +EXPORT_SYMBOL vmlinux 0xb33d8fa9 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0xb35bb19b seq_puts +EXPORT_SYMBOL vmlinux 0xb35e180c netif_rx +EXPORT_SYMBOL vmlinux 0xb366b249 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0xb39880a0 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0xb3b374ba ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0xb3b68ea3 make_bad_inode +EXPORT_SYMBOL vmlinux 0xb3d123d6 fm_get_tx_port_channel +EXPORT_SYMBOL vmlinux 0xb3dc62c4 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0xb3e2f5f5 fddi_type_trans +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb3f95894 init_buffer +EXPORT_SYMBOL vmlinux 0xb420409c iget_failed +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb42dcefc agp_free_page_array +EXPORT_SYMBOL vmlinux 0xb445d3b3 get_phy_device +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb473ee02 poll_freewait +EXPORT_SYMBOL vmlinux 0xb478817b __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xb4857a18 nobh_writepage +EXPORT_SYMBOL vmlinux 0xb49114b3 of_match_device +EXPORT_SYMBOL vmlinux 0xb4b121b1 __lock_buffer +EXPORT_SYMBOL vmlinux 0xb4bbcf35 pci_remove_bus +EXPORT_SYMBOL vmlinux 0xb4cc0fa6 page_symlink +EXPORT_SYMBOL vmlinux 0xb4e42cfc inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0xb4f0a4df scsi_init_io +EXPORT_SYMBOL vmlinux 0xb525e83b pci_bus_type +EXPORT_SYMBOL vmlinux 0xb54533f7 usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xb563b80c qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5bbd95d dev_open +EXPORT_SYMBOL vmlinux 0xb5d9454c printk_emit +EXPORT_SYMBOL vmlinux 0xb5f876d3 pci_scan_bus_parented +EXPORT_SYMBOL vmlinux 0xb606d640 kill_bdev +EXPORT_SYMBOL vmlinux 0xb62305ae scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb6394d4b param_set_bint +EXPORT_SYMBOL vmlinux 0xb646f814 always_delete_dentry +EXPORT_SYMBOL vmlinux 0xb64d268f qman_schedule_fq +EXPORT_SYMBOL vmlinux 0xb6599b9a machine_check_exception +EXPORT_SYMBOL vmlinux 0xb66d1a4f scsi_host_put +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb67d4f73 scsi_calculate_bounce_limit +EXPORT_SYMBOL vmlinux 0xb67e6541 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0xb6822a33 radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xb684e412 mach_p1020_mbg_pc +EXPORT_SYMBOL vmlinux 0xb6896671 crc_t10dif +EXPORT_SYMBOL vmlinux 0xb690760d kernel_getsockname +EXPORT_SYMBOL vmlinux 0xb6911f7c ndisc_mc_map +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6b46a7c param_ops_int +EXPORT_SYMBOL vmlinux 0xb6be7043 load_nls +EXPORT_SYMBOL vmlinux 0xb6bfe7b0 ip_cmsg_recv +EXPORT_SYMBOL vmlinux 0xb6c5a973 scsi_show_result +EXPORT_SYMBOL vmlinux 0xb6d2eafb qman_irqsource_add +EXPORT_SYMBOL vmlinux 0xb6e08828 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0xb6e57286 mach_xes_mpc8548 +EXPORT_SYMBOL vmlinux 0xb6e5b369 __dev_remove_offload +EXPORT_SYMBOL vmlinux 0xb707e238 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0xb727d1b4 __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xb7321453 padata_start +EXPORT_SYMBOL vmlinux 0xb73cd89b jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0xb753bcc8 __ashrdi3 +EXPORT_SYMBOL vmlinux 0xb770be3e __percpu_counter_add +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb782f386 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0xb7908938 bio_reset +EXPORT_SYMBOL vmlinux 0xb79a4e1a store_fp_state +EXPORT_SYMBOL vmlinux 0xb7a99781 __irq_regs +EXPORT_SYMBOL vmlinux 0xb7b61546 crc32_be +EXPORT_SYMBOL vmlinux 0xb7c3a3fe gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0xb7c6db70 sysctl_max_skb_frags +EXPORT_SYMBOL vmlinux 0xb7e6a37a tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0xb7ea304d page_follow_link_light +EXPORT_SYMBOL vmlinux 0xb7fde971 pme_map +EXPORT_SYMBOL vmlinux 0xb8088a3b mpage_writepage +EXPORT_SYMBOL vmlinux 0xb80f4c8d input_register_handle +EXPORT_SYMBOL vmlinux 0xb81960ca snprintf +EXPORT_SYMBOL vmlinux 0xb835b3e4 radix_tree_prev_hole +EXPORT_SYMBOL vmlinux 0xb83ba293 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xb83bca8a call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0xb83d802f sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0xb8480284 kfree_skb_list +EXPORT_SYMBOL vmlinux 0xb85aeda1 sk_net_capable +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb8a42ac6 sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0xb8a95426 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xb8c9a648 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0xb8cd71ee devm_clk_get +EXPORT_SYMBOL vmlinux 0xb8d73e97 param_set_uint +EXPORT_SYMBOL vmlinux 0xb8e038a1 set_anon_super +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb8f37538 unregister_md_personality +EXPORT_SYMBOL vmlinux 0xb927c2ca xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0xb95ecb60 fsl_ifc_ctrl_dev +EXPORT_SYMBOL vmlinux 0xb966b03e bdget +EXPORT_SYMBOL vmlinux 0xb98a0185 rtc_tm_to_time +EXPORT_SYMBOL vmlinux 0xb9d0d91b dump_emit +EXPORT_SYMBOL vmlinux 0xb9d29302 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0xb9d5e027 qman_eqcr_is_empty +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9f71283 inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0xba374145 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0xba3b0126 __pci_enable_wake +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba4ba181 fb_show_logo +EXPORT_SYMBOL vmlinux 0xba76ff65 mach_corenet_generic +EXPORT_SYMBOL vmlinux 0xba7bb1ca remap_pfn_range +EXPORT_SYMBOL vmlinux 0xba94452f scsi_print_sense +EXPORT_SYMBOL vmlinux 0xba973a91 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0xba9765eb d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0xbaadc6e3 __free_pages +EXPORT_SYMBOL vmlinux 0xbab06724 nlmsg_notify +EXPORT_SYMBOL vmlinux 0xbaf3b84f pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0xbb0cfeca kset_unregister +EXPORT_SYMBOL vmlinux 0xbb154218 pipe_unlock +EXPORT_SYMBOL vmlinux 0xbb189cad disallow_signal +EXPORT_SYMBOL vmlinux 0xbb20a45a sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0xbb517e31 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb713e6d sk_filter_release_rcu +EXPORT_SYMBOL vmlinux 0xbb773f89 tcf_generic_walker +EXPORT_SYMBOL vmlinux 0xbb8f8c52 security_inode_readlink +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbbe67d94 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0xbbeef804 da903x_query_status +EXPORT_SYMBOL vmlinux 0xbbf696bd bio_uncopy_user +EXPORT_SYMBOL vmlinux 0xbc00e819 blkdev_fsync +EXPORT_SYMBOL vmlinux 0xbc02bc93 tty_port_destroy +EXPORT_SYMBOL vmlinux 0xbc0e00db padata_alloc_possible +EXPORT_SYMBOL vmlinux 0xbc11ecc0 __frontswap_load +EXPORT_SYMBOL vmlinux 0xbc17cad4 tty_port_close_end +EXPORT_SYMBOL vmlinux 0xbc1fdf75 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0xbc316de4 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0xbc3e5cc3 security_path_unlink +EXPORT_SYMBOL vmlinux 0xbc3f6afa down_read +EXPORT_SYMBOL vmlinux 0xbc57036c ip_defrag +EXPORT_SYMBOL vmlinux 0xbc62df53 request_firmware +EXPORT_SYMBOL vmlinux 0xbc64d09d generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0xbc97ae2b jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcc3f29f vm_insert_page +EXPORT_SYMBOL vmlinux 0xbccdc2f6 flex_array_put +EXPORT_SYMBOL vmlinux 0xbcd37bbe sock_update_classid +EXPORT_SYMBOL vmlinux 0xbcdd17ba __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xbcdedba7 of_get_mac_address +EXPORT_SYMBOL vmlinux 0xbce2ce96 of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0xbcf28f2d dquot_commit_info +EXPORT_SYMBOL vmlinux 0xbd1c1440 pcie_get_mps +EXPORT_SYMBOL vmlinux 0xbd1e55bb __module_put_and_exit +EXPORT_SYMBOL vmlinux 0xbd4420e4 blk_rq_init +EXPORT_SYMBOL vmlinux 0xbd61b17b sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xbd803510 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xbd897a1e kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0xbd9e5d49 __lshrdi3 +EXPORT_SYMBOL vmlinux 0xbda22917 dev_set_mtu +EXPORT_SYMBOL vmlinux 0xbdba9828 hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xbdc69c70 single_open +EXPORT_SYMBOL vmlinux 0xbdc8ecd7 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0xbdd01d66 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0xbdf829b1 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0xbdfc3f5f __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0xbe05176d devfreq_add_governor +EXPORT_SYMBOL vmlinux 0xbe0e5118 nla_memcmp +EXPORT_SYMBOL vmlinux 0xbe2c0274 add_timer +EXPORT_SYMBOL vmlinux 0xbe308863 blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0xbe342720 grab_cache_page_nowait +EXPORT_SYMBOL vmlinux 0xbe3f9062 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0xbe41b038 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0xbe489c43 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0xbe77aebe down_write_trylock +EXPORT_SYMBOL vmlinux 0xbec25473 of_parse_phandle +EXPORT_SYMBOL vmlinux 0xbece1857 module_refcount +EXPORT_SYMBOL vmlinux 0xbee6b9c7 adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf0c76d5 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0xbf2bce19 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0xbf45febe i2c_release_client +EXPORT_SYMBOL vmlinux 0xbf786fbf blkdev_get +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfaf83b9 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0xbfafed96 seq_vprintf +EXPORT_SYMBOL vmlinux 0xbfb500bc cleancache_register_ops +EXPORT_SYMBOL vmlinux 0xbfb5b8cf kmem_cache_create +EXPORT_SYMBOL vmlinux 0xbfb8b0b7 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfc23384 file_update_time +EXPORT_SYMBOL vmlinux 0xbfe274ec generic_file_remap_pages +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xc024347f __pci_register_driver +EXPORT_SYMBOL vmlinux 0xc02cf69b clkdev_drop +EXPORT_SYMBOL vmlinux 0xc068440e __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xc071dd5c vmalloc_to_page +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0780243 dqget +EXPORT_SYMBOL vmlinux 0xc07d9b09 thaw_bdev +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc083371b netif_carrier_off +EXPORT_SYMBOL vmlinux 0xc09f1f41 elevator_init +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0b4fa25 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0xc0b55bb3 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0xc0b9b36b dev_deactivate +EXPORT_SYMBOL vmlinux 0xc0ba8bd9 eth_change_mtu +EXPORT_SYMBOL vmlinux 0xc0d32e60 netpoll_rx_enable +EXPORT_SYMBOL vmlinux 0xc0e83c86 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0xc1097707 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0xc1140412 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0xc12b1c89 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0xc12ec3a6 dns_query +EXPORT_SYMBOL vmlinux 0xc131f1f5 inet_stream_connect +EXPORT_SYMBOL vmlinux 0xc149852e scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0xc152fa26 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0xc155a607 sk_stop_timer +EXPORT_SYMBOL vmlinux 0xc16d4bf4 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0xc196a9fc dev_uc_init +EXPORT_SYMBOL vmlinux 0xc1b82d22 register_shrinker +EXPORT_SYMBOL vmlinux 0xc1bdeb87 genphy_resume +EXPORT_SYMBOL vmlinux 0xc1c2dd09 __hw_addr_flush +EXPORT_SYMBOL vmlinux 0xc1cffe93 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0xc1fe5ed6 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0xc1fead8c vc_resize +EXPORT_SYMBOL vmlinux 0xc1ff7f08 dev_crit +EXPORT_SYMBOL vmlinux 0xc203560b pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0xc20d41b3 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0xc2165b13 dev_driver_string +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc256e762 __bitmap_equal +EXPORT_SYMBOL vmlinux 0xc2732305 tcf_hash_check +EXPORT_SYMBOL vmlinux 0xc29e94b2 inc_nlink +EXPORT_SYMBOL vmlinux 0xc2a3c728 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0xc2b2dd75 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0xc2b6fa41 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0xc2bddb76 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0xc2bdfab0 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0xc2d711e1 krealloc +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2eb5bee elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc3037fc9 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0xc3496438 remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0xc36303f8 inet6_del_offload +EXPORT_SYMBOL vmlinux 0xc368849f nvram_sync +EXPORT_SYMBOL vmlinux 0xc3835582 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0xc396ba2b mmc_erase +EXPORT_SYMBOL vmlinux 0xc3b1d5aa blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0xc3cfa928 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0xc3fd8d53 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0xc41f0516 node_states +EXPORT_SYMBOL vmlinux 0xc45755de find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0xc4636e66 key_reject_and_link +EXPORT_SYMBOL vmlinux 0xc4708199 cpm_muram_addr +EXPORT_SYMBOL vmlinux 0xc47cdf9c _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc49d0a95 bio_put +EXPORT_SYMBOL vmlinux 0xc4df83e4 dquot_scan_active +EXPORT_SYMBOL vmlinux 0xc4ef7de3 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0xc4f3c5b7 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0xc501b115 locks_free_lock +EXPORT_SYMBOL vmlinux 0xc502c587 vfs_mkdir +EXPORT_SYMBOL vmlinux 0xc53c2b62 xfrm_register_mode +EXPORT_SYMBOL vmlinux 0xc54e5d38 no_llseek +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc55ae705 mach_ppa8548 +EXPORT_SYMBOL vmlinux 0xc55c2a9d inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0xc564eb24 phy_device_register +EXPORT_SYMBOL vmlinux 0xc56f03a2 __mutex_init +EXPORT_SYMBOL vmlinux 0xc570d10f d_move +EXPORT_SYMBOL vmlinux 0xc589e044 param_set_long +EXPORT_SYMBOL vmlinux 0xc59480d0 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xc5a9f231 simple_dir_operations +EXPORT_SYMBOL vmlinux 0xc5b9b436 dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0xc5c08eab dpa_uio_bman +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5ec24f1 skb_seq_read +EXPORT_SYMBOL vmlinux 0xc5fa86fb jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc613e4d6 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc63e5516 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc663b075 __ioremap +EXPORT_SYMBOL vmlinux 0xc665d6d7 of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0xc667af90 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0xc66890b1 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0xc6711f75 agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0xc6867e19 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0xc68b50ab tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0xc68d99f8 netdev_info +EXPORT_SYMBOL vmlinux 0xc69361e2 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0xc6aaa710 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0xc6b44d7d inet6_getname +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6e1fd2f xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0xc6e364fd __dquot_free_space +EXPORT_SYMBOL vmlinux 0xc705fc39 ipv4_specific +EXPORT_SYMBOL vmlinux 0xc71100fe fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc768de19 cpu_all_bits +EXPORT_SYMBOL vmlinux 0xc76d15af scsi_host_get +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc78e5ea4 ppp_unit_number +EXPORT_SYMBOL vmlinux 0xc797bb2a inet_del_offload +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc7fdec21 redraw_screen +EXPORT_SYMBOL vmlinux 0xc800f1dd kernel_setsockopt +EXPORT_SYMBOL vmlinux 0xc81e5dc6 qman_query_fq +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 0xc853f012 ll_rw_block +EXPORT_SYMBOL vmlinux 0xc85eba82 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xc862dc2c lock_may_read +EXPORT_SYMBOL vmlinux 0xc86f3a4c fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc87f62e7 generic_file_open +EXPORT_SYMBOL vmlinux 0xc8807a46 fb_get_mode +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc89e3a83 fsync_bdev +EXPORT_SYMBOL vmlinux 0xc8a51b69 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0xc8abe793 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8b9590c udp_del_offload +EXPORT_SYMBOL vmlinux 0xc8b9a76b bman_recovery_exit +EXPORT_SYMBOL vmlinux 0xc8c4dc43 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0xc8c5b056 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0xc8d55e44 genl_unregister_family +EXPORT_SYMBOL vmlinux 0xc8e067d5 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0xc8e458f8 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0xc8e566f3 unlock_page +EXPORT_SYMBOL vmlinux 0xc8fe06c3 mach_p1023_rds +EXPORT_SYMBOL vmlinux 0xc910e0a0 clear_bdi_congested +EXPORT_SYMBOL vmlinux 0xc91ff664 down_read_trylock +EXPORT_SYMBOL vmlinux 0xc92781cf cdrom_open +EXPORT_SYMBOL vmlinux 0xc93d931c blk_execute_rq +EXPORT_SYMBOL vmlinux 0xc93fbc54 wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc968b949 sock_kfree_s +EXPORT_SYMBOL vmlinux 0xc96998d0 d_instantiate +EXPORT_SYMBOL vmlinux 0xc96fb6d0 qman_start_dequeues +EXPORT_SYMBOL vmlinux 0xc97a0542 empty_aops +EXPORT_SYMBOL vmlinux 0xc97fa88c ipmi_get_smi_info +EXPORT_SYMBOL vmlinux 0xc98cd169 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0xc996d097 del_timer +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9a37a91 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0xc9ab42cd simple_unlink +EXPORT_SYMBOL vmlinux 0xc9c18474 datagram_poll +EXPORT_SYMBOL vmlinux 0xc9efb7d0 inet_frag_find +EXPORT_SYMBOL vmlinux 0xc9f64a58 consume_skb +EXPORT_SYMBOL vmlinux 0xca0927d3 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0xca5dbc50 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xca9229ed pci_disable_device +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xca99fa48 eth_type_trans +EXPORT_SYMBOL vmlinux 0xcaaed24a agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0xcab0f66f fm_bind +EXPORT_SYMBOL vmlinux 0xcac7352a swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0xcacd272d atomic64_sub_return +EXPORT_SYMBOL vmlinux 0xcaea2590 address_space_init_once +EXPORT_SYMBOL vmlinux 0xcaeac6bb ps2_handle_response +EXPORT_SYMBOL vmlinux 0xcb018b3c generic_pipe_buf_unmap +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb0c5d50 param_get_uint +EXPORT_SYMBOL vmlinux 0xcb14c091 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0xcb47aa76 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0xcb4cc752 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xcb53a046 keyring_search +EXPORT_SYMBOL vmlinux 0xcb677f51 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0xcb773408 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0xcb7af96a alloc_mdio_bitbang +EXPORT_SYMBOL vmlinux 0xcb7d2f01 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0xcb8f9ac6 i8042_remove_filter +EXPORT_SYMBOL vmlinux 0xcbbaa32c call_netdevice_notifiers_info +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbe3359d agp_find_bridge +EXPORT_SYMBOL vmlinux 0xcbfec50a bio_sector_offset +EXPORT_SYMBOL vmlinux 0xcc00bcee nla_put +EXPORT_SYMBOL vmlinux 0xcc02d6db __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0xcc0accdd zerocopy_sg_from_iovec +EXPORT_SYMBOL vmlinux 0xcc17504d _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc35af9b textsearch_prepare +EXPORT_SYMBOL vmlinux 0xcc37f55c blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xcc4b84da of_find_node_by_type +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc7995e1 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xcc7fa952 local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0xcc808e3a tcf_register_action +EXPORT_SYMBOL vmlinux 0xcc9b9806 locks_copy_lock +EXPORT_SYMBOL vmlinux 0xcca57418 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xcce5c5dd iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0xcd0529c7 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xcd0826e7 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0xcd0cd3e8 proto_unregister +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd3dddee unregister_framebuffer +EXPORT_SYMBOL vmlinux 0xcd86c87f __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xcd8be3b7 input_event +EXPORT_SYMBOL vmlinux 0xcda046fe tcp_v4_connect +EXPORT_SYMBOL vmlinux 0xcdac8c49 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcddf3cf3 scsi_free_command +EXPORT_SYMBOL vmlinux 0xcde172ac radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0xcde7123d bio_integrity_clone +EXPORT_SYMBOL vmlinux 0xcdeac6dd tty_mutex +EXPORT_SYMBOL vmlinux 0xce054683 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0xce13f50f uart_resume_port +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce849a03 input_free_device +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceb43bc9 scsi_execute +EXPORT_SYMBOL vmlinux 0xcec0f98a simple_dentry_operations +EXPORT_SYMBOL vmlinux 0xcedc8156 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0xcee60697 dev_mc_sync +EXPORT_SYMBOL vmlinux 0xcef0058b scsi_ioctl +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf0d8500 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0xcf1d7646 isa_mem_base +EXPORT_SYMBOL vmlinux 0xcf287962 mark_page_accessed +EXPORT_SYMBOL vmlinux 0xcf2f1e25 unregister_filesystem +EXPORT_SYMBOL vmlinux 0xcf3025cb inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0xcf360650 pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0xcf438e1e mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0xcf79f0a8 tty_devnum +EXPORT_SYMBOL vmlinux 0xcf962958 sock_update_memcg +EXPORT_SYMBOL vmlinux 0xcfa41c51 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0xcfdd0a94 pskb_expand_head +EXPORT_SYMBOL vmlinux 0xcfdfa248 kvm_read_guest_atomic +EXPORT_SYMBOL vmlinux 0xcfeb921a iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0xd0170251 pci_dev_put +EXPORT_SYMBOL vmlinux 0xd0181f4f __bitmap_xor +EXPORT_SYMBOL vmlinux 0xd01ac223 i2c_bit_add_bus +EXPORT_SYMBOL vmlinux 0xd02b775a check_disk_size_change +EXPORT_SYMBOL vmlinux 0xd038df9e pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0xd038e272 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0xd06aa5d3 pipe_to_file +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd0821f93 skb_copy_and_csum_datagram_iovec +EXPORT_SYMBOL vmlinux 0xd0858fb3 set_blocksize +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0d42c42 mod_timer_pending +EXPORT_SYMBOL vmlinux 0xd0e1babb register_framebuffer +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0f11b74 user_path_at +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 0xd10c3452 idr_init +EXPORT_SYMBOL vmlinux 0xd1180d3b posix_lock_file_wait +EXPORT_SYMBOL vmlinux 0xd11c0dc1 __kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xd1226692 dget_parent +EXPORT_SYMBOL vmlinux 0xd123fc3e gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0xd138719c qman_recovery_exit +EXPORT_SYMBOL vmlinux 0xd1583a9a alloc_disk_node +EXPORT_SYMBOL vmlinux 0xd15b74ce netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0xd16944aa __put_cred +EXPORT_SYMBOL vmlinux 0xd1766b2c register_qdisc +EXPORT_SYMBOL vmlinux 0xd1773f76 of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0xd177b12f do_truncate +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd196c9be kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xd1a55ca3 dm_put_device +EXPORT_SYMBOL vmlinux 0xd1be7c4a i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0xd1cc0681 percpu_counter_compare +EXPORT_SYMBOL vmlinux 0xd1e3f3c4 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xd1e9cd50 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd234a72f freeze_super +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 0xd271a53d tcp_connect +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd296e9c5 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0xd2a2a1b6 fget_raw +EXPORT_SYMBOL vmlinux 0xd2af138b reservation_ww_class +EXPORT_SYMBOL vmlinux 0xd2b7f9e3 fm_port_unbind +EXPORT_SYMBOL vmlinux 0xd2c71b83 inet_add_protocol +EXPORT_SYMBOL vmlinux 0xd2cbc917 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0xd2cd5568 interruptible_sleep_on_timeout +EXPORT_SYMBOL vmlinux 0xd2cd7839 __get_page_tail +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2fc19bd proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0xd2fe3ed9 neigh_seq_start +EXPORT_SYMBOL vmlinux 0xd318d218 md_write_start +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd32265ed dev_err +EXPORT_SYMBOL vmlinux 0xd327d665 netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0xd33b9aba netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0xd343c42a key_invalidate +EXPORT_SYMBOL vmlinux 0xd353366a jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0xd38f2164 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0xd3c747a1 qman_irqsource_remove +EXPORT_SYMBOL vmlinux 0xd4192559 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0xd41e879b pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0xd426fde3 i2c_master_send +EXPORT_SYMBOL vmlinux 0xd45f2f5b ipmi_smi_add_proc_entry +EXPORT_SYMBOL vmlinux 0xd4723910 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0xd47fb9e4 __kfree_skb +EXPORT_SYMBOL vmlinux 0xd48cf6be seq_read +EXPORT_SYMBOL vmlinux 0xd4b10a08 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xd4d57bd6 agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0xd51dc1ab dev_change_flags +EXPORT_SYMBOL vmlinux 0xd51dd2e3 set_device_ro +EXPORT_SYMBOL vmlinux 0xd52239ad qman_set_null_cb +EXPORT_SYMBOL vmlinux 0xd526078e sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xd53d9a02 vlan_untag +EXPORT_SYMBOL vmlinux 0xd546d65b file_open_root +EXPORT_SYMBOL vmlinux 0xd54bc6f7 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0xd54ea341 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0xd5726057 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0xd57eb331 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0xd594bec0 key_task_permission +EXPORT_SYMBOL vmlinux 0xd5b2e52a single_step_exception +EXPORT_SYMBOL vmlinux 0xd5b31f01 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0xd5dea386 kernel_sendpage +EXPORT_SYMBOL vmlinux 0xd5e8444a __div64_32 +EXPORT_SYMBOL vmlinux 0xd5ee3607 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0xd5f2172f del_timer_sync +EXPORT_SYMBOL vmlinux 0xd606503d register_sysctl +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd61674e0 mdiobus_register +EXPORT_SYMBOL vmlinux 0xd61a1ac1 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0xd621a566 __elv_add_request +EXPORT_SYMBOL vmlinux 0xd627480b strncat +EXPORT_SYMBOL vmlinux 0xd629c5d4 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0xd638e1f3 console_start +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd664f464 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xd66607d4 dma_pool_create +EXPORT_SYMBOL vmlinux 0xd66c47aa eth_header_cache_update +EXPORT_SYMBOL vmlinux 0xd67a636b in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xd6829066 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd69b30e0 atomic64_add_unless +EXPORT_SYMBOL vmlinux 0xd6a70e3f jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0xd6c343f1 pme_ctx_disable +EXPORT_SYMBOL vmlinux 0xd6d63e9d lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0xd6e0382e mmc_alloc_host +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6f1556e bio_pair_release +EXPORT_SYMBOL vmlinux 0xd6fc19c0 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0xd7055275 block_write_begin +EXPORT_SYMBOL vmlinux 0xd70afe01 mach_p2020_ds +EXPORT_SYMBOL vmlinux 0xd70f3046 clear_nlink +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd761a383 ioremap_prot +EXPORT_SYMBOL vmlinux 0xd7653333 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0xd77a2f5c pme_stat_get +EXPORT_SYMBOL vmlinux 0xd77a5aa5 __bitmap_and +EXPORT_SYMBOL vmlinux 0xd79b5a02 allow_signal +EXPORT_SYMBOL vmlinux 0xd7a34281 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0xd7a38739 agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0xd7b5ec67 elv_rb_del +EXPORT_SYMBOL vmlinux 0xd7c4db35 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7e8101e pci_set_master +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd81810b6 sget +EXPORT_SYMBOL vmlinux 0xd8189fa6 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0xd818be98 fb_blank +EXPORT_SYMBOL vmlinux 0xd84e336b scsi_release_buffers +EXPORT_SYMBOL vmlinux 0xd85833cb __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0xd876c37a update_region +EXPORT_SYMBOL vmlinux 0xd88fa86e kobject_set_name +EXPORT_SYMBOL vmlinux 0xd89556ab devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8c72cf0 ifla_policy +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8ea93d6 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0xd8eab641 kdb_current_task +EXPORT_SYMBOL vmlinux 0xd8f816ac ilookup5 +EXPORT_SYMBOL vmlinux 0xd92afabe bitmap_clear +EXPORT_SYMBOL vmlinux 0xd939200b nobh_write_end +EXPORT_SYMBOL vmlinux 0xd9498b22 proc_dointvec +EXPORT_SYMBOL vmlinux 0xd96561d2 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0xd9744f96 agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0xd97a3bf6 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0xd980de8f wireless_send_event +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd9949a3d __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xd9966d95 phy_start_aneg +EXPORT_SYMBOL vmlinux 0xd9a9bb30 getname +EXPORT_SYMBOL vmlinux 0xd9bac924 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0xd9c22f6b skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0xd9ce8f0c strnlen +EXPORT_SYMBOL vmlinux 0xd9efe1b0 sg_miter_start +EXPORT_SYMBOL vmlinux 0xd9f3aed9 kfree_put_link +EXPORT_SYMBOL vmlinux 0xda15d912 sock_wmalloc +EXPORT_SYMBOL vmlinux 0xda2478d0 param_ops_short +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda49166e proc_set_size +EXPORT_SYMBOL vmlinux 0xda56fe01 PDE_DATA +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda804673 dev_get_nest_level +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda923dc8 netpoll_setup +EXPORT_SYMBOL vmlinux 0xda97c0eb eth_header_parse +EXPORT_SYMBOL vmlinux 0xda9a3691 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0xda9ffe25 nf_register_hook +EXPORT_SYMBOL vmlinux 0xdaa16b82 of_clk_get +EXPORT_SYMBOL vmlinux 0xdaa57ec3 totalhigh_pages +EXPORT_SYMBOL vmlinux 0xdabc1ea8 fsl_lbc_find +EXPORT_SYMBOL vmlinux 0xdac64451 bio_add_page +EXPORT_SYMBOL vmlinux 0xdac9469d inet_register_protosw +EXPORT_SYMBOL vmlinux 0xdad7adff dqstats +EXPORT_SYMBOL vmlinux 0xdadfaa38 km_policy_expired +EXPORT_SYMBOL vmlinux 0xdaeccd99 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0xdb01198e fsl_upm_find +EXPORT_SYMBOL vmlinux 0xdb13d36b bio_integrity_trim +EXPORT_SYMBOL vmlinux 0xdb28a4b9 neigh_event_ns +EXPORT_SYMBOL vmlinux 0xdb3ddf76 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0xdb41739b set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdbb24fc2 down_write +EXPORT_SYMBOL vmlinux 0xdbb947f1 tty_port_put +EXPORT_SYMBOL vmlinux 0xdbbc3d91 skb_pull +EXPORT_SYMBOL vmlinux 0xdbcd416e sysctl_ip_nonlocal_bind +EXPORT_SYMBOL vmlinux 0xdbcf9844 alloc_pci_dev +EXPORT_SYMBOL vmlinux 0xdbdc8c1e of_phy_connect_fixed_link +EXPORT_SYMBOL vmlinux 0xdbe529aa bdget_disk +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc3b2849 kernel_listen +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc736dce jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0xdc7a720f mmc_can_erase +EXPORT_SYMBOL vmlinux 0xdc9498dd down +EXPORT_SYMBOL vmlinux 0xdccd660e mmc_put_card +EXPORT_SYMBOL vmlinux 0xdcdb3ea7 tty_vhangup +EXPORT_SYMBOL vmlinux 0xdcf31377 kill_litter_super +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd27fa87 memchr +EXPORT_SYMBOL vmlinux 0xdd2c9ba2 neigh_seq_next +EXPORT_SYMBOL vmlinux 0xdd327f7b bdi_init +EXPORT_SYMBOL vmlinux 0xdd3acb0b xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0xdd3c8dd6 phy_attach +EXPORT_SYMBOL vmlinux 0xdd45b42b cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0xdd725237 xfrm_lookup +EXPORT_SYMBOL vmlinux 0xdd7db56e jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0xde07a772 inet_csk_accept +EXPORT_SYMBOL vmlinux 0xde10eb10 param_set_invbool +EXPORT_SYMBOL vmlinux 0xde11a4b6 nf_log_set +EXPORT_SYMBOL vmlinux 0xde405928 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0xde463e0a posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0xde48e9ca _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xde559d84 bmap +EXPORT_SYMBOL vmlinux 0xde5b1708 input_register_handler +EXPORT_SYMBOL vmlinux 0xde6aecc0 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0xde82e44a mmc_can_reset +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xdedcfd51 eth_validate_addr +EXPORT_SYMBOL vmlinux 0xdefa0ad8 qman_testwrite_cgr +EXPORT_SYMBOL vmlinux 0xdf13971c dpa_uio_qman +EXPORT_SYMBOL vmlinux 0xdf27d980 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf4241c1 netif_carrier_on +EXPORT_SYMBOL vmlinux 0xdf43c612 inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf5e9e1c mach_qemu_e500 +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf6ca4a0 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0xdf8bd78d simple_setattr +EXPORT_SYMBOL vmlinux 0xdf8e096d jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdfc22f3d tty_set_operations +EXPORT_SYMBOL vmlinux 0xdfc67925 init_special_inode +EXPORT_SYMBOL vmlinux 0xdfd7c518 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0xdfefb164 pm860x_page_set_bits +EXPORT_SYMBOL vmlinux 0xdff43ed4 __debugger +EXPORT_SYMBOL vmlinux 0xe01ab46c __dev_get_by_name +EXPORT_SYMBOL vmlinux 0xe0262ccf vlan_dev_real_dev +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 0xe083b942 tty_check_change +EXPORT_SYMBOL vmlinux 0xe086a0c5 scsi_scan_host +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0bea4ff fb_set_var +EXPORT_SYMBOL vmlinux 0xe0e8209a skb_checksum_help +EXPORT_SYMBOL vmlinux 0xe0ef10c7 ida_simple_remove +EXPORT_SYMBOL vmlinux 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe11be300 __bread +EXPORT_SYMBOL vmlinux 0xe11c0543 page_address +EXPORT_SYMBOL vmlinux 0xe12991a9 lro_receive_frags +EXPORT_SYMBOL vmlinux 0xe1490268 sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0xe15b5948 simple_lookup +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe18159a3 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0xe19014b4 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0xe1bcbfd2 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0xe1c8f9a4 nf_afinfo +EXPORT_SYMBOL vmlinux 0xe1fb2b97 send_sig_info +EXPORT_SYMBOL vmlinux 0xe1fc3257 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe24ea86e generic_file_mmap +EXPORT_SYMBOL vmlinux 0xe250937f inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xe28f8a52 max8998_read_reg +EXPORT_SYMBOL vmlinux 0xe2994355 km_policy_notify +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 0xe2e5114f pcim_pin_device +EXPORT_SYMBOL vmlinux 0xe2e8065e memdup_user +EXPORT_SYMBOL vmlinux 0xe2eeff8d proto_register +EXPORT_SYMBOL vmlinux 0xe2f807a9 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0xe2f80f79 sock_no_getname +EXPORT_SYMBOL vmlinux 0xe2fae716 kmemdup +EXPORT_SYMBOL vmlinux 0xe2fe64e7 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0xe3041222 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0xe31a63fa follow_pfn +EXPORT_SYMBOL vmlinux 0xe35c5285 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0xe36c6501 fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0xe3aef46b swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0xe3b1a4bb submit_bio +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3de50bd qman_destroy_fq +EXPORT_SYMBOL vmlinux 0xe41d3d34 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0xe41fd087 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0xe43a02d2 netif_skb_dev_features +EXPORT_SYMBOL vmlinux 0xe467f96e dcb_getapp +EXPORT_SYMBOL vmlinux 0xe47af939 dev_printk_emit +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe49808b4 qman_poll +EXPORT_SYMBOL vmlinux 0xe4a8734f blk_mq_free_queue +EXPORT_SYMBOL vmlinux 0xe4a895fa up_write +EXPORT_SYMBOL vmlinux 0xe4a9b599 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xe4bd636e genl_notify +EXPORT_SYMBOL vmlinux 0xe4be4873 d_find_any_alias +EXPORT_SYMBOL vmlinux 0xe4c1866b __locks_copy_lock +EXPORT_SYMBOL vmlinux 0xe4d3a7f0 dev_get_by_flags_rcu +EXPORT_SYMBOL vmlinux 0xe4e0b6c8 write_one_page +EXPORT_SYMBOL vmlinux 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL vmlinux 0xe4fe8ca1 _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xe5122890 flow_cache_genid +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe52bf275 local_flush_tlb_page +EXPORT_SYMBOL vmlinux 0xe537c4a5 dquot_quota_on +EXPORT_SYMBOL vmlinux 0xe53d1faa of_translate_dma_address +EXPORT_SYMBOL vmlinux 0xe5428b11 bio_clone_bioset +EXPORT_SYMBOL vmlinux 0xe554d978 inode_dio_done +EXPORT_SYMBOL vmlinux 0xe576636e cookie_check_timestamp +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe5b3a4b6 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0xe5b41c94 give_up_console +EXPORT_SYMBOL vmlinux 0xe5c393fb of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0xe5c40d3e security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe62d7b4a find_lock_page +EXPORT_SYMBOL vmlinux 0xe62eb862 kernel_bind +EXPORT_SYMBOL vmlinux 0xe63f00be __insert_inode_hash +EXPORT_SYMBOL vmlinux 0xe6514ed2 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0xe66452ab dql_init +EXPORT_SYMBOL vmlinux 0xe66efd70 tcp_gso_segment +EXPORT_SYMBOL vmlinux 0xe68cf51c fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL vmlinux 0xe6dd236d clear_pages +EXPORT_SYMBOL vmlinux 0xe6ebc016 key_create_or_update +EXPORT_SYMBOL vmlinux 0xe6f25126 kernel_write +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe712a96a blk_put_queue +EXPORT_SYMBOL vmlinux 0xe7268065 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0xe7548b87 __getblk +EXPORT_SYMBOL vmlinux 0xe7575cc0 pme_ctx_exclusive_dec +EXPORT_SYMBOL vmlinux 0xe77b941f pme2_exclusive_set +EXPORT_SYMBOL vmlinux 0xe77d4478 input_set_capability +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a7cb83 get_super_thawed +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7c84014 lockref_mark_dead +EXPORT_SYMBOL vmlinux 0xe7ce7439 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0xe7d267d2 dmam_pool_create +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7e0f702 unregister_qdisc +EXPORT_SYMBOL vmlinux 0xe7f5b87e blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0xe80f7f57 fb_validate_mode +EXPORT_SYMBOL vmlinux 0xe830c043 input_unregister_handle +EXPORT_SYMBOL vmlinux 0xe833fa77 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0xe851bb05 queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0xe8527224 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0xe8924f2d iget5_locked +EXPORT_SYMBOL vmlinux 0xe898bfba crc32_le_combine +EXPORT_SYMBOL vmlinux 0xe8b63ace radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xe8b82fe0 bman_ip_rev +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8ca1e91 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0xe90294ae install_exec_creds +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe9397d29 ndo_dflt_bridge_getlink +EXPORT_SYMBOL vmlinux 0xe93b4d2d mb_cache_destroy +EXPORT_SYMBOL vmlinux 0xe94183cf elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0xe941cca7 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0xe94298f0 simple_readpage +EXPORT_SYMBOL vmlinux 0xe94eb0d2 ip6_frag_init +EXPORT_SYMBOL vmlinux 0xe950499d qman_release_fqid_range +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe95d590a __frontswap_store +EXPORT_SYMBOL vmlinux 0xe978b78d pme_hw_flow_new +EXPORT_SYMBOL vmlinux 0xe9829f9f mmc_free_host +EXPORT_SYMBOL vmlinux 0xe98ac2fd sk_common_release +EXPORT_SYMBOL vmlinux 0xe9ce22f5 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0xe9e45d73 blk_register_region +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea10212a int_to_scsilun +EXPORT_SYMBOL vmlinux 0xea10655a __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xea16dd4c tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xea18b2b8 generic_show_options +EXPORT_SYMBOL vmlinux 0xea2357cf mach_mpc8536_ds +EXPORT_SYMBOL vmlinux 0xea2b6655 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0xea3853de fget +EXPORT_SYMBOL vmlinux 0xea52e8f7 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0xea631d7a scsi_host_alloc +EXPORT_SYMBOL vmlinux 0xea6858b7 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0xea6d70b7 security_path_link +EXPORT_SYMBOL vmlinux 0xea6e3003 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0xea7987f1 key_update +EXPORT_SYMBOL vmlinux 0xea7e05d6 netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0xea8207f8 lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xea8cd481 vc_cons +EXPORT_SYMBOL vmlinux 0xea8f18b4 netdev_state_change +EXPORT_SYMBOL vmlinux 0xea968c96 ___ratelimit +EXPORT_SYMBOL vmlinux 0xea99d356 blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0xea9b5611 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0xeaa2301a release_sock +EXPORT_SYMBOL vmlinux 0xeab0819b pme_ctx_is_disabled +EXPORT_SYMBOL vmlinux 0xeab4a2fc dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0xeab9b5a6 secpath_dup +EXPORT_SYMBOL vmlinux 0xeac20168 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0xeade89ae page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xeae6697b inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0xeae74528 module_put +EXPORT_SYMBOL vmlinux 0xeb27edbd writeback_in_progress +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb3aba8a netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0xeb42b5d1 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0xeb5420b1 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb5b5c18 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0xeb65cb91 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xeb89f5be seq_bitmap +EXPORT_SYMBOL vmlinux 0xeb913fd0 netdev_update_features +EXPORT_SYMBOL vmlinux 0xebb07ac4 security_task_getsecid +EXPORT_SYMBOL vmlinux 0xebbe5aaa __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0xebc90ad8 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0xebce6068 neigh_table_clear +EXPORT_SYMBOL vmlinux 0xebdbe48c radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xec00fb08 flock_lock_file_wait +EXPORT_SYMBOL vmlinux 0xec10785d blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0xec17ebb0 of_match_node +EXPORT_SYMBOL vmlinux 0xec1aa6ef memzero_explicit +EXPORT_SYMBOL vmlinux 0xec222963 kset_register +EXPORT_SYMBOL vmlinux 0xec3a1be4 dev_set_group +EXPORT_SYMBOL vmlinux 0xec3fea28 read_cache_pages +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec6ca4fd scsi_host_lookup +EXPORT_SYMBOL vmlinux 0xec7dc869 simple_open +EXPORT_SYMBOL vmlinux 0xec7f6c18 __scm_destroy +EXPORT_SYMBOL vmlinux 0xec8362ce scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0xec8ad421 gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0xecae5236 rt6_lookup +EXPORT_SYMBOL vmlinux 0xecbe04c2 tty_write_room +EXPORT_SYMBOL vmlinux 0xecc1449e bm_pool_set +EXPORT_SYMBOL vmlinux 0xecc14e52 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0xecd19919 inode_init_owner +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xeced3386 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0xecf5d933 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0xed0e6391 tcf_hash_create +EXPORT_SYMBOL vmlinux 0xed1887d1 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0xed20abf2 switch_mmu_context +EXPORT_SYMBOL vmlinux 0xed233843 ftrace_raw_output_prep +EXPORT_SYMBOL vmlinux 0xed26d24d dst_discard +EXPORT_SYMBOL vmlinux 0xed45dcaf sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0xed46edb1 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed69d8c9 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0xed6a4ef5 agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0xed75817b ppc_md +EXPORT_SYMBOL vmlinux 0xed75efb2 nobh_write_begin +EXPORT_SYMBOL vmlinux 0xed93f29e __kunmap_atomic +EXPORT_SYMBOL vmlinux 0xed9bf877 devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xeda73c6d pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0xedb86488 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc410d0 udplite_table +EXPORT_SYMBOL vmlinux 0xedd3da6d devm_ioport_map +EXPORT_SYMBOL vmlinux 0xedd8f6fd fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0xee246dff ida_destroy +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee315279 vsc824x_add_skew +EXPORT_SYMBOL vmlinux 0xee3c7d55 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0xee5cec3d pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0xee6989e9 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0xee735ac7 alloc_file +EXPORT_SYMBOL vmlinux 0xee7f6150 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeadabf8 blk_end_request_all +EXPORT_SYMBOL vmlinux 0xeed2562c simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0xeed262c7 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0xeee50f2b check_submounts_and_drop +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xeefe91e1 kmem_cache_free +EXPORT_SYMBOL vmlinux 0xef054f89 unregister_netdev +EXPORT_SYMBOL vmlinux 0xef109449 interruptible_sleep_on +EXPORT_SYMBOL vmlinux 0xef19ab52 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0xef26a740 bio_integrity_tag_size +EXPORT_SYMBOL vmlinux 0xef317342 input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0xef46f613 ata_port_printk +EXPORT_SYMBOL vmlinux 0xef6c3769 devm_gpio_request +EXPORT_SYMBOL vmlinux 0xef704925 mach_mpc8568_mds +EXPORT_SYMBOL vmlinux 0xef77374b pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0xefc987ee dev_set_allmulti +EXPORT_SYMBOL vmlinux 0xefd36d97 lookup_one_len +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 0xf0053a76 splice_from_pipe_next +EXPORT_SYMBOL vmlinux 0xf0099138 dentry_open +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf018be80 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0xf0227e5a twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0xf02639e2 swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0xf032c0bf bio_copy_kern +EXPORT_SYMBOL vmlinux 0xf03302c7 posix_test_lock +EXPORT_SYMBOL vmlinux 0xf04065bd tty_hangup +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf06134e7 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0xf0619801 timekeeping_clocktai +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf0783801 of_phy_attach +EXPORT_SYMBOL vmlinux 0xf07cdf9a inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0xf0832bf7 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0xf087137d __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0a8792a __dquot_transfer +EXPORT_SYMBOL vmlinux 0xf0a880be bio_unmap_user +EXPORT_SYMBOL vmlinux 0xf0ae2260 __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xf0b419aa tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xf0d68ed6 clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0xf0defb7b __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0xf0e57a9f bman_flush_stockpile +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0f1246c kvasprintf +EXPORT_SYMBOL vmlinux 0xf0fd4e8f rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0xf0ffa613 security_mmap_file +EXPORT_SYMBOL vmlinux 0xf100416a remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xf10b11c5 vlan_vid_add +EXPORT_SYMBOL vmlinux 0xf10bf82c kern_path +EXPORT_SYMBOL vmlinux 0xf10ca3e7 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0xf10dc0c5 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf11cd6ce down_interruptible +EXPORT_SYMBOL vmlinux 0xf12a75b6 udp_add_offload +EXPORT_SYMBOL vmlinux 0xf13637e2 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0xf13feb57 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf1944a5c genphy_read_status +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1bb6437 pci_release_regions +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1deabf2 div64_u64 +EXPORT_SYMBOL vmlinux 0xf1e06df1 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf202c5cb radix_tree_insert +EXPORT_SYMBOL vmlinux 0xf20543ba __dst_free +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf21bc919 scsi_add_device +EXPORT_SYMBOL vmlinux 0xf222defb __ip_select_ident +EXPORT_SYMBOL vmlinux 0xf223bc29 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0xf22881e8 lg_local_lock +EXPORT_SYMBOL vmlinux 0xf22d72f5 padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL vmlinux 0xf27097df padata_set_cpumask +EXPORT_SYMBOL vmlinux 0xf283a5b7 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0xf286d5ae mach_sbc8548 +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2a62398 security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0xf2b1ac8e __getnstimeofday +EXPORT_SYMBOL vmlinux 0xf2c22287 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0xf2e12bc4 tcf_exts_change +EXPORT_SYMBOL vmlinux 0xf2eb902e con_copy_unimap +EXPORT_SYMBOL vmlinux 0xf2f61dfa __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0xf30d1923 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf31910df tty_unlock +EXPORT_SYMBOL vmlinux 0xf31bb597 rtnl_notify +EXPORT_SYMBOL vmlinux 0xf322a206 bit_waitqueue +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf34199ee inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf349ae31 disk_stack_limits +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf356cba7 neigh_connected_output +EXPORT_SYMBOL vmlinux 0xf3712909 qman_query_congestion +EXPORT_SYMBOL vmlinux 0xf377c729 d_obtain_alias +EXPORT_SYMBOL vmlinux 0xf37d6d20 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf39264ed __break_lease +EXPORT_SYMBOL vmlinux 0xf39c8604 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0xf3bf0bce __bitmap_complement +EXPORT_SYMBOL vmlinux 0xf3c82b96 cfb_imageblit +EXPORT_SYMBOL vmlinux 0xf3cbc853 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0xf3e00e6b ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0xf3e192be tcp_recvmsg +EXPORT_SYMBOL vmlinux 0xf3ed316b generic_permission +EXPORT_SYMBOL vmlinux 0xf3fbe9be elv_rb_add +EXPORT_SYMBOL vmlinux 0xf404f67d fddi_change_mtu +EXPORT_SYMBOL vmlinux 0xf40506da write_dirty_buffer +EXPORT_SYMBOL vmlinux 0xf40b2297 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xf4246c11 scm_fp_dup +EXPORT_SYMBOL vmlinux 0xf43c642e ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf4449388 timer_interrupt +EXPORT_SYMBOL vmlinux 0xf44e6e3d vfs_readv +EXPORT_SYMBOL vmlinux 0xf451313b nf_log_unregister +EXPORT_SYMBOL vmlinux 0xf467eb2a udp_lib_rehash +EXPORT_SYMBOL vmlinux 0xf4a0912f tty_register_driver +EXPORT_SYMBOL vmlinux 0xf4b8444a qman_init_fq +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f4dfa3 phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0xf4fbfa6e generic_file_splice_read +EXPORT_SYMBOL vmlinux 0xf5222143 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0xf52321e0 atomic64_sub +EXPORT_SYMBOL vmlinux 0xf5299441 would_dump +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf5868baa cad_pid +EXPORT_SYMBOL vmlinux 0xf59c14f3 phy_scan_fixups +EXPORT_SYMBOL vmlinux 0xf5a085c4 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0xf5a62ecc _memset_io +EXPORT_SYMBOL vmlinux 0xf5b714ad sock_no_mmap +EXPORT_SYMBOL vmlinux 0xf5be905b eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0xf5c05914 generic_segment_checks +EXPORT_SYMBOL vmlinux 0xf5c861d1 netlink_net_capable +EXPORT_SYMBOL vmlinux 0xf5d8ec75 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0xf5e1558d crash_shutdown_unregister +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf60a920e bio_integrity_prep +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf66d2c8a bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0xf67d90a2 phy_disconnect +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf68687be __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xf693380a generic_listxattr +EXPORT_SYMBOL vmlinux 0xf6b7154a mach_ksi8560 +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6c9ccfd rtnl_create_link +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf70384d7 __debugger_sstep +EXPORT_SYMBOL vmlinux 0xf7074dbc scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0xf71521ba atomic64_add_return +EXPORT_SYMBOL vmlinux 0xf71706e8 scsi_register_interface +EXPORT_SYMBOL vmlinux 0xf737026a jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0xf741c793 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf7817513 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0xf7900a08 build_skb +EXPORT_SYMBOL vmlinux 0xf7e271bd abx500_remove_ops +EXPORT_SYMBOL vmlinux 0xf7e53fe2 pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0xf7fc4d5c load_nls_default +EXPORT_SYMBOL vmlinux 0xf803fe39 bitmap_set +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf827ebed devm_gpio_free +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82cb184 pci_enable_ltr +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf84527bc cdrom_release +EXPORT_SYMBOL vmlinux 0xf86c380e twl6040_power +EXPORT_SYMBOL vmlinux 0xf8772a8a of_platform_device_create +EXPORT_SYMBOL vmlinux 0xf890c80e qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0xf89851a0 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0xf89a3d62 bman_affine_cpus +EXPORT_SYMBOL vmlinux 0xf89c8e07 ida_pre_get +EXPORT_SYMBOL vmlinux 0xf8bb9e86 fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0xf8c5bdae neigh_app_ns +EXPORT_SYMBOL vmlinux 0xf8e398fc memstart_addr +EXPORT_SYMBOL vmlinux 0xf91c272f sb_set_blocksize +EXPORT_SYMBOL vmlinux 0xf9228003 get_immrbase +EXPORT_SYMBOL vmlinux 0xf925e290 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0xf9348cbc xz_dec_run +EXPORT_SYMBOL vmlinux 0xf940a328 __next_cpu +EXPORT_SYMBOL vmlinux 0xf96f6bbb dev_get_flags +EXPORT_SYMBOL vmlinux 0xf9725cce vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0xf977b775 pci_save_state +EXPORT_SYMBOL vmlinux 0xf987575d __seq_open_private +EXPORT_SYMBOL vmlinux 0xf9a12923 from_kuid_munged +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9b70b28 clk_add_alias +EXPORT_SYMBOL vmlinux 0xf9bdd773 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0xf9c172f5 migrate_page +EXPORT_SYMBOL vmlinux 0xf9c367e0 iov_pages +EXPORT_SYMBOL vmlinux 0xf9d32e4a iunique +EXPORT_SYMBOL vmlinux 0xf9def97f check_disk_change +EXPORT_SYMBOL vmlinux 0xf9df3b89 km_query +EXPORT_SYMBOL vmlinux 0xf9e73082 scnprintf +EXPORT_SYMBOL vmlinux 0xf9e9839e ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0xfa1eeb57 ether_setup +EXPORT_SYMBOL vmlinux 0xfa561244 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa6322e1 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xfa68eece dev_mc_add +EXPORT_SYMBOL vmlinux 0xfa6c8623 pme_ctx_ctrl_update_flow +EXPORT_SYMBOL vmlinux 0xfa784682 end_page_writeback +EXPORT_SYMBOL vmlinux 0xfa7f2b64 fm_port_disable +EXPORT_SYMBOL vmlinux 0xfa7f3156 wl12xx_get_platform_data +EXPORT_SYMBOL vmlinux 0xfa963b4a blk_peek_request +EXPORT_SYMBOL vmlinux 0xfaa9e5c1 dma_direct_ops +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfad50f88 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaf98462 bitrev32 +EXPORT_SYMBOL vmlinux 0xfb06febd tty_port_tty_get +EXPORT_SYMBOL vmlinux 0xfb1376dd giveup_fpu +EXPORT_SYMBOL vmlinux 0xfb149f13 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0xfb2217fd ip_getsockopt +EXPORT_SYMBOL vmlinux 0xfb2394fb swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0xfb49631d unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0xfb4a2fde __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0xfb58147a serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbd74ddc tcf_exts_validate +EXPORT_SYMBOL vmlinux 0xfbe243c8 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0xfbed3301 netlink_unicast +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc2b011f __ip_dev_find +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc3b160f mempool_create_node +EXPORT_SYMBOL vmlinux 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfc6cedb3 fsl_lbc_ctrl_dev +EXPORT_SYMBOL vmlinux 0xfc86cc44 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0xfca2acdd setup_arg_pages +EXPORT_SYMBOL vmlinux 0xfcaa04a0 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xfcadac8e mount_bdev +EXPORT_SYMBOL vmlinux 0xfcaeb488 generic_write_end +EXPORT_SYMBOL vmlinux 0xfcaf002e lock_sock_nested +EXPORT_SYMBOL vmlinux 0xfcaf9691 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd20df19 tcp_poll +EXPORT_SYMBOL vmlinux 0xfd3571e3 user_revoke +EXPORT_SYMBOL vmlinux 0xfd4c43df max8998_bulk_read +EXPORT_SYMBOL vmlinux 0xfd6293c2 boot_tvec_bases +EXPORT_SYMBOL vmlinux 0xfd9003b6 inet_listen +EXPORT_SYMBOL vmlinux 0xfd905678 km_state_expired +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfda59754 tcp_v4_destroy_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 0xfdcb496e pme_hw_flow_free +EXPORT_SYMBOL vmlinux 0xfdcb914f flush_dcache_icache_page +EXPORT_SYMBOL vmlinux 0xfddf29d4 __sock_create +EXPORT_SYMBOL vmlinux 0xfde10bc1 do_splice_direct +EXPORT_SYMBOL vmlinux 0xfded48ed enable_kernel_fp +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfe018fb2 netdev_has_any_upper_dev +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe063cad inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0xfe35aa4a percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0xfe418466 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0xfe46aaab mach_c293_pcie +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe822d55 get_brgfreq +EXPORT_SYMBOL vmlinux 0xfe851243 fasync_helper +EXPORT_SYMBOL vmlinux 0xfe88b9fe pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0xfe9c28e5 block_commit_write +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfeed5b98 udp_prot +EXPORT_SYMBOL vmlinux 0xfef0cc0b napi_get_frags +EXPORT_SYMBOL vmlinux 0xfef3fa74 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0xfef96e23 __scsi_print_command +EXPORT_SYMBOL vmlinux 0xff01d505 key_revoke +EXPORT_SYMBOL vmlinux 0xff04119d dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0xff0b5ddc unregister_quota_format +EXPORT_SYMBOL vmlinux 0xff17be17 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff22ea6f registered_fb +EXPORT_SYMBOL vmlinux 0xff3817be fs_bio_set +EXPORT_SYMBOL vmlinux 0xff67f9ed buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff6a4448 tcp_check_req +EXPORT_SYMBOL vmlinux 0xff6dea25 smp_hw_index +EXPORT_SYMBOL vmlinux 0xff73d106 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xff9edfa1 pci_enable_msi_block +EXPORT_SYMBOL vmlinux 0xffb0f97b xfrm6_rcv +EXPORT_SYMBOL vmlinux 0xffc67bf4 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0xffcca78b handle_edge_irq +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xfff029a5 generic_fillattr +EXPORT_SYMBOL vmlinux 0xfffc40e9 dcbnl_ieee_notify +EXPORT_SYMBOL_GPL crypto/af_alg 0x129600d7 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x149aff31 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0x444f6f5d af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x58716898 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x6c941bcb af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x93957c0c af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0xab2b0d94 af_alg_release_parent +EXPORT_SYMBOL_GPL crypto/af_alg 0xc0699556 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0xd69f039e af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xdf94d3f3 af_alg_release +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0xa56f2a48 async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x453ca9d4 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xf46210d7 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x9bc84040 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xd9dd92e2 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x192c7057 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x5ce768e6 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xaff9941b async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xed4cf3db __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x46c47c6b async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x5ac9f063 async_xor +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x3147c17d 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 0xcb4847d3 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 0x63f4a041 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 0x024e4d57 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x03d6c435 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x06aa061b cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x2f244c8c cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x5f24366e cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x5fc7517b cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x661aa705 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xe6c707a2 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xef0d877d cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0xfec666a9 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0x987e09ad lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x5ddb33e9 __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x77b39cb4 __serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x7b6c3de8 serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x8a1a99ad __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/twofish_common 0x0f62991e twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x8f38eaaa xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x5b98aacd ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x5dbc4e08 ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x84062ce2 ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xa9ecc44f ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xb4a10b15 ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xc9db5ebb ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xdeec8a15 ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x0daa42ab ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x12b5f3a4 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x17bc2aa5 ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x2496a093 ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x32b34351 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x59b5d663 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5acaf400 ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5eacba1f ahci_interrupt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x694f923e ahci_thread_fn +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6bc2255f ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6e05c4e7 ahci_hw_interrupt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x86d55bad ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8b5bb21d ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8cbbf0d0 ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x91b1fda8 ahci_restart_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x9b41af21 ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x9e020134 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x9fff7816 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa59183b4 ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xae056b8e ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xafaf8da5 ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc5ca2e5e ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xcb063ed3 ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xcb12c5b1 ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xeeb64951 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0xaae67655 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0x0652a234 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/bcma/bcma 0x11c5ffaa bcma_find_core +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x33394b54 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x40f127b5 bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4338ddb3 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x58b2b4e3 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6160b863 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x645348c8 bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6968885e bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6c9db157 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x821e2f3e bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8b98c7b7 bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8c607d8b bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8d026ef2 bcma_core_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8ebfc52a bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x9ebbce6f bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa17163ea bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb336a58a bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc11e8c9d bcma_core_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc6c41a96 bcma_core_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd4738de6 bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd784ec7c bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xea954ee2 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf367d860 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x308b8aae btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x373edbd4 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x5d9cf190 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x6878c41a btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x6e8b57e2 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x77b626dd btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x7caa8afe btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xa3ce0b9e btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd05056f2 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xf893bdd9 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x8bd43357 dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xa162a61d dw_dma_shutdown +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xca573922 dw_dma_probe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x05c8fe84 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c35a2ca edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x285f8279 edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x29c98ebd edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2b2f2912 edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2e14786c edac_mc_add_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x343ea65f edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x48f9c5b8 edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x551acf79 find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x619a431d edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x69259f22 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x74de09aa edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7ae01369 edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7c9083db edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x88a7ddea edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x954655e2 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x991bc41b edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa3130307 edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb8017158 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc6e6b977 edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc98a5ff0 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc9daae30 edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xcf77831e edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xfc22d716 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0xc9aa4f97 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0xe90c24f3 bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x2e42f1e8 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xabb80656 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x6221dd07 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x8134636d drm_vm_open_locked +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xdff57ed4 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x4f45f744 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 0x9bd1fe43 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 0xe137afdd ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x075eb3e0 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x086db3b6 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1751ca87 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x24de21d8 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2af968ad hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x33f8ddde hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x36b242fd hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x37fe4434 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x403cf9ac hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x445ea26b hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4daf3dea hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4e965daa hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x66ad4ea6 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x75edd44b hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x84f671bb hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8b6121a2 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9031628e hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x93d86efe hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9420bea3 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa39a51d0 hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xacee3d52 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb0c11eb5 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc5609b07 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc685fe1b hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0xca13f26d hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xca9a4415 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xcf67e698 hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd5927e3c hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0xda693399 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xdf6d3829 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe49efec5 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0xebd97704 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf86a8e16 hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfce3edc8 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x16b6882e 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 0x24823343 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x64c49955 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x7bee6a33 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xb0cacb45 roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xcf6f440d roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xf99c6ee8 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x4ed473ef sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x74f9c07b sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x846004bf sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x87ff2b03 sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xbbd7eb2e sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xdac42e52 sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xe1ab78d4 sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xe5b35aa2 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xdf67c0aa hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x079bd83b hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x12541c62 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x1a68e378 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x37b2d19c hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x3bef7575 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x4252c86a hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x71d05e80 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb865ff1b hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xbac7a3c4 hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc98ecd0c hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xcbbdb30f hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xdca9b374 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xec52d4a2 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x75a52c3b adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xa3eb21e7 adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x0613148c pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x1a9eed39 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x207098bb pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x208aebe8 pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x2a0bc124 pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x48b7dcff pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x4a5e4991 pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x6e09f3ac pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9bc4840e pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xb88a211b pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xc79c46c6 pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xd9c77231 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x06aeaa87 i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x12bbb346 i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x282ca30a i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x29972843 i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x55742342 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 0x69f934be i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xcafd4b22 i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xcf2680b8 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xe0c5ea3b i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x029092cc i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xc9f65e5a i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x0d412dbd i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x40168fb0 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x2f254d2a ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x39e283d2 ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x5423823f ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x5431b6b4 ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x72aa0c33 ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x81deb146 ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x9749be2f ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x9984fb28 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xda4a6177 ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x01e1b83a adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x0f146e73 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x386e465a adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x525f2349 adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x726ee072 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x7cb53e8d adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x7f92c721 adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xa7b9c9be adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xc41f0f63 adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe120a2aa adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xeaa9ba04 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xf1a84f33 adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x010f47f8 iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0ead1559 iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x12de8a91 devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x139ea979 iio_channel_get_all_cb +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 0x285ff322 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2e82b6b6 iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x39c52e13 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x44cb2cb8 iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4a7e3f21 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4d26e6d2 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5d475beb devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x756d9767 iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7fd263d7 iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x811e8602 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x88c388e4 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8fab2593 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa5e7a212 iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xae3a53eb iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xaeb7459c iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xafa28c73 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb452a69c iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc7f04963 iio_scan_mask_set +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xcb65e38d devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xcd5975c6 devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd33a7e30 iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdb8a5938 iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe0d001e4 iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe7b4622f iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf4751e6c iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xfbe271f5 iio_update_buffers +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x986a4d59 input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0xbebfbb4b 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 0xb4c2b3f1 adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x81e991f1 cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xded4cfe9 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xe1d86ddf cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x375cf717 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x6de638b2 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xc818124e cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xc3d4fcaa cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xdd5e2f10 cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x17e42e9a wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x209aae50 wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x2566b423 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x2d000555 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x38d8a979 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x512249a6 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x59e74894 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6ed5843d wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xa089f77d wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xc90562bf wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xf09769c6 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xf472a9e7 wm9713_codec +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x011192fd ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x11c9efdf ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x19a4e76b ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x276c0e69 ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x34fb5517 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x3581ac9b ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x59110b1a ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x9644cac1 ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xa5a93217 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 0x0aa8b10f gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x1890a6c0 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x272b682d gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x39a3bb40 gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x45772187 gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x59c6ff0a gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x5faa2eb4 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6a6d92bd gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x81ff93f0 gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x86d7334b gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x88ad4dd0 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8eff32df gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa13989aa gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xaee96a90 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd4b03e03 gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd781066f gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe021be3d gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe12d2063 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x2ec26f10 lp55xx_init_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x328b91a8 lp55xx_unregister_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x44e3b02c lp55xx_deinit_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x6b4f791c lp55xx_register_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x8525a7c7 lp55xx_update_bits +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x8acc0e2f lp55xx_read +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xacc9f00a lp55xx_unregister_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xbbb2adbc lp55xx_of_populate_pdata +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xc0a1cd29 lp55xx_is_extclk_used +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xdbdd35aa lp55xx_register_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xf79dabc8 lp55xx_write +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 0x0dda1402 wf_get_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x2c8fada2 wf_register_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x56948e03 wf_put_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 0xaf8d8a51 wf_unregister_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xb9c75e35 wf_find_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xbcace2a5 wf_unregister_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xbfde19b9 wf_unregister_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xdb7c9c27 wf_put_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xe60a0273 wf_register_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xebda24db wf_get_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xed82a14f wf_clear_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xeec79b2b wf_find_sensor +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 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 0x7b488fb1 __tracepoint_bcache_alloc_invalidate +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 0x09371d0a dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2dc54c9b 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 0x4dc13c8d dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x5088d671 dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +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 0xc3d37a69 dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xd028cc39 dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xda925a2d dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xebd06eaf dm_bio_prison_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 0xafe1f8ca 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 0x367528e1 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xb442f37b dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xca2689e9 dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xcf5a1e14 dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xd5189545 dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xd6931fcc dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xe7bba3c2 dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x201ea34e dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xcb9e7f28 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 0x101b40f0 dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x5cb15e29 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 0xb0cb0d15 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 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 0xdb8649d7 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf37a3cfe dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfd93482e dm_rh_recovery_in_flight +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfe38583f dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfec21cf5 dm_region_hash_create +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 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 0x1cac81ac dm_bitset_clear_bit +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 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 0x2f74609d dm_bitset_test_bit +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 0x38c75c44 dm_bitset_empty +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 0x4b890977 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 0x68fae9d2 dm_disk_bitset_init +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 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 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 0xa0bbbb49 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa13861b4 dm_bitset_del +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 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 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 0xe44b4b9b dm_bitset_set_bit +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 0xf475af48 dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/raid1 0x5d173050 md_raid1_congested +EXPORT_SYMBOL_GPL drivers/md/raid10 0x8b57f67c md_raid10_congested +EXPORT_SYMBOL_GPL drivers/md/raid456 0x63fee0a3 md_raid5_congested +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x00101d64 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x0cd9dcf0 saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x0d962259 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x5a4a4731 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x8ac794a5 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xa35709ba saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xb37d626d saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xb7800c19 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xb822d360 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xc3a5f2ba saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x4586be39 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x4856a6ec saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x57f9d12d saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x5caccef5 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xa217faf5 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xcd3461db saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xf988d974 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x02bed4e3 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x186abe04 smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x282f28e8 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x32bac2f6 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x337bae82 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x3e8b1f66 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x5d86a945 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x63222b29 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x71cff77e smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x95b49898 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9f8492f5 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa861f48c smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa865d282 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xae8b6113 smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb9bd8af3 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd97deec6 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xdb4ff82e smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xff40662f smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0xf538e39d cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0xcb4b926d tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0x0e5df66e cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x00a2d871 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x03b0b9d1 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x184e6b46 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x23137c7d mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2c439311 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2d1d8c8c mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2ed0d9ce mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x31b0d10e mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x632cb492 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x6ee60582 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7a949556 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xade399df mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc287346d mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc403e310 mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xdb63ebd0 mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf6038bcf mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf81173f9 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x0171b27a saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x337ac046 saa7134_s_std_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x723a7daf saa7134_g_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x7c9b05f5 saa7134_queryctrl +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xb5e53df1 saa7134_s_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x22309dc0 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x55abb652 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x96bbef71 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x96cf6ff8 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xb8c6255d ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xe4d9272c ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xe5f7f287 ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x03df807e radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x45da0398 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x07f5706a rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x0ab79b92 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x0b6778b2 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x0d577233 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6340739b ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6343ed7c rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x66cd2369 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9431e570 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xbb1fe6de ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc4e6d3e1 rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc6364fcf rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc835550f rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xcf421819 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xcfafcf47 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd00c9e99 rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd405fd87 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd57c36ef rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe36b340c ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xffe85f57 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0x0a71d15a mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0xf84e2e34 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x271be4d7 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x46c2a20f r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0x0f4aa364 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x363a20b0 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x41fdeb47 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xeae6446d tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x5c9d5bee tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xa7d3ea76 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xe6f595a5 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x4a61498f tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xfa51dff8 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0xb61b2e49 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x0bf80ed7 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1dd473e7 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1ea8107d cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x276ccb08 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x38e31294 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x53312344 cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x57eb0dac cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x5f031be0 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x64e68e5e cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x71a39cf6 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x74923d96 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x74ad996e cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7693426f is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x914662fc cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa23d1188 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc775d558 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc8799e61 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xddbee19c cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xfd79b6ba cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x4ea3e94e mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0x8c746db4 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x06d685a3 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x302b4313 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x30bad72b em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x48965742 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x56a386cc em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x5d05b66d em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x805951de em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x93ec2c0f em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x9957a5d4 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa48a0d4d em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xaefdd011 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xb60ce0fc em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xdd11cf25 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xdfb22865 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x0d65f0f7 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x44ac35c8 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x638aa23c tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x8e3ce418 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 0x1687c25f v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x22023edd v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x2ec4c179 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 0xa4e88e77 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xd0f7c58d v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xdce935de 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 0x221d2fbc v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x36e8756a v4l2_find_dv_timings_cap +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 0x53105839 v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x6976cfe0 v4l2_valid_dv_timings +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 0x7eaf8e7a v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xb0891da2 v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0x31ae7626 v4l2_int_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0x4631cff2 v4l2_int_ioctl_1 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xa5228b24 v4l2_int_device_try_attach_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xaafaf1c7 v4l2_int_ioctl_0 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xf9895b18 v4l2_int_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x00772a4e v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0fef4368 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 0x35b4b0ca v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x47f0b93c v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4951dbbe v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x63fd9a3c v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8c81d9e7 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb4c2f4d0 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xba057012 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xcfdf5aa0 v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd2e1d01e v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xea16f1b7 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xecc35590 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xef2c86b9 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x06219d9a videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0adbd0de videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1df927a4 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2146b2c7 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x23580fcc videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3b1bf2c3 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5e1ec336 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5f69cde4 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x606fece6 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6bca0722 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6e46322b videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6ffc78f5 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7de02c90 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8a994b39 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8eab1537 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xacc7eff3 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xba46c5f2 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xbe2024b3 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc03f16d4 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc3573d2b videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xdf7541fa videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xea53ac6d videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf0a2ad1b videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf1f07f80 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x2ddb162b videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x7afad4a0 videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xf235f4ed videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x39a6d7c7 videobuf_dma_init_user +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x4457b23d videobuf_dma_init_kernel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x5af84f55 videobuf_dma_map +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x5c6f115c videobuf_dma_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x645ecf17 videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xa825c75b videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xb44f6847 videobuf_dma_init_overlay +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xc55b18e4 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xcaec09c1 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xe99a8099 videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x542a6d5c videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xd531f422 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xf874f28a videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0c71268e vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x167db769 vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x16cc90ec vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x184fcff4 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x19d9bef4 vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2120bea1 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x286bc2df vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2c8c9745 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x382c39d9 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x38c4edb0 vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3acc5e24 vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3b8f0bfb vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3eb9f3c9 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4d7bd854 vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x50724f2b vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x52579807 vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x537dce14 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x61cfa3a5 vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x71f5c74c vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x73295014 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x86fe353d vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8c5173e6 vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x93f9612e vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x96b51cf5 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x994e3337 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbb555517 vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbeb6bcad vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc6f063eb vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xca40c4fb vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd24d0a98 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xdbacc07e vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe91f5ca8 vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe920fbf0 vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf8de0ef5 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x04914bf6 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xa443d2b0 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 0xbfaf9701 vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x269b966c vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x516ebf97 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x916ab37d vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xb523271d vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0x0e65e53c vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x07d99f59 v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0dd22a91 v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1382cfcc v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x15df7597 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1ca39914 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1e969891 v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x351ab8f5 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3a5459f0 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3be29997 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6d5af97a v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7d23e4f4 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7dd3c179 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x80beb149 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x89a87482 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8ea127d1 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8ef4522b v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x97b6bc8a v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9fcaa0f1 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb076b388 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb1a0e309 v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc3b28bf3 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe827e9cf v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf379d52d v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x10d0dd7f i2o_pool_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x87555b19 i2o_sg_tablesize +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xa68501ec i2o_dma_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xc7e6423f i2o_pool_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xce3f51dd i2o_dma_map_sg +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xce5a52de i2o_dma_map_single +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xe38c82db i2o_dma_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xe5ce6c93 i2o_dma_realloc +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x0bec0f40 pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x78b974ce pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xb1736d11 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x1675ef40 kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x187964c3 kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x4b593221 kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x8348d67c kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x90068ca2 kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x95e37580 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xccdeaaaa kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xfd90d249 kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x3618fcb6 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x84c96e87 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xc8bf3c64 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x0a1c61ed lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x2468be59 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x8cfb8e35 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xa8a9a9b7 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xaa9afb90 lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xb178cbc7 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xdd1aa7e8 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x1795819a mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x45203fd2 mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x572fcaba mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x59473a28 mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x7561876c mc13xxx_common_cleanup +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x91912cbb mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x08db6b69 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x0c3baedc pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x14f32e1d pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x263fa4f5 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x28508b5b pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x35d1b954 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x630463dd pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xa74fb510 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xb4cc72b1 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xd3e31601 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe9f4987a pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x4fdea12b pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x671c1d37 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x79f3467f pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xc500c795 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xca2aecbd pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xd0685353 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xe3989427 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 0x07ae6aed rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1140c604 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2845edac rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x3f6a0dda rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4e5b2783 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5ed777eb rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x6d0e1c31 rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x734666a6 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x7834448f rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x84195933 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x924f2d30 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9d832fee rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa5acfa30 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa692aa26 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xaae1301a rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb17b9b1b rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc19cb114 rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xce1580f3 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe6905d88 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xea406bd2 rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xfd4d63ff rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x09693ed1 si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0f12f3e1 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1b0f848a si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1e7fd783 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x32bf1cbf si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3c48f3f5 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x48f31cb7 si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4929b3f4 si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5d739e2b si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x649c5da5 si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x662393b6 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x66a65aa5 si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x68ae98da si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x68d85d77 si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x732b5b77 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7cd4c5b2 si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x81083caa si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x84eed760 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x84f4d243 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9104f5f7 si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x983b2ce3 si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xabb5acea si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb14d169a si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb812fdb1 si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc88c2b5e si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xcc5e88e1 devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd48ac3c0 si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd5e41c9f si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xdf423c9e si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xdf9f1f6f si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe6c56c17 si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf48b4f85 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf7ab1d67 si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xfaad92ad si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x042308e9 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x5ce63fe1 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x7ebd188b sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xcec0bdd9 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xfd6460da sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x0374ed42 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x8b9b654b tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x8c5736ef tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xc6016b92 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/mfd/twl4030-madc 0x9effbf1a twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x786d3208 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0x46bfe4ed bmp085_regmap_config +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0x93e04f1e bmp085_remove +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0xe0e465d1 bmp085_detect +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0xec2f2ecf bmp085_probe +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x4fcd46fe cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xaa4cd8f3 cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xd32d5547 cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xe7d3017b cb710_pci_update_config_reg +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 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x05ed1d09 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x2e4d433a enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x3e09c23f enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x8e4f04f5 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x9d51df81 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xa66b15e2 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xb211d002 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x0aa52700 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x31d61fb2 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x481d0695 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x6c6bbd8d lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xa0503b7d lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xb6329b2a lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xe90d8089 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xf425f78b lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0xac94ebc7 st_unregister +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0xeeee7d57 st_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x11399b2b sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x3ef06ec2 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x4f33d773 sdhci_disable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x5056531e sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x623ab6e6 sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x74580d12 sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x7dfe815b sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xb9633685 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xd308146d sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xe496f313 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xf13077c4 sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x0345e187 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x0bf28819 sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x30358f80 sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x3d3d1d34 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x7eb44d8c sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x8734589c sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x9d549e79 sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x680c68cb cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x95124d5d cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xaa3b68b5 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x28ff91a1 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x56adda71 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xdb065e27 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x1b41b92e cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x0fb935e2 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x7a9e3c88 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xc63962b0 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x07f8c88b mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0daaa68e mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x187f61a7 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1a9201c6 mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x20d175dd mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x246b3c8c mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x26d4e37a mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x27472591 put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3353dde6 get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3bf7edae mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x42de31d5 get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x47c0a482 mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x48690a96 mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4f07e44e mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4f2441cf mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5c7e9738 mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x61ff5e62 unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6c3badc5 register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x70532713 mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x727152f3 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x75c89939 mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x77b557c5 __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x78a8c90b mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x78f06351 __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7bf30bc9 mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7bfac68f deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x833714f3 mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8d445b45 mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8e659d41 mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9f9f432f register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa14c1731 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa1ecd8c6 mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa53fdee7 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb8df7202 mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xba586308 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd77540cb __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdb11fbd7 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe3269945 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe77736f7 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe8fbf1a2 mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xee45558a mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x4be7ce2c mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x6ab82d46 register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x7469002e del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x83eb0c16 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xae46df2a add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x24a4f6f0 nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x6ec8412c nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0xf52c3983 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xd6c0c169 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xf20db1c3 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2c2c31d6 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2c538068 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x3a4fad44 ubi_open_volume_nm +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 0x7f155610 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x872d2ecd ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x9c2009ac ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xae652d2b ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb1875e7f ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb69bd7c2 ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xd58b4e1c ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xdbe446ba ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xea54e9a5 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf21e427c ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x3dda6d03 c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x5ce9ef5d c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x64570b1b register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xb7c48841 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xbb0741cd free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xe5788e8f unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x23d0fa03 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x31e0247f alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x49c0ee78 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x51eb9ada alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x578d13d0 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x819fe065 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x89aa9000 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x91e3a527 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x97fcc1e6 devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb7fe39fe can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xbb3d24ac can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xc1ae82be can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xdd5876b4 can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf0a2a870 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf8803927 open_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x53abe1ef register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x5ff6feae alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x630ef443 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xc238b83b unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x1b437477 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x5b8fe140 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x742c53dc free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xeca00caf unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x0727117b macb_mii_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x19a3d598 macb_ioctl +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x22956064 macb_get_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x2ddd046c macb_get_hwaddr +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x59b446bc macb_set_hwaddr +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xdcd793b1 macb_set_rx_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xf9b1fb8e macb_ethtool_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x002d80e4 mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x00be4804 mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x01da64c7 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0459f6d3 mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x05644f68 mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x05be6d3f mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0b6942a5 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0c3c930a mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0f79d4f9 mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0f8a4870 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0fd43ed2 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x10553df1 mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x12d12abb mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x14308726 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x153209c5 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x171c3c5c mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x17cc3c24 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1a7dad65 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1ae7a2bb mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1cd92842 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2e523406 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x30f8e68b mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x36c2ec83 mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3b296e60 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3ca6129e mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3cdefda1 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3d68796b mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3ef378f8 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x40fb3ebd mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x43e97eff mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x44887857 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x44b00c93 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5088d5f7 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x52211486 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x54766aac mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x57ce59a3 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x59d61034 mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5a9f71ad mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5b30920e mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5dd6cfac mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x60e6dc08 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x64e4d011 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6f3a98d5 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7008ea8e mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7154b5d4 mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7de3a0bc mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7ed700d0 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x823780ed mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x82778abe mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x859df8fd mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8aa54f5c mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8af5017a mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x913fc88e __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x91c4adea mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x929b047a mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x959b3693 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x96aa0ffa mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x97eb073c mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9bbea786 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa4318630 mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa6a9b7a0 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa6c78670 mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa7c6e113 mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa9a7e68c mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xae04a21a __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xae3f1299 mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaf69ced0 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb11181a9 __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb4abbe8f mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb569c6b8 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb76510b4 mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbcb15ae3 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbf73b6e9 mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc0753cdf mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc425f637 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc508d387 mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc83f08db mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc89b53a1 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcb1da897 mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xce18c3b1 mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcfda01b7 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd112249d mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd371b484 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd400748a mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd4fd8506 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd64e2e5c mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd72257fd mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd9827fc4 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdddd5894 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xde7081b6 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe0a62da4 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe0bec3a3 mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe156aa74 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe2354023 mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe247425f mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe2aa6b6b mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe4771192 mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xed7cb26a mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xefaef276 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf2d58998 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf42236d8 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf68e775f mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x038fecd4 mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0b3e18d1 mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1677b18e mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4adeb169 mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x63e33201 mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x692d7d72 mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x86cd812d mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa120a8c5 mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa130a44e mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaa78730b mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb63df3c3 mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc291ae3f mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd6c4ef56 mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe39b278f mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe7c2d331 mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xeeb15ad6 mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf14b3eb0 mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x31401225 macvlan_start_xmit +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x63fa1ef0 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xaa59ad95 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xc3f9e78a macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xe2398f28 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x68ba3d65 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x04b9a6a0 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x4d571f99 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xbde035f1 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xf960624e usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x43b60851 cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x97459288 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xc1a2629e cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xceaee5a3 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xdb26bbd9 cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xe0e428c9 cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xe79278f6 cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xe8ce1305 cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x218fda55 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x683e15c5 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x6b5854ca rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x8b0963ed generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xba720bb6 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xc6498b6a rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0e269753 usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2dfc0a8c usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3518c0e2 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3563544a usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4cad06f4 usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x593408e2 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5f4e37ee usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x65813095 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7300e1da usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x84e76ced usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x867aa8d5 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x86a7a6be usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x89a3c17f usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8abb525b usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8d6c6327 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8e8daccd usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x968290b8 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9b5f0bc7 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9bed7b8d usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa127ad90 usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb0d572f6 usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xccd6853f usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcef7aa86 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd411f1f7 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd585212d usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd8e86825 usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe3ad7496 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xed30d5a2 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf1bc39cd usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf2a51175 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xfaa9d471 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xfb48b08f usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x270edf34 vxlan_sock_release +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x37204509 vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x48ec3de6 vxlan_sock_add +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xa70a6945 vxlan_xmit_skb +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xdbf32eed vxlan_src_port +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x01b6a575 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x08166194 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x1f2c52db i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x2ae5e748 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x388f1714 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x398da272 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x54edfdf3 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x5fdd37ec i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x7d494dd8 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x810e46ed i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x895011d3 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8fe0bfe9 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xbb4f5a0c i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc811492a i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xcee35f29 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe4ccc9a9 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x621383ab cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x8a6e3346 cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x8c0afe15 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x988aa3ed cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x9fcb2fef libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x09c85e12 il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x62ee318f _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xa68f8aca il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xdd99189b il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xeacc1f63 il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x02c66d2d __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x05abfc77 iwl_opmode_register +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 0x13d1bc52 iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1ac36ff0 iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1d618675 iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2c0e0fde iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x34ea4f7a iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x367b7184 iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3d505377 iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3d548dab iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x46dacfa8 __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5720e619 __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5d0a212e iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x61485dd0 iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x639225f0 iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8388e421 iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x845bf7a3 iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x86096e0f __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8c5d5ab3 iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8d89aea5 iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xaa6d08eb iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xbace4e31 iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc67c31ed iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd7b64b17 iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe2d0034c __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf1ac6c5b iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x13e009e4 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x14ed62e6 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x162dba3a lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x185d0ea3 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x1ce3b810 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x2b69c7ee lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x32aae20d lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x361aa146 lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x652032fb lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x68eee3fd lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x76793777 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x7a15c8e4 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8c9d7071 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8caf5f9c lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb0fe598e lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf2a332b1 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 0x3d03f8d8 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x8009fd88 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x8264635a lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xaa53acf1 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xbb0c629b 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 0xcd8f27e6 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xebc4c699 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xee02e66e lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0x5facc9cd if_usb_prog_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0xd6223ff1 if_usb_reset_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x54dcfb09 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x55b0d055 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x73200ba6 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x7928fb9b mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x8d399d3d mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x8fcd9483 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x95958a47 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa065629c mwifiex_deauthenticate +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xca81f4bc mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xcc047b72 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xce505746 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd6850cc6 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xf3025713 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xfdb602cf mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x05b220c5 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x0c8953ad p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x4173aa3e p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x5b9a976f p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x5ddbefb3 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x86b8d8b6 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xa7b78815 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xe3a252ab p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xf01a8baf p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0b06fb07 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0cf8320d rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x16f2251c rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1b3776e6 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x23e1f7bc rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2a3ae5b2 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2ab7a188 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2b3769b0 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2de6e376 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x32952761 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3df07908 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x485e0992 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4a56c466 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x581e5a85 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5b6177ab rt2800_get_tkip_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5db6c0c5 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6a11b1cd rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6d75875f rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6e1c207f rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6f0d6c61 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7e6ecae6 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x87e7c45c rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9ab2a094 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9db1ffab rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9dccb07f rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xaf073a07 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb8ab036a rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc7d15bd8 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc950451f rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd057da2c rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd1f9ceae rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd2550565 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd46f5908 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xda4ec4e2 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xde1b2443 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe7ecf6f1 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xeb4dae88 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfcea08f7 rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x208c4f79 rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x4fa9e4c9 rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x56960175 rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x6223d497 rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x689e0d9f rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x69d5ee99 rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x6d8a2fe5 rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x79bebf3e rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x8b16d0b0 rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xa8a3d42b rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xbf731a94 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xd87b06f7 rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xec598d14 rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x02cba0d3 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0b5c4629 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0d55767f rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x178feda7 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1bb9d530 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x212a382b rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2eb96e38 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2f9f74c7 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x32843c9a rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3512b7f7 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x35832e8e rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x36921756 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3bc2ac97 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x46df5a13 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x480bf0f6 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x59eb17af rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5cbeebea rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x61b3883b rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x625fbf9f rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6f7661d8 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x73008a2b rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x73d23b03 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x75bbdb9b rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x909562a6 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x93fe77b7 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x95722102 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa12dc635 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa4ac26c2 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa8abd81d rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xaf0f67f0 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb3cd69fd rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb7e3b43b rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb89ca579 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbcdd7e84 rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbf768e0e rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc76bf271 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcaa14ab2 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd20c7755 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd5b64943 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd6f6fba4 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd98a56a2 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe397043b rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xeaa8a65b rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xed415dfa rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf948b25c rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfccbc6b3 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x50c7cb9f rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x554365e7 rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x7590b616 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xd272b896 rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xea036025 rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x563a8136 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x9cd800a6 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xdea15784 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xe0e4dfa6 rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x33d2f356 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x39097929 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x39c2c439 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x5926ce9d rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x73cdc02b rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x7bf4169e rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x84842742 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x86c474c3 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x89d0c906 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8b9e376c rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x90f002ea rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x911da7d6 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xcb6598b5 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xd6e0dd1b rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xdeceaba1 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xff0c3c03 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x54cd3168 dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x69c7797d dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x98be8380 dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa2d21ed0 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x0984af33 rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x0b9f67fd rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x1fdaf311 rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x2e35b540 rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x3fa8483f rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x473947bc rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x498df472 rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x547cb220 rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x5695a218 rtl8723_dm_init_dynamic_bb_powersaving +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 0x7557e24f rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x852066b1 rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x87eba0ec rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x9e65b7c8 rtl8723_dm_init_edca_turbo +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 0xb2729fd6 rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xbadb6749 rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xbd3a667b rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xbd8a5c13 rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xbdb65706 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd3457f46 rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd4829040 rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd8712f94 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xdb24b5f6 rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xe21377d4 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xedd47ff5 rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xf68ad0f3 rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xf6efd781 rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xfcd5fb92 rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x0018d8b0 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x0bb8f5a1 rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x0d0b6636 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x0d3f2950 rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x241dedc1 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x3d1142f4 rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x46166282 rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x4a8789b0 read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x518e8f69 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x690f1a6c rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x70b4ac09 rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x7af2ff2a rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x86a7cef8 rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x8869e6c8 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xa431da39 rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xa53dfd2e rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xeb0590a1 rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xece866fd rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf28cd04e rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf8ff6add rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x0e93bea4 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xa5accb4c wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xddb241c3 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x02a2e60a wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x05d62c51 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x09303341 wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0b9444d9 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3ba2ebe8 wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4044d7e4 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x48155380 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x642f7ce2 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x652dbf54 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6b42b783 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6bf28481 wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6c0929ea wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6dbbfb06 wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x87195d35 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x88f05550 wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8ad74a95 wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8d12505a wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8e3b2b73 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9165719c wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x91da5146 wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9c20508a wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa067b50d wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa3c87bef wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xaa064605 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xaa72b9e9 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xace156d9 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xaec0d7d5 wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xba3858cc wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc655a267 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc679646d wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xca20a6d0 wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xcd80cba4 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xce515595 wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd22f39c9 wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd37b328f wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd5b351eb wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd5da2143 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd9d4d04c wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdf226cc6 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xea3eeb6d wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf2b1534d wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xff63fbbe wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x19d042a9 phy_get +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x29a2dd39 devm_phy_create +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x2a6286af phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x2c48c8c0 phy_init +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x2fe116d2 devm_phy_destroy +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x4267a7c4 phy_put +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x4e177dcf devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x62cc86d8 phy_create +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x7d38f4f5 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x858dfc05 __of_phy_provider_register +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x8d78d9a7 phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x8ec648a5 of_phy_simple_xlate +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x90d9bf80 phy_pm_runtime_put +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x9b7ece22 phy_power_off +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xa2090cbe devm_phy_get +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xadd9ff7f of_phy_provider_unregister +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xae1a5e8b phy_destroy +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xb5ef8fd4 phy_exit +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xc3a6766a phy_pm_runtime_get +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xc3d11fd0 __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xc73365c1 phy_pm_runtime_allow +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xe0e1446d phy_power_on +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xff207b7e devm_phy_put +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x6b5e192d pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xa5b2c9ea pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xc203146f pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x80e5bb8b mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x84ec1fa2 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xbd59ae9c mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xd419c6f3 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xe7941166 mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x29c07f61 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x4232330a wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x5c5152eb wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x72a65757 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xa61ecebf wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xe04a5b22 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x38fe8b4a wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x078c6a70 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x11eef0e7 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x13835261 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x18a076bb cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x193753b7 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1bf62a69 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1f2173d9 cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x204a41e7 cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x22b8a2a7 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x23fbe5c7 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x265f42e7 cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2ad07494 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x33a1d34f cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x358f3cb7 cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x38df6d58 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3ac34310 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3ad149e7 cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3f3ca28d cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x448398dc cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x525a5b94 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x52e9ed81 cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x55e94b1c cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6b9f04c4 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6fe8b150 cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x719ff6b2 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8684dc7d cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x88db6ad6 cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8e6cba0e cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x98bfc87e cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa573f284 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd59b3502 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd7719db0 cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd80ac997 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdc857c6b cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdf3260eb cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe20830e8 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe569e07f cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xeaa2ebbd cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xede51c3e cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf0b1218b cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf18365bb cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfb10d87f cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfc0bf734 cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfd1f61a3 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x25e7b4c6 scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x32215043 scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x4b3bcf98 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 0x8b17100b scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x9035a211 scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xdce43ff5 scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xeb3479e2 scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x2517c02f fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x3800ad2c fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x38af48ca fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x602bdf0b __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x644958b8 fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x764ce07b fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7781f844 fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x8119d398 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x89dabbc8 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9461bd6e fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x97017474 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb91131e7 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xc41b364f fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd9a26050 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe9e37e3b fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xfbb55230 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x043f0157 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x235b4feb iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x440f4909 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x82bf35de iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x9cea26eb iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xcf21e418 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0173c430 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x06e1fe0d __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x088615a8 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x137ee9e9 iscsi_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x165899ad iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1f14e2f3 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1f3a15c6 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2fa3f987 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x36c519fb iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x376d2954 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3e58ca7e iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4399a072 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x43d6a690 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4fa7af1d iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x575256d6 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5ced2682 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x60375661 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x60f5533b iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x64cc80a8 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7c407842 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x85f571ca iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8c55114b iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8e066ad3 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x93daf1d6 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9b6bb63d __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9f16f3c0 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa0d76a7a iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa6b6062b iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa8c3d7c1 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xae2c940b iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xafd5c165 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb0950a9c iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb106fe6b iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb13dcf11 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb98b71a1 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc34c4f45 iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc54c1925 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcbc26be8 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd1b2cb73 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe55c3ee3 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xeb236335 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xeccd5bb5 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xefe3ffe3 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf46e7e7d iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x1dc98b00 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x2abce9fd iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x42dc8754 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x574e7913 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6a14a9a6 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x74e4fc34 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8282828b iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xacfc8dc7 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc236b146 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc2b67034 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc4cc1a51 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc560e01d iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd2740626 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xdd61ec2c iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe6e5d3c0 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf71d88b1 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xfa2743e4 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0eea1f6b sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x37f6f77d sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x41c5aca2 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x48f9b208 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4c90029f sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x52a98da0 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x531739ca sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x571503e2 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5871a158 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6388f85c sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x68c4927b sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6d9240c6 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7ab0df87 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7c3b2abe sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7f381e68 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8bb0f4c6 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb4557c06 sas_change_queue_type +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc142a8ea sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc66c2086 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xce66b5ce sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd4a53abf sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xda97de07 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xdf7545d9 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe170f800 sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe45665c6 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x104c4cd1 srp_target_free +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x4b0d110d srp_iu_get +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x5a70d652 srp_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x8166f351 srp_iu_put +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xa3c435d8 srp_transfer_data +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xbea7bc73 srp_cmd_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x0ff17621 scsi_tgt_alloc_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x32fc5116 scsi_tgt_it_nexus_destroy +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x8dc40cac scsi_tgt_queue_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x97eebb4f scsi_host_get_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xa94424ea scsi_tgt_free_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xc7d8a8fb scsi_host_put_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xcf75fcd5 scsi_tgt_it_nexus_create +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xdf6570b5 scsi_tgt_tsk_mgmt_request +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xfae092f0 scsi_tgt_cmd_to_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x002b6d22 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x02a6e469 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x10ea7396 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x13d674af iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1ea74ac4 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2056a2fb iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2876902c iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x345c8ee7 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x34de37f5 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x37733592 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x43ce48b0 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4c520703 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5205f5dd iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x524e4e7f iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5eef611e iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x64fc08a8 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 0x6f17ca64 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x73afc8fb iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x79361d4d iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7f5952c7 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x846843a8 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x89a0ffba iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8fb6584f iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa85e0312 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xac95c2a4 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb46aa974 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc1310331 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc458b2d2 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc96d611d iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd3541555 iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd7d82896 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdb0144aa iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdba6c167 iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdef79050 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe236aa3c iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe250597b iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe3d3a61f iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe9171e44 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf72a5970 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xff1966cc iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x1c62d5a1 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x385b3564 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x527eeae5 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xa3fda421 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_srp 0x28fb44fe srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x64805aa3 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x6eb34f1e srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x76f2b62a srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xc194cec9 srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x0bb4fca6 ufshcd_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x43598a02 ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x4c438798 ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x84ae2930 ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x9b48cf41 ufshcd_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xe28a3079 ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x21141d4f spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x38f6164c spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x4fe9dfce spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xea8172f9 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xf816dc7a spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x610b8848 dw_spi_xfer_done +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x740b3956 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xaf6f11db dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xf703ad88 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xff88be73 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x9d9432da ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0042b0a1 comedi_buf_get +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0d3ec2f1 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0ff5d1cd comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1910a6c7 comedi_dev_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1aeaf0a3 comedi_buf_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x213e7cc7 comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2328a53f comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x288d22f9 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2a3f94f0 comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2d054ed1 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x325d8402 comedi_pci_disable +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 0x53697eca comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5b7fe95c comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6047b4c7 comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x62dcd466 comedi_buf_memcpy_to +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6412b5f0 comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x66526b95 comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x68f46729 comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6adc0282 comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7ff573f6 comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x83d1700b comedi_pcmcia_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x90f59969 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x92dde28e comedi_pcmcia_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x97a3ff1a comedi_pcmcia_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9b894868 comedi_error +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9e82ecd8 comedi_pcmcia_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa12d7cb8 comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa50cf1a3 comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa6d64ad7 comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa7f52f4d comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb000c9fa comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb4ef254e comedi_buf_memcpy_from +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb52edf81 comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb679cebc range_0_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbafa774e __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbb52fc7f range_bipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbd66dc24 comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbdbe75c6 range_unipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbfb5fd36 comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc6a099c5 comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xce586d89 comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd3ac7029 comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd5b7e5ae comedi_to_pcmcia_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xda75b86b comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb8f8503 comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe739b2e0 comedi_pcmcia_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf301e816 comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf9fbd1e8 comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfba95492 comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfc52e415 comedi_pcmcia_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xff101be9 comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/8255 0x2e26a594 subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/8255 0x43f66097 subdev_8255_init_irq +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/8255 0x7b6e6879 subdev_8255_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x79f4a6cf addi_watchdog_reset +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0xb838cef6 addi_watchdog_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x462c91e1 amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x787c346a amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0xbe2147be amplc_dio200_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_fc 0x21469696 cfc_write_array_to_buffer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_fc 0x3553a76a cfc_read_array_from_buffer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_fc 0xaa96238a cfc_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x2e3b0bfc das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x0133ca3b mite_unsetup +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x0ef1945e mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x1278525c mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x13914932 mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x1cbb374f mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x362ef392 mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x386a251b mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x483182d6 mite_setup +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5877bd16 mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x599ea678 mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5b1fce6f mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5bd0bbb9 mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x638aab5b mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xad2b2a3c mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xb6fc3ce6 mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xbb1b2968 mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd2828f9f mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe1eb4d0e mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe212c511 mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe2c99f2c mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe8ab70a7 mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xf599bdd8 mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc 0xe84a0733 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x2cf67dab ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x3989127b ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x473e56f7 ni_tio_winsn +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x55e862c0 ni_tio_rinsn +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x5f21e41f ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x9584b5b8 ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xbe28b814 ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xc7d9468f ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x1d5e4098 ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x5529a818 ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x5ba8b891 ni_tio_acknowledge_and_confirm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x97f8bde9 ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xdfc1cc68 ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xfc172f6d ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x18c07d77 comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x1c245588 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x28c5d8b2 comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x41653e23 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x9f166d67 comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xb5479674 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xcc250e77 comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0x2206b003 dwc2_handle_common_intr +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0xb05a818c dwc2_set_all_params +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0xb26227cc dwc2_hcd_remove +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0xe4e71596 dwc2_hcd_init +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x1a1b5249 oslec_flush +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x2feda75b oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x3227a28e oslec_snapshot +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x7dc9dddd oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xb2c66001 oslec_create +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xc8b5a524 oslec_free +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xd370f679 oslec_update +EXPORT_SYMBOL_GPL drivers/staging/rts5139/rts5139 0xbd5a0e51 rts5139_usb_ids +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 0x20e5ba06 spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4449e1dd synth_buffer_clear +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x572ff6ae spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x58175e7d synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x5c70aa6b spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x706cb900 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x71f26c92 spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x74efd763 spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x96866ce0 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xa38782d1 spk_serial_synth_probe +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 0xbee62989 synth_remove +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/usbip/usbip-core 0x18b36496 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x28f8995a usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x43475215 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x4adaad78 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x774de75e usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x9def9dd4 usbip_recv +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xa7f51090 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xb8181e91 sockfd_to_socket +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xcfad6aec usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xdfcc900d usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xe2613ec7 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xea332814 usbip_event_add +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xf5d7a8b2 usbip_start_eh +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0x824b36d0 pciserial_init_ports +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL drivers/uio/uio 0x261e1b23 uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0x6d0ba81d uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xfb85ef73 __uio_register_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x351894ef usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x8adfda5d usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x07a5358d ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xe1fbd5c0 ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x170e9bea imx_usbmisc_init +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x74750d38 imx_usbmisc_init_post +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x147acf24 usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x18bd94d5 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1cdb28a1 usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1cdfd359 usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x25a69c21 usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x28f925bc usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x31a0a024 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3bd4fb00 usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x41b7b3d3 usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x443bfa77 usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4568f96a usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x489a8a7c usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4abd3edd usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5c76360c usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x60946917 usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x70cd27e6 usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x79dc8f17 usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x872ccbf3 usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8f16207b usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa180c510 usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa19d6c87 usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb8d548c1 usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc6a843ed usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc7527568 usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd783e1d0 usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xdf03285c usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xeb5cd500 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0x2ee95103 gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0x8ade8069 gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0x8e27d6de gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0xf1981607 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x05ac74ac usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x14a3a67a usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x225616cb udc_attach_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x43b14fba usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x7b1d91d8 usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x848b04c6 usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xa08fc9dd usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xac6fbee5 usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xf3771da1 usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x0a5230df fsg_common_set_nluns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x141fce2a fsg_common_remove_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x1ccb58f7 fsg_common_set_num_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x28e038c7 fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x2d10b6a7 fsg_common_create_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x4699a326 fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x51707c29 fsg_common_run_thread +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x6acb4179 fsg_common_set_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x7e26d4a5 fsg_common_set_sysfs +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x99023bfc fsg_common_put +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x9a0221c7 fsg_common_free_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x9dc025a5 fsg_common_free_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xa46e6443 fsg_common_get +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xd3ae3b65 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xd468f882 fsg_common_set_ops +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xe4d1591e fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x323effc8 ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x7c3768d2 ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x19a5f8bd usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x3d246944 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x6f09090b usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x9265d65f usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xaca7c6d6 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xaedb404f usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xd105afb9 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xe9046aa9 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xfcd48cde usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x8458c611 musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/tusb6010 0x8997c837 tusb_get_revision +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0x32ab8d29 usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0x7c5ba48b usb_gen_phy_init +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0xbcd35bc7 usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0x01f4cdc9 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x291a1abf samsung_usbphy_cfg_sel +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x50d3016f samsung_usbphy_rate_to_clksel_64xx +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x70b0956e samsung_usbphy_set_isolation_4210 +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x796cc8b5 samsung_usbphy_parse_dt +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x80e1b59f samsung_usbphy_set_type +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0xd5ad6fa7 samsung_usbphy_rate_to_clksel_4x12 +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0xde2100a6 samsung_usbphy_get_refclk_freq +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x023fe994 usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0433ee7f usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1cb1a416 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2035105d usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x49a1d10d usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4b579730 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4d94425e usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4f95a5ed usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x503c1f9a usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x510dd020 usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x57610fb6 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5acc22b9 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6205399d usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6cbf8e34 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x74fa1ddc usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7cf9c124 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8336f644 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x97a4c9f5 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9e8ef4e2 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa933372e usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xab4a7b7e usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd95deb7d usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0c466f9a usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x14041df7 usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x165d4d75 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 0x207ab60f usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2d429021 usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3d8cd324 usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x45f62ea9 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4727c927 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x58b94271 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5bbad1ff usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6b2a5e59 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x72eef765 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x756c2d86 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x929d51f1 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9a9e7e6d fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9f9fa1ce usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xac3c8426 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xcb31e0c6 usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd5ddfe6c usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xec66c680 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xee65c4c1 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf765f188 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x5545c963 wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x861c7ea8 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xb2a963d0 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 0xd9ea4514 wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xe46090d2 wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xef70ec17 __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 0x17d3ae8f wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x181349bb wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x37f0d801 wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x42b06f8a wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x479f3557 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x4c70c94b wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x51fbc678 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x5c5075f8 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x64d79a11 wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa7a6094d wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xde61d982 __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xe94cfe75 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xeebc17f9 wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xefc0fa68 wusbhc_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 0x8e130a23 i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xabc83410 i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xd07758ea i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x17010061 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x4ee01529 umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x7c9d87bc umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x9397bf4b umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xd56b6f1d umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xee5996b1 umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xee5fee35 __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xf09a22f7 umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0b8aad57 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0bf3f381 uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x123ba58f uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x174152b0 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1922c028 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1b553400 uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x20c89433 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2284049c uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2513a9a0 uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2be3bd7a uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3a560331 uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3a8a9bda uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3ca114d5 uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x49c21d90 uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e4bc088 __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x60c93dc0 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6bfeb6dd uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6f5509f9 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x745d7f55 uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x755b87dd uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7c5d40d1 uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7dcfcd23 uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x878f0bc2 uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa255a13f uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xae6b4ab9 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xafb783b7 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb6506246 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb87157a7 uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc29ae79d uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xcd678fe9 uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd1f043d3 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd2ecaad6 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd5c7d52d uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe1716f06 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe55e655e uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe82b0ee2 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xea4b6a16 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xeea1df52 uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xefd9191d uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf6802221 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfdba1c06 uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/whci 0x3cfc92cf whci_wait_for +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x053b0db5 vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x06cc5b48 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2131c052 vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2e1e5585 vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3826c6c0 vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3c370b5f vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x47ba05e1 vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x49e7f5ef vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4c196806 vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x60953c39 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x68a87897 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6d6e08e1 vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x76c911fe vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7e127bbe vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x807be078 vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8231eaf1 vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8723dcc9 vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x93c1f37c vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9f8a7b1f vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa23ab1ff vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb0f81e37 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb18b9bd8 vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xbc5f70c6 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc084a030 vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xccd8a6c6 vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe3b83c3f vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe5294e14 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xecf4f722 vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf1c21a20 vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf2ea1fff vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x18e53b10 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x2527ca10 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x2efd0c8b auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x31a44f51 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x7e6d33a3 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x92aef47d auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xbdebf78a auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xca5c9f5c auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xcfdaa716 auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xfe118dd7 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x0078a3e3 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x2f4f2b9b ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xdd8b7d67 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xe57cacf4 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xfe075ee9 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0x6df86be9 fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0x83d21ddb fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0x504b2e2d sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0xfbe382cd sis_free_new +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x1d97dd02 register_virtio_driver +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x4ee6b947 unregister_virtio_device +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x753388e1 register_virtio_device +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x859007a1 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0xc6d2115e unregister_virtio_driver +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x1480c241 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x25b5a12b vring_transport_features +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x26b077cb virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x2e917853 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x401ab9d6 vring_del_virtqueue +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x45ade2da virtqueue_add_sgs +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x54f5fb07 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x64178b1f virtqueue_add_inbuf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x6a362c0e virtqueue_is_broken +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x795d61ef virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x7fd5ec16 virtqueue_disable_cb +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x84d78610 vring_new_virtqueue +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x90a31420 virtqueue_enable_cb +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xc536f34d virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xc726782f virtqueue_poll +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xd1e812da virtqueue_notify +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xd865cfc4 virtqueue_kick +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xf6025616 virtqueue_get_buf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL drivers/w1/wire 0x24695a5d w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x3f76a7bb w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x50671a3d w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x5b3b344a w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x65f475b0 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0x76debb50 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xa8441544 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xc1f39801 w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xc435b842 w1_touch_block +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x54083698 dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xb3efcf40 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xf04d3d06 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x198d4263 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x319e1cb1 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x64b15c78 locks_in_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x698888e7 locks_start_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x6c25dd1b lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xa381734e nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xc0e21f75 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xc93323e8 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xeafb7e5c nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x02b62b82 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x02f76c05 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x03b36f5d nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x05626f77 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x061323a9 nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x068fc40a nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0859e270 nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x09590d1a nfs_file_splice_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0b7f2a2f nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x13f050d4 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x14b7b726 nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1531a05b nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x15b3be8b nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x16097b9c nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1876cbe3 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x18e765e3 nfs_readhdr_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x19326eee nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x198a7868 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x19b26fcf nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1aa1be58 nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1af6c6a8 nfs_generic_pagein +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1c81fec8 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1cec1cf9 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1e1ce0cc nfs_readdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1e583996 nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x25b24017 nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x267ab059 nfs_readhdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26b2a12b nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x27e1a4f9 nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x29cd1c5b nfs_pageio_add_request +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2c51831c register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2d4df19d nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x303ab793 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x30c9a6da nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x33598676 nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x369d1dd0 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x38bfe7af nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3b426c94 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3e9855df put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3eb21908 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f3cd089 nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x418a2d4c nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x428fe6b7 nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x47a63700 nfs_initiate_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x49f57a10 nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4d3865a2 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4d6716d6 nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4eb955cb nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51b3aedd nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x52142758 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x53cb135f nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x53d5a45e nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x54177602 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x55d16e0c nfs_generic_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x58d3d54c nfs_writedata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e4e92d3 nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5f348546 nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6105ac92 nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6713fd36 nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x68ffdabc nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6b79e14a unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6c3b268b nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6cf3272c nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x73c46b4b nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x74190418 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x75d23e93 nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x76f331e4 nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x771f9b39 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x77c113be nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x79647e7f nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x79dc8f3c nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7b319902 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7f363a7f nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x886809cb nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x89bc5a64 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8a23286b nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8a598fae nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8eb3e182 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x905ebd0a nfs_setattr +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 0x930e965f nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9584b556 nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x974c0da7 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x97f5f58a nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x98856cd9 nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9cee9530 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9d6e8f78 nfs_initiate_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9e279d52 nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa0ee2b3e nfs_pageio_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa25a6458 nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa3900797 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa5069ded nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa589eaca nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa753cf5a nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa816c1ae nfs_post_op_update_inode_force_wcc +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 0xabd53eac nfs_put_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xad5b6b06 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaea6e29b nfs_writehdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb0af2348 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb1868a5e nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb1971375 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb19bb92a nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb4701b02 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb789bfcd nfs_writehdr_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbc55b1e8 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbf13060b nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc081479c nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc2857d15 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc39a90ab get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcacfd213 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcbbbe181 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcd9fa7ae nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd02749f2 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd28a7d97 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd8b4e291 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdc3e2339 nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdd673e6d nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe237101b nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe59bb41e nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe656b108 nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xedc84075 nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xee02f113 nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf6760e60 nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf7a1f504 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf81bd80e nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7ee006 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfd033725 nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfd2a1a87 nfs_setlease +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfe99f373 nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xffc7ef0b nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x04aa5aab pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0c00898c nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0e389399 nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x11bda27c __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x12220366 nfs4_insert_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x12feafdf pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1cebaf13 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2038eb7f nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x232c60e1 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2ae57c63 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2d98cbab nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2dfb1a91 nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3587f632 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x361d3305 nfs4_proc_getdevicelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3b699f09 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x443280b5 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x46d989b6 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4ec88bdd _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5f4740d4 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x665fa50e __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6c3dbb09 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7ccf4d11 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x858d6097 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8ce17ccb nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x963a4c99 nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9f108c9a pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa374936c pnfs_writehdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xabd0a419 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xaf704b3b nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb03c4bbb pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbef9e429 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc0085198 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc2a4bb7e pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc866216c pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xda89f3db nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdb813e84 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe60b8e2f nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe8c5e8ee pnfs_readhdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed08670e pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfa2f5eaa nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfb8e978d pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfd195ead pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x13329f67 nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xf483b890 nfsacl_encode +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 0x345e3502 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x37402bc7 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x5571feca 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 0x8dab4147 o2nm_get_node_by_num +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 0xbc7e3463 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 0xe8daaba8 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xebace91f o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x0064c99d dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x40ebd458 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x736d349c dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x85a9b696 dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xa3315c6a dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd6c9f7e1 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 0x025e2d69 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0562c415 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x16b2e575 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x3d5c1873 ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x5469ce31 ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x7083dbd5 ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x89502fe7 ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x90fe949b ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xb4bd060c ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xcb1fa46d ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xdc823ea4 ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe2bd47db ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe417d940 ocfs2_dlm_lvb +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 0x5cec6361 notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x9b78d983 notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x021957e1 raid6_datap_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x05513b71 raid6_call +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x0f8a2742 raid6_2data_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/802/garp 0x5eaf6281 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0x9611604f garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xa36a73ee garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0xc77d50c4 garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0xc7f881c6 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xccbf6f0e garp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x031b0eac mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x364f912f mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0x54b01ac5 mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x704d3d99 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xb7f09b08 mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0xfe4920b5 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/stp 0x2b0535a7 stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0xade7bfa7 stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0x38b96338 p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/9p/9pnet 0xa1c9d0d2 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 0x0f36cc89 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 0xfca9e673 bt_debugfs +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0229507f dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x11a82a09 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1f1ea20d dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x230b4f37 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x245992e2 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x303eaac8 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x505d6b97 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x577a36d1 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6986db6a dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6c0c7b99 dccp_insert_option_elapsed_time +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6d26f984 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7a4f0189 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x809eba93 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x82a3127c dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8788aa81 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x91b0551e dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x953d9967 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9de87784 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa1c7a2f6 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa67e9863 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0xacd2c888 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb007b082 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0xba3bc064 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbd79ff68 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc40104ba dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc9ba5f49 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd1089991 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd847487a dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd91c17f3 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdeb6d4ec dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe82e469b dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe9c50304 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0xebf6fc50 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf3017e21 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf764e4c7 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfdc5eb3b dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x0590f3bd dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x3a6c69ac dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x4024124f dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x6d3e6b71 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xc740531b dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xea2c7d12 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x4bb4d7fe unregister_switch_driver +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xbe71dfe9 register_switch_driver +EXPORT_SYMBOL_GPL net/ipv4/gre 0x9ba63e9f gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xcb8d050b gre_cisco_register +EXPORT_SYMBOL_GPL net/ipv4/gre 0xd97db33b gre_cisco_unregister +EXPORT_SYMBOL_GPL net/ipv4/gre 0xdc58b187 gre_build_header +EXPORT_SYMBOL_GPL net/ipv4/gre 0xeb161914 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x4fd7593a inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x55df3be5 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x61b019ce inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x6c5d53d2 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xa38c901e inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xcc47e8e7 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x1659b6af ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x325b2c42 ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x39224299 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x520316cf ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x56445abc ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x572b5684 ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x65100625 ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x70dfd56b ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x894f9418 ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xa9836bb4 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xaa97fb9c ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xca64ed7e ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xe17d92c4 ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xec339706 ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x01039dc3 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0xda4ee0fe ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0x6d40a921 need_ipv4_conntrack +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xe966f947 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x205ad37f tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x40b70cf6 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xadea9b87 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xb6108097 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xe63a6698 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/xfrm4_mode_tunnel 0x3e068028 xfrm4_mode_tunnel_input_register +EXPORT_SYMBOL_GPL net/ipv4/xfrm4_mode_tunnel 0xf4867e1a xfrm4_mode_tunnel_input_deregister +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x32109cf2 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x4e9349e9 ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x665bb82c ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x848916d9 ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xe553fca4 ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x8bde027b 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 0x2fe5750e nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/xfrm6_mode_tunnel 0x3e16aeb8 xfrm6_mode_tunnel_input_deregister +EXPORT_SYMBOL_GPL net/ipv6/xfrm6_mode_tunnel 0x4305e5d3 xfrm6_mode_tunnel_input_register +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0df38088 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0e742502 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x60f3807b l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6a80f26c l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6a8215dd l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6d9afa7c l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x7ab69e95 l2tp_tunnel_sock_put +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x7e6d65c9 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x83321626 l2tp_tunnel_sock_lookup +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x8c405062 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa9146e9c l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xaf1ad413 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xb014a9dc __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc761fb1a l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe199fb58 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe3e5a7b5 l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xfaff0227 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x96b40892 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x0e8e97c7 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x2ee1dcf9 ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3663a36d ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x4bf42798 ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x4f88727d ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x531a0cfd ieee80211_iterate_active_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5d38f601 ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5e8aba4a ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x6fadca75 ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x77697cab ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x78bbcc16 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8de35f59 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb14245d5 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb72e2b09 ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb9d9b811 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x204c6c6a ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x25d85780 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x300d2247 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x37063b85 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 0x52c04dd4 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6344eaf6 ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x642d8176 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x743003b0 ip_set_nfnl_get +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 0x93e03854 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 0xa1711523 ip_set_add +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 0xbb4597bc ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd399e16a ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe22b12de ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe527bd8e ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xea835e21 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xebfb4e60 ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xef13ebbe ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf2ad6178 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x597ae929 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x644fbcf5 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x9c5e3e9a register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xa53ada56 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x01e37f76 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x01f84db5 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0764f2ef nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0ab8bcac nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0bd0fc59 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x108e3fde nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x14ac9c7e nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x154c222f nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1c31688b nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2053b788 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x25a3252e nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x277a40ad nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x294827d4 nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2ed10550 __nf_conntrack_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3103cf80 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x36203517 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37522c5f nf_conntrack_flush_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f06a528 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4080b218 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x41565ba0 nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x427f0bc3 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4bcb46a1 nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4d5c1ab2 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x53a1dc94 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5e4b5ea0 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x606ab59f nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x64b1e76c __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x671251b0 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x68b219ed nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x69471496 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6a5e270a nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6f29ece5 nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6fff8279 nf_conntrack_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x710d74d6 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x71fd2c4f nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x75432173 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x787f79ff nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x797de8a3 nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7b705abf nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x80767564 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x83aea5e9 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x86208fd4 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x86a7f8fc nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x86e0d439 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x86e598cc nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x880c870e nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90f91708 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x93c00da7 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9403578f __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x94869dd8 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x95f7dd53 nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x973f9f7a __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x976c9af5 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x987b9805 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9c14c8a9 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa55af877 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa8f2dcc6 nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xabe3c129 nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xabece9f7 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xac22e9d8 nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb0b1d8b3 nf_nat_seq_adjust_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb0d22208 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb1b97850 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb6eda5ef nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb8446e82 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbab71eee nf_ct_l3proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc9717f70 nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc9fca626 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd0da2760 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd34c3816 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd37b853e nf_conntrack_tmpl_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd4f65cb5 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdad850be nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xde911448 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdf4c11e3 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe36a4425 nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe424e865 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfa380402 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfdab7deb nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xffc34401 nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x794489fc nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x11b28d7d nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x36a6b3ec nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x5899c15b nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x5e6604ec set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x621b0050 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x67247512 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x79b7c8c8 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x84b97a6e nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xaf2eedf9 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xb2025eac nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xbf4910f6 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xfdfca038 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0xc8444f0f nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x146bd801 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xc51a81b0 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xe15a2639 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xfa93d9da nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x97355016 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xb0a1d155 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x00958e30 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x1e1fc8da ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x2d501d45 nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x4d7400d4 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x5aaf88f0 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xf17ebdeb ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xf5ca7f98 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x8643bb42 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x12b3ea51 nf_nat_tftp_hook +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 0x3691d9ab nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x41196017 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x7ae61797 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xc18f870f __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xf65c39ba nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xf6924dad nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xf9fe001a nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xfd90a780 nf_nat_l4proto_unique_tuple +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 0x9bc58c6a synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb42e336a synproxy_options_size +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xde27a1e4 synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xef7db50c synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0fda3c99 nft_validate_output_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2523b557 nft_do_chain_pktinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2a52ece2 nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x31c4b476 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3d49dab7 nft_validate_input_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x4b756d54 nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x69acb61a nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6d3c49dc nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6fc5f28c nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc36960dc nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc9e6aff9 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd132d82f nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd86cdb09 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xdece7525 nft_validate_data_load +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xdf419684 nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x0e928ea6 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x429e91f3 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5a73691c nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x6e7c2a87 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xd7284bb8 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xe8582b56 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xf257ede1 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x6be70a09 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0xe8dbabbe nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x02c4f07d xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x12c0a35e xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x24c8e482 xt_copy_counters_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2858ddfe xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x352a44a2 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x68075391 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6c52d6c6 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x726f1b8e xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7ccc5f01 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x96eefa83 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9b2a7fb5 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xabf3fbc7 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe05810ee xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf548de9d 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 0x0df75325 nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xb2e06a0e nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xd47dbb7b nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x00b4c3d4 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x044d6be2 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x06643548 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x0ed2c719 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x1878be38 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x1af8b010 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0x21155a58 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x2331ed29 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 0x338741d5 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x36e22684 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x3a46c784 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x44d30878 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x47338bbf rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x4de149d3 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x59435295 rds_conn_create_outgoing +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 0x7dd2ce0a rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x85df614f rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x96fafe85 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xd69d4111 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0xd78106ea rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xdacb3aa6 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0xea04055c rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0xf8f90276 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x0d1828e5 rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xbae93b42 rxrpc_register_security +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00c52ef5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb5dea7ef g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb7443289 gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xbcc4a1d3 svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xc6c54a22 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x01f32722 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0284f6a1 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x02baa846 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x02c6e063 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05cd1d48 rpc_killall_tasks +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 0x0726dbd3 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x07d1d35b xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x084285de cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0fc7e099 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x119e2e8f rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x12f9a510 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x13ea7ff2 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x15eb1703 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x164b30b3 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1659efbb rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x17c2d4be auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x17dc6bcc svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1836fc6c rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x186efa38 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1a02248f rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1aaf7427 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1be711b2 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x206374ff rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x20cd98b1 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x24e5794d sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x25c8fb88 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x26ed7228 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2bfd1fc9 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d20a4c3 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2da6a46d rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e1aea1e xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e495487 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eae83b2 rpc_localaddr +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 0x31958982 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3235d51a xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32612c5d svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x332597b8 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x333d6d94 rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x33706bda xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x35448c65 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3570dcdd rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x36e4ec97 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x372e46a4 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x39055485 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3a40aa70 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b648ce0 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c7421f6 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3df4641d cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f4df80d __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3ffcb646 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4011ebe7 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4188381b xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x41d73eb8 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x43b87c34 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x45e3c609 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x475b4557 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4813796f svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4ebc5c2a xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5085f019 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5424e265 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x54e3f1fd xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5652f5b0 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x56b343c8 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x57f5a84a xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b95d8dd csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5cfc4006 rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5d0b9f09 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60ea5139 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6124366f svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6164de32 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x63d84430 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x64284a8a xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x642b5d0c auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65730e1f rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65745623 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x66dbc2e1 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x67bf7e48 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x67e5d16d xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6852851e svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x68798639 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6c56521e rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d3d2ba5 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6ef68d91 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x72c546cf xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x74068a6f xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x760ad250 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7708ced9 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x78632f63 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x79355ae7 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x797350c0 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a934774 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ec83232 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7fed1247 rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x800c98bd xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8013f195 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8134e286 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83656663 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x848d8b4b rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x85f54685 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x86780ad3 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x86f04580 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8769eb1c rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87e37782 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x88fa9d2d rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a215515 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8c696419 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d0dc3db svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ecc4630 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8f818a70 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9029e2f2 rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x927e1488 gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x932ab825 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x93c0f11a write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x94ff2bbb svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x96cdb63a xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x971526b3 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98e9ef2e rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x995546ff xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9b5a82e4 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d783190 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa0ffc448 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa16eef8b xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa185601d svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa201df5c svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa33e6543 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa46afdcf rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa57cd837 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa5eda911 rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa60c0daf rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6418f76 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6908ef3 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6c0b8b1 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa798ebbd rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa79adeac svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa8b792ad svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa8fdde67 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9743377 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa98daa92 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xabf16f01 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xace80116 rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf52b1bb svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf7b1213 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb2da3da8 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb3a8062f rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb6738a26 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb740125c unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbaf8fd57 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb631c3f rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbd983097 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf3a40d2 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf8e7146 xprt_setup_backchannel +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 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc45e6bb4 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc5caba27 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc7a41a8d rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc9f77342 svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcac92f13 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcc03bfae rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd00341df sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd3c7e457 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd467312e svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd4ee3283 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd95bfb21 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd827122 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdfb55913 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe11ca6be xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1d3215f svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe2c12210 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe34bc639 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe3f11071 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe4c7fb6e xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe4db1936 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe68d8bc0 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe7df4a5c rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe801f69b xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe88cf516 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xec2ce454 xs_swapper +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xecfeb66e xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedc40232 svc_set_client +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 0xeec5ac02 rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf34bb5f1 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf5e9f513 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9871a2a rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa268b11 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfab785f6 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe2cfc2a rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xffba2f39 xdr_encode_word +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 0x19aa02f8 vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x286f7bff __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x37f371b8 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x3a6617ef vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x5366648b vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x5424dd89 vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x61db0217 vsock_enqueue_accept +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 0xa11a5298 vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbe979d1a vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xcd1b64d3 vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xeb78ef71 vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xed1ae0e7 __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf54b1d1a vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf593c40a vsock_pending_work +EXPORT_SYMBOL_GPL net/wimax/wimax 0x1af07aa7 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x20050e19 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x2efb4e1e wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x35d9b8e3 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0x636da339 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x7848abaa wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x87f00395 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x8a09efe3 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc49f1610 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0xe0107fcc wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0xf2f18af7 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0xf311aa4c wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xf9f5ec9e wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x179f0969 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x30e9c145 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x40688d59 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x4a5d13f5 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x513e76dc cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x5536f260 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x55edbc9a cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x694cecf3 cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x93baada0 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xa9244337 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf98bc365 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00778770 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x056bb269 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0a575945 xfrm_count_pfkey_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0b9e5852 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x74e1a843 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7c30b8c7 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x92dbc6c1 xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xbc8b0f41 xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xce7a55c1 xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xe122af95 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x528ac73d ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x9f6038dd ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xc5889a3d ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xddbcebe4 ipcomp_input +EXPORT_SYMBOL_GPL sound/core/snd 0x19473fcf snd_kctl_jack_report +EXPORT_SYMBOL_GPL sound/core/snd 0x3ca17104 __snd_printk +EXPORT_SYMBOL_GPL sound/core/snd 0x438d8a16 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0xbf340d49 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0xdc79ba04 snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd 0xfa3bbb24 snd_kctl_jack_new +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x2e3ea8b5 snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x52edade5 snd_compress_register +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xd1b0f689 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 0x28aee023 snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x64a23c99 snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x04fe31da snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x122e26b0 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x2802c683 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x2b74841a snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xaea6db5e snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xd5d99950 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0000c0a2 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x04f96f73 snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x06094e40 snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0663c599 snd_hda_multi_out_dig_close +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 0x0691021d snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x07b3dce6 snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x083d3c58 snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0af85e1f snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0b65baf4 snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0cc4382f snd_hda_codec_resume_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0e856b87 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0fd63378 snd_hda_gen_spec_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x105b4913 snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1135ff53 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1152106f snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x11d8ac4f snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x127f2a0d __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x13658113 snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x184601a7 snd_hda_codec_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x18b98ce5 snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1bd7be05 snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1f215fe0 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x20706ff6 snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x222f9f6f snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x233936dc snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2448508b snd_hda_codec_resume_amp +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2466ba2b snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2497bc41 snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x25f348b4 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x261840e3 snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x280a70e1 snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2d03ddef snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x317c08db snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x31baf8e0 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x35e945eb snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3c1cf190 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3da97938 snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3f4d12ce snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3fdd51cf snd_hda_check_board_codec_sid_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x400f7335 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4069851e snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x42760321 snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x433119a0 snd_hda_parse_generic_codec +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4594acfd snd_hda_bus_reboot_notify +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x465958e1 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x48f2d59f snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4a78703a snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4bb49128 snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4c754b53 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4cc4cae9 snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4d5ae65c snd_hda_jack_tbl_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4dab1f60 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4edece1e snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x50f489a6 snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5311169b snd_hda_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x538f8015 snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x53bfbfcb __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x54689c01 snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x55efec58 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x588cd548 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5916e83f snd_hda_add_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5bf344a3 snd_hda_ch_mode_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5ea217d5 snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5f834f4e snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6275cfe9 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6456bd63 snd_hda_query_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6499b435 snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x65335d9b snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x65adf79b snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6b570f66 snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6b929bd4 snd_hda_override_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6daa9bb5 snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7127769e snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x74cb48c1 snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x75ce008d is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x76dc6871 hda_main_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x77c2bf72 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x78c268e9 snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7d3fe4ae snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7eff791e snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7fc72053 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x807617e3 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x81eecb0c snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x84b75c0a snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x84cae391 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x871a6e44 hda_extra_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x873f170b snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x890cbd4c hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x89122a38 snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8dc3ae56 snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e1879bd snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e4a7c8c snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e4c6826 snd_hda_calc_stream_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9187dae9 snd_hda_delete_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x93e3706c snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x93fcdcb3 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x943fc798 snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x98b0f478 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9944d70b snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9ae4d139 snd_hda_suspend +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9b4d9e59 snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9bd4c5d7 snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9cafffa9 snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa06c1aba snd_hda_queue_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa0d2aaf5 snd_hda_codec_flush_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa17a5e81 snd_hda_codec_update_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa1f9fd01 snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2827d76 snd_hda_get_jack_location +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa3660c3c _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa4348edf snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaa29466f snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xafdd817a snd_hda_sequence_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb1ffbe31 snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb31050bb snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb3962e06 snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb3b46f78 snd_hda_codec_amp_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb719eb27 snd_hda_bus_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb74dce44 snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbb1cce13 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbc26d4f2 snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbd778498 snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbf933363 snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc3d54eb3 snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc652fd69 snd_hda_get_jack_connectivity +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc6cee171 snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcabe66c8 snd_hda_check_board_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb301b6e snd_hda_get_jack_type +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcd51f845 snd_hda_resume +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xce896047 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd3346b35 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd3989e67 snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd5e3137c snd_hda_ch_mode_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd6891adb snd_hda_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd6da27bc snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd7fbc7bc snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xda156eed snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xda3f6558 snd_hda_ch_mode_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdce384d8 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdd9ea8df snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdda32aa8 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xddcac9c6 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xde56e648 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xde9daa3e snd_hda_get_sub_nodes +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe31a68b8 snd_hda_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe3648abc snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe6fb4f36 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe8fe2dbd snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe96b622a snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeab2bef5 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xee5c44ac snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xef27695c snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf2686409 snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf2ca164a snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf443d934 snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf631148d snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf6afec59 snd_hda_is_supported_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfa8ac579 snd_hda_query_supported_pcm +EXPORT_SYMBOL_GPL sound/soc/atmel/snd-soc-atmel-pcm 0x731ac91c atmel_pcm_mmap +EXPORT_SYMBOL_GPL sound/soc/atmel/snd-soc-atmel-pcm 0x7e00fc52 atmel_pcm_new +EXPORT_SYMBOL_GPL sound/soc/atmel/snd-soc-atmel-pcm 0x85dac98d atmel_pcm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x03c8f2f5 snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x05584fcc snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x06dceffb snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x070e2591 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x07572f85 snd_soc_codec_set_cache_io +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0a9a10d9 snd_soc_lookup_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0e556d20 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0f1d1b4f snd_soc_dapm_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0ffcba4b snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1047a84b snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x11f31555 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x13b3cce1 snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1914bf45 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1acd4829 snd_soc_dapm_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1b5b77ab snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1c8c7b30 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1d1a473f snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1e28bae8 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1e7854a5 snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x22a72c37 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x23f301bb snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x24004d88 snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x261272a9 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2c8e8c3b snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2f172cc5 snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x30842cb6 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x31013bde snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x313a0273 devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3195f20d snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x34b464f6 snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x362cdefa snd_soc_update_bits_locked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x382bed60 dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x39560661 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3db3ff4d snd_soc_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x41ef7989 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x421cc393 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4259026b snd_soc_cache_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x47cd14d5 snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x49d7c075 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4a4e9e51 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4bf054cc snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4cc6435f snd_soc_dapm_kcontrol_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x51314a19 devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x516bc36c snd_soc_dapm_put_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5222e6f9 snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x52454d94 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x526d97dc snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x57b15cf9 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x59867840 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x59cb0101 snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5a12a5ea snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5a9c235b snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5c6c773b snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5eea51d1 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5efa68f5 snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5f23e10f snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x60b1169f snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x621dc2f3 snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6294fc59 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x65539db6 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x66a4792c snd_soc_cache_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x66ad5ff0 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6739dc46 snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6c6c3311 dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6ce243ad dapm_mark_io_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x71b93190 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x72f5e368 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x77022878 snd_soc_codec_writable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x77f3b592 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x78082fcc dapm_mark_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7816978a snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7a4912ae snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7b187623 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7b9d524b snd_soc_cache_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7c4fc471 snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7d2e8cf2 snd_soc_codec_readable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7ef23e2e snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x81534c73 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x84127c8e snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x850349dd snd_soc_info_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x871c11fd snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x88870501 snd_soc_get_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8b0816d0 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8b96e8fb snd_soc_codec_volatile_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8bda304b snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8f30a47a soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x90c72182 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x918ea475 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x97510c2c snd_soc_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x986b1e9f snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x98d2d40c snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa3a422aa snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa6a29e04 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa6f2aa38 dapm_reg_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xae247f6a snd_soc_dapm_get_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaee0097a snd_soc_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb19a829c snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb253f7ea snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb3874915 snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb3e25263 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb453c07f snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbaa1b2ff snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbcab4e48 snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbe32d0c3 snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbed86b9d snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc2287033 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc2ad7075 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc5c3dc49 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8bd228c snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8f774b6 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcc23a636 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcd75eddf snd_soc_remove_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xce2ff4fe snd_soc_add_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd464a62c snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd7df4c07 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xda0a76c2 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdaf5c7e3 snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xde23b573 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe03f3557 snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe0a67214 snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe1ec583e snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe68c0719 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe8a77d60 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb931aaf snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeca0e38f snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeca914c7 snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xed9259e6 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xee0030f8 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf43cb1f1 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf4d8a8be dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf56d16f9 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf8a7a0cf snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfe79b50b snd_soc_put_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfed8fd45 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfee94d8b snd_soc_platform_write +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x00000000 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x00000000 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x000c915c crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0x0016f66b ref_module +EXPORT_SYMBOL_GPL vmlinux 0x0026af1e pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x00470dab tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x00632780 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x00736478 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x00745244 rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x00a75147 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x00b3e8ce stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0x00c4dc87 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x00d28fa1 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x00dabbc3 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x0179b7fe usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x0187e912 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x0195fba9 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0x019ed0a0 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0x01a50a4e usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01eba3f2 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x01edf457 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x02078dcd dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x020bfe97 cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x021ebfda btree_update +EXPORT_SYMBOL_GPL vmlinux 0x022ef870 pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x0237c70a sec_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x02389e31 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x0243cbd0 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x026ab55c regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x027bd22b bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x0294e03b rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x029c0c11 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x02af2c42 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x02cbe021 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x02eadbe2 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x03277bf0 unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x0354b5c4 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x036503c5 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x0382e7e8 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x038d479a __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x03bceac8 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x03bf1d5e gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x03c73085 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x03c7bbd2 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03ead650 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x03fef90e dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x040b409c usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x04210c94 dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x04486e88 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x045b452f of_clk_get_parent_count +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x04669334 kvmppc_prepare_to_enter +EXPORT_SYMBOL_GPL vmlinux 0x046a7713 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x04961630 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x04b5549c __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04cf646d kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x04d188fc skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x05054850 da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x0519b44e user_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x05307855 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x05397419 sec_reg_update +EXPORT_SYMBOL_GPL vmlinux 0x053ae4ac crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x0599c019 xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x05a485a9 rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0x061dee59 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x06223819 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x067ca0f6 thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0x06ac4b1b of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0x06b092cf of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0x06b19caf kvm_vcpu_uninit +EXPORT_SYMBOL_GPL vmlinux 0x06b4985f swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x06d99e4a tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x06fd2dde securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x07124477 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x074d998b fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0758c47d ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0762a0a0 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x0797161e ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x0798539c pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x07998660 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07f300c3 smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x08015b89 __module_address +EXPORT_SYMBOL_GPL vmlinux 0x080fd2bd crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x083dc674 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x083f63b8 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x08aedae4 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x08c47386 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x08c82977 __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0x08efc49f kvmppc_emulate_instruction +EXPORT_SYMBOL_GPL vmlinux 0x0906b0f9 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x091c824a machine_power_off +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x09469482 kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x09526f30 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x0955e389 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x095d232b devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x0962d0e8 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0x09738aec devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x0995fdc1 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x099ce0af usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x09a1b544 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x09a64494 kvm_set_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x09baeadd device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x09d8297e fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x09dfa287 gpio_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x0a250bbf sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x0a3bd96b regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x0a3ef214 device_reset +EXPORT_SYMBOL_GPL vmlinux 0x0a51ae5b virq_to_hw +EXPORT_SYMBOL_GPL vmlinux 0x0a64071d rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x0a769f7e usb_bus_start_enum +EXPORT_SYMBOL_GPL vmlinux 0x0a9fd3c5 gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x0ab8e4a8 blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0x0ac27796 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x0ac2e04e mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x0acda033 bus_register +EXPORT_SYMBOL_GPL vmlinux 0x0ad1e825 gfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0x0afd4610 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x0b019bb3 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b1faa04 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x0b540aac crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x0b59390b __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0b7699ec inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x0bab944e dm_requeue_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0x0bb490bc crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x0bcd5793 skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c28b708 irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c6ef28c blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x0c8687d7 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x0ca16fb8 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x0cc14a2c kvm_release_page_clean +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cce0227 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x0cd1647e __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x0ce42c0c rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x0cf0a949 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x0cfc3394 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x0d1279a9 dm_underlying_device_busy +EXPORT_SYMBOL_GPL vmlinux 0x0d430005 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x0d49beed ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x0d53ad8a arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0x0d706d2e rh_set_owner +EXPORT_SYMBOL_GPL vmlinux 0x0d72bdcd clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0x0d762735 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x0d8f3a67 mpic_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0dbd0e20 of_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0de06988 cpu_first_thread_of_core +EXPORT_SYMBOL_GPL vmlinux 0x0df0e9bc xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x0e2a0822 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x0e83dd96 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x0e8a8ab6 regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x0ebdc522 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x0ed4eb73 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0ed9302e percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0x0ef1207a blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x0ef87ee0 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x0f31939d platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f8a9dad ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x0f9654ba fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x0fc01e9f static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x0fcdb1e6 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x0fe112dc of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x1021fa88 regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x1023abdd ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x102971b3 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x103ea69a cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x105416f0 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0x106d52f6 default_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x1081615a pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x109af6ae relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x10c79900 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x10da4000 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x10ddd5b1 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x10fa59fc list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x1101e3d9 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x1114011d threads_shift +EXPORT_SYMBOL_GPL vmlinux 0x11290fae simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x113e790f __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x115d57d1 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x11631997 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x116cf6e5 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x11934b31 __rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x1195a851 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x11a60741 regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x11abed52 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x11bc3984 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x11be4ad3 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x11f2fd6e sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0x12156cb0 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x121cd964 of_pci_range_parser_one +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x121ed3f3 add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0x121fa42e sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x12469614 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x1249bd69 powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x12521179 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x125da1da tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x125eaa5c regulator_set_optimum_mode +EXPORT_SYMBOL_GPL vmlinux 0x128029c0 of_irq_parse_pci +EXPORT_SYMBOL_GPL vmlinux 0x12948fd6 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x12b4cae7 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x12ed26b9 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x1307dce4 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x130abbf7 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x13133518 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x133f9495 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0x1357f1ce __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1358a955 wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x136a4ee6 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x13921363 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x13a25bbf dm_dispatch_request +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13aeeb47 pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x13af533e blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x13bffa31 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x13e5ea13 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x13e9b7ed da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x13eeb70b ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x13fd0e86 kvm_vcpu_kick +EXPORT_SYMBOL_GPL vmlinux 0x1415f28a ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x1425890c tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x142a8be4 of_clk_get_parent_name +EXPORT_SYMBOL_GPL vmlinux 0x14535313 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x145c3c71 regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x14610679 cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0x14ad14e2 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x14be89c5 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x14c72430 ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0x14e13c2e screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x14edcc12 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x14fd3ece blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1516077c perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x15329a8d pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x15371adb each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x1561eaef fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x157acee8 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x157b5411 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x158f1dfd led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0x15a23fc7 crypto_rng_type +EXPORT_SYMBOL_GPL vmlinux 0x15a4afc9 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x15ad23d2 device_register +EXPORT_SYMBOL_GPL vmlinux 0x15c21e5e nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x16179793 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x168367c7 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x16b7b90c da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x16c80bd1 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x16e23020 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x16ec9553 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x16f2f4eb platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x17180295 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x1720d957 sdhci_pci_o2_probe_slot +EXPORT_SYMBOL_GPL vmlinux 0x172492ac ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x17466519 usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x1753a32f hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x1773df04 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x177812b7 devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x17850f66 rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0x17b4a99c ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x17be0fbe aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x17bfc8a9 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x17da8db0 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x17ec5e48 ata_sas_port_async_resume +EXPORT_SYMBOL_GPL vmlinux 0x17fce2e2 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x181479e1 pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x1825d5e1 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x18320661 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x1833bcb0 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x183faa45 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x1851ec02 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x1852871a extcon_set_state +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 0x189cb4f6 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x18a27f34 jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0x18af3423 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x18dd1c30 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x190a30ce usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x192ab1d2 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x1930a99f cgroup_taskset_cur_css +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x195c364d hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x19690471 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x197888dc led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x1978e6f9 inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19b384a5 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19ffde91 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x1a082d69 max77693_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x1a0e7272 clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0x1a16e46e ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x1a323362 __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x1a4f67dd ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0x1a665e1b regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x1a76f168 ping_err +EXPORT_SYMBOL_GPL vmlinux 0x1a8c5907 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x1ac23a74 isa_bridge_pcidev +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1acf7b3a class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x1ae957e8 skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0x1afa4118 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0x1b1f29b7 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x1b2821a5 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x1b2e0a7b netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0x1b4ec7a5 dm_set_device_limits +EXPORT_SYMBOL_GPL vmlinux 0x1b52db1c probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x1b543369 __clk_register +EXPORT_SYMBOL_GPL vmlinux 0x1b572fe6 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1bab249b rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x1bca43fc tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x1bd06aab cpufreq_frequency_table_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x1bea48af trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x1c03c775 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x1c096232 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x1c2edcfe map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x1c360e19 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x1c48da7b gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x1c4dc3f8 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1ca4b4d9 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1ce09dce srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x1ce3c435 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x1cf52746 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x1cfe78d1 kvm_release_pfn_dirty +EXPORT_SYMBOL_GPL vmlinux 0x1cfec1d0 gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0x1d30e026 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d5e2ef0 pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d80bd56 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x1de054d5 of_clk_del_provider +EXPORT_SYMBOL_GPL vmlinux 0x1de25446 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x1de6773d crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x1dfbcf4c mpic_msgr_disable +EXPORT_SYMBOL_GPL vmlinux 0x1e066887 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x1e0801f0 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x1e4335e0 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x1e452a76 netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x1e588d01 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e8fac8e wireless_nlevent_flush +EXPORT_SYMBOL_GPL vmlinux 0x1eb1594f gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ecdc3a4 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x1ed3d2da led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x1f06296c rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x1f13d59a rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x1f257af1 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x1f508c12 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x1f59c7ce driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x1f798d56 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1fcece42 inet_twdr_twcal_tick +EXPORT_SYMBOL_GPL vmlinux 0x1feaf796 kvmppc_sanity_check +EXPORT_SYMBOL_GPL vmlinux 0x1fefba33 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x200c2402 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x202fb1b8 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x2036e9a2 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x203f100e i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x2075b906 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x20931ea8 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x209c8bdf hrtimer_start +EXPORT_SYMBOL_GPL vmlinux 0x20bc3470 orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x20ccdadf pci_sriov_migration +EXPORT_SYMBOL_GPL vmlinux 0x20d3004f pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0x20d8fb82 gfn_to_memslot +EXPORT_SYMBOL_GPL vmlinux 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL vmlinux 0x20ea4728 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x2121b658 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x215d0bfc __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x216448be ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x216e9798 serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x217156e7 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x2186f5a0 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x2193e8c3 pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0x21ae3918 PageHeadHuge +EXPORT_SYMBOL_GPL vmlinux 0x21b6762f regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x21d36a03 kvm_hypercall +EXPORT_SYMBOL_GPL vmlinux 0x21e7fdc0 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x22121303 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x221f958b invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x22603c40 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x2281c1a6 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x22835efc ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0x22845173 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x2288e6d4 tcp_init_congestion_ops +EXPORT_SYMBOL_GPL vmlinux 0x228ea9a9 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x22a164f9 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x23029fff kvm_read_guest +EXPORT_SYMBOL_GPL vmlinux 0x2321fd3f sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x232d7c16 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x23679939 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x238f8b33 led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x2392bc6e pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x2393775e wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x23b7019b cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0x240613e8 kvm_release_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x2413a267 devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x24155802 irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0x245fd052 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x247b295e sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2482e1c2 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x248e4919 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24b45362 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x24da2638 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x24ff3201 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0x2517ad7f device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0x2551365a ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0x256d28e4 sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x258aea10 uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x25ac7114 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x25ad3282 wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0x25c460e3 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x2602d5be __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x26134ee1 need_load_eval +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x26588a4e blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x2665a89d xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0x268efd43 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x2691412e boot_cpuid_phys +EXPORT_SYMBOL_GPL vmlinux 0x26916674 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x26aa2452 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c7c653 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26d2b999 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x26d57549 tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x26e6c7f5 led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x27002119 lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL vmlinux 0x273dd733 powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x27421170 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x2748789a kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0x2761da80 rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0x2773b1ed ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x2776affd blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x277e82fe usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x27851bda regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2787db00 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x27a3f85a blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27cec258 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x283701d2 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x283ba581 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x284b1e19 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0x285100e6 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x285a5f9d percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x287d0294 of_console_check +EXPORT_SYMBOL_GPL vmlinux 0x28824552 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x28830cf1 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0x2889f546 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x28a82da4 snmp_mib_init +EXPORT_SYMBOL_GPL vmlinux 0x28a911c1 mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x28abcfe6 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x28d33729 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x29196688 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0x29d8571c pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0x29fb7730 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x2a04d377 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x2a04fd94 __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x2a0be5b1 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x2a284889 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2a684af2 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x2ad061c8 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x2ad0fa78 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x2ad1ece4 zs_get_total_size_bytes +EXPORT_SYMBOL_GPL vmlinux 0x2adc78da pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x2af39c27 devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2b50bffd hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x2b5c303b smp_send_reschedule +EXPORT_SYMBOL_GPL vmlinux 0x2b607170 ktime_sub_ns +EXPORT_SYMBOL_GPL vmlinux 0x2b7a574f md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x2b7a6de8 syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x2b85a8cb apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x2bad145c kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL vmlinux 0x2bcec066 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x2bcf0440 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x2bcf28b3 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x2bfaef4e clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c5a5f02 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2c5fa420 regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c97c085 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x2ca463f3 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x2ca74f74 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x2caeb343 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x2cc824c0 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2ce4646b regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2d17a0e1 cgroup_taskset_size +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d1bf20c arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x2d36c57b rh_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2d401069 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d523587 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d74ce7c irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x2dac80f4 wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x2dc5a6d1 btree_last +EXPORT_SYMBOL_GPL vmlinux 0x2de5b170 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x2deb2ef1 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x2dffa8e8 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e353dc7 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x2e45e488 rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x2e48d5aa usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x2e78af9d regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x2e7cc945 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0x2e80ace8 relay_open +EXPORT_SYMBOL_GPL vmlinux 0x2eabfd84 pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x2eae0da5 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f21ad98 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f6bede1 sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x2f9b4560 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x2fbc922d usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x2fc1c2d3 regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0x2ff8dc80 kvm_init +EXPORT_SYMBOL_GPL vmlinux 0x2ffb5ff7 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x30005304 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x3006b6f5 of_pci_get_devfn +EXPORT_SYMBOL_GPL vmlinux 0x3023bef2 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x302d24b3 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0x3050ec18 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x305b4fa7 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x3063c825 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x30786199 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x3084e9a7 pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0x308b733a getboottime +EXPORT_SYMBOL_GPL vmlinux 0x308de526 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x30a49790 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x30a4f4ca bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x30db054a usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x3105a668 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x31577046 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x316bc6ff pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x31859993 of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0x318a5bed pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x31bb84e2 devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31d54be6 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x320b4744 ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x321e5051 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x324562e5 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x3256ca45 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x325e2403 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x32806373 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x32924a4d scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x32acf7c6 gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL vmlinux 0x32c1edf3 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32dbd9fb rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x32dfe15e filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x32fd447a monotonic_to_bootbased +EXPORT_SYMBOL_GPL vmlinux 0x33339d09 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x3348144a aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x33556d40 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x33777a87 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x337786fa usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x3378c2ac udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0x33a94a45 of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x33c6e992 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x33c8b3c6 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x33d08b4e scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x33fcb04e usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x34107df1 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x343b1bf2 i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0x34468056 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x34519481 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x345445be power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x34547e28 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x34752b03 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x34a73f68 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x34ac50a4 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x34b66455 spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x34cb8add ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x34e30e24 device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x350c27f1 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x354ba795 tpm_show_caps +EXPORT_SYMBOL_GPL vmlinux 0x356ec539 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35c55e06 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x35f10f43 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x35f165f1 devm_reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x360a6343 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36a0856f regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x36a64e5c percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0x36adea33 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x36b506b9 system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0x36c7dc1e key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x36d2503b device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x36ea1502 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x36effefb usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x36fe99eb pci_msi_off +EXPORT_SYMBOL_GPL vmlinux 0x37031fb8 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x37073a97 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x37110c92 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x371a6ddb devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x372781d3 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x37422fd6 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x3774c238 clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0x37ba4d71 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x37c88631 ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x37d2c2c5 rh_dump_blk +EXPORT_SYMBOL_GPL vmlinux 0x37ec39e7 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x37f3b567 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x37f52b6a inet_csk_reqsk_queue_prune +EXPORT_SYMBOL_GPL vmlinux 0x381b4b39 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x381b5f0c kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL vmlinux 0x381b9cba debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x3822d5fb split_page +EXPORT_SYMBOL_GPL vmlinux 0x38392aba pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0x38531f51 tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x385c5c84 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x385cbba8 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x387a0ed2 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x38826ecc inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x38a9c2c7 input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x38af59af noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x397ef9ad crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x39b0091c class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x39e13a4a tpm_register_hardware +EXPORT_SYMBOL_GPL vmlinux 0x39fba546 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x39fdecf1 regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x3a103a27 powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0x3a15e0ee inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a41c2c6 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a7d14c8 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x3aa33e45 swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x3ac50f5b posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0x3ac7f26e fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ad82802 of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0x3b0ca761 task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x3b0ce5f1 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x3b170d08 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x3b2b129d uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x3b5fff84 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x3b74057f evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x3b7ba9c8 __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x3b84971c gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL vmlinux 0x3b9613d4 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x3be855e3 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x3bf810c7 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x3c19c949 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x3c28d47f rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x3c409100 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x3c696c0c rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x3c805d1c netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0x3c83d9eb mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x3c8424a0 clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3c8d28cc of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3cb16a8b irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x3cbd60ea page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x3cbffc4d bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3ccffec8 of_irq_parse_one +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cef66bd debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x3d24a070 tpm_show_enabled +EXPORT_SYMBOL_GPL vmlinux 0x3d40b085 usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x3d4c8d32 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x3d632bc6 rtc_set_mmss +EXPORT_SYMBOL_GPL vmlinux 0x3d6817d1 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x3d7db53d kobj_completion_init +EXPORT_SYMBOL_GPL vmlinux 0x3dc526a9 arizona_of_match +EXPORT_SYMBOL_GPL vmlinux 0x3dc802b7 regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dd003c6 tcp_reno_min_cwnd +EXPORT_SYMBOL_GPL vmlinux 0x3dd4d3a7 bprintf +EXPORT_SYMBOL_GPL vmlinux 0x3dd90118 sysfs_schedule_callback +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3df59f19 alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0x3df9a18c regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0x3e133b85 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x3e2e543d cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x3e2fa31f wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3e38c5c2 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x3e48b4cf rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e716271 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x3e757637 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0x3e971b8d regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x3ec4dd44 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0x3f1c9d5a key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x3f43cabf pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x3f461b8d pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x3f51a9ce reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x3f76d679 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x3f794341 find_module +EXPORT_SYMBOL_GPL vmlinux 0x3f8ed08d mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x3f8ee3a5 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x3fa2376c transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x3fb647af irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x3fbf4759 md_run +EXPORT_SYMBOL_GPL vmlinux 0x3fd5dd78 cgroup_taskset_next +EXPORT_SYMBOL_GPL vmlinux 0x3feda0c8 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x40010e28 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x401323b0 of_pci_find_msi_chip_by_node +EXPORT_SYMBOL_GPL vmlinux 0x40258187 device_move +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x4058a4e0 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x40755c64 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x408b69a6 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x40ac63cb get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40cdfee3 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40d5cd20 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x415d8f4e pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x41a711e8 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x41e83b42 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x41f738e7 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x42542165 kvm_vcpu_init +EXPORT_SYMBOL_GPL vmlinux 0x425822c5 device_create +EXPORT_SYMBOL_GPL vmlinux 0x425c1c0b ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x4262e8d2 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x42bde8c9 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x42cb73a3 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x42e0d8a5 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0x42ff96fd rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x43063999 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x430e5257 of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0x43185653 serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x43207401 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x4353b413 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x435dd112 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x435f75e1 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x4371148a regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x4379c67c crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x43969dbe rh_alloc_fixed +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43acd1cf driver_find +EXPORT_SYMBOL_GPL vmlinux 0x43ae0d20 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x43ae9eb9 devres_release +EXPORT_SYMBOL_GPL vmlinux 0x43b466b0 gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL vmlinux 0x43c39433 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x43df49cb usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x43e9226a disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43fdb707 kvmppc_emulate_mmio +EXPORT_SYMBOL_GPL vmlinux 0x440d859b usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x440e7019 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x443d7d55 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x44404f11 kdb_register_repeat +EXPORT_SYMBOL_GPL vmlinux 0x446998ba pcibios_free_controller_deferred +EXPORT_SYMBOL_GPL vmlinux 0x446ac53d sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x45059e7c sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x4508aae7 exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x450cb2c4 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x454c15ae __smp_call_function_single +EXPORT_SYMBOL_GPL vmlinux 0x454f70a3 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x4551781b crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x455d92b7 nl_table +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x457b77ca of_fixed_factor_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0x4581e454 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x45881161 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x45bea23f relay_close +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45ce44eb pci_pri_stopped +EXPORT_SYMBOL_GPL vmlinux 0x460f7531 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x461c18ad of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x4637ecf1 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x466cb397 relay_reset +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 0x46934de8 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x46a86d9f mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x46ca5fa6 aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x46d0504f blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x46d582fe ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x46eafdf4 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x46eb0309 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x46f7a0bd devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x470d48f6 regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x470fa426 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x4737247e regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x477a6ec6 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47b21077 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x47d2a762 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x48061ec6 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x48319068 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x483f1935 mmput +EXPORT_SYMBOL_GPL vmlinux 0x48465531 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x48579ce4 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL vmlinux 0x485de2a6 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0x488e7980 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x48953294 cgroup_add_cftypes +EXPORT_SYMBOL_GPL vmlinux 0x48c15ab9 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x48c64fbd ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x48ca8947 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x48d3abb5 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x48ddefee shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x49067e3d __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0x49177357 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x4939221b fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4955fecd napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0x49631283 stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0x496d992c devres_open_group +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 0x49b4a591 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x49b98571 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x49c5f502 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x49f38a43 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x4a31ce7f ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x4a4574f3 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4aaf642d spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x4ac2c6aa arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x4acb9528 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x4ae666c8 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x4af1ffa3 pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x4b09996b scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x4b17b645 of_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x4b8d8e44 pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0x4b90a56f power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x4b98827c rh_init +EXPORT_SYMBOL_GPL vmlinux 0x4b9a4fce i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x4bc62a81 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x4bd28a51 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x4bda643e __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x4c2e1f24 clk_disable +EXPORT_SYMBOL_GPL vmlinux 0x4c39520e ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x4c52fa63 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x4c574ebb devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c60eba9 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c9c6e6c dma_buf_export_named +EXPORT_SYMBOL_GPL vmlinux 0x4c9cf80b md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x4ca4c9df clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x4cd8f62b extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4cdfce73 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x4ce6ee03 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x4d006411 inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x4d09b51c sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x4d0a6183 tpm_show_owned +EXPORT_SYMBOL_GPL vmlinux 0x4d172ccb ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x4d23e35b key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x4d29472f xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x4d370cb9 devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0x4d42a5fd pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x4d7a01b7 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x4d858964 wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x4da3a894 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0x4ddd51ae pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e25bfd0 cpu_add_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x4e2fbfb5 kvm_write_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0x4e650db5 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0x4e68c153 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x4e8557dc led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x4ea11c69 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x4ec7d5ce usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x4edb77ce ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4eefbbd4 da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4ef76573 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x4f020dee public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x4f1d4017 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x4f477b83 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4f49cdb8 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x4f6dd55c extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0x4f72173c alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x4f7a21b5 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x4f881b16 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0x4f96def6 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x4fc457b0 user_describe +EXPORT_SYMBOL_GPL vmlinux 0x4fc81f96 css_next_descendant_post +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 0x504449ed debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x5047751b extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0x50601122 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x506691f1 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x506cc085 tracepoint_iter_stop +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x508ccbf8 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50be7804 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x50c89f23 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x50d65ebe pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x511b22c2 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x513a1bea debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x5147abef debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x5158cf61 da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0x5179fed8 inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x51846493 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x519489a2 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x51b5689c regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x51b65a26 rtc_lock +EXPORT_SYMBOL_GPL vmlinux 0x51dcf971 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x52212010 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x5245cd24 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x524621cc __class_create +EXPORT_SYMBOL_GPL vmlinux 0x525e7449 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x5285c42b devres_get +EXPORT_SYMBOL_GPL vmlinux 0x5294342b ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x52c67832 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x52e145cf pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x52ef5fb3 napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x53087a00 extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x53228feb tpm_store_cancel +EXPORT_SYMBOL_GPL vmlinux 0x5325ca7c ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0x5335dd11 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x535a45d1 tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x5368507c usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0x538a22e0 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x54078688 hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x5468124a of_dma_controller_register +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 0x549fea27 rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0x54eadaca ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x54f09e1c regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x54fc4f18 rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x555fd76c rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x5568890e gfn_to_hva +EXPORT_SYMBOL_GPL vmlinux 0x5574fa83 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x55cb8bb2 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x55cba9a6 rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0x55d992b7 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x55e1630b alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x5613fee7 rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x561e4b77 irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x563d11a3 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x564a26c5 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x564f1dca klist_add_after +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x568515c2 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x5692386f gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0x56a607f3 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x56b1211c ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x56b38e0f ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x56b63670 lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x56c63e4f sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x56c7f359 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56fa2a8a kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x5702fc60 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x57584d72 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5796efaa tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57b0f0b1 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x57b215ff power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x57d717a6 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x57ebbd8d __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x58076fe0 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x58309104 ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x584d3d45 arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0x58664ac8 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x588be8a6 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x5892f832 release_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58b238ae tpm_read +EXPORT_SYMBOL_GPL vmlinux 0x58b6f3f1 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x58c9fe73 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x58df5392 extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x58eea0d5 devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0x58f663a2 kvm_vcpu_cache +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x5947abbe max77693_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x5984f170 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0x599bf215 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x59a6e91d clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x59ef1680 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x5a35cbaa dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x5a3b8ce0 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x5a44c6fb crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x5a5d98dc set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x5a735987 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a8f3b69 of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0x5aad3248 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x5b0d97e2 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x5b1e5172 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x5b4e379c of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0x5b9d57a8 kvmppc_handle_store +EXPORT_SYMBOL_GPL vmlinux 0x5bbc4d50 pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x5be38c44 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x5be3a75a gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x5be88bbc blkio_subsys +EXPORT_SYMBOL_GPL vmlinux 0x5c222ff5 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x5c4ef532 rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x5c76554d usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x5ca4b61e regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cb89d8f regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cbcfd3f __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x5ce30b48 ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d2b7228 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x5d3a174f pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x5d41c367 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x5d528892 rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0x5d708ce6 irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x5d7f9378 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x5d8e872c debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x5da6db74 device_schedule_callback_owner +EXPORT_SYMBOL_GPL vmlinux 0x5dbe91cd devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0x5dff1869 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x5e140dbb adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x5e4b2a35 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e7445f4 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x5eb32a9e devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x5eb45cf8 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x5ebd2704 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x5ed1b9c9 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x5f03c761 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x5f248f72 set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0x5f3f4aba __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x5f419491 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x5f5c22c3 clk_register +EXPORT_SYMBOL_GPL vmlinux 0x5f6755c3 ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0x5f8f0b88 sync_filesystem +EXPORT_SYMBOL_GPL vmlinux 0x602b9789 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x608aa6d8 regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x6094685f wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL_GPL vmlinux 0x615fd917 dev_get_gen_pool +EXPORT_SYMBOL_GPL vmlinux 0x61747341 proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0x619da8ff rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x619feca9 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x61a4c38c rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0x61a64e8a max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x61a90c54 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x61cfb3ca cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x62015831 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x62299077 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x624a6406 hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x62602847 platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x62657277 dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0x62750cd1 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x629dfb0f single_release_net +EXPORT_SYMBOL_GPL vmlinux 0x62cb6c09 devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x62e10c05 rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x62ff3718 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL vmlinux 0x63205de1 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x6334d153 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x63577cee gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x637741e7 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x6390efda of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0x63a1304f kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x63b4874c ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x63b5a44b input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x63b5c32a xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x63c35e68 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x63d9cf9b generic_access_phys +EXPORT_SYMBOL_GPL vmlinux 0x63db5f55 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x64032989 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x64256424 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0x64263a58 __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0x6428da4f rh_attach_region +EXPORT_SYMBOL_GPL vmlinux 0x6450940b wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x64530c6b extcon_find_cable_index +EXPORT_SYMBOL_GPL vmlinux 0x64556525 cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x645c218f ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x647974f8 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x648e9366 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x64a9e63a irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0x64b19335 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0x64c66a18 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x64c6aefc bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x64d965c2 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x6516aa34 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x652fcd04 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x653010fa regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x654ed27d ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x658bd708 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x65a27add platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x65a86b7d blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x65bfae03 ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65f23885 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x65ff18dd transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x66298a39 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x662a0c3f x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x6631a12c ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0x665ffce4 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x66689e9b replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x666de894 of_pci_msi_chip_add +EXPORT_SYMBOL_GPL vmlinux 0x6679dcc7 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x6695e4a8 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL vmlinux 0x66afb53b unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x66b32cd5 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x66b391fa ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x66d56e57 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66e745c5 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x671c5a66 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x6745ffb6 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x67587734 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x67643d26 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67e0a37d devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x67f1c8ec blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x6812cf8d __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x6829779f da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x682e143d nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0x685ba414 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0x687934e9 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x68956406 static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x6898d0e1 usb_string +EXPORT_SYMBOL_GPL vmlinux 0x68c8048e queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x68ccaaad __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x68d1588e devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x68fc3686 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x69186dec posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x691be46f pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x691e72f6 cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x693cd8e4 pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x6945725e mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0x697a420c timerqueue_del +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 0x69dc9f26 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x69e7e3ca rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x69e9a2cb ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x69f11002 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x6a31f35d unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x6a332c4a platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x6a35bb7a usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x6a3ad1e0 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x6a4fc405 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a99bd05 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x6a9f65bc attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0x6aefd8ed regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b48a910 switch_booke_debug_regs +EXPORT_SYMBOL_GPL vmlinux 0x6b614587 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x6b7f0aa6 kvm_clear_guest +EXPORT_SYMBOL_GPL vmlinux 0x6b86cc82 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x6b9e7ad7 of_clk_src_simple_get +EXPORT_SYMBOL_GPL vmlinux 0x6bbc4012 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x6be2f4b5 balloon_mapping_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6bf708aa sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x6c051bdc ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x6c0c41f2 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x6c1b09ab gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x6c3e12c4 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x6c49c4f2 clockevents_notify +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c655d07 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x6c749afe __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x6c773413 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x6c93aeaa __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x6c96f443 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6cbf132a ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6ccb0486 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6cd4ea62 wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x6ce6b0ab rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6d253210 kvm_read_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x6d26779c regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x6d2d2cf7 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d31e93b tracepoint_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x6d95bd7e ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x6d9e5425 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x6da9e1c9 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x6dd5f5b3 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x6ded611d rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0x6e00b8fd serial8250_tx_dma +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e62f157 input_class +EXPORT_SYMBOL_GPL vmlinux 0x6e81fa8c da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x6e85bcc0 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e8bec33 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x6e9441b8 wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x6ed081e8 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x6ee74307 max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f576c7e pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x6f5c3f1e usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x6f8b7880 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x6f981efd dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6f9ac31d kvm_put_kvm +EXPORT_SYMBOL_GPL vmlinux 0x6fad1160 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x6fafa6bf usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x6ffea073 tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x7006d72d dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x700fc74d blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x70612875 cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x70627942 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x7079ca63 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0x707ba944 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x707edca0 tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x7094b7ee ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x70b5a87a disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x70bb651d __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x70c60289 sec_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x70c77c89 devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70dda012 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x70de6385 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x7104c3b9 PageHuge +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x710f735b ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0x7133fed9 rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x714b85e8 pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x714f9795 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x715a97d2 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x715be383 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x71621fe0 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x71930ed3 of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x71b54d1a watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x71b8d377 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x7203937a devres_add +EXPORT_SYMBOL_GPL vmlinux 0x7229b27b blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x7232c842 ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0x723374f8 pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x726188e3 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0x7267db00 hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x727d9bd7 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x727de033 pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x729321bb debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x729571ed tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x72afdb99 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x72b40e88 cgroup_taskset_first +EXPORT_SYMBOL_GPL vmlinux 0x72b85920 pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x72d77308 regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0x72eceab6 cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0x73510609 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x736fa4ce bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x73a2d21e tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73c0dcb8 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73e0116e kvmppc_hv_ops +EXPORT_SYMBOL_GPL vmlinux 0x740cd9f0 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x7422c95e gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x744e6538 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x746b1d2a usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x74789441 rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0x74899216 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x748cbf71 vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x74954462 timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0x74adf161 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74d114c5 arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x74ef0b68 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x75382700 od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x75658b71 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x75c2b9f1 memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x75c8a11c inet_twdr_twkill_work +EXPORT_SYMBOL_GPL vmlinux 0x75d356d8 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0x75dcc318 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x75f2a044 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x761d193f ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x764ce728 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7697f23f __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x76d07d6e gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x76ebc963 hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x76ff9bb6 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x770cf981 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x771a9f46 alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x77214cea sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0x7727a961 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x77659821 nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0x776fac8d platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x7795da33 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0x77a1813d devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x77a70867 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x77e67ec2 gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x787b17f2 usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x7891c12f device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x790c6b5e led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x79140b7a regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x7951d34a sysfs_put +EXPORT_SYMBOL_GPL vmlinux 0x79655866 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x7973e3d7 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x7977445c ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x797dddd5 cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x7992827d blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x79bcee46 devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x79c480da rh_dump +EXPORT_SYMBOL_GPL vmlinux 0x79c51b63 extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x79d3d65c usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x79e175e7 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x7a09d7d8 palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0x7a1b6a94 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x7a510614 rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL vmlinux 0x7aa753b4 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x7ab3ca18 eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x7ab71223 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x7adb1dd8 user_update +EXPORT_SYMBOL_GPL vmlinux 0x7adb4728 cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x7ae1ae8e cpufreq_frequency_table_put_attr +EXPORT_SYMBOL_GPL vmlinux 0x7aee6543 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b48a2db cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x7b48c9c9 pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0x7b51ff53 of_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x7b7fd1e2 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x7b88bc46 regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0x7bc143bb devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x7bd5875d unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x7bf5a41b crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x7c227088 clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0x7c346357 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x7cb34973 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7cc1b7fd max77693_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x7cc7de1c x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7cd999a9 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x7ce5b92a gpiod_sysfs_set_active_low +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7cf61e63 regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0x7d099dd7 kvm_resched +EXPORT_SYMBOL_GPL vmlinux 0x7d21bd06 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x7d310f92 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x7d3646e1 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x7d36e534 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x7d397cc7 gpiod_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d572500 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d7a81b4 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x7d7c76b5 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x7d827195 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dc2bbbe inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x7dd12fac register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x7dfb9c08 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x7e17ba7b klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x7e18877e init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x7e3fd610 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x7e4d9091 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x7e4eef82 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x7e5ec9f0 sec_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e825da7 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x7e94b9b5 ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0x7e954c64 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x7ec01103 fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7ed3fe5f ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x7f008202 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7f3315ab regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x7f7bc710 klist_next +EXPORT_SYMBOL_GPL vmlinux 0x7fa4b4a2 of_pci_parse_bus_range +EXPORT_SYMBOL_GPL vmlinux 0x7fc672f8 srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x7fd0a9c8 rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x7fea112a mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x7ff5c1d4 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x7ff62ff6 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x800543fa file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x804e529a bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x804f631f cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x80525e73 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x80671309 cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80947074 __scsi_get_command +EXPORT_SYMBOL_GPL vmlinux 0x80a0fb84 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x80a518e6 pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80de9f66 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x810c9d9f rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0x810fdc3f dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x81234c31 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8128ebee wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x813cbd44 gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x8140842a gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x814723f4 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x8152672f inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x817d193d pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x818a7783 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x81906911 kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0x81d13c12 fuse_conn_kill +EXPORT_SYMBOL_GPL vmlinux 0x81f45c82 of_usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0x82064479 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x82091262 user_read +EXPORT_SYMBOL_GPL vmlinux 0x8216e9f5 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x82255a3a regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x826eff25 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x8271c53e blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x82822d9d regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x82939ebd rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x82d560c3 mark_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82f262e0 sysfs_get_dirent_ns +EXPORT_SYMBOL_GPL vmlinux 0x830434a0 rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0x8318eb66 clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8334df74 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x834616bb sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8351f67d inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x835b994b dm_kill_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0x836d61d0 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x83a5ae2e __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x83a77d3b __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x841da239 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x8420bccd cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0x843309be da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x844d12f4 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x845fec08 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x84723058 agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x847adf1c ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x8482d24c sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x84838729 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x84b43c95 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0x84c629b3 irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x84e7bece usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x84fb28e2 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x852e568d of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x854d0aae usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x8559a982 dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x856629e7 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x8574ca6c gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x85a645aa setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x85b14d33 clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x85c10896 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0x85c22e24 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85cf1695 kobj_completion_del_and_wait +EXPORT_SYMBOL_GPL vmlinux 0x860e0f13 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x86210b67 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x863399b0 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x863511ff srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x865081d9 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x866b9687 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x8694482c list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0x869882b8 pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x86d034a3 pci_configure_slot +EXPORT_SYMBOL_GPL vmlinux 0x86dba191 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x86e507d8 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x8758f458 regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x877ab25d ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x877ad796 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x877d5454 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x878a46d9 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x87984b16 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x87bb4e32 of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x87debd54 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x87f185e6 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x8804af3d usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x8808c53c dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x8813601e devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x88229856 kvm_vcpu_block +EXPORT_SYMBOL_GPL vmlinux 0x882403d3 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x8846afd0 driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x885654fa do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x888bfb0d sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x888fda66 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x88a3601d dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88e3b068 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x8900b13c ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x8944b2a8 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x895950e7 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x8965ff94 ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0x897bf7ba bdi_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x89abec21 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89c53d19 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x89f207cb cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0x8a04b9fe tracepoint_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0x8a091b23 pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x8a26a7b9 sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0x8a2b14ba wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0x8a32e940 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x8a37984a of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0x8a6a736c tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x8a7846bb regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x8a7863b8 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x8a7c09a2 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x8a921993 __netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x8a98fd68 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0x8aa1baa8 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x8aa78136 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8adb8435 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x8ae152b5 of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x8afbac60 agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0x8b07455d rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x8b15f94b thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8b215372 gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x8b242c96 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x8b70e8ea __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x8b73a9a3 pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0x8b8215eb ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c08727c crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x8c08a292 fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0x8c2026bd pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x8c229140 rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x8c249fc5 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x8c2f443c thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x8c3a59aa sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x8cb333ee perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x8cc92d5a sysfs_get +EXPORT_SYMBOL_GPL vmlinux 0x8cd1d2d8 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x8cded271 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x8d2e75ec thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8d358058 regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x8d4b3305 rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x8d735c91 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x8d77cb9f pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x8d8d2a7e ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x8d9de582 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x8da01274 kvm_get_pfn +EXPORT_SYMBOL_GPL vmlinux 0x8dbecd75 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x8dde1089 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x8ded4040 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x8dfd5821 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x8e0ba166 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x8e0be66c ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x8e107353 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x8e1cd06f kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL vmlinux 0x8e3168fb usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x8e4fe8b3 of_irq_parse_and_map_pci +EXPORT_SYMBOL_GPL vmlinux 0x8e526aff crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x8e626bb5 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x8e6ffd0d sk_unattached_filter_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8e864edd cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x8e9c7933 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x8ea2f2b2 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x8edaa51c inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x8eff5118 kick_process +EXPORT_SYMBOL_GPL vmlinux 0x8effebd3 pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x8f14e43e register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x8f676719 d_materialise_unique +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f842e74 iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0x8f8e53b9 idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8f902a2c gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0x8fa405e0 kvm_write_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x8fbbd781 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x8fd0b5f5 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x8fe94fbd css_next_descendant_pre +EXPORT_SYMBOL_GPL vmlinux 0x8feef5a7 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0x901d6784 of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x90228869 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x902f8917 tty_prepare_flip_string_flags +EXPORT_SYMBOL_GPL vmlinux 0x904b0fce list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0x9053e00b fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x905d8049 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x90705b7f syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9077d5ea usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x908a2b66 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90aa84eb usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x90bd38ce __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x90e61796 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x9102e5e7 __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0x91043254 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x911231c2 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x91286982 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x9178dd92 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91e4f697 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0x920e0644 ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x921f3957 rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x923dc824 tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x9271b8ad rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x929c1999 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x92a71637 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x92b40440 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x92b521ae unregister_pernet_subsys +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 0x92e97792 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x92f586a2 of_get_named_gen_pool +EXPORT_SYMBOL_GPL vmlinux 0x930ed9b9 of_usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0x93510a2a usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x9353d811 tpm_dev_vendor_release +EXPORT_SYMBOL_GPL vmlinux 0x93643197 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x9364e810 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x9367d91a disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x93748986 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x938edc67 rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x93a142d2 device_attach +EXPORT_SYMBOL_GPL vmlinux 0x93a2cb47 reserve_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x93b098ec cpu_remove_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x93be5c33 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x93e5e1fd bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x93eb5334 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x94276f46 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x9430f35e usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0x943a14d8 __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x9473bb7f usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x948c60cf fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x94972424 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x94a68723 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x94abb745 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0x94b1ed0c dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x94c22eb1 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x94c97ec8 rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x94ffc175 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x950c3080 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x958cf35a fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x95b2302d __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x960c5e6a pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x960f15fa unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x961561cb kvmppc_kvm_pv +EXPORT_SYMBOL_GPL vmlinux 0x96213140 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x962b9eb8 devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0x964cb1dc rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9655b911 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x96ec9642 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x9718a156 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0x9730c462 gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x973c4b38 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x9745c52a of_fixed_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0x975b0dbb pwm_free +EXPORT_SYMBOL_GPL vmlinux 0x977b66d9 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0x9799bc48 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x97a3ec56 ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x97c843d4 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x97c997f8 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97e85b36 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x982cd486 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x982f8e80 da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x983c7494 rh_detach_region +EXPORT_SYMBOL_GPL vmlinux 0x984d8b83 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x984e0f40 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x985eb437 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x989d87c3 __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x98db78da ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x99254465 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x995d37e2 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x996b9c3e rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0x997fc293 use_mm +EXPORT_SYMBOL_GPL vmlinux 0x998687e1 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x998db07f regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x998e3b25 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x998e5453 tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x999bba76 tpm_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x99a17216 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0x99cc141e srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x99e4ade0 call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a2d8e13 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x9a3a6510 css_next_child +EXPORT_SYMBOL_GPL vmlinux 0x9a49d937 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a8fb3e6 of_extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x9aad6540 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9ab283d6 rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x9aca444b get_monotonic_boottime +EXPORT_SYMBOL_GPL vmlinux 0x9acc5876 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0x9ad0c5fc dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0x9ae90649 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9af35585 device_rename +EXPORT_SYMBOL_GPL vmlinux 0x9b024eb2 i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x9b1590d2 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x9b2e35ff platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x9b35079a ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x9b611b5b __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0x9bb2ebb9 sysfs_notify_dirent +EXPORT_SYMBOL_GPL vmlinux 0x9bcd14b2 rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0x9bdbdf5c scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x9be421f2 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9c07fbeb scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x9ca59e31 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x9cc6654f adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x9ccde6ea lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x9cf2ee59 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x9cf94bcf ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x9d030b99 stop_machine +EXPORT_SYMBOL_GPL vmlinux 0x9d138533 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x9d8002dd debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x9d8331c0 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9da521c2 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x9dae2eb1 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x9dbf8a87 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x9dcc85b2 pcibios_finish_adding_to_bus +EXPORT_SYMBOL_GPL vmlinux 0x9dd6a5d3 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x9deb4313 get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0x9df40e38 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9e1c70d4 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x9e60efa7 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x9e66191f register_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0x9e7c4484 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x9e7e694e ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x9e9aa3c7 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x9ea4cd08 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ef8352f ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x9f0664bf dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0x9f0e39ba add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x9f1047fb usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x9f1e5b85 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9f352507 cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9f35d4ed ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x9f36baf0 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0x9f3f98e1 of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x9f859933 init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x9fac55cf dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9fedb268 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0xa00df64b ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xa01742f5 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa0208e02 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xa021c183 kvm_flush_remote_tlbs +EXPORT_SYMBOL_GPL vmlinux 0xa0524433 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xa0638875 tpm_show_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xa09ab909 regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0xa0a27fff pci_address_to_pio +EXPORT_SYMBOL_GPL vmlinux 0xa0a7a4bd pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0xa0bcbef6 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xa0bd9752 ping_bind +EXPORT_SYMBOL_GPL vmlinux 0xa0c18de3 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xa0f1fd69 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0xa118bf26 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xa12d929d desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0xa145f1fa sk_unattached_filter_create +EXPORT_SYMBOL_GPL vmlinux 0xa19cacba ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0xa1a0e693 rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0xa1aaa0b2 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0xa1ad65af __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0xa1baf0be tpm_show_temp_deactivated +EXPORT_SYMBOL_GPL vmlinux 0xa1bd7822 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xa1c29422 kvm_get_dirty_log +EXPORT_SYMBOL_GPL vmlinux 0xa236efe2 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0xa2681f23 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa28aaf29 rh_create +EXPORT_SYMBOL_GPL vmlinux 0xa28b9c43 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0xa2983ef3 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0xa29fbbdb cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0xa2ba42dc rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xa2c5f11c transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xa2d495eb devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0xa2d65215 ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa357d56e ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa39a84e0 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3a2d9af walk_system_ram_range +EXPORT_SYMBOL_GPL vmlinux 0xa3ad8d30 stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0xa3b4a687 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3ba310c tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa3e81a58 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0xa3f3dde4 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xa446632f sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0xa4671970 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa486b3c3 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xa48964af inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xa4bc3e3f fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0xa4c23e6f usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0xa4d2db74 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xa4ea04ee of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0xa4f88526 cgroup_load_subsys +EXPORT_SYMBOL_GPL vmlinux 0xa4f9228f ping_hash +EXPORT_SYMBOL_GPL vmlinux 0xa512ca45 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa515ff1a driver_register +EXPORT_SYMBOL_GPL vmlinux 0xa562f888 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0xa5966175 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0xa5a0990b crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xa5b00257 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0xa5b00659 ppc_proc_freq +EXPORT_SYMBOL_GPL vmlinux 0xa5be945c crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0xa5ed0420 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5efe460 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xa61b1477 tracepoint_iter_start +EXPORT_SYMBOL_GPL vmlinux 0xa6232065 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa6a0a273 max77693_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6ea86e0 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xa6f6893c vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0xa70e7f10 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0xa711739a tpm_open +EXPORT_SYMBOL_GPL vmlinux 0xa723e8c3 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0xa724257f init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0xa725e9a2 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa75811d0 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0xa77a592b ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0xa7b3ccc4 regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xa7cb5677 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xa7dd082e usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xa7df6bc9 pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0xa7f7e994 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0xa7f92105 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0xa8199b25 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0xa82ba8a4 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa87f40d7 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xa8833093 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0xa8b1a1c9 clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0xa8c17a76 of_reset_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xa8fdd8a4 tpm_remove_hardware +EXPORT_SYMBOL_GPL vmlinux 0xa90e17f6 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xa9566af9 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xa9790478 kobj_completion_release +EXPORT_SYMBOL_GPL vmlinux 0xa980af16 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xa9a97a7b rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0xa9aef2e1 gfn_to_hva_memslot +EXPORT_SYMBOL_GPL vmlinux 0xa9c4a558 key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xaa17a2e2 rh_alloc_align +EXPORT_SYMBOL_GPL vmlinux 0xaa1b6d9f n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0xaa1ec6ff put_pid +EXPORT_SYMBOL_GPL vmlinux 0xaa2a72bf __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0xaa4d0ba2 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0xaa5d3a21 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0xaa61f777 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaaab296e crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0xaad23957 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0xaaefe233 uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0xaaf0c4f7 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0xaaf8293e wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xaafbbad3 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xab07e49d ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0xab23814d __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0xab39113a sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0xab59d373 kvmppc_free_lpid +EXPORT_SYMBOL_GPL vmlinux 0xab5ac37f pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xab5dbdbf crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab70ff48 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0xab87b8b4 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0xab9429dd fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0xaba50961 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xabfd05a8 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0xac59dcc0 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0xac700301 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0xac85c064 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0xacc988ee tpm_show_pubek +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xace8c93d kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xad165f06 blk_queue_bio +EXPORT_SYMBOL_GPL vmlinux 0xad376749 clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0xad60558c __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xad6a41ea regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xad90e77e __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xada25677 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadd63452 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0xadee250a usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xadf2eb60 bio_trim +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae1077c3 sdhci_pci_o2_probe +EXPORT_SYMBOL_GPL vmlinux 0xae20fdd1 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0xae2554c4 of_clk_src_onecell_get +EXPORT_SYMBOL_GPL vmlinux 0xae2a6958 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0xae4b4df9 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xae664f09 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae8dd8ab ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xae9617df wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0xaeae81a1 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0xaebb11bd usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0xaf003b7b scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0xaf1a9d8b pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0xaf1f1ee9 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0xaf24c03e hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0xaf305cf2 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xaf3c3071 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0xaf42da6d pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0xaf8e7298 uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xaf8ea8e2 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0xaf979582 ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xafaca9b8 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0xafb84803 dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0xb0150960 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0xb018f7e3 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0xb06c585d ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0xb07f6483 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb0913148 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0baea57 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xb0c460ba tpm_release +EXPORT_SYMBOL_GPL vmlinux 0xb0e5f69d dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0xb107624c inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xb10d55bc cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xb1195171 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xb1200024 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xb13ffbed irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb150518e blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0xb19c27ff ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0xb1a0dd61 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xb1a7e3f6 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1b8bb25 usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0xb1b91ca8 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0xb1c0c1c2 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xb1c68048 sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1ff6aab rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xb20a29f8 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb2256567 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xb245cbed __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xb258cbcc ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb293c758 list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xb2bc5417 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb2bc68ed __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xb2c5621c pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0xb2e61a50 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0xb2ed8c15 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0xb2f29a8e blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0xb300c0ce fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0xb341c80a __clocksource_updatefreq_scale +EXPORT_SYMBOL_GPL vmlinux 0xb36b444e devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xb383c4e3 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xb38ba992 devres_find +EXPORT_SYMBOL_GPL vmlinux 0xb3a159ce skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0xb3a728cc ata_sas_port_async_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb3b91fd9 preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xb3e5500c gpio_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xb3f4c585 kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL vmlinux 0xb3f81e56 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0xb419d02e preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb45c68af task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0xb4602b31 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0xb47c13c5 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0xb48a88d6 stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0xb4956416 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0xb49f6dc6 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0xb4ac26b0 of_scan_bus +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4d53d7d __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xb4de409d invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb54b7ff8 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0xb55546f9 __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xb55a4062 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb57a6d2f ata_sas_port_stop +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 0xb5b01b85 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0xb5b9ff18 devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xb5bf0979 _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0xb5c8edf4 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0xb5cb8145 hrtimer_get_res +EXPORT_SYMBOL_GPL vmlinux 0xb5d2dfef fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0xb5d3a65a tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0xb5de2a55 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0xb5e896fb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb5f8cd15 pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0xb60b5707 of_i8042_aux_irq +EXPORT_SYMBOL_GPL vmlinux 0xb6247cfb pci_pri_enabled +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb6349935 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0xb67b2219 cm_suspend_again +EXPORT_SYMBOL_GPL vmlinux 0xb67c64fd __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0xb68378b2 serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0xb6ac3c3b rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6c4d83f usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xb6c635af wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xb720c49b security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0xb74468e2 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0xb74d67d5 skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xb76aa47f get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0xb7818152 cgroup_is_descendant +EXPORT_SYMBOL_GPL vmlinux 0xb786e77d percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb7879dd9 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0xb79fb656 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xb7aef054 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xb7d4a9a3 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0xb7dd8555 alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0xb7e1562c tpm_show_durations +EXPORT_SYMBOL_GPL vmlinux 0xb7efaaee gfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0xb7f65330 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0xb809b9ee md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xb809cd9b usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0xb81f7f86 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0xb86b8dc8 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0xb873062e __kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0xb882714a usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0xb8b593fc tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xb8d9d6c1 sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xb8dd6379 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0xb8fd88ee regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0xb8ff6f6f tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb9176155 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0xb94df4b6 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0xb975891c md_stop +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9c3a0be ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9ca5d89 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9da2997 snmp_fold_field64 +EXPORT_SYMBOL_GPL vmlinux 0xb9dcdf45 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0xb9f006dc cpufreq_notify_transition +EXPORT_SYMBOL_GPL vmlinux 0xba0f8d40 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0xba27a3fc da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xba308a80 rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xba47d706 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0xba9d01f3 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0xba9fff09 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0xbadc56d7 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0xbaeb88e9 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0xbaf826a1 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb27377a bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0xbb4fec45 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0xbb5fb2ec pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0xbb6d754c fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0xbb885753 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0xbbae4935 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xbbb3bfbe pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0xbc0dcd59 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0xbc139cbe devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0xbc1483c1 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0xbc4081d1 kvmppc_pr_ops +EXPORT_SYMBOL_GPL vmlinux 0xbc423e91 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcb07b65 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0xbce84f33 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0xbd11cefe pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xbd4665ce bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0xbd4d1900 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd7d3be6 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0xbd834d31 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0xbd9a120a crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0xbdbf505d cgroup_unload_subsys +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe1e890e rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0xbe2f74c6 devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xbe3d5b04 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0xbe46ab8c rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xbe49b777 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0xbe4ef2d4 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0xbe99b456 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbeb61742 save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0xbebaa0a6 of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xbec288d3 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf0c1d2a extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xbf1cc04b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xbf3423b8 ftrace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0xbf38c99e debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0xbf5e11a8 ping_close +EXPORT_SYMBOL_GPL vmlinux 0xbf68ea20 tpm_show_active +EXPORT_SYMBOL_GPL vmlinux 0xbf6b471b regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xbf94d929 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xbfd81f9c device_store_int +EXPORT_SYMBOL_GPL vmlinux 0xc00131cf visitor64 +EXPORT_SYMBOL_GPL vmlinux 0xc00954d5 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0xc02bec3c usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc02f298a pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0xc047c271 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0xc04c8bf2 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0xc061367e mpic_msgr_get +EXPORT_SYMBOL_GPL vmlinux 0xc065a455 cpu_core_index_of_thread +EXPORT_SYMBOL_GPL vmlinux 0xc06c897a proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0xc07f80d6 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0xc0825608 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0bf6ead timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xc0d01bc0 percpu_ref_cancel_init +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0e75cec visitor128 +EXPORT_SYMBOL_GPL vmlinux 0xc0e92fd8 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc0ee3810 cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0xc10138d5 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0xc11b45c6 gpiod_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xc11bd00f tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc18578ed process_srcu +EXPORT_SYMBOL_GPL vmlinux 0xc190ce0c ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xc194f60e regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0xc1add16f crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xc1ca914b call_srcu +EXPORT_SYMBOL_GPL vmlinux 0xc1cd9275 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0xc1e07240 tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0xc208b03d tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc261e06d sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc281cb72 devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xc2bdf1a5 usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0xc2c25342 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc2c68ee9 tpm_show_pcrs +EXPORT_SYMBOL_GPL vmlinux 0xc2d08f19 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0xc2e9eb69 thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0xc2fe1cdb clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0xc30ff915 crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0xc3263da2 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0xc32718df devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xc3328ffe serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc34efe27 snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0xc35e021b blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc376965f wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0xc38655fe pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0xc39566fe exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0xc3beb4a1 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0xc3d7b624 usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0xc407a1d4 gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0xc4190d79 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0xc422c73e inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xc423c6b6 ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc439921e ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xc448c647 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xc449c446 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0xc44ccca1 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc45c96bc da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc46d877e schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc47ae190 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc4b2b7e7 pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0xc4c863c8 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0xc4f9bdea kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc5c8f987 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0xc5d37180 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0xc60100ea unregister_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0xc606cd3c boot_cpuid +EXPORT_SYMBOL_GPL vmlinux 0xc60b020a usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xc60f75ec __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc63a1109 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xc657e875 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc68aa090 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0xc68aa252 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc690866c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc70e4b59 kvmppc_claim_lpid +EXPORT_SYMBOL_GPL vmlinux 0xc72accd9 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc755b3bc task_current_syscall +EXPORT_SYMBOL_GPL vmlinux 0xc7738322 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0xc783df86 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0xc798f777 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7a2be98 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0xc7a70b4f usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xc7ac6b4d da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0xc7b1db8e verify_signature +EXPORT_SYMBOL_GPL vmlinux 0xc7b84923 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7da17be timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc8289735 __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xc87d1e57 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc88f7f59 irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0xc8a0f74d scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc9163e8a percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0xc9182c47 extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc97d1140 cpufreq_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0xc97e9bff register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0xc985ed5c usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0xc9cf18fc dev_hard_start_xmit +EXPORT_SYMBOL_GPL vmlinux 0xc9cfa97f of_pci_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xc9f3a300 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0xc9f45c25 __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xca17311a ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0xca25bc02 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0xca28faad kvm_is_visible_gfn +EXPORT_SYMBOL_GPL vmlinux 0xca2f2041 sec_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xca4c8f08 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0xca668d90 class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xca73fcdc sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca85d8cf tracepoint_probe_update_all +EXPORT_SYMBOL_GPL vmlinux 0xca877f2d regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xca903cca attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0xca946187 of_clk_add_provider +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcac318d7 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0xcadb4674 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0xcaea5e8a led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb46fde0 devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0xcb84bd00 sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0xcb9b162e clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcc08301c put_device +EXPORT_SYMBOL_GPL vmlinux 0xcc08f548 irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xcc1f1c3d inet_twdr_hangman +EXPORT_SYMBOL_GPL vmlinux 0xcc241aa3 cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0xcc2adcd6 da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xcc43fa58 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0xcc44961f kvmppc_alloc_lpid +EXPORT_SYMBOL_GPL vmlinux 0xcc830956 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcc8c4990 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xcc95e98b tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0xcc9cc8f2 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xccc719f0 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xcce60e13 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xcd102edc bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0xcd20fa90 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xcd25fdb1 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xcd3221bc crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0xcd3af258 device_add +EXPORT_SYMBOL_GPL vmlinux 0xcd4107f9 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0xcd5b0fde wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xcd8241df ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcdb01877 ktime_add_ns +EXPORT_SYMBOL_GPL vmlinux 0xcdc4296f debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0xcdc742be sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcde9e898 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0xce0b9b59 max77693_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xce1bb5a6 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0xce338222 tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0xce41f4ed seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0xce46e140 ktime_get_ts +EXPORT_SYMBOL_GPL vmlinux 0xce6678ac uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce726657 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0xce96bee7 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0xce9ed043 nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0xcea184ee shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcef74f69 kvm_irq_has_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcf015ed1 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0xcf05be64 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0xcf0b76eb find_linux_pte_or_hugepte +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf9e99cc blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0xcfb073af ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfd9a317 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0xcfe76c6d smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xcff065de get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0xcffd8e2b dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0xd03b07ae reset_controller_register +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 0xd06c64a8 transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xd06e670a rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0xd0931ddd crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xd0983eed yield_to +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0e2d8f7 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0xd0ecb556 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xd0ece090 irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0xd100ebb9 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0xd11eaeef ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xd14bc4d9 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xd15a30ef sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd1af9066 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0xd1b2db37 tracepoint_probe_register_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xd1baeb51 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd1bed25f smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xd1db8d0d regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0xd1e0f120 serial8250_rx_dma +EXPORT_SYMBOL_GPL vmlinux 0xd2089df7 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd216b4af rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd258217d clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0xd265fc6a list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd27ca547 rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0xd29ae074 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0xd2aaeb4e kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0xd2bacace device_del +EXPORT_SYMBOL_GPL vmlinux 0xd2c45ea4 of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0xd32fe193 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xd34d37f1 kvm_get_kvm +EXPORT_SYMBOL_GPL vmlinux 0xd37f8d89 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd3835996 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0xd3864187 mdio_mux_init +EXPORT_SYMBOL_GPL vmlinux 0xd3ce4cc0 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xd3cf6620 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xd3de36f7 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4127ff5 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0xd41b57a9 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0xd43a1f8b get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd47fc521 balloon_devinfo_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd48d490f xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0xd4988382 i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0xd49cbda3 get_device +EXPORT_SYMBOL_GPL vmlinux 0xd4bcccfa usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xd4bdf7ac watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4cad45e clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0xd4e6a247 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0xd513ddbf timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xd51e095f devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xd521cfe0 da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xd52637f1 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xd53e7561 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xd54337db wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xd54df8e8 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0xd577e559 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0xd57e7e83 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0xd582227a leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5d46ea5 __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0xd5da1a49 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0xd5fa77da nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xd5fc2c20 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0xd63c3836 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd6a26de8 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0xd6c2e04b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0xd6e347fd digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd769385d ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0xd76b52bd flush_fp_to_thread +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd7852724 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0xd7a77e96 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xd7ec2ce2 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd82cb0bf spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0xd83e4305 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0xd845f1f2 __put_net +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87ee693 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd9065e32 irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0xd9110166 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xd9227d56 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0xd92ab97e regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0xd935697c extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xd941eceb ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd944d8f9 ktime_get_boottime +EXPORT_SYMBOL_GPL vmlinux 0xd96d8b69 fb_ddc_read +EXPORT_SYMBOL_GPL vmlinux 0xd97e7fe5 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0xd9a34035 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0xd9cc2942 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0xd9e332b6 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0xd9e5d95b usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda08d5dc __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0xda0a4d22 mpic_msgr_enable +EXPORT_SYMBOL_GPL vmlinux 0xda18ce11 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0xda44cb37 setup_charger_manager +EXPORT_SYMBOL_GPL vmlinux 0xda531dc0 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0xda74af64 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0xda8cb2e5 threads_core_mask +EXPORT_SYMBOL_GPL vmlinux 0xdac11bae of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xdad9ceb4 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb04cacc tracepoint_probe_unregister_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xdb1d4c10 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0xdb2a497f tcp_is_cwnd_limited +EXPORT_SYMBOL_GPL vmlinux 0xdb2e70a2 gfn_to_pfn_async +EXPORT_SYMBOL_GPL vmlinux 0xdb6dbf4b tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0xdb85366d pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdba4ad93 static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0xdba80fc1 of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0xdbcf1566 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc05efc3 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xdc1e15f1 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0xdc42754d crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0xdc6f5956 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0xdc7a2c4c swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc83a04a regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdcc569c1 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xdd0083f3 cpu_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd4c987e skb_gro_receive +EXPORT_SYMBOL_GPL vmlinux 0xdd55cc4a regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0xdd57545d inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0xdd729424 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xdde5e02d aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xdde79292 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xddfdb0c6 srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0xde0dc616 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xde21fe7a pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0xde2466ed __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0xde425ad7 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0xde475c30 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0xde4cf782 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0xde71b532 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xde844871 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xde932fe7 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0xde9e3691 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0xded852ae devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xdee20b8e uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf45fb57 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0xdf5e59fb user_match +EXPORT_SYMBOL_GPL vmlinux 0xdf5f76e4 pci_pri_status +EXPORT_SYMBOL_GPL vmlinux 0xdf75e321 class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xdfcfcbb7 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xdfe0b91f spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0xdfe5fc83 ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdfe81515 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xdfeead11 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe013c77c fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0xe0273a5d regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe036b3e9 mpic_msgr_put +EXPORT_SYMBOL_GPL vmlinux 0xe03a060a power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0xe083dcbe seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0xe0855b41 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe09339d9 kvmppc_handle_load +EXPORT_SYMBOL_GPL vmlinux 0xe0bb3b89 __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xe0c744de thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0xe0fea097 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0xe1551222 pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xe1653884 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0xe168c9e8 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe185a6d5 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0xe19eb1c4 percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe19eeeca regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1c32794 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0xe1e47f11 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xe1f3a644 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xe1f5e807 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xe1f98ea4 wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xe2195262 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0xe22c136e root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe28be75d crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xe2a65fb3 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe30fac88 ktime_get_monotonic_offset +EXPORT_SYMBOL_GPL vmlinux 0xe316b343 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xe3481e21 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0xe37719d2 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe3929bdc transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0xe3c63ee8 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xe3ca8544 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0xe3cee7c0 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xe4046d26 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0xe41a470d evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0xe47ac2a6 blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xe4b22d99 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xe4b46d69 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xe4c031f8 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xe4c4b28f gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xe4c86e94 tpm_write +EXPORT_SYMBOL_GPL vmlinux 0xe50092bf do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xe51f7a27 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0xe52ae762 __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0xe53daaa3 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0xe563fe8e clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0xe57bdc24 ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xe5831e46 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xe58553ad ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5abe8f1 __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xe5cd79f3 rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0xe5cd9e7f devres_remove +EXPORT_SYMBOL_GPL vmlinux 0xe5e1b651 __class_register +EXPORT_SYMBOL_GPL vmlinux 0xe5e7deec devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xe60ba80b disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0xe61f1d89 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0xe62f1fd2 tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe65af02d anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0xe6661545 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0xe6955200 usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xe6a3b048 cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xe6b60224 pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6f866cd pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0xe708f538 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xe7145917 usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0xe73b9d09 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xe74dc232 usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xe7645001 sdhci_pci_o2_resume +EXPORT_SYMBOL_GPL vmlinux 0xe767e18b blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe7a5eb0f sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xe7cb51f4 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe81715dc regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe81bda4a subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe81eece5 rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0xe85c55e7 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe8b819d7 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xe8d8aa16 pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0xe8ec25fe power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0xe91ef087 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0xe93b2823 of_pci_msi_chip_remove +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe946f081 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xe9671c8d ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0xe96e6dc1 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0xe9a1890a locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0xe9d2f118 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0xe9f0a237 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea173e4e dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xea1b8e2b mmc_send_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea5255a9 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0xea57754f elv_register +EXPORT_SYMBOL_GPL vmlinux 0xea875dad clockevents_unbind +EXPORT_SYMBOL_GPL vmlinux 0xeab37429 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0xeac7e149 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xeadd6b7a sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0xeaf8de0c spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xeb1c3628 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xeb3f2fad vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0xeb602c0d sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0xeb830aae fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0xeb8ae736 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xeb98215e cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xeb9abbee ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xebacd193 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xebc01bf3 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0xebc10859 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0xebc6e367 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xebcda98d blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0xebd3b1c6 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0xebde8c44 adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xebfac565 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec1c546f sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xec23b8fb rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec3048ec css_rightmost_descendant +EXPORT_SYMBOL_GPL vmlinux 0xec63d87a usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xec6ee12a regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0xec7a1ef4 pci_renumber_slot +EXPORT_SYMBOL_GPL vmlinux 0xec998583 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xec9e13a3 ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xed0db699 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0xed4f59fb crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0xed5fd569 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0xedbf3cbb of_get_dma_window +EXPORT_SYMBOL_GPL vmlinux 0xedc224c6 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xedc2994d ktime_get_real +EXPORT_SYMBOL_GPL vmlinux 0xedc6fab3 regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xedd49930 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0xede9f037 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0xee10a33b debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0xee23e755 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xee2ca285 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee6d133e debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0xef02a511 pwm_config +EXPORT_SYMBOL_GPL vmlinux 0xef155800 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xef22930b register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xef409b74 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0xef422dca alarm_init +EXPORT_SYMBOL_GPL vmlinux 0xef52310d hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef7f18d3 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0xefa7625d class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xefce0af4 subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0xf07e54c7 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf07eadab dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0xf08f9e53 perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0xf0ccfcf7 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0xf0e60c79 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0xf0f6ac15 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xf10c9d53 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0xf11cef34 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xf1437cea swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xf158f170 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0xf1598755 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf1a62b6f of_i8042_kbd_irq +EXPORT_SYMBOL_GPL vmlinux 0xf1b0ef7c find_vpid +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1d368ed rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0xf1d8e7e0 pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xf1f628f5 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xf209f756 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0xf20c0f51 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xf21892f4 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf228b1e8 blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf27c5094 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xf284174b adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xf299190d dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0xf2cd214b fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0xf2f077cc pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf3012f6c rh_free +EXPORT_SYMBOL_GPL vmlinux 0xf30fda27 lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0xf318b48c cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf31d2c76 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0xf3254eed srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf37064cc ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0xf38e1832 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3cd75f5 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xf3ddcb32 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0xf4281ed5 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0xf44bd400 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0xf450e866 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf4954775 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xf4960914 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4c1b770 kvm_read_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0xf4cd5dde raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0xf4da3546 kvmppc_init_lpid +EXPORT_SYMBOL_GPL vmlinux 0xf4e16d73 __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0xf4eabfb3 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xf4f2d5f7 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf4fdd151 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0xf5000966 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0xf532919f inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xf5491b56 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0xf5496c86 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf54e8cc4 cred_to_ucred +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf57b9e2f irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0xf593cbc2 kvm_clear_guest_page +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5bcf1b2 __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0xf5d12757 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xf5e7f053 rh_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf5fb0cd4 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0xf5fef4e3 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf64fdb43 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xf656b067 thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0xf6669db2 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xf694690a ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xf6b8dbd2 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xf6d4e5cf gfn_to_pfn_prot +EXPORT_SYMBOL_GPL vmlinux 0xf6dde6c6 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0xf6e2e353 regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf735ef22 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf7565415 dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0xf77139f3 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0xf7857106 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0xf78d36be platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0xf7a4cfb8 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0xf7b6fe40 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xf8037f72 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0xf816c866 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0xf82f16b3 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf83eb6cd dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0xf8409386 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf8952e68 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0xf8a1be58 regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0xf8d8e21e crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf914199e sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0xf9154bff inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf935a32c of_property_read_string_helper +EXPORT_SYMBOL_GPL vmlinux 0xf9365158 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0xf97a4a98 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0xf986f952 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9d4b3be unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xfa012fe7 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0xfa195a50 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0xfa1970a7 cpu_remove_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0xfa1b7be2 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa5d008c hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0xfa699746 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0xfab60503 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xfae41d09 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0xfb2b0490 thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xfb2b5ba2 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb3bfaec ablkcipher_walk_done +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 0xfb941e12 pskb_put +EXPORT_SYMBOL_GPL vmlinux 0xfba04e68 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xfbbedefd of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0xfbdf7282 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc6aca6c inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0xfc8cc9b7 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xfc901ff7 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xfca4eb3d ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xfcbcc5a2 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfcedb31b ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0xfcf81bf6 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0xfcf95c53 devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xfd2fab5f usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0xfd8c67a9 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0xfdb4e4d3 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0xfdbae7a9 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xfdd098f4 thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0xfdd6f425 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xfde4b227 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0xfe0701d8 public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0xfe5db1c7 sdhci_pci_o2_fujin2_pci_init +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfeda4e1c look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff2cdcf7 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0xff31f52c pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xff4383f1 wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff6200ec led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0xff788274 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0xff8862d7 rh_get_stats +EXPORT_SYMBOL_GPL vmlinux 0xffe3ad97 blkdev_aio_write +EXPORT_SYMBOL_GPL vmlinux 0xfff1e0b0 sk_set_memalloc --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/powerpc/powerpc-e500.compiler +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/powerpc/powerpc-e500.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4 --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/powerpc/powerpc-e500.modules +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/powerpc/powerpc-e500.modules @@ -0,0 +1,3688 @@ +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250_dw +8250_pci +8255 +8255_pci +8390 +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm860x-ts +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +9p +9pnet +9pnet_rdma +9pnet_virtio +BusLogic +DAC960 +a100u2w +a3d +a8293 +aacraid +aat2870-regulator +aat2870_bl +ab3100 +ab3100-otp +ac97_bus +acard-ahci +acecad +acenic +act200l-sir +act_csum +act_gact +act_ipt +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +actisys-sir +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 +ad5930 +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 +ad9850 +ad9852 +ad9910 +ad9951 +ad_sigma_delta +adcxx +addi_apci_035 +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-keys +adp5520_bl +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +ads1015 +ads7828 +ads7846 +ads7871 +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adv7170 +adv7175 +adv7180 +adv_pci1710 +adv_pci1723 +adv_pci1724 +adv_pci_dio +advansys +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +af-rxrpc +af9013 +af9033 +af_802154 +af_alg +af_key +af_packet_diag +affs +ah4 +ah6 +aha152x_cs +ahci +ahci_platform +aic79xx +aic7xxx +aic94xx +aiptek +aircable +airo +airo_cs +ak8975 +algif_hash +algif_skcipher +ali-ircc +alim7101_wdt +alphatrack +altera-ci +altera-stapl +altera_jtaguart +altera_ps2 +altera_uart +alx +ambassador +amc6821 +amd5536udc +amd8111e +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pci224 +amplc_pci230 +amplc_pci263 +ams369fg06 +analog +anatop-regulator +ansi_cprng +anubis +aoe +apbps2 +apds9300 +apds9802als +apds990x +appledisplay +appletalk +appletouch +applicom +ar5523 +ar7part +arc-rawmode +arc-rimi +arc4 +arc_emac +arc_ps2 +arc_uart +arcmsr +arcnet +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arp_tables +arpt_mangle +arptable_filter +as3711-regulator +as3711_bl +as3722-regulator +as5011 +asc7621 +asix +ast +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at86rf230 +at91_ether +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-pwm-bl +atmel-rng +atmel-ssc +atmel_cs +atmel_mxt_ts +atmel_pci +atmel_pwm +atmtcp +atp870u +atxp1 +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo-pixcir-ts +auo_k1900fb +auo_k1901fb +auo_k190x +auth_rpcgss +authenc +authencesn +autofs4 +avm_cs +avma1_cs +avmfritz +ax25 +ax88179_178a +axnet_cs +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 +bcm5974 +bcm_wimax +bcma +bcma-hcd +bd6107 +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluecard_cs +bluetooth +bma150 +bma180 +bman_debugfs_interface +bmp085 +bmp085-i2c +bmp085-spi +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bonding +booke_wdt +bpa10x +bpck +bpck6 +bpctl_mod +bpqether +bq2415x_charger +bq24190_charger +bq24735-charger +bq27x00_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +broadsheetfb +bsd_comp +bt3c_cs +bt819 +bt856 +bt866 +bt878 +btcoexist +btcx-risc +btmrvl +btmrvl_sdio +btmtk_usb +btrfs +btsdio +bttv +btuart_cs +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +bw-qcam +bypass +c-qcam +c4 +c67x00 +c_can +c_can_pci +c_can_platform +caam +caam_jr +caamalg +caamhash +caamrng +cachefiles +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 +cc770 +cc770_isa +cc770_platform +cciss +ccm +cdc-acm +cdc-phonet +cdc-wdm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc_subset +cedusb +ceph +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chipreg +chnl_net +ci_hdrc +ci_hdrc_imx +ci_hdrc_msm +ci_hdrc_pci +cifs +cirrus +cirrusfb +clearpad_tm1217 +clip +clk-max77686 +clk-s2mps11 +clk-si5351 +clk-twl6040 +clk-wm831x +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm36651 +cm4000_cs +cm4040_cs +cma3000_d0x +cma3000_d0x_i2c +cmac +cmdlinepart +cmtp +cnic +cobra +coda +com20020 +com20020-pci +com20020_cs +com90io +com90xx +comedi +comedi_bond +comedi_fc +comedi_parport +comedi_test +comm +configfs +contec_pci_dio +cordic +core +cp210x +cpia2 +cpm_uart +cramfs +crc-ccitt +crc-itu-t +crc32 +crc7 +crc8 +cros_ec +cros_ec_i2c +cros_ec_keyb +cros_ec_spi +cryptd +crypto_null +crypto_user +cryptoloop +crystalhd +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 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx8800 +cx8802 +cx88xx +cxacru +cxd2099 +cxd2820r +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cxt1e1 +cy8ctmg110_ts +cyapa +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-hwmon +da9052-regulator +da9052_bl +da9052_onkey +da9052_tsi +da9052_wdt +da9055-hwmon +da9055-regulator +da9055_onkey +da9055_wdt +da9063-regulator +da9210-regulator +daqboard2000 +das08 +das08_cs +das08_pci +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 +dgrp +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +diskonchip +diva_idi +diva_mnt +divacapi +divadidd +divas +dl2k +dlci +dlm +dm-bio-prison +dm-bufio +dm-cache +dm-cache-cleaner +dm-cache-mq +dm-crypt +dm-delay +dm-flakey +dm-log +dm-log-userspace +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 +dm1105 +dm9601 +dmfe +dmx3191d +dn_rtmsg +dnet +docg3 +docg4 +donauboe +dpa_uio +dpaa_1588 +dpt_i2o +drbd +drm +drm_kms_helper +drm_usb +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsa_core +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +dt3000 +dt3155v4l +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-dw2102 +dvb-usb-ec168 +dvb-usb-friio +dvb-usb-gl861 +dvb-usb-gp8psk +dvb-usb-it913x +dvb-usb-lmedm04 +dvb-usb-m920x +dvb-usb-mxl111sf +dvb-usb-nova-t-usb2 +dvb-usb-opera +dvb-usb-pctv452e +dvb-usb-rtl28xxu +dvb-usb-technisat-usb2 +dvb-usb-ttusb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +dvb_usb_v2 +dw_dmac +dw_dmac_core +dw_dmac_pci +dwc2 +dwc2_pci +dwc2_platform +dwc3 +dwc3-pci +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e4000 +earth-pt1 +eata +ebt_802_3 +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ec100 +echo +edac_core +edt-ft5x06 +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efs +egalax_ts +ehset +elo +elsa_cs +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em_canid +em_cmp +em_ipset +em_meta +em_nbyte +em_text +em_u32 +emc1403 +emc2103 +emc6w201 +emi26 +emi62 +empeg +ems_pci +ems_pcmcia +ems_usb +emu10k1-gp +enc28j60 +enclosure +eni +enic +epat +epia +epic100 +eql +esas2r +esd_usb2 +esi-sir +esp4 +esp6 +et131x +ethoc +evbug +exofs +extcon-adc-jack +extcon-arizona +extcon-gpio +extcon-max77693 +extcon-max8997 +extcon-palmas +ezusb +f2fs +f75375s +f81232 +fakelb +fan53555 +farsync +faulty +fb_sys_fops +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 +fld +flexcan +floppy +fm801-gp +fm_drv +fmc +fmc-chardev +fmc-fakedev +fmc-trivial +fmc-write-eeprom +fmvj18x_cs +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +freevxfs +friq +frpw +fs_enet +fsa9480 +fscache +fsl-diu-fb +fsl_elbc_nand +fsl_hypervisor +fsl_ifc_nand +fsl_pq_mdio +fsl_qe_udc +fsl_upm +fsl_usb2_udc +fsldma +ft1000 +ft1000_pcmcia +ftdi-elan +ftdi_sio +ftl +fujitsu_ts +fusbh200-hcd +g450_pll +g760a +g762 +g_acm_ms +g_audio +g_cdc +g_dbgp +g_ether +g_ffs +g_hid +g_mass_storage +g_midi +g_ncm +g_nokia +g_printer +g_serial +g_webcam +g_zero +gadgetfs +gamecon +gameport +garmin_gps +garp +gcm +gdmtty +gdmulte +gdmwm +gdth +gen_probe +generic +generic-adc-battery +generic_bl +gf128mul +gf2k +gfs2 +ghash-generic +gianfar_driver +gianfar_ptp +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +go7007 +go7007-loader +go7007-usb +goku_udc +goldfishfb +gp2ap002a00f +gp2ap020a00f +gpio +gpio-74x164 +gpio-addr-flash +gpio-adnp +gpio-adp5520 +gpio-adp5588 +gpio-amd8111 +gpio-arizona +gpio-charger +gpio-da9052 +gpio-da9055 +gpio-dwapb +gpio-fan +gpio-generic +gpio-grgpio +gpio-ir-recv +gpio-janz-ttl +gpio-kempld +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio-pca953x +gpio-pcf857x +gpio-rdc321x +gpio-regulator +gpio-tps65912 +gpio-ts5500 +gpio-twl4030 +gpio-twl6040 +gpio-ucb1400 +gpio-viperboard +gpio-vx855 +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +gpio_backlight +gpio_keys +gpio_keys_polled +gpio_mouse +gpio_tilt_polled +grcan +gre +grip +grip_mp +gsc_hpdi +gspca_benq +gspca_conex +gspca_cpia1 +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_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gtco +guillemot +gunze +gxt4500 +hamachi +hampshire +hanwang +hci +hci_uart +hci_vhci +hdlc +hdlc_cisco +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdlcdrv +hdpvr +he +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfc_usb +hfcmulti +hfcpci +hfcsusb +hfs +hfsplus +hid +hid-a4tech +hid-apple +hid-appleir +hid-aureal +hid-axff +hid-belkin +hid-cherry +hid-chicony +hid-cypress +hid-dr +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-generic +hid-gyration +hid-holtek-kbd +hid-holtek-mouse +hid-holtekff +hid-huion +hid-icade +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-lenovo-tpkbd +hid-logitech +hid-logitech-dj +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hid-petalynx +hid-picolcd +hid-pl +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-gyro-3d +hid-sensor-hub +hid-sensor-iio-common +hid-sensor-magn-3d +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-wacom +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hidp +hih6130 +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hmc5843 +hmc6352 +hopper +horizon +hostap +hostap_cs +hostap_pci +hostap_plx +hp100 +hpfs +hpilo +hpsa +hptiop +hsi +hsi_char +hso +hsr +htc-pasic3 +htu21 +huawei_cdc_ncm +hwa-hc +hwa-rc +hwmon-vid +hx8357 +hysdn +i1480-dfu-usb +i1480-est +i2400m +i2400m-usb +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd8111 +i2c-arb-gpio-challenge +i2c-cbus-gpio +i2c-cpm +i2c-designware-core +i2c-designware-pci +i2c-designware-platform +i2c-dev +i2c-diolan-u2c +i2c-eg20t +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-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 +i2o_block +i2o_bus +i2o_config +i2o_core +i2o_proc +i2o_scsi +i40e +i40evf +i5k_amb +i6300esb +i740fb +i82092 +ib_addr +ib_cm +ib_core +ib_ipoib +ib_iser +ib_isert +ib_mad +ib_mthca +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +ibmaem +ibmpex +icp_multi +ics932s401 +idmouse +idt77252 +ieee802154 +ifb +iforce +igb +igbvf +iguanair +iio-trig-interrupt +iio-trig-periodic-rtc +iio-trig-sysfs +iio_dummy +iio_hwmon +ili210x +ili922x +ili9320 +imm +imon +ims-pcu +imx074 +imx_thermal +ina209 +ina2xx +industrialio +industrialio-triggered-buffer +inet_diag +inexio +inftl +initio +input-polldev +int51x1 +intel_vr_nor +interact +interval_tree_test +inv-mpu6050 +io_edgeport +io_ti +ioc4 +iowarrior +ip6_gre +ip6_tables +ip6_tunnel +ip6_vti +ip6t_MASQUERADE +ip6t_NPT +ip6t_REJECT +ip6t_SYNPROXY +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_mh +ip6t_rpfilter +ip6t_rt +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6table_security +ip_gre +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netnet +ip_set_hash_netport +ip_set_hash_netportnet +ip_set_list_set +ip_tables +ip_tunnel +ip_vs +ip_vs_dh +ip_vs_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 +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ipg +iphase +ipheth +ipip +ipmi_devintf +ipmi_poweroff +ipmi_si +ipmi_watchdog +ipoctal +ipr +ips +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_SYNPROXY +ipt_ULOG +ipt_ah +ipt_rpfilter +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +iptable_security +ipw +ipw2100 +ipw2200 +ipwireless +ipx +ir-jvc-decoder +ir-kbd-i2c +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +ir-rc5-decoder +ir-rc5-sz-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sony-decoder +ir-usb +ircomm +ircomm-tty +irda +irda-usb +irlan +irnet +irtty-sir +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isofs +isp116x-hcd +isp1362-hcd +isp1704_charger +isp1760 +it913x-fe +itd1000 +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iw_nes +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsm +kafs +kalmia +kaweth +kbic +kbtab +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keucr +keyspan +keyspan_pda +keyspan_remote +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +ko2iblnd +kobil_sct +ks0108 +ks0127 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksocklnd +ksz884x +ktti +kvaser_pci +kvaser_usb +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 +leds-88pm860x +leds-adp5520 +leds-atmel-pwm +leds-bd2802 +leds-blinkm +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-lm3530 +leds-lm3533 +leds-lm355x +leds-lm3642 +leds-lp3944 +leds-lp5521 +leds-lp5523 +leds-lp5562 +leds-lp55xx-common +leds-lp8501 +leds-lp8788 +leds-lt3593 +leds-max8997 +leds-mc13783 +leds-ot200 +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pca9685 +leds-pwm +leds-regulator +leds-tca6507 +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-oneshot +ledtrig-timer +ledtrig-transient +legousbtower +lg-vl600 +lg2160 +lgdt3305 +lgdt330x +lgs8gxx +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +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 +libsrp +lightning +line6usb +lineage-pem +linear +lirc_bt829 +lirc_dev +lirc_igorplugusb +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +litelink-sir +lkkbd +ll_temac +llc +llc2 +llog_test +lm25066 +lm3533-als +lm3533-core +lm3533-ctrlbank +lm3533_bl +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 +lov +lp +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp8755 +lp8788-charger +lp8788_bl +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc2978 +ltc4151 +ltc4215 +ltc4245 +ltc4261 +ltv350qv +lustre +lv5207lp +lvfs +lz4 +lz4_compress +lz4hc +lz4hc_compress +m25p80 +m2m-deinterlace +m52790 +m88rs2000 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +ma600-sir +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +mac80211 +mac80211_hwsim +mac802154 +mac_hid +macb +macvlan +macvtap +mag3110 +magellan +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +matrix-keymap +matrix_keypad +matrox_w1 +matroxfb_DAC1064 +matroxfb_Ti3026 +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +max1111 +max11801_ts +max1363 +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max2165 +max3100 +max34440 +max517 +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77686 +max77693 +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925-regulator +max8925_bl +max8925_onkey +max8925_power +max8952 +max8973-regulator +max8997 +max8997_charger +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 +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp4725 +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdc +mdc800 +mdio +me4000 +me_daq +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mem2mem_testdev +memstick +mena21_wdt +metro-usb +metronomefb +mfd +mga +mgc +michael_mic +microread +microread_i2c +microtek +mii +mii-bitbang +minix +mip6 +mite +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mma8450 +mmc_block +mms114 +mos7720 +mos7840 +moxa +mpc85xx_edac +mpoa +mpr121_touchkey +mpt2sas +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +mrst_max3110 +ms_block +msdos +msp3400 +mspro_block +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt29f_spinand +mt312 +mt352 +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtd_dataflash +mtdblock +mtdblock_ro +mtdoops +mtdram +mtdswap +mtip32xx +mtouch +multipath +musb_am335x +musb_dsps +musb_hdrc +mv643xx_eth +mv88e6060 +mv88e6xxx_drv +mv_u3d_core +mv_udc +mvmdio +mvsas +mvumi +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxl111sf-demod +mxl111sf-tuner +mxl5005s +mxl5007t +mxser +myri10ge +n_hdlc +n_r3964 +n_tracerouter +n_tracesink +nand +nand_bch +nand_ecc +nand_ids +nandsim +natsemi +nau7802 +navman +nbd +nci +ncpfs +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netlink_diag +netprio_cgroup +netrom +netxen_nic +newtonkbd +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 +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nf_synproxy_core +nf_tables +nf_tables_arp +nf_tables_bridge +nf_tables_ipv4 +nf_tables_ipv6 +nfc +nfc_digital +nfcsim +nfcwilink +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nfs +nfs_acl +nfs_layout_nfsv41_files +nfsd +nfsv2 +nfsv3 +nfsv4 +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 +nft_limit +nft_log +nft_meta +nft_nat +nft_rbtree +nft_reject_ipv4 +nftl +ngene +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_daq_700 +ni_daq_dio24 +ni_labpc +ni_labpc_cs +ni_labpc_pci +ni_mio_cs +ni_pcidio +ni_pcimio +ni_tio +ni_tiocmd +nicstar +nilfs2 +niu +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 +ns558 +ns83820 +nsc-ircc +nsp32 +nsp_cs +ntc_thermistor +ntfs +null_blk +nvidiafb +nvme +nxt200x +nxt6000 +obdclass +obdecho +objlayoutdriver +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stack_o2cb +ocfs2_stack_user +ocfs2_stackglue +ocrdma +of_serial +ofpart +old_belkin-sir +olpc_apsp +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 +output +ov2640 +ov5642 +ov6650 +ov7640 +ov7670 +ov772x +ov9640 +ov9740 +overlayfs +oxu210hp-hcd +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +palmas-regulator +pandora_bl +panel +paride +parkbd +parport +parport_ax88796 +parport_cs +parport_pc +parport_serial +pata_ali +pata_amd +pata_arasan_cf +pata_artop +pata_atiixp +pata_atp867x +pata_cmd640 +pata_cmd64x +pata_cs5520 +pata_cs5530 +pata_cs5536 +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_sc1200 +pata_sch +pata_serverworks +pata_sil680 +pata_sis +pata_sl82c105 +pata_triflex +pata_via +pc300too +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_can +pch_phub +pch_uart +pch_udc +pci +pci-stub +pci200syn +pcips2 +pcmcia +pcmcia_core +pcmcia_rsrc +pcmciamtd +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 +phison +phonet +phram +phy-core +phy-exynos-dp-video +phy-fsl-usb2 +phy-generic +phy-gpio-vbus-usb +phy-isp1301 +phy-rcar-usb +phy-samsung-usb +phy-samsung-usb2 +phy-samsung-usb3 +physmap +physmap_of +pixcir_i2c_ts +pktcdvd +pktgen +pl2303 +plat-ram +plat_nand +platform_lcd +plip +plusb +pluto2 +plx_pci +pm-notifier-error-inject +pm2fb +pm3fb +pm80xx +pmbus +pmbus_core +pmc551 +pmcraid +pn533 +pn544 +pn544_i2c +pn_pep +port100 +poseidon +powermate +ppa +ppc-corenet-cpufreq +ppdev +ppp_async +ppp_deflate +ppp_mppe +ppp_synctty +pppoatm +pppoe +pppox +pps-gpio +pps-ldisc +pps_core +pps_parport +pptp +prism2_usb +ps2mult +psmouse +psnap +pt +ptlrpc +ptp +pvrusb2 +pwc +pwm-pca9685 +pwm-twl +pwm-twl-led +pwm_bl +pxa27x_udc +qcaux +qcserial +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qlogic_cs +qlogicfas408 +qman_debugfs_interface +qmi_wwan +qnx4 +qnx6 +qt1010 +qt1070 +qt2160 +quatech2 +quatech_daqp_cs +quota_tree +quota_v1 +quota_v2 +qxl +r128 +r592 +r6040 +r8152 +r815x +r8169 +r8187se +r8188eu +r8192e_pci +r8192u_usb +r820t +r852 +r8712u +r8a66597-hcd +r8a66597-udc +radeon +radio-i2c-si470x +radio-keene +radio-ma901 +radio-maxiradio +radio-mr800 +radio-shark +radio-si4713 +radio-si476x +radio-tea5764 +radio-timb +radio-usb-si470x +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +ray_cs +rbd +rbtree_test +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-em-terratec +rc-encore-enltv +rc-encore-enltv-fm53 +rc-encore-enltv2 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-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-tbs-nec +rc-technisat-usb2 +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-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rc5t583-regulator +rcar_vin +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +redboot +redrat3 +reed_solomon +reiserfs +remoteproc +renesas_usbhs +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +rio-scan +rio500 +rionet +rivafb +rj54n1cb0c +rmd128 +rmd160 +rmd256 +rmd320 +rndis_host +rndis_wlan +rocket +romfs +rose +rotary_encoder +rp2 +rpcsec_gss_krb5 +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt61pci +rt73usb +rtc-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-as3722 +rtc-bq32k +rtc-bq4802 +rtc-cmos +rtc-da9052 +rtc-da9055 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1742 +rtc-ds2404 +rtc-ds3232 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-generic +rtc-hid-sensor-time +rtc-isl12022 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max77686 +rtc-max8907 +rtc-max8925 +rtc-max8997 +rtc-max8998 +rtc-mc13xxx +rtc-moxart +rtc-msm6242 +rtc-palmas +rtc-pcf2123 +rtc-pcf2127 +rtc-pcf50633 +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-snvs +rtc-stk17ta8 +rtc-tps6586x +rtc-tps65910 +rtc-tps80031 +rtc-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtc_cmos_setup +rtd520 +rtl2830 +rtl2832 +rtl8150 +rtl8180 +rtl8187 +rtl8188ee +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192se +rtl8723-common +rtl8723ae +rtl8723be +rtl8821ae +rtl_pci +rtl_usb +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtlwifi +rts5139 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rx51_battery +rxkad +s1d13xxxfb +s2250 +s2255drv +s2io +s2mps11 +s3fb +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s626 +s6e63m0 +s921 +saa6588 +saa6752hs +saa7110 +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7146 +saa7146_vv +saa7164 +saa717x +saa7185 +saa7706h +safe_serial +salsa20_generic +samsung-keypad +sata_fsl +sata_inic162x +sata_mv +sata_nv +sata_promise +sata_qstor +sata_rcar +sata_sil +sata_sil24 +sata_sis +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sbe-2t3e3 +sbp_target +sbs-battery +sc92031 +sca3000 +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_fq +sch_fq_codel +sch_gred +sch_hfsc +sch_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +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_tgt +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_srp +sctp +sctp_probe +sdhci +sdhci-of-esdhc +sdhci-of-hlwd +sdhci-pci +sdhci-pltfm +sdhci-pxav2 +sdhci-pxav3 +sdio_uart +sdr-msi3101 +sdricoh_cs +sedlbauer_cs +seed +sep_driver +seqiv +ser_gigaset +serial2002 +serial_cs +serio_raw +sermouse +serpent_generic +serport +serqt_usb2 +ses +sfc +sh_eth +sh_mobile_ceu_camera +sh_mobile_csi2 +sh_veu +sha1-powerpc +shark2 +shpchp +sht15 +sht21 +si21xx +si4713-i2c +si476x-core +sidewinder +sierra +sierra_net +sil164 +sir-dev +sis +sis190 +sis5595 +sis900 +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_of_platform +sja1000_platform +skel +skfp +skge +sky2 +sl811-hcd +sl811_cs +slcan +slip +slram +sm501 +sm501fb +sm7xxfb +sm_common +sm_ftl +smb347-charger +smc91c92_cs +smm665 +smsc-ircc2 +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +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-at73c213 +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt3328 +snd-bt87x +snd-ca0106 +snd-cmipci +snd-compress +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-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1938 +snd-es1968 +snd-firewire-lib +snd-firewire-speakers +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-hdmi +snd-hda-codec-idt +snd-hda-codec-realtek +snd-hda-codec-si3054 +snd-hda-codec-via +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-mona +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-mts64 +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-oxygen +snd-oxygen-lib +snd-page-alloc +snd-pcm +snd-pcxhr +snd-pdaudiocf +snd-portman2x4 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb-common +snd-sb16-dsp +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-atmel-pcm +snd-soc-core +snd-soc-fsl-dma +snd-soc-fsl-ssi +snd-soc-fsl-utils +snd-soc-p1022-ds +snd-soc-p1022-rdk +snd-soc-si476x +snd-soc-simple-card +snd-soc-wm8776 +snd-soc-wm8960 +snd-sonicvibes +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usb-usx2y +snd-usbmidi-lib +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx-lib +snd-vx222 +snd-vxpocket +snd-ymfpci +soc_camera +soc_camera_platform +soc_mediabus +soc_scale_crop +socrates_nand +softdog +softing +softing_cs +solo6x10 +solos-pci +sony-btf-mpx +soundcore +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-dw +spi-dw-midpci +spi-dw-mmio +spi-gpio +spi-lm70llp +spi-oc-tiny +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-sc18is602 +spi-tle62x0 +spi-topcliff-pch +spi-xcomm +spi_ks8995 +spidev +squashfs +sr9700 +ssb +ssb-hcd +ssd1307fb +ssfdc +sst25l +ssu100 +st +st1232 +st_accel +st_accel_i2c +st_accel_spi +st_drv +st_gyro +st_gyro_i2c +st_gyro_spi +st_magn +st_magn_i2c +st_magn_spi +st_pressure +st_pressure_i2c +st_pressure_spi +st_sensors +st_sensors_i2c +st_sensors_spi +starfire +stb0899 +stb6000 +stb6100 +ste_modem_rproc +stex +stinger +stir4200 +stk1160 +stkwebcam +stmmac +stmpe-keypad +stmpe-ts +stowaway +stp +streamzap +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +svcrdma +svgalib +sx8 +sym53c500_cs +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink +synclink_cs +synclink_gt +synclinkmp +syscopyarea +sysfillrect +sysimgblt +sysv +t1pci +talitos +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +tc3589x-keypad +tca6416-keypad +tca8418_keypad +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bic +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 +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-kstrtox +test-string_helpers +test_power +tg3 +tgr192 +thmc50 +ti-adc081c +ti_dac7512 +ti_usb_3410_5052 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timb_dma +timberdale +timblogiw +timbuart +timeriomem-rng +tipc +tlan +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmiofb +tmp006 +tmp102 +tmp401 +tmp421 +tmscsim +toim3232-sir +touchit213 +touchright +touchwin +tpci200 +tpm-rng +tpm_atmel +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm_i2c_stm_st33 +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-charger +tps65090-regulator +tps65217 +tps65217-regulator +tps65217_bl +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +tranzport +tridentfb +ts2020 +ts_bm +ts_fsm +ts_kmp +tsc2005 +tsc2007 +tsc40 +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +tsl4531 +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tuner_it913x +tunnel4 +tunnel6 +turbografx +tusb6010 +tvaudio +tveeprom +tvp5150 +tw2804 +tw9903 +tw9906 +tw9910 +twidjoy +twl4030-madc +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_charger +twl4030_keypad +twl4030_wdt +twl6030-gpadc +twl6040-vibra +twofish_common +twofish_generic +typhoon +u132-hcd +uPD98402 +u_ether +u_rndis +u_serial +uartlite +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +uda1342 +udc-core +udf +udl +udlfb +udp_diag +ueagle-atm +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_sercos3 +uli526x +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 +unix_diag +upd64031a +upd64083 +usb-serial-simple +usb-storage +usb3503 +usb8xxx +usb_8dev +usb_debug +usb_f_acm +usb_f_ecm +usb_f_ecm_subset +usb_f_eem +usb_f_mass_storage +usb_f_ncm +usb_f_obex +usb_f_phonet +usb_f_rndis +usb_f_serial +usb_f_ss_lb +usb_gigaset +usb_wwan +usbatm +usbdux +usbduxfast +usbduxsigma +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmisc_imx +usbmon +usbmouse +usbnet +usbserial +usbsevseg +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +uwb +ux500 +v4l2-common +v4l2-dv-timings +v4l2-int-device +v4l2-mem2mem +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vga16fb +vgastate +vgg2432a4 +vhci-hcd +vhost +vhost_net +vhost_scsi +via +via-ircc +via-rhine +via-sdmmc +via-velocity +via686a +videobuf-core +videobuf-dma-contig +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videobuf2-core +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-memops +videobuf2-vmalloc +videocodec +videodev +viperboard +viperboard_adc +virtio +virtio-rng +virtio_balloon +virtio_blk +virtio_console +virtio_mmio +virtio_net +virtio_pci +virtio_ring +virtio_scsi +virtual +visor +vivi +vlsi_ir +vmac +vme +vme_ca91cx42 +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmwgfx +vmxnet3 +vp27smpx +vpx3220 +vringh +vsock +vsxxxaa +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +w1-gpio +w1_bq27000 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1_smem +w1_therm +w35und +w5100 +w5300 +w6692 +w83781d +w83791d +w83792d +w83793 +w83795 +w83977af_ir +w83l785ts +w83l786ng +w90p910_ts +w9966 +wacom +wacom_i2c +wacom_w8001 +walkera0701 +wanxl +warrior +wbsd +wcn36xx +wdt_pci +whc-rc +whci +whci-hcd +whiteheat +wil6210 +wimax +winbond-840 +windfarm_core +wire +wishbone-serial +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wl3501_cs +wlags49_h25_cs +wlags49_h2_cs +wlcore +wlcore_sdio +wlcore_spi +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x-ts +wm831x_backup +wm831x_bl +wm831x_power +wm831x_wdt +wm8350-hwmon +wm8350-regulator +wm8350_power +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-regulator +wm97xx-ts +wp512 +wusb-cbaf +wusb-wa +wusbcore +x25 +x25_asy +x_tables +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 +xgene-enet +xgifb +xgmac +xilinx_ps2 +xilinx_uartps +xillybus_core +xillybus_of +xillybus_pcie +xirc2ps_cs +xircom_cb +xor +xpad +xprtrdma +xsens_mt +xt_AUDIT +xt_CHECKSUM +xt_CLASSIFY +xt_CONNSECMARK +xt_CT +xt_DSCP +xt_HL +xt_HMARK +xt_IDLETIMER +xt_LED +xt_LOG +xt_NETMAP +xt_NFLOG +xt_NFQUEUE +xt_RATEEST +xt_REDIRECT +xt_SECMARK +xt_TCPMSS +xt_TCPOPTSTRIP +xt_TEE +xt_TPROXY +xt_TRACE +xt_addrtype +xt_bpf +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_conntrack +xt_cpu +xt_dccp +xt_devgroup +xt_dscp +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_iprange +xt_ipvs +xt_length +xt_limit +xt_mac +xt_mark +xt_multiport +xt_nat +xt_nfacct +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_realm +xt_recent +xt_sctp +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_tcpudp +xt_time +xt_u32 +xtkbd +xts +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 +zte_ev --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/powerpc/powerpc-e500mc +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/powerpc/powerpc-e500mc @@ -0,0 +1,16592 @@ +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/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/atm/suni 0x41a6553d suni_init +EXPORT_SYMBOL drivers/atm/uPD98402 0x9800d116 uPD98402_init +EXPORT_SYMBOL drivers/bcma/bcma 0x829fee72 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 0x0300a23f pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x10a51b15 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x3502da60 pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x3a526428 pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0x4aeb7bf2 paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0x5142fc25 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x89af5313 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0xa1c12ae8 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xab1a82d1 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0xd1221a65 pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0xe61ee8bb pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0xf5521a1f pi_write_block +EXPORT_SYMBOL drivers/crypto/caam/caam 0xfd2b02dc caam_get_era +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0x31da6a18 caam_jr_alloc +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0x85b454dc caam_jr_enqueue +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0xbae384a1 gen_split_key +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0xbb030d6e caam_jr_strstatus +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0xd33f25d2 split_key_done +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0xfefa43c2 caam_jr_free +EXPORT_SYMBOL drivers/crypto/talitos 0x1461bc7f talitos_submit +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x1435b903 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x33583de4 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x89fa390e dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xa9f0cfa2 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xc92a295c dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xea211389 dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/edac/edac_core 0x711b03c7 edac_mc_find +EXPORT_SYMBOL drivers/edac/mpc85xx_edac 0x381c29ac mpc85xx_pci_err_probe +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0456635f fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04dd92ce fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x05ed782f fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x09695bef fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x09bbd054 fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x208cb6f2 fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0x23c4312a fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2b8092db fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x39a35790 fw_iso_context_create +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 0x4d95b7dd fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0x50d6f8d4 fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x6495aa4d fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x6c5daae3 fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x748f907f fw_bus_type +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 0x94276a8b fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x985a98ea fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa0fd586f fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa299ab2f fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xad21f13a fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xbd8034ac fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd1786018 fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe307a17d fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe3baa7a8 fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe435020c fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe974f881 fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0xfb165bf6 fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xfb6edb2a fw_send_request +EXPORT_SYMBOL drivers/fmc/fmc 0x213a388c fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0x248317e7 fmc_find_sdb_device +EXPORT_SYMBOL drivers/fmc/fmc 0x383f9147 fmc_free_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x4723698c fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0x64a11a76 fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x9cd79435 fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0xb981adc3 fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0xcd2e40cc fmc_driver_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0xdfb5dbb7 fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0xe685f1bd fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0xf6afc12d fmc_show_sdb_tree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00025916 drm_mode_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0047d6b1 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00667d8a drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02477abf drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x026c0d6b drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x028cda49 drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03311093 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x054a6f7f drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07384ce7 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0810e887 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x085026c1 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a51a9ee drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0cd46cdf drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d25836c drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ec527fc drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fc5b7e7 drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fccafb1 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fd4fd09 drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fd60df2 drm_get_connector_status_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x104c22b0 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12a67f2b drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12c6276a drm_buffer_read_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13878243 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13cdaadb drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x142b8b35 drm_buffer_copy_from_user +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a000aa drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14c92a39 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1522c071 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15402849 drm_bridge_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x189f6401 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18ca11f3 drm_get_encoder_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19e44324 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e3fa8bd drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e6001c3 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x205b6c21 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x206dae17 drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20d844d7 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21343c3b drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2379d3ca drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2470ae72 drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28a6bbaf drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28d174a9 drm_prime_destroy_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29ad006c drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29d7a862 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a942ab2 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2b59ff51 drm_platform_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2c635857 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d80be4d drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f0b064f drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30a03244 drm_get_last_vbltimestamp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x321473e1 drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x32357dca drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3261e784 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x33764941 drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x339bfb96 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34227448 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x346127a7 drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x35a6e76b drm_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36f91ef3 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0x383d562e drm_mode_connector_detach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x398d59f2 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3a669b20 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ae7b2d0 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b681e27 drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d4b8108 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3da0dcaf drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e6fd4d3 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ed0af68 drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x40f095cb drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43384bd9 drm_buffer_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4605e4ea drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x498dcb5e drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49fabf0d drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4adaf043 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4de0a4b7 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e6bf2ab drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f56447c drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50382cab drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50ddaa46 drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x523eb82c drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x52bc361c drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x534b295a drm_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56c020e7 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5859eebd drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f0efd5b drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6090be61 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x619e506f drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x646afd8c drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66803841 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66e37338 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b378d2d drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b6d7375 drm_timestamp_precision +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6c73e934 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cc0794f drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cee2e42 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d49d7ff drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6df4d697 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6ea24d4f drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f4602c1 drm_core_reclaim_buffers +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71d9cede drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7423a6fd drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x751a43e6 drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x76d587d7 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x77c4dd65 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x789966b1 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a4e7297 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b487239 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7bb15af6 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c0cbbdc drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ceabd88 drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f1dfae7 drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8029f69d drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8179b97d drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81ba930c drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x838cd05f drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x83fc41a7 drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x86424f49 drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x873f0152 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x875c851a drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89dc3c4f drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a4e7a81 drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b69232b drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d353585 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d3ddf88 drm_get_connector_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8dfb019d drm_buffer_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f6e3523 drm_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f7df3a7 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x938fff38 drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x941e031c drm_sysfs_connector_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9437a5e8 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x94b4f631 drm_dev_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95da76fd drm_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x964ba7da drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x968588bd drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x96e31764 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9745d638 drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x98cf740e drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d70fc2a drm_rnodes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9eccfe56 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9efc26a3 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f0043cd drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f04e8e4 drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f848886 drm_core_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa11dfa1c drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa17c131d drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1f4e9e6 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5dbd572 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa71b9050 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa9445c1a drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa9a7c47b drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa9853ce drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa9add12 drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xab7c2924 drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae248d63 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf82f2ad drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafb0cb6f drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb0d3088c drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb3ef1afa drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4842f86 drm_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb54dcf54 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb572a9f0 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb60b19e7 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb87bba3a drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8f4b93d drm_core_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb95beb55 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb977d0c9 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9dff6a1 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba590376 drm_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbcf73afe drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd96fd5a drm_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe001c53 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc0408e22 drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc3a64a6f drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4000f9f drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc414c422 drm_vblank_offdelay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc41d3b63 drm_bridge_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc614cf89 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6bc7b63 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc77dc66c drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7f7cc11 drm_vma_offset_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca016114 drm_core_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcbbbf4ec drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcca90954 drm_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcec158f0 drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xced041a1 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1275afe drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2436257 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2591f29 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd4566ae3 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd6f7c8c6 drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd8722eca drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd8a47934 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda2bf832 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdae1f814 drm_sysfs_connector_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb5a5852 drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbaf863b drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc650ab5 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdcb9be3f drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdcf605a6 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf349863 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe06c34c9 drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe15d839e drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2ef97e4 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe3466a38 drm_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe3881afd drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6e8aa0a drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6f46e6e drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe77fd131 drm_prime_init_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe88f44cd drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9d17143 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee5e405e drm_global_mutex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xefdf9b69 drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf08d712a drm_mode_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf219f21d drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2451b38 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2a7b47f drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3f1ac5f drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf446a0e2 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf5e1a069 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6d3a423 drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf71bc18a drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf736b6a3 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf879a238 drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfaed1d31 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb497216 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfc361395 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd063935 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe4a68c7 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff4b2799 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0111ae7b drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0a7b2e17 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1d5871fe drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1f01bb15 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2a4ced6f 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 0x366f8058 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3e783dc9 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3efd3204 drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x42c6480d drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4993c086 drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4ab0ef94 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x63cf6f7a drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6bb13471 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x702fef97 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7cf6d625 drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7ebc8ed4 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x82165138 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8234eb8d drm_dp_aux_register_i2c_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x827300a8 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 0x8a298136 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9082e900 drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x976b992c drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9923fd8c drm_dp_aux_unregister_i2c_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9b0c9805 drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa1c0267b drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa25dd474 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa401336a drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa4fce139 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 0xc303bfa8 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc62bcfb6 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc7ccf161 i2c_dp_aux_add_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc96be7cc drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcc5ae87b drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xce4118cf drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd7f5c213 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd8d6f097 drm_fb_helper_restore_fbdev_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe051c32f drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe447e960 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf32ac0dc drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfa72c63d drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfcb6bedf drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfddc8b88 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x0111207c drm_usb_exit +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x159ceb3f drm_get_usb_dev +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0xdac9c538 drm_usb_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x00eacbfb ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0956841f ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x11a8e50a ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x127487da ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x132b05be ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2286c9f1 ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b9d24d1 ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2c0fe5e0 ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2f4cae36 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2fcdc0f4 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x394a371f ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4b32f289 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4ece1d32 ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5a8fdfea ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5ac3280a ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5be89672 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5cf59609 ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x61a3ee82 ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x67b1d568 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6c5044a4 ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x71c4d56b ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x75200571 ttm_bo_unmap_virtual +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 0x85dc880b ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x87338ae7 ttm_dma_tt_init +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 0x8a1c61d1 ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8d14adbf ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8d29175b ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x92eef7bb ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x96a8baa9 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9fc516bd ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9ff27293 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa2a129fd ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa428d66b ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa73de2a9 ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xab303f95 ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xac31659d ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xafb45967 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb83c6470 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc17c88d3 ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc22e9ad0 ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc3c89929 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc5f0c2da ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc9283f3b ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xca700036 ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xca7fec6d ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcb067710 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce2b8a14 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce32157d ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce6e43a8 ttm_base_object_lookup_for_ref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf0f69d7 ttm_tt_fini +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 0xdb72e5b6 ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdcf55baf ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdf1e07a3 ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe3394b78 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe48596a3 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xec1cef1c ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xef4b9697 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf14653ff ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf1c1be3d ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf61bff6b ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf7f9f0d5 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf9e4338a ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfc7987ff ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfc978f59 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfdf1b73b ttm_mem_global_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-pca 0x583ed82e i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xf8d89280 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0x90d97400 amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x73e9f2d4 st_accel_common_remove +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xe41485de st_accel_common_probe +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x251ff2ec hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x2a0f335f hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x5aaf372d hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x5ed5fb09 hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x87f9ef52 hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x0d7b6df6 hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x306f89c1 hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x074d7047 st_sensors_trigger_handler +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x20d4fc4d st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x224b7544 st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x224f7915 st_sensors_sysfs_set_sampling_frequency +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x2d776c6b st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x434e83fb st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x540729be st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x650b8da6 st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x65b7b676 st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x75e065d1 st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x836fb951 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x8b337a1d st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x9ea1ed8e st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb672d9f3 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xeb334104 st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xfa624c54 st_sensors_sysfs_get_sampling_frequency +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0xa23e4c41 st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0x46661c29 st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x704f0b90 st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xe0bfa5d9 st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x969f2144 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xdaae502b adis_enable_irq +EXPORT_SYMBOL drivers/iio/industrialio 0x05ff1188 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x06807372 iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x1f4878e9 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x274c13d9 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x328f97e3 iio_buffer_read_length +EXPORT_SYMBOL drivers/iio/industrialio 0x34fa10f0 iio_buffer_register +EXPORT_SYMBOL drivers/iio/industrialio 0x4bd126ff iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x4c878333 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x5193ab37 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x68b02572 iio_buffer_write_length +EXPORT_SYMBOL drivers/iio/industrialio 0x73aedf7e iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x77557251 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x7b5a53c6 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x8cf8a562 iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x9a676236 iio_buffer_show_enable +EXPORT_SYMBOL drivers/iio/industrialio 0xa1ec8767 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0xab6361f8 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0xb9f7dbe2 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xbc5531ed iio_buffer_store_enable +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe4b3f6ec iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0xf7688fa9 iio_buffer_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xfd3791aa iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0xfd9b25cb iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x39f4b08a iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x4e70af35 iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x3d875730 iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x57c83741 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x64842d87 st_magn_common_remove +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x7941eef0 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x61cf7741 st_press_common_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x92c50ba2 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 0x446fd7c9 rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x59252c9d rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x9805714e rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x2047f8c2 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x206704cd cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x3238b4e2 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x34fa5463 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x4a87dfd0 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x640e5c7f ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x6da64b6f ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x744fa7d0 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xaa445aa8 ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xaa4c3465 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xbe5764f6 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc9326850 ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd0ceda20 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xefba5377 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xfaa2f0e7 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xfb4a1d9b ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xfb709d90 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x004ce103 ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x06c82fcf mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x07a0a1d7 ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0b3bfb56 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0b6db8ce ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0e089143 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x14f84918 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x171f99f1 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x17d67e2b rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1bec5ce8 ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1f015dd9 ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x20e34230 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x234a5ec0 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x26bdd438 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2da7e334 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x34437a36 ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3685ac5e ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3e9f4664 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3eca4cfb ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x406764ad ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x413d8f16 ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x42089f4e ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x43316fd8 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4402dcbc ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x499135e3 ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4deccc4c ib_umem_release +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 0x532b9aa1 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x579028fb ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5a36127a ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5bbd6c18 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5fab2e3c ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x610f7fa1 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x66eaf696 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6985021b ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6c99c04a ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e030e26 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x700f3e74 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x709b0daa ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x73e73c23 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x780e250a ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7d4329a8 ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7fcc0024 ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x804c2f1e ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x816fdae9 ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x83da85d3 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8680a99f ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x892febbc ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8c074f11 ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8c4dbf4f ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8dd90705 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8f78d456 ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x91275514 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x92027d30 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x93748064 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x97d680c1 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9c57af88 ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9c69d9e3 ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9d69f3f7 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9ed0bc70 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa36c08d7 ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xac217df9 rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1a312e1 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb25420a9 ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb77408e3 ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc28d4085 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc8d2258a ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xca933971 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcffc907b ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd671dd7b ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd6a72cb1 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd87b0495 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd97e147b ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xda1024c3 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdaee3097 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdd26bae8 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xde0daba4 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdfa27450 ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe0cd51bb ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xea93e050 ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf217de5d ib_resolve_eth_l2_attrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf6bda5e1 ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfe73ec47 ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x00f43203 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x13f80770 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x195c4a52 ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x4b614aa4 ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x54cae5cf ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x55987ff5 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6a4fbb1a ib_register_mad_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 0x80687d4b ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x8cd69a10 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x946d5d27 ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xacaef4a9 ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xd00aedf9 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xd8a14eca ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x22f07253 ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x26b9ba35 ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x5328d7a6 ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x55caec4c ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x69823831 ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x69d33bfc ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9a1cd50d ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xce218943 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xd8863998 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 0xe24d323c 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 0x1e45d31f iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x61b2b5c8 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x701ebd40 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x7e0c2129 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x8baf9583 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xca41f226 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xcb2e8131 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xdd070770 iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x026191ad rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x10901f02 rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x20173776 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x37ce3d50 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x387f20b7 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3a284bf1 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x48c5de76 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4cfe9aad rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4f4a523c rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x50669a88 rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x566419f3 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x5f22a9cd rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x73930922 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8265a989 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x901e1ea0 rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa4488e91 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa4c13f7f rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xaa2c7d15 rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc34691e8 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xeeafa570 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf0de9bfe rdma_set_reuseaddr +EXPORT_SYMBOL drivers/input/gameport/gameport 0x060ad4e8 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x0edaad12 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0x45fa149b gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x6e36b5d0 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x8842351a gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x935deaa2 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x9554ca01 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xa5713b0a gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xf6a96d32 __gameport_register_driver +EXPORT_SYMBOL drivers/input/input-polldev 0x12920d19 input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x58cf1880 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xc6854fd9 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xdaec8349 input_free_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x2dbbde52 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x27ab0cbe ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0x54e48263 ad714x_remove +EXPORT_SYMBOL drivers/input/misc/ad714x 0xd4f95c50 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xf0e4c170 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 0xe2863016 cma3000_init +EXPORT_SYMBOL drivers/input/sparse-keymap 0x1dba13af sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x3f4edc69 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0x530da99e sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0x6bb55f75 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x8d8ea13d sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0xd6f4b927 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x5bd609b0 ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xafdaf45e ad7879_probe +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x007b9b44 capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x025a18a9 capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x05ee83ea capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x12ce1b73 attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x24dac2eb capi20_release +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 0x315c8322 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x47d3fc51 capi_info2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7a33596c capi20_get_serial +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7e6f1307 capi20_get_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f699913 capilib_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 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 0xb713b2a9 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xbe7c69b3 capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc10fe128 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xdac51cc4 capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe3594f9d capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe8ad9bd1 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xed061606 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x0dca63f1 b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x39fbfcb9 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x3a535c84 b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x3d525a6e b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x435d6fb4 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x59ac4369 b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x624cb6ac b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x7ac97875 b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x7afbc47a b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x8488836e b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x8d2473cf b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x97e21971 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xbb8894c7 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xd3a7fbc6 b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xf140bf10 avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x26d30e45 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x2758be40 b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x3a6f98b0 b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x4253805c b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x4330599f t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x62185541 b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x651604f8 b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xb8c8ebf3 b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xc411cb44 b1dma_register_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 0x6ea9652b mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x8eb5e1bf mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xb1857300 mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xbed38e8c mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xb6aab7ee mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xd7ded027 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 0x7f29ce36 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xbbfa5471 hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xe227344e FsmRestartTimer +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 0xff2db2cf FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x199c7f7a isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x2b1e490c isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x80577f30 isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x9311568b isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xad11edb0 isacsx_irq +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x66ad6b3d isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xc6a5003e isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xdc91f62e 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 0x0cf3b12a mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0e00bda9 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x120266d1 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x20aabfd9 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x229abc06 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x32ac81e9 bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4e95ea26 dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x54451388 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5f02fddf mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x614ede30 mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x68eac760 bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x73061e34 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7ebcf31a recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8eb88370 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x95ec6d91 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x96309324 mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa501adb1 mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa5c4cc9d mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xbe47a700 create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc2525ac1 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc38b7719 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd6377b8a recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xdfcf3d80 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe0b70bc4 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe87943cf mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xee066cc7 mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xfb7458c5 mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x60721da7 dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xa215f1b2 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/md/bcache/bcache 0x37a6e1bf closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0x4320dba5 closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0xb24beff2 closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0xc304d1e5 closure_trylock +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe3c17af1 __closure_wake_up +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe46087f0 closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0xf1589ffd __closure_lock +EXPORT_SYMBOL drivers/md/dm-log 0x00ee8bca dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0x0df0c8ca dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0xc8116649 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0xe9c89d49 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x5478c4bc dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x5e79b36d dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x736e1242 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0x891dc2c6 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0xa0e1af5f dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0xaf623f81 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/raid456 0xebb25451 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x0b12b482 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x2ecdb142 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x33654c59 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x46f6c021 flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x480669ec flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x60b99d94 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x6f29f102 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xa72579be flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xa815d0c6 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xd808f473 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xefac2674 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xf7103219 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xf93dd9cc flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/btcx-risc 0x028776da btcx_riscmem_free +EXPORT_SYMBOL drivers/media/common/btcx-risc 0x34fb221e btcx_riscmem_alloc +EXPORT_SYMBOL drivers/media/common/btcx-risc 0x495e4b0c btcx_calc_skips +EXPORT_SYMBOL drivers/media/common/btcx-risc 0xad2fe38b btcx_sort_clips +EXPORT_SYMBOL drivers/media/common/btcx-risc 0xc368f8e6 btcx_align +EXPORT_SYMBOL drivers/media/common/btcx-risc 0xcda0ded2 btcx_screen_clips +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1c4d026b cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0x244570fb cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/common/cx2341x 0x30d87624 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x5b88faf6 cx2341x_ext_ctrls +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 0xd49ed8e6 cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0x1d076cc4 cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x09c3d15d tveeprom_read +EXPORT_SYMBOL drivers/media/common/tveeprom 0x7e6f02f0 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x07dd6be7 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x07e8340d dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0f4c074d dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x17523ce7 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x19591134 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x22d6ce4a dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x28ee2ae8 dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2a1299e8 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x332f6056 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x361a7512 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3f7224d5 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3fef90be dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x420532dc dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4a2e79a0 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4d3b9a9c dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x53edf5de dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5f176f50 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6219a1e8 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6573681e dvb_dmxdev_init +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 0x8142f7b7 dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x81711731 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8211a729 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x89eb092c dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8e47dce5 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x95527b94 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xae2fe625 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xaebb7b62 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd68a099e timeval_usec_diff +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd86150a5 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdb576668 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe0ca4c4b dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe2ad75a0 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe56d11d5 dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe877c5d0 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xee420406 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xefe39f53 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf8ee597c dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-frontends/a8293 0x95960364 a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0xffde3000 af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9033 0x1726b201 af9033_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x127fcb38 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x0c06076e au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x2e1f3e2d au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x35a132b4 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x52579aef au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xa7b6818a au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xac35f168 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xc24f3cc6 au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xed25a520 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xf69df1eb au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0xfe1d55d2 au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0x1f90bab5 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x46643344 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0x387eae6a cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0x021c8eaa cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x9abc54e3 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xb5234314 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0x11eb901b cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x58a94965 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xe3e2b453 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0xab3d2e87 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x3305dc59 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x64c116c8 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x68627270 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xb8a1d375 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xd5610244 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x08a2426e dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x4108b31e dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x51d340dd dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x547f048f dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x5850347e dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x6afc4c35 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x753140bd dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x7b296a06 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x8fa040c3 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x94038519 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xab4994d5 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xc3d865d7 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xdfe3cb00 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xe1399b29 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xff5e4da7 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x88bdd6b5 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x23f51603 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x3802de8f dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x6bd84da4 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xa7ad8ae6 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xc0ca6835 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xf85a82c8 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x1b0cc72c dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x6179d153 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xcb2edd8d dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xcc9058fb dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x10695c03 dib7000p_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x1088c039 dib7090_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x1dcb5304 dib7000p_set_agc1_min +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x2da33b6a dib7000p_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x61766712 dib7000pc_detection +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x6651f2ce dib7000p_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x81c6f4be dib7000p_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x92eb0994 dib7000p_update_pll +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xb00a7a05 dib7090_get_adc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xb75a710b dib7090_slave_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xc5a4f856 dib7090_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xc848cee5 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xcd8c530d dib7000p_get_agc_values +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xd219834a dib7000p_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xda71a5e6 dib7000p_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xf38d377e dib7000p_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x021f2796 dib8000_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x218b564d dib8000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x44b22f2d dib8096p_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x589f4242 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x5ad5f987 dib8000_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x747ca079 dib8000_remove_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x8708726b dib8000_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x87c1d08f dib8000_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x962763bd dib8000_get_adc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x9bfe34c7 dib8000_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xa6c3b7ec dib8000_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xbe7ae060 dib8000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xbeadd3e0 dib8096p_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xc2361bfb dib8090p_get_dc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xc7637d19 dib8000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xe9354d55 dib8000_update_pll +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xef5ffba2 dib8000_pwm_agc_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xf2964edd dib8000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xf4fcb138 dib8000_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x325a5bd2 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x71c84c3a dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x773406c9 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x94ce0f62 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xb16bc8c5 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x1ccbe1da drxd_config_i2c +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0xe4fd4a7b drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0x35ff3fc1 drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0xb826127e ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0x08e2cd26 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0xa147e38a ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0xed225883 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x25c18c01 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x4a8c1692 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/it913x-fe 0xc6d2646a it913x_fe_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0x6ae38f3f itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0x54ffb72f ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0x3d2d93ee l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0xf2400a5f lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0xbe112221 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0x78ae2bd4 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x4128ac54 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x1edd010c lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xf339a8d8 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0x8c47e649 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0xa0d8bd37 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0xf1709fcd mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0x26b61fa2 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x22ce3f12 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0xfed26f5a mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x6db2139d nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0x4eff260b nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0xecc8ff7a or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0x1ec24bf9 or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2830 0x0664c59e rtl2830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2830 0xe9b52cfa rtl2830_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2832 0xfabb20b5 rtl2832_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0xfd43f070 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x64231040 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x22495c63 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xcb1f40e7 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0x33a1a349 s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x5d143c84 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0x465df54b sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0xdec10c90 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0x8c1d735a stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0xa5a67ac2 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0xe2349bdb stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0xea8b1cfd stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0xa3cd2962 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0x25e7af82 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x5b8c2797 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x834f07aa stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0x98205f07 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x238c05d7 stv090x_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0xa7267f28 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x08debe06 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0x9afffc26 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0xd0c65de9 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0x01c79a40 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x00c0a5f5 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x3e4391ec tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xee2f02f8 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0xa6a9bb95 tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x4cce254f tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0xfcae84ab tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x477e0479 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0xb67aefe1 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0xdb680382 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0x19c48dee ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0x3fb7f18f tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0xfda95764 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0x0c517be5 ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0xec06509c zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0xfddac535 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x140e6d26 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x13c18586 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x1e0ce4d4 flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x1ec62374 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x360854e8 flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x5fd0f1da flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x80204a29 flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xa430faf1 flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x2875d264 bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xa8640258 bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xe922c686 bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xfb4a8e83 bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x46108b4d 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 0xd059dced bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xda67409c bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x0a99b768 dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x1392c408 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x1d95948e dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x5e9ac675 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x6a13c7d1 dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x6eb473e1 dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xb2f65b80 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xebe3e37b write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xf848967f rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x30668267 dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x0d1aabff cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x1e6ebfeb cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x45940b06 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x4fb4d206 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x757807f0 cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x163dd46b altera_pid_feed_control +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x4c2112ff altera_ci_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x9247b72f altera_hw_filt_release +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xdb3faf38 altera_ci_release +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xe5c43805 altera_hw_filt_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xe66b9812 altera_ci_irq +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x38605818 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x3e0d1f61 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x3fc62fdf cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xa7a2a6ee cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xcfd2e0be cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xd5d794e7 cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x297053d2 vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x3939e23f vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x34666088 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x3e06fec1 cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x9eeed237 cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xc9c25cc0 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x03cd425e cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x54a62156 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x7cb77403 cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x8b1ba170 cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xefb4454f cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xf3bde65a cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2c29d27e cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2cbb1029 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2da200a0 cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3c1e80a3 cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3c42a6ce cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3df6dbdb cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x44df8c2d cx88_risc_stopper +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4c885042 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x57aa3c2f cx88_free_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x586d6739 cx88_dsp_detect_stereo_sap +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 0x773fc66b cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x96ddef33 cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x9ced3bc3 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa31f1a9b cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa47da5c6 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xaa4bdb11 cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc4286433 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xce60a76a cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd6fa6075 cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe1b93637 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf87944c8 cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xfc80f7a9 cx88_reset +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x1be60613 ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x38325b00 ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x4793aca3 ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x54f04da6 ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5d47b3b9 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x6d4cdd2d ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x86725d5a ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x86af443d ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x8afe857e ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x970502cb ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x99ef0ef5 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xae3d0345 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb3d5d024 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xcdbd715d ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xde15a028 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xed0ebc1c ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf93b90b2 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 0x17e83f0f saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x211b4a7a saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x355615e1 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x5085b7af saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x73039031 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x88814206 saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x98be500a saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x9dba1393 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xa0907a41 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xb0693c62 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xd42b4edb saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xd4e4879f saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xdbe1bcf4 saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x17a96f99 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x011a5ac6 videocodec_detach +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x629fc1bb videocodec_attach +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x8a5c8743 videocodec_unregister +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0xdbcc60d1 videocodec_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x4cb272c4 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x57b593a4 soc_camera_lock +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x5b33a7fb soc_camera_unlock +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x96e3c78b soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x9ec084eb soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xa5adb3da soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xbc4d4049 soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xc61f7b4f soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xd7c94e34 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 0x5f3e3558 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xa9546115 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xfe2c3a07 soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x1cec6246 soc_camera_calc_client_output +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x2cd5b062 soc_camera_client_g_rect +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x844447b8 soc_camera_client_s_crop +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0xf9e9d235 soc_camera_client_scale +EXPORT_SYMBOL drivers/media/radio/tea575x 0x237bf53c snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0x238d0c94 snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x5640ff6a snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x9acbedc0 snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x2ff7d59b lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x4592e6be lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x5bc3b0b8 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x6df7dca7 lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x9f2773a3 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xaf1fe8bc lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xcf50cf96 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xff6e5fbd lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/rc-core 0x71073cc3 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0x864486c5 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/tuners/e4000 0xf27408d8 e4000_attach +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x3120bc87 fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0xf82f168d fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x5a85948d fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x7d5c0317 fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xf36fba6d fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc2580 0xeb66ed90 fc2580_attach +EXPORT_SYMBOL drivers/media/tuners/max2165 0x50ba56f5 max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x742736ab mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x19680434 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0x322b6c70 mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0x8ae0a040 mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0x3be66a1a mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0x670f83d6 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18212 0x64a300d8 tda18212_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0xaec09f1a tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tua9001 0x6a92afca tua9001_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 0x2d007da8 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/tuner_it913x 0x899d0267 it913x_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x9e2457de xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0x35a2abe7 xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x1d82b7c1 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x7f378a88 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x24f10e22 dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x5e30d203 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x5f4dbf65 dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x77ae6b7f dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xae4043db dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xba9e32d2 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xc5c72712 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xf4d54f53 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xfb8023de dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x4e90d8b9 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x5428a045 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x89ad9d98 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x8d082dfd dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x94adb38e dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x955dddc4 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xe19b67e2 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 0x8ca76ead 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 0x494cc625 dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x5e36f1fc dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x6244f777 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x67b6abb6 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x6ca1312d dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x912194e9 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x9a830a3c dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb042e95d dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb41f39b4 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 0xd21df111 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xdaa79cac dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xa7896598 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xd620fbac em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x0b089e1b gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x174e46ac gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x18b38f11 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x549fbf39 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x97d1e299 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xb16863ed gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xd886cad5 gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xfa535c37 gspca_resume +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x1d6b273f tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x69a183da tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x7652899e tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x8343ca94 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xa884cb5e ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x42c8e001 v4l2_ctrl_next +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x4adaf0f3 v4l2_ctrl_query_menu_valid_items +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x53c9394f v4l2_ctrl_query_menu +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x5f96a661 v4l2_ctrl_check +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x2dbd48c9 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 0x72d50b7c v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x9e07f7a8 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x7ba1d699 videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xa3bda69e videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xb5e1bb2d videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xbed5cd2d videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xdee306b5 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xfa29d293 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x376a4a4b vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x01095ee0 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0683bd45 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x088f97a9 v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x093bbe48 v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x11728c37 v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x12d905f6 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x140e371b v4l2_of_get_remote_port_parent +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x155add04 v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1718fa05 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x239a7eef v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x284b717c v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2d6f6768 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2dced308 v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3716f5b4 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3893ea0b v4l2_ctrl_new_std +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 0x3c459eb3 video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3db7f213 v4l2_of_get_remote_port +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3e604f2f v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3f89b9cf video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4096a760 v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x431e898e v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x48a6d120 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4b26566f video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4c14e6d2 v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4e913d71 __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4eac6a49 v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4f65a6e0 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x56c8f662 v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x63471000 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x63669129 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x64603f0e v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x659bc0fc v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7c59de82 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7c8cf60e v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7e135a24 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7e6ba6ce v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7f923f2a v4l2_of_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x806340ee v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x84e1c4ff v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x956dab49 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x98a2ceb3 v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9cff0146 v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9e2e9144 video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9f176d1f v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9f8413df v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa018e44c v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa113ea3c v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa65e80c0 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa9c4b6f1 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaa802551 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xad3a2396 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaff34636 v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb1cb9b3c v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb90cbedf v4l2_of_get_next_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb9d0035a v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xba8cc16b video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbac4a225 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc12cf8f8 v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc1a23b7b v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc37ccaa6 v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc5b6b335 v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcac888bd video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xce3d2102 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcf7e983d v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd1a8fd3a v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd670dcee v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe14d7770 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe6fce6f2 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe9e2902e v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xede7db42 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf2eba868 v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf35b31fa v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xffb92667 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/memstick/core/memstick 0x30437812 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x345da5c6 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x37e8b37b memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4204c6a1 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4d0c2482 memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x76f316ec memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x98d76df7 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa5987a36 memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc1fd14b3 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xd4605f18 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xd98c5022 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xe7946ca8 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xee51e286 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x00801d67 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x25f8f142 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2aa9ab00 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x328235d9 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x49c7f7a3 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4a051379 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4b7f969a mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4f445b0c mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x610ef8c7 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x65fbae09 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6a4feb56 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x72122d3d mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x772a4035 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x776fd1f4 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x778f90d5 mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7e5ad7f8 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x966e0d68 mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x99fdfeb2 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa0474c85 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xafa1cac2 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb2f48b8a mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb318fd5a mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb9a6793d mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc10eda09 mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xcbdae0b5 mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xcdb4edae mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd08bb789 mpt_event_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 0xea8b74e7 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xfa9dcdac mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0f7ed2a7 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x19c6d4d7 mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2786fef7 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x284a7f38 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x34d0895c mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x370f679c mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3c9cb598 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x52fdf2a8 mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x71a76b6c mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x74d8b35b mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x79825b2b mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7ffb63e6 mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8074552b mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8c3ddff6 mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8e744758 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9c17b981 mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa21c4733 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb3e677e0 mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc239b197 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc31bc951 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc3d45e85 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xca3cb2f6 mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd01b0e46 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd1c3d633 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xde093b1c mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf258e24b mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf724eba7 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x1c931cd7 i2o_msg_post_wait_mem +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x291161b4 i2o_msg_get_wait +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x2a843bef i2o_dump_message +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x2e77ccac i2o_driver_notify_device_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x354362f2 i2o_parm_table_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x45918a6e i2o_driver_notify_controller_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x49e612e2 i2o_device_claim +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x553ad6f5 i2o_event_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x5579129b i2o_find_iop +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x648c63dd i2o_exec_lct_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x6ac17b51 i2o_driver_notify_device_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xa467d729 i2o_driver_unregister +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xb4c00dcf i2o_controllers +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xbef2206a i2o_driver_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xc461e709 i2o_driver_notify_controller_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xcf7ea7f5 i2o_device_claim_release +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xd0bc8318 i2o_parm_issue +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xe12ab84e i2o_iop_find_device +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xe289596f i2o_parm_field_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xf310ea1f i2o_status_get +EXPORT_SYMBOL drivers/mfd/cros_ec 0x25746143 cros_ec_prepare_tx +EXPORT_SYMBOL drivers/mfd/cros_ec 0x7b7a7124 cros_ec_register +EXPORT_SYMBOL drivers/mfd/cros_ec 0x868e1805 cros_ec_remove +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xa8d3c46b pasic3_write_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xbcbccc9f pasic3_read_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x1bb07c33 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x2764d948 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x417b1e24 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x510896ab mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x55a42efa mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x774332d5 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xaf0586fe mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb0467479 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb43592c2 mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xbd3db5b8 mc13xxx_irq_request_nounmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xcb21471e mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xd3bf9039 mc13xxx_irq_ack +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xfb424296 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/tps6105x 0x3d521c0e tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x7870963f tps6105x_get +EXPORT_SYMBOL drivers/mfd/tps6105x 0xc875976d 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/misc/ad525x_dpot 0x0d40cdda ad_dpot_remove +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x45dbbd3f ad_dpot_probe +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x58765536 altera_init +EXPORT_SYMBOL drivers/misc/atmel-ssc 0x7f0babd7 ssc_request +EXPORT_SYMBOL drivers/misc/atmel-ssc 0x9c29aff4 ssc_free +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x0e9755b9 pwm_channel_free +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x5a8b82f9 pwm_channel_handler +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x5d5c2951 pwm_clk_free +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x6a5e1f70 pwm_channel_alloc +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x73330c97 pwm_clk_alloc +EXPORT_SYMBOL drivers/misc/atmel_pwm 0xeb7f2c6f __pwm_channel_onoff +EXPORT_SYMBOL drivers/misc/c2port/core 0xa303a975 c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0xbe43200f c2port_device_unregister +EXPORT_SYMBOL drivers/misc/ioc4 0x8540fddf ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0xdbabb46e ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x03ef43f8 tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x082b9192 tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x39f86aa1 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0x63d2e8e4 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x68a5880a tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x752adec4 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x8b2384cb tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0xbfffa8ff tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xc5ecdbc0 tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0xd880642e tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xe48389b2 tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xefeb42b7 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xf95eb40d tifm_add_adapter +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0x786994bf mmc_cleanup_queue +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x3fb8d9ec cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x931e2d7c cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xba8a4c45 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x1f942723 do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x3e90ddd4 register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x54074557 map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xd005b324 unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x545c8c7e mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x3933933d lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x21b8831d simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x30cb4337 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0xc03f1293 mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/denali 0x8bbed237 denali_remove +EXPORT_SYMBOL drivers/mtd/nand/denali 0xc86d7f7b denali_init +EXPORT_SYMBOL drivers/mtd/nand/nand 0x1382195b nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x36738660 nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x57b2782d nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0x764d6378 nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0xa4c7d924 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0xcd599640 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x5268f70e nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x88c6de21 nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x93f074ac nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x1b50905c nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x9273da56 nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x57a31e57 nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x871b573d onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xaf150248 flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xd9d5d1c0 onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xf9b3fd32 onenand_addr +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x0a001965 arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x21cac718 alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x238ce017 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x38382baa arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x8733cad1 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xb28d5eb2 arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xc11fe51c arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xd7977a92 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xdea9369b arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xe4a6061a arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x628bbd81 com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x76c4ca82 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x8f8cdea3 com20020_found +EXPORT_SYMBOL drivers/net/dpa/dpaa_1588 0x0cf2f9bf dpa_ptp_init +EXPORT_SYMBOL drivers/net/dpa/dpaa_1588 0xaa7b4a7e dpa_ptp_cleanup +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x01156a5e ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x0498bb39 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x111757d1 ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x7c9cdcb4 ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x85b32c3d ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xbcd1e137 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xc2c538db __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xc9ba0aa1 NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xf41a030e ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xfcbcb808 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0xe3c5827a cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x019b1b18 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x19a5418d dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x20694d14 cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x2f73cf04 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x41a24a51 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x5ec28e3d cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x63ab0c02 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x6f2138a1 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x76925906 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x85e238f4 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x8668459c cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xb99e31e1 t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xc45090c1 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xcbe23b36 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xeb63fb17 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xfd9c6284 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x09247316 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1e705788 cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1e94a403 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x20ddb9d1 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x22a411df cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x286f9dcd cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2f358e54 cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x434b9989 cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4c2e3573 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5a3a55e2 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5ef9fa29 cxgb4_enable_db_coalescing +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x61959ff2 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6e2f6ec6 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x705a22fe cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x777ac858 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x855c6214 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9a478264 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9fb25c50 cxgb4_disable_db_coalescing +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xab1f779d cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbae792b0 cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc2347078 cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc4f4c775 cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd3929e35 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd3c51e84 cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf2dc8081 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf40818c0 cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf55dff29 cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xff2c7912 cxgb4_create_server6 +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 0x53c65b72 vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x71bb9773 enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x8da1e010 vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x9196d804 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x2f51a13b be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x99990691 be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbab62e22 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/freescale/gianfar_driver 0x79f28897 gfar_phc_index +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0996fc21 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x20dce54f mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x23bd9105 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x27392f0a mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2776a500 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x28173199 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x31e0a5ae mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4468c2c1 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4b9b10f1 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4fd2d5e6 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5049469d mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x544f0da7 mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x57bd4530 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6809a801 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x78fc3005 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8ef779b7 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x96ba6d0b mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9d40a49f set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa437ef28 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb8ff804e mlx4_set_stats_bitmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcc854dbe mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd374dc44 mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe1fa6b15 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf3a5082f mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf9365968 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfced2b95 mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x039c7e0d mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x059aea0d mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0662ee5f mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1a2c2958 mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1d1044b4 mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x25225f87 mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x26e223ca mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x355b7d23 mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3ccb1287 mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x45afbf41 mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4789c630 mlx5_dev_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x499e0850 mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4aa858d2 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4e1f22b0 mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5f5f590a mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6637d221 mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8ed9d538 mlx5_dev_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x98cfee72 mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa4b0d3e6 mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb23c6ee8 mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbfa33451 mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xce2e9d03 mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd823abed mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xde97378b mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe80f2684 mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf0c3b993 mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf3311b2e mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x0b6c1df8 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x4d6a0362 hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x571396b2 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x6a198024 hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x9ca3549b hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x3a1e4e67 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x425dc641 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x53f2aeba sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x63cdc4f9 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x7e6aff89 sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x9650c06a sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x96a840f3 irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xaa5d38e9 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xb06f48e2 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xe040c144 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 0xb34a7575 mdio45_ethtool_spauseparam_an +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mii 0x0ffd98b8 mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0x14efb644 mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0x56ddeea2 mii_check_link +EXPORT_SYMBOL drivers/net/mii 0x5fabba5d mii_check_media +EXPORT_SYMBOL drivers/net/mii 0x79b6ee9d mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0xa4433cae generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0xb01f4d67 mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0xe9660d02 mii_nway_restart +EXPORT_SYMBOL drivers/net/ppp/pppox 0x155c8dbd pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0x2ebd4591 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0xacdf678c register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0xc4871833 sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x3b5a5b93 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0x4011f648 team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0x91bd84e4 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0xaf4d9f6d team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0xaf5ee852 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0xca8cb8ce team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0xd41a2f71 team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0xedca26d0 team_options_register +EXPORT_SYMBOL drivers/net/usb/usbnet 0x260192b1 usbnet_link_change +EXPORT_SYMBOL drivers/net/usb/usbnet 0x269ad657 usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/usb/usbnet 0xed7d2eb6 usbnet_manage_power +EXPORT_SYMBOL drivers/net/wan/hdlc 0x153ca0bd hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x22821f83 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x2fb23573 unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0x5bca582d hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0x659ebd4f alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x6cb5a5d6 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x805e7822 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0xa48a3805 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xab919d22 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0xbcbc389e register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xf2327754 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x095c7b04 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x15f01788 stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xc0090d5a reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xddff7266 init_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x0ad7ccaf ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x12ae8f85 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x3e727ca6 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x41bb7dd7 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x435ad459 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4e2481d5 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x53358ce3 ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x8a7fc485 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x95f278b2 dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa6cd23b1 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa9a87b49 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xadb112be ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xf9fcbf5d ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x7eabb331 ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8246be6c ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x895f9dc2 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xa1332cc8 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xa41e03e3 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xaf096710 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xc2b5911e ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xc447815d ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xd886fb62 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x0199ec46 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x0c934827 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x1063fbcd ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x27cf1694 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x3845f397 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x3b48ec75 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4c6ddcb4 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4e1380ee ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x69525a35 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7318ed2d ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x9001230c 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 0x9611d02d ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xda565d47 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xf42fb0d9 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x118f86d9 ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x16b0cc66 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2f2c3e80 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb62401e5 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_hw 0x0844155e ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0b47d3df ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0c43c52a ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0cae112c ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1076d33e ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1085b4b5 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1a49bcb5 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1b8e17c0 ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1fb22fa6 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x22555a22 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x22d73925 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x25b0bd31 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x270a3d2f ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2981585e ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2a074bda ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2a25a9fb ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2d8e7eef ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2e66c317 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x30595286 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x31e29e0a ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x31f14fde ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x323c7f9d ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3c688cbe ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3d1be602 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3e8fba1f ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x41187715 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x47ca7781 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4943d650 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x51165b76 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x53eac82b ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x56752fd7 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5c64c130 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x61bd9752 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6275efd5 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6277e3a3 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x63a4d23f ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x63ec9afc ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x66fb3df5 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6a41cd17 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x78be28d4 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8018bca3 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x81a45a33 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x83588b31 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x852e28da ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x86729b3b ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x87a1a738 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8d2cfd01 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8ea8a01d ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x90841318 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x97f058fb ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x99005e3b ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa413b4f1 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa424653f ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa713e41c ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa76fb53e ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa8903673 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa92ddfd7 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xac41d9af ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xad80457f ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xae03d593 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaf5d12b7 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb36ba05e ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb5d08e38 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb65c52f9 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb819b4f5 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb99dfac8 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xba923139 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbaf40a3a ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbd385b4f ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbd9534c0 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbe5aebc2 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbec0ba17 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc1407199 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc21de79d ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc4097fc0 ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc517b9e4 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc78cf234 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xccfb38b6 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcf59d665 ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcfb4a3ae ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd0b0d3a6 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd3a3ea0c ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdae43247 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdb6afe42 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe2177e92 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe2af9980 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe33e98af ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe4567fd1 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe4665191 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe60cf740 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xea8a281f ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xec888d13 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xee3f11e6 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf43ae1d4 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf6549c40 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfad827fd ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfc355189 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfd4bc28c ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/atmel 0x6d708378 atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0x72027230 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xbe0fba94 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x2e9c7555 brcmf_sdio_probe +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x93112fff brcmf_sdio_remove +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x18a01001 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x27812ee9 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x2dc227f8 brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x4731a4c0 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x526cf8f3 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x6d9241ca brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7bcd88ea brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7d162684 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x99dca48d brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xa72bd733 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xc0c54cd0 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd12159a7 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd7e386de brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xe8734de3 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1d85560f hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x278cd56b hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3d9b78cc hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3fbcc7fe hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x603c8ab4 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6b36bf4b hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6f726556 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x857b85e6 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x99fb1c6c hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x9df68915 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa3b41188 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xab5570d0 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xab6304ea hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb174adf4 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb180ca8b hostap_remove_proc +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 0xb5730b79 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb5a52ab4 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xbbef19e7 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xcb5fd06f hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd8743ed7 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xdbf3a7fe hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xdc5ea5fd hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe7214ff7 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf4eb0182 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xfe9cf598 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1c998669 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x40557781 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x4415f26b libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x50c42bca libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5d669506 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x610212fa libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x87fabe4b libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8b4c8000 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x95e37fa3 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x9aad09b0 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa1639e03 free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa4adf3d1 libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb37f1ec8 libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc1286c98 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xcbb96bee libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd0346797 libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd9dae50b libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xda5c29a2 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe23f4c1d libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xec60f51c libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xfc07d645 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x016c153d il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x018bb553 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0633a306 il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0b15830f il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0b56fd86 il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0e2447fd il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x10357879 _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x10b0288f il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x10ce9a4e il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x14e49492 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x16df260a il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x22f489f8 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x24f0d84d il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x252bd6d3 il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2542cf6d il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x25c6f859 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x267da290 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x274ffc5d il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2b062e97 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2b1ecd38 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2b551885 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2c5c0a37 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2f57af75 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2feb9d4d il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x32cc340c il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x33027c31 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x331c53e3 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3514ff37 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3c087422 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3c44d448 il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3e2c28d4 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3f351cae il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x42bcb142 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4a08b763 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aec9219 il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4c035345 il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4e9dd47f il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5097142e il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x510bb66e _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5780d8e6 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5dc6e772 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x61dca7b1 il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x63df3955 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6643413f il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6b58041d il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6b624365 il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6d647452 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x75d181f1 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x77e40537 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7ae91f5c il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7e843bca il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7ea56e8f il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x808e2a1b il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x84d9ffec il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x869b7c72 il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8757b58d il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x88f6f91b il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x89c9c55b il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x89df667e il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8d8a29dc il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x906ee735 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9360551a il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x937cd9a2 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x982172e6 il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9a369b2c il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9ee4060d il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9f4b4db1 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa26e21af il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa2e71bdf il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xaed60f86 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb3cb77c2 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb6601b88 il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb6b8cdba il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb9147f82 il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbd4e410c il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbef63fb7 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc46bf644 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc46d0d19 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc600b3b4 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc87ce2db il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xce0ae160 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd1dc08cc il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd3d75985 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd43892ff il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd7640bc7 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd7881351 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xde69b828 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdee54559 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdf3c0c71 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe08e1b56 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe0aa3678 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe26e6057 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeadcea13 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xee51bd24 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf3571186 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfb2ac939 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfb5494b1 il_hdl_pm_sleep +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 0x0e7bc05f __tracepoint_iwlwifi_warn +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x201337b4 __tracepoint_iwlwifi_dev_tx +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x249e4b06 __tracepoint_iwlwifi_dev_rx +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x36dcef55 __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x4919d1a5 __tracepoint_iwlwifi_dbg +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x67381a2a __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x79e9bf26 __tracepoint_iwlwifi_crit +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x7edec07d __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x8bfcc307 __tracepoint_iwlwifi_info +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/iwlwifi/iwlwifi 0xda36f3a4 __tracepoint_iwlwifi_err +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x0266da79 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x0b69a7e1 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x27800cea orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x4890cfae __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x55ba6eb2 orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x59e8109c orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5dea5bf1 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5ea2eeec alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x8bef4520 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x8c8d313b orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xad943e07 orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd4bd161f orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd6fbfe29 free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xdd17222b orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xe9c44fe1 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xeec67623 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xf265061a orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/btcoexist/btcoexist 0x493c85b4 rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0e6a90d6 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x11d8acbb rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1213271c rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1b17fdeb rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2a32931c rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2ba0f9bd rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4d4a837b rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4d8e7e77 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x500bcb8d _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x60bc768a rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x63046195 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x67c910cd rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6c4690e0 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x731b1619 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7635d9a0 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7cb7c9b9 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7cda4c2e rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7d8aad4f rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8047ee05 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8148d4cb _rtl92c_phy_dbm_to_txpwr_Idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8ef35da6 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x93ba55a6 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x99537d16 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9bcd75dd rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9d7fa952 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9f8e5570 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa1edf772 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa29f6255 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa4715cb6 _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa8f19d20 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb0b229d1 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 0xc055d60f rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc597188c rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xca26dad2 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd519f3be rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdb3c181f _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdfe8c4c4 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe1a17681 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf27d5def rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf54dcefc rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf6c1f369 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x77041e94 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0xa56a271b rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x0d93c80d rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x69d2d2a2 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x79b79693 rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x7f631219 rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x07f1d051 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x1d787c18 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 0x262edec2 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2da4a840 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x39ed1724 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x3eaa9d0f rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x3f448c86 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5c8d1291 rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6e3b5400 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x80ae5bc4 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x90b34ce2 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x92d68042 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa03fd5be rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa108d6b9 rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa30aa20f rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xac27b019 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb2339407 rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xda000174 rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xeb1545d1 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xede7d5ec rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x0445b909 wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x044877a6 wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x208305c4 wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xfa25e603 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/nfc/microread/microread 0xab989089 microread_probe +EXPORT_SYMBOL drivers/nfc/microread/microread 0xb9da4f22 microread_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xc07436f7 pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xf140778a pn544_hci_probe +EXPORT_SYMBOL drivers/parport/parport 0x11e844b2 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x12095124 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0x136eaf5a parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x1438e717 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x226019c5 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x2e8bf2a8 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x30ec28d0 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x330d1025 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x37dc101b parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x3d63f8af parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x49137eae parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x4e6073b5 parport_read +EXPORT_SYMBOL drivers/parport/parport 0x5de134fe parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x6a47782a parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x6b414d00 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x7bd6dcce parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x7e93fe04 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x82e7ff0f parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x83f2c223 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x859b3db2 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x93d7a41d parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x9d26c0a3 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xac3e54fe parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0xba1660bb parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0xbf7fa00c parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0xc0e8b2f5 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0xc12f5db9 parport_release +EXPORT_SYMBOL drivers/parport/parport 0xded6c608 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xe0bfd659 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0xf9608b0b parport_write +EXPORT_SYMBOL drivers/parport/parport_pc 0x67b2d09c parport_pc_probe_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xab264b9a parport_pc_unregister_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x06e40cfb pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x29ce56b9 pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x2b0576b2 pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x2da8d9fe pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x4563bbed pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x45db9800 pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x55be40e4 pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x5cfadeda pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x61fc37e3 pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x7871e9d7 pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x8716154f pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x9abc3a63 pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa6ca92b8 pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xaa1a2349 pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xab05ec48 pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xd6b2392f pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xeb845eb1 __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xf0dbeb33 pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xf62a7ce3 pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x08ced9d8 pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x0b7fc270 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x15ad852f pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x22ba1116 pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x399a54d7 pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x4f8c4e6a pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xc94215d6 pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xd420fd7f pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xdd60143c pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xe9d6800a pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xf56db2f8 pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x0a06068d pccard_static_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x625f7dd6 pccard_nonstatic_ops +EXPORT_SYMBOL drivers/pps/pps_core 0x1524020a pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0x2a148a3b pps_unregister_source +EXPORT_SYMBOL drivers/pps/pps_core 0x531042cf pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0xd37e9ed4 pps_register_source +EXPORT_SYMBOL drivers/ptp/ptp 0x036225e3 ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp 0x076da39d ptp_clock_register +EXPORT_SYMBOL drivers/ptp/ptp 0xdff09301 ptp_clock_event +EXPORT_SYMBOL drivers/ptp/ptp 0xfc415f44 ptp_clock_unregister +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x030fec98 rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x154cef67 rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x4dc5f9ea rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x507a7666 rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x9b393ede rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xc7f9e949 rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xc8dfd42b rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xfb72ae57 rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xff39d722 rproc_report_crash +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x02eb28fe fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x0396da9d fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x0d90e27d fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x1ead4d8e fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x3d77d465 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x45255fde fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x80c3e3bc fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x8336e87b fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x8c176dbe fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xa6b76e24 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xcefb94ee fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xf85eadf7 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0008e9db fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0a99dae3 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0b3df59b fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1030534b fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x16756c59 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1e080ed8 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x284038a8 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x28b71ac6 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2a24bdab fc_change_queue_type +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x30a628c9 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x37fced3f fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3873894f fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x446cc9fc fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x480be05e fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5f77e8e1 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x62502fbb fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x62eaab8f fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6a1d82b5 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6b7959b7 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6e52fab8 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x71c6f007 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x72e73a92 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x75c5a40f fc_change_queue_depth +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x77aa363e fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7d1e15b9 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x86646c90 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8b42d81e fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8ce5274b fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8e0abfd4 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x923bcffb fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x92ffd91e fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x98932b27 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x99bce0a8 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9aaf9244 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9bac2dff fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9fc6ee08 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa307e69e fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xad6ee12b libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb091ba74 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb822d1ca fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc01a5c0e fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xca344ad5 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcfe5486b fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd1f4a85b fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd6fe3049 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd75567ff fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd92218b3 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xda384d93 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf52322c9 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf8531d05 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf9ac3413 fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfce66b31 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x3686b479 sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x3ac5ddc8 sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x44bd3d34 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x511c8759 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 0x6f9f5574 mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x05eda10c osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0801ff59 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1162a25f osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x15826f6b osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2fa3358c osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x31bfcb88 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x34e808d3 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3750e824 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x39e27c3a osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x579916a3 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5998f234 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5dded04e osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x69e4c10d osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x720c443f osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x75249c19 osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x78efe5e2 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7cc0b05d osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7f03919b osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8efe5ae8 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9552306a osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9658e30b osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9f83e709 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa13d2c21 osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa673f14c osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa7129409 osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb28f75b6 osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb5957c93 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb89665c2 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xbe7fbee0 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd14d898f osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd4d8349e osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xdf6c2f41 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe19e7b25 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf623488a osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf7883eed osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xfa8e3249 osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/osd 0x06614c74 osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x4bc29813 osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x9486fcc1 osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0xa812c3b0 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xde963320 osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0xe3664281 osduld_device_same +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x023a92ea qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x1006f67b qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x15d92a6d qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x250f8281 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x6eb4d0f0 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x751aaf2f qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x9b3e5ebd qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xa170fea9 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xb352b118 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xc9606a18 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xd623bc8e qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x0720cdc9 qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x153838a2 qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x27a741c6 qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x6f4d89b7 qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x824245df qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xc1685613 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 0x448feee5 raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0x589ee0a4 raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0xe55f5f6f raid_class_release +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x2230e095 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x2f1f8638 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x31519ccc fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x4b80f118 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x5a799fd1 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x5ca6f5b9 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x759898c0 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x87641f4b fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb631c324 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xd8db6258 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe198b29b fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xf307ea69 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xf9944feb fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x01a26ac3 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x04ac9b05 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0b7a8317 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0d108966 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2209b6e6 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2b7b06f9 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x323b2e0b scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x344b852c sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3959aa22 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x39f9b987 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3c5c1eeb sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x605ac1c9 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x783f0701 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x87058f9e sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x88c83d12 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x92dc0238 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x95b10435 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9d2b3dd2 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa0f03918 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xacf6b156 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc48e95c5 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc6c82674 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xcc906470 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd68e018b sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xda1132ab scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf1dda9bf sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf8433e72 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xfacaa11f sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x395f4444 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x5bcab16a spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xc7a17e9d spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xc99ee7fd spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xf1bfd3f1 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x50c45af6 srp_rport_get +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x66929f68 srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x6ad7c945 srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x8d795763 srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x6ed14aab ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x6fc37b10 ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xe37a373d ufshcd_runtime_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x034b3141 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x0c9042cc ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0x105e7a1f ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x1ecf1d3d __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x39a9262e ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x4a5e6da4 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x4fc5847b ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x5af15978 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x70ac7e85 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x70d336ef ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x7885c8c0 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x7f5d1872 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x8980a90f ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x985d0233 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0xb1aaa149 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0xb2ec243e ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xc0399f99 ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xd4259590 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xd4f2cc76 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0xf4f12679 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xf589a6fe ssb_bus_resume +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x6dba1404 fwtty_port_put +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xaf8f31bd fwtty_port_get +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x35acb3e2 adt7316_remove +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xefc9a072 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x8a071f8d ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xae721115 ade7854_probe +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0bce7eef lnet_counters_get +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x135f5ed9 the_lnet +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 0x19b463cf lnet_register_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1b191752 lnet_msgtyp2str +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 0x2a0037de lnet_notify +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 0x2ed9f960 lnet_copy_iov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x33202a6c LNetGetId +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3558e584 lnet_iov_nob +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 0x44558931 lnet_net2ni +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x473ad33b LNetDist +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x483ad571 lnet_parse +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x4bb00492 lnet_copy_iov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x4f9cb871 lnet_extract_iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5811a721 LNetInit +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x58a1ca89 LNetMDUnlink +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5de2a02f lnet_extract_kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5fee352c lnet_acceptor_timeout +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x6057e91f lnet_unregister_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x61f784b2 LNetClearLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x64cdea3a LNetCtl +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x6f7be171 LNetEQGet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x70e2b1e9 lnet_kiov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x722c76e5 LNetMDAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x77bd110e lnet_set_ip_niaddr +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7a172f31 lnet_connect +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 0x8a3064f2 LNetSetAsync +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9de986d3 LNetEQAlloc +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa8c2760b LNetFini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xaa2d9284 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 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 0xc59c5f5c lnet_finalize +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe38d6ea2 lnet_set_reply_msg_len +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe7e048c9 lnet_create_reply_msg +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf098fa75 lnet_copy_kiov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf1b316bf LNetSnprintHandle +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 0x531c627b seq_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x649a5cfc seq_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x8f7f18bf client_fid_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xa0ad2ffb 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 0xaf4d4c5d seq_client_get_seq +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xc997a02f LUSTRE_SEQ_SPACE_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xdb542d4a seq_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xdf524efd client_fid_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xecee2727 LUSTRE_SEQ_ZERO_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x10d7ef46 fld_client_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x7b500755 fld_client_del_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x7eb2114c fld_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xafc8c354 fld_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xb0bc34a4 fld_client_proc_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xb9828d1a fld_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xdffbdde2 fld_client_add_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x000c507f libcfs_debug_dumplog +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x01d84452 libcfs_sock_getbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x01db5172 cfs_percpt_atomic_summary +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x01e1c271 cfs_hash_debug_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x03387ca6 cfs_curproc_groups_nr +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x04d3ce6a lbug_with_loc +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 0x12426266 libcfs_run_lbug_upcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x12c54b77 cfs_hash_findadd_unique +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x15089e7d libcfs_sock_read +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 0x1d5a3928 cfs_timer_done +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 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 0x2b1e0458 cfs_get_environ +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 0x2f4181b7 libcfs_sock_getaddr +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2fb7eae8 cfs_hash_bd_finddel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x30986343 cfs_range_expr_parse +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 0x3834f243 proc_call_handler +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 0x3ea730c0 cfs_gettok +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 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 0x41ab33a1 libcfs_ipif_free_enumeration +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 0x44f07cfc cfs_pause +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x468bace1 cfs_hash_rehash_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4782689b cfs_hash_debug_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x47fdb4d1 cfs_timer_is_armed +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x48f163c6 libcfs_str2anynid +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 0x50941bb6 libcfs_sock_connect +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 0x5d3be65a cfs_crypto_adler32_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5d73c3e3 cfs_expr_list_free_list +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 0x62f56738 upcall_cache_init +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 0x66136d2d cfs_timer_arm +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 0x6d49f48d libcfs_sock_accept +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6de1464b libcfs_sock_setbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6dfa9ea1 cfs_crypto_adler32_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6e6af71c current_is_32bit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6f928e1b libcfs_debug_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7190502f upcall_cache_cleanup +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 0x7327b6e3 libcfs_sock_listen +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x75161168 upcall_cache_flush_idle +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 0x7a3d49ae cfs_expr_list_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7a47b94d cfs_hash_size_get +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 0x7c7986cf waitq_wait +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 0x841679dd upcall_cache_get_entry +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 0x8f12bb52 libcfs_log_goto +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8f45f10d cfs_init_timer +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 0x991d2a98 libcfs_sock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9f82f712 cfs_trace_copyout_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa13a57c0 libcfs_sock_abort_accept +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa1cbf250 upcall_cache_flush_all +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 0xa9dc74e2 cfs_trace_copyin_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9eae690 cfs_str2mask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xaaf59b75 cfs_cpt_set_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xab887583 init_waitqueue_entry_current +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xad019238 cfs_str2num_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xad04a879 libcfs_kkuc_group_add +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 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 0xbb9cb508 cfs_curproc_cap_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbd5d492e cfs_timer_init +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 0xc2911d96 cfs_expr_list_match +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 0xc3eb614e libcfs_ipif_query +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc47433a6 cfs_capable +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 0xc9b78bb4 upcall_cache_downcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcb385db9 libcfs_debug_binary +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcbab8493 schedule_timeout_and_set_state +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 0xd9541990 cfs_strncasecmp +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 0xdffc951d cfs_timer_disarm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe0214dd9 libcfs_sock_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe3bf6897 cfs_percpt_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe6555032 libcfs_ipif_enumerate +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe7b54314 libcfs_arch_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe94553b9 upcall_cache_flush_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeaeb5c6e cfs_crypto_hash_update_page +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 0xedf3a25a cfs_timer_deadline +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeed48ba7 cfs_hash_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xefbf6d86 upcall_cache_put_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf2c02048 cfs_cpt_bind +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 0xf66c26f6 libcfs_kkuc_msg_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf8a8644b libcfs_id2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf8efb8c5 waitq_timedwait +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 0xff0f98a6 libcfs_debug_vmsg2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x0984ac25 ll_iocontrol_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x6c2c4518 ll_osscapa_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xba9d2da9 ll_stats_ops_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xcd3cde92 ll_iocontrol_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xceffdad8 ll_direct_rw_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x17cdeffd lov_read_and_clear_async_rc +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x27095531 lov_stripe_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x415f6a35 lov_device_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xa0435552 lov_lsm_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xa288d560 lov_stripe_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xb2c7d092 lov_lsm_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x24e1671d lprocfs_counter_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x3bcbdc4b lprocfs_stats_alloc_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x45a1243f fsfilt_put_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x4d8d6dfa lprocfs_counter_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x516b5d9a fsfilt_unregister_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x584f2bd4 lustre_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x6a21384b pop_ctxt +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x8553b369 obd_memory +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x85c076bc push_ctxt +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x9a2730ab fsfilt_get_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x9b2979d1 fsfilt_register_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xb4f8ee63 lprocfs_read_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xe382fc78 l_dentry_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x14a47f31 it_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x9c22b84f it_open_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0xb57d8447 it_set_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0xf46a886f it_clear_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mgc/mgc 0xdc287f95 mgc_fsname2resid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x006513a0 dt_index_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0125a7c2 cl_req_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x013f487b lu_object_put_nocache +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01665e34 class_parse_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0184f6b0 dt_store_resolve +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x018626cb cl_page_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01def0a2 llog_cat_cancel_records +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x026f55ba cl_req_page_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x02a8f1c8 llog_copy_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x02ce7b9a cl_use_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x035852d0 lustre_swab_llog_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03779933 llog_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x057f6d4b class_find_old_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0599094f iattr_from_obdo +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 0x06f0f68d class_disconnect_stale_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x072e0407 lustre_in_group_p +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07453049 dt_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07481ae9 cl_env_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x077d3270 cl_2queue_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0787e100 cl_conf_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07aa68bb lustre_swab_lustre_cfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x082200a3 lprocfs_rd_filesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0836daca lprocfs_register_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x083942ff class_del_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x09533ae2 lustre_process_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0a2dcaed cl_page_list_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0cf99bff dt_acct_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d3a031c lprocfs_rd_conn_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d6b1428 cl_env_nested_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d84aea4 cl_type_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0e5ef714 dt_record_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0e79a6bd llog_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ea58058 cl_lock_closure_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ec22fd6 llog_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0f2d0165 cl_lock_modify +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0f6cbdbd cl_unuse_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0fe91547 obdo_to_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10bdf519 class_conn2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11495519 lprocfs_write_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11634783 cl_io_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x117f74a8 cl_sync_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11cf99f5 lprocfs_rd_numrefs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x12bed1e1 obd_llog_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x130b401b llog_cat_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x132d07b4 cl_page_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1477ae5c class_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1491dc30 lu_context_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1598e154 llog_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16446921 cl_lock_at_pgoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16728a89 class_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x17260880 obdo_cpy_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x17cf4a44 lu_object_locate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1850c5e0 cl_io_lock_alloc_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1a9245d9 cl_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ac93e33 obd_devs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ae8956c cl_io_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1b8e7fec cl_lock_disclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1bcb2e5e cl_lock_unhold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1bf029bf cl_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1c131df1 cl_io_commit_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1e8d3f41 cl_page_list_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1eb01483 llog_open_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ebe26aa lprocfs_add_simple +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ef9df43 cl_page_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1efb42f1 cl_queue_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2040e6a1 class_config_parse_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x205a7d2f lprocfs_nid_stats_clear_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x20ad9d22 class_name2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x20fca73d class_new_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x211e36b3 lustre_idmap_lookup_uid +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 0x22e5bc88 obd_llog_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2343676f lu_context_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x237757a5 cl_object_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x23a12c0a lu_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x240b33eb cl_page_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x247f118c class_conn2export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2515e85f cl_io_read_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2547efae lustre_uuid_to_peer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x255f2474 cl_page_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x259ebac6 obd_alloc_fail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x260cac93 cl_lock_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2668ccb4 llog_init_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x26ba5ebf cl_req_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x275cdc7a cl_env_reexit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x284628c0 cl_lock_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x294a29c2 lu_context_enter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x297cf5e0 class_handle2object +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a95d707 llog_declare_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ae1cd79 kuc_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b18d32b lu_site_purge +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b23ebeb class_devices_in_group +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b4c48e9 server_name2svname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b57a15a llog_cat_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ba8735d dt_txn_callback_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2bd8993b cl_io_rw_advance +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2bd94a07 llog_cat_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2c5377fb class_exp2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2cf30ddf lprocfs_obd_rd_max_pages_per_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2e1c12c2 dt_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2e219d56 lu_context_key_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2f078202 cl_object_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2fb83195 __llog_ctxt_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x30256d18 lu_site_init_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3039fdb5 cl_page_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3121689c cl_page_list_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3149d2e8 cl_2queue_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x33149787 cl_page_vmpage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3361ddbc cl_io_submit_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x33808ba8 obdo_to_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x33ac499b obd_export_evict_by_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x347c877d llog_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x353f0716 lu_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x353fc8aa lprocfs_wr_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x35a32f4f lu_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x364ba2b5 cl_page_list_move +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37ed6e4b at_early_margin +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x385ebf66 cl_page_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x387f2e8b capa_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38c3397a cl_page_cache_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38fb0c90 class_match_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x39c8580f class_handle_hash_back +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a005065 dt_otable_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a591be2 cl_lock_enqueue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b25c7ce lprocfs_rd_num_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b49e18c lu_object_invariant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b524395 cl_lock_user_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b566bd5 llog_cat_init_and_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c9caa92 class_disconnect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3ccc7291 dt_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3d4dcffb lu_context_key_register_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3d537536 local_index_find_or_create_with_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3d5f442d dt_index_walk +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3da2aa39 lprocfs_alloc_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x404bd7a7 class_handle_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x404d85d1 lu_context_key_revive +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x40f3b807 llog_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x41514a71 local_object_unlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x41b67e21 lprocfs_alloc_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4210ff0b obdo_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x421e78ff cl_req_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x42618f6a cl_req_page_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x42b4f2c7 llog_cat_declare_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x438df067 lprocfs_rd_timeouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4464ab2e lprocfs_seq_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x447cf2a4 cl_locks_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44e41abb lustre_posix_acl_xattr_filter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x45237bcf cl_io_submit_rw +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x45ebdca2 cl_2queue_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x45f5aacc class_import_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x46db7430 cl_lock_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x474ed5bd lustre_swab_ll_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47b35f7d statfs_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 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 0x4a8725c7 lprocfs_rd_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ac58713 obd_connect_flags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4afb5e75 class_manual_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4b1f6477 cl_lock_is_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4b82d00f cl_env_implant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4bf356ca lustre_idmap_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d13458b kuc_len +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d835ed9 lprocfs_free_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4de36f3c lustre_idmap_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4dfd5d22 local_index_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e0a5a9a lu_object_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e128117 class_disconnect_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e704793 obd_exports_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4fba4346 dt_directory_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4fbb86c8 dt_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x507d111b llog_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50c7fc36 ptlrpc_put_connection_superhack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x52ef852c obdo_from_iattr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x53c01db6 lu_object_assign_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x53e131c9 cl_page_list_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54149074 class_config_dump_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54885f87 ldlm_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5558d9b5 class_fail_export +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 0x56638001 cl_page_list_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5708f193 cl_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x570d09ae lustre_swab_lu_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5953bbeb cl_sync_io_note +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x597b0771 cl_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a20d896 obd_memory_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b5b746e obdo_from_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b72ff1f cl_io_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b8766b3 obd_export_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bc022c5 lprocfs_dt_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5cb70ad1 lu_context_key_degister_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d294e9b lprocfs_rd_connect_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d34ae0d cl_lock_mode_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5db1c3e2 cl_page_list_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5de38a73 cl_env_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e62e708 lprocfs_rd_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e92d027 dt_txn_hook_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e93341f lprocfs_oh_sum +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ebe6dc1 cl_lock_signal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ed188a9 lprocfs_add_symlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fda0107 lu_dev_del_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fe97b73 block_debug_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x624ffe24 lprocfs_counter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x628dd2e7 cl_page_list_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631a518d mea_name2idx +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631fd7b9 lustre_ext_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6360e272 dt_txn_hook_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x642fa7c9 lprocfs_free_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x645492f2 class_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x648a7f66 lprocfs_free_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x65749dfd cl_lock_closure_build +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6614d32b class_find_client_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x666d8e7a cl_lock_mutex_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x670000a1 cl_req_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x672b83ac lu_kmem_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6734adbd lprocfs_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6767e29f class_new_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x677fd7f9 proc_lustre_root +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67977b42 lprocfs_remove_proc_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67a6f6d0 lu_context_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67a90622 la_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67dc223a lprocfs_remove +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x680f5340 llog_thread_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x68819ab2 lprocfs_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6890d175 lustre_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x68b50c41 cl_lock_state_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69488268 cl_page_is_under_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69a97687 cl_object_kill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69c42114 at_min +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6a1eb97e cl_lock_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6a4c921a class_detach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6a4e5c73 cl_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6a9362a8 lprocfs_init_mps_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6b4bce71 cl_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6bb6d421 lu_buf_realloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6bc7ec45 lprocfs_alloc_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6c3d2cfe cl_lock_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6d1da476 cl_env_nested_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6d91b326 lu_object_anon +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6dfa4770 class_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6e47778f lu_device_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6ec4442d cl_enqueue_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f3e6225 dt_quota_slv_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x705f0a2b cl_io_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x70b378ac class_incref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72151fd2 lprocfs_exp_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x727aa15f class_exp2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72ddee4c obdo_le_to_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72ec7a56 lu_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x73ba021d cl_lock_user_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x73dea1a5 cl_io_sub_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x742559b1 class_unregister_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7437a7fe cl_object_attr_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 0x7545c1be cl_page_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x755bfb5a cl_io_is_going +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x756a77f3 class_parse_nid_quiet +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x76094aee llog_osd_put_cat_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7723e909 dt_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x772c2d8f cat_cancel_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77ca5a14 llog_cancel_rec +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 0x792471fe cl_object_attr_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7968881a cl_lock_enclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7997cd0f lustre_register_client_fill_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7a999096 lprocfs_at_hist_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b4fc57b at_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b78243a lprocfs_rd_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7bb2c1d8 lu_context_key_quiesce +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7bc12d2a lprocfs_init_ops_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7bd6b64a cl_lock_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7ed7680b obd_export_evict_by_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7edcafa0 cl_env_reenter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f1dcc4b llog_osd_get_cat_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f93f379 lu_context_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f96186e lu_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fad7291 raw_name2idx +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fe5561a obd_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7feec67d lprocfs_rd_blksize +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 0x80d2a5af class_config_llog_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81742d89 obd_ioctl_popdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x826c9480 dt_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x831f656c class_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8409660f lu_context_key_register +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 0x84e2eed4 lu_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8534f055 llog_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x860a0e3d cl_lock_weigh +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8616a052 cl_io_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x86e32aa4 lu_cdebug_printer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x86e63d99 cl_page_is_owned +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8768f7a4 llog_obd_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8770484a lu_kmem_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8776fca2 class_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x880a16e1 llog_cat_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8829aa15 dt_version_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8869a6df local_file_find_or_create_with_fid +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 0x8a200bb6 cl_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8a594897 cl_lock_hold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8a73a9f1 class_export_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aa2c358 lprocfs_dt_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b00be9b cl_object_put +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 0x8c45d563 lprocfs_rd_u64 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8c58337e lprocfs_rd_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ca636e4 cl_page_is_vmlocked +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d0d0a99 lu_object_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d658ed0 capa_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8dcdc835 cl_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e7c8e1a llog_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f047192 llog_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f67314c obd_dump_on_eviction +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8fbd67bf cl_lock_is_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8fcc3c9e cl_page_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8fd9d8cf cl_2queue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x902bd72e dt_lookup_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x912d1e76 md_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9145ecf8 cl_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x916da5f4 cl_req_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x91c0b25b cl_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x922adc16 lu_object_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92758d91 dt_store_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92cee2d8 cl_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92e58479 obd_dump_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x937b7a5c dt_txn_hook_commit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93859814 lprocfs_oh_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93aabbcc dt_declare_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93b46468 lu_session_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93fcdf93 llog_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93ff80a9 cl_lock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9505c895 lustre_idmap_lookup_gid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95128d92 cl_lock_descr_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9512d507 lustre_acl_xattr_merge2posix +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x951879f1 cl_io_iter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x953125de lprocfs_obd_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 0x95e4ddee cl_lock_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95ec998a lustre_groups_sort +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9661bedd local_oid_storage_fini +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 0x98a8e222 cl_io_rw_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x98d3a3d6 lprocfs_seq_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99d08f09 lprocfs_exp_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9a49b209 cl_page_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9a9beb29 obdo_from_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9aa8523c dt_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1ed9d8 obd_jobid_var +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b4f72bd cl_page_find_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b916770 cl_lock_descr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b9aec75 cl_page_list_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9bab17de lprocfs_add_vars +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9c764eb2 cl_page_list_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9cacf8dd class_search_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dbb17b6 lprocfs_dt_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f8bfce0 dt_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9fa879bf lprocfs_nid_stats_clear_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa0432c80 dt_locate_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa0525839 lprocfs_rd_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa0711a94 cl_wait_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa1f44572 lprocfs_single_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa21c5ea1 obdo_from_la +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2ba6988 cl_page_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2ecf7e7 lu_device_type_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa35d7b0f llog_declare_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4062864 capa_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa48c4a30 lustre_idmap_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4ec9b97 lu_env_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa513f7e4 lustre_groups_from_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa56370af lprocfs_rd_kbytestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa57d1f4d llog_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5cd8043 class_process_proc_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5fb234f lprocfs_write_frac_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5fd5c67 lu_object_add_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa674c241 kuc_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa6ea4f8b llog_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7265ab3 class_uuid2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa83da236 cl_page_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa8ad2a7e cl_object_attr_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa9711c2b cl_env_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa9f01f78 lu_site_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa21b7a0 lustre_register_quota_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa8db86b lu_context_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab11d822 cl_lock_discard_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabf45922 capa_decrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac1762e1 cl_lock_hold_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac4b12ad cl_sync_io_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac7f1596 kuc_ptr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xadaa1a5d cl_lock_hold_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xadd13fab cl_lock_nr_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xae6a2a9f dt_txn_callback_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf3084fe cl_page_clip +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb01963a6 class_uuid_unparse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0fb9886 cl_lvb2attr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b89b6d class_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1e5af75 lu_ucred +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb39aa844 llog_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb3ad2527 dt_try_as_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb40adf17 lu_device_type_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb41998cd lustre_cfg_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb41b62a3 lprocfs_rd_server_uuid +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 0xb7a461d6 cl_io_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb89907d9 lu_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb91dd710 cl_page_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb9bd3a6a cl_lock_get_trust +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 0xbaf53444 lprocfs_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbb151fcb dump_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbbad012f cl_page_make_ready +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc701b85 lprocfs_wr_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbcd77bcd lu_context_key_quiesce_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbcee1990 cl_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbd237925 cl_io_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe349ce3 cl_offset +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbeb5a418 cl_io_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbedb6bd9 class_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbfed0275 obdo_refresh_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc021ff94 llog_declare_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0578b7c class_export_put +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 0xc1121b99 class_conn2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc123a1f2 lu_context_key_revive_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc23deb45 llog_cat_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc243a8e9 lu_object_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc5972c8a cl_io_loop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc5c5bf05 cl_lock_mutex_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc5ef50ba class_register_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc6363469 lu_env_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc7c31616 lprocfs_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8308e4c cl_env_unplant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8b773ea dump_lniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8dbaa87 lustre_swab_cfg_marker +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8ddbef1 lu_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9b3c667 dt_lfsck_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xca77b20a cl_io_prepare_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0ab67f obd_max_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcc5c98ab cl_page_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcca48747 capa_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xccf7a8de obdo_cpu_to_le +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 0xcdcdda20 lu_env_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcedb140a obdo_cmp_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xceffcc37 lustre_common_put_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcfb3f3c7 lprocfs_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd08827c0 server_name2fsname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd092e655 lustre_register_kill_super_cb +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 0xd1b1478b cl_attr2lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1f58645 lustre_swab_llog_hdr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd2820c63 cl_lock_closure_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd2a8821a local_file_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd6500c29 cl_page_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd666e878 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 0xd715e19a cl_io_init +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 0xd9470f5d class_num2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd9cb11b2 local_oid_storage_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd9e972a8 class_connected_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda5b1ced class_find_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdab2e483 cl_object_glimpse +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 0xdb4a60f6 lu_dev_add_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb5e0d39 lu_device_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdbeea54e cl_page_gang_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdbef9c2d cl_lock_mutex_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdc4b71b8 class_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc40af0 class_check_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdce450b0 cl_page_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdceb2067 cl_object_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd64e86e cl_pages_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd78c0c7 lu_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdda3d949 class_handle_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde7d985b obd_dirty_transit_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdfa9d700 cl_2queue_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe028cf84 capa_encrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe12d8136 dt_record_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe1e2eb6c cl_2queue_init_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe273ce40 cl_page_own_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2eb4470 class_get_next_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe3323f5d class_handle_free_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe373ef5c lprocfs_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe39fcef2 class_unlink_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe617f911 lu_env_refill_by_tags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe65b7f8f cl_page_unassume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7d83236 cleanup_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe896f80d cl_lock_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8e84c32 class_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe916e382 cl_page_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xea32d9a0 class_import_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeacec47c lprocfs_oh_tally_log2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xead00173 lu_object_find_slice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeb2c961f lprocfs_rd_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeb3f388a _debug_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec76847f lustre_idmap_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec7d6b85 obd_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec8082d3 lustre_end_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec9e3bc2 cl_page_list_splice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xecb31105 cl_lock_ext_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed826a7b lu_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xedacdc2a lu_object_find_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xedba43b0 cl_page_slice_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 0xeefbadec llog_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef30172d cl_lock_extransit +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 0xf0979848 lprocfs_obd_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf1248699 cl_2queue_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf17acd42 lu_context_key_degister +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2339f12 capa_cpy +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf29b9e5e cl_env_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2fd6695 statfs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf40e35a2 cl_io_iter_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf490d5f9 class_del_profiles +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf51394e8 cl_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf55fc3e6 lprocfs_free_per_client_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf5773720 lu_ucred_assert +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf59230de cl_lock_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf5bbe615 llog_write_rec +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 0xf7d0deee cl_page_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8594a73 llog_exist +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf874c950 dump_lsm +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8b77e5b lu_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8c2df92 obdo_set_parent_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa813d06 capa_hmac +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfb2d558a cl_page_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfb31db5b cl_vmpage_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfb66866f cl_object_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbea0098 lu_types_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc13862f cl_page_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc5ff24a llog_osd_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc7f18d0 obd_pages_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfce4103b lu_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd68d17a class_notify_sptlrpc_conf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd8118ad class_put_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd8f5cf4 lu_buf_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdbb4a3e cl_unuse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdbe1557 lprocfs_write_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdd139d4 llog_cat_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfe16597e lu_ucred_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfe55333a lprocfs_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff57e92d class_match_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff66c647 cl_io_lock_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfffc1f11 lustre_swab_ost_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/osc/osc 0x5c4940c2 osc_update_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00603411 ptlrpc_save_lock +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 0x02db52bd ldlm_pool_get_slv +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 0x06a03b57 ptlrpc_request_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06b3942b lustre_swab_lov_user_md_objects +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x071fc74a RQF_LDLM_ENQUEUE_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x07605c7d interval_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x081d185b sptlrpc_enc_pool_get_pages +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 0x09978720 sptlrpc_import_sec_ref +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 0x0b3e410d ldlm_init_flock_export +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 0x0e55cc12 sptlrpc_register_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ed1f888 ldlm_namespace_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0eebc8f2 llog_origin_handle_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0f0c56ac sptlrpc_cli_enlarge_reqbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0fab32de ptlrpc_lprocfs_brw +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x109ecb2f ldlm_cli_update_pool +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 0x1474440e ldlm_pool_setup +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 0x15315e4d ptlrpc_schedule_difficult_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15618c83 ldlm_cli_cancel_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15a3e4db RMF_GETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x172fb86d lustre_msg_hdr_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1747d8b3 ldlm_lockname +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x17950f60 RQF_SEC_CTX +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 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 0x1aabbec3 sptlrpc_target_sec_part +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 0x1b0a245d lprocfs_wr_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1b3722e9 ptlrpc_prep_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1b400291 ptlrpc_unregister_service +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 0x1c63764a ptlrpc_unregister_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d043548 lustre_msg_set_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d5e8e1e req_capsule_server_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1dc2051d RMF_SEQ_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1de9c288 lustre_swab_layout_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1e8e48a4 sptlrpc_flavor_has_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1eb2a65f RQF_OST_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ee46b51 lustre_init_msg_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ee9eb3c RQF_MDS_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2096f5b5 RQF_OST_SET_GRANT_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x20d6b82c RQF_LDLM_INTENT_QUOTA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x218a36ce ldlm_cli_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x233790b5 RMF_OST_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x244e5558 lustre_msg_get_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x24aafdba RMF_MGS_TARGET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2585a629 RMF_SEQ_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2587513c RQF_LDLM_CP_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x25a9a940 ptlrpc_lprocfs_register_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x25c87eed ldlm_lock_allow_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x263304c6 ldlm_resource_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x269554ce RQF_LDLM_INTENT_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x26ae7429 ptlrpc_nrs_policy_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x26f99d16 RQF_MGS_CONFIG_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x28200e64 llog_origin_handle_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x285e5b99 lustre_msg_set_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2887c78b req_capsule_client_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x291350c4 ldlm_namespace_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x29e0869a sptlrpc_get_hash_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x29f80656 ptlrpc_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2a1ad16a sptlrpc_conf_client_adapt +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 0x2d3f6b59 ptlrpc_error +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 0x2e709edd ldlm_extent_shift_kms +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 0x2f1fb6ef ptlrpc_restart_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 0x30203669 ldlm_completion_ast +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 0x30cc5be1 ldlm_cli_enqueue_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x310a526c req_capsule_filled_sizes +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x313a0558 sptlrpc_sec_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31838cb4 RMF_IDX_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x318a4c57 ldlm_pool_set_limit +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 0x34cacaa7 ptlrpc_set_add_new_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35939a3d lustre_swab_fiemap +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x369c3256 ldlm_namespace_new +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3779645d ptlrpc_req_finished_with_imp_lock +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 0x3896ba40 ldlm_pool_shrink +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 0x399f5986 ptlrpcd_wake +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 0x3a47804a _ldlm_lock_debug +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 0x3ae247e5 req_capsule_other_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 0x3ca50f33 RQF_MDS_HSM_CT_REGISTER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3cb520d3 sptlrpc_cli_unwrap_bulk_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3d47572c ldlm_destroy_flock_export +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 0x3dddb3e2 dump_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ee4579b ldlm_pool_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f034caf lustre_msg_get_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f41e0e7 ldlm_prep_elc_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f752e78 RQF_MDS_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x40eb98d5 ldlm_cli_cancel_unused +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41008cef RQF_LDLM_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x436aa038 ptlrpc_prep_bulk_imp +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 0x442bdd46 ptlrpc_deactivate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4481591d RQF_OST_SET_INFO_LAST_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x44c9f534 sec2target_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45697435 ptlrpc_unregister_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45d05893 lustre_swab_lustre_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45e30cea lustre_swab_ldlm_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x465386df sptlrpc_gc_del_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x46d035a8 ptlrpc_pinger_add_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4760011d ptlrpc_at_set_req_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x476e99a6 sptlrpc_target_update_exp_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47f5e903 RMF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x48814c9f lustre_swab_ost_lvb_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x48bf35fe ptlrpc_send_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x498c03c5 lustre_msg_set_last_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x49c4e290 req_capsule_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a51606a __ptlrpc_prep_bulk_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a5a2416 RMF_DLM_REQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4b09ce4b lustre_swab_mdt_rec_reint +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4c2e8458 ldlm_lock2handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4ceb56cb lprocfs_wr_evict_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d7580d0 lustre_swab_hsm_user_item +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4dc27e14 ldlm_lock_fail_match +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 0x4e8dc969 ldlm_lock_downgrade +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4eb03a6f ptlrpcd_destroy_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f084705 ptlrpc_request_set_replen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f2a3b10 ptlrpc_replay_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f73e059 req_capsule_get_size +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 0x52a2df05 lock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x52c62150 RMF_RCS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x532653d7 ptlrpc_resend_req +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 0x54bfc252 llog_initiator_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x555eb7fe RQF_MDS_HSM_STATE_SET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x56bed5f0 req_capsule_client_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x56db4c66 ldlm_cli_cancel_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x56ef8209 ldlm_register_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x57049238 lprocfs_rd_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5819efea ptlrpc_unpack_req_msg +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 0x595cac0a req_capsule_server_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x596582bf RMF_GETINFO_VALLEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x59ca398b ptlrpc_add_timeout_client +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 0x5af3e450 sptlrpc_get_bulk_checksum +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b60133d ldlm_destroy_export +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 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 0x5e84b6b9 req_capsule_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ec3284d RQF_MDS_HSM_CT_UNREGISTER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ef560c2 llog_origin_handle_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ef831ee lustre_msg_get_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5f7249be ptlrpc_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5f96ccdd ptlrpc_connection_get +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 0x62192cf8 dump_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x62aaae3f RQF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x62b833ac ldlm_resource_foreach +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 0x63b20c2b client_disconnect_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x647b6e48 lustre_swab_ldlm_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x64c58364 ldlm_glimpse_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x653723dc RMF_LOGCOOKIES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6540a1ea ptlrpc_register_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x657b00b7 ptlrpc_init_rq_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x67196dc0 ptlrpc_resend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x683243bf ptlrpc_set_next_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6845acf6 ldlm_blocking_ast +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 0x68f418fa req_capsule_extend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68f49e5e ptlrpc_expired_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6911f1eb ldlm_lock_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6912990a RQF_OST_QUOTACHECK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6945a044 ptlrpc_disconnect_import +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 0x6b6f4bc2 req_capsule_has_field +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c147713 ptlrpc_buf_need_swab +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 0x6e52dd2e sptlrpc_gc_add_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6e792230 ptlrpc_mark_interrupted +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 0x707633ff ldlm_namespace_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x71b72048 ptlrpc_recover_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x71d4eb55 ptlrpcd_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x71e1f2c4 lustre_pack_reply_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x723a3269 ptlrpc_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x723d43b6 sptlrpc_rule_set_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x725a892c RQF_MDS_REINT_OPEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7287b6c0 ldlm_pool_get_lvf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x72b2fe09 ptlrpc_stop_all_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x731a371f ptlrpc_req_set_repsize +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 0x75072e84 sptlrpc_conf_target_get_rules +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 0x77571cc6 lustre_swab_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77840c82 sptlrpc_rule_set_choose +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x784daca4 ptlrpc_request_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x789ed66d ptlrpc_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78ad61ec sptlrpc_lprocfs_cliobd_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78bf9136 lustre_swab_ldlm_lock_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x79e12c1b sptlrpc_cli_unwrap_bulk_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a832f10 RMF_CONN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7adad336 lustre_free_reply_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7ae9eb54 sptlrpc_cli_ctx_expire +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 0x7c3ae858 llog_origin_handle_prev_block +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7c4c6107 RQF_LDLM_CONVERT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7c504932 ldlm_namespace_cleanup +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 0x7dc5ec4c req_capsule_server_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7dfb3c18 lustre_msg_clear_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7e32f87a client_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7e433804 llog_origin_handle_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7e9d44f4 ptlrpc_retain_replayable_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7eb123c1 ptlrpc_service_health_check +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 0x808498df target_send_reply +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 0x8205dea7 ptlrpc_set_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8216a2c8 ptlrpc_reconnect_import +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 0x84edf124 ldlm_enqueue_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85135801 RMF_DLM_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85a27736 sptlrpc_target_export_check +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 0x879c11ea req_capsule_set_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x87bf7b3c sptlrpc_get_next_secid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x87ff2afb ldlm_pool_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x881a9be0 __ldlm_handle2lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x883a54ba ptlrpc_nrs_policy_unregister +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 0x8901ee11 ldlm_namespace_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x893636b3 ptlrpc_queue_wait +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 0x8a67de3c ptlrpc_commit_replies +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ac440fa ptlrpc_uuid_to_connection +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b065022 ldlm_cancel_resource_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b854254 lustre_swab_mgs_config_res +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8c407274 llog_client_ops +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 0x8de97e75 ldlm_lock2desc +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 0x8f857006 ldlm_reprocess_all_ns +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8fc65ff5 ldlm_resource_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8fec0451 lustre_msg_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x904ff4dc __ptlrpc_free_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x905dd234 req_capsule_server_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x919c4ce3 RMF_OBD_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x91ba4b9d sptlrpc_req_replace_dead_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x91cf58d3 RQF_MDS_PIN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9261ad50 ptlrpc_abort_inflight +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 0x967516a7 sptlrpc_svc_ctx_invalidate +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 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 0x9afc5487 ldlm_init_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b1899e0 ptlrpc_pinger_sending_on_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b229a92 ldlm_namespace_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b7a7cea unlock_res_and_lock +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 0x9c2e0d85 sptlrpc_sec_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9c88f4f1 ldlm_lock_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d2f768b ldlm_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d493f58 lprocfs_wr_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d7ea314 sptlrpc_pack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9dba10f2 ptlrpc_cleanup_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9e0e21e1 ptl_send_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9e635ace ptlrpc_request_alloc_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9f8db019 req_capsule_server_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9fb088f1 lustre_swab_lov_mds_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa0914142 sptlrpc_cli_ctx_wakeup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa10f0d3d RMF_UPDATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa1316777 client_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa1493713 ptlrpc_start_threads +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 0xa2679979 ldlm_cli_cancel_unused_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa2a9ea50 sptlrpc_unregister_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa2d718c0 lustre_pack_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa337b47e req_capsule_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3d2a6ee RMF_CAPA1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa44b90e0 lustre_pack_request +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 0xa4ed8656 ldlm_pool_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4fa9d01 sptlrpc_gc_add_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5458dad ldlm_lock_decref_and_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5657510 req_capsule_init +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 0xa7ad33f8 ldlm_lock_change_resource +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 0xabba4d10 ldlm_resource_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xac63ed31 llog_origin_handle_read_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xad017208 ldlm_pool_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaddc3979 lustre_swab_lustre_capa_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae058ab7 do_set_info_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae39d321 ptlrpc_request_free +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 0xaf9ca4eb ldlm_pool_set_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0751fa4 RQF_LLOG_ORIGIN_HANDLE_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1aba1dc ptlrpc_init_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1b43d8a dump_rcs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb230b8f2 ldlm_lock_fail_match_locked +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 0xb2b1817d lustre_swab_ost_lvb +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 0xb62d3007 ldlm_lock_cancel +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 0xb996c12a lprocfs_wr_pinger_recov +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 0xbda4b750 ptlrpc_request_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbe47bc7e ping_evictor_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbe6c5a86 ptlrpc_request_bufs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbec491af lustre_pack_reply_v2 +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 0xc1c37843 ptlrpc_set_import_active +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc1ed015f ldlm_pool_get_clv +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 0xc596965f target_print_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc60a60e1 RQF_OST_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc65cf09d client_import_find_conn +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 0xc8be12e1 ptlrpc_buf_set_swabbed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc8f586a9 ptlrpc_connection_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc9b7b8ae llog_origin_handle_next_block +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc9c1e7cf sptlrpc_cli_wrap_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xca5a81ec ptlrpc_pinger_ir_down +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcaa0c517 client_connect_import +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 0xcbf0062e ptlrpc_request_alloc_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce1a689b sptlrpc_enc_pool_add_user +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce86066d lustre_msg_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce894822 ptlrpc_lprocfs_unregister_obd +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 0xcfd6895a req_capsule_server_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd047ce74 _debug_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd1a73e12 ldlm_cli_enqueue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2983334 lustre_swab_swap_layouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2e0d4eb lustre_msg_get_opc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd3794247 ptlrpc_activate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd3dae408 ldlm_it2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd4939679 ptlrpc_fail_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd537ded2 lustre_swab_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd5e67598 ldlm_completion_ast_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd619d3b8 ptlrpc_obd_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd67a5d7b lustre_swab_update_reply_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd68a2225 ldlm_flock_completion_ast +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 0xd89b0701 ldlm_cli_enqueue +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 0xda2ac111 sptlrpc_proc_root +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 0xdbd61cc2 ptlrpcd_alloc_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdc9e986e ptlrpc_pinger_del_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdcf910b9 lustre_swab_ost_last_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdcffb147 ldlm_get_enq_timeout +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 0xde30af49 ptlrpc_cleanup_client +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 0xe036cca1 ldlm_pool_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe05e2070 sptlrpc_import_flush_my_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0cc694c RQF_LLOG_ORIGIN_HANDLE_NEXT_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0daa98f client_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe146fb71 ptlrpc_prep_req_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe22ff8df target_pack_pool_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe3188ab7 req_capsule_client_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe38cae63 ptlrpc_invalidate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe40e0a50 lustre_msg_get_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe57bd972 sptlrpc_current_user_desc_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe5e8169b lustre_errno_ntoh +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe61c687d ptlrpc_unpack_rep_msg +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 0xe765e98a req_capsule_field_present +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe8871431 req_capsule_server_sized_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xea610cdc sptlrpc_import_flush_all_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeabaa0b1 lustre_swab_mdt_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeabac4fc sptlrpc_rule_set_merge +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeb5627ce ptlrpc_register_service +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 0xecefc351 sptlrpc_sec_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xed1c10d6 ptlrpc_connection_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xed5440cc req_capsule_client_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xedcb740d sptlrpc_name2flavor_base +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef1aeca9 RMF_FLD_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef62b74b ldlm_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xefb519ad ldlm_prep_enqueue_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0241d6e lustre_swab_hsm_progress_kernel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0d52b5f ptlrpc_pinger_suppress_pings +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf1300275 _sptlrpc_enlarge_msg_inplace +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf13f4236 sptlrpc_cli_ctx_get +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 0xf2eb8a63 sptlrpc_cli_ctx_put +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 0xf40f29d9 req_capsule_init_area +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf43540b9 lustre_swab_mgs_nidtbl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf44354a0 ptlrpc_req_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf45085e1 sptlrpc_conf_log_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf469d32e ldlm_replay_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf5192c19 ptlrpc_req_finished +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 0xf6d18915 sptlrpc_enc_pool_put_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf6d7d4f2 ldlm_blocking_ast_nocheck +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf70eb5d3 ldlm_resource_unlink_lock +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 0xf7f400b5 ldlm_lock_allow_match_locked +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 0xf9512a17 client_import_del_conn +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 0xfacd1418 ptlrpc_wake_delayed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfaf6bf37 ptlrpc_hpreq_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfb444a98 ptlrpc_prep_fcset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfbdd1965 ldlm_pool_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc2fa83f ptlrpc_del_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfd148bf8 RMF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff02a0e9 ldlm_lock_set_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff2b5341 ptlrpc_prep_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffc7607a client_import_add_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 0xe2679d59 cxd2099_attach +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x0294fde4 go7007_read_addr +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x0669830e go7007_alloc +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x23053eff go7007_snd_init +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x2af2835d go7007_boot_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x492af1b4 go7007_register_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x557c0580 go7007_read_interrupt +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x64ccac28 go7007_update_board +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x9259b20e go7007_snd_remove +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xa465e8e6 go7007_parse_video_stream +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x090fb11f rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0be5787f rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0e5ef1cb rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x18d27928 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1938dc88 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1b7a80d9 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1c366e80 rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1cb13d9e rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x22bab9bc rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x31bf9bea rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3393a589 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x36750492 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x37027544 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3af59b8f alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3b4ec757 rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4b8fbeed rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4e0d3a33 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5648f0ab rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x66217283 Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6f39d372 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x73886d59 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x81500699 rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x81810af0 rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x83570d7a rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x837d6ab6 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x851e74e7 rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x854161e3 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x85ce9ffc rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x875c28b6 rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x88914fe9 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8adc8965 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8bd9aaca rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x958bb9c8 rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9732b495 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9bfdf3a9 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9e4fef19 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa909b459 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xacd3ac72 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xae2fcc34 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xafb50de6 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb969858e rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc2449df4 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc68a92b9 rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd461dd1d rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xde2ef252 free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xec2ec18b rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xec61d625 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf31f7b1d rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf8132eaa rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfff48881 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x02243a55 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x06b1093a SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0b2e7e75 ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0c5ce451 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x114c33a6 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x127b80b9 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x129d32ef ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x13b6b690 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1a33f268 ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1a646b0f ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1c5d4a3f ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x213dbf37 Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x26db050f ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x28be46c6 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2ac3e3bb ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2e29326e ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x37a2faf1 DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3cbb989d ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x420d6d90 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4529270a ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4fb6d5a3 ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x564f305f ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5c503b55 ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5c5eb5f3 ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x63939a29 Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x63fc5d5c IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x65e92b5a ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x66a23d1a ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x683c861d ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6c32c8b5 ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6d1ba3fd ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6f95ac84 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x71d9748c ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x740c9fa5 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x749027b9 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7f6b900a ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x82fb9ba7 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8a9711a6 ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8f367cc8 ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8f46e522 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa2962d34 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xab794cf5 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xabf8f207 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb583235d ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc093ca11 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc4676b54 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc548c13b ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xccdc4d3a ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd1cc9acd ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe13f5351 DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe5befed5 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe7a75ddf HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xea434ad0 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf57ec966 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf88c07f1 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfed37f1b ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x0017f35f set_bp_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x00ea0cde set_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x06d6f244 get_bp_dis_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x09df8f3e set_tap_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x0a8d32c3 get_bypass_slave_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x1936264c set_dis_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x1d2eb8ca get_tap_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x203af1f7 reset_bypass_wd_timer_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2070f14a set_bypass_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x27b990ef get_bypass_info_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2ba7cd35 get_wd_autoreset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2c3f1c17 get_tx_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2f59e636 get_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2fdb893a get_tap_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x361cf40a get_dis_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x45ca99c3 set_wd_autoreset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x550a188c set_bypass_wd_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x5cb59e92 get_bypass_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x66b60122 set_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x675208c0 set_tx_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x692623f2 get_std_nic_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x75131ec6 set_bypass_pwoff_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x76c0b7d0 set_tpl_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x7e872825 get_wd_exp_mode_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x7e8d701e get_wd_expire_time_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x86388b07 get_bp_disc_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x93ae4648 get_wd_set_caps_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x95e42b0d is_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x9df5f807 set_dis_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x9e21f42e set_std_nic_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xa689a214 get_bypass_wd_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xae117788 get_bp_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xc368d30d get_dis_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xccab5de0 get_bypass_caps_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd3e034b3 get_bypass_pwoff_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd9c1ccfc get_bp_disc_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd9d38d97 set_wd_exp_mode_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xe640f06e set_bp_disc_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xecdaa456 set_bp_hw_reset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xedcd3c1b get_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf06d67bf set_bp_dis_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf57c1671 get_bp_hw_reset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf693c3a1 bp_if_scan_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf8237882 get_bypass_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xfa59240d get_tpl_sd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x05af3c4c set_wd_exp_mode +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x05b08a42 set_bp_hw_reset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x0b0d5ce0 get_tap_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x0fc2e83c reset_bypass_wd_timer +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x123a8133 get_tx +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x157ec89c get_bp_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2440f05a get_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2b01d1d4 set_bp_dis_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2c27a2f0 set_dis_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2da97f4b is_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2e86c67b get_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x37416370 get_bp_hw_reset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x37bdab27 get_wd_autoreset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x3da96a18 get_bypass_caps +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4025805e get_bypass_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4940a0cc get_bypass_info +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4d21ff51 get_bypass_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5147360c get_bp_disc_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x515d4df1 get_bypass_slave +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5560267e set_wd_autoreset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5be44d44 set_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x6653590c get_wd_exp_mode +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x6bda14ec get_bp_dis_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x72c618ae set_bypass_wd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x76d47e6f set_bp_disc_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x794e3815 set_tap_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x7c6cbc16 get_tpl +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x84a263dc set_tx +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x8a16f22c set_tpl +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x946ff795 get_wd_set_caps +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x94f6aff2 get_bypass_wd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x9d1ecf73 set_bypass_pwoff +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xb1385629 set_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xbff68c45 set_bypass_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xc871c561 get_dis_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xcee528df set_std_nic +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xd202dd85 get_bypass_pwoff +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xd787f151 get_wd_expire_time +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xdb6a39d2 get_dis_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xebd25ae5 get_std_nic +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf1e9f8c1 set_bp_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf224abd9 get_tap_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf5a591b2 set_dis_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf643fd4c get_bp_disc_pwup +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x172b1a9b xillybus_init_endpoint +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x4c6468f2 xillybus_endpoint_remove +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x921eb5a3 xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0xd7235c89 xillybus_do_cleanup +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0215e5f0 iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x069ec5cc iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x109cf6af iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x10a6b1f6 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1bf3d29b iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2630f757 iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x31bac25c iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x320378d0 iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3779e14f iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4a12509f iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4abceba0 iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4ae09244 iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4c26902d iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4e5a7510 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x51deabbd iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5c8b1b03 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x61fe62e7 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x62caad9b iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x65638f75 iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x73ccee7b iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x85cd4560 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x98e9c023 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9a5cd2d8 iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbbb22eec iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xcc6daa28 iscsit_handle_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xcd5e2561 iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe36bc22b iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf07f51b3 iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/target_core_mod 0x00356e1d transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x0239cf37 iscsi_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x211be17b core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x21b15ff2 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x2278b216 target_fabric_configfs_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x24c44dc2 fc_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x2641fde1 fc_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x2b70abbc sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x2c0b6bd6 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x34a44c59 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x424a776b core_tpg_clear_object_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x45143ea9 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x4c066026 fc_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x4e535b9d core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x4f205471 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x53091de3 core_tpg_add_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x53876af6 sas_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x55d178b4 spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x57f4568c transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x58aa26db __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x5a981f00 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x5c43301e transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x5df39ae5 spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0x5e20df6b sas_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x5f904b69 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x67d71214 core_tpg_del_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x6bc37280 transport_subsystem_release +EXPORT_SYMBOL drivers/target/target_core_mod 0x6bd97444 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x792f5380 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x79965f60 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x7b59f986 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x7eb93e93 transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x81363c48 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x8beb6674 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x8c0179f2 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x8d293459 target_to_linux_sector +EXPORT_SYMBOL drivers/target/target_core_mod 0x8f73cd5e iscsi_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x8fff794b core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x936d850f transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x99db5199 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0xa393b551 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0xa51eef2d transport_subsystem_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xa76d9206 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0xa7c66352 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xa9513a16 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xa98642ca transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xaa8d481c sas_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xb17cb425 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xb200b180 target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0xb68d0b6e transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xb8ba21df transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xbee64a95 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xc0a12c05 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xc2645c85 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xc4f66f5f transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xcadda669 iscsi_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0xcbe4ebeb sas_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0xcf1f8119 sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0xcfa40a15 target_fabric_configfs_free +EXPORT_SYMBOL drivers/target/target_core_mod 0xd636651a target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0xd78106f0 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0xdc27f692 iscsi_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0xdcdd0e49 target_fabric_configfs_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xdee6cc6d sbc_execute_unmap +EXPORT_SYMBOL drivers/target/target_core_mod 0xdfa728f5 target_fabric_configfs_init +EXPORT_SYMBOL drivers/target/target_core_mod 0xdffd100a fc_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xe2da87da core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xe85d1564 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xeea8b746 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 0xfe82466b core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0xfea865b0 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0xffd480db target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xffebc516 spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0xc13b5d8e usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0xc11c6e99 unregister_gadget_item +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x05e02f8c gether_register_netdev +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x2259d70a gether_get_host_addr_u8 +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x27ec1d39 gether_get_host_addr_cdc +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x2b3798fc gether_get_host_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x394363e1 gether_set_host_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x693fc0c2 gether_get_ifname +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x76cb53a3 gether_set_dev_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x86d62833 gether_setup_name +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x8c03df39 gether_get_dev_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x914da0d8 gether_connect +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x9cda5411 gether_set_qmult +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x9d8ffe4d gether_disconnect +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xbd1956e5 gether_get_qmult +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xd35175f3 gether_set_gadget +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xe8160b70 gether_setup_name_default +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x3a6d4f22 rndis_free_response +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x3ca38e3a rndis_signal_connect +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x4ca90996 rndis_signal_disconnect +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x5d22b406 rndis_register +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x785d494b rndis_msg_parser +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x840dd143 rndis_deregister +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x988ad2a2 rndis_set_param_vendor +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x9acf72e4 rndis_set_param_medium +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xa03665cd rndis_set_param_dev +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xa564cebf rndis_rm_hdr +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xa90054ee rndis_uninit +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xb971ebca rndis_get_next_response +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xcb253d65 rndis_add_hdr +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xd2fe47b1 rndis_set_host_mac +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x001af3ff fsg_show_ro +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x028c4769 fsg_store_file +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x07e85a9e fsg_show_removable +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x096b8dc3 fsg_store_cdrom +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x1710b539 fsg_fs_bulk_out_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x1b1cc3af store_cdrom_address +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x2933ee1d fsg_ss_bulk_in_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x34e3e02d fsg_lun_open +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x398778e1 fsg_ss_function +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x423845e4 fsg_ss_bulk_in_comp_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x56344daf fsg_hs_bulk_out_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x773a975e fsg_show_file +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x7ab797ef fsg_lun_fsync_sub +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x857b6dc2 fsg_hs_function +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x8fa992ab fsg_lun_close +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x95cffb3e fsg_hs_bulk_in_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xa4786eb2 fsg_store_removable +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xa5cae92f fsg_ss_bulk_out_comp_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xa5f99b69 fsg_fs_function +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xad07adce fsg_store_ro +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xb52ba28a fsg_intf_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xb54d0d95 fsg_fs_bulk_in_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xea454d96 fsg_store_nofua +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xeb2d82f0 fsg_show_cdrom +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xf13e8cd2 fsg_show_nofua +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xf4efc0c8 fsg_ss_bulk_out_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_rndis 0x56110684 rndis_borrow_net +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0xfb6881b3 sl811h_driver +EXPORT_SYMBOL drivers/usb/phy/phy-generic 0xa64a4cea usb_nop_xceiv_unregister +EXPORT_SYMBOL drivers/usb/phy/phy-generic 0xd0e43207 usb_nop_xceiv_register +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x068f3dcf usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x176de7b7 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x510da7b6 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x5822b070 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x5eeb4522 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x67e3cc48 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x959a183a usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb5e9c451 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xc21ff956 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xcf4b3f37 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe4e193c2 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe863951c usb_wwan_set_termios +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf4d1ba46 usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x03373072 usb_serial_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x723411ea usb_serial_resume +EXPORT_SYMBOL drivers/vhost/vringh 0x0dda8c5a vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x1f063017 vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x2e91ca97 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x367ce26a vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x36dfce73 vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3eaf442a vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x3fa42e4f vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x5dafbd4e vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x66af098b vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x6d0e7948 vringh_abandon_user +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 0xaf8e4a0e vringh_notify_disable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xafb47dae vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0xc884d704 vringh_notify_disable_user +EXPORT_SYMBOL drivers/vhost/vringh 0xc8bee0a4 vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xd11d2709 vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xda4ea4cc vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0xfc7dcad2 vringh_getdesc_user +EXPORT_SYMBOL drivers/video/backlight/generic_bl 0x366d19ef genericbl_limit_intensity +EXPORT_SYMBOL drivers/video/backlight/lcd 0x1fb85b22 devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x7662dc8b lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xbb6994e9 lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xccb256ba devm_lcd_device_register +EXPORT_SYMBOL drivers/video/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/cyber2000fb 0x534b6f18 cyber2000fb_disable_extregs +EXPORT_SYMBOL drivers/video/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/cyber2000fb 0xdfb28f20 cyber2000fb_attach +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x5f5d8e33 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x6db8e0fb matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0xd2df7a5c g450_mnp2f +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x3c2721d6 matrox_mystique +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x3c4f2d39 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xacf3756a matrox_G100 +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xf26dea3c DAC1064_global_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_Ti3026 0xc8d760a1 matrox_millennium +EXPORT_SYMBOL drivers/video/matrox/matroxfb_accel 0x5d8b76dd matrox_cfbX_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x058ab9a1 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x8d1a56bd matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0xdc0262c6 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0xf946c6f5 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0x618cb893 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0x70aefa3c matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x1b2dc43d matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x3f052de0 matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x561f0476 matroxfb_read_pins +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xb1f5e823 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xe99e4410 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/mb862xx/mb862xxfb 0x67209340 mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/output 0x727c32d6 video_output_register +EXPORT_SYMBOL drivers/video/output 0x926d6885 video_output_unregister +EXPORT_SYMBOL drivers/video/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/svgalib 0x1cead839 svga_settile +EXPORT_SYMBOL drivers/video/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/svgalib 0x4cec462a svga_tilecursor +EXPORT_SYMBOL drivers/video/svgalib 0x5de85075 svga_get_tilemax +EXPORT_SYMBOL drivers/video/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/svgalib 0xa617bbd5 svga_tilefill +EXPORT_SYMBOL drivers/video/svgalib 0xa7292179 svga_tileblit +EXPORT_SYMBOL drivers/video/svgalib 0xcdd7d472 svga_get_caps +EXPORT_SYMBOL drivers/video/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/svgalib 0xf1f07c2e svga_tilecopy +EXPORT_SYMBOL drivers/video/svgalib 0xf2db5956 svga_match_format +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/vme/vme 0x00d7e722 vme_lm_count +EXPORT_SYMBOL drivers/vme/vme 0x072f901c vme_master_rmw +EXPORT_SYMBOL drivers/vme/vme 0x0ec5babe vme_dma_free +EXPORT_SYMBOL drivers/vme/vme 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL drivers/vme/vme 0x27f497b1 vme_register_driver +EXPORT_SYMBOL drivers/vme/vme 0x381a3c86 vme_new_dma_list +EXPORT_SYMBOL drivers/vme/vme 0x3e95083c vme_slave_get +EXPORT_SYMBOL drivers/vme/vme 0x3f82aaa4 vme_irq_handler +EXPORT_SYMBOL drivers/vme/vme 0x411af1d9 vme_lm_request +EXPORT_SYMBOL drivers/vme/vme 0x41862ad4 vme_alloc_consistent +EXPORT_SYMBOL drivers/vme/vme 0x4434b2c7 vme_slave_request +EXPORT_SYMBOL drivers/vme/vme 0x46649cd1 vme_lm_set +EXPORT_SYMBOL drivers/vme/vme 0x48b99a13 vme_lm_free +EXPORT_SYMBOL drivers/vme/vme 0x4baf35a7 vme_master_get +EXPORT_SYMBOL drivers/vme/vme 0x50140a71 vme_register_bridge +EXPORT_SYMBOL drivers/vme/vme 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL drivers/vme/vme 0x5aff4177 vme_lm_get +EXPORT_SYMBOL drivers/vme/vme 0x7cf35220 vme_master_free +EXPORT_SYMBOL drivers/vme/vme 0x7d15e244 vme_dma_list_add +EXPORT_SYMBOL drivers/vme/vme 0x7fde2edb vme_master_read +EXPORT_SYMBOL drivers/vme/vme 0x90695906 vme_free_consistent +EXPORT_SYMBOL drivers/vme/vme 0x90adb6d3 vme_dma_list_free +EXPORT_SYMBOL drivers/vme/vme 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL drivers/vme/vme 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL drivers/vme/vme 0x9bbf55a4 vme_slot_get +EXPORT_SYMBOL drivers/vme/vme 0xa31bdf07 vme_master_set +EXPORT_SYMBOL drivers/vme/vme 0xb23e3e08 vme_dma_list_exec +EXPORT_SYMBOL drivers/vme/vme 0xb49df8c8 vme_master_request +EXPORT_SYMBOL drivers/vme/vme 0xc409dcb2 vme_irq_generate +EXPORT_SYMBOL drivers/vme/vme 0xd3aad6d1 vme_unregister_driver +EXPORT_SYMBOL drivers/vme/vme 0xd797b9a5 vme_master_write +EXPORT_SYMBOL drivers/vme/vme 0xdff905e5 vme_slave_free +EXPORT_SYMBOL drivers/vme/vme 0xe693a6ce vme_get_size +EXPORT_SYMBOL drivers/vme/vme 0xecc5d9c7 vme_irq_free +EXPORT_SYMBOL drivers/vme/vme 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL drivers/vme/vme 0xf118f83f vme_irq_request +EXPORT_SYMBOL drivers/vme/vme 0xf35d4d26 vme_unregister_bridge +EXPORT_SYMBOL drivers/vme/vme 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL drivers/vme/vme 0xf90b8f0d vme_bus_type +EXPORT_SYMBOL drivers/vme/vme 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL drivers/vme/vme 0xfc950f87 vme_dma_request +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x02acca08 w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x32358016 w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x36376394 w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x524ed81e w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x5872c0e5 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x880ca077 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x71102234 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xa1edf7b3 w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/wire 0x3935f4ec w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0x3be029f4 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0x8054721a w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0xc134b625 w1_register_family +EXPORT_SYMBOL fs/btrfs/btrfs 0x27476846 ulist_reinit +EXPORT_SYMBOL fs/btrfs/btrfs 0x41e6a9d2 ulist_init +EXPORT_SYMBOL fs/btrfs/btrfs 0x7e2ee765 ulist_free +EXPORT_SYMBOL fs/btrfs/btrfs 0xa2eec2e8 ulist_fini +EXPORT_SYMBOL fs/btrfs/btrfs 0xb1320bc8 ulist_add +EXPORT_SYMBOL fs/btrfs/btrfs 0xb42289d2 ulist_alloc +EXPORT_SYMBOL fs/btrfs/btrfs 0xc2c745db ulist_next +EXPORT_SYMBOL fs/configfs/configfs 0x42ec315b config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0x6c08ead3 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x8a95d463 config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0x9b855248 configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x9c71b7d3 configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0xa2404ae0 configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xa5cc5c91 config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xae8af9f6 config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0xd0e3107d config_item_init +EXPORT_SYMBOL fs/configfs/configfs 0xd2a4b019 config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0xd355e6af config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xe9ce7c64 configfs_undepend_item +EXPORT_SYMBOL fs/exofs/libore 0x11804d12 ore_write +EXPORT_SYMBOL fs/exofs/libore 0x12e7780a ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0x15f27093 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 0x900d2601 ore_create +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xb116dfce ore_read +EXPORT_SYMBOL fs/exofs/libore 0xba62d3bf ore_remove +EXPORT_SYMBOL fs/exofs/libore 0xde88f36c extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0xe507ff64 ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0xf85f5d73 ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0xf8916395 ore_check_io +EXPORT_SYMBOL fs/fscache/fscache 0x0fdd36bc __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x1d5deb24 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x21a8d971 __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x2d20e9e7 fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0x312ed012 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x35381092 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x356e19e7 __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0x438d0256 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x43f12e5c __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x445e1c5c fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0x44ec7fe9 __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x466a0428 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x46fa4690 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x4a9110aa __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x50398648 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x5dbb0927 __fscache_wait_on_invalidate +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 0x883e2920 __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x8b1a830e fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x8dcbf1c8 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0x8ea90bd1 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x9894d146 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x9a3b3568 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x9f3c980e fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0xa3ab6d40 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0xb363647c __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0xb71b39d8 __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0xb7dc7587 fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0xbcbd05d2 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0xc23c1ef5 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xc501019d fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0xc87b315d __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0xd250c3c5 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0xdd0bc8b7 fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0xec7dacbb fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0xef61c073 __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xf34e8ef3 __fscache_register_netfs +EXPORT_SYMBOL fs/nfsd/nfsd 0x35e33c1e nfs4_acl_write_who +EXPORT_SYMBOL fs/nfsd/nfsd 0x5a157ae4 nfs4_acl_get_whotype +EXPORT_SYMBOL fs/nfsd/nfsd 0xa0f4b528 nfs4_acl_posix_to_nfsv4 +EXPORT_SYMBOL fs/nfsd/nfsd 0xb25b2957 nfs4_acl_nfsv4_to_posix +EXPORT_SYMBOL fs/nfsd/nfsd 0xe13337f0 nfs4_acl_new +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x5c6f9f7a qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xb0639cd4 qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0xbd64fbf7 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xc7508b52 qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xf75ef7da 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 0xa7587646 crc7 +EXPORT_SYMBOL lib/crc7 0xd80c3603 crc7_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 0x039735b7 lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0x0c9ff2c3 lc_find +EXPORT_SYMBOL lib/lru_cache 0x0d2dc6b3 lc_reset +EXPORT_SYMBOL lib/lru_cache 0x2bca6ccb lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x34be4533 lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x3691748f lc_set +EXPORT_SYMBOL lib/lru_cache 0x43e46a2d lc_committed +EXPORT_SYMBOL lib/lru_cache 0x452c8b46 lc_del +EXPORT_SYMBOL lib/lru_cache 0x60fd5d64 lc_is_used +EXPORT_SYMBOL lib/lru_cache 0x75a91db9 lc_destroy +EXPORT_SYMBOL lib/lru_cache 0x8af6181d lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0xa2873827 lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0xb74693bf lc_try_get +EXPORT_SYMBOL lib/lru_cache 0xbb6d3769 lc_create +EXPORT_SYMBOL lib/lru_cache 0xbd032277 lc_put +EXPORT_SYMBOL lib/lru_cache 0xef129f5b lc_get +EXPORT_SYMBOL lib/lru_cache 0xf9b6ff79 lc_get_cumulative +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/802/p8022 0xc025ac1c unregister_8022_client +EXPORT_SYMBOL net/802/p8022 0xcf2fed33 register_8022_client +EXPORT_SYMBOL net/802/p8023 0xae9b3235 make_8023_client +EXPORT_SYMBOL net/802/p8023 0xb0451aaf destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0x222b698d unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0x36f40649 register_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x0c6b9250 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x11d0c4d2 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x18caeff9 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x1a37c7e9 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x1e474db5 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x298087fb p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x37ce6d37 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x3f0f6cd0 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x3f9ce32f p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x458687ce v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x5240103c p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x55ebc19f p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x564a801d p9_payload_gup +EXPORT_SYMBOL net/9p/9pnet 0x59a82099 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x62e699d9 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x63957ad5 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x65f2d024 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x70f1f51f v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x71cdd204 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x73e06f35 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x7456b89d p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x7495489f p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x754647a0 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x7ae33790 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x84873814 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x87675956 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x9471b9e6 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x977a0030 p9_nr_pages +EXPORT_SYMBOL net/9p/9pnet 0x98b39eb3 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x9bf5ddce p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0xa2b3d237 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xa2e2c489 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0xb003efbf p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xb292ef8c p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0xba1607a7 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0xbaf061c6 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0xc1b74143 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xcece4454 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0xd0203d30 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0xdb349148 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0xdc729e26 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0xe06b8dc3 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xf0c50cac p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0xf23b02c9 p9_client_statfs +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 0x417d44d0 atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0x76baaa1e atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0xa8b943f2 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0xacc5716d aarp_send_ddp +EXPORT_SYMBOL net/atm/atm 0x20010ed4 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x280538a4 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x435cba24 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x4cb2a52a atm_charge +EXPORT_SYMBOL net/atm/atm 0x5194a7f5 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x785f3c19 atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x8f1e5a57 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xa365a6f3 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xb3d0245e atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0xca87b453 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xcd00303e vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0xd097079e atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0xdfd82a21 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0xeb20a84c register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/ax25/ax25 0x00f3c316 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x026c1368 ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0x04f3e475 ax25_rebuild_header +EXPORT_SYMBOL net/ax25/ax25 0x0d80ede0 ax25_hard_header +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x3afee63e ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x3b07dcd5 ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x3d1ae8a6 ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0x411dafe4 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x4f583e4f ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x7ddad2b9 ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xcc1de21e ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/bluetooth/bluetooth 0x02c2c507 hci_recv_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x06537f46 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0c6cd7a9 bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x12f92125 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x157ec8e0 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1abb41e5 __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1e685867 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x30940dfd bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x364d1e2f bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x37453aec hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3e06ff98 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3f8eb0b8 l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x46a49cf3 l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4c6806c4 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x50d7acda bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x63742e39 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6788c998 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x67b0fea6 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7224ef16 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x767a7711 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7c640527 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7c79e2e1 hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x822ce87b hci_recv_stream_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9127e343 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa699cf8d hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa8eddf3d bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa9524c61 __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb61a0c3b bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb9bf0fac bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbbd1114a hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc5f7ad3c l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd4504c19 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd4f5d6db hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd597c6a6 l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0xde0bd7df bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe09e7b24 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe3c6ae7f bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe700a823 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfb105681 hci_conn_security +EXPORT_SYMBOL net/bridge/bridge 0xf41052b3 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x65ccf527 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x747877a4 ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x8aebc9a5 ebt_do_table +EXPORT_SYMBOL net/caif/caif 0x0fa96889 caif_disconnect_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 0x3b23999d cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0x40167ef8 get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x6473d63c caif_connect_client +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xbd2b4bfc caif_enroll_dev +EXPORT_SYMBOL net/can/can 0x484ce262 can_proto_unregister +EXPORT_SYMBOL net/can/can 0x8465de91 can_ioctl +EXPORT_SYMBOL net/can/can 0x859bdcdf can_send +EXPORT_SYMBOL net/can/can 0x9b9e536c can_rx_register +EXPORT_SYMBOL net/can/can 0xcdbceae2 can_proto_register +EXPORT_SYMBOL net/can/can 0xd7be0f8a can_rx_unregister +EXPORT_SYMBOL net/ceph/libceph 0x064f37d7 ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x06676776 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x086d5cc1 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0e342ea2 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x0ebcec73 osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x0f308f66 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x1030bb51 osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x10940306 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0x1377d0bc ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0x1475bf0d ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x169b7ea5 osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0x197effcb ceph_osdc_release_request +EXPORT_SYMBOL net/ceph/libceph 0x1eef9c6d ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x1ef909c5 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x1fd47035 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x2797ae7a ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x27fc8492 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0x30d779cb ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x3158173e ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x335c79e4 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3df0ec7c ceph_calc_ceph_pg +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x4205ffd7 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x43c8d341 ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x43efd647 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x46a1edce __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x5754d0df ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x57c66a93 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0x5d9ccc8a ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x5df1ce02 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x5fe4b2fa ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0x603e4178 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x689ca91a ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6c17485a ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x6c5d5ac1 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x6c6b0625 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x6d2d06a1 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0x6ed41be2 ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0x6f39775d osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x72aba3f9 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x77692acb ceph_msg_last_put +EXPORT_SYMBOL net/ceph/libceph 0x808b169e ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x8177e592 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0x83d80dae osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0x92f49b40 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0x95870595 osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x9699a8b9 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x99de4738 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9d1e6ee1 ceph_copy_page_vector_to_user +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa3d647fa osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xa40bd703 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0xa7e4e86c ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0xa7e6b6e9 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0xab3928db ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb324795a ceph_copy_user_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 0xb60bb614 ceph_monc_create_snapid +EXPORT_SYMBOL net/ceph/libceph 0xb6722057 osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xb6c01735 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0xb77455a4 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xb961d076 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0xbc12ff6c ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0xc00324d2 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xc11bebc9 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0xc3729952 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc55de604 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xc90e9112 ceph_osdc_unregister_linger_request +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xccc4d271 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0xcda06c87 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0xcf382881 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0xd1aa5097 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd5441e31 ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0xd6b8ad6d ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0xd8361e10 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0xd914324a ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xe3535514 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0xe3f13681 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0xe64ab045 osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xe66a9c11 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0xe82c9c32 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0xeb3c0fb7 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0xed26a654 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xedf06910 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0xef8524a4 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0xf3bd6a8c osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0xff7533c5 ceph_auth_update_authorizer +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x719c1bbe dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/ieee802154 0x1d04f28d ieee802154_nl_beacon_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x371409f0 ieee802154_nl_assoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x58219e2e ieee802154_nl_disassoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x707acad3 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x7edca6a6 ieee802154_nl_start_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x98e646e0 ieee802154_nl_assoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xaaeedcf2 wpan_phy_alloc +EXPORT_SYMBOL net/ieee802154/ieee802154 0xca580fef wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0xcfcf2814 ieee802154_nl_disassoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xd198d083 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0xe1709d77 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0xeb0f9145 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0xf9fa9ca0 ieee802154_nl_scan_confirm +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x0b9e6d50 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xd1329cec arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xf547dd34 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x1a439f49 ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x1db8b651 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x6797f6f6 ipt_register_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x761cbd44 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/tunnel4 0xa7c34c5d xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x901c7dc2 ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xe5ce8efb ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x27a3d275 ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x535a2669 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xef50e874 ip6t_register_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x21ccabec xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0x6ef3f65f xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x7bb9ba21 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xe36abe21 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x05564cd1 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x201dc3ae ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x22fae6b1 ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x29ea98f8 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x60ec1430 ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x640285ec ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x6a2602ee ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x6ec4aec1 ircomm_open +EXPORT_SYMBOL net/irda/irda 0x0064e0ea hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0x03080bba 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 0x082f79fa iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0x1e6cade0 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x2036ad06 irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x20d8b023 iriap_open +EXPORT_SYMBOL net/irda/irda 0x2663326c irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x27b066b8 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x30ff6035 irlap_close +EXPORT_SYMBOL net/irda/irda 0x330dc000 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x3e56064f hashbin_new +EXPORT_SYMBOL net/irda/irda 0x413a8922 irttp_close_tsap +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 0x49678fb7 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x5aaee893 iriap_close +EXPORT_SYMBOL net/irda/irda 0x601bda46 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x69a486cd 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 0x75a2412f irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x761c1889 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 0x7c27d112 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x7cc0146a irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x85d88217 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x9046b006 irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x993ad14b irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0xa1d41e58 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0xa5b27f2b irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0xa705dfe1 irlap_open +EXPORT_SYMBOL net/irda/irda 0xaa557515 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xb6428afc 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 0xc68e43be irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0xc83e3b1d async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0xcead7dbb hashbin_find +EXPORT_SYMBOL net/irda/irda 0xd2108314 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0xd39b8301 irttp_dup +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 0xeba6c4d7 irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0xec9a4634 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xf0a694a1 irias_find_object +EXPORT_SYMBOL net/irda/irda 0xf34bacdf irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0xf3ebb6dd irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0xf5876b95 hashbin_remove_this +EXPORT_SYMBOL net/l2tp/l2tp_core 0x9d93b60a l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x0a2138ec lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x29a0f4d7 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x4013cc4f lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x61b1bd1a lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x72e7c760 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x7bf85742 lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0xb9b9e890 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0xe0a3ce64 lapb_register +EXPORT_SYMBOL net/llc/llc 0x1b7a9205 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 0x8835c4ec llc_sap_close +EXPORT_SYMBOL net/llc/llc 0xbaf000b5 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0xc35e28f7 llc_sap_list_lock +EXPORT_SYMBOL net/llc/llc 0xc748a656 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0xc9372b81 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0xd7d40b94 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0xea8973c5 llc_mac_hdr_init +EXPORT_SYMBOL net/mac80211/mac80211 0x0027db1e __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x009376f2 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x01d981da ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x0463a74c ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x09d05370 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x1a11bf00 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x1fbe22e0 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x20b6fa1c ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x21a2ae71 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x2278fef7 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x24ea9f25 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x2667b110 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x2675d48a ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x35c34592 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x371c50dc ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x3ad99ff2 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x3b04705d ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x43e5ae6d ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x46fb97c2 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x48d9b8b6 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x545951cd ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x546a3728 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x57395ac9 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x58c8c7ce ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x5c28cca5 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x5ddadca3 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x5e165de9 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x5e82380d ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x60c837bc ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x65a21cb0 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0x689eb63f ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x6f4abeca ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x77c94ba8 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x78d50981 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x78fd754d ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x7951ab9b ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x862373fa ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x9033761e wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x91171c58 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x9285c1b7 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x929673d7 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x96bfdb22 ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0x98134a9c ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x9c536d4f ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x9c5e6334 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0x9c863d06 ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x9e0af6cf ieee80211_alloc_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xa1fc36c4 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xa55f8a7c ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xa900fed1 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0xaa157485 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0xbe65af1d ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xbea139d8 ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0xc0844f4c ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xc7e9782e ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xc7fa5000 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xc9faef9b ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0xcaa12ae8 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0xcccafe99 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xcda02b0a ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xcf202ee0 ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xd37af6ed ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0xd3ae1287 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xd5a600d1 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0xddb47d52 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xdea26f3d ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0xe0cba728 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xf2093777 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0xf38fc8f0 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xf395de03 ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0xf4721c6f rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0xf90428f1 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0xf96ae81a __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac802154/mac802154 0x017aa771 ieee802154_unregister_device +EXPORT_SYMBOL net/mac802154/mac802154 0x593be480 ieee802154_register_device +EXPORT_SYMBOL net/mac802154/mac802154 0x746bdf76 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0x9c5471a9 ieee802154_alloc_device +EXPORT_SYMBOL net/mac802154/mac802154 0xb58bc93e ieee802154_free_device +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0629ff4b ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x1daeb43e ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x5bfc108e ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x6b01f1be register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x7e9eb216 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x814a3d21 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x8fe18956 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x99c52502 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xba527881 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc11547e0 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc1ae7d2d ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xce61e5ae ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xcf9bc14f ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd182dfcf register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x9f054920 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xebe81931 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xfda7cfbb __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_conntrack_proto_gre 0xc75ef347 nf_ct_gre_keymap_flush +EXPORT_SYMBOL net/netfilter/nf_nat 0x23d05468 nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0x260183a4 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0x35ac845f nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0x35e289b2 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x620f12b4 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0xd63e4944 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/x_tables 0x08c473b7 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x15abba4b xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x60422421 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x62af98a1 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x8ba58aed xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x9461f83e xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x9bfed227 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0xafca6196 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0xb28f5ef1 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xbab14624 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0xcd19d15a xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0xd87ae60d xt_check_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0xfff13239 xt_unregister_matches +EXPORT_SYMBOL net/nfc/hci/hci 0x1edcb948 nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0x2b8aad13 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x2db3e0a4 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x33793af3 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x3e9b0ba4 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x41066349 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x657ea003 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x77f108ef nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x7c4e6ad5 nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0x875a0f52 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x93c3c0ca nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0x964b652f nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xae18fd10 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0xaf91d3a7 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xc1438c35 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0xc86d7db3 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xcc000b40 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0xe1cd470c nfc_hci_send_response +EXPORT_SYMBOL net/nfc/nci/nci 0x5b725bfe nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x5d4f9e47 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0xafaf59c2 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xbb32c33a nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0xdb24a115 nci_free_device +EXPORT_SYMBOL net/nfc/nfc 0x0aaf8419 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x0f06d4ca nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0x2864e841 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x446c68e0 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x453ee129 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x4898ffd1 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x4dd66e55 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x512216ad nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x599d43a9 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0x5d53a05b nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x60734769 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x7b82d38e nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x7d426e0f nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xa1fe36e4 nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0xab4518d4 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0xc1aebc5e nfc_class +EXPORT_SYMBOL net/nfc/nfc 0xdf464320 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0xf7688276 nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0xf8a65176 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0xfa4d1665 nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc_digital 0x7042706b nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x8c5c9a1a nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xc5bba18f nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xe48820cc nfc_digital_register_device +EXPORT_SYMBOL net/phonet/phonet 0x37bab1cf phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x631da055 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x6595effa pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0x83fa3502 pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x9bd2a10d phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0x9c0d7da6 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0x9f51083f phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0xb13ff1e5 pn_sock_unhash +EXPORT_SYMBOL net/rds/rds 0x5031b8c5 rds_str_array +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x0539ae8b rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x079acb79 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x0d6ad136 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x110426e5 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x205a3cc8 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x2da4220b rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x409f8678 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x667e98d4 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x70514ee5 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x7f633135 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x82321e0d rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x8f2040c6 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x928a4588 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x99ff704f rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf8e7935b rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/sctp/sctp 0x3f9ba00e sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x2380c795 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x70f29e8f gss_mech_get +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x78207c08 gss_mech_put +EXPORT_SYMBOL net/sunrpc/sunrpc 0x54033fa3 svc_pool_stats_open +EXPORT_SYMBOL net/wimax/wimax 0x3e5c78f8 wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0xea5b0e38 wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x03549613 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0x0985b7eb cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0cbe04b3 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x19ae96a5 cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x234a3634 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x25f62f5d cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x30033072 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x30aa1b62 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x35cbd4a1 cfg80211_del_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x37b6d4df cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x393aff51 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x3f880c9f ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x406a8302 cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x40892263 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x46d1b4a2 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x48743c6b cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x4962632e __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x4a1d8799 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x4bff9e19 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x4c3b5878 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x4c40b2fb ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x549ae50f ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x5504bea2 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x5dc20380 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x6026a8d8 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6c7e49e6 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x78762739 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x7b7ac78b cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0x7cec173d cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x7ec60b9e cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x820c3adc cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x90866a09 cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x911981cf cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x9854d447 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x987462bf wiphy_new +EXPORT_SYMBOL net/wireless/cfg80211 0x9c68ef88 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x9d3abaa4 cfg80211_report_wowlan_wakeup +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 0xa274988f cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xa597f972 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0xa8b3d24b cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xa9b95a92 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xaabffc31 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xadeb5d82 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0xafdb6301 cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0xb21cd061 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xb30e8384 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xb33a0220 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0xb3b81282 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xb9e3b286 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0xbb4f3ced cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0xc15c8611 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xc44f1ea4 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc7cd221a cfg80211_inform_bss_width +EXPORT_SYMBOL net/wireless/cfg80211 0xcf618a57 cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0xd3c7c137 cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xd53dd5b0 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0xd7808963 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xdba6a0d4 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0xdfdd71b4 cfg80211_inform_bss_width_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xe311a6a1 cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0xe38b4958 cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xe41545cb cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xe5dd1b08 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xecc6a86b cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0xed9daa9a cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xee42db3c cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0xee4b5fd1 cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0xf0a7d46b cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0xf1a857ff ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xf4ede9bd wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0xf9c09900 cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0xfa127e26 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0xfde6e963 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x0c198af7 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0x11e5cfb9 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0x2d0f99e5 print_ssid +EXPORT_SYMBOL net/wireless/lib80211 0x529a59e9 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0x934d6119 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xa9c5e8d7 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xc3c662cb lib80211_unregister_crypto_ops +EXPORT_SYMBOL sound/ac97_bus 0x6c311339 ac97_bus_type +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 0x3c4beff1 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 0x6c1f1cf8 snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7ac2f329 snd_seq_expand_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7b8699eb snd_seq_event_port_detach +EXPORT_SYMBOL sound/core/seq/snd-seq 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 0xd54124a1 snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0xd63e4dc7 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 0x1085bc5e snd_seq_device_register_driver +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x3a57f235 snd_seq_autoload_unlock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xad409d38 snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xb90668b2 snd_seq_autoload_lock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xc622fb29 snd_seq_device_unregister_driver +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 0xab9e06ba snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x04161b96 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0x0cf7dc19 snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0x0d4eae6a snd_info_register +EXPORT_SYMBOL sound/core/snd 0x15cc6e40 snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0x18da7000 snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0x18e1683f snd_dma_program +EXPORT_SYMBOL sound/core/snd 0x191e88cf snd_dma_pointer +EXPORT_SYMBOL sound/core/snd 0x1d3d6216 snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x25a5610e snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x276ec133 snd_card_free +EXPORT_SYMBOL sound/core/snd 0x2ae3deaa release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0x2e5ad4c9 snd_cards +EXPORT_SYMBOL sound/core/snd 0x2e5be22c snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x31219dba snd_seq_root +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x3b94c2a3 snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x41d80bde snd_device_register +EXPORT_SYMBOL sound/core/snd 0x4207c5df snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4b015768 snd_iprintf +EXPORT_SYMBOL sound/core/snd 0x4ca8a723 snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0x4d81186c snd_card_proc_new +EXPORT_SYMBOL sound/core/snd 0x5df9f2c5 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x602c96f0 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x61a87e36 snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0x628298b4 snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x694757d1 snd_power_wait +EXPORT_SYMBOL sound/core/snd 0x702233d9 snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x73f7b7e9 snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x94f67558 snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0x97bec7ab snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0x9f896f7d snd_register_device_for_dev +EXPORT_SYMBOL sound/core/snd 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0xaab998f3 snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0xae4d1974 snd_jack_report +EXPORT_SYMBOL sound/core/snd 0xb08bcaf7 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xb5e6153f snd_card_unref +EXPORT_SYMBOL sound/core/snd 0xb79a8b3c snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0xc6356f4a snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0xcb4d4fb8 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0xcb51bcd6 snd_component_add +EXPORT_SYMBOL sound/core/snd 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL sound/core/snd 0xcf71fdd0 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0xd437196d snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0xd46582cb snd_card_create +EXPORT_SYMBOL sound/core/snd 0xd60fb252 snd_jack_new +EXPORT_SYMBOL sound/core/snd 0xd64693a5 snd_device_free +EXPORT_SYMBOL sound/core/snd 0xd72cb040 snd_device_new +EXPORT_SYMBOL sound/core/snd 0xd9809055 snd_card_register +EXPORT_SYMBOL sound/core/snd 0xde8c5f30 snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0xe384a503 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0xefc2fa27 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0xf691618c snd_add_device_sysfs_file +EXPORT_SYMBOL sound/core/snd 0xf7d78b36 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd-hwdep 0xde0457b3 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-page-alloc 0x07a6db8c snd_dma_reserve_buf +EXPORT_SYMBOL sound/core/snd-page-alloc 0x307c8689 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-page-alloc 0x3b91f3af snd_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x66724481 snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x78ecf44b snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0xade88e76 snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0xeb2fc3c7 snd_dma_get_reserved_buf +EXPORT_SYMBOL sound/core/snd-pcm 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL sound/core/snd-pcm 0x039a3d23 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0x04cda566 snd_interval_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x196442be snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x2253021e snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0x2d8742eb snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x318e87c7 snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0x32c73e33 snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0x3653fc2d snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x3807ea73 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL sound/core/snd-pcm 0x3b43370e snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0x485256ee snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0x49a96266 snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0x4b06a005 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0x4b8616d1 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0x4d9b6d35 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x4db3b39f snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x5062bc1e snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x57cb4fbd snd_pcm_hw_refine +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 0x66e3109d snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x689bab1d snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x6aee5a00 snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0x6decd830 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0x6e945f92 snd_pcm_debug_name +EXPORT_SYMBOL sound/core/snd-pcm 0x6eacd073 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x7033548d _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x7bb00572 snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x825a9d1e snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0x894af2d9 snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x9224b677 snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x971388d7 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x989c7270 snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0xa14f0858 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xb83f7c05 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xbab68fbe snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0xbb1fa9bb snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0xbf31b562 snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0xd0877d72 snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xd1f498ac snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0xd5fb21a2 snd_pcm_link_rwlock +EXPORT_SYMBOL sound/core/snd-pcm 0xdd8a5924 snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xde1522bd snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0xe17e0309 snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xe5eef2a2 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0xf10848b6 snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xfc4f1b44 snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0xfcf0fc42 snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0e5fb5dd snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0e8c6751 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x14e2e1da snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x1fef978e snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x454521f6 __snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x52dcd70e snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5aeb5e89 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x78c7eb2a snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0x844f979c snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x9af9a5ed snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x9fadca59 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc4cf7e45 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc82477c6 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd00f6519 __snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd0284927 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe7ddf5f7 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf3c27c1d snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf4d52c54 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0xfa463e19 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-timer 0x012f3ac6 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0x096907cd snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0x156d8fb8 snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0x2ce99655 snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0x34e8a605 snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0x4e8f4d28 snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0x5a832310 snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0x6f016b65 snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0x8c3b9b81 snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0x8d27231c snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0x9ce5ffeb snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0xa4a3ef5b snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0xb0b35589 snd_timer_notify +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xb59f14b3 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 0x053fbad5 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x1d44dc2a snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x3f576afb snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x9a2f5172 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x9bc3c9ce snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xbb709172 snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xe0b868d3 snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xeef156be snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xf06a6650 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x00f1dac7 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x037d6150 snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x21fd9cdc snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x31d92882 snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x621be7ec snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x801f2074 snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x8875fb98 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xd8f0dc07 snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xe675a2f0 snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x05b8b67d fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1909a58b amdtp_out_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x21ada78d amdtp_out_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2fddde81 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x37f7d644 amdtp_out_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x535c35c0 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x62b90c4e amdtp_out_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x637f27cc cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6803aba5 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6a2be584 fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x710299c3 cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x762e85a1 amdtp_out_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7ecc3a73 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8d0370cc amdtp_out_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x952d3335 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9e012d61 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa43638c5 amdtp_out_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb92cab5c amdtp_out_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbfc0c607 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc3d73e3b amdtp_out_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xcc1db6f9 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe4f7956c fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe5ab0496 amdtp_out_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe5b4a8d9 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xef3968b3 amdtp_out_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf880afdd cmp_connection_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x0191c7d5 snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x02d304d9 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xac466980 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xb32a45b2 snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xd0c29634 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xe50b7326 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x54445395 snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x8a23477e snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x8aac8488 snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xae3a8753 snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xb3b7b93f snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xfe283027 snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x09e3c4fc snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x45f30aab snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x84c8b94e snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xd0aff7fb snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x3fb28335 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xeb7dd280 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x4b2ee973 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x6ef3e15d snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x87dfd18d snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xb90a7191 snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xdf220bda snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-i2c 0x103859e4 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x378122ab snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0xb3c42494 snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xbe84bc27 snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xc6c6f812 snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xdcff8381 snd_i2c_device_free +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x207948b2 snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x2830273f snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x2c9230d8 snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x37c65ba9 snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x3a1e2ba7 snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x52c5c9be snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x95ca63c8 snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xc48e334b snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xd4507fd5 snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xee57ec16 snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x493c637a snd_sb16dsp_pcm +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x7a84e454 snd_sb16dsp_configure +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xe0b3f690 snd_sb16dsp_interrupt +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xf2da3912 snd_sb16dsp_get_pcm_ops +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0a54829e snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3745c100 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x41675a88 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x49d24d4f snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x8315a00a snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x852e4d27 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x877b79e3 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x8cd584a4 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9482e98f snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x94d10997 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xade0557a snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xbf1d77df snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc8a32134 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xd7e44038 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xde9a1a89 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe76155e1 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xfb0d26b9 snd_ac97_bus +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x044807c0 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x301aef2e snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x631eecab snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x6e3bf7a8 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x7d1b9e38 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x969e8b26 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xafbf3099 snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xb1baaa41 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xe1f317cb snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x290def43 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x3adc6168 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xab777638 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x10c859ca oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x10d7d132 oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1776e560 oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1bb688ee oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1cd28939 oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2a207916 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2c800e42 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x3630c6d0 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x68a7119a oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x6c0def60 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x98920782 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x9a455d61 oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb97ed63a oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xbba5e192 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xbf999a9e oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xcdb2d7cb oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe2b3c6ac oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf0afcad7 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xfc251e0d oxygen_write_i2c +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x4857229a snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x667c6717 snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x6682f4cd snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x84f3d3e4 snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xbdbcd5b0 snd_trident_alloc_voice +EXPORT_SYMBOL sound/soundcore 0x9a64c0f6 sound_class +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x19f8cff1 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 0x823496d2 snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x991bf2f3 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xb80627d6 snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xd5201848 snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xd7bbdecf snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/snd-util-mem 0x1988bd28 snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0x26a61420 __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x6739d899 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x6753c04f snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x6da05748 snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x8cd3e5fb snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x911ca897 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xcb7f61e6 __snd_util_memblk_new +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x2f45595c snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x63343b1d snd_usbmidi_input_stop +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL vmlinux 0x00000000 __symbol_put +EXPORT_SYMBOL vmlinux 0x00000000 current_fs_time +EXPORT_SYMBOL vmlinux 0x00000000 d_tmpfile +EXPORT_SYMBOL vmlinux 0x00000000 do_sync_read +EXPORT_SYMBOL vmlinux 0x00000000 filp_close +EXPORT_SYMBOL vmlinux 0x00000000 finish_open +EXPORT_SYMBOL vmlinux 0x00000000 generic_getxattr +EXPORT_SYMBOL vmlinux 0x00000000 generic_write_sync +EXPORT_SYMBOL vmlinux 0x00000000 get_unmapped_area +EXPORT_SYMBOL vmlinux 0x00000000 in_group_p +EXPORT_SYMBOL vmlinux 0x00000000 inode_add_bytes +EXPORT_SYMBOL vmlinux 0x00000000 iov_shorten +EXPORT_SYMBOL vmlinux 0x00000000 iterate_fd +EXPORT_SYMBOL vmlinux 0x00000000 ns_capable +EXPORT_SYMBOL vmlinux 0x00000000 path_is_under +EXPORT_SYMBOL vmlinux 0x00000000 register_exec_domain +EXPORT_SYMBOL vmlinux 0x00000000 schedule_timeout +EXPORT_SYMBOL vmlinux 0x00000000 sock_register +EXPORT_SYMBOL vmlinux 0x00000000 sys_close +EXPORT_SYMBOL vmlinux 0x00000000 task_nice +EXPORT_SYMBOL vmlinux 0x00000000 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x00000000 vm_brk +EXPORT_SYMBOL vmlinux 0x00077f59 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x000a35ff __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x000bab24 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x0011b882 aio_complete +EXPORT_SYMBOL vmlinux 0x002203ff qman_volatile_dequeue +EXPORT_SYMBOL vmlinux 0x0030751f filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x003996a5 simple_link +EXPORT_SYMBOL vmlinux 0x0042a781 simple_empty +EXPORT_SYMBOL vmlinux 0x00446b6b __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x004f58b7 tty_port_close +EXPORT_SYMBOL vmlinux 0x00512125 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x0055bbe7 pci_disable_ido +EXPORT_SYMBOL vmlinux 0x0056523c nf_getsockopt +EXPORT_SYMBOL vmlinux 0x0076749d twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x00801678 flush_scheduled_work +EXPORT_SYMBOL vmlinux 0x0089692f dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x00975109 pme_ctx_is_dead +EXPORT_SYMBOL vmlinux 0x00a52dbe sync_inode +EXPORT_SYMBOL vmlinux 0x00ce79fd kill_anon_super +EXPORT_SYMBOL vmlinux 0x00cf4a7f of_get_parent +EXPORT_SYMBOL vmlinux 0x00e8097b csum_partial_copy_fromiovecend +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x010c026c mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x010e9205 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x011abb62 d_make_root +EXPORT_SYMBOL vmlinux 0x0170240c dm_get_mapinfo +EXPORT_SYMBOL vmlinux 0x017568ee generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x018169e7 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x01902adf netpoll_trap +EXPORT_SYMBOL vmlinux 0x0195ff2a contig_page_data +EXPORT_SYMBOL vmlinux 0x019e7765 __init_rwsem +EXPORT_SYMBOL vmlinux 0x01bdddaa gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0x01c3dc55 __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x01c57961 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x01c8e84d ida_simple_get +EXPORT_SYMBOL vmlinux 0x01dce368 inet_release +EXPORT_SYMBOL vmlinux 0x01dd4b66 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x01f833fc vfs_write +EXPORT_SYMBOL vmlinux 0x02057dd2 tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0x020b75c4 d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0x025a3546 lock_may_write +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x0277f9d4 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x0281c777 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x0284367f i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a496aa scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02b3f081 skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x02ba154f jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x02be4426 write_inode_now +EXPORT_SYMBOL vmlinux 0x02daf773 dma_set_mask +EXPORT_SYMBOL vmlinux 0x02ee26c1 free_pages_exact +EXPORT_SYMBOL vmlinux 0x0309ef9c tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x030c1da6 cap_mmap_file +EXPORT_SYMBOL vmlinux 0x03149455 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x0325b2f8 pci_enable_msi_block_auto +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x035f91e5 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x0368db65 register_key_type +EXPORT_SYMBOL vmlinux 0x036aab16 pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0x036ef192 __nla_reserve +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x037ac217 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x037d9051 tcp_disconnect +EXPORT_SYMBOL vmlinux 0x03803e25 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x03c06156 bitmap_fold +EXPORT_SYMBOL vmlinux 0x03c25531 inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x04074f48 ioremap +EXPORT_SYMBOL vmlinux 0x0408aa64 replace_mount_options +EXPORT_SYMBOL vmlinux 0x041d8047 blk_get_queue +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x043294e8 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x0443c2c8 iterate_dir +EXPORT_SYMBOL vmlinux 0x044668e0 sk_run_filter +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x0449bd98 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x045fe3d7 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x04be183f lookup_bdev +EXPORT_SYMBOL vmlinux 0x04cdf3bf cfb_copyarea +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04f4d4a7 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x04fe4bc3 __inet6_hash +EXPORT_SYMBOL vmlinux 0x05110696 udp_ioctl +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x05269f78 unregister_exec_domain +EXPORT_SYMBOL vmlinux 0x0530dede _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x0533b15d __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x054434d6 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x055f4a23 irq_set_chip +EXPORT_SYMBOL vmlinux 0x057b9276 inet_frag_kill +EXPORT_SYMBOL vmlinux 0x057ce975 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0x057fd236 __nla_put +EXPORT_SYMBOL vmlinux 0x0593a99b init_timer_key +EXPORT_SYMBOL vmlinux 0x05a514a1 _insl_ns +EXPORT_SYMBOL vmlinux 0x05c26263 skb_orphan_partial +EXPORT_SYMBOL vmlinux 0x05c7c35e qman_get_null_cb +EXPORT_SYMBOL vmlinux 0x05dc7fe0 sock_wfree +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x062525b6 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0x0633aed2 try_module_get +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x06425ddd xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x0645932f textsearch_register +EXPORT_SYMBOL vmlinux 0x06489d52 bman_rcr_is_empty +EXPORT_SYMBOL vmlinux 0x064fb2c3 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x065cadb7 mem_cgroup_subsys +EXPORT_SYMBOL vmlinux 0x0675c7eb atomic64_cmpxchg +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x0689f971 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x068cfc9a blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0x06945a3d pci_assign_resource +EXPORT_SYMBOL vmlinux 0x06bbb24a mempool_resize +EXPORT_SYMBOL vmlinux 0x06bec42c sk_dst_check +EXPORT_SYMBOL vmlinux 0x06d05719 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x06ff14f0 dev_change_carrier +EXPORT_SYMBOL vmlinux 0x07068d89 drop_nlink +EXPORT_SYMBOL vmlinux 0x070f6368 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0x07147be2 udp_disconnect +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x074257ef phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x0742742c sock_alloc_file +EXPORT_SYMBOL vmlinux 0x074e9213 down_killable +EXPORT_SYMBOL vmlinux 0x0754f7fb input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x076c0d61 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x0771805a skb_trim +EXPORT_SYMBOL vmlinux 0x077265ef __serio_register_driver +EXPORT_SYMBOL vmlinux 0x07954817 dev_uc_del +EXPORT_SYMBOL vmlinux 0x0799aca4 local_bh_enable +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07b4e4d7 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x07c4b8d2 scsi_print_command +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07d5c2f6 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x07f2ce8f devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0x0810fbfc __inode_permission +EXPORT_SYMBOL vmlinux 0x081d573b xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x08264ddd sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083c2cbe of_get_next_parent +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x08698cb4 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x086d9299 agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0x08b5a151 ip_check_defrag +EXPORT_SYMBOL vmlinux 0x08cc84e7 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x08df9457 neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x08e76946 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x08ec4dc7 sock_rfree +EXPORT_SYMBOL vmlinux 0x0912e79b pci_platform_rom +EXPORT_SYMBOL vmlinux 0x0914885c mmc_release_host +EXPORT_SYMBOL vmlinux 0x091f0997 kernel_accept +EXPORT_SYMBOL vmlinux 0x093989a1 posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x093b0cdf dquot_drop +EXPORT_SYMBOL vmlinux 0x09652570 tty_port_open +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x0992a364 skb_copy_expand +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09d47e21 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x09db7d71 nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0x09e9cc7a bio_integrity_set_tag +EXPORT_SYMBOL vmlinux 0x09fd93b4 qman_create_fq +EXPORT_SYMBOL vmlinux 0x09ffc93c devm_free_irq +EXPORT_SYMBOL vmlinux 0x0a11b9f6 block_truncate_page +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a3131f6 strnchr +EXPORT_SYMBOL vmlinux 0x0a469d23 mfd_clone_cell +EXPORT_SYMBOL vmlinux 0x0a5d00aa netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x0a621f9a sock_create_kern +EXPORT_SYMBOL vmlinux 0x0a68d047 fd_install +EXPORT_SYMBOL vmlinux 0x0a802c18 do_SAK +EXPORT_SYMBOL vmlinux 0x0a866c70 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x0a9f6d59 pme_attr_set +EXPORT_SYMBOL vmlinux 0x0aa4562c pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x0aa6f083 ip_ct_attach +EXPORT_SYMBOL vmlinux 0x0abd431e __block_write_begin +EXPORT_SYMBOL vmlinux 0x0acb1a3c __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ae97a81 bio_map_user +EXPORT_SYMBOL vmlinux 0x0b0b47ec __devm_release_region +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b2c2bdb devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x0b439b86 fput +EXPORT_SYMBOL vmlinux 0x0b450274 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b68c580 dst_destroy +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b9687e3 of_create_pci_dev +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc2024e vfs_open +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0c12e626 __debugger_bpt +EXPORT_SYMBOL vmlinux 0x0c42c0cb pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x0c42f0cf sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c6126e6 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x0c62389e cdev_init +EXPORT_SYMBOL vmlinux 0x0c65e73c scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0x0c8c9e99 scsi_show_extd_sense +EXPORT_SYMBOL vmlinux 0x0c9b6089 nvram_get_size +EXPORT_SYMBOL vmlinux 0x0c9ef76a key_alloc +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0ce78275 netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0x0ce900af blk_finish_plug +EXPORT_SYMBOL vmlinux 0x0d082860 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x0d1416d0 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x0d50d537 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d58cbf8 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x0d6e9446 new_inode +EXPORT_SYMBOL vmlinux 0x0d790aab sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x0d9e7dea xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0da5a5ef end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x0dbd4c50 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x0dc55bcd dm_register_target +EXPORT_SYMBOL vmlinux 0x0dd0bdbc sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x0df49897 simple_transaction_get +EXPORT_SYMBOL vmlinux 0x0df68776 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x0e082473 pneigh_lookup +EXPORT_SYMBOL vmlinux 0x0e0dd7b0 skb_copy_datagram_const_iovec +EXPORT_SYMBOL vmlinux 0x0e458b28 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x0e5a4c95 bio_copy_user +EXPORT_SYMBOL vmlinux 0x0e672a7b md_done_sync +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e70d603 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x0e72c89b pci_iounmap +EXPORT_SYMBOL vmlinux 0x0e8cd4c0 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x0e8f30f6 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x0ea8a8a7 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x0eaf451e hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x0eb11920 unregister_nls +EXPORT_SYMBOL vmlinux 0x0eb9a22d of_phy_connect +EXPORT_SYMBOL vmlinux 0x0ebeed8b proc_set_user +EXPORT_SYMBOL vmlinux 0x0ec3406a dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0x0edc0a81 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x0ef69857 pme_ctx_pmtcc +EXPORT_SYMBOL vmlinux 0x0ef955eb thaw_super +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f25071f uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x0f258daf keyring_clear +EXPORT_SYMBOL vmlinux 0x0f28cb91 nvram_read_byte +EXPORT_SYMBOL vmlinux 0x0f440154 fb_pan_display +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f5faa7e wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x0f70fec4 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0x0f8c0149 pme2_have_control +EXPORT_SYMBOL vmlinux 0x0f8e61c8 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x0f9316c8 fm_mutex_unlock +EXPORT_SYMBOL vmlinux 0x0fa0352c fail_migrate_page +EXPORT_SYMBOL vmlinux 0x0fa3d491 dev_mc_flush +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fc1e1c9 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x0fc5eeeb netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x0fcf09f0 dev_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x0ff8e04e i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x102fa4af of_find_device_by_node +EXPORT_SYMBOL vmlinux 0x10342a5f nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x1049d2a9 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x106f13ab crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x10757ff9 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x10926d05 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x1095cea6 ata_dev_printk +EXPORT_SYMBOL vmlinux 0x10a7eea7 proc_mkdir +EXPORT_SYMBOL vmlinux 0x10ab5d65 sock_no_listen +EXPORT_SYMBOL vmlinux 0x10c24fda swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0x10d7f60f nf_setsockopt +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x10eff9bc blk_stop_queue +EXPORT_SYMBOL vmlinux 0x10f8033f blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0x1101fb11 d_rehash +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x111b558e nf_unregister_hook +EXPORT_SYMBOL vmlinux 0x11267875 scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0x113905b9 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x113bf445 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x113eb475 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x1140ac30 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x114532b7 netdev_warn +EXPORT_SYMBOL vmlinux 0x116263f0 find_or_create_page +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x1164c7aa tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x1177f144 sock_no_accept +EXPORT_SYMBOL vmlinux 0x1182d83a cpuidle_disable +EXPORT_SYMBOL vmlinux 0x1194d8af security_path_chown +EXPORT_SYMBOL vmlinux 0x11c3d304 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x11c9185c of_iomap +EXPORT_SYMBOL vmlinux 0x11cf6d44 path_nosuid +EXPORT_SYMBOL vmlinux 0x11f2e3e7 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x121d2154 phy_drivers_register +EXPORT_SYMBOL vmlinux 0x122043a8 of_find_node_with_property +EXPORT_SYMBOL vmlinux 0x122ab20d blk_complete_request +EXPORT_SYMBOL vmlinux 0x12323781 drop_super +EXPORT_SYMBOL vmlinux 0x126b5ba2 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x126cbfc9 dev_disable_lro +EXPORT_SYMBOL vmlinux 0x128eae38 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x1299733c tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12baa04f netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x12c35870 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x12cacf47 locks_init_lock +EXPORT_SYMBOL vmlinux 0x12da5bb2 __kmalloc +EXPORT_SYMBOL vmlinux 0x12f35d17 call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x134534ed scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x1348760d ipmi_request_settime +EXPORT_SYMBOL vmlinux 0x13767956 qman_enqueue +EXPORT_SYMBOL vmlinux 0x13c954fc skb_find_text +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13e38f5c up_read +EXPORT_SYMBOL vmlinux 0x13eb0cb1 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x13f652fa __ps2_command +EXPORT_SYMBOL vmlinux 0x1407c6e7 kmap_prot +EXPORT_SYMBOL vmlinux 0x14091cee dev_addr_del +EXPORT_SYMBOL vmlinux 0x140e8543 scsi_nonblockable_ioctl +EXPORT_SYMBOL vmlinux 0x1420b379 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x142dfcd6 generic_pipe_buf_map +EXPORT_SYMBOL vmlinux 0x1459799c mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x1460f99d pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x146bada2 kernel_read +EXPORT_SYMBOL vmlinux 0x14752e06 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0x14855648 pci_enable_obff +EXPORT_SYMBOL vmlinux 0x14b7d23f ping_prot +EXPORT_SYMBOL vmlinux 0x14b89868 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x14c1fa6c jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x14e41f8b pci_vpd_truncate +EXPORT_SYMBOL vmlinux 0x14eb7b16 tcp_release_cb +EXPORT_SYMBOL vmlinux 0x14f45fcc bman_free_pool +EXPORT_SYMBOL vmlinux 0x153ef25d scsi_device_get +EXPORT_SYMBOL vmlinux 0x15477b72 clocksource_register +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x1551dc51 bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x1553c9c0 __scsi_put_command +EXPORT_SYMBOL vmlinux 0x155cfa95 scsi_setup_fs_cmnd +EXPORT_SYMBOL vmlinux 0x156393b5 devm_ioremap +EXPORT_SYMBOL vmlinux 0x15864b03 flex_array_get +EXPORT_SYMBOL vmlinux 0x158cc525 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x15911046 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0x159d2dd9 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x159e2850 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x15a530b5 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0x15bef7db vga_client_register +EXPORT_SYMBOL vmlinux 0x15c39118 mpage_readpages +EXPORT_SYMBOL vmlinux 0x15c6a2de gen10g_read_status +EXPORT_SYMBOL vmlinux 0x15cd3fe3 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x15d07605 bio_alloc_pages +EXPORT_SYMBOL vmlinux 0x15d3fd60 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x15e1b9f2 try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x15f571ec blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x161d0033 proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x16263819 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x162fd864 submit_bio_wait +EXPORT_SYMBOL vmlinux 0x164451ef pme_ctx_reconfigure_rx +EXPORT_SYMBOL vmlinux 0x1646dc67 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x16540bbc __cmpdi2 +EXPORT_SYMBOL vmlinux 0x167350ec register_gifconf +EXPORT_SYMBOL vmlinux 0x167896c6 lro_flush_pkt +EXPORT_SYMBOL vmlinux 0x168f02f9 fm_get_handle +EXPORT_SYMBOL vmlinux 0x1698080e bio_endio +EXPORT_SYMBOL vmlinux 0x1698df7b set_create_files_as +EXPORT_SYMBOL vmlinux 0x16b00955 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL vmlinux 0x16df0b2b pci_disable_obff +EXPORT_SYMBOL vmlinux 0x16f62392 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x17039a83 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x172b4b6d pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x173b7bc6 dev_get_by_index +EXPORT_SYMBOL vmlinux 0x17450a39 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x174f6483 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x174fcc2f simple_fill_super +EXPORT_SYMBOL vmlinux 0x17648396 dev_base_lock +EXPORT_SYMBOL vmlinux 0x1770c8aa inet_del_protocol +EXPORT_SYMBOL vmlinux 0x177974f5 fb_set_cmap +EXPORT_SYMBOL vmlinux 0x177da96d eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x17a642ff sock_kmalloc +EXPORT_SYMBOL vmlinux 0x17aa156a __ucmpdi2 +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17b94aae register_quota_format +EXPORT_SYMBOL vmlinux 0x17d642ac cont_write_begin +EXPORT_SYMBOL vmlinux 0x17e28473 fsl_upm_run_pattern +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x18068120 padata_free +EXPORT_SYMBOL vmlinux 0x18132efd __napi_schedule +EXPORT_SYMBOL vmlinux 0x1823e852 nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0x1826f089 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x18282b46 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x18420901 kernel_connect +EXPORT_SYMBOL vmlinux 0x18468e94 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x184e6c85 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x18580ba0 kobject_put +EXPORT_SYMBOL vmlinux 0x1870f8c1 qman_fqid_pool_alloc +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x18985801 ppp_register_channel +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x189f266c nf_log_packet +EXPORT_SYMBOL vmlinux 0x18a3ade3 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x18a45772 inode_init_always +EXPORT_SYMBOL vmlinux 0x18ab9a85 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x18e30420 devm_gpiod_get +EXPORT_SYMBOL vmlinux 0x18f98147 cfb_fillrect +EXPORT_SYMBOL vmlinux 0x190d241d qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x19111a40 lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x1915fc92 neigh_destroy +EXPORT_SYMBOL vmlinux 0x194651ee deactivate_super +EXPORT_SYMBOL vmlinux 0x194e52b8 netdev_change_features +EXPORT_SYMBOL vmlinux 0x1950f696 pci_choose_state +EXPORT_SYMBOL vmlinux 0x1963cf5b elv_abort_queue +EXPORT_SYMBOL vmlinux 0x198469a3 tty_throttle +EXPORT_SYMBOL vmlinux 0x198e0ea6 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19bcabd3 release_pages +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19c8d9f8 block_write_full_page +EXPORT_SYMBOL vmlinux 0x19d4ac4a simple_getattr +EXPORT_SYMBOL vmlinux 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL vmlinux 0x1a111a41 ftrace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x1a20ee32 kobject_add +EXPORT_SYMBOL vmlinux 0x1a2f0768 vfs_llseek +EXPORT_SYMBOL vmlinux 0x1a361ab9 dma_find_channel +EXPORT_SYMBOL vmlinux 0x1a44c54f sk_capable +EXPORT_SYMBOL vmlinux 0x1a648c7f tcp_seq_open +EXPORT_SYMBOL vmlinux 0x1a8265c9 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL vmlinux 0x1ace138d bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0x1af62a99 panic_notifier_list +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b0ac272 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x1b132009 rename_lock +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b524838 phy_stop +EXPORT_SYMBOL vmlinux 0x1b59581e xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0x1b61906f shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b68d5b5 rtnl_unicast +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b89f76d sk_receive_skb +EXPORT_SYMBOL vmlinux 0x1b8a8f85 generic_file_llseek +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1b93fbb3 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x1b9b58cf mount_pseudo +EXPORT_SYMBOL vmlinux 0x1b9e0ff1 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x1ba5a6ff inet_put_port +EXPORT_SYMBOL vmlinux 0x1bb45b96 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x1bbe7469 dev_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x1bc4ff03 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0x1bca2b59 load_fp_state +EXPORT_SYMBOL vmlinux 0x1be0220c blk_integrity_register +EXPORT_SYMBOL vmlinux 0x1be1e0a7 nf_ct_attach +EXPORT_SYMBOL vmlinux 0x1befbf5c pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x1c09aba3 qman_static_dequeue_get +EXPORT_SYMBOL vmlinux 0x1c12ef80 pci_dev_get +EXPORT_SYMBOL vmlinux 0x1c2a32ee i2c_clients_command +EXPORT_SYMBOL vmlinux 0x1c4b1580 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x1c6de298 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x1c80de9c ip_send_check +EXPORT_SYMBOL vmlinux 0x1cb67e9e put_tty_driver +EXPORT_SYMBOL vmlinux 0x1cb6bdb5 dm_io +EXPORT_SYMBOL vmlinux 0x1cc5233e blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x1cca2efa inet_stream_ops +EXPORT_SYMBOL vmlinux 0x1cce1bab phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0x1ce933f9 dm_unregister_target +EXPORT_SYMBOL vmlinux 0x1cfe0d6a jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x1d177281 __skb_checksum +EXPORT_SYMBOL vmlinux 0x1d484dbe prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x1d6bb9c2 netif_napi_del +EXPORT_SYMBOL vmlinux 0x1d8ea6ec bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x1da2d636 pci_enable_device +EXPORT_SYMBOL vmlinux 0x1dc32222 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dc7ff95 max8925_set_bits +EXPORT_SYMBOL vmlinux 0x1dd36df5 seq_lseek +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1e04bf0a netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e47be0c pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x1e4a6de7 netif_receive_skb +EXPORT_SYMBOL vmlinux 0x1e4cc754 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e6e5d66 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x1e7db6b0 phy_start +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ea38329 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x1eb1d473 dev_uc_sync +EXPORT_SYMBOL vmlinux 0x1ec3bed9 hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0x1ecd8907 blk_requeue_request +EXPORT_SYMBOL vmlinux 0x1ed4c60c agp_create_memory +EXPORT_SYMBOL vmlinux 0x1ed5b6e7 mdio_bus_type +EXPORT_SYMBOL vmlinux 0x1ede7112 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x1ee3946c pci_disable_msix +EXPORT_SYMBOL vmlinux 0x1ee56a4f skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x1f081201 read_cache_page +EXPORT_SYMBOL vmlinux 0x1f152669 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x1f294c89 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x1f29d615 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x1f2f0cf5 console_stop +EXPORT_SYMBOL vmlinux 0x1f47d96c pci_set_power_state +EXPORT_SYMBOL vmlinux 0x1f52041f mdiobus_write +EXPORT_SYMBOL vmlinux 0x1f5ad908 pme_attr_get +EXPORT_SYMBOL vmlinux 0x1f7945e8 flush_icache_user_range +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1f815c6d i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fd404d8 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x1fe86d1f phy_device_free +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1feb9ab3 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x1fedf0f4 __request_region +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x20060c39 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x201598ab pci_find_next_bus +EXPORT_SYMBOL vmlinux 0x2019d489 netdev_notice +EXPORT_SYMBOL vmlinux 0x202e9508 __secpath_destroy +EXPORT_SYMBOL vmlinux 0x20368cb4 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x203e68d4 register_console +EXPORT_SYMBOL vmlinux 0x203f4dd5 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x205f6604 directly_mappable_cdev_bdi +EXPORT_SYMBOL vmlinux 0x20640d37 textsearch_unregister +EXPORT_SYMBOL vmlinux 0x206687ad cpm_muram_alloc_fixed +EXPORT_SYMBOL vmlinux 0x206b0322 mb_cache_create +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x2076b9bf xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x2087162a tty_port_hangup +EXPORT_SYMBOL vmlinux 0x20a57734 do_splice_to +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20a86b3f of_get_pci_address +EXPORT_SYMBOL vmlinux 0x20b2bb2d param_array_ops +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20e259f5 dquot_acquire +EXPORT_SYMBOL vmlinux 0x2116f335 dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0x211be324 agp_enable +EXPORT_SYMBOL vmlinux 0x2120d0f9 mmc_start_req +EXPORT_SYMBOL vmlinux 0x2129817e sock_no_poll +EXPORT_SYMBOL vmlinux 0x2139fef2 inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x213a2ce0 bd_set_size +EXPORT_SYMBOL vmlinux 0x214638d8 simple_release_fs +EXPORT_SYMBOL vmlinux 0x215ebd78 bitrev16 +EXPORT_SYMBOL vmlinux 0x2187a8c1 gen10g_suspend +EXPORT_SYMBOL vmlinux 0x218a8578 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x21918de4 splice_from_pipe_feed +EXPORT_SYMBOL vmlinux 0x2193fa69 udp_proc_register +EXPORT_SYMBOL vmlinux 0x21a4a7c9 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x21f3dc15 cpm_command +EXPORT_SYMBOL vmlinux 0x2201153c padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x2236ffef blk_init_tags +EXPORT_SYMBOL vmlinux 0x22386332 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x224e97df get_agp_version +EXPORT_SYMBOL vmlinux 0x2256fafa div64_u64_rem +EXPORT_SYMBOL vmlinux 0x2265b514 qman_get_portal_config +EXPORT_SYMBOL vmlinux 0x2274207e from_kgid_munged +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x2278e94b slhc_remember +EXPORT_SYMBOL vmlinux 0x2288ed28 agp_unbind_memory +EXPORT_SYMBOL vmlinux 0x22a6cf45 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22bf4ceb dev_addr_add +EXPORT_SYMBOL vmlinux 0x22d73c62 bman_get_params +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 0x23681981 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x23702bca sk_ns_capable +EXPORT_SYMBOL vmlinux 0x2376eaeb mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x2382d960 tty_pair_get_pty +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23b6c167 d_genocide +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c72e85 dev_remove_offload +EXPORT_SYMBOL vmlinux 0x23d86417 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x23eb7812 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0x23f2243d mempool_free +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x24248bc5 pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0x24282d19 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x242c2acf blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x244484b5 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x245a5a94 sleep_on_timeout +EXPORT_SYMBOL vmlinux 0x24621b20 iput +EXPORT_SYMBOL vmlinux 0x246717d3 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x2486f803 blk_init_queue +EXPORT_SYMBOL vmlinux 0x24953b10 bio_map_kern +EXPORT_SYMBOL vmlinux 0x249f4ebf seq_putc +EXPORT_SYMBOL vmlinux 0x24af679b xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x24b0f90c of_clk_get_by_name +EXPORT_SYMBOL vmlinux 0x24cdd8ed dm_kobject_release +EXPORT_SYMBOL vmlinux 0x24d0f08a sock_recvmsg +EXPORT_SYMBOL vmlinux 0x24d7b4eb cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x24e8a2cc blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0x24f71f0e uart_add_one_port +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x250e4d89 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x2533dda1 bman_query_pools +EXPORT_SYMBOL vmlinux 0x254d24e5 __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x25552d14 tty_pair_get_tty +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25931343 skb_queue_head +EXPORT_SYMBOL vmlinux 0x259b7c60 sk_release_kernel +EXPORT_SYMBOL vmlinux 0x25c3af85 i2c_master_recv +EXPORT_SYMBOL vmlinux 0x25c677c4 mac_pton +EXPORT_SYMBOL vmlinux 0x25c731af pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x25d3040a setup_new_exec +EXPORT_SYMBOL vmlinux 0x25d6f943 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x25d8d9f7 agp_generic_enable +EXPORT_SYMBOL vmlinux 0x25f3bd2e atomic64_xchg +EXPORT_SYMBOL vmlinux 0x260cf8f8 of_get_property +EXPORT_SYMBOL vmlinux 0x260dadf4 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x2621e0ce ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0x2627581b scsi_scan_target +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x26477c07 __vmalloc +EXPORT_SYMBOL vmlinux 0x26491add pci_scan_slot +EXPORT_SYMBOL vmlinux 0x2650a31d netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x266df44d sock_init_data +EXPORT_SYMBOL vmlinux 0x26743f10 sk_reset_timer +EXPORT_SYMBOL vmlinux 0x2685c3d7 __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x26b760c4 slhc_init +EXPORT_SYMBOL vmlinux 0x26bb950b __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x26cc4dfd pci_bus_put +EXPORT_SYMBOL vmlinux 0x26d7a31c xfrm_input +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26f0453a blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x26f6d1a3 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x270e92d4 pci_get_class +EXPORT_SYMBOL vmlinux 0x270f2e3c pci_claim_resource +EXPORT_SYMBOL vmlinux 0x2711d793 input_inject_event +EXPORT_SYMBOL vmlinux 0x2714f7c2 nf_log_register +EXPORT_SYMBOL vmlinux 0x2717e05d sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x272a08bf seq_pad +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x276b704c tcp_sendpage +EXPORT_SYMBOL vmlinux 0x277f6a05 block_write_full_page_endio +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x278abb3c skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0x27b23603 dev_remove_pack +EXPORT_SYMBOL vmlinux 0x27b53139 pme_fd_cmd_pmtcc +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27bc8365 tcp_ioctl +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27e5019e sock_edemux +EXPORT_SYMBOL vmlinux 0x27ea854c agp_bind_memory +EXPORT_SYMBOL vmlinux 0x27f2313e idr_replace +EXPORT_SYMBOL vmlinux 0x27f5c0ac ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x2810cbb7 f_setown +EXPORT_SYMBOL vmlinux 0x2810fef9 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x281f40a8 __page_symlink +EXPORT_SYMBOL vmlinux 0x2866a46c pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x288f3f4d pci_device_from_OF_node +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28e35c70 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x28f784f5 __debugger_break_match +EXPORT_SYMBOL vmlinux 0x29199408 dput +EXPORT_SYMBOL vmlinux 0x291ce23d pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0x29204bc9 agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0x29270e23 sock_i_ino +EXPORT_SYMBOL vmlinux 0x293182bf devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x29563ff7 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x295ac58d jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x295ed9a8 mntget +EXPORT_SYMBOL vmlinux 0x29a67db1 bman_recovery_cleanup_bpid +EXPORT_SYMBOL vmlinux 0x29aef245 __get_user_pages +EXPORT_SYMBOL vmlinux 0x29bf5655 get_user_pages +EXPORT_SYMBOL vmlinux 0x29f59efc xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x29fdda53 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x2a029d63 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x2a0c02f7 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x2a0f3563 tty_free_termios +EXPORT_SYMBOL vmlinux 0x2a27cc8a cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a30a2be jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a5decb0 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x2a79ac13 clkdev_add +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2aa17a93 bdi_destroy +EXPORT_SYMBOL vmlinux 0x2ab75a3b nf_hook_slow +EXPORT_SYMBOL vmlinux 0x2ac03358 dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x2ace6f65 ip6_xmit +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2ad4ab98 pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0x2ad982a0 scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x2b0670f8 netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b39aee0 bman_release +EXPORT_SYMBOL vmlinux 0x2b3fbe17 read_cache_page_async +EXPORT_SYMBOL vmlinux 0x2b5ef7d5 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x2b635221 eth_header +EXPORT_SYMBOL vmlinux 0x2b679dbe rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x2b85e1d9 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x2b902029 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bc13898 tcp_make_synack +EXPORT_SYMBOL vmlinux 0x2bc61da1 program_check_exception +EXPORT_SYMBOL vmlinux 0x2be0f12d dql_completed +EXPORT_SYMBOL vmlinux 0x2beb7ed9 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x2c0c05d5 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x2c0d81e9 mmc_add_host +EXPORT_SYMBOL vmlinux 0x2c117d11 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c2111f4 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x2c21f91c ppp_dev_name +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c37d7bc inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x2c53e8e2 security_path_mknod +EXPORT_SYMBOL vmlinux 0x2c7b1fca down_timeout +EXPORT_SYMBOL vmlinux 0x2c900d91 cpufreq_put_global_kobject +EXPORT_SYMBOL vmlinux 0x2ca46a5a uart_get_divisor +EXPORT_SYMBOL vmlinux 0x2cfb8378 qman_stop_dequeues +EXPORT_SYMBOL vmlinux 0x2cfddf80 xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0x2d03c10d posix_acl_create +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d200744 d_splice_alias +EXPORT_SYMBOL vmlinux 0x2d24ee3d of_device_register +EXPORT_SYMBOL vmlinux 0x2d2ba7b9 lease_modify +EXPORT_SYMBOL vmlinux 0x2d2f2f7d __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d34a681 mddev_congested +EXPORT_SYMBOL vmlinux 0x2d37342e cpu_online_mask +EXPORT_SYMBOL vmlinux 0x2d39157c sg_miter_next +EXPORT_SYMBOL vmlinux 0x2d3e176c uart_suspend_port +EXPORT_SYMBOL vmlinux 0x2d4c6a52 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x2d4d5cfc dev_trans_start +EXPORT_SYMBOL vmlinux 0x2d5c562f genlmsg_put +EXPORT_SYMBOL vmlinux 0x2d89342a scsi_show_sense_hdr +EXPORT_SYMBOL vmlinux 0x2d8f739e flush_tlb_mm +EXPORT_SYMBOL vmlinux 0x2daaaba9 param_get_byte +EXPORT_SYMBOL vmlinux 0x2dcded29 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x2dd159a1 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0x2dd97cfa ps2_end_command +EXPORT_SYMBOL vmlinux 0x2dea945b register_cdrom +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2dfdd30e i2c_bit_add_numbered_bus +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e1e95e5 arp_send +EXPORT_SYMBOL vmlinux 0x2e27e595 mmc_gpio_free_ro +EXPORT_SYMBOL vmlinux 0x2e2b9f3a filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e48bdcf qman_poll_dqrr +EXPORT_SYMBOL vmlinux 0x2e5ba8ce __blk_run_queue +EXPORT_SYMBOL vmlinux 0x2e5bdc6a commit_creds +EXPORT_SYMBOL vmlinux 0x2e97bf98 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x2eb2e714 lock_rename +EXPORT_SYMBOL vmlinux 0x2ec524ad __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x2eeceb42 sk_chk_filter +EXPORT_SYMBOL vmlinux 0x2ef3e3b7 mmc_start_bkops +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 0x2f3e42ec irq_stat +EXPORT_SYMBOL vmlinux 0x2f434dfb mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x2f5502a0 blk_fetch_request +EXPORT_SYMBOL vmlinux 0x2f64616b register_netdev +EXPORT_SYMBOL vmlinux 0x2f6ae025 kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0x2f6d2d46 save_mount_options +EXPORT_SYMBOL vmlinux 0x2fa484a4 dquot_release +EXPORT_SYMBOL vmlinux 0x2fa74a91 vfs_create +EXPORT_SYMBOL vmlinux 0x2fa96fd9 devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x301e5a48 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x304856ec ipmi_register_smi +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x307f5956 tcp_close +EXPORT_SYMBOL vmlinux 0x3092c6b5 __neigh_event_send +EXPORT_SYMBOL vmlinux 0x3092f0de tty_port_close_start +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30b8b35c cpu_to_chip_id +EXPORT_SYMBOL vmlinux 0x30cada8f radix_tree_next_hole +EXPORT_SYMBOL vmlinux 0x30d2cdbb of_device_alloc +EXPORT_SYMBOL vmlinux 0x30da351a phy_find_first +EXPORT_SYMBOL vmlinux 0x30ec27cd mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x30f2627f sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310917fe sort +EXPORT_SYMBOL vmlinux 0x310da4d7 scsi_print_result +EXPORT_SYMBOL vmlinux 0x312824e0 hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x3148c056 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x3158c43a make_kgid +EXPORT_SYMBOL vmlinux 0x315c65fd zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x3177871a clear_inode +EXPORT_SYMBOL vmlinux 0x31858796 __i2c_transfer +EXPORT_SYMBOL vmlinux 0x318cadb1 reciprocal_value +EXPORT_SYMBOL vmlinux 0x3191f109 __krealloc +EXPORT_SYMBOL vmlinux 0x31ab040b skb_insert +EXPORT_SYMBOL vmlinux 0x31b055ac nla_append +EXPORT_SYMBOL vmlinux 0x31b75c96 blk_mq_end_io +EXPORT_SYMBOL vmlinux 0x31bafada bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x31c5fefe cdev_add +EXPORT_SYMBOL vmlinux 0x31e660ed jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x31f0bb78 __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x31f7d40a pme_fd_cmd_fcw +EXPORT_SYMBOL vmlinux 0x31f7ee3e blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x31ffc75b fb_set_suspend +EXPORT_SYMBOL vmlinux 0x32180f09 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x322f48d4 abx500_dump_all_banks +EXPORT_SYMBOL vmlinux 0x32424b34 qman_query_wq +EXPORT_SYMBOL vmlinux 0x3258a5f2 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x3268ce3a ip_setsockopt +EXPORT_SYMBOL vmlinux 0x327bf883 of_can_translate_address +EXPORT_SYMBOL vmlinux 0x3284c88d tcf_hash_lookup +EXPORT_SYMBOL vmlinux 0x32860d7e qman_fqid_pool_free +EXPORT_SYMBOL vmlinux 0x328a05f1 strncpy +EXPORT_SYMBOL vmlinux 0x329a85a1 dentry_unhash +EXPORT_SYMBOL vmlinux 0x329c2f26 scsi_unregister +EXPORT_SYMBOL vmlinux 0x32b6067f bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x33099bc1 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0x33278048 md_integrity_register +EXPORT_SYMBOL vmlinux 0x334e0293 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x335da768 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x335f1b3a scsi_remove_host +EXPORT_SYMBOL vmlinux 0x33658558 dquot_transfer +EXPORT_SYMBOL vmlinux 0x3366f668 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x337cce46 put_cmsg +EXPORT_SYMBOL vmlinux 0x33883dff mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x338dbf36 tc_classify_compat +EXPORT_SYMBOL vmlinux 0x33aa48f2 qman_static_dequeue_del +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33b8c25d dst_alloc +EXPORT_SYMBOL vmlinux 0x33ba5cd4 param_ops_bool +EXPORT_SYMBOL vmlinux 0x33c00070 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33dbfd93 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x342623eb fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x343b6fb1 pci_bus_get +EXPORT_SYMBOL vmlinux 0x344adbd5 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x344d839c scsi_prep_state_check +EXPORT_SYMBOL vmlinux 0x34561905 pme_ctx_enable +EXPORT_SYMBOL vmlinux 0x346c4ded rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x347eb9bd param_set_bool +EXPORT_SYMBOL vmlinux 0x348109c3 noop_qdisc +EXPORT_SYMBOL vmlinux 0x3484ce56 scsi_prep_fn +EXPORT_SYMBOL vmlinux 0x348b9d99 napi_gro_flush +EXPORT_SYMBOL vmlinux 0x34947710 devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0x34950133 ihold +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34d62cbf inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x350f1a33 generic_removexattr +EXPORT_SYMBOL vmlinux 0x350fed94 iget_locked +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x351bbbb6 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x3527314d blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x352acac0 serio_close +EXPORT_SYMBOL vmlinux 0x352e5bd4 xfrm_init_state +EXPORT_SYMBOL vmlinux 0x355279a7 __vlan_find_dev_deep +EXPORT_SYMBOL vmlinux 0x3562f3f5 page_readlink +EXPORT_SYMBOL vmlinux 0x357b6822 tcp_read_sock +EXPORT_SYMBOL vmlinux 0x35ae1439 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x35c88865 serio_rescan +EXPORT_SYMBOL vmlinux 0x35ed3914 __lock_page +EXPORT_SYMBOL vmlinux 0x3606504e filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x364fed4d __register_chrdev +EXPORT_SYMBOL vmlinux 0x365f0f17 __frontswap_test +EXPORT_SYMBOL vmlinux 0x3666930a dma_async_device_register +EXPORT_SYMBOL vmlinux 0x36815df7 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0x368382e2 of_get_named_gpiod_flags +EXPORT_SYMBOL vmlinux 0x36995ea6 account_page_dirtied +EXPORT_SYMBOL vmlinux 0x36b0e732 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x36bccb74 elv_register_queue +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36c31027 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x36d7b11a of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0x36e360e3 __hw_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x36f46a40 tcf_action_exec +EXPORT_SYMBOL vmlinux 0x36fc135b skb_clone +EXPORT_SYMBOL vmlinux 0x371d2130 check_legacy_ioport +EXPORT_SYMBOL vmlinux 0x37386600 mmc_can_trim +EXPORT_SYMBOL vmlinux 0x3739fb05 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x3742873b set_user_nice +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x37741ea1 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37c99b73 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x37cea259 netdev_err +EXPORT_SYMBOL vmlinux 0x37e74642 get_jiffies_64 +EXPORT_SYMBOL vmlinux 0x37f614b7 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x37f9f349 simple_rename +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 0x382b7dbe ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x383c577f tcf_hash_release +EXPORT_SYMBOL vmlinux 0x384a767d phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388a3b61 pcim_iomap +EXPORT_SYMBOL vmlinux 0x388e39ce qman_oos_fq +EXPORT_SYMBOL vmlinux 0x388f9128 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38b0fbb4 fm_port_pcd_bind +EXPORT_SYMBOL vmlinux 0x38cb4873 kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x38eb81e0 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x38eb8762 md_check_recovery +EXPORT_SYMBOL vmlinux 0x38f21777 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x38f3b159 send_sig +EXPORT_SYMBOL vmlinux 0x38fb9933 tty_std_termios +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x393fa780 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x39410f01 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x39c2b4a4 simple_transaction_release +EXPORT_SYMBOL vmlinux 0x39cdf63c wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x3a22cca2 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x3a4ae4ec fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x3a4d4a62 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x3a547236 __serio_register_port +EXPORT_SYMBOL vmlinux 0x3a6e64e2 eth_header_cache +EXPORT_SYMBOL vmlinux 0x3a77c4dc qdisc_list_del +EXPORT_SYMBOL vmlinux 0x3a811884 pipe_lock +EXPORT_SYMBOL vmlinux 0x3a96fe70 make_kprojid +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3ad86c71 __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x3afd4260 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x3b081ccf create_empty_buffers +EXPORT_SYMBOL vmlinux 0x3b13b5d7 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x3b31a483 of_get_min_tck +EXPORT_SYMBOL vmlinux 0x3b36fe3d pme_hw_residue_new +EXPORT_SYMBOL vmlinux 0x3b3efdb4 mount_nodev +EXPORT_SYMBOL vmlinux 0x3b590d26 force_sig +EXPORT_SYMBOL vmlinux 0x3b615a21 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x3b8dad21 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x3ba6b235 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x3ba9e730 skb_free_datagram +EXPORT_SYMBOL vmlinux 0x3bafa890 swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x3bb709dd md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x3bc960e9 flush_signals +EXPORT_SYMBOL vmlinux 0x3bd1b1f6 msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x3be136b0 unload_nls +EXPORT_SYMBOL vmlinux 0x3bef03b9 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x3c02f99b scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x3c06fb14 blk_get_request +EXPORT_SYMBOL vmlinux 0x3c1882d5 sk_stream_error +EXPORT_SYMBOL vmlinux 0x3c1d37ab fifo_set_limit +EXPORT_SYMBOL vmlinux 0x3c1e7880 tcp_splice_read +EXPORT_SYMBOL vmlinux 0x3c2fb7f8 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x3c4baa38 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x3c53a77e bdi_register +EXPORT_SYMBOL vmlinux 0x3c652b24 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c9d1211 string_get_size +EXPORT_SYMBOL vmlinux 0x3c9d2746 sync_blockdev +EXPORT_SYMBOL vmlinux 0x3cb3931b sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x3cba71be dquot_operations +EXPORT_SYMBOL vmlinux 0x3cc11cb2 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x3cc4b0dc lg_lock_init +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3cee9edd __napi_complete +EXPORT_SYMBOL vmlinux 0x3cf43113 phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x3cffd163 cur_cpu_spec +EXPORT_SYMBOL vmlinux 0x3d41904f of_get_next_child +EXPORT_SYMBOL vmlinux 0x3d52a241 lro_flush_all +EXPORT_SYMBOL vmlinux 0x3d6c82a1 should_remove_suid +EXPORT_SYMBOL vmlinux 0x3d993f70 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dd13db7 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0x3ded29ac scsi_get_command +EXPORT_SYMBOL vmlinux 0x3df25708 default_llseek +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e118756 agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0x3e256339 serio_reconnect +EXPORT_SYMBOL vmlinux 0x3e4a0732 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x3e4d223c pme_ctx_init +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e8fbd9c try_to_release_page +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e934a0c inet_frag_evictor +EXPORT_SYMBOL vmlinux 0x3ed63055 zlib_inflateReset +EXPORT_SYMBOL vmlinux 0x3ef7fd94 pci_disable_msi +EXPORT_SYMBOL vmlinux 0x3efa757f pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f458019 bitmap_unplug +EXPORT_SYMBOL vmlinux 0x3f5de707 devfreq_resume_device +EXPORT_SYMBOL vmlinux 0x3fadc74c scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x3fb1cf71 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x3fbea51d is_bad_inode +EXPORT_SYMBOL vmlinux 0x3fd55724 of_n_size_cells +EXPORT_SYMBOL vmlinux 0x3fd70ca5 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x3fe0d1c0 slhc_free +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3ff62317 local_bh_disable +EXPORT_SYMBOL vmlinux 0x3ff8069b tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x3ff8e495 lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0x3fff6a2a generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x40122205 skb_dequeue +EXPORT_SYMBOL vmlinux 0x401ed28d mount_subtree +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x404066c5 idr_for_each +EXPORT_SYMBOL vmlinux 0x4059792f print_hex_dump +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x4081e413 phy_driver_register +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x40a01cf1 tty_chars_in_buffer +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 0x40b57158 pme_initfq +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 0x40e68677 kobject_get +EXPORT_SYMBOL vmlinux 0x40f1ad10 tb_ticks_per_jiffy +EXPORT_SYMBOL vmlinux 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL vmlinux 0x4117e309 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x4159c38f ioremap_wc +EXPORT_SYMBOL vmlinux 0x4168619e bman_pool_max +EXPORT_SYMBOL vmlinux 0x416a6f56 udp6_csum_init +EXPORT_SYMBOL vmlinux 0x417c9bc6 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x418cf053 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0x419078a2 from_kgid +EXPORT_SYMBOL vmlinux 0x41dc86a8 find_get_page +EXPORT_SYMBOL vmlinux 0x41dfde30 mmc_of_parse +EXPORT_SYMBOL vmlinux 0x41e882d2 irq_to_desc +EXPORT_SYMBOL vmlinux 0x4203c06c md_unregister_thread +EXPORT_SYMBOL vmlinux 0x4207a194 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x4211c3c1 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x423b776a ipmi_create_user +EXPORT_SYMBOL vmlinux 0x4241f32c netif_device_attach +EXPORT_SYMBOL vmlinux 0x424ad3bb update_time +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x425b44a8 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x42678fc8 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x42689607 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x4275cb6e km_new_mapping +EXPORT_SYMBOL vmlinux 0x427750dd ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x428da188 d_delete +EXPORT_SYMBOL vmlinux 0x42977ad4 __hw_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42c65986 qman_alloc_fqid_range +EXPORT_SYMBOL vmlinux 0x42de3ac3 tcp_parse_options +EXPORT_SYMBOL vmlinux 0x42eb6ff7 __d_drop +EXPORT_SYMBOL vmlinux 0x42ee6973 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x430154ae bman_irqsource_remove +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x43632d7d of_find_property +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x437620c9 ip6_route_output +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x438df40a vfs_getattr +EXPORT_SYMBOL vmlinux 0x43983b16 lock_sock_fast +EXPORT_SYMBOL vmlinux 0x439cba37 neigh_ifdown +EXPORT_SYMBOL vmlinux 0x43a01f90 complete_all +EXPORT_SYMBOL vmlinux 0x43ac8fc9 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x43b4324b security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x43ddc579 blk_start_queue +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x43fad79d inet6_protos +EXPORT_SYMBOL vmlinux 0x440dab28 agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x4418d4ad agp_backend_acquire +EXPORT_SYMBOL vmlinux 0x441c6195 neigh_lookup +EXPORT_SYMBOL vmlinux 0x44330023 d_lookup +EXPORT_SYMBOL vmlinux 0x44366cfc simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x44433d8c seq_release_private +EXPORT_SYMBOL vmlinux 0x44438b96 hex2bin +EXPORT_SYMBOL vmlinux 0x4467d430 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0x447516bc ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x4478bb87 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x4484c9f6 fm_mutex_lock +EXPORT_SYMBOL vmlinux 0x44b771d7 arp_find +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44eb192e wait_for_completion +EXPORT_SYMBOL vmlinux 0x44ef925f blk_bio_map_sg +EXPORT_SYMBOL vmlinux 0x44f5e8b5 of_allnodes +EXPORT_SYMBOL vmlinux 0x44f7929b qm_fq_new +EXPORT_SYMBOL vmlinux 0x450e4295 inet_select_addr +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x453d8b72 misc_register +EXPORT_SYMBOL vmlinux 0x4549f5d6 nf_log_unset +EXPORT_SYMBOL vmlinux 0x454bdee5 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x457aa3a1 soft_cursor +EXPORT_SYMBOL vmlinux 0x4596db6a sys_sigreturn +EXPORT_SYMBOL vmlinux 0x45a0bcd6 dev_load +EXPORT_SYMBOL vmlinux 0x45a6be13 cpufreq_sysfs_remove_file +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45bf7ed0 xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x45c012f4 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x45cc367f seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0x45e5aff3 netif_device_detach +EXPORT_SYMBOL vmlinux 0x4612c59d down_trylock +EXPORT_SYMBOL vmlinux 0x461ebfa0 __copy_tofrom_user +EXPORT_SYMBOL vmlinux 0x4626b647 pagevec_lookup +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +EXPORT_SYMBOL vmlinux 0x462b9e7e abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x4637a433 pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0x4638177f generic_read_dir +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46608fa0 getnstimeofday +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x468a27c4 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x468bcda6 cpumask_set_cpu_local_first +EXPORT_SYMBOL vmlinux 0x468d6324 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x46ae9991 netlink_set_err +EXPORT_SYMBOL vmlinux 0x46b55435 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x46c1147d qman_poll_slow +EXPORT_SYMBOL vmlinux 0x46d12956 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x46ffccee pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x471dee3c unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x473c5dd1 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x4785cb1d tty_unthrottle +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47a06b05 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x47a461be I_BDEV +EXPORT_SYMBOL vmlinux 0x47a4f3e6 blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0x47b3f862 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0x47bb9517 inet_frags_fini +EXPORT_SYMBOL vmlinux 0x47bcf84c param_set_ulong +EXPORT_SYMBOL vmlinux 0x47c8baf4 param_ops_uint +EXPORT_SYMBOL vmlinux 0x47ece0ed pme_ctx_ctrl_read_flow +EXPORT_SYMBOL vmlinux 0x47edb03b sockfd_lookup +EXPORT_SYMBOL vmlinux 0x47f1005a max8925_reg_read +EXPORT_SYMBOL vmlinux 0x48034724 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x48230027 bdgrab +EXPORT_SYMBOL vmlinux 0x482a2a49 param_set_charp +EXPORT_SYMBOL vmlinux 0x48404b9a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x4864407d key_put +EXPORT_SYMBOL vmlinux 0x48868118 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x48a771c5 cpu_core_map +EXPORT_SYMBOL vmlinux 0x48a97487 simple_write_begin +EXPORT_SYMBOL vmlinux 0x48b00000 xfrm_state_update +EXPORT_SYMBOL vmlinux 0x48c6db53 of_get_child_by_name +EXPORT_SYMBOL vmlinux 0x48fabfbf gen_new_estimator +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x4910fe50 ps2_init +EXPORT_SYMBOL vmlinux 0x491f775c __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x4932b48d sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x4945b592 set_bh_page +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x4965bdd5 netlink_capable +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49d0e972 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x49dd4d58 machine_id +EXPORT_SYMBOL vmlinux 0x49e1bf91 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x49f27caa generic_setlease +EXPORT_SYMBOL vmlinux 0x49fd4af1 inet6_release +EXPORT_SYMBOL vmlinux 0x4a358252 __bitmap_subset +EXPORT_SYMBOL vmlinux 0x4a442c85 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x4a5d5f5b __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0x4a6d6005 open_exec +EXPORT_SYMBOL vmlinux 0x4a7a1678 input_open_device +EXPORT_SYMBOL vmlinux 0x4a8589d7 __f_setown +EXPORT_SYMBOL vmlinux 0x4ac456d5 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4ad3d4d7 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x4af06ca6 pcim_enable_device +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b2f6b34 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x4b34fbf5 block_all_signals +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b666681 dquot_initialize +EXPORT_SYMBOL vmlinux 0x4b6cb659 km_state_notify +EXPORT_SYMBOL vmlinux 0x4b7ed27b sleep_on +EXPORT_SYMBOL vmlinux 0x4b806851 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x4b90572b inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x4b91626f __scm_send +EXPORT_SYMBOL vmlinux 0x4bb9ce93 blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0x4bc4de6d agp_copy_info +EXPORT_SYMBOL vmlinux 0x4bdb22fc cdrom_check_events +EXPORT_SYMBOL vmlinux 0x4bdcf394 unlock_buffer +EXPORT_SYMBOL vmlinux 0x4be85a03 memweight +EXPORT_SYMBOL vmlinux 0x4c04d3e1 __devm_request_region +EXPORT_SYMBOL vmlinux 0x4c11435a _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c1182cb bitmap_scnprintf +EXPORT_SYMBOL vmlinux 0x4c1ee241 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x4c27fd13 keyring_alloc +EXPORT_SYMBOL vmlinux 0x4c2ae700 strnstr +EXPORT_SYMBOL vmlinux 0x4c5e5e13 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x4c602731 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x4c8ee747 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL vmlinux 0x4ca6dcf0 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x4caeab0d gen10g_config_advert +EXPORT_SYMBOL vmlinux 0x4cb7552a tty_register_device +EXPORT_SYMBOL vmlinux 0x4cbbd171 __bitmap_weight +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4cefa237 mark_info_dirty +EXPORT_SYMBOL vmlinux 0x4cf2ed21 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x4d1086f2 serio_interrupt +EXPORT_SYMBOL vmlinux 0x4d37bb51 qdisc_reset +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d71004a __cpm2_setbrg +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4d9dcda5 qman_fqid_pool_destroy +EXPORT_SYMBOL vmlinux 0x4da20c63 inode_needs_sync +EXPORT_SYMBOL vmlinux 0x4da7c931 rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0x4db7bfdb neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x4dbd81da proc_create_data +EXPORT_SYMBOL vmlinux 0x4dc85eb0 sg_miter_stop +EXPORT_SYMBOL vmlinux 0x4dcf7626 dev_add_pack +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4dec6038 memscan +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4dfed71c flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x4e28b535 sock_create_lite +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e38a2d9 napi_complete +EXPORT_SYMBOL vmlinux 0x4e4cdcc4 eth_mac_addr +EXPORT_SYMBOL vmlinux 0x4e620d70 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0x4e671dda block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6ac869 mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e786d13 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0x4e830a3e strnicmp +EXPORT_SYMBOL vmlinux 0x4e8ff237 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x4e92d242 i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0x4e9dffb5 ip_fast_csum +EXPORT_SYMBOL vmlinux 0x4ea6bc8f netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x4eb2f02a misc_deregister +EXPORT_SYMBOL vmlinux 0x4eb98943 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x4ed83d54 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x4edb0a03 neigh_table_init +EXPORT_SYMBOL vmlinux 0x4f177ef7 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f248523 of_find_node_by_name +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f4b8a05 skb_copy_datagram_iovec +EXPORT_SYMBOL vmlinux 0x4f60bcf2 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x4f60e09c mmc_hw_reset_check +EXPORT_SYMBOL vmlinux 0x4f68cb1a padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f69ea64 vfs_writev +EXPORT_SYMBOL vmlinux 0x4f844801 dma_sync_wait +EXPORT_SYMBOL vmlinux 0x4f86c616 single_release +EXPORT_SYMBOL vmlinux 0x4f899627 vfs_statfs +EXPORT_SYMBOL vmlinux 0x4f937cae __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x4f96a038 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0x4f9c55b9 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0x4fafc59c filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x4fb7cff6 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x4fcd68a2 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4fe99583 atomic64_dec_if_positive +EXPORT_SYMBOL vmlinux 0x4ff2ab86 pci_pme_capable +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x50168b8e mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x50196e72 bh_submit_read +EXPORT_SYMBOL vmlinux 0x5028314a revalidate_disk +EXPORT_SYMBOL vmlinux 0x50384baf vgacon_remap_base +EXPORT_SYMBOL vmlinux 0x504d0510 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x5054adb8 dma_common_mmap +EXPORT_SYMBOL vmlinux 0x50645d3c tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x506c7ab8 phy_detach +EXPORT_SYMBOL vmlinux 0x50861cb7 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x50980d18 ppp_channel_index +EXPORT_SYMBOL vmlinux 0x509817cf vprintk_emit +EXPORT_SYMBOL vmlinux 0x50ae7d80 __idr_pre_get +EXPORT_SYMBOL vmlinux 0x50ea9977 register_filesystem +EXPORT_SYMBOL vmlinux 0x5103b082 freeze_bdev +EXPORT_SYMBOL vmlinux 0x51131e8b put_io_context +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x5123139c __sb_end_write +EXPORT_SYMBOL vmlinux 0x51243084 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x512459e6 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x5142a919 set_nlink +EXPORT_SYMBOL vmlinux 0x51432596 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x51548987 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0x515e24a7 flush_instruction_cache +EXPORT_SYMBOL vmlinux 0x51777351 follow_down_one +EXPORT_SYMBOL vmlinux 0x51818a70 md_error +EXPORT_SYMBOL vmlinux 0x519b0da3 finish_wait +EXPORT_SYMBOL vmlinux 0x51a84618 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x51bb9013 key_unlink +EXPORT_SYMBOL vmlinux 0x51c93ad0 fm_get_rtc_handle +EXPORT_SYMBOL vmlinux 0x51cebbcf block_write_end +EXPORT_SYMBOL vmlinux 0x51dce73b xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x51e7797d blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0x51ef33b8 kstrndup +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x520518f9 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x5218641b get_fs_type +EXPORT_SYMBOL vmlinux 0x521a21ef bdev_read_only +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x52281c01 blk_free_tags +EXPORT_SYMBOL vmlinux 0x522b92af sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL vmlinux 0x527bfacc tcp_syn_flood_action +EXPORT_SYMBOL vmlinux 0x527c3c76 user_path_create +EXPORT_SYMBOL vmlinux 0x528c709d simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x528de627 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x52ada15b sock_setsockopt +EXPORT_SYMBOL vmlinux 0x5313572a netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0x532d3b37 bio_phys_segments +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x534b3bca inet_bind +EXPORT_SYMBOL vmlinux 0x538a8811 fget_light +EXPORT_SYMBOL vmlinux 0x53b257b2 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x53bb01e2 vm_stat +EXPORT_SYMBOL vmlinux 0x53c770c4 follow_down +EXPORT_SYMBOL vmlinux 0x53ebab1b _outsl_ns +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x540c239d of_dev_get +EXPORT_SYMBOL vmlinux 0x5412c7c7 up +EXPORT_SYMBOL vmlinux 0x54132316 mmc_cache_ctrl +EXPORT_SYMBOL vmlinux 0x5422015c vfs_mknod +EXPORT_SYMBOL vmlinux 0x542ce589 mmc_can_discard +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x5449ac61 invalidate_bdev +EXPORT_SYMBOL vmlinux 0x544f46a7 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x545838ee splice_from_pipe_begin +EXPORT_SYMBOL vmlinux 0x545c542c scsi_reset_provider +EXPORT_SYMBOL vmlinux 0x546e4ec8 blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x5489312b filemap_flush +EXPORT_SYMBOL vmlinux 0x548cb517 bman_poll +EXPORT_SYMBOL vmlinux 0x54a4e9b8 input_reset_device +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54c3de15 skb_copy +EXPORT_SYMBOL vmlinux 0x54c9dc8e qman_fq_fqid +EXPORT_SYMBOL vmlinux 0x54ca85f9 pci_get_subsys +EXPORT_SYMBOL vmlinux 0x54e3cc3b param_get_int +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54fea01f pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x5511556c dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x551a7a6a tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x55410bb9 devfreq_add_device +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x5549253a tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x555ded57 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x555ef355 seq_printf +EXPORT_SYMBOL vmlinux 0x55660527 dev_set_drvdata +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x5568c553 complete +EXPORT_SYMBOL vmlinux 0x556a2934 filemap_fault +EXPORT_SYMBOL vmlinux 0x556bf51d blk_mq_free_single_hw_queue +EXPORT_SYMBOL vmlinux 0x556c2740 hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x55770bc8 __quota_error +EXPORT_SYMBOL vmlinux 0x5577ef9e udp_table +EXPORT_SYMBOL vmlinux 0x5581c40c kill_pid +EXPORT_SYMBOL vmlinux 0x5594be03 bitmap_remap +EXPORT_SYMBOL vmlinux 0x55b2a5ac ip_options_compile +EXPORT_SYMBOL vmlinux 0x55b75947 dquot_file_open +EXPORT_SYMBOL vmlinux 0x55dfc113 skb_copy_datagram_from_iovec +EXPORT_SYMBOL vmlinux 0x55f31d41 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x55ff6494 block_read_full_page +EXPORT_SYMBOL vmlinux 0x56016b8f _dev_info +EXPORT_SYMBOL vmlinux 0x5614b010 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x563c8e1a security_path_symlink +EXPORT_SYMBOL vmlinux 0x5642793a radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x567ee4c3 noop_fsync +EXPORT_SYMBOL vmlinux 0x56a10071 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x56a10763 csum_tcpudp_magic +EXPORT_SYMBOL vmlinux 0x56a17932 gen10g_resume +EXPORT_SYMBOL vmlinux 0x56a3334c skb_checksum +EXPORT_SYMBOL vmlinux 0x56bf5cf7 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56f4d3a7 __destroy_inode +EXPORT_SYMBOL vmlinux 0x56fbaaab fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0x5709f87d get_io_context +EXPORT_SYMBOL vmlinux 0x570fc001 ip_fragment +EXPORT_SYMBOL vmlinux 0x5719f25d mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x573eb4f2 inet_recvmsg +EXPORT_SYMBOL vmlinux 0x5752dde8 submit_bh +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x575af70c on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x57649614 finish_no_open +EXPORT_SYMBOL vmlinux 0x57665bf8 put_page +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x5785384a flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x5786f4d4 simple_statfs +EXPORT_SYMBOL vmlinux 0x57883c00 agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0x579f65c8 pme_fd_cmd_fcr +EXPORT_SYMBOL vmlinux 0x579fbcd2 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0x57b332de vlan_vid_del +EXPORT_SYMBOL vmlinux 0x57de83d3 pci_disable_ltr +EXPORT_SYMBOL vmlinux 0x57ea142d poll_initwait +EXPORT_SYMBOL vmlinux 0x57ea5bf9 mpage_writepages +EXPORT_SYMBOL vmlinux 0x57ff2a2d arp_tbl +EXPORT_SYMBOL vmlinux 0x5808e20e kthread_stop +EXPORT_SYMBOL vmlinux 0x5814e055 bm_pool_free +EXPORT_SYMBOL vmlinux 0x582a4747 cacheable_memcpy +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x58623807 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x586ee1e3 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x5877d8ef qman_static_dequeue_add +EXPORT_SYMBOL vmlinux 0x587ba12c sk_alloc +EXPORT_SYMBOL vmlinux 0x5883d326 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x58accf66 block_invalidatepage +EXPORT_SYMBOL vmlinux 0x58ad8892 pci_get_device +EXPORT_SYMBOL vmlinux 0x58d1070a of_get_address +EXPORT_SYMBOL vmlinux 0x58deaed3 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x58f15678 write_cache_pages +EXPORT_SYMBOL vmlinux 0x58f429d4 vfs_read +EXPORT_SYMBOL vmlinux 0x591241d0 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x5920c091 sk_free +EXPORT_SYMBOL vmlinux 0x59237c5d agp_allocate_memory +EXPORT_SYMBOL vmlinux 0x593a90e9 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x595d0946 empty_zero_page +EXPORT_SYMBOL vmlinux 0x597626cf vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x597e39a9 generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x59b3378a completion_done +EXPORT_SYMBOL vmlinux 0x59b44ff6 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x59f0fb56 bdi_unregister +EXPORT_SYMBOL vmlinux 0x5a12550e inet_getname +EXPORT_SYMBOL vmlinux 0x5a28edca mntput +EXPORT_SYMBOL vmlinux 0x5a36523e pme_ctx_ctrl_nop +EXPORT_SYMBOL vmlinux 0x5a3e8aa2 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x5a4a1ffe padata_stop +EXPORT_SYMBOL vmlinux 0x5a5536c2 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x5a725a67 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x5aa754d3 security_file_permission +EXPORT_SYMBOL vmlinux 0x5ab67931 do_IRQ +EXPORT_SYMBOL vmlinux 0x5aba11a1 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0x5ac4cc31 tty_unlock_pair +EXPORT_SYMBOL vmlinux 0x5ac91449 devm_gpiod_put +EXPORT_SYMBOL vmlinux 0x5ad1f99d dquot_get_dqinfo +EXPORT_SYMBOL vmlinux 0x5b01bed8 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x5b18b697 __memcg_kmem_get_cache +EXPORT_SYMBOL vmlinux 0x5b19634d div_s64_rem +EXPORT_SYMBOL vmlinux 0x5b2b40cd get_gendisk +EXPORT_SYMBOL vmlinux 0x5b2c7574 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x5b3089a4 elv_add_request +EXPORT_SYMBOL vmlinux 0x5b372653 rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0x5b39988e ftrace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x5b3fa0db set_bdi_congested +EXPORT_SYMBOL vmlinux 0x5b424bd3 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x5b42712a blk_mq_alloc_single_hw_queue +EXPORT_SYMBOL vmlinux 0x5b615646 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0x5b7b8de1 vm_mmap +EXPORT_SYMBOL vmlinux 0x5b935439 pci_enable_msix +EXPORT_SYMBOL vmlinux 0x5b98283a dev_printk +EXPORT_SYMBOL vmlinux 0x5b9828c5 dma_spin_lock +EXPORT_SYMBOL vmlinux 0x5bb58389 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x5bd161a6 key_link +EXPORT_SYMBOL vmlinux 0x5bf63794 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0x5c06437b unregister_key_type +EXPORT_SYMBOL vmlinux 0x5c1c7781 mnt_unpin +EXPORT_SYMBOL vmlinux 0x5c320958 ps2_drain +EXPORT_SYMBOL vmlinux 0x5c37f319 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x5c3b07b9 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x5c3fcec6 bio_advance +EXPORT_SYMBOL vmlinux 0x5c5f7fec tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x5c68c4a9 get_thermal_instance +EXPORT_SYMBOL vmlinux 0x5c6c09a3 __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x5c77a8f7 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0x5ca045e9 __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x5cad600f find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x5cc04511 devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0x5ce0c840 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x5ced1227 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5d2c94d1 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x5d41a0d4 scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x5d41c87c param_ops_charp +EXPORT_SYMBOL vmlinux 0x5d4bba59 touch_atime +EXPORT_SYMBOL vmlinux 0x5d4f363c pci_find_bus +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d58efa0 convert_ifc_address +EXPORT_SYMBOL vmlinux 0x5d5b5a16 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x5d60ca62 km_report +EXPORT_SYMBOL vmlinux 0x5d6b2fc7 skb_split +EXPORT_SYMBOL vmlinux 0x5d6bdce1 flex_array_alloc +EXPORT_SYMBOL vmlinux 0x5d8e0c0b pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0x5d9428e0 netpoll_rx_disable +EXPORT_SYMBOL vmlinux 0x5da27d8b make_kuid +EXPORT_SYMBOL vmlinux 0x5daeebdd phy_connect_direct +EXPORT_SYMBOL vmlinux 0x5db46543 simple_transaction_read +EXPORT_SYMBOL vmlinux 0x5dcd3280 md_flush_request +EXPORT_SYMBOL vmlinux 0x5ddf9f7d dev_uc_add +EXPORT_SYMBOL vmlinux 0x5e0b9d1c xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x5e15425b tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0x5e1b4951 release_firmware +EXPORT_SYMBOL vmlinux 0x5e27321b register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x5e3a8a9c __wake_up +EXPORT_SYMBOL vmlinux 0x5e67450c nf_register_hooks +EXPORT_SYMBOL vmlinux 0x5e80dda8 nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL vmlinux 0x5e945e53 pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5eaf1de9 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x5eb0401e proc_dostring +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ec9524d dev_emerg +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5edc4a40 ata_link_printk +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f050298 arp_create +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f115a9a audit_log_task_info +EXPORT_SYMBOL vmlinux 0x5f1eec36 __netif_schedule +EXPORT_SYMBOL vmlinux 0x5f28c2dc idr_remove +EXPORT_SYMBOL vmlinux 0x5f3aed9a input_allocate_device +EXPORT_SYMBOL vmlinux 0x5f3c8f5c mmc_assume_removable +EXPORT_SYMBOL vmlinux 0x5f421c6e scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x5f471e16 validate_sp +EXPORT_SYMBOL vmlinux 0x5f5c8128 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x5f68684c netdev_alert +EXPORT_SYMBOL vmlinux 0x5f6a5a68 pci_reenable_device +EXPORT_SYMBOL vmlinux 0x5f752c1d of_device_unregister +EXPORT_SYMBOL vmlinux 0x5f754e5a memset +EXPORT_SYMBOL vmlinux 0x5f7a5907 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x5f8a2728 isa_io_base +EXPORT_SYMBOL vmlinux 0x5f9e6a8e neigh_update +EXPORT_SYMBOL vmlinux 0x5facace0 mdiobus_scan +EXPORT_SYMBOL vmlinux 0x5fb16430 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x5fb9a589 zero_fill_bio +EXPORT_SYMBOL vmlinux 0x5fc7ad92 from_kuid +EXPORT_SYMBOL vmlinux 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x603adb2a dev_addr_flush +EXPORT_SYMBOL vmlinux 0x60417379 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x604636f1 netdev_lower_dev_get_private_rcu +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x6086fae9 rwsem_wake +EXPORT_SYMBOL vmlinux 0x60920061 kmap_high +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60b86f61 sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x60b87ec4 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60f38ce3 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x60f8c21f atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x610ea147 abort_creds +EXPORT_SYMBOL vmlinux 0x6121c58f bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x612390ad netpoll_set_trap +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x6150462f dst_release +EXPORT_SYMBOL vmlinux 0x61538ad0 param_get_charp +EXPORT_SYMBOL vmlinux 0x615eec54 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x61666969 generic_make_request +EXPORT_SYMBOL vmlinux 0x6191299c i2c_transfer +EXPORT_SYMBOL vmlinux 0x61a2abc9 file_remove_suid +EXPORT_SYMBOL vmlinux 0x61a3c128 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x61b4c268 bman_poll_slow +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61e6d3d5 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x61e7c6d1 neigh_compat_output +EXPORT_SYMBOL vmlinux 0x61e8fad3 cdev_alloc +EXPORT_SYMBOL vmlinux 0x61ea5a38 flush_dcache_page +EXPORT_SYMBOL vmlinux 0x61eef2c9 _insb +EXPORT_SYMBOL vmlinux 0x61fb5121 follow_up +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x6217bac0 agp_free_memory +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x6230284a generic_ro_fops +EXPORT_SYMBOL vmlinux 0x62480c0a have_submounts +EXPORT_SYMBOL vmlinux 0x62538167 slhc_toss +EXPORT_SYMBOL vmlinux 0x626ad07a tcp_prot +EXPORT_SYMBOL vmlinux 0x627254ac mem_map +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62822d05 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x629164c9 dev_alloc_name +EXPORT_SYMBOL vmlinux 0x629c2143 skb_append +EXPORT_SYMBOL vmlinux 0x62e259d4 d_find_alias +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x631b281c mdiobus_free +EXPORT_SYMBOL vmlinux 0x63231951 gen_pool_create +EXPORT_SYMBOL vmlinux 0x63385cc3 starget_for_each_device +EXPORT_SYMBOL vmlinux 0x633b86a8 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x63428546 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x63478134 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x634d8020 qman_enqueue_orp +EXPORT_SYMBOL vmlinux 0x636e4ec5 dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x63939617 ipmi_smi_watcher_register +EXPORT_SYMBOL vmlinux 0x63cacee0 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x63cbd862 serio_unregister_port +EXPORT_SYMBOL vmlinux 0x63cc6c52 pme_map_error +EXPORT_SYMBOL vmlinux 0x63ccc627 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x64094895 pci_read_vpd +EXPORT_SYMBOL vmlinux 0x64143813 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x641b22b0 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x6437b09e pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0x6457c160 blk_mq_init_commands +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64a4b84d cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x64db7cd7 phy_device_create +EXPORT_SYMBOL vmlinux 0x64de081e md_write_end +EXPORT_SYMBOL vmlinux 0x64e6e5dc vfs_unlink +EXPORT_SYMBOL vmlinux 0x64ec81e3 update_devfreq +EXPORT_SYMBOL vmlinux 0x64ef1953 sock_sendmsg +EXPORT_SYMBOL vmlinux 0x64f5bf80 pci_map_rom +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x652e2784 vfs_rename +EXPORT_SYMBOL vmlinux 0x653237f3 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x65400222 __irq_offset_value +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x6565d33f scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x6585e310 alloc_pages_exact_nid +EXPORT_SYMBOL vmlinux 0x65b60fb2 insert_inode_locked +EXPORT_SYMBOL vmlinux 0x65bb58a2 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65e3ea9d serio_open +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x65fb9f84 ps2_begin_command +EXPORT_SYMBOL vmlinux 0x65fbef10 seq_path +EXPORT_SYMBOL vmlinux 0x66029b36 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x6604c290 simple_rmdir +EXPORT_SYMBOL vmlinux 0x661b8ff8 pci_target_state +EXPORT_SYMBOL vmlinux 0x6621ca58 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x66536fba remove_arg_zero +EXPORT_SYMBOL vmlinux 0x665e4609 vga_put +EXPORT_SYMBOL vmlinux 0x66822f06 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x6687e69a blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x668da8d5 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x66b596f9 __sk_dst_check +EXPORT_SYMBOL vmlinux 0x66b9ca3f vfs_link +EXPORT_SYMBOL vmlinux 0x66be8713 devfreq_interval_update +EXPORT_SYMBOL vmlinux 0x66de4e48 phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x66e19382 kill_pgrp +EXPORT_SYMBOL vmlinux 0x670db6cb genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x67190995 input_set_keycode +EXPORT_SYMBOL vmlinux 0x672f7a69 audit_log +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x67426eb3 fm_get_mem_region +EXPORT_SYMBOL vmlinux 0x67512aab path_put +EXPORT_SYMBOL vmlinux 0x675b1fc2 bman_get_portal_config +EXPORT_SYMBOL vmlinux 0x675b8f61 param_get_string +EXPORT_SYMBOL vmlinux 0x6776df85 pci_match_id +EXPORT_SYMBOL vmlinux 0x67871e7d truncate_pagecache +EXPORT_SYMBOL vmlinux 0x678af300 ___pskb_trim +EXPORT_SYMBOL vmlinux 0x679a1016 create_syslog_header +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67b830f7 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL vmlinux 0x67ce3108 xfrm_state_add +EXPORT_SYMBOL vmlinux 0x67d0bfca tty_unregister_device +EXPORT_SYMBOL vmlinux 0x67d71a44 vm_event_states +EXPORT_SYMBOL vmlinux 0x67e65643 tcp_prequeue +EXPORT_SYMBOL vmlinux 0x6807af94 dev_close +EXPORT_SYMBOL vmlinux 0x68113f73 mutex_trylock +EXPORT_SYMBOL vmlinux 0x68406323 __invalidate_device +EXPORT_SYMBOL vmlinux 0x6849a15f flex_array_clear +EXPORT_SYMBOL vmlinux 0x684e4e68 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x68609857 complete_and_exit +EXPORT_SYMBOL vmlinux 0x68728470 genphy_update_link +EXPORT_SYMBOL vmlinux 0x6872de32 inode_get_bytes +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x68809ca9 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x689f4994 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68bcf286 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x68e05d57 getrawmonotonic +EXPORT_SYMBOL vmlinux 0x68eb9a47 padata_add_cpu +EXPORT_SYMBOL vmlinux 0x69208bbb blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x693933d2 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x6967085e blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x69749e53 inode_permission +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69cd3f5f udplite_prot +EXPORT_SYMBOL vmlinux 0x69d133a0 __module_get +EXPORT_SYMBOL vmlinux 0x69d38ed9 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x69d7e5b8 __debugger_ipi +EXPORT_SYMBOL vmlinux 0x69e27c7a bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a23ed4d single_open_size +EXPORT_SYMBOL vmlinux 0x6a3f4119 mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a61f874 to_tm +EXPORT_SYMBOL vmlinux 0x6a740c54 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a80a3f5 cpm_muram_free +EXPORT_SYMBOL vmlinux 0x6a8c3864 read_code +EXPORT_SYMBOL vmlinux 0x6a8e005a mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6ace7316 get_task_io_context +EXPORT_SYMBOL vmlinux 0x6addccbe dump_align +EXPORT_SYMBOL vmlinux 0x6ae6f8b0 led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0x6af7422c pm860x_page_bulk_write +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b2548b2 default_file_splice_read +EXPORT_SYMBOL vmlinux 0x6b2dbc0e register_md_personality +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b7a8cbf skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x6b7f1917 idr_find_slowpath +EXPORT_SYMBOL vmlinux 0x6b8029e9 generic_file_buffered_write +EXPORT_SYMBOL vmlinux 0x6b913512 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0x6b976719 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x6bacd6bd scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bc575a7 inet_accept +EXPORT_SYMBOL vmlinux 0x6bceaebc gen_replace_estimator +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6beb2078 param_set_copystring +EXPORT_SYMBOL vmlinux 0x6c0b0ecd ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c2faee3 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x6c3c047e pme_ctx_exclusive_inc +EXPORT_SYMBOL vmlinux 0x6c3eaa57 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x6c48f6c0 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c63f079 i2c_del_driver +EXPORT_SYMBOL vmlinux 0x6c665691 flex_array_shrink +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c9e0720 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x6ca1d1a4 atomic64_read +EXPORT_SYMBOL vmlinux 0x6ca5b0f8 __net_get_random_once +EXPORT_SYMBOL vmlinux 0x6cbbaa6e mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x6cbf6ba6 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d27ef64 __bitmap_empty +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d2eb1e6 __skb_get_hash +EXPORT_SYMBOL vmlinux 0x6d456af5 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x6d4a7375 __sb_start_write +EXPORT_SYMBOL vmlinux 0x6d6af3cc locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x6d824d59 arp_invalidate +EXPORT_SYMBOL vmlinux 0x6da928f4 _insw_ns +EXPORT_SYMBOL vmlinux 0x6db57346 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x6dd59d58 blk_run_queue +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df142ad __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0x6df98dc6 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x6dfdf7ba udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x6e058f36 ip6_frag_match +EXPORT_SYMBOL vmlinux 0x6e0af026 iterate_mounts +EXPORT_SYMBOL vmlinux 0x6e0ef838 inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0x6e1d35ac input_close_device +EXPORT_SYMBOL vmlinux 0x6e379526 kernstart_addr +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e764332 idr_destroy +EXPORT_SYMBOL vmlinux 0x6e8a5dd6 dev_add_offload +EXPORT_SYMBOL vmlinux 0x6eb74dff proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x6ebc5149 param_ops_long +EXPORT_SYMBOL vmlinux 0x6ec096aa napi_gro_receive +EXPORT_SYMBOL vmlinux 0x6ec530c0 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x6ecb2bd7 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x6ecfbe66 arp_xmit +EXPORT_SYMBOL vmlinux 0x6ed9dbd4 input_grab_device +EXPORT_SYMBOL vmlinux 0x6ee0c6e0 led_blink_set +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f268538 bman_acquire +EXPORT_SYMBOL vmlinux 0x6f269e95 brioctl_set +EXPORT_SYMBOL vmlinux 0x6f2c72fc input_unregister_handler +EXPORT_SYMBOL vmlinux 0x6f645a5c module_layout +EXPORT_SYMBOL vmlinux 0x6f798356 dcache_dir_close +EXPORT_SYMBOL vmlinux 0x6f85b211 ida_remove +EXPORT_SYMBOL vmlinux 0x6f8bebd8 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x6f91df19 seq_bitmap_list +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x700071f9 elevator_alloc +EXPORT_SYMBOL vmlinux 0x70099837 netif_napi_add +EXPORT_SYMBOL vmlinux 0x700a41fe scsi_dma_map +EXPORT_SYMBOL vmlinux 0x70173efe pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x7029199d dquot_enable +EXPORT_SYMBOL vmlinux 0x7045dea9 qman_modify_cgr +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x70a9f1d7 kernel_getpeername +EXPORT_SYMBOL vmlinux 0x70acd365 tcp_gro_receive +EXPORT_SYMBOL vmlinux 0x70bc17d7 inode_wait +EXPORT_SYMBOL vmlinux 0x70cbf8ae generic_file_splice_write +EXPORT_SYMBOL vmlinux 0x70d053fd try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0x70d888b7 __debugger_fault_handler +EXPORT_SYMBOL vmlinux 0x70e181c0 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x71338a86 __blk_end_request +EXPORT_SYMBOL vmlinux 0x713a2718 do_sync_write +EXPORT_SYMBOL vmlinux 0x71545786 dcache_dir_open +EXPORT_SYMBOL vmlinux 0x715d78a5 dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x716dd19c i8042_install_filter +EXPORT_SYMBOL vmlinux 0x716ffef6 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x7180b2c0 qman_delete_cgr +EXPORT_SYMBOL vmlinux 0x719936ba ppp_input +EXPORT_SYMBOL vmlinux 0x71a240c5 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71a9e904 truncate_setsize +EXPORT_SYMBOL vmlinux 0x71af0c20 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x71c90087 memcmp +EXPORT_SYMBOL vmlinux 0x71cf7345 tcp_init_sock +EXPORT_SYMBOL vmlinux 0x71dda9e8 scsi_cmd_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x71e8cf2f tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x71f65175 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0x71f8e216 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x71fed9a3 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x7203ecc3 pci_domain_nr +EXPORT_SYMBOL vmlinux 0x72072325 vm_map_ram +EXPORT_SYMBOL vmlinux 0x721f816b of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x7235ece8 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x7237a039 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x7239220d backlight_device_register +EXPORT_SYMBOL vmlinux 0x723bb829 dqput +EXPORT_SYMBOL vmlinux 0x7249f32a scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x724d1f32 __breadahead +EXPORT_SYMBOL vmlinux 0x72530e99 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x7262cf89 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x728ce230 qm_fq_free_flags +EXPORT_SYMBOL vmlinux 0x72a70b7f pme_ctx_scan_orp +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72b5b2b7 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x72d4c23c fsl_get_sys_freq +EXPORT_SYMBOL vmlinux 0x72d58de9 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x72d89d69 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72f82974 pci_dev_driver +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x7318e8b5 fb_find_mode +EXPORT_SYMBOL vmlinux 0x731b9eb5 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x733b2383 next_tlbcam_idx +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x7349ff53 __neigh_create +EXPORT_SYMBOL vmlinux 0x73540ea3 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x735d8503 add_wait_queue +EXPORT_SYMBOL vmlinux 0x736b1233 dev_addr_init +EXPORT_SYMBOL vmlinux 0x736fd5f9 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x737de5e9 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x73bc4b2e padata_do_parallel +EXPORT_SYMBOL vmlinux 0x73c1a102 sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x73c7b067 mapping_tagged +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x73e32c6e tcf_hash_search +EXPORT_SYMBOL vmlinux 0x74000c53 input_flush_device +EXPORT_SYMBOL vmlinux 0x74017fa2 of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0x741b5b20 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x7469fcfe radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x7470a7d7 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x7480b7c1 dev_alert +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x74884158 qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0x7499b38b inode_set_bytes +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74ce05b8 flush_delayed_work +EXPORT_SYMBOL vmlinux 0x74d37349 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x750e952b dump_skip +EXPORT_SYMBOL vmlinux 0x7519d137 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x751c2917 __wait_on_bit +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x754dac78 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x756dd160 start_thread +EXPORT_SYMBOL vmlinux 0x7573dec2 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0x757f088f cpm_muram_offset +EXPORT_SYMBOL vmlinux 0x758e9beb sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x7593d385 div64_s64 +EXPORT_SYMBOL vmlinux 0x75986e6f ipv6_dev_get_saddr +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 0x75d36cc4 dev_notice +EXPORT_SYMBOL vmlinux 0x75f27532 seq_release +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x760a74b6 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x7612bbcb of_phy_find_device +EXPORT_SYMBOL vmlinux 0x7617fd50 generic_writepages +EXPORT_SYMBOL vmlinux 0x761be191 try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x762b5490 key_type_keyring +EXPORT_SYMBOL vmlinux 0x7630bbe2 mutex_unlock +EXPORT_SYMBOL vmlinux 0x763bb0c9 tcp_child_process +EXPORT_SYMBOL vmlinux 0x763d4b2e get_pci_dma_ops +EXPORT_SYMBOL vmlinux 0x763f47cc find_vma +EXPORT_SYMBOL vmlinux 0x764210b1 dquot_destroy +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x765c7991 inode_init_once +EXPORT_SYMBOL vmlinux 0x766c783f tcp_proc_register +EXPORT_SYMBOL vmlinux 0x76843c58 fm_port_enable +EXPORT_SYMBOL vmlinux 0x769e06d7 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x76bf656d __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x76bffdde page_put_link +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76e27581 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x76e430a9 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x76e78974 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x76eeb31e inet_frags_init +EXPORT_SYMBOL vmlinux 0x76f234b1 ktime_get_clocktai +EXPORT_SYMBOL vmlinux 0x770e043a complete_request_key +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x7739d181 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x773ab3d0 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x773c3efc noop_llseek +EXPORT_SYMBOL vmlinux 0x7745cb69 dquot_alloc +EXPORT_SYMBOL vmlinux 0x7749823f wake_up_process +EXPORT_SYMBOL vmlinux 0x776d126c twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x7770dabf dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x777d96f6 blk_mq_run_queues +EXPORT_SYMBOL vmlinux 0x777f0104 bdi_register_dev +EXPORT_SYMBOL vmlinux 0x77920e50 generic_file_aio_read +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77b851c4 cacheable_memzero +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77bc6c3c scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x77dcb1a4 igrab +EXPORT_SYMBOL vmlinux 0x77df0847 __set_personality +EXPORT_SYMBOL vmlinux 0x77ecac9f zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x780a9f2d tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x782567ec memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x782dc2a2 scsi_put_command +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x784a89b0 max8998_update_reg +EXPORT_SYMBOL vmlinux 0x787ed23f uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78cad38f tcf_em_register +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78dfdd9f pme_hw_residue_free +EXPORT_SYMBOL vmlinux 0x78e087e0 flush_tlb_page +EXPORT_SYMBOL vmlinux 0x78e590c8 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0x78ece478 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x78f45450 bio_init +EXPORT_SYMBOL vmlinux 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL vmlinux 0x78febcf9 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x790df6ca __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x79167b5c ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x791e1f15 inetdev_by_index +EXPORT_SYMBOL vmlinux 0x7930d225 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0x796c1c7b kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x797f0131 ata_std_end_eh +EXPORT_SYMBOL vmlinux 0x798aa1ec vfs_readlink +EXPORT_SYMBOL vmlinux 0x798e3164 fm_port_get_handle +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79cac480 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x79d25a15 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x79e70346 i2c_verify_client +EXPORT_SYMBOL vmlinux 0x79fbf0a9 dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0x7a14b05d d_prune_aliases +EXPORT_SYMBOL vmlinux 0x7a188791 prandom_bytes +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a2e4fe8 get_write_access +EXPORT_SYMBOL vmlinux 0x7a35f47a elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a8e6ebe kobject_init +EXPORT_SYMBOL vmlinux 0x7a91726b clkdev_alloc +EXPORT_SYMBOL vmlinux 0x7a925833 cpufreq_get_global_kobject +EXPORT_SYMBOL vmlinux 0x7a975daf tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7aa43557 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7acf9211 wait_on_sync_kiocb +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7af06d34 phy_init_eee +EXPORT_SYMBOL vmlinux 0x7af950ee generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x7afa89fc vsnprintf +EXPORT_SYMBOL vmlinux 0x7b0d56b4 generic_readlink +EXPORT_SYMBOL vmlinux 0x7b0d6113 skb_tx_error +EXPORT_SYMBOL vmlinux 0x7b1ade38 lz4_decompress +EXPORT_SYMBOL vmlinux 0x7b3f7861 alloc_disk +EXPORT_SYMBOL vmlinux 0x7b506bb0 agp_collect_device_status +EXPORT_SYMBOL vmlinux 0x7b5470bc fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x7b59dee7 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b5d5ec9 tc_classify +EXPORT_SYMBOL vmlinux 0x7b794050 kmalloc_caches +EXPORT_SYMBOL vmlinux 0x7bc1a235 phy_connect +EXPORT_SYMBOL vmlinux 0x7be0e07d security_path_rename +EXPORT_SYMBOL vmlinux 0x7be4827c pci_dram_offset +EXPORT_SYMBOL vmlinux 0x7c003aef _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c455a2d pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c67618c inet_sendmsg +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 0x7cb7d327 inode_change_ok +EXPORT_SYMBOL vmlinux 0x7cbc0b12 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x7cc210fd generic_block_bmap +EXPORT_SYMBOL vmlinux 0x7cc3579f netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x7cc578da param_get_long +EXPORT_SYMBOL vmlinux 0x7cd304e7 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7ce323cd pcim_iounmap +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d3448b9 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x7d7f5fc6 ftrace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0x7d8574ca key_payload_reserve +EXPORT_SYMBOL vmlinux 0x7d938e9f xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x7db7c781 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x7db7d98f kfree_skb +EXPORT_SYMBOL vmlinux 0x7dbb5d9a blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x7dc0e109 idr_get_next +EXPORT_SYMBOL vmlinux 0x7dd71ade flush_tlb_range +EXPORT_SYMBOL vmlinux 0x7dd92a1b lro_receive_skb +EXPORT_SYMBOL vmlinux 0x7de7c35b security_d_instantiate +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7e0d17c5 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x7e394c4e sysctl_local_reserved_ports +EXPORT_SYMBOL vmlinux 0x7e49f281 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0x7e510ae3 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x7e8360a6 read_dev_sector +EXPORT_SYMBOL vmlinux 0x7e87227e slhc_compress +EXPORT_SYMBOL vmlinux 0x7ea2a6b7 dquot_commit +EXPORT_SYMBOL vmlinux 0x7eba59ba sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x7ec7d574 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0x7ecb001b __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x7ed4836a vfs_symlink +EXPORT_SYMBOL vmlinux 0x7ee73c0c memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0x7efc2d09 unregister_cdrom +EXPORT_SYMBOL vmlinux 0x7f0b2960 qman_fqid_pool_create +EXPORT_SYMBOL vmlinux 0x7f156189 add_disk +EXPORT_SYMBOL vmlinux 0x7f174649 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0x7f1e3f55 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f271356 skb_unlink +EXPORT_SYMBOL vmlinux 0x7f33478e nf_reinject +EXPORT_SYMBOL vmlinux 0x7f508eb1 generic_delete_inode +EXPORT_SYMBOL vmlinux 0x7f51aa5d add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x7f5414e1 powerpc_debugfs_root +EXPORT_SYMBOL vmlinux 0x7f57303e neigh_direct_output +EXPORT_SYMBOL vmlinux 0x7f9074ef __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x7fb14feb writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7ff91954 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x80049c50 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x8008ba9b pci_set_ltr +EXPORT_SYMBOL vmlinux 0x80110b18 inet_shutdown +EXPORT_SYMBOL vmlinux 0x804f922a ipmi_addr_length +EXPORT_SYMBOL vmlinux 0x8051f19f scsi_prep_return +EXPORT_SYMBOL vmlinux 0x80625b97 inet_add_offload +EXPORT_SYMBOL vmlinux 0x80aeff92 seq_write +EXPORT_SYMBOL vmlinux 0x80b778c0 devm_ioremap_prot +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80ce8454 scsi_setup_blk_pc_cmnd +EXPORT_SYMBOL vmlinux 0x80cfc5b4 inet_sendpage +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80e30edb tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x80f810f5 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x810e310a tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x811654d5 prepare_binprm +EXPORT_SYMBOL vmlinux 0x811a8437 sk_mc_loop +EXPORT_SYMBOL vmlinux 0x81271f9b find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x812accfc account_page_redirty +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x815311b3 kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x815c56d0 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x81a07f4e _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x81ab195a devm_clk_put +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81e57e98 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x81eb672e fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x81fefd97 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x82008b60 from_kprojid +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x820fe08a mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0x8212bf52 dquot_resume +EXPORT_SYMBOL vmlinux 0x821a1011 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x82360efd simple_write_end +EXPORT_SYMBOL vmlinux 0x823dca3f con_is_bound +EXPORT_SYMBOL vmlinux 0x824fc78a pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x8251bcc3 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x8260686f bitmap_find_next_zero_area +EXPORT_SYMBOL vmlinux 0x826d4941 sk_filter +EXPORT_SYMBOL vmlinux 0x826fd629 unregister_binfmt +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82b02b67 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x82c75f86 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x82d8a443 sock_no_bind +EXPORT_SYMBOL vmlinux 0x82e5a238 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x830eb527 elevator_change +EXPORT_SYMBOL vmlinux 0x831beff8 alloc_fcdev +EXPORT_SYMBOL vmlinux 0x832684fd ab3100_event_register +EXPORT_SYMBOL vmlinux 0x8348896f dev_get_by_name +EXPORT_SYMBOL vmlinux 0x834f9b67 nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x835f5e49 gen10g_config_aneg +EXPORT_SYMBOL vmlinux 0x836c821a scsi_target_resume +EXPORT_SYMBOL vmlinux 0x8380dae0 names_cachep +EXPORT_SYMBOL vmlinux 0x838d5d24 seq_open +EXPORT_SYMBOL vmlinux 0x83903752 uart_match_port +EXPORT_SYMBOL vmlinux 0x8392ab96 unregister_console +EXPORT_SYMBOL vmlinux 0x839cb4e6 vfs_fsync +EXPORT_SYMBOL vmlinux 0x83a476ce bitmap_scnlistprintf +EXPORT_SYMBOL vmlinux 0x83acc8aa dev_warn +EXPORT_SYMBOL vmlinux 0x83b2f28a security_path_mkdir +EXPORT_SYMBOL vmlinux 0x83c8ab4e fm_set_tx_port_params +EXPORT_SYMBOL vmlinux 0x83d2d15f truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x83d32fa0 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0x83d8a937 qman_fqid_pool_used +EXPORT_SYMBOL vmlinux 0x83d94f44 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x83f6c3e0 splice_from_pipe_end +EXPORT_SYMBOL vmlinux 0x841962f8 param_get_ushort +EXPORT_SYMBOL vmlinux 0x84245a3d dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x844404cf ISA_DMA_THRESHOLD +EXPORT_SYMBOL vmlinux 0x846ed934 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x8496e345 inet6_add_offload +EXPORT_SYMBOL vmlinux 0x84a316da poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x84a4e1c5 invalidate_partition +EXPORT_SYMBOL vmlinux 0x84b183ae strncmp +EXPORT_SYMBOL vmlinux 0x84bd69bf dq_data_lock +EXPORT_SYMBOL vmlinux 0x84bece2e vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x84d2cc3d pci_fixup_device +EXPORT_SYMBOL vmlinux 0x84d5b45f neigh_for_each +EXPORT_SYMBOL vmlinux 0x84d70075 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x84ed5fbd end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x84f52d33 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x8509c540 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0x8518eca9 param_get_short +EXPORT_SYMBOL vmlinux 0x851e6e56 kill_block_super +EXPORT_SYMBOL vmlinux 0x853bf7c1 param_set_int +EXPORT_SYMBOL vmlinux 0x855b36ca dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x85770d74 pci_select_bars +EXPORT_SYMBOL vmlinux 0x8579dbf6 bio_integrity_get_tag +EXPORT_SYMBOL vmlinux 0x85acb2c8 ppp_input_error +EXPORT_SYMBOL vmlinux 0x85add83e pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85c0b3b4 udp_poll +EXPORT_SYMBOL vmlinux 0x85d736d7 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85e7deb2 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x85f6f611 pci_set_mwi +EXPORT_SYMBOL vmlinux 0x860ee0a1 dev_activate +EXPORT_SYMBOL vmlinux 0x862349d8 start_tty +EXPORT_SYMBOL vmlinux 0x86239f1b init_task +EXPORT_SYMBOL vmlinux 0x8632c816 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x86629a28 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x8675bc0e netlink_ack +EXPORT_SYMBOL vmlinux 0x8689b064 netdev_crit +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x86916fa2 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x869deb51 d_drop +EXPORT_SYMBOL vmlinux 0x86a0cadd sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0x86a4889a kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x86aed893 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x86bab009 request_key +EXPORT_SYMBOL vmlinux 0x86f253a4 stop_tty +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x870bf928 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x87263de0 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x8738c331 inode_dio_wait +EXPORT_SYMBOL vmlinux 0x875e9782 inet_ioctl +EXPORT_SYMBOL vmlinux 0x8779a34f param_ops_byte +EXPORT_SYMBOL vmlinux 0x877da262 netdev_emerg +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x8798e453 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x879ad06c decrementer_clockevent +EXPORT_SYMBOL vmlinux 0x87a0e8b6 bioset_create +EXPORT_SYMBOL vmlinux 0x87a6f145 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x87ea28cc tty_name +EXPORT_SYMBOL vmlinux 0x87ee1eef blk_sync_queue +EXPORT_SYMBOL vmlinux 0x87f35f8e pm860x_page_reg_read +EXPORT_SYMBOL vmlinux 0x881039d0 zlib_inflate +EXPORT_SYMBOL vmlinux 0x88164b0f dev_mc_init +EXPORT_SYMBOL vmlinux 0x881d31a3 clk_get +EXPORT_SYMBOL vmlinux 0x88279f25 cpm_muram_alloc +EXPORT_SYMBOL vmlinux 0x882dab9d sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0x8834396c mod_timer +EXPORT_SYMBOL vmlinux 0x8837eee5 devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0x883a794e ilookup +EXPORT_SYMBOL vmlinux 0x8842aad3 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x88513970 param_set_byte +EXPORT_SYMBOL vmlinux 0x8860895c mmc_remove_host +EXPORT_SYMBOL vmlinux 0x88618cac netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x8886984d ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x88895e98 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x88a7b8e8 neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x88ad616b devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0x88b3407f input_release_device +EXPORT_SYMBOL vmlinux 0x88e780c2 free_task +EXPORT_SYMBOL vmlinux 0x88ed0c18 scsi_block_requests +EXPORT_SYMBOL vmlinux 0x891fbb10 mempool_destroy +EXPORT_SYMBOL vmlinux 0x8922d3d5 scsi_remove_device +EXPORT_SYMBOL vmlinux 0x8923f359 security_path_rmdir +EXPORT_SYMBOL vmlinux 0x893340e5 icmpv6_send +EXPORT_SYMBOL vmlinux 0x8953f8ff __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x8959a2b2 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x89609c2f blk_start_request +EXPORT_SYMBOL vmlinux 0x8967415b scsi_device_put +EXPORT_SYMBOL vmlinux 0x897473df mktime +EXPORT_SYMBOL vmlinux 0x89797060 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x897f061d downgrade_write +EXPORT_SYMBOL vmlinux 0x898a34ab dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x89a6525c skb_queue_tail +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89e0cab5 alloc_fddidev +EXPORT_SYMBOL vmlinux 0x89f31d5c mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a29ff89 blk_delay_queue +EXPORT_SYMBOL vmlinux 0x8a384dca search_binary_handler +EXPORT_SYMBOL vmlinux 0x8a45b29c pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x8a474f08 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a5493bb qman_recovery_cleanup_fq +EXPORT_SYMBOL vmlinux 0x8a5b6794 blk_mq_alloc_reserved_request +EXPORT_SYMBOL vmlinux 0x8a6f0850 notify_change +EXPORT_SYMBOL vmlinux 0x8a7527e1 bm_pool_new +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a876f54 ida_init +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8a9f3b74 set_disk_ro +EXPORT_SYMBOL vmlinux 0x8aacd961 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x8ab4079e atomic64_add +EXPORT_SYMBOL vmlinux 0x8ab68840 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x8abb0cb3 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x8ae4c3c1 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0x8af707f1 crypto_sha256_update +EXPORT_SYMBOL vmlinux 0x8b14cd35 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x8b17bce3 of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0x8b1a7a66 pcie_aspm_enabled +EXPORT_SYMBOL vmlinux 0x8b1c31ef security_path_truncate +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b36058b account_page_writeback +EXPORT_SYMBOL vmlinux 0x8b4f35ef seq_open_private +EXPORT_SYMBOL vmlinux 0x8b5a8401 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b73e2e9 fsnotify_get_group +EXPORT_SYMBOL vmlinux 0x8b79d207 mmc_register_driver +EXPORT_SYMBOL vmlinux 0x8baf3116 percpu_counter_set +EXPORT_SYMBOL vmlinux 0x8bc56252 pci_get_slot +EXPORT_SYMBOL vmlinux 0x8bdc2cb7 qman_query_cgr +EXPORT_SYMBOL vmlinux 0x8be9ac8a bdput +EXPORT_SYMBOL vmlinux 0x8bf2ae1f fsl_lbc_addr +EXPORT_SYMBOL vmlinux 0x8bf7db72 agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0x8c026d8d done_path_create +EXPORT_SYMBOL vmlinux 0x8c02a7e5 sock_create +EXPORT_SYMBOL vmlinux 0x8c1306b0 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c280c42 xfrm_cfg_mutex +EXPORT_SYMBOL vmlinux 0x8c4481c7 audit_log_start +EXPORT_SYMBOL vmlinux 0x8c5fbacc scsi_finish_command +EXPORT_SYMBOL vmlinux 0x8c6008e8 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c682814 padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL vmlinux 0x8c9f73ca ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x8cb096af pagecache_write_end +EXPORT_SYMBOL vmlinux 0x8cbaa0b9 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8cce089e pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x8cd18162 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0x8cd2d5aa jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x8cded151 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x8d015dd4 __bswapdi2 +EXPORT_SYMBOL vmlinux 0x8d2a0fd0 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x8d2e268b param_ops_ulong +EXPORT_SYMBOL vmlinux 0x8d448681 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d842654 agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0x8d8840a3 unlock_new_inode +EXPORT_SYMBOL vmlinux 0x8da66444 softnet_data +EXPORT_SYMBOL vmlinux 0x8da79d04 loop_register_transfer +EXPORT_SYMBOL vmlinux 0x8dbb9c60 freezing_slow_path +EXPORT_SYMBOL vmlinux 0x8de0b5ac mempool_create +EXPORT_SYMBOL vmlinux 0x8de2cd6f bman_irqsource_get +EXPORT_SYMBOL vmlinux 0x8e0d66f4 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x8e319ac6 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x8e432d64 input_unregister_device +EXPORT_SYMBOL vmlinux 0x8e50e247 ps2_command +EXPORT_SYMBOL vmlinux 0x8e8078d5 phy_register_fixup +EXPORT_SYMBOL vmlinux 0x8e8458cb remove_proc_subtree +EXPORT_SYMBOL vmlinux 0x8e864a86 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x8e888ec3 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x8e8d58da diu_ops +EXPORT_SYMBOL vmlinux 0x8e9f0732 skb_store_bits +EXPORT_SYMBOL vmlinux 0x8ec04552 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x8f02d564 pci_find_capability +EXPORT_SYMBOL vmlinux 0x8f045d1c cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x8f20da0d scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x8f245de2 neigh_parms_release +EXPORT_SYMBOL vmlinux 0x8f371f2d tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x8f4f4a29 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x8f600c0c netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x8f6ac0a5 vmap +EXPORT_SYMBOL vmlinux 0x8f85f835 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x8f939637 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x8fa3d24c framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x8faa4598 of_translate_address +EXPORT_SYMBOL vmlinux 0x8fbf37e0 profile_pc +EXPORT_SYMBOL vmlinux 0x8fe1adaf do_splice_from +EXPORT_SYMBOL vmlinux 0x8fea7b25 sock_from_file +EXPORT_SYMBOL vmlinux 0x8ffa9caf security_inode_permission +EXPORT_SYMBOL vmlinux 0x8ffdb3b8 crc16 +EXPORT_SYMBOL vmlinux 0x90205e8f dm_get_device +EXPORT_SYMBOL vmlinux 0x90400b6e path_get +EXPORT_SYMBOL vmlinux 0x90501868 transfer_to_handler +EXPORT_SYMBOL vmlinux 0x90507ee3 skb_pad +EXPORT_SYMBOL vmlinux 0x906b879f free_mdio_bitbang +EXPORT_SYMBOL vmlinux 0x907e4606 skb_make_writable +EXPORT_SYMBOL vmlinux 0x908b53ed param_set_short +EXPORT_SYMBOL vmlinux 0x90954605 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x90c8f1cc xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x90d157b7 sys_imageblit +EXPORT_SYMBOL vmlinux 0x90e146c2 trace_seq_putc +EXPORT_SYMBOL vmlinux 0x90ebac6f pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x911166ba sock_no_connect +EXPORT_SYMBOL vmlinux 0x91206b45 tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x912e788d flush_old_exec +EXPORT_SYMBOL vmlinux 0x913e806f pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x9152c5e1 dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x915e1208 tb_ticks_per_usec +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x91786d7d input_get_keycode +EXPORT_SYMBOL vmlinux 0x919d1163 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x91b573fd blk_make_request +EXPORT_SYMBOL vmlinux 0x91b795fc elv_rb_find +EXPORT_SYMBOL vmlinux 0x91c8502b pci_clear_master +EXPORT_SYMBOL vmlinux 0x91cb8cb5 md_register_thread +EXPORT_SYMBOL vmlinux 0x91f1bbc5 phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0x9213263e call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x9217c5de netpoll_print_options +EXPORT_SYMBOL vmlinux 0x9229af21 netdev_printk +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x92523cab dcache_readdir +EXPORT_SYMBOL vmlinux 0x925520d2 blk_start_plug +EXPORT_SYMBOL vmlinux 0x928e9a74 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0x92a7e6c5 bman_new_pool +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92ba9159 blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x92bc220b lockref_get +EXPORT_SYMBOL vmlinux 0x92bdb6e7 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x92f9cbf6 revert_creds +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x932d98c1 cpm_muram_dma +EXPORT_SYMBOL vmlinux 0x933e10ec qman_ip_rev +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x93590ae8 phy_print_status +EXPORT_SYMBOL vmlinux 0x935b8821 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x9398af08 uart_register_driver +EXPORT_SYMBOL vmlinux 0x93a671a0 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0x93a6e0b2 io_schedule +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93b84b8c __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x93e4b50e ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0x93f05f7f tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x943b2131 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x94631b98 qman_irqsource_get +EXPORT_SYMBOL vmlinux 0x94853a5f bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94b541b5 cpu_active_mask +EXPORT_SYMBOL vmlinux 0x94b845a9 wireless_spy_update +EXPORT_SYMBOL vmlinux 0x94c48e1c input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x94d5c420 put_disk +EXPORT_SYMBOL vmlinux 0x94d78b7c qman_create_cgr +EXPORT_SYMBOL vmlinux 0x94ef4eab pid_task +EXPORT_SYMBOL vmlinux 0x9508f166 param_ops_bint +EXPORT_SYMBOL vmlinux 0x950a5c90 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x9514151a _mcount +EXPORT_SYMBOL vmlinux 0x952485b1 pme_fd_cmd_nop +EXPORT_SYMBOL vmlinux 0x9524b0ae _outsb +EXPORT_SYMBOL vmlinux 0x952f9953 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x953c1017 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x959a06fb init_net +EXPORT_SYMBOL vmlinux 0x959c2ed7 qman_query_fq_np +EXPORT_SYMBOL vmlinux 0x95b3550d dev_get_drvdata +EXPORT_SYMBOL vmlinux 0x95cb929c of_find_all_nodes +EXPORT_SYMBOL vmlinux 0x95e542a8 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x95e6e500 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x9621eb81 mmc_detect_change +EXPORT_SYMBOL vmlinux 0x9622a682 __register_binfmt +EXPORT_SYMBOL vmlinux 0x96313fae scsi_remove_target +EXPORT_SYMBOL vmlinux 0x963fa8b9 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x9641eb5d alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x96431255 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x9646348b mmc_gpio_free_cd +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x965bf765 md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0x96846e42 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x96898769 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x9699cee2 set_binfmt +EXPORT_SYMBOL vmlinux 0x969f877c set_page_dirty +EXPORT_SYMBOL vmlinux 0x96b5931a of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL vmlinux 0x96cbeba5 md_finish_reshape +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96cfee46 vga_get +EXPORT_SYMBOL vmlinux 0x96f9d43e pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x970cf6d4 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x97109e3f sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x97255bdf strlen +EXPORT_SYMBOL vmlinux 0x9748927f _outsw_ns +EXPORT_SYMBOL vmlinux 0x975376fe bio_integrity_free +EXPORT_SYMBOL vmlinux 0x975454a9 tty_kref_put +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x9763bf08 pci_request_region +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a60e3d param_get_bool +EXPORT_SYMBOL vmlinux 0x97a87c16 inet_frags_init_net +EXPORT_SYMBOL vmlinux 0x97aa4b04 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x97b4500c __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x97b71c5a filemap_fdatawait +EXPORT_SYMBOL vmlinux 0x97ffb370 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x9806e54c setattr_copy +EXPORT_SYMBOL vmlinux 0x981661a0 __idr_get_new_above +EXPORT_SYMBOL vmlinux 0x981d8d61 elevator_exit +EXPORT_SYMBOL vmlinux 0x982725fe tty_lock +EXPORT_SYMBOL vmlinux 0x982e4d60 pci_restore_state +EXPORT_SYMBOL vmlinux 0x9865758a xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x98668903 pme_sw_flow_init +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x9879fe5d blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x987b9654 kobject_del +EXPORT_SYMBOL vmlinux 0x9887dcb9 net_dma_find_channel +EXPORT_SYMBOL vmlinux 0x98b2b6e5 xfrm_register_km +EXPORT_SYMBOL vmlinux 0x98d6d158 eth_rebuild_header +EXPORT_SYMBOL vmlinux 0x98d720be pcie_set_mps +EXPORT_SYMBOL vmlinux 0x98fa21b0 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x98fe7882 DMA_MODE_READ +EXPORT_SYMBOL vmlinux 0x99133663 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x9924e4ad free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x994eb535 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x998498e2 tty_do_resize +EXPORT_SYMBOL vmlinux 0x9986a248 __lru_cache_add +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99ab4190 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x99abb92b insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x99afe916 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x99bb8806 memmove +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99dbc7f9 __find_get_block +EXPORT_SYMBOL vmlinux 0x99eace08 rfkill_alloc +EXPORT_SYMBOL vmlinux 0x9a1bf350 genphy_suspend +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a27cb20 free_netdev +EXPORT_SYMBOL vmlinux 0x9a626734 ftrace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x9a65ace6 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x9a65b68b scsi_adjust_queue_depth +EXPORT_SYMBOL vmlinux 0x9a900eae netif_rx_ni +EXPORT_SYMBOL vmlinux 0x9a9bd0f6 mac_find_mode +EXPORT_SYMBOL vmlinux 0x9a9dcb5f of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0x9ab90248 sock_release +EXPORT_SYMBOL vmlinux 0x9ac220d4 agp_put_bridge +EXPORT_SYMBOL vmlinux 0x9af25dbf dquot_disable +EXPORT_SYMBOL vmlinux 0x9b07d026 del_gendisk +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b464f04 pci_release_region +EXPORT_SYMBOL vmlinux 0x9b62a9bd pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0x9b63bb71 qdisc_destroy +EXPORT_SYMBOL vmlinux 0x9b68be83 dcb_setapp +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9b9ec2fe mpage_readpage +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9bfb93c0 ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0x9c167c06 proc_symlink +EXPORT_SYMBOL vmlinux 0x9c1e7c57 vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0x9c2092b9 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x9c389995 of_scan_pci_bridge +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c4def48 pme_fd_cmd_scan +EXPORT_SYMBOL vmlinux 0x9c5e99c0 blk_put_request +EXPORT_SYMBOL vmlinux 0x9c614b2e nonseekable_open +EXPORT_SYMBOL vmlinux 0x9c6734ba i2c_bit_algo +EXPORT_SYMBOL vmlinux 0x9c6819ed tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x9c7951f1 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x9ca4b223 tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cae41cf remove_proc_entry +EXPORT_SYMBOL vmlinux 0x9cb15aef generic_file_fsync +EXPORT_SYMBOL vmlinux 0x9cc4db27 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x9cc8d60f pci_iomap +EXPORT_SYMBOL vmlinux 0x9cc9281e inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x9cc99288 fm_unbind +EXPORT_SYMBOL vmlinux 0x9cd78347 dev_get_stats +EXPORT_SYMBOL vmlinux 0x9ce3f83f nvram_write_byte +EXPORT_SYMBOL vmlinux 0x9ceb163c memcpy_toiovec +EXPORT_SYMBOL vmlinux 0x9cef3cc5 __idr_remove_all +EXPORT_SYMBOL vmlinux 0x9cfd56c5 scsi_print_status +EXPORT_SYMBOL vmlinux 0x9d07ee7b tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d14983a ppc_enable_pmcs +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d58349a of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0x9d5c0212 prepare_creds +EXPORT_SYMBOL vmlinux 0x9d5f5da0 tty_lock_pair +EXPORT_SYMBOL vmlinux 0x9d669763 memcpy +EXPORT_SYMBOL vmlinux 0x9d72229b fsl_ifc_find +EXPORT_SYMBOL vmlinux 0x9d7ce8dd _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x9d90f95f __crc32c_le_combine +EXPORT_SYMBOL vmlinux 0x9da08865 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0x9da0d642 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0x9da17bb6 get_tz_trend +EXPORT_SYMBOL vmlinux 0x9daa76d7 bioset_free +EXPORT_SYMBOL vmlinux 0x9dcac822 capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0x9dd4efd9 lock_fb_info +EXPORT_SYMBOL vmlinux 0x9ddbf874 skb_copy_bits +EXPORT_SYMBOL vmlinux 0x9ddefa7d dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x9dee9a84 cpm2_immr +EXPORT_SYMBOL vmlinux 0x9df0178c sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x9dfc1edd bman_irqsource_add +EXPORT_SYMBOL vmlinux 0x9dfe7307 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e15c5b3 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x9e2000a7 memcpy_toiovecend +EXPORT_SYMBOL vmlinux 0x9e3e6b4c phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x9e44b9b7 of_get_next_available_child +EXPORT_SYMBOL vmlinux 0x9e4b3747 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e57aa5a xfrm_register_type +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e656f15 clear_user_page +EXPORT_SYMBOL vmlinux 0x9e74056f ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x9e7a24b0 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x9e96ed6e netlink_broadcast +EXPORT_SYMBOL vmlinux 0x9e9f1714 __bitmap_andnot +EXPORT_SYMBOL vmlinux 0x9ea0ad49 __sg_free_table +EXPORT_SYMBOL vmlinux 0x9eb77a45 kern_path_create +EXPORT_SYMBOL vmlinux 0x9eb83a57 generic_setxattr +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ed2eec7 param_set_ushort +EXPORT_SYMBOL vmlinux 0x9ed685ee iov_iter_advance +EXPORT_SYMBOL vmlinux 0x9f221ed5 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x9f2bdaac __bitmap_or +EXPORT_SYMBOL vmlinux 0x9f3ac7a2 pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x9f463d4a unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f55c07a napi_gro_frags +EXPORT_SYMBOL vmlinux 0x9f670d90 netdev_features_change +EXPORT_SYMBOL vmlinux 0x9f684c9d inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x9f6c67f0 agp_bridge +EXPORT_SYMBOL vmlinux 0x9f6d9fe9 __skb_dst_set_noref +EXPORT_SYMBOL vmlinux 0x9f977151 input_set_abs_params +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9faab431 scsi_register_driver +EXPORT_SYMBOL vmlinux 0x9fb3dd30 memcpy_fromiovec +EXPORT_SYMBOL vmlinux 0x9fbed79d qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x9fcb07c3 input_register_device +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9fdfa1f9 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x9ff63731 icmp_send +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa002b09e inet_confirm_addr +EXPORT_SYMBOL vmlinux 0xa021d9e5 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0xa02239a4 dev_mc_del +EXPORT_SYMBOL vmlinux 0xa02b5fa5 bio_split +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa04d6603 pci_request_regions +EXPORT_SYMBOL vmlinux 0xa0560158 scsi_allocate_command +EXPORT_SYMBOL vmlinux 0xa058674c __generic_file_aio_write +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa068877a seq_escape +EXPORT_SYMBOL vmlinux 0xa06df9e1 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0xa07448e1 mnt_pin +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa0813980 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0xa0966e4b unregister_shrinker +EXPORT_SYMBOL vmlinux 0xa09f8be2 qman_affine_cpus +EXPORT_SYMBOL vmlinux 0xa0a29b8b scm_detach_fds +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0b46833 generic_write_checks +EXPORT_SYMBOL vmlinux 0xa0bb5e84 blk_end_request +EXPORT_SYMBOL vmlinux 0xa0c5ebd4 key_validate +EXPORT_SYMBOL vmlinux 0xa0ceef51 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xa0d6dc84 uart_update_timeout +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 0xa1028b2f udp_lib_get_port +EXPORT_SYMBOL vmlinux 0xa1046768 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa11aca09 mount_single +EXPORT_SYMBOL vmlinux 0xa1206e5a swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa163747d vga_tryget +EXPORT_SYMBOL vmlinux 0xa16b1bf7 inet6_bind +EXPORT_SYMBOL vmlinux 0xa184a6d2 i2c_use_client +EXPORT_SYMBOL vmlinux 0xa1977df7 iov_iter_copy_from_user +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1c99385 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xa1dbd047 inet6_ioctl +EXPORT_SYMBOL vmlinux 0xa1dc9e3a request_key_async +EXPORT_SYMBOL vmlinux 0xa1f8fe75 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xa20ce1b8 net_msg_warn +EXPORT_SYMBOL vmlinux 0xa20ef3f1 skb_put +EXPORT_SYMBOL vmlinux 0xa241bfa0 blk_recount_segments +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa288918e of_dev_put +EXPORT_SYMBOL vmlinux 0xa28a2ace ipmi_set_gets_events +EXPORT_SYMBOL vmlinux 0xa28eeb03 __genl_register_family +EXPORT_SYMBOL vmlinux 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL vmlinux 0xa2bbed37 crash_shutdown_register +EXPORT_SYMBOL vmlinux 0xa2ebae74 may_umount_tree +EXPORT_SYMBOL vmlinux 0xa2ef34d7 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0xa2fccfc2 sock_wake_async +EXPORT_SYMBOL vmlinux 0xa303d1ff dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0xa31e0535 pci_pme_active +EXPORT_SYMBOL vmlinux 0xa332464a of_get_cpu_node +EXPORT_SYMBOL vmlinux 0xa335945c padata_do_serial +EXPORT_SYMBOL vmlinux 0xa34f1ef5 crc32_le +EXPORT_SYMBOL vmlinux 0xa3533b8c free_user_ns +EXPORT_SYMBOL vmlinux 0xa35de80f ipv4_config +EXPORT_SYMBOL vmlinux 0xa3715c31 __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0xa37bfc0e lease_get_mtime +EXPORT_SYMBOL vmlinux 0xa381944f dql_reset +EXPORT_SYMBOL vmlinux 0xa38e691a ioremap_bot +EXPORT_SYMBOL vmlinux 0xa39b4cf2 udelay +EXPORT_SYMBOL vmlinux 0xa39cdbb8 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0xa3a5248b set_security_override +EXPORT_SYMBOL vmlinux 0xa3abc422 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xa3b577e8 i2c_register_driver +EXPORT_SYMBOL vmlinux 0xa3b8e627 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0xa3e03024 kmap_atomic_prot +EXPORT_SYMBOL vmlinux 0xa3e53377 __nlmsg_put +EXPORT_SYMBOL vmlinux 0xa3e75545 flush_tlb_kernel_range +EXPORT_SYMBOL vmlinux 0xa405b134 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0xa423d9ff __bforget +EXPORT_SYMBOL vmlinux 0xa42ac0e4 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0xa43b1297 vscnprintf +EXPORT_SYMBOL vmlinux 0xa43b9539 memcpy_fromiovecend +EXPORT_SYMBOL vmlinux 0xa44b7cdf bprm_change_interp +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa49b5e03 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0xa49d8b85 blk_mq_insert_request +EXPORT_SYMBOL vmlinux 0xa4a94d26 find_next_bit_le +EXPORT_SYMBOL vmlinux 0xa4b0edb5 kthread_bind +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4ff7e6a mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0xa5037635 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0xa5070b99 ata_print_version +EXPORT_SYMBOL vmlinux 0xa5173b15 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0xa51b2d46 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa56039c4 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xa56bd3df kunmap_high +EXPORT_SYMBOL vmlinux 0xa57dff84 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa59b78e1 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0xa5a20c30 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0xa5b1722f padata_alloc +EXPORT_SYMBOL vmlinux 0xa5c65e77 ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0xa60f2f3c alloc_anon_inode +EXPORT_SYMBOL vmlinux 0xa619c181 pme_ctx_reconfigure_tx +EXPORT_SYMBOL vmlinux 0xa6282f0e agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0xa628ac24 get_disk +EXPORT_SYMBOL vmlinux 0xa63069f9 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0xa6384b7f abx500_register_ops +EXPORT_SYMBOL vmlinux 0xa63a2f9b param_get_ulong +EXPORT_SYMBOL vmlinux 0xa64bd1d8 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0xa65972b8 _memcpy_toio +EXPORT_SYMBOL vmlinux 0xa66dabdf agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0xa6715115 do_settimeofday +EXPORT_SYMBOL vmlinux 0xa67465bc ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa675b56b skb_push +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6970398 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0xa69c1fed bio_copy_data +EXPORT_SYMBOL vmlinux 0xa6af1a94 pme2_exclusive_unset +EXPORT_SYMBOL vmlinux 0xa6b96c10 unlock_rename +EXPORT_SYMBOL vmlinux 0xa6c5f287 devm_iounmap +EXPORT_SYMBOL vmlinux 0xa6caa63c proc_remove +EXPORT_SYMBOL vmlinux 0xa6ebbbe4 posix_lock_file +EXPORT_SYMBOL vmlinux 0xa6f2347c ipmi_smi_watcher_unregister +EXPORT_SYMBOL vmlinux 0xa6f31235 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0xa70a1d03 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0xa718fd60 d_alloc_name +EXPORT_SYMBOL vmlinux 0xa71e7463 __first_cpu +EXPORT_SYMBOL vmlinux 0xa720678c lg_global_lock +EXPORT_SYMBOL vmlinux 0xa72da99d blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa73fc98f of_n_addr_cells +EXPORT_SYMBOL vmlinux 0xa781ddbc xfrm_state_flush +EXPORT_SYMBOL vmlinux 0xa78d9eb7 slhc_uncompress +EXPORT_SYMBOL vmlinux 0xa79ec147 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0xa7c0c4b9 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0xa7c8003e skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0xa7ce7ecb __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xa7cf7ec8 max8998_write_reg +EXPORT_SYMBOL vmlinux 0xa7e94902 kmap_pte +EXPORT_SYMBOL vmlinux 0xa7fd0146 security_inode_init_security +EXPORT_SYMBOL vmlinux 0xa81be51b kern_unmount +EXPORT_SYMBOL vmlinux 0xa81de2a3 mount_ns +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa826e3dc __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0xa8326b11 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0xa833055e __scsi_add_device +EXPORT_SYMBOL vmlinux 0xa8337b72 blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa89464b7 __ashldi3 +EXPORT_SYMBOL vmlinux 0xa8950b1f fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0xa8991eda sk_wait_data +EXPORT_SYMBOL vmlinux 0xa8a6f639 __check_region +EXPORT_SYMBOL vmlinux 0xa8ccf264 register_nls +EXPORT_SYMBOL vmlinux 0xa8ee226f devm_request_and_ioremap +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa9087d25 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa9273e1a epapr_hypercall_start +EXPORT_SYMBOL vmlinux 0xa933a442 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0xa9571d6d DMA_MODE_WRITE +EXPORT_SYMBOL vmlinux 0xa96b9627 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0xa97f48bc gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0xa97feae7 agp_backend_release +EXPORT_SYMBOL vmlinux 0xa99011f6 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0xa99b9bc7 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0xa9b63345 of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0xa9bb2e14 swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0xa9c50590 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0xa9f66a28 free_buffer_head +EXPORT_SYMBOL vmlinux 0xa9fd599b security_path_chmod +EXPORT_SYMBOL vmlinux 0xa9fda4a3 override_creds +EXPORT_SYMBOL vmlinux 0xaa1b01e9 dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0xaa46e87e lg_local_unlock +EXPORT_SYMBOL vmlinux 0xaa4b470a get_super +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 0xaa9087c0 param_ops_string +EXPORT_SYMBOL vmlinux 0xaa956681 kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0xaaab8067 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0xaaac3b52 sock_i_uid +EXPORT_SYMBOL vmlinux 0xaaae8773 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0xaacb645a udp_sendmsg +EXPORT_SYMBOL vmlinux 0xaad69e23 qman_fq_state +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab116098 iterate_supers_type +EXPORT_SYMBOL vmlinux 0xab49b086 clocksource_unregister +EXPORT_SYMBOL vmlinux 0xab694444 bsearch +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab6d2ae0 pci_write_vpd +EXPORT_SYMBOL vmlinux 0xab6ea283 locks_remove_posix +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab7920ee touch_buffer +EXPORT_SYMBOL vmlinux 0xab92fe0e d_validate +EXPORT_SYMBOL vmlinux 0xab9c993f mmc_get_card +EXPORT_SYMBOL vmlinux 0xaba89373 led_set_brightness +EXPORT_SYMBOL vmlinux 0xabc6dd63 cpufreq_sysfs_create_file +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabcaa81c d_add_ci +EXPORT_SYMBOL vmlinux 0xabd0c91c rtc_time_to_tm +EXPORT_SYMBOL vmlinux 0xabd20aae security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0xabf0f964 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac0da514 may_umount +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac26b820 _raw_write_lock +EXPORT_SYMBOL vmlinux 0xac382810 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0xac3a1167 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0xac84183c fb_class +EXPORT_SYMBOL vmlinux 0xac89d4ce dentry_path_raw +EXPORT_SYMBOL vmlinux 0xac9e101a qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacb08364 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xacb34962 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0xacba6b71 dquot_free_inode +EXPORT_SYMBOL vmlinux 0xacc5b5d2 csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad0a6e0a flex_array_prealloc +EXPORT_SYMBOL vmlinux 0xad0cda17 set_groups +EXPORT_SYMBOL vmlinux 0xad1201cd __bio_clone +EXPORT_SYMBOL vmlinux 0xad169a8c mmc_request_done +EXPORT_SYMBOL vmlinux 0xad286dd4 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xad3b6fda uart_remove_one_port +EXPORT_SYMBOL vmlinux 0xad438445 nla_reserve +EXPORT_SYMBOL vmlinux 0xad46dec2 of_count_phandle_with_args +EXPORT_SYMBOL vmlinux 0xad6d093d d_invalidate +EXPORT_SYMBOL vmlinux 0xad7e811b kill_fasync +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad90f33a fm_port_get_base_addr +EXPORT_SYMBOL vmlinux 0xadaceefd mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0xadbf5d12 kmap_to_page +EXPORT_SYMBOL vmlinux 0xadc8df4e filp_open +EXPORT_SYMBOL vmlinux 0xadce54d0 input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0xadcea0a5 swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0xadd1e971 alignment_exception +EXPORT_SYMBOL vmlinux 0xadd2bebf register_netdevice +EXPORT_SYMBOL vmlinux 0xaddd4770 __debugger_iabr_match +EXPORT_SYMBOL vmlinux 0xadf0811d get_baudrate +EXPORT_SYMBOL vmlinux 0xae320f4f pci_enable_ido +EXPORT_SYMBOL vmlinux 0xae545f06 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xae59453d blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xae59a3b0 fm_port_bind +EXPORT_SYMBOL vmlinux 0xae5e88b3 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0xae671255 local_flush_tlb_mm +EXPORT_SYMBOL vmlinux 0xae68e7d6 dquot_quota_off +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae8f5383 pci_scan_bus +EXPORT_SYMBOL vmlinux 0xaea79b23 d_path +EXPORT_SYMBOL vmlinux 0xaec11a90 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0xaec526f1 pme_ctx_scan +EXPORT_SYMBOL vmlinux 0xaec655c7 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0xaeec19db mdiobus_read +EXPORT_SYMBOL vmlinux 0xaef9c0e5 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xaf05b91b of_device_is_available +EXPORT_SYMBOL vmlinux 0xaf063510 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xaf16d558 cdev_del +EXPORT_SYMBOL vmlinux 0xaf218756 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0xaf2d872c prepare_to_wait +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf43be82 __pskb_copy +EXPORT_SYMBOL vmlinux 0xaf49919e d_set_d_op +EXPORT_SYMBOL vmlinux 0xaf64ad0d zlib_deflate +EXPORT_SYMBOL vmlinux 0xaf6a0f53 __alloc_skb +EXPORT_SYMBOL vmlinux 0xaf91d89f __kernel_param_lock +EXPORT_SYMBOL vmlinux 0xaf9a4ae9 bio_integrity_split +EXPORT_SYMBOL vmlinux 0xafac437f max8925_reg_write +EXPORT_SYMBOL vmlinux 0xafad493b param_ops_ushort +EXPORT_SYMBOL vmlinux 0xafafc493 scsi_register +EXPORT_SYMBOL vmlinux 0xafbcaaf9 clone_cred +EXPORT_SYMBOL vmlinux 0xafd01e14 qman_retire_fq +EXPORT_SYMBOL vmlinux 0xafd1ffad __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0xafd68c33 flex_array_free +EXPORT_SYMBOL vmlinux 0xafd70bf2 qman_dca +EXPORT_SYMBOL vmlinux 0xafff3d1d mempool_alloc +EXPORT_SYMBOL vmlinux 0xb00c9690 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0xb00cae17 framebuffer_release +EXPORT_SYMBOL vmlinux 0xb03b5a4c delete_from_page_cache +EXPORT_SYMBOL vmlinux 0xb05bb6d6 blkdev_put +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb087a1f3 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0xb09c303e phy_attach_direct +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0ad23d7 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0xb0b847ac __bitmap_full +EXPORT_SYMBOL vmlinux 0xb0b9b582 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0xb0c98de4 netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0e8a44e udp_seq_open +EXPORT_SYMBOL vmlinux 0xb0ffda2f blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xb106727d pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0xb10bb652 loop_backing_file +EXPORT_SYMBOL vmlinux 0xb1216e61 gen10g_restart_aneg +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb136257d fixed_size_llseek +EXPORT_SYMBOL vmlinux 0xb155b848 vfs_setpos +EXPORT_SYMBOL vmlinux 0xb156805c skb_queue_purge +EXPORT_SYMBOL vmlinux 0xb156c609 mfd_add_devices +EXPORT_SYMBOL vmlinux 0xb15bd8fa tb_ticks_per_sec +EXPORT_SYMBOL vmlinux 0xb15c63e0 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0xb16209f0 file_ns_capable +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb16daed0 d_alloc +EXPORT_SYMBOL vmlinux 0xb1915aa2 __brelse +EXPORT_SYMBOL vmlinux 0xb19760c3 bitmap_onto +EXPORT_SYMBOL vmlinux 0xb1a91f33 backlight_force_update +EXPORT_SYMBOL vmlinux 0xb1c13940 pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1c6e787 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0xb1cae014 bdevname +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1d72b47 bitmap_end_sync +EXPORT_SYMBOL vmlinux 0xb1db9e4e param_get_invbool +EXPORT_SYMBOL vmlinux 0xb1f03b11 mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0xb1f98d3c register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xb20e32ff simple_transaction_set +EXPORT_SYMBOL vmlinux 0xb2264a39 mutex_lock +EXPORT_SYMBOL vmlinux 0xb233762c atomic64_set +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb273de85 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0xb280bb00 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0xb2acf19d pme_ctx_finish +EXPORT_SYMBOL vmlinux 0xb2b94674 __crc32c_le +EXPORT_SYMBOL vmlinux 0xb2baec0c tty_port_init +EXPORT_SYMBOL vmlinux 0xb2bce994 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2d48a2e queue_work_on +EXPORT_SYMBOL vmlinux 0xb304acff ida_get_new_above +EXPORT_SYMBOL vmlinux 0xb32d8f74 inet_addr_type +EXPORT_SYMBOL vmlinux 0xb332e248 __pagevec_release +EXPORT_SYMBOL vmlinux 0xb33d8fa9 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0xb35bb19b seq_puts +EXPORT_SYMBOL vmlinux 0xb35e180c netif_rx +EXPORT_SYMBOL vmlinux 0xb366b249 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0xb39880a0 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0xb3b374ba ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0xb3b68ea3 make_bad_inode +EXPORT_SYMBOL vmlinux 0xb3d123d6 fm_get_tx_port_channel +EXPORT_SYMBOL vmlinux 0xb3dc62c4 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0xb3e2f5f5 fddi_type_trans +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb3f95894 init_buffer +EXPORT_SYMBOL vmlinux 0xb420409c iget_failed +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb42dcefc agp_free_page_array +EXPORT_SYMBOL vmlinux 0xb445d3b3 get_phy_device +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb473ee02 poll_freewait +EXPORT_SYMBOL vmlinux 0xb478817b __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xb4857a18 nobh_writepage +EXPORT_SYMBOL vmlinux 0xb49114b3 of_match_device +EXPORT_SYMBOL vmlinux 0xb4b121b1 __lock_buffer +EXPORT_SYMBOL vmlinux 0xb4bbcf35 pci_remove_bus +EXPORT_SYMBOL vmlinux 0xb4cc0fa6 page_symlink +EXPORT_SYMBOL vmlinux 0xb4e42cfc inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0xb4f0a4df scsi_init_io +EXPORT_SYMBOL vmlinux 0xb525e83b pci_bus_type +EXPORT_SYMBOL vmlinux 0xb54533f7 usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xb563b80c qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5bbd95d dev_open +EXPORT_SYMBOL vmlinux 0xb5d9454c printk_emit +EXPORT_SYMBOL vmlinux 0xb5f876d3 pci_scan_bus_parented +EXPORT_SYMBOL vmlinux 0xb606d640 kill_bdev +EXPORT_SYMBOL vmlinux 0xb62305ae scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb6394d4b param_set_bint +EXPORT_SYMBOL vmlinux 0xb646f814 always_delete_dentry +EXPORT_SYMBOL vmlinux 0xb64d268f qman_schedule_fq +EXPORT_SYMBOL vmlinux 0xb6599b9a machine_check_exception +EXPORT_SYMBOL vmlinux 0xb66d1a4f scsi_host_put +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb67d4f73 scsi_calculate_bounce_limit +EXPORT_SYMBOL vmlinux 0xb67e6541 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0xb6822a33 radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xb6896671 crc_t10dif +EXPORT_SYMBOL vmlinux 0xb690760d kernel_getsockname +EXPORT_SYMBOL vmlinux 0xb6911f7c ndisc_mc_map +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6b46a7c param_ops_int +EXPORT_SYMBOL vmlinux 0xb6be7043 load_nls +EXPORT_SYMBOL vmlinux 0xb6bfe7b0 ip_cmsg_recv +EXPORT_SYMBOL vmlinux 0xb6c5a973 scsi_show_result +EXPORT_SYMBOL vmlinux 0xb6d2eafb qman_irqsource_add +EXPORT_SYMBOL vmlinux 0xb6e08828 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0xb6e5b369 __dev_remove_offload +EXPORT_SYMBOL vmlinux 0xb707e238 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0xb727d1b4 __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xb7321453 padata_start +EXPORT_SYMBOL vmlinux 0xb73cd89b jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0xb753bcc8 __ashrdi3 +EXPORT_SYMBOL vmlinux 0xb770be3e __percpu_counter_add +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb782f386 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0xb7908938 bio_reset +EXPORT_SYMBOL vmlinux 0xb79a4e1a store_fp_state +EXPORT_SYMBOL vmlinux 0xb7a99781 __irq_regs +EXPORT_SYMBOL vmlinux 0xb7b61546 crc32_be +EXPORT_SYMBOL vmlinux 0xb7c3a3fe gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0xb7c6db70 sysctl_max_skb_frags +EXPORT_SYMBOL vmlinux 0xb7e6a37a tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0xb7ea304d page_follow_link_light +EXPORT_SYMBOL vmlinux 0xb7fde971 pme_map +EXPORT_SYMBOL vmlinux 0xb8088a3b mpage_writepage +EXPORT_SYMBOL vmlinux 0xb80f4c8d input_register_handle +EXPORT_SYMBOL vmlinux 0xb81960ca snprintf +EXPORT_SYMBOL vmlinux 0xb835b3e4 radix_tree_prev_hole +EXPORT_SYMBOL vmlinux 0xb83ba293 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xb83bca8a call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0xb83d802f sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0xb8480284 kfree_skb_list +EXPORT_SYMBOL vmlinux 0xb85aeda1 sk_net_capable +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb8a42ac6 sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0xb8a95426 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xb8c9a648 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0xb8cd71ee devm_clk_get +EXPORT_SYMBOL vmlinux 0xb8d73e97 param_set_uint +EXPORT_SYMBOL vmlinux 0xb8e038a1 set_anon_super +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb8f37538 unregister_md_personality +EXPORT_SYMBOL vmlinux 0xb927c2ca xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0xb95ecb60 fsl_ifc_ctrl_dev +EXPORT_SYMBOL vmlinux 0xb966b03e bdget +EXPORT_SYMBOL vmlinux 0xb98a0185 rtc_tm_to_time +EXPORT_SYMBOL vmlinux 0xb9d0d91b dump_emit +EXPORT_SYMBOL vmlinux 0xb9d29302 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0xb9d5e027 qman_eqcr_is_empty +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9f71283 inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0xba374145 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0xba3b0126 __pci_enable_wake +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba4ba181 fb_show_logo +EXPORT_SYMBOL vmlinux 0xba76ff65 mach_corenet_generic +EXPORT_SYMBOL vmlinux 0xba7bb1ca remap_pfn_range +EXPORT_SYMBOL vmlinux 0xba94452f scsi_print_sense +EXPORT_SYMBOL vmlinux 0xba973a91 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0xba9765eb d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0xbaadc6e3 __free_pages +EXPORT_SYMBOL vmlinux 0xbab06724 nlmsg_notify +EXPORT_SYMBOL vmlinux 0xbaf3b84f pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0xbb0cfeca kset_unregister +EXPORT_SYMBOL vmlinux 0xbb154218 pipe_unlock +EXPORT_SYMBOL vmlinux 0xbb189cad disallow_signal +EXPORT_SYMBOL vmlinux 0xbb20a45a sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0xbb517e31 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb713e6d sk_filter_release_rcu +EXPORT_SYMBOL vmlinux 0xbb773f89 tcf_generic_walker +EXPORT_SYMBOL vmlinux 0xbb8f8c52 security_inode_readlink +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbbe67d94 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0xbbeef804 da903x_query_status +EXPORT_SYMBOL vmlinux 0xbbf696bd bio_uncopy_user +EXPORT_SYMBOL vmlinux 0xbc00e819 blkdev_fsync +EXPORT_SYMBOL vmlinux 0xbc02bc93 tty_port_destroy +EXPORT_SYMBOL vmlinux 0xbc0e00db padata_alloc_possible +EXPORT_SYMBOL vmlinux 0xbc11ecc0 __frontswap_load +EXPORT_SYMBOL vmlinux 0xbc17cad4 tty_port_close_end +EXPORT_SYMBOL vmlinux 0xbc1fdf75 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0xbc316de4 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0xbc3e5cc3 security_path_unlink +EXPORT_SYMBOL vmlinux 0xbc3f6afa down_read +EXPORT_SYMBOL vmlinux 0xbc57036c ip_defrag +EXPORT_SYMBOL vmlinux 0xbc62df53 request_firmware +EXPORT_SYMBOL vmlinux 0xbc64d09d generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0xbc97ae2b jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcc3f29f vm_insert_page +EXPORT_SYMBOL vmlinux 0xbccdc2f6 flex_array_put +EXPORT_SYMBOL vmlinux 0xbcd37bbe sock_update_classid +EXPORT_SYMBOL vmlinux 0xbcdd17ba __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xbcdedba7 of_get_mac_address +EXPORT_SYMBOL vmlinux 0xbce2ce96 of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0xbcf28f2d dquot_commit_info +EXPORT_SYMBOL vmlinux 0xbd1c1440 pcie_get_mps +EXPORT_SYMBOL vmlinux 0xbd1e55bb __module_put_and_exit +EXPORT_SYMBOL vmlinux 0xbd4420e4 blk_rq_init +EXPORT_SYMBOL vmlinux 0xbd61b17b sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xbd803510 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xbd897a1e kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0xbd9e5d49 __lshrdi3 +EXPORT_SYMBOL vmlinux 0xbda22917 dev_set_mtu +EXPORT_SYMBOL vmlinux 0xbdba9828 hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xbdc69c70 single_open +EXPORT_SYMBOL vmlinux 0xbdc8ecd7 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0xbdd01d66 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0xbdf829b1 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0xbdfc3f5f __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0xbe05176d devfreq_add_governor +EXPORT_SYMBOL vmlinux 0xbe0e5118 nla_memcmp +EXPORT_SYMBOL vmlinux 0xbe2c0274 add_timer +EXPORT_SYMBOL vmlinux 0xbe308863 blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0xbe342720 grab_cache_page_nowait +EXPORT_SYMBOL vmlinux 0xbe3f9062 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0xbe41b038 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0xbe489c43 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0xbe77aebe down_write_trylock +EXPORT_SYMBOL vmlinux 0xbec25473 of_parse_phandle +EXPORT_SYMBOL vmlinux 0xbece1857 module_refcount +EXPORT_SYMBOL vmlinux 0xbee6b9c7 adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf0c76d5 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0xbf2bce19 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0xbf45febe i2c_release_client +EXPORT_SYMBOL vmlinux 0xbf786fbf blkdev_get +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfaf83b9 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0xbfafed96 seq_vprintf +EXPORT_SYMBOL vmlinux 0xbfb500bc cleancache_register_ops +EXPORT_SYMBOL vmlinux 0xbfb5b8cf kmem_cache_create +EXPORT_SYMBOL vmlinux 0xbfb8b0b7 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfc23384 file_update_time +EXPORT_SYMBOL vmlinux 0xbfe274ec generic_file_remap_pages +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xc024347f __pci_register_driver +EXPORT_SYMBOL vmlinux 0xc02cf69b clkdev_drop +EXPORT_SYMBOL vmlinux 0xc068440e __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xc071dd5c vmalloc_to_page +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0780243 dqget +EXPORT_SYMBOL vmlinux 0xc07d9b09 thaw_bdev +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc083371b netif_carrier_off +EXPORT_SYMBOL vmlinux 0xc09f1f41 elevator_init +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0b4fa25 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0xc0b55bb3 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0xc0b9b36b dev_deactivate +EXPORT_SYMBOL vmlinux 0xc0ba8bd9 eth_change_mtu +EXPORT_SYMBOL vmlinux 0xc0d32e60 netpoll_rx_enable +EXPORT_SYMBOL vmlinux 0xc0e83c86 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0xc1097707 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0xc1140412 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0xc12b1c89 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0xc12ec3a6 dns_query +EXPORT_SYMBOL vmlinux 0xc131f1f5 inet_stream_connect +EXPORT_SYMBOL vmlinux 0xc149852e scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0xc152fa26 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0xc155a607 sk_stop_timer +EXPORT_SYMBOL vmlinux 0xc16d4bf4 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0xc196a9fc dev_uc_init +EXPORT_SYMBOL vmlinux 0xc1b82d22 register_shrinker +EXPORT_SYMBOL vmlinux 0xc1bdeb87 genphy_resume +EXPORT_SYMBOL vmlinux 0xc1c2dd09 __hw_addr_flush +EXPORT_SYMBOL vmlinux 0xc1cffe93 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0xc1fe5ed6 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0xc1fead8c vc_resize +EXPORT_SYMBOL vmlinux 0xc1ff7f08 dev_crit +EXPORT_SYMBOL vmlinux 0xc203560b pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0xc20d41b3 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0xc2165b13 dev_driver_string +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc256e762 __bitmap_equal +EXPORT_SYMBOL vmlinux 0xc2732305 tcf_hash_check +EXPORT_SYMBOL vmlinux 0xc29e94b2 inc_nlink +EXPORT_SYMBOL vmlinux 0xc2a3c728 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0xc2b2dd75 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0xc2b6fa41 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0xc2bddb76 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0xc2bdfab0 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0xc2d711e1 krealloc +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2eb5bee elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc3037fc9 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0xc3496438 remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0xc36303f8 inet6_del_offload +EXPORT_SYMBOL vmlinux 0xc368849f nvram_sync +EXPORT_SYMBOL vmlinux 0xc3835582 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0xc396ba2b mmc_erase +EXPORT_SYMBOL vmlinux 0xc3b1d5aa blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0xc3cfa928 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0xc3fd8d53 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0xc41f0516 node_states +EXPORT_SYMBOL vmlinux 0xc45755de find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0xc4636e66 key_reject_and_link +EXPORT_SYMBOL vmlinux 0xc4708199 cpm_muram_addr +EXPORT_SYMBOL vmlinux 0xc47cdf9c _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc49d0a95 bio_put +EXPORT_SYMBOL vmlinux 0xc4df83e4 dquot_scan_active +EXPORT_SYMBOL vmlinux 0xc4ef7de3 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0xc4f3c5b7 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0xc501b115 locks_free_lock +EXPORT_SYMBOL vmlinux 0xc502c587 vfs_mkdir +EXPORT_SYMBOL vmlinux 0xc53c2b62 xfrm_register_mode +EXPORT_SYMBOL vmlinux 0xc54e5d38 no_llseek +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc55ae705 mach_ppa8548 +EXPORT_SYMBOL vmlinux 0xc55c2a9d inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0xc564eb24 phy_device_register +EXPORT_SYMBOL vmlinux 0xc56f03a2 __mutex_init +EXPORT_SYMBOL vmlinux 0xc570d10f d_move +EXPORT_SYMBOL vmlinux 0xc589e044 param_set_long +EXPORT_SYMBOL vmlinux 0xc59480d0 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xc5a9f231 simple_dir_operations +EXPORT_SYMBOL vmlinux 0xc5b9b436 dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0xc5c08eab dpa_uio_bman +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5ec24f1 skb_seq_read +EXPORT_SYMBOL vmlinux 0xc5fa86fb jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc613e4d6 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc63e5516 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc663b075 __ioremap +EXPORT_SYMBOL vmlinux 0xc665d6d7 of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0xc667af90 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0xc66890b1 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0xc6711f75 agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0xc6867e19 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0xc68b50ab tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0xc68d99f8 netdev_info +EXPORT_SYMBOL vmlinux 0xc69361e2 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0xc6aaa710 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0xc6b44d7d inet6_getname +EXPORT_SYMBOL vmlinux 0xc6b48642 fm_set_rx_port_params +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6e1fd2f xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0xc6e364fd __dquot_free_space +EXPORT_SYMBOL vmlinux 0xc705fc39 ipv4_specific +EXPORT_SYMBOL vmlinux 0xc71100fe fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc768de19 cpu_all_bits +EXPORT_SYMBOL vmlinux 0xc76d15af scsi_host_get +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc78e5ea4 ppp_unit_number +EXPORT_SYMBOL vmlinux 0xc797bb2a inet_del_offload +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc7fdec21 redraw_screen +EXPORT_SYMBOL vmlinux 0xc800f1dd kernel_setsockopt +EXPORT_SYMBOL vmlinux 0xc81e5dc6 qman_query_fq +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 0xc853f012 ll_rw_block +EXPORT_SYMBOL vmlinux 0xc85eba82 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xc862dc2c lock_may_read +EXPORT_SYMBOL vmlinux 0xc86f3a4c fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc87f62e7 generic_file_open +EXPORT_SYMBOL vmlinux 0xc8807a46 fb_get_mode +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc89e3a83 fsync_bdev +EXPORT_SYMBOL vmlinux 0xc8a51b69 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0xc8abe793 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8b9590c udp_del_offload +EXPORT_SYMBOL vmlinux 0xc8b9a76b bman_recovery_exit +EXPORT_SYMBOL vmlinux 0xc8c4dc43 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0xc8c5b056 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0xc8d55e44 genl_unregister_family +EXPORT_SYMBOL vmlinux 0xc8e067d5 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0xc8e458f8 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0xc8e566f3 unlock_page +EXPORT_SYMBOL vmlinux 0xc910e0a0 clear_bdi_congested +EXPORT_SYMBOL vmlinux 0xc91ff664 down_read_trylock +EXPORT_SYMBOL vmlinux 0xc92781cf cdrom_open +EXPORT_SYMBOL vmlinux 0xc93d931c blk_execute_rq +EXPORT_SYMBOL vmlinux 0xc93fbc54 wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc968b949 sock_kfree_s +EXPORT_SYMBOL vmlinux 0xc96998d0 d_instantiate +EXPORT_SYMBOL vmlinux 0xc96fb6d0 qman_start_dequeues +EXPORT_SYMBOL vmlinux 0xc97a0542 empty_aops +EXPORT_SYMBOL vmlinux 0xc97fa88c ipmi_get_smi_info +EXPORT_SYMBOL vmlinux 0xc98cd169 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0xc996d097 del_timer +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9a37a91 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0xc9ab42cd simple_unlink +EXPORT_SYMBOL vmlinux 0xc9c18474 datagram_poll +EXPORT_SYMBOL vmlinux 0xc9efb7d0 inet_frag_find +EXPORT_SYMBOL vmlinux 0xc9f64a58 consume_skb +EXPORT_SYMBOL vmlinux 0xca0927d3 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0xca5dbc50 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xca9229ed pci_disable_device +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xca99fa48 eth_type_trans +EXPORT_SYMBOL vmlinux 0xcaaed24a agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0xcab0f66f fm_bind +EXPORT_SYMBOL vmlinux 0xcac7352a swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0xcacd272d atomic64_sub_return +EXPORT_SYMBOL vmlinux 0xcaea2590 address_space_init_once +EXPORT_SYMBOL vmlinux 0xcaeac6bb ps2_handle_response +EXPORT_SYMBOL vmlinux 0xcb018b3c generic_pipe_buf_unmap +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb0c5d50 param_get_uint +EXPORT_SYMBOL vmlinux 0xcb14c091 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0xcb47aa76 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0xcb4cc752 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xcb53a046 keyring_search +EXPORT_SYMBOL vmlinux 0xcb677f51 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0xcb773408 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0xcb7af96a alloc_mdio_bitbang +EXPORT_SYMBOL vmlinux 0xcb7d2f01 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0xcb8f9ac6 i8042_remove_filter +EXPORT_SYMBOL vmlinux 0xcbbaa32c call_netdevice_notifiers_info +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbe3359d agp_find_bridge +EXPORT_SYMBOL vmlinux 0xcbfec50a bio_sector_offset +EXPORT_SYMBOL vmlinux 0xcc00bcee nla_put +EXPORT_SYMBOL vmlinux 0xcc02d6db __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0xcc0accdd zerocopy_sg_from_iovec +EXPORT_SYMBOL vmlinux 0xcc17504d _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc35af9b textsearch_prepare +EXPORT_SYMBOL vmlinux 0xcc37f55c blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xcc4b84da of_find_node_by_type +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc7995e1 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xcc7fa952 local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0xcc808e3a tcf_register_action +EXPORT_SYMBOL vmlinux 0xcc9b9806 locks_copy_lock +EXPORT_SYMBOL vmlinux 0xcca57418 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xcce5c5dd iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0xcd0529c7 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xcd0826e7 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0xcd0cd3e8 proto_unregister +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd3dddee unregister_framebuffer +EXPORT_SYMBOL vmlinux 0xcd86c87f __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xcd8be3b7 input_event +EXPORT_SYMBOL vmlinux 0xcda046fe tcp_v4_connect +EXPORT_SYMBOL vmlinux 0xcdac8c49 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdd5caaa sys_fillrect +EXPORT_SYMBOL vmlinux 0xcddf3cf3 scsi_free_command +EXPORT_SYMBOL vmlinux 0xcde172ac radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0xcde7123d bio_integrity_clone +EXPORT_SYMBOL vmlinux 0xcdeac6dd tty_mutex +EXPORT_SYMBOL vmlinux 0xce054683 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0xce13f50f uart_resume_port +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce849a03 input_free_device +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceb43bc9 scsi_execute +EXPORT_SYMBOL vmlinux 0xcec0f98a simple_dentry_operations +EXPORT_SYMBOL vmlinux 0xcedc8156 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0xcee60697 dev_mc_sync +EXPORT_SYMBOL vmlinux 0xcef0058b scsi_ioctl +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf0d8500 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0xcf1d7646 isa_mem_base +EXPORT_SYMBOL vmlinux 0xcf287962 mark_page_accessed +EXPORT_SYMBOL vmlinux 0xcf2f1e25 unregister_filesystem +EXPORT_SYMBOL vmlinux 0xcf3025cb inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0xcf360650 pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0xcf438e1e mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0xcf79f0a8 tty_devnum +EXPORT_SYMBOL vmlinux 0xcf962958 sock_update_memcg +EXPORT_SYMBOL vmlinux 0xcfa41c51 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0xcfdd0a94 pskb_expand_head +EXPORT_SYMBOL vmlinux 0xcfdfa248 kvm_read_guest_atomic +EXPORT_SYMBOL vmlinux 0xcfeb921a iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0xd0170251 pci_dev_put +EXPORT_SYMBOL vmlinux 0xd0181f4f __bitmap_xor +EXPORT_SYMBOL vmlinux 0xd01ac223 i2c_bit_add_bus +EXPORT_SYMBOL vmlinux 0xd02b775a check_disk_size_change +EXPORT_SYMBOL vmlinux 0xd038df9e pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0xd038e272 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0xd06aa5d3 pipe_to_file +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd0821f93 skb_copy_and_csum_datagram_iovec +EXPORT_SYMBOL vmlinux 0xd0858fb3 set_blocksize +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0d42c42 mod_timer_pending +EXPORT_SYMBOL vmlinux 0xd0e1babb register_framebuffer +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0f11b74 user_path_at +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 0xd10c3452 idr_init +EXPORT_SYMBOL vmlinux 0xd1180d3b posix_lock_file_wait +EXPORT_SYMBOL vmlinux 0xd11c0dc1 __kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xd1226692 dget_parent +EXPORT_SYMBOL vmlinux 0xd123fc3e gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0xd138719c qman_recovery_exit +EXPORT_SYMBOL vmlinux 0xd1583a9a alloc_disk_node +EXPORT_SYMBOL vmlinux 0xd15b74ce netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0xd16944aa __put_cred +EXPORT_SYMBOL vmlinux 0xd1766b2c register_qdisc +EXPORT_SYMBOL vmlinux 0xd1773f76 of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0xd177b12f do_truncate +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd196c9be kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xd1a55ca3 dm_put_device +EXPORT_SYMBOL vmlinux 0xd1be7c4a i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0xd1cc0681 percpu_counter_compare +EXPORT_SYMBOL vmlinux 0xd1e1b852 sys_copyarea +EXPORT_SYMBOL vmlinux 0xd1e3f3c4 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xd1e9cd50 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd234a72f freeze_super +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 0xd271a53d tcp_connect +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd296e9c5 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0xd2a2a1b6 fget_raw +EXPORT_SYMBOL vmlinux 0xd2af138b reservation_ww_class +EXPORT_SYMBOL vmlinux 0xd2b7f9e3 fm_port_unbind +EXPORT_SYMBOL vmlinux 0xd2c71b83 inet_add_protocol +EXPORT_SYMBOL vmlinux 0xd2cbc917 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0xd2cd5568 interruptible_sleep_on_timeout +EXPORT_SYMBOL vmlinux 0xd2cd7839 __get_page_tail +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2fc19bd proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0xd2fe3ed9 neigh_seq_start +EXPORT_SYMBOL vmlinux 0xd318d218 md_write_start +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd32265ed dev_err +EXPORT_SYMBOL vmlinux 0xd327d665 netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0xd33b9aba netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0xd343c42a key_invalidate +EXPORT_SYMBOL vmlinux 0xd353366a jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0xd38f2164 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0xd3c747a1 qman_irqsource_remove +EXPORT_SYMBOL vmlinux 0xd4192559 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0xd41e879b pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0xd426fde3 i2c_master_send +EXPORT_SYMBOL vmlinux 0xd45f2f5b ipmi_smi_add_proc_entry +EXPORT_SYMBOL vmlinux 0xd4723910 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0xd47fb9e4 __kfree_skb +EXPORT_SYMBOL vmlinux 0xd48cf6be seq_read +EXPORT_SYMBOL vmlinux 0xd4b10a08 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xd4d57bd6 agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0xd51dc1ab dev_change_flags +EXPORT_SYMBOL vmlinux 0xd51dd2e3 set_device_ro +EXPORT_SYMBOL vmlinux 0xd52239ad qman_set_null_cb +EXPORT_SYMBOL vmlinux 0xd526078e sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xd53d9a02 vlan_untag +EXPORT_SYMBOL vmlinux 0xd546d65b file_open_root +EXPORT_SYMBOL vmlinux 0xd54bc6f7 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0xd54ea341 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0xd5726057 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0xd57eb331 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0xd594bec0 key_task_permission +EXPORT_SYMBOL vmlinux 0xd5b2e52a single_step_exception +EXPORT_SYMBOL vmlinux 0xd5b31f01 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0xd5dea386 kernel_sendpage +EXPORT_SYMBOL vmlinux 0xd5e8444a __div64_32 +EXPORT_SYMBOL vmlinux 0xd5ee3607 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0xd5f2172f del_timer_sync +EXPORT_SYMBOL vmlinux 0xd606503d register_sysctl +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd61674e0 mdiobus_register +EXPORT_SYMBOL vmlinux 0xd61a1ac1 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0xd621a566 __elv_add_request +EXPORT_SYMBOL vmlinux 0xd627480b strncat +EXPORT_SYMBOL vmlinux 0xd629c5d4 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0xd638e1f3 console_start +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd664f464 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xd66607d4 dma_pool_create +EXPORT_SYMBOL vmlinux 0xd66c47aa eth_header_cache_update +EXPORT_SYMBOL vmlinux 0xd67a636b in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xd6829066 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd69b30e0 atomic64_add_unless +EXPORT_SYMBOL vmlinux 0xd6a70e3f jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0xd6c343f1 pme_ctx_disable +EXPORT_SYMBOL vmlinux 0xd6d63e9d lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0xd6e0382e mmc_alloc_host +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6f1556e bio_pair_release +EXPORT_SYMBOL vmlinux 0xd6fc19c0 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0xd7055275 block_write_begin +EXPORT_SYMBOL vmlinux 0xd70f3046 clear_nlink +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd761a383 ioremap_prot +EXPORT_SYMBOL vmlinux 0xd7653333 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0xd77a2f5c pme_stat_get +EXPORT_SYMBOL vmlinux 0xd77a5aa5 __bitmap_and +EXPORT_SYMBOL vmlinux 0xd79b5a02 allow_signal +EXPORT_SYMBOL vmlinux 0xd7a34281 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0xd7a38739 agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0xd7b5ec67 elv_rb_del +EXPORT_SYMBOL vmlinux 0xd7c4db35 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7e8101e pci_set_master +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd81810b6 sget +EXPORT_SYMBOL vmlinux 0xd8189fa6 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0xd818be98 fb_blank +EXPORT_SYMBOL vmlinux 0xd84e336b scsi_release_buffers +EXPORT_SYMBOL vmlinux 0xd85833cb __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0xd876c37a update_region +EXPORT_SYMBOL vmlinux 0xd88fa86e kobject_set_name +EXPORT_SYMBOL vmlinux 0xd89556ab devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8c72cf0 ifla_policy +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8ea93d6 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0xd8eab641 kdb_current_task +EXPORT_SYMBOL vmlinux 0xd8f816ac ilookup5 +EXPORT_SYMBOL vmlinux 0xd92afabe bitmap_clear +EXPORT_SYMBOL vmlinux 0xd939200b nobh_write_end +EXPORT_SYMBOL vmlinux 0xd9498b22 proc_dointvec +EXPORT_SYMBOL vmlinux 0xd96561d2 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0xd9744f96 agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0xd97a3bf6 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0xd980de8f wireless_send_event +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd9949a3d __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xd9966d95 phy_start_aneg +EXPORT_SYMBOL vmlinux 0xd9a9bb30 getname +EXPORT_SYMBOL vmlinux 0xd9bac924 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0xd9c22f6b skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0xd9ce8f0c strnlen +EXPORT_SYMBOL vmlinux 0xd9efe1b0 sg_miter_start +EXPORT_SYMBOL vmlinux 0xd9f3aed9 kfree_put_link +EXPORT_SYMBOL vmlinux 0xda15d912 sock_wmalloc +EXPORT_SYMBOL vmlinux 0xda2478d0 param_ops_short +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda49166e proc_set_size +EXPORT_SYMBOL vmlinux 0xda56fe01 PDE_DATA +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda804673 dev_get_nest_level +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda923dc8 netpoll_setup +EXPORT_SYMBOL vmlinux 0xda97c0eb eth_header_parse +EXPORT_SYMBOL vmlinux 0xda9a3691 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0xda9ffe25 nf_register_hook +EXPORT_SYMBOL vmlinux 0xdaa16b82 of_clk_get +EXPORT_SYMBOL vmlinux 0xdaa57ec3 totalhigh_pages +EXPORT_SYMBOL vmlinux 0xdabc1ea8 fsl_lbc_find +EXPORT_SYMBOL vmlinux 0xdac64451 bio_add_page +EXPORT_SYMBOL vmlinux 0xdac9469d inet_register_protosw +EXPORT_SYMBOL vmlinux 0xdad7adff dqstats +EXPORT_SYMBOL vmlinux 0xdadfaa38 km_policy_expired +EXPORT_SYMBOL vmlinux 0xdaeccd99 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0xdb01198e fsl_upm_find +EXPORT_SYMBOL vmlinux 0xdb13d36b bio_integrity_trim +EXPORT_SYMBOL vmlinux 0xdb28a4b9 neigh_event_ns +EXPORT_SYMBOL vmlinux 0xdb3ddf76 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0xdb41739b set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdbb24fc2 down_write +EXPORT_SYMBOL vmlinux 0xdbb947f1 tty_port_put +EXPORT_SYMBOL vmlinux 0xdbbc3d91 skb_pull +EXPORT_SYMBOL vmlinux 0xdbcd416e sysctl_ip_nonlocal_bind +EXPORT_SYMBOL vmlinux 0xdbcf9844 alloc_pci_dev +EXPORT_SYMBOL vmlinux 0xdbdc8c1e of_phy_connect_fixed_link +EXPORT_SYMBOL vmlinux 0xdbe529aa bdget_disk +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc3b2849 kernel_listen +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc736dce jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0xdc7a720f mmc_can_erase +EXPORT_SYMBOL vmlinux 0xdc9498dd down +EXPORT_SYMBOL vmlinux 0xdccd660e mmc_put_card +EXPORT_SYMBOL vmlinux 0xdcdb3ea7 tty_vhangup +EXPORT_SYMBOL vmlinux 0xdcf31377 kill_litter_super +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd27fa87 memchr +EXPORT_SYMBOL vmlinux 0xdd2c9ba2 neigh_seq_next +EXPORT_SYMBOL vmlinux 0xdd327f7b bdi_init +EXPORT_SYMBOL vmlinux 0xdd3acb0b xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0xdd3c8dd6 phy_attach +EXPORT_SYMBOL vmlinux 0xdd45b42b cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0xdd725237 xfrm_lookup +EXPORT_SYMBOL vmlinux 0xdd7db56e jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0xde07a772 inet_csk_accept +EXPORT_SYMBOL vmlinux 0xde10eb10 param_set_invbool +EXPORT_SYMBOL vmlinux 0xde11a4b6 nf_log_set +EXPORT_SYMBOL vmlinux 0xde405928 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0xde463e0a posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0xde48e9ca _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xde559d84 bmap +EXPORT_SYMBOL vmlinux 0xde5b1708 input_register_handler +EXPORT_SYMBOL vmlinux 0xde6aecc0 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0xde82e44a mmc_can_reset +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xdedcfd51 eth_validate_addr +EXPORT_SYMBOL vmlinux 0xdefa0ad8 qman_testwrite_cgr +EXPORT_SYMBOL vmlinux 0xdf13971c dpa_uio_qman +EXPORT_SYMBOL vmlinux 0xdf27d980 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf4241c1 netif_carrier_on +EXPORT_SYMBOL vmlinux 0xdf43c612 inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf5e9e1c mach_qemu_e500 +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf6ca4a0 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0xdf8bd78d simple_setattr +EXPORT_SYMBOL vmlinux 0xdf8e096d jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdfc22f3d tty_set_operations +EXPORT_SYMBOL vmlinux 0xdfc67925 init_special_inode +EXPORT_SYMBOL vmlinux 0xdfd7c518 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0xdfefb164 pm860x_page_set_bits +EXPORT_SYMBOL vmlinux 0xdff43ed4 __debugger +EXPORT_SYMBOL vmlinux 0xe01ab46c __dev_get_by_name +EXPORT_SYMBOL vmlinux 0xe0262ccf vlan_dev_real_dev +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 0xe083b942 tty_check_change +EXPORT_SYMBOL vmlinux 0xe086a0c5 scsi_scan_host +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0bea4ff fb_set_var +EXPORT_SYMBOL vmlinux 0xe0e8209a skb_checksum_help +EXPORT_SYMBOL vmlinux 0xe0ef10c7 ida_simple_remove +EXPORT_SYMBOL vmlinux 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe11be300 __bread +EXPORT_SYMBOL vmlinux 0xe11c0543 page_address +EXPORT_SYMBOL vmlinux 0xe12991a9 lro_receive_frags +EXPORT_SYMBOL vmlinux 0xe1490268 sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0xe15b5948 simple_lookup +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe18159a3 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0xe19014b4 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0xe1bcbfd2 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0xe1c8f9a4 nf_afinfo +EXPORT_SYMBOL vmlinux 0xe1fb2b97 send_sig_info +EXPORT_SYMBOL vmlinux 0xe1fc3257 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe24ea86e generic_file_mmap +EXPORT_SYMBOL vmlinux 0xe250937f inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xe28f8a52 max8998_read_reg +EXPORT_SYMBOL vmlinux 0xe2994355 km_policy_notify +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 0xe2e5114f pcim_pin_device +EXPORT_SYMBOL vmlinux 0xe2e8065e memdup_user +EXPORT_SYMBOL vmlinux 0xe2eeff8d proto_register +EXPORT_SYMBOL vmlinux 0xe2f807a9 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0xe2f80f79 sock_no_getname +EXPORT_SYMBOL vmlinux 0xe2fae716 kmemdup +EXPORT_SYMBOL vmlinux 0xe2fe64e7 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0xe3041222 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0xe31a63fa follow_pfn +EXPORT_SYMBOL vmlinux 0xe35c5285 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0xe36c6501 fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0xe3aef46b swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0xe3b1a4bb submit_bio +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3de50bd qman_destroy_fq +EXPORT_SYMBOL vmlinux 0xe41d3d34 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0xe41fd087 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0xe43a02d2 netif_skb_dev_features +EXPORT_SYMBOL vmlinux 0xe467f96e dcb_getapp +EXPORT_SYMBOL vmlinux 0xe47af939 dev_printk_emit +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe49808b4 qman_poll +EXPORT_SYMBOL vmlinux 0xe4a8734f blk_mq_free_queue +EXPORT_SYMBOL vmlinux 0xe4a895fa up_write +EXPORT_SYMBOL vmlinux 0xe4a9b599 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xe4bd636e genl_notify +EXPORT_SYMBOL vmlinux 0xe4be4873 d_find_any_alias +EXPORT_SYMBOL vmlinux 0xe4c1866b __locks_copy_lock +EXPORT_SYMBOL vmlinux 0xe4d3a7f0 dev_get_by_flags_rcu +EXPORT_SYMBOL vmlinux 0xe4e0b6c8 write_one_page +EXPORT_SYMBOL vmlinux 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL vmlinux 0xe4fe8ca1 _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xe5122890 flow_cache_genid +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe52bf275 local_flush_tlb_page +EXPORT_SYMBOL vmlinux 0xe537c4a5 dquot_quota_on +EXPORT_SYMBOL vmlinux 0xe53d1faa of_translate_dma_address +EXPORT_SYMBOL vmlinux 0xe5428b11 bio_clone_bioset +EXPORT_SYMBOL vmlinux 0xe554d978 inode_dio_done +EXPORT_SYMBOL vmlinux 0xe576636e cookie_check_timestamp +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe5b3a4b6 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0xe5b41c94 give_up_console +EXPORT_SYMBOL vmlinux 0xe5c393fb of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0xe5c40d3e security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe62d7b4a find_lock_page +EXPORT_SYMBOL vmlinux 0xe62eb862 kernel_bind +EXPORT_SYMBOL vmlinux 0xe63f00be __insert_inode_hash +EXPORT_SYMBOL vmlinux 0xe6514ed2 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0xe66452ab dql_init +EXPORT_SYMBOL vmlinux 0xe66efd70 tcp_gso_segment +EXPORT_SYMBOL vmlinux 0xe68cf51c fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL vmlinux 0xe6dd236d clear_pages +EXPORT_SYMBOL vmlinux 0xe6ebc016 key_create_or_update +EXPORT_SYMBOL vmlinux 0xe6f25126 kernel_write +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe712a96a blk_put_queue +EXPORT_SYMBOL vmlinux 0xe7268065 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0xe7548b87 __getblk +EXPORT_SYMBOL vmlinux 0xe7575cc0 pme_ctx_exclusive_dec +EXPORT_SYMBOL vmlinux 0xe77b941f pme2_exclusive_set +EXPORT_SYMBOL vmlinux 0xe77d4478 input_set_capability +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a7cb83 get_super_thawed +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7c84014 lockref_mark_dead +EXPORT_SYMBOL vmlinux 0xe7ce7439 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0xe7d267d2 dmam_pool_create +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7e0f702 unregister_qdisc +EXPORT_SYMBOL vmlinux 0xe7f5b87e blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0xe80f7f57 fb_validate_mode +EXPORT_SYMBOL vmlinux 0xe830c043 input_unregister_handle +EXPORT_SYMBOL vmlinux 0xe833fa77 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0xe851bb05 queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0xe8527224 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0xe8924f2d iget5_locked +EXPORT_SYMBOL vmlinux 0xe898bfba crc32_le_combine +EXPORT_SYMBOL vmlinux 0xe8b63ace radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xe8b82fe0 bman_ip_rev +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8ca1e91 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0xe90294ae install_exec_creds +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe9397d29 ndo_dflt_bridge_getlink +EXPORT_SYMBOL vmlinux 0xe93b4d2d mb_cache_destroy +EXPORT_SYMBOL vmlinux 0xe94183cf elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0xe941cca7 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0xe94298f0 simple_readpage +EXPORT_SYMBOL vmlinux 0xe94eb0d2 ip6_frag_init +EXPORT_SYMBOL vmlinux 0xe950499d qman_release_fqid_range +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe95d590a __frontswap_store +EXPORT_SYMBOL vmlinux 0xe978b78d pme_hw_flow_new +EXPORT_SYMBOL vmlinux 0xe9829f9f mmc_free_host +EXPORT_SYMBOL vmlinux 0xe98ac2fd sk_common_release +EXPORT_SYMBOL vmlinux 0xe9ce22f5 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0xe9e45d73 blk_register_region +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea10212a int_to_scsilun +EXPORT_SYMBOL vmlinux 0xea10655a __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xea16dd4c tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xea18b2b8 generic_show_options +EXPORT_SYMBOL vmlinux 0xea2b6655 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0xea3853de fget +EXPORT_SYMBOL vmlinux 0xea52e8f7 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0xea631d7a scsi_host_alloc +EXPORT_SYMBOL vmlinux 0xea6858b7 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0xea6d70b7 security_path_link +EXPORT_SYMBOL vmlinux 0xea6e3003 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0xea7987f1 key_update +EXPORT_SYMBOL vmlinux 0xea7e05d6 netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0xea8207f8 lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xea8cd481 vc_cons +EXPORT_SYMBOL vmlinux 0xea8f18b4 netdev_state_change +EXPORT_SYMBOL vmlinux 0xea968c96 ___ratelimit +EXPORT_SYMBOL vmlinux 0xea99d356 blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0xea9b5611 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0xeaa2301a release_sock +EXPORT_SYMBOL vmlinux 0xeab0819b pme_ctx_is_disabled +EXPORT_SYMBOL vmlinux 0xeab4a2fc dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0xeab9b5a6 secpath_dup +EXPORT_SYMBOL vmlinux 0xeac20168 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0xeade89ae page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xeae6697b inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0xeae74528 module_put +EXPORT_SYMBOL vmlinux 0xeb27edbd writeback_in_progress +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb3aba8a netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0xeb42b5d1 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0xeb5420b1 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb5b5c18 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0xeb65cb91 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xeb89f5be seq_bitmap +EXPORT_SYMBOL vmlinux 0xeb913fd0 netdev_update_features +EXPORT_SYMBOL vmlinux 0xebb07ac4 security_task_getsecid +EXPORT_SYMBOL vmlinux 0xebbe5aaa __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0xebc90ad8 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0xebce6068 neigh_table_clear +EXPORT_SYMBOL vmlinux 0xebdbe48c radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xec00fb08 flock_lock_file_wait +EXPORT_SYMBOL vmlinux 0xec10785d blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0xec17ebb0 of_match_node +EXPORT_SYMBOL vmlinux 0xec1aa6ef memzero_explicit +EXPORT_SYMBOL vmlinux 0xec222963 kset_register +EXPORT_SYMBOL vmlinux 0xec3a1be4 dev_set_group +EXPORT_SYMBOL vmlinux 0xec3fea28 read_cache_pages +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec6ca4fd scsi_host_lookup +EXPORT_SYMBOL vmlinux 0xec7dc869 simple_open +EXPORT_SYMBOL vmlinux 0xec7f6c18 __scm_destroy +EXPORT_SYMBOL vmlinux 0xec8362ce scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0xec8ad421 gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0xecae5236 rt6_lookup +EXPORT_SYMBOL vmlinux 0xecbe04c2 tty_write_room +EXPORT_SYMBOL vmlinux 0xecc1449e bm_pool_set +EXPORT_SYMBOL vmlinux 0xecc14e52 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0xecd19919 inode_init_owner +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xeced3386 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0xecf5d933 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0xed0e6391 tcf_hash_create +EXPORT_SYMBOL vmlinux 0xed1887d1 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0xed20abf2 switch_mmu_context +EXPORT_SYMBOL vmlinux 0xed233843 ftrace_raw_output_prep +EXPORT_SYMBOL vmlinux 0xed26d24d dst_discard +EXPORT_SYMBOL vmlinux 0xed45dcaf sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0xed46edb1 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed69d8c9 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0xed6a4ef5 agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0xed75817b ppc_md +EXPORT_SYMBOL vmlinux 0xed75efb2 nobh_write_begin +EXPORT_SYMBOL vmlinux 0xed93f29e __kunmap_atomic +EXPORT_SYMBOL vmlinux 0xed9bf877 devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xeda73c6d pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0xedb86488 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc410d0 udplite_table +EXPORT_SYMBOL vmlinux 0xedd3da6d devm_ioport_map +EXPORT_SYMBOL vmlinux 0xedd8f6fd fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0xee246dff ida_destroy +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee315279 vsc824x_add_skew +EXPORT_SYMBOL vmlinux 0xee3c7d55 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0xee5cec3d pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0xee6989e9 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0xee735ac7 alloc_file +EXPORT_SYMBOL vmlinux 0xee7f6150 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeadabf8 blk_end_request_all +EXPORT_SYMBOL vmlinux 0xeed2562c simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0xeed262c7 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0xeee50f2b check_submounts_and_drop +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xeefe91e1 kmem_cache_free +EXPORT_SYMBOL vmlinux 0xef054f89 unregister_netdev +EXPORT_SYMBOL vmlinux 0xef109449 interruptible_sleep_on +EXPORT_SYMBOL vmlinux 0xef19ab52 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0xef26a740 bio_integrity_tag_size +EXPORT_SYMBOL vmlinux 0xef317342 input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0xef46f613 ata_port_printk +EXPORT_SYMBOL vmlinux 0xef6c3769 devm_gpio_request +EXPORT_SYMBOL vmlinux 0xef77374b pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0xefc987ee dev_set_allmulti +EXPORT_SYMBOL vmlinux 0xefd36d97 lookup_one_len +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 0xf0053a76 splice_from_pipe_next +EXPORT_SYMBOL vmlinux 0xf0099138 dentry_open +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf018be80 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0xf0227e5a twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0xf02639e2 swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0xf032c0bf bio_copy_kern +EXPORT_SYMBOL vmlinux 0xf03302c7 posix_test_lock +EXPORT_SYMBOL vmlinux 0xf04065bd tty_hangup +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf06134e7 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0xf0619801 timekeeping_clocktai +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf0783801 of_phy_attach +EXPORT_SYMBOL vmlinux 0xf07cdf9a inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0xf0832bf7 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0xf087137d __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0a8792a __dquot_transfer +EXPORT_SYMBOL vmlinux 0xf0a880be bio_unmap_user +EXPORT_SYMBOL vmlinux 0xf0ae2260 __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xf0b419aa tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xf0d68ed6 clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0xf0defb7b __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0xf0e57a9f bman_flush_stockpile +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0f1246c kvasprintf +EXPORT_SYMBOL vmlinux 0xf0fd4e8f rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0xf0ffa613 security_mmap_file +EXPORT_SYMBOL vmlinux 0xf100416a remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xf10b11c5 vlan_vid_add +EXPORT_SYMBOL vmlinux 0xf10bf82c kern_path +EXPORT_SYMBOL vmlinux 0xf10ca3e7 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0xf10dc0c5 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf11cd6ce down_interruptible +EXPORT_SYMBOL vmlinux 0xf12a75b6 udp_add_offload +EXPORT_SYMBOL vmlinux 0xf13637e2 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0xf13feb57 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf1944a5c genphy_read_status +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1bb6437 pci_release_regions +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1deabf2 div64_u64 +EXPORT_SYMBOL vmlinux 0xf1e06df1 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf202c5cb radix_tree_insert +EXPORT_SYMBOL vmlinux 0xf20543ba __dst_free +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf21bc919 scsi_add_device +EXPORT_SYMBOL vmlinux 0xf222defb __ip_select_ident +EXPORT_SYMBOL vmlinux 0xf223bc29 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0xf22881e8 lg_local_lock +EXPORT_SYMBOL vmlinux 0xf22d72f5 padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL vmlinux 0xf27097df padata_set_cpumask +EXPORT_SYMBOL vmlinux 0xf283a5b7 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2a62398 security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0xf2b1ac8e __getnstimeofday +EXPORT_SYMBOL vmlinux 0xf2c22287 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0xf2e12bc4 tcf_exts_change +EXPORT_SYMBOL vmlinux 0xf2eb902e con_copy_unimap +EXPORT_SYMBOL vmlinux 0xf2f61dfa __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0xf30d1923 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf31910df tty_unlock +EXPORT_SYMBOL vmlinux 0xf31bb597 rtnl_notify +EXPORT_SYMBOL vmlinux 0xf322a206 bit_waitqueue +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf34199ee inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf349ae31 disk_stack_limits +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf356cba7 neigh_connected_output +EXPORT_SYMBOL vmlinux 0xf3712909 qman_query_congestion +EXPORT_SYMBOL vmlinux 0xf377c729 d_obtain_alias +EXPORT_SYMBOL vmlinux 0xf37d6d20 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf39264ed __break_lease +EXPORT_SYMBOL vmlinux 0xf39c8604 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0xf3bf0bce __bitmap_complement +EXPORT_SYMBOL vmlinux 0xf3c82b96 cfb_imageblit +EXPORT_SYMBOL vmlinux 0xf3cbc853 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0xf3e00e6b ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0xf3e192be tcp_recvmsg +EXPORT_SYMBOL vmlinux 0xf3ed316b generic_permission +EXPORT_SYMBOL vmlinux 0xf3fbe9be elv_rb_add +EXPORT_SYMBOL vmlinux 0xf404f67d fddi_change_mtu +EXPORT_SYMBOL vmlinux 0xf40506da write_dirty_buffer +EXPORT_SYMBOL vmlinux 0xf40b2297 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xf4246c11 scm_fp_dup +EXPORT_SYMBOL vmlinux 0xf43c642e ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf4449388 timer_interrupt +EXPORT_SYMBOL vmlinux 0xf44e6e3d vfs_readv +EXPORT_SYMBOL vmlinux 0xf451313b nf_log_unregister +EXPORT_SYMBOL vmlinux 0xf467eb2a udp_lib_rehash +EXPORT_SYMBOL vmlinux 0xf4a0912f tty_register_driver +EXPORT_SYMBOL vmlinux 0xf4b8444a qman_init_fq +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f4dfa3 phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0xf4fbfa6e generic_file_splice_read +EXPORT_SYMBOL vmlinux 0xf5222143 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0xf52321e0 atomic64_sub +EXPORT_SYMBOL vmlinux 0xf5299441 would_dump +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf5868baa cad_pid +EXPORT_SYMBOL vmlinux 0xf59c14f3 phy_scan_fixups +EXPORT_SYMBOL vmlinux 0xf5a085c4 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0xf5a62ecc _memset_io +EXPORT_SYMBOL vmlinux 0xf5b714ad sock_no_mmap +EXPORT_SYMBOL vmlinux 0xf5be905b eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0xf5c05914 generic_segment_checks +EXPORT_SYMBOL vmlinux 0xf5c861d1 netlink_net_capable +EXPORT_SYMBOL vmlinux 0xf5d8ec75 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0xf5e1558d crash_shutdown_unregister +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf60a920e bio_integrity_prep +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf66d2c8a bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0xf67d90a2 phy_disconnect +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf68687be __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xf693380a generic_listxattr +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6c9ccfd rtnl_create_link +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf70384d7 __debugger_sstep +EXPORT_SYMBOL vmlinux 0xf7074dbc scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0xf71521ba atomic64_add_return +EXPORT_SYMBOL vmlinux 0xf71706e8 scsi_register_interface +EXPORT_SYMBOL vmlinux 0xf737026a jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0xf741c793 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf7817513 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0xf7900a08 build_skb +EXPORT_SYMBOL vmlinux 0xf7e271bd abx500_remove_ops +EXPORT_SYMBOL vmlinux 0xf7e53fe2 pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0xf7fc4d5c load_nls_default +EXPORT_SYMBOL vmlinux 0xf803fe39 bitmap_set +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf827ebed devm_gpio_free +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82cb184 pci_enable_ltr +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf84527bc cdrom_release +EXPORT_SYMBOL vmlinux 0xf86c380e twl6040_power +EXPORT_SYMBOL vmlinux 0xf8772a8a of_platform_device_create +EXPORT_SYMBOL vmlinux 0xf890c80e qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0xf89851a0 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0xf89a3d62 bman_affine_cpus +EXPORT_SYMBOL vmlinux 0xf89c8e07 ida_pre_get +EXPORT_SYMBOL vmlinux 0xf8bb9e86 fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0xf8c5bdae neigh_app_ns +EXPORT_SYMBOL vmlinux 0xf8e398fc memstart_addr +EXPORT_SYMBOL vmlinux 0xf91c272f sb_set_blocksize +EXPORT_SYMBOL vmlinux 0xf9228003 get_immrbase +EXPORT_SYMBOL vmlinux 0xf925e290 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0xf9348cbc xz_dec_run +EXPORT_SYMBOL vmlinux 0xf940a328 __next_cpu +EXPORT_SYMBOL vmlinux 0xf96f6bbb dev_get_flags +EXPORT_SYMBOL vmlinux 0xf9725cce vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0xf977b775 pci_save_state +EXPORT_SYMBOL vmlinux 0xf987575d __seq_open_private +EXPORT_SYMBOL vmlinux 0xf9a12923 from_kuid_munged +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9b70b28 clk_add_alias +EXPORT_SYMBOL vmlinux 0xf9bdd773 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0xf9c172f5 migrate_page +EXPORT_SYMBOL vmlinux 0xf9c367e0 iov_pages +EXPORT_SYMBOL vmlinux 0xf9d32e4a iunique +EXPORT_SYMBOL vmlinux 0xf9def97f check_disk_change +EXPORT_SYMBOL vmlinux 0xf9df3b89 km_query +EXPORT_SYMBOL vmlinux 0xf9e73082 scnprintf +EXPORT_SYMBOL vmlinux 0xf9e9839e ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0xfa1eeb57 ether_setup +EXPORT_SYMBOL vmlinux 0xfa561244 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa6322e1 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xfa68eece dev_mc_add +EXPORT_SYMBOL vmlinux 0xfa6c8623 pme_ctx_ctrl_update_flow +EXPORT_SYMBOL vmlinux 0xfa784682 end_page_writeback +EXPORT_SYMBOL vmlinux 0xfa7f2b64 fm_port_disable +EXPORT_SYMBOL vmlinux 0xfa7f3156 wl12xx_get_platform_data +EXPORT_SYMBOL vmlinux 0xfa963b4a blk_peek_request +EXPORT_SYMBOL vmlinux 0xfaa9e5c1 dma_direct_ops +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfad50f88 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaf98462 bitrev32 +EXPORT_SYMBOL vmlinux 0xfb06febd tty_port_tty_get +EXPORT_SYMBOL vmlinux 0xfb1376dd giveup_fpu +EXPORT_SYMBOL vmlinux 0xfb149f13 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0xfb2217fd ip_getsockopt +EXPORT_SYMBOL vmlinux 0xfb2394fb swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0xfb49631d unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0xfb4a2fde __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0xfb58147a serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbd74ddc tcf_exts_validate +EXPORT_SYMBOL vmlinux 0xfbe243c8 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0xfbed3301 netlink_unicast +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc2b011f __ip_dev_find +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc3b160f mempool_create_node +EXPORT_SYMBOL vmlinux 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfc6cedb3 fsl_lbc_ctrl_dev +EXPORT_SYMBOL vmlinux 0xfc86cc44 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0xfca2acdd setup_arg_pages +EXPORT_SYMBOL vmlinux 0xfcaa04a0 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xfcadac8e mount_bdev +EXPORT_SYMBOL vmlinux 0xfcaeb488 generic_write_end +EXPORT_SYMBOL vmlinux 0xfcaf002e lock_sock_nested +EXPORT_SYMBOL vmlinux 0xfcaf9691 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd20df19 tcp_poll +EXPORT_SYMBOL vmlinux 0xfd3571e3 user_revoke +EXPORT_SYMBOL vmlinux 0xfd4c43df max8998_bulk_read +EXPORT_SYMBOL vmlinux 0xfd6293c2 boot_tvec_bases +EXPORT_SYMBOL vmlinux 0xfd9003b6 inet_listen +EXPORT_SYMBOL vmlinux 0xfd905678 km_state_expired +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfda59754 tcp_v4_destroy_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 0xfdcb496e pme_hw_flow_free +EXPORT_SYMBOL vmlinux 0xfdcb914f flush_dcache_icache_page +EXPORT_SYMBOL vmlinux 0xfddf29d4 __sock_create +EXPORT_SYMBOL vmlinux 0xfde10bc1 do_splice_direct +EXPORT_SYMBOL vmlinux 0xfded48ed enable_kernel_fp +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfe018fb2 netdev_has_any_upper_dev +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe063cad inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0xfe35aa4a percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0xfe418466 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0xfe46aaab mach_c293_pcie +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe822d55 get_brgfreq +EXPORT_SYMBOL vmlinux 0xfe851243 fasync_helper +EXPORT_SYMBOL vmlinux 0xfe88b9fe pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0xfe9c28e5 block_commit_write +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfeed5b98 udp_prot +EXPORT_SYMBOL vmlinux 0xfef0cc0b napi_get_frags +EXPORT_SYMBOL vmlinux 0xfef3fa74 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0xfef96e23 __scsi_print_command +EXPORT_SYMBOL vmlinux 0xff01d505 key_revoke +EXPORT_SYMBOL vmlinux 0xff04119d dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0xff0b5ddc unregister_quota_format +EXPORT_SYMBOL vmlinux 0xff17be17 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff22ea6f registered_fb +EXPORT_SYMBOL vmlinux 0xff3817be fs_bio_set +EXPORT_SYMBOL vmlinux 0xff67f9ed buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff6a4448 tcp_check_req +EXPORT_SYMBOL vmlinux 0xff6dea25 smp_hw_index +EXPORT_SYMBOL vmlinux 0xff73d106 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xff9edfa1 pci_enable_msi_block +EXPORT_SYMBOL vmlinux 0xffb0f97b xfrm6_rcv +EXPORT_SYMBOL vmlinux 0xffc67bf4 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0xffcca78b handle_edge_irq +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xfff029a5 generic_fillattr +EXPORT_SYMBOL vmlinux 0xfffc40e9 dcbnl_ieee_notify +EXPORT_SYMBOL_GPL crypto/af_alg 0x129600d7 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x149aff31 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0x444f6f5d af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x58716898 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x6c941bcb af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x93957c0c af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0xab2b0d94 af_alg_release_parent +EXPORT_SYMBOL_GPL crypto/af_alg 0xc0699556 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0xd69f039e af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xdf94d3f3 af_alg_release +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0xa56f2a48 async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x453ca9d4 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xf46210d7 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x9bc84040 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xd9dd92e2 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x192c7057 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x5ce768e6 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xaff9941b async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xed4cf3db __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x46c47c6b async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x5ac9f063 async_xor +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x3147c17d 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 0xcb4847d3 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 0x63f4a041 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 0x024e4d57 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x03d6c435 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x06aa061b cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x2f244c8c cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x5f24366e cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x5fc7517b cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x661aa705 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xe6c707a2 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xef0d877d cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0xfec666a9 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0x987e09ad lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x5ddb33e9 __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x77b39cb4 __serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x7b6c3de8 serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x8a1a99ad __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/twofish_common 0x0f62991e twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x8f38eaaa xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x5b98aacd ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x5dbc4e08 ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x84062ce2 ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xa9ecc44f ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xb4a10b15 ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xc9db5ebb ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xdeec8a15 ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x0daa42ab ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x12b5f3a4 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x17bc2aa5 ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x2496a093 ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x32b34351 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x59b5d663 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5acaf400 ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5eacba1f ahci_interrupt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x694f923e ahci_thread_fn +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6bc2255f ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6e05c4e7 ahci_hw_interrupt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x86d55bad ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8b5bb21d ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8cbbf0d0 ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x91b1fda8 ahci_restart_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x9b41af21 ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x9e020134 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x9fff7816 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa59183b4 ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xae056b8e ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xafaf8da5 ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc5ca2e5e ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xcb063ed3 ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xcb12c5b1 ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xeeb64951 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0xaae67655 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0x0652a234 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/bcma/bcma 0x11c5ffaa bcma_find_core +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x33394b54 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x40f127b5 bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4338ddb3 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x58b2b4e3 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6160b863 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x645348c8 bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6968885e bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6c9db157 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x821e2f3e bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8b98c7b7 bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8c607d8b bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8d026ef2 bcma_core_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8ebfc52a bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x9ebbce6f bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa17163ea bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb336a58a bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc11e8c9d bcma_core_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc6c41a96 bcma_core_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd4738de6 bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd784ec7c bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xea954ee2 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf367d860 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x308b8aae btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x373edbd4 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x5d9cf190 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x6878c41a btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x6e8b57e2 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x77b626dd btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x7caa8afe btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xa3ce0b9e btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd05056f2 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xf893bdd9 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x8bd43357 dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xa162a61d dw_dma_shutdown +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xca573922 dw_dma_probe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x05c8fe84 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c35a2ca edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x285f8279 edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x29c98ebd edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2b2f2912 edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2e14786c edac_mc_add_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x343ea65f edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x48f9c5b8 edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x551acf79 find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x619a431d edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x69259f22 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x74de09aa edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7ae01369 edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7c9083db edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x88a7ddea edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x954655e2 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x991bc41b edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa3130307 edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb8017158 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc6e6b977 edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc98a5ff0 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc9daae30 edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xcf77831e edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xfc22d716 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0xc9aa4f97 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0xe90c24f3 bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x2e42f1e8 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xabb80656 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x6221dd07 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x8134636d drm_vm_open_locked +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xdff57ed4 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x4f45f744 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 0x9bd1fe43 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 0xe137afdd ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x075eb3e0 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x086db3b6 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1751ca87 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x24de21d8 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2af968ad hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x33f8ddde hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x36b242fd hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x37fe4434 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x403cf9ac hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x445ea26b hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4daf3dea hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4e965daa hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x66ad4ea6 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x75edd44b hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x84f671bb hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8b6121a2 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9031628e hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x93d86efe hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9420bea3 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa39a51d0 hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xacee3d52 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb0c11eb5 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc5609b07 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc685fe1b hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0xca13f26d hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xca9a4415 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xcf67e698 hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd5927e3c hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0xda693399 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xdf6d3829 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe49efec5 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0xebd97704 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf86a8e16 hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfce3edc8 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x16b6882e 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 0x24823343 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x64c49955 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x7bee6a33 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xb0cacb45 roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xcf6f440d roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xf99c6ee8 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x4ed473ef sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x74f9c07b sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x846004bf sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x87ff2b03 sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xbbd7eb2e sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xdac42e52 sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xe1ab78d4 sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xe5b35aa2 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xdf67c0aa hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x079bd83b hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x12541c62 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x1a68e378 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x37b2d19c hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x3bef7575 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x4252c86a hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x71d05e80 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb865ff1b hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xbac7a3c4 hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc98ecd0c hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xcbbdb30f hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xdca9b374 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xec52d4a2 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x75a52c3b adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xa3eb21e7 adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x0613148c pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x1a9eed39 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x207098bb pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x208aebe8 pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x2a0bc124 pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x48b7dcff pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x4a5e4991 pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x6e09f3ac pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9bc4840e pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xb88a211b pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xc79c46c6 pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xd9c77231 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x06aeaa87 i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x12bbb346 i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x282ca30a i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x29972843 i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x55742342 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 0x69f934be i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xcafd4b22 i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xcf2680b8 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xe0c5ea3b i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x029092cc i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xc9f65e5a i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x0d412dbd i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x40168fb0 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x2f254d2a ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x39e283d2 ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x5423823f ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x5431b6b4 ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x72aa0c33 ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x81deb146 ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x9749be2f ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x9984fb28 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xda4a6177 ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x01e1b83a adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x0f146e73 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x386e465a adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x525f2349 adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x726ee072 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x7cb53e8d adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x7f92c721 adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xa7b9c9be adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xc41f0f63 adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe120a2aa adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xeaa9ba04 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xf1a84f33 adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x010f47f8 iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0ead1559 iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x12de8a91 devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x139ea979 iio_channel_get_all_cb +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 0x285ff322 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2e82b6b6 iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x39c52e13 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x44cb2cb8 iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4a7e3f21 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4d26e6d2 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5d475beb devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x756d9767 iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7fd263d7 iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x811e8602 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x88c388e4 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8fab2593 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa5e7a212 iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xae3a53eb iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xaeb7459c iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xafa28c73 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb452a69c iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc7f04963 iio_scan_mask_set +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xcb65e38d devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xcd5975c6 devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd33a7e30 iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdb8a5938 iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe0d001e4 iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe7b4622f iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf4751e6c iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xfbe271f5 iio_update_buffers +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x986a4d59 input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0xbebfbb4b 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 0xb4c2b3f1 adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x81e991f1 cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xded4cfe9 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xe1d86ddf cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x375cf717 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x6de638b2 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xc818124e cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xc3d4fcaa cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xdd5e2f10 cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x17e42e9a wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x209aae50 wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x2566b423 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x2d000555 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x38d8a979 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x512249a6 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x59e74894 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6ed5843d wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xa089f77d wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xc90562bf wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xf09769c6 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xf472a9e7 wm9713_codec +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x011192fd ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x11c9efdf ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x19a4e76b ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x276c0e69 ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x34fb5517 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x3581ac9b ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x59110b1a ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x9644cac1 ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xa5a93217 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 0x0aa8b10f gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x1890a6c0 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x272b682d gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x39a3bb40 gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x45772187 gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x59c6ff0a gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x5faa2eb4 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6a6d92bd gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x81ff93f0 gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x86d7334b gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x88ad4dd0 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8eff32df gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa13989aa gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xaee96a90 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd4b03e03 gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd781066f gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe021be3d gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe12d2063 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x2ec26f10 lp55xx_init_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x328b91a8 lp55xx_unregister_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x44e3b02c lp55xx_deinit_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x6b4f791c lp55xx_register_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x8525a7c7 lp55xx_update_bits +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x8acc0e2f lp55xx_read +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xacc9f00a lp55xx_unregister_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xbbb2adbc lp55xx_of_populate_pdata +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xc0a1cd29 lp55xx_is_extclk_used +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xdbdd35aa lp55xx_register_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xf79dabc8 lp55xx_write +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 0x0dda1402 wf_get_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x2c8fada2 wf_register_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x56948e03 wf_put_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 0xaf8d8a51 wf_unregister_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xb9c75e35 wf_find_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xbcace2a5 wf_unregister_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xbfde19b9 wf_unregister_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xdb7c9c27 wf_put_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xe60a0273 wf_register_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xebda24db wf_get_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xed82a14f wf_clear_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xeec79b2b wf_find_sensor +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 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 0x7b488fb1 __tracepoint_bcache_alloc_invalidate +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 0x09371d0a dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2dc54c9b 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 0x4dc13c8d dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x5088d671 dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +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 0xc3d37a69 dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xd028cc39 dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xda925a2d dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xebd06eaf dm_bio_prison_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 0xafe1f8ca 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 0x367528e1 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xb442f37b dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xca2689e9 dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xcf5a1e14 dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xd5189545 dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xd6931fcc dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xe7bba3c2 dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x201ea34e dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xcb9e7f28 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 0x101b40f0 dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x5cb15e29 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 0xb0cb0d15 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 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 0xdb8649d7 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf37a3cfe dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfd93482e dm_rh_recovery_in_flight +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfe38583f dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfec21cf5 dm_region_hash_create +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 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 0x1cac81ac dm_bitset_clear_bit +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 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 0x2f74609d dm_bitset_test_bit +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 0x38c75c44 dm_bitset_empty +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 0x4b890977 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 0x68fae9d2 dm_disk_bitset_init +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 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 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 0xa0bbbb49 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa13861b4 dm_bitset_del +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 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 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 0xe44b4b9b dm_bitset_set_bit +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 0xf475af48 dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/raid1 0x5d173050 md_raid1_congested +EXPORT_SYMBOL_GPL drivers/md/raid10 0x8b57f67c md_raid10_congested +EXPORT_SYMBOL_GPL drivers/md/raid456 0x63fee0a3 md_raid5_congested +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x00101d64 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x0cd9dcf0 saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x0d962259 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x5a4a4731 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x8ac794a5 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xa35709ba saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xb37d626d saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xb7800c19 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xb822d360 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xc3a5f2ba saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x4586be39 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x4856a6ec saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x57f9d12d saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x5caccef5 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xa217faf5 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xcd3461db saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xf988d974 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x02bed4e3 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x186abe04 smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x282f28e8 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x32bac2f6 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x337bae82 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x3e8b1f66 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x5d86a945 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x63222b29 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x71cff77e smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x95b49898 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9f8492f5 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa861f48c smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa865d282 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xae8b6113 smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb9bd8af3 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd97deec6 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xdb4ff82e smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xff40662f smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0xf538e39d cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0xcb4b926d tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0x0e5df66e cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x00a2d871 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x03b0b9d1 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x184e6b46 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x23137c7d mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2c439311 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2d1d8c8c mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2ed0d9ce mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x31b0d10e mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x632cb492 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x6ee60582 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7a949556 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xade399df mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc287346d mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc403e310 mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xdb63ebd0 mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf6038bcf mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf81173f9 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x0171b27a saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x337ac046 saa7134_s_std_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x723a7daf saa7134_g_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x7c9b05f5 saa7134_queryctrl +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xb5e53df1 saa7134_s_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x22309dc0 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x55abb652 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x96bbef71 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x96cf6ff8 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xb8c6255d ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xe4d9272c ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xe5f7f287 ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x03df807e radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x45da0398 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x07f5706a rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x0ab79b92 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x0b6778b2 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x0d577233 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6340739b ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6343ed7c rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x66cd2369 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9431e570 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xbb1fe6de ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc4e6d3e1 rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc6364fcf rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc835550f rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xcf421819 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xcfafcf47 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd00c9e99 rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd405fd87 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd57c36ef rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe36b340c ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xffe85f57 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0x0a71d15a mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0xf84e2e34 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x271be4d7 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x46c2a20f r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0x0f4aa364 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x363a20b0 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x41fdeb47 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xeae6446d tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x5c9d5bee tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xa7d3ea76 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xe6f595a5 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x4a61498f tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xfa51dff8 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0xb61b2e49 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x0bf80ed7 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1dd473e7 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1ea8107d cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x276ccb08 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x38e31294 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x53312344 cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x57eb0dac cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x5f031be0 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x64e68e5e cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x71a39cf6 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x74923d96 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x74ad996e cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7693426f is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x914662fc cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa23d1188 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc775d558 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc8799e61 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xddbee19c cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xfd79b6ba cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x4ea3e94e mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0x8c746db4 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x06d685a3 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x302b4313 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x30bad72b em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x48965742 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x56a386cc em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x5d05b66d em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x805951de em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x93ec2c0f em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x9957a5d4 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa48a0d4d em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xaefdd011 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xb60ce0fc em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xdd11cf25 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xdfb22865 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x0d65f0f7 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x44ac35c8 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x638aa23c tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x8e3ce418 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 0x1687c25f v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x22023edd v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x2ec4c179 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 0xa4e88e77 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xd0f7c58d v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xdce935de 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 0x221d2fbc v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x36e8756a v4l2_find_dv_timings_cap +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 0x53105839 v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x6976cfe0 v4l2_valid_dv_timings +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 0x7eaf8e7a v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xb0891da2 v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0x31ae7626 v4l2_int_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0x4631cff2 v4l2_int_ioctl_1 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xa5228b24 v4l2_int_device_try_attach_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xaafaf1c7 v4l2_int_ioctl_0 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xf9895b18 v4l2_int_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x00772a4e v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0fef4368 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 0x35b4b0ca v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x47f0b93c v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4951dbbe v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x63fd9a3c v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8c81d9e7 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb4c2f4d0 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xba057012 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xcfdf5aa0 v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd2e1d01e v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xea16f1b7 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xecc35590 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xef2c86b9 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x06219d9a videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0adbd0de videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1df927a4 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2146b2c7 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x23580fcc videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3b1bf2c3 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5e1ec336 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5f69cde4 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x606fece6 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6bca0722 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6e46322b videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6ffc78f5 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7de02c90 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8a994b39 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8eab1537 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xacc7eff3 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xba46c5f2 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xbe2024b3 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc03f16d4 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc3573d2b videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xdf7541fa videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xea53ac6d videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf0a2ad1b videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf1f07f80 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x2ddb162b videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x7afad4a0 videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xf235f4ed videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x39a6d7c7 videobuf_dma_init_user +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x4457b23d videobuf_dma_init_kernel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x5af84f55 videobuf_dma_map +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x5c6f115c videobuf_dma_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x645ecf17 videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xa825c75b videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xb44f6847 videobuf_dma_init_overlay +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xc55b18e4 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xcaec09c1 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xe99a8099 videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x542a6d5c videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xd531f422 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xf874f28a videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0c71268e vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x167db769 vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x16cc90ec vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x184fcff4 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x19d9bef4 vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2120bea1 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x286bc2df vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2c8c9745 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x382c39d9 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x38c4edb0 vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3acc5e24 vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3b8f0bfb vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3eb9f3c9 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4d7bd854 vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x50724f2b vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x52579807 vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x537dce14 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x61cfa3a5 vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x71f5c74c vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x73295014 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x86fe353d vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8c5173e6 vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x93f9612e vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x96b51cf5 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x994e3337 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbb555517 vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbeb6bcad vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc6f063eb vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xca40c4fb vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd24d0a98 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xdbacc07e vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe91f5ca8 vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe920fbf0 vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf8de0ef5 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x04914bf6 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xa443d2b0 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 0xbfaf9701 vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x269b966c vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x516ebf97 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x916ab37d vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xb523271d vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0x0e65e53c vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x07d99f59 v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0dd22a91 v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1382cfcc v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x15df7597 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1ca39914 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1e969891 v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x351ab8f5 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3a5459f0 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3be29997 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6d5af97a v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7d23e4f4 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7dd3c179 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x80beb149 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x89a87482 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8ea127d1 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8ef4522b v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x97b6bc8a v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9fcaa0f1 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb076b388 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb1a0e309 v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc3b28bf3 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe827e9cf v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf379d52d v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x10d0dd7f i2o_pool_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x87555b19 i2o_sg_tablesize +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xa68501ec i2o_dma_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xc7e6423f i2o_pool_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xce3f51dd i2o_dma_map_sg +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xce5a52de i2o_dma_map_single +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xe38c82db i2o_dma_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xe5ce6c93 i2o_dma_realloc +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x0bec0f40 pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x78b974ce pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xb1736d11 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x1675ef40 kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x187964c3 kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x4b593221 kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x8348d67c kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x90068ca2 kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x95e37580 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xccdeaaaa kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xfd90d249 kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x3618fcb6 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x84c96e87 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xc8bf3c64 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x0a1c61ed lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x2468be59 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x8cfb8e35 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xa8a9a9b7 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xaa9afb90 lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xb178cbc7 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xdd1aa7e8 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x1795819a mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x45203fd2 mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x572fcaba mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x59473a28 mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x7561876c mc13xxx_common_cleanup +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x91912cbb mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x08db6b69 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x0c3baedc pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x14f32e1d pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x263fa4f5 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x28508b5b pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x35d1b954 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x630463dd pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xa74fb510 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xb4cc72b1 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xd3e31601 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe9f4987a pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x4fdea12b pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x671c1d37 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x79f3467f pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xc500c795 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xca2aecbd pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xd0685353 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xe3989427 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 0x07ae6aed rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1140c604 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2845edac rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x3f6a0dda rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4e5b2783 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5ed777eb rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x6d0e1c31 rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x734666a6 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x7834448f rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x84195933 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x924f2d30 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9d832fee rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa5acfa30 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa692aa26 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xaae1301a rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb17b9b1b rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc19cb114 rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xce1580f3 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe6905d88 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xea406bd2 rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xfd4d63ff rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x09693ed1 si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0f12f3e1 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1b0f848a si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1e7fd783 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x32bf1cbf si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3c48f3f5 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x48f31cb7 si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4929b3f4 si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5d739e2b si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x649c5da5 si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x662393b6 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x66a65aa5 si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x68ae98da si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x68d85d77 si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x732b5b77 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7cd4c5b2 si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x81083caa si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x84eed760 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x84f4d243 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9104f5f7 si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x983b2ce3 si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xabb5acea si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb14d169a si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb812fdb1 si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc88c2b5e si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xcc5e88e1 devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd48ac3c0 si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd5e41c9f si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xdf423c9e si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xdf9f1f6f si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe6c56c17 si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf48b4f85 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf7ab1d67 si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xfaad92ad si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x042308e9 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x5ce63fe1 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x7ebd188b sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xcec0bdd9 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xfd6460da sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x0374ed42 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x8b9b654b tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x8c5736ef tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xc6016b92 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/mfd/twl4030-madc 0x9effbf1a twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x786d3208 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0x46bfe4ed bmp085_regmap_config +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0x93e04f1e bmp085_remove +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0xe0e465d1 bmp085_detect +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0xec2f2ecf bmp085_probe +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x4fcd46fe cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xaa4cd8f3 cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xd32d5547 cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xe7d3017b cb710_pci_update_config_reg +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 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x05ed1d09 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x2e4d433a enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x3e09c23f enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x8e4f04f5 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x9d51df81 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xa66b15e2 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xb211d002 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x0aa52700 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x31d61fb2 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x481d0695 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x6c6bbd8d lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xa0503b7d lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xb6329b2a lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xe90d8089 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xf425f78b lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0xac94ebc7 st_unregister +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0xeeee7d57 st_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x11399b2b sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x3ef06ec2 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x4f33d773 sdhci_disable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x5056531e sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x623ab6e6 sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x74580d12 sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x7dfe815b sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xb9633685 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xd308146d sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xe496f313 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xf13077c4 sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x0345e187 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x0bf28819 sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x30358f80 sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x3d3d1d34 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x7eb44d8c sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x8734589c sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x9d549e79 sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x680c68cb cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x95124d5d cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xaa3b68b5 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x28ff91a1 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x56adda71 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xdb065e27 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x1b41b92e cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x0fb935e2 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x7a9e3c88 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xc63962b0 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x07f8c88b mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0daaa68e mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x187f61a7 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1a9201c6 mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x20d175dd mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x246b3c8c mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x26d4e37a mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x27472591 put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3353dde6 get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3bf7edae mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x42de31d5 get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x47c0a482 mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x48690a96 mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4f07e44e mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4f2441cf mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5c7e9738 mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x61ff5e62 unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6c3badc5 register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x70532713 mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x727152f3 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x75c89939 mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x77b557c5 __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x78a8c90b mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x78f06351 __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7bf30bc9 mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7bfac68f deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x833714f3 mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8d445b45 mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8e659d41 mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9f9f432f register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa14c1731 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa1ecd8c6 mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa53fdee7 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb8df7202 mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xba586308 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd77540cb __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdb11fbd7 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe3269945 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe77736f7 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe8fbf1a2 mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xee45558a mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x4be7ce2c mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x6ab82d46 register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x7469002e del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x83eb0c16 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xae46df2a add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x24a4f6f0 nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x6ec8412c nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0xf52c3983 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xd6c0c169 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xf20db1c3 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2c2c31d6 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2c538068 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x3a4fad44 ubi_open_volume_nm +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 0x7f155610 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x872d2ecd ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x9c2009ac ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xae652d2b ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb1875e7f ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb69bd7c2 ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xd58b4e1c ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xdbe446ba ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xea54e9a5 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf21e427c ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x3dda6d03 c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x5ce9ef5d c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x64570b1b register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xb7c48841 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xbb0741cd free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xe5788e8f unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x23d0fa03 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x31e0247f alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x49c0ee78 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x51eb9ada alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x578d13d0 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x819fe065 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x89aa9000 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x91e3a527 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x97fcc1e6 devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb7fe39fe can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xbb3d24ac can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xc1ae82be can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xdd5876b4 can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf0a2a870 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf8803927 open_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x53abe1ef register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x5ff6feae alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x630ef443 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xc238b83b unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x1b437477 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x5b8fe140 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x742c53dc free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xeca00caf unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x0727117b macb_mii_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x19a3d598 macb_ioctl +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x22956064 macb_get_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x2ddd046c macb_get_hwaddr +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x59b446bc macb_set_hwaddr +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xdcd793b1 macb_set_rx_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xf9b1fb8e macb_ethtool_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x002d80e4 mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x00be4804 mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x01da64c7 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0459f6d3 mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x05644f68 mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x05be6d3f mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0b6942a5 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0c3c930a mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0f79d4f9 mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0f8a4870 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0fd43ed2 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x10553df1 mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x12d12abb mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x14308726 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x153209c5 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x171c3c5c mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x17cc3c24 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1a7dad65 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1ae7a2bb mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1cd92842 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2e523406 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x30f8e68b mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x36c2ec83 mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3b296e60 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3ca6129e mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3cdefda1 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3d68796b mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3ef378f8 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x40fb3ebd mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x43e97eff mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x44887857 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x44b00c93 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5088d5f7 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x52211486 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x54766aac mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x57ce59a3 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x59d61034 mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5a9f71ad mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5b30920e mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5dd6cfac mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x60e6dc08 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x64e4d011 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6f3a98d5 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7008ea8e mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7154b5d4 mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7de3a0bc mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7ed700d0 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x823780ed mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x82778abe mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x859df8fd mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8aa54f5c mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8af5017a mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x913fc88e __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x91c4adea mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x929b047a mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x959b3693 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x96aa0ffa mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x97eb073c mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9bbea786 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa4318630 mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa6a9b7a0 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa6c78670 mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa7c6e113 mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa9a7e68c mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xae04a21a __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xae3f1299 mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaf69ced0 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb11181a9 __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb4abbe8f mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb569c6b8 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb76510b4 mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbcb15ae3 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbf73b6e9 mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc0753cdf mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc425f637 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc508d387 mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc83f08db mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc89b53a1 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcb1da897 mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xce18c3b1 mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcfda01b7 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd112249d mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd371b484 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd400748a mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd4fd8506 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd64e2e5c mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd72257fd mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd9827fc4 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdddd5894 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xde7081b6 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe0a62da4 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe0bec3a3 mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe156aa74 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe2354023 mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe247425f mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe2aa6b6b mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe4771192 mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xed7cb26a mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xefaef276 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf2d58998 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf42236d8 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf68e775f mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x038fecd4 mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0b3e18d1 mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1677b18e mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4adeb169 mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x63e33201 mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x692d7d72 mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x86cd812d mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa120a8c5 mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa130a44e mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaa78730b mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb63df3c3 mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc291ae3f mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd6c4ef56 mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe39b278f mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe7c2d331 mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xeeb15ad6 mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf14b3eb0 mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x31401225 macvlan_start_xmit +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x63fa1ef0 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xaa59ad95 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xc3f9e78a macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xe2398f28 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x68ba3d65 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x04b9a6a0 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x4d571f99 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xbde035f1 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xf960624e usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x43b60851 cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x97459288 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xc1a2629e cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xceaee5a3 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xdb26bbd9 cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xe0e428c9 cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xe79278f6 cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xe8ce1305 cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x218fda55 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x683e15c5 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x6b5854ca rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x8b0963ed generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xba720bb6 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xc6498b6a rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0e269753 usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2dfc0a8c usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3518c0e2 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3563544a usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4cad06f4 usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x593408e2 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5f4e37ee usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x65813095 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7300e1da usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x84e76ced usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x867aa8d5 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x86a7a6be usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x89a3c17f usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8abb525b usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8d6c6327 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8e8daccd usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x968290b8 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9b5f0bc7 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9bed7b8d usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa127ad90 usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb0d572f6 usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xccd6853f usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcef7aa86 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd411f1f7 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd585212d usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd8e86825 usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe3ad7496 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xed30d5a2 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf1bc39cd usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf2a51175 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xfaa9d471 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xfb48b08f usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x270edf34 vxlan_sock_release +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x37204509 vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x48ec3de6 vxlan_sock_add +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xa70a6945 vxlan_xmit_skb +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xdbf32eed vxlan_src_port +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x01b6a575 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x08166194 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x1f2c52db i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x2ae5e748 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x388f1714 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x398da272 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x54edfdf3 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x5fdd37ec i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x7d494dd8 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x810e46ed i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x895011d3 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8fe0bfe9 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xbb4f5a0c i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc811492a i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xcee35f29 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe4ccc9a9 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x621383ab cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x8a6e3346 cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x8c0afe15 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x988aa3ed cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x9fcb2fef libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x09c85e12 il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x62ee318f _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xa68f8aca il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xdd99189b il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xeacc1f63 il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x02c66d2d __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x05abfc77 iwl_opmode_register +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 0x13d1bc52 iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1ac36ff0 iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1d618675 iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2c0e0fde iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x34ea4f7a iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x367b7184 iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3d505377 iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3d548dab iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x46dacfa8 __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5720e619 __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5d0a212e iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x61485dd0 iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x639225f0 iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8388e421 iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x845bf7a3 iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x86096e0f __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8c5d5ab3 iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8d89aea5 iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xaa6d08eb iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xbace4e31 iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc67c31ed iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd7b64b17 iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe2d0034c __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf1ac6c5b iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x13e009e4 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x14ed62e6 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x162dba3a lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x185d0ea3 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x1ce3b810 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x2b69c7ee lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x32aae20d lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x361aa146 lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x652032fb lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x68eee3fd lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x76793777 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x7a15c8e4 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8c9d7071 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8caf5f9c lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb0fe598e lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf2a332b1 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 0x3d03f8d8 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x8009fd88 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x8264635a lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xaa53acf1 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xbb0c629b 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 0xcd8f27e6 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xebc4c699 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xee02e66e lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0x5facc9cd if_usb_prog_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0xd6223ff1 if_usb_reset_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x54dcfb09 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x55b0d055 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x73200ba6 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x7928fb9b mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x8d399d3d mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x8fcd9483 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x95958a47 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa065629c mwifiex_deauthenticate +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xca81f4bc mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xcc047b72 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xce505746 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd6850cc6 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xf3025713 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xfdb602cf mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x05b220c5 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x0c8953ad p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x4173aa3e p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x5b9a976f p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x5ddbefb3 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x86b8d8b6 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xa7b78815 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xe3a252ab p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xf01a8baf p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0b06fb07 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0cf8320d rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x16f2251c rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1b3776e6 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x23e1f7bc rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2a3ae5b2 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2ab7a188 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2b3769b0 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2de6e376 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x32952761 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3df07908 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x485e0992 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4a56c466 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x581e5a85 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5b6177ab rt2800_get_tkip_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5db6c0c5 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6a11b1cd rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6d75875f rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6e1c207f rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6f0d6c61 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7e6ecae6 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x87e7c45c rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9ab2a094 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9db1ffab rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9dccb07f rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xaf073a07 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb8ab036a rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc7d15bd8 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc950451f rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd057da2c rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd1f9ceae rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd2550565 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd46f5908 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xda4ec4e2 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xde1b2443 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe7ecf6f1 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xeb4dae88 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfcea08f7 rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x208c4f79 rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x4fa9e4c9 rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x56960175 rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x6223d497 rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x689e0d9f rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x69d5ee99 rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x6d8a2fe5 rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x79bebf3e rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x8b16d0b0 rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xa8a3d42b rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xbf731a94 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xd87b06f7 rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xec598d14 rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x02cba0d3 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0b5c4629 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0d55767f rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x178feda7 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1bb9d530 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x212a382b rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2eb96e38 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2f9f74c7 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x32843c9a rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3512b7f7 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x35832e8e rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x36921756 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3bc2ac97 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x46df5a13 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x480bf0f6 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x59eb17af rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5cbeebea rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x61b3883b rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x625fbf9f rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6f7661d8 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x73008a2b rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x73d23b03 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x75bbdb9b rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x909562a6 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x93fe77b7 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x95722102 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa12dc635 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa4ac26c2 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa8abd81d rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xaf0f67f0 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb3cd69fd rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb7e3b43b rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb89ca579 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbcdd7e84 rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbf768e0e rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc76bf271 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcaa14ab2 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd20c7755 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd5b64943 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd6f6fba4 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd98a56a2 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe397043b rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xeaa8a65b rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xed415dfa rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf948b25c rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfccbc6b3 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x50c7cb9f rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x554365e7 rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x7590b616 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xd272b896 rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xea036025 rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x563a8136 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x9cd800a6 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xdea15784 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xe0e4dfa6 rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x33d2f356 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x39097929 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x39c2c439 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x5926ce9d rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x73cdc02b rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x7bf4169e rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x84842742 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x86c474c3 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x89d0c906 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8b9e376c rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x90f002ea rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x911da7d6 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xcb6598b5 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xd6e0dd1b rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xdeceaba1 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xff0c3c03 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x54cd3168 dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x69c7797d dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x98be8380 dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa2d21ed0 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x0984af33 rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x0b9f67fd rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x1fdaf311 rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x2e35b540 rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x3fa8483f rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x473947bc rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x498df472 rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x547cb220 rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x5695a218 rtl8723_dm_init_dynamic_bb_powersaving +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 0x7557e24f rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x852066b1 rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x87eba0ec rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x9e65b7c8 rtl8723_dm_init_edca_turbo +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 0xb2729fd6 rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xbadb6749 rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xbd3a667b rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xbd8a5c13 rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xbdb65706 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd3457f46 rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd4829040 rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd8712f94 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xdb24b5f6 rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xe21377d4 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xedd47ff5 rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xf68ad0f3 rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xf6efd781 rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xfcd5fb92 rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x0018d8b0 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x0bb8f5a1 rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x0d0b6636 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x0d3f2950 rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x241dedc1 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x3d1142f4 rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x46166282 rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x4a8789b0 read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x518e8f69 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x690f1a6c rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x70b4ac09 rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x7af2ff2a rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x86a7cef8 rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x8869e6c8 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xa431da39 rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xa53dfd2e rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xeb0590a1 rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xece866fd rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf28cd04e rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf8ff6add rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x0e93bea4 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xa5accb4c wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xddb241c3 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x02a2e60a wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x05d62c51 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x09303341 wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0b9444d9 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3ba2ebe8 wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4044d7e4 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x48155380 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x642f7ce2 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x652dbf54 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6b42b783 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6bf28481 wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6c0929ea wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6dbbfb06 wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x87195d35 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x88f05550 wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8ad74a95 wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8d12505a wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8e3b2b73 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9165719c wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x91da5146 wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9c20508a wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa067b50d wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa3c87bef wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xaa064605 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xaa72b9e9 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xace156d9 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xaec0d7d5 wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xba3858cc wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc655a267 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc679646d wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xca20a6d0 wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xcd80cba4 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xce515595 wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd22f39c9 wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd37b328f wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd5b351eb wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd5da2143 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd9d4d04c wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdf226cc6 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xea3eeb6d wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf2b1534d wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xff63fbbe wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x19d042a9 phy_get +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x29a2dd39 devm_phy_create +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x2a6286af phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x2c48c8c0 phy_init +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x2fe116d2 devm_phy_destroy +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x4267a7c4 phy_put +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x4e177dcf devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x62cc86d8 phy_create +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x7d38f4f5 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x858dfc05 __of_phy_provider_register +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x8d78d9a7 phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x8ec648a5 of_phy_simple_xlate +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x90d9bf80 phy_pm_runtime_put +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x9b7ece22 phy_power_off +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xa2090cbe devm_phy_get +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xadd9ff7f of_phy_provider_unregister +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xae1a5e8b phy_destroy +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xb5ef8fd4 phy_exit +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xc3a6766a phy_pm_runtime_get +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xc3d11fd0 __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xc73365c1 phy_pm_runtime_allow +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xe0e1446d phy_power_on +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xff207b7e devm_phy_put +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x6b5e192d pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xa5b2c9ea pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xc203146f pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x80e5bb8b mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x84ec1fa2 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xbd59ae9c mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xd419c6f3 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xe7941166 mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x29c07f61 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x4232330a wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x5c5152eb wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x72a65757 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xa61ecebf wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xe04a5b22 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x38fe8b4a wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x078c6a70 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x11eef0e7 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x13835261 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x18a076bb cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x193753b7 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1bf62a69 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1f2173d9 cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x204a41e7 cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x22b8a2a7 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x23fbe5c7 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x265f42e7 cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2ad07494 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x33a1d34f cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x358f3cb7 cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x38df6d58 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3ac34310 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3ad149e7 cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3f3ca28d cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x448398dc cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x525a5b94 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x52e9ed81 cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x55e94b1c cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6b9f04c4 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6fe8b150 cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x719ff6b2 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8684dc7d cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x88db6ad6 cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8e6cba0e cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x98bfc87e cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa573f284 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd59b3502 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd7719db0 cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd80ac997 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdc857c6b cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdf3260eb cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe20830e8 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe569e07f cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xeaa2ebbd cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xede51c3e cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf0b1218b cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf18365bb cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfb10d87f cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfc0bf734 cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfd1f61a3 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x25e7b4c6 scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x32215043 scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x4b3bcf98 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 0x8b17100b scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x9035a211 scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xdce43ff5 scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xeb3479e2 scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x2517c02f fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x3800ad2c fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x38af48ca fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x602bdf0b __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x644958b8 fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x764ce07b fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7781f844 fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x8119d398 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x89dabbc8 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9461bd6e fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x97017474 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb91131e7 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xc41b364f fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd9a26050 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe9e37e3b fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xfbb55230 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x043f0157 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x235b4feb iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x440f4909 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x82bf35de iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x9cea26eb iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xcf21e418 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0173c430 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x06e1fe0d __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x088615a8 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x137ee9e9 iscsi_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x165899ad iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1f14e2f3 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1f3a15c6 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2fa3f987 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x36c519fb iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x376d2954 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3e58ca7e iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4399a072 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x43d6a690 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4fa7af1d iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x575256d6 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5ced2682 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x60375661 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x60f5533b iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x64cc80a8 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7c407842 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x85f571ca iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8c55114b iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8e066ad3 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x93daf1d6 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9b6bb63d __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9f16f3c0 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa0d76a7a iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa6b6062b iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa8c3d7c1 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xae2c940b iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xafd5c165 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb0950a9c iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb106fe6b iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb13dcf11 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb98b71a1 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc34c4f45 iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc54c1925 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcbc26be8 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd1b2cb73 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe55c3ee3 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xeb236335 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xeccd5bb5 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xefe3ffe3 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf46e7e7d iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x1dc98b00 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x2abce9fd iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x42dc8754 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x574e7913 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6a14a9a6 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x74e4fc34 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8282828b iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xacfc8dc7 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc236b146 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc2b67034 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc4cc1a51 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc560e01d iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd2740626 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xdd61ec2c iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe6e5d3c0 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf71d88b1 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xfa2743e4 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0eea1f6b sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x37f6f77d sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x41c5aca2 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x48f9b208 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4c90029f sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x52a98da0 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x531739ca sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x571503e2 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5871a158 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6388f85c sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x68c4927b sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6d9240c6 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7ab0df87 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7c3b2abe sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7f381e68 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8bb0f4c6 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb4557c06 sas_change_queue_type +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc142a8ea sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc66c2086 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xce66b5ce sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd4a53abf sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xda97de07 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xdf7545d9 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe170f800 sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe45665c6 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x104c4cd1 srp_target_free +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x4b0d110d srp_iu_get +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x5a70d652 srp_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x8166f351 srp_iu_put +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xa3c435d8 srp_transfer_data +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xbea7bc73 srp_cmd_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x0ff17621 scsi_tgt_alloc_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x32fc5116 scsi_tgt_it_nexus_destroy +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x8dc40cac scsi_tgt_queue_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x97eebb4f scsi_host_get_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xa94424ea scsi_tgt_free_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xc7d8a8fb scsi_host_put_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xcf75fcd5 scsi_tgt_it_nexus_create +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xdf6570b5 scsi_tgt_tsk_mgmt_request +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xfae092f0 scsi_tgt_cmd_to_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x002b6d22 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x02a6e469 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x10ea7396 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x13d674af iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1ea74ac4 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2056a2fb iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2876902c iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x345c8ee7 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x34de37f5 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x37733592 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x43ce48b0 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4c520703 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5205f5dd iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x524e4e7f iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5eef611e iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x64fc08a8 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 0x6f17ca64 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x73afc8fb iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x79361d4d iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7f5952c7 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x846843a8 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x89a0ffba iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8fb6584f iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa85e0312 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xac95c2a4 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb46aa974 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc1310331 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc458b2d2 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc96d611d iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd3541555 iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd7d82896 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdb0144aa iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdba6c167 iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdef79050 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe236aa3c iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe250597b iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe3d3a61f iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe9171e44 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf72a5970 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xff1966cc iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x1c62d5a1 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x385b3564 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x527eeae5 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xa3fda421 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_srp 0x28fb44fe srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x64805aa3 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x6eb34f1e srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x76f2b62a srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xc194cec9 srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x0bb4fca6 ufshcd_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x43598a02 ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x4c438798 ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x84ae2930 ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x9b48cf41 ufshcd_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xe28a3079 ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x21141d4f spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x38f6164c spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x4fe9dfce spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xea8172f9 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xf816dc7a spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x610b8848 dw_spi_xfer_done +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x740b3956 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xaf6f11db dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xf703ad88 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xff88be73 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x9d9432da ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0042b0a1 comedi_buf_get +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0d3ec2f1 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0ff5d1cd comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1910a6c7 comedi_dev_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1aeaf0a3 comedi_buf_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x213e7cc7 comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2328a53f comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x288d22f9 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2a3f94f0 comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2d054ed1 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x325d8402 comedi_pci_disable +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 0x53697eca comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5b7fe95c comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6047b4c7 comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x62dcd466 comedi_buf_memcpy_to +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6412b5f0 comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x66526b95 comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x68f46729 comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6adc0282 comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7ff573f6 comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x83d1700b comedi_pcmcia_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x90f59969 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x92dde28e comedi_pcmcia_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x97a3ff1a comedi_pcmcia_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9b894868 comedi_error +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9e82ecd8 comedi_pcmcia_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa12d7cb8 comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa50cf1a3 comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa6d64ad7 comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa7f52f4d comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb000c9fa comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb4ef254e comedi_buf_memcpy_from +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb52edf81 comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb679cebc range_0_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbafa774e __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbb52fc7f range_bipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbd66dc24 comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbdbe75c6 range_unipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbfb5fd36 comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc6a099c5 comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xce586d89 comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd3ac7029 comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd5b7e5ae comedi_to_pcmcia_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xda75b86b comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb8f8503 comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe739b2e0 comedi_pcmcia_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf301e816 comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf9fbd1e8 comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfba95492 comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfc52e415 comedi_pcmcia_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xff101be9 comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/8255 0x2e26a594 subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/8255 0x43f66097 subdev_8255_init_irq +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/8255 0x7b6e6879 subdev_8255_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x79f4a6cf addi_watchdog_reset +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0xb838cef6 addi_watchdog_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x462c91e1 amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x787c346a amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0xbe2147be amplc_dio200_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_fc 0x21469696 cfc_write_array_to_buffer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_fc 0x3553a76a cfc_read_array_from_buffer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_fc 0xaa96238a cfc_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x2e3b0bfc das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x0133ca3b mite_unsetup +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x0ef1945e mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x1278525c mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x13914932 mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x1cbb374f mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x362ef392 mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x386a251b mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x483182d6 mite_setup +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5877bd16 mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x599ea678 mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5b1fce6f mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5bd0bbb9 mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x638aab5b mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xad2b2a3c mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xb6fc3ce6 mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xbb1b2968 mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd2828f9f mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe1eb4d0e mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe212c511 mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe2c99f2c mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe8ab70a7 mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xf599bdd8 mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc 0xe84a0733 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x2cf67dab ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x3989127b ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x473e56f7 ni_tio_winsn +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x55e862c0 ni_tio_rinsn +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x5f21e41f ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x9584b5b8 ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xbe28b814 ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xc7d9468f ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x1d5e4098 ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x5529a818 ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x5ba8b891 ni_tio_acknowledge_and_confirm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x97f8bde9 ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xdfc1cc68 ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xfc172f6d ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x18c07d77 comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x1c245588 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x28c5d8b2 comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x41653e23 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x9f166d67 comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xb5479674 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xcc250e77 comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0x2206b003 dwc2_handle_common_intr +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0xb05a818c dwc2_set_all_params +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0xb26227cc dwc2_hcd_remove +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0xe4e71596 dwc2_hcd_init +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x1a1b5249 oslec_flush +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x2feda75b oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x3227a28e oslec_snapshot +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x7dc9dddd oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xb2c66001 oslec_create +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xc8b5a524 oslec_free +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xd370f679 oslec_update +EXPORT_SYMBOL_GPL drivers/staging/rts5139/rts5139 0xbd5a0e51 rts5139_usb_ids +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 0x20e5ba06 spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4449e1dd synth_buffer_clear +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x572ff6ae spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x58175e7d synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x5c70aa6b spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x706cb900 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x71f26c92 spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x74efd763 spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x96866ce0 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xa38782d1 spk_serial_synth_probe +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 0xbee62989 synth_remove +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/usbip/usbip-core 0x18b36496 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x28f8995a usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x43475215 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x4adaad78 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x774de75e usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x9def9dd4 usbip_recv +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xa7f51090 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xb8181e91 sockfd_to_socket +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xcfad6aec usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xdfcc900d usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xe2613ec7 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xea332814 usbip_event_add +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xf5d7a8b2 usbip_start_eh +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0x824b36d0 pciserial_init_ports +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL drivers/uio/uio 0x261e1b23 uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0x6d0ba81d uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xfb85ef73 __uio_register_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x351894ef usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x8adfda5d usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x07a5358d ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xe1fbd5c0 ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x170e9bea imx_usbmisc_init +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x74750d38 imx_usbmisc_init_post +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x147acf24 usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x18bd94d5 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1cdb28a1 usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1cdfd359 usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x25a69c21 usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x28f925bc usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x31a0a024 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3bd4fb00 usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x41b7b3d3 usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x443bfa77 usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4568f96a usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x489a8a7c usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4abd3edd usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5c76360c usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x60946917 usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x70cd27e6 usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x79dc8f17 usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x872ccbf3 usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8f16207b usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa180c510 usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa19d6c87 usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb8d548c1 usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc6a843ed usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc7527568 usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd783e1d0 usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xdf03285c usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xeb5cd500 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0x2ee95103 gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0x8ade8069 gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0x8e27d6de gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0xf1981607 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x05ac74ac usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x14a3a67a usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x225616cb udc_attach_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x43b14fba usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x7b1d91d8 usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x848b04c6 usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xa08fc9dd usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xac6fbee5 usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xf3771da1 usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x0a5230df fsg_common_set_nluns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x141fce2a fsg_common_remove_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x1ccb58f7 fsg_common_set_num_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x28e038c7 fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x2d10b6a7 fsg_common_create_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x4699a326 fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x51707c29 fsg_common_run_thread +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x6acb4179 fsg_common_set_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x7e26d4a5 fsg_common_set_sysfs +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x99023bfc fsg_common_put +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x9a0221c7 fsg_common_free_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x9dc025a5 fsg_common_free_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xa46e6443 fsg_common_get +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xd3ae3b65 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xd468f882 fsg_common_set_ops +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xe4d1591e fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x323effc8 ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x7c3768d2 ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x19a5f8bd usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x3d246944 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x6f09090b usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x9265d65f usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xaca7c6d6 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xaedb404f usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xd105afb9 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xe9046aa9 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xfcd48cde usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x8458c611 musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/tusb6010 0x8997c837 tusb_get_revision +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0x32ab8d29 usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0x7c5ba48b usb_gen_phy_init +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0xbcd35bc7 usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0x01f4cdc9 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x291a1abf samsung_usbphy_cfg_sel +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x50d3016f samsung_usbphy_rate_to_clksel_64xx +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x70b0956e samsung_usbphy_set_isolation_4210 +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x796cc8b5 samsung_usbphy_parse_dt +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x80e1b59f samsung_usbphy_set_type +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0xd5ad6fa7 samsung_usbphy_rate_to_clksel_4x12 +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0xde2100a6 samsung_usbphy_get_refclk_freq +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x023fe994 usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0433ee7f usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1cb1a416 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2035105d usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x49a1d10d usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4b579730 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4d94425e usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4f95a5ed usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x503c1f9a usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x510dd020 usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x57610fb6 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5acc22b9 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6205399d usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6cbf8e34 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x74fa1ddc usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7cf9c124 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8336f644 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x97a4c9f5 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9e8ef4e2 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa933372e usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xab4a7b7e usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd95deb7d usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0c466f9a usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x14041df7 usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x165d4d75 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 0x207ab60f usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2d429021 usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3d8cd324 usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x45f62ea9 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4727c927 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x58b94271 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5bbad1ff usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6b2a5e59 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x72eef765 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x756c2d86 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x929d51f1 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9a9e7e6d fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9f9fa1ce usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xac3c8426 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xcb31e0c6 usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd5ddfe6c usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xec66c680 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xee65c4c1 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf765f188 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x5545c963 wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x861c7ea8 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xb2a963d0 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 0xd9ea4514 wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xe46090d2 wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xef70ec17 __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 0x17d3ae8f wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x181349bb wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x37f0d801 wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x42b06f8a wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x479f3557 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x4c70c94b wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x51fbc678 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x5c5075f8 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x64d79a11 wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa7a6094d wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xde61d982 __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xe94cfe75 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xeebc17f9 wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xefc0fa68 wusbhc_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 0x8e130a23 i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xabc83410 i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xd07758ea i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x17010061 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x4ee01529 umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x7c9d87bc umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x9397bf4b umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xd56b6f1d umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xee5996b1 umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xee5fee35 __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xf09a22f7 umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0b8aad57 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0bf3f381 uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x123ba58f uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x174152b0 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1922c028 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1b553400 uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x20c89433 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2284049c uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2513a9a0 uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2be3bd7a uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3a560331 uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3a8a9bda uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3ca114d5 uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x49c21d90 uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e4bc088 __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x60c93dc0 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6bfeb6dd uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6f5509f9 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x745d7f55 uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x755b87dd uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7c5d40d1 uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7dcfcd23 uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x878f0bc2 uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa255a13f uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xae6b4ab9 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xafb783b7 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb6506246 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb87157a7 uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc29ae79d uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xcd678fe9 uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd1f043d3 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd2ecaad6 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd5c7d52d uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe1716f06 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe55e655e uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe82b0ee2 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xea4b6a16 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xeea1df52 uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xefd9191d uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf6802221 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfdba1c06 uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/whci 0x3cfc92cf whci_wait_for +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x053b0db5 vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x06cc5b48 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2131c052 vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2e1e5585 vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3826c6c0 vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3c370b5f vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x47ba05e1 vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x49e7f5ef vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4c196806 vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x60953c39 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x68a87897 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6d6e08e1 vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x76c911fe vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7e127bbe vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x807be078 vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8231eaf1 vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8723dcc9 vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x93c1f37c vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9f8a7b1f vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa23ab1ff vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb0f81e37 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb18b9bd8 vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xbc5f70c6 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc084a030 vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xccd8a6c6 vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe3b83c3f vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe5294e14 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xecf4f722 vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf1c21a20 vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf2ea1fff vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x18e53b10 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x2527ca10 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x2efd0c8b auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x31a44f51 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x7e6d33a3 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x92aef47d auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xbdebf78a auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xca5c9f5c auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xcfdaa716 auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xfe118dd7 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x0078a3e3 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x2f4f2b9b ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xdd8b7d67 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xe57cacf4 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xfe075ee9 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0x504b2e2d sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0xfbe382cd sis_free_new +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x1d97dd02 register_virtio_driver +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x4ee6b947 unregister_virtio_device +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x753388e1 register_virtio_device +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x859007a1 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0xc6d2115e unregister_virtio_driver +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x1480c241 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x25b5a12b vring_transport_features +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x26b077cb virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x2e917853 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x401ab9d6 vring_del_virtqueue +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x45ade2da virtqueue_add_sgs +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x54f5fb07 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x64178b1f virtqueue_add_inbuf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x6a362c0e virtqueue_is_broken +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x795d61ef virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x7fd5ec16 virtqueue_disable_cb +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x84d78610 vring_new_virtqueue +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x90a31420 virtqueue_enable_cb +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xc536f34d virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xc726782f virtqueue_poll +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xd1e812da virtqueue_notify +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xd865cfc4 virtqueue_kick +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xf6025616 virtqueue_get_buf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL drivers/w1/wire 0x24695a5d w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x3f76a7bb w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x50671a3d w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x5b3b344a w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x65f475b0 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0x76debb50 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xa8441544 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xc1f39801 w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xc435b842 w1_touch_block +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x54083698 dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xb3efcf40 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xf04d3d06 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x198d4263 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x319e1cb1 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x64b15c78 locks_in_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x698888e7 locks_start_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x6c25dd1b lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xa381734e nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xc0e21f75 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xc93323e8 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xeafb7e5c nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x02b62b82 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x02f76c05 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x03b36f5d nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x05626f77 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x061323a9 nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x068fc40a nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0859e270 nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x09590d1a nfs_file_splice_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0b7f2a2f nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x13f050d4 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x14b7b726 nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1531a05b nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x15b3be8b nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x16097b9c nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1876cbe3 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x18e765e3 nfs_readhdr_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x19326eee nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x198a7868 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x19b26fcf nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1aa1be58 nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1af6c6a8 nfs_generic_pagein +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1c81fec8 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1cec1cf9 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1e1ce0cc nfs_readdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1e583996 nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x25b24017 nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x267ab059 nfs_readhdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26b2a12b nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x27e1a4f9 nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x29cd1c5b nfs_pageio_add_request +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2c51831c register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2d4df19d nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x303ab793 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x30c9a6da nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x33598676 nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x369d1dd0 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x38bfe7af nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3b426c94 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3e9855df put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3eb21908 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f3cd089 nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x418a2d4c nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x428fe6b7 nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x47a63700 nfs_initiate_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x49f57a10 nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4d3865a2 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4d6716d6 nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4eb955cb nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51b3aedd nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x52142758 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x53cb135f nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x53d5a45e nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x54177602 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x55d16e0c nfs_generic_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x58d3d54c nfs_writedata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e4e92d3 nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5f348546 nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6105ac92 nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6713fd36 nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x68ffdabc nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6b79e14a unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6c3b268b nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6cf3272c nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x73c46b4b nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x74190418 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x75d23e93 nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x76f331e4 nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x771f9b39 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x77c113be nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x79647e7f nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x79dc8f3c nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7b319902 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7f363a7f nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x886809cb nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x89bc5a64 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8a23286b nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8a598fae nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8eb3e182 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x905ebd0a nfs_setattr +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 0x930e965f nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9584b556 nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x974c0da7 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x97f5f58a nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x98856cd9 nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9cee9530 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9d6e8f78 nfs_initiate_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9e279d52 nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa0ee2b3e nfs_pageio_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa25a6458 nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa3900797 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa5069ded nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa589eaca nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa753cf5a nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa816c1ae nfs_post_op_update_inode_force_wcc +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 0xabd53eac nfs_put_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xad5b6b06 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaea6e29b nfs_writehdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb0af2348 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb1868a5e nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb1971375 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb19bb92a nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb4701b02 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb789bfcd nfs_writehdr_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbc55b1e8 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbf13060b nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc081479c nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc2857d15 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc39a90ab get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcacfd213 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcbbbe181 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcd9fa7ae nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd02749f2 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd28a7d97 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd8b4e291 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdc3e2339 nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdd673e6d nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe237101b nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe59bb41e nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe656b108 nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xedc84075 nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xee02f113 nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf6760e60 nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf7a1f504 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf81bd80e nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7ee006 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfd033725 nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfd2a1a87 nfs_setlease +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfe99f373 nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xffc7ef0b nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x04aa5aab pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0c00898c nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0e389399 nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x11bda27c __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x12220366 nfs4_insert_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x12feafdf pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1cebaf13 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2038eb7f nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x232c60e1 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2ae57c63 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2d98cbab nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2dfb1a91 nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3587f632 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x361d3305 nfs4_proc_getdevicelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3b699f09 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x443280b5 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x46d989b6 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4ec88bdd _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5f4740d4 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x665fa50e __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6c3dbb09 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7ccf4d11 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x858d6097 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8ce17ccb nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x963a4c99 nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9f108c9a pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa374936c pnfs_writehdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xabd0a419 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xaf704b3b nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb03c4bbb pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbef9e429 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc0085198 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc2a4bb7e pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc866216c pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xda89f3db nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdb813e84 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe60b8e2f nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe8c5e8ee pnfs_readhdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed08670e pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfa2f5eaa nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfb8e978d pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfd195ead pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x13329f67 nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xf483b890 nfsacl_encode +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 0x345e3502 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x37402bc7 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x5571feca 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 0x8dab4147 o2nm_get_node_by_num +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 0xbc7e3463 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 0xe8daaba8 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xebace91f o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x0064c99d dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x40ebd458 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x736d349c dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x85a9b696 dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xa3315c6a dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd6c9f7e1 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 0x025e2d69 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0562c415 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x16b2e575 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x3d5c1873 ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x5469ce31 ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x7083dbd5 ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x89502fe7 ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x90fe949b ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xb4bd060c ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xcb1fa46d ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xdc823ea4 ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe2bd47db ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe417d940 ocfs2_dlm_lvb +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 0x5cec6361 notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x9b78d983 notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x021957e1 raid6_datap_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x05513b71 raid6_call +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x0f8a2742 raid6_2data_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/802/garp 0x5eaf6281 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0x9611604f garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xa36a73ee garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0xc77d50c4 garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0xc7f881c6 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xccbf6f0e garp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x031b0eac mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x364f912f mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0x54b01ac5 mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x704d3d99 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xb7f09b08 mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0xfe4920b5 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/stp 0x2b0535a7 stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0xade7bfa7 stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0x38b96338 p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/9p/9pnet 0xa1c9d0d2 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 0x0f36cc89 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 0xfca9e673 bt_debugfs +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0229507f dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x11a82a09 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1f1ea20d dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x230b4f37 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x245992e2 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x303eaac8 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x505d6b97 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x577a36d1 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6986db6a dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6c0c7b99 dccp_insert_option_elapsed_time +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6d26f984 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7a4f0189 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x809eba93 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x82a3127c dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8788aa81 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x91b0551e dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x953d9967 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9de87784 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa1c7a2f6 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa67e9863 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0xacd2c888 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb007b082 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0xba3bc064 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbd79ff68 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc40104ba dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc9ba5f49 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd1089991 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd847487a dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd91c17f3 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdeb6d4ec dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe82e469b dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe9c50304 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0xebf6fc50 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf3017e21 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf764e4c7 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfdc5eb3b dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x0590f3bd dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x3a6c69ac dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x4024124f dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x6d3e6b71 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xc740531b dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xea2c7d12 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x4bb4d7fe unregister_switch_driver +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xbe71dfe9 register_switch_driver +EXPORT_SYMBOL_GPL net/ipv4/gre 0x9ba63e9f gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xcb8d050b gre_cisco_register +EXPORT_SYMBOL_GPL net/ipv4/gre 0xd97db33b gre_cisco_unregister +EXPORT_SYMBOL_GPL net/ipv4/gre 0xdc58b187 gre_build_header +EXPORT_SYMBOL_GPL net/ipv4/gre 0xeb161914 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x4fd7593a inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x55df3be5 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x61b019ce inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x6c5d53d2 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xa38c901e inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xcc47e8e7 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x1659b6af ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x325b2c42 ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x39224299 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x520316cf ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x56445abc ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x572b5684 ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x65100625 ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x70dfd56b ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x894f9418 ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xa9836bb4 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xaa97fb9c ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xca64ed7e ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xe17d92c4 ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xec339706 ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x01039dc3 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0xda4ee0fe ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0x6d40a921 need_ipv4_conntrack +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xe966f947 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x205ad37f tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x40b70cf6 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xadea9b87 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xb6108097 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xe63a6698 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/xfrm4_mode_tunnel 0x3e068028 xfrm4_mode_tunnel_input_register +EXPORT_SYMBOL_GPL net/ipv4/xfrm4_mode_tunnel 0xf4867e1a xfrm4_mode_tunnel_input_deregister +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x32109cf2 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x4e9349e9 ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x665bb82c ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x848916d9 ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xe553fca4 ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x8bde027b 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 0x2fe5750e nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/xfrm6_mode_tunnel 0x3e16aeb8 xfrm6_mode_tunnel_input_deregister +EXPORT_SYMBOL_GPL net/ipv6/xfrm6_mode_tunnel 0x4305e5d3 xfrm6_mode_tunnel_input_register +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0df38088 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0e742502 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x60f3807b l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6a80f26c l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6a8215dd l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6d9afa7c l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x7ab69e95 l2tp_tunnel_sock_put +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x7e6d65c9 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x83321626 l2tp_tunnel_sock_lookup +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x8c405062 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa9146e9c l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xaf1ad413 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xb014a9dc __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc761fb1a l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe199fb58 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe3e5a7b5 l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xfaff0227 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x96b40892 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x0e8e97c7 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x2ee1dcf9 ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3663a36d ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x4bf42798 ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x4f88727d ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x531a0cfd ieee80211_iterate_active_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5d38f601 ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5e8aba4a ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x6fadca75 ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x77697cab ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x78bbcc16 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8de35f59 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb14245d5 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb72e2b09 ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb9d9b811 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x204c6c6a ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x25d85780 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x300d2247 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x37063b85 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 0x52c04dd4 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6344eaf6 ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x642d8176 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x743003b0 ip_set_nfnl_get +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 0x93e03854 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 0xa1711523 ip_set_add +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 0xbb4597bc ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd399e16a ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe22b12de ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe527bd8e ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xea835e21 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xebfb4e60 ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xef13ebbe ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf2ad6178 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x597ae929 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x644fbcf5 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x9c5e3e9a register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xa53ada56 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x01e37f76 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x01f84db5 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0764f2ef nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0ab8bcac nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0bd0fc59 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x108e3fde nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x14ac9c7e nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x154c222f nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1c31688b nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2053b788 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x25a3252e nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x277a40ad nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x294827d4 nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2ed10550 __nf_conntrack_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3103cf80 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x36203517 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37522c5f nf_conntrack_flush_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f06a528 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4080b218 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x41565ba0 nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x427f0bc3 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4bcb46a1 nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4d5c1ab2 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x53a1dc94 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5e4b5ea0 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x606ab59f nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x64b1e76c __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x671251b0 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x68b219ed nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x69471496 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6a5e270a nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6f29ece5 nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6fff8279 nf_conntrack_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x710d74d6 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x71fd2c4f nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x75432173 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x787f79ff nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x797de8a3 nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7b705abf nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x80767564 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x83aea5e9 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x86208fd4 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x86a7f8fc nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x86e0d439 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x86e598cc nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x880c870e nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90f91708 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x93c00da7 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9403578f __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x94869dd8 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x95f7dd53 nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x973f9f7a __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x976c9af5 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x987b9805 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9c14c8a9 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa55af877 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa8f2dcc6 nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xabe3c129 nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xabece9f7 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xac22e9d8 nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb0b1d8b3 nf_nat_seq_adjust_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb0d22208 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb1b97850 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb6eda5ef nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb8446e82 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbab71eee nf_ct_l3proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc9717f70 nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc9fca626 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd0da2760 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd34c3816 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd37b853e nf_conntrack_tmpl_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd4f65cb5 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdad850be nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xde911448 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdf4c11e3 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe36a4425 nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe424e865 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfa380402 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfdab7deb nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xffc34401 nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x794489fc nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x11b28d7d nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x36a6b3ec nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x5899c15b nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x5e6604ec set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x621b0050 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x67247512 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x79b7c8c8 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x84b97a6e nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xaf2eedf9 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xb2025eac nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xbf4910f6 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xfdfca038 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0xc8444f0f nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x146bd801 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xc51a81b0 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xe15a2639 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xfa93d9da nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x97355016 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xb0a1d155 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x00958e30 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x1e1fc8da ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x2d501d45 nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x4d7400d4 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x5aaf88f0 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xf17ebdeb ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xf5ca7f98 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x8643bb42 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x12b3ea51 nf_nat_tftp_hook +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 0x3691d9ab nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x41196017 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x7ae61797 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xc18f870f __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xf65c39ba nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xf6924dad nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xf9fe001a nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xfd90a780 nf_nat_l4proto_unique_tuple +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 0x9bc58c6a synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb42e336a synproxy_options_size +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xde27a1e4 synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xef7db50c synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0fda3c99 nft_validate_output_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2523b557 nft_do_chain_pktinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2a52ece2 nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x31c4b476 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3d49dab7 nft_validate_input_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x4b756d54 nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x69acb61a nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6d3c49dc nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6fc5f28c nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc36960dc nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc9e6aff9 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd132d82f nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd86cdb09 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xdece7525 nft_validate_data_load +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xdf419684 nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x0e928ea6 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x429e91f3 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5a73691c nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x6e7c2a87 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xd7284bb8 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xe8582b56 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xf257ede1 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x6be70a09 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0xe8dbabbe nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x02c4f07d xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x12c0a35e xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x24c8e482 xt_copy_counters_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2858ddfe xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x352a44a2 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x68075391 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6c52d6c6 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x726f1b8e xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7ccc5f01 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x96eefa83 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9b2a7fb5 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xabf3fbc7 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe05810ee xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf548de9d 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 0x0df75325 nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xb2e06a0e nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xd47dbb7b nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x00b4c3d4 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x044d6be2 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x06643548 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x0ed2c719 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x1878be38 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x1af8b010 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0x21155a58 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x2331ed29 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 0x338741d5 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x36e22684 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x3a46c784 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x44d30878 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x47338bbf rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x4de149d3 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x59435295 rds_conn_create_outgoing +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 0x7dd2ce0a rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x85df614f rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x96fafe85 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xd69d4111 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0xd78106ea rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xdacb3aa6 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0xea04055c rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0xf8f90276 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x0d1828e5 rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xbae93b42 rxrpc_register_security +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00c52ef5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb5dea7ef g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb7443289 gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xbcc4a1d3 svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xc6c54a22 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x01f32722 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0284f6a1 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x02baa846 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x02c6e063 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05cd1d48 rpc_killall_tasks +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 0x0726dbd3 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x07d1d35b xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x084285de cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0fc7e099 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x119e2e8f rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x12f9a510 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x13ea7ff2 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x15eb1703 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x164b30b3 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1659efbb rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x17c2d4be auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x17dc6bcc svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1836fc6c rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x186efa38 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1a02248f rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1aaf7427 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1be711b2 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x206374ff rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x20cd98b1 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x24e5794d sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x25c8fb88 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x26ed7228 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2bfd1fc9 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d20a4c3 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2da6a46d rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e1aea1e xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e495487 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eae83b2 rpc_localaddr +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 0x31958982 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3235d51a xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32612c5d svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x332597b8 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x333d6d94 rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x33706bda xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x35448c65 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3570dcdd rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x36e4ec97 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x372e46a4 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x39055485 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3a40aa70 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b648ce0 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c7421f6 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3df4641d cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f4df80d __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3ffcb646 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4011ebe7 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4188381b xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x41d73eb8 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x43b87c34 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x45e3c609 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x475b4557 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4813796f svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4ebc5c2a xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5085f019 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5424e265 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x54e3f1fd xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5652f5b0 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x56b343c8 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x57f5a84a xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b95d8dd csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5cfc4006 rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5d0b9f09 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60ea5139 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6124366f svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6164de32 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x63d84430 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x64284a8a xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x642b5d0c auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65730e1f rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65745623 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x66dbc2e1 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x67bf7e48 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x67e5d16d xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6852851e svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x68798639 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6c56521e rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d3d2ba5 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6ef68d91 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x72c546cf xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x74068a6f xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x760ad250 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7708ced9 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x78632f63 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x79355ae7 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x797350c0 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a934774 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ec83232 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7fed1247 rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x800c98bd xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8013f195 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8134e286 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83656663 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x848d8b4b rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x85f54685 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x86780ad3 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x86f04580 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8769eb1c rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87e37782 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x88fa9d2d rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a215515 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8c696419 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d0dc3db svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ecc4630 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8f818a70 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9029e2f2 rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x927e1488 gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x932ab825 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x93c0f11a write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x94ff2bbb svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x96cdb63a xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x971526b3 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98e9ef2e rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x995546ff xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9b5a82e4 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d783190 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa0ffc448 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa16eef8b xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa185601d svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa201df5c svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa33e6543 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa46afdcf rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa57cd837 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa5eda911 rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa60c0daf rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6418f76 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6908ef3 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6c0b8b1 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa798ebbd rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa79adeac svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa8b792ad svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa8fdde67 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9743377 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa98daa92 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xabf16f01 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xace80116 rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf52b1bb svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf7b1213 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb2da3da8 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb3a8062f rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb6738a26 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb740125c unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbaf8fd57 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb631c3f rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbd983097 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf3a40d2 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf8e7146 xprt_setup_backchannel +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 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc45e6bb4 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc5caba27 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc7a41a8d rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc9f77342 svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcac92f13 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcc03bfae rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd00341df sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd3c7e457 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd467312e svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd4ee3283 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd95bfb21 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd827122 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdfb55913 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe11ca6be xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1d3215f svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe2c12210 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe34bc639 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe3f11071 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe4c7fb6e xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe4db1936 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe68d8bc0 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe7df4a5c rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe801f69b xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe88cf516 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xec2ce454 xs_swapper +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xecfeb66e xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedc40232 svc_set_client +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 0xeec5ac02 rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf34bb5f1 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf5e9f513 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9871a2a rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa268b11 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfab785f6 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe2cfc2a rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xffba2f39 xdr_encode_word +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 0x19aa02f8 vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x286f7bff __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x37f371b8 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x3a6617ef vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x5366648b vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x5424dd89 vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x61db0217 vsock_enqueue_accept +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 0xa11a5298 vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbe979d1a vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xcd1b64d3 vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xeb78ef71 vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xed1ae0e7 __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf54b1d1a vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf593c40a vsock_pending_work +EXPORT_SYMBOL_GPL net/wimax/wimax 0x1af07aa7 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x20050e19 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x2efb4e1e wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x35d9b8e3 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0x636da339 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x7848abaa wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x87f00395 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x8a09efe3 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc49f1610 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0xe0107fcc wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0xf2f18af7 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0xf311aa4c wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xf9f5ec9e wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x179f0969 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x30e9c145 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x40688d59 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x4a5d13f5 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x513e76dc cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x5536f260 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x55edbc9a cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x694cecf3 cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x93baada0 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xa9244337 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf98bc365 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00778770 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x056bb269 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0a575945 xfrm_count_pfkey_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0b9e5852 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x74e1a843 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7c30b8c7 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x92dbc6c1 xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xbc8b0f41 xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xce7a55c1 xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xe122af95 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x528ac73d ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x9f6038dd ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xc5889a3d ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xddbcebe4 ipcomp_input +EXPORT_SYMBOL_GPL sound/core/snd 0x19473fcf snd_kctl_jack_report +EXPORT_SYMBOL_GPL sound/core/snd 0x3ca17104 __snd_printk +EXPORT_SYMBOL_GPL sound/core/snd 0x438d8a16 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0xbf340d49 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0xdc79ba04 snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd 0xfa3bbb24 snd_kctl_jack_new +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x2e3ea8b5 snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x52edade5 snd_compress_register +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xd1b0f689 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 0x28aee023 snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x64a23c99 snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x04fe31da snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x122e26b0 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x2802c683 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x2b74841a snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xaea6db5e snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xd5d99950 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0000c0a2 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x04f96f73 snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x06094e40 snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0663c599 snd_hda_multi_out_dig_close +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 0x0691021d snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x07b3dce6 snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x083d3c58 snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0af85e1f snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0b65baf4 snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0cc4382f snd_hda_codec_resume_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0e856b87 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0fd63378 snd_hda_gen_spec_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x105b4913 snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1135ff53 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1152106f snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x11d8ac4f snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x127f2a0d __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x13658113 snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x184601a7 snd_hda_codec_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x18b98ce5 snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1bd7be05 snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1f215fe0 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x20706ff6 snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x222f9f6f snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x233936dc snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2448508b snd_hda_codec_resume_amp +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2466ba2b snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2497bc41 snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x25f348b4 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x261840e3 snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x280a70e1 snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2d03ddef snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x317c08db snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x31baf8e0 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x35e945eb snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3c1cf190 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3da97938 snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3f4d12ce snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3fdd51cf snd_hda_check_board_codec_sid_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x400f7335 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4069851e snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x42760321 snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x433119a0 snd_hda_parse_generic_codec +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4594acfd snd_hda_bus_reboot_notify +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x465958e1 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x48f2d59f snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4a78703a snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4bb49128 snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4c754b53 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4cc4cae9 snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4d5ae65c snd_hda_jack_tbl_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4dab1f60 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4edece1e snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x50f489a6 snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5311169b snd_hda_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x538f8015 snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x53bfbfcb __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x54689c01 snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x55efec58 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x588cd548 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5916e83f snd_hda_add_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5bf344a3 snd_hda_ch_mode_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5ea217d5 snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5f834f4e snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6275cfe9 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6456bd63 snd_hda_query_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6499b435 snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x65335d9b snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x65adf79b snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6b570f66 snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6b929bd4 snd_hda_override_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6daa9bb5 snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7127769e snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x74cb48c1 snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x75ce008d is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x76dc6871 hda_main_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x77c2bf72 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x78c268e9 snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7d3fe4ae snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7eff791e snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7fc72053 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x807617e3 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x81eecb0c snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x84b75c0a snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x84cae391 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x871a6e44 hda_extra_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x873f170b snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x890cbd4c hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x89122a38 snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8dc3ae56 snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e1879bd snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e4a7c8c snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e4c6826 snd_hda_calc_stream_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9187dae9 snd_hda_delete_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x93e3706c snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x93fcdcb3 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x943fc798 snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x98b0f478 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9944d70b snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9ae4d139 snd_hda_suspend +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9b4d9e59 snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9bd4c5d7 snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9cafffa9 snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa06c1aba snd_hda_queue_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa0d2aaf5 snd_hda_codec_flush_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa17a5e81 snd_hda_codec_update_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa1f9fd01 snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2827d76 snd_hda_get_jack_location +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa3660c3c _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa4348edf snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaa29466f snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xafdd817a snd_hda_sequence_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb1ffbe31 snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb31050bb snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb3962e06 snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb3b46f78 snd_hda_codec_amp_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb719eb27 snd_hda_bus_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb74dce44 snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbb1cce13 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbc26d4f2 snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbd778498 snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbf933363 snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc3d54eb3 snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc652fd69 snd_hda_get_jack_connectivity +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc6cee171 snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcabe66c8 snd_hda_check_board_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb301b6e snd_hda_get_jack_type +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcd51f845 snd_hda_resume +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xce896047 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd3346b35 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd3989e67 snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd5e3137c snd_hda_ch_mode_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd6891adb snd_hda_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd6da27bc snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd7fbc7bc snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xda156eed snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xda3f6558 snd_hda_ch_mode_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdce384d8 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdd9ea8df snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdda32aa8 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xddcac9c6 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xde56e648 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xde9daa3e snd_hda_get_sub_nodes +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe31a68b8 snd_hda_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe3648abc snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe6fb4f36 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe8fe2dbd snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe96b622a snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeab2bef5 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xee5c44ac snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xef27695c snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf2686409 snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf2ca164a snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf443d934 snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf631148d snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf6afec59 snd_hda_is_supported_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfa8ac579 snd_hda_query_supported_pcm +EXPORT_SYMBOL_GPL sound/soc/atmel/snd-soc-atmel-pcm 0x731ac91c atmel_pcm_mmap +EXPORT_SYMBOL_GPL sound/soc/atmel/snd-soc-atmel-pcm 0x7e00fc52 atmel_pcm_new +EXPORT_SYMBOL_GPL sound/soc/atmel/snd-soc-atmel-pcm 0x85dac98d atmel_pcm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x03c8f2f5 snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x05584fcc snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x06dceffb snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x070e2591 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x07572f85 snd_soc_codec_set_cache_io +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0a9a10d9 snd_soc_lookup_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0e556d20 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0f1d1b4f snd_soc_dapm_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0ffcba4b snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1047a84b snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x11f31555 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x13b3cce1 snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1914bf45 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1acd4829 snd_soc_dapm_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1b5b77ab snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1c8c7b30 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1d1a473f snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1e28bae8 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1e7854a5 snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x22a72c37 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x23f301bb snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x24004d88 snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x261272a9 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2c8e8c3b snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2f172cc5 snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x30842cb6 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x31013bde snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x313a0273 devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3195f20d snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x34b464f6 snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x362cdefa snd_soc_update_bits_locked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x382bed60 dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x39560661 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3db3ff4d snd_soc_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x41ef7989 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x421cc393 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4259026b snd_soc_cache_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x47cd14d5 snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x49d7c075 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4a4e9e51 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4bf054cc snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4cc6435f snd_soc_dapm_kcontrol_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x51314a19 devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x516bc36c snd_soc_dapm_put_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5222e6f9 snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x52454d94 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x526d97dc snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x57b15cf9 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x59867840 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x59cb0101 snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5a12a5ea snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5a9c235b snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5c6c773b snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5eea51d1 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5efa68f5 snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5f23e10f snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x60b1169f snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x621dc2f3 snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6294fc59 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x65539db6 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x66a4792c snd_soc_cache_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x66ad5ff0 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6739dc46 snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6c6c3311 dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6ce243ad dapm_mark_io_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x71b93190 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x72f5e368 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x77022878 snd_soc_codec_writable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x77f3b592 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x78082fcc dapm_mark_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7816978a snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7a4912ae snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7b187623 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7b9d524b snd_soc_cache_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7c4fc471 snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7d2e8cf2 snd_soc_codec_readable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7ef23e2e snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x81534c73 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x84127c8e snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x850349dd snd_soc_info_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x871c11fd snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x88870501 snd_soc_get_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8b0816d0 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8b96e8fb snd_soc_codec_volatile_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8bda304b snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8f30a47a soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x90c72182 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x918ea475 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x97510c2c snd_soc_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x986b1e9f snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x98d2d40c snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa3a422aa snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa6a29e04 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa6f2aa38 dapm_reg_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xae247f6a snd_soc_dapm_get_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaee0097a snd_soc_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb19a829c snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb253f7ea snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb3874915 snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb3e25263 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb453c07f snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbaa1b2ff snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbcab4e48 snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbe32d0c3 snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbed86b9d snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc2287033 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc2ad7075 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc5c3dc49 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8bd228c snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8f774b6 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcc23a636 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcd75eddf snd_soc_remove_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xce2ff4fe snd_soc_add_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd464a62c snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd7df4c07 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xda0a76c2 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdaf5c7e3 snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xde23b573 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe03f3557 snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe0a67214 snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe1ec583e snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe68c0719 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe8a77d60 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb931aaf snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeca0e38f snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeca914c7 snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xed9259e6 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xee0030f8 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf43cb1f1 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf4d8a8be dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf56d16f9 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf8a7a0cf snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfe79b50b snd_soc_put_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfed8fd45 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfee94d8b snd_soc_platform_write +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x00000000 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x00000000 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x000c915c crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0x0016f66b ref_module +EXPORT_SYMBOL_GPL vmlinux 0x0026af1e pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x00470dab tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x00632780 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x00736478 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x00745244 rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x00a75147 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x00b3e8ce stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0x00c4dc87 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x00d28fa1 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x00dabbc3 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x0179b7fe usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x0187e912 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x0195fba9 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0x019ed0a0 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0x01a50a4e usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01eba3f2 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x01edf457 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x02078dcd dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x020bfe97 cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x021ebfda btree_update +EXPORT_SYMBOL_GPL vmlinux 0x022ef870 pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x0237c70a sec_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x02389e31 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x0243cbd0 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x026ab55c regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x027bd22b bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x0294e03b rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x029c0c11 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x02af2c42 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x02cbe021 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x02eadbe2 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x03277bf0 unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x0354b5c4 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x036503c5 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x0382e7e8 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x038d479a __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x03bceac8 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x03bf1d5e gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x03c73085 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x03c7bbd2 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03ead650 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x03fef90e dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x040b409c usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x04210c94 dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x04486e88 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x045b452f of_clk_get_parent_count +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x04669334 kvmppc_prepare_to_enter +EXPORT_SYMBOL_GPL vmlinux 0x046a7713 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x04961630 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x04b5549c __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04cf646d kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x04d188fc skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x05054850 da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x0519b44e user_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x05307855 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x05397419 sec_reg_update +EXPORT_SYMBOL_GPL vmlinux 0x053ae4ac crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x0599c019 xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x05a485a9 rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0x061dee59 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x06223819 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x067ca0f6 thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0x06ac4b1b of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0x06b092cf of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0x06b19caf kvm_vcpu_uninit +EXPORT_SYMBOL_GPL vmlinux 0x06b4985f swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x06d99e4a tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x06fd2dde securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x07124477 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x074d998b fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0758c47d ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0762a0a0 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x0797161e ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x0798539c pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x07998660 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07f300c3 smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x08015b89 __module_address +EXPORT_SYMBOL_GPL vmlinux 0x080fd2bd crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x083dc674 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x083f63b8 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x08aedae4 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x08c47386 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x08c82977 __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0x08efc49f kvmppc_emulate_instruction +EXPORT_SYMBOL_GPL vmlinux 0x0906b0f9 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x091c824a machine_power_off +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x09469482 kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x09526f30 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x0955e389 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x095d232b devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x0962d0e8 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0x09738aec devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x0995fdc1 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x099ce0af usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x09a1b544 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x09a64494 kvm_set_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x09baeadd device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x09d8297e fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x09dfa287 gpio_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x0a250bbf sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x0a3bd96b regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x0a3ef214 device_reset +EXPORT_SYMBOL_GPL vmlinux 0x0a51ae5b virq_to_hw +EXPORT_SYMBOL_GPL vmlinux 0x0a64071d rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x0a769f7e usb_bus_start_enum +EXPORT_SYMBOL_GPL vmlinux 0x0a9fd3c5 gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x0ab8e4a8 blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0x0ac27796 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x0ac2e04e mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x0acda033 bus_register +EXPORT_SYMBOL_GPL vmlinux 0x0ad1e825 gfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0x0afd4610 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x0b019bb3 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b1faa04 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x0b540aac crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x0b59390b __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0b7699ec inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x0bab944e dm_requeue_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0x0bb490bc crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x0bcd5793 skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c28b708 irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c6ef28c blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x0c8687d7 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x0ca16fb8 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x0cc14a2c kvm_release_page_clean +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cce0227 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x0cd1647e __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x0ce42c0c rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x0cf0a949 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x0cfc3394 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x0d1279a9 dm_underlying_device_busy +EXPORT_SYMBOL_GPL vmlinux 0x0d430005 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x0d49beed ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x0d53ad8a arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0x0d706d2e rh_set_owner +EXPORT_SYMBOL_GPL vmlinux 0x0d72bdcd clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0x0d762735 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x0d8f3a67 mpic_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0dbd0e20 of_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0de06988 cpu_first_thread_of_core +EXPORT_SYMBOL_GPL vmlinux 0x0df0e9bc xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x0e2a0822 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x0e83dd96 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x0e8a8ab6 regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x0ebdc522 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x0ed4eb73 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0ed9302e percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0x0ef1207a blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x0ef87ee0 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x0f31939d platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f8a9dad ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x0f9654ba fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x0fc01e9f static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x0fcdb1e6 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x0fe112dc of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x1021fa88 regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x1023abdd ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x102971b3 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x103ea69a cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x105416f0 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0x106d52f6 default_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x1081615a pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x109af6ae relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x10c79900 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x10da4000 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x10ddd5b1 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x10fa59fc list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x1101e3d9 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x1114011d threads_shift +EXPORT_SYMBOL_GPL vmlinux 0x11290fae simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x113e790f __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x115d57d1 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x11631997 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x116cf6e5 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x11934b31 __rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x1195a851 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x11a60741 regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x11abed52 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x11bc3984 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x11be4ad3 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x11f2fd6e sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0x12156cb0 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x121cd964 of_pci_range_parser_one +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x121ed3f3 add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0x121fa42e sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x12469614 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x1249bd69 powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x12521179 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x125da1da tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x125eaa5c regulator_set_optimum_mode +EXPORT_SYMBOL_GPL vmlinux 0x128029c0 of_irq_parse_pci +EXPORT_SYMBOL_GPL vmlinux 0x12948fd6 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x12b4cae7 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x12ed26b9 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x1307dce4 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x130abbf7 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x13133518 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x133f9495 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0x1357f1ce __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1358a955 wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x136a4ee6 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x13921363 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x13a25bbf dm_dispatch_request +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13aeeb47 pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x13af533e blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x13bffa31 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x13e5ea13 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x13e9b7ed da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x13eeb70b ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x13fd0e86 kvm_vcpu_kick +EXPORT_SYMBOL_GPL vmlinux 0x1415f28a ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x1425890c tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x142a8be4 of_clk_get_parent_name +EXPORT_SYMBOL_GPL vmlinux 0x14535313 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x145c3c71 regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x14610679 cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0x14ad14e2 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x14be89c5 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x14c72430 ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0x14e13c2e screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x14edcc12 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x14fd3ece blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1516077c perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x15329a8d pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x15371adb each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x1561eaef fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x157acee8 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x157b5411 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x158f1dfd led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0x15a23fc7 crypto_rng_type +EXPORT_SYMBOL_GPL vmlinux 0x15a4afc9 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x15ad23d2 device_register +EXPORT_SYMBOL_GPL vmlinux 0x15c21e5e nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x16179793 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x168367c7 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x16b7b90c da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x16c80bd1 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x16e23020 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x16ec9553 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x16f2f4eb platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x17180295 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x1720d957 sdhci_pci_o2_probe_slot +EXPORT_SYMBOL_GPL vmlinux 0x172492ac ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x17466519 usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x1753a32f hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x1773df04 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x177812b7 devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x17850f66 rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0x17b4a99c ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x17be0fbe aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x17bfc8a9 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x17da8db0 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x17ec5e48 ata_sas_port_async_resume +EXPORT_SYMBOL_GPL vmlinux 0x17fce2e2 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x181479e1 pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x1825d5e1 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x18320661 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x1833bcb0 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x183faa45 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x1851ec02 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x1852871a extcon_set_state +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 0x189cb4f6 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x18a27f34 jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0x18af3423 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x18dd1c30 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x190a30ce usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x192ab1d2 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x1930a99f cgroup_taskset_cur_css +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x195c364d hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x19690471 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x197888dc led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x1978e6f9 inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19b384a5 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19ffde91 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x1a082d69 max77693_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x1a0e7272 clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0x1a16e46e ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x1a323362 __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x1a4f67dd ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0x1a665e1b regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x1a76f168 ping_err +EXPORT_SYMBOL_GPL vmlinux 0x1a8c5907 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x1ac23a74 isa_bridge_pcidev +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1acf7b3a class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x1ae957e8 skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0x1afa4118 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0x1b1f29b7 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x1b2821a5 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x1b2e0a7b netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0x1b4ec7a5 dm_set_device_limits +EXPORT_SYMBOL_GPL vmlinux 0x1b52db1c probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x1b543369 __clk_register +EXPORT_SYMBOL_GPL vmlinux 0x1b572fe6 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1bab249b rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x1bca43fc tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x1bd06aab cpufreq_frequency_table_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x1bea48af trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x1c03c775 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x1c096232 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x1c2edcfe map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x1c360e19 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x1c48da7b gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x1c4dc3f8 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1ca4b4d9 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1ce09dce srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x1ce3c435 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x1cf52746 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x1cfe78d1 kvm_release_pfn_dirty +EXPORT_SYMBOL_GPL vmlinux 0x1cfec1d0 gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0x1d30e026 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d5e2ef0 pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d80bd56 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x1de054d5 of_clk_del_provider +EXPORT_SYMBOL_GPL vmlinux 0x1de25446 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x1de6773d crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x1dfbcf4c mpic_msgr_disable +EXPORT_SYMBOL_GPL vmlinux 0x1e066887 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x1e0801f0 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x1e4335e0 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x1e452a76 netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x1e588d01 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e8fac8e wireless_nlevent_flush +EXPORT_SYMBOL_GPL vmlinux 0x1eb1594f gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ecdc3a4 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x1ed3d2da led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x1f06296c rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x1f13d59a rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x1f257af1 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x1f508c12 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x1f59c7ce driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x1f798d56 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1fcece42 inet_twdr_twcal_tick +EXPORT_SYMBOL_GPL vmlinux 0x1feaf796 kvmppc_sanity_check +EXPORT_SYMBOL_GPL vmlinux 0x1fefba33 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x200c2402 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x202fb1b8 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x2036e9a2 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x203f100e i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x2075b906 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x20931ea8 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x209c8bdf hrtimer_start +EXPORT_SYMBOL_GPL vmlinux 0x20bc3470 orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x20ccdadf pci_sriov_migration +EXPORT_SYMBOL_GPL vmlinux 0x20d3004f pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0x20d8fb82 gfn_to_memslot +EXPORT_SYMBOL_GPL vmlinux 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL vmlinux 0x20ea4728 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x2121b658 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x215d0bfc __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x216448be ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x216e9798 serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x217156e7 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x2186f5a0 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x2193e8c3 pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0x21ae3918 PageHeadHuge +EXPORT_SYMBOL_GPL vmlinux 0x21b6762f regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x21d36a03 kvm_hypercall +EXPORT_SYMBOL_GPL vmlinux 0x21e7fdc0 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x22121303 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x221f958b invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x22603c40 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x2281c1a6 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x22835efc ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0x22845173 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x2288e6d4 tcp_init_congestion_ops +EXPORT_SYMBOL_GPL vmlinux 0x228ea9a9 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x22a164f9 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x23029fff kvm_read_guest +EXPORT_SYMBOL_GPL vmlinux 0x2321fd3f sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x232d7c16 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x23679939 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x238f8b33 led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x2392bc6e pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x2393775e wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x23b7019b cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0x240613e8 kvm_release_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x2413a267 devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x24155802 irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0x245fd052 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x247b295e sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2482e1c2 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x248e4919 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24b45362 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x24da2638 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x24ff3201 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0x2517ad7f device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0x2551365a ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0x256d28e4 sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x258aea10 uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x25ac7114 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x25ad3282 wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0x25c460e3 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x2602d5be __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x26134ee1 need_load_eval +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x26588a4e blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x2665a89d xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0x268efd43 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x2691412e boot_cpuid_phys +EXPORT_SYMBOL_GPL vmlinux 0x26916674 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x26aa2452 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c7c653 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26d2b999 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x26d57549 tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x26e6c7f5 led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x27002119 lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL vmlinux 0x273dd733 powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x27421170 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x2748789a kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0x2761da80 rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0x2773b1ed ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x2776affd blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x277e82fe usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x27851bda regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2787db00 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x27a3f85a blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27cec258 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x283701d2 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x283ba581 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x284b1e19 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0x285100e6 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x285a5f9d percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x287d0294 of_console_check +EXPORT_SYMBOL_GPL vmlinux 0x28824552 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x28830cf1 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0x2889f546 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x28a82da4 snmp_mib_init +EXPORT_SYMBOL_GPL vmlinux 0x28a911c1 mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x28abcfe6 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x28d33729 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x29196688 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0x29d8571c pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0x29fb7730 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x2a04d377 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x2a04fd94 __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x2a0be5b1 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x2a284889 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2a684af2 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x2ad061c8 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x2ad0fa78 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x2ad1ece4 zs_get_total_size_bytes +EXPORT_SYMBOL_GPL vmlinux 0x2adc78da pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x2af39c27 devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2b50bffd hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x2b5c303b smp_send_reschedule +EXPORT_SYMBOL_GPL vmlinux 0x2b607170 ktime_sub_ns +EXPORT_SYMBOL_GPL vmlinux 0x2b7a574f md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x2b7a6de8 syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x2b85a8cb apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x2bad145c kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL vmlinux 0x2bcec066 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x2bcf0440 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x2bcf28b3 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x2bfaef4e clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c5a5f02 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2c5fa420 regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c97c085 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x2ca463f3 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x2ca74f74 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x2caeb343 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x2cc824c0 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2ce4646b regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2d17a0e1 cgroup_taskset_size +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d1bf20c arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x2d36c57b rh_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2d401069 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d523587 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d74ce7c irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x2dac80f4 wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x2dc5a6d1 btree_last +EXPORT_SYMBOL_GPL vmlinux 0x2de5b170 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x2deb2ef1 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x2dffa8e8 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e353dc7 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x2e45e488 rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x2e48d5aa usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x2e78af9d regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x2e7cc945 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0x2e80ace8 relay_open +EXPORT_SYMBOL_GPL vmlinux 0x2eabfd84 pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x2eae0da5 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f21ad98 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f6bede1 sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x2f9b4560 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x2fbc922d usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x2fc1c2d3 regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0x2ff8dc80 kvm_init +EXPORT_SYMBOL_GPL vmlinux 0x2ffb5ff7 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x30005304 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x3006b6f5 of_pci_get_devfn +EXPORT_SYMBOL_GPL vmlinux 0x3023bef2 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x302d24b3 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0x3050ec18 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x305b4fa7 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x3063c825 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x30786199 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x3084e9a7 pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0x308b733a getboottime +EXPORT_SYMBOL_GPL vmlinux 0x308de526 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x30a49790 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x30a4f4ca bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x30db054a usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x3105a668 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x31577046 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x316bc6ff pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x31859993 of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0x318a5bed pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x31bb84e2 devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31d54be6 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x320b4744 ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x321e5051 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x324562e5 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x3256ca45 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x325e2403 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x32806373 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x32924a4d scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x32acf7c6 gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL vmlinux 0x32c1edf3 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32dbd9fb rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x32dfe15e filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x32fd447a monotonic_to_bootbased +EXPORT_SYMBOL_GPL vmlinux 0x33339d09 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x3348144a aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x33556d40 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x33777a87 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x337786fa usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x3378c2ac udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0x33a94a45 of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x33c6e992 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x33c8b3c6 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x33d08b4e scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x33fcb04e usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x34107df1 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x343b1bf2 i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0x34468056 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x34519481 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x345445be power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x34547e28 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x34752b03 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x34a73f68 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x34ac50a4 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x34b66455 spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x34cb8add ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x34e30e24 device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x350c27f1 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x354ba795 tpm_show_caps +EXPORT_SYMBOL_GPL vmlinux 0x356ec539 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35c55e06 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x35f10f43 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x35f165f1 devm_reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x360a6343 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36a0856f regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x36a64e5c percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0x36adea33 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x36b506b9 system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0x36c7dc1e key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x36d2503b device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x36ea1502 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x36effefb usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x36fe99eb pci_msi_off +EXPORT_SYMBOL_GPL vmlinux 0x37031fb8 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x37073a97 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x37110c92 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x371a6ddb devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x372781d3 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x37422fd6 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x3774c238 clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0x37ba4d71 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x37c88631 ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x37d2c2c5 rh_dump_blk +EXPORT_SYMBOL_GPL vmlinux 0x37ec39e7 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x37f3b567 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x37f52b6a inet_csk_reqsk_queue_prune +EXPORT_SYMBOL_GPL vmlinux 0x381b4b39 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x381b5f0c kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL vmlinux 0x381b9cba debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x3822d5fb split_page +EXPORT_SYMBOL_GPL vmlinux 0x38392aba pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0x38531f51 tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x385c5c84 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x385cbba8 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x387a0ed2 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x38826ecc inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x38a9c2c7 input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x38af59af noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x397ef9ad crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x39b0091c class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x39e13a4a tpm_register_hardware +EXPORT_SYMBOL_GPL vmlinux 0x39fba546 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x39fdecf1 regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x3a103a27 powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0x3a15e0ee inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a41c2c6 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a7d14c8 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x3aa33e45 swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x3ac50f5b posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0x3ac7f26e fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ad82802 of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0x3b0ca761 task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x3b0ce5f1 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x3b170d08 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x3b2b129d uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x3b5fff84 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x3b74057f evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x3b7ba9c8 __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x3b84971c gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL vmlinux 0x3b9613d4 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x3be855e3 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x3bf810c7 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x3c19c949 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x3c28d47f rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x3c409100 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x3c696c0c rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x3c805d1c netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0x3c83d9eb mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x3c8424a0 clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3c8d28cc of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3cb16a8b irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x3cbd60ea page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x3cbffc4d bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3ccffec8 of_irq_parse_one +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cef66bd debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x3d24a070 tpm_show_enabled +EXPORT_SYMBOL_GPL vmlinux 0x3d40b085 usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x3d4c8d32 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x3d632bc6 rtc_set_mmss +EXPORT_SYMBOL_GPL vmlinux 0x3d6817d1 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x3d7db53d kobj_completion_init +EXPORT_SYMBOL_GPL vmlinux 0x3dc526a9 arizona_of_match +EXPORT_SYMBOL_GPL vmlinux 0x3dc802b7 regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dd003c6 tcp_reno_min_cwnd +EXPORT_SYMBOL_GPL vmlinux 0x3dd4d3a7 bprintf +EXPORT_SYMBOL_GPL vmlinux 0x3dd90118 sysfs_schedule_callback +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3df59f19 alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0x3df9a18c regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0x3e133b85 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x3e2e543d cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x3e2fa31f wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3e38c5c2 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x3e48b4cf rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e716271 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x3e757637 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0x3e971b8d regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x3ec4dd44 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0x3f1c9d5a key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x3f43cabf pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x3f461b8d pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x3f51a9ce reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x3f76d679 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x3f794341 find_module +EXPORT_SYMBOL_GPL vmlinux 0x3f8ed08d mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x3f8ee3a5 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x3fa2376c transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x3fb647af irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x3fbf4759 md_run +EXPORT_SYMBOL_GPL vmlinux 0x3fd5dd78 cgroup_taskset_next +EXPORT_SYMBOL_GPL vmlinux 0x3feda0c8 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x40010e28 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x401323b0 of_pci_find_msi_chip_by_node +EXPORT_SYMBOL_GPL vmlinux 0x40258187 device_move +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x4058a4e0 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x40755c64 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x408b69a6 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x40ac63cb get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40cdfee3 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40d5cd20 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x415d8f4e pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x41a711e8 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x41e83b42 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x41f738e7 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x42542165 kvm_vcpu_init +EXPORT_SYMBOL_GPL vmlinux 0x425822c5 device_create +EXPORT_SYMBOL_GPL vmlinux 0x425c1c0b ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x4262e8d2 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x42bde8c9 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x42cb73a3 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x42e0d8a5 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0x42ff96fd rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x43063999 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x430e5257 of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0x43185653 serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x43207401 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x4353b413 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x435dd112 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x435f75e1 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x4371148a regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x4379c67c crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x43969dbe rh_alloc_fixed +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43acd1cf driver_find +EXPORT_SYMBOL_GPL vmlinux 0x43ae0d20 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x43ae9eb9 devres_release +EXPORT_SYMBOL_GPL vmlinux 0x43b466b0 gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL vmlinux 0x43c39433 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x43df49cb usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x43e9226a disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43fdb707 kvmppc_emulate_mmio +EXPORT_SYMBOL_GPL vmlinux 0x440d859b usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x440e7019 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x443d7d55 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x44404f11 kdb_register_repeat +EXPORT_SYMBOL_GPL vmlinux 0x446998ba pcibios_free_controller_deferred +EXPORT_SYMBOL_GPL vmlinux 0x446ac53d sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x45059e7c sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x4508aae7 exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x450cb2c4 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x454c15ae __smp_call_function_single +EXPORT_SYMBOL_GPL vmlinux 0x454f70a3 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x4551781b crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x455d92b7 nl_table +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x457b77ca of_fixed_factor_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0x4581e454 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x45881161 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x45bea23f relay_close +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45ce44eb pci_pri_stopped +EXPORT_SYMBOL_GPL vmlinux 0x460f7531 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x461c18ad of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x4637ecf1 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x466cb397 relay_reset +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 0x46934de8 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x46a86d9f mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x46ca5fa6 aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x46d0504f blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x46d582fe ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x46eafdf4 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x46eb0309 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x46f7a0bd devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x470d48f6 regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x470fa426 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x4737247e regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x477a6ec6 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47b21077 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x47d2a762 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x48061ec6 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x48319068 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x483f1935 mmput +EXPORT_SYMBOL_GPL vmlinux 0x48465531 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x48579ce4 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL vmlinux 0x485de2a6 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0x488e7980 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x48953294 cgroup_add_cftypes +EXPORT_SYMBOL_GPL vmlinux 0x48c15ab9 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x48c64fbd ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x48ca8947 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x48d3abb5 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x48ddefee shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x49067e3d __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0x49177357 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x4939221b fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4955fecd napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0x49631283 stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0x496d992c devres_open_group +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 0x49b4a591 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x49b98571 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x49c5f502 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x49f38a43 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x4a31ce7f ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x4a4574f3 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4aaf642d spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x4ac2c6aa arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x4acb9528 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x4ae666c8 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x4af1ffa3 pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x4b09996b scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x4b17b645 of_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x4b8d8e44 pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0x4b90a56f power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x4b98827c rh_init +EXPORT_SYMBOL_GPL vmlinux 0x4b9a4fce i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x4bc62a81 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x4bd28a51 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x4bda643e __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x4c2e1f24 clk_disable +EXPORT_SYMBOL_GPL vmlinux 0x4c39520e ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x4c52fa63 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x4c574ebb devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c60eba9 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c9c6e6c dma_buf_export_named +EXPORT_SYMBOL_GPL vmlinux 0x4c9cf80b md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x4ca4c9df clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x4cd8f62b extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4cdfce73 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x4ce6ee03 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x4d006411 inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x4d09b51c sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x4d0a6183 tpm_show_owned +EXPORT_SYMBOL_GPL vmlinux 0x4d172ccb ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x4d23e35b key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x4d29472f xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x4d370cb9 devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0x4d42a5fd pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x4d7a01b7 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x4d858964 wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x4da3a894 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0x4ddd51ae pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e25bfd0 cpu_add_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x4e2fbfb5 kvm_write_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0x4e650db5 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0x4e68c153 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x4e8557dc led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x4ea11c69 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x4ec7d5ce usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x4edb77ce ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4eefbbd4 da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4ef76573 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x4f020dee public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x4f1d4017 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x4f477b83 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4f49cdb8 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x4f6dd55c extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0x4f72173c alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x4f7a21b5 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x4f881b16 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0x4f96def6 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x4fc457b0 user_describe +EXPORT_SYMBOL_GPL vmlinux 0x4fc81f96 css_next_descendant_post +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 0x504449ed debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x5047751b extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0x50601122 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x506691f1 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x506cc085 tracepoint_iter_stop +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x508ccbf8 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50be7804 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x50c89f23 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x50d65ebe pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x511b22c2 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x513a1bea debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x5147abef debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x5158cf61 da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0x5179fed8 inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x51846493 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x519489a2 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x51b5689c regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x51b65a26 rtc_lock +EXPORT_SYMBOL_GPL vmlinux 0x51dcf971 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x52212010 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x5245cd24 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x524621cc __class_create +EXPORT_SYMBOL_GPL vmlinux 0x525e7449 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x5285c42b devres_get +EXPORT_SYMBOL_GPL vmlinux 0x5294342b ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x52c67832 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x52e145cf pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x52ef5fb3 napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x53087a00 extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x53228feb tpm_store_cancel +EXPORT_SYMBOL_GPL vmlinux 0x5325ca7c ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0x5335dd11 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x535a45d1 tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x5368507c usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0x538a22e0 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x54078688 hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x5468124a of_dma_controller_register +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 0x549fea27 rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0x54eadaca ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x54f09e1c regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x54fc4f18 rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x555fd76c rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x5568890e gfn_to_hva +EXPORT_SYMBOL_GPL vmlinux 0x5574fa83 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x55cb8bb2 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x55cba9a6 rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0x55d992b7 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x55e1630b alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x5613fee7 rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x561e4b77 irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x563d11a3 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x564a26c5 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x564f1dca klist_add_after +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x568515c2 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x5692386f gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0x56a607f3 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x56b1211c ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x56b38e0f ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x56b63670 lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x56c63e4f sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x56c7f359 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56fa2a8a kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x5702fc60 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x57584d72 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5796efaa tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57b0f0b1 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x57b215ff power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x57d717a6 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x57ebbd8d __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x58076fe0 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x58309104 ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x584d3d45 arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0x58664ac8 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x588be8a6 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x5892f832 release_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58b238ae tpm_read +EXPORT_SYMBOL_GPL vmlinux 0x58b6f3f1 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x58c9fe73 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x58df5392 extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x58eea0d5 devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0x58f663a2 kvm_vcpu_cache +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x5947abbe max77693_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x5984f170 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0x599bf215 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x59a6e91d clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x59ef1680 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x5a35cbaa dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x5a3b8ce0 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x5a44c6fb crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x5a5d98dc set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x5a735987 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a8f3b69 of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0x5aad3248 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x5b0d97e2 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x5b1e5172 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x5b4e379c of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0x5b9d57a8 kvmppc_handle_store +EXPORT_SYMBOL_GPL vmlinux 0x5bbc4d50 pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x5be38c44 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x5be3a75a gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x5be88bbc blkio_subsys +EXPORT_SYMBOL_GPL vmlinux 0x5c222ff5 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x5c4ef532 rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x5c76554d usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x5ca4b61e regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cb89d8f regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cbcfd3f __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x5ce30b48 ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d2b7228 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x5d3a174f pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x5d41c367 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x5d528892 rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0x5d708ce6 irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x5d7f9378 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x5d8e872c debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x5da6db74 device_schedule_callback_owner +EXPORT_SYMBOL_GPL vmlinux 0x5dbe91cd devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0x5dff1869 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x5e140dbb adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x5e4b2a35 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e7445f4 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x5eb32a9e devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x5eb45cf8 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x5ebd2704 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x5ed1b9c9 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x5f03c761 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x5f248f72 set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0x5f3f4aba __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x5f419491 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x5f5c22c3 clk_register +EXPORT_SYMBOL_GPL vmlinux 0x5f6755c3 ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0x5f8f0b88 sync_filesystem +EXPORT_SYMBOL_GPL vmlinux 0x602b9789 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x608aa6d8 regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x6094685f wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL_GPL vmlinux 0x615fd917 dev_get_gen_pool +EXPORT_SYMBOL_GPL vmlinux 0x61747341 proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0x619da8ff rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x619feca9 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x61a4c38c rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0x61a64e8a max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x61a90c54 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x61cfb3ca cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x62015831 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x62299077 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x624a6406 hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x62602847 platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x62657277 dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0x62750cd1 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x629dfb0f single_release_net +EXPORT_SYMBOL_GPL vmlinux 0x62cb6c09 devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x62e10c05 rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x62ff3718 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL vmlinux 0x63205de1 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x6334d153 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x63577cee gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x637741e7 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x6390efda of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0x63a1304f kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x63b4874c ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x63b5a44b input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x63b5c32a xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x63c35e68 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x63d9cf9b generic_access_phys +EXPORT_SYMBOL_GPL vmlinux 0x63db5f55 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x64032989 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x64256424 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0x64263a58 __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0x6428da4f rh_attach_region +EXPORT_SYMBOL_GPL vmlinux 0x6450940b wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x64530c6b extcon_find_cable_index +EXPORT_SYMBOL_GPL vmlinux 0x64556525 cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x645c218f ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x647974f8 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x648e9366 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x64a9e63a irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0x64b19335 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0x64c66a18 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x64c6aefc bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x64d965c2 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x6516aa34 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x652fcd04 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x653010fa regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x654ed27d ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x658bd708 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x65a27add platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x65a86b7d blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x65bfae03 ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65f23885 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x65ff18dd transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x66298a39 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x662a0c3f x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x6631a12c ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0x665ffce4 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x66689e9b replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x666de894 of_pci_msi_chip_add +EXPORT_SYMBOL_GPL vmlinux 0x6679dcc7 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x6695e4a8 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL vmlinux 0x66afb53b unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x66b32cd5 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x66b391fa ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x66d56e57 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66e745c5 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x671c5a66 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x6745ffb6 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x67587734 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x67643d26 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67e0a37d devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x67f1c8ec blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x6812cf8d __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x6829779f da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x682e143d nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0x685ba414 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0x687934e9 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x68956406 static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x6898d0e1 usb_string +EXPORT_SYMBOL_GPL vmlinux 0x68c8048e queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x68ccaaad __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x68d1588e devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x68fc3686 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x69186dec posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x691be46f pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x691e72f6 cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x693cd8e4 pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x6945725e mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0x697a420c timerqueue_del +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 0x69dc9f26 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x69e7e3ca rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x69e9a2cb ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x69f11002 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x6a31f35d unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x6a332c4a platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x6a35bb7a usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x6a3ad1e0 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x6a4fc405 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a99bd05 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x6a9f65bc attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0x6aefd8ed regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b48a910 switch_booke_debug_regs +EXPORT_SYMBOL_GPL vmlinux 0x6b614587 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x6b7f0aa6 kvm_clear_guest +EXPORT_SYMBOL_GPL vmlinux 0x6b86cc82 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x6b9e7ad7 of_clk_src_simple_get +EXPORT_SYMBOL_GPL vmlinux 0x6bbc4012 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x6be2f4b5 balloon_mapping_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6bf708aa sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x6c051bdc ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x6c0c41f2 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x6c1b09ab gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x6c3e12c4 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x6c49c4f2 clockevents_notify +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c655d07 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x6c749afe __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x6c773413 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x6c93aeaa __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x6c96f443 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6cbf132a ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6ccb0486 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6cd4ea62 wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x6ce6b0ab rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6d253210 kvm_read_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x6d26779c regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x6d2d2cf7 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d31e93b tracepoint_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x6d95bd7e ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x6d9e5425 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x6da9e1c9 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x6dd5f5b3 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x6ded611d rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0x6df86be9 fb_sys_read +EXPORT_SYMBOL_GPL vmlinux 0x6e00b8fd serial8250_tx_dma +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e62f157 input_class +EXPORT_SYMBOL_GPL vmlinux 0x6e81fa8c da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x6e85bcc0 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e8bec33 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x6e9441b8 wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x6ed081e8 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x6ee74307 max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f576c7e pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x6f5c3f1e usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x6f8b7880 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x6f981efd dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6f9ac31d kvm_put_kvm +EXPORT_SYMBOL_GPL vmlinux 0x6fad1160 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x6fafa6bf usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x6ffea073 tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x7006d72d dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x700fc74d blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x70612875 cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x70627942 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x7079ca63 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0x707ba944 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x707edca0 tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x7094b7ee ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x70b5a87a disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x70bb651d __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x70c60289 sec_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x70c77c89 devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70dda012 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x70de6385 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x7104c3b9 PageHuge +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x710f735b ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0x7133fed9 rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x714b85e8 pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x714f9795 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x715a97d2 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x715be383 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x71621fe0 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x71930ed3 of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x71b54d1a watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x71b8d377 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x7203937a devres_add +EXPORT_SYMBOL_GPL vmlinux 0x7229b27b blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x7232c842 ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0x723374f8 pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x726188e3 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0x7267db00 hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x727d9bd7 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x727de033 pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x729321bb debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x729571ed tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x72afdb99 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x72b40e88 cgroup_taskset_first +EXPORT_SYMBOL_GPL vmlinux 0x72b85920 pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x72d77308 regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0x72eceab6 cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0x73510609 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x736fa4ce bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x73a2d21e tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73c0dcb8 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73e0116e kvmppc_hv_ops +EXPORT_SYMBOL_GPL vmlinux 0x740cd9f0 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x7422c95e gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x744e6538 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x746b1d2a usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x74789441 rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0x74899216 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x748cbf71 vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x74954462 timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0x74adf161 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74d114c5 arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x74ef0b68 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x75382700 od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x75658b71 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x75c2b9f1 memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x75c8a11c inet_twdr_twkill_work +EXPORT_SYMBOL_GPL vmlinux 0x75d356d8 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0x75dcc318 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x75f2a044 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x761d193f ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x764ce728 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7697f23f __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x76d07d6e gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x76ebc963 hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x76ff9bb6 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x770cf981 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x771a9f46 alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x77214cea sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0x7727a961 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x77659821 nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0x776fac8d platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x7795da33 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0x77a1813d devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x77a70867 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x77e67ec2 gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x787b17f2 usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x7891c12f device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x790c6b5e led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x79140b7a regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x7951d34a sysfs_put +EXPORT_SYMBOL_GPL vmlinux 0x79655866 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x7973e3d7 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x7977445c ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x797dddd5 cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x7992827d blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x79bcee46 devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x79c480da rh_dump +EXPORT_SYMBOL_GPL vmlinux 0x79c51b63 extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x79d3d65c usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x79e175e7 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x7a09d7d8 palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0x7a1b6a94 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x7a510614 rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL vmlinux 0x7aa753b4 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x7ab3ca18 eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x7ab71223 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x7adb1dd8 user_update +EXPORT_SYMBOL_GPL vmlinux 0x7adb4728 cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x7ae1ae8e cpufreq_frequency_table_put_attr +EXPORT_SYMBOL_GPL vmlinux 0x7aee6543 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b48a2db cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x7b48c9c9 pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0x7b51ff53 of_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x7b7fd1e2 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x7b88bc46 regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0x7bc143bb devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x7bd5875d unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x7bf5a41b crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x7c227088 clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0x7c346357 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x7cb34973 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7cc1b7fd max77693_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x7cc7de1c x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7cd999a9 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x7ce5b92a gpiod_sysfs_set_active_low +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7cf61e63 regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0x7d099dd7 kvm_resched +EXPORT_SYMBOL_GPL vmlinux 0x7d21bd06 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x7d310f92 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x7d3646e1 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x7d36e534 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x7d397cc7 gpiod_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d572500 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d7a81b4 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x7d7c76b5 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x7d827195 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dc2bbbe inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x7dd12fac register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x7dfb9c08 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x7e17ba7b klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x7e18877e init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x7e3fd610 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x7e4d9091 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x7e4eef82 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x7e5ec9f0 sec_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e825da7 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x7e94b9b5 ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0x7e954c64 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x7ec01103 fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7ed3fe5f ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x7f008202 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7f3315ab regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x7f7bc710 klist_next +EXPORT_SYMBOL_GPL vmlinux 0x7fa4b4a2 of_pci_parse_bus_range +EXPORT_SYMBOL_GPL vmlinux 0x7fc672f8 srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x7fd0a9c8 rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x7fea112a mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x7ff5c1d4 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x7ff62ff6 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x800543fa file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x804e529a bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x804f631f cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x80525e73 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x80671309 cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80947074 __scsi_get_command +EXPORT_SYMBOL_GPL vmlinux 0x80a0fb84 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x80a518e6 pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80de9f66 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x810c9d9f rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0x810fdc3f dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x81234c31 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8128ebee wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x813cbd44 gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x8140842a gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x814723f4 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x8152672f inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x817d193d pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x818a7783 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x81906911 kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0x81d13c12 fuse_conn_kill +EXPORT_SYMBOL_GPL vmlinux 0x81f45c82 of_usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0x82064479 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x82091262 user_read +EXPORT_SYMBOL_GPL vmlinux 0x8216e9f5 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x82255a3a regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x826eff25 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x8271c53e blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x82822d9d regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x82939ebd rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x82d560c3 mark_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82f262e0 sysfs_get_dirent_ns +EXPORT_SYMBOL_GPL vmlinux 0x830434a0 rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0x8318eb66 clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8334df74 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x834616bb sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8351f67d inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x835b994b dm_kill_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0x836d61d0 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x83a5ae2e __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x83a77d3b __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x83d21ddb fb_sys_write +EXPORT_SYMBOL_GPL vmlinux 0x841da239 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x8420bccd cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0x843309be da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x844d12f4 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x845fec08 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x84723058 agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x847adf1c ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x8482d24c sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x84838729 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x84b43c95 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0x84c629b3 irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x84e7bece usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x84fb28e2 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x852e568d of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x854d0aae usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x8559a982 dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x856629e7 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x8574ca6c gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x85a645aa setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x85b14d33 clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x85c10896 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0x85c22e24 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85cf1695 kobj_completion_del_and_wait +EXPORT_SYMBOL_GPL vmlinux 0x860e0f13 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x86210b67 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x863399b0 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x863511ff srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x865081d9 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x866b9687 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x8694482c list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0x869882b8 pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x86d034a3 pci_configure_slot +EXPORT_SYMBOL_GPL vmlinux 0x86dba191 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x86e507d8 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x8758f458 regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x877ab25d ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x877ad796 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x877d5454 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x878a46d9 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x87984b16 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x87bb4e32 of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x87debd54 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x87f185e6 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x8804af3d usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x8808c53c dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x8813601e devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x88229856 kvm_vcpu_block +EXPORT_SYMBOL_GPL vmlinux 0x882403d3 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x8846afd0 driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x885654fa do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x888bfb0d sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x888fda66 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x88a3601d dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88e3b068 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x8900b13c ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x8944b2a8 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x895950e7 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x8965ff94 ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0x897bf7ba bdi_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x89abec21 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89c53d19 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x89f207cb cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0x8a04b9fe tracepoint_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0x8a091b23 pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x8a26a7b9 sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0x8a2b14ba wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0x8a32e940 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x8a37984a of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0x8a6a736c tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x8a7846bb regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x8a7863b8 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x8a7c09a2 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x8a921993 __netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x8a98fd68 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0x8aa1baa8 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x8aa78136 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8adb8435 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x8ae152b5 of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x8afbac60 agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0x8b07455d rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x8b15f94b thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8b215372 gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x8b242c96 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x8b70e8ea __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x8b73a9a3 pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0x8b8215eb ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c08727c crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x8c08a292 fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0x8c2026bd pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x8c229140 rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x8c249fc5 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x8c2f443c thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x8c3a59aa sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x8cb333ee perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x8cc92d5a sysfs_get +EXPORT_SYMBOL_GPL vmlinux 0x8cd1d2d8 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x8cded271 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x8d2e75ec thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8d358058 regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x8d4b3305 rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x8d735c91 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x8d77cb9f pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x8d8d2a7e ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x8d9de582 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x8da01274 kvm_get_pfn +EXPORT_SYMBOL_GPL vmlinux 0x8dbecd75 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x8dde1089 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x8ded4040 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x8dfd5821 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x8e0ba166 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x8e0be66c ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x8e107353 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x8e1cd06f kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL vmlinux 0x8e3168fb usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x8e4fe8b3 of_irq_parse_and_map_pci +EXPORT_SYMBOL_GPL vmlinux 0x8e526aff crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x8e626bb5 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x8e6ffd0d sk_unattached_filter_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8e864edd cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x8e9c7933 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x8ea2f2b2 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x8edaa51c inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x8eff5118 kick_process +EXPORT_SYMBOL_GPL vmlinux 0x8effebd3 pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x8f14e43e register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x8f676719 d_materialise_unique +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f842e74 iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0x8f8e53b9 idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8f902a2c gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0x8fa405e0 kvm_write_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x8fbbd781 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x8fd0b5f5 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x8fe94fbd css_next_descendant_pre +EXPORT_SYMBOL_GPL vmlinux 0x8feef5a7 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0x901d6784 of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x90228869 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x902f8917 tty_prepare_flip_string_flags +EXPORT_SYMBOL_GPL vmlinux 0x904b0fce list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0x9053e00b fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x905d8049 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x90705b7f syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9077d5ea usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x908a2b66 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90aa84eb usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x90bd38ce __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x90e61796 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x9102e5e7 __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0x91043254 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x911231c2 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x91286982 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x9178dd92 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91e4f697 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0x920e0644 ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x921f3957 rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x923dc824 tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x9271b8ad rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x929c1999 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x92a71637 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x92b40440 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x92b521ae unregister_pernet_subsys +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 0x92e97792 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x92f586a2 of_get_named_gen_pool +EXPORT_SYMBOL_GPL vmlinux 0x930ed9b9 of_usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0x93510a2a usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x9353d811 tpm_dev_vendor_release +EXPORT_SYMBOL_GPL vmlinux 0x93643197 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x9364e810 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x9367d91a disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x93748986 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x938edc67 rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x93a142d2 device_attach +EXPORT_SYMBOL_GPL vmlinux 0x93a2cb47 reserve_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x93b098ec cpu_remove_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x93be5c33 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x93e5e1fd bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x93eb5334 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x94276f46 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x9430f35e usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0x943a14d8 __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x9473bb7f usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x948c60cf fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x94972424 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x94a68723 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x94abb745 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0x94b1ed0c dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x94c22eb1 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x94c97ec8 rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x94ffc175 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x950c3080 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x958cf35a fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x95b2302d __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x960c5e6a pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x960f15fa unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x961561cb kvmppc_kvm_pv +EXPORT_SYMBOL_GPL vmlinux 0x96213140 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x962b9eb8 devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0x964cb1dc rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9655b911 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x96ec9642 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x9718a156 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0x9730c462 gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x973c4b38 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x9745c52a of_fixed_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0x975b0dbb pwm_free +EXPORT_SYMBOL_GPL vmlinux 0x977b66d9 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0x9799bc48 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x97a3ec56 ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x97c843d4 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x97c997f8 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97e85b36 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x982cd486 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x982f8e80 da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x983c7494 rh_detach_region +EXPORT_SYMBOL_GPL vmlinux 0x984d8b83 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x984e0f40 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x985eb437 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x989d87c3 __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x98db78da ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x99254465 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x995d37e2 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x996b9c3e rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0x997fc293 use_mm +EXPORT_SYMBOL_GPL vmlinux 0x998687e1 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x998db07f regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x998e3b25 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x998e5453 tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x999bba76 tpm_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x99a17216 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0x99cc141e srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x99e4ade0 call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a2d8e13 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x9a3a6510 css_next_child +EXPORT_SYMBOL_GPL vmlinux 0x9a49d937 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a8fb3e6 of_extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x9aad6540 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9ab283d6 rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x9aca444b get_monotonic_boottime +EXPORT_SYMBOL_GPL vmlinux 0x9acc5876 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0x9ad0c5fc dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0x9ae90649 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9af35585 device_rename +EXPORT_SYMBOL_GPL vmlinux 0x9b024eb2 i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x9b1590d2 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x9b2e35ff platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x9b35079a ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x9b611b5b __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0x9bb2ebb9 sysfs_notify_dirent +EXPORT_SYMBOL_GPL vmlinux 0x9bcd14b2 rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0x9bdbdf5c scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x9be421f2 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9c07fbeb scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x9ca59e31 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x9cc6654f adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x9ccde6ea lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x9cf2ee59 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x9cf94bcf ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x9d030b99 stop_machine +EXPORT_SYMBOL_GPL vmlinux 0x9d138533 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x9d8002dd debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x9d8331c0 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9da521c2 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x9dae2eb1 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x9dbf8a87 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x9dcc85b2 pcibios_finish_adding_to_bus +EXPORT_SYMBOL_GPL vmlinux 0x9dd6a5d3 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x9deb4313 get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0x9df40e38 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9e1c70d4 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x9e60efa7 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x9e66191f register_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0x9e7c4484 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x9e7e694e ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x9e9aa3c7 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x9ea4cd08 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ef8352f ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x9f0664bf dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0x9f07cbde fsl_rio_mcheck_exception +EXPORT_SYMBOL_GPL vmlinux 0x9f0e39ba add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x9f1047fb usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x9f1e5b85 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9f352507 cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9f35d4ed ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x9f36baf0 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0x9f3f98e1 of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x9f859933 init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x9fac55cf dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9fedb268 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0xa00df64b ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xa01742f5 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa0208e02 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xa021c183 kvm_flush_remote_tlbs +EXPORT_SYMBOL_GPL vmlinux 0xa0524433 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xa0638875 tpm_show_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xa09ab909 regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0xa0a27fff pci_address_to_pio +EXPORT_SYMBOL_GPL vmlinux 0xa0a7a4bd pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0xa0bcbef6 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xa0bd9752 ping_bind +EXPORT_SYMBOL_GPL vmlinux 0xa0c18de3 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xa0f1fd69 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0xa118bf26 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xa12d929d desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0xa145f1fa sk_unattached_filter_create +EXPORT_SYMBOL_GPL vmlinux 0xa19cacba ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0xa1a0e693 rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0xa1aaa0b2 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0xa1ad65af __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0xa1baf0be tpm_show_temp_deactivated +EXPORT_SYMBOL_GPL vmlinux 0xa1bd7822 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xa1c29422 kvm_get_dirty_log +EXPORT_SYMBOL_GPL vmlinux 0xa236efe2 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0xa2681f23 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa28aaf29 rh_create +EXPORT_SYMBOL_GPL vmlinux 0xa28b9c43 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0xa2983ef3 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0xa29fbbdb cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0xa2ba42dc rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xa2c5f11c transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xa2d495eb devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0xa2d65215 ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa357d56e ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa39a84e0 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3a2d9af walk_system_ram_range +EXPORT_SYMBOL_GPL vmlinux 0xa3ad8d30 stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0xa3b4a687 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3ba310c tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa3e81a58 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0xa3f3dde4 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xa446632f sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0xa4671970 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa486b3c3 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xa48964af inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xa4bc3e3f fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0xa4c23e6f usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0xa4d2db74 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xa4ea04ee of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0xa4f88526 cgroup_load_subsys +EXPORT_SYMBOL_GPL vmlinux 0xa4f9228f ping_hash +EXPORT_SYMBOL_GPL vmlinux 0xa512ca45 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa515ff1a driver_register +EXPORT_SYMBOL_GPL vmlinux 0xa562f888 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0xa5966175 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0xa5a0990b crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xa5b00257 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0xa5b00659 ppc_proc_freq +EXPORT_SYMBOL_GPL vmlinux 0xa5be945c crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0xa5ed0420 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5efe460 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xa61b1477 tracepoint_iter_start +EXPORT_SYMBOL_GPL vmlinux 0xa6232065 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa6a0a273 max77693_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6ea86e0 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xa6f6893c vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0xa70e7f10 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0xa711739a tpm_open +EXPORT_SYMBOL_GPL vmlinux 0xa723e8c3 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0xa724257f init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0xa725e9a2 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa75811d0 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0xa77a592b ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0xa7b3ccc4 regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xa7cb5677 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xa7dd082e usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xa7df6bc9 pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0xa7f7e994 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0xa7f92105 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0xa8199b25 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0xa82ba8a4 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa87f40d7 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xa8833093 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0xa8b1a1c9 clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0xa8c17a76 of_reset_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xa8fdd8a4 tpm_remove_hardware +EXPORT_SYMBOL_GPL vmlinux 0xa90e17f6 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xa9566af9 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xa9790478 kobj_completion_release +EXPORT_SYMBOL_GPL vmlinux 0xa980af16 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xa9a97a7b rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0xa9aef2e1 gfn_to_hva_memslot +EXPORT_SYMBOL_GPL vmlinux 0xa9c4a558 key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xaa17a2e2 rh_alloc_align +EXPORT_SYMBOL_GPL vmlinux 0xaa1b6d9f n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0xaa1ec6ff put_pid +EXPORT_SYMBOL_GPL vmlinux 0xaa2a72bf __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0xaa4d0ba2 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0xaa5d3a21 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0xaa61f777 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaaab296e crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0xaad23957 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0xaaefe233 uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0xaaf0c4f7 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0xaaf8293e wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xaafbbad3 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xab07e49d ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0xab23814d __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0xab39113a sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0xab59d373 kvmppc_free_lpid +EXPORT_SYMBOL_GPL vmlinux 0xab5ac37f pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xab5dbdbf crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab70ff48 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0xab87b8b4 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0xab9429dd fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0xaba50961 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xabfd05a8 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0xac59dcc0 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0xac700301 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0xac85c064 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0xacc988ee tpm_show_pubek +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xace8c93d kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xad165f06 blk_queue_bio +EXPORT_SYMBOL_GPL vmlinux 0xad376749 clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0xad60558c __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xad6a41ea regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xad90e77e __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xada25677 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadd63452 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0xadee250a usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xadf2eb60 bio_trim +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae1077c3 sdhci_pci_o2_probe +EXPORT_SYMBOL_GPL vmlinux 0xae20fdd1 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0xae2554c4 of_clk_src_onecell_get +EXPORT_SYMBOL_GPL vmlinux 0xae2a6958 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0xae4b4df9 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xae664f09 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae8dd8ab ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xae9617df wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0xaeae81a1 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0xaebb11bd usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0xaf003b7b scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0xaf1a9d8b pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0xaf1f1ee9 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0xaf24c03e hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0xaf305cf2 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xaf3c3071 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0xaf42da6d pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0xaf8e7298 uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xaf8ea8e2 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0xaf979582 ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xafaca9b8 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0xafb84803 dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0xb0150960 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0xb018f7e3 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0xb06c585d ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0xb07f6483 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb0913148 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0baea57 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xb0c460ba tpm_release +EXPORT_SYMBOL_GPL vmlinux 0xb0e5f69d dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0xb107624c inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xb10d55bc cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xb1195171 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xb1200024 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xb13ffbed irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb150518e blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0xb19c27ff ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0xb1a0dd61 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xb1a7e3f6 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1b8bb25 usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0xb1b91ca8 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0xb1c0c1c2 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xb1c68048 sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1ff6aab rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xb20a29f8 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb2256567 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xb245cbed __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xb258cbcc ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb293c758 list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xb2bc5417 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb2bc68ed __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xb2c5621c pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0xb2e61a50 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0xb2ed8c15 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0xb2f29a8e blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0xb300c0ce fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0xb341c80a __clocksource_updatefreq_scale +EXPORT_SYMBOL_GPL vmlinux 0xb36b444e devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xb383c4e3 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xb38ba992 devres_find +EXPORT_SYMBOL_GPL vmlinux 0xb3a159ce skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0xb3a728cc ata_sas_port_async_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb3b91fd9 preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xb3e5500c gpio_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xb3f4c585 kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL vmlinux 0xb3f81e56 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0xb419d02e preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb45c68af task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0xb4602b31 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0xb47c13c5 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0xb48a88d6 stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0xb4956416 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0xb49f6dc6 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0xb4ac26b0 of_scan_bus +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4d53d7d __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xb4de409d invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb54b7ff8 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0xb55546f9 __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xb55a4062 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb57a6d2f ata_sas_port_stop +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 0xb5b01b85 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0xb5b9ff18 devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xb5bf0979 _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0xb5c8edf4 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0xb5cb8145 hrtimer_get_res +EXPORT_SYMBOL_GPL vmlinux 0xb5d2dfef fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0xb5d3a65a tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0xb5de2a55 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0xb5e896fb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb5f8cd15 pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0xb60b5707 of_i8042_aux_irq +EXPORT_SYMBOL_GPL vmlinux 0xb6247cfb pci_pri_enabled +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb6349935 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0xb67b2219 cm_suspend_again +EXPORT_SYMBOL_GPL vmlinux 0xb67c64fd __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0xb68378b2 serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0xb6ac3c3b rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6c4d83f usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xb6c635af wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xb720c49b security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0xb74468e2 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0xb74d67d5 skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xb76aa47f get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0xb7818152 cgroup_is_descendant +EXPORT_SYMBOL_GPL vmlinux 0xb786e77d percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb7879dd9 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0xb79fb656 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xb7aef054 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xb7d4a9a3 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0xb7dd8555 alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0xb7e1562c tpm_show_durations +EXPORT_SYMBOL_GPL vmlinux 0xb7efaaee gfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0xb7f65330 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0xb809b9ee md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xb809cd9b usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0xb81f7f86 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0xb86b8dc8 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0xb873062e __kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0xb882714a usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0xb8b593fc tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xb8d9d6c1 sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xb8dd6379 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0xb8fd88ee regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0xb8ff6f6f tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb9176155 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0xb94df4b6 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0xb975891c md_stop +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9c3a0be ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9ca5d89 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9da2997 snmp_fold_field64 +EXPORT_SYMBOL_GPL vmlinux 0xb9dcdf45 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0xb9f006dc cpufreq_notify_transition +EXPORT_SYMBOL_GPL vmlinux 0xba0f8d40 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0xba27a3fc da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xba308a80 rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xba47d706 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0xba9d01f3 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0xba9fff09 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0xbadc56d7 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0xbaeb88e9 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0xbaf826a1 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb27377a bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0xbb4fec45 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0xbb5fb2ec pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0xbb6d754c fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0xbb885753 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0xbbae4935 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xbbb3bfbe pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0xbc0dcd59 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0xbc139cbe devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0xbc1483c1 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0xbc4081d1 kvmppc_pr_ops +EXPORT_SYMBOL_GPL vmlinux 0xbc423e91 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcb07b65 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0xbce84f33 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0xbd11cefe pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xbd4665ce bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0xbd4d1900 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd7d3be6 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0xbd834d31 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0xbd9a120a crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0xbdbf505d cgroup_unload_subsys +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe1e890e rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0xbe2f74c6 devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xbe3d5b04 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0xbe46ab8c rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xbe49b777 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0xbe4ef2d4 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0xbe99b456 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbeb61742 save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0xbebaa0a6 of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xbec288d3 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf0c1d2a extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xbf1cc04b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xbf3423b8 ftrace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0xbf38c99e debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0xbf5e11a8 ping_close +EXPORT_SYMBOL_GPL vmlinux 0xbf68ea20 tpm_show_active +EXPORT_SYMBOL_GPL vmlinux 0xbf6b471b regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xbf94d929 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xbfd81f9c device_store_int +EXPORT_SYMBOL_GPL vmlinux 0xc00131cf visitor64 +EXPORT_SYMBOL_GPL vmlinux 0xc00954d5 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0xc02bec3c usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc02f298a pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0xc047c271 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0xc04c8bf2 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0xc061367e mpic_msgr_get +EXPORT_SYMBOL_GPL vmlinux 0xc065a455 cpu_core_index_of_thread +EXPORT_SYMBOL_GPL vmlinux 0xc06c897a proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0xc07f80d6 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0xc0825608 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0bf6ead timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xc0d01bc0 percpu_ref_cancel_init +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0e75cec visitor128 +EXPORT_SYMBOL_GPL vmlinux 0xc0e92fd8 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc0ee3810 cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0xc10138d5 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0xc11b45c6 gpiod_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xc11bd00f tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc18578ed process_srcu +EXPORT_SYMBOL_GPL vmlinux 0xc190ce0c ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xc194f60e regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0xc1add16f crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xc1ca914b call_srcu +EXPORT_SYMBOL_GPL vmlinux 0xc1cd9275 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0xc1e07240 tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0xc208b03d tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc261e06d sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc281cb72 devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xc2bdf1a5 usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0xc2c25342 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc2c68ee9 tpm_show_pcrs +EXPORT_SYMBOL_GPL vmlinux 0xc2d08f19 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0xc2e9eb69 thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0xc2fe1cdb clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0xc30ff915 crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0xc3263da2 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0xc32718df devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xc3328ffe serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc34efe27 snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0xc35e021b blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc376965f wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0xc38655fe pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0xc39566fe exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0xc3beb4a1 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0xc3d7b624 usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0xc407a1d4 gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0xc4190d79 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0xc422c73e inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xc423c6b6 ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc439921e ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xc448c647 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xc449c446 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0xc44ccca1 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc45c96bc da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc46d877e schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc47ae190 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc4b2b7e7 pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0xc4c863c8 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0xc4f9bdea kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc5c8f987 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0xc5d37180 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0xc60100ea unregister_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0xc606cd3c boot_cpuid +EXPORT_SYMBOL_GPL vmlinux 0xc60b020a usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xc60f75ec __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc63a1109 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xc657e875 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc68aa090 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0xc68aa252 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc690866c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc70e4b59 kvmppc_claim_lpid +EXPORT_SYMBOL_GPL vmlinux 0xc72accd9 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc755b3bc task_current_syscall +EXPORT_SYMBOL_GPL vmlinux 0xc7738322 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0xc783df86 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0xc798f777 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7a2be98 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0xc7a70b4f usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xc7ac6b4d da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0xc7b1db8e verify_signature +EXPORT_SYMBOL_GPL vmlinux 0xc7b84923 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7da17be timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc8289735 __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xc87d1e57 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc88f7f59 irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0xc8a0f74d scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc9163e8a percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0xc9182c47 extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc97d1140 cpufreq_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0xc97e9bff register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0xc985ed5c usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0xc9cf18fc dev_hard_start_xmit +EXPORT_SYMBOL_GPL vmlinux 0xc9cfa97f of_pci_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xc9f3a300 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0xc9f45c25 __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xca17311a ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0xca25bc02 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0xca28faad kvm_is_visible_gfn +EXPORT_SYMBOL_GPL vmlinux 0xca2f2041 sec_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xca4c8f08 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0xca668d90 class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xca73fcdc sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca85d8cf tracepoint_probe_update_all +EXPORT_SYMBOL_GPL vmlinux 0xca877f2d regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xca903cca attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0xca946187 of_clk_add_provider +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcac318d7 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0xcadb4674 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0xcaea5e8a led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb46fde0 devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0xcb84bd00 sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0xcb9b162e clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcc08301c put_device +EXPORT_SYMBOL_GPL vmlinux 0xcc08f548 irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xcc1f1c3d inet_twdr_hangman +EXPORT_SYMBOL_GPL vmlinux 0xcc241aa3 cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0xcc2adcd6 da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xcc43fa58 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0xcc44961f kvmppc_alloc_lpid +EXPORT_SYMBOL_GPL vmlinux 0xcc830956 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcc8c4990 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xcc95e98b tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0xcc9cc8f2 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xccc719f0 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xcce60e13 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xcd102edc bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0xcd20fa90 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xcd25fdb1 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xcd3221bc crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0xcd3af258 device_add +EXPORT_SYMBOL_GPL vmlinux 0xcd4107f9 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0xcd5b0fde wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xcd8241df ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcdb01877 ktime_add_ns +EXPORT_SYMBOL_GPL vmlinux 0xcdc4296f debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0xcdc742be sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcde9e898 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0xce0b9b59 max77693_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xce1bb5a6 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0xce338222 tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0xce41f4ed seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0xce46e140 ktime_get_ts +EXPORT_SYMBOL_GPL vmlinux 0xce6678ac uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce726657 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0xce96bee7 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0xce9ed043 nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0xcea184ee shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcef74f69 kvm_irq_has_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcf015ed1 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0xcf05be64 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0xcf0b76eb find_linux_pte_or_hugepte +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf9e99cc blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0xcfb073af ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfd9a317 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0xcfe76c6d smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xcff065de get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0xcffd8e2b dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0xd03b07ae reset_controller_register +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 0xd06c64a8 transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xd06e670a rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0xd0931ddd crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xd0983eed yield_to +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0e2d8f7 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0xd0ecb556 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xd0ece090 irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0xd100ebb9 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0xd11eaeef ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xd14bc4d9 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xd15a30ef sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd1af9066 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0xd1b2db37 tracepoint_probe_register_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xd1baeb51 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd1bed25f smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xd1db8d0d regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0xd1e0f120 serial8250_rx_dma +EXPORT_SYMBOL_GPL vmlinux 0xd2089df7 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd216b4af rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd258217d clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0xd265fc6a list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd27ca547 rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0xd29ae074 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0xd2aaeb4e kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0xd2bacace device_del +EXPORT_SYMBOL_GPL vmlinux 0xd2c45ea4 of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0xd32fe193 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xd34d37f1 kvm_get_kvm +EXPORT_SYMBOL_GPL vmlinux 0xd37f8d89 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd3835996 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0xd3864187 mdio_mux_init +EXPORT_SYMBOL_GPL vmlinux 0xd3ce4cc0 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xd3cf6620 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xd3de36f7 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4127ff5 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0xd41b57a9 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0xd43a1f8b get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd47fc521 balloon_devinfo_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd48d490f xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0xd4988382 i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0xd49cbda3 get_device +EXPORT_SYMBOL_GPL vmlinux 0xd4bcccfa usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xd4bdf7ac watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4cad45e clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0xd4e6a247 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0xd513ddbf timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xd51e095f devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xd521cfe0 da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xd52637f1 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xd53e7561 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xd54337db wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xd54df8e8 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0xd577e559 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0xd57e7e83 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0xd582227a leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5d46ea5 __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0xd5da1a49 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0xd5fa77da nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xd5fc2c20 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0xd63c3836 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd6a26de8 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0xd6c2e04b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0xd6e347fd digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd769385d ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0xd76b52bd flush_fp_to_thread +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd7852724 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0xd7a77e96 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xd7ec2ce2 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd82cb0bf spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0xd83e4305 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0xd845f1f2 __put_net +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87ee693 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd9065e32 irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0xd9110166 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xd9227d56 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0xd92ab97e regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0xd935697c extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xd941eceb ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd944d8f9 ktime_get_boottime +EXPORT_SYMBOL_GPL vmlinux 0xd96d8b69 fb_ddc_read +EXPORT_SYMBOL_GPL vmlinux 0xd97e7fe5 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0xd9a34035 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0xd9cc2942 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0xd9e332b6 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0xd9e5d95b usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda08d5dc __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0xda0a4d22 mpic_msgr_enable +EXPORT_SYMBOL_GPL vmlinux 0xda18ce11 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0xda44cb37 setup_charger_manager +EXPORT_SYMBOL_GPL vmlinux 0xda531dc0 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0xda74af64 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0xda8cb2e5 threads_core_mask +EXPORT_SYMBOL_GPL vmlinux 0xdac11bae of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xdad9ceb4 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb04cacc tracepoint_probe_unregister_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xdb1d4c10 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0xdb2a497f tcp_is_cwnd_limited +EXPORT_SYMBOL_GPL vmlinux 0xdb2e70a2 gfn_to_pfn_async +EXPORT_SYMBOL_GPL vmlinux 0xdb6dbf4b tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0xdb85366d pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdba4ad93 static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0xdba80fc1 of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0xdbcf1566 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc05efc3 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xdc1e15f1 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0xdc42754d crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0xdc6f5956 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0xdc7a2c4c swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc83a04a regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdcc569c1 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xdd0083f3 cpu_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd4c987e skb_gro_receive +EXPORT_SYMBOL_GPL vmlinux 0xdd55cc4a regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0xdd57545d inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0xdd729424 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xdde5e02d aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xdde79292 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xddfdb0c6 srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0xde0dc616 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xde21fe7a pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0xde2466ed __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0xde425ad7 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0xde475c30 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0xde4cf782 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0xde71b532 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xde844871 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xde932fe7 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0xde9e3691 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0xded852ae devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xdee20b8e uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf45fb57 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0xdf5e59fb user_match +EXPORT_SYMBOL_GPL vmlinux 0xdf5f76e4 pci_pri_status +EXPORT_SYMBOL_GPL vmlinux 0xdf75e321 class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xdfcfcbb7 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xdfe0b91f spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0xdfe5fc83 ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdfe81515 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xdfeead11 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe013c77c fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0xe0273a5d regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe036b3e9 mpic_msgr_put +EXPORT_SYMBOL_GPL vmlinux 0xe03a060a power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0xe083dcbe seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0xe0855b41 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe09339d9 kvmppc_handle_load +EXPORT_SYMBOL_GPL vmlinux 0xe0bb3b89 __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xe0c744de thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0xe0fea097 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0xe1551222 pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xe1653884 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0xe168c9e8 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe185a6d5 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0xe19eb1c4 percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe19eeeca regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1c32794 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0xe1e47f11 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xe1f3a644 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xe1f5e807 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xe1f98ea4 wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xe2195262 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0xe22c136e root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe28be75d crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xe2a65fb3 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe30fac88 ktime_get_monotonic_offset +EXPORT_SYMBOL_GPL vmlinux 0xe316b343 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xe3481e21 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0xe37719d2 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe3929bdc transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0xe3c63ee8 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xe3ca8544 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0xe3cee7c0 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xe4046d26 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0xe41a470d evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0xe47ac2a6 blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xe4b22d99 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xe4b46d69 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xe4c031f8 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xe4c4b28f gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xe4c86e94 tpm_write +EXPORT_SYMBOL_GPL vmlinux 0xe50092bf do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xe51f7a27 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0xe52ae762 __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0xe53daaa3 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0xe563fe8e clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0xe57bdc24 ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xe5831e46 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xe58553ad ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5abe8f1 __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xe5cd79f3 rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0xe5cd9e7f devres_remove +EXPORT_SYMBOL_GPL vmlinux 0xe5e1b651 __class_register +EXPORT_SYMBOL_GPL vmlinux 0xe5e7deec devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xe60ba80b disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0xe61f1d89 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0xe62f1fd2 tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe65af02d anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0xe6661545 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0xe6955200 usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xe6a3b048 cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xe6b60224 pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6f866cd pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0xe708f538 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xe7145917 usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0xe73b9d09 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xe74dc232 usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xe7645001 sdhci_pci_o2_resume +EXPORT_SYMBOL_GPL vmlinux 0xe767e18b blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe7a5eb0f sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xe7cb51f4 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe81715dc regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe81bda4a subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe81eece5 rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0xe85c55e7 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe8b819d7 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xe8d8aa16 pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0xe8ec25fe power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0xe91ef087 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0xe93b2823 of_pci_msi_chip_remove +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe946f081 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xe9671c8d ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0xe96e6dc1 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0xe9a1890a locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0xe9d2f118 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0xe9f0a237 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea173e4e dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xea1b8e2b mmc_send_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea5255a9 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0xea57754f elv_register +EXPORT_SYMBOL_GPL vmlinux 0xea875dad clockevents_unbind +EXPORT_SYMBOL_GPL vmlinux 0xeab37429 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0xeac7e149 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xeadd6b7a sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0xeaf8de0c spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xeb1c3628 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xeb3f2fad vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0xeb602c0d sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0xeb830aae fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0xeb8ae736 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xeb98215e cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xeb9abbee ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xebacd193 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xebc01bf3 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0xebc10859 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0xebc6e367 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xebcda98d blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0xebd3b1c6 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0xebde8c44 adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xebfac565 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec1c546f sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xec23b8fb rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec3048ec css_rightmost_descendant +EXPORT_SYMBOL_GPL vmlinux 0xec63d87a usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xec6ee12a regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0xec7a1ef4 pci_renumber_slot +EXPORT_SYMBOL_GPL vmlinux 0xec998583 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xec9e13a3 ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xed0db699 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0xed4f59fb crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0xed5fd569 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0xedbf3cbb of_get_dma_window +EXPORT_SYMBOL_GPL vmlinux 0xedc224c6 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xedc2994d ktime_get_real +EXPORT_SYMBOL_GPL vmlinux 0xedc6fab3 regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xedd49930 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0xede9f037 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0xee10a33b debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0xee23e755 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xee2ca285 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee6d133e debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0xef02a511 pwm_config +EXPORT_SYMBOL_GPL vmlinux 0xef155800 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xef22930b register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xef409b74 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0xef422dca alarm_init +EXPORT_SYMBOL_GPL vmlinux 0xef52310d hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef7f18d3 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0xefa7625d class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xefce0af4 subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0xf07e54c7 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf07eadab dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0xf08f9e53 perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0xf0ccfcf7 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0xf0e60c79 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0xf0f6ac15 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xf10c9d53 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0xf11cef34 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xf1437cea swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xf158f170 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0xf1598755 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf1a62b6f of_i8042_kbd_irq +EXPORT_SYMBOL_GPL vmlinux 0xf1b0ef7c find_vpid +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1d368ed rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0xf1d8e7e0 pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xf1f628f5 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xf209f756 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0xf20c0f51 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xf21892f4 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf228b1e8 blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf27c5094 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xf284174b adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xf299190d dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0xf2cd214b fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0xf2f077cc pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf3012f6c rh_free +EXPORT_SYMBOL_GPL vmlinux 0xf30fda27 lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0xf318b48c cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf31d2c76 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0xf3254eed srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf37064cc ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0xf38e1832 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3cd75f5 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xf3ddcb32 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0xf4281ed5 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0xf44bd400 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0xf450e866 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf4954775 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xf4960914 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4c1b770 kvm_read_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0xf4cd5dde raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0xf4da3546 kvmppc_init_lpid +EXPORT_SYMBOL_GPL vmlinux 0xf4e16d73 __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0xf4eabfb3 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xf4f2d5f7 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf4fdd151 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0xf5000966 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0xf532919f inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xf5491b56 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0xf5496c86 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf54e8cc4 cred_to_ucred +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf57b9e2f irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0xf593cbc2 kvm_clear_guest_page +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5bcf1b2 __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0xf5d12757 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xf5e7f053 rh_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf5fb0cd4 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0xf5fef4e3 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf64fdb43 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xf656b067 thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0xf6669db2 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xf694690a ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xf6b8dbd2 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xf6d4e5cf gfn_to_pfn_prot +EXPORT_SYMBOL_GPL vmlinux 0xf6dde6c6 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0xf6e2e353 regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf735ef22 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf7565415 dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0xf77139f3 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0xf7857106 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0xf78d36be platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0xf7a4cfb8 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0xf7b6fe40 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xf8037f72 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0xf816c866 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0xf82f16b3 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf83eb6cd dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0xf8409386 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf8952e68 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0xf8a1be58 regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0xf8d8e21e crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf914199e sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0xf9154bff inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf935a32c of_property_read_string_helper +EXPORT_SYMBOL_GPL vmlinux 0xf9365158 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0xf97a4a98 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0xf986f952 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9d4b3be unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xfa012fe7 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0xfa195a50 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0xfa1970a7 cpu_remove_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0xfa1b7be2 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa5d008c hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0xfa699746 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0xfab60503 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xfae41d09 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0xfb2b0490 thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xfb2b5ba2 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb3bfaec ablkcipher_walk_done +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 0xfb941e12 pskb_put +EXPORT_SYMBOL_GPL vmlinux 0xfba04e68 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xfbbedefd of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0xfbdf7282 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc6aca6c inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0xfc8cc9b7 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xfc901ff7 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xfca4eb3d ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xfcbcc5a2 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfcedb31b ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0xfcf81bf6 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0xfcf95c53 devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xfd2fab5f usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0xfd8c67a9 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0xfdb4e4d3 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0xfdbae7a9 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xfdd098f4 thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0xfdd6f425 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xfde4b227 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0xfe0701d8 public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0xfe5db1c7 sdhci_pci_o2_fujin2_pci_init +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfeda4e1c look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff2cdcf7 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0xff31f52c pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xff4383f1 wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff6200ec led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0xff788274 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0xff8862d7 rh_get_stats +EXPORT_SYMBOL_GPL vmlinux 0xffe3ad97 blkdev_aio_write +EXPORT_SYMBOL_GPL vmlinux 0xfff1e0b0 sk_set_memalloc --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/powerpc/powerpc-e500mc.compiler +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/powerpc/powerpc-e500mc.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4 --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/powerpc/powerpc-e500mc.modules +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/powerpc/powerpc-e500mc.modules @@ -0,0 +1,3674 @@ +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250_dw +8250_pci +8255 +8255_pci +8390 +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm860x-ts +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +9p +9pnet +9pnet_rdma +9pnet_virtio +BusLogic +DAC960 +a100u2w +a3d +a8293 +aacraid +aat2870-regulator +aat2870_bl +ab3100 +ab3100-otp +ac97_bus +acard-ahci +acecad +acenic +act200l-sir +act_csum +act_gact +act_ipt +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +actisys-sir +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 +ad5930 +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 +ad9850 +ad9852 +ad9910 +ad9951 +ad_sigma_delta +adcxx +addi_apci_035 +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-keys +adp5520_bl +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +ads1015 +ads7828 +ads7846 +ads7871 +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adv7170 +adv7175 +adv7180 +adv_pci1710 +adv_pci1723 +adv_pci1724 +adv_pci_dio +advansys +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +af-rxrpc +af9013 +af9033 +af_802154 +af_alg +af_key +af_packet_diag +affs +ah4 +ah6 +aha152x_cs +ahci +ahci_platform +aic79xx +aic7xxx +aic94xx +aiptek +aircable +airo +airo_cs +ak8975 +algif_hash +algif_skcipher +ali-ircc +alim7101_wdt +alphatrack +altera-ci +altera-stapl +altera_jtaguart +altera_ps2 +altera_uart +alx +ambassador +amc6821 +amd5536udc +amd8111e +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pci224 +amplc_pci230 +amplc_pci263 +ams369fg06 +analog +anatop-regulator +ansi_cprng +anubis +aoe +apbps2 +apds9300 +apds9802als +apds990x +appledisplay +appletalk +appletouch +applicom +ar5523 +ar7part +arc-rawmode +arc-rimi +arc4 +arc_emac +arc_ps2 +arc_uart +arcmsr +arcnet +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arp_tables +arpt_mangle +arptable_filter +as3711-regulator +as3711_bl +as3722-regulator +as5011 +asc7621 +asix +ast +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at86rf230 +at91_ether +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-pwm-bl +atmel-rng +atmel-ssc +atmel_cs +atmel_mxt_ts +atmel_pci +atmel_pwm +atmtcp +atp870u +atxp1 +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo-pixcir-ts +auo_k1900fb +auo_k1901fb +auo_k190x +auth_rpcgss +authenc +authencesn +autofs4 +avm_cs +avma1_cs +avmfritz +ax25 +ax88179_178a +axnet_cs +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 +bcm5974 +bcm_wimax +bcma +bcma-hcd +bd6107 +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluecard_cs +bluetooth +bma150 +bma180 +bman_debugfs_interface +bmp085 +bmp085-i2c +bmp085-spi +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bonding +booke_wdt +bpa10x +bpck +bpck6 +bpctl_mod +bpqether +bq2415x_charger +bq24190_charger +bq24735-charger +bq27x00_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +broadsheetfb +bsd_comp +bt3c_cs +bt819 +bt856 +bt866 +bt878 +btcoexist +btcx-risc +btmrvl +btmrvl_sdio +btmtk_usb +btrfs +btsdio +bttv +btuart_cs +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +bw-qcam +bypass +c-qcam +c4 +c67x00 +c_can +c_can_pci +c_can_platform +caam +caam_jr +caamalg +caamhash +caamrng +cachefiles +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 +cc770 +cc770_isa +cc770_platform +cciss +ccm +cdc-acm +cdc-phonet +cdc-wdm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc_subset +cedusb +ceph +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chipreg +chnl_net +ci_hdrc +ci_hdrc_imx +ci_hdrc_msm +ci_hdrc_pci +cifs +cirrus +cirrusfb +clearpad_tm1217 +clip +clk-max77686 +clk-s2mps11 +clk-si5351 +clk-twl6040 +clk-wm831x +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm36651 +cm4000_cs +cm4040_cs +cma3000_d0x +cma3000_d0x_i2c +cmac +cmdlinepart +cmtp +cnic +cobra +coda +com20020 +com20020-pci +com20020_cs +com90io +com90xx +comedi +comedi_bond +comedi_fc +comedi_parport +comedi_test +comm +configfs +contec_pci_dio +cordic +core +cp210x +cpia2 +cpm_uart +cramfs +crc-ccitt +crc-itu-t +crc32 +crc7 +crc8 +cros_ec +cros_ec_i2c +cros_ec_keyb +cros_ec_spi +cryptd +crypto_null +crypto_user +cryptoloop +crystalhd +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 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx8800 +cx8802 +cx88xx +cxacru +cxd2099 +cxd2820r +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cxt1e1 +cy8ctmg110_ts +cyapa +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-hwmon +da9052-regulator +da9052_bl +da9052_onkey +da9052_tsi +da9052_wdt +da9055-hwmon +da9055-regulator +da9055_onkey +da9055_wdt +da9063-regulator +da9210-regulator +daqboard2000 +das08 +das08_cs +das08_pci +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 +dgrp +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +diskonchip +diva_idi +diva_mnt +divacapi +divadidd +divas +dl2k +dlci +dlm +dm-bio-prison +dm-bufio +dm-cache +dm-cache-cleaner +dm-cache-mq +dm-crypt +dm-delay +dm-flakey +dm-log +dm-log-userspace +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 +dm1105 +dm9601 +dmfe +dmx3191d +dn_rtmsg +dnet +docg3 +docg4 +donauboe +dpa_uio +dpaa_1588 +dpt_i2o +drbd +drm +drm_kms_helper +drm_usb +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsa_core +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +dt3000 +dt3155v4l +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-dw2102 +dvb-usb-ec168 +dvb-usb-friio +dvb-usb-gl861 +dvb-usb-gp8psk +dvb-usb-it913x +dvb-usb-lmedm04 +dvb-usb-m920x +dvb-usb-mxl111sf +dvb-usb-nova-t-usb2 +dvb-usb-opera +dvb-usb-pctv452e +dvb-usb-rtl28xxu +dvb-usb-technisat-usb2 +dvb-usb-ttusb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +dvb_usb_v2 +dw_dmac +dw_dmac_core +dw_dmac_pci +dwc2 +dwc2_pci +dwc2_platform +dwc3 +dwc3-pci +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e4000 +earth-pt1 +eata +ebt_802_3 +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ec100 +echo +edac_core +edt-ft5x06 +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efs +egalax_ts +ehset +elo +elsa_cs +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em_canid +em_cmp +em_ipset +em_meta +em_nbyte +em_text +em_u32 +emc1403 +emc2103 +emc6w201 +emi26 +emi62 +empeg +ems_pci +ems_pcmcia +ems_usb +emu10k1-gp +enc28j60 +enclosure +eni +enic +epat +epia +epic100 +eql +esas2r +esd_usb2 +esi-sir +esp4 +esp6 +et131x +ethoc +evbug +exofs +extcon-adc-jack +extcon-arizona +extcon-gpio +extcon-max77693 +extcon-max8997 +extcon-palmas +ezusb +f2fs +f75375s +f81232 +fakelb +fan53555 +farsync +faulty +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 +fld +flexcan +floppy +fm801-gp +fm_drv +fmc +fmc-chardev +fmc-fakedev +fmc-trivial +fmc-write-eeprom +fmvj18x_cs +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +freevxfs +friq +frpw +fs_enet +fsa9480 +fscache +fsl-diu-fb +fsl_elbc_nand +fsl_hypervisor +fsl_ifc_nand +fsl_pq_mdio +fsl_qe_udc +fsl_upm +fsl_usb2_udc +fsldma +ft1000 +ft1000_pcmcia +ftdi-elan +ftdi_sio +ftl +fujitsu_ts +fusbh200-hcd +g450_pll +g760a +g762 +g_acm_ms +g_audio +g_cdc +g_dbgp +g_ether +g_ffs +g_hid +g_mass_storage +g_midi +g_ncm +g_nokia +g_printer +g_serial +g_webcam +g_zero +gadgetfs +gamecon +gameport +garmin_gps +garp +gcm +gdmtty +gdmulte +gdmwm +gdth +gen_probe +generic +generic-adc-battery +generic_bl +gf128mul +gf2k +gfs2 +ghash-generic +gianfar_driver +gianfar_ptp +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +go7007 +go7007-loader +go7007-usb +goku_udc +goldfishfb +gp2ap002a00f +gp2ap020a00f +gpio +gpio-74x164 +gpio-addr-flash +gpio-adnp +gpio-adp5520 +gpio-adp5588 +gpio-amd8111 +gpio-arizona +gpio-charger +gpio-da9052 +gpio-da9055 +gpio-dwapb +gpio-fan +gpio-generic +gpio-grgpio +gpio-ir-recv +gpio-janz-ttl +gpio-kempld +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio-pca953x +gpio-pcf857x +gpio-rdc321x +gpio-regulator +gpio-tps65912 +gpio-ts5500 +gpio-twl4030 +gpio-twl6040 +gpio-ucb1400 +gpio-viperboard +gpio-vx855 +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +gpio_backlight +gpio_keys +gpio_keys_polled +gpio_mouse +gpio_tilt_polled +grcan +gre +grip +grip_mp +gsc_hpdi +gspca_benq +gspca_conex +gspca_cpia1 +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_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gtco +guillemot +gunze +gxt4500 +hamachi +hampshire +hanwang +hci +hci_uart +hci_vhci +hdlc +hdlc_cisco +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdlcdrv +hdpvr +he +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfc_usb +hfcmulti +hfcpci +hfcsusb +hfs +hfsplus +hid +hid-a4tech +hid-apple +hid-appleir +hid-aureal +hid-axff +hid-belkin +hid-cherry +hid-chicony +hid-cypress +hid-dr +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-generic +hid-gyration +hid-holtek-kbd +hid-holtek-mouse +hid-holtekff +hid-huion +hid-icade +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-lenovo-tpkbd +hid-logitech +hid-logitech-dj +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hid-petalynx +hid-picolcd +hid-pl +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-gyro-3d +hid-sensor-hub +hid-sensor-iio-common +hid-sensor-magn-3d +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-wacom +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hidp +hih6130 +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hmc5843 +hmc6352 +hopper +horizon +hostap +hostap_cs +hostap_pci +hostap_plx +hp100 +hpfs +hpilo +hpsa +hptiop +hsi +hsi_char +hso +hsr +htc-pasic3 +htu21 +huawei_cdc_ncm +hwa-hc +hwa-rc +hwmon-vid +hx8357 +hysdn +i1480-dfu-usb +i1480-est +i2400m +i2400m-usb +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd8111 +i2c-arb-gpio-challenge +i2c-cbus-gpio +i2c-cpm +i2c-designware-core +i2c-designware-pci +i2c-designware-platform +i2c-dev +i2c-diolan-u2c +i2c-eg20t +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-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 +i2o_block +i2o_bus +i2o_config +i2o_core +i2o_proc +i2o_scsi +i40e +i40evf +i5k_amb +i6300esb +i740fb +i82092 +ib_addr +ib_cm +ib_core +ib_ipoib +ib_iser +ib_isert +ib_mad +ib_mthca +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +ibmaem +ibmpex +icp_multi +ics932s401 +idmouse +idt77252 +ieee802154 +ifb +iforce +igb +igbvf +iguanair +iio-trig-interrupt +iio-trig-periodic-rtc +iio-trig-sysfs +iio_dummy +iio_hwmon +ili210x +ili922x +ili9320 +imm +imon +ims-pcu +imx074 +imx_thermal +ina209 +ina2xx +industrialio +industrialio-triggered-buffer +inet_diag +inexio +inftl +initio +input-polldev +int51x1 +intel_vr_nor +interact +interval_tree_test +inv-mpu6050 +io_edgeport +io_ti +ioc4 +iowarrior +ip6_gre +ip6_tables +ip6_tunnel +ip6_vti +ip6t_MASQUERADE +ip6t_NPT +ip6t_REJECT +ip6t_SYNPROXY +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_mh +ip6t_rpfilter +ip6t_rt +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6table_security +ip_gre +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netnet +ip_set_hash_netport +ip_set_hash_netportnet +ip_set_list_set +ip_tables +ip_tunnel +ip_vs +ip_vs_dh +ip_vs_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 +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ipg +iphase +ipheth +ipip +ipmi_devintf +ipmi_poweroff +ipmi_si +ipmi_watchdog +ipoctal +ipr +ips +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_SYNPROXY +ipt_ULOG +ipt_ah +ipt_rpfilter +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +iptable_security +ipw +ipw2100 +ipw2200 +ipwireless +ipx +ir-jvc-decoder +ir-kbd-i2c +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +ir-rc5-decoder +ir-rc5-sz-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sony-decoder +ir-usb +ircomm +ircomm-tty +irda +irda-usb +irlan +irnet +irtty-sir +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isofs +isp116x-hcd +isp1362-hcd +isp1704_charger +isp1760 +it913x-fe +itd1000 +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iw_nes +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsm +kafs +kalmia +kaweth +kbic +kbtab +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keucr +keyspan +keyspan_pda +keyspan_remote +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +ko2iblnd +kobil_sct +ks0108 +ks0127 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksocklnd +ksz884x +ktti +kvaser_pci +kvaser_usb +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 +leds-88pm860x +leds-adp5520 +leds-atmel-pwm +leds-bd2802 +leds-blinkm +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-lm3530 +leds-lm3533 +leds-lm355x +leds-lm3642 +leds-lp3944 +leds-lp5521 +leds-lp5523 +leds-lp5562 +leds-lp55xx-common +leds-lp8501 +leds-lp8788 +leds-lt3593 +leds-max8997 +leds-mc13783 +leds-ot200 +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pca9685 +leds-pwm +leds-regulator +leds-tca6507 +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-oneshot +ledtrig-timer +ledtrig-transient +legousbtower +lg-vl600 +lg2160 +lgdt3305 +lgdt330x +lgs8gxx +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +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 +libsrp +lightning +line6usb +lineage-pem +linear +lirc_bt829 +lirc_dev +lirc_igorplugusb +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +litelink-sir +lkkbd +ll_temac +llc +llc2 +llog_test +lm25066 +lm3533-als +lm3533-core +lm3533-ctrlbank +lm3533_bl +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 +lov +lp +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp8755 +lp8788-charger +lp8788_bl +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc2978 +ltc4151 +ltc4215 +ltc4245 +ltc4261 +ltv350qv +lustre +lv5207lp +lvfs +lz4 +lz4_compress +lz4hc +lz4hc_compress +m25p80 +m2m-deinterlace +m52790 +m88rs2000 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +ma600-sir +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +mac80211 +mac80211_hwsim +mac802154 +mac_hid +macb +macvlan +macvtap +mag3110 +magellan +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +matrix-keymap +matrix_keypad +matrox_w1 +matroxfb_DAC1064 +matroxfb_Ti3026 +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +max1111 +max11801_ts +max1363 +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max2165 +max3100 +max34440 +max517 +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77686 +max77693 +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925-regulator +max8925_bl +max8925_onkey +max8925_power +max8952 +max8973-regulator +max8997 +max8997_charger +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 +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp4725 +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdc +mdc800 +mdio +me4000 +me_daq +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mem2mem_testdev +memstick +mena21_wdt +metro-usb +metronomefb +mfd +mga +mgc +michael_mic +microread +microread_i2c +microtek +mii +mii-bitbang +minix +mip6 +mite +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mma8450 +mmc_block +mms114 +mos7720 +mos7840 +moxa +mpc85xx_edac +mpoa +mpr121_touchkey +mpt2sas +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +mrst_max3110 +ms_block +msdos +msp3400 +mspro_block +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt29f_spinand +mt312 +mt352 +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtd_dataflash +mtdblock +mtdblock_ro +mtdoops +mtdram +mtdswap +mtip32xx +mtouch +multipath +musb_am335x +musb_dsps +musb_hdrc +mv643xx_eth +mv88e6060 +mv88e6xxx_drv +mv_u3d_core +mv_udc +mvmdio +mvsas +mvumi +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxl111sf-demod +mxl111sf-tuner +mxl5005s +mxl5007t +mxser +myri10ge +n_hdlc +n_r3964 +n_tracerouter +n_tracesink +nand +nand_bch +nand_ecc +nand_ids +nandsim +natsemi +nau7802 +navman +nbd +nci +ncpfs +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netlink_diag +netprio_cgroup +netrom +netxen_nic +newtonkbd +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 +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nf_synproxy_core +nf_tables +nf_tables_arp +nf_tables_bridge +nf_tables_ipv4 +nf_tables_ipv6 +nfc +nfc_digital +nfcsim +nfcwilink +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nfs +nfs_acl +nfs_layout_nfsv41_files +nfsd +nfsv2 +nfsv3 +nfsv4 +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 +nft_limit +nft_log +nft_meta +nft_nat +nft_rbtree +nft_reject_ipv4 +nftl +ngene +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_daq_700 +ni_daq_dio24 +ni_labpc +ni_labpc_cs +ni_labpc_pci +ni_mio_cs +ni_pcidio +ni_pcimio +ni_tio +ni_tiocmd +nicstar +nilfs2 +niu +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 +ns558 +ns83820 +nsc-ircc +nsp32 +nsp_cs +ntc_thermistor +ntfs +null_blk +nvidiafb +nvme +nxt200x +nxt6000 +obdclass +obdecho +objlayoutdriver +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stack_o2cb +ocfs2_stack_user +ocfs2_stackglue +ocrdma +of_serial +ofpart +old_belkin-sir +olpc_apsp +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 +output +ov2640 +ov5642 +ov6650 +ov7640 +ov7670 +ov772x +ov9640 +ov9740 +overlayfs +oxu210hp-hcd +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +palmas-regulator +pandora_bl +panel +paride +parkbd +parport +parport_ax88796 +parport_cs +parport_pc +parport_serial +pata_ali +pata_amd +pata_arasan_cf +pata_artop +pata_atiixp +pata_atp867x +pata_cmd640 +pata_cmd64x +pata_cs5520 +pata_cs5530 +pata_cs5536 +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_sc1200 +pata_sch +pata_serverworks +pata_sil680 +pata_sis +pata_sl82c105 +pata_triflex +pata_via +pc300too +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_can +pch_phub +pch_uart +pch_udc +pci +pci-stub +pci200syn +pcips2 +pcmcia +pcmcia_core +pcmcia_rsrc +pcmciamtd +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 +phison +phonet +phram +phy-core +phy-exynos-dp-video +phy-fsl-usb2 +phy-generic +phy-gpio-vbus-usb +phy-isp1301 +phy-rcar-usb +phy-samsung-usb +phy-samsung-usb2 +phy-samsung-usb3 +physmap +physmap_of +pixcir_i2c_ts +pktcdvd +pktgen +pl2303 +plat-ram +plat_nand +platform_lcd +plip +plusb +pluto2 +plx_pci +pm-notifier-error-inject +pm2fb +pm3fb +pm80xx +pmbus +pmbus_core +pmc551 +pmcraid +pn533 +pn544 +pn544_i2c +pn_pep +port100 +poseidon +powermate +ppa +ppc-corenet-cpufreq +ppdev +ppp_async +ppp_deflate +ppp_mppe +ppp_synctty +pppoatm +pppoe +pppox +pps-gpio +pps-ldisc +pps_core +pps_parport +pptp +prism2_usb +ps2mult +psmouse +psnap +pt +ptlrpc +ptp +pvrusb2 +pwc +pwm-pca9685 +pwm-twl +pwm-twl-led +pwm_bl +pxa27x_udc +qcaux +qcserial +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qlogic_cs +qlogicfas408 +qman_debugfs_interface +qmi_wwan +qnx4 +qnx6 +qt1010 +qt1070 +qt2160 +quatech2 +quatech_daqp_cs +quota_tree +quota_v1 +quota_v2 +qxl +r128 +r592 +r6040 +r8152 +r815x +r8169 +r8187se +r8188eu +r8192e_pci +r8192u_usb +r820t +r852 +r8712u +r8a66597-hcd +r8a66597-udc +radeon +radio-i2c-si470x +radio-keene +radio-ma901 +radio-maxiradio +radio-mr800 +radio-shark +radio-si4713 +radio-si476x +radio-tea5764 +radio-timb +radio-usb-si470x +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +ray_cs +rbd +rbtree_test +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-em-terratec +rc-encore-enltv +rc-encore-enltv-fm53 +rc-encore-enltv2 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-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-tbs-nec +rc-technisat-usb2 +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-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rc5t583-regulator +rcar_vin +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +redboot +redrat3 +reed_solomon +reiserfs +remoteproc +renesas_usbhs +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +rio-scan +rio500 +rionet +rivafb +rj54n1cb0c +rmd128 +rmd160 +rmd256 +rmd320 +rndis_host +rndis_wlan +rocket +romfs +rose +rotary_encoder +rp2 +rpcsec_gss_krb5 +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt61pci +rt73usb +rtc-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-as3722 +rtc-bq32k +rtc-bq4802 +rtc-cmos +rtc-da9052 +rtc-da9055 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1742 +rtc-ds2404 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-generic +rtc-hid-sensor-time +rtc-isl12022 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max77686 +rtc-max8907 +rtc-max8925 +rtc-max8997 +rtc-max8998 +rtc-mc13xxx +rtc-moxart +rtc-msm6242 +rtc-palmas +rtc-pcf2123 +rtc-pcf2127 +rtc-pcf50633 +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-snvs +rtc-stk17ta8 +rtc-tps6586x +rtc-tps65910 +rtc-tps80031 +rtc-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtc_cmos_setup +rtd520 +rtl2830 +rtl2832 +rtl8150 +rtl8180 +rtl8187 +rtl8188ee +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192se +rtl8723-common +rtl8723ae +rtl8723be +rtl8821ae +rtl_pci +rtl_usb +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtlwifi +rts5139 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rx51_battery +rxkad +s1d13xxxfb +s2250 +s2255drv +s2io +s2mps11 +s3fb +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s626 +s6e63m0 +s921 +saa6588 +saa6752hs +saa7110 +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7146 +saa7146_vv +saa7164 +saa717x +saa7185 +saa7706h +safe_serial +salsa20_generic +samsung-keypad +sata_fsl +sata_inic162x +sata_mv +sata_nv +sata_promise +sata_qstor +sata_rcar +sata_sil +sata_sil24 +sata_sis +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sbe-2t3e3 +sbp_target +sbs-battery +sc92031 +sca3000 +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_fq +sch_fq_codel +sch_gred +sch_hfsc +sch_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +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_tgt +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_srp +sctp +sctp_probe +sdhci +sdhci-of-esdhc +sdhci-of-hlwd +sdhci-pci +sdhci-pltfm +sdhci-pxav2 +sdhci-pxav3 +sdio_uart +sdr-msi3101 +sdricoh_cs +sedlbauer_cs +seed +sep_driver +seqiv +ser_gigaset +serial2002 +serial_cs +serio_raw +sermouse +serpent_generic +serport +serqt_usb2 +ses +sfc +sh_eth +sh_mobile_ceu_camera +sh_mobile_csi2 +sh_veu +sha1-powerpc +shark2 +shpchp +sht15 +sht21 +si21xx +si4713-i2c +si476x-core +sidewinder +sierra +sierra_net +sil164 +sir-dev +sis +sis190 +sis5595 +sis900 +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_of_platform +sja1000_platform +skel +skfp +skge +sky2 +sl811-hcd +sl811_cs +slcan +slip +slram +sm501 +sm501fb +sm7xxfb +sm_common +sm_ftl +smb347-charger +smc91c92_cs +smm665 +smsc-ircc2 +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +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-at73c213 +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt3328 +snd-bt87x +snd-ca0106 +snd-cmipci +snd-compress +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-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1938 +snd-es1968 +snd-firewire-lib +snd-firewire-speakers +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-hdmi +snd-hda-codec-idt +snd-hda-codec-realtek +snd-hda-codec-si3054 +snd-hda-codec-via +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-mona +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-mts64 +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-oxygen +snd-oxygen-lib +snd-page-alloc +snd-pcm +snd-pcxhr +snd-pdaudiocf +snd-portman2x4 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb-common +snd-sb16-dsp +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-atmel-pcm +snd-soc-core +snd-soc-si476x +snd-soc-simple-card +snd-sonicvibes +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usb-usx2y +snd-usbmidi-lib +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx-lib +snd-vx222 +snd-vxpocket +snd-ymfpci +soc_camera +soc_camera_platform +soc_mediabus +soc_scale_crop +softdog +softing +softing_cs +solo6x10 +solos-pci +sony-btf-mpx +soundcore +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-dw +spi-dw-midpci +spi-dw-mmio +spi-gpio +spi-lm70llp +spi-oc-tiny +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-sc18is602 +spi-tle62x0 +spi-topcliff-pch +spi-xcomm +spi_ks8995 +spidev +squashfs +sr9700 +ssb +ssb-hcd +ssd1307fb +ssfdc +sst25l +ssu100 +st +st1232 +st_accel +st_accel_i2c +st_accel_spi +st_drv +st_gyro +st_gyro_i2c +st_gyro_spi +st_magn +st_magn_i2c +st_magn_spi +st_pressure +st_pressure_i2c +st_pressure_spi +st_sensors +st_sensors_i2c +st_sensors_spi +starfire +stb0899 +stb6000 +stb6100 +ste_modem_rproc +stex +stinger +stir4200 +stk1160 +stkwebcam +stmmac +stmpe-keypad +stmpe-ts +stowaway +stp +streamzap +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +svcrdma +svgalib +sx8 +sym53c500_cs +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink +synclink_cs +synclink_gt +synclinkmp +sysv +t1pci +talitos +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +tc3589x-keypad +tca6416-keypad +tca8418_keypad +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bic +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 +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-kstrtox +test-string_helpers +test_power +tg3 +tgr192 +thmc50 +ti-adc081c +ti_dac7512 +ti_usb_3410_5052 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timb_dma +timberdale +timblogiw +timbuart +timeriomem-rng +tipc +tlan +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmiofb +tmp006 +tmp102 +tmp401 +tmp421 +tmscsim +toim3232-sir +touchit213 +touchright +touchwin +tpci200 +tpm-rng +tpm_atmel +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm_i2c_stm_st33 +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-charger +tps65090-regulator +tps65217 +tps65217-regulator +tps65217_bl +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +tranzport +tridentfb +ts2020 +ts_bm +ts_fsm +ts_kmp +tsc2005 +tsc2007 +tsc40 +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +tsl4531 +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tuner_it913x +tunnel4 +tunnel6 +turbografx +tusb6010 +tvaudio +tveeprom +tvp5150 +tw2804 +tw9903 +tw9906 +tw9910 +twidjoy +twl4030-madc +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_charger +twl4030_keypad +twl4030_wdt +twl6030-gpadc +twl6040-vibra +twofish_common +twofish_generic +typhoon +u132-hcd +uPD98402 +u_ether +u_rndis +u_serial +uartlite +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +uda1342 +udc-core +udf +udl +udp_diag +ueagle-atm +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_sercos3 +uli526x +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 +unix_diag +upd64031a +upd64083 +usb-serial-simple +usb-storage +usb3503 +usb8xxx +usb_8dev +usb_debug +usb_f_acm +usb_f_ecm +usb_f_ecm_subset +usb_f_eem +usb_f_mass_storage +usb_f_ncm +usb_f_obex +usb_f_phonet +usb_f_rndis +usb_f_serial +usb_f_ss_lb +usb_gigaset +usb_wwan +usbatm +usbdux +usbduxfast +usbduxsigma +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmisc_imx +usbmon +usbmouse +usbnet +usbserial +usbsevseg +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +uwb +ux500 +v4l2-common +v4l2-dv-timings +v4l2-int-device +v4l2-mem2mem +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vga16fb +vgastate +vgg2432a4 +vhci-hcd +vhost +vhost_net +vhost_scsi +via +via-ircc +via-rhine +via-sdmmc +via-velocity +via686a +videobuf-core +videobuf-dma-contig +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videobuf2-core +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-memops +videobuf2-vmalloc +videocodec +videodev +viperboard +viperboard_adc +virtio +virtio-rng +virtio_balloon +virtio_blk +virtio_console +virtio_mmio +virtio_net +virtio_pci +virtio_ring +virtio_scsi +virtual +visor +vivi +vlsi_ir +vmac +vme +vme_ca91cx42 +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmwgfx +vmxnet3 +vp27smpx +vpx3220 +vringh +vsock +vsxxxaa +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +w1-gpio +w1_bq27000 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1_smem +w1_therm +w35und +w5100 +w5300 +w6692 +w83781d +w83791d +w83792d +w83793 +w83795 +w83977af_ir +w83l785ts +w83l786ng +w90p910_ts +w9966 +wacom +wacom_i2c +wacom_w8001 +walkera0701 +wanxl +warrior +wbsd +wcn36xx +wdt_pci +whc-rc +whci +whci-hcd +whiteheat +wil6210 +wimax +winbond-840 +windfarm_core +wire +wishbone-serial +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wl3501_cs +wlags49_h25_cs +wlags49_h2_cs +wlcore +wlcore_sdio +wlcore_spi +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x-ts +wm831x_backup +wm831x_bl +wm831x_power +wm831x_wdt +wm8350-hwmon +wm8350-regulator +wm8350_power +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-regulator +wm97xx-ts +wp512 +wusb-cbaf +wusb-wa +wusbcore +x25 +x25_asy +x_tables +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 +xgene-enet +xgifb +xgmac +xilinx_ps2 +xilinx_uartps +xillybus_core +xillybus_of +xillybus_pcie +xirc2ps_cs +xircom_cb +xor +xpad +xprtrdma +xsens_mt +xt_AUDIT +xt_CHECKSUM +xt_CLASSIFY +xt_CONNSECMARK +xt_CT +xt_DSCP +xt_HL +xt_HMARK +xt_IDLETIMER +xt_LED +xt_LOG +xt_NETMAP +xt_NFLOG +xt_NFQUEUE +xt_RATEEST +xt_REDIRECT +xt_SECMARK +xt_TCPMSS +xt_TCPOPTSTRIP +xt_TEE +xt_TPROXY +xt_TRACE +xt_addrtype +xt_bpf +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_conntrack +xt_cpu +xt_dccp +xt_devgroup +xt_dscp +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_iprange +xt_ipvs +xt_length +xt_limit +xt_mac +xt_mark +xt_multiport +xt_nat +xt_nfacct +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_realm +xt_recent +xt_sctp +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_tcpudp +xt_time +xt_u32 +xtkbd +xts +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 +zte_ev --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/powerpc/powerpc-smp +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/powerpc/powerpc-smp @@ -0,0 +1,16499 @@ +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/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/atm/suni 0xcc7f8240 suni_init +EXPORT_SYMBOL drivers/atm/uPD98402 0x0fffb114 uPD98402_init +EXPORT_SYMBOL drivers/bcma/bcma 0xf07b25f0 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 0x0300a23f pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x10a51b15 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x3502da60 pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x3a526428 pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0x4aeb7bf2 paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0x5142fc25 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x89af5313 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0xa1c12ae8 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xab1a82d1 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0xd1221a65 pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0xe61ee8bb pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0xf5521a1f pi_write_block +EXPORT_SYMBOL drivers/char/apm-emulation 0x129e74f2 apm_get_power_status +EXPORT_SYMBOL drivers/char/apm-emulation 0xdf3329b8 apm_queue_event +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x1963bee3 dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x4bb2cd0d dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x598c752f dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x684f8ad8 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x9d2147b4 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x9f435650 dw_dma_cyclic_start +EXPORT_SYMBOL drivers/edac/edac_core 0xa5dbf9a2 edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04dd92ce fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0c3a1be9 fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x250e06fb fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x31d62a20 fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0x338b8104 fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3a346cb7 fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x41d9e036 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x468f92af fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4b3ed7d5 fw_iso_context_flush_completions +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 0x6e4958df fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x781601da fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7e431b14 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7e9a5b16 fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x818a951f fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8549aa11 fw_iso_buffer_destroy +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 0x90b4086d fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x99b2d7ce fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa6ee9aae fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb8bf72fc fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0xbae1a39b fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xbc614c8f fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc1195b07 fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xcc321a78 fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xcd249e6f fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd166d136 fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0xdd8fba38 fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf1c2357c fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf8923c59 fw_card_add +EXPORT_SYMBOL drivers/fmc/fmc 0x43ee29f7 fmc_free_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x472230bd fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x56a4671a fmc_find_sdb_device +EXPORT_SYMBOL drivers/fmc/fmc 0x56b3c9a6 fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0x69a0cc1f fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0x816d561f fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0x846804d0 fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x88a915f9 fmc_driver_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0xd37c51ee fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0xf3a47e4c fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0xfac06502 fmc_show_sdb_tree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00025916 drm_mode_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00667d8a drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x015b5c68 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x026c0d6b drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0354aa3e drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x040af15d drm_sysfs_connector_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04d36227 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04d45eed drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x059ce3d2 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0x06a67412 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a6ca112 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ec527fc drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0eefc5a4 drm_i2c_encoder_prepare +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 0x11058be6 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x122d1fdf drm_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12c6276a drm_buffer_read_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13cdaadb drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1429bb14 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x142b8b35 drm_buffer_copy_from_user +EXPORT_SYMBOL drivers/gpu/drm/drm 0x143c93a4 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x189f6401 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18f47ab4 drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1902b021 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x197e1a7f drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19e44324 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1cc09bb5 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1ccdc99e drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d902d18 drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d94e172 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f9d3344 drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20a8ac2b drm_core_reclaim_buffers +EXPORT_SYMBOL drivers/gpu/drm/drm 0x230e5801 drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24278297 drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25184c02 drm_prime_destroy_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x275c34e0 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x278dd2fd drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29ad006c drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a942ab2 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2bd90a15 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d739f79 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d80be4d drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2df41021 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f0b064f drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f4a4e10 drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34214ea9 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x346127a7 drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x356e23d8 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36f91ef3 drm_mm_clean +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 0x3ae7b2d0 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d4b8108 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f13c046 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4088c1f1 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41f0a071 drm_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x42ca3de5 drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43045397 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4320500f drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43384bd9 drm_buffer_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4447dda5 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47a21b5a drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47f62b67 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x488c2aeb drm_mode_connector_detach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490190ec drm_get_encoder_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x498dcb5e drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49fabf0d drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b5984bb drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c22cfdd drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c7cdefc drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f33b86d drm_dev_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x500ff583 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x502ec455 drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x511d7473 drm_core_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5186c12b drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54a4cbc9 drm_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54dbe3df drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56d0692a drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56d1887a drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5754ca4c drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59ff0241 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a268d54 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5aec139b drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5bced8c0 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c48458e drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5eee31df drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x60411d83 drm_bridge_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6090be61 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x647e664d drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66803841 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67fe8e22 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a42fa22 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6af99fa7 drm_bridge_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b6d7375 drm_timestamp_precision +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6c40d055 drm_core_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cd92916 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cee2e42 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d10e624 drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6dd6f164 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e2e73e9 drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e719ecc drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x70bd6ac4 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x728de02f drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7368ebdd drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x73a24f8c drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x73b8f0f1 drm_prime_init_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x76c012d2 drm_sysfs_connector_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79ab71e4 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a4e7297 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a4ff5bb drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b2ee862 drm_core_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b3d04c2 drm_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7d95f90a drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81776842 drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81ba930c drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x833b8940 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8451c608 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x85b189f5 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x85ca9918 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x86c061d6 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x876e467d drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b627e35 drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8bbb23f8 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8dfb019d drm_buffer_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f7df3a7 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9010f91e drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9168fd01 drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92f9c673 drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9745d638 drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99a9f8db drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d70fc2a drm_rnodes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9eccfe56 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9efc26a3 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f0c1b41 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9fca05f6 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1f4e9e6 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4c4e6ca drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5009059 drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa506dff5 drm_global_mutex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa565a896 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5dbd572 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa8d1bbdf drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa900b682 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac0cb3c3 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae0ed28a drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafb0cb6f drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb109f4ba drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb135674c drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb50ac7e3 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb52fcaea drm_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb572a9f0 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5a3fd16 drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6e7d42b drm_get_connector_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb85c9b96 drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb86ebb38 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb95beb55 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc3a79da drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbcd7b872 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd8cf040 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe001c53 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe37e0b2 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc00e5457 drm_get_last_vbltimestamp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4000f9f drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc414c422 drm_vblank_offdelay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc608f7b3 drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6d93a93 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7f7cc11 drm_vma_offset_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7fd52c9 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc83f105e drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc932d974 drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca064c05 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca2e11be drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcbb3440f drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd64ff1c drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcec158f0 drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd03d9f71 drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd099eea4 drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2c1f486 drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd3485630 drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd7fef225 drm_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd8b6f1a1 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd8e4effa drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9aef825 drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9bbb44c drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda9a1a51 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb5a5852 drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb9a7231 drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdfb6a67f drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2391ac2 drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2a41962 drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2ef97e4 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe4360c84 drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5300e2f drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5b65a42 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6f46e6e drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6fd6342 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb06680c drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec45b25a drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed04c933 drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0xefcf2c5c drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xefdf9b69 drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf082e391 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf08d712a drm_mode_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf099bf89 drm_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1944aa7 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf219f21d drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf27288d1 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3921554 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3da12b2 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3e9beeb drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf446a0e2 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4e0df3e drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf546c4a2 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf5c8a777 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6d3a423 drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6ecbe54 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6f13eda drm_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf85dd0f7 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa210bff drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa4b1e35 drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa86bc9e drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfabc0b64 drm_platform_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb497216 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd063935 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd29ecd4 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd3dce2a drm_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd86e1ae drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe4a68c7 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe9c7ffb drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc0fc91 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffe931f9 drm_pci_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 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x109e6831 drm_dp_aux_unregister_i2c_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x12054f61 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x13397c7d drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x196be04d drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x24b385b0 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3236a281 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x38100a62 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3de01cf1 drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3ecf9f91 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3f47bc79 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4311431a drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4dbf8956 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5d39fef3 drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5e9c9c57 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6bb3ca9c drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x71155d01 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7919ce4b drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84cd07a5 drm_helper_hpd_irq_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 0x852e0ba2 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8582c587 drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x86627c5c drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x896798f7 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9304fb25 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9693903d drm_fb_helper_restore_fbdev_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9b9fa757 i2c_dp_aux_add_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9dd0e6d9 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9e00bfe0 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa521b244 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa71b7638 drm_crtc_helper_set_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 0xc4baad97 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc56f63b1 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc783ca72 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xce30915c drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd052fb71 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd0b0ebdf drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5bc06c3 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd90b64d1 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdcb258f3 drm_dp_aux_register_i2c_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe0ee87fb drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe7938736 drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe88cfbbe drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf68e499f drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x3357c150 drm_usb_init +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x5f4fba1c drm_usb_exit +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x6c5972a0 drm_get_usb_dev +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x02d8baf6 ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x02e27f0a ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x04aae498 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x074bfdef ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0794eff1 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0d91200c ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x12d83469 ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x132b05be ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1cefb740 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x22d52c38 ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x25dbf6ca ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b4a4292 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3208c2a3 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3603be37 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x45b0d949 ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x45c6d1e7 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4a9341f4 ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4bcb3310 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4dc77cdf ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4e0aecd9 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4ebfbf34 ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x53117713 ttm_bo_create +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 0x6791df13 ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x67b1d568 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x714a1e6f ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x714abcc3 ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7b6f6e44 ttm_object_device_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 0x8354e141 ttm_eu_backoff_reservation +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 0x8db75fe1 ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x93ec979c ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x95760c8a ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9b0d4926 ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9b96ca3c ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9faa331a ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa2a129fd ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa68c8ab9 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa73de2a9 ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xabedb4c3 ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xae2dbf41 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb3a1b9b8 ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb3cb560d ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb83c6470 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc22e9ad0 ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc5f0c2da ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc61b874c ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc79457ee ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc811e963 ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xccd79e2b ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce6e43a8 ttm_base_object_lookup_for_ref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd1077dd0 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd7ed87d4 ttm_bo_validate +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 0xe48596a3 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe48b1f78 ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe5d91328 ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe6cd804c ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xea8c481f ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xec1cef1c ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xed36d6dc ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xef7ba0b2 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf15a8044 ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf60e0577 ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfdf1b73b ttm_mem_global_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-pca 0x05e36da6 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x30de65e2 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0x015fe159 amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x9c5c5281 st_accel_common_probe +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xdfb97ff7 st_accel_common_remove +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x12fc75b7 hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x53d1b34e hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x79dd740a hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xa87dc5af hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xeaf97fb7 hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x0c49e7fc hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x60ba3636 hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x03ffd434 st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x074d7047 st_sensors_trigger_handler +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x0ba004c3 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x19302b57 st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x24982d59 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x2a3e45fb st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x328b6701 st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x379ac8a2 st_sensors_sysfs_get_sampling_frequency +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x3d613076 st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x50810ede st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x6acc7106 st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x78c9db67 st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xa82f4e26 st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xba865e5d st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xcef0a3e3 st_sensors_sysfs_set_sampling_frequency +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xed134cb5 st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0xe76b301a st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0x79d48f95 st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x590e2639 st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x6033a60d st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x7b8fba64 adis_enable_irq +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xaa7ea6e0 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x2f8beedd iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x423631ce iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x4d2843d3 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x532af09c iio_buffer_store_enable +EXPORT_SYMBOL drivers/iio/industrialio 0x58cfdcba iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x5992a872 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x69b78d83 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x83df1b24 iio_buffer_show_enable +EXPORT_SYMBOL drivers/iio/industrialio 0x9159d8e5 iio_buffer_read_length +EXPORT_SYMBOL drivers/iio/industrialio 0x9f10b627 iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x9f609e2c iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0xa42c0a1d iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0xb9e330ad iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xc23a9112 iio_buffer_register +EXPORT_SYMBOL drivers/iio/industrialio 0xcb46857b iio_buffer_write_length +EXPORT_SYMBOL drivers/iio/industrialio 0xd8f54e8a iio_buffer_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xdbf66f00 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0xde93cf8e iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe55bcaad iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xee8ba838 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0xfb5c6686 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0xfec2c1c9 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0xff66409d iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x013f9c51 iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x68371d2b iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x7eb6c26a iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xa7e3b21d iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xba29532a st_magn_common_probe +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xd21691ce st_magn_common_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x4a0532a9 st_press_common_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x869d74bc 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 0x2d82d796 rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x32a8402c rdma_addr_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x446fd7c9 rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x59252c9d rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x02ec094b ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x1c4ac721 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x2dd4c01f ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x35500070 ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x3ed730fb ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x3f098b56 ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x4722353d ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x754dee31 ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x76a1b2bb ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x85e6db20 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa34e3983 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa4ebd6b0 cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xbd3f8ae6 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xcadccec1 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd9c2d986 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xeae8d9aa ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xeb62aef0 ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x006eda49 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x020066aa ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x03978c88 ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x06aae8a7 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x06c82fcf mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x09a93f3e ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x11d53496 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x133767f3 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x14f84918 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x166caef9 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x171f99f1 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x193b7331 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2b690071 ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2e260a0f ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x31cb2277 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3342b2d1 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x34dddc0d ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3d5607e0 ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x441e8f95 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x49107c28 ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x49d478db ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4a205944 ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4aa2befd ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4b6c93c8 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4cbb6e9f ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4eec71b2 ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50572e82 ib_resolve_eth_l2_attrs +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 0x57a3934b ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x590bb954 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5dc54f67 ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5e28a62e ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e030e26 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x703cca30 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x75d09596 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7694b299 ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7b7bdf9c ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7dcc5793 ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x86a8f593 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8818c79a ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x894514c1 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8fec01a5 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9095df99 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x938a5fa0 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x939a09a9 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9725da9d ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x994b9d72 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9e8dcf61 rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9fbb6e52 ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa1526283 ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa41a72d7 ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa6b371aa ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa702d7c1 ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa88b8cfd ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xac217df9 rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xae8f1191 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xafe792c1 ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb080b0f7 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1a312e1 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb5e76452 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb68bcec6 ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc1ec6667 ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc36eda82 ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xca5606f8 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcbae3908 ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd48352cb ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdc28e2df ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xddbb78b2 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe567bf39 ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5b5e0d9 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe90e80de ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeb39c035 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeb8b430e ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xec235625 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xef9879c7 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf3feeead ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf6e41ddd ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf7eaf2ae ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf9781a29 ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfbb9a84f ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfcba8263 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xffaeffb0 ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xffbd600e ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x1301171a ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x4012a04f ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x5c8c866b ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x62a4e783 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6867d556 ib_process_mad_wc +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 0x873fdbc1 ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x946d5d27 ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x9da85428 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xa6d243de ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xb0a15b76 ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xc99a1427 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xcc52034a ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xd4946eaa ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x0c368ae9 ib_sa_get_mcmember_rec +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 0x55319d9e ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x62d610c6 ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x98e56e8d ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x999adf77 ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9a1cd50d ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xa29b8597 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xb6209e50 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_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 0x0d7154db iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x4c83c91d iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5dbed9db iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x722cc48c iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xbdcc14d2 iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xbf3c1ce3 iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xbf9d87a2 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd5abfb46 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x03aa318c rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0e1a0137 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x192a92f1 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x19753783 rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x21562c5e rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x25777cef rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2650107d rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2f529019 rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x45e0d3e5 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x500452d1 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa069f977 rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa731abaa rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xab30e2f7 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xad74dcca rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb98f79d0 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xcdb269b8 rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd1979659 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xdc269c8e rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xdfaf976d rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xecf52b37 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xfe8efbc4 rdma_resolve_addr +EXPORT_SYMBOL drivers/input/gameport/gameport 0x1f3cea63 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x2673978e gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x2f03447f gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x41b297b4 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x4e0ac10a __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x6a5d53ea __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x7229d9b3 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x8c15595b gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0xe5cadcbe gameport_start_polling +EXPORT_SYMBOL drivers/input/input-polldev 0x243016c2 input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x275995f7 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x7d6da4e7 input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xae3945e6 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x532b09c8 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x195df4e8 ad714x_remove +EXPORT_SYMBOL drivers/input/misc/ad714x 0x49f12986 ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0x64787324 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x9398f448 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 0xc4d16367 cma3000_init +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/sparse-keymap 0x017850c0 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x2a4f828f sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0x2ca7d7b3 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0x5442948c sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0x8b1507f4 sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0x8f42f97c sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x2c02de92 ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x9f050c63 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 0x2bad33da capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2dfae1ff capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x47d3fc51 capi_info2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x5c62e9f1 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 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 0x9d2abe87 capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9f823278 register_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xa51a3c21 capi20_release +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 0xc0fb040c capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc10fe128 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc126a4b8 attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xcdf5acec capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xdeddfe37 capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe8ad9bd1 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xed061606 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xf0e7f710 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x0c9bb0e0 avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x14095cac b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x14ae6dae b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x37cc7884 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x3969d0f3 b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x3f48b7d0 b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x72594061 b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xa084fad8 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xa63fa318 b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xaea42487 b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xd637a7c5 b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xd70ce189 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xea6bbada b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xf92f9a2d b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfe6d01d0 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x081fd271 b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x2894b13c b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x2bfdb664 b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x3d0db950 b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x438dca53 b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x49162a3a b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xc1d60f9e b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xcaf816bb t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xf36e6c80 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0x29562993 b1pcmcia_delcard +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xaec3240e b1pcmcia_addcard_m1 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xea620116 b1pcmcia_addcard_m2 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xf14bf8b1 b1pcmcia_addcard_b1 +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x2974ead1 DIVA_DIDD_Read +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x7ab59853 proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x6247c7a1 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x6f7ea165 mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xc1508207 mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xf463295e mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x25181750 mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xc7d208be 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 0x4802bd39 hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x7f29ce36 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xe227344e FsmRestartTimer +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 0xff2db2cf FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x77f47998 isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xcfb3d567 isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xd03bfe07 isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xd61d90e2 isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xd6f6aa19 isac_irq +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x19f937ff isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x2dbb9953 register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x95c4dc41 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 0x0d9b17bc mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x18489c96 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3f6c6aa6 dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x45d16a7b mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x46a85452 mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4dc2f581 create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x54451388 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5696bc6b bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x59ec2040 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x608da28b get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x60e9e404 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x614ede30 mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6ce5ebf4 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7bb45273 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7be8a9ab queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x947f80cb mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x96309324 mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9a96d39f recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa2050710 mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xadbfa83c mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc4d69c34 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc79a55da bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xcc7ecb09 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xce5c6e31 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xcf3bcf7f 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 0xded75a5f recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe87943cf mISDN_FsmInitTimer +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 0x34d5aad1 closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0x3976ef60 closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0x60e0a6f1 closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0x8d3996c6 closure_trylock +EXPORT_SYMBOL drivers/md/bcache/bcache 0x8f0b61e6 __closure_lock +EXPORT_SYMBOL drivers/md/bcache/bcache 0xb326a349 closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe3c17af1 __closure_wake_up +EXPORT_SYMBOL drivers/md/dm-log 0x2434f36a dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0x8b9d0dba dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0xa772299e dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0xf78076bd dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x3e1bae8e dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0x504ba431 dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0x5478c4bc dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x5bf662ba dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x891dc2c6 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0xaf623f81 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/raid456 0x06c74be3 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x3792dc25 flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x3977defc flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x76917920 flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x7df42134 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x80a59a00 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x86dd8fdc flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x934f646d flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x93c50bb2 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xa6906bc9 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xabfd375c flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xaed07e61 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xe50b057e flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xf6ab7083 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/btcx-risc 0x177250ee btcx_riscmem_free +EXPORT_SYMBOL drivers/media/common/btcx-risc 0x495e4b0c btcx_calc_skips +EXPORT_SYMBOL drivers/media/common/btcx-risc 0x548800f5 btcx_riscmem_alloc +EXPORT_SYMBOL drivers/media/common/btcx-risc 0xad2fe38b btcx_sort_clips +EXPORT_SYMBOL drivers/media/common/btcx-risc 0xc368f8e6 btcx_align +EXPORT_SYMBOL drivers/media/common/btcx-risc 0xcda0ded2 btcx_screen_clips +EXPORT_SYMBOL drivers/media/common/cx2341x 0x13353634 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 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x5b88faf6 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x5bb26afe cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcd8ee043 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/cx2341x 0xf871ce56 cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0xe8097698 cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x11e06ce2 tveeprom_read +EXPORT_SYMBOL drivers/media/common/tveeprom 0x6baeba31 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x06471139 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x07317871 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x17523ce7 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x19591134 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x22d6ce4a dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x28ee2ae8 dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x31992e92 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x31ccf1fa dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x32ea258a dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x33418fb4 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x33b2a7b6 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x361a7512 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x38c9a792 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 0x54fdf616 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5d6009f2 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5f176f50 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x642e121c dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x787e3e47 dvb_unregister_device +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 0x7cfc1220 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x81711731 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8e47dce5 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x98660d19 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa05efa29 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa660a1aa dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xad0b8c41 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xad2f5d2d dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb9442b5f dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc079187c dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd5238247 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd68a099e timeval_usec_diff +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd6c0aff1 dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdb576668 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe2ad75a0 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe60f3513 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfe4c609a dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-frontends/a8293 0x52cac8a5 a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0xbd788eeb af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9033 0x3f8f139b af9033_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x98eee4bb atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x0fd7104e au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x2c08f739 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x4173d773 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x9c8f7d35 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xae8ed3d9 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xbbe93f40 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xcb57f40a au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xe05fddb6 au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xf5f1cfce au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x923d2f08 au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0xb65a73d8 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x40d36ab1 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0xe6299401 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0x04abd75f cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x0c9c6518 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x618d21f7 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0x2e16f7ce cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x568652d0 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x945aaff5 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0xb3add93d cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x0b6c7c30 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x146d78aa dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x53c17a72 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xb64b9ac0 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xbf0a9eef dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x22bd4a12 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x3f65cfd7 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x6092424b dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x767dea78 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x8d608258 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xa493761c dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xab623547 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xbef1b2fa dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xc1db5bc5 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xcb426925 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xcebd43ee dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xdaaee4b3 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xe00d6ca4 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xecce76e2 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xed9ebd50 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0xc2708bfe dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x17a97958 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x2f1b4314 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x3778f91f dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x7702b834 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xda829232 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xfed1ecb7 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x73e13798 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x76bd415c dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x8d535dc9 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xda955b58 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x09efbd61 dib7090_get_adc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x1b552538 dib7000p_set_agc1_min +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x1fa7bbe4 dib7000p_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x2e22c189 dib7000p_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x33dccf59 dib7000p_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x4d7061bd dib7000p_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x4efbe92f dib7000p_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x58d058c8 dib7000pc_detection +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x5f7d365d dib7090_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x643cb5ab dib7000p_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x7b08082f dib7000p_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x8a9ae58e dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x9ad9464a dib7090_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x9dd08844 dib7090_slave_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xe9b2b790 dib7000p_get_agc_values +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xfd07fa8e dib7000p_update_pll +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x0e227f9a dib8096p_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x106916d7 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x4ca71c2e dib8000_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x60a8f401 dib8000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x6c1de2c2 dib8000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x77477f35 dib8000_get_adc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x79d09f27 dib8096p_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x847e8af9 dib8000_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xa7faed1e dib8000_update_pll +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xa96f06a5 dib8000_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xbbe8f21c dib8000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xc2e8a771 dib8000_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xc91409e4 dib8000_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xda9a103d dib8000_pwm_agc_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xe1cf1991 dib8000_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xebbb967a dib8000_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xed9b16a8 dib8090p_get_dc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xf4e9c316 dib8000_remove_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xf9aef6fa dib8000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x2adc88e8 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x52e19fa5 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x648bf7a6 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x82e7e2f9 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xdc331bec dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x9b5602b6 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0xdc4c990f drxd_config_i2c +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0x5afe472e drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0x8120ade8 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0xab8d29ad dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0xb01f62e2 ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0xe154fc6f isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x5f08b94d isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0xd492e959 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/it913x-fe 0xc3de3089 it913x_fe_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0x864721d2 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0xa5131ac6 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0x0ab6d0af l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0xae76c547 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0x49f94b67 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0x0f07147c lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0xe683e5b7 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x9d298bcc lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xde62d5c7 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0x822bc287 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0xd01dae9f m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0xd9d93e57 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0x21cfd367 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x069195fb mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0xca845a2a mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0xdf3e6eec nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0xe823998d nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0x5e44820b or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0xbf929e2a or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2830 0x2546ca6a rtl2830_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2830 0xeef66e74 rtl2830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2832 0x11b26f46 rtl2832_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0xbfe54e9b s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x506dbde2 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x07eca677 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x7fc32766 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0x0aa86f35 s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x834306ef si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0xfd22890b sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0x65be70d0 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0x88fbab28 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0x19a4344b stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x59982ae4 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0x456c3bf8 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0x92bb70db stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0xb3e850fd stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x6bddac40 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xb31e8c7d stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0xeffd4ac6 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x386dd8cf stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0xdef759ae stv090x_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x1009e8a8 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0x826605ac stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0x90c3e860 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0x710289e8 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0xf6c03958 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x3279a83e tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xe2153b2a tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0x1d65919e tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0xbd2288a6 tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0x0a52184b tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x41c95d8c tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0xc27e599d tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x63596f45 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0x3e744039 ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0x83b5bf06 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0x2e8fba31 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0x0b28b720 ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0xfa3b730c zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0x99175684 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x7c23ccb9 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x1f6eb29a flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x7d83b85b flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x95dee69d flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x9e8ee254 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xb32a0834 flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xbddc2da6 flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xeec88705 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x1b88dd1a bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x5ac64cb5 bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x824f81fb bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x9ccbc37d 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 0x389aec68 bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x51ddd46e bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x59bfb73a 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/dst 0x23eb9b16 dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x3fd71c22 dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x5761ee01 dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x57f1207b dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x799018c9 write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xa1f910f0 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xc07c2715 dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xc2891a64 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xf6f0a527 rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x08140b94 dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x0afbf926 cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x1d1e7903 cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x47dc587c cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x505287bb cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xb5b8cb06 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x2458f478 altera_pid_feed_control +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x406de46f altera_ci_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x9247b72f altera_hw_filt_release +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xb863d9be altera_hw_filt_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 0x45d63203 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x5be5c93e cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x76339e96 cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x766594d5 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x870b0098 cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc20b95ac cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x3da2cddd vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xe8c4f466 vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x66cea2e6 cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xa061cc5a cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xedfe3d37 cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xfbf3b3f7 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x1108a54b cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x20b23dcd cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x431c0020 cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x7e6c3bf9 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x8deab80d cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x9a8b8dc3 cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2200664c cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2a029fba cx88_risc_stopper +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3dd9d340 cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4235ba43 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4d731b1b cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5c090ff9 cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5e6040b3 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6a1c64e6 cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6a6ee76f cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6afc1139 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8f0c7645 cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa1040fd0 cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa6d641c0 cx88_free_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xbac67c93 cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc9044af1 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc97b833b cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd858f4a8 cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe1b5934b cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe1ed74ad cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe9629fb9 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf67a7d4e cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xffb5bd61 cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x0066d891 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x0174373c ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x04bbf5b2 ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x0948f35f ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x09afcd48 ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x1365940c ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x1e02b5c0 ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x1fba8f83 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x44f9758d ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x4804bfb4 ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x616649e8 ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x6fe7c780 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x8a65bf01 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb750db4d ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe24918fb ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe478d9ec ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe98e33f6 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1199f066 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x23cf42c4 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x2877a97b saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x50697368 saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x73039031 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x767a57c5 saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x8da48abd saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x9c921922 saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xc66d1ea2 saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xc9eeb250 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xeb45db91 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xf911881f saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xfa0bfb75 saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x0b0b429a ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x011a5ac6 videocodec_detach +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x629fc1bb videocodec_attach +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x8a5c8743 videocodec_unregister +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0xdbcc60d1 videocodec_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x17f6ae1b soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x1d060767 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x320037bb soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x42ca9746 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x4a66b10c soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x81164d55 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x853f259e soc_camera_unlock +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xac08064e soc_camera_lock +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xbfe638a4 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 0x5f3e3558 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xa9546115 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xfe2c3a07 soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x2283be61 soc_camera_client_scale +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x9e37abf1 soc_camera_calc_client_output +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0xc5162f32 soc_camera_client_s_crop +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0xc5210a56 soc_camera_client_g_rect +EXPORT_SYMBOL drivers/media/radio/tea575x 0x502e8133 snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0xb034fbb3 snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0xb74c52d5 snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0xf16ebbfb snd_tea575x_init +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x037047b0 lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x191be883 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x5739f25a lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x8ce58024 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x94e20a43 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xa2ab779e lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xd7fd1827 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xe1d93a2d lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/rc-core 0x38c0eb27 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0x50f619e9 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/tuners/e4000 0xc4733fd4 e4000_attach +EXPORT_SYMBOL drivers/media/tuners/fc0011 0xa50482b6 fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0xcb85c1a1 fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x1bc00291 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x42156337 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xa616a0d3 fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc2580 0xff6e3194 fc2580_attach +EXPORT_SYMBOL drivers/media/tuners/max2165 0x44b28af1 max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x9f2e7958 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x1067f739 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0x3b249f7d mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0x0183d53b mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0xe7c4b66c mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0xec6cf6ad qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18212 0x10a7b6a4 tda18212_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0xb617c9b4 tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tua9001 0xb75f3e90 tua9001_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 0x4cf8f95d xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/tuner_it913x 0xe78d2173 it913x_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0xaa6afa7c xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0x59a4ae34 xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x5f2da89c cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x86c372b4 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x0f680ad2 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x3f009748 dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x4083457b dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x537bb862 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x83246a45 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x91248ba7 dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xb474f148 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xc4ca7dbe dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xd4f267f3 dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x2ac70a6b dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x57deeb52 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x58a279fa usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x6c83f561 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x96730d86 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xe5792e44 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xf8dd14c9 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xe93b90ec af9005_rc_decode +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x00cdc96b dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x24ae55d5 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x2e4ecb16 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x8b671864 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x8bf845b7 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x92beacb8 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 0xce9b9fea dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xdb29e55d dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xea24346f dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xf7e64e38 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xfc6d0578 dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x2d1beced em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x938cf395 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x18bf0b3a gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x3a4be0c3 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x67f56bac gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x7f4e7430 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xc086a061 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xefc012ea gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xf2c33318 gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xfe356b43 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x1830dd19 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xa7d12bdb tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xbcabdfc1 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x4dd4e10d ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x6613e0c7 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x42c8e001 v4l2_ctrl_next +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x4adaf0f3 v4l2_ctrl_query_menu_valid_items +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x53c9394f v4l2_ctrl_query_menu +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x5f96a661 v4l2_ctrl_check +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x428442d3 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 0x751c37fc v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x889f7840 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x10d744a4 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x16f0bf08 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x248ab964 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x5c0381d4 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x939fafd1 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xb0d5b3de videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x25d1243e vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x01838e26 v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x054eb3fe v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x082f4460 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0df9a123 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0f9c0668 v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x102f02ca v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x113540b9 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x140e371b v4l2_of_get_remote_port_parent +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x183db368 v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b6ec72d video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1da2b8be v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1f2468c4 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1f5a83f2 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x27234988 v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2fdded55 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3788bd6d v4l2_queryctrl +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 0x3c7da3f7 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3db7f213 v4l2_of_get_remote_port +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3e687213 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3f4e164f v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4103b56c v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4382b2d9 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x441d141f v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4ea5b3e8 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4f6c2dd5 video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x50db62ad v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x514c06e5 v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6132180f v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x617a0a44 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x68b8d461 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6ea94a8f v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x71171861 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x74b9a9cc v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x77164aaa v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x77ed29d6 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7909bb3b __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7f923f2a v4l2_of_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x84f45072 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x940683c7 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9529d670 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9651e391 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x98122c83 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x99154b53 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9c013f20 video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9d940e4b v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa02d3f92 v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa4292a16 v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa519d1b3 v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa6ae9dc5 video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb90cbedf v4l2_of_get_next_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb97edad2 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb9c3302f v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xba3eac3a v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbac4a225 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbd1e89d4 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc12cf8f8 v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc1892701 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd453c20e v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd60f02dd v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd8f1df12 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xda432625 v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdb47e39c video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdbcf699b v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe25e1704 video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2865647 v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe55a78cd v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe6fce6f2 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xeb1b5772 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xedaf9f45 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf0492845 v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf82abd3e v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf99da1da v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfa13c2a6 v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/memstick/core/memstick 0x051ce7b1 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5079a326 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5b399d6a memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5b5c17c8 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x7219aeaa memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x7b1aa43b memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x888b0050 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x889fba8b memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8c9b5da4 memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8d8ed678 memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa5484fb2 memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xcf54e659 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xd800b921 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xd8b8a6c9 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0776cfcd mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x07cab63c mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1381dc30 mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1f1fb2e4 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2394fa07 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x35e4afcc mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3b526ca1 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x46fb4c43 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4d3ead89 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x54b45176 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x588015da mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x67742178 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x76cc0a67 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x79206a15 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x95acc6fe mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x98d3dd45 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9c86c65b mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa4c2ebe2 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa8bc5386 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xbee79e7e mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xcd8c77ec mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd0b0c4e3 mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd666793f 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 0xddc5b8a3 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe96f1f12 mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xeadc8238 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xedf5b57f mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf14aaee8 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xfa66f1cf mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0fe6c79f mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x114b19e5 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1f594191 mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2032e5e6 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x271917b0 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x289bc542 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3fa4f24a mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x479ffced mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x53f2f8d1 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5d25e8dd mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x672c3197 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x702804c2 mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x750d2b3b mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7cb73a39 mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x88111739 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8c57e2c6 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x946ca708 mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9a443dcd mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9dd7cef1 mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9decb4a7 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa0cf9827 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa9ecc599 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xac469d15 mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd441bb68 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe7a51dfd mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xeda4cf1b mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfce3cca0 mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x06842412 i2o_status_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x0882333f i2o_event_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x0d484a30 i2o_exec_lct_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x0d4beb87 i2o_driver_notify_controller_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x2a843bef i2o_dump_message +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x4dc235a2 i2o_driver_notify_controller_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x52774d5d i2o_driver_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x5c80b5de i2o_find_iop +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x81c27b34 i2o_parm_table_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x8d15a878 i2o_parm_field_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xa10ac951 i2o_driver_notify_device_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xaeccf54d i2o_msg_get_wait +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xb4c00dcf i2o_controllers +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xbf81a0db i2o_device_claim +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xc1133bd0 i2o_parm_issue +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xcc7f095c i2o_msg_post_wait_mem +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xd3d70974 i2o_iop_find_device +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xdbc47457 i2o_driver_unregister +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xe61fcb99 i2o_driver_notify_device_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xf3476e74 i2o_device_claim_release +EXPORT_SYMBOL drivers/mfd/cros_ec 0x38b1aed8 cros_ec_prepare_tx +EXPORT_SYMBOL drivers/mfd/cros_ec 0x3cac088c cros_ec_remove +EXPORT_SYMBOL drivers/mfd/cros_ec 0x5a5fe7b8 cros_ec_register +EXPORT_SYMBOL drivers/mfd/cros_ec 0xd571a63c cros_ec_suspend +EXPORT_SYMBOL drivers/mfd/cros_ec 0xdc526089 cros_ec_resume +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xa40ad1d7 pasic3_write_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xc29f5f14 pasic3_read_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x14015606 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x226c5e59 mc13xxx_irq_ack +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x335a1ff0 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x3682ee76 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x38e53ddf mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x6143a265 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x82590c3c mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x857f3334 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x8e27b305 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x9e676d0c mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xc82db687 mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xe0517df0 mc13xxx_irq_request_nounmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xe3209eff mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/tps6105x 0x5ffc6e9a tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0xbcb8245a tps6105x_get +EXPORT_SYMBOL drivers/mfd/tps6105x 0xe0e6969f 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/misc/ad525x_dpot 0x68a88921 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x8caa0a8b ad_dpot_probe +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x58765536 altera_init +EXPORT_SYMBOL drivers/misc/atmel-ssc 0x0c741473 ssc_free +EXPORT_SYMBOL drivers/misc/atmel-ssc 0xc3c52928 ssc_request +EXPORT_SYMBOL drivers/misc/c2port/core 0x86a0ecee c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0xfe6eb14f c2port_device_unregister +EXPORT_SYMBOL drivers/misc/ioc4 0x2b4b6f1e ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0xeac3e84b ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x142ee08f tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x39f86aa1 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0x4a603179 tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x6b3e42f8 tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x7ef30227 tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0x978032c6 tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0xa45155fc tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xb79d8aee tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xc39ade77 tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xdae4802e tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xe8dcc066 tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xf04d12e6 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xf60cb52b tifm_add_adapter +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0xb04734b9 mmc_cleanup_queue +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x08a24f9d cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x853d0df6 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xb8ec1932 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x212bb9d5 map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x276fbf2d unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x4ca247f6 register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xa1e788f7 do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x89b8a669 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x052c27c1 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x5d8eba2d simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x69814656 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0xe27560af mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/denali 0xc4d9db54 denali_init +EXPORT_SYMBOL drivers/mtd/nand/denali 0xe4a03f2a denali_remove +EXPORT_SYMBOL drivers/mtd/nand/nand 0x3fe186a6 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0x62c1cdc2 nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0x870b55c6 nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x90132852 nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0xdb9f51a7 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0xf549d97c nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x25e7cc6d nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x30f48e1e nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x8d1d9ef9 nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x744da024 nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x97c620e2 nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x57a31e57 nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x3979ffd1 onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x45c0c6f5 onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x71edc537 onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xe7d3e346 flexonenand_region +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x11b06d6e arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x2ffd9c28 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x3dce5a4b arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x3e3f7721 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x5638050b arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x5bcba362 arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x95eb9c8a arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xc2b95a2e arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xdec493d8 arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xf1a83a6a alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x3310c291 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x52d35233 com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x54f65d18 com20020_found +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x15410c00 ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x41727257 ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x54311311 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x6e58ee6c ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xacdcf231 NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xca6a7671 ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xd57a4583 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xf48d2be4 ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xf6d2e53d ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xf9a2d3d2 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x28c7870e cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x0bb18107 t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x182a2854 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x35356cd9 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x407ebbd8 cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x5daf9737 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x60950f29 dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x65786e52 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x822d35e5 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x9513f98a t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x9a785743 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xb583878c t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd65d6430 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe1eb9df3 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe6f3dbe2 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe8b84bbb t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xeda08a57 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x057417de cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1cebccb4 cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2c603ee6 cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3f9456b0 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4ed1cda3 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x54a20d01 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x57ab2248 cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x586ba806 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5dd772d2 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6cec7bef cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x70a10e32 cxgb4_enable_db_coalescing +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x74da50fd cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x81e00c08 cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x84ce48e1 cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x92d82312 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xabd14535 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xaf9f1804 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb4f1d64b cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbc0f0641 cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbe6f2d8e cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc1c9ade0 cxgb4_ofld_send +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 0xd4c27de7 cxgb4_disable_db_coalescing +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd91df101 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xde515cb1 cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe43689e9 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe815b215 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe8de34c4 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x0e712340 vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x235f4136 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 0xa9501ee5 enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xed66d55b vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x02d76d14 be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x7cb82516 be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbab62e22 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x06310c36 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x29e2eb61 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2f3a1a8c mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x32478b4d mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x354695ca mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3797f284 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5f393dca mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6b1b311f mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x728bfd08 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x74cc3496 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x76611e89 mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x77930e72 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x78a84d0c mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7ec524ab set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x87409384 mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x948fece1 mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9d259e3b mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb38bd913 mlx4_set_stats_bitmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb6771060 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc8ee4543 mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcd4c50c2 mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcfff77e4 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe64a6937 mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xee56ecd8 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf36527c5 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfb25fa89 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x073c370b mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0fbb5c66 mlx5_dev_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x227e7fff mlx5_dev_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4294594d mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x47e0ca31 mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x48aeb061 mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4cdce41a mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x60670bad mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6100dc2d mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x76714cf0 mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7a59831c mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7e3a6d47 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x94e63e73 mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9d441de8 mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xafee5ae3 mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb7c1cad0 mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbf0a50e8 mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbf8706ad mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc03f4bb4 mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd648ef0e mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe0219356 mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe0cc3d21 mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe6b00e13 mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe7e2ca55 mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf4a1bf90 mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf9bfa217 mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfb65253e mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x07424f5d hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x373c28b3 hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x3fbebece hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x43c6a0d5 hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x8dba381b hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x0ef028f2 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x4fd1ba4b sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x5bea866f sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x6203dcb6 sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xa0a4c4bd sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xa914cb62 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xbe5b6e06 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xd29ea0f6 sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xdf584f02 sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xee03c7f0 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 0xb34a7575 mdio45_ethtool_spauseparam_an +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mii 0x346ceabc generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0x47d1bcb3 mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0x4f06ae8b mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0x5838e431 mii_check_media +EXPORT_SYMBOL drivers/net/mii 0x7f12a90a mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0xb7aa832c mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0xccb43b5f mii_check_link +EXPORT_SYMBOL drivers/net/mii 0xecae272a mii_check_gmii_support +EXPORT_SYMBOL drivers/net/ppp/pppox 0x5a47eed1 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0x731b1bf9 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0x839dbd32 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0x66ac98cc sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x12ecd183 team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0x4caf5125 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0x5f531cc6 team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0x63ff12de team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0x7b2beb47 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0xad0f03c8 team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0xebc598c4 team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0xee3c458f team_options_register +EXPORT_SYMBOL drivers/net/usb/usbnet 0x14cde90f usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/usb/usbnet 0x5369094d usbnet_link_change +EXPORT_SYMBOL drivers/net/usb/usbnet 0x6bae5bd2 usbnet_manage_power +EXPORT_SYMBOL drivers/net/wan/hdlc 0x29d8295c hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x48a6deef attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x6e3fcc8a hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x6fa77c5e unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x73b19da2 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0x88437b83 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0xa5364a40 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0xacf4278a detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xc7c45d15 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xd764d537 unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0xfed69ccb hdlc_close +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x2951918f i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x58b22557 reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xe82b5a04 init_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xf02c4655 stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x2424ce72 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x38edca32 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4aa657d1 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4e2481d5 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x53358ce3 ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x8746bed6 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x914a83a0 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x95874c84 dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa8807ac4 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa8f14dec ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xb825f237 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xd701bbac ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xe987a638 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x11f96cd4 ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8246be6c ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x895f9dc2 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8edb3fa9 ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xa11f2ff8 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xaa986240 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xaf096710 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xafc1391b ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xd5571d23 ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x0199ec46 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x1c6e80da ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x23acbdf0 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x24ed9282 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x27cf1694 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4c6ddcb4 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4e1380ee ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x86013c19 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa91a492a ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb0d63426 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xca700536 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xeb9a9938 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xee71ac6a ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xf8c1be7b ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0x23559000 ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0x5fc63555 ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0x91fc76f5 ath9k_hw_wow_event_to_string +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0xf5714f82 ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x34b3436f ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x604e8c9a ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x661c54c0 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 0xd6a3d830 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0047cab2 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00fc5e32 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x01bc67a8 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0236fb68 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x03faf4ce ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x04f92c1b ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x089c6c01 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x09e353a0 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0ca204f4 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x12974e96 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x161f312d ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1bb5e387 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1def4f25 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1ffda9ce ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2152ea33 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x223c1f85 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x237d775d ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x25e70792 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x290ee086 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x29bfc058 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2f5d0a05 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x33829a40 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x33d328aa ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x35353143 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x35cacd30 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3816f12c ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4043c0b9 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x414d0fac ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x41d5bff2 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x43fb9f57 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x46dfbcb0 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4875c697 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4977d09f ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x49c1ce8a ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4c4b03ad ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x54851a30 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x56167728 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5b74b488 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5c7f06a6 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5cfa45bf ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5d66ae46 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5e0f3497 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x636c6256 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x63e46d03 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x64b20130 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x65484817 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x65a12817 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x67fdce20 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6d61691e ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6e7e20bb ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x70767233 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7277cd58 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x735e95d6 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x73866a0c ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x74a13773 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x774730b9 ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7f7007ca ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x825e34c8 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x82615de8 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8f064b64 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x923b3a99 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x931aebe4 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x943abaf7 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x948a1b71 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x97864d2e ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x99729fa7 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9b29c4d3 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa0f0302c ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa10b49e7 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa7ba5a70 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xabfadb2e ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xae63c637 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb2ba6bc0 ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb620cb10 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb78ce27f ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xba47905b ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbdfd73e6 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbee99642 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc4363deb ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc4916c56 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc619d24f ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc9024a22 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc9dd9cc1 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd1692cea ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdb76b5aa ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdd5a5879 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe1a45b21 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe1dc54ec ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe2c8160e ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe79cb2a7 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeaf457f6 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf0986567 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf27eb482 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf481ecb4 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf76c1b38 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfabaccaa ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfae449f3 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfeaac840 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/atmel 0x1bb07687 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0x5ee37dfb atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0xbaf867fa stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x11d10406 brcmf_sdio_remove +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0xa7837c87 brcmf_sdio_probe +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x0b4d905a brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x0c14af86 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x1e79313d brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x24b66765 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x2dc227f8 brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x5a968c2e brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x662a1c0e brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x70761d39 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x81fbe205 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x86a53479 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xae821e91 brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xb1de4372 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xc7382190 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd3392816 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x02cae19e hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x031980bf hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x036a6452 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0e587dee hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x19d9f54b hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x22d69d53 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x2a03504c hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x33b09910 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3a9e2949 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3c21e24e hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4ac9b86f hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5b100758 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5c9fefa4 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x759bbd94 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x83988407 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8b721585 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x992adf38 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x9ea7295d hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xae1e6be8 hostap_set_auth_algs +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 0xc246950a hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc55517cb hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc7bf3319 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe41dff39 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf42681ec hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf5acd05a hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x0de5c37f libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1614fa80 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x20195c19 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x2a00cbb4 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x4af579eb libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5466a515 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x65d71881 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x74eaf9ee libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x834b3516 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x85932702 libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x861b11a8 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x87f35f70 libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa75e6fb4 libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa9d1d662 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb04e65fe libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xbc796366 free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xbdb1f142 libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc09f0c24 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc17c951f libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd5afeb09 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xff2183ca libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0005f0ae il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x08c63139 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x08d0fc2f il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0e3f0156 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x11c3a1e8 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x14245eb2 il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x14fa30c6 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x173bae50 il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1970a3d6 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x19bfd37d il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1b4ed813 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1e108fd0 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1f340ce4 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1fb8ca9d il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x24f52553 il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x294850a2 il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2a1831c4 il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2e4a52c4 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x31031d60 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x31381257 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x31c7141a il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x33017f1f il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3319ee65 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x33b893d0 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x35bf877f il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3c766f28 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x40b5fac5 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x44939233 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x48ba0462 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4a92b89a il_tx_queue_reset +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 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x57f9dfed il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x595fc30f il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5af9340c il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5c6740f0 _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6423594a il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x69eadfab il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6d848abb il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6f1b1060 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7422e141 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x791c7cca il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7ab89e6f il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7c6883f9 il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7e0624b1 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x80711c1c il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x80da8371 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x812c50ab il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x85222571 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8b27ccd1 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8d4b742c il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8d6ea2a2 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8e670720 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8f7b7d57 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x912b7caf il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x948cab68 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x97d1fb71 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9adb56a5 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9b045796 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9be89e16 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9cc0e1d3 il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9e861ef2 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9f340e2c il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9fb9a795 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa2ebde2a il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa386528d il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa98e6cf9 il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb1de4a62 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb329f805 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb6bee73d il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb78497e2 il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb8998bd6 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb8cda543 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xba9f7712 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbaf12ad6 il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbd013fd7 il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc2418391 il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc52fd745 il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc6339efb il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcc503731 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcc92ea52 il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd1bdc047 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd2f0eac9 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdb2de370 il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdc684d4f il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xddfe1d8f il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe0e6cfc6 il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe1a9c1a0 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe9c65e57 il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xebcb7b79 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeec9df23 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeef092fe il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xefd0cb7e il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf1373369 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf258b04e il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf3bf0065 il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf7a2c6ee il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfc3b8564 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfe21514b il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfec94761 il_setup_scan_deferred_work +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 0x0e7bc05f __tracepoint_iwlwifi_warn +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x201337b4 __tracepoint_iwlwifi_dev_tx +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x249e4b06 __tracepoint_iwlwifi_dev_rx +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x36dcef55 __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x4919d1a5 __tracepoint_iwlwifi_dbg +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x67381a2a __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x79e9bf26 __tracepoint_iwlwifi_crit +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x7edec07d __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x8bfcc307 __tracepoint_iwlwifi_info +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/iwlwifi/iwlwifi 0xda36f3a4 __tracepoint_iwlwifi_err +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x0533a711 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x0e5ebb06 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x38fe0470 orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5dea5bf1 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x64a3334a orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x660d124e orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x69560c85 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x91244903 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xa298aa2a orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xa70fbb72 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xae3b25e5 __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb2ba4560 orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc2a1a55f orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc3791643 orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd00f5ea2 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xdcd233a8 free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xdd11d551 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/btcoexist/btcoexist 0x634dc100 rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x03170160 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0c72a876 _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0e863aa1 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1938f4cd rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x28935469 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x33eee452 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x34ff0304 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3bce3ea4 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3bd68be0 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3da0e39b rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x45d6a4bd _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4cc74706 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4fe65aa8 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x50ae77d0 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x52f74ddd rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5f998192 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x62682dfb rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x66158dac rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7e16d770 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7f76deaf _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x89c2d4fd _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8adf680d rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x94636674 _rtl92c_phy_dbm_to_txpwr_Idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa24b86f8 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa358f917 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xae6400d6 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xaf7d3fda rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb0111b54 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 0xbc5f90ad rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbe7ad0e2 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbf8849e0 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc198e74f rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc3175c28 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcc716e99 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd9411dba _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdb2052cd rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe07f82cd rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe4399925 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf62f9e9a _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf64726f3 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfd031af8 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x583ac288 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x6599d822 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x68256448 rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x95c4b426 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x007ea5f3 rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xcf832d50 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xd4c8d649 rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xe3b0c8c2 rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x276e9579 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x319ea209 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x3f322f41 rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x4cb4e453 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x60148066 rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6b3ef5ea rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6bad42a6 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6cffeb61 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x74176569 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x87b2f57b rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x99c6ba77 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x99dcbe8f efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xab4396ee rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb00e2ca1 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xbff7cb41 rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe544dbf0 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe560148f rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe6322e39 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xfcf9d806 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xfe27e30e rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x65c8ffa7 wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x68dc3166 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xd4b18195 wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xff2d3223 wlcore_tx_complete +EXPORT_SYMBOL drivers/nfc/microread/microread 0x491e4970 microread_remove +EXPORT_SYMBOL drivers/nfc/microread/microread 0xea0893c2 microread_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x9f0133e2 pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xae7b76d2 pn544_hci_probe +EXPORT_SYMBOL drivers/parport/parport 0x11e844b2 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x12095124 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0x136eaf5a parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x1438e717 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x226019c5 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x2e8bf2a8 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x30ec28d0 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x330d1025 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x37dc101b parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x3d63f8af parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x49137eae parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x4e6073b5 parport_read +EXPORT_SYMBOL drivers/parport/parport 0x5de134fe parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x6a47782a parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x6b414d00 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x7bd6dcce parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x7e93fe04 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x82e7ff0f parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x83f2c223 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x859b3db2 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x93d7a41d parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x9d26c0a3 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xac3e54fe parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0xba1660bb parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0xbf7fa00c parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0xc0e8b2f5 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0xc12f5db9 parport_release +EXPORT_SYMBOL drivers/parport/parport 0xded6c608 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xe0bfd659 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0xf9608b0b parport_write +EXPORT_SYMBOL drivers/parport/parport_pc 0x7f47fe31 parport_pc_unregister_port +EXPORT_SYMBOL drivers/parport/parport_pc 0x8bf44f43 parport_pc_probe_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x0ad15084 pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x1571ea50 pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x274ca658 pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x39963574 pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x50a17e13 pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x5da9517c pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x5dbefb66 pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x5ee899ab pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x6450610b pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x6596250d pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x6ac14a23 pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x70368c14 pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x7cd24691 pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x8ac93306 pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x92991e3e pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x957fad6b pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x9936b6d7 __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xcf773d53 pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xdf0542d7 pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x08ced9d8 pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x0d64e4db pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x175930c0 pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x4707e298 pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x4add8d3b pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x63a5cd5c pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x6953e380 pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x6b8f3744 pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x99c79757 pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xc16a79ac pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xc85a72b6 pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x52a442e2 pccard_static_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x8d19b956 pccard_nonstatic_ops +EXPORT_SYMBOL drivers/pps/pps_core 0x5726b09f pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0x89de20ca pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0xc7794a9a pps_unregister_source +EXPORT_SYMBOL drivers/pps/pps_core 0xdc179a35 pps_register_source +EXPORT_SYMBOL drivers/ptp/ptp 0x9b35be46 ptp_clock_register +EXPORT_SYMBOL drivers/ptp/ptp 0xa951f9e9 ptp_clock_event +EXPORT_SYMBOL drivers/ptp/ptp 0xc082f1ee ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp 0xf4c69e0e ptp_clock_unregister +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x04b450be rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x1d7c170b rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x30f26c8d rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x574e65de rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x6053bad6 rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x7682f7d9 rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xa898d201 rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xc0168fb9 rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xc8ff3601 rproc_shutdown +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x035e0f99 fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x23bdd553 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x33a93cfc fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x73007044 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xa970540c fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xb3029759 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xb9a4d4c7 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xb9e68bc2 fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xc245f9ec fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xd1913061 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xd27ff331 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xe284133a fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0008e9db fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0a99dae3 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0e75228d fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x16756c59 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1aeae38c fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x206676e0 fc_change_queue_depth +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x20ad20b3 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x20c20d67 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x23ab8447 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x28f8f828 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2fd66edb fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x30f4ed7a fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x35d7c0a5 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x38a995d6 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x39995866 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3f506970 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x50c4b090 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x53f4e398 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5aa71e3a fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5f31cd37 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x635d6a2b fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6519f810 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6a1d82b5 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6f1a4f06 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x72e73a92 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x77aa363e fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8015d959 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8e0abfd4 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8e11ad23 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x93dc8b08 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9d145961 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa2c9749b fc_change_queue_type +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa4dfd26b fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa9228d8f fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xac3bd6aa fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb03899b7 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb47021fc fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb7c96df0 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc0f57e67 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc63fe9f7 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc783c436 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc80a1dca fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc9f8e03f fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd09d18e7 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd294bf7e fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd69f500e fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd75567ff fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdff3a80a fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe5992f75 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe67f8c8b fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf52273c6 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf70fac40 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x0182e7ce sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x2a9ebc8c sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x6c0fe91d sas_wait_eh +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xb1c31f1f 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 0xb300e74c mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0f653901 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x11376a70 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x11c82eda osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1460c8c0 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x177128ef osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1ab472e9 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2472fa0b osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3bb155c7 osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4716cb4f osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x489bf9fa osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x520237b0 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5b210c2d osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5daa3ac7 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x613dcc27 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x62b9f82a osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6e865552 osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x714f0de1 osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x74b4c9d7 osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x76067a9d osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x806eebc5 osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x829a4458 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x87d634f1 osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8adc5ae6 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9aacf18d osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa599650d osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa7ccd27e osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa80d9d73 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc1c97371 osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc7eaac44 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xca905b9c osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd89bb300 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe02de2c7 osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf5dee667 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf6c93ec5 osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xfa45bbe2 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xfb46cf1c osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/osd 0x2348b129 osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0x52a89ef8 osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x704ffca3 osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x8b16907a osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xb661597b osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0xeb479e2b osduld_device_same +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x05ab2cb3 qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x13f9552f qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x2795bf91 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x2a700eb0 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x3e4d9ec2 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x55ffd305 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xb38b5b0a qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xc2c8b3f2 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xdf82c846 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xe9d97e11 qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xfad755ce qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x07c88c7a qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x707c8238 qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x74a90233 qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x77afe4b1 qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x8461350e qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xa3dae11d qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe76b3b20 qlogicfas408_get_chip_type +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xf2b95199 qlogicfas408_setup +EXPORT_SYMBOL drivers/scsi/raid_class 0x1681c03e raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0x991790a5 raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0xc85500dc raid_class_attach +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3498d50c fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x39a77fdc fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3d12a562 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x5b114d40 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x740f782b fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x78081b56 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x78505616 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x8d88a9f8 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x8fa5cc93 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb3f240d8 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xba0b8f61 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe2d83ea6 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe56a6f9e fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x062fde0c sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1e136c62 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2083e7d9 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x271e6b4d sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x30bb2d4e sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x381b5c6c sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x405e486e sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4d1a450b sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4db2f033 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5be444e0 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5e99d372 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x69a249fb sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6f28baf2 sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7740d7ec sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x89794f0c sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x97e81f9a sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9e8c9ede scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa44d5633 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xae35decd scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb64194ab sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb8ce90ab sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc4d9e81a sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xcf19ab27 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd2a71d7c sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe99a0638 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xefe94ccc sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf6c4e74c sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xfddde93d sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x4e380896 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xa7a7800b spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xd60b32d5 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xe7b26f09 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xf1c15493 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x29839c5a srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x8029bca9 srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x93d1aa0c srp_rport_get +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xdd7c21f7 srp_rport_put +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x32195dfc ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x52b911aa ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xc2bfab47 ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x08fce16d ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0x227c98ab ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0x3238c7b0 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x3ebf44f2 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x40da40a8 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0x5800bf45 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x58e482ca ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x60b223a6 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x74efd58a ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x7be20c30 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x7e83cee9 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x8eedf167 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0x8f3c42a4 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x9ed1da9c ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0xab0bbf70 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0xb2f49bd4 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xc20a4884 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xcc68cd90 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xcf413133 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xf41d390f ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xffe51a01 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xbe8b75cb fwtty_port_put +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xefc8a621 fwtty_port_get +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x5638ad16 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xa2573a50 adt7316_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x77b97d10 ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xc48ab209 ade7854_probe +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0062d64d lnet_kiov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x08572a03 lnet_finalize +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0bce7eef lnet_counters_get +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 0x1d536102 lnet_set_ip_niaddr +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1db7dea4 lnet_notify +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 0x21abe890 lnet_copy_kiov2iov +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 0x3558e584 lnet_iov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3c779ee0 LNetPut +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3e77b964 lnet_parse +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 0x4bb00492 lnet_copy_iov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x4f9cb871 lnet_extract_iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5811a721 LNetInit +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 0x60d406b8 lnet_copy_iov2kiov +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 0x660fc2ca lnet_copy_kiov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x6a75e60b 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 0x7d59a7fe LNetMEInsert +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x854ab844 LNetEQWait +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x885809b5 lnet_create_reply_msg +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x8a3064f2 LNetSetAsync +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9de986d3 LNetEQAlloc +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa8c2760b LNetFini +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 0xaeee1c73 lnet_register_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb36c156c lnet_set_reply_msg_len +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb75f7953 LNetEQFree +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb84241e9 lnet_unregister_lnd +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 0xd80eed5e lnet_net2ni +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xde3f36ad lnet_extract_kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf1b316bf LNetSnprintHandle +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xfa12f4bb lnet_connect +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 0x2c392598 seq_client_get_seq +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x375e6f8d LUSTRE_BFL_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x378b5c47 seq_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x3e40b35a seq_client_alloc_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x539ac7dd seq_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x76d8fd7b client_fid_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xa1a74a10 seq_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xae61cff5 LU_DOT_LUSTRE_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xc997a02f LUSTRE_SEQ_SPACE_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xce692a0b client_fid_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xecee2727 LUSTRE_SEQ_ZERO_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x17db3072 fld_client_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x31652225 fld_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x47963015 fld_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x9a957ece fld_client_proc_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xa2750cb3 fld_client_del_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xbd528e51 fld_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xfe778b14 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 0x03387ca6 cfs_curproc_groups_nr +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0389f857 cfs_cpt_spread_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x04d3ce6a lbug_with_loc +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 0x0ffb537e libcfs_sock_getaddr +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 0x12426266 libcfs_run_lbug_upcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x12c54b77 cfs_hash_findadd_unique +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 0x1d5a3928 cfs_timer_done +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 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 0x2b1e0458 cfs_get_environ +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 0x30986343 cfs_range_expr_parse +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 0x3834f243 proc_call_handler +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 0x3c360785 libcfs_kkuc_group_add +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 0x3ea730c0 cfs_gettok +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3ef0d90c libcfs_kkuc_group_put +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 0x41ab33a1 libcfs_ipif_free_enumeration +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 0x44f07cfc cfs_pause +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x468bace1 cfs_hash_rehash_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x47fdb4d1 cfs_timer_is_armed +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 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 0x4f9abb9c libcfs_sock_abort_accept +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 0x586a2ce4 libcfs_sock_write +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 0x5d3be65a cfs_crypto_adler32_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5d73c3e3 cfs_expr_list_free_list +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 0x62f56738 upcall_cache_init +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 0x66136d2d cfs_timer_arm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x67398404 cfs_wi_sched_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x686ead12 libcfs_kkuc_msg_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6991c99a libcfs_sock_listen +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 0x6dfa9ea1 cfs_crypto_adler32_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6e6af71c current_is_32bit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6f928e1b libcfs_debug_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x715770a6 cfs_crypto_hash_update_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7190502f upcall_cache_cleanup +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 0x75161168 upcall_cache_flush_idle +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 0x7a3d49ae cfs_expr_list_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7a47b94d cfs_hash_size_get +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 0x7c7986cf waitq_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7e6f6485 cfs_ip_addr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7fda989d cfs_fail_loc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8151c3aa cfs_cap_raised +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8286ffa5 cfs_percpt_lock_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x828d16a2 cfs_cpt_table +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x82cf70d8 libcfs_sock_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x83d795e4 cfs_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x841679dd upcall_cache_get_entry +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 0x8f12bb52 libcfs_log_goto +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8f45f10d cfs_init_timer +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x91504e8b libcfs_kmemory +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9307c187 libcfs_sock_setbuf +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 0x9cfd832a libcfs_sock_accept +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9f82f712 cfs_trace_copyout_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa1cbf250 upcall_cache_flush_all +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 0xa71cb694 libcfs_sock_read +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 0xa9dc74e2 cfs_trace_copyin_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9eae690 cfs_str2mask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xab887583 init_waitqueue_entry_current +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xac0f67e3 cfs_cpt_unset_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xad019238 cfs_str2num_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb00dfd91 cfs_hash_dual_bd_findadd_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb0df4b81 libcfs_sock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb473e79e cfs_wi_sched_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbab577e8 cfs_hash_for_each_safe +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbb9cb508 cfs_curproc_cap_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbc275420 cfs_cpt_unset_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbd5d492e cfs_timer_init +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 0xc2911d96 cfs_expr_list_match +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 0xc3eb614e libcfs_ipif_query +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc47433a6 cfs_capable +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc4809634 cfs_hash_debug_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc49b1c62 cfs_percpt_atomic_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc9b78bb4 upcall_cache_downcall +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 0xcbab8493 schedule_timeout_and_set_state +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 0xd9541990 cfs_strncasecmp +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd96f406d cfs_cap_raise +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xda11fba3 libcfs_sock_getbuf +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 0xdf2789c0 cfs_curproc_cap_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdffc951d cfs_timer_disarm +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 0xe6555032 libcfs_ipif_enumerate +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe7b54314 libcfs_arch_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe94553b9 upcall_cache_flush_one +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 0xedf3a25a cfs_timer_deadline +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeed48ba7 cfs_hash_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xefbf6d86 upcall_cache_put_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf0246bf2 cfs_cpt_table_print +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 0xf8efb8c5 waitq_timedwait +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf94025d1 libcfs_str2lnd +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfa0d98ca cfs_cpt_set_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfacb8667 cfs_hash_getref +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfcb653a4 cfs_hash_debug_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfe565fa9 cfs_crypto_hash_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xff0f98a6 libcfs_debug_vmsg2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x0cb46e9e ll_osscapa_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x5533f46f ll_iocontrol_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xc0dfad9a ll_direct_rw_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xcd3cde92 ll_iocontrol_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xed9f211b ll_stats_ops_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x0467dfdf lov_read_and_clear_async_rc +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x1fcc81d9 lov_device_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x27095531 lov_stripe_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xa288d560 lov_stripe_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xae46e098 lov_lsm_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xb17bf37b lov_lsm_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x24e1671d lprocfs_counter_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x3bcbdc4b lprocfs_stats_alloc_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x3f83bcec l_dentry_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x4d8d6dfa lprocfs_counter_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x682adca6 fsfilt_unregister_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x6b01e7bf fsfilt_put_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x8553b369 obd_memory +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xa9b0cc62 lustre_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xb4f8ee63 lprocfs_read_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xd0ef6107 push_ctxt +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xd9b052ee pop_ctxt +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xdec5ad03 fsfilt_register_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xefec2125 fsfilt_get_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x14a47f31 it_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x9c22b84f it_open_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0xb57d8447 it_set_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0xf46a886f it_clear_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mgc/mgc 0xdc287f95 mgc_fsname2resid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0041db12 cl_page_list_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x00f43447 cl_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01445dee cl_io_submit_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0161e4d3 lprocfs_free_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01665e34 class_parse_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x027c9095 lprocfs_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x02e52390 cl_page_list_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03267ba3 cl_env_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x035852d0 lustre_swab_llog_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x038ae223 cl_2queue_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03ea4dc2 cl_lock_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x04ec6185 cl_lock_closure_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x057f6d4b class_find_old_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05a2f124 lu_context_key_revive +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 0x06092767 lprocfs_nid_stats_clear_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x06d00968 cl_io_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x072e0407 lustre_in_group_p +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07aa68bb lustre_swab_lustre_cfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0836daca lprocfs_register_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x083942ff class_del_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0917c6a6 cl_env_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0a08167f cl_lock_enqueue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0a8524fd lu_device_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0a934527 class_config_llog_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0adbd7a2 class_exp2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0be25526 cl_page_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0bfd1e03 class_fail_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c27c7c2 cl_page_list_move +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c3fc78c cl_lock_hold_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ca0b5a7 class_conn2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0cf99bff dt_acct_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d07d864 cl_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d49d705 class_connected_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ea95cdc dt_index_walk +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0fe91547 obdo_to_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x102f372f class_put_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10925c66 cl_page_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11495519 lprocfs_write_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1179b024 cl_lock_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x117f74a8 cl_sync_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11c40190 cl_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11d9491c lu_cdebug_printer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11fba7e3 llog_osd_get_cat_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x13695502 lu_object_invariant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x147525fc cl_object_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1491dc30 lu_context_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1538a9bd cl_lock_modify +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x15a286c0 cl_env_nested_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x15ebc3f7 cl_env_unplant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16441c19 cl_io_is_going +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16ee8d30 cl_page_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x17260880 obdo_cpy_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x174896cb cl_req_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x17a9ef6c lu_dev_add_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x17d9d2b3 llog_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x182ef644 lu_site_purge +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x19c14337 lprocfs_wr_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1acacd03 class_disconnect_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ae97f0c class_conn2export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1bf029bf cl_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1d2b8ff3 llog_cat_init_and_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f25a868 capa_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x200d53b1 lu_device_type_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2025a9f2 cl_lock_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2037ab77 class_incref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x211e36b3 lustre_idmap_lookup_uid +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 0x2228c14e class_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x23aeb71c cl_page_list_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x23cdee6f cl_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x24756b54 cl_lock_mutex_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x24f8cb27 cl_io_sub_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x252a6079 cl_lock_state_wait +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 0x26466962 cl_enqueue_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x26dd88cf cl_page_list_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x275cdc7a cl_env_reexit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x27dcb129 obd_llog_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x27de3c5c dt_lookup_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x28cd039e dt_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x28de37a3 lprocfs_rd_timeouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2911668d dt_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x297cf5e0 class_handle2object +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a87a254 lustre_register_kill_super_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ae1cd79 kuc_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b2d109d class_export_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b4c48e9 server_name2svname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ddc4962 cl_page_cache_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2e067deb cl_lock_mutex_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2e0e5dea cl_2queue_init_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ec006ac class_devices_in_group +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x30ae7885 cl_io_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x31c22a2b dt_txn_hook_commit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x31db7f93 cl_env_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x32c7180e cl_object_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x333e4fd4 class_config_dump_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x336c2b65 cl_req_page_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x338432ff lu_env_refill_by_tags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x33bf83d9 obdo_refresh_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3522be6b cl_io_iter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x35f21220 cl_io_lock_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x369c4c6e lu_object_locate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x370aa605 lprocfs_free_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37b0340b cl_io_prepare_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37ba8daf cl_conf_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37ed6e4b at_early_margin +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x386446c1 cl_lock_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x386e2d67 class_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38c08f79 llog_init_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38fb0c90 class_match_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x395d07d9 capa_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3961371d class_unlink_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x39a3d98d cl_2queue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x39c8580f class_handle_hash_back +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a000ca7 cl_lock_descr_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a005065 dt_otable_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b6642bc cl_io_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c37a4b7 lustre_register_client_fill_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c64c1cb cl_req_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3da2aa39 lprocfs_alloc_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f612cf3 cl_page_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x400b6bad class_detach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x404bd7a7 class_handle_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x40771a52 dump_lniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x40aecc2d cl_lock_extransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x40e2c68a lprocfs_seq_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x420c7e34 lu_device_type_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x444aa566 class_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44e41abb lustre_posix_acl_xattr_filter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x455f32e9 cl_io_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x46257859 cl_lock_is_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x474ed5bd lustre_swab_ll_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4767002d cl_page_list_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47b35f7d statfs_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47f500e6 lu_object_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x483113e3 cl_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4868617f cl_lock_disclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x48808fe2 cl_io_loop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x48ae0a0b obd_export_evict_by_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4936ccec cl_lock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x493f7876 cl_page_find_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x494cfb52 lustre_acl_xattr_merge2ext +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x495920e7 dt_record_read +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 0x49b1d992 lustre_end_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4a65f0e0 lprocfs_exp_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ac58713 obd_connect_flags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ac8bedb cl_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4bd60afd llog_obd_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4bf356ca lustre_idmap_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4cc0140f llog_declare_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d13458b kuc_len +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d4d7730 lu_object_anon +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4de36f3c lustre_idmap_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4eb0e16b lu_context_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f318417 cl_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f8e89b3 cl_lock_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4fba4346 dt_directory_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5022d773 cl_2queue_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5028d0e2 cl_object_attr_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50c7fc36 ptlrpc_put_connection_superhack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x51ba8d5a local_file_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x536f6216 lu_context_key_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x53999e2b lu_site_init_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54879ef3 cl_page_list_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54885f87 ldlm_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54944b40 obd_exports_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x558bec27 obd_ioctl_getdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x55ff92df cl_lock_enclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x564e9d44 init_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x56c3e456 local_object_unlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x570d09ae lustre_swab_lu_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5719864a cl_page_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x58579173 llog_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x585dd1c0 class_new_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x58775133 class_uuid2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x589ba1e9 obdo_from_iattr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x59342810 llog_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5944c40a __llog_ctxt_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5953bbeb cl_sync_io_note +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x597d2909 llog_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a0082a0 lprocfs_alloc_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a20d896 obd_memory_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ab0113c llog_osd_put_cat_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5aebf4b1 llog_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b2ac1a2 lu_context_key_revive_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b6e5277 lu_context_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b844365 lu_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bc022c5 lprocfs_dt_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bc1c8d8 class_import_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d13696f cl_lock_weigh +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d34ae0d cl_lock_mode_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e93341f lprocfs_oh_sum +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ebdce53 dt_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ed188a9 lprocfs_add_symlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ed9558c cl_page_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5f1f5104 cl_lock_ext_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fe97b73 block_debug_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x600a150e dt_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x601a5a33 llog_cat_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6073ed6f cl_io_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x60d58e17 llog_declare_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x60da5f71 cl_io_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x610f363b dt_declare_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x61920300 lprocfs_alloc_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x624ffe24 lprocfs_counter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631a518d mea_name2idx +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631fd7b9 lustre_ext_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x635eeb77 llog_declare_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63e3d72a cl_req_page_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x648a7f66 lprocfs_free_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x653ddd0a llog_osd_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x654a79e8 obdo_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x656bfcce dt_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6677fe0b cl_object_glimpse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x672f4f5b llog_open_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6734adbd lprocfs_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x677fd7f9 proc_lustre_root +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67977b42 lprocfs_remove_proc_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67a90622 la_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67ca8c32 cl_env_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67dc223a lprocfs_remove +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x682d11fd cl_page_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6890d175 lustre_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69c42114 at_min +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6a2b54a1 lu_context_key_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6a36a8ab cl_env_implant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6a9362a8 lprocfs_init_mps_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6ab15ea2 obdo_to_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6ad7f6c8 class_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6aee1885 cl_lock_user_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6bb6d421 lu_buf_realloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6caa4fc2 cl_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6eb95b7f local_oid_storage_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f3e6225 dt_quota_slv_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f80bf15 cl_io_lock_alloc_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x70187ade cl_page_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7075b646 llog_cat_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x707f1cbc cl_object_has_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x709a6fde class_process_proc_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x71048e3e cl_lock_closure_build +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x71b8d77e lu_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x71ebb7c3 llog_cancel_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72188345 dt_store_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72a87544 lu_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72ddee4c obdo_le_to_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x73bd8ec6 lprocfs_rd_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x742559b1 class_unregister_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x744b2b5a class_new_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x74cb3712 cl_pages_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7519f618 lprocfs_init_ldlm_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x752147fe lprocfs_rd_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x752942df lprocfs_rd_import +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 0x75817737 lprocfs_rd_server_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x75ff1c60 class_disconnect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x769d65f1 cl_page_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x76a93f94 cl_req_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77afffcb cl_lock_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77b60d2c cl_page_vmpage +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 0x78814c78 cl_page_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x789796a1 obd_zombie_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7a802ebd cl_page_is_vmlocked +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7abc7db9 cl_object_attr_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b1d726b cl_page_is_owned +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b4fc57b at_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b927d16 class_config_parse_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7bc12d2a lprocfs_init_ops_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7c50636a cl_page_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7cc7b3ee lu_kmem_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7d9716e5 cl_lock_signal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7dc63203 dt_txn_callback_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7df0cbd7 cl_io_rw_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7e005d63 lprocfs_obd_rd_max_pages_per_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7ed3aef7 dt_try_as_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7edcafa0 cl_env_reenter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f0ea3ad lprocfs_rd_kbytestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fad7291 raw_name2idx +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 0x81568fec lprocfs_free_per_client_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81742d89 obd_ioctl_popdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x82626430 llog_exist +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x829f96e8 dt_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x82d2cd32 class_search_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x830f5080 iattr_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x831f656c class_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x834610d9 lu_context_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8432c146 llog_cleanup +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 0x84e6d49e dt_index_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x852194a4 llog_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x854075aa obd_export_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x86f9cb53 cl_page_make_ready +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8755e3b2 local_oid_storage_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x88007b7f class_conn2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8852857e cl_object_kill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x886360ab lu_context_enter +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 0x8a2c4ae2 cl_wait_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8a79c761 llog_cat_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aa2c358 lprocfs_dt_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aa39db7 cl_page_gang_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b5f4057 lu_context_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ba6e479 lustre_swab_lu_seq_range +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8bc9a925 lprocfs_rd_conn_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8cff0059 lu_object_assign_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d658ed0 capa_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e79b460 lu_context_key_quiesce +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8eaa830b obdo_from_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f202345 cl_page_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f257b4b lprocfs_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f67314c obd_dump_on_eviction +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90cfc50a cl_use_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x912c711c cl_page_list_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x914ecf80 llog_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9152972b cl_lock_get_trust +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9164c008 cl_2queue_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9293af5d class_import_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92e58479 obd_dump_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93859814 lprocfs_oh_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93b46468 lu_session_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x940dddfd dt_record_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9505c895 lustre_idmap_lookup_gid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9512d507 lustre_acl_xattr_merge2posix +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x953d6568 class_export_put +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 0x95757aa6 cl_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95ec998a lustre_groups_sort +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95f10e19 cl_page_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9767adce class_uuid2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97a0d67a lprocfs_rd_numrefs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97d03783 at_history +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x98e2c3e0 cl_unuse_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99266602 lprocfs_rd_u64 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99f95929 class_disconnect_stale_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9a5d534c obd_devs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1ed9d8 obd_jobid_var +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9c15ec83 lu_object_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9c5cba5f lprocfs_rd_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9c8d9834 lu_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9cd0342a cl_page_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9d4e2b7e cl_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dbb17b6 lprocfs_dt_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9e6f0245 lprocfs_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9ec87aec cl_lock_discard_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f25be95 cl_io_iter_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa062d764 lprocfs_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa147a85b dt_txn_hook_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa1a0a392 cl_lock_at_pgoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa21c5ea1 obdo_from_la +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2517e55 lu_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa25df60e cl_req_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa271589b lu_object_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2c7e6f4 cl_vmpage_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa338b0d2 dump_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa3a412ee llog_cat_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa48c4a30 lustre_idmap_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4cca1bd class_name2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa513f7e4 lustre_groups_from_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa534b3b3 cl_page_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa59c35e6 llog_cat_cancel_records +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5a5660f cl_page_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5ed0bf7 lu_kmem_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5fb234f lprocfs_write_frac_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa6354061 llog_copy_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa674c241 kuc_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa677456d llog_thread_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa8299204 llog_cat_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa88b32e4 cl_sync_io_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa90dc185 lu_env_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa9806e44 md_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa21b7a0 lustre_register_quota_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa77b3b6 llog_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaac3cf4b cl_2queue_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabf45922 capa_decrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac1c4377 class_manual_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac7f1596 kuc_ptr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaca55c5c cl_page_list_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xad083753 lu_object_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xadb32694 lu_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xae5de332 cl_type_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb01963a6 class_uuid_unparse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0b0af60 cl_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0ba0c82 lu_context_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0fb9886 cl_lvb2attr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1435668 cl_lock_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1654ad9 cl_page_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b89b6d class_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1e5af75 lu_ucred +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb2fe6b3f cl_page_clip +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb41998cd lustre_cfg_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb46dd373 cl_lock_closure_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb5175d3c cl_page_assume +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 0xb7a9df96 cl_unuse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb884d431 class_num2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb914039e lprocfs_wr_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb94969c4 lustre_common_put_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb9bda70a lprocfs_rd_kbytesavail +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 0xbb9010e0 cl_lock_unhold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbbabb6a1 cl_page_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc597ef3 obdo_from_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbcee1990 cl_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbd66ce1a cl_env_nested_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbd86c94d cl_page_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbee2b461 class_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf724000 cl_lock_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbfa8b086 cl_2queue_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc02046fa class_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc05cf215 cl_object_attr_get +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 0xc114a5d0 class_exp2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc22a00cb cl_locks_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc2b5636a llog_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc3af28f2 cl_io_read_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc421311f lprocfs_rd_connect_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc48c04cf lu_object_find_slice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc53b48a8 cl_queue_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc6370930 lu_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc64f9188 llog_cat_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc6983c8c llog_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc6cd85e2 dt_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc7e600ed cl_lock_hold_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8dbaa87 lustre_swab_cfg_marker +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc980eac3 lu_env_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9b3c667 dt_lfsck_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9c819a7 cl_object_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xca4f2091 dt_locate_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0ab67f obd_max_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcc658690 cl_io_submit_rw +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcc65f943 cl_page_is_under_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcc8b43ce llog_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcc915b1a cl_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xccf7a8de obdo_cpu_to_le +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd7537ee get_devices_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd7bf8e0 class_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd8a604e lu_buf_check_and_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcdeaaeb4 llog_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcedb140a obdo_cmp_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcf611fc6 llog_cat_declare_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd08827c0 server_name2fsname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd09b9184 lu_dev_del_linkage +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 0xd1b1478b cl_attr2lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1d09de9 lu_context_key_register_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1de6d15 lu_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1f58645 lustre_swab_llog_hdr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd20adf89 lprocfs_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd2778031 cl_io_rw_advance +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd37960a8 cl_lock_user_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd3de6b49 cl_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd40f86e7 local_index_find_or_create_with_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd463da03 lprocfs_add_vars +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd47ab950 lu_object_find_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd70fe669 lustre_swab_llogd_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd74c4b51 lprocfs_obd_setup +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 0xd823b728 cl_lock_hold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd9a5b59f capa_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda424846 cl_page_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda4ba666 lprocfs_rd_num_exports +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 0xdad038ef lustre_process_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb13dce1 capa_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdc776114 cl_object_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc40af0 class_check_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd2b2143 lu_context_key_quiesce_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd78c0c7 lu_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdda3d949 class_handle_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xddcc9924 cl_page_own_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde7d985b obd_dirty_transit_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe028cf84 capa_encrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe0a172dd lprocfs_exp_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe12d7d7a cl_io_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe136505f cl_page_list_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe1446964 lu_env_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe1729429 llog_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe1e979db cl_req_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2eb4470 class_get_next_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe3323f5d class_handle_free_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe374d77a lprocfs_at_hist_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe40ee2ce lu_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe5757d54 lprocfs_rd_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe693d7d2 llog_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe6cfb5f3 cl_io_commit_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe6d8afc6 lu_context_key_degister +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7218a52 cl_page_unassume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7d83236 cleanup_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe83f182b cl_lock_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8e84c32 class_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xea01dccc capa_cpy +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeaa2d666 lu_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeacec47c lprocfs_oh_tally_log2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeb3f388a _debug_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeb7c06f6 lu_context_key_degister_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xebe673fd cl_offset +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec0ae0d0 lu_object_add_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec76847f lustre_idmap_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec7d6b85 obd_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xecb86345 cl_lock_mutex_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xecc662b7 lprocfs_obd_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed4a1f95 cl_page_list_splice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed8adc28 lu_object_put_nocache +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee68bc29 lu_session_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee852c80 cl_io_end +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 0xef8dbdc8 lprocfs_nid_stats_clear_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf01e2527 server_name2index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf05337a6 cl_lock_is_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf0695c57 obd_export_evict_by_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf0acfd2f dt_store_resolve +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf14d3321 class_register_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf178189d lu_device_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2623bba lprocfs_single_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf26dd8bb lprocfs_add_simple +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2fd6695 statfs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf30c7ed5 lprocfs_seq_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf41f0c9c cl_lock_descr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf44e8b5f cat_cancel_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf45bde6f obd_llog_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf490d5f9 class_del_profiles +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf4bda90a dt_version_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf501abdd lprocfs_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf5773720 lu_ucred_assert +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 0xf70e17d7 dt_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8050f12 dt_txn_callback_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf85e1c61 local_index_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf874c950 dump_lsm +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf89b7130 class_find_client_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8c2df92 obdo_set_parent_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf9b2df6e lprocfs_rd_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa118b46 cl_lock_nr_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa813d06 capa_hmac +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa88f2c4 lprocfs_rd_filesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfb6b0c5c lu_site_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbea0098 lu_types_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc5794fe local_file_find_or_create_with_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc7f18d0 obd_pages_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfce4103b lu_object_header_init +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 0xfe16597e lu_ucred_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfed08c13 dt_txn_hook_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff57e92d class_match_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xffcf6502 llog_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfffc1f11 lustre_swab_ost_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/osc/osc 0x5c4940c2 osc_update_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00baffec lustre_pack_reply_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00c342a4 llog_origin_handle_cancel +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 0x01e3f9f7 ldlm_enqueue_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x02db52bd ldlm_pool_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0397be83 sptlrpc_lprocfs_cliobd_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x03cb5236 ptlrpc_request_alloc_pack +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 0x05683314 lprocfs_wr_evict_client +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 0x087685ee _ldlm_lock_debug +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 0x0b5d991c sptlrpc_conf_target_get_rules +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0bcacb5d RMF_MDS_HSM_USER_ITEM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0bdb906e ptlrpc_init_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0c0a6031 ldlm_lock_downgrade +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 0x0ef1e479 ptlrpc_lprocfs_brw +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0f6fe316 sptlrpc_import_flush_my_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0f9a332d ldlm_glimpse_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1011c117 sptlrpc_cli_unwrap_bulk_write +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 0x13389a4d req_capsule_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x13acadaf ldlm_resource_unlink_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1474440e ldlm_pool_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1483eca4 ldlm_lock_addref_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14b44295 do_set_info_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14d192db lustre_msg_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1555d141 ptlrpc_pinger_sending_on_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x155d6279 ptlrpc_lprocfs_register_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15a3e4db RMF_GETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x172fb86d lustre_msg_hdr_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1747d8b3 ldlm_lockname +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x17950f60 RQF_SEC_CTX +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x17f922c4 ptlrpc_save_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1805ffc0 ptlrpc_queue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19108a0f RQF_OST_DISCONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1924a50b llog_origin_handle_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19692d56 ptlrpc_set_add_new_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x196a2cb0 ptlrpc_request_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19b577be ptlrpc_retain_replayable_request +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 0x1bae0270 interval_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1bb8e720 ldlm_cli_cancel_unused +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1be21715 lustre_msg_size_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1be42c3f ptlrpc_unpack_req_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1c300d8e lustre_msg_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1c8c25c5 ptlrpc_service_health_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ce364f6 sptlrpc_import_sec_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d043548 lustre_msg_set_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d74b3a2 ptlrpc_recover_import +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 0x1f07fd6d ptlrpc_cleanup_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1f948470 ldlm_lock_allow_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2027bf01 client_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2096f5b5 RQF_OST_SET_GRANT_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x209c094c ldlm_prep_elc_req +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 0x233790b5 RMF_OST_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x234e79c7 ldlm_cli_update_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x24379117 ldlm_namespace_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x243c6991 sptlrpc_enc_pool_put_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x244e5558 lustre_msg_get_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x24aafdba RMF_MGS_TARGET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2585a629 RMF_SEQ_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2587513c RQF_LDLM_CP_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x269554ce RQF_LDLM_INTENT_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x26c47a87 llog_origin_handle_prev_block +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 0x28cf74fe ldlm_lock_fail_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x28e4ec9e sptlrpc_cli_ctx_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x29e0869a sptlrpc_get_hash_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2a63a472 lustre_swab_ptlrpc_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2a69b1c1 req_capsule_field_present +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2adf7095 ldlm_init_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2bd5602c ldlm_lock_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2c00c60d ptlrpc_sample_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2c043938 ptlrpc_set_add_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 0x2d7a65a6 ptlrpc_nrs_policy_register +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 0x2eecc24c ptlrpc_start_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2efbf7f4 ldlm_lock_allow_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f0e4f87 RQF_OST_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2fd2f737 lustre_msg_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x300231bb ptlrpc_activate_import +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 0x312b1054 ldlm_extent_shift_kms +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x314719f5 req_capsule_client_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31710e50 ptlrpc_hpreq_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31838cb4 RMF_IDX_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x318a4c57 ldlm_pool_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31ec4459 ptlrpc_reconnect_import +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 0x343e5961 req_capsule_server_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3532466d ptlrpcd_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x353ce1a3 ldlm_namespace_new +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35939a3d lustre_swab_fiemap +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35affd26 ptlrpc_lprocfs_unregister_obd +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 0x3896ba40 ldlm_pool_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38aa2c3e ptlrpc_request_alloc +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 0x3a1539dc ptlrpc_request_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3a1e4bcb __lustre_unpack_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3aa09e87 ptlrpc_req_xid +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 0x3b17ab28 ptlrpc_req_finished +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 0x3c17f8e0 ldlm_cli_cancel_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c63e62b RQF_MDS_REINT +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 0x3dddb3e2 dump_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3e4bb120 ldlm_cli_cancel_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ee08801 ldlm_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ee4579b ldlm_pool_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f034caf lustre_msg_get_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f32967a sptlrpc_sec_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f752e78 RQF_MDS_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f8e0919 sptlrpc_cli_wrap_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41008cef RQF_LDLM_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x422881c5 req_capsule_extend +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 0x456e14da ldlm_pool_init +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 0x47cf9883 req_capsule_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47f5e903 RMF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x486499d8 sptlrpc_gc_add_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x48814c9f lustre_swab_ost_lvb_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x48b3ea05 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 0x49a8569c sptlrpc_register_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a5a2416 RMF_DLM_REQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a842b92 ldlm_reprocess_all_ns +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4b09ce4b lustre_swab_mdt_rec_reint +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d7580d0 lustre_swab_hsm_user_item +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e051ab1 ldlm_namespace_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e1706e5 lustre_msg_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e3ae76f __ptlrpc_prep_bulk_page +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 0x4edc2a99 ptlrpc_invalidate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f3854ed client_disconnect_export +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 0x50f94750 lock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50f9c95f llog_origin_handle_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5186f5ba ldlm_lock_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x52c62150 RMF_RCS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x530d5365 ptlrpcd_wake +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x53411557 RMF_DLM_REP +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x535edb90 ldlm_completion_ast +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 0x5795960e client_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x588035b4 RMF_UPDATE_REPLY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x58d2ce4b target_print_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x590208c6 ptlrpc_check_set +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 0x59ca398b ptlrpc_add_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5a057439 interval_search +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5a0f02bc ldlm_resource_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5a6498ea ldlm_prep_enqueue_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 0x5c6a3a83 RQF_SEQ_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5caae213 ptlrpc_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ce90eb2 ptlrpc_obd_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5db8e062 ldlm_blocking_ast_nocheck +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 0x5ef813f7 ptlrpc_disconnect_import +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 0x5fb1b264 ptlrpc_commit_replies +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x60158b6e ldlm_destroy_flock_export +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 0x61015263 sptlrpc_req_replace_dead_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 0x620ff8ce lprocfs_wr_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x62192cf8 dump_obdo +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 0x6410e22c target_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x647b6e48 lustre_swab_ldlm_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x64dedd65 ptlrpc_prep_bulk_imp +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 0x672cb02f ldlm_get_enq_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x67b192ba llog_client_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x682542ac ldlm_resource_iterate +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 0x68d6cce5 req_capsule_server_get +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 0x699a90f3 req_capsule_server_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x69b2ad82 sptlrpc_gc_del_sec +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 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 0x703538e4 lustre_swab_hsm_current_action +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7092a1f6 ptlrpc_buf_need_swab +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 0x7287b6c0 ldlm_pool_get_lvf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x72d4a19e ldlm_lock_fail_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7313e919 req_capsule_other_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x73e4e5c9 ptlrpc_add_rqs_to_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x73f5edab client_import_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x740930ae sptlrpc_sec_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x74840056 lustre_msg_set_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75748442 req_capsule_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75a2c40d ldlm_put_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75c02f05 ptlrpc_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x76b728e5 lustre_swab_update_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x76d5e544 client_import_del_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77571cc6 lustre_swab_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x776d3826 ldlm_lock2desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77840c82 sptlrpc_rule_set_choose +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7865d3a8 req_capsule_set_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78bf9136 lustre_swab_ldlm_lock_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x79256267 sptlrpc_target_export_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a832f10 RMF_CONN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7aa0cb6f ptlrpc_unpack_rep_msg +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 0x7c1aa26a req_capsule_server_sized_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7c4c6107 RQF_LDLM_CONVERT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7cb3782d llog_initiator_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d1ecd7f RQF_LDLM_INTENT_LAYOUT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d34cea3 ptlrpc_wake_delayed +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 0x7ea2acbc ldlm_register_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7ed31351 ptlrpc_prep_req +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 0x80a7a923 ldlm_blocking_ast +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 0x811610d9 req_capsule_server_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x817d7f1f lustre_msg_add_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x823457d8 ptlrpcd_alloc_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x826d3c4f RQF_LDLM_GL_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x832f2f4d ptlrpc_buf_set_swabbed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x837efb00 RMF_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8408cfab ptlrpc_req_set_repsize +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x843aeeb3 ldlm_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x84612c01 ptlrpc_send_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85135801 RMF_DLM_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x859ac471 ldlm_flock_completion_ast +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 0x8622f616 ptl_send_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x863db6eb RMF_HSM_USER_STATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x867c3f0c lustre_free_reply_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 0x87ff2afb ldlm_pool_fini +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 0x894ff085 ptlrpc_fail_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x89f9edf7 RQF_MDS_REINT_SETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a1ea476 lustre_swab_hsm_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a257736 RQF_MDS_HSM_STATE_GET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 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 0x8aebf638 sptlrpc_target_update_exp_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b72fadd req_capsule_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b854254 lustre_swab_mgs_config_res +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8c54adc7 ldlm_resource_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8cb71d4b RQF_MDS_REINT_CREATE_SLAVE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 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 0x8dbf6274 sptlrpc_unregister_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e17622a client_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e9abe4d RMF_GENERIC_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8f0aceac RQF_MDS_HSM_ACTION +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8fec0451 lustre_msg_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x919c4ce3 RMF_OBD_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x91cf58d3 RQF_MDS_PIN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x92313a31 ldlm_cancel_resource_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x925ac795 target_pack_pool_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x933fd083 ldlm_init_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x937b1ee0 lustre_swab_mdt_ioepoch +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x951332a9 sptlrpc_sec_destroy +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 0x95e660ab sptlrpc_cli_enlarge_reqbuf +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 0x97335ce4 ptlrpc_resend_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9798f2f1 RQF_MDS_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x980b8819 ldlm_cli_cancel_unused_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x980fcfdc ptlrpc_connection_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9976c151 sptlrpc_cli_ctx_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9995db3f ptlrpc_schedule_difficult_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a258886 RQF_MDS_GETSTATUS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a2b5c5d ldlm_lock_change_resource +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 0x9c7e805e sptlrpc_gc_add_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d1d68eb ptlrpc_pinger_add_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d7ea314 sptlrpc_pack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9e1267bf ptlrpc_at_set_req_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9fb088f1 lustre_swab_lov_mds_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa0e4bb07 ptlrpc_mark_interrupted +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa0fe3e92 sptlrpc_get_bulk_checksum +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 0xa316e498 ptlrpc_request_set_replen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa32973b3 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 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 0xa6ed5888 ptlrpc_deactivate_import +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 0xa7f7b8a9 sptlrpc_import_flush_all_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa886d187 ldlm_lock2handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa8878715 ldlm_namespace_cleanup +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 0xa9f5b977 lustre_pack_reply_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaadaa4ca ldlm_namespace_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xab76703e ptlrpc_pinger_del_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xace47f2d ptlrpc_unregister_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaddc3979 lustre_swab_lustre_capa_key +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 0xaf9ca4eb ldlm_pool_set_clv +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 0xb1f9605c llog_origin_handle_next_block +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 0xb2b1817d lustre_swab_ost_lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb322114f req_capsule_init_area +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb3b10631 ptlrpc_register_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb3d55e9a sptlrpc_cli_ctx_expire +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 0xb5bd5e3a ptlrpc_request_bufs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb5ff6ecd ptlrpc_replay_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb61cb95a RQF_MDS_GETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb68476df interval_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb6aafd03 RQF_MDS_DONE_WRITING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7b38189 RMF_MDT_MD +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7fa3cc8 RMF_LLOG_LOG_HDR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb8c6c0e9 ptlrpc_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb903634e RQF_OST_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb966abc7 req_capsule_filled_sizes +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9b631cf lustre_swab_mgs_config_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xba1fc366 ldlm_resource_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xba6921b4 req_capsule_server_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xba77c07d ldlm_cli_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbaa76097 lustre_msg_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbab0183f sptlrpc_enc_pool_get_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc1370dc lustre_shrink_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc194159 ptlrpc_resend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc5db2b7 ldlm_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbcd9893f lprocfs_wr_ping +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 0xbe8f382d _debug_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbf98b86f RQF_MDS_QUOTACHECK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbfad4910 ptlrpc_nrs_policy_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbffd4313 RQF_OST_BRW_WRITE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc047a12e ldlm_replay_locks +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 0xc1ed015f ldlm_pool_get_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc22ddfc7 client_import_find_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 0xc321643f sptlrpc_cli_ctx_wakeup +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 0xc79e37b7 client_destroy_import +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 0xc7ef1be0 lustre_pack_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc8311281 ldlm_namespace_foreach +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 0xcb1dbdd0 ptlrpc_abort_inflight +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 0xce5a92f3 ptlrpc_register_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce86066d lustre_msg_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce87a0ff ptlrpc_unregister_service +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 0xcf0db862 ptlrpc_cleanup_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf396f0a __ldlm_handle2lock +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 0xcfd8c3f7 lprocfs_rd_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd1be3d4a ldlm_cli_enqueue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2983334 lustre_swab_swap_layouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd29a4365 lprocfs_wr_pinger_recov +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 0xd3dd01ea ptlrpc_set_import_active +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd4522bdf ldlm_namespace_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd456a1a9 llog_origin_handle_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd537ded2 lustre_swab_obdo +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 0xd7e5ff6d lustre_pack_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8396ec2 sec2target_str +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 0xda2ac111 sptlrpc_proc_root +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb1fb0a2 RQF_MDS_REINT_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb3b7213 ptlrpc_request_alloc_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb9d5a6a lustre_swab_niobuf_remote +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdcf910b9 lustre_swab_ost_last_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd0ffb04 sptlrpc_flavor2name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd30d7bf RMF_ACL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xddc40a85 lustre_msg_get_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xde12d36b RMF_MDS_HSM_ARCHIVE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xde555d70 sptlrpc_enc_pool_del_user +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdee87192 sptlrpc_conf_log_update_begin +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdf701ae7 lustre_swab_fid2path +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe036cca1 ldlm_pool_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0703371 ldlm_pool_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0cc694c RQF_LLOG_ORIGIN_HANDLE_NEXT_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe27f0873 req_capsule_server_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe2ab668f ptlrpc_restart_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe2f6c7d5 req_capsule_client_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 0xe5e8169b lustre_errno_ntoh +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe643998e RQF_OST_SETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe65b1f82 sptlrpc_conf_client_adapt +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 0xeaa09251 ptlrpc_req_finished_with_imp_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeabaa0b1 lustre_swab_mdt_body +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 0xec363680 sptlrpc_cli_unwrap_bulk_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec5a8c7c ldlm_destroy_export +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 0xed0f2533 __ptlrpc_free_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 0xf0241d6e lustre_swab_hsm_progress_kernel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf07afbdd sptlrpc_target_sec_part +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 0xf151864f llog_origin_handle_read_header +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 0xf37ffd39 ptlrpc_send_reply +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 0xf46c9adb ldlm_cli_enqueue_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf55aaa99 req_capsule_client_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf55c033b RMF_MGS_CONFIG_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf55e1495 req_capsule_client_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf566857c req_capsule_get_size +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 0xf7215047 unlock_res_and_lock +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 0xf86ab54d sptlrpc_svc_ctx_invalidate +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 0xfadcf6bd ldlm_completion_ast_async +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 0xfc663010 ptlrpc_prep_req_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfd148bf8 RMF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfe09a2fd ptlrpc_request_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfecf85fd req_capsule_has_field +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 0xff7da12d ptlrpc_stop_all_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff9ac064 ptlrpc_unregister_reply +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 0xd7299a94 cxd2099_attach +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x0d77be55 go7007_update_board +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x4414a797 go7007_read_addr +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x56b88783 go7007_snd_remove +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x7ea79e3e go7007_register_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x8d2136cb go7007_alloc +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xb2d45395 go7007_parse_video_stream +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xb59cd25b go7007_boot_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xd9fb89ca go7007_read_interrupt +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xfb42436b go7007_snd_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x02e7378d rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x03164070 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x072631ae rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0a255ae7 rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x24ef897c rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x28c3c7c6 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3ee51984 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3fe168b3 rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x413c15eb rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4e70426e rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x56fd7f4d rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x57cd811c rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x59b37d36 rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5f223c04 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6192bfc9 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6783068f rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6887c126 rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x68cf510a rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x73668f82 rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7731af56 rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7c2ad807 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7d84ae0e rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7e610162 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x84133d43 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x84f3774b rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x85ceee9d alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x86aa5eae dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9baad59e rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa736a697 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa8fc88e5 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xae89b653 rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb4eaf0c8 rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbbf1e39b free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc2cf390e rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc4ca0843 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc8bd8c0a rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcb2044b5 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcbf9a742 rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd67c7804 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd70464d7 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdfa7e190 rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe05995f6 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe12908ec rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe56dc2be rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xeac33beb RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xee448120 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf47a46a5 Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf57374fa rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfa3f237f rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfd9419e3 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x006c1d98 ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0162c9c5 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x01fa65a5 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0b4f9f70 ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0faeef6a ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1407cc0d ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1f91607c ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x220fb16b ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x24e39ea5 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x24e70f70 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x25d28e4b ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x260ae74d ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2e56f174 ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2ee6bc20 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3525b844 DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3cbb989d ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3e6a7991 ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x51829cff DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x581c84c6 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x592d9428 ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5af5fd2e ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x61635d33 ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x62e2c396 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6c32c8b5 ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6d5c0baf Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6f77b281 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7056c95a SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x73b436f6 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x838d11e8 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8a5be59a HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8e008ed4 IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x91a95cf2 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9808d68b ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xab9bc957 ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xac23dd9d ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xac54c58a ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xae0edbea ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xae9bfdd1 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xaea3228d ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb24a12b0 ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbbb07d79 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbd0efdca ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbe2a2ed0 ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbe95beb9 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbef04796 Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbf36b038 ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbfd6b399 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc22ddac0 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc2d534b3 ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc9b0ca35 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcb060e7a ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcf8fe05b ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd4abd260 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd9cb1611 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe1d80e0e ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfdf2b059 ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x0017f35f set_bp_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x00ea0cde set_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x06d6f244 get_bp_dis_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x09df8f3e set_tap_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x0a8d32c3 get_bypass_slave_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x1936264c set_dis_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x1d2eb8ca get_tap_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x203af1f7 reset_bypass_wd_timer_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2070f14a set_bypass_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x27b990ef get_bypass_info_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2ba7cd35 get_wd_autoreset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2c3f1c17 get_tx_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2f59e636 get_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2fdb893a get_tap_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x361cf40a get_dis_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x45ca99c3 set_wd_autoreset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x550a188c set_bypass_wd_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x5cb59e92 get_bypass_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x66b60122 set_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x675208c0 set_tx_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x692623f2 get_std_nic_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x75131ec6 set_bypass_pwoff_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x76c0b7d0 set_tpl_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x7e872825 get_wd_exp_mode_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x7e8d701e get_wd_expire_time_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x86388b07 get_bp_disc_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x93ae4648 get_wd_set_caps_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x95e42b0d is_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x9df5f807 set_dis_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x9e21f42e set_std_nic_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xa689a214 get_bypass_wd_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xae117788 get_bp_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xc368d30d get_dis_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xccab5de0 get_bypass_caps_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd3e034b3 get_bypass_pwoff_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd9c1ccfc get_bp_disc_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd9d38d97 set_wd_exp_mode_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xe640f06e set_bp_disc_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xecdaa456 set_bp_hw_reset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xedcd3c1b get_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf06d67bf set_bp_dis_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf57c1671 get_bp_hw_reset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf693c3a1 bp_if_scan_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf8237882 get_bypass_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xfa59240d get_tpl_sd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x05af3c4c set_wd_exp_mode +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x05b08a42 set_bp_hw_reset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x0b0d5ce0 get_tap_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x0fc2e83c reset_bypass_wd_timer +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x123a8133 get_tx +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x157ec89c get_bp_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2440f05a get_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2b01d1d4 set_bp_dis_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2c27a2f0 set_dis_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2da97f4b is_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2e86c67b get_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x37416370 get_bp_hw_reset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x37bdab27 get_wd_autoreset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x3da96a18 get_bypass_caps +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4025805e get_bypass_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4940a0cc get_bypass_info +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4d21ff51 get_bypass_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5147360c get_bp_disc_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x515d4df1 get_bypass_slave +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5560267e set_wd_autoreset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5be44d44 set_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x6653590c get_wd_exp_mode +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x6bda14ec get_bp_dis_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x72c618ae set_bypass_wd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x76d47e6f set_bp_disc_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x794e3815 set_tap_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x7c6cbc16 get_tpl +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x84a263dc set_tx +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x8a16f22c set_tpl +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x946ff795 get_wd_set_caps +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x94f6aff2 get_bypass_wd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x9d1ecf73 set_bypass_pwoff +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xb1385629 set_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xbff68c45 set_bypass_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xc871c561 get_dis_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xcee528df set_std_nic +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xd202dd85 get_bypass_pwoff +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xd787f151 get_wd_expire_time +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xdb6a39d2 get_dis_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xebd25ae5 get_std_nic +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf1e9f8c1 set_bp_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf224abd9 get_tap_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf5a591b2 set_dis_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf643fd4c get_bp_disc_pwup +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x272ee202 xillybus_init_endpoint +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x6ad7b963 xillybus_do_cleanup +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0xe6d934c5 xillybus_endpoint_remove +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0xf3e06168 xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0bfea5e7 iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1b4ec427 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1b82fc46 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1ee7159f iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x25befc99 iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x29f297ea iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2cd56dde iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x34635811 iscsit_handle_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3cdd7418 iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x42e5a2dd iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4641630c iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x550728ff iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5545332f iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x613503c3 iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7698ca95 iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7c04f8dc iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x87cecf46 iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9187a6b1 iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x97f67351 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xad462262 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xaead7bb7 iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbe59bed7 iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc7e52996 iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc850a147 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe36fb75b iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf0a6904e iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf7dba5e7 iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf9af6aa4 iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x036d771c target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x044731b0 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x06d7b1a8 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x0ae6c574 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x13023bd0 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x145d093e target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x15065704 core_tpg_add_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x1f2a3300 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x208982cd transport_subsystem_release +EXPORT_SYMBOL drivers/target/target_core_mod 0x21b15718 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x2395f866 transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x2515ddc3 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x253504d1 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x254a5338 spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0x2c01d32e sbc_execute_unmap +EXPORT_SYMBOL drivers/target/target_core_mod 0x2eb85f16 sas_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x3a41f376 target_configure_unmap_from_queue +EXPORT_SYMBOL drivers/target/target_core_mod 0x3d4e40df fc_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x3defe4d8 sas_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x41b863c9 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x4213c194 fc_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x47a68473 sas_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x48627aa9 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x4995f5d2 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x49b5fc36 sas_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x4b2c6ac0 target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x5347edce target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x539fad11 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x59d7e33c transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x5c1bef16 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x5ea4863b target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x679d05d6 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x730fde96 fc_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x79633513 fc_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x7d27215f core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x89080f3a target_fabric_configfs_free +EXPORT_SYMBOL drivers/target/target_core_mod 0x8a5280d3 iscsi_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x94e81a27 target_fabric_configfs_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x9d1bc51c target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x9edd9cb6 spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0xa6fedcf8 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xae426a5d iscsi_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0xb11bff3b iscsi_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0xb4cadd3c transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xb7bf71e7 target_fabric_configfs_init +EXPORT_SYMBOL drivers/target/target_core_mod 0xbab4601f transport_subsystem_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xbd1436c4 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0xbdbd764f transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0xc0e4cd6e transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0xc60dffb4 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xcb01d216 spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0xcdc8d21f transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xcf2e2327 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0xd1bb4310 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0xd36ea53e sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0xd3d7bdf2 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xd8190717 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xdb481428 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xdd8b6472 iscsi_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xdfd9ef77 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xe1591306 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xe206ba08 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0xe2c53e01 sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0xe4a6323c core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xe977e2dd core_tpg_clear_object_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0xeaa33ed5 target_to_linux_sector +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf0831baf transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xf0f8eebb target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xf13137fd target_fabric_configfs_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xf60d3467 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xfa480ac4 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xfbb66ea4 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0xfd9871b3 core_tpg_del_initiator_node_acl +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x254b81d4 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0x912a0913 unregister_gadget_item +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x0c929011 gether_disconnect +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x1de37117 gether_set_gadget +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x2418caaf gether_set_host_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x383dee0a gether_setup_name +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x4be063d0 gether_register_netdev +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x5694e846 gether_set_qmult +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x7c290dea gether_connect +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x8977cf29 gether_get_host_addr_u8 +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x8b16f1c3 gether_setup_name_default +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x962bd11d gether_get_dev_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xbf6a5eff gether_get_ifname +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xdfc817b1 gether_set_dev_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xe8878477 gether_get_host_addr_cdc +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xf4a268fe gether_get_qmult +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xf9658f61 gether_get_host_addr +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x265f69e7 rndis_set_param_dev +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x3a6d4f22 rndis_free_response +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x3ca38e3a rndis_signal_connect +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x4ca90996 rndis_signal_disconnect +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x5d22b406 rndis_register +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x785d494b rndis_msg_parser +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x840dd143 rndis_deregister +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x87a7b8c9 rndis_add_hdr +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x988ad2a2 rndis_set_param_vendor +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x9acf72e4 rndis_set_param_medium +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xa90054ee rndis_uninit +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xb971ebca rndis_get_next_response +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xd2fe47b1 rndis_set_host_mac +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xefb890f3 rndis_rm_hdr +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x0ca09a92 fsg_show_nofua +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x1710b539 fsg_fs_bulk_out_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x1b1cc3af store_cdrom_address +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x2198fb77 fsg_store_file +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x22129eb0 fsg_store_removable +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x2933ee1d fsg_ss_bulk_in_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x398778e1 fsg_ss_function +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x423845e4 fsg_ss_bulk_in_comp_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x4c0b22b6 fsg_lun_open +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x4c7bcfb6 fsg_lun_close +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x551d6bed fsg_show_cdrom +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x56344daf fsg_hs_bulk_out_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x6f598eca fsg_show_ro +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x769cf5af fsg_store_ro +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x7c455733 fsg_show_removable +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x857b6dc2 fsg_hs_function +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x87c79694 fsg_lun_fsync_sub +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x95cffb3e fsg_hs_bulk_in_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xa5cae92f fsg_ss_bulk_out_comp_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xa5f99b69 fsg_fs_function +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xb52ba28a fsg_intf_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xb54d0d95 fsg_fs_bulk_in_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xe311c671 fsg_store_nofua +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xf04f32bb fsg_store_cdrom +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xf4efc0c8 fsg_ss_bulk_out_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xf8df27cf fsg_show_file +EXPORT_SYMBOL drivers/usb/gadget/usb_f_rndis 0x6900004a rndis_borrow_net +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0xdcd31e4c sl811h_driver +EXPORT_SYMBOL drivers/usb/phy/phy-generic 0xa64a4cea usb_nop_xceiv_unregister +EXPORT_SYMBOL drivers/usb/phy/phy-generic 0xd0e43207 usb_nop_xceiv_register +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x0f9ba1e5 usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x1a1cdb43 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x31456135 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x42b6ce4a usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x5ad92795 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x5f73fef6 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x7ae3b82c usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xbe10ca80 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xc3a50dfd usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xcdd4f4a9 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xd152a83a usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xdbaca9ca usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf4dc7469 usb_wwan_set_termios +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x3dc792dc usb_serial_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x61d2553d usb_serial_resume +EXPORT_SYMBOL drivers/vhost/vringh 0x0dda8c5a vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x1f063017 vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x2e91ca97 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x367ce26a vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x36dfce73 vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3eaf442a vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x3fa42e4f vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x5dafbd4e vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x66af098b vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x6d0e7948 vringh_abandon_user +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 0xaf8e4a0e vringh_notify_disable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xafb47dae vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0xc884d704 vringh_notify_disable_user +EXPORT_SYMBOL drivers/vhost/vringh 0xc8bee0a4 vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xd11d2709 vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xda4ea4cc vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0xfc7dcad2 vringh_getdesc_user +EXPORT_SYMBOL drivers/video/backlight/generic_bl 0x366d19ef genericbl_limit_intensity +EXPORT_SYMBOL drivers/video/backlight/lcd 0x8c7b3dbf devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xa510b475 lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xc3e9b587 lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xd9f39464 devm_lcd_device_register +EXPORT_SYMBOL drivers/video/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/cyber2000fb 0x30d97a15 cyber2000fb_attach +EXPORT_SYMBOL drivers/video/cyber2000fb 0x534b6f18 cyber2000fb_disable_extregs +EXPORT_SYMBOL drivers/video/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0xa16f53ef matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0xb074e8cd matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0xc914c473 g450_mnp2f +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x5e690f42 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x646fdb89 matrox_mystique +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x7f8e713a DAC1064_global_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xcf4af87a matrox_G100 +EXPORT_SYMBOL drivers/video/matrox/matroxfb_Ti3026 0xa89c6270 matrox_millennium +EXPORT_SYMBOL drivers/video/matrox/matroxfb_accel 0xf21fd8cd matrox_cfbX_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x064eb0d2 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x2f87f108 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x41460245 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0xca2d18c9 matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0x4f32860f matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0xd3bfa925 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x27d98d89 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xa854250b matroxfb_read_pins +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xdc3b9e75 matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xe025360c matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xeafa07d0 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/mb862xx/mb862xxfb 0x1f15fffb mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/output 0x674d323b video_output_unregister +EXPORT_SYMBOL drivers/video/output 0xb64d0f9d video_output_register +EXPORT_SYMBOL drivers/video/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/svgalib 0x1c206063 svga_tilecopy +EXPORT_SYMBOL drivers/video/svgalib 0x3fa4a0c9 svga_get_caps +EXPORT_SYMBOL drivers/video/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/svgalib 0x66f8d630 svga_settile +EXPORT_SYMBOL drivers/video/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/svgalib 0x734630d1 svga_get_tilemax +EXPORT_SYMBOL drivers/video/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/svgalib 0x90fa07e3 svga_tileblit +EXPORT_SYMBOL drivers/video/svgalib 0x995852f3 svga_tilefill +EXPORT_SYMBOL drivers/video/svgalib 0xb14287c3 svga_tilecursor +EXPORT_SYMBOL drivers/video/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/syscopyarea 0xb2e7ef26 sys_copyarea +EXPORT_SYMBOL drivers/video/sysfillrect 0x32919bfd sys_fillrect +EXPORT_SYMBOL drivers/video/sysimgblt 0x72f4e411 sys_imageblit +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/vme/vme 0x00d7e722 vme_lm_count +EXPORT_SYMBOL drivers/vme/vme 0x027c901e vme_slot_get +EXPORT_SYMBOL drivers/vme/vme 0x06749727 vme_lm_request +EXPORT_SYMBOL drivers/vme/vme 0x072f901c vme_master_rmw +EXPORT_SYMBOL drivers/vme/vme 0x0783b7f8 vme_register_bridge +EXPORT_SYMBOL drivers/vme/vme 0x08105142 vme_unregister_driver +EXPORT_SYMBOL drivers/vme/vme 0x0ec5babe vme_dma_free +EXPORT_SYMBOL drivers/vme/vme 0x2157965d vme_dma_pci_attribute +EXPORT_SYMBOL drivers/vme/vme 0x2527a087 vme_slave_set +EXPORT_SYMBOL drivers/vme/vme 0x44ffe3ed vme_irq_free +EXPORT_SYMBOL drivers/vme/vme 0x46649cd1 vme_lm_set +EXPORT_SYMBOL drivers/vme/vme 0x48b99a13 vme_lm_free +EXPORT_SYMBOL drivers/vme/vme 0x48d58118 vme_dma_request +EXPORT_SYMBOL drivers/vme/vme 0x4baf35a7 vme_master_get +EXPORT_SYMBOL drivers/vme/vme 0x4de9eb7e vme_irq_generate +EXPORT_SYMBOL drivers/vme/vme 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL drivers/vme/vme 0x5aff4177 vme_lm_get +EXPORT_SYMBOL drivers/vme/vme 0x5e58acad vme_register_driver +EXPORT_SYMBOL drivers/vme/vme 0x66227eae vme_alloc_consistent +EXPORT_SYMBOL drivers/vme/vme 0x7cf35220 vme_master_free +EXPORT_SYMBOL drivers/vme/vme 0x7fde2edb vme_master_read +EXPORT_SYMBOL drivers/vme/vme 0x84a69fdc vme_slave_get +EXPORT_SYMBOL drivers/vme/vme 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL drivers/vme/vme 0x94b2590f vme_free_consistent +EXPORT_SYMBOL drivers/vme/vme 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL drivers/vme/vme 0xa31bdf07 vme_master_set +EXPORT_SYMBOL drivers/vme/vme 0xa63ac3ee vme_dma_list_exec +EXPORT_SYMBOL drivers/vme/vme 0xab95fa5f vme_bus_type +EXPORT_SYMBOL drivers/vme/vme 0xc1467168 vme_irq_handler +EXPORT_SYMBOL drivers/vme/vme 0xc5a398eb vme_dma_list_add +EXPORT_SYMBOL drivers/vme/vme 0xcbda4b74 vme_irq_request +EXPORT_SYMBOL drivers/vme/vme 0xd40c62b9 vme_new_dma_list +EXPORT_SYMBOL drivers/vme/vme 0xd797b9a5 vme_master_write +EXPORT_SYMBOL drivers/vme/vme 0xddb3d2b7 vme_master_request +EXPORT_SYMBOL drivers/vme/vme 0xdff905e5 vme_slave_free +EXPORT_SYMBOL drivers/vme/vme 0xe1966cfc vme_unregister_bridge +EXPORT_SYMBOL drivers/vme/vme 0xe693a6ce vme_get_size +EXPORT_SYMBOL drivers/vme/vme 0xed9d735f vme_dma_list_free +EXPORT_SYMBOL drivers/vme/vme 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL drivers/vme/vme 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL drivers/vme/vme 0xfd0d7b77 vme_slave_request +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x17672ebd w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x1c6a3fd0 w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x22c8408f w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xe63f11a0 w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x2c01a2c1 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x9ee6ae3d w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x0d558a93 w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xa28817e7 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/wire 0x54c26689 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0x70a504d1 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0xc94de33c w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0xcc07fe3d w1_unregister_family +EXPORT_SYMBOL fs/btrfs/btrfs 0x27476846 ulist_reinit +EXPORT_SYMBOL fs/btrfs/btrfs 0x41e6a9d2 ulist_init +EXPORT_SYMBOL fs/btrfs/btrfs 0x7e2ee765 ulist_free +EXPORT_SYMBOL fs/btrfs/btrfs 0xa2eec2e8 ulist_fini +EXPORT_SYMBOL fs/btrfs/btrfs 0xb1320bc8 ulist_add +EXPORT_SYMBOL fs/btrfs/btrfs 0xb42289d2 ulist_alloc +EXPORT_SYMBOL fs/btrfs/btrfs 0xc2c745db ulist_next +EXPORT_SYMBOL fs/configfs/configfs 0x1c1de2bc config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x2788bc22 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x2a958708 configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x72f6bb1d config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x866287ed config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0x884e1608 config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0xa0660b95 config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0xaafbf493 configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xbef31445 config_item_init +EXPORT_SYMBOL fs/configfs/configfs 0xd746e1ab config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0xe3a24d63 configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0xf3aefadf configfs_undepend_item +EXPORT_SYMBOL fs/exofs/libore 0x124f3eeb ore_create +EXPORT_SYMBOL fs/exofs/libore 0x1601e137 ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0x1e5ffd12 ore_put_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 0x7ea630a3 extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0x8a632f0a ore_remove +EXPORT_SYMBOL fs/exofs/libore 0x8ab2a66c ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0x8b4cedba ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0x9204e02d ore_read +EXPORT_SYMBOL fs/exofs/libore 0x99273070 ore_write +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xaeaef185 ore_truncate +EXPORT_SYMBOL fs/fscache/fscache 0x14bfe1d4 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x1df507f1 fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0x1fb3bcaa fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x22d5439f __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0x3406ef5d fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x34fd4e41 __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x46861ea6 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x4d8dd028 __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x56baf83c fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0x64f2fc9e __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x6f9ec19e __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x72453d95 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x7476fa8f fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x7570f8d9 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x77a17d9f __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x79c7aa39 __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x9f6d77fb __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x9f84ca8a fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0xa1c1bfa3 fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0xa4ca7e6a __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xad78c4d5 __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0xbf8ca9d8 __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0xc0caf6d7 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0xc0fec685 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0xc2d39760 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0xc99dbe46 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0xcebda711 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0xceecb9f0 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xdbcf7cfc __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xdc53ca04 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xde6613de __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xe556aa1e fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0xe9394b02 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xee6105db fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0xef6e183a fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0xf5aaa16b fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0xfd8468cb __fscache_maybe_release_page +EXPORT_SYMBOL fs/nfsd/nfsd 0x35e33c1e nfs4_acl_write_who +EXPORT_SYMBOL fs/nfsd/nfsd 0x5a157ae4 nfs4_acl_get_whotype +EXPORT_SYMBOL fs/nfsd/nfsd 0xa0f4b528 nfs4_acl_posix_to_nfsv4 +EXPORT_SYMBOL fs/nfsd/nfsd 0xb25b2957 nfs4_acl_nfsv4_to_posix +EXPORT_SYMBOL fs/nfsd/nfsd 0xe13337f0 nfs4_acl_new +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x0518e7d4 qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x0933ce22 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x3e2bc771 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xb500eb6e qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xd876c736 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 0xa7587646 crc7 +EXPORT_SYMBOL lib/crc7 0xd80c3603 crc7_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 0x0c9ff2c3 lc_find +EXPORT_SYMBOL lib/lru_cache 0x0d2dc6b3 lc_reset +EXPORT_SYMBOL lib/lru_cache 0x2bca6ccb lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x3691748f lc_set +EXPORT_SYMBOL lib/lru_cache 0x3ab0d905 lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0x43e46a2d lc_committed +EXPORT_SYMBOL lib/lru_cache 0x452c8b46 lc_del +EXPORT_SYMBOL lib/lru_cache 0x60fd5d64 lc_is_used +EXPORT_SYMBOL lib/lru_cache 0x75a91db9 lc_destroy +EXPORT_SYMBOL lib/lru_cache 0x8af6181d lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0x9476f94d lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0xa2873827 lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0xb74693bf lc_try_get +EXPORT_SYMBOL lib/lru_cache 0xbb6d3769 lc_create +EXPORT_SYMBOL lib/lru_cache 0xbd032277 lc_put +EXPORT_SYMBOL lib/lru_cache 0xef129f5b lc_get +EXPORT_SYMBOL lib/lru_cache 0xf9b6ff79 lc_get_cumulative +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/802/p8022 0x28426c63 register_8022_client +EXPORT_SYMBOL net/802/p8022 0xeb7cbd96 unregister_8022_client +EXPORT_SYMBOL net/802/p8023 0x240d023d destroy_8023_client +EXPORT_SYMBOL net/802/p8023 0x79161c5b make_8023_client +EXPORT_SYMBOL net/802/psnap 0x2d5705b2 unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0x632d1382 register_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x0420f0b0 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x103c69ba p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x14a8e8dc p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x15ce2a71 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x168d3899 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x1a37c7e9 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x1c29e862 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x1c8a80be p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x375201ff p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x37ce6d37 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x458687ce v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x4a37ddc2 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x4bbe867f p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x50e23a3d p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x5570d84b p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x55b24751 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x59a82099 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x5b11035b p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x5bff14ba p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x5f2a0616 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x6d79901f p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x70f1f51f v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x838dc275 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x87675956 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x8a19c7f7 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x977a0030 p9_nr_pages +EXPORT_SYMBOL net/9p/9pnet 0x9bd1164f p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x9e44045a p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0xa5ceb87a p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0xab33fa46 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0xb2671699 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xb2fea4d3 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0xba1607a7 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0xbb0b01fd p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0xbe83b733 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xc16793d2 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0xc2563aae p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xcee0c21f p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0xcf7fea4b p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0xd734ab8d p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0xd8e862fd p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0xd9981f5d p9_payload_gup +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe8710dd2 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf5d9d3a6 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/appletalk/appletalk 0x222cfe7d alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0x5dc2c033 atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0x818958c7 aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0xb1ffc5ea atrtr_get_dev +EXPORT_SYMBOL net/atm/atm 0x08b06648 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x0d6f9f27 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x21047a1e atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x301699a0 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x377adc9a atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x7563a20b atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xa6e8c063 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xb1119143 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xbd7b12d1 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0xca87b453 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xcded0098 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0xcfdbaa91 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0xd7676190 atm_charge +EXPORT_SYMBOL net/atm/atm 0xdb24c125 atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/ax25/ax25 0x026c1368 ax25_display_timer +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 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0x92b35622 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x984ca11c ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0xaefdb6be ax25_rebuild_header +EXPORT_SYMBOL net/ax25/ax25 0xb8e19324 ax25_hard_header +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xca618e84 ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0xd047f034 ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xd832431d ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0xe09d0ae6 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0xfb3f6445 ax25_header_ops +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0abf45cb hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x105d984f bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x147e82cf bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1ab8ab3f bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1ca22e08 l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0x20cd582e hci_recv_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2186bc84 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x253068cd __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2e27ac3e bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3350b436 bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3523c27d hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x36c6b038 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3e843ce3 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4cbb0324 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5ac852f4 hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6060a884 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x63ed53db hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7c640527 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x802f6e99 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x81dd7a8e bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x82ba8563 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x82d318f6 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x833423f7 bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x87148891 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8d4e9312 l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fe2024d hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x915ad259 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9171508e hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x93ffcc42 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa7373344 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb0c36b71 l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb2c8d07d bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb61a0c3b bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc2ee7aa5 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc3bb8a7d hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc938d14d bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd2434791 hci_recv_stream_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd578c409 l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf485c215 __hci_cmd_sync +EXPORT_SYMBOL net/bridge/bridge 0x3a362dde br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x20a2a5e0 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x99769eab ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xfe1359d6 ebt_do_table +EXPORT_SYMBOL net/caif/caif 0x12e7fa9d cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x3a9e51ec 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 0x736e269d caif_enroll_dev +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 0xce184753 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0xf8c3f06b get_cfcnfg +EXPORT_SYMBOL net/can/can 0x08834f3c can_send +EXPORT_SYMBOL net/can/can 0x38db8d66 can_proto_unregister +EXPORT_SYMBOL net/can/can 0x75eee75b can_rx_unregister +EXPORT_SYMBOL net/can/can 0xa30fbd37 can_proto_register +EXPORT_SYMBOL net/can/can 0xc0dbb86b can_ioctl +EXPORT_SYMBOL net/can/can 0xf1487bca can_rx_register +EXPORT_SYMBOL net/ceph/libceph 0x01b8e0c2 osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x02736571 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x03953b10 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0x0470ff43 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x058bb419 osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x095d06e6 ceph_osdc_unregister_linger_request +EXPORT_SYMBOL net/ceph/libceph 0x0d2d5754 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0x0eb635d4 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x10940306 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0x10be138d ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x1151f1df ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0x1475bf0d ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x15f1faad ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x16f9f650 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x185c1dc1 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x197effcb ceph_osdc_release_request +EXPORT_SYMBOL net/ceph/libceph 0x1b8a48f4 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x226f364e ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x2c6ec42e osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0x2e85d538 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x3158173e ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x3864647a ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3df0ec7c ceph_calc_ceph_pg +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x4104ed17 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0x4175a36d ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x4205ffd7 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x43c8d341 ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x43efd647 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x488bb776 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x4bbcce92 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x4da9cf9c osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0x4e066f51 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x4ee4bfff osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x4f4771fb ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x526b9988 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x54e537aa ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x5fe4b2fa ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0x610ff859 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x63965395 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x693d3910 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x6a7a0818 osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6c5d5ac1 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x6d2d06a1 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0x6ed41be2 ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0x6f3de818 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x71425286 ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x7325d688 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x77692acb ceph_msg_last_put +EXPORT_SYMBOL net/ceph/libceph 0x7fc9cae7 osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x80dd5b91 osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x81c394c2 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x8a192a42 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x8a944d70 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x8df632db ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x94e675aa ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0x9751f249 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x99de4738 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9ad8ccfc osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x9d89992c ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa40bd703 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0xa74fd088 ceph_copy_page_vector_to_user +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xaf9d6bde ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb5c850b8 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xba929c56 ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xc01003dc ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0xc053fb21 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0xc17807a6 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc55de604 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xc82fa1b3 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xca949a37 osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xcd4f6290 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xcf9f23c8 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd6dd2ab3 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0xd6e7814f ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xd88128e9 ceph_monc_create_snapid +EXPORT_SYMBOL net/ceph/libceph 0xdfb9a654 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xe298c6f5 ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0xe82c9c32 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0xed6e087d ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0xed753c65 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xf56f4326 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0xf5b16780 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0xf5b91678 osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xf7397dab ceph_auth_is_authenticated +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xe4caf587 dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/ieee802154 0x032d6458 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0x55b087c1 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x5d9f7f17 ieee802154_nl_disassoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x5e9bd945 wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0x70bdfe24 ieee802154_nl_assoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x751a3bd4 ieee802154_nl_start_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x760df97a wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0xadf07d18 ieee802154_nl_disassoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0xbed73af8 ieee802154_nl_assoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0xc0e49367 ieee802154_nl_beacon_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0xc4470de1 ieee802154_nl_scan_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xe66f5946 wpan_phy_alloc +EXPORT_SYMBOL net/ieee802154/ieee802154 0xf38153b0 wpan_phy_find +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x4c291f14 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x6f9b9dec arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x8e364a95 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x05181165 ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x354ac5eb ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x4a94057d ipt_unregister_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x4b99d0b9 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0xfadf1044 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x82f7f814 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x8ec8b06b ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x6177af5a ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x7e33c48f ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x86f49c3f ip6t_do_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x5643bf5a xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0xfb7d0ece xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x51d80917 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x6ce05472 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x05b8e6fa ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x1437b9f6 ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x14ed9b2f ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x2b35b56d ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x30a2c005 ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xb8e014c9 ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xe1d3bbea ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xe2688f5a ircomm_control_request +EXPORT_SYMBOL net/irda/irda 0x0064e0ea hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0x0503cbd7 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x12c2c0f0 irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0x1340b98f irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0x1e6cade0 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x2036ad06 irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x304e0f0c irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x390df795 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0x3e56064f hashbin_new +EXPORT_SYMBOL net/irda/irda 0x429b831a irttp_connect_response +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 0x54fabfe7 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x573ef63e alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x601bda46 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x6045c2dd irlap_close +EXPORT_SYMBOL net/irda/irda 0x6598f2a0 irlmp_disconnect_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 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x73358fd3 irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7a4e08d3 iriap_open +EXPORT_SYMBOL net/irda/irda 0x85d88217 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x88c80de2 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x99115eec irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x993ad14b irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0xa1d41e58 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0xa5782469 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0xaa557515 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xafefdd87 iriap_close +EXPORT_SYMBOL net/irda/irda 0xb1ea65dd async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0xb324698a irttp_data_request +EXPORT_SYMBOL net/irda/irda 0xb8947227 irttp_dup +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 0xc7bdf07c irda_notify_init +EXPORT_SYMBOL net/irda/irda 0xc90edbb9 irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0xcead7dbb hashbin_find +EXPORT_SYMBOL net/irda/irda 0xd2108314 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0xd57c9e5a irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0xd5e369c9 irlmp_open_lsap +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 0xe95228c2 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xf0a694a1 irias_find_object +EXPORT_SYMBOL net/irda/irda 0xf39b7fe0 irda_setup_dma +EXPORT_SYMBOL net/irda/irda 0xf4d222fd irlap_open +EXPORT_SYMBOL net/irda/irda 0xf5876b95 hashbin_remove_this +EXPORT_SYMBOL net/l2tp/l2tp_core 0xcc5fb38c l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x0e029d28 lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x15ffe43f lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x371c843f lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x48e2518c lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0xbff41187 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0xdcc49a33 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0xdfdb6051 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0xe602617a lapb_register +EXPORT_SYMBOL net/llc/llc 0x1ccc97ce llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x2c2c5d9b llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x32d1a913 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x6c91646d llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x97df1c8e llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0x9c5974b9 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0xc35e28f7 llc_sap_list_lock +EXPORT_SYMBOL net/llc/llc 0xdc073360 llc_set_station_handler +EXPORT_SYMBOL net/mac80211/mac80211 0x009376f2 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x01f2216f __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x03014f33 ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x03229e5e __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x03d30cb1 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x04f0402b ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x08acf297 ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x0e24144b ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x1239d4bb ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x16ac401c ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x19649a8d rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x21a2ae71 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x2774d295 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0x27eda82e ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x284d76cb ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x2d23d181 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x30dec830 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x30f939e8 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x33c57b89 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x37833730 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x3dd8cd7d wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x4008802c ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x4f33d771 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x544e3381 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x545951cd ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x5988b46b ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x5c28cca5 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x62089315 ieee80211_alloc_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x636bbf76 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x66725f2f ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0x781f5957 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x7e0902aa ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x85562971 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x877b959b __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x93ae2331 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x94b3d87c ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x977ca095 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x9baabc48 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x9c5e6334 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0xa1fc36c4 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xaa157485 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0xaa44c0f0 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xab01296c ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xac2a0448 ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0xac88d6ea ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xb02d3309 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xb19ac25c ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0xb299f881 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xb9c52864 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0xba9c92da ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xbc5d2b30 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0xbcfc01cc ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xc4141ccf ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xc7e9782e ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xc82e2fa9 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xcccafe99 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xcd462c81 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xcda92eb2 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0xd33cd961 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0xd9b1c862 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0xda6fafbe ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xddb47d52 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xe05a5d92 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xe0ea9601 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0xe28b6a0a ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0xf09007c6 ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xf1af2c7a ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0xf395de03 ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0xf4552576 ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0xf51995a4 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xf54e0818 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xf643b01c ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0xfc88bbfd ieee80211_queue_stopped +EXPORT_SYMBOL net/mac802154/mac802154 0x28d9de1a ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0x3a3ffec7 ieee802154_register_device +EXPORT_SYMBOL net/mac802154/mac802154 0x48aaed45 ieee802154_unregister_device +EXPORT_SYMBOL net/mac802154/mac802154 0x6ffdb756 ieee802154_free_device +EXPORT_SYMBOL net/mac802154/mac802154 0xd9930402 ieee802154_alloc_device +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0562b25f unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x488ffcd3 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x5043552c register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x5122d1bb ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x5da521c8 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x7247522c ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x902a57a9 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa0251c9e ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xaf6a67ea register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb19d201d ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xcc2933d5 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd6d3c3a2 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd723b84c unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xec3d5f82 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x54ab11a1 __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x605d54a0 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xd8e4fb43 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_conntrack_proto_gre 0xa611d11b nf_ct_gre_keymap_flush +EXPORT_SYMBOL net/netfilter/nf_nat 0x472c0fba nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0x7bc7d26f nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0x874deddc nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0xde3cdf7b __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xde8a99e0 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xf4b4a5af nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/x_tables 0x05ca0596 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0x08c473b7 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x1886173c xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x31cc9db5 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x531d1912 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x58fb4f2d xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x7ddac4de xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x81da5406 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x925990ce xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xb28f5ef1 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xb629aac8 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xba5acc1d xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xd87ae60d xt_check_entry_offsets +EXPORT_SYMBOL net/nfc/hci/hci 0x1480ebf5 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x18620bac nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0x1bc8d7a3 nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0x1e943ec4 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x320ea80f nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x5073a72d nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0x5610860d nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0x6409391d nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x6c7aa1c7 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x7cb855cf nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x89c64026 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x954cedb8 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x992d1df7 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xa7d2a27f nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xd3028308 nfc_hci_send_response +EXPORT_SYMBOL net/nfc/hci/hci 0xd4e24d02 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0xd9d1f9e1 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0xe2c39a74 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/nci/nci 0x4e39c746 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x58e4b9e8 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x853663e1 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0xab1502bb nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xf14b1435 nci_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x05e5946e nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x0d7bdca7 nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0x17ed9538 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x2428d47b nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x2d7d5773 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x2fd6b5e5 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x47f75ca7 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x542dfff6 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x611e9acf nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x8e77f825 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0x94cfd5db nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x94e4a38d nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0xaa4e34d2 nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0xadf70549 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0xbef0e32e nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0xcb428f8a nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0xcc93d9c9 nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0xe0838c9e nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0xeba2b2da nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0xfa2604d1 nfc_class +EXPORT_SYMBOL net/nfc/nfc_digital 0x2bba7f93 nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x57dd481d nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x6a9719ee nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xdd7bb487 nfc_digital_register_device +EXPORT_SYMBOL net/phonet/phonet 0x1f10845b phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0x2c98526f phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0x67d6926b phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x6f4d2d1a pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0xbe9121f8 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0xd54813ea pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0xe0e7d59b phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0xe8fac54c pn_sock_get_port +EXPORT_SYMBOL net/rds/rds 0x5031b8c5 rds_str_array +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x224616c9 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x226acaaf rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x3999bc0b rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x51edc8f4 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x59c4e7e8 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x6988cb9d rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x6e547c30 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x76e68c5b rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x9810f84a rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x9dd06a90 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb7916ee0 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xbd00e25a rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xbefb0a35 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc1999aa1 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc84e8d6c rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/sctp/sctp 0x0220609b sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x26b25e03 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x2ded45ef gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xee0bb560 gss_mech_get +EXPORT_SYMBOL net/sunrpc/sunrpc 0x1217fefd svc_pool_stats_open +EXPORT_SYMBOL net/wimax/wimax 0x0ac13f39 wimax_reset +EXPORT_SYMBOL net/wimax/wimax 0xd38ecd2b wimax_rfkill +EXPORT_SYMBOL net/wireless/cfg80211 0x0026ce8a cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x0251f3b2 cfg80211_del_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x038264f4 cfg80211_inform_bss_width_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x05d663bb cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x05ffa686 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x06b289f9 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x0995b70b cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x150fb218 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 0x1b53e6c5 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x2198ea70 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x2240ea4a cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x24016f5a cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x246c637a cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x28c3f968 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x3737aa43 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x39ee76d3 cfg80211_inform_bss_width +EXPORT_SYMBOL net/wireless/cfg80211 0x3f4123a9 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x406a8302 cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x417fb522 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x4402d321 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x4a040b7a wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x4c3b5878 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x4c40b2fb ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x4cdef2d8 cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x4dd25fef cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x4e1092b4 cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x549ae50f ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x5b572b29 cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0x607a9cd9 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x7188e140 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x71c62123 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x72b248c2 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x737628fa cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x78ceb3dc ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x797747f9 cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0x7a67bac9 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fb6bbea cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x8064f6d0 cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0x871a5969 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x8dbcb48c cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x8f2f73df cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x9130ede2 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x93a07b9f ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x965c12aa cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x9f31ae2e cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xa01f1c8c regulatory_hint +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 0xac3c753b cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xaf56a1d1 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xb8491fd0 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xbb163e55 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xbf4c7db6 cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0xc15c8611 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc76e05f8 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0xc85ad0a1 cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0xcd2ea60c cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xcf1910dc cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0xcf618a57 cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0xd569e3e0 cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xd796d0be cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xde44cfbd cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xe0bd5f3d cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0xe3153d1a wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0xe8852b91 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xeca6589a cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xee42db3c cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0xee716979 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xf3e91d72 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xf576aef2 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0xf7449861 wiphy_new +EXPORT_SYMBOL net/wireless/cfg80211 0xf8fa8500 cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0xf99c3d95 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xf9dfc73a cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0xfd1b2a61 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x01d76bf5 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x0fef24f5 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0x2d0f99e5 print_ssid +EXPORT_SYMBOL net/wireless/lib80211 0x3f6a4ea1 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x84ca69a8 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0x91786951 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x94d712a0 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL sound/ac97_bus 0x01db0def ac97_bus_type +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1a724fcc snd_seq_kernel_client_ctl +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1fa2100d snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3061c52d snd_use_lock_sync_helper +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3fb4d161 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6bb71038 snd_seq_delete_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6c1f1cf8 snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7ac2f329 snd_seq_expand_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7b8699eb snd_seq_event_port_detach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x8530feda snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0x88c00f16 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 0x3a57f235 snd_seq_autoload_unlock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x53b764a6 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-device 0x6b6c93c2 snd_seq_device_register_driver +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xb90668b2 snd_seq_autoload_lock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xc622fb29 snd_seq_device_unregister_driver +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 0x1ed4dcf1 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x087c3a11 snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0x0dbed071 snd_jack_report +EXPORT_SYMBOL sound/core/snd 0x13b81b76 snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x146df607 snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0x18e1683f snd_dma_program +EXPORT_SYMBOL sound/core/snd 0x191e88cf snd_dma_pointer +EXPORT_SYMBOL sound/core/snd 0x1cd019e8 snd_component_add +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x26065c2d snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x2f59eeb5 snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0x31059e18 snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x3aefe517 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0x421d0d0d snd_card_unref +EXPORT_SYMBOL sound/core/snd 0x424edbf9 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4af063c6 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0x4b015768 snd_iprintf +EXPORT_SYMBOL sound/core/snd 0x506d404c _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0x50ded048 snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0x54740ee5 snd_card_free +EXPORT_SYMBOL sound/core/snd 0x55917a7a snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x55c7e662 snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0x5bd2ae8e snd_add_device_sysfs_file +EXPORT_SYMBOL sound/core/snd 0x602c96f0 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x6041a48f snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x634404c4 snd_register_device_for_dev +EXPORT_SYMBOL sound/core/snd 0x64b05c6a snd_cards +EXPORT_SYMBOL sound/core/snd 0x686acfbd snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0x6a1a1722 snd_seq_root +EXPORT_SYMBOL sound/core/snd 0x6b150fff snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x764803a5 snd_jack_new +EXPORT_SYMBOL sound/core/snd 0x7ab5e1bb snd_card_create +EXPORT_SYMBOL sound/core/snd 0x7dde5e88 snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x875cea63 snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x983cc4c8 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0x9dc20216 snd_card_disconnect +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 0xab6542a4 snd_card_register +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xb9022a91 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0xbe674688 snd_device_new +EXPORT_SYMBOL sound/core/snd 0xc09f9823 snd_device_register +EXPORT_SYMBOL sound/core/snd 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL sound/core/snd 0xd1157735 release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0xd21b60af snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0xd587e13e snd_card_proc_new +EXPORT_SYMBOL sound/core/snd 0xd5a28fd2 snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0xd5b67d5e snd_info_register +EXPORT_SYMBOL sound/core/snd 0xd87a4f2a snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0xdb30e706 snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0xdeca9535 snd_device_free +EXPORT_SYMBOL sound/core/snd 0xe0b2830f snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0xe2a95a29 snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0xefea8ad7 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0xf81e2a47 snd_power_wait +EXPORT_SYMBOL sound/core/snd-hwdep 0x00b5597d snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-page-alloc 0x3b91f3af snd_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0xade88e76 snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0xbd06f1cc snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-page-alloc 0xd3a5809f snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0xd8d17ee6 snd_dma_get_reserved_buf +EXPORT_SYMBOL sound/core/snd-page-alloc 0xe31cc305 snd_dma_reserve_buf +EXPORT_SYMBOL sound/core/snd-page-alloc 0xef556d24 snd_dma_alloc_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 0x056be66f snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0x0a3236ae snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x15d12680 snd_pcm_debug_name +EXPORT_SYMBOL sound/core/snd-pcm 0x19fa6580 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0x1b3eed79 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x1d0b20f4 snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x1f285048 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0x25d64fde snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0x27e66182 snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0x2974faa8 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0x2fe56874 snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0x311c7f0e snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL sound/core/snd-pcm 0x3f1e5b65 snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x3f350720 snd_pcm_limit_hw_rates +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 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x52ec86e1 snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0x5b8bab37 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0x5e5d2300 snd_pcm_hw_constraint_step +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 0x65b98d5f _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x6813714c snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x6d4b2dda snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x715aaa4b snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x76cd35e4 snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0x77c18872 snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0x77fa0606 snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0x832ca99c snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0x87fc942c snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0x8fe7a1b7 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0x9012be67 snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x9b8c75bc snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xa0395c49 snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xad9deb67 snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0xaede43e6 snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xbcfac10f snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xc151fc1b snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0xc1dd2929 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0xd20e6b11 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0xd5fb21a2 snd_pcm_link_rwlock +EXPORT_SYMBOL sound/core/snd-pcm 0xd62175d6 snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xd697b23c snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xe9588b84 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0xe9b53dc2 snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0xea9d4458 snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0xeeb21b43 snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xf6edebcb snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x1e10c5b7 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x204d58b9 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0x35705b27 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5993b26e snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8578bbf1 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0x885a0e84 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8ab1ff6f snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x9299057a snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x9a80887e snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa7b5c16d __snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0xaf0f300c snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc091d679 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc16896f4 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc1f48331 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd7844b33 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0xdc4a5454 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe73d4fd5 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe963f120 __snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf2184108 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-timer 0x07a97a70 snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0x0c5166e2 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0x1d91f606 snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0x57db558d snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0x5f5b5ab9 snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0x8c9925e8 snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0x94adcd23 snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0x9df8a6d1 snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0xad6e02b9 snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0xb3daf66d snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0xda3f6a82 snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0xeb223b5d snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0xf7c2d7f6 snd_timer_continue +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xc0fec227 snd_mpu401_uart_interrupt +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xf5d30f1e snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x05060a19 snd_opl3_regmap +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x0a22bdf4 snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x1f03dcc3 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x2f3c06e8 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x600087b1 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x704da201 snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x756c470e snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x930aabd5 snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xb7573519 snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xd2b402f3 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x18db346f snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x752de491 snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x7a8213ae snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xa596bc66 snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xd5164a46 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xd55109d2 snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xe9da7f02 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xec7ae8e1 snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xfdf4d061 snd_vx_resume +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0d257d10 amdtp_out_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x34fa35b5 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3e08b1ad cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4ec0d8b4 amdtp_out_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x56973621 amdtp_out_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6c749673 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x72d43d5f cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x78e6659a amdtp_out_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7b0493f1 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7db30ac1 amdtp_out_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8783a255 fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x87a56fa4 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x896981f0 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x98393221 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9ab9ee0e amdtp_out_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9d62a208 amdtp_out_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa5dc7b96 cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb4e4e60b fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbe8fa949 amdtp_out_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd3bd1a5e amdtp_out_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd51f67e6 amdtp_out_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xdc9cfe76 amdtp_out_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe93a6ab5 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xea6cf14c fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf1a71542 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf3679c61 fw_iso_resources_update +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x2ed78028 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x84df0c0c snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xba31342d snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xc8139b05 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xd6310138 snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xfaa2df67 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x01bb7ebb snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x0c49f336 snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x6911252a snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x76aba5a7 snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xa7efec02 snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xb70158a8 snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x3ad60129 snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x7081fc1c snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x73266e52 snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x7a4eada1 snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x26ca9ec7 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x3413271e snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x2afd9e0f snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x6303615b snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x8a1b4113 snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xc06b8b03 snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xccadba11 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x1ec64e11 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0x80238d79 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x96ef59df snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xb98c7ebd snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xca099f9b snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xd6697aa6 snd_i2c_probeaddr +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x5cb614ba snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x764c1005 snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x76fbf1fe snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x79976710 snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x8bc8cf0e snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xa7ec1c2f snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xb5176bb2 snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xc2399487 snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xee6b1b9c snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xf38f8bb7 snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x03c01617 snd_sb16dsp_get_pcm_ops +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x4ba9f5bb snd_sb16dsp_pcm +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xb7dc2fed snd_sb16dsp_configure +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xe0b3f690 snd_sb16dsp_interrupt +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0b317212 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x196a9c8a snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x1e645ae8 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3e60f770 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3facd0e9 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3febf434 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x446913de snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x49d08d66 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x5931ba24 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x5977b4ac snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6047c354 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6d0a91b0 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x86e2842b snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc17fb64e snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc35e334e snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xd288127a snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xde15c564 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x14034956 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x43602b7a snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x4fe56447 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x921c7764 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x99b376e3 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xab36e2d9 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xb89c701b snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xbf90cc85 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xc7cbf131 snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x5246a1f9 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xcb788afb snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xe3ae6b3d snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x0143f773 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1231a294 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x129bad97 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2523cfe7 oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2b6a9e82 oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x415d9855 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x44c3cd7e oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x49c0de64 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x4c7bad5e oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x56b6fd98 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x57f9b7fa oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x8e43afe5 oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xaa0afe9a oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xbd2516d6 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xcfb197cf oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xdd9d085a oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe332702d oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe3d54ffe oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xea258947 oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xff93408c oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x31648f3d snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x3fb10450 snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x595a535c snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x831132cf snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xa92cf691 snd_trident_stop_voice +EXPORT_SYMBOL sound/soundcore 0x8f25db3a sound_class +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x369b6098 snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x3aea59e3 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 0x8837e45a snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xa0bc78a7 snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xbe5b73b1 snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xe583aaed snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/snd-util-mem 0x0670ab55 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x1bfedf81 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x1cf1bdb6 snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x3dbf3cad snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x55568fd7 __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x861b9776 snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x8c5b35a3 snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0xa989f77b __snd_util_memblk_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 0x7c3797ff snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL vmlinux 0x00000000 __symbol_put +EXPORT_SYMBOL vmlinux 0x00000000 current_fs_time +EXPORT_SYMBOL vmlinux 0x00000000 d_tmpfile +EXPORT_SYMBOL vmlinux 0x00000000 do_sync_read +EXPORT_SYMBOL vmlinux 0x00000000 filp_close +EXPORT_SYMBOL vmlinux 0x00000000 finish_open +EXPORT_SYMBOL vmlinux 0x00000000 generic_getxattr +EXPORT_SYMBOL vmlinux 0x00000000 generic_write_sync +EXPORT_SYMBOL vmlinux 0x00000000 get_unmapped_area +EXPORT_SYMBOL vmlinux 0x00000000 in_group_p +EXPORT_SYMBOL vmlinux 0x00000000 inode_add_bytes +EXPORT_SYMBOL vmlinux 0x00000000 iov_shorten +EXPORT_SYMBOL vmlinux 0x00000000 iterate_fd +EXPORT_SYMBOL vmlinux 0x00000000 ns_capable +EXPORT_SYMBOL vmlinux 0x00000000 path_is_under +EXPORT_SYMBOL vmlinux 0x00000000 register_exec_domain +EXPORT_SYMBOL vmlinux 0x00000000 schedule_timeout +EXPORT_SYMBOL vmlinux 0x00000000 sock_register +EXPORT_SYMBOL vmlinux 0x00000000 sys_close +EXPORT_SYMBOL vmlinux 0x00000000 task_nice +EXPORT_SYMBOL vmlinux 0x00000000 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x00000000 vm_brk +EXPORT_SYMBOL vmlinux 0x001cc2fd phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x002abc4e xfrm_state_add +EXPORT_SYMBOL vmlinux 0x003ed69a __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x0061d71f tty_pair_get_pty +EXPORT_SYMBOL vmlinux 0x006fb888 dm_register_target +EXPORT_SYMBOL vmlinux 0x007a1135 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x00801678 flush_scheduled_work +EXPORT_SYMBOL vmlinux 0x00816ceb tty_write_room +EXPORT_SYMBOL vmlinux 0x008d6233 of_dev_get +EXPORT_SYMBOL vmlinux 0x00983397 scsi_put_command +EXPORT_SYMBOL vmlinux 0x00993001 sock_wfree +EXPORT_SYMBOL vmlinux 0x009e15cd skb_pull +EXPORT_SYMBOL vmlinux 0x00bb9487 vfs_link +EXPORT_SYMBOL vmlinux 0x00bc1235 i2c_use_client +EXPORT_SYMBOL vmlinux 0x00c992d0 key_alloc +EXPORT_SYMBOL vmlinux 0x00ce4b51 loop_backing_file +EXPORT_SYMBOL vmlinux 0x00cf4a7f of_get_parent +EXPORT_SYMBOL vmlinux 0x00d20b35 inode_dio_done +EXPORT_SYMBOL vmlinux 0x00d96e8a mmc_can_trim +EXPORT_SYMBOL vmlinux 0x00e4a62d simple_transaction_read +EXPORT_SYMBOL vmlinux 0x00e8097b csum_partial_copy_fromiovecend +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x0128769b fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x012a97fc xor_altivec_4 +EXPORT_SYMBOL vmlinux 0x012c3134 page_put_link +EXPORT_SYMBOL vmlinux 0x0145da74 sock_i_ino +EXPORT_SYMBOL vmlinux 0x0146e453 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x0164722a d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0x0186e2de smp_call_function_many +EXPORT_SYMBOL vmlinux 0x01902adf netpoll_trap +EXPORT_SYMBOL vmlinux 0x019e7765 __init_rwsem +EXPORT_SYMBOL vmlinux 0x01be133e scsi_remove_device +EXPORT_SYMBOL vmlinux 0x01c6cccc tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x01c8e84d ida_simple_get +EXPORT_SYMBOL vmlinux 0x01e2ce7b udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x01e743e5 flush_tlb_page +EXPORT_SYMBOL vmlinux 0x01fead4e inet6_release +EXPORT_SYMBOL vmlinux 0x020ef417 pci_iomap +EXPORT_SYMBOL vmlinux 0x021e72c8 __register_chrdev +EXPORT_SYMBOL vmlinux 0x025bcbab dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x02849631 prepare_binprm +EXPORT_SYMBOL vmlinux 0x0288c665 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x029f6ef7 mmc_erase +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6c010 security_file_permission +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02bd940d netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x02c03662 napi_complete +EXPORT_SYMBOL vmlinux 0x02d3066c new_inode +EXPORT_SYMBOL vmlinux 0x02e25b03 pci_set_ltr +EXPORT_SYMBOL vmlinux 0x02ee26c1 free_pages_exact +EXPORT_SYMBOL vmlinux 0x0312905b rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x031b9cce contig_page_data +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x0347822b jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x0381528c blk_get_queue +EXPORT_SYMBOL vmlinux 0x03844138 tcp_make_synack +EXPORT_SYMBOL vmlinux 0x03a1db98 sk_receive_skb +EXPORT_SYMBOL vmlinux 0x03bbfe50 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x03c06156 bitmap_fold +EXPORT_SYMBOL vmlinux 0x03dc933b xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x03f7df5c pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x040da810 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0x041c68e0 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x043b8cd4 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x043ffea0 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x0443b502 fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x044b4080 scsi_cmd_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x0471a5ab audit_log +EXPORT_SYMBOL vmlinux 0x0473d67d blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x04a8bb37 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x04c2e289 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x04d01fb2 mmc_hw_reset_check +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x052af4e0 no_llseek +EXPORT_SYMBOL vmlinux 0x0530dede _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x053cb59a ipmi_smi_add_proc_entry +EXPORT_SYMBOL vmlinux 0x054434d6 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x05748b27 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x0575a642 kmalloc_caches +EXPORT_SYMBOL vmlinux 0x057ce975 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0x0593a99b init_timer_key +EXPORT_SYMBOL vmlinux 0x05a514a1 _insl_ns +EXPORT_SYMBOL vmlinux 0x05ca7a51 register_quota_format +EXPORT_SYMBOL vmlinux 0x05cc3bc8 tty_unlock +EXPORT_SYMBOL vmlinux 0x05cf529f agp_bridge +EXPORT_SYMBOL vmlinux 0x05d34870 console_stop +EXPORT_SYMBOL vmlinux 0x05fb55c0 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x061775a5 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x06267d83 inet_register_protosw +EXPORT_SYMBOL vmlinux 0x062a5882 __destroy_inode +EXPORT_SYMBOL vmlinux 0x06308a32 blk_start_queue +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x0640259e tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x06423807 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x0645932f textsearch_register +EXPORT_SYMBOL vmlinux 0x0667fdc7 mmc_detect_change +EXPORT_SYMBOL vmlinux 0x0675c7eb atomic64_cmpxchg +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x067f7260 unlock_buffer +EXPORT_SYMBOL vmlinux 0x0698ecaf macio_dev_put +EXPORT_SYMBOL vmlinux 0x06b6236b tty_pair_get_tty +EXPORT_SYMBOL vmlinux 0x06bbb24a mempool_resize +EXPORT_SYMBOL vmlinux 0x06f0c672 inet6_add_offload +EXPORT_SYMBOL vmlinux 0x06f190a0 napi_get_frags +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x070655d5 dev_printk_emit +EXPORT_SYMBOL vmlinux 0x07173dfd dev_addr_del +EXPORT_SYMBOL vmlinux 0x07204e82 tcp_gso_segment +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x073f6202 security_path_unlink +EXPORT_SYMBOL vmlinux 0x0747c1cb bdput +EXPORT_SYMBOL vmlinux 0x074e9213 down_killable +EXPORT_SYMBOL vmlinux 0x07748f16 tcp_splice_read +EXPORT_SYMBOL vmlinux 0x0789598b twl6040_power +EXPORT_SYMBOL vmlinux 0x079077a4 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x0799aca4 local_bh_enable +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07c1439a __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x07c9afd8 dev_load +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07de811d vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x081a318e mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x081fa8fb pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x0822b0cd ppp_unit_number +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x0830b35c fixed_size_llseek +EXPORT_SYMBOL vmlinux 0x083c2cbe of_get_next_parent +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x0858658a dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x08652937 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x087eaa0c serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x0881f6c7 lookup_bdev +EXPORT_SYMBOL vmlinux 0x0895b7f8 fb_set_suspend +EXPORT_SYMBOL vmlinux 0x089d8b4a inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x08af57bb netlink_capable +EXPORT_SYMBOL vmlinux 0x08debc13 napi_gro_frags +EXPORT_SYMBOL vmlinux 0x08df9457 neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x08e93092 ip_getsockopt +EXPORT_SYMBOL vmlinux 0x090fa259 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x093989a1 posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x093e6514 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x093e9ee3 pci_request_region +EXPORT_SYMBOL vmlinux 0x094c65e3 d_make_root +EXPORT_SYMBOL vmlinux 0x09588c62 bio_init +EXPORT_SYMBOL vmlinux 0x096ac24c xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x09904681 simple_dir_operations +EXPORT_SYMBOL vmlinux 0x0990ad6e crypto_sha512_update +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09e1e5a4 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x0a0c2bd6 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x0a1552d4 uart_get_divisor +EXPORT_SYMBOL vmlinux 0x0a1f8693 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a3131f6 strnchr +EXPORT_SYMBOL vmlinux 0x0a3a4779 __nla_reserve +EXPORT_SYMBOL vmlinux 0x0a469d23 mfd_clone_cell +EXPORT_SYMBOL vmlinux 0x0a573587 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x0a5c585b of_device_unregister +EXPORT_SYMBOL vmlinux 0x0a5e11e8 lock_rename +EXPORT_SYMBOL vmlinux 0x0a619d8a tty_register_device +EXPORT_SYMBOL vmlinux 0x0a7312c4 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x0a751034 nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0x0aaa548c xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x0abf202b alloc_pci_dev +EXPORT_SYMBOL vmlinux 0x0ac0382f of_find_device_by_node +EXPORT_SYMBOL vmlinux 0x0ac98af6 km_report +EXPORT_SYMBOL vmlinux 0x0acb1a3c __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b12d852 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x0b176214 pci_match_id +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b1c9ccd neigh_update +EXPORT_SYMBOL vmlinux 0x0b272424 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b4e8b55 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b881566 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bcb8c19 proc_remove +EXPORT_SYMBOL vmlinux 0x0bcef51c cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x0bf12c7e pci_disable_device +EXPORT_SYMBOL vmlinux 0x0bf44747 set_device_ro +EXPORT_SYMBOL vmlinux 0x0bfe388d blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x0c046e8e security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x0c12e626 __debugger_bpt +EXPORT_SYMBOL vmlinux 0x0c2782aa consume_skb +EXPORT_SYMBOL vmlinux 0x0c426d61 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c60b283 fb_show_logo +EXPORT_SYMBOL vmlinux 0x0c65e73c scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0x0c8c9e99 scsi_show_extd_sense +EXPORT_SYMBOL vmlinux 0x0c90bec9 uart_resume_port +EXPORT_SYMBOL vmlinux 0x0c9b6089 nvram_get_size +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cbfcdf7 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x0cd96c1a unregister_quota_format +EXPORT_SYMBOL vmlinux 0x0ce900af blk_finish_plug +EXPORT_SYMBOL vmlinux 0x0ced0406 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x0d0b7f57 phy_device_register +EXPORT_SYMBOL vmlinux 0x0d1eb45e udp_disconnect +EXPORT_SYMBOL vmlinux 0x0d3848f5 file_update_time +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d675c2c agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0x0d787f50 igrab +EXPORT_SYMBOL vmlinux 0x0d7ccf92 serio_open +EXPORT_SYMBOL vmlinux 0x0d909c2a pcim_enable_device +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0dabc5bb devm_iounmap +EXPORT_SYMBOL vmlinux 0x0dbf38b8 mol_trampoline +EXPORT_SYMBOL vmlinux 0x0ddeae08 do_SAK +EXPORT_SYMBOL vmlinux 0x0ddefbe8 skb_unlink +EXPORT_SYMBOL vmlinux 0x0dff6a18 neigh_compat_output +EXPORT_SYMBOL vmlinux 0x0e2ebf46 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x0e4148ed ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x0e5bc7f1 d_find_any_alias +EXPORT_SYMBOL vmlinux 0x0e6d3f02 ip_fragment +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e7c9b24 inet_frags_fini +EXPORT_SYMBOL vmlinux 0x0e8f30f6 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x0e9c9118 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0x0eaf451e hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x0eb11920 unregister_nls +EXPORT_SYMBOL vmlinux 0x0eb59acb dev_set_mtu +EXPORT_SYMBOL vmlinux 0x0eb7d7ff may_umount_tree +EXPORT_SYMBOL vmlinux 0x0ec39957 of_get_min_tck +EXPORT_SYMBOL vmlinux 0x0ed9eed4 md_done_sync +EXPORT_SYMBOL vmlinux 0x0ef20db1 kernstart_addr +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0efe3182 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x0f1c2cf6 dev_remove_pack +EXPORT_SYMBOL vmlinux 0x0f28cb91 nvram_read_byte +EXPORT_SYMBOL vmlinux 0x0f486b9e simple_dentry_operations +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f50798f dst_release +EXPORT_SYMBOL vmlinux 0x0f5c64e7 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x0f5faa7e wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x0f616e86 set_user_nice +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fc6a2c7 mmc_remove_host +EXPORT_SYMBOL vmlinux 0x0fd5e8cd proto_register +EXPORT_SYMBOL vmlinux 0x0fe34971 scsi_prep_fn +EXPORT_SYMBOL vmlinux 0x0feaf605 skb_seq_read +EXPORT_SYMBOL vmlinux 0x10038451 tty_unregister_device +EXPORT_SYMBOL vmlinux 0x10052708 get_task_io_context +EXPORT_SYMBOL vmlinux 0x101605ce of_dev_put +EXPORT_SYMBOL vmlinux 0x102ad82e inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x106f13ab crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x1099783a nla_reserve +EXPORT_SYMBOL vmlinux 0x10aa0492 noop_fsync +EXPORT_SYMBOL vmlinux 0x10b404c3 audit_log_task_info +EXPORT_SYMBOL vmlinux 0x10b67f36 vfs_mknod +EXPORT_SYMBOL vmlinux 0x10b9192b da903x_query_status +EXPORT_SYMBOL vmlinux 0x10d49525 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x11188878 d_lookup +EXPORT_SYMBOL vmlinux 0x11267875 scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0x1156b783 pci_disable_ido +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x11663cec adb_register +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x1182d83a cpuidle_disable +EXPORT_SYMBOL vmlinux 0x11933a6b devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x11a0aeed would_dump +EXPORT_SYMBOL vmlinux 0x11c5b8db i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x11c9185c of_iomap +EXPORT_SYMBOL vmlinux 0x11cbbfde cdrom_release +EXPORT_SYMBOL vmlinux 0x11dfc08e generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x11f0819a sg_miter_next +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x122043a8 of_find_node_with_property +EXPORT_SYMBOL vmlinux 0x125d0c8c kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0x1263bf8b generic_readlink +EXPORT_SYMBOL vmlinux 0x128a8751 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x128f6300 elevator_init +EXPORT_SYMBOL vmlinux 0x1297caad padata_stop +EXPORT_SYMBOL vmlinux 0x1298d0f2 generic_make_request +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12bf3bd5 ip6_frag_match +EXPORT_SYMBOL vmlinux 0x12c92490 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x12d0fbaa free_mdio_bitbang +EXPORT_SYMBOL vmlinux 0x12da5bb2 __kmalloc +EXPORT_SYMBOL vmlinux 0x12e5ef0c rtas_set_power_level +EXPORT_SYMBOL vmlinux 0x12ebfb17 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x12f35d17 call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0x13166e6e twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x1316d0a4 mdio_bus_type +EXPORT_SYMBOL vmlinux 0x13211fd5 pcie_get_mps +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x1348760d ipmi_request_settime +EXPORT_SYMBOL vmlinux 0x138164ec agp_generic_enable +EXPORT_SYMBOL vmlinux 0x13a65b2a gen10g_resume +EXPORT_SYMBOL vmlinux 0x13affbda percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x13c0b24a pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x13c8a76d swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13e38f5c up_read +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x1405f9d6 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x1407c6e7 kmap_prot +EXPORT_SYMBOL vmlinux 0x1415b518 agp_put_bridge +EXPORT_SYMBOL vmlinux 0x1420b379 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x1425dd6a blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x143cd655 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x14407970 devm_ioport_map +EXPORT_SYMBOL vmlinux 0x14ccaee6 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x14d48102 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x14d59a7a sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x14f1b7bb devm_request_and_ioremap +EXPORT_SYMBOL vmlinux 0x1502aa5a kill_bdev +EXPORT_SYMBOL vmlinux 0x1506e2df pci_enable_device +EXPORT_SYMBOL vmlinux 0x151570f1 fail_migrate_page +EXPORT_SYMBOL vmlinux 0x15477b72 clocksource_register +EXPORT_SYMBOL vmlinux 0x154ba76d qdisc_list_del +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x1551dc51 bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x155743a8 qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0x157d1750 scsi_scan_host +EXPORT_SYMBOL vmlinux 0x15864b03 flex_array_get +EXPORT_SYMBOL vmlinux 0x1586d73d block_truncate_page +EXPORT_SYMBOL vmlinux 0x15b4b3cb generic_file_buffered_write +EXPORT_SYMBOL vmlinux 0x15c0eb19 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x15d3fd60 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x15e7838b ata_std_end_eh +EXPORT_SYMBOL vmlinux 0x15e98b09 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x15f571ec blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x1604aa8c inet6_getname +EXPORT_SYMBOL vmlinux 0x160bd45c rtas_token +EXPORT_SYMBOL vmlinux 0x161d0033 proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x1620739d find_lock_page +EXPORT_SYMBOL vmlinux 0x162dc824 starget_for_each_device +EXPORT_SYMBOL vmlinux 0x16444d39 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x16540bbc __cmpdi2 +EXPORT_SYMBOL vmlinux 0x166f2878 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x167d96f6 pcim_iounmap +EXPORT_SYMBOL vmlinux 0x169ed469 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL vmlinux 0x16dfb2bc follow_pfn +EXPORT_SYMBOL vmlinux 0x170614d6 pci_get_slot +EXPORT_SYMBOL vmlinux 0x1706f949 mdiobus_read +EXPORT_SYMBOL vmlinux 0x174afb1a __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0x174d365a __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x174ff8c4 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x17528d6f scsi_device_put +EXPORT_SYMBOL vmlinux 0x17648396 dev_base_lock +EXPORT_SYMBOL vmlinux 0x17697e64 skb_trim +EXPORT_SYMBOL vmlinux 0x1792d6eb inode_newsize_ok +EXPORT_SYMBOL vmlinux 0x17972b9d input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0x17aa156a __ucmpdi2 +EXPORT_SYMBOL vmlinux 0x17ad4605 __dst_free +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17b3a4bb nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x17b4823b gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x17bf8e55 skb_put +EXPORT_SYMBOL vmlinux 0x17dd8784 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x17e28473 fsl_upm_run_pattern +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x17fe5412 ip_defrag +EXPORT_SYMBOL vmlinux 0x1808b3ea genphy_resume +EXPORT_SYMBOL vmlinux 0x181e0ed5 of_phy_connect +EXPORT_SYMBOL vmlinux 0x1822a242 sget +EXPORT_SYMBOL vmlinux 0x1825c0ae find_or_create_page +EXPORT_SYMBOL vmlinux 0x1826f089 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x184050a6 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x184e6c85 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x18500463 request_key +EXPORT_SYMBOL vmlinux 0x18580ba0 kobject_put +EXPORT_SYMBOL vmlinux 0x185d1145 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x186bba26 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x187c5423 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x1880162b get_thermal_instance +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18a36d21 user_path_create +EXPORT_SYMBOL vmlinux 0x18be0e2f read_dev_sector +EXPORT_SYMBOL vmlinux 0x18c11a0f simple_write_end +EXPORT_SYMBOL vmlinux 0x18c2227f cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x18c51097 md_integrity_register +EXPORT_SYMBOL vmlinux 0x18c9e2bb simple_rmdir +EXPORT_SYMBOL vmlinux 0x18f39f9b tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x19111a40 lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x1915b96e cfb_copyarea +EXPORT_SYMBOL vmlinux 0x1936fa6c kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x194a3152 init_net +EXPORT_SYMBOL vmlinux 0x195e0904 pcim_pin_device +EXPORT_SYMBOL vmlinux 0x19610e1f cpu_all_bits +EXPORT_SYMBOL vmlinux 0x19699579 poll_freewait +EXPORT_SYMBOL vmlinux 0x19953e4b netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19a0f1bd __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x19b7aa93 bio_advance +EXPORT_SYMBOL vmlinux 0x19bb11b6 sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19c62d67 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x19caebe6 elevator_exit +EXPORT_SYMBOL vmlinux 0x19ceff1b blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x19fa2421 pci_claim_resource +EXPORT_SYMBOL vmlinux 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL vmlinux 0x1a111a41 ftrace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x1a20ee32 kobject_add +EXPORT_SYMBOL vmlinux 0x1a4131ec tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x1a9a033d abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x1ab60d6f bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL vmlinux 0x1ace138d bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0x1ae30f03 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x1aea6f05 splice_from_pipe_next +EXPORT_SYMBOL vmlinux 0x1af62a99 panic_notifier_list +EXPORT_SYMBOL vmlinux 0x1afa7c64 migrate_page +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b0ac272 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x1b132009 rename_lock +EXPORT_SYMBOL vmlinux 0x1b1fae86 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x1b25c627 inet_stream_ops +EXPORT_SYMBOL vmlinux 0x1b3d6582 ppp_channel_index +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b73a362 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1b9e0ff1 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x1ba5cd62 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x1baaf2b9 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0x1bc4ff03 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0x1bca2b59 load_fp_state +EXPORT_SYMBOL vmlinux 0x1be12e11 dquot_acquire +EXPORT_SYMBOL vmlinux 0x1bea884c complete_request_key +EXPORT_SYMBOL vmlinux 0x1c202584 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x1c329d43 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x1c35520e ip_check_defrag +EXPORT_SYMBOL vmlinux 0x1c554779 simple_setattr +EXPORT_SYMBOL vmlinux 0x1c5b2c15 pmu_wait_complete +EXPORT_SYMBOL vmlinux 0x1c80de9c ip_send_check +EXPORT_SYMBOL vmlinux 0x1ca39084 __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x1cb259fa tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x1cbd69b7 ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0x1cf2853f skb_orphan_partial +EXPORT_SYMBOL vmlinux 0x1d19473b pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x1d1a28a0 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x1d1b0885 put_io_context +EXPORT_SYMBOL vmlinux 0x1d1fe706 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x1d448899 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x1d5e58fd dev_get_drvdata +EXPORT_SYMBOL vmlinux 0x1da0247c sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x1daee28a percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x1dbf8d8b agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1de2fa9e set_nlink +EXPORT_SYMBOL vmlinux 0x1e0b34d4 fb_set_cmap +EXPORT_SYMBOL vmlinux 0x1e205dd5 dst_alloc +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e3574f7 seq_lseek +EXPORT_SYMBOL vmlinux 0x1e4dd330 netif_device_detach +EXPORT_SYMBOL vmlinux 0x1e62fc8a d_invalidate +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e87bac0 __seq_open_private +EXPORT_SYMBOL vmlinux 0x1e87df21 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x1e9809be proto_unregister +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ebae760 blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x1ebdc3e5 padata_free +EXPORT_SYMBOL vmlinux 0x1ec3bed9 hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0x1ecd1edd cdev_alloc +EXPORT_SYMBOL vmlinux 0x1efbcfda jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x1efd0b14 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x1f3e5eba phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x1f65ecd6 dqget +EXPORT_SYMBOL vmlinux 0x1f7a9b3f __locks_copy_lock +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1f806617 sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x1facf797 skb_push +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fbe5d50 default_file_splice_read +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fe9f800 unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x1ff7f6d9 scsi_release_buffers +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x20030ecd ioremap +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x201b059e cookie_check_timestamp +EXPORT_SYMBOL vmlinux 0x203f3569 tty_port_close_start +EXPORT_SYMBOL vmlinux 0x20421305 on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x20640d37 textsearch_unregister +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x208c2033 flush_hash_entry +EXPORT_SYMBOL vmlinux 0x2096a787 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x20a0e691 dev_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x20a2ae94 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20a86b3f of_get_pci_address +EXPORT_SYMBOL vmlinux 0x20ab783a tcp_release_cb +EXPORT_SYMBOL vmlinux 0x20b2bb2d param_array_ops +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20cd4673 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x20cdf6f0 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x211ed0f3 lock_may_read +EXPORT_SYMBOL vmlinux 0x215aa667 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x215ebd78 bitrev16 +EXPORT_SYMBOL vmlinux 0x21a8d5b3 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x21b0d3d2 fb_get_mode +EXPORT_SYMBOL vmlinux 0x21bb8741 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x21d2f617 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x21d7e7ed phy_start +EXPORT_SYMBOL vmlinux 0x21e1cdad bdi_register +EXPORT_SYMBOL vmlinux 0x21ea499e mmc_get_card +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x2256fafa div64_u64_rem +EXPORT_SYMBOL vmlinux 0x22709a71 pneigh_lookup +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x2278e94b slhc_remember +EXPORT_SYMBOL vmlinux 0x2281dcc4 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x229531d6 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x22981548 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x22997724 ps2_handle_response +EXPORT_SYMBOL vmlinux 0x2299cd45 i2c_bit_algo +EXPORT_SYMBOL vmlinux 0x229d4b2b scsi_add_device +EXPORT_SYMBOL vmlinux 0x22ac70bc validate_sp +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22c8d6ec dst_discard +EXPORT_SYMBOL vmlinux 0x22fb3783 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x23249e7a dquot_quota_off +EXPORT_SYMBOL vmlinux 0x232716d5 do_splice_from +EXPORT_SYMBOL vmlinux 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL vmlinux 0x235a3661 lock_sock_fast +EXPORT_SYMBOL vmlinux 0x235e90f3 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x2366f547 sock_wake_async +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23bd95be xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x23ce85e9 agp_copy_info +EXPORT_SYMBOL vmlinux 0x23e20dab xfrm_register_km +EXPORT_SYMBOL vmlinux 0x23f2243d mempool_free +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x23ff3a26 user_revoke +EXPORT_SYMBOL vmlinux 0x241fbc27 vfs_write +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x2426ecd0 phy_connect +EXPORT_SYMBOL vmlinux 0x243143fa tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x245a5a94 sleep_on_timeout +EXPORT_SYMBOL vmlinux 0x245afe24 nf_log_set +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x2499b746 netdev_info +EXPORT_SYMBOL vmlinux 0x24c6bb07 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x24cdd8ed dm_kobject_release +EXPORT_SYMBOL vmlinux 0x24d2fb8e i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x24d7b4eb cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x24dc95bc blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0x24e88cdf skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0x24efd916 elv_register_queue +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x25066960 uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x2513ceca udplite_prot +EXPORT_SYMBOL vmlinux 0x251c6874 netif_skb_dev_features +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x2533b063 dev_alert +EXPORT_SYMBOL vmlinux 0x2544e6d0 simple_getattr +EXPORT_SYMBOL vmlinux 0x254fcc6f dev_remove_offload +EXPORT_SYMBOL vmlinux 0x25537524 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x25637343 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x256613d3 sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x2570ac5c pci_dev_get +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x2584b408 __pci_register_driver +EXPORT_SYMBOL vmlinux 0x2587feba netdev_features_change +EXPORT_SYMBOL vmlinux 0x25a08cfe iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x25c2e7fd fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x25c677c4 mac_pton +EXPORT_SYMBOL vmlinux 0x25d2185a tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x25d58fa7 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x25e96b42 max8998_update_reg +EXPORT_SYMBOL vmlinux 0x25f3bd2e atomic64_xchg +EXPORT_SYMBOL vmlinux 0x260cf8f8 of_get_property +EXPORT_SYMBOL vmlinux 0x262ceffe tcp_prequeue +EXPORT_SYMBOL vmlinux 0x262ea0d9 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x26477c07 __vmalloc +EXPORT_SYMBOL vmlinux 0x2647abc6 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x2647f514 dev_warn +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x2682b760 tcf_exts_change +EXPORT_SYMBOL vmlinux 0x2690420c sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x269e3558 vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0x26ad94ff dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x26b760c4 slhc_init +EXPORT_SYMBOL vmlinux 0x26bb950b __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x26cf6f1a netlink_net_capable +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26e9f9a5 sock_update_classid +EXPORT_SYMBOL vmlinux 0x26f0453a blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x26f06a05 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x26fa743e bh_submit_read +EXPORT_SYMBOL vmlinux 0x27128871 netlink_broadcast +EXPORT_SYMBOL vmlinux 0x27199749 __mutex_init +EXPORT_SYMBOL vmlinux 0x271cb103 kernel_listen +EXPORT_SYMBOL vmlinux 0x272b1ac1 __scsi_put_command +EXPORT_SYMBOL vmlinux 0x272c9acd pmu_battery_count +EXPORT_SYMBOL vmlinux 0x2752ffeb devm_gpio_request +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x2786bee3 free_netdev +EXPORT_SYMBOL vmlinux 0x279d6cc1 netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27d83757 simple_lookup +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27e51566 backlight_force_update +EXPORT_SYMBOL vmlinux 0x27e9e4f1 generic_file_mmap +EXPORT_SYMBOL vmlinux 0x27ed556e netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x27f2313e idr_replace +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x281b7ae8 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x2865a2fe bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x287b85b1 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x288f3f4d pci_device_from_OF_node +EXPORT_SYMBOL vmlinux 0x28905c1d buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0x2897cad5 __scsi_add_device +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28ad9004 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x28ce7abb netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x28d1aa69 from_kuid +EXPORT_SYMBOL vmlinux 0x28e0f421 vc_cons +EXPORT_SYMBOL vmlinux 0x28ec052a security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x28f784f5 __debugger_break_match +EXPORT_SYMBOL vmlinux 0x28fd18ff devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0x29058877 register_key_type +EXPORT_SYMBOL vmlinux 0x291f561e dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x293a5f64 proc_mkdir +EXPORT_SYMBOL vmlinux 0x29505dee dquot_transfer +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x297dd85b of_device_register +EXPORT_SYMBOL vmlinux 0x29b1c366 __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x29fdda53 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x2a0ea7ac generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x2a151e28 tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x2a1fcdf5 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x2a230683 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a4e01c3 nf_log_register +EXPORT_SYMBOL vmlinux 0x2a5f1e92 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x2a6371d4 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x2a7cac99 pci_add_resource +EXPORT_SYMBOL vmlinux 0x2a94c77b always_delete_dentry +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2aabf425 elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x2aade934 dev_driver_string +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2af41d39 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x2af5bc41 clear_nlink +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b0c6ed5 pci_scan_slot +EXPORT_SYMBOL vmlinux 0x2b12925d cpumask_next_and +EXPORT_SYMBOL vmlinux 0x2b19ce20 account_page_writeback +EXPORT_SYMBOL vmlinux 0x2b1b7bd1 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x2b2be37d generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b48a3ad skb_insert +EXPORT_SYMBOL vmlinux 0x2b5200d9 blk_sync_queue +EXPORT_SYMBOL vmlinux 0x2b6757ce scsi_ioctl +EXPORT_SYMBOL vmlinux 0x2b719703 net_dma_find_channel +EXPORT_SYMBOL vmlinux 0x2b7d12dc xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x2b8daf00 ip_ct_attach +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bc61da1 program_check_exception +EXPORT_SYMBOL vmlinux 0x2bcf3e37 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x2be6514c inet_ioctl +EXPORT_SYMBOL vmlinux 0x2beebd7f i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x2c10da2e jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x2c119719 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c17e8c6 bioset_free +EXPORT_SYMBOL vmlinux 0x2c1ba728 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c2681da dump_align +EXPORT_SYMBOL vmlinux 0x2c3f4b5d generic_ro_fops +EXPORT_SYMBOL vmlinux 0x2c7b1fca down_timeout +EXPORT_SYMBOL vmlinux 0x2c7e20a0 tcp_parse_options +EXPORT_SYMBOL vmlinux 0x2c810b9a vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x2c900d91 cpufreq_put_global_kobject +EXPORT_SYMBOL vmlinux 0x2cc83b0e pci_vpd_truncate +EXPORT_SYMBOL vmlinux 0x2cefe8ec stop_tty +EXPORT_SYMBOL vmlinux 0x2cf4ed72 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x2d03c10d posix_acl_create +EXPORT_SYMBOL vmlinux 0x2d076b2f fput +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d89342a scsi_show_sense_hdr +EXPORT_SYMBOL vmlinux 0x2d8c3f88 mntput +EXPORT_SYMBOL vmlinux 0x2daaaba9 param_get_byte +EXPORT_SYMBOL vmlinux 0x2dcca948 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x2dd18e8d dev_get_by_index +EXPORT_SYMBOL vmlinux 0x2de6fed0 dev_mc_init +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2e12e378 dma_direct_ops +EXPORT_SYMBOL vmlinux 0x2e241240 security_path_mkdir +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e3bbc1f blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x2e5bdc6a commit_creds +EXPORT_SYMBOL vmlinux 0x2e63c838 dump_skip +EXPORT_SYMBOL vmlinux 0x2e665a8b scsi_get_command +EXPORT_SYMBOL vmlinux 0x2e681cc5 pci_enable_ltr +EXPORT_SYMBOL vmlinux 0x2e8383d6 sk_reset_timer +EXPORT_SYMBOL vmlinux 0x2e97bf98 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x2eb0f408 ilookup5 +EXPORT_SYMBOL vmlinux 0x2eba1f40 scsi_block_requests +EXPORT_SYMBOL vmlinux 0x2ec1b1e7 pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0x2ec524ad __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x2eda94f2 dquot_resume +EXPORT_SYMBOL vmlinux 0x2eec3026 keyring_search +EXPORT_SYMBOL vmlinux 0x2eeceb42 sk_chk_filter +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f0f6a94 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x2f1401b1 sk_free +EXPORT_SYMBOL vmlinux 0x2f25a4ba swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0x2f36e259 skb_free_datagram +EXPORT_SYMBOL vmlinux 0x2f3bffde __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x2f41dcdb scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x2f762e1d giveup_fpu +EXPORT_SYMBOL vmlinux 0x2f86fc9b inet_shutdown +EXPORT_SYMBOL vmlinux 0x2fae96de rtas_data_buf_lock +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fb764d9 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x2fd46aa8 nf_ct_attach +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2ffc164b ata_print_version +EXPORT_SYMBOL vmlinux 0x301d2c83 page_symlink +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x3055793c uart_update_timeout +EXPORT_SYMBOL vmlinux 0x305b9631 blk_make_request +EXPORT_SYMBOL vmlinux 0x3068c223 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x306bb508 agp_unbind_memory +EXPORT_SYMBOL vmlinux 0x3077a8e0 eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x3088a72e jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x30a3017d input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30ac4f0a unregister_netdev +EXPORT_SYMBOL vmlinux 0x30b8b35c cpu_to_chip_id +EXPORT_SYMBOL vmlinux 0x30c7a884 ping_prot +EXPORT_SYMBOL vmlinux 0x30cada8f radix_tree_next_hole +EXPORT_SYMBOL vmlinux 0x30eb4026 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310917fe sort +EXPORT_SYMBOL vmlinux 0x31150f28 netdev_notice +EXPORT_SYMBOL vmlinux 0x311765fb phy_device_create +EXPORT_SYMBOL vmlinux 0x312824e0 hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x313538f6 __bread +EXPORT_SYMBOL vmlinux 0x313d7829 pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0x31430b3d mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x315c65fd zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x315fb703 block_write_full_page_endio +EXPORT_SYMBOL vmlinux 0x3172d64f mnt_pin +EXPORT_SYMBOL vmlinux 0x3178429a register_filesystem +EXPORT_SYMBOL vmlinux 0x318cadb1 reciprocal_value +EXPORT_SYMBOL vmlinux 0x318d22b5 of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0x3191f109 __krealloc +EXPORT_SYMBOL vmlinux 0x319ecfca gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x31a5f215 ipv4_specific +EXPORT_SYMBOL vmlinux 0x31b6cc40 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x31d133e4 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x31e068dc __neigh_event_send +EXPORT_SYMBOL vmlinux 0x31f0bb78 __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x31f79072 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x320984d3 pci_enable_msi_block_auto +EXPORT_SYMBOL vmlinux 0x322f48d4 abx500_dump_all_banks +EXPORT_SYMBOL vmlinux 0x3230d121 zero_fill_bio +EXPORT_SYMBOL vmlinux 0x3261ba7b dquot_commit +EXPORT_SYMBOL vmlinux 0x327b9c1b pmu_poll_adb +EXPORT_SYMBOL vmlinux 0x327bf883 of_can_translate_address +EXPORT_SYMBOL vmlinux 0x3284c88d tcf_hash_lookup +EXPORT_SYMBOL vmlinux 0x328a05f1 strncpy +EXPORT_SYMBOL vmlinux 0x32911e6e pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x32ae28bc tcf_generic_walker +EXPORT_SYMBOL vmlinux 0x32b72c6c mapping_tagged +EXPORT_SYMBOL vmlinux 0x32caba80 napi_gro_flush +EXPORT_SYMBOL vmlinux 0x32cb3f38 netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0x33132201 scsi_register_driver +EXPORT_SYMBOL vmlinux 0x331628ee jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x33201608 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x33266e84 remap_pfn_range +EXPORT_SYMBOL vmlinux 0x3345b510 input_inject_event +EXPORT_SYMBOL vmlinux 0x33654a57 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x337cce46 put_cmsg +EXPORT_SYMBOL vmlinux 0x338379f2 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x338c6d6c swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0x3391e044 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33ba5cd4 param_ops_bool +EXPORT_SYMBOL vmlinux 0x33c277e1 pipe_to_file +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33d6bc0f vfs_open +EXPORT_SYMBOL vmlinux 0x33dad345 mutex_lock +EXPORT_SYMBOL vmlinux 0x33dbfd93 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x34168ff6 init_special_inode +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x341dbfa3 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x34211218 bio_map_user +EXPORT_SYMBOL vmlinux 0x342f75f7 vm_mmap +EXPORT_SYMBOL vmlinux 0x343aa150 mark_page_accessed +EXPORT_SYMBOL vmlinux 0x344048b8 pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x344adbd5 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x344e344a alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x34685cd5 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x346896f5 inet_release +EXPORT_SYMBOL vmlinux 0x346c4ded rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x347832b9 eth_header_cache +EXPORT_SYMBOL vmlinux 0x347eb9bd param_set_bool +EXPORT_SYMBOL vmlinux 0x348031af input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34b30e00 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0x34babc59 phy_detach +EXPORT_SYMBOL vmlinux 0x34cd9d9e block_write_full_page +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x3509bffc cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x350ad215 force_sig +EXPORT_SYMBOL vmlinux 0x351391b1 simple_release_fs +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x351a4383 install_exec_creds +EXPORT_SYMBOL vmlinux 0x352987e2 gen10g_suspend +EXPORT_SYMBOL vmlinux 0x3570aad8 tty_port_init +EXPORT_SYMBOL vmlinux 0x357b3f11 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x35ace43b generic_writepages +EXPORT_SYMBOL vmlinux 0x35b5707c __bforget +EXPORT_SYMBOL vmlinux 0x35c32767 xor_altivec_2 +EXPORT_SYMBOL vmlinux 0x35ced8a6 vga_client_register +EXPORT_SYMBOL vmlinux 0x35f5700f pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x35fbd6a1 __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x35fc07f9 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0x363036d0 read_cache_page_async +EXPORT_SYMBOL vmlinux 0x366cc11c tty_mutex +EXPORT_SYMBOL vmlinux 0x36720a6e register_framebuffer +EXPORT_SYMBOL vmlinux 0x36818711 soft_cursor +EXPORT_SYMBOL vmlinux 0x368382e2 of_get_named_gpiod_flags +EXPORT_SYMBOL vmlinux 0x368495e4 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x3690bac7 generic_setxattr +EXPORT_SYMBOL vmlinux 0x369218e1 dma_sync_wait +EXPORT_SYMBOL vmlinux 0x36b0e732 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x36b69b0a icmpv6_send +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36cdb5da __serio_register_driver +EXPORT_SYMBOL vmlinux 0x36d0cfc2 swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x36d7b11a of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0x36e26366 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x36e360e3 __hw_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x36f75bac iput +EXPORT_SYMBOL vmlinux 0x371d2130 check_legacy_ioport +EXPORT_SYMBOL vmlinux 0x372bad2a xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0x3735318c tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x37383edd rtas_get_power_level +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x376d4540 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x37808b46 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37e74642 get_jiffies_64 +EXPORT_SYMBOL vmlinux 0x37f614b7 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x37f6fee5 fsl_lbc_find +EXPORT_SYMBOL vmlinux 0x381144a9 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x3829dc01 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x382a0b45 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x383773ca devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0x383c577f tcf_hash_release +EXPORT_SYMBOL vmlinux 0x384408ad km_new_mapping +EXPORT_SYMBOL vmlinux 0x384c2bf5 ppp_register_channel +EXPORT_SYMBOL vmlinux 0x386111b2 filemap_fault +EXPORT_SYMBOL vmlinux 0x386b2bc8 inet_add_protocol +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388bd1a2 ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0x388f9128 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x3895cea4 phy_init_eee +EXPORT_SYMBOL vmlinux 0x38a3a948 bio_reset +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38cdcb7b xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x38fb9933 tty_std_termios +EXPORT_SYMBOL vmlinux 0x3915bcd8 __napi_schedule +EXPORT_SYMBOL vmlinux 0x392663bd inet6_bind +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x3941313d linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x3949a8c7 mem_cgroup_subsys +EXPORT_SYMBOL vmlinux 0x394e5eae dquot_operations +EXPORT_SYMBOL vmlinux 0x3956d997 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x398507ff dev_trans_start +EXPORT_SYMBOL vmlinux 0x39914bad machine_id +EXPORT_SYMBOL vmlinux 0x39a3b062 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x39a4b2bb get_disk +EXPORT_SYMBOL vmlinux 0x39cdf63c wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x39d23886 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x39fb7582 alloc_fddidev +EXPORT_SYMBOL vmlinux 0x3a0c8009 serio_interrupt +EXPORT_SYMBOL vmlinux 0x3a0ffd35 kill_litter_super +EXPORT_SYMBOL vmlinux 0x3a13af7b bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x3a241768 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x3a5ff8a8 padata_add_cpu +EXPORT_SYMBOL vmlinux 0x3a661ddb flush_old_exec +EXPORT_SYMBOL vmlinux 0x3a67a76b set_create_files_as +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3adc3922 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x3ae4e795 xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x3ae8b576 proc_create_data +EXPORT_SYMBOL vmlinux 0x3af22986 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x3af24345 make_kuid +EXPORT_SYMBOL vmlinux 0x3b1fad02 rtnl_create_link +EXPORT_SYMBOL vmlinux 0x3b503db5 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x3b5d2898 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x3b5db236 check_disk_size_change +EXPORT_SYMBOL vmlinux 0x3b615a21 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x3b6d5da3 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x3b8597ed alloc_fcdev +EXPORT_SYMBOL vmlinux 0x3b958e2c generic_permission +EXPORT_SYMBOL vmlinux 0x3bb37888 dquot_enable +EXPORT_SYMBOL vmlinux 0x3bbd563a bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x3bbe64e8 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x3bcc016f skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x3bd1b1f6 msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x3bd6b2a2 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x3be136b0 unload_nls +EXPORT_SYMBOL vmlinux 0x3bef03b9 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x3bf74c51 pci_set_mwi +EXPORT_SYMBOL vmlinux 0x3c264bb9 dquot_get_dqinfo +EXPORT_SYMBOL vmlinux 0x3c39404b misc_deregister +EXPORT_SYMBOL vmlinux 0x3c652b24 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c835ebf fs_bio_set +EXPORT_SYMBOL vmlinux 0x3c9d1211 string_get_size +EXPORT_SYMBOL vmlinux 0x3ca3dda2 __devm_request_region +EXPORT_SYMBOL vmlinux 0x3cb33729 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0x3cc3db84 __free_pages +EXPORT_SYMBOL vmlinux 0x3cc4b0dc lg_lock_init +EXPORT_SYMBOL vmlinux 0x3cc7c10c i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x3cdba872 input_unregister_handler +EXPORT_SYMBOL vmlinux 0x3ce276e3 dquot_commit_info +EXPORT_SYMBOL vmlinux 0x3ce280dc sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3cfb5030 simple_statfs +EXPORT_SYMBOL vmlinux 0x3cfb570b sock_no_bind +EXPORT_SYMBOL vmlinux 0x3cffd163 cur_cpu_spec +EXPORT_SYMBOL vmlinux 0x3d1f2d8d kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x3d41904f of_get_next_child +EXPORT_SYMBOL vmlinux 0x3d79f56f seq_path +EXPORT_SYMBOL vmlinux 0x3d878ff6 mmc_can_erase +EXPORT_SYMBOL vmlinux 0x3d9aaf55 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x3da40162 skb_copy_bits +EXPORT_SYMBOL vmlinux 0x3db0fd07 vfs_llseek +EXPORT_SYMBOL vmlinux 0x3db25412 pipe_unlock +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dd41a98 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x3dddd7fe pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e09397a iget_failed +EXPORT_SYMBOL vmlinux 0x3e32f304 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x3e5e2504 skb_checksum_help +EXPORT_SYMBOL vmlinux 0x3e61575b agp_bind_memory +EXPORT_SYMBOL vmlinux 0x3e625bea macio_unregister_driver +EXPORT_SYMBOL vmlinux 0x3e78dbc3 kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e970200 aio_complete +EXPORT_SYMBOL vmlinux 0x3e9b2d0b dm_io +EXPORT_SYMBOL vmlinux 0x3ea50757 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x3ed63055 zlib_inflateReset +EXPORT_SYMBOL vmlinux 0x3ef9d490 km_state_expired +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f1a8de9 blk_execute_rq +EXPORT_SYMBOL vmlinux 0x3f2d544d abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x3f30c802 d_add_ci +EXPORT_SYMBOL vmlinux 0x3f406a3b enable_kernel_altivec +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f679930 blk_mq_alloc_single_hw_queue +EXPORT_SYMBOL vmlinux 0x3f84124b jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x3f87fce7 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x3f8ddaa1 qdisc_destroy +EXPORT_SYMBOL vmlinux 0x3f9b44aa fb_validate_mode +EXPORT_SYMBOL vmlinux 0x3fb1cf71 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x3fccba6b thermal_cdev_update +EXPORT_SYMBOL vmlinux 0x3fd22a16 elv_rb_del +EXPORT_SYMBOL vmlinux 0x3fd55724 of_n_size_cells +EXPORT_SYMBOL vmlinux 0x3fe0d1c0 slhc_free +EXPORT_SYMBOL vmlinux 0x3fe334d3 abx500_register_ops +EXPORT_SYMBOL vmlinux 0x3ff62317 local_bh_disable +EXPORT_SYMBOL vmlinux 0x3ff8069b tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x3ff8e495 lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0x3ffe9f96 generic_file_fsync +EXPORT_SYMBOL vmlinux 0x4004f80f xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x4022ace9 ps2_init +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x404066c5 idr_for_each +EXPORT_SYMBOL vmlinux 0x404dd323 setattr_copy +EXPORT_SYMBOL vmlinux 0x4059792f print_hex_dump +EXPORT_SYMBOL vmlinux 0x405b6b47 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x405c1810 scsi_unregister +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x40988e78 get_io_context +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 0x40aaeaa4 kthread_bind +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 0x40d2e300 sk_filter +EXPORT_SYMBOL vmlinux 0x40d86a42 ipmi_register_smi +EXPORT_SYMBOL vmlinux 0x40dc2f09 cdev_add +EXPORT_SYMBOL vmlinux 0x40e68677 kobject_get +EXPORT_SYMBOL vmlinux 0x40f1ad10 tb_ticks_per_jiffy +EXPORT_SYMBOL vmlinux 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL vmlinux 0x410e7dfa blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x41185fb8 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x41312566 devfreq_add_governor +EXPORT_SYMBOL vmlinux 0x4141c0a0 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x415f710d tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x41a251a0 pmac_suspend_agp_for_card +EXPORT_SYMBOL vmlinux 0x41bb15b8 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x41c6fa66 d_alloc +EXPORT_SYMBOL vmlinux 0x420b7485 kmem_cache_free +EXPORT_SYMBOL vmlinux 0x4211c3c1 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x42184b72 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x423b776a ipmi_create_user +EXPORT_SYMBOL vmlinux 0x424d8563 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x4270e875 input_open_device +EXPORT_SYMBOL vmlinux 0x42779c06 kernel_read +EXPORT_SYMBOL vmlinux 0x4285f4fc con_copy_unimap +EXPORT_SYMBOL vmlinux 0x428a61c5 kill_block_super +EXPORT_SYMBOL vmlinux 0x428b766d cdrom_open +EXPORT_SYMBOL vmlinux 0x428fb1d0 pci_bus_type +EXPORT_SYMBOL vmlinux 0x42977ad4 __hw_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42a2df6a tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x42d92534 inet_listen +EXPORT_SYMBOL vmlinux 0x42dd593d mac_find_mode +EXPORT_SYMBOL vmlinux 0x42e3026e __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x43265dab padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x4339546a mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x43471538 find_get_page +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x43632d7d of_find_property +EXPORT_SYMBOL vmlinux 0x4368a16f dev_open +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x436ca134 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x438302fe from_kprojid +EXPORT_SYMBOL vmlinux 0x43858523 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x43a01f90 complete_all +EXPORT_SYMBOL vmlinux 0x43a3e094 unlock_rename +EXPORT_SYMBOL vmlinux 0x43a3f04e __i2c_transfer +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x43f70ca2 give_up_console +EXPORT_SYMBOL vmlinux 0x440c06bf genl_notify +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x441d0dab pmac_resume_agp_for_card +EXPORT_SYMBOL vmlinux 0x44220d5b __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x44335d2a vlan_vid_add +EXPORT_SYMBOL vmlinux 0x44366cfc simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x44438b96 hex2bin +EXPORT_SYMBOL vmlinux 0x444464a1 tty_unlock_pair +EXPORT_SYMBOL vmlinux 0x447e16ef fsnotify_get_group +EXPORT_SYMBOL vmlinux 0x44a431c4 ndo_dflt_bridge_getlink +EXPORT_SYMBOL vmlinux 0x44dd6e04 dcb_setapp +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44eb192e wait_for_completion +EXPORT_SYMBOL vmlinux 0x44f3327f devm_free_irq +EXPORT_SYMBOL vmlinux 0x44f5e8b5 of_allnodes +EXPORT_SYMBOL vmlinux 0x44f8ab57 pci_save_state +EXPORT_SYMBOL vmlinux 0x4505cd10 sk_common_release +EXPORT_SYMBOL vmlinux 0x451dd48a tty_do_resize +EXPORT_SYMBOL vmlinux 0x4521acf4 genphy_read_status +EXPORT_SYMBOL vmlinux 0x452d34b0 pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x45347f1d pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x4559411f read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x455ae856 input_flush_device +EXPORT_SYMBOL vmlinux 0x455c6ab7 inode_set_bytes +EXPORT_SYMBOL vmlinux 0x45738c57 mount_ns +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x457ba5b1 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x4581f064 seq_write +EXPORT_SYMBOL vmlinux 0x4588c9a7 put_page +EXPORT_SYMBOL vmlinux 0x4596db6a sys_sigreturn +EXPORT_SYMBOL vmlinux 0x45a6be13 cpufreq_sysfs_remove_file +EXPORT_SYMBOL vmlinux 0x45b83893 netdev_update_features +EXPORT_SYMBOL vmlinux 0x45d72c27 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0x45e0f27f dev_uc_add +EXPORT_SYMBOL vmlinux 0x45eedbe9 md_register_thread +EXPORT_SYMBOL vmlinux 0x45f23dff of_create_pci_dev +EXPORT_SYMBOL vmlinux 0x4612c59d down_trylock +EXPORT_SYMBOL vmlinux 0x461ebfa0 __copy_tofrom_user +EXPORT_SYMBOL vmlinux 0x46247542 eth_change_mtu +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +EXPORT_SYMBOL vmlinux 0x462d61bc ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x463784ef truncate_pagecache +EXPORT_SYMBOL vmlinux 0x4640551a xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x465757c3 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x46576d50 iunique +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46608fa0 getnstimeofday +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x46a2c6b4 netpoll_print_options +EXPORT_SYMBOL vmlinux 0x46a43aa0 alloc_file +EXPORT_SYMBOL vmlinux 0x46d12956 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x46e0edb9 adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0x46fea19b have_submounts +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x4702c8f2 remove_proc_subtree +EXPORT_SYMBOL vmlinux 0x4705a5d5 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x470be681 single_open +EXPORT_SYMBOL vmlinux 0x470ed6b2 dcb_getapp +EXPORT_SYMBOL vmlinux 0x47251597 dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x472e05f2 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x473e51ee blk_mq_init_commands +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x474709e9 seq_release_private +EXPORT_SYMBOL vmlinux 0x47496280 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479aa083 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47b3f862 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0x47bcf84c param_set_ulong +EXPORT_SYMBOL vmlinux 0x47c8baf4 param_ops_uint +EXPORT_SYMBOL vmlinux 0x47eb1d54 pci_get_device +EXPORT_SYMBOL vmlinux 0x48034724 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x4810f2d9 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x4818e96f bmap +EXPORT_SYMBOL vmlinux 0x481ce6ce cpu_active_mask +EXPORT_SYMBOL vmlinux 0x482a2a49 param_set_charp +EXPORT_SYMBOL vmlinux 0x482be628 skb_copy_expand +EXPORT_SYMBOL vmlinux 0x48404b9a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x4847a047 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x48711e09 done_path_create +EXPORT_SYMBOL vmlinux 0x487a4460 cpumask_set_cpu_local_first +EXPORT_SYMBOL vmlinux 0x4881efab pmac_get_partition +EXPORT_SYMBOL vmlinux 0x48a0cb29 pci_iounmap +EXPORT_SYMBOL vmlinux 0x48a1630d crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x48b982f4 mntget +EXPORT_SYMBOL vmlinux 0x48c22a3a netpoll_rx_disable +EXPORT_SYMBOL vmlinux 0x48c69759 phy_attach +EXPORT_SYMBOL vmlinux 0x48c6db53 of_get_child_by_name +EXPORT_SYMBOL vmlinux 0x48cc5804 blk_mq_free_queue +EXPORT_SYMBOL vmlinux 0x48d801b7 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x48eca926 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0x48fabfbf gen_new_estimator +EXPORT_SYMBOL vmlinux 0x48fd4ca7 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x4932aca5 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x493e526a kernel_connect +EXPORT_SYMBOL vmlinux 0x4944512a max8998_read_reg +EXPORT_SYMBOL vmlinux 0x495b3990 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x49626995 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x4964ee05 phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0x497d10f6 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x49b03ae4 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49da9464 register_gifconf +EXPORT_SYMBOL vmlinux 0x49f7bb8e __secpath_destroy +EXPORT_SYMBOL vmlinux 0x49fcde67 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x49fd0f40 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x4a01fb3d jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x4a09e83d blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x4a285f26 dev_get_flags +EXPORT_SYMBOL vmlinux 0x4a358252 __bitmap_subset +EXPORT_SYMBOL vmlinux 0x4a554540 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x4a7afcf4 __dquot_free_space +EXPORT_SYMBOL vmlinux 0x4a7ef8c8 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x4a8a381b phy_find_first +EXPORT_SYMBOL vmlinux 0x4a8fc059 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x4a9ccafc agp_create_memory +EXPORT_SYMBOL vmlinux 0x4a9f4715 pci_disable_msi +EXPORT_SYMBOL vmlinux 0x4ac22f98 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x4ae2d955 skb_make_writable +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b0a59da udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x4b0cab4f scsi_register +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b266b67 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x4b34fbf5 block_all_signals +EXPORT_SYMBOL vmlinux 0x4b3a92f5 ip6_route_output +EXPORT_SYMBOL vmlinux 0x4b539fb7 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b7ed27b sleep_on +EXPORT_SYMBOL vmlinux 0x4b9583fa dget_parent +EXPORT_SYMBOL vmlinux 0x4badba89 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x4bb7464f gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x4bb77353 neigh_table_clear +EXPORT_SYMBOL vmlinux 0x4bc4f2b2 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x4be85a03 memweight +EXPORT_SYMBOL vmlinux 0x4bed99b3 __percpu_counter_add +EXPORT_SYMBOL vmlinux 0x4c11435a _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c1182cb bitmap_scnprintf +EXPORT_SYMBOL vmlinux 0x4c2ae700 strnstr +EXPORT_SYMBOL vmlinux 0x4c3fbadf xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x4c7acf4d ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL vmlinux 0x4ca4c3b3 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x4ca60db5 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x4cad35e4 skb_store_bits +EXPORT_SYMBOL vmlinux 0x4cad3656 arp_send +EXPORT_SYMBOL vmlinux 0x4cb9dfab genl_unregister_family +EXPORT_SYMBOL vmlinux 0x4cbbd171 __bitmap_weight +EXPORT_SYMBOL vmlinux 0x4ccbebdd twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4d270017 fifo_set_limit +EXPORT_SYMBOL vmlinux 0x4d379b7d dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x4d3af812 irq_set_chip +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d5b3d8a tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x4d5c62e7 vmap +EXPORT_SYMBOL vmlinux 0x4d64b5e8 phy_device_free +EXPORT_SYMBOL vmlinux 0x4d7e2673 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x4d83b295 sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4da7c931 rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0x4db7bfdb neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x4dbcf308 nf_register_hooks +EXPORT_SYMBOL vmlinux 0x4dd14990 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4dec6038 memscan +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4dfed71c flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x4dff4776 security_mmap_file +EXPORT_SYMBOL vmlinux 0x4e0d9822 file_ns_capable +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e398b3a __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x4e4d9795 kernel_sendpage +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e786d13 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0x4e830a3e strnicmp +EXPORT_SYMBOL vmlinux 0x4e8f942e nobh_write_begin +EXPORT_SYMBOL vmlinux 0x4e9dffb5 ip_fast_csum +EXPORT_SYMBOL vmlinux 0x4ef6836c proc_set_size +EXPORT_SYMBOL vmlinux 0x4efb46ab unregister_console +EXPORT_SYMBOL vmlinux 0x4f021fae sync_inode +EXPORT_SYMBOL vmlinux 0x4f0a97eb xfrm_init_state +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f248523 of_find_node_by_name +EXPORT_SYMBOL vmlinux 0x4f3888df agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f42c8b9 input_reset_device +EXPORT_SYMBOL vmlinux 0x4f4993e5 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0x4f621b6f init_task +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f71bdd5 dev_uc_del +EXPORT_SYMBOL vmlinux 0x4f76b046 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x4f77878c pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x4f888d73 nf_afinfo +EXPORT_SYMBOL vmlinux 0x4f8efa87 __memcg_kmem_get_cache +EXPORT_SYMBOL vmlinux 0x4f9e1414 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4fe99583 atomic64_dec_if_positive +EXPORT_SYMBOL vmlinux 0x4ff68d2a __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x50005204 km_state_notify +EXPORT_SYMBOL vmlinux 0x5001f0fe f_setown +EXPORT_SYMBOL vmlinux 0x5007dc93 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x50092799 input_release_device +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x50384baf vgacon_remap_base +EXPORT_SYMBOL vmlinux 0x503b5fe2 i2c_bit_add_bus +EXPORT_SYMBOL vmlinux 0x50683079 kern_path +EXPORT_SYMBOL vmlinux 0x5072fe0c macio_register_driver +EXPORT_SYMBOL vmlinux 0x507fa46d fget +EXPORT_SYMBOL vmlinux 0x508d9a4f pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0x509817cf vprintk_emit +EXPORT_SYMBOL vmlinux 0x50ae7d80 __idr_pre_get +EXPORT_SYMBOL vmlinux 0x50b9d3e9 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x50c997a8 security_path_rmdir +EXPORT_SYMBOL vmlinux 0x50edcc5e mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0x51055884 scsi_target_resume +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x512691ba sock_release +EXPORT_SYMBOL vmlinux 0x5154ed99 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x515e24a7 flush_instruction_cache +EXPORT_SYMBOL vmlinux 0x5169cb1c xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x519318d7 _dev_info +EXPORT_SYMBOL vmlinux 0x519b0da3 finish_wait +EXPORT_SYMBOL vmlinux 0x51dce73b xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x51e67c98 switch_mmu_context +EXPORT_SYMBOL vmlinux 0x51ef33b8 kstrndup +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x521ba70c pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0x522179d3 mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x5231958d pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL vmlinux 0x52704515 pci_enable_ido +EXPORT_SYMBOL vmlinux 0x527830ff pmac_xpram_read +EXPORT_SYMBOL vmlinux 0x528c709d simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x52ab4642 inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0x52da03c5 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x52db87f2 dev_mc_flush +EXPORT_SYMBOL vmlinux 0x52e0768e pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x52ed7977 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x52feb698 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x5344f315 macio_dev_get +EXPORT_SYMBOL vmlinux 0x53593b4a padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x5360285b padata_start +EXPORT_SYMBOL vmlinux 0x536f8755 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x53757f2d ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x53959d0f call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x53a46a29 locks_remove_posix +EXPORT_SYMBOL vmlinux 0x53b8d98c d_path +EXPORT_SYMBOL vmlinux 0x53bb01e2 vm_stat +EXPORT_SYMBOL vmlinux 0x53db08c7 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x53e25435 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x53ebab1b _outsl_ns +EXPORT_SYMBOL vmlinux 0x53f3b248 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x540603f5 blkdev_put +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x5412c7c7 up +EXPORT_SYMBOL vmlinux 0x5420907d framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x544d2f82 sk_dst_check +EXPORT_SYMBOL vmlinux 0x544f46a7 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x545f75c3 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x547cba83 pci_restore_state +EXPORT_SYMBOL vmlinux 0x547e1247 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x548c0238 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x549e525c bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54ab4c6d __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x54e3cc3b param_get_int +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x550137b3 dev_disable_lro +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x553fc514 serio_rescan +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x55467ede fsl_upm_find +EXPORT_SYMBOL vmlinux 0x5549253a tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x555182e6 phy_scan_fixups +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x5568c553 complete +EXPORT_SYMBOL vmlinux 0x556c2740 hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x5577ef9e udp_table +EXPORT_SYMBOL vmlinux 0x557ef000 of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0x5594be03 bitmap_remap +EXPORT_SYMBOL vmlinux 0x559e5e48 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x55bbfb13 dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x55ddb6bd pid_task +EXPORT_SYMBOL vmlinux 0x55eeb1dd dev_set_group +EXPORT_SYMBOL vmlinux 0x56063b0d __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x5611fab7 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x5614b010 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x563da058 splice_from_pipe_feed +EXPORT_SYMBOL vmlinux 0x5642793a radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x56577c73 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x565d3307 nf_reinject +EXPORT_SYMBOL vmlinux 0x568982da scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x568b20fd security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x56a05e26 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x56a10763 csum_tcpudp_magic +EXPORT_SYMBOL vmlinux 0x56c2b95b rtas_progress +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56d4e00e vlan_vid_del +EXPORT_SYMBOL vmlinux 0x56e8a6f7 agp_backend_release +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x57357873 blk_bio_map_sg +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x5761e390 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x576dc70b mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x577e22ed xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x5785384a flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x57988e91 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x579ebd09 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0x57a2bb83 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x57b51b00 user_path_at +EXPORT_SYMBOL vmlinux 0x57ba6485 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x57e19be4 pci_enable_msi_block +EXPORT_SYMBOL vmlinux 0x57fee075 do_truncate +EXPORT_SYMBOL vmlinux 0x581b4f02 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x581be6ec unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x582a4747 cacheable_memcpy +EXPORT_SYMBOL vmlinux 0x58336a10 insert_inode_locked +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x58623807 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x58789c80 register_netdevice +EXPORT_SYMBOL vmlinux 0x588a3b49 udp_seq_open +EXPORT_SYMBOL vmlinux 0x589108da blk_run_queue +EXPORT_SYMBOL vmlinux 0x58a5c1d9 vga_put +EXPORT_SYMBOL vmlinux 0x58d1070a of_get_address +EXPORT_SYMBOL vmlinux 0x58fbd8c3 ps2_begin_command +EXPORT_SYMBOL vmlinux 0x58fcf589 pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x590b0a5c sk_run_filter +EXPORT_SYMBOL vmlinux 0x591241d0 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x592bac45 remove_arg_zero +EXPORT_SYMBOL vmlinux 0x5935453b devm_ioremap_prot +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x59537fa5 mmc_free_host +EXPORT_SYMBOL vmlinux 0x595b7826 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x595d0946 empty_zero_page +EXPORT_SYMBOL vmlinux 0x596393d0 skb_split +EXPORT_SYMBOL vmlinux 0x59740be6 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0x5975af02 skb_copy_datagram_from_iovec +EXPORT_SYMBOL vmlinux 0x598c50bb abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x5991e7bd of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0x59b3378a completion_done +EXPORT_SYMBOL vmlinux 0x59c07fea task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x59ca0b16 dput +EXPORT_SYMBOL vmlinux 0x59d8223a ioport_resource +EXPORT_SYMBOL vmlinux 0x59f93d57 ps2_end_command +EXPORT_SYMBOL vmlinux 0x59fcfc01 dm_get_device +EXPORT_SYMBOL vmlinux 0x5a011796 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x5a02307f __blk_end_request_all +EXPORT_SYMBOL vmlinux 0x5a08cd16 macio_release_resource +EXPORT_SYMBOL vmlinux 0x5a193ce0 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x5a19a08c tcf_em_register +EXPORT_SYMBOL vmlinux 0x5a2abbb1 bio_unmap_user +EXPORT_SYMBOL vmlinux 0x5a2ed654 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x5a43d6b2 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0x5a5536c2 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x5a76824f max8925_reg_read +EXPORT_SYMBOL vmlinux 0x5a790d03 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x5a7ab6ea max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x5a857127 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x5ab67931 do_IRQ +EXPORT_SYMBOL vmlinux 0x5af5e6f7 init_buffer +EXPORT_SYMBOL vmlinux 0x5b19634d div_s64_rem +EXPORT_SYMBOL vmlinux 0x5b39988e ftrace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x5b3bd456 __lru_cache_add +EXPORT_SYMBOL vmlinux 0x5b43f1f1 rtas_service_present +EXPORT_SYMBOL vmlinux 0x5b5abeca blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x5b9828c5 dma_spin_lock +EXPORT_SYMBOL vmlinux 0x5b9b93c2 seq_open +EXPORT_SYMBOL vmlinux 0x5bb9daec __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0x5bf63794 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0x5c05c705 path_nosuid +EXPORT_SYMBOL vmlinux 0x5c21abf0 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x5c265cba sg_init_one +EXPORT_SYMBOL vmlinux 0x5c2b2a3a kthread_stop +EXPORT_SYMBOL vmlinux 0x5c37f319 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x5c53d836 blk_mq_alloc_reserved_request +EXPORT_SYMBOL vmlinux 0x5c6c0a8c generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x5c741ef0 __d_drop +EXPORT_SYMBOL vmlinux 0x5c7a22ce pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x5c8d4bf1 skb_tx_error +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5d35ff4d xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x5d3cb014 pagecache_write_end +EXPORT_SYMBOL vmlinux 0x5d41c87c param_ops_charp +EXPORT_SYMBOL vmlinux 0x5d489406 update_region +EXPORT_SYMBOL vmlinux 0x5d52b334 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d5b5a16 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x5d630a3d follow_down +EXPORT_SYMBOL vmlinux 0x5d6bdce1 flex_array_alloc +EXPORT_SYMBOL vmlinux 0x5d866485 gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0x5d8b480a register_qdisc +EXPORT_SYMBOL vmlinux 0x5d8d5c8e rtnl_unicast +EXPORT_SYMBOL vmlinux 0x5d924c37 swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0x5da00403 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x5da5c236 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x5dccedaa scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x5dd529fd get_user_pages +EXPORT_SYMBOL vmlinux 0x5decbdf2 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x5defab3f vfs_statfs +EXPORT_SYMBOL vmlinux 0x5e27321b register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x5e320d55 scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x5e37404b agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0x5e3a8a9c __wake_up +EXPORT_SYMBOL vmlinux 0x5e444b6b lro_flush_all +EXPORT_SYMBOL vmlinux 0x5e529b19 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x5e7b3eb6 max8998_write_reg +EXPORT_SYMBOL vmlinux 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5eb0401e proc_dostring +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ecbac83 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5edb45c0 pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x5ee7e606 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f0ea957 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0x5f19de32 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x5f1f0903 d_validate +EXPORT_SYMBOL vmlinux 0x5f28c2dc idr_remove +EXPORT_SYMBOL vmlinux 0x5f2b6f24 set_blocksize +EXPORT_SYMBOL vmlinux 0x5f3c8f5c mmc_assume_removable +EXPORT_SYMBOL vmlinux 0x5f47b8f0 mount_bdev +EXPORT_SYMBOL vmlinux 0x5f55d3ba ppp_input_error +EXPORT_SYMBOL vmlinux 0x5f754e5a memset +EXPORT_SYMBOL vmlinux 0x5f8a2728 isa_io_base +EXPORT_SYMBOL vmlinux 0x5fc26deb release_firmware +EXPORT_SYMBOL vmlinux 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL vmlinux 0x5fd55e50 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x5fd92826 __napi_complete +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5ff35ece netdev_emerg +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x60256d19 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x602c3838 inode_init_owner +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x604cb594 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x604fed42 serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x6086fae9 rwsem_wake +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60a304b9 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x60adc3fa mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x60cbc183 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60f19369 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x60fa0bc7 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x610424d6 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x610ea147 abort_creds +EXPORT_SYMBOL vmlinux 0x612390ad netpoll_set_trap +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x6146b934 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x614733c2 scsi_print_result +EXPORT_SYMBOL vmlinux 0x61538ad0 param_get_charp +EXPORT_SYMBOL vmlinux 0x61538fbc inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x61553967 uart_register_driver +EXPORT_SYMBOL vmlinux 0x6163fc30 clear_inode +EXPORT_SYMBOL vmlinux 0x6167ebc4 neigh_table_init +EXPORT_SYMBOL vmlinux 0x616b825d dql_init +EXPORT_SYMBOL vmlinux 0x616b8ee9 netdev_has_any_upper_dev +EXPORT_SYMBOL vmlinux 0x6187b489 netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0x61a10490 udp6_csum_init +EXPORT_SYMBOL vmlinux 0x61a4dec0 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61c970f5 con_is_bound +EXPORT_SYMBOL vmlinux 0x61cab48f inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x61d220b3 simple_transaction_get +EXPORT_SYMBOL vmlinux 0x61d26f53 __kfree_skb +EXPORT_SYMBOL vmlinux 0x61d3cafa flush_signals +EXPORT_SYMBOL vmlinux 0x61e96e9d __sk_dst_check +EXPORT_SYMBOL vmlinux 0x61eef2c9 _insb +EXPORT_SYMBOL vmlinux 0x6211143d tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x62164dcb mmc_start_req +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x622a5397 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x6236530a twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x623d7182 _chrp_type +EXPORT_SYMBOL vmlinux 0x62431359 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x624bc3b5 pci_platform_rom +EXPORT_SYMBOL vmlinux 0x62538167 slhc_toss +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62822d05 iov_iter_single_seg_count +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 0x62b4709b kmap_to_page +EXPORT_SYMBOL vmlinux 0x62e45fd5 bio_integrity_get_tag +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x6318c101 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x63231951 gen_pool_create +EXPORT_SYMBOL vmlinux 0x6327940f skb_pad +EXPORT_SYMBOL vmlinux 0x6335a290 search_binary_handler +EXPORT_SYMBOL vmlinux 0x634a538d end_page_writeback +EXPORT_SYMBOL vmlinux 0x6374565a pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x6384bf82 flush_tlb_range +EXPORT_SYMBOL vmlinux 0x63b2dfce dev_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x63c0de53 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x63c3aad2 scsi_init_io +EXPORT_SYMBOL vmlinux 0x63da8bab blk_integrity_register +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63ebbc09 vga_tryget +EXPORT_SYMBOL vmlinux 0x63f52091 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x64315e44 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x643fa257 unregister_exec_domain +EXPORT_SYMBOL vmlinux 0x64433747 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x64497874 pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0x646cc6ab pmu_poll +EXPORT_SYMBOL vmlinux 0x6484fd66 dev_addr_add +EXPORT_SYMBOL vmlinux 0x6485c33e genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64b8ebd9 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0x64dde4ba set_anon_super +EXPORT_SYMBOL vmlinux 0x64e601b9 register_cdrom +EXPORT_SYMBOL vmlinux 0x64e83368 flush_tlb_mm +EXPORT_SYMBOL vmlinux 0x64f418df ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x64f4e755 ps2_drain +EXPORT_SYMBOL vmlinux 0x64fbfe4d blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x6507fdc0 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x65147f5b dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x65400222 __irq_offset_value +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x654bd945 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x6553f653 agp_backend_acquire +EXPORT_SYMBOL vmlinux 0x655aacb8 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x6563e669 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x6585e310 alloc_pages_exact_nid +EXPORT_SYMBOL vmlinux 0x65acb017 generic_listxattr +EXPORT_SYMBOL vmlinux 0x65b2fa00 invalidate_bdev +EXPORT_SYMBOL vmlinux 0x65bb58a2 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65f131f4 bdi_init +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x6609bb83 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x6615b95e generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x664d437e sock_rfree +EXPORT_SYMBOL vmlinux 0x664fe656 dev_get_stats +EXPORT_SYMBOL vmlinux 0x6650aec7 agp_free_page_array +EXPORT_SYMBOL vmlinux 0x666d9997 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x66777321 dm_get_mapinfo +EXPORT_SYMBOL vmlinux 0x667a5007 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x6682836e dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0x6683b446 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x668da8d5 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x66a9358f __page_symlink +EXPORT_SYMBOL vmlinux 0x66b719b2 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0x66c247e8 input_unregister_handle +EXPORT_SYMBOL vmlinux 0x66cbf14b pmac_xpram_write +EXPORT_SYMBOL vmlinux 0x672bc9f2 fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0x673c2249 revalidate_disk +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x67594d36 pci_dev_driver +EXPORT_SYMBOL vmlinux 0x675b8f61 param_get_string +EXPORT_SYMBOL vmlinux 0x67687391 security_path_rename +EXPORT_SYMBOL vmlinux 0x67732295 scsi_adjust_queue_depth +EXPORT_SYMBOL vmlinux 0x677945a8 vm_map_ram +EXPORT_SYMBOL vmlinux 0x67886a53 vfs_setpos +EXPORT_SYMBOL vmlinux 0x67b6176c neigh_direct_output +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL vmlinux 0x67cf20d7 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0x68004ddd input_set_abs_params +EXPORT_SYMBOL vmlinux 0x68141ce5 sock_no_accept +EXPORT_SYMBOL vmlinux 0x6819915f __inode_permission +EXPORT_SYMBOL vmlinux 0x682afade default_qdisc_ops +EXPORT_SYMBOL vmlinux 0x6839089b key_validate +EXPORT_SYMBOL vmlinux 0x68397455 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x6849a15f flex_array_clear +EXPORT_SYMBOL vmlinux 0x684a9da3 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x68513c0a agp_collect_device_status +EXPORT_SYMBOL vmlinux 0x68609857 complete_and_exit +EXPORT_SYMBOL vmlinux 0x686c52ca vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x68824ed8 tty_port_destroy +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68e05d57 getrawmonotonic +EXPORT_SYMBOL vmlinux 0x68eebb70 of_phy_attach +EXPORT_SYMBOL vmlinux 0x68f4209e pci_release_region +EXPORT_SYMBOL vmlinux 0x690c5fb5 dm_unregister_target +EXPORT_SYMBOL vmlinux 0x69316103 netif_carrier_off +EXPORT_SYMBOL vmlinux 0x6951cc39 padata_do_parallel +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x697fcc5b generic_setlease +EXPORT_SYMBOL vmlinux 0x698b4972 d_genocide +EXPORT_SYMBOL vmlinux 0x6998b306 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a0d041 module_refcount +EXPORT_SYMBOL vmlinux 0x69a2adfb truncate_setsize +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69d38ed9 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x69d7e5b8 __debugger_ipi +EXPORT_SYMBOL vmlinux 0x69e27c7a bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a3f4119 mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0x6a5d1d32 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a61f874 to_tm +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a915f2b seq_bitmap +EXPORT_SYMBOL vmlinux 0x6aaee540 icmp_send +EXPORT_SYMBOL vmlinux 0x6abe42b1 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6ad52bee set_binfmt +EXPORT_SYMBOL vmlinux 0x6aec2000 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x6b00f3ce ppc_md +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b1092b0 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b1d66fe jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x6b21981a skb_append +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b4ff227 of_scan_pci_bridge +EXPORT_SYMBOL vmlinux 0x6b608c51 lro_receive_frags +EXPORT_SYMBOL vmlinux 0x6b68ad3c dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x6b7f1917 idr_find_slowpath +EXPORT_SYMBOL vmlinux 0x6b852cd6 mpage_readpage +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bceaebc gen_replace_estimator +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6be3956c wireless_send_event +EXPORT_SYMBOL vmlinux 0x6beb2078 param_set_copystring +EXPORT_SYMBOL vmlinux 0x6c010834 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x6c025ed3 find_vma +EXPORT_SYMBOL vmlinux 0x6c1622d3 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c2faee3 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x6c3cf8d0 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c63c5d7 bio_put +EXPORT_SYMBOL vmlinux 0x6c665691 flex_array_shrink +EXPORT_SYMBOL vmlinux 0x6c6a1b56 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6ca1d1a4 atomic64_read +EXPORT_SYMBOL vmlinux 0x6ca5b0f8 __net_get_random_once +EXPORT_SYMBOL vmlinux 0x6cac41a9 sk_stream_error +EXPORT_SYMBOL vmlinux 0x6cd4f47f phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x6cd61c92 max8925_set_bits +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6cea2ee3 alloc_mdio_bitbang +EXPORT_SYMBOL vmlinux 0x6d06e810 eth_mac_addr +EXPORT_SYMBOL vmlinux 0x6d0b7e03 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d1e5450 tcp_proc_register +EXPORT_SYMBOL vmlinux 0x6d27ef64 __bitmap_empty +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d464175 __sg_free_table +EXPORT_SYMBOL vmlinux 0x6d546240 serio_close +EXPORT_SYMBOL vmlinux 0x6d6e17e0 pskb_expand_head +EXPORT_SYMBOL vmlinux 0x6d720ae2 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x6d7ad8a4 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x6da928f4 _insw_ns +EXPORT_SYMBOL vmlinux 0x6da9e953 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x6daa4b10 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x6dc99142 elv_add_request +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6e0bcfc3 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x6e19a3ae kdb_current_task +EXPORT_SYMBOL vmlinux 0x6e288c79 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x6e33b8e2 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0x6e35a4c0 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x6e364c7b check_disk_change +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e764332 idr_destroy +EXPORT_SYMBOL vmlinux 0x6e9fa403 netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0x6ea2621a dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x6ea9c3ad get_phy_device +EXPORT_SYMBOL vmlinux 0x6eab229c agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0x6eb74dff proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x6ebc5149 param_ops_long +EXPORT_SYMBOL vmlinux 0x6eed73db scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x6ef9b97f mmc_add_host +EXPORT_SYMBOL vmlinux 0x6f018214 mmc_request_done +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f353ae2 input_register_handle +EXPORT_SYMBOL vmlinux 0x6f373e8f kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x6f47146a neigh_lookup +EXPORT_SYMBOL vmlinux 0x6f58b1ff blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x6f7268d5 inode_permission +EXPORT_SYMBOL vmlinux 0x6f85b211 ida_remove +EXPORT_SYMBOL vmlinux 0x6f8be4f1 mdiobus_free +EXPORT_SYMBOL vmlinux 0x6f9fa110 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x6fb02eed rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x6fbd24bc file_remove_suid +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fe3771e xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x6fee9dc0 wireless_spy_update +EXPORT_SYMBOL vmlinux 0x6ff8293d md_error +EXPORT_SYMBOL vmlinux 0x6ffd746d dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x7035777d pci_select_bars +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x70a8711e scsi_setup_fs_cmnd +EXPORT_SYMBOL vmlinux 0x70b0a77d get_gendisk +EXPORT_SYMBOL vmlinux 0x70bc17d7 inode_wait +EXPORT_SYMBOL vmlinux 0x70d053fd try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0x70d888b7 __debugger_fault_handler +EXPORT_SYMBOL vmlinux 0x70ee6dd0 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x70f4375b mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x70f86c70 pmu_queue_request +EXPORT_SYMBOL vmlinux 0x70fb0f39 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x714a016e inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0x714bab39 max8925_reg_write +EXPORT_SYMBOL vmlinux 0x7151140b kill_fasync +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x718dd6e6 dquot_alloc +EXPORT_SYMBOL vmlinux 0x719bf1f4 __blk_run_queue +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71c90087 memcmp +EXPORT_SYMBOL vmlinux 0x71cef9b9 ata_link_printk +EXPORT_SYMBOL vmlinux 0x71e66417 ip_cmsg_recv +EXPORT_SYMBOL vmlinux 0x71f0f6a8 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x71f65175 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0x721285b2 serio_unregister_port +EXPORT_SYMBOL vmlinux 0x72439f93 tty_port_close +EXPORT_SYMBOL vmlinux 0x7276b040 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x727764b2 devm_gpiod_get +EXPORT_SYMBOL vmlinux 0x727981fd inet_del_offload +EXPORT_SYMBOL vmlinux 0x729d512b vm_event_states +EXPORT_SYMBOL vmlinux 0x72a11e87 try_module_get +EXPORT_SYMBOL vmlinux 0x72b0ca4f get_fs_type +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72b5b2b7 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x72b6c3a5 of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0x72d505d0 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x72d58de9 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72ef30e7 tty_port_put +EXPORT_SYMBOL vmlinux 0x72f20610 nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x733e2490 devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0x734edd59 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x735465ef inode_get_bytes +EXPORT_SYMBOL vmlinux 0x735d8503 add_wait_queue +EXPORT_SYMBOL vmlinux 0x73642da3 sk_ns_capable +EXPORT_SYMBOL vmlinux 0x736a9c6d try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x73710a3e dqstats +EXPORT_SYMBOL vmlinux 0x737de5e9 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x738eba74 of_platform_device_create +EXPORT_SYMBOL vmlinux 0x73a3cd40 blkdev_fsync +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x73eed5dd decrementer_clockevent +EXPORT_SYMBOL vmlinux 0x73f9fe60 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x7469fcfe radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x7476b8b3 security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x74aa0937 tty_kref_put +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74c77e22 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x74ce05b8 flush_delayed_work +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74f4a816 nf_log_unregister +EXPORT_SYMBOL vmlinux 0x74fe8730 sys_ctrler +EXPORT_SYMBOL vmlinux 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x75191cfc tty_hangup +EXPORT_SYMBOL vmlinux 0x751c2917 __wait_on_bit +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x753bc5a6 kernel_accept +EXPORT_SYMBOL vmlinux 0x753f8753 pci_release_regions +EXPORT_SYMBOL vmlinux 0x754dac78 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x756282cb pcim_iomap +EXPORT_SYMBOL vmlinux 0x756dd160 start_thread +EXPORT_SYMBOL vmlinux 0x75835cca security_task_getsecid +EXPORT_SYMBOL vmlinux 0x7589e369 dma_pool_create +EXPORT_SYMBOL vmlinux 0x758cdc4e should_remove_suid +EXPORT_SYMBOL vmlinux 0x7593d385 div64_s64 +EXPORT_SYMBOL vmlinux 0x75994700 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0x759d76cf nf_unregister_hook +EXPORT_SYMBOL vmlinux 0x75a955c1 grab_cache_page_nowait +EXPORT_SYMBOL vmlinux 0x75b94f75 __nlmsg_put +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75bf548e I_BDEV +EXPORT_SYMBOL vmlinux 0x75c1f2b9 write_one_page +EXPORT_SYMBOL vmlinux 0x75d8332a skb_copy_datagram_const_iovec +EXPORT_SYMBOL vmlinux 0x75ef09de dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x75f3e4db tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x75ff4a2f blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x760ff901 tcp_read_sock +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x7648a01e napi_gro_receive +EXPORT_SYMBOL vmlinux 0x7649716e find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x7649dbee mfd_add_devices +EXPORT_SYMBOL vmlinux 0x765133bf swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0x765f52e7 qdisc_reset +EXPORT_SYMBOL vmlinux 0x7685d6a0 create_syslog_header +EXPORT_SYMBOL vmlinux 0x76a2c4af kmap_high +EXPORT_SYMBOL vmlinux 0x76a4411d pci_enable_msix +EXPORT_SYMBOL vmlinux 0x76bf656d __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x76c60b1f dev_uc_init +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76ef0f63 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x76f234b1 ktime_get_clocktai +EXPORT_SYMBOL vmlinux 0x76f3a203 registered_fb +EXPORT_SYMBOL vmlinux 0x77330e2f dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x7736e41c cont_write_begin +EXPORT_SYMBOL vmlinux 0x775faac0 __netif_schedule +EXPORT_SYMBOL vmlinux 0x777f3f17 pci_reenable_device +EXPORT_SYMBOL vmlinux 0x7788f09d release_sock +EXPORT_SYMBOL vmlinux 0x778919eb fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x778ba211 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x778c91c2 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x779305ba dst_destroy +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77b851c4 cacheable_memzero +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77df0847 __set_personality +EXPORT_SYMBOL vmlinux 0x77ecac9f zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x780fa742 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x782567ec memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x7844b0ab mmc_gpio_free_ro +EXPORT_SYMBOL vmlinux 0x786f1164 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x788efb0e sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x788fe103 iomem_resource +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78aa5232 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x78af58fb inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x78cb5963 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0x78cf6ec1 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0x78d3fab7 module_put +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78df78ad pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0x78ef659a nla_put +EXPORT_SYMBOL vmlinux 0x78f58f90 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x78f8ae1e scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL vmlinux 0x790d23c2 bio_integrity_tag_size +EXPORT_SYMBOL vmlinux 0x790df6ca __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x791b84eb finish_no_open +EXPORT_SYMBOL vmlinux 0x7922016d in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x7930d225 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0x794b3498 netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0x794ce49d __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x7953ecca pci_disable_obff +EXPORT_SYMBOL vmlinux 0x796e980f skb_queue_tail +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x79a69374 pci_bus_put +EXPORT_SYMBOL vmlinux 0x79a7a1c0 skb_dequeue +EXPORT_SYMBOL vmlinux 0x79a994c9 netlink_set_err +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79f189fa dev_activate +EXPORT_SYMBOL vmlinux 0x79f27b5c vfs_writev +EXPORT_SYMBOL vmlinux 0x7a165b50 sock_setsockopt +EXPORT_SYMBOL vmlinux 0x7a188791 prandom_bytes +EXPORT_SYMBOL vmlinux 0x7a1a7056 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a2a513d inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a4d92dd xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x7a5c804d unlock_new_inode +EXPORT_SYMBOL vmlinux 0x7a615297 __break_lease +EXPORT_SYMBOL vmlinux 0x7a6230ba swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0x7a875def vfs_read +EXPORT_SYMBOL vmlinux 0x7a8e6ebe kobject_init +EXPORT_SYMBOL vmlinux 0x7a925833 cpufreq_get_global_kobject +EXPORT_SYMBOL vmlinux 0x7a9dcc2b __sb_start_write +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7aa1fb1e blk_end_request_all +EXPORT_SYMBOL vmlinux 0x7aadfa6b tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7adf98cb __lock_buffer +EXPORT_SYMBOL vmlinux 0x7afa89fc vsnprintf +EXPORT_SYMBOL vmlinux 0x7b0cb362 kill_pid +EXPORT_SYMBOL vmlinux 0x7b15ea90 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x7b1ade38 lz4_decompress +EXPORT_SYMBOL vmlinux 0x7b3e8880 input_register_device +EXPORT_SYMBOL vmlinux 0x7b4f8484 __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x7b536ac2 sock_kmalloc +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b74084f kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x7b9668c8 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x7babbb48 vfs_readv +EXPORT_SYMBOL vmlinux 0x7bb80213 nla_append +EXPORT_SYMBOL vmlinux 0x7bc72937 setup_arg_pages +EXPORT_SYMBOL vmlinux 0x7bcfde90 dentry_open +EXPORT_SYMBOL vmlinux 0x7be4827c pci_dram_offset +EXPORT_SYMBOL vmlinux 0x7be57980 pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0x7bec04f9 __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x7c003aef _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x7c08be05 remove_proc_entry +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c2e5939 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c47df3e iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x7c52b978 sock_update_memcg +EXPORT_SYMBOL vmlinux 0x7c5a311b sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x7c6b18cd blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x7c6d25e6 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x7c787542 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x7c8229b3 set_bdi_congested +EXPORT_SYMBOL vmlinux 0x7c9291d1 csum_partial_copy_generic +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7caa705a pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x7cacfa7d secpath_dup +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cc578da param_get_long +EXPORT_SYMBOL vmlinux 0x7cd2f55b pci_target_state +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7ced9fcc tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0x7cfc8e68 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x7d09ffa6 dmam_pool_create +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d14455d blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x7d510e76 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x7d52f0fb __lock_page +EXPORT_SYMBOL vmlinux 0x7d7655b3 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x7d7f5fc6 ftrace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0x7d80d933 clear_bdi_congested +EXPORT_SYMBOL vmlinux 0x7d98feb1 pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0x7d9cbaaf security_dentry_init_security +EXPORT_SYMBOL vmlinux 0x7dc0e109 idr_get_next +EXPORT_SYMBOL vmlinux 0x7dc97879 rtas_get_error_log_max +EXPORT_SYMBOL vmlinux 0x7decda5c cdev_del +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7e24ff65 mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0x7e32b90e ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x7e349b32 md_flush_request +EXPORT_SYMBOL vmlinux 0x7e37e0ad fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0x7e394c4e sysctl_local_reserved_ports +EXPORT_SYMBOL vmlinux 0x7e49f281 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0x7e50d307 netdev_warn +EXPORT_SYMBOL vmlinux 0x7e7f5815 mem_map +EXPORT_SYMBOL vmlinux 0x7e87227e slhc_compress +EXPORT_SYMBOL vmlinux 0x7ea01524 sock_no_mmap +EXPORT_SYMBOL vmlinux 0x7ea85c1b dev_add_pack +EXPORT_SYMBOL vmlinux 0x7eab5ae2 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x7ebc6fcb tty_unthrottle +EXPORT_SYMBOL vmlinux 0x7ebe15fe vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x7edb96be scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x7ee73c0c memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0x7ef83f05 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x7f1d0a92 mmc_put_card +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f2937fd devm_ioremap +EXPORT_SYMBOL vmlinux 0x7f29efdf d_move +EXPORT_SYMBOL vmlinux 0x7f4296ab generic_delete_inode +EXPORT_SYMBOL vmlinux 0x7f480bff redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x7f4b4276 serio_reconnect +EXPORT_SYMBOL vmlinux 0x7f58da0f adb_client_list +EXPORT_SYMBOL vmlinux 0x7f71d117 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x7f83457e __frontswap_load +EXPORT_SYMBOL vmlinux 0x7faecbc6 cad_pid +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x804586a4 blk_init_queue +EXPORT_SYMBOL vmlinux 0x804eef9a skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x804f922a ipmi_addr_length +EXPORT_SYMBOL vmlinux 0x805d02e1 free_buffer_head +EXPORT_SYMBOL vmlinux 0x80628f13 locks_copy_lock +EXPORT_SYMBOL vmlinux 0x807110cf start_tty +EXPORT_SYMBOL vmlinux 0x8076155f netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x8089fa20 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x809fa238 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80e944a4 dquot_free_inode +EXPORT_SYMBOL vmlinux 0x80ebdb44 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x80ed6697 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x810d4edf agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0x81186728 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x81323df6 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x813f6233 devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0x814d8f51 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x81819480 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0x8198f882 try_to_release_page +EXPORT_SYMBOL vmlinux 0x81a07f4e _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x81c0a84f rtas_set_indicator +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81ee153a netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x82383b44 blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0x8251bcc3 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x8260686f bitmap_find_next_zero_area +EXPORT_SYMBOL vmlinux 0x827df0df unregister_key_type +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x82925cf0 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x82a70c82 dqput +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82aedaa8 directly_mappable_cdev_bdi +EXPORT_SYMBOL vmlinux 0x82b08117 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x82e098fb swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0x82e5a238 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x830c45af lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x8323a837 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x83280516 dev_deactivate +EXPORT_SYMBOL vmlinux 0x832d73fa agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0x833e0035 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x834f2201 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x8355a538 mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x83593c85 mpage_writepage +EXPORT_SYMBOL vmlinux 0x8366ed61 sock_from_file +EXPORT_SYMBOL vmlinux 0x8396bb58 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x83a476ce bitmap_scnlistprintf +EXPORT_SYMBOL vmlinux 0x83f92481 seq_open_private +EXPORT_SYMBOL vmlinux 0x8409590a blk_mq_run_queues +EXPORT_SYMBOL vmlinux 0x841962f8 param_get_ushort +EXPORT_SYMBOL vmlinux 0x844404cf ISA_DMA_THRESHOLD +EXPORT_SYMBOL vmlinux 0x8444543b audit_log_start +EXPORT_SYMBOL vmlinux 0x84465852 dev_change_flags +EXPORT_SYMBOL vmlinux 0x84527ec5 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x84538141 ab3100_event_register +EXPORT_SYMBOL vmlinux 0x8468a95f cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x8475b4de dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x848c0457 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x84b183ae strncmp +EXPORT_SYMBOL vmlinux 0x84bd69bf dq_data_lock +EXPORT_SYMBOL vmlinux 0x84f727d2 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x8509c540 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0x8518eca9 param_get_short +EXPORT_SYMBOL vmlinux 0x8533968b tty_lock_pair +EXPORT_SYMBOL vmlinux 0x853bf7c1 param_set_int +EXPORT_SYMBOL vmlinux 0x8541bccc intercept_table +EXPORT_SYMBOL vmlinux 0x854e1c0b sg_nents +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x858aa0ad scm_fp_dup +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85be7081 kunmap_high +EXPORT_SYMBOL vmlinux 0x85d5f1cb __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x85d78d05 tcp_close +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85e7deb2 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x8603618f ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x86063cdf __serio_register_port +EXPORT_SYMBOL vmlinux 0x860f1230 dentry_path_raw +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x86629a28 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x867460c1 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x867832a6 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x867a8592 inet_recvmsg +EXPORT_SYMBOL vmlinux 0x867ecbd2 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x868471e5 tty_port_hangup +EXPORT_SYMBOL vmlinux 0x86883e3e ppp_dev_name +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x86a4889a kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x86aed893 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x86db1cbb rtas_flash_term_hook +EXPORT_SYMBOL vmlinux 0x86ed0af5 mmc_release_host +EXPORT_SYMBOL vmlinux 0x86ef0b10 i2c_master_recv +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x870bf928 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x8721b843 tty_vhangup +EXPORT_SYMBOL vmlinux 0x87309c32 vsc824x_add_skew +EXPORT_SYMBOL vmlinux 0x8735a6b7 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x873b0599 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x87505c9b inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x8776596c blk_get_request +EXPORT_SYMBOL vmlinux 0x8779a34f param_ops_byte +EXPORT_SYMBOL vmlinux 0x877e8344 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x8795b01e ipmi_smi_watcher_register +EXPORT_SYMBOL vmlinux 0x8798e453 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x87a2b807 single_open_size +EXPORT_SYMBOL vmlinux 0x87c6de21 blk_init_tags +EXPORT_SYMBOL vmlinux 0x87d86e62 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x87ee7154 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x881039d0 zlib_inflate +EXPORT_SYMBOL vmlinux 0x8817eb38 fd_install +EXPORT_SYMBOL vmlinux 0x882ed500 account_page_redirty +EXPORT_SYMBOL vmlinux 0x8834396c mod_timer +EXPORT_SYMBOL vmlinux 0x885110e4 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x88513970 param_set_byte +EXPORT_SYMBOL vmlinux 0x8861f765 agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0x886ad4ed sock_create_lite +EXPORT_SYMBOL vmlinux 0x888c75c5 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x88a6b5de mmc_of_parse +EXPORT_SYMBOL vmlinux 0x88a7b8e8 neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x88b67e01 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x88bde2f5 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0x88d49ad2 kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0x88db75eb tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x89012bab mmc_cache_ctrl +EXPORT_SYMBOL vmlinux 0x891fbb10 mempool_destroy +EXPORT_SYMBOL vmlinux 0x89221cfc qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x893288d7 __skb_checksum +EXPORT_SYMBOL vmlinux 0x8953f8ff __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x8963d850 names_cachep +EXPORT_SYMBOL vmlinux 0x897473df mktime +EXPORT_SYMBOL vmlinux 0x89797060 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x897a6895 do_sync_write +EXPORT_SYMBOL vmlinux 0x897f061d downgrade_write +EXPORT_SYMBOL vmlinux 0x898a2ba3 may_umount +EXPORT_SYMBOL vmlinux 0x8999eb18 vfs_unlink +EXPORT_SYMBOL vmlinux 0x89b3107b isa_mem_base +EXPORT_SYMBOL vmlinux 0x89cbd5de inet6_protos +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x8a0106a8 dm_put_device +EXPORT_SYMBOL vmlinux 0x8a05d085 dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x8a1a700a md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a283f8c make_kgid +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a495b73 blk_fetch_request +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a876f54 ida_init +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8a9f0578 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x8ab4079e atomic64_add +EXPORT_SYMBOL vmlinux 0x8acb2892 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x8ae4c3c1 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0x8af2d89f generic_file_open +EXPORT_SYMBOL vmlinux 0x8af4c15d rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x8afd4b95 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x8b1a7a66 pcie_aspm_enabled +EXPORT_SYMBOL vmlinux 0x8b3e516e swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b43e7c0 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0x8b4758da vlan_untag +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b64ee14 kern_unmount +EXPORT_SYMBOL vmlinux 0x8b687597 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x8b7f005c read_code +EXPORT_SYMBOL vmlinux 0x8b93af55 nonseekable_open +EXPORT_SYMBOL vmlinux 0x8b9bd263 cdrom_check_events +EXPORT_SYMBOL vmlinux 0x8bcbfed7 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x8c16b561 blk_stop_queue +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c204727 key_link +EXPORT_SYMBOL vmlinux 0x8c2a9f9c dma_find_channel +EXPORT_SYMBOL vmlinux 0x8c2ba5f4 dev_add_offload +EXPORT_SYMBOL vmlinux 0x8c35f18b bio_integrity_free +EXPORT_SYMBOL vmlinux 0x8c3f23bd kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x8c40df88 tcp_sendpage +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c657a37 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x8c8adf3e ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8d015dd4 __bswapdi2 +EXPORT_SYMBOL vmlinux 0x8d067a01 bio_add_page +EXPORT_SYMBOL vmlinux 0x8d2e268b param_ops_ulong +EXPORT_SYMBOL vmlinux 0x8d379c59 generic_file_splice_write +EXPORT_SYMBOL vmlinux 0x8d425ad6 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x8d47a98e of_phy_connect_fixed_link +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d6af0c1 noop_qdisc +EXPORT_SYMBOL vmlinux 0x8d6e3e16 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d79cb6c input_set_capability +EXPORT_SYMBOL vmlinux 0x8dbb4cc4 sock_init_data +EXPORT_SYMBOL vmlinux 0x8de0b5ac mempool_create +EXPORT_SYMBOL vmlinux 0x8de9ec1b pci_get_subsys +EXPORT_SYMBOL vmlinux 0x8dedf0e2 pci_write_vpd +EXPORT_SYMBOL vmlinux 0x8df5da63 memstart_addr +EXPORT_SYMBOL vmlinux 0x8e0d66f4 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x8e1c09ef scsi_dma_map +EXPORT_SYMBOL vmlinux 0x8e1ca3d7 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x8e33aac6 d_obtain_alias +EXPORT_SYMBOL vmlinux 0x8e5ceaa3 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x8e710df3 path_put +EXPORT_SYMBOL vmlinux 0x8e7ed73b skb_checksum +EXPORT_SYMBOL vmlinux 0x8e84717c skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x8e864a86 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x8e9c3acf alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x8eaed0ca tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x8eb47da8 freeze_bdev +EXPORT_SYMBOL vmlinux 0x8eb9acc4 pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0x8ec04552 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x8ece5e68 read_cache_page +EXPORT_SYMBOL vmlinux 0x8f045d1c cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x8f18fe59 scm_detach_fds +EXPORT_SYMBOL vmlinux 0x8f264f67 devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x8f42efad ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x8f4382f0 __skb_dst_set_noref +EXPORT_SYMBOL vmlinux 0x8f85f835 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x8f9bc8d0 __pagevec_release +EXPORT_SYMBOL vmlinux 0x8f9e7b75 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x8faa4598 of_translate_address +EXPORT_SYMBOL vmlinux 0x8fb23bce inode_dio_wait +EXPORT_SYMBOL vmlinux 0x8fba964f cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x8fbf37e0 profile_pc +EXPORT_SYMBOL vmlinux 0x8fc331a6 follow_down_one +EXPORT_SYMBOL vmlinux 0x8fc4c5ca scsi_host_put +EXPORT_SYMBOL vmlinux 0x8fed8459 gen10g_read_status +EXPORT_SYMBOL vmlinux 0x8fef22fd splice_from_pipe_end +EXPORT_SYMBOL vmlinux 0x8ffdb3b8 crc16 +EXPORT_SYMBOL vmlinux 0x902a7e2a jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x902e9144 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x9048309b tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0x90501868 transfer_to_handler +EXPORT_SYMBOL vmlinux 0x905e8841 softnet_data +EXPORT_SYMBOL vmlinux 0x906ea333 uart_suspend_port +EXPORT_SYMBOL vmlinux 0x908b53ed param_set_short +EXPORT_SYMBOL vmlinux 0x90ae55b8 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x90bd6b5a tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x90be2144 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0x90c09ae7 i2c_verify_client +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x90c9abbf scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x90e146c2 trace_seq_putc +EXPORT_SYMBOL vmlinux 0x90ecacf4 inetdev_by_index +EXPORT_SYMBOL vmlinux 0x90faa40e blk_requeue_request +EXPORT_SYMBOL vmlinux 0x9101c8e4 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x911e0029 blk_put_queue +EXPORT_SYMBOL vmlinux 0x9120f5fd jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0x912557ce rtas_busy_delay +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x914dd440 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x915047a5 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x915e1208 tb_ticks_per_usec +EXPORT_SYMBOL vmlinux 0x91621d6a allocate_resource +EXPORT_SYMBOL vmlinux 0x9168c033 rtas_get_sensor +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x919d1163 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x91a5e947 __quota_error +EXPORT_SYMBOL vmlinux 0x91a917bc padata_do_serial +EXPORT_SYMBOL vmlinux 0x91adda74 make_bad_inode +EXPORT_SYMBOL vmlinux 0x9200852a __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x9205d32b ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x920ead1f phy_start_aneg +EXPORT_SYMBOL vmlinux 0x920f2454 __neigh_create +EXPORT_SYMBOL vmlinux 0x9213263e call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x92155758 __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x9225d6f4 tcp_syn_flood_action +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x925520d2 blk_start_plug +EXPORT_SYMBOL vmlinux 0x925b7885 mach_powermac +EXPORT_SYMBOL vmlinux 0x925d8ddf md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92bc220b lockref_get +EXPORT_SYMBOL vmlinux 0x92c457b6 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x92cf11e7 free_user_ns +EXPORT_SYMBOL vmlinux 0x92d632d9 dquot_disable +EXPORT_SYMBOL vmlinux 0x92d91fd2 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x92da8985 kfree_skb +EXPORT_SYMBOL vmlinux 0x92f3626d scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x92f82423 uart_match_port +EXPORT_SYMBOL vmlinux 0x92f9cbf6 revert_creds +EXPORT_SYMBOL vmlinux 0x92fb52ce __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x9309de94 cuda_request +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x9330cb9f sg_alloc_table +EXPORT_SYMBOL vmlinux 0x933c2aa1 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x93486750 padata_alloc +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x937eaedb mount_subtree +EXPORT_SYMBOL vmlinux 0x9388eea1 bio_phys_segments +EXPORT_SYMBOL vmlinux 0x938d2a95 tcp_disconnect +EXPORT_SYMBOL vmlinux 0x93a6e0b2 io_schedule +EXPORT_SYMBOL vmlinux 0x93adeb40 netif_carrier_on +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93e1cd5c inet_del_protocol +EXPORT_SYMBOL vmlinux 0x93e6a51d elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x93ecf2c7 netif_rx +EXPORT_SYMBOL vmlinux 0x93f26093 blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x941044bd input_set_keycode +EXPORT_SYMBOL vmlinux 0x9429833d tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x947ec456 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94bc9467 devm_gpio_free +EXPORT_SYMBOL vmlinux 0x94bc9901 agp_find_bridge +EXPORT_SYMBOL vmlinux 0x94bd22e6 crypto_sha256_update +EXPORT_SYMBOL vmlinux 0x94cbd061 dql_reset +EXPORT_SYMBOL vmlinux 0x94cc9fd8 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x94e069e9 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x9508f166 param_ops_bint +EXPORT_SYMBOL vmlinux 0x9514151a _mcount +EXPORT_SYMBOL vmlinux 0x9524b0ae _outsb +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x9558e2f4 ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x956ceaf3 xfrm_state_update +EXPORT_SYMBOL vmlinux 0x956f3aa3 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x95739dc8 flush_icache_user_range +EXPORT_SYMBOL vmlinux 0x958eefa9 netdev_lower_dev_get_private_rcu +EXPORT_SYMBOL vmlinux 0x95959458 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x959f382b misc_register +EXPORT_SYMBOL vmlinux 0x95cb929c of_find_all_nodes +EXPORT_SYMBOL vmlinux 0x95ccfafa key_revoke +EXPORT_SYMBOL vmlinux 0x95e5bf3b scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x95e6e500 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x95e7e4ff dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x95f2c3c7 of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0x95f39e8a neigh_destroy +EXPORT_SYMBOL vmlinux 0x95f57165 scsi_setup_blk_pc_cmnd +EXPORT_SYMBOL vmlinux 0x95fad9a8 input_unregister_device +EXPORT_SYMBOL vmlinux 0x96337f65 skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x964cf2d2 sock_wmalloc +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x9665b463 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x96898769 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x96c3e6dc n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x96c8d0ed __nla_put +EXPORT_SYMBOL vmlinux 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96d274d2 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x96dbcca2 ioremap_prot +EXPORT_SYMBOL vmlinux 0x96f4e14a empty_aops +EXPORT_SYMBOL vmlinux 0x96f4e22b cap_mmap_file +EXPORT_SYMBOL vmlinux 0x96f7a05e dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x96fa66c4 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x97255bdf strlen +EXPORT_SYMBOL vmlinux 0x972ef536 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x97412f84 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x9748927f _outsw_ns +EXPORT_SYMBOL vmlinux 0x9751165a arp_invalidate +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x975a635d neigh_for_each +EXPORT_SYMBOL vmlinux 0x975b6115 inet_frags_init +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a60e3d param_get_bool +EXPORT_SYMBOL vmlinux 0x97b4500c __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x97df2ccb eth_validate_addr +EXPORT_SYMBOL vmlinux 0x97e6feb0 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x981661a0 __idr_get_new_above +EXPORT_SYMBOL vmlinux 0x9847ffb9 sock_create_kern +EXPORT_SYMBOL vmlinux 0x9848c07d pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x9857efea agp_allocate_memory +EXPORT_SYMBOL vmlinux 0x9860e5d6 tcp_gro_receive +EXPORT_SYMBOL vmlinux 0x986c5e8f skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x987b9654 kobject_del +EXPORT_SYMBOL vmlinux 0x98c1ad9b pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0x98d2f879 dcache_readdir +EXPORT_SYMBOL vmlinux 0x98dabb31 netif_rx_ni +EXPORT_SYMBOL vmlinux 0x98db6529 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x98fa21b0 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x98fe7882 DMA_MODE_READ +EXPORT_SYMBOL vmlinux 0x990f3daa __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x9912f9c4 pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x9963cdb5 cfb_fillrect +EXPORT_SYMBOL vmlinux 0x996428d3 arp_tbl +EXPORT_SYMBOL vmlinux 0x9964fe20 thaw_super +EXPORT_SYMBOL vmlinux 0x9974eee4 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x997c212f fget_light +EXPORT_SYMBOL vmlinux 0x9990fcc3 generic_pipe_buf_map +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e0065 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99ac1f1a dquot_scan_active +EXPORT_SYMBOL vmlinux 0x99afe916 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x99bb8806 memmove +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99f5b1d8 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x99f63601 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a43d590 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x9a5d0e39 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x9a626734 ftrace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x9a701f46 sock_recvmsg +EXPORT_SYMBOL vmlinux 0x9a7e9740 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x9a99c85a proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x9aa49431 phy_print_status +EXPORT_SYMBOL vmlinux 0x9aaa0eeb bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x9aac6e1a block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x9aaddd49 input_free_device +EXPORT_SYMBOL vmlinux 0x9ac06af1 tty_lock +EXPORT_SYMBOL vmlinux 0x9ae14147 ilookup +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b4a10a7 scsi_print_command +EXPORT_SYMBOL vmlinux 0x9b6e61cb __bio_clone +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b88f884 netif_receive_skb +EXPORT_SYMBOL vmlinux 0x9b9dfc4f freeze_super +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bb164d6 blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0x9bc6823d filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x9bce482f __release_region +EXPORT_SYMBOL vmlinux 0x9be21a6c __genl_register_family +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9bf8d6b5 netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x9c184745 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x9c2a3b94 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x9c3b1df1 devm_gpiod_put +EXPORT_SYMBOL vmlinux 0x9c3e5065 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x9c5d745f __blk_end_request +EXPORT_SYMBOL vmlinux 0x9c5f2614 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0x9c6a8e11 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x9caa4bbf nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cb3636f pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x9ce3f83f nvram_write_byte +EXPORT_SYMBOL vmlinux 0x9ceb163c memcpy_toiovec +EXPORT_SYMBOL vmlinux 0x9cef3cc5 __idr_remove_all +EXPORT_SYMBOL vmlinux 0x9cf40d43 unregister_qdisc +EXPORT_SYMBOL vmlinux 0x9cf7bc24 blk_mq_insert_request +EXPORT_SYMBOL vmlinux 0x9cfd56c5 scsi_print_status +EXPORT_SYMBOL vmlinux 0x9d04d7a7 rtas +EXPORT_SYMBOL vmlinux 0x9d0854f8 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d113874 rtnl_notify +EXPORT_SYMBOL vmlinux 0x9d14983a ppc_enable_pmcs +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d58349a of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0x9d5c0212 prepare_creds +EXPORT_SYMBOL vmlinux 0x9d5e2158 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x9d669763 memcpy +EXPORT_SYMBOL vmlinux 0x9d74da08 of_phy_find_device +EXPORT_SYMBOL vmlinux 0x9d7ce8dd _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x9d87fa04 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x9d90f95f __crc32c_le_combine +EXPORT_SYMBOL vmlinux 0x9d998724 register_netdev +EXPORT_SYMBOL vmlinux 0x9d9e3ab6 kernel_write +EXPORT_SYMBOL vmlinux 0x9db7da69 dev_get_by_name +EXPORT_SYMBOL vmlinux 0x9dba7ec2 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0x9dd84aec vfs_mkdir +EXPORT_SYMBOL vmlinux 0x9df4b1cb netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x9dfe7307 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e0e97c9 pci_bus_get +EXPORT_SYMBOL vmlinux 0x9e1809fa scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x9e1cfc90 ioremap_wc +EXPORT_SYMBOL vmlinux 0x9e2000a7 memcpy_toiovecend +EXPORT_SYMBOL vmlinux 0x9e44b9b7 of_get_next_available_child +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e5b1d98 unlock_page +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e672ff6 scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x9e6a5f1a udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x9e8aff37 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x9e97375d rtas_busy_delay_time +EXPORT_SYMBOL vmlinux 0x9e9f1714 __bitmap_andnot +EXPORT_SYMBOL vmlinux 0x9ed2eec7 param_set_ushort +EXPORT_SYMBOL vmlinux 0x9ed4ce31 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x9ed685ee iov_iter_advance +EXPORT_SYMBOL vmlinux 0x9ed9bd2d inode_needs_sync +EXPORT_SYMBOL vmlinux 0x9f2bdaac __bitmap_or +EXPORT_SYMBOL vmlinux 0x9f35b54e dev_mc_sync +EXPORT_SYMBOL vmlinux 0x9f3e3810 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f634cce __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x9f7fce3f seq_pad +EXPORT_SYMBOL vmlinux 0x9f8c32e7 scsi_host_get +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9faea86c udp_del_offload +EXPORT_SYMBOL vmlinux 0x9fb3dd30 memcpy_fromiovec +EXPORT_SYMBOL vmlinux 0x9fca261c bdget_disk +EXPORT_SYMBOL vmlinux 0x9fd23167 sg_miter_stop +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9fe4d759 md_write_start +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa05408e4 sock_edemux +EXPORT_SYMBOL vmlinux 0xa056cd8f lease_modify +EXPORT_SYMBOL vmlinux 0xa057c09b scsi_print_sense +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa067a25b udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0xa06df9e1 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa082d5b0 simple_open +EXPORT_SYMBOL vmlinux 0xa0966e4b unregister_shrinker +EXPORT_SYMBOL vmlinux 0xa0aec112 sk_wait_data +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0c9b325 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0xa0ceef51 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0e96b2f pci_disable_link_state +EXPORT_SYMBOL vmlinux 0xa0ea2646 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0f18a51 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0xa0fa4d37 vfs_getattr +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa169389f pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0xa17aa0ca drop_nlink +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1ba4445 touch_atime +EXPORT_SYMBOL vmlinux 0xa1bad437 build_skb +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1c99385 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xa1ceb982 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0xa1cfe4a9 pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0xa1e975d0 d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0xa1f0f05f ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xa1f8fe75 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xa20ce1b8 net_msg_warn +EXPORT_SYMBOL vmlinux 0xa24b3f5a bio_copy_user +EXPORT_SYMBOL vmlinux 0xa24ffa6e d_delete +EXPORT_SYMBOL vmlinux 0xa255bb85 devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0xa26916be datagram_poll +EXPORT_SYMBOL vmlinux 0xa278fa7e dev_mc_add +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa28a2ace ipmi_set_gets_events +EXPORT_SYMBOL vmlinux 0xa295eec9 check_submounts_and_drop +EXPORT_SYMBOL vmlinux 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL vmlinux 0xa2b5b3bd phy_driver_register +EXPORT_SYMBOL vmlinux 0xa2b5d6ae ps2_command +EXPORT_SYMBOL vmlinux 0xa2bbed37 crash_shutdown_register +EXPORT_SYMBOL vmlinux 0xa2c06d8c dquot_quota_on +EXPORT_SYMBOL vmlinux 0xa2d26734 write_inode_now +EXPORT_SYMBOL vmlinux 0xa2eaddcf gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0xa2ef34d7 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0xa2f37cad do_splice_direct +EXPORT_SYMBOL vmlinux 0xa2ff5aa7 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0xa303d1ff dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0xa332464a of_get_cpu_node +EXPORT_SYMBOL vmlinux 0xa340f730 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0xa34f1ef5 crc32_le +EXPORT_SYMBOL vmlinux 0xa35de80f ipv4_config +EXPORT_SYMBOL vmlinux 0xa3678a05 arp_xmit +EXPORT_SYMBOL vmlinux 0xa372f9a9 pcie_get_readrq +EXPORT_SYMBOL vmlinux 0xa38e691a ioremap_bot +EXPORT_SYMBOL vmlinux 0xa39344c9 security_path_symlink +EXPORT_SYMBOL vmlinux 0xa3973b48 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0xa39785f4 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0xa39b4cf2 udelay +EXPORT_SYMBOL vmlinux 0xa3a5248b set_security_override +EXPORT_SYMBOL vmlinux 0xa3aa6732 seq_putc +EXPORT_SYMBOL vmlinux 0xa3abc422 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xa3b42735 elevator_change +EXPORT_SYMBOL vmlinux 0xa3cea319 pci_fixup_device +EXPORT_SYMBOL vmlinux 0xa3e75545 flush_tlb_kernel_range +EXPORT_SYMBOL vmlinux 0xa405ce22 notify_change +EXPORT_SYMBOL vmlinux 0xa41f79f4 blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0xa432052d neigh_parms_release +EXPORT_SYMBOL vmlinux 0xa43b1297 vscnprintf +EXPORT_SYMBOL vmlinux 0xa43b9539 memcpy_fromiovecend +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa4752e66 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0xa4911197 pci_disable_ltr +EXPORT_SYMBOL vmlinux 0xa4989d2b padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xa4a94d26 find_next_bit_le +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4bdda84 tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xa4bff316 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0xa4cc4aef request_key_async +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4f0662c sock_no_poll +EXPORT_SYMBOL vmlinux 0xa4f937fd inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0xa4f9c13b __dquot_transfer +EXPORT_SYMBOL vmlinux 0xa500f641 agp_free_memory +EXPORT_SYMBOL vmlinux 0xa51506a8 inet_put_port +EXPORT_SYMBOL vmlinux 0xa542ea6a gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa55e0d72 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0xa56a3df9 iov_iter_copy_from_user +EXPORT_SYMBOL vmlinux 0xa56c14dd tcf_hash_search +EXPORT_SYMBOL vmlinux 0xa57c8fa8 generic_removexattr +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa59bb5b5 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0xa5a633b9 sg_last +EXPORT_SYMBOL vmlinux 0xa5cef8ad release_resource +EXPORT_SYMBOL vmlinux 0xa5e62ace netlink_ack +EXPORT_SYMBOL vmlinux 0xa5ec92b9 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0xa5ff8d76 add_disk +EXPORT_SYMBOL vmlinux 0xa62a58d3 pci_find_capability +EXPORT_SYMBOL vmlinux 0xa63a2f9b param_get_ulong +EXPORT_SYMBOL vmlinux 0xa652c4ef __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0xa65972b8 _memcpy_toio +EXPORT_SYMBOL vmlinux 0xa65c5b4c netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0xa65ce6e3 fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0xa6678258 pci_find_bus +EXPORT_SYMBOL vmlinux 0xa6715115 do_settimeofday +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa67bc657 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6970398 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0xa6987511 free_task +EXPORT_SYMBOL vmlinux 0xa6ab2caf blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0xa6bc0dd7 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0xa6da5c31 submit_bio_wait +EXPORT_SYMBOL vmlinux 0xa6e07dcd bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0xa6e38891 phy_disconnect +EXPORT_SYMBOL vmlinux 0xa6f13505 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xa6f93db3 pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0xa720678c lg_global_lock +EXPORT_SYMBOL vmlinux 0xa7276c8a xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa73fc98f of_n_addr_cells +EXPORT_SYMBOL vmlinux 0xa744a7be __block_write_begin +EXPORT_SYMBOL vmlinux 0xa7887587 nobh_write_end +EXPORT_SYMBOL vmlinux 0xa78d9eb7 slhc_uncompress +EXPORT_SYMBOL vmlinux 0xa7f850ef tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0xa805da0e open_exec +EXPORT_SYMBOL vmlinux 0xa80e3b4e jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0xa820dcc1 dev_emerg +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa8404a3a netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa84fe1a0 scsi_reset_provider +EXPORT_SYMBOL vmlinux 0xa85d17ab __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xa861ab6e __ioremap +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa87ea5fa get_pci_dma_ops +EXPORT_SYMBOL vmlinux 0xa89464b7 __ashldi3 +EXPORT_SYMBOL vmlinux 0xa896ea91 setup_new_exec +EXPORT_SYMBOL vmlinux 0xa89d1886 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0xa89d4980 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0xa8b915c3 inet_getname +EXPORT_SYMBOL vmlinux 0xa8ccf264 register_nls +EXPORT_SYMBOL vmlinux 0xa8e75063 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0xa8e9b5d4 dev_mc_del +EXPORT_SYMBOL vmlinux 0xa8f59536 macio_request_resources +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa9099340 zerocopy_sg_from_iovec +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa924d215 md_finish_reshape +EXPORT_SYMBOL vmlinux 0xa9273e1a epapr_hypercall_start +EXPORT_SYMBOL vmlinux 0xa929bd7b tty_register_driver +EXPORT_SYMBOL vmlinux 0xa9571d6d DMA_MODE_WRITE +EXPORT_SYMBOL vmlinux 0xa977cf32 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0xa986120e sock_no_listen +EXPORT_SYMBOL vmlinux 0xa9b63345 of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0xa9c2d762 ipmi_smi_watcher_unregister +EXPORT_SYMBOL vmlinux 0xa9efbcd1 elv_abort_queue +EXPORT_SYMBOL vmlinux 0xa9effda5 __first_cpu +EXPORT_SYMBOL vmlinux 0xa9f3ef4d blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0xa9fda4a3 override_creds +EXPORT_SYMBOL vmlinux 0xaa0a9b37 kill_anon_super +EXPORT_SYMBOL vmlinux 0xaa257126 block_invalidatepage +EXPORT_SYMBOL vmlinux 0xaa29ab48 blkdev_get +EXPORT_SYMBOL vmlinux 0xaa2e4a1f genphy_setup_forced +EXPORT_SYMBOL vmlinux 0xaa369bc6 key_type_keyring +EXPORT_SYMBOL vmlinux 0xaa46e87e lg_local_unlock +EXPORT_SYMBOL vmlinux 0xaa4df512 pmu_batteries +EXPORT_SYMBOL vmlinux 0xaa516a2b ftrace_raw_output_prep +EXPORT_SYMBOL vmlinux 0xaa53ff03 d_instantiate_unique +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 0xaa9087c0 param_ops_string +EXPORT_SYMBOL vmlinux 0xaa92a0ed inet_frag_kill +EXPORT_SYMBOL vmlinux 0xaaa5cd21 alloc_disk +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaadaa09a abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0xaaeeee87 pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0xaafc494d __find_get_block +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab2d459d pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0xab3570c0 writeback_in_progress +EXPORT_SYMBOL vmlinux 0xab3a9ef5 sock_no_connect +EXPORT_SYMBOL vmlinux 0xab3b78f6 blk_mq_end_io +EXPORT_SYMBOL vmlinux 0xab49b086 clocksource_unregister +EXPORT_SYMBOL vmlinux 0xab4d3788 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0xab5e374f skb_copy_datagram_iovec +EXPORT_SYMBOL vmlinux 0xab604dcc ip6_xmit +EXPORT_SYMBOL vmlinux 0xab694444 bsearch +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab847560 jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0xab86a5fa agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0xab8a3810 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0xaba8e6d6 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0xabb60e5f pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0xabc6dd63 cpufreq_sysfs_create_file +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabd0c91c rtc_time_to_tm +EXPORT_SYMBOL vmlinux 0xabd284de fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0xabddca0b pci_pme_capable +EXPORT_SYMBOL vmlinux 0xabe6db0e seq_puts +EXPORT_SYMBOL vmlinux 0xabeb9bfe twl6040_reg_read +EXPORT_SYMBOL vmlinux 0xabf97d53 put_disk +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac1f3642 posix_test_lock +EXPORT_SYMBOL vmlinux 0xac26b820 _raw_write_lock +EXPORT_SYMBOL vmlinux 0xac62eee1 submit_bh +EXPORT_SYMBOL vmlinux 0xac6fa0a6 arp_create +EXPORT_SYMBOL vmlinux 0xac72f939 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0xac80c99a pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0xac890954 iterate_mounts +EXPORT_SYMBOL vmlinux 0xac935406 phy_stop +EXPORT_SYMBOL vmlinux 0xac9b6c26 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacaff259 scsi_finish_command +EXPORT_SYMBOL vmlinux 0xacb8e588 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0xacc5b5d2 csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd4e305 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0xace883b9 netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xacfd87f1 console_start +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad0a6e0a flex_array_prealloc +EXPORT_SYMBOL vmlinux 0xad0c99dc inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0xad0cac01 inet_add_offload +EXPORT_SYMBOL vmlinux 0xad0cda17 set_groups +EXPORT_SYMBOL vmlinux 0xad164581 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0xad448083 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xad46dec2 of_count_phandle_with_args +EXPORT_SYMBOL vmlinux 0xad472501 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xad50cebb i8253_lock +EXPORT_SYMBOL vmlinux 0xad657d04 udp_ioctl +EXPORT_SYMBOL vmlinux 0xad76a868 devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0xad8193df ata_dev_printk +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad85b3e8 bioset_create +EXPORT_SYMBOL vmlinux 0xad8720ce sk_send_sigurg +EXPORT_SYMBOL vmlinux 0xad945b11 netdev_crit +EXPORT_SYMBOL vmlinux 0xada762ca phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0xadad5d7d simple_fill_super +EXPORT_SYMBOL vmlinux 0xadca2a45 skb_copy_and_csum_datagram_iovec +EXPORT_SYMBOL vmlinux 0xadd1e971 alignment_exception +EXPORT_SYMBOL vmlinux 0xaddd4770 __debugger_iabr_match +EXPORT_SYMBOL vmlinux 0xadf42bd5 __request_region +EXPORT_SYMBOL vmlinux 0xadf62068 dump_emit +EXPORT_SYMBOL vmlinux 0xadfd2ac8 tcf_hash_check +EXPORT_SYMBOL vmlinux 0xae0935f3 tty_port_close_end +EXPORT_SYMBOL vmlinux 0xae3e839c mmc_start_bkops +EXPORT_SYMBOL vmlinux 0xae46ebba genphy_suspend +EXPORT_SYMBOL vmlinux 0xae49eb93 gen10g_config_aneg +EXPORT_SYMBOL vmlinux 0xae545f06 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae7b02d4 disk_stack_limits +EXPORT_SYMBOL vmlinux 0xae8fa83d i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0xaec480bc twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0xaec655c7 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0xaed107e3 vga_get +EXPORT_SYMBOL vmlinux 0xaf05b91b of_device_is_available +EXPORT_SYMBOL vmlinux 0xaf063510 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xaf0652d8 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0xaf0b2b4b inet6_ioctl +EXPORT_SYMBOL vmlinux 0xaf12fe83 netdev_change_features +EXPORT_SYMBOL vmlinux 0xaf18f94e unregister_cdrom +EXPORT_SYMBOL vmlinux 0xaf2d872c prepare_to_wait +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf5f7994 remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xaf64ad0d zlib_deflate +EXPORT_SYMBOL vmlinux 0xaf67604b get_super_thawed +EXPORT_SYMBOL vmlinux 0xaf91d89f __kernel_param_lock +EXPORT_SYMBOL vmlinux 0xaf9a229e inet_stream_connect +EXPORT_SYMBOL vmlinux 0xafa412b6 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0xafad493b param_ops_ushort +EXPORT_SYMBOL vmlinux 0xafbcaaf9 clone_cred +EXPORT_SYMBOL vmlinux 0xafd68c33 flex_array_free +EXPORT_SYMBOL vmlinux 0xafff3d1d mempool_alloc +EXPORT_SYMBOL vmlinux 0xb027b78f i2c_bit_add_numbered_bus +EXPORT_SYMBOL vmlinux 0xb041b771 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0xb049bfa2 bio_map_kern +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb08bc324 ppp_input +EXPORT_SYMBOL vmlinux 0xb0948453 simple_transaction_set +EXPORT_SYMBOL vmlinux 0xb0b847ac __bitmap_full +EXPORT_SYMBOL vmlinux 0xb0c05371 nla_put_nohdr +EXPORT_SYMBOL vmlinux 0xb0d352ea dquot_initialize +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0ffda2f blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xb10387e8 security_inode_init_security +EXPORT_SYMBOL vmlinux 0xb10fdee1 dma_async_device_register +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb12e0006 d_alloc_name +EXPORT_SYMBOL vmlinux 0xb13985c3 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0xb15bd8fa tb_ticks_per_sec +EXPORT_SYMBOL vmlinux 0xb169ddba account_page_dirtied +EXPORT_SYMBOL vmlinux 0xb176e9ec mutex_unlock +EXPORT_SYMBOL vmlinux 0xb18c55ff neigh_app_ns +EXPORT_SYMBOL vmlinux 0xb19760c3 bitmap_onto +EXPORT_SYMBOL vmlinux 0xb1bc1988 abx500_mask_and_set_register_interruptible +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 0xb1db9e4e param_get_invbool +EXPORT_SYMBOL vmlinux 0xb1de0c16 page_follow_link_light +EXPORT_SYMBOL vmlinux 0xb1ef6de7 inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0xb233762c atomic64_set +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb26bf3ec tty_register_ldisc +EXPORT_SYMBOL vmlinux 0xb296aad9 pci_assign_resource +EXPORT_SYMBOL vmlinux 0xb2b94674 __crc32c_le +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2cf05e0 pci_read_vpd +EXPORT_SYMBOL vmlinux 0xb2d48a2e queue_work_on +EXPORT_SYMBOL vmlinux 0xb2dca289 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0xb2dcda3d set_bh_page +EXPORT_SYMBOL vmlinux 0xb2efaa4b generic_file_aio_read +EXPORT_SYMBOL vmlinux 0xb304acff ida_get_new_above +EXPORT_SYMBOL vmlinux 0xb31526ee sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0xb3592563 of_match_device +EXPORT_SYMBOL vmlinux 0xb35af275 __getblk +EXPORT_SYMBOL vmlinux 0xb3751b36 __sb_end_write +EXPORT_SYMBOL vmlinux 0xb38f5a39 mmc_can_reset +EXPORT_SYMBOL vmlinux 0xb3b9dfc2 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0xb3bea535 dev_close +EXPORT_SYMBOL vmlinux 0xb3d35986 dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0xb3d90d19 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0xb3de4633 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0xb3f0cdcd mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb42fbdc9 posix_lock_file +EXPORT_SYMBOL vmlinux 0xb431d278 mpage_readpages +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb490d6a4 generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0xb4af151c tty_name +EXPORT_SYMBOL vmlinux 0xb4b6ca6a blk_integrity_compare +EXPORT_SYMBOL vmlinux 0xb4ec3a01 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0xb504a36b __skb_get_hash +EXPORT_SYMBOL vmlinux 0xb50da435 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0xb5299bbd cdrom_media_changed +EXPORT_SYMBOL vmlinux 0xb53a4336 kmap_pte +EXPORT_SYMBOL vmlinux 0xb54533f7 usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb591af0e mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0xb5a00b83 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0xb5a3f289 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5a8d793 mpage_writepages +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5d9454c printk_emit +EXPORT_SYMBOL vmlinux 0xb5da4218 i2c_master_send +EXPORT_SYMBOL vmlinux 0xb5e318fe scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0xb60fe6bc i8042_remove_filter +EXPORT_SYMBOL vmlinux 0xb6390132 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0xb6394d4b param_set_bint +EXPORT_SYMBOL vmlinux 0xb65368b4 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0xb6599b9a machine_check_exception +EXPORT_SYMBOL vmlinux 0xb666dfab kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb6822a33 radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xb686e40a scsi_remove_host +EXPORT_SYMBOL vmlinux 0xb6896671 crc_t10dif +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb698cd78 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0xb69c19be fsl_lbc_ctrl_dev +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6aac6e5 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0xb6b46a7c param_ops_int +EXPORT_SYMBOL vmlinux 0xb6b63788 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0xb6be7043 load_nls +EXPORT_SYMBOL vmlinux 0xb6c4c7df xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0xb6c5a973 scsi_show_result +EXPORT_SYMBOL vmlinux 0xb6efd75d kfree_skb_list +EXPORT_SYMBOL vmlinux 0xb6f75fa3 input_grab_device +EXPORT_SYMBOL vmlinux 0xb753bcc8 __ashrdi3 +EXPORT_SYMBOL vmlinux 0xb75c5bcd sk_stop_timer +EXPORT_SYMBOL vmlinux 0xb762faaa sync_inodes_sb +EXPORT_SYMBOL vmlinux 0xb7637b01 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0xb76dd982 ipmi_get_smi_info +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb78d32e5 lock_fb_info +EXPORT_SYMBOL vmlinux 0xb79a4e1a store_fp_state +EXPORT_SYMBOL vmlinux 0xb7a99781 __irq_regs +EXPORT_SYMBOL vmlinux 0xb7ad06dc filemap_flush +EXPORT_SYMBOL vmlinux 0xb7b61546 crc32_be +EXPORT_SYMBOL vmlinux 0xb7c56666 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0xb7c6db70 sysctl_max_skb_frags +EXPORT_SYMBOL vmlinux 0xb7ea8b7e do_splice_to +EXPORT_SYMBOL vmlinux 0xb7fff75d tcf_register_action +EXPORT_SYMBOL vmlinux 0xb80b0ad2 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0xb80cbe8c tcp_recvmsg +EXPORT_SYMBOL vmlinux 0xb81960ca snprintf +EXPORT_SYMBOL vmlinux 0xb81f5c1f scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xb8314cc8 dev_set_drvdata +EXPORT_SYMBOL vmlinux 0xb835b3e4 radix_tree_prev_hole +EXPORT_SYMBOL vmlinux 0xb8631dd1 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0xb867f683 nf_getsockopt +EXPORT_SYMBOL vmlinux 0xb8722e24 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb88291ef input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0xb8859269 unregister_filesystem +EXPORT_SYMBOL vmlinux 0xb8935182 security_path_mknod +EXPORT_SYMBOL vmlinux 0xb8aa2342 __check_region +EXPORT_SYMBOL vmlinux 0xb8b0b85c bio_split +EXPORT_SYMBOL vmlinux 0xb8bb326e wake_up_process +EXPORT_SYMBOL vmlinux 0xb8c1d01f udp_poll +EXPORT_SYMBOL vmlinux 0xb8d73e97 param_set_uint +EXPORT_SYMBOL vmlinux 0xb8dba889 bdevname +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb9036075 ata_port_printk +EXPORT_SYMBOL vmlinux 0xb90c09b0 led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0xb92f2ecd pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0xb9335874 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0xb939a974 simple_empty +EXPORT_SYMBOL vmlinux 0xb950a9dd mach_chrp +EXPORT_SYMBOL vmlinux 0xb95f46c2 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0xb96249e2 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0xb98a0185 rtc_tm_to_time +EXPORT_SYMBOL vmlinux 0xb9a08fe9 __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xb9c551dd phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0xb9e395d4 iterate_supers_type +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9f3472b __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0xb9f707c0 d_set_d_op +EXPORT_SYMBOL vmlinux 0xba08bae3 security_path_truncate +EXPORT_SYMBOL vmlinux 0xba14e964 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0xba373bc9 single_release +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba49c152 release_pages +EXPORT_SYMBOL vmlinux 0xba4aefca blk_start_request +EXPORT_SYMBOL vmlinux 0xba7e6511 genlmsg_put +EXPORT_SYMBOL vmlinux 0xba8d0792 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0xbaa65ed5 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0xbaadc05a bio_alloc_pages +EXPORT_SYMBOL vmlinux 0xbac3ef5a generic_write_checks +EXPORT_SYMBOL vmlinux 0xbace84c3 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0xbad2b890 locks_init_lock +EXPORT_SYMBOL vmlinux 0xbae8901b __ps2_command +EXPORT_SYMBOL vmlinux 0xbb034d2b mb_cache_shrink +EXPORT_SYMBOL vmlinux 0xbb0cfeca kset_unregister +EXPORT_SYMBOL vmlinux 0xbb11befb follow_up +EXPORT_SYMBOL vmlinux 0xbb189cad disallow_signal +EXPORT_SYMBOL vmlinux 0xbb47a854 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb713e6d sk_filter_release_rcu +EXPORT_SYMBOL vmlinux 0xbb74ac15 udp_proc_register +EXPORT_SYMBOL vmlinux 0xbb77ceeb keyring_alloc +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbbb03406 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0xbbc9facc bio_integrity_advance +EXPORT_SYMBOL vmlinux 0xbbd79291 simple_transaction_release +EXPORT_SYMBOL vmlinux 0xbc0cae4f shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0xbc0e0c50 handle_edge_irq +EXPORT_SYMBOL vmlinux 0xbc2c83ef scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0xbc316de4 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0xbc3f6afa down_read +EXPORT_SYMBOL vmlinux 0xbc72d27e blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0xbcaf5fe4 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0xbcbc4f36 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0xbcbe0fe7 fb_set_var +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbccdc2f6 flex_array_put +EXPORT_SYMBOL vmlinux 0xbccfef04 seq_read +EXPORT_SYMBOL vmlinux 0xbcde2c53 bio_copy_kern +EXPORT_SYMBOL vmlinux 0xbcdedba7 of_get_mac_address +EXPORT_SYMBOL vmlinux 0xbce6d539 fb_find_mode +EXPORT_SYMBOL vmlinux 0xbcf150f9 xor_altivec_5 +EXPORT_SYMBOL vmlinux 0xbd015999 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0xbd25e66e ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0xbd284d1f i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0xbd2a476c bio_integrity_trim +EXPORT_SYMBOL vmlinux 0xbd39c61a cdrom_ioctl +EXPORT_SYMBOL vmlinux 0xbd3b6bd4 deactivate_super +EXPORT_SYMBOL vmlinux 0xbd4a6820 blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0xbd61c44e alloc_anon_inode +EXPORT_SYMBOL vmlinux 0xbd803510 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xbd8d541d flush_hash_pages +EXPORT_SYMBOL vmlinux 0xbd9863cd xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0xbd9e5d49 __lshrdi3 +EXPORT_SYMBOL vmlinux 0xbdb371df generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0xbdba9828 hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xbdd3b390 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0xbde4546a scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0xbe09d50e key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0xbe0cdb2f inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0xbe0d19fe __register_binfmt +EXPORT_SYMBOL vmlinux 0xbe0e5118 nla_memcmp +EXPORT_SYMBOL vmlinux 0xbe133071 bdi_destroy +EXPORT_SYMBOL vmlinux 0xbe143e9e pci_enable_obff +EXPORT_SYMBOL vmlinux 0xbe2c0274 add_timer +EXPORT_SYMBOL vmlinux 0xbe2fd0db rt6_lookup +EXPORT_SYMBOL vmlinux 0xbe41b91b twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0xbe4f9478 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0xbe5f7933 clear_user_page +EXPORT_SYMBOL vmlinux 0xbe63ee40 request_resource +EXPORT_SYMBOL vmlinux 0xbe77aebe down_write_trylock +EXPORT_SYMBOL vmlinux 0xbe7f4bd3 bdev_read_only +EXPORT_SYMBOL vmlinux 0xbe987dda dev_mc_del_global +EXPORT_SYMBOL vmlinux 0xbec25473 of_parse_phandle +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf10b340 dev_uc_sync +EXPORT_SYMBOL vmlinux 0xbf111ec7 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0xbf357c01 kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0xbf4dbc71 dcache_dir_close +EXPORT_SYMBOL vmlinux 0xbf6b31de tcp_check_req +EXPORT_SYMBOL vmlinux 0xbf7415ca scsi_is_host_device +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8264dd jbd2_journal_start +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfae5888 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0xbfb0fd54 generic_pipe_buf_unmap +EXPORT_SYMBOL vmlinux 0xbfb8b0b7 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xbfc043d5 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfc9e6a4 scsi_prep_return +EXPORT_SYMBOL vmlinux 0xbfda6c05 __invalidate_device +EXPORT_SYMBOL vmlinux 0xbfdb4a49 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xc00a62da __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0xc068440e __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0802d35 security_d_instantiate +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc08274e6 cfb_imageblit +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0b8bad2 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0xc0bf243c dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0xc0cdd314 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0xc0d84ced cuda_poll +EXPORT_SYMBOL vmlinux 0xc0e6a894 tty_devnum +EXPORT_SYMBOL vmlinux 0xc0fe1731 redraw_screen +EXPORT_SYMBOL vmlinux 0xc10134b7 pci_map_rom +EXPORT_SYMBOL vmlinux 0xc1097cb3 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0xc12e06ff blk_mq_free_single_hw_queue +EXPORT_SYMBOL vmlinux 0xc12ec3a6 dns_query +EXPORT_SYMBOL vmlinux 0xc130182b agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0xc18cf3dc path_get +EXPORT_SYMBOL vmlinux 0xc19bf713 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0xc1a3affe jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0xc1b82d22 register_shrinker +EXPORT_SYMBOL vmlinux 0xc1bbd271 mnt_unpin +EXPORT_SYMBOL vmlinux 0xc1bf8825 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0xc1c2a0bb remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0xc1c2dd09 __hw_addr_flush +EXPORT_SYMBOL vmlinux 0xc1dd4a7f adb_request +EXPORT_SYMBOL vmlinux 0xc1e686b8 dquot_destroy +EXPORT_SYMBOL vmlinux 0xc20dd108 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0xc21dfab5 mdiobus_write +EXPORT_SYMBOL vmlinux 0xc241337d gen10g_restart_aneg +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc2474556 bio_endio +EXPORT_SYMBOL vmlinux 0xc256e762 __bitmap_equal +EXPORT_SYMBOL vmlinux 0xc25fb424 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0xc26b3628 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0xc2b514d5 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0xc2c10d3f netdev_state_change +EXPORT_SYMBOL vmlinux 0xc2c50226 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0xc2d6432d xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xc2d711e1 krealloc +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f4fc23 fb_blank +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc2fd9475 pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0xc30363a0 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xc3040ac6 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0xc322f3cb posix_unblock_lock +EXPORT_SYMBOL vmlinux 0xc35b4839 unregister_md_personality +EXPORT_SYMBOL vmlinux 0xc36082bb led_set_brightness +EXPORT_SYMBOL vmlinux 0xc368849f nvram_sync +EXPORT_SYMBOL vmlinux 0xc38e07ae pm860x_page_reg_read +EXPORT_SYMBOL vmlinux 0xc3ae099a devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0xc3d5dfad bioset_integrity_free +EXPORT_SYMBOL vmlinux 0xc40ac705 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0xc41f0516 node_states +EXPORT_SYMBOL vmlinux 0xc4469b7a cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0xc4481531 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0xc449be1f agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0xc45755de find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0xc46224b9 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0xc47cdf9c _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0xc48f510b tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xc496ed1f pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc4a1a72d sock_kfree_s +EXPORT_SYMBOL vmlinux 0xc4a4711f iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0xc4a55dc8 dentry_unhash +EXPORT_SYMBOL vmlinux 0xc4b65d85 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0xc4b9231b mdiobus_scan +EXPORT_SYMBOL vmlinux 0xc4d6c87c scsi_prep_state_check +EXPORT_SYMBOL vmlinux 0xc520bf20 agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc55c2a9d inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0xc55de23c percpu_counter_set +EXPORT_SYMBOL vmlinux 0xc56af3bb fsync_bdev +EXPORT_SYMBOL vmlinux 0xc5718627 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0xc58066e2 netlink_unicast +EXPORT_SYMBOL vmlinux 0xc589e044 param_set_long +EXPORT_SYMBOL vmlinux 0xc58df4c6 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5df2767 pci_set_master +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc603c3d5 macio_enable_devres +EXPORT_SYMBOL vmlinux 0xc61d9b92 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0xc61ecccf __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc646ddfd blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc665d6d7 of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0xc66781df bdi_unregister +EXPORT_SYMBOL vmlinux 0xc668c457 scsi_nonblockable_ioctl +EXPORT_SYMBOL vmlinux 0xc66f0723 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0xc679eaf2 mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0xc68bfd38 key_unlink +EXPORT_SYMBOL vmlinux 0xc694e22c pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0xc6a25df9 kmem_cache_create +EXPORT_SYMBOL vmlinux 0xc6a666ce replace_mount_options +EXPORT_SYMBOL vmlinux 0xc6aca835 phy_drivers_register +EXPORT_SYMBOL vmlinux 0xc6b22c71 __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xc6c9ef77 dev_get_by_flags_rcu +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6e26ce9 make_kprojid +EXPORT_SYMBOL vmlinux 0xc6f4c7c6 try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xc702d3ed netdev_err +EXPORT_SYMBOL vmlinux 0xc7117895 inc_nlink +EXPORT_SYMBOL vmlinux 0xc7143a0b proc_set_user +EXPORT_SYMBOL vmlinux 0xc71bcce8 mount_pseudo +EXPORT_SYMBOL vmlinux 0xc71e27ff i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc753bad0 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0xc758d845 tcp_connect +EXPORT_SYMBOL vmlinux 0xc76e50b1 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0xc773de1d pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0xc780811b inet_frag_destroy +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7837635 inet_frag_evictor +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc795e23e cpu_core_map +EXPORT_SYMBOL vmlinux 0xc798b8d9 __get_page_tail +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7aac617 i2c_transfer +EXPORT_SYMBOL vmlinux 0xc7ae2396 ll_rw_block +EXPORT_SYMBOL vmlinux 0xc7aeca7c ip_setsockopt +EXPORT_SYMBOL vmlinux 0xc7aff81a __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xc7b305cc write_cache_pages +EXPORT_SYMBOL vmlinux 0xc7b76c8d __xfrm_init_state +EXPORT_SYMBOL vmlinux 0xc7bba9a9 vfs_symlink +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc7ed205a md_check_recovery +EXPORT_SYMBOL vmlinux 0xc7f81c4a nf_register_hook +EXPORT_SYMBOL vmlinux 0xc80cbaa6 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0xc8202760 block_read_full_page +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 0xc85538eb inet_accept +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc8848a1a jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0xc8855445 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0xc8a4b1e3 submit_bio +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8c2aca3 lock_may_write +EXPORT_SYMBOL vmlinux 0xc8c5b056 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0xc8cc6d79 note_scsi_host +EXPORT_SYMBOL vmlinux 0xc8cd8415 seq_release +EXPORT_SYMBOL vmlinux 0xc8d0a366 touch_buffer +EXPORT_SYMBOL vmlinux 0xc8d5823c of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0xc8d602d1 cdev_init +EXPORT_SYMBOL vmlinux 0xc8d992bd blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0xc8dd3c5e irq_to_desc +EXPORT_SYMBOL vmlinux 0xc8f117e3 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0xc90bb93a devfreq_interval_update +EXPORT_SYMBOL vmlinux 0xc90d8d04 pci_clear_master +EXPORT_SYMBOL vmlinux 0xc916db9f netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0xc91ff664 down_read_trylock +EXPORT_SYMBOL vmlinux 0xc935f4f8 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0xc9365536 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0xc93f8cb9 i2c_register_driver +EXPORT_SYMBOL vmlinux 0xc93fbc54 wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc964b098 bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0xc980b5ae netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0xc985236d gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0xc996d097 del_timer +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9b8c308 __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0xc9c9b60c __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0xc9e1fc4f bdi_register_dev +EXPORT_SYMBOL vmlinux 0xca006fbb phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0xca13b684 pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0xca2b0a16 vfs_rename +EXPORT_SYMBOL vmlinux 0xca3b28c6 store_vr_state +EXPORT_SYMBOL vmlinux 0xca5dbc50 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xca6b6ad9 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0xca77b853 __frontswap_store +EXPORT_SYMBOL vmlinux 0xca825895 pmu_suspend +EXPORT_SYMBOL vmlinux 0xca911212 ___pskb_trim +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xcab291fe jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0xcac45946 __vlan_find_dev_deep +EXPORT_SYMBOL vmlinux 0xcac788da phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0xcacd272d atomic64_sub_return +EXPORT_SYMBOL vmlinux 0xcad08e48 mmu_hash_lock +EXPORT_SYMBOL vmlinux 0xcaf58282 vm_insert_page +EXPORT_SYMBOL vmlinux 0xcafba599 fasync_helper +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb050c5e dev_alloc_name +EXPORT_SYMBOL vmlinux 0xcb090492 flush_dcache_icache_page +EXPORT_SYMBOL vmlinux 0xcb0c5d50 param_get_uint +EXPORT_SYMBOL vmlinux 0xcb2c14b6 request_firmware +EXPORT_SYMBOL vmlinux 0xcb3d244e pci_choose_state +EXPORT_SYMBOL vmlinux 0xcb4195b0 neigh_event_ns +EXPORT_SYMBOL vmlinux 0xcb666248 blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0xcb76bbcc get_write_access +EXPORT_SYMBOL vmlinux 0xcb78f2ed from_kuid_munged +EXPORT_SYMBOL vmlinux 0xcbb56877 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0xcbb9646a abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbd014a7 tcp_poll +EXPORT_SYMBOL vmlinux 0xcbfdabca register_console +EXPORT_SYMBOL vmlinux 0xcc031d1b dcache_dir_open +EXPORT_SYMBOL vmlinux 0xcc17504d _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc2ffe6e eth_type_trans +EXPORT_SYMBOL vmlinux 0xcc330b2b xfrm_lookup +EXPORT_SYMBOL vmlinux 0xcc35af9b textsearch_prepare +EXPORT_SYMBOL vmlinux 0xcc37f55c blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xcc49be8a tty_free_termios +EXPORT_SYMBOL vmlinux 0xcc4b84da of_find_node_by_type +EXPORT_SYMBOL vmlinux 0xcc4f7f0b tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc5b403f ether_setup +EXPORT_SYMBOL vmlinux 0xcc69aa15 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0xcc7fa952 local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0xcc80e59b input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0xcc94bfbb devfreq_resume_device +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccc87394 netif_napi_add +EXPORT_SYMBOL vmlinux 0xcce0493a iterate_dir +EXPORT_SYMBOL vmlinux 0xccf409be filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0xcd0529c7 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd387cda inet6_del_protocol +EXPORT_SYMBOL vmlinux 0xcd47169b pci_get_class +EXPORT_SYMBOL vmlinux 0xcd4e6364 vfs_readlink +EXPORT_SYMBOL vmlinux 0xcd578471 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0xcd7e8f9f dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0xcd84594f mmc_hw_reset +EXPORT_SYMBOL vmlinux 0xcd86c87f __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xcda22207 send_sig_info +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdceff3b nf_log_packet +EXPORT_SYMBOL vmlinux 0xcde089c4 tcp_init_sock +EXPORT_SYMBOL vmlinux 0xcde172ac radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0xcde7dfe3 dquot_drop +EXPORT_SYMBOL vmlinux 0xcdf00932 elevator_alloc +EXPORT_SYMBOL vmlinux 0xce03a886 pci_find_next_bus +EXPORT_SYMBOL vmlinux 0xce07b4da bio_pair_release +EXPORT_SYMBOL vmlinux 0xce249fd2 blk_delay_queue +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce409cda pmac_set_early_video_resume +EXPORT_SYMBOL vmlinux 0xce429b91 mmc_register_driver +EXPORT_SYMBOL vmlinux 0xce558a6a dev_notice +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce8bfa3e mfd_remove_devices +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceb76e7e scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0xcebfd462 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0xcec4a44f input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0xcec97fb1 of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf1fc5e2 tcp_prot +EXPORT_SYMBOL vmlinux 0xcf29aa60 inode_init_always +EXPORT_SYMBOL vmlinux 0xcf3025cb inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0xcf3a755b d_prune_aliases +EXPORT_SYMBOL vmlinux 0xcf470a4c seq_escape +EXPORT_SYMBOL vmlinux 0xcf52a964 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0xcf52f990 seq_bitmap_list +EXPORT_SYMBOL vmlinux 0xcf92753f mount_single +EXPORT_SYMBOL vmlinux 0xcfc53bc8 inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0xcfca524f kernel_getpeername +EXPORT_SYMBOL vmlinux 0xcfdc9538 __sock_create +EXPORT_SYMBOL vmlinux 0xcfe84b59 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0xcffe1349 sk_release_kernel +EXPORT_SYMBOL vmlinux 0xd0181f4f __bitmap_xor +EXPORT_SYMBOL vmlinux 0xd01a8ca0 nf_hook_slow +EXPORT_SYMBOL vmlinux 0xd0210075 PDE_DATA +EXPORT_SYMBOL vmlinux 0xd030624a mddev_congested +EXPORT_SYMBOL vmlinux 0xd0563920 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0xd05b5fc2 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0xd05f69d3 posix_lock_file_wait +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd08607fe fb_class +EXPORT_SYMBOL vmlinux 0xd099edc1 pci_disable_msix +EXPORT_SYMBOL vmlinux 0xd09c1c2b pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0xd0a45fa5 pmu_enable_irled +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0d42c42 mod_timer_pending +EXPORT_SYMBOL vmlinux 0xd0d5abb2 nf_setsockopt +EXPORT_SYMBOL vmlinux 0xd0dbd227 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0xd0e9d3db security_inode_listsecurity +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 0xd10c3452 idr_init +EXPORT_SYMBOL vmlinux 0xd11c0dc1 __kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xd1262886 rtas_data_buf +EXPORT_SYMBOL vmlinux 0xd16944aa __put_cred +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd1825840 sock_i_uid +EXPORT_SYMBOL vmlinux 0xd196c9be kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xd19f4cde __pskb_copy +EXPORT_SYMBOL vmlinux 0xd19f71d0 pm860x_page_bulk_write +EXPORT_SYMBOL vmlinux 0xd1a7b563 flush_dcache_page +EXPORT_SYMBOL vmlinux 0xd1c3f2a1 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0xd1e3f3c4 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xd1f54c38 nlmsg_notify +EXPORT_SYMBOL vmlinux 0xd20f8eaf block_write_begin +EXPORT_SYMBOL vmlinux 0xd210c0a3 __dev_remove_offload +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +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 0xd2659e5e tcp_child_process +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd2a3c333 flock_lock_file_wait +EXPORT_SYMBOL vmlinux 0xd2a941d4 sg_init_table +EXPORT_SYMBOL vmlinux 0xd2af138b reservation_ww_class +EXPORT_SYMBOL vmlinux 0xd2ca8f09 pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0xd2cd5568 interruptible_sleep_on_timeout +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2fc19bd proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0xd2ff1f6a devfreq_add_device +EXPORT_SYMBOL vmlinux 0xd30fd2aa security_path_chown +EXPORT_SYMBOL vmlinux 0xd3187da4 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd3295ff7 padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0xd35f0e65 pagevec_lookup +EXPORT_SYMBOL vmlinux 0xd382feed mdiobus_register +EXPORT_SYMBOL vmlinux 0xd38904b6 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0xd39869b5 __inet6_hash +EXPORT_SYMBOL vmlinux 0xd39930cb save_mount_options +EXPORT_SYMBOL vmlinux 0xd3c369f3 pci_domain_nr +EXPORT_SYMBOL vmlinux 0xd3e6f60d cpu_possible_mask +EXPORT_SYMBOL vmlinux 0xd3e78334 led_blink_set +EXPORT_SYMBOL vmlinux 0xd409383c pmu_request +EXPORT_SYMBOL vmlinux 0xd4120029 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0xd418e1c0 adjust_resource +EXPORT_SYMBOL vmlinux 0xd464710f simple_readpage +EXPORT_SYMBOL vmlinux 0xd4682b12 kern_path_create +EXPORT_SYMBOL vmlinux 0xd4bae5fc __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xd4c0d741 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0xd4c7b0af __brelse +EXPORT_SYMBOL vmlinux 0xd4e77d59 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0xd504acc8 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0xd535345b filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0xd59315b8 neigh_ifdown +EXPORT_SYMBOL vmlinux 0xd5af1cfb security_inode_permission +EXPORT_SYMBOL vmlinux 0xd5b2e52a single_step_exception +EXPORT_SYMBOL vmlinux 0xd5b8edc2 security_path_link +EXPORT_SYMBOL vmlinux 0xd5c1d2fe sockfd_lookup +EXPORT_SYMBOL vmlinux 0xd5c82426 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0xd5c86020 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0xd5d614a4 sk_mc_loop +EXPORT_SYMBOL vmlinux 0xd5dffb82 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0xd5e8444a __div64_32 +EXPORT_SYMBOL vmlinux 0xd5f2172f del_timer_sync +EXPORT_SYMBOL vmlinux 0xd5f69da7 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0xd606503d register_sysctl +EXPORT_SYMBOL vmlinux 0xd6101f1a module_layout +EXPORT_SYMBOL vmlinux 0xd61631be bitmap_unplug +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd627480b strncat +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd65de7eb pcie_port_service_register +EXPORT_SYMBOL vmlinux 0xd6695361 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0xd66f00a9 sock_no_getname +EXPORT_SYMBOL vmlinux 0xd682599a brioctl_set +EXPORT_SYMBOL vmlinux 0xd6842da5 bio_copy_data +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd69b30e0 atomic64_add_unless +EXPORT_SYMBOL vmlinux 0xd6a7bf75 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0xd6d63e9d lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0xd6e1f161 tcp_ioctl +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6eeb08d km_policy_notify +EXPORT_SYMBOL vmlinux 0xd70e141c dev_printk +EXPORT_SYMBOL vmlinux 0xd713d9f5 scsi_scan_target +EXPORT_SYMBOL vmlinux 0xd7472284 blk_end_request +EXPORT_SYMBOL vmlinux 0xd74bde9c swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd77a5aa5 __bitmap_and +EXPORT_SYMBOL vmlinux 0xd78188fb xfrm_cfg_mutex +EXPORT_SYMBOL vmlinux 0xd78c18a2 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0xd78c4299 input_get_keycode +EXPORT_SYMBOL vmlinux 0xd79a117f km_policy_expired +EXPORT_SYMBOL vmlinux 0xd79b5a02 allow_signal +EXPORT_SYMBOL vmlinux 0xd7c12082 blk_rq_init +EXPORT_SYMBOL vmlinux 0xd7ca0bf9 scsi_calculate_bounce_limit +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd801ac89 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0xd81c7e4f pci_remove_bus +EXPORT_SYMBOL vmlinux 0xd83911b6 dma_common_mmap +EXPORT_SYMBOL vmlinux 0xd8679272 fb_pan_display +EXPORT_SYMBOL vmlinux 0xd86c0036 pci_set_power_state +EXPORT_SYMBOL vmlinux 0xd873ccaa blk_recount_segments +EXPORT_SYMBOL vmlinux 0xd8834cdb generic_write_end +EXPORT_SYMBOL vmlinux 0xd885b420 neigh_seq_start +EXPORT_SYMBOL vmlinux 0xd8872c23 mount_nodev +EXPORT_SYMBOL vmlinux 0xd88fa86e kobject_set_name +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a01614 proc_symlink +EXPORT_SYMBOL vmlinux 0xd8c72cf0 ifla_policy +EXPORT_SYMBOL vmlinux 0xd8d8a786 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8e9490f sock_sendmsg +EXPORT_SYMBOL vmlinux 0xd9019cdb vc_resize +EXPORT_SYMBOL vmlinux 0xd90948d8 sk_net_capable +EXPORT_SYMBOL vmlinux 0xd90a1bef __module_get +EXPORT_SYMBOL vmlinux 0xd9114b66 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0xd92514ca agp_special_page +EXPORT_SYMBOL vmlinux 0xd92afabe bitmap_clear +EXPORT_SYMBOL vmlinux 0xd9498b22 proc_dointvec +EXPORT_SYMBOL vmlinux 0xd96cb31a dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xd96e7565 rfkill_alloc +EXPORT_SYMBOL vmlinux 0xd97cadde powerpc_debugfs_root +EXPORT_SYMBOL vmlinux 0xd983afd2 i2c_clients_command +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd985eb8e inet6_del_offload +EXPORT_SYMBOL vmlinux 0xd9a25f87 md_write_end +EXPORT_SYMBOL vmlinux 0xd9a9bb30 getname +EXPORT_SYMBOL vmlinux 0xd9bac924 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0xd9c89907 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0xd9ce8f0c strnlen +EXPORT_SYMBOL vmlinux 0xda0970ed update_devfreq +EXPORT_SYMBOL vmlinux 0xda2478d0 param_ops_short +EXPORT_SYMBOL vmlinux 0xda279de0 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0xda346368 is_bad_inode +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda3fb2d9 i2c_release_client +EXPORT_SYMBOL vmlinux 0xda45c117 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0xda631596 vfs_fsync +EXPORT_SYMBOL vmlinux 0xda6726c2 of_device_alloc +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xdaa57ec3 totalhigh_pages +EXPORT_SYMBOL vmlinux 0xdab15d03 agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0xdab26169 backlight_device_register +EXPORT_SYMBOL vmlinux 0xdade5773 security_path_chmod +EXPORT_SYMBOL vmlinux 0xdae84524 skb_queue_head +EXPORT_SYMBOL vmlinux 0xdb0d51f4 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0xdb290fb0 __scm_send +EXPORT_SYMBOL vmlinux 0xdb3a0fdf eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0xdb5f0093 simple_write_begin +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb69f4e3 tty_port_open +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb8f13cc blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xdb90ef7d scsi_remove_target +EXPORT_SYMBOL vmlinux 0xdbb24fc2 down_write +EXPORT_SYMBOL vmlinux 0xdbcd416e sysctl_ip_nonlocal_bind +EXPORT_SYMBOL vmlinux 0xdc01f637 __pci_enable_wake +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc1a26a0 sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc3fed2e freezing_slow_path +EXPORT_SYMBOL vmlinux 0xdc54f94f blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0xdc732024 irq_stat +EXPORT_SYMBOL vmlinux 0xdc92dbac __skb_tx_hash +EXPORT_SYMBOL vmlinux 0xdc942659 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xdc9498dd down +EXPORT_SYMBOL vmlinux 0xdc9db4ca __devm_release_region +EXPORT_SYMBOL vmlinux 0xdcacca0e blk_free_tags +EXPORT_SYMBOL vmlinux 0xdcb3a041 dev_err +EXPORT_SYMBOL vmlinux 0xdcbf1b57 keyring_clear +EXPORT_SYMBOL vmlinux 0xdcd9fb8f mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0xdcefb9a5 pmu_resume +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd0aab32 d_drop +EXPORT_SYMBOL vmlinux 0xdd17ed21 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xdd2305e8 km_query +EXPORT_SYMBOL vmlinux 0xdd27fa87 memchr +EXPORT_SYMBOL vmlinux 0xdd28c45c pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0xdd3798a3 lro_flush_pkt +EXPORT_SYMBOL vmlinux 0xdd425378 inode_init_once +EXPORT_SYMBOL vmlinux 0xdd46fa11 pipe_lock +EXPORT_SYMBOL vmlinux 0xdd67eeb7 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0xdd70d99d __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0xdd897787 inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0xddcb90e7 skb_clone +EXPORT_SYMBOL vmlinux 0xdddbf239 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0xde106df3 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0xde10eb10 param_set_invbool +EXPORT_SYMBOL vmlinux 0xde1173c6 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0xde2f1e43 xfrm_input +EXPORT_SYMBOL vmlinux 0xde39f04d kthread_create_on_node +EXPORT_SYMBOL vmlinux 0xde463e0a posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0xde48e9ca _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xde597d85 tty_check_change +EXPORT_SYMBOL vmlinux 0xde91448c load_vr_state +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xde9e7ef9 lock_sock_nested +EXPORT_SYMBOL vmlinux 0xdea300dd sync_blockdev +EXPORT_SYMBOL vmlinux 0xdea4013f __ip_dev_find +EXPORT_SYMBOL vmlinux 0xdeed1edb fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0xdf02a073 netpoll_rx_enable +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf3ab716 inode_change_ok +EXPORT_SYMBOL vmlinux 0xdf3cf040 agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0xdf419849 key_invalidate +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf6959dc block_commit_write +EXPORT_SYMBOL vmlinux 0xdf811520 __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdfb61005 skb_find_text +EXPORT_SYMBOL vmlinux 0xdfdf72b6 sock_alloc_file +EXPORT_SYMBOL vmlinux 0xdff43ed4 __debugger +EXPORT_SYMBOL vmlinux 0xdff56e64 adb_poll +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe05607a4 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe0727a50 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0xe0741c40 scsi_device_get +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe08c898f pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0xe094ef39 sg_next +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0b783ea ihold +EXPORT_SYMBOL vmlinux 0xe0bf8319 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0xe0ef10c7 ida_simple_remove +EXPORT_SYMBOL vmlinux 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe1233fd8 fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0xe1479d5c pmac_register_agp_pm +EXPORT_SYMBOL vmlinux 0xe16b27b5 bio_sector_offset +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe1c44fff read_cache_pages +EXPORT_SYMBOL vmlinux 0xe1c8f293 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0xe1ced02a input_allocate_device +EXPORT_SYMBOL vmlinux 0xe1f70a96 pm860x_page_set_bits +EXPORT_SYMBOL vmlinux 0xe1f7afe6 set_disk_ro +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe202bb9a pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe2416ac8 iget5_locked +EXPORT_SYMBOL vmlinux 0xe246cd8a dev_change_carrier +EXPORT_SYMBOL vmlinux 0xe2497e88 security_inode_readlink +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe250937f inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xe251d403 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0xe26ca9d9 mmc_can_discard +EXPORT_SYMBOL vmlinux 0xe291031e set_page_dirty +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2b6fbe7 skb_copy +EXPORT_SYMBOL vmlinux 0xe2bc0862 scsi_free_command +EXPORT_SYMBOL vmlinux 0xe2be5498 lg_global_unlock +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2e8065e memdup_user +EXPORT_SYMBOL vmlinux 0xe2fae716 kmemdup +EXPORT_SYMBOL vmlinux 0xe302c0e6 blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0xe3062eb5 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0xe30ce0c8 __frontswap_test +EXPORT_SYMBOL vmlinux 0xe30df151 devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0xe30eac7c inet_frag_find +EXPORT_SYMBOL vmlinux 0xe3198cd8 __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0xe35313e6 put_tty_driver +EXPORT_SYMBOL vmlinux 0xe359bdb8 sk_capable +EXPORT_SYMBOL vmlinux 0xe35c5285 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0xe369b6d6 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0xe37d9614 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0xe3ac2608 noop_llseek +EXPORT_SYMBOL vmlinux 0xe3b39ebf sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xe3c179c8 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3e97d8d sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0xe3fac0d8 dev_addr_init +EXPORT_SYMBOL vmlinux 0xe4018164 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0xe4045ae4 kmap_atomic_prot +EXPORT_SYMBOL vmlinux 0xe409036c jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0xe41872fc dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xe4656a9c tcf_action_exec +EXPORT_SYMBOL vmlinux 0xe4730a00 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe4a895fa up_write +EXPORT_SYMBOL vmlinux 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL vmlinux 0xe4fe8ca1 _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xe5122890 flow_cache_genid +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe526cef1 dev_crit +EXPORT_SYMBOL vmlinux 0xe53d1faa of_translate_dma_address +EXPORT_SYMBOL vmlinux 0xe5424556 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0xe55054d6 pci_request_regions +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe59fb566 i2c_del_driver +EXPORT_SYMBOL vmlinux 0xe5a22bb8 key_put +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe610fe3d tcp_seq_open +EXPORT_SYMBOL vmlinux 0xe62137b7 get_super +EXPORT_SYMBOL vmlinux 0xe63c0c51 dquot_release +EXPORT_SYMBOL vmlinux 0xe648af8e security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0xe64e9b16 __scm_destroy +EXPORT_SYMBOL vmlinux 0xe65ac5f2 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL vmlinux 0xe6af1d72 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0xe6dd236d clear_pages +EXPORT_SYMBOL vmlinux 0xe6e246b0 kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0xe6ebc016 key_create_or_update +EXPORT_SYMBOL vmlinux 0xe6f85d49 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe6fd1c0e ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xe73e6c1c pci_pme_active +EXPORT_SYMBOL vmlinux 0xe7526c5c shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0xe75dbe10 bdget +EXPORT_SYMBOL vmlinux 0xe7968c02 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7b145d9 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0xe7b17500 neigh_seq_next +EXPORT_SYMBOL vmlinux 0xe7b9c14c inet_sendmsg +EXPORT_SYMBOL vmlinux 0xe7bf317d fsl_lbc_addr +EXPORT_SYMBOL vmlinux 0xe7c84014 lockref_mark_dead +EXPORT_SYMBOL vmlinux 0xe7cbbfb5 tty_throttle +EXPORT_SYMBOL vmlinux 0xe7ce7439 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe804f1c2 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0xe829a174 i8042_install_filter +EXPORT_SYMBOL vmlinux 0xe82cc752 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0xe8341937 udp_sendmsg +EXPORT_SYMBOL vmlinux 0xe851bb05 queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0xe854643d locks_free_lock +EXPORT_SYMBOL vmlinux 0xe880448e input_register_handler +EXPORT_SYMBOL vmlinux 0xe898bfba crc32_le_combine +EXPORT_SYMBOL vmlinux 0xe89a2cdb page_address +EXPORT_SYMBOL vmlinux 0xe89fb83a address_space_init_once +EXPORT_SYMBOL vmlinux 0xe8b63ace radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8c6225b sk_alloc +EXPORT_SYMBOL vmlinux 0xe8c904c4 kernel_getsockname +EXPORT_SYMBOL vmlinux 0xe8fa6442 update_time +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe91a01b4 lookup_one_len +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe95dbceb dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0xe95ea764 bio_integrity_set_tag +EXPORT_SYMBOL vmlinux 0xe9c1b0b2 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0xe9e45d73 blk_register_region +EXPORT_SYMBOL vmlinux 0xe9e94807 from_kgid +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea10212a int_to_scsilun +EXPORT_SYMBOL vmlinux 0xea10655a __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xea1648d9 skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0xea16dd4c tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xea2c6b60 blk_complete_request +EXPORT_SYMBOL vmlinux 0xea37a816 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0xea4347f8 eth_rebuild_header +EXPORT_SYMBOL vmlinux 0xea45c47c sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xea56a6b5 d_rehash +EXPORT_SYMBOL vmlinux 0xea62217d input_close_device +EXPORT_SYMBOL vmlinux 0xea622429 nf_log_unset +EXPORT_SYMBOL vmlinux 0xea6e3003 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0xea7987f1 key_update +EXPORT_SYMBOL vmlinux 0xea968c96 ___ratelimit +EXPORT_SYMBOL vmlinux 0xeab37d5f devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0xeabd8dd2 __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xeace54d6 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0xead7f0e7 __alloc_skb +EXPORT_SYMBOL vmlinux 0xeaef76af __breadahead +EXPORT_SYMBOL vmlinux 0xeaf4bda5 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0xeaffd236 unregister_binfmt +EXPORT_SYMBOL vmlinux 0xeb06f581 d_instantiate +EXPORT_SYMBOL vmlinux 0xeb0d8f89 splice_from_pipe_begin +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb531d2a seq_vprintf +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb6689db invalidate_partition +EXPORT_SYMBOL vmlinux 0xeb73b153 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0xeba2a1f7 rtas_indicator_present +EXPORT_SYMBOL vmlinux 0xeba350d8 bio_integrity_split +EXPORT_SYMBOL vmlinux 0xebc7088c mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0xebccf4bd blk_put_request +EXPORT_SYMBOL vmlinux 0xebdbe48c radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xebedf284 phy_register_fixup +EXPORT_SYMBOL vmlinux 0xebf82c37 inet_addr_type +EXPORT_SYMBOL vmlinux 0xec17ebb0 of_match_node +EXPORT_SYMBOL vmlinux 0xec19827f agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0xec1aa6ef memzero_explicit +EXPORT_SYMBOL vmlinux 0xec222963 kset_register +EXPORT_SYMBOL vmlinux 0xec3dc39e netdev_notify_peers +EXPORT_SYMBOL vmlinux 0xec432e51 generic_read_dir +EXPORT_SYMBOL vmlinux 0xec7a836d blk_peek_request +EXPORT_SYMBOL vmlinux 0xeca8b477 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0xecbb926f xor_altivec_3 +EXPORT_SYMBOL vmlinux 0xecd0d12c input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecf4a22a generic_block_bmap +EXPORT_SYMBOL vmlinux 0xed0f2b07 dquot_file_open +EXPORT_SYMBOL vmlinux 0xed4a14d5 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed9293e0 seq_printf +EXPORT_SYMBOL vmlinux 0xed93f29e __kunmap_atomic +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xed9feecc inet_csk_accept +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc193c8 netpoll_setup +EXPORT_SYMBOL vmlinux 0xedc410d0 udplite_table +EXPORT_SYMBOL vmlinux 0xee246dff ida_destroy +EXPORT_SYMBOL vmlinux 0xee278e75 skb_queue_purge +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee3496c3 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0xee4fd2fc bio_uncopy_user +EXPORT_SYMBOL vmlinux 0xee59412f adb_try_handler_change +EXPORT_SYMBOL vmlinux 0xee5b13a1 simple_rename +EXPORT_SYMBOL vmlinux 0xee8cc58e skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeb791e9 filp_open +EXPORT_SYMBOL vmlinux 0xeec6476b key_task_permission +EXPORT_SYMBOL vmlinux 0xeed66667 agp_enable +EXPORT_SYMBOL vmlinux 0xeedb9a3b end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xef109449 interruptible_sleep_on +EXPORT_SYMBOL vmlinux 0xef1c1c5e generic_fillattr +EXPORT_SYMBOL vmlinux 0xef4a8279 macio_release_resources +EXPORT_SYMBOL vmlinux 0xef94798a ip6_frag_init +EXPORT_SYMBOL vmlinux 0xef9ad552 get_agp_version +EXPORT_SYMBOL vmlinux 0xefb0af63 genphy_update_link +EXPORT_SYMBOL vmlinux 0xefcdd86b dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0xefd0382c mmc_gpio_free_cd +EXPORT_SYMBOL vmlinux 0xefd9868b eth_header_parse +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 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf0619801 timekeeping_clocktai +EXPORT_SYMBOL vmlinux 0xf06327d5 elv_rb_find +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf068a6b4 default_llseek +EXPORT_SYMBOL vmlinux 0xf0830a22 block_write_end +EXPORT_SYMBOL vmlinux 0xf084e872 xfrm_register_type +EXPORT_SYMBOL vmlinux 0xf08521a9 netdev_alert +EXPORT_SYMBOL vmlinux 0xf0868b62 generic_file_llseek +EXPORT_SYMBOL vmlinux 0xf087137d __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0xf08d575d tc_classify +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0c667bf generic_file_remap_pages +EXPORT_SYMBOL vmlinux 0xf0c7aabf of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0xf0ca447f elv_rb_add +EXPORT_SYMBOL vmlinux 0xf0ce49c7 fddi_type_trans +EXPORT_SYMBOL vmlinux 0xf0deb4fa eth_header +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0f1246c kvasprintf +EXPORT_SYMBOL vmlinux 0xf0fd4e8f rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0xf10ca3e7 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf11cd6ce down_interruptible +EXPORT_SYMBOL vmlinux 0xf120872a dql_completed +EXPORT_SYMBOL vmlinux 0xf13e0317 mutex_trylock +EXPORT_SYMBOL vmlinux 0xf13feb57 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0xf142af63 capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf148ea8c inet_bind +EXPORT_SYMBOL vmlinux 0xf1608f72 scsi_register_interface +EXPORT_SYMBOL vmlinux 0xf1781e2f __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf19e9355 cpu_online_mask +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1dd2eb5 bd_set_size +EXPORT_SYMBOL vmlinux 0xf1deabf2 div64_u64 +EXPORT_SYMBOL vmlinux 0xf1e06df1 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf202c5cb radix_tree_insert +EXPORT_SYMBOL vmlinux 0xf204464d inet_select_addr +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf2101ac7 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0xf211632c dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0xf222defb __ip_select_ident +EXPORT_SYMBOL vmlinux 0xf22881e8 lg_local_lock +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL vmlinux 0xf26b5440 __elv_add_request +EXPORT_SYMBOL vmlinux 0xf291efd1 phy_attach_direct +EXPORT_SYMBOL vmlinux 0xf299110e udp_add_offload +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2ae8c67 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0xf2b1ac8e __getnstimeofday +EXPORT_SYMBOL vmlinux 0xf2bcbd29 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0xf2cdd048 vfs_create +EXPORT_SYMBOL vmlinux 0xf2ed818e bio_integrity_endio +EXPORT_SYMBOL vmlinux 0xf2f39121 kfree_put_link +EXPORT_SYMBOL vmlinux 0xf2f9baa5 md_unregister_thread +EXPORT_SYMBOL vmlinux 0xf30a7baa iget_locked +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf322a206 bit_waitqueue +EXPORT_SYMBOL vmlinux 0xf32ed59b tc_classify_compat +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 0xf398c69a blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0xf3b96b3c d_splice_alias +EXPORT_SYMBOL vmlinux 0xf3bf0bce __bitmap_complement +EXPORT_SYMBOL vmlinux 0xf3d1887f dev_get_nest_level +EXPORT_SYMBOL vmlinux 0xf3da54bf vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0xf3f28edf blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0xf40b2297 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf4449388 timer_interrupt +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4e7ad36 pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf5131f2f macio_request_resource +EXPORT_SYMBOL vmlinux 0xf51a4b1a jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0xf5222143 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0xf52321e0 atomic64_sub +EXPORT_SYMBOL vmlinux 0xf52c337a key_reject_and_link +EXPORT_SYMBOL vmlinux 0xf531586c giveup_altivec +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf54c51a2 dma_pool_free +EXPORT_SYMBOL vmlinux 0xf5875ae2 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xf5a085c4 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0xf5a62ecc _memset_io +EXPORT_SYMBOL vmlinux 0xf5c05914 generic_segment_checks +EXPORT_SYMBOL vmlinux 0xf5e1558d crash_shutdown_unregister +EXPORT_SYMBOL vmlinux 0xf5e4ea5f drop_super +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf6049fe9 register_md_personality +EXPORT_SYMBOL vmlinux 0xf615e0b8 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0xf623da51 kernel_bind +EXPORT_SYMBOL vmlinux 0xf6380584 page_readlink +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf6756a06 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0xf67f4ed0 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0xf680ad2c gen10g_config_advert +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf6861c48 scsi_allocate_command +EXPORT_SYMBOL vmlinux 0xf6bac77f bitmap_end_sync +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6c67a62 netif_napi_del +EXPORT_SYMBOL vmlinux 0xf6dafdcb wait_on_sync_kiocb +EXPORT_SYMBOL vmlinux 0xf6dbbc18 sg_miter_start +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6f2aa0c xfrm4_rcv +EXPORT_SYMBOL vmlinux 0xf70384d7 __debugger_sstep +EXPORT_SYMBOL vmlinux 0xf70594b9 phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0xf71521ba atomic64_add_return +EXPORT_SYMBOL vmlinux 0xf741c793 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf7715f01 phy_connect_direct +EXPORT_SYMBOL vmlinux 0xf7993a2c jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0xf7b12aee __next_cpu +EXPORT_SYMBOL vmlinux 0xf7b43028 scsi_report_opcode +EXPORT_SYMBOL vmlinux 0xf7de6ded uart_add_one_port +EXPORT_SYMBOL vmlinux 0xf7fc4d5c load_nls_default +EXPORT_SYMBOL vmlinux 0xf803fe39 bitmap_set +EXPORT_SYMBOL vmlinux 0xf80833f2 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0xf80f1b61 pcie_set_mps +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 0xf8390b57 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0xf844df97 nobh_writepage +EXPORT_SYMBOL vmlinux 0xf8549333 get_tz_trend +EXPORT_SYMBOL vmlinux 0xf855bcbc d_find_alias +EXPORT_SYMBOL vmlinux 0xf85e7376 udp_prot +EXPORT_SYMBOL vmlinux 0xf85eec96 netdev_printk +EXPORT_SYMBOL vmlinux 0xf874d0f3 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0xf89c8e07 ida_pre_get +EXPORT_SYMBOL vmlinux 0xf8a071fd call_netdevice_notifiers_info +EXPORT_SYMBOL vmlinux 0xf8a0a79b mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0xf8bd55ff dev_addr_flush +EXPORT_SYMBOL vmlinux 0xf8d19f5f sock_create +EXPORT_SYMBOL vmlinux 0xf92cd89b invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0xf9348cbc xz_dec_run +EXPORT_SYMBOL vmlinux 0xf94c2033 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xf94fdf1b file_open_root +EXPORT_SYMBOL vmlinux 0xf95a4876 __generic_file_aio_write +EXPORT_SYMBOL vmlinux 0xf962a6c7 fget_raw +EXPORT_SYMBOL vmlinux 0xf983c439 generic_show_options +EXPORT_SYMBOL vmlinux 0xf98522d2 from_kgid_munged +EXPORT_SYMBOL vmlinux 0xf99a5011 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0xf99ef8b2 del_gendisk +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9c367e0 iov_pages +EXPORT_SYMBOL vmlinux 0xf9cd3ec1 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0xf9e128ea rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0xf9e5a5d2 bdgrab +EXPORT_SYMBOL vmlinux 0xf9e73082 scnprintf +EXPORT_SYMBOL vmlinux 0xf9eb164d tty_set_operations +EXPORT_SYMBOL vmlinux 0xfa0e1fa0 mark_info_dirty +EXPORT_SYMBOL vmlinux 0xfa16db71 mb_cache_create +EXPORT_SYMBOL vmlinux 0xfa309b27 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0xfa406159 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa662e21 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0xfa79e113 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0xfa7f3156 wl12xx_get_platform_data +EXPORT_SYMBOL vmlinux 0xfa977407 lro_receive_skb +EXPORT_SYMBOL vmlinux 0xfaaca226 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0xfac3dd2a alloc_disk_node +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacfb97d __get_user_pages +EXPORT_SYMBOL vmlinux 0xfad26011 pci_dev_put +EXPORT_SYMBOL vmlinux 0xfadb5750 pmu_unlock +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaf98462 bitrev32 +EXPORT_SYMBOL vmlinux 0xfb223e96 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb8399df blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbad56f9 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0xfbb21b2e scsi_execute +EXPORT_SYMBOL vmlinux 0xfbf6d1b2 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc31c47c blk_rq_map_user +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc3b160f mempool_create_node +EXPORT_SYMBOL vmlinux 0xfc47b0af framebuffer_release +EXPORT_SYMBOL vmlinux 0xfc5b35a3 loop_register_transfer +EXPORT_SYMBOL vmlinux 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfc916fbb sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xfcaa04a0 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcf26ff0 input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd01eadc inet_frags_init_net +EXPORT_SYMBOL vmlinux 0xfd0c5038 adb_unregister +EXPORT_SYMBOL vmlinux 0xfd5adc75 netif_device_attach +EXPORT_SYMBOL vmlinux 0xfd6293c2 boot_tvec_bases +EXPORT_SYMBOL vmlinux 0xfd8df587 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfda8c539 send_sig +EXPORT_SYMBOL vmlinux 0xfdb5c189 ip_options_compile +EXPORT_SYMBOL vmlinux 0xfdb6cedc _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbe1eca neigh_connected_output +EXPORT_SYMBOL vmlinux 0xfdbf3ed7 dma_set_mask +EXPORT_SYMBOL vmlinux 0xfdc3a557 tcf_hash_create +EXPORT_SYMBOL vmlinux 0xfded48ed enable_kernel_fp +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfe002a48 bio_clone_bioset +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe32454f dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0xfe39a130 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0xfe3e27a4 kill_pgrp +EXPORT_SYMBOL vmlinux 0xfe45e116 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe9b5b5f generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0xfebbbba2 inet_sendpage +EXPORT_SYMBOL vmlinux 0xfec24966 __f_setown +EXPORT_SYMBOL vmlinux 0xfec94a03 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfef96e23 __scsi_print_command +EXPORT_SYMBOL vmlinux 0xfefd9183 lease_get_mtime +EXPORT_SYMBOL vmlinux 0xff1765c7 rtas_call +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff2bf43f poll_initwait +EXPORT_SYMBOL vmlinux 0xff3a20b6 arp_find +EXPORT_SYMBOL vmlinux 0xff4df9d0 input_event +EXPORT_SYMBOL vmlinux 0xff4ee417 simple_unlink +EXPORT_SYMBOL vmlinux 0xff4f78c7 skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0xff61a2c8 thaw_bdev +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff6dea25 smp_hw_index +EXPORT_SYMBOL vmlinux 0xff83e48a gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0xff83f2f3 pci_scan_bus_parented +EXPORT_SYMBOL vmlinux 0xff8dcf51 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffc66d74 create_empty_buffers +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffdb82bc sg_free_table +EXPORT_SYMBOL vmlinux 0xffea3877 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0xffec6c24 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0xffee06f4 simple_link +EXPORT_SYMBOL_GPL crypto/af_alg 0x020009a6 af_alg_release_parent +EXPORT_SYMBOL_GPL crypto/af_alg 0x024e661b af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x58716898 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x79589507 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x93957c0c af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0x995c0b85 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0xaa9115fd af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xca722911 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0xddd814d7 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xfc081d91 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0xe8a73948 async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xca654fb3 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xffbd1ae0 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xa90fd017 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xc74a7785 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x3a919fa8 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x660f9678 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x7b07757e __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xd9caa94f async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x035bca3b async_xor +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xfaa31075 async_xor_val +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x3147c17d 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 0xcb4847d3 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 0x63f4a041 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 0x439fc37d cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x49c7c4a8 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x4d7a81d2 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0x6a0e1373 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x7bf71d1c cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x813e05e7 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x85f959f7 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x9f2bf7f6 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xa517be6a cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xadcc8d5e cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/lrw 0x33c86892 lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x5ddb33e9 __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x77b39cb4 __serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x7b6c3de8 serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x8a1a99ad __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/twofish_common 0x0f62991e twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x85238a8a xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x0a8aa6fb ahci_platform_suspend +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x15f09dce ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x29d5fd2c ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x369aede0 ahci_platform_resume +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x429c765c ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x96528abf ahci_platform_resume_host +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xa2a2299f ahci_platform_suspend_host +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xa4ca1b97 ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xae3c2726 ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xbe797051 ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xfd819125 ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x13b841f0 ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x167f7c6d ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x1b04b3e2 ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x1b913499 ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x2243c9f5 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x24ed796e ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x2f3d01d0 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x32dd703c ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x36706855 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x43544ca7 ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x52625b20 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5eacba1f ahci_interrupt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5f8410d4 ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x62265345 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x694f923e ahci_thread_fn +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6e05c4e7 ahci_hw_interrupt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x83a09570 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x908d1f92 ahci_restart_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xb7115662 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xbc36b1e0 ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc4847341 ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd8758dbf ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xdd899693 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xde87f664 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xffb9f951 ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x4b9d34f6 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0xbf0ff825 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/bcma/bcma 0x0353e659 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1f33f0cf bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2447db66 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3a97d044 bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x577e422c bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x596f4fde bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x67f57458 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x77514d62 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7784b4e7 bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x86890774 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x87ef7035 bcma_core_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x88915879 bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x9983d7f5 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xac3c0d3c bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb58aa2ea bcma_core_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb7542fd3 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xcd92940c bcma_find_core +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd0e88fb3 bcma_core_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd32f1bae bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd469b2d3 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd55b1945 bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd7683193 bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe027993d bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x524c5524 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x5d32686e btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x681758e0 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x6a05ca74 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x72f8de46 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x734347f3 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x76c3d977 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x9601b2b6 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xb74c6c85 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xbf9b36f7 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x045946e7 dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x3aac0b9c dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x7003e37b dw_dma_resume +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xdaa9f4d6 dw_dma_shutdown +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xe4d78fd7 dw_dma_suspend +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x02363194 edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x07cdab7e edac_mc_add_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0fd666ad edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1b5cba55 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x24b4b255 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x32121e4c edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x3c792653 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x426d5782 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x440542bd edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5973aa4f edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5d1baced edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x69259f22 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x77b1c186 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7defc0b5 edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7f9cec80 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x83430c0c edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xabe3e76b edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc34b7b77 edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xddd50802 find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xde3bde35 edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe48bd32b edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xee159c6d edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf860eaf4 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf995567c edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x1713c56e bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x82b5d73d bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x38918709 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x57af9f06 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x270efaa5 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xaaa2b015 drm_vm_open_locked +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xe1d912b1 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 0xa8c36aee 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 0xdfa09849 ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xebf77fd8 ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x10c4c982 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x11b66293 hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x168578a8 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x207dc7fa hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x20e84135 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2da28766 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x364501ac hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3a653157 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3b3b5721 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3c149251 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3e0b83eb hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3e14f932 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3e740e5e hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x40f67c21 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4f515b7b hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5ca8af65 hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x633f7023 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7112ca08 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x90e9bb70 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x94ec099f __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x95aad693 hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0x96043e42 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9a18dfbf hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa08eb372 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa9b0b4c1 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb226e701 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb3769ad2 hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc9879568 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd4949d91 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe3499e22 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe44e7726 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf31e6a36 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf99d1356 hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfc9d6525 hid_open_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 0xde58d629 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x1468d525 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x17260399 roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x431c2404 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xa6d8781c roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xc2e5e85a roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xd33b7393 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x30d6ffbc sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x3125c9d5 sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x678993ea sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x822a93d7 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x8251b4ad sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xa11952e2 sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xa6f7a0fe sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xb3432f88 sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xdb5d0491 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x21275011 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x256d4d18 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x37a12e27 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x40c35a60 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5a051741 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x702b1a4b hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x7558e7a1 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x75f1eaff hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x7849cece hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x811477d0 hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb05c4c44 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc77c5fc9 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe458cc20 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x53940192 adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x609a006d adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xf74c5bbb adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x05599444 pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x0c175bff pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x33d63dcd pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x39810922 pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x3d963a15 pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x4827bcb2 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x91f09a44 pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9a540963 pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xabc646eb pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xd83a1335 pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xde1f5965 pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xe8497d29 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5bb1170b i2c_dw_isr +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x6a5a08e4 i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x6a98adad i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x6ef28fe3 i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x77a92d0d i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x840c3a14 i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x8a2e65d7 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xe85f87c2 i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xe9b5c456 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xedb9840c i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xa2435859 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xe188d310 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xe921e3f2 i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xf530030a i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x1a895e74 ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x1f0e4319 ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x218b161d ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x218bf106 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x2a9d376d ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x952ddc5d ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xbaf405f1 ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xe197c443 ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xfa7dd0ab ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x05ca7400 adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x07c6c286 adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x47dafcac adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x512a7ee2 adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x70740f97 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x91458276 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x92f369d9 adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xc1b90de7 adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xcc565752 adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xdfc8f1c9 adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe2681246 adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe5673286 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x15b81fab iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x162d3ae6 iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x186dc4cc iio_scan_mask_set +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1b9ffdf0 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1f938ead iio_channel_get_all +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 0x2d929154 iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x330240a0 iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x44c9e2e1 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4d9d49e2 iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x509dea3b devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5725f001 iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6e7507a4 devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6ef5a1e8 iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x70c5d5c7 iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7fd2a72b iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8468f458 iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9204b0e4 devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x95f1c984 iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa0f3214e iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa3539688 iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xaeabcdf6 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb90844b1 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xba4c328d iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xbf63517d iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc0baa1b0 devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc1dd0755 iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd359cc56 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd4ed92bf iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdde55261 iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xef63d29e iio_map_array_register +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x955fe1f4 input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0x7357b61e 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 0xa5b27735 adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x153f5cd2 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x402b8642 cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xfec63db4 cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x931b5166 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xaebd60fc cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xf38ff2c4 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x19c06b15 cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x9ef5ddc8 cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x0135037a wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x139289c1 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x4fb09d30 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x5b078c85 wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x8a139141 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x97ad8c1b wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xbb5c3373 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xbc0b8948 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xbe6af07a wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xe2797965 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xef863e87 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xfea3388d wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x09f1f880 ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x16d16668 ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x255c8177 ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x5163c852 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x5215553c ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x81a925e8 ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xd0928a5d ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xd1b40939 ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xf841ddc5 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 0x01b6ad63 gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x0e13e841 gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2cb28fb3 gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2cc0b422 gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3b62b212 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x69d1f50c gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8af0a401 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8eff32df gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x911c369b gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9dbafa24 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9e159607 gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9f3949ee gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa6ef36c1 gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xab6b7065 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd9b1f851 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe4a3128d gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xef1ec70d gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf134882d gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x1da0368f lp55xx_register_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x3741e7d0 lp55xx_of_populate_pdata +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x50813718 lp55xx_read +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x58e5b2f8 lp55xx_unregister_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x63256928 lp55xx_is_extclk_used +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x936eac05 lp55xx_write +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x96d80b09 lp55xx_unregister_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xa91922ef lp55xx_init_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xeb39f4a8 lp55xx_update_bits +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xed7af5ac lp55xx_deinit_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xf2d3fe42 lp55xx_register_leds +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 0x1f32383f wf_put_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x2fa1b052 wf_unregister_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x3a2a20ac wf_get_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x40475477 wf_register_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x5575d6ef wf_put_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x63b3e1c3 wf_find_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x66011265 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 0xa0360991 wf_get_sensor +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 0xeb1c2691 wf_unregister_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xed82a14f wf_clear_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xff78c20e wf_find_control +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 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 0x7b488fb1 __tracepoint_bcache_alloc_invalidate +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 0x14830ad1 dm_bio_prison_alloc_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 0x3280dc16 dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x4dbe96b8 dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x4e1825be dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6f59360d dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x80421f58 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 0xd6ccb78d dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xebd06eaf dm_bio_prison_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 0x49b9f1af 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 0x230de799 dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x30988be5 dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x431c2865 dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x99405efc dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xb68b0fec dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xd3b71437 dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xf0ee3d91 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x0d2f93e6 dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xb6544a8d dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x01d2f9ac dm_rh_recovery_start +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x09472122 dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x55a3a5fa dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x67a00ef5 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 0x7b81446a dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7dd5b32f dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x826bf2f8 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x8f2d8ebc dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa8813ad6 dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc66ce277 dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xcab63c3d dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf37a3cfe dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfd93482e dm_rh_recovery_in_flight +EXPORT_SYMBOL_GPL drivers/md/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 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 0x1cac81ac dm_bitset_clear_bit +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 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 0x2f74609d dm_bitset_test_bit +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 0x38c75c44 dm_bitset_empty +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 0x5337e585 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 0x68fae9d2 dm_disk_bitset_init +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 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 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 0xa0bbbb49 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa13861b4 dm_bitset_del +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 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 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 0xe44b4b9b dm_bitset_set_bit +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 0xf475af48 dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/raid1 0xc845e952 md_raid1_congested +EXPORT_SYMBOL_GPL drivers/md/raid10 0x273bf749 md_raid10_congested +EXPORT_SYMBOL_GPL drivers/md/raid456 0x96ff75c8 md_raid5_congested +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x0e9d2787 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x1681b823 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x1798519a saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x3379f6e0 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x5d00ab81 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x7a5b86b6 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x8298fbbc saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x8b9df4b4 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe928ab01 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xed7ea761 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x0a17054d saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x8582d86d saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x938986d0 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xc45addd8 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xd0387a1c saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xd50740da saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xe1c6f335 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x0b2afacc smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x0dc23bec smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x1b5102c6 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x381da2cf smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x38d046ec smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x4282384b smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x5d38abbc smscore_get_board_id +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 0x75b6fb92 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x99cfa199 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9a8b9921 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xaaad1575 smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xcdfe7b78 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd04d218c smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe4c6c6f2 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xf0377808 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xf1e0bfa6 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xfb94fff1 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0xf38fba68 cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0xd1ff5633 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0x2e340e4a cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x0d4a835a mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x132217da mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x1738a3a2 mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x24b36dcb mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2b62759c mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2db562c4 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x42908f70 mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7bf264dd mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7d257385 mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x8413ba5e mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x90b3a8dd mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xac6b9a32 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xb253e753 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc9afb3cf mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xdeb45168 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xe8b80300 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xee6f1458 mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x000a4dbd saa7134_s_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x40a46614 saa7134_g_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x668a28aa saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x97d5fc35 saa7134_queryctrl +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xbed2dae8 saa7134_s_std_internal +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x436f9e9f 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 0x890b57c1 ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x971ff16e ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x989b1526 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xc63db20c ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xd39fb98e ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xf2d82645 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x5224e80a radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xba0dbb23 radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x0a546281 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x0a68c03f rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x0eca1ba4 rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1e4e8329 rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x32493dc2 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x3b36aab0 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x5f149601 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6343ed7c rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x645099fb rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6cbf265f ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6d402bee rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x73655a68 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x8e1e38b6 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9aee4a21 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb43ec3c4 ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd405fd87 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe1f1736e rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe770608e ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xffe85f57 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0xe1789ea9 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x6c9617fe microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0xfcb9ff59 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x1c58c868 r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0xcfbd0ef6 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x47652ebc tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x01de100b tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x579e7361 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0xa77ac983 tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x49635f65 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xc31e79c7 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x3b62ad5f tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x9e9c4c49 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x11950866 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x031a39c9 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x0746e5be cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1f2268bd cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x2706eff7 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x410cbc06 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x4fb97734 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x5057b553 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x59bfefb1 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x5cf2bfd7 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6cdc703b cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6e77466c cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x80199dc9 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x80638e0e cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xab7abfe1 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb6b95c05 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xbd2cb7dc cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc878bd9a cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xcac7241c cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xffd0304f cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x4229b476 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0xf8c1e7a0 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x0e7fcc2d em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x1203fe1e em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x38b4e2b6 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x63d67491 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x776bac88 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x78baeee5 em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x89069464 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x916b87ff em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa739ce01 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xaf9104d8 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xb9c8a92b em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xc3a47e4e em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xe6fe7a10 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xfc0832dd em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x02fa98a5 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x351cf73f tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xcff9e449 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xe9cd0457 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 0x0353cdc0 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x28a1a2f1 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x6c58c017 v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x6ee3741d 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 0xb509e694 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xb98677a2 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 0x221d2fbc v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x36e8756a v4l2_find_dv_timings_cap +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 0x53105839 v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x6976cfe0 v4l2_valid_dv_timings +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 0x7eaf8e7a v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xb0891da2 v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0x31ae7626 v4l2_int_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0x4631cff2 v4l2_int_ioctl_1 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xa5228b24 v4l2_int_device_try_attach_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xaafaf1c7 v4l2_int_ioctl_0 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xf9895b18 v4l2_int_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0b50e5ff v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17eb0eee v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x33d5cac1 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4b6a6680 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4d88f0cc v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x51051901 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x64287fbd v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6637da2b v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x70fca37a v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x76158f15 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7c90099f v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8033675f v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa9204050 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 0xd8f42105 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xecc8a92b v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x21c89bb1 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x27df9123 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2fea50ae videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x38cdbd29 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3f84f94e videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x448b0864 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x57fc0f9c videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5f8dcea8 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x65814848 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x73a5665f __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x743690d1 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x75e771f1 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8a29ef78 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9251d1eb videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x93fad031 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb2d1e86f videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc20ff788 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc5169cb1 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc665ef7e videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xcaf72132 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd513c23d videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe9b4ad44 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe9d5a37e videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xef3599dd videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x450da85b videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x9bf67e4f videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x9c63f13e videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x0115ec40 videobuf_dma_init_kernel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x077d44b5 videobuf_dma_map +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x0b3f8074 videobuf_dma_init_user +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x1c3669fb videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x84d696a8 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x8507518a videobuf_dma_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x9b6dc1db videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xa7dbe2b1 videobuf_dma_init_overlay +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xa825c75b videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xf308c050 videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x65788223 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xb3d54b8a videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xe60629d7 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x02619ef4 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x053bdb06 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x057f74a9 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x064ac3bc vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0a856e6c vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0cf8525f vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0da5edb6 vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0e82e89d vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x141ee386 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1ebeef1f vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x331e53e8 vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4805ba03 vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x55abd9dd vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x74730b0f vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7f92d54c vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8042c3df vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x846dd83b vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa5139b17 vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xada88ad0 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xaf1d1725 vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbd357727 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc9661138 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xcbac4e3d vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd08e1c65 vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd6e2b0ff vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xdbebcb8e vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xdd931014 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe0e50de1 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe374bc7d vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xee0ac91f vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf0704439 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf3d6714b vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf6b69bae vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf7cff504 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x3d64df36 vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xc9cc0681 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 0xa2645002 vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x09993b86 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xc1bf0178 vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xcecfb3c9 vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xd39fe113 vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0x97717f41 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x06c2eac0 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x07714dee v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x290800df v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x295062e2 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2fde1877 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x320e85bd v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x38bb4db1 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3e8f0445 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5883af18 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5c7217c1 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x66143901 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x72091dfa v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7a5458df v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x81f69b77 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xaa869357 v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xaac79dab v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb3f05007 v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc99e0ff3 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xce8dbb4d v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe3ef2e0d v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf830c542 v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf8df4294 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xfa0adacc v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x1b0bb7dc i2o_dma_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x384c3d40 i2o_dma_map_single +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x4de409f0 i2o_pool_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x6ed4d0c8 i2o_dma_map_sg +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x8f64c029 i2o_pool_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xb6820ff3 i2o_sg_tablesize +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xcccf9e03 i2o_dma_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xf66ec6e9 i2o_dma_realloc +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x2a70c533 pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xc738ba8c pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xe9e1cca9 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x2526770a kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x4a473642 kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x803a62e8 kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x87bce928 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x97370542 kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xcdce196a kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xeacbe738 kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xf7e0e597 kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x4e1221ab lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x8f9c5055 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xf23776e0 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x03a7336d lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x24fc036c lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x2bfd2bc1 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x508cb5b8 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x9411b5ed lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xd1d611be lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xddf0c241 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x2a941218 mc13xxx_common_cleanup +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x60176143 mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x9390ae0d mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xc1251045 mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xd32ae52d mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xe218d721 mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x07bcb4cb pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x5b280004 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x5e551171 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x92a421c4 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x954ec642 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xacd60379 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xc34c03a6 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xce3301a0 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe845b8a9 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xeb8a0f92 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xf2edc0d1 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x2d072a18 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x7f57e6b6 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x209f790f pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x90223942 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x9d2a04c8 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xdedabc7e pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xf0b96acf 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 0x01177c27 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x0afb4faf rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x105ea01d rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x26010f60 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x34381e91 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4141cecd rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4251c486 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x720cdca3 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8bf0f872 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9be0daa8 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9c359e84 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa2e4a5d9 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa3c8013a rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xaab71c72 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb25cf746 rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc9f19db0 rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xcd010879 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd2d0d96f rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xdf92661c rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf78a05fa rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xfb41c69d rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0dca8853 si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x182fda17 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x21613f8b si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3084a242 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x33046889 si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x397bdc1d si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3a3a5131 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3b192339 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3da7eaf3 si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x49b2aff2 si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4b1c6012 si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x53263b07 si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x553ea1a4 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x609d9831 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x636a6b5b si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x64185d09 si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6dacf627 si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7b7524da si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x811b7024 si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x916d4795 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x93767d7a si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x94592236 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9ab02b78 si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9f320e23 si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa0e6865c si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb2426560 devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb97e5b38 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc17c33c4 si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc6bfc1ec si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xceb06705 si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe81f9876 si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf56486a2 si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xfb34c55a si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xfb6820b0 si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x70043b22 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x76ed8a29 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x7f380c8e sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xc9215ff6 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xe4540c49 sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x2774e15d tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x295c5aad tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xaa8d00db tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xc303cf77 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/mfd/twl4030-madc 0x9effbf1a twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x3ccee9c6 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0x0ab3c677 bmp085_probe +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0x52543d95 bmp085_regmap_config +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0x7a928223 bmp085_remove +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0xcdd37720 bmp085_detect +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xc9a9e4e5 cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xd0fa0a1a cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xd5b6f60b cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xd84dafa6 cb710_sg_dwiter_read_next_block +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 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x2f7c7b90 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x3d183f89 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x68cf287f enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x72d7cac5 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x7d440321 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xcd2bdfa9 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xdd5d5740 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x096a55c1 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x218cc95d lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x25f42c0d lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x3266813c lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x588add73 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x68eee21a lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x986789cd lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xb0c92a81 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0xac94ebc7 st_unregister +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0xeeee7d57 st_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x03f9f5ea sdhci_disable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x0c453817 sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x1402fc3c sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x59b85bf0 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x77b00abd sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xa72b1807 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xb2f53873 sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xc1bd3c84 sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xe8208121 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xead378c4 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xf0dba845 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x26e8a3b5 sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x3633a6f6 sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x43fa92e1 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x45308185 sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x643a8d50 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x7595a910 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x7f55aafb sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x55428e7f cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x6a6bab97 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xa85cabe9 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x1f730678 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x92d8822e cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xec8ac9fe cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0xdb117a0c cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x8e3d0a0d cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xdf06271f cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xe1e9e189 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x02e584bb __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0d73654f deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0fffd927 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1a839e2d mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1e35a139 mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2652c015 mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x298e91f2 mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2b9e959c mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2e100618 mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x35ea9e34 mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3fbdada4 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4d604951 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x533d82ab mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x58a321e3 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5e558863 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x62ada7f5 mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6dd890f1 put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6e63a276 get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6f8b0f57 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x70749fb6 register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x758eebbc mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7797b394 mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x826e9854 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x842f19de mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x85fb5568 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x88c1eba6 mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8a016725 get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8cf20086 mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8f3a5d7b mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9c3e23c6 mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa266fb94 mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xab348e65 mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xab84bbcd unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc37db9a3 mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc47aba39 mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcaccb386 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd000c80e __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd0fe6ea3 mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdbe60db3 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe2f21afa __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf7094b55 register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xaf97b5e9 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xcc274ad6 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xcc642da5 register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xe77200e7 add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xfd5313e6 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x13969c52 nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x17543788 nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0x1c7b6e12 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x3ac26299 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xcc6bfe58 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x15d5fb75 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x3b16ded7 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x40a827db ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x4680c48c ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5e793472 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6fea8133 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x78963355 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7a148e03 ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7ef159f5 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x96c1ad1a ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xae3554b5 ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xbc2e506f ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xd0e18bd6 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x12c4fd68 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x4658c7bb c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x6498643f unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xa139cd1a c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xbe0f4961 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xeff2d84f register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x2788052a devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x339fb20e alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x33d4bda1 can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x38dddd38 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x5d99e077 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x6134f53a can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x63f0d1ad close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x71e79940 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x99f9f123 open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xa78d99f9 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xa78f81bf can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xa88dabcf can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xc12defd6 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xc571704e register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf05b7027 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x64c1c83d unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xb0c55267 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xd5634321 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xe4190f7d free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x52442060 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x7a36fb89 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x8f4f6347 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xdfc178c7 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x0233d0af macb_mii_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x403cc107 macb_set_rx_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x59b5a3ff macb_get_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xa8f8911c macb_ethtool_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xaa32419c macb_get_hwaddr +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xe1d1d63d macb_ioctl +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xf9639caf macb_set_hwaddr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x001c416d mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0077e17a mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x01eb5bc1 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0405929f mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0487dc5a mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x065b0074 mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x075b6e24 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0771c743 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0a90cb8b mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0cf9d968 mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x11808764 mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x17314ee5 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1a91850c mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1aa81c01 mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1ab92442 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1d13b8a3 mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1dfe92e0 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2615b568 mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2864e4fe mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2be453c4 mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3262c213 mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x381774b2 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x420915b7 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x432c397c mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x43a3f9b4 __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x463178b8 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4865a86b mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4eea0b93 mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4fa27a81 mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x51fccecc mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5826e059 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5c888c29 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5cf0ff23 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5d106a4c mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x60a16247 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x61d95ae2 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x63040a9f mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x66dd58f3 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x687611c5 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6b003488 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6bff95e5 mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6f1ce2e6 mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x75fdef8f mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x77c84a74 mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x780fc10f mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7afe43e1 mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7eeef5d1 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7f03af75 mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x816e1414 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x81a3f091 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x83462a29 mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x85ef25ad mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x88346752 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8a48c270 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8c216de2 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8cfb6311 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8e8a0123 mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x93d43ab3 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x94570de8 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x95d2271b mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9696ee61 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x98504992 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x996c00fa mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xabbf9dc2 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xabe49352 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xac17bcb7 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xac57c4f0 mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb37bb7c5 mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb82324ef mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb9035cd6 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb9b319db mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbcec24aa mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbe0f8960 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbfeba4c9 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc2c6a778 mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc2e91ab5 mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc321aa33 mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc709ccde mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc7a4c5f0 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xca8bae47 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcdf5634a mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd320d267 mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd370be41 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd39e915a mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd4a65961 mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd5c7965d mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd5c873e4 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdcc54b8c mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe7705525 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe86a453b mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe8d2347d mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xec6b023a mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xec7df222 mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xed348e6a __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xee9618c4 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf06c6b3f mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf4ccb89b mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf525b9ff mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf644b080 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfabd5e0d mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfcdc5d06 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfd3e6556 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0e9405d2 mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x139c53b4 mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x253f5e5a mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3f587e12 mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4498c48f mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4954321e mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4b3896c6 mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5911ab7e mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6f9b8a3d mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x813855a1 mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8800d9bd mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8eb3f77c mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9d9bda94 mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa3534dec mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa7dc7a8d mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcb4c9286 mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe14914c2 mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x3849197b macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x5ada68f9 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x913ea970 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xc38165a7 macvlan_start_xmit +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xeee3d030 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x4c574033 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x2a49eece usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x76c0a943 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x817eafc3 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xdd3479f9 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x2724cb74 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x4ae2b7c2 cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x5c7f6236 cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x9077570f cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xb0d6639e cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xbd6e670c cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xd2547b61 cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xe32be1ee cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x084415bf generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x0b6b752b rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x2c100875 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x7562c641 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xc3770e87 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xe7f2902b rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x03449075 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x03b59631 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0a4b6822 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0c57daab usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x136f1293 usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1b862514 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x235b6858 usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x238163e0 usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x285f6e2e usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x296276e4 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3f28b9c6 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4884c943 usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x49d08283 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4cf1d87d usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4e88daab usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x54e2cdc1 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5d60966e usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x83dd45fb usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x950be9a1 usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa570706a usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xab188dfc usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb124ca5b usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xba4aaef0 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbe75e8fe usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd54a5234 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xdd8689ca usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe7b9967a usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xeaf8eec3 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xef26ed00 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf24c4de9 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xfc389935 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xff4d8889 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x6f18f635 vxlan_sock_add +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x8feec501 vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x975f4920 vxlan_src_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xc870bdba vxlan_sock_release +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xf353c7bf vxlan_xmit_skb +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x18d7a0bd i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x3467b2e7 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x35ac0fdc i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x3e465d4b i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x3fdf3534 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x47f0f361 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x559da3dc i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x6c1aa68d i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x76c1e34c i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8b153fcf i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9560bba8 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa74137a2 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xaa57ce1d i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb1025d43 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb4bc34a5 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb7ee5a5f i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x417eed2a cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xb55b9263 cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xc4d03f4f cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xe0180440 cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x1c660e11 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x677a1464 il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x6cf4227a il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x7462a149 il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xabbe6d51 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xef45094f _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x05deea95 __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0d556623 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1291ef1b iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1ac36ff0 iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1df5e81e iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x31f8780a 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 0x3c9c0aae iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3d548dab iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x4fc26ce1 iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x51306222 iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5d0a212e iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x61bfa065 iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x62eb5b24 iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6786977a iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6eac1504 __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8af43c1e iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8c5d5ab3 iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x957eb07b __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x96d80ace iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xaa6d08eb iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xaef24769 iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb9214250 iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xbc5b44b5 __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc67c31ed iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xcc969713 iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe01b75c6 __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf2ad1c2b iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xfa91f31a iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x0f93b98f lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x1142a7d6 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x13ac2cb3 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x32cbe180 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x438a4cda lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x50c79736 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x523694f2 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x52452251 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x897da9a7 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x962c3ffd lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xaefd4717 lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb217c6e9 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd745ac64 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xde69732c lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe00f7386 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf6fa2e7d lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x3aceae0a lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x4d96397b lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x50e4a674 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x9854d907 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc84e73c0 __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 0xd570da6d lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xdb1c98b8 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xe8e0150b lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0x012b2134 if_usb_prog_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0xf8a3cd09 if_usb_reset_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x06658378 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x155c640d mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x188016fd mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x2716ccf9 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x33a85c52 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x4f34fc5f mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x5a756c73 mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x5a9ed963 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x72c3057d mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x9be3b4ed mwifiex_deauthenticate +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb832c66b mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xbb19e4da mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc8f61e40 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe5fa11c7 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x00f88b3b p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x11fa7ab1 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x37130ecc p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x452754de p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x4f8c4606 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x6b9db317 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x7e926dd0 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xa8022669 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xaf1df349 p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0bddaeee rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x16a7808f rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x20e6bf09 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2b8de3e7 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2fc48d1c rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x322b5c71 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3258e01f rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x40508b78 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x41f9f060 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x482d7098 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4eb5c7ff rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5dd5fce4 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x644cf67a rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6e2a4933 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x74784a1c rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7b1eea87 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x87591b9c rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8adec3e8 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8ef30f2e rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x97121aab rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9c8ccdaa rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa29dc464 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xad6ade4c rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb17f4204 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb5238b03 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb90c6081 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb9e66b77 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc3b39103 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc4299900 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xcb4fa90f rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd5dbcc1a rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xde38c123 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe215fc4d rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe21b56ef rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe6864a20 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe82ca519 rt2800_get_tkip_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf1f01006 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf8479ed3 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x050674e5 rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x12474525 rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x3eb20381 rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x56762bff rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x6c4e4ac4 rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x6ef57980 rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xa67f60b7 rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xaa0cf6ba rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xbcab75d1 rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc385457b rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xd807b7f3 rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xdd7f7ab1 rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xebc802cf rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x04821273 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x11b57e44 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1618f4a9 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x17479e62 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1c491428 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1c82ecc6 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2300a6b0 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x25b1e6a6 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2bf2625d rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3ecb4423 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x434f3d1c rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x45dda7b9 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4792cb3a rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4c1d91a2 rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5b7562f5 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5f3aa2a9 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6877c194 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6db98a08 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6f27e734 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6fe52cb6 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x73ed90ca rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x75c071f6 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x78cf8ffb rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x79c046b0 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7a0f178c rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x80497fda rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x80ecea10 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x83961129 rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x930352bd rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x93b5a3e3 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x954a3a50 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9aa9ce4e rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa0640c74 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xaaad1eaf rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb2d9a841 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb63e17d5 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb85bbba5 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbfaf8ebc rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbfc91f53 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd24e135f rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe0ef18ec rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe6f147db rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xeace0c37 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xee649093 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf2def766 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf666500f rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x1d770b45 rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x219e8f9e rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x71b5990b rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x88d6a05a rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xf86662fc rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x27aee8b6 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xba81e234 rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xc0695abd rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xd044e0e3 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x0a514b72 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x0bc49032 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x2456367e rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x25b462a3 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x25fcbc75 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x291b3bc7 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3d98aa12 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x43a1dcdb rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x57bcaf50 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x9806b7d4 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x983a8ab9 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xae52c115 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb3d831ae rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb7651b02 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc7b8fa76 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xf0734a67 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0ab0e8c4 dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x52b4a555 dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe8cef557 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xec25417f dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x00f09266 rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x02b21b18 rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x032965f0 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x0d268208 rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x1f16f8b1 rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x20a25532 rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x2f6e1fd8 rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x42bf0810 rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x4b68b3c6 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x58eea402 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 0x7607286d rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x8523013c rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x854d0123 rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x8792ac82 rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x8bb652bf rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x8f9317e1 rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x9593bb6e rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x97abc910 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 0xd6007d66 rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd648c665 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd8b79b91 rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xdcb36f5b rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xeb4fb97e rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xecb5db16 rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xf02d57cd rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xf72dbd4c rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xfc440032 rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x0b8776e3 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x0d0b6636 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x1a75941e rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x241dedc1 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x4945b059 rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x4a1387a2 rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x4ae9fdc0 rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x516125ec rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x573685d9 rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x67cfa4d9 rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x72470b5d rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x818697fd rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x9d7cbd96 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xb78e1978 rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xc36b3325 rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xe44bc74e rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xe55bdc2a read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xe62804c6 rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xed43bebe rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf8ff6add rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x222bb3f1 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x61e70678 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xa93428dd wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x064a3322 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x08db4f6e wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0f59e8a4 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x133f18d9 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1d7da3b4 wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x27a8b398 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2d05704e wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x39f6fc7f wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3b7b7041 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3e8c7563 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x458b0b37 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x55aa937f wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5631b4eb wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5b851edf wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x615e2eab wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6d3766c8 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x737cbd13 wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7562ba7a wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x76b1947e wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7887a642 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x84076dc0 wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8549c5b5 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x91da5146 wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9fa2d554 wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa886ad7d wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xaa2b740f wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xaf3c1aff wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb2546803 wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb2deaac0 wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb72aba8c wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc016b6a9 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc5c86341 wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xccac48bc wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xcf2e4618 wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd15dac52 wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd4bb78df wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xddfa072f wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe4b0fabf wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xebf9c8ba wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xecca4b57 wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfb14251f wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfb5b394b wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x0a3853d4 of_phy_simple_xlate +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x0f19d607 phy_power_off +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x1c501643 phy_pm_runtime_get +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x1e61eacc phy_pm_runtime_put +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x26935a8c phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x366ca63e phy_init +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x36ac97ca phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x42d119dd of_phy_provider_unregister +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x45013550 devm_phy_put +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x4838f64c phy_put +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x5cc1d858 devm_phy_get +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x7f93ba9e devm_phy_destroy +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x890f5845 phy_create +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x94964ce5 devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xb0b8fea8 phy_exit +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xc45238d9 __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xce0a39f5 phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xd4f950fd phy_pm_runtime_allow +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xe0adeee1 __of_phy_provider_register +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xe5c37061 phy_power_on +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xe8dcf20c devm_phy_create +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xefdc690e phy_get +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xf64b16b6 phy_destroy +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x11d7218d pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x4a74b46d pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x61a88bdd pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x126ea513 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x1c6803ce mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x4fb0fd37 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x623346c1 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xe75f638a mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x0b08743f wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x1782bee2 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x35f607e7 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x3b3af6d8 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x8075d19d wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x9a714fcc wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x1c04777e wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0d6d0bf6 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x144f4254 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x151f938a cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2689b068 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x29b51bc7 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x30afee81 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3338ec92 cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3addc905 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3fee7c76 cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x403f99b6 cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x41925f33 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4c33db97 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x589b21de cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5b8575db cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6b2d09a5 cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7037e2c7 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7184090e cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x722bd8c7 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x74add275 cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x74e3492e cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x77998358 cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x84ddc7d8 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x86e0c405 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8fc00e9a cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa2905e97 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xafdc8e79 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb508abf1 cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb60e1e11 cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcfef0d0a cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd151f9fd cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd7a3bb35 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdde28e44 cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xde6565ef cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe152ae80 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe4b15dd3 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe879987c cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xecb95e06 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xefe12396 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf0b52b68 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf5117260 cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf899e002 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfbac326b cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfbb06f21 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfe49a89e cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x32a0a71b scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x531ccab5 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 0x6021dc0b scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xb6032674 scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xb6f6d598 scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xd81a70d1 scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xfb3e1fed scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x461a4b24 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x504d15bd fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x64970a47 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x667d925f fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x96e90a6a fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa25e075e fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xbc4cd392 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xce518c52 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd23848a3 fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd5eb6b40 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd62d3e51 fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd83377de fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xec3fdf14 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf134dc28 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf7cb293a fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xffeb9ec2 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x043f0157 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x235b4feb iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x440f4909 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x64a55934 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xe5dacda4 iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xff38cbd9 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00605a76 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x06bea741 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x06c20b21 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x075d9f06 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x088064f8 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12935681 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x19cdec05 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x24e1450d iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x27a38c34 iscsi_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2a1f4507 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2a796733 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2c42e21b iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2e78f35e iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2f525cfb iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3b866a3f iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3e58ca7e iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x41ed16ea iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x44498993 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4a429bf3 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x64992ee9 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x67d50ad5 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6921b6f6 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6a3b7136 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6a766d48 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6d2b0fd5 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6d698269 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7f364e9d iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x80fddfeb iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x88c7c1fd iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d8a991f iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x92debbad iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa69e1931 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xab7f2b19 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb3d14282 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbb670fa3 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc4b88846 iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd5d8b31f iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd685d015 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe1cf6a8e iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe332978c iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xeacd6094 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf99def8d iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfbaddb99 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xffeaa3b9 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x02ea6d55 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x0e661972 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x2ac14658 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x63353ee5 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6545c4fe iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x758be549 iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x7d5c17da iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8d6fd9d0 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x97a39112 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9d2c1500 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9dc37bb7 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd478b586 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd483c7b7 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd4e3cf58 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xdd1642aa iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf7c06249 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf91a20a2 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x04406d00 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x05b57194 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2ff800a7 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x34899ca1 sas_change_queue_type +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x376f1383 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x614a1dbc sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x61641f3f sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x62b13e5d sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x74f08a0b sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7bebaee6 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7f87174c sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x96090818 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa32f09bd sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa5f0c35a sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa6e032d8 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xacfd1bd9 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbb67e42f sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc3c5e7d4 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc4261fd9 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xce057969 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd9770ce5 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xdde40a9f sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe4bc351d sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf0b3f95b sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf7d7f4c6 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x02b5914e srp_cmd_queue +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x52834761 srp_iu_put +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x5ad861f5 srp_transfer_data +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xa75b1029 srp_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xa9341a74 srp_iu_get +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xfc2abca0 srp_target_free +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x58748f1b scsi_tgt_tsk_mgmt_request +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x5c1dc857 scsi_tgt_free_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x6520b87e scsi_tgt_queue_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x737cd8e7 scsi_tgt_alloc_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x93a229c9 scsi_host_get_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xc53b60e2 scsi_tgt_cmd_to_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xee8b1e8f scsi_tgt_it_nexus_destroy +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xeed57d1d scsi_tgt_it_nexus_create +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xfdefe80a scsi_host_put_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0056bafb iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00cbd203 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x01d0ee26 iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x26261e40 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x27310dd0 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2ea1f1c1 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x33666739 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4902d5b6 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x54800cbc iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x550399db iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x57b97590 iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x59a6e8db iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5a30efca iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5a70220d iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5dfe809b iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x64432833 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6625f7a9 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6a913811 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6af4b729 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7130aea3 iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x74f27afe iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x75159a64 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x78443a51 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7aaebc77 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7d241db4 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x80a89cfc iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x947506d2 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x951617f6 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x994c3ef1 iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa16d4fd4 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xca8ea816 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd3f2aa06 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd5d62777 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd66afc15 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd9c65280 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdb54055e iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xea89c95f iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xebfbf271 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf69fa803 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfd58fa31 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x09da3be1 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x124c14c3 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x3fa83f08 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xf5915af9 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_srp 0x2a60dec0 srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x36ad492f srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xa7e45c39 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xb1f52e2c srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xfe5992e6 srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x17866065 ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x31995123 ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x7cb92743 ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x87a4a202 ufshcd_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xa423582e ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xad38e174 ufshcd_resume +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x15f88301 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x426dd880 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x4edac54d spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xb42eeb80 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xd3a9301b spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x2a27d023 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x460b8979 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x8e49ac08 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xb1ae3022 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xd00ed75d dw_spi_xfer_done +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0xf0fcd21c ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x08a5c92f comedi_pcmcia_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0becc6b5 comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x169de933 comedi_pcmcia_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1760588e comedi_error +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1aecd865 comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1cf2c7b0 comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x203ef87e comedi_pcmcia_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2c0b3a0f comedi_pci_disable +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 0x4ea67684 comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4f409f2a comedi_buf_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4ff96090 comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x559973bc comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x55b206de comedi_buf_get +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x58f9da30 comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6b3d6a37 comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6e742ae4 __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x70f22b9e comedi_buf_memcpy_to +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x737c1e30 comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x798582cc comedi_pcmcia_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x809329ee comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x85b27c4a comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x92ed14f6 comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9a2b96cc comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa2142f65 comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa71fb913 comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa77a5a2d comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa7e131c2 comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xad2f1096 comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb679cebc range_0_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb754623b comedi_dev_from_minor +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 0xbf863652 comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xcbd1617c comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd0480382 comedi_pcmcia_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd3b7f0c3 comedi_pcmcia_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd531fa23 comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd6ac9525 comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd95b2e32 comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe11577a8 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe7cd19e0 comedi_buf_memcpy_from +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe91c0805 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xeaee79f5 comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xeb88fafb comedi_to_pcmcia_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf07052bf comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf74f97ce comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf81aa133 comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf8d27a04 comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfa1ae8bd comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfaae8570 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfb5eef13 comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/8255 0x010d815f subdev_8255_init_irq +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/8255 0x1687f6c4 subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/8255 0x3ddd86e3 subdev_8255_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x79f4a6cf addi_watchdog_reset +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0xe1e820a9 addi_watchdog_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x14aeb25a amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x1f2d3dbd amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0xc4daab71 amplc_dio200_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_fc 0x11f1f583 cfc_write_array_to_buffer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_fc 0x87203fc7 cfc_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_fc 0xfb404235 cfc_read_array_from_buffer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0xaa8e0945 das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x13544b6b mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x1b6aa0b0 mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x31178633 mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x3d567330 mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x49891e2d mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x4b121b24 mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5133660e mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x607df1a9 mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x6a6c3fea mite_unsetup +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x8601e612 mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x865e306c mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x882feca5 mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x9df0fdf9 mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xc439cdb8 mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xc94e3777 mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd3d8e74b mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd598ce28 mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd6795d86 mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xda506fde mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xdea55fa2 mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xed0ce1de mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xf2aa17cf mite_setup +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc 0x44ce79de labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x00628183 ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x587e93e4 ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x775cc4f3 ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x980af949 ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x9e762924 ni_tio_rinsn +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xd4bc51fd ni_tio_winsn +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xfa6ed659 ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xff1bbdc3 ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x0308c789 ni_tio_acknowledge_and_confirm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x1eb08b91 ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x22d4d26c ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x5ca55d1a ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xe40a7c7d ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xe5394e20 ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x1033de2b comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x1ba4295a comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x366a83d1 comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x99bf268a comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xac076b50 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xb4555700 comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xe82d8c64 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0x2206b003 dwc2_handle_common_intr +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0x84db92f5 dwc2_hcd_remove +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0xb05a818c dwc2_set_all_params +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0xccb7441e dwc2_hcd_init +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x1a1b5249 oslec_flush +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x2feda75b oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x3227a28e oslec_snapshot +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x7dc9dddd oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xb2c66001 oslec_create +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xc8b5a524 oslec_free +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xd370f679 oslec_update +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0xe90d7053 adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/rts5139/rts5139 0xbd5a0e51 rts5139_usb_ids +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 0x126b3455 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x14f06fe7 spk_serial_in_nowait +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x15fb2dde spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x20e5ba06 spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x259eb7f1 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4443a7a2 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 0x5c70aa6b spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x7b94aacf synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xa7a81a53 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 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc766ae09 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc803ad09 spk_synth_immediate +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 0xfdcd65b5 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x1b99429a usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x1db406c0 usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x20d07712 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x2458fded usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x3d7d1506 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x55b7e5ed usbip_event_happened +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x6ca25350 sockfd_to_socket +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x7c6dca8b usbip_event_add +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xa4d33f38 usbip_start_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xccf03363 usbip_recv +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xd359c8ce usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xe592b768 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xfd17b63f usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0x0513e198 pciserial_init_ports +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL drivers/uio/uio 0x3eea0973 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xaeb45a27 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xd8b11b35 uio_event_notify +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xb09c9241 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xd342c0ad usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x3dc360b4 ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xc7288605 ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x170e9bea imx_usbmisc_init +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x74750d38 imx_usbmisc_init_post +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x06cf670f usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0b708a74 usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0e22f0b5 usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0ec39146 usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x109470da usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x155c94af usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x160ceb88 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2cf897be usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x35381e24 usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x370806b5 usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x379841ac usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3a98f93a usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x46735992 usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5fab2861 usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x716f3926 usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8f5a3de9 usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x923abf0b usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9b712a07 usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa231490b usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa682fbee usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb74ac331 usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd565a65a usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe7cd5185 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf30c68b7 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf34e1644 usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfa9f14d4 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfe5b92d6 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0x08b5f544 gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0x450e1fb7 gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0xa064fc2f gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0xf0935001 gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x1ea871db udc_attach_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x630ceee9 usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x7d49f357 usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x8c0e3b8a usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x8fb7ed52 usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xb73bef7b usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xc68021ce usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xd96a7ecd usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xf5c9c9b6 usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x0a5230df fsg_common_set_nluns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x141fce2a fsg_common_remove_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x1ccb58f7 fsg_common_set_num_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x2d10b6a7 fsg_common_create_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x51707c29 fsg_common_run_thread +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x6acb4179 fsg_common_set_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x7e26d4a5 fsg_common_set_sysfs +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x99023bfc fsg_common_put +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x9a0221c7 fsg_common_free_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x9dc025a5 fsg_common_free_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xa46e6443 fsg_common_get +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xbcfd553d fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xcf9a6362 fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xd3ae3b65 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xd468f882 fsg_common_set_ops +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xe4d1591e fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x2397873a ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x80340202 ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x286b0e31 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x29283b40 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x38688de8 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x47ba5b7d usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x5813ab60 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x681d62ff usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xa59f71ef usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xd694b4f5 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xfe2e5fb8 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x5b95f28f musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/tusb6010 0x2150b2d2 tusb_get_revision +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0x2d849610 usb_gen_phy_init +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0xb3c1a219 usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0xf22154ee usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0xe29807d0 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x22941c44 samsung_usbphy_cfg_sel +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x3c8759dc samsung_usbphy_parse_dt +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x4e9a67c5 samsung_usbphy_rate_to_clksel_4x12 +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x54111df5 samsung_usbphy_set_type +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x6c490fb0 samsung_usbphy_rate_to_clksel_64xx +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x9192c1fc samsung_usbphy_set_isolation_4210 +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0xbb0e2e5b samsung_usbphy_get_refclk_freq +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x097f4c6f usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0d936a54 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1f132757 usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2b2f122c usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2fa1a11a usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x404bf7c8 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x427b3e1c usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5d11d138 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6f75c38d usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x70fb8619 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x73be16cf usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x76ebb061 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x86fa8f50 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8a1749e1 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8eb1adbe usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x91fad5a1 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa12a90cd usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb9f41ea5 usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc34ecbc4 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd2696075 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe64498ce usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf713f7df usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0c174185 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x21489e7b usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2344496d usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5124076d usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x81fc4d1c usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8ad3130c usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8b06c59b usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8c052176 usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8ce70b99 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8d497af5 usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8f2baa4f fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x911c0a4d usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x93d028fa usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa51f9879 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xbb39c60a usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc627d49d usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xdbc18c90 usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xdce40307 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xde37ca90 usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe11773ef usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe2936603 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe8d4b845 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x03a10e5d rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x161ddf22 wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x1e35bbec wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x382a1e7d rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x4b8294a2 __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x78e0ee3f 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 0xf4654c3f wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x052cfee0 wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x14e0407c wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x22db606a wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x3cf37b3e wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x48fe5e7d wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x4a5fc39c wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x6aef87f2 wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7811e922 __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x83583d96 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x8a13d829 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb97d1a50 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xbf007bd1 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf28ab734 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfb1b2aaf wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x335589b7 i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x8b367108 i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x9e21c93f i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x60a7ed34 umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x6706276e umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x6f5cf7b4 umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xa8e02fef umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xb801a6b2 __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xc5be42e9 umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xd5c72e37 umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xdba7f3ad umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0839ab11 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x08a07986 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0b8aad57 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0d767eba uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x15d7f762 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x194243cb uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2ab0968c uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x35c308da uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3636edd9 uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x397af6f1 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3e373408 uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x43b26388 uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4a527278 uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e4bc088 __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6e3c3b74 uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x704e15ad uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7dcfcd23 uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7e7ed70b uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7ed7ddbe uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x80f6d21f uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x811d6c45 uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x815e38c0 uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8b48aa2a uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x961d1694 uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x97a83463 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9ef0e323 uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa0c715e8 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xac6f75c7 uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb2cb3e1b uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb84eacf3 uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb9dc9174 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc50b2219 uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc9cb61e0 uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd9602d07 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdfffa1b8 uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe0c365ab uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe1716f06 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xeb81aa86 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xeec3d946 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf0832d80 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf176794c uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/whci 0x31535b5a whci_wait_for +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x03560241 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0a3ad894 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0d2b1d77 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x297b92f9 vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x355dfbea vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3a4d7368 vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x42e1085b vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4a4629fd vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5d2df154 vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x63913774 vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x64d99559 vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6be9fc5f vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6d71cd38 vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6dc11804 vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x94b4b9ef vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x94e0fe3f vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x99796c3f vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9e3416a4 vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xab5381f7 vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb0f74a4b vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb0f81e37 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb2210f65 vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb4e09ed1 vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb590389a vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc4c20d56 vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc7ec6814 vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xcca815d7 vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xde20c935 vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe2b9d9d1 vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xfeed2de5 vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x1a01e4a3 auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x50cf8e4b auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x8183a2bb auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xc59ca0a4 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xc72aeae8 auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xca512f68 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xcc3fa476 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xde6a8e89 auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xf08299ab auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xf3e24010 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x0ca61b8a ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x80dc0dd4 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x9abe9862 ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x9e77815e ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xdd789ea8 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xe39c5428 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xf3a0ebc6 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0xb92fe543 fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0xd3c48dc6 fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0x5cd0730c sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0x6694b9fc sis_free_new +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x1be55e0c virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x709d570d unregister_virtio_device +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x7aac5145 register_virtio_driver +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x8b52168e unregister_virtio_driver +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0xe1fee77f register_virtio_device +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x0b59705f virtqueue_disable_cb +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x1ddb4988 virtqueue_add_inbuf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x40d3f9c5 virtqueue_notify +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x4d3ea82c vring_new_virtqueue +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x5290cc22 vring_transport_features +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x56e8cbc5 virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x63ae0dcd virtqueue_add_sgs +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x773d889e vring_del_virtqueue +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x846982b6 virtqueue_poll +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x95cc13d4 virtqueue_get_buf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x99375728 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xc0824074 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xc326fae9 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xcfc59174 virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xd8181b34 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xd8634077 virtqueue_is_broken +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xf48ec07a virtqueue_kick +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xfd4dcf2b virtqueue_enable_cb +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL drivers/w1/wire 0x20bb93bc w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x318377e8 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x35e14e2e w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x36eafbcc w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0x4683d830 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xa31fd83d w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xa700af0a w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0xb9924693 w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xecf19412 w1_reset_bus +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x75ff16a0 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9b82f4bc dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xce98e477 dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x07c1290c lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x5e267f69 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x8a037596 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x9c72d065 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xa6be93c1 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xb2cf00bf locks_start_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xce5596e9 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xd7b3cdbf nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xdadcd702 locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x017925f1 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x05baee70 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0764ac3d nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x084f274e nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0a535232 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0a9f66fe nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0c233af5 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0ea7a047 nfs_setlease +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1650a60f nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x176eca4f nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x177316d6 nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x197a414c nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2021ce3e nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x215d6b80 nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x24a03fe4 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2a784d77 nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2c0d844e nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2c9bce5b nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2cca168a nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2ee1761b nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2efa074d nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2f33d091 nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x331a8d8a nfs_put_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x34aca43e nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x36b8303b nfs_generic_flush +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 0x3f631a14 nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x402037c8 nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x402d61ce nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x418ed751 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x41bc26a2 nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x43eca934 nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x45d1e773 nfs_initiate_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4608701a nfs_writedata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x46659059 nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4895c61a nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x49ee3e0b nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4a71f164 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4ad3edf9 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4b195f9b nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4e29f09f nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4e441647 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x503f9258 nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x50ea6674 nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x54092835 nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x57977268 nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x57d1a603 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5955b483 nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5ac107c8 nfs_generic_pagein +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5c917bf5 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x664d5558 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x67371e73 nfs_writehdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x68582848 nfs_pageio_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x688d3310 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x692818f2 nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6a7c93b5 nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6f3aed2d nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7115ed6f nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x713adf84 nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x71edd4ea nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7255363b nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x75af6f05 nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7658ddf9 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7b9662d0 nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c3c84a8 nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7dd1a7db nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7e401610 nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7e427794 nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7e9abe49 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x89bc5a64 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8ef0e743 nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x904faf47 nfs_writehdr_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91c634da nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91c77a90 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x939f70b6 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x97a895cd nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x97f6cbac nfs_pageio_add_request +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9a0e5063 nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9af1ac23 nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9eb24897 nfs_file_splice_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa2e336e7 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa3aea463 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa7df7671 nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8c96647 nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8cc832c nfs_readhdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8d2d1ce nfs_callback_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa934c526 nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaaa14361 nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaabe6b2a nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaac21a59 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xad885994 nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaedcb723 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb10bec22 nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb11c3391 nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb27ef855 nfs_readhdr_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb3b38c2a nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb52f1b87 nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb532a88c nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb63fc85a nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb67da3db nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbccb3ac8 nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbe605202 nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbf0a4a3d nfs_readdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbfd124a5 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc2685ff1 nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc2d4a2ec nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc3cf46a2 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5c1f039 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc67cbc34 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc6d64838 nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc7c63b1d nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcc263886 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcf7fe363 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd6128092 nfs_initiate_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdcf67722 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe24aba03 nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe382c578 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe424a8ef nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe5b5161a nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe5bb7f91 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe6a84d5e get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe863f508 nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeae4387b nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf2ccd5d1 nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf66d4653 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf74505d9 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf85530f7 nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf979ad2c nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf9ceeb92 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7ee006 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfe679376 nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xffa14cf1 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x04516b2c pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0e8638ae nfs4_proc_getdeviceinfo +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 0x1999697b pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x22898920 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x23f2c416 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2d8c3eff pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2d91b7d1 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2e067c4d pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x40fb53dd nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x44b7b34a nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x45db0736 nfs4_insert_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x49025a7a pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4df708e6 nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x50b5d4e1 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5570d772 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x55fd03d4 nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x580ebb59 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5ac78ac9 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5ca1cb7a pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5f98021b nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x665fa50e __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x686ce2a4 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x68c58ec1 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x78dd79eb nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x798f7939 nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7bf1ab2a pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7dd81012 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9c5f0486 pnfs_writehdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9e6788e7 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9fc3a72a nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa1a66e6b pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xadb384cc nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb0eb9532 pnfs_readhdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc00d7a13 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd0fd6151 nfs4_proc_getdevicelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd2a19d11 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdb813e84 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe06723d2 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xeb6b0502 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed097742 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfe916f07 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x726e55bd nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xa654f740 nfsacl_encode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x19c1dee5 o2nm_node_get +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 0x2467c4b7 o2nm_node_put +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 0x8b17f46d o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x8c7e412b o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x9ade9444 o2nm_get_node_by_num +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 0xd0a06e55 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 0xd9c8a2b8 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x0c9184ab dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x2c81f423 dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x3335dd2d 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 0xa9217607 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xb0fed09a dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd26e528e 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 0x025e2d69 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0562c415 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x16b2e575 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4f356218 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x5469ce31 ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x7083dbd5 ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x83c28edc ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x89502fe7 ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xb4bd060c ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xdc823ea4 ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe2bd47db ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe417d940 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xeb7aa797 ocfs2_plock +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 0x1605e2f6 notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x61d26152 notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x021957e1 raid6_datap_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x05513b71 raid6_call +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x0f8a2742 raid6_2data_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/802/garp 0x03eaf98b garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x47352d96 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0x8d375619 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0xc759bb8b garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0xcf831920 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xf6fbe629 garp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x949dd610 mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0xa59f97fc mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xa73e9023 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xa9eb6002 mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0xcd274fe5 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0xea8c33da mrp_register_application +EXPORT_SYMBOL_GPL net/802/stp 0x0e1b34da stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0x8cf650bc stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0x43fb4e5f p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/9p/9pnet 0xc072876c 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 0x4983ab04 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 0x2eaae38e bt_debugfs +EXPORT_SYMBOL_GPL net/dccp/dccp 0x04d613af dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0dd100d8 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1a732dc5 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x28c32ce9 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2c97eb89 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3da2561a dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3eb33987 dccp_ioctl +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 0x590bc7b9 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5dc52c94 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x651d855c dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x72fb9c66 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x84f4b634 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8b94c3cd dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8c25c14c dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x91a62404 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x947d3c69 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x97936b80 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa45adfa2 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb4460b9f dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb4e0d41e dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb8deab06 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc0b7b890 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc0c3517b dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc5ce4456 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xcabb4bd5 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0xcd2bb5f6 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdbb76f01 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdd8f0250 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe65710f0 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe6ba576d dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe9ffb91e dccp_insert_option_elapsed_time +EXPORT_SYMBOL_GPL net/dccp/dccp 0xeb68665c dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xed4e8297 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf3017e21 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfc73b7e6 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfccc1228 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x14221f9c dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x19be59e7 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x3a08b405 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x3fb5f26e dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x4591862b dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xa97f1de8 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x85d328e2 unregister_switch_driver +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xdebe6e6a register_switch_driver +EXPORT_SYMBOL_GPL net/ipv4/gre 0x1ace6a89 gre_cisco_register +EXPORT_SYMBOL_GPL net/ipv4/gre 0x20af862e gre_build_header +EXPORT_SYMBOL_GPL net/ipv4/gre 0x2a7fe42a gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xe988af05 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xeb056f69 gre_cisco_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x0750fe89 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x467fcd7a inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x710f1790 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xb6f8b9db inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xea7386e0 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xec9264ed inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x26a5d814 ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x36b1f734 ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x472af938 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x5679130c ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x5d776951 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x77363829 ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xa7607950 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xcc9afc4a ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xeb7bdc90 ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xee834269 ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf5637408 ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf75b9ca2 ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf7a3d340 ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf9454e19 ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0xb62c30f1 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x6e35e1ee ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0x6d40a921 need_ipv4_conntrack +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x385a8957 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x08803dd8 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x51d282a2 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x76e14d7d tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xa008652d tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xcf35cedb tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/xfrm4_mode_tunnel 0x75e35139 xfrm4_mode_tunnel_input_deregister +EXPORT_SYMBOL_GPL net/ipv4/xfrm4_mode_tunnel 0xa185d3a9 xfrm4_mode_tunnel_input_register +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x15bda5f1 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x613ffbf4 ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x6ce9e699 ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xdf75efc1 ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xedd368ec ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x2af33eba 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 0xdc34fcb4 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/xfrm6_mode_tunnel 0x9aaf3826 xfrm6_mode_tunnel_input_register +EXPORT_SYMBOL_GPL net/ipv6/xfrm6_mode_tunnel 0xfe20d567 xfrm6_mode_tunnel_input_deregister +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x05d22b25 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x1d1f1d3f l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3ebf9780 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3ebfc493 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x5b5a34b1 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x635b6a16 __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x816df600 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9198215f l2tp_tunnel_sock_lookup +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9586b385 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xb5113649 l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xb910a831 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xcb4c354c l2tp_tunnel_sock_put +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xcb9704bc l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf0e4207c l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf508423b l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf7ef0400 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf9638297 l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x39a7e254 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x0a94a153 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x27094f59 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3663a36d ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3b27177f ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x4576b4df ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x4bf42798 ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x4cf3034d ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5d38f601 ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5f9d621a ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x9b3a18ab ieee80211_iterate_active_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xad1616eb ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xaf9e2eb0 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd0f76e84 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xebbd1eea ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xee30fb6d ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x0fe3673d ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x1732de3f ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x20161f13 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x2b6e4248 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x2e7c5328 ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x32ec2c3b ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x38182216 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6344eaf6 ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x787b34ef 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 0x86ee669d ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x97d58cb7 ip_set_nfnl_get +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 0xb3cc6f84 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xca8a7476 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd1767c9a ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd5f4e15d ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd94c3ff5 ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xdaee1a9f ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xef13ebbe ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x0560cc00 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x8a91652c register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xc2a77953 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xe7d4581f ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x01f84db5 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x02eed9e2 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0392b5f7 nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x040be544 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x04117e01 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x044a1ef7 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x055c9810 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0b86b56b nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0fd00b44 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x11078588 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x11c66f76 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1393f0f0 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x151319e0 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1b6de1d3 nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1bf5b6c7 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1fe2138f nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x25e4afee nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2d0e2b35 nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2d2d5d26 nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x30b756ac nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x376afa92 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3ba8089f seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3da4ff81 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3ea68f3e nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f229131 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x40370ed3 nf_nat_seq_adjust_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x41695468 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x46f95eab nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4825d9ca nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4b10f2f9 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4caffad0 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4e171261 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x501dedee nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5763a9e8 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x584452d4 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5accc586 nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6190a2b5 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x622b8f6c nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6464bd9a nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x68efabca nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6c1abb6f nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6de92eaf nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6fff8279 nf_conntrack_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x730237ed nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x77f79bcb nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7b94110e nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x83a6680c nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8c3c6f9a nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ee0c13d nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x906dc40f nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90bbd30b nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x93a79d53 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x969c63f0 nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x970a793a nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9889b101 nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9b2187ac __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa2209686 nf_ct_l3proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa397a0f7 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa985a755 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab4b8462 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb2f95624 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb54cdcf4 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb7bce4a2 nf_conntrack_tmpl_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xba6b3390 nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xba8d7fd2 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbd734c35 nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc1336cd1 nf_conntrack_flush_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc22d0454 nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc4f65d7f nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xce1514a2 nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd1c1462b __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd29292a3 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd2c2cb90 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd9b8c337 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdd833729 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdf730a7c __nf_conntrack_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf87bfd6e nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf8d46d47 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfdde1ef6 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfecac88a nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0xfe12e9b7 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x48793eec nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x0e0985be nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x17929b5c nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x3a5cbdd9 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x3cc6de5c nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x5b163d4a nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x6387a460 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x638b1d13 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x7d1a1541 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xa4e51db9 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xbde00900 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xd486f645 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x7e6b307a nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x648ef76b nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x6b3bae45 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xb94ae57f nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xd4d381fd nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x683451a2 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xb152529a nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x190c9fc2 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x23823853 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x376e7284 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x58f32bbf ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x5aab69cf ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x7c04dd8e ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xa1c3b5f1 nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0xe1f910a8 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x23428ba2 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0380ec12 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0ab423dc 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 0x834d7a93 nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x8a2e4296 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x927cec85 nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xb214c36e nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xcadbde81 nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xee8a855e __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x11a006b5 synproxy_check_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x45112738 synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x5f339439 synproxy_build_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x90298227 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb42e336a synproxy_options_size +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xd2e86da4 synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xef7db50c synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0a897a41 nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0bb7f40b nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0fda3c99 nft_validate_output_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x19679d4c nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1b9709d6 nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x247297b5 nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3d49dab7 nft_validate_input_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5bb3d216 nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x94a877e4 nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x96ac30d1 nft_do_chain_pktinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x9f5ea052 nft_validate_data_load +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa25921c7 nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc847a801 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd36a76ba nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xdadca7ac nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x0607dbdc nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x08283afd nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x2e301cc6 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x3ab0ee6a nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x716ce84b nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x8861aa64 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xcf2ddec6 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x08c99d40 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0xc26549ce nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x02a0b350 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x104cb495 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1d74626a xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x21de1dd9 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x24c8e482 xt_copy_counters_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5696c297 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6070be90 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x62b3cb82 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x92bf2588 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa28ca699 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa87c28e5 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc074be8c xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xcd3528c7 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd0d6597a xt_register_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 0xb9da7938 nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xbf59fc07 nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xdf00262a nci_spi_send +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x0b9d9581 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x0faf88bd rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x1320f988 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x1bbb4572 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x21f9c3e0 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x23b88643 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3dba7b2c rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0x45f7ae1c rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x4622b59b rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x62fe4d52 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x6a003050 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x6ac3863a rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x6cc184f3 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x8436b356 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x885f658f rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x96fafe85 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xa4360f10 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0xa79fbef7 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xb8d11f9c rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xbcbb54b8 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0xc15e43c4 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xd043709f rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0xd74a5f2f rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xd9028225 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0xdb08b291 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x2fdc1918 rxrpc_register_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xa9be8a09 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 0x0dbd527f gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8200b4dd 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 0xc74c4605 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x01fb601d svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x04fe7e06 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05e807a9 xdr_encode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05e83834 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065994f1 xdr_encode_opaque_fixed +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b39d759 svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b6fa796 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0bab6552 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0c8e1c32 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0c95fd38 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1007653a read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1059b482 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1167a6df __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x11a80704 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x11e69d35 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x11f6597c xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x125fbc7b svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x12666de5 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x12a3c4ce cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x135ed3d1 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x14b07dfe svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x16a2a905 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x182bcbd9 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x18e3bf15 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1a0d826a gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1bc5e1d1 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d2d86b4 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d8b5299 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1dd5d4ba rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x206374ff rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x21d754ec write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x231c2b50 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x24c31a6b xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x269a60a0 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x28abff2c svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2bbeb3db rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d3c1716 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e387021 xprt_lookup_rqst +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 0x2fd413ee xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3098158a xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x312d57ee rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x315262bf xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x333833f7 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x33aa8ac5 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x35448c65 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x356859fc svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x384485a3 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x39317c69 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x39696d30 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3a40aa70 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3d1dedad rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3e387fd3 rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x41c9fa2a put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x42f0ffe9 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x432b71de rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4656eb47 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x48fb406b svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x494f4489 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b054ba9 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4ba49786 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4eff3673 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4f58be93 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x50839b0d sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x51436315 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x54114335 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x55f28208 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x58f804a5 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x593b6a02 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b6f0f27 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5d10d9d4 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5ef1bec2 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60c5bba8 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60d832ff xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x61cd175c rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65c83671 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x696aa490 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6b1406a5 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6c5c1316 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6c830bae xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6c8b6295 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6cec92c2 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6deb972f rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6eddb4a0 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x70a0a688 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x714722c8 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x72e3f2be rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x73ed1bbd rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x753f06d8 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x75c70579 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7708ced9 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77224ee6 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x791aabca rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x79ac79e3 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a374421 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a90e2ea svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7b2cebf6 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7bf342bd xdr_init_encode +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 0x841a003e rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x845315d7 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x848d8b4b rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x84b4d002 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x852e3899 rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8822933d rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a0d384e rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8c9c594e svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8dae8ed1 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8f8902b4 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x90a0aa69 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x927d14c6 rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x928febe9 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x92f0cf7b svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9423e459 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x946fc269 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x94e991eb xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9587d742 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x969f80d2 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98fe15de xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d19fe20 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d6f3091 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9dc7d17a xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ec04fbe rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9efafb57 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa29ae54c xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa549d420 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa67206a2 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa67f5808 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6cbc0e2 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa75ab84c rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa997e22f xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xae337fba svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xae397952 xs_swapper +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0c725ec rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb20abbd1 rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb2cdb6a4 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb88dd151 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb90c2a92 rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9e9e339 svc_reserve +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 0xc172f3fa rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc2d5084d xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc436314a rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc452690b xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc468c045 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc6382cbb rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc71b443a sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc79db5b2 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb0ead51 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcdb53bcc rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcdd4f66e svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf3cc034 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd5c47620 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd5c81dea auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd6918719 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7231c22 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd9b3e5e4 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdb602a2e rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdc64b962 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdce65bfb rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd4e385c sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd9bd10b svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xddd6210a svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xde43c4fd xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xde70b2f6 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdedfb798 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1b21695 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe3315b60 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe418acdc svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe489034b rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe571a190 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe6832ffb svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe6837775 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe98ab40a rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb94e749 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee747b50 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf16dc5d1 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf170bd84 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf1a49038 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf393ebf3 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf47def47 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf5e784eb xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf8387d71 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf8a397d6 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9b13ddd rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa1ddb06 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfba9b1a1 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfbfb6a89 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfc7f5413 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfd8482bd rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe2cfc2a rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x07936941 vsock_stream_has_data +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 0x2c95c1a6 vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x3189c3ed vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x3a6585c4 vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x51646bff vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x57ce6ebe __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x6b14eaa6 vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x6b271618 vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x6c877c0c vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x74e91915 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x751ff010 vsock_addr_unbind +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc83b611a vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xcef2df23 vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe1abf2db vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xef12a158 __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf593c40a vsock_pending_work +EXPORT_SYMBOL_GPL net/wimax/wimax 0x207c20c4 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x22feeb47 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x27e70e24 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x31826855 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x4bc58845 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x5b7bbade wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x5b98260a wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0x7e664b39 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc89c6181 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0xcb05c611 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xcfa541d7 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xdcc96a5e wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0xea493c19 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x05f4ce1b cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x1e323584 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x1fad5296 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x2a140b28 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x570ef722 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x685eae59 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x9014e6aa cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x9e36c6bd cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xcfa4a0d1 cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf1e339e5 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf996f409 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00778770 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x056bb269 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0a575945 xfrm_count_pfkey_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0b9e5852 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x74e1a843 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7c30b8c7 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x92dbc6c1 xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xbc8b0f41 xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xce7a55c1 xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xe122af95 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x41e1c95e ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x7884d2b1 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xe789c569 ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xe880ca36 ipcomp_output +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x3d246e55 aoa_fabric_unregister +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x44938fdd aoa_fabric_register +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x753636c3 aoa_codec_register +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x835a4ed3 pmf_gpio_methods +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xa5007048 aoa_fabric_unlink_codec +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xaf5d3bbb aoa_snd_ctl_add +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xc16daaa6 ftr_gpio_methods +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xc7994d0a aoa_get_card +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xdb48cddf aoa_codec_unregister +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xea2c0d58 aoa_snd_device_new +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x7d758aac soundbus_add_one +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x93ce030b soundbus_dev_get +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0xaba40e18 soundbus_unregister_driver +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0xd9b7a657 soundbus_dev_put +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0xf26d1a7e soundbus_remove_one +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0xf69b5e19 soundbus_register_driver +EXPORT_SYMBOL_GPL sound/core/snd 0x2cc06fa6 snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd 0x354deebb snd_kctl_jack_new +EXPORT_SYMBOL_GPL sound/core/snd 0x396ced17 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0x3ca17104 __snd_printk +EXPORT_SYMBOL_GPL sound/core/snd 0xa3c092d5 snd_kctl_jack_report +EXPORT_SYMBOL_GPL sound/core/snd 0xc6660252 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xb58db58e snd_compress_register +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xe7970bf9 snd_compress_deregister +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xfd44f1db snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x04e1b99f snd_pcm_std_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x09e913c1 snd_pcm_alt_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xac862e16 snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xc74c7094 snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x18134792 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x25223fdf snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x484e4e9c snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x77df920f snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x85f7d76c snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xa6159c8b snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x00bf849a snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0342df20 snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x06177d65 snd_hda_get_default_vref +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 0x07ae9955 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x082163b9 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x09c8b2d6 snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0a9accb8 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0d8d8790 snd_hda_sequence_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0fa85314 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1289cd80 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x145870c1 snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x190395c0 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x199eeeca _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1a0902ee snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1b861493 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1bad8959 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1eeb7e17 snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1ef0a040 snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x20a57742 snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2123104d snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x297b0112 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2a0409ff snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2d6550cd snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2e89ac28 snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2f3d62ec snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3366d279 snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x338bff10 snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3392a6fe snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x34816d9b snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x351b8982 snd_hda_check_board_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x35d5ed31 snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x36dbccc4 snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3831fd08 snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38e68e73 snd_hda_jack_tbl_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3a4aea30 snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3e63c6ab snd_hda_codec_update_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4082fde8 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4419263d snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4427c44a snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x44d314b4 snd_hda_is_supported_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x46e42b31 snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x470698ca snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x49f76888 snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4c123c1c snd_hda_ch_mode_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4d469246 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4dab1f60 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4e5705bc snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x50c3057f snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x523e07b8 snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x52996905 snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x547636c2 snd_hda_codec_resume_amp +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x54e89110 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x56483e48 snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5b714a50 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5bd26a71 snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5d9d0470 snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5e54bac5 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x64cb3789 snd_hda_get_sub_nodes +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x664a41a4 snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6912728a snd_hda_ch_mode_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6adfe723 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6c3f253f snd_hda_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6fe94478 snd_hda_codec_flush_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x70a64209 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x70cd767c snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7203c734 snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x73170d65 snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7590c11b snd_hda_codec_amp_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x75a720cc snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x768cae1e snd_hda_resume +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x76dc6871 hda_main_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x78272f31 snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7a629805 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7b3d15a5 snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7c1ea437 snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7cf654e7 snd_hda_parse_generic_codec +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7d49a398 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7df809d4 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7ff2f20a snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x813a8a05 snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x818cd437 snd_hda_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8304c1fc snd_hda_queue_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x841c6f3d snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x84e6c169 snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x86b647ed snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x86d1f368 snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x871a6e44 hda_extra_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8881d13a snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e4c6826 snd_hda_calc_stream_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9008703a snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x911fbb62 snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x924f5e8e snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x92ef9a2a snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x964819ba snd_hda_codec_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9734e058 snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9890b51b snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a5105ec snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9bb68267 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9bee5abf snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9c26a5b4 snd_hda_codec_resume_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9d63e47e snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9e765405 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa17061fb snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2506dd5 snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2827d76 snd_hda_get_jack_location +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2d57b3c snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa45a987d snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa6a02149 snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa8c3ecce snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaba9db81 snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xabe5201a snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xada1a8ac snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaedfb8e3 snd_hda_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb53db59c snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb5df109f snd_hda_suspend +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb6bf17c4 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb6c89060 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb82d95b0 snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb9e9b49a snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbae43d96 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbb9a47a1 is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbbc3dad9 snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbbfb47c0 snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbc1b6f77 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe41109b snd_hda_gen_spec_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe5764dd snd_hda_bus_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbf180f6d snd_hda_query_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc093c9bb snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc1be24aa snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc22ba2be snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc237857a snd_hda_query_supported_pcm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc3f1d2b1 snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc45c6611 snd_hda_jack_add_kctl +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 0xccf0de14 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcfb11c47 snd_hda_ch_mode_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd003fb46 snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd0131074 snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd0f8b95d snd_hda_bus_reboot_notify +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd141ba9a snd_hda_add_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd6dec60c snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xda3a052f __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xde1c431f __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdf06a702 snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe1949329 snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe30e6632 snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe4876f46 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe94eb218 snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xee127031 snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf382b04e snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf3a9b9e6 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf4ae8be2 snd_hda_override_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf61058d0 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf9962ec6 snd_hda_delete_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfb21cac8 snd_hda_check_board_codec_sid_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xff141091 snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/soc/atmel/snd-soc-atmel-pcm 0x03272744 atmel_pcm_mmap +EXPORT_SYMBOL_GPL sound/soc/atmel/snd-soc-atmel-pcm 0x6d02315d atmel_pcm_new +EXPORT_SYMBOL_GPL sound/soc/atmel/snd-soc-atmel-pcm 0x9778873c atmel_pcm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x005e66ff snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x06dceffb snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x079bc3a2 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x09b66fc4 snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0b26a2e5 snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0c13b11d snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0ccf9282 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0f1520b5 snd_soc_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1047a84b snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x106b48ec snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1080eb1a snd_soc_update_bits_locked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x14a71ffd snd_soc_info_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x14fe996c snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x17d0d678 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1aabd85b snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1ab2e8ca snd_soc_codec_set_cache_io +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1ac63621 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1bb8023c snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1c2673b3 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x20f1ff1e snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2192be38 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2215281f snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x24c2e0f5 snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x282a56bf snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2894225a snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2be7126f snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2de1497f snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2fd1dce4 devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x31edae6a snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x343fd5d1 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x34e2eede snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3566168f snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x365aa86f snd_soc_codec_readable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x387c5f2d snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x406777a7 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x410e82d6 snd_soc_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x42868f0b snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x43b2f393 snd_soc_remove_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x47d8d6c7 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x48b2b2c4 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4913371c snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x491fb4ca snd_soc_cache_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4af8c61f snd_soc_add_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4e4962f5 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x51187edf snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x54993881 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x55c85d9c snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x55dd9960 snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x57a9183c snd_soc_codec_writable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5bb5ea17 snd_soc_lookup_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5c51631c snd_soc_dapm_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5e668c49 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6456f7f9 dapm_reg_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x64b80776 snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6bcb0460 snd_soc_cache_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6d125b09 snd_soc_dapm_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6dae1896 snd_soc_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6e476a26 snd_soc_dapm_kcontrol_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6e49d05c snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6f70dcd8 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x71554617 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x728d8719 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7590172e snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7a7d3387 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7ad0dfbd snd_soc_get_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7c85474e snd_soc_codec_volatile_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7cf1ec5b snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7d542f0d snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7dc81bb0 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7df63550 snd_soc_dapm_get_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e92b836 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7fa667dc snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x810c9fe4 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x82941779 snd_soc_dapm_put_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x83ceb9e5 snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8713c769 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x877a5689 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x881ac8e7 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8a406a2e snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8c30c9d6 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8c66af52 dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x90630930 soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9344f7f5 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x95a85a32 snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x990b5a36 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9c65bfbd snd_soc_put_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9d343b3f snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9fb68276 snd_soc_cache_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa15b13c8 snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa1cf8862 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa277fa93 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa2851905 snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa5955f39 dapm_mark_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa63575d3 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa9488fa5 dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xac7bab5b snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xac9ff0a8 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaf39608c snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb1a508c5 snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb2f97d19 snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb4c66884 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb6ea377d snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb811323e snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb99b326b snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbaba6e02 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbad5e4c2 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbbe34394 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc23685fa snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc45df419 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc4f41734 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc7d6b65b snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc85a8cd0 devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcb6845e0 snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcd4bc2b0 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcdd10d14 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xce7d3398 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd14156ca snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd1cba63c snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd2578ede snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd428cf5f snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd5976317 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd599812a snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd5b6fc24 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdabecbd5 snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdb103a03 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdfc518a7 snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe00eaff5 snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe081b09c snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe0843b97 snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe0c59a9e snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe14f0a56 snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe3952464 snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe5c0e746 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe73ce036 dapm_mark_io_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe7cc1e1d snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe89d6d5f snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfc23fdf0 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x00000000 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x00000000 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x00241598 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x002c6e03 relay_close +EXPORT_SYMBOL_GPL vmlinux 0x003b0af2 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x00483383 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x004abc9e devres_add +EXPORT_SYMBOL_GPL vmlinux 0x00632780 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x006d9370 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x00b04bd9 rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0x00c4dc87 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x00d8b925 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x0114f340 device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x01160b9d device_del +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x01422aa3 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x0148565b usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x017f0930 pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0x01893291 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x018e70a0 serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x0195fba9 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0x01a49bc5 regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x02045ba9 wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x0204ba11 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x021ebfda btree_update +EXPORT_SYMBOL_GPL vmlinux 0x02539db5 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x0253fe96 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x027dcb74 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x02829e12 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x02eb0775 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x03064192 nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0x03277bf0 unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x03280f05 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x03419a12 pmac_i2c_get_controller +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x036503c5 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x03659299 dm_kill_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0x03a1c9cd pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x03bf1d5e gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x03d3a605 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x04302e77 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x043619f3 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x04486e88 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x0472caae of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x0483ac85 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x048fd456 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x04961630 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x04a31102 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x04b5549c __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x04c3106b mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04cf646d kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x05003c33 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x052e00d0 pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x052ede09 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x0534357f ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0x05441a1b kick_process +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x055b9983 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0x0575d58e rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x059e179d ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x05dee103 pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x05e3443f usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x05e5ae00 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x060e84d7 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x061dee59 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x06417695 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x064264a8 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x066a8260 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x06836b12 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x06862996 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x06a0e7fc cgroup_taskset_next +EXPORT_SYMBOL_GPL vmlinux 0x06bd9b80 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x06eb1895 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x06eb3da9 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0x06f3e1cd regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x071cd804 ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x07212ff5 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0x073a753f regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x074fe4ce ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x07693255 dm_underlying_device_busy +EXPORT_SYMBOL_GPL vmlinux 0x076a59e0 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x07927e5f sec_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b3974a skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07d31da1 css_next_descendant_post +EXPORT_SYMBOL_GPL vmlinux 0x07d72b92 pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x07d86fc5 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07ed724a tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x07f15544 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x08111bc1 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x082076c2 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x08291801 rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x0850461e screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x086dc2cf platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x08b9f1d1 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x08c43716 regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x08ef86b9 ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0x08f2a0d4 regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x090a6b27 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x0919feaf sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0x091c824a machine_power_off +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0943bd30 dm_dispatch_request +EXPORT_SYMBOL_GPL vmlinux 0x09469482 kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x0978cf53 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x0984a75b regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x09a2ef18 dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0x09ae794b ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x09c252ab dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0x0a05d011 driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x0a4b33e8 serial8250_tx_dma +EXPORT_SYMBOL_GPL vmlinux 0x0a51ae5b virq_to_hw +EXPORT_SYMBOL_GPL vmlinux 0x0a7280eb crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x0a9fd3c5 gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x0aa05c83 pmac_low_i2c_lock +EXPORT_SYMBOL_GPL vmlinux 0x0aa19949 pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0x0aae0453 check_media_bay +EXPORT_SYMBOL_GPL vmlinux 0x0afd4610 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x0b0355a8 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b11e4b6 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x0b37ffa9 devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x0b59390b __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0bb376cd scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x0bf166a2 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c03811a md_stop +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c560eb8 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x0c695cbf debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x0c793afb apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x0c815f65 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x0ca737f6 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x0cbcda2d of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0ccaaecc devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x0ccd858e pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x0cce0227 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x0d0137cb ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x0d08ae34 device_schedule_callback_owner +EXPORT_SYMBOL_GPL vmlinux 0x0d110284 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x0d344e1b ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x0d565231 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x0d82b5d1 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0x0d917722 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0dae2949 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x0dbb890b devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x0dbd0e20 of_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x0dbdf7ef ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0de06988 cpu_first_thread_of_core +EXPORT_SYMBOL_GPL vmlinux 0x0e52903d sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x0e70a8a2 arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x0e7250d5 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x0e8f9189 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x0ea6f530 cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x0ea92269 arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0x0ebddb56 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x0ec1d568 ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x0ed9302e percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0x0ef1207a blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x0ef8ef66 rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x0f0ea91f ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x0f12de19 devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x0f1ae380 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x0f28a7d3 macio_find +EXPORT_SYMBOL_GPL vmlinux 0x0f2c8739 thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x0f6cb195 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f751b7a ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x0f7d8220 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x0f8f6a3b regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x0fb38414 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x0fc01e9f static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x0fd533f4 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x0fe112dc of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x1011bccc usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x101f520f tcp_init_congestion_ops +EXPORT_SYMBOL_GPL vmlinux 0x102393bb rtc_set_mmss +EXPORT_SYMBOL_GPL vmlinux 0x1044b4d9 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0x105e60ad platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x10799d22 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x1092de65 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x109f5e92 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x10be0cf4 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x10c9bd15 devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x10d8a58f ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0x10db2129 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x10fa59fc list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x1114011d threads_shift +EXPORT_SYMBOL_GPL vmlinux 0x1116e7b6 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x1118807b bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x1151fe80 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0x11a22e94 fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0x11be4ad3 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x11de2bfd relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x11f048de devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x121cd964 of_pci_range_parser_one +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x121ed3f3 add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0x124950e2 user_describe +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x1251f9b8 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x125c5976 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x1269e712 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x1271f79d dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x12a40ff0 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x12b31a7f proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0x12c3318b tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0x12e6fc04 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x130891e9 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x1311b3a9 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x13354608 scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0x1345b42b __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x13469c27 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x135d263c sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x136734d9 ping_close +EXPORT_SYMBOL_GPL vmlinux 0x136a4ee6 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x137a2c04 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x138fb13a devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x13bc178a gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x13cfd12d fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x13e1c9fc regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x13e371a1 __module_address +EXPORT_SYMBOL_GPL vmlinux 0x13e5ea13 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x13e87991 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x14609708 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x14676420 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0x14c5e7d3 cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0x14f1ddc3 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x1518bdb7 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x15238acd crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x1553441a subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x1561eaef fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x1586868f pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x15a407b6 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x15bfa0cc fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x15c21e5e nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x15d1d43f i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x163ea45a pmf_call_function +EXPORT_SYMBOL_GPL vmlinux 0x164c4a4a crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0x164f25d7 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x165c30b8 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x165d27bb device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x166abed8 irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0x17340553 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x1753a32f hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x175beef4 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x17636fe5 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x17723e93 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x17a5168d fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x17a84a0b do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x17c228cb sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x17d5e85d crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x17eb124b sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x184cd0f4 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x18570516 pmac_i2c_xfer +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x188c6da5 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x18919977 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x18a27f34 jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0x18c8d836 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x18d13097 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0x18d61b6f class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x19143045 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x1925d7db ftrace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x193c735a cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x1942e144 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x195a6502 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x195c364d hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x19830222 pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19b384a5 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19b86e10 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x1a082d69 max77693_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x1a295d7e dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x1a323362 __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x1a365634 rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x1a45d43f extcon_find_cable_index +EXPORT_SYMBOL_GPL vmlinux 0x1a680995 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x1a8c5907 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x1ab9f454 extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x1abe2f4f regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1afa4118 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0x1b1216e7 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1b32119c __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x1b35a7ee ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x1b406d13 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x1b52db1c probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x1b73ed1b extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1b86f43b regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x1b8c73d1 of_pci_msi_chip_remove +EXPORT_SYMBOL_GPL vmlinux 0x1b8f1826 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1b9b1b7e rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0x1ba836d8 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0x1bab249b rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x1bd06aab cpufreq_frequency_table_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x1c3e25bc usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x1c3fe3c8 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c6668b5 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x1c67d34b rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c8ce93c zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0x1c9d2807 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x1ca2523f raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x1cc62523 regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0x1ccdce38 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x1cf82066 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x1d27e8d3 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x1d2e5bd3 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x1d387289 rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d5ca614 regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x1d5df598 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d877393 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x1db829be crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1dbaa109 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x1dc41704 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x1dfbcf4c mpic_msgr_disable +EXPORT_SYMBOL_GPL vmlinux 0x1e0bbb12 da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x1e326789 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x1e36d91d crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x1e407810 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x1e4c560a tpm_show_active +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e801c62 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x1e8fac8e wireless_nlevent_flush +EXPORT_SYMBOL_GPL vmlinux 0x1e900400 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1eac866f regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0x1eb1594f gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebcb81c disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ed1b29a fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x1ee5b704 rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0x1f04fee2 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x1f11e1ef tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x1f16a813 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x1f329d14 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x1f4a2d33 class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x1f5ba2de xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x1f7c66c0 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1f92b0ee simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x1fc1ff67 irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x1fcece42 inet_twdr_twcal_tick +EXPORT_SYMBOL_GPL vmlinux 0x1fd17b94 tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0x1fd44e1a gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x1feea524 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x200010e3 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x2011441d cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x20155ef5 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x203baa78 regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0x2049bab8 __destroy_context +EXPORT_SYMBOL_GPL vmlinux 0x209c8bdf hrtimer_start +EXPORT_SYMBOL_GPL vmlinux 0x20bc3470 orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x20d0267b led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x211cd78a crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x21426bb5 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x2146e8ed crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x21a1672d device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x21b88623 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x21c4e79a thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0x21d36a03 kvm_hypercall +EXPORT_SYMBOL_GPL vmlinux 0x21e9e0c9 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x21f12f87 powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0x2211d4d6 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x225e4b64 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x2263f57f __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x22684d2c sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x22690695 sk_unattached_filter_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x22c2202b irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x23253052 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x235c8626 get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0x23679939 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x238f3d0f sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x2392bc6e pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x23ade4cf tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x23af4c0e wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x23be723e devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0x23d5d868 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x23e190f7 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x2406dae3 pci_address_to_pio +EXPORT_SYMBOL_GPL vmlinux 0x2437c091 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0x243f7da5 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x2468dcec __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x246a4d1b pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x247b5e29 sysfs_get +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x248a9f03 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24c2ecd4 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x24c4037f usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x2530ecd4 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2542f5c8 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x256a7b3a ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x259d76c9 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x25c9f2be crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x25f14148 regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x25f78eb7 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x260f33ba tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x260f80cb ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x261ee101 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x263102d7 tpm_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +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 0x26be8a08 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26dd331a css_next_descendant_pre +EXPORT_SYMBOL_GPL vmlinux 0x26e97ec8 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0x2703a776 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x2734c65a ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x2748789a kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0x276420d1 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x2776affd blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x277c35f0 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2787db00 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x279a66bb serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0x27c0cc0a vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27ec3e90 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x2813aa34 __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x2825b563 tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x287d0294 of_console_check +EXPORT_SYMBOL_GPL vmlinux 0x2880075a css_rightmost_descendant +EXPORT_SYMBOL_GPL vmlinux 0x28852397 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x28a82da4 snmp_mib_init +EXPORT_SYMBOL_GPL vmlinux 0x28df123c usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x290ea70a rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0x29170339 __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x29349e12 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x293c3f47 agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0x29591477 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x297a8a5b dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x2999e11d usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x29a27c87 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x29c0b44b rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x29c5dade wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x29f19a6e ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0x29f38abd usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x29f7d54b thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0x2a116a4a dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x2a41d632 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2a43f2d3 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x2a5b76b8 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a8b73a6 pci_pri_stopped +EXPORT_SYMBOL_GPL vmlinux 0x2aa7635d ata_sas_port_async_suspend +EXPORT_SYMBOL_GPL vmlinux 0x2ace9a60 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x2ad1ece4 zs_get_total_size_bytes +EXPORT_SYMBOL_GPL vmlinux 0x2ae0faf3 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x2b3baf61 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x2b5c303b smp_send_reschedule +EXPORT_SYMBOL_GPL vmlinux 0x2b607170 ktime_sub_ns +EXPORT_SYMBOL_GPL vmlinux 0x2b7a574f md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x2b7a6de8 syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x2b8c6246 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x2bb35ddd ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x2bbc4b4e ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x2bea9252 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x2c0c5b59 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c3a3115 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x2c3e0216 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x2c5bc7c8 tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c8575f4 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x2c89c084 fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x2c97c085 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x2ca82bde pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x2cc3e675 pmac_i2c_close +EXPORT_SYMBOL_GPL vmlinux 0x2cdec026 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x2ce81b7e srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2ceb5a49 tpm_store_cancel +EXPORT_SYMBOL_GPL vmlinux 0x2d0b76cf ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x2d17a0e1 cgroup_taskset_size +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d1e0bda ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d8dccd3 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0x2d98b9ce blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x2daaa3ae netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x2db4f179 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x2dc5a6d1 btree_last +EXPORT_SYMBOL_GPL vmlinux 0x2e062a7e crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e45e488 rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x2e7853fa fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x2e905763 rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x2e928abe usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ece5f5e devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x2ecef233 devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x2ed74280 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x2ef6b5bf smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x2efc49e7 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x2f004461 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f4149f4 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x2f482ceb get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x2f8ae293 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x2f9b6caf get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x2fc78c95 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x2fda4120 irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2ff13600 ping_bind +EXPORT_SYMBOL_GPL vmlinux 0x2ffb5ff7 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x3006b6f5 of_pci_get_devfn +EXPORT_SYMBOL_GPL vmlinux 0x30237318 hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x3050ec18 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x307a7980 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x3080e6f2 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0x308b733a getboottime +EXPORT_SYMBOL_GPL vmlinux 0x309d2c36 pci_sriov_migration +EXPORT_SYMBOL_GPL vmlinux 0x30a49790 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x30a4f4ca bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x30e32753 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x30f075a0 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x30fcb78c tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x31af2e52 pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x31b01044 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x320f2673 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x32256f75 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x3252d5e8 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x3253d80a tpm_show_pubek +EXPORT_SYMBOL_GPL vmlinux 0x3256ca45 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x3278c0f8 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x32935e15 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x32b7fae9 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32d72c45 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x32d9f5e0 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x32fd447a monotonic_to_bootbased +EXPORT_SYMBOL_GPL vmlinux 0x330d2c8e of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x33120ced inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x331213d1 ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x331c2763 pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x33424ae6 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x336d3d66 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x33740732 unregister_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0x337786fa usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x339075e2 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x33c09e15 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x33cf3acf dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x33e287af tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x34329d74 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x3456074f ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x345ce68d pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x3481711a wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0x34ac50a4 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x34c14993 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x34e4f4d4 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x34f7f5ba queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x352ea6b4 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x3530aeb1 dev_get_gen_pool +EXPORT_SYMBOL_GPL vmlinux 0x353a565c __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x3569b0e4 max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x356c5f94 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3585e3e0 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x3587f436 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x3593d874 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x35a029fa pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0x35a0a4b1 inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x35a8bcaf crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x35b40c82 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x35c7c8c6 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x35f10f43 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x35f165f1 devm_reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x360a6343 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x361934c6 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x361cc5d9 user_match +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x361f0d4c usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0x3623db88 ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x366ab90d ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x367e2fcb pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36b4fb3a inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x36b506b9 system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0x36c42056 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x370ae527 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x37182cb7 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x371f34db pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0x37369e17 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x3736a238 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x374191ba ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x374d1318 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x377cc3f3 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x378dc752 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x37a24836 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x37a9ed58 rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x37bcfd78 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x37bee5bb iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0x38055ab4 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x38873490 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0x38a9c2c7 input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x38b7799e regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x38c6ecb8 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x38cafafa ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x38d2bf5b class_find_device +EXPORT_SYMBOL_GPL vmlinux 0x39055674 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x391439ae regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x3929f42c wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x39364ac1 tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x39365267 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x396904db sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x397ef9ad crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x3986c04f __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x39a36161 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x39ae0a49 gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x39b9d0c9 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x39d202cf regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x39d2feb0 platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a4a268f __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x3a4bcc30 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0x3a4c6000 of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a7b96cf vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x3aad8512 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ad82802 of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0x3af29310 gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x3b0aa736 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x3b2184f4 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x3b7c8fb7 usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x3b97075d devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0x3bc91ccc debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x3c00a3a3 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x3c1ad24c usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x3c20845a tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x3c306a88 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x3c8d28cc of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3ccffec8 of_irq_parse_one +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3ced0125 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x3cf777a7 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x3d0bc2c9 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x3d19e9c0 led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x3d32db5a regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d3fbae6 ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0x3d4c8d32 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x3d77d926 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x3d7db53d kobj_completion_init +EXPORT_SYMBOL_GPL vmlinux 0x3d7f4543 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0x3db467f8 platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x3dc526a9 arizona_of_match +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dc9fffd shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x3dd12bca put_pid +EXPORT_SYMBOL_GPL vmlinux 0x3dd4d3a7 bprintf +EXPORT_SYMBOL_GPL vmlinux 0x3dd68177 tpm_dev_vendor_release +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3dea702b anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3df59f19 alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0x3dfde3ac pmf_get_function +EXPORT_SYMBOL_GPL vmlinux 0x3e0a0641 pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x3e25ce74 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x3e2e543d cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x3e2f209b tpm_show_owned +EXPORT_SYMBOL_GPL vmlinux 0x3e2fa31f wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e8cbf06 devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x3e971b8d regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x3eb9c7d2 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x3ecd54b2 regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f07bb9d percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0x3f08ee00 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x3f2bc60d sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x3f52f3ca adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x3f840b6e tcp_is_cwnd_limited +EXPORT_SYMBOL_GPL vmlinux 0x40023f20 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x403f41ba spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x40418b19 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x404d3023 usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x40808020 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x40925e94 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x40abef17 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40b37a66 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40dccfc2 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x40e48e97 cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x40fe6bcb each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x41205ecc blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x41425d1e dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x41720ecc sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x417ad004 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x417bdbf2 rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x41892fbf wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x41b6ff2d usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x422a714a pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x425c1c0b ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x4284e34b __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x42958323 ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x429a0f34 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0x42b364ef scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x42c321d2 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x42d3595a regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x42deb455 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x430e5257 of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0x43313cc3 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x4337077c rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x437dd810 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x4401d755 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0x4434c995 __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0x4437f36e ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x443c5099 i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0x44404f11 kdb_register_repeat +EXPORT_SYMBOL_GPL vmlinux 0x44458243 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x44940658 pmf_unregister_irq_client +EXPORT_SYMBOL_GPL vmlinux 0x44eff47d percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x45070279 od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x452d550f subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x453b9380 pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x454c15ae __smp_call_function_single +EXPORT_SYMBOL_GPL vmlinux 0x455bd029 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x456407db dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x45b32482 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45d35c6d device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x460f7531 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +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 0x46aef94b subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x46eaeca5 pmac_i2c_find_bus +EXPORT_SYMBOL_GPL vmlinux 0x4703ba7b unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x470f4b6a rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0x471462ad attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x4729d1a6 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x4731b3cb ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x4736220d raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x4742dd6b inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x476ec9c9 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x477a6ec6 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x478f7092 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4790a8d4 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47b21077 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x47bddeca blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x47c66565 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x47db55cf mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0x47f2bd21 balloon_devinfo_alloc +EXPORT_SYMBOL_GPL vmlinux 0x47f45f9f input_class +EXPORT_SYMBOL_GPL vmlinux 0x481353ff ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x4840a8c7 rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0x4856a531 dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x485d5841 serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x488d838f usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x48915a39 tcp_reno_min_cwnd +EXPORT_SYMBOL_GPL vmlinux 0x48aaffa6 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x48ac5598 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x48ae8b10 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x48b278a5 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x48b4d6cd crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x48b4f848 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0x48b92d39 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x48ca8947 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x49305364 da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x4943a338 __init_new_context +EXPORT_SYMBOL_GPL vmlinux 0x4950d680 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x49590715 pcibios_free_controller_deferred +EXPORT_SYMBOL_GPL vmlinux 0x496eb405 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x497e3aff bdi_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x4982a57f probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x4985e12f cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x498d293a trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x4997ac9a pci_pri_enabled +EXPORT_SYMBOL_GPL vmlinux 0x49c136cd pmac_i2c_get_dev_addr +EXPORT_SYMBOL_GPL vmlinux 0x49ea6cf9 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x49f5f14d pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x4a2547c2 threads_core_mask +EXPORT_SYMBOL_GPL vmlinux 0x4a279369 find_module +EXPORT_SYMBOL_GPL vmlinux 0x4a40ab47 regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x4a709009 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4ab65cb8 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x4acc859d blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x4af14347 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x4b17b645 of_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x4b210a80 scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x4b7827b8 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0x4b84e91f perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x4bc62a81 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x4bf4f4d2 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x4c103fe9 need_load_eval +EXPORT_SYMBOL_GPL vmlinux 0x4c314ea2 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x4c4a0e7d bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c80670e split_page +EXPORT_SYMBOL_GPL vmlinux 0x4c8444ac generic_access_phys +EXPORT_SYMBOL_GPL vmlinux 0x4cf83622 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x4d172ccb ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x4d23e35b key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x4d47d6dc of_extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x4d7b4997 wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4df148d2 cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x4dfb1c15 pmac_i2c_get_bus_node +EXPORT_SYMBOL_GPL vmlinux 0x4e10191f get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e533dd3 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x4e650db5 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0x4e8f39d0 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x4eafac00 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x4ec9ee25 spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x4eca103c xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x4ed78ee6 __put_net +EXPORT_SYMBOL_GPL vmlinux 0x4ee06457 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f020dee public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x4f3a56e5 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x4f408f63 ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0x4f456339 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4f4d9c74 ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4f72173c alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x4f7c6f55 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x4f8754a3 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x4f881b16 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0x4f882fd3 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x4fb3fc98 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0x4fbab461 fuse_direct_io +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 0x4ffc8375 __netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x5007975d sec_reg_update +EXPORT_SYMBOL_GPL vmlinux 0x500cd40b usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x5018dedf blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x5047f4b9 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x50601122 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x50658ff7 sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0x506691f1 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x506cc085 tracepoint_iter_stop +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50c50dd7 fuse_do_open +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 0x513c021c device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x5165d1c9 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x516a8640 blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x51846493 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x51b5115a task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0x51b65a26 rtc_lock +EXPORT_SYMBOL_GPL vmlinux 0x51b7dc22 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x51e8d737 ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x52119f72 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0x52212010 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x5221ca30 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x5222b26e crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x5228a426 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x52393778 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x525f4f62 dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x526fc057 pci_pri_status +EXPORT_SYMBOL_GPL vmlinux 0x5287dc74 stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0x528ff4e5 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x52b088d4 of_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x52c0d5d8 scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x52d53b89 netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0x52e393de mmc_send_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x530c0cbf regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x53220ecd usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x5335dd11 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x533e7aa1 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x5349dc89 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x53794229 pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x538eaeca extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0x539197e2 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x53def254 cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x53f8ab4b wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x5434aa73 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x5440d38e spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x5454d5e8 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x54579e5a usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x545c9d64 rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x546b28fd nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x546c5565 ppc_tb_freq +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x547dcb50 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x5485c2fd device_add +EXPORT_SYMBOL_GPL vmlinux 0x5491a8c8 pci_renumber_slot +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54a9b4c8 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x54d66f25 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x5517a2b0 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x55234f89 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x5599075b __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x559c2884 napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x559c85c6 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x55c5e075 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x561e4b77 irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x564f1dca klist_add_after +EXPORT_SYMBOL_GPL vmlinux 0x564fccf7 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x56642200 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0x566a45e5 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x56902f6d blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x5692386f gpiod_is_active_low +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 0x56f771e6 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x57117236 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x5738f93d dm_set_device_limits +EXPORT_SYMBOL_GPL vmlinux 0x574fa47e usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x5755bad7 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x5755fb1c __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x575e2436 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x57644571 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57de8c67 tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x58023221 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x581168f5 gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x583ea306 irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0x588be8a6 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x5892f832 release_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58ad8ada vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x58c4f290 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x58f1d109 rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x592813bf ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x59330729 dm_requeue_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0x59379797 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5945212d devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0x5947abbe max77693_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x59518b28 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x5951da9e sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x595f95e8 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59e8e715 extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5a0cebf9 pwm_config +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a8f3b69 of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0x5a96b426 pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x5a9aae43 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x5aaf5c28 ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x5ab27da2 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x5abe6571 ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0x5ac699c7 __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x5aef9e4b debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x5afb47fc of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0x5b0d97e2 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x5b1bb186 tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x5b4e379c of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0x5b63ed2c setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x5b6ea9e4 pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x5b9e7bc1 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x5ba2659e map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x5baf636c dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x5bd73d49 rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0x5be3a75a gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x5bfe7faa tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x5c2417b0 cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x5c263059 inhibit_secondary_onlining +EXPORT_SYMBOL_GPL vmlinux 0x5c369013 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cb8384e sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d1a514c noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x5d298ae4 fb_ddc_read +EXPORT_SYMBOL_GPL vmlinux 0x5d2fcdb7 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x5d3f6e6c ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x5d4c6cb7 pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0x5d51bcf7 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0x5d55f982 regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x5d5b5a53 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5d72d118 sec_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x5da71160 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x5dc7fd71 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0x5de655f9 da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x5df9b71c class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5e2cfc98 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x5e3ed8c0 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5e42744e __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e9ecd86 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x5eaa2c61 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x5eb35c38 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x5eb55603 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x5ed3202e regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x5f191fa8 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x5f192515 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x5f248f72 set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0x5f419491 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x5f542f74 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x5f6e72dc balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x5f81ce06 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x5f83336f pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x5faead61 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x5fbdb7f0 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x5ff4715e crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x6015a6c0 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x601bedd3 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x604904a5 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x604c948d led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x60876665 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x608ad3ef _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0x6094685f wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL_GPL vmlinux 0x60cbd3cd fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6127f4eb percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0x6149d364 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x6177be72 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x618f0234 of_pci_msi_chip_add +EXPORT_SYMBOL_GPL vmlinux 0x61a01c4c driver_find +EXPORT_SYMBOL_GPL vmlinux 0x61a18d59 regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x61a5106f platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x61a90c54 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x61b1f4a2 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x61b55d8a ref_module +EXPORT_SYMBOL_GPL vmlinux 0x62033249 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x620ad734 pmf_put_function +EXPORT_SYMBOL_GPL vmlinux 0x620cad4a inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x621346ab dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x6216bd73 percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x624a6406 hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x624cac55 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x6284c17a __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x6290f27e evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x62e47dc7 blkio_subsys +EXPORT_SYMBOL_GPL vmlinux 0x62e53d44 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x62f024d8 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL vmlinux 0x631e282c sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x63205de1 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x632183b6 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x6346bceb serial8250_rx_dma +EXPORT_SYMBOL_GPL vmlinux 0x6364d378 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x6390efda of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0x6391e3e5 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x639b3722 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x63a1304f kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x63d9326a crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x63ecfd6a pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x6402272d ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x640f45af pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x64256424 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0x6453f77c pmac_has_backlight_type +EXPORT_SYMBOL_GPL vmlinux 0x6479ad57 pskb_put +EXPORT_SYMBOL_GPL vmlinux 0x6487e474 powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x64aa5e66 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x64b34b22 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x64eaa975 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0x64ebc8f0 spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x650a4697 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x652c4494 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0x65b5d673 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x65bec313 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x65c9460f __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65d30bbf regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x65f9bffa wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0x6602ec51 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x6605800c usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x660a6237 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x661dd6a3 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x662a0c3f x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x6679dcc7 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x668e2532 rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x66afb53b unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x67064832 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x67071b79 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x672accd3 inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x67584c23 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x67643d26 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67a23eb3 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x67b1b007 skb_gro_receive +EXPORT_SYMBOL_GPL vmlinux 0x67ead21d sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x67f6b29e put_device +EXPORT_SYMBOL_GPL vmlinux 0x6812cf8d __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x683a6705 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x68495d0c ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x6863c53a usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x6868d813 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x687934e9 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x688b1466 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x68956406 static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x689f63ae device_rename +EXPORT_SYMBOL_GPL vmlinux 0x6920e722 cpufreq_cpu_get +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 0x695315f7 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x6960e22d usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0x696559d3 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x697a420c timerqueue_del +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 0x69971807 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x69a95a3c lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0x69e9a2cb ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x69eb70a3 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x69f1e5de device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x6a02084e clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x6a2d91c6 regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0x6a326052 sysfs_notify_dirent +EXPORT_SYMBOL_GPL vmlinux 0x6a32e4d8 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x6a4aa2a0 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6aae8075 uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0x6acc2879 usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x6aea1bd4 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x6afd1ef6 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x6afdf58f irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x6b1e933c rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x6b2655f5 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b6e021e scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x6b6f7bdc pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0x6b8e44ea pmf_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x6b8f095b usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x6b9a34c5 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x6bdc1a8c debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x6bf7cea2 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x6c11e780 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x6c1b09ab gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x6c248796 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x6c49c4f2 clockevents_notify +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c521abd attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x6c6d4272 device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x6c749afe __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x6c85b203 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x6c970c21 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6caf43c8 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x6cb9e315 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6cd4ea62 wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x6cdea398 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x6ce109e0 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x6cfaa3d9 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x6cfdf6aa regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x6d2548fb skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0x6d28ad28 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d31e93b tracepoint_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x6d3d63af tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x6d4610ec cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x6d59fdc4 sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x6d6a8f9f __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x6dc9611c vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x6de4e517 cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x6dee47b7 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x6df8139e mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e28f821 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x6e633767 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6ecf6fc9 __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0x6ef114f6 ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0x6ef27491 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x6ef6394b driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f23bb05 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x6f45e07f flush_altivec_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x6f49ec87 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x6f50953b ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6f5519f4 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x6f9da65d file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x6f9f05b3 devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6fee9133 extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x6ff695c4 mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x704eaf78 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x707176d0 tpm_show_temp_deactivated +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x708ae0a6 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x70aa026d tpm_read +EXPORT_SYMBOL_GPL vmlinux 0x70b4340a blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x70b5a87a disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x70bb651d __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x70beefd9 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x713f19f3 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x71675329 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0x716cde53 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x717324d1 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0x71930ed3 of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x71a4d968 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x71c45ed8 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x71d773ca usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x71f3e7fe usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x721d002b sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x722af153 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x723272ed ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x723374f8 pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x725dbffa pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x7267db00 hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7268d77d uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x729d57ff pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x72b3159b elv_register +EXPORT_SYMBOL_GPL vmlinux 0x72f4fa44 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0x7318cf0a wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x73510609 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x7376c8b3 unlock_media_bay +EXPORT_SYMBOL_GPL vmlinux 0x737b6835 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x738623b8 sysfs_get_dirent_ns +EXPORT_SYMBOL_GPL vmlinux 0x738a44f1 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x738bc4ed d_materialise_unique +EXPORT_SYMBOL_GPL vmlinux 0x73935b9a usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x739aa1a1 pmac_i2c_setmode +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73bdb2b0 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73d3b56f tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73dba262 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x740cbb6b usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x7422c95e gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x74237ae6 regulator_set_optimum_mode +EXPORT_SYMBOL_GPL vmlinux 0x74390f65 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7469f873 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x747a1930 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x747d2be8 exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x74954462 timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0x74a30788 pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x74b8e6e6 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74c909f5 arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x74f44823 pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x7509edab pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x75211fdf devres_get +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x754c6a6f n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x754d4072 rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0x75684977 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x75781568 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x75817a1b inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x75ad159a pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x75c2b9f1 memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x75c8a11c inet_twdr_twkill_work +EXPORT_SYMBOL_GPL vmlinux 0x75c98a7d blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x75d17d0b pmac_i2c_open +EXPORT_SYMBOL_GPL vmlinux 0x75f2a044 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x7649805b __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x765e3070 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x76915467 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x76a97509 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x76d07d6e gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x76ebc963 hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x770cf981 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x771a9f46 alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x77214cea sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x774f93c1 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x7755377d usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x775c2ea1 ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0x7766d383 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x778aa315 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0x77a58a30 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x77d3e47c regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x77edc5bd blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x78022c4e key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0x785dc32e usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x786885a2 rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0x78bf8fdb inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x78de9169 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x78deede5 usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x790a8f7e transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x793b141f debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x7946a41a debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x7957d4cc pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x79605c82 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x79717cd7 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x798b872c irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0x7992827d blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x79cfb93f add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x7a21e506 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x7a4190e5 devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x7a4cdc35 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0x7a57e8fa rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x7a6929b1 skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0x7a72c8a9 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x7a796263 pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7ab3ca18 eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x7ab48eb3 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x7ae1ae8e cpufreq_frequency_table_put_attr +EXPORT_SYMBOL_GPL vmlinux 0x7af4e38d spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x7b0c2530 pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b0f2127 find_linux_pte_or_hugepte +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b36687f uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x7b48c004 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x7b4ae49d perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0x7b66cedf css_next_child +EXPORT_SYMBOL_GPL vmlinux 0x7b70a339 rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x7b8e098d tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x7b9435d6 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x7bb2e2e6 devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x7bbd45c5 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x7bce80f4 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x7bcef1f0 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x7bd5875d unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x7bfc5bc4 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x7c0545a7 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x7c346357 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x7c4b0fa0 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x7c4fa766 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7c773cea blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x7c86bd89 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x7cbc2cb0 tpm_register_hardware +EXPORT_SYMBOL_GPL vmlinux 0x7cbee74e device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x7cc1b7fd max77693_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x7cc7de1c x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7ce5b92a gpiod_sysfs_set_active_low +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7ced9a55 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x7cf2bcdf cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x7d2a17e4 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x7d36e534 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x7d397cc7 gpiod_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d5463f4 mpic_subsys +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d798323 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x7d7c76b5 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x7d9191d2 of_irq_parse_pci +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dbc17a5 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x7dd12fac register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x7dec51be eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x7dfb9c08 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x7e17ba7b klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x7e2f3236 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x7e3e4396 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x7e493bca mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x7e582371 regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0x7e5988a5 pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e7e589c edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x7e884155 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x7e9f25fd ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7eb27cf8 irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x7eb7b3f8 of_get_dma_window +EXPORT_SYMBOL_GPL vmlinux 0x7ebded77 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x7edd54ae tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x7ef42d0e rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x7f008202 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7f1c3b03 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x7f2cb1e7 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x7f4fd868 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x7f652012 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x7f7bc710 klist_next +EXPORT_SYMBOL_GPL vmlinux 0x7fa29f60 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x7fb03711 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0x7fc672f8 srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x7fea112a mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x800b64e5 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x801ca454 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x80264b2d regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x8070fd39 pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80c23dce fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x8100a51f fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x81034ff2 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x811d9b92 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x8127a6d6 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x8140842a gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x814d64f7 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x81775165 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x8187235a extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x81ce8d54 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x81f45c82 of_usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0x8207719b blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x820b7505 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x8219f935 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x822682ec netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x822d8bb9 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x823b2581 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x8280b1d6 device_register +EXPORT_SYMBOL_GPL vmlinux 0x828e840c security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x82939ebd rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x829e86f1 extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x82a01c9f relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x82a51688 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82d85118 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x831270e5 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x834616bb sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x836d61d0 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x83774130 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x838d52de rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0x83a5ae2e __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x83c9dfd3 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x841da239 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x8420bccd cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0x845753f5 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x845b9d82 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x8498bcfb device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x84a33321 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x84c2bd87 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x84fb2f37 pmf_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x85015c11 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x850aeed5 __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x852e568d of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x852f6ea0 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x853f9958 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x85551c59 sk_unattached_filter_create +EXPORT_SYMBOL_GPL vmlinux 0x856629e7 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x8574ca6c gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x85752e90 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x85a154ff handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x85c10896 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85cf1695 kobj_completion_del_and_wait +EXPORT_SYMBOL_GPL vmlinux 0x85ef14d8 use_mm +EXPORT_SYMBOL_GPL vmlinux 0x860cbe99 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x864233e3 rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0x866b9687 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0x86749df5 stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x8694482c list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0x86f4ad93 pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x870cca29 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x872a5f2c uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x8764de3a tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x877ad796 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x87984b16 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x87bb4e32 of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x87db2323 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x87fd53e3 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x8804af3d usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x881e072e pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0x881f762d __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x88300d4e crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x885373f1 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x88549cd1 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0x8856795c udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0x88757643 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x88766997 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b14c4f class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x897015f4 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x8981264b usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x8986a7a8 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x89b9c465 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89c840e7 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x89d6da03 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x89f708a2 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x8a04b9fe tracepoint_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0x8a1a973b usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x8a214cef ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x8a263e63 yield_to +EXPORT_SYMBOL_GPL vmlinux 0x8a2b14ba wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0x8a562e46 user_read +EXPORT_SYMBOL_GPL vmlinux 0x8a65ddef crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x8a7a6fe8 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x8a806123 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x8a99f380 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x8a9eb0ff rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x8aa03e4d user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8ab5940b ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8acc11ee powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0x8acd1c68 pci_configure_slot +EXPORT_SYMBOL_GPL vmlinux 0x8ae152b5 of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x8afde3b0 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x8b046cdd usb_string +EXPORT_SYMBOL_GPL vmlinux 0x8b09766b of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0x8b417d98 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x8b48dc25 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x8b553c2c crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8b70e8ea __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x8b717aab ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x8b8a5fc1 crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c3944dc skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8c496a0f locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x8c647258 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x8c9bc0bb driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x8cd7f863 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x8cec8ffd dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x8cf093bb da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x8d241fbc dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x8d75b66f sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x8d918fc8 lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x8da17b42 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x8df2b843 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x8dfd5821 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x8e2f1993 ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x8e2fea5f unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x8e9c7933 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x8eaa10c1 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x8eac2a08 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x8edbe923 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x8effebd3 pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x8f050b75 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8f0c10ec extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8f5f15c0 max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x8f6bb509 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f72a7f6 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x8f8e53b9 idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8f902a2c gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0x8f9a7be0 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x8fda1150 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x9016d720 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x902acc80 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x9031cf79 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x903894d5 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0x904b0fce list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0x9059ad26 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x90705b7f syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9077d5ea usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x90872cf4 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x90876e9e stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0x90916f69 pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90c63acf ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x90ef5743 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x91282710 pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x91286982 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91a644b4 usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x91be7195 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x91c70d6f show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x91de7ce9 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x920e0957 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x92452560 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x92609d37 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x926fff59 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0x929fdf77 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x92a0d742 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x92b278d7 bus_sort_breadthfirst +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 0x92f586a2 of_get_named_gen_pool +EXPORT_SYMBOL_GPL vmlinux 0x930ed9b9 of_usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0x931f0353 __scsi_get_command +EXPORT_SYMBOL_GPL vmlinux 0x9329cdc6 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x93421c05 transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x935153f0 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x9354b342 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x93585068 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x935ec20b device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x93a2cb47 reserve_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x93b05b02 tty_prepare_flip_string_flags +EXPORT_SYMBOL_GPL vmlinux 0x93d27a7a rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x94820af5 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x94a68723 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x94abb745 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x94ef79a6 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x9514b784 ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0x9516999b crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x95906069 isa_bridge_pcidev +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95c51273 cgroup_is_descendant +EXPORT_SYMBOL_GPL vmlinux 0x95d48302 __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x95de4042 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x96304e0a crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9655b911 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x966d449c platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x96852cc2 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0x969add9d usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x969db29e get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x969fdb30 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x96c2ac1a set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x971cddf4 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x971f07ea device_move +EXPORT_SYMBOL_GPL vmlinux 0x972329cf blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x9730c462 gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x97345b1d securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x974fb55e clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x97942fe7 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x97a3ec56 ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97e5107f devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x980717f4 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x98141131 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x98199eee serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x9819ad8e input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x982274e8 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0x982cd486 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x9841d1c5 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x984dd0a6 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x98523c6a dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0x98583c8b cgroup_taskset_first +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x98875921 device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0x98f31137 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x9912b57b uninhibit_secondary_onlining +EXPORT_SYMBOL_GPL vmlinux 0x992489f9 rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x9939c9cd pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x99623c05 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0x996ea7fd rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x9a032202 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x9a054add i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a301892 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0x9a34571c filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x9a43bd0f tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x9a49d937 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x9a4cf0df crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a956061 stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0x9a994a09 of_irq_parse_and_map_pci +EXPORT_SYMBOL_GPL vmlinux 0x9aad6540 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9aca444b get_monotonic_boottime +EXPORT_SYMBOL_GPL vmlinux 0x9acc5876 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9af2fc4e crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x9b15bcbb replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x9b268b6f blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x9b2fed4b sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x9be421f2 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9c0cb62a usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x9c0e1629 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x9c0e2b67 crypto_rng_type +EXPORT_SYMBOL_GPL vmlinux 0x9c25168e device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x9c363fea key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x9c5a2f10 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x9c6d7611 sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x9c92ed7b ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x9c95a471 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x9cb25b54 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x9cb33fb3 ping_err +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ce9bbf8 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9d138533 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x9d3191ac cpu_remove_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x9d6ae36e powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x9d6d850f inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x9d7dfce7 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x9d8331c0 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9db40a4d skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9e2589af pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9e305fdc sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x9e5dff90 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9e64b7d9 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x9e666c49 device_attach +EXPORT_SYMBOL_GPL vmlinux 0x9e72c2e4 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x9e7f1a86 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x9eb848cc ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x9ebc4ec4 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ede5e0f udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9eee453a thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0x9f0664bf dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0x9f083aaf mmput +EXPORT_SYMBOL_GPL vmlinux 0x9f3f98e1 of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x9f4fde37 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x9f7a39a0 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9f859933 init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x9f977a6c __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x9f983477 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x9f991507 dma_buf_export_named +EXPORT_SYMBOL_GPL vmlinux 0x9f9a2870 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x9fbb522d __class_create +EXPORT_SYMBOL_GPL vmlinux 0x9fc975e4 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fd29e2d vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x9fe4b3a4 devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9fedb268 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x9ff3a165 verify_signature +EXPORT_SYMBOL_GPL vmlinux 0xa00f0a23 napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0xa01b3a71 reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xa0c8abe6 sysfs_schedule_callback +EXPORT_SYMBOL_GPL vmlinux 0xa0dade9f ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa124cc2d ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0xa12bf470 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xa12d3dd3 extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xa12d929d desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0xa148504a cgroup_unload_subsys +EXPORT_SYMBOL_GPL vmlinux 0xa1856aff ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa1bd7822 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xa1be7ba9 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0xa1c3058b agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xa1fc8f85 i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0xa24c5e8d ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0xa2530260 sdhci_pci_o2_probe +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa26def9a inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xa2aacaf1 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0xa2d17317 led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa357d56e ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xa3775860 bsg_request_fn +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 0xa3ccdd14 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa3e81a58 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0xa42b506c rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0xa43fa4b9 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0xa47af487 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa4909693 ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xa49f0e4b sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0xa4b71ed9 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xa4ccffdd platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0xa4e491a5 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0xa4ea04ee of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0xa581f447 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0xa58d0edf thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0xa5b00659 ppc_proc_freq +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5efe460 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xa6105191 tpm_open +EXPORT_SYMBOL_GPL vmlinux 0xa61b1477 tracepoint_iter_start +EXPORT_SYMBOL_GPL vmlinux 0xa61c3f9c da903x_update +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa644dea4 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0xa6478983 hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xa6481364 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0xa6531647 usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xa685ec33 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0xa687b106 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xa6966127 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0xa6a0a273 max77693_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xa6a891e6 tpm_write +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6b4898c sdhci_pci_o2_probe_slot +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa713dc83 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0xa724257f init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0xa72b2838 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa75811d0 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0xa759f168 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xa76517a0 pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xa79388e1 rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0xa7c8fbf1 spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0xa7e051cf pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0xa7f92105 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0xa80723c6 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xa837ceda __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0xa84ce104 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa85b1953 regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0xa86b6b18 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0xa8891064 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0xa8c17a76 of_reset_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xa9079b6c spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0xa926c726 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0xa9360d0e pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa959060d cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xa9790478 kobj_completion_release +EXPORT_SYMBOL_GPL vmlinux 0xa980af16 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xa9a6089d usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0xa9a90b19 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0xa9dea279 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9e33c74 __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xa9e61b47 aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xaa0f5139 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0xaa2a72bf __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0xaa397043 lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0xaa4d0ba2 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0xaa4d5dc3 wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xaa8c3203 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0xaa9b44df da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0xaaa32f32 ata_sas_port_async_resume +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaace1ec7 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xab2e95d1 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab7d0998 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0xab85f147 pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0xab87b8b4 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0xab9b0f90 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xabca9369 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0xac3025b9 rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0xac392820 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xac434319 sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0xac436e44 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xac97dbe9 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xacb96fe9 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0xacbe10e3 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xace8c93d kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xacf107c1 pmac_i2c_match_adapter +EXPORT_SYMBOL_GPL vmlinux 0xad0ed786 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xad46e556 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0xad52e172 devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xad7a954d regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xadae00c5 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae0f9033 cpu_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0xae2588b5 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xae2bf109 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0xae2e1736 xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0xae490f3b led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae7f4781 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0xae8af93b devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xae9822f5 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0xaecf8c9f pmf_do_irq +EXPORT_SYMBOL_GPL vmlinux 0xaecfd5f1 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xaf2319a5 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0xaf33b9e3 cgroup_load_subsys +EXPORT_SYMBOL_GPL vmlinux 0xaf451a0e i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0xaf934d85 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0xaf97df30 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0xaf99d886 tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0xafa2455a sec_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xafa2ec41 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0xafa3a59b blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xafb31351 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0xafbd7a76 sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0xafced2e3 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xb004b565 regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0xb034c0b4 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xb03fe010 cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0xb04d09e7 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0xb05b701e pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xb0913148 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0xb09e9f75 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0d79cb9 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0xb0e9bd09 pmac_i2c_get_adapter +EXPORT_SYMBOL_GPL vmlinux 0xb10d55bc cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xb12c9513 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb14e113b regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb18fa5fe part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1bb5686 wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1c0c1c2 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xb1c92c30 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb1dc880c __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1ee5516 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xb210346d fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb2256567 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xb231c010 extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0xb245113d blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xb25acf17 rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0xb2719feb sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0xb27a2434 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0xb293c758 list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xb29d27b3 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0xb2c5621c pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0xb2cba55d device_reset +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb314618a thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb341c80a __clocksource_updatefreq_scale +EXPORT_SYMBOL_GPL vmlinux 0xb3442481 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0xb3450b8f sdhci_pci_o2_resume +EXPORT_SYMBOL_GPL vmlinux 0xb36a256c sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0xb3e12993 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xb3e4d2db invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0xb3efe5c4 regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb411286f rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0xb41c0d9c tpm_show_durations +EXPORT_SYMBOL_GPL vmlinux 0xb429db45 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0xb432aa0a sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xb445b93a perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0xb464f573 hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0xb48471a1 debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0xb4a71e10 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0xb4a983eb aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4d4aa98 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0xb4d53d7d __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xb4de5c83 cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb521f453 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0xb5240e83 rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb564565b irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xb568cfdd power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0xb5748f8d dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0xb5790f4a devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb57e3f96 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xb5887a5b device_initialize +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb5955212 tpm_release +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 0xb5cb8145 hrtimer_get_res +EXPORT_SYMBOL_GPL vmlinux 0xb5d6179a inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0xb5e1f027 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0xb5e896fb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb5f8c795 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xb6082f61 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0xb60b5707 of_i8042_aux_irq +EXPORT_SYMBOL_GPL vmlinux 0xb60e35ec inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb62b1a9a ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0xb6346772 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0xb63467ea tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0xb659bf4f register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xb67b2219 cm_suspend_again +EXPORT_SYMBOL_GPL vmlinux 0xb67c64fd __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6c635af wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xb6ffdb4f device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0xb76f4e38 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0xb777e0b5 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0xb7879dd9 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0xb79fb656 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xb7c1f490 user_instantiate +EXPORT_SYMBOL_GPL vmlinux 0xb7dd8555 alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0xb809b9ee md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xb80b9487 scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0xb837ec17 swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0xb84dec1c ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb8998b77 rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xb89f40b5 swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0xb8a3a753 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0xb8ab0f5f wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xb8c2188e scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xb8c366d1 cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0xb8f8ef86 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0xb915e3b7 tpm_show_caps +EXPORT_SYMBOL_GPL vmlinux 0xb9176155 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0xb9530699 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xb967a11d regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xb993bcd6 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9cab139 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9da2997 snmp_fold_field64 +EXPORT_SYMBOL_GPL vmlinux 0xb9f411e9 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0xb9f558b6 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0xba158769 rtas_cancel_event_scan +EXPORT_SYMBOL_GPL vmlinux 0xba2221d4 flush_fp_to_thread +EXPORT_SYMBOL_GPL vmlinux 0xba4503c3 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xba4ccad1 wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0xba7f0702 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0xbaec067b dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0xbaf5f63a fsnotify +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb1986ee pmf_register_irq_client +EXPORT_SYMBOL_GPL vmlinux 0xbb1ad601 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0xbb22a5c4 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0xbb277e64 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0xbb55dd16 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0xbb74b736 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xbb885753 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0xbb9a79f2 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0xbbb6a1ec simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0xbbe0d3bf devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xbbfb5646 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0xbc15d2ea ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0xbc455093 pci_msi_off +EXPORT_SYMBOL_GPL vmlinux 0xbc4e18f2 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0xbc598d97 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0xbc7ef889 da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0xbc845839 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xbc8fea24 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcc4c147 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0xbcd0f8d9 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xbcf8b2d4 da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd5e4c41 pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0xbd81295e regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbdf21ba8 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xbe044583 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe1af20b blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0xbe2712bc percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbe3d0c73 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbe7569a1 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0xbe7b62a2 proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbecb99d4 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0xbed784a9 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0xbef685e0 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbefc0762 regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf1cc04b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xbf2a1d5e user_update +EXPORT_SYMBOL_GPL vmlinux 0xbf355e7f i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0xbf7d58ed seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0xbf907c17 usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xbf9814ee pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0xbfb49836 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xbfe428c6 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0xbff1fea8 mdio_mux_init +EXPORT_SYMBOL_GPL vmlinux 0xc00131cf visitor64 +EXPORT_SYMBOL_GPL vmlinux 0xc0266635 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0xc02afa3e tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xc02bec3c usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc0319f60 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc061367e mpic_msgr_get +EXPORT_SYMBOL_GPL vmlinux 0xc065a455 cpu_core_index_of_thread +EXPORT_SYMBOL_GPL vmlinux 0xc069e58d dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0xc07f80d6 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc08f2b68 devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xc0b0aacf rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0bf6ead timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xc0d01bc0 percpu_ref_cancel_init +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0e75cec visitor128 +EXPORT_SYMBOL_GPL vmlinux 0xc0f1a90c max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xc10cd2d6 sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0xc11b45c6 gpiod_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xc11bd00f tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc1210380 cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc1369514 pmac_low_i2c_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc164e348 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc165f7f9 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0xc16acdbf regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xc16f5421 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc18578ed process_srcu +EXPORT_SYMBOL_GPL vmlinux 0xc1ca914b call_srcu +EXPORT_SYMBOL_GPL vmlinux 0xc1d167d5 blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc28c15e3 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0xc295e9a2 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xc2c25342 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc2cb5811 rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0xc2d9a04d exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0xc2ed7611 rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xc2fa18d2 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc307bde5 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xc30b3a36 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0xc3174084 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0xc32b41ef blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0xc33e0502 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc34efe27 snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0xc35069b2 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc39c5124 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0xc3d5fcde task_current_syscall +EXPORT_SYMBOL_GPL vmlinux 0xc407a1d4 gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0xc418190f sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc42ba281 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc45d0e33 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0xc46622f5 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0xc46d877e schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc47510d9 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc49cbff9 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0xc4a9559d thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc4cdd91a pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xc4da43dd tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0xc4f9bdea kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xc505a55f of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xc50c4276 usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xc55c91bb rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc5a39cec pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xc5d0af6b sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xc5d37180 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0xc5e03ad3 pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0xc5f8c137 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xc606cd3c boot_cpuid +EXPORT_SYMBOL_GPL vmlinux 0xc60f75ec __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xc611acce debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc620d189 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc628744f tpm_show_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xc63a1109 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xc6498065 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc66c1ccb debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0xc67c7f5d ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xc68aa090 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0xc68aa252 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc690866c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xc69389d8 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0xc69892eb raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc69bb0c7 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0xc69d3ba0 blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0xc6ce24c7 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0xc6e533e7 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0xc6fe0481 nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc75c980c cgroup_add_cftypes +EXPORT_SYMBOL_GPL vmlinux 0xc75dc45b debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0xc760447d disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0xc77662d5 cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0xc77b7976 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xc793f959 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7c480b6 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7c7960f watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0xc7d96d68 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xc7da17be timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc7fea49d ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0xc81bf161 default_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0xc821c78f ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0xc823b7df ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0xc82ee5cc arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc82f8642 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0xc835a766 cgroup_taskset_cur_css +EXPORT_SYMBOL_GPL vmlinux 0xc851b3c0 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0xc85ce0a7 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0xc88f56ab ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0xc8a14e7e usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8c9633f ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0xc8defdb5 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0xc8e84929 cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc8ec3b4f ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0xc8f42e73 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0xc90187ff usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc90d1a79 pcibios_finish_adding_to_bus +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc927611a rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc960bcea sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0xc9698045 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xc9795f03 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0xc97d1140 cpufreq_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0xc97e493f usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0xc97e9bff register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0xc992d30f find_vpid +EXPORT_SYMBOL_GPL vmlinux 0xc992d33c sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0xc9cfa97f of_pci_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0xc9e06295 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca85d8cf tracepoint_probe_update_all +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcad4ad08 pmf_do_functions +EXPORT_SYMBOL_GPL vmlinux 0xcafa3bf8 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb5408e9 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0xcb96ad6b rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0xcbb664bc platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0xcbc7f239 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0xcbcb510b rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcbfa0809 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0xcc1864f4 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0xcc1f1c3d inet_twdr_hangman +EXPORT_SYMBOL_GPL vmlinux 0xcc354752 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0xcc527f70 of_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0xcc71e427 blkdev_aio_write +EXPORT_SYMBOL_GPL vmlinux 0xcc81d891 regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcc8c4990 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xcca876dd ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xcd3c0957 blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xcd4ed511 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd977ecf ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0xcda03f82 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xcda9ae64 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0xcdb01877 ktime_add_ns +EXPORT_SYMBOL_GPL vmlinux 0xcdc0201a pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcde9e898 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0xce0a894d fat_scan +EXPORT_SYMBOL_GPL vmlinux 0xce0b9b59 max77693_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xce139232 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0xce158cdf of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0xce16cb7d devres_find +EXPORT_SYMBOL_GPL vmlinux 0xce1a2f4e xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0xce27e36c cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0xce280393 sec_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xce46e140 ktime_get_ts +EXPORT_SYMBOL_GPL vmlinux 0xce52eb34 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce6e33a9 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0xceaa7960 fuse_conn_kill +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcee2acf9 __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0xcf108b9b vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0xcf1a3d24 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xcf1ba5e3 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0xcf2453d5 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf64a3be shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xcf725718 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0xcfbc39f7 regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfd9a317 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0xcfe2b044 inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xcff7ddc5 md_run +EXPORT_SYMBOL_GPL vmlinux 0xd00b4534 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0xd03b07ae reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd04b64d6 da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0xd04f9e2b fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd06c241d flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xd074622c transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0xd0810d9f of_pci_find_msi_chip_by_node +EXPORT_SYMBOL_GPL vmlinux 0xd0aa8582 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0xd0b2a0f4 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xd0b38262 fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0e7531c pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0xd11bbace irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0xd12991bd wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0xd14bc4d9 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd1822f0b cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd192311d inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xd19ac235 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0xd19c3349 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xd1b2db37 tracepoint_probe_register_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xd1d5c364 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd25efd41 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0xd265fc6a list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0xd26ffeaf of_scan_bus +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd2971935 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xd2aaeb4e kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0xd2c45ea4 of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0xd2e20b5a get_device +EXPORT_SYMBOL_GPL vmlinux 0xd2fd392b rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0xd30bfb5d get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xd30e00d3 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0xd32fe193 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xd3454a75 pmf_find_function +EXPORT_SYMBOL_GPL vmlinux 0xd3524689 da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xd36ba06f adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd37aab67 register_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0xd3a3a904 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xd3a4002c regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0xd3b04de0 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xd3b20bf0 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xd3f8005b blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd408c964 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0xd4181d4f bus_register +EXPORT_SYMBOL_GPL vmlinux 0xd420779c regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xd43d154f ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0xd444d939 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0xd44681af swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd49bf3da regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4c219fa sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0xd4ccc772 rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xd4dd3d73 pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xd4f83089 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xd513ddbf timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xd56f9cb3 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0xd582227a leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xd5a3c52a pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xd5b8a13f ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5d0c8ec irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0xd6083bdf input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd644d3a7 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd6c2e04b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0xd6ce9eec device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0xd6dd0922 dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd6e347fd digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd753b3bd sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0xd75a72bd dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd77b2fa4 wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd797acf0 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7d881a1 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0xd7fa1755 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0xd81db2cf device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd833d747 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd8385d39 dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0xd849db25 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0xd85e09ef dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87d684e dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd896b0ad hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd8b7c547 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd8bde4fa bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0xd8bfbf67 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0xd8e8393c regmap_read +EXPORT_SYMBOL_GPL vmlinux 0xd9309bfb thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd944d8f9 ktime_get_boottime +EXPORT_SYMBOL_GPL vmlinux 0xd949e4d9 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0xd965b936 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xd9733df0 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0xd97ca1ab usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xd98b970d regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0xd9c382b2 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xd9ef889f __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0xd9fde148 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0xd9ff7194 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0xda0a4d22 mpic_msgr_enable +EXPORT_SYMBOL_GPL vmlinux 0xda1b061c pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0xda408fea rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0xda44cb37 setup_charger_manager +EXPORT_SYMBOL_GPL vmlinux 0xda90b2a0 regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0xda973ff4 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xda9e00ec ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xdabca386 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0xdac11bae of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xdacbbfc6 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xdae5bba3 crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb04cacc tracepoint_probe_unregister_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xdb1db65f free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xdb41c506 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xdb5715bf usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdba0764b inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xdba4ad93 static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0xdba80fc1 of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0xdbe356e3 public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0xdbe4b3cd devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xdbe7b169 crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdbf9c670 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0xdc0ad49d crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0xdc1ca9ce sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0xdc1e15f1 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0xdc3e011c __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0xdc461430 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xdc4aba8f init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0xdc6bba8c rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0xdc7e025e inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc87acfe led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0xdc8af8d9 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xdc8f61b8 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdcbf3e17 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0xdcfdbd24 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0xdd14e9e4 cpu_add_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0xdd1ebf6a sysfs_put +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd3e3d65 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0xdd729424 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xdd86e8ba tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xdd901366 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0xdd92baf8 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0xdd95a6c1 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0xdda283fd platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0xddaf9c41 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xddb21984 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0xddc3c843 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xddec0625 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xddfdb0c6 srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0xde142286 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xde2d825e crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0xde3d54f5 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0xde4e42cd ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0xde53cceb save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0xde81b336 irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0xdea66124 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xdea8559a uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf41708e blk_queue_bio +EXPORT_SYMBOL_GPL vmlinux 0xdf4750f4 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0xdf7b5ae8 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xdf8383a9 palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0xdfe637b1 cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0xdfe7ecc7 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xdfe82d77 __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xdfecedc0 spi_sync_locked +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 0xe064ad18 tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xe06582d2 task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0xe07ca631 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe0ad482a md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0xe0d4f5ad posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0xe12a209e dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xe1521b09 sdhci_pci_o2_fujin2_pci_init +EXPORT_SYMBOL_GPL vmlinux 0xe15f27e2 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xe16591ab stop_machine +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe185db58 ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xe189aa42 cpu_remove_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0xe1a90ce1 class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1c04629 ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0xe1c392a0 relay_open +EXPORT_SYMBOL_GPL vmlinux 0xe1c932ad pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0xe1dd129c __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0xe2041aeb da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xe20971c4 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0xe22ac7b7 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0xe23d01b1 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0xe24e4e16 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0xe2821aac bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe29402be fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0xe29d88b1 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0xe2cceeeb regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0xe2f12178 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe30fac88 ktime_get_monotonic_offset +EXPORT_SYMBOL_GPL vmlinux 0xe316b343 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xe36552f9 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe38d1016 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xe3a09ac6 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0xe3afa48c crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0xe3c68b3d __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe3ea9801 tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xe3fbe099 tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0xe41a3f98 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xe42f8771 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe44b9473 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0xe4971fee inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0xe4a5871e usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xe4c031f8 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xe4c4b28f gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xe4c74ab0 device_create +EXPORT_SYMBOL_GPL vmlinux 0xe4e2bf86 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xe4e6e36c ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xe508d10b serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0xe5109238 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xe5122347 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xe5420bf1 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xe54ebbb1 pmac_backlight +EXPORT_SYMBOL_GPL vmlinux 0xe5524eab of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xe57b38f8 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5ace060 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xe5b8969f debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0xe5c06d66 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe5c1b56c regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0xe5f0d2f1 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0xe619a45f eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe65cce94 nl_table +EXPORT_SYMBOL_GPL vmlinux 0xe671f33c pmac_i2c_get_channel +EXPORT_SYMBOL_GPL vmlinux 0xe6729f12 lock_media_bay +EXPORT_SYMBOL_GPL vmlinux 0xe6a420ad spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0xe6b5771a __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xe6bed72a blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6d9256c sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0xe6dbae59 adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe7145917 usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0xe72d9362 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe7348ff8 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe7781516 crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xe7cd15bd ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0xe7d9363f devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe7ec2ce3 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0xe7ef01b3 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe7f8e94f tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe82b4b07 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0xe844562f tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xe85701d9 thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0xe85c55e7 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe85d585b pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe87fbc02 pstore_register +EXPORT_SYMBOL_GPL vmlinux 0xe893ce65 page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0xe8c8a311 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0xe8f95776 balloon_mapping_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe929af59 of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe93f6759 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0xe9759c8f wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xe98b408f clockevents_unbind +EXPORT_SYMBOL_GPL vmlinux 0xe9907c9c rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0xe9ca0e6d extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0xe9e5d99a gpio_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xea0154b8 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea16a86d usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0xea2fe5c2 crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea784b6f ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0xea790235 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0xeab253de extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xeac4cd4f rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xeb137fa6 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0xeb1c3628 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xeb30b2fe cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0xeb454239 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0xeb8a671c relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0xeb8ae736 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xeb98215e cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xeb9abbee ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xeb9c0221 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0xeba202d9 cpufreq_notify_transition +EXPORT_SYMBOL_GPL vmlinux 0xeba51c3b xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0xebc57007 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0xebc5cef3 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0xebd090bc perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xebf43071 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec318d53 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0xec64eefa udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xec7af7b0 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xec8d5c42 regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0xecd1eacb sync_filesystem +EXPORT_SYMBOL_GPL vmlinux 0xed09b9bc ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xed1acd83 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0xed225527 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xed51292f devres_remove +EXPORT_SYMBOL_GPL vmlinux 0xed67115a wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0xedc2994d ktime_get_real +EXPORT_SYMBOL_GPL vmlinux 0xedd49930 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0xedf567cf usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0xee16b804 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0xee2390a7 pmac_i2c_adapter_to_bus +EXPORT_SYMBOL_GPL vmlinux 0xee3adb45 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee759320 smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xee81141d ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0xee939ddb rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0xeec8cb25 gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0xeef12047 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xef1624a0 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0xef381371 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0xef38657c ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0xef409b74 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0xef422dca alarm_init +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef7d02c4 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xefa390c9 pmac_backlight_mutex +EXPORT_SYMBOL_GPL vmlinux 0xefad5373 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0xefea5911 driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0xf02acac9 rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0xf0455e41 ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0xf04d3878 cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0xf0704c2d tpm_remove_hardware +EXPORT_SYMBOL_GPL vmlinux 0xf07257b1 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0xf0ba9fd4 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf0d6f9d7 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0xf0f74623 dev_hard_start_xmit +EXPORT_SYMBOL_GPL vmlinux 0xf102e1f2 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0xf14e3772 tpm_show_pcrs +EXPORT_SYMBOL_GPL vmlinux 0xf158f170 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf18c9923 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0xf191a41c ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0xf1a62b6f of_i8042_kbd_irq +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1d0e51c crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0xf1ea3a2e pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xf1ebc272 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0xf1f5c896 ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xf1fa70e1 __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf236eadd usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0xf26b9e26 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0xf2758339 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf2d89b89 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0xf2e4892e bio_trim +EXPORT_SYMBOL_GPL vmlinux 0xf2f077cc pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf300ea89 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0xf30ddbab rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xf30fda27 lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf31c43a4 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0xf32208d3 tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0xf326a5c6 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3ca3777 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0xf3f9eae5 rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0xf41529be usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0xf443a37b inet_csk_reqsk_queue_prune +EXPORT_SYMBOL_GPL vmlinux 0xf4451056 tpm_show_enabled +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf4954775 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4b98a23 devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf4fdf6a5 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf54e8cc4 cred_to_ucred +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf55438ec regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0xf566014b __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5b78f44 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0xf5bcf1b2 __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0xf5d648d1 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xf5ee6d02 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0xf5fb0cd4 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0xf5fc59e2 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xf5fef4e3 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf603a1ba dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0xf616790a sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0xf64a27ae usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0xf659da95 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xf69a4179 driver_register +EXPORT_SYMBOL_GPL vmlinux 0xf69fde6e subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xf6bb5813 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0xf6c3d050 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0xf6cdf1b9 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0xf6db6bde devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xf6dd9098 call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf71928f0 devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0xf71ea8ad usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0xf72858e3 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0xf735a646 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0xf75600d6 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0xf7574590 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0xf7c49324 of_pci_parse_bus_range +EXPORT_SYMBOL_GPL vmlinux 0xf7df73bb nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0xf7ffe9b3 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf8008f7f __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0xf80efb5e ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xf816807e regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0xf816c866 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0xf823e491 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0xf82d2322 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0xf82f16b3 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf8409386 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0xf846506f irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf875432d bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf8c315d9 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xf8d114c4 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0xf8d55ed1 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8f5d374 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0xf8fc3e01 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf9154bff inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0xf9262ce5 thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf92ef26b tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xf930745b usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf935a32c of_property_read_string_helper +EXPORT_SYMBOL_GPL vmlinux 0xf93c3d67 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0xf94f4459 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0xf953d90f usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0xf97a6caf usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9f786ba pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0xfa012fe7 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa40ffbd sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0xfa5d008c hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0xfa70ace0 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xfa7c23ba irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xfab60503 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xfad36ff6 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0xfae0a756 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0xfb233722 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0xfb288c3c flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xfb2b0d7f __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb525dfc pmac_i2c_get_type +EXPORT_SYMBOL_GPL vmlinux 0xfb52b77d __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0xfb5899a7 netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0xfb5c26ee kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfba70693 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfba761b9 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0xfbb457a0 pmf_call_one +EXPORT_SYMBOL_GPL vmlinux 0xfbbb2b26 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xfbbedefd of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0xfbddeb58 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xfbf86551 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0xfbfbfe7e devres_release +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc0e85e2 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0xfc11cbb6 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0xfc33a807 regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0xfc39feb3 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xfc3c97a4 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xfc910316 devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xfc98388b pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0xfcb97acc pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfcefa85e gpio_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xfcffb4e1 pmac_i2c_get_flags +EXPORT_SYMBOL_GPL vmlinux 0xfd43dd54 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0xfd46fe49 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0xfd5573d9 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0xfd771541 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0xfd8cb70a sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0xfd94f69c pwm_free +EXPORT_SYMBOL_GPL vmlinux 0xfd9680eb regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0xfdf4b8e5 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xfdf5a603 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0xfe2c2e6d ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0xfe4ad15a skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0xfe757476 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0xfe8d0b3f crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0xfe932fb5 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfebfcab2 __rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0xfec73256 smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfeda4e1c look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0xfeec7d52 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0xfef4137d rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff1e9d10 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xff43185e spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xffbb4789 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xffd0cb1d locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0xffdb9a7d crypto_nivaead_type --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/powerpc/powerpc-smp.compiler +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/powerpc/powerpc-smp.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4 --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/powerpc/powerpc-smp.modules +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/powerpc/powerpc-smp.modules @@ -0,0 +1,3662 @@ +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250_dw +8250_pci +8255 +8255_pci +8390 +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm860x-ts +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +9p +9pnet +9pnet_rdma +9pnet_virtio +BusLogic +DAC960 +a100u2w +a3d +a8293 +aacraid +aat2870-regulator +aat2870_bl +ab3100 +ab3100-otp +ac97_bus +acard-ahci +acecad +acenic +act200l-sir +act_csum +act_gact +act_ipt +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +actisys-sir +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 +ad5930 +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 +ad9850 +ad9852 +ad9910 +ad9951 +ad_sigma_delta +adcxx +addi_apci_035 +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-keys +adp5520_bl +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +ads1015 +ads7828 +ads7846 +ads7871 +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adv7170 +adv7175 +adv7180 +adv_pci1710 +adv_pci1723 +adv_pci1724 +adv_pci_dio +advansys +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +af-rxrpc +af9013 +af9033 +af_802154 +af_alg +af_key +af_packet_diag +affs +ah4 +ah6 +aha152x_cs +ahci +ahci_platform +aic79xx +aic7xxx +aic94xx +aiptek +aircable +airo +airo_cs +airport +ak8975 +algif_hash +algif_skcipher +ali-ircc +alim7101_wdt +alphatrack +altera-ci +altera-stapl +altera_jtaguart +altera_ps2 +altera_uart +alx +ambassador +amc6821 +amd5536udc +amd8111e +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pci224 +amplc_pci230 +amplc_pci263 +ams +ams369fg06 +analog +anatop-regulator +ans-lcd +ansi_cprng +anubis +aoe +apbps2 +apds9300 +apds9802als +apds990x +apm-emulation +apm-power +apm_emu +apm_power +appledisplay +appletalk +appletouch +applicom +ar5523 +ar7part +arc-rawmode +arc-rimi +arc4 +arc_emac +arc_ps2 +arc_uart +arcmsr +arcnet +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arp_tables +arpt_mangle +arptable_filter +as3711-regulator +as3711_bl +as3722-regulator +as5011 +asc7621 +asix +ast +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at86rf230 +at91_ether +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-ssc +atmel_cs +atmel_mxt_ts +atmel_pci +atmtcp +atp870u +atxp1 +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo-pixcir-ts +auo_k1900fb +auo_k1901fb +auo_k190x +auth_rpcgss +authenc +authencesn +autofs4 +avm_cs +avma1_cs +avmfritz +ax25 +ax88179_178a +axnet_cs +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 +bcm5974 +bcm_wimax +bcma +bcma-hcd +bd6107 +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluecard_cs +bluetooth +bma150 +bma180 +bmac +bmp085 +bmp085-i2c +bmp085-spi +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bonding +bpa10x +bpck +bpck6 +bpctl_mod +bpqether +bq2415x_charger +bq24190_charger +bq24735-charger +bq27x00_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +broadsheetfb +bsd_comp +bt3c_cs +bt819 +bt856 +bt866 +bt878 +btcoexist +btcx-risc +btmrvl +btmrvl_sdio +btmtk_usb +btrfs +btsdio +bttv +btuart_cs +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +bw-qcam +bypass +c-qcam +c4 +c67x00 +c_can +c_can_pci +c_can_platform +cachefiles +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 +cc770 +cc770_isa +cc770_platform +cciss +ccm +cdc-acm +cdc-phonet +cdc-wdm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc_subset +cedusb +ceph +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chipreg +chnl_net +ci_hdrc +ci_hdrc_imx +ci_hdrc_msm +ci_hdrc_pci +cifs +cirrus +cirrusfb +clearpad_tm1217 +clip +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm36651 +cm4000_cs +cm4040_cs +cma3000_d0x +cma3000_d0x_i2c +cmac +cmdlinepart +cmtp +cnic +cobra +coda +com20020 +com20020-pci +com20020_cs +com90io +com90xx +comedi +comedi_bond +comedi_fc +comedi_parport +comedi_test +comm +configfs +contec_pci_dio +cordic +core +cp210x +cpia2 +cpu-notifier-error-inject +cramfs +crc-ccitt +crc-itu-t +crc32 +crc7 +crc8 +cros_ec +cros_ec_i2c +cros_ec_keyb +cros_ec_spi +cryptd +crypto_null +crypto_user +cryptoloop +crystalhd +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 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx8800 +cx8802 +cx88xx +cxacru +cxd2099 +cxd2820r +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cxt1e1 +cy8ctmg110_ts +cyapa +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-hwmon +da9052-regulator +da9052_bl +da9052_onkey +da9052_tsi +da9052_wdt +da9055-hwmon +da9055-regulator +da9055_onkey +da9055_wdt +da9063-regulator +da9210-regulator +daqboard2000 +das08 +das08_cs +das08_pci +db9 +dc395x +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +ddbridge +de2104x +de4x5 +decnet +deflate +defxx +denali +denali_pci +des_generic +dgap +dgnc +dgrp +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +diskonchip +diva_idi +diva_mnt +divacapi +divadidd +divas +dl2k +dlci +dlm +dm-bio-prison +dm-bufio +dm-cache +dm-cache-cleaner +dm-cache-mq +dm-crypt +dm-delay +dm-flakey +dm-log +dm-log-userspace +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 +dm1105 +dm9601 +dmfe +dmx3191d +dn_rtmsg +dnet +docg3 +docg4 +donauboe +dpt_i2o +drbd +drm +drm_kms_helper +drm_usb +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsa_core +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +dt3000 +dt3155v4l +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-dw2102 +dvb-usb-ec168 +dvb-usb-friio +dvb-usb-gl861 +dvb-usb-gp8psk +dvb-usb-it913x +dvb-usb-lmedm04 +dvb-usb-m920x +dvb-usb-mxl111sf +dvb-usb-nova-t-usb2 +dvb-usb-opera +dvb-usb-pctv452e +dvb-usb-rtl28xxu +dvb-usb-technisat-usb2 +dvb-usb-ttusb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +dvb_usb_v2 +dw_dmac +dw_dmac_core +dw_dmac_pci +dwc2 +dwc2_pci +dwc2_platform +dwc3 +dwc3-pci +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e4000 +earth-pt1 +eata +ebt_802_3 +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ec100 +echo +edac_core +edt-ft5x06 +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efs +egalax_ts +ehset +elo +elsa_cs +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em_canid +em_cmp +em_ipset +em_meta +em_nbyte +em_text +em_u32 +emc1403 +emc2103 +emc6w201 +emi26 +emi62 +empeg +ems_pci +ems_pcmcia +ems_usb +emu10k1-gp +enc28j60 +enclosure +eni +enic +epat +epia +epic100 +eql +esas2r +esd_usb2 +esi-sir +esp4 +esp6 +et131x +ethoc +evbug +exofs +extcon-adc-jack +extcon-arizona +extcon-gpio +extcon-max77693 +extcon-max8997 +extcon-palmas +ezusb +f2fs +f75375s +f81232 +fakelb +fan53555 +farsync +faulty +fb_sys_fops +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 +fld +flexcan +floppy +fm801-gp +fm_drv +fmc +fmc-chardev +fmc-fakedev +fmc-trivial +fmc-write-eeprom +fmvj18x_cs +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +freevxfs +friq +frpw +fsa9480 +fscache +fsl_elbc_nand +ft1000 +ft1000_pcmcia +ftdi-elan +ftdi_sio +ftl +fujitsu_ts +fusb300_udc +fusbh200-hcd +g450_pll +g760a +g762 +g_acm_ms +g_audio +g_cdc +g_dbgp +g_ether +g_ffs +g_hid +g_mass_storage +g_midi +g_ncm +g_nokia +g_printer +g_serial +g_webcam +g_zero +gadgetfs +gamecon +gameport +garmin_gps +garp +gcm +gdmtty +gdmulte +gdmwm +gdth +gen_probe +generic +generic-adc-battery +generic_bl +gf128mul +gf2k +gfs2 +ghash-generic +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +go7007 +go7007-loader +go7007-usb +goku_udc +goldfishfb +gp2ap002a00f +gp2ap020a00f +gpio +gpio-74x164 +gpio-addr-flash +gpio-adnp +gpio-adp5520 +gpio-adp5588 +gpio-amd8111 +gpio-arizona +gpio-charger +gpio-da9052 +gpio-da9055 +gpio-dwapb +gpio-fan +gpio-generic +gpio-grgpio +gpio-ir-recv +gpio-janz-ttl +gpio-kempld +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio-pca953x +gpio-pcf857x +gpio-rdc321x +gpio-regulator +gpio-tps65912 +gpio-ts5500 +gpio-twl4030 +gpio-twl6040 +gpio-ucb1400 +gpio-viperboard +gpio-vx855 +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +gpio_backlight +gpio_keys +gpio_keys_polled +gpio_mouse +gpio_tilt_polled +grcan +gre +grip +grip_mp +gsc_hpdi +gspca_benq +gspca_conex +gspca_cpia1 +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_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gtco +guillemot +gunze +gxt4500 +hamachi +hampshire +hanwang +hci +hci_uart +hci_vhci +hdlc +hdlc_cisco +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdlcdrv +hdpvr +he +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfc_usb +hfcmulti +hfcpci +hfcsusb +hfs +hfsplus +hid +hid-a4tech +hid-apple +hid-appleir +hid-aureal +hid-axff +hid-belkin +hid-cherry +hid-chicony +hid-cypress +hid-dr +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-generic +hid-gyration +hid-holtek-kbd +hid-holtek-mouse +hid-holtekff +hid-huion +hid-icade +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-lenovo-tpkbd +hid-logitech +hid-logitech-dj +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hid-petalynx +hid-picolcd +hid-pl +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-gyro-3d +hid-sensor-hub +hid-sensor-iio-common +hid-sensor-magn-3d +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-wacom +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hidp +hifn_795x +hih6130 +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hmc5843 +hmc6352 +hopper +horizon +hostap +hostap_cs +hostap_pci +hostap_plx +hp100 +hpfs +hpilo +hpsa +hptiop +hsi +hsi_char +hso +hsr +htc-pasic3 +htu21 +huawei_cdc_ncm +hwa-hc +hwa-rc +hwmon-vid +hx8357 +hysdn +i1480-dfu-usb +i1480-est +i2400m +i2400m-usb +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd8111 +i2c-arb-gpio-challenge +i2c-cbus-gpio +i2c-designware-core +i2c-designware-pci +i2c-dev +i2c-diolan-u2c +i2c-eg20t +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-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 +i2o_block +i2o_bus +i2o_config +i2o_core +i2o_proc +i2o_scsi +i40e +i40evf +i5k_amb +i6300esb +i740fb +i82092 +ib_addr +ib_cm +ib_core +ib_ipoib +ib_iser +ib_isert +ib_mad +ib_mthca +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +ibmaem +ibmpex +icp_multi +ics932s401 +idmouse +idt77252 +ieee802154 +ifb +iforce +igb +igbvf +iguanair +iio-trig-interrupt +iio-trig-periodic-rtc +iio-trig-sysfs +iio_dummy +iio_hwmon +ili210x +ili922x +ili9320 +imm +imon +ims-pcu +imx074 +imx_thermal +ina209 +ina2xx +industrialio +industrialio-triggered-buffer +inet_diag +inexio +inftl +initio +input-polldev +int51x1 +intel_vr_nor +interact +interval_tree_test +inv-mpu6050 +io_edgeport +io_ti +ioc4 +iowarrior +ip6_gre +ip6_tables +ip6_tunnel +ip6_vti +ip6t_MASQUERADE +ip6t_NPT +ip6t_REJECT +ip6t_SYNPROXY +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_mh +ip6t_rpfilter +ip6t_rt +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6table_security +ip_gre +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netnet +ip_set_hash_netport +ip_set_hash_netportnet +ip_set_list_set +ip_tables +ip_tunnel +ip_vs +ip_vs_dh +ip_vs_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 +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ipg +iphase +ipheth +ipip +ipmi_devintf +ipmi_poweroff +ipmi_si +ipmi_watchdog +ipoctal +ipr +ips +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_SYNPROXY +ipt_ULOG +ipt_ah +ipt_rpfilter +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +iptable_security +ipw +ipw2100 +ipw2200 +ipwireless +ipx +ir-jvc-decoder +ir-kbd-i2c +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +ir-rc5-decoder +ir-rc5-sz-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sony-decoder +ir-usb +ircomm +ircomm-tty +irda +irda-usb +irlan +irnet +irtty-sir +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isofs +isp116x-hcd +isp1362-hcd +isp1704_charger +isp1760 +it913x-fe +itd1000 +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iw_nes +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsm +kafs +kalmia +kaweth +kbic +kbtab +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keucr +keyspan +keyspan_pda +keyspan_remote +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +ko2iblnd +kobil_sct +ks0108 +ks0127 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksocklnd +ksz884x +ktti +kvaser_pci +kvaser_usb +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 +leds-88pm860x +leds-adp5520 +leds-bd2802 +leds-blinkm +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-lm3530 +leds-lm3533 +leds-lm355x +leds-lm3642 +leds-lp3944 +leds-lp5521 +leds-lp5523 +leds-lp5562 +leds-lp55xx-common +leds-lp8501 +leds-lp8788 +leds-lt3593 +leds-max8997 +leds-mc13783 +leds-ot200 +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pca9685 +leds-pwm +leds-regulator +leds-tca6507 +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-oneshot +ledtrig-timer +ledtrig-transient +legousbtower +lg-vl600 +lg2160 +lgdt3305 +lgdt330x +lgs8gxx +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +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 +libsrp +lightning +line6usb +lineage-pem +linear +lirc_bt829 +lirc_dev +lirc_igorplugusb +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +litelink-sir +lkkbd +ll_temac +llc +llc2 +llog_test +lm25066 +lm3533-als +lm3533-core +lm3533-ctrlbank +lm3533_bl +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 +lov +lp +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp8755 +lp8788-charger +lp8788_bl +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc2978 +ltc4151 +ltc4215 +ltc4245 +ltc4261 +ltv350qv +lustre +lv5207lp +lvfs +lz4 +lz4_compress +lz4hc +lz4hc_compress +m25p80 +m2m-deinterlace +m52790 +m88rs2000 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +ma600-sir +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +mac53c94 +mac80211 +mac80211_hwsim +mac802154 +mac_hid +macb +mace +macvlan +macvtap +mag3110 +magellan +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +matrix-keymap +matrix_keypad +matrox_w1 +matroxfb_DAC1064 +matroxfb_Ti3026 +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +max1111 +max11801_ts +max1363 +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max2165 +max3100 +max34440 +max517 +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77686 +max77693 +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925-regulator +max8925_bl +max8925_onkey +max8925_power +max8952 +max8973-regulator +max8997 +max8997_charger +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 +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp4725 +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdc +mdc800 +mdio +me4000 +me_daq +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mem2mem_testdev +memstick +mena21_wdt +mesh +metro-usb +metronomefb +mfd +mga +mgc +michael_mic +microread +microread_i2c +microtek +mii +minix +mip6 +mite +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mma8450 +mmc_block +mms114 +mos7720 +mos7840 +moxa +mpoa +mpr121_touchkey +mpt2sas +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +mrst_max3110 +ms_block +msdos +msp3400 +mspro_block +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt29f_spinand +mt312 +mt352 +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtd_dataflash +mtdblock +mtdblock_ro +mtdoops +mtdram +mtdswap +mtip32xx +mtouch +multipath +musb_am335x +musb_dsps +musb_hdrc +mv643xx_eth +mv88e6060 +mv88e6xxx_drv +mv_u3d_core +mv_udc +mvmdio +mvsas +mvumi +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxl111sf-demod +mxl111sf-tuner +mxl5005s +mxl5007t +mxser +myri10ge +n_hdlc +n_r3964 +n_tracerouter +n_tracesink +nand +nand_bch +nand_ecc +nand_ids +nandsim +natsemi +nau7802 +navman +nbd +nci +ncpfs +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netlink_diag +netprio_cgroup +netrom +netxen_nic +newtonkbd +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 +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nf_synproxy_core +nf_tables +nf_tables_arp +nf_tables_bridge +nf_tables_ipv4 +nf_tables_ipv6 +nfc +nfc_digital +nfcsim +nfcwilink +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nfs +nfs_acl +nfs_layout_nfsv41_files +nfsd +nfsv2 +nfsv3 +nfsv4 +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 +nft_limit +nft_log +nft_meta +nft_nat +nft_rbtree +nft_reject_ipv4 +nftl +ngene +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_daq_700 +ni_daq_dio24 +ni_labpc +ni_labpc_cs +ni_labpc_pci +ni_mio_cs +ni_pcidio +ni_pcimio +ni_tio +ni_tiocmd +nicstar +nilfs2 +niu +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 +ns558 +ns83820 +nsc-ircc +nsp32 +nsp_cs +ntc_thermistor +ntfs +null_blk +nvidiafb +nvme +nxt200x +nxt6000 +obdclass +obdecho +objlayoutdriver +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stack_o2cb +ocfs2_stack_user +ocfs2_stackglue +ocrdma +of_serial +ofpart +old_belkin-sir +olpc_apsp +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 +output +ov2640 +ov5642 +ov6650 +ov7640 +ov7670 +ov772x +ov9640 +ov9740 +overlayfs +oxu210hp-hcd +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +palmas-regulator +pandora_bl +panel +paride +parkbd +parport +parport_ax88796 +parport_cs +parport_pc +parport_serial +pata_ali +pata_amd +pata_arasan_cf +pata_artop +pata_atiixp +pata_atp867x +pata_cmd640 +pata_cmd64x +pata_cs5520 +pata_cs5530 +pata_cs5536 +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_sc1200 +pata_sch +pata_serverworks +pata_sil680 +pata_sis +pata_sl82c105 +pata_triflex +pata_via +pc300too +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_can +pch_phub +pch_uart +pch_udc +pci +pci-stub +pci200syn +pcips2 +pcmcia +pcmcia_core +pcmcia_rsrc +pcmciamtd +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 +phison +phonet +phram +phy-core +phy-exynos-dp-video +phy-generic +phy-gpio-vbus-usb +phy-isp1301 +phy-rcar-usb +phy-samsung-usb +phy-samsung-usb2 +phy-samsung-usb3 +physmap +physmap_of +pixcir_i2c_ts +pktcdvd +pktgen +pl2303 +plat-ram +plat_nand +platform_lcd +plip +plusb +pluto2 +plx_pci +pm-notifier-error-inject +pm2fb +pm3fb +pm80xx +pmbus +pmbus_core +pmc551 +pmcraid +pmu_battery +pn533 +pn544 +pn544_i2c +pn_pep +port100 +poseidon +powermate +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +ppp_synctty +pppoatm +pppoe +pppox +pps-gpio +pps-ldisc +pps_core +pps_parport +pptp +prism2_usb +ps2mult +psmouse +psnap +pt +ptlrpc +ptp +pvrusb2 +pwc +pwm-pca9685 +pwm-twl +pwm-twl-led +pwm_bl +pxa27x_udc +qcaux +qcserial +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qlogic_cs +qlogicfas408 +qmi_wwan +qnx4 +qnx6 +qt1010 +qt1070 +qt2160 +quatech2 +quatech_daqp_cs +quota_tree +quota_v1 +quota_v2 +qxl +r128 +r592 +r6040 +r8152 +r815x +r8169 +r8187se +r8188eu +r8192e_pci +r8192u_usb +r820t +r852 +r8712u +r8a66597-hcd +r8a66597-udc +rack-meter +radeon +radio-i2c-si470x +radio-keene +radio-ma901 +radio-maxiradio +radio-mr800 +radio-shark +radio-si4713 +radio-si476x +radio-tea5764 +radio-timb +radio-usb-si470x +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +ray_cs +rbd +rbtree_test +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-em-terratec +rc-encore-enltv +rc-encore-enltv-fm53 +rc-encore-enltv2 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-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-tbs-nec +rc-technisat-usb2 +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-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rc5t583-regulator +rcar_vin +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +redboot +redrat3 +reed_solomon +reiserfs +remoteproc +renesas_usbhs +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +rio-scan +rio500 +rionet +rivafb +rj54n1cb0c +rmd128 +rmd160 +rmd256 +rmd320 +rndis_host +rndis_wlan +rocket +romfs +rose +rotary_encoder +rp2 +rpcsec_gss_krb5 +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt61pci +rt73usb +rtc-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-as3722 +rtc-bq32k +rtc-bq4802 +rtc-cmos +rtc-da9052 +rtc-da9055 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1742 +rtc-ds2404 +rtc-ds3232 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-generic +rtc-hid-sensor-time +rtc-isl12022 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max77686 +rtc-max8907 +rtc-max8925 +rtc-max8997 +rtc-max8998 +rtc-mc13xxx +rtc-moxart +rtc-msm6242 +rtc-palmas +rtc-pcf2123 +rtc-pcf2127 +rtc-pcf50633 +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-snvs +rtc-stk17ta8 +rtc-tps6586x +rtc-tps65910 +rtc-tps80031 +rtc-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtc_cmos_setup +rtd520 +rtl2830 +rtl2832 +rtl8150 +rtl8180 +rtl8187 +rtl8188ee +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192se +rtl8723-common +rtl8723ae +rtl8723be +rtl8821ae +rtl_pci +rtl_usb +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtlwifi +rts5139 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rx51_battery +rxkad +s1d13xxxfb +s2250 +s2255drv +s2io +s2mps11 +s3fb +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s626 +s6e63m0 +s921 +saa6588 +saa6752hs +saa7110 +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7146 +saa7146_vv +saa7164 +saa717x +saa7185 +saa7706h +safe_serial +salsa20_generic +sata_inic162x +sata_mv +sata_nv +sata_promise +sata_qstor +sata_rcar +sata_sil +sata_sil24 +sata_sis +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sbe-2t3e3 +sbp_target +sbs-battery +sc92031 +sca3000 +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_fq +sch_fq_codel +sch_gred +sch_hfsc +sch_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +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_tgt +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_srp +sctp +sctp_probe +sdhci +sdhci-of-esdhc +sdhci-of-hlwd +sdhci-pci +sdhci-pltfm +sdio_uart +sdr-msi3101 +sdricoh_cs +sedlbauer_cs +seed +sep_driver +seqiv +ser_gigaset +serial2002 +serial_cs +serio_raw +sermouse +serpent_generic +serport +serqt_usb2 +ses +sfc +sh_eth +sh_veu +sha1-powerpc +shark2 +shpchp +sht15 +sht21 +si21xx +si4713-i2c +si476x-core +sidewinder +sierra +sierra_net +sil164 +sir-dev +sis +sis190 +sis5595 +sis900 +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_of_platform +sja1000_platform +skel +skfp +skge +sky2 +sl811-hcd +sl811_cs +slcan +slip +slram +sm501 +sm501fb +sm7xxfb +sm_common +sm_ftl +smb347-charger +smc91c92_cs +smm665 +smsc-ircc2 +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +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-at73c213 +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt3328 +snd-bt87x +snd-ca0106 +snd-cmipci +snd-compress +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-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1938 +snd-es1968 +snd-firewire-lib +snd-firewire-speakers +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-hdmi +snd-hda-codec-idt +snd-hda-codec-realtek +snd-hda-codec-si3054 +snd-hda-codec-via +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-mona +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-mts64 +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-oxygen +snd-oxygen-lib +snd-page-alloc +snd-pcm +snd-pcxhr +snd-pdaudiocf +snd-portman2x4 +snd-powermac +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb-common +snd-sb16-dsp +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-atmel-pcm +snd-soc-core +snd-soc-si476x +snd-soc-simple-card +snd-sonicvibes +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usb-usx2y +snd-usbmidi-lib +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx-lib +snd-vx222 +snd-vxpocket +snd-ymfpci +soc_camera +soc_camera_platform +soc_mediabus +soc_scale_crop +softdog +softing +softing_cs +solo6x10 +solos-pci +sony-btf-mpx +soundcore +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-dw +spi-dw-midpci +spi-gpio +spi-lm70llp +spi-oc-tiny +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-sc18is602 +spi-tle62x0 +spi-topcliff-pch +spi-xcomm +spi_ks8995 +spidev +squashfs +sr9700 +ssb +ssb-hcd +ssd1307fb +ssfdc +sst25l +ssu100 +st +st1232 +st_accel +st_accel_i2c +st_accel_spi +st_drv +st_gyro +st_gyro_i2c +st_gyro_spi +st_magn +st_magn_i2c +st_magn_spi +st_pressure +st_pressure_i2c +st_pressure_spi +st_sensors +st_sensors_i2c +st_sensors_spi +starfire +stb0899 +stb6000 +stb6100 +ste_modem_rproc +stex +stinger +stir4200 +stk1160 +stkwebcam +stmmac +stmpe-keypad +stmpe-ts +stowaway +stp +streamzap +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +svcrdma +svgalib +swim3 +sx8 +sym53c500_cs +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink +synclink_cs +synclink_gt +synclinkmp +syscopyarea +sysfillrect +sysimgblt +sysv +t1pci +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +tc3589x-keypad +tca6416-keypad +tca8418_keypad +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bic +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 +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-kstrtox +test-string_helpers +test_power +tg3 +tgr192 +therm_windtunnel +thmc50 +ti-adc081c +ti_dac7512 +ti_usb_3410_5052 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timb_dma +timberdale +timblogiw +timbuart +timeriomem-rng +tipc +tlan +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmiofb +tmp006 +tmp102 +tmp401 +tmp421 +tmscsim +toim3232-sir +touchit213 +touchright +touchwin +tpci200 +tpm-rng +tpm_atmel +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm_i2c_stm_st33 +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-charger +tps65090-regulator +tps65217 +tps65217-regulator +tps65217_bl +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +tranzport +tridentfb +ts2020 +ts_bm +ts_fsm +ts_kmp +tsc2005 +tsc2007 +tsc40 +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +tsl4531 +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tuner_it913x +tunnel4 +tunnel6 +turbografx +tusb6010 +tvaudio +tveeprom +tvp5150 +tw2804 +tw9903 +tw9906 +tw9910 +twidjoy +twl4030-madc +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_charger +twl4030_keypad +twl4030_wdt +twl6030-gpadc +twl6040-vibra +twofish_common +twofish_generic +typhoon +u132-hcd +uPD98402 +u_ether +u_rndis +u_serial +uartlite +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +uda1342 +udc-core +udf +udl +udlfb +udp_diag +ueagle-atm +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_sercos3 +uli526x +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 +unix_diag +upd64031a +upd64083 +usb-serial-simple +usb-storage +usb3503 +usb8xxx +usb_8dev +usb_debug +usb_f_acm +usb_f_ecm +usb_f_ecm_subset +usb_f_eem +usb_f_mass_storage +usb_f_ncm +usb_f_obex +usb_f_phonet +usb_f_rndis +usb_f_serial +usb_f_ss_lb +usb_gigaset +usb_wwan +usbatm +usbdux +usbduxfast +usbduxsigma +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmisc_imx +usbmon +usbmouse +usbnet +usbserial +usbsevseg +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +uwb +ux500 +v4l2-common +v4l2-dv-timings +v4l2-int-device +v4l2-mem2mem +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vga16fb +vgastate +vgg2432a4 +vhci-hcd +vhost +vhost_net +vhost_scsi +via +via-ircc +via-rhine +via-sdmmc +via-velocity +via686a +videobuf-core +videobuf-dma-contig +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videobuf2-core +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-memops +videobuf2-vmalloc +videocodec +videodev +viperboard +viperboard_adc +virtio +virtio-rng +virtio_balloon +virtio_blk +virtio_console +virtio_mmio +virtio_net +virtio_pci +virtio_ring +virtio_scsi +virtual +visor +vivi +vlsi_ir +vmac +vme +vme_ca91cx42 +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmwgfx +vmxnet3 +vp27smpx +vpx3220 +vringh +vsock +vsxxxaa +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +w1-gpio +w1_bq27000 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1_smem +w1_therm +w35und +w5100 +w5300 +w6692 +w83781d +w83791d +w83792d +w83793 +w83795 +w83977af_ir +w83l785ts +w83l786ng +w9966 +wacom +wacom_i2c +wacom_w8001 +walkera0701 +wanxl +warrior +wbsd +wcn36xx +wdrtas +wdt_pci +whc-rc +whci +whci-hcd +whiteheat +wil6210 +wimax +winbond-840 +windfarm_core +wire +wishbone-serial +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wl3501_cs +wlags49_h25_cs +wlags49_h2_cs +wlcore +wlcore_sdio +wlcore_spi +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x-ts +wm831x_backup +wm831x_bl +wm831x_power +wm831x_wdt +wm8350-hwmon +wm8350-regulator +wm8350_power +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-regulator +wm97xx-ts +wp512 +wusb-cbaf +wusb-wa +wusbcore +x25 +x25_asy +x_tables +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 +xgene-enet +xgifb +xgmac +xilinx_ps2 +xilinx_uartps +xillybus_core +xillybus_of +xillybus_pcie +xirc2ps_cs +xircom_cb +xor +xpad +xprtrdma +xsens_mt +xt_AUDIT +xt_CHECKSUM +xt_CLASSIFY +xt_CONNSECMARK +xt_CT +xt_DSCP +xt_HL +xt_HMARK +xt_IDLETIMER +xt_LED +xt_LOG +xt_NETMAP +xt_NFLOG +xt_NFQUEUE +xt_RATEEST +xt_REDIRECT +xt_SECMARK +xt_TCPMSS +xt_TCPOPTSTRIP +xt_TEE +xt_TPROXY +xt_TRACE +xt_addrtype +xt_bpf +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_conntrack +xt_cpu +xt_dccp +xt_devgroup +xt_dscp +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_iprange +xt_ipvs +xt_length +xt_limit +xt_mac +xt_mark +xt_multiport +xt_nat +xt_nfacct +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_realm +xt_recent +xt_sctp +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_tcpudp +xt_time +xt_u32 +xtkbd +xts +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 +zte_ev --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/powerpc/powerpc64-emb +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/powerpc/powerpc64-emb @@ -0,0 +1,16595 @@ +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/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/atm/suni 0xaa11441a suni_init +EXPORT_SYMBOL drivers/bcma/bcma 0x9b6b1e72 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 0x0ac1c49c paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x3f43b155 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x6250ec0c pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0x6ba143fb pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0xa7d9ab0d pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xbc0ec868 pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0xc9197560 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xcb42049e pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0xd056ce81 pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0xf02e4253 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xf37d36af paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0xfe462444 pi_init +EXPORT_SYMBOL drivers/crypto/caam/caam 0xfd2b02dc caam_get_era +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0x59229c0c caam_jr_alloc +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0x64ab7754 caam_jr_free +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0xbb030d6e caam_jr_strstatus +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0xd0519ed7 caam_jr_enqueue +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0xdc04fdc0 gen_split_key +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0xeb0ef74f split_key_done +EXPORT_SYMBOL drivers/crypto/talitos 0xe70e5981 talitos_submit +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x5ed11e35 dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x631552ed dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x94bd65d1 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x95c18755 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x9c4c38cd dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xb41d9ff7 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/edac/edac_core 0x18a55a07 edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04d0f641 fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x055a96aa fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x066adb90 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0ce40a93 fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0e243bec fw_iso_context_queue +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 0x17d69678 fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1c4b8925 fw_cancel_transaction +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 0x3d9d0fe3 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4285fe45 fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0x52907433 fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x635df6d0 fw_schedule_bus_reset +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 0x6f1e5d4a fw_core_add_address_handler +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 0xa47502ab fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa8ca6542 fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0xae4bf68c fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb5b9dac7 fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc7414544 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc8750c5e fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xca7472da fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0xcbe4284e fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0xcd1fe4d0 fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd47bc8e3 fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xde816562 fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe2555c10 fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf2e6a439 fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf984082a fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xfd8191d0 fw_core_remove_address_handler +EXPORT_SYMBOL drivers/fmc/fmc 0x2b59ed36 fmc_driver_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x2ce4d261 fmc_free_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x48f50499 fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0x58b7c67c fmc_find_sdb_device +EXPORT_SYMBOL drivers/fmc/fmc 0x70ec2759 fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x774a39ea fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0x950f2387 fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0xb235957d fmc_show_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xc487de70 fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0xdd6619a2 fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0xef84e2c0 fmc_device_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00025916 drm_mode_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00667d8a drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0144c5b8 drm_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x01938287 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x019b8524 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x026c0d6b drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02b9dc28 drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x058cbab8 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x06c23b60 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08ab30e0 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a277aa0 drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f6eeb0a drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fd60df2 drm_get_connector_status_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11a6152f drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12b196c2 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12c6276a drm_buffer_read_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1398eb50 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1407e0fd drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x142b8b35 drm_buffer_copy_from_user +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14537abd drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x150aa722 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1673406a drm_global_mutex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x174b381f drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0x189f6401 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1901e45e drm_core_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19e44324 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1acabc1d drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b26e468 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b4f2d3d drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b8e8551 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1cfa93bf drm_compat_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f8fff85 drm_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20345d9b drm_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x209cebf2 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20a576f6 drm_core_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20b37c60 drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20d2d97f drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21174b2a drm_get_last_vbltimestamp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25308563 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28800a18 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29ac66ae drm_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29accc98 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29ad006c drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a942ab2 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d80be4d drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f0b064f drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30a687af drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x320dfefb drm_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3393a061 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3578533e drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x35d20b50 drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36f91ef3 drm_mm_clean +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 0x3ae7b2d0 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d4b8108 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41c71e6b drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43384bd9 drm_buffer_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x45516fbd drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x45f1122c drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x45f238a7 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4619f623 drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x46832210 drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x46bcb6e0 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4769047e drm_platform_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x498dcb5e drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49fabf0d drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ab23765 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b33bfae drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b8a9bd4 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4bb4d74b drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c33f11a drm_i2c_encoder_init +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 0x50437b35 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x51355b71 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5139573a drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x53a9f8ca drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54828d0b drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x562c2e6d drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59365b7e drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5abdc28a drm_core_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5ac5c448 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d118a8f drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d7318dc drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e83d0a5 drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5ec5a49b drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f35d7df drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6090be61 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63c6c42d drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63ce6fe1 drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64211b93 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65619312 drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66803841 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b6d7375 drm_timestamp_precision +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cc3c29e drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cee2e42 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d42982d drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6df4da99 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f8247dc drm_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f838d39 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x73bf774b drm_sysfs_connector_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x745852de drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7736f875 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79a7d529 drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a0f4476 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a4e7297 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c90c42c drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c9fb12f drm_core_reclaim_buffers +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7cabd9b1 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7d5afd26 drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f30b15f drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7fbcd610 drm_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7fc7db51 drm_bridge_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x80ba6ffe drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81ba930c drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81d075d0 drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81e773e4 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8377d7aa drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x857cfca6 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x88f732ce drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x898e94f7 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89914058 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c3793ab drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8dfb019d drm_buffer_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f7df3a7 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x90d6418b drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9329dcd6 drm_prime_init_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x961203f7 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x96af6b61 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9745d638 drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9936283c drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9ae8c99f drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c2743d3 drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c82f6a7 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9cc26e7f drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d70fc2a drm_rnodes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9eccfe56 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9fb3b920 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9fe830c5 drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa02c944c drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1f4e9e6 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa223ded1 drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa37c8192 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa39de446 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa3a02e8c drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4834663 drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa514e4ab drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa55788b1 drm_mode_connector_detach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5625880 drm_prime_destroy_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5dbd572 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa7e78267 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa9a06b54 drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa298acc drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xabbb1b2e drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xada0cf21 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafb0cb6f drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5540008 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb572a9f0 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5c01635 drm_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6e20729 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb72ebbf8 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb95beb55 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9ed0986 drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbae61541 drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc25cb48 drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd1769d5 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd5f3ba8 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe001c53 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbea175b7 drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc03c82af drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc16658f0 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc1880242 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc36bf21b drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc37f2451 drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4000f9f drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc414c422 drm_vblank_offdelay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc66cd04e drm_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6a43f43 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7f7cc11 drm_vma_offset_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcbc01c5f drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcbef068a drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce068076 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcec158f0 drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd035c377 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd14c8201 drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd33f2c9e drm_get_encoder_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd39dbedd drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd4422439 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd6c56545 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd73d5325 drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd8f6d253 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda76e550 drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdaab6ad4 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdafd3b85 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbadac5b drm_dev_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdcf2b2fb drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde78734e drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf99419f drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe20208f1 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2ef97e4 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe444be0f drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe56a8051 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5a6df11 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5af261c drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5f6eaf1 drm_bridge_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6f46e6e drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9b78c2b drm_get_connector_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9e1bc42 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea8eb561 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb1fd5d4 drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xecaaa254 drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeec7964b drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef7eb863 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xefdf9b69 drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf08d712a drm_mode_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1ba3dcb drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf219f21d drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2af57eb drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf44054d8 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf446a0e2 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4d824cf drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf5b6cc8c drm_sysfs_connector_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6d3a423 drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf841ac3b drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf87df461 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8f4682b drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9c58bfd drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb497216 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfc094863 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfc83e3e9 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd063935 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe4a68c7 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff8ae1d8 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x034eb3b0 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0d0e6a10 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0e0c18b8 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x107fcf07 drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x16259c58 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1ab8d07c drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2acc566c drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2f835e64 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3057abdd drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x37dfd7d0 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x447b9796 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x471f4524 drm_dp_aux_unregister_i2c_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x47b829de drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4a14fca2 drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4c6df839 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x542f0f0e drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5a45c814 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x63830888 drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x64a7bac0 drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x66574bb5 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6ac674fe drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x71437c4e drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x769c384f drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x81d4a729 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9578c5ae drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9ad1efdc drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9c768421 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa729f438 drm_fb_helper_restore_fbdev_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 0xacb51f23 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xacc607af drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaee4d7e9 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb56ed8cd drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbc595c58 drm_dp_aux_register_i2c_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbdefd04e drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc7f55c9e drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc80b561d drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xca6373c4 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe56540ec drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xec0747f3 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xef1422c0 i2c_dp_aux_add_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf0da7140 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfcc31959 drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x0dcaa91f drm_usb_exit +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x1c71eb11 drm_get_usb_dev +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0xe4cfa710 drm_usb_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x05bef7a2 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x078148ea ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0e62d538 ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x14f5ce93 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x16aecaf4 ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1e186f4a ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x311ea973 ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x32b4d788 ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3848990a ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x385cf790 ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x390973d0 ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3aca98d9 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x40e87419 ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4260c031 ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x43762711 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x45894a48 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x472d0997 ttm_bo_init +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 0x4f55194d ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x526dee1c ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x55d1b82f ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x564e1aee ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x59e2eebd ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5a8fdfea ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6052860c ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x680f7364 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6911bb01 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6b73e8f4 ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6e144801 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x70440493 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7ce3513d ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7d55da85 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x84a13931 ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x880a15ad ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x885bb458 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x886cf055 ttm_mem_global_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 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 0xa2a129fd ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa52145c5 ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa6d89540 ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa6dc73eb ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa7153a2b ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa73de2a9 ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xab7606e1 ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xae4e19a6 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xafae417b ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb08ea3fa ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb35b1b9a ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb4dc5593 ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb83c6470 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbff47b41 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc5306679 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc5f0c2da ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc63a650c ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc887fca1 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce6e43a8 ttm_base_object_lookup_for_ref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcec0a6f1 ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd24ef8df ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd7f51742 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8003598 ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd9597b10 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd9c91e93 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe53c64e4 ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe55dcf2c ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe6271f11 ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xea22d0c3 ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xed1469e8 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xef67e523 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbdcf5ba ttm_bo_init_mm +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-pca 0x8177ed61 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x90f0fb4c i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0x1617329b amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x540f9580 st_accel_common_probe +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x89fd5cb1 st_accel_common_remove +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x09643d17 hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x74c42719 hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x84fdcc75 hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x95b32a3d hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xe0a60af6 hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x7a743fe3 hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xf86030fb hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x000817ed st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x021a513a st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x074d7047 st_sensors_trigger_handler +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x08d28aa5 st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x22bc89d9 st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x268e39b8 st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x28d927da st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x2afa864f st_sensors_sysfs_get_sampling_frequency +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x3686f272 st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x4cce3b55 st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x5969bfd3 st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb839eefa st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xc1564014 st_sensors_sysfs_set_sampling_frequency +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xd37c2356 st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xe1c3274b st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xf790db7e st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x68a25d31 st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0x0a28b6c2 st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x7c67e21b st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xb1d27356 st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x1f5a7492 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xae32dacf adis_enable_irq +EXPORT_SYMBOL drivers/iio/industrialio 0x04d2f859 iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x0c5938de iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x0ec61176 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x18ec6c5f iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x22db400f iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x27262299 iio_buffer_store_enable +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x34d3e7a6 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0x3ed89733 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x615ecf8f iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x67b530f6 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x6d9a98f6 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x74c7f4dc iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x8b63d821 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x8fad404f iio_buffer_read_length +EXPORT_SYMBOL drivers/iio/industrialio 0xa278f64d iio_buffer_write_length +EXPORT_SYMBOL drivers/iio/industrialio 0xaa2d5f15 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0xb2d169e7 iio_buffer_show_enable +EXPORT_SYMBOL drivers/iio/industrialio 0xb727c109 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0xb865f8fd iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xbe1b15c6 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xda410e49 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0xda6598a8 iio_buffer_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe70a9705 iio_buffer_register +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x3778e22f iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x8c6cf9f5 iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x27b07315 iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x4e2697e7 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x6a2eb57d st_magn_common_remove +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x9ce75ed1 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x192eb48e st_press_common_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xd721170c 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 0x446fd7c9 rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x59252c9d rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x9e63170e rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0d9126da ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x3373461d ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x503e394c cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x5b335727 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x603bac03 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x79e7c4ab ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x7e72b575 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x8649f490 ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x9c83b7dd ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa91b4270 ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb2a6ae65 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xbc42efa2 ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd628e7d1 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe2cd6b93 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe4b9bc46 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe597f615 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xec2a87fe ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x006b8f78 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0099b2bc ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x052ba13e ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x06c82fcf mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0bf393d7 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0ebb7f5f ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x14f84918 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x15604b5e ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x16d88663 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x16eee1e9 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1711e5ef ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x171f99f1 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1883ce98 ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x21e19ff8 ib_resolve_eth_l2_attrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22f3cf93 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2518f65c ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2c5fab14 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2e9a510c ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ea487c0 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x31f8d926 ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3645fe03 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3727e61e ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3a85c47e ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3aaf8dd1 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3af32987 ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x433070cd ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x44b69c8d ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x473f0712 ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4af75c87 rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4b807163 ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4d6d262c ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4e7911fc ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4f41608a ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4fb1f952 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50b711e5 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x510d0d8b ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5657c3f3 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5695c294 ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x57b03236 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x59984219 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x59bd86b9 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x59d960fd ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x60468d5e ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x60f754e3 ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6125762e ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x61c299a3 ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x62f05152 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6438aa89 ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6d53c8b9 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e030e26 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x70101b49 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x70ba1e45 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x71ca6341 ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x77150156 ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x82ced2cd ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x836585ee ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x86e7f721 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x877030d4 ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x878ac8d7 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x95239059 ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x99332fa8 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9d0911b2 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9e456de5 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9fc277f3 ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa432baf6 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa7904046 ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa99ee1df ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xac217df9 rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb8d0dd4c ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc0669d29 ib_dealloc_pd +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 0xd0949c17 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd4ebc4f3 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xda75bf9e ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xde1af8db ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdedf40b8 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdf3dcb1e ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe10f3519 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe1dbd56c ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe79be4b2 ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xed5649af ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeddd366c ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf0b60645 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc944ad4 ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x09f9684c ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x0b7021af ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x45ec0fd4 ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6429ab03 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x64a8c798 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7266e9e1 ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x946d5d27 ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x99edac35 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xb4d69e63 ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xc651ae43 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xcd878a21 ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xe3669d2d ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xf4a0ae82 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x0bc39feb ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x2041611d ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x22f07253 ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x36e99882 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 0x73e47d2b ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9a1cd50d ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xb4350c0e ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xc6a03894 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 0xfa89261b 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 0x1f430436 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x2445d21f iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x31e54c9b iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x61927f51 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x64c9e42b iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xb36a9830 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd0f486f0 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xdb2ae6d7 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0041da54 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x05309fb8 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x25428744 rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x26260103 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x376a79f8 rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x466b4035 rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4a9b2b8b rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4c4918fa rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x609373eb rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x61685bb6 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x664136db rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x83b8d51f rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x89d200ce rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb0617024 rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc068e40b rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xcdc02f71 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xce57ee88 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xce6dc269 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xda3f4ec3 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xeb464e51 rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xeda3389c rdma_listen +EXPORT_SYMBOL drivers/input/gameport/gameport 0x2ae6e763 gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x416b1570 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x42a34b9d gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x59dfde10 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x69cfe162 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x8e12b31f gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0xc3643da2 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0xe36fe3cf gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xf2505303 __gameport_register_port +EXPORT_SYMBOL drivers/input/input-polldev 0x3094d28a input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x77e3cce3 input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x89291bc6 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xea1e149f input_register_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0xa3c99d48 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x1c89ea3a ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x2f0af5c6 ad714x_remove +EXPORT_SYMBOL drivers/input/misc/ad714x 0x59fd6a62 ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0x6370bbcd ad714x_enable +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x1e5e3b60 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 0x0ba22dd6 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0x39d6e6be sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x73615c21 sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0xa36ec2b5 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0xaa9241bd sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xf5d6869f sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x702c2910 ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x88f40b7f 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 0x09d2dd48 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x17ecf6dd capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x1a80801d capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x1c1615cd 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 0x47d3fc51 capi_info2str +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 0x7a33596c capi20_get_serial +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7cd55221 capi20_register +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 0x997cc849 capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9f823278 register_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xa373cfca capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa165d27 capilib_release_appl +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaad2749a 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 0xbcbdedb5 attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xed061606 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xfd552f7a capi_message2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xffe2f476 capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x1190b2ae b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x295d15ec b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x2dc52677 b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x315823e7 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x47f5bcfc b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x512c70fa b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x5c94008e b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x86ded966 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x90cf628e b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x9a5ee1d3 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xa952a237 b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb2a55861 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc0f8f6e7 b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xe8659a54 avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xf987b352 b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x1a3e91bb b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x1dfbe338 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x942db248 b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xb7bd426b t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xbbc2ff7a b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xdb74a91a b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xdb85d8c7 b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xe19a8b73 b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xfb864bf0 b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0x29562993 b1pcmcia_delcard +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xaec3240e b1pcmcia_addcard_m1 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xea620116 b1pcmcia_addcard_m2 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xf14bf8b1 b1pcmcia_addcard_b1 +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x2974ead1 DIVA_DIDD_Read +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x7ab59853 proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x47c8421f mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x7e28fd4b mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xc0e4ba54 mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xfe433569 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x1f973664 mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x765b5432 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 0x7f29ce36 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x984161a5 hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xe227344e FsmRestartTimer +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 0xff2db2cf FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x0bf79199 isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x10258dae isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x9b3d8d5f isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xd281f26c isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xdf26a988 isacsx_setup +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x3a3c5769 isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x7b03bbaa isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x81e5da0f 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 0x01bb77fc bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x05ab48d7 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x07a993bf mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1018811c get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x12eb45bb create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x14b76fa8 mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x22b5fe68 mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x257fcb90 dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3f6debe9 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4cdfdac2 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x52b7dfc3 bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x54451388 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5938b939 recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x614ede30 mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x657986c8 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6f6ada16 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x870803d3 mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8ea37629 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x96309324 mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9a3d7324 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb4c309b5 mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xbd482a03 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xddbdc838 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe122384d mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe87943cf mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf6858202 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf7bd1132 get_next_dframe +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 0x063b9cc8 closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0x1b1b3fd0 closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0x21b7339f closure_trylock +EXPORT_SYMBOL drivers/md/bcache/bcache 0x312eba4f __closure_lock +EXPORT_SYMBOL drivers/md/bcache/bcache 0x363f8ca7 closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0x3ab27832 closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe3c17af1 __closure_wake_up +EXPORT_SYMBOL drivers/md/dm-log 0x29c2cf3f dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0x971b8dc9 dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0xc28576ee dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0xce835fb2 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x01827f59 dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0x67b1c131 dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x817417f9 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x918ce241 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0xbdcbdafb dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0xd4fcddda dm_snap_cow +EXPORT_SYMBOL drivers/md/raid456 0xa795ef49 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x105b73ca flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x20e65ba5 flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x492e2137 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x4a28eb7a flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x67b86255 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x72410516 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x8dd9db38 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xab3f6bdc flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xc2b6e6db flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xc3573daa flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xcbdd5f22 flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xe5643493 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xfe5a7b9f flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/btcx-risc 0x22ece649 btcx_riscmem_alloc +EXPORT_SYMBOL drivers/media/common/btcx-risc 0x495e4b0c btcx_calc_skips +EXPORT_SYMBOL drivers/media/common/btcx-risc 0x51302897 btcx_riscmem_free +EXPORT_SYMBOL drivers/media/common/btcx-risc 0xad2fe38b btcx_sort_clips +EXPORT_SYMBOL drivers/media/common/btcx-risc 0xc368f8e6 btcx_align +EXPORT_SYMBOL drivers/media/common/btcx-risc 0xcda0ded2 btcx_screen_clips +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 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x5b88faf6 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x8c44ecbe cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0xb041f248 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0xd0bf09d8 cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0xd29ec3f0 cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0xbd975983 cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x225d6bdf tveeprom_read +EXPORT_SYMBOL drivers/media/common/tveeprom 0x4fed504b tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0034a4c9 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x17523ce7 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1917d083 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1e8fd8bb dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1faca61c dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x32706276 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x403c645f dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4297e0e1 dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x46c0f653 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4acabe53 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4d7d3060 dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x59c9eafc dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5c0ea535 dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x70224f1b dvb_generic_release +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 0x7506a345 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7807fd7e dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x78db694b dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7d06eab6 dvb_frontend_reinitialise +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 0x907cfe83 dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa3178da2 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa7b0a2b1 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xae851b1d dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb04a38f7 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb8905d08 dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb9097968 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xccfef9c7 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xcf589e8c dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd68a099e timeval_usec_diff +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd8f7184c dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe4b535b5 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xedebb4c2 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf28e7431 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf5e1aa82 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfba93095 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfc0bb017 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfd486fc0 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-frontends/a8293 0x288f343d a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0x8c917fa5 af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9033 0x09aee63b af9033_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0xa10c9664 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x0931d053 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x2a3c5658 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x34e54a42 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x4b90aeac au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x627467ea au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x6702105a au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x87e68b72 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xb4a69d26 au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xd3abe53c au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0xdda3c3cf au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0xac557f4f bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x32bc9553 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0xebba5061 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0x76c428bd cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x7110e714 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x75a91049 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0x0b1adfec cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x346fd390 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x5b7bb0c0 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0xc3132b66 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x4efc70ff dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x4ff67aab dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x6d50e53a dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xa0f7cebe dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xd40d6e66 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x0485c551 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x1568aa9e dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x1ad80caf dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x2aa6fe9b dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x580497a1 dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x690223a1 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x75868913 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x80227f30 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x84f3aa2c dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x8f678cfd dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xa4df0a73 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xca667552 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xcd4fd02c dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xf5fede53 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xf9baef44 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x44289134 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x41c6389a dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x425a5710 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x65c177b1 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x7c2e60b1 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x9d2783fa dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xad567a6b dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x160d09a8 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x6092ac8c dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xb65292ee dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xe6ac378a dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x05a9cc33 dib7000p_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x0d2d40e7 dib7090_slave_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x1d0cec2e dib7090_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x1f0feb07 dib7000p_update_pll +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x29f6e24a dib7000p_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x2d594bc4 dib7000p_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x37060197 dib7090_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x78b3d98e dib7000p_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x867ad5c8 dib7000pc_detection +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x9a8be3ad dib7000p_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xb648cdc4 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xbb6afb9d dib7000p_set_agc1_min +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xc9d05f07 dib7000p_get_agc_values +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xd6ca6b52 dib7090_get_adc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xe4052b33 dib7000p_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xf2664aa1 dib7000p_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x10a46806 dib8000_remove_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x1b277c75 dib8000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x382cde98 dib8000_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x38aef159 dib8000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x3b8636b7 dib8096p_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x40ce4f29 dib8000_update_pll +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x58318737 dib8000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x67cb8443 dib8000_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x68b2e96e dib8000_pwm_agc_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x80215aa3 dib8000_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xa281377a dib8000_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xa3b1e57d dib8000_get_adc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xabe79969 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xbda9d8c5 dib8000_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xc263490c dib8090p_get_dc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xc29a979c dib8000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xc76c2ec6 dib8096p_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xd4926144 dib8000_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xe21b5b22 dib8000_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x0ea8f767 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x1a554925 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x3e1a36a2 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x9894230b dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xc2ab69c8 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0xb4bc2ad2 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0xea8a7626 drxd_config_i2c +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0x88cf9f0f drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0x97eae95f ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0xd63587b2 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0x09676e2d ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x636eda7d isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0xd27d0c16 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x882fb0d2 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/it913x-fe 0x6555c256 it913x_fe_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0x78e97f58 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0xe9430801 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0x4f62ee7d l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0xdf5437c9 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0xbe803447 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0xfda574ef lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x40838deb lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x6d491a03 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xecb00691 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0xe2e784f1 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0x40328bbd m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0xeff8cbf7 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0xc995f6b3 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0xa8c1a9fd mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0xc543cab7 mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x62da898f nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0x63f822f2 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0xe3a06568 or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0xc6900b35 or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2830 0x122c3684 rtl2830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2830 0xea67d55f rtl2830_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2832 0x90e423ae rtl2832_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0x8e0cbfd5 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0xee6c4099 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x072858c6 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xc8cdb942 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0xd39c71a7 s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x8ed0c28f si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0x45897929 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0xdd1580f2 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0xa6308ee8 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0x58decaf2 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0xdc5779f5 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0xd55488f7 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0xcbae0f2b stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0xfa4d60f0 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x4fc4d48d stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x9707f4b0 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0xd6eaba42 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x0f05dd36 stv090x_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x804db82e stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0xb64b0fd4 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0x13c0e314 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0x693788fd tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0xe12dacca tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x3d0a316a tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x4bbfefc3 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x9bd37cd7 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0xecf774df tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0xf1729a61 tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0x3662584b tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x33a6a26e tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0xb4c0f18c tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0xdc4264cb tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0xea72943c ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0xc2cf41bf tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0x151beb2d ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0xe37292f4 ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0x84d23012 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0xe7938f2f zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0xd8617da4 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x03b5187c flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x11b54576 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x14701c56 flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x1eaf36c9 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x2c70eed2 flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x414a984e flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xe8e9e49c flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x154fbf09 bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x6f27b3d6 bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd08391ec bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xe71224ce bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x409d2e11 bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x4ad4f5ef bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8c32ef4d bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x23643512 dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x4e5a72d8 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x5879e559 dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x665c319d dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x6a8a855a dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xa3965b84 write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xba36753c dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xdcf366d6 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe49c0115 rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x92fd1b7d dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x5191c981 cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x59051749 cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xaa3456fc cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xd034145e cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xfe81b972 cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x9247b72f altera_hw_filt_release +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xa12f52d0 altera_ci_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xaa3a3e7b altera_hw_filt_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/cx23885/altera-ci 0xf4790230 altera_pid_feed_control +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x08221973 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x20c94995 cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x36d68197 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x3afaef84 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x7d68c5b3 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xa8d8071c cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xa837872c vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xdd2cc412 vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x59f967bf cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xab411783 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xcc821b6f cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xfe28d918 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x06e6f5a0 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x1896b3e6 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x5d86178c cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x7146a845 cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xbc2bc4fe cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xde89c831 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x082acfbf cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x23b11af2 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x385e8f0a cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x421d9d69 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x54085fac cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x54344bd6 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5451888f cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5d755b8a cx88_risc_stopper +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5efef8aa cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x67ad0174 cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8a1153ff cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x965941bd cx88_free_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x993137bf cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa7dabf55 cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xaa741af2 cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb8059b9d cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb9198565 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xbdf84a81 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe9477886 cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf2de11a2 cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf9059927 cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xff9cbc6e cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x0c99aa64 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x0fc238b6 ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x464ca0a3 ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x4dadfcce ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5520f3d2 ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x8cdc8bbe ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x963c7c69 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x9b11d078 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xa5f5c9b7 ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb7af14e2 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb9f5647d ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xbcaa3cbf ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xc11e3f8a ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xdf467813 ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe052649c ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe4b2e13b ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xeb76c676 ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x10b2f579 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x13ace277 saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x4df482fd saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x4ec37876 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x4f40794e saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x536509ae saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x63906c20 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x73039031 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x7f5ead99 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xa3e4c1cd saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xb7e81280 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xdb2fa843 saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xf2a62b07 saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x44e4a22b 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 0x6d918dbe soc_camera_unlock +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x7b3bdb0a soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xa35060a1 soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xa54a2e33 soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xa5d0966e soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xcc61a8ea soc_camera_lock +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xed5c34a3 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xf4ce1685 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xf5aec532 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 0x5f3e3558 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xa9546115 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xfe2c3a07 soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x023ab66f soc_camera_calc_client_output +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x30725b9c soc_camera_client_s_crop +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0xdb43224f soc_camera_client_scale +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0xdd2664a5 soc_camera_client_g_rect +EXPORT_SYMBOL drivers/media/radio/tea575x 0x35a448ae snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x5839a96e snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0x6c72361a snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0xb32095c4 snd_tea575x_exit +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x161a78b5 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x3a7e37ec lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x3b380a61 lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x40ffbde6 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x493145c7 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x7bc760e6 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x823c09f7 lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xa9b99850 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/rc-core 0x0f15461e ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0x8f62d07a ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/tuners/e4000 0x3067bb32 e4000_attach +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x2b43992f fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0xa5f4c84a fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x32ab916c fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xb90944b7 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xba4dbf8c fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc2580 0x1d9fd6d3 fc2580_attach +EXPORT_SYMBOL drivers/media/tuners/max2165 0xa6436db6 max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x1e7835b0 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x0c72a32e mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0x2731cb6a mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0x2e25e5b0 mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0x8d475f43 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0xc3cac626 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18212 0x66191eb5 tda18212_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0x10552ec8 tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tua9001 0x7e1332ac tua9001_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 0x8475967d xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/tuner_it913x 0x17edb0bc it913x_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x146b0707 xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0xd2f2d090 xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0xa3731344 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0xf1adcd82 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x1536590f dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x4732aa62 dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x47d96332 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x5be5c27a dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x62f61170 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x6bc6afdf dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x95e5d402 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x9c31c62b dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xdcc3e2fa dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x0ea7004c dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x0f663341 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x91be6152 usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x95c349ee dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xbcc970b5 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xc093c5b0 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xfb1a8fb4 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x21c14a70 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 0x04abfe2b dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x0766a6e9 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x0a44a311 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x1565e3f2 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x1ad6d017 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x23f76c44 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x51779d79 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x75059711 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x8de04ef1 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb59abc6e dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xea523e53 dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x6507fd75 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xacb72161 em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x08fc56c1 gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x20e38939 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x23d0a592 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x25bee9ad gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x2e3249e4 gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x4f8c02ea gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x5d10f34e gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x6d66b47f gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x05333836 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x66328bc9 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x9152d842 tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x4a019eae ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x61c69f64 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x42c8e001 v4l2_ctrl_next +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x4adaf0f3 v4l2_ctrl_query_menu_valid_items +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x53c9394f v4l2_ctrl_query_menu +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x5f96a661 v4l2_ctrl_check +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x084edf9c 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 0x83c3333e v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x93f0c7fa v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x216dbc23 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x2d3ec65e videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x80671ad5 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x86f02838 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xdc4eb049 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xe43bb8e6 videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0xaff5ae7a vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0888397f v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x08ef005f v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x11cd7ce1 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x140e371b v4l2_of_get_remote_port_parent +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1460bf97 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16571fad v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x169bca0d v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x185f6cc3 v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x28f00155 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2c17cf1e v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2d8a687e v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x31860f6c v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3d1eb35d v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3db7f213 v4l2_of_get_remote_port +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3f3fc8e1 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x41383326 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x445bfc56 video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x445c339e v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45382029 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45d8cae6 v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x599ba1c8 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5e1c0fbf v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x623c3293 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x653c6665 video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6638221b video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x69e56c94 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6a27bb12 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6eee95b0 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6f2c1321 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x71de16f0 v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x721bc3c7 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x74e9021b __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7b3e18d0 v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7cef77a3 v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7f0c028a v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7f923f2a v4l2_of_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x89c316ef v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8bd841ec v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8ea12119 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x924e7f80 video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x97922447 v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9be72cb7 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa1802c49 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa3d70a83 v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xac91fa60 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xad6ae8dc v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaf192a80 v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb6e07c17 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb90cbedf v4l2_of_get_next_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbac4a225 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc12cf8f8 v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc2268b7a v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc28d78ea v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc3333fe2 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc79d88df v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc86de4ec v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc9db2555 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcace56ef v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcaf78a97 v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcf8f0931 __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd13347a1 v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd4709b46 video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xda2c9e68 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdd8c5ead v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2ebf472 v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe6fce6f2 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf17f9ee5 video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf1d49779 v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf92bff71 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf994671c v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfb61411a v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfccd85dd v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfd364d8d v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/memstick/core/memstick 0x0a6fd341 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x1f91363c memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x3ccdc034 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x411a767f memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x46e5acbb memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x856d5b8a memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8adc4405 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x9358d7d9 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x94158a92 memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x9aa9dcb7 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0xcb967cdd memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xd4912f08 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdc07e67e memstick_init_req +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x07bbe84d mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x08b646b4 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1d4eca68 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x261d9b5a mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x30318556 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x32302cad mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x35ff886f mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4714d973 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4c03edd0 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5b69b1e5 mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6a525df6 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x73cd33e5 mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x768ab7bc mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7e72afb1 mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa148df06 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa40cb27e mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa59e6383 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa7212caa mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa9b76a50 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xaeb16d41 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb24b16d6 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc1c0decb mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc8c692cb mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xcd9e7f5a mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd136a012 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd99a45c5 mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xda51e764 mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdca2570a mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe2b74847 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0415b006 mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x09b5a1e7 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0b03b640 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x27a41670 mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x29cb3423 mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x374d4eca mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x38c6c7f8 mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x392176ea mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3d95aa19 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3f89c808 mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x45e904ff mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4c08b6bb mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5480cd25 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6720e30d mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7836de13 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8841cb7a mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x90a3cc84 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x999edb07 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9c56491c mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb79d0c19 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xcad044f2 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe5ed5473 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe6c6c124 mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xee4a82e2 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf8a3964a mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf9bf15cc mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xff4b38a5 mptscsih_remove +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x1389145d i2o_driver_notify_controller_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x189cc942 i2o_iop_find_device +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x211b08a6 i2o_driver_notify_device_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x281fa2e8 i2o_driver_unregister +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x2847a355 i2o_device_claim_release +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x2a843bef i2o_dump_message +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x342e2467 i2o_parm_issue +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x401e4561 i2o_driver_notify_device_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x4c64537a i2o_find_iop +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x56ca5dd3 i2o_parm_field_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x579d058b i2o_driver_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x5817044d i2o_cntxt_list_get_ptr +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x6e2bc4bc i2o_status_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x6f3d951f i2o_msg_post_wait_mem +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x7d9e8ab4 i2o_exec_lct_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x9674a193 i2o_cntxt_list_remove +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xa373bdc5 i2o_msg_get_wait +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xa892aba1 i2o_cntxt_list_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xad023833 i2o_driver_notify_controller_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xb4c00dcf i2o_controllers +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xc34d2897 i2o_device_claim +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xc5d01c51 i2o_event_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xcb146594 i2o_cntxt_list_add +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xd04f619f i2o_parm_table_get +EXPORT_SYMBOL drivers/mfd/cros_ec 0x12a5ff93 cros_ec_remove +EXPORT_SYMBOL drivers/mfd/cros_ec 0xae5850d5 cros_ec_register +EXPORT_SYMBOL drivers/mfd/cros_ec 0xce908f5a cros_ec_prepare_tx +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x9a6e6d0a pasic3_write_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xb4103838 pasic3_read_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x1d663dea mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x24002748 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x3bfa8e60 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x43f402eb mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x62c26a2d mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x76682294 mc13xxx_irq_request_nounmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x8d1daefd mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x8d7ffa61 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x8d875b68 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xbe7de1f1 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xcaa6235a mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xe49bbdb6 mc13xxx_irq_ack +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xfaec9acb mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/tps6105x 0x4cfc9643 tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x99fb722a tps6105x_get +EXPORT_SYMBOL drivers/mfd/tps6105x 0xeb574192 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/misc/ad525x_dpot 0x1d236bf8 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x882e4367 ad_dpot_probe +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x49163704 altera_init +EXPORT_SYMBOL drivers/misc/atmel-ssc 0x2416ee94 ssc_request +EXPORT_SYMBOL drivers/misc/atmel-ssc 0xf17fdb9b ssc_free +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x0e9755b9 pwm_channel_free +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x5a8b82f9 pwm_channel_handler +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x5d5c2951 pwm_clk_free +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x6a5e1f70 pwm_channel_alloc +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x73330c97 pwm_clk_alloc +EXPORT_SYMBOL drivers/misc/atmel_pwm 0xeb7f2c6f __pwm_channel_onoff +EXPORT_SYMBOL drivers/misc/c2port/core 0xd969dde7 c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0xdd628272 c2port_device_unregister +EXPORT_SYMBOL drivers/misc/ioc4 0x03aca367 ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0x6964def9 ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x37bb6cbe tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x39af3853 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x46524afc tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x5c43eaaa tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x5cb9c0e4 tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0x901e56c7 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x902fc3d3 tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0xa8c2ec46 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0xca3d1d98 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xccb8e621 tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xe3e01a69 tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xe708284a tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xf3f8d097 tifm_add_adapter +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0x350b7467 mmc_cleanup_queue +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0x383078f6 mmc_spi_put_pdata +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0x6879d430 mmc_spi_get_pdata +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x19f836b2 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x20936c6d cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x92918cb3 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x1ab2b4fa map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x2d0d8d4d unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xa82eba69 do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xb1a7f481 register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0xe55d810a mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0xb89bed52 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x192e6238 simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x1bc13245 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0x56e3f365 mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/denali 0x4e1d52aa denali_remove +EXPORT_SYMBOL drivers/mtd/nand/denali 0x9660d237 denali_init +EXPORT_SYMBOL drivers/mtd/nand/nand 0x49fd69d5 nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0x67d81082 nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x75e2cc88 nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0xaede4d77 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0xcb8f83d3 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0xe86b4386 nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x3982da11 nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x79a0deec nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xfa0c49ca nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x6d7cbcc6 nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb9cce2cd nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x57a31e57 nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x633018de onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xa27e0d29 onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xb9cfb781 onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xc3467297 flexonenand_region +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x0ee71c19 arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x2a1fcc89 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x3187ffee arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x757d0370 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x87b76b75 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x8f7c2c31 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x9f94cf9f arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xa37c04a4 alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xbeb1a245 arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xf2bb8086 arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x4f8caa82 com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x5b44186e com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xde68c349 com20020_check +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x29ad6a9e ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x5015d03f NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x7b488529 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x879bd1bb ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xba66d348 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xcc59e099 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xcf233034 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xe5568f5b ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xf14c449b ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xfbef8a6b ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0xcb232422 cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x01389be0 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x0ea3f541 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x1006d4a3 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x46839f97 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x46d13663 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x78c1b7fc t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x84559624 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x8aa934ba cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x963f47d4 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa2e3756c cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa774e1ad cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa9f409ac cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xb2ce489c t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xbbd25ee6 dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd993a0f5 t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe6ce77ca cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x02569c44 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x08f05e5f cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1ac4acce cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1ef7cf96 cxgb4_disable_db_coalescing +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2f358e54 cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x34adbe69 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x434b9989 cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x498848f9 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4c2e3573 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50bbf8de cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5fb22cca cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6b7672f0 cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6e2f6ec6 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7c8dfa5d cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7f82201e cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x82f8707d cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x86da9536 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x93dfc871 cxgb4_enable_db_coalescing +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x969aae1b cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa84406d2 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb4e8b5e1 cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc4f4c775 cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd2cc8557 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe6cbe4cd cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xed113604 cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf55dff29 cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf719c367 cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfee721ba cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x0e712340 vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x2a41489e 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 0x5e1ac48a vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x9196d804 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xce01ca52 enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x0c671949 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 0xe4684b67 be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/freescale/gianfar_driver 0x79f28897 gfar_phc_index +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x08fea8d3 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x195ad28a mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1a2dda6a mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x28f66bce mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x34ee718c mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3d0d8dd8 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3ee35dd8 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x437e0906 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x44c55402 mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4b585fc4 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4bf81ea9 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x505cf3a2 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5811e2c2 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x682c5e01 mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x854741b9 mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x89d007c8 mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8b78f15c mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9a521d13 mlx4_set_stats_bitmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa916ff9c mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaa27f203 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xafc6b50d mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb53ead9b mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbd39f14a mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcc43d01f mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd65c2fa1 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe06a0831 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x004a0b3c mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x02374bde mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x03972b1b mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0def9a48 mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x116d3329 mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x12c2eb76 mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x19c685ea mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x20456876 mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x33624f19 mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x35dae1ca mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3ecb204b mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x45c53926 mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4a8e5dfe mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x679b40f5 mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6fc21e3e mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x832ae645 mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9196a124 mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa02fbee4 mlx5_dev_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xad8b918c mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xae5d69b5 mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbb936ebd mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcb8bc4e9 mlx5_dev_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xce18e9d4 mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe17cf2c0 mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf723879a mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf93f9049 mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xffc6a99c mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x00824a2f hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x6c0b449a hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xa7454ebe hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xe0efe7da hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xe2a86b10 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x58b6131f irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x5e9c4caf sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x7bf54a15 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x8e511e79 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x9285fe74 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xb20b051d sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xb61d512f irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xc4c16c99 sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xf55881ba sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xfbe07d5b 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 0xb34a7575 mdio45_ethtool_spauseparam_an +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mii 0x19730f2b mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0x1d44596d generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0x3ee8a8c5 mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0x712cb413 mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0x7bfe80c7 mii_check_media +EXPORT_SYMBOL drivers/net/mii 0x87156436 mii_check_link +EXPORT_SYMBOL drivers/net/mii 0x963bba51 mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0xd4c1bd99 mii_nway_restart +EXPORT_SYMBOL drivers/net/ppp/pppox 0x26d634af register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0x80830a6d pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xf8ef5df3 pppox_ioctl +EXPORT_SYMBOL drivers/net/sungem_phy 0x023ef5cf sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x08f96760 team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0x23a6d473 team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0x98bf4a95 team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0x9f9233ae team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0xa50eaadd team_options_register +EXPORT_SYMBOL drivers/net/team/team 0xa5151473 team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0xa85ea48a team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0xe61d7c13 team_mode_unregister +EXPORT_SYMBOL drivers/net/usb/usbnet 0x3d2858c8 usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/usb/usbnet 0x5788b07a usbnet_link_change +EXPORT_SYMBOL drivers/net/usb/usbnet 0xd0fe1a0e usbnet_manage_power +EXPORT_SYMBOL drivers/net/wan/hdlc 0x16133f6a attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x22e59158 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x49625433 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x7763a4c3 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x8603676e alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0xa33f7fc5 hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0xa4186dd8 unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0xae9e5491 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0xccda0fe7 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0xe2a191e1 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xf3dbd600 hdlc_open +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x5be7b1b6 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x1a45e66d reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x549aeb54 stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xfee50562 init_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x1a21cd9d ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x3f357502 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4cdeee41 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4e2481d5 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x51238f11 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x53358ce3 ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x80e6c260 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x9d636c26 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa6a17e3a ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xd8271029 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xf94229fe ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xf9d91ec2 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfffd27cb dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x26735704 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x337bc187 ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x3651efea ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x5d20a88c ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8246be6c ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x895f9dc2 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x97682568 ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xaf096710 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xdb5caa09 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x0199ec46 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x0afd441f ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x0e48dd7a ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x24d44caa ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x27cf1694 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4756495b ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4c6ddcb4 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4e1380ee ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x55bdf15d ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x57252983 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x67c99410 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb2a869c9 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb94fe58c ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xf9ae9449 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x51daea49 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x6b9e1b80 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa53739c3 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 0xe5055c8e ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x044757f2 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x048bebba ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x05ef2f6c ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x07bd22a7 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0b3f9068 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0b9247d9 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0efac902 ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x17bcb594 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x195fca63 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1dfeb843 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1f2b17b4 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2032382b ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x24b33d89 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x24b48453 ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x26670205 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2763bc9c ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x277d2a8a ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x28d99057 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2b0a972e ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2bd68319 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2c67c6bc ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2d707a4c ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2ff7f39e ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x304a3000 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x310c20d8 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x32f43120 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x35c83235 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x361ddef1 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3e6a38fa ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3f533dee ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4076399d ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4139fbd8 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x420dffc5 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x47516b32 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x482c21f1 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4fde07af ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x527c6fed ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x532e7281 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5679407b ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x57a83e73 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x586c20d0 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x59304acd ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5aa9828f ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x60aa7ed6 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6b1f987e ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x70152f5c ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x74035cdf ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7563afe0 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x77039bcb ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x77215b33 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7be77458 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7c440e37 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7c5531d3 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7d4b287e ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7ffa562a ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x87dd92a7 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8a6126e3 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8a89c7e1 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8b55d84c ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8c04c65d ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8d52bb9f ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8e7ccf3f ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8eadca04 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x90b2dd52 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x91634ddb ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x95ae676b ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9662f203 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x97d50d68 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa0700798 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa09da552 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa19e3a1b ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa37dcefe ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa588fc59 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa64c0d81 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xab202bab ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb360248e ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb41d390e ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb75da8a6 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xba0e514f ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xba157c08 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbea16f2b ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbfa29fbd ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc73746ff ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcae9895f ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcaf1f576 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcf0cc566 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd3ffe589 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd73c1296 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xde8c63ed ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdf0a6eba ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe13e6851 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe17899ad ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe25b83ab ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe5a46457 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe5c9d94b ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf6b1bb52 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf73e1070 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf7960ba0 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/atmel 0x4e70ee4c atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0x5d68874e init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xd8b87aa7 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0xb86ccbc4 brcmf_sdio_probe +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0xe122e05e brcmf_sdio_remove +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x10ecefb1 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x11304e86 brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x25f08cae brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x2dc227f8 brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x35de3c70 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x45be11b0 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x6c02eaed brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x6c40c6bf brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x70125888 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7fa3370b brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xccc520c8 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xce2ccb79 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xcf58d3bb brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xe22aafc6 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x04c8fdd8 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x15f7b4f5 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1723ac32 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x20c38713 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x27e9d8f2 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3e7e3fa4 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x40992c75 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5a66a67b hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5cb351a1 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x662ee3f6 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x76c21438 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7bd5126a hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7d47a88e hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x92b79d9d hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa897cfcd hostap_get_porttype +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 0xbf24af58 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc161feb4 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc3f8766d hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc5ff310f hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd7e010db hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xdfb95773 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe49d3436 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe51cde97 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe95a38af hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xef0bfc16 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xef7a8a25 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x03ee0c13 libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x09c463a5 libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1055ccb6 libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1ceabccb libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x233957ca libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3751b5b2 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3bbfefe4 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3c765dab libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x48e17e1d libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x56f82154 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5e98ceec libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6464154a libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x7f1db803 free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x92d4625b libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x9cc177d2 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb6df6bb7 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb8e4973f libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc0e74d5e alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xebaf278b libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf0531576 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xfaf5b790 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x00cee1b1 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x00d15ba7 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x03edd603 il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x060fc344 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0d1071cf il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0e0f1092 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0e9094e5 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0ea5724f il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x11a5ffd2 il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1799cd1c il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1c970234 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1dceef71 il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1ebb0ea6 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x203db83a il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x21b32269 il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2d8a9a5f il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2ebe4192 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x309591e1 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x32538368 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x33743a31 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x34225cc3 il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3c83fd04 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3db0259a il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3fc50ee7 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x41a309ac il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x42cf22bc il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x445f03d7 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4995f0ed il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4a0b2bc4 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4b446052 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4df013bb il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x51757104 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x52474bbf il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x57c40a2a il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x605cc07f il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x61401eb1 il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x63d0830d il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x66ccc2bd il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x71fafb18 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x73f2aa33 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x75729108 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x77025710 il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7802ef7e il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x78baa36a il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7917b825 il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7d6b909d il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7dcb074d il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x89aa4ee5 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8a130fba il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8cc96e5d il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8e192d56 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x924f8a6b il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9994260a il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x99956067 il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9b975894 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa1b85f20 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa5100f72 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa56f6781 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa76d7c8c il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb030a2bd il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb27efbb3 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb43323e5 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb5c66cc5 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7e22685 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbb4b1ecf il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbd5d6ede il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbf9039be il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbfcd2e8b il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc4519573 _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc7bf2ef2 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcafe1bc4 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcbb2c8c8 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcbe1fc63 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcd40bbaa il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcd4fcb39 il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcfe29511 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd0a7abf5 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd0fa4746 il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd21dbad4 il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd25a3bfc il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd5128d7e il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdaddfc2e il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdcbe5771 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdf9e7b55 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe0ef9bc9 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe28a0746 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe502d2f4 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe5b32619 il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xea096152 il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xebaea403 il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xed102d66 il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xedf59421 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeef3b96d il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf09e62c8 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf24f01b9 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf35f8be4 il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf671e9f6 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x08dd8699 __tracepoint_iwlwifi_dev_rx +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x0c50fa2b __tracepoint_iwlwifi_dev_tx +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x1ecc5465 __tracepoint_iwlwifi_err +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 0x675bcb86 __tracepoint_iwlwifi_info +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 0x8de37664 __tracepoint_iwlwifi_dbg +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x954eb7a7 __tracepoint_iwlwifi_crit +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 0xe2dcc8de __tracepoint_iwlwifi_warn +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xf9ec6bdd __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x0b1d18e4 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x2777aedc orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x37cf6948 orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x57c8a106 orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5dea5bf1 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5f2f700d __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x674f177f orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x6a78436c orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x6d389ba1 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x98ef35d0 orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x990e969f orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xa13d9d2c orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb06db7dc orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb27eb862 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc3710a66 free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xe065453f orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xf2c0e54d __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/btcoexist/btcoexist 0x45dd5283 rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x029d9f40 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x02aa15ec rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x07b5a270 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x178c7a0b _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1d093ee2 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x21ddc90a rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x22a16cea _rtl92c_phy_dbm_to_txpwr_Idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x231aca1d rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2e58a2b0 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2fdd6404 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3b24f783 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3bc68b49 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3f1edd2c rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x42dd1e53 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x44269f90 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x566bda80 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x573d805a rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x625e1c1b _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x62d0d003 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x63ed7152 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x68898e2c rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7689ffff rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x795de252 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7a806465 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x80adb659 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x86ecd652 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x87c8a4e9 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x881e0040 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8fb05f83 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x960c2eb0 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9e42ecc6 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 0xb505df1b _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb98efdd0 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbf283bfe rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc1ca9693 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc23289db rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcea090ff rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd2f1e138 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd5eeac56 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdca6b663 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe8c71341 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0xa93ef5b2 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0xf5c9ecbe rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x3345b577 rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x35cc4386 rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xa89d05f2 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xf255d1c8 rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x35a74fe4 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x36354f51 rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x3a685610 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x3d892053 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x511aa8d3 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7c9b85b0 rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x834f11c1 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x88b786fa rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xaea385ae rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb339604e rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb52478fc rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc594f38c rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc858d42b rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xca56ee24 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xdfb6dfc7 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe0c36269 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe88d66b0 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe96641bc rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf29699ab rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf615f6d7 rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x349509ad wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x42bae563 wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x61f02679 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xe090966b wlcore_tx_complete +EXPORT_SYMBOL drivers/nfc/microread/microread 0x381dce5e microread_probe +EXPORT_SYMBOL drivers/nfc/microread/microread 0xceb05c0c microread_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x4d69bf9d pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xe361a82e pn544_hci_remove +EXPORT_SYMBOL drivers/parport/parport 0x0a09d526 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x105c5caa parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x1f231264 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x216d020f parport_read +EXPORT_SYMBOL drivers/parport/parport 0x2e8c7560 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x34c2c51c parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x34f93c24 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x352979cc parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x3d670b5b parport_release +EXPORT_SYMBOL drivers/parport/parport 0x4227a809 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x42858fb6 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x44bfa97a parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x636fe32a parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x6b8c2f75 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x6e79ef30 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x6e7f3804 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x79af6782 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x7c96c760 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x7f629641 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x9e8c538b parport_claim +EXPORT_SYMBOL drivers/parport/parport 0xa345abc5 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xab2e1804 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xadd6ece5 parport_write +EXPORT_SYMBOL drivers/parport/parport 0xb08d6a71 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0xb160a878 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xb7f79360 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0xcb2bdd45 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0xd07aef04 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0xdb2215de parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0xef5fab64 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport_pc 0xc86d6107 parport_pc_probe_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xe1fbfda9 parport_pc_unregister_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x091fc5e2 pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x0a60bc9f pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x28ad8acf pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x5ba09f50 pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x72b4e148 pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x73755199 pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x908d6165 pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x9427fdde pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x9d91629c pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa5abebc5 pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa9011bb8 __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xaeb57613 pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xb0025948 pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xb466a025 pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xbfe7f55f pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xca6f3c3a pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xdd6439b5 pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe90db8fa pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xeea6a0f2 pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x08ced9d8 pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x1039c201 pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x29f69e4a pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x3134895f pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x4861504a pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x86a78dcf pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xbaf045c5 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xd9439be4 pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xedb6dba4 pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xf7f29676 pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xfbe41c99 pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x30ba8c80 pccard_nonstatic_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x66e562d8 pccard_static_ops +EXPORT_SYMBOL drivers/pps/pps_core 0x02324245 pps_register_source +EXPORT_SYMBOL drivers/pps/pps_core 0x1b73f3b7 pps_unregister_source +EXPORT_SYMBOL drivers/pps/pps_core 0x9941bf88 pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0xd262ee88 pps_lookup_dev +EXPORT_SYMBOL drivers/ptp/ptp 0x27010f3b ptp_clock_unregister +EXPORT_SYMBOL drivers/ptp/ptp 0x3cb50f46 ptp_clock_event +EXPORT_SYMBOL drivers/ptp/ptp 0x4131e69a ptp_clock_register +EXPORT_SYMBOL drivers/ptp/ptp 0x62c20169 ptp_clock_index +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x1bb7b793 rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x55af2e12 rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x9be1be4b rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xb5229c3d rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xbe7dd9b7 rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xc8a77488 rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xf8f2c3e3 rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xfbec3c40 rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xfd3fb340 rproc_boot +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x1af32057 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x35c9ad4b fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x3a9c01a1 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x5e26c8dd fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x644ea339 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x70f7a2ec fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x99f8525f fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xa11a1398 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xae2e5cd0 fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xc6e37a7a fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xd7ac85fa fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xdf3d9ba8 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0008e9db fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x03525ba7 fc_change_queue_type +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x047abb8c fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x075210df fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x17eaabd2 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1a6bb542 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1ca1bf5a fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1e33302a fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22439ca2 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x25d62d99 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2681070e fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2d317860 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2fb2df73 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3bfa425d fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3ddaefa7 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x42e7c4a4 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4ae88b83 fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x600d1af5 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x60bec10a fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x60f46a23 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x660e52ff fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6a9b6b0a fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6b1bfdd8 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7f216e08 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8089adcf fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x81242857 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8d99593e fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x904cf404 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9200bb72 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x99a46678 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9af24e6b fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9b06a23d fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9b8e3a8b fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa3ce4c26 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xac715159 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb29da91a fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb40a7218 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb4c9cc1f fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb5fa5da7 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb6c41c8d fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb7f003b9 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbaa60d60 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc1a0d7d4 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc792c39a fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcb6a4ac9 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcf404d03 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd618e94d fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf018c2c8 fc_change_queue_depth +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf2cb37f1 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf4ee3881 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf6104fda fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfe3b905d fc_disc_init +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x05826bc7 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x2ae0b4d0 sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xac9e8a75 sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xbe70dc79 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 0xa0271d15 mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x15f972d9 osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x27db92e3 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2aa91ad8 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x30fdad57 osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3dc40906 osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3e539483 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x411d12a5 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4169284d osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4c6bc412 osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4c9d1c2f osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x56a044fe osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5a67c22f osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5ebab040 osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x637286c7 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x68fb640a osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6f3550c4 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7cd45f0e osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x817a68e5 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x86c470fd osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9b42e47f osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa4c69b19 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa69aa622 osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb4dd6e9c osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb4f5177e osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb64b1f61 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb8c45509 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xbdbe9491 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xbec9aebd osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc269fffe osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd42734ee osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd7492b8d osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd7600421 osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe3e07692 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xeb39172f osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xec8af087 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xfbfec907 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x7c017acb osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0x8afc84b0 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xaf62cbbb osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0xd4ad8ef9 osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0xde917414 osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0xe6c98188 osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x006ab514 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x25281740 qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x3e4f9c9d qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x504c2f3f qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xac74c04c qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xb6f2e445 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xd39b1754 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xd9618b51 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xdf6ab3b7 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xe969a0d8 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xf057fef5 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x01606df6 qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f5a4ef1 qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x45f87b88 qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x47156cb4 qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x98f1b812 qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xd0699325 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 0x570b877a raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0x94d67d04 raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0xdc9124a4 raid_component_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x1d637693 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3ff3f435 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x44e61efa fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x4878c5cd fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x4d8067a0 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x5291c020 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x56002528 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xa2e6b365 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xcd6b9c97 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xd96c0e0c fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xea17c7ea fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xf53ef205 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xfe695386 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x03f8de45 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0c81c17d sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3574d289 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4467dff3 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x46fc4472 sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x49559863 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x523fc70c sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x52a4eb6b sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x56a4124f sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5a606f08 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5b38176a sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5e9c74ae sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6666ae5b sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6a3253fd sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6d1c2416 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x76850354 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa2838111 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc9c53248 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd80966fb sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdd463fb1 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe3316afe sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe64ff818 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe6ee7cb2 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe9ccc45b scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xedae3416 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf61ed455 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf7220e8f sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf85fefec sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x2593e860 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x54b63b06 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x72827b99 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x9ced01d4 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xf6b59cf2 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x060f052a srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x0e770957 srp_rport_get +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x5ed9bbd1 srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xd9793bc3 srp_rport_put +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x53cdbfb1 ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xa3dc25cb ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xa4a82f44 ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x0874a714 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x19aaa481 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x1eefd05f ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x2c77f2c7 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x55b53d55 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0x5d16de54 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x62fed5c8 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x6c20e3a5 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x7064c648 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0x8b291c7c ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xb575385f ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xb5c9262e __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xcdf6bf28 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0xcdfe6e89 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0xcf41bbf8 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0xd1bc9196 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xec42e34c ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xedeb473e ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xf1c503ba ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0xfd20b210 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0xfe4cfb94 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xbf6e508a fwtty_port_get +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xd41861c5 fwtty_port_put +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x5bc7e9e8 adt7316_remove +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xdd6bf845 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x530e6596 ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xc6dc4567 ade7854_probe +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0264d470 lnet_extract_iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0363b57a lnet_copy_iov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0bce7eef lnet_counters_get +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0f9683ba lnet_set_reply_msg_len +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1366b7ac LNetSetLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x13cf0e66 lnet_copy_iov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x19670622 LNetNIInit +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1b191752 lnet_msgtyp2str +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 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 0x41f5cdc0 lnet_copy_kiov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x473ad33b LNetDist +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x4784c8c4 lnet_copy_kiov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5811a721 LNetInit +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 0x6c00ebe1 lnet_unregister_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x6f7624d0 the_lnet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x6f7be171 LNetEQGet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x71d94243 lnet_kiov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x722c76e5 LNetMDAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7d59a7fe LNetMEInsert +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x85120fd2 lnet_set_ip_niaddr +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x854ab844 LNetEQWait +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x8a3064f2 LNetSetAsync +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x8aafe02d lnet_notify +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x915537ef lnet_register_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9de986d3 LNetEQAlloc +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa3d61f8d lnet_iov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa8c2760b LNetFini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xaa414970 LNetMEUnlink +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xaa9b477e LNetMDBind +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb75f7953 LNetEQFree +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xba5566d2 lnet_acceptor_port +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xba590db7 lnet_finalize +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xbf0760a2 LNetMEAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xc6904cea lnet_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xcf31a6e4 lnet_extract_kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe71847a9 lnet_create_reply_msg +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf1b316bf LNetSnprintHandle +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf6feee01 lnet_net2ni +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xfdeab77c 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 0x375e6f8d LUSTRE_BFL_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x479fe154 client_fid_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x5eb934d5 client_fid_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xa27eade1 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 0xc00b8a16 seq_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xc997a02f LUSTRE_SEQ_SPACE_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xd0aa1230 seq_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xde94816d seq_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xecee2727 LUSTRE_SEQ_ZERO_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xfc7f588e seq_client_alloc_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x1bff8aba fld_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x1d2b220a fld_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x241eeabb fld_client_add_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x333b8d8a fld_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x89686bfa fld_client_proc_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xd71b8364 fld_client_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xdc901099 fld_client_del_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 0x03387ca6 cfs_curproc_groups_nr +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x04d3ce6a lbug_with_loc +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 0x12426266 libcfs_run_lbug_upcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x12c54b77 cfs_hash_findadd_unique +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x15565c7f cfs_cpt_set_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x177c88f3 libcfs_sock_read +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 0x1a6dbfe9 libcfs_sock_abort_accept +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1d41c4c0 cfs_hash_bd_lookup_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1d5a3928 cfs_timer_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1e8cdb47 cfs_race_waitq +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x24a10b3b libcfs_sock_getaddr +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 0x2b1e0458 cfs_get_environ +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 0x30986343 cfs_range_expr_parse +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 0x3749ea63 libcfs_sock_write +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 0x3e2d9c20 libcfs_sock_setbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3e5e7727 cfs_hash_rehash_cancel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3ea730c0 cfs_gettok +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 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 0x41ab33a1 libcfs_ipif_free_enumeration +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 0x44f07cfc cfs_pause +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x468bace1 cfs_hash_rehash_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x47fdb4d1 cfs_timer_is_armed +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x48f163c6 libcfs_str2anynid +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 0x5d3be65a cfs_crypto_adler32_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5d73c3e3 cfs_expr_list_free_list +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 0x62f56738 upcall_cache_init +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 0x66136d2d cfs_timer_arm +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 0x6cc32f50 libcfs_sock_listen +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6dfa9ea1 cfs_crypto_adler32_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6e6af71c current_is_32bit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6f928e1b libcfs_debug_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7190502f upcall_cache_cleanup +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 0x75161168 upcall_cache_flush_idle +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 0x76563286 cfs_hash_debug_str +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 0x7a3d49ae cfs_expr_list_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7a47b94d cfs_hash_size_get +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 0x7c7986cf waitq_wait +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 0x8061518a libcfs_sock_release +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 0x841679dd upcall_cache_get_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x851caad0 libcfs_sock_getbuf +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 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 0x8f12bb52 libcfs_log_goto +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8f45f10d cfs_init_timer +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 0x996d9bbd cfs_hash_debug_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9e420643 cfs_restore_sigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9f82f712 cfs_trace_copyout_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa1cbf250 upcall_cache_flush_all +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 0xa9dc74e2 cfs_trace_copyin_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9eae690 cfs_str2mask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xaaf59b75 cfs_cpt_set_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xab887583 init_waitqueue_entry_current +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xad019238 cfs_str2num_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb00dfd91 cfs_hash_dual_bd_findadd_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb0d0aed6 libcfs_kkuc_msg_put +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 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 0xbb972619 proc_call_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbb9cb508 cfs_curproc_cap_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbd5d492e cfs_timer_init +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 0xc2911d96 cfs_expr_list_match +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 0xc3eb614e libcfs_ipif_query +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc47433a6 cfs_capable +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 0xc7818c30 cfs_crypto_hash_update_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc9b78bb4 upcall_cache_downcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcb1a6c46 libcfs_sock_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcb385db9 libcfs_debug_binary +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcbab8493 schedule_timeout_and_set_state +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 0xd6f1fc60 cfs_strncasecmp +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd791228c libcfs_sock_accept +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 0xdffc951d cfs_timer_disarm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe3bf6897 cfs_percpt_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe5645032 libcfs_kkuc_group_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe6555032 libcfs_ipif_enumerate +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe7b54314 libcfs_arch_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe94553b9 upcall_cache_flush_one +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 0xedf3a25a cfs_timer_deadline +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeed48ba7 cfs_hash_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xefbf6d86 upcall_cache_put_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf2c02048 cfs_cpt_bind +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 0xf8efb8c5 waitq_timedwait +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 0xff0f98a6 libcfs_debug_vmsg2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x175a5edb ll_stats_ops_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x3b6379f2 ll_direct_rw_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x5760a743 ll_osscapa_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xc124508e ll_iocontrol_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xcd3cde92 ll_iocontrol_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x27095531 lov_stripe_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x2860c01a lov_device_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x3e4df16a lov_lsm_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x773f1122 lov_lsm_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xa288d560 lov_stripe_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xe788fde1 lov_read_and_clear_async_rc +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x1fa39012 push_ctxt +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x24e1671d lprocfs_counter_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x3bcbdc4b lprocfs_stats_alloc_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x4d8d6dfa lprocfs_counter_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x7835b14f lustre_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x84b67477 l_dentry_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x8553b369 obd_memory +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xa26a079e fsfilt_put_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xb4f8ee63 lprocfs_read_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xb87bb126 fsfilt_register_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xc68e06ae fsfilt_unregister_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xddfd4f66 pop_ctxt +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xfa25d0e1 fsfilt_get_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x14a47f31 it_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x9c22b84f it_open_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0xb57d8447 it_set_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0xf46a886f it_clear_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mgc/mgc 0xdc287f95 mgc_fsname2resid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0056b552 cl_page_is_vmlocked +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01665e34 class_parse_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0173def5 cl_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01b04190 lustre_process_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01b8e508 dt_store_resolve +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0281991e lu_site_init_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x035852d0 lustre_swab_llog_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x053cda0e lprocfs_rd_server_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05476118 lustre_end_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05692ce1 lu_object_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x057f6d4b class_find_old_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x061ec967 dt_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x072e0407 lustre_in_group_p +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07aa68bb lustre_swab_lustre_cfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0836daca lprocfs_register_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x083942ff class_del_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x08e78177 lprocfs_free_per_client_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0a1f24dc cl_io_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0acbe303 dt_txn_callback_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c33d778 class_register_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0cb758dd cl_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d0d0ae6 obd_export_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0e2b8b83 lu_context_key_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0e387b4c llog_init_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0e86ede5 lu_kmem_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0fe91547 obdo_to_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10298e15 local_file_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10864792 cl_lock_ext_match +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 0x11cf6a89 cl_unuse_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x123e5b5b dt_directory_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1271b299 lu_object_find_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x12e1d4b0 lu_env_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1342e676 cl_page_make_ready +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x14093dc6 lu_context_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1491dc30 lu_context_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x14aed443 cl_req_page_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x15a2893c class_exp2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x15caeea8 cl_conf_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16df2588 class_conn2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x17260880 obdo_cpy_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x174f45a2 obd_export_evict_by_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x175f056d cl_page_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x17dc6ad2 llog_cat_init_and_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1833010c lu_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1893c9c3 cl_io_sub_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1899c866 llog_open_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1a3a6554 cl_lock_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1a43f760 cl_io_read_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ba91341 lu_site_purge +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1bf029bf cl_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1c1a287d cl_req_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1c861c3a lprocfs_wr_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ca61a49 llog_cat_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1d34140d cl_env_nested_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1d728904 lu_object_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1d99b98b cl_page_vmpage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1dae31ca lu_site_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1db4e830 lustre_register_client_fill_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1dea6777 lu_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2086b665 class_export_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x20e80069 cl_page_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x211e36b3 lustre_idmap_lookup_uid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x221826f1 class_parse_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x227f3a54 lu_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x23867279 llog_declare_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x239ec7ff cl_lock_closure_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x23f11257 dt_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x243ce8c1 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 0x26b3fe1d cl_page_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x26c676a6 lu_device_type_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x275cdc7a cl_env_reexit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x297cf5e0 class_handle2object +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x29da12e4 lu_context_key_quiesce +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x29e2c44d cl_io_is_going +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ae1cd79 kuc_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b459ae9 lprocfs_rd_u64 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b93c19c cl_lock_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2d10458b md_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ed4a985 lu_object_find_slice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ee301bb lu_object_put_nocache +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2eefb9ca cl_io_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2f62a5c8 dt_record_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3059dc3a cl_page_list_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3142cfac cl_io_lock +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 0x34c2c5fc cl_page_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x35b786d4 local_index_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37ed6e4b at_early_margin +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38019042 obd_export_evict_by_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3880c27b cl_2queue_init_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38b91060 cl_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38fb0c90 class_match_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x398064a6 cl_io_submit_rw +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x39c8580f class_handle_hash_back +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a94ab5d class_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b3d8eb2 llog_cat_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3bf30f08 cl_io_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c101d9c lustre_common_put_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c421bc6 cl_page_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c9edc10 lprocfs_exp_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3cd2b0b8 cl_page_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3d314f35 dump_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3d892b1b dt_txn_hook_commit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3d9b5a5c cl_page_list_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3da2aa39 lprocfs_alloc_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3db27f05 lprocfs_rd_conn_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3dea5125 obdo_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3eab7bfe LU_BUF_NULL +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3eb07243 cl_page_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3ec014bc cl_lock_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f389a54 cl_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f9d5ae1 cl_lock_enqueue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x404bd7a7 class_handle_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x41386956 lprocfs_rd_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x415f07ab cl_lock_mutex_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x421872d1 cl_lock_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x423f6ce4 cl_env_unplant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x434f157e cl_env_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44694ada cl_queue_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44e41abb lustre_posix_acl_xattr_filter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x452f559a lu_buf_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x45869a46 cl_lock_disclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x45ccff03 lprocfs_obd_rd_max_pages_per_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x46253618 cl_use_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x46753f30 lustre_register_kill_super_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x46c51158 lprocfs_nid_stats_clear_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x46daaf00 cl_object_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x474ed5bd lustre_swab_ll_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x477bdc5a lprocfs_free_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x478580a5 capa_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47a6d8c2 lu_device_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47b35f7d statfs_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x481213ab cl_lock_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x48c421c0 cl_page_find +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 0x49c0de5d class_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ac58713 obd_connect_flags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4bf356ca lustre_idmap_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c190aad lprocfs_find_named_value +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c249987 lu_object_assign_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c4c700b obd_alloc_fail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4cbd85f0 cl_2queue_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d13458b kuc_len +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4de36f3c lustre_idmap_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ed490a6 cl_object_attr_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f4ab614 cl_object_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f515d0f cl_req_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f868cca llog_declare_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x501e225c llog_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50c7fc36 ptlrpc_put_connection_superhack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x51eb7ef8 class_config_dump_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5205950b cl_lock_is_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x52218eb1 cl_page_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x52338138 lu_object_locate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x542f04d8 lprocfs_alloc_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54700b1c capa_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54885f87 ldlm_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x55188b3e lu_dev_add_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x556b5f50 class_uuid2obd +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 0x573d3d9c llog_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x582b013d dt_quota_glb_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x58d2964b local_index_find_or_create_with_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x591e50b5 cl_page_gang_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5953bbeb cl_sync_io_note +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5991e072 cl_unuse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x599ad452 cl_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a20d896 obd_memory_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5aa0c877 dt_declare_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b8daa8c obdo_to_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bc022c5 lprocfs_dt_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5c00328a lprocfs_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5c5396bf cl_2queue_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d226807 cl_req_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d34ae0d cl_lock_mode_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d989a9b cl_req_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e5c83c1 cl_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e690ceb local_oid_storage_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e7c60ca cl_lock_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e93341f lprocfs_oh_sum +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ed188a9 lprocfs_add_symlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5eefdc3c class_conn2export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5f5250f6 lu_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fe97b73 block_debug_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ffe70c8 cat_cancel_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x601c299d llog_cat_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x60eee60d lu_env_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x61d34a89 cl_page_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x624ffe24 lprocfs_counter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x62633091 lu_env_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6270b43b cl_page_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631a518d mea_name2idx +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631fd7b9 lustre_ext_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63ab49a5 llog_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63c32c80 cl_object_attr_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6480a467 class_import_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x648a7f66 lprocfs_free_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6554f835 lprocfs_wr_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x656e6536 llog_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x65b31414 cl_page_list_splice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x66545491 class_detach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6673b594 lu_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x66ebf3dc class_connect +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 0x67571eeb lprocfs_single_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x677fd7f9 proc_lustre_root +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67977b42 lprocfs_remove_proc_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67a90622 la_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67dc223a lprocfs_remove +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x684b02f0 dt_index_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6853601d cl_page_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6890d175 lustre_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x68ea0903 cl_lock_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x68fdf95a llog_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69c42114 at_min +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69d7c4a9 cl_io_commit_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6a781f50 lu_context_key_revive_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6a9362a8 lprocfs_init_mps_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6a9e8073 cl_lock_nr_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6abb0f73 cl_lock_descr_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6ac37ff2 cl_io_iter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6b2f28e9 cl_type_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6b8ae8fd lprocfs_rd_num_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6be5ee2a lprocfs_rd_timeouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6c438ad2 llog_osd_put_cat_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6dbe5f66 lprocfs_rd_connect_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6ebace56 obdo_from_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6fd072fa lprocfs_rd_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7047d0be cl_io_submit_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x705490e1 cl_page_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x70f3fc76 cl_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x711b2160 cl_io_loop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x721b5066 cl_page_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72885fd7 cl_env_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x729dcd37 class_find_client_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72a6e6bb cl_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72ddee4c obdo_le_to_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x736a2fc7 lu_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x742559b1 class_unregister_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x742b8501 cl_page_flush +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 0x75654891 cl_io_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x756a77f3 class_parse_nid_quiet +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x75cc0591 class_manual_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x75f2aa86 lprocfs_rd_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x776277bb cl_page_list_del +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 0x786714ed dt_index_walk +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x789796a1 obd_zombie_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x792dbdbc cl_lock_mutex_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x79578900 lprocfs_add_simple +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x796df62f lprocfs_free_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x799a4131 cl_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b425e14 class_export_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b4fc57b at_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b6fdb80 cl_locks_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7ba5182d class_import_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7bc12d2a lprocfs_init_ops_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7c5682f1 lprocfs_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7c9efe5f local_object_unlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7cde8185 cl_lock_discard_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7d06cbd9 llog_cat_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7d12c43b dt_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7d9a9e80 dt_txn_hook_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7de011c3 lprocfs_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7dea71d1 lu_env_refill_by_tags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7e9736e4 lprocfs_rd_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7ebc70b0 cl_io_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7edcafa0 cl_env_reenter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7eedec46 lu_dev_del_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f34c9c1 class_fail_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f71628d llog_osd_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f7d7cd9 lu_buf_check_and_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fad7291 raw_name2idx +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fe5561a obd_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8001328e llog_cat_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x800ce86f local_oid_storage_fini +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 0x80dea017 dt_locate_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81742d89 obd_ioctl_popdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8227c33c cl_lock_get_trust +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8267223a class_config_parse_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x831f656c class_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x842ccd42 llog_exist +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 0x85456eb9 cl_page_list_move +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85c35173 dt_txn_hook_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x863164e1 local_file_find_or_create_with_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x87ec531f cl_wait_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x881065ca cl_lock_enclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8843545b lprocfs_rd_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x88897506 lu_site_init +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 0x89127af2 dump_lniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x895ab76a dt_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aa2c358 lprocfs_dt_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b078e68 cl_2queue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b2ec318 lu_object_anon +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 0x8bbdb3e8 llog_cat_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8c2dcedf llog_cat_declare_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8c34e0c5 llog_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8c3ee584 cl_io_iter_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8c75b422 cl_page_own_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d5650ab cl_offset +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 0x8f67314c obd_dump_on_eviction +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90196ac6 lu_context_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90375c11 cl_lock_mutex_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90e06b06 cl_io_lock_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92231f30 lprocfs_seq_create +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 0x93d996f1 lu_context_key_degister +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x948dbafe class_num2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x94b1a868 obdo_from_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9505c895 lustre_idmap_lookup_gid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9512d507 lustre_acl_xattr_merge2posix +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95440e38 lprocfs_rd_filesfree +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 0x95ec998a lustre_groups_sort +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x963438f7 dt_lookup_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9713ee5f class_process_proc_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9767adce class_uuid2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97848cf2 lu_object_add_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97d03783 at_history +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97ff767b cl_object_glimpse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x983168a4 lprocfs_alloc_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x98530c4c lu_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9a9267a7 cl_env_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1ed9d8 obd_jobid_var +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9db63ec7 lprocfs_seq_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dbb17b6 lprocfs_dt_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dbc93e6 lu_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dec4353 lu_kmem_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9fb1795b lprocfs_rd_kbytestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa04b5c21 llog_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa21c5ea1 obdo_from_la +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa23fd079 lu_device_type_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa3230711 cl_page_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa3b62d7c lu_context_key_revive +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa3ba9b3c lprocfs_exp_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4488886 cl_page_list_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa48c4a30 lustre_idmap_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4a68f4b cl_2queue_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa513f7e4 lustre_groups_from_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa52a9dec llog_obd_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa54c62f7 dt_store_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5b26190 cl_lock_hold_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5fb234f lprocfs_write_frac_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa60c0a0e lu_context_key_degister_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa674c241 kuc_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa6e926ea lprocfs_add_vars +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa740d92a llog_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa79383b3 cl_page_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa855e242 cl_lock_hold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa21b7a0 lustre_register_quota_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa525438 class_conn2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab7e5a5c cl_page_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab89e0b6 obd_llog_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabb7b805 cl_page_is_owned +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabf45922 capa_decrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac1435ba cl_page_unassume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac7f1596 kuc_ptr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xacd4e64f class_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xae162fa4 obd_exports_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xae3b2714 dt_record_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xae4d8876 dt_version_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xae4edafa class_new_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xae8be664 class_name2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xafea8b65 cl_sync_io_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb01963a6 class_uuid_unparse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0fb9886 cl_lvb2attr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb10af69d cl_object_attr_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb19c4daf obdo_from_iattr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b89b6d class_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1e5af75 lu_ucred +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1f0e652 cl_2queue_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb228d6dd class_search_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb22a8df6 class_unlink_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb23c24e6 lu_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb2ed56a7 llog_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb362b430 cl_lock_modify +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb3f845b1 cl_page_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb402094f llog_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb41998cd lustre_cfg_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb45ec098 class_incref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4787a61 cl_io_rw_advance +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4f1a484 lu_context_enter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb503285f cl_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb59fd96b cl_page_list_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb5d7ed3a lprocfs_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb635af9e dt_acct_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6ade6f7 cl_env_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 0xb86eb80a class_disconnect_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb9b7f8b4 obdo_refresh_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb9c397bf lu_context_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba5e3261 cl_page_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba80b1ca cl_page_clip +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba985283 lustre_register_client_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbaaa8190 cl_lock_signal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbacac922 lprocfs_write_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbb7f8aca dt_txn_callback_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbb9201e8 lprocfs_obd_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbcc4887b dt_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbcee1990 cl_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbd41d55d cl_page_cache_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbda8f4fd cl_page_is_under_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf833b29 llog_cancel_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc005645f cl_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0954007 lprocfs_oh_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0b4da97 class_put_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0bf7ef2 obd_debug_peer_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0c4885e llog_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc18d06cf lu_buf_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc1e56ed7 cl_lock_descr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc2159120 dt_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc2222755 cl_object_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc2574399 lprocfs_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc272f5f3 cl_io_lock_alloc_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc3f49dff cl_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc4c8a492 llog_copy_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc545f39c cl_lock_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc6085942 class_connected_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8dbaa87 lustre_swab_cfg_marker +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xca0d066c iattr_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xca37becd lprocfs_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xca9114f4 cl_2queue_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0ab67f obd_max_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb8fa23c llog_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xccf7a8de obdo_cpu_to_le +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd7537ee get_devices_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcec4547f cl_env_implant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcedb140a obdo_cmp_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcfbb197c lu_object_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd08827c0 server_name2fsname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0ad3d9c cl_lock_at_pgoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0ebae3a obd_devs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd10aa042 lustre_swab_llog_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd171defc llog_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1b1478b cl_attr2lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1f58645 lustre_swab_llog_hdr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd302db96 cl_lock_closure_build +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd360c17d cl_req_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd40b2f39 cl_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd443a845 cl_page_list_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd70fe669 lustre_swab_llogd_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd79a7a6e class_new_export +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 0xd851ea93 class_devices_in_group +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd9504cf7 cl_lock_hold_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd9790b0a cl_page_list_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd9a7e589 obd_llog_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda073529 lu_context_refill +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 0xdad296e7 llog_osd_get_cat_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb13dce1 capa_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb3ab986 cl_lock_weigh +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdbf5d717 cl_vmpage_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdbfea62e cl_env_nested_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdc85b7cc cl_io_rw_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc40af0 class_check_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcec698d cl_lock_user_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcf8f7fe cl_object_has_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd78c0c7 lu_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdda3d949 class_handle_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xddb456da lu_cdebug_printer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde7d985b obd_dirty_transit_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde97a158 lu_context_key_register_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdeadb091 lprocfs_seq_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdef6a7ec lprocfs_rd_numrefs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf1681dc dt_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe028cf84 capa_encrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe03234ce cl_page_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe0340f0c lu_object_invariant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe06a0505 dt_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe10623af __llog_ctxt_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe1237772 llog_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe138b6a5 lprocfs_rd_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe154bca6 llog_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe1868e4f class_disconnect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe1eb49f4 cl_object_kill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe202847a llog_thread_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2e84296 class_disconnect_stale_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2eb4470 class_get_next_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe3323f5d class_handle_free_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe45e1518 class_config_llog_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe64c1a43 lu_context_key_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe6753e78 class_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7d83236 cleanup_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7d8ef0c cl_object_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8e84c32 class_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8f83d56 lu_context_key_quiesce_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe9647ae5 lprocfs_at_hist_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xea3494be cl_page_find_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeacec47c lprocfs_oh_tally_log2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeb3f388a _debug_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec76847f lustre_idmap_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec7d6b85 obd_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed27ea96 capa_cpy +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee313b1f cl_lock_extransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee68bc29 lu_session_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeecceafa cl_pages_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeeeb79fa do_lcfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef5eb5c1 cl_req_page_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef76f858 block_debug_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef7aae6f cl_io_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf01e2527 server_name2index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf04a9de8 class_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf13dac89 cl_lock_unhold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf1ac8815 lu_object_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf29b5f53 llog_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2f373b8 cl_lock_is_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2fd6695 statfs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf30f6ce5 lprocfs_nid_stats_clear_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf342d68b cl_lock_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3bb877b llog_cat_cancel_records +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 0xf5773720 lu_ucred_assert +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf60d4659 capa_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf6528620 cl_lock_closure_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7020831 lprocfs_dt_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf734b4b3 lu_device_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf795ff6c llog_declare_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7ea780b cl_io_prepare_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8728a3e class_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf874c950 dump_lsm +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf88aa20b cl_lock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8c2df92 obdo_set_parent_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf9066dac cl_page_list_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf98864cf cl_lock_state_wait +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 0xfbeedc09 cl_io_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc7f18d0 obd_pages_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfcc8dc98 class_exp2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfce4103b lu_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd3a0d1d cl_page_list_unmap +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 0xfdbfaec8 lprocfs_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfe16597e lu_ucred_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfe2cd422 capa_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfe6ba422 cl_lock_user_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff57e92d class_match_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff9d5df6 cl_enqueue_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfffc1f11 lustre_swab_ost_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/osc/osc 0x5c4940c2 osc_update_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00d95039 ptlrpcd_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x014274a8 ptlrpc_replay_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01d6ef7f ldlm_pools_recalc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x02cbe7bb req_capsule_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x02db52bd ldlm_pool_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x03c0180e ptlrpc_save_lock +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 0x06b3942b lustre_swab_lov_user_md_objects +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06e34b05 ptlrpc_obd_ping +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 0x08983525 ptlrpc_unregister_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x08bb2d27 lustre_swab_obd_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x08e19efa sptlrpc_svc_ctx_invalidate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x095587d0 lustre_msg_buflen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0a2b74f2 ptlrpc_pinger_add_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0a3130b0 RMF_MDT_EPOCH +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0a34473e ptlrpc_schedule_difficult_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0aae8f3b ldlm_resource_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ac252b2 lustre_msg_set_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ac54708 lustre_errno_hton +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0bcacb5d RMF_MDS_HSM_USER_ITEM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0c2d9c43 lustre_swab_lip_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0cf343dd RQF_LDLM_INTENT_BASIC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0d8f5405 sptlrpc_sec_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 0x127983b5 ptlrpc_recover_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x12b6f5a3 ptlrpc_connection_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x12c2fbbc ldlm_namespace_new +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14237436 client_import_del_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1474440e ldlm_pool_setup +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 0x155c4162 lustre_pack_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x159de3c3 ldlm_blocking_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15a3e4db RMF_GETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x164dd357 lprocfs_wr_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x172dc174 ldlm_flock_completion_ast +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 0x179e35f2 lustre_pack_reply_v2 +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 0x1a9a2c4f ptlrpc_prep_req_pool +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 0x1b99b08f ptlrpc_pinger_del_import +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 0x1c936547 ptlrpc_resend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d043548 lustre_msg_set_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1dc2051d RMF_SEQ_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1de9c288 lustre_swab_layout_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1e8e48a4 sptlrpc_flavor_has_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1eb2a65f RQF_OST_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ee46b51 lustre_init_msg_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ee9eb3c RQF_MDS_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2096f5b5 RQF_OST_SET_GRANT_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x20d6b82c RQF_LDLM_INTENT_QUOTA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x21733356 llog_origin_handle_prev_block +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x218a36ce ldlm_cli_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x23053b05 sptlrpc_cli_wrap_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x233790b5 RMF_OST_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x239ca8fa client_import_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2412c3cc llog_initiator_connect +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 0x2607f774 sec2target_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x265cfcc8 sptlrpc_lprocfs_cliobd_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x269554ce RQF_LDLM_INTENT_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x26e49746 req_capsule_shrink +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 0x294c5f63 ldlm_cli_enqueue_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x29b4a212 ldlm_pool_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x29e0869a sptlrpc_get_hash_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x29f7455f ldlm_prep_elc_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2a5e30e5 ldlm_namespace_dump +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 0x2c6058b3 ptlrpcd_alloc_work +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 0x2de9cb40 sptlrpc_cli_enlarge_reqbuf +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 0x2eb07e2e ptlrpc_request_set_replen +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 0x2f42108b ptlrpc_init_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f4bfa9f ptlrpc_unpack_req_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2fd2f737 lustre_msg_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x30037b29 req_capsule_field_present +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 0x318a4c57 ldlm_pool_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x322d88af sptlrpc_sec_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3261b862 RQF_OST_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3284ee3d ptlrpc_buf_need_swab +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x32ca2f32 ptlrpc_buf_set_swabbed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3357a0db client_disconnect_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 0x3797f31f ldlm_cli_cancel_req +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 0x3896ba40 ldlm_pool_shrink +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 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 0x3af8d952 ldlm_cli_cancel_unused +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 0x3c0812d4 ptlrpc_send_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c63e62b RQF_MDS_REINT +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 0x3dddb3e2 dump_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3e835474 sptlrpc_target_sec_part +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ee4579b ldlm_pool_get_limit +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 0x4070a05a ptlrpc_commit_replies +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41008cef RQF_LDLM_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41f9e703 ptlrpc_unregister_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43705ee4 RQF_LOG_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43a75d63 client_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43ab3ca4 sptlrpc_conf_client_adapt +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 0x44a04795 ldlm_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4570b450 do_set_info_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x458bda52 sptlrpc_cli_ctx_wakeup +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 0x47611441 req_capsule_server_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x476405d4 lprocfs_wr_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47f5e903 RMF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x48457013 ldlm_pool_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x48814c9f lustre_swab_ost_lvb_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x48ddbbcb ptlrpcd_wake +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x48e557a8 ptlrpc_resend_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x48e9a057 ptlrpc_register_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x498c03c5 lustre_msg_set_last_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a284b37 __ptlrpc_free_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a5a2416 RMF_DLM_REQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4ad62035 ptlrpc_start_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4b09ce4b lustre_swab_mdt_rec_reint +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4bc1903b req_capsule_server_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4c16b903 req_capsule_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4c1e3caf ptlrpc_retain_replayable_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4c5c139a ldlm_completion_ast +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 0x4f17cd22 llog_client_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f349d5a ldlm_namespace_foreach +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 0x51b21d8b ldlm_reprocess_all_ns +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x52b6ea1f ldlm_resource_unlink_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 0x537fb825 client_connect_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 0x54e8cdc9 ptlrpc_request_alloc_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x555eb7fe RQF_MDS_HSM_STATE_SET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x56483bbf req_capsule_server_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x565f0f71 ldlm_lock_allow_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5714d3b1 ptlrpc_nrs_policy_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5849aa2b target_send_reply +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 0x59ca398b ptlrpc_add_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x59e1177e ptlrpc_invalidate_import +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 0x5c6a3a83 RQF_SEQ_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5caae213 ptlrpc_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5d0b0e05 ptlrpc_request_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5d99200d ptlrpc_deactivate_import +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 0x5ebcc0dd req_capsule_server_sized_get +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 0x60421f3b llog_origin_handle_cancel +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 0x60d2c315 ldlm_lock_fail_match_locked +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 0x62192cf8 dump_obdo +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 0x63b7cdee ptlrpc_set_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x647b6e48 lustre_swab_ldlm_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x64a204b3 ldlm_replay_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x64de613a req_capsule_server_sized_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x64ecceb9 sptlrpc_cli_ctx_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x653723dc RMF_LOGCOOKIES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x654d6f9c ptlrpc_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x657b00b7 ptlrpc_init_rq_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x65d53264 client_import_find_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x661b3458 ldlm_resource_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x67a264f5 ldlm_resource_foreach +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 0x6949fe24 ldlm_namespace_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 0x6a98eacc ldlm_lock_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6ab29513 ldlm_prep_enqueue_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c005886 ptlrpc_unregister_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6d22892e sptlrpc_cli_ctx_expire +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6d648f62 llog_origin_handle_destroy +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 0x6dde76f3 lustre_free_reply_state +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 0x70cc8a03 ptlrpc_activate_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 0x7287b6c0 ldlm_pool_get_lvf +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 0x752409b8 sptlrpc_gc_add_sec +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 0x76e355b3 ptl_send_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77571cc6 lustre_swab_ost_body +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 0x7990ba86 ptlrpc_prep_bulk_imp +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 0x7c292d04 ldlm_destroy_flock_export +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 0x7daa11fc ldlm_namespace_free +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 0x7e256425 sptlrpc_sec_destroy +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 0x7f622ac7 ldlm_blocking_ast_nocheck +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f6d2357 lustre_msg_is_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7fc15143 ldlm_cancel_resource_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80a9e8c3 lustre_msg_get_last_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80c3c86c ldlm_namespace_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80ecb4e3 RMF_MDS_HSM_CURRENT_ACTION +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x814caa64 ptlrpc_abort_inflight +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x817d7f1f lustre_msg_add_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x81b44670 ldlm_register_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x826d3c4f RQF_LDLM_GL_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x835f3404 ldlm_lock_fail_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x837efb00 RMF_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x83d939f5 ldlm_init_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x846752f4 sptlrpc_register_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x84b45ebc ldlm_cli_cancel_unused_resource +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 0x85b3cf44 sptlrpc_gc_add_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85b7f6a0 ptlrpc_service_health_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85eecf67 sptlrpc_get_hash_alg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8619cf8b ldlm_lock_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x862138b2 lprocfs_wr_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x863db6eb RMF_HSM_USER_STATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x86cdbf17 ptlrpc_pinger_sending_on_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x86e20098 ptlrpc_disconnect_import +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 0x87ff2afb ldlm_pool_fini +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 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 0x8d38ca54 llog_origin_handle_read_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8d4658dc ldlm_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8d77ea75 lustre_msg_set_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8d9c1553 ptlrpc_req_set_repsize +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8da3fca7 lustre_msg_add_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e30db4b ldlm_init_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e9abe4d RMF_GENERIC_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8f0aceac RQF_MDS_HSM_ACTION +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8fec0451 lustre_msg_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x919c4ce3 RMF_OBD_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x91cf58d3 RQF_MDS_PIN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x92548c04 client_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x92778441 ptlrpc_prep_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x927fa254 sptlrpc_gc_del_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9366eeb2 ptlrpc_request_bufs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x937b1ee0 lustre_swab_mdt_ioepoch +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x937d2c0b ldlm_cli_enqueue_fini +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 0x99f143fd sptlrpc_unregister_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a258886 RQF_MDS_GETSTATUS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a32d6fa ldlm_cli_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a6f2f6d lustre_msg_set_opc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9abec609 ptlrpc_mark_interrupted +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b04f81e ptlrpc_nrs_policy_unregister +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 0x9fdd20ea ldlm_lock_downgrade +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa015795f sptlrpc_get_bulk_checksum +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa10f0d3d RMF_UPDATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa13a5961 sptlrpc_conf_target_get_rules +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa163f4c3 dump_rniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa17ebd06 llog_origin_handle_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa1833a51 ptlrpc_queue_wait +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 0xa3692aae ptlrpc_lprocfs_register_obd +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 0xa5647f68 sptlrpc_cli_ctx_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa56adc47 req_capsule_extend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5880075 ldlm_errno2error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5de99f5 ptlrpc_request_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa650a3c3 sptlrpc_cli_unwrap_bulk_read +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 0xa7393aa9 ptlrpc_reply +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 0xa9dbbfd6 req_capsule_has_field +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9edf09d RQF_OBD_IDX_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xab31699b target_print_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xab92817e ldlm_destroy_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xac3be70a ptlrpc_register_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xacbec0c8 ldlm_lock_change_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xacfb870a lprocfs_wr_evict_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaddc3979 lustre_swab_lustre_capa_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaeb37fb2 ptlrpc_req_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaeb6c40c llog_origin_handle_close +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 0xaf67e75a __ldlm_handle2lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf9ca4eb ldlm_pool_set_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0751fa4 RQF_LLOG_ORIGIN_HANDLE_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0a39a8d ptlrpc_cleanup_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb11e8e18 ldlm_completion_ast_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1b43d8a dump_rcs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1f9b1a4 ptlrpc_hpreq_handler +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 0xb295c4f6 req_capsule_server_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb2b1817d lustre_swab_ost_lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb33df7c1 ptlrpc_at_set_req_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb4a7ecf3 lustre_msg_add_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb4d1f252 sptlrpc_cli_unwrap_bulk_write +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 0xb74ec114 ldlm_lock2handle +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 0xba8f38f0 ptlrpc_fail_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbaa76097 lustre_msg_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbb297a6d ptlrpc_check_set +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 0xbd922c11 ptlrpc_set_import_active +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbdcfcb3f ptlrpc_req_finished +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbe47bc7e ping_evictor_start +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 0xc1ed015f ldlm_pool_get_clv +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 0xc2b289b6 ptlrpc_req_finished_with_imp_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2be922a RMF_SYMTGT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc494a866 sptlrpc_import_flush_all_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc53cdec6 req_capsule_fini +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 0xc6a667ac __ptlrpc_prep_bulk_page +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 0xc87f9ec5 ptlrpc_restart_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc8aa688f req_capsule_client_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc8f586a9 ptlrpc_connection_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc95aac4c req_capsule_other_get +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 0xcc1f4d2e client_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcc2e59a0 ptlrpc_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcce4b3ff ldlm_resource_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcd99ce7e target_pack_pool_reply +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 0xcf2c2f0d req_capsule_set_size +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 0xd03b9a93 ldlm_cli_cancel_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd0eea01b req_capsule_filled_sizes +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd10074f1 unlock_res_and_lock +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 0xd3ece28f lock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd42340f1 ldlm_enqueue_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd4cd6b9f _ldlm_lock_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd5298600 sptlrpc_enc_pool_put_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd537ded2 lustre_swab_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd5505e83 ptlrpc_request_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd65ddbb0 sptlrpc_import_flush_my_ctx +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 0xd7e800ba ldlm_glimpse_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8b91b3e lustre_swab_lov_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8f06300 RQF_MDS_HSM_PROGRESS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd907eed7 req_capsule_server_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd9561861 RQF_LDLM_INTENT_OPEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xda2ac111 sptlrpc_proc_root +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdae6bc44 ldlm_lock_put +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 0xdcf910b9 lustre_swab_ost_last_id +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 0xddcf9dfe _debug_req +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 0xdecc0f58 lustre_pack_request +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 0xe036cca1 ldlm_pool_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe04dc3c9 req_capsule_client_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0cc694c RQF_LLOG_ORIGIN_HANDLE_NEXT_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe11c305c ldlm_lock2desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe15c7f2b llog_origin_handle_next_block +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe1ef03a1 req_capsule_client_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe22e7226 ptlrpc_lprocfs_unregister_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe2bb040a sptlrpc_import_sec_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe3201ccd ptlrpc_stop_all_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe37de6a3 ptlrpc_request_alloc_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe3abc92b ldlm_namespace_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe40e0a50 lustre_msg_get_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe4b6fe26 ldlm_pool_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe57bd972 sptlrpc_current_user_desc_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe59b632f 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 0xe6e02454 req_capsule_client_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 0xe7512278 ptlrpcd_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe8246a6f lprocfs_rd_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe90a09af sptlrpc_enc_pool_get_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeabaa0b1 lustre_swab_mdt_body +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 0xed958f2a req_capsule_init_area +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xedcb740d sptlrpc_name2flavor_base +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xee3ab194 ptlrpc_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef1aeca9 RMF_FLD_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0241d6e lustre_swab_hsm_progress_kernel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0d52b5f ptlrpc_pinger_suppress_pings +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf1300275 _sptlrpc_enlarge_msg_inplace +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf277c125 RQF_OST_GET_INFO_FIEMAP +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf27d49dc sptlrpc_target_choose_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf35f132b lustre_swab_ldlm_resource_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf3d44370 RQF_OST_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf43540b9 lustre_swab_mgs_nidtbl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf45085e1 sptlrpc_conf_log_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf4f89f29 ptlrpc_cleanup_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf50c660f ptlrpc_set_add_new_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf54eb067 lustre_pack_reply_flags +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 0xf844b4a8 ptlrpc_reconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf85cb27e sptlrpc_parse_rule +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf870fed9 RQF_LDLM_GL_DESC_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf89be086 ldlm_lock_allow_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf8c4a8a2 ptlrpcd_add_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 0xf999e07d sptlrpc_req_replace_dead_ctx +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 0xfa20bdb4 ldlm_cli_update_pool +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 0xfc01292b ptlrpc_lprocfs_brw +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc2fa83f ptlrpc_del_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfcd1c628 ptlrpc_unpack_rep_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfd148bf8 RMF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfd214b82 req_capsule_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfd411ad7 sptlrpc_target_export_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfd8d55de ptlrpc_request_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfe9548c9 ldlm_get_enq_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff02a0e9 ldlm_lock_set_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff1106f6 ldlm_extent_shift_kms +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff2b5341 ptlrpc_prep_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff747641 ptlrpc_wake_delayed +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 0x1c1808d1 cxd2099_attach +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x094c8747 go7007_register_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x5160881b go7007_read_interrupt +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x6e93f876 go7007_read_addr +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x7f17548e go7007_update_board +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x87242cfb go7007_snd_remove +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xa33fda39 go7007_boot_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xb727bce1 go7007_snd_init +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xd0235710 go7007_alloc +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xd0798923 go7007_parse_video_stream +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x039ffbf0 rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x04774e12 rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0674f00c rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0a3911c8 rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0e022d40 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x12b3287d free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x14e574c1 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1646e0b8 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x16b1ade3 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x16fa9b13 rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1c77da74 rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1e4a4adb Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1f11656c rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x20a63264 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x30e9776e rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x30f02969 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3b99ba09 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3dd97567 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x480f0c5c rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4b98de03 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x51caeb32 rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x56363d7e rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x574094b8 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5acb297f notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5afa0844 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5b72887a rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x60faa169 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6411526a rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x71587776 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x738e8063 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x76b0b25c rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x78f8c559 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x835905eb rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x879a6eef rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x92ec780c rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x96d88f88 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x995a2f93 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9a3c908b rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa12bb12d rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb3d2e874 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb5759a8a rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb84d11b9 rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcb283056 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd50d1f9c rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xebedff7c dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf4758291 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf5bcbf2a rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfb17d726 rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfce4b3b7 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfdb0a5d8 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x002056b4 Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x010653f5 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0b12bf67 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0cb72771 ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x14053b40 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x172f0ca7 ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x17dde815 ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2945fac1 Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2a412a1d ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2b259bef SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x34d1a395 DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x41328df4 ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4629a246 ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4811c7b0 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x50326a47 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x59459114 ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5dedd90e ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5dfa7019 ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x626d9795 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x68fdebcc DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x721520a3 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x76546766 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7c5cab4e ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x80213d6c ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x89a30766 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9fe115e9 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa09e9e4c ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xaeb3a9ae ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb2a11d15 ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb32df5a7 HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb37ee8f6 ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xba7ba36d ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbb1e1130 ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbcda8038 ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc1f7bae7 ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc9fc94ba ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcae398b7 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcc75b80a ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd10a6a8f ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd38abd45 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd7dc745c ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd8111753 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdd5d0991 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdf84717a ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe218a8f2 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe76aadea ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xea6e274b ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xeac7016b ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xec4346d6 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf312ae1d ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf700e121 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf783e1a6 IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf85f5dd9 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf926a2a8 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfc7ba3c4 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfececf0f ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x0017f35f set_bp_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x00ea0cde set_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x06d6f244 get_bp_dis_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x09df8f3e set_tap_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x0a8d32c3 get_bypass_slave_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x1936264c set_dis_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x1d2eb8ca get_tap_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x203af1f7 reset_bypass_wd_timer_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2070f14a set_bypass_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x27b990ef get_bypass_info_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2ba7cd35 get_wd_autoreset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2c3f1c17 get_tx_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2f59e636 get_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2fdb893a get_tap_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x361cf40a get_dis_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x45ca99c3 set_wd_autoreset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x550a188c set_bypass_wd_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x5cb59e92 get_bypass_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x66b60122 set_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x675208c0 set_tx_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x692623f2 get_std_nic_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x75131ec6 set_bypass_pwoff_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x76c0b7d0 set_tpl_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x7e872825 get_wd_exp_mode_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x7e8d701e get_wd_expire_time_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x86388b07 get_bp_disc_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x93ae4648 get_wd_set_caps_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x95e42b0d is_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x9df5f807 set_dis_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x9e21f42e set_std_nic_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xa689a214 get_bypass_wd_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xae117788 get_bp_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xc368d30d get_dis_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xccab5de0 get_bypass_caps_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd3e034b3 get_bypass_pwoff_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd9c1ccfc get_bp_disc_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd9d38d97 set_wd_exp_mode_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xe640f06e set_bp_disc_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xecdaa456 set_bp_hw_reset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xedcd3c1b get_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf06d67bf set_bp_dis_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf57c1671 get_bp_hw_reset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf693c3a1 bp_if_scan_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf8237882 get_bypass_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xfa59240d get_tpl_sd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x05af3c4c set_wd_exp_mode +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x05b08a42 set_bp_hw_reset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x0b0d5ce0 get_tap_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x0fc2e83c reset_bypass_wd_timer +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x123a8133 get_tx +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x157ec89c get_bp_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2440f05a get_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2b01d1d4 set_bp_dis_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2c27a2f0 set_dis_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2da97f4b is_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2e86c67b get_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x37416370 get_bp_hw_reset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x37bdab27 get_wd_autoreset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x3da96a18 get_bypass_caps +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4025805e get_bypass_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4940a0cc get_bypass_info +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4d21ff51 get_bypass_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5147360c get_bp_disc_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x515d4df1 get_bypass_slave +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5560267e set_wd_autoreset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5be44d44 set_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x6653590c get_wd_exp_mode +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x6bda14ec get_bp_dis_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x72c618ae set_bypass_wd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x76d47e6f set_bp_disc_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x794e3815 set_tap_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x7c6cbc16 get_tpl +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x84a263dc set_tx +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x8a16f22c set_tpl +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x946ff795 get_wd_set_caps +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x94f6aff2 get_bypass_wd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x9d1ecf73 set_bypass_pwoff +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xb1385629 set_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xbff68c45 set_bypass_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xc871c561 get_dis_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xcee528df set_std_nic +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xd202dd85 get_bypass_pwoff +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xd787f151 get_wd_expire_time +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xdb6a39d2 get_dis_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xebd25ae5 get_std_nic +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf1e9f8c1 set_bp_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf224abd9 get_tap_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf5a591b2 set_dis_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf643fd4c get_bp_disc_pwup +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x195bc205 xillybus_do_cleanup +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x2abcb4d7 xillybus_endpoint_remove +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x53723c8a xillybus_init_endpoint +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0xa70fd025 xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2377a390 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x23f276b8 iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2d2b6e18 iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2eab0a16 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x31ff12c2 iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3979abe1 iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x456d1792 iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x493345dc iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5d4134a7 iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x66a3cc28 iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x80b94d10 iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x877a5df2 iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x899db06d iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x928fac08 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9ab7fc83 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa6cdc820 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa96b9487 iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb7720275 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb8110862 iscsit_handle_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc117825b iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc146593b iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc2b7d833 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc78d6431 iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe229588c iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe34bafa2 iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe50a0da7 iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe6904f81 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe9a7089b iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/target_core_mod 0x00c15528 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x0772a588 target_configure_unmap_from_queue +EXPORT_SYMBOL drivers/target/target_core_mod 0x0d9deb86 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x1f000f3e __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x219f9bc9 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x22618bc9 target_fabric_configfs_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x25ec8073 sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x25f9d944 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x2a36922d sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x32f716b7 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x36932668 sas_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x39d0471a core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x47801974 iscsi_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x4c200f27 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x4e8c1ca0 sas_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x5250a5d3 fc_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x535df27d iscsi_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x54de02f1 sas_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x55945fdd spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x59f8da0b transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x5a8630f5 sas_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x5ff895ad target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x6366c09c fc_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x6673d623 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x6b8e31c7 transport_subsystem_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x7031f435 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x728cfe6b transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x72ad4adc transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x7426b036 iscsi_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x75377cea transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x79f0cdce transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x81437327 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x83bc88d4 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x87366e93 core_tpg_del_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x8a976bae core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x8ad94655 fc_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x8ae70c6a target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x9290662b spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x9510aa7b target_fabric_configfs_init +EXPORT_SYMBOL drivers/target/target_core_mod 0x9932ad7d transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x99ea88c7 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x9aa67c7b core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0xa411b3c6 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xaf59f506 target_to_linux_sector +EXPORT_SYMBOL drivers/target/target_core_mod 0xb61b2c8f target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xb87d0401 transport_subsystem_release +EXPORT_SYMBOL drivers/target/target_core_mod 0xba407fd0 iscsi_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xba972b84 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xbaefafdc transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xbd8ef8e2 core_tpg_clear_object_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0xc0a09eff transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0xc22e50df target_fabric_configfs_free +EXPORT_SYMBOL drivers/target/target_core_mod 0xc2bbdd04 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xc6d060b3 target_fabric_configfs_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xc715eca5 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xc7514de8 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xca8577bf transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xcb336f7a sbc_execute_unmap +EXPORT_SYMBOL drivers/target/target_core_mod 0xcbe739e9 core_tpg_add_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xccd4cf4e target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xcf6e79b3 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0xcfad6a4a spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0xd599a33f target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xd68347ff transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xd92fb73e core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0xdaa354fd transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0xddd66b22 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xde57e99d target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xe687aa0a target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xeabd546c target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xeee4e655 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xfefedc16 target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0xffd519bb fc_get_pr_transport_id +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x7eb4ce18 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0x01ca39cb unregister_gadget_item +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x06da3733 gether_connect +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x0b343304 gether_setup_name +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x18c58b68 gether_get_ifname +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x46770287 gether_get_host_addr_u8 +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x6fbdad2a gether_set_gadget +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x72b2b115 gether_set_qmult +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x72c7a2c3 gether_setup_name_default +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x7d32dbe1 gether_set_host_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x7ea391c0 gether_disconnect +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x83b41cb7 gether_set_dev_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xb5b751c8 gether_register_netdev +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xcacb6140 gether_get_host_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xd07983db gether_get_host_addr_cdc +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xfb950038 gether_get_qmult +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xfe88470a gether_get_dev_addr +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x1b90d857 rndis_rm_hdr +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x3a6d4f22 rndis_free_response +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x3ca38e3a rndis_signal_connect +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x4ca90996 rndis_signal_disconnect +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x5d22b406 rndis_register +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x785d494b rndis_msg_parser +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x840dd143 rndis_deregister +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x988ad2a2 rndis_set_param_vendor +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x9acf72e4 rndis_set_param_medium +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xa90054ee rndis_uninit +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xb971ebca rndis_get_next_response +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xd2fe47b1 rndis_set_host_mac +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xea364a9c rndis_set_param_dev +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xfe30d407 rndis_add_hdr +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x0185a22e fsg_show_removable +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x02f624a1 fsg_lun_close +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x1710b539 fsg_fs_bulk_out_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x1b1cc3af store_cdrom_address +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x2933ee1d fsg_ss_bulk_in_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x2c33951e fsg_store_ro +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x398778e1 fsg_ss_function +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x423845e4 fsg_ss_bulk_in_comp_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x4afb793e fsg_store_file +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x56344daf fsg_hs_bulk_out_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x572693eb fsg_show_file +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x78709645 fsg_show_ro +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x857b6dc2 fsg_hs_function +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x9155be5f fsg_store_nofua +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x95cffb3e fsg_hs_bulk_in_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x9791cd8e fsg_store_cdrom +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x9b0eb278 fsg_store_removable +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xa5cae92f fsg_ss_bulk_out_comp_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xa5f99b69 fsg_fs_function +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xb52ba28a fsg_intf_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xb54d0d95 fsg_fs_bulk_in_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xb77792ae fsg_lun_fsync_sub +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xdc9a589c fsg_lun_open +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xe040d161 fsg_show_cdrom +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xf4efc0c8 fsg_ss_bulk_out_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xfd839fb6 fsg_show_nofua +EXPORT_SYMBOL drivers/usb/gadget/usb_f_rndis 0x92cf858a rndis_borrow_net +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0x7fc8e4ed sl811h_driver +EXPORT_SYMBOL drivers/usb/phy/phy-generic 0xa64a4cea usb_nop_xceiv_unregister +EXPORT_SYMBOL drivers/usb/phy/phy-generic 0xd0e43207 usb_nop_xceiv_register +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x177f8e6d usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x1a51c3cc usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x24bfe207 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x2d8fc33b usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x35e7a990 usb_wwan_set_termios +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x365e570c usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x52767c1a usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x6e5cb8b2 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x74d61996 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x8145346d usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe6bc520f usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xeb34297a usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xee2102ea usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x2de72087 usb_serial_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xf6f1ee14 usb_serial_resume +EXPORT_SYMBOL drivers/vhost/vringh 0x0dda8c5a vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x1f063017 vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x2eae4a2a vringh_getdesc_user +EXPORT_SYMBOL drivers/vhost/vringh 0x36dfce73 vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3b304ebb vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3eaf442a vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x3fa42e4f vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x4311cd91 vringh_iov_pull_user +EXPORT_SYMBOL drivers/vhost/vringh 0x5dafbd4e vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x66af098b vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x6d0e7948 vringh_abandon_user +EXPORT_SYMBOL drivers/vhost/vringh 0x76bd9a5d vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x97fa07e9 vringh_iov_push_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xaf8e4a0e vringh_notify_disable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xafb47dae vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0xc884d704 vringh_notify_disable_user +EXPORT_SYMBOL drivers/vhost/vringh 0xc8bee0a4 vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xda4ea4cc vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0xde804bb9 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/video/backlight/generic_bl 0x366d19ef genericbl_limit_intensity +EXPORT_SYMBOL drivers/video/backlight/lcd 0x07d4ac1c devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x109a0387 devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x23892364 lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x7836457f lcd_device_unregister +EXPORT_SYMBOL drivers/video/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/cyber2000fb 0x534b6f18 cyber2000fb_disable_extregs +EXPORT_SYMBOL drivers/video/cyber2000fb 0xad5454cf cyber2000fb_attach +EXPORT_SYMBOL drivers/video/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x012dffaa matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x34a96033 g450_mnp2f +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x828058f4 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x01cb6b8b DAC1064_global_restore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x6157bc9e matrox_mystique +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xa9a70277 matrox_G100 +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xb994f5e3 DAC1064_global_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_Ti3026 0x7ec91725 matrox_millennium +EXPORT_SYMBOL drivers/video/matrox/matroxfb_accel 0x8b070df1 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x050ab05f matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x0614543c matroxfb_register_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x62597419 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0xac88227a matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0x63e55b19 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0x994c5e4b matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x207cf437 matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x49f4637f matroxfb_read_pins +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x4ebe2640 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xbb64027d matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xc3032b58 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/mb862xx/mb862xxfb 0x345e9226 mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/output 0x582e2c0d video_output_register +EXPORT_SYMBOL drivers/video/output 0xc6874b68 video_output_unregister +EXPORT_SYMBOL drivers/video/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/svgalib 0x1775f8a5 svga_get_tilemax +EXPORT_SYMBOL drivers/video/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/svgalib 0x1b89fe32 svga_tilefill +EXPORT_SYMBOL drivers/video/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/svgalib 0x4d3276f6 svga_tilecursor +EXPORT_SYMBOL drivers/video/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/svgalib 0x743741ec svga_tilecopy +EXPORT_SYMBOL drivers/video/svgalib 0x76ef1aee svga_tileblit +EXPORT_SYMBOL drivers/video/svgalib 0x7a637a2a svga_settile +EXPORT_SYMBOL drivers/video/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/svgalib 0xf6250f16 svga_get_caps +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/vme/vme 0x00d7e722 vme_lm_count +EXPORT_SYMBOL drivers/vme/vme 0x072f901c vme_master_rmw +EXPORT_SYMBOL drivers/vme/vme 0x0c6bdc3f vme_master_read +EXPORT_SYMBOL drivers/vme/vme 0x0ec5babe vme_dma_free +EXPORT_SYMBOL drivers/vme/vme 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL drivers/vme/vme 0x2a2a7047 vme_new_dma_list +EXPORT_SYMBOL drivers/vme/vme 0x337496b7 vme_dma_list_free +EXPORT_SYMBOL drivers/vme/vme 0x3a8b7abc vme_dma_request +EXPORT_SYMBOL drivers/vme/vme 0x3e95083c vme_slave_get +EXPORT_SYMBOL drivers/vme/vme 0x46649cd1 vme_lm_set +EXPORT_SYMBOL drivers/vme/vme 0x48745142 vme_bus_type +EXPORT_SYMBOL drivers/vme/vme 0x48b99a13 vme_lm_free +EXPORT_SYMBOL drivers/vme/vme 0x4b4a0663 vme_dma_list_add +EXPORT_SYMBOL drivers/vme/vme 0x4baf35a7 vme_master_get +EXPORT_SYMBOL drivers/vme/vme 0x4c1bb333 vme_irq_free +EXPORT_SYMBOL drivers/vme/vme 0x5033f7b2 vme_register_bridge +EXPORT_SYMBOL drivers/vme/vme 0x52983a4f vme_master_write +EXPORT_SYMBOL drivers/vme/vme 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL drivers/vme/vme 0x53a61630 vme_unregister_driver +EXPORT_SYMBOL drivers/vme/vme 0x5aff4177 vme_lm_get +EXPORT_SYMBOL drivers/vme/vme 0x675ff222 vme_irq_request +EXPORT_SYMBOL drivers/vme/vme 0x79a33f85 vme_get_size +EXPORT_SYMBOL drivers/vme/vme 0x7ab0190c vme_lm_request +EXPORT_SYMBOL drivers/vme/vme 0x7cf35220 vme_master_free +EXPORT_SYMBOL drivers/vme/vme 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL drivers/vme/vme 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL drivers/vme/vme 0x9ba1244e vme_unregister_bridge +EXPORT_SYMBOL drivers/vme/vme 0xa0fb0f50 vme_slave_request +EXPORT_SYMBOL drivers/vme/vme 0xa2a335bd vme_alloc_consistent +EXPORT_SYMBOL drivers/vme/vme 0xa31bdf07 vme_master_set +EXPORT_SYMBOL drivers/vme/vme 0xad9de291 vme_slot_get +EXPORT_SYMBOL drivers/vme/vme 0xb55197c5 vme_register_driver +EXPORT_SYMBOL drivers/vme/vme 0xbc21837d vme_irq_handler +EXPORT_SYMBOL drivers/vme/vme 0xca5ee09a vme_free_consistent +EXPORT_SYMBOL drivers/vme/vme 0xdff905e5 vme_slave_free +EXPORT_SYMBOL drivers/vme/vme 0xe2ef1d6d vme_master_request +EXPORT_SYMBOL drivers/vme/vme 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL drivers/vme/vme 0xf2135fbe vme_irq_generate +EXPORT_SYMBOL drivers/vme/vme 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL drivers/vme/vme 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL drivers/vme/vme 0xfca0793b vme_dma_list_exec +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x1a65f939 w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x4b9ebdb0 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x68fc73bd w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x6b6050c3 w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x340c789e w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x3ff5e1b0 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x86753fe2 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xe764e406 w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/wire 0x11b45e56 w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0x17837a07 w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0x78d04cad w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0x8c344ed1 w1_add_master_device +EXPORT_SYMBOL fs/btrfs/btrfs 0x27476846 ulist_reinit +EXPORT_SYMBOL fs/btrfs/btrfs 0x41e6a9d2 ulist_init +EXPORT_SYMBOL fs/btrfs/btrfs 0x7e2ee765 ulist_free +EXPORT_SYMBOL fs/btrfs/btrfs 0xa2eec2e8 ulist_fini +EXPORT_SYMBOL fs/btrfs/btrfs 0xb1320bc8 ulist_add +EXPORT_SYMBOL fs/btrfs/btrfs 0xb42289d2 ulist_alloc +EXPORT_SYMBOL fs/btrfs/btrfs 0xc2c745db ulist_next +EXPORT_SYMBOL fs/configfs/configfs 0x474d32ff configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0x4b58e023 config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0x7264d277 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x898c922c config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x8ca1206c configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x9ff3e315 config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0xb62fb31c config_item_init +EXPORT_SYMBOL fs/configfs/configfs 0xb6ee6d3f config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xbc957d5f config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0xccc5e0d6 config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0xcd18f361 configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0xd183b08e configfs_unregister_subsystem +EXPORT_SYMBOL fs/exofs/libore 0x102ce6a3 ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x2903e445 ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x4d736d9e ore_write +EXPORT_SYMBOL fs/exofs/libore 0x5bc75758 ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0x86a52189 ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0x97f44fa1 ore_create +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xc67df0d7 ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0xcdbd572b ore_remove +EXPORT_SYMBOL fs/exofs/libore 0xf34d0042 ore_read +EXPORT_SYMBOL fs/exofs/libore 0xfb818d7b extract_attr_from_ios +EXPORT_SYMBOL fs/fscache/fscache 0x016a512b __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x1349709a __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x13938109 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x2a45b957 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x2f72edfb __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x37f6f34c fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x3d730dc0 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x41ca4254 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x48c44181 fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0x5394f57b fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x5d0574b7 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x60770796 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x6f6dcd7a __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x72453d95 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x73628b98 __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x82228f22 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0x875495e0 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x8b3b6b7c fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x8e1c220f __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x933cf240 __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0xa50d1ac6 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0xa5ad9112 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0xa6a69081 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0xaabac6ad fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0xba32f982 __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0xbc9984e4 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0xbd92776f fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0xc93710ac __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xcddb35c5 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0xcf0c421f __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xd7c34821 fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0xe2109eae fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0xecf3639e __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0xee4075f3 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0xeee9e7a8 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0xf618bb84 __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0xffa73925 __fscache_write_page +EXPORT_SYMBOL fs/nfsd/nfsd 0x35e33c1e nfs4_acl_write_who +EXPORT_SYMBOL fs/nfsd/nfsd 0x5a157ae4 nfs4_acl_get_whotype +EXPORT_SYMBOL fs/nfsd/nfsd 0xa0f4b528 nfs4_acl_posix_to_nfsv4 +EXPORT_SYMBOL fs/nfsd/nfsd 0xb25b2957 nfs4_acl_nfsv4_to_posix +EXPORT_SYMBOL fs/nfsd/nfsd 0xe13337f0 nfs4_acl_new +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x80fa379f qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xaf47dfd4 qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0xc17a2d23 qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xd9eca563 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xe85dee19 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 0x6c1f6fee crc7 +EXPORT_SYMBOL lib/crc7 0xd80c3603 crc7_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 0x075e51fa lc_del +EXPORT_SYMBOL lib/lru_cache 0x38e98b01 lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0x3aebca20 lc_try_get +EXPORT_SYMBOL lib/lru_cache 0x685c14b0 lc_destroy +EXPORT_SYMBOL lib/lru_cache 0x702b6f49 lc_put +EXPORT_SYMBOL lib/lru_cache 0x8c21fdc7 lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x8d7f0a81 lc_set +EXPORT_SYMBOL lib/lru_cache 0x959f9a9f lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0x98ada376 lc_committed +EXPORT_SYMBOL lib/lru_cache 0x9dd0b07e lc_find +EXPORT_SYMBOL lib/lru_cache 0xa08057ee lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0xa73e2215 lc_get_cumulative +EXPORT_SYMBOL lib/lru_cache 0xc8497f6a lc_create +EXPORT_SYMBOL lib/lru_cache 0xc88f82dd lc_is_used +EXPORT_SYMBOL lib/lru_cache 0xe66a1b75 lc_reset +EXPORT_SYMBOL lib/lru_cache 0xeca12587 lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0xf4122c19 lc_get +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/802/p8022 0x907479fa register_8022_client +EXPORT_SYMBOL net/802/p8022 0xba79885e unregister_8022_client +EXPORT_SYMBOL net/802/p8023 0x3a15b8ed make_8023_client +EXPORT_SYMBOL net/802/p8023 0x82845c2b destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0x9490a854 register_snap_client +EXPORT_SYMBOL net/802/psnap 0x97e12da2 unregister_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x00e8a8ad p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x01749459 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x0e22272e v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x17c4a9f1 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0x18893003 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x18e8c00d p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x1af84b96 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x1dd13645 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x215d0931 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x2f7572ed v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x36175592 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 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x54361111 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x5be4466e p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x6179ba7c p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x6434df87 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x729fd5d9 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x7ce2e9e7 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x80612a83 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x81fd3536 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x8357687e p9_payload_gup +EXPORT_SYMBOL net/9p/9pnet 0x85ed705e p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x8b2d6b57 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x8d1e5b2e p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x8d920e17 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x977a0030 p9_nr_pages +EXPORT_SYMBOL net/9p/9pnet 0x98cef199 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xa401e698 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0xb6b2df21 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xd063164a p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0xd25bebe7 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0xd6dbe450 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0xd99c972f p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0xe1082424 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0xe4891037 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe7776ca2 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0xec0f185a p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0xf49b4173 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf4fc42b8 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0xf593c98d p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xf87ed60e p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0xfaa280a0 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0xfcda8e03 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/9p/9pnet 0xfe6bf152 p9_client_create +EXPORT_SYMBOL net/appletalk/appletalk 0x263484c7 aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0x8680c569 atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0xb8ba4a69 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0xdd66ae1c atalk_find_dev_addr +EXPORT_SYMBOL net/atm/atm 0x006204ff atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x14d06b97 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x14e9ec6c atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x372bdf17 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x87cb27ac atm_charge +EXPORT_SYMBOL net/atm/atm 0x8b3f287f vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x99341107 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x993cd1c0 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x9b777e0d 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 0xb74c2f9c atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0xca87b453 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xe6f1998c atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0xea23c78e atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0xf157d934 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/ax25/ax25 0x026c1368 ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0x0e6d3ef0 ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0x0ee7c3f9 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x19435677 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x3afee63e ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x5aa7d7c2 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x68c187d8 ax25_rebuild_header +EXPORT_SYMBOL net/ax25/ax25 0x6ca6c5a0 ax25_hard_header +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0x9d3697aa ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0xa24732e7 ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0xb8726082 ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0396ff5e bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x09fe67b1 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0a9763a6 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x114002b0 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x18711dee hci_recv_stream_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x18e5fbc1 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1a399773 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x26cfc14d hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x26d2e328 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3b371f6f bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x41d27f3a hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x562331b7 l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5894378a l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0x607c755b hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x66336cb5 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x666fea4f bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x74e6c1b7 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x781fee20 l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7c640527 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x81c9976b bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x81d1daf2 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8d6f36b5 hci_recv_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x937043eb __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9df0b6bf bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa4cb0e6b hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa916299b hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb0f500f5 bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb23b60d0 l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb2d90dfb hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb5c45615 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb61a0c3b bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb9fa5bc6 bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbaca3e06 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbe30806f __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcca2843e bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xce468009 hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd63b8b53 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xed9aa2de bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfa98c028 hci_conn_check_secure +EXPORT_SYMBOL net/bridge/bridge 0xbecaffcd br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x63a10809 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x6ef37a2f ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xc62fb753 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 0x2f53e0a3 caif_connect_client +EXPORT_SYMBOL net/caif/caif 0x3048f3c1 caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x483154a4 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 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xe3688b84 get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0xf04e2a31 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/can/can 0x27bfe5b3 can_rx_register +EXPORT_SYMBOL net/can/can 0x4af89caf can_send +EXPORT_SYMBOL net/can/can 0x5ee5d17f can_rx_unregister +EXPORT_SYMBOL net/can/can 0x6bfeabf1 can_proto_register +EXPORT_SYMBOL net/can/can 0xd1b569b2 can_ioctl +EXPORT_SYMBOL net/can/can 0xd9534c23 can_proto_unregister +EXPORT_SYMBOL net/ceph/libceph 0x006ee0ab ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x016e19b6 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x029bf851 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x03f9bfaa osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0x07371a07 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0be831c1 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x0c74e608 ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0x0cb95d41 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x0d61c270 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0x1475bf0d ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x160f100c osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x18c2e78f ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x1957e9d9 ceph_monc_create_snapid +EXPORT_SYMBOL net/ceph/libceph 0x197effcb ceph_osdc_release_request +EXPORT_SYMBOL net/ceph/libceph 0x1995fd71 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x22b61484 ceph_copy_page_vector_to_user +EXPORT_SYMBOL net/ceph/libceph 0x259fd2d7 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x264fef96 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x2e2af570 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x3196ac55 ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3b27bb9d ceph_osdc_unregister_linger_request +EXPORT_SYMBOL net/ceph/libceph 0x3dacdb60 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x3df0ec7c ceph_calc_ceph_pg +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x401887db osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x41e4759b ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x4205ffd7 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x43efd647 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x4a283545 ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x4aba5f1f ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x4af09bcc ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0x4c020d91 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x4fa0379d ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x51be3a37 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x570ceb67 ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x5db8079b ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x6691d34d osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6c5d5ac1 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x6d6be2c9 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x6e4be769 ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0x6f0defa0 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x7168baf8 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0x73dbac2f ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x77692acb ceph_msg_last_put +EXPORT_SYMBOL net/ceph/libceph 0x7b207546 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x7ca4ef2e ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x7dd3e4dd osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x80003edc ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x81bd8534 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x81eae1b6 ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0x820b9b43 osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0x85df9c86 osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0x86edfda8 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x88b169c2 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x89e41552 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x8a4080fe ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x8d6da79c ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x8fdc4120 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x92c34105 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x9880d263 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x99de4738 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa09f06c6 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0xa507e25c ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xa9fa909b ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xacad8660 ceph_compare_options +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 0xbb83cae5 osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xbe78fca2 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0xc2ff2c44 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xc3d1d152 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0xc49ebff0 osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc55de604 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xc67ac90a osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xce852c41 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd9bb0272 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xdce47911 osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0xdd321aac ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xdf10390e ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0xe4984eea ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0xe4dec389 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xe82c9c32 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0xe9b816bb osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0xed229339 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xf3b631da ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0xf4213120 ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0xf5774cba ceph_pagelist_truncate +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x4b63a382 dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/ieee802154 0x16f260f1 wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0x180a5f24 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x39001e7c ieee802154_nl_disassoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x4537a722 ieee802154_nl_start_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x49fd9d29 ieee802154_nl_scan_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x4dd66a29 ieee802154_nl_beacon_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x74e96642 ieee802154_nl_assoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x79552181 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0xb324d396 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0xeaf81c0b ieee802154_nl_disassoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0xef3a51ed wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0xf9a7ebe4 ieee802154_nl_assoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0xfd171c97 wpan_phy_alloc +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x9aa0cec9 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xafd50459 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xc4536b69 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x025026a8 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x69cb8f8f ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xdfac4800 ipt_do_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x5e9e0eb1 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0x68add594 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x236ad1f9 ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x3789979d ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x4971438b ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x603bfa1f ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xdd5c203a ip6t_do_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x1f94d04e xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0x639d6214 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x254a7409 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x3fef6edb xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x002bcd0a ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x24617928 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x44c6e2bf ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x7b443420 ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x7b57d451 ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x8ed048d6 ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xac3a7fde ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xee062516 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 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x0c03d0f4 irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x13fcffc0 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x1942d7e4 iriap_close +EXPORT_SYMBOL net/irda/irda 0x1ab20ce5 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0x1bd8c8b4 irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0x1e6cade0 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x2036ad06 irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x2eb38f22 irlap_open +EXPORT_SYMBOL net/irda/irda 0x2eeb2033 irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x3e56064f hashbin_new +EXPORT_SYMBOL net/irda/irda 0x3fb85b69 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x45fac54b irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x58e7c728 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x598a3bd1 irttp_open_tsap +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 0x7e636f69 irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x80dd85af irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x82e00ba4 irlap_close +EXPORT_SYMBOL net/irda/irda 0x8509b86e irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x85d88217 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x8d8c272c irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x92876234 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x993ad14b irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0xa1d41e58 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0xa96c5ba5 iriap_open +EXPORT_SYMBOL net/irda/irda 0xaa557515 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xb2969f03 irttp_dup +EXPORT_SYMBOL net/irda/irda 0xb5d4bb43 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 0xbf08c35f irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xc68e43be irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0xc8a322aa async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0xcb005d12 irlmp_data_request +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 0xd94f9d58 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xe3463529 hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0xe3bde43e irias_insert_object +EXPORT_SYMBOL net/irda/irda 0xeb26fae0 async_unwrap_char +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 0xc06ebb9c l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x0e967c4c lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x47c31999 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x583036a5 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x720c7148 lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x8bd22fdd lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0xa5ae73d4 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0xa5c9fff2 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0xdcbf6263 lapb_disconnect_request +EXPORT_SYMBOL net/llc/llc 0x098a4d52 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0x1246fe48 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0x15718038 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x75171dd4 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0xa96df5aa llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0xc35e28f7 llc_sap_list_lock +EXPORT_SYMBOL net/llc/llc 0xd37fe13f llc_sap_find +EXPORT_SYMBOL net/llc/llc 0xfd9f9759 llc_sap_open +EXPORT_SYMBOL net/mac80211/mac80211 0x009376f2 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x0f74086d ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x118ab41c ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0x12d42e50 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x15147143 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x16eacdd1 ieee80211_alloc_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x1990bba5 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x1d612df8 ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x21822d05 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x21a2ae71 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x21b69e40 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x2469a1b8 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0x2a23a7e4 ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x3b3d29ed ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x3c0ce8bf ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x40595deb ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x441e2b19 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x4b560b12 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x4f154d01 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x51bce841 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x5414e235 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x545951cd ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x54d3fdaf ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x568f5f07 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x5ac697f4 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x5c28cca5 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x5c53fecb ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x5ee42b0e ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x61b4d2b5 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x6afa5325 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x6b21cf74 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0x6eb178a0 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x6f51f429 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x709d6b86 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x799d0ea2 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x79e3c733 ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x7aebeff5 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x862979c8 ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x8eaee11d ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x9000ebf0 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x9002bd63 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x92de2469 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x959e144e wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x9a4e0e3c ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x9aa4d8ff __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x9c5e6334 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0x9f827aa3 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xa1fc36c4 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xa334c490 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0xa83123dc ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xa8376217 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xa906a53d ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0xaa157485 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0xab0fb1d7 ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0xbae6d6f0 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xbc2c4a93 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0xbd269fee ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xc291f226 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0xc6747de2 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xc7e9782e ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xcc98c7e1 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xcccafe99 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xd038276a ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xd08fac68 ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xd7d74077 ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0xd80762a7 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0xddb47d52 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xdeaf44fd ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0xdfee78fc ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xe5369661 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xefa7c892 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0xf395de03 ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0xfd00f2d5 ieee80211_stop_queues +EXPORT_SYMBOL net/mac802154/mac802154 0x1ecb1d71 ieee802154_unregister_device +EXPORT_SYMBOL net/mac802154/mac802154 0x31302c46 ieee802154_free_device +EXPORT_SYMBOL net/mac802154/mac802154 0x33f88c57 ieee802154_register_device +EXPORT_SYMBOL net/mac802154/mac802154 0x626e0205 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0x93e0064c ieee802154_alloc_device +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x1364b610 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x1b7ade76 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x2a8b34c5 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x2a933b54 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x396a2969 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x453ef42d ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x759d4601 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x87a493c6 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x88232448 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x8ed76607 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xcb8271c1 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xf3c16d57 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xf517d528 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xf6444f95 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x2ada9f69 __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x5bfecb84 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xa42d35c4 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_conntrack_proto_gre 0xf97480de nf_ct_gre_keymap_flush +EXPORT_SYMBOL net/netfilter/nf_nat 0x0123d7b8 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x4b9730e9 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xd5af6ac1 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0xd860d90f nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0xe4cf9d74 nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0xf9473cb6 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/x_tables 0x08c473b7 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x253e8b44 xt_compat_init_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x39f2c74d xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x449d87d9 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x68225384 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x76bfc7bf xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x7718900b xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0x8784cff9 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x8fbad3d3 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x9ecb7263 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0xa25fc115 xt_compat_check_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0xb28f5ef1 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xd87ae60d xt_check_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0xe22c3297 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0xf8568445 xt_unregister_matches +EXPORT_SYMBOL net/nfc/hci/hci 0x1423eaec nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x190442ca nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x2409a64b nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x5de264fb nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x73b6f9b6 nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0x73e1ba3a nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x94929af4 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0x96ed272b nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0xb1104020 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xc93dcaaf nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xca17ead6 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0xd1304120 nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0xd1f877d6 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0xd457d747 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xd52cf936 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0xdfeddc04 nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0xf11b3eaa nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xfc9a6736 nfc_hci_send_response +EXPORT_SYMBOL net/nfc/nci/nci 0x043114f5 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x5f204bab nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x73ee0bb2 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x933f225c nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xe9edbd93 nci_register_device +EXPORT_SYMBOL net/nfc/nfc 0x04011511 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0x154e344a nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x203a6bf1 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x30f557d8 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x4ca5c9c6 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x550a4e29 nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0x6df798cc nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x791cba7d nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x7f15c67c nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x82d1ab58 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0x8b2e7432 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x9be478e6 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0xa641cfff nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0xb0d8d40a nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0xb5531a96 nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0xc61200a6 nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0xc6226fda nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0xc6665f85 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0xcf60a86f nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0xe5e69ad8 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc_digital 0x229c63fd nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x535220b8 nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x7993d8bd nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xdd9bc1c5 nfc_digital_register_device +EXPORT_SYMBOL net/phonet/phonet 0x1106d31d phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x31562cec pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0x33017d1a phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0x43f22f16 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0x58e4df95 pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x7f4c6be2 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0x80736144 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x9dd4d778 pn_sock_unhash +EXPORT_SYMBOL net/rds/rds 0x7505d413 rds_str_array +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x0434ae1f key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x1883eaef rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x2f3b1080 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x3115079d rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x39448825 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x3da446e4 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x5eb64ead rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x78307267 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x9587180c rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa659e85b rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa93e7715 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xae2d4918 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xbb89bea4 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xcf837613 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf4184112 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/sctp/sctp 0xfc2495cc sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x91b12e70 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xbef656ea gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xe06c779f gss_mech_get +EXPORT_SYMBOL net/sunrpc/sunrpc 0x03cb1425 svc_pool_stats_open +EXPORT_SYMBOL net/wimax/wimax 0x5466ecd1 wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0x8eddc13b wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x05b1b894 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x0633d90b cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0aa4e28c regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x105f86b8 cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1b03ec42 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x202f91e6 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x22a9ee73 cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x254f32cb cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0x2828bd3e wiphy_new +EXPORT_SYMBOL net/wireless/cfg80211 0x362abda8 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x3703fd79 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x37c56e58 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x3e533f1b cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x40518247 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x406a8302 cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x4313b80c cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x44222ed1 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x466a57c9 cfg80211_del_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x4701a7d5 cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x497f182f cfg80211_inform_bss_width_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x4c3b5878 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x4c40b2fb ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x4cae20c1 cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0x4f6013ba cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x52b92793 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x549ae50f ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x5695ad59 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x57c9609f cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0x589df8ac cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x59ce68fd cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x5cf80d13 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x60645e00 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x611bc986 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x64b44092 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x65668641 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x671e6f08 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6b0697bc cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x6ddc1f04 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x6f0e1746 cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x724295de cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0x78a8ec1f cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0x7a24b1e9 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x8244f58f wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x84dea716 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x889e4c78 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x8a5b4ae8 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x8a8b03aa cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x8cc072ba cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0x91c44b95 cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x94979e2f ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x986a3747 cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x9bfa82d6 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x9fcbd5d4 cfg80211_notify_new_peer_candidate +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 0xa84086ab cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xb6065470 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0xbd0702a5 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0xc15c8611 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xc3f1dd99 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xca213244 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xcbdac644 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xcd315899 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xcf618a57 cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0xd3f8dd06 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xd49a7c0d cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xdc74f0b4 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xdd1e79fb cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xdffe7630 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0xe3085361 cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0xee42db3c cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0xf07832e0 cfg80211_inform_bss_width +EXPORT_SYMBOL net/wireless/cfg80211 0xf330e88e cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xfd34f6cd __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xfdd7ed88 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x29f65a26 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x2d0f99e5 print_ssid +EXPORT_SYMBOL net/wireless/lib80211 0x5eb3326c lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0x68c0151f lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0xa7bc1684 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xb5efff13 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0xddd260e6 lib80211_unregister_crypto_ops +EXPORT_SYMBOL sound/ac97_bus 0xc1db04d2 ac97_bus_type +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 0x71e6e797 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 0x7f484ed6 snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0x902df7e7 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 0xceb994cd snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x3a57f235 snd_seq_autoload_unlock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x86573e9a snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xa9bb9b5e snd_seq_device_register_driver +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xb90668b2 snd_seq_autoload_lock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xc622fb29 snd_seq_device_unregister_driver +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 0xdb5d5275 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x00dd5456 snd_device_free +EXPORT_SYMBOL sound/core/snd 0x01843a24 snd_ctl_register_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x04cb9aef snd_card_create +EXPORT_SYMBOL sound/core/snd 0x0ad4903e snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x1034e517 snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0x18e1683f snd_dma_program +EXPORT_SYMBOL sound/core/snd 0x191af25d snd_ctl_unregister_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x191e88cf snd_dma_pointer +EXPORT_SYMBOL sound/core/snd 0x19e24c54 snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0x200a56f5 snd_device_register +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x286a5eb3 snd_register_device_for_dev +EXPORT_SYMBOL sound/core/snd 0x2ae3deaa release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0x2b717a07 snd_card_unref +EXPORT_SYMBOL sound/core/snd 0x2e609c84 snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0x342a2354 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x37780361 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x443b0a87 snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x46672bcd snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0x47cb9a8e snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4b015768 snd_iprintf +EXPORT_SYMBOL sound/core/snd 0x4c38da70 snd_jack_new +EXPORT_SYMBOL sound/core/snd 0x4ccbdd52 snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x4ee084b7 snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0x5e5d6b37 snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0x65360955 snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x65900954 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x78e48b25 snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x9692d1a0 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0x97e11789 snd_device_new +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 0xaa638974 snd_info_register +EXPORT_SYMBOL sound/core/snd 0xad7c61e1 snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0xb23401fe snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xb54b5415 snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0xb9a776da snd_card_register +EXPORT_SYMBOL sound/core/snd 0xc5919440 snd_card_proc_new +EXPORT_SYMBOL sound/core/snd 0xc81661bd snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0xc822e54c snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0xc9637f07 snd_jack_report +EXPORT_SYMBOL sound/core/snd 0xc9a42c7c snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0xd6a736ba _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0xd87e69f8 snd_component_add +EXPORT_SYMBOL sound/core/snd 0xd97ae263 snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0xecd011d1 snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0xf46b5202 snd_cards +EXPORT_SYMBOL sound/core/snd 0xf7255dfd snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0xf8801510 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0xfb00455a snd_power_wait +EXPORT_SYMBOL sound/core/snd 0xfcbb95b9 snd_add_device_sysfs_file +EXPORT_SYMBOL sound/core/snd 0xfd11ec22 snd_seq_root +EXPORT_SYMBOL sound/core/snd 0xfd8c68d3 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0xfe63bea9 snd_card_free +EXPORT_SYMBOL sound/core/snd 0xffe9e9bc snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0xfffd89db copy_from_user_toio +EXPORT_SYMBOL sound/core/snd-hwdep 0xbb54844f snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-page-alloc 0x0698545d snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x06b310c9 snd_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x5898dcba snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x63dc83b4 snd_dma_get_reserved_buf +EXPORT_SYMBOL sound/core/snd-page-alloc 0x7fae9651 snd_dma_reserve_buf +EXPORT_SYMBOL sound/core/snd-page-alloc 0xa36660e1 snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0xcb62c4b1 snd_dma_alloc_pages_fallback +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 0x091a62e0 snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0x0c6eafb3 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0x11d67fa4 snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0x1539edbe snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0x195d7cf1 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x200b811a snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0x28a8399a snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0x2b1713bc snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0x3003fd7e snd_pcm_suspend_all +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 0x3c38b8ee snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x3f015b67 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0x44f62159 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0x4ef75cfc snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x5ebeb642 snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x60360bff snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL sound/core/snd-pcm 0x6731cf0d snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x681f7985 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x6e110975 snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x6f2b08b0 snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0x6fb7745e snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0x78bb1a67 snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x7ca6433f snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x834dc955 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x84444af0 snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0x8f145dfd snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0x92d650c6 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x965cea08 snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0x9f1e2d66 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0xa1b706c8 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xab2d5f24 snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xb1b8715b snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0xb442265c snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xbc556598 snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xc3d74c59 snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0xd08a3f58 snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0xd4e03a04 snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0xd5fb21a2 snd_pcm_link_rwlock +EXPORT_SYMBOL sound/core/snd-pcm 0xd6e56aa2 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0xdb3320d1 snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xe88f15aa snd_pcm_debug_name +EXPORT_SYMBOL sound/core/snd-pcm 0xea3835ad snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xf696f074 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0xf6ee7e51 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0xf7e9049f snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xfe3b493a snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x023410c1 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x07ad4e34 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x1a38872d snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0x1d535208 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x299d1929 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x2c21cd0a snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x36e5efe1 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x4e974e64 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0x6afae777 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x73dfaed1 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7514662b snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0x88b0a353 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0x92d595d9 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x95caa1fc __snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xad00756c snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xae94261b snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd79f4f36 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0xebc1eeca snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0xffef5dee __snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-timer 0x03860b8f snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0x28053eb0 snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0x3283071c snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0x3ded09c7 snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0x55c27031 snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0x5f0eb4f8 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0x609fda98 snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0x85d35d39 snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0xd4ec98cb snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0xdaeee327 snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0xe4fcd5f6 snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0xe8541e04 snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0xfa367a97 snd_timer_continue +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x9a452228 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 0x1058e251 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x2bf81045 snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x420db04b snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x57f67fa0 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x601c9e78 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xcb6982b4 snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xcd4acb98 snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xd6669b77 snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xe2e0ae3a snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x0140f375 snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x05b1826f snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x08bc6dbe snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x33d61d4d snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x65a0d2ca snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xa530cce5 snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xb4a8f85e snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xb8322aba snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xeeb30eed snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0a40cbbb amdtp_out_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2eab1886 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x32cebfe8 fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4432df65 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4e598227 amdtp_out_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5f599b47 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6a0461dd amdtp_out_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7ca5df7a cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x81b53e3a fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8a5947c0 amdtp_out_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8d0d0b7b cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x98768c7a fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa7ebe172 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa9e74cec amdtp_out_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb0f33745 amdtp_out_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbf22b773 amdtp_out_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xcde3cc38 amdtp_out_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd0266c9a amdtp_out_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd162c762 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd3c603bb fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd9a7bc73 amdtp_out_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xda36559c fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xde151b8d amdtp_out_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe22ad55e fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe72ebcac iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf8c4fe4e iso_packets_buffer_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x0ada6451 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x62902379 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x7eaac8f8 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x89566ca8 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x9ac9f403 snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xf441fa5d snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x1da9ffd0 snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x53e40bf8 snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x82684c10 snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xa7b73dcc snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xee7b1b21 snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xfdf731a3 snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x1cadc0cc snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x47d4010b snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x4e25f55d snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xd5c42826 snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x8e5b4abc snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xa51d9550 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x3fe1fd47 snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x5126132a snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x59791d9d snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x7ae6f1fd snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xdd6235c9 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-i2c 0x813dd35c snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0x90c57879 snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x9b5c78ca snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0xa088b8c1 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xbf88bf58 snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xf9a4d7a1 snd_i2c_bus_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x0509cbc2 snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x18dfa9a6 snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x1e27a288 snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x50d8fc9e snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x90eac939 snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xb1476c4e snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xc6316a92 snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xd703af56 snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xedc72326 snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xf8fd4f13 snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xace749c0 snd_sb16dsp_configure +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xdcbb060f snd_sb16dsp_get_pcm_ops +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xe0b3f690 snd_sb16dsp_interrupt +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xedb9a18c snd_sb16dsp_pcm +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0b42ea09 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x11ede159 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3e9bdc32 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x54ec56b3 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x8f3771a7 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9984469c snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9e049129 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb2f2b4d0 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb4df1da6 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb6171935 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb8343c75 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb8580d9c snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc9f9b6e3 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe4022790 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe474fca1 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf8124b93 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf950d4c4 snd_ac97_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x337aa2af snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x4a6ff645 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x6957afeb snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x864083d5 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xa2c97b95 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xbd0d91f5 snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xd9eed3d3 snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xe16762ea snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xe553bc67 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x232d4945 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x49e1b18c snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x7b1d0710 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x24de33da oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2a3bd9e4 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x31d5a999 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x43856a1a oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x46ec5b86 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5269b664 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x56243c71 oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5f777fd2 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x6fb32ac4 oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x9ade79a9 oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x9eaa7036 oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x9f4ab778 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa4986dc3 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xad8b00e5 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb05ac05a oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb8b1a207 oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc8641dd9 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xeba5d366 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf096068d oxygen_write8 +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x46fa7ec1 snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x65417c77 snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x8edbc1a0 snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xc6e302b0 snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xd31b0765 snd_trident_alloc_voice +EXPORT_SYMBOL sound/soundcore 0xa1c6f7b0 sound_class +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x0c50c11d snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x2ab21c19 snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x5c26f150 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 0x89ed5a67 snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x9a80f2ff snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xd5b39223 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/snd-util-mem 0x30d5328a __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x75239f2f __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x96ca51e9 snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0xad3fb7c5 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0xb6562489 snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xbde0b779 __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xcbaf5520 snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xd7a833bd 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 0x88194044 snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL vmlinux 0x00000000 __symbol_put +EXPORT_SYMBOL vmlinux 0x00000000 current_fs_time +EXPORT_SYMBOL vmlinux 0x00000000 d_tmpfile +EXPORT_SYMBOL vmlinux 0x00000000 do_sync_read +EXPORT_SYMBOL vmlinux 0x00000000 filp_close +EXPORT_SYMBOL vmlinux 0x00000000 finish_open +EXPORT_SYMBOL vmlinux 0x00000000 generic_getxattr +EXPORT_SYMBOL vmlinux 0x00000000 generic_write_sync +EXPORT_SYMBOL vmlinux 0x00000000 get_unmapped_area +EXPORT_SYMBOL vmlinux 0x00000000 in_group_p +EXPORT_SYMBOL vmlinux 0x00000000 inode_add_bytes +EXPORT_SYMBOL vmlinux 0x00000000 iov_shorten +EXPORT_SYMBOL vmlinux 0x00000000 iterate_fd +EXPORT_SYMBOL vmlinux 0x00000000 ns_capable +EXPORT_SYMBOL vmlinux 0x00000000 path_is_under +EXPORT_SYMBOL vmlinux 0x00000000 register_exec_domain +EXPORT_SYMBOL vmlinux 0x00000000 schedule_timeout +EXPORT_SYMBOL vmlinux 0x00000000 sock_register +EXPORT_SYMBOL vmlinux 0x00000000 sys_close +EXPORT_SYMBOL vmlinux 0x00000000 task_nice +EXPORT_SYMBOL vmlinux 0x00000000 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x00000000 vm_brk +EXPORT_SYMBOL vmlinux 0x0009db7e kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x000dbe22 tcf_hash_check +EXPORT_SYMBOL vmlinux 0x00153f76 input_grab_device +EXPORT_SYMBOL vmlinux 0x0019ed59 textsearch_unregister +EXPORT_SYMBOL vmlinux 0x001b8ed4 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x002b6ccd unregister_key_type +EXPORT_SYMBOL vmlinux 0x006bff7c nf_register_hooks +EXPORT_SYMBOL vmlinux 0x00734323 bioset_create +EXPORT_SYMBOL vmlinux 0x00801678 flush_scheduled_work +EXPORT_SYMBOL vmlinux 0x008dee79 nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0x009eea12 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x00bd82cb sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x00cf4a7f of_get_parent +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x012a97fc xor_altivec_4 +EXPORT_SYMBOL vmlinux 0x01313cb1 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x01583ece devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x015a3931 pci_get_slot +EXPORT_SYMBOL vmlinux 0x016a3386 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x01902adf netpoll_trap +EXPORT_SYMBOL vmlinux 0x019e7765 __init_rwsem +EXPORT_SYMBOL vmlinux 0x01a27154 dev_uc_del +EXPORT_SYMBOL vmlinux 0x01b0c793 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x01c8e84d ida_simple_get +EXPORT_SYMBOL vmlinux 0x01d4c674 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x01d655bb dev_deactivate +EXPORT_SYMBOL vmlinux 0x01eed036 writeback_in_progress +EXPORT_SYMBOL vmlinux 0x01fc98b9 sock_init_data +EXPORT_SYMBOL vmlinux 0x01fd5ca2 phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0x0219af84 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0x0242dea5 input_allocate_device +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x0274d05b of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x0298c705 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02b92b72 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x02c8cd0c __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x02d1f551 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x02d5c3f5 locks_free_lock +EXPORT_SYMBOL vmlinux 0x02d808b0 bio_integrity_get_tag +EXPORT_SYMBOL vmlinux 0x02de3831 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x02f99a4f scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x030b7356 vfs_fsync +EXPORT_SYMBOL vmlinux 0x0313af0c tty_set_operations +EXPORT_SYMBOL vmlinux 0x031e6d78 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x03391bb1 zerocopy_sg_from_iovec +EXPORT_SYMBOL vmlinux 0x0340d428 neigh_update +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x03774f00 dcb_getapp +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x038d7e48 mmc_gpio_free_cd +EXPORT_SYMBOL vmlinux 0x0395ed07 mmc_cache_ctrl +EXPORT_SYMBOL vmlinux 0x03c06156 bitmap_fold +EXPORT_SYMBOL vmlinux 0x03ccb072 add_disk +EXPORT_SYMBOL vmlinux 0x03ebda85 dns_query +EXPORT_SYMBOL vmlinux 0x03f6d915 skb_seq_read +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x0402b210 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x04074f48 ioremap +EXPORT_SYMBOL vmlinux 0x04104df7 try_to_release_page +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x04246f5c gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x04588e62 fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0x046bb31d agp_bind_memory +EXPORT_SYMBOL vmlinux 0x047a2ce5 mount_ns +EXPORT_SYMBOL vmlinux 0x0487994a d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x04901bdc jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x0499c2c7 follow_up +EXPORT_SYMBOL vmlinux 0x04a83a3c finish_no_open +EXPORT_SYMBOL vmlinux 0x04abc1b3 input_close_device +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04ea5d10 ksize +EXPORT_SYMBOL vmlinux 0x0502450e tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x052bac69 sk_free +EXPORT_SYMBOL vmlinux 0x0530dede _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x05373963 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x053c4e25 input_release_device +EXPORT_SYMBOL vmlinux 0x054434d6 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x055c8559 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x055e2483 xfrm_state_update +EXPORT_SYMBOL vmlinux 0x055f6c88 console_stop +EXPORT_SYMBOL vmlinux 0x058a26c2 unregister_console +EXPORT_SYMBOL vmlinux 0x0593a99b init_timer_key +EXPORT_SYMBOL vmlinux 0x05961b2f pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0x05a1b5ee netpoll_setup +EXPORT_SYMBOL vmlinux 0x05a2af71 request_key_async +EXPORT_SYMBOL vmlinux 0x05a514a1 _insl_ns +EXPORT_SYMBOL vmlinux 0x05eade62 register_netdevice +EXPORT_SYMBOL vmlinux 0x05f26d20 mmc_get_card +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x062055b7 inode_init_once +EXPORT_SYMBOL vmlinux 0x0632533a filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x064492ed blk_init_queue +EXPORT_SYMBOL vmlinux 0x06489d52 bman_rcr_is_empty +EXPORT_SYMBOL vmlinux 0x064ef98c setattr_copy +EXPORT_SYMBOL vmlinux 0x067701b7 free_netdev +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x0686d25e may_umount +EXPORT_SYMBOL vmlinux 0x06bbb24a mempool_resize +EXPORT_SYMBOL vmlinux 0x06cb07ed key_put +EXPORT_SYMBOL vmlinux 0x06f2f0c8 textsearch_prepare +EXPORT_SYMBOL vmlinux 0x06fc6dbc input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x06ff5eeb uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x07218603 simple_transaction_release +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x07472495 netif_rx +EXPORT_SYMBOL vmlinux 0x074e9213 down_killable +EXPORT_SYMBOL vmlinux 0x07541292 __get_page_tail +EXPORT_SYMBOL vmlinux 0x0769cf72 end_page_writeback +EXPORT_SYMBOL vmlinux 0x076a5b37 netlink_ack +EXPORT_SYMBOL vmlinux 0x0799aca4 local_bh_enable +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07b895e4 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x07b8b25c pci_platform_rom +EXPORT_SYMBOL vmlinux 0x07c4e794 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07cfab71 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x07d3172f proc_create_data +EXPORT_SYMBOL vmlinux 0x07d3728d skb_pad +EXPORT_SYMBOL vmlinux 0x07e428f8 __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x07e5ea37 netif_skb_dev_features +EXPORT_SYMBOL vmlinux 0x08120309 pci_iounmap +EXPORT_SYMBOL vmlinux 0x0812b874 padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0x0817ef58 skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x0838e4a2 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0x083c2cbe of_get_next_parent +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x0851ace8 nf_getsockopt +EXPORT_SYMBOL vmlinux 0x085a883e lro_receive_frags +EXPORT_SYMBOL vmlinux 0x08603cbf blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x086961f8 sock_no_getname +EXPORT_SYMBOL vmlinux 0x08734f67 arp_xmit +EXPORT_SYMBOL vmlinux 0x08cc84e7 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x08d3c132 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x08f924a6 d_delete +EXPORT_SYMBOL vmlinux 0x090d2144 inet_bind +EXPORT_SYMBOL vmlinux 0x091d465e pm860x_page_bulk_write +EXPORT_SYMBOL vmlinux 0x09436a9f bdev_read_only +EXPORT_SYMBOL vmlinux 0x09708265 clone_cred +EXPORT_SYMBOL vmlinux 0x0975d634 generic_make_request +EXPORT_SYMBOL vmlinux 0x097c0d7f __neigh_create +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x0997a8b1 generic_pipe_buf_map +EXPORT_SYMBOL vmlinux 0x099d185b __lru_cache_add +EXPORT_SYMBOL vmlinux 0x09b23948 flush_dcache_page +EXPORT_SYMBOL vmlinux 0x09b24330 km_state_expired +EXPORT_SYMBOL vmlinux 0x09b88d21 agp_put_bridge +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c7d628 keyring_alloc +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09da2394 uart_match_port +EXPORT_SYMBOL vmlinux 0x09dbbad9 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x09ff543c lock_sock_nested +EXPORT_SYMBOL vmlinux 0x0a0a858e jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a2b4790 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x0a556b5f input_register_handle +EXPORT_SYMBOL vmlinux 0x0a5c845c __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x0a8d7f03 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x0a9f6d59 pme_attr_set +EXPORT_SYMBOL vmlinux 0x0aa33b4e bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x0aa3bf34 register_gifconf +EXPORT_SYMBOL vmlinux 0x0acb1a3c __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0x0acbe84b done_path_create +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ad0b9a7 new_inode +EXPORT_SYMBOL vmlinux 0x0ae370bb fail_migrate_page +EXPORT_SYMBOL vmlinux 0x0afc4f59 qman_enqueue_orp +EXPORT_SYMBOL vmlinux 0x0afe5ec2 cookie_check_timestamp +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b3ed21f tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x0b45727c sock_i_ino +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b8676cd netif_device_detach +EXPORT_SYMBOL vmlinux 0x0bbb0f04 genl_notify +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bff2acd dcache_readdir +EXPORT_SYMBOL vmlinux 0x0c0209a8 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x0c0a7889 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x0c27a281 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x0c2a03b0 tty_port_init +EXPORT_SYMBOL vmlinux 0x0c3ad207 put_io_context +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c5d9163 alloc_mdio_bitbang +EXPORT_SYMBOL vmlinux 0x0c65e73c scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0x0c6839f3 __module_get +EXPORT_SYMBOL vmlinux 0x0c8c9e99 scsi_show_extd_sense +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0ce900af blk_finish_plug +EXPORT_SYMBOL vmlinux 0x0d09a1ce agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0x0d17b6a9 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x0d2932d8 seq_read +EXPORT_SYMBOL vmlinux 0x0d4674a1 save_mount_options +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d6c963c copy_from_user +EXPORT_SYMBOL vmlinux 0x0d8f5033 splice_from_pipe_end +EXPORT_SYMBOL vmlinux 0x0d91ecde skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x0d97277d rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0daab6c5 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x0db55453 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x0e3028dd blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x0e31fa00 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x0e3d47d9 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x0e3da375 elv_rb_find +EXPORT_SYMBOL vmlinux 0x0e539f79 inet_frag_evictor +EXPORT_SYMBOL vmlinux 0x0e5c15a9 netdev_info +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e8f30f6 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x0ec7f68e pci_disable_obff +EXPORT_SYMBOL vmlinux 0x0edbeccd dev_notice +EXPORT_SYMBOL vmlinux 0x0ee25386 create_syslog_header +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f1649ac add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x0f2b4ac2 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x0f37e26c dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f58ec24 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x0f5faa7e wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x0f6f5ffe ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x0f8c0149 pme2_have_control +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fafcc90 netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0x0fb791f5 neigh_table_init +EXPORT_SYMBOL vmlinux 0x0fb8b413 input_set_keycode +EXPORT_SYMBOL vmlinux 0x0ff970a3 qman_create_fq +EXPORT_SYMBOL vmlinux 0x0ffa1071 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x1014881a setup_arg_pages +EXPORT_SYMBOL vmlinux 0x102a0435 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x10398d7c n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x104e9961 dquot_alloc +EXPORT_SYMBOL vmlinux 0x1089d369 __dev_remove_offload +EXPORT_SYMBOL vmlinux 0x10aa2cfb abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x10b6d52e pci_select_bars +EXPORT_SYMBOL vmlinux 0x10c1eb61 napi_gro_flush +EXPORT_SYMBOL vmlinux 0x10dd49a5 d_add_ci +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x1111dc95 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x111fd6db __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x11267875 scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0x1159057f fsnotify_get_group +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x1182d83a cpuidle_disable +EXPORT_SYMBOL vmlinux 0x1193e1bb inet_put_port +EXPORT_SYMBOL vmlinux 0x11ba4699 swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0x11c9185c of_iomap +EXPORT_SYMBOL vmlinux 0x11d62553 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x11d7ce17 security_path_chown +EXPORT_SYMBOL vmlinux 0x11db129a sys_fillrect +EXPORT_SYMBOL vmlinux 0x11e6c861 serio_reconnect +EXPORT_SYMBOL vmlinux 0x11eab3ff agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0x11ed6147 __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x122043a8 of_find_node_with_property +EXPORT_SYMBOL vmlinux 0x122a7281 netdev_printk +EXPORT_SYMBOL vmlinux 0x124266e2 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x127e0603 poll_freewait +EXPORT_SYMBOL vmlinux 0x129f161e con_copy_unimap +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12a406f7 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x12d6c748 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x12d76f5e sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x12dfeb12 vprintk_emit +EXPORT_SYMBOL vmlinux 0x12fd52f0 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x13092c40 phy_print_status +EXPORT_SYMBOL vmlinux 0x131f67eb fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x1321744d of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x133c221a uart_add_one_port +EXPORT_SYMBOL vmlinux 0x1348760d ipmi_request_settime +EXPORT_SYMBOL vmlinux 0x134f3d8b xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x13510458 init_task +EXPORT_SYMBOL vmlinux 0x13551932 scsi_print_sense +EXPORT_SYMBOL vmlinux 0x13576fb7 of_device_alloc +EXPORT_SYMBOL vmlinux 0x1373e0d6 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x137dc587 napi_get_frags +EXPORT_SYMBOL vmlinux 0x13816143 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x139d9e86 pcie_get_mps +EXPORT_SYMBOL vmlinux 0x13c0da50 pci_scan_slot +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13d53073 led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0x13df4199 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x13e0222e fifo_set_limit +EXPORT_SYMBOL vmlinux 0x13e38f5c up_read +EXPORT_SYMBOL vmlinux 0x13ec2766 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x1414be98 dev_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x1418fbf0 lock_may_read +EXPORT_SYMBOL vmlinux 0x1464aa16 dev_mc_del +EXPORT_SYMBOL vmlinux 0x147553ce __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x14a370f9 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0x14f45fcc bman_free_pool +EXPORT_SYMBOL vmlinux 0x1523b26d dma_async_device_register +EXPORT_SYMBOL vmlinux 0x153d63d8 nobh_write_begin +EXPORT_SYMBOL vmlinux 0x1545ec2c blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x1551dc51 bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x156e52c0 devm_gpio_free +EXPORT_SYMBOL vmlinux 0x15864b03 flex_array_get +EXPORT_SYMBOL vmlinux 0x15989b37 file_open_root +EXPORT_SYMBOL vmlinux 0x15b8eaed xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x15c43715 scsi_setup_blk_pc_cmnd +EXPORT_SYMBOL vmlinux 0x15d0981d file_ns_capable +EXPORT_SYMBOL vmlinux 0x15d3fd60 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x15e07878 elv_rb_del +EXPORT_SYMBOL vmlinux 0x15e7e3d8 __ps2_command +EXPORT_SYMBOL vmlinux 0x15f571ec blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x1600f578 qman_retire_fq +EXPORT_SYMBOL vmlinux 0x1606eaf8 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x160ff71c netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x16311f8f bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x1670f87c bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x167c5967 print_hex_dump +EXPORT_SYMBOL vmlinux 0x168e185a scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x169d2b3a fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL vmlinux 0x16e5048c dump_skip +EXPORT_SYMBOL vmlinux 0x16f2852b dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x16f6e5ad posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x173b2237 __nla_put +EXPORT_SYMBOL vmlinux 0x1743414f __debugger_fault_handler +EXPORT_SYMBOL vmlinux 0x175fc234 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x17648396 dev_base_lock +EXPORT_SYMBOL vmlinux 0x1778cb57 nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x17922633 vfs_symlink +EXPORT_SYMBOL vmlinux 0x179a94b5 d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0x17aacf70 phy_start_aneg +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17b67713 send_sig +EXPORT_SYMBOL vmlinux 0x17c68664 blkdev_get +EXPORT_SYMBOL vmlinux 0x17d497aa qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x17e28473 fsl_upm_run_pattern +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x180d8b50 of_get_min_tck +EXPORT_SYMBOL vmlinux 0x1835bebe pci_enable_msix +EXPORT_SYMBOL vmlinux 0x183763ec do_SAK +EXPORT_SYMBOL vmlinux 0x183a2bf0 clear_inode +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x184e6c85 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x1851c0bc splice_from_pipe_next +EXPORT_SYMBOL vmlinux 0x1851e9f4 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x1857aa39 proc_dointvec +EXPORT_SYMBOL vmlinux 0x186d3424 always_delete_dentry +EXPORT_SYMBOL vmlinux 0x1870f8c1 qman_fqid_pool_alloc +EXPORT_SYMBOL vmlinux 0x1879d9cb devfreq_interval_update +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x188fad06 dev_mc_flush +EXPORT_SYMBOL vmlinux 0x1895c651 fddi_type_trans +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18b71c1e mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x18c5c3d4 input_register_handler +EXPORT_SYMBOL vmlinux 0x19001a78 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x19111a40 lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x1924e7ad __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x19444627 memcpy_fromiovecend +EXPORT_SYMBOL vmlinux 0x197c9a9f bio_integrity_split +EXPORT_SYMBOL vmlinux 0x199d906b tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x199ec4fb arch_spin_unlock_wait +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19a7d0a1 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x19a8d149 devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0x19b460b3 read_cache_page_async +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19ddafb9 agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0x19e0fa84 cdrom_open +EXPORT_SYMBOL vmlinux 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL vmlinux 0x1a111a41 ftrace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x1a23746f skb_copy_datagram_from_iovec +EXPORT_SYMBOL vmlinux 0x1a31f4cb free_buffer_head +EXPORT_SYMBOL vmlinux 0x1a4f4d9e sock_create +EXPORT_SYMBOL vmlinux 0x1a79c3fe pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x1aa297de pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x1ab9e75d clk_get +EXPORT_SYMBOL vmlinux 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL vmlinux 0x1ac5d3cb strcspn +EXPORT_SYMBOL vmlinux 0x1acb5d40 dscr_default +EXPORT_SYMBOL vmlinux 0x1ace138d bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0x1ad03c2e pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x1ad04f85 __pskb_copy +EXPORT_SYMBOL vmlinux 0x1aed7030 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x1af62a99 panic_notifier_list +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b132009 rename_lock +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b353088 clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0x1b360a32 sk_net_capable +EXPORT_SYMBOL vmlinux 0x1b39df35 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x1b570ab8 skb_clone +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1b952bae ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x1b9dc5dd ihold +EXPORT_SYMBOL vmlinux 0x1b9e0ff1 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x1bc11fdb qdisc_reset +EXPORT_SYMBOL vmlinux 0x1bc4ff03 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0x1bca2b59 load_fp_state +EXPORT_SYMBOL vmlinux 0x1bd258e7 generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x1bd8b5a4 arp_tbl +EXPORT_SYMBOL vmlinux 0x1bdc26cf sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0x1be90407 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x1bfec830 __iounmap_at +EXPORT_SYMBOL vmlinux 0x1c09aba3 qman_static_dequeue_get +EXPORT_SYMBOL vmlinux 0x1c151980 mb_cache_create +EXPORT_SYMBOL vmlinux 0x1c1e6f59 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x1c34aade ip6_xmit +EXPORT_SYMBOL vmlinux 0x1c3e02e4 memcmp +EXPORT_SYMBOL vmlinux 0x1c5864a3 audit_log_task_info +EXPORT_SYMBOL vmlinux 0x1c80ceca wait_on_sync_kiocb +EXPORT_SYMBOL vmlinux 0x1c80de9c ip_send_check +EXPORT_SYMBOL vmlinux 0x1ca5dd1b qman_fq_state +EXPORT_SYMBOL vmlinux 0x1cbc9e37 inet_del_offload +EXPORT_SYMBOL vmlinux 0x1ce2bc94 generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x1d1e79b9 pci_disable_ltr +EXPORT_SYMBOL vmlinux 0x1d242fd6 write_cache_pages +EXPORT_SYMBOL vmlinux 0x1d309fdd security_task_getsecid +EXPORT_SYMBOL vmlinux 0x1d6c6a67 sync_inode +EXPORT_SYMBOL vmlinux 0x1d6cf0a2 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0x1d6ff864 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x1d725c46 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x1d772af8 ppp_input_error +EXPORT_SYMBOL vmlinux 0x1d792c61 neigh_destroy +EXPORT_SYMBOL vmlinux 0x1d8ea629 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x1db8ee30 dget_parent +EXPORT_SYMBOL vmlinux 0x1dbc4d0c proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dd4e44e scsi_register +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1dd8831f pme_ctx_init +EXPORT_SYMBOL vmlinux 0x1dddd2d7 inet_recvmsg +EXPORT_SYMBOL vmlinux 0x1ddf41ea irq_set_chip +EXPORT_SYMBOL vmlinux 0x1df1b797 xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x1df2d34e blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x1e032ee2 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e522c5c neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x1e555115 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ea6b94e locks_copy_lock +EXPORT_SYMBOL vmlinux 0x1ec3bed9 hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0x1ee138b8 km_state_notify +EXPORT_SYMBOL vmlinux 0x1eed9ed3 alloc_disk +EXPORT_SYMBOL vmlinux 0x1eef8437 phy_drivers_register +EXPORT_SYMBOL vmlinux 0x1efdb1fc filemap_fault +EXPORT_SYMBOL vmlinux 0x1f19106e tcf_hash_search +EXPORT_SYMBOL vmlinux 0x1f1a43fd __scsi_add_device +EXPORT_SYMBOL vmlinux 0x1f2ff1a5 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x1f39de76 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x1f4212ba blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x1f5ad908 pme_attr_get +EXPORT_SYMBOL vmlinux 0x1f608d49 udp_add_offload +EXPORT_SYMBOL vmlinux 0x1f6ce67a sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x1f6f2b2d __locks_copy_lock +EXPORT_SYMBOL vmlinux 0x1f8a3de5 pci_set_power_state +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fc9c24d pipe_lock +EXPORT_SYMBOL vmlinux 0x1fce75a2 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fdd4f12 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fedf0f4 __request_region +EXPORT_SYMBOL vmlinux 0x1ff05b19 _dev_info +EXPORT_SYMBOL vmlinux 0x1ff07a9c set_nlink +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x203b4726 sock_wmalloc +EXPORT_SYMBOL vmlinux 0x20405cc8 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x204fadab remove_arg_zero +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x20755456 __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x20a3769a blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x20a58451 scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20a86b3f of_get_pci_address +EXPORT_SYMBOL vmlinux 0x20b2bb2d param_array_ops +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20da11da netif_carrier_off +EXPORT_SYMBOL vmlinux 0x20dfe011 blk_run_queue +EXPORT_SYMBOL vmlinux 0x20f614f5 pci_release_regions +EXPORT_SYMBOL vmlinux 0x2100d38d seq_lseek +EXPORT_SYMBOL vmlinux 0x21173cb3 elevator_init +EXPORT_SYMBOL vmlinux 0x212d96be dev_get_nest_level +EXPORT_SYMBOL vmlinux 0x215ebd78 bitrev16 +EXPORT_SYMBOL vmlinux 0x216226f5 mutex_trylock +EXPORT_SYMBOL vmlinux 0x216d767a nf_reinject +EXPORT_SYMBOL vmlinux 0x21783dfd pci_read_vpd +EXPORT_SYMBOL vmlinux 0x219d6a51 i2c_transfer +EXPORT_SYMBOL vmlinux 0x21b01329 ata_dev_printk +EXPORT_SYMBOL vmlinux 0x21d0a960 blk_recount_segments +EXPORT_SYMBOL vmlinux 0x22023adc tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x220fa578 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x2238f884 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x22456679 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x2265b514 qman_get_portal_config +EXPORT_SYMBOL vmlinux 0x2272412b dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x2278e94b slhc_remember +EXPORT_SYMBOL vmlinux 0x227962bc pci_vpd_truncate +EXPORT_SYMBOL vmlinux 0x2286c1ba tcp_prot +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22d73c62 bman_get_params +EXPORT_SYMBOL vmlinux 0x22e7a16a md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x22e9914d try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x22f59ea9 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL vmlinux 0x234110d8 flush_tlb_range +EXPORT_SYMBOL vmlinux 0x23429b26 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x23507bd6 pci_map_rom +EXPORT_SYMBOL vmlinux 0x235e90f3 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x2376d270 account_page_redirty +EXPORT_SYMBOL vmlinux 0x238c2548 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x23934975 blk_free_tags +EXPORT_SYMBOL vmlinux 0x23a3c54f md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23b3b9f8 clear_bdi_congested +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23bd659b wireless_spy_update +EXPORT_SYMBOL vmlinux 0x23be0441 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x23c9891c kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x23f2243d mempool_free +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x240316d7 pci_request_regions +EXPORT_SYMBOL vmlinux 0x24148a46 ip_check_defrag +EXPORT_SYMBOL vmlinux 0x241de92e user_path_at +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x24450ad3 __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x24459edf dm_unregister_target +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x245a5a94 sleep_on_timeout +EXPORT_SYMBOL vmlinux 0x245c4630 posix_lock_file +EXPORT_SYMBOL vmlinux 0x2475bcff check_disk_change +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x2484adc3 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0x248b85f3 phy_init_eee +EXPORT_SYMBOL vmlinux 0x24b0f90c of_clk_get_by_name +EXPORT_SYMBOL vmlinux 0x24c83699 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x24e44c2b jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x24e5f7a7 tty_register_device +EXPORT_SYMBOL vmlinux 0x24f4e8bb bio_advance +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x252d8f8e mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x2533dda1 bman_query_pools +EXPORT_SYMBOL vmlinux 0x254299ab tcp_hashinfo +EXPORT_SYMBOL vmlinux 0x2555be95 lookup_bdev +EXPORT_SYMBOL vmlinux 0x2556c292 tty_vhangup +EXPORT_SYMBOL vmlinux 0x2563d5eb blk_execute_rq +EXPORT_SYMBOL vmlinux 0x25674971 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x256e1f7f generic_file_fsync +EXPORT_SYMBOL vmlinux 0x2571658d generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x257b6a5d i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25866fa7 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x258b8c73 audit_log_start +EXPORT_SYMBOL vmlinux 0x25996ef0 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x25b4e72d of_scan_pci_bridge +EXPORT_SYMBOL vmlinux 0x25c23c1b simple_dir_operations +EXPORT_SYMBOL vmlinux 0x25c677c4 mac_pton +EXPORT_SYMBOL vmlinux 0x25e8bb28 pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x260cf8f8 of_get_property +EXPORT_SYMBOL vmlinux 0x2638371f nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x26477c07 __vmalloc +EXPORT_SYMBOL vmlinux 0x264be7e6 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x264fb1c5 seq_vprintf +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x265771c3 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x266204e3 uart_get_divisor +EXPORT_SYMBOL vmlinux 0x2665d53a key_create_or_update +EXPORT_SYMBOL vmlinux 0x26772cb3 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x2685c3d7 __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x2689b394 phy_device_free +EXPORT_SYMBOL vmlinux 0x268c3877 nonseekable_open +EXPORT_SYMBOL vmlinux 0x26b760c4 slhc_init +EXPORT_SYMBOL vmlinux 0x26d72790 skb_copy_expand +EXPORT_SYMBOL vmlinux 0x26e01b10 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26eb9930 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x26f0453a blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x2702eaf3 devfreq_add_device +EXPORT_SYMBOL vmlinux 0x270ac49d sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x2712f4f5 crc32_le_combine +EXPORT_SYMBOL vmlinux 0x27311d7b shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x274089b4 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x274c5003 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x27646df3 start_thread +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x278999d8 phy_disconnect +EXPORT_SYMBOL vmlinux 0x2793f6ac abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x27976608 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x27a00ab1 napi_gro_frags +EXPORT_SYMBOL vmlinux 0x27ae2d61 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x27b53139 pme_fd_cmd_pmtcc +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27c29dcb phy_connect_direct +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27f2313e idr_replace +EXPORT_SYMBOL vmlinux 0x27fffaca kill_pid +EXPORT_SYMBOL vmlinux 0x280ab003 netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0x28111117 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x282e18e7 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x28318305 snprintf +EXPORT_SYMBOL vmlinux 0x28616182 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x2868c841 dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x2880785d ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x28879a48 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x288d9e37 dev_printk +EXPORT_SYMBOL vmlinux 0x289b7e29 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28abfe6e scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x28bf6258 of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0x28dd4b7a cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x28df615d serio_unregister_port +EXPORT_SYMBOL vmlinux 0x28ff6d74 vfs_statfs +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x2984f5ea dev_add_pack +EXPORT_SYMBOL vmlinux 0x299cc47c pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0x29a67db1 bman_recovery_cleanup_bpid +EXPORT_SYMBOL vmlinux 0x29b72c4e input_open_device +EXPORT_SYMBOL vmlinux 0x29ccdaec __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x29d8b03e __break_lease +EXPORT_SYMBOL vmlinux 0x29e4b10f pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x29eeba30 dev_mc_sync +EXPORT_SYMBOL vmlinux 0x2a10d46a pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a3bb0bf pci_reenable_device +EXPORT_SYMBOL vmlinux 0x2a46b3f8 cdev_del +EXPORT_SYMBOL vmlinux 0x2a4aad76 handle_edge_irq +EXPORT_SYMBOL vmlinux 0x2a5eb592 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x2a678ccd i2c_bit_add_numbered_bus +EXPORT_SYMBOL vmlinux 0x2a79ac13 clkdev_add +EXPORT_SYMBOL vmlinux 0x2a880025 dquot_destroy +EXPORT_SYMBOL vmlinux 0x2a8dfed3 fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0x2a91ee8d __alloc_skb +EXPORT_SYMBOL vmlinux 0x2a98f17c sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x2aab54db eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x2abc2c35 pci_enable_obff +EXPORT_SYMBOL vmlinux 0x2abfd06d kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x2ac302dd __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2ad3f1d3 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x2ad59dca xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x2aeabe43 devm_gpiod_get +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b2485e0 block_write_begin +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b39aee0 bman_release +EXPORT_SYMBOL vmlinux 0x2b435d0a vfs_mknod +EXPORT_SYMBOL vmlinux 0x2b4e35b6 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x2b545291 ftrace_raw_output_prep +EXPORT_SYMBOL vmlinux 0x2b788bfb neigh_direct_output +EXPORT_SYMBOL vmlinux 0x2b8acb99 kfree_skb_list +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba5feb5 tcf_generic_walker +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bab61ea update_time +EXPORT_SYMBOL vmlinux 0x2bac8f59 remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0x2bb3ea54 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x2bb89fe1 dm_kobject_release +EXPORT_SYMBOL vmlinux 0x2bc33e45 dquot_drop +EXPORT_SYMBOL vmlinux 0x2bdb2a45 block_write_end +EXPORT_SYMBOL vmlinux 0x2bdd6e28 node_states +EXPORT_SYMBOL vmlinux 0x2be0f12d dql_completed +EXPORT_SYMBOL vmlinux 0x2bf750cb generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x2bfce06e filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x2bfe5471 agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c3fa688 mmc_detect_change +EXPORT_SYMBOL vmlinux 0x2c3fe479 flush_old_exec +EXPORT_SYMBOL vmlinux 0x2c427a20 dquot_operations +EXPORT_SYMBOL vmlinux 0x2c7b1fca down_timeout +EXPORT_SYMBOL vmlinux 0x2c900d91 cpufreq_put_global_kobject +EXPORT_SYMBOL vmlinux 0x2c919e3b dm_get_mapinfo +EXPORT_SYMBOL vmlinux 0x2ca8457f inc_nlink +EXPORT_SYMBOL vmlinux 0x2cc49b60 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x2cc52888 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x2cd4bb7b __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x2cf73cb7 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x2cfb8378 qman_stop_dequeues +EXPORT_SYMBOL vmlinux 0x2d03c10d posix_acl_create +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d1c9edf mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d36a3ae blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x2d37342e cpu_online_mask +EXPORT_SYMBOL vmlinux 0x2d434561 kobject_del +EXPORT_SYMBOL vmlinux 0x2d686814 blk_stop_queue +EXPORT_SYMBOL vmlinux 0x2d794035 generic_file_splice_write +EXPORT_SYMBOL vmlinux 0x2d8669c9 flush_icache_user_range +EXPORT_SYMBOL vmlinux 0x2d89342a scsi_show_sense_hdr +EXPORT_SYMBOL vmlinux 0x2d98b153 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x2daaaba9 param_get_byte +EXPORT_SYMBOL vmlinux 0x2db44609 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x2ddab65d fsl_lbc_ctrl_dev +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2dedac3f iw_handler_set_spy +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 0x2e3f4d84 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x2e48bdcf qman_poll_dqrr +EXPORT_SYMBOL vmlinux 0x2e4a8e36 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x2e599dcf tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x2e61753a dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x2e78cc3f start_tty +EXPORT_SYMBOL vmlinux 0x2eeceb42 sk_chk_filter +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 0x2f0e9543 phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0x2f0ec719 genlmsg_put +EXPORT_SYMBOL vmlinux 0x2f287f0d copy_to_user +EXPORT_SYMBOL vmlinux 0x2f2bfba1 agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0x2f3e42ec irq_stat +EXPORT_SYMBOL vmlinux 0x2f61987c sock_release +EXPORT_SYMBOL vmlinux 0x2f64a804 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x2f84d626 tcp_prequeue +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x3027428f xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x3032f900 pneigh_lookup +EXPORT_SYMBOL vmlinux 0x3040db3f mpage_readpages +EXPORT_SYMBOL vmlinux 0x3057291a from_kuid_munged +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x30981796 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30b44f25 nla_reserve +EXPORT_SYMBOL vmlinux 0x30b8b35c cpu_to_chip_id +EXPORT_SYMBOL vmlinux 0x30cada8f radix_tree_next_hole +EXPORT_SYMBOL vmlinux 0x30d75e7a powerpc_debugfs_root +EXPORT_SYMBOL vmlinux 0x30fe452d blk_mq_free_single_hw_queue +EXPORT_SYMBOL vmlinux 0x310134b4 generic_file_remap_pages +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x315acc6e bdi_register +EXPORT_SYMBOL vmlinux 0x315c65fd zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x316b99b4 bdget +EXPORT_SYMBOL vmlinux 0x316fcd1f agp_unbind_memory +EXPORT_SYMBOL vmlinux 0x318cadb1 reciprocal_value +EXPORT_SYMBOL vmlinux 0x3193fe4c inode_permission +EXPORT_SYMBOL vmlinux 0x319e0726 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x31cb230b unregister_cdrom +EXPORT_SYMBOL vmlinux 0x31d61e9a cur_cpu_spec +EXPORT_SYMBOL vmlinux 0x31d93766 sk_mc_loop +EXPORT_SYMBOL vmlinux 0x31f6ec21 phy_attach_direct +EXPORT_SYMBOL vmlinux 0x31f7d40a pme_fd_cmd_fcw +EXPORT_SYMBOL vmlinux 0x3219e13a default_qdisc_ops +EXPORT_SYMBOL vmlinux 0x32233d10 tty_port_close +EXPORT_SYMBOL vmlinux 0x322f48d4 abx500_dump_all_banks +EXPORT_SYMBOL vmlinux 0x32424b34 qman_query_wq +EXPORT_SYMBOL vmlinux 0x3260cebf qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x3264be54 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x32775ada generic_file_llseek +EXPORT_SYMBOL vmlinux 0x327bcb8c jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x327bf883 of_can_translate_address +EXPORT_SYMBOL vmlinux 0x3284c88d tcf_hash_lookup +EXPORT_SYMBOL vmlinux 0x32860d7e qman_fqid_pool_free +EXPORT_SYMBOL vmlinux 0x32867b74 qman_fq_fqid +EXPORT_SYMBOL vmlinux 0x329f3926 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0x32bcea94 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x32f6f952 nobh_writepage +EXPORT_SYMBOL vmlinux 0x330a8b5f __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x3313f505 flock_lock_file_wait +EXPORT_SYMBOL vmlinux 0x3322e93b kdb_current_task +EXPORT_SYMBOL vmlinux 0x333cb37c __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x3354d380 bio_init +EXPORT_SYMBOL vmlinux 0x3395881f skb_copy_datagram_const_iovec +EXPORT_SYMBOL vmlinux 0x33aa48f2 qman_static_dequeue_del +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33ba5cd4 param_ops_bool +EXPORT_SYMBOL vmlinux 0x33c70b06 devm_ioremap_prot +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33d94289 textsearch_register +EXPORT_SYMBOL vmlinux 0x33e2986c sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33fcf44a __kfifo_out_r +EXPORT_SYMBOL vmlinux 0x34062b92 max8998_write_reg +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x342c06d5 scm_detach_fds +EXPORT_SYMBOL vmlinux 0x34360c2e input_set_abs_params +EXPORT_SYMBOL vmlinux 0x344068d4 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x344adbd5 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x345629d4 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x34677566 mmc_register_driver +EXPORT_SYMBOL vmlinux 0x346c4ded rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x347eb9bd param_set_bool +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x349ce8ab vfs_rmdir +EXPORT_SYMBOL vmlinux 0x34b6cebd __free_pages +EXPORT_SYMBOL vmlinux 0x34bdaf9d netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x34d461ff generic_show_options +EXPORT_SYMBOL vmlinux 0x34d5b6cf unlink_framebuffer +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x35118894 mmc_start_bkops +EXPORT_SYMBOL vmlinux 0x35140c7e agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0x3515cd2c __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x3518b16d dev_uc_sync +EXPORT_SYMBOL vmlinux 0x3539f11b match_strlcpy +EXPORT_SYMBOL vmlinux 0x353a5650 vfs_getattr +EXPORT_SYMBOL vmlinux 0x354405ac nf_log_unregister +EXPORT_SYMBOL vmlinux 0x3557abdf iov_iter_copy_from_user +EXPORT_SYMBOL vmlinux 0x358e2055 get_tz_trend +EXPORT_SYMBOL vmlinux 0x3591ecd1 giveup_altivec +EXPORT_SYMBOL vmlinux 0x35bab1e0 tcp_proc_register +EXPORT_SYMBOL vmlinux 0x35c32767 xor_altivec_2 +EXPORT_SYMBOL vmlinux 0x35defc50 iov_iter_advance +EXPORT_SYMBOL vmlinux 0x35e7b3ac tcp_release_cb +EXPORT_SYMBOL vmlinux 0x3607b76c cap_mmap_file +EXPORT_SYMBOL vmlinux 0x360c986b skb_push +EXPORT_SYMBOL vmlinux 0x36584f55 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x368382e2 of_get_named_gpiod_flags +EXPORT_SYMBOL vmlinux 0x36861b90 scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x368877d9 ip6_route_output +EXPORT_SYMBOL vmlinux 0x369d8ab7 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x369e1115 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x36b0e732 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36c735ad kset_unregister +EXPORT_SYMBOL vmlinux 0x36d5aa94 phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0x36d7b11a of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0x36e360e3 __hw_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x36efb28d nf_afinfo +EXPORT_SYMBOL vmlinux 0x36f58f5f generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x371d2130 check_legacy_ioport +EXPORT_SYMBOL vmlinux 0x3721d32f scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x37272377 devfreq_add_governor +EXPORT_SYMBOL vmlinux 0x3729319a jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x372c2bef account_page_writeback +EXPORT_SYMBOL vmlinux 0x37344510 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x37574ea2 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x376698bf pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x378b1cbe netdev_update_features +EXPORT_SYMBOL vmlinux 0x378ca7cf replace_mount_options +EXPORT_SYMBOL vmlinux 0x37bcba35 key_type_keyring +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37c6b744 dma_set_mask +EXPORT_SYMBOL vmlinux 0x37dda23b agp_create_memory +EXPORT_SYMBOL vmlinux 0x380eaf43 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x38374db6 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x383c577f tcf_hash_release +EXPORT_SYMBOL vmlinux 0x384f0e9f skb_free_datagram +EXPORT_SYMBOL vmlinux 0x3857ddf6 bio_map_kern +EXPORT_SYMBOL vmlinux 0x385fc463 devfreq_resume_device +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x38883c1e ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0x388ee861 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x388f9128 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x38941d15 iterate_dir +EXPORT_SYMBOL vmlinux 0x389ac003 tty_throttle +EXPORT_SYMBOL vmlinux 0x38a09b28 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38fb9933 tty_std_termios +EXPORT_SYMBOL vmlinux 0x38fbee36 inet_listen +EXPORT_SYMBOL vmlinux 0x391e19d6 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x39324e75 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x3937ca47 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x393acdd3 cdrom_release +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x394a302a input_register_device +EXPORT_SYMBOL vmlinux 0x3955fcf6 __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x396355cc alloc_pci_dev +EXPORT_SYMBOL vmlinux 0x397eeb28 set_binfmt +EXPORT_SYMBOL vmlinux 0x3983e08f security_inode_permission +EXPORT_SYMBOL vmlinux 0x398f88f9 __pci_register_driver +EXPORT_SYMBOL vmlinux 0x39967da1 skb_queue_tail +EXPORT_SYMBOL vmlinux 0x399ad043 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0x39b8a048 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x39cdf63c wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x3a20ff73 __crc32c_le +EXPORT_SYMBOL vmlinux 0x3a21e46e simple_getattr +EXPORT_SYMBOL vmlinux 0x3a7e4f01 d_rehash +EXPORT_SYMBOL vmlinux 0x3a882066 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x3a9b0f40 tty_free_termios +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3ad85c88 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x3addc699 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x3aeed2b4 scsi_put_command +EXPORT_SYMBOL vmlinux 0x3afc1366 scsi_calculate_bounce_limit +EXPORT_SYMBOL vmlinux 0x3b120f7a __generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x3b19cc3f simple_statfs +EXPORT_SYMBOL vmlinux 0x3b1cc682 vfs_readv +EXPORT_SYMBOL vmlinux 0x3b2f8b44 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x3b36fe3d pme_hw_residue_new +EXPORT_SYMBOL vmlinux 0x3b38f700 inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0x3b51c890 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x3b615a21 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x3b64ed9d i2c_verify_client +EXPORT_SYMBOL vmlinux 0x3b6cd689 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x3b83d8fb pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x3b8d0019 nf_setsockopt +EXPORT_SYMBOL vmlinux 0x3b926c4a phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x3b94c82c __bforget +EXPORT_SYMBOL vmlinux 0x3bd1b1f6 msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x3bd5ead0 clk_add_alias +EXPORT_SYMBOL vmlinux 0x3bef03b9 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x3c325de6 security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x3c399ea4 __blk_end_request +EXPORT_SYMBOL vmlinux 0x3c481c40 filemap_flush +EXPORT_SYMBOL vmlinux 0x3c5f4044 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c8657c1 sock_i_uid +EXPORT_SYMBOL vmlinux 0x3c9d1211 string_get_size +EXPORT_SYMBOL vmlinux 0x3ca4960f blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x3cb5fc00 set_bh_page +EXPORT_SYMBOL vmlinux 0x3cc4b0dc lg_lock_init +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3ce9c922 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x3cf194b8 simple_lookup +EXPORT_SYMBOL vmlinux 0x3d05aae0 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x3d3e7146 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x3d41904f of_get_next_child +EXPORT_SYMBOL vmlinux 0x3d4f2251 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x3d50c176 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x3d5844b3 strnicmp +EXPORT_SYMBOL vmlinux 0x3d6d6e34 simple_write_begin +EXPORT_SYMBOL vmlinux 0x3d775d4f mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x3da4d777 pme_ctx_is_dead +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dfbcbc2 invalidate_bdev +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e20b7f1 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x3e2ad219 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x3e61492e key_reject_and_link +EXPORT_SYMBOL vmlinux 0x3e6e22ab tcf_action_exec +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3ea1c54f tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x3ed63055 zlib_inflateReset +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f1ce4cb mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x3f2adf04 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x3f2ba43c sk_alloc +EXPORT_SYMBOL vmlinux 0x3f3893ae fb_get_mode +EXPORT_SYMBOL vmlinux 0x3f406a3b enable_kernel_altivec +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f4c52b4 update_devfreq +EXPORT_SYMBOL vmlinux 0x3f6629b7 key_validate +EXPORT_SYMBOL vmlinux 0x3f6f67e7 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x3fa63ff2 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x3fb196d5 bioset_free +EXPORT_SYMBOL vmlinux 0x3fd55724 of_n_size_cells +EXPORT_SYMBOL vmlinux 0x3fe0d1c0 slhc_free +EXPORT_SYMBOL vmlinux 0x3fe2ccbe memweight +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3ff62317 local_bh_disable +EXPORT_SYMBOL vmlinux 0x3ff8069b tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x3ff8e495 lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0x4016f758 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x404066c5 idr_for_each +EXPORT_SYMBOL vmlinux 0x404581b4 bdput +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x406edd87 __seq_open_private +EXPORT_SYMBOL vmlinux 0x4073992d wake_up_process +EXPORT_SYMBOL vmlinux 0x407fe2df cont_write_begin +EXPORT_SYMBOL vmlinux 0x4082afff pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x408b58ae pci_enable_msi_block_auto +EXPORT_SYMBOL vmlinux 0x408f094b dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x4090b8c0 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x409959ac find_lock_page +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40b57158 pme_initfq +EXPORT_SYMBOL vmlinux 0x40bb9c94 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL vmlinux 0x410c45a9 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x4117509a mddev_congested +EXPORT_SYMBOL vmlinux 0x41262ca8 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x414a59af drop_nlink +EXPORT_SYMBOL vmlinux 0x4151b8da tty_unlock_pair +EXPORT_SYMBOL vmlinux 0x4159c38f ioremap_wc +EXPORT_SYMBOL vmlinux 0x4168619e bman_pool_max +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x41ae9af6 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x41c30335 complete_request_key +EXPORT_SYMBOL vmlinux 0x41cf86e2 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x41d2c2ff find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x41f4c79f is_bad_inode +EXPORT_SYMBOL vmlinux 0x4211c3c1 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x421c2018 tcf_register_action +EXPORT_SYMBOL vmlinux 0x4233a3d0 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x423b776a ipmi_create_user +EXPORT_SYMBOL vmlinux 0x42594a66 compat_ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x42945d74 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x42977ad4 __hw_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42beb9ac xfrm_lookup +EXPORT_SYMBOL vmlinux 0x42c65986 qman_alloc_fqid_range +EXPORT_SYMBOL vmlinux 0x42dd55bb pskb_expand_head +EXPORT_SYMBOL vmlinux 0x430154ae bman_irqsource_remove +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x43442716 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x434adb82 netpoll_print_options +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x43632d7d of_find_property +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x439b20a4 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x439e469b skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x43a01f90 complete_all +EXPORT_SYMBOL vmlinux 0x43c3860c tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x43feae86 swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x44296382 follow_pfn +EXPORT_SYMBOL vmlinux 0x4462966c generic_readlink +EXPORT_SYMBOL vmlinux 0x44698b7e devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0x446cb605 fsync_bdev +EXPORT_SYMBOL vmlinux 0x447993c6 noop_fsync +EXPORT_SYMBOL vmlinux 0x447af7a9 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x448df29d set_create_files_as +EXPORT_SYMBOL vmlinux 0x448eac3e kmemdup +EXPORT_SYMBOL vmlinux 0x44a5c004 pci_bus_put +EXPORT_SYMBOL vmlinux 0x44b7eb46 vga_tryget +EXPORT_SYMBOL vmlinux 0x44c2acaa mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44eb192e wait_for_completion +EXPORT_SYMBOL vmlinux 0x44edd852 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x44f5e8b5 of_allnodes +EXPORT_SYMBOL vmlinux 0x44f7889d icmp_send +EXPORT_SYMBOL vmlinux 0x44f7929b qm_fq_new +EXPORT_SYMBOL vmlinux 0x44fad067 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x4522ca9f ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x453505ce blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x453fa321 alloc_anon_inode +EXPORT_SYMBOL vmlinux 0x4557a9c7 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x455e3f3d skb_append +EXPORT_SYMBOL vmlinux 0x456c2720 inode_dio_done +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x45914421 gen10g_restart_aneg +EXPORT_SYMBOL vmlinux 0x459d7f28 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x45a1e8ba gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x45a55ec8 __iounmap +EXPORT_SYMBOL vmlinux 0x45a6be13 cpufreq_sysfs_remove_file +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45b08eaa pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0x45be468b bmap +EXPORT_SYMBOL vmlinux 0x4612c59d down_trylock +EXPORT_SYMBOL vmlinux 0x461ac773 kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x461b9852 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x461ebfa0 __copy_tofrom_user +EXPORT_SYMBOL vmlinux 0x462542a2 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x463b913f elevator_change +EXPORT_SYMBOL vmlinux 0x463e64d1 md_register_thread +EXPORT_SYMBOL vmlinux 0x4647d2f3 swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0x464df082 fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46608fa0 getnstimeofday +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x467e829a mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x4684180b genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x468bcda6 cpumask_set_cpu_local_first +EXPORT_SYMBOL vmlinux 0x469cc65b alloc_file +EXPORT_SYMBOL vmlinux 0x469e6431 i8042_remove_filter +EXPORT_SYMBOL vmlinux 0x46c1147d qman_poll_slow +EXPORT_SYMBOL vmlinux 0x46c3f385 __quota_error +EXPORT_SYMBOL vmlinux 0x46d12956 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x46e3e2ed bdgrab +EXPORT_SYMBOL vmlinux 0x46f14a87 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x46f5c9d8 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x4723708f consume_skb +EXPORT_SYMBOL vmlinux 0x472ebd0c bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x4750710c clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x4760ae14 tcf_em_register +EXPORT_SYMBOL vmlinux 0x4780f78d qman_init_fq +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47b29105 pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0x47b3f862 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0x47ba0ed1 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x47bcf84c param_set_ulong +EXPORT_SYMBOL vmlinux 0x47c27ffb sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x47c8baf4 param_ops_uint +EXPORT_SYMBOL vmlinux 0x47f7a038 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x47ffe532 ip_options_compile +EXPORT_SYMBOL vmlinux 0x48034724 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x4804b016 capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0x481d85ed blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x4829a47e memcpy +EXPORT_SYMBOL vmlinux 0x482a2a49 param_set_charp +EXPORT_SYMBOL vmlinux 0x4834f352 dquot_quota_off +EXPORT_SYMBOL vmlinux 0x48404b9a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x4841bdee strnchr +EXPORT_SYMBOL vmlinux 0x48552eec register_framebuffer +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x487b9bab decrementer_clockevent +EXPORT_SYMBOL vmlinux 0x4880db7a neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x48a771c5 cpu_core_map +EXPORT_SYMBOL vmlinux 0x48ba2ffb generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x48c6db53 of_get_child_by_name +EXPORT_SYMBOL vmlinux 0x48e49088 dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x48ea935a __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x48eb8f3c bdi_unregister +EXPORT_SYMBOL vmlinux 0x48f53cef inet_sendmsg +EXPORT_SYMBOL vmlinux 0x48fabfbf gen_new_estimator +EXPORT_SYMBOL vmlinux 0x48fcbb24 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x493a7522 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x494c3249 pci_pme_capable +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x49a7a59a noop_qdisc +EXPORT_SYMBOL vmlinux 0x49a9070d find_get_page +EXPORT_SYMBOL vmlinux 0x49afcfba ata_link_printk +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49b51473 vfs_llseek +EXPORT_SYMBOL vmlinux 0x49c253d0 nlmsg_notify +EXPORT_SYMBOL vmlinux 0x49c8a631 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x49f4adb4 console_start +EXPORT_SYMBOL vmlinux 0x49f64225 dcache_dir_open +EXPORT_SYMBOL vmlinux 0x49fc8c9f blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x4a0435e9 lro_flush_pkt +EXPORT_SYMBOL vmlinux 0x4a0c456b proc_symlink +EXPORT_SYMBOL vmlinux 0x4a1385f0 pagevec_lookup +EXPORT_SYMBOL vmlinux 0x4a20e02a posix_lock_file_wait +EXPORT_SYMBOL vmlinux 0x4a358252 __bitmap_subset +EXPORT_SYMBOL vmlinux 0x4a614894 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x4a80a727 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0x4a928de5 flush_tlb_page +EXPORT_SYMBOL vmlinux 0x4ab0145d thaw_super +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4ad66460 search_binary_handler +EXPORT_SYMBOL vmlinux 0x4ae09e90 tty_port_destroy +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b10de6e generic_write_checks +EXPORT_SYMBOL vmlinux 0x4b11e436 fb_find_mode +EXPORT_SYMBOL vmlinux 0x4b314acc generic_read_dir +EXPORT_SYMBOL vmlinux 0x4b324ab0 truncate_setsize +EXPORT_SYMBOL vmlinux 0x4b45dcf5 dma_iommu_ops +EXPORT_SYMBOL vmlinux 0x4b49028f ip_cmsg_recv +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b658a58 override_creds +EXPORT_SYMBOL vmlinux 0x4b6aa678 dm_put_device +EXPORT_SYMBOL vmlinux 0x4b76d574 vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0x4b7ed27b sleep_on +EXPORT_SYMBOL vmlinux 0x4b868bb2 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x4bd7ce71 pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0x4bd86d40 default_file_splice_read +EXPORT_SYMBOL vmlinux 0x4c051ecf set_device_ro +EXPORT_SYMBOL vmlinux 0x4c11435a _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c1182cb bitmap_scnprintf +EXPORT_SYMBOL vmlinux 0x4c4bf593 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x4c7d147b km_policy_expired +EXPORT_SYMBOL vmlinux 0x4c8f1c80 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL vmlinux 0x4c991d89 dquot_commit +EXPORT_SYMBOL vmlinux 0x4ca9669f scnprintf +EXPORT_SYMBOL vmlinux 0x4cb0e988 gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0x4cb4a1c9 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x4cbbd171 __bitmap_weight +EXPORT_SYMBOL vmlinux 0x4cc5cb39 backlight_device_register +EXPORT_SYMBOL vmlinux 0x4cd06fa3 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4d4a8aa9 dput +EXPORT_SYMBOL vmlinux 0x4d6ef265 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x4d7042fc generic_permission +EXPORT_SYMBOL vmlinux 0x4d93a097 file_update_time +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4d9dcda5 qman_fqid_pool_destroy +EXPORT_SYMBOL vmlinux 0x4d9e9beb page_symlink +EXPORT_SYMBOL vmlinux 0x4da7c931 rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0x4dcc85c8 vm_mmap +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4debb6ee devm_gpiod_put +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4df5b1a6 pci_target_state +EXPORT_SYMBOL vmlinux 0x4dfed71c flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x4e02112c bio_clone_bioset +EXPORT_SYMBOL vmlinux 0x4e06f2f3 elevator_exit +EXPORT_SYMBOL vmlinux 0x4e10fa9d udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x4e1eb268 netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x4e2f1622 pme_ctx_reconfigure_tx +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e4ca550 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x4e60b16b scsi_dma_map +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e786d13 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0x4e81f01a blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x4e910feb unlock_new_inode +EXPORT_SYMBOL vmlinux 0x4e9dffb5 ip_fast_csum +EXPORT_SYMBOL vmlinux 0x4eb9478e alloc_disk_node +EXPORT_SYMBOL vmlinux 0x4ec98c6e follow_down +EXPORT_SYMBOL vmlinux 0x4ed3599c ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x4ed8f45c sys_copyarea +EXPORT_SYMBOL vmlinux 0x4eda40bf simple_open +EXPORT_SYMBOL vmlinux 0x4edd72f7 block_all_signals +EXPORT_SYMBOL vmlinux 0x4eec99aa pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x4f03c1b0 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f248523 of_find_node_by_name +EXPORT_SYMBOL vmlinux 0x4f29176a generic_removexattr +EXPORT_SYMBOL vmlinux 0x4f297998 kill_pgrp +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f44a618 would_dump +EXPORT_SYMBOL vmlinux 0x4f47293a dev_err +EXPORT_SYMBOL vmlinux 0x4f49adb7 elv_register_queue +EXPORT_SYMBOL vmlinux 0x4f4e3f89 release_firmware +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f8c6444 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x4fadf512 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x4fbf0d96 igrab +EXPORT_SYMBOL vmlinux 0x4fd591c4 fput +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x504d7259 tty_pair_get_pty +EXPORT_SYMBOL vmlinux 0x50635fe9 __pci_enable_wake +EXPORT_SYMBOL vmlinux 0x508d8ee1 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x5095db33 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x509c3b8d i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x50a90e8d bsearch +EXPORT_SYMBOL vmlinux 0x50ae7d80 __idr_pre_get +EXPORT_SYMBOL vmlinux 0x50b52935 blk_put_request +EXPORT_SYMBOL vmlinux 0x50b7563d dump_emit +EXPORT_SYMBOL vmlinux 0x50babd85 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x50bdc1ad vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x50d2592d hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0x50ea1dad scsi_remove_target +EXPORT_SYMBOL vmlinux 0x50f08f46 call_netdevice_notifiers_info +EXPORT_SYMBOL vmlinux 0x5109bf84 sget +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x5123a60f arp_find +EXPORT_SYMBOL vmlinux 0x5128338d inode_needs_sync +EXPORT_SYMBOL vmlinux 0x5139dd98 pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x513fc48e dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x514d2a17 d_set_d_op +EXPORT_SYMBOL vmlinux 0x51566afc single_release +EXPORT_SYMBOL vmlinux 0x5189068d tty_hangup +EXPORT_SYMBOL vmlinux 0x519b0da3 finish_wait +EXPORT_SYMBOL vmlinux 0x51c12b89 do_truncate +EXPORT_SYMBOL vmlinux 0x51cd5748 touch_buffer +EXPORT_SYMBOL vmlinux 0x51d08bd3 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x51d3a15b generic_pipe_buf_unmap +EXPORT_SYMBOL vmlinux 0x51dce73b xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x51ec2a74 blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0x52004f89 of_match_device +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x520b9148 kernel_read +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x5227b024 kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0x52289efc free_task +EXPORT_SYMBOL vmlinux 0x523c0793 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x5245f6a4 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL vmlinux 0x52602812 fasync_helper +EXPORT_SYMBOL vmlinux 0x526dc138 qman_set_null_cb +EXPORT_SYMBOL vmlinux 0x52771110 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x52926c1e pme_ctx_disable +EXPORT_SYMBOL vmlinux 0x52b7f6ff pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x53023dbe generic_write_end +EXPORT_SYMBOL vmlinux 0x53030111 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x536cc847 memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x53762ac7 generic_writepages +EXPORT_SYMBOL vmlinux 0x5377e556 hex2bin +EXPORT_SYMBOL vmlinux 0x53801f2f security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0x5395d6d9 keyring_clear +EXPORT_SYMBOL vmlinux 0x5396a537 unregister_filesystem +EXPORT_SYMBOL vmlinux 0x53d5fc93 dst_alloc +EXPORT_SYMBOL vmlinux 0x53deaa14 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x53ea77c7 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x53ebab1b _outsl_ns +EXPORT_SYMBOL vmlinux 0x53ee5241 key_revoke +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x5412c7c7 up +EXPORT_SYMBOL vmlinux 0x54138d9b mdiobus_read +EXPORT_SYMBOL vmlinux 0x5414e9b8 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x541b3956 ppp_dev_name +EXPORT_SYMBOL vmlinux 0x54245b39 kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x54591047 blk_mq_init_commands +EXPORT_SYMBOL vmlinux 0x545939d2 dev_alloc_name +EXPORT_SYMBOL vmlinux 0x545e8ef5 dquot_commit_info +EXPORT_SYMBOL vmlinux 0x546c06a5 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x54759e99 sock_setsockopt +EXPORT_SYMBOL vmlinux 0x54824b13 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x548cb517 bman_poll +EXPORT_SYMBOL vmlinux 0x54918a61 bio_pair_release +EXPORT_SYMBOL vmlinux 0x549be8fc serio_rescan +EXPORT_SYMBOL vmlinux 0x54a4cccd con_is_bound +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54c2158c pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x54cb6eac kmem_cache_free +EXPORT_SYMBOL vmlinux 0x54ddb072 blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0x54e3cc3b param_get_int +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x55294ef4 freezing_slow_path +EXPORT_SYMBOL vmlinux 0x55419d93 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x5549253a tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x5568c553 complete +EXPORT_SYMBOL vmlinux 0x556c2740 hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x556df6d0 md_write_end +EXPORT_SYMBOL vmlinux 0x5577ef9e udp_table +EXPORT_SYMBOL vmlinux 0x5590caca generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x5594be03 bitmap_remap +EXPORT_SYMBOL vmlinux 0x55b057b2 phy_detach +EXPORT_SYMBOL vmlinux 0x55b0859d dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x55b33d54 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x55ccd4d2 hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0x55e5a6fd xfrm_register_km +EXPORT_SYMBOL vmlinux 0x55f36d7a __serio_register_driver +EXPORT_SYMBOL vmlinux 0x5614b010 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x5616644a scsi_execute +EXPORT_SYMBOL vmlinux 0x561e70c0 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0x5624f871 input_set_capability +EXPORT_SYMBOL vmlinux 0x5634411a i2c_bit_algo +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x563ce926 sk_receive_skb +EXPORT_SYMBOL vmlinux 0x5642793a radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x56607edd bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x568a5379 dma_pool_create +EXPORT_SYMBOL vmlinux 0x569a862d tty_pair_get_tty +EXPORT_SYMBOL vmlinux 0x56a10763 csum_tcpudp_magic +EXPORT_SYMBOL vmlinux 0x56c0d731 km_policy_notify +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56e1d331 agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0x56e93f6b inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x570e2bb7 __nlmsg_put +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x573732e5 page_follow_link_light +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x575af70c on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x578148bf inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x5785384a flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x5792f848 strlcpy +EXPORT_SYMBOL vmlinux 0x579bcc6a dst_discard +EXPORT_SYMBOL vmlinux 0x579f65c8 pme_fd_cmd_fcr +EXPORT_SYMBOL vmlinux 0x579fbcd2 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0x57b9b7dc fd_install +EXPORT_SYMBOL vmlinux 0x57d67680 get_write_access +EXPORT_SYMBOL vmlinux 0x57ea298d phy_connect +EXPORT_SYMBOL vmlinux 0x5814e055 bm_pool_free +EXPORT_SYMBOL vmlinux 0x58387bc9 ab3100_event_register +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x585c4704 km_query +EXPORT_SYMBOL vmlinux 0x58622ea7 dev_get_by_flags_rcu +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x5877d8ef qman_static_dequeue_add +EXPORT_SYMBOL vmlinux 0x587fe1c2 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0x58b0ce4f skb_find_text +EXPORT_SYMBOL vmlinux 0x58ba471f iterate_mounts +EXPORT_SYMBOL vmlinux 0x58bb3a6e arp_send +EXPORT_SYMBOL vmlinux 0x58bca074 flush_tlb_mm +EXPORT_SYMBOL vmlinux 0x58d1070a of_get_address +EXPORT_SYMBOL vmlinux 0x58f18a1d cad_pid +EXPORT_SYMBOL vmlinux 0x5927fb0a jbd2_journal_get_undo_access +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 0x597eec32 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x59897c73 ps2_command +EXPORT_SYMBOL vmlinux 0x598df25e filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x59907c53 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x5991219c cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x599dd9bc md_check_recovery +EXPORT_SYMBOL vmlinux 0x59b3378a completion_done +EXPORT_SYMBOL vmlinux 0x59c7bd9f mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x5a025f7b arch_local_irq_restore +EXPORT_SYMBOL vmlinux 0x5a0aaa12 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x5a17b95f devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x5a27c70f inet_csk_accept +EXPORT_SYMBOL vmlinux 0x5a2d4c01 ilookup +EXPORT_SYMBOL vmlinux 0x5a388760 sockfd_lookup +EXPORT_SYMBOL vmlinux 0x5a4e47b8 dma_direct_ops +EXPORT_SYMBOL vmlinux 0x5a5536c2 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x5a5e1c90 __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x5a625362 mmc_can_trim +EXPORT_SYMBOL vmlinux 0x5a921311 strncmp +EXPORT_SYMBOL vmlinux 0x5a97d855 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x5a9f1d63 memmove +EXPORT_SYMBOL vmlinux 0x5ab2c866 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x5ab56852 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x5acc0013 __scm_send +EXPORT_SYMBOL vmlinux 0x5adf76e4 d_alloc_name +EXPORT_SYMBOL vmlinux 0x5ae50279 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x5afc5eaa __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x5b2013c9 agp_find_bridge +EXPORT_SYMBOL vmlinux 0x5b303a62 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x5b330b73 scsi_host_get +EXPORT_SYMBOL vmlinux 0x5b332082 netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x5b39988e ftrace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x5b4267f5 pci_bus_type +EXPORT_SYMBOL vmlinux 0x5b56860c vm_munmap +EXPORT_SYMBOL vmlinux 0x5b631a64 inet_addr_type +EXPORT_SYMBOL vmlinux 0x5b864ebc eth_mac_addr +EXPORT_SYMBOL vmlinux 0x5b9828c5 dma_spin_lock +EXPORT_SYMBOL vmlinux 0x5ba43a62 dev_driver_string +EXPORT_SYMBOL vmlinux 0x5ba7a17a dev_remove_offload +EXPORT_SYMBOL vmlinux 0x5bb36b34 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x5bc10524 printk_emit +EXPORT_SYMBOL vmlinux 0x5be04147 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x5be04aac file_remove_suid +EXPORT_SYMBOL vmlinux 0x5be6bb51 dqput +EXPORT_SYMBOL vmlinux 0x5befbd3f fs_bio_set +EXPORT_SYMBOL vmlinux 0x5bf63794 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0x5c25534b xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x5c37f319 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x5c56aa57 mapping_tagged +EXPORT_SYMBOL vmlinux 0x5c5ac9d8 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0x5c98e28e scsi_finish_command +EXPORT_SYMBOL vmlinux 0x5c9dffa1 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x5ca32f27 ppp_channel_index +EXPORT_SYMBOL vmlinux 0x5cc559aa invalidate_partition +EXPORT_SYMBOL vmlinux 0x5cf30e10 __debugger_ipi +EXPORT_SYMBOL vmlinux 0x5cf49845 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5cfbd405 mmc_add_host +EXPORT_SYMBOL vmlinux 0x5d02ba16 serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x5d3ab860 d_prune_aliases +EXPORT_SYMBOL vmlinux 0x5d41c87c param_ops_charp +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d58efa0 convert_ifc_address +EXPORT_SYMBOL vmlinux 0x5d5b5a16 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x5d63cfa0 dev_mc_init +EXPORT_SYMBOL vmlinux 0x5d6bdce1 flex_array_alloc +EXPORT_SYMBOL vmlinux 0x5d70f617 pcim_iounmap +EXPORT_SYMBOL vmlinux 0x5d8326fa proc_set_user +EXPORT_SYMBOL vmlinux 0x5da33dbc single_open +EXPORT_SYMBOL vmlinux 0x5daa9299 do_splice_from +EXPORT_SYMBOL vmlinux 0x5daaa53d input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0x5daae46a find_vma +EXPORT_SYMBOL vmlinux 0x5db549a7 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x5dbc960d inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x5de8fc8e mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x5df6b411 inet6_add_offload +EXPORT_SYMBOL vmlinux 0x5df9016a pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x5e15425b tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0x5e3a8a9c __wake_up +EXPORT_SYMBOL vmlinux 0x5e4c999b proc_mkdir +EXPORT_SYMBOL vmlinux 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5eb7e4a5 jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x5ec2c1ac kernel_write +EXPORT_SYMBOL vmlinux 0x5ec8f9f8 ip_fragment +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ee6976f md_write_start +EXPORT_SYMBOL vmlinux 0x5eebe09a __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0x5eedc818 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f01da69 tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x5f072b42 udp_seq_open +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f184dca jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x5f28c2dc idr_remove +EXPORT_SYMBOL vmlinux 0x5f291096 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x5f2f2433 n_tty_compat_ioctl_helper +EXPORT_SYMBOL vmlinux 0x5f3a05e8 sg_miter_stop +EXPORT_SYMBOL vmlinux 0x5f3b1a5e bdevname +EXPORT_SYMBOL vmlinux 0x5f3c8f5c mmc_assume_removable +EXPORT_SYMBOL vmlinux 0x5f8a2728 isa_io_base +EXPORT_SYMBOL vmlinux 0x5f9781c8 sk_release_kernel +EXPORT_SYMBOL vmlinux 0x5fb1c307 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0x5fb4f0cb serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x5fbd103d eth_rebuild_header +EXPORT_SYMBOL vmlinux 0x5fc11c3e scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL vmlinux 0x5fd5ee6b adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x600c7936 __f_setown +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x6032a750 bio_phys_segments +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x60418330 netdev_has_any_upper_dev +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x608682e6 gen10g_config_aneg +EXPORT_SYMBOL vmlinux 0x6086fae9 rwsem_wake +EXPORT_SYMBOL vmlinux 0x609b16a0 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60a36a5f vfs_link +EXPORT_SYMBOL vmlinux 0x60ad637b find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60df7d00 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x60ef1ab1 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x6120e25e udp_prot +EXPORT_SYMBOL vmlinux 0x612390ad netpoll_set_trap +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x6138670c security_mmap_file +EXPORT_SYMBOL vmlinux 0x61538ad0 param_get_charp +EXPORT_SYMBOL vmlinux 0x619cb7dd simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x61b4c268 bman_poll_slow +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61c32282 scsi_cmd_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x61eef2c9 _insb +EXPORT_SYMBOL vmlinux 0x61f31b33 mark_info_dirty +EXPORT_SYMBOL vmlinux 0x620b6952 tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x62160166 mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x6217071a max8998_read_reg +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x6245c2a4 dev_uc_init +EXPORT_SYMBOL vmlinux 0x62538167 slhc_toss +EXPORT_SYMBOL vmlinux 0x62629990 tty_port_put +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x6286e5f3 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x62982918 tc_classify +EXPORT_SYMBOL vmlinux 0x62a4ace6 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x62acf048 udplite_prot +EXPORT_SYMBOL vmlinux 0x62f5181e sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x630ec573 request_firmware +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x6321d3dc padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x63231951 gen_pool_create +EXPORT_SYMBOL vmlinux 0x63396aec __debugger_break_match +EXPORT_SYMBOL vmlinux 0x63610f74 ata_print_version +EXPORT_SYMBOL vmlinux 0x637faca1 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x63c9ce94 kern_unmount +EXPORT_SYMBOL vmlinux 0x63cc6c52 pme_map_error +EXPORT_SYMBOL vmlinux 0x63e60d49 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x63e75e8e neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x63e7bd12 __cputime_usec_factor +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x641c7ba4 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x6421c670 blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0x642bb1ff dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x6492f25c netpoll_rx_enable +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x649e2288 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x64a4b84d cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x64a56ed0 dquot_resume +EXPORT_SYMBOL vmlinux 0x64a6d5cd dev_emerg +EXPORT_SYMBOL vmlinux 0x64b9c5e5 compat_sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x64bbc288 string_unescape +EXPORT_SYMBOL vmlinux 0x64c4a9b7 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x64da405d dump_align +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x652ce9aa nla_memcmp +EXPORT_SYMBOL vmlinux 0x65311ad6 get_task_io_context +EXPORT_SYMBOL vmlinux 0x653531e6 dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x65664c6c unregister_binfmt +EXPORT_SYMBOL vmlinux 0x657faded ilookup5 +EXPORT_SYMBOL vmlinux 0x65898dfd pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x659650e1 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x6599c967 qman_enqueue +EXPORT_SYMBOL vmlinux 0x659ace6e mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x65ac2f84 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x65b31915 netdev_crit +EXPORT_SYMBOL vmlinux 0x65bb58a2 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x65c4bec0 phy_ethtool_sset +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 0x65e84bc1 block_invalidatepage +EXPORT_SYMBOL vmlinux 0x65ea70f4 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x65edb6b6 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x65f8fc6f dev_alert +EXPORT_SYMBOL vmlinux 0x6621b03e scsi_scan_host +EXPORT_SYMBOL vmlinux 0x6627c52e unregister_md_personality +EXPORT_SYMBOL vmlinux 0x6628a673 inode_set_bytes +EXPORT_SYMBOL vmlinux 0x6651d170 max8925_reg_write +EXPORT_SYMBOL vmlinux 0x668a8765 vfs_unlink +EXPORT_SYMBOL vmlinux 0x668da8d5 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x66aa422b sk_capable +EXPORT_SYMBOL vmlinux 0x6705f46b kfree_skb +EXPORT_SYMBOL vmlinux 0x670c2010 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0x6731390e fget_raw +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x67457af7 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x6746a6be pme_ctx_reconfigure_rx +EXPORT_SYMBOL vmlinux 0x6755aea8 vga_get +EXPORT_SYMBOL vmlinux 0x675b1fc2 bman_get_portal_config +EXPORT_SYMBOL vmlinux 0x675b8f61 param_get_string +EXPORT_SYMBOL vmlinux 0x675ee9ec compat_ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x6769e5dd arp_invalidate +EXPORT_SYMBOL vmlinux 0x6775e1cf make_kgid +EXPORT_SYMBOL vmlinux 0x679cf9ed neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67b7e605 scsi_prep_return +EXPORT_SYMBOL vmlinux 0x67c1d377 path_get +EXPORT_SYMBOL vmlinux 0x67c47349 names_cachep +EXPORT_SYMBOL vmlinux 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL vmlinux 0x67cc62b0 of_device_register +EXPORT_SYMBOL vmlinux 0x67cd0ef8 tty_do_resize +EXPORT_SYMBOL vmlinux 0x67da6ca8 sock_recvmsg +EXPORT_SYMBOL vmlinux 0x67f6c4e8 pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x6829e429 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x6849a15f flex_array_clear +EXPORT_SYMBOL vmlinux 0x68609857 complete_and_exit +EXPORT_SYMBOL vmlinux 0x686c912d tty_kref_put +EXPORT_SYMBOL vmlinux 0x68721661 i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x6888bef7 __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x689ac862 agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0x689de9c4 tty_devnum +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68cf6371 __frontswap_test +EXPORT_SYMBOL vmlinux 0x68e04319 key_invalidate +EXPORT_SYMBOL vmlinux 0x68e05d57 getrawmonotonic +EXPORT_SYMBOL vmlinux 0x68fcc6ec nf_log_register +EXPORT_SYMBOL vmlinux 0x68fe1beb deactivate_super +EXPORT_SYMBOL vmlinux 0x6904b5b9 dquot_enable +EXPORT_SYMBOL vmlinux 0x692f9be7 blk_mq_alloc_single_hw_queue +EXPORT_SYMBOL vmlinux 0x6958a7a9 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x695a750f qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0x696cc37f scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x69771b22 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x698d7a1c mmc_gpio_free_ro +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69cd698f twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x69d130de skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x69d38ed9 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x69d7f8b3 seq_open +EXPORT_SYMBOL vmlinux 0x69d90d21 devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0x69e27c7a bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x69f8dcfc mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x69fd84da dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a1420c0 netlink_broadcast +EXPORT_SYMBOL vmlinux 0x6a3f4119 mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a5fa363 sigprocmask +EXPORT_SYMBOL vmlinux 0x6a61f874 to_tm +EXPORT_SYMBOL vmlinux 0x6a6aa1bb input_flush_device +EXPORT_SYMBOL vmlinux 0x6a740c54 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b14e1e8 agp_enable +EXPORT_SYMBOL vmlinux 0x6b188d8b input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b5dfe73 __debugger_bpt +EXPORT_SYMBOL vmlinux 0x6b640864 nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6b7f1917 idr_find_slowpath +EXPORT_SYMBOL vmlinux 0x6b8acb55 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0x6b93a160 i2c_del_driver +EXPORT_SYMBOL vmlinux 0x6b9ef910 sg_miter_start +EXPORT_SYMBOL vmlinux 0x6bbce7f9 local_flush_tlb_page +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bcc9ef3 softnet_data +EXPORT_SYMBOL vmlinux 0x6bceaebc gen_replace_estimator +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6be24498 scsi_device_get +EXPORT_SYMBOL vmlinux 0x6beb2078 param_set_copystring +EXPORT_SYMBOL vmlinux 0x6bebd9f8 bio_integrity_set_tag +EXPORT_SYMBOL vmlinux 0x6c20d4b2 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x6c3ea513 inet_getname +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c540b1d netdev_notice +EXPORT_SYMBOL vmlinux 0x6c5e467b try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c665691 flex_array_shrink +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6ca470ef fget_light +EXPORT_SYMBOL vmlinux 0x6ccf1f70 security_d_instantiate +EXPORT_SYMBOL vmlinux 0x6cd8c86b __crc32c_le_combine +EXPORT_SYMBOL vmlinux 0x6ce975ba security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x6cfe44a5 dev_change_carrier +EXPORT_SYMBOL vmlinux 0x6d0c1282 inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d27ef64 __bitmap_empty +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d3045b6 vm_insert_page +EXPORT_SYMBOL vmlinux 0x6d563d7e in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x6d92eff2 skb_copy_datagram_iovec +EXPORT_SYMBOL vmlinux 0x6d961b49 nla_put +EXPORT_SYMBOL vmlinux 0x6da928f4 _insw_ns +EXPORT_SYMBOL vmlinux 0x6dd5f229 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6dfedf77 blk_fetch_request +EXPORT_SYMBOL vmlinux 0x6e1c946b vc_resize +EXPORT_SYMBOL vmlinux 0x6e276563 bio_split +EXPORT_SYMBOL vmlinux 0x6e635a1b update_region +EXPORT_SYMBOL vmlinux 0x6e698e52 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e764332 idr_destroy +EXPORT_SYMBOL vmlinux 0x6e8911dc blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x6eac9cce agp_bridge +EXPORT_SYMBOL vmlinux 0x6eba44c9 sock_update_classid +EXPORT_SYMBOL vmlinux 0x6ebc5149 param_ops_long +EXPORT_SYMBOL vmlinux 0x6eccd03c lro_receive_skb +EXPORT_SYMBOL vmlinux 0x6edbf77a rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x6ef0f40c blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x6efc0a63 register_quota_format +EXPORT_SYMBOL vmlinux 0x6f0202ac devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0x6f1a8c6d blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f236526 send_sig_info +EXPORT_SYMBOL vmlinux 0x6f268538 bman_acquire +EXPORT_SYMBOL vmlinux 0x6f70926a pcim_enable_device +EXPORT_SYMBOL vmlinux 0x6f85b211 ida_remove +EXPORT_SYMBOL vmlinux 0x6fa474f2 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0x6fb83180 generic_delete_inode +EXPORT_SYMBOL vmlinux 0x6fbf1126 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x6fc3bdc3 iget5_locked +EXPORT_SYMBOL vmlinux 0x6fc95937 ether_setup +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fd040ec generic_segment_checks +EXPORT_SYMBOL vmlinux 0x6fd800b3 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x6ffc6227 phy_start +EXPORT_SYMBOL vmlinux 0x6ffcd1d8 __pagevec_release +EXPORT_SYMBOL vmlinux 0x700198a2 input_unregister_handle +EXPORT_SYMBOL vmlinux 0x7002ce08 cdrom_check_events +EXPORT_SYMBOL vmlinux 0x703fd0b7 kill_bdev +EXPORT_SYMBOL vmlinux 0x7045dea9 qman_modify_cgr +EXPORT_SYMBOL vmlinux 0x704c4365 __cputime_sec_factor +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x705d021c __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x7060eda1 scsi_prep_state_check +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x70894ae7 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x70bc17d7 inode_wait +EXPORT_SYMBOL vmlinux 0x70bf7dd3 __register_chrdev +EXPORT_SYMBOL vmlinux 0x70d053fd try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0x70d44616 neigh_table_clear +EXPORT_SYMBOL vmlinux 0x70df1012 blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0x70eaa85c xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x70eaf9a2 padata_do_serial +EXPORT_SYMBOL vmlinux 0x70f20058 iput +EXPORT_SYMBOL vmlinux 0x7114ff69 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x71309f20 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x7135586c blk_get_request +EXPORT_SYMBOL vmlinux 0x7138fc8b inode_change_ok +EXPORT_SYMBOL vmlinux 0x7151bbeb unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x717981ba blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x7180b2c0 qman_delete_cgr +EXPORT_SYMBOL vmlinux 0x71886401 mount_single +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71a71a1e pm860x_page_set_bits +EXPORT_SYMBOL vmlinux 0x71eaed18 unregister_qdisc +EXPORT_SYMBOL vmlinux 0x71fac97d tcp_close +EXPORT_SYMBOL vmlinux 0x720df5c6 ps2_begin_command +EXPORT_SYMBOL vmlinux 0x722b150a tcp_gro_receive +EXPORT_SYMBOL vmlinux 0x722c53d2 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x72515b92 mach_chroma_md +EXPORT_SYMBOL vmlinux 0x7282d04b vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x728a0d71 pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0x728ce230 qm_fq_free_flags +EXPORT_SYMBOL vmlinux 0x72ae7dfe pci_disable_msi +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72c4d3a0 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x72c98139 __arch_hweight64 +EXPORT_SYMBOL vmlinux 0x72ca543e qman_query_fq +EXPORT_SYMBOL vmlinux 0x72d4c23c fsl_get_sys_freq +EXPORT_SYMBOL vmlinux 0x72df8873 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x72dff1bf __mutex_init +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72f07729 seq_pad +EXPORT_SYMBOL vmlinux 0x72f18a26 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x731a747a pci_io_base +EXPORT_SYMBOL vmlinux 0x73231a50 netif_carrier_on +EXPORT_SYMBOL vmlinux 0x733b2383 next_tlbcam_idx +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x7350c914 eth_header +EXPORT_SYMBOL vmlinux 0x73516db8 from_kprojid +EXPORT_SYMBOL vmlinux 0x735d8503 add_wait_queue +EXPORT_SYMBOL vmlinux 0x7368df0a module_put +EXPORT_SYMBOL vmlinux 0x737de5e9 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x738d2f1c __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x7393b477 dev_change_flags +EXPORT_SYMBOL vmlinux 0x73c1aa64 set_blocksize +EXPORT_SYMBOL vmlinux 0x73d27362 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x74622536 inode_init_always +EXPORT_SYMBOL vmlinux 0x7469fcfe radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x74a1877d udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x751c2917 __wait_on_bit +EXPORT_SYMBOL vmlinux 0x752056d3 security_path_chmod +EXPORT_SYMBOL vmlinux 0x7529fbb8 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x7532588a alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x754dac78 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x75862db3 kernel_getsockname +EXPORT_SYMBOL vmlinux 0x7588db2b __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x7590ed10 neigh_app_ns +EXPORT_SYMBOL vmlinux 0x7591d836 bio_integrity_enabled +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 0x75c6bef0 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x75cc2db7 netif_napi_add +EXPORT_SYMBOL vmlinux 0x75dc9a3c __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x75e5c960 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x75f9aac5 pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0x75fb73ff kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x762c14f8 splice_from_pipe_begin +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764b4057 freeze_super +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x765ff474 crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x7661b6f7 pci_match_id +EXPORT_SYMBOL vmlinux 0x76932c03 security_path_rmdir +EXPORT_SYMBOL vmlinux 0x769e06d7 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x76b93b17 misc_register +EXPORT_SYMBOL vmlinux 0x76bf656d __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x76c2e9b7 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x770aa08c jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x770f9d54 eth_change_mtu +EXPORT_SYMBOL vmlinux 0x7715ae86 agp_collect_device_status +EXPORT_SYMBOL vmlinux 0x771a69a8 pci_disable_ido +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x77305cfc skb_queue_purge +EXPORT_SYMBOL vmlinux 0x773fa409 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x774428fe filemap_fdatawait +EXPORT_SYMBOL vmlinux 0x778303b1 rtnl_notify +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77b401a4 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77c8cd11 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x77df0847 __set_personality +EXPORT_SYMBOL vmlinux 0x77ecac9f zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x77fe4ad7 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x780fe1a1 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x78164927 touch_atime +EXPORT_SYMBOL vmlinux 0x781be84f xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x781fa7a9 serio_open +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x7840105d mount_subtree +EXPORT_SYMBOL vmlinux 0x7846af3e __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x784d6700 dm_register_target +EXPORT_SYMBOL vmlinux 0x784f86be pci_pme_active +EXPORT_SYMBOL vmlinux 0x785f8e0a xfrm_register_type +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78a7f167 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78dfdd9f pme_hw_residue_free +EXPORT_SYMBOL vmlinux 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL vmlinux 0x790df6ca __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x791a6daa register_cdrom +EXPORT_SYMBOL vmlinux 0x791e8bd8 mmc_request_done +EXPORT_SYMBOL vmlinux 0x792635d7 ndo_dflt_bridge_getlink +EXPORT_SYMBOL vmlinux 0x7930d225 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x7974c1a3 devm_clk_get +EXPORT_SYMBOL vmlinux 0x797b72c7 __frontswap_load +EXPORT_SYMBOL vmlinux 0x797c8fa9 cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x7984eefc key_update +EXPORT_SYMBOL vmlinux 0x799535f9 max8998_update_reg +EXPORT_SYMBOL vmlinux 0x79a339a1 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79ca7036 scsi_init_io +EXPORT_SYMBOL vmlinux 0x79cb392e mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x7a060b30 set_disk_ro +EXPORT_SYMBOL vmlinux 0x7a17ba28 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0x7a188791 prandom_bytes +EXPORT_SYMBOL vmlinux 0x7a274355 tcp_connect +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a5b46a2 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x7a646b1e __get_user_pages +EXPORT_SYMBOL vmlinux 0x7a6976a2 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x7a6f5c2d dentry_open +EXPORT_SYMBOL vmlinux 0x7a898a00 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x7a91726b clkdev_alloc +EXPORT_SYMBOL vmlinux 0x7a925833 cpufreq_get_global_kobject +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ab9c48f ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7ad4f8da scsi_scan_target +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7afc8a18 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x7afe65ab get_user_pages +EXPORT_SYMBOL vmlinux 0x7b0104c3 km_report +EXPORT_SYMBOL vmlinux 0x7b105020 pcim_iomap +EXPORT_SYMBOL vmlinux 0x7b16235f hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x7b2aef6c __krealloc +EXPORT_SYMBOL vmlinux 0x7b3b7ca0 init_special_inode +EXPORT_SYMBOL vmlinux 0x7b5b4caa ata_port_printk +EXPORT_SYMBOL vmlinux 0x7b78316d lease_get_mtime +EXPORT_SYMBOL vmlinux 0x7b9a4ce5 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x7bb756cc neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x7bb7c067 cfb_imageblit +EXPORT_SYMBOL vmlinux 0x7bd2bbfd backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x7bd641ef phy_find_first +EXPORT_SYMBOL vmlinux 0x7c003aef _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x7c02dff9 sock_no_mmap +EXPORT_SYMBOL vmlinux 0x7c11cdee lock_may_write +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c1389a6 mmc_can_discard +EXPORT_SYMBOL vmlinux 0x7c2a3c73 get_io_context +EXPORT_SYMBOL vmlinux 0x7c2b0bad module_layout +EXPORT_SYMBOL vmlinux 0x7c2d098f krealloc +EXPORT_SYMBOL vmlinux 0x7c3926a5 dquot_initialize +EXPORT_SYMBOL vmlinux 0x7c3b17a6 devm_ioport_map +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c5bfb68 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c6986ff sk_stop_timer +EXPORT_SYMBOL vmlinux 0x7c6d7fed register_sysctl +EXPORT_SYMBOL vmlinux 0x7c796f0f rt6_lookup +EXPORT_SYMBOL vmlinux 0x7c7da9a2 inet_del_protocol +EXPORT_SYMBOL vmlinux 0x7c8ae19c lookup_one_len +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 0x7c9bcf01 kern_path_create +EXPORT_SYMBOL vmlinux 0x7ca985ff single_open_size +EXPORT_SYMBOL vmlinux 0x7cc578da param_get_long +EXPORT_SYMBOL vmlinux 0x7cd72043 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7ce7a186 page_put_link +EXPORT_SYMBOL vmlinux 0x7cf3a16b put_cmsg +EXPORT_SYMBOL vmlinux 0x7cfd4599 try_module_get +EXPORT_SYMBOL vmlinux 0x7d031548 __inet6_hash +EXPORT_SYMBOL vmlinux 0x7d0a77c0 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d200b7c secpath_dup +EXPORT_SYMBOL vmlinux 0x7d278d3e pci_assign_resource +EXPORT_SYMBOL vmlinux 0x7d74d056 netdev_lower_dev_get_private_rcu +EXPORT_SYMBOL vmlinux 0x7d94ed87 __dquot_transfer +EXPORT_SYMBOL vmlinux 0x7d9cb3e8 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x7dbe2fdd scsi_adjust_queue_depth +EXPORT_SYMBOL vmlinux 0x7dbe549b skb_copy_bits +EXPORT_SYMBOL vmlinux 0x7dc0e109 idr_get_next +EXPORT_SYMBOL vmlinux 0x7dcc4e49 qman_query_fq_np +EXPORT_SYMBOL vmlinux 0x7dd97bc2 PDE_DATA +EXPORT_SYMBOL vmlinux 0x7def379c skb_trim +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7dfd3405 generic_block_bmap +EXPORT_SYMBOL vmlinux 0x7e017335 security_path_rename +EXPORT_SYMBOL vmlinux 0x7e0d6caa pme_ctx_finish +EXPORT_SYMBOL vmlinux 0x7e302025 cdev_init +EXPORT_SYMBOL vmlinux 0x7e394c4e sysctl_local_reserved_ports +EXPORT_SYMBOL vmlinux 0x7e49f281 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0x7e4f07e1 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x7e51ec45 elv_add_request +EXPORT_SYMBOL vmlinux 0x7e6776d6 revert_creds +EXPORT_SYMBOL vmlinux 0x7e81f3e3 seq_open_private +EXPORT_SYMBOL vmlinux 0x7e87227e slhc_compress +EXPORT_SYMBOL vmlinux 0x7ea78384 scsi_remove_host +EXPORT_SYMBOL vmlinux 0x7eab9a96 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x7ec3187d sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x7ecb001b __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x7ef2acad stop_tty +EXPORT_SYMBOL vmlinux 0x7f0b2960 qman_fqid_pool_create +EXPORT_SYMBOL vmlinux 0x7f16a03e vfs_rename +EXPORT_SYMBOL vmlinux 0x7f175e61 pci_restore_state +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f681e56 pci_disable_device +EXPORT_SYMBOL vmlinux 0x7f93916a genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x7f9912b2 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x7f9df8e1 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0x7fa0b43b ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x7fa2b0a7 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x7fb40f14 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0x7fbff2bc frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x7fc62fd3 __secpath_destroy +EXPORT_SYMBOL vmlinux 0x7fdb47ba dev_load +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7fe38f48 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x800177c6 of_dev_put +EXPORT_SYMBOL vmlinux 0x8008a4f8 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x801b01b6 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x801d723d tcp_poll +EXPORT_SYMBOL vmlinux 0x802d0e93 crc32_le +EXPORT_SYMBOL vmlinux 0x8031a9f6 dev_open +EXPORT_SYMBOL vmlinux 0x803c1ad2 pm860x_page_reg_read +EXPORT_SYMBOL vmlinux 0x804f922a ipmi_addr_length +EXPORT_SYMBOL vmlinux 0x806393b6 dev_add_offload +EXPORT_SYMBOL vmlinux 0x8079bc81 skb_checksum_help +EXPORT_SYMBOL vmlinux 0x808f1bce fddi_change_mtu +EXPORT_SYMBOL vmlinux 0x80a97c2c xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80e4434c pci_dev_get +EXPORT_SYMBOL vmlinux 0x80e514a9 mmc_of_parse +EXPORT_SYMBOL vmlinux 0x80f4b780 bio_put +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x8152b2aa of_node_put +EXPORT_SYMBOL vmlinux 0x81533963 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x815c56d0 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x815fcb07 redraw_screen +EXPORT_SYMBOL vmlinux 0x81a07f4e _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x81a71f3c i8042_install_filter +EXPORT_SYMBOL vmlinux 0x81da51fe skb_checksum +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81fad874 dentry_path_raw +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x821cd1f4 irq_to_desc +EXPORT_SYMBOL vmlinux 0x822ecedc scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x8239a8c2 udp_del_offload +EXPORT_SYMBOL vmlinux 0x82406ce7 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x824cc1de scm_fp_dup +EXPORT_SYMBOL vmlinux 0x8251bcc3 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x825c8294 padata_add_cpu +EXPORT_SYMBOL vmlinux 0x826008d3 ps2_end_command +EXPORT_SYMBOL vmlinux 0x8260686f bitmap_find_next_zero_area +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x82872fb6 bio_copy_data +EXPORT_SYMBOL vmlinux 0x82a34156 pci_write_vpd +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82cdc932 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x82d9d97a scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x82e5a238 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x82f09987 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x82fb1d2a load_nls_default +EXPORT_SYMBOL vmlinux 0x830b7424 validate_sp +EXPORT_SYMBOL vmlinux 0x830feff6 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x8311bb8c pci_enable_ido +EXPORT_SYMBOL vmlinux 0x834089a7 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x834a3e33 dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x8361a328 vfs_writev +EXPORT_SYMBOL vmlinux 0x83a476ce bitmap_scnlistprintf +EXPORT_SYMBOL vmlinux 0x83bac24e i2c_register_driver +EXPORT_SYMBOL vmlinux 0x83bb67ed pcim_pin_device +EXPORT_SYMBOL vmlinux 0x83bde152 local_flush_tlb_mm +EXPORT_SYMBOL vmlinux 0x83d8a937 qman_fqid_pool_used +EXPORT_SYMBOL vmlinux 0x83f0b886 mmc_erase +EXPORT_SYMBOL vmlinux 0x841962f8 param_get_ushort +EXPORT_SYMBOL vmlinux 0x84270d82 commit_creds +EXPORT_SYMBOL vmlinux 0x84505257 blk_end_request_all +EXPORT_SYMBOL vmlinux 0x84509112 vfs_setpos +EXPORT_SYMBOL vmlinux 0x845a4aa5 disk_stack_limits +EXPORT_SYMBOL vmlinux 0x845faec2 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x846e4389 elv_abort_queue +EXPORT_SYMBOL vmlinux 0x84884a33 dev_addr_init +EXPORT_SYMBOL vmlinux 0x849c24ac tty_check_change +EXPORT_SYMBOL vmlinux 0x849fe807 csum_and_copy_from_user +EXPORT_SYMBOL vmlinux 0x84bd69bf dq_data_lock +EXPORT_SYMBOL vmlinux 0x84bf2c2c abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x84cc6e0b neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x84cdd446 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x8500f068 datagram_poll +EXPORT_SYMBOL vmlinux 0x8509c540 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0x8513cfc5 tcp_ioctl +EXPORT_SYMBOL vmlinux 0x8518eca9 param_get_short +EXPORT_SYMBOL vmlinux 0x851916c1 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x852b8374 inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0x853bf7c1 param_set_int +EXPORT_SYMBOL vmlinux 0x85583e51 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x855c31cd account_page_dirtied +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x8579bfa5 mnt_pin +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85c010a4 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x85dea193 key_unlink +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85f68a85 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x85fd28f0 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x861170da tcp_parse_options +EXPORT_SYMBOL vmlinux 0x8634f979 blk_start_queue +EXPORT_SYMBOL vmlinux 0x8638700c do_splice_direct +EXPORT_SYMBOL vmlinux 0x86411674 bio_integrity_tag_size +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x867d4c24 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x86876b08 dev_crit +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x869311c7 pci_request_region +EXPORT_SYMBOL vmlinux 0x86a061cc jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x86a9bbe2 tc_classify_compat +EXPORT_SYMBOL vmlinux 0x86bd2d9f tcp_init_sock +EXPORT_SYMBOL vmlinux 0x86bdca08 __neigh_event_send +EXPORT_SYMBOL vmlinux 0x86cbfe60 of_create_pci_dev +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x870bf928 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x871c2727 __d_drop +EXPORT_SYMBOL vmlinux 0x871eccc2 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x873a53ea __arch_hweight8 +EXPORT_SYMBOL vmlinux 0x873fed5e have_submounts +EXPORT_SYMBOL vmlinux 0x874fdb5c fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0x8779a34f param_ops_byte +EXPORT_SYMBOL vmlinux 0x87817256 vfs_read +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x8793ad05 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x879c489f blk_make_request +EXPORT_SYMBOL vmlinux 0x87b12425 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x87c52928 of_phy_connect +EXPORT_SYMBOL vmlinux 0x87c88c7a kill_litter_super +EXPORT_SYMBOL vmlinux 0x87d29f57 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x87e0ac5a xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x87e4afb1 gen10g_read_status +EXPORT_SYMBOL vmlinux 0x87e9bd4e blk_start_request +EXPORT_SYMBOL vmlinux 0x87e9df0b zero_fill_bio +EXPORT_SYMBOL vmlinux 0x8807d4a3 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x881039d0 zlib_inflate +EXPORT_SYMBOL vmlinux 0x88183970 mmc_free_host +EXPORT_SYMBOL vmlinux 0x882d80ce netlink_unicast +EXPORT_SYMBOL vmlinux 0x882db37f neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x88312e86 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x8833a175 give_up_console +EXPORT_SYMBOL vmlinux 0x8834396c mod_timer +EXPORT_SYMBOL vmlinux 0x88513970 param_set_byte +EXPORT_SYMBOL vmlinux 0x8852772b ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0x887cdfa0 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x88823b92 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x88cadabc backlight_force_update +EXPORT_SYMBOL vmlinux 0x890abf92 d_path +EXPORT_SYMBOL vmlinux 0x89132a24 mpage_readpage +EXPORT_SYMBOL vmlinux 0x891497a9 del_gendisk +EXPORT_SYMBOL vmlinux 0x891fbb10 mempool_destroy +EXPORT_SYMBOL vmlinux 0x8922bb87 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x895108f3 proc_dostring +EXPORT_SYMBOL vmlinux 0x89594c7a bio_reset +EXPORT_SYMBOL vmlinux 0x895d177e remove_proc_entry +EXPORT_SYMBOL vmlinux 0x897473df mktime +EXPORT_SYMBOL vmlinux 0x897684ac clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x89797060 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x897f061d downgrade_write +EXPORT_SYMBOL vmlinux 0x899cd6bb create_empty_buffers +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89b6a088 vga_client_register +EXPORT_SYMBOL vmlinux 0x89bfdfbc compat_sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x89d36e8e generic_file_mmap +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x8a1615c8 fb_set_cmap +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a2fb922 kobject_init +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a5493bb qman_recovery_cleanup_fq +EXPORT_SYMBOL vmlinux 0x8a57a824 iget_failed +EXPORT_SYMBOL vmlinux 0x8a5cf914 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x8a6a0e21 genphy_update_link +EXPORT_SYMBOL vmlinux 0x8a6af65c kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x8a71e1fc xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x8a74aa04 blkdev_put +EXPORT_SYMBOL vmlinux 0x8a7527e1 bm_pool_new +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a876f54 ida_init +EXPORT_SYMBOL vmlinux 0x8a8a621d of_phy_attach +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8a9fc631 migrate_page +EXPORT_SYMBOL vmlinux 0x8ab27f0e scsi_unregister +EXPORT_SYMBOL vmlinux 0x8ac8251a scsi_free_command +EXPORT_SYMBOL vmlinux 0x8ad8a148 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x8ae4c3c1 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0x8afff725 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0x8b105af5 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x8b1a7a66 pcie_aspm_enabled +EXPORT_SYMBOL vmlinux 0x8b338588 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b442721 pci_enable_device +EXPORT_SYMBOL vmlinux 0x8b55cac7 kobject_put +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b64e20e pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x8b7bc2ea pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0x8b82e5b6 register_netdev +EXPORT_SYMBOL vmlinux 0x8b84caa7 tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0x8b8c1cc3 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x8baf3116 percpu_counter_set +EXPORT_SYMBOL vmlinux 0x8bce43bc tcp_read_sock +EXPORT_SYMBOL vmlinux 0x8bdc2cb7 qman_query_cgr +EXPORT_SYMBOL vmlinux 0x8bf2ae1f fsl_lbc_addr +EXPORT_SYMBOL vmlinux 0x8bfb7f4b dquot_transfer +EXPORT_SYMBOL vmlinux 0x8c04c280 release_sock +EXPORT_SYMBOL vmlinux 0x8c09a148 sk_ns_capable +EXPORT_SYMBOL vmlinux 0x8c0e01e4 __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x8c129af5 netdev_change_features +EXPORT_SYMBOL vmlinux 0x8c159066 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c25deca d_obtain_alias +EXPORT_SYMBOL vmlinux 0x8c26b9dc bitmap_unplug +EXPORT_SYMBOL vmlinux 0x8c4935ac dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x8c52c717 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x8c57dea9 pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c673f66 blkdev_fsync +EXPORT_SYMBOL vmlinux 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL vmlinux 0x8c914026 ipmi_smi_watcher_unregister +EXPORT_SYMBOL vmlinux 0x8cb22a33 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8ccce54e phy_attach +EXPORT_SYMBOL vmlinux 0x8ccec7f6 __netif_schedule +EXPORT_SYMBOL vmlinux 0x8d015dd4 __bswapdi2 +EXPORT_SYMBOL vmlinux 0x8d113f13 tcf_exts_change +EXPORT_SYMBOL vmlinux 0x8d126f4d jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x8d12daf6 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0x8d2e268b param_ops_ulong +EXPORT_SYMBOL vmlinux 0x8d3f9a7b dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d5e847a locks_init_lock +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d802799 inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0x8d944cbb copy_in_user +EXPORT_SYMBOL vmlinux 0x8d975df1 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x8d99d25b framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x8d9f86f2 bdi_init +EXPORT_SYMBOL vmlinux 0x8db06625 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x8dc063ab bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x8dc4df98 dqget +EXPORT_SYMBOL vmlinux 0x8de0b5ac mempool_create +EXPORT_SYMBOL vmlinux 0x8de2cd6f bman_irqsource_get +EXPORT_SYMBOL vmlinux 0x8df92f66 memchr_inv +EXPORT_SYMBOL vmlinux 0x8e1b4c03 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x8e1d27e4 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x8e332829 flush_delayed_work +EXPORT_SYMBOL vmlinux 0x8e486650 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0x8e58efc0 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x8e776204 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x8e7bf254 bdi_destroy +EXPORT_SYMBOL vmlinux 0x8e864a86 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x8e888ec3 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x8e89f110 blk_requeue_request +EXPORT_SYMBOL vmlinux 0x8e8d58da diu_ops +EXPORT_SYMBOL vmlinux 0x8ea57bb4 block_commit_write +EXPORT_SYMBOL vmlinux 0x8ec04552 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x8edb1cd6 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x8f110ada swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0x8f2d89fe kill_block_super +EXPORT_SYMBOL vmlinux 0x8f3b2089 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x8f4b7081 pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x8f5e5dea ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x8f85f835 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x8faa4598 of_translate_address +EXPORT_SYMBOL vmlinux 0x8fb2d2f4 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x8fb51cb0 mmc_release_host +EXPORT_SYMBOL vmlinux 0x8fbf36b9 inet_frags_fini +EXPORT_SYMBOL vmlinux 0x8fcf7210 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x8fecef24 dma_find_channel +EXPORT_SYMBOL vmlinux 0x900a7d64 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x90135fc8 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x9062729c netdev_alert +EXPORT_SYMBOL vmlinux 0x90632a73 path_put +EXPORT_SYMBOL vmlinux 0x906878fb genphy_resume +EXPORT_SYMBOL vmlinux 0x9069bd22 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x906d4f13 __memcg_kmem_get_cache +EXPORT_SYMBOL vmlinux 0x908b53ed param_set_short +EXPORT_SYMBOL vmlinux 0x908f0d5a security_dentry_init_security +EXPORT_SYMBOL vmlinux 0x909ba72c swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0x909cc4b4 __vlan_find_dev_deep +EXPORT_SYMBOL vmlinux 0x90bd81d2 pci_remove_bus +EXPORT_SYMBOL vmlinux 0x90e146c2 trace_seq_putc +EXPORT_SYMBOL vmlinux 0x90fb995a __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x90fc9f60 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x910386d6 fget +EXPORT_SYMBOL vmlinux 0x910661eb unregister_nls +EXPORT_SYMBOL vmlinux 0x910f4b4a blk_mq_insert_request +EXPORT_SYMBOL vmlinux 0x91142b0c netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0x9124f129 sock_sendmsg +EXPORT_SYMBOL vmlinux 0x913c2e99 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x915e1208 tb_ticks_per_usec +EXPORT_SYMBOL vmlinux 0x91614d6e pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0x91637ea7 dma_common_mmap +EXPORT_SYMBOL vmlinux 0x9166fada strncpy +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x917371c9 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x91744eb7 init_buffer +EXPORT_SYMBOL vmlinux 0x91985cb7 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x919d1163 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x91ac822f vscnprintf +EXPORT_SYMBOL vmlinux 0x91b30eec register_console +EXPORT_SYMBOL vmlinux 0x91db9042 eth_header_parse +EXPORT_SYMBOL vmlinux 0x91e43cc4 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0x920c4868 proto_unregister +EXPORT_SYMBOL vmlinux 0x921cf546 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x924d2d2b inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0x925520d2 blk_start_plug +EXPORT_SYMBOL vmlinux 0x9256806b ipmi_register_smi +EXPORT_SYMBOL vmlinux 0x925a340e inet6_protos +EXPORT_SYMBOL vmlinux 0x9266bd68 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x926b93ab scsi_target_resume +EXPORT_SYMBOL vmlinux 0x928ccaec pci_choose_state +EXPORT_SYMBOL vmlinux 0x9291cd3b memdup_user +EXPORT_SYMBOL vmlinux 0x92a5892e unregister_exec_domain +EXPORT_SYMBOL vmlinux 0x92a7e6c5 bman_new_pool +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92ab43f4 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x92bc220b lockref_get +EXPORT_SYMBOL vmlinux 0x92d050df iov_pages +EXPORT_SYMBOL vmlinux 0x92ef24c1 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x9332231e kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x933a94cc tcp_syn_flood_action +EXPORT_SYMBOL vmlinux 0x933e10ec qman_ip_rev +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x9367ab91 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x9375d16a vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x9378241b sock_create_lite +EXPORT_SYMBOL vmlinux 0x9396ffce __devm_request_region +EXPORT_SYMBOL vmlinux 0x939bb6cf truncate_pagecache +EXPORT_SYMBOL vmlinux 0x93a591c0 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x93a6e0b2 io_schedule +EXPORT_SYMBOL vmlinux 0x93b0bd69 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93d046f5 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x93df6061 input_inject_event +EXPORT_SYMBOL vmlinux 0x93f9cff4 inet_frag_kill +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x9404479c __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x94093f50 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x9418df93 seq_bitmap_list +EXPORT_SYMBOL vmlinux 0x942059e3 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x9438a53f netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x943dc80f csum_and_copy_to_user +EXPORT_SYMBOL vmlinux 0x944491d7 set_groups +EXPORT_SYMBOL vmlinux 0x945dd020 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x94631b98 qman_irqsource_get +EXPORT_SYMBOL vmlinux 0x9469e193 pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0x946a3fa5 mach_qemu_e500 +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94a160f6 fb_show_logo +EXPORT_SYMBOL vmlinux 0x94aa3579 md_finish_reshape +EXPORT_SYMBOL vmlinux 0x94b2110b pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0x94b541b5 cpu_active_mask +EXPORT_SYMBOL vmlinux 0x94d78b7c qman_create_cgr +EXPORT_SYMBOL vmlinux 0x94e854f0 d_alloc +EXPORT_SYMBOL vmlinux 0x94eea910 i2c_master_recv +EXPORT_SYMBOL vmlinux 0x94f201bb skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0x94fbeb31 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x9508f166 param_ops_bint +EXPORT_SYMBOL vmlinux 0x9514151a _mcount +EXPORT_SYMBOL vmlinux 0x952485b1 pme_fd_cmd_nop +EXPORT_SYMBOL vmlinux 0x9524b0ae _outsb +EXPORT_SYMBOL vmlinux 0x953ab40d blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0x953b7368 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x9543af5d call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x954d36cb seq_write +EXPORT_SYMBOL vmlinux 0x954d6345 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x954dd210 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x955814fc netlink_capable +EXPORT_SYMBOL vmlinux 0x95a27d84 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x95cb929c of_find_all_nodes +EXPORT_SYMBOL vmlinux 0x95f03c3d pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x95f429ac neigh_ifdown +EXPORT_SYMBOL vmlinux 0x9695a06d simple_dentry_operations +EXPORT_SYMBOL vmlinux 0x96b29254 strncasecmp +EXPORT_SYMBOL vmlinux 0x96bb67e9 empty_aops +EXPORT_SYMBOL vmlinux 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96db70df xfrm_cfg_mutex +EXPORT_SYMBOL vmlinux 0x97070c3d kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x970b7bbd nla_append +EXPORT_SYMBOL vmlinux 0x970e0366 __destroy_inode +EXPORT_SYMBOL vmlinux 0x9728255d tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x972f0be9 padata_alloc +EXPORT_SYMBOL vmlinux 0x9748927f _outsw_ns +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x97793414 lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x97868aef __kfifo_alloc +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a60e3d param_get_bool +EXPORT_SYMBOL vmlinux 0x97a87c16 inet_frags_init_net +EXPORT_SYMBOL vmlinux 0x97b67360 bio_copy_user +EXPORT_SYMBOL vmlinux 0x97ccb7d8 dev_close +EXPORT_SYMBOL vmlinux 0x97e263cc scsi_release_buffers +EXPORT_SYMBOL vmlinux 0x97e58cd6 d_make_root +EXPORT_SYMBOL vmlinux 0x97f3c790 simple_release_fs +EXPORT_SYMBOL vmlinux 0x980245c1 framebuffer_release +EXPORT_SYMBOL vmlinux 0x981661a0 __idr_get_new_above +EXPORT_SYMBOL vmlinux 0x981710b8 compat_ip_getsockopt +EXPORT_SYMBOL vmlinux 0x9820fb83 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x9829fc11 __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0x983c92b9 dev_addr_del +EXPORT_SYMBOL vmlinux 0x984509ef vfs_open +EXPORT_SYMBOL vmlinux 0x98466003 put_disk +EXPORT_SYMBOL vmlinux 0x984932b0 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x98535e7a ip6_frag_init +EXPORT_SYMBOL vmlinux 0x98668903 pme_sw_flow_init +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x987fc124 neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x9890f1d1 remove_proc_subtree +EXPORT_SYMBOL vmlinux 0x989bc5d6 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x989c85e4 dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0x98a0f5a8 pme_ctx_ctrl_nop +EXPORT_SYMBOL vmlinux 0x98a71cbf neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x98c9fa9b md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x98cf60b3 strlen +EXPORT_SYMBOL vmlinux 0x98e66ef0 ip_getsockopt +EXPORT_SYMBOL vmlinux 0x98f0733a pci_enable_msi_block +EXPORT_SYMBOL vmlinux 0x98f4f75c setup_new_exec +EXPORT_SYMBOL vmlinux 0x98fa21b0 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x99170e3c kernel_listen +EXPORT_SYMBOL vmlinux 0x99195078 vsnprintf +EXPORT_SYMBOL vmlinux 0x99492de3 dst_destroy +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x9983d086 inet_frag_find +EXPORT_SYMBOL vmlinux 0x99900d09 blk_bio_map_sg +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99a89c3a sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x99afe916 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x99c3ee30 agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99d3a43c dm_table_get_size +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a397ae6 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x9a40c539 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x9a5ffc64 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x9a626734 ftrace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x9a78d74d mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x9a932ae0 module_refcount +EXPORT_SYMBOL vmlinux 0x9a94be5b get_agp_version +EXPORT_SYMBOL vmlinux 0x9aa6254f scsi_register_interface +EXPORT_SYMBOL vmlinux 0x9aabe0a6 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x9ac379e6 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x9ae9a306 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x9aee0ea9 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x9af89f98 memcpy_fromiovec +EXPORT_SYMBOL vmlinux 0x9b0088bb pci_enable_ltr +EXPORT_SYMBOL vmlinux 0x9b0cd87e genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b3485a5 pci_set_mwi +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b46c8ba inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0x9b478657 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0x9b54c94b sk_run_filter +EXPORT_SYMBOL vmlinux 0x9b5aeeab free_mdio_bitbang +EXPORT_SYMBOL vmlinux 0x9b5d2427 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x9b6e5d98 blk_integrity_register +EXPORT_SYMBOL vmlinux 0x9b6f1468 pme_ctx_scan_orp +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bb8071d security_inode_init_security +EXPORT_SYMBOL vmlinux 0x9bc5967b dquot_get_dqinfo +EXPORT_SYMBOL vmlinux 0x9bcdd96f udp_disconnect +EXPORT_SYMBOL vmlinux 0x9bd41559 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9befb890 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x9bfb9d65 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x9c242d3b clocksource_unregister +EXPORT_SYMBOL vmlinux 0x9c322960 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c4def48 pme_fd_cmd_scan +EXPORT_SYMBOL vmlinux 0x9c595c35 blk_end_request +EXPORT_SYMBOL vmlinux 0x9c844d58 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x9ca4b223 tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0x9ca89a73 tcp_splice_read +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cac1d8f elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x9cba7079 __kfree_skb +EXPORT_SYMBOL vmlinux 0x9cd15a1b security_path_symlink +EXPORT_SYMBOL vmlinux 0x9cdb85e3 ps2_handle_response +EXPORT_SYMBOL vmlinux 0x9cef3cc5 __idr_remove_all +EXPORT_SYMBOL vmlinux 0x9cf0ee79 sock_wfree +EXPORT_SYMBOL vmlinux 0x9cfd56c5 scsi_print_status +EXPORT_SYMBOL vmlinux 0x9d05f6c4 ktime_get_clocktai +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d1013dc dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x9d14983a ppc_enable_pmcs +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d529f30 dev_get_stats +EXPORT_SYMBOL vmlinux 0x9d58349a of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0x9d6385d6 input_unregister_handler +EXPORT_SYMBOL vmlinux 0x9d72229b fsl_ifc_find +EXPORT_SYMBOL vmlinux 0x9d7b1168 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x9d7ce8dd _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x9d80169a __bread +EXPORT_SYMBOL vmlinux 0x9d829dea sock_wake_async +EXPORT_SYMBOL vmlinux 0x9d86942d of_mdiobus_register +EXPORT_SYMBOL vmlinux 0x9d86fa46 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x9dd26550 qman_schedule_fq +EXPORT_SYMBOL vmlinux 0x9df4af52 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x9dfc1edd bman_irqsource_add +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e19b851 posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x9e1aac1e dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x9e2ce31e phy_stop +EXPORT_SYMBOL vmlinux 0x9e2f8c90 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e316fc9 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x9e44b9b7 of_get_next_available_child +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e994830 dm_get_device +EXPORT_SYMBOL vmlinux 0x9e9f1714 __bitmap_andnot +EXPORT_SYMBOL vmlinux 0x9ea0ad49 __sg_free_table +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ed2eec7 param_set_ushort +EXPORT_SYMBOL vmlinux 0x9ed81a90 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x9f24ed8e gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x9f2bdaac __bitmap_or +EXPORT_SYMBOL vmlinux 0x9f2f5ece devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0x9f2f93cd xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f5a2811 blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0x9f5d5377 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x9f5f7239 eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x9f7d5829 bd_set_size +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fbcce06 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x9fbd28a5 pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x9fc3f361 mdiobus_free +EXPORT_SYMBOL vmlinux 0x9fc914a1 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x9fd01cff ip_setsockopt +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9fdff736 tty_port_close_start +EXPORT_SYMBOL vmlinux 0x9feca531 pci_find_next_bus +EXPORT_SYMBOL vmlinux 0x9ff18680 drop_super +EXPORT_SYMBOL vmlinux 0x9ff5d131 compat_mc_getsockopt +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa0007194 find_or_create_page +EXPORT_SYMBOL vmlinux 0xa013025a neigh_seq_next +EXPORT_SYMBOL vmlinux 0xa0199c97 pipe_unlock +EXPORT_SYMBOL vmlinux 0xa01ca5b6 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa043d44f blk_get_queue +EXPORT_SYMBOL vmlinux 0xa0465010 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa0501fa2 inet_accept +EXPORT_SYMBOL vmlinux 0xa05b4238 vc_cons +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa07a37f0 memchr +EXPORT_SYMBOL vmlinux 0xa07b4af1 abort_creds +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa08d51f4 elevator_alloc +EXPORT_SYMBOL vmlinux 0xa09bc3ca mnt_set_expiry +EXPORT_SYMBOL vmlinux 0xa09f8be2 qman_affine_cpus +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0ceef51 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0e12753 simple_fill_super +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0edcf62 pci_find_capability +EXPORT_SYMBOL vmlinux 0xa0f166ab neigh_compat_output +EXPORT_SYMBOL vmlinux 0xa0f953b6 xfrm6_prepare_output +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 0xa121cebf blk_alloc_queue +EXPORT_SYMBOL vmlinux 0xa1232b4e swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa1574350 registered_fb +EXPORT_SYMBOL vmlinux 0xa1a44bd2 vfs_write +EXPORT_SYMBOL vmlinux 0xa1b423a7 bio_endio +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1bf909d dev_get_drvdata +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1c99385 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xa1d5d3ec input_event +EXPORT_SYMBOL vmlinux 0xa1e6355c genphy_read_status +EXPORT_SYMBOL vmlinux 0xa1ed863a phy_get_eee_err +EXPORT_SYMBOL vmlinux 0xa1f3b2e5 tcp_gso_segment +EXPORT_SYMBOL vmlinux 0xa1f8fe75 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xa2026975 kobject_set_name +EXPORT_SYMBOL vmlinux 0xa202a8e5 kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0xa20350ec pci_save_state +EXPORT_SYMBOL vmlinux 0xa20ce1b8 net_msg_warn +EXPORT_SYMBOL vmlinux 0xa22ceb48 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa28a2ace ipmi_set_gets_events +EXPORT_SYMBOL vmlinux 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL vmlinux 0xa2bbed37 crash_shutdown_register +EXPORT_SYMBOL vmlinux 0xa2bc41eb ppc_md +EXPORT_SYMBOL vmlinux 0xa2bce493 mdio_bus_type +EXPORT_SYMBOL vmlinux 0xa2c52425 kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0xa2cf795b md_integrity_register +EXPORT_SYMBOL vmlinux 0xa2ef34d7 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0xa2f9631f sk_send_sigurg +EXPORT_SYMBOL vmlinux 0xa303d1ff dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0xa31e132a tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0xa31e3630 scsi_prep_fn +EXPORT_SYMBOL vmlinux 0xa3243a1c gen10g_resume +EXPORT_SYMBOL vmlinux 0xa32bacb3 rtnl_unicast +EXPORT_SYMBOL vmlinux 0xa332464a of_get_cpu_node +EXPORT_SYMBOL vmlinux 0xa3326c63 agp_backend_acquire +EXPORT_SYMBOL vmlinux 0xa338757a from_kuid +EXPORT_SYMBOL vmlinux 0xa3556aef fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0xa35de80f ipv4_config +EXPORT_SYMBOL vmlinux 0xa36cff25 fb_set_suspend +EXPORT_SYMBOL vmlinux 0xa3801a39 d_genocide +EXPORT_SYMBOL vmlinux 0xa381944f dql_reset +EXPORT_SYMBOL vmlinux 0xa39b4cf2 udelay +EXPORT_SYMBOL vmlinux 0xa3abc422 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xa3bf8fd6 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0xa3cb83d6 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0xa3d12f48 ipmi_smi_watcher_register +EXPORT_SYMBOL vmlinux 0xa3e1f42e blk_sync_queue +EXPORT_SYMBOL vmlinux 0xa3e75545 flush_tlb_kernel_range +EXPORT_SYMBOL vmlinux 0xa3fc3d50 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0xa400159f crc32_be +EXPORT_SYMBOL vmlinux 0xa400aa1a ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0xa40b7583 compat_tcp_getsockopt +EXPORT_SYMBOL vmlinux 0xa42674ce directly_mappable_cdev_bdi +EXPORT_SYMBOL vmlinux 0xa4511467 crc16 +EXPORT_SYMBOL vmlinux 0xa46a0e30 udp_sendmsg +EXPORT_SYMBOL vmlinux 0xa46b1d19 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0xa46fd89a bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0xa46fe790 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa47938e8 dev_addr_flush +EXPORT_SYMBOL vmlinux 0xa4889605 kernel_connect +EXPORT_SYMBOL vmlinux 0xa49f7925 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0xa4a42341 sock_no_accept +EXPORT_SYMBOL vmlinux 0xa4a94d26 find_next_bit_le +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4bb4287 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0xa4bdd447 __cputime_clockt_factor +EXPORT_SYMBOL vmlinux 0xa4bfced6 pci_get_subsys +EXPORT_SYMBOL vmlinux 0xa4ccbc07 netdev_state_change +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4e8a513 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0xa508c321 mntget +EXPORT_SYMBOL vmlinux 0xa515a716 netdev_err +EXPORT_SYMBOL vmlinux 0xa52a345d __skb_dst_set_noref +EXPORT_SYMBOL vmlinux 0xa5324e91 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0xa5409371 netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0xa5471656 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa55c6830 register_sysctl_table +EXPORT_SYMBOL vmlinux 0xa561eb32 dev_mc_add +EXPORT_SYMBOL vmlinux 0xa588695e free_user_ns +EXPORT_SYMBOL vmlinux 0xa5938dc7 __sb_end_write +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5b609c8 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0xa5b76049 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xa5bd7eb8 pci_release_region +EXPORT_SYMBOL vmlinux 0xa5db57d3 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0xa5e536a2 mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0xa5e86792 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0xa62472de mark_page_accessed +EXPORT_SYMBOL vmlinux 0xa63a2f9b param_get_ulong +EXPORT_SYMBOL vmlinux 0xa65972b8 _memcpy_toio +EXPORT_SYMBOL vmlinux 0xa661fe38 swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0xa6715115 do_settimeofday +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa69af898 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0xa6a5af35 neigh_connected_output +EXPORT_SYMBOL vmlinux 0xa6af1a94 pme2_exclusive_unset +EXPORT_SYMBOL vmlinux 0xa6e30bcd aio_complete +EXPORT_SYMBOL vmlinux 0xa6e34000 netdev_warn +EXPORT_SYMBOL vmlinux 0xa6ffea3d fb_set_var +EXPORT_SYMBOL vmlinux 0xa71ca945 compat_tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xa71e7463 __first_cpu +EXPORT_SYMBOL vmlinux 0xa720678c lg_global_lock +EXPORT_SYMBOL vmlinux 0xa724eb39 simple_rmdir +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa73b8850 napi_complete +EXPORT_SYMBOL vmlinux 0xa73fc98f of_n_addr_cells +EXPORT_SYMBOL vmlinux 0xa7459532 scsi_block_requests +EXPORT_SYMBOL vmlinux 0xa75af603 load_nls +EXPORT_SYMBOL vmlinux 0xa75dcfb4 scsi_setup_fs_cmnd +EXPORT_SYMBOL vmlinux 0xa784233d dev_remove_pack +EXPORT_SYMBOL vmlinux 0xa7865f65 padata_start +EXPORT_SYMBOL vmlinux 0xa78d9eb7 slhc_uncompress +EXPORT_SYMBOL vmlinux 0xa79595b4 input_free_device +EXPORT_SYMBOL vmlinux 0xa7a419c9 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0xa7cec0ed xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0xa7d06277 nf_register_hook +EXPORT_SYMBOL vmlinux 0xa7df79ff __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0xa7ecf4c5 wait_iff_congested +EXPORT_SYMBOL vmlinux 0xa80219b6 kobject_add +EXPORT_SYMBOL vmlinux 0xa815601e remap_pfn_range +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa82bfb86 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0xa8307da7 revalidate_disk +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa85a99c3 dev_warn +EXPORT_SYMBOL vmlinux 0xa86db26f pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa8783d4c sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0xa8a02430 neigh_seq_start +EXPORT_SYMBOL vmlinux 0xa8a6f639 __check_region +EXPORT_SYMBOL vmlinux 0xa8c4329d padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xa8c6604e from_kgid_munged +EXPORT_SYMBOL vmlinux 0xa8d7fac7 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0xa8e1d42b netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0xa8f2500e pme_ctx_enable +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa90f60b9 tcp_child_process +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa916b694 strnlen +EXPORT_SYMBOL vmlinux 0xa92288c1 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0xa9273e1a epapr_hypercall_start +EXPORT_SYMBOL vmlinux 0xa93ba88e proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0xa981fa2d iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0xa98a13a1 inet6_del_offload +EXPORT_SYMBOL vmlinux 0xa98a4343 path_nosuid +EXPORT_SYMBOL vmlinux 0xa9b63345 of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0xa9bbd9f0 key_alloc +EXPORT_SYMBOL vmlinux 0xa9c54c01 page_readlink +EXPORT_SYMBOL vmlinux 0xa9ee3db0 dev_get_flags +EXPORT_SYMBOL vmlinux 0xa9f2ac64 dev_get_by_name +EXPORT_SYMBOL vmlinux 0xa9f38f4b mdiobus_write +EXPORT_SYMBOL vmlinux 0xaa0073b7 __net_get_random_once +EXPORT_SYMBOL vmlinux 0xaa115813 d_validate +EXPORT_SYMBOL vmlinux 0xaa1c680e xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0xaa35f288 dcb_setapp +EXPORT_SYMBOL vmlinux 0xaa46e87e lg_local_unlock +EXPORT_SYMBOL vmlinux 0xaa4f104b scsi_print_result +EXPORT_SYMBOL vmlinux 0xaa5939c4 clear_user_page +EXPORT_SYMBOL vmlinux 0xaa5da434 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0xaa6e4df5 _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa8a1b49 of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0xaa8d0ef2 pme_ctx_ctrl_read_flow +EXPORT_SYMBOL vmlinux 0xaa9087c0 param_ops_string +EXPORT_SYMBOL vmlinux 0xaaa516c6 prepare_binprm +EXPORT_SYMBOL vmlinux 0xaaab8067 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaae02a4b i2c_release_client +EXPORT_SYMBOL vmlinux 0xaae33df1 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab007abf __page_symlink +EXPORT_SYMBOL vmlinux 0xab265614 mmc_remove_host +EXPORT_SYMBOL vmlinux 0xab4f87af blk_mq_alloc_reserved_request +EXPORT_SYMBOL vmlinux 0xab5894b6 tty_port_close_end +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab9cbc2c tcp_check_req +EXPORT_SYMBOL vmlinux 0xabb49ae2 vlan_vid_del +EXPORT_SYMBOL vmlinux 0xabc6dd63 cpufreq_sysfs_create_file +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabd0c91c rtc_time_to_tm +EXPORT_SYMBOL vmlinux 0xabefa88e dev_mc_del_global +EXPORT_SYMBOL vmlinux 0xabf4ec4d tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0xabff87ac pme_ctx_scan +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac201596 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0xac26b820 _raw_write_lock +EXPORT_SYMBOL vmlinux 0xac4832bd compat_ip_setsockopt +EXPORT_SYMBOL vmlinux 0xac4bbbe3 cdev_add +EXPORT_SYMBOL vmlinux 0xac5c4316 simple_rename +EXPORT_SYMBOL vmlinux 0xaca627cf dev_set_drvdata +EXPORT_SYMBOL vmlinux 0xaca937bc get_super_thawed +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacc5b5d2 csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xace55407 devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xacf93f4f mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xad01744f kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad0a6e0a flex_array_prealloc +EXPORT_SYMBOL vmlinux 0xad164875 kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xad45299b swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0xad46dec2 of_count_phandle_with_args +EXPORT_SYMBOL vmlinux 0xad54b31c __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0xad6577f1 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0xad6843c1 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xad78e3d6 agp_free_memory +EXPORT_SYMBOL vmlinux 0xad7c19ac inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad9b2af8 eth_type_trans +EXPORT_SYMBOL vmlinux 0xadb6c56d bio_integrity_free +EXPORT_SYMBOL vmlinux 0xadf1cf55 i2c_master_send +EXPORT_SYMBOL vmlinux 0xae118b40 ping_prot +EXPORT_SYMBOL vmlinux 0xae1426ea dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0xae545f06 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xae60c931 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae78d176 d_find_alias +EXPORT_SYMBOL vmlinux 0xae88d5f4 lease_modify +EXPORT_SYMBOL vmlinux 0xaf05b91b of_device_is_available +EXPORT_SYMBOL vmlinux 0xaf063510 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xaf199fb2 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0xaf2924c1 kernel_bind +EXPORT_SYMBOL vmlinux 0xaf2c3656 pci_disable_msix +EXPORT_SYMBOL vmlinux 0xaf2d872c prepare_to_wait +EXPORT_SYMBOL vmlinux 0xaf31729d unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xaf3898be neigh_event_ns +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf4148c5 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0xaf5f57d1 notify_change +EXPORT_SYMBOL vmlinux 0xaf64ad0d zlib_deflate +EXPORT_SYMBOL vmlinux 0xaf6ae696 kstrndup +EXPORT_SYMBOL vmlinux 0xaf837e2e mdiobus_scan +EXPORT_SYMBOL vmlinux 0xaf8fe474 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0xaf91d89f __kernel_param_lock +EXPORT_SYMBOL vmlinux 0xafad493b param_ops_ushort +EXPORT_SYMBOL vmlinux 0xafb16b0a generic_file_direct_write +EXPORT_SYMBOL vmlinux 0xafb95a1f register_shrinker +EXPORT_SYMBOL vmlinux 0xafba3ead pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0xafbd90cf check_submounts_and_drop +EXPORT_SYMBOL vmlinux 0xafd3837b netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0xafd68c33 flex_array_free +EXPORT_SYMBOL vmlinux 0xafd70bf2 qman_dca +EXPORT_SYMBOL vmlinux 0xafdf291c fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0xafff3d1d mempool_alloc +EXPORT_SYMBOL vmlinux 0xb0508932 user_path_create +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb0701eb3 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xb076e243 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0a73070 dev_uc_add +EXPORT_SYMBOL vmlinux 0xb0ab83fe of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0xb0b847ac __bitmap_full +EXPORT_SYMBOL vmlinux 0xb0c72e60 i2c_use_client +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0eb5941 mem_map +EXPORT_SYMBOL vmlinux 0xb0ffda2f blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb13b9281 __sock_create +EXPORT_SYMBOL vmlinux 0xb15bd8fa tb_ticks_per_sec +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb165ef45 __irq_regs +EXPORT_SYMBOL vmlinux 0xb18df4a6 follow_down_one +EXPORT_SYMBOL vmlinux 0xb19760c3 bitmap_onto +EXPORT_SYMBOL vmlinux 0xb1aa09ea ll_rw_block +EXPORT_SYMBOL vmlinux 0xb1b57023 pid_task +EXPORT_SYMBOL vmlinux 0xb1c1a7a3 phy_device_register +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 0xb1db9e4e param_get_invbool +EXPORT_SYMBOL vmlinux 0xb1e27f95 __napi_schedule +EXPORT_SYMBOL vmlinux 0xb1ea8d9f kthread_bind +EXPORT_SYMBOL vmlinux 0xb2007571 skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0xb230dbb0 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0xb24453f5 dev_addr_add_multiple +EXPORT_SYMBOL vmlinux 0xb24dab8e dquot_acquire +EXPORT_SYMBOL vmlinux 0xb25ba021 phy_register_fixup +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb28ce7a6 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0xb2a2d054 pme_ctx_exclusive_inc +EXPORT_SYMBOL vmlinux 0xb2b34fe4 __breadahead +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2cba68e scsi_add_device +EXPORT_SYMBOL vmlinux 0xb2de3822 freeze_bdev +EXPORT_SYMBOL vmlinux 0xb304acff ida_get_new_above +EXPORT_SYMBOL vmlinux 0xb30e3cf6 pci_domain_nr +EXPORT_SYMBOL vmlinux 0xb3195918 seq_escape +EXPORT_SYMBOL vmlinux 0xb352e89b agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0xb37f01b8 pci_scan_bus_parented +EXPORT_SYMBOL vmlinux 0xb39b0bc2 register_nls +EXPORT_SYMBOL vmlinux 0xb3c41ca1 of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0xb3c7bae2 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0xb3cf9cab call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0xb3d35515 qman_oos_fq +EXPORT_SYMBOL vmlinux 0xb3db416e vm_insert_pfn +EXPORT_SYMBOL vmlinux 0xb3f2c04e eth_validate_addr +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb3fb2bab sock_alloc_file +EXPORT_SYMBOL vmlinux 0xb3fb4cb5 arp_create +EXPORT_SYMBOL vmlinux 0xb3fb9abe tcf_exts_validate +EXPORT_SYMBOL vmlinux 0xb4036ce9 do_sync_write +EXPORT_SYMBOL vmlinux 0xb417b800 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb43256a9 rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0xb4330ccf dentry_update_name_case +EXPORT_SYMBOL vmlinux 0xb441c1a2 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb47189b5 reservation_ww_class +EXPORT_SYMBOL vmlinux 0xb47bc696 vm_stat +EXPORT_SYMBOL vmlinux 0xb48f5eed mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0xb4a8f375 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0xb4b00f53 pagecache_write_end +EXPORT_SYMBOL vmlinux 0xb4b2f159 devm_request_and_ioremap +EXPORT_SYMBOL vmlinux 0xb4b35aba xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0xb4bad0eb kernel_accept +EXPORT_SYMBOL vmlinux 0xb4c24d4b sk_common_release +EXPORT_SYMBOL vmlinux 0xb4d2add3 agp_generic_enable +EXPORT_SYMBOL vmlinux 0xb4d587b7 blk_init_tags +EXPORT_SYMBOL vmlinux 0xb5052083 phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0xb505b29d pci_set_ltr +EXPORT_SYMBOL vmlinux 0xb50a7c88 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0xb535b9f6 qman_destroy_fq +EXPORT_SYMBOL vmlinux 0xb53f79cc tty_mutex +EXPORT_SYMBOL vmlinux 0xb54533f7 usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xb54b35dd alloc_fcdev +EXPORT_SYMBOL vmlinux 0xb5576f5f d_drop +EXPORT_SYMBOL vmlinux 0xb566a5ab ps2_init +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb578de20 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0xb57f2457 sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5b7a92a xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xb5bbed39 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0xb5d25a52 install_exec_creds +EXPORT_SYMBOL vmlinux 0xb5d626c3 bdget_disk +EXPORT_SYMBOL vmlinux 0xb5f8c23b skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0xb6052268 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb6313f51 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0xb6394d4b param_set_bint +EXPORT_SYMBOL vmlinux 0xb64dceb5 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0xb64e13dd poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0xb655b58e __inode_permission +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb6822a33 radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6b46a7c param_ops_int +EXPORT_SYMBOL vmlinux 0xb6c5a973 scsi_show_result +EXPORT_SYMBOL vmlinux 0xb6ce9099 write_inode_now +EXPORT_SYMBOL vmlinux 0xb6d2eafb qman_irqsource_add +EXPORT_SYMBOL vmlinux 0xb6dc025a inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0xb6e0930e inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0xb75a59c5 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0xb75a7360 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0xb76b6ecb tty_port_hangup +EXPORT_SYMBOL vmlinux 0xb770be3e __percpu_counter_add +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb7761130 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0xb79a4e1a store_fp_state +EXPORT_SYMBOL vmlinux 0xb7c6db70 sysctl_max_skb_frags +EXPORT_SYMBOL vmlinux 0xb7eacec1 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0xb7ee452f dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xb7f15b4b sock_no_sendpage +EXPORT_SYMBOL vmlinux 0xb7fde971 pme_map +EXPORT_SYMBOL vmlinux 0xb7fe036b scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0xb80788e3 vfs_mkdir +EXPORT_SYMBOL vmlinux 0xb82d4d7b submit_bio +EXPORT_SYMBOL vmlinux 0xb82d7dca I_BDEV +EXPORT_SYMBOL vmlinux 0xb835b3e4 radix_tree_prev_hole +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb884aa06 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0xb88d1850 pipe_to_file +EXPORT_SYMBOL vmlinux 0xb8987fb3 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0xb89e5c8c pme_ctx_is_disabled +EXPORT_SYMBOL vmlinux 0xb8c6d985 cfb_fillrect +EXPORT_SYMBOL vmlinux 0xb8d73e97 param_set_uint +EXPORT_SYMBOL vmlinux 0xb8eca3d9 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0xb944bd15 lock_sock_fast +EXPORT_SYMBOL vmlinux 0xb9477aba tty_unthrottle +EXPORT_SYMBOL vmlinux 0xb9478482 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0xb94ec9cd con_set_default_unimap +EXPORT_SYMBOL vmlinux 0xb96a9fd4 security_path_link +EXPORT_SYMBOL vmlinux 0xb9750667 set_user_nice +EXPORT_SYMBOL vmlinux 0xb986b5ea iget_locked +EXPORT_SYMBOL vmlinux 0xb98a0185 rtc_tm_to_time +EXPORT_SYMBOL vmlinux 0xb9903aa8 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0xb99593fa blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0xb9b4e181 alloc_pages_exact_nid +EXPORT_SYMBOL vmlinux 0xb9b82445 tty_port_open +EXPORT_SYMBOL vmlinux 0xb9b97e37 mb_cache_destroy +EXPORT_SYMBOL vmlinux 0xb9c001f8 loop_backing_file +EXPORT_SYMBOL vmlinux 0xb9c32a15 skb_insert +EXPORT_SYMBOL vmlinux 0xb9d5e027 qman_eqcr_is_empty +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xba02329c delete_from_page_cache +EXPORT_SYMBOL vmlinux 0xba02873b sock_no_ioctl +EXPORT_SYMBOL vmlinux 0xba0aacee ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xba0dd0e8 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0xba2eb680 dquot_free_inode +EXPORT_SYMBOL vmlinux 0xba352649 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba506d4a phy_scan_fixups +EXPORT_SYMBOL vmlinux 0xba995586 pci_find_bus +EXPORT_SYMBOL vmlinux 0xbaa883d6 phy_device_create +EXPORT_SYMBOL vmlinux 0xbaaee671 inet_stream_ops +EXPORT_SYMBOL vmlinux 0xbadfcef5 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xbb189cad disallow_signal +EXPORT_SYMBOL vmlinux 0xbb1fec31 misc_deregister +EXPORT_SYMBOL vmlinux 0xbb23a7ef inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0xbb364e08 ipmi_get_smi_info +EXPORT_SYMBOL vmlinux 0xbb487b95 seq_path +EXPORT_SYMBOL vmlinux 0xbb4f4766 simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0xbb5a32a8 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0xbb5c110b padata_stop +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb713e6d sk_filter_release_rcu +EXPORT_SYMBOL vmlinux 0xbb74d139 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbbace842 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0xbbaeb559 memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0xbbb6b412 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xbbbdd009 uart_register_driver +EXPORT_SYMBOL vmlinux 0xbbbe6a58 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0xbbc1467f __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0xbbc1a847 rtnl_create_link +EXPORT_SYMBOL vmlinux 0xbbc4beb6 abx500_register_ops +EXPORT_SYMBOL vmlinux 0xbbc69513 force_sig +EXPORT_SYMBOL vmlinux 0xbbe8af42 uart_resume_port +EXPORT_SYMBOL vmlinux 0xbc2e1aa6 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0xbc316de4 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0xbc35ebaf blk_mq_end_io +EXPORT_SYMBOL vmlinux 0xbc3f6afa down_read +EXPORT_SYMBOL vmlinux 0xbc783f0b net_dma_find_channel +EXPORT_SYMBOL vmlinux 0xbc821bcd neigh_for_each +EXPORT_SYMBOL vmlinux 0xbc86819d tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0xbc8ca222 blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0xbc9703aa netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0xbc9f0b5c gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0xbcaaef97 vsc824x_add_skew +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbccdc2f6 flex_array_put +EXPORT_SYMBOL vmlinux 0xbcdab759 padata_free +EXPORT_SYMBOL vmlinux 0xbcdedba7 of_get_mac_address +EXPORT_SYMBOL vmlinux 0xbce33305 max8925_reg_read +EXPORT_SYMBOL vmlinux 0xbcf150f9 xor_altivec_5 +EXPORT_SYMBOL vmlinux 0xbd0dabf5 generic_file_open +EXPORT_SYMBOL vmlinux 0xbd462b55 __kfifo_init +EXPORT_SYMBOL vmlinux 0xbd4b93f9 security_path_truncate +EXPORT_SYMBOL vmlinux 0xbd6e97ab blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0xbd803510 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xbdae4a23 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0xbdb1f55d __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0xbdbf4459 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0xbdc43340 filp_open +EXPORT_SYMBOL vmlinux 0xbde03e1a tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0xbe0f2549 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0xbe13b93b xfrm_state_add +EXPORT_SYMBOL vmlinux 0xbe24467c cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0xbe2c0274 add_timer +EXPORT_SYMBOL vmlinux 0xbe5db5d8 __block_write_begin +EXPORT_SYMBOL vmlinux 0xbe77aebe down_write_trylock +EXPORT_SYMBOL vmlinux 0xbeaf2d2b md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0xbeb9484b simple_pin_fs +EXPORT_SYMBOL vmlinux 0xbec25473 of_parse_phandle +EXPORT_SYMBOL vmlinux 0xbedd3e59 udp_poll +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbefb7ad2 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0xbefc3773 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xbf109d5c thermal_cdev_update +EXPORT_SYMBOL vmlinux 0xbf32379a blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0xbf32c2c6 pci_alloc_dev +EXPORT_SYMBOL vmlinux 0xbf6826ca scsi_remove_device +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfabfe59 __debugger_iabr_match +EXPORT_SYMBOL vmlinux 0xbfae47b2 iunique +EXPORT_SYMBOL vmlinux 0xbfb8b0b7 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfe28bef dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0xbfe7dcbf udp_lib_rehash +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbff50042 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0xbff665a2 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0xc00d3be5 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0xc00dfbf4 dmam_pool_create +EXPORT_SYMBOL vmlinux 0xc02cf69b clkdev_drop +EXPORT_SYMBOL vmlinux 0xc042923f sock_no_poll +EXPORT_SYMBOL vmlinux 0xc058d7f1 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0xc067b21d block_write_full_page +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0b428ee twl6040_power +EXPORT_SYMBOL vmlinux 0xc0b80457 no_llseek +EXPORT_SYMBOL vmlinux 0xc0bfdc6e netif_device_attach +EXPORT_SYMBOL vmlinux 0xc0d2bc6d filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0xc106de05 inode_dio_wait +EXPORT_SYMBOL vmlinux 0xc10b13f4 flush_dcache_icache_page +EXPORT_SYMBOL vmlinux 0xc12bc704 mfd_add_devices +EXPORT_SYMBOL vmlinux 0xc12c09d1 of_phy_find_device +EXPORT_SYMBOL vmlinux 0xc13b0f27 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xc15a44c6 memzero_explicit +EXPORT_SYMBOL vmlinux 0xc15f8923 agp_copy_info +EXPORT_SYMBOL vmlinux 0xc18f9817 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0xc19249c0 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0xc1a5edb7 inet6_getname +EXPORT_SYMBOL vmlinux 0xc1b2e039 generic_setlease +EXPORT_SYMBOL vmlinux 0xc1c2dd09 __hw_addr_flush +EXPORT_SYMBOL vmlinux 0xc20dc260 __i2c_transfer +EXPORT_SYMBOL vmlinux 0xc2362dda register_qdisc +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc24271cb gen_pool_alloc +EXPORT_SYMBOL vmlinux 0xc256e762 __bitmap_equal +EXPORT_SYMBOL vmlinux 0xc263045f xfrm_input +EXPORT_SYMBOL vmlinux 0xc2829049 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0xc29bf967 strspn +EXPORT_SYMBOL vmlinux 0xc2a1ee04 unload_nls +EXPORT_SYMBOL vmlinux 0xc2a22f88 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0xc2bab937 tcp_disconnect +EXPORT_SYMBOL vmlinux 0xc2d95893 vlan_untag +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc2fa7976 scsi_allocate_command +EXPORT_SYMBOL vmlinux 0xc310b981 strnstr +EXPORT_SYMBOL vmlinux 0xc314c3d2 __cputime_jiffies_factor +EXPORT_SYMBOL vmlinux 0xc345cade compat_sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0xc37a72c3 scsi_device_resume +EXPORT_SYMBOL vmlinux 0xc37ddef1 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0xc38162ae of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0xc39ce752 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0xc39e0bd9 sk_wait_data +EXPORT_SYMBOL vmlinux 0xc3a8c1a8 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0xc3f19c0e qdisc_list_del +EXPORT_SYMBOL vmlinux 0xc3f3893b pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0xc4023d33 read_cache_pages +EXPORT_SYMBOL vmlinux 0xc41729d1 pci_dev_driver +EXPORT_SYMBOL vmlinux 0xc42e4412 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0xc42f8aa6 buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0xc443f77a of_device_unregister +EXPORT_SYMBOL vmlinux 0xc44c788d netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xc45755de find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0xc45b9741 kfree_put_link +EXPORT_SYMBOL vmlinux 0xc473bd6b cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0xc475a905 __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0xc47cdf9c _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0xc48307db lz4_decompress +EXPORT_SYMBOL vmlinux 0xc4869094 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0xc493a050 nf_log_unset +EXPORT_SYMBOL vmlinux 0xc497d35e do_splice_to +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc4af1255 simple_transaction_set +EXPORT_SYMBOL vmlinux 0xc4c64477 udp6_csum_init +EXPORT_SYMBOL vmlinux 0xc4ca3dd9 get_gendisk +EXPORT_SYMBOL vmlinux 0xc4d13388 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0xc4f2f967 input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0xc5006468 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0xc50a7d2e register_filesystem +EXPORT_SYMBOL vmlinux 0xc5158032 skb_split +EXPORT_SYMBOL vmlinux 0xc51a1eca mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0xc51dfdca genl_unregister_family +EXPORT_SYMBOL vmlinux 0xc520465c blk_complete_request +EXPORT_SYMBOL vmlinux 0xc53ce232 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xc545f33a vmalloc_to_page +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc55c2a9d inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0xc5643b5d devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0xc56c6c7f inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xc589e044 param_set_long +EXPORT_SYMBOL vmlinux 0xc59a0ca2 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0xc5b3d1bd netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0xc5c08eab dpa_uio_bman +EXPORT_SYMBOL vmlinux 0xc5c0b960 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0xc5d74234 put_tty_driver +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc601fa71 agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0xc602c0cb vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0xc61ebb9a dev_activate +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc6359152 bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0xc63deec0 __bio_clone +EXPORT_SYMBOL vmlinux 0xc6550e17 mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc65c14ab udp_proc_register +EXPORT_SYMBOL vmlinux 0xc65ee25c mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0xc663b075 __ioremap +EXPORT_SYMBOL vmlinux 0xc665d6d7 of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0xc666a132 crc_t10dif +EXPORT_SYMBOL vmlinux 0xc687c315 address_space_init_once +EXPORT_SYMBOL vmlinux 0xc68ac0c8 ppp_register_channel +EXPORT_SYMBOL vmlinux 0xc690339c fb_class +EXPORT_SYMBOL vmlinux 0xc6bf7e17 generic_setxattr +EXPORT_SYMBOL vmlinux 0xc6cb465a __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6d1c63a tty_lock +EXPORT_SYMBOL vmlinux 0xc6e89c23 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0xc6f226eb __elv_add_request +EXPORT_SYMBOL vmlinux 0xc70aa385 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0xc71ebbdb kern_path +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc72c3664 netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0xc734cc4b brioctl_set +EXPORT_SYMBOL vmlinux 0xc736a33a blk_register_region +EXPORT_SYMBOL vmlinux 0xc738087c ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0xc7524f68 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0xc75f2f31 open_exec +EXPORT_SYMBOL vmlinux 0xc768de19 cpu_all_bits +EXPORT_SYMBOL vmlinux 0xc7762560 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0xc77e54d9 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0xc77f367f fb_validate_mode +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7c199f6 fb_blank +EXPORT_SYMBOL vmlinux 0xc7edcca7 cdev_alloc +EXPORT_SYMBOL vmlinux 0xc7f7374e lock_fb_info +EXPORT_SYMBOL vmlinux 0xc7f8fd28 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0xc80a1189 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0xc820ed99 xfrm_init_state +EXPORT_SYMBOL vmlinux 0xc82580ce kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc846eddc ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc854341c md_error +EXPORT_SYMBOL vmlinux 0xc858f436 security_path_unlink +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc87780f8 mpage_writepages +EXPORT_SYMBOL vmlinux 0xc87cba37 bio_alloc_pages +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc8b1b01b splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8b9a76b bman_recovery_exit +EXPORT_SYMBOL vmlinux 0xc8d5f082 mdiobus_register +EXPORT_SYMBOL vmlinux 0xc8e59ab8 dev_trans_start +EXPORT_SYMBOL vmlinux 0xc8ecf5f6 kill_fasync +EXPORT_SYMBOL vmlinux 0xc8f731ae mmc_start_req +EXPORT_SYMBOL vmlinux 0xc90a8058 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0xc91ff664 down_read_trylock +EXPORT_SYMBOL vmlinux 0xc92b03c8 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0xc92bf9df make_kuid +EXPORT_SYMBOL vmlinux 0xc93fbc54 wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xc9590a4a fixed_size_llseek +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc96fb6d0 qman_start_dequeues +EXPORT_SYMBOL vmlinux 0xc978479a xz_dec_run +EXPORT_SYMBOL vmlinux 0xc97c14f6 crypto_sha256_update +EXPORT_SYMBOL vmlinux 0xc97fd22d dm_io +EXPORT_SYMBOL vmlinux 0xc9860251 mount_nodev +EXPORT_SYMBOL vmlinux 0xc996d097 del_timer +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9a78cb4 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0xc9a7e3e7 blk_stack_limits +EXPORT_SYMBOL vmlinux 0xc9de97d6 skb_make_writable +EXPORT_SYMBOL vmlinux 0xc9ee4068 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0xca047e2a scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0xca0a16ee devm_gpio_request +EXPORT_SYMBOL vmlinux 0xca240351 dquot_file_open +EXPORT_SYMBOL vmlinux 0xca3b28c6 store_vr_state +EXPORT_SYMBOL vmlinux 0xca3d97e6 qman_get_null_cb +EXPORT_SYMBOL vmlinux 0xca4313f3 max8925_set_bits +EXPORT_SYMBOL vmlinux 0xca5dbc50 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xca6f144d nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xca728e39 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0xca82f246 nf_ct_attach +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xca9620df genphy_suspend +EXPORT_SYMBOL vmlinux 0xca9f53ed mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0xcaa26fa9 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0xcaad442d linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0xcab0f2d1 agp_backend_release +EXPORT_SYMBOL vmlinux 0xcab4694b blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0xcac61d90 soft_cursor +EXPORT_SYMBOL vmlinux 0xcacac221 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0xcadad105 nobh_write_end +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb0c5d50 param_get_uint +EXPORT_SYMBOL vmlinux 0xcb0d6f75 insert_inode_locked +EXPORT_SYMBOL vmlinux 0xcb0f7c45 kmalloc_caches +EXPORT_SYMBOL vmlinux 0xcb150efe pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0xcb1ec5b8 blk_mq_run_queues +EXPORT_SYMBOL vmlinux 0xcbababfa sock_no_connect +EXPORT_SYMBOL vmlinux 0xcbb672bb ip_ct_attach +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbf66241 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0xcbf7f5e8 posix_test_lock +EXPORT_SYMBOL vmlinux 0xcbfffdb3 __brelse +EXPORT_SYMBOL vmlinux 0xcc17504d _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc37f55c blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xcc4b84da of_find_node_by_type +EXPORT_SYMBOL vmlinux 0xcc4e1088 keyring_search +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc65c7a6 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0xcc6e303a __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0xcc7fa952 local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0xcc888c47 pcie_set_mps +EXPORT_SYMBOL vmlinux 0xcc895217 agp_allocate_memory +EXPORT_SYMBOL vmlinux 0xcc8ac2f1 md_unregister_thread +EXPORT_SYMBOL vmlinux 0xccb26351 input_unregister_device +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccd92eca uart_suspend_port +EXPORT_SYMBOL vmlinux 0xccde28ac alloc_fddidev +EXPORT_SYMBOL vmlinux 0xccecee61 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xccf52647 sock_no_listen +EXPORT_SYMBOL vmlinux 0xcd0529c7 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xcd0b6044 dev_disable_lro +EXPORT_SYMBOL vmlinux 0xcd1381bd pci_iomap +EXPORT_SYMBOL vmlinux 0xcd20667a kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd2aee27 security_path_mknod +EXPORT_SYMBOL vmlinux 0xcd2dd8b1 machine_id +EXPORT_SYMBOL vmlinux 0xcd709c5a __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0xcd83555b release_pages +EXPORT_SYMBOL vmlinux 0xcd856284 padata_do_parallel +EXPORT_SYMBOL vmlinux 0xcd86c87f __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xcd97c8d1 of_platform_device_create +EXPORT_SYMBOL vmlinux 0xcdbd49e0 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdcc4176 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0xcdcce1b2 scsi_ioctl +EXPORT_SYMBOL vmlinux 0xcde172ac radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0xcde25742 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0xce018ea2 mpage_writepage +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce2e774b inet_register_protosw +EXPORT_SYMBOL vmlinux 0xce3b3f09 profile_pc +EXPORT_SYMBOL vmlinux 0xce4e47b6 __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce61d069 pci_scan_bus +EXPORT_SYMBOL vmlinux 0xce62ac84 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0xce674c96 seq_printf +EXPORT_SYMBOL vmlinux 0xce823a8a ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0xcea99be7 blk_put_queue +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xced777cb proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf00b5bc __devm_release_region +EXPORT_SYMBOL vmlinux 0xcf13c0e7 __put_cred +EXPORT_SYMBOL vmlinux 0xcf3025cb inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0xcf348057 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0xcf362a6b make_kprojid +EXPORT_SYMBOL vmlinux 0xcf456fd8 prepare_creds +EXPORT_SYMBOL vmlinux 0xcf4d92b1 register_key_type +EXPORT_SYMBOL vmlinux 0xcf50e05d km_new_mapping +EXPORT_SYMBOL vmlinux 0xcf5b30ba __blk_run_queue +EXPORT_SYMBOL vmlinux 0xcf6852c6 sys_imageblit +EXPORT_SYMBOL vmlinux 0xcf6de695 nf_hook_slow +EXPORT_SYMBOL vmlinux 0xcf78c037 mmc_put_card +EXPORT_SYMBOL vmlinux 0xcfa3c3c5 ipmi_smi_add_proc_entry +EXPORT_SYMBOL vmlinux 0xcfbfa141 key_link +EXPORT_SYMBOL vmlinux 0xcfd2215f devm_iounmap +EXPORT_SYMBOL vmlinux 0xcfe505a1 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0xcffbc4ee pme_ctx_pmtcc +EXPORT_SYMBOL vmlinux 0xcffd25e6 seq_release_private +EXPORT_SYMBOL vmlinux 0xd0181f4f __bitmap_xor +EXPORT_SYMBOL vmlinux 0xd0380c4b noop_llseek +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd07fba2d dev_set_mtu +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0bd2a29 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0xd0c54978 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0xd0d42c42 mod_timer_pending +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 0xd10c3452 idr_init +EXPORT_SYMBOL vmlinux 0xd11312cf put_page +EXPORT_SYMBOL vmlinux 0xd11c0dc1 __kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xd138719c qman_recovery_exit +EXPORT_SYMBOL vmlinux 0xd159c359 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0xd15ac066 mmc_can_reset +EXPORT_SYMBOL vmlinux 0xd15f46b6 agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0xd16b1de5 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0xd16d632e d_lookup +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd194da61 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0xd1aaf0ae jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0xd1b4d777 netif_receive_skb +EXPORT_SYMBOL vmlinux 0xd1cbf7fa tcp_seq_open +EXPORT_SYMBOL vmlinux 0xd1cc0681 percpu_counter_compare +EXPORT_SYMBOL vmlinux 0xd204a79c loop_register_transfer +EXPORT_SYMBOL vmlinux 0xd2113241 compat_nf_getsockopt +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +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 0xd26a0f53 __genl_register_family +EXPORT_SYMBOL vmlinux 0xd2745e13 sg_miter_next +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd2b09ce5 __kmalloc +EXPORT_SYMBOL vmlinux 0xd2b28f9c agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0xd2bfa85c pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0xd2c54acd get_disk +EXPORT_SYMBOL vmlinux 0xd2cd5568 interruptible_sleep_on_timeout +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd30213ac mount_pseudo +EXPORT_SYMBOL vmlinux 0xd30c4d14 serio_interrupt +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd36257ba memcpy_toiovecend +EXPORT_SYMBOL vmlinux 0xd3a50c4f compat_sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xd3a58233 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0xd3c747a1 qman_irqsource_remove +EXPORT_SYMBOL vmlinux 0xd3fa3521 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0xd407e985 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0xd45b0685 kvm_read_guest_atomic +EXPORT_SYMBOL vmlinux 0xd460b591 nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0xd47d45c0 inet_frags_init +EXPORT_SYMBOL vmlinux 0xd4851db3 blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0xd488d89f sock_create_kern +EXPORT_SYMBOL vmlinux 0xd4b7aca3 netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0xd4bd595f pm860x_reg_read +EXPORT_SYMBOL vmlinux 0xd4ffbe9b unlock_rename +EXPORT_SYMBOL vmlinux 0xd50d3a9e skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0xd519258f of_find_device_by_node +EXPORT_SYMBOL vmlinux 0xd52903a9 simple_write_end +EXPORT_SYMBOL vmlinux 0xd542f31b input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0xd546759f __ip_dev_find +EXPORT_SYMBOL vmlinux 0xd5624bbf pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0xd57e5c7c devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0xd595f20e skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0xd59c5757 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0xd5aa7152 skb_pull +EXPORT_SYMBOL vmlinux 0xd5f2172f del_timer_sync +EXPORT_SYMBOL vmlinux 0xd60fdfd5 set_anon_super +EXPORT_SYMBOL vmlinux 0xd6138d43 dma_sync_wait +EXPORT_SYMBOL vmlinux 0xd6147a06 dev_addr_add +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd619f575 sock_update_memcg +EXPORT_SYMBOL vmlinux 0xd61caf30 __frontswap_store +EXPORT_SYMBOL vmlinux 0xd621e9ab devm_free_irq +EXPORT_SYMBOL vmlinux 0xd62490c0 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0xd62da9ce sync_blockdev +EXPORT_SYMBOL vmlinux 0xd639def9 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd660f707 blk_delay_queue +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd692a087 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0xd695f7b2 __skb_get_hash +EXPORT_SYMBOL vmlinux 0xd69b8ce9 blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0xd69faec6 netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0xd6a54472 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0xd6bbfa1d ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0xd6bf06c8 sk_stream_error +EXPORT_SYMBOL vmlinux 0xd6c4c25f seq_puts +EXPORT_SYMBOL vmlinux 0xd6ccd82d inet_release +EXPORT_SYMBOL vmlinux 0xd6d61f42 scsi_reset_provider +EXPORT_SYMBOL vmlinux 0xd6d63e9d lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6fd4053 __arch_hweight32 +EXPORT_SYMBOL vmlinux 0xd7171885 kobject_get +EXPORT_SYMBOL vmlinux 0xd71fd3d5 i2c_bit_add_bus +EXPORT_SYMBOL vmlinux 0xd73772de eth_header_cache +EXPORT_SYMBOL vmlinux 0xd737d368 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0xd740c783 read_code +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd761a383 ioremap_prot +EXPORT_SYMBOL vmlinux 0xd77a2f5c pme_stat_get +EXPORT_SYMBOL vmlinux 0xd77a5aa5 __bitmap_and +EXPORT_SYMBOL vmlinux 0xd79538a2 netlink_net_capable +EXPORT_SYMBOL vmlinux 0xd79569c7 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0xd795c8c4 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xd797a8a1 pci_claim_resource +EXPORT_SYMBOL vmlinux 0xd79854e3 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0xd79b5a02 allow_signal +EXPORT_SYMBOL vmlinux 0xd7b28494 blk_mq_free_queue +EXPORT_SYMBOL vmlinux 0xd7cbddda memcpy_toiovec +EXPORT_SYMBOL vmlinux 0xd7df9abf dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd85148da ip6_frag_match +EXPORT_SYMBOL vmlinux 0xd85b78d1 security_file_permission +EXPORT_SYMBOL vmlinux 0xd8889bc6 uart_update_timeout +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8aeed94 gen10g_config_advert +EXPORT_SYMBOL vmlinux 0xd8c72cf0 ifla_policy +EXPORT_SYMBOL vmlinux 0xd8d29881 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd9279f12 tty_write_room +EXPORT_SYMBOL vmlinux 0xd92afabe bitmap_clear +EXPORT_SYMBOL vmlinux 0xd92b025d tty_unlock +EXPORT_SYMBOL vmlinux 0xd92e16ba csum_partial_copy_fromiovecend +EXPORT_SYMBOL vmlinux 0xd945f891 bio_copy_kern +EXPORT_SYMBOL vmlinux 0xd9623e93 audit_log +EXPORT_SYMBOL vmlinux 0xd968b029 skb_copy_and_csum_datagram_iovec +EXPORT_SYMBOL vmlinux 0xd96af778 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0xd97525db dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0xd97c18eb block_write_full_page_endio +EXPORT_SYMBOL vmlinux 0xd97f9ee2 poll_initwait +EXPORT_SYMBOL vmlinux 0xd980a5ca ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd98ecca9 kernel_getpeername +EXPORT_SYMBOL vmlinux 0xd9a14a09 fb_pan_display +EXPORT_SYMBOL vmlinux 0xd9a9bb30 getname +EXPORT_SYMBOL vmlinux 0xd9bac924 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0xd9db0596 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0xd9e884ea simple_link +EXPORT_SYMBOL vmlinux 0xd9f7c5bb generic_file_aio_read +EXPORT_SYMBOL vmlinux 0xda0d6a13 __lock_page +EXPORT_SYMBOL vmlinux 0xda1476d6 mac_find_mode +EXPORT_SYMBOL vmlinux 0xda18ad0e md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0xda21d876 skb_tx_error +EXPORT_SYMBOL vmlinux 0xda2478d0 param_ops_short +EXPORT_SYMBOL vmlinux 0xda3844d8 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xda398c49 may_umount_tree +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda7540c4 __sk_dst_check +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xdaa16b82 of_clk_get +EXPORT_SYMBOL vmlinux 0xdaa6912a inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0xdab949e3 mach_psr2_md +EXPORT_SYMBOL vmlinux 0xdabb0019 inet_add_protocol +EXPORT_SYMBOL vmlinux 0xdabc1ea8 fsl_lbc_find +EXPORT_SYMBOL vmlinux 0xdad7adff dqstats +EXPORT_SYMBOL vmlinux 0xdae1d75f unregister_quota_format +EXPORT_SYMBOL vmlinux 0xdae7d3d0 of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0xdaea6e0d mfd_clone_cell +EXPORT_SYMBOL vmlinux 0xdaf2888a bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0xdaf3abdd inet6_bind +EXPORT_SYMBOL vmlinux 0xdaf3ad4b inet6_ioctl +EXPORT_SYMBOL vmlinux 0xdb01198e fsl_upm_find +EXPORT_SYMBOL vmlinux 0xdb2b6191 __skb_checksum +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb95ba86 vm_map_ram +EXPORT_SYMBOL vmlinux 0xdbaaee17 simple_empty +EXPORT_SYMBOL vmlinux 0xdbb24fc2 down_write +EXPORT_SYMBOL vmlinux 0xdbbb049c jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0xdbcd416e sysctl_ip_nonlocal_bind +EXPORT_SYMBOL vmlinux 0xdbd12899 sk_reset_timer +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc1f25e1 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0xdc3c41a8 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc41333a d_instantiate +EXPORT_SYMBOL vmlinux 0xdc5f2a93 dcache_dir_close +EXPORT_SYMBOL vmlinux 0xdc78d42d jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0xdc865e9a devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0xdc9498dd down +EXPORT_SYMBOL vmlinux 0xdc99a46a tcf_hash_create +EXPORT_SYMBOL vmlinux 0xdcac557f tcp_make_synack +EXPORT_SYMBOL vmlinux 0xdcb764ad memset +EXPORT_SYMBOL vmlinux 0xdcc30a41 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0xdcd7f1bf xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0xdcdd869d nf_unregister_hook +EXPORT_SYMBOL vmlinux 0xdcf4a0a4 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0xdd0f2cab netlink_kernel_release +EXPORT_SYMBOL vmlinux 0xdd2f3b75 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0xdd3230c8 generic_ro_fops +EXPORT_SYMBOL vmlinux 0xdd3ad7eb dquot_quota_sync +EXPORT_SYMBOL vmlinux 0xdd951826 grab_cache_page_nowait +EXPORT_SYMBOL vmlinux 0xdd955144 __debugger +EXPORT_SYMBOL vmlinux 0xddb70fd1 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0xddc37c81 dquot_quota_on +EXPORT_SYMBOL vmlinux 0xddd3cce0 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xdddb72e8 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0xdde4798f generic_file_splice_read +EXPORT_SYMBOL vmlinux 0xde10eb10 param_set_invbool +EXPORT_SYMBOL vmlinux 0xde48e9ca _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xde6151db tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0xde6c31f0 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0xde78190b ata_std_end_eh +EXPORT_SYMBOL vmlinux 0xde7884bd __invalidate_device +EXPORT_SYMBOL vmlinux 0xde89eb10 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0xde8f5ab9 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0xde91448c load_vr_state +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xdeb2c07c skb_orphan_partial +EXPORT_SYMBOL vmlinux 0xdee72164 swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0xdef04c63 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0xdefa0ad8 qman_testwrite_cgr +EXPORT_SYMBOL vmlinux 0xdf096e78 udp_ioctl +EXPORT_SYMBOL vmlinux 0xdf112509 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0xdf13971c dpa_uio_qman +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf4294f1 blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf84bccc qman_volatile_dequeue +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdfa52aec sk_filter +EXPORT_SYMBOL vmlinux 0xdfb59b2e dquot_disable +EXPORT_SYMBOL vmlinux 0xdfc8e023 compat_nf_setsockopt +EXPORT_SYMBOL vmlinux 0xdff20ffc simple_readpage +EXPORT_SYMBOL vmlinux 0xe007e4b3 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0xe008a968 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0xe0244bed compat_mc_setsockopt +EXPORT_SYMBOL vmlinux 0xe045ac49 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe05bec18 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0xe06014f4 write_one_page +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe0b04d7e check_disk_size_change +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0c4fa0b __find_get_block +EXPORT_SYMBOL vmlinux 0xe0c9eace crypto_sha1_update +EXPORT_SYMBOL vmlinux 0xe0d16b66 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xe0d5921f request_key +EXPORT_SYMBOL vmlinux 0xe0e6602b sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0xe0edc487 sock_edemux +EXPORT_SYMBOL vmlinux 0xe0ef10c7 ida_simple_remove +EXPORT_SYMBOL vmlinux 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe1239676 napi_gro_receive +EXPORT_SYMBOL vmlinux 0xe14ac924 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0xe14f58d7 led_blink_set +EXPORT_SYMBOL vmlinux 0xe15514f8 skb_store_bits +EXPORT_SYMBOL vmlinux 0xe15f424f tty_hung_up_p +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe17e6cf7 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0xe1826209 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0xe1ba6563 seq_bitmap +EXPORT_SYMBOL vmlinux 0xe1c25bbd blk_run_queue_async +EXPORT_SYMBOL vmlinux 0xe1c3bc0e vmap +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe2172404 __serio_register_port +EXPORT_SYMBOL vmlinux 0xe220ceb8 __debugger_sstep +EXPORT_SYMBOL vmlinux 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL vmlinux 0xe234c419 mutex_lock +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe23d56da contig_page_data +EXPORT_SYMBOL vmlinux 0xe2468bfe inetdev_by_index +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe250937f inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xe263233f blk_rq_init +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2be5498 lg_global_unlock +EXPORT_SYMBOL vmlinux 0xe2bfd599 __dquot_free_space +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2eb9a5e tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0xe2f58d72 lock_rename +EXPORT_SYMBOL vmlinux 0xe303c2cc md_done_sync +EXPORT_SYMBOL vmlinux 0xe34cfb73 eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0xe35c5285 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0xe3a19361 skb_copy +EXPORT_SYMBOL vmlinux 0xe3a53f4c sort +EXPORT_SYMBOL vmlinux 0xe3bc16f1 mem_cgroup_subsys +EXPORT_SYMBOL vmlinux 0xe3bce086 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0xe3d38063 blk_peek_request +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3d8b777 inet_shutdown +EXPORT_SYMBOL vmlinux 0xe3f37fbf inet_dgram_connect +EXPORT_SYMBOL vmlinux 0xe402faa9 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0xe453d3d0 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xe47a5461 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe49808b4 qman_poll +EXPORT_SYMBOL vmlinux 0xe4a895fa up_write +EXPORT_SYMBOL vmlinux 0xe4ab00bb of_node_get +EXPORT_SYMBOL vmlinux 0xe4c80638 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0xe4e62c72 serio_close +EXPORT_SYMBOL vmlinux 0xe4ec2963 ppp_unit_number +EXPORT_SYMBOL vmlinux 0xe4eecc60 ipv4_specific +EXPORT_SYMBOL vmlinux 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL vmlinux 0xe4fe8ca1 _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xe5080ae6 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0xe5122890 flow_cache_genid +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe529e7fc dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0xe533f288 simple_unlink +EXPORT_SYMBOL vmlinux 0xe53d1faa of_translate_dma_address +EXPORT_SYMBOL vmlinux 0xe5724d2f gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe579fed1 pci_get_device +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe59b349b scsi_host_alloc +EXPORT_SYMBOL vmlinux 0xe5a3ee67 devm_ioremap +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5cc1d61 d_splice_alias +EXPORT_SYMBOL vmlinux 0xe5df0dba jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe5ed9919 agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0xe5f0dee3 da903x_query_status +EXPORT_SYMBOL vmlinux 0xe5f1fdbe scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xe5fde832 mnt_unpin +EXPORT_SYMBOL vmlinux 0xe63df511 inet_ioctl +EXPORT_SYMBOL vmlinux 0xe66452ab dql_init +EXPORT_SYMBOL vmlinux 0xe6686080 __scm_destroy +EXPORT_SYMBOL vmlinux 0xe6765e24 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69a9df4 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0xe6a73251 sock_kfree_s +EXPORT_SYMBOL vmlinux 0xe6a7a675 __sb_start_write +EXPORT_SYMBOL vmlinux 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL vmlinux 0xe6ad4f40 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0xe6bc9e4a kset_register +EXPORT_SYMBOL vmlinux 0xe6cd6d98 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0xe6daf41d iterate_supers_type +EXPORT_SYMBOL vmlinux 0xe6ddd17e inet6_release +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe70068f5 scsi_device_put +EXPORT_SYMBOL vmlinux 0xe713ff22 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0xe771e6e8 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0xe7749888 sock_from_file +EXPORT_SYMBOL vmlinux 0xe77f01a2 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0xe781e02d scsi_is_target_device +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7c53f43 cfb_copyarea +EXPORT_SYMBOL vmlinux 0xe7c84014 lockref_mark_dead +EXPORT_SYMBOL vmlinux 0xe7ce7439 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0xe7ceb08a ___pskb_trim +EXPORT_SYMBOL vmlinux 0xe7d3367f vfs_create +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7df1bc6 fsl_ifc_ctrl_dev +EXPORT_SYMBOL vmlinux 0xe7df6891 pci_fixup_device +EXPORT_SYMBOL vmlinux 0xe7eac857 kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0xe801b2cc tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0xe801bcc2 dentry_unhash +EXPORT_SYMBOL vmlinux 0xe8141e59 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0xe833fa77 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0xe84e223e __register_binfmt +EXPORT_SYMBOL vmlinux 0xe870d146 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0xe88a95d0 should_remove_suid +EXPORT_SYMBOL vmlinux 0xe8935ae6 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xe89953ba submit_bio_wait +EXPORT_SYMBOL vmlinux 0xe899a76c build_skb +EXPORT_SYMBOL vmlinux 0xe8b63ace radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xe8b82fe0 bman_ip_rev +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8c03987 inet_add_offload +EXPORT_SYMBOL vmlinux 0xe8c438f3 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0xe8ce9762 user_revoke +EXPORT_SYMBOL vmlinux 0xe8ed94da nf_ip_checksum +EXPORT_SYMBOL vmlinux 0xe8f494cc qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0xe8f61f6c block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0xe903df39 mount_bdev +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe928975c bio_integrity_clone +EXPORT_SYMBOL vmlinux 0xe943b2f4 tty_name +EXPORT_SYMBOL vmlinux 0xe950499d qman_release_fqid_range +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe962a346 get_super +EXPORT_SYMBOL vmlinux 0xe9724386 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0xe978b78d pme_hw_flow_new +EXPORT_SYMBOL vmlinux 0xe9852ccd vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0xe9a22300 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0xe9c33626 get_thermal_instance +EXPORT_SYMBOL vmlinux 0xe9d1b2a7 dev_printk_emit +EXPORT_SYMBOL vmlinux 0xe9d7bca9 simple_transaction_get +EXPORT_SYMBOL vmlinux 0xe9d8e73e mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0xe9e44cfa skb_dequeue +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xe9f96c9b input_get_keycode +EXPORT_SYMBOL vmlinux 0xe9f9ca5d d_invalidate +EXPORT_SYMBOL vmlinux 0xea04132c netif_napi_del +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea10212a int_to_scsilun +EXPORT_SYMBOL vmlinux 0xea10655a __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xea16dd4c tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xea539b64 security_path_mkdir +EXPORT_SYMBOL vmlinux 0xea61e6df generic_file_buffered_write +EXPORT_SYMBOL vmlinux 0xea6e3003 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0xea884794 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0xea968c96 ___ratelimit +EXPORT_SYMBOL vmlinux 0xeaa1020d tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xeab75ce6 dev_get_by_index +EXPORT_SYMBOL vmlinux 0xeabede75 __lock_buffer +EXPORT_SYMBOL vmlinux 0xeac2a16e unlock_buffer +EXPORT_SYMBOL vmlinux 0xeae7a1db tty_unregister_device +EXPORT_SYMBOL vmlinux 0xeae84df5 kill_anon_super +EXPORT_SYMBOL vmlinux 0xeaf06f6f sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0xeafb5df3 qdisc_destroy +EXPORT_SYMBOL vmlinux 0xeb25926e dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0xeb343c22 make_bad_inode +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb44339a free_pages_exact +EXPORT_SYMBOL vmlinux 0xeb56ae0b clocksource_register +EXPORT_SYMBOL vmlinux 0xeb94daee qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0xebcab3a6 ppc_pci_io +EXPORT_SYMBOL vmlinux 0xebcfb497 devm_clk_put +EXPORT_SYMBOL vmlinux 0xebd5eb66 vfs_readlink +EXPORT_SYMBOL vmlinux 0xebd661a6 inode_get_bytes +EXPORT_SYMBOL vmlinux 0xebdbe48c radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xec17ebb0 of_match_node +EXPORT_SYMBOL vmlinux 0xec1c9cc4 bio_add_page +EXPORT_SYMBOL vmlinux 0xec2a7234 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0xec4296a6 default_llseek +EXPORT_SYMBOL vmlinux 0xec46d18c block_truncate_page +EXPORT_SYMBOL vmlinux 0xec477856 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec4fd845 tty_register_driver +EXPORT_SYMBOL vmlinux 0xec6e0c8b block_read_full_page +EXPORT_SYMBOL vmlinux 0xec8186d9 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0xec92b80e kernel_sendpage +EXPORT_SYMBOL vmlinux 0xecbb926f xor_altivec_3 +EXPORT_SYMBOL vmlinux 0xecc1449e bm_pool_set +EXPORT_SYMBOL vmlinux 0xeccd99f2 bio_unmap_user +EXPORT_SYMBOL vmlinux 0xecd671f6 submit_bh +EXPORT_SYMBOL vmlinux 0xecda64c8 inet_sendpage +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecf8b23b blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0xed0bebfa elv_unregister_queue +EXPORT_SYMBOL vmlinux 0xed1af4f8 splice_from_pipe_feed +EXPORT_SYMBOL vmlinux 0xed22bc34 clear_nlink +EXPORT_SYMBOL vmlinux 0xed26bc09 netlink_set_err +EXPORT_SYMBOL vmlinux 0xed4e7a7b proto_register +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed644fa6 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0xed64d360 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0xed65d4ef mach_corenet_generic +EXPORT_SYMBOL vmlinux 0xed6a5547 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0xed80446a mmc_fixup_device +EXPORT_SYMBOL vmlinux 0xed99f1f3 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc410d0 udplite_table +EXPORT_SYMBOL vmlinux 0xee169f7e __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0xee246dff ida_destroy +EXPORT_SYMBOL vmlinux 0xee24cda7 __dst_free +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee2d2604 led_set_brightness +EXPORT_SYMBOL vmlinux 0xee5fccde bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0xee670dea neigh_parms_release +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeb5bd3b __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0xeeb6a9e7 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0xeebad80f dquot_scan_active +EXPORT_SYMBOL vmlinux 0xeebcf0e4 read_cache_page +EXPORT_SYMBOL vmlinux 0xeec2a6aa __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0xeec2ff33 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xeecf0578 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0xeeec26a7 queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xef109449 interruptible_sleep_on +EXPORT_SYMBOL vmlinux 0xef3dbbd8 unregister_shrinker +EXPORT_SYMBOL vmlinux 0xef6838ff tty_lock_pair +EXPORT_SYMBOL vmlinux 0xef8c6d9d flush_signals +EXPORT_SYMBOL vmlinux 0xefac60bd proc_set_size +EXPORT_SYMBOL vmlinux 0xefce1289 sk_dst_check +EXPORT_SYMBOL vmlinux 0xefd43da4 __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefde1bbe flush_dcache_range +EXPORT_SYMBOL vmlinux 0xefee91b2 get_pci_dma_ops +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf00712aa udp_lib_unhash +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf035b139 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xf044a314 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf0619801 timekeeping_clocktai +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf0805f5a bio_map_user +EXPORT_SYMBOL vmlinux 0xf087137d __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0xf098b6d0 skb_unlink +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0a29b60 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0xf0adfb03 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0xf0b270c2 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0xf0c2200f redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0xf0e47b86 tcp_sendpage +EXPORT_SYMBOL vmlinux 0xf0e57a9f bman_flush_stockpile +EXPORT_SYMBOL vmlinux 0xf0edcd08 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0ef6bee skb_put +EXPORT_SYMBOL vmlinux 0xf0f1246c kvasprintf +EXPORT_SYMBOL vmlinux 0xf0f70bf6 skb_queue_head +EXPORT_SYMBOL vmlinux 0xf0f746f8 mmc_hw_reset_check +EXPORT_SYMBOL vmlinux 0xf0fd4e8f rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0xf100416a remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xf10a8516 starget_for_each_device +EXPORT_SYMBOL vmlinux 0xf10ca3e7 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf11b6374 pme_ctx_ctrl_update_flow +EXPORT_SYMBOL vmlinux 0xf11cd6ce down_interruptible +EXPORT_SYMBOL vmlinux 0xf13feb57 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0xf140030a inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0xf14008e5 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf15c98d6 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xf17b0b4a blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0xf183189b __ioremap_at +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1986947 pci_clear_master +EXPORT_SYMBOL vmlinux 0xf19eed1b ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xf1beb689 d_move +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1e06df1 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1efce04 mutex_unlock +EXPORT_SYMBOL vmlinux 0xf202c5cb radix_tree_insert +EXPORT_SYMBOL vmlinux 0xf20866d9 netdev_features_change +EXPORT_SYMBOL vmlinux 0xf20a08a7 kmem_cache_create +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf222defb __ip_select_ident +EXPORT_SYMBOL vmlinux 0xf22881e8 lg_local_lock +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf24de1d0 pci_set_master +EXPORT_SYMBOL vmlinux 0xf257103d __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL vmlinux 0xf280adbc mmc_can_erase +EXPORT_SYMBOL vmlinux 0xf2963d40 scsi_print_command +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2b1ac8e __getnstimeofday +EXPORT_SYMBOL vmlinux 0xf30386c5 icmpv6_send +EXPORT_SYMBOL vmlinux 0xf311eb0c sock_kmalloc +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf322a206 bit_waitqueue +EXPORT_SYMBOL vmlinux 0xf3287858 phy_driver_register +EXPORT_SYMBOL vmlinux 0xf3296e84 skb_flow_dissect +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf33f3d6d pci_get_class +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf3712909 qman_query_congestion +EXPORT_SYMBOL vmlinux 0xf372b84b nf_log_packet +EXPORT_SYMBOL vmlinux 0xf37ca8ed init_net +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf3a501a9 generic_fillattr +EXPORT_SYMBOL vmlinux 0xf3bf0bce __bitmap_complement +EXPORT_SYMBOL vmlinux 0xf3ddc636 ps2_drain +EXPORT_SYMBOL vmlinux 0xf3e3d9ef call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0xf3e50251 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xf3f0de9c sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0xf3f96518 md_flush_request +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf4575601 elv_rb_add +EXPORT_SYMBOL vmlinux 0xf4621f63 set_security_override +EXPORT_SYMBOL vmlinux 0xf474fcf4 get_fs_type +EXPORT_SYMBOL vmlinux 0xf47bfe16 vlan_vid_add +EXPORT_SYMBOL vmlinux 0xf481bbcd iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0xf4a9b0da scsi_register_driver +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4cb1b46 gen10g_suspend +EXPORT_SYMBOL vmlinux 0xf4dca5dc tcp_gro_complete +EXPORT_SYMBOL vmlinux 0xf4df8bb7 unregister_netdev +EXPORT_SYMBOL vmlinux 0xf4e0cae5 pme_ctx_exclusive_dec +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf50fe0d5 pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0xf51bf88b nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xf5222143 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf53df0a5 gen_pool_free +EXPORT_SYMBOL vmlinux 0xf55b3b3d __arch_hweight16 +EXPORT_SYMBOL vmlinux 0xf5717604 __nla_reserve +EXPORT_SYMBOL vmlinux 0xf5779ce9 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0xf5863fce d_find_any_alias +EXPORT_SYMBOL vmlinux 0xf593824c simple_setattr +EXPORT_SYMBOL vmlinux 0xf59d384d sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0xf5a085c4 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0xf5a59b39 from_kgid +EXPORT_SYMBOL vmlinux 0xf5a62ecc _memset_io +EXPORT_SYMBOL vmlinux 0xf5cd0ba4 padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xf5e1558d crash_shutdown_unregister +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5ed159e input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0xf5f11ffe simple_transaction_read +EXPORT_SYMBOL vmlinux 0xf5f6e3b6 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0xf601b957 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0xf60e8cc0 scsi_nonblockable_ioctl +EXPORT_SYMBOL vmlinux 0xf6103405 wireless_send_event +EXPORT_SYMBOL vmlinux 0xf6335aeb netif_rx_ni +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf63cec19 f_setown +EXPORT_SYMBOL vmlinux 0xf6468c13 proc_remove +EXPORT_SYMBOL vmlinux 0xf6518619 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0xf6591fea swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0xf6782624 bdi_register_dev +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf68687be __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xf6903461 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0xf6905a81 inet_select_addr +EXPORT_SYMBOL vmlinux 0xf692734f dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0xf6a43149 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0xf6ba18af __napi_complete +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6c35bfe seq_release +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf7289d14 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0xf73220e8 __scsi_put_command +EXPORT_SYMBOL vmlinux 0xf73c64ff jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0xf741c793 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf77cfa84 nf_log_set +EXPORT_SYMBOL vmlinux 0xf7a4aafe tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xf7adcaf3 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0xf7bf13d4 security_inode_readlink +EXPORT_SYMBOL vmlinux 0xf7cc8aab scsi_host_put +EXPORT_SYMBOL vmlinux 0xf7da66e0 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0xf7f26a28 __getblk +EXPORT_SYMBOL vmlinux 0xf7f6cb86 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0xf803fe39 bitmap_set +EXPORT_SYMBOL vmlinux 0xf80de9ff hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf812cff6 memscan +EXPORT_SYMBOL vmlinux 0xf817d55d unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf89a3d62 bman_affine_cpus +EXPORT_SYMBOL vmlinux 0xf89c8e07 ida_pre_get +EXPORT_SYMBOL vmlinux 0xf8c5f2b0 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0xf8c6556b set_page_dirty +EXPORT_SYMBOL vmlinux 0xf8e215e0 paca +EXPORT_SYMBOL vmlinux 0xf8f8ed28 get_phy_device +EXPORT_SYMBOL vmlinux 0xf919c73e ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0xf9228003 get_immrbase +EXPORT_SYMBOL vmlinux 0xf9308621 read_dev_sector +EXPORT_SYMBOL vmlinux 0xf931b457 phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0xf940a328 __next_cpu +EXPORT_SYMBOL vmlinux 0xf9578368 agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0xf9671dc2 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0xf970a799 twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0xf99411eb sock_rfree +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9c0b663 strlcat +EXPORT_SYMBOL vmlinux 0xf9eee0fb mntput +EXPORT_SYMBOL vmlinux 0xf9f30457 pci_dev_put +EXPORT_SYMBOL vmlinux 0xf9fbb8ed pcie_port_service_register +EXPORT_SYMBOL vmlinux 0xfa1ad0fe max8925_bulk_write +EXPORT_SYMBOL vmlinux 0xfa38b96d cdrom_mode_select +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa6f1a96 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0xfa7f3156 wl12xx_get_platform_data +EXPORT_SYMBOL vmlinux 0xfa8f766c i2c_clients_command +EXPORT_SYMBOL vmlinux 0xfab01f9b dquot_release +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfade8f10 inode_init_owner +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaf98462 bitrev32 +EXPORT_SYMBOL vmlinux 0xfb2e03b9 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0xfb355fa8 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb770cfb seq_putc +EXPORT_SYMBOL vmlinux 0xfb895d6f mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xfb92a863 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfba12167 netpoll_rx_disable +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbb2e8b4 phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0xfbcc492b generic_listxattr +EXPORT_SYMBOL vmlinux 0xfbd099ae dev_set_group +EXPORT_SYMBOL vmlinux 0xfbd1ea7e tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0xfbd7cc41 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0xfbe59095 netdev_emerg +EXPORT_SYMBOL vmlinux 0xfbe72fa5 agp_free_page_array +EXPORT_SYMBOL vmlinux 0xfbec33c0 vga_put +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc0b7adc deactivate_locked_super +EXPORT_SYMBOL vmlinux 0xfc293305 key_payload_reserve +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc3b160f mempool_create_node +EXPORT_SYMBOL vmlinux 0xfc4aba40 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0xfc565f6c netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0xfc68efa2 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0xfcaa04a0 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL vmlinux 0xfcb926cd kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xfcbb5402 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcebbd5b pme2_exclusive_set +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd0a17ff dst_release +EXPORT_SYMBOL vmlinux 0xfd2b210c locks_remove_posix +EXPORT_SYMBOL vmlinux 0xfd2dfde9 ip_defrag +EXPORT_SYMBOL vmlinux 0xfd419409 kthread_stop +EXPORT_SYMBOL vmlinux 0xfd5a2aa6 lro_flush_all +EXPORT_SYMBOL vmlinux 0xfd6293c2 boot_tvec_bases +EXPORT_SYMBOL vmlinux 0xfd664664 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0xfd7ab3cb scsi_get_command +EXPORT_SYMBOL vmlinux 0xfd7cf025 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfdb6cedc _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0xfdb7b7f5 input_reset_device +EXPORT_SYMBOL vmlinux 0xfdb9769c bh_submit_read +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdcb496e pme_hw_flow_free +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 0xfe15284e giveup_fpu +EXPORT_SYMBOL vmlinux 0xfe20542c sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0xfe2e649e key_task_permission +EXPORT_SYMBOL vmlinux 0xfe34d0f9 ppp_input +EXPORT_SYMBOL vmlinux 0xfe35aa4a percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0xfe42e8ab inet_stream_connect +EXPORT_SYMBOL vmlinux 0xfe5149ad unlock_page +EXPORT_SYMBOL vmlinux 0xfe55f570 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0xfe59379e sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0xfe5b90c0 thaw_bdev +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe6a725f pci_bus_get +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe988a28 sock_no_bind +EXPORT_SYMBOL vmlinux 0xfe9b72e2 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0xfed1ee6a rfkill_alloc +EXPORT_SYMBOL vmlinux 0xfed7a159 vm_event_states +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfede1895 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0xfeebc7c4 __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0xfef96e23 __scsi_print_command +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff2ad072 of_dev_get +EXPORT_SYMBOL vmlinux 0xff3cdee6 of_phy_connect_fixed_link +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff98d004 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffab7dca __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0xffabbb03 register_md_personality +EXPORT_SYMBOL vmlinux 0xffc88c0d devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0xffd1ecc0 set_bdi_congested +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffe71d33 neigh_lookup +EXPORT_SYMBOL vmlinux 0xffeaf372 bio_sector_offset +EXPORT_SYMBOL_GPL crypto/af_alg 0x12457667 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x289197b2 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0x57f1d851 af_alg_release_parent +EXPORT_SYMBOL_GPL crypto/af_alg 0x58716898 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x618dd23e af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x7354f728 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xd081f745 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xd3bb258b af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xf1bebf27 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0xfa652a69 af_alg_complete +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x5acab57d async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x558aad5f async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xbdb8f5d3 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x9f57ee78 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xa569c0ae async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x261e4e92 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xafb7367e __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xd47661b3 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xfc5b3bb2 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x7446f302 async_xor +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xec0f002f async_xor_val +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x79bad4c7 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x1ead37c5 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 0x78702305 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 0x3c4aa76f cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x7e52abe8 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x8ac63f77 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x9e6db1e9 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0xafbc95ce cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xcd6cd151 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xda96154c cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xe90b4f47 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xfbe50056 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xfe5d204d cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/lrw 0x1f4022a0 lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +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 0xd18895df serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x03b19c1d twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x73e5db3b xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x09d21716 ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x0ef97416 ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x250a8092 ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x2f8cbba6 ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x62ae2be1 ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x9c4028ca ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xf09cc694 ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x13e3273b ahci_restart_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x16a2f96a ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x327bf021 ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x40712055 ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x45e87920 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x4863404d ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x4e898369 ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5a6cc8bb ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5b255067 ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5eacba1f ahci_interrupt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x61161fa5 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x694f923e ahci_thread_fn +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6e05c4e7 ahci_hw_interrupt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6e192a45 ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7d347e4d ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x808c1e89 ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8c52557e ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xb1f064be ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc78269c9 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd13527d8 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd62165bd ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd6f7662a ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xef719b71 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf677f182 ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xfbe46d7c ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x002d2608 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0xa02a1c16 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/bcma/bcma 0x1124be3a bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x22605d9d bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x247d6113 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3073aba9 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x36a01c54 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3cd23ca9 bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x48e86d36 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4acb2cee bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4fe2a853 bcma_core_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6ec0c400 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x75ac5e43 bcma_core_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8e5c95e6 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa279cffa __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xaf69efc3 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb002fd6f bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb741f687 bcma_core_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xbade3920 bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xbf65d7e6 bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc9a571a6 bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xca668162 bcma_find_core +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xea2a8253 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf65d7058 bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xfcfeefc0 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x3bd7a10d btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x3e75d3b9 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x50410130 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x7c9d0486 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x7d07f1d9 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x9e2f1cda btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xbc2f892e btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xc4ae7a74 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xca073a9c btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xfa47fbaa btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xcc9ae76b dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xcd62639f dw_dma_shutdown +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xf313cc4a dw_dma_probe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x03bea628 edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x171c94ed edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1e600220 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x20cdac7c edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x21019372 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2cd89c14 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x4157b51e edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x42927695 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5279ff3f edac_mc_add_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x69259f22 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6bbcb3df edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa82819a5 edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb035e273 find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb199d811 edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb5d0ee7e edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xbe0081d8 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc7af8cfe edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd044e3b6 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd0713999 edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd5bb2706 edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xdb997dc0 edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe2b4ca0f edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe765b445 edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xeb192694 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x70e9dc01 bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0xf03edee9 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x7804170e __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x9d85a9dc __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x470764f4 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x53569214 drm_vm_open_locked +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xdee489eb drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x057e89f6 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 0xc6f558d2 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 0xdb67a5d5 ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x14dcb8a8 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1afee764 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x22391693 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x265daf4c hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2f497915 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x31f77ac9 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3486f584 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x38a39d68 hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3b16a354 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x41033840 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x58ada16e hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x61a99875 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x63df6143 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x65e7dd80 hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6d42e1d0 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x713e3b73 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8032809c hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9284f81b hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x95d200b0 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x99e0e46f hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa4bbe73d hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa5cbfdb9 hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xac7d8ead hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb369b5f3 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbe2cda85 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc2fad5b5 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc49ab795 hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0xca241fec hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xddc98bb7 hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0xde948de5 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe60ddba5 hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf028ae34 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf3f90c60 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfbe4ab0d hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x37c645e7 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x0d87fa01 roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x0e281da5 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x5b524e1a roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x8b37bff2 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x9264d62a roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xc894f674 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x00f4dd39 sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x0aeabbba sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x19fd1498 sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x3620a737 sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x5b5df985 sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x773d24ac sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x97d4436a sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xbe49ebe4 sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x55675ece hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x132d2479 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x1c8bfa38 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x2fd2041c hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x35179961 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x41923415 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x4cd80f8f hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5bf7e1ee hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xdc04ec40 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xeb3d4a99 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xecce8132 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf117ecd5 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf5049ba8 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf847703e hsi_async +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x858dde13 adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xdb443f55 adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x157b3c13 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x25d91afc pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x36c6f502 pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x406d7bb6 pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x5b65cdcb pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x70fa2c64 pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x774c4c1a pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x7e724821 pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xb12ee9f0 pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xbda414d0 pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xdd036437 pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf910aa15 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x1d25a964 i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x24ad6eb1 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 0x686e0ae7 i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x6ac08e49 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x990b527e i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xa39fac12 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xb48c925c i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xc51b5cbe i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xeb19b873 i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xca0f01c9 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xca871145 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x77233f5f i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xde1bcd12 i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x0a089dd5 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x1ad3d95c ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x1b14d873 ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x25274d26 ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x42665ada ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x90c5ab55 ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xba03bb33 ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xda422907 ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xe91f6689 ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x018825b7 adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x1031c3a2 adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x17d3c7c4 adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x1a74d814 adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x20664f4b adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x394e7b23 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x520afc98 adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x9fcd9f0e adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xa1f1faf3 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xd341904f adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xda587bb6 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xfe557632 adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x066a728e iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1d9fb0aa iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x267c0508 iio_channel_release_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26f6b499 iio_str_to_fixpoint +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2b9195e8 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3b477240 devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x49c81aa0 devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4a2f9eb0 devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x500aa0e7 iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x52c03882 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5e591fdb iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x60efebbf iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6777d739 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6b7c21e1 iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7abadca6 iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x83dcc04c devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8517b3a0 iio_scan_mask_set +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8758aa54 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x942b2214 iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9805bda8 iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9ecb1860 iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa357e505 iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb388ee54 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd12aa4ef iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd47a27e6 iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xda6eafd9 iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdf38ccfb iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe3497a53 iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe5243542 iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xefea6d28 iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf1b2ef92 iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf7a7de47 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x9b4d6a74 input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0x4c774268 matrix_keypad_parse_of_params +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x49a4fcbd adxl34x_remove +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x55e21360 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 0x37253417 cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xcef4a522 cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xe82970b1 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x1ca6d7b7 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x21382dd9 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xe0432c73 cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x18d0a9c4 cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xb644e301 cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x0de38d5e wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x284ad073 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x4a4ed14c wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x53738687 wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x55229cb4 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xa3f99358 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xac526a84 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xc1498dc0 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xcff3a2fc wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xdc77ba08 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xdcf7909a wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xe8360652 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x2cf7b983 ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x3f07c19c ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x58c7d947 ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x5d9ea27e ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x63eb9bfa ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x6d63a132 ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xce5995cd ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xce646620 ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xffaca479 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0x23359aff unregister_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0xce1414b2 register_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x046580fc gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x0ad42bcd gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2144b39a gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3da959fe gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x45d67d00 gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x4a5a9a48 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x622a8e3e gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x75ddc8da gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x87f725d1 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8a4e14a4 gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x919f8fe0 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa3151853 gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa863fe15 gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc4fbf68f gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xca79eb10 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd3c1727e gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd4ea7a80 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe369c2bf gigaset_stop +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x07525df9 lp55xx_unregister_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x0ae6e9bb lp55xx_of_populate_pdata +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x14667d0a lp55xx_register_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x60a77f50 lp55xx_unregister_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x71948b0d lp55xx_register_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x7501d5e1 lp55xx_write +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xb7fa68cc lp55xx_read +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xc06e7dea lp55xx_init_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xd1d3166a lp55xx_is_extclk_used +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xeb780b7d lp55xx_update_bits +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xef6c1a23 lp55xx_deinit_device +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 0x3ff214ea wf_register_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x66bf1c55 wf_unregister_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x7105f7e8 wf_find_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x72f68ad5 wf_find_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x75147afa wf_set_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x7aa4556e wf_get_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x8c3222e0 wf_register_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x91be42c0 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 0xc92d8cb1 wf_get_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xd6f6d6e3 wf_unregister_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xd82a3fde wf_put_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xed82a14f wf_clear_overtemp +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 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 0x8a4afa11 __tracepoint_bcache_alloc_invalidate +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 0x03b887d8 dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x127e0b06 dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x1563fe43 dm_bio_prison_free_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 0x55793ca5 dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x643949d3 dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6745e9c0 dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +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 0xdbe84375 dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xebd06eaf dm_bio_prison_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x15aae79e 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 0x096c2bb2 dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x133ed188 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x2c2af6a6 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x79a4a60a dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x7d792683 dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xad9db05e dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xce67ea07 dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x093a54d3 dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xc79f523c 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 0x0314dc06 dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x09020750 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 0x51fc5bfd dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x5e966fd8 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x6dc05b7c 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 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf3f31288 dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfad9d53a dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfc62ef4e dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfd93482e dm_rh_recovery_in_flight +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0054f69d dm_tm_pre_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x01445176 dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x17c36f29 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1cac81ac dm_bitset_clear_bit +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 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 0x2f74609d dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x32b5f546 dm_array_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x38c75c44 dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x42dbdfc3 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 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 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 0x68fae9d2 dm_disk_bitset_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x6a05a473 dm_block_manager_create +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 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 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 0xa0bbbb49 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa13861b4 dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa87c5b4d dm_array_resize +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 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 0xe44b4b9b dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed1e1f96 dm_btree_remove +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 0xf475af48 dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf5455120 dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/raid1 0xce44ab4e md_raid1_congested +EXPORT_SYMBOL_GPL drivers/md/raid10 0xc659890d md_raid10_congested +EXPORT_SYMBOL_GPL drivers/md/raid456 0xcdcead13 md_raid5_congested +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x1e069f2f saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x1e1478d6 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x26244d8f saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x47724a78 saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x4b1de320 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x4e0e9432 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x796b4a73 saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x91b9f5a4 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xd7639a0f saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xddd65540 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x44143c35 saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x70ea6ab1 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xa68ff040 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xdda88ea9 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xe2f0b90e saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xe4b20681 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xe7dcf2d7 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x03b6a344 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x0c462388 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x0fe102b2 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x1fdae073 sms_board_led_feedback +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 0x600e6746 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x68439566 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x6d0704fd smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x75644692 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x8056fc38 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x8c39074d smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x95af65fa 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 0xa45e5277 smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xac29cf62 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb0cec119 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc763656e smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe301334c smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xf964b45d smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0x81e0458a cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0xdad4e983 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0x02618b3a cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2ddaf454 mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x39355cc2 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x3f031806 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x4b1e41f6 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x5ddfaf01 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x73b09f95 mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x781d5a39 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7a942f0f mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7b3e8a7c mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa04698b4 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xafcc76f6 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xb3ac5ca2 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc60232f0 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xe1d24f56 mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xe8eff0fd mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf791ced8 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xff1fdb31 mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x2db25573 saa7134_g_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x307c79bc saa7134_queryctrl +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x480eb446 saa7134_s_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x8c89cd54 saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xb13b345e saa7134_s_std_internal +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x06d2ea54 ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x0f9a00e7 ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x63bf1033 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x6e781844 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x6f69260d ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xaf09e2d8 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xdf9817d6 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x6f3aca56 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xcdc4bfd0 radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x02eb73aa rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x03150f2b rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x10868b86 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1713d518 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1b26b832 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x2580e34f ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x2c325ed9 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x47766566 rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x557d5f4a ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6343ed7c rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x84adda70 rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x8c773702 rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9467298b rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb1393dd2 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd0d2bebd rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd405fd87 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xef11ee7b ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf384d634 ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xffe85f57 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0x602ed241 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0xde6a6628 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x3bb8e6d8 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x3fd092f4 r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0xb521d083 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0xd51f10b2 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x9b63df9d tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xac96d6a4 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x9b25718c tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x79e05d3d tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xbd9aa06c tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x4fdddf1e tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xe01895e2 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x05c7bb4a simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x0b1d9baa cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x0bd577dc cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x0ce1042e cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1cde1b75 cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x22afe274 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x2e9a5162 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x31af9230 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x3a833fa9 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x55730a17 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x5c50f5ea cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x665cb40c cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7096f3a0 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x76a9e037 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb665de67 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb7032cf8 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc7768f29 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd33580b4 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd8356efb cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf557751e is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x57d1acfb mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0xb73a0129 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x0629134b em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x0d7dad0b em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x0dafd31f em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x1055370c em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x3495e075 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7cee19da em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x9fa6f412 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa2c7b096 em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa8c54472 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xb72b1922 em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xc668506b em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xd4515836 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xeb5dc7f9 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xf9ba460f em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x5811a811 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x668d1b2c tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xd1b28e9d tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xe0ac5864 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 0x2f8eeb6a v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x37ba34d7 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x6aa06910 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 0xa686d704 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xaaafbe19 v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xc2615ade 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 0x221d2fbc v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x36e8756a v4l2_find_dv_timings_cap +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 0x53105839 v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x6976cfe0 v4l2_valid_dv_timings +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 0x7eaf8e7a v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xb0891da2 v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0x31c52b32 v4l2_int_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0x56666160 v4l2_int_ioctl_0 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0x84f75e40 v4l2_int_ioctl_1 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xa5228b24 v4l2_int_device_try_attach_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xdc741169 v4l2_int_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0c1313b9 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17eb0eee v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x18a486c4 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3549c151 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x50821642 v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x63e1ccd5 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7af881a7 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8281b365 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8adae8cb v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8c5f35df v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9311b22d v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9ca66441 v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc90c82c5 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe9ceb018 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf5b8d375 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0f2550de videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x117bcabc videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1bb2cef3 videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x207fa687 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x20ce1088 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2572962f videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x296a9f99 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3a803a11 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3ebbbea7 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x499e5a8e videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5b43c311 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x65265812 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6549f464 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6939d4c1 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6f970f63 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x749da665 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x753891a2 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8b041859 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9c687b82 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa72cd091 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa73d3fcb videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xaf90d0c4 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xdcae7e0d videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xed5d8780 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x3a3266ab videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xbe2c12f0 videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xed3938b2 videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x0de8bae9 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x0e1055fe videobuf_dma_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x11c34f54 videobuf_dma_init_kernel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x12a8e968 videobuf_dma_init_user +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x33907fd3 videobuf_dma_init_overlay +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x4283ac61 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 0x85b085d7 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xf0ff3089 videobuf_dma_map +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xf8382bc5 videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x564ff789 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x5e3afc99 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xf1ec7297 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x01afa7ab vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0c97532e vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x29df85c8 vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2e8d583e vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3920523d vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x397f7be4 vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3f62d786 vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4d1ba9c5 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x50f68b0f vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x596413fa vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5cfb4a39 vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x625a372c vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x66179956 vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6cfaacb2 vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x77085cf6 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7bc6f23f vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x805f738f vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8387057c vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9e42a225 vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa4e10459 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xae4f2dda vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xaf8c58dc vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb247d128 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb5067f51 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb80f05c9 vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc18fe26b vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc4cb3b93 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd23c761a vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd290a69f vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xdb0b1ae2 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe77a7781 vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe9c44281 vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xea56b0e3 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xebb45d11 vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x252289a2 vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x6c99adeb 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 0x207ce3da vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x37349d9b vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x4cfca53e vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x55c0034b vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xd275ba32 vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0x1ffb3d14 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0ce74d87 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0e80c745 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x18fe0762 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x254e449a v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x28006c19 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2dafb8e9 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3205fdf0 v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x328ff34b v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3db02af0 v4l2_compat_ioctl32 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x44211872 v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x490c8508 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5366ba82 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x56958adf v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x59594eea v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6136784c v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x69f609db v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x71b390b4 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x790674f3 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7a43dfa6 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x89af4635 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa4061229 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa94cd815 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe36557de v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf7f73b40 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x1cab2c4a i2o_pool_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x28b5d04d i2o_pool_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x4de5f4d9 i2o_dma_map_single +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x7fcf7a73 i2o_dma_map_sg +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x9e5d2d21 i2o_dma_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xc64cdde5 i2o_sg_tablesize +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xd12559c6 i2o_dma_realloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xd52d0977 i2o_dma_free +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xab2abeb7 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xbbd57438 pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xcd9a2ddf pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x118ff04b kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x302f9c02 kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x3b06ee95 kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x69eda246 kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x6d36a71a kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x720dd66a kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xa5e5091e kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xf97eaceb kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x56a4d1cd lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x5d3e9264 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x7c05348f lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x3e0eaec3 lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x4f84e1f4 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x744a80e6 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x997c693a lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xa0494b93 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xcc38bdd9 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xf5e3182a lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x278c485e mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x6736037e mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x7539f616 mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x95496ea0 mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xafaf01ef mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xf95cf500 mc13xxx_common_cleanup +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x27e862fc pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x3eb9e581 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x4462d104 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x4fa37acb pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x53d973c9 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x5f30bc66 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x919865cb pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xb086a8e5 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xb9e3a541 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xd7fecceb pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xf88d9e95 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xde26c602 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xfc2785c8 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x2029f9c7 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x4e252af9 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x5b66daea pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x8b3d2506 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xf04eba50 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 0x0d2c5ad4 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x0fa384c7 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x199a3b3a rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x3f738fae rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4b5b1175 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5333a21d rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x6652b150 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x6d7c7774 rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x6f7bcf0d rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8e577219 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9140b587 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9eb600bd rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa82a84b4 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb2748b0f rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc3db4230 rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xcf2b0a20 rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd363de0b rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xdb25d573 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe8214bbf rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf685387d rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf840e077 rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x00f54417 si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x01fe155c si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x02014655 si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1d71d9f1 si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1dafb4a0 si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2101113e si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x21387412 si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x23e509a5 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x38acd41c si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x397e5677 si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4491eedd si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4ffa3b71 si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x50bf62aa si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x55bd4f5a si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x62a2dc55 si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x670095a5 devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x69625c50 si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x69b56004 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6fc351fa si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x72774893 si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7d190148 si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x82f4ba5a si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x94627238 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa92dd8e1 si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb24f067e si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xba865522 si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc061cee0 si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xcc8958ae si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd2d4de01 si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe02ce912 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe6d2c3f5 si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xec3b965e si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf3f373e7 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xfffef7b5 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x6b2e4626 sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x9de0072f sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xa4a1fa05 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xd39f967f sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xf2c379c2 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x41c3a9f8 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x8e0bbd0c tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x8f5b7c39 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xc570a188 tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/mfd/twl4030-madc 0x9effbf1a twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x36aa54fa ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0x4b2acc82 bmp085_remove +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0x7412b6c5 bmp085_probe +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0x9b3e0747 bmp085_regmap_config +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0x9d4f9d51 bmp085_detect +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x05e06c8f cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x49d74645 cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x6cb87b26 cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x870c8a46 cb710_set_irq_handler +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 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x1aac6e95 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x31ad8114 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x88e0a742 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xa8ec491b enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xc84f9088 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xd32f3bbe enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xe8b07d2f enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x11ac7d04 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x20356093 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x312a56df lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x67ac0a27 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x6a82cfbf lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x81c97425 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x910aa103 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xe7aca58a lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x3b301364 st_unregister +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x5339f055 st_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x12660de5 sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x4d6e53d0 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x50fa2488 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x5dd88970 sdhci_disable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x5fa28e07 sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x94bd5408 sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xa77776fe sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xb16d58f0 sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xbfd2fd54 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xccb9c017 sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xe3e1277e sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x642aa0d4 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x735e67c6 sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x86c4d0bd sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x9cd09ef0 sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xe2916662 sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xf53b3c68 sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xfc77546e sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x0eae0cf4 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xcc990c8a cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xf3b02962 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x7171e170 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x82882ef6 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xfcda6526 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x7de3dd11 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x0334c3e5 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x8aa5868f cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xec0e6799 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0010d049 mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x01cfebe9 mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x072a0c90 register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x086bd387 register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0ae346e7 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x14a9b585 __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x31b8cc48 mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x31c663cd deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3243b57c mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x380ab200 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3b40c53b mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x484cfa7b mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x49e36054 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4cc9a9b0 mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x51eed7ab mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x53a7a377 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x58947718 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x58bb8056 get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x63671ffa mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x67db3de0 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x696fb152 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x73b1d10d get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x756da1a0 unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x89ea88f0 mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8fa78215 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9326608b mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa0cbf3ec mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa3802e67 mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xad378846 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbe02460e mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc8b49446 __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcbfc18b0 mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcdd57fa3 __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd7eb1d25 mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd9173166 put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd9b6318c mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xda872376 mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe1e412c5 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe91add5f mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xeb73411b mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xec01a084 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x3d10f49e register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x3e5e0c6a mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x8e65f51f del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x9c1e601a deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xa58aa0ad add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xb542c19c nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xe8a3e1c7 nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0xc852b0d2 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x174021a2 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xb29a8071 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x087fe0ec ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x188f3a41 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2288915d ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2e71bc0c 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 0x4b8bf0db ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5ed11801 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x61fc8c0f ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6db4979c ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x9f5f6281 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xae6fdc16 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xd75c4cca ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xd7821ff0 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf4c5f3f6 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 0x213aa372 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x4fdc9f38 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x5cad7337 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x8e9a0d66 c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xc1eed691 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xc72081f1 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x28e09716 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x5f0d8172 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x671694a8 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x6dc6fde6 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x82d02024 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x885795bc devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x99c94406 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xa013c139 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xa680be04 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xc14c8ff1 can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xc769bc29 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xca3cd31a open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xccf026f4 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd87679a9 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xe1a962a7 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x4ff5f735 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x5b662430 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xaf220be8 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xd7c074ad unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x0c7f0861 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x41cba76e register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xa3fb2164 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xb0e61a36 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x064b402e macb_get_hwaddr +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x2ae61c6c macb_set_rx_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x698aedb3 macb_get_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x6e57f408 macb_mii_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xaca085e8 macb_ioctl +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xb2742646 macb_ethtool_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xc3629fc6 macb_set_hwaddr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0273ca16 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x03a07424 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x09e5ecec mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x12e570a4 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1c28dc2c mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1db75183 mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1f3d4ac6 mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x20a0b090 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2540bee9 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x27c09d30 mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2949c168 mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2a40eddb mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2f184996 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x32824e10 mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x32b17219 mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x37e587c8 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3c87a0de mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3cec05c7 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3d1e15e6 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3db401a7 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3e428106 mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x43927492 mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x49ca19c3 mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4b840a34 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4ca75dd9 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x516127a7 mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5163a2ea mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x525caf1c __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5404b9d5 mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x54c0f9a3 __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5559dffd mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x56de7a11 mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x57c854d2 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x580df2cc mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x59162977 mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5937882a mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5ced80e6 mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5f4a52f5 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x61e789cf mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x64127519 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x658bbdfc mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6673e81b mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x68aaa706 mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6a8d1299 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6d486012 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6d817668 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6e9ad7fe mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x775a6e6e mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7ae72e9d mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7c7ec825 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7f02e449 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8053070a mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8750b1d6 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8c419a95 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8fd9eca7 mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x90a63b83 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x91c04ce6 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x92027a85 __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9208490e mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9317dd6e mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x93afcf8a mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9531ccb7 mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x97782222 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9eed3b1c mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa87ffe8f mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaa7093c7 mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaec4a931 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb5d44ff1 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb8559e94 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb983cb4c mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb994a590 mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbc6d687c mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc1f9e572 mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc3a3b4c6 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc49552f5 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc5759a6c mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc7eaf34e mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcb4206b3 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcbe3a17c mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcd3176ec mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd703e435 mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd7097eef mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd7491173 mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdb9a69f7 mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdd18838f mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdd6769a7 mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xddbd6800 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xde1eb27f mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe1da06a2 mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe59423c9 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe841b311 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe86f4158 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xea3ab904 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeadc7e78 mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xee5ff6e7 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xee9775c9 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeed9de01 mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf127c633 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf383fcdd mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf5cf6545 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf65316b2 mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf9e6ce09 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0a8d66a5 mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x26b118e4 mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4efc79b1 mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x52fd5982 mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5e4635e7 mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x605fd4ce mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x68ef4d3b mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6931b75d mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x755f3d56 mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa12de1b9 mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa6f97238 mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd615b126 mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd6c4ef56 mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe04911fc mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe7431c2c mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xeb11021e mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xedfb91db mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x46df3ba6 macvlan_start_xmit +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x73ed5094 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xace5df97 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xb0836218 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xb5f523cf macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvtap 0xf3ae408f macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x4b6b1169 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x506186d7 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xb3570afd usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xbc2a612f usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x658235a8 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x66769f95 cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xab085c40 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xb0264d36 cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xc73a979b cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xccc1ec3f cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xdf03cffc cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xe1028495 cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x1f86da7e rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x24404c30 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x28bd21e7 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x78e0d468 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x86da9905 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xac923122 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x012e61e1 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x028038c4 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x08ab3565 usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0a31b131 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0c8116a7 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x172000ec usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x24432475 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x316e0bc8 usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x38c7dbd3 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3e5aaad3 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x403e1d05 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x40ce2887 usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x48c3a55d usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6036185a usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x61c09fbb usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6be3572e usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x71d0640a usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x75ed2e04 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x817f631d usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x84c702a9 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x880e715d usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8d7d03c2 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8f157839 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x907c65e7 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa5763c4c usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb79a923e usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcad4b467 usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe32407e7 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe3377368 usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xecc290a2 usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf66c9f99 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xfdc7e97f usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x1673d158 vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x73f289aa vxlan_sock_add +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xcbb32e3c vxlan_src_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xe877b413 vxlan_sock_release +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xfa474f24 vxlan_xmit_skb +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x045cb3fb i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x1c06cf92 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x3fc9df40 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x4b56e2e5 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x5514a153 i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x63fbf381 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x7e920ffd i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8ec9a306 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x97d680cf i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa4c8cc64 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xbb2f808e i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc86c4db1 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc8f0ac8a i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc99d3125 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xdb75cd13 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xee176a23 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x1988151e cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x3484edc6 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x383bad93 cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x42ae9db7 cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x016663d3 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x084a363e il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x30aa3f8e _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x594dda8f il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x73630bec il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xc39fe4b2 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0322dd0e iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0aff1103 __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0d556623 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1291ef1b iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1ac36ff0 iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x33193588 iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x358f31be iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3d548dab iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x46c64b34 __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5786a9ae iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5d0a212e iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x66337fa3 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 0x7816e632 iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x79e2d7c2 iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8c5d5ab3 iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x959e7062 __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x9b12edfe iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa04a342f iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xaa6d08eb iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb405bd70 iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc4929f2c __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc4f68efc __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc67c31ed iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc829b1d1 iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd350b1b6 iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe68efc7d iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe9524503 iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xec0cb558 iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x12b7d9ad lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x238762ae lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x360f0f35 lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x497276d5 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5217074a __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x582aa9ca lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x62a2cdfb lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x9a727885 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xa07268f2 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xab3f6732 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xba8dc592 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xbb9a88db lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xbbf7b992 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd55e295a lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd973b5e2 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xdbdb0fab lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x163abbe5 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x2c194903 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x37513c72 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x5d5fe07e lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xaa5871b7 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xbcc6acab 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 0xd9bbfea4 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xfc19bf80 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0x14b5ffc9 if_usb_reset_device +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0x1e2cf68b if_usb_prog_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x10a1d2d7 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x36d1e47f mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x434a6834 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x541af387 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x60c7851a mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x89f01053 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x8f916c2b mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa02ab6f3 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa7dd6a3f mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xaacc3a42 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb4d13490 mwifiex_deauthenticate +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xbe2ece73 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xcd874243 mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd345c2f5 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x0a060cac p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x110c2e0c p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x16bfdcb4 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x17745bae p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x414f5fa9 p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x7f67ba49 p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x91c77b50 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x9272d67c p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x94135868 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0067750c rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x08e2206f rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x13c808d8 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1d7dc851 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2080d8a2 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x21aac1ad rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2483734f rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x24f40c70 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x328aaf29 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3bf58f95 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3ea64078 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x41a6ab62 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x41ea7526 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x69ff225b rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6fd43d68 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7897a409 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7e40c837 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x87026e5c rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8e177a47 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8e523a95 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x930a80fa rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x96cc2155 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9e3433f0 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa3fa39db rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa46c7418 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xaa3026ff rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb7f597e3 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xbb2b4d7b rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xbbf730b0 rt2800_get_tkip_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc7c8324b rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd1318cbf rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd22d26f8 rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdc3babb9 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdcd43785 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe6360cec rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe9f913d1 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf2f2318f rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf30cdf39 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x20aedab3 rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x21ba2984 rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x3f53c8fd rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x52b7dd35 rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x58c71ff5 rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x8ef32470 rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x94af2e60 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x99815dab rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x9cfb5a63 rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xa1745fbd rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc5b4806e rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xcb0f1dbe rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xf266b80d rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0532ef1d rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x076274cd rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x091bad71 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1a3a7067 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1d3b84b2 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2f7cc41a rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x30358ce1 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3d152aff rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x416c85c9 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x543bf14c rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6ea4a07d rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6f0d5928 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7bc47dd6 rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7f68abc8 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x85960694 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8720db6b rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9084fd4a rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x93785eb9 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x98b15277 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9e08da11 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa32cdba0 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xacbb998f rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb1e1bff0 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb3405ab3 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb59434f9 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb63a0576 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb93afdd1 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbb7115af rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbde6ce1f rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc0d302ae rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc6724d8a rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc72576ba rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc79d9708 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xca3f07fa rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd1c2c746 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd64dbbdf rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdb4b02ff rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe1c7094a rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe3ac7d1e rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe4926af1 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xec70095b rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xef3ac15d rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf04f7fee rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf4d074af rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfa0fb9bb rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xff64d5a1 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x0d539ee4 rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x51f71674 rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x707c9fc6 rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xa538260d rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xaccaa79b rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x1a08ad4d rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x4d901d58 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x97cef119 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xbd0fe84f rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x0d53f8d3 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x1e644abf rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x2161a50f rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x26b42290 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x340ebb58 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x39841a67 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x438c32ea rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x464e9924 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x5a4350ce rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x5ce964e4 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x6bddc8c4 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x807b8549 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8532d3c1 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xaa0d3064 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xe3b58efb rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xebc6df06 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x02e498eb dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x57ab04b1 dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa378c019 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe1cc5812 dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x08fa8033 rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x0f39dbae rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x16e989b3 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x2ed28fef rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x383deab6 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x3f341b9b rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x51c7afcd rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x53c1c20c rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x63b12626 rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x648a289e rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x680684e1 rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6fdf38b3 rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6fee3a6c rtl8723_phy_set_sw_chnl_cmdarray +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x8810624b rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x88480546 rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x89b3da72 rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x93c00476 rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x976fba36 rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa24c186f rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xabf4a9ba rtl8723_fw_page_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 0xbe30eb40 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xc021a5fb rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xc2f38d74 rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xcc48f91b rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xcdedaead rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xe9f0f559 rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xebcf0cdd rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xedec8466 rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x0d0b6636 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x2204c3f4 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x241dedc1 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x334dc8d9 rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x34fec96b read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x3f9e29a7 rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x4a0a301a rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x583b6cbb rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x5927f346 rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x5ccedc42 rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x661a8d8e rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x6b4de810 rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x819f0090 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x9d667570 rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xac6aa8d8 rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xbe69710d rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xdbce433c rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xebd2e148 rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xeebada0d rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xfd2ea626 rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x7bfeceeb wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xaecbfcce wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xbb15886c wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x05506d2f wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x07347940 wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x09ac0581 wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0e31cb01 wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0fc39eb3 wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x14d37ef0 wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1ca74abc wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1f4d98a3 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2024c572 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x237899d0 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x25edb3de wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2740d8af wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x27885f64 wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x383e8a52 wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3ab3df3c wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3e1a37b8 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x446ec666 wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x45855bde wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x56b976a3 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x579679f4 wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5aede728 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x64d771b2 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6931d5e3 wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8254adca wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x83a23f83 wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x83bfc4e1 wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x849d5900 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x86434013 wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x948d37e9 wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa555e7f3 wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa64b6b68 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa9640593 wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa97c65af wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb10f019b wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb76e6688 wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb805a0fa wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc8ef61ba wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xcdeac3d1 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd37cfeda wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf57def29 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf95267c1 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfb0ab1ec wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x1af3bf8c of_phy_simple_xlate +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x1b44637c phy_power_off +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x34da6ef5 devm_phy_create +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x42068304 phy_power_on +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x45481a96 devm_phy_get +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x4e9f6406 phy_create +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x5fb9a367 phy_exit +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x650c6461 devm_phy_put +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x69876a63 of_phy_provider_unregister +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x6c879e1f __of_phy_provider_register +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x74b39a9d phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x7a769c75 phy_pm_runtime_get +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x88b8c23d phy_get +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x90facc35 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xce58908d phy_pm_runtime_put +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xdd11c3f7 devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xe06473d9 phy_pm_runtime_allow +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xe74f8fb9 phy_init +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xef8c31af phy_destroy +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xf0daf385 phy_put +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xf3b98d4f devm_phy_destroy +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xf45b3eef phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xfa856208 __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x1a5efc4a pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x94b208df pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x9c9e0821 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x14eea137 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x50fcf90e mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xb8efa43e mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xe0a4c9f3 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xe8c02fc4 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x2adb1b0a wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x39365b7a wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x4244014f wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xa7d4fd7a wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xaea2921e wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xd119fdf8 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0xee9105b3 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x01b3596e cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0452aff0 cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x07313dec cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0c36135d cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x16d33fce cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x20c8c954 cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x22d1fe5c cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2da8d99c cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2e9d9836 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3509ee16 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3d52ada8 cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4752d905 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4b6b77fc cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4ceef707 cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x50ad2175 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x625cc62b cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x63534546 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x63b46d57 cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x682fcf75 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x71807043 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7b4c91fb cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7f0f5d96 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x831d51f0 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x86779cb6 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c0d1534 cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8ce1466d cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x91df9d70 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x94b4a097 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x96692117 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9fef7082 cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa16650ce cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa440eb0e cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xaba0eeae cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb386e392 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb6554d19 cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbe79d535 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc963f95b cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd4607fb7 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd9342b85 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdf191c83 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xebad31c7 cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf0bf9442 cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfbf4e6e0 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfdff8c80 cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x0698cf77 scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x593a36c2 scsi_dh_handler_exist +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x66371261 scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x78e51bfe scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x863a5b37 scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xc675cd87 scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xe16fb63f scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xfc478bc7 scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x1c9e82d4 fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x2874457b fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x4046b61d __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x5ae47156 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x63a5df37 fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x723c7d2e fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x83aec1d3 fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x8cbe18c3 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x93315625 fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9e5ca17a fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa7b88bc8 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xafc7b283 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xafe5d38c fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xc633d382 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xca66f2f8 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xdc2802a0 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x120761db iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x6ce0e193 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xa514d588 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xdbba7f2d iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xe1e21ed1 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xf0ff0202 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x086980e3 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0ae92619 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0bc6e32e iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x11bc97f6 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x144fa599 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x18c57803 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1ee0a079 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x38361c03 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bcf6a0c __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3e58ca7e iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x413c1b7d iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x492bc5b7 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4fed9a3b iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x56927aa1 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x56ba784f iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5c24a7ce iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6222aad8 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x66090ff8 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x69a40fdb iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x706e4507 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7144a3d3 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x73ef5df8 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7570462a iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x762660e0 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x83bce885 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x89203045 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8ccbcf56 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x91147dc3 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x94ab115e iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x973ce8b8 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x979faa91 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa12dcea3 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa3a680f3 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb29fe31d iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc31c1d8a iscsi_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc50658b7 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcc8b2dd7 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xccd2d11a iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd666f230 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe1a65147 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe8699213 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf2ac770a iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf91e345f iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfa678672 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x17426c96 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x345ff09a iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x3e188c56 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x487d624b iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x57959728 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6081be0b iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6fa9b358 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8fb0f210 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x91674492 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9a3138a6 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa4a236d1 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xac9817fc iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc0d093db iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc9ef427b iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd386def9 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xdc642ef2 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xfab035a9 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x000990f3 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1a5e52ad sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x30499c2e sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x30785d24 sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3ea142bd sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5c4e1f58 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x70a1bb42 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x80890a13 sas_change_queue_type +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8802e1a9 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x95d709bb sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x962c774d sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa3e080b2 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb54b96ca sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb9b82bab sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbfe24068 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc4e6615f sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd6a89031 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd6b19ec6 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xdb797796 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe1b212f6 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe2081ba4 sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe3e49246 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf16c3a6e sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf962b4d6 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xff6a29ae sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x72cd581f srp_target_free +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x783540e5 srp_transfer_data +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x7ec6c07f srp_cmd_queue +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x8f875f24 srp_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xb13cd684 srp_iu_get +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xb444230a srp_iu_put +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x016976bf scsi_tgt_it_nexus_create +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x05fbbcc3 scsi_tgt_free_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x54487025 scsi_tgt_queue_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x5682d0f8 scsi_tgt_it_nexus_destroy +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x60899412 scsi_host_put_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x6db92fc0 scsi_tgt_cmd_to_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xc05078bd scsi_host_get_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xcd5e7758 scsi_tgt_tsk_mgmt_request +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xd7ea61d9 scsi_tgt_alloc_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x008bc45e iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x01a499d9 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x07172c2f iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x092204f6 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1039095a iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x11d208ff iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2003cb97 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x21ba1e8d iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x264b14cc iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x29fa317b iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2c9f6593 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x30c8f891 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x34df26bd iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3bf0cc84 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3d53375f iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x46fdd43e iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4701d044 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x50a6443e iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5380fe51 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5b581c8d iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7ca38972 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7e78ebd7 iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7f9dd557 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x80537a8e iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x80d3f6b0 iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x821bbaad iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa2511d80 iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb2590dc0 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xba24c756 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbbe83dca iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc006f5d0 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc66f7664 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc78e06be iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc96d561a iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd3e8643d iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xda52326a iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdd3781bf iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe4211de0 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xeb13c3e2 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf53b517f iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x5b201f69 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xc09754a2 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xc54be25a sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xd0dc5ce8 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_srp 0x0979d788 srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x63b37a1d srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x669eebb5 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x980ef765 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xb1da0007 srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x5ac86226 ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x6f9ed8e5 ufshcd_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x8aaef003 ufshcd_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x8ba5bf3b ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xd4967818 ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xfecb6b94 ufshcd_init +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x2a84c614 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x4dec8be5 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x8987324b spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x9f73a9c4 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xd4dfe276 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x76330fae dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x9e83c31e dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xe39a5ee1 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xee679211 dw_spi_xfer_done +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xfad4bd60 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x7a02b75a ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x05405927 comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x06168862 comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0a8987f4 comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0c4baa80 comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0ddfb4b5 comedi_pcmcia_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0e411947 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1344e2bc comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1c373041 comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1e06b91b comedi_pci_driver_unregister +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 0x2f55b5e5 comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f8e9ac6 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x376bd133 comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3c659aee comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3c9d61ee comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3cca9259 comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x44b63c28 comedi_error +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x48d620a9 comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4d85589e comedi_buf_get +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4e4c1b56 comedi_dev_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5720123e comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6b504209 comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6ba2a222 comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x756b44d8 comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x757e064c comedi_buf_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x76360ee4 comedi_pcmcia_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x890a4a83 comedi_buf_memcpy_to +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9a302baa comedi_pcmcia_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9d7c0c3a comedi_to_pcmcia_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9e90d328 comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa2918b31 comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa7fce2d1 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xacdb536b comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xae62c8fe comedi_pcmcia_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb344f951 comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb679cebc range_0_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb9fa099a comedi_pcmcia_driver_unregister +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 0xbf4ff758 comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc159ab70 comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc2fe3e81 comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc5f43aab comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc6615de1 comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc6c2c8a1 comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd1c14ccf comedi_pcmcia_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd3752d18 comedi_buf_memcpy_from +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd94f5825 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xda93ca8d comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe0dda9c9 comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xec150b1f comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf3c7b93f __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/8255 0x626824fe subdev_8255_init_irq +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/8255 0xd9f9d081 subdev_8255_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/8255 0xdb6eb333 subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x6a0ee720 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 0x53956be7 amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x604663fa amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0xb8700740 amplc_dio200_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_fc 0x5895a503 cfc_read_array_from_buffer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_fc 0x6d00db39 cfc_write_array_to_buffer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_fc 0x9ed85702 cfc_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0xcede42a4 das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x0ffd5a5a mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x131d0930 mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x162f9063 mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x18594d28 mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x19b2508f mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x28c10fd5 mite_unsetup +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x2da7ffaa mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x395e203b mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x44935fbf mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x59dfb631 mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x6eff2d5b mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x7b43113b mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x8620e06a mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x99483fac mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xa3a601ff mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xba6f76ad mite_setup +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xc02d4e24 mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xce649c07 mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xdadab59f mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe152da56 mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xf966b7da mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xfa5a44f7 mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc 0x0e052e9d labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x13a58e7b ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x21afb847 ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x46ab4e8b ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x57ad1d4c ni_tio_rinsn +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x86f0c831 ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xb0807a5e ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xb62f1e8e ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xc51b3ed2 ni_tio_winsn +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x06255672 ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x20140410 ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x303c66e0 ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x739a7de2 ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xa4c896d5 ni_tio_acknowledge_and_confirm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xc09e3284 ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x37e0e208 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x413a1307 comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x499cb87e comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x91ece2f6 comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xce1cd2b4 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xd22217e2 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xd523d448 comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0x2206b003 dwc2_handle_common_intr +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0x26e0685b dwc2_hcd_init +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0x399fb84e dwc2_hcd_remove +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0xb05a818c dwc2_set_all_params +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x1a1b5249 oslec_flush +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x2feda75b oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x3227a28e oslec_snapshot +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x7dc9dddd oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xb2c66001 oslec_create +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xc8b5a524 oslec_free +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xd370f679 oslec_update +EXPORT_SYMBOL_GPL drivers/staging/rts5139/rts5139 0xbd5a0e51 rts5139_usb_ids +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 0x1e74001d spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x2961c2b7 spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x2e1a1b60 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x319301c7 synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x381d82fe 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 0x8a77fb38 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x92534038 spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb35aaab9 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb48956f8 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc254b03f spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc57bfd01 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc766ae09 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd1b551a2 spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xfa364f14 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x1aec2f68 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x31b89c4e usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x44cb900c usbip_event_happened +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x48f276c2 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x751e6fe9 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x7974d6c7 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x84f3bb7b usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x85de0fbc usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x8b43d89c usbip_start_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x9cdcfefb sockfd_to_socket +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xb8d4e7c7 usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xd15e7e04 usbip_recv +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xf28d6c35 usbip_event_add +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0x249f734c pciserial_init_ports +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL drivers/uio/uio 0x25ac5e1c __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0x59ad69c6 uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0xefb72a26 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x83186555 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xdcee6d34 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x8e9a5e20 ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xe9c112a3 ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x170e9bea imx_usbmisc_init +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x74750d38 imx_usbmisc_init_post +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x05ec1bf9 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0a4fefd0 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0e0cc39d usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1a18b35d usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x259ca5f7 usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3089f427 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3d265838 usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3e792f5b usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x43719c99 usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4d816697 usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5561b21a usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x567c8396 usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x660b026f usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6ac6c1bd usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x76dcf770 usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7ca3932a usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7caa0bc0 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9be1fad8 usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9ced9a81 usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa4dcec9e usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xaf06190c usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbe3dcfc1 usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc6bcc559 usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd963b90b usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xec31bba0 usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf1d3fe31 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf6b2785f usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0x2bfcfb3d gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0x50984799 gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0x8e27d6de gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0xf1981607 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x01c164cb usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x07fe1bac usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x0ca0db46 usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x770b2176 udc_attach_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xa7793348 usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xd04a9536 usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xe0f29e7a usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xe4c7399d usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xf053b12f usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x0a5230df fsg_common_set_nluns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x141fce2a fsg_common_remove_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x1ccb58f7 fsg_common_set_num_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x2d10b6a7 fsg_common_create_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x51707c29 fsg_common_run_thread +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x6acb4179 fsg_common_set_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x7e26d4a5 fsg_common_set_sysfs +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x7fd88bf0 fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x99023bfc fsg_common_put +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x9a0221c7 fsg_common_free_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x9dc025a5 fsg_common_free_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xa46e6443 fsg_common_get +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xd3ae3b65 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xd468f882 fsg_common_set_ops +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xe4d1591e fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xe57a6856 fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x01f0caeb ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x79f795a0 ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x14509791 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x27ca09ac ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x2a0d9da0 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x2d3b7f01 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x49fb51c5 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x4fa11030 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x98e22945 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xb7746146 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xc86ee61f usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xaea39e50 musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/tusb6010 0xd7049da1 tusb_get_revision +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0x0d77c980 usb_gen_phy_init +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0x9665ce37 usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0xab685030 usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0x86a5e51e isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x22d02e0d samsung_usbphy_cfg_sel +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x2f7a2993 samsung_usbphy_rate_to_clksel_64xx +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x4505e764 samsung_usbphy_rate_to_clksel_4x12 +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x60a71a05 samsung_usbphy_set_type +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x65a4c23d samsung_usbphy_set_isolation_4210 +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0xa7c6afa0 samsung_usbphy_get_refclk_freq +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0xce42e014 samsung_usbphy_parse_dt +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x3d4e6e39 usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0baa3ebc usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0fb71248 usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x11e972e3 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x28713c7e usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2b155489 usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3af848de usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x42852ac6 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x444b0347 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x454e68f6 usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x52748ba3 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x670ef24c usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6a7b28c0 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8b416c31 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa7201e33 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb71253f8 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc74ffd3b usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xce431cdd usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd025560b usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd8fc60a3 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf303afa6 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf3c5afa5 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0138c825 usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0a4912a0 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1a96cf29 usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3220acef usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x38ef260d usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3916d2cc usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3c47e3ed usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x524b2bcc fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5d4e11ea usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5de140dd usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x73ba8f97 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x81358230 usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa2c1da64 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa62dea3c usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb2bc4ea8 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd63407a0 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe26e6784 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe3ec3480 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xec92ee84 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xeff6fa6e usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf1f0c4e3 usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xfdb1dbe8 usb_stor_bulk_transfer_sg +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 0x68399058 wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x80556387 __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xb595d1dc wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xc0330de0 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xeaecae68 wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf11012e1 rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x12d12367 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x14580d0d wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x1a444811 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x2a279760 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x2bc435d5 wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x37b3c407 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x3b16516d wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x597ee01a wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x5cda2101 __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x92dcd753 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa183fbad wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb06f1fa8 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc5998f40 wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf495427a 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 0x0b3add4f i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x18c8c69e i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x3a20ef03 i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x37d59845 __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x3938bd2e umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x3d9f1c9d umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x57626137 umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x67934df3 umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x7eed41f5 umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x822deb98 umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x91a2b613 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x027e1f03 uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x034298c1 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0685fabe uwb_rc_reset_all +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 0x15f1de0e uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x16472eed uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x181dcca8 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1a63de9a uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x204179fe uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2591d9bf uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x32fecb6b uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x33e50829 uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x348779ba uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x364879bc uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3a0344cb uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x49b28c1c __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4b0e9589 uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4db0e457 uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x612a0e0f uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x63b4e685 uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x67bc1642 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6b833277 uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x746876bb uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x75754884 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7b052de2 uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7f4b5482 uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x816b9e92 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8cee56c2 uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x91d058e2 uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x979706d6 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa3db281e uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xac97316b uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbb91c303 uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbc0310ff uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc17e23e4 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd37be146 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd7cdad93 uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe4f151f4 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf2810815 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfaf92ebf uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/whci 0xe041deca whci_wait_for +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0373a745 vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0a12c888 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0ce9255c vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x12bd7460 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1cf11bc9 vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x25356eac vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x395b0d93 vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3fbfd7e4 vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x44c08fb8 vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4f1019c7 vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4fcb239c vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x53d5ca27 vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5b5f40b0 vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5ca34a96 vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5f147207 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6717d65d vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x738df808 vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7abdb83e vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x83bd34c1 vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9e649629 vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xafaff53f vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb0f81e37 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc0a3d1c1 vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc3adda29 vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc61014fa vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe5f4ef4a vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xea9f8137 vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xeb2607f1 vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf2190bee vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xfbbb18f7 vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x11773fa5 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x480b9304 auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x5b0ba3d7 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x7cf0b493 auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x7e793d5f auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x91c5f58d auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x94bb0578 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xc86830c0 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xe6f1836d auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xf4590245 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x2348320f ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x5d86192c ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xb42ab6b5 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xb652eaae ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xc9cecf75 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0x346c8b8c sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0x9d17951c sis_free_new +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x2f735b4e virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x6ce63f10 register_virtio_device +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0xa4cab9d2 unregister_virtio_driver +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0xaeda8798 unregister_virtio_device +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0xe5663e83 register_virtio_driver +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x00e5e7bb virtqueue_add_sgs +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x06a7802c virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x0911375a virtqueue_notify +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x0b54b843 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x1f4240a8 virtqueue_disable_cb +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x403cadd3 virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x5fa0dcc8 virtqueue_get_buf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x6884bf6d virtqueue_is_broken +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x6b48b7e1 vring_transport_features +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x7f1570f6 virtqueue_poll +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x8dba4da7 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x978a2eaa vring_del_virtqueue +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x9fddc9d9 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xade5c79b vring_new_virtqueue +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xbf054202 virtqueue_enable_cb +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xd31fa816 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xd8e30640 virtqueue_add_inbuf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xe3772bcd virtqueue_kick +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL drivers/w1/wire 0x4a92d918 w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x50dc0b84 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x5f31aa4a w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0x6abeabf8 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x6c9f2d86 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x71feebd9 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7570fc56 w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x9d87795f w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xb65481a1 w1_reset_bus +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x6e8b11eb dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x7d046a76 dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xb3d8ede1 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x0f4514d4 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x1893aebe nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x1f064ad6 locks_start_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x2253729d locks_in_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x2fa23543 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x380ed2ff nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x68a2eda7 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xa7a491d6 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xb7247741 lockd_down +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x02084f7b nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x030ab289 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0444b2d4 nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x05c60bbe nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x06bf2f2a nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0931f7f2 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0b1a0f9e nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0bfa757c nfs_generic_pagein +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0cedf814 nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0e368853 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1129dcb2 nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x11c5baef nfs_setlease +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x131ce112 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x17086aac unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x19b80bd5 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1a206235 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1e4bb5e6 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1fc2028d nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x22e93a95 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x23146eab nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x23aa94f8 nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x29d9f695 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2cef4d75 nfs_pageio_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2e2d8ea8 nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x33c4b62c nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x360cee93 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x361e2d49 nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x36831940 nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3983edef nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3a0c3c39 nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3a4a5b0c nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3b13b06e nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3bf98b78 nfs_generic_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3e331ae3 nfs_readdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3e434662 nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40343a04 nfs_writedata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4121cb89 nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x43b1f8de nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x44a13f64 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x47981813 nfs_writehdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4a55c317 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4ba22cac nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4f76d317 nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5009bfa1 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5142b3f0 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x514af745 nfs_initiate_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x55b9d9e7 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x58a85efc nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5eb33329 nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x60b61346 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6539553c nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x684f7125 nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6b398a11 nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6cffd9c1 nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6d585c8b nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6e2505cb nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6fb8c316 nfs_readhdr_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7256ba54 nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x737870ac nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7510f00e nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x76bcc8c6 nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x778dec6b nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x79525e62 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7a7a9899 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7ac10896 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c9722ba nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7ddf79a4 nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7fc0e1bb nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7fd0f85a nfs_file_splice_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x833eadba nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x84a338cc nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x856ed9ba nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x87b31bbc nfs_writehdr_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x88cbfed9 nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x89bc5a64 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8a22245f nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8bd16060 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8c0dedc6 nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8d49f321 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8e3da055 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8e761da1 nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8f7caa63 nfs_readhdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90c09a4d nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x928b273c nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x97f15c4e nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9876d798 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9a417fa0 nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9b2d4a17 nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9db43705 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa1f01c11 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa4e34ec4 nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa50bf9da nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa642b675 nfs_setattr_update_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 0xaa2c3deb nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xad53d86a get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xae5c278b nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb03634cf nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb0b43a95 nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb43e658a nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbb6d306c nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbc9d84a6 nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc0f68e6f nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc1e2ca88 nfs_initiate_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc28949db nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc3b0c22c nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc59578c0 nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc6d79bb9 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcb421f03 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcc618e3f nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcef0ab25 nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcf718c19 nfs_put_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd0f0119e nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd1592025 nfs_pageio_add_request +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd23c56e3 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd3424788 nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd5eea2c3 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd6b8817f nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd6f6f56e nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd79124a1 nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe0717fa8 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe158a64b nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe694e825 nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe742f1d3 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe79de9fc nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe809b0a0 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf1ebb156 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf4f6157f nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb61f0e0 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7ee006 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfde61f57 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x06c36816 __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x11df7dab nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x14eef0f8 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1f723d60 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x24b6da3a nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x24c2d984 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x342dabf5 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3965f7c5 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3d0c736f pnfs_readhdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3dfe6fe3 __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3ea87596 nfs4_proc_getdevicelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x460a9068 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x471de0a9 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4830b7ca pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4d8f3f45 nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x59dbb024 pnfs_writehdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x60fb34a0 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6d1fee09 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6ee286a3 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6fb012d5 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6fe8f8a4 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x757a52ff nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x76981f20 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x94e9c9b8 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x96bfff38 nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9913b378 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa199ad13 nfs4_insert_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa7cba49d nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb0d47250 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb27b2967 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbec28ee9 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc5090e77 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xce399f53 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd325ad09 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdbb9ec43 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe093240b nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe204e227 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe2845ca8 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe47fa83a pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xee735601 nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf4eb8ca8 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf7a93b57 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x22e14f04 nfsacl_encode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x26511287 nfsacl_decode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00b85285 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x0c762b53 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x172314f2 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 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 0x57ba2aa3 o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x5b52f651 o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x81a17396 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x96cf6f65 o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa82a8645 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 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 0xc448004d o2nm_node_put +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 0x0ee2cd1f dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x159b02ab dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x18129f58 dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x646878ed dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x69f9d058 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x8e407d0f dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x025e2d69 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0562c415 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x16b2e575 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x5469ce31 ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x7083dbd5 ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x82303c8e ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x89502fe7 ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xb0887b2e ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xb4bd060c ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xdc823ea4 ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xdd8583dc ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe2bd47db ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe417d940 ocfs2_dlm_lvb +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 0x559fe0ba notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xa7b1d620 notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x1803a6ed raid6_2data_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xe4b051cf raid6_datap_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xfdfcb8cb 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/802/garp 0x1727db94 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x1bac81ab garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0x4ea436bb garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0xa8661864 garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0xde1c4663 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0xf95d8d4a garp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x1108fc76 mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0x2686cf6d mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0x3ef34c49 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x6d37c3d7 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x89fcb50b mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x982c87e3 mrp_request_join +EXPORT_SYMBOL_GPL net/802/stp 0x968caf8f stp_proto_unregister +EXPORT_SYMBOL_GPL net/802/stp 0xefc4228e stp_proto_register +EXPORT_SYMBOL_GPL net/9p/9pnet 0x8fe6699b p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/9p/9pnet 0xde2d721d 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 0xf9beea30 ax25_register_pid +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x3e0fb482 bt_debugfs +EXPORT_SYMBOL_GPL net/dccp/dccp 0x04ba4df3 compat_dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x192e11aa dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1a6da3fb dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1f96d2d8 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x217db7ca dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x33e4ed0e dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x44832eb8 dccp_feat_nn_get +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 0x4f3b9a62 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5e3095e8 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5f6a0ff8 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x656a0105 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x68f6d1b3 dccp_insert_option_elapsed_time +EXPORT_SYMBOL_GPL net/dccp/dccp 0x788e682b dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x81643575 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x84eca32a dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x88b752a6 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x89d67c29 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x96a9e872 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x97a5a9c7 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9cb3013a inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa7a3c5eb dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb00d1a3b dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb16bb7e5 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb1b1ffd8 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb240291f dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc22224b7 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc40104ba dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xcaabdb39 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xcf60a194 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd09cebfc compat_dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd60369e2 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd62c00a2 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe104ae50 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe458c64c dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe5d8b3b1 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0xeed17b9a dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf3017e21 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfcd3096b dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x51660bd9 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x5c173a3a dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x71240f18 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x863d0bc0 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xa572b5b9 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xfdbb17d4 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x52dbb5c0 unregister_switch_driver +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x7a9f89e9 register_switch_driver +EXPORT_SYMBOL_GPL net/ipv4/gre 0x00231a63 gre_cisco_register +EXPORT_SYMBOL_GPL net/ipv4/gre 0x473acc3e gre_cisco_unregister +EXPORT_SYMBOL_GPL net/ipv4/gre 0x4f436403 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x8b2a0855 gre_build_header +EXPORT_SYMBOL_GPL net/ipv4/gre 0xbe07a669 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x440f4b0c inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x5553ba23 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x6f93b204 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x990c763b inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xd2519f00 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xfe0fe3c8 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x00b458e8 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x01e700f1 ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x112ed590 ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x15c38f67 ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x1ad1df95 ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x208fa16b ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x39834eb7 ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x5318b5c9 ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x5b37b372 ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x81aee956 ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x85d97597 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xbc7c475e ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xd394cc82 ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf603ec7b ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0xd6660be2 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0xbaf81624 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0x6d40a921 need_ipv4_conntrack +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x923ea541 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x10ac785b tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x15a496d7 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x17a40694 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xd312d193 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xdd46f7e4 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/xfrm4_mode_tunnel 0x69ab0cc5 xfrm4_mode_tunnel_input_deregister +EXPORT_SYMBOL_GPL net/ipv4/xfrm4_mode_tunnel 0xa4086548 xfrm4_mode_tunnel_input_register +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x15199f3e ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x23ae3fc4 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x33da56bb ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x6f080309 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xc535c0ad ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x5ef8a483 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 0xdaeefd9b nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/xfrm6_mode_tunnel 0xa2f6b4fd xfrm6_mode_tunnel_input_deregister +EXPORT_SYMBOL_GPL net/ipv6/xfrm6_mode_tunnel 0xac58046c xfrm6_mode_tunnel_input_register +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x06c04a70 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x1119706c l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x20678402 l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x252aa952 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x28a8a51a l2tp_tunnel_sock_put +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x2d55c497 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3a5d6151 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3fa20e6b l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x63ab68cd l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x78c2d699 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x7f47b8a6 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x85fb3925 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x89cf9640 l2tp_tunnel_sock_lookup +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x90c28ea4 __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x950527c5 l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xcb836f6f l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf01a5e54 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0xdcefccbd l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x03073667 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x283e1e9f ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x31a9e4d3 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x31ac2582 ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3663a36d ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x37eaa5a0 ieee80211_iterate_active_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x4bf42798 ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5d38f601 ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x6dfee25d ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x84d20bfd ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb667d3d1 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc878995d ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xda6c4515 ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xe432eac7 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xeaee7118 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x55b5b417 ip_set_nfnl_get +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x5913a4b8 ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6eb9de65 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x73727b20 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 0x814b14f8 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 0x88b96161 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9044bd4d ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x93b00f49 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x94f3aa57 ip_set_get_byname +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 0xa9ac669f ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xbc46cf4f ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc8641169 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xef13ebbe ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf01e2896 ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf0f85b53 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf3b4d4ae ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xfbe221eb ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xfc77cebb ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x14ccbf2c register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x7d672114 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x836a994c ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x98385ff1 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x01f84db5 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x03fd80e4 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0a87df5c nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0a8c58c7 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x100b6ef5 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x107d2a8b nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x15560243 nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1fb5091d nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x223d0c77 nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x24ea4ac5 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2715cfa3 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x27a7668b nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2da67b22 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2de40863 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x32ec1550 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x38761128 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3cf2117e nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x466ca0fb nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4b0bb9ea nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x519faff5 nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x52c96b8c seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x58f005b3 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5a53ef33 nf_ct_l3proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5bcbc89b nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62cbbad8 nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6301c49a nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6304d067 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x664e98ea nf_conntrack_tmpl_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x67d3ce8c nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6921c81d __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6a342801 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6d173220 nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6ff05a91 __nf_conntrack_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6fff8279 nf_conntrack_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x704dea33 nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x73037866 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 0x7d6150b3 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x80d4d4d4 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8374fb7b nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x87f9e6d7 nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8884f8c6 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8a0d4880 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8c079cc3 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8d22df32 nf_ct_expect_init +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 0x91b0dd4c nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9f4528d1 nf_conntrack_flush_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa00c5291 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa35dc90d nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa5ed8502 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa7a1ea9c nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad02ea3a nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xadb2fdd6 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb1c9114c nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb701dec4 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbe8a0f2f nf_ct_l4proto_find_get +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 0xc48e0b7b nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc8bf0ca2 nf_nat_seq_adjust_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc9d56385 nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd3999405 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd47e5578 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd50cc265 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd69eb640 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd6f15d2c nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd7833fb3 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd7e15685 nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd8007fbf nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd963bbbe nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd9c01f27 nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe1371663 nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe64837fa nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe9b63434 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xea47c36d nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeb73c3b7 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xed5b0a85 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xee705da9 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf16c0264 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf4a7dbe2 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfaef35d2 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfb181963 nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfbbac904 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x833e7db6 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0xefd344ad nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x1d208e73 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x0474df59 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x3aa76143 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x3c17d174 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x80360894 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x9eb75e7a set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xa54c7573 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xac3065aa set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xbb48f6cb nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xd2b6259e nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xd6380510 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0xd8033adb nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x3230ae11 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x89e43205 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x9c93b694 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xfd17be83 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x2479a240 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x6149550c nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x2631f890 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x3a57310c nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x7079d142 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x9ba3ccfb ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xe4584116 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xecb9e809 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xf8791e0d ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x833e2dd6 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0xd289210e nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0d9bae4b nf_nat_l4proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x10a17ba0 nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x131f636c nf_nat_l4proto_in_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x3d383fc8 __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x68da0b15 nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x6b2b20c9 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xa57ae3e8 nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xb7d0a51a nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xb9f2d050 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xe7af387e nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x11a006b5 synproxy_check_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x3acbb20b synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x50b28fde synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x5f339439 synproxy_build_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x90298227 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb42e336a synproxy_options_size +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xef7db50c synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0fda3c99 nft_validate_output_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1279fd2d nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x205dfa44 nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3d49dab7 nft_validate_input_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5559a9b7 nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5b08c44c nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x77d61513 nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa3a9c47d nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xaf414505 nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb69c1870 nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcbd6d69c nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xce2d846b nft_validate_data_load +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe356e4e3 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf49fd189 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xffc9582f nft_do_chain_pktinfo +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x0d3db0a8 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x17137f05 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x270a0e22 nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x7132524f nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xa1d547ea nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xbf734578 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xd9bf866d nfnetlink_send +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 0x7e1a5bad nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x291f1d58 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x01d4fd38 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x161d1417 xt_compat_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x18dd6462 xt_compat_target_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x24c8e482 xt_copy_counters_from_user +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 0x6208356f xt_compat_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x691a6d69 xt_compat_calc_jump +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x71941ae5 xt_compat_target_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x766584b9 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7b236f26 xt_compat_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x83780129 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x998663c5 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x99a3da60 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9aece7ef xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa39d8ef7 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa4ce2fd2 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xb29a46bb xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xb6b975d0 xt_compat_match_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xb6bf3ba7 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbf2bf966 xt_compat_match_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe0b4971b xt_compat_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe42caaac xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xec24fd82 xt_compat_add_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xfc213006 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xfcacfd0d xt_proto_init +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 0x9a951692 nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xa186cc0d nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xe08cd17b nci_spi_send +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x10eecc33 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x201db317 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x26ad72a7 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x28e4ba50 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 0x3441c96d rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x50386fe5 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x55eed222 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x656faccf rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x6ac3863a rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x7bc62829 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x7ea57255 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x7ed54110 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x84df3cd4 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xb537635a rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0xc006edc8 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc6c9140c rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0xd44ace9b rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xd823cd69 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0xda530dac rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0xdc08de76 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xe084355f rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0xe7fc0869 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0xea6d5b9c rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0xf2a4a469 rds_message_addref +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x2c3010d2 rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x5917b5ce 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 0x054f3595 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 0xc20f3d9f gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xfbe23627 gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x055bd0ae auth_domain_put +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 0x09c152a2 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0a79eb6e rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0bbcb7d9 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0ed2bc6f svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1513de3e rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x15ed3f1f rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x16b88a18 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x18f5ea14 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x19265c21 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1a5fedc7 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1aee2e35 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f2a9970 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f5e8073 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x206374ff rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x208eb4bf cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x218220a5 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x220c8dde xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x27128919 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2cfae7ca svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e7a83c8 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31fb5e0f rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x324febba xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32ca337c sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3343abe6 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x33d117e0 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3589f209 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x361073b4 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x379ffaee rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x38955393 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3a305499 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3a40aa70 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b13dbae svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3cffc2e7 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f4a8c64 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x40c357b4 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4165ec30 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x44a7f319 gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x451f3490 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4658a469 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x479071fa rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x48e2cfc3 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x495a95b8 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4beb3155 rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d3d7c07 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x51485055 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5213eceb svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x52cd1a1a rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x54cbcc59 xs_swapper +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5585e8b8 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x55eabc64 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x58e94f35 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5997593b rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5c64968c rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5d096fcc rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5d9998ad rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6033bf8f svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x62a95fd8 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6481a5b8 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65b7d0d5 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x662535d8 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x668cf526 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x66fb318a __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6732d58e rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x68f6ff8d auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a5ebd95 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6f1a42c4 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6f3fc0f6 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7200b2a1 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x72cf005f svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x734b46f4 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x74003396 rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x751e3e92 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76e205a6 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7708ced9 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77e79e22 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x78937e0a rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7cba5e8a xdr_process_buf +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 0x81e94b89 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8270749b xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x82f6a84e unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x830179b2 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83a4fd6e xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x848d8b4b rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x85422515 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x86680df1 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x870a69d1 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x88dbf079 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x89b6d7a8 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a7c4361 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8b8925ce rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d30bb94 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8dc80446 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e003b9a rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ef85119 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x90517f80 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x90f98134 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x915ba16e xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x92c6b570 svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x92d0bbf4 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x938f405b rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x94dcd82a xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x94f2120f svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9549b617 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x96790a07 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x96ff3949 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x97c08d00 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x97cbdadf rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9800c479 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98bc93d7 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x99e3baf1 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c99847e xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa0274987 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa285bffe _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa50a9fe7 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa5267154 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa52c2880 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa587b355 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa60e3c86 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6b863f3 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa8514417 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa94934d4 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa99b9f53 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xac6cbc46 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xac7d9345 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0073d6a svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb2fc1e67 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb3ba8c34 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb4c01a8b rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb6270e4b xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb6ce9bac rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb70606be xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbbdb17fa sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbc1852e1 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbd8f3e51 rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbebb2a24 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc020202d rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc0673aa2 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc07405b3 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc0df7134 xprt_set_retrans_timeout_def +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 0xc3b174f2 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc5970a57 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8cb4295 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc9e41d5c xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xca8a5d09 rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcac80cf1 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb43ab7c rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcc2d7a26 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcc7f3073 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcd0d1c28 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcdca9daa svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf1f24de rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd516572f rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd55c150e rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd55c2407 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd756e599 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdbbb39a9 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdcefb0b2 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdf23e013 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdf72960b rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe027e9e7 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe524fa51 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe7515f66 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe80adf04 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe8db013c svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe8ecfc62 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe9ad093a xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb08eefb rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb1f450d rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb9bd1e2 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xec16a06e xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xec65e231 xdr_stream_pos +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 0xef2743fb rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf04efced rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf0e909e0 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf40d4fe8 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf4420678 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf569a8e3 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf700124e xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf8775116 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf8802c10 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf92553f7 rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9dd3661 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfc478fac rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfcb21f0b svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe2cfc2a rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe78929f xdr_read_pages +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0489bf56 __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0c79d5ef vm_sockets_get_local_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0d0a44d8 __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x15c0c57c vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x172eff2a vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x241d3a7a vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x439a470c vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x4a776088 vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x4ed22cb7 vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x59d943c8 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x707c7d12 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 0x91483dbf vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x970b77bc vsock_pending_work +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x9b665717 vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xcb07d82c vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe12247da vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xfbc72261 vsock_remove_bound +EXPORT_SYMBOL_GPL net/wimax/wimax 0x0148576e wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x01e70e26 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0x2428fa98 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x2ea9d6d8 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x379f51c2 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x3de9b64c wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x65c75c91 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x6e29e0a1 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x73e6af7b wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x7ad364b6 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x9505d6b2 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0xaaaeb8b1 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0xe5e32d19 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x11a814de cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x17596419 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x2237cef7 cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x24e63401 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x30170edc cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x4b55d96d cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x53ed5031 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xc4cfbdcc cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xdb81eb40 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xe4e507ba cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf5b99583 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00778770 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x056bb269 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0a575945 xfrm_count_pfkey_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0b9e5852 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x74e1a843 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7c30b8c7 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x92dbc6c1 xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xbc8b0f41 xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xce7a55c1 xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xe122af95 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x22d8e927 ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x6be9ac9f ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xc3a83115 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xfa05b4a2 ipcomp_output +EXPORT_SYMBOL_GPL sound/core/snd 0x0ddb00f2 snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd 0x21942552 snd_kctl_jack_new +EXPORT_SYMBOL_GPL sound/core/snd 0x3ca17104 __snd_printk +EXPORT_SYMBOL_GPL sound/core/snd 0x4bd3b74e snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0xc4bba8c7 snd_kctl_jack_report +EXPORT_SYMBOL_GPL sound/core/snd 0xfec1bc5b snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x42dbf9df snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x8b3cc331 snd_compress_register +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xab47ec3e 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 0x1f2c14e9 snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xc0b41797 snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x36d71b56 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x62a57b29 snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x800aacbc snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x82d615c0 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x956c721a snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xb9dff012 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0244e763 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x05dab1c1 snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x05f7acb9 snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x064db659 snd_hda_jack_report_sync +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 0x0d73c91e snd_hda_parse_generic_codec +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0ea6cba1 snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0ed30d8a snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0fc39b36 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x177e42e6 snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x17c210f6 snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x18cdf54d snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1aa2c9df snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1b239833 snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1cd9bb92 snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x223fc302 snd_hda_codec_resume_amp +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x22893e45 snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x22b7885e snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x242e3bfa snd_hda_get_sub_nodes +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x24d2c34c snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x251768e7 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x255c3337 snd_hda_sequence_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x26ce61b0 snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x27fe71ff snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2a25f61c snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2cd9447e snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2e52106d snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2edceae5 snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2f4d4b12 snd_hda_codec_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x306c573c snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x316e9f60 snd_hda_resume +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x33ba1234 snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x33f9d19d snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3407d532 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x355aad96 snd_hda_ch_mode_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x37deda8c snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x397a6454 snd_hda_codec_flush_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3df835c2 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4228f903 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x43a0274b snd_hda_override_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4512b791 snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x45b261f1 __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x45c268ba snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4672fa66 snd_hda_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x48623560 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x494a43e6 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4985588e snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4b21976b snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4b228e44 snd_hda_ch_mode_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4cf8dbf3 snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4dab1f60 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4e61d294 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x513b5f10 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x525cbc7f snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x532f5ba6 snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x54489077 snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5c8ff268 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5d42f806 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x60e6143d snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x616efbda snd_hda_delete_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x624a4809 snd_hda_query_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x63cb0716 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x65846cf5 snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6a361dd1 snd_hda_ch_mode_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6eac0bb2 snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6edc0445 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x735678fd snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x73cc2763 snd_hda_jack_tbl_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x751f4588 snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x75394c1e snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x76260566 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x768bbb32 snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x76dc6871 hda_main_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x782ede92 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x78d671ca snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x794883a2 snd_hda_check_board_codec_sid_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7a4a0245 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7d7b65ba snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7eedd0da snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7eff4421 snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x80237545 snd_hda_bus_reboot_notify +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x80a46a0c snd_hda_codec_resume_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x811a80e4 snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8684d646 snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x871a6e44 hda_extra_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x87515a3b snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x87a0b0f2 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8a2009a0 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e4c6826 snd_hda_calc_stream_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x966c7e1f snd_hda_gen_spec_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x999337e1 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x99c85967 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9e539763 snd_hda_suspend +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9e9129ba snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9fe0806a snd_hda_check_board_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2827d76 snd_hda_get_jack_location +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa5b586d0 snd_hda_add_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa8533760 snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa9924d73 snd_hda_query_supported_pcm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaa81b7ae snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xab0aa7a1 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xab16ab55 snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xad5e88cd snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xad7e73f0 snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb6b73955 snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb8bb0b8c snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xba7b3abc snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbd6d261d snd_hda_codec_amp_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbf875047 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc26e3ccd snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc2957216 snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc4ab6b57 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc608c983 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc652fd69 snd_hda_get_jack_connectivity +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc77eb083 snd_hda_queue_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xca662349 snd_hda_codec_get_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 0xcc770791 snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcca83ca2 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xccc1d3b8 is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcdd95303 snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xce3ab7b4 snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd466495f snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd4fadf57 snd_hda_bus_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd521a4d9 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd883e2dc snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdaa6c1d2 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdd712953 snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xde56a020 snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe3079763 snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe349099e snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe3bb4b72 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe3eeda85 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe7ca85dd snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe831cca2 snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe9affb7c snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xea6c3a97 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xec8d4275 snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xed76485e snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xee267bd8 snd_hda_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xee2ff9f7 snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xef84ac29 snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf164ffe7 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf34a080c hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf3d11493 snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf4bebe1e snd_hda_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf5a6974a snd_hda_is_supported_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf629e5c6 snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf645b4ab snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf760cb28 snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf87957f7 snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf90a75ee snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf92d1402 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf9bede5c snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf9fb2483 snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfa1e67ab snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfcc7cc25 snd_hda_codec_update_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xffd71663 snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/soc/atmel/snd-soc-atmel-pcm 0x1fe3d4ac atmel_pcm_mmap +EXPORT_SYMBOL_GPL sound/soc/atmel/snd-soc-atmel-pcm 0x213ab973 atmel_pcm_free +EXPORT_SYMBOL_GPL sound/soc/atmel/snd-soc-atmel-pcm 0x5e4e02e3 atmel_pcm_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0186c11a snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x02d55c68 snd_soc_put_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x045e56c9 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0547b4f2 snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x05a10192 snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x05a32fbf snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x06dceffb snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x07241e21 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x075408bf snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x07572102 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x084ea426 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0857b468 snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x08a042ff snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0bca906e snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0dedd518 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1047a84b snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1215c342 snd_soc_dapm_kcontrol_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x12ea8cd9 snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x14b71906 snd_soc_add_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1a3e4246 snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1bf62ef5 snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1d157378 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1ea8004b snd_soc_cache_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1fd2ebbf snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x224157c0 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x26b2b081 snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x26e44b86 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2a3e47c4 snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2a67e1f6 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2f8241b8 snd_soc_cache_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x30e9f9cf snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x336be300 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x34257797 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x36835504 dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x368e51e0 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3b781b0f snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3bee8efe snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3d9daeeb snd_soc_dapm_get_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3e8d1f34 snd_soc_codec_readable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x415d8da5 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x447b6c57 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x44db7767 snd_soc_codec_volatile_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x44ddb3a5 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4a0e0bb1 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4b3ca628 snd_soc_update_bits_locked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4c29ea12 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4d284cc3 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4dab5c11 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x507e5a4b snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x52dd9e76 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x55ab4971 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x56c1e482 snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x59af3d5e snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5bab425e snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x624ad457 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x62f4e62e snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x69e73046 snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6cc9cc63 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6d31e1a6 snd_soc_remove_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6def6c32 snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6e0156c3 devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x70238e32 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7040489a snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7096a7e4 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7387704d dapm_reg_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x765e6c42 snd_soc_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x78efb61a snd_soc_codec_writable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7a68ab84 snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7d303d0b snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7d728963 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x802639ca snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x80a90374 snd_soc_dapm_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x83e5f712 snd_soc_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x84c147fe snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x87126080 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8acdbc54 snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8e772bdf snd_soc_cache_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8ed24be4 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9317b70a snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x98414d2a snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9ab78b49 snd_soc_lookup_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa0d09622 snd_soc_get_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa1eb8fdd snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa316aad4 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa3449c30 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa3810676 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa4028ed6 dapm_mark_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa7ed9f83 snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa979e453 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaa870755 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xac273ebe snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xad4afbf7 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xad81f349 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb027df44 snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb07c57aa snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb253fdc9 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb2d99730 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb6093e61 snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb647a532 soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb796251f snd_soc_dapm_put_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb8b38401 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbabe0063 snd_soc_codec_set_cache_io +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbbfe544a snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbc69eca1 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbd0f7629 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbe705e3f snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc14bc826 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc21c8f03 snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xca79b3bc snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xccda5ee1 snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd0410eec snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd0682166 snd_soc_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd0f8f136 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd2936dae snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd5438958 snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdad79876 snd_soc_info_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xddce2874 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe008ff3c snd_soc_dapm_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe083b680 snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe137e37c dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe83ba294 snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe90cd6f5 dapm_mark_io_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe9b3db4d snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb6b87e1 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb8964c6 snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf073144f snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf1978a79 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf197fe3c snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf29c9bff snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf2e47ac9 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf443c48f snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf9b7e64a devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfa7d5ec6 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfcf0a993 snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfeabcc14 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x00000000 compat_alloc_user_space +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x00000000 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sigset_from_compat +EXPORT_SYMBOL_GPL vmlinux 0x00000000 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x000e76dc net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x0010516c extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0x0023dcff ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x00593e75 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x006bc072 hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0070ef14 __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x007c7481 alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x00a39557 devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x00afd1a7 tcp_init_congestion_ops +EXPORT_SYMBOL_GPL vmlinux 0x00c4dc87 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x00d032e5 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x00dc2b15 blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x00fecbad __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x01130937 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x012644ec disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x014c600a netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x018f84df nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0x01c291c4 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x021ebfda btree_update +EXPORT_SYMBOL_GPL vmlinux 0x02385459 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x02403d8d sdhci_pci_o2_probe +EXPORT_SYMBOL_GPL vmlinux 0x026fcfd8 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x029a4c81 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0x02a2c1da ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0x02a3dbbd clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x02a40644 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x02d4ba6c sysfs_schedule_callback +EXPORT_SYMBOL_GPL vmlinux 0x02ec6d48 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x032e9fb2 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x0334e865 rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0x0334ec6f jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x0344e3bf sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x03593fe3 tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x036503c5 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x036ad2a0 task_current_syscall +EXPORT_SYMBOL_GPL vmlinux 0x03704f1a sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0x0374a8a2 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x037a897b thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x039da478 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x03aaea48 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x03bf1d5e gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x03e24f30 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03e597e6 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x044045c7 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x04486e88 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x045b452f of_clk_get_parent_count +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x047d7741 pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x047ebe3e __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0481f513 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x04a0ea37 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x04b5549c __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04d1d2a3 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x04df8fbc lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0x04fa12df ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x0515bbb4 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x0529de0d ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0x053494cb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x056a8cba pci_configure_slot +EXPORT_SYMBOL_GPL vmlinux 0x05805373 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x05898875 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x058e2ad3 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x0599776c crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x05a6ba22 kvmppc_handle_load +EXPORT_SYMBOL_GPL vmlinux 0x05b297a3 usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x05b46586 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x05f0c6ae rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0x05f5083b usb_bus_start_enum +EXPORT_SYMBOL_GPL vmlinux 0x06176c5b root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x061dee59 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x062db652 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x0631ab13 ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x068358a0 dm_requeue_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0x06c8edec dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x06f5c465 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0x06f63e1a devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x06fade81 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x0706ccba arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x07285d31 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x072edd79 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x074ba07a inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0776ae4c pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0x07918e1a fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07d01c42 use_cop +EXPORT_SYMBOL_GPL vmlinux 0x07ed2264 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x07f300c3 smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x081cffad wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x0831837d ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x0845b644 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x088bfa7e cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x08938465 wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x08a85c47 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x08b4da3c blkdev_aio_write +EXPORT_SYMBOL_GPL vmlinux 0x08bc0870 compat_put_timespec +EXPORT_SYMBOL_GPL vmlinux 0x090dd9e4 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x09118baf tpm_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x091c824a machine_power_off +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x0924cd1b dm_set_device_limits +EXPORT_SYMBOL_GPL vmlinux 0x09376b10 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0944807f rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x09469482 kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x094b3877 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x095aee1e wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x095d3d89 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x095fc9f5 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x0962c5b7 pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x09905cd2 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x09c51b21 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x09cfb921 regulator_set_optimum_mode +EXPORT_SYMBOL_GPL vmlinux 0x09d1aeed __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x09d54177 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x0a00ba16 relay_close +EXPORT_SYMBOL_GPL vmlinux 0x0a216cc6 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x0a442f5b __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x0a51ae5b virq_to_hw +EXPORT_SYMBOL_GPL vmlinux 0x0a7061a3 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x0a827123 devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0a95c61b debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x0a9fd3c5 gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x0aa184eb led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x0aa58e2b bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x0ac06646 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x0af5fd32 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b0bf437 ping_close +EXPORT_SYMBOL_GPL vmlinux 0x0b353641 ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x0b5a1207 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x0b6ccb4b tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0x0b94eddd skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x0bae62b1 ktime_get_monotonic_offset +EXPORT_SYMBOL_GPL vmlinux 0x0bb3af76 dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c0dcc4b skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0x0c1e35e3 rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c31705e tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x0c3f7ce5 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x0c8bb44b fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x0cb06edd rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cc2d526 max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x0cce0227 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x0cda8cca tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x0d07674d da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x0d2eb71e noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x0d706d2e rh_set_owner +EXPORT_SYMBOL_GPL vmlinux 0x0da5e2b8 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x0daa05ae fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0daba75a serial8250_tx_dma +EXPORT_SYMBOL_GPL vmlinux 0x0dc93d1a sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x0dcd0253 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0de06988 cpu_first_thread_of_core +EXPORT_SYMBOL_GPL vmlinux 0x0e417983 realmode_pfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0x0e544220 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x0e663d94 platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x0e6fc90b ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x0e8e0c39 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x0e96d604 extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x0ec23b83 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x0ecf823a static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x0ed11a11 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x0ed18990 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x0ed9302e percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0x0ef1207a blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x0f119725 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x0f292cf5 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x0f2fc52c tcp_is_cwnd_limited +EXPORT_SYMBOL_GPL vmlinux 0x0f4539ea aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x0f56f865 regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0fb0f384 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x0fe112dc of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x102c5ef3 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x108fe7a1 platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x1094119c uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x10a1d133 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x10bd7187 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x10c42694 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x10d02fc4 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x10d2b5ec task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x10d9c459 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x10deeb4a regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x10f61f43 hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x10fa59fc list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x1106857e ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x11091d5a ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x1114011d threads_shift +EXPORT_SYMBOL_GPL vmlinux 0x1169f4c7 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x11ac87f8 __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x11cdb92f simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x11d79e9a device_move +EXPORT_SYMBOL_GPL vmlinux 0x11ed2511 wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x11f0ed69 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x11f9be53 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x1215b314 kvm_vcpu_kick +EXPORT_SYMBOL_GPL vmlinux 0x121cd964 of_pci_range_parser_one +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x121ed3f3 add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0x1245751f raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x1246e107 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x1260d4d8 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x129c84fd cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x12e31b40 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x12fd6d00 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x130ff783 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x131a16d5 regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x1327e831 gpio_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x133a5a9b ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x136a4ee6 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x13846087 pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0x1388957a kvmppc_handle_store +EXPORT_SYMBOL_GPL vmlinux 0x138dd9ce adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x13921363 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x1397e020 sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13ce87e8 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0x13dcdc64 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x13e5ea13 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x1407015e crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x1416c8d6 put_compat_timeval +EXPORT_SYMBOL_GPL vmlinux 0x142a8be4 of_clk_get_parent_name +EXPORT_SYMBOL_GPL vmlinux 0x147665a7 rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0x148238ce ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0x14a70173 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x14ba72c5 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x14ccdebf dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x15026a32 snmp_mib_init +EXPORT_SYMBOL_GPL vmlinux 0x151b9b42 __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0x1532f373 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x15387065 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x1542c69e cgroup_taskset_cur_css +EXPORT_SYMBOL_GPL vmlinux 0x1551e912 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x159d95d6 __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x159dc5fa usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x15c21e5e nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x1611adc6 rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0x16406d68 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x16528371 cgroup_is_descendant +EXPORT_SYMBOL_GPL vmlinux 0x165a2f21 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x167764fe mmc_send_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x16ad53d0 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x16e82520 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x171418f6 tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0x171f4b10 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x173d2ee0 nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x17498f83 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x1753a32f hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x175e5dad da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x1760e716 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x1777cc52 rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x17ba3997 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x18250c46 extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x183c0762 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x1848d7d7 __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x18592c61 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x1865cf27 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x1883efda fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0x18978509 tpm_store_cancel +EXPORT_SYMBOL_GPL vmlinux 0x18a2dff9 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x18c5606a rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x18c60559 __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x18d2a1b8 wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x191ce98e regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x19236206 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x19286a23 kick_process +EXPORT_SYMBOL_GPL vmlinux 0x1936a281 tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x19482ef1 __kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0x1948eb8b srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19a17c7d dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19b31344 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0x19b384a5 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19ea2d3c pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x1a082d69 max77693_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x1a2fc32e kvm_init +EXPORT_SYMBOL_GPL vmlinux 0x1a323362 __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x1a7c2f44 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1a81fca1 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x1a8c5907 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x1ab473b9 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1aeb4a35 pci_renumber_slot +EXPORT_SYMBOL_GPL vmlinux 0x1aede3de usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x1b307b54 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x1b410118 rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0x1b52be2c clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0x1b532fa2 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x1b58198a od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x1b643687 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x1b8ed722 mark_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1bc0b4ad ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x1bc9e01c pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x1bcd6d61 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x1bd06aab cpufreq_frequency_table_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x1bd2776c pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x1be7fdad ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x1becfdd1 gfn_to_memslot +EXPORT_SYMBOL_GPL vmlinux 0x1bfff1b6 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x1c392ea0 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c7cf595 inet_csk_compat_setsockopt +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1cdb2147 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x1cfc8658 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0x1cfe78d1 kvm_release_pfn_dirty +EXPORT_SYMBOL_GPL vmlinux 0x1d1b73bc crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d8480fe of_irq_parse_and_map_pci +EXPORT_SYMBOL_GPL vmlinux 0x1da5edb6 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x1da99234 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1db652e9 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x1dbbeba3 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x1de054d5 of_clk_del_provider +EXPORT_SYMBOL_GPL vmlinux 0x1dfbcf4c mpic_msgr_disable +EXPORT_SYMBOL_GPL vmlinux 0x1e2e1e9f pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0x1e45834d da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x1e4ae7b0 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e8fac8e wireless_nlevent_flush +EXPORT_SYMBOL_GPL vmlinux 0x1e96c7e6 tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x1ead9f55 css_next_descendant_pre +EXPORT_SYMBOL_GPL vmlinux 0x1eb1594f gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ecaae62 md_run +EXPORT_SYMBOL_GPL vmlinux 0x1f344f4b cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x1f6781da console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1fcece42 inet_twdr_twcal_tick +EXPORT_SYMBOL_GPL vmlinux 0x1fdc681c inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x1ff65c0b blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x200e98ac invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x20179b5c proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0x2029c29c sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x202eb76e da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x203a5b27 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x20a17bb5 sysfs_notify_dirent +EXPORT_SYMBOL_GPL vmlinux 0x20ae786b pcibios_finish_adding_to_bus +EXPORT_SYMBOL_GPL vmlinux 0x20af4f6b devres_get +EXPORT_SYMBOL_GPL vmlinux 0x20af5d74 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x20bb71d9 split_page +EXPORT_SYMBOL_GPL vmlinux 0x20bc3470 orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x20dc7693 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL vmlinux 0x20f777e8 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x20fe31de usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x21072b7a sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x211b6dcd class_find_device +EXPORT_SYMBOL_GPL vmlinux 0x213b39df ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x21735eff pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x218d3edd gpio_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x21d36a03 kvm_hypercall +EXPORT_SYMBOL_GPL vmlinux 0x21d441f3 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x21d7b3ba ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x22231b94 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x22440831 thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0x2253cce5 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x228b1917 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x22b0057e led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x22dab30f rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x230c2bac tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x230d1e73 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x231ad494 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x231d7211 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x2360ff78 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x2376e586 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x23828c87 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x23a8dc12 regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0x23cf9c14 sdhci_pci_o2_fujin2_pci_init +EXPORT_SYMBOL_GPL vmlinux 0x23d81817 serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x23fd0b5d bus_register +EXPORT_SYMBOL_GPL vmlinux 0x24011e14 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x242c14b0 ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x2447533c ktime_get_real +EXPORT_SYMBOL_GPL vmlinux 0x246beb9c __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x2474b8f8 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2490250c vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x249efe32 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24c27ce5 rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x25220039 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x2524f7f1 rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0x252d5746 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x2539a0ec usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x2545af0f devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x25b890d4 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x25c12a85 spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x25cb8603 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x25d33c8d xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x25e20824 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x26057364 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x26110115 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x2618c9f8 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x2629f502 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x2639b1df __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x2642373f tpm_open +EXPORT_SYMBOL_GPL vmlinux 0x2643f978 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x2699409a crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0x269caac8 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0x26b4ecdb isa_bridge_pcidev +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26f4bb6c lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL vmlinux 0x271b5bcb clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0x27210f61 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x273a6d7c regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x275678ab led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x2776affd blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x27800603 ata_sas_port_async_resume +EXPORT_SYMBOL_GPL vmlinux 0x27a02cfa gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL vmlinux 0x27a71708 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x27c0c4be eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27d7893b pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x281d77e5 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x28432419 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x285a5f9d percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x285b54ad crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x286c68c1 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0x2878767c usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x287d0294 of_console_check +EXPORT_SYMBOL_GPL vmlinux 0x2899e9af pci_msi_off +EXPORT_SYMBOL_GPL vmlinux 0x289fdcc4 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x28a903c8 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0x28cd851e sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x29362427 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x2966aa79 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x29bbbb1f rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x29c102d4 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x29f0d5a2 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x29f33530 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x2a328e27 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x2a7d0c38 gfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0x2aa2f826 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x2ad1ece4 zs_get_total_size_bytes +EXPORT_SYMBOL_GPL vmlinux 0x2adedf62 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x2afe4a03 swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x2b0c301e kvm_vcpu_uninit +EXPORT_SYMBOL_GPL vmlinux 0x2b1e0758 rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0x2b27a9cd sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x2b349189 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x2b5c303b smp_send_reschedule +EXPORT_SYMBOL_GPL vmlinux 0x2b7a6de8 syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x2b7af55f crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x2b8d90c0 kobj_completion_del_and_wait +EXPORT_SYMBOL_GPL vmlinux 0x2ba3817d dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x2bab70c1 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x2bac1df6 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x2bfaef4e clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x2bfef64d da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x2c017cc1 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c7ae6aa usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c88a0dd regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x2c97f8a2 of_reconfig_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2cb35dad tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x2cccb2e3 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x2cce8b57 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x2cd2ca0c fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x2cd5ccc2 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x2cda40dd sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cef070b crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x2cf8d100 inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x2d0a0d28 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x2d17a0e1 cgroup_taskset_size +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d1e2836 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2d36c57b rh_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d4fbc48 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x2d51bb22 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d76c537 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x2db0019f __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x2db71f18 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x2db8378c srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x2dba276a __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0x2dc5a6d1 btree_last +EXPORT_SYMBOL_GPL vmlinux 0x2dd10549 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x2ddd887e reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2de46a74 bdi_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x2df448ff watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x2e13ae6a wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x2e1da9fb probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x2e1f4b0d cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e29d32f gfn_to_hva +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e45e488 rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x2e6279b0 get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0x2e749d99 dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0x2e985008 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x2e9f9c01 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x2eadb15c queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ec493ff alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x2ecbfac7 devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x2ed948a8 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x2eed85c8 device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f11b7f6 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f604297 devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x2f7dfa9b arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x2fd6e41f usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x2feaa130 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x2ffb5ff7 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x2ffda8c9 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x300107a1 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x3006b6f5 of_pci_get_devfn +EXPORT_SYMBOL_GPL vmlinux 0x301249e9 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x3012a9ca pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x30272d59 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x302ba814 class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x302f841f __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x306a3582 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x308b733a getboottime +EXPORT_SYMBOL_GPL vmlinux 0x308fdddd ref_module +EXPORT_SYMBOL_GPL vmlinux 0x30de364b of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x3126bcf0 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x313b2813 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x318133a0 ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0x31859993 of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0x31a7a0cb fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31cd6ca4 pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x31e3eae1 fuse_conn_kill +EXPORT_SYMBOL_GPL vmlinux 0x31fa973e securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x31fb74bb dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x321bdbb1 compat_get_timeval +EXPORT_SYMBOL_GPL vmlinux 0x322b82c0 tpm_read +EXPORT_SYMBOL_GPL vmlinux 0x322c10d9 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x3256ca45 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x32658c6c dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x326f0ae9 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x329bbbde timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0x32a12250 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x32b31a8c ktime_get_boottime +EXPORT_SYMBOL_GPL vmlinux 0x32bded08 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32c5d728 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0x32c80375 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x32cafc8b srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x32cbf6a4 stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0x32d78368 __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x32fd447a monotonic_to_bootbased +EXPORT_SYMBOL_GPL vmlinux 0x3310bf11 pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x3362367c spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x33722f36 kvm_set_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x337403b9 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x337786fa usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x33797710 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x33a68c0b balloon_mapping_alloc +EXPORT_SYMBOL_GPL vmlinux 0x33a94a45 of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x33bde417 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x33caeb8a xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x33f7ab15 get_compat_timespec +EXPORT_SYMBOL_GPL vmlinux 0x341399cf debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x3413ff17 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x34406707 irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0x3465fce6 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x34902e13 kvm_put_kvm +EXPORT_SYMBOL_GPL vmlinux 0x34981238 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x34b1ec44 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x34b4c77e tpm_register_hardware +EXPORT_SYMBOL_GPL vmlinux 0x34c83e2c __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x34cc08d6 cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0x3506eb2c ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x350c5e67 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x3519cc01 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x3521a000 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35a44aa8 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x35c9c6be wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x35e1a5dd usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x35eeaa88 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x35f10f43 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x35f165f1 devm_reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x35fea45e kvmppc_hv_ops +EXPORT_SYMBOL_GPL vmlinux 0x36062f39 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x36746556 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x368f1fea static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x36901a1c unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36a64e5c percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0x36ad6bdf kvm_clear_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x36f423bc scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x36f63718 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0x36f9d28c lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x3748c0a9 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x3762d9d9 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x377ad734 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x37b48662 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x37d2c2c5 rh_dump_blk +EXPORT_SYMBOL_GPL vmlinux 0x37e7fc1a usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x3820ee3c raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x3834d1d0 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x389463f7 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x38ae3d1f sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x38b0bd0a __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x38de5bcb rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x38f6b89b sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x3900ea0c spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x39092fa2 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x391b8044 __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x397ef9ad crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x399f2037 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x39b3fbf1 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x39c6c719 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x39f61c73 acop_handle_fault +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a593794 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3aaa84e2 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3acf153a tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x3ad0e201 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x3ad82802 of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0x3aff1a56 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x3b03b727 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0x3b5fefd7 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x3b8ffe27 device_schedule_callback_owner +EXPORT_SYMBOL_GPL vmlinux 0x3be2d4cb relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x3c098e2a usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x3c323922 tpm_write +EXPORT_SYMBOL_GPL vmlinux 0x3c80e900 agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0x3c8424a0 clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3c8d28cc of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x3c8f29c9 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3cbfd0c1 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x3cc59109 tpm_show_caps +EXPORT_SYMBOL_GPL vmlinux 0x3ccffec8 of_irq_parse_one +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3d39b6ab fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x3d749f7d smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x3da42168 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x3dc526a9 arizona_of_match +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3ddca3fb pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3e01544f user_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x3e2e543d cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x3e2fa31f wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3e564a17 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0x3e62e505 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e971b8d regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x3ec21f78 dm_dispatch_request +EXPORT_SYMBOL_GPL vmlinux 0x3ecf57b6 of_pci_msi_chip_remove +EXPORT_SYMBOL_GPL vmlinux 0x3edcd7e8 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x3f2057fc br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x3f220552 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x3f4b9247 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x3f535ab3 cgroup_unload_subsys +EXPORT_SYMBOL_GPL vmlinux 0x3f5ff118 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x3f7652ed extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x3f86b7c5 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x3f99467e inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x3facdb1a __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x3fb14423 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x3fc72d3d __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x3fcfcf99 regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x3fe8bc8f get_device +EXPORT_SYMBOL_GPL vmlinux 0x3fef7431 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x3ff7d34c of_irq_parse_pci +EXPORT_SYMBOL_GPL vmlinux 0x4003ea13 __scsi_get_command +EXPORT_SYMBOL_GPL vmlinux 0x401ba630 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x404b6341 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x40582db6 blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x4059a3ef __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x407e5baa tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x40a257ae ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40b8404a device_register +EXPORT_SYMBOL_GPL vmlinux 0x40b9b8bf extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x40ca2fb8 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40d5c2fa pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x40fa2316 _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0x41669c0c class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x41772b02 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x418ccf7f bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x418fa5df attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x41ab38dc disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x41d04441 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x41d81c5d of_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x41dfd127 cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x41fe48e7 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x41ff3cd5 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x42156d6c irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x42165749 of_pci_find_msi_chip_by_node +EXPORT_SYMBOL_GPL vmlinux 0x4223acaa ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x4223c427 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x4279d293 netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x42ab7e58 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x42c216c3 gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x42f5dc14 regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x430e5257 of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0x431e1907 of_property_read_string_helper +EXPORT_SYMBOL_GPL vmlinux 0x4325e88e eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x4345614e hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x434627a7 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x4362695c __rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x43969dbe rh_alloc_fixed +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43b21a59 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x43b466b0 gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL vmlinux 0x43d580ee pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0x43e94e5b dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x43f0e554 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x4405189e scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x44404f11 kdb_register_repeat +EXPORT_SYMBOL_GPL vmlinux 0x4446831b device_reset +EXPORT_SYMBOL_GPL vmlinux 0x445ecea4 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x450fb522 kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x45249d18 elv_register +EXPORT_SYMBOL_GPL vmlinux 0x45293d80 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x454c15ae __smp_call_function_single +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x45762512 serial8250_rx_dma +EXPORT_SYMBOL_GPL vmlinux 0x4577d7c1 regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x457b77ca of_fixed_factor_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45c55325 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x45faaeee usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x460f7531 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x46290c0b adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x463fc8b5 pcibios_free_controller_deferred +EXPORT_SYMBOL_GPL vmlinux 0x4662e1bd inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x46690d85 usb_autopm_get_interface +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 0x468b912d uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x46b22214 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x46c93d3a ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x46f444d6 device_create +EXPORT_SYMBOL_GPL vmlinux 0x470fa426 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x47273a2d pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x475f0c06 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4772ec5e kvmppc_prepare_to_enter +EXPORT_SYMBOL_GPL vmlinux 0x477a6ec6 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x478337cb attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47b21077 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x47ccd0d4 rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x47d37531 __netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x47ddcfff irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0x47ebdb04 css_next_child +EXPORT_SYMBOL_GPL vmlinux 0x4813d8eb fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x4830a913 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x4844df13 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x484751ad scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x4849c1f3 pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x484aaa57 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL vmlinux 0x48a168a9 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x48a7b440 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x48dadfb0 relay_open +EXPORT_SYMBOL_GPL vmlinux 0x48df9491 sysfs_put +EXPORT_SYMBOL_GPL vmlinux 0x48e41c94 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x48ecca47 user_read +EXPORT_SYMBOL_GPL vmlinux 0x4933e77f cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x49512533 kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0x49862eb0 sk_unattached_filter_destroy +EXPORT_SYMBOL_GPL vmlinux 0x498d293a trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x49d87dc8 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x49ebc7df spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x49f820af crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x4a0eed7b regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x4a2f3bf4 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4a51587d power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x4a619be6 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x4a61b6ac __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x4a6e2390 devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x4a73bdee inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x4a87f61a get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x4a90160e bprintf +EXPORT_SYMBOL_GPL vmlinux 0x4a93af9c wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4ac7a62b vtime_account_system +EXPORT_SYMBOL_GPL vmlinux 0x4aec6c14 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x4af4d85f class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x4afc8249 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0x4affcc60 pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x4affd08b put_compat_timespec +EXPORT_SYMBOL_GPL vmlinux 0x4b0403fc dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x4b1003dd usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x4b37d85f sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0x4b53808e usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x4b598103 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x4b6474d5 tpm_show_pubek +EXPORT_SYMBOL_GPL vmlinux 0x4b70040d mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0x4b895b0b usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x4b98827c rh_init +EXPORT_SYMBOL_GPL vmlinux 0x4bb2dce6 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x4bb385d9 clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0x4bbc38a5 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x4bc3cc63 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x4bc62a81 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x4bc85368 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x4bd4c535 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x4bf47b9a pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x4c00c08d __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x4c2e1f24 clk_disable +EXPORT_SYMBOL_GPL vmlinux 0x4c3e213a spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x4c4eff78 ata_sas_port_async_suspend +EXPORT_SYMBOL_GPL vmlinux 0x4c513f15 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c61f1b9 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c9aefc1 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4ca4c9df clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x4cc6b7c9 scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x4ceb90b7 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x4d172ccb ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x4d24b9ea dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x4d35cb42 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0x4d41b8eb fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4d4c36ce max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x4d4d887d xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x4d5ed766 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x4d5fb692 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x4d619549 led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x4d811952 proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0x4d9d22d8 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x4d9e69a7 device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x4dc43b62 inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x4dde7ae8 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x4ddebff1 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4df8ee70 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e6e266e pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x4e88e349 ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x4e9e01c0 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x4eb6b708 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x4ec7b8e3 tracepoint_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0x4ee282a8 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f020dee public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x4f353786 tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x4f99f624 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x4f9adc68 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x4fbffb93 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x4fc3b1ce inet_csk_get_port +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 0x4fec8575 regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x5007282b rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x5019e38b sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x504f5234 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x5059ba89 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x50601122 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x506691f1 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x50781988 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x509547da fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x5095be9d devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0x50ad54ac device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x50c5355c mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x5116b67c hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x51182c7c pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0x514915e4 kvmppc_emulate_instruction +EXPORT_SYMBOL_GPL vmlinux 0x5166d6de usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x51846493 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x51b322b3 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x51b65a26 rtc_lock +EXPORT_SYMBOL_GPL vmlinux 0x51e40df0 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x52029b92 aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x5205e64d disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x520a7dfd sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x520b0da2 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x520e7109 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x521a348e sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x521d1a25 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x521e3b13 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x522f538b tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x52314471 serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x524bc490 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x52539107 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x52643e03 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x52644c64 rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x5271f47d rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x528df2f2 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0x5290e2e8 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x52ae1628 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x52d19130 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x52d5e45d wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x52fae92f __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0x530e054b i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x5313b551 ping_bind +EXPORT_SYMBOL_GPL vmlinux 0x5335dd11 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53607a5a powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x536b687b kvm_resched +EXPORT_SYMBOL_GPL vmlinux 0x53738751 extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0x53b9089f extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x54031c14 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x540cfba4 tpm_show_pcrs +EXPORT_SYMBOL_GPL vmlinux 0x541a1563 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x54215db5 visitor64 +EXPORT_SYMBOL_GPL vmlinux 0x54324eb8 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x5433ec38 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x543d6eb2 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x54575f41 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x546c5565 ppc_tb_freq +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54b0c3c0 ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x54ed9a87 tty_prepare_flip_string_flags +EXPORT_SYMBOL_GPL vmlinux 0x54f8685b srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x55242337 kvm_vcpu_cache +EXPORT_SYMBOL_GPL vmlinux 0x552dd60c i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x555436d8 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x5585f761 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x559b1680 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x55b3845d device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x55b8d13f transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x55c563ed skb_gro_receive +EXPORT_SYMBOL_GPL vmlinux 0x561e4b77 irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x5622157d sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x562cf9ec led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x56358299 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x563f368a inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x5645a48a regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x564f1dca klist_add_after +EXPORT_SYMBOL_GPL vmlinux 0x5656abe0 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x56680fae arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x566cc4d3 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x5692386f gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0x56c17ed2 mdio_mux_init +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56d7b3e9 __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56ebe60b anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x5740c4fe flush_altivec_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x575c5f94 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0x5765e1b3 rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x577a9130 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57aaa073 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x57b24d6e mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x57b35d0f spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0x57bdd153 regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x57f5902c pci_pri_stopped +EXPORT_SYMBOL_GPL vmlinux 0x58041570 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x5812a6f3 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x5815e0f4 tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x58380c0d nl_table +EXPORT_SYMBOL_GPL vmlinux 0x58875370 sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0x5892f832 release_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58a857bc irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x58b27053 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x58c8a6c3 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x58d4cbe6 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x58f4d8ca ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x591abf2e page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x5947abbe max77693_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x595e8b8f platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x599c59ef regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x59a6e91d clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x59b2adbf input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59eab003 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x59ff23c7 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x5a02e21f user_match +EXPORT_SYMBOL_GPL vmlinux 0x5a09d96c regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x5a339d8d regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a8f3b69 of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0x5ab14246 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x5ac69887 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x5ae6f7f3 regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x5af92860 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x5b22d00f bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5b3b5800 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5b426377 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x5b4e379c of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0x5b5a81be rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5b654f77 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x5b693652 regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x5b69693a alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x5b754ba0 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x5be57f59 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x5bff61be platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x5c18af46 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x5c1cfbe4 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x5c3422e4 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x5c37e84c irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x5c3c234d tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x5c7fc98e dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x5c93a2d0 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0x5c9fcdbe ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5ca3de04 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x5ca93699 tracepoint_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cc4e35f blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x5ced52bc pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0x5cf8a882 __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x5d0f335c regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d201246 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x5d2241ce kvm_write_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0x5d36d2a0 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x5d571f33 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x5d75daab ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x5d77952d hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x5d81905f wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x5db96484 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x5ddff19d da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x5e3085ee rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5ea59f9c usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x5ec4b526 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x5ee7542e reserve_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x5f060e2e ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x5f248f72 set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0x5f292558 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x5f419491 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x5f6e237f security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x5f79a98b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x5f93cf3b pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x5f9dd8ce dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x5fa8636b blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x5faf5d8e cgroup_add_cftypes +EXPORT_SYMBOL_GPL vmlinux 0x5fc3c483 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0x5ff48693 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x602cd1c5 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x603e9a39 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x60467b06 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x6092074d tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x6094685f wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL_GPL vmlinux 0x614686a7 cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x6169233c rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0x6183ff15 sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0x61a90c54 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x61b6b259 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x62013e3a device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x62153919 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x62476d12 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x626a2acd find_module +EXPORT_SYMBOL_GPL vmlinux 0x627e9364 da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x62f53727 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x63006d33 devres_release +EXPORT_SYMBOL_GPL vmlinux 0x6316791c cpu_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL vmlinux 0x63205de1 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x637a8f11 dma_buf_export_named +EXPORT_SYMBOL_GPL vmlinux 0x6385b933 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x6390efda of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0x6394d86a regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0x639e93d6 kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL vmlinux 0x63c43962 regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x64019c95 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x6428da4f rh_attach_region +EXPORT_SYMBOL_GPL vmlinux 0x6485d557 ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x64b7de95 sync_filesystem +EXPORT_SYMBOL_GPL vmlinux 0x64c85f41 napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0x64d8d74d kvmppc_emulate_mmio +EXPORT_SYMBOL_GPL vmlinux 0x6504a293 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x6504f325 __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0x650c4ca1 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x6517887a n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x6546ece6 task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0x6547e4c5 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x654d63d8 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x657b00ee devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x6581d257 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x65862cb1 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x65942ed4 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x6595c560 regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x65a25e05 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65e8a7aa pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x65e92684 usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x66164463 kvm_vcpu_block +EXPORT_SYMBOL_GPL vmlinux 0x66230ba2 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x662a0c3f x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x664735c3 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0x665d40bf tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x667e7ca7 rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL vmlinux 0x66aee3ae kobj_completion_release +EXPORT_SYMBOL_GPL vmlinux 0x66afb53b unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66f2a48f ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x671423bb init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6751abfd blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x67594d1c crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x676ebe60 device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x67808649 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x68233cd7 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x683a4f95 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x687934e9 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x6887d7d1 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x68880343 vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x689105ba regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x68a420cc sec_reg_update +EXPORT_SYMBOL_GPL vmlinux 0x68a9c0a3 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0x68eddfa7 sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x68eea35f get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0x69034978 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x6921aa34 compat_put_timeval +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x693d7ed4 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x6966dcb4 devm_regulator_unregister +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 0x699d4fdc ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0x69b75d39 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x69e9a2cb ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x6a087893 gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL vmlinux 0x6a0f315e cpu_remove_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x6a222f0c sata_port_ops +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 0x6a923326 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x6aa85801 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x6ab335f3 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x6acb8d84 ppc64_caches +EXPORT_SYMBOL_GPL vmlinux 0x6af3b745 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x6b106bba md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x6b141653 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b387d4c pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x6b42e7ee dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x6b48a910 switch_booke_debug_regs +EXPORT_SYMBOL_GPL vmlinux 0x6b6f826d usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x6b915519 cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0x6b93bf60 inet_twdr_twkill_work +EXPORT_SYMBOL_GPL vmlinux 0x6b9e7ad7 of_clk_src_simple_get +EXPORT_SYMBOL_GPL vmlinux 0x6bf4278a debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x6c1b09ab gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x6c28d734 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x6c3cb453 kvm_vcpu_init +EXPORT_SYMBOL_GPL vmlinux 0x6c40902d tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x6c49c4f2 clockevents_notify +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c4db915 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x6c707490 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x6c962b32 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x6c96e9c0 call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x6c9dad50 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6cc35afa rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6cd4ea62 wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x6cde5c94 ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0x6d2785b5 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x6d2de353 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x6d2e1c19 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d8194d2 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x6d9e5425 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x6db7ac27 of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x6df8f4cd pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x6dfca94a disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x6dfdeaec wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e181e2f gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x6e379526 kernstart_addr +EXPORT_SYMBOL_GPL vmlinux 0x6e4643d5 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x6e692979 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x6e80e064 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e89fdc5 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x6eca2efc crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x6ed8a657 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x6edeafaf skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x6eff1ee1 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f659c57 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x6fb6b7cd inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff34f82 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x707fbc2a usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x70a23171 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70d3395f pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x710a7470 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x712c6465 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x714a681f __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x71621fe0 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x717521d2 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x71930ed3 of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x71a25f35 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x71a2a512 regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x7205488f extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x7212784c __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0x721916c9 ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x721b4aea crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x723374f8 pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x723572cb cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x725473b7 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x72c0b549 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x72d7d4fb wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x72d85af2 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x73510609 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x7361da41 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x737fe442 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x739408f9 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x73980d18 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x739ca052 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73b9b9a5 inet_hash +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 0x73d9fa69 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x740b1268 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x7422c95e gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x742a3776 uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x743628f2 cpu_add_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x7437aea7 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x747b9990 gfn_to_pfn_async +EXPORT_SYMBOL_GPL vmlinux 0x74954462 timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74beeb4c inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x74d7ec34 mpic_subsys +EXPORT_SYMBOL_GPL vmlinux 0x75133f6e visitor128 +EXPORT_SYMBOL_GPL vmlinux 0x751742be __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x752c9fd1 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x75331d9f cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x756b0cde rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x75719ab8 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x757b49d2 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0x757d63a2 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x75958a14 pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0x75a98a11 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x75b57c09 pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0x75f2a044 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x760ac98f regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x768450ab rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0x7694b54d pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x76afe375 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x76b6613b usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x76d07d6e gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x76e06b40 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x76e30d13 rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x76f2f0a4 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x772077f9 hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x773cb13f rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0x7766819b sec_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x776be51d fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0x776c48a7 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x776f6c83 spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x7782b852 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x77ed4231 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x7820527a of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0x7840f3ad pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x786de96a debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x787c882b lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x78b0216b arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0x78e36baa sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x78efeced of_extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x78f5f11a devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x792a6428 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x7936ea61 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x7953db05 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x795be130 rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x7992827d blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x79a71a02 vtime_common_account_irq_enter +EXPORT_SYMBOL_GPL vmlinux 0x79b98f79 rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x79c480da rh_dump +EXPORT_SYMBOL_GPL vmlinux 0x79de9ca5 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x7a7bded4 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x7a8306ea pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0x7a8a9408 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL vmlinux 0x7aad50a7 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x7ae1ae8e cpufreq_frequency_table_put_attr +EXPORT_SYMBOL_GPL vmlinux 0x7afe6ca5 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b0f2127 find_linux_pte_or_hugepte +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b292d19 static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0x7b77bff4 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x7b806e72 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x7b8b4c43 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0x7bd30d24 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x7c227088 clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0x7c346357 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x7c726293 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x7c7ca034 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x7cbd3352 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0x7cc1b7fd max77693_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x7cc7de1c x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x7cccabb4 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7ce5b92a gpiod_sysfs_set_active_low +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7cfa99d7 pcibios_map_io_space +EXPORT_SYMBOL_GPL vmlinux 0x7d153969 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x7d36e534 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x7d397cc7 gpiod_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d468eca usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x7d4e9f04 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7d53194a usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d7305a7 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dad3c66 reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x7dd340d7 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x7e17ba7b klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x7e2be925 nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x7e3b737b ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x7e431c27 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x7e4f572e power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x7e51df1f ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7ea1a2bc probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x7ea5f3ff cpufreq_notify_transition +EXPORT_SYMBOL_GPL vmlinux 0x7eb63e4f devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7f008202 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7f1a0c4d led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x7f1e7af4 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x7f352f25 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x7f3d2f5d i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x7f4878ca usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x7f6050c8 tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0x7f62fae6 user_update +EXPORT_SYMBOL_GPL vmlinux 0x7f7bc710 klist_next +EXPORT_SYMBOL_GPL vmlinux 0x7f7da6fd tpm_remove_hardware +EXPORT_SYMBOL_GPL vmlinux 0x7f93e148 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x7fa4b4a2 of_pci_parse_bus_range +EXPORT_SYMBOL_GPL vmlinux 0x7fb19517 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x7fcc2512 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x7fe3fe28 pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0x7ff4eb24 da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0x80129030 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x802371e1 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x8042a013 get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0x806d955b ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x807df1d7 powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80a2abd2 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x80b11205 rtc_update_irq_enable +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 0x80fe069e cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x8103a014 i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x811052c0 save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0x8114b8d6 md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x813a61bc regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x8140842a gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x814ca41c pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x815dde2e ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x8163aa83 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x8172cfe9 blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0x8179cc26 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x81835ec8 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x81c3c0ce rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x81d91334 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x81ddbd8d pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x81e567fa sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x81edf4a1 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x81f3e9be regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0x81f45c82 of_usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0x8251ac0b rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x8261d892 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x827f6cae sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x82935364 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x82939ebd rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x82b98162 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x82d2dfe5 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82f297ee irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0x8318eb66 clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x834616bb sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x835d8c09 preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x836d61d0 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x837d3b54 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x83ba8679 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x83c70b59 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x83cae0ac devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x8420bccd cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0x8432a477 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x8487a2b6 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x849c2c72 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x84c2eba6 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x84ca03cf dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x84d9decf kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0x84fd1022 kvm_read_guest +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x852e568d of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x8549c463 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x854abc76 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0x856c493c crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x8572fc0f crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x858cad31 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x85b14d33 clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x85c10896 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0x85c75384 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x86108201 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x8612f0e4 thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0x862aa815 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x866b9687 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x8694482c list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0x86a764a1 of_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x86afaed6 kvm_release_page_clean +EXPORT_SYMBOL_GPL vmlinux 0x86ca6c22 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x86d32a29 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x8702e548 process_srcu +EXPORT_SYMBOL_GPL vmlinux 0x87069c9b page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x870ca6f8 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x8714e0e4 stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x874cae39 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x8776cd7e device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x8783b1a3 wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x879c9367 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x87af440f extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0x87b8a894 blkio_subsys +EXPORT_SYMBOL_GPL vmlinux 0x87bb4e32 of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x87d17bbe usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x88033fdc driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x8804af3d usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x88083ae9 thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x880aa4a8 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x880d0325 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x88138f23 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x88182ced pcibios_unmap_io_space +EXPORT_SYMBOL_GPL vmlinux 0x8843fef5 regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x888206f9 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x890f2cf8 dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x893583a8 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0x89586288 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x89999423 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x89ad6c66 cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x89b98976 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89c461f6 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x89e5be7f devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x8a28d7d7 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x8a2b14ba wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0x8a31b186 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x8a44cb9d inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x8aac4b73 thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x8ab24e54 debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8abbe66c ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0x8ad57635 regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x8ae152b5 of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x8b127964 pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x8b1f63ba sec_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x8b5920ef __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x8b70e8ea __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x8b77cad2 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x8b7c39fc i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0x8b82a343 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0x8bbb9252 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0x8bd2b900 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x8bf492d6 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c0800f3 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x8c0c9eb7 cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x8c202e83 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x8c6903f6 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x8c93db4b shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x8cb58c0d pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x8ccc66c3 md_stop +EXPORT_SYMBOL_GPL vmlinux 0x8cdac096 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x8ce9c1ab kvm_write_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x8cea765f memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x8d09ca5d devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x8d33089a tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x8d36c088 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0x8d394b2f dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x8d692c2d led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0x8d9055f8 gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0x8da01274 kvm_get_pfn +EXPORT_SYMBOL_GPL vmlinux 0x8da5e4a2 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x8db5ebc8 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x8dba8788 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x8dd1c32a sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x8de3b87d ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x8dede96b perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x8df8b894 pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x8dfd5821 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x8e1cd06f kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL vmlinux 0x8e6dab4f fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x8e98ad0b spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8e9c7933 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x8ea9d57e spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x8eb3ab30 default_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x8ebc9040 of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0x8ec5788c ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8ec64bfc srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8eea7c1e user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8eff487a crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x8eff50b5 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x8f222bfe relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x8f38450d rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x8f3d9383 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x8f4c5737 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x8f589a88 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x8f5d314b skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f8a365c ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x8f8e53b9 idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8f902a2c gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0x90057357 usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x900577d4 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0x90228869 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x904b0fce list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0x904ca747 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x90705b7f syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9077d5ea usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90fccaba pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x9101bed1 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x911ddfd7 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x91286982 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x916055e6 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x91646154 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x917708ce irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91c1fec1 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x920cc389 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x92305da3 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x924275fb ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x9252325e regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x92540bef cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x9290b95d ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x92aabb22 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x92bed967 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x92cd04fa perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92f586a2 of_get_named_gen_pool +EXPORT_SYMBOL_GPL vmlinux 0x9301734c xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x930ed9b9 of_usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0x9335e882 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x93460fe1 dm_kill_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0x93734d56 rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x9382eb3a spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x93a0c1ea get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x93d1b184 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x93d721f4 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x93f97801 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x940685ca kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x940f3cba do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x9418eabe usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x9421e295 pskb_put +EXPORT_SYMBOL_GPL vmlinux 0x9428c33d irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x943a14d8 __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x94483b79 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x9460b12f crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x9482c554 __class_create +EXPORT_SYMBOL_GPL vmlinux 0x948583ce wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x94924219 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x949f7342 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x94a68723 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x94d81792 rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0x94d972b7 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x94e46688 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x94fa9521 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x950e88e0 led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x95360c88 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x9585cbae fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x959aed4f sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95fac1d0 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x960040e2 extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0x960e88f0 pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0x96124e62 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x964cf689 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x96881ce9 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x968c1ea4 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x96bf39cb file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x96cd6e90 pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0x96da07a4 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x972985be pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x9730c462 gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x9735f061 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x9745c52a of_fixed_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0x97a22daa ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x97ad8597 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x97b1cefe devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x97b26361 put_pid +EXPORT_SYMBOL_GPL vmlinux 0x97d00295 generic_access_phys +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x98258eab ping_init_sock +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 0x9852204f fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x989ecf5b regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x98a02a70 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x98abca22 flush_fp_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x98c4752e stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0x98cb0d20 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x98e73a81 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98fedabe kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x99046376 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x990ab83d ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x999510cd __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x99c2493f cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x99cebb08 ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0x99ee4212 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a16fe84 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x9a368e55 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x9a49d937 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x9a56cf64 PageHeadHuge +EXPORT_SYMBOL_GPL vmlinux 0x9a6d5de8 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x9a7499c6 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x9a7583a5 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x9a80ef88 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9aad6540 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9ac2e8aa cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0x9aca444b get_monotonic_boottime +EXPORT_SYMBOL_GPL vmlinux 0x9acc5876 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9aec47d2 device_rename +EXPORT_SYMBOL_GPL vmlinux 0x9b003003 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0x9b205985 palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0x9b3b0a15 css_rightmost_descendant +EXPORT_SYMBOL_GPL vmlinux 0x9b46d17e platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x9b4bf0bc crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x9b5d2b17 init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x9b705293 of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x9b7d1784 regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x9ba2bb2b gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x9bb6a2eb ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x9bbc41b5 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x9bc7250b ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x9be36077 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9bf750d7 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x9c3a25ef driver_register +EXPORT_SYMBOL_GPL vmlinux 0x9c5536e8 ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x9c6c0c77 ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0x9c6e8663 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x9c6f98f2 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x9c886141 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x9c976d70 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x9ca35544 skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x9cb4525d fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x9ceef01a tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x9cf4b488 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x9d030b99 stop_machine +EXPORT_SYMBOL_GPL vmlinux 0x9d138533 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x9d1ee070 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x9d2892f7 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x9d33ca2d pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x9d5b9728 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x9d7d628c fsl_rio_mcheck_exception +EXPORT_SYMBOL_GPL vmlinux 0x9dcc6b94 sdhci_pci_o2_probe_slot +EXPORT_SYMBOL_GPL vmlinux 0x9ddc8643 extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9e11ba4c blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x9e125705 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x9e37e8b8 mmput +EXPORT_SYMBOL_GPL vmlinux 0x9e7e04fa ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x9e9336cb driver_find +EXPORT_SYMBOL_GPL vmlinux 0x9ec40e13 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x9ecfbc95 clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9f0664bf dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0x9f07a746 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x9f359fe9 dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0x9f3f98e1 of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x9f675d0f serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x9f7c35fe ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x9fb25c36 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0x9fba5165 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9fedb268 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0xa0208e02 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xa03c62f1 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0xa041e5fb smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xa05d2062 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0xa06ed3e9 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xa083a59f devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xa084003e gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0xa0979893 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0xa0a27fff pci_address_to_pio +EXPORT_SYMBOL_GPL vmlinux 0xa0c0b6c1 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0xa0f95f2f pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0xa0ff9a22 alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0xa1122959 ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xa1179a6c kvm_flush_remote_tlbs +EXPORT_SYMBOL_GPL vmlinux 0xa12c8a39 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0xa12d929d desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0xa155a8c1 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xa172973b sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xa175ed13 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xa179a35f pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0xa17c33e9 device_attach +EXPORT_SYMBOL_GPL vmlinux 0xa1a06112 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0xa1b134ff transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa1c90545 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xa1e9b655 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0xa2054903 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0xa226abd7 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0xa22785d3 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xa2308c4c class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa2484c6a input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0xa261458c usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa272514b mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0xa28aaf29 rh_create +EXPORT_SYMBOL_GPL vmlinux 0xa29e5e54 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0xa2b41eac hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa2e5bd5b pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xa3237228 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xa324a504 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa38daf74 tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0xa392082d ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0xa3963b2b ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3a2d9af walk_system_ram_range +EXPORT_SYMBOL_GPL vmlinux 0xa3b7b107 ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3bbb4fb blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xa3d760c3 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa40b03ea usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0xa41c656e crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xa432890a usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0xa4370753 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0xa43c34c6 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0xa4464df6 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0xa45e70b3 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa4709ef9 system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0xa4761108 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa49cee2b sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0xa4b42ee1 devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xa4ea04ee of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0xa4ef6097 irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0xa51da5d3 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xa53398c4 udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0xa56ca855 tracepoint_iter_stop +EXPORT_SYMBOL_GPL vmlinux 0xa5813472 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0xa5987e58 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0xa59c7999 tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0xa5b00659 ppc_proc_freq +EXPORT_SYMBOL_GPL vmlinux 0xa5cbdad2 serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0xa5d2de11 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5efe460 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xa5f389eb of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xa61e3814 regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0xa620fc5f wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa6646887 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0xa66aa1e7 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xa694e879 kvm_release_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0xa695df3a unregister_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0xa6a0a273 max77693_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xa6a14065 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0xa6abcacb thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0xa6afdbca sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0xa6bab0b5 pwm_config +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6fa55ad usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xa6fb2619 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0xa724257f init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0xa72f7bd5 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xa73698e1 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0xa74a5550 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa75811d0 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0xa7594570 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xa79f2a59 rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0xa7a45b40 __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xa7a4705c hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0xa7e1abd7 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xa7f92105 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0xa816c45e dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0xa81f4d52 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0xa82e3a7c usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xa83b7a91 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0xa84746ae usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa85d852a da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xa8bd3540 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0xa8cb1433 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xa8eed112 thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9057e9b __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0xa9221fbf usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0xa925e478 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0xa93271a5 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xa93575b4 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xa95a480b pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0xa95b16b0 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0xa980af16 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xa985bdce debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xa98a7a6d clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0xa9aef2e1 gfn_to_hva_memslot +EXPORT_SYMBOL_GPL vmlinux 0xa9c1aa1b debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0xa9ce341e usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9f0de53 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0xa9f4cc8d kvm_get_dirty_log +EXPORT_SYMBOL_GPL vmlinux 0xa9f5a914 __clk_register +EXPORT_SYMBOL_GPL vmlinux 0xaa17a2e2 rh_alloc_align +EXPORT_SYMBOL_GPL vmlinux 0xaa1e3a45 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xaa23b46b ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xaa5b744f ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0xaa5faef5 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xaa7a333f rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0xaa99532c ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaaaf98f9 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0xaafd3186 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0xab3e3f9e spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0xab59d373 kvmppc_free_lpid +EXPORT_SYMBOL_GPL vmlinux 0xab5b71de platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab730165 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0xab82947b lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xabb32a61 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0xabbc0dc1 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xabefc3f6 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xac050f10 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0xac6730ba kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL vmlinux 0xac88207d ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0xac94455f device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0xac9992f2 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0xace0eeb1 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xacfe997e powerpc_firmware_features +EXPORT_SYMBOL_GPL vmlinux 0xad0089cb regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0xad039c54 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0xad376749 clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0xad3adeb4 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0xada0a327 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0xadab4882 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0xadb74e84 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae031702 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0xae2554c4 of_clk_src_onecell_get +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xaea12266 dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xaed18dc4 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xaee28b7d regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0xaf484895 rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xaf59802e extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xaf5a1cd7 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0xaf69ce8d ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xaf6b5e46 ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0xaf75e84e kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xaf907626 hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0xafb281ea tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xafd0f010 hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xafda65b4 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xafe00fa5 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0xafec418d kvm_read_guest_page +EXPORT_SYMBOL_GPL vmlinux 0xaff54ee2 pcibios_add_pci_devices +EXPORT_SYMBOL_GPL vmlinux 0xb02413c8 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0xb03d0c73 rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xb04b9379 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0xb075264d yield_to +EXPORT_SYMBOL_GPL vmlinux 0xb0b0713b fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0d1656c gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0xb10d55bc cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb156cd83 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0xb17a266a usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0xb1a7e3f6 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1c0c1c2 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xb1df667c serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1ea4749 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0xb1ff2061 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0xb220ed1e class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb24075f8 dev_get_gen_pool +EXPORT_SYMBOL_GPL vmlinux 0xb2595e8c bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0xb266a978 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xb26b3913 devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xb285fbda gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0xb293c758 list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xb298d048 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0xb29ae363 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0xb2bba67b sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0xb2bd03f4 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xb2c2a1b4 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0xb2c71ef5 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb2dca9bf devres_add +EXPORT_SYMBOL_GPL vmlinux 0xb2e0450b rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xb2f1a77c pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xb3086f4a usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0xb3157ef1 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0xb317acbd irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0xb32ef3ba usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xb339c16c vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0xb347bb2c work_busy +EXPORT_SYMBOL_GPL vmlinux 0xb383c4e3 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xb3864f71 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xb3c8ae4f kobj_completion_init +EXPORT_SYMBOL_GPL vmlinux 0xb3f62e98 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0xb4090929 __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0xb432ac0e ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0xb44c1789 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0xb475c329 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0xb4a8fcc7 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0xb4b85cc7 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb5160d99 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb5893065 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5a6110b nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xb5aa10af atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb5ab99f4 __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0xb5b61c62 of_reset_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xb5c8edf4 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0xb5cb8145 hrtimer_get_res +EXPORT_SYMBOL_GPL vmlinux 0xb5da60f5 netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0xb5dc4aed pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb5f2fc99 scom_find_parent +EXPORT_SYMBOL_GPL vmlinux 0xb5fbbea2 usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xb60b5707 of_i8042_aux_irq +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb6373a2f class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xb643c250 xics_wake_cpu +EXPORT_SYMBOL_GPL vmlinux 0xb6448339 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0xb655fdb5 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0xb672dbba blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0xb67b2219 cm_suspend_again +EXPORT_SYMBOL_GPL vmlinux 0xb67cf690 regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6b69939 usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0xb6c635af wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xb73347e9 crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0xb75d103e fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0xb77ff400 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0xb786e77d percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb81faee1 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xb8a19799 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xb8ad9664 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xb8b76950 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0xb8eefa00 stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0xb8ff9ebe sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb9094fe5 cred_to_ucred +EXPORT_SYMBOL_GPL vmlinux 0xb93f9ccd ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0xb98cdca9 pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0xb995e480 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0xb99e6f47 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9bc3754 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9ef4033 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0xba089f2b dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xba2d3c61 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0xba74b105 adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xba9abde0 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0xbaacec45 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0xbade0ce9 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0xbaf0e78a dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0a5be8 kvm_read_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0xbb0a84b6 blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb0c0d49 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0xbb2ad199 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0xbb2dda7d usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xbb465b3a __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0xbb51cc12 dev_hard_start_xmit +EXPORT_SYMBOL_GPL vmlinux 0xbb6ba688 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0xbb885753 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0xbbcaab4b tpm_show_enabled +EXPORT_SYMBOL_GPL vmlinux 0xbbce08d3 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0xbbf5adb2 device_add +EXPORT_SYMBOL_GPL vmlinux 0xbc0b8c64 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0xbc282a31 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0xbc5176ad dm_underlying_device_busy +EXPORT_SYMBOL_GPL vmlinux 0xbc52ffc5 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0xbc5ab62c skb_segment +EXPORT_SYMBOL_GPL vmlinux 0xbc6bf0aa usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcc4faaf tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xbcddb734 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0xbcdfd022 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xbd113a23 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0xbd135524 skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0xbd18380d sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0xbd22998b mddev_init +EXPORT_SYMBOL_GPL vmlinux 0xbd2aafd9 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0xbd2d0fa5 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd73135b bio_trim +EXPORT_SYMBOL_GPL vmlinux 0xbd943fa6 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0xbda9d1ba crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbdaf5686 get_compat_timeval +EXPORT_SYMBOL_GPL vmlinux 0xbdd05b74 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbe0d578f usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0xbe0dfddb tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xbe1222ec subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe4159ac eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0xbe50f11d ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xbe6e2c8c ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0xbe79ad10 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xbe866d5a stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xbe96dfd8 of_reconfig_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbe9a9167 wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0xbea3b445 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbebaa0a6 of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xbed61aa2 driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xbeea29cd ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf0ab35e thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0xbf1cc04b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xbf282d44 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0xbf2ebe42 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xbf356a01 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0xbf3a69b0 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xbf5176bb pcibios_remove_pci_devices +EXPORT_SYMBOL_GPL vmlinux 0xbf748503 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0xbf7e0f68 ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0xbfa3cd30 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbfc18af5 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0xbfc9c258 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0xbfda5597 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0xbffcf5c8 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0xc0129769 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0xc013f757 pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xc02bec3c usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc04dd430 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0xc061367e mpic_msgr_get +EXPORT_SYMBOL_GPL vmlinux 0xc065a455 cpu_core_index_of_thread +EXPORT_SYMBOL_GPL vmlinux 0xc0666976 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0xc06aea02 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0xc06c9992 device_del +EXPORT_SYMBOL_GPL vmlinux 0xc07f80d6 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0xc083410f usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc08cfdd8 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc09b2dc6 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0xc0bf6ead timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xc0ced72d unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xc0d01bc0 percpu_ref_cancel_init +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0e69dc3 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0xc0ec41c9 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0xc0ed2976 netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0xc0f03dcd need_load_eval +EXPORT_SYMBOL_GPL vmlinux 0xc10c7192 cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0xc11b45c6 gpiod_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xc11bd00f tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc14d2a52 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0xc1647dcc hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0xc16c87d3 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc17ea5d8 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0xc19c1b7b tpm_show_durations +EXPORT_SYMBOL_GPL vmlinux 0xc1c3f027 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0xc1dd9696 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0xc1e329e6 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0xc20c298a __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0xc216e5d1 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xc21c5f6d usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc22eee5c sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0xc246f2a7 devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc2a86122 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0xc2c25342 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc2c53e0b user_describe +EXPORT_SYMBOL_GPL vmlinux 0xc2ebbc1d verify_signature +EXPORT_SYMBOL_GPL vmlinux 0xc2ff2a12 sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc3487527 sk_unattached_filter_create +EXPORT_SYMBOL_GPL vmlinux 0xc34efe27 snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc3925554 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0xc39dcb64 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xc3a4516f dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0xc3bc9d22 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0xc3c6c9cc hrtimer_start +EXPORT_SYMBOL_GPL vmlinux 0xc3da922e regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xc3e53e15 filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xc3f85900 balloon_devinfo_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc407a1d4 gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0xc41150ee pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xc4138b78 input_class +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc42c1e50 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0xc42db4e0 pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0xc42defa7 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xc450523f regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc4815035 subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc49f52fc clk_register +EXPORT_SYMBOL_GPL vmlinux 0xc49f5a22 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xc4a137da regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xc4a16a61 unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xc4c65fda input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0xc5013706 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xc50d3cbd kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0xc53653cc ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0xc53e33f8 dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xc53f6714 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc59f2e45 inet_csk_reqsk_queue_prune +EXPORT_SYMBOL_GPL vmlinux 0xc60f75ec __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc63a1109 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xc6407778 cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xc64a1072 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0xc6511834 pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc68aa252 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc690866c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xc6949e08 vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc69e9dc6 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0xc6a82af0 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0xc6b1e899 crypto_rng_type +EXPORT_SYMBOL_GPL vmlinux 0xc6e25e99 tracepoint_iter_start +EXPORT_SYMBOL_GPL vmlinux 0xc6fb2fe3 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0xc70259bf da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xc70e4b59 kvmppc_claim_lpid +EXPORT_SYMBOL_GPL vmlinux 0xc7110257 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xc7181214 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc727cfad da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc72efa7d clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0xc734caa9 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0xc748e3d9 kvm_is_visible_gfn +EXPORT_SYMBOL_GPL vmlinux 0xc7759140 sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xc77c0a6c regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0xc782c195 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7c317e4 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7d674df usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0xc7db2a78 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc7ff5062 alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0xc80272bd usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0xc80eb466 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0xc82bd6ad irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0xc8390255 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0xc83d4e4e regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0xc8494090 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0xc85f405c security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xc8709409 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc8990733 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0xc8991962 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0xc8a35681 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8b72ea9 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0xc8c7b62f bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0xc8e51cbe ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0xc8e83df8 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0xc8f1fd31 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0xc8f787af __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc9163e8a percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0xc9332d86 regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0xc94a55ca rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc95d670a anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0xc9641b48 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0xc97d1140 cpufreq_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0xc986bd19 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0xc9ce3329 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0xc9cfa97f of_pci_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xca2c695c sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0xca6596d5 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca82d902 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0xca85d8cf tracepoint_probe_update_all +EXPORT_SYMBOL_GPL vmlinux 0xca8e561a sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xca8e97bd perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0xca946187 of_clk_add_provider +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcabe84be irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0xcaca1d12 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xcad5bd18 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0xcadce151 regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0xcae87887 devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0xcaf3cec9 preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcaf76c1c cpu_remove_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb4c0e32 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0xcb6e865c shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xcb9b162e clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0xcbbb53bb dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xcbcbba3b register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xcbecbf74 cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcbfb8df9 cgroup_load_subsys +EXPORT_SYMBOL_GPL vmlinux 0xcc1f1c3d inet_twdr_hangman +EXPORT_SYMBOL_GPL vmlinux 0xcc2f18ba ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0xcc3cf134 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0xcc44961f kvmppc_alloc_lpid +EXPORT_SYMBOL_GPL vmlinux 0xcc6e5424 use_mm +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcc8c4990 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xcc99ec4a __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0xccc7d480 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xcd09322c ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xcd1f1921 swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0xcd29777a pci_sriov_migration +EXPORT_SYMBOL_GPL vmlinux 0xcd2daa97 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xcd769cfb regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcda65837 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xcdaf4cb4 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0xcdbf3cf4 inet_csk_compat_getsockopt +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcdeaae52 rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0xce0b9b59 max77693_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xce12f8ba cgroup_taskset_first +EXPORT_SYMBOL_GPL vmlinux 0xce3a5d3d clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xce4121ac fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0xce46e140 ktime_get_ts +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce767931 pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xceb1f126 mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcefce5c2 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0xcf33ebfe ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xcf4e21f1 mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf68a5ec clockevents_unbind +EXPORT_SYMBOL_GPL vmlinux 0xcf6cd4bb __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0xcfa39eca __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcfbcb260 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfd8e758 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xcfdc044a fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd06349b0 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd07c47d6 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0e32c9e ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0eb49eb platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd11c04f4 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xd143cf89 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0xd14bc4d9 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xd14c7ab1 public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd1a909cd rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd1abace6 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0xd1b2db37 tracepoint_probe_register_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd21525ae powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd258217d clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0xd265fc6a list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd277458c tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0xd29c050e of_scan_bus +EXPORT_SYMBOL_GPL vmlinux 0xd2c45ea4 of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0xd2cb3493 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0xd2cfc23f driver_attach +EXPORT_SYMBOL_GPL vmlinux 0xd2f77828 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xd32fe193 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xd3845700 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xd388b670 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xd399df84 __module_address +EXPORT_SYMBOL_GPL vmlinux 0xd39ae82d dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0xd3ad3262 devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xd3ba697f rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0xd3c1db1b inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xd3cddfc9 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4272bf1 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xd42a4e1b fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd4673c0a sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0xd46edbda sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xd46f6001 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xd4974257 pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xd49b98c8 irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0xd49fc61a stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0xd4abc8cb rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0xd4b8635e regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4cad45e clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0xd4df034f simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0xd4f11233 pci_pri_enabled +EXPORT_SYMBOL_GPL vmlinux 0xd522ce74 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0xd5251880 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xd582227a leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5ccf7c6 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0xd5d0b4f7 gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xd5dc4982 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xd5e226b0 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xd6001369 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xd61037cc sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xd620465f rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0xd6323bba kvmppc_kvm_pv +EXPORT_SYMBOL_GPL vmlinux 0xd6400ec7 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0xd65586d3 usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd6c31411 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0xd6e48259 kvmppc_sanity_check +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd70ebf5f usb_string +EXPORT_SYMBOL_GPL vmlinux 0xd73a42bf tpm_dev_vendor_release +EXPORT_SYMBOL_GPL vmlinux 0xd7473cb7 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd76a61f3 tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0xd77a86dc tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd77dead8 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0xd79507dd sdhci_pci_o2_resume +EXPORT_SYMBOL_GPL vmlinux 0xd79a023f fb_sys_write +EXPORT_SYMBOL_GPL vmlinux 0xd79ca393 sysfs_get_dirent_ns +EXPORT_SYMBOL_GPL vmlinux 0xd79daae2 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0xd79dec94 blk_queue_bio +EXPORT_SYMBOL_GPL vmlinux 0xd80c2071 cpufreq_frequency_table_target +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 0xd82d4add ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0xd8448b6d edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0xd84cb3e8 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd889acd9 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd90d2f44 kvm_clear_guest +EXPORT_SYMBOL_GPL vmlinux 0xd9195158 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0xd93058f7 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0xd93f5ee4 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xd93f6fe2 pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd981cc1b dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0xd998661d crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0xd9a34035 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0xd9beb8aa fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0xd9cde59d unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda097122 __clocksource_updatefreq_scale +EXPORT_SYMBOL_GPL vmlinux 0xda0a4d22 mpic_msgr_enable +EXPORT_SYMBOL_GPL vmlinux 0xda207a9a usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xda35a09a uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xda3bf119 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0xda3cf6e7 irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0xda44cb37 setup_charger_manager +EXPORT_SYMBOL_GPL vmlinux 0xda556210 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0xda8cb2e5 threads_core_mask +EXPORT_SYMBOL_GPL vmlinux 0xda91ccef crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0xdac74cac handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0xdae61720 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xdaef9cc2 fb_sys_read +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdaf82efe sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0xdb04cacc tracepoint_probe_unregister_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xdb0c35fe blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0xdb10caab power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0xdb1d2867 tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0xdb277a1c rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdb5f172d rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb8edda0 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xdba80fc1 of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0xdbe00dda xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0xdbee6e75 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc15b250 devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xdc1e15f1 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0xdc4e5c57 ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0xdc5c3dda usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0xdc7993ab scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0xdc7daba5 uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc83ac87 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0xdc9405f9 of_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdcb55008 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0xdccb12c7 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdcf9b75e regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0xdd0da25e fsnotify +EXPORT_SYMBOL_GPL vmlinux 0xdd157d9e generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd39e020 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0xdd502399 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0xdd50c144 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0xdd67dc05 pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xdd71a2f7 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0xdd729424 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xdd7bcd3b usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0xdd89c408 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xde1b2526 regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0xde32641b tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xde489cd9 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0xde92c24c regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0xdea9e890 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0xdedd8167 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0xdef0f092 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0xdf085589 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf19a0bf class_destroy +EXPORT_SYMBOL_GPL vmlinux 0xdf1cada9 extcon_find_cable_index +EXPORT_SYMBOL_GPL vmlinux 0xdf2e8940 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0xdf41a98a regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xdf669f3c drop_cop +EXPORT_SYMBOL_GPL vmlinux 0xdf86bf7d devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0xdfa35cb2 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xdfa4d39d __put_net +EXPORT_SYMBOL_GPL vmlinux 0xdfa93cef scom_controller +EXPORT_SYMBOL_GPL vmlinux 0xdfae924b power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0xdfc8feff usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xdfcdc0b5 agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xdffa3e29 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe025ea3a regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0xe02e49a5 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe036b3e9 mpic_msgr_put +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe0ea96ef devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0xe16f7933 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe18280c0 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0xe188310c css_next_descendant_post +EXPORT_SYMBOL_GPL vmlinux 0xe1888380 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0xe19eb1c4 percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1c32794 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0xe1f87b53 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0xe20a861b cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xe26391e6 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0xe265ae55 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0xe26c72ba perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0xe26c7fd6 regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xe28751b5 kvm_irq_has_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe2917f74 kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL vmlinux 0xe2b14fdc blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0xe2dadfd5 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe33596f2 tpm_show_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xe34fa792 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0xe35bbaac rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe391036a module_mutex +EXPORT_SYMBOL_GPL vmlinux 0xe3ab3000 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0xe3af0e23 ping_err +EXPORT_SYMBOL_GPL vmlinux 0xe3d7750e btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0xe3ed49fb rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xe412f159 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0xe418bc0b fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0xe44afb78 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xe44cb35a ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0xe45785d7 __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xe47b9565 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0xe4970fac simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0xe4a6a82c rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0xe4c031f8 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xe4c4b28f gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xe4c94146 tcp_reno_min_cwnd +EXPORT_SYMBOL_GPL vmlinux 0xe4d90192 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0xe4dd1c64 thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0xe510301a __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe510d008 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0xe51b1bda tpm_release +EXPORT_SYMBOL_GPL vmlinux 0xe51c040f register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xe52ae762 __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0xe54bb19d rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0xe54c3af1 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0xe5540302 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xe5672abf i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xe567c8cb scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0xe578491b elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5904390 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0xe5b68a5c alarm_init +EXPORT_SYMBOL_GPL vmlinux 0xe5bf9bbd md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0xe5ceac06 dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0xe63f200a platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0xe649387a sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe6b8c214 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6c91e03 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe6d2f1d6 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe7112e53 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0xe72faab5 devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xe7371320 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0xe737ef46 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0xe73846d9 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0xe75b4423 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0xe75ceb7f ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe7726249 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0xe77ce2ad tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xe7842855 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe785f97f regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0xe7cffca4 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0xe7d90eb5 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0xe7fa9e4f gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe802cbd7 devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe85c55e7 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe89bd243 ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe8b6ddde key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0xe8e8fb96 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe9407726 irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xe9750a4d exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0xe97810e0 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0xea1156d4 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea289c78 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0xea38323c simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea553fdf platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0xea628c20 bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0xea87e99b device_initialize +EXPORT_SYMBOL_GPL vmlinux 0xea8a8d2d pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0xeac33c3e clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0xeae1b5eb sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xeb083bdc fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0xeb1c3628 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xeb2032d8 usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0xeb2590a9 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xeb32c0b8 ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xeb4ffabf crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0xeb6295bf rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xeb665d32 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0xeb886248 pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0xeb8ae736 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xeb9a2afa xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0xeba36192 of_pci_msi_chip_add +EXPORT_SYMBOL_GPL vmlinux 0xebb0fd09 devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xebb27e4d cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xebc6c49b get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0xebd15b7d power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0xebd319f4 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0xebd89502 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xec1a8be0 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec26e000 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0xec2ea18b ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0xec3ec01f tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0xec4605f2 put_device +EXPORT_SYMBOL_GPL vmlinux 0xec546d73 key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0xec6ce5ef evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0xec82b52d pwm_free +EXPORT_SYMBOL_GPL vmlinux 0xeceb8f6a PageHuge +EXPORT_SYMBOL_GPL vmlinux 0xecf5bb4f usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0xecf757b0 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0xed1257eb register_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0xed2fc9c6 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0xed5ffad3 rtc_set_mmss +EXPORT_SYMBOL_GPL vmlinux 0xed7e7953 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xed8442fc max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xedb42ae6 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0xedb69740 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0xedbe0c00 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xedc61037 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0xedd49930 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0xee275f0b platform_bus +EXPORT_SYMBOL_GPL vmlinux 0xee5e56a9 ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee8da4ca kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xeeba924a ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xeec93d50 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0xeecf5add rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0xeee825f3 napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xeeeac410 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0xeeff4630 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xef0b9fb8 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xef2da55f regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xef45b899 ftrace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef8b593f pci_pri_status +EXPORT_SYMBOL_GPL vmlinux 0xef934550 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0xefc29de2 pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0xefc81fe0 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0xefdc205b regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefe3a08d crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0xeff8400b __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xeffa6b8f __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0xf039bc94 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0xf068f542 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xf071bdec xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0xf09ec672 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0xf0d9fc23 cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0xf0da103c rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xf0ee1fba sec_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf14345c7 d_materialise_unique +EXPORT_SYMBOL_GPL vmlinux 0xf14ab442 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0xf158f170 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0xf1711a40 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf186e09c usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0xf1a62b6f of_i8042_kbd_irq +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1c08437 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0xf1c2bcfc pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0xf1de4791 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xf1e4b9fa mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xf208ae7a ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf223546c trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0xf234da85 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf2837bf6 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0xf2acceee __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0xf2e1e633 regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0xf2f077cc pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf3012f6c rh_free +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf35da55d led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0xf3869622 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0xf3af2512 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3c6d64d i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xf3ed32cf subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0xf404dfec iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0xf4050417 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0xf42a2c8d sysfs_get +EXPORT_SYMBOL_GPL vmlinux 0xf434e9e9 pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xf43905f6 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0xf43fe338 arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0xf47b6de8 iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0xf47be612 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0xf47e1406 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4da3546 kvmppc_init_lpid +EXPORT_SYMBOL_GPL vmlinux 0xf4ea5ff8 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf536f6b2 rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf57f9736 i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0xf582ec7e crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0xf58c8c9e input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5abcdfc crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0xf5bcf1b2 __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0xf5c02b53 tpm_show_temp_deactivated +EXPORT_SYMBOL_GPL vmlinux 0xf5e7f053 rh_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf5fbb56c __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xf5fef4e3 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf60b1d6a gfn_to_pfn_prot +EXPORT_SYMBOL_GPL vmlinux 0xf62e02eb tpm_show_owned +EXPORT_SYMBOL_GPL vmlinux 0xf637d8a2 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0xf6803591 tpm_show_active +EXPORT_SYMBOL_GPL vmlinux 0xf680f91b tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0xf69389d7 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xf699ee0c pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0xf6d26b39 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf719bfd2 of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0xf71b1380 of_get_dma_window +EXPORT_SYMBOL_GPL vmlinux 0xf7237c14 scom_map_device +EXPORT_SYMBOL_GPL vmlinux 0xf73528c3 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0xf73de62f sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0xf768d851 rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0xf7a15e80 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0xf7b550c1 rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xf811c4ee vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0xf8160885 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0xf816c866 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf837e0eb unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xf83e19e6 rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0xf866a2ab fb_ddc_read +EXPORT_SYMBOL_GPL vmlinux 0xf86e12c3 devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf8bb014c mmc_app_cmd +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 0xf90709b2 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xf9154bff inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0xf9231e68 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0xf9248c45 pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf932094a da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf9933c03 reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9ab11e9 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0xf9b45b36 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0xf9c2fcc8 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9d2611b alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0xf9fc576e sec_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xfa0056c4 inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xfa012fe7 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa2fd00a relay_reset +EXPORT_SYMBOL_GPL vmlinux 0xfa339a16 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xfa392d9f perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0xfa5e34e1 kvmppc_pr_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa901b31 compat_get_timespec +EXPORT_SYMBOL_GPL vmlinux 0xfaaf953e debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0xfab60503 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xfab9cbf8 pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xfb22bc6c cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0xfb25f3da __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb4ed613 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xfb52b77d __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0xfb6a4330 regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb945f00 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xfbbedefd of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0xfbf77576 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc07f222 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0xfc09d06e platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0xfc1fc988 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0xfc201b66 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0xfc21793b ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0xfc33eb7b devres_find +EXPORT_SYMBOL_GPL vmlinux 0xfc3cd9b4 apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0xfc4bd5df sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0xfc4d8523 swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0xfc64921b fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0xfc72d987 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0xfc941627 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xfca27360 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xfcc586b0 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfcf010fe devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xfcf9c00c usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0xfcfe52bc dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0xfd10d640 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xfd1e2c55 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xfd48a367 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0xfd4b349d __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0xfd8a29b7 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0xfd98d4a7 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0xfd9ce05c sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xfdb5dd76 thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0xfdf44884 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0xfe1fa0db of_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xfe29263e ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xfe370ae4 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfeb26cf8 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfee63ff8 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0xfef285ec sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xfefc05e7 gfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0xff4fb6e8 nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0xff597520 kvm_get_kvm +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff6a2c8e wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0xff6a3ae2 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xff8862d7 rh_get_stats +EXPORT_SYMBOL_GPL vmlinux 0xff8d22b7 ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0xffa0f5c9 cgroup_taskset_next +EXPORT_SYMBOL_GPL vmlinux 0xffb72056 cpufreq_generic_init --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/powerpc/powerpc64-emb.compiler +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/powerpc/powerpc64-emb.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4 --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/powerpc/powerpc64-emb.modules +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/powerpc/powerpc64-emb.modules @@ -0,0 +1,3638 @@ +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250_dw +8250_pci +8255 +8255_pci +8390 +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm860x-ts +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +9p +9pnet +9pnet_rdma +9pnet_virtio +DAC960 +a100u2w +a3d +a8293 +aacraid +aat2870-regulator +aat2870_bl +ab3100 +ab3100-otp +ac97_bus +acard-ahci +acecad +acenic +act200l-sir +act_csum +act_gact +act_ipt +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +actisys-sir +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 +ad5930 +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 +ad9850 +ad9852 +ad9910 +ad9951 +ad_sigma_delta +adcxx +addi_apci_035 +addi_apci_1032 +addi_apci_1500 +addi_apci_1516 +addi_apci_1564 +addi_apci_16xx +addi_apci_2032 +addi_apci_2200 +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 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1275 +adm8211 +adm9240 +adp5520-keys +adp5520_bl +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +ads1015 +ads7828 +ads7846 +ads7871 +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adv7180 +adv_pci1710 +adv_pci1723 +adv_pci1724 +adv_pci_dio +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +af-rxrpc +af9013 +af9033 +af_802154 +af_alg +af_key +af_packet_diag +affs +ah4 +ah6 +aha152x_cs +ahci +ahci_platform +aic79xx +aic7xxx +aic94xx +aiptek +aircable +airo +airo_cs +ak8975 +algif_hash +algif_skcipher +ali-ircc +alim7101_wdt +alphatrack +altera-ci +altera-stapl +altera_jtaguart +altera_ps2 +altera_uart +alx +amc6821 +amd5536udc +amd8111e +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pci224 +amplc_pci230 +amplc_pci263 +ams369fg06 +analog +anatop-regulator +ansi_cprng +anubis +aoe +apbps2 +apds9300 +apds9802als +apds990x +appledisplay +appletalk +appletouch +applicom +ar5523 +ar7part +arc-rawmode +arc-rimi +arc4 +arc_emac +arc_ps2 +arc_uart +arcmsr +arcnet +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arp_tables +arpt_mangle +arptable_filter +as3711-regulator +as3711_bl +as3722-regulator +as5011 +asc7621 +asix +ast +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at86rf230 +at91_ether +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-pwm-bl +atmel-rng +atmel-ssc +atmel_cs +atmel_mxt_ts +atmel_pci +atmel_pwm +atmtcp +atp870u +atxp1 +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo-pixcir-ts +auo_k1900fb +auo_k1901fb +auo_k190x +auth_rpcgss +authenc +authencesn +autofs4 +avm_cs +avma1_cs +avmfritz +ax25 +ax88179_178a +axnet_cs +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 +bcm5974 +bcm_wimax +bcma +bcma-hcd +bd6107 +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluecard_cs +bluetooth +bma150 +bma180 +bman_debugfs_interface +bmp085 +bmp085-i2c +bmp085-spi +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bonding +booke_wdt +bpa10x +bpck +bpctl_mod +bpqether +bq2415x_charger +bq24190_charger +bq24735-charger +bq27x00_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +broadsheetfb +bsd_comp +bt3c_cs +bt878 +btcoexist +btcx-risc +btmrvl +btmrvl_sdio +btmtk_usb +btrfs +btsdio +bttv +btuart_cs +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +bw-qcam +bypass +c-qcam +c4 +c67x00 +c_can +c_can_pci +c_can_platform +caam +caam_jr +caamalg +caamhash +caamrng +cachefiles +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 +cc770 +cc770_isa +cc770_platform +cciss +ccm +cdc-acm +cdc-phonet +cdc-wdm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc_subset +cedusb +ceph +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chipreg +chnl_net +ci_hdrc +ci_hdrc_imx +ci_hdrc_msm +ci_hdrc_pci +cifs +cirrus +cirrusfb +clearpad_tm1217 +clip +clk-max77686 +clk-s2mps11 +clk-si5351 +clk-twl6040 +clk-wm831x +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm36651 +cm4000_cs +cm4040_cs +cma3000_d0x +cma3000_d0x_i2c +cmac +cmdlinepart +cmtp +cnic +cobra +coda +com20020 +com20020-pci +com20020_cs +com90io +com90xx +comedi +comedi_bond +comedi_fc +comedi_parport +comedi_test +comm +configfs +contec_pci_dio +cordic +core +cp210x +cpc925_edac +cpia2 +cramfs +crc-ccitt +crc-itu-t +crc32 +crc7 +crc8 +cros_ec +cros_ec_i2c +cros_ec_keyb +cros_ec_spi +cryptd +crypto_null +crypto_user +cryptoloop +crystalhd +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 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx8800 +cx8802 +cx88xx +cxacru +cxd2099 +cxd2820r +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cxt1e1 +cy8ctmg110_ts +cyapa +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-hwmon +da9052-regulator +da9052_bl +da9052_onkey +da9052_tsi +da9052_wdt +da9055-hwmon +da9055-regulator +da9055_onkey +da9055_wdt +da9063-regulator +da9210-regulator +daqboard2000 +das08 +das08_cs +das08_pci +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 +dgrp +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +diskonchip +diva_idi +diva_mnt +divacapi +divadidd +divas +dl2k +dlci +dlm +dm-bio-prison +dm-bufio +dm-cache +dm-cache-cleaner +dm-cache-mq +dm-crypt +dm-delay +dm-flakey +dm-log +dm-log-userspace +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 +dm1105 +dm9601 +dmfe +dmx3191d +dn_rtmsg +dnet +docg3 +docg4 +dpa_uio +drbd +drm +drm_kms_helper +drm_usb +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsa_core +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +dt3000 +dt3155v4l +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-dw2102 +dvb-usb-ec168 +dvb-usb-friio +dvb-usb-gl861 +dvb-usb-gp8psk +dvb-usb-it913x +dvb-usb-lmedm04 +dvb-usb-m920x +dvb-usb-mxl111sf +dvb-usb-nova-t-usb2 +dvb-usb-opera +dvb-usb-pctv452e +dvb-usb-rtl28xxu +dvb-usb-technisat-usb2 +dvb-usb-ttusb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +dvb_usb_v2 +dw_dmac +dw_dmac_core +dw_dmac_pci +dwc2 +dwc2_pci +dwc2_platform +dwc3 +dwc3-pci +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e4000 +earth-pt1 +eata +ebt_802_3 +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ec100 +echo +edac_core +edt-ft5x06 +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efs +egalax_ts +ehset +elo +elsa_cs +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em_canid +em_cmp +em_ipset +em_meta +em_nbyte +em_text +em_u32 +emc1403 +emc2103 +emc6w201 +emi26 +emi62 +empeg +ems_pci +ems_pcmcia +ems_usb +emu10k1-gp +enc28j60 +enclosure +eni +enic +epat +epia +epic100 +eql +esas2r +esd_usb2 +esi-sir +esp4 +esp6 +et131x +ethoc +evbug +exofs +extcon-adc-jack +extcon-arizona +extcon-gpio +extcon-max77693 +extcon-max8997 +extcon-palmas +ezusb +f2fs +f75375s +f81232 +fakelb +fan53555 +farsync +faulty +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 +fld +flexcan +floppy +fm801-gp +fm_drv +fmc +fmc-chardev +fmc-fakedev +fmc-trivial +fmc-write-eeprom +fmvj18x_cs +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +freevxfs +friq +frpw +fsa9480 +fscache +fsl-diu-fb +fsl_elbc_nand +fsl_hypervisor +fsl_ifc_nand +fsl_pq_mdio +fsl_usb2_udc +fsldma +ft1000 +ft1000_pcmcia +ftdi-elan +ftdi_sio +ftl +fujitsu_ts +fusbh200-hcd +g450_pll +g760a +g762 +g_acm_ms +g_audio +g_cdc +g_dbgp +g_ether +g_ffs +g_hid +g_mass_storage +g_midi +g_ncm +g_nokia +g_printer +g_serial +g_webcam +g_zero +gadgetfs +gamecon +gameport +garmin_gps +garp +gcm +gdmtty +gdmulte +gdmwm +gdth +gen_probe +generic +generic-adc-battery +generic_bl +gf128mul +gf2k +gfs2 +ghash-generic +gianfar_driver +gianfar_ptp +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +go7007 +go7007-loader +go7007-usb +goku_udc +goldfishfb +gp2ap002a00f +gp2ap020a00f +gpio +gpio-74x164 +gpio-addr-flash +gpio-adnp +gpio-adp5520 +gpio-adp5588 +gpio-amd8111 +gpio-arizona +gpio-charger +gpio-da9052 +gpio-da9055 +gpio-dwapb +gpio-fan +gpio-generic +gpio-grgpio +gpio-ir-recv +gpio-janz-ttl +gpio-kempld +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio-pca953x +gpio-pcf857x +gpio-rdc321x +gpio-regulator +gpio-tps65912 +gpio-ts5500 +gpio-twl4030 +gpio-twl6040 +gpio-ucb1400 +gpio-viperboard +gpio-vx855 +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +gpio_backlight +gpio_keys +gpio_keys_polled +gpio_mouse +gpio_tilt_polled +grcan +gre +grip +grip_mp +gsc_hpdi +gspca_benq +gspca_conex +gspca_cpia1 +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_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gtco +guillemot +gunze +gxt4500 +hamachi +hampshire +hangcheck-timer +hanwang +hci +hci_uart +hci_vhci +hdlc +hdlc_cisco +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdlcdrv +hdpvr +he +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfc_usb +hfcmulti +hfcpci +hfcsusb +hfs +hfsplus +hid +hid-a4tech +hid-apple +hid-appleir +hid-aureal +hid-axff +hid-belkin +hid-cherry +hid-chicony +hid-cypress +hid-dr +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-generic +hid-gyration +hid-holtek-kbd +hid-holtek-mouse +hid-holtekff +hid-huion +hid-icade +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-lenovo-tpkbd +hid-logitech +hid-logitech-dj +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hid-petalynx +hid-picolcd +hid-pl +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-gyro-3d +hid-sensor-hub +hid-sensor-iio-common +hid-sensor-magn-3d +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-wacom +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hidp +hih6130 +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hmc5843 +hmc6352 +hopper +hostap +hostap_cs +hostap_pci +hostap_plx +hp100 +hpfs +hpilo +hpsa +hptiop +hsi +hsi_char +hso +hsr +htc-pasic3 +htu21 +huawei_cdc_ncm +hwa-hc +hwa-rc +hwmon-vid +hx8357 +hysdn +i1480-dfu-usb +i1480-est +i2400m +i2400m-usb +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd8111 +i2c-arb-gpio-challenge +i2c-cbus-gpio +i2c-designware-core +i2c-designware-pci +i2c-designware-platform +i2c-dev +i2c-diolan-u2c +i2c-eg20t +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-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 +i2o_block +i2o_bus +i2o_core +i2o_proc +i2o_scsi +i40e +i40evf +i5k_amb +i6300esb +i740fb +i82092 +ib_addr +ib_cm +ib_core +ib_ipoib +ib_iser +ib_isert +ib_mad +ib_mthca +ib_qib +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +ibmaem +ibmpex +icp_multi +ics932s401 +idmouse +idt77252 +ieee802154 +ifb +iforce +igb +igbvf +iguanair +iio-trig-interrupt +iio-trig-periodic-rtc +iio-trig-sysfs +iio_dummy +iio_hwmon +ili210x +ili922x +ili9320 +imm +imon +ims-pcu +imx074 +imx_thermal +ina209 +ina2xx +industrialio +industrialio-triggered-buffer +inet_diag +inexio +inftl +initio +input-polldev +int51x1 +intel_vr_nor +interact +interval_tree_test +inv-mpu6050 +io_edgeport +io_ti +ioc4 +iowarrior +ip6_gre +ip6_tables +ip6_tunnel +ip6_vti +ip6t_MASQUERADE +ip6t_NPT +ip6t_REJECT +ip6t_SYNPROXY +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_mh +ip6t_rpfilter +ip6t_rt +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6table_security +ip_gre +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netnet +ip_set_hash_netport +ip_set_hash_netportnet +ip_set_list_set +ip_tables +ip_tunnel +ip_vs +ip_vs_dh +ip_vs_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 +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ipg +iphase +ipheth +ipip +ipmi_devintf +ipmi_poweroff +ipmi_si +ipmi_watchdog +ipoctal +ipr +ips +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_SYNPROXY +ipt_ULOG +ipt_ah +ipt_rpfilter +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +iptable_security +ipw +ipw2100 +ipw2200 +ipwireless +ipx +ir-jvc-decoder +ir-kbd-i2c +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +ir-rc5-decoder +ir-rc5-sz-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sony-decoder +ir-usb +ircomm +ircomm-tty +irda +irda-usb +irlan +irnet +irtty-sir +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isofs +isp116x-hcd +isp1362-hcd +isp1704_charger +isp1760 +it913x-fe +itd1000 +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iw_nes +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsm +kafs +kalmia +kaweth +kbic +kbtab +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keucr +keyspan +keyspan_pda +keyspan_remote +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +ko2iblnd +kobil_sct +ks0108 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksocklnd +ksz884x +ktti +kvaser_pci +kvaser_usb +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 +leds-88pm860x +leds-adp5520 +leds-atmel-pwm +leds-bd2802 +leds-blinkm +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-lm3530 +leds-lm3533 +leds-lm355x +leds-lm3642 +leds-lp3944 +leds-lp5521 +leds-lp5523 +leds-lp5562 +leds-lp55xx-common +leds-lp8501 +leds-lp8788 +leds-lt3593 +leds-max8997 +leds-mc13783 +leds-ot200 +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pca9685 +leds-pwm +leds-regulator +leds-tca6507 +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-oneshot +ledtrig-timer +ledtrig-transient +legousbtower +lg-vl600 +lg2160 +lgdt3305 +lgdt330x +lgs8gxx +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +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 +libsrp +lightning +line6usb +lineage-pem +linear +lirc_bt829 +lirc_dev +lirc_igorplugusb +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +litelink-sir +lkkbd +ll_temac +llc +llc2 +llog_test +lm25066 +lm3533-als +lm3533-core +lm3533-ctrlbank +lm3533_bl +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 +lov +lp +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp8755 +lp8788-charger +lp8788_bl +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc2978 +ltc4151 +ltc4215 +ltc4245 +ltc4261 +ltv350qv +lustre +lv5207lp +lvfs +lz4 +lz4_compress +lz4hc +lz4hc_compress +m25p80 +m2m-deinterlace +m52790 +m88rs2000 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +ma600-sir +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +mac80211 +mac80211_hwsim +mac802154 +mac_hid +macb +macvlan +macvtap +mag3110 +magellan +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +matrix-keymap +matrix_keypad +matrox_w1 +matroxfb_DAC1064 +matroxfb_Ti3026 +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +max1111 +max11801_ts +max1363 +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max2165 +max3100 +max34440 +max517 +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77686 +max77693 +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925-regulator +max8925_bl +max8925_onkey +max8925_power +max8952 +max8973-regulator +max8997 +max8997_charger +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 +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp4725 +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdc +mdc800 +mdio +me4000 +me_daq +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mem2mem_testdev +memstick +mena21_wdt +metro-usb +metronomefb +mfd +mga +mgc +michael_mic +microread +microread_i2c +microtek +mii +minix +mip6 +mite +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mma8450 +mmc_block +mmc_spi +mms114 +mos7720 +mos7840 +moxa +mpoa +mpr121_touchkey +mpt2sas +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +mrst_max3110 +ms_block +msdos +msp3400 +mspro_block +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt29f_spinand +mt312 +mt352 +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtd_dataflash +mtdblock +mtdblock_ro +mtdoops +mtdram +mtdswap +mtip32xx +mtouch +multipath +musb_am335x +musb_dsps +musb_hdrc +mv88e6060 +mv88e6xxx_drv +mv_u3d_core +mv_udc +mvmdio +mvsas +mvumi +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxl111sf-demod +mxl111sf-tuner +mxl5005s +mxl5007t +mxser +myri10ge +n_hdlc +n_r3964 +n_tracerouter +n_tracesink +nand +nand_bch +nand_ecc +nand_ids +nandsim +natsemi +nau7802 +navman +nbd +nci +ncpfs +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netlink_diag +netprio_cgroup +netrom +netxen_nic +newtonkbd +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 +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nf_synproxy_core +nf_tables +nf_tables_arp +nf_tables_bridge +nf_tables_ipv4 +nf_tables_ipv6 +nfc +nfc_digital +nfcsim +nfcwilink +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nfs +nfs_acl +nfs_layout_nfsv41_files +nfsd +nfsv2 +nfsv3 +nfsv4 +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 +nft_limit +nft_log +nft_meta +nft_nat +nft_rbtree +nft_reject_ipv4 +nftl +ngene +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_daq_700 +ni_daq_dio24 +ni_labpc +ni_labpc_cs +ni_labpc_pci +ni_mio_cs +ni_pcidio +ni_pcimio +ni_tio +ni_tiocmd +nicstar +nilfs2 +niu +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 +ns558 +ns83820 +nsc-ircc +ntc_thermistor +ntfs +null_blk +nvidiafb +nvme +nxt200x +nxt6000 +obdclass +obdecho +objlayoutdriver +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stack_o2cb +ocfs2_stack_user +ocfs2_stackglue +ocrdma +of_mmc_spi +of_serial +ofpart +old_belkin-sir +olpc_apsp +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 +output +ov2640 +ov5642 +ov6650 +ov7640 +ov7670 +ov772x +ov9640 +ov9740 +overlayfs +oxu210hp-hcd +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +palmas-regulator +pandora_bl +panel +paride +parkbd +parport +parport_ax88796 +parport_cs +parport_pc +parport_serial +pata_ali +pata_amd +pata_arasan_cf +pata_artop +pata_atiixp +pata_atp867x +pata_cmd640 +pata_cmd64x +pata_cs5520 +pata_cs5530 +pata_cs5536 +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_sc1200 +pata_sch +pata_serverworks +pata_sil680 +pata_sis +pata_sl82c105 +pata_triflex +pata_via +pc300too +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_can +pch_phub +pch_uart +pch_udc +pci +pci-stub +pci200syn +pcips2 +pcmcia +pcmcia_core +pcmcia_rsrc +pcmciamtd +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 +phison +phonet +phram +phy-core +phy-exynos-dp-video +phy-fsl-usb2 +phy-generic +phy-gpio-vbus-usb +phy-isp1301 +phy-rcar-usb +phy-samsung-usb +phy-samsung-usb2 +phy-samsung-usb3 +physmap +physmap_of +pixcir_i2c_ts +pktcdvd +pktgen +pl2303 +plat-ram +plat_nand +platform_lcd +plip +plusb +pluto2 +plx_pci +pm-notifier-error-inject +pm2fb +pm3fb +pm80xx +pmbus +pmbus_core +pmc551 +pmcraid +pn533 +pn544 +pn544_i2c +pn_pep +port100 +poseidon +powermate +ppa +ppc-corenet-cpufreq +ppdev +ppp_async +ppp_deflate +ppp_mppe +ppp_synctty +pppoatm +pppoe +pppox +pps-gpio +pps-ldisc +pps_core +pps_parport +pptp +prism2_usb +ps2mult +psmouse +psnap +pt +ptlrpc +ptp +pvrusb2 +pwc +pwm-pca9685 +pwm-twl +pwm-twl-led +pwm_bl +pxa27x_udc +qcaux +qcserial +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qlogic_cs +qlogicfas408 +qman_debugfs_interface +qmi_wwan +qnx4 +qnx6 +qt1010 +qt1070 +qt2160 +quatech2 +quatech_daqp_cs +quota_tree +quota_v1 +quota_v2 +qxl +r128 +r592 +r6040 +r8152 +r815x +r8169 +r8187se +r8188eu +r8192e_pci +r8192u_usb +r820t +r852 +r8712u +r8a66597-hcd +r8a66597-udc +radeon +radio-i2c-si470x +radio-keene +radio-ma901 +radio-maxiradio +radio-mr800 +radio-shark +radio-si4713 +radio-si476x +radio-tea5764 +radio-timb +radio-usb-si470x +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +ray_cs +rbd +rbtree_test +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-em-terratec +rc-encore-enltv +rc-encore-enltv-fm53 +rc-encore-enltv2 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-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-tbs-nec +rc-technisat-usb2 +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-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rc5t583-regulator +rcar_vin +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +redboot +redrat3 +reed_solomon +reiserfs +remoteproc +renesas_usbhs +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +rio-scan +rio500 +rionet +rivafb +rj54n1cb0c +rmd128 +rmd160 +rmd256 +rmd320 +rndis_host +rndis_wlan +rocket +romfs +rose +rotary_encoder +rp2 +rpcsec_gss_krb5 +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt61pci +rt73usb +rtc-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-as3722 +rtc-bq32k +rtc-bq4802 +rtc-cmos +rtc-da9052 +rtc-da9055 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1742 +rtc-ds2404 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-generic +rtc-hid-sensor-time +rtc-isl12022 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max77686 +rtc-max8907 +rtc-max8925 +rtc-max8997 +rtc-max8998 +rtc-mc13xxx +rtc-moxart +rtc-msm6242 +rtc-palmas +rtc-pcf2123 +rtc-pcf2127 +rtc-pcf50633 +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-snvs +rtc-stk17ta8 +rtc-tps6586x +rtc-tps65910 +rtc-tps80031 +rtc-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtc_cmos_setup +rtd520 +rtl2830 +rtl2832 +rtl8150 +rtl8180 +rtl8187 +rtl8188ee +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192se +rtl8723-common +rtl8723ae +rtl8723be +rtl8821ae +rtl_pci +rtl_usb +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtlwifi +rts5139 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rx51_battery +rxkad +s1d13xxxfb +s2250 +s2255drv +s2io +s2mps11 +s3fb +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s626 +s6e63m0 +s921 +saa6588 +saa6752hs +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7146 +saa7146_vv +saa7164 +saa717x +saa7706h +safe_serial +salsa20_generic +samsung-keypad +sata_fsl +sata_inic162x +sata_mv +sata_nv +sata_promise +sata_qstor +sata_rcar +sata_sil +sata_sil24 +sata_sis +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sbe-2t3e3 +sbp_target +sbs-battery +sc92031 +sca3000 +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_fq +sch_fq_codel +sch_gred +sch_hfsc +sch_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +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_tgt +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_srp +sctp +sctp_probe +sdhci +sdhci-of-esdhc +sdhci-of-hlwd +sdhci-pci +sdhci-pltfm +sdhci-pxav2 +sdhci-pxav3 +sdio_uart +sdr-msi3101 +sdricoh_cs +sedlbauer_cs +seed +sep_driver +seqiv +ser_gigaset +serial2002 +serial_cs +serio_raw +sermouse +serpent_generic +serport +serqt_usb2 +ses +sfc +sh_eth +sh_mobile_ceu_camera +sh_mobile_csi2 +sh_veu +sha1-powerpc +shark2 +shpchp +sht15 +sht21 +si21xx +si4713-i2c +si476x-core +sidewinder +sierra +sierra_net +sil164 +sir-dev +sis +sis190 +sis5595 +sis900 +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_of_platform +sja1000_platform +skd +skel +skfp +skge +sky2 +sl811-hcd +sl811_cs +slcan +slip +slram +sm501 +sm501fb +sm7xxfb +sm_common +sm_ftl +smb347-charger +smc91c92_cs +smm665 +smsc-ircc2 +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +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-at73c213 +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt3328 +snd-bt87x +snd-ca0106 +snd-cmipci +snd-compress +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-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1938 +snd-es1968 +snd-firewire-lib +snd-firewire-speakers +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-hdmi +snd-hda-codec-idt +snd-hda-codec-realtek +snd-hda-codec-si3054 +snd-hda-codec-via +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-mona +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-mts64 +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-oxygen +snd-oxygen-lib +snd-page-alloc +snd-pcm +snd-pcxhr +snd-pdaudiocf +snd-portman2x4 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb-common +snd-sb16-dsp +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-atmel-pcm +snd-soc-core +snd-soc-si476x +snd-soc-simple-card +snd-sonicvibes +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usb-usx2y +snd-usbmidi-lib +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx-lib +snd-vx222 +snd-vxpocket +snd-ymfpci +soc_camera +soc_camera_platform +soc_mediabus +soc_scale_crop +softdog +softing +softing_cs +solo6x10 +solos-pci +sony-btf-mpx +soundcore +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-dw +spi-dw-midpci +spi-dw-mmio +spi-gpio +spi-lm70llp +spi-oc-tiny +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-sc18is602 +spi-tle62x0 +spi-topcliff-pch +spi-xcomm +spi_ks8995 +spidev +squashfs +sr9700 +ssb +ssb-hcd +ssd1307fb +ssfdc +sst25l +ssu100 +st +st1232 +st_accel +st_accel_i2c +st_accel_spi +st_drv +st_gyro +st_gyro_i2c +st_gyro_spi +st_magn +st_magn_i2c +st_magn_spi +st_pressure +st_pressure_i2c +st_pressure_spi +st_sensors +st_sensors_i2c +st_sensors_spi +starfire +stb0899 +stb6000 +stb6100 +ste_modem_rproc +stex +stinger +stir4200 +stk1160 +stkwebcam +stmmac +stmpe-keypad +stmpe-ts +stowaway +stp +streamzap +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +svcrdma +svgalib +sx8 +sym53c500_cs +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink +synclink_cs +synclink_gt +synclinkmp +sysv +t1pci +talitos +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +tc3589x-keypad +tca6416-keypad +tca8418_keypad +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bic +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 +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-kstrtox +test-string_helpers +test_power +tg3 +tgr192 +thmc50 +ti-adc081c +ti_dac7512 +ti_usb_3410_5052 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timb_dma +timberdale +timblogiw +timbuart +timeriomem-rng +tipc +tlan +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmiofb +tmp006 +tmp102 +tmp401 +tmp421 +tmscsim +toim3232-sir +touchit213 +touchright +touchwin +tpci200 +tpm-rng +tpm_atmel +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm_i2c_stm_st33 +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-charger +tps65090-regulator +tps65217 +tps65217-regulator +tps65217_bl +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +tranzport +tridentfb +ts2020 +ts_bm +ts_fsm +ts_kmp +tsc2005 +tsc2007 +tsc40 +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +tsl4531 +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tuner_it913x +tunnel4 +tunnel6 +turbografx +tusb6010 +tvaudio +tveeprom +tvp5150 +tw2804 +tw9903 +tw9906 +tw9910 +twidjoy +twl4030-madc +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_charger +twl4030_keypad +twl4030_wdt +twl6030-gpadc +twl6040-vibra +twofish_common +twofish_generic +typhoon +u132-hcd +u_ether +u_rndis +u_serial +uartlite +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +uda1342 +udc-core +udf +udl +udp_diag +ueagle-atm +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_sercos3 +uli526x +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 +unix_diag +upd64031a +upd64083 +usb-serial-simple +usb-storage +usb3503 +usb8xxx +usb_8dev +usb_debug +usb_f_acm +usb_f_ecm +usb_f_ecm_subset +usb_f_eem +usb_f_mass_storage +usb_f_ncm +usb_f_obex +usb_f_phonet +usb_f_rndis +usb_f_serial +usb_f_ss_lb +usb_gigaset +usb_wwan +usbatm +usbdux +usbduxfast +usbduxsigma +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmisc_imx +usbmon +usbmouse +usbnet +usbserial +usbsevseg +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +uwb +ux500 +v4l2-common +v4l2-dv-timings +v4l2-int-device +v4l2-mem2mem +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vga16fb +vgastate +vgg2432a4 +vhci-hcd +vhost +vhost_net +vhost_scsi +via +via-ircc +via-rhine +via-sdmmc +via-velocity +via686a +videobuf-core +videobuf-dma-contig +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videobuf2-core +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-memops +videobuf2-vmalloc +videodev +viperboard +viperboard_adc +virtio +virtio-rng +virtio_balloon +virtio_blk +virtio_console +virtio_mmio +virtio_net +virtio_pci +virtio_ring +virtio_scsi +virtual +visor +vivi +vlsi_ir +vmac +vme +vme_pio2 +vme_user +vme_vmivme7805 +vmk80xx +vmwgfx +vmxnet3 +vp27smpx +vringh +vsock +vsxxxaa +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +w1-gpio +w1_bq27000 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1_smem +w1_therm +w35und +w5100 +w5300 +w6692 +w83781d +w83791d +w83792d +w83793 +w83795 +w83977af_ir +w83l785ts +w83l786ng +w90p910_ts +w9966 +wacom +wacom_i2c +wacom_w8001 +walkera0701 +wanxl +warrior +wbsd +wcn36xx +wdt_pci +whc-rc +whci +whci-hcd +whiteheat +wil6210 +wimax +winbond-840 +windfarm_core +wire +wishbone-serial +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wl3501_cs +wlags49_h25_cs +wlags49_h2_cs +wlcore +wlcore_sdio +wlcore_spi +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x-ts +wm831x_backup +wm831x_bl +wm831x_power +wm831x_wdt +wm8350-hwmon +wm8350-regulator +wm8350_power +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-regulator +wm97xx-ts +wp512 +wusb-cbaf +wusb-wa +wusbcore +x25 +x25_asy +x_tables +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 +xgene-enet +xgifb +xgmac +xilinx_ps2 +xilinx_uartps +xillybus_core +xillybus_of +xillybus_pcie +xirc2ps_cs +xircom_cb +xor +xpad +xprtrdma +xsens_mt +xt_AUDIT +xt_CHECKSUM +xt_CLASSIFY +xt_CONNSECMARK +xt_CT +xt_DSCP +xt_HL +xt_HMARK +xt_IDLETIMER +xt_LED +xt_LOG +xt_NETMAP +xt_NFLOG +xt_NFQUEUE +xt_RATEEST +xt_REDIRECT +xt_SECMARK +xt_TCPMSS +xt_TCPOPTSTRIP +xt_TEE +xt_TPROXY +xt_TRACE +xt_addrtype +xt_bpf +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_conntrack +xt_cpu +xt_dccp +xt_devgroup +xt_dscp +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_iprange +xt_ipvs +xt_length +xt_limit +xt_mac +xt_mark +xt_multiport +xt_nat +xt_nfacct +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_realm +xt_recent +xt_sctp +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_tcpudp +xt_time +xt_u32 +xtkbd +xts +xusbatm +xz_dec_test +yam +yealink +yellowfin +yenta_socket +yurex +zaurus +zd1201 +zd1211rw +zforce_ts +zhenhua +zl10036 +zl10039 +zl10353 +zl6100 +zlib +zr364xx +zram +zte_ev --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/powerpc/powerpc64-smp +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/powerpc/powerpc64-smp @@ -0,0 +1,16982 @@ +EXPORT_SYMBOL arch/powerpc/kvm/kvm 0x7196d0b4 kvm_read_guest_atomic +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/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/atm/suni 0x580bf976 suni_init +EXPORT_SYMBOL drivers/bcma/bcma 0x7b1c5a4b 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 0x0ac1c49c paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x3f43b155 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x6250ec0c pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0x6ba143fb pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0xa7d9ab0d pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xbc0ec868 pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0xc9197560 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xcb42049e pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0xd056ce81 pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0xf02e4253 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xf37d36af paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0xfe462444 pi_init +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x255405e8 dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x40c595e8 dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x59a86408 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x712eb1f8 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xa18ed5df dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xfc8b4fc7 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/edac/edac_core 0x1644b797 edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04d0f641 fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0ad060ac fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0e9edb38 fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0f7d6af8 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x168cdcbd fw_iso_context_create +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 0x2a4b537f fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2ea3b017 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3abc5d6b fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4020e480 fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0x47d323ec fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x487ca689 fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4a1abca1 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4e97d80b fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x56e33ed6 fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x57899f9b fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5d303492 fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x63b270a7 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 0x81b5463f fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8a106bc7 fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x97a76b87 fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9914f299 fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa2a5a948 fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0xca9bc5e4 fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe4b4e861 fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe8773d7c fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe9784621 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf5c2b898 fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xfde405fc fw_iso_buffer_init +EXPORT_SYMBOL drivers/fmc/fmc 0x3881b313 fmc_driver_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x4c936de4 fmc_show_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x4ce95b36 fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0x54de074f fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x5c6afdff fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x6d0d5ef5 fmc_find_sdb_device +EXPORT_SYMBOL drivers/fmc/fmc 0x77329625 fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0x7c6cb6f6 fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0xa110331a fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0xd9182bba fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0xfc8069aa fmc_free_sdb_tree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00025916 drm_mode_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00188c49 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00667d8a drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x011e600b drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x026c0d6b drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b9d54ea drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d4f15e8 drm_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0db89f08 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fd60df2 drm_get_connector_status_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x102e0818 drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x111b5cbb drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1185ef51 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12c6276a drm_buffer_read_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1339b514 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13631c6a drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x142b8b35 drm_buffer_copy_from_user +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x189f6401 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x193fb0d2 drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19e44324 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a2890f2 drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a569896 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1cd92822 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d8fac3d drm_core_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f1236b8 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x209e547c drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20b37c60 drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20f82384 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21007773 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x241fb394 drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25fc2625 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2894d2b4 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28bf8c34 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x298629e9 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29ad006c drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a942ab2 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d80be4d drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f0b064f drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30a563d4 drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x310f83ef drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3325013d drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x33ceb2fc drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34dee287 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3630f151 drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36969e02 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36f91ef3 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39e041a6 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ae7b2d0 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3cc8240a drm_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d4b8108 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d774d0e drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f2fb839 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x40cc2596 drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4186a483 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x420a7a49 drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43384bd9 drm_buffer_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43409fa9 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4400dcdd drm_core_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x46747935 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x473f4fff drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x474461f1 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4764ee4a drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4801d744 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x483781f0 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48fbc4bf drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x498dcb5e drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49fabf0d drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a5ac151 drm_get_last_vbltimestamp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a9bba84 drm_global_mutex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b63a12b drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c348473 drm_vma_node_is_allowed +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 0x4f3e1d2e drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ff3b1fe drm_mode_duplicate +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 0x529291e5 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5337c7bc drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5409df26 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5424f624 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54c08fd2 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x558882ba drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57df2f53 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58604728 drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x587b9f77 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d7318dc drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5fa1a022 drm_bridge_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6090be61 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x62acb6a9 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63b794ce drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x649cc3eb drm_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x650724f0 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66803841 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x668a1c24 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x685bf55c drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x698c3b6a drm_get_connector_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x69f2a9a6 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b6d7375 drm_timestamp_precision +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6bf59c06 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cc3c29e drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cee2e42 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cefe1c2 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d53660b drm_compat_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6fb8fc28 drm_platform_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x701404b7 drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7089454d drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7268a64d drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x758345ef drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x76ea1e0f drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7725aa00 drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x77afba17 drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x77c53d8f drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x77d7a39e drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x78b74445 drm_core_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79cb1f42 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79e26605 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a4e7297 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a700a7c drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7aaec341 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7bf8b296 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8066078c drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x80f4795b drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81ba930c drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81e773e4 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82284ac5 drm_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x839a0daf drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8456e46b drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87280b39 drm_mode_connector_detach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x88433b57 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8cae673a drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ce455b9 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de4f5bd drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8dfb019d drm_buffer_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8e509f2d drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f0e25fc drm_dev_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f7df3a7 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91d75c60 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93f3ccb8 drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x950d60c2 drm_prime_destroy_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x96e99f65 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9745d638 drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x98a8d92e drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9cea2d0d drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d70fc2a drm_rnodes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9eccfe56 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9ede61e3 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1f4e9e6 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa26c5d91 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa3481843 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa3a02e8c drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa3e6c2a2 drm_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4fdc9ed drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5dbd572 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa7732377 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa78262df drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa7f3bf72 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaaad1153 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0xab367803 drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0xace0407f drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad38469c drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf7dd82d drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafb0cb6f drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafb27a10 drm_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb0ad39b6 drm_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb24b9443 drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb2f7d7e9 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4cfe9e0 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5540008 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb572a9f0 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6a95c5f drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb783eb26 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb7d57935 drm_sysfs_connector_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb95beb55 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbbe9c9a8 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe001c53 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe54cfbd drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc1ea347f drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4000f9f drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc414c422 drm_vblank_offdelay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4ede065 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc71a9360 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc79a0caf drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7f7cc11 drm_vma_offset_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc8a2423f drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc8afc77d drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc90ccf56 drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca63119e drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcc1b7bb1 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcc573617 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcc8f5688 drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcec158f0 drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1b029be drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1b3ed25 drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2fe634e drm_get_encoder_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd30f34c3 drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd4b2800b drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd7e066a7 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd861be20 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd8e28d6c drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbdc1a19 drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbe2caac drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc8d39b8 drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2ef97e4 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe54e36ca drm_bridge_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6f46e6e drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe75b3783 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7a37488 drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7dbe2ab drm_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9d51011 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9f2a99b drm_prime_init_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea4341c8 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea95c9d2 drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xead0d075 drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed3d46ba drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xefdf9b69 drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf08d712a drm_mode_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0c45590 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1715d26 drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf219f21d drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf289d115 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf446a0e2 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf57e0bb3 drm_core_reclaim_buffers +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf611401d drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6d3a423 drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8e5972f drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9b007bf drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9d0e73f drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb497216 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfc447667 drm_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcabf443 drm_sysfs_connector_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcbb197a drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd063935 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe4a68c7 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfed89d25 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x056eafb5 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x236f3d1e drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x288f5598 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2a23ec89 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2d14ecc3 drm_dp_aux_register_i2c_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2f13c4b3 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x412fb243 drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x47a935a7 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4b290674 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5a5a616f drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x615bc64b drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x62f2b69c drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x63e8b48c drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x65a7fe03 drm_fb_helper_restore_fbdev_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6b6f3744 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6e73f032 drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6fcf57eb drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x75e63170 drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7700b845 drm_dp_aux_unregister_i2c_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7914ffaf drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7f1fe3ee drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x819e4ecc drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x836d6a8a drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x848775c6 drm_fb_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 0x87e91fba drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8b1f123d drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8d22d2dd drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9072127b drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9b4be286 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa77858bb drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xae642afd drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbe888c8a drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc6ba3ed2 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc77b0370 i2c_dp_aux_add_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd512a798 drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd7483b5d drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdd563374 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe033b32e drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe5e1d246 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe7dec051 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe8281a39 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf5b05a71 drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf8ccadcc drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x100bc3e4 drm_usb_init +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x1728a7bc drm_usb_exit +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x9130fb28 drm_get_usb_dev +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0028a559 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x095bce25 ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1c18d616 ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1e26b9f9 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2135f3bd ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x247f6a5b ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x25201335 ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x254f4d35 ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2bcad4cc ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2ef3a175 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3f79ed7b ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4a8d0b49 ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4c21bf25 ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4d1d5d9d ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4e8dd264 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x50ed7c99 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x510363c9 ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5238b043 ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x558e038f ttm_bo_mmap +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 0x6052860c ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x645c4e6b ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x703a410e ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x751a602d ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7622ec63 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7bcf4c76 ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7d55da85 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x84a13931 ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x880a15ad ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x886cf055 ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8960cd51 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x89a443de ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8c74eb68 ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8d14adbf ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8e7db1a1 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x96f7683c ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9ea5561c ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9ffb8017 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa2a129fd ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa3780bb6 ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa7133b26 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa73de2a9 ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb2c04c5b ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb83c6470 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbdd5a59e ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc120d3cb ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc2025c31 ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc5f0c2da ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc5fbf5ae ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc6335421 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc66c8f19 ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc8659b91 ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcc4a7180 ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcd26888b ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce6e43a8 ttm_base_object_lookup_for_ref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xced4e4b6 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd24ef8df 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 0xd9597b10 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd9741993 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xda546aeb ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe55dcf2c ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xed56b11b ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xede246e1 ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf5f74824 ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf99ab874 ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfaccf550 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 0xfc81684f ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfff25e93 ttm_bo_init +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-pca 0x1b6cbda5 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xc6c877b0 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0x477d576e amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x437be34b st_accel_common_remove +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xce7669d0 st_accel_common_probe +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x0021eb21 hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x18214cbd hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x4f6bd679 hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xba87c497 hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xfa040767 hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x7897ec3b hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xd0f029dd hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x074d7047 st_sensors_trigger_handler +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x4148b404 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x4fd89d5b st_sensors_sysfs_get_sampling_frequency +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x544345d2 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x5c56bf96 st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x5f5442ec st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x79879f35 st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x7e4440d9 st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x8e7b7b56 st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xa30ebfb2 st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xa3b9e4e4 st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xa3f3d3b6 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xa97385ec st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xabf62687 st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xadeb271c st_sensors_sysfs_set_sampling_frequency +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xcb9592cb st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0xc1f8b64f st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0xe854fdee st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x36a16e49 st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x59d85c25 st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x2783307d adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xdb6eb845 adis_enable_irq +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x4463e8ca iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x45991d80 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x46680484 iio_buffer_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x49f517ba iio_buffer_store_enable +EXPORT_SYMBOL drivers/iio/industrialio 0x58e939e6 iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x5fbaf14c iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x66b209f2 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0x688ac4b4 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x6f7f1a4b iio_buffer_show_enable +EXPORT_SYMBOL drivers/iio/industrialio 0x7db4c115 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x81ba8167 iio_buffer_read_length +EXPORT_SYMBOL drivers/iio/industrialio 0x86c93ec5 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x8cac3af9 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x90f02150 iio_buffer_register +EXPORT_SYMBOL drivers/iio/industrialio 0x9f6b8517 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0xa6d5cab9 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0xa94d004a iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0xa9b4800e iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xbe59126b iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0xce1635f2 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0xd268aa91 iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe64b639b iio_buffer_write_length +EXPORT_SYMBOL drivers/iio/industrialio 0xe953c11e iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x623155eb iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0xf817eb8c iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xa5b5deec iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xf15afe2a iio_kfifo_free +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x89093193 st_magn_common_remove +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xdcac29e9 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x170b88e0 st_press_common_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xea4d03c2 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 0x446fd7c9 rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x59252c9d rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xe507e356 rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0b5a1ec7 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x109901d2 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x252053b4 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x304a293a ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x3739fcc6 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x41e12d8c ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x5c4df4fb ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x60cc53e2 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x6ab48d9b ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x938bc887 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x94367b84 ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x95a783f1 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe185e6d6 ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xea0e386e cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf4d86c27 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xfca28984 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xff1f6a8f ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x01495750 ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0284712b ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0480f3c1 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x06c82fcf mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0b5bc439 ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x12532d92 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1356be85 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x14f84918 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x15e85984 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x16e5bf50 ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x171f99f1 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1aa77e5d ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1d1eb985 ib_alloc_mw +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 0x24efc6de ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2500dd9c ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2b777634 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2f1b0980 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3dd81374 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x42467ba6 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x44474018 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x44a6bb13 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x472d016e ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x48c21477 ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x49c8e57c ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x57f83af4 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5c5d685e ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5ebba722 ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x60194711 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x647d683e ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x665bb185 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6b093981 ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6bd06ab2 ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6c81ad0a ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e030e26 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6edea9f5 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x73b2fd22 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x766452e2 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7793b4b3 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7d01dac6 ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x829a4385 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x863e8149 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8714ec77 ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8fa54ca0 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x95b9ef69 ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9e6576be ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9efde137 ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa0c05f99 rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa20b02bb ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa27c0646 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa34d0e3c ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa432baf6 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa775e3c2 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa7b56719 ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa88fe1b0 ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xac217df9 rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xad122b3f ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb021e79d ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb0a7ae93 ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc1713291 ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc22e8419 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc2866417 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 0xc8658c93 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc9432ca0 ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc964d4e8 ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcc478c3f ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcee8ed15 ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd04c0e78 ib_resolve_eth_l2_attrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd4eaf5f0 ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd7e8fed0 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd99bfa79 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd9c6ca4f ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xda0165c7 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdd3229e0 ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdef7e532 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe01bb5ac ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe36ee75e ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xee611e17 ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeeb78410 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf41d48d0 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf4752330 ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfb121da6 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfecb1e7e ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x259f4900 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2e18aa94 ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x41ddc963 ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x5528345f ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7656495a ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7a17f2ca ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x946d5d27 ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xa0812084 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xb25eb811 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xba55ec35 ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xbe075d10 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xd0d95507 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xe0fea6fb ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x082b4649 ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x10a52db3 ib_sa_get_mcmember_rec +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 0x9a1cd50d ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xa9562ade ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xab551806 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 0xf45d3c59 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xf84d5ac9 ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xfa6cf7a8 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 0x190d2856 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x2c3c967a iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x58c929f6 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x8cccc5a6 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x98593d6b iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9cb55abd iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xc3a5ca0b iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd01b15f7 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1b3516c5 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x246f8593 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3321f87c rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3430b861 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3ba787d9 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x41a32d99 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x56617aa9 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x5d57cbbd rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x69cbb7c9 rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x760f2c55 rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x85fb4686 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8b4f68a9 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x90c0533c rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa1abe176 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa4b955d5 rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xae243bed rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xae497e71 rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xcf2dbef6 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd4d6800f rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xddb98c26 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xecb88678 rdma_notify +EXPORT_SYMBOL drivers/input/gameport/gameport 0x55d55f9a gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x66beba72 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x6ed344ae gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0xa354f8dd __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xb8da1fce gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0xc0c9be7e gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0xc5a50660 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xf916bdcf __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xfb4d3032 gameport_start_polling +EXPORT_SYMBOL drivers/input/input-polldev 0x7930526d input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x7ad91b59 input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xb5e44277 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xc984ac57 input_register_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0xa56ccbb5 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x237f2ee4 ad714x_remove +EXPORT_SYMBOL drivers/input/misc/ad714x 0x34b6bf4c ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xc4d614bb ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0xf3f89a6e ad714x_disable +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x4156f6e6 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 0x76d64a22 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0x78fac275 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0x7a5543fe sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x810aedbe sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0x9bd6329f sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x9f4db55e sparse_keymap_free +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x04673f78 ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x79bdea60 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 0x1f68185b 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 0x42faf0e5 capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x47d3fc51 capi_info2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x4dbb439e capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x59594d8e 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 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 0x9acf8d0b capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9f823278 register_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xa19a629a capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xa69f948c capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa165d27 capilib_release_appl +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa59dcd7 capi_ctr_ready +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 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xed061606 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xf93122d5 attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xfd552f7a capi_message2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xfde5359d capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x1a8673ed b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x1ab4f6ae b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x49aea9ef avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x4bc25fca b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x5f528012 b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x802570af b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x91fd4fc3 b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x9b75f077 b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xd3d0736b b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xe9e67dd7 b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xf32724f4 b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xf6f9ad9a avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfc33f68c b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfca5d702 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfd323182 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x1be2de00 b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x5b98de06 b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x67995ba8 b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x7f10ffbd b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x8a74903a b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xab4ba672 b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6efa083 t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xef1418c0 b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xf43bc5e1 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 0x366e4b63 mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x4038ff66 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xc378dbc5 mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xe20dd2f0 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xd58e91aa mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xf6e8da48 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 0x57b26aba hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x7f29ce36 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xe227344e FsmRestartTimer +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 0xff2db2cf FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x21f11808 isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3050c0ff isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x493778dc isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x7f6239d5 isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x886b49ca isac_irq +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x4682c199 register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x72c20d7a isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x8f8b2471 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 0x0a4abfbd mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x178940dc mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x295eaa5e mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2a53279b recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x37f3dbbf mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x39c4bf87 bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x54451388 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x614ede30 mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x78e0e87d get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x891731cf queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8ac18c7b recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9577c214 bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x96309324 mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x97bd95ee dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9bc35245 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9f4426b0 mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa1ed510c recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa478397d get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa90cfc12 create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa9f40284 mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xaf4d69ca mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xba2749ce recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc5ce7c94 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5001e79 mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd6277215 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd69a8d16 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe87943cf mISDN_FsmInitTimer +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 0x095b3e1f __closure_lock +EXPORT_SYMBOL drivers/md/bcache/bcache 0x8b583e0d closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0x9aab0980 closure_trylock +EXPORT_SYMBOL drivers/md/bcache/bcache 0xc48421ef closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0xc89f3888 closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0xd6883d57 closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe3c17af1 __closure_wake_up +EXPORT_SYMBOL drivers/md/dm-log 0x3f17c0c9 dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0x4da8b615 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0x8c49b307 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0xe744e90b dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x1ba42b67 dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x817417f9 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x8dfb07ce dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0x918ce241 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0xbdcbdafb dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0xff1ecc9a dm_snap_origin +EXPORT_SYMBOL drivers/md/raid456 0xb035a076 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x040d5a19 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x05bfd286 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x0ca8de6b flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x164ccbbf flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x1cbc2d9f flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x4016fb6a flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x46d45f2b flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x59858580 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x9a3bf20d flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xb624847c flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xb848812a flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xc230f4ca flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xd387affd flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/btcx-risc 0x04dc2b1a btcx_riscmem_alloc +EXPORT_SYMBOL drivers/media/common/btcx-risc 0x495e4b0c btcx_calc_skips +EXPORT_SYMBOL drivers/media/common/btcx-risc 0x9a606d6e btcx_riscmem_free +EXPORT_SYMBOL drivers/media/common/btcx-risc 0xad2fe38b btcx_sort_clips +EXPORT_SYMBOL drivers/media/common/btcx-risc 0xc368f8e6 btcx_align +EXPORT_SYMBOL drivers/media/common/btcx-risc 0xcda0ded2 btcx_screen_clips +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0x22a81808 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/common/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x48ce13e0 cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0x5b88faf6 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x78ff7f0f cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0xb58bb0f3 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 0xd0d066ab cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x0b1a7fac tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/common/tveeprom 0x2e920ce1 tveeprom_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0034a4c9 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0db36f23 dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1212bd74 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x12fdcd9a dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x15165769 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x17523ce7 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x191a3c56 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1e8fd8bb dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x32706276 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x403c645f dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4e927cba dvb_generic_release +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 0x71103c6f dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7200c245 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 0x78db694b dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7cf98983 dvb_unregister_frontend +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 0x83dd85b3 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x85a5e7d3 dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8fa04a03 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x95d3e1da dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x992d4f7e dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa2d7bcb9 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa3178da2 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa8bd9c3e dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb20900f1 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb2880900 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc4408822 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc49242ee dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xcf589e8c dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd68a099e timeval_usec_diff +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd8f7184c dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd915e57a dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xefaeed1a dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf28e7431 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfcfde4a8 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfeb6288e dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfedb84b8 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-frontends/a8293 0xbd70db1e a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0xa87cca4f af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9033 0x3d94c905 af9033_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0xfb795256 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x16f43be4 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x38ecc433 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x5a23cc8b au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x67c0e76f au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xca4d55a7 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xcc144373 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xda269610 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xe9e8fe47 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xfa53db99 au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0xb7bb0aef au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0xb92744a0 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x56421f8b cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0x65a64d16 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0x123aa265 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x2e05ada1 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x979d527f cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0x6275dc3c cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x028417a4 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x86e462ad cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0xfb974b83 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x147c308d dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x37493ae6 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x692ab2de dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x964547eb dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xc94bcd67 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x08bc8733 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x2a5bb893 dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x353192fa dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x3a78eeaf dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x3d4342e3 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x4e2129e7 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x5dc984bd dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x6d47ecc6 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x74848b1e dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x8f383424 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xa2cc1dc4 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xc56a9c40 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xcaa280d5 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd43adfee dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xe3bb4f73 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x7f795e46 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x4187515e dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x4205e15f dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xaad7b46f dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xba4d9eb4 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xc2c2dfe8 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xdfd87f6c dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x061ae767 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x13160818 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x527acc3f dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xad032936 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x065d6437 dib7000p_get_agc_values +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x464b9334 dib7000pc_detection +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x575f4796 dib7000p_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x789a1960 dib7000p_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x89e972ac dib7000p_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x9e7b3674 dib7090_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x9f7be0a5 dib7090_slave_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xbd66b51d dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xbe62d56b dib7090_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xc08e2a12 dib7000p_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xd0438b44 dib7000p_update_pll +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xdcc4d409 dib7090_get_adc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xe981c085 dib7000p_set_agc1_min +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xec8afd3e dib7000p_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xecda89ad dib7000p_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xfdcabaca dib7000p_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x1bd99c62 dib8000_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x446d810c dib8000_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x51768236 dib8000_remove_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x5b677476 dib8000_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x5c5f6cd3 dib8000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x6cb03d2e dib8090p_get_dc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x72c17d99 dib8000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x72ebae87 dib8096p_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x81adbaae dib8000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x868f8111 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xa2bfe52c dib8000_get_adc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xa6a9e8a5 dib8000_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xbfea3d7d dib8000_update_pll +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xc0ffe515 dib8000_pwm_agc_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xc179f5e0 dib8096p_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xc36332f2 dib8000_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xc692501c dib8000_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xd1f7d434 dib8000_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xf296c7b0 dib8000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x1f3e6b07 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x9842d2b3 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xcfff5880 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xed78f501 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xf212d679 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x27b491c9 drxd_config_i2c +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0xef221243 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0xb2cdb2c6 drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0xf2f715ab ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0xa0458025 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0x806720b8 ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x96aa5a0e isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0xbc607af6 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x98266661 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/it913x-fe 0xc870f00e it913x_fe_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0xda1bf1c5 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0x097f81cb ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0xd23075b5 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0xa97486bf lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0xa49d211d lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0x813df1eb lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x3b2142c5 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x27f422c6 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x8721ae21 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0x49a58d44 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0xaff4b789 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0xdbc2e4c9 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0xc0850fc3 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x439f93a3 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0x3d929289 mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x73912f34 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0xb9a68b66 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0xf2ebc3d3 or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0x72541bb5 or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2830 0xb398723b rtl2830_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2830 0xe8c91ff5 rtl2830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2832 0xc0e8426b rtl2832_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0xaae10a3f s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x7e41b361 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x25be0b1f s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x91321e26 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0x601d13c0 s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x00ccdff8 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0x34f07184 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0xac6c885f sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0x946441ad stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0xb5c56e10 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x8c017847 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0xc67896b4 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0x8103e8f0 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0xfd367616 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x6de2ddc1 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xb521fdfc stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0xa42ebd31 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x6f368491 stv090x_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0xe6a2fa0a stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0xc40995b0 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0x0c44d10d stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0x6a4f8509 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0x0eeb90fe tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0xc6cf36b2 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x2a7ab003 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xfa162317 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0x2b2a7e5d tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x114e13ab tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0x0b8ca83f tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x575828b6 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0xec1a362c tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x244b7479 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0xb6d0b59e ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0x2fd4e55d tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0xc57b1562 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0xea626b84 ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0x6c6ad512 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0x44b44daf zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0xc361ccea zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x1233a0fb flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x2d52253b flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x4303de65 flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x623606c0 flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x8aa11770 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x8bd09b68 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xe921a9ef flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x10006fbb bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x5ff4b37b bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x7567eee4 bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xcaf8d3db bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x4e2ff6d0 bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x7d4fa290 bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x9b447b52 bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x0acd3d07 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x23027eef write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x30b9bcd4 dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x9fe19ad5 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xaa39cdea dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xbc0af5fb dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xbf46c820 rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xca0499de dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xcaca15bf dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x1a588b34 dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x60d02aaa cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x63c18b0e cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x7419983a cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xd0af7e73 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xdee148bd cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x54380104 altera_ci_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x9247b72f altera_hw_filt_release +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xd237b50e altera_hw_filt_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/cx23885/altera-ci 0xf6ae9cdd altera_pid_feed_control +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x1bac7cb3 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x3724973b cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x70ddd698 cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x9932c48b cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xbf1fc811 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xe50cbab5 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x03a93f7a vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xe5ade0f0 vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x0cd6db9b cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x779cc8bb cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x9895e397 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xeaf89f03 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x0be290fc cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x1cf13350 cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xb8ce5003 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xc749ceb5 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xcab5f39b cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xf01ec3fc cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x21c17e66 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x369de629 cx88_free_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x50967773 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x59ecc715 cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x724ac060 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x87e1f6da cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa4edb36b cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xaa9bde21 cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb0ab87fd cx88_risc_stopper +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb0f4a6b5 cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb75e44df cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc1cdbed8 cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc3750c48 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc555592b cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd0defe3c cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd10e4393 cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd2b271bc cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe0762c2e cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe389392f cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xebcabaa7 cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xed5fd1ab cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf77cb9b3 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x3cae34f4 ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x4adfd3aa ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x4fc218ec ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x568fc607 ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5a573dbe ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x63f9626c ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x64999599 ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x78ef678e ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x79e7397f ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x892fdd0b ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb3c32321 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xcb9c286b ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xd463c6d3 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xdefbfd06 ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xdf865a92 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xee7d0c2c ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xfa0ce508 ivtv_vapi_result +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 0x148cf118 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x2bfe2b56 saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x3836124e saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x5276f624 saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x666b8765 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x73039031 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x73c27241 saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x86a0d2c9 saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xb133b7b2 saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xb7751354 saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xd5021172 saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xefc1a93b saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xf10d678e saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x54f6dafb 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 0x14c3f288 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x466a2695 soc_camera_unlock +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x54713158 soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x65402463 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x705de943 soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x885405a1 soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x96dfdaa3 soc_camera_lock +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xa0f51b3c soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xf89cb947 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 0x5f3e3558 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xa9546115 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xfe2c3a07 soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x56cdca21 soc_camera_client_scale +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0xb496ba50 soc_camera_calc_client_output +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0xb69f99a9 soc_camera_client_g_rect +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0xe3cf0271 soc_camera_client_s_crop +EXPORT_SYMBOL drivers/media/radio/tea575x 0x2fc30d76 snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x769b798b snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0x9968df22 snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0xad447b82 snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x29a8d73e lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x3b7c6ab2 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x46022e2d lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x4c55ba39 lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x4dac02aa lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x939b0f20 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xaaba3260 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xb86b3eee lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/rc-core 0x46a9ac02 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/rc/rc-core 0xddb1ee02 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/tuners/e4000 0x8a40353e e4000_attach +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x9190d727 fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0x95544598 fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x0a2ff189 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x3f275b30 fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xe63d4f15 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc2580 0xbb2a8ddf fc2580_attach +EXPORT_SYMBOL drivers/media/tuners/max2165 0x00f636ba max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x4e745475 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0xc32a02f5 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0xe8696ab1 mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0x6e804478 mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0xc7f15c98 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0x836f67ee qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18212 0x3ec3d915 tda18212_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0x6217b4ac tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tua9001 0x04b99c46 tua9001_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 0x4bdc4127 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/tuner_it913x 0xfd85049e it913x_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x8446f4ff xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0xb1a1e19d xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x0405d2e2 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x71deb385 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x1de6587e dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x246d21b0 dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x38942362 dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x3eb39a7a dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x447f8522 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x59884837 dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x80db1769 dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xb5bcd12f dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xe47726cb dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x1d203209 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x20f85f36 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x66297adc usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x9afb411f dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xa7f89d81 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xd7e9386e dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xf2d4976c 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 0x500fa507 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 0x0105bc36 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x0c48fdfe dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x0e550ccf dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x1f1a5aa2 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x2319f263 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x27c3d29d dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x6955daf2 dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x953ae128 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 0xba94548a dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xbceeca65 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xc0240ce5 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x2aed5305 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x4a797ada em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x5f13ac1f gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x6ee799f1 gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x7a5b9158 gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x8818ec6e gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x95b90471 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xdf5eb0bb gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xf0a19dba gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xfee45763 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x57a4cfcc tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x845b1186 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xc7584215 tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x85b11813 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xae7619d9 ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x42c8e001 v4l2_ctrl_next +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x4adaf0f3 v4l2_ctrl_query_menu_valid_items +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x53c9394f v4l2_ctrl_query_menu +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x5f96a661 v4l2_ctrl_check +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 0x71b0057e v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xa6d9851a v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xad91a250 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x077d62a2 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x5788e14a videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x782bad2b videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xbb1997ee videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xd3c64b5e videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xee42173e videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x3cfe3e5c vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x052f8a7e v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0ab903cc v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0cf6f9da v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x11d6d5ac v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x135f6677 v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x140e371b v4l2_of_get_remote_port_parent +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x154b0a07 video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x18d8b0f9 v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1ac704ff v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1e502628 v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1ed513ab v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x22fe6769 v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x31475a83 v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3230d8ad v4l2_g_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 0x3db7f213 v4l2_of_get_remote_port +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3dd3a8f5 v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x42af12d8 v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x474e472e v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4d96bbe9 v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x53223b93 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5341bd0a v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5f10e2da v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x632ad57c v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x64f0bfb7 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x656fd7f0 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x692950c4 video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6cac5805 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6e8b0003 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x71a2291d v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7378a010 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x74d0efe7 v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a61b971 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7b4a697e v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7c1d186e v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7c86db0d v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7ebfd9bf v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7f923f2a v4l2_of_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x845071e6 v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x85164cf7 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8ebf485c v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9303c9fc v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x95407443 v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa43b537d v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa9d4dca1 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xac6796ac v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xae64312b v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb90cbedf v4l2_of_get_next_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb961d77f v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbac4a225 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc12cf8f8 v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc4ba0527 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc6723c90 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcbb1d49e v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd1d5646f video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd2590477 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xddecf19a v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdeee6341 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe40af77f v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe6fce6f2 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe727f43a v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xed189b41 v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xeda2e512 v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf120f573 v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf16165f7 v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3772fdb video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf4b6f4d0 video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf62d8f27 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf6573ece __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf68c5f87 v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf6b5a867 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfd2040bf v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfdaa90a3 video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfffb178d video_device_release_empty +EXPORT_SYMBOL drivers/memstick/core/memstick 0x159482a6 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4ac781bc memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4d59ebb5 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5888aec6 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x7339e24d memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x7f7a1f63 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8339f4eb memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0xaefeb853 memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc1ab302f memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc28bb4d1 memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc88ed18d memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdc07e67e memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdf86db37 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0a0f6bc2 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0bbbd5fd mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x100dd944 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x29614240 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3198c26a mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3331045f mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3f7edb1d mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x45181199 mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4a7e189b mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5350552f mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x67e93124 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6891a7cb mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x68daaae0 mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6a4a9243 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x70798406 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7113eb2f mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7219fac5 mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7c082bf1 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x81320fa9 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8bbde139 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8c9357d5 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x96d28126 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x992aa2bf mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa0340ce4 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa0dd1e83 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc626556d mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc8a04743 mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xcef13fb6 mpt_get_msg_frame +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 0xe2c018b9 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x09d5a049 mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0acaab0d mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1cbeb97e mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2967f47c mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2c4d2d03 mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x44eb78db mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x47708b43 mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5e629c68 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5e7cb084 mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x63501fd6 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x65e7bff1 mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7203a92d mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x773addb3 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa8eef98e mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb17a8656 mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb64b8fef mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xbdac37ef mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xbfde5f76 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc409a653 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc4a51bf0 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc4a68cd5 mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xcf105412 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd7e6a813 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd975390c mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf3611bf8 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfdf025d1 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xff1df0fe mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x02e72696 i2o_driver_notify_controller_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x11080373 i2o_parm_field_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x11f4d3d7 i2o_msg_post_wait_mem +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x1256cfd7 i2o_driver_unregister +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x1344fe02 i2o_device_claim_release +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x165bee86 i2o_iop_find_device +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x1f237ac3 i2o_parm_issue +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x272cde43 i2o_driver_notify_controller_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x2a843bef i2o_dump_message +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x35481a2e i2o_cntxt_list_add +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x5e0f2a7d i2o_event_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x6339241d i2o_driver_notify_device_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x6f6da0eb i2o_msg_get_wait +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x851d11b2 i2o_driver_notify_device_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x86002fe4 i2o_parm_table_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x9ff5ae30 i2o_exec_lct_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xb4c00dcf i2o_controllers +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xb6baaa36 i2o_driver_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xb71f067f i2o_cntxt_list_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xc0f317aa i2o_find_iop +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xcaffbee7 i2o_status_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xdfe94682 i2o_cntxt_list_remove +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xf3937798 i2o_device_claim +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xf69d9ea7 i2o_cntxt_list_get_ptr +EXPORT_SYMBOL drivers/mfd/cros_ec 0x738d7439 cros_ec_register +EXPORT_SYMBOL drivers/mfd/cros_ec 0x8c219c2c cros_ec_prepare_tx +EXPORT_SYMBOL drivers/mfd/cros_ec 0x902a8b0a cros_ec_suspend +EXPORT_SYMBOL drivers/mfd/cros_ec 0xb53d869b cros_ec_remove +EXPORT_SYMBOL drivers/mfd/cros_ec 0xd5b37f74 cros_ec_resume +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x0aea48dc pasic3_write_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x492458e9 pasic3_read_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x05a0b68f mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x2b78d8ba mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x3343f27f mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x52fd3245 mc13xxx_irq_request_nounmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x6f576765 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x7e564dff mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x953be29f mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x9f060d7e mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xa016fa68 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xda00f670 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xdfbe1b80 mc13xxx_irq_ack +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xe9042a4c mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xfcdc6b6e mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/tps6105x 0x816579ae tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x8a735b53 tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0xe75559e7 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/misc/ad525x_dpot 0x0e8644f7 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x11dcd9f2 ad_dpot_probe +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x7daa3738 altera_init +EXPORT_SYMBOL drivers/misc/atmel-ssc 0x95f14751 ssc_request +EXPORT_SYMBOL drivers/misc/atmel-ssc 0xa87ae559 ssc_free +EXPORT_SYMBOL drivers/misc/c2port/core 0x1170cf73 c2port_device_unregister +EXPORT_SYMBOL drivers/misc/c2port/core 0xd3a70345 c2port_device_register +EXPORT_SYMBOL drivers/misc/ioc4 0x49edea6f ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0x9f79cf36 ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x04a89e8a tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0x0e1994d6 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x1f66ef74 tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x22c7c533 tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0x79607fda tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x7a594904 tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x82ccfad3 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x893d854e tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xa8c2ec46 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0xc8cb52c6 tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xe2af727d tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xf1704508 tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xfe36530f tifm_free_device +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0xb46c5a33 mmc_cleanup_queue +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0x841229e6 mmc_spi_get_pdata +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0x89eab97d mmc_spi_put_pdata +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x7c09d9b9 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x7fc507af cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x9335a1e9 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x304f1b05 register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x46312429 do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x5dc04d1e unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x93950d4f map_destroy +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x31a0f788 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x77c6adba lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x192e6238 simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x2111fd65 mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/mtd 0xe1c98a8f mtd_concat_create +EXPORT_SYMBOL drivers/mtd/nand/denali 0x39a7b043 denali_remove +EXPORT_SYMBOL drivers/mtd/nand/denali 0x85390cd9 denali_init +EXPORT_SYMBOL drivers/mtd/nand/nand 0x06ca5762 nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0x2e3c3d4a nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0x4d51f8b4 nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x5a35fd5b nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0xaaf3711e nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0xed41064d nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x1abf2758 nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xbcc2bb05 nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xedd3c41d nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x6ca947c1 nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xf5e7b108 nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x57a31e57 nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x0a24ea70 onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x4717d44b onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xa723f561 flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xcc34eb13 onenand_addr +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x22247325 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x25600af5 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x825b3e65 arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x8b550f73 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xa5ece2da arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xb7344dd8 arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xc7e31edc arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xdbc52118 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xeee0d67f alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xf9cd2565 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x23e8ab47 com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x9da61315 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xa02bcc52 com20020_check +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x29249467 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x3b473776 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x538ebc0e ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x6108a439 ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x6df9db76 ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x99903901 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x9c5ca4ef ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xadcd0abf ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xde658754 NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xe0246b67 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x263feb4e cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x062aa19a cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x06d85d24 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x17a0289d cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x1ab691d1 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x2bd60807 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x38d646cc cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x408a3cbb cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x53a8cb0f cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x56f14e11 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x5adbb658 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x65e5d18f dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x768a1a8f t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x9d23c6eb cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xb49797d5 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xbdbf83ae cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe6c1de1a t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x09d8fab0 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0f135103 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1d66a595 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x22768eeb cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2bd9a105 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x40126aa9 cxgb4_enable_db_coalescing +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x52be9143 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x53b9b14a cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5a89639e cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6af2f75f cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6dd0f127 cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6de2b2cd cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x83773910 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x83783ff4 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x88bd8602 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9d48fbcb 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 0xb161a86c cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd67c5c92 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd95de9a5 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xef37cbfe cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf41f4280 cxgb4_disable_db_coalescing +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf6a03dcd cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf7e84075 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfa27da61 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfb48eba7 cxgb4_create_server +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 0x1d4e8860 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 0x6066b6b9 vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x9196d804 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xef5e7a81 vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x376a13ef be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x7c058fa3 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 0x0aa1eaf3 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0da66dab mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x10d160eb mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x12ff65fd mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x140bbd38 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1b6293b0 mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1bac8ac6 mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x23ffab6f mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x25fdee57 mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x34a14ed5 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3ed04d16 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x435bba1c mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4df83d1b mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x536e1547 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x577ecc2d mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x858d4821 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8e1eac88 mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaa067313 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc68ec4c5 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xda605f45 mlx4_set_stats_bitmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdd2ccae0 mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe260adad mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf75de6ea mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf932516a mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfa6d0444 mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfbc262bc mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x00652c58 mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x13f6e555 mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2f648cd3 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x342f1691 mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3b730ca2 mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3f4e9228 mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x42f37075 mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x503b9ae1 mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x51609656 mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x691aae21 mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6afb0bfb mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6f89fffc mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7012f753 mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8aaff571 mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x925af54c mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x982719e4 mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x993f418d mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xab492b40 mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb55a8111 mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xca3905dc mlx5_dev_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcc6de3cf mlx5_dev_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd2c34967 mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd33183d8 mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdb86ad1d mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe7192ef6 mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xeb65af33 mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf22a47ba mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x064d5179 hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x812dc378 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xb0dbad6e hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xee3894ef hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xfff444e6 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x40e66842 sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x45d49896 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x492e3884 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x4eb0b641 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x50954db1 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x8007506f sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x9aacb885 sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xbaf7327b sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xc7583c46 sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xe5899f40 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 0xb34a7575 mdio45_ethtool_spauseparam_an +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mii 0x13a5bac0 generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0x5b2494ec mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0x74b4777a mii_check_media +EXPORT_SYMBOL drivers/net/mii 0x80cdac44 mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0xcbd4bee2 mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0xe3c0e166 mii_check_link +EXPORT_SYMBOL drivers/net/mii 0xee4c7000 mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0xffb07b12 mii_check_gmii_support +EXPORT_SYMBOL drivers/net/ppp/pppox 0x126bc5de pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0x50cee57e pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0xcb0f363f register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0x62306f88 sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x10a3d098 team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0x5c581d17 team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0x81843602 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0x8770d466 team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0xc2a03c39 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0xc459a057 team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0xe41e80a8 team_options_register +EXPORT_SYMBOL drivers/net/team/team 0xe81bb349 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/usb/usbnet 0x94da97cb usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0x982cc1d7 usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/usb/usbnet 0xbbd8302a usbnet_link_change +EXPORT_SYMBOL drivers/net/wan/hdlc 0x063e836e hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x18093f3f hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x2cea4208 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x3d487b64 unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0x642cddaf attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x8ba4d73f hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x92d9f069 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0xa31d3b66 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0xcc8b31ba unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xd2cf678e alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0xfdff1dfa register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0xc78af54f i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x13112c86 stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x5613090c reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x66b124d3 init_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x184f1e86 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x215ca780 dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x2cb15440 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x429c921c ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4e2481d5 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x53358ce3 ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x5a702ab7 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x70cc1a90 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa770e131 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xb0c83fb9 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xbe33d023 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xd39d0843 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xf6058e65 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x41f760e7 ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x57918b11 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x7ff2d443 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8246be6c ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8777d7d4 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x895f9dc2 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xaf096710 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xbfe1073e ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xe37a1d34 ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x0199ec46 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x27cf1694 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x39a81762 ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x3cc72158 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x48d7b581 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x49db2444 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4be23c40 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4c6ddcb4 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4e1380ee ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x567cccd9 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xbdaaa946 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xc7b300df ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xecbb481b ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xfe899233 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0x39c8a9a7 ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0x91fc76f5 ath9k_hw_wow_event_to_string +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0x965c4207 ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0xc8e942cf ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x21508665 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x6868dec5 ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x788268f9 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc80c3f5d 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_hw 0x02ca01bc ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x05001d71 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x09e080e2 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0c18c9b2 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0c3e02d6 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x107f6424 ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x19938624 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x20dc73d6 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x22d3dc52 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x23e9aef5 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2458e234 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x255e4b9b ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x25cfbc1f ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2625fbf4 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2c284a8b ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2d7f5241 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x30199a60 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x350814e4 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x35df9292 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3652c609 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x38df33d6 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x413f2374 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x48884356 ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x49459997 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4ccf5841 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5130259f ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x583a8b22 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5882e23f ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x597696c8 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5cf09675 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6027e616 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x61f77c6a ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x636a69f0 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x63fb000d ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6f01f567 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x70f6bb36 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x72df520e ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7414cdd4 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7c17d8e5 ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8902eeac ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x89db84dd ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8d9ea53b ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8ed7d1ea ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9979823b ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x99b56a87 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9b999739 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9c55c421 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9d18d025 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9e27981b ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa1b9cde6 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa3974c6c ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa5e9ca7a ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa8764785 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa9376b5e ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaa0f2834 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xabfc1e4c ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xac19fd0a ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xad2dbed5 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaf641891 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb229d5b4 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb58ae129 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb63b1e37 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb95a5101 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbb67841f ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbf7cfe8b ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc162c0f0 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc413dd88 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc55f0d61 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc5a8a522 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc70a1c1d ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc7715a0a ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc95a5efc ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xca91b27f ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcd49de8e ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcf7b64b6 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcf9f1786 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd1352357 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd5f37bce ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd63b3f1f ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd79e5641 ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd8b691fa ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd9d819b7 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xde0e3136 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdf98180d ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe18b6e9c ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe2df2bab ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe4050bc9 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe61ebcef ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xec148de3 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xed8651e6 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xedbec8a2 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xefc7a188 ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xefe0df58 ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf2dfb072 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf4b61358 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf6bf1526 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfce3462b ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfedf5436 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/atmel 0x7e4c37d3 atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0x82031a1c stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xa06ff49e init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x348b9e84 brcmf_sdio_remove +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x60659594 brcmf_sdio_probe +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x09c8c4a3 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x2c06d329 brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x2dc227f8 brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x463df4f9 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x56478a8b brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x5d77fde3 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x6ceb7173 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x738109af brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7b710b20 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xbb352afa brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xbd73b712 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xca1fb9d3 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd1d9ade0 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xfb9eaa74 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0b968e50 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1723ac32 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x17526c35 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1dc3c993 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x22b7404b hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x25c5570b hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3155bebe hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x385b9f1c hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x421b0ae9 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5b55a764 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5dd5f754 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x66ba3776 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x691f39f1 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x724ee427 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7603f15b hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x86133fed hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8ff2dbcd hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xaac869ea hostap_add_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 0xb95e833d hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xbef61258 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xca1296cf hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd3126a7b hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd5462fc7 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe566520d prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe9f03d70 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xed743eb0 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x0688e177 libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x12a15db4 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x16ed1059 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x4449c0ea free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5406dc62 libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x546b3c8e libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5c987c5c libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5e9795f9 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x75bcfa13 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x76d99804 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x808cd631 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8193bf2a libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x829620bd libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x903667d3 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa2c48c00 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa34d213f libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xaee623d2 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb398ec02 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd14e18de libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe26fc88f libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xea239f6c libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x00c73a69 il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x01644695 il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0365cbf4 il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0371cc17 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x05f5c509 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x069276fd il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0b86895f il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0e75c8cf il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x158f2a34 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x197ccdb9 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1cb1af5a il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1fcbe45e il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x270bb1a3 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x27b8e8ac il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2ace1c71 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2ccde2c6 il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2cd17429 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2e9695d2 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3067f62b il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x360150aa il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x39546a8c il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3b3c70cd il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3c65d447 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3d2fe14a il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3d462319 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3d4af96e il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x42c908e5 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x42ccdce8 il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x437d8e35 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4437e2ae il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x49f7adb6 il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4d787f24 il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4d9b9d37 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4e2e6ca1 il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x533e83cc il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x57b429a0 il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x59947fd9 il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5b85538e il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5bc83de4 il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5d50a86e il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5e20bf0e il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x60a8eb47 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6164b46e il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x641bb828 il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x648af655 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6691acf0 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x67e10743 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6c433e70 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6f728491 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x716da582 il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x75f1993e il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7bcc0b18 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7ea57a83 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x80153161 il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8528a0b6 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x85515ac4 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x86012566 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x90d272aa il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x97c0791a il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9f7dd3c0 il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa025443d il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa2b2e7aa il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa3112287 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xaa16f8d9 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xabfd0e05 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xae69347c il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb3072ab2 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb355ffda il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb5f869c3 il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb84a9d2d il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xba4e1c76 il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbdd1d9b8 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbf3a758e il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc02b195e il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc4ca55c5 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc6c7020b il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xca0a493f il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcfeea85b il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd009115c il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd2cbc0a1 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd3788aa7 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd647d092 il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd9788cef _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xda4b4565 il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xda8b493a il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdd34b91d il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe0e08b94 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe1ea10b0 il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe21c4a95 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe5f9e5bb il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xea33425e il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xebf9f153 il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xef496cfc il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf27034d1 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf6c61808 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf73996d8 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfa2d03b8 il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfeae4c16 il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x08dd8699 __tracepoint_iwlwifi_dev_rx +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x0c50fa2b __tracepoint_iwlwifi_dev_tx +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x1ecc5465 __tracepoint_iwlwifi_err +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 0x675bcb86 __tracepoint_iwlwifi_info +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 0x8de37664 __tracepoint_iwlwifi_dbg +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x954eb7a7 __tracepoint_iwlwifi_crit +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 0xe2dcc8de __tracepoint_iwlwifi_warn +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xf9ec6bdd __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x02bfd34d free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x05711a32 orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5dea5bf1 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x60a37025 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x70c58a85 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x9d30edfd __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xab5a0b2b __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb11ddf35 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xbc78e671 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc10cbfef orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc3bd19b2 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xe483dec6 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xe6367191 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xed14723c orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xee1180e6 orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xf3c1849a orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xf7f4d678 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/btcoexist/btcoexist 0x07d1a41c rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x01e03ff5 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x06574017 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0ff39c1b rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1244b273 _rtl92c_phy_dbm_to_txpwr_Idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1351c460 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x165f9047 _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2f264355 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2fa6c281 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x453f65b2 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4a6fb0d6 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4cbba1ae _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4eacfe8a rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5565e84b rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x59a1abf2 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x63890c62 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x663881b2 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x68db2fa4 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6e0c14ad rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6ee5baea rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x925cac46 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9582c715 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x96acdb82 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9be3de86 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa1ac0868 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa2537440 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa3bf845a rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa74cc647 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xaa333ba8 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xad4e3e45 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb339470b rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb871821f _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc42754f2 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcb19bc19 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcdf83efc _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd5a1284c _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe28fbc10 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe48c2b59 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xea4da331 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf1bc03b5 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf6bdcb89 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf7653b14 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x17d07a90 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0xb7517466 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0xd2f7c5ac rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0xf592779a rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x405966c4 rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x8366aad8 rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xab986ccb rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xd0aea3f4 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x1adb4dc5 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x226cd40f rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x3d389fe9 rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x3ef918bc rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x3f870269 rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x66b1a9e9 rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7e1dce8a rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8615503e rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9908e55c rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb8d9061c rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc0cc2f66 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc610caf2 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc97a54a4 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xcc05aeb3 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xcfa95efc rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd19b20d1 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd61e80d5 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xee12a57c rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf478c634 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xfe8f5ba3 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x4c02b918 wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x869ad813 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xd2df072c wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xd784625f wl1271_free_tx_id +EXPORT_SYMBOL drivers/nfc/microread/microread 0x07d691ac microread_probe +EXPORT_SYMBOL drivers/nfc/microread/microread 0x3be260cd microread_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x19f2bdee pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x942abc61 pn544_hci_probe +EXPORT_SYMBOL drivers/parport/parport 0x0a09d526 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x105c5caa parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x1f231264 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x216d020f parport_read +EXPORT_SYMBOL drivers/parport/parport 0x2e8c7560 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x34c2c51c parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x34f93c24 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x352979cc parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x3d670b5b parport_release +EXPORT_SYMBOL drivers/parport/parport 0x4227a809 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x42858fb6 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x44bfa97a parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x636fe32a parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x6b8c2f75 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x6e79ef30 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x6e7f3804 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x79af6782 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x7c96c760 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x7f629641 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x9e8c538b parport_claim +EXPORT_SYMBOL drivers/parport/parport 0xa345abc5 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xab2e1804 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xadd6ece5 parport_write +EXPORT_SYMBOL drivers/parport/parport 0xb08d6a71 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0xb160a878 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xb7f79360 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0xcb2bdd45 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0xd07aef04 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0xdb2215de parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0xef5fab64 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport_pc 0xd6995272 parport_pc_probe_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xf1392a4b parport_pc_unregister_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x094cf84c pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x0e059a7d pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x1a322827 pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x2ed72a78 pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x53c3a939 pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x851a2bff __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x873631b4 pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x8b1d731b pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x97efda08 pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa0504dc6 pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xb1bef546 pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xb3f95f08 pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xb606a2cc pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xb807f80a pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xce122acb pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xdb24cae9 pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xdb9fdf14 pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xdc6001af pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe0acc112 pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x08ced9d8 pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x15895d6b pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x3d0c8c4a pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x491b6c87 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x54112d9c pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x77d6b399 pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xa5c89ea4 pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xa874fa69 pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xa977e5c9 pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf21c9c4 pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xdb0ab237 pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x41344681 pccard_nonstatic_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0xe741a7c6 pccard_static_ops +EXPORT_SYMBOL drivers/pps/pps_core 0x33ec6f08 pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0x92220ded pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0xb86ac9c0 pps_register_source +EXPORT_SYMBOL drivers/pps/pps_core 0xef3006a1 pps_unregister_source +EXPORT_SYMBOL drivers/ptp/ptp 0x03438ff3 ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp 0x3a53c883 ptp_clock_unregister +EXPORT_SYMBOL drivers/ptp/ptp 0xb0e1ef04 ptp_clock_register +EXPORT_SYMBOL drivers/ptp/ptp 0xf94d980e ptp_clock_event +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x3c523d7a rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x3ef8d044 rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x3fecb6aa rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x62c8bcab rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x72d12196 rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x943cc075 rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xb5bbbfd0 rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xe0b9a5e7 rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xfa2f8b2d rproc_report_crash +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x011ded03 fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x0ec78671 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x1ab6fbf7 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x1be64f13 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x384bdc4b fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x69f88820 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x6fca2069 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x7d3d59d8 fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x93a7990a fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x984c2fc6 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xb781358c fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xee2a2ea5 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0008e9db fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x071cb9c2 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0e23a6a4 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1bf7ba8b fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1e33302a fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x25d62d99 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x271b473e fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2915c1e9 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2d317860 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2f7228d9 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x31027efd fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3ce9692c fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3f9d722e fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x43a877de fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4ae88b83 fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4cbe55ff fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x597a8672 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5fc40f82 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6b2102ef fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x728b9332 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x75de411c fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7ee97b2c fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7f267957 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x80fe8cd7 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x87380fcd fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8dda6d6e libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x91ce9a13 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x99dc42b3 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa086f551 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa3ce4c26 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb274435b fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb3a3393c fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb3b6108f fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb9945a8e fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc3186cf2 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc3f89d7e fc_change_queue_depth +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc4eda96b fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcad492af fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcf404d03 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd4d7fd81 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd618e94d fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xda8c4ad4 fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdae64feb fc_change_queue_type +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdc533eff fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe2d60b7a fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe6152b88 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xee0130ff fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xee990f08 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf140241e fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf355e2a2 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfa7fd202 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xffff546a fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x5b0069c7 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x7cc2ebe7 sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xb5c67ddc sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xc7fa6487 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 0xdbac48ab mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x13752065 osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1616d694 osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x248f0ca2 osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x28f08cd4 osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2fcb1736 osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x31082c41 osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x32826b9e osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x37195d11 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x435e8b3d osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x46fc59d9 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x49468fbd osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4b934c66 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x56a3ccc0 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6c2c0196 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6f289a06 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7bdec232 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8494cfa7 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x855b09e7 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x87a63b12 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8dbf8466 osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x903eab2c osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9a6fcf7d osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9dd67b5a osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xaa04b870 osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xadaf7218 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xaf63e56b osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc95eec99 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcee79ef1 osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd0e3f8e6 osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd6d1b2db osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd99e5c67 osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xda60e8d1 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xdbbce2d5 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xdc7aaa76 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xdf20d80f osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf6e4f532 osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/osd 0x2239c408 osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0x3143b195 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x684d92a8 osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x8440b81e osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0x8cca9417 osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0xdc519bee osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x01d01743 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x411cd4e8 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x5314bb4f qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x923030ff qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x988ac97b qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x9fd814e6 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xaf06b3e2 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xb2ae3126 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xb69ff44e qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xd4cc83bb qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xdb5811cd qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x401bbf62 qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x4ad87118 qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x6d56a029 qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x8783c9bc qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xc0ae4bb2 qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xcd46fa71 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 0x8dc634b2 raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0xe021ce87 raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0xe9fe8bd7 raid_class_attach +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x0ecf000d fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x1558a400 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x1cbc6082 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x26aa56ab fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x4ba240d4 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x5c51feaf fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x8283e191 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x89f352b3 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb55362ad fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xba4aded2 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xc6a1d848 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xca467bf7 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xdd17643e scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x025f1c9a sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x05a8eefd sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x13363d3f sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1ab8017a scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x277c4b43 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x29bd3da7 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2fe3e23c sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3b70d656 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x44f181ec sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x46137a75 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x52e29067 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5b432d66 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5e3bd5c8 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5e65d34e sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x627ab902 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x645e3fa1 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x74b4e146 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x758bb228 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7ac71604 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7ef9c751 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8ac1e5d7 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8d648742 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8e154cc1 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc906c304 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc96205f2 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd51638ee sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xea178125 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xfb367da2 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x205b086e spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3392b7db spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x49a19015 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x66d914a8 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x78db4d6e spi_release_transport +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x931ef267 ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x97161288 ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xc8b7a699 ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x1602e64b ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x183ce4aa ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x18c5d9f9 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x268c1766 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x395074b6 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x4bb909a9 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0x58cc35c6 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x5c0a1769 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0x619a71c0 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x651a82c4 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x87dd6380 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x9d03dffe ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xb5fba23f ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0xb9be9386 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0xba168685 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xc85e0e39 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0xc9130742 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0xd393351e ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xdac45fe2 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0xddbfbfe5 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0xfaa42210 ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x6c6232a7 fwtty_port_put +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xd22bdb48 fwtty_port_get +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x059228b3 adt7316_remove +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xc7ff6150 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x1e0a6886 ade7854_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xa16f5d4e ade7854_remove +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0264d470 lnet_extract_iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0363b57a lnet_copy_iov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0954d3ca lnet_extract_kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0bce7eef lnet_counters_get +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 0x1fe16fd5 LNetGet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x204b8151 lnet_counters_reset +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x29962909 lnet_copy_kiov2kiov +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 0x2e4ed416 lnet_copy_kiov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x33202a6c LNetGetId +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x37ef66e4 the_lnet +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 0x5811a721 LNetInit +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 0x65dde2a9 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 0x7d59a7fe LNetMEInsert +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x854ab844 LNetEQWait +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x8a3064f2 LNetSetAsync +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x8dabcd1e lnet_copy_iov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9b4835b9 lnet_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9da21e17 lnet_notify +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9de986d3 LNetEQAlloc +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa2f67d4f lnet_register_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa3d61f8d lnet_iov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa8c2760b LNetFini +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 0xad43e420 lnet_parse +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb5529428 lnet_set_ip_niaddr +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 0xd70cbf86 lnet_unregister_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe9ad882c lnet_net2ni +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf1b316bf LNetSnprintHandle +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf8802a55 lnet_create_reply_msg +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf98c931f lnet_kiov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xfc78dd90 lnet_set_reply_msg_len +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 0x451dcb54 seq_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x71ea1cef client_fid_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x88ae307f 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 0xbee0ca3f seq_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xc79392f7 seq_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xc997a02f LUSTRE_SEQ_SPACE_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xe7ebbcf5 seq_client_get_seq +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xeb3d8d35 client_fid_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xecee2727 LUSTRE_SEQ_ZERO_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x3dcef185 fld_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x573b9b88 fld_client_del_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x6354558a fld_client_proc_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xbc140972 fld_client_add_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xd5ccdb4f fld_client_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xd7383aa0 fld_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xec14b3d7 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 0x03387ca6 cfs_curproc_groups_nr +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x03c7ae5b cfs_percpt_atomic_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x04d3ce6a lbug_with_loc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x06401e01 cfs_hash_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x069f9bb2 cfs_wi_schedule +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x06b4f415 cfs_cpt_set_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x08917712 cfs_hash_for_each_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x08ada613 libcfs_console_backoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0aae8493 cfs_cpt_number +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0b4b1546 libcfs_lnd2modname +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0de6c369 cfs_cap_lower +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0f5eff79 cfs_percpt_number +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0f7fcd44 cfs_cpt_set_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x123b6908 cfs_hash_bd_findadd_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x12426266 libcfs_run_lbug_upcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x12c54b77 cfs_hash_findadd_unique +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 0x1d5a3928 cfs_timer_done +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 0x22171e80 libcfs_sock_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2663147a __cfs_fail_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2771fd3d cfs_cpt_unset_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x277e62bd cfs_hash_for_each_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x27b6d3ba cfs_ip_addr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x29aafd0c cfs_hash_hlist_for_each +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2a641ef9 cfs_hash_dual_bd_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2b1e0458 cfs_get_environ +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 0x30986343 cfs_range_expr_parse +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 0x375e4bec libcfs_sock_read +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 0x3ea730c0 cfs_gettok +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3ef0d90c libcfs_kkuc_group_put +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 0x41ab33a1 libcfs_ipif_free_enumeration +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x43e4e5d9 cfs_hash_debug_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x44839bbb cfs_rand +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x44f07cfc cfs_pause +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x468bace1 cfs_hash_rehash_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x47fdb4d1 cfs_timer_is_armed +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x48f163c6 libcfs_str2anynid +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 0x579a9518 libcfs_sock_getbuf +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 0x5d179735 libcfs_sock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5d3be65a cfs_crypto_adler32_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5d73c3e3 cfs_expr_list_free_list +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 0x62f56738 upcall_cache_init +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 0x6544a4fc libcfs_kkuc_group_add +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 0x66136d2d cfs_timer_arm +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 0x689c2d7e libcfs_sock_setbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6a59b79b cfs_cpt_unset_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6c4cadc8 cfs_hash_for_each +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6c905b5f libcfs_watchdog_ratelimit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6dfa9ea1 cfs_crypto_adler32_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6e6af71c current_is_32bit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6f928e1b libcfs_debug_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7190502f upcall_cache_cleanup +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 0x75161168 upcall_cache_flush_idle +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 0x7a3d49ae cfs_expr_list_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7a47b94d cfs_hash_size_get +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 0x7c7986cf waitq_wait +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 0x8030b17c 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 0x841679dd upcall_cache_get_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x857aaea7 libcfs_register_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8670e347 cfs_crypto_hash_update_page +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 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 0x8f12bb52 libcfs_log_goto +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8f45f10d cfs_init_timer +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 0x93f93cc6 libcfs_kkuc_msg_put +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 0xa1cbf250 upcall_cache_flush_all +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 0xa9dc74e2 cfs_trace_copyin_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9eae690 cfs_str2mask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xab887583 init_waitqueue_entry_current +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xad019238 cfs_str2num_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xae9b9b29 libcfs_sock_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb00dfd91 cfs_hash_dual_bd_findadd_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbab577e8 cfs_hash_for_each_safe +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbb972619 proc_call_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbb9cb508 cfs_curproc_cap_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbd5d492e cfs_timer_init +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 0xc2911d96 cfs_expr_list_match +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 0xc3eb614e libcfs_ipif_query +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc47433a6 cfs_capable +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc49b1c62 cfs_percpt_atomic_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc9b78bb4 upcall_cache_downcall +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 0xcbab8493 schedule_timeout_and_set_state +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 0xd13aab45 libcfs_sock_listen +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 0xd6f1fc60 cfs_strncasecmp +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 0xdae64bf8 libcfs_sock_abort_accept +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 0xdffc951d cfs_timer_disarm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe3bf6897 cfs_percpt_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe5c216e9 libcfs_sock_accept +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe5cdf633 libcfs_sock_getaddr +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe6555032 libcfs_ipif_enumerate +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 0xe94553b9 upcall_cache_flush_one +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 0xedf3a25a cfs_timer_deadline +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeed48ba7 cfs_hash_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xefbf6d86 upcall_cache_put_entry +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 0xf8efb8c5 waitq_timedwait +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 0xff0f98a6 libcfs_debug_vmsg2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xffcad24b cfs_percpt_lock_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x01986d06 ll_stats_ops_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x6d8bb337 ll_direct_rw_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xac0aa4e5 ll_osscapa_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xba7bb86c ll_iocontrol_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xcd3cde92 ll_iocontrol_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x27095531 lov_stripe_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x4eb1dee1 lov_lsm_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xa288d560 lov_stripe_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xcf67d271 lov_read_and_clear_async_rc +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xe43274bc lov_device_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xeb2fd226 lov_lsm_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x19b4b847 push_ctxt +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x24e1671d lprocfs_counter_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x38bc0e67 fsfilt_unregister_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x3bcbdc4b lprocfs_stats_alloc_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x494ea31a fsfilt_put_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x4d8d6dfa lprocfs_counter_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0x8553b369 obd_memory +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xb4f8ee63 lprocfs_read_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xc48548f9 l_dentry_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xc4d91a0b pop_ctxt +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xd1738e65 fsfilt_get_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xd5a400d4 fsfilt_register_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/lvfs/lvfs 0xe4bc9fbd lustre_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x14a47f31 it_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x9c22b84f it_open_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0xb57d8447 it_set_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0xf46a886f it_clear_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mgc/mgc 0xdc287f95 mgc_fsname2resid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x009a66d0 cl_object_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01665e34 class_parse_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01954cf3 cl_io_submit_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x02f0f98b cl_lock_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x035852d0 lustre_swab_llog_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x04cc71da cl_io_submit_rw +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x057f6d4b class_find_old_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x072e0407 lustre_in_group_p +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x073a68d2 cl_page_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07aa68bb lustre_swab_lustre_cfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x08159878 cl_object_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0836daca lprocfs_register_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x083942ff class_del_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x08734623 dt_store_resolve +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x08a983fd cl_lock_signal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x08ae5a63 llog_obd_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x098ac398 dt_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x099467ea cl_page_list_splice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x09eca0d6 lprocfs_rd_conn_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c6e5876 cl_lock_descr_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0e772fdc class_export_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0fe91547 obdo_to_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10ccfc6b md_from_obdo +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 0x1192bb88 class_disconnect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11988d42 cl_lock_modify +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x123e5b5b dt_directory_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1488ce1e lprocfs_obd_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1491dc30 lu_context_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x14ee94fb class_new_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16b9d184 lprocfs_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16e87af2 cl_page_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x17260880 obdo_cpy_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x17b1d5ae capa_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x17fa403c cl_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1812c674 class_exp2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1914d906 llog_cat_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x194e47a8 cl_lock_hold_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x19584d53 cl_env_nested_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1981c72b obd_export_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1a3b56df lustre_end_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1a5754e9 class_num2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1af0164b lprocfs_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1bc73f17 lustre_register_kill_super_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1bf029bf cl_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ca79be0 cl_lock_is_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1cac4cda cl_2queue_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1def73e5 lu_device_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1e73e32f cl_req_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ef3f7b5 lu_dev_del_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ef4f2ea cl_page_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f0463b3 lu_env_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f91beac cl_lock_ext_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x202855b3 cl_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x20a436a9 cl_conf_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x20d20754 cl_lock_state_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x211e36b3 lustre_idmap_lookup_uid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21b9ad70 obdo_from_iattr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21e6fade class_find_client_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21f78766 lu_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x221826f1 class_parse_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x228d77b3 lu_object_locate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x23587282 lu_site_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x239992bb llog_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x24be9be2 dt_locate_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2547efae lustre_uuid_to_peer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x26840f3a lu_context_key_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x272085ee llog_declare_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x27592ec9 cl_pages_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x275cdc7a cl_env_reexit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x28036d87 cl_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2893d7d2 class_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x29221029 llog_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x297cf5e0 class_handle2object +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x29be455e llog_open_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a9b72cd llog_declare_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a9d0935 lprocfs_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ae1cd79 kuc_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ba26e5b llog_declare_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2c4f68d2 iattr_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ca894d8 cl_env_nested_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2d219c71 dt_record_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2da5807d cl_lock_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ddf7c11 lprocfs_wr_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2e01182e llog_cat_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2e94f6c0 lprocfs_nid_stats_clear_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ef60c56 cl_io_sub_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2f4a2c01 cl_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x30229422 class_disconnect_stale_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x319b1008 lprocfs_rd_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x31c9124f lu_env_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x32ba7a38 dt_quota_slv_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x33c151e3 lu_buf_realloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x33fd0434 lprocfs_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3494cd1f cl_page_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x360ff2ac class_put_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3658063d lu_kmem_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x376c4b77 cl_page_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37e8df1f capa_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37ed6e4b at_early_margin +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x384d55a4 cl_lock_closure_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x388c76a6 cl_req_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38fb0c90 class_match_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x39c8580f class_handle_hash_back +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a9c06db lu_object_find_slice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b71805b llog_osd_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3bb1a9de class_export_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3bbd111d lu_object_assign_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3bf8f2ff lu_object_put_nocache +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c80cb35 cl_env_unplant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3d015b6d cl_io_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3da2aa39 lprocfs_alloc_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3da30c01 cl_page_list_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3daa6b6c cl_page_make_ready +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3eab7bfe LU_BUF_NULL +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f5d6151 lprocfs_rd_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3fd17fad lu_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3fd8b273 cl_io_lock_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3fddcb4e lustre_register_client_fill_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3ff75af9 cl_io_lock_alloc_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4025742e obd_llog_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x404bd7a7 class_handle_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4056c128 cl_lock_disclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x40fd79dc dt_txn_hook_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x41a855e1 llog_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x420e69dd cl_wait_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x43742658 lu_object_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4382a3fd lprocfs_alloc_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x43868c02 cl_page_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x438dbef4 cl_page_list_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x43a85929 local_oid_storage_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x43ebbad9 cl_lock_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x446ee331 cl_io_rw_advance +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44a45103 cl_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44b3cd14 obd_export_evict_by_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44d15dfc cl_lock_at_pgoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44e41abb lustre_posix_acl_xattr_filter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x452f559a lu_buf_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x459b4cc5 class_config_parse_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x46ac5f68 local_file_find_or_create +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 0x483a595b class_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4840ad81 cl_object_attr_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x48a60def llog_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x48c6051c cl_page_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x494cfb52 lustre_acl_xattr_merge2ext +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x496657a1 class_config_dump_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x49a0f6ea lustre_posix_acl_xattr_2ext +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4a1a4e05 llog_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4a94c016 class_new_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ac58713 obd_connect_flags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4b989fbf cl_lock_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4bae92f6 cl_io_is_going +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4bf356ca lustre_idmap_del +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 0x4c9eb6eb cl_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d13458b kuc_len +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4de36f3c lustre_idmap_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e609483 __llog_ctxt_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f2f1fb4 cat_cancel_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f4fbec6 llog_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f56756a cl_lock_get_trust +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f617bd5 llog_cat_cancel_records +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f6db011 cl_object_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4fb39a5b class_detach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ffbec54 lprocfs_seq_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50a9498a cl_object_kill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50c7fc36 ptlrpc_put_connection_superhack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50cb1408 lu_context_key_register_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x512974e0 cl_page_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5252d180 dt_txn_callback_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5364774c obd_export_evict_by_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x547432f0 class_uuid2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54885f87 ldlm_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x55189949 cl_io_fini +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 0x56538f6b lu_context_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x56c9337e cl_lock_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x570d09ae lustre_swab_lu_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5716216a lu_dev_add_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x575dc927 cl_page_gang_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x582b013d dt_quota_glb_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5953bbeb cl_sync_io_note +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a20d896 obd_memory_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b278eb0 llog_osd_get_cat_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b960e8a cl_env_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bc022c5 lprocfs_dt_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bc986b6 cl_page_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5c39e299 cl_queue_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5c4d4d96 lu_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d1f65cc cl_page_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d34ae0d cl_lock_mode_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e93341f lprocfs_oh_sum +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ecc5d7a cl_lock_descr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ed188a9 lprocfs_add_symlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5edd8825 obdo_from_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5f564488 lu_context_key_revive_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5f5c2356 lprocfs_rd_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fc3e415 dump_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fe97b73 block_debug_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x624ffe24 lprocfs_counter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x62ac7d34 obdo_to_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x62c5ee75 lprocfs_exp_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631a518d mea_name2idx +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631fd7b9 lustre_ext_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63afbdc4 cl_lock_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x646be05c lprocfs_rd_filesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x648a7f66 lprocfs_free_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x655edc1c cl_page_list_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x665397c9 cl_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x670b5cf0 lprocfs_rd_timeouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6734adbd lprocfs_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6741bd84 class_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x675244fa dt_otable_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x677fd7f9 proc_lustre_root +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67977b42 lprocfs_remove_proc_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67a90622 la_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67c8db76 cl_lock_nr_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67dc223a lprocfs_remove +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6842d5c3 cl_req_page_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6890d175 lustre_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x68fc3925 cl_page_list_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69c42114 at_min +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69ed702a llog_cat_init_and_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6a9362a8 lprocfs_init_mps_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6af8f22c cl_lock_unhold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6b238192 lprocfs_rd_u64 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6b4c7f25 cl_lock_enclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6c33ec81 dt_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6caf9e74 lprocfs_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6d459ec2 cl_lock_extransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6e4d7bbc class_search_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6fb9a408 dt_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x728af909 cl_page_vmpage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72ddee4c obdo_le_to_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x742559b1 class_unregister_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x749fd1e4 lprocfs_rd_numrefs +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 0x75c50336 cl_req_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x75d2f5b7 cl_page_list_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x75df6dcb lu_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x768ab9f5 llog_cat_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77ba6a44 lu_object_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77cb3dd4 dump_lniobuf +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 0x788c8e28 lprocfs_alloc_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x789796a1 obd_zombie_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x78b7dd75 cl_page_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x79618755 cl_page_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x796b65f1 lprocfs_at_hist_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7974e576 class_unlink_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7a7217dc cl_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b4fc57b at_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7bbe345f cl_lock_mutex_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7bc12d2a lprocfs_init_ops_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7c41384d obd_llog_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7c80369a cl_lock_user_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7de25bdf cl_page_list_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7e09df63 cl_2queue_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7e48326a cl_lock_user_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7edcafa0 cl_env_reenter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f567df4 llog_cat_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f7d7cd9 lu_buf_check_and_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fad7291 raw_name2idx +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fe5561a obd_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fe5a3bc cl_page_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fe9c91a cl_page_own_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8031efb8 lprocfs_dt_rd_kbytestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x805abe8b class_import_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x806cc497 class_add_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8091c5f8 lprocfs_rd_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x809e77c2 class_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8154ec60 dt_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81742d89 obd_ioctl_popdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x830a58ff cl_offset +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x830f235e cl_2queue_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x831f656c class_process_config +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 0x84bc93c5 cl_io_rw_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x84cd06c0 cl_io_prepare_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8503c454 lu_buf_check_and_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8567bab9 llog_cancel_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85d0fdc3 lu_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x865101bf lprocfs_rd_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x870560e3 class_manual_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x873324fb lu_context_key_quiesce +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x888c8245 dt_store_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x88b0e288 cl_locks_prune +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 0x8aa2c358 lprocfs_dt_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aec1270 dt_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8af21970 cl_lock_intransit +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 0x8bef0a97 dt_lookup_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d1d2404 class_register_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d307ad3 cl_object_attr_set +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 0x8ea03ef2 dt_record_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f110fab llog_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f67314c obd_dump_on_eviction +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90ff8de3 cl_io_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9159c97d cl_lock_closure_build +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9199f377 llog_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92877ae9 local_object_unlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92e58479 obd_dump_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9368d132 lprocfs_exp_cleanup +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 0x948800fc lu_context_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9505c895 lustre_idmap_lookup_gid +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 0x95b2251d llog_cat_declare_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95e38fd0 cl_page_list_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95ec998a lustre_groups_sort +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x972153ae cl_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9732baf3 lu_context_key_degister_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x973cc612 lprocfs_rd_blksize +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 0x9855ca7b dt_txn_callback_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x98a6c5fc cl_object_has_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x98c5c010 lprocfs_rd_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9935b48b lprocfs_free_per_client_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99849832 class_conn2export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1ed9d8 obd_jobid_var +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9c89fcfd cl_page_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9d344c51 cl_2queue_init_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9d8b33cf dt_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dbb17b6 lprocfs_dt_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9e22df52 local_file_find_or_create_with_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f393e90 cl_io_read_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f4784ba cl_page_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa16c6823 lu_context_enter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa1871e2c cl_env_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa1d540cc class_conn2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa21bd8f4 llog_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa21c5ea1 obdo_from_la +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa29d5d12 dt_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa35aaf33 cl_page_cache_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa3730a37 lprocfs_rd_connect_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa48c4a30 lustre_idmap_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa513f7e4 lustre_groups_from_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5268a4c capa_cpy +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5b99a66 cl_sync_io_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5ccc254 cl_io_iter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5fb234f lprocfs_write_frac_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa650c39e class_import_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa6627e82 llog_cat_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa674c241 kuc_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7618447 dt_declare_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7945f9a cl_lock_mutex_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa8ff75f4 cl_lock_weigh +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa91a7771 lu_context_key_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa21b7a0 lustre_register_quota_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa8d1daa cl_page_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaae2ccb7 lu_object_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab71d6e2 cl_req_page_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabbf4fbf local_index_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabdf6e56 cl_lock_hold +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 0xaccff9ce lprocfs_nid_stats_clear_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xad618814 llog_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xadf0257e lustre_process_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xae438350 obdo_refresh_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaee68567 cl_io_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xafb7ed76 llog_thread_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xafffa1b8 llog_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb01963a6 class_uuid_unparse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb05364d7 cl_lock_hold_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0fb9886 cl_lvb2attr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1200920 class_process_proc_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b89b6d class_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1e5af75 lu_ucred +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb2786674 llog_exist +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb2ccde89 lu_env_refill_by_tags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb34d5b16 lu_context_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb3ca7c1f cl_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb41998cd lustre_cfg_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb5fedde6 lustre_common_put_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb60d8cb3 lprocfs_rd_num_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6212fcc cl_req_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb62a3e9c capa_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb635af9e dt_acct_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6537c14 lprocfs_free_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6ba5dd5 kuc_ispayload +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6d1ebba cl_object_attr_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6d53e19 cl_lock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb743ec6a dt_mode_to_dft +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb7ddffed lprocfs_seq_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba51067f lu_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba985283 lustre_register_client_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbacac922 lprocfs_write_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbad5997c lu_object_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbb030ff8 obdo_from_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbbf5f452 lu_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbcdcace9 lprocfs_single_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbcee1990 cl_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbcf8a7b0 lprocfs_free_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe598435 llog_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbef405c3 cl_page_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0131aea class_devices_in_group +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0408a57 cl_2queue_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 0xc18d06cf lu_buf_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc19c7f97 cl_unuse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc1ea4786 dt_txn_hook_commit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc2cea38d class_connected_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc37535b9 class_exp2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc41ad3f6 cl_page_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc473b2e0 lprocfs_add_simple +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc52a4b6c obd_devs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc5ba41c4 cl_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc5c8c760 cl_lock_closure_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc65140e3 cl_req_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc665da5d lu_kmem_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc6893b00 cl_page_list_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc6e2dc27 lprocfs_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc77963cf cl_env_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc7b544e7 llog_copy_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8dbaa87 lustre_swab_cfg_marker +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9741724 llog_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9bead01 class_fail_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9dd7e17 lu_device_type_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9f3fe02 lu_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcac83ff8 cl_lock_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0ab67f obd_max_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb2c1da0 obd_exports_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcc45ef1c obdo_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcce6bdd8 cl_lock_enqueue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xccf7a8de obdo_cpu_to_le +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd7537ee get_devices_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcda27b17 class_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcdb355d9 lu_context_key_quiesce_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xce303519 cl_type_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcedb140a obdo_cmp_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcf286155 cl_2queue_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcf2a893f lu_context_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd03ea609 class_config_llog_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd08827c0 server_name2fsname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0a181bf llog_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd10aa042 lustre_swab_llog_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1b1478b cl_attr2lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1bba147 dt_txn_hook_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1f58645 lustre_swab_llog_hdr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd20ff1e6 cl_io_commit_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd28c3e57 dt_index_walk +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd338d3c8 class_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd3473939 cl_object_glimpse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd65760a1 cl_page_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd6f9ddf7 class_name2obd +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 0xd7ea0283 cl_page_is_owned +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7f7b340 cl_lock_mode_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd8f16520 cl_env_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd90bc32d lu_site_purge +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda2192f9 dt_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda520881 cl_lock_mutex_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 0xdacba4b4 llog_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb0c5689 cl_io_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb13dce1 capa_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdc065764 local_oid_storage_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcb52d57 lu_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcbc80a8 llog_osd_put_cat_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc40af0 class_check_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd78c0c7 lu_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd88553c local_index_find_or_create_with_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdda3d949 class_handle_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdde3ac07 cl_use_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde7d985b obd_dirty_transit_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xded2ba7e lu_device_type_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf19b5f5 llog_init_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf7924e9 cl_page_is_under_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe028cf84 capa_encrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe0b8ced1 llog_cat_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe28447f4 cl_lock_is_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2eb4470 class_get_next_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe3323f5d class_handle_free_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe4db0070 cl_page_clip +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe6aa4218 cl_page_list_move +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe6c6e3bb class_incref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe750f1b4 cl_io_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe778d1dd cl_io_iter_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe77a5c09 cl_page_unassume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7d83236 cleanup_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe82540ef lprocfs_obd_rd_max_pages_per_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe858e2e4 cl_env_implant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe86124f8 cl_io_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe87ce44f class_disconnect_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8e84c32 class_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeaa708e9 lu_cdebug_printer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeacec47c lprocfs_oh_tally_log2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeb3f388a _debug_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeb5d7049 cl_io_loop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xebaa171e class_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec329718 cl_enqueue_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec34fea1 lu_env_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec76847f lustre_idmap_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec7d6b85 obd_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec89cf08 cl_page_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xede828bd lprocfs_rd_kbytestotal +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 0xefd69cda dt_index_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf01e2527 server_name2index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf160baaf lprocfs_wr_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf1f11eb9 cl_vmpage_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2fd6695 statfs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf33cc730 lu_object_anon +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3bc5b9d dt_lfsck_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3c2a001 dt_try_as_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf43f1394 lu_object_add_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf490d5f9 class_del_profiles +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf4a8d3f6 lu_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf4d7c584 cl_lock_discard_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf5410bdb cl_page_find_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf5773720 lu_ucred_assert +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf591e5ae llog_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf5d3f372 lprocfs_rd_server_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf60d4659 capa_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf6c6433e cl_page_is_vmlocked +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf6e2abc9 lu_object_invariant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7020831 lprocfs_dt_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7ad6037 lu_context_key_revive +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf874c950 dump_lsm +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8829417 lu_site_init_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf896c873 dt_version_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8c2df92 obdo_set_parent_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf97fa378 lprocfs_add_vars +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf9c24760 cl_page_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf9cb3cfd cl_lock_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa813d06 capa_hmac +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfab7fdb0 lu_context_key_degister +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfb93e218 lu_object_find_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbc248d3 cl_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbea0098 lu_types_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbfa87ea class_conn2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc5fedda cl_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc6405c9 cl_io_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc726e77 cl_unuse_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc7f18d0 obd_pages_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfce4103b lu_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfcf5e4a0 cl_page_list_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd10c704 cl_object_attr_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd68d17a class_notify_sptlrpc_conf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd835342 cl_2queue_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdbe1557 lprocfs_write_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfe16597e lu_ucred_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff57e92d class_match_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xffa171f3 lprocfs_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xffe41438 lu_device_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfffc1f11 lustre_swab_ost_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/osc/osc 0x5c4940c2 osc_update_enqueue +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 0x027ec05f ldlm_namespace_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x02db52bd ldlm_pool_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x032b57c6 sptlrpc_gc_add_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x03d2d9c7 ptlrpc_set_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x048b1345 lprocfs_wr_pinger_recov +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 0x05a86aee ldlm_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x05a9c5b9 sptlrpc_target_export_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x066590b1 req_capsule_other_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 0x0926fea5 ptlrpc_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x095587d0 lustre_msg_buflen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x09e3070a llog_origin_handle_cancel +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 0x0b921e82 ldlm_lock_allow_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0bcacb5d RMF_MDS_HSM_USER_ITEM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0c1f73c5 sptlrpc_req_replace_dead_ctx +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 0x0d797472 req_capsule_server_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0dda0448 ptlrpc_reconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0e750942 ptlrpc_prep_req_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0fb7533a ldlm_blocking_ast_nocheck +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10f18f20 interval_iterate_reverse +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1109a313 ptlrpc_service_health_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x115017f6 req_layout_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x11ba0ff7 ptlrpc_send_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1296663d llog_origin_handle_next_block +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x12b6f5a3 ptlrpc_connection_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1474440e ldlm_pool_setup +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 0x15e21a8c do_set_info_async +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 0x17e0e9f3 sptlrpc_cli_unwrap_bulk_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x18ca67cc ldlm_cli_enqueue +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 0x19ddb80e ldlm_lock_change_resource +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 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 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 0x1ded71ba client_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1e8e48a4 sptlrpc_flavor_has_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1eb2a65f RQF_OST_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ee46b51 lustre_init_msg_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ee9eb3c RQF_MDS_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1f29fd95 ptlrpc_request_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1f628f25 llog_origin_handle_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x203814a6 req_capsule_set +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 0x229b82ce sptlrpc_enc_pool_get_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x233790b5 RMF_OST_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x23f7b157 ldlm_namespace_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x244e5558 lustre_msg_get_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x24aafdba RMF_MGS_TARGET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2585a629 RMF_SEQ_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2587513c RQF_LDLM_CP_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x269554ce RQF_LDLM_INTENT_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x26f99d16 RQF_MGS_CONFIG_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x275b26d1 target_print_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x280dbd6e ptlrpc_req_set_repsize +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x285e5b99 lustre_msg_set_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x287f37f7 sptlrpc_cli_ctx_get +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 0x2cb39371 ptlrpc_save_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ccd5b87 ldlm_cli_cancel_list_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d26bb1e ldlm_prep_elc_req +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 0x2d8c7903 sptlrpc_conf_client_adapt +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 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 0x318a4c57 ldlm_pool_set_limit +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 0x35939a3d lustre_swab_fiemap +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x36401f51 sptlrpc_cli_ctx_wakeup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x37aca239 ptlrpc_resend_req +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 0x3896ba40 ldlm_pool_shrink +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 0x395be160 ldlm_get_enq_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39607d45 llog_origin_handle_prev_block +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39c9c2f5 ptlrpc_prep_req +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 0x3a40f05c ptlrpc_req_finished +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3a58c345 ldlm_lock_fail_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3a657c35 lustre_pack_reply_flags +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 0x3b7ad020 ptlrpc_pinger_sending_on_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3bedb0c7 RMF_LLOGD_CONN_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3beec4e7 client_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c63e62b RQF_MDS_REINT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ca50f33 RQF_MDS_HSM_CT_REGISTER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3cbf38ee ptlrpc_abort_inflight +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 0x3dddb3e2 dump_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3e185bc6 ptlrpc_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3e5374c0 sptlrpc_target_sec_part +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ee4579b ldlm_pool_get_limit +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 0x3fb84284 ptlrpc_init_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41008cef RQF_LDLM_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41cb2436 req_capsule_has_field +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41e5505b ldlm_cli_cancel_unused_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4226f83d req_capsule_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x431595f4 ldlm_destroy_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4345ecba ldlm_lock_fail_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4369bb3a ldlm_resource_foreach +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 0x44f3ab6b ptlrpc_start_threads +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 0x4753bd9d ptlrpc_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47db9f24 ptlrpc_request_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47f5e903 RMF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4807f40e ptlrpcd_alloc_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x487c3bfd llog_initiator_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x48814c9f lustre_swab_ost_lvb_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x48e62d08 req_capsule_client_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x49523757 sptlrpc_get_bulk_checksum +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 0x4b09ce4b lustre_swab_mdt_rec_reint +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4b85a07e ldlm_cli_cancel_unused +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d7580d0 lustre_swab_hsm_user_item +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4daae85a ptlrpc_lprocfs_unregister_obd +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 0x4ee80929 ptlrpc_deactivate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f3013d5 ptlrpc_register_bulk +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 0x53cdb6fd ptlrpc_commit_replies +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x540eaa1e client_import_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x545c307a client_import_find_conn +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 0x5601414d ptlrpc_restart_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x560231bb ptlrpc_queue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x577a2720 req_capsule_client_dump +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 0x59ca398b ptlrpc_add_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x59f8e241 lustre_free_reply_state +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 0x5b5f02cf ldlm_cli_enqueue_local +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 0x5caae213 ptlrpc_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e0b19b1 RMF_CLUUID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e0fde5b sptlrpc_cli_enlarge_reqbuf +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 0x5fae10c5 ldlm_lock_convert +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 0x6194b0fe ptlrpc_unpack_req_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x62192cf8 dump_obdo +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 0x6419606b 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 0x653723dc RMF_LOGCOOKIES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6546203f ptlrpc_request_bufs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x657b00b7 ptlrpc_init_rq_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x658694ca ptlrpc_invalidate_import +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 0x68b87e85 req_capsule_server_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68cb2541 interval_is_overlapped +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68f49e5e ptlrpc_expired_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6912990a RQF_OST_QUOTACHECK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x696ba811 lustre_msg_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x69c2b4d6 ptlrpc_unregister_service +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 0x6aaa1287 ptlrpc_obd_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6ab1bdb6 lprocfs_wr_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c209e55 req_capsule_server_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6d1aa835 ptlrpc_wake_delayed +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 0x6f4ed9c4 ptl_send_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6f6dc736 lustre_swab_mdt_remote_perm +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6f76a62b ptlrpc_pinger_del_import +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 0x70e2e118 ldlm_init_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x71caed85 ptlrpc_request_pack +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 0x7287b6c0 ldlm_pool_get_lvf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x72961bd4 ldlm_lock2handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x73136704 lprocfs_rd_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x73e4e5c9 ptlrpc_add_rqs_to_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x74190098 sptlrpc_register_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x74840056 lustre_msg_set_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75922be9 req_capsule_server_grow +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 0x77571cc6 lustre_swab_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77840c82 sptlrpc_rule_set_choose +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78bdb0ba ptlrpc_disconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78bf9136 lustre_swab_ldlm_lock_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78cc9e07 ldlm_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x79479e12 sptlrpc_import_flush_all_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x79825bda sptlrpc_lprocfs_cliobd_attach +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 0x7bd584cc lprocfs_wr_evict_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7c4c6107 RQF_LDLM_CONVERT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7ce0848b ptlrpc_activate_import +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 0x7f3152b8 ldlm_resource_iterate +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 0x8060dcca ldlm_cli_cancel_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 0x8161d082 sptlrpc_cli_ctx_expire +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x817d7f1f lustre_msg_add_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x823a5922 llog_client_ops +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 0x83b25b09 sptlrpc_target_update_exp_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x849518d9 ldlm_init_export +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 0x86cafbae ptlrpc_at_set_req_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x86f54369 ptlrpc_unpack_rep_msg +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 0x87938d8c lprocfs_wr_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x87bf7b3c sptlrpc_get_next_secid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x87ff2afb ldlm_pool_fini +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 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 0x8afe66ea ptlrpc_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b7ca77f sptlrpc_conf_target_get_rules +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b854254 lustre_swab_mgs_config_res +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ba3a959 ptlrpc_replay_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ca452a3 _ldlm_lock_debug +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 0x8dfb55f2 sptlrpc_import_sec_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e0e3b78 ldlm_destroy_export +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 0x90649ea4 ptlrpcd_wake +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 0x91d82e98 ptlrpc_unregister_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x923b67fa ldlm_cli_cancel_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x927f8e60 ldlm_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x934189b7 lock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x937b1ee0 lustre_swab_mdt_ioepoch +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x94315d51 sptlrpc_svc_ctx_invalidate +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 0x95e680e7 sptlrpc_gc_del_sec +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 0x97f5cca5 ptlrpc_lprocfs_brw +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x980fcfdc ptlrpc_connection_addref +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 0x9bb4d881 ptlrpc_pinger_add_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9bb5198b RQF_MDS_CLOSE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9bf67231 req_capsule_set_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9cd8b2e9 sptlrpc_cli_ctx_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9cfb43f9 ldlm_lock_allow_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d7ea314 sptlrpc_pack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d929a67 ptlrpc_request_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9f096b4e ldlm_lock_downgrade +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9f4c6e39 ldlm_namespace_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9f549358 ldlm_enqueue_pack +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 0xa2696809 ptlrpc_register_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa28cbad7 ptlrpc_request_alloc_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3571865 ldlm_namespace_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa39b6a70 client_disconnect_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3d2a6ee RMF_CAPA1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4562ba5 ldlm_resource_unlink_lock +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 0xa53ef56d req_capsule_filled_sizes +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 0xa5c330be ldlm_pool_init +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 0xa78551dd ptlrpc_buf_set_swabbed +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 0xa915066a client_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9704f80 lustre_msg_get_last_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa99f355f ldlm_blocking_ast +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 0xaa69752f __ptlrpc_prep_bulk_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaad5a55d ldlm_pool_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xab3cb770 req_capsule_client_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xab842a74 target_pack_pool_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xab9e754b req_capsule_extend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xacae546f ptlrpc_recover_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaddc3979 lustre_swab_lustre_capa_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae874621 ldlm_pool_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf4e9658 RQF_MDS_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf50a0d6 RMF_HSM_STATE_SET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf5ad069 sptlrpc_sec_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf99de54 sec2target_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf9ca4eb ldlm_pool_set_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaffa6eab sptlrpc_sec_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb03170ec ldlm_resource_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0751fa4 RQF_LLOG_ORIGIN_HANDLE_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb154dcf3 req_capsule_field_present +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb160924e _debug_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1b43d8a dump_rcs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1d593b4 ptlrpc_nrs_policy_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb24705e8 sptlrpc_sec_destroy +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 0xb2b1817d lustre_swab_ost_lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb2c4a491 llog_origin_handle_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb32cc260 __ldlm_handle2lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb44ae32e req_capsule_server_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb4a7ecf3 lustre_msg_add_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb512ebc2 sptlrpc_parse_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb5a42df1 ldlm_prep_enqueue_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb5d9ec4d ptlrpc_hpreq_handler +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 0xb6b0e0b3 ptlrpc_set_import_active +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 0xb8ab7d62 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 0xb9c71744 ptlrpc_request_set_replen +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 0xbc95e7d1 ldlm_namespace_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbcf81ad3 sptlrpc_cli_unwrap_bulk_read +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 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 0xc08d70c3 ldlm_cancel_resource_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0cdf55e RMF_MGS_SEND_PARAM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc1ed015f ldlm_pool_get_clv +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 0xc44c7b15 lustre_pack_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc453c866 ptlrpc_resend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc45b2c48 ldlm_namespace_new +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc52fd8c4 client_obd_setup +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 0xc620a9e5 ptlrpc_lprocfs_register_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc6933e03 sptlrpc_gc_add_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc694be4b RQF_LLOG_ORIGIN_HANDLE_PREV_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc75a0620 ldlm_glimpse_ast +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 0xc88618c8 ptlrpc_req_finished_with_imp_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc8f586a9 ptlrpc_connection_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc984cc96 sptlrpc_unregister_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc9eb5d47 lustre_pack_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xca5a81ec ptlrpc_pinger_ir_down +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb0d85e3 ptlrpc_stop_all_threads +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 0xcb527525 req_capsule_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcd0319a6 ldlm_register_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce1a689b sptlrpc_enc_pool_add_user +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce3b3604 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 0xcefc4465 ptlrpc_prep_bulk_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf7d7e6d ptlrpc_retain_replayable_request +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 0xd537ded2 lustre_swab_obdo +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 0xd72940ab ptlrpc_nrs_policy_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd7910326 lustre_swab_obd_statfs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd80f5af3 ldlm_cli_enqueue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd89b1596 ldlm_completion_ast_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8a4c1bd ptlrpc_unregister_reply +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 0xda2ac111 sptlrpc_proc_root +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 0xdba559e1 ldlm_extent_shift_kms +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdc74fb1b ldlm_reprocess_all_ns +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdcf910b9 lustre_swab_ost_last_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd0456e8 ptlrpc_req_xid +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 0xdd3c2e0f unlock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd7232a1 ldlm_namespace_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xddbf55bb ldlm_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xddc40a85 lustre_msg_get_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xde0807b6 req_capsule_shrink +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 0xdede86b4 ldlm_resource_putref +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 0xe036cca1 ldlm_pool_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe07f96ac req_capsule_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0cc694c RQF_LLOG_ORIGIN_HANDLE_NEXT_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe1cdd97c lustre_pack_reply_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe40e0a50 lustre_msg_get_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe57bd972 sptlrpc_current_user_desc_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe5e8169b lustre_errno_ntoh +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe643998e RQF_OST_SETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe661911b sptlrpc_cli_wrap_bulk +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 0xe80a7c90 ptlrpc_request_alloc_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe8ceb7a0 req_capsule_server_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe9bbe639 ldlm_lock2desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeabaa0b1 lustre_swab_mdt_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeabac4fc sptlrpc_rule_set_merge +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeb7272cf ptlrpc_cleanup_client +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 0xed34d000 __ptlrpc_free_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xed905d96 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 0xee4418a1 ldlm_cli_update_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeeb8d683 ldlm_flock_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef1aeca9 RMF_FLD_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xefca7c6f ptlrpc_schedule_difficult_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0241d6e lustre_swab_hsm_progress_kernel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf091d8c8 ptlrpc_fail_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0d52b5f ptlrpc_pinger_suppress_pings +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0e6b6f3 ptlrpc_set_add_new_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf1300275 _sptlrpc_enlarge_msg_inplace +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf277c125 RQF_OST_GET_INFO_FIEMAP +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf27d49dc sptlrpc_target_choose_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf35f132b lustre_swab_ldlm_resource_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf3d44370 RQF_OST_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf3eaec97 ptlrpc_cleanup_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf3f40eb5 ptlrpc_buf_need_swab +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf43540b9 lustre_swab_mgs_nidtbl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf440ca00 req_capsule_server_sized_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf45085e1 sptlrpc_conf_log_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf49cd37c client_import_del_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf4cf6cd8 req_capsule_client_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf55c033b RMF_MGS_CONFIG_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf584a16b sptlrpc_part2name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf596e9ae sptlrpc_conf_log_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf607fc23 sptlrpc_flavor2name_base +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf617ab8a lustre_msg_get_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf639afe3 req_capsule_init_area +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf67dc8d6 target_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf68fe8d6 ptlrpc_mark_interrupted +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf697b756 ldlm_dump_all_namespaces +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf6a09de8 ptlrpc_set_add_req +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 0xf97b4e4b ptlrpc_check_set +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 0xfc877e73 ptlrpcd_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfd148bf8 RMF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfe5fceb3 llog_origin_handle_read_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff02a0e9 ldlm_lock_set_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff081f5d llog_origin_handle_open +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 0x9559e59b cxd2099_attach +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x0ca5c6b8 go7007_snd_init +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x347d04d9 go7007_read_addr +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x3cec9962 go7007_update_board +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x45e58072 go7007_parse_video_stream +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x5e2c97a1 go7007_boot_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x60982d3a go7007_snd_remove +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x82fde2bf go7007_read_interrupt +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x8c2f8cd6 go7007_register_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xea6e8ffd go7007_alloc +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0033c84e rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x09d135b2 free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0d55d8d6 rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1ae921f0 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1cdace2f rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1ec3319d rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x239ca743 rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x32019376 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x36168c1b rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3ec87af2 rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3f15d5eb RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4acfaf10 rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x50d82f64 rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5331ab76 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x603196df rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x63172ec9 rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6582f17e rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6a0e8459 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x722eed75 rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x72c86c61 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x78231696 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x78d97b69 rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7a00f8af HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x815f9519 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x83fe14e7 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x85758574 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x88cc46df rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9221564f rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9722ddc5 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9e25ced6 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa8d770e7 Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xac4ab74d rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xad9e9d0e rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb0a2154e rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbbf9d796 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbf31ffe3 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc20dc16d rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc2377b32 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc8002620 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcc38a9c8 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xce5d01a6 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd09b57a7 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd2aadfc5 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd5e0c476 rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe24000f6 rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe9caa954 rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xefcf1c07 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf070f6a6 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf7758a28 rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfd5a3653 rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0a1b8929 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x15911ee9 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2c61b2f0 ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2eabadd2 ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x39544f7a ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4f051e77 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x58750d3e ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5b627713 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5cf4073e DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x65ff4138 ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x67faf60d ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6fce5ca8 SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x745e3f0b ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7acf0db5 HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7dcd556c ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x804c888e ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x827076ca Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x83e059da ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x89f0625d ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8a516129 ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x918177a7 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x93cc443d ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x970fcf86 ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x98b13d6a ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x99d79a71 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9a5a65cf ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa1040f26 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa37525e3 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa3fb89e3 IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa5c7849d ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa7a1a6e8 Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa8922ed4 ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa8f6432f ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb37260c2 ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb8d1bb03 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbbf39b90 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc1f7bae7 ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcb9d97fd ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcf283613 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd1ba5e1c ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd23095f0 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd54de170 DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd7475d79 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd9b916ed ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe14d117e ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe218a8f2 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe3c1fbfd ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe5464441 ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe55683fa ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe749f0ea ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xea3701f4 ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xeb742280 ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xebad7cd2 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf2d42d73 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf9f97ab5 ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfe093eac ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x0017f35f set_bp_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x00ea0cde set_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x06d6f244 get_bp_dis_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x09df8f3e set_tap_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x0a8d32c3 get_bypass_slave_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x1936264c set_dis_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x1d2eb8ca get_tap_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x203af1f7 reset_bypass_wd_timer_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2070f14a set_bypass_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x27b990ef get_bypass_info_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2ba7cd35 get_wd_autoreset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2c3f1c17 get_tx_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2f59e636 get_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2fdb893a get_tap_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x361cf40a get_dis_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x45ca99c3 set_wd_autoreset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x550a188c set_bypass_wd_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x5cb59e92 get_bypass_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x66b60122 set_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x675208c0 set_tx_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x692623f2 get_std_nic_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x75131ec6 set_bypass_pwoff_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x76c0b7d0 set_tpl_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x7e872825 get_wd_exp_mode_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x7e8d701e get_wd_expire_time_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x86388b07 get_bp_disc_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x93ae4648 get_wd_set_caps_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x95e42b0d is_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x9df5f807 set_dis_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x9e21f42e set_std_nic_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xa689a214 get_bypass_wd_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xae117788 get_bp_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xc368d30d get_dis_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xccab5de0 get_bypass_caps_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd3e034b3 get_bypass_pwoff_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd9c1ccfc get_bp_disc_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd9d38d97 set_wd_exp_mode_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xe640f06e set_bp_disc_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xecdaa456 set_bp_hw_reset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xedcd3c1b get_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf06d67bf set_bp_dis_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf57c1671 get_bp_hw_reset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf693c3a1 bp_if_scan_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf8237882 get_bypass_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xfa59240d get_tpl_sd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x05af3c4c set_wd_exp_mode +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x05b08a42 set_bp_hw_reset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x0b0d5ce0 get_tap_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x0fc2e83c reset_bypass_wd_timer +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x123a8133 get_tx +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x157ec89c get_bp_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2440f05a get_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2b01d1d4 set_bp_dis_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2c27a2f0 set_dis_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2da97f4b is_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2e86c67b get_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x37416370 get_bp_hw_reset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x37bdab27 get_wd_autoreset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x3da96a18 get_bypass_caps +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4025805e get_bypass_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4940a0cc get_bypass_info +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4d21ff51 get_bypass_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5147360c get_bp_disc_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x515d4df1 get_bypass_slave +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5560267e set_wd_autoreset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5be44d44 set_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x6653590c get_wd_exp_mode +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x6bda14ec get_bp_dis_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x72c618ae set_bypass_wd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x76d47e6f set_bp_disc_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x794e3815 set_tap_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x7c6cbc16 get_tpl +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x84a263dc set_tx +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x8a16f22c set_tpl +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x946ff795 get_wd_set_caps +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x94f6aff2 get_bypass_wd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x9d1ecf73 set_bypass_pwoff +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xb1385629 set_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xbff68c45 set_bypass_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xc871c561 get_dis_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xcee528df set_std_nic +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xd202dd85 get_bypass_pwoff +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xd787f151 get_wd_expire_time +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xdb6a39d2 get_dis_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xebd25ae5 get_std_nic +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf1e9f8c1 set_bp_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf224abd9 get_tap_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf5a591b2 set_dis_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf643fd4c get_bp_disc_pwup +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0x3b2ce5cc xillybus_endpoint_remove +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0xa1527eb6 xillybus_init_endpoint +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0xb36678b7 xillybus_do_cleanup +EXPORT_SYMBOL drivers/staging/xillybus/xillybus_core 0xcdb47480 xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x06f2b59b iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x090a123e iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x15c200ad iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x178cb3d7 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1e2adb6b iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2276c853 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2ebfd79e iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x37964398 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x37b6de66 iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x49a07dd6 iscsit_handle_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7946dbe4 iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x822a47b2 iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x859ca1eb iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x86d363c6 iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8e6d6b08 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x922bde1a iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x983579c8 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9e7e0444 iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa4991290 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xac7f7567 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb7e331e2 iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb9ebac2b iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc406b289 iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc957a3e8 iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xdda6ae8b iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe37c2eb0 iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf528fb3d iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf56ab4da iscsit_build_reject +EXPORT_SYMBOL drivers/target/target_core_mod 0x027f36e3 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x03351991 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0x03907d43 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x077ec44d target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x0abe5ecc iscsi_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x14a8e8bc transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x1744bb85 fc_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x17de9fe6 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x1e26b19e transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x21545fcd transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x2cc6d7d6 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x2d237994 iscsi_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x2de30fa7 transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x2ecac54f target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x315f6970 target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x3469a4d4 target_fabric_configfs_free +EXPORT_SYMBOL drivers/target/target_core_mod 0x3ab1cc45 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x3adcb2be target_fabric_configfs_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x3e8d7429 core_tpg_clear_object_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x4027df05 iscsi_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x4325a004 sas_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x4407319b target_configure_unmap_from_queue +EXPORT_SYMBOL drivers/target/target_core_mod 0x4f9bde3f transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x52aee09a target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x52c58aff spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x5b667fc0 spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x5bb7eb08 sas_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x5c6fe2b9 fc_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x5f2752dc target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x636daeda transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x6423907d target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x647eecc3 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x6c07fbc0 core_tpg_del_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x7180275b transport_subsystem_release +EXPORT_SYMBOL drivers/target/target_core_mod 0x75393b81 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x7788e32d transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x78e6800a transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x7edb670f sbc_execute_unmap +EXPORT_SYMBOL drivers/target/target_core_mod 0x7f450d3b sas_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x80a920ca target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x81cf977c spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x92d31cb2 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x94cf9f2f transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x9eee3c67 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0xa6459120 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xad07123f fc_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xaf32e900 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0xb69ab8d4 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0xb77ce7cd sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0xb8384058 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0xbbb0e31a transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xc106f0d6 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0xc407e505 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xc4922ea6 fc_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xc4b270bf target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xc5092054 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xc75db023 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0xca8c18e9 sas_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0xcc656c26 target_fabric_configfs_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xd027d8b1 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0xda064d79 target_fabric_configfs_init +EXPORT_SYMBOL drivers/target/target_core_mod 0xdc529eab __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xe073e268 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xe1cd72d9 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xe87f8bdf core_tpg_add_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xe9b0c137 transport_subsystem_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xeb28c308 sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0xee773b4a iscsi_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf003c60e target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf71436fc core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xf9e821e4 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xfd7eab19 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xfe985466 target_to_linux_sector +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0xcb99b2f6 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0x4cc8ba09 unregister_gadget_item +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x1d710387 gether_get_host_addr_cdc +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x29933be7 gether_get_host_addr_u8 +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x34441774 gether_get_ifname +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x50c99261 gether_set_host_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x56be2d25 gether_set_dev_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x5a616483 gether_set_qmult +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x63f1ecf0 gether_get_qmult +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x7029c6e2 gether_setup_name +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x95c7c202 gether_register_netdev +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0x9f7ac4bf gether_connect +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xc6ea7694 gether_get_dev_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xcf0e4381 gether_disconnect +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xe7447399 gether_setup_name_default +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xee6b0ceb gether_get_host_addr +EXPORT_SYMBOL drivers/usb/gadget/u_ether 0xf1951106 gether_set_gadget +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x3a6d4f22 rndis_free_response +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x3ca38e3a rndis_signal_connect +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x47f75d70 rndis_rm_hdr +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x4ca90996 rndis_signal_disconnect +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x5d22b406 rndis_register +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x785d494b rndis_msg_parser +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x840dd143 rndis_deregister +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x988ad2a2 rndis_set_param_vendor +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0x9acf72e4 rndis_set_param_medium +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xa90054ee rndis_uninit +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xb971ebca rndis_get_next_response +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xcc93bebe rndis_add_hdr +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xd2fe47b1 rndis_set_host_mac +EXPORT_SYMBOL drivers/usb/gadget/u_rndis 0xf6481e57 rndis_set_param_dev +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x00009bec fsg_show_removable +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x0c2e5f19 fsg_show_cdrom +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x1636e775 fsg_show_ro +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x1710b539 fsg_fs_bulk_out_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x1b1cc3af store_cdrom_address +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x2933ee1d fsg_ss_bulk_in_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x2d50597f fsg_store_nofua +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x30ebe27c fsg_show_nofua +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x37eff489 fsg_lun_close +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x398778e1 fsg_ss_function +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x423845e4 fsg_ss_bulk_in_comp_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x47a283be fsg_lun_fsync_sub +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x56344daf fsg_hs_bulk_out_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x5958be21 fsg_store_removable +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x62bd77c5 fsg_store_file +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x68c27074 fsg_store_cdrom +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x857b6dc2 fsg_hs_function +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x94caa546 fsg_store_ro +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x9567d4f5 fsg_lun_open +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0x95cffb3e fsg_hs_bulk_in_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xa5cae92f fsg_ss_bulk_out_comp_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xa5f99b69 fsg_fs_function +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xb52ba28a fsg_intf_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xb54d0d95 fsg_fs_bulk_in_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xce754722 fsg_show_file +EXPORT_SYMBOL drivers/usb/gadget/usb_f_mass_storage 0xf4efc0c8 fsg_ss_bulk_out_desc +EXPORT_SYMBOL drivers/usb/gadget/usb_f_rndis 0x4efdf8ba rndis_borrow_net +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0xcb7a9c33 sl811h_driver +EXPORT_SYMBOL drivers/usb/phy/phy-generic 0xa64a4cea usb_nop_xceiv_unregister +EXPORT_SYMBOL drivers/usb/phy/phy-generic 0xd0e43207 usb_nop_xceiv_register +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x196bed30 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x29bf7c48 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x2b750f0a usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x3c194495 usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x3d4124b3 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x42ecac03 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x55fa9e05 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x680ffa73 usb_wwan_set_termios +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x7611415b usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xaeb496db usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xba2dca46 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe44a9e6e usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe9c61fbf usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x26dae73f usb_serial_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xc32f57fc usb_serial_resume +EXPORT_SYMBOL drivers/vhost/vringh 0x0dda8c5a vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x1f063017 vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x2eae4a2a vringh_getdesc_user +EXPORT_SYMBOL drivers/vhost/vringh 0x36dfce73 vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3b304ebb vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3eaf442a vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x3fa42e4f vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x4311cd91 vringh_iov_pull_user +EXPORT_SYMBOL drivers/vhost/vringh 0x5dafbd4e vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x66af098b vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x6d0e7948 vringh_abandon_user +EXPORT_SYMBOL drivers/vhost/vringh 0x76bd9a5d vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x97fa07e9 vringh_iov_push_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xaf8e4a0e vringh_notify_disable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xafb47dae vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0xc884d704 vringh_notify_disable_user +EXPORT_SYMBOL drivers/vhost/vringh 0xc8bee0a4 vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xda4ea4cc vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0xde804bb9 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/video/backlight/generic_bl 0x366d19ef genericbl_limit_intensity +EXPORT_SYMBOL drivers/video/backlight/lcd 0x0c1a4c3b lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x70f7aeb1 lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x9843c3b1 devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xf8dd1bb3 devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/cyber2000fb 0x057b58f4 cyber2000fb_attach +EXPORT_SYMBOL drivers/video/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/cyber2000fb 0x534b6f18 cyber2000fb_disable_extregs +EXPORT_SYMBOL drivers/video/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x983ed693 g450_mnp2f +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0xbc3ddf1e matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0xd58a8722 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x32a413b1 matrox_G100 +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x54af8f9d DAC1064_global_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x6365dd0c matrox_mystique +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x886ab139 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_Ti3026 0x070bac41 matrox_millennium +EXPORT_SYMBOL drivers/video/matrox/matroxfb_accel 0x76c6f603 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x23fec0d4 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x2516f0a4 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0xacf24d75 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0xbf3071cd matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0xc2a9f903 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0xf3dbe832 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x3c4b2745 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x4be7e15f matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x5c1e3e69 matroxfb_read_pins +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xe5157440 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xf39d1f5b matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/mb862xx/mb862xxfb 0x5e8c602a mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/output 0xeb946f0d video_output_register +EXPORT_SYMBOL drivers/video/output 0xfa5780bd video_output_unregister +EXPORT_SYMBOL drivers/video/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/svgalib 0x1a3fb198 svga_tilefill +EXPORT_SYMBOL drivers/video/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/svgalib 0x212ece8f svga_tilecopy +EXPORT_SYMBOL drivers/video/svgalib 0x397a2e76 svga_get_caps +EXPORT_SYMBOL drivers/video/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/svgalib 0x4ebf9111 svga_tileblit +EXPORT_SYMBOL drivers/video/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/svgalib 0xc2f3fd14 svga_tilecursor +EXPORT_SYMBOL drivers/video/svgalib 0xcf479556 svga_get_tilemax +EXPORT_SYMBOL drivers/video/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/svgalib 0xfa016314 svga_settile +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/vme/vme 0x00d7e722 vme_lm_count +EXPORT_SYMBOL drivers/vme/vme 0x072f901c vme_master_rmw +EXPORT_SYMBOL drivers/vme/vme 0x0c6bdc3f vme_master_read +EXPORT_SYMBOL drivers/vme/vme 0x0ec5babe vme_dma_free +EXPORT_SYMBOL drivers/vme/vme 0x147d4a9e vme_dma_list_free +EXPORT_SYMBOL drivers/vme/vme 0x149e92e7 vme_master_request +EXPORT_SYMBOL drivers/vme/vme 0x15c20998 vme_irq_free +EXPORT_SYMBOL drivers/vme/vme 0x1ae703fc vme_slave_request +EXPORT_SYMBOL drivers/vme/vme 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL drivers/vme/vme 0x248fe81f vme_irq_request +EXPORT_SYMBOL drivers/vme/vme 0x36a9ee61 vme_slot_get +EXPORT_SYMBOL drivers/vme/vme 0x3e95083c vme_slave_get +EXPORT_SYMBOL drivers/vme/vme 0x44ca2d25 vme_register_driver +EXPORT_SYMBOL drivers/vme/vme 0x46649cd1 vme_lm_set +EXPORT_SYMBOL drivers/vme/vme 0x48b99a13 vme_lm_free +EXPORT_SYMBOL drivers/vme/vme 0x4baf35a7 vme_master_get +EXPORT_SYMBOL drivers/vme/vme 0x51ddaee0 vme_dma_list_add +EXPORT_SYMBOL drivers/vme/vme 0x52983a4f vme_master_write +EXPORT_SYMBOL drivers/vme/vme 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL drivers/vme/vme 0x5aff4177 vme_lm_get +EXPORT_SYMBOL drivers/vme/vme 0x5ee6b049 vme_irq_generate +EXPORT_SYMBOL drivers/vme/vme 0x66f51612 vme_register_bridge +EXPORT_SYMBOL drivers/vme/vme 0x6b00d8af vme_bus_type +EXPORT_SYMBOL drivers/vme/vme 0x79a33f85 vme_get_size +EXPORT_SYMBOL drivers/vme/vme 0x7cf35220 vme_master_free +EXPORT_SYMBOL drivers/vme/vme 0x8cdf4d28 vme_dma_request +EXPORT_SYMBOL drivers/vme/vme 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL drivers/vme/vme 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL drivers/vme/vme 0xa2a335bd vme_alloc_consistent +EXPORT_SYMBOL drivers/vme/vme 0xa31bdf07 vme_master_set +EXPORT_SYMBOL drivers/vme/vme 0xad9eff37 vme_unregister_bridge +EXPORT_SYMBOL drivers/vme/vme 0xbdb287f6 vme_irq_handler +EXPORT_SYMBOL drivers/vme/vme 0xca5ee09a vme_free_consistent +EXPORT_SYMBOL drivers/vme/vme 0xd0f330a8 vme_new_dma_list +EXPORT_SYMBOL drivers/vme/vme 0xdff905e5 vme_slave_free +EXPORT_SYMBOL drivers/vme/vme 0xe6b0c1dd vme_lm_request +EXPORT_SYMBOL drivers/vme/vme 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL drivers/vme/vme 0xf10b25cf vme_dma_list_exec +EXPORT_SYMBOL drivers/vme/vme 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL drivers/vme/vme 0xf6edc7a8 vme_unregister_driver +EXPORT_SYMBOL drivers/vme/vme 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x33a16d02 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x4a1e661c w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x9642a6bf w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xc4e0349c w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x9b0cd089 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xde6fa2ab w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x2151fe31 w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x435bc6ae w1_ds2781_io +EXPORT_SYMBOL drivers/w1/wire 0x315cdd40 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0x343fae73 w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0x5d7a0e25 w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0x73dcbdfc w1_add_master_device +EXPORT_SYMBOL fs/btrfs/btrfs 0x27476846 ulist_reinit +EXPORT_SYMBOL fs/btrfs/btrfs 0x41e6a9d2 ulist_init +EXPORT_SYMBOL fs/btrfs/btrfs 0x7e2ee765 ulist_free +EXPORT_SYMBOL fs/btrfs/btrfs 0xa2eec2e8 ulist_fini +EXPORT_SYMBOL fs/btrfs/btrfs 0xb1320bc8 ulist_add +EXPORT_SYMBOL fs/btrfs/btrfs 0xb42289d2 ulist_alloc +EXPORT_SYMBOL fs/btrfs/btrfs 0xc2c745db ulist_next +EXPORT_SYMBOL fs/configfs/configfs 0x085f5bcc config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x399ed59b configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x3e0f97cf configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x909c059e config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x974a8322 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0xa5101b55 config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0xa749d23f configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0xb3ed9ffe config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0xc73388cf config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0xdce1a890 configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0xe506ea67 config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0xf3736e58 config_item_init +EXPORT_SYMBOL fs/exofs/libore 0x0a8ecfc4 ore_write +EXPORT_SYMBOL fs/exofs/libore 0x1b58fa10 ore_remove +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x67bd5c3d ore_create +EXPORT_SYMBOL fs/exofs/libore 0x80a15904 ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0x8782f2a1 extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0x8cc4f146 ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0x93c9e7c3 ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xb3236bfb ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0xd6ec7da1 ore_read +EXPORT_SYMBOL fs/exofs/libore 0xebb32055 ore_get_io_state +EXPORT_SYMBOL fs/fscache/fscache 0x005e001c __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x00fd2b52 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x09306b0b __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x11e4bb49 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x24df3d9d __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x25732141 fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0x25d0e580 __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x41f9f9ed __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x44a362a4 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x48395f86 __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x4c1227ef fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x5c0f2449 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x5c7da304 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x6c547d8c __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x6caada6b __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x6da691b1 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x718d764b fscache_io_error +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 0x776a22a4 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x7b9aa0bb fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x7c4cb70a fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x8558ed09 __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0x8662dd7f fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0x86e9b099 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x8b188473 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x91e92894 __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0x931fa017 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xa2b77e37 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0xa78f09c6 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0xac9310ed fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0xb3a3984c __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xbf18e2f1 fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0xc09a30d6 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0xc0a787f1 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xea1a3590 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xee3a4fc6 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xf03c5cd3 fscache_object_init +EXPORT_SYMBOL fs/nfsd/nfsd 0x35e33c1e nfs4_acl_write_who +EXPORT_SYMBOL fs/nfsd/nfsd 0x5a157ae4 nfs4_acl_get_whotype +EXPORT_SYMBOL fs/nfsd/nfsd 0xa0f4b528 nfs4_acl_posix_to_nfsv4 +EXPORT_SYMBOL fs/nfsd/nfsd 0xb25b2957 nfs4_acl_nfsv4_to_posix +EXPORT_SYMBOL fs/nfsd/nfsd 0xe13337f0 nfs4_acl_new +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x0d51db40 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x2439744b qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x36d34c4f qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xc3ed136b qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xf1ffd34c qtree_entry_unused +EXPORT_SYMBOL lib/cordic 0x434bfd07 cordic_calc_iq +EXPORT_SYMBOL lib/crc-ccitt 0x1a703ba1 crc_ccitt +EXPORT_SYMBOL lib/crc-ccitt 0x75811312 crc_ccitt_table +EXPORT_SYMBOL lib/crc-itu-t 0x6d356209 crc_itu_t +EXPORT_SYMBOL lib/crc-itu-t 0xd29b009f crc_itu_t_table +EXPORT_SYMBOL lib/crc7 0x6c1f6fee crc7 +EXPORT_SYMBOL lib/crc7 0xd80c3603 crc7_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 0x17530a2d lc_set +EXPORT_SYMBOL lib/lru_cache 0x265bb52a lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x2eb86314 lc_committed +EXPORT_SYMBOL lib/lru_cache 0x3ec8e9bb lc_destroy +EXPORT_SYMBOL lib/lru_cache 0x486392c2 lc_del +EXPORT_SYMBOL lib/lru_cache 0x55d40ad0 lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x60a12092 lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0x70d9ddd8 lc_get_cumulative +EXPORT_SYMBOL lib/lru_cache 0x745ebaab lc_find +EXPORT_SYMBOL lib/lru_cache 0x846875a0 lc_reset +EXPORT_SYMBOL lib/lru_cache 0x8c26f371 lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0xbea1b0ba lc_try_get +EXPORT_SYMBOL lib/lru_cache 0xc343305e lc_is_used +EXPORT_SYMBOL lib/lru_cache 0xd6e146aa lc_get +EXPORT_SYMBOL lib/lru_cache 0xdaef897c lc_put +EXPORT_SYMBOL lib/lru_cache 0xe7800d85 lc_create +EXPORT_SYMBOL lib/lru_cache 0xfe413d0d lc_element_by_index +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/802/p8022 0x439563d1 unregister_8022_client +EXPORT_SYMBOL net/802/p8022 0xf8cce5d9 register_8022_client +EXPORT_SYMBOL net/802/p8023 0x0a0c4f07 destroy_8023_client +EXPORT_SYMBOL net/802/p8023 0xaf687275 make_8023_client +EXPORT_SYMBOL net/802/psnap 0x94da7c3d register_snap_client +EXPORT_SYMBOL net/802/psnap 0xa973707c unregister_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x034f607f p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x0e22272e v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x11c8b353 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x15a4ff20 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x17c4a9f1 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0x2529df90 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x29190a9e p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x2f7572ed v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x36175592 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 0x40f25fe1 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x41b9ec86 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x44100d09 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x4c4a6a4e p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x5c274641 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x5f58a5d1 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x67ad3dac p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x6dcc95f5 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x7033b6ff p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x8cce22f9 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x8f30fd68 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x90848f76 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x93f1df24 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x977a0030 p9_nr_pages +EXPORT_SYMBOL net/9p/9pnet 0x9bae1c99 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x9f38d960 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xa56f83e0 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0xaabf26fa p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xaf18cd76 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0xb13636b8 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0xb18cc527 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0xb6e305ea p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0xb7519876 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0xbba4f351 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0xbf6a1dbe p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xc30674b6 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xc7e275cd p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0xce36b7fc p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0xcef41b50 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0xd25bebe7 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0xdb972d77 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0xe0131a56 p9_payload_gup +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe973be0f p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xf87ed60e p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/appletalk/appletalk 0xa09f86ab atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0xa2e52155 atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0xe4a45251 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0xf37fe669 aarp_send_ddp +EXPORT_SYMBOL net/atm/atm 0x121e7e9f atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x1b3dde37 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x4c2f8aa8 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x51e87ac2 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x56014c78 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x801a36c9 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xa736bafc atm_dev_register +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xb1d23052 atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0xb70efccd atm_charge +EXPORT_SYMBOL net/atm/atm 0xb95f91fe atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0xca87b453 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xd9c3ddf6 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0xda86a193 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0xf3838031 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/ax25/ax25 0x026c1368 ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0x058a65e7 ax25_linkfail_release +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 0x5244eb64 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x643b188a ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0x664161e1 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x6d70df8f ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x8063de25 ax25_hard_header +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xcfeced58 ax25_rebuild_header +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xd91ab449 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0xeba1927e ax25_listen_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x03185c58 bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0x05520f5d __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0ef3da5a l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1708c4aa hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1f9b34cf bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x21ea5f9e hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4710a96c __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4e0e60e3 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x51270837 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5cec57a2 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x653c2d40 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x69e004d3 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6b9a00af hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x76b4c824 l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0x77e1efa0 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7c640527 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x83e337e3 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8bd16031 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa04234c2 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa32e2ec2 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb510146b hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb61a0c3b bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb937c10f l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbc9eba42 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xca00580d hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd0121255 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd131490f hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd1a03811 l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd381a6a4 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe1696c1d bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe20029b3 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe4731a2d hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe509fbeb hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe936ba4a hci_recv_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf1a3eb05 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf1b3d553 hci_recv_stream_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf32ed764 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf8441d6f bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfa1b4900 hci_alloc_dev +EXPORT_SYMBOL net/bridge/bridge 0x58932cc0 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x05bb0852 ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x54434622 ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x87bcefea 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 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x6a6332f4 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0x6d5b7b6d caif_connect_client +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x8f4c249a 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 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xc12878e6 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0xe0dc9602 caif_enroll_dev +EXPORT_SYMBOL net/can/can 0x18762736 can_ioctl +EXPORT_SYMBOL net/can/can 0x30eac50e can_rx_register +EXPORT_SYMBOL net/can/can 0x3722932b can_rx_unregister +EXPORT_SYMBOL net/can/can 0x5bb83137 can_send +EXPORT_SYMBOL net/can/can 0x806cfb6e can_proto_unregister +EXPORT_SYMBOL net/can/can 0x82b0ecec can_proto_register +EXPORT_SYMBOL net/ceph/libceph 0x05776472 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0d61c270 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0x1475bf0d ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x1601702f ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x197effcb ceph_osdc_release_request +EXPORT_SYMBOL net/ceph/libceph 0x1bceace2 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x1c377aad osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x26e6a495 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x2af8ce84 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x33065b02 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x3598cebb ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x372e7ad3 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x38155518 osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3da496e7 osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x3df0ec7c ceph_calc_ceph_pg +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x4044dd6e ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x4205ffd7 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x43efd647 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x47c4a95f ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x4a283545 ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x4aca7db5 ceph_osdc_unregister_linger_request +EXPORT_SYMBOL net/ceph/libceph 0x4bbe65e3 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x4d0681ed ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x4d6c0c66 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x4fd649dd ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x522e9c68 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x54ab9b10 ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0x570ceb67 ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x5727fcf6 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x57df721a ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x59812454 ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x59831e3c osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x5b0356f9 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x5e92dd51 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x64e91129 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0x652f421e ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x67606aa7 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6c5d5ac1 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x7168baf8 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0x77692acb ceph_msg_last_put +EXPORT_SYMBOL net/ceph/libceph 0x79ea843a ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x7bd1cdf1 osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x7d64ebbd osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0x81eae1b6 ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0x87d61d79 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x8abbd35b osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x8b35ef4d ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x8d0520ac osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0x8d80e9c7 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0x8f29dcef ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x909f8abf ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0x92e15210 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x98a900c1 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x99de4738 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9b8303fa ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x9d1fbc56 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa1c8a8d7 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xa8b37892 ceph_monc_create_snapid +EXPORT_SYMBOL net/ceph/libceph 0xaab4d852 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0xae34865b ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xaeeb7cbc ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb1778f02 ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0xb3353b29 osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0xb410267b ceph_copy_page_vector_to_user +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xc1d01241 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc55de604 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xc6f334a1 osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xc9f34798 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd2caad8c ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0xd361b9dd ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0xdd79cb2f ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0xdfc785f5 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0xe178429d ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0xe63b1620 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0xe82c9c32 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0xeb2cd271 osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0xeb64fa62 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0xed229339 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xf0f32bb3 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xf5774cba ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0xf59be08b ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0xf6bb332f ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xfaec2571 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xffd2ca96 ceph_con_keepalive +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x9bee8d9d dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/ieee802154 0x598876fc wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0x5b252ab5 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0x7571275f ieee802154_nl_start_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x7c64fd35 ieee802154_nl_assoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x83047e93 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0xa4857b61 wpan_phy_alloc +EXPORT_SYMBOL net/ieee802154/ieee802154 0xa98f28f9 ieee802154_nl_scan_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xba4f4193 ieee802154_nl_disassoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0xcd1b2538 ieee802154_nl_assoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xd7960268 wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0xec61bfe0 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0xede9bede ieee802154_nl_beacon_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0xfa6d9bf0 ieee802154_nl_disassoc_confirm +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x54baf2d1 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x79dc99fb arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xea047aed arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x1521240c ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x80800e37 ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x96aee4ce ipt_do_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x2f6bd6d5 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0xac3f4ad1 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x8f7bc148 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xb5faffb6 ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x14853758 ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x63ea3cdf ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xb31fe29c ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x70e4823c xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0xf2b6b631 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xb5e97083 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xfdd0b1d1 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x29b2ecab ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x3beb4f1c ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x547e267e ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x9c1f7c35 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x9c4a4b4c ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x9cc3b2bd ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xaa4fa9e4 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xf86eaa92 ircomm_close +EXPORT_SYMBOL net/irda/irda 0x0064e0ea hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x0f5a1c07 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x1e6cade0 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x2036ad06 irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x26027eed irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0x2beb500c irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x33ce5b52 irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x39a12a26 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x3e56064f hashbin_new +EXPORT_SYMBOL net/irda/irda 0x3f8d7dde irlap_close +EXPORT_SYMBOL net/irda/irda 0x444ca5b0 irlmp_connect_response +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 0x53ce7d4a irlmp_disconnect_request +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 0x71b5016e irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x72c623e3 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x73c26a48 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x75e75330 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 0x841215e7 irlap_open +EXPORT_SYMBOL net/irda/irda 0x8432dee0 iriap_close +EXPORT_SYMBOL net/irda/irda 0x852f32aa irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x85d88217 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x93d3b096 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x99243068 async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x993ad14b irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0xa1d41e58 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0xa2c654ef async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0xaa557515 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xaf95750a irda_device_set_media_busy +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 0xc62437ef irttp_dup +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 0xe2178d75 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0xe3463529 hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0xe3bde43e irias_insert_object +EXPORT_SYMBOL net/irda/irda 0xe5cbe4e9 irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0xec187533 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xf0a694a1 irias_find_object +EXPORT_SYMBOL net/irda/irda 0xf5876b95 hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0xf852588c iriap_open +EXPORT_SYMBOL net/irda/irda 0xfe4230f6 irlmp_connect_request +EXPORT_SYMBOL net/l2tp/l2tp_core 0x562c0e35 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x1f129688 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x1f7e71f9 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x43f099fc lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x5369a3e4 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0x60d58718 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0xcddd9952 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0xe1ad8db0 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0xf5e89e65 lapb_disconnect_request +EXPORT_SYMBOL net/llc/llc 0x068e5173 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x1256e787 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x416d390a llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x6d1d29d2 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x92e67747 llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0xab2207af llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0xc35e28f7 llc_sap_list_lock +EXPORT_SYMBOL net/llc/llc 0xf08723ea llc_sap_close +EXPORT_SYMBOL net/mac80211/mac80211 0x009376f2 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x05a0e996 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x09a4edd2 ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x0a9c69ff __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x0c2dcaf5 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x0f9fdc46 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x10894fa7 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x10d0dd34 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x16f58966 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x17c4daa2 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x18cd87a6 ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0x19af5e78 ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x1a5d7594 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x1ba706a5 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0x21a2ae71 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x2aebedbd ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x334b344b __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x3d6857da ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x42012b7e ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x47f220d3 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x4997b89a ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x49cf20f5 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x4d1020bd ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x51e3e039 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x532d168a ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x545951cd ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x589e3208 ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x5930463a ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x5c28cca5 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x5c83767b ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x5e1cdba3 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x5eec39de ieee80211_alloc_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x60a4d31b ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x6314034d ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x634fc799 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x6b6e94db wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x6c5cb55d ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x6ea50464 ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x77b702fb ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x7c173ccf ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x87f669aa ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x9654f681 ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0x993bb4b6 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x9c5e6334 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0xa1fc36c4 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xa285de8f ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0xa621f1a9 ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0xaa157485 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0xaafab4e4 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xaea3d8d3 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0xb708b994 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0xb730cb8e ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xba954579 ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0xbf06d9d3 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xc2bb6d3f ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0xc691a1f1 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xc7e9782e ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xcb3062dc rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0xcb357534 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0xcb549b37 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xcccafe99 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xcd2e337a ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xd184be26 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0xd34251ff ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xd5073645 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0xddb47d52 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xddba87a5 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xe3e35f0c ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xef4c5591 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xf395de03 ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0xf449e2ef ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xf875aaa7 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xf9afc77e ieee80211_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x10aa57ec ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0x17b15abf ieee802154_register_device +EXPORT_SYMBOL net/mac802154/mac802154 0x8c1ca2c8 ieee802154_free_device +EXPORT_SYMBOL net/mac802154/mac802154 0x93f77323 ieee802154_unregister_device +EXPORT_SYMBOL net/mac802154/mac802154 0x99c6d4c3 ieee802154_alloc_device +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x226bf9e0 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x466b5642 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x55ba6056 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x71722cab ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x86e67c39 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x8dc27438 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x999561c5 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x9e383c02 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x9f215326 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa03ba218 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa2fb826b ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xcb94b1b4 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xeae7847b ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xeb2b7f48 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x5a9b04b5 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x90f43480 __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xd5ab7d8c __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_conntrack_proto_gre 0x180c28bb nf_ct_gre_keymap_flush +EXPORT_SYMBOL net/netfilter/nf_nat 0x285038be nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0x706e8637 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0x714e30f8 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x98e832c1 nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0xaf74ab9d __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xc88abf52 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/x_tables 0x08c473b7 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x1cecc08e xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x253e8b44 xt_compat_init_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x2b874640 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x3d006fe6 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x42f587dc xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x487d0190 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x4fb06b06 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x8147d4c9 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x8dacb4be xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x98b0d4b6 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0xa25fc115 xt_compat_check_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0xb28f5ef1 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xd87ae60d xt_check_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0xe3107b72 xt_unregister_targets +EXPORT_SYMBOL net/nfc/hci/hci 0x18cdd0c5 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x1984afde nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x32cd4feb nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0x3a7b20c5 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x44f008d6 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x5798a21d nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x66bc90ff nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0x8e1abcf6 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x8e32db45 nfc_hci_send_response +EXPORT_SYMBOL net/nfc/hci/hci 0x9a54d6e7 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xb3f8db99 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0xb638d519 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0xb81f50b1 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xc60deb8d nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0xd32d5fa7 nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0xdc4b6557 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0xeb9325d0 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0xf42dde8c nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/nci/nci 0x4b81f858 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x558e3f88 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x62ce8c56 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x781763b0 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xc97bf38f nci_free_device +EXPORT_SYMBOL net/nfc/nfc 0x0071d908 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x1a382849 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x23235ac9 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0x232d6fad nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x3ca935e7 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x3e18c360 nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x64eaff19 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x75f6ef56 nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0x767272c3 nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0x8f00cff9 nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0x9349c0f5 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0xa014a243 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0xacec4cbe nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0xb1813e5b nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0xc29fb068 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0xd945e8b8 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0xd9d35784 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0xe400f299 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0xeec5149f nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0xfa38e47d nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc_digital 0x3166276b nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x424061cf nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x634554c2 nfc_digital_register_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xf9fb5113 nfc_digital_allocate_device +EXPORT_SYMBOL net/phonet/phonet 0x00952afa phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x3638a3eb phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x53603a50 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0x54e678c5 pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x7fe2e5cd pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0xac9b0316 phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0xb0eee58c pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0xea74b43f phonet_proto_unregister +EXPORT_SYMBOL net/rds/rds 0x7505d413 rds_str_array +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x0ae9a994 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x0f5cbbfe rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x222176fd rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x59a646ee rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x6b56ebce rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x6e03edd1 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x93b5e3c7 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x997f56da rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x9a2909ad rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xaf4541a0 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc1bc2927 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd0fd01d5 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe25db790 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe9c108e0 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf867549e rxrpc_kernel_abort_call +EXPORT_SYMBOL net/sctp/sctp 0xcbd84d2d sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x0c76a2ff gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xb6b9239e gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xd4fa8402 gss_mech_get +EXPORT_SYMBOL net/sunrpc/sunrpc 0xafdde587 svc_pool_stats_open +EXPORT_SYMBOL net/wimax/wimax 0xbdc19937 wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0xf9f955d4 wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x00d98780 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x012c06fa cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x01be8025 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x0682bd89 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0b3213ec cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x0ef45873 wiphy_new +EXPORT_SYMBOL net/wireless/cfg80211 0x1275da39 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x13a4bde8 cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x15fabcb9 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x172b338b cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1cc52ad2 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x1cd2511c cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0x212063e6 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x2884b362 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x32116184 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x38431f84 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x3b5b31b5 cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x3feefd62 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x406a8302 cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x4097607a cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0x47fb8938 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x4c3b5878 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x4c40b2fb ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x5109a928 cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x51271ac5 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x523f64d2 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x5313dcdb regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x547780fb cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0x549ae50f ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x56b245e5 cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x5fa83cec wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x6614bffc cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x685911ce cfg80211_put_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 0x6f3f84de wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x717cf142 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x73851119 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x74939074 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x7b50114b cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x86d9c540 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0x8905980a cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x8a837988 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x8ab01301 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x8c85aa5c cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x8cfa0c43 cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x8d7a8ebc cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0x96280300 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x97204b18 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x974a7673 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x9c6094d2 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x9e14be67 cfg80211_conn_failed +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 0xa1b9ba3f cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xa8815aae cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xaebf651a cfg80211_inform_bss_width_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xafed30d7 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xb060d48c cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0xbd5e71d9 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xc15c8611 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xc47e9c62 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xcf618a57 cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0xd056dbc6 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xd064a1bb cfg80211_del_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xd23725de cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0xd7a0bf05 cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xda12c3dc cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xdaf6768c cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xe5246379 cfg80211_inform_bss_width +EXPORT_SYMBOL net/wireless/cfg80211 0xee42db3c cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0xf24808b3 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0xf314b03e cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0xf70b5a0e cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0xfb0a432b wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0xfcf4eef2 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/cfg80211 0xff5a4377 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/lib80211 0x16cdb11e lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x2d0f99e5 print_ssid +EXPORT_SYMBOL net/wireless/lib80211 0x6f27d4bf lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xcf6db90e lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0xd3b09f6a lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xe49275bf lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0xed37e191 lib80211_crypt_info_free +EXPORT_SYMBOL sound/ac97_bus 0xe849578f ac97_bus_type +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 0x8d9b16a1 snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0xb8e448a0 snd_seq_set_queue_tempo +EXPORT_SYMBOL sound/core/seq/snd-seq 0xc4daa2fd snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0xcac0a3be snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xceb994cd snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe75b876c snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x3a57f235 snd_seq_autoload_unlock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x4c081880 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-device 0xb90668b2 snd_seq_autoload_lock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xc622fb29 snd_seq_device_unregister_driver +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xc9e26792 snd_seq_device_register_driver +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 0x0cdb6457 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x023054b2 snd_register_device_for_dev +EXPORT_SYMBOL sound/core/snd 0x03daf426 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0x1330fb5f snd_device_register +EXPORT_SYMBOL sound/core/snd 0x18e1683f snd_dma_program +EXPORT_SYMBOL sound/core/snd 0x191e88cf snd_dma_pointer +EXPORT_SYMBOL sound/core/snd 0x1d0572eb snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x2a54c916 snd_jack_report +EXPORT_SYMBOL sound/core/snd 0x2ad75b6e snd_ctl_unregister_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x2ae3deaa release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0x2bb74cd4 snd_card_proc_new +EXPORT_SYMBOL sound/core/snd 0x2c1a12c1 snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x342a2354 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x398c3676 snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x3a9b38a9 snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0x41365c50 snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0x427a306a snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0x4352c81e snd_card_create +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4b015768 snd_iprintf +EXPORT_SYMBOL sound/core/snd 0x5447787b snd_device_free +EXPORT_SYMBOL sound/core/snd 0x5ddbb2b4 snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x6a1364a4 snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x6b9ad60f snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x748066b2 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x75286bcb snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x764cf3e0 snd_cards +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x82ff8492 snd_device_new +EXPORT_SYMBOL sound/core/snd 0x85f3dca7 snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0x8887bd8d snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0x8d973463 snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x90941487 snd_info_register +EXPORT_SYMBOL sound/core/snd 0x9bc7055f snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0x9dacc1ef snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0x9ed8d479 snd_component_add +EXPORT_SYMBOL sound/core/snd 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0xa826d4c8 snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0xabc59e97 snd_power_wait +EXPORT_SYMBOL sound/core/snd 0xac03b096 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0xacec571f snd_card_register +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xc68f8116 snd_card_unref +EXPORT_SYMBOL sound/core/snd 0xcc06c8a9 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0xce44a5cb snd_seq_root +EXPORT_SYMBOL sound/core/snd 0xcec98ec1 snd_card_free +EXPORT_SYMBOL sound/core/snd 0xd04c8e1a snd_add_device_sysfs_file +EXPORT_SYMBOL sound/core/snd 0xd33105da snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0xd64474f5 snd_ctl_register_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0xe4aa26be snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0xe72ff2f2 snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0xed20d22e snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0xee2558e7 snd_jack_new +EXPORT_SYMBOL sound/core/snd 0xf088df5d snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0xf1ce0f2f snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0xfc9fa4cd snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0xfe323717 snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0xfffd89db copy_from_user_toio +EXPORT_SYMBOL sound/core/snd-hwdep 0x5fba5217 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-page-alloc 0x06b310c9 snd_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x34a2cc6c snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x5898dcba snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x6951d36c snd_dma_get_reserved_buf +EXPORT_SYMBOL sound/core/snd-page-alloc 0x6cef8896 snd_dma_reserve_buf +EXPORT_SYMBOL sound/core/snd-page-alloc 0x9d1b819e snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-page-alloc 0xf6ca468e snd_dma_alloc_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 0x09ade652 snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0x0e150e6c snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0x16c525c8 snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x1ead53af snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x212e305a snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0x21ac98fb snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0x26aeca60 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x3137f8d6 snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x38bb6ec8 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL sound/core/snd-pcm 0x3b793239 snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x414453b0 snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0x4a8fcd0a snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0x4c341b4b snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x580846d2 snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x59e7e9c8 snd_pcm_new_internal +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 0x6b2e15ef snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x72742301 snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x744fb1b7 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0x7aa349b9 snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0x7ed85800 snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0x834dc955 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x853d83dc snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x8beafc21 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0x8d0ea1bb snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x8f59afb4 snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0x90ce67af snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x99b0ef18 snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xa8f74646 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0xb6194798 snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xd5fb21a2 snd_pcm_link_rwlock +EXPORT_SYMBOL sound/core/snd-pcm 0xd6a6653a snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0xd773c283 snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0xd8b0feec snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0xdcf95744 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0xdefb572e snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0xe2f4f499 snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xe629e1a9 snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0xe62aff99 snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0xec65eada snd_pcm_debug_name +EXPORT_SYMBOL sound/core/snd-pcm 0xedba31ed snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0xee4eb1d3 snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0xef01068e _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0xefa93177 snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xf13a8c83 snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xf54a8c13 snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x08c24896 __snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x1cdeebc0 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x3af7f4ab snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x54372f90 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5973fd55 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x60a49e73 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x6a73b8a8 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0x803b3d9b __snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x83560d32 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x88abd452 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8975d671 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xaba764f3 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb29bc338 snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb59a22af snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc36fb016 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc68c8917 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0xcc79ea0f snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0xea59e14c snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf221a388 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-timer 0x08158164 snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0x18fdb09e snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0x1e3626cc snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0x29d6eb08 snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0x512af83c snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0x5b206adc snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0x614bb252 snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0xa1c533ce snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0xacfcf8df snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0xc21a69ed snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0xdd8f2937 snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0xdf9f571e snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0xe507a68f snd_timer_continue +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xc0fec227 snd_mpu401_uart_interrupt +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xcb040ef3 snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x05060a19 snd_opl3_regmap +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x25a06446 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x8d7ec34f snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x9a2baf57 snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xc3729d0e snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xca92275e snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xcb9380c3 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xdbcd91a9 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xf7775f09 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xfac70b50 snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x0d954d83 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x0f78c476 snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x43ff29b7 snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x71fc9acc snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x758805c9 snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x973c3113 snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xc7a8399f snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xe7f32746 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf4c5e703 snd_vx_create +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x01e2d66a amdtp_out_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x02d8651f fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0f55bfe2 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1fc1c59c iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x30476f69 cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x423c9817 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4290d525 amdtp_out_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x45f82e10 amdtp_out_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4cb43e50 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4ee4e2be amdtp_out_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x54e0d8d4 amdtp_out_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x62c6f4e5 amdtp_out_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6432af55 amdtp_out_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x65800b4c cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7c97bae6 amdtp_out_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x824d8780 amdtp_out_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x83ab2328 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x98685d7e fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa467f414 amdtp_out_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbc68b910 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd049d820 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd34c1623 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf29591c9 fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf66ee38a fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf8ec8416 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xfa06c88b amdtp_out_stream_set_parameters +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x2357f193 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x2baa9dd4 snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x30531f1a snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x5d442c08 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x7014a3e4 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xaf8e80e6 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x0aa01fa3 snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x0f84aff2 snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x2fa12c1f snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x6df53af8 snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x98acaae3 snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xac9368da snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x66bb5f61 snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x74054d15 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x927c42e8 snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xad47e36a snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xd62a013d snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xff8fe045 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x2217908a snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x88b6d677 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xa5660104 snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xf599f7d8 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xfcc924b0 snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-i2c 0x21216184 snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0x387aade1 snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xa9c7c490 snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xb443a8a7 snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xd49df3c2 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xdefd2247 snd_i2c_device_free +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x05d81d3b snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x0a34c748 snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x3ac85701 snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x65dab4d0 snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x826d4f9f snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xad00d693 snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xadffc477 snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xbbd2cef7 snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xd301ca9a snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xdacb1e01 snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x04165cd3 snd_sb16dsp_pcm +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x54ea0f71 snd_sb16dsp_get_pcm_ops +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x7f53a4da snd_sb16dsp_configure +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xe0b3f690 snd_sb16dsp_interrupt +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x010533f3 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x02dc73b9 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x1cb83ba1 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x2779323b snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x4caffe16 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x56090506 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6f1dbef1 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x83241429 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x906fd167 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x984d76ac snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x99f6ce8d snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9dcca8d7 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xbb095f07 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc95ebf42 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xcc7eef87 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xce1e2ed2 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe408121f snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x33ea4807 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x5710b721 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x5aad6f1e snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x6068752e snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x7d6b9254 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xb836d2f3 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xbed5fbc3 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xd988a9d5 snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xee1a8b20 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x0717d03b snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x7400c78c snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x7ee3afe6 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x0cc440cd oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x378c39ea oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x4c7adc7a oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x502a2142 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x59a1eae2 oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5d5907de oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x6c0a8309 oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x83f5937d oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x8c995080 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x91924e24 oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa8017eb3 oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc6f86de1 oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xcc210e55 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xcf45569a oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd0a63ff0 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd97bc3d9 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe3de89b4 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xedf071a9 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf889da89 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf8bc088f oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x437272a3 snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x54a42b61 snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x68feffed snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x7cd5e10b snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xe360a246 snd_trident_alloc_voice +EXPORT_SYMBOL sound/soundcore 0x46d607e6 sound_class +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x0faf2f78 snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x1242faaa 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 0x666e0a9d snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x66ff9c74 snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xa5d08b2b snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xbc4360c3 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/snd-util-mem 0x0a820efa snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x306e675c snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x50407fa1 snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x51405ec8 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x6956b1f4 __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x9b2ca707 __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0xd1679fb6 snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0xd2928235 snd_util_memhdr_new +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x0f716d8f 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 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL vmlinux 0x00000000 __symbol_put +EXPORT_SYMBOL vmlinux 0x00000000 alloc_pages_current +EXPORT_SYMBOL vmlinux 0x00000000 current_fs_time +EXPORT_SYMBOL vmlinux 0x00000000 d_tmpfile +EXPORT_SYMBOL vmlinux 0x00000000 do_sync_read +EXPORT_SYMBOL vmlinux 0x00000000 filp_close +EXPORT_SYMBOL vmlinux 0x00000000 finish_open +EXPORT_SYMBOL vmlinux 0x00000000 generic_getxattr +EXPORT_SYMBOL vmlinux 0x00000000 generic_write_sync +EXPORT_SYMBOL vmlinux 0x00000000 get_unmapped_area +EXPORT_SYMBOL vmlinux 0x00000000 in_group_p +EXPORT_SYMBOL vmlinux 0x00000000 inode_add_bytes +EXPORT_SYMBOL vmlinux 0x00000000 iov_shorten +EXPORT_SYMBOL vmlinux 0x00000000 iterate_fd +EXPORT_SYMBOL vmlinux 0x00000000 ns_capable +EXPORT_SYMBOL vmlinux 0x00000000 path_is_under +EXPORT_SYMBOL vmlinux 0x00000000 register_exec_domain +EXPORT_SYMBOL vmlinux 0x00000000 schedule_timeout +EXPORT_SYMBOL vmlinux 0x00000000 sock_register +EXPORT_SYMBOL vmlinux 0x00000000 sys_close +EXPORT_SYMBOL vmlinux 0x00000000 task_nice +EXPORT_SYMBOL vmlinux 0x00000000 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x00000000 vm_brk +EXPORT_SYMBOL vmlinux 0x000512e5 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x0019ed59 textsearch_unregister +EXPORT_SYMBOL vmlinux 0x001a5cc2 blk_start_queue +EXPORT_SYMBOL vmlinux 0x0024d37f abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x0028fa73 ps2_handle_response +EXPORT_SYMBOL vmlinux 0x0031b18c sk_ns_capable +EXPORT_SYMBOL vmlinux 0x005a4975 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0x005fa4e8 path_get +EXPORT_SYMBOL vmlinux 0x0063e417 set_user_nice +EXPORT_SYMBOL vmlinux 0x00801678 flush_scheduled_work +EXPORT_SYMBOL vmlinux 0x00b60170 sk_alloc +EXPORT_SYMBOL vmlinux 0x00cf4a7f of_get_parent +EXPORT_SYMBOL vmlinux 0x00f35e2d napi_gro_flush +EXPORT_SYMBOL vmlinux 0x00f88ce3 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0x00ff1d12 get_fs_type +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x011407e0 __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x0122f95e _lv1_get_spe_irq_outlet +EXPORT_SYMBOL vmlinux 0x012a97fc xor_altivec_4 +EXPORT_SYMBOL vmlinux 0x01355e61 mmc_start_bkops +EXPORT_SYMBOL vmlinux 0x0176c014 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0x018d9919 _lv1_set_lpm_interrupt_mask +EXPORT_SYMBOL vmlinux 0x01902adf netpoll_trap +EXPORT_SYMBOL vmlinux 0x019e7765 __init_rwsem +EXPORT_SYMBOL vmlinux 0x01a60a3f tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x01b5cd53 sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x01be4d18 devfreq_add_governor +EXPORT_SYMBOL vmlinux 0x01c8e84d ida_simple_get +EXPORT_SYMBOL vmlinux 0x01d4e58c __pskb_copy +EXPORT_SYMBOL vmlinux 0x01f8699a pci_get_device +EXPORT_SYMBOL vmlinux 0x020d18d7 _lv1_set_lpm_debug_bus_control +EXPORT_SYMBOL vmlinux 0x023a074a hvc_get_chars +EXPORT_SYMBOL vmlinux 0x0249772c inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x025794b1 init_buffer +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x027d5499 _lv1_did_update_interrupt_mask +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a19b54 neigh_parms_release +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02accdd1 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x02ba8c13 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x02ce5b86 tty_check_change +EXPORT_SYMBOL vmlinux 0x02eaa04b abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x02eaa387 vfs_unlink +EXPORT_SYMBOL vmlinux 0x030d68c5 vfs_writev +EXPORT_SYMBOL vmlinux 0x031dc65e pasemi_dma_free_chan +EXPORT_SYMBOL vmlinux 0x031e6d78 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x03267f9c dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x03317746 udp_proc_register +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x0349ad29 pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x0355a90d tty_pair_get_pty +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x0380e1d3 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x0385c3df skb_make_writable +EXPORT_SYMBOL vmlinux 0x038edc87 serio_unregister_port +EXPORT_SYMBOL vmlinux 0x03bd84be __pci_enable_wake +EXPORT_SYMBOL vmlinux 0x03c06156 bitmap_fold +EXPORT_SYMBOL vmlinux 0x03d44d1d napi_gro_receive +EXPORT_SYMBOL vmlinux 0x03d4fe52 dquot_resume +EXPORT_SYMBOL vmlinux 0x03d879fd netdev_lower_dev_get_private_rcu +EXPORT_SYMBOL vmlinux 0x03ea261c inet_frag_evictor +EXPORT_SYMBOL vmlinux 0x03ebda85 dns_query +EXPORT_SYMBOL vmlinux 0x03f8fbc3 handle_edge_irq +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x04074f48 ioremap +EXPORT_SYMBOL vmlinux 0x041e55b1 pci_disable_msi +EXPORT_SYMBOL vmlinux 0x04205667 netlink_capable +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x0439f9e3 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x0440a533 _lv1_net_remove_multicast_address +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x0452a8b2 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x046aa969 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x0471b43a pci_match_id +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x048d27cc hvcs_register_connection +EXPORT_SYMBOL vmlinux 0x04961a7c netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x04b422f2 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x04bc08f9 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x04be9aae jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x04da44ff mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04ea5d10 ksize +EXPORT_SYMBOL vmlinux 0x05118d0a skb_split +EXPORT_SYMBOL vmlinux 0x0517a434 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x05292546 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x0529a425 mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x0530dede _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x0535873a fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0x0537da82 security_path_chown +EXPORT_SYMBOL vmlinux 0x053e9b8e mmc_get_card +EXPORT_SYMBOL vmlinux 0x0540b32a cpu_core_map +EXPORT_SYMBOL vmlinux 0x05414998 bio_init +EXPORT_SYMBOL vmlinux 0x05436210 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0x05438191 tcp_sendpage +EXPORT_SYMBOL vmlinux 0x054434d6 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x055c8559 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x05782a39 page_readlink +EXPORT_SYMBOL vmlinux 0x0578e51a fb_set_cmap +EXPORT_SYMBOL vmlinux 0x05825d79 tty_pair_get_tty +EXPORT_SYMBOL vmlinux 0x0593a99b init_timer_key +EXPORT_SYMBOL vmlinux 0x0595d382 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x05a514a1 _insl_ns +EXPORT_SYMBOL vmlinux 0x05b74a51 blkdev_fsync +EXPORT_SYMBOL vmlinux 0x05c90eca free_user_ns +EXPORT_SYMBOL vmlinux 0x05ddd5a8 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x05e36b66 led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0x06010b40 mdio_bus_type +EXPORT_SYMBOL vmlinux 0x0607aceb inet_stream_connect +EXPORT_SYMBOL vmlinux 0x060e7b66 update_time +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x062146f6 register_netdev +EXPORT_SYMBOL vmlinux 0x062f6d1b sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x064518cb nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x06456aff _lv1_get_virtual_address_space_id_of_ppe +EXPORT_SYMBOL vmlinux 0x064c0261 cpumask_set_cpu_local_first +EXPORT_SYMBOL vmlinux 0x065c82bd twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x06694337 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0x066b1092 pci_select_bars +EXPORT_SYMBOL vmlinux 0x06797871 vm_stat +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x06bbb24a mempool_resize +EXPORT_SYMBOL vmlinux 0x06be70f8 tc_classify_compat +EXPORT_SYMBOL vmlinux 0x06c5d2dc blk_mq_alloc_single_hw_queue +EXPORT_SYMBOL vmlinux 0x06d50a26 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x06f2f0c8 textsearch_prepare +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x0723a37f bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x074e9213 down_killable +EXPORT_SYMBOL vmlinux 0x075454f6 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x076e7f94 nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0x0799aca4 local_bh_enable +EXPORT_SYMBOL vmlinux 0x07a40546 generic_listxattr +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07c2fe0c dcache_readdir +EXPORT_SYMBOL vmlinux 0x07c7af68 max8925_reg_read +EXPORT_SYMBOL vmlinux 0x07ca99df bio_reset +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07ef213a pasemi_dma_free_fun +EXPORT_SYMBOL vmlinux 0x07f8ee15 _lv1_unmap_device_dma_region +EXPORT_SYMBOL vmlinux 0x08215132 scsi_remove_host +EXPORT_SYMBOL vmlinux 0x0828e872 put_tty_driver +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083c2cbe of_get_next_parent +EXPORT_SYMBOL vmlinux 0x083d0785 done_path_create +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x084bd456 dquot_scan_active +EXPORT_SYMBOL vmlinux 0x0859f26b jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x08747ed7 pci_read_vpd +EXPORT_SYMBOL vmlinux 0x0887f1ed seq_pad +EXPORT_SYMBOL vmlinux 0x089244cd ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x08b9a370 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x08c750d8 udp_poll +EXPORT_SYMBOL vmlinux 0x08d41eb6 sock_recvmsg +EXPORT_SYMBOL vmlinux 0x09020d1e inet_addr_type +EXPORT_SYMBOL vmlinux 0x09062c28 module_put +EXPORT_SYMBOL vmlinux 0x09141fc0 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x094c8687 mount_ns +EXPORT_SYMBOL vmlinux 0x095234bc machine_id +EXPORT_SYMBOL vmlinux 0x096341c2 _lv1_connect_irq_plug_ext +EXPORT_SYMBOL vmlinux 0x09708265 clone_cred +EXPORT_SYMBOL vmlinux 0x098a863d i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x09906be1 qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0x0992f656 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x099a6a5c swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09cbc7a6 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x09cdfc85 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x0a20b405 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a38bcec swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0x0a3d0644 cpu_online_mask +EXPORT_SYMBOL vmlinux 0x0a48148d pci_scan_single_device +EXPORT_SYMBOL vmlinux 0x0a5877f3 __pagevec_release +EXPORT_SYMBOL vmlinux 0x0a770832 register_memory_notifier +EXPORT_SYMBOL vmlinux 0x0a772269 tcp_parse_options +EXPORT_SYMBOL vmlinux 0x0a82fff1 keyring_alloc +EXPORT_SYMBOL vmlinux 0x0a9a0903 __skb_checksum +EXPORT_SYMBOL vmlinux 0x0ab52379 d_set_d_op +EXPORT_SYMBOL vmlinux 0x0ac3da59 mdiobus_free +EXPORT_SYMBOL vmlinux 0x0ac679e7 netdev_change_features +EXPORT_SYMBOL vmlinux 0x0ac8b4c9 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x0acb1a3c __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0b004312 tty_vhangup +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b1ebc54 padata_free +EXPORT_SYMBOL vmlinux 0x0b272a4d scsi_print_sense +EXPORT_SYMBOL vmlinux 0x0b2e1ec7 h_get_mpp +EXPORT_SYMBOL vmlinux 0x0b6952a2 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b8a4f73 loop_backing_file +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bbcda55 sock_no_poll +EXPORT_SYMBOL vmlinux 0x0bbdfa8c security_task_getsecid +EXPORT_SYMBOL vmlinux 0x0bbe5dde simple_setattr +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bced956 init_special_inode +EXPORT_SYMBOL vmlinux 0x0c0100d0 scsi_execute +EXPORT_SYMBOL vmlinux 0x0c1ad162 _lv1_net_start_rx_dma +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c5776e1 macio_enable_devres +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c65e73c scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0x0c75c42c cap_mmap_file +EXPORT_SYMBOL vmlinux 0x0c83a7e7 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x0c8c9e99 scsi_show_extd_sense +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0ca94530 nf_log_set +EXPORT_SYMBOL vmlinux 0x0ca9a0d2 pagecache_write_end +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cb7b556 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x0ce900af blk_finish_plug +EXPORT_SYMBOL vmlinux 0x0cf836c5 generic_pipe_buf_unmap +EXPORT_SYMBOL vmlinux 0x0d005218 generic_setlease +EXPORT_SYMBOL vmlinux 0x0d11eda9 lro_receive_frags +EXPORT_SYMBOL vmlinux 0x0d166a3b filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x0d355274 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x0d41d476 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d6c963c copy_from_user +EXPORT_SYMBOL vmlinux 0x0d6d92fe dquot_destroy +EXPORT_SYMBOL vmlinux 0x0d758d40 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x0d8d44e4 netdev_info +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0e01d61d mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x0e48ba1d __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e743874 mdiobus_read +EXPORT_SYMBOL vmlinux 0x0e824c75 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x0e89e3d9 skb_push +EXPORT_SYMBOL vmlinux 0x0e8f30f6 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x0eb66d2d elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x0ed264b7 of_create_pci_dev +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f030a23 lock_may_write +EXPORT_SYMBOL vmlinux 0x0f0a3962 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x0f0da914 km_policy_notify +EXPORT_SYMBOL vmlinux 0x0f146b6d ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x0f2a4683 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x0f2b0dd4 swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0x0f2fd902 nf_log_unregister +EXPORT_SYMBOL vmlinux 0x0f37443b bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x0f41cfa8 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f5faa7e wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x0f688611 generic_readlink +EXPORT_SYMBOL vmlinux 0x0f778db6 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x0f9f524d input_unregister_device +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb6cfba alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x0fc82fb8 bio_add_page +EXPORT_SYMBOL vmlinux 0x0fd2a31d bprm_change_interp +EXPORT_SYMBOL vmlinux 0x0fe4448f dev_crit +EXPORT_SYMBOL vmlinux 0x0ff42504 security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x103ea1ae inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x1042d75b send_sig +EXPORT_SYMBOL vmlinux 0x104f0778 start_tty +EXPORT_SYMBOL vmlinux 0x105d6f05 proc_create_data +EXPORT_SYMBOL vmlinux 0x1068acab i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x107aae54 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x10830c1f skb_copy_expand +EXPORT_SYMBOL vmlinux 0x1085e850 alloc_fddidev +EXPORT_SYMBOL vmlinux 0x109a1f19 compat_mc_setsockopt +EXPORT_SYMBOL vmlinux 0x109ff5e1 inet6_protos +EXPORT_SYMBOL vmlinux 0x10cf3b2e __scsi_add_device +EXPORT_SYMBOL vmlinux 0x10d1cef6 make_kgid +EXPORT_SYMBOL vmlinux 0x10ebaeab ata_print_version +EXPORT_SYMBOL vmlinux 0x10edee4c scsi_register +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x11084290 bio_unmap_user +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x11156ea1 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x1124352a vfs_write +EXPORT_SYMBOL vmlinux 0x11267875 scsi_extd_sense_format +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 0x1182d83a cpuidle_disable +EXPORT_SYMBOL vmlinux 0x118c81bb devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0x11a40154 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x11b1f162 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x11c9185c of_iomap +EXPORT_SYMBOL vmlinux 0x11cc0a52 disk_stack_limits +EXPORT_SYMBOL vmlinux 0x11d9b1e9 agp_copy_info +EXPORT_SYMBOL vmlinux 0x11f3930c dentry_path_raw +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x12012015 kmem_cache_alloc_node_trace +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x120d67d4 unregister_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0x120e1ead tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0x122043a8 of_find_node_with_property +EXPORT_SYMBOL vmlinux 0x122945f3 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0x122ad270 vm_mmap +EXPORT_SYMBOL vmlinux 0x1230ae5c register_framebuffer +EXPORT_SYMBOL vmlinux 0x1239beaa dev_addr_flush +EXPORT_SYMBOL vmlinux 0x123c2785 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x1256fb8d __i2c_transfer +EXPORT_SYMBOL vmlinux 0x1269dd50 sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12b046d3 __serio_register_driver +EXPORT_SYMBOL vmlinux 0x12b52fab sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x12cb6622 _lv1_map_device_dma_region +EXPORT_SYMBOL vmlinux 0x12dfeb12 vprintk_emit +EXPORT_SYMBOL vmlinux 0x12e5ef0c rtas_set_power_level +EXPORT_SYMBOL vmlinux 0x12f2b3b7 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x13123456 single_release +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x133e29ed proc_remove +EXPORT_SYMBOL vmlinux 0x134709a3 no_llseek +EXPORT_SYMBOL vmlinux 0x1348760d ipmi_request_settime +EXPORT_SYMBOL vmlinux 0x13760ebe jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x13a11077 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x13afd472 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x13affbda percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13e38f5c up_read +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x13f53da6 CMO_PageSize +EXPORT_SYMBOL vmlinux 0x13f8fef3 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x1403fb05 ppp_dev_name +EXPORT_SYMBOL vmlinux 0x140d797f padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x14103f25 vga_client_register +EXPORT_SYMBOL vmlinux 0x141fe5fd pasemi_read_iob_reg +EXPORT_SYMBOL vmlinux 0x142a3d76 tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x142c4167 napi_complete +EXPORT_SYMBOL vmlinux 0x14321e8d input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x1466dc9f elevator_alloc +EXPORT_SYMBOL vmlinux 0x146ef854 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x147cdf27 generic_file_splice_write +EXPORT_SYMBOL vmlinux 0x1485a101 setup_arg_pages +EXPORT_SYMBOL vmlinux 0x149f5124 agp_allocate_memory +EXPORT_SYMBOL vmlinux 0x14a14817 pSeries_enable_reloc_on_exc +EXPORT_SYMBOL vmlinux 0x14c98d30 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x14e0e1e7 vfs_symlink +EXPORT_SYMBOL vmlinux 0x14ed0a3a generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x150c6028 pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0x151592c4 _lv1_invalidate_htab_entries +EXPORT_SYMBOL vmlinux 0x15368a86 drop_super +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x1551dc51 bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x15864b03 flex_array_get +EXPORT_SYMBOL vmlinux 0x15920714 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x159b6f4c neigh_app_ns +EXPORT_SYMBOL vmlinux 0x15d3fd60 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x15e68d53 file_update_time +EXPORT_SYMBOL vmlinux 0x15f262a1 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0x15f571ec blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x16045b76 netif_napi_add +EXPORT_SYMBOL vmlinux 0x160bd45c rtas_token +EXPORT_SYMBOL vmlinux 0x162d8246 kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x164f2254 scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x166e8a22 i2c_master_recv +EXPORT_SYMBOL vmlinux 0x167c5967 print_hex_dump +EXPORT_SYMBOL vmlinux 0x1689ec42 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x16ad4aed read_dev_sector +EXPORT_SYMBOL vmlinux 0x16b79199 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x16bdebb5 simple_transaction_release +EXPORT_SYMBOL vmlinux 0x16bfb1e1 vfs_getattr +EXPORT_SYMBOL vmlinux 0x16c536a2 ip6_frag_init +EXPORT_SYMBOL vmlinux 0x16cb9436 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL vmlinux 0x16fc4784 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x16fc7af6 gen10g_restart_aneg +EXPORT_SYMBOL vmlinux 0x16ff94be mount_subtree +EXPORT_SYMBOL vmlinux 0x1707ea7f dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x1727c61c netdev_warn +EXPORT_SYMBOL vmlinux 0x17282401 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x1743414f __debugger_fault_handler +EXPORT_SYMBOL vmlinux 0x17648396 dev_base_lock +EXPORT_SYMBOL vmlinux 0x17a3b1d4 blk_fetch_request +EXPORT_SYMBOL vmlinux 0x17b10b67 agp_free_memory +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17cb8c79 _lv1_read_htab_entries +EXPORT_SYMBOL vmlinux 0x17e28473 fsl_upm_run_pattern +EXPORT_SYMBOL vmlinux 0x17f101b8 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x1808d15c remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x180a91d2 mach_powernv +EXPORT_SYMBOL vmlinux 0x180d7457 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x1812c7bb input_flush_device +EXPORT_SYMBOL vmlinux 0x182f50af _lv1_open_device +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x1847523b copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x184e6c85 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x18529b8f netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0x1857aa39 proc_dointvec +EXPORT_SYMBOL vmlinux 0x186787c4 bioset_free +EXPORT_SYMBOL vmlinux 0x186b8604 sock_kmalloc +EXPORT_SYMBOL vmlinux 0x1871a383 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x1883b662 redraw_screen +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18a4928f buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x18b35239 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x18c98205 _lv1_destruct_virtual_address_space +EXPORT_SYMBOL vmlinux 0x18e4dc43 inetdev_by_index +EXPORT_SYMBOL vmlinux 0x18ed6d62 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x18f25a5d bioset_create +EXPORT_SYMBOL vmlinux 0x19111a40 lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x1922e017 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x1928b926 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x19310ece pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x193cca16 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x19444627 memcpy_fromiovecend +EXPORT_SYMBOL vmlinux 0x195382cc mark_page_accessed +EXPORT_SYMBOL vmlinux 0x1987dce8 mount_nodev +EXPORT_SYMBOL vmlinux 0x198d7ecc uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x199ec4fb arch_spin_unlock_wait +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19af34c9 d_instantiate +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19bd6b5a posix_lock_file +EXPORT_SYMBOL vmlinux 0x19c06d9d simple_unlink +EXPORT_SYMBOL vmlinux 0x19c968d1 pasemi_dma_start_chan +EXPORT_SYMBOL vmlinux 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL vmlinux 0x1a111a41 ftrace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x1a2aae77 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x1a2f6945 __next_cpu +EXPORT_SYMBOL vmlinux 0x1a33513c ipmi_smi_add_proc_entry +EXPORT_SYMBOL vmlinux 0x1a5fa7e7 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0x1a7355b0 add_disk +EXPORT_SYMBOL vmlinux 0x1a762f4e consume_skb +EXPORT_SYMBOL vmlinux 0x1a826c2d locks_init_lock +EXPORT_SYMBOL vmlinux 0x1a8c0621 dev_change_flags +EXPORT_SYMBOL vmlinux 0x1a91663d pasemi_dma_free_buf +EXPORT_SYMBOL vmlinux 0x1a9a230f agp_put_bridge +EXPORT_SYMBOL vmlinux 0x1aa8e2e8 agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL vmlinux 0x1ac5d3cb strcspn +EXPORT_SYMBOL vmlinux 0x1acb5d40 dscr_default +EXPORT_SYMBOL vmlinux 0x1ace138d bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0x1ad1d4b6 send_sig_info +EXPORT_SYMBOL vmlinux 0x1ae283fe dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x1af62a99 panic_notifier_list +EXPORT_SYMBOL vmlinux 0x1af941ec generic_show_options +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b096b06 pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x1b132009 rename_lock +EXPORT_SYMBOL vmlinux 0x1b1d6cec mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b479876 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x1b4eb393 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x1b547614 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b63fda2 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x1b6ea009 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x1b769084 inet_register_protosw +EXPORT_SYMBOL vmlinux 0x1b7765f4 always_delete_dentry +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b83c304 __mutex_init +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1b94efa2 devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0x1b97b16a block_invalidatepage +EXPORT_SYMBOL vmlinux 0x1b9e0ff1 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x1bc4e1b0 inet_sendmsg +EXPORT_SYMBOL vmlinux 0x1bc4ff03 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0x1bdc26cf sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0x1be6ac15 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x1bfec830 __iounmap_at +EXPORT_SYMBOL vmlinux 0x1c0ee2c8 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x1c200a7d pasemi_dma_stop_chan +EXPORT_SYMBOL vmlinux 0x1c3e02e4 memcmp +EXPORT_SYMBOL vmlinux 0x1c3fe4ca try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x1c4d66a6 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x1c4dab93 _lv1_connect_irq_plug +EXPORT_SYMBOL vmlinux 0x1c4e67bd mmc_detect_change +EXPORT_SYMBOL vmlinux 0x1c5b2c15 pmu_wait_complete +EXPORT_SYMBOL vmlinux 0x1c63cf07 fifo_set_limit +EXPORT_SYMBOL vmlinux 0x1c66bd4a __frontswap_test +EXPORT_SYMBOL vmlinux 0x1c80de9c ip_send_check +EXPORT_SYMBOL vmlinux 0x1ceee806 dm_io +EXPORT_SYMBOL vmlinux 0x1d06560a pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0x1d45b8ad netif_napi_del +EXPORT_SYMBOL vmlinux 0x1d4750bc _lv1_stop_lpm +EXPORT_SYMBOL vmlinux 0x1d4b338a dquot_file_open +EXPORT_SYMBOL vmlinux 0x1d57cd03 key_invalidate +EXPORT_SYMBOL vmlinux 0x1d60e128 security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0x1d6c9d53 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x1d8d9c5d dput +EXPORT_SYMBOL vmlinux 0x1d9250c4 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x1daee28a percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x1db92f8a blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x1dbc4d0c proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x1dc1f1c5 simple_lookup +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dce7e60 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1de39984 md_error +EXPORT_SYMBOL vmlinux 0x1e07cc77 elv_register_queue +EXPORT_SYMBOL vmlinux 0x1e201a6e should_remove_suid +EXPORT_SYMBOL vmlinux 0x1e232281 devm_request_and_ioremap +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e72b47c ps3_dma_region_free +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ec3bed9 hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0x1ecc71a1 phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0x1ed9805c user_path_at +EXPORT_SYMBOL vmlinux 0x1ee42cee blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x1eec378a empty_aops +EXPORT_SYMBOL vmlinux 0x1ef6b721 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x1f07d3c3 create_syslog_header +EXPORT_SYMBOL vmlinux 0x1f0a0707 of_device_alloc +EXPORT_SYMBOL vmlinux 0x1f0a4a55 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x1f0d86d5 mmc_release_host +EXPORT_SYMBOL vmlinux 0x1f351768 dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x1f41d85b poll_freewait +EXPORT_SYMBOL vmlinux 0x1f677544 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x1f6ce67a sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x1f73e8e7 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x1f762bcf request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x1f78eb99 scsi_host_get +EXPORT_SYMBOL vmlinux 0x1f7c5a66 netdev_features_change +EXPORT_SYMBOL vmlinux 0x1f8c6325 init_net +EXPORT_SYMBOL vmlinux 0x1f9693c7 iput +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fc51ec6 __pci_register_driver +EXPORT_SYMBOL vmlinux 0x1fc94000 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fe7b4ab pasemi_write_dma_reg +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fe9f800 unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x1fedf0f4 __request_region +EXPORT_SYMBOL vmlinux 0x1fee5cbb phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x1ff1bbd7 __lock_buffer +EXPORT_SYMBOL vmlinux 0x1ff76a31 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x1ffe85e2 generic_writepages +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x201494ee _lv1_net_set_interrupt_mask +EXPORT_SYMBOL vmlinux 0x201a3871 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x20418a8a inet6_add_offload +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x208f4c18 fsync_bdev +EXPORT_SYMBOL vmlinux 0x2092e047 seq_release_private +EXPORT_SYMBOL vmlinux 0x20a2c5ea dma_set_mask +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20a86b3f of_get_pci_address +EXPORT_SYMBOL vmlinux 0x20add221 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x20b2bb2d param_array_ops +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20e13444 of_phy_connect_fixed_link +EXPORT_SYMBOL vmlinux 0x2115f33c jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x211a44ba __seq_open_private +EXPORT_SYMBOL vmlinux 0x213603bf pasemi_dma_free_ring +EXPORT_SYMBOL vmlinux 0x214eca12 fasync_helper +EXPORT_SYMBOL vmlinux 0x214f5718 compat_ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x215ebd78 bitrev16 +EXPORT_SYMBOL vmlinux 0x2171d485 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x217cce0e ip6_route_output +EXPORT_SYMBOL vmlinux 0x2195c748 pcie_set_mps +EXPORT_SYMBOL vmlinux 0x21b033dd proc_set_size +EXPORT_SYMBOL vmlinux 0x21b17780 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x21de3ba9 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x21ecd7a3 dquot_transfer +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x2252a519 genl_notify +EXPORT_SYMBOL vmlinux 0x225ebee6 _lv1_destruct_lpm +EXPORT_SYMBOL vmlinux 0x2260fe4e netif_device_detach +EXPORT_SYMBOL vmlinux 0x226b698f make_bad_inode +EXPORT_SYMBOL vmlinux 0x2272f792 pci_dev_get +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x2278e94b slhc_remember +EXPORT_SYMBOL vmlinux 0x228d0cdf jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x229983b7 mmc_start_req +EXPORT_SYMBOL vmlinux 0x22a17c81 mmc_remove_host +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22b338b6 blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0x22d5dc77 dev_get_stats +EXPORT_SYMBOL vmlinux 0x22eb951d setattr_copy +EXPORT_SYMBOL vmlinux 0x22fd5f41 blk_mq_free_single_hw_queue +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x2325e3b3 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x233809c6 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL vmlinux 0x2348ecea tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x23577f84 register_gifconf +EXPORT_SYMBOL vmlinux 0x235e90f3 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x236bc614 padata_stop +EXPORT_SYMBOL vmlinux 0x23737f2c devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x23a52347 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23aef7f7 netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23beb0fd uart_update_timeout +EXPORT_SYMBOL vmlinux 0x23c1b664 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x23c2d08e padata_add_cpu +EXPORT_SYMBOL vmlinux 0x23c9891c kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x23cdcc26 ab3100_event_register +EXPORT_SYMBOL vmlinux 0x23f2243d mempool_free +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x24030515 of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0x2418bc4e fb_find_mode +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x24367b1f blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x244a2411 __first_cpu +EXPORT_SYMBOL vmlinux 0x244d7a12 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x2455ee0e scsi_print_result +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x245a5a94 sleep_on_timeout +EXPORT_SYMBOL vmlinux 0x247229d6 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x2484adc3 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0x24b11ed9 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x24b33064 mdiobus_register +EXPORT_SYMBOL vmlinux 0x24b50f82 __ps2_command +EXPORT_SYMBOL vmlinux 0x24cfd438 _lv1_copy_lpm_trace_buffer +EXPORT_SYMBOL vmlinux 0x24de9635 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x24e66a34 sock_update_classid +EXPORT_SYMBOL vmlinux 0x24e9ed89 dev_get_drvdata +EXPORT_SYMBOL vmlinux 0x24f7b56c mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x25037209 generic_setxattr +EXPORT_SYMBOL vmlinux 0x2513254c __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x251a3568 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x251dea3c proto_unregister +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x2532bcdf kern_path_create +EXPORT_SYMBOL vmlinux 0x256b55bc pm860x_page_reg_read +EXPORT_SYMBOL vmlinux 0x256bda99 bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25b2a20e fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x25b6b8f7 _lv1_set_spe_transition_notifier +EXPORT_SYMBOL vmlinux 0x25bca16a inet_add_protocol +EXPORT_SYMBOL vmlinux 0x25bdffd2 __bforget +EXPORT_SYMBOL vmlinux 0x25c677c4 mac_pton +EXPORT_SYMBOL vmlinux 0x25f4630c vfs_link +EXPORT_SYMBOL vmlinux 0x260cf8f8 of_get_property +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x263f44c1 pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x26477c07 __vmalloc +EXPORT_SYMBOL vmlinux 0x264a0ae9 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x264f8a58 generic_pipe_buf_map +EXPORT_SYMBOL vmlinux 0x2650d62f padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x2665d53a key_create_or_update +EXPORT_SYMBOL vmlinux 0x2685c3d7 __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x26b760c4 slhc_init +EXPORT_SYMBOL vmlinux 0x26e298e0 unregister_memory_notifier +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26f0453a blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x270391be scsi_setup_fs_cmnd +EXPORT_SYMBOL vmlinux 0x2710b3a7 dqput +EXPORT_SYMBOL vmlinux 0x2712f4f5 crc32_le_combine +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x2762032a serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x27646df3 start_thread +EXPORT_SYMBOL vmlinux 0x2772130a tty_do_resize +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x2797d285 skb_find_text +EXPORT_SYMBOL vmlinux 0x27a2ef4c set_nlink +EXPORT_SYMBOL vmlinux 0x27a7b148 devm_ioremap_prot +EXPORT_SYMBOL vmlinux 0x27b3efe1 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27ec0d20 pci_set_master +EXPORT_SYMBOL vmlinux 0x27eec75b inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x27f2313e idr_replace +EXPORT_SYMBOL vmlinux 0x280cfbbe rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x28318305 snprintf +EXPORT_SYMBOL vmlinux 0x284eb4cc neigh_connected_output +EXPORT_SYMBOL vmlinux 0x286febed generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x287bd04a kill_pgrp +EXPORT_SYMBOL vmlinux 0x2883a91a bio_sector_offset +EXPORT_SYMBOL vmlinux 0x2883c0e9 dump_align +EXPORT_SYMBOL vmlinux 0x2896dd17 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28a89b57 dev_err +EXPORT_SYMBOL vmlinux 0x28abfe6e scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x2910338c from_kuid +EXPORT_SYMBOL vmlinux 0x291fe994 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x2960019b eeh_check_failure +EXPORT_SYMBOL vmlinux 0x2989038b agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0x299f2fc6 mac_find_mode +EXPORT_SYMBOL vmlinux 0x29e69038 find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x29ed1ea4 sk_capable +EXPORT_SYMBOL vmlinux 0x29ef1e9b mach_ps3 +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a959fe9 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0x2aa4852f pci_enable_msix +EXPORT_SYMBOL vmlinux 0x2aa9033b gen10g_read_status +EXPORT_SYMBOL vmlinux 0x2ac8ceb9 compat_ip_setsockopt +EXPORT_SYMBOL vmlinux 0x2acd9d94 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2ae9c932 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0x2af0b606 padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x2af78708 console_stop +EXPORT_SYMBOL vmlinux 0x2b0b8026 sock_kfree_s +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b18c3fb simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x2b25ed28 default_llseek +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b2ef7b9 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0x2b41e553 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x2b432256 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bb89fe1 dm_kobject_release +EXPORT_SYMBOL vmlinux 0x2bf2275c get_pci_dma_ops +EXPORT_SYMBOL vmlinux 0x2c00d2c0 mark_buffer_async_write +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 0x2c4d40c9 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x2c65d036 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x2c7b1fca down_timeout +EXPORT_SYMBOL vmlinux 0x2c900d91 cpufreq_put_global_kobject +EXPORT_SYMBOL vmlinux 0x2cad9045 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x2cc1e8b1 udp_disconnect +EXPORT_SYMBOL vmlinux 0x2cce7d8f jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x2cf73cb7 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x2d03c10d posix_acl_create +EXPORT_SYMBOL vmlinux 0x2d09dfec sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d434561 kobject_del +EXPORT_SYMBOL vmlinux 0x2d6d518f km_new_mapping +EXPORT_SYMBOL vmlinux 0x2d759132 ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0x2d7d2767 _lv1_set_lpm_group_control +EXPORT_SYMBOL vmlinux 0x2d89342a scsi_show_sense_hdr +EXPORT_SYMBOL vmlinux 0x2d951f30 dev_addr_init +EXPORT_SYMBOL vmlinux 0x2d95c5c4 pci_pme_capable +EXPORT_SYMBOL vmlinux 0x2d9e3158 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x2daaaba9 param_get_byte +EXPORT_SYMBOL vmlinux 0x2db1e0c6 dql_init +EXPORT_SYMBOL vmlinux 0x2dcf646d inet_recvmsg +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2e0a0581 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x2e0c38d7 tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x2e0d2f7f queue_work_on +EXPORT_SYMBOL vmlinux 0x2e15033a __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x2e1a558d buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0x2e1bef92 eeh_subsystem_enabled +EXPORT_SYMBOL vmlinux 0x2e1e7ed1 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x2e2b40d2 strncat +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e351805 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x2e3562a4 dev_close +EXPORT_SYMBOL vmlinux 0x2e3aba42 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x2e456d92 dcache_dir_close +EXPORT_SYMBOL vmlinux 0x2e5df0ab pci_reenable_device +EXPORT_SYMBOL vmlinux 0x2e7421e0 mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2e93495e _lv1_write_htab_entry +EXPORT_SYMBOL vmlinux 0x2ebe3965 iget_locked +EXPORT_SYMBOL vmlinux 0x2ebfa5dd redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x2ec12086 giveup_fpu +EXPORT_SYMBOL vmlinux 0x2ed0c1ce __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x2ee4337f smu_queue_cmd +EXPORT_SYMBOL vmlinux 0x2eeceb42 sk_chk_filter +EXPORT_SYMBOL vmlinux 0x2ef15c21 kernel_accept +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 0x2f1207d5 fb_set_suspend +EXPORT_SYMBOL vmlinux 0x2f1b075f blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0x2f1dea72 netdev_notice +EXPORT_SYMBOL vmlinux 0x2f20ba2a bio_pair_release +EXPORT_SYMBOL vmlinux 0x2f287f0d copy_to_user +EXPORT_SYMBOL vmlinux 0x2f3d5763 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x2f3f8cfd dev_disable_lro +EXPORT_SYMBOL vmlinux 0x2f53b0ed input_close_device +EXPORT_SYMBOL vmlinux 0x2f676892 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x2f6b1a4a generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x2f936477 icmp_send +EXPORT_SYMBOL vmlinux 0x2f94d056 __get_user_pages +EXPORT_SYMBOL vmlinux 0x2fa562d2 fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0x2fae96de rtas_data_buf_lock +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2ff84abc crypto_sha256_update +EXPORT_SYMBOL vmlinux 0x301cda33 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x302d0709 kthread_bind +EXPORT_SYMBOL vmlinux 0x3051c2a6 kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x30762784 cdrom_open +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x308fa39f rt6_lookup +EXPORT_SYMBOL vmlinux 0x3093e88e fb_show_logo +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30af5b1c invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x30b83a1b d_find_alias +EXPORT_SYMBOL vmlinux 0x30b8b35c cpu_to_chip_id +EXPORT_SYMBOL vmlinux 0x30c8177b dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x30cada8f radix_tree_next_hole +EXPORT_SYMBOL vmlinux 0x30e793cf key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x30f7916e twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x30fc2954 scsi_host_put +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x31147d80 skb_tx_error +EXPORT_SYMBOL vmlinux 0x311a9ae9 inet_ioctl +EXPORT_SYMBOL vmlinux 0x312cfaf2 _lv1_disable_logical_spe +EXPORT_SYMBOL vmlinux 0x3135b944 dev_remove_offload +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3146b1e8 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x31484f4c blk_start_request +EXPORT_SYMBOL vmlinux 0x3148cbda pcim_iounmap +EXPORT_SYMBOL vmlinux 0x3159a88c security_inode_readlink +EXPORT_SYMBOL vmlinux 0x315a1c54 mmc_can_erase +EXPORT_SYMBOL vmlinux 0x315c65fd zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x315c6861 xfrm_lookup +EXPORT_SYMBOL vmlinux 0x31734b45 agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0x31787b72 from_kgid +EXPORT_SYMBOL vmlinux 0x317bd769 dma_sync_wait +EXPORT_SYMBOL vmlinux 0x3180f609 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x318cadb1 reciprocal_value +EXPORT_SYMBOL vmlinux 0x31911805 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x319e0726 __tracepoint_kmalloc +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 0x31d61e9a cur_cpu_spec +EXPORT_SYMBOL vmlinux 0x320027f4 blk_run_queue +EXPORT_SYMBOL vmlinux 0x3203a5f2 udp_add_offload +EXPORT_SYMBOL vmlinux 0x32055e77 __d_drop +EXPORT_SYMBOL vmlinux 0x3208f954 force_sig +EXPORT_SYMBOL vmlinux 0x321f7e22 generic_file_remap_pages +EXPORT_SYMBOL vmlinux 0x322f48d4 abx500_dump_all_banks +EXPORT_SYMBOL vmlinux 0x32364423 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x327b9c1b pmu_poll_adb +EXPORT_SYMBOL vmlinux 0x327bf883 of_can_translate_address +EXPORT_SYMBOL vmlinux 0x3284c88d tcf_hash_lookup +EXPORT_SYMBOL vmlinux 0x329adf82 mpage_readpage +EXPORT_SYMBOL vmlinux 0x32a77752 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x32d52549 bio_integrity_free +EXPORT_SYMBOL vmlinux 0x32fd4a76 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x33090ee6 tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0x3337220e do_SAK +EXPORT_SYMBOL vmlinux 0x333cb37c __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x337d823a __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x33838ea3 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x339b42d1 d_make_root +EXPORT_SYMBOL vmlinux 0x33a347a7 compat_tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33ba5cd4 param_ops_bool +EXPORT_SYMBOL vmlinux 0x33c52d63 blk_integrity_register +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33d72995 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x33d94289 textsearch_register +EXPORT_SYMBOL vmlinux 0x33ebf92b dqget +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33fcf44a __kfifo_out_r +EXPORT_SYMBOL vmlinux 0x340b4dcc swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x340d533a bio_alloc_pages +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x3423131b skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x344adbd5 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x346c4ded rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x34714640 free_mdio_bitbang +EXPORT_SYMBOL vmlinux 0x347eb9bd param_set_bool +EXPORT_SYMBOL vmlinux 0x3489219c submit_bh +EXPORT_SYMBOL vmlinux 0x348c6cd8 __memcg_kmem_get_cache +EXPORT_SYMBOL vmlinux 0x349a7c06 tcp_gro_receive +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34d47ce9 bitmap_unplug +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x350165a4 give_up_console +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x351a0a3c fixed_size_llseek +EXPORT_SYMBOL vmlinux 0x3539f11b match_strlcpy +EXPORT_SYMBOL vmlinux 0x353d87fe compat_sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x35647a90 mmc_hw_reset_check +EXPORT_SYMBOL vmlinux 0x3596e8f6 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x3598ec82 tcf_exts_change +EXPORT_SYMBOL vmlinux 0x35b934f2 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x35c28244 kfree_put_link +EXPORT_SYMBOL vmlinux 0x35c32767 xor_altivec_2 +EXPORT_SYMBOL vmlinux 0x35c9fae5 vlan_untag +EXPORT_SYMBOL vmlinux 0x35cbc656 devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0x35da688a pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x35defc50 iov_iter_advance +EXPORT_SYMBOL vmlinux 0x35e7f3f4 security_path_chmod +EXPORT_SYMBOL vmlinux 0x35ea8aae pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x3623135e scsi_unregister +EXPORT_SYMBOL vmlinux 0x362b1545 __scm_send +EXPORT_SYMBOL vmlinux 0x365fa77c mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x368382e2 of_get_named_gpiod_flags +EXPORT_SYMBOL vmlinux 0x369e1115 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x36b0e732 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36c735ad kset_unregister +EXPORT_SYMBOL vmlinux 0x36d7b11a of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0x36e2d135 nla_append +EXPORT_SYMBOL vmlinux 0x36e360e3 __hw_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x37008e66 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x370ee646 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x3716063c set_page_dirty +EXPORT_SYMBOL vmlinux 0x371902e9 _lv1_get_lpm_interrupt_status +EXPORT_SYMBOL vmlinux 0x371d2130 check_legacy_ioport +EXPORT_SYMBOL vmlinux 0x372c0c16 may_umount +EXPORT_SYMBOL vmlinux 0x37344510 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x37383edd rtas_get_power_level +EXPORT_SYMBOL vmlinux 0x37413de7 dev_load +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x375aa341 pci_enable_msi_block_auto +EXPORT_SYMBOL vmlinux 0x375f4079 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0x3778b23e scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x37b33094 freezing_slow_path +EXPORT_SYMBOL vmlinux 0x37bdc987 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37c80ef5 tcp_connect +EXPORT_SYMBOL vmlinux 0x37d174fa input_unregister_handle +EXPORT_SYMBOL vmlinux 0x37dcc727 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x3808c953 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x380d9254 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x382777ab _lv1_gpu_context_allocate +EXPORT_SYMBOL vmlinux 0x382b9f8f sync_inode +EXPORT_SYMBOL vmlinux 0x383c577f tcf_hash_release +EXPORT_SYMBOL vmlinux 0x384714da compat_ip_getsockopt +EXPORT_SYMBOL vmlinux 0x384ba4a3 from_kprojid +EXPORT_SYMBOL vmlinux 0x385d055b dquot_quota_off +EXPORT_SYMBOL vmlinux 0x3867e046 dquot_get_dqinfo +EXPORT_SYMBOL vmlinux 0x387484cb dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x38893ca2 mach_powermac +EXPORT_SYMBOL vmlinux 0x388f9128 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x38a3ae2c bio_copy_kern +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38c2eec0 bdgrab +EXPORT_SYMBOL vmlinux 0x38d5081f pcie_get_mps +EXPORT_SYMBOL vmlinux 0x38f62992 input_register_handler +EXPORT_SYMBOL vmlinux 0x38faa03f __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x38fb9933 tty_std_termios +EXPORT_SYMBOL vmlinux 0x3904b071 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x3926f4fe pneigh_lookup +EXPORT_SYMBOL vmlinux 0x3935f86f flush_icache_user_range +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x394ed13b nla_reserve +EXPORT_SYMBOL vmlinux 0x395143a8 unregister_console +EXPORT_SYMBOL vmlinux 0x3955fcf6 __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x396f79e1 arp_xmit +EXPORT_SYMBOL vmlinux 0x399ad043 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0x39b703f2 tcp_ioctl +EXPORT_SYMBOL vmlinux 0x39ccbda2 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x39cdf63c wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x39d63aa1 cdev_del +EXPORT_SYMBOL vmlinux 0x3a106954 pci_find_bus +EXPORT_SYMBOL vmlinux 0x3a19864e inet_add_offload +EXPORT_SYMBOL vmlinux 0x3a1db001 bmap +EXPORT_SYMBOL vmlinux 0x3a20ff73 __crc32c_le +EXPORT_SYMBOL vmlinux 0x3a2ca373 netif_rx +EXPORT_SYMBOL vmlinux 0x3a381815 filemap_fault +EXPORT_SYMBOL vmlinux 0x3a4a0adb inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0x3a8b1af2 vfs_rename +EXPORT_SYMBOL vmlinux 0x3a94cbdf eth_header_parse +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3abbfd31 kfree_skb_list +EXPORT_SYMBOL vmlinux 0x3ad4d65b __scm_destroy +EXPORT_SYMBOL vmlinux 0x3ad92383 get_super +EXPORT_SYMBOL vmlinux 0x3af35f69 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x3b1710b7 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x3b615a21 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x3b6b72d9 mntget +EXPORT_SYMBOL vmlinux 0x3bd1b1f6 msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x3bef03b9 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x3bf351c4 dquot_operations +EXPORT_SYMBOL vmlinux 0x3c047325 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x3c063932 lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x3c290cef flush_dcache_page +EXPORT_SYMBOL vmlinux 0x3c30ece8 search_binary_handler +EXPORT_SYMBOL vmlinux 0x3c438f88 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x3c44fc4a dquot_commit_info +EXPORT_SYMBOL vmlinux 0x3c553193 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x3c606e52 clear_user_page +EXPORT_SYMBOL vmlinux 0x3c6d8f1e replace_mount_options +EXPORT_SYMBOL vmlinux 0x3c7f0b2a dev_emerg +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c85bb66 pci_dev_put +EXPORT_SYMBOL vmlinux 0x3c927ccf pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x3c9d1211 string_get_size +EXPORT_SYMBOL vmlinux 0x3cae4784 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x3cc445d4 fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0x3cc48d32 agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0x3cc4b0dc lg_lock_init +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3cf3242d inet_frags_init_net +EXPORT_SYMBOL vmlinux 0x3cfedfdb clear_inode +EXPORT_SYMBOL vmlinux 0x3d1c360a ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x3d1fcca6 nf_log_register +EXPORT_SYMBOL vmlinux 0x3d2c8976 netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x3d2ee1b8 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x3d303b51 thaw_bdev +EXPORT_SYMBOL vmlinux 0x3d416c3c skb_put +EXPORT_SYMBOL vmlinux 0x3d41904f of_get_next_child +EXPORT_SYMBOL vmlinux 0x3d4b1155 km_query +EXPORT_SYMBOL vmlinux 0x3d5844b3 strnicmp +EXPORT_SYMBOL vmlinux 0x3d71bf52 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x3db3bc26 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dd8d450 scsi_device_get +EXPORT_SYMBOL vmlinux 0x3de4be89 lookup_one_len +EXPORT_SYMBOL vmlinux 0x3dee4b94 ip_ct_attach +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e062f05 scm_detach_fds +EXPORT_SYMBOL vmlinux 0x3e0d1284 dev_set_mtu +EXPORT_SYMBOL vmlinux 0x3e2606d2 __napi_schedule +EXPORT_SYMBOL vmlinux 0x3e286dca _lv1_get_rtc +EXPORT_SYMBOL vmlinux 0x3e3e4fe1 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x3e454d7c get_write_access +EXPORT_SYMBOL vmlinux 0x3e5d3621 sk_dst_check +EXPORT_SYMBOL vmlinux 0x3e605fbc try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x3e709c04 tty_mutex +EXPORT_SYMBOL vmlinux 0x3e8563e8 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x3e856953 mfd_add_devices +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3ea185af dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0x3eb1c31d mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x3eb3c692 skb_queue_head +EXPORT_SYMBOL vmlinux 0x3ebfdb83 __devm_request_region +EXPORT_SYMBOL vmlinux 0x3ed63055 zlib_inflateReset +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f06a656 _lv1_construct_event_receive_port +EXPORT_SYMBOL vmlinux 0x3f10320b sock_update_memcg +EXPORT_SYMBOL vmlinux 0x3f14557b phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x3f3449c7 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x3f406a3b enable_kernel_altivec +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f765a1a __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x3f9dface skb_orphan_partial +EXPORT_SYMBOL vmlinux 0x3faa4812 vsc824x_add_skew +EXPORT_SYMBOL vmlinux 0x3fbfd6ed _lv1_gpu_open +EXPORT_SYMBOL vmlinux 0x3fcc5cdb blk_mq_end_io +EXPORT_SYMBOL vmlinux 0x3fcc710b tcp_check_req +EXPORT_SYMBOL vmlinux 0x3fd55724 of_n_size_cells +EXPORT_SYMBOL vmlinux 0x3fe0d1c0 slhc_free +EXPORT_SYMBOL vmlinux 0x3fe2ccbe memweight +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3ff559f9 ___pskb_trim +EXPORT_SYMBOL vmlinux 0x3ff62317 local_bh_disable +EXPORT_SYMBOL vmlinux 0x3ff8069b tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x3ff8e495 lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0x4002027a tcp_child_process +EXPORT_SYMBOL vmlinux 0x40021502 scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x404066c5 idr_for_each +EXPORT_SYMBOL vmlinux 0x40576dc1 md_wait_for_blocked_rdev +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 0x40ab8391 dentry_unhash +EXPORT_SYMBOL vmlinux 0x40acce46 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40ca1199 cont_write_begin +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40e6f2fd ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL vmlinux 0x41361807 _lv1_get_logical_ppe_id +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x4159c38f ioremap_wc +EXPORT_SYMBOL vmlinux 0x4181df6d __nla_reserve +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x419c8a9a __nlmsg_put +EXPORT_SYMBOL vmlinux 0x41a75bc9 udp_sendmsg +EXPORT_SYMBOL vmlinux 0x41ac2b47 fail_migrate_page +EXPORT_SYMBOL vmlinux 0x41cc023f make_kuid +EXPORT_SYMBOL vmlinux 0x41dbf4de _lv1_start_lpm +EXPORT_SYMBOL vmlinux 0x41fbccb3 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x4211c3c1 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x421808f6 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x421b260f scsi_register_driver +EXPORT_SYMBOL vmlinux 0x423b776a ipmi_create_user +EXPORT_SYMBOL vmlinux 0x42488fab pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x4253c397 dma_direct_ops +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x426c941b netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0x42977ad4 __hw_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x42979c35 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42c6a18d write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x42d922ac balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x4306060b blk_requeue_request +EXPORT_SYMBOL vmlinux 0x431a9eb9 __inode_permission +EXPORT_SYMBOL vmlinux 0x431ba079 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x43358f5c secpath_dup +EXPORT_SYMBOL vmlinux 0x434a2836 mach_maple +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x43632d7d of_find_property +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x436e7851 neigh_table_clear +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x4399fa64 key_link +EXPORT_SYMBOL vmlinux 0x43a01f90 complete_all +EXPORT_SYMBOL vmlinux 0x43a31980 cdrom_release +EXPORT_SYMBOL vmlinux 0x43ab2e0e pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x43b22aad pci_claim_resource +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x440630f3 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x443b47d6 generic_fillattr +EXPORT_SYMBOL vmlinux 0x4442ff41 i2c_bit_add_bus +EXPORT_SYMBOL vmlinux 0x445d55f9 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x4465c8f0 agp_generic_enable +EXPORT_SYMBOL vmlinux 0x448cb640 nf_afinfo +EXPORT_SYMBOL vmlinux 0x448eac3e kmemdup +EXPORT_SYMBOL vmlinux 0x44a440ca genl_unregister_family +EXPORT_SYMBOL vmlinux 0x44ae29df vc_resize +EXPORT_SYMBOL vmlinux 0x44ca9c00 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44eb192e wait_for_completion +EXPORT_SYMBOL vmlinux 0x44f45bac twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x44f5e8b5 of_allnodes +EXPORT_SYMBOL vmlinux 0x450b270c __scsi_put_command +EXPORT_SYMBOL vmlinux 0x45127f9b mpage_readpages +EXPORT_SYMBOL vmlinux 0x4530465c d_find_any_alias +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x455f1ce3 __destroy_inode +EXPORT_SYMBOL vmlinux 0x4564459b _lv1_set_virtual_uart_param +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x458eca1a scsi_adjust_queue_depth +EXPORT_SYMBOL vmlinux 0x45a55ec8 __iounmap +EXPORT_SYMBOL vmlinux 0x45a6be13 cpufreq_sysfs_remove_file +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45b76594 netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x45cfe80b pasemi_dma_free_flag +EXPORT_SYMBOL vmlinux 0x45d6c7c7 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x45ff3fa6 wait_on_sync_kiocb +EXPORT_SYMBOL vmlinux 0x4612c59d down_trylock +EXPORT_SYMBOL vmlinux 0x461ac773 kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x461ebfa0 __copy_tofrom_user +EXPORT_SYMBOL vmlinux 0x4652c514 phy_start +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46608fa0 getnstimeofday +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x467ff3c8 netdev_printk +EXPORT_SYMBOL vmlinux 0x46afd532 on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x46c0de52 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x46d12956 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x46dbdacd mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0x46ee8988 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x46f98eef pcie_port_service_register +EXPORT_SYMBOL vmlinux 0x46fe1334 sock_init_data +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x470077a7 pci_pme_active +EXPORT_SYMBOL vmlinux 0x471248cd __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x474bcf7e bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x4781ccb0 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x4784e1e5 skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x479d4603 inode_init_once +EXPORT_SYMBOL vmlinux 0x47b3f862 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0x47b40e50 __skb_dst_set_noref +EXPORT_SYMBOL vmlinux 0x47b6d7ee keyring_search +EXPORT_SYMBOL vmlinux 0x47bcf84c param_set_ulong +EXPORT_SYMBOL vmlinux 0x47bf0b37 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x47c8baf4 param_ops_uint +EXPORT_SYMBOL vmlinux 0x47cf88de nf_hook_slow +EXPORT_SYMBOL vmlinux 0x47cfc25e scsi_dma_map +EXPORT_SYMBOL vmlinux 0x47d5c053 netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x47e278ed end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x48034724 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x480ab42a __next_cpu_nr +EXPORT_SYMBOL vmlinux 0x480ccc92 swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x48135440 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x4815f22b _lv1_gpu_attribute +EXPORT_SYMBOL vmlinux 0x4829a47e memcpy +EXPORT_SYMBOL vmlinux 0x4829fef8 kernel_bind +EXPORT_SYMBOL vmlinux 0x482a2a49 param_set_charp +EXPORT_SYMBOL vmlinux 0x48404b9a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x4841bdee strnchr +EXPORT_SYMBOL vmlinux 0x4843a1b9 _lv1_delete_repository_node +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x486face7 n_tty_compat_ioctl_helper +EXPORT_SYMBOL vmlinux 0x4877fc5d pcim_iomap +EXPORT_SYMBOL vmlinux 0x487d27d4 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x4881efab pmac_get_partition +EXPORT_SYMBOL vmlinux 0x4894d5c5 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x48c6db53 of_get_child_by_name +EXPORT_SYMBOL vmlinux 0x48f00585 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x48fabfbf gen_new_estimator +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +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 0x49761889 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0x497d678b register_md_personality +EXPORT_SYMBOL vmlinux 0x4980d349 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x49af62ef tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49b48eca registered_fb +EXPORT_SYMBOL vmlinux 0x49ca1ff1 mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0x49e9a193 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x49f1383d module_refcount +EXPORT_SYMBOL vmlinux 0x49ff4f9e pipe_to_file +EXPORT_SYMBOL vmlinux 0x4a09cf9b sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x4a358252 __bitmap_subset +EXPORT_SYMBOL vmlinux 0x4a462a35 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x4a4ce33a __break_lease +EXPORT_SYMBOL vmlinux 0x4a5a6aa5 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x4a713208 dev_mc_init +EXPORT_SYMBOL vmlinux 0x4a7d359c zerocopy_sg_from_iovec +EXPORT_SYMBOL vmlinux 0x4a7d9e15 do_truncate +EXPORT_SYMBOL vmlinux 0x4ab70221 cfb_copyarea +EXPORT_SYMBOL vmlinux 0x4ac64da4 _lv1_select_virtual_address_space +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4ad7df0b eth_type_trans +EXPORT_SYMBOL vmlinux 0x4adb7c86 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x4aeb72ac blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0x4afb74eb pmac_resume_agp_for_card +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b0854d6 netdev_update_features +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b20e8de sock_no_socketpair +EXPORT_SYMBOL vmlinux 0x4b36780f netlink_ack +EXPORT_SYMBOL vmlinux 0x4b3cb349 _lv1_destruct_io_irq_outlet +EXPORT_SYMBOL vmlinux 0x4b476ee3 md_unregister_thread +EXPORT_SYMBOL vmlinux 0x4b53bb21 xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0x4b5bb928 of_device_unregister +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b658a58 override_creds +EXPORT_SYMBOL vmlinux 0x4b6fcddc _lv1_set_spe_interrupt_mask +EXPORT_SYMBOL vmlinux 0x4b7ed27b sleep_on +EXPORT_SYMBOL vmlinux 0x4ba4a034 pci_target_state +EXPORT_SYMBOL vmlinux 0x4bc652d4 i8042_remove_filter +EXPORT_SYMBOL vmlinux 0x4bc7cfb2 agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0x4bed99b3 __percpu_counter_add +EXPORT_SYMBOL vmlinux 0x4c11435a _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c1182cb bitmap_scnprintf +EXPORT_SYMBOL vmlinux 0x4c28ab7f devm_ioport_map +EXPORT_SYMBOL vmlinux 0x4c440d7d ip_defrag +EXPORT_SYMBOL vmlinux 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL vmlinux 0x4c98c482 uart_suspend_port +EXPORT_SYMBOL vmlinux 0x4c9ce877 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x4ca9669f scnprintf +EXPORT_SYMBOL vmlinux 0x4cb0e988 gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0x4cbbd171 __bitmap_weight +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4ce16c7d locks_remove_posix +EXPORT_SYMBOL vmlinux 0x4ce3c849 submit_bio_wait +EXPORT_SYMBOL vmlinux 0x4cf11505 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x4d35171b agp_create_memory +EXPORT_SYMBOL vmlinux 0x4d4ec08e tty_free_termios +EXPORT_SYMBOL vmlinux 0x4d5a0bf2 alloc_mdio_bitbang +EXPORT_SYMBOL vmlinux 0x4d6e4f13 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x4d78f0c5 scsi_prep_state_check +EXPORT_SYMBOL vmlinux 0x4d7a2f48 kern_unmount +EXPORT_SYMBOL vmlinux 0x4d83a308 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d99900a serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x4d9a3f2b skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x4d9a5232 bio_clone_bioset +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4da6a5f0 account_page_writeback +EXPORT_SYMBOL vmlinux 0x4da7c931 rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0x4dca4045 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4df6b3af iget_failed +EXPORT_SYMBOL vmlinux 0x4dfed71c flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x4e03ee38 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e4ea57b misc_register +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e699d81 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e786d13 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0x4e835825 register_cdrom +EXPORT_SYMBOL vmlinux 0x4e90b8bf of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0x4e98695d bio_map_kern +EXPORT_SYMBOL vmlinux 0x4e9dffb5 ip_fast_csum +EXPORT_SYMBOL vmlinux 0x4ead9da8 pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0x4eb3d509 simple_write_begin +EXPORT_SYMBOL vmlinux 0x4edd72f7 block_all_signals +EXPORT_SYMBOL vmlinux 0x4eeeebd6 tcp_seq_open +EXPORT_SYMBOL vmlinux 0x4ef01f85 sock_i_uid +EXPORT_SYMBOL vmlinux 0x4f0ddced input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x4f1c22e8 bio_copy_data +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f248523 of_find_node_by_name +EXPORT_SYMBOL vmlinux 0x4f359751 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x4f37ce50 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f435893 dev_alert +EXPORT_SYMBOL vmlinux 0x4f5db64a of_dev_get +EXPORT_SYMBOL vmlinux 0x4f664db6 _lv1_insert_htab_entry +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4fbe1b38 remove_proc_subtree +EXPORT_SYMBOL vmlinux 0x4fbf3ea8 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x4fc6ec7a blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4fe1264b inode_needs_sync +EXPORT_SYMBOL vmlinux 0x4fe48ff2 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x4fe9a345 pci_enable_ido +EXPORT_SYMBOL vmlinux 0x4ff5028c mapping_tagged +EXPORT_SYMBOL vmlinux 0x4ff92140 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x50188eeb elv_rb_add +EXPORT_SYMBOL vmlinux 0x5039ea24 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x5081ea76 generic_file_open +EXPORT_SYMBOL vmlinux 0x5085b699 i8042_install_filter +EXPORT_SYMBOL vmlinux 0x50a8f60c __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x50a90e8d bsearch +EXPORT_SYMBOL vmlinux 0x50ae7d80 __idr_pre_get +EXPORT_SYMBOL vmlinux 0x50bb60c6 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x50c01af3 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x50c4f45d filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x50d2592d hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0x51018067 input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x51268016 scsi_setup_blk_pc_cmnd +EXPORT_SYMBOL vmlinux 0x513b7047 dm_register_target +EXPORT_SYMBOL vmlinux 0x519b0da3 finish_wait +EXPORT_SYMBOL vmlinux 0x51a35f1a __get_page_tail +EXPORT_SYMBOL vmlinux 0x51b89691 account_page_dirtied +EXPORT_SYMBOL vmlinux 0x51dcc04c genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x51dce73b xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x51e8bad7 elevator_init +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x5210dda2 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x52126c4d inode_init_always +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x5238cd03 scm_fp_dup +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x5245f6a4 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL vmlinux 0x5269cf48 agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0x527830ff pmac_xpram_read +EXPORT_SYMBOL vmlinux 0x52a31b73 pci_iounmap +EXPORT_SYMBOL vmlinux 0x52caff29 freeze_super +EXPORT_SYMBOL vmlinux 0x52dda83a netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0x52df72cd lock_fb_info +EXPORT_SYMBOL vmlinux 0x52e3fa05 _lv1_allocate_memory +EXPORT_SYMBOL vmlinux 0x52e85dc5 datagram_poll +EXPORT_SYMBOL vmlinux 0x52f5677c lro_receive_skb +EXPORT_SYMBOL vmlinux 0x53030111 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x53077d42 __generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x530f6d76 serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x5339f5f8 _lv1_read_virtual_uart +EXPORT_SYMBOL vmlinux 0x534ef0c1 tty_unlock +EXPORT_SYMBOL vmlinux 0x53567b55 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x5365c790 dev_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x5367178e pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x536cc847 memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x536d329b hvcs_get_partner_info +EXPORT_SYMBOL vmlinux 0x5377e556 hex2bin +EXPORT_SYMBOL vmlinux 0x538c665a i2c_transfer +EXPORT_SYMBOL vmlinux 0x5395f3a5 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x53aefe8e d_add_ci +EXPORT_SYMBOL vmlinux 0x53b82e0d splice_from_pipe_end +EXPORT_SYMBOL vmlinux 0x53c51e58 scsi_put_command +EXPORT_SYMBOL vmlinux 0x53cbc260 __vlan_find_dev_deep +EXPORT_SYMBOL vmlinux 0x53d5603a netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x53e67a3e inc_nlink +EXPORT_SYMBOL vmlinux 0x53e79024 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x53ebab1b _outsl_ns +EXPORT_SYMBOL vmlinux 0x53fd96b6 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x5403a255 __inet6_hash +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x5412c7c7 up +EXPORT_SYMBOL vmlinux 0x541b4c61 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0x54245b39 kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x546a2e2c skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x54810f7b find_vma +EXPORT_SYMBOL vmlinux 0x54824b13 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x5488862b __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x548dcd3b input_event +EXPORT_SYMBOL vmlinux 0x5490dd0e __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54baee53 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x54d01307 macio_dev_get +EXPORT_SYMBOL vmlinux 0x54d92bfa ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x54e3cc3b param_get_int +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x55145104 netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x55346bfe qdisc_destroy +EXPORT_SYMBOL vmlinux 0x55393689 devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x5549253a tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x5568c553 complete +EXPORT_SYMBOL vmlinux 0x556c2740 hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x5577ef9e udp_table +EXPORT_SYMBOL vmlinux 0x557b3dd8 _lv1_gpu_close +EXPORT_SYMBOL vmlinux 0x558fa542 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x5594be03 bitmap_remap +EXPORT_SYMBOL vmlinux 0x5598c709 blk_get_request +EXPORT_SYMBOL vmlinux 0x55c8ef8f sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x55ccd4d2 hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0x55d2ecf7 follow_pfn +EXPORT_SYMBOL vmlinux 0x55e2766b get_task_io_context +EXPORT_SYMBOL vmlinux 0x55ed26bc locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x55f5019b __kmalloc_node +EXPORT_SYMBOL vmlinux 0x5608c753 vc_cons +EXPORT_SYMBOL vmlinux 0x5614b010 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x5642793a radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x568804ee _lv1_destruct_event_receive_port +EXPORT_SYMBOL vmlinux 0x56a10763 csum_tcpudp_magic +EXPORT_SYMBOL vmlinux 0x56a3d02d stop_tty +EXPORT_SYMBOL vmlinux 0x56a50260 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x56c1cab9 __napi_complete +EXPORT_SYMBOL vmlinux 0x56c2b95b rtas_progress +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56d5ca8f security_mmap_file +EXPORT_SYMBOL vmlinux 0x56ddd997 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x56f0a8ef write_one_page +EXPORT_SYMBOL vmlinux 0x56f5cbe8 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x56fe64ea blk_execute_rq +EXPORT_SYMBOL vmlinux 0x572647d6 get_mce_fault_addr +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x574a4d12 dump_emit +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x5761e4fe inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x57729f2b giveup_altivec +EXPORT_SYMBOL vmlinux 0x5785384a flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x5790140a xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x57915595 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x5792f848 strlcpy +EXPORT_SYMBOL vmlinux 0x579bab50 _lv1_gpu_memory_free +EXPORT_SYMBOL vmlinux 0x57b9c720 dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x57cebb78 of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0x57fd6cc9 kernel_connect +EXPORT_SYMBOL vmlinux 0x581a1fe7 mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0x582e3c68 netif_device_attach +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x5846c11e dquot_acquire +EXPORT_SYMBOL vmlinux 0x584b56da kernel_listen +EXPORT_SYMBOL vmlinux 0x5850218b padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x58592d9d splice_from_pipe_begin +EXPORT_SYMBOL vmlinux 0x585f203e simple_release_fs +EXPORT_SYMBOL vmlinux 0x5860a0f2 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x58721994 pci_domain_nr +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x587a1918 inet_getname +EXPORT_SYMBOL vmlinux 0x58811045 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x588538eb block_truncate_page +EXPORT_SYMBOL vmlinux 0x58a39112 agp_collect_device_status +EXPORT_SYMBOL vmlinux 0x58d1070a of_get_address +EXPORT_SYMBOL vmlinux 0x58d84279 skb_free_datagram +EXPORT_SYMBOL vmlinux 0x591c62a6 blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0x591d509b pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x5922891a gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x5940fdf6 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x5950857e tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x595d0946 empty_zero_page +EXPORT_SYMBOL vmlinux 0x5967c929 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x59717cb9 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x59811667 try_module_get +EXPORT_SYMBOL vmlinux 0x5981bd7c pci_save_state +EXPORT_SYMBOL vmlinux 0x59831234 nf_log_packet +EXPORT_SYMBOL vmlinux 0x5991219c cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x59965598 neigh_compat_output +EXPORT_SYMBOL vmlinux 0x59b3378a completion_done +EXPORT_SYMBOL vmlinux 0x59f51fe5 giveup_vsx +EXPORT_SYMBOL vmlinux 0x5a025f7b arch_local_irq_restore +EXPORT_SYMBOL vmlinux 0x5a04201e jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x5a0aaa12 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x5a1396ea seq_puts +EXPORT_SYMBOL vmlinux 0x5a193e3d fb_class +EXPORT_SYMBOL vmlinux 0x5a395f55 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x5a3dcf8b mmc_can_reset +EXPORT_SYMBOL vmlinux 0x5a41901f uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x5a5536c2 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x5a5cc705 fb_pan_display +EXPORT_SYMBOL vmlinux 0x5a6073f1 netlink_net_capable +EXPORT_SYMBOL vmlinux 0x5a7dab54 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x5a7daef6 alloc_disk_node +EXPORT_SYMBOL vmlinux 0x5a7ee7eb iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x5a921311 strncmp +EXPORT_SYMBOL vmlinux 0x5a9f1d63 memmove +EXPORT_SYMBOL vmlinux 0x5aabc3b4 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x5ac34178 bh_submit_read +EXPORT_SYMBOL vmlinux 0x5ad299b5 irq_set_chip +EXPORT_SYMBOL vmlinux 0x5ad701bb tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x5adcfb42 pci_request_regions +EXPORT_SYMBOL vmlinux 0x5ae50279 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x5b020036 release_firmware +EXPORT_SYMBOL vmlinux 0x5b074a53 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x5b0abf20 flush_signals +EXPORT_SYMBOL vmlinux 0x5b0ad66f eth_rebuild_header +EXPORT_SYMBOL vmlinux 0x5b2a6f0b sk_receive_skb +EXPORT_SYMBOL vmlinux 0x5b39988e ftrace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x5b43f1f1 rtas_service_present +EXPORT_SYMBOL vmlinux 0x5b4aec9a uart_add_one_port +EXPORT_SYMBOL vmlinux 0x5b5163ad elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x5b52623f skb_unlink +EXPORT_SYMBOL vmlinux 0x5b56860c vm_munmap +EXPORT_SYMBOL vmlinux 0x5b5a7f3d pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0x5b9828c5 dma_spin_lock +EXPORT_SYMBOL vmlinux 0x5b9d99bf alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x5b9faa96 ps3_sb_event_receive_port_setup +EXPORT_SYMBOL vmlinux 0x5bb241cf backlight_device_register +EXPORT_SYMBOL vmlinux 0x5bb33dc8 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x5bc10524 printk_emit +EXPORT_SYMBOL vmlinux 0x5bc1a715 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x5be5417e blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x5bf63794 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0x5c0f9b5e of_match_device +EXPORT_SYMBOL vmlinux 0x5c37f319 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x5c608c0a tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x5c60e576 blk_rq_init +EXPORT_SYMBOL vmlinux 0x5c87b381 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x5c90eb02 xfrm_register_km +EXPORT_SYMBOL vmlinux 0x5c98144c capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0x5cc72720 key_task_permission +EXPORT_SYMBOL vmlinux 0x5ccc9045 _lv1_close_device +EXPORT_SYMBOL vmlinux 0x5cead803 vfs_statfs +EXPORT_SYMBOL vmlinux 0x5cf30e10 __debugger_ipi +EXPORT_SYMBOL vmlinux 0x5cf51c82 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5d045fee ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x5d1430dc tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x5d1a70cf input_free_device +EXPORT_SYMBOL vmlinux 0x5d41c87c param_ops_charp +EXPORT_SYMBOL vmlinux 0x5d436828 ip_check_defrag +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d5b5a16 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x5d6bdce1 flex_array_alloc +EXPORT_SYMBOL vmlinux 0x5db9db16 get_tz_trend +EXPORT_SYMBOL vmlinux 0x5dbb42b1 scsi_prep_fn +EXPORT_SYMBOL vmlinux 0x5dcadd1c page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x5dd80d58 ps3_dma_region_init +EXPORT_SYMBOL vmlinux 0x5df05c82 dev_set_group +EXPORT_SYMBOL vmlinux 0x5dfb8ef8 skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x5e08368b swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0x5e1bf177 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x5e223810 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x5e26ff06 simple_write_end +EXPORT_SYMBOL vmlinux 0x5e3a8a9c __wake_up +EXPORT_SYMBOL vmlinux 0x5e529b19 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x5e56dbf1 tty_lock +EXPORT_SYMBOL vmlinux 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5e9cbd22 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x5ea46329 udp_seq_open +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ed3d9b3 scsi_device_put +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f0bd36c arp_tbl +EXPORT_SYMBOL vmlinux 0x5f28c2dc idr_remove +EXPORT_SYMBOL vmlinux 0x5f3c8f5c mmc_assume_removable +EXPORT_SYMBOL vmlinux 0x5f4eb078 fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0x5f5ea09a phy_driver_register +EXPORT_SYMBOL vmlinux 0x5f8a2728 isa_io_base +EXPORT_SYMBOL vmlinux 0x5f8c8c89 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x5fbb64ed bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5fe8ed15 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x60308e09 blk_mq_insert_request +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x603657eb ps2_begin_command +EXPORT_SYMBOL vmlinux 0x604665f7 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x60525c8e page_follow_link_light +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x6075e5e2 posix_lock_file_wait +EXPORT_SYMBOL vmlinux 0x6086fae9 rwsem_wake +EXPORT_SYMBOL vmlinux 0x6098871a inet_accept +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60b079b3 ilookup +EXPORT_SYMBOL vmlinux 0x60c11287 simple_dentry_operations +EXPORT_SYMBOL vmlinux 0x60cf6e4a proc_mkdir +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60e9a168 ps2_command +EXPORT_SYMBOL vmlinux 0x61229b10 node_to_cpumask_map +EXPORT_SYMBOL vmlinux 0x612390ad netpoll_set_trap +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x6152eff0 serio_interrupt +EXPORT_SYMBOL vmlinux 0x61538ad0 param_get_charp +EXPORT_SYMBOL vmlinux 0x615da462 bdput +EXPORT_SYMBOL vmlinux 0x6177d566 scsi_nonblockable_ioctl +EXPORT_SYMBOL vmlinux 0x618911fc numa_node +EXPORT_SYMBOL vmlinux 0x619b59e5 vio_get_attribute +EXPORT_SYMBOL vmlinux 0x619cb7dd simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x61a4487c _lv1_gpu_device_unmap +EXPORT_SYMBOL vmlinux 0x61b21dd3 ppp_input_error +EXPORT_SYMBOL vmlinux 0x61b57897 max8998_write_reg +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61c4e816 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x61c9cf5a blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x61dc79ae genlmsg_put +EXPORT_SYMBOL vmlinux 0x61dcdcd3 _lv1_pause +EXPORT_SYMBOL vmlinux 0x61ded905 ata_dev_printk +EXPORT_SYMBOL vmlinux 0x61eef2c9 _insb +EXPORT_SYMBOL vmlinux 0x61f3556c elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x61fbcded sock_alloc_file +EXPORT_SYMBOL vmlinux 0x62022b50 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x6209a0c1 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x620d649b ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x62538167 slhc_toss +EXPORT_SYMBOL vmlinux 0x626baf85 __getblk +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x62c490a2 blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x62cda7af skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x62f21fb1 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x6308dfc6 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x63134f9c pci_get_subsys +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x63221f9e tty_set_operations +EXPORT_SYMBOL vmlinux 0x63231951 gen_pool_create +EXPORT_SYMBOL vmlinux 0x63290ce4 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x63354899 genphy_update_link +EXPORT_SYMBOL vmlinux 0x63396aec __debugger_break_match +EXPORT_SYMBOL vmlinux 0x6360d639 cpu_all_bits +EXPORT_SYMBOL vmlinux 0x63809a88 __lock_page +EXPORT_SYMBOL vmlinux 0x63847272 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x638662bc mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x638d2c92 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x63d43e51 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x63d56fae neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63f75920 _lv1_construct_virtual_address_space +EXPORT_SYMBOL vmlinux 0x63f94f4e pm860x_page_bulk_write +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x641b7393 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x6427c540 skb_trim +EXPORT_SYMBOL vmlinux 0x642a19f8 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x64443af7 dev_notice +EXPORT_SYMBOL vmlinux 0x6447a8a4 phy_disconnect +EXPORT_SYMBOL vmlinux 0x646cc6ab pmu_poll +EXPORT_SYMBOL vmlinux 0x64947ec2 bdevname +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64bbc288 string_unescape +EXPORT_SYMBOL vmlinux 0x64c0e302 sock_create_kern +EXPORT_SYMBOL vmlinux 0x64d3ed40 bdi_unregister +EXPORT_SYMBOL vmlinux 0x64da9659 blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0x64de5951 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x64df689a scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x650194ed seq_open +EXPORT_SYMBOL vmlinux 0x650da052 blk_mq_init_commands +EXPORT_SYMBOL vmlinux 0x650fee53 security_file_permission +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x651f67f0 pcim_pin_device +EXPORT_SYMBOL vmlinux 0x6521f47c i2c_bit_add_numbered_bus +EXPORT_SYMBOL vmlinux 0x65252514 eth_validate_addr +EXPORT_SYMBOL vmlinux 0x652ce9aa nla_memcmp +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x65516d2d unregister_qdisc +EXPORT_SYMBOL vmlinux 0x655fdaad nf_getsockopt +EXPORT_SYMBOL vmlinux 0x659503cd md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x65bb58a2 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x65c9e2ee sk_net_capable +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65de57fb ip_cmsg_recv +EXPORT_SYMBOL vmlinux 0x65de6249 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x65e05130 register_console +EXPORT_SYMBOL vmlinux 0x65e0d6d7 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x65e1e269 dm_unregister_target +EXPORT_SYMBOL vmlinux 0x65e5f983 phy_device_register +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x660dca81 netpoll_rx_enable +EXPORT_SYMBOL vmlinux 0x6613a561 dev_printk_emit +EXPORT_SYMBOL vmlinux 0x6634a76b kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x663c9edf sys_fillrect +EXPORT_SYMBOL vmlinux 0x66528da0 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x6667ab21 drop_nlink +EXPORT_SYMBOL vmlinux 0x666ac957 __blk_end_request +EXPORT_SYMBOL vmlinux 0x666fca8a inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x66760b0e __skb_get_hash +EXPORT_SYMBOL vmlinux 0x668da8d5 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x668f65fc scsi_cmd_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x66ad1cb3 _lv1_set_lpm_general_control +EXPORT_SYMBOL vmlinux 0x66bbe8bf pci_scan_slot +EXPORT_SYMBOL vmlinux 0x66cbf14b pmac_xpram_write +EXPORT_SYMBOL vmlinux 0x66fa898a sock_edemux +EXPORT_SYMBOL vmlinux 0x670f910e pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0x67179d27 dev_addr_add +EXPORT_SYMBOL vmlinux 0x6723b84a tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x67407bcf put_disk +EXPORT_SYMBOL vmlinux 0x675b8f61 param_get_string +EXPORT_SYMBOL vmlinux 0x67aadcf9 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL vmlinux 0x67d88e9b tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x67f492f8 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x67fe3ba2 phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0x6808968f pci_disable_obff +EXPORT_SYMBOL vmlinux 0x680b8219 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0x6826dc5b ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x683eeefe tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x6843128d of_device_register +EXPORT_SYMBOL vmlinux 0x6849a15f flex_array_clear +EXPORT_SYMBOL vmlinux 0x685668e3 setup_new_exec +EXPORT_SYMBOL vmlinux 0x68609857 complete_and_exit +EXPORT_SYMBOL vmlinux 0x686a93b1 bio_put +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x68ada8ca compat_ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68b927ca tty_lock_pair +EXPORT_SYMBOL vmlinux 0x68bb55bc tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x68c7c2db xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x68cd11e7 blk_mq_free_queue +EXPORT_SYMBOL vmlinux 0x68da2e2a pci_choose_state +EXPORT_SYMBOL vmlinux 0x68e05d57 getrawmonotonic +EXPORT_SYMBOL vmlinux 0x68e1ef51 smu_present +EXPORT_SYMBOL vmlinux 0x68e5799b blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x691334e9 dev_add_offload +EXPORT_SYMBOL vmlinux 0x692ba46a blk_bio_map_sg +EXPORT_SYMBOL vmlinux 0x6949ea48 pci_enable_ltr +EXPORT_SYMBOL vmlinux 0x695cd348 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x6968072c tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x696d675f __nla_put +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x6978ec0a genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x697eb738 d_alloc +EXPORT_SYMBOL vmlinux 0x699ccbf8 _lv1_deconfigure_virtual_uart_irq +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69d38ed9 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x69dcd51b eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0x69e27c7a bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x69e9d2e0 dcb_getapp +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a385d40 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x6a3f4119 mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a5fa363 sigprocmask +EXPORT_SYMBOL vmlinux 0x6a61f874 to_tm +EXPORT_SYMBOL vmlinux 0x6a740c54 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a7c76a7 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x6aa29636 blk_free_tags +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6ad2e49b ip_getsockopt +EXPORT_SYMBOL vmlinux 0x6ae9ec41 new_inode +EXPORT_SYMBOL vmlinux 0x6af41220 inet6_release +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b185a2a blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b32a18c fb_get_mode +EXPORT_SYMBOL vmlinux 0x6b358cab _lv1_read_repository_node +EXPORT_SYMBOL vmlinux 0x6b387694 _lv1_end_of_interrupt_ext +EXPORT_SYMBOL vmlinux 0x6b4b077d 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 0x6b6f0c4b _lv1_create_repository_node +EXPORT_SYMBOL vmlinux 0x6b7bd3fa dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x6b7f1917 idr_find_slowpath +EXPORT_SYMBOL vmlinux 0x6b8ad1fa inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x6b99b883 simple_empty +EXPORT_SYMBOL vmlinux 0x6ba8c961 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x6bae6e10 d_obtain_alias +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bceaebc gen_replace_estimator +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6beb2078 param_set_copystring +EXPORT_SYMBOL vmlinux 0x6bf2ed0b xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x6bf4530d phy_register_fixup +EXPORT_SYMBOL vmlinux 0x6c12dc52 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x6c13b548 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x6c265791 __find_get_block +EXPORT_SYMBOL vmlinux 0x6c357d3a napi_gro_frags +EXPORT_SYMBOL vmlinux 0x6c3e9d0b ip_options_compile +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c57cae9 bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c665691 flex_array_shrink +EXPORT_SYMBOL vmlinux 0x6c68edb1 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c8c0035 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x6cbb5028 rfkill_alloc +EXPORT_SYMBOL vmlinux 0x6cbd12f8 simple_rename +EXPORT_SYMBOL vmlinux 0x6cbd5907 of_get_min_tck +EXPORT_SYMBOL vmlinux 0x6cd675b3 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x6cd8c86b __crc32c_le_combine +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d1743eb _lv1_get_total_execution_time +EXPORT_SYMBOL vmlinux 0x6d27ef64 __bitmap_empty +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d2a4697 netlink_set_err +EXPORT_SYMBOL vmlinux 0x6d2c1a25 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x6d3282b1 netdev_state_change +EXPORT_SYMBOL vmlinux 0x6d38efbd sk_mc_loop +EXPORT_SYMBOL vmlinux 0x6d7a51fe seq_vprintf +EXPORT_SYMBOL vmlinux 0x6da928f4 _insw_ns +EXPORT_SYMBOL vmlinux 0x6dc5394a __neigh_event_send +EXPORT_SYMBOL vmlinux 0x6dd332d4 free_task +EXPORT_SYMBOL vmlinux 0x6dd41354 dma_common_mmap +EXPORT_SYMBOL vmlinux 0x6dd90a6f dev_get_by_flags_rcu +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6e03c251 pci_clear_master +EXPORT_SYMBOL vmlinux 0x6e0fef74 sock_no_connect +EXPORT_SYMBOL vmlinux 0x6e4306c0 i2c_verify_client +EXPORT_SYMBOL vmlinux 0x6e6b69ad pci_release_region +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e764332 idr_destroy +EXPORT_SYMBOL vmlinux 0x6e7bdef6 request_firmware +EXPORT_SYMBOL vmlinux 0x6e84ff9a arp_invalidate +EXPORT_SYMBOL vmlinux 0x6e85425b bdi_register +EXPORT_SYMBOL vmlinux 0x6ea04587 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x6ebc5149 param_ops_long +EXPORT_SYMBOL vmlinux 0x6eee6425 __page_cache_alloc +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f24ea59 pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x6f2bfb7e do_splice_from +EXPORT_SYMBOL vmlinux 0x6f384721 ppc_md +EXPORT_SYMBOL vmlinux 0x6f673903 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x6f85b211 ida_remove +EXPORT_SYMBOL vmlinux 0x6f9b3c26 wireless_spy_update +EXPORT_SYMBOL vmlinux 0x6fa331ed _lv1_construct_io_irq_outlet +EXPORT_SYMBOL vmlinux 0x6fa97260 pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x6fb8091c bdi_destroy +EXPORT_SYMBOL vmlinux 0x6fb9241b dm_put_device +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fd040ec generic_segment_checks +EXPORT_SYMBOL vmlinux 0x6ffa2480 remap_pfn_range +EXPORT_SYMBOL vmlinux 0x701699b2 _lv1_set_spe_privilege_state_area_1_register +EXPORT_SYMBOL vmlinux 0x70378d6f generic_file_buffered_write +EXPORT_SYMBOL vmlinux 0x70420a83 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x704597db tcp_poll +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x7058ec43 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x70b47957 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x70bc17d7 inode_wait +EXPORT_SYMBOL vmlinux 0x70c1811c agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0x70c23767 mmc_gpio_free_ro +EXPORT_SYMBOL vmlinux 0x70d053fd try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0x70d9a275 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x70f86c70 pmu_queue_request +EXPORT_SYMBOL vmlinux 0x7119636e module_layout +EXPORT_SYMBOL vmlinux 0x711bc8e5 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x711d44a3 pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x7126ca8c vfs_mknod +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x712d394f blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x7140814c tty_port_put +EXPORT_SYMBOL vmlinux 0x7157d082 do_splice_to +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x718ec385 tty_unregister_device +EXPORT_SYMBOL vmlinux 0x7195bfcb agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0x719e7152 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71bdcb84 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x71e2b8b3 security_inode_permission +EXPORT_SYMBOL vmlinux 0x72094e64 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x720cb26f phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x721cdc6f skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x7255ccc3 read_cache_pages +EXPORT_SYMBOL vmlinux 0x725f4d07 get_user_pages +EXPORT_SYMBOL vmlinux 0x72732fce mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x72948ffa filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x729b4a83 _lv1_get_spe_all_interrupt_statuses +EXPORT_SYMBOL vmlinux 0x72a5ae0e padata_start +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72c476d4 ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x72c98139 __arch_hweight64 +EXPORT_SYMBOL vmlinux 0x72ea1ae6 devm_ioremap +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72f177c7 mnt_pin +EXPORT_SYMBOL vmlinux 0x73023bcf dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x730d0560 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x731a747a pci_io_base +EXPORT_SYMBOL vmlinux 0x73288183 sk_filter +EXPORT_SYMBOL vmlinux 0x73387c90 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x7338a3f4 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x733df7c3 vm_event_states +EXPORT_SYMBOL vmlinux 0x735d8503 add_wait_queue +EXPORT_SYMBOL vmlinux 0x73710a3e dqstats +EXPORT_SYMBOL vmlinux 0x737de5e9 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x73864d6a vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x73917955 input_register_device +EXPORT_SYMBOL vmlinux 0x7397d47c pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x73cf70de md_done_sync +EXPORT_SYMBOL vmlinux 0x744ebcf3 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x7469fcfe radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x7483cc19 qdisc_list_del +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x74951df9 scsi_prep_return +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74dc9a45 __neigh_create +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74fe8730 sys_ctrler +EXPORT_SYMBOL vmlinux 0x751c2917 __wait_on_bit +EXPORT_SYMBOL vmlinux 0x7529fbb8 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x7532588a alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x75381ecd bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x754dac78 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x75561c01 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x756c786e _lv1_connect_interrupt_event_receive_port +EXPORT_SYMBOL vmlinux 0x75754995 _lv1_storage_check_async_status +EXPORT_SYMBOL vmlinux 0x758c357c invalidate_bdev +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 0x75e4f5aa pasemi_read_mac_reg +EXPORT_SYMBOL vmlinux 0x75fc1b67 elv_rb_find +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x761e666a kernel_sendpage +EXPORT_SYMBOL vmlinux 0x76239705 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764925cf thaw_super +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x764c96a7 framebuffer_release +EXPORT_SYMBOL vmlinux 0x764e2224 _lv1_disconnect_irq_plug_ext +EXPORT_SYMBOL vmlinux 0x764f167d phy_connect +EXPORT_SYMBOL vmlinux 0x765ff474 crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x76930248 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x76932855 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x769bcf70 vm_map_ram +EXPORT_SYMBOL vmlinux 0x76bf47f1 inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0x76bf656d __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76ea3685 __f_setown +EXPORT_SYMBOL vmlinux 0x770f78f3 vio_unregister_driver +EXPORT_SYMBOL vmlinux 0x77144936 _lv1_disconnect_irq_plug +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x773fa409 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x7776bb55 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x778bedae blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77a30f84 max8925_reg_write +EXPORT_SYMBOL vmlinux 0x77abea74 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x77ad775f serio_open +EXPORT_SYMBOL vmlinux 0x77ae22de poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x77b61d70 sget +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77df0847 __set_personality +EXPORT_SYMBOL vmlinux 0x77ecac9f zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x78294a75 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x7830b04f hvc_put_chars +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x7846af3e __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x7877b086 ndo_dflt_bridge_getlink +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x78977e19 pci_bus_type +EXPORT_SYMBOL vmlinux 0x789a17f7 _lv1_destruct_logical_spe +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78a42d57 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x78a80967 sock_create +EXPORT_SYMBOL vmlinux 0x78a9e905 _numa_mem_ +EXPORT_SYMBOL vmlinux 0x78dc6e82 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL vmlinux 0x790df6ca __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x790efaf7 tcp_splice_read +EXPORT_SYMBOL vmlinux 0x791c5204 unregister_filesystem +EXPORT_SYMBOL vmlinux 0x7930d225 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0x79356756 dev_add_pack +EXPORT_SYMBOL vmlinux 0x793616a1 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x795bbbc8 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x79725ad7 inet6_bind +EXPORT_SYMBOL vmlinux 0x797c8fa9 cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x7984eefc key_update +EXPORT_SYMBOL vmlinux 0x79a8d294 open_exec +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79b7ab05 pci_find_capability +EXPORT_SYMBOL vmlinux 0x79ded783 sk_wait_data +EXPORT_SYMBOL vmlinux 0x79eac778 dquot_drop +EXPORT_SYMBOL vmlinux 0x7a052821 dev_activate +EXPORT_SYMBOL vmlinux 0x7a05a118 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x7a188791 prandom_bytes +EXPORT_SYMBOL vmlinux 0x7a21cf29 fb_validate_mode +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a41f9ad of_scan_pci_bridge +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a465d41 file_ns_capable +EXPORT_SYMBOL vmlinux 0x7a544867 dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x7a6fad76 sock_wfree +EXPORT_SYMBOL vmlinux 0x7a7766d4 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x7a918bbf dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x7a925833 cpufreq_get_global_kobject +EXPORT_SYMBOL vmlinux 0x7a97867e generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7aa9e259 _lv1_map_htab +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ab92fc6 sock_no_accept +EXPORT_SYMBOL vmlinux 0x7ac0c027 brioctl_set +EXPORT_SYMBOL vmlinux 0x7acbc9b9 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7ad51d37 names_cachep +EXPORT_SYMBOL vmlinux 0x7ad5cc3b inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7ae92cbb kernel_getpeername +EXPORT_SYMBOL vmlinux 0x7b16235f hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x7b2aef6c __krealloc +EXPORT_SYMBOL vmlinux 0x7b6133de security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x7b66fac6 mutex_trylock +EXPORT_SYMBOL vmlinux 0x7ba19c40 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0x7bb756cc neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x7be52121 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x7c003aef _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c27156c rtas_online_cpus_mask +EXPORT_SYMBOL vmlinux 0x7c28fbd6 scsi_release_buffers +EXPORT_SYMBOL vmlinux 0x7c2d098f krealloc +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c5d1ca4 blk_recount_segments +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c6d7fed register_sysctl +EXPORT_SYMBOL vmlinux 0x7c7596c1 net_dma_find_channel +EXPORT_SYMBOL vmlinux 0x7c832147 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0x7c9291d1 csum_partial_copy_generic +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cbf2686 from_kgid_munged +EXPORT_SYMBOL vmlinux 0x7cc428df __blk_run_queue +EXPORT_SYMBOL vmlinux 0x7cc578da param_get_long +EXPORT_SYMBOL vmlinux 0x7ccbcf3f md_check_recovery +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7ce49427 proc_symlink +EXPORT_SYMBOL vmlinux 0x7cf3a16b put_cmsg +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d1f48b2 tcp_read_sock +EXPORT_SYMBOL vmlinux 0x7d26f424 scsi_add_device +EXPORT_SYMBOL vmlinux 0x7d47c8e2 PDE_DATA +EXPORT_SYMBOL vmlinux 0x7d570b32 touch_buffer +EXPORT_SYMBOL vmlinux 0x7d8337fb generic_write_checks +EXPORT_SYMBOL vmlinux 0x7d88420f phy_attach_direct +EXPORT_SYMBOL vmlinux 0x7da304cf pci_dev_driver +EXPORT_SYMBOL vmlinux 0x7dc0e109 idr_get_next +EXPORT_SYMBOL vmlinux 0x7dc97879 rtas_get_error_log_max +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7df0672a __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x7e08a874 input_get_keycode +EXPORT_SYMBOL vmlinux 0x7e220349 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x7e367247 mmc_can_trim +EXPORT_SYMBOL vmlinux 0x7e394c4e sysctl_local_reserved_ports +EXPORT_SYMBOL vmlinux 0x7e49f281 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0x7e583275 __page_symlink +EXPORT_SYMBOL vmlinux 0x7e6776d6 revert_creds +EXPORT_SYMBOL vmlinux 0x7e68a7e1 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x7e6f7169 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x7e87227e slhc_compress +EXPORT_SYMBOL vmlinux 0x7e8a6230 skb_copy_bits +EXPORT_SYMBOL vmlinux 0x7eba3665 lro_flush_pkt +EXPORT_SYMBOL vmlinux 0x7ebf206f sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x7ec14346 macio_request_resources +EXPORT_SYMBOL vmlinux 0x7ecfcd36 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x7ed26f0d inet_frags_init +EXPORT_SYMBOL vmlinux 0x7eecb6f6 fddi_type_trans +EXPORT_SYMBOL vmlinux 0x7ef331c8 ipmi_smi_watcher_unregister +EXPORT_SYMBOL vmlinux 0x7ef43c6f serio_reconnect +EXPORT_SYMBOL vmlinux 0x7efcf3f7 audit_log_start +EXPORT_SYMBOL vmlinux 0x7f0857ea dev_uc_sync +EXPORT_SYMBOL vmlinux 0x7f19dfc9 kdb_current_task +EXPORT_SYMBOL vmlinux 0x7f21e0a1 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x7f220b4b udp_del_offload +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f3b7917 blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x7f511676 skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0x7f60da93 of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0x7f61831a mdiobus_scan +EXPORT_SYMBOL vmlinux 0x7f91a68c vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x7f95acec scsi_remove_device +EXPORT_SYMBOL vmlinux 0x7fb2a179 vfs_read +EXPORT_SYMBOL vmlinux 0x7fcabc3a get_super_thawed +EXPORT_SYMBOL vmlinux 0x7fdf86c9 xfrm4_rcv_encap +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 0x8008df94 of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0x802c1bbf __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x802d0e93 crc32_le +EXPORT_SYMBOL vmlinux 0x804b17cc aio_complete +EXPORT_SYMBOL vmlinux 0x804f922a ipmi_addr_length +EXPORT_SYMBOL vmlinux 0x80a5e5d0 dentry_open +EXPORT_SYMBOL vmlinux 0x80a73adf compat_nf_setsockopt +EXPORT_SYMBOL vmlinux 0x80a84367 __sk_dst_check +EXPORT_SYMBOL vmlinux 0x80ab7f27 seq_path +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80d9eb15 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x80ed2f8b eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x811242ec netpoll_setup +EXPORT_SYMBOL vmlinux 0x81198e5e sg_miter_next +EXPORT_SYMBOL vmlinux 0x81465c26 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x81483b61 inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x8152b2aa of_node_put +EXPORT_SYMBOL vmlinux 0x81533963 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x8156f53c mb_cache_create +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x816a7115 kmem_cache_create +EXPORT_SYMBOL vmlinux 0x817ad696 generic_permission +EXPORT_SYMBOL vmlinux 0x819dc0ae __ip_dev_find +EXPORT_SYMBOL vmlinux 0x81a07f4e _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x81c0a84f rtas_set_indicator +EXPORT_SYMBOL vmlinux 0x81d9f7f2 _lv1_put_iopte +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81f8f214 file_open_root +EXPORT_SYMBOL vmlinux 0x820148f7 page_put_link +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x821b8b10 read_cache_page +EXPORT_SYMBOL vmlinux 0x8238c300 agp_enable +EXPORT_SYMBOL vmlinux 0x8243fa88 build_skb +EXPORT_SYMBOL vmlinux 0x8247e498 unregister_md_personality +EXPORT_SYMBOL vmlinux 0x824f5d4f skb_queue_purge +EXPORT_SYMBOL vmlinux 0x8251bcc3 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x8260686f bitmap_find_next_zero_area +EXPORT_SYMBOL vmlinux 0x826b2fda sock_no_bind +EXPORT_SYMBOL vmlinux 0x826d566e ll_rw_block +EXPORT_SYMBOL vmlinux 0x827bdc95 unlock_page +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82d53c4d xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x82e5a238 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x82fb1d2a load_nls_default +EXPORT_SYMBOL vmlinux 0x82fe61f4 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x8301ef78 of_phy_connect +EXPORT_SYMBOL vmlinux 0x83104006 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x833d5674 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x835f9d42 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0x8378055d dget_parent +EXPORT_SYMBOL vmlinux 0x837895b8 dm_get_mapinfo +EXPORT_SYMBOL vmlinux 0x83a476ce bitmap_scnlistprintf +EXPORT_SYMBOL vmlinux 0x83bbbb85 keyring_clear +EXPORT_SYMBOL vmlinux 0x8409e5b8 of_dev_put +EXPORT_SYMBOL vmlinux 0x841962f8 param_get_ushort +EXPORT_SYMBOL vmlinux 0x84270d82 commit_creds +EXPORT_SYMBOL vmlinux 0x84441816 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x84453b5a fb_blank +EXPORT_SYMBOL vmlinux 0x845124e0 ps3_mm_phys_to_lpar +EXPORT_SYMBOL vmlinux 0x8458d026 swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0x846b3e66 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x847dc562 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0x848e9166 vfs_readlink +EXPORT_SYMBOL vmlinux 0x849fe807 csum_and_copy_from_user +EXPORT_SYMBOL vmlinux 0x84b9562a mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x84bd69bf dq_data_lock +EXPORT_SYMBOL vmlinux 0x84c1c23e kernel_read +EXPORT_SYMBOL vmlinux 0x84c9b1c7 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x8506c80c ether_setup +EXPORT_SYMBOL vmlinux 0x8509c540 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0x850e44eb path_put +EXPORT_SYMBOL vmlinux 0x8510a528 inode_init_owner +EXPORT_SYMBOL vmlinux 0x8518eca9 param_get_short +EXPORT_SYMBOL vmlinux 0x8524318c proto_register +EXPORT_SYMBOL vmlinux 0x853bf7c1 param_set_int +EXPORT_SYMBOL vmlinux 0x855808c6 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x855863a6 dst_discard +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x857e8b03 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x8586e362 tcp_make_synack +EXPORT_SYMBOL vmlinux 0x8597eb47 plpar_hcall +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85e0736f pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0x86241a77 sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0x863ef0c7 unregister_netdev +EXPORT_SYMBOL vmlinux 0x8645b4bc security_path_truncate +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x865736a8 of_find_device_by_node +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x86654590 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x867d4c24 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x86c08e38 compat_sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x86d03812 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x86d6dbaa blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x86db1cbb rtas_flash_term_hook +EXPORT_SYMBOL vmlinux 0x86dc6109 vlan_vid_add +EXPORT_SYMBOL vmlinux 0x86e6b36d ppp_channel_index +EXPORT_SYMBOL vmlinux 0x86efa913 mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x870bf928 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x871bb72b call_netdevice_notifiers_info +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x872d4b6f phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x873a53ea __arch_hweight8 +EXPORT_SYMBOL vmlinux 0x8754aa55 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x875c51c2 bio_integrity_split +EXPORT_SYMBOL vmlinux 0x87628737 scsi_print_command +EXPORT_SYMBOL vmlinux 0x8779a34f param_ops_byte +EXPORT_SYMBOL vmlinux 0x877c2681 tty_register_driver +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x878c25f4 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x87a05694 dev_set_drvdata +EXPORT_SYMBOL vmlinux 0x87b0eec5 compat_mc_getsockopt +EXPORT_SYMBOL vmlinux 0x87e89ab2 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x880da1b1 _lv1_get_logical_partition_id +EXPORT_SYMBOL vmlinux 0x881039d0 zlib_inflate +EXPORT_SYMBOL vmlinux 0x88286f39 generic_read_dir +EXPORT_SYMBOL vmlinux 0x882db37f neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x8834396c mod_timer +EXPORT_SYMBOL vmlinux 0x88513970 param_set_byte +EXPORT_SYMBOL vmlinux 0x886ccdcf input_set_keycode +EXPORT_SYMBOL vmlinux 0x88ad1c10 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x88c4f99a read_cache_page_async +EXPORT_SYMBOL vmlinux 0x88c96e29 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x88dbc5ac inet_listen +EXPORT_SYMBOL vmlinux 0x88e43d22 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x88edc89f input_open_device +EXPORT_SYMBOL vmlinux 0x89014283 unregister_binfmt +EXPORT_SYMBOL vmlinux 0x8914fc10 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x891fbb10 mempool_destroy +EXPORT_SYMBOL vmlinux 0x891fd62a agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0x8946ad1e crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x895108f3 proc_dostring +EXPORT_SYMBOL vmlinux 0x89549ca3 tcp_close +EXPORT_SYMBOL vmlinux 0x8954c58b inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x895577b0 numa_cpu_lookup_table +EXPORT_SYMBOL vmlinux 0x896babab nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x897473df mktime +EXPORT_SYMBOL vmlinux 0x897684ac clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x89797060 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x897f061d downgrade_write +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89c5a8be smu_get_sdb_partition +EXPORT_SYMBOL vmlinux 0x89c9c6d8 cad_pid +EXPORT_SYMBOL vmlinux 0x89d2d653 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89d9e3e7 scsi_ioctl +EXPORT_SYMBOL vmlinux 0x89f24702 vio_disable_interrupts +EXPORT_SYMBOL vmlinux 0x89f72edf dquot_disable +EXPORT_SYMBOL vmlinux 0x8a08f0cd mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x8a11de0c sg_miter_start +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a2a2ff2 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x8a2a973b __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x8a2fb922 kobject_init +EXPORT_SYMBOL vmlinux 0x8a40bc06 __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x8a480f66 unregister_key_type +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a4f483d sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a690d03 simple_readpage +EXPORT_SYMBOL vmlinux 0x8a6af65c kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a876f54 ida_init +EXPORT_SYMBOL vmlinux 0x8a9373b6 swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8a9cef2a _lv1_allocate_device_dma_region +EXPORT_SYMBOL vmlinux 0x8ae4c3c1 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0x8b03ff48 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0x8b1a28b4 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x8b1a7a66 pcie_aspm_enabled +EXPORT_SYMBOL vmlinux 0x8b230551 compat_nf_getsockopt +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b3c3ffb inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x8b3fb305 inet_frag_find +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b46c992 iterate_dir +EXPORT_SYMBOL vmlinux 0x8b48e1e2 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x8b55cac7 kobject_put +EXPORT_SYMBOL vmlinux 0x8b5e07e4 sock_no_listen +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b7a6ac4 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x8b9eba6e bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x8bdb52b8 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x8bedbaf7 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x8bf2ae1f fsl_lbc_addr +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c3e25c9 inet_sendpage +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c74083f pci_enable_msi_block +EXPORT_SYMBOL vmlinux 0x8c7ebd20 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x8c8579b7 tty_port_destroy +EXPORT_SYMBOL vmlinux 0x8c8d79c0 _lv1_gpu_context_iomap +EXPORT_SYMBOL vmlinux 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL vmlinux 0x8cab56e5 dev_driver_string +EXPORT_SYMBOL vmlinux 0x8cc789fd generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8cd59c91 elv_rb_del +EXPORT_SYMBOL vmlinux 0x8cddfbc2 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x8d015dd4 __bswapdi2 +EXPORT_SYMBOL vmlinux 0x8d08ed87 blk_put_queue +EXPORT_SYMBOL vmlinux 0x8d2cf0d8 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x8d2e268b param_ops_ulong +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d6ef5b7 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d944cbb copy_in_user +EXPORT_SYMBOL vmlinux 0x8d9efe6c pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0x8d9fbb60 __kfree_skb +EXPORT_SYMBOL vmlinux 0x8da7e200 check_disk_size_change +EXPORT_SYMBOL vmlinux 0x8dd73edb agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0x8de0b5ac mempool_create +EXPORT_SYMBOL vmlinux 0x8de2fbc5 _lv1_get_virtual_uart_param +EXPORT_SYMBOL vmlinux 0x8de62a20 mem_cgroup_subsys +EXPORT_SYMBOL vmlinux 0x8df4cf03 md_write_end +EXPORT_SYMBOL vmlinux 0x8df92f66 memchr_inv +EXPORT_SYMBOL vmlinux 0x8e0bac59 kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0x8e332829 flush_delayed_work +EXPORT_SYMBOL vmlinux 0x8e477cb6 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x8e864a86 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x8ea99367 inet6_getname +EXPORT_SYMBOL vmlinux 0x8eb7489b xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x8ec04552 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x8ec57e68 pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0x8ec77dbb blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0x8ed0cdbd srp_rport_put +EXPORT_SYMBOL vmlinux 0x8eea1bc9 smu_poll +EXPORT_SYMBOL vmlinux 0x8efdf8b4 clear_bdi_congested +EXPORT_SYMBOL vmlinux 0x8f08d6d7 block_read_full_page +EXPORT_SYMBOL vmlinux 0x8f0c0223 scsi_allocate_command +EXPORT_SYMBOL vmlinux 0x8f15c529 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x8f468af4 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x8f494c68 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x8f5443bb bio_copy_user +EXPORT_SYMBOL vmlinux 0x8f548c4e ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x8f794df9 netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0x8f85f835 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x8faa4598 of_translate_address +EXPORT_SYMBOL vmlinux 0x8fac6657 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x8fc8fb39 of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0x90002ea8 find_or_create_page +EXPORT_SYMBOL vmlinux 0x9018e9a2 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x9043df18 tcf_hash_search +EXPORT_SYMBOL vmlinux 0x9048309b tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0x9056fbc1 submit_bio +EXPORT_SYMBOL vmlinux 0x90616dd6 bio_phys_segments +EXPORT_SYMBOL vmlinux 0x9065a955 loop_register_transfer +EXPORT_SYMBOL vmlinux 0x90828e8b tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x908b53ed param_set_short +EXPORT_SYMBOL vmlinux 0x908bb5ad blk_stop_queue +EXPORT_SYMBOL vmlinux 0x908ff607 __serio_register_port +EXPORT_SYMBOL vmlinux 0x90be9fcb sockfd_lookup +EXPORT_SYMBOL vmlinux 0x90e146c2 trace_seq_putc +EXPORT_SYMBOL vmlinux 0x910661eb unregister_nls +EXPORT_SYMBOL vmlinux 0x91195d06 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x91201cef _lv1_enable_logical_spe +EXPORT_SYMBOL vmlinux 0x912557ce rtas_busy_delay +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x914d5bf6 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x9156cf41 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x915e1208 tb_ticks_per_usec +EXPORT_SYMBOL vmlinux 0x9166fada strncpy +EXPORT_SYMBOL vmlinux 0x9168c033 rtas_get_sensor +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x917222fd vio_enable_interrupts +EXPORT_SYMBOL vmlinux 0x9183f1d1 macio_unregister_driver +EXPORT_SYMBOL vmlinux 0x919d1163 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x91ac822f vscnprintf +EXPORT_SYMBOL vmlinux 0x91ae6b51 generic_file_mmap +EXPORT_SYMBOL vmlinux 0x91c4feca _lv1_unmap_htab +EXPORT_SYMBOL vmlinux 0x91d97858 padata_do_parallel +EXPORT_SYMBOL vmlinux 0x91dad7e2 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0x91f0137e fput +EXPORT_SYMBOL vmlinux 0x91fa51be inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x92157122 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x924504d9 netdev_err +EXPORT_SYMBOL vmlinux 0x924e4d92 dquot_alloc +EXPORT_SYMBOL vmlinux 0x925520d2 blk_start_plug +EXPORT_SYMBOL vmlinux 0x9258d89f blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0x92732448 sys_copyarea +EXPORT_SYMBOL vmlinux 0x92808ce6 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x92846923 pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0x9291cd3b memdup_user +EXPORT_SYMBOL vmlinux 0x929d833b neigh_lookup +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92b6d627 neigh_for_each +EXPORT_SYMBOL vmlinux 0x92bc220b lockref_get +EXPORT_SYMBOL vmlinux 0x92d050df iov_pages +EXPORT_SYMBOL vmlinux 0x92fe5f34 key_unlink +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x93116177 __frontswap_load +EXPORT_SYMBOL vmlinux 0x9312a16d ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0x9316b391 mmc_put_card +EXPORT_SYMBOL vmlinux 0x93182e8a blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x9330d592 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x934038a4 adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x93507f1c _lv1_gpu_memory_allocate +EXPORT_SYMBOL vmlinux 0x936ebe9e macio_request_resource +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x9396fa4f scsi_target_resume +EXPORT_SYMBOL vmlinux 0x93a6e0b2 io_schedule +EXPORT_SYMBOL vmlinux 0x93a92fdb console_start +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93c8f8bd inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x93f48b6f ipmi_register_smi +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x9405c724 d_lookup +EXPORT_SYMBOL vmlinux 0x94131feb pci_restore_state +EXPORT_SYMBOL vmlinux 0x941df55f security_inode_init_security +EXPORT_SYMBOL vmlinux 0x9424de1e create_empty_buffers +EXPORT_SYMBOL vmlinux 0x943c6289 bio_integrity_tag_size +EXPORT_SYMBOL vmlinux 0x943dc80f csum_and_copy_to_user +EXPORT_SYMBOL vmlinux 0x944491d7 set_groups +EXPORT_SYMBOL vmlinux 0x94561ebe pci_write_vpd +EXPORT_SYMBOL vmlinux 0x947d5796 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x948a02d0 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x949b4d57 netdev_crit +EXPORT_SYMBOL vmlinux 0x949dc1e7 tcf_hash_check +EXPORT_SYMBOL vmlinux 0x94d83df2 d_alloc_name +EXPORT_SYMBOL vmlinux 0x94ecc4d4 xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x950376ce kern_path +EXPORT_SYMBOL vmlinux 0x9508f166 param_ops_bint +EXPORT_SYMBOL vmlinux 0x950e35c7 phy_device_create +EXPORT_SYMBOL vmlinux 0x950eec04 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x9514151a _mcount +EXPORT_SYMBOL vmlinux 0x95159e4e scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x9524b0ae _outsb +EXPORT_SYMBOL vmlinux 0x9543af5d call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x95455c2a mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x954f8207 ppp_input +EXPORT_SYMBOL vmlinux 0x959f8633 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x95b20311 generic_removexattr +EXPORT_SYMBOL vmlinux 0x95b4b783 block_write_full_page_endio +EXPORT_SYMBOL vmlinux 0x95cb929c of_find_all_nodes +EXPORT_SYMBOL vmlinux 0x95cc046e phy_connect_direct +EXPORT_SYMBOL vmlinux 0x9641c61e input_unregister_handler +EXPORT_SYMBOL vmlinux 0x964b87e6 rtnl_notify +EXPORT_SYMBOL vmlinux 0x967004c2 iterate_mounts +EXPORT_SYMBOL vmlinux 0x9670a52b ata_link_printk +EXPORT_SYMBOL vmlinux 0x967ad5ec dev_remove_pack +EXPORT_SYMBOL vmlinux 0x967e858b dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x969bde9a md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0x96a12987 release_sock +EXPORT_SYMBOL vmlinux 0x96a4db18 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x96a606bc jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x96a62c29 unlock_rename +EXPORT_SYMBOL vmlinux 0x96b29254 strncasecmp +EXPORT_SYMBOL vmlinux 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96ec1a5a bio_integrity_set_tag +EXPORT_SYMBOL vmlinux 0x96ed2811 security_d_instantiate +EXPORT_SYMBOL vmlinux 0x96f3f8fd bio_split +EXPORT_SYMBOL vmlinux 0x970153c1 write_inode_now +EXPORT_SYMBOL vmlinux 0x970954f3 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x97131e31 notify_change +EXPORT_SYMBOL vmlinux 0x973df826 init_task +EXPORT_SYMBOL vmlinux 0x9748927f _outsw_ns +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x9758d924 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x976e014f _lv1_map_device_mmio_region +EXPORT_SYMBOL vmlinux 0x976e2607 con_is_bound +EXPORT_SYMBOL vmlinux 0x97868aef __kfifo_alloc +EXPORT_SYMBOL vmlinux 0x9796499b abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a60e3d param_get_bool +EXPORT_SYMBOL vmlinux 0x97bcd8fe get_phy_device +EXPORT_SYMBOL vmlinux 0x97f03d6f vio_cmo_entitlement_update +EXPORT_SYMBOL vmlinux 0x97f8cda2 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x9800542b sk_free +EXPORT_SYMBOL vmlinux 0x981661a0 __idr_get_new_above +EXPORT_SYMBOL vmlinux 0x98177648 _lv1_set_lpm_interval +EXPORT_SYMBOL vmlinux 0x981cb4be skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x9829fc11 __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0x9835b33e md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x984aadad phy_start_aneg +EXPORT_SYMBOL vmlinux 0x98591691 end_page_writeback +EXPORT_SYMBOL vmlinux 0x985f1e8d nonseekable_open +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x98735c26 revalidate_disk +EXPORT_SYMBOL vmlinux 0x987c0735 netif_rx_ni +EXPORT_SYMBOL vmlinux 0x987ebbba neigh_table_init +EXPORT_SYMBOL vmlinux 0x987fc124 neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x988a4f24 pci_get_slot +EXPORT_SYMBOL vmlinux 0x98aced0b try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x98b97907 pci_request_region +EXPORT_SYMBOL vmlinux 0x98c5441f sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x98cef407 qdisc_reset +EXPORT_SYMBOL vmlinux 0x98cf60b3 strlen +EXPORT_SYMBOL vmlinux 0x98d2d874 seq_putc +EXPORT_SYMBOL vmlinux 0x98d931c4 neigh_update +EXPORT_SYMBOL vmlinux 0x98db0cda i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x98f73117 vfs_readv +EXPORT_SYMBOL vmlinux 0x98fa21b0 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x9913952b zero_fill_bio +EXPORT_SYMBOL vmlinux 0x99195078 vsnprintf +EXPORT_SYMBOL vmlinux 0x99486046 d_drop +EXPORT_SYMBOL vmlinux 0x994e8d07 __module_get +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x9978f9d8 pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x9988e8fe generic_block_bmap +EXPORT_SYMBOL vmlinux 0x998b1e61 mpage_writepages +EXPORT_SYMBOL vmlinux 0x99911e8f filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99afe916 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x99bcc2c2 tcp_prequeue +EXPORT_SYMBOL vmlinux 0x99c03fad input_reset_device +EXPORT_SYMBOL vmlinux 0x99c24cfe _lv1_free_device_dma_region +EXPORT_SYMBOL vmlinux 0x99cbbbbc xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99d3a43c dm_table_get_size +EXPORT_SYMBOL vmlinux 0x99daa14a __sb_end_write +EXPORT_SYMBOL vmlinux 0x99ec4761 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x9a11161f fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x9a126b0f kill_anon_super +EXPORT_SYMBOL vmlinux 0x9a138461 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0x9a1ba7b6 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1f7e72 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a1ffb92 _lv1_clear_spe_interrupt_status +EXPORT_SYMBOL vmlinux 0x9a507c09 max8925_set_bits +EXPORT_SYMBOL vmlinux 0x9a5ffc64 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x9a626734 ftrace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x9a6c2531 pasemi_dma_init +EXPORT_SYMBOL vmlinux 0x9a7b74fb devfreq_resume_device +EXPORT_SYMBOL vmlinux 0x9a81b0ce sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x9a8ae9cc locks_free_lock +EXPORT_SYMBOL vmlinux 0x9a97be71 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x9aafe60f netif_receive_skb +EXPORT_SYMBOL vmlinux 0x9ab30eac xfrm_input +EXPORT_SYMBOL vmlinux 0x9acb92a9 mmc_request_done +EXPORT_SYMBOL vmlinux 0x9adef2d6 pmac_register_agp_pm +EXPORT_SYMBOL vmlinux 0x9aeb40cd neigh_seq_next +EXPORT_SYMBOL vmlinux 0x9af89f98 memcpy_fromiovec +EXPORT_SYMBOL vmlinux 0x9afa1ce2 alloc_disk +EXPORT_SYMBOL vmlinux 0x9b11d1e7 ps2_end_command +EXPORT_SYMBOL vmlinux 0x9b1f194c tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b40d669 xfrm_init_state +EXPORT_SYMBOL vmlinux 0x9b5c90e8 neigh_ifdown +EXPORT_SYMBOL vmlinux 0x9b760917 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x9b8d7b5c xfrm_register_type +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba46a94 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bb660ce dev_get_nest_level +EXPORT_SYMBOL vmlinux 0x9bc62139 blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0x9bd9e01c ps2_init +EXPORT_SYMBOL vmlinux 0x9be670a6 pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9bebd00a devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x9c0591d5 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x9c23d541 mmc_cache_ctrl +EXPORT_SYMBOL vmlinux 0x9c242d3b clocksource_unregister +EXPORT_SYMBOL vmlinux 0x9c309fb9 serio_rescan +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c56efc7 try_to_release_page +EXPORT_SYMBOL vmlinux 0x9c586605 dcache_dir_open +EXPORT_SYMBOL vmlinux 0x9c6aa2b2 pci_enable_obff +EXPORT_SYMBOL vmlinux 0x9c79bd43 vlan_vid_del +EXPORT_SYMBOL vmlinux 0x9c84998e __vio_register_driver +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cc9d638 skb_pull +EXPORT_SYMBOL vmlinux 0x9ccce7ae fsl_lbc_ctrl_dev +EXPORT_SYMBOL vmlinux 0x9cdb0754 pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x9cdf8cce dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x9cea5e0d generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x9cef3cc5 __idr_remove_all +EXPORT_SYMBOL vmlinux 0x9cf2db07 d_prune_aliases +EXPORT_SYMBOL vmlinux 0x9cfd56c5 scsi_print_status +EXPORT_SYMBOL vmlinux 0x9d002de1 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x9d00341b agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0x9d04d7a7 rtas +EXPORT_SYMBOL vmlinux 0x9d05f6c4 ktime_get_clocktai +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d14983a ppc_enable_pmcs +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d58349a of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0x9d64d9d1 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x9d74a855 skb_checksum_help +EXPORT_SYMBOL vmlinux 0x9d7ce8dd _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x9d9a8358 truncate_pagecache +EXPORT_SYMBOL vmlinux 0x9d9dfc18 load_fp_state +EXPORT_SYMBOL vmlinux 0x9d9e4268 skb_copy_datagram_from_iovec +EXPORT_SYMBOL vmlinux 0x9dad2aa8 pci_set_power_state +EXPORT_SYMBOL vmlinux 0x9db2cca2 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x9dca940c remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e113f62 kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0x9e19b851 posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x9e26b8f7 scsi_init_io +EXPORT_SYMBOL vmlinux 0x9e2a986b iterate_supers_type +EXPORT_SYMBOL vmlinux 0x9e2f8c90 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e44b9b7 of_get_next_available_child +EXPORT_SYMBOL vmlinux 0x9e4d9eec pci_scan_bus_parented +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e555f3e insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x9e5ee8f6 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e7b09f0 pci_get_class +EXPORT_SYMBOL vmlinux 0x9e829a22 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x9e82b424 simple_transaction_set +EXPORT_SYMBOL vmlinux 0x9e8df4b8 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x9e97375d rtas_busy_delay_time +EXPORT_SYMBOL vmlinux 0x9e9ac878 key_reject_and_link +EXPORT_SYMBOL vmlinux 0x9e9bf2ac tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x9e9f1714 __bitmap_andnot +EXPORT_SYMBOL vmlinux 0x9ea0ad49 __sg_free_table +EXPORT_SYMBOL vmlinux 0x9ea86140 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x9eac3273 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ec06a14 devm_gpio_free +EXPORT_SYMBOL vmlinux 0x9ed2eec7 param_set_ushort +EXPORT_SYMBOL vmlinux 0x9ee78669 _lv1_write_virtual_uart +EXPORT_SYMBOL vmlinux 0x9f113a61 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x9f200e18 genphy_suspend +EXPORT_SYMBOL vmlinux 0x9f22cbea audit_log +EXPORT_SYMBOL vmlinux 0x9f2bdaac __bitmap_or +EXPORT_SYMBOL vmlinux 0x9f2df833 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x9f35f0de dquot_commit +EXPORT_SYMBOL vmlinux 0x9f3eca8e tcp_gso_segment +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f89aed1 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9f9cb787 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x9faa5533 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x9fc076a8 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x9fc8072b kill_fasync +EXPORT_SYMBOL vmlinux 0x9fdbb20b netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0x9ffc2108 inode_change_ok +EXPORT_SYMBOL vmlinux 0xa00a50a6 insert_inode_locked +EXPORT_SYMBOL vmlinux 0xa016276b inet_put_port +EXPORT_SYMBOL vmlinux 0xa0181874 scsi_register_interface +EXPORT_SYMBOL vmlinux 0xa0260f18 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa05c9b46 get_io_context +EXPORT_SYMBOL vmlinux 0xa05d0261 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0xa079bda4 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xa07a37f0 memchr +EXPORT_SYMBOL vmlinux 0xa07b4af1 abort_creds +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa098be3f pci_assign_resource +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0be9fb9 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0xa0ceef51 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0e05f5c devm_free_irq +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0f1752a bd_set_size +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 0xa1281b5e max8998_read_reg +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa15887bd unlock_buffer +EXPORT_SYMBOL vmlinux 0xa15e8987 mmc_fixup_device +EXPORT_SYMBOL vmlinux 0xa177e4e2 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0xa1910363 seq_open_private +EXPORT_SYMBOL vmlinux 0xa1a8a097 save_mount_options +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1c99385 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xa1ef3358 inet6_del_offload +EXPORT_SYMBOL vmlinux 0xa1f8fe75 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xa2026975 kobject_set_name +EXPORT_SYMBOL vmlinux 0xa202a8e5 kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0xa205358a tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0xa20ce1b8 net_msg_warn +EXPORT_SYMBOL vmlinux 0xa2127cdc pasemi_dma_alloc_flag +EXPORT_SYMBOL vmlinux 0xa224d316 phy_find_first +EXPORT_SYMBOL vmlinux 0xa22f363a nf_unregister_hook +EXPORT_SYMBOL vmlinux 0xa23e7cc2 icmpv6_send +EXPORT_SYMBOL vmlinux 0xa2465322 _lv1_get_version_info +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa28a2ace ipmi_set_gets_events +EXPORT_SYMBOL vmlinux 0xa28c67ef xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL vmlinux 0xa2bbed37 crash_shutdown_register +EXPORT_SYMBOL vmlinux 0xa2ef34d7 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0xa2f6c56a netdev_alert +EXPORT_SYMBOL vmlinux 0xa2fe1e87 tty_port_hangup +EXPORT_SYMBOL vmlinux 0xa303d1ff dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0xa3089e28 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0xa3146bd7 mount_pseudo +EXPORT_SYMBOL vmlinux 0xa317ff54 d_validate +EXPORT_SYMBOL vmlinux 0xa31e617c nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0xa332464a of_get_cpu_node +EXPORT_SYMBOL vmlinux 0xa34ec01b truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0xa35de80f ipv4_config +EXPORT_SYMBOL vmlinux 0xa378d11f devm_gpio_request +EXPORT_SYMBOL vmlinux 0xa39b4cf2 udelay +EXPORT_SYMBOL vmlinux 0xa3abc422 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xa3abfeb9 dma_iommu_ops +EXPORT_SYMBOL vmlinux 0xa3b3f4b6 noop_llseek +EXPORT_SYMBOL vmlinux 0xa3fc3d50 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0xa400159f crc32_be +EXPORT_SYMBOL vmlinux 0xa40c9c88 mmc_gpio_free_cd +EXPORT_SYMBOL vmlinux 0xa4511467 crc16 +EXPORT_SYMBOL vmlinux 0xa45a0146 sync_blockdev +EXPORT_SYMBOL vmlinux 0xa460f9a2 __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0xa46f36c8 sk_release_kernel +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa480c04b _lv1_gpu_context_attribute +EXPORT_SYMBOL vmlinux 0xa488900a __frontswap_store +EXPORT_SYMBOL vmlinux 0xa4a94d26 find_next_bit_le +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4c3f8c0 set_blocksize +EXPORT_SYMBOL vmlinux 0xa4c56890 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4fdc761 skb_copy_datagram_const_iovec +EXPORT_SYMBOL vmlinux 0xa50092e2 skb_pad +EXPORT_SYMBOL vmlinux 0xa500fe2d bdi_register_dev +EXPORT_SYMBOL vmlinux 0xa505e868 pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0xa5182ac4 tty_unthrottle +EXPORT_SYMBOL vmlinux 0xa52dc61d truncate_setsize +EXPORT_SYMBOL vmlinux 0xa54452d9 inode_dio_wait +EXPORT_SYMBOL vmlinux 0xa54824c2 i2c_use_client +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa55c6830 register_sysctl_table +EXPORT_SYMBOL vmlinux 0xa55d8443 vm_insert_page +EXPORT_SYMBOL vmlinux 0xa58121dd alloc_fcdev +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5a3bf7e scsi_block_requests +EXPORT_SYMBOL vmlinux 0xa5ae3cbc pci_vpd_truncate +EXPORT_SYMBOL vmlinux 0xa5bd5431 sk_reset_timer +EXPORT_SYMBOL vmlinux 0xa5be0c84 pci_iomap +EXPORT_SYMBOL vmlinux 0xa5c4c624 ip_setsockopt +EXPORT_SYMBOL vmlinux 0xa5d73218 ihold +EXPORT_SYMBOL vmlinux 0xa5f7703e dev_change_carrier +EXPORT_SYMBOL vmlinux 0xa5fffc9f flock_lock_file_wait +EXPORT_SYMBOL vmlinux 0xa606e5b9 igrab +EXPORT_SYMBOL vmlinux 0xa6087b94 skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0xa63620b5 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0xa637c2f2 address_space_init_once +EXPORT_SYMBOL vmlinux 0xa63a2f9b param_get_ulong +EXPORT_SYMBOL vmlinux 0xa65972b8 _memcpy_toio +EXPORT_SYMBOL vmlinux 0xa65c25e7 sock_wake_async +EXPORT_SYMBOL vmlinux 0xa6715115 do_settimeofday +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa686a60d dev_mc_sync +EXPORT_SYMBOL vmlinux 0xa6b03926 default_file_splice_read +EXPORT_SYMBOL vmlinux 0xa6ce472f cpu_rmap_update +EXPORT_SYMBOL vmlinux 0xa6d84e8e simple_getattr +EXPORT_SYMBOL vmlinux 0xa6dbe47b jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0xa6ec959b blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0xa720678c lg_global_lock +EXPORT_SYMBOL vmlinux 0xa724eed5 mutex_unlock +EXPORT_SYMBOL vmlinux 0xa72a0f5b nr_online_nodes +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa73fc98f of_n_addr_cells +EXPORT_SYMBOL vmlinux 0xa74d44ab dquot_quota_on +EXPORT_SYMBOL vmlinux 0xa75af603 load_nls +EXPORT_SYMBOL vmlinux 0xa78d9eb7 slhc_uncompress +EXPORT_SYMBOL vmlinux 0xa7e19359 follow_down_one +EXPORT_SYMBOL vmlinux 0xa7f1aa7c xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0xa80219b6 kobject_add +EXPORT_SYMBOL vmlinux 0xa80c312d mount_bdev +EXPORT_SYMBOL vmlinux 0xa81cc3c5 seq_read +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa845c290 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0xa871f828 __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa8865e26 kmem_cache_free +EXPORT_SYMBOL vmlinux 0xa8a6f639 __check_region +EXPORT_SYMBOL vmlinux 0xa8ced546 _lv1_net_set_interrupt_status_indicator +EXPORT_SYMBOL vmlinux 0xa8d67add mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0xa8dd0aa0 dev_alloc_name +EXPORT_SYMBOL vmlinux 0xa8fa8be3 arp_find +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa914d9da scsi_remove_target +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa916b694 strnlen +EXPORT_SYMBOL vmlinux 0xa91c77b6 _lv1_end_of_interrupt +EXPORT_SYMBOL vmlinux 0xa91cde8f rtnl_configure_link +EXPORT_SYMBOL vmlinux 0xa9232d15 __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0xa9273e1a epapr_hypercall_start +EXPORT_SYMBOL vmlinux 0xa92a1c6a __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0xa93634ee macio_release_resources +EXPORT_SYMBOL vmlinux 0xa93ba88e proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0xa95ee082 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0xa974a122 pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0xa981fa2d iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0xa9b63345 of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0xa9c48ecf blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0xa9d4c11a set_binfmt +EXPORT_SYMBOL vmlinux 0xa9d78474 vga_get +EXPORT_SYMBOL vmlinux 0xaa0073b7 __net_get_random_once +EXPORT_SYMBOL vmlinux 0xaa0edca8 pasemi_dma_alloc_fun +EXPORT_SYMBOL vmlinux 0xaa1845ac kmalloc_caches +EXPORT_SYMBOL vmlinux 0xaa31f08d sk_stop_timer +EXPORT_SYMBOL vmlinux 0xaa46e87e lg_local_unlock +EXPORT_SYMBOL vmlinux 0xaa6e4df5 _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa841ae0 tty_port_init +EXPORT_SYMBOL vmlinux 0xaa9087c0 param_ops_string +EXPORT_SYMBOL vmlinux 0xaaa09707 dev_deactivate +EXPORT_SYMBOL vmlinux 0xaaa831f8 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0xaaadd9a1 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0xaab7e2c3 node_data +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaadc13ad freeze_bdev +EXPORT_SYMBOL vmlinux 0xaaf33ea4 tty_throttle +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab16f554 inet_select_addr +EXPORT_SYMBOL vmlinux 0xab28245e xfrm_find_acq +EXPORT_SYMBOL vmlinux 0xab34ea89 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xab4754c2 phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0xab66f611 _lv1_set_lpm_trigger_control +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab7033d1 netif_carrier_off +EXPORT_SYMBOL vmlinux 0xab763997 dquot_free_inode +EXPORT_SYMBOL vmlinux 0xab767de7 single_open_size +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xabacc7f4 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xabc6dd63 cpufreq_sysfs_create_file +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabcd613a softnet_data +EXPORT_SYMBOL vmlinux 0xabcf216c generic_make_request +EXPORT_SYMBOL vmlinux 0xabd0c91c rtc_time_to_tm +EXPORT_SYMBOL vmlinux 0xabed90ff unlock_new_inode +EXPORT_SYMBOL vmlinux 0xabf4c232 d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0xac025253 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0xac0b0555 tty_hangup +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac26b820 _raw_write_lock +EXPORT_SYMBOL vmlinux 0xac478aa7 soft_cursor +EXPORT_SYMBOL vmlinux 0xac4c6a46 bio_endio +EXPORT_SYMBOL vmlinux 0xac55ae6e pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0xac6004f1 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0xac6d0014 blk_mq_alloc_reserved_request +EXPORT_SYMBOL vmlinux 0xac768d6e blk_get_queue +EXPORT_SYMBOL vmlinux 0xac87f9df tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0xac8835f1 mpage_writepage +EXPORT_SYMBOL vmlinux 0xaca0a20f __elv_add_request +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacc27f3e security_path_rmdir +EXPORT_SYMBOL vmlinux 0xacc5b5d2 csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd14ab8 _lv1_construct_logical_spe +EXPORT_SYMBOL vmlinux 0xacdfce20 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0xace8ae67 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0xacf3e225 user_revoke +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xacfcf6b1 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0xacfcf9ba pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0xad0163da set_anon_super +EXPORT_SYMBOL vmlinux 0xad01744f kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad0a6e0a flex_array_prealloc +EXPORT_SYMBOL vmlinux 0xad164875 kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xad46dec2 of_count_phandle_with_args +EXPORT_SYMBOL vmlinux 0xad50cebb i8253_lock +EXPORT_SYMBOL vmlinux 0xad549b19 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0xad59ec37 of_platform_device_create +EXPORT_SYMBOL vmlinux 0xad794fae nla_put_nohdr +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad9e745a i2c_release_client +EXPORT_SYMBOL vmlinux 0xadb9c749 unregister_shrinker +EXPORT_SYMBOL vmlinux 0xadd2748c skb_insert +EXPORT_SYMBOL vmlinux 0xaddfbbdf blk_mq_run_queues +EXPORT_SYMBOL vmlinux 0xadeffe25 _lv1_gpu_context_intr +EXPORT_SYMBOL vmlinux 0xae02ec3c devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0xae1e4246 iunique +EXPORT_SYMBOL vmlinux 0xae2d1594 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0xae3ea06d rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0xae545f06 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xaeb0b69c da903x_query_status +EXPORT_SYMBOL vmlinux 0xaec83717 bio_map_user +EXPORT_SYMBOL vmlinux 0xaedbbdd8 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0xaee40e61 register_key_type +EXPORT_SYMBOL vmlinux 0xaf00a63c __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0xaf05b91b of_device_is_available +EXPORT_SYMBOL vmlinux 0xaf063510 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xaf237712 input_inject_event +EXPORT_SYMBOL vmlinux 0xaf2d872c prepare_to_wait +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf5816b3 twl6040_power +EXPORT_SYMBOL vmlinux 0xaf64ad0d zlib_deflate +EXPORT_SYMBOL vmlinux 0xaf6ae696 kstrndup +EXPORT_SYMBOL vmlinux 0xaf91d89f __kernel_param_lock +EXPORT_SYMBOL vmlinux 0xafad493b param_ops_ushort +EXPORT_SYMBOL vmlinux 0xafb3aaea pci_enable_device_io +EXPORT_SYMBOL vmlinux 0xafc4e596 blk_make_request +EXPORT_SYMBOL vmlinux 0xafc6f039 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0xafcafded elv_add_request +EXPORT_SYMBOL vmlinux 0xafcbc856 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xafd68c33 flex_array_free +EXPORT_SYMBOL vmlinux 0xaffae567 free_buffer_head +EXPORT_SYMBOL vmlinux 0xafff3d1d mempool_alloc +EXPORT_SYMBOL vmlinux 0xb010fb81 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0xb013d3cc update_region +EXPORT_SYMBOL vmlinux 0xb03fbf05 fget_raw +EXPORT_SYMBOL vmlinux 0xb0455aa2 blkdev_put +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb081e435 pci_disable_device +EXPORT_SYMBOL vmlinux 0xb0b847ac __bitmap_full +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0ed6b7b scsi_finish_command +EXPORT_SYMBOL vmlinux 0xb0ffda2f blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xb11a45b3 __locks_copy_lock +EXPORT_SYMBOL vmlinux 0xb1291f08 dev_addr_del_multiple +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb13634cb poll_initwait +EXPORT_SYMBOL vmlinux 0xb13c15e4 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0xb147a855 dql_reset +EXPORT_SYMBOL vmlinux 0xb15bd8fa tb_ticks_per_sec +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb165ef45 __irq_regs +EXPORT_SYMBOL vmlinux 0xb1670f6b kthread_stop +EXPORT_SYMBOL vmlinux 0xb19760c3 bitmap_onto +EXPORT_SYMBOL vmlinux 0xb1b3ac43 ppp_unit_number +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 0xb1db9e4e param_get_invbool +EXPORT_SYMBOL vmlinux 0xb1f027ff cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0xb1f46398 flush_old_exec +EXPORT_SYMBOL vmlinux 0xb20ea528 seq_escape +EXPORT_SYMBOL vmlinux 0xb2169438 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0xb2233744 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xb227cb87 dquot_enable +EXPORT_SYMBOL vmlinux 0xb254b6a2 vio_register_device_node +EXPORT_SYMBOL vmlinux 0xb25f5ea7 padata_do_serial +EXPORT_SYMBOL vmlinux 0xb2646412 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb27c3328 skb_store_bits +EXPORT_SYMBOL vmlinux 0xb287c14c jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0xb2a3e537 generic_write_end +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2d1e682 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0xb2dde5a0 gen10g_config_advert +EXPORT_SYMBOL vmlinux 0xb2ed3da2 netdev_has_any_upper_dev +EXPORT_SYMBOL vmlinux 0xb304acff ida_get_new_above +EXPORT_SYMBOL vmlinux 0xb32f7da1 seq_write +EXPORT_SYMBOL vmlinux 0xb341bebe lro_flush_all +EXPORT_SYMBOL vmlinux 0xb34591e5 agp_backend_release +EXPORT_SYMBOL vmlinux 0xb36eef6c phy_stop +EXPORT_SYMBOL vmlinux 0xb37c6abc inet_shutdown +EXPORT_SYMBOL vmlinux 0xb38239ab uart_get_divisor +EXPORT_SYMBOL vmlinux 0xb3883bdf inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0xb39b0bc2 register_nls +EXPORT_SYMBOL vmlinux 0xb3a2f7b6 devfreq_interval_update +EXPORT_SYMBOL vmlinux 0xb3add808 netpoll_print_options +EXPORT_SYMBOL vmlinux 0xb3bf73df cpu_active_mask +EXPORT_SYMBOL vmlinux 0xb3c0850b tcf_register_action +EXPORT_SYMBOL vmlinux 0xb3c960d2 fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0xb3ca1ac2 padata_alloc +EXPORT_SYMBOL vmlinux 0xb3cf9cab call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0xb3f244d9 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb3fc63a8 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xb4067b6c ipmi_smi_watcher_register +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb42978cd pci_bus_get +EXPORT_SYMBOL vmlinux 0xb42c5620 input_register_handle +EXPORT_SYMBOL vmlinux 0xb4387e1e udp_ioctl +EXPORT_SYMBOL vmlinux 0xb43a68f7 inode_set_bytes +EXPORT_SYMBOL vmlinux 0xb45a6445 agp_free_page_array +EXPORT_SYMBOL vmlinux 0xb46b6bea read_code +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb47189b5 reservation_ww_class +EXPORT_SYMBOL vmlinux 0xb484497f cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0xb49b448f __dquot_transfer +EXPORT_SYMBOL vmlinux 0xb4aa0c30 have_submounts +EXPORT_SYMBOL vmlinux 0xb4b1ff1e key_payload_reserve +EXPORT_SYMBOL vmlinux 0xb4ecb56d i2c_bit_algo +EXPORT_SYMBOL vmlinux 0xb50c3ef0 __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xb53c4468 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0xb5426e95 agp_unbind_memory +EXPORT_SYMBOL vmlinux 0xb54533f7 usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xb56bfd9e smu_spinwait_cmd +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb5787b3d cdrom_check_events +EXPORT_SYMBOL vmlinux 0xb57f2457 sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0xb5817bbf __insert_inode_hash +EXPORT_SYMBOL vmlinux 0xb58852da dev_mc_flush +EXPORT_SYMBOL vmlinux 0xb588d91d __devm_release_region +EXPORT_SYMBOL vmlinux 0xb58b4a10 blk_put_request +EXPORT_SYMBOL vmlinux 0xb5979942 seq_bitmap_list +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5c11de1 do_splice_direct +EXPORT_SYMBOL vmlinux 0xb5c964fb elevator_change +EXPORT_SYMBOL vmlinux 0xb5cf2ec0 netdev_notify_peers +EXPORT_SYMBOL vmlinux 0xb5e10f9c security_path_mknod +EXPORT_SYMBOL vmlinux 0xb5e341df xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0xb614fee5 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb6391d69 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0xb6394d4b param_set_bint +EXPORT_SYMBOL vmlinux 0xb639a513 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0xb649e9a6 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0xb64db654 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0xb66826ff con_copy_unimap +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb6822a33 radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xb68706c2 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0xb68bfa9d node_states +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6b46a7c param_ops_int +EXPORT_SYMBOL vmlinux 0xb6c5a973 scsi_show_result +EXPORT_SYMBOL vmlinux 0xb6c834b4 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0xb6deee63 __sb_start_write +EXPORT_SYMBOL vmlinux 0xb6ef05fa cdev_add +EXPORT_SYMBOL vmlinux 0xb701da32 posix_test_lock +EXPORT_SYMBOL vmlinux 0xb71388ac sock_rfree +EXPORT_SYMBOL vmlinux 0xb72a0547 security_path_unlink +EXPORT_SYMBOL vmlinux 0xb72f5ca1 of_phy_attach +EXPORT_SYMBOL vmlinux 0xb73803fe inet6_ioctl +EXPORT_SYMBOL vmlinux 0xb74a6a96 xfrm_state_add +EXPORT_SYMBOL vmlinux 0xb74eb41b tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xb757524b remove_proc_entry +EXPORT_SYMBOL vmlinux 0xb759fef8 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb775f496 srp_start_tl_fail_timers +EXPORT_SYMBOL vmlinux 0xb785a7b2 dst_destroy +EXPORT_SYMBOL vmlinux 0xb78a7885 may_umount_tree +EXPORT_SYMBOL vmlinux 0xb7c6db70 sysctl_max_skb_frags +EXPORT_SYMBOL vmlinux 0xb7d87183 tcp_disconnect +EXPORT_SYMBOL vmlinux 0xb81832d8 misc_deregister +EXPORT_SYMBOL vmlinux 0xb82081a8 vmap +EXPORT_SYMBOL vmlinux 0xb8231d02 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0xb82398c8 pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0xb82a8358 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0xb831ff5d dev_printk +EXPORT_SYMBOL vmlinux 0xb835b3e4 radix_tree_prev_hole +EXPORT_SYMBOL vmlinux 0xb841d203 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0xb8523523 km_report +EXPORT_SYMBOL vmlinux 0xb855b745 tcp_prot +EXPORT_SYMBOL vmlinux 0xb85a184b bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0xb86123be _lv1_write_repository_node +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb881d1f4 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xb8a30c7e _lv1_add_lpm_event_bookmark +EXPORT_SYMBOL vmlinux 0xb8d73e97 param_set_uint +EXPORT_SYMBOL vmlinux 0xb8dcc6d5 genphy_read_status +EXPORT_SYMBOL vmlinux 0xb900ff58 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0xb928cf49 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0xb92c2573 ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0xb9392d08 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0xb93d79f1 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0xb9431f0a pmac_suspend_agp_for_card +EXPORT_SYMBOL vmlinux 0xb9477da2 mark_info_dirty +EXPORT_SYMBOL vmlinux 0xb94de614 devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0xb967f5da devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0xb98a0185 rtc_tm_to_time +EXPORT_SYMBOL vmlinux 0xb9b4e181 alloc_pages_exact_nid +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xba0507e0 xfrm_state_update +EXPORT_SYMBOL vmlinux 0xba122a2c smu_done_complete +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba6bd3cb phy_detach +EXPORT_SYMBOL vmlinux 0xba6f1a45 scsi_get_command +EXPORT_SYMBOL vmlinux 0xba76f6c8 macio_dev_put +EXPORT_SYMBOL vmlinux 0xbaa9709f fb_set_var +EXPORT_SYMBOL vmlinux 0xbaca313f I_BDEV +EXPORT_SYMBOL vmlinux 0xbae71174 request_key +EXPORT_SYMBOL vmlinux 0xbb0f3952 __bread +EXPORT_SYMBOL vmlinux 0xbb189cad disallow_signal +EXPORT_SYMBOL vmlinux 0xbb4f4766 simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb5e9e96 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0xbb644f7d arp_send +EXPORT_SYMBOL vmlinux 0xbb657393 wireless_send_event +EXPORT_SYMBOL vmlinux 0xbb713e6d sk_filter_release_rcu +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbb995030 __netif_schedule +EXPORT_SYMBOL vmlinux 0xbba08846 d_rehash +EXPORT_SYMBOL vmlinux 0xbbaeb559 memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0xbbb6b412 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xbbb73f9c inet_del_offload +EXPORT_SYMBOL vmlinux 0xbbb78f2f bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0xbbc844b1 find_lock_page +EXPORT_SYMBOL vmlinux 0xbbda5366 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0xbbe19c07 srp_reconnect_rport +EXPORT_SYMBOL vmlinux 0xbc0ff447 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0xbc153173 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0xbc316de4 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0xbc3f6afa down_read +EXPORT_SYMBOL vmlinux 0xbc4848e3 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0xbc4858ce rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0xbc54d77e splice_from_pipe_feed +EXPORT_SYMBOL vmlinux 0xbc5cb365 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xbc650164 __block_write_begin +EXPORT_SYMBOL vmlinux 0xbc6c56ab tcp_recvmsg +EXPORT_SYMBOL vmlinux 0xbc809301 blk_end_request_all +EXPORT_SYMBOL vmlinux 0xbc9f0b5c gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcc878ba security_path_symlink +EXPORT_SYMBOL vmlinux 0xbccdc2f6 flex_array_put +EXPORT_SYMBOL vmlinux 0xbcd074d9 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0xbcdedba7 of_get_mac_address +EXPORT_SYMBOL vmlinux 0xbcdee0ef dev_get_by_index +EXPORT_SYMBOL vmlinux 0xbcf150f9 xor_altivec_5 +EXPORT_SYMBOL vmlinux 0xbcfdfe77 dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0xbd462b55 __kfifo_init +EXPORT_SYMBOL vmlinux 0xbd59f99a jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0xbd785996 abx500_register_ops +EXPORT_SYMBOL vmlinux 0xbd803510 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xbd8cfa15 pasemi_write_mac_reg +EXPORT_SYMBOL vmlinux 0xbdb3ca92 __invalidate_device +EXPORT_SYMBOL vmlinux 0xbdbb0caf twl6040_reg_read +EXPORT_SYMBOL vmlinux 0xbdc452a3 pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0xbdd61f0d __secpath_destroy +EXPORT_SYMBOL vmlinux 0xbde5ace8 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0xbdf5e9da netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0xbe2c0274 add_timer +EXPORT_SYMBOL vmlinux 0xbe42cc86 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0xbe77aebe down_write_trylock +EXPORT_SYMBOL vmlinux 0xbe8eaee6 tcp_sync_mss +EXPORT_SYMBOL vmlinux 0xbeac8f23 d_move +EXPORT_SYMBOL vmlinux 0xbeb237fe jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0xbec25473 of_parse_phandle +EXPORT_SYMBOL vmlinux 0xbeefda96 inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbef723d9 tcp_syn_flood_action +EXPORT_SYMBOL vmlinux 0xbef8b8b6 cfb_fillrect +EXPORT_SYMBOL vmlinux 0xbf25c941 finish_no_open +EXPORT_SYMBOL vmlinux 0xbf2e8af9 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0xbf30ed56 invalidate_partition +EXPORT_SYMBOL vmlinux 0xbf312e3d blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0xbf31ccca blk_queue_bounce +EXPORT_SYMBOL vmlinux 0xbf45f9f1 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0xbf6911a0 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0xbf749e93 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0xbf7e1c9d scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf87153b seq_printf +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf943415 wait_iff_congested +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 0xbfdf50eb uart_match_port +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbff8182c plpar_hcall_norets +EXPORT_SYMBOL vmlinux 0xc013b361 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0xc01b11ff tcf_em_register +EXPORT_SYMBOL vmlinux 0xc025a5cb pci_set_mwi +EXPORT_SYMBOL vmlinux 0xc041b899 simple_rmdir +EXPORT_SYMBOL vmlinux 0xc061113a phy_init_eee +EXPORT_SYMBOL vmlinux 0xc0635cbf vfs_mkdir +EXPORT_SYMBOL vmlinux 0xc06c6ca1 mem_section +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0f203b4 netpoll_rx_disable +EXPORT_SYMBOL vmlinux 0xc0f281f1 macio_register_driver +EXPORT_SYMBOL vmlinux 0xc10e6f95 validate_sp +EXPORT_SYMBOL vmlinux 0xc110224d posix_unblock_lock +EXPORT_SYMBOL vmlinux 0xc11ff86e simple_dir_operations +EXPORT_SYMBOL vmlinux 0xc1348099 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0xc13511d7 cpumask_next_and +EXPORT_SYMBOL vmlinux 0xc1451689 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0xc14efe31 rtnl_create_link +EXPORT_SYMBOL vmlinux 0xc15a44c6 memzero_explicit +EXPORT_SYMBOL vmlinux 0xc18132db compat_sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xc1998ec2 fsnotify_get_group +EXPORT_SYMBOL vmlinux 0xc1c2dd09 __hw_addr_flush +EXPORT_SYMBOL vmlinux 0xc1c7b281 write_cache_pages +EXPORT_SYMBOL vmlinux 0xc1e054a0 noop_fsync +EXPORT_SYMBOL vmlinux 0xc202ce78 compat_tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xc20e8359 dm_get_device +EXPORT_SYMBOL vmlinux 0xc212f595 pid_task +EXPORT_SYMBOL vmlinux 0xc240e999 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc24271cb gen_pool_alloc +EXPORT_SYMBOL vmlinux 0xc2473a2f bio_integrity_endio +EXPORT_SYMBOL vmlinux 0xc256e762 __bitmap_equal +EXPORT_SYMBOL vmlinux 0xc25b8fd7 simple_transaction_read +EXPORT_SYMBOL vmlinux 0xc26056a5 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0xc270d1ae tty_name +EXPORT_SYMBOL vmlinux 0xc277d390 eth_mac_addr +EXPORT_SYMBOL vmlinux 0xc29bf967 strspn +EXPORT_SYMBOL vmlinux 0xc2a1ee04 unload_nls +EXPORT_SYMBOL vmlinux 0xc2a4eead __breadahead +EXPORT_SYMBOL vmlinux 0xc2dbce66 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0xc2e22b4f audit_log_task_info +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc2fb9ee1 _lv1_shutdown_logical_partition +EXPORT_SYMBOL vmlinux 0xc2fd2601 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0xc30e75d8 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0xc310b981 strnstr +EXPORT_SYMBOL vmlinux 0xc337ed7f phy_print_status +EXPORT_SYMBOL vmlinux 0xc358710a migrate_page +EXPORT_SYMBOL vmlinux 0xc36f2e34 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0xc36f4683 netif_carrier_on +EXPORT_SYMBOL vmlinux 0xc396d40c pci_find_next_bus +EXPORT_SYMBOL vmlinux 0xc39c3704 hvcs_free_partner_info +EXPORT_SYMBOL vmlinux 0xc3aa8a96 netlink_broadcast +EXPORT_SYMBOL vmlinux 0xc3aefef4 padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xc3e56ef7 mount_single +EXPORT_SYMBOL vmlinux 0xc3fb78ac macio_release_resource +EXPORT_SYMBOL vmlinux 0xc413b33d agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0xc4147bcc grab_cache_page_nowait +EXPORT_SYMBOL vmlinux 0xc41f1696 _lv1_configure_virtual_uart_irq +EXPORT_SYMBOL vmlinux 0xc4322da5 pcim_enable_device +EXPORT_SYMBOL vmlinux 0xc44063d4 pci_remove_bus +EXPORT_SYMBOL vmlinux 0xc449dd09 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0xc45755de find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0xc45d2ac8 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0xc47cdf9c _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0xc48307db lz4_decompress +EXPORT_SYMBOL vmlinux 0xc493c714 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc49bee3d dev_open +EXPORT_SYMBOL vmlinux 0xc4a41d77 block_write_full_page +EXPORT_SYMBOL vmlinux 0xc4b33328 skb_copy_and_csum_datagram_iovec +EXPORT_SYMBOL vmlinux 0xc4bdea31 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0xc4d1202e irq_to_desc +EXPORT_SYMBOL vmlinux 0xc4d40435 i2c_del_driver +EXPORT_SYMBOL vmlinux 0xc4d931a3 seq_bitmap +EXPORT_SYMBOL vmlinux 0xc4f6ec0d iget5_locked +EXPORT_SYMBOL vmlinux 0xc5089620 _lv1_stop_ppe_periodic_tracer +EXPORT_SYMBOL vmlinux 0xc5287f51 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0xc5328eb1 vfs_llseek +EXPORT_SYMBOL vmlinux 0xc5512bcd vfs_create +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc55c2a9d inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0xc55de23c percpu_counter_set +EXPORT_SYMBOL vmlinux 0xc5735931 devm_gpiod_put +EXPORT_SYMBOL vmlinux 0xc589e044 param_set_long +EXPORT_SYMBOL vmlinux 0xc5a8f36a key_type_keyring +EXPORT_SYMBOL vmlinux 0xc5d06da9 bdget +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5e98bd1 generic_ro_fops +EXPORT_SYMBOL vmlinux 0xc5f13360 dev_addr_del +EXPORT_SYMBOL vmlinux 0xc5f29e16 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc6093d37 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0xc61e6028 skb_copy +EXPORT_SYMBOL vmlinux 0xc62c3d81 skb_dequeue +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc650936f scsi_host_set_state +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc660d51e clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0xc663b075 __ioremap +EXPORT_SYMBOL vmlinux 0xc66583e8 tty_write_room +EXPORT_SYMBOL vmlinux 0xc665d6d7 of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0xc666a132 crc_t10dif +EXPORT_SYMBOL vmlinux 0xc66edeaf abx500_remove_ops +EXPORT_SYMBOL vmlinux 0xc67be848 alloc_pci_dev +EXPORT_SYMBOL vmlinux 0xc6922b2c inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0xc6a87f30 blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0xc6b22c71 __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xc6cb465a __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xc6cb7476 kill_bdev +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6d163d8 ilookup5 +EXPORT_SYMBOL vmlinux 0xc6e63001 bdev_read_only +EXPORT_SYMBOL vmlinux 0xc71ef243 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc736a33a blk_register_region +EXPORT_SYMBOL vmlinux 0xc74c783b dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0xc75015d3 install_exec_creds +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7a62cab lock_sock_nested +EXPORT_SYMBOL vmlinux 0xc7a8efea twl6040_get_pll +EXPORT_SYMBOL vmlinux 0xc7d5a5f2 do_sync_write +EXPORT_SYMBOL vmlinux 0xc7e446f2 vfs_fsync +EXPORT_SYMBOL vmlinux 0xc7e86dda lock_rename +EXPORT_SYMBOL vmlinux 0xc7e983c9 get_disk +EXPORT_SYMBOL vmlinux 0xc7f34a4e neigh_seq_start +EXPORT_SYMBOL vmlinux 0xc7fefb0f mmc_align_data_size +EXPORT_SYMBOL vmlinux 0xc80bff93 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc85aa577 wake_up_process +EXPORT_SYMBOL vmlinux 0xc8654e15 md_flush_request +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc8756b1f pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0xc881af20 pci_disable_ltr +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8c181b7 __quota_error +EXPORT_SYMBOL vmlinux 0xc8cc6d79 note_scsi_host +EXPORT_SYMBOL vmlinux 0xc8d84ec3 del_gendisk +EXPORT_SYMBOL vmlinux 0xc8ddb872 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0xc8e31d75 _lv1_configure_irq_state_bitmap +EXPORT_SYMBOL vmlinux 0xc8f6668d tcf_generic_walker +EXPORT_SYMBOL vmlinux 0xc91ff664 down_read_trylock +EXPORT_SYMBOL vmlinux 0xc923a043 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0xc92961b2 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0xc92b1f11 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0xc93fbc54 wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xc942e3db dev_get_flags +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc978479a xz_dec_run +EXPORT_SYMBOL vmlinux 0xc9865c03 gen10g_suspend +EXPORT_SYMBOL vmlinux 0xc996d097 del_timer +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9a7e3e7 blk_stack_limits +EXPORT_SYMBOL vmlinux 0xc9b5311f udp6_csum_init +EXPORT_SYMBOL vmlinux 0xc9c0f662 dev_get_by_name +EXPORT_SYMBOL vmlinux 0xc9d13b97 prepare_binprm +EXPORT_SYMBOL vmlinux 0xc9d9f955 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0xc9de9379 skb_seq_read +EXPORT_SYMBOL vmlinux 0xc9e5980f netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0xc9ea593e ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xc9fc598d pasemi_read_dma_reg +EXPORT_SYMBOL vmlinux 0xca06da28 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0xca11576f mmc_alloc_host +EXPORT_SYMBOL vmlinux 0xca1452be __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xca1d6394 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0xca23c89b dma_async_device_register +EXPORT_SYMBOL vmlinux 0xca39df12 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0xca3b28c6 store_vr_state +EXPORT_SYMBOL vmlinux 0xca5b6e85 md_integrity_register +EXPORT_SYMBOL vmlinux 0xca5ce941 proc_set_user +EXPORT_SYMBOL vmlinux 0xca5dbc50 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xca5e207b pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0xca825895 pmu_suspend +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xca93ff4d nf_setsockopt +EXPORT_SYMBOL vmlinux 0xcaabab3d __genl_register_family +EXPORT_SYMBOL vmlinux 0xcaabf3f9 pasemi_write_iob_reg +EXPORT_SYMBOL vmlinux 0xcaca0ab8 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0xcae3b4a9 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb0c5d50 param_get_uint +EXPORT_SYMBOL vmlinux 0xcb24a65c i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0xcb2fada0 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0xcb3060b8 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0xcb5b925a pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0xcb689b00 set_bdi_congested +EXPORT_SYMBOL vmlinux 0xcb6c332d scsi_is_target_device +EXPORT_SYMBOL vmlinux 0xcb80c304 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0xcb80e032 ipv4_specific +EXPORT_SYMBOL vmlinux 0xcba43ac5 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbe8b038 _lv1_configure_execution_time_variable +EXPORT_SYMBOL vmlinux 0xcbea228b nf_reinject +EXPORT_SYMBOL vmlinux 0xcbf8ada3 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0xcc0f4ca1 tc_classify +EXPORT_SYMBOL vmlinux 0xcc17504d _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xcc20dc0c inet_frags_fini +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc37f55c blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xcc451670 vga_put +EXPORT_SYMBOL vmlinux 0xcc4b84da of_find_node_by_type +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc594d64 skb_queue_tail +EXPORT_SYMBOL vmlinux 0xcc76abe2 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0xcc7fa952 local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0xcc89c246 pasemi_dma_alloc_chan +EXPORT_SYMBOL vmlinux 0xcc9c7ddc pskb_expand_head +EXPORT_SYMBOL vmlinux 0xccb13e27 alloc_file +EXPORT_SYMBOL vmlinux 0xccc1ce3f ps3_sb_event_receive_port_destroy +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccc45479 input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0xccecd3e6 vio_h_cop_sync +EXPORT_SYMBOL vmlinux 0xccf87f52 find_get_page +EXPORT_SYMBOL vmlinux 0xcd0529c7 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xcd07d852 unregister_exec_domain +EXPORT_SYMBOL vmlinux 0xcd20667a kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd4df58c set_create_files_as +EXPORT_SYMBOL vmlinux 0xcd500436 __alloc_skb +EXPORT_SYMBOL vmlinux 0xcd740d60 arp_create +EXPORT_SYMBOL vmlinux 0xcd769f62 _lv1_gpu_device_map +EXPORT_SYMBOL vmlinux 0xcd7caf19 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0xcd86c87f __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xcd927636 __dst_free +EXPORT_SYMBOL vmlinux 0xcda188f5 mmc_can_discard +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdde97a2 generic_delete_inode +EXPORT_SYMBOL vmlinux 0xcde172ac radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0xcdf0829f netlink_unicast +EXPORT_SYMBOL vmlinux 0xce07b4d4 file_remove_suid +EXPORT_SYMBOL vmlinux 0xce17418a scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0xce22713b ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce3b3f09 profile_pc +EXPORT_SYMBOL vmlinux 0xce409cda pmac_set_early_video_resume +EXPORT_SYMBOL vmlinux 0xce4a3a1b cdev_init +EXPORT_SYMBOL vmlinux 0xce4aa2a7 dev_uc_init +EXPORT_SYMBOL vmlinux 0xce4e47b6 __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce75039b blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0xcea075b6 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceb2dcd8 sg_miter_stop +EXPORT_SYMBOL vmlinux 0xced777cb proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0xceda51d7 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf13c0e7 __put_cred +EXPORT_SYMBOL vmlinux 0xcf14b7d7 bio_integrity_get_tag +EXPORT_SYMBOL vmlinux 0xcf1c6276 ip_fragment +EXPORT_SYMBOL vmlinux 0xcf2d3044 simple_transaction_get +EXPORT_SYMBOL vmlinux 0xcf3025cb inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0xcf456fd8 prepare_creds +EXPORT_SYMBOL vmlinux 0xcf59ec67 paca +EXPORT_SYMBOL vmlinux 0xcf9c2385 flush_dcache_icache_page +EXPORT_SYMBOL vmlinux 0xcfb7d5a0 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0xcfc28b5a devm_iounmap +EXPORT_SYMBOL vmlinux 0xcfcd28bd register_qdisc +EXPORT_SYMBOL vmlinux 0xcfce4bd7 follow_up +EXPORT_SYMBOL vmlinux 0xcfcf89bd scsi_device_set_state +EXPORT_SYMBOL vmlinux 0xd00ed4a1 get_gendisk +EXPORT_SYMBOL vmlinux 0xd0181f4f __bitmap_xor +EXPORT_SYMBOL vmlinux 0xd0364b5e phy_device_free +EXPORT_SYMBOL vmlinux 0xd05931ec _lv1_set_lpm_counter_control +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd0726957 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0xd09028be __blk_end_request_all +EXPORT_SYMBOL vmlinux 0xd0a02396 hvcs_free_connection +EXPORT_SYMBOL vmlinux 0xd0a22e64 free_netdev +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0bd34a8 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0xd0d42c42 mod_timer_pending +EXPORT_SYMBOL vmlinux 0xd0da609f set_bh_page +EXPORT_SYMBOL vmlinux 0xd0e259db gen10g_config_aneg +EXPORT_SYMBOL vmlinux 0xd0eaecea uart_resume_port +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0f79885 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd0fef3b2 agp_free_key +EXPORT_SYMBOL vmlinux 0xd10c3452 idr_init +EXPORT_SYMBOL vmlinux 0xd10c6156 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0xd11ad4df sock_create_lite +EXPORT_SYMBOL vmlinux 0xd11c0dc1 __kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xd1262886 rtas_data_buf +EXPORT_SYMBOL vmlinux 0xd142c3b0 register_quota_format +EXPORT_SYMBOL vmlinux 0xd14ea4c7 nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0xd1504df2 mmc_erase +EXPORT_SYMBOL vmlinux 0xd154b4ed neigh_changeaddr +EXPORT_SYMBOL vmlinux 0xd15fc5a6 tcp_proc_register +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd185b4f8 key_validate +EXPORT_SYMBOL vmlinux 0xd1a3e305 key_revoke +EXPORT_SYMBOL vmlinux 0xd1fd9d73 inode_get_bytes +EXPORT_SYMBOL vmlinux 0xd1fe8ebb _lv1_get_spe_interrupt_status +EXPORT_SYMBOL vmlinux 0xd203f22b nlmsg_notify +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd235b98f starget_for_each_device +EXPORT_SYMBOL vmlinux 0xd24221d5 touch_atime +EXPORT_SYMBOL vmlinux 0xd2454f0b of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0xd2491f5c uart_remove_one_port +EXPORT_SYMBOL vmlinux 0xd24a8010 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd2570d19 pipe_unlock +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd279286a devfreq_add_device +EXPORT_SYMBOL vmlinux 0xd27a8332 pagevec_lookup +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd281ddbf scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0xd28b4515 ps2_drain +EXPORT_SYMBOL vmlinux 0xd2929bfd tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0xd29a5459 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0xd2b09ce5 __kmalloc +EXPORT_SYMBOL vmlinux 0xd2b54881 dev_mc_add +EXPORT_SYMBOL vmlinux 0xd2cd5568 interruptible_sleep_on_timeout +EXPORT_SYMBOL vmlinux 0xd2ce19dd powerpc_debugfs_root +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2ef2638 smu_cmdbuf_abs +EXPORT_SYMBOL vmlinux 0xd2f05683 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0xd3053bca sock_i_ino +EXPORT_SYMBOL vmlinux 0xd319913c ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd33465ee __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0xd35add0b sock_no_sendpage +EXPORT_SYMBOL vmlinux 0xd35b3b6c filemap_flush +EXPORT_SYMBOL vmlinux 0xd35bbd49 cookie_check_timestamp +EXPORT_SYMBOL vmlinux 0xd36257ba memcpy_toiovecend +EXPORT_SYMBOL vmlinux 0xd378f821 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xd38f284b d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0xd3ca951f input_grab_device +EXPORT_SYMBOL vmlinux 0xd3d314d0 put_page +EXPORT_SYMBOL vmlinux 0xd3d5d04c dst_release +EXPORT_SYMBOL vmlinux 0xd4048fe2 dump_skip +EXPORT_SYMBOL vmlinux 0xd409383c pmu_request +EXPORT_SYMBOL vmlinux 0xd422b2e4 cdev_alloc +EXPORT_SYMBOL vmlinux 0xd42f6158 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0xd4415a9e __cleancache_get_page +EXPORT_SYMBOL vmlinux 0xd46cf363 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0xd477f112 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0xd482b7d2 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0xd48d15fe kfree_skb_partial +EXPORT_SYMBOL vmlinux 0xd48fdeef dql_completed +EXPORT_SYMBOL vmlinux 0xd4dec408 dev_warn +EXPORT_SYMBOL vmlinux 0xd4e78be8 blk_peek_request +EXPORT_SYMBOL vmlinux 0xd4f08503 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0xd4fdbd85 elv_abort_queue +EXPORT_SYMBOL vmlinux 0xd4fe247a tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0xd5014650 nla_put +EXPORT_SYMBOL vmlinux 0xd5202ce7 pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0xd52607e4 pci_disable_ido +EXPORT_SYMBOL vmlinux 0xd5525419 kill_litter_super +EXPORT_SYMBOL vmlinux 0xd5758f6d agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0xd57d89f3 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xd5846193 vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0xd5cbb8ad simple_fill_super +EXPORT_SYMBOL vmlinux 0xd5e1d719 _lv1_set_ppe_periodic_tracer_frequency +EXPORT_SYMBOL vmlinux 0xd5f1ca21 inode_dio_done +EXPORT_SYMBOL vmlinux 0xd5f2172f del_timer_sync +EXPORT_SYMBOL vmlinux 0xd602a50f dst_alloc +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd6193144 pci_map_rom +EXPORT_SYMBOL vmlinux 0xd61b6a71 sk_run_filter +EXPORT_SYMBOL vmlinux 0xd63b38d4 __sock_create +EXPORT_SYMBOL vmlinux 0xd63d7218 mach_pasemi +EXPORT_SYMBOL vmlinux 0xd6449bbe single_open +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd65b2104 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0xd667fe13 account_page_redirty +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd6a28273 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0xd6bd986b unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0xd6c99a7a md_wakeup_thread +EXPORT_SYMBOL vmlinux 0xd6cf93e6 backlight_force_update +EXPORT_SYMBOL vmlinux 0xd6d63e9d lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0xd6edf811 _lv1_release_memory +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6f459e5 fget +EXPORT_SYMBOL vmlinux 0xd6fd4053 __arch_hweight32 +EXPORT_SYMBOL vmlinux 0xd7136c5c request_key_async +EXPORT_SYMBOL vmlinux 0xd7171885 kobject_get +EXPORT_SYMBOL vmlinux 0xd71c0344 d_path +EXPORT_SYMBOL vmlinux 0xd724a2e6 i2c_register_driver +EXPORT_SYMBOL vmlinux 0xd72dd97c __splice_from_pipe +EXPORT_SYMBOL vmlinux 0xd72e1cfc _lv1_set_lpm_spr_trigger +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd761a383 ioremap_prot +EXPORT_SYMBOL vmlinux 0xd77a5aa5 __bitmap_and +EXPORT_SYMBOL vmlinux 0xd786c0ea plpar_hcall9 +EXPORT_SYMBOL vmlinux 0xd786f216 bio_advance +EXPORT_SYMBOL vmlinux 0xd79b5a02 allow_signal +EXPORT_SYMBOL vmlinux 0xd7cbddda memcpy_toiovec +EXPORT_SYMBOL vmlinux 0xd7db7b71 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd7f310ef i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0xd8012de5 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0xd80ac0f2 km_state_notify +EXPORT_SYMBOL vmlinux 0xd80f727d ftrace_raw_output_prep +EXPORT_SYMBOL vmlinux 0xd83019da f_setown +EXPORT_SYMBOL vmlinux 0xd8321dad xfrm_user_policy +EXPORT_SYMBOL vmlinux 0xd8536856 page_symlink +EXPORT_SYMBOL vmlinux 0xd86b0f87 mnt_unpin +EXPORT_SYMBOL vmlinux 0xd86eb18f dev_uc_del +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8c72cf0 ifla_policy +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd92afabe bitmap_clear +EXPORT_SYMBOL vmlinux 0xd92e16ba csum_partial_copy_fromiovecend +EXPORT_SYMBOL vmlinux 0xd94520e3 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0xd955889c __bio_clone +EXPORT_SYMBOL vmlinux 0xd95cfa3c twl6040_reg_write +EXPORT_SYMBOL vmlinux 0xd9665c71 eth_header +EXPORT_SYMBOL vmlinux 0xd9848ca9 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd9923832 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xd9977e9e jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0xd9a601aa __brelse +EXPORT_SYMBOL vmlinux 0xd9a9bb30 getname +EXPORT_SYMBOL vmlinux 0xd9b9c229 eth_header_cache +EXPORT_SYMBOL vmlinux 0xd9bac924 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0xd9d4d09d _lv1_release_io_segment +EXPORT_SYMBOL vmlinux 0xd9da8381 sk_common_release +EXPORT_SYMBOL vmlinux 0xd9de5a1d xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0xda07f0c1 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0xda0f5234 rtas_offline_cpus_mask +EXPORT_SYMBOL vmlinux 0xda1649d5 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0xda1abfe8 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0xda2478d0 param_ops_short +EXPORT_SYMBOL vmlinux 0xda2fcc6b nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda626b73 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0xda640149 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0xda697ee0 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0xda700273 mmc_add_host +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda8dd84d input_release_device +EXPORT_SYMBOL vmlinux 0xda9d53da dma_pool_create +EXPORT_SYMBOL vmlinux 0xdaac2240 sock_no_getname +EXPORT_SYMBOL vmlinux 0xdab7917e key_alloc +EXPORT_SYMBOL vmlinux 0xdabc14c1 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xdabc1ea8 fsl_lbc_find +EXPORT_SYMBOL vmlinux 0xdadbb87e input_set_capability +EXPORT_SYMBOL vmlinux 0xdaea6e0d mfd_clone_cell +EXPORT_SYMBOL vmlinux 0xdaf5fb71 register_filesystem +EXPORT_SYMBOL vmlinux 0xdb01198e fsl_upm_find +EXPORT_SYMBOL vmlinux 0xdb2ab1ed simple_link +EXPORT_SYMBOL vmlinux 0xdb580380 check_submounts_and_drop +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb943a05 put_io_context +EXPORT_SYMBOL vmlinux 0xdbb1cc66 phy_attach +EXPORT_SYMBOL vmlinux 0xdbb24fc2 down_write +EXPORT_SYMBOL vmlinux 0xdbb659d8 d_delete +EXPORT_SYMBOL vmlinux 0xdbcd416e sysctl_ip_nonlocal_bind +EXPORT_SYMBOL vmlinux 0xdbefda8c vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0xdbf9d115 decrementer_clockevent +EXPORT_SYMBOL vmlinux 0xdbfb589e block_write_begin +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc12593d deactivate_super +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc1daffb __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0xdc255a08 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0xdc25a020 pci_release_regions +EXPORT_SYMBOL vmlinux 0xdc2be3f0 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0xdc3c41a8 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc421673 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0xdc60ffed __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0xdc7db074 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0xdc8819f7 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0xdc9498dd down +EXPORT_SYMBOL vmlinux 0xdc9e8a0e ip6_xmit +EXPORT_SYMBOL vmlinux 0xdcaf6a7d skb_clone +EXPORT_SYMBOL vmlinux 0xdcb72f80 dma_find_channel +EXPORT_SYMBOL vmlinux 0xdcb764ad memset +EXPORT_SYMBOL vmlinux 0xdcbed9e8 vfs_setpos +EXPORT_SYMBOL vmlinux 0xdcc39217 block_write_end +EXPORT_SYMBOL vmlinux 0xdcefb9a5 pmu_resume +EXPORT_SYMBOL vmlinux 0xdd24280c blk_sync_queue +EXPORT_SYMBOL vmlinux 0xdd5bbbd8 phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0xdd752970 nf_register_hooks +EXPORT_SYMBOL vmlinux 0xdd90e888 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0xdd955144 __debugger +EXPORT_SYMBOL vmlinux 0xddb31b11 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0xddf86e0c tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0xde107d48 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0xde10eb10 param_set_invbool +EXPORT_SYMBOL vmlinux 0xde48e9ca _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xde5d3820 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0xde6151db tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0xde686f22 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0xde783883 pSeries_disable_reloc_on_exc +EXPORT_SYMBOL vmlinux 0xde87c757 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0xde91448c load_vr_state +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xdeba6d40 __dev_remove_offload +EXPORT_SYMBOL vmlinux 0xdebae577 sk_stream_error +EXPORT_SYMBOL vmlinux 0xdef73b72 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0xdef84302 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf3503b0 input_allocate_device +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 0xdf64623f tty_port_close_end +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf9cb286 i2c_clients_command +EXPORT_SYMBOL vmlinux 0xdfec0e73 d_splice_alias +EXPORT_SYMBOL vmlinux 0xdff386f5 vio_find_node +EXPORT_SYMBOL vmlinux 0xe017c529 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0xe0281db2 security_path_rename +EXPORT_SYMBOL vmlinux 0xe037c90e gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0xe047a479 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe061afcb jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0xe06507a9 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0xe067af85 phy_scan_fixups +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe088c2c2 tty_kref_put +EXPORT_SYMBOL vmlinux 0xe0a05524 irq_stat +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0cdd208 agp_backend_acquire +EXPORT_SYMBOL vmlinux 0xe0ea0418 md_finish_reshape +EXPORT_SYMBOL vmlinux 0xe0ef10c7 ida_simple_remove +EXPORT_SYMBOL vmlinux 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe122fef5 dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0xe12816c1 tcf_hash_create +EXPORT_SYMBOL vmlinux 0xe1282250 inet_release +EXPORT_SYMBOL vmlinux 0xe1501e38 ata_std_end_eh +EXPORT_SYMBOL vmlinux 0xe1650a65 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0xe16b8e6e udp_prot +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe18c9152 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0xe1acd748 follow_down +EXPORT_SYMBOL vmlinux 0xe1af5d4f __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0xe1e9d686 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0xe1f09ddd nobh_write_begin +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe20c63e7 _lv1_unmap_device_mmio_region +EXPORT_SYMBOL vmlinux 0xe2181b4a __free_pages +EXPORT_SYMBOL vmlinux 0xe220ceb8 __debugger_sstep +EXPORT_SYMBOL vmlinux 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe250937f inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xe287cd5a tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2a57e71 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0xe2b11b77 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0xe2b1569d inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0xe2b1f3ba tty_port_close_start +EXPORT_SYMBOL vmlinux 0xe2b49e4a netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0xe2bcaafc i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0xe2be5498 lg_global_unlock +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2d6c5ed md_write_start +EXPORT_SYMBOL vmlinux 0xe2e92711 genphy_resume +EXPORT_SYMBOL vmlinux 0xe2f0506e ping_prot +EXPORT_SYMBOL vmlinux 0xe34d86e3 agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0xe353d1e5 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xe35c5285 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0xe36aa82f sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0xe3850e78 pci_platform_rom +EXPORT_SYMBOL vmlinux 0xe3a3464a jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0xe3a53f4c sort +EXPORT_SYMBOL vmlinux 0xe3b22d59 sock_release +EXPORT_SYMBOL vmlinux 0xe3be74bc tcp_release_cb +EXPORT_SYMBOL vmlinux 0xe3d0b6f3 agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3e2eaae pcibus_to_node +EXPORT_SYMBOL vmlinux 0xe3e5a260 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xe4149079 ps3_dma_region_create +EXPORT_SYMBOL vmlinux 0xe4191c1e dmam_free_coherent +EXPORT_SYMBOL vmlinux 0xe41c31ee iov_iter_copy_from_user +EXPORT_SYMBOL vmlinux 0xe428ade1 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0xe43b7784 scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0xe44f06a2 sock_wmalloc +EXPORT_SYMBOL vmlinux 0xe4584e11 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0xe46281a0 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe48aa94e scsi_reset_provider +EXPORT_SYMBOL vmlinux 0xe4a895fa up_write +EXPORT_SYMBOL vmlinux 0xe4ab00bb of_node_get +EXPORT_SYMBOL vmlinux 0xe4b9a518 sock_sendmsg +EXPORT_SYMBOL vmlinux 0xe4bb4cf9 seq_release +EXPORT_SYMBOL vmlinux 0xe4de4da6 sock_no_mmap +EXPORT_SYMBOL vmlinux 0xe4ec332f agp_bind_memory +EXPORT_SYMBOL vmlinux 0xe4ee305b inet_bind +EXPORT_SYMBOL vmlinux 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL vmlinux 0xe4fe8ca1 _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xe5122890 flow_cache_genid +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe5307fd0 pci_fixup_device +EXPORT_SYMBOL vmlinux 0xe53d1faa of_translate_dma_address +EXPORT_SYMBOL vmlinux 0xe5424c5c scsi_scan_host +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe595fbda swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0xe59e344b inet_del_protocol +EXPORT_SYMBOL vmlinux 0xe5be55d4 udplite_prot +EXPORT_SYMBOL vmlinux 0xe5c2414a lock_may_read +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5e9d69b vio_cmo_set_dev_desired +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe606e45b mmc_free_host +EXPORT_SYMBOL vmlinux 0xe60988ac _lv1_query_logical_partition_address_region_info +EXPORT_SYMBOL vmlinux 0xe61dff29 directly_mappable_cdev_bdi +EXPORT_SYMBOL vmlinux 0xe64e4c0b scsi_calculate_bounce_limit +EXPORT_SYMBOL vmlinux 0xe6970274 swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69a9df4 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0xe69df4f0 led_blink_set +EXPORT_SYMBOL vmlinux 0xe6a2bd33 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0xe6a605d3 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL vmlinux 0xe6bc9e4a kset_register +EXPORT_SYMBOL vmlinux 0xe6cc771f dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0xe6d948a5 dev_mc_del +EXPORT_SYMBOL vmlinux 0xe6e4bb51 of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0xe6f81d8c md_register_thread +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe72dc152 mmc_of_parse +EXPORT_SYMBOL vmlinux 0xe74aa406 _lv1_set_dabr +EXPORT_SYMBOL vmlinux 0xe7715653 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0xe77a4883 alloc_anon_inode +EXPORT_SYMBOL vmlinux 0xe781ae91 dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0xe782c1be scsi_is_host_device +EXPORT_SYMBOL vmlinux 0xe79b9616 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7c5741c simple_statfs +EXPORT_SYMBOL vmlinux 0xe7c84014 lockref_mark_dead +EXPORT_SYMBOL vmlinux 0xe7cd99b7 smu_queue_simple +EXPORT_SYMBOL vmlinux 0xe7ce7439 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7f6bccc i2c_add_adapter +EXPORT_SYMBOL vmlinux 0xe7fe4241 rtnl_unicast +EXPORT_SYMBOL vmlinux 0xe8299fd0 _dev_info +EXPORT_SYMBOL vmlinux 0xe82cc752 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0xe833fa77 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0xe84966f6 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0xe84ab5a4 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0xe871c576 mutex_lock +EXPORT_SYMBOL vmlinux 0xe8a2fe20 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0xe8a9bdd1 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0xe8b63ace radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8c31bf6 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0xe8c429e9 __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xe8c438f3 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0xe8dee329 __dquot_free_space +EXPORT_SYMBOL vmlinux 0xe8f2783b is_bad_inode +EXPORT_SYMBOL vmlinux 0xe8f3a9e7 ppp_register_channel +EXPORT_SYMBOL vmlinux 0xe900d19e writeback_in_progress +EXPORT_SYMBOL vmlinux 0xe90422a9 tty_register_device +EXPORT_SYMBOL vmlinux 0xe9066d2d inet_frag_kill +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe9304d0b vfs_open +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe9711a73 vga_tryget +EXPORT_SYMBOL vmlinux 0xe9775ed2 get_agp_version +EXPORT_SYMBOL vmlinux 0xe9882bd9 dmam_pool_create +EXPORT_SYMBOL vmlinux 0xe98d404f tty_unregister_driver +EXPORT_SYMBOL vmlinux 0xe9a492b1 dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0xe9c51c3c kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xe9c75739 mach_pseries +EXPORT_SYMBOL vmlinux 0xe9c7ad77 tcf_action_exec +EXPORT_SYMBOL vmlinux 0xe9e2c51e of_phy_find_device +EXPORT_SYMBOL vmlinux 0xe9eff524 vio_unregister_device +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xe9f9faec user_path_create +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea05f08f twl6040_set_bits +EXPORT_SYMBOL vmlinux 0xea10212a int_to_scsilun +EXPORT_SYMBOL vmlinux 0xea10655a __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xea10f784 kfree_skb +EXPORT_SYMBOL vmlinux 0xea16dd4c tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xea42ece8 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0xea6ab019 pci_bus_put +EXPORT_SYMBOL vmlinux 0xea6e3003 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0xea771fdd kernel_getsockname +EXPORT_SYMBOL vmlinux 0xea7c1300 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0xea800aaa i2c_master_send +EXPORT_SYMBOL vmlinux 0xea8c202c pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0xea8eb30f shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0xea968c96 ___ratelimit +EXPORT_SYMBOL vmlinux 0xea9e14f4 __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0xeac627ee compat_sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xeacc9923 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0xeafa91e0 complete_request_key +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb3841ac blk_end_request +EXPORT_SYMBOL vmlinux 0xeb44339a free_pages_exact +EXPORT_SYMBOL vmlinux 0xeb44cc2b pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0xeb51ba65 block_commit_write +EXPORT_SYMBOL vmlinux 0xeb56ae0b clocksource_register +EXPORT_SYMBOL vmlinux 0xeb831853 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0xeba2a1f7 rtas_indicator_present +EXPORT_SYMBOL vmlinux 0xeba85d97 update_devfreq +EXPORT_SYMBOL vmlinux 0xebcab3a6 ppc_pci_io +EXPORT_SYMBOL vmlinux 0xebd09f98 d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0xebdbe48c radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xebecfb3c serio_close +EXPORT_SYMBOL vmlinux 0xebf2a46b unregister_cdrom +EXPORT_SYMBOL vmlinux 0xec02b1ab dev_uc_add +EXPORT_SYMBOL vmlinux 0xec17ebb0 of_match_node +EXPORT_SYMBOL vmlinux 0xec23208c inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xec30765a _lv1_allocate_io_segment +EXPORT_SYMBOL vmlinux 0xec3f3e0b nf_log_unset +EXPORT_SYMBOL vmlinux 0xec5a8629 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0xec62779d lease_modify +EXPORT_SYMBOL vmlinux 0xec651774 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0xec66a83b tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0xec8d2735 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0xec9ad6b4 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0xecbb926f xor_altivec_3 +EXPORT_SYMBOL vmlinux 0xecbdd41d xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0xecbdd9df tty_unlock_pair +EXPORT_SYMBOL vmlinux 0xecc0e30e kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0xecd3e3cc bdi_init +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xed3a9edd release_pages +EXPORT_SYMBOL vmlinux 0xed3d268e register_shrinker +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed608b67 nobh_writepage +EXPORT_SYMBOL vmlinux 0xed652427 _lv1_set_interrupt_mask +EXPORT_SYMBOL vmlinux 0xed918f3e kernel_write +EXPORT_SYMBOL vmlinux 0xed97a0f2 kill_pid +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xedb986b4 ata_port_printk +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc410d0 udplite_table +EXPORT_SYMBOL vmlinux 0xeddcb5d1 kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0xeddf2697 kill_block_super +EXPORT_SYMBOL vmlinux 0xedf0b48c _lv1_storage_get_async_status +EXPORT_SYMBOL vmlinux 0xedf25246 tty_devnum +EXPORT_SYMBOL vmlinux 0xee0db5c9 security_path_link +EXPORT_SYMBOL vmlinux 0xee1396d9 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0xee246dff ida_destroy +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee5bb20b _lv1_panic +EXPORT_SYMBOL vmlinux 0xee6f1508 tcp_init_sock +EXPORT_SYMBOL vmlinux 0xee910797 generic_file_llseek +EXPORT_SYMBOL vmlinux 0xee9174c5 _lv1_storage_read +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xeea4538d nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeb5bd3b __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0xeee6a476 eth_change_mtu +EXPORT_SYMBOL vmlinux 0xeeec26a7 queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xeef392a0 sock_setsockopt +EXPORT_SYMBOL vmlinux 0xeef48fce pci_enable_device +EXPORT_SYMBOL vmlinux 0xeef96547 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0xef0ef6fd noop_qdisc +EXPORT_SYMBOL vmlinux 0xef0f399a path_nosuid +EXPORT_SYMBOL vmlinux 0xef109449 interruptible_sleep_on +EXPORT_SYMBOL vmlinux 0xef1e23b3 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0xef209f47 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0xef21b7e1 xfrm_cfg_mutex +EXPORT_SYMBOL vmlinux 0xef25cc21 seq_lseek +EXPORT_SYMBOL vmlinux 0xef3868c2 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xef760553 vfs_rmdir +EXPORT_SYMBOL vmlinux 0xef96089d abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0xefb14e3c fd_install +EXPORT_SYMBOL vmlinux 0xefc2e54d _lv1_storage_send_device_command +EXPORT_SYMBOL vmlinux 0xefd9e91c pci_disable_msix +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefde1bbe flush_dcache_range +EXPORT_SYMBOL vmlinux 0xeff7a199 nf_register_hook +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf0103ed1 km_policy_expired +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf02effd8 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xf040b2d3 lease_get_mtime +EXPORT_SYMBOL vmlinux 0xf0410570 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0xf05cebcb dquot_initialize +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf0619801 timekeeping_clocktai +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf067257c register_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0xf07a5c1a __lru_cache_add +EXPORT_SYMBOL vmlinux 0xf087137d __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0d2f84a _lv1_gpu_context_free +EXPORT_SYMBOL vmlinux 0xf0e072ae simple_open +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0f1246c kvasprintf +EXPORT_SYMBOL vmlinux 0xf0fd4e8f rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0xf100416a remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xf10ca3e7 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0xf10d141a dev_trans_start +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf10ff142 scsi_scan_target +EXPORT_SYMBOL vmlinux 0xf11cd6ce down_interruptible +EXPORT_SYMBOL vmlinux 0xf12e7dbf ipmi_get_smi_info +EXPORT_SYMBOL vmlinux 0xf13feb57 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf15241fb writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xf15d527d udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0xf183189b __ioremap_at +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1aaa29d uart_register_driver +EXPORT_SYMBOL vmlinux 0xf1b1169b inode_permission +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1e06df1 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0xf1e8b4f0 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1f07cd1 agp_find_bridge +EXPORT_SYMBOL vmlinux 0xf202c5cb radix_tree_insert +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf222dae2 km_state_expired +EXPORT_SYMBOL vmlinux 0xf222defb __ip_select_ident +EXPORT_SYMBOL vmlinux 0xf22881e8 lg_local_lock +EXPORT_SYMBOL vmlinux 0xf23b4d2b sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf2433445 check_disk_change +EXPORT_SYMBOL vmlinux 0xf24dcaa8 _lv1_net_stop_rx_dma +EXPORT_SYMBOL vmlinux 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL vmlinux 0xf26532e3 register_netdevice +EXPORT_SYMBOL vmlinux 0xf2795451 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0xf29b731d nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2aae206 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0xf2b1ac8e __getnstimeofday +EXPORT_SYMBOL vmlinux 0xf2b1bdbb jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0xf2b71159 pm860x_page_set_bits +EXPORT_SYMBOL vmlinux 0xf2bcc676 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0xf2d0ed40 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0xf2e95ae7 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0xf2ed1926 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0xf30d1036 _lv1_start_ppe_periodic_tracer +EXPORT_SYMBOL vmlinux 0xf30dd4af jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf315c554 srp_rport_get +EXPORT_SYMBOL vmlinux 0xf322a206 bit_waitqueue +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf334b051 d_invalidate +EXPORT_SYMBOL vmlinux 0xf33cbe6a lock_sock_fast +EXPORT_SYMBOL vmlinux 0xf33e6be1 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf348d1c1 mntput +EXPORT_SYMBOL vmlinux 0xf34bb700 skb_checksum +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf357db8d pasemi_dma_set_flag +EXPORT_SYMBOL vmlinux 0xf365d733 dev_uc_flush +EXPORT_SYMBOL vmlinux 0xf3854e53 elevator_exit +EXPORT_SYMBOL vmlinux 0xf388b8c8 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf38c0479 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf3bf0bce __bitmap_complement +EXPORT_SYMBOL vmlinux 0xf3e12c5f scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0xf41c6dd3 __register_chrdev +EXPORT_SYMBOL vmlinux 0xf42f00b6 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf457e43b pci_set_ltr +EXPORT_SYMBOL vmlinux 0xf4621f63 set_security_override +EXPORT_SYMBOL vmlinux 0xf47d62d0 security_path_mkdir +EXPORT_SYMBOL vmlinux 0xf47f790d led_set_brightness +EXPORT_SYMBOL vmlinux 0xf484ddd4 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0xf4b94855 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4cfa461 generic_file_fsync +EXPORT_SYMBOL vmlinux 0xf4e6195b dquot_release +EXPORT_SYMBOL vmlinux 0xf4ecd6fc bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0xf4edcb51 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f8787e lookup_bdev +EXPORT_SYMBOL vmlinux 0xf4ff0854 pci_stop_and_remove_bus_device +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 0xf5407b70 blkdev_get +EXPORT_SYMBOL vmlinux 0xf5428f94 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0xf547459b get_thermal_instance +EXPORT_SYMBOL vmlinux 0xf55b3b3d __arch_hweight16 +EXPORT_SYMBOL vmlinux 0xf573da27 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0xf5851da3 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0xf5a085c4 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0xf5a59e4c splice_from_pipe_next +EXPORT_SYMBOL vmlinux 0xf5a62ecc _memset_io +EXPORT_SYMBOL vmlinux 0xf5c42aa5 bdget_disk +EXPORT_SYMBOL vmlinux 0xf5c58a32 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0xf5ce674a tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0xf5d96ad4 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0xf5e1558d crash_shutdown_unregister +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf6213e12 pasemi_dma_clear_flag +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf643f86b skb_copy_datagram_iovec +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf685cc3f locks_copy_lock +EXPORT_SYMBOL vmlinux 0xf68687be __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6cfd00d tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0xf6d27ce0 phy_drivers_register +EXPORT_SYMBOL vmlinux 0xf6eaf34f from_kprojid_munged +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6ecb763 _lv1_send_event_locally +EXPORT_SYMBOL vmlinux 0xf6ef5aa5 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0xf710ddff __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0xf7289d14 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0xf7360aa9 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xf741c793 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf75b350e inet_csk_accept +EXPORT_SYMBOL vmlinux 0xf7646cda xfrm_register_mode +EXPORT_SYMBOL vmlinux 0xf76c8af1 netif_skb_dev_features +EXPORT_SYMBOL vmlinux 0xf77f1f24 gen10g_resume +EXPORT_SYMBOL vmlinux 0xf790757a xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0xf790cf39 filp_open +EXPORT_SYMBOL vmlinux 0xf7adcaf3 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0xf7bac0ec _lv1_set_lpm_counter +EXPORT_SYMBOL vmlinux 0xf7c1530f in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xf7c6742f blk_init_tags +EXPORT_SYMBOL vmlinux 0xf7d05103 nf_ct_attach +EXPORT_SYMBOL vmlinux 0xf7d2ccd9 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0xf8004bfd _lv1_disconnect_interrupt_event_receive_port +EXPORT_SYMBOL vmlinux 0xf803fe39 bitmap_set +EXPORT_SYMBOL vmlinux 0xf80de9ff hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf812cff6 memscan +EXPORT_SYMBOL vmlinux 0xf81806bd agp_bridge +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf84f2ed6 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0xf86791e4 sys_imageblit +EXPORT_SYMBOL vmlinux 0xf86b7a07 __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0xf86b8501 set_disk_ro +EXPORT_SYMBOL vmlinux 0xf880aeba __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0xf89c8e07 ida_pre_get +EXPORT_SYMBOL vmlinux 0xf8a88412 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0xf8bfa9ad __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xf8c71820 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0xf8ec1d25 pipe_lock +EXPORT_SYMBOL vmlinux 0xf90e02be xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0xf925e4e7 key_put +EXPORT_SYMBOL vmlinux 0xf954bd5c devm_gpiod_get +EXPORT_SYMBOL vmlinux 0xf97ff104 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0xf983bcc7 tty_port_open +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9abb49d pcim_iomap_table +EXPORT_SYMBOL vmlinux 0xf9c0b663 strlcat +EXPORT_SYMBOL vmlinux 0xf9d51fe7 unregister_quota_format +EXPORT_SYMBOL vmlinux 0xf9f4bf97 cfb_imageblit +EXPORT_SYMBOL vmlinux 0xf9f4f506 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0xf9ff4793 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0xfa05c46f mb_cache_shrink +EXPORT_SYMBOL vmlinux 0xfa0d400c max8998_bulk_write +EXPORT_SYMBOL vmlinux 0xfa1cd8c2 input_set_abs_params +EXPORT_SYMBOL vmlinux 0xfa2665ff set_device_ro +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa7f3156 wl12xx_get_platform_data +EXPORT_SYMBOL vmlinux 0xfa8ad507 tty_port_close +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfada6cd9 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0xfadb5750 pmu_unlock +EXPORT_SYMBOL vmlinux 0xfae5dd24 fget_light +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaf98462 bitrev32 +EXPORT_SYMBOL vmlinux 0xfafb8e2d netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0xfafc9194 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0xfb0d207d mddev_congested +EXPORT_SYMBOL vmlinux 0xfb0f87c7 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0xfb24b1db max8998_bulk_read +EXPORT_SYMBOL vmlinux 0xfb469870 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0xfb47bfe9 dcb_setapp +EXPORT_SYMBOL vmlinux 0xfb4b4602 neigh_destroy +EXPORT_SYMBOL vmlinux 0xfb4f8a5a napi_get_frags +EXPORT_SYMBOL vmlinux 0xfb5702ca max8998_update_reg +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb762d39 sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0xfb85c252 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfb94c42c fib_default_rule_add +EXPORT_SYMBOL vmlinux 0xfba09cf9 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbe0f8c1 devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0xfbe25f35 make_kprojid +EXPORT_SYMBOL vmlinux 0xfbe98fe1 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0xfbec306b from_kuid_munged +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc19ed66 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0xfc1d93a3 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0xfc216f41 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0xfc30d7ec netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc3b160f mempool_create_node +EXPORT_SYMBOL vmlinux 0xfc573e1d skb_append +EXPORT_SYMBOL vmlinux 0xfc75065c generic_file_aio_read +EXPORT_SYMBOL vmlinux 0xfca493d4 mdiobus_write +EXPORT_SYMBOL vmlinux 0xfca50b2e blk_run_queue_async +EXPORT_SYMBOL vmlinux 0xfca89786 nobh_write_end +EXPORT_SYMBOL vmlinux 0xfcaa04a0 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xfcb3ac3b pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0xfcb54a69 blk_delay_queue +EXPORT_SYMBOL vmlinux 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL vmlinux 0xfcb926cd kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcd19741 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfceca688 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0xfcf2db1a ip6_frag_match +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd022ef2 blk_init_queue +EXPORT_SYMBOL vmlinux 0xfd3724aa scsi_free_command +EXPORT_SYMBOL vmlinux 0xfd5289e4 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0xfd5c2c58 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0xfd6293c2 boot_tvec_bases +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfd9f68cb kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0xfda9532a elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0xfdb6cedc _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +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 0xfe1bac7a pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xfe26fc7c nr_node_ids +EXPORT_SYMBOL vmlinux 0xfe39f6dd neigh_event_ns +EXPORT_SYMBOL vmlinux 0xfe402eea bio_add_pc_page +EXPORT_SYMBOL vmlinux 0xfe49d1b8 mmc_register_driver +EXPORT_SYMBOL vmlinux 0xfe4cb4b5 _lv1_storage_write +EXPORT_SYMBOL vmlinux 0xfe57b592 blk_complete_request +EXPORT_SYMBOL vmlinux 0xfe595bf9 would_dump +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe689230 clear_nlink +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe83e39d tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0xfea59d3d jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0xfecffac5 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xfed221d9 pasemi_dma_alloc_ring +EXPORT_SYMBOL vmlinux 0xfedccf4f d_genocide +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfeebc7c4 __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0xfef2f688 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0xfef95383 generic_file_aio_write +EXPORT_SYMBOL vmlinux 0xfef96e23 __scsi_print_command +EXPORT_SYMBOL vmlinux 0xfefc9fea remove_arg_zero +EXPORT_SYMBOL vmlinux 0xff13e1a4 agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0xff1765c7 rtas_call +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff6d8c03 inet_stream_ops +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff7846a2 sock_from_file +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffc2cef2 neigh_direct_output +EXPORT_SYMBOL vmlinux 0xffc613bf fs_bio_set +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xfffdf161 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0xffffb4d7 __register_binfmt +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x04bcfdcd kvm_release_page_dirty +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x066f5772 kvm_read_guest_cached +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x06937234 gfn_to_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x0ed5543f kvmppc_emulate_mmio +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x0fb5b8aa kvm_set_page_dirty +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x10a0c39a kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x1439c617 kvmppc_handle_store +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x19fd71bb kvmppc_book3s_queue_irqprio +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x1b83a879 kvmppc_prepare_to_enter +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x1c2784be kvm_resched +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x1cfe78d1 kvm_release_pfn_dirty +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x1d213dc1 __kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x1daeb695 gfn_to_pfn_async +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x1fb03bde mark_page_dirty +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x20f08a8f kvm_flush_remote_tlbs +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x289b1cdc gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x2b5cfec4 kvm_vcpu_block +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x2ffab71b kvm_vcpu_uninit +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x31c4038d kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x36a57024 kvm_get_dirty_log +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x39298f29 kvm_write_guest_cached +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x3d575c3e kvm_vcpu_init +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x43b466b0 gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x4515fb93 kvm_vcpu_cache +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x4e5edd50 kvm_vcpu_kick +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x4fa52029 kvm_is_visible_gfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x58d5bf19 kvmppc_gfn_to_pfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x5c4dedab gfn_to_memslot +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x5e472157 kvm_put_kvm +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x6890b3d6 kvmppc_pr_ops +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x77dc68b5 kvmppc_st +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x84580eb6 kvmppc_core_queue_program +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 0x8e6f4f71 gfn_to_hva +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x93a3a9f3 kvm_read_guest +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x9ac8de50 kvmppc_core_queue_dec +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x9b94e2c7 kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x9ce7ef6b kvmppc_set_msr +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x9e55f68b gfn_to_pfn_prot +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xa27c6de8 gfn_to_pfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xa5a5f11a kvm_write_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xa7302369 kvmppc_hv_ops +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xa9674c18 kvm_read_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xa99a443f kvmppc_kvm_pv +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xa9aef2e1 gfn_to_hva_memslot +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xab59d373 kvmppc_free_lpid +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xaeb69044 kvmppc_ld +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xba743825 kvm_clear_guest +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xbbc27d9e kvm_init +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xbca9765c kvmppc_core_dequeue_dec +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xc11d7fa5 kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xc4d8595c kvm_release_page_clean +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xc70e4b59 kvmppc_claim_lpid +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xc77fa6a4 kvmppc_emulate_instruction +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xc84ca701 kvmppc_core_pending_dec +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xcc44961f kvmppc_alloc_lpid +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xd80d3538 kvm_unmap_hva +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xdd617a5b gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xded508c0 kvm_clear_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xe301c510 kvmppc_sanity_check +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xe4300097 kvmppc_handle_load +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xea3a0718 kvmppc_rtas_hcall +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xf3d21092 kvmppc_core_prepare_to_enter +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xf4da3546 kvmppc_init_lpid +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xfa471d42 kvm_get_kvm +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xfbbc1aa0 kvmppc_xics_hcall +EXPORT_SYMBOL_GPL arch/powerpc/platforms/cell/spufs/spufs 0x280aa7e4 spu_restore +EXPORT_SYMBOL_GPL arch/powerpc/platforms/cell/spufs/spufs 0x66efc462 spufs_context_fops +EXPORT_SYMBOL_GPL arch/powerpc/platforms/cell/spufs/spufs 0xa948cf3d spu_save +EXPORT_SYMBOL_GPL crypto/af_alg 0x1337f513 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x20e18585 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x2717be79 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x289197b2 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0x2a8f0037 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x58716898 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x7116d075 af_alg_release_parent +EXPORT_SYMBOL_GPL crypto/af_alg 0xc8bf504c af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0xf5179fca af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0xf651412f af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0xf097f094 async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x8cbeec2b async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xb0e77a98 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x035b0deb async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xec8c41cd async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x8f7814b6 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xd11c654e async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xda4474a9 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xdca2a17c __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x6d38734a async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xb1d83341 async_xor +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x79bad4c7 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x1ead37c5 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 0x78702305 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 0x0dec4c3d cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x124006d4 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x26da4ab6 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0x378b8bf7 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x4cad68c4 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x66d8d5af cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x6f92ce38 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xa0176cdf cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xdb1fd6d7 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xebd2c1fa cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0xa6dd5d11 lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +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 0xd18895df serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x03b19c1d twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0xdaa2ee9f xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x0df7b1b9 ahci_platform_resume +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x18d08b1d ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x3462a71a ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x346c37d2 ahci_platform_suspend_host +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x502918b0 ahci_platform_suspend +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x502ff4a5 ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x59535157 ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x5c0c2a0b ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x811d380f ahci_platform_resume_host +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xa1eba167 ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xc8e97bb3 ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x0b3fe8c9 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x14c1c964 ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x245c3a92 ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x2b4648d1 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x375231e6 ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x47b5f8f6 ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x51c491ac ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5e68e4ca ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5e72a208 ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5eacba1f ahci_interrupt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x62e899b4 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x63c52431 ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x694f923e ahci_thread_fn +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6db4f739 ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6e05c4e7 ahci_hw_interrupt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x80f8f5b5 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa56ab052 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa78b8517 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xbe5e38ae ahci_restart_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc444fa9b ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc4c2e11f ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc9cc37d0 ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd85b1de6 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xdeaf1740 ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf5a69fb5 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x58e4b920 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0x499df0fa 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/bcma/bcma 0x15c8c1ee bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2261c008 bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x25cbccd4 bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2a7ffe25 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2cf21b5b bcma_core_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2e565697 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x525345b6 bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x572cf3a7 bcma_find_core +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x580c73ff bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5a44efa9 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5d9b47b5 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x62b48dd8 bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x63b00b6e bcma_core_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa1faca01 bcma_core_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa250a5bf bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc22263d0 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xcc26880e bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd5e1edf0 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd7ea6ab8 bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe77068d9 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf69c898c bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xfcb77c8b bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xff0e381f __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x257fb516 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x37f68e20 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x3fc72cb7 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x5fec6852 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x6a128b86 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x8b4b6077 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xad2b4506 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xb2bc6003 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xbae8b2cd btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xf6319347 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/crypto/nx/nx-compress 0x1d2d1f5d nx842_compress +EXPORT_SYMBOL_GPL drivers/crypto/nx/nx-compress 0x4df68ceb nx842_get_workmem_size_aligned +EXPORT_SYMBOL_GPL drivers/crypto/nx/nx-compress 0x56a12651 nx842_decompress +EXPORT_SYMBOL_GPL drivers/crypto/nx/nx-compress 0xca181ed8 nx842_get_workmem_size +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x28b26857 dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x65a8c283 dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x7edeec61 dw_dma_resume +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x9a2fa079 dw_dma_suspend +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x9f74acdc dw_dma_shutdown +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x118f6b90 edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1b339824 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x3d769fdd edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x4496d156 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x474464ef edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5177c990 edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x51d121b0 edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5ad42464 edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x64f4a22f edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x69259f22 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7023314f edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x740a5e84 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x8fdf22ca edac_mc_add_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x8fe8f89a edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x906bfbf7 edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x98ba68c5 find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa59f4f09 edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa69a8f51 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb3419f86 edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc344eccf edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xcc8c15c5 edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xcfa05ead edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe92b9f0a edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf37cee54 edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x3bb74469 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x6ee98d41 bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x0b7dc4c1 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xa200cdc9 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x3a4d43f3 drm_vm_open_locked +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x3e4dc052 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xc8150e81 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x6a5793bd 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 0x84acdffa ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xce36343e ttm_prime_handle_to_fd +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xde39654e ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00234051 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x19ea5a85 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x35aa8961 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x367513c7 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x48f09cad hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x550fb826 hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x55e4cb2d hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x65718f00 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x669769ec hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x686fa14c hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x717d84f5 hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7a3f0a0f hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7b503705 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x81a0a4ec hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x863fbb1e hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9313e99a __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x93fc5cc5 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa1cd9ec0 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa1dcf369 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa85b554d hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xaa540c56 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xad64ca28 hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb9b878dc hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc7409274 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc7cffd91 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xcf9bf854 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd2bf104d hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xdf78fb84 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe3024ec3 hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe7616fa1 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xea81546f hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xed5c4830 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf1721211 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf5216d61 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 0xa986965f roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x2b820872 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x2d65bea6 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x7f1bb541 roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xd7c069d6 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xeb8338fa roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xfa9dc24f roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x0fe2eb6e sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x2d758acc sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x3730efd8 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x57e70ce7 sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x8dd953fa sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xac4727e1 sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xd6ef064f sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xd9387149 sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x2b27927a hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x09fa1c32 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x0b384b3e hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x0b4fce17 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x13062a72 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x268c7827 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x27e4bd8f hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x7eb14119 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x8c780fa8 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x8d9a6e69 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xda40da37 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xdc776fb6 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe5474b57 hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf245e963 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x0f127f97 adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xbe95d1e0 adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xc646d95d adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x160f9e1d pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x2296fa63 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x240a26ec pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x3fc5de99 pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x460f2caa pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x47eeddfd pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x5b71d982 pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x5db5782e pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x636552a1 pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x8199bd9c pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x8db9249f pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xd9a4a185 pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x2a8b20d8 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 0x7f1ace77 i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xa5b21b55 i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xafa2e32c i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xb69a1f21 i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xbaadbce0 i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xcff887cc i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xe9a6e6b8 i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xfa0bd915 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x16656f63 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x1dd40512 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xa4d1dcee i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xaf1fb339 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x0523646d ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x1ff82e3e ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x4e12b75b ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x5c0bb31e ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x703a4a07 ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x87fc177a ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x9a316301 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xe4a33bf5 ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xe809f813 ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x156afc5b adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x3176246e adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x3974c397 adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x5285fad9 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x6224ff38 adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x6842ebfe adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x7ff73578 adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x9df7f6b2 adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xbf950135 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xc743087f adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xd63875e6 adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe5adcd76 adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0306865a iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x08ee4f0d iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1790cd33 iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1aceccac iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1fee2576 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 0x285f8841 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x29485e98 iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3767cce7 iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x38449303 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3d006abe iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x485bb884 iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5d38cb97 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6a09236f devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x71c42168 iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x81a61854 iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x88883292 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8e5ea4ce iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x929e3658 iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9e7e70dc devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa10e0018 iio_scan_mask_set +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc55825f3 devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd3a38e08 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd3c1a6f4 devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd6196b0a iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xda5e53e2 iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdb6f9a1b iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe0261535 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe19ccb47 iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe472f4b4 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf7168c03 iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0xb222bd1a input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0x48539290 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 0xe3a0c2a9 adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x2aada82b cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x3dcf570b cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x6729d4e8 cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x153714c7 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x63aedad0 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xafd350a6 cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xc4fcdbf0 cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xf63fe882 cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6625e31e wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6862d1c9 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x79198057 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x7b9bfe44 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x8954854f wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x8eb84e0d wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xa93b4a54 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xb3152b9b wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xb731feda wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xb852a85b wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xd6163b96 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xdab5c1d7 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x072a8f4e ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x5afed43a ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x9ccb9e30 ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xbcd7b6e8 ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xc5cef53b ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xd9dea788 ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xe5df7ae9 ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xf0af3916 ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xfb29d5f6 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0x23359aff unregister_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0xce1414b2 register_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x16a6fa38 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x18d66ac2 gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x4630c71c gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x4893a202 gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6880a623 gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x7de7484d gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x7fdc56c8 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa11a4f69 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa1a85e06 gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa3151853 gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc14fa060 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc8ed87f1 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xca27b462 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd0a79345 gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd392ec10 gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xdaf7c51e gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe8b335bd gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xec97e3be gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x26913f97 lp55xx_is_extclk_used +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x32bde13f lp55xx_write +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x5e7fb86f lp55xx_read +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x76fb666f lp55xx_unregister_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xab62b120 lp55xx_unregister_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xb02617bf lp55xx_register_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xbb0b53cc lp55xx_deinit_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xc8cf9ece lp55xx_register_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xd639e2cf lp55xx_update_bits +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xddc0f880 lp55xx_init_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xfed4ca61 lp55xx_of_populate_pdata +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 0x13a7511d wf_unregister_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x4782e36d wf_put_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x4935388b wf_find_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x58049e3d wf_get_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x75147afa wf_set_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x8bc6544a wf_unregister_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x94765fac wf_critical_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x982f2895 wf_register_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xa2f19a49 wf_is_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xb610f4a7 wf_get_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xbcace2a5 wf_unregister_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xbeea449d wf_register_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xe853ff87 wf_find_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xed82a14f wf_clear_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xf3b6efbe wf_put_sensor +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/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 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 0x8a4afa11 __tracepoint_bcache_alloc_invalidate +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 0x0819d5ec dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x121fef09 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 0x48578de0 dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x54a269ad dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +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 0xc079a67b dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xc1e23d17 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 0xd12be4aa dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xebd06eaf dm_bio_prison_create +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 0x82a3529f 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 0x031803aa dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x1829dad2 dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xb5717e32 dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xb866172a dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xc7f27991 dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xce091a9a dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xf09215e6 dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x158f13f5 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x8f0d5755 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 0x15023e87 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 0x55c8bae5 dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x592ecdf7 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x85451ed6 dm_region_hash_create +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 0xd64c8b9e dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd9354b1d 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 0x17c36f29 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1cac81ac dm_bitset_clear_bit +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 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 0x2f74609d dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x32b5f546 dm_array_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x38c75c44 dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x42dbdfc3 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 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 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 0x68fae9d2 dm_disk_bitset_init +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 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 0x89d8a1a7 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 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 0xa0bbbb49 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa13861b4 dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa87c5b4d dm_array_resize +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 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 0xe44b4b9b dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed1e1f96 dm_btree_remove +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 0xf475af48 dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf5455120 dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/raid1 0x4633fb27 md_raid1_congested +EXPORT_SYMBOL_GPL drivers/md/raid10 0x9d2bff6c md_raid10_congested +EXPORT_SYMBOL_GPL drivers/md/raid456 0x1efe5012 md_raid5_congested +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x3fc3f5c1 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x86ce2fd5 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x8e58b61e saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xa08a3114 saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xb2c06e0a saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xc7312366 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xca833024 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xd6e7fc30 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xd963c3c9 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xdcb1d272 saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x0c1a4149 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x3bbe27e0 saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x4dee9b8f saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x681c5330 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xa5ff4b32 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xcd11d098 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xf1f96b25 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x04f38d22 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x148ccd7b smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x26508c3f 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 0x473af186 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x4de7b1dd smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x4e8c8264 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x63ae36f1 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x74fc5088 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x76b348a7 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x82cadc23 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x86e22db6 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x8ae8c79d smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x92d8635b sms_board_event +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 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbf6eeac0 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xcc4d4736 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd65d5648 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xdc4f6235 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0xe51ecf52 cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0x0f5ec0d3 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0xeef298d8 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x1bf40310 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x25ea6c59 mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x3927eec5 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x495520c3 mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x704c2f02 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x774b4f8a mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x8b00b047 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x9291a817 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x989aa77d mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa4341665 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa510bef3 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xb02ab56e mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xbe95a092 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc96df21a mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xca3b84ae mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf18e6a4e mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xfe0ff3ef mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x0911314c saa7134_g_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x330bc981 saa7134_s_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x8571cae1 saa7134_queryctrl +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xb9307784 saa7134_s_std_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xd2cf5537 saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x412a1bbd ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x55a822c5 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x68e2fa9e ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7dc733dc ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xa0e8dcbc ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xb573778c ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xf3288f68 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x54502285 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xb2b4cbdc radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x057f33e8 ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x0a576f51 rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x0b810904 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x0e5716b3 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x11448124 rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x3405d034 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4b7670b2 rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6343ed7c rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6d3b3581 rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x70a80c8f rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7368f51c ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7d32f2bb rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9744ea92 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa0761f1c rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc474841f rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd405fd87 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xdc9a2924 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe00d5732 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xffe85f57 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0x3022b384 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x9083fed8 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x5cfff2f8 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x67add3b0 r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0xbf4ca289 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x254ae670 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x9573cbbb tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xff4d35bd tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x9b18c53c tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x1ebd62ec tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xc1b1686f tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x433f5762 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xa61572b2 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x52fdb327 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x0a485f21 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x181d9488 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x25ab0be8 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x36305276 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x38c102ce cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x59bcae21 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x656860b9 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6fa021c1 cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7c2d9d13 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7d6e3bcb cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x80d328ed cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa22cb498 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xac6ccf4c cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb36295b4 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb94be1b6 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc49c4f61 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf0a39225 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf95e8a60 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xfab31537 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0xf27e97f4 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0x9bd5f755 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x0878c0f2 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x1b430368 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x2926fece em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x3183e433 em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x37c87bc3 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x42146f9a em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6695a50f em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x702d97ba em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x74878e23 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7c0e71d5 em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x8594823d em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x96a16683 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x9ff033eb em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xefa10cc7 em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x28d522b1 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x4f4640c1 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xba30206c tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xf9064910 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 0x45222956 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x647ca5e4 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x88c268dd v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xa4669708 v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xb8059f05 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-common 0xf92f067b v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x08982d59 v4l2_match_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x221d2fbc v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x36e8756a v4l2_find_dv_timings_cap +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 0x53105839 v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x6976cfe0 v4l2_valid_dv_timings +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 0x7eaf8e7a v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xb0891da2 v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0x31c52b32 v4l2_int_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0x56666160 v4l2_int_ioctl_0 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0x84f75e40 v4l2_int_ioctl_1 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xa5228b24 v4l2_int_device_try_attach_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xdc741169 v4l2_int_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0b7a9cbc v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17eb0eee v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2f188a80 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4204ead5 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5450d2c7 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x55220573 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x63af1595 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8c634830 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x98723819 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa09742dd v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb6965dd8 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xcecb9f38 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe3296c76 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xef1cc874 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfd7299f0 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0c98897c videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2c2362f4 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x477c85cc videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x56397999 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5843e5bc videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5da33ccd videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5e3caa7c videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x658661ed videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x68556243 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6dc239c7 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x85b5f39d videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8a69d580 videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8d2e2156 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x901f0ae8 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa2560639 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa342b7b5 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xcc9a16fd videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xcced85e6 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd413320c videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe2eefa89 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xea4cfeaf videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf4aa75fe videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf5c32948 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xfe561145 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x1abeb7a2 videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x684039d0 videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x87333f51 videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x0e2be9a6 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x40b89b9e videobuf_dma_init_user +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x553a86d0 videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x616b1598 videobuf_dma_map +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x77399921 videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x864175d8 videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x98486077 videobuf_dma_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xbbee63df videobuf_dma_init_overlay +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xcb2d7725 videobuf_dma_init_kernel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xe172ff47 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xb3f603f0 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xd2b8abf8 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xd39dd9b9 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x00491aba vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0067db88 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x049572bc vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0640e63b vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x13af42bf vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x186da587 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x29b1edae vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2d05c625 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4e11bd6e vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4e4d5281 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x50dd95db vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x56420adc vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5a202f3e vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5a95079c vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x759be87e vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x770f346e vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7755a600 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7f6bfc3b vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x888ad71b vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x96d950d1 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9b68ef4c vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa74e1eff vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb0ffbe8a vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb5689ef7 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbe1774fb vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xcfc696ad vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd6149080 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd881c44a vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd9bc60e5 vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe0d15b2a vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe63960f3 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf1a91bc7 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf35d3e20 vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xff164b10 vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x0135f0ed vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xc94bd8d1 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 0x8142bd1d vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x20d9f889 vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x330b2d79 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xcf1da837 vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xd1a17891 vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0x1a5a5459 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x010ef653 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x22616980 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x252107f6 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2fd5e750 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4b55fd79 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x54ad36ae v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x61ba9ba5 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x73328430 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x80ae15fc v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8be7ef91 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x913d16b0 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x98d90f1d v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x990b7794 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa0cdf7db v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa7072b81 v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa907529b v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb20c7817 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbc5140a3 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd3a80b6b v4l2_compat_ioctl32 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xef2f1ddb v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf0b60fa7 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf3840f4a v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xfcf7f1d1 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xfeaa4825 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x04ddca5c i2o_dma_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x0a57d275 i2o_dma_realloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x1e4c0fe2 i2o_dma_map_single +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x2a30a358 i2o_pool_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x39247249 i2o_pool_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x9bbc0f93 i2o_dma_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xb4ac4a6e i2o_sg_tablesize +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xeb2c4859 i2o_dma_map_sg +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x20d5d14d pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x2e457454 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x98d92d96 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x085b7747 kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x25c96611 kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x57ada60b kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x625c09e8 kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xaa4c8387 kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xadacacf9 kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xcf18e1e0 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xddb49231 kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x68d59af9 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xc858989c lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xfc01bac8 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x19d3a8c0 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x20ed9017 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x722b8a37 lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x84dad27a lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xc05f816d lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xd9b2817c lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xe6601e3e lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x9edaec81 mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xa3b58543 mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xa8f3d3ac mc13xxx_common_cleanup +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xc23f8121 mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xcc6f52c9 mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xde60a7a1 mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x07f611cf pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x0ded7d75 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x2609482a pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x59c5097b pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xa23f48ed pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xa7a4377e pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xc19adc37 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xc4e7ce48 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xd152786b pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xdad55a54 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xf2f3d57f pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x117239da pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xb00f4936 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x506ae490 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x9d70dcb2 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xa1d8d517 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xafb8d9c5 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xf1399535 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 0x10faa893 rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x13075f52 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1961c47a rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1c2b19a6 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1cad7fe2 rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x21d5b0ce rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x22a247b1 rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x25a1ead4 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x28eb15fb rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4830340f rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4f07ce17 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x6efe4d38 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8b4d1368 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa3d6ff9a rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xbc913578 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xda9fffec rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe0327706 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe580b092 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xeb9dfc34 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf23431a0 rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xfd580485 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x00c8dc75 si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0523bc8f si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x14a68f56 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1b838ea6 si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1feea3f1 si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x24ecf716 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x26f57480 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x31f8b271 si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x47374c72 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4ab6548a si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5a8a9624 si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x692df861 si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x74853b15 si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x77d0a7d1 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7a937280 si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x819f459e si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x864552a8 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x88ec83c6 si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8d27804d si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9d9c7a8d si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa57e06ab devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb3887a70 si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb45927f9 si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb676b868 si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc1ceaa3a si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc4740be1 si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc51a20d8 si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc6a1c1ca si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc77086b0 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xdf8e3fe8 si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe11bec9b si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xee250939 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf63bfcdd si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xfcbca0cb si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x031b9c64 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x1f077b9d sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x35c94109 sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x96a356aa sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xd3edb46c sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x17793ec4 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x877ba8b1 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xa387549d tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xc67cf8cd tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/mfd/twl4030-madc 0x9effbf1a twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x592b0151 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0x0b8d969c bmp085_detect +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0x1cebe280 bmp085_remove +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0x48ae2964 bmp085_regmap_config +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0xd86674b5 bmp085_probe +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x2f32ac96 cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x3c7dfbb5 cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x7f898824 cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xa4e095e8 cb710_sg_dwiter_read_next_block +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 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x0791d52d enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x14a5dd2d enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x2912e525 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x3bb23e02 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x86ecb9ee enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xa576accc enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xefd0acd6 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x246de9f8 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x40f8ef0f lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x65213d12 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x98efff33 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xdf918194 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xe22b6402 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xf3e57019 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xf57a51b6 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x3b301364 st_unregister +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x5339f055 st_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x322b3841 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x4727f9d7 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x554dd68c sdhci_disable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x7f307c7c sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x7f5f5c9b sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x87b60860 sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x8fe8092e sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xae07c209 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xb53e71cc sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xb7feb77b sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xe8a14818 sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x0b260eb6 sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x46409a1d sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x4d2e22e7 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x8aaf83d6 sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x95102308 sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xb9816e41 sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xd3b0b7bc sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x0461c9fc cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xc656c982 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xf97fec6a cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x0715e1a5 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x7947aa75 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x8abe65f3 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x772c1819 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x2c8ae263 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x4e17093f cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x94536eda cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1302a455 mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x153a1e71 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1b53d1e6 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x270415b0 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2bda7ba8 get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3029f5e8 mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x30566333 mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x441d049b mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x479ba2c5 __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4a74f5da mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x52e9853a mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5613c5af mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5adc2203 mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x63cee9fa mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x65ede6ac mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x689313c4 __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x692098a0 mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6e14556c unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x70b39957 register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x77bd808a __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7cd486ec get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x80bad795 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8be50919 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x91ee5115 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9f15e17c mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa19eb676 put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb4c71df3 mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb56b9514 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xba691651 mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc31d8933 register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc3ee97ed mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc6e0202c mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc832e677 mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcb7d5dac mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcd3a8bb1 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd7411857 mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe7d1e6b0 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xea3f443d mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf40e0e33 mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf5eef745 mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf9522939 mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x0bf1296c add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x28533dc2 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x8d5ecf41 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xd9b02636 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xdbd728b2 register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x89309673 nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xa122c71d nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0x5a5d048b sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x5574c429 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x5b351860 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x10f8b88e ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x244e48ac ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2b422ab6 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2b4ea048 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2ba5f651 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38a5305f ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x3b3977c8 ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x3d77d3ed ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x405b5897 ubi_get_volume_info +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 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x9f19ab50 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xa8f6684d ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xee8940a4 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf8a38aec ubi_close_volume +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x0bf93a1d free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x585e0b84 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x64b47669 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xa181c7fe c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xb41bee65 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xb4d93068 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x2f6b12ab alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x3d6c37ee safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x3e74bfb3 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x4138b980 can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x47f2f121 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x7b6400ae alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xaeae8f9e can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb38e2aa3 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xba4b6b1a alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xc3e8df20 devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd42cc3c5 open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xe767c1d4 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xeb2211db can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xee7cd012 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf7aa2342 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x13ebef0d alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x2bb2a8c2 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xd6893d14 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xdbd9cbf1 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x0cb0668f free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x2c60c336 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x5bb79ee6 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xb4156285 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x0330ec9b macb_get_hwaddr +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x5986ef20 macb_get_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x642e911e macb_ethtool_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xd53d440d macb_set_rx_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xf54ba488 macb_mii_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xf64a2be5 macb_ioctl +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xf6f4d6d0 macb_set_hwaddr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x015b2a92 mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0688b9aa mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x06f3f706 mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x070caff1 mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x086365e8 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x097f89cb mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x09820acf mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0a1c7f2a mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x13ee1651 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x15d80b64 mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x161a6a12 mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1855b944 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1935f581 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x222a22ba mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x230016c6 __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2604a84c mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x26bfd48d mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x26d49e0a mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2844e2a5 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2b345d7f mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2e902601 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2f8d764d mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x30db9f75 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x37b4aca6 mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x390172d7 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x396be588 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3de1bf40 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x41778d3b mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x41aa1d46 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x42d611e5 mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x45b03dd9 mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x46481d94 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x468f02d3 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x46e10287 mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x49bed4d6 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x509bb80a mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x517a6e13 mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x53dd2903 mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5a449a41 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5d581c21 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x628486ec mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6687f4e8 mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6a2b4ab8 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6f98c153 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x70a851d0 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x72204469 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x72dd3648 mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x72eb1ab9 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x75905457 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7bfdcd1d mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7c50589e mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7c56e7a4 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7d1982c4 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x82fd46d8 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x85f83674 mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8af70deb mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8ca874e4 __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x90a62f5b mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x942dfcc6 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x97e86712 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9db0ba91 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa0edc648 mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa245b0bd mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa487b9fe mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa799907d mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa8c16df3 mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa9c6ede5 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa9dbb26b mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xab016568 mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb0f431f6 mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb1f77cfc mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb29ad9c1 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb4ff96df mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb61677e7 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb9edf818 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xba3a5469 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbd5afba8 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbfaef91c mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc1097596 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc45aa7f7 mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc520ce13 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc6b7afe9 mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc97fb23f mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcd47ecee mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcecb75d0 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcf0bf27f mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcf6f2ad1 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcfa2fe5a mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd3ffdfea mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd6659bd3 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd6943814 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdb4bf8b5 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe45ffa89 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe66df593 mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xea465547 mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xed4e7c6c mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf04ab60e mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf302c779 mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf41ce4a1 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf52958d0 mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf7cf8c96 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfcd448c6 mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1b2a86ec mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x21e35f7c mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x24cbc13e mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x33415e13 mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3b7a4724 mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x56bca307 mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6680a742 mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6f81b152 mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7b0f7d72 mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x80499f52 mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8ab32610 mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x924b8e53 mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb4f979dd mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb783cfcf mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd6c4ef56 mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdc72b269 mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfadfb275 mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x1e0b4a15 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x7d7fd834 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xbc24a481 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xd6c9d656 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xf0229ade macvlan_start_xmit +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x0ae327d6 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x5d828182 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x93d0f7bc usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xaff5b998 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xe2c61883 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x094caa26 cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x0995c278 cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x8defc053 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xac3656ef cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xaef3ae94 cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xb03f81b6 cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xe74b93f4 cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xf5444079 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x42526fb8 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x9fc6cbce rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xbc587c64 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xc82a226c rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xedea5594 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xef29d6bd rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0077a4e4 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x139ccff2 usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1629ba6b usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x18edbb78 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2a4bf667 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x360348ab usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3b9b0722 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3c179a1f usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3e9f7fa5 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x41388a01 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5112ce69 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5516c869 usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x58b3920c usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5b3a3f18 usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x67eca6b7 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x69847b4f usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x70bc9daf usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7e0426cf usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8249ef41 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x87443073 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8955a38b usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa3e59d1e usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa9dfe87e usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xabb55382 usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb6088f3d usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xba0efe4d usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc059faf4 usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc1520b54 usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd61a792d usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd7c3029c usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe9d80fde usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xecc89fb3 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x1a93d12b vxlan_sock_add +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x1db48a05 vxlan_xmit_skb +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x5e67ed6a vxlan_src_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xb179061b vxlan_sock_release +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xccafe87f vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x04f1c0b5 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x23243aed i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x23b06b48 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x2bb655b1 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x3e1b2a4c i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x62bffc11 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x7e8c32e8 i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x88577518 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8f088147 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x94bd8f43 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa6988e17 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xbcac1ae6 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd40905b3 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe10ea317 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe1bb0a8e i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xfc640357 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x12e42c61 cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x1b997e2f cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x1ee4d50d cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x6f8334f3 cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0xc0f4afb7 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x0e8b1d89 il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x450573dd il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x8ce55df2 il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xb272cb33 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xf6629e32 _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0ad0e565 iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0d556623 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0f7e8af3 iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x10725fb5 iwl_set_bits_prph +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 0x1b2e04f2 iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2e39fb66 iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x307f01be __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3a68885e iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3c2b7997 iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3d548dab iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5cdf5cab iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5d0a212e iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x69806068 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 0x88e758b5 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 0x91e192a0 __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x99b48529 __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa1b82bfe iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xaa6d08eb iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb641b2be iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xbfb5979d iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc67c31ed iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd1c8e50f __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xdd8e61f2 iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xedc4faeb iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xffd5dba1 __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x13c0dc7f lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x26f35088 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x3058f286 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x3580e8ef lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x4139c3f1 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x41471b9b lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x49713e47 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5404381c lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x9973b613 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb16b18f6 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xbf13e796 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xc090b5aa __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xc76dfd97 lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xcffad34a lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd8cd3917 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe1e072f1 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x1cfb44d9 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x74ca9d81 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x75a45dce lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x9c1fd637 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xb550e9a1 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc4324f95 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 0xcfea362f lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xfd920152 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0xe556d478 if_usb_prog_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0xe6fdcf2a if_usb_reset_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x0a64605d mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x1073fa15 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x36b256f2 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x3a5aca56 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x3a8563a7 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x47d5f68a mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x52c23b4a mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x61b5a0ae mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x7ac2dbb9 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xad8f50f2 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb67b09a6 mwifiex_deauthenticate +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd780b1a5 mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe603e080 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xeb153d47 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x19165052 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x63732b05 p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x6a9fad00 p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x7c16756a p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x8445cf1c p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xbe15e8ba p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xd776fba9 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xe372f43a p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xf8c94afe p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0a755b57 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x136411ab rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x143459dc rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x237e081b rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2dc6aef9 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2ff71800 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x384cb50f rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3a589f5b rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x42c695c0 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x45c86038 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4b3252aa rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4f6bd2e5 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5cb2de87 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5e52806f rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5e892e17 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6377da05 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x778908e2 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7dabc34c rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x80aebc16 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x93881d82 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x99d0d297 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9af52ade rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9e9a0259 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xaaf7bff8 rt2800_get_tkip_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb2f3a651 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb49513d7 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xba0a813e rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xbe8066b0 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc598ef54 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd20c99ac rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd707201c rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd74a81e7 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdb6a8f8c rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdba755ed rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe4728bda rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe5a6f2c0 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xea9e2cb0 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xeac8368d rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0ed36cfb rt2800mmio_kick_queue +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 0x38709d03 rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x517c9ce3 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5ae60e1f rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x610d132c rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x679f0af1 rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x8083cc7d rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x88c02a99 rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xa49d504d rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xa5fc0aef rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc080f002 rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xca5a50c4 rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xd5b79693 rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x05397d98 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x08335994 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0b5e5edb rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x11e744ab rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x16ad4417 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x17fa7d73 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1b72b7d8 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x23a35dbb rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2540ac43 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2923c24e rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2e34ca4b rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x35fbf354 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3bbe1b23 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3c1d2347 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4205b029 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x45dfa67d rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4a22696b rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5a04fca5 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5f74020b rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x603098ca rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x655173eb rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x69f2fa2b rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7a32550c rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x86950ed2 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x876827f9 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8ba4a620 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9118733a rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x913df0c5 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9405147e rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x961c67ff rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9fb96ad1 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa4b95f30 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xadc6c2ff rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb4bfabaa rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb690c244 rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbb47862e rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbf270d03 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcc628a63 rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcd00f361 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd57dd859 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd7edd39c rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd9b9e5c9 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdb9b0074 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe5719e8e rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe835bd5f rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfa9f216a rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x442fb019 rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x519a83dc rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x7c930dd4 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xae2f5e8f rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xf5ec131f rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x128dd4d0 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x294e1d2b rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x7428f899 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x746ac90b rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x127b7656 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x211e5cae rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x337cb1e5 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3ddd561c rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x514cc87f rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x53b5c0f8 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x6347d5fb rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x64054502 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x7290d00e rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x836545f4 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x87a9bdab rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8e66ab9c rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8f17b6de rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xad508218 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb649402d rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb890f9b2 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x06c3b5a0 dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2f87d0e5 dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x48a2100f dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5f60fe16 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x03d813ea rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x15e20f92 rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x1c528c3b rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x1ebee41b rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x2118a8b6 rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x2a96a02f rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x2ee2c6d9 rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x3640ae50 rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x3aa09057 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x49b6a28f rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x49fa82b3 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x4f201e8a rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x50d0a9ea rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x64bb0e66 rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x66b5d57f rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6b853871 rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6ddc953d 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 0x7f6fb71d rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x8f14c79e rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x9a34e36e rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa3bad11a rtl8723_fw_block_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 0xb5c9a747 rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xc883bf93 rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd379d005 rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xe323527e rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xf6e2d7db rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xfc7b2d34 rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x00979c54 rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x03b946b4 rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x0d0b6636 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x0f9f0abb rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x1d322a38 rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x241dedc1 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x301465a8 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x36f5e288 read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x54a86414 rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x5d655f29 rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x6b4de810 rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x6cc6a122 rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x70898391 rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x837021f1 rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x9b15f106 rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xb86d725c rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xc960d90a rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xd96a6e7b rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xdd36f57c rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xfbb2c9ae rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x2b867c2e wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x67b7e622 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xa8666f73 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0158dfdb wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x01efd59c wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x027074b2 wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x029e9146 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x04d963ba wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x06901096 wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x07654ba3 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x12c1d31f wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1351e70a wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x153e2b5d wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x163ca5a9 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x167a49f5 wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x211f32cb wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2409587f wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x278cb28b wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2c85490d wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x38778450 wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x39360eb9 wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x467d2358 wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x46f63204 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x50232a0f wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x52c692dc wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x551477e6 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x572b2373 wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5db9f840 wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x65bd2e7f wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x66913bb0 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x66d59494 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x76f19927 wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x85f8a6e5 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x90838696 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9a41a264 wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9e1b4ad0 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa1758f50 wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xacd34d16 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb805a0fa wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc6e63f6e wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xda97bb24 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe55e6a49 wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xefeed908 wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfdc18483 wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xff71f346 wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0x01cc7086 rpaphp_slot_head +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0x91e4bef7 rpaphp_get_drc_props +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0xab67814e rpaphp_deregister_slot +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0xb7663497 rpaphp_add_slot +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x06d83c7e devm_phy_get +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x0c8d71d6 phy_pm_runtime_put +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x17bb6da5 of_phy_simple_xlate +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x2bb616ec phy_init +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x32cb4383 devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x38897859 phy_pm_runtime_allow +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x3958126b phy_power_off +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x3c6d014d phy_create +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x53baa676 phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x567d339e phy_power_on +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x8073bd33 phy_exit +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x82afc140 devm_phy_destroy +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x899eb73a devm_phy_put +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0x8e986a98 phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xaf478995 __of_phy_provider_register +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xbc48bc56 devm_phy_create +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xbd65b7d0 __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xcdcbe015 of_phy_provider_unregister +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xd52baf45 phy_pm_runtime_get +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xdf58adad phy_destroy +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xe67070b2 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xf09b7fe0 phy_get +EXPORT_SYMBOL_GPL drivers/phy/phy-core 0xf70590cd phy_put +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x9ab76923 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xcc772a69 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xf3db7293 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x003998ab ps3_write_ctr +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x0bdf50c4 ps3_disable_pm_interrupts +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x0e622920 ps3_write_pm07_control +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x181e55ab ps3_read_phys_ctr +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x1bcb88c1 ps3_write_pm +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x2abf1471 ps3_get_hw_thread_id +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x2b339635 ps3_disable_pm +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x3c71a6b2 ps3_set_ctr_size +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x4a24996f ps3_lpm_copy_tb_to_user +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x50488f64 ps3_lpm_close +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x58e642c1 ps3_lpm_copy_tb +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x59c54782 ps3_set_bookmark +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x5eca6711 ps3_get_ctr_size +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x60e3f0d7 ps3_read_ctr +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x6702a28c ps3_get_and_clear_pm_interrupts +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x69010c19 ps3_set_signal +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x70177200 ps3_write_phys_ctr +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0xa76ee01d ps3_read_pm07_control +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0xaa190bc1 ps3_read_pm +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0xbb72a01c ps3_enable_pm_interrupts +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0xce72c9c0 ps3_lpm_open +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0xdddfc980 ps3_set_pm_bookmark +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0xfae0ab68 ps3_enable_pm +EXPORT_SYMBOL_GPL drivers/ps3/ps3stor_lib 0x2963aae7 ps3stor_send_command +EXPORT_SYMBOL_GPL drivers/ps3/ps3stor_lib 0x44999a5c ps3stor_read_write_sectors +EXPORT_SYMBOL_GPL drivers/ps3/ps3stor_lib 0x477ec024 ps3stor_teardown +EXPORT_SYMBOL_GPL drivers/ps3/ps3stor_lib 0xb18b2981 ps3stor_setup +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x051f48fe mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x257382e7 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x3848348c mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x875d9e1b mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xaa972c38 mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x63ee2b66 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x6e7f4f0e wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x72e65ff6 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x943d15ac wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xa951f10d wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xcda18fa1 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x19535a1b wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0b3dba6d cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x15ea5aea cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1d4a0caf cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x21cd37ae cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2985ae11 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a7be5d3 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3caa6216 cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x405d1208 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x41cc99ac cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4a1cba4f cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4b5dadb7 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4d01de80 cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4d133861 cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x52a9235c cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5538ed9b cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x585a99b1 cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5b1951eb cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x67f27460 cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x687b2ea2 cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x70547e9c cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x710d285d cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x782bdba6 cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x78893689 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8093f1dc cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x844cfb6e cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x85ebae78 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9617f92f cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x995bd3af cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xaf82450a cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb664bda3 cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbee6b571 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc9b2de72 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcbb18216 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcd83387b cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xce08d8f8 cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdb912c98 cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdde0f253 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe03af85a cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe64c714f cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf0f913fb cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf17b7d81 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf844fc94 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfc8e79c1 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xffc87a2c cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x10f3ea04 scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x18e6cbd6 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 0x66168867 scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x950cfaf4 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x97adfe99 scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xc6a07c47 scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xdec155bd scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x02ea511b fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x1fbc22c4 fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x4d7d3cdd fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x5840faf0 fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x80c1c627 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x81ea6fa9 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x95475364 fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa4abf4f5 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xad5b4c9f fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb0e816c0 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xbf5195a4 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xc9e50caf __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xddc18c4d fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe03d0091 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe4c2cfb3 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xfb50e112 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x120761db iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x1c10f2b3 iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x6ce0e193 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xa514d588 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xc356d45e iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xe78f16cc iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x084e33ac iscsi_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x17dfa886 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x31919631 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3367d71e iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x356208f1 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x394fc2b6 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3e58ca7e iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3fd06f67 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4f40c0ff iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x511d6f48 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5806ee16 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x63c8fecc iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6f206c80 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x79af3dc3 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x82f2395c iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x87e1de3b iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8e67845b iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x93bb3fd5 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9fd4753e iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa38b1e05 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa5e3ed4f iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xac923f4c iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb549c950 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xba7cec2f iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc33d51d3 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc5151b90 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc6fb9cbc iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc96abd48 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcc3c1e90 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd0502aac iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd168535a iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xda2cb9c4 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xddd8f38a iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdf61750f iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdf9c5c86 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xea7510e2 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xeaecdde2 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xed804c1b iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf7425a99 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf99306ef iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfa4ed1ab iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfbbd1ff4 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfc9dfedf iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfcf59206 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x082b019b iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x0c300b69 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x130cafff iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x2fc4f926 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x53f0f472 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x5fe3c16b iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x65250bd2 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8639e7dc iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8ad7e8d2 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x980ea7ad iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa7ef0fea iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa992a2a5 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xae006c09 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xae696113 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xaf14c694 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd802a066 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf480d20f iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x087ce382 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0b6bb1b3 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x12ed04a0 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1e01b63e sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1e32bca9 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2f3cb6e9 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3194709c sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4d8e0555 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4fde4cf4 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x570095d7 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5aca974f sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5f7dd2e3 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x60c0079a sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6a9c1859 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7baa899e sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x874d3cd6 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb6dc8971 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb8ceac29 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xcdf912ae sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd647fee3 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd7de5b2d sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xde768e78 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe6f0c6ff sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe7acb488 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xea6b8d47 sas_change_queue_type +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x615822e5 srp_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x73edbf80 srp_transfer_data +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x7fe69e20 srp_iu_put +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xead2d80f srp_target_free +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xf5209915 srp_iu_get +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xfce7b754 srp_cmd_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x0b7ae4b5 scsi_tgt_free_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x1a2105ba scsi_tgt_cmd_to_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x42830075 scsi_tgt_alloc_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x6b9b2f13 scsi_tgt_it_nexus_destroy +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x7abde8b7 scsi_tgt_tsk_mgmt_request +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x8dc3117e scsi_tgt_queue_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xb6417bc2 scsi_tgt_it_nexus_create +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xbad2ef63 scsi_host_get_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xc0cbfe8b scsi_host_put_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00496388 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00794f5b iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x05c346fc iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0bd917a3 iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1434799d iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1527fcb4 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x16429d6c iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x186a35f0 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x18ef8b5a iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1a59e8b1 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x22464521 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x229f31de iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x26d4cbb5 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x29513c7c iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x31c6e206 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x33a1dbc2 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x46c8730c iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4b08aabd iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x51cd3539 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5857b27c iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5bc1784f iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6967cdf4 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6fca3c4f iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7650ed39 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x78110b10 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8dcdfd26 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8ea266f3 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9037e204 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x99d2506a iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa5e57993 iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa768a124 iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xaf4ca01d iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb805628c iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb97809d9 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc49ff02d iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd409fad8 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd515c64e iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdad033c6 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdb25ab30 iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdbd98901 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x3c62f338 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x83ef7c95 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xa35d7fcb sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xd6f3fb45 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/ufs/ufshcd 0x17713f01 ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x261d90be ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x3533fc49 ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x3ea21d76 ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xb0b28252 ufshcd_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xd50e050e ufshcd_suspend +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x17580486 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x2e726b29 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x4a309e18 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x50786eee spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xdadac030 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x07a88579 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x6339c9a8 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xa6dd1a64 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xb473bffb dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xd502f903 dw_spi_xfer_done +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x56ee0f88 ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0164a1c9 comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x04b6d335 comedi_pcmcia_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x09a0f4bc comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0a3333cf comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0bcaec9a comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0e616aa5 comedi_buf_memcpy_to +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0f61e862 comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1345cbee comedi_buf_memcpy_from +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x29420d9f comedi_pcmcia_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2962eee0 comedi_pcmcia_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2a43b727 comedi_buf_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x305d9d60 comedi_buf_get +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x306c556e comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3cf1bdce comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3e6e740b comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3f1ebb42 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x44ef388b comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4d8b2a24 comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x548bbb77 comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x57b58174 __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5c4659ee comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6364dedb comedi_pcmcia_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x64143a23 comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x67662210 comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x691ec9fa comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6926e730 comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x69a44799 comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6ad8846c comedi_error +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6db1451f comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7eb9205c comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8600966a comedi_pcmcia_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x956bb6ca comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x95b8f85e comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x96ba9ea1 comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9ba53257 comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9bab5872 comedi_dev_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa0f07eae comedi_to_pcmcia_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa41cfc03 comedi_pcmcia_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa6291b09 comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa9a5b6e6 comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xae7e4cd0 comedi_pci_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 0xd26f255d comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe2d19878 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe3911485 comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe886acb0 comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xedadbaf9 comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf96ceaee comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfdbfcbd3 comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/8255 0x20ce3186 subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/8255 0x76f52163 subdev_8255_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/8255 0x9cc170ba subdev_8255_init_irq +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x79f4a6cf addi_watchdog_reset +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x901ed0b5 addi_watchdog_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x17b2d795 amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x1e6c495e amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x49bf14b0 amplc_dio200_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_fc 0x8fb87f32 cfc_read_array_from_buffer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_fc 0x98b1cc1e cfc_write_array_to_buffer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_fc 0xe2826424 cfc_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x84478d17 das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x051f3a71 mite_setup +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x0de94341 mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x18541155 mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x1ebb7076 mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x3c28a2e5 mite_unsetup +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5c794f06 mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x7735c447 mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x7e2cd41d mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x82a7afe4 mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x90f47988 mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xa4c7097f mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xa9aa99ea mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xb201e1bb mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xb780d37a mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xbefc5753 mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xbfa83aad mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xc4fe76ee mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xcc2fde50 mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe4f1ca71 mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe8356e2e mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xf47e586e mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xfc3e6823 mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc 0x96c67d35 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x0860e9c0 ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x0b7a95b1 ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x46cf75cb ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x6c4d2a27 ni_tio_winsn +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x816491a0 ni_tio_rinsn +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x9fb63b2a ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xa8dc9487 ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xd8cbe1c4 ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x516a14ca ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x6f4f709a ni_tio_acknowledge_and_confirm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x8bbc96a4 ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x8d735b97 ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xb48e57d3 ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xded64fd0 ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x114e0a34 comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x2947c9f2 comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x8cee8f27 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x98c24306 comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x9e573dd0 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xd4820c71 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xe30a4ac0 comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0x1ca62a87 dwc2_hcd_remove +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0x2206b003 dwc2_handle_common_intr +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0xb05a818c dwc2_set_all_params +EXPORT_SYMBOL_GPL drivers/staging/dwc2/dwc2 0xc710b731 dwc2_hcd_init +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x1a1b5249 oslec_flush +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x2feda75b oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x3227a28e oslec_snapshot +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x7dc9dddd oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xb2c66001 oslec_create +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xc8b5a524 oslec_free +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xd370f679 oslec_update +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0xd7e8d814 adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/rts5139/rts5139 0xbd5a0e51 rts5139_usb_ids +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0e81c76d spk_serial_out +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0e873d20 spk_synth_immediate +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 0x258fa073 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x2961c2b7 spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x381d82fe 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 0x5d5b16aa synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x660f6001 spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x6af866b3 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9373d07b synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb35aaab9 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb48956f8 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc766ae09 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 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 0xee64c5b6 spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xfad769a3 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x28491bff usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x33994fd4 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x38a3654b usbip_start_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x432b15b8 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x71803563 sockfd_to_socket +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x7dfa6aa8 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x7e24fa3d usbip_event_add +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x97cc1e04 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xb40e0047 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xbb36612c dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xbda10787 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xdf29060a usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xf67abd30 usbip_recv +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0x9080a101 pciserial_init_ports +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL drivers/uio/uio 0x3fa38e03 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xac82a2bf uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xe6f16173 uio_event_notify +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xb0e04f32 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xf2f2f2cd usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x651f1802 ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xbc854dd3 ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x170e9bea imx_usbmisc_init +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x74750d38 imx_usbmisc_init_post +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0e5e0283 usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x19f724c5 usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1f0e57c8 usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2dd2f999 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2fe8e95e usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3c363c2e usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x44e1bc7a usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x566df44b usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6c4c97ca usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x841ee7d4 usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8528acbc usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x868d617b usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x95e74d1a usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa37f6ebc usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa3f08cf3 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa67d9281 usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbf99226c usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc12f394a usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc2a853ba usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc552368d usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc5e195b6 usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc9f16d1c usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd09b9a32 usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd62938e0 usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe29b6e87 usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe7ad55e8 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xece7ed18 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0x8e27d6de gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0xa58f3020 gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0xf1981607 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/u_serial 0xf8267f1e gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x1a2c4c4e usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x2f329b9e usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x31fc93ae usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x3dd53c4e usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x7750d40b usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x7ecef091 usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xa148050e usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xab75e6f3 udc_attach_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xe34c8a6d usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x0a5230df fsg_common_set_nluns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x141fce2a fsg_common_remove_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x1ccb58f7 fsg_common_set_num_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x2d10b6a7 fsg_common_create_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x51707c29 fsg_common_run_thread +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x6acb4179 fsg_common_set_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x7e26d4a5 fsg_common_set_sysfs +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x95fcc8fd fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x99023bfc fsg_common_put +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x9a0221c7 fsg_common_free_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0x9dc025a5 fsg_common_free_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xa46e6443 fsg_common_get +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xd3ae3b65 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xd468f882 fsg_common_set_ops +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xe4d1591e fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/gadget/usb_f_mass_storage 0xe5dc5f3a fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x14c91a06 ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0xddb50edb ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x0650192b usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x1f19a808 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x457b0152 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x4dc7ddff usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x517c6ece usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x5514e131 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x56555e97 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x658f9072 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x69a497fd usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x5e079d01 musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/tusb6010 0xc933ac46 tusb_get_revision +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0x2dad52fb usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0x89a04be5 usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0xefcbbeab usb_gen_phy_init +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0x1c0607ed isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0x901cb9f0 samsung_usbphy_set_type +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0xa2787c51 samsung_usbphy_set_isolation_4210 +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0xaf3874ad samsung_usbphy_rate_to_clksel_64xx +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0xcdb14797 samsung_usbphy_parse_dt +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0xd61eb616 samsung_usbphy_cfg_sel +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0xdb82899e samsung_usbphy_rate_to_clksel_4x12 +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-samsung-usb 0xfcdde2f1 samsung_usbphy_get_refclk_freq +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x4583a0f2 usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0c2b2d5a usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0e7cae09 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x23448fc0 usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x35a284cd usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3737139a usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4b6840d1 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4ece5f4f usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5528a3fe usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5f06b465 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x69a1a724 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x73e378e4 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x79dde0af usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7bc0299f usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8d905141 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9e44c175 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa6355b7b usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa6b0b6ed usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xaa1269c9 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe5f5d717 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf47e2561 usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf6458923 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x163a4aff usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x184079f7 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1ed33f8a usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2778215b usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2a2febb1 usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2b130e30 usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3defcdac usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x47e94d94 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4aae5d1f usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x57b2508c usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x59c1f723 usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x751273bf usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7e12ccab usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x857f7d87 usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x934b9941 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa08b6700 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb761e7c3 fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb90432d2 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc11bdffd usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc1f7d841 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe649b56b usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xfefe75bb usb_stor_bulk_transfer_buf +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 0x257925ef rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x2d2d5083 __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x2d65be77 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x2dbf9683 wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x9e937ed9 wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xdd970073 wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x03b6de32 wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0913c41d wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x16a9f7b1 wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x41f2eb6d wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x75094d7a wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x90b79900 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x9dd4998e wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb9b93043 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xba7341fa wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc637056c wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xd1e89b45 wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xe9979139 __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf02704ec wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfa90cec7 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x03eaf8b5 i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x146e0f2b i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x1e5acbdb i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x08cddad3 umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x21b5fc26 umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x2544a035 umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x359a4e53 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x4bfacf56 umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x6a2a21f8 umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x73c173c9 __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xcbb38b18 umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x02b7ed60 uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x09af4b12 uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0d4a9aa2 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 0x10cb466a uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x16321af3 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x179f06c4 uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1ded1f36 uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x313301a8 uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3e4fad87 uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3f063b3b uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x43fc8746 uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x445982f2 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4a6a1176 uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4b021064 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x558f0bc9 uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x56946b13 uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5b3d5c0f uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6185bfb9 uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x62d61bda uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6417b5b1 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x747408bf uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7893157d uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7928702a uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x816b9e92 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x83154a6d uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x910aa76c uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x92213d0d uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa4258327 uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xab62d4d6 uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xac97316b uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb5137288 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb92ad74c __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc3c24da9 uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc6b642c0 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc899527c uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xefe9f357 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf005e89e uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf685761f uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfca31f9e uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/whci 0x6f218810 whci_wait_for +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x13be1836 vfio_register_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x315260d3 vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x57284625 vfio_group_get_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x6e876865 vfio_device_get_from_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x89ac35fb 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 0xc4913442 vfio_group_put_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xdb7a2ee3 vfio_del_group_dev +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0f40755f vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1057eba6 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x17eef273 vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1860a540 vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x19995f8d vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1d608d2f vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1e11de6e vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2522953a vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2d56e70a vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x38f48a14 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3dc9142a vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5600d895 vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x56590938 vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5b4715df vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x648a3b9a vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7513aebb vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7e40e3cd vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x811b05f7 vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x95f89907 vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb0f81e37 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb4e3eb6f vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xbac91e1c vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc72e2d9b vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xcb9c66d5 vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xccd24e80 vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd14983e8 vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd526e6c9 vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd7561561 vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf066481a vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf72a4ab2 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x17395fba auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x381ffec6 auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x42a5d2f1 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x4e537b0e auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x7327de4c auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x7366e2a4 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xa069f0d3 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xc296a3c2 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xc6e0975f auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xe4186ce4 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x362b3f13 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x430eaa5b ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x66aebacb ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x98642100 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xbacdc2ff ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xc703f40d ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xcbfaea96 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0x8c633e3b sis_free_new +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0xe2fb6cd6 sis_malloc_new +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x4afb9aa3 register_virtio_device +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x6176d8c5 unregister_virtio_driver +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x708cd56d unregister_virtio_device +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0xc10115d5 register_virtio_driver +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0xcd8ea413 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x28e10ada virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x3043ddf1 vring_new_virtqueue +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x326a6671 virtqueue_enable_cb +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x369743fa virtqueue_add_inbuf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x37d1cad9 virtqueue_disable_cb +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x3eaadf9d virtqueue_get_vring_size +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x6594b48c virtqueue_get_buf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x6e660b01 virtqueue_poll +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x6fcc15f5 virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x7887dc57 vring_transport_features +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x88b34ae5 vring_del_virtqueue +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x8bc2167d virtqueue_kick +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xa762d25b virtqueue_add_sgs +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xb4b557da virtqueue_is_broken +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xe1332c86 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xe3c56c77 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xf58fcb2d virtqueue_notify +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xf5b5cf25 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL drivers/w1/wire 0x27b22380 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x3a24c31a w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x85b16c99 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xaca63dfd w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0xbc6d56a4 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xd822a791 w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xe71ff9cd w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0xed306ec0 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0xf8217afa w1_reset_select_slave +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x608d909c dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x677fceb1 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 0xf5f8cb0b dlm_posix_get +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x31e9c87f lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x3d0efb6e locks_in_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x5cb4c208 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x7280d319 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xa88886a4 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xc00f1c05 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xc5981ef1 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xdabcefe3 locks_start_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xf5d20a9b nlmsvc_ops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0013e203 nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0270a5e9 get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0657932e nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x06d33dbf nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x07515b70 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x07d8db4a nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0b2649d9 nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0bfb4a0e register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0d41d67e nfs_initiate_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x10ecd50c nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x13d4a214 nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x180770e5 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x186e3e51 nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1b78844e nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1d65a40e nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1fb4b792 nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x213f1519 nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x22881d75 nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x256ec38e nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26be7092 nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x28ae8232 nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x29d8c183 nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2a2bbdd3 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x324cae60 nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x340c24a5 nfs_generic_pagein +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x36e6774a nfs_writehdr_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x38732733 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x397e0e14 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x398418d2 nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3b2a64b7 nfs_generic_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3b3a1672 nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3bc403c6 nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3c8060d2 nfs_fscache_open_file +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 0x3f2a0f57 nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3fdaf1d4 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x44db61bc alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x459c321a nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x462af953 nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x46360ad2 nfs_pageio_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x47ef1521 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x49787274 nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4f747069 nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5022274a nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5091ef27 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x56836eb0 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x56c7e7cc nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x59e9eb76 nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5a3af5ce nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5a922cc8 nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5dd7b25f nfs_writehdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e2c9b07 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x61495578 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x67edd9ca nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6892222b nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6b40eb9f nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6e1c5342 nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6ed8e8c0 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7359d071 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x73c64a8a nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7456c6f2 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x756ec9fe nfs_pageio_add_request +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x77940192 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x79ae91d0 nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c9722ba nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7e3ca179 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7f62744c nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x803d6531 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8607fc0e nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x86217596 nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8898061c nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x892919f6 nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x89bc5a64 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8ab59816 nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8dcc8861 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8e41f427 nfs_path +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 0x94747178 nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9a35fdde nfs_file_splice_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9cfcc4a5 nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9f9e2494 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa5ddf422 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa6896af8 nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa7bf5078 nfs_put_client +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 0xa976a051 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa9b9dbac nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xae926bde nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaf12dc69 nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb051be4f nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb0582208 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb0bc4627 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb1292301 nfs_readhdr_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb1739b05 nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb6395a18 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb6d400d1 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbc2b2387 nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbd30bae5 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5e2dfb2 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc98dd6f0 nfs_setlease +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcb7aca28 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcd1f9120 nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd24ffb09 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd32ef661 nfs_readhdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd3c56564 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd3db9818 nfs_readdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd426b2ec nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd6f4195c nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd72c5e3e nfs_put_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd7fa68da nfs_writedata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdc05adcd nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdd1c9502 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe156acd2 nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe3d9548c nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe58e76b6 nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe5e3e7e0 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe8285562 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe97df122 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xea07f46c nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xebb63574 nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xec398b72 nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xef721773 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf0463089 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf0f170a2 nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf2bce385 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf8acbeb6 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfa1c70de nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb4813ed nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7ee006 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc3709ae nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfe0edc80 nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfeba1204 nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfecfb074 nfs_initiate_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x06c36816 __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0ce575df pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x106a316b pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x12180d70 pnfs_readhdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1f94d102 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x20df5118 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x253abcd3 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x25fa5957 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2d3b1101 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2ea9f7fe nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x34268007 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x362c556a pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x371adbad nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3dfe6fe3 __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x471de0a9 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4beaad94 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4e14fd06 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4e55f9fb pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x51090595 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x57cacd9c nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5fb488ff nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x62d52724 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69ec856e nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x719cbe22 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8cd1edd8 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8f179bf9 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9517d3e1 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x98b5c893 pnfs_writehdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x98f8d7be nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa49b4561 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb8c7db38 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbc49941d nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbf3e1b2f pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbfa66c60 nfs4_insert_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc17f42e8 nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc67f3611 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc6a42fd0 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe591db25 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe620bc80 nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe69bf56b pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf226d9ec pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf9976fbd nfs4_proc_getdevicelist +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x12ecbb8c nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x185efe0b nfsacl_encode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x074e780b o2hb_setup_callback +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 0x324c9911 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 0x4acf94bb o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x5dacd328 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x81a17396 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x95519a7c o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa82a8645 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xb57d0d57 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 0xbbe848be 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 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 0x2877e93e dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x36301d20 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x6a72ff75 dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x6db3ed41 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x85ac2847 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xaa317301 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x025e2d69 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0562c415 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x156d0483 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x16b2e575 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x5469ce31 ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x7083dbd5 ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x7fab1970 ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x89502fe7 ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xb4bd060c ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xd3712624 ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xdc823ea4 ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe2bd47db ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe417d940 ocfs2_dlm_lvb +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 0x149b3ec7 notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xae736709 notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x1803a6ed raid6_2data_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xe4b051cf raid6_datap_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xfdfcb8cb 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/802/garp 0x02cb9092 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0x26734e57 garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x2a46492b garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xa6e0c12e garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xfcb9f22c garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0xfe53b664 garp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x164f119d mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x2fe8da85 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x6c185597 mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0x8a0ded45 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x8cd2ccad mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0xd00ba5be mrp_register_application +EXPORT_SYMBOL_GPL net/802/stp 0x5fe68ddb stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0x910add03 stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0x128b4362 p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/9p/9pnet 0xb55bf1a7 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 0x916aa325 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 0xa807489c bt_debugfs +EXPORT_SYMBOL_GPL net/dccp/dccp 0x046da683 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x086adb92 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0x087f816a dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1349a619 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1b581a1f dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2251bd57 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2b837e59 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2c70733e compat_dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x38ff2cc1 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4064b5a6 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4c8bf1ec dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x50978796 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x58484fec dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x636f4064 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x74dfd2ed dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8039ef69 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x82f6b18b dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x93136297 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x978607a4 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9cebdc03 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa3fa5275 compat_dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xae0c5c31 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0xaf534625 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb3ce4590 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbc712d5c dccp_insert_option_elapsed_time +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc0b7b890 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc454a111 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd2ddae0b dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd7b032ba dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdc4a7fcd inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdf4f7be7 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe0071da5 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe49bb805 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe4d0dd34 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xed66bcff dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf3017e21 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf6afef84 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfe58a89a dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x1765e070 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x1b8c794c dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x649e7a49 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x9e9d0b61 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xc33f86fe dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xc536c6fe dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x445535a6 register_switch_driver +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xab83ae66 unregister_switch_driver +EXPORT_SYMBOL_GPL net/ipv4/gre 0x0cc1d71c gre_cisco_register +EXPORT_SYMBOL_GPL net/ipv4/gre 0x22cbf00f gre_cisco_unregister +EXPORT_SYMBOL_GPL net/ipv4/gre 0x52d61e65 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x9291a6a3 gre_build_header +EXPORT_SYMBOL_GPL net/ipv4/gre 0xae32ecab gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x01e663fa inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x30e9b298 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x43017d95 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x5b4f378b inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xae986330 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xebf17d5a inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x23194429 ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x3368a686 ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x39ed6e7d ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x49122096 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x50f1e3e3 ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x5fe27dec ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x74bce1a0 ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x808f55ae ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x85f184f0 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x99247046 ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xb8e3f774 ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xcf5f8a93 ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xeb2789a7 ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf51d52cb ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x8c571c04 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x690be221 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0x6d40a921 need_ipv4_conntrack +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x05c99afb nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x16f069aa tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x38bf11e7 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x52dacdb2 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x64248eaa tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xd3f9dfac tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/xfrm4_mode_tunnel 0x30f54dd5 xfrm4_mode_tunnel_input_deregister +EXPORT_SYMBOL_GPL net/ipv4/xfrm4_mode_tunnel 0x5655db06 xfrm4_mode_tunnel_input_register +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x534108bf ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x562b9964 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x6bf59efb ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xa6c81b41 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xf1a5cb77 ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0xd990da65 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 0x2ac31dd9 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/xfrm6_mode_tunnel 0x1214ee95 xfrm6_mode_tunnel_input_deregister +EXPORT_SYMBOL_GPL net/ipv6/xfrm6_mode_tunnel 0x80a77f8e xfrm6_mode_tunnel_input_register +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x095e50cf l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0a7247fc l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0c02955b __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0e960662 l2tp_tunnel_sock_put +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x2c29f645 l2tp_tunnel_sock_lookup +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x45f81044 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4603939c l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4b50fd88 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x5ac5bcff l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6075b09a l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x64d0c761 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6757efbc l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9588a4c4 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa2329af5 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa839bc77 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd497e987 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd9d3bf03 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x6e1d10de l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x0439b1fb ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x110ae608 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x165827cb ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3663a36d ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x42224262 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x490a7143 ieee80211_iterate_active_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x4bb943dd ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x4bf42798 ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x4e14bc0d ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x52b0d0cb ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5d38f601 ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x6e58768b ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb9d0df7e ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc749c0a8 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd6b7a7c4 ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x0080522f ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x2470a8d9 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x36265f24 ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x45d9be94 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x46909deb ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x4849087c ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x4cb691fe ip_set_nfnl_get +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x51118197 ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x519bc1ef ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6e618496 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x709eab7a ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x8c7d75a6 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xb38169ae ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xb4dc0d03 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe05ec6cb ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe3628c7b ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xef13ebbe ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf3b4d4ae ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x40e770c4 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x58a98090 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xa1e7b15d ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xf2aaf22b ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00002aaf nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x01f84db5 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x02f54191 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0bc181a1 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0e266951 nf_conntrack_tmpl_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0ed87908 nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x121d0285 nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x204fbeb9 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x210daeb1 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x26c9cae5 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x29bf0679 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2c309d53 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x32da4a89 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37aadc6a nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3a1eb832 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3ac44d86 nf_conntrack_flush_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3cee1b8a nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x40ba52d6 nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x41ca6fb9 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x42a29273 nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4b74ce47 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4bb96911 nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4e964e95 nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x517de730 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5531aa8e nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5ce2bc4b __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x64aaa9d7 nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x66dba170 nf_ct_l3proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6bd8366b nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6c8f7d3b nf_nat_seq_adjust_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6d4be4ac nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6f7f3dad nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6fff8279 nf_conntrack_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7073c990 nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x74075b0d nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x75c2db5c nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7f8efaac nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x820398a2 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x88e1cb43 __nf_conntrack_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ac8e326 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8f559e3b nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x943a60fc nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x984ceb70 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x99ecd9eb nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9b22176e nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9c62ee2e __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa11ba1f2 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa60c027e nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa70331bc nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab1437cb nf_ct_helper_expectfn_register +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 0xb038b5a4 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb19282ee nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb2520b92 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb52dc142 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xba3f87cc nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbad6dc07 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbbdec031 nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbe1eb37a nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbe322d8a nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbf35edac nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbfc45f2f nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc121b50d nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc3f00cef nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc794b0d0 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcaa9c5e0 nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcabe824a nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcc1ec929 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcd147f0c nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd71d65ca nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdf39a298 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdf504807 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdf8ab5a6 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe00360e5 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeccbba11 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xefc62daf __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf289e666 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf350bc4c nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf89641eb nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf989fc39 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfd29f90f nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x816580ff nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0xa0177a89 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x6c02ff1d nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x160e7002 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x21ee15c1 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x5476f40f set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x7e7e1aee set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x94e775d3 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x992822aa set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xc7e434af nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xdb1a991d get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xeebd9a9c nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xf10892d1 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x92918ddf nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x77601708 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xe078a559 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xed586e4e nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xfe31e40d nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x03860e0b nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x877b0bd8 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x291c4348 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x820e5c7b ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x845c1140 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x9bbdb0c8 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xae070d10 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xf25a9e9a ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xfa624855 nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0xc4d25475 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0xcdcc145e nf_nat_tftp_hook +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 0x3936392e __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x4cc0922e nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x72bee360 nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x94e3f60e nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xa2339a2b nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xb9e96073 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xd1a6fc53 nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xfd42a957 nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x11a006b5 synproxy_check_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x1ce4aad2 synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x5f339439 synproxy_build_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x90298227 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb42e336a synproxy_options_size +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xc6ac2ff6 synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xef7db50c synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x037e3aa1 nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0fda3c99 nft_validate_output_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x19d78a08 nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2ada8e6c nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3d49dab7 nft_validate_input_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x4de35c46 nft_validate_data_load +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x58d8706b nft_do_chain_pktinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x637ecb9f nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x69e445e7 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x8bafc2c9 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x95fe7e24 nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x9b62949f nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x9b774081 nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcdf373d0 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe9d2e156 nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x078af3cb nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x54a51e77 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x995d8eee nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xb8689d76 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xbae54ee2 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdbe0cf9c nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xe274f9c8 nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xcfc4f043 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x1770a60d nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x04b60440 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x06eb0f39 xt_compat_match_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x12b15503 xt_compat_target_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x161d1417 xt_compat_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x24c8e482 xt_copy_counters_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x39c9b9a9 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x3bc00275 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x4adb4498 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5f82f1f7 xt_compat_flush_offsets +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x61627bfb xt_compat_match_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x621aadd6 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x691a6d69 xt_compat_calc_jump +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x73cfa7c2 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x77933f45 xt_compat_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7c072b85 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7e48d648 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8abc54bf xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9485e163 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa1a3030a xt_compat_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd2cc4121 xt_compat_target_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd50ad73f xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe0b4971b xt_compat_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe1dc4a96 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xec24fd82 xt_compat_add_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xfabb19a7 xt_proto_init +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 0x340debe8 nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xf4879fcb nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xf702411d nci_spi_send +EXPORT_SYMBOL_GPL net/rds/rds 0x003bac18 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x152a3754 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x4a6b7913 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x533b28d9 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x6ac3863a rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x6c98b6c1 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x733a0b7d rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x789a5a25 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x7bc62829 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x87fc99ce rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x9634828e rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x9c7e0781 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xa43f3c31 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0xa59e8965 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0xb8e4d16a rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0xb9c6c5ed rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc2de8a4a rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xc97fbe91 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xde959b9a rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0xeccaf9e3 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0xeec620a4 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0xf05f18c3 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0xfc6dc7c1 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0xfefd1bd3 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xa0125b28 rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xebef2e59 rxrpc_register_security +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00c52ef5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8ebbaeab 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 0xd6c1b0c3 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xee228893 gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00c55f17 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x01c08de4 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x04d50cf8 xdr_enter_page +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 0x07350b0b svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x075145b2 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0756eee9 xs_swapper +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x078a1d6b svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x09cad03b rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x09da6cce svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0cf54915 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0e9b8233 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x11efaf9e rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x157f9834 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x15b6bc68 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x162d17ae rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x16e81295 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x18405670 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b4584b5 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ba320cc svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1cf0b4f9 rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e3daa5a svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f2a9970 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f44089b rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f9c0b4f rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x203adf6e rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x206374ff rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x24260b4f xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x26d556e2 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2780278d rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x28ee825c sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x29d295d9 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2a7c35ac rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2bbe9a30 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2c6a4f67 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d308384 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e76bbcd xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f4baf03 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f884c2f xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32921f95 rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x334cdd95 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3371bd94 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x33fe9da8 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x34ae9195 rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3a40aa70 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3e9e34a5 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x400819fb xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x416cc926 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x44e952c3 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x45a56c13 rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x45d91f16 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4733b619 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x474e0622 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4a752002 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4c434dc6 rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d3d7c07 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4e8cca2e rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4f074622 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4f2902fc rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x54f5e0a3 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x56091500 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x565a286a xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x56d22466 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x58d39a4f auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x598e986b rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5abab38f svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5dac0e68 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5f437574 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60074bcf rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x630ded33 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x634278a7 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6397242f csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x64c73563 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x68432da2 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a0d4344 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6ab884e2 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6b56e90c xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6bc9d259 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d94c8d3 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6dfffbe8 rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6ffcadee xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x70845355 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x70da367f xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x70fb0a86 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71085593 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7108a62d auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x744d9d90 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7452a902 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7708ced9 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77663dad xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77a8dcff svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77f549e5 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a8fe052 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7fe48b7f rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x813b7ccb svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x81943b3a rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x82e28e85 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x82f94ee6 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x848d8b4b rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x86ee1c5a svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a078346 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ea34719 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ffcebd8 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x91fd26f0 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x92dab90a xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x93a27c9a xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x947eeb53 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x95419ac7 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x96ce0139 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98534c1a rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9aa4e18f svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9bfad2cf xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c7bd907 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d3fd555 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e0fea92 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e80f9e5 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9fb00309 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa23a185c xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa293dbad cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa32601a8 rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa345867b cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa3777210 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6c6e2d1 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa79d4659 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa7c64ab4 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa99d5475 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xab9c0c81 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaba4314d svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xabb2ef55 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xac341ee0 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xad9335ed rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xada46202 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xae349d06 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb1d8adf3 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb3df29a1 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb5ad0c67 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb934dbb4 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb93ac6ce rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb94bcb05 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe35424f rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12118dc rpc_mkpipe_data +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 0xc3fee2e3 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc40f4d01 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc425e840 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc4f09b0f svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc627daa7 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc70810ad rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc7383a06 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc7eefb62 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8be9f77 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xca4aefa0 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcae21c79 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcba40081 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcff5c2de svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd0edc504 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd1aa9600 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd21bb704 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd22f26d6 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd40fa923 rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd4873ece xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd782562d rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7b489e5 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd927acbd xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd9e95ce4 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdac0e7a6 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdde77a75 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xde669d5e svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdec09417 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdff7b430 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe0d6dd36 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe15352cb rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe7c49977 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe7fdb50c xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xecd056b2 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xecfb5e2f rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedd531c0 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf1421cb0 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf424938c xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf48f5a25 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf8bcabad xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf91331de rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9ea2138 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb95a3aa rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfc74cadd gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfc8d88bb svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe2cfc2a rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe42349e svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe433690 rpc_call_sync +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 0x23566685 vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x33cb7ecd vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x43948c05 vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x59d943c8 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x61c25e19 vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x751ff010 vsock_addr_unbind +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7dd6a5e5 vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x96e30977 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x970b77bc vsock_pending_work +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x9a1915f5 vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xb1aca3d6 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xb324aa0f vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xb8318158 __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc17ab2ad vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc321417f __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xedd03478 vsock_stream_has_space +EXPORT_SYMBOL_GPL net/wimax/wimax 0x0491984e wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x131a289b wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0x1dd22993 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x3c324c05 wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x472f8a3d wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x6c092209 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0x6e0fb399 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x8810552e wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x8a043985 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x91445d11 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0xb8465521 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xbb86901b wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0xde34a9a7 wimax_dev_add +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x17bf90bc cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x2fcb9d96 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x48057477 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x6cb8155d cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x81079158 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb512044c cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xbfcd57f3 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd2dea8ee cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd567d101 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf8246da7 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xffd24bb2 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00778770 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x056bb269 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0a575945 xfrm_count_pfkey_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0b9e5852 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x74e1a843 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7c30b8c7 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x92dbc6c1 xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xbc8b0f41 xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xce7a55c1 xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xe122af95 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x089c3fec ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x1ecfa20d ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xcfcad83d ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xddaf3166 ipcomp_init_state +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x022860bd aoa_snd_device_new +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x50119419 aoa_fabric_unlink_codec +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x569749bd aoa_snd_ctl_add +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x58601b14 ftr_gpio_methods +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x634ae94e aoa_fabric_register +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x648b704e aoa_fabric_unregister +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x70e78857 aoa_codec_unregister +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x93d4dd7b aoa_get_card +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xc4b1d112 pmf_gpio_methods +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xc65f2410 aoa_codec_register +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x432328fb soundbus_dev_put +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x7492681e soundbus_dev_get +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x98f4ab42 soundbus_add_one +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x9fb5fead soundbus_unregister_driver +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0xa35ac5c6 soundbus_remove_one +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0xdaf2f8b2 soundbus_register_driver +EXPORT_SYMBOL_GPL sound/core/snd 0x1085cc77 snd_kctl_jack_new +EXPORT_SYMBOL_GPL sound/core/snd 0x3ca17104 __snd_printk +EXPORT_SYMBOL_GPL sound/core/snd 0x3caa0872 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0x55983f2a snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd 0x55ade23e snd_kctl_jack_report +EXPORT_SYMBOL_GPL sound/core/snd 0x9ad413db snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x42126b34 snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x5c205856 snd_compress_register +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xfe20f661 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 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa518c608 snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xec8b4ac1 snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x36739df9 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x4f14e8e5 snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x8790e7e1 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xb782fe7d snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xd6f87e9d snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xd84524cf snd_ak4113_create +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x01b57e55 snd_hda_jack_tbl_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x049e435b snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x05344a77 snd_hda_build_controls +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 0x0840ad95 __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0970455b snd_hda_queue_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x099891fb snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0b148719 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0bd769f9 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0c861d17 snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0c87216f snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0cd54721 snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0ed90184 snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x105c523d snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x14df37b8 snd_hda_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x14eed969 snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x19d1a3ca snd_hda_bus_reboot_notify +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1a024357 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1aa98dc2 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1ad85c76 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1b6d0bce snd_hda_check_board_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1d271751 snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1eb3e738 snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x24911ee7 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x24d73b10 snd_hda_ch_mode_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x25258101 snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2604696e snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2679ceb0 snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x268a0ae5 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2734432c snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x27d70dea snd_hda_query_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2abe8711 snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2de10daf snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3004e2ef snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x34330dbe snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x34bfeb21 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x35fb6959 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x35fd8174 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x37816e1d snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38231d6a snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x39c3b3fe snd_hda_ch_mode_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3a53b040 snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3e88aeb5 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x413b5119 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4456c9f3 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x48008a22 snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4a40aa48 snd_hda_query_supported_pcm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4a59a780 snd_hda_codec_flush_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4c7cc75f snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4cafa267 snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4d1f6450 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4dab1f60 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x505ac9a8 snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x506b80c9 snd_hda_parse_generic_codec +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x52966356 snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x590fb696 snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5d598222 snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x64894427 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x64b47dca snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x65542790 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6ba4ea9c snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6d81422d snd_hda_is_supported_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6e686715 snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6f629564 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x721bc597 snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x72817910 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7334cadf snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7441c320 snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x76dc6871 hda_main_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x779efab7 snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7b7d54bf snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x80cca688 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x81425c2d snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x837646ca query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x85615652 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x871a6e44 hda_extra_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8887e303 snd_hda_codec_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8900e2f3 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8aeeb16f snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8c85fcd0 snd_hda_add_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8cb442d4 snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e4c6826 snd_hda_calc_stream_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x91ebd7e2 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x96b321fa snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x97e39b1f snd_hda_override_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x98d08e9b snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x99d62669 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9cc60a36 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9d63ac2f snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9dc8cca1 snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9e11c129 snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9fab9568 snd_hda_sequence_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2827d76 snd_hda_get_jack_location +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa297648b snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2e66856 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa5011738 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa6a42b29 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa94edf59 snd_hda_get_sub_nodes +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaa1d60c5 snd_hda_codec_resume_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaa5be01f snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xac0cadc7 snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaea5237f snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb2bc3fcb snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb44d460a snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb69d5b54 snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb6f9dc91 snd_hda_codec_resume_amp +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb78a9ec5 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb8ddef8c snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb9852a8b snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb9e87936 is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbce1fb85 snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbff00880 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbff912d2 snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc34ac180 snd_hda_delete_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc571acef snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc5c03407 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc652fd69 snd_hda_get_jack_connectivity +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc67d0f36 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc92b9958 snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc9cfc513 snd_hda_bus_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xca561ccb snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcaab23d0 snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb301b6e snd_hda_get_jack_type +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcc822549 snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcdfabf31 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcf37215b snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd0519d5c snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd1986b8c snd_hda_resume +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd44894f9 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd5151aae snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd55f21e1 snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd7861a1b snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd85fd92c snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdb31e47f snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdccdd002 snd_hda_ch_mode_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xde3c6aa2 snd_hda_suspend +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xde6bef3a snd_hda_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe0aa6749 snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe3732f0a snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe3bdf0e2 snd_hda_check_board_codec_sid_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe48c532f snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe6d560d8 snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe72bbbf3 snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe769d8a1 snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe7e4abaf snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe8d25dd5 snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe96d4dbe snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xea41d500 snd_hda_gen_spec_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xea9ec2ea snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xec88bfbb snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xed1a21e0 snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xefce0acf snd_hda_codec_amp_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf0c52858 snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf5473630 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfa411618 snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfaff657b snd_hda_codec_update_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfb2c0589 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfcb02029 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/soc/atmel/snd-soc-atmel-pcm 0x070bdc98 atmel_pcm_free +EXPORT_SYMBOL_GPL sound/soc/atmel/snd-soc-atmel-pcm 0x78b6d583 atmel_pcm_mmap +EXPORT_SYMBOL_GPL sound/soc/atmel/snd-soc-atmel-pcm 0xae685725 atmel_pcm_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x03e45054 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x059d8a4e snd_soc_dapm_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x06dceffb snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x07119957 snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x08d2e84d snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0907c6c5 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x092355e4 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0d3f5f04 snd_soc_put_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0ddc40b6 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0f5233cc snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1047a84b snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x105b82ea snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x105c1301 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x17420a75 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x17e71f4d snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1862fe14 snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1b7d1613 snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1d7eb495 snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1f3ffa91 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x21555ab0 soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x22d21dab snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x25ab228d snd_soc_codec_volatile_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x28b6f0ad snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2c461d89 snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2ce66fe2 snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2d48e538 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2e387790 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2e7ae18c snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x319d1997 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x34be899e snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3558c3d8 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3593501e snd_soc_codec_set_cache_io +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x35c93b0c snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x35e7e771 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x36c4ef43 snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3a3b2322 snd_soc_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3bf0ee48 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3d3ce19b snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3f53acc9 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x409e7399 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x40bb4af9 snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4629c99f snd_soc_update_bits_locked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4737c799 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4791f3e4 snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x49e9fdba snd_soc_codec_writable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4c563bcb snd_soc_dapm_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4de4109b snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x525f332d snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x53bd98ce snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x54887940 snd_soc_codec_readable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x575a4bc1 snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x602269fb snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6178761d snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x63525749 devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x64691c97 snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x646c50e4 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6696ca62 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x67d7178d snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x67df5f9e snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6932db44 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x69743941 snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6c3e877c snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6e87da5c snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6f3e6493 dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x75d19e86 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x780340ce snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x799cfc7e snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7a79a904 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7aa10a6a snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7c14a231 snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7d1aec4d snd_soc_cache_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7d646ca5 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7d66c2b2 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x823f49ed snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x84a9f14a snd_soc_cache_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x859dcc30 snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x864bd046 snd_soc_cache_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x87a0416b snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x893de5a6 snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8e4cc998 snd_soc_lookup_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x901c26c6 snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9039ebbe snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x91a2992b snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x92ee810f snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x93020fd4 snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x940dac2a snd_soc_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x97c95f5a snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x98332625 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9b08c9e3 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9caa3856 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9d84250d snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9e5ed2cf snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa8e7289c snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xadb9ccd7 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb5ba29d1 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb9b9b17e dapm_mark_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbce577ba snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbe1352d9 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc3361138 snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc3e4f4be snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc5e97c06 snd_soc_get_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 0xc8f9ae62 snd_soc_remove_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xca482a79 dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcb699d95 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcb9348f4 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd046bf9b snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd40e90e2 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd66aad40 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd695aa7c snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd73f2465 snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd88da1e8 snd_soc_get_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd8e66bdc snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdb279829 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdcb8ff2f snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe5de3c64 snd_soc_add_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe607d284 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe64bdedb snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb6c6a4c snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xebf504ca snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xed705608 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xedf73cf8 dapm_mark_io_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeedde4ad snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xef33ea59 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf3c72cf5 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf4513df1 dapm_reg_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf47ec5e1 snd_soc_dapm_put_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf51c2cc2 snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf6195ce2 snd_soc_dapm_kcontrol_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf68cc9b2 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf76414c7 devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf8341df7 snd_soc_dapm_get_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf9c184b0 snd_soc_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfa8118cd snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfc0a17c4 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfce3552f snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfd305aea snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xff2be5f2 snd_soc_info_volsw_s8 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x00000000 compat_alloc_user_space +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x00000000 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_spu_syscalls +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sigset_from_compat +EXPORT_SYMBOL_GPL vmlinux 0x00000000 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x001f71fb inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x002ddf1e usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x006bc072 hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0070ef14 __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x007c7481 alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0x008c1456 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x00929818 devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x00c4dc87 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x010604e8 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x010e7d23 tpm_dev_vendor_release +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x012c19f6 rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0x01345990 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x013ad4ba ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x016b9418 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x0179e911 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x017fecf8 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x01d46dae xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x01d67d8f iommu_clear_tce +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x0208c05a __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x020b3a12 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x0217187b cgroup_taskset_cur_css +EXPORT_SYMBOL_GPL vmlinux 0x021ebfda btree_update +EXPORT_SYMBOL_GPL vmlinux 0x022baa70 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x023a226f PageHeadHuge +EXPORT_SYMBOL_GPL vmlinux 0x0259b33f devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x0261e04b regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x028dd1b8 tpm_remove_hardware +EXPORT_SYMBOL_GPL vmlinux 0x029a4c81 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0x029eb1a9 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x02c0a4d0 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x02e7c0ab regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x02f795cc gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x03173ca6 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x031e2b58 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x0334ec6f jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x03419a12 pmac_i2c_get_controller +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x034f685a adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x0359b6c1 rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0x036503c5 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x036c2949 sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0x036f031a sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x039f4f84 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x039f9b30 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0x03bf1d5e gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x04154246 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x04486e88 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x044bb3ad get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x045794f4 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x045a1972 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x0475e7ea wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x047df699 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x0488c7e8 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x04b5549c __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x04c200e1 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04db7ce8 relay_open +EXPORT_SYMBOL_GPL vmlinux 0x04df8fbc lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0x04e9518b fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x053494cb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x05669eaf regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x0567335d sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x05805373 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x0599776c crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x05b2873c thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0x05bfe3bb platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x05d7c87d ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x06091b7d usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x061dee59 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x06223edd ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x06418ffc usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x06484859 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x065125ce ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x06609ed4 regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x066f188d crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x06905550 pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x069777ab debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x06b6dc37 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x06c129b0 sec_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x06c4b009 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x07153682 arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0x0716439d __scsi_get_command +EXPORT_SYMBOL_GPL vmlinux 0x072edd79 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x073c3fcc sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x0740f8dc rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x076ced9b ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x0791f078 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07b76086 sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0x07cbdc6f ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x081b6ba4 pci_msi_off +EXPORT_SYMBOL_GPL vmlinux 0x0866ff24 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x08778bd4 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x088bfa7e cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x089ef691 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x08b4c19b crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x08bc0870 compat_put_timespec +EXPORT_SYMBOL_GPL vmlinux 0x08c4f698 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x091c824a machine_power_off +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x091f3d55 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x09376b10 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x09446897 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x09469482 kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x096b0c11 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x097085da sync_filesystem +EXPORT_SYMBOL_GPL vmlinux 0x09bcfb84 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x09be89d6 dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x09d54177 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x0a02811c relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x0a4da138 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x0a51ae5b virq_to_hw +EXPORT_SYMBOL_GPL vmlinux 0x0a690047 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x0a7c9073 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x0a8f3af3 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0a9fd3c5 gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x0aa05c83 pmac_low_i2c_lock +EXPORT_SYMBOL_GPL vmlinux 0x0aef37e2 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b245abb inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x0b583976 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x0b617bd0 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x0b6d4ba7 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0bae62b1 ktime_get_monotonic_offset +EXPORT_SYMBOL_GPL vmlinux 0x0bae708c of_pwm_get +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 0x0c558464 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x0c74b285 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x0c9d764d usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x0c9ee278 arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x0cab8916 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cc5b466 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x0cce0227 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x0ce0d782 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0d4cf908 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x0d737211 ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x0d759fb1 mmc_send_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x0d77d3bb pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0d81cf14 bio_trim +EXPORT_SYMBOL_GPL vmlinux 0x0d934edd swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x0d9438af usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x0dad1d56 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x0db4c26e cgroup_taskset_next +EXPORT_SYMBOL_GPL vmlinux 0x0dd53ff9 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x0dd6e7ba ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x0dd98f84 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0de06988 cpu_first_thread_of_core +EXPORT_SYMBOL_GPL vmlinux 0x0df952f1 pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x0e0045a5 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0x0e3abe39 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x0e43b133 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x0e50eb9a public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0x0e578409 skb_gro_receive +EXPORT_SYMBOL_GPL vmlinux 0x0e6e80ce __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x0e72f2ff page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x0e765b51 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x0ea06beb fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x0ea0ad42 tpm_register_hardware +EXPORT_SYMBOL_GPL vmlinux 0x0eadd9ab css_next_descendant_pre +EXPORT_SYMBOL_GPL vmlinux 0x0eb368f0 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x0ebcea47 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x0ec9a45c devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x0ece0016 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0x0ecf823a static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x0ed9302e percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0x0ef1207a blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x0f043d43 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x0f11d1d1 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x0f327600 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x0f469f9e wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x0f590c82 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f7a1f54 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x0f7b98c0 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x0f97cdf1 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x0fa4e3e9 cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x0fa854dc device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x0fe112dc of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x0ff235f4 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x1005452e irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x100fe0c9 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x103cc53e debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x10699d00 pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0x1070b167 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x10e0cb17 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x10e31ee3 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x10ee8c01 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x10fc02cc blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x1114011d threads_shift +EXPORT_SYMBOL_GPL vmlinux 0x1137a2cf __class_create +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x117b4232 pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0x11b3df2f user_update +EXPORT_SYMBOL_GPL vmlinux 0x11d3c47d d_materialise_unique +EXPORT_SYMBOL_GPL vmlinux 0x11e6f643 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x1219a7e0 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x121cd964 of_pci_range_parser_one +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x121ed3f3 add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0x123d2e76 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x12534449 rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x1257243f __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x12aaff70 ps3_vuart_port_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x12bcd0b1 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x12c2023b vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x12e0fd69 vtime_common_account_irq_enter +EXPORT_SYMBOL_GPL vmlinux 0x13013826 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x1333d8b3 ps3av_video_mode2res +EXPORT_SYMBOL_GPL vmlinux 0x136a4ee6 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x136cb807 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x13830aed ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x13979d8e inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13ce87e8 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0x13e5ea13 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x1401c899 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x1416c8d6 put_compat_timeval +EXPORT_SYMBOL_GPL vmlinux 0x14270fc8 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0x144148b0 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x144d0f58 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x14541340 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x14543d71 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x145d3c1d dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1463036c sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x146dee2d regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x1487427e clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x1487fedc rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0x14c99401 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x14ca2f7e regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0x14f3834c __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x15026a32 snmp_mib_init +EXPORT_SYMBOL_GPL vmlinux 0x15560008 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x157d53ab rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x15a20e06 gpio_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x15c21e5e nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x15fabc94 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x16095dcc pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x161ae889 md_stop +EXPORT_SYMBOL_GPL vmlinux 0x161eef9d inet_csk_compat_setsockopt +EXPORT_SYMBOL_GPL vmlinux 0x1623d7dc of_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x163ea45a pmf_call_function +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x16540afe crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x165dc0b1 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0x16678e2e platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x166ffccd sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x1695c566 cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x16a0b1e8 iommu_tce_clear_param_check +EXPORT_SYMBOL_GPL vmlinux 0x16a46b12 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x16a47b8d usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x17531119 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x1753a32f hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x17563f7f crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x17696e1d tpm_show_active +EXPORT_SYMBOL_GPL vmlinux 0x176f40ed pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x178fafcc inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x17cf4f67 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x1813ce39 vfs_getxattr +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 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x186eb1c1 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x18939f89 pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x189f874d powernv_get_random_long +EXPORT_SYMBOL_GPL vmlinux 0x18d91d06 spu_management_ops +EXPORT_SYMBOL_GPL vmlinux 0x1916d223 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x1921eb9f wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x1934d51b pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19885bec ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19b31344 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0x19b384a5 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19b596e8 iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0x19d53859 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x1a082d69 max77693_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x1a18744a __add_pages +EXPORT_SYMBOL_GPL vmlinux 0x1a1b55c5 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x1a323362 __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x1a471100 blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0x1a6cc8d7 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x1a74bc52 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x1a8c5907 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x1aae06ff dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x1ab2c442 ps3_vuart_write +EXPORT_SYMBOL_GPL vmlinux 0x1ac717e3 ps3_os_area_get_rtc_diff +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1ad0d571 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x1af37630 tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x1b14deb5 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x1b27ec62 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x1b81bec0 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x1b8336bc put_device +EXPORT_SYMBOL_GPL vmlinux 0x1b9664d1 __destroy_context +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1ba51894 user_match +EXPORT_SYMBOL_GPL vmlinux 0x1bcc2ff1 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x1bd06aab cpufreq_frequency_table_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x1c1a9961 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c67f56b __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c9a92bc crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0x1ca2049e sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x1cd00f69 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x1cdb2147 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x1ce1205f pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x1cf08379 pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x1cf82066 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d6d5b5b rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d90ea94 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x1db652e9 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x1dc63f90 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x1ddc4ce1 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x1ddfece5 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0x1dfbcf4c mpic_msgr_disable +EXPORT_SYMBOL_GPL vmlinux 0x1dfe6cca cgroup_is_descendant +EXPORT_SYMBOL_GPL vmlinux 0x1e312dd6 rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e8fac8e wireless_nlevent_flush +EXPORT_SYMBOL_GPL vmlinux 0x1e90d6d5 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x1eb1594f gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1f15650c generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x1f1f19d1 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1f40c32c of_irq_parse_and_map_pci +EXPORT_SYMBOL_GPL vmlinux 0x1f48e68c platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x1f4b4d2a sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0x1f582c3a ps3_close_hv_device +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f883180 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1f9fe904 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x1fa378b1 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x1fa828da crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x1fcece42 inet_twdr_twcal_tick +EXPORT_SYMBOL_GPL vmlinux 0x1fda719c use_cop +EXPORT_SYMBOL_GPL vmlinux 0x1fe970cb ps3_io_irq_setup +EXPORT_SYMBOL_GPL vmlinux 0x200fe9f3 devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x2016c300 __rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x203a01a5 ps3_system_bus_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2059986f regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x205ee8d6 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x206ea493 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x207ae421 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x20ab2c2e iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0x20bc3470 orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x20bc8c4e ps3_gpu_mutex +EXPORT_SYMBOL_GPL vmlinux 0x20ccafb7 devres_get +EXPORT_SYMBOL_GPL vmlinux 0x20dcbea0 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x20e2bcaf serial8250_rx_dma +EXPORT_SYMBOL_GPL vmlinux 0x20ec7db4 extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x211850f5 htab_hash_mask +EXPORT_SYMBOL_GPL vmlinux 0x211b315e wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x21274bf1 spu_remove_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x212952e4 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0x214108ae stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x2141dbf9 sec_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x21483876 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x214fc8d8 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x2155d5bc pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x21614c89 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x2169fe8b tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x2174d556 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x2180e22d tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21d36a03 kvm_hypercall +EXPORT_SYMBOL_GPL vmlinux 0x21f0eeca usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x220c983c rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0x22235735 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x2240f596 devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x22552a4d n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x22b4a6f0 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x22bbade2 of_pci_find_msi_chip_by_node +EXPORT_SYMBOL_GPL vmlinux 0x22ff5128 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x23174a1c __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x23191b26 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x231be848 devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x234439c0 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x23697cdd adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x23904c01 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x23913308 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x239e8820 rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0x23c102aa ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x23c96c03 rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0x23cc04b6 devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x23ffe169 ps3_mmio_region_create +EXPORT_SYMBOL_GPL vmlinux 0x24011e14 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x2438d5ff usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x2447533c ktime_get_real +EXPORT_SYMBOL_GPL vmlinux 0x2473b656 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24e8d679 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x256181db led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x256e6d6d ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0x25739ac5 agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x2599e8fb file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x25d4da02 da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x25e1bccb power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x260f78a4 iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x2644a9d6 __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x26666286 pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x26805e6e of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x268443ff pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x26905e90 max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x26ad9f4b cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26bf044a pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x26c39f7f shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x26c3c0d9 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x2729f458 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2776affd blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x278adfe3 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x278ffc20 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x27abf115 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x27c0c4be eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27c54a60 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x27c63073 regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x27e7fd87 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x283a5fbb gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0x283efeab wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x283f0cda irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0x286d956f pmf_unregister_irq_client +EXPORT_SYMBOL_GPL vmlinux 0x287d0294 of_console_check +EXPORT_SYMBOL_GPL vmlinux 0x28993ec7 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x28a903c8 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0x28afbfef dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x28c140c6 usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x28dd95a4 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x28ec57b7 devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x28f26e41 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x29375864 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x29419107 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x29538b73 pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0x29560f3f crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x2988c43d fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x298b0cb1 adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x298c267d subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x299fc356 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x29a49e0f usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x29d24670 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x2a12efd0 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2ad1ece4 zs_get_total_size_bytes +EXPORT_SYMBOL_GPL vmlinux 0x2b012433 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x2b1676f9 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x2b18503c usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x2b35368a ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x2b3e08f5 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x2b5bf13e regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x2b5c303b smp_send_reschedule +EXPORT_SYMBOL_GPL vmlinux 0x2b5e0679 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x2b64bf11 elv_register +EXPORT_SYMBOL_GPL vmlinux 0x2b68bac4 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x2b7a6de8 syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x2b8b7883 extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0x2b8d90c0 kobj_completion_del_and_wait +EXPORT_SYMBOL_GPL vmlinux 0x2b96cd92 usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x2ba059de ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x2ba51a46 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x2bbfc8be sysfs_remove_device_from_node +EXPORT_SYMBOL_GPL vmlinux 0x2bca5e41 regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x2bd9339c class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x2be405f0 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2c06b8e4 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x2c204dac tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c56b2f8 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x2c5bd633 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x2c5eead7 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x2c6f49b2 regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x2c71b17e sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c97f8a2 of_reconfig_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2cc3e675 pmac_i2c_close +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cfc9cd9 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x2d17a0e1 cgroup_taskset_size +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d2498ca blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d53dbb6 srp_rport_del +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d656d3f context_tracking_enabled +EXPORT_SYMBOL_GPL vmlinux 0x2d756362 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x2d9adc2f uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2dba276a __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0x2dc5a6d1 btree_last +EXPORT_SYMBOL_GPL vmlinux 0x2dcb3eda device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x2ddd887e reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2df608e2 powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x2e0589c1 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x2e1da9fb probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2c4ab9 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e45e488 rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x2e81785e rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x2e8234fb crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x2e893150 extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ec493ff alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x2ecfeb82 of_node_to_nid +EXPORT_SYMBOL_GPL vmlinux 0x2ee20ed7 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x2ee33624 tpm_write +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f1d78b3 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f4bfb3b led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x2f5cd470 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2f88072a vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x2fca317b pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x2ff2ed01 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x2ffb5ff7 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x3006b6f5 of_pci_get_devfn +EXPORT_SYMBOL_GPL vmlinux 0x305c98dc tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0x308544f2 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x3088e7de blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x308b733a getboottime +EXPORT_SYMBOL_GPL vmlinux 0x30967480 pci_pri_enabled +EXPORT_SYMBOL_GPL vmlinux 0x30b68a5f max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x30d260f3 spu_associate_mm +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x31126c0d dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x3114a3c8 pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x311b78c2 ps3_get_spe_id +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x313ccab9 gpio_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x31720380 default_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x31807430 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x31859993 of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0x319a45e7 device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0x319e103a xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31f3a38d adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x3204d13d extcon_find_cable_index +EXPORT_SYMBOL_GPL vmlinux 0x32122846 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x321bdbb1 compat_get_timeval +EXPORT_SYMBOL_GPL vmlinux 0x322a529a ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x3256ca45 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x326b78f4 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x3289063f gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x329bbbde timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0x32a731fb rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0x32b31a8c ktime_get_boottime +EXPORT_SYMBOL_GPL vmlinux 0x32bded08 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32c80375 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x32cafc8b srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x32e90050 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x32fd447a monotonic_to_bootbased +EXPORT_SYMBOL_GPL vmlinux 0x3309ea64 ps3av_audio_mute +EXPORT_SYMBOL_GPL vmlinux 0x3310bf11 pm_qos_update_request +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 0x337be31e inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x33a94a45 of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x33bdf0b1 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x33cc15f9 ps3_system_bus_device_register +EXPORT_SYMBOL_GPL vmlinux 0x33eb93db wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x33f7ab15 get_compat_timespec +EXPORT_SYMBOL_GPL vmlinux 0x33fe080a da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x3465fce6 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0x346ed1c6 crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0x347a25c4 find_module +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x34bce4c5 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x34c99e0a iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x34dc8ff2 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x351a71fb spu_switch_notify +EXPORT_SYMBOL_GPL vmlinux 0x35287804 da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x35446667 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x3587ce23 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x3588db44 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35a8f7d6 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x35b5962f device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x35b8a50c smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x35eeaa88 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x35f10f43 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x35f165f1 devm_reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x35f86e63 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x35fad659 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3607fec7 tcp_init_congestion_ops +EXPORT_SYMBOL_GPL vmlinux 0x361a6208 iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x363bc455 regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x36649ccc ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x368f1fea static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36a89a09 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x36daaaec ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x36f63718 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0x375aeb00 irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0x37766897 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x37b48662 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x37d42c02 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x37fd5828 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x3800aa33 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x3817fa61 crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x384c0af9 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x385be6f1 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x38a9724a ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x38aaea01 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x38b12da0 dm_set_device_limits +EXPORT_SYMBOL_GPL vmlinux 0x38b90324 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x38bee75d sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x390043e6 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x39099bfd eeh_add_device_tree_early +EXPORT_SYMBOL_GPL vmlinux 0x3919fbf0 extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0x3929ec33 devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x39452a08 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x3954d825 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x397ef9ad crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x39835dc2 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x3990252e hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x39b68d06 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x39db4e22 tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0x39f61c73 acop_handle_fault +EXPORT_SYMBOL_GPL vmlinux 0x3a1f84d8 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a32204a spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a576c46 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x3a8c4323 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x3a92c352 ping_err +EXPORT_SYMBOL_GPL vmlinux 0x3a968509 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x3aa20906 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x3abfa90a perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x3ac19558 ata_sas_port_async_suspend +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ad0e201 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x3ad82802 of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0x3ae88a77 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x3af50872 register_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0x3af71475 pwm_config +EXPORT_SYMBOL_GPL vmlinux 0x3b1152b0 ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x3b1c5afc ps3_vuart_irq_setup +EXPORT_SYMBOL_GPL vmlinux 0x3b3789a0 ps3_open_hv_device +EXPORT_SYMBOL_GPL vmlinux 0x3b3ce534 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x3b55bedd usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x3b60bf16 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x3bc2dab6 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x3bc55c36 iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0x3bfdd1cc posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x3c263bbf blkdev_aio_write +EXPORT_SYMBOL_GPL vmlinux 0x3c284837 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x3c2cac8c stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0x3c5deea4 pci_pri_stopped +EXPORT_SYMBOL_GPL vmlinux 0x3c654d76 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3c78592a driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x3c8d28cc of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3cb25538 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x3cbe4ba6 rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0x3ccffec8 of_irq_parse_one +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cf69baf slice_get_unmapped_area +EXPORT_SYMBOL_GPL vmlinux 0x3d0bdcdc ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x3d0cbe56 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x3d0dbc47 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0x3d2ac7e4 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d39b6ab fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x3d3ca971 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x3d55a6ee __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x3d8cd7f2 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x3d9efc3d srp_release_transport +EXPORT_SYMBOL_GPL vmlinux 0x3da531cf regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x3daf9e4b pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0x3dc526a9 arizona_of_match +EXPORT_SYMBOL_GPL vmlinux 0x3dc7ad5f shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dd59b23 thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x3dd7382c dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x3de743d0 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3de9e00b dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0x3dead415 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x3dfde3ac pmf_get_function +EXPORT_SYMBOL_GPL vmlinux 0x3e09fe7a xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x3e27745c usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x3e299579 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0x3e2e543d cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x3e2fa31f wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3e5bf433 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e971b8d regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x3eaac2d8 sk_unattached_filter_create +EXPORT_SYMBOL_GPL vmlinux 0x3eb66ec0 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x3ed07cb3 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x3ed3bb15 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x3ee17221 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0x3ef5fc5a rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f1f4c06 ps3_vuart_read +EXPORT_SYMBOL_GPL vmlinux 0x3f3f71d8 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x3f4acd77 spu_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x3f5844a1 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x3f68de6a devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0x3f7da892 regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x3fa1da36 __netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x3fb14423 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x3fb3405c powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0x3fba5094 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x3fc72d3d __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x3fe84dfb palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0x3fef7431 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x3ff7cee5 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x40158b04 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x4024c98f regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4041da16 spu_init_channels +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x4059a3ef __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x4086314d usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40c02f62 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x40cb731c usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40e26fb5 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x40e4cd71 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x40ec3404 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x40ecb45a ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x4118219b md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x412ed228 tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x4133c8cf sdhci_pci_o2_resume +EXPORT_SYMBOL_GPL vmlinux 0x413e2d73 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x41b827c6 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0x41c6f58e rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0x41cbc32a cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x41ceeb0d lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0x41d81c5d of_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x41fbd4e9 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x4236249c device_create +EXPORT_SYMBOL_GPL vmlinux 0x42495869 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x425e7062 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x4263f10a bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x42695bad simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x426d5171 blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x42ad5cea inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x42b6450d scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x430e5257 of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0x431e1907 of_property_read_string_helper +EXPORT_SYMBOL_GPL vmlinux 0x432f3878 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x433172f5 mpic_subsys +EXPORT_SYMBOL_GPL vmlinux 0x43368d8f regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x43553d21 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x437cc2d5 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x437f70e8 dev_get_gen_pool +EXPORT_SYMBOL_GPL vmlinux 0x438b8de7 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x4395251f device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43b6b6ec __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x44404f11 kdb_register_repeat +EXPORT_SYMBOL_GPL vmlinux 0x44464108 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x4465316a usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x4468901d pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x44736ee7 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x4474c0ff extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x448e1039 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x44da2c70 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x44e1a1f3 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x44e85829 modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x44fafc51 rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x450fb522 kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x454702c3 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x454c15ae __smp_call_function_single +EXPORT_SYMBOL_GPL vmlinux 0x4559f826 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4560f0dd regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x4561e712 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x4575fd8e usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45cb72bf cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0x45d0e7fc rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x46037d64 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0x460f7531 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x46181935 srp_rport_add +EXPORT_SYMBOL_GPL vmlinux 0x461bb2ab driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x46325377 sdhci_pci_o2_fujin2_pci_init +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x4667772f anon_transport_class_unregister +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 0x4692e07b regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x46c2c686 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x46d9f955 ps3_irq_plug_setup +EXPORT_SYMBOL_GPL vmlinux 0x46eaeca5 pmac_i2c_find_bus +EXPORT_SYMBOL_GPL vmlinux 0x4711ff5a fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x4726b0a7 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x4741db42 ps3av_set_audio_mode +EXPORT_SYMBOL_GPL vmlinux 0x4754ad71 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x477a6ec6 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x479f339c dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47ac8e10 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x47acddea ps3_sys_manager_set_wol +EXPORT_SYMBOL_GPL vmlinux 0x47afa885 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x47b21077 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x47f11d38 ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x480a9e5d thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x486a95b2 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x48831749 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x488ac623 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x489f3e3b anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x48ac50cd class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x48dfbfc0 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x48e41c94 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x4902f095 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x49272845 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x4943c7a8 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x497b51b6 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0x4983aeec register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x4988f5e9 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x498d293a trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x498e33ea dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x49924d78 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x49997bd0 platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x49b629ae kvmppc_h_put_tce +EXPORT_SYMBOL_GPL vmlinux 0x49c136cd pmac_i2c_get_dev_addr +EXPORT_SYMBOL_GPL vmlinux 0x49caeef6 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x49cdf089 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x49d5a649 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x49d9d6e0 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x49f922aa tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x4a264c1f devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x4a55f272 sec_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x4a7e3a2c arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x4a8a01b9 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x4a90160e bprintf +EXPORT_SYMBOL_GPL vmlinux 0x4a90a640 dm_requeue_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4abc77dd ping_bind +EXPORT_SYMBOL_GPL vmlinux 0x4affd08b put_compat_timespec +EXPORT_SYMBOL_GPL vmlinux 0x4b4c493c css_rightmost_descendant +EXPORT_SYMBOL_GPL vmlinux 0x4b562440 cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4b617cd3 kick_process +EXPORT_SYMBOL_GPL vmlinux 0x4b625a85 rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x4b79ce54 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x4b8a1398 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x4bc62a81 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x4bc6880a of_pci_msi_chip_add +EXPORT_SYMBOL_GPL vmlinux 0x4be613c0 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0x4bf0e8ce thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4c00d636 rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x4c18f773 ps3_os_area_set_rtc_diff +EXPORT_SYMBOL_GPL vmlinux 0x4c5f760c regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c8dcd5a blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x4c917a02 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x4ca20185 nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x4ca21a5d blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x4cab83c4 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x4cc806c3 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x4cd0be82 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x4d0c82c1 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x4d172ccb ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x4d313485 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x4d345ee9 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x4d6d69bf pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4dfb1c15 pmac_i2c_get_bus_node +EXPORT_SYMBOL_GPL vmlinux 0x4e0f273a blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e1274d2 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x4e1b174a regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4e211fc7 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e34926f filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x4e67dd12 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x4e86ad7c sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x4ec7b8e3 tracepoint_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0x4ed225e0 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x4ee7d672 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x4eee1c00 __module_address +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f020dee public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x4f0c4fb2 user_describe +EXPORT_SYMBOL_GPL vmlinux 0x4fa20766 devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x4fae65a9 pcibios_map_io_space +EXPORT_SYMBOL_GPL vmlinux 0x4fb26d0c pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x4fba8fe7 flush_fp_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x4fc3aea8 serial8250_rx_chars +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 0x4fe386cb hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4ff21323 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x50108e84 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x50129bd0 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x50245a8f ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0x503d2bee rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x50401b74 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x5052bd0b power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x50601122 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x506691f1 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x507935af bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x507b67f7 skcipher_geniv_exit +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 0x509e77aa sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x509ef9d4 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x50bc007e inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x50db98de scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50fa7a9d wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x5111783e disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x513a1f3d ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x5147a00d fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x51846493 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x51a49aff scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x51afaa76 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x51b65a26 rtc_lock +EXPORT_SYMBOL_GPL vmlinux 0x51ce4767 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x51d5e385 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x51da09fd iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x51f2a8d8 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5205e64d disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x52125d25 tpm_show_owned +EXPORT_SYMBOL_GPL vmlinux 0x522f538b tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x523e9bfa rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x52ccadcc pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x52e8ccf0 save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0x52f5384c crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x52f6dab0 pcibios_remove_pci_devices +EXPORT_SYMBOL_GPL vmlinux 0x5315e260 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x531c8dbf pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x5328aad3 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x5335dd11 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x53536749 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x538519e3 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x538c580d blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x53a5cf91 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x53bb9acb inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x53bd29e1 spu_add_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x53cbb35c xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x53d3408e usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x53f40932 crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x540d0396 dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x541f1c39 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x54215db5 visitor64 +EXPORT_SYMBOL_GPL vmlinux 0x543af774 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x544d4dcb regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x546c5565 ppc_tb_freq +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x547d066a __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x549938fe device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x54e299da regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x54e310f2 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x54f8685b srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x551fa9f3 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x55243444 tpm_show_pcrs +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x5588879e kvmppc_entry_trampoline +EXPORT_SYMBOL_GPL vmlinux 0x55899e62 wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x55d0a891 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x560c139a relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x5612d360 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x561e4b77 irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x564f1dca klist_add_after +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x5692386f gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0x569656bd dm_kill_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0x569a6ec3 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x56bba94d fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x56c4fb15 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x57473650 of_scan_bus +EXPORT_SYMBOL_GPL vmlinux 0x575c5f94 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0x5772699e irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57b24d6e mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x57cddc3b wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x57d6bae8 pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0x57e0522a watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0x57eed895 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x5802d290 pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x5803c686 ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x582a6a7b usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x5846ef6f led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x587ee0ed pcibios_finish_adding_to_bus +EXPORT_SYMBOL_GPL vmlinux 0x587fd3f3 bdi_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x5892f832 release_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58b12229 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x58c7125e netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x58f9e1c0 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x58fe78ee ps3_mmio_region_init +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x590f94da rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0x5947abbe max77693_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x59867c1c list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x59b2adbf input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x59d53bfe smu_get_ofdev +EXPORT_SYMBOL_GPL vmlinux 0x59de0d64 cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x59df9616 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59e30718 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x59e5ac2b __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x59f32b30 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x5a154929 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a8f3b69 of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0x5ac84ac9 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x5ac85aff dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x5ad03934 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x5b257553 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x5b38f353 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x5b463c46 gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x5b4e379c of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0x5b997436 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x5bc2c95f attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5bd46067 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x5c1455b9 pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x5c263059 inhibit_secondary_onlining +EXPORT_SYMBOL_GPL vmlinux 0x5c65fc1c queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x5ca93699 tracepoint_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5ce7ab35 platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x5cf8a882 __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d4f2077 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5d530555 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x5d77952d hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x5d91b014 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x5db8b65f posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x5dc5e62b blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x5ddba6c8 tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x5e07f1dd mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0x5e16acd5 tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x5e16cc3a wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x5e23771b __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x5e3887aa ftrace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e58e3cc pwm_free +EXPORT_SYMBOL_GPL vmlinux 0x5e68535b crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x5e6b0aff sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x5e769986 ps3_os_area_get_av_multi_out +EXPORT_SYMBOL_GPL vmlinux 0x5e8f9b4d crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x5ea307c7 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x5ec39960 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x5ee7542e reserve_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x5ef01192 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x5ef9d472 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0x5f024515 ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x5f23227b get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x5f248f72 set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0x5f419491 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x5f4ad9a3 rtc_set_mmss +EXPORT_SYMBOL_GPL vmlinux 0x5f722e8d dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x5f79a98b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x5f8bbef6 ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x5f978901 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0x5fab5f14 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x5ffd841a __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x6013952f ps3_free_mmio_region +EXPORT_SYMBOL_GPL vmlinux 0x602c3444 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x60467b06 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x6094685f wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x6097fe20 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x609e1ed9 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL_GPL vmlinux 0x60cdbc2f unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x60ff282c tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x612ec050 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x6136f7aa platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x615a1978 iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0x6183ff15 sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0x6194903a blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x61a90c54 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x61c733bf ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0x61ca9479 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x61df601a usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0x61fc1a8d cgroup_load_subsys +EXPORT_SYMBOL_GPL vmlinux 0x6204a8df kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x6206d81e tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x620ad734 pmf_put_function +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x626fd4b2 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x6297f1c3 __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0x62dd503c regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x630438b5 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL vmlinux 0x63205de1 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x63324c3e crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x6352c9de dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x6377801a sdhci_pci_o2_probe_slot +EXPORT_SYMBOL_GPL vmlinux 0x6390efda of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0x63b0914b of_irq_parse_pci +EXPORT_SYMBOL_GPL vmlinux 0x63c19059 tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x63dacd08 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x63f96e61 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x640a1688 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x643dadc9 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x64516f68 device_register +EXPORT_SYMBOL_GPL vmlinux 0x6456f022 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x645fd668 regulator_set_optimum_mode +EXPORT_SYMBOL_GPL vmlinux 0x646b3b07 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x646b5645 gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x64870060 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x6504a293 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x6538ea1f dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x653f244e rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6556bb03 ref_module +EXPORT_SYMBOL_GPL vmlinux 0x65835005 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x65af502b pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65e8a7aa pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x65e961e1 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x66046bca usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x6618dd70 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0x662a0c3f x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x663110e1 regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x665e38aa mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x667a812c ps3av_set_video_mode +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x66980f64 ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x66a99fdd arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x66aee3ae kobj_completion_release +EXPORT_SYMBOL_GPL vmlinux 0x66afb53b unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x66b1820f xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x66b43ec9 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x672d1289 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6733ed08 thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x675afdae sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x6764291d fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x676ba7a3 of_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x677abe45 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x677ec506 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67a3e7e9 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x67f6e563 sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x6857320a usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x687934e9 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x68a172bf dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0x68d45da9 ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x69015ece shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x691df95f fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x6921aa34 compat_put_timeval +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x6925e4e9 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x69350c59 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x693d7ed4 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x693edb56 list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x696e4842 tpm_show_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x697543a1 netdev_set_default_ethtool_ops +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 0x699cb9ba debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x69a4370a gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x69b9c251 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x69bb8a67 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x69bee7c5 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x69c256cf posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x69e9a2cb ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x6a11829b fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x6a1702dd ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a300d46 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a64161a tpm_store_cancel +EXPORT_SYMBOL_GPL vmlinux 0x6a6cafd2 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x6a749beb pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a941c8f wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x6ab179ae tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x6acb8d84 ppc64_caches +EXPORT_SYMBOL_GPL vmlinux 0x6b014432 cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0x6b1986a7 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b5f7164 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x6b660246 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x6b7b26e1 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x6b84233b ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x6b93bf60 inet_twdr_twkill_work +EXPORT_SYMBOL_GPL vmlinux 0x6b94819c i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0x6b95d7ac pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x6b9da7b8 ps3_vuart_clear_rx_bytes +EXPORT_SYMBOL_GPL vmlinux 0x6ba58ccc ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x6ba95cf8 task_current_syscall +EXPORT_SYMBOL_GPL vmlinux 0x6bd7411e rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x6bdb814a ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x6bf8a679 nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0x6c110d81 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x6c1b09ab gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x6c226712 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x6c3fbd31 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x6c448efb tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x6c49c4f2 clockevents_notify +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c50f30c balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x6c6390a8 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x6c8734ae of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0x6c9af6b3 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x6ca35fee ps3_system_bus_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6cbd7ae2 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6cd4ea62 wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x6d2785b5 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d373272 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x6d476031 extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0x6d9e5425 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x6de744e4 usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x6df68296 irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0x6df8f4cd pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e13cd86 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x6e379526 kernstart_addr +EXPORT_SYMBOL_GPL vmlinux 0x6e51dd29 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x6e5bff4e inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x6e7943ec iommu_group_id +EXPORT_SYMBOL_GPL vmlinux 0x6e832120 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e8c5a7b extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x6e9ff659 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x6eacf4bf crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x6ebfb57b remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x6ec0a72e sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x6ed8a657 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x6eed0b56 irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x6efc7021 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x6f1419aa pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f55a5e1 devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0x6f579b22 thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0x6f85ab46 rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x6fca3042 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x6fd6a520 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x7006921d shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x701117f3 usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0x7036c87e class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x703ac346 tpm_release +EXPORT_SYMBOL_GPL vmlinux 0x704d6ce9 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x7056c5e4 thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x70698e56 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x706f62f1 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x70913ae4 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x70c407eb usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x70ce8d26 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70d35297 wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x711f61e1 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x712c6465 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x7137a3e1 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x71523065 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x71543d27 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x71874ae2 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x7187cd9c input_class +EXPORT_SYMBOL_GPL vmlinux 0x7190ba05 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0x71930ed3 of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x7196568d usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x719a9d69 iommu_domain_has_cap +EXPORT_SYMBOL_GPL vmlinux 0x71a45fae sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x71be7f3c ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x71cc0733 tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0x71d1f8bd led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x7216d2df ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x7232a58e power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x723374f8 pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x72357320 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0x72495262 rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x7272adb8 dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x728b2bf6 bus_register +EXPORT_SYMBOL_GPL vmlinux 0x72b963d9 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x72d78207 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x7337c385 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x734a7380 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x73510609 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x736cd280 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x736e8f09 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x739aa1a1 pmac_i2c_setmode +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73b4c328 blkio_subsys +EXPORT_SYMBOL_GPL vmlinux 0x73c2554f __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0x73c73459 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73ececf7 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x73f62ff3 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x740bb6e3 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x741d2346 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x7422c95e gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x74310332 pcibios_find_pci_bus +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x744a5288 __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0x745c8e8a ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x74628570 context_tracking +EXPORT_SYMBOL_GPL vmlinux 0x7462b308 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x74954462 timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74e06104 dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x750c5e94 list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x75133f6e visitor128 +EXPORT_SYMBOL_GPL vmlinux 0x751db89e drop_cop +EXPORT_SYMBOL_GPL vmlinux 0x75204fd9 rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x752ed802 led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x753cb774 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x7547341d bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x754846d9 inet_csk_compat_getsockopt +EXPORT_SYMBOL_GPL vmlinux 0x75561292 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x7573c639 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x757b49d2 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x759fdfc1 iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x75c6b69c led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x75d17d0b pmac_i2c_open +EXPORT_SYMBOL_GPL vmlinux 0x75e6e037 hash_page +EXPORT_SYMBOL_GPL vmlinux 0x75ed8d55 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x75f04d04 i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x75f2a044 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x762fb26e device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x766cb455 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7687dde9 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x76b1c511 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x76d07d6e gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x76d105c5 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x76d206e2 ata_sas_port_async_resume +EXPORT_SYMBOL_GPL vmlinux 0x76ebabe7 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x76fc976b udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x770701d3 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x7710ec2c noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x7712efe1 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x7724598e br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x7745a368 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x77a19ea4 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x77c86c4d perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0x77d02fbc tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x77ffdb2f skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x787c882b lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x787d3db6 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x78ac80e8 debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x78bcb8b1 usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x78e3cd6a ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x78f31ffd ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x794a24c7 call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x794ff3b4 pmf_register_irq_client +EXPORT_SYMBOL_GPL vmlinux 0x7952c7bc usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x79706b92 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x7992827d blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x799bfe20 regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x79a03c7c unregister_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0x79a1e34f __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x79a40b9a skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0x79b64e80 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x79daa15b ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x79e4cbf7 pmac_i2c_get_adapter +EXPORT_SYMBOL_GPL vmlinux 0x79edd845 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x7a0340de pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x7a16da38 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x7a1cc461 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x7a6ec0ea disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x7a78bcf5 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7a8774b7 pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7a98cd74 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0x7ab24895 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x7ab2750b irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x7ae1ae8e cpufreq_frequency_table_put_attr +EXPORT_SYMBOL_GPL vmlinux 0x7b0b1210 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b0f2127 find_linux_pte_or_hugepte +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b292d19 static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0x7b7a49f2 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0x7b7dbac1 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x7b91441d __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x7ba6b341 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x7babfe00 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x7be99141 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0x7c0f0933 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x7c237aa2 sysfs_schedule_callback +EXPORT_SYMBOL_GPL vmlinux 0x7c346357 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x7c37bc89 pseries_ioei_notifier_list +EXPORT_SYMBOL_GPL vmlinux 0x7c39e65b __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0x7c3acfb4 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x7c42c13c each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x7c58f0b1 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7c792125 devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7c9f3e69 __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0x7cc1b7fd max77693_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x7cc7de1c x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7cdbcf40 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x7cdf039c dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x7ce5b92a gpiod_sysfs_set_active_low +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7cedb14f relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x7cfda4e6 register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x7d1949b7 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x7d1b3f3e i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x7d26e52b vtime_guest_exit +EXPORT_SYMBOL_GPL vmlinux 0x7d36e534 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x7d397cc7 gpiod_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d5f9d8c rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x7d7e5507 pmac_i2c_match_adapter +EXPORT_SYMBOL_GPL vmlinux 0x7d87c133 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x7da85c12 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dacd645 init_phb_dynamic +EXPORT_SYMBOL_GPL vmlinux 0x7dd26516 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x7deebb87 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x7e17ba7b klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x7e62c99d irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e72f4a3 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x7e87a846 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x7e9b416b pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x7ea1a2bc probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x7ef21984 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x7f000dbc pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0x7f008202 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7f0497be spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x7f0a2106 tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x7f153895 iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0x7f23aa39 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x7f2b0027 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x7f3e842d regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x7f4b899d sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x7f52c522 ps3av_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x7f76e82d usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x7f7bc710 klist_next +EXPORT_SYMBOL_GPL vmlinux 0x7f8afba3 devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x7f8d3a17 user_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x7f8da0e2 regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x7fa4b4a2 of_pci_parse_bus_range +EXPORT_SYMBOL_GPL vmlinux 0x7fb3addf ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x7fcc0b28 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x8006d43d cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x80507f72 ps3av_audio_mute_analog +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80a3a51c sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x80ae54e4 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x80bb6819 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x80d3927f __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80e86a0b mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x8114b8d6 md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x8126c176 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x8140842a gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x814c9cae __online_page_set_limits +EXPORT_SYMBOL_GPL vmlinux 0x81cacc30 force_sig_info +EXPORT_SYMBOL_GPL vmlinux 0x81e82c54 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x81f45c82 of_usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0x822ff228 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x82321d39 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x82939ebd rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82d8607c sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x82e6d85f usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x82f9806c mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x8301ab90 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x833cd9f2 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x834616bb sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x83599337 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x836d61d0 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x83759927 iommu_flush_tce +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x839ed005 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x83c439d0 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x83d0f911 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0x84017e47 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x840e78b5 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8413f9eb blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8420bccd cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0x843a1b43 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x8461e120 ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x8487a2b6 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x8487d4e3 extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x848b7b77 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x84d06461 regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x84d9decf kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0x84ec3270 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x84fb2f37 pmf_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x85044ff3 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x850f9366 sysfs_notify_dirent +EXPORT_SYMBOL_GPL vmlinux 0x852e568d of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x8551c332 iommu_tce_build +EXPORT_SYMBOL_GPL vmlinux 0x85878afa ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x85c10896 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0x85c26e52 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85f3d8d2 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0x8652dac6 cgroup_taskset_first +EXPORT_SYMBOL_GPL vmlinux 0x866b9687 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0x8677b92a cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x869685f9 cbe_spu_info +EXPORT_SYMBOL_GPL vmlinux 0x86ab92de usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x86b5862b netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0x86dbdd4f user_read +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86fe01be cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x8702e548 process_srcu +EXPORT_SYMBOL_GPL vmlinux 0x872473b6 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x87317c02 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x873edda1 blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x87bb4e32 of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x87dce81d wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x87ef0cb4 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x87fa2a79 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x8804af3d usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x88146857 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x8822406a spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x88234bf9 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x8834a9ec wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x887e0f6f single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x887e51a0 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x889d77ce blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x88aa263e serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88cc96ed fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x88dab168 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x88ebd723 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x88efb83f task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0x88fb27f1 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x891adf44 devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x8930b631 regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x8934c9fb bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x894fda5e ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x89a14144 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x89a261fa bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89c0df60 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x89cdf318 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x89ce3225 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x89ea7fb3 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x89eb23b8 device_schedule_callback_owner +EXPORT_SYMBOL_GPL vmlinux 0x8a27f73d rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x8a2b14ba wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0x8a2be52f rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8a2d1e20 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8a40a6a1 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x8a499eb1 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x8a50c8a8 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x8a584705 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x8aa97ef9 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ae152b5 of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x8aea0a06 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8b10d04e regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x8b10ef15 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x8b11b822 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x8b17fd14 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x8b21df42 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x8b23f911 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x8b324d87 ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x8b34920e dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0x8b4ccc59 ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x8b505cfe rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0x8b70e8ea __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x8b81ecb4 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x8bcda976 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c110b23 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x8c30b1a9 nl_table +EXPORT_SYMBOL_GPL vmlinux 0x8c402745 inet_csk_reqsk_queue_prune +EXPORT_SYMBOL_GPL vmlinux 0x8c5008a4 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x8c8f020e ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8cea765f memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x8d1b5263 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d28c4aa rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x8d36c088 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0x8d5d738d irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x8d80076d iommu_tce_put_param_check +EXPORT_SYMBOL_GPL vmlinux 0x8d85367f smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x8d9d307a bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x8d9fb224 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x8dbc5baa ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x8df86158 rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x8dfd5821 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x8e0be807 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x8e2123e7 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0x8e78490d da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x8e7cef07 tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x8e93cebb __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x8e9c7933 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x8e9d09f9 bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0x8eae3e1d vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x8ebec38c usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x8f02b0e4 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x8f24585e usb_string +EXPORT_SYMBOL_GPL vmlinux 0x8f28edd2 restore_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x8f2f6724 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8f378170 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x8f475052 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f7abade extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x8f8a365c ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x8f8dfd55 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x8f8e53b9 idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8f902a2c gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0x8fb0fe3f class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8fc14b25 rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x8fd840cd percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0x8ffd9755 pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0x9017c8fe usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x902e04b1 realmode_pfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0x9056173f rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x90705b7f syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9077d5ea usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x90938fa2 inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90b2a02d cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x90c5f07a pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x90ccb856 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x90f205da __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x911bacb1 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x91286982 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x913d4ea7 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x91560584 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x91595e15 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x915a37ce ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x916ebeb4 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x91729cb6 of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0x91846e28 spu_get_profile_private_kref +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91952a29 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x91a23f8f perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x91fffd47 rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0x920cc389 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x92265a13 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x9258a93c cpu_remove_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x927c0fc2 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92f3d43a of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x92f586a2 of_get_named_gen_pool +EXPORT_SYMBOL_GPL vmlinux 0x92f75062 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x92ffb2a4 aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x9307844d pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x930ed9b9 of_usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0x931f4324 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0x93272eb3 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x934062a5 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x93433444 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x9394b1cd tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x93955e82 hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x93a10565 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x93a55d51 get_slice_psize +EXPORT_SYMBOL_GPL vmlinux 0x93b56702 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x93cfdb28 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0x94015e24 dm_underlying_device_busy +EXPORT_SYMBOL_GPL vmlinux 0x940685ca kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x9424109b sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0x9426c62d ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x94483b79 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x9448a09c skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0x946efcb8 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x947e2700 cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x949ac1b0 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x949f7342 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x94a68723 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x94aba116 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x94ad7975 remove_phb_dynamic +EXPORT_SYMBOL_GPL vmlinux 0x94cdc85f subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x94d972b7 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x94df5b7e ps3_vuart_port_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x94ecaca7 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x9508356b put_pid +EXPORT_SYMBOL_GPL vmlinux 0x950a64ac __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x956760c9 devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9573941a tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x95ab67f2 fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x95b6aa43 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95e51255 devres_find +EXPORT_SYMBOL_GPL vmlinux 0x95e91abc da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0x95ec2f08 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x9627d9f4 thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0x9636c345 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x96438da9 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x965a78d5 threads_core_mask +EXPORT_SYMBOL_GPL vmlinux 0x96913829 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x96956a85 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x96f962b5 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x972fd446 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x9730c462 gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x9735f061 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x97730884 yield_to +EXPORT_SYMBOL_GPL vmlinux 0x978118d1 rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x978533fa usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97e96978 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x9819fe3e regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x982cd486 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x982f686e __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x9840ffa0 smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x985b598f __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x98748b06 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x988b11a4 regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0x98a02a70 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x98ab9c9b get_device +EXPORT_SYMBOL_GPL vmlinux 0x98ac1b8d usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x98e5c55b regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x98e752d6 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x9912b57b uninhibit_secondary_onlining +EXPORT_SYMBOL_GPL vmlinux 0x9920f1f0 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x995a5936 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x9962290c tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x9987e6e9 opal_get_sensor_data +EXPORT_SYMBOL_GPL vmlinux 0x99cc9916 devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x99e08d31 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x99e28f10 __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0x99f9e56a cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x99ff97b2 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0x9a001d06 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a17a54c usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x9a2476b2 rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x9a2574ac pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x9a26f295 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x9a2cde8d pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x9a349c3b sec_reg_update +EXPORT_SYMBOL_GPL vmlinux 0x9a49d937 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x9a595b25 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x9a6f9fd3 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x9a861f6c stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0x9a89341d pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a8a183a ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x9a8a5f2f wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x9aa46ded md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x9aa99946 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x9aad6540 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9aca444b get_monotonic_boottime +EXPORT_SYMBOL_GPL vmlinux 0x9acc5876 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0x9ad26e5b tty_prepare_flip_string_flags +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9b01e3aa ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x9b1518d6 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x9b367f2b irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x9b3dd749 clockevents_unbind +EXPORT_SYMBOL_GPL vmlinux 0x9b5d2b17 init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x9b62f01d irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x9b7e2af4 device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x9b9a9352 ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x9ba2bb2b gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x9bcce661 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9bd5139a usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9c5aba18 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x9c622fd3 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9c72f722 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x9c8e4f76 devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x9ca56a11 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x9cc4dee2 vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9cf6bfb0 __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x9d0be8d2 extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9d138533 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x9d16e785 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0x9d236177 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x9d359386 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x9d4939a0 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x9db026d8 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x9dcefa08 pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x9e0981db cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x9e210554 iommu_put_tce_user_mode +EXPORT_SYMBOL_GPL vmlinux 0x9e796d30 pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0x9ea11955 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x9eb728da dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ee68011 pmf_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x9efb6278 device_add +EXPORT_SYMBOL_GPL vmlinux 0x9f0664bf dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0x9f1e1934 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x9f33f175 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x9f3c7512 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x9f3f98e1 of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x9f74935c srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9f8ea4bc verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x9f930fe7 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x9fb21ae0 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9fedb268 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x9fedfb89 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xa00c15ca devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xa01fed44 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0xa0259ea4 dma_buf_export_named +EXPORT_SYMBOL_GPL vmlinux 0xa02bc0be skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0xa056d87d __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xa0583a94 swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0xa06189c4 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0xa072daf0 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0xa082c87b add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xa084003e gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0xa097ad6d regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0xa0a27fff pci_address_to_pio +EXPORT_SYMBOL_GPL vmlinux 0xa0b02c1d sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0xa0ff9a22 alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0xa12d929d desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0xa13225bf bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xa1d98a68 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0xa1e2f620 _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0xa234b0f2 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0xa23ada13 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xa24a7880 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xa24c49a6 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa29e5e54 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0xa2be8f06 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0xa2ddf3ed uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xa2de9b67 class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xa2e7f61f ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xa2fd4ee9 pcibios_unmap_io_space +EXPORT_SYMBOL_GPL vmlinux 0xa313b1f1 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa3235bbc inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xa381a920 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa38c8e0b sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0xa3910960 sysfs_chmod_file +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 0xa41fb206 tpm_show_pubek +EXPORT_SYMBOL_GPL vmlinux 0xa4709ef9 system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa48658e8 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xa4db5d55 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xa4e176aa sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xa4ea04ee of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0xa5054436 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0xa507275f bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa5382d58 regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0xa56ca855 tracepoint_iter_stop +EXPORT_SYMBOL_GPL vmlinux 0xa5b00659 ppc_proc_freq +EXPORT_SYMBOL_GPL vmlinux 0xa5ecfd42 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5efe460 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xa5f389eb of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xa5ff8327 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0xa60ff6a0 pmac_i2c_adapter_to_bus +EXPORT_SYMBOL_GPL vmlinux 0xa617dd7b __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa6582bdd thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0xa67265b0 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xa676fde0 regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0xa6a0a273 max77693_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xa6a70339 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xa6afc2d2 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6ce5d64 pcibios_free_controller_deferred +EXPORT_SYMBOL_GPL vmlinux 0xa6ddce71 ps3_vuart_cancel_async +EXPORT_SYMBOL_GPL vmlinux 0xa6e00ae8 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6ee2c3d PageHuge +EXPORT_SYMBOL_GPL vmlinux 0xa71679a3 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xa724257f init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0xa74e2204 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa75811d0 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0xa7a4705c hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0xa7ccaab5 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0xa7cf4cf4 rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xa7f92105 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0xa82b2fed register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0xa838f9cd ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xa8518318 dev_hard_start_xmit +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa8942d44 devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xa89868e7 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0xa898810a ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xa8a47e9c ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0xa8aa0da3 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xa8b0578c device_reset +EXPORT_SYMBOL_GPL vmlinux 0xa8c912f9 vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0xa8cce556 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0xa925e478 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0xa93271a5 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xa938945d da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xa96a56f4 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0xa9708c4e __class_register +EXPORT_SYMBOL_GPL vmlinux 0xa980af16 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xa988e1f6 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xa98cdb36 ps3_get_firmware_version +EXPORT_SYMBOL_GPL vmlinux 0xa9c0573d sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0xa9c15c36 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0xa9c3c978 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0xa9c8a6f7 devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0xa9ce341e usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xaa09e4df rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0xaa43e5ed inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xaa58da2b ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0xaa6815c9 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xaa6c58b7 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0xaa9dcafa pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xaaa3f820 eeh_add_sysfs_files +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaab4368a tpm_read +EXPORT_SYMBOL_GPL vmlinux 0xaabd6074 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0xaaccf8e9 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0xaad36732 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0xaaed834f regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0xaaf972fa fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0xab14110a stop_machine +EXPORT_SYMBOL_GPL vmlinux 0xab23f1a8 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xab2b243d ps3_irq_plug_destroy +EXPORT_SYMBOL_GPL vmlinux 0xab2f7632 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xabf18c63 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0xabff8bf0 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0xac004a9e ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xac3ff35f regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xac401d59 get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0xac592df3 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0xac7c58e4 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0xacb823ae usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xacf26d09 fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0xacfe997e powerpc_firmware_features +EXPORT_SYMBOL_GPL vmlinux 0xad039c54 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0xad177bb6 sysfs_get_dirent_ns +EXPORT_SYMBOL_GPL vmlinux 0xad21f566 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0xad5505bb arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xad878140 mdio_mux_init +EXPORT_SYMBOL_GPL vmlinux 0xad8f3450 da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xada6c278 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0xada90991 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xadc3f0e6 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xadf89e8e max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xae141b34 crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0xae2e2053 pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xae349ff3 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xaea673dc ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0xaecf8c9f pmf_do_irq +EXPORT_SYMBOL_GPL vmlinux 0xaed5f2b4 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0xaeda7fc3 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0xaede0813 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0xaee51ac0 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0xaf04bd17 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xaf0e5861 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0xaf206ffa isa_bridge_pcidev +EXPORT_SYMBOL_GPL vmlinux 0xaf6e0a97 stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0xaf71ca80 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xaf75e84e kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xaf7e4d17 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0xaf8b7709 crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xaf907626 hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0xaf975889 rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0xafa243f8 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0xafaac892 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0xafacc599 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0xafc6d549 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0xb00c41f5 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xb0507a98 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0xb094269f rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0xb09d3c53 irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0bdfe78 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0xb0d1656c gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0xb0e60659 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0xb0f05d66 need_load_eval +EXPORT_SYMBOL_GPL vmlinux 0xb0f11deb inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0xb1051f46 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xb108f78d crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0xb10d55bc cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1415755 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb1833922 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb18b8046 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0xb18b8326 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xb19099c5 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0xb1a7c55f crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1b00bce disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xb1b04bda do_unregister_con_driver +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 0xb1f36f0b irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xb219d596 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0xb21acc2a anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb22169bb driver_find +EXPORT_SYMBOL_GPL vmlinux 0xb2248b76 scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0xb26765c4 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0xb2758d78 cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xb283a782 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb2e7ee9b fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0xb2ed8d89 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xb31137a6 spu_handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0xb312a6f9 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0xb31e9fec regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0xb330b476 i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0xb344b34f debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0xb347bb2c work_busy +EXPORT_SYMBOL_GPL vmlinux 0xb3514764 generic_access_phys +EXPORT_SYMBOL_GPL vmlinux 0xb3547d41 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xb356a986 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0xb3591dba ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0xb362b0f5 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xb374b97f da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0xb384ac2a tpm_show_durations +EXPORT_SYMBOL_GPL vmlinux 0xb388961f usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0xb3aa4460 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xb3af3bba pcibios_add_pci_devices +EXPORT_SYMBOL_GPL vmlinux 0xb3b2f9bd usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0xb3c8ae4f kobj_completion_init +EXPORT_SYMBOL_GPL vmlinux 0xb3e7a31e regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0xb3eeab86 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb4150309 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb44c4e71 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0xb478d7dd dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0xb4a39896 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4fffa70 ps3_sys_manager_register_ops +EXPORT_SYMBOL_GPL vmlinux 0xb5146329 regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb5264178 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb52905e5 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0xb52f93c8 device_attach +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb5386bcf usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xb5425bba get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0xb5579ed5 iommu_map +EXPORT_SYMBOL_GPL vmlinux 0xb55dd882 of_pci_msi_chip_remove +EXPORT_SYMBOL_GPL vmlinux 0xb5741ed9 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0xb57e9849 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb595042a regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0xb599f0f7 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5a4b80c pci_configure_slot +EXPORT_SYMBOL_GPL vmlinux 0xb5a707a8 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xb5aa10af atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb5b41f4f ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0xb5b61c62 of_reset_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xb5be4b45 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xb5c8edf4 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0xb5cb8145 hrtimer_get_res +EXPORT_SYMBOL_GPL vmlinux 0xb5e53bd6 rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb5f2fc99 scom_find_parent +EXPORT_SYMBOL_GPL vmlinux 0xb5f3a4e6 stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0xb607650b mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0xb60b5707 of_i8042_aux_irq +EXPORT_SYMBOL_GPL vmlinux 0xb6101bd2 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb643c250 xics_wake_cpu +EXPORT_SYMBOL_GPL vmlinux 0xb6698d0f ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb67b2219 cm_suspend_again +EXPORT_SYMBOL_GPL vmlinux 0xb67dd9e6 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xb69b67f0 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6bc007a spu_sys_callback +EXPORT_SYMBOL_GPL vmlinux 0xb6c635af wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xb6d348c9 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0xb6d488cd ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0xb70c51e4 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0xb70da141 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xb72060fe iommu_release_ownership +EXPORT_SYMBOL_GPL vmlinux 0xb73a60b8 proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0xb74f80c6 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0xb74fe22d skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0xb76a8936 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0xb77226a4 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0xb7b71c2f bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb7d2b37f tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0xb7e49af5 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xb7f45594 pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb81faee1 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xb83a040b __giveup_vsx +EXPORT_SYMBOL_GPL vmlinux 0xb849f983 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0xb84b1aae ps3_event_receive_port_setup +EXPORT_SYMBOL_GPL vmlinux 0xb8565591 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb85bd6f2 preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xb879ab2a usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0xb891b6d9 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xb89e7529 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xb8a08dfd tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0xb8cf86e1 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xb8f857c5 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb9094fe5 cred_to_ucred +EXPORT_SYMBOL_GPL vmlinux 0xb909fc03 netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0xb933a150 arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0xb93ba877 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0xb94baa90 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0xb94de068 percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb99c97d8 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xb9b1495d wm831x_device_shutdown +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 0xb9d0b338 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xb9e25b9e crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0xb9f2b0bc fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0xba158769 rtas_cancel_event_scan +EXPORT_SYMBOL_GPL vmlinux 0xba35ad7b device_move +EXPORT_SYMBOL_GPL vmlinux 0xbad6f736 spu_priv1_ops +EXPORT_SYMBOL_GPL vmlinux 0xbafeca14 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb0c0d49 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0xbb49aafe spu_64k_pages_available +EXPORT_SYMBOL_GPL vmlinux 0xbb4d261d blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0xbb54eb63 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xbb60474b sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0xbb63c77c relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0xbb885753 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0xbb8adedc key_type_user +EXPORT_SYMBOL_GPL vmlinux 0xbb9dee51 css_next_descendant_post +EXPORT_SYMBOL_GPL vmlinux 0xbba81158 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0xbbc50182 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0xbbc6fca4 percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0xbbd5aeaa usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0xbbf35c60 task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0xbbf6582f inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0xbc0f189d wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xbc15059a crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0xbc3552c2 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0xbc3e8730 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0xbc47fd49 __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0xbc4d6faa pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xbc702381 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0xbc8e690a irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xbc9088de uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0xbca4c534 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcbe50e3 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0xbcc0c4e9 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbd149c9a relay_close +EXPORT_SYMBOL_GPL vmlinux 0xbd1f8273 iommu_take_ownership +EXPORT_SYMBOL_GPL vmlinux 0xbd2a95b9 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbdaf5686 get_compat_timeval +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbded44d4 usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xbdf8eece crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xbe180227 usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe33cc14 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0xbe449b0a posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0xbe7f06e4 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0xbe8d390a agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0xbe941f96 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xbe96dfd8 of_reconfig_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbeb91568 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0xbebaa0a6 of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xbec15b5a irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xbee91645 serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0xbeeadb8b ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xbeed5475 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf0bb58e clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0xbf1cc04b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xbf33d26a pci_renumber_slot +EXPORT_SYMBOL_GPL vmlinux 0xbf3b6465 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0xbf46c433 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xbf731d35 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0xbf93b11d sysfs_add_device_to_node +EXPORT_SYMBOL_GPL vmlinux 0xbf9b33dd tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0xbfb51c1d dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0xbfb8cb89 exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0xbfde56c9 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xc01649d6 cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0xc02bec3c usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc03c100e rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xc0505aff ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0xc061367e mpic_msgr_get +EXPORT_SYMBOL_GPL vmlinux 0xc065a455 cpu_core_index_of_thread +EXPORT_SYMBOL_GPL vmlinux 0xc0851e72 __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc08e39ab spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0xc0bf6ead timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xc0cc710e dm_disk +EXPORT_SYMBOL_GPL vmlinux 0xc0d01bc0 percpu_ref_cancel_init +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0ddc744 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0xc0e563a0 iommu_clear_tces_and_put_pages +EXPORT_SYMBOL_GPL vmlinux 0xc0eb72c8 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0xc1052609 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0xc10c0ade ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0xc11b45c6 gpiod_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xc11bd00f tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc1369514 pmac_low_i2c_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc14b9784 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0xc15e1e77 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0xc1607bae dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0xc1647dcc hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc182a1f1 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0xc18da5fc crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xc1c3952d __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0xc1d10906 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0xc1ece13f register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc1fe0227 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0xc20c298a __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc23cbe1e blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0xc276b141 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0xc2774993 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc2c25342 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc2e8f0e9 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0xc2eeec7b unregister_spu_syscalls +EXPORT_SYMBOL_GPL vmlinux 0xc2f0928b sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc34efe27 snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc375bb4b pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc37e5130 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0xc37f4bd5 wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0xc38cdc92 rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xc3982c48 usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xc3c6c9cc hrtimer_start +EXPORT_SYMBOL_GPL vmlinux 0xc3d105e4 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xc3ec70d9 driver_register +EXPORT_SYMBOL_GPL vmlinux 0xc3fe00a0 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0xc3feb587 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xc407a1d4 gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0xc417aafd pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc4777896 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc49375e2 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0xc4a16a61 unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xc4a93bcd ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xc4ccba45 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0xc4d8df4a ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0xc4db992e kvmppc_load_up_fpu +EXPORT_SYMBOL_GPL vmlinux 0xc502beb4 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0xc53c85e4 devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xc5460a46 da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0xc5466da5 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0xc550743f init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xc5514ec5 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc59d493f ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xc5a78910 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc5ae95fe vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0xc5d32046 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xc60f75ec __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xc61075d0 nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc63964ef tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0xc63a1109 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xc65c26c7 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc66c2311 ps3_vuart_irq_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc68aa252 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc690866c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xc691b435 regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0xc6948adb regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xc699ef16 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6a1b65f rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0xc6e25e99 tracepoint_iter_start +EXPORT_SYMBOL_GPL vmlinux 0xc6e2f79a percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc6f947b9 __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xc70d382b da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xc71fbd36 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7a5381e devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7e368a5 blk_queue_bio +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc7f01370 usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xc7ff5062 alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0xc808fc1c usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0xc81d7f01 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0xc825efc2 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xc847731a regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc8853366 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0xc8aae1aa irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc90432cb percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc939ebbf tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xc9546902 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc960977c devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc9641b48 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0xc97d1140 cpufreq_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0xc9b06666 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xc9c6fd05 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0xc9c88602 regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xc9ca34ab pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0xc9cc7d33 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xc9cfa97f of_pci_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xc9f5b590 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xca104a23 sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xca471f31 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca80a795 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0xca8274ca lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xca85d8cf tracepoint_probe_update_all +EXPORT_SYMBOL_GPL vmlinux 0xca8b386f cgroup_unload_subsys +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcad4ad08 pmf_do_functions +EXPORT_SYMBOL_GPL vmlinux 0xcae70b6d uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0xcb06832d sec_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xcb0a1e20 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb285671 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0xcb2e57d1 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xcb38f6dd srp_remove_host +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcba6b9b4 __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xcbb1a2f8 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xcbbdbd6d regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xcbd27189 __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcbefaa30 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0xcc14cc72 hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0xcc198a28 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0xcc1b75f4 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0xcc1d7b54 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0xcc1f1c3d inet_twdr_hangman +EXPORT_SYMBOL_GPL vmlinux 0xcc2d3034 iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0xcc60cb51 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0xcc6e5416 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcc8c4990 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xcc9b0b77 spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xccb3ce92 pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0xccb74cd1 usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xcd1fc0f3 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0xcd247e9b device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0xcd5a8669 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0xcd7f86aa platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0xcd81ad9b stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcdb9f3de wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcdf4a3d6 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0xcdf5fad9 __put_net +EXPORT_SYMBOL_GPL vmlinux 0xce049e0a usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xce0b9b59 max77693_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xce46e140 ktime_get_ts +EXPORT_SYMBOL_GPL vmlinux 0xce55186b napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce735a8b sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0xce7ce258 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0xce8edc34 spu_switch_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xceb1f126 mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0xceb75c2c securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xced0fb02 set_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcefa2504 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xcf1ce8a9 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0xcf2960c8 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xcf2b247c fb_sys_read +EXPORT_SYMBOL_GPL vmlinux 0xcf2eea1a crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0xcf4e8bb4 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf55f977 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xcf820b7f __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0xcfa39eca __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcfbcfb0d pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xd012f93a __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0xd03b5e47 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd041fbcf regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd06c0db4 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0xd075a64e bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0xd090630f ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0xd09be9bc set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0xd0a4245e sysfs_get +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0cfa21b split_page +EXPORT_SYMBOL_GPL vmlinux 0xd0d0c6a4 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0xd0dd8010 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0xd0fbcf25 devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0xd13cc148 ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0xd1414483 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xd149ea7b regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0xd14bc4d9 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xd14cd14d sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0xd156af5f ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0xd15ef7bd fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0xd163e8d7 rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd17685a1 sdhci_pci_o2_probe +EXPORT_SYMBOL_GPL vmlinux 0xd1b2db37 tracepoint_probe_register_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xd1fc8ad5 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd21fa723 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0xd21fe21c rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0xd223aa61 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xd2728a10 tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd276bbc3 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0xd276c672 vtime_guest_enter +EXPORT_SYMBOL_GPL vmlinux 0xd27b7165 key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0xd29db7d7 use_mm +EXPORT_SYMBOL_GPL vmlinux 0xd2c45ea4 of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0xd2d8a635 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xd2daf820 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xd30f1f11 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd32fe193 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xd33347b7 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0xd3454a75 pmf_find_function +EXPORT_SYMBOL_GPL vmlinux 0xd346e39f cgroup_add_cftypes +EXPORT_SYMBOL_GPL vmlinux 0xd35071b2 nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xd3634a12 regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0xd371cf9a extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0xd37c4b50 pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0xd380b290 devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xd3b62492 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xd3d2a595 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0xd3f92370 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd40ca7b1 regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd455cd2a cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xd46ad661 ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0xd479be9d tpm_show_temp_deactivated +EXPORT_SYMBOL_GPL vmlinux 0xd490b6e7 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0xd498e99f __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd49b6267 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4c59ebe crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0xd4f932fe i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xd50aa9d9 udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd582227a leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xd58f353e __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5c36c40 __tracepoint_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0xd5c88467 pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0xd600c2a4 cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0xd61ab87c sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0xd625d7bb __online_page_free +EXPORT_SYMBOL_GPL vmlinux 0xd634bd9b flush_vsx_to_thread +EXPORT_SYMBOL_GPL vmlinux 0xd64f912e regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xd65ce2fe devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd67623c8 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xd6980ef6 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0xd6bba0fe iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0xd6d18989 mmput +EXPORT_SYMBOL_GPL vmlinux 0xd6e22975 tpm_open +EXPORT_SYMBOL_GPL vmlinux 0xd6f6ae7f iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd74f8c10 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd77bad32 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd79b2530 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0xd7ac5761 devres_add +EXPORT_SYMBOL_GPL vmlinux 0xd7beac76 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7e7bda1 ip6_datagram_connect +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 0xd83197cc aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0xd83c29c6 eeh_add_device_tree_late +EXPORT_SYMBOL_GPL vmlinux 0xd8498f4d ps3av_mode_cs_info +EXPORT_SYMBOL_GPL vmlinux 0xd875fcb5 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd882cab4 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0xd896573a balloon_devinfo_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd8f7da0d extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xd9039543 flush_altivec_to_thread +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd9497b3c ps3_os_area_flash_register +EXPORT_SYMBOL_GPL vmlinux 0xd96c2df5 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0xd9a5a5b6 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0xd9a886d3 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xd9c975b6 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0xd9cde59d unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xd9d7452a ping_close +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda097122 __clocksource_updatefreq_scale +EXPORT_SYMBOL_GPL vmlinux 0xda0a4d22 mpic_msgr_enable +EXPORT_SYMBOL_GPL vmlinux 0xda0e61db rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0xda275aeb fat_detach +EXPORT_SYMBOL_GPL vmlinux 0xda2ec71e fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0xda44cb37 setup_charger_manager +EXPORT_SYMBOL_GPL vmlinux 0xda5227e3 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xda5ac6e5 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0xda727c45 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0xda75ab71 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0xdaaa811e regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xdab9d3af cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0xdabd0e64 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xdaec531f __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdafa825b usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0xdb04cacc tracepoint_probe_unregister_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xdb07a1fc pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xdb093e9f rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xdb0ac13b ps3_compare_firmware_version +EXPORT_SYMBOL_GPL vmlinux 0xdb3d39b3 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0xdb5fdc3c iommu_present +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb8ad1f1 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xdba80fc1 of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0xdbb68e6b sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0xdbbc81d4 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0xdbd3f681 swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0xdbee62eb macio_find +EXPORT_SYMBOL_GPL vmlinux 0xdbf59dfe pci_pri_status +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc18b225 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0xdc1e15f1 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0xdc35b57f crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0xdc40f4aa regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0xdc5c6047 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc937864 spu_switch_event_register +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdca1f7d0 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdceee0b0 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0xdcf91ed2 cpu_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0xdd03be4d pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0xdd043eea ps3av_get_auto_mode +EXPORT_SYMBOL_GPL vmlinux 0xdd288fb6 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd4be928 iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0xdd729424 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xdd7d58a1 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0xdda0a423 hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xddd0bf10 ps3_vuart_read_async +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xdddfecae regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0xddf90e1f rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0xde5615b1 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0xde70c091 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0xdea0088d crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0xdea32d39 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0xdee34613 eeh_dev_check_failure +EXPORT_SYMBOL_GPL vmlinux 0xdee8a174 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0xdef58562 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0xdf05e3a8 usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf2a158e stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0xdf2c2a84 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdf6ea908 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0xdf759717 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xdfa93cef scom_controller +EXPORT_SYMBOL_GPL vmlinux 0xdfc2b42e pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0xdfc516e2 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0xdfdf9c10 __tracepoint_unmap +EXPORT_SYMBOL_GPL vmlinux 0xdfe0d3f2 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe011f817 ps3flash_bounce_buffer +EXPORT_SYMBOL_GPL vmlinux 0xe01cf1e9 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe02f3ea9 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xe036962b mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xe036b3e9 mpic_msgr_put +EXPORT_SYMBOL_GPL vmlinux 0xe04649ea fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0xe05746a9 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe0ad95a8 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0xe0c6fe92 pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xe0f1fad5 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0xe12c3a8f ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xe130c4f3 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe17b5989 subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0xe17d4b10 srp_attach_transport +EXPORT_SYMBOL_GPL vmlinux 0xe19048b6 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xe19fc092 ps3fb_videomemory +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1dfc566 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0xe1e46ac6 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0xe2066add serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0xe2638e6d ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0xe271f86e ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xe2b33001 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0xe2eea6c1 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe31d0e7b sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0xe32130d1 dm_dispatch_request +EXPORT_SYMBOL_GPL vmlinux 0xe32d1ec7 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0xe3401723 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0xe35274e1 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe35746e0 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0xe35833cb pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xe35fa6e6 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0xe3624f44 list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0xe36d8f9f pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe3ad5bee unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xe3c9404d powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0xe3d7750e btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe4329ad6 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe43ec515 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0xe46642c9 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0xe470811a spu_setup_kernel_slbs +EXPORT_SYMBOL_GPL vmlinux 0xe47eba49 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0xe4c031f8 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xe4c4b28f gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xe4c4d853 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0xe4c66115 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0xe4c797a6 cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0xe4dab26f crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe4de8c65 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe4df5fe6 rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xe4e753d2 dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xe4e88da0 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xe4eaf8ea pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xe504171f wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0xe511f95e unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xe513e896 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0xe51c040f register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xe52abf9a pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0xe540eb69 fb_sys_write +EXPORT_SYMBOL_GPL vmlinux 0xe5481716 napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0xe54c3af1 init_user_ns +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 0xe5b6823b spu_set_profile_private_kref +EXPORT_SYMBOL_GPL vmlinux 0xe5b68a5c alarm_init +EXPORT_SYMBOL_GPL vmlinux 0xe5db506e regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xe5f301d2 ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0xe60c09c7 skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xe6318d7d usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe6577e8d kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0xe66c7bdd sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0xe671f33c pmac_i2c_get_channel +EXPORT_SYMBOL_GPL vmlinux 0xe679aa94 wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6ccba01 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe7112e53 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0xe72c6555 ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0xe761dc91 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe77e60bd __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0xe7870028 reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xe7a496d4 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xe7ad6b0c fuse_conn_kill +EXPORT_SYMBOL_GPL vmlinux 0xe7ce1300 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xe7efc0a8 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xe7f1447f platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe8029d69 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe8331de7 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0xe84e6379 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xe85c55e7 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe8836108 mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0xe8906464 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0xe89bd243 ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe8b6ddde key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0xe8d2ff0a __online_page_increment_counters +EXPORT_SYMBOL_GPL vmlinux 0xe8e48199 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xe8e82583 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xe9035ffb platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe90dea2a i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe9506579 iommu_tce_direction +EXPORT_SYMBOL_GPL vmlinux 0xe962788f rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xe9825ce4 tpm_dev_release +EXPORT_SYMBOL_GPL vmlinux 0xe986acf5 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0xe9ace9f2 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0xe9b110f4 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xe9b1b56b md_new_event +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 0xea695ed2 kvmppc_load_up_altivec +EXPORT_SYMBOL_GPL vmlinux 0xea8aee7c fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0xea8b276c rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xeaa9783d inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0xeadec4f9 device_rename +EXPORT_SYMBOL_GPL vmlinux 0xeb1c3628 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xeb1c8098 cpufreq_notify_transition +EXPORT_SYMBOL_GPL vmlinux 0xeb8ae736 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xeb8edecd fb_ddc_read +EXPORT_SYMBOL_GPL vmlinux 0xeb95a5da iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0xebb2d2cb seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0xebb94645 of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0xebbec1c5 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0xebcd1a0b ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0xebd3a4df da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0xebd98a63 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0xebdec246 sk_unattached_filter_destroy +EXPORT_SYMBOL_GPL vmlinux 0xebe50d18 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec229b9d regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec5c9692 devres_release +EXPORT_SYMBOL_GPL vmlinux 0xec951d36 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xecb05e22 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0xecb9a496 ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0xecbfd898 __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xecf837b3 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0xed06a362 sysfs_put +EXPORT_SYMBOL_GPL vmlinux 0xed1740f6 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0xed1f8997 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0xed298ad0 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0xed322c85 serial8250_tx_dma +EXPORT_SYMBOL_GPL vmlinux 0xed965f8a bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0xed9c25a4 __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0xedc6b4b0 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0xedd49930 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0xedd7aba5 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xede7eb2f mmu_psize_defs +EXPORT_SYMBOL_GPL vmlinux 0xedeed2ed fat_scan +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL vmlinux 0xee8da4ca kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xee9fb811 md_run +EXPORT_SYMBOL_GPL vmlinux 0xeeb9cbe6 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0xeec7e1f1 rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xeed15eb1 tpm_show_enabled +EXPORT_SYMBOL_GPL vmlinux 0xeee6e537 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xeee94b9f pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0xeeea3070 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xef174834 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef9bab72 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0xefb3915c spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0xefb8d419 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xefbbcbb8 tcp_is_cwnd_limited +EXPORT_SYMBOL_GPL vmlinux 0xefc9d28e powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0xefc9f100 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0xefcb3a41 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0xefe28733 pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0xefea342e fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0xeff8400b __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xeffa6b8f __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0xf02323ea blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xf0331431 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xf033ba46 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0xf039b2cd pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0xf04fcd43 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0xf07105f6 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0xf0729bf1 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0xf0758d17 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0xf08031bc device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0xf08166fd spu_remove_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0xf098dd15 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0xf09dc046 ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xf0a16644 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0xf0b498ce tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf158f170 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0xf15f4e5e simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0xf15fc142 irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0xf162d2df spu_invalidate_slbs +EXPORT_SYMBOL_GPL vmlinux 0xf1683833 lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf19939cd apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0xf1a62b6f of_i8042_kbd_irq +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf20f0ae4 pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf22a8461 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0xf2337fb5 unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xf239648c iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0xf24b1e85 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0xf2557599 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf2ae8de3 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0xf2bb440b usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0xf2c0e4f4 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0xf2f077cc pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf381a782 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf3ad782b mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3c2eec1 dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf3cb682b __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xf3cffefb pskb_put +EXPORT_SYMBOL_GPL vmlinux 0xf4337039 proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0xf4367429 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0xf4594703 cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xf469c705 ps3_io_irq_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf4723680 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0xf4776866 cpu_remove_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499ce9d preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4a2b88d __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0xf4cb1498 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xf4ec0a08 balloon_mapping_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf512fb5d bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf57934ec simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5bcf1b2 __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0xf5cd1a82 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf5fef4e3 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf6765ac8 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf6a630de regmap_write +EXPORT_SYMBOL_GPL vmlinux 0xf6c7ce02 of_extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0xf6c9c69e device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xf6cc7efc ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6fc7706 tpm_show_caps +EXPORT_SYMBOL_GPL vmlinux 0xf70caceb rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0xf71b1380 of_get_dma_window +EXPORT_SYMBOL_GPL vmlinux 0xf7237c14 scom_map_device +EXPORT_SYMBOL_GPL vmlinux 0xf727e463 ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xf731dae4 pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0xf748e884 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0xf7608cdf __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0xf7759baf transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xf78dcc20 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0xf79cb3c5 iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0xf7a00996 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0xf7b0bcf9 tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xf7f52a17 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0xf816c866 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0xf8176f51 pci_sriov_migration +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf837e0eb unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xf83b95d1 rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xf86809b3 usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf8a10776 cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0xf8e398fc memstart_addr +EXPORT_SYMBOL_GPL vmlinux 0xf8e89073 pstore_register +EXPORT_SYMBOL_GPL vmlinux 0xf8eea437 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0xf8ef796c css_next_child +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf9154bff inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0xf923b9b6 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf98da65a rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0xf9933c03 reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9c17088 iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9d2611b alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0xf9ec0eb7 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0xf9f29cb3 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xf9f402c4 crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0xfa012fe7 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0xfa09f972 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa377d92 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0xfa600e33 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xfa639704 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0xfa901b31 compat_get_timespec +EXPORT_SYMBOL_GPL vmlinux 0xfab60503 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xfad66692 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0xfb13cc1f skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xfb2ee831 cpu_add_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +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 0xfbb457a0 pmf_call_one +EXPORT_SYMBOL_GPL vmlinux 0xfbbedefd of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0xfbfcdc2b ps3_sys_manager_get_wol +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc160af6 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0xfc201b66 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0xfc305194 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0xfc3c43aa ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xfc484e07 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xfc72d987 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0xfc97bc31 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0xfc99ba4a pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xfcb07b24 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfcd7ce1d raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xfcf83794 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0xfcf84909 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0xfcffb4e1 pmac_i2c_get_flags +EXPORT_SYMBOL_GPL vmlinux 0xfd0600ef raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0xfd0e304d ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0xfd1172a2 __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0xfd324500 tcp_reno_min_cwnd +EXPORT_SYMBOL_GPL vmlinux 0xfd691389 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xfd8fc2aa __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0xfd97de2b crypto_rng_type +EXPORT_SYMBOL_GPL vmlinux 0xfd993525 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0xfdaab607 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0xfdbe74d3 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0xfdc0049b srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfdd34203 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0xfe1fa0db of_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xfe33404f device_del +EXPORT_SYMBOL_GPL vmlinux 0xfe3b2df5 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xfe50a8ac sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0xfe63044c ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xfe6cc4d1 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfecd596c od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff041519 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xff0dacff ps3av_video_mute +EXPORT_SYMBOL_GPL vmlinux 0xff18e20d inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xff37b3ae class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xff4ae178 swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff96f005 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xffb7aa23 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0xffcc1172 iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0xffd43a47 regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0xffd47414 setup_irq --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/powerpc/powerpc64-smp.compiler +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/powerpc/powerpc64-smp.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4 --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/powerpc/powerpc64-smp.modules +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/powerpc/powerpc64-smp.modules @@ -0,0 +1,3667 @@ +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250_dw +8250_pci +8255 +8255_pci +8390 +842 +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm860x-ts +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +9p +9pnet +9pnet_rdma +9pnet_virtio +DAC960 +a100u2w +a3d +a8293 +aacraid +aat2870-regulator +aat2870_bl +ab3100 +ab3100-otp +ac97_bus +acard-ahci +acecad +acenic +act200l-sir +act_csum +act_gact +act_ipt +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +actisys-sir +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 +ad5930 +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 +ad9850 +ad9852 +ad9910 +ad9951 +ad_sigma_delta +adcxx +addi_apci_035 +addi_apci_1032 +addi_apci_1500 +addi_apci_1516 +addi_apci_1564 +addi_apci_16xx +addi_apci_2032 +addi_apci_2200 +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 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1275 +adm8211 +adm9240 +adp5520-keys +adp5520_bl +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +ads1015 +ads7828 +ads7846 +ads7871 +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adv7180 +adv_pci1710 +adv_pci1723 +adv_pci1724 +adv_pci_dio +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +af-rxrpc +af9013 +af9033 +af_802154 +af_alg +af_key +af_packet_diag +affs +ah4 +ah6 +aha152x_cs +ahci +ahci_platform +aic79xx +aic7xxx +aic94xx +aiptek +aircable +airo +airo_cs +airport +ak8975 +algif_hash +algif_skcipher +ali-ircc +alim7101_wdt +alphatrack +altera-ci +altera-stapl +altera_jtaguart +altera_ps2 +altera_uart +alx +amc6821 +amd-rng +amd5536udc +amd8111_edac +amd8111e +amd8131_edac +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pci224 +amplc_pci230 +amplc_pci263 +ams369fg06 +analog +anatop-regulator +ansi_cprng +anubis +aoe +apbps2 +apds9300 +apds9802als +apds990x +appledisplay +appletalk +appletouch +applicom +ar5523 +ar7part +arc-rawmode +arc-rimi +arc4 +arc_emac +arc_ps2 +arc_uart +arcmsr +arcnet +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arp_tables +arpt_mangle +arptable_filter +as3711-regulator +as3711_bl +as3722-regulator +as5011 +asc7621 +asix +ast +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at86rf230 +at91_ether +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-ssc +atmel_cs +atmel_mxt_ts +atmel_pci +atmtcp +atp870u +atxp1 +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo-pixcir-ts +auo_k1900fb +auo_k1901fb +auo_k190x +auth_rpcgss +authenc +authencesn +autofs4 +avm_cs +avma1_cs +avmfritz +ax25 +ax88179_178a +axnet_cs +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 +bcm5974 +bcm_wimax +bcma +bcma-hcd +bd6107 +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluecard_cs +bluetooth +bma150 +bma180 +bmp085 +bmp085-i2c +bmp085-spi +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bonding +bpa10x +bpck +bpctl_mod +bpqether +bq2415x_charger +bq24190_charger +bq24735-charger +bq27x00_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +broadsheetfb +bsd_comp +bsr +bt3c_cs +bt878 +btcoexist +btcx-risc +btmrvl +btmrvl_sdio +btmtk_usb +btrfs +btsdio +bttv +btuart_cs +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +bw-qcam +bypass +c-qcam +c4 +c67x00 +c_can +c_can_pci +c_can_platform +cachefiles +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 +cc770 +cc770_isa +cc770_platform +cciss +ccm +cdc-acm +cdc-phonet +cdc-wdm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc_subset +cedusb +ceph +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chipreg +chnl_net +ci_hdrc +ci_hdrc_imx +ci_hdrc_msm +ci_hdrc_pci +cifs +cirrus +cirrusfb +clearpad_tm1217 +clip +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm36651 +cm4000_cs +cm4040_cs +cma3000_d0x +cma3000_d0x_i2c +cmac +cmdlinepart +cmtp +cnic +cobra +coda +com20020 +com20020-pci +com20020_cs +com90io +com90xx +comedi +comedi_bond +comedi_fc +comedi_parport +comedi_test +comm +configfs +contec_pci_dio +cordic +core +cp210x +cpc925_edac +cpia2 +cpu-notifier-error-inject +cpufreq_spudemand +cramfs +crc-ccitt +crc-itu-t +crc32 +crc7 +crc8 +cros_ec +cros_ec_i2c +cros_ec_keyb +cros_ec_spi +cryptd +crypto_null +crypto_user +cryptoloop +crystalhd +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 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx8800 +cx8802 +cx88xx +cxacru +cxd2099 +cxd2820r +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cxt1e1 +cy8ctmg110_ts +cyapa +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-hwmon +da9052-regulator +da9052_bl +da9052_onkey +da9052_tsi +da9052_wdt +da9055-hwmon +da9055-regulator +da9055_onkey +da9055_wdt +da9063-regulator +da9210-regulator +daqboard2000 +das08 +das08_cs +das08_pci +db9 +dc395x +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +ddbridge +de2104x +de4x5 +decnet +deflate +defxx +denali +denali_pci +des_generic +dgap +dgnc +dgrp +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +diskonchip +diva_idi +diva_mnt +divacapi +divadidd +divas +dl2k +dlci +dlm +dm-bio-prison +dm-bufio +dm-cache +dm-cache-cleaner +dm-cache-mq +dm-crypt +dm-delay +dm-flakey +dm-log +dm-log-userspace +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 +dm1105 +dm9601 +dmfe +dmx3191d +dn_rtmsg +dnet +docg3 +docg4 +drbd +drm +drm_kms_helper +drm_usb +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsa_core +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +dt3000 +dt3155v4l +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-dw2102 +dvb-usb-ec168 +dvb-usb-friio +dvb-usb-gl861 +dvb-usb-gp8psk +dvb-usb-it913x +dvb-usb-lmedm04 +dvb-usb-m920x +dvb-usb-mxl111sf +dvb-usb-nova-t-usb2 +dvb-usb-opera +dvb-usb-pctv452e +dvb-usb-rtl28xxu +dvb-usb-technisat-usb2 +dvb-usb-ttusb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +dvb_usb_v2 +dw_dmac +dw_dmac_core +dw_dmac_pci +dwc2 +dwc2_pci +dwc2_platform +dwc3 +dwc3-pci +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e4000 +earth-pt1 +eata +ebt_802_3 +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ec100 +echo +edac_core +edt-ft5x06 +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efs +egalax_ts +ehset +electra_cf +elo +elsa_cs +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em_canid +em_cmp +em_ipset +em_meta +em_nbyte +em_text +em_u32 +emc1403 +emc2103 +emc6w201 +emi26 +emi62 +empeg +ems_pci +ems_pcmcia +ems_usb +emu10k1-gp +enc28j60 +enclosure +eni +enic +epat +epia +epic100 +eql +esas2r +esd_usb2 +esi-sir +esp4 +esp6 +et131x +ethoc +evbug +exofs +extcon-adc-jack +extcon-arizona +extcon-gpio +extcon-max77693 +extcon-max8997 +extcon-palmas +ezusb +f2fs +f75375s +f81232 +fakelb +fan53555 +farsync +faulty +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 +fld +flexcan +floppy +fm801-gp +fm_drv +fmc +fmc-chardev +fmc-fakedev +fmc-trivial +fmc-write-eeprom +fmvj18x_cs +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +freevxfs +friq +frpw +fsa9480 +fscache +fsl_elbc_nand +ft1000 +ft1000_pcmcia +ftdi-elan +ftdi_sio +ftl +fujitsu_ts +fusbh200-hcd +g450_pll +g760a +g762 +g_acm_ms +g_audio +g_cdc +g_dbgp +g_ether +g_ffs +g_hid +g_mass_storage +g_midi +g_ncm +g_nokia +g_printer +g_serial +g_webcam +g_zero +gadgetfs +gamecon +gameport +garmin_gps +garp +gcm +gdmtty +gdmulte +gdmwm +gdth +gen_probe +generic +generic-adc-battery +generic_bl +gf128mul +gf2k +gfs2 +ghash-generic +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +go7007 +go7007-loader +go7007-usb +goku_udc +goldfishfb +gp2ap002a00f +gp2ap020a00f +gpio +gpio-74x164 +gpio-addr-flash +gpio-adnp +gpio-adp5520 +gpio-adp5588 +gpio-amd8111 +gpio-arizona +gpio-charger +gpio-da9052 +gpio-da9055 +gpio-dwapb +gpio-fan +gpio-generic +gpio-grgpio +gpio-ir-recv +gpio-janz-ttl +gpio-kempld +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio-pca953x +gpio-pcf857x +gpio-rdc321x +gpio-regulator +gpio-tps65912 +gpio-ts5500 +gpio-twl4030 +gpio-twl6040 +gpio-ucb1400 +gpio-viperboard +gpio-vx855 +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +gpio_backlight +gpio_keys +gpio_keys_polled +gpio_mouse +gpio_tilt_polled +grcan +gre +grip +grip_mp +gsc_hpdi +gspca_benq +gspca_conex +gspca_cpia1 +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_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gtco +guillemot +gunze +gxt4500 +hamachi +hampshire +hangcheck-timer +hanwang +hci +hci_uart +hci_vhci +hdlc +hdlc_cisco +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdlcdrv +hdpvr +he +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfc_usb +hfcmulti +hfcpci +hfcsusb +hfs +hfsplus +hid +hid-a4tech +hid-apple +hid-appleir +hid-aureal +hid-axff +hid-belkin +hid-cherry +hid-chicony +hid-cypress +hid-dr +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-generic +hid-gyration +hid-holtek-kbd +hid-holtek-mouse +hid-holtekff +hid-huion +hid-icade +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-lenovo-tpkbd +hid-logitech +hid-logitech-dj +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hid-petalynx +hid-picolcd +hid-pl +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-gyro-3d +hid-sensor-hub +hid-sensor-iio-common +hid-sensor-magn-3d +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-wacom +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hidp +hih6130 +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hmc5843 +hmc6352 +hopper +hostap +hostap_cs +hostap_pci +hostap_plx +hp100 +hpfs +hpilo +hpsa +hptiop +hsi +hsi_char +hso +hsr +htc-pasic3 +htu21 +huawei_cdc_ncm +hwa-hc +hwa-rc +hwmon-vid +hx8357 +hysdn +i1480-dfu-usb +i1480-est +i2400m +i2400m-usb +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd8111 +i2c-arb-gpio-challenge +i2c-cbus-gpio +i2c-designware-core +i2c-designware-pci +i2c-dev +i2c-diolan-u2c +i2c-eg20t +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-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 +i2o_block +i2o_bus +i2o_core +i2o_proc +i2o_scsi +i40e +i40evf +i5k_amb +i6300esb +i740fb +i82092 +ib_addr +ib_cm +ib_core +ib_ipoib +ib_iser +ib_isert +ib_mad +ib_mthca +ib_qib +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +ibmaem +ibmpex +ibmveth +ibmvfc +icom +icp_multi +ics932s401 +idmouse +idt77252 +ieee802154 +ifb +iforce +igb +igbvf +iguanair +iio-trig-interrupt +iio-trig-periodic-rtc +iio-trig-sysfs +iio_dummy +iio_hwmon +ili210x +ili922x +ili9320 +imm +imon +ims-pcu +imx074 +imx_thermal +ina209 +ina2xx +industrialio +industrialio-triggered-buffer +inet_diag +inexio +inftl +initio +input-polldev +int51x1 +intel_vr_nor +interact +interval_tree_test +inv-mpu6050 +io_edgeport +io_ti +ioc4 +iowarrior +ip6_gre +ip6_tables +ip6_tunnel +ip6_vti +ip6t_MASQUERADE +ip6t_NPT +ip6t_REJECT +ip6t_SYNPROXY +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_mh +ip6t_rpfilter +ip6t_rt +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6table_security +ip_gre +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netnet +ip_set_hash_netport +ip_set_hash_netportnet +ip_set_list_set +ip_tables +ip_tunnel +ip_vs +ip_vs_dh +ip_vs_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 +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ipg +iphase +ipheth +ipip +ipmi_devintf +ipmi_poweroff +ipmi_si +ipmi_watchdog +ipoctal +ipr +ips +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_SYNPROXY +ipt_ULOG +ipt_ah +ipt_rpfilter +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +iptable_security +ipw +ipw2100 +ipw2200 +ipwireless +ipx +ir-jvc-decoder +ir-kbd-i2c +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +ir-rc5-decoder +ir-rc5-sz-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sony-decoder +ir-usb +ircomm +ircomm-tty +irda +irda-usb +irlan +irnet +irtty-sir +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isofs +isp116x-hcd +isp1362-hcd +isp1704_charger +isp1760 +it913x-fe +itd1000 +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iw_nes +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsm +kafs +kalmia +kaweth +kbic +kbtab +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keucr +keyspan +keyspan_pda +keyspan_remote +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +ko2iblnd +kobil_sct +ks0108 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksocklnd +ksz884x +ktti +kvaser_pci +kvaser_usb +kvm +kvm-pr +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 +leds-88pm860x +leds-adp5520 +leds-bd2802 +leds-blinkm +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-lm3530 +leds-lm3533 +leds-lm355x +leds-lm3642 +leds-lp3944 +leds-lp5521 +leds-lp5523 +leds-lp5562 +leds-lp55xx-common +leds-lp8501 +leds-lp8788 +leds-lt3593 +leds-max8997 +leds-mc13783 +leds-ot200 +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pca9685 +leds-pwm +leds-regulator +leds-tca6507 +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-oneshot +ledtrig-timer +ledtrig-transient +legousbtower +lg-vl600 +lg2160 +lgdt3305 +lgdt330x +lgs8gxx +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +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 +libsrp +lightning +line6usb +lineage-pem +linear +lirc_bt829 +lirc_dev +lirc_igorplugusb +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +litelink-sir +lkkbd +ll_temac +llc +llc2 +llog_test +lm25066 +lm3533-als +lm3533-core +lm3533-ctrlbank +lm3533_bl +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 +lov +lp +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp8755 +lp8788-charger +lp8788_bl +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc2978 +ltc4151 +ltc4215 +ltc4245 +ltc4261 +ltv350qv +lustre +lv5207lp +lvfs +lz4 +lz4_compress +lz4hc +lz4hc_compress +m25p80 +m2m-deinterlace +m52790 +m88rs2000 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +ma600-sir +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +mac80211 +mac80211_hwsim +mac802154 +mac_hid +macb +macvlan +macvtap +mag3110 +magellan +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +matrix-keymap +matrix_keypad +matrox_w1 +matroxfb_DAC1064 +matroxfb_Ti3026 +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +max1111 +max11801_ts +max1363 +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max2165 +max3100 +max34440 +max517 +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77686 +max77693 +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925-regulator +max8925_bl +max8925_onkey +max8925_power +max8952 +max8973-regulator +max8997 +max8997_charger +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 +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp4725 +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdc +mdc800 +mdio +me4000 +me_daq +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mem2mem_testdev +memory-notifier-error-inject +memstick +mena21_wdt +metro-usb +metronomefb +mfd +mga +mgc +michael_mic +microread +microread_i2c +microtek +mii +minix +mip6 +mite +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mma8450 +mmc_block +mmc_spi +mms114 +mos7720 +mos7840 +moxa +mpoa +mpr121_touchkey +mpt2sas +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +mrst_max3110 +ms_block +msdos +msp3400 +mspro_block +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt29f_spinand +mt312 +mt352 +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtd_dataflash +mtdblock +mtdblock_ro +mtdoops +mtdram +mtdswap +mtip32xx +mtouch +multipath +musb_am335x +musb_dsps +musb_hdrc +mv88e6060 +mv88e6xxx_drv +mv_u3d_core +mv_udc +mvmdio +mvsas +mvumi +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxl111sf-demod +mxl111sf-tuner +mxl5005s +mxl5007t +mxser +myri10ge +n_hdlc +n_r3964 +n_tracerouter +n_tracesink +nand +nand_bch +nand_ecc +nand_ids +nandsim +natsemi +nau7802 +navman +nbd +nci +ncpfs +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netlink_diag +netprio_cgroup +netrom +netxen_nic +newtonkbd +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 +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nf_synproxy_core +nf_tables +nf_tables_arp +nf_tables_bridge +nf_tables_ipv4 +nf_tables_ipv6 +nfc +nfc_digital +nfcsim +nfcwilink +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nfs +nfs_acl +nfs_layout_nfsv41_files +nfsd +nfsv2 +nfsv3 +nfsv4 +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 +nft_limit +nft_log +nft_meta +nft_nat +nft_rbtree +nft_reject_ipv4 +nftl +ngene +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_daq_700 +ni_daq_dio24 +ni_labpc +ni_labpc_cs +ni_labpc_pci +ni_mio_cs +ni_pcidio +ni_pcimio +ni_tio +ni_tiocmd +nicstar +nilfs2 +niu +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 +ns558 +ns83820 +nsc-ircc +ntc_thermistor +ntfs +null_blk +nvidiafb +nvme +nx-compress +nx-crypto +nxt200x +nxt6000 +obdclass +obdecho +objlayoutdriver +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stack_o2cb +ocfs2_stack_user +ocfs2_stackglue +ocrdma +of_mmc_spi +of_serial +ofpart +old_belkin-sir +olpc_apsp +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 +output +ov2640 +ov5642 +ov6650 +ov7640 +ov7670 +ov772x +ov9640 +ov9740 +overlayfs +oxu210hp-hcd +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +palmas-regulator +pandora_bl +panel +paride +parkbd +parport +parport_ax88796 +parport_cs +parport_pc +parport_serial +pasemi_edac +pasemi_nand +pata_ali +pata_amd +pata_arasan_cf +pata_artop +pata_atiixp +pata_atp867x +pata_cmd640 +pata_cmd64x +pata_cs5520 +pata_cs5530 +pata_cs5536 +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_sc1200 +pata_sch +pata_serverworks +pata_sil680 +pata_sis +pata_sl82c105 +pata_triflex +pata_via +pc300too +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_can +pch_phub +pch_uart +pch_udc +pci +pci-stub +pci200syn +pcips2 +pcmcia +pcmcia_core +pcmcia_rsrc +pcmciamtd +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 +phison +phonet +phram +phy-core +phy-exynos-dp-video +phy-generic +phy-gpio-vbus-usb +phy-isp1301 +phy-rcar-usb +phy-samsung-usb +phy-samsung-usb2 +phy-samsung-usb3 +physmap +physmap_of +pixcir_i2c_ts +pktcdvd +pktgen +pl2303 +plat-ram +plat_nand +platform_lcd +plip +plusb +pluto2 +plx_pci +pm-notifier-error-inject +pm2fb +pm3fb +pm80xx +pmbus +pmbus_core +pmc551 +pmcraid +pn533 +pn544 +pn544_i2c +pn_pep +port100 +poseidon +powermate +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +ppp_synctty +pppoatm +pppoe +pppox +pps-gpio +pps-ldisc +pps_core +pps_parport +pptp +prism2_usb +ps2mult +ps3-lpm +ps3_gelic +ps3disk +ps3flash +ps3rom +ps3stor_lib +ps3vram +pseries-rng +pseries_energy +psmouse +psnap +pt +ptlrpc +ptp +pvrusb2 +pwc +pwm-pca9685 +pwm-twl +pwm-twl-led +pwm_bl +pxa27x_udc +qcaux +qcserial +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qlogic_cs +qlogicfas408 +qmi_wwan +qnx4 +qnx6 +qt1010 +qt1070 +qt2160 +quatech2 +quatech_daqp_cs +quota_tree +quota_v1 +quota_v2 +qxl +r128 +r592 +r6040 +r8152 +r815x +r8169 +r8187se +r8188eu +r8192e_pci +r8192u_usb +r820t +r852 +r8712u +r8a66597-hcd +r8a66597-udc +rack-meter +radeon +radio-i2c-si470x +radio-keene +radio-ma901 +radio-maxiradio +radio-mr800 +radio-shark +radio-si4713 +radio-si476x +radio-tea5764 +radio-timb +radio-usb-si470x +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +ray_cs +rbd +rbtree_test +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-em-terratec +rc-encore-enltv +rc-encore-enltv-fm53 +rc-encore-enltv2 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-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-tbs-nec +rc-technisat-usb2 +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-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rc5t583-regulator +rcar_vin +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +redboot +redrat3 +reed_solomon +reiserfs +remoteproc +renesas_usbhs +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +rio-scan +rio500 +rionet +rivafb +rj54n1cb0c +rmd128 +rmd160 +rmd256 +rmd320 +rndis_host +rndis_wlan +rocket +romfs +rose +rotary_encoder +rp2 +rpadlpar_io +rpaphp +rpcsec_gss_krb5 +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt61pci +rt73usb +rtc-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-as3722 +rtc-bq32k +rtc-bq4802 +rtc-cmos +rtc-da9052 +rtc-da9055 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1742 +rtc-ds2404 +rtc-ds3232 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-generic +rtc-hid-sensor-time +rtc-isl12022 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max77686 +rtc-max8907 +rtc-max8925 +rtc-max8997 +rtc-max8998 +rtc-mc13xxx +rtc-moxart +rtc-msm6242 +rtc-palmas +rtc-pcf2123 +rtc-pcf2127 +rtc-pcf50633 +rtc-pcf8523 +rtc-pcf8563 +rtc-pcf8583 +rtc-ps3 +rtc-r9701 +rtc-rc5t583 +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 +rtc_cmos_setup +rtd520 +rtl2830 +rtl2832 +rtl8150 +rtl8180 +rtl8187 +rtl8188ee +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192se +rtl8723-common +rtl8723ae +rtl8723be +rtl8821ae +rtl_pci +rtl_usb +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtlwifi +rts5139 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rx51_battery +rxkad +s1d13xxxfb +s2250 +s2255drv +s2io +s2mps11 +s3fb +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s626 +s6e63m0 +s921 +saa6588 +saa6752hs +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7146 +saa7146_vv +saa7164 +saa717x +saa7706h +safe_serial +salsa20_generic +sata_inic162x +sata_mv +sata_nv +sata_promise +sata_qstor +sata_rcar +sata_sil +sata_sil24 +sata_sis +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sbe-2t3e3 +sbp_target +sbs-battery +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_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +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_tgt +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +sctp +sctp_probe +sdhci +sdhci-of-esdhc +sdhci-of-hlwd +sdhci-pci +sdhci-pltfm +sdio_uart +sdr-msi3101 +sdricoh_cs +sedlbauer_cs +seed +sep_driver +seqiv +ser_gigaset +serial2002 +serial_cs +serio_raw +sermouse +serpent_generic +serport +serqt_usb2 +ses +sfc +sh_eth +sh_veu +sha1-powerpc +shark2 +shpchp +sht15 +sht21 +si21xx +si4713-i2c +si476x-core +sidewinder +sierra +sierra_net +sil164 +sir-dev +sis +sis190 +sis5595 +sis900 +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_of_platform +sja1000_platform +skd +skel +skfp +skge +sky2 +sl811-hcd +sl811_cs +slcan +slip +slram +sm501 +sm501fb +sm7xxfb +sm_common +sm_ftl +smb347-charger +smc91c92_cs +smm665 +smsc-ircc2 +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +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-at73c213 +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt3328 +snd-bt87x +snd-ca0106 +snd-cmipci +snd-compress +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-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1938 +snd-es1968 +snd-firewire-lib +snd-firewire-speakers +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-hdmi +snd-hda-codec-idt +snd-hda-codec-realtek +snd-hda-codec-si3054 +snd-hda-codec-via +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-mona +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-mts64 +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-oxygen +snd-oxygen-lib +snd-page-alloc +snd-pcm +snd-pcxhr +snd-pdaudiocf +snd-portman2x4 +snd-powermac +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb-common +snd-sb16-dsp +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-atmel-pcm +snd-soc-core +snd-soc-si476x +snd-soc-simple-card +snd-sonicvibes +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usb-usx2y +snd-usbmidi-lib +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx-lib +snd-vx222 +snd-vxpocket +snd-ymfpci +snd_ps3 +soc_camera +soc_camera_platform +soc_mediabus +soc_scale_crop +softdog +softing +softing_cs +solo6x10 +solos-pci +sony-btf-mpx +soundcore +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-dw +spi-dw-midpci +spi-gpio +spi-lm70llp +spi-oc-tiny +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-sc18is602 +spi-tle62x0 +spi-topcliff-pch +spi-xcomm +spi_ks8995 +spidev +spufs +squashfs +sr9700 +ssb +ssb-hcd +ssd1307fb +ssfdc +sst25l +ssu100 +st +st1232 +st_accel +st_accel_i2c +st_accel_spi +st_drv +st_gyro +st_gyro_i2c +st_gyro_spi +st_magn +st_magn_i2c +st_magn_spi +st_pressure +st_pressure_i2c +st_pressure_spi +st_sensors +st_sensors_i2c +st_sensors_spi +starfire +stb0899 +stb6000 +stb6100 +ste_modem_rproc +stex +stinger +stir4200 +stk1160 +stkwebcam +stmmac +stmpe-keypad +stmpe-ts +stowaway +stp +streamzap +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +svcrdma +svgalib +sx8 +sym53c500_cs +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink +synclink_cs +synclink_gt +synclinkmp +sysv +t1pci +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +tc3589x-keypad +tca6416-keypad +tca8418_keypad +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bic +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 +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-kstrtox +test-string_helpers +test_power +tg3 +tgr192 +therm_pm72 +thmc50 +ti-adc081c +ti_dac7512 +ti_usb_3410_5052 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timb_dma +timberdale +timblogiw +timbuart +timeriomem-rng +tipc +tlan +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmiofb +tmp006 +tmp102 +tmp401 +tmp421 +tmscsim +toim3232-sir +touchit213 +touchright +touchwin +tpci200 +tpm-rng +tpm_atmel +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm_i2c_stm_st33 +tpm_ibmvtpm +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-charger +tps65090-regulator +tps65217 +tps65217-regulator +tps65217_bl +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +tranzport +tridentfb +ts2020 +ts_bm +ts_fsm +ts_kmp +tsc2005 +tsc2007 +tsc40 +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +tsl4531 +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tuner_it913x +tunnel4 +tunnel6 +turbografx +tusb6010 +tvaudio +tveeprom +tvp5150 +tw2804 +tw9903 +tw9906 +tw9910 +twidjoy +twl4030-madc +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_charger +twl4030_keypad +twl4030_wdt +twl6030-gpadc +twl6040-vibra +twofish_common +twofish_generic +typhoon +u132-hcd +u_ether +u_rndis +u_serial +uartlite +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +uda1342 +udc-core +udf +udl +udlfb +udp_diag +ueagle-atm +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_sercos3 +uli526x +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 +unix_diag +upd64031a +upd64083 +usb-serial-simple +usb-storage +usb3503 +usb8xxx +usb_8dev +usb_debug +usb_f_acm +usb_f_ecm +usb_f_ecm_subset +usb_f_eem +usb_f_mass_storage +usb_f_ncm +usb_f_obex +usb_f_phonet +usb_f_rndis +usb_f_serial +usb_f_ss_lb +usb_gigaset +usb_wwan +usbatm +usbdux +usbduxfast +usbduxsigma +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmisc_imx +usbmon +usbmouse +usbnet +usbserial +usbsevseg +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +uwb +ux500 +v4l2-common +v4l2-dv-timings +v4l2-int-device +v4l2-mem2mem +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vfio +vfio-pci +vfio_iommu_spapr_tce +vga16fb +vgastate +vgg2432a4 +vhci-hcd +vhost +vhost_net +vhost_scsi +via +via-ircc +via-rhine +via-sdmmc +via-velocity +via686a +videobuf-core +videobuf-dma-contig +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videobuf2-core +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-memops +videobuf2-vmalloc +videodev +viperboard +viperboard_adc +virtio +virtio-rng +virtio_balloon +virtio_blk +virtio_console +virtio_mmio +virtio_net +virtio_pci +virtio_ring +virtio_scsi +virtual +visor +vivi +vlsi_ir +vmac +vme +vme_pio2 +vme_user +vme_vmivme7805 +vmk80xx +vmwgfx +vmxnet3 +vp27smpx +vringh +vsock +vsxxxaa +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +w1-gpio +w1_bq27000 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1_smem +w1_therm +w35und +w5100 +w5300 +w6692 +w83781d +w83791d +w83792d +w83793 +w83795 +w83977af_ir +w83l785ts +w83l786ng +w9966 +wacom +wacom_i2c +wacom_w8001 +walkera0701 +wanxl +warrior +wbsd +wcn36xx +wdrtas +wdt_pci +whc-rc +whci +whci-hcd +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 +wlags49_h25_cs +wlags49_h2_cs +wlcore +wlcore_sdio +wlcore_spi +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x-ts +wm831x_backup +wm831x_bl +wm831x_power +wm831x_wdt +wm8350-hwmon +wm8350-regulator +wm8350_power +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-regulator +wm97xx-ts +wp512 +wusb-cbaf +wusb-wa +wusbcore +x25 +x25_asy +x_tables +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 +xgene-enet +xgifb +xgmac +xilinx_ps2 +xilinx_uartps +xillybus_core +xillybus_of +xillybus_pcie +xirc2ps_cs +xircom_cb +xor +xpad +xprtrdma +xsens_mt +xt_AUDIT +xt_CHECKSUM +xt_CLASSIFY +xt_CONNSECMARK +xt_CT +xt_DSCP +xt_HL +xt_HMARK +xt_IDLETIMER +xt_LED +xt_LOG +xt_NETMAP +xt_NFLOG +xt_NFQUEUE +xt_RATEEST +xt_REDIRECT +xt_SECMARK +xt_TCPMSS +xt_TCPOPTSTRIP +xt_TEE +xt_TPROXY +xt_TRACE +xt_addrtype +xt_bpf +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_conntrack +xt_cpu +xt_dccp +xt_devgroup +xt_dscp +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_iprange +xt_ipvs +xt_length +xt_limit +xt_mac +xt_mark +xt_multiport +xt_nat +xt_nfacct +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_realm +xt_recent +xt_sctp +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_tcpudp +xt_time +xt_u32 +xtkbd +xts +xusbatm +xz_dec_test +yam +yealink +yellowfin +yenta_socket +yurex +zaurus +zd1201 +zd1211rw +zforce_ts +zhenhua +zl10036 +zl10039 +zl10353 +zl6100 +zlib +zr364xx +zram +zte_ev --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/ppc64el/generic +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/ppc64el/generic @@ -0,0 +1,13630 @@ +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/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/atm/suni 0x9b4ebcd7 suni_init +EXPORT_SYMBOL drivers/bcma/bcma 0x17a9e8f7 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 0x023c685d pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0x16b9b9b5 pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x40f60823 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x87a454c0 pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0x97c392ed paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x9a0620ac pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xb1fb9abc pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xbaf1f607 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0xc4dd35d3 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xc651b3c8 paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0xe10da317 pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0xf4b467f3 pi_disconnect +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x1f992bb3 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x3891cc42 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x567c800c dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x57d50bee dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x5e279717 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xfa0c3df2 dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/edac/edac_core 0xf744990e edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04d0f641 fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x070019e3 fw_core_remove_card +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 0x1877d474 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0x19080dc9 fw_iso_buffer_init +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 0x43c00e41 fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4c1e1594 fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x551fdc1c fw_card_initialize +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 0x7ab1c33b fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7bdb11e7 fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8669a61b fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x973255bf fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9d71228d fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa19799c0 fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0xac305eac fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb96ae22f fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb9ce65f9 fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xbe0f11b0 fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc3c0208d fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc57012af fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc8fb4f0d fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd6a9eb44 fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0xda8bded2 fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe3ff7fb0 fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe43dc2be fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe58d468c fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf7b25e81 fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xfa95e521 fw_core_add_address_handler +EXPORT_SYMBOL drivers/fmc/fmc 0x0f18bb71 fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0x17189a21 fmc_show_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x1ef7b6ea fmc_driver_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x3633cc76 fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x4018158f fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x546ba1d8 fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0x5eab07d6 fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0xa85eb156 fmc_find_sdb_device +EXPORT_SYMBOL drivers/fmc/fmc 0xc249b561 fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0xce0be712 fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0xd60b659b fmc_free_sdb_tree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00025916 drm_mode_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00667d8a drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x01f51909 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x026c0d6b drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07e886e4 drm_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07f71bc1 drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ad78de2 drm_core_reclaim_buffers +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0bb39b38 drm_sysfs_connector_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e9caec0 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ef408f6 drm_compat_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f178994 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f8782c3 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fa82377 drm_framebuffer_unregister_private +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 0x10a66188 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12baa166 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12c6276a drm_buffer_read_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13492b1d drm_prime_init_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x142b8b35 drm_buffer_copy_from_user +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x156d56ac drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15a73790 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x189f6401 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19c8eeee drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19e44324 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b025dea drm_sysfs_connector_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b9dca66 drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1c30cf98 drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1c507c95 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e677ebf drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f0d4533 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f7a8a8b drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1fa0ca6b drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20b37c60 drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20c73c05 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2398e80d drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26df7727 drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x283374b6 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29ad006c drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a0e7553 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a942ab2 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2aa34f68 drm_mode_connector_detach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ab835a9 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d10e4e8 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d7292c8 drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d80be4d drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e2ab946 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f0b064f drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x306ebb7f drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3295380e drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x33dabca6 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34c950fb drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3613f822 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36f91ef3 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac0ed55 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac9d69a drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ae7b2d0 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d4b8108 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f3e13a4 drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f78e2d8 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4158d6a4 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x427627d4 drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43384bd9 drm_buffer_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x438e0ec8 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44997183 drm_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4561b038 drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x456fd3f2 drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x46dfdced drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x498dcb5e drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49fabf0d drm_mm_remove_node +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 0x4ff466b9 drm_gtf_mode +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 0x52836576 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x543e8f96 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56715957 drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56e6e184 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57d22393 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57dca922 drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b84cbdc drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d7318dc drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5dab1e1f drm_bridge_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6090be61 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61651519 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6175762d drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x620f3450 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64ba80d7 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65b41c50 drm_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66803841 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a23c624 drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a94c43f drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b6d7375 drm_timestamp_precision +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cc3c29e drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cee2e42 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d503647 drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f5d14e3 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7340bf7a drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x76b58a09 drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x77667464 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x798b73e7 drm_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79d159f0 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a4e7297 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7acd303c drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7af834b9 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b63d936 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7babd6fb drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c319baa drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7dac6579 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ddfe09c drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f332b35 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8042b122 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x812fb7b2 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81ba930c drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81be5138 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81e773e4 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x854dca94 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x856579e6 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x85bc8991 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87529a57 drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x878bc47f drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8949602f drm_platform_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b34dba8 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8bb2f94a drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c144093 drm_global_mutex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c7908a2 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d72eccf drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8dfb019d drm_buffer_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8e5f13d9 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f7c7a74 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f7df3a7 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x923b4d3e drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95ae65d9 drm_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9745d638 drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x982edef0 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a0d07a4 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a74e38c drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9aa158e1 drm_dev_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d70fc2a drm_rnodes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9eccfe56 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9efd0e47 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa04a9300 drm_get_connector_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1f4e9e6 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa337f835 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa3a02e8c drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa3f9e616 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa44e7bfb drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5dbd572 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa7115621 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa74b8297 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa97fc835 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac8e7ee9 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaed94a4d drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafb0cb6f drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb15ab81a drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb1b9d025 drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb2a0a604 drm_get_encoder_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb3bd762f drm_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5099e5b drm_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5540008 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb572a9f0 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb77efbcb drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8e678a5 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb93eeead drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb94480a2 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb95beb55 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbad6f9e3 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc114534 drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbcd11f72 drm_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe001c53 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbeb61b5d drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfe4900a drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc0cb867c drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc231c141 drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc294c18b drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4000f9f drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc414c422 drm_vblank_offdelay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6900757 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7f7cc11 drm_vma_offset_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc90a9164 drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc98e1ad6 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc9f257dd drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca89da74 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcaf47943 drm_core_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xccddaa7f drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd89e761 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcec158f0 drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcef1839d drm_bridge_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd0083532 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1c53d5a drm_core_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2fbfaab drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd552eeec drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5e8cc56 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd7d76128 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd7e14cf6 drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd98fb7b1 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdde5c6d0 drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0xddf78eac drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf988157 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdfeb04eb drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2ef97e4 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe325e595 drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe3268548 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe511ad15 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5ece879 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe63652b5 drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6f46e6e drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe815b8e6 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe84bd1fa drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb04bab1 drm_prime_destroy_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee862877 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef9abb8d drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xefdf9b69 drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf020f291 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf03509d6 drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf08d712a drm_mode_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf219f21d drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3fc81e7 drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf446a0e2 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4cd5627 drm_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf52e6161 drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6d3a423 drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf736e1c5 drm_get_last_vbltimestamp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf80a90e9 drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf846b580 drm_core_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf84e947f drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf89d47a3 drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf97f9cb8 drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfaa73afc drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb497216 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbebe882 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcccf3f9 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd063935 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe4a68c7 drm_mode_vrefresh +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 0x0f8d2c7f drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1516b480 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x194aa918 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1d03529b drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1d428507 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2356a631 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2deb687a drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3060af32 drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34b0e702 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3b3743d1 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x49f64846 drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4d196aa0 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5f0f964d drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x603660d7 drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6550d239 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x689790ad drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x74183a1c drm_fb_helper_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 0x87287a50 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8abe093a drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8c5ac6fd i2c_dp_aux_add_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8dd5d8d2 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x95f1ca4f drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9e2b235b drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa597e2fe 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 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xab901bc6 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaf81fae7 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb0492aae drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb13eed8b drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb4f77af3 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbaccd55b drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc1286aef drm_dp_aux_unregister_i2c_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc5c2de07 drm_fb_helper_restore_fbdev_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcb84934a drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdc9cf624 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe0eeb539 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe26cea3d drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe2c63a13 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xedde5972 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf3e08b3c drm_dp_aux_register_i2c_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf5cae933 drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf6b6d223 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf9a6a057 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x13c14d14 drm_usb_exit +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x6cdfe7d7 drm_get_usb_dev +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0xcb7ff21f drm_usb_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x150af198 ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2593cea8 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x262b9e21 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2e244ed6 ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3467c6b2 ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x346ea5e9 ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x43c7dc08 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x44817efa ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x45c48900 ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x48ee6f5c ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4e8dd264 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x525e8e84 ttm_bo_unmap_virtual +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 0x5c4631e3 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6052860c ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x656952b2 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x66bf5162 ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x68839c5a ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6b5b24b2 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6b983f6e ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6b9b07da ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6cd0d585 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6e211d0a ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x74cb9de5 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7d55da85 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7ffdc2fb ttm_bo_device_release +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 0x86a10a1e ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x880a15ad ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x886cf055 ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x891afa2f ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x89a443de ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x89f5f6a7 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8d14adbf ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8e857796 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x947fe582 ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x95052540 ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x95972db3 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x962e4222 ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x981ce4f6 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9d957e20 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9eadab99 ttm_prime_object_init +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 0xa9e9743e ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaf91c426 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb031f101 ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb431f01b ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb83c6470 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb90dfd51 ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc2a0b712 ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc3047bc4 ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc443680e ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc475efe0 ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc4f9dd94 ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc5f0c2da ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc6952f4b ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce6e43a8 ttm_base_object_lookup_for_ref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd24ef8df 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 0xd9597b10 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdd7cc3a1 ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe4b29027 ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe55dcf2c ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf0d55108 ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf5fb1ab0 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf889ea38 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf8bebb30 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfef193d9 ttm_bo_manager_func +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 0x01b9926a i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x0a9b807e i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x10df0478 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x2f017077 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xf3e81da5 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0x025302fb amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x45177fac st_accel_common_probe +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xd6628a7f st_accel_common_remove +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x08d3d7d3 hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x5c246434 hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x71bb45a6 hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc6abfdb9 hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xfeecda6a hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x483c4591 hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x68195bd2 hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x074d7047 st_sensors_trigger_handler +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x1ae2bdb0 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x2921b444 st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x495eafe8 st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x92eb67fd st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x95aae49f st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x9c080b84 st_sensors_sysfs_get_sampling_frequency +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xae761d12 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb2863441 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xbd58207d st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xc24f3556 st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xd22e993b st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xf3d6bc06 st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xf590480d st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xfb8c8260 st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xfe1681fe st_sensors_sysfs_set_sampling_frequency +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0xd10be84a st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0xc3c0ea7d st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x41bda6a7 st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x5e27408f st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xcddb774c adis_enable_irq +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xefd5de21 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/industrialio 0x1e7314e9 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x2dfb4908 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x3185c870 iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x3b68d3e8 iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x4babb9d0 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x516f3378 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x542b0abb iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x635bf7c2 iio_buffer_write_length +EXPORT_SYMBOL drivers/iio/industrialio 0x71be395c iio_buffer_store_enable +EXPORT_SYMBOL drivers/iio/industrialio 0x84b3b544 iio_buffer_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x85b36701 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x877a7156 iio_buffer_read_length +EXPORT_SYMBOL drivers/iio/industrialio 0x87c5f913 iio_buffer_show_enable +EXPORT_SYMBOL drivers/iio/industrialio 0x9c1be60f iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0xa899fff7 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0xd23036e4 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xdd59c2bb iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe077a858 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0xe5ed2fe0 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0xe64c8f0d iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xeaac43f9 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0xee3cddee iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0xf09c4a18 iio_buffer_register +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0xbfd6740f iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0xe3021f9e iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x6543b8e1 iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x88fa22dd iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x4b8d7e39 st_magn_common_remove +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x55b6d661 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x1d476ade st_press_common_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x8596ad13 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 0x446fd7c9 rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x50b67e7f rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x59252c9d rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x02d9c4f7 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x1fce7a72 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x24d63aaf ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x26971089 ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x273270b4 ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x28bc1407 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x4fa55655 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x5a88106e ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x607847db ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x91b62b97 ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa5270d3a ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb3423ed8 cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc22c1516 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe646ca0c ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf2642f14 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf95c3c82 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xfa455150 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0245d489 ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x06c82fcf mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0ad936ea ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x139e0997 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x14f84918 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x14fa7648 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x171f99f1 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1ea19b61 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22f3cf93 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x25c95742 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x27b1a92f ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x296852da ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2a5f880b ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2e9784cb ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3075e946 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x308e32a9 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x33d30b95 ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3649227f ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x378587b2 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x389fec3e ib_resolve_eth_l2_attrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x500d12a0 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5019bca0 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5127809c ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5127a324 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5240c204 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x550e5710 ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x557d194e ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x57fd3130 ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x59df3afc ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5b35ec8d ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5db60021 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5fb5d3e9 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x635a0fbc ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e030e26 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e2ab07d ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7223e60c ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7b718ab4 ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7d1a76d3 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7d6fd836 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7e6d9e5c ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7f6365fa ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7f655e50 ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x811d00a3 ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8a67890f ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8a83c076 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x90f2e86d ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9365a6a1 ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x95d059fc ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x95f0bc14 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x96b9a93b ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa432baf6 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xac217df9 rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xac559a8a rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xadef7283 ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaf852386 ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb5036927 ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb50fee70 ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc1c9b053 ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc5171159 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc84a02b6 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xca0d5524 ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcecf62fc ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd0664380 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd1009577 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd32f8539 ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd63a4a90 ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd645faa3 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd654dc00 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd9b87464 ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdc1bcaf8 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe668ae7b ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe66f43b0 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe766798a ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe898ff21 ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe8b2785b ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xee848da7 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf01b91da ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf41ddc7f ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf8cc68e4 ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfa80cd1a ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfd0e1452 ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfe8984f0 ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xffe4d85a ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x0740c5e7 ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x228b1948 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x3d1e32ba ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x3dadec78 ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x4373cb04 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x55393086 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7576f021 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x883ee2aa ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x946d5d27 ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xcd95eafb ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xcf5af201 ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xf1bb65e1 ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xf2269d0b ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x22f07253 ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x36f57553 ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x4ccb7ff8 ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x5328d7a6 ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x72a84127 ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x738e769b ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x8c2c072d ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9a1cd50d ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9cf4f9ee ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xc76cd123 ib_sa_join_multicast +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 0x0773eaad iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x32c818b5 iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x43d77d55 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x88c4da00 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd304e58f iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xe0cc2a94 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xe416e0ec iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf95135df iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x00635743 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x017e8e3f rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x140efa60 rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x19b8fa6e rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x214ef7d7 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2646fb88 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x298f51f9 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2bbfe498 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3d175c36 rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x490f39b9 rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x5302ec67 rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6c3e15d6 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x745cec68 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x82de82b6 rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9206d1e2 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc1176828 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd8fab462 rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xde97825f rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe13eeeee rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xeabd3e45 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xffe95963 rdma_disconnect +EXPORT_SYMBOL drivers/input/gameport/gameport 0x043d0fc1 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x2dfcb625 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x5e8eb484 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x64c9d289 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x7df6308a gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x900866cb gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0x9aabbb53 gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0xa82545b2 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xa8f7d7dc gameport_unregister_port +EXPORT_SYMBOL drivers/input/input-polldev 0x16eec679 input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x3da2d09a input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xdfbb424f input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xff44538f input_unregister_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0xd40b5c1b matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x05f354e1 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x1adf5c4b ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xbeeed695 ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0xc30f7129 ad714x_remove +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x2ab8a214 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 0x0262bd56 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0x396bdae9 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0x3b2db433 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0x6269e3ae sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xbd18ea4b sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0xdc287708 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x2790b11c ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xc6a0cbbf ad7879_probe +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x0784f94c capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x0feb2368 attach_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 0x47d3fc51 capi_info2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x51c59aa7 capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x60fd62d6 capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71baf2a5 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7292ab34 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x72a25a72 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7481a5e1 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7a33596c capi20_get_serial +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7e6f1307 capi20_get_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8b7f3ead capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f699913 capilib_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f836443 capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9e341d06 capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9f823278 register_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa165d27 capilib_release_appl +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xbae43588 capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xed061606 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xfd552f7a capi_message2str +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x0d983d13 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x2c1f0b3f b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x526af599 b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x594be57a b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x5ad8b664 b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x6588c2b6 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x65e6aea9 b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x826c81c4 b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x971fd1fe b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xa1e78a1d b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb06004e0 b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xe28be696 b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xe9e289df b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xebde728b b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xf3d9adc4 avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x044d016a t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x1ad8e133 b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x1d528a19 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x4f33aad4 b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x5f0ce9f4 b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x8ea87f6b b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xb8221c99 b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xecd55f04 b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xfa705a51 b1dma_send_message +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 0x57f4721f mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x73b86f29 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xcfffb78b mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xfd461853 mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x1c7fd1c3 mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x4e3a7bf9 mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x01390594 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x07f4f2ce hisax_unregister +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x132075f7 FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x148f0c99 FsmFree +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x3fe356c5 hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x6fe0eb85 FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +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 0x3a182ad4 isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x787f1f33 isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x8436ee90 isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xce5e3265 isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xdcb6ebbb isac_setup +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x8771d745 isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xb634694e register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xfa06820f isdn_register_divert +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xfae473da isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x3b71e4fc isdnhdlc_decode +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x59cc8a7e isdnhdlc_out_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x8ee38862 isdnhdlc_rcv_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0xfd9d4c09 isdnhdlc_encode +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x041587f6 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0e331092 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x10c54cfc recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1e430202 mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x355b8890 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x57d6295c mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5c526651 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5cb05d19 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5f645cf3 mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x63c365b4 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6d292808 mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8d3bc55a create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9148c2a4 bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa25fa769 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa5dbfe6a mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa88560fe mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb109a173 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb553d30a dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb75ae900 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xbd253ea0 bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc2e87bbd queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd240f251 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 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xeef57fd2 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf44c26a3 mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xfbc8bbee mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xfcab6b72 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xfe4f5ecc mISDN_FsmInitTimer +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 0x0e75c5bc closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0x2bb9a1da __closure_lock +EXPORT_SYMBOL drivers/md/bcache/bcache 0x32ef88ad closure_trylock +EXPORT_SYMBOL drivers/md/bcache/bcache 0x602677f1 closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0x6e9d8678 closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0x778a0994 closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe3c17af1 __closure_wake_up +EXPORT_SYMBOL drivers/md/dm-log 0x3e97c589 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0x84283bbd dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0x9799dec2 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0x9d1e9079 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x1af76082 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x3e0e3fdf dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x55b747fc dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0x57e2bf02 dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0x5abcb05d dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0xdd41a00e dm_exception_store_create +EXPORT_SYMBOL drivers/md/raid456 0xcac5dda3 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x02b152ce flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x1092752e flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x294f10a6 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x30c9e6b5 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x325d0210 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x3c30b953 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x54d761cb flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x6ba9f7dd flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x92b7e89d flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xbaeda43e flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xbfd108bd flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xe265d3ee flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xff924bb5 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/btcx-risc 0x495e4b0c btcx_calc_skips +EXPORT_SYMBOL drivers/media/common/btcx-risc 0x5f57ebcc btcx_riscmem_alloc +EXPORT_SYMBOL drivers/media/common/btcx-risc 0x7b0ef039 btcx_riscmem_free +EXPORT_SYMBOL drivers/media/common/btcx-risc 0xad2fe38b btcx_sort_clips +EXPORT_SYMBOL drivers/media/common/btcx-risc 0xc368f8e6 btcx_align +EXPORT_SYMBOL drivers/media/common/btcx-risc 0xcda0ded2 btcx_screen_clips +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 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x5b88faf6 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x5cb9604a cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0x6bc3213e cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0x81ffd1b7 cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc227dc67 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 0x4036c07a cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x22094224 tveeprom_read +EXPORT_SYMBOL drivers/media/common/tveeprom 0x97c9f655 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x11bf1df7 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x17523ce7 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x23c337e7 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x32706276 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x406502f0 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4a7c568d dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x524960a2 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x52ab7bee dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5c0ea535 dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6cc0729a dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6e783bda dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6ed285cc dvb_dmxdev_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 0x7924b81e dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7928799b 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 0x8579094d dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x85a5e7d3 dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8854bd51 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8c6ea288 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8e705ffd dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x91fff2a6 dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x934f3988 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x93931ee2 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x98f072ca dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9b35897d dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xaba921c4 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xacdc068d dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc6817f4f dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xcb728e1c dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xcf589e8c dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd68a099e timeval_usec_diff +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd71f2ffa dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd8f7184c dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe3dd0e34 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe44abf31 dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf28e7431 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfe984d2f dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-frontends/a8293 0x7320315d a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0x6acf96ce af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9033 0xc82e060a af9033_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x5261582a atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x0c932087 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x3f426ce9 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x6b87b30c au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xb172f30c au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xb77120c6 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xc0dde4a7 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xda5557a8 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xdffe8ca0 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xf18026dd au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x228d08fd au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0xb8485d47 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x6ae7028b cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0xfe2d94e6 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0x2e9fbf65 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x3af0c28c cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xeffa80ac cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0x7c5abb61 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x2d21b4a0 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x8300ace1 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0x3fa601db cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x28637e53 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x5015cadc dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x6d9c2f1c dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x79e7c663 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x9d858e18 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x044745f4 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x150ecb2e dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x177b6a3d dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x183762e7 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x1838e316 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x1c4426b7 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x35efbff5 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x36dbdccf dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x612cb789 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x6827d5fd dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xbe5445b1 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xca7a2eaa dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xccc57fbd dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xecba43bd dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xee639696 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0xb146b285 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x4fad70cd dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x63985bc2 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x89d768ec dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xbeb4acaf dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xbf5e2895 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xdd6aca0b dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x5d325fd6 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xb54d5eb3 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xc33071ae dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xfff090d9 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x1f7b7250 dib7000p_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x27b9b89e dib7000p_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x327588a3 dib7090_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x3af58fe7 dib7000p_get_agc_values +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x55104ced dib7000p_set_agc1_min +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x7516d01a dib7000p_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x90cb4fb0 dib7000pc_detection +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xb0ff85c4 dib7000p_update_pll +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xbd4b9967 dib7090_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xc296d05e dib7090_get_adc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xd23e3526 dib7000p_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xd3a348bf dib7090_slave_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xd940d339 dib7000p_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xda16663a dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xe1c1e184 dib7000p_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xfa3c3d4f dib7000p_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x0e3c74e4 dib8090p_get_dc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x1061da85 dib8000_remove_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x1db0a56a dib8000_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x2ed16189 dib8000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x30e3840e dib8000_update_pll +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x46d73aa8 dib8000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x51ad52a7 dib8000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x544aa83f dib8096p_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x614dd5bc dib8096p_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x68a6c726 dib8000_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x7d294cbe dib8000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x83700a50 dib8000_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x9017d9ca dib8000_pwm_agc_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xc8229e5a dib8000_get_adc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xd3513633 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xd5062511 dib8000_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xd53964e4 dib8000_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xec95afee dib8000_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xecd08202 dib8000_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x11ab907c dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x2a49ceeb dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x2e3546cd dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xbcd2b0e8 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xe74addea dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0xa4742da2 drxd_config_i2c +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0xd353c1bb drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0x16bb25c4 drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0x461c4894 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0xe39c6440 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0x2c8a1ac4 ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0xb23f3869 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x81fb36c5 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x8a2cfba5 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/it913x-fe 0x2893f8f2 it913x_fe_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0x3500b105 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0x97dba4b7 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0x97b63610 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0xe05593c6 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0xa1307048 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0xd7087290 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x2671142e lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x0635e335 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xabc2f376 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0x185674c6 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0x5a745a16 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0x2e782bc6 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0x768598e8 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x5b84de2d mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0x0fe9c3de mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x7600ea44 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0xaa372ba0 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0xf77a06a3 or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0x8fc05d0c or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2830 0x321cc97e rtl2830_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2830 0x8443c92e rtl2830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2832 0x6ce2bbbc rtl2832_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0x685256be s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0xfff5eb03 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x10b6a563 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xd599faa6 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0x7d2102f1 s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x9b470608 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0x57af0778 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0xcf33fea3 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0x03ff30f1 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0xe4f49f50 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x657329b9 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0x49515ee3 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0x10918b37 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0x2a72cf1c stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0xe68cebf5 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x4b27eb4c stv090x_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0xf96d562a stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x3206c5fe stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0xa7a6b4a1 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0x81fc954f tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0xfb6b7d61 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x153f1ecb tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x14b3ddb4 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xc4df4ea0 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0x982e26d3 tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x8fea36d7 tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0xb4dbe2a5 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x6bfd35b6 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0x92008f47 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x7baedcbb tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0xe6d05567 ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0x7ee5141d tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0xc916f87d ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0x5c62fcaf ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0x2184c838 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0xab45379e zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x9f4cfc61 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x0c60db73 flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x2cbd140a flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x9f34bde9 flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xaa162fa4 flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xb8eea9b0 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xce3f4f56 flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xd45989f0 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x03b76df2 bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x601518d8 bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x8ec4bf61 bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x8ff9fec9 bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x84726fb5 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 0xc6f2b14b bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xc94019a4 bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x1490e1b3 rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x371ea46e dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x3b948cbe dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x607d8e10 dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x6bb43587 dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x7c9345ce read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xa8662c3c dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xb5f89544 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xdad20570 write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0xdf848818 dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x232be5a7 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x9dc34042 cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xa034445b cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xc92646ab cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xdc218e35 cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x0157338f cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x6df299ac cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x72a40e45 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xa14e4eaa cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc954d2fb cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xd881024e cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x8374d10e vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xa2d46b7a vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x507434e8 cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x64458574 cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xaa157fc6 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xe6eceedb cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x10d22929 cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x2ddffeea cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x4c6f17a0 cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x8223a228 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x9343c496 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xd5a2a090 cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x18ff4713 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x30a3b1f3 cx88_free_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x32a7efb2 cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x35bf6c65 cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5af12479 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5c6e76bc cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x61e72164 cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x64d24d95 cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7a76039c cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x9dc07d43 cx88_risc_stopper +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa738a503 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa9cc3e65 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xaf1550be cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb3a48abb cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb5e162ff cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xbf1caa38 cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xbf7eda49 cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xccdbf625 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xdb1834f9 cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe87ccca7 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xeb5a2ee6 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xed25f0a0 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x2b3bf0f8 ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x415a8c20 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x79b7e1b4 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x7d287e13 ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x86ecdf2e ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xa397f6f5 ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xc2521328 ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xc4d8aceb ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xd3135fcf ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xd6464633 ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xdfb24144 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe04a0398 ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe13b9361 ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe21a1376 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xee7564e9 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xef0753b2 ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf88a9ea7 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04f19dc6 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x09b15391 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1f3009c9 saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x27524c47 saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x37f6b8f4 saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x3cc1e81e saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x45ba7a39 saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x69283ef1 saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x73039031 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x94fa984b saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x9e57c0ca saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xbee5e7fb saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xce5b952f saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xceb9d76a ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x3ca803c5 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x6de2dc92 soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x7a48d193 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x8090b896 soc_camera_lock +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x92c5ad9a soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xb71df18b soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xccaa9ec1 soc_camera_unlock +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xd6cc254d soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xdaef95c8 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 0x5f3e3558 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xa9546115 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xfe2c3a07 soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x0ce3dce7 soc_camera_client_scale +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x42a56d51 soc_camera_calc_client_output +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0xcd8acc3b soc_camera_client_s_crop +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0xfb5fcb0a soc_camera_client_g_rect +EXPORT_SYMBOL drivers/media/radio/tea575x 0x302dda43 snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0x7ff92022 snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0xa1364882 snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0xbf4715fa snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x71c5166f lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xb6fa0c4f lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xd6dc7808 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xde637120 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xdffa19ce lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xe0528056 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xe08e73da lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xfda7f6c8 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/rc-core 0x6ca8bd24 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0xfdff9a0c ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/tuners/e4000 0xc136f58f e4000_attach +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x0ec48092 fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0xab3b5d5a fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x726fcc66 fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x7c5032a0 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xce1ebbd1 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc2580 0xdd909be0 fc2580_attach +EXPORT_SYMBOL drivers/media/tuners/max2165 0x664c2085 max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0xe27eada2 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0xe733ccc3 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0xcc70a487 mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0x5f8e980f mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0xc24397a8 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0xb261bb99 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18212 0x40d9607e tda18212_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0x9418e4e2 tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tua9001 0x64eb04e8 tua9001_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 0x139d4589 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/tuner_it913x 0xd16659c9 it913x_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x05f2ac9d xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0x56a4a998 xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x3a94b246 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0xa0913334 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x03753278 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x09837869 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x1526ab60 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x33371e4e dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x3bc091a1 dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x457d8d30 dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x497b11bd dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x567f2548 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x5bc514d7 dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x0689e818 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x144a6f0d dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x50db1f7c dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x94e72071 usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xf280bdad dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xfa63e990 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xfbabbf0c dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x2a9a55f4 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 0x1c7af8bb dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x22683085 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x624d1a41 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x7ae06066 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x84340407 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x9c5f9a07 dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x9f07ab66 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 0xcd57225b dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xce7116e8 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xd684b0c8 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xe23520d9 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x183b57da em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x21cba1e3 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x361049b1 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x683a3ae8 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x6c48115c gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x78352180 gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xaa3129fa gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xb195fb8e gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xc9315912 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xea29a927 gspca_resume +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x2cf6d76e tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x5747902b tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xd1663e68 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x0848be7c ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x238fbfb6 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x42c8e001 v4l2_ctrl_next +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x4adaf0f3 v4l2_ctrl_query_menu_valid_items +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x53c9394f v4l2_ctrl_query_menu +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x5f96a661 v4l2_ctrl_check +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x3e873792 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 0x5e377bba v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xf24de15b v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x2d5b5c7b videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x587c94fe videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x7f867c94 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xbfc6ab1f videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xc00e5ac1 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xc017a67a videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x472b06d3 vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0373a4a1 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x08deb84b v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0c7f7bed v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x10460c24 v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x12f6c47e v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x136c0b04 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x140e371b v4l2_of_get_remote_port_parent +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1e07bb44 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x21936297 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x250472a9 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x25c8a621 video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x289d59d5 v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2e711099 video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3263ee63 v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x339782bc video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x39da57fa v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3a7135ea v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3b9b571f v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3db7f213 v4l2_of_get_remote_port +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x439f297e v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x47d88313 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5334eba8 __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5c566508 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5c9acf20 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5e2812e0 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6b738459 video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6d4b8ca4 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x73edeabc v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7510e869 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7652499a v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x77de0fcd v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7f923f2a v4l2_of_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8a4b4d37 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x930ba9aa v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x933cfe68 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x979f89f4 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x98cc5013 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9ea27958 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa149cb16 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa405925c v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa7e7dd10 v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xab276e34 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaf567486 v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb275f333 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb3bc55d8 v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb6f999cd v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb90cbedf v4l2_of_get_next_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbac4a225 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbcbacb41 v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc12cf8f8 v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc1316ad7 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc55e2d4e video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc5f0c5ea v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc9593251 v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcaed322c v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd43a18ea v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd8d3a9b2 video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xde566a23 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdf61d7e7 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe050a02a v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2663b59 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe463fbef v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe6fce6f2 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe8ef4088 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe932e45e v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe9b51091 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf158da30 v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf389d4d3 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf819067e v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfa19f28f v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfa1e5bef v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfa8ec591 v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xffbe6167 v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/memstick/core/memstick 0x01b91b56 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x0349fa2f memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x1985c0c8 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x2beb6c20 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x33a0fc77 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x52a81174 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x78859fa6 memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x9edb38b8 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xac40906a memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc4b0f22b memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0xcdec618b memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdc07e67e memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xea12c6bc memstick_free_host +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1238bc67 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1629493b mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1b162b0b mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2049ca0b mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x48488bd3 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x49246a4f mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x52872e65 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x56f83a7c mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5cab7d95 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x67b3af43 mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x71a5a3c8 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7dee02e1 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x82e3e8de mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8b117d89 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8f1255c8 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x900fcf78 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa4862262 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xae906b53 mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xaf71ebf5 mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb14ddf46 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xbd421bc5 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xbe3cf2ed mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc3c5cc52 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd07efef9 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd1d98392 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd84001be mpt_get_msg_frame +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 0xe196e405 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf2bf5561 mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xfda85413 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x074c8bf0 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x12bda3fc mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2075b5c1 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2269d187 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2461789e mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2aee9c74 mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2b9e1def mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x349a7c6b mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3ceb4477 mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x442751c4 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x48ce4da8 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5964adc0 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x61a3df74 mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x63e42335 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7e435c49 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8bc775e3 mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9fab3dde mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa4030f1f mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa635e3fa mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xae335229 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xcbc848ae mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xcf84f712 mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xed09cfdd mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf14ed102 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfc099343 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfcb6f22e mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfd23024e mptscsih_remove +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x0b5b2939 i2o_cntxt_list_remove +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x0cf9cb84 i2o_iop_find_device +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x0fab9995 i2o_driver_notify_controller_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x16f48f65 i2o_driver_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x1f338ca1 i2o_find_iop +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x2a843bef i2o_dump_message +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x2da1c768 i2o_msg_get_wait +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x4bdd64f7 i2o_driver_notify_controller_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x4d1b28bb i2o_cntxt_list_add +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x5b8b6594 i2o_event_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x67a81e32 i2o_device_claim_release +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x73f080ad i2o_parm_field_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x7ee39f8d i2o_driver_notify_device_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x85289830 i2o_parm_table_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x855fd558 i2o_msg_post_wait_mem +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x8c870bc4 i2o_status_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x9181c001 i2o_parm_issue +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x98ea1394 i2o_cntxt_list_get_ptr +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x9d376303 i2o_driver_notify_device_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xb4c00dcf i2o_controllers +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xb5ed4a5b i2o_driver_unregister +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xbd68c305 i2o_cntxt_list_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xd502698e i2o_exec_lct_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xedc86f27 i2o_device_claim +EXPORT_SYMBOL drivers/mfd/cros_ec 0x7bc4e3a5 cros_ec_prepare_tx +EXPORT_SYMBOL drivers/mfd/cros_ec 0xa32470a5 cros_ec_suspend +EXPORT_SYMBOL drivers/mfd/cros_ec 0xed2f4df8 cros_ec_remove +EXPORT_SYMBOL drivers/mfd/cros_ec 0xf4bcc1ed cros_ec_register +EXPORT_SYMBOL drivers/mfd/cros_ec 0xfacff6f2 cros_ec_resume +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x10a50809 pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x8962ca78 pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x064ac44c mc13xxx_irq_ack +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x1d1b36ab mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x25e39bd5 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x391f1f64 mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x3eeefbf6 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x5e0c2923 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x630c9cd5 mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x6f8eb785 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x7a82231e mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x9700f491 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x97c9e1dd mc13xxx_irq_request_nounmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xa9a7460f mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xccae685c mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/tps6105x 0x66db9b35 tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x77dc4137 tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0xa491cf65 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/misc/ad525x_dpot 0x1a498e53 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xffff6041 ad_dpot_probe +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x7daa3738 altera_init +EXPORT_SYMBOL drivers/misc/atmel-ssc 0x6f4db8c8 ssc_free +EXPORT_SYMBOL drivers/misc/atmel-ssc 0xdd11da74 ssc_request +EXPORT_SYMBOL drivers/misc/c2port/core 0x65e09956 c2port_device_unregister +EXPORT_SYMBOL drivers/misc/c2port/core 0x87b3fa12 c2port_device_register +EXPORT_SYMBOL drivers/misc/ioc4 0x7d48c7a9 ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0x937d8949 ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x04a2cdfa tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x0f16b6b8 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x206b699a tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x21e0b6a0 tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0x66083e20 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x9de3ca17 tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xa2307562 tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xa8c2ec46 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0xac4c02b7 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xae099999 tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xc76b4686 tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xd1169ded tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0xf4a4e65c tifm_map_sg +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0xee360c64 mmc_cleanup_queue +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0x28d219e1 mmc_spi_get_pdata +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0x2f79f2e7 mmc_spi_put_pdata +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x81bf8af0 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x8e0c6ae7 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xd42b35c8 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x2ebae6a7 map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xa3a37c56 unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xaff1fe8d do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xd3db1db5 register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x365a2cce mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x0e8314b3 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0xb90f2bf3 simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x5d6ddcc9 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0xc39bda80 mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/denali 0x02527979 denali_init +EXPORT_SYMBOL drivers/mtd/nand/denali 0x69b963af denali_remove +EXPORT_SYMBOL drivers/mtd/nand/nand 0x07e22eb4 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0x19f921c1 nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0x2a531e1d nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x31db9e1f nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0x77ad387e nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0xc0b64fd7 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x49273196 nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x57f23ec6 nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xb3ac5662 nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x26052e74 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 0xc86dca03 nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x57a31e57 nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x30708c00 onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x37d43607 flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x73cef554 onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xc377cd09 onenand_addr +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x016ffc0b arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x038b671b arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x398b56c0 alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x43863faf arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x4716171a arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x48e3b504 arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x5afd1d6b arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xa490a40d arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xc46638b4 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xfbe5b569 arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x1ed6db80 com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x247eb657 com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xcbd2a51a com20020_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x05df9f70 ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x0f1b492a ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x13778388 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x7631f08c ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x789f6181 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x98e11b7f NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xba047c28 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xc429ae0a ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xe37a19ba ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xfb4c118f ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0xaf79e550 cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x086d446e t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x16dba0ca cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x18c3dbf2 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x2eb01be0 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x5c8aee1d cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x606ee188 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x6fe28d5d cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x89d8c527 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x8c1210d6 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x915d9ed9 dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xb478be9a t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xbe4d7cc1 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xcd0ea9d8 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xcf77d9eb cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe24a1b54 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xee192bb0 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0071fec4 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x00d59e39 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x00e1116c cxgb4_enable_db_coalescing +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x054a78fb cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x09d8fab0 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0e4ab2d7 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x164eee45 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2bd9a105 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x347e47a7 cxgb4_disable_db_coalescing +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x365dd7bb cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x36998049 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x54f7d417 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5a89639e cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6728d57e cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6adb4453 cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7cf2d1ef cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7f4d37e3 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x84cbf36e cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8dfe9c4d cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x955c01e9 cxgb4_select_ntuple +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 0xb2b3f1f7 cxgb4_create_server_filter +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 0xdc5683dc cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xec94ee3d cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf6415242 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf8156948 cxgb4_port_chan +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 0x1f596da9 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 0x5efbc14b enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x76aa439f vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x9196d804 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x08ee3722 be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xb4b85e9c be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbab62e22 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x04139589 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1edcd55d mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x27c6fa15 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x330c4486 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3e95c217 mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x55038a34 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5aaebc19 mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5c1ee5f8 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5dea2eb6 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x743e7ea5 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x87fa8aa2 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x88136e7c mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8d3fa70b mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9a99cbfe mlx4_set_stats_bitmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9d07a83b mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa34f49ac mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb702719c mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb7b50be3 mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc096d1aa mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xce9f7ccc mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdb170479 mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdb3f7caa mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdd104318 mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe554924f mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeb363a5e mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xefc13c26 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0dc122db mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0fb57609 mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x183783ef mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x19cd679b mlx5_dev_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x24958b43 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3754960b mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x42bac805 mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x43a88033 mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4440d999 mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4d9ab8be mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x55dc759b mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x56e1a7df mlx5_dev_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x590044a6 mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x64e77561 mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x71ba806d mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8a75680b mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8d44696e mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x94cd52fd mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9f9db72a mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa59a3491 mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa7b270a9 mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xae4fdf89 mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaf9d3cd9 mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb49384d5 mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xba52b1bc mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc3f505a8 mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd4bf0651 mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x0344d306 hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x16169c00 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xd263b161 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xd3497210 hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xf2c5f372 hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x00034e3a irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x12ef3d51 irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x156fe303 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x46db3ecf sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x50ceac15 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x59b51e8f sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x6d4949c5 sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x93669ca7 sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xb6704f2e sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xbcf25834 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 0xb34a7575 mdio45_ethtool_spauseparam_an +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mii 0x07cebcff generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0x141d00ce mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0x4480b9ee mii_check_link +EXPORT_SYMBOL drivers/net/mii 0x947c501f mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0x990b6b8f mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0xa1bcefb6 mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0xb9ea149c mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0xe42bd555 mii_check_media +EXPORT_SYMBOL drivers/net/ppp/pppox 0x41fc97c8 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0x6b4773d2 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xb6e4bcc9 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0xe70c3d35 sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x04dbc259 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0x27cb4740 team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0x46a5b73f team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0x4c5c11d3 team_options_register +EXPORT_SYMBOL drivers/net/team/team 0x706feb6f team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0xa397a182 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0xaa5f13cd team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0xe9a0312b team_mode_unregister +EXPORT_SYMBOL drivers/net/usb/usbnet 0x25960290 usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0xa8439b48 usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/usb/usbnet 0xc84f1d2f usbnet_link_change +EXPORT_SYMBOL drivers/net/wan/hdlc 0x12529b65 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x45bdd98f register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x6cf7ae37 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0xaca719ea hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0xae545f30 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0xae8ae532 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xb51436ff unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xbe8bfcd0 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0xc76ddcb7 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xd36efb8d hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0xf7f49940 unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0xa98b041d i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x04019c03 reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x3011265c init_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x748a203e stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x017317e5 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x178cf6f9 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x33790e30 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x3b5c1a40 dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4e2481d5 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x53358ce3 ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x67a15bc2 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x67fcc000 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x8a565453 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x988a00a3 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xe5f1dc22 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfa60368a ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfbd7da8c ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x094e7b9a ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x1787f5fc ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x5810098c ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x6aa8ff36 ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x6ae78ad1 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8246be6c ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x895f9dc2 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8a209ded ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xaf096710 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x0199ec46 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x10682e34 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x27cf1694 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4c6ddcb4 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4e1380ee ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x6112e4fc ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x698fb8aa ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7a65bfad ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x89a95256 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 0x95ad6d0c ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x9fc97d25 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa834a7fa ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xc5a94035 ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcf3e1ca4 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0x7b7e2874 ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0x91fc76f5 ath9k_hw_wow_event_to_string +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0xae14fee0 ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0xf8d67c01 ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x09a1fb03 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2a4316a ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf22d5544 ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xfd26f1c0 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x002da330 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x017d95a3 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x036132ef ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x061176c5 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0643148f ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0c970f47 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1502310a ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x158c85a3 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x16a41f19 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1853894d ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1b2c0167 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1d05c061 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2131f79c ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2a9cadd6 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x30c2bf93 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x315140ef ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x358f844b ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x36278b49 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x399ad7e1 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3c0a02a7 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3f6d24fd ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3fac9831 ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4092f326 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x42af8da9 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4636ae90 ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4b2e286f ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4f53a77a ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4faf8922 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x52f220d7 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x555c374d ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x556f9fbc ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5712794c ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x57612edb ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x580e6053 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x60b4881a ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x60ef515e ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x658c3be0 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6c87d44d ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6e20f484 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6e95879f ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6ed8a5b7 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x73e7faf0 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x74c6ac32 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x78254959 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x79216f1c ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x79484b42 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x796c4eb6 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7a213f27 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7bf9dcf6 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7ef13b32 ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8100a624 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x85911089 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x85e2ca95 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x868a777e ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8834406a ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x894299a3 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8a0c7dec ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8af0be0e ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8d7f7dbe ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x91bbd5fb ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x92a90534 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x95a9bbfa ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x976862fd ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x977639ce ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9e488640 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa36c4fc4 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa3a722e6 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb4287182 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb6cee56f ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb9928498 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xba836c55 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbb6df27c ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbb89b59b ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbe96617b ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc1a9e392 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc62dc1dc ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc9a3ba7e ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xca258bf8 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcaf3ea4a ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xce3819b0 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcea199f7 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd215a928 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd9bd4088 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdc553e17 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdfddb7e7 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe3d6024c ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe5d459f1 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe5f1591c ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe9dcf8bd ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xec51c6ab ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xecf6020d ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xef24c4ca ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xefa4bcaa ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf0ad15bb ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf0e9434f ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf403f90f ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf63b7dc0 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfa3bbfc1 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/atmel 0x98b8bb54 atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0xbe885cb8 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xe7576b50 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x0f502edb brcmf_sdio_probe +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x4db555bb brcmf_sdio_remove +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x05ddd0f2 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x0ba55dc1 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x1002dcf1 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x232031e4 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x2dc227f8 brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3619a34c brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x50c1a914 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x654eab84 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x71d6ec9c brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x8fbb85fe brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9278bb83 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9aebe370 brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xcd3df36a brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd37f256f brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1083468d hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1723ac32 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1d13397e hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x21f31bf6 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x245d9c58 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3e04fb6d hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5ac9af98 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x74c7ec60 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x770dd0bb hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7ceb2f9c hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x88b8c79a hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8d2b6212 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x98aa1f8d hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa3cae716 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2a945e0 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xbd0c5f23 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc1d02a4d hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc2fab682 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xca15f6ef hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xca23b90d hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xcd849053 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd6620245 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe49d7043 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xee20080a hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xef382e61 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf66ddba5 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf81075f6 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x00a95abb libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1096d236 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1db11b7a libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1e9b8196 libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1f48d694 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x21201d66 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x238e83e7 libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x24aff699 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x4142d1fb libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x4b10b8fa libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5b0739bd libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x7150232d libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x794d088f libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x7a12a6fd alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x7e143608 libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb0a99bb8 libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb5b250a5 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xba783509 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc1244601 free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd45e5920 libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf277f01c libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x000227dd il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x01c5c0fa il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x06af54b9 _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x07a73134 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x14383b72 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x14d5a3cc il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1dd63944 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x231e3c44 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x289c9d54 il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x292010d2 il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x29c2672b il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2bdfe3eb il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2dbebc72 il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x366b161b il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x37195d2a il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3cb97753 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x438de96f il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4ac0f808 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4b22160d il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4bd417c3 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4be05236 il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4cf5ebc8 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4e72ce34 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4f2c1ecb il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5232db18 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x52b398ba il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x53921653 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x54857c71 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5b63230d il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5bd7733d il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5f56ba75 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6051f126 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x628541aa il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x64a2f741 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x64b7efd3 il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x64bca49d il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x65619ddf il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x66ca5c91 il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x68638c6f il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x68ea3dc1 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6ed5f94c il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x70f0eee6 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x75cee2c0 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7856d65a il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x78743cdd il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7c5b41f6 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7d94cf8d il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7dcd91a7 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7de83f82 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8734f2e1 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x948a0378 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x98488655 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x99046401 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x99adc470 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9e12c514 il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa26ba050 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa50789e7 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa66d69c1 il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa82358e7 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa8743a20 il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa91b0ec6 il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xaacaea9c il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xae8322ac il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xaf225d48 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb2430e48 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb3233162 il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb69f909e il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb6e65da6 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7449eba il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb8c49f75 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xba95b523 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbff9ca38 il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc079d8de il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc45fc8b6 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc69a4dd3 il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc7b97faa il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xccace67a il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xccc3625c il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd01b714d il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd05c3afa il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd171b278 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd5825dec il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdca3da30 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe1b25dde il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe580c3d9 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe6d853b9 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeb86655a il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xebee122f il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xec688fec il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xedb0ef2f il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xef174303 il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf6cfb74a il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf9e837b2 il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfa24c4f2 il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfa48c886 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfa971600 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfd53060a il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfd72e99c il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x08dd8699 __tracepoint_iwlwifi_dev_rx +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x0c50fa2b __tracepoint_iwlwifi_dev_tx +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x1ecc5465 __tracepoint_iwlwifi_err +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 0x675bcb86 __tracepoint_iwlwifi_info +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 0x8de37664 __tracepoint_iwlwifi_dbg +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x954eb7a7 __tracepoint_iwlwifi_crit +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 0xe2dcc8de __tracepoint_iwlwifi_warn +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xf9ec6bdd __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x0429e81d orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x1ae85c9e __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x2bdf08b0 orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x342dd145 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x47d7c88e alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x4b75ed5c __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x4e308f06 orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5388398c free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5a8fa9be orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5dea5bf1 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x68510662 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x701890c7 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xa537ea80 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xab5bf8b9 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb9681ef9 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd1d39c75 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xdc0e297a orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/btcoexist/btcoexist 0xda9f9fc9 rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x03eb9a37 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0cfffda2 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1fe5d36e rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x236aa8a6 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x23d3b7cd rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2a50f680 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x336ace64 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3ab41db7 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3db81af4 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x45312f33 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4ed023f5 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4f169d51 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x561b8991 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5a390b48 _rtl92c_phy_dbm_to_txpwr_Idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5f55ee06 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x74098951 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7e7f56f6 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x818d440b _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x88ff984b rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8a76bfe5 rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8c314f24 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8fc58a11 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x92440f35 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9329f908 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9c07451a rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9e172aa0 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa42ca1b3 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa6e4ef62 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa8af282c _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa9d304a2 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xaee30ebc _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3d0d688 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc3895df9 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc6f12312 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcf394428 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcf5856f0 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdad9ba2e rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe0490ea9 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf7cd3af2 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfb7647ad rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfe88c3cb _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x0559d05a rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x1a0f7cb6 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x4559597a rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0xf0850065 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x3ddc8ef7 rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x820af4e6 rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x8a6f20f7 rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x99bbfa9b rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0059be54 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x1a81005d rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2ac40a10 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2c999f20 rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x4531a73f efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6d7f00df rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7830ca20 rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7a62262d rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x87ea3425 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x97a9ec42 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x97da173b rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xac1519cd rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb7f490c5 rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc5e4f47f rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xcae0bb67 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd15874a6 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd80a4a9b rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd975694f rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xea538005 rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xfa87bc67 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x7541a1e3 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x78df6783 wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x876ae76a wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xbf224952 wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/nfc/microread/microread 0x29ac8ec5 microread_probe +EXPORT_SYMBOL drivers/nfc/microread/microread 0x32a49ed9 microread_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x6dc5fab2 pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xc9fa090e pn544_hci_probe +EXPORT_SYMBOL drivers/parport/parport 0x09959941 parport_write +EXPORT_SYMBOL drivers/parport/parport 0x189a5975 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x19ce4b1f parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x3141aca8 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x344e0117 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0x3580abf9 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x4dc5aeae parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x514b21ee parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x52a2d920 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x63892774 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x8d837e2d parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x9d05c0a9 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0xb16eb38d parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0xb303174e parport_claim +EXPORT_SYMBOL drivers/parport/parport 0xb731168a parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xbc722bd0 parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0xbd36fa3f parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0xc21017a4 parport_release +EXPORT_SYMBOL drivers/parport/parport 0xc6c29d50 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0xc8a66e3f parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0xcc22688b parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xcf6f65db parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0xd065d493 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0xd1ea44f0 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0xdc4f0d1b parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0xe3261864 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0xea8dae0f parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0xf7ae09c0 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0xfbd57a4e parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0xffd4cb79 parport_read +EXPORT_SYMBOL drivers/parport/parport_pc 0xdbb5d15a parport_pc_unregister_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xe1ed8a7d parport_pc_probe_port +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x0032bda5 rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x42c50fe3 rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x54c2a089 rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x87d4de15 rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x8e5112b2 rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xa8b17cd9 rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xc5a56095 rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xcf839c7c rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xde20c419 rproc_boot +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x0309b1cc fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x09a2a238 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x3674b0a0 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x5adbfe62 fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x67e74221 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x6c840aa0 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x7c538512 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x9e406d1f fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xa7a8db5f fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xcc7ce359 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xd7a1f2fb fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xf4e4e1ed fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0008e9db fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0287b666 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0c39c1de fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0ffb9bac fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x17fa697a fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1e33302a fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x25d62d99 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x29f97808 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2d317860 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2ee7b089 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x413b8f14 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x420f1740 fc_change_queue_depth +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4564a65b fc_change_queue_type +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4900cf7e fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4a57da71 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4ae88b83 fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x50a74f96 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5cc98ebd fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5e850b59 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x64e57411 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x73116722 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7416158a fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x74afe118 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7f3a0427 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8210d14f fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x82c569bc fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x87e34172 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8aef5797 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x90566e58 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x951349e6 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x95b230d3 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x95c8539e fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9b9455e0 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9f599a69 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa3ce4c26 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa479de41 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xad57affd fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xba3a250e fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc08e243a fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc70ab708 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xce628f22 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcf404d03 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd618e94d fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd98f6d13 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xda0defa1 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe7004855 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xeccc2728 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xee4f934f fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf53e2637 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf62e11b5 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf6bd782f fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfdf68443 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x56cbcf95 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x59631d6e sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x5cc390a3 sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xa59fa5fc 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 0x670bfa43 mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0254ab62 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x06486184 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0a8be233 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0a9f4b37 osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0e2decc5 osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x171323dd osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x17327003 osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1b5fd0eb osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1baa8493 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1d35c821 osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x327de9e2 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3956e83c osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4d8046ee osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x58d3b6cf osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x647cd7f2 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6a0fc6c0 osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x70648dce osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x71e82534 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7a340e6b osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7b1c1e18 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7e7281a2 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x86d70d57 osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa022c3c8 osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa5148bbf osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa7c73538 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa9807ce6 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xac84cec0 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xacd0e4d6 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc6c4f60e osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc762eb6e osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc95b86a0 osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xddc35bb8 osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe25b6226 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe2c02383 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf1ffd9dc osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xfc1bc73e osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x846bfe60 osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0xac363884 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xad68b1c3 osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0xcf39d14c osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xf3f443ff osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0xfcdf2031 osduld_device_info +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x08420c39 qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x43ce4966 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x58ec39ed qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x6228539c qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x6547c55f qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x8b9cab98 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x9fa00590 qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xaa9540c9 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xb45f4abf qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xdf5f4dd9 qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xe148244c qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/raid_class 0x088b6e98 raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0x207d1ed0 raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0x8f069bff raid_component_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x1b4d8e5f fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x21b0f859 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x2a38d4c0 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x2d1fa199 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3d269200 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x4738082e fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x580a1fc0 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x59d2b6a1 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x5f4ee88c fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x61421bc8 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb956414a fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xf5f34d1b fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xf9c58e14 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00987e36 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x04cf782a sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x170c1d20 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1725faf8 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x202ac7ce sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x399f37b6 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x562797ae sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x57d008ee sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5b7b70b8 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x68fbbfcd sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x700a5ee6 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7a509375 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7bc24def sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7eab3576 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x83636da8 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa61b3a18 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa667b6c7 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa724179d sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xad375abe sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb0e68f2b sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb12d8240 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xcf44026e sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd5be2a0c sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd5ce646d scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd6e79bff sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe6e6098f sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xed383c0a sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf77b6200 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x04e8b487 ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x211e74ad ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xc8ebc12b ufshcd_runtime_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x0e62ec42 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x1c062399 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x1d777fa3 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x3f7fbc40 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0x554a10d2 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0x5be958d9 ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x67e2aa83 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x87e416c5 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x8d130363 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0x9109ac64 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0x967cb094 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0xad3164b0 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0xb2b9cd7b ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0xb3aaf6fb ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0xbac0fcdc ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0xbb970734 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xc1d17163 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xcb69422a ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xd485522c ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xed7a98fb ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0xf2c05d5c ssb_bus_suspend +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x13b9de5b iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x18941fb3 iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1b6b8be0 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1dc6f3d7 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x22a6e9dc iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3cd2f1a3 iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3fac71f3 iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x509e0fd2 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x55df6860 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x562b613b iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x57d4714e iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x58af7255 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x692f583d iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x752ac2f4 iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7a137c92 iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x87be5264 iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x88c620a1 iscsit_handle_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x904d5094 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x978a2e7f iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc0bad4ea iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc2aa88d9 iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc9de9a36 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xdaaef165 iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe35c143d iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe7b4be01 iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe905f856 iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf0147e89 iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xfa5c7f06 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x0092f75d sas_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x03919174 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x0410ca42 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x04ce3b92 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x066d1aeb __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x06af8b70 spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0x0874249e transport_subsystem_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x0b21681d transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x0cffb3fd sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x0e16788f target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x13ca3251 sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x14790c1e target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x15b80385 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x1e9f69c4 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x20b16879 sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x21095d6b target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x26634950 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x298df89e transport_subsystem_release +EXPORT_SYMBOL drivers/target/target_core_mod 0x315b1219 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x33466cd9 fc_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x3844ff00 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x3ba9e882 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x412c5796 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x460f676c transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x4b94a747 fc_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x5823f78e target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x58cc154a target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x60655bf0 target_fabric_configfs_init +EXPORT_SYMBOL drivers/target/target_core_mod 0x64727976 iscsi_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x66341cf3 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x6c88ed52 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x6e260de9 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x72af5cfd core_tpg_add_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x72cfad72 sas_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x74efe398 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x7aafbc46 iscsi_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x7ddc6e83 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x82dcdf7b target_fabric_configfs_free +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x8795fb4c sas_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x8892cd40 spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x89ef11b4 target_fabric_configfs_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x8aa1c485 core_tpg_clear_object_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x8d73733f target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x8e899015 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x946634d1 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x98101bdf transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x9c9a1f9f target_fabric_configfs_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xa1538ed7 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xa2f1ce97 transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xa5e622a7 sbc_execute_unmap +EXPORT_SYMBOL drivers/target/target_core_mod 0xaab59f86 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xb3330adc transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xb9b7d042 target_configure_unmap_from_queue +EXPORT_SYMBOL drivers/target/target_core_mod 0xbb9c9570 fc_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xbcbee481 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xbd611d50 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0xbf63fbf0 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xcf557210 fc_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0xd3520105 target_to_linux_sector +EXPORT_SYMBOL drivers/target/target_core_mod 0xda17c48a target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xde0df9bf transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0xdf582b66 sas_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xe2f86717 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xe4550ad4 iscsi_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xe6deb60b transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0xeadbbbc2 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xeaf4d375 spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0xebdd0ccd core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0xecc36ca5 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf154e242 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0xf1788ed9 iscsi_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf4745abd core_tpg_del_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xf9e36041 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x02bd1eb5 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/phy/phy-generic 0xa64a4cea usb_nop_xceiv_unregister +EXPORT_SYMBOL drivers/usb/phy/phy-generic 0xd0e43207 usb_nop_xceiv_register +EXPORT_SYMBOL drivers/vhost/vringh 0x0dda8c5a vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x1f063017 vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x2eae4a2a vringh_getdesc_user +EXPORT_SYMBOL drivers/vhost/vringh 0x36dfce73 vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3b304ebb vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3eaf442a vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x3fa42e4f vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x4311cd91 vringh_iov_pull_user +EXPORT_SYMBOL drivers/vhost/vringh 0x5dafbd4e vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x66af098b vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x6d0e7948 vringh_abandon_user +EXPORT_SYMBOL drivers/vhost/vringh 0x76bd9a5d vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x97fa07e9 vringh_iov_push_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xaf8e4a0e vringh_notify_disable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xafb47dae vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0xc884d704 vringh_notify_disable_user +EXPORT_SYMBOL drivers/vhost/vringh 0xc8bee0a4 vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xda4ea4cc vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0xde804bb9 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/video/backlight/generic_bl 0x366d19ef genericbl_limit_intensity +EXPORT_SYMBOL drivers/video/backlight/lcd 0xafb22e70 devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xd47b0f7b devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xd88b06a8 lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xec402f42 lcd_device_unregister +EXPORT_SYMBOL drivers/video/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/cyber2000fb 0x534b6f18 cyber2000fb_disable_extregs +EXPORT_SYMBOL drivers/video/cyber2000fb 0x93f62b9e cyber2000fb_attach +EXPORT_SYMBOL drivers/video/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x2d9e252d matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x4c37aa43 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x4dc1efec g450_mnp2f +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x20e1451a matrox_mystique +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x38db78f2 DAC1064_global_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x76dea12a DAC1064_global_restore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xe3d328a3 matrox_G100 +EXPORT_SYMBOL drivers/video/matrox/matroxfb_Ti3026 0xe5474164 matrox_millennium +EXPORT_SYMBOL drivers/video/matrox/matroxfb_accel 0xc94fe86b matrox_cfbX_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x733cc2b8 matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0xbef51415 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0xe12217d1 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0xeddd86a6 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0x4483ba36 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0xdaaed5b4 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x17373572 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x1785e74c matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x1d57cf3d matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x6cead97f matroxfb_read_pins +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xbd19c892 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/mb862xx/mb862xxfb 0xf900f7ef mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/output 0x62d2845a video_output_unregister +EXPORT_SYMBOL drivers/video/output 0x797b79f3 video_output_register +EXPORT_SYMBOL drivers/video/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/svgalib 0x02fccb69 svga_get_caps +EXPORT_SYMBOL drivers/video/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/svgalib 0x5a322d5b svga_tilecursor +EXPORT_SYMBOL drivers/video/svgalib 0x64d55cd1 svga_tileblit +EXPORT_SYMBOL drivers/video/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/svgalib 0xa2a85a6c svga_tilecopy +EXPORT_SYMBOL drivers/video/svgalib 0xcdeb1e2d svga_get_tilemax +EXPORT_SYMBOL drivers/video/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/svgalib 0xea336040 svga_settile +EXPORT_SYMBOL drivers/video/svgalib 0xee02c754 svga_tilefill +EXPORT_SYMBOL drivers/video/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/syscopyarea 0xf68823ef sys_copyarea +EXPORT_SYMBOL drivers/video/sysfillrect 0xdf3d5623 sys_fillrect +EXPORT_SYMBOL drivers/video/sysimgblt 0x29775b1e sys_imageblit +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/vme/vme 0x00d7e722 vme_lm_count +EXPORT_SYMBOL drivers/vme/vme 0x072f901c vme_master_rmw +EXPORT_SYMBOL drivers/vme/vme 0x0add25ee vme_slot_get +EXPORT_SYMBOL drivers/vme/vme 0x0c6bdc3f vme_master_read +EXPORT_SYMBOL drivers/vme/vme 0x0ec5babe vme_dma_free +EXPORT_SYMBOL drivers/vme/vme 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL drivers/vme/vme 0x21fd71a2 vme_irq_handler +EXPORT_SYMBOL drivers/vme/vme 0x326099e8 vme_bus_type +EXPORT_SYMBOL drivers/vme/vme 0x38585578 vme_master_request +EXPORT_SYMBOL drivers/vme/vme 0x3e95083c vme_slave_get +EXPORT_SYMBOL drivers/vme/vme 0x46649cd1 vme_lm_set +EXPORT_SYMBOL drivers/vme/vme 0x48b99a13 vme_lm_free +EXPORT_SYMBOL drivers/vme/vme 0x4a376e07 vme_irq_free +EXPORT_SYMBOL drivers/vme/vme 0x4baf35a7 vme_master_get +EXPORT_SYMBOL drivers/vme/vme 0x52983a4f vme_master_write +EXPORT_SYMBOL drivers/vme/vme 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL drivers/vme/vme 0x5aff4177 vme_lm_get +EXPORT_SYMBOL drivers/vme/vme 0x7368d04d vme_unregister_bridge +EXPORT_SYMBOL drivers/vme/vme 0x79a33f85 vme_get_size +EXPORT_SYMBOL drivers/vme/vme 0x7a4f2de9 vme_irq_generate +EXPORT_SYMBOL drivers/vme/vme 0x7b4ca077 vme_register_bridge +EXPORT_SYMBOL drivers/vme/vme 0x7cf35220 vme_master_free +EXPORT_SYMBOL drivers/vme/vme 0x87174885 vme_lm_request +EXPORT_SYMBOL drivers/vme/vme 0x91c07282 vme_dma_list_add +EXPORT_SYMBOL drivers/vme/vme 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL drivers/vme/vme 0x9362734e vme_dma_list_free +EXPORT_SYMBOL drivers/vme/vme 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL drivers/vme/vme 0x9f017948 vme_new_dma_list +EXPORT_SYMBOL drivers/vme/vme 0xa2a335bd vme_alloc_consistent +EXPORT_SYMBOL drivers/vme/vme 0xa31bdf07 vme_master_set +EXPORT_SYMBOL drivers/vme/vme 0xa74dc55c vme_irq_request +EXPORT_SYMBOL drivers/vme/vme 0xa9b9c1bc vme_dma_request +EXPORT_SYMBOL drivers/vme/vme 0xc5aea121 vme_slave_request +EXPORT_SYMBOL drivers/vme/vme 0xca5ee09a vme_free_consistent +EXPORT_SYMBOL drivers/vme/vme 0xdff905e5 vme_slave_free +EXPORT_SYMBOL drivers/vme/vme 0xed627c8c vme_unregister_driver +EXPORT_SYMBOL drivers/vme/vme 0xed672593 vme_dma_list_exec +EXPORT_SYMBOL drivers/vme/vme 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL drivers/vme/vme 0xf3f9aa13 vme_register_driver +EXPORT_SYMBOL drivers/vme/vme 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL drivers/vme/vme 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x070c64b9 w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xa92a3a79 w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xd499dd90 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xf86b9b8d w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x1036b04a w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xa971e5da w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x5874d6e5 w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xc207b226 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/wire 0x470dc5c6 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0x9320063d w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0xd136a872 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0xf90ec877 w1_unregister_family +EXPORT_SYMBOL fs/btrfs/btrfs 0x27476846 ulist_reinit +EXPORT_SYMBOL fs/btrfs/btrfs 0x41e6a9d2 ulist_init +EXPORT_SYMBOL fs/btrfs/btrfs 0x7e2ee765 ulist_free +EXPORT_SYMBOL fs/btrfs/btrfs 0xa2eec2e8 ulist_fini +EXPORT_SYMBOL fs/btrfs/btrfs 0xb1320bc8 ulist_add +EXPORT_SYMBOL fs/btrfs/btrfs 0xb42289d2 ulist_alloc +EXPORT_SYMBOL fs/btrfs/btrfs 0xc2c745db ulist_next +EXPORT_SYMBOL fs/configfs/configfs 0x208d05a9 config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x7650bc3a config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x77bc6edc config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x7d647e6c config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0xa4c721d6 configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0xaf1b2111 configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xb8350813 config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0xbd272dc2 config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0xbfa9ce5f config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0xe4b0074b config_item_init +EXPORT_SYMBOL fs/configfs/configfs 0xecb866e1 configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0xfb3148e2 configfs_unregister_subsystem +EXPORT_SYMBOL fs/exofs/libore 0x047909ea ore_write +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x328c7f2a ore_create +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x54ae9f42 extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0x61294a41 ore_read +EXPORT_SYMBOL fs/exofs/libore 0x748b2293 ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0x87f0ffd9 ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0x8820d966 ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xbeef957d ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0xce3b9144 ore_remove +EXPORT_SYMBOL fs/exofs/libore 0xf7c787c4 ore_get_io_state +EXPORT_SYMBOL fs/fscache/fscache 0x0001426f __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x02e01690 __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x057f483e __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x08e8201a fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0x108b50dd fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0x1a3d632b __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x1dfdf09e __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x46f774bc __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x47c5b212 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x4a7d5f9f fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x4f42e95f fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x57e971a4 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x58b6a676 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x607d1e46 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0x63a382b8 fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0x67fa40bf fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x68f27d07 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x72453d95 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x7291da76 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x8187e134 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x8366a632 __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x861d21a5 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x90456649 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x9ab83835 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0xa156f5b4 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0xa168ac1d __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0xa62e14aa __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xacce360f fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0xbdd10d09 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0xc1fff90d __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xc3c507fd __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0xd1e84b3b __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xdf81f524 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0xe345de1c __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0xf18cb958 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0xfa365373 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0xfb5df814 __fscache_check_consistency +EXPORT_SYMBOL fs/nfsd/nfsd 0x35e33c1e nfs4_acl_write_who +EXPORT_SYMBOL fs/nfsd/nfsd 0x5a157ae4 nfs4_acl_get_whotype +EXPORT_SYMBOL fs/nfsd/nfsd 0xa0f4b528 nfs4_acl_posix_to_nfsv4 +EXPORT_SYMBOL fs/nfsd/nfsd 0xb25b2957 nfs4_acl_nfsv4_to_posix +EXPORT_SYMBOL fs/nfsd/nfsd 0xe13337f0 nfs4_acl_new +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x37483329 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x5d69ebb3 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x74bad027 qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0xe2e00074 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xf76bd960 qtree_delete_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 0x6c1f6fee crc7 +EXPORT_SYMBOL lib/crc7 0xd80c3603 crc7_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 0x17530a2d lc_set +EXPORT_SYMBOL lib/lru_cache 0x2eb86314 lc_committed +EXPORT_SYMBOL lib/lru_cache 0x3ec8e9bb lc_destroy +EXPORT_SYMBOL lib/lru_cache 0x486392c2 lc_del +EXPORT_SYMBOL lib/lru_cache 0x55d40ad0 lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x5f102823 lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x70d9ddd8 lc_get_cumulative +EXPORT_SYMBOL lib/lru_cache 0x745ebaab lc_find +EXPORT_SYMBOL lib/lru_cache 0x846875a0 lc_reset +EXPORT_SYMBOL lib/lru_cache 0x8c26f371 lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0xbea1b0ba lc_try_get +EXPORT_SYMBOL lib/lru_cache 0xc343305e lc_is_used +EXPORT_SYMBOL lib/lru_cache 0xd6e146aa lc_get +EXPORT_SYMBOL lib/lru_cache 0xdaef897c lc_put +EXPORT_SYMBOL lib/lru_cache 0xe7800d85 lc_create +EXPORT_SYMBOL lib/lru_cache 0xf22e084c lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0xfe413d0d lc_element_by_index +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/802/p8022 0x4973f3a6 unregister_8022_client +EXPORT_SYMBOL net/802/p8022 0x98865226 register_8022_client +EXPORT_SYMBOL net/802/p8023 0x684219fb make_8023_client +EXPORT_SYMBOL net/802/p8023 0xa3820e07 destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0x396b2afc unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0x60b255b2 register_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x02869b6e p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x19327ac7 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x1978299e p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x1c771c83 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0x23fb4c64 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x26720f49 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x2b74f2ba p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x33c52716 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x3aeaa2d6 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x3cbd1f8e p9_payload_gup +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x44deb8c2 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x552e5050 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x58d481ee p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x59bd1763 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x5a35b2e1 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x623f9c43 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x68e29ab9 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x6a46eea0 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x6c958307 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x6e822a57 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x6eeedae8 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0x762275f3 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x7a12c96c p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x7dcd8150 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x83a728c6 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x8cc7fd94 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x8f90a360 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x95660178 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x977a0030 p9_nr_pages +EXPORT_SYMBOL net/9p/9pnet 0x9bbc9c4d p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x9d2c732a p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x9f072a32 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0x9fdd08b4 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0xa98ac836 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xb48be9e8 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xbaf287f1 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0xbb09e8ec p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0xc527a91c p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xd25bebe7 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0xde1c9522 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0xe0dcd960 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xe1cf3612 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xf1609503 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xf87ed60e p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/appletalk/appletalk 0x09a33cb4 atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0x47984580 atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0x563da781 aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0x9e55b426 alloc_ltalkdev +EXPORT_SYMBOL net/atm/atm 0x03415966 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x26727dc4 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x3dba8142 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x5a91baf9 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x5d866a90 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x76f6485d atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x7f27b0f6 atm_charge +EXPORT_SYMBOL net/atm/atm 0x8d333ef2 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x9a7c1250 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xc2451ba1 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0xc7583684 atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0xca87b453 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xe6ceb04b atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0xee31e0ac vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/ax25/ax25 0x0a84fb4c ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0x1572f054 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x3afee63e ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x72c9f5f8 ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0x8397da10 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0x8f76d543 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0xa403b2d2 ax25_rebuild_header +EXPORT_SYMBOL net/ax25/ax25 0xae2a8be7 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0xb2ff433c ax25_hard_header +EXPORT_SYMBOL net/ax25/ax25 0xb6c2ded6 ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xe2803cfd ax25_listen_release +EXPORT_SYMBOL net/bluetooth/bluetooth 0x18a9b7d1 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1ea0e1a4 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1eadceaa hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x20b6cde3 hci_recv_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2f34eaad hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x33d251ad bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x37c55570 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x387306e3 bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3b493919 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4544bf13 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4cca9e5c bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x62363b71 hci_recv_stream_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x66681f5b hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6e065978 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x72b48fff hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x74e40da1 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x78a4645d __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7c640527 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7f26f5f2 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x814415fc bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x860466ff bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x894b8896 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x93200780 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9520567f l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9ae34d92 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa245f297 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa3a6a548 l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa873dd9c hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb61a0c3b bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcf126843 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcf1b17fd hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd8cbeb5c __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdae9e3d4 l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe81efeda hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0xef107e87 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf10f5d79 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf4308d50 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf630ae79 l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfb338631 bt_accept_dequeue +EXPORT_SYMBOL net/bridge/bridge 0x9c91f1ad br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x6abbcb8d ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xe4124e11 ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xed45736d 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 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 0x5db4b165 caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x743394cb cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x87dc5372 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 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xd94cb4b5 caif_connect_client +EXPORT_SYMBOL net/caif/caif 0xdd87ea85 caif_disconnect_client +EXPORT_SYMBOL net/can/can 0x45316b29 can_proto_unregister +EXPORT_SYMBOL net/can/can 0x6e04eeaa can_rx_unregister +EXPORT_SYMBOL net/can/can 0x71c2680d can_ioctl +EXPORT_SYMBOL net/can/can 0x916ddac7 can_send +EXPORT_SYMBOL net/can/can 0x9e0ed6e3 can_proto_register +EXPORT_SYMBOL net/can/can 0xaac178c3 can_rx_register +EXPORT_SYMBOL net/ceph/libceph 0x014dc73d ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x0848af91 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0d61c270 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0x0f59630b ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x128db51e ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x13df6253 ceph_osdc_unregister_linger_request +EXPORT_SYMBOL net/ceph/libceph 0x1475bf0d ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x16472f9d osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x164e5dc5 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x197effcb ceph_osdc_release_request +EXPORT_SYMBOL net/ceph/libceph 0x1b22a3f3 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x1ce485b0 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x24d360a8 osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x267ec174 ceph_monc_create_snapid +EXPORT_SYMBOL net/ceph/libceph 0x2b1b7f1b ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x2b600d41 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x2c434490 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x328e4cf0 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x335241df ceph_copy_page_vector_to_user +EXPORT_SYMBOL net/ceph/libceph 0x350e77b6 ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0x39effd5f ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3bc52cc2 osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x3df0ec7c ceph_calc_ceph_pg +EXPORT_SYMBOL net/ceph/libceph 0x3ee0847c ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x3fbce679 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0x4205ffd7 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x42a4cfdf osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x43efd647 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x482d8424 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x4914643b ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x49c4e71a ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x4a283545 ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x570ceb67 ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x572993bb ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x5922fa76 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x5c0030ce ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x5cc46276 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x5da5cee4 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x6399948d ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x6920f976 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x693b7d59 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6c5d5ac1 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x6dea399a ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0x7168baf8 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0x722926c4 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x77692acb ceph_msg_last_put +EXPORT_SYMBOL net/ceph/libceph 0x81eae1b6 ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0x82c949b9 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x8625e7e9 osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x880802b9 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x8b50b299 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x8b89222d ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x8cc8ecf2 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x90b27082 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x99c964ef ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x99de4738 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9f3b94dd osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa252f70d ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xacdb4d76 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0xadc908af ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb0d0f1cc ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0xb3c21012 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xbc868c79 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0xc3e57ede ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc55de604 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xca047182 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xce527825 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0xce6ba549 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0xcf59634c ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0xd270df99 ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xda3dd988 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0xda795c81 osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xe29f202c ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0xe3052c17 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xe4059679 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0xe82c9c32 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0xe8c66055 osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0xed229339 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xefaab674 osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0xf2eafe60 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xf5774cba ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0xf83afcab ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0xfad3c9ba ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0xfc310498 ceph_monc_do_statfs +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x31de7e69 dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/ieee802154 0x1718a578 ieee802154_nl_assoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x1c34241d ieee802154_nl_disassoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x2940bd7a wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0x2e02e4d0 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0x32ed4506 ieee802154_nl_beacon_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x386a0b42 ieee802154_nl_assoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x3e96db1d wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0xb9f3631c wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0xc1f95f91 wpan_phy_alloc +EXPORT_SYMBOL net/ieee802154/ieee802154 0xc4d85c8e ieee802154_nl_scan_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xc60dfdaa ieee802154_nl_disassoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xce64d902 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0xec594f67 ieee802154_nl_start_confirm +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x5019358a arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x853aa341 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xd618ef32 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x3465c5c1 ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x93ecffd4 ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xe48f1209 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x31e1bacd xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0x9d3c4292 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x057566e2 ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x0e476965 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x04fb6d96 ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x0dcbbea2 ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x9ac9e874 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/tunnel6 0xab22bbf9 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0xb70a1a1d xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x1d70b7e4 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x58bcfe5f xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x1c478d48 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x55ffbf1f ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x5d71a554 ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x81b45f61 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xbb6b83a2 ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xcbf04146 ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xf4aa8774 ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xfd0dc689 ircomm_control_request +EXPORT_SYMBOL net/irda/irda 0x0064e0ea hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x0d0521a1 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0x0e424a17 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x16657c4c irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0x18209b5c irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x1e6cade0 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x2036ad06 irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x260c5ec4 irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x325bbf72 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x34c07069 async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x3e56064f hashbin_new +EXPORT_SYMBOL net/irda/irda 0x3fcf7146 iriap_open +EXPORT_SYMBOL net/irda/irda 0x3fde7321 irlmp_close_lsap +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 0x601bda46 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x6507c8d1 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x6a440a98 irlap_open +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 0x6bf8c8e2 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x6e0ab3c7 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x70d1bbc5 irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x773c42f9 iriap_close +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7fcdf7aa irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x842b8cc6 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x85d88217 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x97b00764 irlap_close +EXPORT_SYMBOL net/irda/irda 0x993ad14b irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0xa1d41e58 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0xa88314d5 irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0xaa557515 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xb213126d irttp_udata_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 0xbe304c0c irttp_dup +EXPORT_SYMBOL net/irda/irda 0xbe40ace9 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0xbfb87a53 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0xc68e43be irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0xc9051e8b irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0xcdcdd870 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0xcead7dbb hashbin_find +EXPORT_SYMBOL net/irda/irda 0xcf71518e irlmp_data_request +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 0xdefbf15c irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0xe3463529 hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0xe3bde43e irias_insert_object +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xf0a694a1 irias_find_object +EXPORT_SYMBOL net/irda/irda 0xf5876b95 hashbin_remove_this +EXPORT_SYMBOL net/l2tp/l2tp_core 0x1c2b3616 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x09dc7c90 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x0d849df3 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0x34bd5900 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x5bc0b108 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x6b26c4ae lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x70225d25 lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0xbeff5f92 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0xf46110bb lapb_connect_request +EXPORT_SYMBOL net/llc/llc 0x1f60cc38 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x341ab70d 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 0x62c8e1ba llc_sap_close +EXPORT_SYMBOL net/llc/llc 0x703d357c llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x7de517b6 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0xc35e28f7 llc_sap_list_lock +EXPORT_SYMBOL net/llc/llc 0xe03b80ed llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0xfaf4b9a5 llc_add_pack +EXPORT_SYMBOL net/mac80211/mac80211 0x009376f2 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x0c15f830 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x10649ff5 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x10e30a55 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x1b175e99 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x1c083a58 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x1eda24b6 ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x21a2ae71 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x2b631aab ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x2d8efc96 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0x32e811e7 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x35846d50 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x36b9fb40 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x379a7f72 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x3fdf878a ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x449ec352 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x479d6297 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x4a6af10d ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x4adb1ac1 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x4e35705f ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x4ea6731b ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x5096a837 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x545951cd ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x5842398b ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x5c28cca5 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x5e544779 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x686d830d ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x68bfef8d __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x6c5553c2 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x6cb17083 ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x6f79c82a ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x73450e40 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x74d00390 ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0x753a46c5 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x788ab4c4 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x7dadc3c0 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x7f54925a ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x84ac7b58 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x89435dfc ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x8e12e3d5 ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x9165cfbb ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x93b2e761 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x9733e072 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x9c5e6334 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0x9f6559d3 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x9fa56ff9 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0xa1dd496e ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0xa1fc36c4 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xaa157485 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0xabb7a816 ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0xad110e18 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xadc7fd2a ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xb20d333d ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xb6deffbc rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0xb728aa03 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xbcabfd68 wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xbcb4258a ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xbdd4a24d ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xbe60a1eb ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0xbfcbf5d5 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0xc7e9782e ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xc7f2fa83 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0xcccafe99 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xcea52bd3 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0xcfefdd48 ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xdb9a432f ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xdda13882 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xddb47d52 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xe6a4c31e ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xf395de03 ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0xf556c52d ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xfbaa739c ieee80211_alloc_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xfc198100 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac802154/mac802154 0x11de2f47 ieee802154_free_device +EXPORT_SYMBOL net/mac802154/mac802154 0x15ef534f ieee802154_register_device +EXPORT_SYMBOL net/mac802154/mac802154 0x3e500735 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0x8135f018 ieee802154_alloc_device +EXPORT_SYMBOL net/mac802154/mac802154 0xddec316a ieee802154_unregister_device +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x116081a2 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x186f6e8f ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x273b09bf ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x356f2c36 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x4601a4e0 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x5a567d1e ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x5ba9d757 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x5d4ccbd7 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x5f46e259 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x88e6d40b ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb91b8d58 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xcc8696b8 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xda2ec119 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xf5c8a527 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x5f785e35 __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x7d0bad59 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x8569beef nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_conntrack_proto_gre 0xc1bd39b1 nf_ct_gre_keymap_flush +EXPORT_SYMBOL net/netfilter/nf_nat 0x3b928167 nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0x46bd251c nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0x943026e7 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x975d1c0d nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x9dbd64a8 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0xf31ba7ee nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/x_tables 0x08c473b7 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x253e8b44 xt_compat_init_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x31e0ccb3 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x7e1f44f6 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x8af1d882 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x906e9271 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x94af0080 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0xa25fc115 xt_compat_check_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0xb150ada4 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0xb28f5ef1 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xbf222d1c xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0xd87ae60d xt_check_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0xe20ae63f xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0xf3afe067 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0xf5467380 xt_register_matches +EXPORT_SYMBOL net/nfc/hci/hci 0x08606721 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0x148f4a90 nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x149d9159 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x1ffc80c2 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x3e2b4ce1 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x4791ac0c nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0x493b44aa nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x4aa799bc nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0x5b03dfec nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x6eb5de1d nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x79ac9bd1 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x7dcaf200 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x9a482f91 nfc_hci_send_response +EXPORT_SYMBOL net/nfc/hci/hci 0xa37f0a53 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xa4f7cf7c nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xbdb992d3 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0xdfe4e44e nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0xfd979175 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x0ee5299b nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x69bff74e nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0xaedec134 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xcc92b297 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0xd80bfc86 nci_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x061b0bdd nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0x108f05ae nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x194c807d nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x1cbbcc11 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x313bc39d nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x31eb05a1 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x489ebd29 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0x54f9e9c4 nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x7498f7a8 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x8f08aba5 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xa23415c9 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xadafd746 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0xb0dfc7f8 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0xbdcc772a nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0xc2e44e68 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0xc3afc020 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0xc47e401e nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0xd4605abe nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0xe573c58c nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0xef6edb56 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x75ce9e02 nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x8999361f nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x9332b867 nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xe87fe1eb nfc_digital_register_device +EXPORT_SYMBOL net/phonet/phonet 0x247f7525 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x3ba41664 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0x4666752c phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0x7a088919 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0x82a554cb pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0xb224183e phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0xc9426d9c pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0xef2f9da5 pn_skb_send +EXPORT_SYMBOL net/rds/rds 0x7505d413 rds_str_array +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x2397db3c rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x30de7192 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x3ab485a9 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x4425a8f6 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x56dc9ae6 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x62532256 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x8644c57c rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x8a2c2afd rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x8f8b3945 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb5557c0d rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb6ec6ed7 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd4fc2c74 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xdf1f0062 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xefe2dc97 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xfaf02c6a rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/sctp/sctp 0x34277703 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x6d820309 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x75a8bb76 gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xe598d4d3 gss_mech_get +EXPORT_SYMBOL net/sunrpc/sunrpc 0x5599a0a2 svc_pool_stats_open +EXPORT_SYMBOL net/wimax/wimax 0x0f3f3814 wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0xc40a7bfb wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x006eb5d1 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x02933cad cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x051c825f cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0c37598b freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x0ca79ba4 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0x0e07500e cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x15f16552 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x1641564f regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x2194486b cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x24bbe939 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x26cb1183 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x28e1da1a cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x2ef2a9e7 cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x34789ebb cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x3af037f8 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x406a8302 cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x41e5545b cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0x47651263 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x48cd44eb cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x4c3b5878 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x4c40b2fb ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x4d101747 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x4e4725a4 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x4fa43eef cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x549ae50f ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x58e46ec5 cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0x5e9ae216 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x618bfc72 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x65525ea6 cfg80211_inform_bss_width +EXPORT_SYMBOL net/wireless/cfg80211 0x6604e177 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x6644c306 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x668f7e13 cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0x66bf8b8e cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6c087217 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x6dca54be cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x76631477 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x795792f0 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 0x80b9cdc4 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x81ba139c cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x846a3fa2 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x8c84a640 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x8ff2c91a cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0x92c59569 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0xa029df82 cfg80211_ready_on_channel +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 0xa81ea5b7 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0xa8cdb448 cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0xab00e5f3 cfg80211_del_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xabb090c7 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0xb267ded0 cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xb816d319 cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xc15c8611 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xc44d2c97 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xcd4c7bd3 cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0xcd58f1a7 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xce40757c cfg80211_inform_bss_width_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xce4b84db wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0xcebab606 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xcf618a57 cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0xd418578a cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0xd4546b26 wiphy_new +EXPORT_SYMBOL net/wireless/cfg80211 0xd70e94b1 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xd8694725 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xdd1ff5bc wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0xdf46c302 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0xe36d6a26 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xee42db3c cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0xef9b3867 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xf08dd282 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0xf1164889 cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0xf48c74bb __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xf4bde063 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xf4d3c416 cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0xfb9ce02d cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x168350e8 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x17e2dd44 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0x2d0f99e5 print_ssid +EXPORT_SYMBOL net/wireless/lib80211 0x5520b88c lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0x791d15aa lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x7f89d333 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0x9adbe8ba lib80211_register_crypto_ops +EXPORT_SYMBOL vmlinux 0x00000000 __symbol_put +EXPORT_SYMBOL vmlinux 0x00000000 alloc_pages_current +EXPORT_SYMBOL vmlinux 0x00000000 current_fs_time +EXPORT_SYMBOL vmlinux 0x00000000 d_tmpfile +EXPORT_SYMBOL vmlinux 0x00000000 do_sync_read +EXPORT_SYMBOL vmlinux 0x00000000 filp_close +EXPORT_SYMBOL vmlinux 0x00000000 finish_open +EXPORT_SYMBOL vmlinux 0x00000000 generic_getxattr +EXPORT_SYMBOL vmlinux 0x00000000 generic_write_sync +EXPORT_SYMBOL vmlinux 0x00000000 get_unmapped_area +EXPORT_SYMBOL vmlinux 0x00000000 in_group_p +EXPORT_SYMBOL vmlinux 0x00000000 inode_add_bytes +EXPORT_SYMBOL vmlinux 0x00000000 iov_shorten +EXPORT_SYMBOL vmlinux 0x00000000 iterate_fd +EXPORT_SYMBOL vmlinux 0x00000000 ns_capable +EXPORT_SYMBOL vmlinux 0x00000000 path_is_under +EXPORT_SYMBOL vmlinux 0x00000000 register_exec_domain +EXPORT_SYMBOL vmlinux 0x00000000 schedule_timeout +EXPORT_SYMBOL vmlinux 0x00000000 sock_register +EXPORT_SYMBOL vmlinux 0x00000000 sys_close +EXPORT_SYMBOL vmlinux 0x00000000 task_nice +EXPORT_SYMBOL vmlinux 0x00000000 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x00000000 vm_brk +EXPORT_SYMBOL vmlinux 0x00551a86 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x005f219b skb_copy_datagram_iovec +EXPORT_SYMBOL vmlinux 0x00801678 flush_scheduled_work +EXPORT_SYMBOL vmlinux 0x0096da7c inet_addr_type +EXPORT_SYMBOL vmlinux 0x00ac6958 __next_cpu +EXPORT_SYMBOL vmlinux 0x00cf4a7f of_get_parent +EXPORT_SYMBOL vmlinux 0x00f1e3b9 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x00fea633 sk_release_kernel +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x01052eb3 inet_sendmsg +EXPORT_SYMBOL vmlinux 0x010b6aa4 fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0x012a97fc xor_altivec_4 +EXPORT_SYMBOL vmlinux 0x014fd668 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x0162eaaf __napi_complete +EXPORT_SYMBOL vmlinux 0x01631bd8 xfrm_register_km +EXPORT_SYMBOL vmlinux 0x016972cb bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x01790e94 csum_partial_copy +EXPORT_SYMBOL vmlinux 0x01902adf netpoll_trap +EXPORT_SYMBOL vmlinux 0x019e7765 __init_rwsem +EXPORT_SYMBOL vmlinux 0x019f919a bdput +EXPORT_SYMBOL vmlinux 0x01b7b5d9 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x01b94105 dcb_getapp +EXPORT_SYMBOL vmlinux 0x01bad02d xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x01c8e84d ida_simple_get +EXPORT_SYMBOL vmlinux 0x01db56d6 datagram_poll +EXPORT_SYMBOL vmlinux 0x01df71a2 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x01e84f81 inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x01fe73eb pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x02222157 ip_fragment +EXPORT_SYMBOL vmlinux 0x0228c30d pci_enable_ido +EXPORT_SYMBOL vmlinux 0x022cc778 scsi_setup_blk_pc_cmnd +EXPORT_SYMBOL vmlinux 0x022f472c kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x023a074a hvc_get_chars +EXPORT_SYMBOL vmlinux 0x0253b0d2 thaw_super +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x026f7e31 dquot_release +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 0x02b6950b scsi_setup_fs_cmnd +EXPORT_SYMBOL vmlinux 0x02bb3509 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x02bb9eba free_buffer_head +EXPORT_SYMBOL vmlinux 0x02c43560 __blk_run_queue +EXPORT_SYMBOL vmlinux 0x02dbf69b md_done_sync +EXPORT_SYMBOL vmlinux 0x02f50a35 module_put +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x03394e03 __free_pages +EXPORT_SYMBOL vmlinux 0x0353e19d inet_del_offload +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x03627e34 gen10g_restart_aneg +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x0367bdff neigh_seq_next +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x037d381f pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0x037f867b srp_rport_put +EXPORT_SYMBOL vmlinux 0x0382b482 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x03883d49 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x03997d7c inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x03aec818 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x03c06156 bitmap_fold +EXPORT_SYMBOL vmlinux 0x03ebda85 dns_query +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x04074f48 ioremap +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x0435be9a sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x0447c38a simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x04504587 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x045360a9 bdget_disk +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x04950a5a mmc_gpio_free_ro +EXPORT_SYMBOL vmlinux 0x04b4988a jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04ea5d10 ksize +EXPORT_SYMBOL vmlinux 0x04f167c4 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x051edd7c invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x0530dede _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x0531a44f dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x054434d6 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x055c8559 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x05775852 blk_recount_segments +EXPORT_SYMBOL vmlinux 0x057fe2b0 read_dev_sector +EXPORT_SYMBOL vmlinux 0x05899fd6 inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0x05a514a1 _insl_ns +EXPORT_SYMBOL vmlinux 0x05c16f67 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x05cfb186 sk_alloc +EXPORT_SYMBOL vmlinux 0x05e2846f set_create_files_as +EXPORT_SYMBOL vmlinux 0x05e4b11c filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x0630b08b tcp_hashinfo +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x065b3f5f ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x06797871 vm_stat +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x0689701b netif_device_attach +EXPORT_SYMBOL vmlinux 0x068cc222 dma_find_channel +EXPORT_SYMBOL vmlinux 0x06bbb24a mempool_resize +EXPORT_SYMBOL vmlinux 0x06cae5cd path_get +EXPORT_SYMBOL vmlinux 0x06fcba88 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x0701f8e1 bio_map_kern +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x072eda01 cdrom_release +EXPORT_SYMBOL vmlinux 0x0744d0d7 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x074e9213 down_killable +EXPORT_SYMBOL vmlinux 0x075031ad dev_driver_string +EXPORT_SYMBOL vmlinux 0x076810bb inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x0799aca4 local_bh_enable +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07bed2de scm_fp_dup +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07d72342 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x07e4df29 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083c2cbe of_get_next_parent +EXPORT_SYMBOL vmlinux 0x084496bb napi_get_frags +EXPORT_SYMBOL vmlinux 0x086b6d96 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x08813e54 ftrace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x088f1038 may_umount_tree +EXPORT_SYMBOL vmlinux 0x08e87a32 nf_getsockopt +EXPORT_SYMBOL vmlinux 0x08ea6ab0 pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x08fa876d i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x09048d68 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0x0919ef0e tty_register_device +EXPORT_SYMBOL vmlinux 0x0928db05 __break_lease +EXPORT_SYMBOL vmlinux 0x09588c17 set_binfmt +EXPORT_SYMBOL vmlinux 0x096cd1e0 dma_set_mask +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x099c7e61 sock_alloc_file +EXPORT_SYMBOL vmlinux 0x09b41fe2 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x09b62ea9 ps2_handle_response +EXPORT_SYMBOL vmlinux 0x09bdae00 simple_open +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09efc116 bio_integrity_set_tag +EXPORT_SYMBOL vmlinux 0x09f1ef5c powerpc_debugfs_root +EXPORT_SYMBOL vmlinux 0x0a15f5e1 simple_write_begin +EXPORT_SYMBOL vmlinux 0x0a217dca giveup_altivec +EXPORT_SYMBOL vmlinux 0x0a2180bc dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a536f4a lease_modify +EXPORT_SYMBOL vmlinux 0x0a71f570 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x0a737386 tcp_make_synack +EXPORT_SYMBOL vmlinux 0x0a770832 register_memory_notifier +EXPORT_SYMBOL vmlinux 0x0a9e3fa2 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x0aacb6bf xfrm_init_state +EXPORT_SYMBOL vmlinux 0x0ab32cf8 pci_bus_put +EXPORT_SYMBOL vmlinux 0x0acb1a3c __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0b0419ed dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b12c903 blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b2e1ec7 h_get_mpp +EXPORT_SYMBOL vmlinux 0x0b3f0102 ppp_input_error +EXPORT_SYMBOL vmlinux 0x0b5086d4 dev_set_group +EXPORT_SYMBOL vmlinux 0x0b5689c5 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0x0b592122 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x0b5fb472 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0ba5c0f5 input_register_handle +EXPORT_SYMBOL vmlinux 0x0ba941a1 blk_mq_init_commands +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0c011044 pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0x0c42d8e2 generic_file_open +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c65e73c scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0x0c77e434 net_dma_find_channel +EXPORT_SYMBOL vmlinux 0x0c8c9e99 scsi_show_extd_sense +EXPORT_SYMBOL vmlinux 0x0ca18472 bdi_register +EXPORT_SYMBOL vmlinux 0x0ca64570 cdev_alloc +EXPORT_SYMBOL vmlinux 0x0ca71296 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cb033d9 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x0ccd47b7 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0x0cd2281d phy_find_first +EXPORT_SYMBOL vmlinux 0x0ce900af blk_finish_plug +EXPORT_SYMBOL vmlinux 0x0cf86e94 inet_stream_ops +EXPORT_SYMBOL vmlinux 0x0d292018 follow_up +EXPORT_SYMBOL vmlinux 0x0d4f44fe i2c_master_send +EXPORT_SYMBOL vmlinux 0x0d5042c4 simple_transaction_read +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d5db4fc key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x0d6c963c copy_from_user +EXPORT_SYMBOL vmlinux 0x0d75c745 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x0d7d6cf5 dev_close +EXPORT_SYMBOL vmlinux 0x0d852bbe padata_do_parallel +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0da311c7 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x0da3b311 filemap_flush +EXPORT_SYMBOL vmlinux 0x0daccd13 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x0dfe7fc3 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0x0e29dbbf skb_clone +EXPORT_SYMBOL vmlinux 0x0e300ad9 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x0e351cb7 udp_sendmsg +EXPORT_SYMBOL vmlinux 0x0e4f6151 input_unregister_handler +EXPORT_SYMBOL vmlinux 0x0e62992e blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e8f18ee set_anon_super +EXPORT_SYMBOL vmlinux 0x0e8f30f6 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x0eb3c288 block_write_full_page_endio +EXPORT_SYMBOL vmlinux 0x0eb7eeb8 pci_iounmap +EXPORT_SYMBOL vmlinux 0x0ebc11c4 __neigh_event_send +EXPORT_SYMBOL vmlinux 0x0ed38f6e i8042_install_filter +EXPORT_SYMBOL vmlinux 0x0ed9fc69 __ip_dev_find +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f4ec3d9 bio_copy_data +EXPORT_SYMBOL vmlinux 0x0f519a76 scsi_execute +EXPORT_SYMBOL vmlinux 0x0f5faa7e wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x0f77278a get_pci_dma_ops +EXPORT_SYMBOL vmlinux 0x0f7a8d14 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x0f840d59 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb3ee7f scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x0fd5986e inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x0fe18bb4 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x0ff8c00d tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x105269c5 dm_register_target +EXPORT_SYMBOL vmlinux 0x1056827a phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0x1056d8b4 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x106f00a4 vm_insert_page +EXPORT_SYMBOL vmlinux 0x1072a394 csum_partial_copy_from_user +EXPORT_SYMBOL vmlinux 0x1083f8fc serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x10af6a4d sock_wfree +EXPORT_SYMBOL vmlinux 0x10c77be6 read_cache_page +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x10fbb843 pci_enable_msi_block_auto +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x11267875 scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0x1127702e __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x113b92bf xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x115900e4 tty_register_driver +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x1182d83a cpuidle_disable +EXPORT_SYMBOL vmlinux 0x118e2c6d __napi_schedule +EXPORT_SYMBOL vmlinux 0x119493fa ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x11b658b7 dev_change_carrier +EXPORT_SYMBOL vmlinux 0x11c9185c of_iomap +EXPORT_SYMBOL vmlinux 0x11d43d8e jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x11dc7cd4 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0x11e0595e km_state_notify +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 0x122043a8 of_find_node_with_property +EXPORT_SYMBOL vmlinux 0x12444d0f xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x126a8bd2 genphy_read_status +EXPORT_SYMBOL vmlinux 0x126c9ccb pci_clear_master +EXPORT_SYMBOL vmlinux 0x12952372 d_validate +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12bae80b pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0x12c8381b scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x12d90bec gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x12dfeb12 vprintk_emit +EXPORT_SYMBOL vmlinux 0x12e5ef0c rtas_set_power_level +EXPORT_SYMBOL vmlinux 0x132515be xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x1334d20e deactivate_super +EXPORT_SYMBOL vmlinux 0x133a08c1 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x133e77bc __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x1348760d ipmi_request_settime +EXPORT_SYMBOL vmlinux 0x13686632 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x136aac9a inode_init_always +EXPORT_SYMBOL vmlinux 0x13724b41 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0x13afba22 tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0x13affbda percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x13bc4408 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x13ca31e3 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x13ccd1ac nf_hook_slow +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13e0a161 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x13e38f5c up_read +EXPORT_SYMBOL vmlinux 0x13e5ca4e devm_iounmap +EXPORT_SYMBOL vmlinux 0x13f53da6 CMO_PageSize +EXPORT_SYMBOL vmlinux 0x14022e07 icmp_send +EXPORT_SYMBOL vmlinux 0x14115b9f touch_atime +EXPORT_SYMBOL vmlinux 0x1429599b i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x143025dd skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x14385e35 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x14392044 inet_put_port +EXPORT_SYMBOL vmlinux 0x144b6710 pci_assign_resource +EXPORT_SYMBOL vmlinux 0x14553c2c mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x145d2081 block_truncate_page +EXPORT_SYMBOL vmlinux 0x1465f5cb pci_vpd_truncate +EXPORT_SYMBOL vmlinux 0x14685031 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x147225b1 ilookup5 +EXPORT_SYMBOL vmlinux 0x147c27e8 add_disk +EXPORT_SYMBOL vmlinux 0x148ad66f scsi_prep_state_check +EXPORT_SYMBOL vmlinux 0x1492c91e pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x1495653f __elv_add_request +EXPORT_SYMBOL vmlinux 0x14a14817 pSeries_enable_reloc_on_exc +EXPORT_SYMBOL vmlinux 0x14d31816 clear_bdi_congested +EXPORT_SYMBOL vmlinux 0x153c10f5 alloc_pci_dev +EXPORT_SYMBOL vmlinux 0x1540e009 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x1551dc51 bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x1562e7a7 nf_reinject +EXPORT_SYMBOL vmlinux 0x15adc7e5 netlink_capable +EXPORT_SYMBOL vmlinux 0x15c0dae6 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x15c16b0a i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x15d3fd60 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x15f50990 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0x15f571ec blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x160bd45c rtas_token +EXPORT_SYMBOL vmlinux 0x160d0b60 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x161bb536 iterate_mounts +EXPORT_SYMBOL vmlinux 0x165c095b ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x1673e11b nobh_write_end +EXPORT_SYMBOL vmlinux 0x1679c682 paca +EXPORT_SYMBOL vmlinux 0x167c5967 print_hex_dump +EXPORT_SYMBOL vmlinux 0x16d596d9 blk_end_request_all +EXPORT_SYMBOL vmlinux 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL vmlinux 0x16e19c2a __scm_send +EXPORT_SYMBOL vmlinux 0x16e888a8 vm_map_ram +EXPORT_SYMBOL vmlinux 0x16e9f99f xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x16fc9d21 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x17158739 override_creds +EXPORT_SYMBOL vmlinux 0x1737e97e posix_test_lock +EXPORT_SYMBOL vmlinux 0x1743414f __debugger_fault_handler +EXPORT_SYMBOL vmlinux 0x174a5cba __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x17648396 dev_base_lock +EXPORT_SYMBOL vmlinux 0x177ac1ce kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17bae7b4 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x17cdc1b2 sockfd_lookup +EXPORT_SYMBOL vmlinux 0x17e28473 fsl_upm_run_pattern +EXPORT_SYMBOL vmlinux 0x17e3a41c kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0x17e590c4 max8925_reg_write +EXPORT_SYMBOL vmlinux 0x17ed0087 security_inode_init_security +EXPORT_SYMBOL vmlinux 0x17eefa3a mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x17fa666c dma_iommu_ops +EXPORT_SYMBOL vmlinux 0x182dbb37 keyring_alloc +EXPORT_SYMBOL vmlinux 0x183290d9 input_unregister_device +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x184e6c85 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x1857aa39 proc_dointvec +EXPORT_SYMBOL vmlinux 0x185dbb8e iget_locked +EXPORT_SYMBOL vmlinux 0x186ec8c5 __scsi_put_command +EXPORT_SYMBOL vmlinux 0x18769e1c ide_dump_status +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x188f5187 of_phy_connect +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x189a4a17 free_task +EXPORT_SYMBOL vmlinux 0x18f9c5db generic_setxattr +EXPORT_SYMBOL vmlinux 0x18fcf487 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x19111a40 lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x192967e7 ipv4_specific +EXPORT_SYMBOL vmlinux 0x193a7738 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x19444627 memcpy_fromiovecend +EXPORT_SYMBOL vmlinux 0x195a1a76 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0x19632584 loop_register_transfer +EXPORT_SYMBOL vmlinux 0x196b226e serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x197851ff blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x19905d1f unregister_cdrom +EXPORT_SYMBOL vmlinux 0x1992f73a lro_flush_pkt +EXPORT_SYMBOL vmlinux 0x199ec4fb arch_spin_unlock_wait +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19a17bb0 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x19a19df5 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x19a7328b jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19c1f2c0 ata_std_end_eh +EXPORT_SYMBOL vmlinux 0x19da58ec d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x19e662a7 ps2_begin_command +EXPORT_SYMBOL vmlinux 0x19f1104e netdev_notice +EXPORT_SYMBOL vmlinux 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL vmlinux 0x1a2dab19 dev_notice +EXPORT_SYMBOL vmlinux 0x1a570d7c sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0x1a86cf87 of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0x1aa78d0f scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL vmlinux 0x1ac5d3cb strcspn +EXPORT_SYMBOL vmlinux 0x1ac681e5 clone_cred +EXPORT_SYMBOL vmlinux 0x1ac9b5cf phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x1acb5d40 dscr_default +EXPORT_SYMBOL vmlinux 0x1ace138d bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0x1acea1f6 vm_mmap +EXPORT_SYMBOL vmlinux 0x1ad3575b max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x1ad78de7 mpage_writepage +EXPORT_SYMBOL vmlinux 0x1ae515c3 file_ns_capable +EXPORT_SYMBOL vmlinux 0x1ae6561e __kfree_skb +EXPORT_SYMBOL vmlinux 0x1af62a99 panic_notifier_list +EXPORT_SYMBOL vmlinux 0x1af78662 xfrm_cfg_mutex +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b132009 rename_lock +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b25ee8e scsi_reset_provider +EXPORT_SYMBOL vmlinux 0x1b276a7a find_get_page +EXPORT_SYMBOL vmlinux 0x1b41533e nf_log_unregister +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b811a55 tcp_child_process +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b8504a7 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1b8bf685 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x1b8d2a1d call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x1b9784fb pci_disable_msi +EXPORT_SYMBOL vmlinux 0x1b9e0ff1 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x1bc4ff03 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0x1bcdbca5 d_delete +EXPORT_SYMBOL vmlinux 0x1bdc26cf sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0x1bde1f00 bio_map_user +EXPORT_SYMBOL vmlinux 0x1bfec830 __iounmap_at +EXPORT_SYMBOL vmlinux 0x1c191a29 locks_init_lock +EXPORT_SYMBOL vmlinux 0x1c2ad97a blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x1c3e02e4 memcmp +EXPORT_SYMBOL vmlinux 0x1c78e9f6 devfreq_resume_device +EXPORT_SYMBOL vmlinux 0x1c9417c2 fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0x1c962dcf abx500_register_ops +EXPORT_SYMBOL vmlinux 0x1ca3c861 del_gendisk +EXPORT_SYMBOL vmlinux 0x1cb19221 set_nlink +EXPORT_SYMBOL vmlinux 0x1cb8132c set_bdi_congested +EXPORT_SYMBOL vmlinux 0x1ccf027c cpumask_set_cpu_local_first +EXPORT_SYMBOL vmlinux 0x1d0f3529 sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x1d0f42a6 pci_platform_rom +EXPORT_SYMBOL vmlinux 0x1d177e84 bdget +EXPORT_SYMBOL vmlinux 0x1d531325 ps2_drain +EXPORT_SYMBOL vmlinux 0x1d6661c0 revalidate_disk +EXPORT_SYMBOL vmlinux 0x1d6d1f81 max8998_read_reg +EXPORT_SYMBOL vmlinux 0x1d7b59fe init_special_inode +EXPORT_SYMBOL vmlinux 0x1d7fabb9 fsnotify_destroy_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 0x1dc89bfe scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1de603b2 cap_mmap_file +EXPORT_SYMBOL vmlinux 0x1e0ddace __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x1e12a7f6 dev_mc_add +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e2db3ae dev_get_nest_level +EXPORT_SYMBOL vmlinux 0x1e3d0681 alloc_fddidev +EXPORT_SYMBOL vmlinux 0x1e483a49 agp_bridge +EXPORT_SYMBOL vmlinux 0x1e4ab6be tty_port_destroy +EXPORT_SYMBOL vmlinux 0x1e4d46d6 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x1e6bd9e5 security_file_permission +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e7f54cf ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ea90db3 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x1ec3bed9 hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0x1ed989f5 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0x1f150f36 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x1f37caae xfrm_state_update +EXPORT_SYMBOL vmlinux 0x1f4ccae9 nf_register_hooks +EXPORT_SYMBOL vmlinux 0x1f537c94 kill_pid +EXPORT_SYMBOL vmlinux 0x1f539cd7 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x1f6c5000 inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0x1f6ce67a sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x1f7201c4 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x1f7c2d59 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x1f83bb7d d_genocide +EXPORT_SYMBOL vmlinux 0x1f87e040 try_to_free_buffers +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 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x2023d567 vfs_writev +EXPORT_SYMBOL vmlinux 0x20434177 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x205b1915 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x2068c6fb netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x206c6571 sk_common_release +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x208429cf mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x208f8e24 input_inject_event +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20a7a098 pci_set_mwi +EXPORT_SYMBOL vmlinux 0x20a86b3f of_get_pci_address +EXPORT_SYMBOL vmlinux 0x20b2bb2d param_array_ops +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20eadeb6 ip_compute_csum +EXPORT_SYMBOL vmlinux 0x20ee34bd netif_napi_del +EXPORT_SYMBOL vmlinux 0x212ac1a7 dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x213ba6d1 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x215ebd78 bitrev16 +EXPORT_SYMBOL vmlinux 0x216b5f04 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x216c5fb6 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x2179c7c7 dquot_enable +EXPORT_SYMBOL vmlinux 0x2193ce8d audit_log_start +EXPORT_SYMBOL vmlinux 0x21abb2c8 sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x21b99a75 phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0x21e5b7ac d_instantiate +EXPORT_SYMBOL vmlinux 0x21ed143c scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x21f3cec6 ether_setup +EXPORT_SYMBOL vmlinux 0x22137e0a i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x222ac09a pipe_lock +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x2242f0f3 proc_remove +EXPORT_SYMBOL vmlinux 0x22485824 dget_parent +EXPORT_SYMBOL vmlinux 0x226a990f blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x227badd6 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x231a349c generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL vmlinux 0x234d36bb abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x235e90f3 __wake_up_bit +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 0x23d85681 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x23f2243d mempool_free +EXPORT_SYMBOL vmlinux 0x23f7fb9e scsi_free_command +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x2405ad6b phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x2438a156 pci_reenable_device +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x244a67a4 nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0x244ddfb0 posix_lock_file_wait +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x245a5a94 sleep_on_timeout +EXPORT_SYMBOL vmlinux 0x2473f127 proto_register +EXPORT_SYMBOL vmlinux 0x248133fa mount_single +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x2484adc3 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0x24add917 eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0x24b8edcb scsi_remove_device +EXPORT_SYMBOL vmlinux 0x24d77656 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x24d96c71 kfree_put_link +EXPORT_SYMBOL vmlinux 0x24dd4eaf agp_create_memory +EXPORT_SYMBOL vmlinux 0x24ef7017 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250f24f9 km_new_mapping +EXPORT_SYMBOL vmlinux 0x252d60a5 thaw_bdev +EXPORT_SYMBOL vmlinux 0x25489f2c led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0x2556bd74 wireless_send_event +EXPORT_SYMBOL vmlinux 0x256674fc __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0x25710922 tcp_init_sock +EXPORT_SYMBOL vmlinux 0x257b63a0 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25a7a0e2 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x25a8dcb1 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x25c677c4 mac_pton +EXPORT_SYMBOL vmlinux 0x25edade2 kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x25fc6868 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x260cf8f8 of_get_property +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x26477c07 __vmalloc +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x26543271 vfs_symlink +EXPORT_SYMBOL vmlinux 0x265b8f8e tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x26643e6f i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x2665d53a key_create_or_update +EXPORT_SYMBOL vmlinux 0x266da616 compat_sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x2685c3d7 __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x2697edb1 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x26cc564b pci_iomap +EXPORT_SYMBOL vmlinux 0x26e298e0 unregister_memory_notifier +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26f0453a blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x26f68dea blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x26f7fe47 eth_validate_addr +EXPORT_SYMBOL vmlinux 0x2712f4f5 crc32_le_combine +EXPORT_SYMBOL vmlinux 0x271373e5 __bread +EXPORT_SYMBOL vmlinux 0x2717b7a1 blk_mq_insert_request +EXPORT_SYMBOL vmlinux 0x2731de14 netpoll_rx_enable +EXPORT_SYMBOL vmlinux 0x274544e2 unregister_md_personality +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x27646df3 start_thread +EXPORT_SYMBOL vmlinux 0x2772f351 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x277df0f6 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x277ffc1a pcibus_to_node +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x2790225f agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0x27ae2423 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27bda1ff cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x27c13a79 kernel_connect +EXPORT_SYMBOL vmlinux 0x27d46fc2 spi_release_transport +EXPORT_SYMBOL vmlinux 0x27dbb1a4 fb_blank +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27f0bad1 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x27f2313e idr_replace +EXPORT_SYMBOL vmlinux 0x27f47bd2 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x28042261 d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x2818294e ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x28318305 snprintf +EXPORT_SYMBOL vmlinux 0x2854d56a put_io_context +EXPORT_SYMBOL vmlinux 0x28639322 scsi_register +EXPORT_SYMBOL vmlinux 0x288a90c7 register_md_personality +EXPORT_SYMBOL vmlinux 0x2891610f input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28abfe6e scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x28b384e4 dentry_unhash +EXPORT_SYMBOL vmlinux 0x28bf91e0 rtnl_notify +EXPORT_SYMBOL vmlinux 0x29122871 agp_find_bridge +EXPORT_SYMBOL vmlinux 0x291ef2bb mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x2960019b eeh_check_failure +EXPORT_SYMBOL vmlinux 0x2960fffb __bio_clone +EXPORT_SYMBOL vmlinux 0x2964f0dc i2c_verify_client +EXPORT_SYMBOL vmlinux 0x2972f9e0 alloc_disk_node +EXPORT_SYMBOL vmlinux 0x29788478 fsnotify_get_group +EXPORT_SYMBOL vmlinux 0x298dd983 mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0x299103d8 textsearch_prepare +EXPORT_SYMBOL vmlinux 0x29b2795d blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0x29e48cb0 empty_aops +EXPORT_SYMBOL vmlinux 0x29edd8c3 rtas_online_cpus_mask +EXPORT_SYMBOL vmlinux 0x29ff2d84 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x2a035bee ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x2a1ed84f compat_ip_getsockopt +EXPORT_SYMBOL vmlinux 0x2a210f7b tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x2a26cfd3 skb_tx_error +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a518061 __register_binfmt +EXPORT_SYMBOL vmlinux 0x2a5a1906 devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x2a8ed609 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x2aa112c5 tcp_check_req +EXPORT_SYMBOL vmlinux 0x2aadf76f netif_rx +EXPORT_SYMBOL vmlinux 0x2accf00c from_kprojid +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2ae14a95 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x2af4dbfd mmc_gpio_free_cd +EXPORT_SYMBOL vmlinux 0x2b049574 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x2b0b4a8d make_kgid +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b1155dc release_pages +EXPORT_SYMBOL vmlinux 0x2b12faac sock_no_poll +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b42845d dev_get_by_name +EXPORT_SYMBOL vmlinux 0x2b4991ec xmon +EXPORT_SYMBOL vmlinux 0x2b5d2c40 dev_remove_pack +EXPORT_SYMBOL vmlinux 0x2b8996f6 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba5181f pci_enable_device_io +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bafe2aa gen10g_read_status +EXPORT_SYMBOL vmlinux 0x2bb89fe1 dm_kobject_release +EXPORT_SYMBOL vmlinux 0x2bcf2618 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x2bd76e4b uart_add_one_port +EXPORT_SYMBOL vmlinux 0x2bdafe0e __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x2c04681b fput +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c48e3d9 __get_page_tail +EXPORT_SYMBOL vmlinux 0x2c618c0d jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0x2c6d5fc0 blk_rq_init +EXPORT_SYMBOL vmlinux 0x2c7186d8 put_disk +EXPORT_SYMBOL vmlinux 0x2c7b1fca down_timeout +EXPORT_SYMBOL vmlinux 0x2c8caa13 __dquot_free_space +EXPORT_SYMBOL vmlinux 0x2c900d91 cpufreq_put_global_kobject +EXPORT_SYMBOL vmlinux 0x2c956c18 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x2c9a34a9 save_mount_options +EXPORT_SYMBOL vmlinux 0x2c9c66e5 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x2ca7af68 unregister_binfmt +EXPORT_SYMBOL vmlinux 0x2cd403e2 fb_set_var +EXPORT_SYMBOL vmlinux 0x2cd7ef0a freeze_bdev +EXPORT_SYMBOL vmlinux 0x2cf73cb7 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x2cf7e173 dquot_get_dqinfo +EXPORT_SYMBOL vmlinux 0x2d03c10d posix_acl_create +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d37baa0 tty_mutex +EXPORT_SYMBOL vmlinux 0x2d434561 kobject_del +EXPORT_SYMBOL vmlinux 0x2d476dc4 d_drop +EXPORT_SYMBOL vmlinux 0x2d64e9e5 ip6_xmit +EXPORT_SYMBOL vmlinux 0x2d668b27 agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0x2d68ff72 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x2d7d1ac2 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x2d89342a scsi_show_sense_hdr +EXPORT_SYMBOL vmlinux 0x2d946a4a file_open_root +EXPORT_SYMBOL vmlinux 0x2d970a63 pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x2da3066b find_vma +EXPORT_SYMBOL vmlinux 0x2da470a1 phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x2daaaba9 param_get_byte +EXPORT_SYMBOL vmlinux 0x2db1e0c6 dql_init +EXPORT_SYMBOL vmlinux 0x2dbf814c serio_close +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2df023e2 kernel_write +EXPORT_SYMBOL vmlinux 0x2e0d2f7f queue_work_on +EXPORT_SYMBOL vmlinux 0x2e12a93b ibmebus_request_irq +EXPORT_SYMBOL vmlinux 0x2e17d494 sock_create +EXPORT_SYMBOL vmlinux 0x2e1912b5 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x2e1bef92 eeh_subsystem_enabled +EXPORT_SYMBOL vmlinux 0x2e24053f __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x2e2b40d2 strncat +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e2f6171 __i2c_transfer +EXPORT_SYMBOL vmlinux 0x2e396aa5 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x2e426857 tcp_parse_options +EXPORT_SYMBOL vmlinux 0x2e5d16fc tty_hangup +EXPORT_SYMBOL vmlinux 0x2ea24f2d bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x2ee2faa1 blkdev_fsync +EXPORT_SYMBOL vmlinux 0x2eeceb42 sk_chk_filter +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2efef7e5 ide_set_handler +EXPORT_SYMBOL vmlinux 0x2f0069f2 scsi_allocate_command +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f064b55 allocate_resource +EXPORT_SYMBOL vmlinux 0x2f1f7edc md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x2f24bef4 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x2f274904 dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x2f287f0d copy_to_user +EXPORT_SYMBOL vmlinux 0x2f38a6a9 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x2f405d3d pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0x2f45fa91 __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x2f732655 agp_put_bridge +EXPORT_SYMBOL vmlinux 0x2f8d047f key_unlink +EXPORT_SYMBOL vmlinux 0x2f9622a9 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x2fae96de rtas_data_buf_lock +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fde8abd unlink_framebuffer +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2fe85be8 qdisc_destroy +EXPORT_SYMBOL vmlinux 0x3005c2a4 inc_nlink +EXPORT_SYMBOL vmlinux 0x300ba453 __pagevec_release +EXPORT_SYMBOL vmlinux 0x3011b46c blk_mq_free_single_hw_queue +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x303b2e43 scsi_prep_fn +EXPORT_SYMBOL vmlinux 0x30446da9 send_sig +EXPORT_SYMBOL vmlinux 0x304f3430 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x3059bc54 dev_get_by_flags_rcu +EXPORT_SYMBOL vmlinux 0x30642124 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x30905a6a __page_cache_alloc +EXPORT_SYMBOL vmlinux 0x30968253 __dst_free +EXPORT_SYMBOL vmlinux 0x309cf57c dqput +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30a905e7 km_policy_notify +EXPORT_SYMBOL vmlinux 0x30b8b35c cpu_to_chip_id +EXPORT_SYMBOL vmlinux 0x30c0c6ef vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x30cada8f radix_tree_next_hole +EXPORT_SYMBOL vmlinux 0x30d84a8d flush_icache_user_range +EXPORT_SYMBOL vmlinux 0x30e39e17 __lock_page +EXPORT_SYMBOL vmlinux 0x30e75327 skb_checksum_help +EXPORT_SYMBOL vmlinux 0x30e86693 pci_set_ltr +EXPORT_SYMBOL vmlinux 0x30ee2c4e skb_orphan_partial +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310af2bd mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x311dd76c flex_array_alloc +EXPORT_SYMBOL vmlinux 0x311ebe8a inet_ioctl +EXPORT_SYMBOL vmlinux 0x3131d063 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0x313f14f2 ip_getsockopt +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x315c65fd zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x317b6dfa d_set_d_op +EXPORT_SYMBOL vmlinux 0x318c9077 skb_copy_datagram_from_iovec +EXPORT_SYMBOL vmlinux 0x318cadb1 reciprocal_value +EXPORT_SYMBOL vmlinux 0x319b6f34 pci_select_bars +EXPORT_SYMBOL vmlinux 0x319cabed tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x319e0726 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x31b58c8d pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x31cd995b store_fp_state +EXPORT_SYMBOL vmlinux 0x31d16a2f skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x31d61e9a cur_cpu_spec +EXPORT_SYMBOL vmlinux 0x3208022f __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x321b1aa9 __secpath_destroy +EXPORT_SYMBOL vmlinux 0x322f48d4 abx500_dump_all_banks +EXPORT_SYMBOL vmlinux 0x3243caca fb_set_suspend +EXPORT_SYMBOL vmlinux 0x3263bcda rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x3266a71a blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x326c3626 udp_add_offload +EXPORT_SYMBOL vmlinux 0x327bf883 of_can_translate_address +EXPORT_SYMBOL vmlinux 0x3284c88d tcf_hash_lookup +EXPORT_SYMBOL vmlinux 0x32865e6a writeback_in_progress +EXPORT_SYMBOL vmlinux 0x32a40462 __find_get_block +EXPORT_SYMBOL vmlinux 0x32dfcc56 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0x32e78815 unregister_quota_format +EXPORT_SYMBOL vmlinux 0x33351e17 pps_unregister_source +EXPORT_SYMBOL vmlinux 0x333cb37c __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x33461cc8 bio_copy_kern +EXPORT_SYMBOL vmlinux 0x33539c3c sk_mc_loop +EXPORT_SYMBOL vmlinux 0x3362c7d6 check_submounts_and_drop +EXPORT_SYMBOL vmlinux 0x3362f4f4 scm_detach_fds +EXPORT_SYMBOL vmlinux 0x3372d8ca dev_printk +EXPORT_SYMBOL vmlinux 0x339c58d4 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x33a34798 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x33ac0438 key_type_keyring +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33ba5cd4 param_ops_bool +EXPORT_SYMBOL vmlinux 0x33ba8e4c mark_info_dirty +EXPORT_SYMBOL vmlinux 0x33bb0ed6 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33d11cd7 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x33ddce19 devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0x33ef7dfb truncate_setsize +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33fcf44a __kfifo_out_r +EXPORT_SYMBOL vmlinux 0x3404ba7f skb_pull +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x3434c929 security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0x3444f3e6 simple_transaction_release +EXPORT_SYMBOL vmlinux 0x346c4ded rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x3473ef14 giveup_fpu +EXPORT_SYMBOL vmlinux 0x3474bbaa skb_queue_tail +EXPORT_SYMBOL vmlinux 0x347eb9bd param_set_bool +EXPORT_SYMBOL vmlinux 0x34852147 register_console +EXPORT_SYMBOL vmlinux 0x34885dcd bitmap_unplug +EXPORT_SYMBOL vmlinux 0x3491418c simple_unlink +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x349d175d backlight_device_register +EXPORT_SYMBOL vmlinux 0x34e127f7 gen10g_config_advert +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x35068760 commit_creds +EXPORT_SYMBOL vmlinux 0x350bbbd5 dqget +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x3534c3a4 inet_frag_find +EXPORT_SYMBOL vmlinux 0x3539f11b match_strlcpy +EXPORT_SYMBOL vmlinux 0x3541de63 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x3543c648 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x355ddcf8 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x35c32767 xor_altivec_2 +EXPORT_SYMBOL vmlinux 0x35defc50 iov_iter_advance +EXPORT_SYMBOL vmlinux 0x35ef65da __blk_end_request_all +EXPORT_SYMBOL vmlinux 0x360713c7 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x36289f46 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x36480ede devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x365522d0 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x367d5451 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x368382e2 of_get_named_gpiod_flags +EXPORT_SYMBOL vmlinux 0x3686ea09 spi_print_msg +EXPORT_SYMBOL vmlinux 0x369e1115 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x36a18243 __seq_open_private +EXPORT_SYMBOL vmlinux 0x36b0e732 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x36b0ec6e __put_cred +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36bfa492 md_flush_request +EXPORT_SYMBOL vmlinux 0x36c128b4 misc_register +EXPORT_SYMBOL vmlinux 0x36c735ad kset_unregister +EXPORT_SYMBOL vmlinux 0x36d7b11a of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0x36e360e3 __hw_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x36e609a1 load_nls +EXPORT_SYMBOL vmlinux 0x36ef6655 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x3718ac34 blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x371bb8ed blkdev_issue_zeroout +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 0x3745cf8c ptp_clock_register +EXPORT_SYMBOL vmlinux 0x37467770 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x3764b990 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x376d6add ndo_dflt_bridge_getlink +EXPORT_SYMBOL vmlinux 0x3799350f dquot_acquire +EXPORT_SYMBOL vmlinux 0x37b5a46e agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0x37b67ec9 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x37bbbf97 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37f295e0 __getblk +EXPORT_SYMBOL vmlinux 0x380404c9 blk_mq_free_queue +EXPORT_SYMBOL vmlinux 0x38198ca5 seq_path +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x383c577f tcf_hash_release +EXPORT_SYMBOL vmlinux 0x38473891 audit_log +EXPORT_SYMBOL vmlinux 0x385a895e single_open_size +EXPORT_SYMBOL vmlinux 0x38637be4 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x386cfb76 pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x3870d778 locks_free_lock +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388f9128 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x38900449 dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38d384f9 agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0x38e4fcfd rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x38f7c806 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x38fb9933 tty_std_termios +EXPORT_SYMBOL vmlinux 0x390e7449 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x3932a919 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x3955fcf6 __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x395b429c agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0x3961fc3e ll_rw_block +EXPORT_SYMBOL vmlinux 0x399ad043 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0x39a1a328 generic_show_options +EXPORT_SYMBOL vmlinux 0x39c695da of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0x39cb8883 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x39cdf63c wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x39fa70d2 mmc_free_host +EXPORT_SYMBOL vmlinux 0x39ff3d4e md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x3a20ff73 __crc32c_le +EXPORT_SYMBOL vmlinux 0x3a476ed1 read_code +EXPORT_SYMBOL vmlinux 0x3a656d61 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x3a77bfcf netdev_warn +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3ace2e0f lock_may_write +EXPORT_SYMBOL vmlinux 0x3ada3a7f dev_addr_add +EXPORT_SYMBOL vmlinux 0x3aed8d1f dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x3af014d8 lock_fb_info +EXPORT_SYMBOL vmlinux 0x3b0b61df abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x3b1c38a5 bio_clone_bioset +EXPORT_SYMBOL vmlinux 0x3b54a729 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x3b615a21 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x3b964118 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x3b9e0238 clear_inode +EXPORT_SYMBOL vmlinux 0x3bd1b1f6 msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x3bd46eb1 invalidate_partition +EXPORT_SYMBOL vmlinux 0x3bd642ff dump_skip +EXPORT_SYMBOL vmlinux 0x3bef03b9 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x3bf946e4 __devm_release_region +EXPORT_SYMBOL vmlinux 0x3c13dd0d ipmi_register_smi +EXPORT_SYMBOL vmlinux 0x3c1dfe7b mutex_trylock +EXPORT_SYMBOL vmlinux 0x3c1e1721 dma_pool_create +EXPORT_SYMBOL vmlinux 0x3c2619e5 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x3c516a2f set_user_nice +EXPORT_SYMBOL vmlinux 0x3c53e008 generic_setlease +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c8a7110 vio_h_cop_sync +EXPORT_SYMBOL vmlinux 0x3c9d1211 string_get_size +EXPORT_SYMBOL vmlinux 0x3cb81bd7 decrementer_clockevent +EXPORT_SYMBOL vmlinux 0x3cc4b0dc lg_lock_init +EXPORT_SYMBOL vmlinux 0x3cc71df7 __invalidate_device +EXPORT_SYMBOL vmlinux 0x3cc97163 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3ce7c9d1 pci_request_regions +EXPORT_SYMBOL vmlinux 0x3cf3242d inet_frags_init_net +EXPORT_SYMBOL vmlinux 0x3d0387a4 nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x3d06b1a5 skb_trim +EXPORT_SYMBOL vmlinux 0x3d125115 netdev_has_any_upper_dev +EXPORT_SYMBOL vmlinux 0x3d1f298d dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x3d20a24b netpoll_rx_disable +EXPORT_SYMBOL vmlinux 0x3d41904f of_get_next_child +EXPORT_SYMBOL vmlinux 0x3d516605 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x3d5844b3 strnicmp +EXPORT_SYMBOL vmlinux 0x3dad4204 do_sync_write +EXPORT_SYMBOL vmlinux 0x3db3820e skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0x3dc915b9 page_put_link +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dce8ee9 write_cache_pages +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e08b8ac wait_on_sync_kiocb +EXPORT_SYMBOL vmlinux 0x3e20e350 get_agp_version +EXPORT_SYMBOL vmlinux 0x3e2dfcac serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x3e33fa8c inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x3e3f4cd6 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x3e82001c make_kuid +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e8c102a scsi_cmd_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3eb3d0df tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x3ec9240c __first_cpu +EXPORT_SYMBOL vmlinux 0x3ed29d9c rtnl_create_link +EXPORT_SYMBOL vmlinux 0x3ed63055 zlib_inflateReset +EXPORT_SYMBOL vmlinux 0x3ee05c7f tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x3f02691b netdev_features_change +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f2228fb xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x3f3db433 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x3f406a3b enable_kernel_altivec +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f53518e free_mdio_bitbang +EXPORT_SYMBOL vmlinux 0x3fb83e0c mnt_pin +EXPORT_SYMBOL vmlinux 0x3fbb9162 pcim_enable_device +EXPORT_SYMBOL vmlinux 0x3fcf313b __sock_create +EXPORT_SYMBOL vmlinux 0x3fd55724 of_n_size_cells +EXPORT_SYMBOL vmlinux 0x3fd5ecbe neigh_for_each +EXPORT_SYMBOL vmlinux 0x3fe2ccbe memweight +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3ff62317 local_bh_disable +EXPORT_SYMBOL vmlinux 0x3ff8069b tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x3ff827b8 generic_ro_fops +EXPORT_SYMBOL vmlinux 0x3ff8e495 lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0x3ffc9add generic_permission +EXPORT_SYMBOL vmlinux 0x40240eba generic_file_aio_read +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x403f6ee4 pci_read_vpd +EXPORT_SYMBOL vmlinux 0x404066c5 idr_for_each +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x40788bff blkdev_put +EXPORT_SYMBOL vmlinux 0x408e6aa2 pci_restore_state +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL vmlinux 0x40fa28fb elv_add_request +EXPORT_SYMBOL vmlinux 0x4101a975 ide_fixstring +EXPORT_SYMBOL vmlinux 0x41105e2b of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0x411778d2 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x413f59ee ide_complete_rq +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x4159c38f ioremap_wc +EXPORT_SYMBOL vmlinux 0x416e78c3 cookie_check_timestamp +EXPORT_SYMBOL vmlinux 0x416f25b6 cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x417c66f7 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0x4188397d copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x41cc5d89 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x41dfcc7d tcf_exts_change +EXPORT_SYMBOL vmlinux 0x42003f14 make_bad_inode +EXPORT_SYMBOL vmlinux 0x42072524 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x4211c3c1 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x423b776a ipmi_create_user +EXPORT_SYMBOL vmlinux 0x425ee4a5 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x4270fea3 ibmebus_bus_type +EXPORT_SYMBOL vmlinux 0x42977ad4 __hw_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42ae2fa7 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x42c09537 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x42c7d4be textsearch_unregister +EXPORT_SYMBOL vmlinux 0x42c7e109 security_path_mkdir +EXPORT_SYMBOL vmlinux 0x42cc9fe2 kmalloc_caches +EXPORT_SYMBOL vmlinux 0x42cf31ad generic_file_splice_write +EXPORT_SYMBOL vmlinux 0x42ef4bb1 blk_put_request +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x430f27b0 key_validate +EXPORT_SYMBOL vmlinux 0x4321edd7 security_mmap_file +EXPORT_SYMBOL vmlinux 0x4348bef4 skb_unlink +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x43632d7d of_find_property +EXPORT_SYMBOL vmlinux 0x4365d203 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x436c4bd1 bdgrab +EXPORT_SYMBOL vmlinux 0x43823e44 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x43a01f90 complete_all +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x4404585e set_device_ro +EXPORT_SYMBOL vmlinux 0x4409d770 pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x4411e631 console_start +EXPORT_SYMBOL vmlinux 0x44360596 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x4448a641 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x445b6305 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x4466ebb4 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x448eac3e kmemdup +EXPORT_SYMBOL vmlinux 0x44ab4d41 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x44ccb07e __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x44de3b24 pci_dev_driver +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44eb192e wait_for_completion +EXPORT_SYMBOL vmlinux 0x44f422f1 security_path_mknod +EXPORT_SYMBOL vmlinux 0x44f5e8b5 of_allnodes +EXPORT_SYMBOL vmlinux 0x4501344f scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x45077cd6 seq_open_private +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x453e7612 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x4562e78f tty_lock_pair +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x457d3965 ide_raw_taskfile +EXPORT_SYMBOL vmlinux 0x458875e0 key_alloc +EXPORT_SYMBOL vmlinux 0x45974b97 seq_bitmap +EXPORT_SYMBOL vmlinux 0x459e4d40 dquot_destroy +EXPORT_SYMBOL vmlinux 0x45a55ec8 __iounmap +EXPORT_SYMBOL vmlinux 0x45a6be13 cpufreq_sysfs_remove_file +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45cc6c56 agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0x461134d5 block_write_end +EXPORT_SYMBOL vmlinux 0x4612c59d down_trylock +EXPORT_SYMBOL vmlinux 0x461ac773 kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x461df619 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x461e7982 sock_sendmsg +EXPORT_SYMBOL vmlinux 0x461ebfa0 __copy_tofrom_user +EXPORT_SYMBOL vmlinux 0x4637ee16 proto_unregister +EXPORT_SYMBOL vmlinux 0x46380370 sock_no_listen +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46608fa0 getnstimeofday +EXPORT_SYMBOL vmlinux 0x466b8fea mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x467e2733 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x4685d390 sk_reset_timer +EXPORT_SYMBOL vmlinux 0x46905ef5 tcp_seq_open +EXPORT_SYMBOL vmlinux 0x46a4841a generic_pipe_buf_map +EXPORT_SYMBOL vmlinux 0x46a68558 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x46c4356d path_nosuid +EXPORT_SYMBOL vmlinux 0x46d12956 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x46e1dc39 lookup_one_len +EXPORT_SYMBOL vmlinux 0x46e56d42 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x46ec6f3c dquot_quota_on +EXPORT_SYMBOL vmlinux 0x46f3579c qdisc_list_del +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x470d9045 __alloc_skb +EXPORT_SYMBOL vmlinux 0x47127219 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x4714b7ec __lru_cache_add +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x4741c9a9 dev_get_drvdata +EXPORT_SYMBOL vmlinux 0x476661f6 ppp_unit_number +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x479c72d0 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x47a9bd4b tty_set_operations +EXPORT_SYMBOL vmlinux 0x47abc3e1 security_path_unlink +EXPORT_SYMBOL vmlinux 0x47b3f862 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0x47bcf84c param_set_ulong +EXPORT_SYMBOL vmlinux 0x47c8baf4 param_ops_uint +EXPORT_SYMBOL vmlinux 0x47ef8de3 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x47f13dfa __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x47fc0e70 devm_request_and_ioremap +EXPORT_SYMBOL vmlinux 0x47ffac6a kern_unmount +EXPORT_SYMBOL vmlinux 0x48034724 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x4805a155 inode_dio_done +EXPORT_SYMBOL vmlinux 0x4810009f security_path_chown +EXPORT_SYMBOL vmlinux 0x4829a47e memcpy +EXPORT_SYMBOL vmlinux 0x482a2a49 param_set_charp +EXPORT_SYMBOL vmlinux 0x482d3c00 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x483f9e3f pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x48404b9a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x4841bdee strnchr +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x485e9c28 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x488f25ab phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x48c6db53 of_get_child_by_name +EXPORT_SYMBOL vmlinux 0x48c9ac7c bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x48cf7acd skb_copy_bits +EXPORT_SYMBOL vmlinux 0x48dd72a8 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x48edb2bb simple_statfs +EXPORT_SYMBOL vmlinux 0x48fabfbf gen_new_estimator +EXPORT_SYMBOL vmlinux 0x4900dfae nla_append +EXPORT_SYMBOL vmlinux 0x4902511d bio_integrity_split +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x491fb60e jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x4940966e unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x494a9310 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x495eb19d tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x4968a3fb buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0x497238f6 netpoll_setup +EXPORT_SYMBOL vmlinux 0x4979ff2f dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x4998c975 pm860x_page_set_bits +EXPORT_SYMBOL vmlinux 0x499bfc6d __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x49abd20e i2c_register_driver +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49b663a1 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0x49d12368 dentry_path_raw +EXPORT_SYMBOL vmlinux 0x49db09b6 inet_getname +EXPORT_SYMBOL vmlinux 0x49f1e010 request_key +EXPORT_SYMBOL vmlinux 0x49f4b124 d_find_any_alias +EXPORT_SYMBOL vmlinux 0x4a0bf621 simple_lookup +EXPORT_SYMBOL vmlinux 0x4a1ae07d no_llseek +EXPORT_SYMBOL vmlinux 0x4a358252 __bitmap_subset +EXPORT_SYMBOL vmlinux 0x4a40ee95 pid_task +EXPORT_SYMBOL vmlinux 0x4a452fb4 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x4a5366ee mmc_add_host +EXPORT_SYMBOL vmlinux 0x4a6ffe7e nf_ct_attach +EXPORT_SYMBOL vmlinux 0x4a763094 scsi_adjust_queue_depth +EXPORT_SYMBOL vmlinux 0x4a76d499 __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0x4aa7504b agp_backend_acquire +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4ad1a359 seq_release +EXPORT_SYMBOL vmlinux 0x4aeb61a1 block_invalidatepage +EXPORT_SYMBOL vmlinux 0x4aed3b22 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b109bc5 create_empty_buffers +EXPORT_SYMBOL vmlinux 0x4b11079d tcp_sendpage +EXPORT_SYMBOL vmlinux 0x4b2a35f6 register_netdev +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b7d0b40 srp_reconnect_rport +EXPORT_SYMBOL vmlinux 0x4b7ed27b sleep_on +EXPORT_SYMBOL vmlinux 0x4b9bc9c9 padata_do_serial +EXPORT_SYMBOL vmlinux 0x4ba049bf sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x4ba7cfb7 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0x4bd3f6cd pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0x4bed89d8 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x4bed99b3 __percpu_counter_add +EXPORT_SYMBOL vmlinux 0x4c09f0dc __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x4c11435a _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c1182cb bitmap_scnprintf +EXPORT_SYMBOL vmlinux 0x4c219510 scsi_calculate_bounce_limit +EXPORT_SYMBOL vmlinux 0x4c224774 cad_pid +EXPORT_SYMBOL vmlinux 0x4c2eb3da try_module_get +EXPORT_SYMBOL vmlinux 0x4c35680f end_page_writeback +EXPORT_SYMBOL vmlinux 0x4c45c413 xfrm_lookup +EXPORT_SYMBOL vmlinux 0x4c639d3d key_revoke +EXPORT_SYMBOL vmlinux 0x4c67353e cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x4c7e7cf4 bio_put +EXPORT_SYMBOL vmlinux 0x4c86f1b0 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL vmlinux 0x4ca9669f scnprintf +EXPORT_SYMBOL vmlinux 0x4cac8513 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x4cb0e988 gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0x4cbbd171 __bitmap_weight +EXPORT_SYMBOL vmlinux 0x4cc6102c __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4cefc275 sock_no_getname +EXPORT_SYMBOL vmlinux 0x4cf3e993 mutex_unlock +EXPORT_SYMBOL vmlinux 0x4d08ac88 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x4d1018f7 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0x4d1802a7 skb_dequeue +EXPORT_SYMBOL vmlinux 0x4d1aeffc sock_from_file +EXPORT_SYMBOL vmlinux 0x4d310b47 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x4d546f74 pm860x_page_bulk_write +EXPORT_SYMBOL vmlinux 0x4d626f59 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x4d6641d8 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x4d7d7dab poll_initwait +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4da2a8f9 give_up_console +EXPORT_SYMBOL vmlinux 0x4da7c931 rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0x4db9aaef remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x4dce79af install_exec_creds +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4e13e11f vio_unregister_driver +EXPORT_SYMBOL vmlinux 0x4e1fc7d8 nf_log_packet +EXPORT_SYMBOL vmlinux 0x4e219fe0 scsi_target_resume +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e43b973 __netif_schedule +EXPORT_SYMBOL vmlinux 0x4e53529c phy_device_register +EXPORT_SYMBOL vmlinux 0x4e622d30 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e786d13 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0x4e7b6da2 pci_target_state +EXPORT_SYMBOL vmlinux 0x4e918798 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x4e9d76eb user_path_create +EXPORT_SYMBOL vmlinux 0x4e9dffb5 ip_fast_csum +EXPORT_SYMBOL vmlinux 0x4ec6564b cfb_imageblit +EXPORT_SYMBOL vmlinux 0x4ed5fdb5 security_path_symlink +EXPORT_SYMBOL vmlinux 0x4edd72f7 block_all_signals +EXPORT_SYMBOL vmlinux 0x4ef63652 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x4f023a42 pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x4f0d8f99 netdev_alert +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f248523 of_find_node_by_name +EXPORT_SYMBOL vmlinux 0x4f2e0b17 of_device_unregister +EXPORT_SYMBOL vmlinux 0x4f37bbc6 ptp_clock_unregister +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f476e96 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x4f4bba60 rt6_lookup +EXPORT_SYMBOL vmlinux 0x4f518f0b mntget +EXPORT_SYMBOL vmlinux 0x4f58b17b input_register_handler +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f738c52 redraw_screen +EXPORT_SYMBOL vmlinux 0x4f881875 kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0x4f94a816 misc_deregister +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4fe06530 fget_raw +EXPORT_SYMBOL vmlinux 0x4fe5daac giveup_vsx +EXPORT_SYMBOL vmlinux 0x4feb50a2 md_integrity_register +EXPORT_SYMBOL vmlinux 0x4fec74fc cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x4ff215b6 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x4ff591f2 cfb_copyarea +EXPORT_SYMBOL vmlinux 0x5007711a of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x5027bda2 security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x503a6fcd unload_nls +EXPORT_SYMBOL vmlinux 0x507c1dae mpage_readpage +EXPORT_SYMBOL vmlinux 0x508184f6 dev_crit +EXPORT_SYMBOL vmlinux 0x50a90e8d bsearch +EXPORT_SYMBOL vmlinux 0x50ae7d80 __idr_pre_get +EXPORT_SYMBOL vmlinux 0x50cb99b6 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x50d2592d hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0x510e6b10 init_task +EXPORT_SYMBOL vmlinux 0x51131b52 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x5138e21a scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x513ecf49 elv_abort_queue +EXPORT_SYMBOL vmlinux 0x5143cdd2 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x51715134 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x51847c0d xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0x51966220 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x519b0da3 finish_wait +EXPORT_SYMBOL vmlinux 0x519e9a5a unregister_key_type +EXPORT_SYMBOL vmlinux 0x51ace0c4 scsi_prep_return +EXPORT_SYMBOL vmlinux 0x51ad8bfd sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x51b33b75 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x51bd7faa fail_migrate_page +EXPORT_SYMBOL vmlinux 0x51bed8dc con_is_bound +EXPORT_SYMBOL vmlinux 0x51dce73b xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x51edd99c of_dev_put +EXPORT_SYMBOL vmlinux 0x51ee3713 mmc_hw_reset_check +EXPORT_SYMBOL vmlinux 0x5201f55e dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x52030b65 i2c_clients_command +EXPORT_SYMBOL vmlinux 0x5210b590 lock_sock_fast +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x52357f00 skb_copy_and_csum_datagram_iovec +EXPORT_SYMBOL vmlinux 0x523584db agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x5245f6a4 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x5246b78d pcim_iomap +EXPORT_SYMBOL vmlinux 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL vmlinux 0x525526bc vfs_write +EXPORT_SYMBOL vmlinux 0x525ba3f1 mmc_get_card +EXPORT_SYMBOL vmlinux 0x5261a324 ipmi_smi_watcher_register +EXPORT_SYMBOL vmlinux 0x526e9e45 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x5274d9ea pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x5289b437 __next_cpu_nr +EXPORT_SYMBOL vmlinux 0x528b803a register_quota_format +EXPORT_SYMBOL vmlinux 0x5294b24b padata_stop +EXPORT_SYMBOL vmlinux 0x529d6179 uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x52aa59c8 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x52aa9dfd security_path_link +EXPORT_SYMBOL vmlinux 0x52acccaa __pci_enable_wake +EXPORT_SYMBOL vmlinux 0x52b23141 open_exec +EXPORT_SYMBOL vmlinux 0x52e9bcc0 nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0x52fc23b5 read_cache_pages +EXPORT_SYMBOL vmlinux 0x52fd9fb3 blk_requeue_request +EXPORT_SYMBOL vmlinux 0x52fdc734 fixed_size_llseek +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x53247489 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x532d14e9 input_flush_device +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x533a0d1c phy_connect_direct +EXPORT_SYMBOL vmlinux 0x536cc847 memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x5377e556 hex2bin +EXPORT_SYMBOL vmlinux 0x53917900 arp_xmit +EXPORT_SYMBOL vmlinux 0x53a4a827 file_remove_suid +EXPORT_SYMBOL vmlinux 0x53a58b85 single_release +EXPORT_SYMBOL vmlinux 0x53ca09ff mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x53d58fa3 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x53ebab1b _outsl_ns +EXPORT_SYMBOL vmlinux 0x53ed255c unregister_netdev +EXPORT_SYMBOL vmlinux 0x53f01b6b queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0x53f73ff5 pci_find_next_bus +EXPORT_SYMBOL vmlinux 0x53ff03fa tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x5412c7c7 up +EXPORT_SYMBOL vmlinux 0x541c5767 spi_dv_device +EXPORT_SYMBOL vmlinux 0x54245b39 kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x54824b13 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x54a32973 mem_cgroup_subsys +EXPORT_SYMBOL vmlinux 0x54a73760 uart_get_divisor +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54b1b044 bdi_destroy +EXPORT_SYMBOL vmlinux 0x54c02a4c cont_write_begin +EXPORT_SYMBOL vmlinux 0x54e3cc3b param_get_int +EXPORT_SYMBOL vmlinux 0x54e3e3e2 register_cdrom +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x550dea69 blk_register_region +EXPORT_SYMBOL vmlinux 0x5512e54b spi_attach_transport +EXPORT_SYMBOL vmlinux 0x5513c578 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x5520dcb3 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x5528d259 cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x552c1b22 __nlmsg_put +EXPORT_SYMBOL vmlinux 0x552f4d71 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x55337195 scsi_dma_map +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x5549253a tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x5568c553 complete +EXPORT_SYMBOL vmlinux 0x556c2740 hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x5577ef9e udp_table +EXPORT_SYMBOL vmlinux 0x5584eaab mb_cache_create +EXPORT_SYMBOL vmlinux 0x5594be03 bitmap_remap +EXPORT_SYMBOL vmlinux 0x55963377 pci_find_capability +EXPORT_SYMBOL vmlinux 0x55a1310b vlan_vid_add +EXPORT_SYMBOL vmlinux 0x55b39dfe simple_transaction_set +EXPORT_SYMBOL vmlinux 0x55bc63eb simple_link +EXPORT_SYMBOL vmlinux 0x55bf7056 blk_end_request +EXPORT_SYMBOL vmlinux 0x55c83e9f dev_add_pack +EXPORT_SYMBOL vmlinux 0x55ccd4d2 hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0x55cf3887 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x55de60cf mdiobus_scan +EXPORT_SYMBOL vmlinux 0x55f5019b __kmalloc_node +EXPORT_SYMBOL vmlinux 0x5614b010 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x5621ca0a netif_rx_ni +EXPORT_SYMBOL vmlinux 0x5625087d vfs_statfs +EXPORT_SYMBOL vmlinux 0x56282c08 kmem_cache_alloc_node_trace +EXPORT_SYMBOL vmlinux 0x562f121a dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x5630b8fa filp_open +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x563950cc scsi_init_io +EXPORT_SYMBOL vmlinux 0x5641c4f0 dst_release +EXPORT_SYMBOL vmlinux 0x5642793a radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x5658e6dd xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x5665b6c2 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x568d13ba tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x56c2b95b rtas_progress +EXPORT_SYMBOL vmlinux 0x56c594ef sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56c8cbde scsi_scan_host +EXPORT_SYMBOL vmlinux 0x57193da7 blk_peek_request +EXPORT_SYMBOL vmlinux 0x571c72a7 blk_get_queue +EXPORT_SYMBOL vmlinux 0x571e0d2f bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x572647d6 get_mce_fault_addr +EXPORT_SYMBOL vmlinux 0x572afe11 flush_dcache_page +EXPORT_SYMBOL vmlinux 0x572b2e2c netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x577fa800 xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0x578a85c1 compat_sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x5792f848 strlcpy +EXPORT_SYMBOL vmlinux 0x57ab367b inet6_protos +EXPORT_SYMBOL vmlinux 0x57adec1b splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x57b5a003 vlan_untag +EXPORT_SYMBOL vmlinux 0x57ceebad pipe_to_file +EXPORT_SYMBOL vmlinux 0x57e50965 pcim_iounmap +EXPORT_SYMBOL vmlinux 0x57eff39c genlmsg_put +EXPORT_SYMBOL vmlinux 0x5809c7f5 vm_event_states +EXPORT_SYMBOL vmlinux 0x5818b5c4 neigh_update +EXPORT_SYMBOL vmlinux 0x58359d25 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x584661e2 compat_mc_setsockopt +EXPORT_SYMBOL vmlinux 0x584aa4c5 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x587c3772 phy_attach +EXPORT_SYMBOL vmlinux 0x588d76ce keyring_search +EXPORT_SYMBOL vmlinux 0x58933ca3 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x58954571 noop_llseek +EXPORT_SYMBOL vmlinux 0x58b03961 agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0x58d1070a of_get_address +EXPORT_SYMBOL vmlinux 0x58fbcc5e cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x5917ed77 simple_release_fs +EXPORT_SYMBOL vmlinux 0x593c1095 replace_mount_options +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 0x596c821b bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x59b3378a completion_done +EXPORT_SYMBOL vmlinux 0x59efc54b tcf_generic_walker +EXPORT_SYMBOL vmlinux 0x5a025f7b arch_local_irq_restore +EXPORT_SYMBOL vmlinux 0x5a0aaa12 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x5a0f5630 starget_for_each_device +EXPORT_SYMBOL vmlinux 0x5a1706da abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x5a1dd74f bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x5a2eaffa blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x5a4637e4 generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x5a4ac7de pci_dev_put +EXPORT_SYMBOL vmlinux 0x5a5536c2 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x5a604836 ide_dma_off +EXPORT_SYMBOL vmlinux 0x5a709e61 mdiobus_write +EXPORT_SYMBOL vmlinux 0x5a86ab95 __get_user_pages +EXPORT_SYMBOL vmlinux 0x5a921311 strncmp +EXPORT_SYMBOL vmlinux 0x5a9cdd72 i2c_release_client +EXPORT_SYMBOL vmlinux 0x5a9f1d63 memmove +EXPORT_SYMBOL vmlinux 0x5ab0a7de ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x5ae50279 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x5b020279 crypto_sha256_update +EXPORT_SYMBOL vmlinux 0x5b1180aa ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x5b2a9d02 vfs_mkdir +EXPORT_SYMBOL vmlinux 0x5b43f1f1 rtas_service_present +EXPORT_SYMBOL vmlinux 0x5b450040 follow_pfn +EXPORT_SYMBOL vmlinux 0x5b56860c vm_munmap +EXPORT_SYMBOL vmlinux 0x5b928ace skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x5b9828c5 dma_spin_lock +EXPORT_SYMBOL vmlinux 0x5bc10524 printk_emit +EXPORT_SYMBOL vmlinux 0x5bc9b468 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0x5be9bbb5 pci_choose_state +EXPORT_SYMBOL vmlinux 0x5bf63794 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0x5bf882e2 sget +EXPORT_SYMBOL vmlinux 0x5c1c2d66 finish_no_open +EXPORT_SYMBOL vmlinux 0x5c2def4c flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x5c37f319 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x5c7457e5 phy_connect +EXPORT_SYMBOL vmlinux 0x5c94591f sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x5cb43b54 vio_get_attribute +EXPORT_SYMBOL vmlinux 0x5cc0a412 ip6_frag_match +EXPORT_SYMBOL vmlinux 0x5ccf4cab phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x5cdc9b5d generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x5cf30e10 __debugger_ipi +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5d01d080 register_framebuffer +EXPORT_SYMBOL vmlinux 0x5d0acfda devm_ioport_map +EXPORT_SYMBOL vmlinux 0x5d41c87c param_ops_charp +EXPORT_SYMBOL vmlinux 0x5d4b44f9 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d570ed2 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x5d5b5a16 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x5d5b7af9 get_super_thawed +EXPORT_SYMBOL vmlinux 0x5d69fbc2 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x5d854253 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x5d8c9fa0 lock_may_read +EXPORT_SYMBOL vmlinux 0x5d9b4a41 tcf_register_action +EXPORT_SYMBOL vmlinux 0x5da231b1 block_write_full_page +EXPORT_SYMBOL vmlinux 0x5dce9783 unlock_page +EXPORT_SYMBOL vmlinux 0x5e0d3fd9 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x5e1e8b2e scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x5e1f1b74 set_page_dirty +EXPORT_SYMBOL vmlinux 0x5e28571c xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x5e3a8a9c __wake_up +EXPORT_SYMBOL vmlinux 0x5e48d537 irq_set_chip +EXPORT_SYMBOL vmlinux 0x5e529b19 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x5e679e1b sk_run_filter +EXPORT_SYMBOL vmlinux 0x5e6893fa xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x5e6bad38 pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x5e6ca0bc i2c_master_recv +EXPORT_SYMBOL vmlinux 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL vmlinux 0x5e8ed8f1 vga_tryget +EXPORT_SYMBOL vmlinux 0x5e944bf3 inode_needs_sync +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ed46aa3 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x5ed5b469 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0x5ee88c64 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f28c2dc idr_remove +EXPORT_SYMBOL vmlinux 0x5f295c35 agp_free_page_array +EXPORT_SYMBOL vmlinux 0x5f3c8f5c mmc_assume_removable +EXPORT_SYMBOL vmlinux 0x5f43a741 generic_file_llseek +EXPORT_SYMBOL vmlinux 0x5f56557f kmem_cache_create +EXPORT_SYMBOL vmlinux 0x5f684766 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x5f8a2728 isa_io_base +EXPORT_SYMBOL vmlinux 0x5f9ecad9 sync_blockdev +EXPORT_SYMBOL vmlinux 0x5fc1215f __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5fe0c0e9 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x5fe0c1d0 iunique +EXPORT_SYMBOL vmlinux 0x5feebcaa zerocopy_sg_from_iovec +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x602d6e76 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x60464c93 build_skb +EXPORT_SYMBOL vmlinux 0x605196d7 vfs_open +EXPORT_SYMBOL vmlinux 0x606530a9 __dev_remove_offload +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x60703b1c uart_register_driver +EXPORT_SYMBOL vmlinux 0x6086fae9 rwsem_wake +EXPORT_SYMBOL vmlinux 0x6092e6a1 dma_async_device_register +EXPORT_SYMBOL vmlinux 0x609da07b sk_stream_error +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60b5a164 __scm_destroy +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60df7c7c xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x60edbe40 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x610b56ac tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x612390ad netpoll_set_trap +EXPORT_SYMBOL vmlinux 0x61248b14 dm_get_device +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x61331cfd done_path_create +EXPORT_SYMBOL vmlinux 0x61538ad0 param_get_charp +EXPORT_SYMBOL vmlinux 0x616c4ba9 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x616d4f65 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x6180af70 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x618911fc numa_node +EXPORT_SYMBOL vmlinux 0x619cb7dd simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x61a361ec netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61bd7161 pci_bus_get +EXPORT_SYMBOL vmlinux 0x61c243fc mod_timer_pending +EXPORT_SYMBOL vmlinux 0x61e0324c ___pskb_trim +EXPORT_SYMBOL vmlinux 0x61e3e4a8 flush_old_exec +EXPORT_SYMBOL vmlinux 0x61e52ddb input_event +EXPORT_SYMBOL vmlinux 0x61eef2c9 _insb +EXPORT_SYMBOL vmlinux 0x620308ce ipmi_smi_add_proc_entry +EXPORT_SYMBOL vmlinux 0x620a227e blk_execute_rq +EXPORT_SYMBOL vmlinux 0x620eab0e iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x621c70ac __skb_get_hash +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x622f22fa nf_register_hook +EXPORT_SYMBOL vmlinux 0x624ff571 ihold +EXPORT_SYMBOL vmlinux 0x6254cb37 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x6256c54b dquot_scan_active +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x628f88d7 neigh_parms_release +EXPORT_SYMBOL vmlinux 0x629b8c89 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0x62ac2111 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x62ce94d8 elv_rb_find +EXPORT_SYMBOL vmlinux 0x62d54a45 alloc_mdio_bitbang +EXPORT_SYMBOL vmlinux 0x630d3e54 input_free_device +EXPORT_SYMBOL vmlinux 0x6314b657 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x631b6c1d check_disk_change +EXPORT_SYMBOL vmlinux 0x63211d6e do_SAK +EXPORT_SYMBOL vmlinux 0x63231951 gen_pool_create +EXPORT_SYMBOL vmlinux 0x632b0437 handle_edge_irq +EXPORT_SYMBOL vmlinux 0x632d68dd xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x63396aec __debugger_break_match +EXPORT_SYMBOL vmlinux 0x63439fca nonseekable_open +EXPORT_SYMBOL vmlinux 0x6343a5c2 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x6360ada6 mdio_bus_type +EXPORT_SYMBOL vmlinux 0x6360e85a fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x6363cdab gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x63666bf6 noop_qdisc +EXPORT_SYMBOL vmlinux 0x6370a2f6 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x638ad136 netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x6390bb29 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x63974fda release_firmware +EXPORT_SYMBOL vmlinux 0x639e2d28 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x63a385a8 phy_start +EXPORT_SYMBOL vmlinux 0x63ac99f2 napi_gro_flush +EXPORT_SYMBOL vmlinux 0x63b12238 dquot_commit_info +EXPORT_SYMBOL vmlinux 0x63bd8a1b sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x63dd2f54 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x63e7bd12 __cputime_usec_factor +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63f227a2 compat_sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x63fb5b6d pagevec_lookup +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x64345140 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x6470c85d pci_scan_single_device +EXPORT_SYMBOL vmlinux 0x6476f612 udp_seq_open +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64a85141 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x64aca040 generic_make_request +EXPORT_SYMBOL vmlinux 0x64bbc288 string_unescape +EXPORT_SYMBOL vmlinux 0x64ee47ec pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x6503740f check_disk_size_change +EXPORT_SYMBOL vmlinux 0x65100d32 register_key_type +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x6518e86c dm_put_device +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x651d5970 account_page_writeback +EXPORT_SYMBOL vmlinux 0x652ce9aa nla_memcmp +EXPORT_SYMBOL vmlinux 0x653707ad dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x654a94b4 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x655487e7 fsl_lbc_ctrl_dev +EXPORT_SYMBOL vmlinux 0x6560bee6 send_sig_info +EXPORT_SYMBOL vmlinux 0x65748d5d fsync_bdev +EXPORT_SYMBOL vmlinux 0x65a56a3a blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x65bb58a2 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x65c34523 skb_copy_expand +EXPORT_SYMBOL vmlinux 0x65ca329e simple_transaction_get +EXPORT_SYMBOL vmlinux 0x65cce5c7 netdev_has_upper_dev +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 0x65eba178 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x65f3418a jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x65f3f0d1 bio_unmap_user +EXPORT_SYMBOL vmlinux 0x65fa3cab __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x660e677d tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x66182a0a ipmi_smi_watcher_unregister +EXPORT_SYMBOL vmlinux 0x661e83b4 ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0x66270e6f netdev_update_features +EXPORT_SYMBOL vmlinux 0x663cd76f blk_start_request +EXPORT_SYMBOL vmlinux 0x663df3ef scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x6640e43e cfb_fillrect +EXPORT_SYMBOL vmlinux 0x6642fca9 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x664d2ba0 pci_pme_capable +EXPORT_SYMBOL vmlinux 0x664db1bb dquot_initialize +EXPORT_SYMBOL vmlinux 0x6650d55b serio_unregister_port +EXPORT_SYMBOL vmlinux 0x668da8d5 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x668f6df4 phy_stop +EXPORT_SYMBOL vmlinux 0x668fcccd phy_print_status +EXPORT_SYMBOL vmlinux 0x669b83be ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x66b9d648 drop_nlink +EXPORT_SYMBOL vmlinux 0x66d3e288 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x66ec6ee4 dev_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x66f2f2da seq_puts +EXPORT_SYMBOL vmlinux 0x67089015 mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0x672408e2 bio_split +EXPORT_SYMBOL vmlinux 0x6739affe dquot_disable +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x675b8f61 param_get_string +EXPORT_SYMBOL vmlinux 0x676729fa pci_request_region +EXPORT_SYMBOL vmlinux 0x6774c550 phy_attach_direct +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67c2b740 netdev_emerg +EXPORT_SYMBOL vmlinux 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL vmlinux 0x67ce8197 flex_array_shrink +EXPORT_SYMBOL vmlinux 0x67da865b tty_unthrottle +EXPORT_SYMBOL vmlinux 0x67ddc9b5 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x67f32b0b mark_page_accessed +EXPORT_SYMBOL vmlinux 0x67f3de5e dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x67fc6bf4 flush_delayed_work +EXPORT_SYMBOL vmlinux 0x6818c7e5 netlink_broadcast +EXPORT_SYMBOL vmlinux 0x684d1a78 elevator_change +EXPORT_SYMBOL vmlinux 0x684ebb84 scsi_unregister +EXPORT_SYMBOL vmlinux 0x6855da35 kernel_getsockname +EXPORT_SYMBOL vmlinux 0x685a9641 fb_get_mode +EXPORT_SYMBOL vmlinux 0x68609857 complete_and_exit +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68e05d57 getrawmonotonic +EXPORT_SYMBOL vmlinux 0x692f40d9 agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0x6944f289 security_d_instantiate +EXPORT_SYMBOL vmlinux 0x6950a2be dev_addr_del +EXPORT_SYMBOL vmlinux 0x695e35d1 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x698f773a ibmebus_unregister_driver +EXPORT_SYMBOL vmlinux 0x6991b392 d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0x699cd73b bio_init +EXPORT_SYMBOL vmlinux 0x699ff9a2 __scsi_add_device +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69b8261d eth_rebuild_header +EXPORT_SYMBOL vmlinux 0x69bdae25 brioctl_set +EXPORT_SYMBOL vmlinux 0x69d38ed9 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x69e27c7a bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x69e5b732 sk_net_capable +EXPORT_SYMBOL vmlinux 0x69fb42f3 dcache_readdir +EXPORT_SYMBOL vmlinux 0x69fd32e8 bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0x6a00c3ff agp_backend_release +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a2dc947 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x6a3f4119 mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0x6a5c7267 remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a5fa363 sigprocmask +EXPORT_SYMBOL vmlinux 0x6a61f874 to_tm +EXPORT_SYMBOL vmlinux 0x6a62ce02 cdrom_check_events +EXPORT_SYMBOL vmlinux 0x6a740c54 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6aa34aef blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x6ab4d854 udp_ioctl +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6ad6047a truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x6ad7f896 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x6af71bb3 agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b09d00a xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x6b0e0ee7 kill_fasync +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b27dd35 neigh_event_ns +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b534f72 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x6b5588af try_to_release_page +EXPORT_SYMBOL vmlinux 0x6b5dfe73 __debugger_bpt +EXPORT_SYMBOL vmlinux 0x6b5fad38 request_firmware +EXPORT_SYMBOL vmlinux 0x6b640864 nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6b7f1917 idr_find_slowpath +EXPORT_SYMBOL vmlinux 0x6ba68dea textsearch_destroy +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bceaebc gen_replace_estimator +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6beb2078 param_set_copystring +EXPORT_SYMBOL vmlinux 0x6bfdb731 sock_update_memcg +EXPORT_SYMBOL vmlinux 0x6c1b16ff mdiobus_free +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c5ec9f1 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c782d36 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x6c97916e icmpv6_send +EXPORT_SYMBOL vmlinux 0x6c98da33 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x6c9eb2a2 follow_down_one +EXPORT_SYMBOL vmlinux 0x6ca6049d scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x6ca94d50 do_splice_from +EXPORT_SYMBOL vmlinux 0x6cbfc040 fb_validate_mode +EXPORT_SYMBOL vmlinux 0x6cc34403 inet6_del_offload +EXPORT_SYMBOL vmlinux 0x6cd8c86b __crc32c_le_combine +EXPORT_SYMBOL vmlinux 0x6ce780ef dev_uc_del +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d1c5c19 sock_create_kern +EXPORT_SYMBOL vmlinux 0x6d27ef64 __bitmap_empty +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d2a47ac inet_frags_init +EXPORT_SYMBOL vmlinux 0x6d57639d nla_put +EXPORT_SYMBOL vmlinux 0x6d77b296 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x6da928f4 _insw_ns +EXPORT_SYMBOL vmlinux 0x6db24839 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x6dc564ef sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df96a05 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x6e04d047 vio_find_node +EXPORT_SYMBOL vmlinux 0x6e3bd4e8 phy_drivers_register +EXPORT_SYMBOL vmlinux 0x6e4315e0 inode_init_once +EXPORT_SYMBOL vmlinux 0x6e5b5ab7 dev_disable_lro +EXPORT_SYMBOL vmlinux 0x6e6c8908 kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e764332 idr_destroy +EXPORT_SYMBOL vmlinux 0x6e86a16a xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x6ebc5149 param_ops_long +EXPORT_SYMBOL vmlinux 0x6ec9afc6 n_tty_compat_ioctl_helper +EXPORT_SYMBOL vmlinux 0x6eedef69 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x6ef02162 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x6ef23f68 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x6f0036d9 del_timer_sync +EXPORT_SYMBOL vmlinux 0x6f19a345 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f2db994 input_get_keycode +EXPORT_SYMBOL vmlinux 0x6f3b7faf __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x6f501039 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x6f6b5d1c vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x6f85b211 ida_remove +EXPORT_SYMBOL vmlinux 0x6f88b25c blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0x6fb63054 skb_checksum +EXPORT_SYMBOL vmlinux 0x6fc215f7 eth_header_cache +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fd040ec generic_segment_checks +EXPORT_SYMBOL vmlinux 0x6fe9853a proc_mkdir +EXPORT_SYMBOL vmlinux 0x6ff2ffb2 devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0x6ffcd7f4 zero_fill_bio +EXPORT_SYMBOL vmlinux 0x70021d66 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x703a5c45 inode_change_ok +EXPORT_SYMBOL vmlinux 0x704c4365 __cputime_sec_factor +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x7080a2a0 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x70bc17d7 inode_wait +EXPORT_SYMBOL vmlinux 0x70dbc806 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x70e021d6 generic_ide_ioctl +EXPORT_SYMBOL vmlinux 0x70ed5e12 neigh_compat_output +EXPORT_SYMBOL vmlinux 0x70fad5fb kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0x71023c54 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x711399ff pci_scan_slot +EXPORT_SYMBOL vmlinux 0x7117f650 blk_put_queue +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x7140d4e0 tty_throttle +EXPORT_SYMBOL vmlinux 0x714880bb fb_show_logo +EXPORT_SYMBOL vmlinux 0x7152f406 tcf_hash_create +EXPORT_SYMBOL vmlinux 0x716bb564 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x716c85d4 mem_section +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71a6e808 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x71ac0684 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x71ca80ef submit_bio +EXPORT_SYMBOL vmlinux 0x71ce1a6a vfs_fsync +EXPORT_SYMBOL vmlinux 0x71e806c3 netdev_err +EXPORT_SYMBOL vmlinux 0x720c7b36 pskb_expand_head +EXPORT_SYMBOL vmlinux 0x723c1ba6 skb_free_datagram +EXPORT_SYMBOL vmlinux 0x724e9999 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x7260b214 mmc_put_card +EXPORT_SYMBOL vmlinux 0x726f99fd dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x72a2ea98 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0x72aa72a4 nobh_writepage +EXPORT_SYMBOL vmlinux 0x72ab28a3 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72c98139 __arch_hweight64 +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x7304dbc8 sg_miter_stop +EXPORT_SYMBOL vmlinux 0x7319166f simple_readpage +EXPORT_SYMBOL vmlinux 0x731a747a pci_io_base +EXPORT_SYMBOL vmlinux 0x731ade5c generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x73487f12 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x735c6f19 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x735d8503 add_wait_queue +EXPORT_SYMBOL vmlinux 0x735d9399 pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x7370ec02 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x73710a3e dqstats +EXPORT_SYMBOL vmlinux 0x737de5e9 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x73bff146 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x73c44708 __neigh_create +EXPORT_SYMBOL vmlinux 0x73db34aa __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x7421fafb __skb_dst_set_noref +EXPORT_SYMBOL vmlinux 0x74316da3 tc_classify +EXPORT_SYMBOL vmlinux 0x7436043f dev_mc_init +EXPORT_SYMBOL vmlinux 0x743baf6d update_time +EXPORT_SYMBOL vmlinux 0x743f36f2 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x7443e84d scsi_host_put +EXPORT_SYMBOL vmlinux 0x745408a7 blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0x745b166b inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x7469fcfe radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x74af59ab blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74d1c70e bh_submit_read +EXPORT_SYMBOL vmlinux 0x74d4159c framebuffer_release +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x750874a6 mount_subtree +EXPORT_SYMBOL vmlinux 0x7515dad8 kill_pgrp +EXPORT_SYMBOL vmlinux 0x751c2917 __wait_on_bit +EXPORT_SYMBOL vmlinux 0x751ee95e dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x7532588a alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x7540ae0a kthread_bind +EXPORT_SYMBOL vmlinux 0x754dac78 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x755f2876 i8042_remove_filter +EXPORT_SYMBOL vmlinux 0x756b18f4 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x75765c73 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x757b7d28 dev_uc_sync +EXPORT_SYMBOL vmlinux 0x757fec68 vfs_rename +EXPORT_SYMBOL vmlinux 0x7580bd9c pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x75877a16 block_commit_write +EXPORT_SYMBOL vmlinux 0x75994700 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0x75ac7655 scsi_host_get +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75be6702 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x75e5da4f md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x760333df sock_no_socketpair +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x7617e2ed netdev_crit +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x765ff474 crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x76613fb5 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x7692754a agp_enable +EXPORT_SYMBOL vmlinux 0x769995de pci_release_region +EXPORT_SYMBOL vmlinux 0x76b4c1e6 neigh_direct_output +EXPORT_SYMBOL vmlinux 0x76b59b33 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0x76b64318 pagecache_write_end +EXPORT_SYMBOL vmlinux 0x76bf656d __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x76c05672 __ps2_command +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76dbd22d directly_mappable_cdev_bdi +EXPORT_SYMBOL vmlinux 0x771c4fa7 default_file_splice_read +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x772902d8 generic_listxattr +EXPORT_SYMBOL vmlinux 0x772cfd48 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0x773fa409 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x77444f30 have_submounts +EXPORT_SYMBOL vmlinux 0x77527807 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x776629c1 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x7784cc4c skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x778a9d03 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77c3a2ee skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x77dd8cdc clear_nlink +EXPORT_SYMBOL vmlinux 0x77df0847 __set_personality +EXPORT_SYMBOL vmlinux 0x77e3be6a backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x77ecac9f zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x77fd005b free_user_ns +EXPORT_SYMBOL vmlinux 0x781bca87 dquot_free_inode +EXPORT_SYMBOL vmlinux 0x7830b04f hvc_put_chars +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x7846af3e __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x785b30f5 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x78778187 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x7883ec8c ptp_clock_event +EXPORT_SYMBOL vmlinux 0x788d1c6a elv_rb_del +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78a7dca1 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x78a9e905 _numa_mem_ +EXPORT_SYMBOL vmlinux 0x78c7f903 mount_bdev +EXPORT_SYMBOL vmlinux 0x78cc4a4c dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL vmlinux 0x790df6ca __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x791229fb sock_setsockopt +EXPORT_SYMBOL vmlinux 0x7930d225 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0x7937d1d2 registered_fb +EXPORT_SYMBOL vmlinux 0x7944db69 pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0x795a91a2 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x795c117e ide_wait_stat +EXPORT_SYMBOL vmlinux 0x79650663 mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x7969bad3 pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x796ab06d pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x7984eefc key_update +EXPORT_SYMBOL vmlinux 0x79987fbf lro_flush_all +EXPORT_SYMBOL vmlinux 0x799a3140 tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x79a7f694 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79c2ec3f scsi_device_get +EXPORT_SYMBOL vmlinux 0x79fb020f inet_stream_connect +EXPORT_SYMBOL vmlinux 0x7a188791 prandom_bytes +EXPORT_SYMBOL vmlinux 0x7a1a8ac1 of_match_device +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a8edea1 vio_unregister_device +EXPORT_SYMBOL vmlinux 0x7a90c34c neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x7a925833 cpufreq_get_global_kobject +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7aa43ae4 __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x7aa55f47 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x7aabedb5 skb_make_writable +EXPORT_SYMBOL vmlinux 0x7ab69e1e inet_del_protocol +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7ad084b6 mpage_readpages +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7b16235f hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x7b2aef6c __krealloc +EXPORT_SYMBOL vmlinux 0x7b34e038 tcf_action_exec +EXPORT_SYMBOL vmlinux 0x7b363730 tcf_hash_search +EXPORT_SYMBOL vmlinux 0x7b5cfd63 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x7b801488 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x7b8980f9 consume_skb +EXPORT_SYMBOL vmlinux 0x7badb4ed __ide_dma_bad_drive +EXPORT_SYMBOL vmlinux 0x7bb756cc neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x7bd06a1d skb_append +EXPORT_SYMBOL vmlinux 0x7bfcb32c gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x7c003aef _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x7c039421 padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c2d098f krealloc +EXPORT_SYMBOL vmlinux 0x7c2d7d0b pci_get_device +EXPORT_SYMBOL vmlinux 0x7c31466e i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x7c423d46 devm_gpio_free +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c6d7fed register_sysctl +EXPORT_SYMBOL vmlinux 0x7ca34820 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x7caeb505 eth_type_trans +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cc578da param_get_long +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7ce993c8 tc_classify_compat +EXPORT_SYMBOL vmlinux 0x7cf3a16b put_cmsg +EXPORT_SYMBOL vmlinux 0x7cf9273f unregister_filesystem +EXPORT_SYMBOL vmlinux 0x7d0826f2 mdiobus_register +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d25cb68 kernel_read +EXPORT_SYMBOL vmlinux 0x7d283886 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x7d565e97 phy_device_create +EXPORT_SYMBOL vmlinux 0x7d63ef28 pci_match_id +EXPORT_SYMBOL vmlinux 0x7d63fe64 arch_free_page +EXPORT_SYMBOL vmlinux 0x7d6bc4e7 I_BDEV +EXPORT_SYMBOL vmlinux 0x7d713493 from_kgid +EXPORT_SYMBOL vmlinux 0x7d7295de pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x7d805437 nobh_write_begin +EXPORT_SYMBOL vmlinux 0x7d8e5e1a serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x7d9514c1 node_to_cpumask_map +EXPORT_SYMBOL vmlinux 0x7d9ec16b srp_rport_get +EXPORT_SYMBOL vmlinux 0x7da09ad2 netdev_lower_dev_get_private_rcu +EXPORT_SYMBOL vmlinux 0x7db3cf08 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x7db69e9c mnt_unpin +EXPORT_SYMBOL vmlinux 0x7dbc6f82 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x7dc0e109 idr_get_next +EXPORT_SYMBOL vmlinux 0x7dc97879 rtas_get_error_log_max +EXPORT_SYMBOL vmlinux 0x7de4c6ff get_write_access +EXPORT_SYMBOL vmlinux 0x7de59278 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x7de88df4 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x7de9785e blk_mq_alloc_single_hw_queue +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7dfa2aa7 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x7e116742 dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0x7e249d9a bio_advance +EXPORT_SYMBOL vmlinux 0x7e394c4e sysctl_local_reserved_ports +EXPORT_SYMBOL vmlinux 0x7e49f281 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0x7e848b85 max8925_set_bits +EXPORT_SYMBOL vmlinux 0x7e925d70 dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0x7e937ca5 of_scan_pci_bridge +EXPORT_SYMBOL vmlinux 0x7e9a574d jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x7e9eb6a4 noop_fsync +EXPORT_SYMBOL vmlinux 0x7ec803c2 __dquot_transfer +EXPORT_SYMBOL vmlinux 0x7ecef3c7 inet_frag_evictor +EXPORT_SYMBOL vmlinux 0x7ed6137c __f_setown +EXPORT_SYMBOL vmlinux 0x7f0381ac invalidate_bdev +EXPORT_SYMBOL vmlinux 0x7f0b2d40 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f59bbe1 vga_get +EXPORT_SYMBOL vmlinux 0x7f60baf3 ata_port_printk +EXPORT_SYMBOL vmlinux 0x7f61e489 md_finish_reshape +EXPORT_SYMBOL vmlinux 0x7f69b3b5 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x7f7add69 led_blink_set +EXPORT_SYMBOL vmlinux 0x7fc10536 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0x7fd17041 register_filesystem +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7fe38f48 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x7fed2dbe unlock_new_inode +EXPORT_SYMBOL vmlinux 0x7ff5383e cpu_active_mask +EXPORT_SYMBOL vmlinux 0x7ffa1aab genl_notify +EXPORT_SYMBOL vmlinux 0x802d0e93 crc32_le +EXPORT_SYMBOL vmlinux 0x803bd3ae security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x804f922a ipmi_addr_length +EXPORT_SYMBOL vmlinux 0x806dc81d xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x8071d1a8 cpu_all_bits +EXPORT_SYMBOL vmlinux 0x807d8a5d tcp_connect +EXPORT_SYMBOL vmlinux 0x808920d6 d_obtain_alias +EXPORT_SYMBOL vmlinux 0x80a27034 wake_up_process +EXPORT_SYMBOL vmlinux 0x80bf16d8 tcp_close +EXPORT_SYMBOL vmlinux 0x80c4d2c7 eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x80c5be9b sk_filter +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d68971 scsi_finish_command +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80f51f06 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0x8106e5d8 d_alloc_name +EXPORT_SYMBOL vmlinux 0x814553ef generic_file_mmap +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x8152b2aa of_node_put +EXPORT_SYMBOL vmlinux 0x81533963 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x8153eb23 pci_dev_get +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x816d9ee9 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x8185c9da __nla_reserve +EXPORT_SYMBOL vmlinux 0x8187ac28 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x81a07f4e _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x81b2d414 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x81b62a91 do_splice_direct +EXPORT_SYMBOL vmlinux 0x81bfefab pci_enable_obff +EXPORT_SYMBOL vmlinux 0x81c0a84f rtas_set_indicator +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x8209ec93 kfree_skb_list +EXPORT_SYMBOL vmlinux 0x82168807 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x8218ac44 inode_permission +EXPORT_SYMBOL vmlinux 0x821d2dfa keyring_clear +EXPORT_SYMBOL vmlinux 0x823181fb blk_get_request +EXPORT_SYMBOL vmlinux 0x823f4c1c eth_change_mtu +EXPORT_SYMBOL vmlinux 0x82481d17 skb_seq_read +EXPORT_SYMBOL vmlinux 0x8251bcc3 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x825630d8 kern_path_create +EXPORT_SYMBOL vmlinux 0x825fcb91 pci_remove_bus +EXPORT_SYMBOL vmlinux 0x8260686f bitmap_find_next_zero_area +EXPORT_SYMBOL vmlinux 0x827071e1 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x828472b7 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82cf94fa phy_init_eee +EXPORT_SYMBOL vmlinux 0x82d6b0d0 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x82dfabe7 notify_change +EXPORT_SYMBOL vmlinux 0x82e5a238 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x82efbd9d invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x82f3f8da clocksource_unregister +EXPORT_SYMBOL vmlinux 0x830d6c14 ide_proc_unregister_driver +EXPORT_SYMBOL vmlinux 0x83105276 mach_powernv +EXPORT_SYMBOL vmlinux 0x832783e6 of_find_device_by_node +EXPORT_SYMBOL vmlinux 0x832c4614 nla_reserve +EXPORT_SYMBOL vmlinux 0x833297b2 d_rehash +EXPORT_SYMBOL vmlinux 0x8345a844 dquot_quota_off +EXPORT_SYMBOL vmlinux 0x8373d4fc free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x8394e15e ipmi_get_smi_info +EXPORT_SYMBOL vmlinux 0x83a476ce bitmap_scnlistprintf +EXPORT_SYMBOL vmlinux 0x83cddb4b sock_wmalloc +EXPORT_SYMBOL vmlinux 0x83f0560b nf_afinfo +EXPORT_SYMBOL vmlinux 0x840c7400 blk_mq_alloc_reserved_request +EXPORT_SYMBOL vmlinux 0x841962f8 param_get_ushort +EXPORT_SYMBOL vmlinux 0x8447ce01 kernel_getpeername +EXPORT_SYMBOL vmlinux 0x844e7a44 unlock_rename +EXPORT_SYMBOL vmlinux 0x846cc393 napi_complete +EXPORT_SYMBOL vmlinux 0x847b8c87 __locks_copy_lock +EXPORT_SYMBOL vmlinux 0x8480b8eb sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x84879519 clear_user_page +EXPORT_SYMBOL vmlinux 0x84893a2e __pskb_copy +EXPORT_SYMBOL vmlinux 0x84bd69bf dq_data_lock +EXPORT_SYMBOL vmlinux 0x84e5e283 devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0x84edaec7 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x8509c540 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0x8518eca9 param_get_short +EXPORT_SYMBOL vmlinux 0x852163d2 mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0x85321a17 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x853bf7c1 param_set_int +EXPORT_SYMBOL vmlinux 0x8559c498 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x85708805 serio_interrupt +EXPORT_SYMBOL vmlinux 0x85762987 generic_file_fsync +EXPORT_SYMBOL vmlinux 0x8597eb47 plpar_hcall +EXPORT_SYMBOL vmlinux 0x85a0b3a5 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x85a2cd80 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x85bf81e1 pci_enable_msix +EXPORT_SYMBOL vmlinux 0x85d86216 netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x860602ce pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0x86102ceb dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x864fd03a genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x866f547c netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0x86862b2a ip_defrag +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x86a22505 get_fs_type +EXPORT_SYMBOL vmlinux 0x86bccc1b ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x86db1cbb rtas_flash_term_hook +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x870bf928 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x870c2ef7 register_nls +EXPORT_SYMBOL vmlinux 0x87131f21 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x873a53ea __arch_hweight8 +EXPORT_SYMBOL vmlinux 0x8779a34f param_ops_byte +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x879b111d inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0x87b11e7e pci_find_bus +EXPORT_SYMBOL vmlinux 0x87e2582c simple_write_end +EXPORT_SYMBOL vmlinux 0x87ee0899 __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x881039d0 zlib_inflate +EXPORT_SYMBOL vmlinux 0x881a3381 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x88265a8a __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x882db37f neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x88513970 param_set_byte +EXPORT_SYMBOL vmlinux 0x885f429c put_tty_driver +EXPORT_SYMBOL vmlinux 0x886645ee neigh_table_init +EXPORT_SYMBOL vmlinux 0x88b12f66 tcp_disconnect +EXPORT_SYMBOL vmlinux 0x88c10866 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x88c5eac9 lease_get_mtime +EXPORT_SYMBOL vmlinux 0x88eb429a freezing_slow_path +EXPORT_SYMBOL vmlinux 0x88fa26a0 netif_receive_skb +EXPORT_SYMBOL vmlinux 0x891e153a trace_seq_putc +EXPORT_SYMBOL vmlinux 0x891fbb10 mempool_destroy +EXPORT_SYMBOL vmlinux 0x893be58d udp_disconnect +EXPORT_SYMBOL vmlinux 0x89457ec3 seq_pad +EXPORT_SYMBOL vmlinux 0x8949d560 ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0x895108f3 proc_dostring +EXPORT_SYMBOL vmlinux 0x895577b0 numa_cpu_lookup_table +EXPORT_SYMBOL vmlinux 0x895d9a4d key_reject_and_link +EXPORT_SYMBOL vmlinux 0x897473df mktime +EXPORT_SYMBOL vmlinux 0x89797060 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x897f061d downgrade_write +EXPORT_SYMBOL vmlinux 0x898865f6 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x898edca7 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x898f83a0 fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0x8997b351 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89cea762 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x8a009693 migrate_page +EXPORT_SYMBOL vmlinux 0x8a0b6dc4 seq_open +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a2755c0 cdev_del +EXPORT_SYMBOL vmlinux 0x8a2d89cc inet_accept +EXPORT_SYMBOL vmlinux 0x8a2fb922 kobject_init +EXPORT_SYMBOL vmlinux 0x8a3d055f tty_unregister_device +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a6af65c kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a876f54 ida_init +EXPORT_SYMBOL vmlinux 0x8a8a4cbe tty_port_put +EXPORT_SYMBOL vmlinux 0x8a923e62 dev_mc_flush +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8a9ed159 lock_rename +EXPORT_SYMBOL vmlinux 0x8ab370b8 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x8ae4c3c1 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0x8afddcac phy_disconnect +EXPORT_SYMBOL vmlinux 0x8b0ff836 dev_printk_emit +EXPORT_SYMBOL vmlinux 0x8b322398 mpage_writepages +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b495c6e skb_find_text +EXPORT_SYMBOL vmlinux 0x8b515b43 pcie_set_mps +EXPORT_SYMBOL vmlinux 0x8b55cac7 kobject_put +EXPORT_SYMBOL vmlinux 0x8b5f1874 lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b7634e8 d_invalidate +EXPORT_SYMBOL vmlinux 0x8b8066cb tty_do_resize +EXPORT_SYMBOL vmlinux 0x8b9237f1 tty_port_init +EXPORT_SYMBOL vmlinux 0x8bf2ae1f fsl_lbc_addr +EXPORT_SYMBOL vmlinux 0x8c049e8c disk_stack_limits +EXPORT_SYMBOL vmlinux 0x8c074da9 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c30af17 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x8c4529a6 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x8c453228 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x8c4dda2e writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c6c467f agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0x8c8108ab generic_read_dir +EXPORT_SYMBOL vmlinux 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL vmlinux 0x8c9ad156 of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0x8cbbdfcf try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x8cc2fa9a tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8ce799fe nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x8cefbbc5 padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x8cf03359 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x8cfa333a dev_add_offload +EXPORT_SYMBOL vmlinux 0x8d015dd4 __bswapdi2 +EXPORT_SYMBOL vmlinux 0x8d03a953 remap_pfn_range +EXPORT_SYMBOL vmlinux 0x8d05d020 wireless_spy_update +EXPORT_SYMBOL vmlinux 0x8d18f213 neigh_ifdown +EXPORT_SYMBOL vmlinux 0x8d1b2a28 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x8d1ca40f nf_setsockopt +EXPORT_SYMBOL vmlinux 0x8d1f4568 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x8d2e268b param_ops_ulong +EXPORT_SYMBOL vmlinux 0x8d400633 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55591c kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d8aa73c vfs_readv +EXPORT_SYMBOL vmlinux 0x8d944cbb copy_in_user +EXPORT_SYMBOL vmlinux 0x8d949bdb netlink_ack +EXPORT_SYMBOL vmlinux 0x8d9f8e72 dev_load +EXPORT_SYMBOL vmlinux 0x8d9fd606 soft_cursor +EXPORT_SYMBOL vmlinux 0x8dae9cc4 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x8dcc95b8 bdi_init +EXPORT_SYMBOL vmlinux 0x8dce1ea1 security_path_rmdir +EXPORT_SYMBOL vmlinux 0x8dcfbf0e mmc_erase +EXPORT_SYMBOL vmlinux 0x8dd7263b phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x8de0b5ac mempool_create +EXPORT_SYMBOL vmlinux 0x8deb814a dma_direct_ops +EXPORT_SYMBOL vmlinux 0x8df197a1 generic_fillattr +EXPORT_SYMBOL vmlinux 0x8df92f66 memchr_inv +EXPORT_SYMBOL vmlinux 0x8e031fe7 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x8e1d3428 d_alloc +EXPORT_SYMBOL vmlinux 0x8e66c7d7 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x8e864a86 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x8eaa335e find_lock_page +EXPORT_SYMBOL vmlinux 0x8eafb309 ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x8ec04552 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x8ec790dc inet_sendpage +EXPORT_SYMBOL vmlinux 0x8ee83819 bdev_read_only +EXPORT_SYMBOL vmlinux 0x8eeb4a12 audit_log_task_info +EXPORT_SYMBOL vmlinux 0x8f4ac1ba mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x8f4bf5fb posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x8f729a72 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x8f732e37 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x8f7a5241 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x8f85f835 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x8f89f003 scsi_add_device +EXPORT_SYMBOL vmlinux 0x8f8b968a __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x8faa4598 of_translate_address +EXPORT_SYMBOL vmlinux 0x8fc59f9b rtas_offline_cpus_mask +EXPORT_SYMBOL vmlinux 0x8ffd21eb __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x90047644 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x900f6282 mddev_congested +EXPORT_SYMBOL vmlinux 0x9048309b tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0x904f823b lro_receive_frags +EXPORT_SYMBOL vmlinux 0x90745fd3 account_page_dirtied +EXPORT_SYMBOL vmlinux 0x908b53ed param_set_short +EXPORT_SYMBOL vmlinux 0x908c3e9d phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0x90e1ce81 simple_rmdir +EXPORT_SYMBOL vmlinux 0x90ffb98c pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x9112d19c __inet6_hash +EXPORT_SYMBOL vmlinux 0x911a39ed md_error +EXPORT_SYMBOL vmlinux 0x912557ce rtas_busy_delay +EXPORT_SYMBOL vmlinux 0x912e397c read_cache_page_async +EXPORT_SYMBOL vmlinux 0x9130e508 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x915e1208 tb_ticks_per_usec +EXPORT_SYMBOL vmlinux 0x9166fada strncpy +EXPORT_SYMBOL vmlinux 0x9168c033 rtas_get_sensor +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x91886762 d_find_alias +EXPORT_SYMBOL vmlinux 0x919d1163 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x91ac822f vscnprintf +EXPORT_SYMBOL vmlinux 0x91c10593 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x91d3ad8b skb_put +EXPORT_SYMBOL vmlinux 0x91e24ce3 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x91fc9562 setup_new_exec +EXPORT_SYMBOL vmlinux 0x92110b0c jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x92140cd1 devm_gpio_request +EXPORT_SYMBOL vmlinux 0x921cae0a __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x92258b9b read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x922b4c2a agp_bind_memory +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x925520d2 blk_start_plug +EXPORT_SYMBOL vmlinux 0x9272dff0 __ip_select_ident +EXPORT_SYMBOL vmlinux 0x9291cd3b memdup_user +EXPORT_SYMBOL vmlinux 0x92a03a6d __page_symlink +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92bc220b lockref_get +EXPORT_SYMBOL vmlinux 0x92c46de3 bdi_register_dev +EXPORT_SYMBOL vmlinux 0x92d050df iov_pages +EXPORT_SYMBOL vmlinux 0x92e25350 max8925_reg_read +EXPORT_SYMBOL vmlinux 0x92f10872 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x93094b87 bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x9315869f __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x93179ebc arp_find +EXPORT_SYMBOL vmlinux 0x9329d89f input_register_device +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x9354fcde ibmebus_free_irq +EXPORT_SYMBOL vmlinux 0x9371bfec dev_uc_init +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x938dba0a get_phy_device +EXPORT_SYMBOL vmlinux 0x939cb9a6 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x93a3741b mmc_release_host +EXPORT_SYMBOL vmlinux 0x93a6e0b2 io_schedule +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93d5ee6f scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x93d78642 f_setown +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x9418204f tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x94422032 mount_ns +EXPORT_SYMBOL vmlinux 0x945e09a1 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x949ef04b pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x94c145f5 neigh_app_ns +EXPORT_SYMBOL vmlinux 0x94f5773e xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x9508f166 param_ops_bint +EXPORT_SYMBOL vmlinux 0x9514151a _mcount +EXPORT_SYMBOL vmlinux 0x951b2c82 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x9521d282 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x9524b0ae _outsb +EXPORT_SYMBOL vmlinux 0x9543af5d call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x956c9d60 aio_complete +EXPORT_SYMBOL vmlinux 0x957e330d kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x95a46581 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x95affab7 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x95b9899f inode_set_bytes +EXPORT_SYMBOL vmlinux 0x95cb929c of_find_all_nodes +EXPORT_SYMBOL vmlinux 0x95df01ab skb_pad +EXPORT_SYMBOL vmlinux 0x95e65347 init_buffer +EXPORT_SYMBOL vmlinux 0x9607b5f2 dev_set_mtu +EXPORT_SYMBOL vmlinux 0x9626290e pci_set_power_state +EXPORT_SYMBOL vmlinux 0x963494d0 flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x9642cc8c tcp_proc_register +EXPORT_SYMBOL vmlinux 0x964c2268 of_device_alloc +EXPORT_SYMBOL vmlinux 0x96650947 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x966b1e1f tty_unlock_pair +EXPORT_SYMBOL vmlinux 0x967aeec7 ide_geometry_proc_fops +EXPORT_SYMBOL vmlinux 0x96821933 arp_create +EXPORT_SYMBOL vmlinux 0x9682c659 fddi_type_trans +EXPORT_SYMBOL vmlinux 0x96a55719 pci_disable_device +EXPORT_SYMBOL vmlinux 0x96b29254 strncasecmp +EXPORT_SYMBOL vmlinux 0x96c91abc netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96e96e46 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x96fca38b i2c_transfer +EXPORT_SYMBOL vmlinux 0x971c7d58 try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x9748927f _outsw_ns +EXPORT_SYMBOL vmlinux 0x97498976 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0x974c93f7 always_delete_dentry +EXPORT_SYMBOL vmlinux 0x975435da dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x976d0fa1 inet_release +EXPORT_SYMBOL vmlinux 0x97868aef __kfifo_alloc +EXPORT_SYMBOL vmlinux 0x97873e2c jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x97a60e3d param_get_bool +EXPORT_SYMBOL vmlinux 0x97aab414 set_disk_ro +EXPORT_SYMBOL vmlinux 0x97b8cbb3 sg_miter_start +EXPORT_SYMBOL vmlinux 0x97c5f531 ftrace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x97e083cf ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x97e39651 generic_writepages +EXPORT_SYMBOL vmlinux 0x97f03d6f vio_cmo_entitlement_update +EXPORT_SYMBOL vmlinux 0x981661a0 __idr_get_new_above +EXPORT_SYMBOL vmlinux 0x981bbe6f sk_capable +EXPORT_SYMBOL vmlinux 0x98267b7d mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0x9828cac4 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x9829fc11 __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0x982a5f35 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0x986996da tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x986ed277 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x987fc124 neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x9896773c blk_sync_queue +EXPORT_SYMBOL vmlinux 0x98c309bf vc_resize +EXPORT_SYMBOL vmlinux 0x98cf60b3 strlen +EXPORT_SYMBOL vmlinux 0x98e7ab70 mmc_can_erase +EXPORT_SYMBOL vmlinux 0x98f487c0 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0x9912dbdd pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0x99195078 vsnprintf +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99522544 tcp_ioctl +EXPORT_SYMBOL vmlinux 0x99577ba3 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x998b4377 fb_class +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99afe916 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x99c31b44 __blk_end_request +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 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a38efc0 pci_disable_obff +EXPORT_SYMBOL vmlinux 0x9a3f7494 ip_setsockopt +EXPORT_SYMBOL vmlinux 0x9a599c58 ip_ct_attach +EXPORT_SYMBOL vmlinux 0x9a5ffc64 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x9a632949 tcp_syn_flood_action +EXPORT_SYMBOL vmlinux 0x9a9196a6 splice_from_pipe_next +EXPORT_SYMBOL vmlinux 0x9aa75205 tcp_splice_read +EXPORT_SYMBOL vmlinux 0x9ab1e94d capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0x9ac4c952 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x9acc0182 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x9ade14d1 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x9af89f98 memcpy_fromiovec +EXPORT_SYMBOL vmlinux 0x9afc7a8c igrab +EXPORT_SYMBOL vmlinux 0x9b066a57 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x9b22daa3 netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0x9b24e6a2 mmc_of_parse +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b34d4f9 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x9b377a94 bio_integrity_get_tag +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b5e77f7 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0x9b7978a1 remove_arg_zero +EXPORT_SYMBOL vmlinux 0x9b7e37ad clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x9b855b68 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x9b8abb65 devm_free_irq +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9baf2966 pci_claim_resource +EXPORT_SYMBOL vmlinux 0x9bbc9b60 vio_cmo_set_dev_desired +EXPORT_SYMBOL vmlinux 0x9bd37c5d pci_write_vpd +EXPORT_SYMBOL vmlinux 0x9bd63b03 grab_cache_page_nowait +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9c1886cd blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x9c1fab4f bprm_change_interp +EXPORT_SYMBOL vmlinux 0x9c27411a md_check_recovery +EXPORT_SYMBOL vmlinux 0x9c325202 mac_find_mode +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c654ee3 dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0x9c833f8c compat_sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x9c95c393 kernel_accept +EXPORT_SYMBOL vmlinux 0x9ce283fd mmc_register_driver +EXPORT_SYMBOL vmlinux 0x9ce93349 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x9cef3cc5 __idr_remove_all +EXPORT_SYMBOL vmlinux 0x9cfd3121 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x9cfd56c5 scsi_print_status +EXPORT_SYMBOL vmlinux 0x9d04d7a7 rtas +EXPORT_SYMBOL vmlinux 0x9d05f6c4 ktime_get_clocktai +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d14983a ppc_enable_pmcs +EXPORT_SYMBOL vmlinux 0x9d289c37 sock_no_bind +EXPORT_SYMBOL vmlinux 0x9d292ba3 fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d4aef06 machine_id +EXPORT_SYMBOL vmlinux 0x9d58349a of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0x9d7ce8dd _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x9d7d9f21 get_io_context +EXPORT_SYMBOL vmlinux 0x9d7f3430 vfs_read +EXPORT_SYMBOL vmlinux 0x9d8abcdd write_one_page +EXPORT_SYMBOL vmlinux 0x9d9dfc18 load_fp_state +EXPORT_SYMBOL vmlinux 0x9da32cb2 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x9db8ff50 udp_proc_register +EXPORT_SYMBOL vmlinux 0x9dd4a16d tcp_shutdown +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e2f8c90 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e44b9b7 of_get_next_available_child +EXPORT_SYMBOL vmlinux 0x9e49fab0 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e64131a pps_event +EXPORT_SYMBOL vmlinux 0x9e6b3bfe should_remove_suid +EXPORT_SYMBOL vmlinux 0x9e70a80f pps_lookup_dev +EXPORT_SYMBOL vmlinux 0x9e7a1526 dev_set_drvdata +EXPORT_SYMBOL vmlinux 0x9e8f46cc pci_disable_msix +EXPORT_SYMBOL vmlinux 0x9e97375d rtas_busy_delay_time +EXPORT_SYMBOL vmlinux 0x9e9f1714 __bitmap_andnot +EXPORT_SYMBOL vmlinux 0x9ea0ad49 __sg_free_table +EXPORT_SYMBOL vmlinux 0x9eb4b588 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ed2eec7 param_set_ushort +EXPORT_SYMBOL vmlinux 0x9ee124d0 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x9ee4bc4d mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x9efc90e6 km_query +EXPORT_SYMBOL vmlinux 0x9f2bdaac __bitmap_or +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f67b8a8 locks_copy_lock +EXPORT_SYMBOL vmlinux 0x9f96aeba dev_addr_flush +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fbf682e pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9ff50e8b update_region +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa03c2f1c inode_get_bytes +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa059e613 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0xa05b6b03 get_thermal_instance +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa06482d0 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0xa07a37f0 memchr +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0b614e2 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0xa0ca2b6b tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0xa0ceef51 out_of_line_wait_on_bit +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 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa1163384 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa1463a02 dev_get_stats +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa15412f4 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0xa15e4fb5 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0xa18639ae elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0xa1b0d0a2 ip_check_defrag +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1c99385 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xa1f8fe75 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xa1fa2539 get_user_pages +EXPORT_SYMBOL vmlinux 0xa1faa7a9 bio_integrity_free +EXPORT_SYMBOL vmlinux 0xa2026975 kobject_set_name +EXPORT_SYMBOL vmlinux 0xa202a8e5 kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0xa20ce1b8 net_msg_warn +EXPORT_SYMBOL vmlinux 0xa2386fca bdi_unregister +EXPORT_SYMBOL vmlinux 0xa23968b0 scsi_device_resume +EXPORT_SYMBOL vmlinux 0xa2455360 tty_devnum +EXPORT_SYMBOL vmlinux 0xa24e57e6 fs_bio_set +EXPORT_SYMBOL vmlinux 0xa252bfd8 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa28a2ace ipmi_set_gets_events +EXPORT_SYMBOL vmlinux 0xa29037f2 page_symlink +EXPORT_SYMBOL vmlinux 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL vmlinux 0xa2bbed37 crash_shutdown_register +EXPORT_SYMBOL vmlinux 0xa2c58bb6 inet_bind +EXPORT_SYMBOL vmlinux 0xa2deb778 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0xa2ef34d7 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0xa2ff78e5 pci_fixup_device +EXPORT_SYMBOL vmlinux 0xa30183b7 get_gendisk +EXPORT_SYMBOL vmlinux 0xa30378e3 flush_dcache_icache_page +EXPORT_SYMBOL vmlinux 0xa303d1ff dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0xa3225eb1 try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xa32aa1e3 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0xa332464a of_get_cpu_node +EXPORT_SYMBOL vmlinux 0xa3375138 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0xa339659f pcie_get_mps +EXPORT_SYMBOL vmlinux 0xa356e351 inet_add_protocol +EXPORT_SYMBOL vmlinux 0xa35de80f ipv4_config +EXPORT_SYMBOL vmlinux 0xa389e3fd __sb_end_write +EXPORT_SYMBOL vmlinux 0xa39b4cf2 udelay +EXPORT_SYMBOL vmlinux 0xa3abc422 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xa3e99a44 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0xa3fc3d50 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0xa400159f crc32_be +EXPORT_SYMBOL vmlinux 0xa4057cd1 padata_alloc +EXPORT_SYMBOL vmlinux 0xa40be056 would_dump +EXPORT_SYMBOL vmlinux 0xa41b5179 inet_shutdown +EXPORT_SYMBOL vmlinux 0xa447bd74 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0xa4511467 crc16 +EXPORT_SYMBOL vmlinux 0xa45b1b6d jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa47ab22f devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0xa47b24ac init_net +EXPORT_SYMBOL vmlinux 0xa47e5b35 flex_array_free +EXPORT_SYMBOL vmlinux 0xa48ae596 pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0xa497da9d neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0xa4a79b87 of_device_register +EXPORT_SYMBOL vmlinux 0xa4ab7705 inet6_bind +EXPORT_SYMBOL vmlinux 0xa4b49fff neigh_destroy +EXPORT_SYMBOL vmlinux 0xa4b79104 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4bdd447 __cputime_clockt_factor +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4e3bc94 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0xa4ec4211 kernel_bind +EXPORT_SYMBOL vmlinux 0xa4fcb90f scsi_nonblockable_ioctl +EXPORT_SYMBOL vmlinux 0xa4ffd289 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0xa503c018 blk_init_queue +EXPORT_SYMBOL vmlinux 0xa529b747 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0xa53901c6 pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0xa542bb07 fb_find_mode +EXPORT_SYMBOL vmlinux 0xa543148b __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0xa550ac19 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa55c6830 register_sysctl_table +EXPORT_SYMBOL vmlinux 0xa571dc62 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5bd0c88 pci_bus_type +EXPORT_SYMBOL vmlinux 0xa5c7038e scsi_scan_target +EXPORT_SYMBOL vmlinux 0xa631df8a cpu_possible_mask +EXPORT_SYMBOL vmlinux 0xa63a2f9b param_get_ulong +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa65972b8 _memcpy_toio +EXPORT_SYMBOL vmlinux 0xa65e94fa truncate_inode_pages +EXPORT_SYMBOL vmlinux 0xa6715115 do_settimeofday +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa69aa1a4 max8998_update_reg +EXPORT_SYMBOL vmlinux 0xa6a70069 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0xa6b332c3 skb_copy +EXPORT_SYMBOL vmlinux 0xa6e5c07f input_grab_device +EXPORT_SYMBOL vmlinux 0xa6facf54 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0xa720678c lg_global_lock +EXPORT_SYMBOL vmlinux 0xa72a0f5b nr_online_nodes +EXPORT_SYMBOL vmlinux 0xa72ddde8 sock_no_accept +EXPORT_SYMBOL vmlinux 0xa72ef72a netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa73fc98f of_n_addr_cells +EXPORT_SYMBOL vmlinux 0xa75306d2 find_get_pages_tag +EXPORT_SYMBOL vmlinux 0xa7686bad scsi_register_driver +EXPORT_SYMBOL vmlinux 0xa7901aae inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xa7a0e837 md_write_end +EXPORT_SYMBOL vmlinux 0xa7bcdf1e compat_mc_getsockopt +EXPORT_SYMBOL vmlinux 0xa7c5f9aa jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0xa7c81d1d elevator_exit +EXPORT_SYMBOL vmlinux 0xa80219b6 kobject_add +EXPORT_SYMBOL vmlinux 0xa8146d6f dmam_pool_create +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa8257239 register_netdevice +EXPORT_SYMBOL vmlinux 0xa8377e64 i2c_del_driver +EXPORT_SYMBOL vmlinux 0xa8385ad4 __serio_register_driver +EXPORT_SYMBOL vmlinux 0xa83c2389 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa84b3aaa fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa87551d1 rtnl_unicast +EXPORT_SYMBOL vmlinux 0xa8a6f639 __check_region +EXPORT_SYMBOL vmlinux 0xa8bc8a4a blk_stop_queue +EXPORT_SYMBOL vmlinux 0xa8e0f143 posix_lock_file +EXPORT_SYMBOL vmlinux 0xa8e622a7 remove_proc_subtree +EXPORT_SYMBOL vmlinux 0xa8eac3d4 ide_stall_queue +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa916b694 strnlen +EXPORT_SYMBOL vmlinux 0xa9273e1a epapr_hypercall_start +EXPORT_SYMBOL vmlinux 0xa92e1727 security_inode_permission +EXPORT_SYMBOL vmlinux 0xa9311e25 __nla_put +EXPORT_SYMBOL vmlinux 0xa93ba88e proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0xa94e5663 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0xa9636179 bio_phys_segments +EXPORT_SYMBOL vmlinux 0xa96c07fb scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0xa976c1cc tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0xa981fa2d iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0xa9b29859 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0xa9b63345 of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0xa9ca5069 blkdev_get +EXPORT_SYMBOL vmlinux 0xa9ca776c mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xa9e6a74c security_inode_readlink +EXPORT_SYMBOL vmlinux 0xa9f31bcc i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0xa9f515ac pci_scan_bus_parented +EXPORT_SYMBOL vmlinux 0xaa0073b7 __net_get_random_once +EXPORT_SYMBOL vmlinux 0xaa1d58ed iterate_supers_type +EXPORT_SYMBOL vmlinux 0xaa2eaf97 napi_gro_receive +EXPORT_SYMBOL vmlinux 0xaa46e87e lg_local_unlock +EXPORT_SYMBOL vmlinux 0xaa5df438 file_update_time +EXPORT_SYMBOL vmlinux 0xaa6e4df5 _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0xaa76dfed make_kprojid +EXPORT_SYMBOL vmlinux 0xaa7ba709 dput +EXPORT_SYMBOL vmlinux 0xaa864ec4 sg_miter_next +EXPORT_SYMBOL vmlinux 0xaa9087c0 param_ops_string +EXPORT_SYMBOL vmlinux 0xaaaa0bea sock_init_data +EXPORT_SYMBOL vmlinux 0xaad1c3c0 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab01c79f skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0xab0db818 md_write_start +EXPORT_SYMBOL vmlinux 0xab2b6fca page_readlink +EXPORT_SYMBOL vmlinux 0xab390a2d flush_signals +EXPORT_SYMBOL vmlinux 0xab3aedc3 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0xab3c63e9 scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0xab403b51 tcp_prequeue +EXPORT_SYMBOL vmlinux 0xab4b3598 iput +EXPORT_SYMBOL vmlinux 0xab52e692 inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0xab57ab47 phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab8842c9 phy_driver_register +EXPORT_SYMBOL vmlinux 0xab9d1fe7 tty_pair_get_pty +EXPORT_SYMBOL vmlinux 0xabacf5de gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0xabc6dd63 cpufreq_sysfs_create_file +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabd0c91c rtc_time_to_tm +EXPORT_SYMBOL vmlinux 0xabf0c725 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0xac026c52 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac0d3a42 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac26b820 _raw_write_lock +EXPORT_SYMBOL vmlinux 0xac40fe87 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0xac6849c3 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0xac776ad3 lock_sock_nested +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacae11cc sync_inode +EXPORT_SYMBOL vmlinux 0xacb1300a ps2_command +EXPORT_SYMBOL vmlinux 0xacc5b5d2 csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0xacc76b8d inet_add_offload +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad01744f kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad09a99e simple_setattr +EXPORT_SYMBOL vmlinux 0xad0b286a udp_del_offload +EXPORT_SYMBOL vmlinux 0xad164875 kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xad3703db ilookup +EXPORT_SYMBOL vmlinux 0xad46dec2 of_count_phandle_with_args +EXPORT_SYMBOL vmlinux 0xad4aeb93 tty_pair_get_tty +EXPORT_SYMBOL vmlinux 0xad50cebb i8253_lock +EXPORT_SYMBOL vmlinux 0xad633626 netdev_notify_peers +EXPORT_SYMBOL vmlinux 0xad6473b9 netif_device_detach +EXPORT_SYMBOL vmlinux 0xad6718ff sock_no_sendpage +EXPORT_SYMBOL vmlinux 0xad701e4d __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xad7db71f framebuffer_alloc +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad8bc7b6 mount_pseudo +EXPORT_SYMBOL vmlinux 0xad9e1a1d pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0xada15917 kthread_stop +EXPORT_SYMBOL vmlinux 0xada3851c sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0xadb967a9 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0xadb9c749 unregister_shrinker +EXPORT_SYMBOL vmlinux 0xadc5c0ec inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0xaddc2be9 of_phy_connect_fixed_link +EXPORT_SYMBOL vmlinux 0xade7c696 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0xadeae077 bioset_create +EXPORT_SYMBOL vmlinux 0xadff419b splice_from_pipe_begin +EXPORT_SYMBOL vmlinux 0xae0dd946 xfrm_input +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 0xae7b5064 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0xae86609b tty_port_tty_set +EXPORT_SYMBOL vmlinux 0xae89f74e d_move +EXPORT_SYMBOL vmlinux 0xae9cb5ef write_dirty_buffer +EXPORT_SYMBOL vmlinux 0xaead673f alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0xaecb35a3 setattr_copy +EXPORT_SYMBOL vmlinux 0xaecdbc5a __skb_checksum +EXPORT_SYMBOL vmlinux 0xaf05b91b of_device_is_available +EXPORT_SYMBOL vmlinux 0xaf063510 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xaf070ef0 console_stop +EXPORT_SYMBOL vmlinux 0xaf11079d dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0xaf2d872c prepare_to_wait +EXPORT_SYMBOL vmlinux 0xaf2e517c tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf429017 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0xaf492d4c prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0xaf620eb9 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0xaf6302ae cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0xaf64ad0d zlib_deflate +EXPORT_SYMBOL vmlinux 0xaf6ae696 kstrndup +EXPORT_SYMBOL vmlinux 0xaf91d89f __kernel_param_lock +EXPORT_SYMBOL vmlinux 0xafad493b param_ops_ushort +EXPORT_SYMBOL vmlinux 0xafad6e23 adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0xafbddc0f pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0xafc83664 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0xafd1a50d mmc_can_trim +EXPORT_SYMBOL vmlinux 0xafd8bdbb md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0xafff3d1d mempool_alloc +EXPORT_SYMBOL vmlinux 0xb05415e1 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb08f5db6 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0xb096a405 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0xb0a98499 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0xb0b847ac __bitmap_full +EXPORT_SYMBOL vmlinux 0xb0c1143b __bforget +EXPORT_SYMBOL vmlinux 0xb0d2cab5 seq_bitmap_list +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0e51c3d unregister_exec_domain +EXPORT_SYMBOL vmlinux 0xb0f1879f uart_update_timeout +EXPORT_SYMBOL vmlinux 0xb0ffda2f blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xb10e5f7b i2c_use_client +EXPORT_SYMBOL vmlinux 0xb111be4f pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0xb12b62b6 set_blocksize +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb147a855 dql_reset +EXPORT_SYMBOL vmlinux 0xb14a6abd dev_err +EXPORT_SYMBOL vmlinux 0xb15bd8fa tb_ticks_per_sec +EXPORT_SYMBOL vmlinux 0xb1642fa5 vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb165ef45 __irq_regs +EXPORT_SYMBOL vmlinux 0xb181e418 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0xb18f3f06 ide_xfer_verbose +EXPORT_SYMBOL vmlinux 0xb19760c3 bitmap_onto +EXPORT_SYMBOL vmlinux 0xb1b334b5 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0xb1b4004d single_open +EXPORT_SYMBOL vmlinux 0xb1bab585 blk_integrity_register +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1c6e787 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0xb1c90d9d jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1d2fcd1 dev_uc_add +EXPORT_SYMBOL vmlinux 0xb1db9e4e param_get_invbool +EXPORT_SYMBOL vmlinux 0xb1ef1f2a __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xb1fe0151 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0xb2135d48 __generic_file_aio_write +EXPORT_SYMBOL vmlinux 0xb2336539 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb26b1098 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0xb2a0c7c4 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2c85ad7 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0xb2dfaaa8 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0xb2fb7275 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0xb304acff ida_get_new_above +EXPORT_SYMBOL vmlinux 0xb31151a7 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0xb32111df tty_port_open +EXPORT_SYMBOL vmlinux 0xb32967c4 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0xb32d653e inet_recvmsg +EXPORT_SYMBOL vmlinux 0xb33ab1e7 alloc_disk +EXPORT_SYMBOL vmlinux 0xb3760d8e update_devfreq +EXPORT_SYMBOL vmlinux 0xb37df9f5 bio_copy_user +EXPORT_SYMBOL vmlinux 0xb383e293 flex_array_clear +EXPORT_SYMBOL vmlinux 0xb3850cde dentry_open +EXPORT_SYMBOL vmlinux 0xb39026e5 agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0xb3a689dc inet_select_addr +EXPORT_SYMBOL vmlinux 0xb3cf9cab call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0xb3f2fd55 devm_ioremap +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb405b197 seq_read +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb42887f4 simple_dentry_operations +EXPORT_SYMBOL vmlinux 0xb431597d kmem_cache_free +EXPORT_SYMBOL vmlinux 0xb435ed21 scsi_print_sense +EXPORT_SYMBOL vmlinux 0xb445efeb netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0xb447ff64 netlink_set_err +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb47189b5 reservation_ww_class +EXPORT_SYMBOL vmlinux 0xb51892d1 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0xb528cac0 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0xb538a3af udplite_prot +EXPORT_SYMBOL vmlinux 0xb5399c63 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0xb54533f7 usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb57f2457 sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0xb5a2b790 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5a64494 arp_invalidate +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5af8d27 path_put +EXPORT_SYMBOL vmlinux 0xb5c6a8ac iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5d9bad0 names_cachep +EXPORT_SYMBOL vmlinux 0xb5da8f5c ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0xb5dcdff1 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0xb610b329 scsi_block_requests +EXPORT_SYMBOL vmlinux 0xb61a90b2 dev_get_by_index +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb6292e2a ppc_md +EXPORT_SYMBOL vmlinux 0xb62e9b03 security_task_getsecid +EXPORT_SYMBOL vmlinux 0xb6394d4b param_set_bint +EXPORT_SYMBOL vmlinux 0xb66da3ee agp_copy_info +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb6822a33 radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xb68bfa9d node_states +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb6a1951e vlan_uses_dev +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6b46a7c param_ops_int +EXPORT_SYMBOL vmlinux 0xb6c5a973 scsi_show_result +EXPORT_SYMBOL vmlinux 0xb6d354d9 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0xb6d743af compat_nf_setsockopt +EXPORT_SYMBOL vmlinux 0xb6e350d3 pci_pme_active +EXPORT_SYMBOL vmlinux 0xb708ebbb xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0xb711c271 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0xb71b25c2 devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0xb7284472 elv_rb_add +EXPORT_SYMBOL vmlinux 0xb73e1663 register_gifconf +EXPORT_SYMBOL vmlinux 0xb73e49a6 load_nls_default +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb7a811aa neigh_connected_output +EXPORT_SYMBOL vmlinux 0xb7af106d of_platform_device_create +EXPORT_SYMBOL vmlinux 0xb7c6db70 sysctl_max_skb_frags +EXPORT_SYMBOL vmlinux 0xb7cef867 tcp_gso_segment +EXPORT_SYMBOL vmlinux 0xb7ee8a2d __vio_register_driver +EXPORT_SYMBOL vmlinux 0xb805dc98 backlight_force_update +EXPORT_SYMBOL vmlinux 0xb816ce19 seq_lseek +EXPORT_SYMBOL vmlinux 0xb81d717f fget_light +EXPORT_SYMBOL vmlinux 0xb835b3e4 radix_tree_prev_hole +EXPORT_SYMBOL vmlinux 0xb83e5ed3 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0xb849bb6a kill_litter_super +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb874f2e9 vga_client_register +EXPORT_SYMBOL vmlinux 0xb87517fb lro_receive_skb +EXPORT_SYMBOL vmlinux 0xb89038b3 bioset_free +EXPORT_SYMBOL vmlinux 0xb8944102 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0xb89ca87a nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0xb8b798f9 sock_release +EXPORT_SYMBOL vmlinux 0xb8ba9280 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0xb8d6f661 sock_i_ino +EXPORT_SYMBOL vmlinux 0xb8d73e97 param_set_uint +EXPORT_SYMBOL vmlinux 0xb8e3a3c3 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0xb9092269 __lock_buffer +EXPORT_SYMBOL vmlinux 0xb90e4941 pci_disable_ltr +EXPORT_SYMBOL vmlinux 0xb90ec9e2 input_open_device +EXPORT_SYMBOL vmlinux 0xb9334e3c register_qdisc +EXPORT_SYMBOL vmlinux 0xb937e301 kernel_listen +EXPORT_SYMBOL vmlinux 0xb9405e85 netlink_net_capable +EXPORT_SYMBOL vmlinux 0xb95fe0b0 sock_i_uid +EXPORT_SYMBOL vmlinux 0xb97b4e12 vfs_link +EXPORT_SYMBOL vmlinux 0xb98698be set_security_override +EXPORT_SYMBOL vmlinux 0xb98a0185 rtc_tm_to_time +EXPORT_SYMBOL vmlinux 0xb9b4e181 alloc_pages_exact_nid +EXPORT_SYMBOL vmlinux 0xb9c049dc bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xba264f36 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba53e782 devm_gpiod_get +EXPORT_SYMBOL vmlinux 0xba95d097 unregister_nls +EXPORT_SYMBOL vmlinux 0xbae8cd07 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0xbaed3551 compat_nf_getsockopt +EXPORT_SYMBOL vmlinux 0xbafa4d96 create_syslog_header +EXPORT_SYMBOL vmlinux 0xbb189cad disallow_signal +EXPORT_SYMBOL vmlinux 0xbb287848 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0xbb4a4918 napi_gro_frags +EXPORT_SYMBOL vmlinux 0xbb4af426 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0xbb4cf1ac __sk_dst_check +EXPORT_SYMBOL vmlinux 0xbb4f4766 simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0xbb51c5f4 vfs_setpos +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb6986fe tty_unlock +EXPORT_SYMBOL vmlinux 0xbb713e6d sk_filter_release_rcu +EXPORT_SYMBOL vmlinux 0xbb9379b1 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbba25778 dm_io +EXPORT_SYMBOL vmlinux 0xbbaeb559 memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0xbbb1f1af pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0xbbb30041 neigh_lookup +EXPORT_SYMBOL vmlinux 0xbbb6b412 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xbbb76312 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0xbbcb539d netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0xbbdac8a5 netdev_info +EXPORT_SYMBOL vmlinux 0xbbe22067 blk_complete_request +EXPORT_SYMBOL vmlinux 0xbbf12f12 generic_write_checks +EXPORT_SYMBOL vmlinux 0xbc316de4 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0xbc3c359c fifo_set_limit +EXPORT_SYMBOL vmlinux 0xbc3f6afa down_read +EXPORT_SYMBOL vmlinux 0xbc87a5ae mntput +EXPORT_SYMBOL vmlinux 0xbc9f0b5c gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcd9e8e2 ps2_end_command +EXPORT_SYMBOL vmlinux 0xbcdedba7 of_get_mac_address +EXPORT_SYMBOL vmlinux 0xbcf150f9 xor_altivec_5 +EXPORT_SYMBOL vmlinux 0xbd203cfb ftrace_print_flags_seq +EXPORT_SYMBOL vmlinux 0xbd25296b __frontswap_test +EXPORT_SYMBOL vmlinux 0xbd462b55 __kfifo_init +EXPORT_SYMBOL vmlinux 0xbd4760b0 blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0xbd5973cc security_path_truncate +EXPORT_SYMBOL vmlinux 0xbd5c10d4 skb_copy_datagram_const_iovec +EXPORT_SYMBOL vmlinux 0xbd77d78c pci_alloc_dev +EXPORT_SYMBOL vmlinux 0xbd919ef4 genl_unregister_family +EXPORT_SYMBOL vmlinux 0xbd92698c pci_map_rom +EXPORT_SYMBOL vmlinux 0xbdabd70f iterate_dir +EXPORT_SYMBOL vmlinux 0xbdabf4a4 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0xbdc3552d wait_on_page_bit +EXPORT_SYMBOL vmlinux 0xbe68e4e4 agp_free_memory +EXPORT_SYMBOL vmlinux 0xbe77aebe down_write_trylock +EXPORT_SYMBOL vmlinux 0xbe78a11f tty_name +EXPORT_SYMBOL vmlinux 0xbe8af59b search_binary_handler +EXPORT_SYMBOL vmlinux 0xbe929ca5 revert_creds +EXPORT_SYMBOL vmlinux 0xbec25473 of_parse_phandle +EXPORT_SYMBOL vmlinux 0xbee4c803 ibmebus_register_driver +EXPORT_SYMBOL vmlinux 0xbeee9baf release_sock +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf070e27 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0xbf3b1681 dev_mc_sync +EXPORT_SYMBOL vmlinux 0xbf44bba9 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0xbf559a92 dev_trans_start +EXPORT_SYMBOL vmlinux 0xbf5b0d32 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0xbf6f0db6 pci_release_regions +EXPORT_SYMBOL vmlinux 0xbf789ab7 lookup_bdev +EXPORT_SYMBOL vmlinux 0xbf7f3d3e xfrm4_rcv +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8ab942 gen10g_config_aneg +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +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 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbff8182c plpar_hcall_norets +EXPORT_SYMBOL vmlinux 0xc00078e7 vlan_vid_del +EXPORT_SYMBOL vmlinux 0xc00614a7 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0xc01b3147 seq_printf +EXPORT_SYMBOL vmlinux 0xc026c0f7 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0xc05faf87 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0xc09c1e9a ps2_init +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0a4dfaa km_policy_expired +EXPORT_SYMBOL vmlinux 0xc0d99fdb udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0xc0dd010a blk_queue_bounce +EXPORT_SYMBOL vmlinux 0xc0f4ed7e netdev_state_change +EXPORT_SYMBOL vmlinux 0xc0fd9443 arp_tbl +EXPORT_SYMBOL vmlinux 0xc15a44c6 memzero_explicit +EXPORT_SYMBOL vmlinux 0xc1a7f872 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0xc1ae6868 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0xc1b57091 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0xc1c2dd09 __hw_addr_flush +EXPORT_SYMBOL vmlinux 0xc22d75b0 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0xc2322a86 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0xc233848b devfreq_interval_update +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc24271cb gen_pool_alloc +EXPORT_SYMBOL vmlinux 0xc246eca8 __register_chrdev +EXPORT_SYMBOL vmlinux 0xc256e762 __bitmap_equal +EXPORT_SYMBOL vmlinux 0xc264316c tcp_gro_receive +EXPORT_SYMBOL vmlinux 0xc26972c7 srp_start_tl_fail_timers +EXPORT_SYMBOL vmlinux 0xc273df5c serio_rescan +EXPORT_SYMBOL vmlinux 0xc28b5804 abort_creds +EXPORT_SYMBOL vmlinux 0xc29aaa17 __inode_permission +EXPORT_SYMBOL vmlinux 0xc29bf967 strspn +EXPORT_SYMBOL vmlinux 0xc2c21f23 vfs_unlink +EXPORT_SYMBOL vmlinux 0xc2df83b1 dev_alert +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2e6a600 inet_register_protosw +EXPORT_SYMBOL vmlinux 0xc2eaf423 pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc310b981 strnstr +EXPORT_SYMBOL vmlinux 0xc314c3d2 __cputime_jiffies_factor +EXPORT_SYMBOL vmlinux 0xc327dbc8 dev_mc_del +EXPORT_SYMBOL vmlinux 0xc332b4bd netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0xc3361d53 kill_bdev +EXPORT_SYMBOL vmlinux 0xc337245f blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0xc340f5df ptp_clock_index +EXPORT_SYMBOL vmlinux 0xc34fef6c scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0xc357ce13 inet6_add_offload +EXPORT_SYMBOL vmlinux 0xc3880348 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0xc3ad5a1e freeze_super +EXPORT_SYMBOL vmlinux 0xc3b8700c fb_set_cmap +EXPORT_SYMBOL vmlinux 0xc3bb0540 start_tty +EXPORT_SYMBOL vmlinux 0xc3cdf2a1 vmap +EXPORT_SYMBOL vmlinux 0xc3dc5e90 pcim_pin_device +EXPORT_SYMBOL vmlinux 0xc3f4e645 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0xc3fd64ff i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0xc40a82f4 sock_no_connect +EXPORT_SYMBOL vmlinux 0xc40cd028 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0xc415b7b8 seq_write +EXPORT_SYMBOL vmlinux 0xc47cdf9c _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0xc4812c49 bd_set_size +EXPORT_SYMBOL vmlinux 0xc48307db lz4_decompress +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc4a9327d vfs_llseek +EXPORT_SYMBOL vmlinux 0xc4c81751 pci_enable_device +EXPORT_SYMBOL vmlinux 0xc4d912b0 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0xc4f84835 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0xc545e540 kernel_sendpage +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc55c2a9d inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0xc55de23c percpu_counter_set +EXPORT_SYMBOL vmlinux 0xc56ec194 elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0xc58673c3 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xc589e044 param_set_long +EXPORT_SYMBOL vmlinux 0xc59805bb __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0xc5bb5dc8 blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0xc5be846a ide_dma_off_quietly +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5f7d6e6 mount_nodev +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc600a318 of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0xc60e5211 compat_ip_setsockopt +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc63549b8 inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0xc638351e textsearch_register +EXPORT_SYMBOL vmlinux 0xc639615d key_task_permission +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc663b075 __ioremap +EXPORT_SYMBOL vmlinux 0xc665d6d7 of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0xc666a132 crc_t10dif +EXPORT_SYMBOL vmlinux 0xc6774da5 cpu_online_mask +EXPORT_SYMBOL vmlinux 0xc69dd4ba page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0xc6a35e59 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0xc6b22c71 __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xc6bd8330 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0xc6c0f288 kdb_current_task +EXPORT_SYMBOL vmlinux 0xc6cb465a __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc73f5854 inet_csk_accept +EXPORT_SYMBOL vmlinux 0xc75f01b3 scsi_release_buffers +EXPORT_SYMBOL vmlinux 0xc7666667 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xc780e240 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc7950414 input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7ab9bd8 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0xc7d7b5d3 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xc7ed45bf udp_prot +EXPORT_SYMBOL vmlinux 0xc814521a pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0xc81e2a53 PDE_DATA +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc87738a4 scsi_get_command +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc8993a7a xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8db74de __mmc_claim_host +EXPORT_SYMBOL vmlinux 0xc8fd727e mod_timer +EXPORT_SYMBOL vmlinux 0xc90831e1 tcp_release_cb +EXPORT_SYMBOL vmlinux 0xc9095f92 dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0xc91477cb ip_mc_join_group +EXPORT_SYMBOL vmlinux 0xc91ff664 down_read_trylock +EXPORT_SYMBOL vmlinux 0xc93fbc54 wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xc9613a47 key_put +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc96f71a8 agp_allocate_memory +EXPORT_SYMBOL vmlinux 0xc978479a xz_dec_run +EXPORT_SYMBOL vmlinux 0xc98b5d07 dev_alloc_name +EXPORT_SYMBOL vmlinux 0xc997fa3a sk_dst_check +EXPORT_SYMBOL vmlinux 0xc9a7e3e7 blk_stack_limits +EXPORT_SYMBOL vmlinux 0xc9aa17e3 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xc9f6f4a6 elevator_alloc +EXPORT_SYMBOL vmlinux 0xc9ff3f27 cdev_add +EXPORT_SYMBOL vmlinux 0xca08ff9c tty_write_room +EXPORT_SYMBOL vmlinux 0xca18feb3 pm860x_page_reg_read +EXPORT_SYMBOL vmlinux 0xca3b28c6 store_vr_state +EXPORT_SYMBOL vmlinux 0xca3c7fce tcp_sync_mss +EXPORT_SYMBOL vmlinux 0xca5a9ddb pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0xca5dbc50 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xca63df2e from_kuid +EXPORT_SYMBOL vmlinux 0xca66053e phy_detach +EXPORT_SYMBOL vmlinux 0xca6e48e1 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0xca83cbae rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xcab4a28f _dev_info +EXPORT_SYMBOL vmlinux 0xcab6b62e neigh_table_clear +EXPORT_SYMBOL vmlinux 0xcac0baa1 gen10g_suspend +EXPORT_SYMBOL vmlinux 0xcadec386 from_kgid_munged +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb06fc9e jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0xcb0c5d50 param_get_uint +EXPORT_SYMBOL vmlinux 0xcb1106cb tty_port_close_end +EXPORT_SYMBOL vmlinux 0xcb474a79 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0xcb5078b3 pci_get_slot +EXPORT_SYMBOL vmlinux 0xcb5acb1d scsi_is_target_device +EXPORT_SYMBOL vmlinux 0xcb6b6575 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0xcb94e6bf generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0xcb99a9c3 pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0xcba1848c generic_pipe_buf_unmap +EXPORT_SYMBOL vmlinux 0xcba60ba6 pps_register_source +EXPORT_SYMBOL vmlinux 0xcbaf0cdb i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0xcbb1036c arp_send +EXPORT_SYMBOL vmlinux 0xcbb3e1ac sk_wait_data +EXPORT_SYMBOL vmlinux 0xcbba5fbb sock_rfree +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc671a1 put_page +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbcdda7d sock_recvmsg +EXPORT_SYMBOL vmlinux 0xcc0cacfe dcb_setapp +EXPORT_SYMBOL vmlinux 0xcc17504d _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc36b6d3 bio_endio +EXPORT_SYMBOL vmlinux 0xcc37f55c blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xcc4b84da of_find_node_by_type +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc59f556 __memcg_kmem_get_cache +EXPORT_SYMBOL vmlinux 0xcc6703ce mfd_cell_enable +EXPORT_SYMBOL vmlinux 0xcc7752e9 simple_rename +EXPORT_SYMBOL vmlinux 0xcc77d7d8 filemap_fault +EXPORT_SYMBOL vmlinux 0xcc77de90 key_link +EXPORT_SYMBOL vmlinux 0xcc7fa952 local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0xcc9168a0 skb_split +EXPORT_SYMBOL vmlinux 0xcc9f9a6d __d_drop +EXPORT_SYMBOL vmlinux 0xcc9fe369 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0xcc9ff9e2 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0xcca27eeb del_timer +EXPORT_SYMBOL vmlinux 0xccac17f2 kfree_skb +EXPORT_SYMBOL vmlinux 0xccb3b4ee request_key_async +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccc33128 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0xccc5cc16 neigh_seq_start +EXPORT_SYMBOL vmlinux 0xccdf0670 get_tz_trend +EXPORT_SYMBOL vmlinux 0xccec7d80 dev_activate +EXPORT_SYMBOL vmlinux 0xccee81b5 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0xcd0529c7 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xcd14d3b9 get_disk +EXPORT_SYMBOL vmlinux 0xcd19df8e qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0xcd20667a kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd286f22 elevator_init +EXPORT_SYMBOL vmlinux 0xcd6d95f8 inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0xcd773ded input_unregister_handle +EXPORT_SYMBOL vmlinux 0xcd79c0c9 seq_putc +EXPORT_SYMBOL vmlinux 0xcd7c474b compat_ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xcd86c87f __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xcd9302d3 blk_make_request +EXPORT_SYMBOL vmlinux 0xcdac91dd pipe_unlock +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdc57042 proc_set_user +EXPORT_SYMBOL vmlinux 0xcde172ac radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0xce0b67de alloc_anon_inode +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce3b3f09 profile_pc +EXPORT_SYMBOL vmlinux 0xce4c08cf flex_array_get +EXPORT_SYMBOL vmlinux 0xce4e47b6 __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce6a1d8f tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0xce72a074 generic_file_buffered_write +EXPORT_SYMBOL vmlinux 0xce74db27 input_set_abs_params +EXPORT_SYMBOL vmlinux 0xce9b15ce sk_stop_timer +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xcebe81bf unregister_console +EXPORT_SYMBOL vmlinux 0xced777cb proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefa8521 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf0b1bc2 set_groups +EXPORT_SYMBOL vmlinux 0xcf0baea9 scsi_print_result +EXPORT_SYMBOL vmlinux 0xcf0ded2b ppp_input +EXPORT_SYMBOL vmlinux 0xcf3025cb inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0xcf590a2a find_or_create_page +EXPORT_SYMBOL vmlinux 0xcf64cae8 __quota_error +EXPORT_SYMBOL vmlinux 0xcf874680 vga_put +EXPORT_SYMBOL vmlinux 0xcf906300 d_path +EXPORT_SYMBOL vmlinux 0xcfa4d0ed cdev_init +EXPORT_SYMBOL vmlinux 0xcfd4c4c6 dcache_dir_open +EXPORT_SYMBOL vmlinux 0xd0046220 mmc_detect_change +EXPORT_SYMBOL vmlinux 0xd0181f4f __bitmap_xor +EXPORT_SYMBOL vmlinux 0xd01cfdf4 alloc_fcdev +EXPORT_SYMBOL vmlinux 0xd03d1473 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0xd0472fa1 __frontswap_load +EXPORT_SYMBOL vmlinux 0xd0522386 __genl_register_family +EXPORT_SYMBOL vmlinux 0xd06931a2 devm_gpiod_put +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0c09554 mmc_start_bkops +EXPORT_SYMBOL vmlinux 0xd0de1326 prepare_creds +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0f5e178 dma_sync_wait +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd0fe6fda __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0xd0fef3b2 agp_free_key +EXPORT_SYMBOL vmlinux 0xd1032e48 module_refcount +EXPORT_SYMBOL vmlinux 0xd10c3452 idr_init +EXPORT_SYMBOL vmlinux 0xd11c0dc1 __kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xd1206c53 nlmsg_notify +EXPORT_SYMBOL vmlinux 0xd1262886 rtas_data_buf +EXPORT_SYMBOL vmlinux 0xd12b788b alloc_buffer_head +EXPORT_SYMBOL vmlinux 0xd133f1de qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0xd157e0d7 genphy_update_link +EXPORT_SYMBOL vmlinux 0xd16041df vio_enable_interrupts +EXPORT_SYMBOL vmlinux 0xd179dc04 compat_tcp_getsockopt +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd1a63b43 ide_do_reset +EXPORT_SYMBOL vmlinux 0xd1c6cfdb tcp_gro_complete +EXPORT_SYMBOL vmlinux 0xd1c70e5f dcache_dir_close +EXPORT_SYMBOL vmlinux 0xd1da2649 skb_queue_purge +EXPORT_SYMBOL vmlinux 0xd1e47187 serio_open +EXPORT_SYMBOL vmlinux 0xd1ec8590 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0xd1f729b9 dquot_drop +EXPORT_SYMBOL vmlinux 0xd2100187 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd231aee6 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0xd23693a1 led_set_brightness +EXPORT_SYMBOL vmlinux 0xd24cc25f pci_disable_ido +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd2554570 d_make_root +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd279f2e7 user_path_at +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd2b09ce5 __kmalloc +EXPORT_SYMBOL vmlinux 0xd2cd5568 interruptible_sleep_on_timeout +EXPORT_SYMBOL vmlinux 0xd2d9a2b1 netdev_printk +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2deb4f2 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0xd2e4b3dc bio_integrity_tag_size +EXPORT_SYMBOL vmlinux 0xd2ec5cd3 page_follow_link_light +EXPORT_SYMBOL vmlinux 0xd2f463f9 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0xd30f728d dquot_operations +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd3242f45 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0xd3284ea0 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0xd32886d9 ab3100_event_register +EXPORT_SYMBOL vmlinux 0xd342fcc6 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0xd36257ba memcpy_toiovecend +EXPORT_SYMBOL vmlinux 0xd387b41b fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0xd38f2326 sock_update_classid +EXPORT_SYMBOL vmlinux 0xd3a76176 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0xd3b65e67 proc_create_data +EXPORT_SYMBOL vmlinux 0xd3bb08eb dev_deactivate +EXPORT_SYMBOL vmlinux 0xd3bf5ce5 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0xd3eea2a6 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0xd3f688f3 bio_alloc_pages +EXPORT_SYMBOL vmlinux 0xd3f768f7 __module_get +EXPORT_SYMBOL vmlinux 0xd3f947bb user_revoke +EXPORT_SYMBOL vmlinux 0xd3fbcbfd devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0xd41f8c2f jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0xd42d9e7b netif_skb_dev_features +EXPORT_SYMBOL vmlinux 0xd46cd608 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0xd48973d7 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0xd48fdeef dql_completed +EXPORT_SYMBOL vmlinux 0xd4ad402f nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0xd4ad9471 skb_push +EXPORT_SYMBOL vmlinux 0xd4c5e62f get_task_io_context +EXPORT_SYMBOL vmlinux 0xd4ca2fd4 is_bad_inode +EXPORT_SYMBOL vmlinux 0xd4d3d66d netdev_change_features +EXPORT_SYMBOL vmlinux 0xd4e9180a generic_delete_inode +EXPORT_SYMBOL vmlinux 0xd505d0e1 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0xd53213bd d_add_ci +EXPORT_SYMBOL vmlinux 0xd53298c6 scsi_register_interface +EXPORT_SYMBOL vmlinux 0xd53cb23a sock_kfree_s +EXPORT_SYMBOL vmlinux 0xd551a2e7 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xd5604f33 km_report +EXPORT_SYMBOL vmlinux 0xd5830b63 blk_start_queue +EXPORT_SYMBOL vmlinux 0xd5aae164 mapping_tagged +EXPORT_SYMBOL vmlinux 0xd5af4897 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0xd5b2ed42 alloc_file +EXPORT_SYMBOL vmlinux 0xd5e81bc8 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xd5fd144b tty_kref_put +EXPORT_SYMBOL vmlinux 0xd60d6f98 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd62da566 __pci_register_driver +EXPORT_SYMBOL vmlinux 0xd64453c7 netif_carrier_off +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd64c7f64 generic_file_remap_pages +EXPORT_SYMBOL vmlinux 0xd66b2ba7 dquot_alloc +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd6d0d1e8 uart_resume_port +EXPORT_SYMBOL vmlinux 0xd6d18b04 dma_common_mmap +EXPORT_SYMBOL vmlinux 0xd6d63e9d lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0xd6ec2995 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6f3e132 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0xd6fa49cc __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0xd6fd4053 __arch_hweight32 +EXPORT_SYMBOL vmlinux 0xd7135357 mmc_can_reset +EXPORT_SYMBOL vmlinux 0xd7154fa5 nf_log_unset +EXPORT_SYMBOL vmlinux 0xd7171885 kobject_get +EXPORT_SYMBOL vmlinux 0xd72da7c2 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xd72e10ce netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0xd73648cb xfrm_register_type +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd761a383 ioremap_prot +EXPORT_SYMBOL vmlinux 0xd77a5aa5 __bitmap_and +EXPORT_SYMBOL vmlinux 0xd786c0ea plpar_hcall9 +EXPORT_SYMBOL vmlinux 0xd79b5a02 allow_signal +EXPORT_SYMBOL vmlinux 0xd7a7b4c4 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0xd7abe1a6 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xd7cbddda memcpy_toiovec +EXPORT_SYMBOL vmlinux 0xd7e01be7 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd830b527 sock_edemux +EXPORT_SYMBOL vmlinux 0xd839c7a2 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0xd84ae013 inet6_getname +EXPORT_SYMBOL vmlinux 0xd8500964 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0xd87bb07d input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0xd88f05b8 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0xd895fa7e qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0xd89cca61 truncate_pagecache +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a71b5b xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0xd8b597d7 netpoll_print_options +EXPORT_SYMBOL vmlinux 0xd8c72cf0 ifla_policy +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e17bf9 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0xd8e400f2 follow_down +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8ee0c56 input_set_capability +EXPORT_SYMBOL vmlinux 0xd8f92464 __mutex_init +EXPORT_SYMBOL vmlinux 0xd9083fa2 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0xd90cc80e iget_failed +EXPORT_SYMBOL vmlinux 0xd925c9d2 input_close_device +EXPORT_SYMBOL vmlinux 0xd92afabe bitmap_clear +EXPORT_SYMBOL vmlinux 0xd92c01e2 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0xd92e16ba csum_partial_copy_fromiovecend +EXPORT_SYMBOL vmlinux 0xd937147f cdrom_media_changed +EXPORT_SYMBOL vmlinux 0xd9486168 vfs_getattr +EXPORT_SYMBOL vmlinux 0xd94d2471 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0xd951bfa1 phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0xd9605d4c add_timer +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd9a9bb30 getname +EXPORT_SYMBOL vmlinux 0xd9bac924 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0xd9cbd23d dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0xd9f0d25d con_copy_unimap +EXPORT_SYMBOL vmlinux 0xda14624c pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xda1f685a shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0xda2478d0 param_ops_short +EXPORT_SYMBOL vmlinux 0xda251aa7 input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0xda3cf60e mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda61ea5a scsi_ioctl +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xdaabc495 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0xdaaf8e4a flock_lock_file_wait +EXPORT_SYMBOL vmlinux 0xdabc1ea8 fsl_lbc_find +EXPORT_SYMBOL vmlinux 0xdaccf03f uart_write_wakeup +EXPORT_SYMBOL vmlinux 0xdadac983 locks_remove_posix +EXPORT_SYMBOL vmlinux 0xdade9e31 skb_insert +EXPORT_SYMBOL vmlinux 0xdaea6e0d mfd_clone_cell +EXPORT_SYMBOL vmlinux 0xdb01198e fsl_upm_find +EXPORT_SYMBOL vmlinux 0xdb0874cc serio_reconnect +EXPORT_SYMBOL vmlinux 0xdb14250a of_phy_attach +EXPORT_SYMBOL vmlinux 0xdb46335e padata_free +EXPORT_SYMBOL vmlinux 0xdb6334dd gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb822f90 tty_check_change +EXPORT_SYMBOL vmlinux 0xdb82b101 tcp_poll +EXPORT_SYMBOL vmlinux 0xdb9c4f00 proc_symlink +EXPORT_SYMBOL vmlinux 0xdbb24fc2 down_write +EXPORT_SYMBOL vmlinux 0xdbc278a3 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0xdbc48fda dev_emerg +EXPORT_SYMBOL vmlinux 0xdbcd416e sysctl_ip_nonlocal_bind +EXPORT_SYMBOL vmlinux 0xdbd05bf1 ip6_route_output +EXPORT_SYMBOL vmlinux 0xdbd4cb20 do_truncate +EXPORT_SYMBOL vmlinux 0xdbf4ab64 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc0596b4 generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc150701 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0xdc1f7e5a touch_buffer +EXPORT_SYMBOL vmlinux 0xdc31ee94 insert_inode_locked +EXPORT_SYMBOL vmlinux 0xdc3c41a8 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc46f943 mmc_can_discard +EXPORT_SYMBOL vmlinux 0xdc5a0f6a jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0xdc9498dd down +EXPORT_SYMBOL vmlinux 0xdc96e36a input_allocate_device +EXPORT_SYMBOL vmlinux 0xdc9ad649 netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0xdca55b80 input_set_keycode +EXPORT_SYMBOL vmlinux 0xdca7c283 blk_bio_map_sg +EXPORT_SYMBOL vmlinux 0xdcb764ad memset +EXPORT_SYMBOL vmlinux 0xdcf5eaef padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xdd0e1074 sock_wake_async +EXPORT_SYMBOL vmlinux 0xdd0f579d __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xdd1c3dad uart_match_port +EXPORT_SYMBOL vmlinux 0xdd4d065c vsc824x_add_skew +EXPORT_SYMBOL vmlinux 0xdd5a47ea netif_carrier_on +EXPORT_SYMBOL vmlinux 0xdd76c6ee padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0xdd77cb8a atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0xdd884f1c blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0xdd955144 __debugger +EXPORT_SYMBOL vmlinux 0xdd9ab515 ppp_register_channel +EXPORT_SYMBOL vmlinux 0xddc19f7b pcie_set_readrq +EXPORT_SYMBOL vmlinux 0xddcb0f18 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0xddcd543e mmc_align_data_size +EXPORT_SYMBOL vmlinux 0xde043312 bdevname +EXPORT_SYMBOL vmlinux 0xde10eb10 param_set_invbool +EXPORT_SYMBOL vmlinux 0xde148c60 dquot_resume +EXPORT_SYMBOL vmlinux 0xde238df4 ip_options_compile +EXPORT_SYMBOL vmlinux 0xde370d34 block_write_begin +EXPORT_SYMBOL vmlinux 0xde485df3 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0xde48e9ca _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xde6151db tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0xde70449a dev_addr_init +EXPORT_SYMBOL vmlinux 0xde783883 pSeries_disable_reloc_on_exc +EXPORT_SYMBOL vmlinux 0xde85aa44 tcp_read_sock +EXPORT_SYMBOL vmlinux 0xde91448c load_vr_state +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xdeb3b2b8 __frontswap_store +EXPORT_SYMBOL vmlinux 0xdeb82a26 udp_poll +EXPORT_SYMBOL vmlinux 0xdecc7989 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0xdf09364d softnet_data +EXPORT_SYMBOL vmlinux 0xdf098fb0 key_invalidate +EXPORT_SYMBOL vmlinux 0xdf0aa254 __breadahead +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf5d668a dev_addr_del_multiple +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf6d7925 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0xdf7d723f input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0xdf7dcc79 seq_vprintf +EXPORT_SYMBOL vmlinux 0xdf86a6df dev_change_flags +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf9711c2 account_page_redirty +EXPORT_SYMBOL vmlinux 0xdfaeb53c netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfce226c jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0xdfec93ef inet6_release +EXPORT_SYMBOL vmlinux 0xdff5acc9 ftrace_raw_output_prep +EXPORT_SYMBOL vmlinux 0xe01246f3 phy_device_free +EXPORT_SYMBOL vmlinux 0xe021c568 tty_port_close_start +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 0xe07c4adc tty_port_hangup +EXPORT_SYMBOL vmlinux 0xe0a05524 irq_stat +EXPORT_SYMBOL vmlinux 0xe0ae318c force_sig +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0b58037 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0xe0d83b64 iov_iter_copy_from_user +EXPORT_SYMBOL vmlinux 0xe0ebba30 from_kuid_munged +EXPORT_SYMBOL vmlinux 0xe0ee475c xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xe0ef10c7 ida_simple_remove +EXPORT_SYMBOL vmlinux 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe1159548 pci_save_state +EXPORT_SYMBOL vmlinux 0xe128b4d6 default_llseek +EXPORT_SYMBOL vmlinux 0xe1514561 dm_get_mapinfo +EXPORT_SYMBOL vmlinux 0xe1545060 simple_dir_operations +EXPORT_SYMBOL vmlinux 0xe171c1e2 pci_enable_msi_block +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe17abfaa inet6_add_protocol +EXPORT_SYMBOL vmlinux 0xe180be67 inet_listen +EXPORT_SYMBOL vmlinux 0xe19f29db d_splice_alias +EXPORT_SYMBOL vmlinux 0xe1b64219 vfs_mknod +EXPORT_SYMBOL vmlinux 0xe1d47328 setup_arg_pages +EXPORT_SYMBOL vmlinux 0xe1e9e052 bio_pair_release +EXPORT_SYMBOL vmlinux 0xe1ff4623 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe220ceb8 __debugger_sstep +EXPORT_SYMBOL vmlinux 0xe223a6f0 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0xe223b20b tty_lock +EXPORT_SYMBOL vmlinux 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL vmlinux 0xe2338ff8 netlink_kernel_release +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe250937f inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xe2661a9c tcp_v4_connect +EXPORT_SYMBOL vmlinux 0xe289e510 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0xe297dd39 udp6_csum_init +EXPORT_SYMBOL vmlinux 0xe29a6fbb ppp_dev_name +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2b2c118 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0xe2bdddc0 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0xe2be5498 lg_global_unlock +EXPORT_SYMBOL vmlinux 0xe2cc4d00 of_get_min_tck +EXPORT_SYMBOL vmlinux 0xe2d1f714 splice_from_pipe_feed +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2e45822 bio_sector_offset +EXPORT_SYMBOL vmlinux 0xe2fa9644 secpath_dup +EXPORT_SYMBOL vmlinux 0xe310b0ee security_dentry_init_security +EXPORT_SYMBOL vmlinux 0xe314e8fb cpu_core_map +EXPORT_SYMBOL vmlinux 0xe32738d4 of_dev_get +EXPORT_SYMBOL vmlinux 0xe3371c18 agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0xe34f575a dev_get_flags +EXPORT_SYMBOL vmlinux 0xe35c5285 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0xe360d61c blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0xe38f3124 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0xe39f4f18 scsi_put_command +EXPORT_SYMBOL vmlinux 0xe3a53f4c sort +EXPORT_SYMBOL vmlinux 0xe3c30c99 mmc_cache_ctrl +EXPORT_SYMBOL vmlinux 0xe3cc0d2a ppp_channel_index +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe400a0e3 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0xe403bc07 scsi_remove_target +EXPORT_SYMBOL vmlinux 0xe42c3f3f simple_empty +EXPORT_SYMBOL vmlinux 0xe432bd65 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0xe4595955 flex_array_put +EXPORT_SYMBOL vmlinux 0xe46ba7db vfs_readlink +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe4a895fa up_write +EXPORT_SYMBOL vmlinux 0xe4ab00bb of_node_get +EXPORT_SYMBOL vmlinux 0xe4aeb9e1 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0xe4e23343 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0xe4eaa598 qdisc_reset +EXPORT_SYMBOL vmlinux 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL vmlinux 0xe4fe8ca1 _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xe50433a9 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0xe5122890 flow_cache_genid +EXPORT_SYMBOL vmlinux 0xe5223403 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe53d1faa of_translate_dma_address +EXPORT_SYMBOL vmlinux 0xe56f34ec dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0xe5760eb3 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe5a7de00 __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0xe5c7392e dquot_file_open +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5db52eb dmam_free_coherent +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe5f0bb5c scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0xe5f86600 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0xe601c2fa input_release_device +EXPORT_SYMBOL vmlinux 0xe61bed99 gen10g_resume +EXPORT_SYMBOL vmlinux 0xe6302241 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0xe631abbf sock_no_mmap +EXPORT_SYMBOL vmlinux 0xe6343837 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0xe64b554a write_inode_now +EXPORT_SYMBOL vmlinux 0xe653e3ac tcf_hash_check +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69a9df4 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0xe69bd5f8 elv_register_queue +EXPORT_SYMBOL vmlinux 0xe6a21f38 complete_request_key +EXPORT_SYMBOL vmlinux 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL vmlinux 0xe6b8d489 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0xe6bc9e4a kset_register +EXPORT_SYMBOL vmlinux 0xe6d23630 scsi_print_command +EXPORT_SYMBOL vmlinux 0xe6deec54 padata_add_cpu +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe743240a tty_port_close +EXPORT_SYMBOL vmlinux 0xe75a1612 ata_dev_printk +EXPORT_SYMBOL vmlinux 0xe76e5d31 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0xe7795fc6 dev_open +EXPORT_SYMBOL vmlinux 0xe784ce6f d_prune_aliases +EXPORT_SYMBOL vmlinux 0xe791ea00 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0xe79336d3 pci_set_master +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a7b5d2 skb_queue_head +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7bb8fdf neigh_seq_stop +EXPORT_SYMBOL vmlinux 0xe7c84014 lockref_mark_dead +EXPORT_SYMBOL vmlinux 0xe7ce7439 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe82cc752 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0xe833fa77 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0xe83c0e49 clocksource_register +EXPORT_SYMBOL vmlinux 0xe83d0190 inetdev_by_index +EXPORT_SYMBOL vmlinux 0xe840bcef mach_pseries +EXPORT_SYMBOL vmlinux 0xe85c2b5c mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0xe85dd6ad fb_pan_display +EXPORT_SYMBOL vmlinux 0xe872393c blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0xe876d37e poll_freewait +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe8b63ace radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8c438f3 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0xe8dd2b1c genphy_suspend +EXPORT_SYMBOL vmlinux 0xe90af7cd skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe926f472 simple_fill_super +EXPORT_SYMBOL vmlinux 0xe938cbee security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0xe93ad7b7 __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xe94a7ea4 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe971876a on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0xe972ff85 vio_register_device_node +EXPORT_SYMBOL vmlinux 0xe97772cd pci_get_subsys +EXPORT_SYMBOL vmlinux 0xe978afa2 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0xe97e7eb3 sk_free +EXPORT_SYMBOL vmlinux 0xe99a7749 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0xe9b2d946 sock_create_lite +EXPORT_SYMBOL vmlinux 0xe9c68efc submit_bio_wait +EXPORT_SYMBOL vmlinux 0xe9e31e1d devfreq_add_governor +EXPORT_SYMBOL vmlinux 0xe9ee5f71 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea10212a int_to_scsilun +EXPORT_SYMBOL vmlinux 0xea10655a __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xea16dd4c tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xea2a142b node_data +EXPORT_SYMBOL vmlinux 0xea6e3003 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0xea9176d4 security_path_rename +EXPORT_SYMBOL vmlinux 0xea968c96 ___ratelimit +EXPORT_SYMBOL vmlinux 0xeaa89275 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0xeac1295c generic_removexattr +EXPORT_SYMBOL vmlinux 0xeafbcffb skb_store_bits +EXPORT_SYMBOL vmlinux 0xeb1eab73 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xeb2a99ed of_phy_find_device +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb3cff23 vfs_create +EXPORT_SYMBOL vmlinux 0xeb44339a free_pages_exact +EXPORT_SYMBOL vmlinux 0xeb5bbc80 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0xeb5bd074 dst_alloc +EXPORT_SYMBOL vmlinux 0xeb851d13 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0xeba2a1f7 rtas_indicator_present +EXPORT_SYMBOL vmlinux 0xeba9a3da bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0xebad1162 unlock_buffer +EXPORT_SYMBOL vmlinux 0xebc6687f of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0xebcab3a6 ppc_pci_io +EXPORT_SYMBOL vmlinux 0xebd43271 padata_start +EXPORT_SYMBOL vmlinux 0xebdbe48c radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xec17ebb0 of_match_node +EXPORT_SYMBOL vmlinux 0xec1e57c1 netlink_unicast +EXPORT_SYMBOL vmlinux 0xec1fc3d7 inet_frag_kill +EXPORT_SYMBOL vmlinux 0xec3988f7 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0xec5be18f scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0xec5d9ceb dev_warn +EXPORT_SYMBOL vmlinux 0xec62a1de dst_discard +EXPORT_SYMBOL vmlinux 0xec72a8e1 splice_from_pipe_end +EXPORT_SYMBOL vmlinux 0xec89b087 agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0xecb5807c remove_proc_entry +EXPORT_SYMBOL vmlinux 0xecbb926f xor_altivec_3 +EXPORT_SYMBOL vmlinux 0xecc27f22 skb_flow_dissect +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xece9cea9 bmap +EXPORT_SYMBOL vmlinux 0xecf9f476 submit_bh +EXPORT_SYMBOL vmlinux 0xecffba46 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0xed2ba0df seq_release_private +EXPORT_SYMBOL vmlinux 0xed3d268e register_shrinker +EXPORT_SYMBOL vmlinux 0xed41b7eb nf_register_sockopt +EXPORT_SYMBOL vmlinux 0xed441a82 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed73760c block_read_full_page +EXPORT_SYMBOL vmlinux 0xed7ff01c blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0xed810f1e ide_proc_register_driver +EXPORT_SYMBOL vmlinux 0xed8e4b33 dquot_transfer +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedbe95aa nf_log_set +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc410d0 udplite_table +EXPORT_SYMBOL vmlinux 0xedfb5988 fget +EXPORT_SYMBOL vmlinux 0xee040809 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0xee0ea89c cdrom_open +EXPORT_SYMBOL vmlinux 0xee10c975 phy_start_aneg +EXPORT_SYMBOL vmlinux 0xee246dff ida_destroy +EXPORT_SYMBOL vmlinux 0xee259019 dev_remove_offload +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee35f462 inet6_ioctl +EXPORT_SYMBOL vmlinux 0xee492709 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0xee54cf55 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0xee69e48a kern_path +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xee9f87f4 devm_ioremap_prot +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeead3147 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0xeeb5bd3b __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0xeec1a6ee vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0xeed4e05d __inet_stream_connect +EXPORT_SYMBOL vmlinux 0xeee3d69d inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xeef6962f xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0xeeff1bb7 simple_getattr +EXPORT_SYMBOL vmlinux 0xef109449 interruptible_sleep_on +EXPORT_SYMBOL vmlinux 0xef135746 dquot_commit +EXPORT_SYMBOL vmlinux 0xef168e00 fasync_helper +EXPORT_SYMBOL vmlinux 0xef25b8bd sk_receive_skb +EXPORT_SYMBOL vmlinux 0xef731a8b tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0xef7acdfd devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xef839559 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0xefbccb29 dump_align +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefde1bbe flush_dcache_range +EXPORT_SYMBOL vmlinux 0xefe48f41 compat_tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xefece793 sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0xeff58253 pneigh_lookup +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf0058707 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf01c5439 compat_ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xf043d520 pci_get_class +EXPORT_SYMBOL vmlinux 0xf04a9f16 of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf0619801 timekeeping_clocktai +EXPORT_SYMBOL vmlinux 0xf061b25a mdiobus_read +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf067257c register_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0xf068eb6f udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0xf077ef76 new_inode +EXPORT_SYMBOL vmlinux 0xf087137d __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0xf08eb65f pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0bcebbf udp_lib_rehash +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0f1246c kvasprintf +EXPORT_SYMBOL vmlinux 0xf0fd4e8f rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0xf100416a remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xf10ca3e7 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf11a3fe0 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0xf11cd6ce down_interruptible +EXPORT_SYMBOL vmlinux 0xf1311b99 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0xf13d2433 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0xf13feb57 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0xf1431363 blk_fetch_request +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf1709a40 skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0xf1823942 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0xf183189b __ioremap_at +EXPORT_SYMBOL vmlinux 0xf18fed8f pci_domain_nr +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1a3c3a7 bio_add_page +EXPORT_SYMBOL vmlinux 0xf1d014f8 agp_generic_enable +EXPORT_SYMBOL vmlinux 0xf1d34bd4 validate_sp +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1e06df1 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1ec6488 may_umount +EXPORT_SYMBOL vmlinux 0xf202c5cb radix_tree_insert +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf22881e8 lg_local_lock +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf249b391 eth_header +EXPORT_SYMBOL vmlinux 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL vmlinux 0xf266d1d4 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0xf28c0d19 sk_ns_capable +EXPORT_SYMBOL vmlinux 0xf2992aa4 do_splice_to +EXPORT_SYMBOL vmlinux 0xf29cad6c __sb_start_write +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2b1ac8e __getnstimeofday +EXPORT_SYMBOL vmlinux 0xf2c13df5 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0xf2db7815 phy_scan_fixups +EXPORT_SYMBOL vmlinux 0xf2f725e5 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0xf2f72e5e sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0xf3102c3c phy_register_fixup +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf31d1486 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0xf322a206 bit_waitqueue +EXPORT_SYMBOL vmlinux 0xf32b3a9f generic_write_end +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf338fdbd jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0xf33bbfc9 stop_tty +EXPORT_SYMBOL vmlinux 0xf345ad26 fd_install +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf34641cb tty_vhangup +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf369901f __destroy_inode +EXPORT_SYMBOL vmlinux 0xf3745006 __vlan_find_dev_deep +EXPORT_SYMBOL vmlinux 0xf380a5ab mfd_add_devices +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf38b4bc3 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf396cd21 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xf3bf0bce __bitmap_complement +EXPORT_SYMBOL vmlinux 0xf3ca184d inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0xf3f904d0 scsi_device_put +EXPORT_SYMBOL vmlinux 0xf4103e0e security_path_chmod +EXPORT_SYMBOL vmlinux 0xf41c716c pci_unregister_driver +EXPORT_SYMBOL vmlinux 0xf42602e3 ata_link_printk +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf44a72f8 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0xf45d27a9 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0xf464ad50 blk_mq_end_io +EXPORT_SYMBOL vmlinux 0xf488698e set_bh_page +EXPORT_SYMBOL vmlinux 0xf49eb978 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0xf4b32aa9 blk_free_tags +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4bf0036 inode_dio_wait +EXPORT_SYMBOL vmlinux 0xf4dce478 mmc_start_req +EXPORT_SYMBOL vmlinux 0xf4ee96da mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf50c4469 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0xf51bf88b nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xf5222143 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0xf5288726 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf53df0a5 gen_pool_free +EXPORT_SYMBOL vmlinux 0xf542d430 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0xf55aa126 prepare_binprm +EXPORT_SYMBOL vmlinux 0xf55b3b3d __arch_hweight16 +EXPORT_SYMBOL vmlinux 0xf56ee54f generic_block_bmap +EXPORT_SYMBOL vmlinux 0xf574a88e spi_schedule_dv_device +EXPORT_SYMBOL vmlinux 0xf5948896 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0xf59aa728 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0xf5a085c4 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0xf5a62ecc _memset_io +EXPORT_SYMBOL vmlinux 0xf5c164e6 ip6_frag_init +EXPORT_SYMBOL vmlinux 0xf5d75f35 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0xf5d9709d kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0xf5e1558d crash_shutdown_unregister +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5f09761 devfreq_add_device +EXPORT_SYMBOL vmlinux 0xf619695e blk_delay_queue +EXPORT_SYMBOL vmlinux 0xf6365f98 agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf641dd69 of_create_pci_dev +EXPORT_SYMBOL vmlinux 0xf663c4d2 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0xf669f068 pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0xf677fde9 nf_log_register +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf68687be __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xf68ce5f4 rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0xf6ac8177 ip_cmsg_recv +EXPORT_SYMBOL vmlinux 0xf6b4dc6c spi_display_xfer_agreement +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6d8858c module_layout +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf7000f02 __brelse +EXPORT_SYMBOL vmlinux 0xf70b7a89 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0xf71059b0 call_netdevice_notifiers_info +EXPORT_SYMBOL vmlinux 0xf7235478 drop_super +EXPORT_SYMBOL vmlinux 0xf726f421 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0xf7289d14 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0xf741c793 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xf74c604c vio_disable_interrupts +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf7adcaf3 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0xf7af429d blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0xf7d92a53 devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0xf7dffc62 pci_enable_ltr +EXPORT_SYMBOL vmlinux 0xf803fe39 bitmap_set +EXPORT_SYMBOL vmlinux 0xf80de9ff hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf812cff6 memscan +EXPORT_SYMBOL vmlinux 0xf822faf4 agp_collect_device_status +EXPORT_SYMBOL vmlinux 0xf824f50b eth_mac_addr +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf832b916 netif_napi_add +EXPORT_SYMBOL vmlinux 0xf843109d mfd_cell_disable +EXPORT_SYMBOL vmlinux 0xf88fab50 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0xf895c8e9 ata_print_version +EXPORT_SYMBOL vmlinux 0xf89bd9cd tcp_prot +EXPORT_SYMBOL vmlinux 0xf89c8e07 ida_pre_get +EXPORT_SYMBOL vmlinux 0xf8adbe2f dm_unregister_target +EXPORT_SYMBOL vmlinux 0xf8b43934 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0xf8b5e3d3 mmc_remove_host +EXPORT_SYMBOL vmlinux 0xf8c3bbe3 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0xf8dcf078 kill_block_super +EXPORT_SYMBOL vmlinux 0xf9038bcf smp_call_function_many +EXPORT_SYMBOL vmlinux 0xf90b1716 xfrm_state_add +EXPORT_SYMBOL vmlinux 0xf928ca90 seq_escape +EXPORT_SYMBOL vmlinux 0xf92ca950 mutex_lock +EXPORT_SYMBOL vmlinux 0xf93cf428 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0xf9535931 eth_header_parse +EXPORT_SYMBOL vmlinux 0xf95c29ca ip_queue_xmit +EXPORT_SYMBOL vmlinux 0xf962c84a mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0xf965fa1c __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0xf9876241 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0xf99c4028 inode_init_owner +EXPORT_SYMBOL vmlinux 0xf99ce92f genphy_resume +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9b6b6b1 __block_write_begin +EXPORT_SYMBOL vmlinux 0xf9c0b663 strlcat +EXPORT_SYMBOL vmlinux 0xf9f877ea register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xfa0115ad md_unregister_thread +EXPORT_SYMBOL vmlinux 0xfa0d0fab mmc_request_done +EXPORT_SYMBOL vmlinux 0xfa2bcf10 init_timer_key +EXPORT_SYMBOL vmlinux 0xfa335527 bio_reset +EXPORT_SYMBOL vmlinux 0xfa4a0be5 irq_to_desc +EXPORT_SYMBOL vmlinux 0xfa508a9a tty_free_termios +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa710097 km_state_expired +EXPORT_SYMBOL vmlinux 0xfa7f3156 wl12xx_get_platform_data +EXPORT_SYMBOL vmlinux 0xfa855c42 input_reset_device +EXPORT_SYMBOL vmlinux 0xfa9432f9 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaf98462 bitrev32 +EXPORT_SYMBOL vmlinux 0xfb0f5e27 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0xfb15c211 iget5_locked +EXPORT_SYMBOL vmlinux 0xfb33f4c6 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0xfb47f73b xfrm_register_mode +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb8313e2 free_netdev +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfba402d8 get_super +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbadaba3 unregister_qdisc +EXPORT_SYMBOL vmlinux 0xfbdaa4d1 blk_init_tags +EXPORT_SYMBOL vmlinux 0xfbdc6fba kill_anon_super +EXPORT_SYMBOL vmlinux 0xfbdd4c01 cpu_present_mask +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc031ac2 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0xfc1f732a md_register_thread +EXPORT_SYMBOL vmlinux 0xfc2ed11f pci_scan_bus +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc3a736f __devm_request_region +EXPORT_SYMBOL vmlinux 0xfc3b160f mempool_create_node +EXPORT_SYMBOL vmlinux 0xfca073ca __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0xfcaa04a0 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL vmlinux 0xfcb926cd kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd0691f5 simple_pin_fs +EXPORT_SYMBOL vmlinux 0xfd21f752 generic_readlink +EXPORT_SYMBOL vmlinux 0xfd6293c2 boot_tvec_bases +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfdb0229b insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0xfdb6cedc _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdcc64b2 proc_set_size +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 0xfe106e98 ping_prot +EXPORT_SYMBOL vmlinux 0xfe1ef02c __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0xfe26fc7c nr_node_ids +EXPORT_SYMBOL vmlinux 0xfe279f7d bioset_integrity_create +EXPORT_SYMBOL vmlinux 0xfe443601 address_space_init_once +EXPORT_SYMBOL vmlinux 0xfe4aa963 blk_run_queue +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe7c5ce3 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0xfe8b11b6 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0xfea674bf uart_suspend_port +EXPORT_SYMBOL vmlinux 0xfeab36ae rtnl_configure_link +EXPORT_SYMBOL vmlinux 0xfec54980 d_lookup +EXPORT_SYMBOL vmlinux 0xfed050cf vfs_path_lookup +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfee938eb max8998_write_reg +EXPORT_SYMBOL vmlinux 0xfeead4ed scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0xfeebc7c4 __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0xfef96e23 __scsi_print_command +EXPORT_SYMBOL vmlinux 0xff071d58 sock_kmalloc +EXPORT_SYMBOL vmlinux 0xff0b4f5e blk_mq_run_queues +EXPORT_SYMBOL vmlinux 0xff0bd2e8 loop_backing_file +EXPORT_SYMBOL vmlinux 0xff1765c7 rtas_call +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff27c7c2 scsi_remove_host +EXPORT_SYMBOL vmlinux 0xff34ee14 vc_cons +EXPORT_SYMBOL vmlinux 0xff36ed63 dump_emit +EXPORT_SYMBOL vmlinux 0xff424587 inet_frags_fini +EXPORT_SYMBOL vmlinux 0xff47c148 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0xff4f7a89 tcf_em_register +EXPORT_SYMBOL vmlinux 0xff5d7994 agp_unbind_memory +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff76e049 dst_destroy +EXPORT_SYMBOL vmlinux 0xff9390a8 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffd16832 __serio_register_port +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL_GPL crypto/af_alg 0x261c3331 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x289197b2 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0x2bfc08f8 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x38ee0203 af_alg_release_parent +EXPORT_SYMBOL_GPL crypto/af_alg 0x482a7b1e af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x58716898 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x843552ad af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x98593bdd af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0xc67df116 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xcaf840ac af_alg_register_type +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x3bd9b5dd async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x04abfc79 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x81e3e258 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x40e55d1f async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x7a61ed03 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x01ad89fc __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x43480977 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x70ecfecd async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x76ad8096 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x06d3f495 async_xor +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x4a5246d5 async_xor_val +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x97111ab5 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 0x7aae77c5 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 0xacdacf59 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 0x0335057b cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x11848a1d cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0x1e5e9042 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x38a4e111 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x5bfa7dbd cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x7740c25b cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x84060c36 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xc17b770a cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xcc293914 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xd82a29a8 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0x654c4c09 lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +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 0xb1c5e177 serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x06148a9a twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0xe390b807 xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x0472c9f4 ahci_platform_suspend_host +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x5ca51da5 ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x8f34557e ahci_platform_resume_host +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x9a0081f0 ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x9aaa437c ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0x9f195bae ahci_platform_resume +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xc890862a ahci_platform_suspend +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xd7a31fea ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xea2c0756 ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xf035df97 ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/ahci_platform 0xfc6f6c76 ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x131d75a9 ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x26c0814e ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x2ac32166 ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x4a62c082 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x4cf07892 ahci_restart_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x57bd4034 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5eacba1f ahci_interrupt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x694f923e ahci_thread_fn +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x695e1ae2 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6afc243f ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6b782cb5 ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6e05c4e7 ahci_hw_interrupt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x794066dc ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x85804847 ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x91ce9abf ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x929314ab ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa40b8e42 ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa768b7ba ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa9edcca0 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xb3a8bb44 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd00b6f9c ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd955d31a ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xde470c5c ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf1883c3a ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xff69bfe2 ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0xe2c5f10e __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0x3f1d0eda 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/bcma/bcma 0x040711dd bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x0cd5624d bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1c754cb2 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2a14a000 bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3fc742f9 bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4bf1fc9a bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4d3fa798 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x537f530b bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x55ff27c6 bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x9a3d0791 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb03696e1 bcma_core_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb0e5fe97 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb357e673 bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb40bc979 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xbcf9977e bcma_core_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xce44b8fa bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd96f26a8 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xda056e1e bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xdc60e982 bcma_find_core +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe4b710e6 bcma_core_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xec845cfa bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xed246a81 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf7d6e82c bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x3067334b btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x3e274244 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x3efe7540 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x6180ba79 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x6fdf8341 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x9f2f27cf btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xb157e966 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd6292913 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xde9e12fa btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xfff43854 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xbdfcccc4 dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xcb9cf4c5 dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xcf534650 dw_dma_resume +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xd6f44a13 dw_dma_shutdown +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xe869d796 dw_dma_suspend +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x08616229 edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1a9994ea edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x29618bfb edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2b144941 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2ca39063 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2f783a67 edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x31e27281 find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x3e008c0d edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x446d4325 edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5090918b edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x55478b7e edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x63fc982e edac_mc_add_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x69259f22 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x713d4666 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x78aa5f22 edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x812b78da edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x8577c123 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x93fd3c1d edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x969d58cc edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9d51633e edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xae914b3c edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xbbb201f7 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc1773188 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc46e4517 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x6ea913f8 bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x95f3bbdd bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x117289c8 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x12cdd878 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x8028c689 drm_vm_open_locked +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x851f64cd drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x97647ba0 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/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x063a5dfc hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0b753a2a hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x11b8fb28 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1912147f hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1d957986 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1f3ce002 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x272c23df __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x33495011 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x339d2a40 hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x358e5c4f hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x40e1f914 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x48ed3cd1 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x53279fb6 hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x585576bf hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5a69be0f hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5ae2fd1c hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x625773b1 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x641e58d1 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7452bf27 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x76266729 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x78d6f1b7 hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7e2b5434 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x800b9e90 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8029a669 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8ef011f1 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x92bac717 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa044956b hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa642404f hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb9253f16 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd2c936b6 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0xdda78433 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfa343d96 hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfbfcafda hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfe56fa57 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x1f7317ba 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 0x10c55bf8 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x2bcbcdae roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x43b1dd4d roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x5f148d16 roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x6dad05c3 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x80b823a8 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x00fb7063 sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x440e0e4a sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x54a09a2e sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x76c236d1 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x78d4ba15 sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x7ec430da sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x885688d4 sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xa650a669 sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xe89451eb hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x09f72bcc hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x17917744 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x35d793f7 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x368304e6 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x3814aecc hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x51d32243 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x586bba0e hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x595bdae3 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x7b9aa64e hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x867eaba3 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x8df12031 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa41a31fa hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc694e30b hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x24673733 adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x8aeb3ad4 adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xd2d84494 adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x02971d25 pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x0c459de6 pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x0ef970fd pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x54c0cb1f pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x78a58e80 pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x81d2e42d pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9d50f476 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xa3b2e41b pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xaefac9da pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xc757e58e pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xde236635 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xec3f989d pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x210902e2 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 0x5cd16bf6 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x6f487972 i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x70d78c66 i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x8314c094 i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xa08024f8 i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xca92e654 i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xeb7cc741 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xf47dc26e i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x943626b2 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xb750bf0a i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x69d991e4 i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x8463a62c i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x408db0c8 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x4132b215 ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x41521b71 ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x597f0320 ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x5b94900f ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x613c93ba ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xd10b83d6 ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xdb584036 ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xe46d1d96 ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x058411f1 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x0e5e0f09 adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x30a0671c adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x39b297df adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x3e023c2a adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x95eaa9bd adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xaaf189b5 adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xb599a0cb adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xb87bd84a adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xc7cd22fa adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xcf326677 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xebfa9d20 adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0528dc2a iio_scan_mask_set +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1eb174ab iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1eb26bff iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x25b7c598 devm_iio_trigger_free +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 0x3355f271 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3aae6606 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3b52ba38 iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3ccb1403 iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4fa99428 iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x59ba8f63 devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6795c70f iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6affe4aa devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6c86e672 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x71f2892b iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7b7bbcaa iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7ee4cb3d iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x88e684bf iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x89d16480 iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8c41eda8 iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa06c3b98 devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xae8f7e50 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xbdd04612 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xbe6a2b38 iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xbff339ef iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc559c3fc iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd10739e7 iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd1477f04 iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe649dc60 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe6d96934 iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xedcb3527 iio_map_array_register +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x59979cfa input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0x8584df6d matrix_keypad_parse_of_params +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x49a4fcbd adxl34x_remove +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x644264ee 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 0x0a0e2dd8 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x3ec4c4a4 cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xd2d71b64 cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x4b1a4fbb cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x5cbfbbd0 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xfcd96eab cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x3d42dd17 cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xd10b292c cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x2db32a46 ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x3c65f9dd ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x84ffb36b ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x8a20e4c5 ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xa1b73c8e ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xbe2983ef ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xc100cdea ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xd8fd794d ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xeec89475 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 0x04139312 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2c924b11 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x39bd36ae gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x41b96b51 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x45c5d4f7 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6548c449 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6cbdbc5d gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x7a7469c5 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8461c239 gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x882810b5 gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x96d16b3a gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9fd57e74 gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa3151853 gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xb202cb11 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc2ecd0e9 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xcf200d99 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd3c7f97c gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xde91f4b9 gigaset_start +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x07ff4126 lp55xx_register_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x0901047b lp55xx_write +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x3410adbc lp55xx_unregister_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x5e4d3157 lp55xx_register_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x8d502b27 lp55xx_init_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x8e9f5195 lp55xx_deinit_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x9df8b690 lp55xx_read +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xa4fcbe91 lp55xx_update_bits +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xa88635d4 lp55xx_is_extclk_used +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xca4f677e lp55xx_of_populate_pdata +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xcca7a319 lp55xx_unregister_leds +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x749e05f2 ledtrig_flash_ctrl +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x7903e46e ledtrig_torch_ctrl +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x0ec17d44 __tracepoint_bcache_bypass_congested +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x26062738 __tracepoint_bcache_alloc_fail +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 0x8a4afa11 __tracepoint_bcache_alloc_invalidate +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 0x119494aa 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 0x32d491b8 dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x7111d691 dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x9f08ab0b 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 0xba324917 dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xebd06eaf dm_bio_prison_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xf0bc43fe dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xf9d92fa7 dm_cell_error +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 0xa48a58c9 dm_bufio_client_create +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 0x4bc43a73 dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x534b34dd dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x55c1cbd9 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x92dd5e12 dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xb14fdc0e dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xe5234743 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xed5e4137 dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x12ff4209 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xcbc37926 dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x01d2f9ac dm_rh_recovery_start +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3d34fd53 dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x4430764e dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x45ab972a dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7be48130 dm_rh_dirty_log +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 0xb893b0b0 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xcbe48933 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 0xdb4c9098 dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf48e9b0d 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 0x17c36f29 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1cac81ac dm_bitset_clear_bit +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 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 0x2f74609d dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x32b5f546 dm_array_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x38c75c44 dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x42dbdfc3 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 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 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 0x68fae9d2 dm_disk_bitset_init +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 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 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 0xa0bbbb49 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa13861b4 dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa87c5b4d dm_array_resize +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 0xb44708bf dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb7bad799 dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb9a6ecf8 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 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 0xe44b4b9b dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed1e1f96 dm_btree_remove +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 0xf475af48 dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf5455120 dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/raid1 0x68396894 md_raid1_congested +EXPORT_SYMBOL_GPL drivers/md/raid10 0x541d8ff3 md_raid10_congested +EXPORT_SYMBOL_GPL drivers/md/raid456 0x0b08ed03 md_raid5_congested +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x10bed72b saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x4d828583 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x633be229 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x6de8b165 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x6f4c1fc0 saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x9c9dbb22 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xc01009c8 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xf0985637 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xf5b6403a saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xf67c5ebc saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x1a1c8cde saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x2d8b59aa saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x2eb2980a saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x72949f0e saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xb82ef27d saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xe3155328 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xe506e0d8 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x0187563c smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x052a6cab smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x259476e1 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x35114043 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x3592bdf0 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x3c5a23b1 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x54f842b2 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x6b764295 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x6d5efcd3 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x71399b9b smscore_unregister_hotplug +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 0x94142ee8 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x99a81ab3 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x99eaad27 smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa1cb2dd1 smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbdd50cb7 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc2267091 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd9568e52 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe8c369df smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0xfa7de7d9 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0x6daaa740 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x14c4bbd0 mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x189ad9b3 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x4d2ccb8d mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x69ee35ca mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x73929a73 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x78ec310e mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa00880f9 mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa258707c mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xaa9721ed mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xcd015a9e mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xce27dcfb mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd7f2cdc2 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd8cfacf8 mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xe9c3a4d9 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xeae522bc mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xfbd68c96 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xfd2531ef mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x18cb8f6f saa7134_s_std_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x1b80e748 saa7134_s_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa919a36f saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xd4176e3b saa7134_queryctrl +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xea69a415 saa7134_g_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x01973230 ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x058868f2 ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x12dc67ce ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x13b80707 ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xb038dd99 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xf5580ec9 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xfa7175ce ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x5bfcdfc3 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xbe7cb886 radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x25fabe16 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x365fcedc ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4312a3c8 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4862f82c rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x571040d0 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6343ed7c rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x638a139c rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x77770055 ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x8e515e37 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa890a799 rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xac7a664b rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb074726f rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc8578f55 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd3372028 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd405fd87 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd60a42f9 rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd998a5fc rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe54c58e7 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xffe85f57 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0x9c284a53 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0xe60e8eb9 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x5ce15643 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0xdf5752c9 r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0xd1394fa8 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0xf20099da tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x051d4b57 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x16ec9248 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x78c23f7d tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xc50e8a2c tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xf14c18dd tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xacce2d53 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xf51eb1f1 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x2f9b8271 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x19856a8b cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x4e148623 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x559c8a92 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x66f60587 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x69e29821 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6ed791d7 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x806caed4 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x930a4a1a cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x9b299b51 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb063005e cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb8e163d4 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb955cdd3 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc93c636e cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd8f8d0e3 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xdecae60d cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe21c24df cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe56febde cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe8127d8c cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xee9f876f cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x1005058e mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0x7a45f202 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x173a431f em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x2f06d44e em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x395cbe21 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x3c2195c8 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x4b243e56 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x576e9e16 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6c41113e em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7be381f1 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7ca56e72 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xc44ca5f0 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xdc130023 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xde45517c em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xe0aa9aba em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xf85cf1a2 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x7e877d52 tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xa035bf83 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xc284100e tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xe9c251ec tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x01c483a9 v4l2_get_timestamp +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x2071bb63 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x3a2eda2d v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x51a575df v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x65ba3222 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 0xe9d94e1d v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xed3d5c5f 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 0x221d2fbc v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x36e8756a v4l2_find_dv_timings_cap +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 0x53105839 v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x6976cfe0 v4l2_valid_dv_timings +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 0x7eaf8e7a v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xb0891da2 v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0x6b7929ee v4l2_int_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0x874c1881 v4l2_int_ioctl_1 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0x89ee092e v4l2_int_ioctl_0 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xa5228b24 v4l2_int_device_try_attach_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xb4f18277 v4l2_int_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x03c885e0 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x04a9313d v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x1571c5a5 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 0x34d3c03b v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3feeccdd v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x66a068ff v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6fc6d2d7 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7e4b6c84 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x86a88c2a v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x883d467f v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xaf4a36bb v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xea332b5c v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xed98d1e9 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf342c5a0 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0b2e1a24 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x243b540e videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2745c6f0 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x33cb6ccf videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x33eb71b0 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x34dd05e9 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5245eac9 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6200c7a1 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7284a658 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x87fd32d4 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8b51c872 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x94ecafa7 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x99cbc06d videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xab1f989d videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb86c242b videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd3587059 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xdcf8c868 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe38fa664 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe9e2db00 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xed073d0b videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xed5a93b6 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf3c9f26e videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf9b58873 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xfaeb2327 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x0d0a8e2c videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x2dda381d videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xe3fe0e39 videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x16fa921b videobuf_dma_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x198ba8fc videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x3a18f1f5 videobuf_dma_init_user +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x4cff71e5 videobuf_dma_init_overlay +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x553a86d0 videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xb006c7ce videobuf_dma_init_kernel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xdd74bd6a videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xe0e6fedf videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xe160912c videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xf2935157 videobuf_dma_map +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x369d1ed7 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x9f73d265 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xc7e8ce42 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x25d95232 vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x27c799be vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x30a589b4 vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3194fe30 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x33385944 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x346d0450 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3a31ae64 vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4d39d948 vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x52b64eaf vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5f12c9c6 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x60e0db92 vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x62db3f94 vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6673428a vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6d4c8c2f vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6f69f5d0 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x712c8124 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x71e674d1 vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7e69bf7a vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8c1f5e0d vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x93e9bb56 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9f647d48 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa3dcc554 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa4261f6b vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xaf3b7a84 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb85bb6f4 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd5a43326 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd9a316a3 vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xeabac3f0 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xed14c493 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf1e47be1 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf3713239 vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf37b6d95 vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xfb199fc9 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xfefdef89 vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x097c2cb1 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 0xf17562d1 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x07a56331 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x145455ae vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x19f5c39e vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x35581041 vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0x2b0632b4 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x03957795 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1ca6eeaa v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2d718e4b v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x31e56d97 v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x45f339c9 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5051d282 v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x50a8342d v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5ee31348 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x76ae0dcf v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7cfa6d72 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x94dc9615 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xacaefc6b v4l2_compat_ioctl32 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb0cefd54 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb4df839b v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb768f3ce v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbc21f3cf v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc54176b8 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xce3a9ee0 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcf59cccc v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd16bdf2d v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd8124eb6 v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xded1b20a v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xedfe7be1 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf405fdb9 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x0cf75a04 i2o_dma_map_single +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x30342d6e i2o_dma_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x345c8d4d i2o_sg_tablesize +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x47e6bbde i2o_dma_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x9db0fc15 i2o_pool_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xe9c54cda i2o_dma_map_sg +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xf4c8cb05 i2o_dma_realloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xfbbf9749 i2o_pool_free +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x1ef46fb3 pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x40393ac3 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xa4932e63 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x092f6742 kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x2d100c09 kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x40ecf585 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x58101cc5 kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x6b75b4a2 kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xae2c2091 kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xbc89d126 kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xfd1874e1 kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x524ada55 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x8721e1b3 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xa254d4e2 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x78c9739a lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x7e8dc016 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x81510614 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xb6ca310c lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xbe2eeec5 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xc9a6996e lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xebe3b52c lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x7010633c mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xa5b7207d mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xae3059e9 mc13xxx_common_cleanup +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xb7b8d515 mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xc90dc059 mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xf7029e35 mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x20bc0a74 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x2dbfc794 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x42a41794 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x59e77304 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x6674f20d pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xa3627b41 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xc00a41cd pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xc0798adc pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xc5c62b08 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xca3134fc pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xf729548b pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x7e0d262f pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xa3d1ecf0 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x021cacf9 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x4b0a8a67 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x4c00921c pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xe3091897 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xf065f17a 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 0x04d55eb0 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x05056b69 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x16158a1f rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x20c76097 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2185f4df rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4b17c772 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x549f25b3 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x54b29f71 rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5deb8239 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x606277f0 rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x714b137f rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x806e28ed rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x899dbb5b rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8bbfd51e rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9fe9d902 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa4206b79 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xac1ac563 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc21341ee rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc60d65eb rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe94342fb rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf5d5c85c rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x11fb836a si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x16b7a6d2 si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1fa7d516 si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2bccbc87 si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3b2a0d85 si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5287f823 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x53c4cdf1 si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x61619759 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x63045a4c si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x63e84487 si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x800f6d9b si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8a9c3469 si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8cd50937 si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9c325790 si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa5d2665c si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa7190049 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa8d48d4f si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xad2b91de si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb098d761 si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb68feb4b si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc00e5879 si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc0c72fd8 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc57f40b1 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc76b2172 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc9eabc0c si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xcc7a6e34 si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd37d6f54 devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd5a651c2 si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd706a6e5 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe2fee5df si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe75e28a4 si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe91bcfa9 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xfcfdd11f si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xfd76f11e si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x08973f79 sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x4f2480c6 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x7f7c27d3 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x86d4dcd7 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xbd2f7b56 sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x0965bfc5 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x2b396b6f tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xbaafa366 tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xdae30938 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0x2abfdeef bmp085_detect +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0xacf56f60 bmp085_probe +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0xadef8fb9 bmp085_regmap_config +EXPORT_SYMBOL_GPL drivers/misc/bmp085 0xb96fee77 bmp085_remove +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x3c49f66b cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x46a24acb cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xb2f7c33d cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xf17da2a9 cb710_pci_update_config_reg +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 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x0d8fb8d4 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x0dfc7124 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x180c737b enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x1c558b68 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x1f633ed3 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xd4a51e8e enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xf0180915 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x491796d5 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x55811bbf lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x5b1db017 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x91906034 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xaa932f37 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xda8f8d16 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xe1e6c107 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xf369a8e1 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x3b301364 st_unregister +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x5339f055 st_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x3e8e6c34 sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x84284cb5 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x98ab995a sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xa29e15bb sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xa5383024 sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xb33056a0 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xd04ce7bc sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xe4af13c2 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xf14f29ee sdhci_disable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x299f12a2 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x2c9ae532 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x318c1ea0 sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x584e9d77 sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x67738faa sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x961b7e6a sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xcb440e01 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x5b65b4fc cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x9952b482 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xa67b916a cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x3f9e42fc cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xb235c6aa cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xcc678d7a cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x28286519 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x15686561 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x9455590c cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xdd8c1c78 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x15a21d23 __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1a707378 mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1f98e175 mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2312dd41 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x27def3df put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x29d1faee mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2eb328ae mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x39c0c5b8 register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4279c26c mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4383d9f4 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x43be4eec get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x45aa6bba unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x468dc002 mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x47518c55 mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4a33e051 mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4e1fb706 mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4ef2e5a8 mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x53d535cc mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5e36a92f get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5fbb243a mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6d033995 mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6d23c6bc mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7e676bd2 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7f59c277 mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9148a586 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x94daec95 mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x986063ef mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xaf17551c mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb9db6d9a mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc4322305 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc50514ce mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc6ba11e1 mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcab77cab __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcc418a81 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd0556794 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd67b75d7 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe709bba6 __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe7ababe5 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf975a27a mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf9aa100e register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfc9a6fa6 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x26951fc5 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x7b20be78 register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xaf417693 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xb2666cea add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xcb797d34 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x6f147b0d nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xb50404ef nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0x3528a669 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x740e7a56 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x75555dfc onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x128bee46 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x169caab5 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x1ecd4258 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x261cf842 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x33734d3e ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x4518c8a1 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x60aa1765 ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x63449dba ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6c24a305 ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x746a5b31 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x8d0f35c3 ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x9766c4f1 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xdcf4417f 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 0x2c64026c free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x3942bd24 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x4eb6d2d1 c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x7149d909 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xcaf63c94 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xf60aacc6 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x0cf3b287 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x13bde18c devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x36f83242 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x59fbed7c close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x5b2e4238 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x7f572180 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x8a1b3f00 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x9fdd7db2 can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xa30ff383 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb3dbe07a unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb55e5330 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xc4c1a07a can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xc61cabb7 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd8bec12f open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xdd4b457d alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x1419ddfd free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x1a0fa796 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x691a097a alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xe88bdca0 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x942d51f6 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x9d02b008 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xdae69ab3 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xec3fbeeb free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x083c7e3b macb_set_hwaddr +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x63df06ff macb_ethtool_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x8879e070 macb_mii_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xb81f9e35 macb_get_hwaddr +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xbff3ccd5 macb_set_rx_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xd4a1b7de macb_get_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xf9797c51 macb_ioctl +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x00dcc93b mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x03571c65 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x03cc68e9 mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x06a8de21 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x075c6517 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x08bec96b mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x08e9764c mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x11a42701 mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x12e7aefd mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1483d59f mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1a6f44e4 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1c969c51 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x210667aa mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x21e96146 mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x24abea33 mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x27fc1d89 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x29431bcc mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2a030fea mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2a4120af mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2c4108ca mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x303f418d mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x32a31fc3 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x33e8eeb6 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x34d5631d mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3516c0a2 mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3879ce5e mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x39910c07 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x39b2a33e mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3ac62a53 mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3c6f1dab mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3dbc9bf1 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x403be5a0 mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x442a4ab4 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x45441f6e mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x45d442c8 mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4639ffab mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4886ff24 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4d28fa4e __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4e6a9fc7 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x54a45b28 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5cd90b82 mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5ed8f210 mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x618da07d mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6ae2edf7 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6c28fc0a mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6c2b2042 mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6e03bf86 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6ed13014 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x71816bff mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7792e7c1 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7d29d41d mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7e0d228f mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x800c4d4c mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x825321e3 mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8465c958 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x87e2ca82 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x87ef309e __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8ab09766 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8cc9b4db mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8cd37762 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8dbd7bd7 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x90c9c90c mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x923cded5 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x93bfb818 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x961f0a48 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9f321dee mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa3f6d0d0 mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa40f2dda mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa8148825 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa8725d66 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa901a1e0 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaea41b07 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xafe9dd16 mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb0b2539c mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb1bd0212 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb2dc8690 mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb5764019 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb7b0cf33 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb9a332a3 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbc20699a mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc451e704 mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc5e67203 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xca09c05c mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcd3a351d mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcd77593d mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xceefc298 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcf77ec56 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd87d6329 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdb0a3590 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdb42c4fd mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xde66bfb4 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe7b55e9f mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe885ca61 mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xedab7012 mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xedfef34f mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xee44b8c8 mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xef3fc4b3 mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf1abcf46 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf304c704 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf4ddb007 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf6d509b4 mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf84d37d7 mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x01dd950e mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x17c74209 mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1e2bc9dc mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3d1d727d mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3f00a62b mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x48867344 mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x57e29dc7 mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x77285cbc mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x78acacfa mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa0c1324a mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb3b09b31 mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb8d19049 mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xba747b84 mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc4095767 mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd6c4ef56 mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe0234a52 mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf5adc875 mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x05312d8e macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x61fe477f macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x71076fb1 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x99ac60e1 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xb77ca2ab macvlan_start_xmit +EXPORT_SYMBOL_GPL drivers/net/macvtap 0xe0e34715 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x36c4da53 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xb89e6211 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xcc7c10c0 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xf5146c2a usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x03c0802b cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x086aaac6 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x1d8f71a4 cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x41eb5a6b cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x505f1ff5 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x5ae7ba17 cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x8f24675b cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xf77d12fb cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x1d2745d5 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x30b02dbb rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x47cbffe4 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x6f1b82c6 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x9552b63b rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xf2aeab8d rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x04f956bc usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x07fab832 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1dbd4a80 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1f748068 usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x22e9d7a8 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2bebbc66 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x30400a9d usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x376a3cd8 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x45e2c7b7 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4b39e820 usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4beb0501 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4ce764e6 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4efb6e15 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x607f2d97 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6d7ffa68 usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x77e16944 usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7f2a692c usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x838168c8 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x83d6d5fc usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8bf58281 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8d12725c usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbdef425c usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc2c676c4 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc3a59d2a usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xccb55b9f usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xdbe26246 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xdd17dcb4 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xdd3c5538 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe069a352 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe241b535 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe88ce2da usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xee49ea25 usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x5206dddd vxlan_sock_release +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xac4472c5 vxlan_src_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xc1726e40 vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xd7fd53f3 vxlan_xmit_skb +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xf9966c3b vxlan_sock_add +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x1ad8c30b i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x2183f43e i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x22cd6501 i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x68c24135 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x6d440b85 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x7d04b6e9 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x82d9c764 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x848f9107 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x88de1f82 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa08f6e3d i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xab3de1fc i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xbcdd1c31 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc1ff9ca8 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe08a9bff i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe161ad50 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf1b78636 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x60d22e3d cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x78368475 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xab31150e cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xef1c35d7 cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x2132e87c libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x09601b89 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x59c19f31 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x74c59b67 _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x84ca6476 il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xf56a2c91 il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0d556623 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x11e35b21 iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1291ef1b iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1625ad67 iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x177f5504 iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1ac36ff0 iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x26b84e16 iwl_write_direct32 +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 0x40559353 iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x46f037aa __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x4bdad258 iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x54da7a11 iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5d0a212e iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6b0867a4 iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x742173de 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 0x840a6ee0 __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8c5d5ab3 iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x9e0a4af4 __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xaa6d08eb iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc292e002 __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc67c31ed iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc6ffbab3 __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xce500917 iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd765417e iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe15c9307 iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xec614445 iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf7689716 iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xfd24904d iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x0a3a872f lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x11bdcd70 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x198d6a4a lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x34df5d60 lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x4ca71815 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x61dfe5a7 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x712d56f0 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8512f724 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x885038a6 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8a18c11a lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8a7f0c5f lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8bda164c lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x964511d2 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb77de875 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xcda63fbe lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd49ac74a lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x0c42a247 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x1b96971e lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x22f08b65 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x72132d04 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x963b0ff3 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 0xf56c2fce lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xf7ad0793 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xfb010bb5 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0xbc135546 if_usb_prog_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0xdc79b2ed if_usb_reset_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x0d991109 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x2d2f0442 mwifiex_deauthenticate +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x30ffac22 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x3fbef1de mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x498ebc95 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x55b3c0bb mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x702607e6 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x78c1b641 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xab614d91 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xaee7b547 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd39435ad mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xdfc26e5b mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe83ee5cd mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xf27beb0a mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x245d77c1 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x5dd827af p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x5e0be65e p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x610efacd p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x76cf9a99 p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x8b8f5e12 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x9bbc6f9a p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xc2aa9a77 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xd491163f p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x001955e2 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x135c3d96 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1599a3f9 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1a97d315 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x259e73a3 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x32fca0b3 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3d7d1c08 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x439a7ba7 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x490cff5f rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4fdaf388 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5956d388 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5b8fe614 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5f95f9e5 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5fda9044 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x66ace15d rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7096f3ec rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x710bdff2 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x78dc80ec rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7cc5dfec rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x847c2cf7 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x87730b60 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9157984a rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x91b70686 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x970dc44c rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x98b00f0f rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa13ad99f rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa727317f rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xaacbd13d rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb31243de rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb9767fef rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc46d35aa rt2800_rt2x00debug +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc9d2646c rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xda9e5d2c rt2800_get_tkip_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe0e03fc2 rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf2d75598 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf35edf1e rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf964fc01 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfa8bfff7 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xff194806 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x187c026c rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2913761a rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x3bfc49fe rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x50e593f6 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x51d25ff5 rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x56df4736 rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5c5e98f4 rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x640bfcf3 rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x6982e842 rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x9d3b8b87 rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xb37d3d23 rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe1d45715 rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe5d11e50 rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x02f605fb rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x057ff140 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x10236599 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x110e039d rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1444a75c rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1b94d10c rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2c68c28d rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2cc28187 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x35b015c8 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x413c0243 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x427d0987 rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4b1f1963 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4dd86a4a rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x558960bb rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x56341b8f rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x60f806d2 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x685f1cbf rt2x00debug_dump_frame +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6bba9408 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x72fbe264 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7de893f9 rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7ee44600 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7f8a9862 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x86c65ff0 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x86cbcddc rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x87590456 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x876c1f88 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8cd48203 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8d62bae0 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x94436a2d rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x99b7d089 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xad612117 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb70c797a rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb7ad81b8 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbe53c753 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc510a03a rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcb2064df rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xce20a61d rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcf8f0145 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcff49e67 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd2c4fe5c rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd68651db rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd6f73532 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe7eec611 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe7f17b87 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf4c861f7 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf565250f rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfcab3618 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x12bf482b rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x5daf5a1f rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x5eacfcb7 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x692fb7d6 rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x873bcb7b rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x2df4d94c rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x682653d5 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x7d5128fb rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x8e5c04b7 rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x030e02e1 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x36d7ee91 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x38a81bc9 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x5dd7d7fd rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x5df7fda8 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x6745a61c rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x7b22dbc6 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8192e823 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x9dfb9593 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x9faf17e1 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb6a759ed rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xbadfa2b6 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xd23cdf5c rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xe9f24735 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xf26e62cb rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xfd9c503a rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7099ec82 dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x709f4dd9 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x86d7f284 dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe353e118 dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x03fd9470 rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x0d62d353 rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x18d48463 rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x211be8df rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x225b017b rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x5fca1dd0 rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x5ffb1d77 rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6046802a rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6eb5bcd8 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 0x7b4ec01d rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x8b6594df rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x90298850 rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x9298d688 rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x99d7ff00 rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa9f3f9db rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xadbfb08a rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xaf4d6d94 rtl8723_phy_calculate_bit_shift +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xb0dcdacb rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xb2f9ac1a rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xc202f5fe rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xcca01211 rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd7e61ee6 rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xeb1d631b rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xeb52f3fc rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xee359db7 rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xf0051f80 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xf8c6432e rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xfb042b3f rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x0d0b6636 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x1582fc45 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x241dedc1 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x261c5731 rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x3e216133 rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x449b1c79 rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x4b16b98a rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x6b4de810 rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x7138e4b7 rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x7e32703e read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x840219af rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x89730a15 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x923da579 rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xa80cda34 rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xbe8b7caa rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xbeb2bf34 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xcc621579 rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xdaa43629 rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xe852e8ca rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xee66ea43 rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x22382f52 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x6999a136 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x8cf5e61d wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0fd40e01 wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x10bb0ce6 wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1282da5c wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x145364d1 wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x17a577e0 wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x17dba573 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1c02c65a wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1dc259a9 wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1ff49827 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x21175ffc wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x23ea3078 wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x26291a26 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2c6e92b2 wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2f605c9f wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x31362872 wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x381fdfc6 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x451f00c5 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x452a26a7 wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x49b61f69 wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4c8ebacb wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4f31de78 wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x67f4745b wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7419206f wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x78dbac39 wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7a595fcc wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7b178452 wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7b3ea305 wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8a5e570e wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8e52cc89 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9a7ee274 wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa3a93966 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa41bab3d wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb2939665 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb35c225f wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb805a0fa wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb940757f wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc2372133 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xcbaca7e7 wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd06e916c wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe908f223 wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xee7c1b9e wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfc269581 wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0x01cc7086 rpaphp_slot_head +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0x4bdd5a13 rpaphp_deregister_slot +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0x91e4bef7 rpaphp_get_drc_props +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0xb7663497 rpaphp_add_slot +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x24b93728 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x7fecd54a pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xb1da2edc pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x0bf6642b mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x40104608 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xe295c403 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xea192817 mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xf9613c01 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x49b5aeb4 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x511e6660 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xa7abd52b wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xa823ab24 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xaf707a81 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xc6908537 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x7a2048f2 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0403cd1f cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x046eb3a1 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x09b61144 cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0b236192 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x130432b3 cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1df0075c cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x255bb034 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2c22f4b1 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2d7140f9 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x30d428cb cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3151bfb4 cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3baaecdb cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x496cf3ba cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x55342cd7 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x56c18dcd cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x603e67b0 cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x66d393ae cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8039115e cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x80653a39 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8169dba2 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c514c52 cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9d6d6ceb cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9f2b06ad cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xad10e023 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xad8650af cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xaf6719ba cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb2fd920a cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb8c27612 cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc0fec688 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc9cdd944 cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcbc8125e cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcec5d1d3 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcf4d8cb2 cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdc47770a cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdf7ff810 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe225e267 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe62c4b18 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xecf6e4a8 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf82d92f6 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfaa3ab8c cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfb583468 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfba541ed cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfc01dc30 cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xff52793f cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x28783366 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x50baab6e 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 0x8a86889b scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x8e9beefe scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x998f86ad scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xe5d2fbf9 scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xf94ff84a scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x18ecf676 fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x26b671df fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x29335a07 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x3a6cb996 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x4e6f9d54 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x54c363ea fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x6214a9fe __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x68f1be0a fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x89c17a8b fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x930ca762 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x93c4abb0 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9bbc3001 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xaea357eb fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xbab4badf fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe87de3d2 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf7ad2b18 fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x01cca3eb iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x120761db iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x4bc38e4b iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x54bebf9e iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x6ce0e193 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xa514d588 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x006d7bd7 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x050f1b59 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x11bf8906 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12c5388a iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x13b9b24b iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x14f486f8 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x16ee7537 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1dcb940e iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1f415c90 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x30661540 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x35be3556 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3e58ca7e iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4a60f05d iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4c31668f iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4e333d5b iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x53c056d5 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x54dc396f iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5c0ac525 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x65050570 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x694375e0 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x73b1d371 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x857dea10 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8a1b90ad __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8a499d1e iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9edecdbb iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9eeeeec3 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa5c2b3d1 iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa8521313 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa8d5d632 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa8d73e31 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb259a725 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc645fb12 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcb2313d0 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcd63a46f iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd19e175b iscsi_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd9888e29 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xda7dbc6d iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdfec13c0 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe03022a7 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe3ecb5e0 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf3ad811b iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf58a9e2a iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf68ff8d3 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfbad5f4a iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x0235b192 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x13edfca4 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x226638d0 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x33552e9b iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x45371c18 iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x561ab08e iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6e4cd595 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x756b71e5 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa1887e04 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb054cfc9 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb2408dbe iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb4e3249c iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb75bf569 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc36fe620 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc7daad89 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf0876922 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xff0f68e8 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0ab6a806 sas_change_queue_type +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1e1faed2 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x24ab38cb sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x259d5f82 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x319383c3 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3ac7a58b sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x484ecefe sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4f019f6c sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x52a4b66e sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x57190446 sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x657faaea sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x67d0e80d sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x78ab033e sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x832e904e sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8fe2ac11 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x9869e988 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa00127cf sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa249543e sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xac5e9905 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb3d786d2 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xca70b22b sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xcaa2865d sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xcac8f576 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xce905103 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xed89b628 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x5d7f3ab5 srp_iu_put +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x682d4499 srp_iu_get +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x8ecb1bbb srp_cmd_queue +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x93c2d3af srp_transfer_data +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x942eb247 srp_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xdfd88a6a srp_target_free +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x03a70a99 scsi_host_get_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x6453bc6b scsi_tgt_it_nexus_create +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x8c3eed74 scsi_tgt_free_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x9f2d93d0 scsi_tgt_it_nexus_destroy +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xbfa08db5 scsi_tgt_cmd_to_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xd61b569b scsi_tgt_tsk_mgmt_request +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xd84aaae2 scsi_host_put_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xe2cd42b1 scsi_tgt_alloc_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xea2a8715 scsi_tgt_queue_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00450a05 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x048cb0d8 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1272297f iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x147a7286 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x17bb444d iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x197dc91d iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1ca68453 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x28197ff4 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x29ce15d0 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2c68b756 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x34f4b7a3 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3a0b29fe iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3dc3861b iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x45bfefd8 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x49364c55 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4da9b3a2 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5548aec8 iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x65264efc iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6f54fdf3 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x720faf69 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x73743ae5 iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7960518c iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7ef3733c iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x81052707 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8120f07b iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x83fba15c iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x999a55a8 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa031bdc1 iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xaabe10d3 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb4ec46ed iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbb291455 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbe0755d1 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc02e082a iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xca19d8c8 iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcd88eeab iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdb4bfc66 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdbb27b1f iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe1ebda84 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf20a0f05 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfa88edb6 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x17213754 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x59189c45 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x6c898869 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xeafb8862 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x8b29ab02 ufshcd_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x9abf87fa ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xaa64d9d2 ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xafad469c ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xbf45c469 ufshcd_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xfa9a1ef2 ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x283b6301 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x41b13841 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xaeda2758 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xc811f584 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xcfd5143b spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x00cabed2 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x16a8a069 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x985bc4cc dw_spi_xfer_done +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xcc1668af dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xe556a025 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x25630322 ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x249cb5fd uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0x531cd172 uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0xe0545bd4 __uio_register_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x2b646aa8 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xd71fae3a usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0x009d605a usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0xa01c82eb usb_gen_phy_init +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0xfc6de52f usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x014262d3 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0d18540e usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x12896691 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 0x1c6f1fdc usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x225939be usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x251a0c19 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x274c6c75 usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4f6bde73 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4fe5a512 usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8922fcaa usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x895a07da usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x913a69c8 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9b87dad7 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9c9cffca usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9f382ddf usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb24ad611 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb73783b1 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xbe225f80 fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc2b9e713 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd2989c5d usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf6db5f03 usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xfb551a78 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x025822c7 rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x0bd816f0 wa_process_errored_transfers_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x122f15ac wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x1f2131ef wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x60614065 wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x773aac06 __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x9ffcf1df wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xe9fd95c4 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0179d138 wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0b233bef wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x1019d4a4 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x16deb6d3 wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x1f045a2f wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x437ffe4a wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x4d4bdb8a __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f1f203e wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x8264c681 wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x828d2040 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x869e1117 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc437bb78 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xd743c8c5 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf0d4093e 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 0x0e951e2a i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x3b5334cf i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xc81f2420 i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x40d183ce umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x58274e76 umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x61dc0db6 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xc1398bac umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xe81921a8 __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xefd45522 umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xf535def1 umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xf56aadc2 umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0141ebf1 uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x05c7fda5 uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0ac2fd5e uwb_pal_init +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 0x13439938 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x16959387 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x31cc31c6 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x34d2d623 uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x46ec659e uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4ddd695a uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4ef84267 uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5cff632f __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5ff2bb53 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x62a6c050 uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6e9f51fb uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6f51738d uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x717a7443 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x729fd5f5 uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x76594947 uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7706a22b uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x771b823b uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x816b9e92 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8259f249 uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x873308f5 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x880d6e8f uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9a4acd94 uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9d9720d8 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9fcac3d1 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa5e4a13e uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xac97316b uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb0274fa8 uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb1a577ae uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbc2e19f5 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbf9c41b8 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc01705d5 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc4781db7 uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd5d042d2 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd9e83ac3 uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdad87a37 uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe4654d06 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/whci 0x03496e2d whci_wait_for +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0271574c vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0735e4e8 vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0ba2fae9 vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1f5adec0 vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2acc82f5 vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x32d398df vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3785a6f2 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3cad34b6 vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x42dc47d8 vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x44563ef9 vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4f9cb8f3 vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x58d6f1af vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x59e26837 vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5d1a5621 vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5f3b6f66 vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x77ca30a3 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7aed87b9 vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x84ac43d8 vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x93cecf44 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb0f81e37 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb9756665 vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc0cb3c2f vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc51e1761 vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc7b9d769 vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xcd42be42 vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd0e8d6f2 vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd7889fc5 vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd80c1469 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xde92c9c6 vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xeaef38c8 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x02b68bde auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x16a9a1f5 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x17f1af99 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x1eeac6e8 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x757b672b auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x90361d15 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xc7c7d02b auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xe2c1fab7 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xec58a70b auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xf81ad427 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x5ea382aa ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x82670cdf ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x857f4cfd ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x8a58a987 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x9d288928 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xcaa515b3 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xd6b6e138 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/fb_ddc 0x9f2f8ef9 fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0x70313c1e fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0xb77cf138 fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0x4ac6bb76 sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0xc7525c44 sis_free_new +EXPORT_SYMBOL_GPL drivers/w1/wire 0x082a908c w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x3f550946 w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x53527f2d w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7e453feb w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0xb16d4306 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xbb6a7b0e w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xbf3dc2e4 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xd9d1591e w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0xeebfa324 w1_read_block +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x18bc82a2 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x28f2aa36 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xba8f912b 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 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x2a6edcfb nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x8d114283 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x9106d9b7 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xaedb48db nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xbca0fa41 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xcbe129c7 locks_start_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xe7f6e099 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xf8a10735 locks_in_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xfc8f75bb nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x07967b20 nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x088ad5ba nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0970ba1d nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x102e3567 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x11965231 nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x11a69f67 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1257c2e2 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1375135c nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x13eda386 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x140985e7 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x14a3782b nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x163597dd nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x177e5605 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x17ad24d6 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x180fdc5f nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1e94fe24 nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x212b8dc8 nfs_initiate_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2718080c nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2b37b636 nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2dc74bd8 nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x306b9be2 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x307ab9cc nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x329f4cc6 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x342c6bc2 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x34593a02 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3b8a1932 nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3c2bccf3 nfs_may_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 0x426f4f4c nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x486497e5 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x49e3d677 nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cd12591 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4f03fa47 nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4febb506 nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51fa7a8c nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x552aef6d nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x57b58d82 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x58be50e6 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5a78c60c nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5d6f99d9 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e4264eb nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x60b20f35 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6361e635 nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x672cad29 get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x697743e4 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6d51a6d3 nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x71611b4e nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7204d415 nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x765d9f2d unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x76bb6a30 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x780febb8 nfs_writehdr_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7a5ea8a2 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7aa831f9 nfs_writedata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7b347726 nfs_pageio_add_request +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c9722ba nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7e223a10 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x81e2d77c nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x81fa5b9c alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x84a1c1c0 nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x87be48bd nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x87ebbeac nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x89bc5a64 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8c58c257 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8db0f07d nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8dedd971 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8fde16db nfs_pageio_init_read +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 0x934833b3 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x961bc28c nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9686692c nfs_put_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9b07c81c nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9e526d84 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9e8001c9 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9fc64f0a nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa23bab28 nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa5269336 nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa53137a7 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa89eac0f nfs_submount +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 0xab677f5d nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb463bb00 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb61580ce nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb62a57f4 nfs_writehdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb79d54f3 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb9bb7fd0 nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbc321e6f nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbcccf985 nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc350f630 nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc3b54721 nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5a9dad6 nfs_readdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc773e903 nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc7740bea nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc7c4eb19 nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc7f285d0 nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc988cec4 nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcab42447 nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcabcdb2c nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcad0a8d1 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcbb75735 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd018687d nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd02cab4b nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd243b13f nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd5fd3b9d nfs_readhdr_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd6192cf6 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd65efc66 nfs_pageio_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd66c7489 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd759043c nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd805fa54 nfs_setlease +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd88e34ea nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd8fc4dea nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdd7129ae nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdde19d73 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xde28f79f nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe0682c35 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe33e04ee nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe487b1ad nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe4bb50df nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe4f892c1 nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe7542bdb nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe85ebaf1 nfs_readhdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xebb2cc43 nfs_generic_pagein +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xed5821fe nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xee0c0ba0 nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf5f621b4 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf6ee7470 nfs_file_splice_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf72fec60 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf8d00ebd nfs_initiate_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf9a0fe70 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfa46dd06 nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7ee006 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfbe11077 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xff3ebafd nfs_generic_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xffbf8854 nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x06c36816 __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0c75473b pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0efdd84a pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x15cbc856 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1880ce46 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1d396101 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1faf52eb pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1ff7bdb5 nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x39b7506d nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3dfe6fe3 __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3ecd052b nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x45775070 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x45b0cb28 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x471de0a9 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4998671b nfs4_insert_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4bcbc703 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4dd32bc9 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5dcf6b6b nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5e140232 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5f43a238 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x71c1f1df pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x75bc9fb3 nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x78628fcd nfs4_proc_getdevicelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7a3440c9 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7edb6060 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8218064d nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8d54b136 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x90cdc34e nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9a96369f nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9fee2415 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa06276ad pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xaa2d64b9 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xab119db7 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xafa25693 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbb7d1244 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xca84472d pnfs_writehdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe0e5baa0 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe41fbd83 pnfs_readhdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe74f999e pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xedaa8eb6 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xef222828 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf62892c4 nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x1551ebb9 nfsacl_encode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x18fc0651 nfsacl_decode +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 0x4aafbd6f o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x7bed970c o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x81a17396 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x88c35bb1 o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa82a8645 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xb20c2442 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbaeb4700 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc3679d7b o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xcc731b0b 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 0xdcc92cf9 o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xdd488a8b o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf56c2017 mlog_not_bits +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x16fcd5dd dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x57685e6a dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x638ad66b dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7285ec47 dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xb62c3bcc dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xb6c28079 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x025e2d69 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0562c415 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x16b2e575 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x1e61bffd ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x5469ce31 ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x5d535b65 ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x7083dbd5 ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x89502fe7 ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xb4bd060c ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbf9838ad ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xdc823ea4 ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe2bd47db ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe417d940 ocfs2_dlm_lvb +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 0x11ce8958 notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xde44ed21 notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x1803a6ed raid6_2data_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xe4b051cf raid6_datap_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xfdfcb8cb 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/802/garp 0x302f31da garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0x67df3061 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x74715c3c garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x76dfc287 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x8d62b263 garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0xaf0b44fe garp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0x18694ee4 mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x297b2bcc mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x49cd6f02 mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0x7afbf5aa mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x9bdf1b07 mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0xc2e2c89f mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/stp 0x7393109e stp_proto_unregister +EXPORT_SYMBOL_GPL net/802/stp 0x8f086865 stp_proto_register +EXPORT_SYMBOL_GPL net/9p/9pnet 0x62600380 p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/9p/9pnet 0xbaf7e252 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 0x6224baf4 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 0xbeb4b441 bt_debugfs +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0a23986b dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d4914d9 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1fbcffdc dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2263434b dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0x25247d72 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2890b3f2 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2b894b04 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2cdadeaf dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2e12636c dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2e45f168 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x30a6d9bb dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x402d6959 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x41d63df1 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x44f04f68 dccp_death_row +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 0x5f74a26c dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x666cd0f0 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x76edf333 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x780366f3 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x79e4c79f dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x833308ac dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8732ed5b dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x92368b5d dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x98314881 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa1b1275e compat_dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb495f3e7 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb63622ae dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb819b2f7 dccp_insert_option_elapsed_time +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc0b7b890 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc587c1d3 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc9d4b5ca compat_dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xcd464379 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xcf7586d4 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd126e960 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdd342c72 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe5a1961c dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf2089ea9 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf3017e21 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf8a904d9 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x3b35bacf dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x7408256f dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x969fc748 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x98af56ea dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xc57d2bed dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xd05ba530 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x596e1eba register_switch_driver +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x94942272 unregister_switch_driver +EXPORT_SYMBOL_GPL net/ipv4/gre 0x0fdd2c44 gre_cisco_unregister +EXPORT_SYMBOL_GPL net/ipv4/gre 0xa9fef687 gre_build_header +EXPORT_SYMBOL_GPL net/ipv4/gre 0xdc4d0e2e gre_cisco_register +EXPORT_SYMBOL_GPL net/ipv4/gre 0xe288cb7f gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xe80e8b87 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x599a9d83 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x67c1ff9a inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x8365d7f3 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x94305181 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xadadc09d inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xf90af6f5 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x1c41b6e7 ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x346adf3f ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x44bcb03d ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x621f09be ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x6c7dd62b ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x6ee796ea ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x700d7041 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x8017fa9f ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x8a43a20e ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x93436ce4 ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xbed62496 ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xc3598ac5 ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xd5520434 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xfce25de3 ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x6f110de8 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x16801e5f ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0x6d40a921 need_ipv4_conntrack +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xf51dea6d nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x17e1a07d tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x1c9cdfe6 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x1d6aeac4 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x7a50df6a tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xc8ed5992 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/xfrm4_mode_tunnel 0x42da281e xfrm4_mode_tunnel_input_deregister +EXPORT_SYMBOL_GPL net/ipv4/xfrm4_mode_tunnel 0xe2be14b2 xfrm4_mode_tunnel_input_register +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x26600487 ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x512e4678 ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x6086f140 ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x84e05529 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xa9fd8477 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0xcc6b73fb 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 0xc42edd3d nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/xfrm6_mode_tunnel 0x5fce44e2 xfrm6_mode_tunnel_input_register +EXPORT_SYMBOL_GPL net/ipv6/xfrm6_mode_tunnel 0x930a99ce xfrm6_mode_tunnel_input_deregister +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x1c18ae4a l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3321bb2a l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x36204c66 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x399f8872 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3f0531da l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x49b62d0c l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x501aefe8 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x8280ca48 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x97d5c7ed l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa3c25950 l2tp_tunnel_sock_put +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa98a497b l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xbae44583 l2tp_tunnel_sock_lookup +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xbb719276 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd06ec3de l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd1c0bd40 __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe477ca53 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe7d02701 l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0xcec00a36 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3663a36d ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x4bf42798 ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5672cc4e ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5d38f601 ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x6350bdff ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x72441899 ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x7afde886 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x7cb5aaac ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8b9da1f1 ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x9b0c7316 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x9cd7ffc8 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xbb16f3fd ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc2c9334c ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xe82120f5 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf2a0eb36 ieee80211_iterate_active_interfaces +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x2244b4e5 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x344e5554 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x39fd021c ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x3c129f1b ip_set_nfnl_get +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x3e76e94c ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x3f42acde ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x52f14f11 ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x60cb7c45 ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x8642b550 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x86e4128b ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9716c544 ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xb8897d5c ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xbb61e07d ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe1b1c3f1 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xef13ebbe ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf3641155 ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf3b4d4ae ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xff605f01 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x15e1e282 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x48b5abe1 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x7ae39b4b ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xe0d43785 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x01f84db5 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x01fb29b5 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0239c678 nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x05652466 nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0a07ab3e nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0aeeba64 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0c4864fc nf_conntrack_tmpl_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x154ef083 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1588458e nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1bdefde8 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1d0f3b27 nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2069abfb nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2090e9dc nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2429f824 nf_ct_l3proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2b688355 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2e13674f __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2fb128c9 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x33cd4b37 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3467918a nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x34f0747e nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x354db105 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x375346e4 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3afd9486 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3cc26971 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x427b7c4e nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x42b69f03 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x44e7f394 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4a4e8517 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4b0a9d41 nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4ba07573 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5320ef2c nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x537e61ab nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x53e93801 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5cfc1be3 __nf_conntrack_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x630e0f55 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x67a02f71 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x68bbb7b4 nf_ct_l4proto_pernet_unregister +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 0x6f855de2 nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6fff8279 nf_conntrack_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x706fbc8e nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x73196822 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7c07cfcb __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7ce039e2 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x820bebc8 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x85a20f40 nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8c2a623c nf_nat_seq_adjust_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8fd2d4a5 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9008c7b8 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x911694f5 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x92e96b93 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x94d6b766 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9ee33ba0 nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa30cd308 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa3484aec nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa835673f nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa9c17a02 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xabf3b281 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb1bed62a nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb1f7b583 nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xba3b0ff1 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbffc5778 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc171db87 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc33f8b7b nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd0eb5cec nf_conntrack_flush_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd383a70f nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd7d1c08f nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd9d6c1ba nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xda2c9141 nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe5a386be nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe86d320d nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xed7cac88 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xee0d1b9b nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xee58a975 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xefba2df7 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf2b2e0ec nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf32260b2 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf7a48860 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf8396da1 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf93066a2 nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfe8a1db7 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x564ab4d7 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x7c627fd7 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x068c6268 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x00c40353 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x1a46a921 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x1dae114a set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x52098ec6 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x692c472a nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x6f5f3fc5 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x78512eb2 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x92703ced nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xed0e0b44 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xf7d5a88e set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x04c598e8 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x15798408 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x39596fc4 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xae1d993a nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xc91ac724 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x363cd448 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x98d3b66f nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x075bca6b ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x1c5c1f8f ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x3d1fe895 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x6ca163f0 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xa605a86a nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xeb257d2c ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xf36c901e ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x88e2238d nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x139c58b0 nf_nat_tftp_hook +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 0x31c8472c nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x71e7834a nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x8f3ac104 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x91f7ebc0 nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x94a1ca2f nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xb636d401 __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xd8fb30f7 nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xfb24d580 nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x11a006b5 synproxy_check_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x1a4647ef synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x37d9dfc9 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 0x026b5a2f nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0fda3c99 nft_validate_output_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x19818c11 nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x36ddcee0 nft_do_chain_pktinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3d49dab7 nft_validate_input_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x57dab12e nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5af92849 nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x67a09490 nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x69163565 nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6ae32c26 nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x9c8189b9 nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa0ed4fca nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc1b59f81 nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd0e33e79 nft_validate_data_load +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xdb39476c nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x4b7d1186 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x677290e3 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x93513f1c nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xa36732f5 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xeb5dc836 nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xf03193a5 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xf7c2e720 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x1a31212f nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x624245dc nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x11ad31fe xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x161d1417 xt_compat_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1728d5a8 xt_compat_match_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x180c9eef xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x24c8e482 xt_copy_counters_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x4a5c51ec xt_compat_target_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x50901a8b xt_compat_match_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 0x6aa279a7 xt_compat_target_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6fc7f8fe xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7121b3c3 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9b91e75c xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa6086640 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa9ad303f xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xacc7c1ea xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xad04dfb0 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbc1589fe xt_compat_match_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbd300ef8 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc5838ed9 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc9f78062 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd1517be9 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 0xfae40791 xt_compat_target_to_user +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 0x06cad999 nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xc55d2308 nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xc5c71419 nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x01f322ef rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x09b0178e rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x123655b9 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x277ebe87 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x27f02ca8 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 0x3882b70d rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x4087179e rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x4f7be82e rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x540d39e1 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x5da25e88 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x62c6eff3 rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x693fb49d rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x6b8a94b0 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x7b714c1a rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x7bc62829 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x86b4f2fd rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x969bf56a rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0x96f50ef8 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x99b76b1c rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x9f229e66 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0xb6456e96 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xbe13598a rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xdd3c6f2f rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0xef013a7f rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x7ecad1e0 rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x9312aae4 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 0x3894a497 gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8b1a021e 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 0xb5d62f5a 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 0x0181855b rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0238013e rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x03767e54 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x042a2766 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x04a5436a _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05e3a12d svc_exit_thread +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 0x089016aa rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x08b98be7 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0922fb94 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x09e0dfe5 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0a769514 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0c35e28f svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0faba1fb cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0ff86426 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x12e1193f rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x12f6d137 rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x141ca0c7 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x15df6efe xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1cd19b71 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e41a20f rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f2a9970 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f8992a9 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x21e8dd4e xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2204c0c9 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2394f37e xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x23ddbfec svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x26547658 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x27d039c3 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x27d487a7 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x28eaf06e rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x29941886 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2a08db29 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2b9591f1 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2cce3cbc svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x30703c2b svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3308f737 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x34aea0ce rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x34dadc49 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x35c18efe svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3689bf1e cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x37a26777 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x39b0ee0d sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3a8f90f0 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3bdb683e xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3dd4fcd2 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3e0137d7 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x405179c5 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4166e8d0 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x41818cdb svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4496fe75 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x45c77d00 rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x471c25ea rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x47e6123c sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b56908b xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d3d7c07 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4dbd354b svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5043fc16 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x50cf9cf4 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x50d4d555 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x50ff8b46 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5427a785 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x549562a7 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5671b1e8 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5672d955 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x59bba33e svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5ac0e51d gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5cabb49c svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5d34fbd8 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x626b0412 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6599771a xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65ddf94c rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x66bdf272 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x66dcb2a7 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x68185878 rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x68359c99 rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x68cb4d26 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x68f12592 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a22f313 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6ae3bc85 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6b3948f8 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6bee3142 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6c3fd0b0 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d369da5 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x710f2b8b svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7120d40d bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x72259db9 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x728b43fb auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x732c1ba9 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x74b2bab8 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x78e943ce rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a560f9a rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c5e0b7e svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7dd80c88 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ddac645 rpc_peeraddr2str +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 0x80be1417 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x817456f3 xs_swapper +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x81b0afec xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x81f4af38 svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83ac8d7e svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83ba7513 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x84364519 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x84916033 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x84938c1c xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8531acab xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x861f60ee sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x86d92158 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87094cfd rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x89662ac2 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a83a301 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8aef5c56 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8bbeea97 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8f998599 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8fa9f211 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x911ce891 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x93afd2a8 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x95ae0465 rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x97287ab0 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x976747c3 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x97e552bf xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98fbf5e7 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x99e054e7 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a062e9a rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ae349d3 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9fa66d7b xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ff1cb25 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa346e6a4 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa49388d1 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa637c538 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaa614483 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xac81aba7 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xad18896f rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf6ab95f csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xafc5efe4 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb11d4d19 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb2766444 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb46a81b3 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb57722b9 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb5aec878 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9cc0ac8 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbab758ba rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbba2781b xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbfe37292 rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbfe3924c rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc1927601 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3d70b4b xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc70fde7c rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc97b38aa xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xca5dd6d1 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb5ede1d rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcd1fcdc3 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcdefdbe7 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xceb6992f rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcfd3db26 rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd02b798a xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd1dce834 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd3a8a2e3 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd64ecec1 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7650966 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd84a7e01 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda115ca3 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdc4bb2f5 rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd214677 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd39b34d xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xded71ffb xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdf49c879 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe42bfc63 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe541d6d9 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe6cc8a07 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe7a119ef xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe8256721 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xea52a7d6 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb8401b3 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xed156cfd rpc_killall_tasks +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 0xf15eac45 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf16cc70a rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf19820f1 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf1f74169 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf26525b4 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf26c204e cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf30b3b4c rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf52c9067 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf797e30a rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf8336dfb xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa8ce958 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfbae7015 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfee38d64 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfff6cf65 rpc_restart_call_prepare +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 0x177ec96d __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x22f9c477 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x22faebfe vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x28114d93 vsock_remove_bound +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 0x755a98e1 vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x80414ba9 vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x8d30c5d8 vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x970b77bc vsock_pending_work +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x970fa8ec vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x9c34e208 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xb880594e vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe05472ce __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf6bb04ab vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xfe8f5aab vsock_remove_pending +EXPORT_SYMBOL_GPL net/wimax/wimax 0x0094f3dd wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x036a52b2 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x085bb4e2 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0x0bf53ef3 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x130459ed wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x261d1c2b wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x3bb1f26b wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x4e83d49b wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x7108d78d wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x788bd5e4 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x8b221d1d wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xd1a57da8 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0xe53607ea wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x0fafebc4 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x13e09d99 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x4b450846 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x4c96b377 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x55a49169 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x75e90e16 cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x78863e11 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x7fcdab91 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x819295e1 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xc0f7b5b2 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xc67f2cb0 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00778770 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x056bb269 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0a575945 xfrm_count_pfkey_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0b9e5852 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x74e1a843 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7c30b8c7 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x92dbc6c1 xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xbc8b0f41 xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xce7a55c1 xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xe122af95 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x4b976da9 ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x5243f532 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x53e2c9a4 ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x69872308 ipcomp_output +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x00000000 compat_alloc_user_space +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x00000000 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sigset_from_compat +EXPORT_SYMBOL_GPL vmlinux 0x00000000 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x00166721 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x004f7078 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x006bc072 hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00724428 of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x00b43f79 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x00c4dc87 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x00f6e595 ide_host_remove +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x0129bc5d spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x015683b4 dma_buf_export_named +EXPORT_SYMBOL_GPL vmlinux 0x01667ee0 rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x018c15b7 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x01982c58 rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x019b9c82 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x01dcd2e8 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x02146d52 pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x021ebfda btree_update +EXPORT_SYMBOL_GPL vmlinux 0x02398ec5 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x0251ceea srp_remove_host +EXPORT_SYMBOL_GPL vmlinux 0x0297fca0 tpm_show_owned +EXPORT_SYMBOL_GPL vmlinux 0x029a4c81 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0x02b9fe6f of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x02cad481 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x02ea0d0c regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x0305f8b1 smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x036503c5 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x037a9e2d aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x037b7270 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x03bf1d5e gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x03d659e1 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03e4b9c0 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x03e8e4fc rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x03f8e130 inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x0430d886 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x0440b4ea platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x04486e88 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x044937e2 ide_device_get +EXPORT_SYMBOL_GPL vmlinux 0x04576a3d iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x045a0da7 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x04787c66 napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x047cbe94 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0x048edf75 ide_host_free +EXPORT_SYMBOL_GPL vmlinux 0x04a6fa36 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x04ae58db crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04ca7a51 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x04d4103c rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x04df8fbc lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0x0532385a pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x053494cb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x05667633 of_irq_parse_pci +EXPORT_SYMBOL_GPL vmlinux 0x057e39e3 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x05805373 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x058afff8 thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05a54fd1 cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x05aec0c7 ata_sas_port_async_resume +EXPORT_SYMBOL_GPL vmlinux 0x05bf3a38 regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x05dfb1bb remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x061a29e4 ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0x061dee59 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x0630f215 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x066f5f43 ide_pci_check_simplex +EXPORT_SYMBOL_GPL vmlinux 0x067340f7 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x068bf92c __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x06ac6e98 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x06bb1f2f fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x06cf4bdb pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x06f3ba2f ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x06f441b6 hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x07173d2f pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x071de40f regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x07381ab2 cpu_remove_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x0753e88e __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x07580874 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0795a0f8 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b37e36 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07d0d31f __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x07dc063a sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x07f51fb1 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x07f93164 devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x08189c32 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x08432797 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x086bc286 tpm_open +EXPORT_SYMBOL_GPL vmlinux 0x087cb579 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x088bfa7e cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x089081e5 ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x08bc0870 compat_put_timespec +EXPORT_SYMBOL_GPL vmlinux 0x08ce7f31 ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x090d78f5 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x091c824a machine_power_off +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x09469482 kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x096122a8 unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x097cb3c0 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x0983d8d3 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x098bcd69 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x098cb686 user_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x0a51ae5b virq_to_hw +EXPORT_SYMBOL_GPL vmlinux 0x0a6b6b85 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x0a87feb3 fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0a8d7b7f fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x0a9fd3c5 gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x0aa23c34 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0x0acc204e pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x0ade87ef rtc_set_mmss +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b0dce7e wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x0b16348c get_device +EXPORT_SYMBOL_GPL vmlinux 0x0b5fc33e crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x0b8853ac console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x0b9ab7d6 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x0bae62b1 ktime_get_monotonic_offset +EXPORT_SYMBOL_GPL vmlinux 0x0bc6f5b5 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0x0bda2f7d usb_string +EXPORT_SYMBOL_GPL vmlinux 0x0be10de1 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x0bf92292 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0bfd5f0d disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x0c06a3ec crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c0ccf8e ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c2ec61b crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x0c48b2a2 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x0c61968a __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x0c67e17b crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x0c6fdb11 lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cc46684 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x0cce0227 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x0ccea8fa dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x0cef5b03 css_next_descendant_pre +EXPORT_SYMBOL_GPL vmlinux 0x0d04ac79 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0x0d08d943 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x0d616f29 usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x0d648572 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x0d73190b pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0x0d79acf2 percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0x0d8391bb __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x0d8c6629 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x0dabc2c1 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x0dd5ae60 proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0de06988 cpu_first_thread_of_core +EXPORT_SYMBOL_GPL vmlinux 0x0e0ec755 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x0e0f8fd2 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x0e1de651 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x0e2802dc pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x0e2b82d7 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x0e885f12 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x0ea40217 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0x0ea98707 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x0ecf823a static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x0ed9302e percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0x0ee83917 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL vmlinux 0x0ef1207a blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x0f032dba of_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x0f048efc dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x0f0b34c2 ide_set_dma_mode +EXPORT_SYMBOL_GPL vmlinux 0x0f18fc63 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x0f276d07 tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0x0f3bfe65 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x0f4941d1 ide_do_test_unit_ready +EXPORT_SYMBOL_GPL vmlinux 0x0f5131ff page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f75a618 default_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x0f8c96f1 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x0fa5d559 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x0fa921f5 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x0faa6ead securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x0faadfda usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x0fe112dc of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x0ffd82ef __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x100bec75 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x1054777b bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1058594e of_pci_msi_chip_remove +EXPORT_SYMBOL_GPL vmlinux 0x1059d176 sec_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x106080e5 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x1068212f dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x1086a531 ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x108b38e2 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x10adfd7a mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x10b770cf spi_async +EXPORT_SYMBOL_GPL vmlinux 0x10c3ca88 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x10eab0cc ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x10fcb2ef pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x1114011d threads_shift +EXPORT_SYMBOL_GPL vmlinux 0x111e7c0d usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x1161bbae blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x11a234dc usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x11a66238 rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x11b8f006 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x11f993d9 regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x121cd964 of_pci_range_parser_one +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1226a995 usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x123b49c2 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x12420460 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x1255795a ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x1256c4cc ide_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x12618f89 __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x126af42e devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0x126ee16b sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x127477f9 dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x12a42428 tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x12b555ee device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x12c529af usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x133e50e3 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x13556f60 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x136a4ee6 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x1389da84 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0x13962b15 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0x1396a4e5 cpu_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13c506a4 ide_pci_set_master +EXPORT_SYMBOL_GPL vmlinux 0x13ce87e8 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0x13e5ea13 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x1416c8d6 put_compat_timeval +EXPORT_SYMBOL_GPL vmlinux 0x141884d8 ide_write_devctl +EXPORT_SYMBOL_GPL vmlinux 0x1429a6ce sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x143adad6 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x147e1f0b irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0x14801fae anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x149e2382 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x14afbf11 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x14bcfd8d mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x14c228de get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0x14d78847 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x14ffe897 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x15026a32 snmp_mib_init +EXPORT_SYMBOL_GPL vmlinux 0x150cc4e8 regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x150fb63c simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x152368e8 ide_device_put +EXPORT_SYMBOL_GPL vmlinux 0x1531e81f md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x1580be2e led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x1596776f task_current_syscall +EXPORT_SYMBOL_GPL vmlinux 0x15b9de55 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x15bb1afa usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x15c21e5e nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x15e6c4ac ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x16245ca0 tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x163e21d2 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x16a39c1c power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x16bc25c9 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x16c8c3d4 __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x16d901af fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x16da5ff7 ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x16e342a0 clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x1743fef3 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x174baea6 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x174ccb0c fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x1753a32f hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x17a6b534 regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x17bad48f evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0x180be260 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x182364c5 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x183501d2 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x1842872c debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x18617185 thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x187d4f4e skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0x189f874d powernv_get_random_long +EXPORT_SYMBOL_GPL vmlinux 0x18a1aabb crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x18d04258 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x18d5ac9d alarm_init +EXPORT_SYMBOL_GPL vmlinux 0x18f1740c i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x18f3017c __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x1906283d device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19581303 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x196b9bbe pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0x198e1feb __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x1999e511 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19b384a5 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19c85327 netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0x19feab8c register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x1a06249e pcibios_add_pci_devices +EXPORT_SYMBOL_GPL vmlinux 0x1a082d69 max77693_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x1a316946 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x1a323362 __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x1a33514f sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x1a6c6b02 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x1a6dc787 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x1a8c5907 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x1ac79dde ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x1acd3869 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1ae27a89 rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x1b16c8b6 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x1b4b5b0e tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x1b62cca3 ide_issue_pc +EXPORT_SYMBOL_GPL vmlinux 0x1b83d038 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x1b87b295 rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x1b9664d1 __destroy_context +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1b9b63ec ide_unregister_region +EXPORT_SYMBOL_GPL vmlinux 0x1ba9835d regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x1bd06aab cpufreq_frequency_table_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x1bfca2f0 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x1c1215bd threads_core_mask +EXPORT_SYMBOL_GPL vmlinux 0x1c1a2f72 ide_do_start_stop +EXPORT_SYMBOL_GPL vmlinux 0x1c2a88bd md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x1c31fb9e tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c7f291b gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1ca6c8e8 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x1ca74058 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x1cadd152 sk_unattached_filter_destroy +EXPORT_SYMBOL_GPL vmlinux 0x1cb791d0 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x1cccaa76 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x1ceefd71 unregister_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0x1cf82066 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x1d11f5ae class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x1d406d97 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x1d4afffe inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d6241eb vtime_common_account_irq_enter +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d7c4f0f pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x1de83a12 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x1e07419f ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x1e23feee pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x1e325bf0 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x1e37cdc0 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e8fac8e wireless_nlevent_flush +EXPORT_SYMBOL_GPL vmlinux 0x1e908675 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x1eb1594f gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ec8207f disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x1ede1bcb irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x1ef32372 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x1f10b54c pcibios_map_io_space +EXPORT_SYMBOL_GPL vmlinux 0x1f1bb52b unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x1f1da946 ide_pci_init_one +EXPORT_SYMBOL_GPL vmlinux 0x1f256c48 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x1f53ad08 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x1f5c116f wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1fc5dfdb ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x1fcece42 inet_twdr_twcal_tick +EXPORT_SYMBOL_GPL vmlinux 0x1fde53cd wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x1ffa3abb __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x1ffb33e6 serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x20003086 cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0x200e7b61 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x200f5c73 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x201090d9 devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x20184485 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x201f8cbe devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x2054f6c2 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x2060073e wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x2068de94 blkdev_aio_write +EXPORT_SYMBOL_GPL vmlinux 0x20986380 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x20a19b7e pci_sriov_migration +EXPORT_SYMBOL_GPL vmlinux 0x20bc3470 orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x20cf7096 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x20da1bb2 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x211850f5 htab_hash_mask +EXPORT_SYMBOL_GPL vmlinux 0x2139b3d0 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x21755190 rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x2192f802 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x2196d8fa ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x21a01e76 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x21d36a03 kvm_hypercall +EXPORT_SYMBOL_GPL vmlinux 0x21ebf358 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x22179203 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x223da020 usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x22422b24 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x227fe481 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x22a07aa8 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x22c758f1 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x22e9498b spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x2301c290 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x233ff936 crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0x234241c6 tpm_read +EXPORT_SYMBOL_GPL vmlinux 0x23437714 device_del +EXPORT_SYMBOL_GPL vmlinux 0x235782e9 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x2371e7ee platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x237840f0 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x2387694c sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x2389a87e sec_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x23aaf044 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x23b3ad28 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x23d0ca6e napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0x23ed7a2b ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x23f3c251 __put_net +EXPORT_SYMBOL_GPL vmlinux 0x23fc87d0 ide_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x24011e14 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x242f14e0 pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x243951db inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x2447533c ktime_get_real +EXPORT_SYMBOL_GPL vmlinux 0x247b255f ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x248477e8 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x24a25bcd crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24b8f843 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x24cda041 ide_vlb_clk +EXPORT_SYMBOL_GPL vmlinux 0x24db33e6 dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x25009806 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0x252025cc of_pci_find_msi_chip_by_node +EXPORT_SYMBOL_GPL vmlinux 0x253334cc rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0x2537705e simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x254152fb serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x2550bc7b __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0x255c2cb8 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x256bc093 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0x258a1b19 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x25a603ad debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x25a745eb regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x25e530b3 stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0x2604493d rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0x260c6f29 tpm_show_enabled +EXPORT_SYMBOL_GPL vmlinux 0x26252a9a blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x263d6b58 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x26483811 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x2690f40a usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26bed1e7 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x26c0360c xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26d905a3 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x26f4b05c wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x26f77915 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x2707fa06 srp_attach_transport +EXPORT_SYMBOL_GPL vmlinux 0x270e44d4 tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x272645f3 percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0x272aa347 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x27344e8d devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0x274b3768 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2755cef5 ide_read_bcount_and_ireason +EXPORT_SYMBOL_GPL vmlinux 0x27585358 ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x2776affd blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x2781b77c wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x27aef225 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x27c0c4be eventfd_ctx_read +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 0x28115dab usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x28385b3f blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x284b21d2 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x2852bf79 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x287d0294 of_console_check +EXPORT_SYMBOL_GPL vmlinux 0x28a903c8 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0x28c2d63c i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x28c880d3 devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x28d93eb2 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x28edefa7 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x28f4de76 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x290893aa get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x290eaa36 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x291b9021 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0x291e526a extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0x2930ae54 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x293d35ae wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x29670b42 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x297ac641 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x29b407c3 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x29cab4e4 uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x29d23084 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x29dc936a xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x29e68076 driver_find +EXPORT_SYMBOL_GPL vmlinux 0x2a0362bf __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x2a1998ea class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x2a2831fd clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x2a628068 regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a67f7da stop_machine +EXPORT_SYMBOL_GPL vmlinux 0x2a9335b7 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x2acdc9c1 put_device +EXPORT_SYMBOL_GPL vmlinux 0x2ae239bc vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x2ae6f051 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x2aeecfd8 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x2b1179ca sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x2b213f2b usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x2b5c303b smp_send_reschedule +EXPORT_SYMBOL_GPL vmlinux 0x2b5ffba9 pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x2b7a6de8 syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x2b7a73a9 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x2b81b483 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x2b8d90c0 kobj_completion_del_and_wait +EXPORT_SYMBOL_GPL vmlinux 0x2bbab25a blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c262a06 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x2c323864 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x2c3508c8 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x2c5f397d ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0x2c640774 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x2c76f535 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x2c7ba6ff crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c7fac6f ide_dma_sff_read_status +EXPORT_SYMBOL_GPL vmlinux 0x2c97f8a2 of_reconfig_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2ccfe18e scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2d17a0e1 cgroup_taskset_size +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d540904 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x2d56d0e7 tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d5ebe37 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x2d659e69 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x2dba276a __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0x2dc5a6d1 btree_last +EXPORT_SYMBOL_GPL vmlinux 0x2dd42c1b devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0x2de95768 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x2e12e13f bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x2e1da9fb probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x2e22b8e5 thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e45e488 rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x2e500d90 extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2e534a84 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x2e60761e __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x2e68cc95 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x2e73b464 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x2e769caa sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x2e79c486 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2e7ee6b3 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x2eacbdc5 rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ecfeb82 of_node_to_nid +EXPORT_SYMBOL_GPL vmlinux 0x2ee9a46a __online_page_set_limits +EXPORT_SYMBOL_GPL vmlinux 0x2eeba1d1 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f617396 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x2f72a30a pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x2f797ce4 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x2fa26ffd stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0x2fd032f2 devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2fd60f84 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x2ff5fa27 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x2ffb5ff7 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x3006b6f5 of_pci_get_devfn +EXPORT_SYMBOL_GPL vmlinux 0x302c9a03 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x304adb3a dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x304d3ab3 pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x30727daf sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x308b733a getboottime +EXPORT_SYMBOL_GPL vmlinux 0x30d39141 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x30df59de sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x310a1ab5 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x3154dc4e dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x31859993 of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0x3193ddb4 wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0x31b48e72 udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31ec3ef0 rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0x321529da serial8250_tx_dma +EXPORT_SYMBOL_GPL vmlinux 0x321bdbb1 compat_get_timeval +EXPORT_SYMBOL_GPL vmlinux 0x3231fd96 ide_set_media_lock +EXPORT_SYMBOL_GPL vmlinux 0x3239f9e2 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x3256ca45 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x329bbbde timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0x32b31a8c ktime_get_boottime +EXPORT_SYMBOL_GPL vmlinux 0x32bd470e relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x32bded08 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32c80375 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x32cc94ba debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x32db4951 aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x32db6e25 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x32fd447a monotonic_to_bootbased +EXPORT_SYMBOL_GPL vmlinux 0x3333ae03 __ide_pci_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x335487ea skb_pull_rcsum +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 0x338c28d5 kick_process +EXPORT_SYMBOL_GPL vmlinux 0x338e7a6e relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x339a171a device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x33a94a45 of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x33b83086 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x33be1861 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x33c11ae1 regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0x33db7f44 init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x33f7ab15 get_compat_timespec +EXPORT_SYMBOL_GPL vmlinux 0x3449bd8f ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x3458015b crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x345a2146 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x3465fce6 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0x34686dae skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x347c684e unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x347eaf9a rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x348294df register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x34bf4200 ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x34c0e9d3 ata_sas_port_async_suspend +EXPORT_SYMBOL_GPL vmlinux 0x34db7cc4 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x34eb475e tpm_write +EXPORT_SYMBOL_GPL vmlinux 0x34f68227 apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x356ef2ca pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x3599059f usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x359c5f0c inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x35a14543 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x35c927d5 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0x35ce2909 verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x35eb3f4f sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0x35eeaa88 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x35f10f43 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x35f165f1 devm_reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x3626309b __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x363bbb80 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3663ece5 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x366b4ab1 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x368f1fea static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36a22e02 rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0x36e049c0 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x36e0d721 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x36e56162 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x36f63718 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0x3701d45e mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x370e47b8 da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x371f6fc2 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x3722d88a __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x374efeb4 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3751eaa7 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0x37658117 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x376c0032 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x378e5ad1 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x37b48662 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x38066c0e pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x382836c8 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x382e0083 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x383d0b6a mmput +EXPORT_SYMBOL_GPL vmlinux 0x3843b3dd ide_intr +EXPORT_SYMBOL_GPL vmlinux 0x3855e28f usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x3864827a rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x38878082 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x388e1f07 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x38a17dc9 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x38a3a10c devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x38b0ce87 usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0x38c3baa2 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0x38cb94da regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0x38cbe18e crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x38cc2535 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x38f0a257 alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x38f600c8 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x39099bfd eeh_add_device_tree_early +EXPORT_SYMBOL_GPL vmlinux 0x3910da63 ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x39235344 devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x392604e3 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x3959b090 balloon_devinfo_alloc +EXPORT_SYMBOL_GPL vmlinux 0x397ef9ad crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x3987728f crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x39baeed7 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x39c82e80 of_irq_parse_and_map_pci +EXPORT_SYMBOL_GPL vmlinux 0x3a01acbe screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a2b44c1 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a4fe07c __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a981a69 led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x3ad0e201 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x3ad82802 of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0x3adf51da crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x3b0253fa sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x3b1d0dc6 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x3b541b62 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x3b990096 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3b9986e9 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x3c1f0ab3 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x3c55bacd i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x3c7613b0 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x3c8d28cc of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3cb85101 transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x3cbe871f da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x3ccffec8 of_irq_parse_one +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cd95ae1 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x3cf69baf slice_get_unmapped_area +EXPORT_SYMBOL_GPL vmlinux 0x3cffff96 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d39b6ab fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x3d429d86 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x3d4afa8d driver_register +EXPORT_SYMBOL_GPL vmlinux 0x3d5c3968 dm_dispatch_request +EXPORT_SYMBOL_GPL vmlinux 0x3d64101b virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0x3d78001f rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0x3d940b08 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x3db1ffc3 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x3db7bbcc regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x3dc526a9 arizona_of_match +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dd94a63 yield_to +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3e15d116 tcp_reno_min_cwnd +EXPORT_SYMBOL_GPL vmlinux 0x3e186686 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x3e259239 smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x3e2a6f73 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x3e2e543d cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x3e2fa31f wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3e42b959 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x3e4c5b78 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x3e4ff768 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e7c0956 __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x3e87cbed virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0x3e971b8d regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x3ec3854a ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x3ee59ebc mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x3ef233b0 device_schedule_callback_owner +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3efd70e9 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3f02b62e rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0x3f10b75b extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3f3dccbd bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x3f89677f __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x3fb14423 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x3fb2bd8a irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0x3fbe1988 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x3fc72d3d __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x3fd59afa vtime_account_system +EXPORT_SYMBOL_GPL vmlinux 0x3fdbe45a power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x3fed30c0 __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x3fef7431 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x3ff049e7 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x3ff146e9 cgroup_add_cftypes +EXPORT_SYMBOL_GPL vmlinux 0x402dddcb wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x40369d6f smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x404e6dd7 cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x40a734ee generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x40a941a9 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40ca8198 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40d60842 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x40d8617a usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x40db991b net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x40e4b16e balloon_mapping_alloc +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x413d0ace sec_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x415aea2f regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x4170463c transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x4173275a devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x4185a1a0 ide_output_data +EXPORT_SYMBOL_GPL vmlinux 0x41cbccb6 ide_setting_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x41d81c5d of_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x41db947b pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x41e8b210 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x42249268 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x42290a85 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0x422e48c2 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x42387527 rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x423f6ccc ide_dma_setup +EXPORT_SYMBOL_GPL vmlinux 0x4240a69e srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x424c4b58 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4252fd63 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x42760fba kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x4281dc58 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x429dfc17 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x42df9da3 __add_pages +EXPORT_SYMBOL_GPL vmlinux 0x430e5257 of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0x431e1907 of_property_read_string_helper +EXPORT_SYMBOL_GPL vmlinux 0x43370bd8 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0x4352bf3c driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x437579d6 ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x437f9a75 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x438b0a68 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43a6c831 public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0x43ab178a ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x43b1bad1 nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x43b843de tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x43c63a4d skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0x43e480d2 tpm_remove_hardware +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x440f0cd4 split_page +EXPORT_SYMBOL_GPL vmlinux 0x4412e9f8 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x4416ee39 irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x4422f8e9 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x44404f11 kdb_register_repeat +EXPORT_SYMBOL_GPL vmlinux 0x447f967b fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x44891333 ide_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x448d75ab inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x450fb522 kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x4525dd88 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x45338b54 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x454c15ae __smp_call_function_single +EXPORT_SYMBOL_GPL vmlinux 0x455b9ea3 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x45885ab1 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x458dc014 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45c49fd6 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x45c61e9e alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0x45cc8628 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x460f55ed ide_release_dma_engine +EXPORT_SYMBOL_GPL vmlinux 0x460f7531 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x463b1975 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x465e8f03 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x46617f14 ide_port_scan +EXPORT_SYMBOL_GPL vmlinux 0x46627d6e debugfs_print_regs32 +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 0x46a1e490 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x46c31476 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x46d6c388 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x46df4e93 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4708de34 extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x471c9eef pci_pri_status +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x475bd679 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x477a6ec6 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x47934f95 tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x47a3b416 ping_bind +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47b21077 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x47d1325b __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x47e15f32 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x48096e32 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x4843b6e4 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x4860d2dd device_move +EXPORT_SYMBOL_GPL vmlinux 0x48a324a9 inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x48a6f13e fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0x48c6711f flush_fp_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x491d8f4b dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x493eb8eb serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0x497c2e98 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0x498d293a trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x499c270a sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x49b35994 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x4a12efd4 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x4a2043e3 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0x4a4c5b8c __rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x4a686468 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x4a90160e bprintf +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4ab16c2a usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x4ab3859e put_pid +EXPORT_SYMBOL_GPL vmlinux 0x4abdb835 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0x4acdd0e0 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x4ae025e7 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x4ae942f8 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x4affd08b put_compat_timespec +EXPORT_SYMBOL_GPL vmlinux 0x4b09ef05 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x4b15c424 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x4b3ad805 ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x4b79476a regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x4b875369 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x4bab8f0e cgroup_taskset_cur_css +EXPORT_SYMBOL_GPL vmlinux 0x4bac15b7 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x4bc62a81 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x4be613c0 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0x4c281cc7 serial8250_rx_dma +EXPORT_SYMBOL_GPL vmlinux 0x4c30c693 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4c324ee8 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x4c34de91 regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x4c4f96e3 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c7e1f92 PageHeadHuge +EXPORT_SYMBOL_GPL vmlinux 0x4c808253 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x4c88dfcf pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0x4ca5f6c6 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x4ca66534 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x4cc64f20 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x4d172ccb ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x4d399d4f noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x4d54a7b3 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x4d790591 devres_release +EXPORT_SYMBOL_GPL vmlinux 0x4da6673b regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x4da885ed __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x4dda80ee ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e1dfc05 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e37d8e5 gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x4e396597 pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x4e6e441a cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x4e7ac010 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x4ea9b430 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0x4eb36644 spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x4ec7b8e3 tracepoint_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4efa689c perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0x4f020dee public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x4f255cfa tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x4f286eea debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x4f45cac9 alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x4f55deef debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x4f58c8a0 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x4f60346f __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x4f6c80dc __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x4f93f6bd clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x4faf891a rt_mutex_trylock +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 0x5000d85c sysfs_schedule_callback +EXPORT_SYMBOL_GPL vmlinux 0x5022cd3a sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x5039c4ab percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0x5040b0b2 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x50601122 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x506691f1 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x506e6dab tpm_show_temp_deactivated +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 0x509d1168 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x50a7c878 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x50e6bb16 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x5105913f __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x511c0a5b ide_capacity_proc_fops +EXPORT_SYMBOL_GPL vmlinux 0x517110d8 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0x5179f584 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x517b8e44 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0x51823caf input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x5189c149 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x5190d7a7 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x51b65a26 rtc_lock +EXPORT_SYMBOL_GPL vmlinux 0x51c35312 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x51ccb8dd fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0x51ed387b ide_dma_unmap_sg +EXPORT_SYMBOL_GPL vmlinux 0x51eeed14 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x51f9f511 __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x51ff2db0 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0x5205e64d disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x522f538b tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x5238c46a sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x525d1fe9 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x5272d8bc __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0x5280f6fd cgroup_unload_subsys +EXPORT_SYMBOL_GPL vmlinux 0x52954322 rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0x52a41251 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x52af69cb wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x52bf1078 regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x52c6272c fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x52d14c4b pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x52d66e13 dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x52dca03f fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x52f43f05 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x5310be7f md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x531aa605 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x531c0d42 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x532f4160 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x5335dd11 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x53589cf3 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x5394fc39 of_pci_msi_chip_add +EXPORT_SYMBOL_GPL vmlinux 0x53e923eb fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x53f0c9b3 of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x5408cf0e usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x54215db5 visitor64 +EXPORT_SYMBOL_GPL vmlinux 0x5452b000 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x5461511a ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x546c5565 ppc_tb_freq +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x5494c02b trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54a4a8ab blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x54f425d7 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x55087bf6 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x550d765b pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x552f7e8d usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5547c833 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x554c8165 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x555f8905 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x5571c1fa class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x55826bd7 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x55c2bd02 extcon_find_cable_index +EXPORT_SYMBOL_GPL vmlinux 0x55d61fbe ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x55d8bc6a inet_csk_compat_getsockopt +EXPORT_SYMBOL_GPL vmlinux 0x55f51e1b get_slice_psize +EXPORT_SYMBOL_GPL vmlinux 0x561d62a3 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x561e4b77 irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x5626e82c virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0x562d9d2c aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x564f1dca klist_add_after +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x5692386f gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0x569dbf32 cgroup_taskset_next +EXPORT_SYMBOL_GPL vmlinux 0x56a10ea3 ide_dma_sff_timer_expiry +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x57111e27 dm_underlying_device_busy +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x57316a30 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x575b35b6 percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x575c5f94 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0x578002a9 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57aacdaf do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x57b21090 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x57b24d6e mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x57b4d74c tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x57b6a954 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x57e59de5 ide_cd_expiry +EXPORT_SYMBOL_GPL vmlinux 0x57e67773 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x580fc4b6 ide_pci_setup_ports +EXPORT_SYMBOL_GPL vmlinux 0x58360bc9 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x5846b518 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x5892f832 release_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58a66baa transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x58afeb74 i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0x58d6c4d7 ide_undecoded_slave +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x59264c1e ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x5947abbe max77693_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x5961bf27 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5969f9eb pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x59867c1c list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x59b2adbf input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x59dc991f unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59e96059 register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x59eec5ab unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x5a024ecd percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0x5a2ceb69 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x5a3379ee led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x5a401dfd crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x5a508d40 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x5a6f6b9f __giveup_vsx +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a8f3b69 of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0x5a960f10 fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x5ab9a839 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x5acafa4f __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x5b06f61b tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x5b0cf051 unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x5b3b7de6 pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0x5b3d4f8e vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x5b4e379c of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0x5b77b9cf unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x5b82c68b ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x5b85b5b7 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x5b8c6f8e ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5b8da167 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x5bc0f819 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x5bff0e1c pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0x5c263059 inhibit_secondary_onlining +EXPORT_SYMBOL_GPL vmlinux 0x5c68d886 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x5c73f720 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x5c88e2a4 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x5ca0116e da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x5ca93699 tracepoint_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cbc0509 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x5cf8a882 __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x5cfa0817 usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d29d12f sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x5d3027cb sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x5d4cb67e rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0x5d77952d hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x5da43310 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x5dbf53bc ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x5dc2d246 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x5dc9c7af device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0x5dcb2f34 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x5dd69ead rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x5de4982e __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x5e170868 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x5e22349b call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x5e38e610 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x5e3c4cda class_find_device +EXPORT_SYMBOL_GPL vmlinux 0x5e61b564 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x5e7140af vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x5e7b4476 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x5ee7542e reserve_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x5f09d1ee bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x5f0d2d78 ide_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x5f390a31 tpm_show_caps +EXPORT_SYMBOL_GPL vmlinux 0x5f419491 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x5f732b07 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x5f762701 ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0x5f79a98b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x5f7c342b blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x5f95a60f pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0x5fa561ab ide_setup_pci_noise +EXPORT_SYMBOL_GPL vmlinux 0x5fa9c5e4 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x5fbbcaa2 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x5fc87504 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x5fdd49b6 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x60467b06 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x606effa8 ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6072e8af security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x6073397a da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x608d836f inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x6094685f wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL_GPL vmlinux 0x60edd82e platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x610154d1 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x6111ce0d usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x614733e1 usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x6160bcfa bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x616d4dd9 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x6176fada devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x618210b7 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x6183ff15 sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0x61862d90 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x6199b7d9 ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x619eeb30 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x61a4e866 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x61a89b97 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0x61a90c54 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x61aa9534 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x61bc8558 sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x61f86c67 rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x625b8b91 stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0x6280ec0d tpm_store_cancel +EXPORT_SYMBOL_GPL vmlinux 0x62efc51e max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL vmlinux 0x63205de1 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x63493690 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x63775edc of_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x637bca36 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x63830cf6 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x6386ef16 rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0x6390efda of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0x63928709 css_next_descendant_post +EXPORT_SYMBOL_GPL vmlinux 0x63a5d716 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x63d53db6 dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6412e329 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x6423fe91 cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x64312920 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x646e3527 pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x64b97630 wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x64cad571 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x64d2c6be wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x64d995a7 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x6535f332 tpm_show_pubek +EXPORT_SYMBOL_GPL vmlinux 0x654362b4 pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x655746a2 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x659c85c8 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65cea304 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x65d3c8cd crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0x66059a67 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x6623c44b ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x662a0c3f x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x66579774 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x668456f6 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x66aee3ae kobj_completion_release +EXPORT_SYMBOL_GPL vmlinux 0x66afb53b unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66ef4759 uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0x66f0b7a3 extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x670b6b1c irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0x6722bdc6 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x67548a90 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x675776a2 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x676858d9 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x679179c6 set_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67f59333 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x67f863f1 dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0x67fe22d5 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x68276fcc crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x682f26a9 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x684bac44 vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0x687934e9 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x68828a62 regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0x68abb090 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x68b1ed36 ping_err +EXPORT_SYMBOL_GPL vmlinux 0x68ef2d61 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x68f82f97 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x6921aa34 compat_put_timeval +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x693a3456 rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x693d7ed4 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x693edb56 list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x6951b5da pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0x6957084e gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0x69790ef6 __init_new_context +EXPORT_SYMBOL_GPL vmlinux 0x6979f214 ide_host_register +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x697cbbb4 threads_per_core +EXPORT_SYMBOL_GPL vmlinux 0x697e8406 inet_csk_reqsk_queue_prune +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x69a0d65f subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x69b50b02 static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0x69e9a2cb ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x6a19d4b5 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a6cafd2 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x6a8676a0 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x6aa1b4ee bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x6abaad93 mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x6acb8d84 ppc64_caches +EXPORT_SYMBOL_GPL vmlinux 0x6ad2fb71 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6b0a59ef relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b374060 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x6b60dcba pwm_free +EXPORT_SYMBOL_GPL vmlinux 0x6b6a7018 css_rightmost_descendant +EXPORT_SYMBOL_GPL vmlinux 0x6b889143 pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x6b93bf60 inet_twdr_twkill_work +EXPORT_SYMBOL_GPL vmlinux 0x6ba0f94b regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x6bbdf3ee led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x6bd282df ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x6bf9c991 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x6bfaf556 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x6c1b09ab gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x6c280823 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0x6c33cf2a rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x6c3628c3 devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x6c49c4f2 clockevents_notify +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c7a3a37 rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0x6c8154bb debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6cb8e01a usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x6cc0f4d4 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6ccad489 ide_queue_pc_tail +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6cd4ea62 wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x6ce50d42 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x6cfedffe perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x6d0760f3 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d3633d4 skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x6d53bf08 cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x6d5594e0 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x6d9e5425 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x6daf7720 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x6e044d86 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e379526 kernstart_addr +EXPORT_SYMBOL_GPL vmlinux 0x6e4328e4 ide_port_unregister_devices +EXPORT_SYMBOL_GPL vmlinux 0x6e690053 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x6e69926e of_reset_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x6e7dc64f gpio_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6ea485fa gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x6ec2d9d5 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0x6edd94a4 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x6ef17c55 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x6f13b087 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f72fae9 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x6f84c79c xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x6fa9535a sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0x6fcc9929 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x6fd0559a posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6fe9f184 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x6fea6cf7 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x6fede294 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x705cb6d0 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x70914c57 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x709af8ed ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0x70a9b759 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x70b3d28d elv_register +EXPORT_SYMBOL_GPL vmlinux 0x70c1a696 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x70c6f331 pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x71033235 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x710bc3d9 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x710ef2ee ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x712c6465 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x7136e3a4 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x716babe7 ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x71711910 _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0x71930ed3 of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x71fc5153 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x7219bf8f pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x723374f8 pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x723d666d ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x7250ddd3 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x72777795 i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x72903633 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x729794b7 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x73214eda bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x732798b8 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x734c800c of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0x73510609 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x7366884c device_attach +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73a6173f srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x73be97e8 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x73c2554f __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73c91ece blk_queue_bio +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x742179ff nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x7422c95e gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x74232aaa wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x74425b3b perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x74452673 virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x744ad0fb bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x744bbf57 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x744becfb cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x746905de ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x74954462 timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74cab669 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x74f9e61f mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x75022203 dm_requeue_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0x750b5b32 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x750c5e94 list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x750e617c __scsi_get_command +EXPORT_SYMBOL_GPL vmlinux 0x75133f6e visitor128 +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x753d16d7 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x75441d9e crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x7546aa5d hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x756260d6 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x757b49d2 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0x75802b45 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x758ee82d bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x75e6e037 hash_page +EXPORT_SYMBOL_GPL vmlinux 0x75f2a044 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x761bbb21 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x76255efe fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x765e23c0 regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x767aa7a6 devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x76837b9b __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x7684b0af input_class +EXPORT_SYMBOL_GPL vmlinux 0x76a6f4aa task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x76cf9a9d device_create +EXPORT_SYMBOL_GPL vmlinux 0x76d07d6e gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x76d393cc led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x76fd0d47 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x7704d5da pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0x7716b62f sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x7748d050 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x7769b3cb ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x7769b86b device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x778f05bc __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0x77ac0d63 ide_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x77f6a70b tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x7856edd2 ide_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x787c882b lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x788370cc crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x78babe02 ftrace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x78c6cf48 irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0x7900b91a attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0x79058e1a input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x790fc7f9 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x7933bc73 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x7941f553 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x797e5340 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x798dcbad udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7992827d blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x79d8597c ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0x79da31d8 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x79e04427 ide_pio_cycle_time +EXPORT_SYMBOL_GPL vmlinux 0x79fb46ab task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0x7a6729fb fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7a958e8a md_run +EXPORT_SYMBOL_GPL vmlinux 0x7ab925fc pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x7ae1ae8e cpufreq_frequency_table_put_attr +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b0f2127 find_linux_pte_or_hugepte +EXPORT_SYMBOL_GPL vmlinux 0x7b1ae640 pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b259e52 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x7b2c4a80 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7b36e5a0 cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x7b3c9c47 driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x7b3e0ce2 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x7b609f4e tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x7be99141 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0x7bfeab84 pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x7c120a4e ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x7c346357 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x7c37bc89 pseries_ioei_notifier_list +EXPORT_SYMBOL_GPL vmlinux 0x7c3ef490 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x7c40030b inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x7c5f11de da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x7c607600 __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x7c9857f4 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x7cbb4b4d pcibios_free_controller_deferred +EXPORT_SYMBOL_GPL vmlinux 0x7cc1b7fd max77693_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x7cc7de1c x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7cde56c9 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x7ce5b92a gpiod_sysfs_set_active_low +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7cebbf66 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x7cefda79 use_mm +EXPORT_SYMBOL_GPL vmlinux 0x7cf2424e pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x7cfdb2df usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x7d05bd0b filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x7d36e534 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x7d397cc7 gpiod_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d3faafa dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x7d734276 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x7d9d11fb devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7db0f8a4 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x7dd8f79b spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x7e01fbf1 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x7e17ba7b klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x7e2d29ec ide_pci_clk +EXPORT_SYMBOL_GPL vmlinux 0x7e303e02 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e65b0df ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x7e935df5 usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0x7ea1a2bc probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x7eb40aa0 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x7eeaa3cc __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x7efde759 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0x7f008202 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7f1a9c27 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0x7f59d832 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0x7f621f51 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x7f7bc710 klist_next +EXPORT_SYMBOL_GPL vmlinux 0x7fa4b4a2 of_pci_parse_bus_range +EXPORT_SYMBOL_GPL vmlinux 0x7fe23e4d single_release_net +EXPORT_SYMBOL_GPL vmlinux 0x7fe2b73e pcibios_remove_pci_devices +EXPORT_SYMBOL_GPL vmlinux 0x80038859 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x802d6569 clockevents_unbind +EXPORT_SYMBOL_GPL vmlinux 0x805ebc56 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x8077b13e dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80a11bab ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x80a66461 ide_error +EXPORT_SYMBOL_GPL vmlinux 0x80a9a4a4 ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x80d3927f __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80d9f937 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x8114b8d6 md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x8134f9c2 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8140842a gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x8145fe74 serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x816089c3 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x8195b3f6 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x81e12e1b virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0x81e58421 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x81f45c82 of_usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0x82271eea platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x82430cd0 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0x826cfd24 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x82939ebd rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x8295140b fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x82a0b66f usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x82af744e pcibios_find_pci_bus +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x831d7946 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x831f7e64 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x833427f0 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0x8342497b blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x834616bb sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x83592221 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x836d61d0 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x839728a8 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x83a898db mpic_subsys +EXPORT_SYMBOL_GPL vmlinux 0x83b539c1 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x83c3e82b fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x83e4d0e9 led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x840b7c4d skb_gro_receive +EXPORT_SYMBOL_GPL vmlinux 0x8420bccd cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0x84339ced md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x8453b4d1 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x845f3426 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x8487a2b6 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x84b0b0f7 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x84bd0240 ide_map_sg +EXPORT_SYMBOL_GPL vmlinux 0x84bd477e __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x84d9decf kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0x84da7d91 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x84f84692 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x85004b96 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x852e568d of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x85377f43 pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x8538905d srp_rport_del +EXPORT_SYMBOL_GPL vmlinux 0x8543b658 user_read +EXPORT_SYMBOL_GPL vmlinux 0x855273ae alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x85529e9f usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x8556e267 spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0x85598d86 extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0x8568aac2 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x856e694d each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x858afc69 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x859ffaef devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x85a5d43e powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0x85b9e216 set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0x85be04ff led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x85c10896 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85cae817 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x85e907d5 ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x861c1a0a blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x86422474 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8649d1ed pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0x866b9687 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x86ad7f01 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x86b68368 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86fd3a62 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x8702e548 process_srcu +EXPORT_SYMBOL_GPL vmlinux 0x8704e9fd dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x870bc968 pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x8739a108 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x8747f407 virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x87769734 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x87913fb9 __module_address +EXPORT_SYMBOL_GPL vmlinux 0x87a94ed2 tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0x87bb4e32 of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x8804af3d usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x88284eb2 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x883c2740 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x88825e52 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88d8cb4f shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x88ea8f95 pci_pri_enabled +EXPORT_SYMBOL_GPL vmlinux 0x8906767e fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x89380224 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0x894456ff raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x897a309c sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x898df18b sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x89a28713 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x89a52636 i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0x89af3b77 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x8a249046 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x8a2b14ba wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0x8a8149a7 get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0x8a89b02b regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0x8a907451 cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0x8aa637de tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x8aaf0a75 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8adc62e0 ref_module +EXPORT_SYMBOL_GPL vmlinux 0x8ae152b5 of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x8ae3b4f2 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0x8b211b93 __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x8b426fae da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x8b4397aa regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x8b70e8ea __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x8b94ab97 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x8b997fd2 cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8bad592b sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x8bafbbdc bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x8be3aab4 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x8be3e3bc thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c0fcffb cgroup_is_descendant +EXPORT_SYMBOL_GPL vmlinux 0x8c3b0374 ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0x8c527db7 pwm_config +EXPORT_SYMBOL_GPL vmlinux 0x8c58a835 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x8c59a58e ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x8c85652e da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x8c8aed69 tpm_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x8ca57ec5 ide_read_status +EXPORT_SYMBOL_GPL vmlinux 0x8ca73abd ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x8cbcb855 extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x8cc842c6 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x8cea765f memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x8cfd6cce pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x8d1429cf shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x8d36c088 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0x8d4df56e __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x8d69cbf0 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x8d800ee2 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x8d8c7929 page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x8d9b4afa pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x8dae7b4f xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x8dc55019 devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x8ddc8ad3 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x8e0b9fad blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x8e56cacf ide_set_pio +EXPORT_SYMBOL_GPL vmlinux 0x8e78fbc8 ide_dma_start +EXPORT_SYMBOL_GPL vmlinux 0x8e9c7933 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x8eb0c4fe spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f73061c pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x8f7af87a hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x8f8e53b9 idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8f902a2c gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0x8f964202 sec_reg_update +EXPORT_SYMBOL_GPL vmlinux 0x8fa0d74c cgroup_load_subsys +EXPORT_SYMBOL_GPL vmlinux 0x8fce21ea __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x900e3fa7 thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x90705b7f syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9077d5ea usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x907b0d51 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x908f30ac rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90a84faf virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x90d8288e sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x91286982 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x9199950d device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x919f57fb crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x91abfe84 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x91b2381d usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x91c2a770 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x91d2fcec tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x91d8e0bf usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x91e05cb2 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x91f66e53 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x920cc389 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x921af1c5 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x921cdde2 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x921f69be device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x9237c073 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x9271737d ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x927d4759 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x92a4ef84 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x92bf94ed tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92ec4174 dev_get_gen_pool +EXPORT_SYMBOL_GPL vmlinux 0x92f586a2 of_get_named_gen_pool +EXPORT_SYMBOL_GPL vmlinux 0x930ed9b9 of_usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0x933a848a regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x933b7ebc tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0x933bf799 pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x934a0f6e pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x93649dfd pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x9372f694 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x9373dea2 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x9389828b powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x93996ae1 xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x93a29fdd dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x940685ca kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x941983ff sdhci_pci_o2_resume +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x9425710b alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0x94761c34 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x94882fcc ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x9496fa43 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x949f7342 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x94a19927 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x94a68723 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x94a99f08 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x94aa3ab9 tpm_show_durations +EXPORT_SYMBOL_GPL vmlinux 0x94c1d624 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x94cc9ffa pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x94d972b7 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x94ed5540 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x95022bac usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x95023b2c pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x95146020 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x952069ac sysfs_remove_device_from_node +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x9526bdd1 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x953b8120 nl_table +EXPORT_SYMBOL_GPL vmlinux 0x95561eb7 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x955b85e5 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0x95898102 restore_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x95a4a2b0 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95ca858e wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x95f161a6 rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x9653d773 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x965a491b dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x96736a28 stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0x9689e7f0 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x96907b5e ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0x96a22790 vmcore_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x96be6134 dm_set_device_limits +EXPORT_SYMBOL_GPL vmlinux 0x96bf6374 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x96d3be53 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x96f134fb ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x9701cb4c dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x9730c462 gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x9735f061 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x974aa739 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x97561b20 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x97563a51 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x978d0013 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0x979022b6 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x97946a20 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x97951eb0 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x97a69c67 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97fd81fc fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0x9807fab3 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x9827d308 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x982d3c54 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0x982d62da ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x984cb7bf stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x985642cd sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x986e4315 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x989bd667 scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x98a02a70 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x98a06eea wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x98c84e2c md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x990d2278 tpm_dev_vendor_release +EXPORT_SYMBOL_GPL vmlinux 0x990e0f1b xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x9912b57b uninhibit_secondary_onlining +EXPORT_SYMBOL_GPL vmlinux 0x991507d1 regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x993ebe01 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x99468be2 css_next_child +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x9963e135 rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x9973add9 __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x997c490b usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x9987e6e9 opal_get_sensor_data +EXPORT_SYMBOL_GPL vmlinux 0x99965184 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x99c084d7 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x99e60018 ide_allocate_dma_engine +EXPORT_SYMBOL_GPL vmlinux 0x99e83321 ide_pad_transfer +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a367c56 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x9a49d937 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x9a64c817 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a9f5d35 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x9aa85e6a platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x9aad6540 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9abffa36 rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9aca444b get_monotonic_boottime +EXPORT_SYMBOL_GPL vmlinux 0x9acc5876 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0x9acc7b6a vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9af6fcfe wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x9b066951 user_describe +EXPORT_SYMBOL_GPL vmlinux 0x9b48a77e disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x9b5f4338 hrtimer_start +EXPORT_SYMBOL_GPL vmlinux 0x9b91281a virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0x9b941823 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x9b95f716 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0x9ba2bb2b gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9bf05273 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x9bf89347 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x9c07f6b4 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0x9c13a1c4 regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x9c211999 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9c385410 irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0x9c56b0f7 irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x9c7b62bf pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9cde54e0 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x9d138533 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x9d59d877 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x9d6d46be crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x9d961be8 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x9de1c5ea pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x9df91945 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x9e9183f4 ide_input_data +EXPORT_SYMBOL_GPL vmlinux 0x9ec2e93a regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x9ec71e44 eeh_add_device_tree_late +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9f045566 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x9f0664bf dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0x9f0d459c regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x9f3f98e1 of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x9f4f858d pskb_put +EXPORT_SYMBOL_GPL vmlinux 0x9f67410b mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x9f9d417a ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0x9fb97471 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9fbe8d49 rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x9fc35afb ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9fedb268 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0xa0125590 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xa037f9ca usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0xa078d5b5 pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xa07bea06 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0xa07d2bce netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0xa084003e gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0xa0900557 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa09ff92d xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0xa0a27fff pci_address_to_pio +EXPORT_SYMBOL_GPL vmlinux 0xa0c71dac spi_populate_sync_msg +EXPORT_SYMBOL_GPL vmlinux 0xa11fd6c3 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0xa1246970 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0xa12d929d desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0xa144f2e9 __netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0xa16556c8 ide_exec_command +EXPORT_SYMBOL_GPL vmlinux 0xa171b1e3 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0xa1886fc4 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0xa1e9a3ce crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xa1f389d3 PageHuge +EXPORT_SYMBOL_GPL vmlinux 0xa21eede2 regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0xa244b09a devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa2762533 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xa277fc5b pci_msi_off +EXPORT_SYMBOL_GPL vmlinux 0xa284fa89 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0xa296664b blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa29e5e54 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0xa2af8f19 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xa2d00af5 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xa32b8c4f ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xa34f7277 virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0xa34fda72 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0xa364455f crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa3659e86 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa38d3758 arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0xa38f1e36 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa39a3ca4 relay_open +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 0xa3d45d9c register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xa3d8a49f shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa3ea1e03 skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0xa3eae492 devres_add +EXPORT_SYMBOL_GPL vmlinux 0xa3fa31e3 ide_dev_select +EXPORT_SYMBOL_GPL vmlinux 0xa3fd39a4 od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0xa415df74 sff_dma_ops +EXPORT_SYMBOL_GPL vmlinux 0xa42936b7 dm_kill_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0xa437c0f1 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0xa4520f79 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0xa465fa51 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0xa4709ef9 system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0xa472d751 crypto_rng_type +EXPORT_SYMBOL_GPL vmlinux 0xa475d8e5 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa4d99971 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0xa4e9eaeb tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0xa4ea04ee of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0xa55187d0 rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0xa56ca855 tracepoint_iter_stop +EXPORT_SYMBOL_GPL vmlinux 0xa5744c3f regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0xa58a720b reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xa5991285 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0xa5aee5e9 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0xa5b00659 ppc_proc_freq +EXPORT_SYMBOL_GPL vmlinux 0xa5c987b7 ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5efe460 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xa5f389eb of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa6778a32 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xa6a0a273 max77693_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xa6ac22dd ide_create_request_sense_cmd +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6cec3cf serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6fde22d stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xa724257f init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0xa734c58b tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa75811d0 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0xa7693597 rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0xa77a622e ide_pci_init_two +EXPORT_SYMBOL_GPL vmlinux 0xa792c80f ide_pci_resume +EXPORT_SYMBOL_GPL vmlinux 0xa7ef1da4 regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0xa7f92105 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0xa80ae47a blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0xa81075a5 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0xa822b449 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa8630c32 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0xa868812b reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xa8998e92 regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0xa8b1a189 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0xa8be65c6 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa8db3439 pci_renumber_slot +EXPORT_SYMBOL_GPL vmlinux 0xa8ed324d exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0xa907b44a ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xa93271a5 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xa95332e7 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xa972ac74 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0xa980af16 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xa99256bd fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0xa9ae939d usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0xa9ce341e usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0xa9da83ae crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9e1f80a hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xaa04ac2a sdhci_pci_o2_fujin2_pci_init +EXPORT_SYMBOL_GPL vmlinux 0xaa145618 da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0xaa287733 sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xaa5cf9c2 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xaa9bb800 regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xaaa1e1ad blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaaba5caf vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xaaf08586 regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0xaaffebcd devres_find +EXPORT_SYMBOL_GPL vmlinux 0xab0ef481 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0xab45c406 pstore_register +EXPORT_SYMBOL_GPL vmlinux 0xab5b1150 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab6f4f94 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0xab9723df extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0xabd4deb0 max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xabd9f222 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0xabf15f91 gpio_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xac47bc17 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0xac48d20c remove_phb_dynamic +EXPORT_SYMBOL_GPL vmlinux 0xac5cbdd2 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xacfe997e powerpc_firmware_features +EXPORT_SYMBOL_GPL vmlinux 0xad8d2717 cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xadc5528f crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadc93963 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xadf34c2b cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae0f179c ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0xae3ce79d spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0xae447487 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae6fc8eb i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae9bedfb inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0xaea86e66 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0xaeb42ee1 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0xaed780c2 tcp_init_congestion_ops +EXPORT_SYMBOL_GPL vmlinux 0xaedbb7e7 pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xaee8ce52 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0xaeed3f0c fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0xaf0ad223 sdhci_pci_o2_probe_slot +EXPORT_SYMBOL_GPL vmlinux 0xaf123992 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0xaf4c4266 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0xaf75e84e kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xaf79ad3b dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0xaf8280fd devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xaf8aa3df regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xafac4b2e bus_register +EXPORT_SYMBOL_GPL vmlinux 0xafee067b dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0xaff9d035 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0xb0107e11 cpufreq_notify_transition +EXPORT_SYMBOL_GPL vmlinux 0xb084c318 pci_configure_slot +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0d1656c gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0xb0e260b9 mdio_mux_init +EXPORT_SYMBOL_GPL vmlinux 0xb0f7c176 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xb10d55bc cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xb114c458 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb147a341 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0xb16e7352 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb18cc952 ata_noop_qc_prep +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 0xb1e4b230 regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0xb1f2b70a ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb2486951 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xb2835da4 sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb2eda9d7 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0xb30065a2 generic_access_phys +EXPORT_SYMBOL_GPL vmlinux 0xb301b25d eeh_add_sysfs_files +EXPORT_SYMBOL_GPL vmlinux 0xb323c902 sdhci_pci_o2_probe +EXPORT_SYMBOL_GPL vmlinux 0xb325ee5b regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xb3389c93 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xb33ab11d cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0xb33f32f8 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xb347bb2c work_busy +EXPORT_SYMBOL_GPL vmlinux 0xb3637157 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xb3a1cd68 rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0xb3c8ae4f kobj_completion_init +EXPORT_SYMBOL_GPL vmlinux 0xb3df4940 __online_page_free +EXPORT_SYMBOL_GPL vmlinux 0xb3e385a1 rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0xb3eae887 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0xb3ee8ed1 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xb3f6d124 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0xb4166a2c usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xb42ac1de ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0xb42e2a40 pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0xb4381ce8 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0xb4452d2a show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0xb461afb3 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xb4b5d088 cpu_remove_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb5039779 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb52c72f9 sec_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb53861d9 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0xb57fd29a platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0xb5833ae9 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xb58488a4 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb58ded0f hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5aa10af atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb5c3fc40 crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0xb5c8edf4 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0xb5cb8145 hrtimer_get_res +EXPORT_SYMBOL_GPL vmlinux 0xb5da8be6 ide_no_data_taskfile +EXPORT_SYMBOL_GPL vmlinux 0xb5f0912b rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb5f2fc99 scom_find_parent +EXPORT_SYMBOL_GPL vmlinux 0xb60b5707 of_i8042_aux_irq +EXPORT_SYMBOL_GPL vmlinux 0xb611a819 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb62fc556 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0xb63fa037 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xb6434525 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb643c250 xics_wake_cpu +EXPORT_SYMBOL_GPL vmlinux 0xb65bd3fc add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xb67b2219 cm_suspend_again +EXPORT_SYMBOL_GPL vmlinux 0xb67e4334 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0xb68d5a63 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xb68decf3 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xb6a06263 blkio_subsys +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6c635af wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xb6d68b33 ide_get_lba_addr +EXPORT_SYMBOL_GPL vmlinux 0xb6ea6777 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0xb70604e7 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0xb70b4a93 ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0xb70b6129 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0xb70c94be blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0xb76c453e subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xb77e740b inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xb7a3768d device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xb7af8e7c irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xb7b5bce2 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0xb7d7a1cb init_phb_dynamic +EXPORT_SYMBOL_GPL vmlinux 0xb7e23a95 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0xb7f4c904 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb848919d regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0xb8511732 irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0xb889523d tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0xb8ae5b58 cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0xb8c22a8a ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xb8c9da7b sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xb8e0e867 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0xb8edbce5 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0xb900386d ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb932c874 driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xb96cde2a bdi_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0xb96e3348 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xb9a699d7 rio_enable_rx_tx_port +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 0xb9e1d893 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0xb9f6cba2 sysfs_get +EXPORT_SYMBOL_GPL vmlinux 0xba0a216d transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0xba158769 rtas_cancel_event_scan +EXPORT_SYMBOL_GPL vmlinux 0xba1bfb10 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0xba58fe52 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0xba6115f5 lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xba85b2a6 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0xba93a691 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xbad046b4 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0xbad0d84f rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xbae6433c ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb279261 user_match +EXPORT_SYMBOL_GPL vmlinux 0xbb30ece7 usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0xbb4312be dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0xbb45f114 devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xbb4e55f2 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0xbb51fe30 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0xbb5f8fe2 regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0xbbbad704 tpm_show_active +EXPORT_SYMBOL_GPL vmlinux 0xbbe79396 rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0xbbedb052 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0xbc36d4ee usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xbc4c3009 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcb4f018 regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0xbcce30ac regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcd3788c spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xbce6f1e6 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0xbd1a6540 subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0xbd1ecc14 key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0xbd318cc8 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd6c58cc ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0xbd936a56 pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xbd96e832 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0xbdaf5686 get_compat_timeval +EXPORT_SYMBOL_GPL vmlinux 0xbdc71706 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbddd1565 __clocksource_updatefreq_scale +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe1a477e tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xbe2cf5d7 sysfs_notify_dirent +EXPORT_SYMBOL_GPL vmlinux 0xbe482ded user_update +EXPORT_SYMBOL_GPL vmlinux 0xbe53f355 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0xbe578348 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0xbe79a63d skb_morph +EXPORT_SYMBOL_GPL vmlinux 0xbe7f666f agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0xbe96dfd8 of_reconfig_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbe9ccbe8 of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbebaa0a6 of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xbedc6d76 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0xbee33afe of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0xbef13c17 regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf1cc04b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xbf3bed6c skb_segment +EXPORT_SYMBOL_GPL vmlinux 0xbf5696d0 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0xbf9c2309 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xbfafdb59 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0xbfb86fa6 arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfc4c599 __remove_pages +EXPORT_SYMBOL_GPL vmlinux 0xbfda3418 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0xbff88fd9 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0xbffb2ab3 netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0xc0026302 d_materialise_unique +EXPORT_SYMBOL_GPL vmlinux 0xc018e719 pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0xc02bec3c usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc03415ad sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xc050b956 of_extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0xc06067fb ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0xc0650ba1 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0xc065a455 cpu_core_index_of_thread +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0a46903 nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0xc0ab10a1 rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xc0bf6ead timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xc0cbd8db blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0xc0d01bc0 percpu_ref_cancel_init +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc109d15a get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0xc10c728d sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0xc11b45c6 gpiod_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xc11bd00f tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc122e5b7 thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0xc13e9961 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xc165d65a ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0xc169608c get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0xc170df0a bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc19d353b max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xc19e9c16 pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0xc1afc934 ide_build_dmatable +EXPORT_SYMBOL_GPL vmlinux 0xc1e8b297 devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xc1e964bb dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc23c0b51 ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0xc26cecda ide_prep_sense +EXPORT_SYMBOL_GPL vmlinux 0xc275d4e5 usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0xc27b3423 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc2810302 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xc2c0449b powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0xc2c25342 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc306d794 regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0xc31e2100 arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0xc330e375 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xc347f234 ide_read_error +EXPORT_SYMBOL_GPL vmlinux 0xc34e57fe crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xc34efe27 snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0xc3559310 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc394cfcd dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0xc3b441f7 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0xc3c62cb5 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0xc3da643d evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0xc3f0406b fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0xc4073135 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0xc407a1d4 gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc47e6f8e jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xc481c236 usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc4a16a61 unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xc4b35aae iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0xc4c4e30b ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0xc4d09d3e dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0xc4d58e4a sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0xc4fe04d1 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0xc53d1639 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xc5549900 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc5867294 pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0xc58d1833 ide_cd_get_xferlen +EXPORT_SYMBOL_GPL vmlinux 0xc5943e61 rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0xc5b2f208 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xc5d27bd5 ide_register_region +EXPORT_SYMBOL_GPL vmlinux 0xc5fb05fd sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0xc60aab4e led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc60f75ec __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc6290769 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0xc63a1109 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xc652685e get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc67f80ae sk_unattached_filter_create +EXPORT_SYMBOL_GPL vmlinux 0xc68aa252 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc690866c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xc6c93b51 regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0xc6e25e99 tracepoint_iter_start +EXPORT_SYMBOL_GPL vmlinux 0xc6e4f836 class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xc6ea0f8e sysfs_put +EXPORT_SYMBOL_GPL vmlinux 0xc71071b5 tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc72e3c6b ping_close +EXPORT_SYMBOL_GPL vmlinux 0xc739f6fb regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xc773ed63 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0xc7a03579 regmap_write_async +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 0xc7f01208 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0xc8112837 devres_get +EXPORT_SYMBOL_GPL vmlinux 0xc839e5ec __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0xc849faf0 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0xc85112ba regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xc86f1607 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0xc8772230 isa_bridge_pcidev +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc8968d09 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8c97d0c pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xc90718d8 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xc90d5c15 rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xc90dbda1 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0xc9113d0d pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc95809e7 disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0xc963c2df fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0xc9641b48 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0xc965a550 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0xc97d1140 cpufreq_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0xc9a31107 cred_to_ucred +EXPORT_SYMBOL_GPL vmlinux 0xc9b76e93 __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0xc9bc3ef1 ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xc9cfa97f of_pci_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0xc9d4c183 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xca32a2aa ide_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xca413f34 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0xca666f32 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca85d8cf tracepoint_probe_update_all +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcad60a9b skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0xcae984b7 device_reset +EXPORT_SYMBOL_GPL vmlinux 0xcaeb11ea relay_close +EXPORT_SYMBOL_GPL vmlinux 0xcaeea6b0 led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcb08249b rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb18513e __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xcb447e53 __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcbce1aa9 eeh_dev_check_failure +EXPORT_SYMBOL_GPL vmlinux 0xcbd005d4 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcbfd31a2 __class_create +EXPORT_SYMBOL_GPL vmlinux 0xcbffb3aa security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0xcc1f1c3d inet_twdr_hangman +EXPORT_SYMBOL_GPL vmlinux 0xcc375f31 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xcc3c8900 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xcc3d4594 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0xcc3e6b39 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0xcc4731b3 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcc890ff3 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xcc8c4990 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xcc9b8e1d crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0xcc9c3aba register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xcc9c5d61 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0xcccc69ff usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xcce3393e debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xccf99732 srp_release_transport +EXPORT_SYMBOL_GPL vmlinux 0xccfc71d9 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xcd88bcc3 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcd9020f0 regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd9836c2 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xce0b9b59 max77693_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xce0d9bab srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0xce1d44a3 devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xce1e498f transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0xce1e649d vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0xce40d973 inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xce420e53 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xce46e140 ktime_get_ts +EXPORT_SYMBOL_GPL vmlinux 0xce50f04e scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xce5a441f ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xceb1f126 mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0xcebd5403 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0xcec78895 register_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcf38b28d devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0xcf51294c thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf7c6f07 tpm_show_pcrs +EXPORT_SYMBOL_GPL vmlinux 0xcfa9a3fe ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0xcfaa31ac crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcff2bc3f register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xcffa2aff spi_populate_width_msg +EXPORT_SYMBOL_GPL vmlinux 0xd0060e33 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0xd0102597 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0xd02191ca ide_pio_bytes +EXPORT_SYMBOL_GPL vmlinux 0xd038f6c5 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd056daf7 sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0f23c6b crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0xd0f246ce shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xd0fd4cef inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xd0fe6442 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0xd1313c6b gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xd144e75b pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0xd14bc4d9 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd1688b72 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0xd16c1c83 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0xd16d2f12 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0xd1848c9c ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0xd19cf3fe sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0xd1b2db37 tracepoint_probe_register_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xd1b2e238 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0xd1ed392b page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0xd1fea2a2 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd21cdae8 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0xd21fe239 tpm_register_hardware +EXPORT_SYMBOL_GPL vmlinux 0xd233e23e eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0xd265e4e8 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd2c45ea4 of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0xd2c6ef7f get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0xd2eaf711 uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xd2fcae52 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xd304184c irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0xd30dad36 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xd3101cdf fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0xd32fe193 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xd33763f4 device_rename +EXPORT_SYMBOL_GPL vmlinux 0xd35de5e6 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0xd36fb4e9 irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xd3b0d331 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0xd3d29c09 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0xd3d65c6f debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0xd3daa476 __online_page_increment_counters +EXPORT_SYMBOL_GPL vmlinux 0xd3e52caa fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd40b7985 nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0xd40b990e tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0xd43116a2 unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd46605f9 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0xd488792e device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4f31470 alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0xd5379731 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0xd574eda7 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd582227a leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5d5e6c8 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0xd5e042b6 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0xd614efc2 cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0xd625cd64 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xd65ec1a9 tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd6b316f1 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xd6febbcb rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd705ff39 crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xd714bc62 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0xd71fa2a5 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0xd728c796 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0xd75ff6aa regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0xd7635b2e mmc_send_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd77903f9 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd7977237 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0xd7a04371 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd81d0237 palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd8227bac regulator_set_optimum_mode +EXPORT_SYMBOL_GPL vmlinux 0xd8263870 mmu_slb_size +EXPORT_SYMBOL_GPL vmlinux 0xd828a786 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0xd83c8643 ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xd869265e init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xd87299e7 pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd89ddb30 ide_retry_pc +EXPORT_SYMBOL_GPL vmlinux 0xd8dc9d92 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0xd8e45504 ide_init_pc +EXPORT_SYMBOL_GPL vmlinux 0xd9084acb raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xd90fa310 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0xd925f379 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0xd93e9040 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd9447b0e ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xd97334a4 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0xd9740dcf inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0xd9a33b3b rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda0c9acd platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0xda44413f xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0xda44cb37 setup_charger_manager +EXPORT_SYMBOL_GPL vmlinux 0xda4b13b9 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0xda69c839 sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0xda850d36 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0xdad58e63 flush_altivec_to_thread +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb04cacc tracepoint_probe_unregister_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xdb3d5dca gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0xdb65282c edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0xdb6d8583 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0xdb6e477a ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb900497 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xdba80fc1 of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0xdbb70bee __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xdbbed583 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc0fe60c usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0xdc1e15f1 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc8d8b02 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0xdc941815 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdcae6f93 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0xdcb07627 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0xdcb30ab8 tpm_release +EXPORT_SYMBOL_GPL vmlinux 0xdcc701f4 proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0xdccce566 devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xdcf46c77 regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0xdcfef44b cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0xdd0217ed usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0xdd24dc7e crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xdd2a1604 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd488a32 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0xdd571e6d ide_init_sg_cmd +EXPORT_SYMBOL_GPL vmlinux 0xdd651a22 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xdd729424 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xddf3d8c3 pcibios_finish_adding_to_bus +EXPORT_SYMBOL_GPL vmlinux 0xde31ecb2 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0xde33943a pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0xde6956d4 ide_dma_test_irq +EXPORT_SYMBOL_GPL vmlinux 0xde6fc1e7 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0xdea9f0c1 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xdeb60976 devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0xdec84d2c ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xdf084f7a regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf1a892e wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0xdf59abef irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0xdf797745 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0xdf7b8433 tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xdfa93cef scom_controller +EXPORT_SYMBOL_GPL vmlinux 0xdfb97bfd ide_tf_load +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe01861b5 thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe04871c7 rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xe04b2c26 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xe07a3bda sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe096e841 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0xe0adec9e ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xe0c14cd7 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0xe0d1170f ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0xe1129c50 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xe1147ca8 __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0xe12654d6 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0xe167fc47 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe193b780 ide_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe1941f5e gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0xe1ba6b46 ide_init_disk +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1c789fb arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0xe1cc6427 ide_host_add +EXPORT_SYMBOL_GPL vmlinux 0xe1fc57f5 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xe1fd37fc usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0xe2076f10 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xe21865e6 inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0xe21aa8c2 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0xe23bd9dd regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xe24185c0 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xe2593bb3 tcp_is_cwnd_limited +EXPORT_SYMBOL_GPL vmlinux 0xe26b0e0c ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xe26c29fd ide_dma_end +EXPORT_SYMBOL_GPL vmlinux 0xe2a1916d pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0xe2cb4065 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0xe2e564dc ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0xe303313e dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe30f1eb2 debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0xe3226b5a max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0xe32361ee wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xe3446ee2 fuse_conn_kill +EXPORT_SYMBOL_GPL vmlinux 0xe3474142 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0xe3624f44 list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe3d7750e btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0xe3f4961f tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe4617b22 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xe47e450a regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xe483d5fc subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0xe48bd8db dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0xe4a21003 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0xe4bf27b1 pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0xe4c031f8 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xe4c4b28f gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xe4d4ee64 cgroup_taskset_first +EXPORT_SYMBOL_GPL vmlinux 0xe4eca377 devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xe5104b6a scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0xe51c040f register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xe52ff725 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0xe5336d9f power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0xe5540302 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xe55e79b2 ide_pci_dma_base +EXPORT_SYMBOL_GPL vmlinux 0xe56ded51 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe572b276 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xe577ee32 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe59d557b usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0xe5a1f178 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0xe5b02d36 da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0xe5bbba5f cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0xe5d4f80e __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0xe5daf425 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe66f91ed rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xe6b0fc7d blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6cc3861 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0xe6dd3c9e blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xe6de6efb extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0xe6df550c device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6ff6a6f crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0xe70a9e8c device_initialize +EXPORT_SYMBOL_GPL vmlinux 0xe70eb552 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0xe7173ec0 rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xe720cd7b ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xe722a68a rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0xe736a917 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe73bc177 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe781b1c9 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xe782ab8f ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0xe7a61aae device_store_int +EXPORT_SYMBOL_GPL vmlinux 0xe7c929d2 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe820a0ea realmode_pfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0xe83b6418 ide_read_altstatus +EXPORT_SYMBOL_GPL vmlinux 0xe84067c7 crypto_dequeue_request +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 0xe86ef143 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0xe86f636c xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0xe88db668 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xe89bd243 ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe8a32067 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0xe8a4910a regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xe8b6ddde key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0xe8cc24e2 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xe8e2899d register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0xe8e438fe ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0xe8f76c51 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0xe919854b __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe94cf2b0 do_rw_taskfile +EXPORT_SYMBOL_GPL vmlinux 0xe9a46c11 device_register +EXPORT_SYMBOL_GPL vmlinux 0xe9a99630 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0xe9beb813 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0xe9e8f987 irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0xe9e94576 ide_check_ireason +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea49cc7d crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0xea4c3801 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xea540dfc of_scan_bus +EXPORT_SYMBOL_GPL vmlinux 0xea61c449 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0xea628c20 bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0xea6ab8a4 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xea6c273f uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0xea755758 crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0xea952322 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0xea9ffb2d pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xeab32a1d spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xeae0af29 device_add +EXPORT_SYMBOL_GPL vmlinux 0xeb0e8380 register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xeb1c3628 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xeb220729 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xeb5126fc alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0xeb8ae736 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xeb99f02f sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0xebc9f3ae rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0xebcd72d8 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0xebe215b3 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xebeaa19f rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xebf2a0e4 ide_dma_lost_irq +EXPORT_SYMBOL_GPL vmlinux 0xebf44fd8 extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0xebfc5f9f device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0xec030ee3 bio_trim +EXPORT_SYMBOL_GPL vmlinux 0xec094802 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec23e0cb ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec631f34 remove_memory +EXPORT_SYMBOL_GPL vmlinux 0xec69fa99 ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xec7f0f4c crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xec8dfc9c agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xec9e48d2 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xecd9ccdf ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0xecf1a1d2 virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0xed0ea5f3 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xed4ae96b rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0xed9c5813 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xedb7f80f usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xedd40fa0 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0xede48b7f rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0xede7eb2f mmu_psize_defs +EXPORT_SYMBOL_GPL vmlinux 0xee0c408c ide_end_rq +EXPORT_SYMBOL_GPL vmlinux 0xee2f1ab3 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0xee3a0d78 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xee5969e6 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee7e8f87 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL vmlinux 0xee8da4ca kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xefa2a8b2 hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0xefac9fcb __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0xefd9106d irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0xefdf6501 pcibios_unmap_io_space +EXPORT_SYMBOL_GPL vmlinux 0xeffa6b8f __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0xf002d63b debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0xf003a42b powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0xf01e6a8e regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0xf0208e15 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xf0380a1f transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0xf042b2c9 irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0xf065b330 device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0xf06f2176 pci_pri_stopped +EXPORT_SYMBOL_GPL vmlinux 0xf07f663e debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0xf0811fb5 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0xf0c96d76 ide_check_atapi_device +EXPORT_SYMBOL_GPL vmlinux 0xf0cfb685 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0xf0d33878 sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0xf0dc0403 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0xf0eb63d2 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf105d00d ide_in_drive_list +EXPORT_SYMBOL_GPL vmlinux 0xf1097b48 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0xf10db2f9 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xf158f170 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0xf168b844 thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0xf180498b regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf18cedb0 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0xf196b068 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xf1a62b6f of_i8042_kbd_irq +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf203102c led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0xf208ad7e ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf2526bc3 ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0xf2567651 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0xf26c90e9 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf2807da4 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xf2b1c3ba sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0xf2d1f2d1 modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xf2f077cc pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf30265f6 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xf30f1333 ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf324a5a8 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf37316e5 inet_csk_compat_setsockopt +EXPORT_SYMBOL_GPL vmlinux 0xf3962c95 srp_rport_add +EXPORT_SYMBOL_GPL vmlinux 0xf3abe46e regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3dbfd61 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0xf3fdc88f i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xf43a4891 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0xf464fd6c ide_dma_host_set +EXPORT_SYMBOL_GPL vmlinux 0xf48ae4be nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4ab208c rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0xf4b42f71 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xf4c260e4 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xf4d0cfee netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0xf4e3a668 find_module +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf52a2632 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5fef4e3 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf625d75a md_stop +EXPORT_SYMBOL_GPL vmlinux 0xf661be8d virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0xf6b6a759 sysfs_get_dirent_ns +EXPORT_SYMBOL_GPL vmlinux 0xf6dad09d wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf6e4be86 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0xf6e73bd9 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf7024e83 tty_prepare_flip_string_flags +EXPORT_SYMBOL_GPL vmlinux 0xf71b1380 of_get_dma_window +EXPORT_SYMBOL_GPL vmlinux 0xf7211854 save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0xf7222b03 sync_filesystem +EXPORT_SYMBOL_GPL vmlinux 0xf7237c14 scom_map_device +EXPORT_SYMBOL_GPL vmlinux 0xf77bca95 unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xf783a658 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0xf7d7eb7b queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xf7ee5d69 tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0xf7f8da22 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0xf8100daa crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0xf816c866 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0xf8173446 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf837de17 ide_pci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf837e0eb unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xf8410673 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0xf84497cd pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0xf8466b02 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0xf850e83c raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0xf853057f tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0xf878f89e sysfs_add_device_to_node +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf8834391 virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0xf894bcc0 ide_queue_sense_rq +EXPORT_SYMBOL_GPL vmlinux 0xf8b5d8ac __fat_fs_error +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 0xf90361ad cpu_add_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0xf9154bff inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0xf9205ed8 devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xf921edc9 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf9331714 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xf9346530 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0xf94410a8 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xf9526784 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xf9630e8c pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9ac9557 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0xf9c7db2c wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9cff3db put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xf9ddbfbc sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0xf9e70109 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0xfa012fe7 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0xfa07afb0 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa44ed26 dev_hard_start_xmit +EXPORT_SYMBOL_GPL vmlinux 0xfa5dbf20 cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0xfa78e76f rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xfa901b31 compat_get_timespec +EXPORT_SYMBOL_GPL vmlinux 0xfa9f23a5 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0xfab60503 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xfadb065b regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xfade7a8a flush_vsx_to_thread +EXPORT_SYMBOL_GPL vmlinux 0xfb2943ca sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb52b77d __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb6fba97 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfba2461a exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0xfbaf8ea2 wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0xfbb4caba task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0xfbbedefd of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0xfbfc5306 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc1243f4 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xfc201b66 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0xfc52976a tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0xfc6b4d82 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0xfc7334e3 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0xfc9e3dfc gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0xfcc1cab1 regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfcdb8ab3 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xfce6d6de ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0xfceadb86 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0xfd09e099 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0xfd371360 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xfd37c886 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0xfd42949c cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0xfd54e03c rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xfd61a203 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0xfd6684f2 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xfd88fe34 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xfd995319 dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xfdf1171a usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0xfdf5d215 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xfe005167 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfe0f623c ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0xfe1fa0db of_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xfe4a2076 vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0xfe7451c4 max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xfe779652 ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfeaf5794 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff1e12a0 need_load_eval +EXPORT_SYMBOL_GPL vmlinux 0xff4064d6 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0xff4b8ac4 regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff5ec8a1 tpm_show_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xffda1973 arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0xffdbf8be sdio_f0_readb --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/ppc64el/generic.compiler +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/ppc64el/generic.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4 --- linux-3.13.0.orig/debian.master/abi/3.13.0-98.145/ppc64el/generic.modules +++ linux-3.13.0/debian.master/abi/3.13.0-98.145/ppc64el/generic.modules @@ -0,0 +1,2923 @@ +3c59x +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250_dw +8390 +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm860x-ts +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +9p +9pnet +9pnet_rdma +9pnet_virtio +DAC960 +a100u2w +a3d +a8293 +aacraid +aat2870-regulator +aat2870_bl +ab3100 +ab3100-otp +acard-ahci +acecad +acenic +act200l-sir +act_csum +act_gact +act_ipt +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +actisys-sir +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5449 +ad5504 +ad5624r_spi +ad5686 +ad5755 +ad5764 +ad5791 +ad714x +ad714x-i2c +ad714x-spi +ad7266 +ad7298 +ad7303 +ad7314 +ad7414 +ad7418 +ad7476 +ad7791 +ad7793 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad7923 +ad8366 +ad9523 +ad_sigma_delta +adcxx +adf4350 +adfs +adi +adis16080 +adis16130 +adis16136 +adis16260 +adis16400 +adis16480 +adis_lib +adjd_s311 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1275 +adm8211 +adm9240 +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +ads1015 +ads7828 +ads7846 +ads7871 +adt7310 +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adv7180 +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +af-rxrpc +af9013 +af9033 +af_802154 +af_alg +af_key +af_packet_diag +affs +ah4 +ah6 +ahci +ahci_platform +aic79xx +aic7xxx +aic94xx +aiptek +airo +ak8975 +algif_hash +algif_skcipher +ali-ircc +alim7101_wdt +altera-stapl +altera_jtaguart +altera_uart +alx +amc6821 +amd8111e +ams369fg06 +analog +anatop-regulator +ansi_cprng +anubis +aoe +apds9300 +apds9802als +apds990x +appletalk +appletouch +applicom +ar5523 +ar7part +arc-rawmode +arc-rimi +arc4 +arc_emac +arc_uart +arcmsr +arcnet +arizona-i2c +arizona-spi +arkfb +arp_tables +arpt_mangle +arptable_filter +as3711-regulator +as3711_bl +as3722-regulator +as5011 +asc7621 +asix +ast +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at86rf230 +at91_ether +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-ssc +atmel_mxt_ts +atmel_pci +atmtcp +atp870u +atxp1 +aty128fb +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo-pixcir-ts +auo_k1900fb +auo_k1901fb +auo_k190x +auth_rpcgss +authenc +authencesn +autofs4 +avmfritz +ax25 +ax88179_178a +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 +bcm5974 +bcma +bd6107 +be2iscsi +be2net +befs +bfa +bfs +bfusb +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluetooth +bma150 +bma180 +bmp085 +bmp085-i2c +bmp085-spi +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bonding +bpa10x +bpck +bpqether +bq2415x_charger +bq24190_charger +bq24735-charger +bq27x00_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +broadsheetfb +bsd_comp +bsr +bt878 +btcoexist +btcx-risc +btmrvl +btmrvl_sdio +btrfs +btsdio +bttv +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +bw-qcam +c-qcam +c4 +c_can +c_can_pci +c_can_platform +cachefiles +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 +cb710 +cb710-mmc +cc770 +cc770_isa +cc770_platform +cciss +ccm +cdc-acm +cdc-phonet +cdc-wdm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc_subset +ceph +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch7006 +chipreg +chnl_net +cifs +cirrus +cirrusfb +clip +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm36651 +cma3000_d0x +cma3000_d0x_i2c +cmac +cmdlinepart +cmtp +cnic +cobra +coda +com20020 +com20020-pci +com90io +com90xx +comm +configfs +cordic +core +cpc925_edac +cpia2 +cpu-notifier-error-inject +cramfs +crc-ccitt +crc-itu-t +crc32 +crc7 +crc8 +cros_ec +cros_ec_i2c +cros_ec_keyb +cros_ec_spi +cryptd +crypto_null +crypto_user +cryptoloop +cs5345 +cs53l32a +csiostor +ctr +cts +cuse +cw1200_core +cw1200_wlan_sdio +cw1200_wlan_spi +cx18 +cx22700 +cx22702 +cx231xx +cx231xx-dvb +cx2341x +cx24110 +cx24113 +cx24116 +cx24123 +cx25821 +cx25840 +cx82310_eth +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx8800 +cx8802 +cx88xx +cxacru +cxd2820r +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cy8ctmg110_ts +cyapa +cyber2000fb +cyclades +cypress_firmware +cyttsp4_core +cyttsp4_i2c +cyttsp4_spi +cyttsp_core +cyttsp_i2c +cyttsp_i2c_common +cyttsp_spi +da9052-battery +da9052-hwmon +da9052-regulator +da9052_bl +da9052_onkey +da9052_tsi +da9052_wdt +da9055-hwmon +da9055-regulator +da9055_onkey +da9055_wdt +da9063-regulator +da9210-regulator +db9 +dc395x +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +ddbridge +decnet +deflate +defxx +denali +denali_pci +des_generic +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +diskonchip +diva_idi +diva_mnt +divacapi +divadidd +divas +dl2k +dlci +dlm +dm-bio-prison +dm-bufio +dm-cache +dm-cache-cleaner +dm-cache-mq +dm-crypt +dm-delay +dm-flakey +dm-log +dm-log-userspace +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 +dm1105 +dm9601 +dmx3191d +dn_rtmsg +dnet +docg3 +docg4 +drbd +drm +drm_kms_helper +drm_usb +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsa_core +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +dummy +dummy-irq +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-dw2102 +dvb-usb-ec168 +dvb-usb-friio +dvb-usb-gl861 +dvb-usb-gp8psk +dvb-usb-it913x +dvb-usb-lmedm04 +dvb-usb-m920x +dvb-usb-mxl111sf +dvb-usb-nova-t-usb2 +dvb-usb-opera +dvb-usb-pctv452e +dvb-usb-rtl28xxu +dvb-usb-technisat-usb2 +dvb-usb-ttusb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +dvb_usb_v2 +dw_dmac +dw_dmac_core +dw_dmac_pci +dynapro +e100 +e1000 +e1000e +e4000 +earth-pt1 +eata +ebt_802_3 +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ec100 +edac_core +edt-ft5x06 +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efs +egalax_ts +elo +em28xx +em28xx-dvb +em28xx-rc +em_canid +em_cmp +em_ipset +em_meta +em_nbyte +em_text +em_u32 +emc1403 +emc2103 +emc6w201 +ems_pci +ems_usb +emu10k1-gp +enc28j60 +enclosure +eni +enic +epat +epia +epic100 +eql +esas2r +esd_usb2 +esi-sir +esp4 +esp6 +ethoc +evbug +exofs +extcon-adc-jack +extcon-gpio +extcon-max77693 +extcon-max8997 +extcon-palmas +f2fs +f75375s +fakelb +fan53555 +farsync +faulty +fb_ddc +fb_sys_fops +fc0011 +fc0012 +fc0013 +fc2580 +fcoe +fcrypt +fdomain +fealnx +ff-memless +firedtv +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +fit2 +fit3 +fixed +flexcan +floppy +fm801-gp +fmc +fmc-chardev +fmc-fakedev +fmc-trivial +fmc-write-eeprom +forcedeth +fore_200e +freevxfs +friq +frpw +fsa9480 +fscache +fsl_elbc_nand +ftl +fujitsu_ts +g450_pll +g760a +g762 +gamecon +gameport +garp +gcm +gdth +gen_probe +generic +generic-adc-battery +generic_bl +gf128mul +gf2k +gfs2 +ghash-generic +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +goldfishfb +gp2ap002a00f +gp2ap020a00f +gpio +gpio-74x164 +gpio-addr-flash +gpio-adnp +gpio-adp5588 +gpio-amd8111 +gpio-arizona +gpio-charger +gpio-da9052 +gpio-da9055 +gpio-dwapb +gpio-fan +gpio-generic +gpio-grgpio +gpio-ir-recv +gpio-janz-ttl +gpio-kempld +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio-pca953x +gpio-pcf857x +gpio-rdc321x +gpio-regulator +gpio-tps65912 +gpio-ts5500 +gpio-viperboard +gpio-vx855 +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +gpio_backlight +gpio_keys +gpio_keys_polled +gpio_mouse +gpio_tilt_polled +grcan +gre +grip +grip_mp +gspca_benq +gspca_conex +gspca_cpia1 +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_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gtco +guillemot +gunze +hamachi +hampshire +hangcheck-timer +hanwang +hci +hci_uart +hci_vhci +hdlc +hdlc_cisco +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdlcdrv +hdpvr +he +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfc_usb +hfcmulti +hfcpci +hfcsusb +hfs +hfsplus +hid +hid-a4tech +hid-apple +hid-appleir +hid-aureal +hid-axff +hid-belkin +hid-cherry +hid-chicony +hid-cypress +hid-dr +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-generic +hid-gyration +hid-holtek-kbd +hid-holtek-mouse +hid-holtekff +hid-huion +hid-icade +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-lenovo-tpkbd +hid-logitech +hid-logitech-dj +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hid-petalynx +hid-picolcd +hid-pl +hid-primax +hid-rmi +hid-roccat +hid-roccat-arvo +hid-roccat-common +hid-roccat-isku +hid-roccat-kone +hid-roccat-koneplus +hid-roccat-konepure +hid-roccat-kovaplus +hid-roccat-lua +hid-roccat-pyra +hid-roccat-ryos +hid-roccat-savu +hid-saitek +hid-samsung +hid-sensor-accel-3d +hid-sensor-als +hid-sensor-gyro-3d +hid-sensor-hub +hid-sensor-iio-common +hid-sensor-magn-3d +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-wacom +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hidp +hih6130 +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hmc6352 +hopper +hostap +hostap_pci +hostap_plx +hp100 +hpfs +hpilo +hpsa +hptiop +hsi +hsi_char +hsr +htc-pasic3 +htu21 +huawei_cdc_ncm +hvcs +hvcserver +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-designware-core +i2c-designware-pci +i2c-dev +i2c-diolan-u2c +i2c-eg20t +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-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 +i2o_block +i2o_bus +i2o_core +i2o_proc +i2o_scsi +i40e +i40evf +i5k_amb +i6300esb +i740fb +ib_addr +ib_cm +ib_core +ib_ehca +ib_ipoib +ib_iser +ib_isert +ib_mad +ib_mthca +ib_qib +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +ibmaem +ibmpex +ibmvfc +icom +ics932s401 +ideapad_slidebar +idt77252 +idt_gen2 +idtcps +ieee802154 +ifb +iforce +igb +igbvf +iguanair +iio-trig-interrupt +iio-trig-sysfs +iio_hwmon +ili210x +ili922x +ili9320 +imm +imon +ims-pcu +imx074 +imx_thermal +ina209 +ina2xx +industrialio +industrialio-triggered-buffer +inet_diag +inexio +inftl +initio +input-polldev +int51x1 +intel_vr_nor +interact +interval_tree_test +inv-mpu6050 +ioc4 +ip6_gre +ip6_tables +ip6_tunnel +ip6_vti +ip6t_MASQUERADE +ip6t_NPT +ip6t_REJECT +ip6t_SYNPROXY +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_mh +ip6t_rpfilter +ip6t_rt +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6table_security +ip_gre +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netnet +ip_set_hash_netport +ip_set_hash_netportnet +ip_set_list_set +ip_tables +ip_tunnel +ip_vs +ip_vs_dh +ip_vs_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 +ipack +ipcomp +ipcomp6 +ipddp +ipg +iphase +ipip +ipmi_devintf +ipmi_poweroff +ipmi_si +ipmi_watchdog +ipoctal +ipr +ips +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_SYNPROXY +ipt_ULOG +ipt_ah +ipt_rpfilter +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +iptable_security +ipw2100 +ipw2200 +ipx +ir-jvc-decoder +ir-kbd-i2c +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +ir-rc5-decoder +ir-rc5-sz-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sony-decoder +ircomm +ircomm-tty +irda +irda-usb +irlan +irnet +irtty-sir +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isl29003 +isl29020 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isofs +isp1704_charger +it913x-fe +itd1000 +itg3200 +ivtv +ivtvfb +iw_cm +iw_cxgb3 +iw_cxgb4 +iw_nes +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jmb38x_ms +jme +joydev +joydump +jsm +kafs +kalmia +kbic +kbtab +kempld-core +kempld_wdt +kernelcapi +keyspan_remote +kfifo_buf +khazad +kingsun-sir +ks0108 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksz884x +ktti +kvaser_pci +kvaser_usb +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 +lec +leds-88pm860x +leds-bd2802 +leds-blinkm +leds-da9052 +leds-dac124s085 +leds-gpio +leds-lm3530 +leds-lm3533 +leds-lm355x +leds-lm3642 +leds-lp3944 +leds-lp5521 +leds-lp5523 +leds-lp5562 +leds-lp55xx-common +leds-lp8501 +leds-lp8788 +leds-lt3593 +leds-max8997 +leds-mc13783 +leds-ot200 +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pca9685 +leds-pwm +leds-regulator +leds-tca6507 +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-oneshot +ledtrig-timer +ledtrig-transient +lg-vl600 +lg2160 +lgdt3305 +lgdt330x +lgs8gxx +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libceph +libcrc32c +libcxgbi +libertas +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libore +libosd +libsas +libsrp +lightning +lineage-pem +linear +lirc_dev +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +litelink-sir +lkkbd +ll_temac +llc +llc2 +lm25066 +lm3533-als +lm3533-core +lm3533-ctrlbank +lm3533_bl +lm3630a_bl +lm3639_bl +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95234 +lm95241 +lm95245 +lms283gf05 +lms501kf03 +lnbp21 +lnbp22 +lockd +lp +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp8755 +lp8788-charger +lp8788_bl +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc2978 +ltc4151 +ltc4215 +ltc4245 +ltc4261 +ltv350qv +lv5207lp +lz4 +lz4_compress +lz4hc +lz4hc_compress +m25p80 +m2m-deinterlace +m52790 +m88rs2000 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +ma600-sir +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +mac80211 +mac80211_hwsim +mac802154 +macb +macvlan +macvtap +mag3110 +magellan +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +matrix-keymap +matrix_keypad +matrox_w1 +matroxfb_DAC1064 +matroxfb_Ti3026 +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +max1111 +max11801_ts +max1363 +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max2165 +max3100 +max34440 +max517 +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77686 +max77693 +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925-regulator +max8925_bl +max8925_onkey +max8925_power +max8952 +max8973-regulator +max8997 +max8997_charger +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 +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp4725 +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +md4 +mdio +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mem2mem_testdev +memory-notifier-error-inject +memstick +mena21_wdt +metronomefb +mfd +mga +michael_mic +microread +microread_i2c +mii +minix +mip6 +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mma8450 +mmc_block +mmc_spi +mms114 +moxa +mpoa +mpr121_touchkey +mpt2sas +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +mrst_max3110 +ms_block +msdos +msp3400 +mspro_block +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt312 +mt352 +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtd_dataflash +mtdblock +mtdblock_ro +mtdoops +mtdram +mtdswap +mtip32xx +mtouch +multipath +mv88e6060 +mv88e6xxx_drv +mvmdio +mvsas +mvumi +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxl111sf-demod +mxl111sf-tuner +mxl5005s +mxl5007t +mxser +myri10ge +n_hdlc +n_r3964 +n_tracerouter +n_tracesink +nand +nand_bch +nand_ecc +nand_ids +nandsim +natsemi +nau7802 +nbd +nci +ncpfs +ne2k-pci +neofb +net1080 +netconsole +netjet +netlink_diag +netprio_cgroup +netrom +netxen_nic +newtonkbd +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 +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nf_synproxy_core +nf_tables +nf_tables_arp +nf_tables_bridge +nf_tables_ipv4 +nf_tables_ipv6 +nfc +nfc_digital +nfcsim +nfcwilink +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nfs +nfs_acl +nfs_layout_nfsv41_files +nfsd +nfsv2 +nfsv3 +nfsv4 +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 +nft_limit +nft_log +nft_meta +nft_nat +nft_rbtree +nft_reject_ipv4 +nftl +ngene +nicstar +nilfs2 +niu +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 +ns558 +ns83820 +nsc-ircc +ntc_thermistor +ntfs +null_blk +nvidiafb +nvme +nxt200x +nxt6000 +objlayoutdriver +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stack_o2cb +ocfs2_stack_user +ocfs2_stackglue +ocrdma +of_mmc_spi +ofpart +old_belkin-sir +omfs +on20 +on26 +onenand +opencores-kbd +openvswitch +oprofile +or51132 +or51211 +orinoco +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +osd +osdblk +osst +output +ov2640 +ov5642 +ov6650 +ov7670 +ov772x +ov9640 +ov9740 +overlayfs +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +palmas-regulator +paride +parport +parport_ax88796 +parport_pc +parport_serial +pata_ali +pata_amd +pata_arasan_cf +pata_artop +pata_atiixp +pata_atp867x +pata_cmd640 +pata_cmd64x +pata_cs5520 +pata_cs5530 +pata_cs5536 +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_sc1200 +pata_sch +pata_serverworks +pata_sil680 +pata_sis +pata_sl82c105 +pata_triflex +pata_via +pc300too +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_can +pch_phub +pch_uart +pci +pci-stub +pci200syn +pcnet32 +pcrypt +pcspkr +pcwd_pci +pcwd_usb +pd +pda_power +pdc_adma +peak_pci +peak_usb +penmount +pf +pfuze100-regulator +pg +phantom +phonet +phram +phy-generic +phy-gpio-vbus-usb +physmap +physmap_of +pixcir_i2c_ts +pktcdvd +pktgen +plat-ram +plat_nand +platform_lcd +plip +plusb +pluto2 +plx_pci +pm-notifier-error-inject +pm2fb +pm3fb +pm80xx +pmbus +pmbus_core +pmc551 +pmcraid +pn533 +pn544 +pn544_i2c +pn_pep +port100 +powermate +powernv-rng +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +ppp_synctty +pppoatm +pppoe +pppox +pptp +pseries-rng +psmouse +psnap +pt +pvrusb2 +pwc +pwm-pca9685 +pwm_bl +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qmi_wwan +qnx4 +qnx6 +qt1010 +qt1070 +qt2160 +quota_tree +quota_v1 +quota_v2 +qxl +r128 +r592 +r6040 +r815x +r8169 +r820t +r852 +radeon +radeonfb +radio-i2c-si470x +radio-keene +radio-ma901 +radio-maxiradio +radio-mr800 +radio-shark +radio-si4713 +radio-tea5764 +radio-timb +radio-usb-si470x +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +rbd +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-em-terratec +rc-encore-enltv +rc-encore-enltv-fm53 +rc-encore-enltv2 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-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-tbs-nec +rc-technisat-usb2 +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-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rc5t583-regulator +rcar_vin +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +redboot +redrat3 +reed_solomon +remoteproc +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rio-scan +rionet +rivafb +rj54n1cb0c +rmd128 +rmd160 +rmd256 +rmd320 +rndis_host +rndis_wlan +rocket +romfs +rose +rotary_encoder +rp2 +rpadlpar_io +rpaphp +rpcsec_gss_krb5 +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt61pci +rt73usb +rtas_flash +rtc-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-as3722 +rtc-bq32k +rtc-bq4802 +rtc-cmos +rtc-da9052 +rtc-da9055 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1742 +rtc-ds2404 +rtc-ds3232 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-generic +rtc-hid-sensor-time +rtc-isl12022 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max77686 +rtc-max8907 +rtc-max8925 +rtc-max8997 +rtc-max8998 +rtc-mc13xxx +rtc-moxart +rtc-msm6242 +rtc-palmas +rtc-pcf2123 +rtc-pcf2127 +rtc-pcf50633 +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-snvs +rtc-stk17ta8 +rtc-tps6586x +rtc-tps65910 +rtc-tps80031 +rtc-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtc_cmos_setup +rtl2830 +rtl2832 +rtl8180 +rtl8187 +rtl8188ee +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192se +rtl8723-common +rtl8723ae +rtl8723be +rtl_pci +rtl_usb +rtlwifi +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rxkad +s1d13xxxfb +s2255drv +s2io +s3fb +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s6e63m0 +s921 +saa6588 +saa6752hs +saa7115 +saa7127 +saa7134 +saa7134-dvb +saa7134-empress +saa7146 +saa7146_vv +saa7164 +saa717x +saa7706h +salsa20_generic +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 +sc92031 +scanlog +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_fq +sch_fq_codel +sch_gred +sch_hfsc +sch_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +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_tgt +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +sctp +sctp_probe +sdhci +sdhci-of-esdhc +sdhci-of-hlwd +sdhci-pci +sdhci-pltfm +sdio_uart +seed +seqiv +ser_gigaset +sermouse +serpent_generic +serport +ses +sfc +sh_eth +sh_veu +sha1-powerpc +shark2 +sht15 +sht21 +si21xx +si4713-i2c +si476x-core +sidewinder +sierra_net +sil164 +sir-dev +sis +sis190 +sis5595 +sis900 +sisfb +sit +sja1000 +sja1000_isa +sja1000_of_platform +sja1000_platform +skd +skfp +skge +sky2 +slcan +slip +slram +sm501 +sm501fb +sm_common +sm_ftl +smb347-charger +smm665 +smsc-ircc2 +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +smscufx +smsdvb +smsmdtv +smssdio +smsusb +soc_camera +soc_camera_platform +soc_mediabus +soc_scale_crop +softdog +softing +solos-pci +sp8870 +sp887x +spaceball +spaceorb +sparse-keymap +speedfax +speedtch +spi-altera +spi-bitbang +spi-butterfly +spi-dw +spi-dw-midpci +spi-gpio +spi-lm70llp +spi-oc-tiny +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-sc18is602 +spi-tle62x0 +spi-topcliff-pch +spi-xcomm +spi_ks8995 +spidev +squashfs +sr9700 +ssb +ssd1307fb +ssfdc +sst25l +sstfb +st +st1232 +st_accel +st_accel_i2c +st_accel_spi +st_drv +st_gyro +st_gyro_i2c +st_gyro_spi +st_magn +st_magn_i2c +st_magn_spi +st_pressure +st_pressure_i2c +st_pressure_spi +st_sensors +st_sensors_i2c +st_sensors_spi +starfire +stb0899 +stb6000 +stb6100 +ste_modem_rproc +stex +stinger +stir4200 +stk1160 +stkwebcam +stmmac +stmpe-keypad +stmpe-ts +stowaway +stp +streamzap +stv0288 +stv0297 +stv0299 +stv0900 +stv090x +stv6110 +stv6110x +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +svcrdma +svgalib +sx8 +sym53c8xx +synaptics_i2c +synaptics_usb +synclink +synclink_gt +synclinkmp +syscopyarea +sysfillrect +sysimgblt +sysv +t1pci +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +tc3589x-keypad +tca6416-keypad +tca8418_keypad +tcm_fc +tcm_loop +tcm_qla2xxx +tcp_bic +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 +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_power +tgr192 +thmc50 +ti-adc081c +ti_dac7512 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timb_dma +timberdale +timblogiw +timbuart +timeriomem-rng +tipc +tlan +tm6000 +tm6000-dvb +tmdc +tmiofb +tmp006 +tmp102 +tmp401 +tmp421 +tmscsim +toim3232-sir +touchit213 +touchright +touchwin +tpci200 +tpm-rng +tpm_atmel +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm_i2c_stm_st33 +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-charger +tps65090-regulator +tps65217 +tps65217-regulator +tps65217_bl +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +tridentfb +ts2020 +ts_bm +ts_fsm +ts_kmp +tsc2005 +tsc2007 +tsc40 +tsi568 +tsi57x +tsl2550 +tsl2563 +tsl4531 +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tuner +tuner-simple +tuner-types +tuner-xc2028 +tuner_it913x +tunnel4 +tunnel6 +turbografx +tvaudio +tveeprom +tvp5150 +tw9910 +twidjoy +twofish_common +twofish_generic +typhoon +uartlite +ubi +ubifs +ucd9000 +ucd9200 +udf +udl +udlfb +udp_diag +ueagle-atm +ufs +ufshcd +ufshcd-pci +ufshcd-pltfrm +uhid +uio +uio_pci_generic +umc +umem +unix_diag +upd64031a +upd64083 +usb-storage +usb8xxx +usb_8dev +usb_gigaset +usbatm +usbhid +usbkbd +usbmon +usbmouse +usbnet +usbtouchscreen +usbtv +usbvision +userspace-consumer +ushc +uvcvideo +uvesafb +uwb +v4l2-common +v4l2-dv-timings +v4l2-int-device +v4l2-mem2mem +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vga16fb +vgastate +vgg2432a4 +vhost +vhost_net +vhost_scsi +via +via-ircc +via-rhine +via-sdmmc +via-velocity +via686a +videobuf-core +videobuf-dma-contig +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videobuf2-core +videobuf2-dma-contig +videobuf2-memops +videobuf2-vmalloc +videodev +viperboard +viperboard_adc +virtio-rng +virtio_scsi +virtual +vivi +vlsi_ir +vmac +vme +vme_vmivme7805 +vmwgfx +vmxnet3 +vp27smpx +vringh +vsock +vsxxxaa +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +w1-gpio +w1_bq27000 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1_smem +w1_therm +w5100 +w5300 +w6692 +w83781d +w83791d +w83792d +w83793 +w83795 +w83977af_ir +w83l785ts +w83l786ng +w9966 +wacom +wacom_i2c +wacom_w8001 +walkera0701 +wanxl +warrior +wbsd +wcn36xx +wdrtas +wdt_pci +whc-rc +whci +whci-hcd +wil6210 +wimax +wire +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wlcore +wlcore_sdio +wlcore_spi +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x-ts +wm831x_backup +wm831x_bl +wm831x_power +wm831x_wdt +wm8350-hwmon +wm8350-regulator +wm8350_power +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-regulator +wp512 +wusb-wa +wusbcore +x25 +x25_asy +x_tables +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 +xgene-enet +xgmac +xilinx_uartps +xor +xpad +xprtrdma +xt_AUDIT +xt_CHECKSUM +xt_CLASSIFY +xt_CONNSECMARK +xt_CT +xt_DSCP +xt_HL +xt_HMARK +xt_IDLETIMER +xt_LED +xt_LOG +xt_NETMAP +xt_NFLOG +xt_NFQUEUE +xt_RATEEST +xt_REDIRECT +xt_SECMARK +xt_TCPMSS +xt_TCPOPTSTRIP +xt_TEE +xt_TPROXY +xt_TRACE +xt_addrtype +xt_bpf +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_conntrack +xt_cpu +xt_dccp +xt_devgroup +xt_dscp +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_iprange +xt_ipvs +xt_length +xt_limit +xt_mac +xt_mark +xt_multiport +xt_nat +xt_nfacct +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_realm +xt_recent +xt_sctp +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_tcpudp +xt_time +xt_u32 +xtkbd +xts +xusbatm +yam +yealink +yellowfin +zaurus +zd1201 +zd1211rw +zforce_ts +zhenhua +zl10036 +zl10039 +zl10353 +zl6100 +zlib +zr364xx --- linux-3.13.0.orig/debian.master/changelog +++ linux-3.13.0/debian.master/changelog @@ -0,0 +1,24311 @@ +linux (3.13.0-100.147) trusty; urgency=low + + * CVE-2016-5195 + - SAUCE: mm: remove gup_flags FOLL_WRITE games from __get_user_pages() + + -- Stefan Bader Tue, 18 Oct 2016 10:27:42 +0200 + +linux (3.13.0-98.145) trusty; urgency=low + + * Fix GRO recursion overflow for tunneling protocols (LP: #1631287) + - tunnels: Don't apply GRO to multiple layers of encapsulation. + + * CVE-2016-7039 + - SAUCE: net: add recursion limit to GRO + + -- Seth Forshee Fri, 07 Oct 2016 20:08:32 -0500 + +linux (3.13.0-97.144) trusty; urgency=low + + [ Joseph Salisbury ] + + * Release Tracking Bug + - LP: #1626604 + + * Altering use_tempaddr drops all IPv6 addresses (LP: #994931) + - Revert "UBUNTU: SAUCE: (no-up) ipv6: Fix net.ipv6.conf.all.use_tempaddr + sysctl" + - Revert "UBUNTU: SAUCE: (no-up) ipv6: make the net.ipv6.conf.all.use_tempaddr + sysctl propagate to interface settings" + - neigh: convert parms to an array + - neigh: wrap proc dointvec functions + - neigh: use tbl->family to distinguish ipv4 from ipv6 + - neigh: restore old behaviour of default parms values + - neigh: ipv6: respect default values set before an address is assigned to + device + + * PCI quirk required for correct access to configuration space of NFP + 4000/6000 (LP: #1624267) + - PCI: Support PCIe devices with short cfg_size + - PCI: Add Netronome vendor and device IDs + - PCI: Limit config space size for Netronome NFP6000 family + - PCI: Add Netronome NFP4000 PF device ID + - PCI: Limit config space size for Netronome NFP4000 + + * CVE-2016-6136 + - audit: fix a double fetch in audit_log_single_execve_arg() + + * CVE-2016-6480 + - aacraid: Check size values after double-fetch from user + + * CVE-2016-6828 + - tcp: fix use after free in tcp_xmit_retransmit_queue() + + * IPv6 with LVS Performance issue in latest 3.13LTS kernels (LP: #1618299) + - ipv6: remove prune parameter for fib6_clean_all + - ipv6: remove rt6i_genid + + * lsattr 32bit does not work on 64bit kernel (Inappropriate ioctl error) + (LP: #1619918) + - btrfs: bugfix: handle FS_IOC32_{GETFLAGS, SETFLAGS, GETVERSION} in + btrfs_ioctl + + * Miscellaneous upstream changes + - powerpc/pseries: use pci_host_bridge.release_fn() to kfree(phb) + + -- Joseph Salisbury Thu, 22 Sep 2016 11:12:47 -0400 + +linux (3.13.0-96.143) trusty; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1618083 + + * CVE-2015-8767 + - sctp: Prevent soft lockup when sctp_accept() is called during a timeout + event + + * MacBookPro11,4 fails to poweroff or suspend (LP: #1587714) + - SAUCE: PCI: Workaround to enable poweroff on Mac Pro 11 + + * 3.13: libvirtd: page allocation failure: order:4, mode:0x1040d0 + (LP: #1616193) + - vhost-net: extend device allocation to vmalloc + - vhost-net: don't open-code kvfree + + * [arm64] nova instances can't boot with 3.13.0-92 (LP: #1608854) + - Revert "UBUNTU: [Config] CONFIG_EFI=n for arm64" + - Revert "UBUNTU: SAUCE: UEFI: Set EFI_SECURE_BOOT bit in x86_efi_facility" + - Revert "UBUNTU: SAUCE: UEFI: Add secure boot and MOK SB State disabled + sysctl" + - Revert "UBUNTU: SAUCE: UEFI: Display MOKSBState when disabled" + - Revert "UBUNTU: SAUCE: UEFI: efi: Disable secure boot if shim is in insecure + mode" + - Revert "UBUNTU: SAUCE: UEFI MODSIGN: Import certificates from UEFI Secure + Boot" + - Revert "UBUNTU: SAUCE: UEFI: efi: Make EFI_SECURE_BOOT_SIG_ENFORCE depend on + EFI" + - Revert "UBUNTU: SAUCE: UEFI: Add option to automatically enforce module + signatures when in Secure Boot mode" + - Revert "UBUNTU: [Config] CONFIG_EFI_SECURE_BOOT_SIG_ENFORCE=y" + - Revert "UBUNTU: SAUCE: UEFI: x86: Restrict MSR access when module loading is + restricted" + - Revert "UBUNTU: SAUCE: UEFI: kexec: Disable at runtime if the kernel + enforces module loading restrictions" + - Revert "UBUNTU: SAUCE: UEFI: acpi: Ignore acpi_rsdp kernel parameter when + module loading is restricted" + - Revert "UBUNTU: SAUCE: UEFI: Restrict /dev/mem and /dev/kmem when module + loading is restricted" + - Revert "UBUNTU: SAUCE: UEFI: asus-wmi: Restrict debugfs interface when + module loading is restricted" + - Revert "UBUNTU: SAUCE: UEFI: ACPI: Limit access to custom_method" + - Revert "UBUNTU: SAUCE: UEFI: x86: Lock down IO port access when module + security is enabled" + - Revert "UBUNTU: SAUCE: UEFI: PCI: Lock down BAR access when module security + is enabled" + - Revert "UBUNTU: SAUCE: UEFI: Add secure_modules() call" + - Revert "x86/efi: Build our own EFI services pointer table" + - Revert "efi: Add separate 32-bit/64-bit definitions" + + * [Hyper-V] storvsc messages for CD-ROM medium not present tray closed + (LP: #1590655) + - scsi: storvsc: Filter out storvsc messages CD-ROM medium not present + + * CVE-2016-3841 + - ipv6: add complete rcu protection around np->opt + + -- Kamal Mostafa Tue, 16 Aug 2016 10:20:51 -0700 + +linux (3.13.0-95.142) trusty; urgency=low + + [ Stefan Bader ] + + * Release Tracking Bug + - LP: #1612715 + + * CVE-2016-5696 + - tcp: make challenge acks less predictable + + -- Stefan Bader Fri, 12 Aug 2016 18:37:52 +0200 + +linux (3.13.0-94.141) trusty; urgency=low + + [ Stefan Bader ] + + * Release Tracking Bug + - LP: #1611281 + + * CVE-2016-5828 + - powerpc/tm: Always reclaim in start_thread() for exec() class syscalls + + * CVE-2016-5829 + - HID: hiddev: validate num_values for HIDIOCGUSAGES, HIDIOCSUSAGES commands + + * changelog: add CVEs as first class citizens (LP: #1604344) + - use CVE numbers in changelog + - avoid duplicate CVE numbers in changelog + + * CVE-2016-5728 + - misc: mic: Fix for double fetch security bug in VOP driver + + * CVE-2016-5244 (LP: #1589041) + - rds: fix an infoleak in rds_inc_info_copy + + -- Stefan Bader Tue, 09 Aug 2016 10:44:14 +0200 + +linux (3.13.0-93.140) trusty; urgency=low + + [ Seth Forshee ] + + * Release Tracking Bug + - LP: #1604134 + + * Boot failure with EFI stub (LP: #1603476) + - x86/efi: Fix boot failure with EFI stub + + * CVE-2016-5243 (LP: #1589036) + - tipc: fix an infoleak in tipc_nl_compat_link_dump + + * qeth: delete napi struct when removing a qeth device (LP: #1601831) + - qeth: delete napi struct when removing a qeth device + + * deadlock on balloon deflation (LP: #1598197) + - SAUCE: mm/balloon_compaction: Fix Regression of LP#1572562 + + * serial: 8250_pci: Add support for 16 port Exar boards (LP: #1447485) + - serial: 8250_pci: Add support for 16 port Exar boards + - serial: 8250_pci: Add support for 12 port Exar boards + - serial: 8250_pci: Correct uartclk for xr17v35x expansion chips + + * linux: Homogenize changelog format across releases (LP: #1599562) + - Revert "UBUNTU: [debian] BugLink: close LP: bugs only for Launchpad urls" + - [Debian] git-ubuntu-log -- switch to bug order + - [Debian] git-ubuntu-log -- fix empty section formatting + - [Debian] git-ubuntu-log -- output should be utf-8 + - [Debian] git-ubuntu-log -- handle invalid or private bugs + - [Debian] git-ubuntu-log -- wrap long bug and commit titles + - [Debian] git-ubuntu-log -- ensure we get the last commit + - [Debian] git-ubuntu-log -- prevent bug references being split + - [Debian] git-ubuntu-log -- git log output is UTF-8 + + * exercising ptys causes a kernel oops (LP: #1586418) + - devpts: fix null pointer dereference on failed memory allocation + + * Miscellaneous upstream changes + - KEYS: potential uninitialized variable + + -- Seth Forshee Mon, 18 Jul 2016 15:05:56 -0500 + +linux (3.13.0-92.139) trusty; urgency=low + + [ Kamal Mostafa ] + + * Release Tracking Bug + - LP: #1597060 + + [ Josh Boyer ] + + * SAUCE: UEFI: acpi: Ignore acpi_rsdp kernel parameter when module + loading is restricted + - LP: #1566221 + * SAUCE: UEFI: efi: Make EFI_SECURE_BOOT_SIG_ENFORCE depend on EFI + - LP: #1566221 + * SAUCE: UEFI MODSIGN: Import certificates from UEFI Secure Boot + - LP: #1566221, #1571691 + * SAUCE: UEFI: efi: Disable secure boot if shim is in insecure mode + - LP: #1566221, #1571691 + + [ Matthew Garrett ] + + * SAUCE: UEFI: Add secure_modules() call + - LP: #1566221 + * SAUCE: UEFI: PCI: Lock down BAR access when module security is enabled + - LP: #1566221 + * SAUCE: UEFI: x86: Lock down IO port access when module security is + enabled + - LP: #1566221 + * SAUCE: UEFI: ACPI: Limit access to custom_method + - LP: #1566221 + * SAUCE: UEFI: asus-wmi: Restrict debugfs interface when module loading + is restricted + - LP: #1566221 + * SAUCE: UEFI: Restrict /dev/mem and /dev/kmem when module loading is + restricted + - LP: #1566221 + * SAUCE: UEFI: kexec: Disable at runtime if the kernel enforces module + loading restrictions + - LP: #1566221 + * SAUCE: UEFI: x86: Restrict MSR access when module loading is restricted + - LP: #1566221 + * SAUCE: UEFI: Add option to automatically enforce module signatures when + in Secure Boot mode + - LP: #1566221 + + [ Stefan Bader ] + + * [Config] Add pm80xx scsi driver to d-i + - LP: #1595628 + + [ Tim Gardner ] + + * [Config] CONFIG_EFI_SECURE_BOOT_SIG_ENFORCE=y + * SAUCE: UEFI: Display MOKSBState when disabled + - LP: #1566221, #1571691 + * SAUCE: UEFI: Add secure boot and MOK SB State disabled sysctl + - LP: #1593075 + * SAUCE: UEFI: Set EFI_SECURE_BOOT bit in x86_efi_facility + - LP: #1593075 + * [Config] CONFIG_EFI=n for arm64 + - LP: #1566221 + + [ Upstream Kernel Changes ] + + * powerpc/tm: Abort syscalls in active transactions + - LP: #1572624 + * HID: core: prevent out-of-bound readings + - LP: #1579190 + * efi: Add separate 32-bit/64-bit definitions + - LP: #1566221 + * x86/efi: Build our own EFI services pointer table + - LP: #1566221 + * mm: migrate dirty page without clear_page_dirty_for_io etc + - LP: #1581865 + - CVE-2016-3070 + * oom_kill: change oom_kill.c to use for_each_thread() + - LP: #1592429 + * oom_kill: has_intersects_mems_allowed() needs rcu_read_lock() + - LP: #1592429 + * oom_kill: add rcu_read_lock() into find_lock_task_mm() + - LP: #1592429 + * virtio_balloon: return the amount of freed memory from leak_balloon() + - LP: #1587089 + * virtio_balloon: free some memory from balloon on OOM + - LP: #1587089 + * virtio_ballon: change stub of release_pages_by_pfn + - LP: #1587089 + * virtio_balloon: do not change memory amount visible via /proc/meminfo + - LP: #1587089 + + -- Kamal Mostafa Tue, 28 Jun 2016 12:40:49 -0700 + +linux (3.13.0-91.138) trusty; urgency=medium + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1595991 + + [ Upstream Kernel Changes ] + + * netfilter: x_tables: validate e->target_offset early + - LP: #1555338 + - CVE-2016-3134 + * netfilter: x_tables: make sure e->next_offset covers remaining blob + size + - LP: #1555338 + - CVE-2016-3134 + * netfilter: x_tables: fix unconditional helper + - LP: #1555338 + - CVE-2016-3134 + * netfilter: x_tables: don't move to non-existent next rule + - LP: #1595350 + * netfilter: x_tables: validate targets of jumps + - LP: #1595350 + * netfilter: x_tables: add and use xt_check_entry_offsets + - LP: #1595350 + * netfilter: x_tables: kill check_entry helper + - LP: #1595350 + * netfilter: x_tables: assert minimum target size + - LP: #1595350 + * netfilter: x_tables: add compat version of xt_check_entry_offsets + - LP: #1595350 + * netfilter: x_tables: check standard target size too + - LP: #1595350 + * netfilter: x_tables: check for bogus target offset + - LP: #1595350 + * netfilter: x_tables: validate all offsets and sizes in a rule + - LP: #1595350 + * netfilter: x_tables: don't reject valid target size on some + architectures + - LP: #1595350 + * netfilter: arp_tables: simplify translate_compat_table args + - LP: #1595350 + * netfilter: ip_tables: simplify translate_compat_table args + - LP: #1595350 + * netfilter: ip6_tables: simplify translate_compat_table args + - LP: #1595350 + * netfilter: x_tables: xt_compat_match_from_user doesn't need a retval + - LP: #1595350 + * netfilter: x_tables: do compat validation via translate_table + - LP: #1595350 + * netfilter: x_tables: introduce and use xt_copy_counters_from_user + - LP: #1595350 + + -- Luis Henriques Fri, 24 Jun 2016 16:19:03 +0100 + +linux (3.13.0-90.137) trusty; urgency=low + + [ Kamal Mostafa ] + + * Release Tracking Bug + - LP: #1595693 + + [ Serge Hallyn ] + + * SAUCE: add a sysctl to disable unprivileged user namespace unsharing + - LP: #1555338, #1595350 + + -- Kamal Mostafa Thu, 23 Jun 2016 13:10:53 -0700 + +linux (3.13.0-89.136) trusty; urgency=low + + [ Kamal Mostafa ] + + * Release Tracking Bug + - LP: #1591315 + + [ Kamal Mostafa ] + + * [debian] getabis: Only git add $abidir if running in local repo + - LP: #1584890 + * [debian] getabis: Fix inconsistent compiler versions check + - LP: #1584890 + + [ Stefan Bader ] + + * SAUCE: powerpc/powernv: Fix incomplete backport of 8117ac6 + - LP: #1589910 + + [ Tim Gardner ] + + * [Config] Remove arc4 from nic-modules + - LP: #1582991 + + [ Upstream Kernel Changes ] + + * KVM: x86: move steal time initialization to vcpu entry time + - LP: #1494350 + * lpfc: Fix premature release of rpi bit in bitmask + - LP: #1580560 + * lpfc: Correct loss of target discovery after cable swap. + - LP: #1580560 + * mm/balloon_compaction: redesign ballooned pages management + - LP: #1572562 + * mm/balloon_compaction: fix deflation when compaction is disabled + - LP: #1572562 + * bridge: Fix the way to find old local fdb entries in br_fdb_changeaddr + - LP: #1581585 + * bridge: notify user space after fdb update + - LP: #1581585 + * ALSA: timer: Fix leak in SNDRV_TIMER_IOCTL_PARAMS + - LP: #1580379 + - CVE-2016-4569 + * ALSA: timer: Fix leak in events via snd_timer_user_ccallback + - LP: #1581866 + - CVE-2016-4578 + * ALSA: timer: Fix leak in events via snd_timer_user_tinterrupt + - LP: #1581866 + - CVE-2016-4578 + * net: fix a kernel infoleak in x25 module + - LP: #1585366 + - CVE-2016-4580 + * get_rock_ridge_filename(): handle malformed NM entries + - LP: #1583962 + - CVE-2016-4913 + * netfilter: Set /proc/net entries owner to root in namespace + - LP: #1584953 + * USB: usbfs: fix potential infoleak in devio + - LP: #1578493 + - CVE-2016-4482 + * IB/security: Restrict use of the write() interface + - LP: #1580372 + - CVE-2016-4565 + * netlink: autosize skb lengthes + - LP: #1568969 + * xfs: allow inode allocations in post-growfs disk space + - LP: #1560142 + + -- Kamal Mostafa Fri, 10 Jun 2016 11:38:36 -0700 + +linux (3.13.0-88.135) trusty; urgency=low + + [ Kamal Mostafa ] + + * CVE-2016-1583 (LP: #1588871) + - ecryptfs: fix handling of directory opening + - SAUCE: proc: prevent stacking filesystems on top + - SAUCE: ecryptfs: forbid opening files without mmap handler + + -- Andy Whitcroft Wed, 08 Jun 2016 21:55:49 +0100 + +linux (3.13.0-87.133) trusty; urgency=low + + [ Kamal Mostafa ] + + * Release Tracking Bug + - LP: #1585315 + + [ Upstream Kernel Changes ] + + * Revert "usb: hub: do not clear BOS field during reset device" + - LP: #1582864 + + -- Kamal Mostafa Tue, 24 May 2016 11:04:30 -0700 + +linux (3.13.0-87.132) trusty; urgency=low + + [ Kamal Mostafa ] + + * Release Tracking Bug + - LP: #1582398 + + [ Kamal Mostafa ] + + * [Config] Drop ozwpan from the ABI + + [ Luis Henriques ] + + * [Config] CONFIG_USB_WPAN_HCD=n + - LP: #1463740 + - CVE-2015-4004 + + [ Prarit Bhargava ] + + * SAUCE: (no-up) ACPICA: Dispatcher: Update thread ID for recursive + method calls + - LP: #1577898 + + [ Upstream Kernel Changes ] + + * usbnet: cleanup after bind() in probe() + - LP: #1567191 + - CVE-2016-3951 + * KVM: x86: bit-ops emulation ignores offset on 64-bit + - LP: #1423672 + * USB: usbip: fix potential out-of-bounds write + - LP: #1572666 + - CVE-2016-3955 + * x86/mm/32: Enable full randomization on i386 and X86_32 + - LP: #1568523 + - CVE-2016-3672 + * Input: gtco - fix crash on detecting device without endpoints + - LP: #1575706 + - CVE-2016-2187 + * atl2: Disable unimplemented scatter/gather feature + - LP: #1561403 + - CVE-2016-2117 + * ALSA: usb-audio: Skip volume controls triggers hangup on Dell USB Dock + - LP: #1577905 + * fs/pnode.c: treat zero mnt_group_id-s as unequal + - LP: #1572316 + * propogate_mnt: Handle the first propogated copy being a slave + - LP: #1572316 + * drm: Balance error path for GEM handle allocation + - LP: #1579610 + * x86/mm: Add barriers and document switch_mm()-vs-flush synchronization + - LP: #1538429 + - CVE-2016-2069 + * x86/mm: Improve switch_mm() barrier comments + - LP: #1538429 + - CVE-2016-2069 + * net: fix infoleak in llc + - LP: #1578496 + - CVE-2016-4485 + * net: fix infoleak in rtnetlink + - LP: #1578497 + - CVE-2016-4486 + + -- Kamal Mostafa Mon, 16 May 2016 13:28:38 -0700 + +linux (3.13.0-86.131) trusty; urgency=low + + [ Kamal Mostafa ] + + * CVE-2016-0758 (LP: #1581202) + - SAUCE: KEYS: Fix ASN.1 indefinite length object parsing + + -- Kamal Mostafa Thu, 12 May 2016 15:36:26 -0700 + +linux (3.13.0-86.130) trusty; urgency=low + + [ Kamal Mostafa ] + + * Release Tracking Bug + - LP: #1571718 + + [ Benjamin Tissoires ] + + * SAUCE: Input: synaptics - handle spurious release of trackstick + buttons, again + - LP: #1553811 + + [ 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 v3.13.11-ckt38 + + [ Tim Gardner ] + + * [Debian] Fix linux-doc dangling symlinks + - LP: #661306 + + [ Upstream Kernel Changes ] + + * Revert "jffs2: Fix lock acquisition order bug in jffs2_write_begin" + - LP: #1562900 + * [stable-only] AIO: properly check iovec sizes + - LP: #1562900 + * Input: aiptek - fix crash on detecting device without endpoints + - LP: #1562900 + * wext: fix message delay/ordering + - LP: #1562900 + * cfg80211/wext: fix message ordering + - LP: #1562900 + * mac80211: fix use of uninitialised values in RX aggregation + - LP: #1562900 + * libata: fix HDIO_GET_32BIT ioctl + - LP: #1562900 + * mac80211: minstrel_ht: set default tx aggregation timeout to 0 + - LP: #1562900 + * jffs2: Fix page lock / f->sem deadlock + - LP: #1562900 + * Fix directory hardlinks from deleted directories + - LP: #1562900 + * iommu/amd: Fix boot warning when device 00:00.0 is not iommu covered + - LP: #1562900 + * libata: Align ata_device's id on a cacheline + - LP: #1562900 + * vfio: fix ioctl error handling + - LP: #1562900 + * ALSA: ctl: Fix ioctls for X32 ABI + - LP: #1562900 + * ALSA: rawmidi: Fix ioctls X32 ABI + - LP: #1562900 + * ALSA: timer: Fix broken compat timer user status ioctl + - LP: #1562900 + * ALSA: timer: Fix ioctls for X32 ABI + - LP: #1562900 + * cifs: fix out-of-bounds access in lease parsing + - LP: #1562900 + * CIFS: Fix SMB2+ interim response processing for read requests + - LP: #1562900 + * ALSA: hdspm: Fix wrong boolean ctl value accesses + - LP: #1562900 + * ALSA: hdspm: Fix zero-division + - LP: #1562900 + * ALSA: hdsp: Fix wrong boolean ctl value accesses + - LP: #1562900 + * USB: cp210x: Add ID for Parrot NMEA GPS Flight Recorder + - LP: #1562900 + * ASoC: wm8958: Fix enum ctl accesses in a wrong type + - LP: #1562900 + * ASoC: wm8994: Fix enum ctl accesses in a wrong type + - LP: #1562900 + * ASoC: wm_adsp: Fix enum ctl accesses in a wrong type + - LP: #1562900 + * USB: serial: option: add support for Telit LE922 PID 0x1045 + - LP: #1562900 + * USB: serial: option: add support for Quectel UC20 + - LP: #1562900 + * ALSA: seq: oss: Don't drain at closing a client + - LP: #1562900 + * drm/ast: Fix incorrect register check for DRAM width + - LP: #1562900 + * drm/radeon/pm: update current crtc info after setting the powerstate + - LP: #1562900 + * PM / sleep / x86: Fix crash on graph trace through x86 suspend + - LP: #1562900 + * ALSA: hda - Fix mic issues on Acer Aspire E1-472 + - LP: #1562900 + * MIPS: traps: Fix SIGFPE information leak from `do_ov' and + `do_trap_or_bp' + - LP: #1562900 + * ubi: Fix out of bounds write in volume update code + - LP: #1562900 + * KVM: VMX: disable PEBS before a guest entry + - LP: #1562900 + * ext4: iterate over buffer heads correctly in move_extent_per_page() + - LP: #1562900 + * net/mlx4_core: Allow resetting VF admin mac to zero + - LP: #1562900 + * ipv6: re-enable fragment header matching in ipv6_find_hdr + - LP: #1562900 + * cdc_ncm: do not call usbnet_link_change from cdc_ncm_bind + - LP: #1562900 + * net: moxa: fix an error code + - LP: #1562900 + * IB/core: Use GRH when the path hop-limit > 0 + - LP: #1562900 + * Linux 3.13.11-ckt37 + - LP: #1562900 + * Drivers: hv_vmbus: Fix signal to host condition + - LP: #1556264 + * [stable-only] pipe: Fix buffer offset after partially failed read + - LP: #1563916 + * EDAC, amd64_edac: Shift wrapping issue in f1x_get_norm_dct_addr() + - LP: #1567615 + * tty: Fix GPF in flush_to_ldisc(), part 2 + - LP: #1567615 + * [media] media: v4l2-compat-ioctl32: fix missing length copy in + put_v4l2_buffer32 + - LP: #1567615 + * [media] pwc: Add USB id for Philips Spc880nc webcam + - LP: #1567615 + * 8250: use callbacks to access UART_DLL/UART_DLM + - LP: #1567615 + * net: irda: Fix use-after-free in irtty_open() + - LP: #1567615 + * usb: retry reset if a device times out + - LP: #1567615 + * HID: core: do not scan reports if the group is already set + - LP: #1567615 + * HID: fix hid_ignore_special_drivers module parameter + - LP: #1567615 + * scripts/coccinelle: modernize & + - LP: #1567615 + * [media] adv7511: TX_EDID_PRESENT is still 1 after a disconnect + - LP: #1567615 + * [media] saa7134: Fix bytesperline not being set correctly for planar + formats + - LP: #1567615 + * perf tools: Dont stop PMU parsing on alias parse error + - LP: #1567615 + * Bluetooth: btusb: Add new AR3012 ID 13d3:3395 + - LP: #1542564, #1567615 + * Bluetooth: Add new AR3012 ID 0489:e095 + - LP: #1542944, #1567615 + * aacraid: Fix memory leak in aac_fib_map_free + - LP: #1567615 + * mtd: onenand: fix deadlock in onenand_block_markbad + - LP: #1567615 + * PCI: Disable IO/MEM decoding for devices with non-compliant BARs + - LP: #1567615 + * md/raid5: Compare apples to apples (or sectors to sectors) + - LP: #1567615 + * Bluetooth: btusb: Add a new AR3012 ID 04ca:3014 + - LP: #1546694, #1567615 + * IB/srpt: Simplify srpt_handle_tsk_mgmt() + - LP: #1567615 + * [media] bttv: Width must be a multiple of 16 when capturing planar + formats + - LP: #1567615 + * watchdog: rc32434_wdt: fix ioctl error handling + - LP: #1567615 + * xfs: fix two memory leaks in xfs_attr_list.c error paths + - LP: #1567615 + * quota: Fix possible GPF due to uninitialised pointers + - LP: #1567615 + * mtip32xx: Print exact time when an internal command is interrupted + - LP: #1567615 + * KVM: i8254: change PIT discard tick policy + - LP: #1567615 + * sched/cputime: Fix steal time accounting vs. CPU hotplug + - LP: #1567615 + * rt2x00: add new rt2800usb device Buffalo WLI-UC-G450 + - LP: #1567615 + * pinctrl-bcm2835: Fix cut-and-paste error in "pull" parsing + - LP: #1567615 + * perf/core: Fix perf_sched_count derailment + - LP: #1567615 + * perf/x86/intel: Use PAGE_SIZE for PEBS buffer size on Core2 + - LP: #1567615 + * bcache: fix cache_set_flush() NULL pointer dereference on OOM + - LP: #1567615 + * x86/PCI: Mark Broadwell-EP Home Agent & PCU as having non-compliant + BARs + - LP: #1567615 + * be2iscsi: set the boot_kset pointer to NULL in case of failure + - LP: #1567615 + * drm/radeon: Don't drop DP 2.7 Ghz link setup on some cards. + - LP: #1567615 + * sg: fix dxferp in from_to case + - LP: #1567615 + * jbd2: fix FS corruption possibility in jbd2_journal_destroy() on umount + path + - LP: #1567615 + * Bluetooth: btusb: Add a new AR3012 ID 13d3:3472 + - LP: #1552925, #1567615 + * iser-target: Separate flows for np listeners and connections cma events + - LP: #1567615 + * xtensa: ISS: don't hang if stdin EOF is reached + - LP: #1567615 + * xtensa: clear all DBREAKC registers on start + - LP: #1567615 + * bus: imx-weim: Take the 'status' property value into account + - LP: #1567615 + * ALSA: intel8x0: Add clock quirk entry for AD1981B on IBM ThinkPad X41. + - LP: #1567615 + * s390/pci: enforce fmb page boundary rule + - LP: #1567615 + * Input: powermate - fix oops with malicious USB descriptors + - LP: #1567615 + * net: mvneta: enable change MAC address when interface is up + - LP: #1567615 + * HID: i2c-hid: fix OOB write in i2c_hid_set_or_send_report() + - LP: #1567615 + * ALSA: hda - Fix unconditional GPIO toggle via automute + - LP: #1567615 + * ALSA: usb-audio: Fix NULL dereference in create_fixed_stream_quirk() + - LP: #1567615 + * ALSA: usb-audio: Add sanity checks for endpoint accesses + - LP: #1567615 + * nfsd: fix deadlock secinfo+readdir compound + - LP: #1567615 + * x86/iopl: Fix iopl capability check on Xen PV + - LP: #1567615 + * Input: ims-pcu - sanity check against missing interfaces + - LP: #1567615 + * x86/apic: Fix suspicious RCU usage in + smp_trace_call_function_interrupt() + - LP: #1567615 + * USB: iowarrior: fix oops with malicious USB descriptors + - LP: #1567615 + * USB: usb_driver_claim_interface: add sanity checking + - LP: #1567615 + * USB: cdc-acm: more sanity checking + - LP: #1567615 + * USB: uas: Reduce can_queue to MAX_CMNDS + - LP: #1567615 + * tracing: Have preempt(irqs)off trace preempt disabled functions + - LP: #1567615 + * tracing: Fix crash from reading trace_pipe with sendfile + - LP: #1567615 + * splice: handle zero nr_pages in splice_to_pipe() + - LP: #1567615 + * target: Fix target_release_cmd_kref shutdown comp leak + - LP: #1567615 + * KVM: VMX: avoid guest hang on invalid invept instruction + - LP: #1567615 + * KVM: fix spin_lock_init order on x86 + - LP: #1567615 + * tracing: Fix trace_printk() to print when not using bprintk() + - LP: #1567615 + * fs/coredump: prevent fsuid=0 dumps into user-controlled directories + - LP: #1567615 + * rapidio/rionet: fix deadlock on SMP + - LP: #1567615 + * Input: ati_remote2 - fix crashes on detecting device with invalid + descriptor + - LP: #1567615 + * MAINTAINERS: Update mailing list and web page for hwmon subsystem + - LP: #1567615 + * ocfs2/dlm: fix race between convert and recovery + - LP: #1567615 + * ocfs2/dlm: fix BUG in dlm_move_lockres_to_recovery_list + - LP: #1567615 + * clk: xgene: Add missing parenthesis when clearing divider value + - LP: #1567615 + * ppp: take reference on channels netns + - LP: #1567615 + * mdio-sun4i: oops in error handling in probe + - LP: #1567615 + * net: Fix use after free in the recvmmsg exit path + - LP: #1567615 + * ethernet: micrel: fix some error codes + - LP: #1567615 + * misc/bmp085: Enable building as a module + - LP: #1567615 + * net/mlx5: Make command timeout way shorter + - LP: #1567615 + * ipvs: correct initial offset of Call-ID header search in SIP + persistence engine + - LP: #1567615 + * ath9k: fix buffer overrun for ar9287 + - LP: #1567615 + * mtd: map: fix .set_vpp() documentation + - LP: #1567615 + * ARM: OMAP3: Add cpuidle parameters table for omap3430 + - LP: #1567615 + * rtc: vr41xx: Wire up alarm_irq_enable + - LP: #1567615 + * sunrpc/cache: drop reference when sunrpc_cache_pipe_upcall() detects a + race + - LP: #1567615 + * ipv4: fix broadcast packets reception + - LP: #1567615 + * lpfc: fix misleading indentation + - LP: #1567615 + * ASoC: s3c24xx: use const snd_soc_component_driver pointer + - LP: #1567615 + * kbuild/mkspec: fix grub2 installkernel issue + - LP: #1567615 + * paride: make 'verbose' parameter an 'int' again + - LP: #1567615 + * ppp: ensure file->private_data can't be overridden + - LP: #1567615 + * clk: versatile: sp810: support reentrance + - LP: #1567615 + * drivers/misc/ad525x_dpot: AD5274 fix RDAC read back errors + - LP: #1567615 + * perf stat: Document --detailed option + - LP: #1567615 + * x86/iopl/64: Properly context-switch IOPL on Xen PV + - LP: #1567615 + * Linux 3.13.11-ckt38 + - LP: #1567615 + * drm/radeon: add a dpm quirk for sapphire Dual-X R7 370 2G D5 + - LP: #1571041 + * hwmon: (max1111) Return -ENODEV from max1111_read_channel if not + instantiated + - LP: #1571041 + * drm/radeon: add another R7 370 quirk + - LP: #1571041 + * usb: renesas_usbhs: avoid NULL pointer derefernce in + usbhsf_pkt_handler() + - LP: #1571041 + * usb: renesas_usbhs: disable TX IRQ before starting TX DMAC transfer + - LP: #1571041 + * USB: mct_u232: add sanity checking in probe + - LP: #1571041 + - CVE-2016-3136 + * USB: cypress_m8: add endpoint sanity check + - LP: #1571041 + - CVE-2016-3137 + * USB: digi_acceleport: do sanity checking for the number of ports + - LP: #1571041 + * ALSA: timer: Use mod_timer() for rearming the system timer + - LP: #1571041 + * mm: fix invalid node in alloc_migrate_target() + - LP: #1571041 + * iio: st_magn: always define ST_MAGN_TRIGGER_SET_STATE + - LP: #1571041 + * USB: serial: ftdi_sio: Add support for ICP DAS I-756xU devices + - LP: #1571041 + * USB: serial: cp210x: Adding GE Healthcare Device ID + - LP: #1571041 + * USB: option: add "D-Link DWM-221 B1" device id + - LP: #1571041 + * parisc: Avoid function pointers for kernel exception routines + - LP: #1571041 + * ip6_tunnel: set rtnl_link_ops before calling register_netdevice + - LP: #1571041 + * Linux 3.13.11-ckt39 + - LP: #1571041 + * include/linux/poison.h: fix LIST_POISON{1,2} offset + - LP: #1561389 + - CVE-2016-0821 + * ipv4: Don't do expensive useless work during inetdev destroy. + - LP: #1558847 + - CVE-2016-3156 + + -- Kamal Mostafa Mon, 18 Apr 2016 09:03:12 -0700 + +linux (3.13.0-85.129) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1558727 + + [ Upstream Kernel Changes ] + + * Revert "Revert "af_unix: Revert 'lock_interruptible' in stream receive + code"" + + -- Brad Figg Thu, 17 Mar 2016 11:42:09 -0700 + +linux (3.13.0-84.128) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1557596 + + [ Upstream Kernel Changes ] + + * Revert "af_unix: Revert 'lock_interruptible' in stream receive code" + - LP: #1540731 + * seccomp: cap SECCOMP_RET_ERRNO data to MAX_ERRNO + - LP: #1496073 + * net/mlx4_en: Remove dependency between timestamping capability and + service_task + - LP: #1537859 + * net/mlx4_en: Fix HW timestamp init issue upon system startup + - LP: #1537859 + * x86/mm: Fix slow_virt_to_phys() for X86_PAE again + - LP: #1549601 + * iw_cxgb3: Fix incorrectly returning error on success + - LP: #1557191 + * EVM: Use crypto_memneq() for digest comparisons + - LP: #1557191 + * x86/entry/compat: Add missing CLAC to entry_INT80_32 + - LP: #1557191 + * iio: dac: mcp4725: set iio name property in sysfs + - LP: #1557191 + * iommu/vt-d: Fix 64-bit accesses to 32-bit DMAR_GSTS_REG + - LP: #1557191 + * PCI/AER: Flush workqueue on device remove to avoid use-after-free + - LP: #1557191 + * libata: disable forced PORTS_IMPL for >= AHCI 1.3 + - LP: #1557191 + * mac80211: start_next_roc only if scan was actually running + - LP: #1557191 + * mac80211: Requeue work after scan complete for all VIF types. + - LP: #1557191 + * rfkill: fix rfkill_fop_read wait_event usage + - LP: #1557191 + * crypto: shash - Fix has_key setting + - LP: #1557191 + * drm/i915/dp: fall back to 18 bpp when sink capability is unknown + - LP: #1557191 + * target: Fix WRITE_SAME/DISCARD conversion to linux 512b sectors + - LP: #1557191 + * crypto: algif_hash - wait for crypto_ahash_init() to complete + - LP: #1557191 + * iio: inkern: fix a NULL dereference on error + - LP: #1557191 + * intel_scu_ipcutil: underflow in scu_reg_access() + - LP: #1557191 + * ALSA: seq: Fix race at closing in virmidi driver + - LP: #1557191 + * ALSA: rawmidi: Remove kernel WARNING for NULL user-space buffer check + - LP: #1557191 + * ALSA: pcm: Fix potential deadlock in OSS emulation + - LP: #1557191 + * ALSA: seq: Fix yet another races among ALSA timer accesses + - LP: #1557191 + * ALSA: timer: Fix link corruption due to double start or stop + - LP: #1557191 + * libata: fix sff host state machine locking while polling + - LP: #1557191 + * cputime: Prevent 32bit overflow in time[val|spec]_to_cputime() + - LP: #1557191 + * ASoC: dpcm: fix the BE state on hw_free + - LP: #1557191 + * module: wrapper for symbol name. + - LP: #1557191 + * ALSA: hda - Add fixup for Mac Mini 7,1 model + - LP: #1557191 + * ALSA: Move EXPORT_SYMBOL() in appropriate places + - LP: #1557191 + * ALSA: rawmidi: Make snd_rawmidi_transmit() race-free + - LP: #1557191 + * ALSA: rawmidi: Fix race at copying & updating the position + - LP: #1557191 + * ALSA: seq: Fix lockdep warnings due to double mutex locks + - LP: #1557191 + * drivers/scsi/sg.c: mark VMA as VM_IO to prevent migration + - LP: #1557191 + * radix-tree: fix race in gang lookup + - LP: #1557191 + * usb: xhci: apply XHCI_PME_STUCK_QUIRK to Intel Broxton-M platforms + - LP: #1557191 + * xhci: Fix list corruption in urb dequeue at host removal + - LP: #1557191 + * target: Fix Task Aborted Status (TAS) handling + - LP: #1557191 + * target: Add TFO->abort_task for aborted task resources release + - LP: #1557191 + * target: Fix LUN_RESET active TMR descriptor handling + - LP: #1557191 + * target: Fix LUN_RESET active I/O handling for ACK_KREF + - LP: #1557191 + * target: Fix TAS handling for multi-session se_node_acls + - LP: #1557191 + * target: Fix remote-port TMR ABORT + se_cmd fabric stop + - LP: #1557191 + * target: Fix race with SCF_SEND_DELAYED_TAS handling + - LP: #1557191 + * [media] tda1004x: only update the frontend properties if locked + - LP: #1557191 + * ALSA: timer: Fix leftover link at closing + - LP: #1557191 + * [media] saa7134-alsa: Only frees registered sound cards + - LP: #1557191 + * Btrfs: fix hang on extent buffer lock caused by the inode_paths ioctl + - LP: #1557191 + * scsi_dh_rdac: always retry MODE SELECT on command lock violation + - LP: #1557191 + * SCSI: Add Marvell Console to VPD blacklist + - LP: #1557191 + * drm: Add drm_fixp_from_fraction and drm_fixp2int_ceil + - LP: #1557191 + * ALSA: hda - Fix static checker warning in patch_hdmi.c + - LP: #1557191 + * dump_stack: avoid potential deadlocks + - LP: #1557191 + * mm, vmstat: fix wrong WQ sleep when memory reclaim doesn't make any + progress + - LP: #1557191 + * ocfs2/dlm: clear refmap bit of recovery lock while doing local recovery + cleanup + - LP: #1557191 + * mm: replace vma_lock_anon_vma with anon_vma_lock_read/write + - LP: #1557191 + * radix-tree: fix oops after radix_tree_iter_retry + - LP: #1557191 + * crypto: user - lock crypto_alg_list on alg dump + - LP: #1557191 + * serial: omap: Prevent DoS using unprivileged ioctl(TIOCSRS485) + - LP: #1557191 + * pty: fix possible use after free of tty->driver_data + - LP: #1557191 + * pty: make sure super_block is still valid in final /dev/tty close + - LP: #1557191 + * ALSA: hda - Fix speaker output from VAIO AiO machines + - LP: #1557191 + * klist: fix starting point removed bug in klist iterators + - LP: #1557191 + * ALSA: dummy: Implement timer backend switching more safely + - LP: #1557191 + * powerpc: Fix dedotify for binutils >= 2.26 + - LP: #1557191 + * ALSA: timer: Fix wrong instance passed to slave callbacks + - LP: #1557191 + * ARM: 8517/1: ICST: avoid arithmetic overflow in icst_hz() + - LP: #1557191 + * nfs: fix nfs_size_to_loff_t + - LP: #1557191 + * ALSA: timer: Fix race between stop and interrupt + - LP: #1557191 + * ALSA: timer: Fix race at concurrent reads + - LP: #1557191 + * phy: twl4030-usb: Relase usb phy on unload + - LP: #1557191 + * drm/i915: fix error path in intel_setup_gmbus() + - LP: #1557191 + * ahci: Intel DNV device IDs SATA + - LP: #1557191 + * workqueue: handle NUMA_NO_NODE for unbound pool_workqueue lookup + - LP: #1557191 + * cifs: fix erroneous return value + - LP: #1557191 + * s390/dasd: prevent incorrect length error under z/VM after PAV changes + - LP: #1557191 + * s390/dasd: fix refcount for PAV reassignment + - LP: #1557191 + * ARM: 8519/1: ICST: try other dividends than 1 + - LP: #1557191 + * btrfs: properly set the termination value of ctx->pos in readdir + - LP: #1557191 + * ext4: fix potential integer overflow + - LP: #1557191 + * ext4: don't read blocks from disk after extents being swapped + - LP: #1557191 + * bio: return EINTR if copying to user space got interrupted + - LP: #1557191 + * xen/pciback: Check PF instead of VF for PCI_COMMAND_MEMORY + - LP: #1557191 + * xen/pciback: Save the number of MSI-X entries to be copied later. + - LP: #1557191 + * xen/pcifront: Fix mysterious crashes when NUMA locality information was + extracted. + - LP: #1557191 + * ALSA: seq: Drop superfluous error/debug messages after malloc failures + - LP: #1557191 + * ALSA: seq: Fix leak of pool buffer at concurrent writes + - LP: #1557191 + * dmaengine: dw: disable BLOCK IRQs for non-cyclic xfer + - LP: #1557191 + * tracepoints: Do not trace when cpu is offline + - LP: #1557191 + * tracing: Fix freak link error caused by branch tracer + - LP: #1557191 + * ALSA: seq: Fix double port list deletion + - LP: #1557191 + * drm/radeon: use post-decrement in error handling + - LP: #1557191 + * drm/qxl: use kmalloc_array to alloc reloc_info in + qxl_process_single_command + - LP: #1557191 + * NFSv4: Fix a dentry leak on alias use + - LP: #1557191 + * USB: option: add support for SIM7100E + - LP: #1557191 + * USB: cp210x: add IDs for GE B650V3 and B850V3 boards + - LP: #1557191 + * USB: option: add "4G LTE usb-modem U901" + - LP: #1557191 + * hwmon: (ads1015) Handle negative conversion values correctly + - LP: #1557191 + * ext4: fix bh->b_state corruption + - LP: #1557191 + * ext4: fix crashes in dioread_nolock mode + - LP: #1557191 + * kernel/resource.c: fix muxed resource handling in __request_region() + - LP: #1557191 + * drivers: android: correct the size of struct binder_uintptr_t for + BC_DEAD_BINDER_DONE + - LP: #1557191 + * can: ems_usb: Fix possible tx overflow + - LP: #1557191 + * sunrpc/cache: fix off-by-one in qword_get() + - LP: #1557191 + * KVM: async_pf: do not warn on page allocation failures + - LP: #1557191 + * tracing: Fix showing function event in available_events + - LP: #1557191 + * libceph: don't bail early from try_read() when skipping a message + - LP: #1557191 + * KVM: x86: MMU: fix ubsan index-out-of-range warning + - LP: #1557191 + * hpfs: don't truncate the file when delete fails + - LP: #1557191 + * do_last(): don't let a bogus return value from ->open() et.al. to + confuse us + - LP: #1557191 + * af_iucv: Validate socket address length in iucv_sock_bind() + - LP: #1557191 + * net: dp83640: Fix tx timestamp overflow handling. + - LP: #1557191 + * tcp: fix NULL deref in tcp_v4_send_ack() + - LP: #1557191 + * af_unix: fix struct pid memory leak + - LP: #1557191 + * pptp: fix illegal memory access caused by multiple bind()s + - LP: #1557191 + * sctp: allow setting SCTP_SACK_IMMEDIATELY by the application + - LP: #1557191 + * ipv6/udp: use sticky pktinfo egress ifindex on connect() + - LP: #1557191 + * net/ipv6: add sysctl option accept_ra_min_hop_limit + - LP: #1557191 + * ipv6: fix a lockdep splat + - LP: #1557191 + * unix: correctly track in-flight fds in sending process user_struct + - LP: #1557191 + * net:Add sysctl_max_skb_frags + - LP: #1557191 + * sctp: translate network order to host order when users get a hmacid + - LP: #1557191 + * af_unix: Guard against other == sk in unix_dgram_sendmsg + - LP: #1543980, #1557191 + * qmi_wwan: add "4G LTE usb-modem U901" + - LP: #1557191 + * net/mlx4_en: Count HW buffer overrun only once + - LP: #1557191 + * pppoe: fix reference counting in PPPoE proxy + - LP: #1557191 + * rtnl: RTM_GETNETCONF: fix wrong return value + - LP: #1557191 + * unix_diag: fix incorrect sign extension in unix_lookup_by_ino + - LP: #1557191 + * sctp: Fix port hash table size computation + - LP: #1557191 + * bonding: Fix ARP monitor validation + - LP: #1557191 + * ipv4: fix memory leaks in ip_cmsg_send() callers + - LP: #1557191 + * net/mlx4_en: Choose time-stamping shift value according to HW frequency + - LP: #1557191 + * af_unix: Don't set err in unix_stream_read_generic unless there was an + error + - LP: #1557191 + * pipe: limit the per-user amount of pages allocated in pipes + - LP: #1557191 + * Linux 3.13.11-ckt36 + - LP: #1557191 + * sched/numa: Move task_numa_free() to __put_task_struct() + - LP: #1527643 + * sched/numa: Fix unsafe get_task_struct() in task_numa_assign() + - LP: #1527643 + * sched/numa: Fix use-after-free bug in the task_numa_compare + - LP: #1527643 + + -- Brad Figg Tue, 15 Mar 2016 08:41:17 -0700 + +linux (3.13.0-83.127) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1555839 + + [ Florian Westphal ] + + * SAUCE: [nf,v2] netfilter: x_tables: don't rely on well-behaving + userspace + - LP: #1555338 + + -- Brad Figg Thu, 10 Mar 2016 14:41:56 -0800 + +linux (3.13.0-82.126) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1554732 + + [ Upstream Kernel Changes ] + + * Revert "drm/radeon: call hpd_irq_event on resume" + - LP: #1554608 + * net: generic dev_disable_lro() stacked device handling + - LP: #1547680 + + -- Brad Figg Tue, 08 Mar 2016 13:28:08 -0800 + +linux (3.13.0-81.125) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1552316 + + [ Upstream Kernel Changes ] + + * Revert "firmware: dmi_scan: Fix UUID endianness for SMBIOS >= 2.6" + - LP: #1551419 + * bcache: Fix a lockdep splat in an error path + - LP: #1551327 + + -- Luis Henriques Wed, 02 Mar 2016 16:21:33 +0000 + +linux (3.13.0-80.124) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1548519 + + [ 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 + + [ Dan Streetman ] + + * SAUCE: nbd: ratelimit error msgs after socket close + - LP: #1505564 + + [ Upstream Kernel Changes ] + + * Revert "workqueue: make sure delayed work run in local cpu" + - LP: #1546320 + * [media] gspca: ov534/topro: prevent a division by 0 + - LP: #1542497 + * [media] media: dvb-core: Don't force CAN_INVERSION_AUTO in oneshot mode + - LP: #1542497 + * tools lib traceevent: Fix output of %llu for 64 bit values read on 32 + bit machines + - LP: #1542497 + * KVM: x86: correctly print #AC in traces + - LP: #1542497 + * drm/radeon: call hpd_irq_event on resume + - LP: #1542497 + * xhci: refuse loading if nousb is used + - LP: #1542497 + * arm64: Clear out any singlestep state on a ptrace detach operation + - LP: #1542497 + * time: Avoid signed overflow in timekeeping_get_ns() + - LP: #1542497 + * rtlwifi: fix memory leak for USB device + - LP: #1542497 + * wlcore/wl12xx: spi: fix oops on firmware load + - LP: #1542497 + * EDAC, mc_sysfs: Fix freeing bus' name + - LP: #1542497 + * EDAC: Don't try to cancel workqueue when it's never setup + - LP: #1542497 + * EDAC: Robustify workqueues destruction + - LP: #1542497 + * powerpc: Make value-returning atomics fully ordered + - LP: #1542497 + * powerpc: Make {cmp}xchg* and their atomic_ versions fully ordered + - LP: #1542497 + * dm space map metadata: remove unused variable in brb_pop() + - LP: #1542497 + * dm thin: fix race condition when destroying thin pool workqueue + - LP: #1542497 + * futex: Drop refcount if requeue_pi() acquired the rtmutex + - LP: #1542497 + * drm/radeon: clean up fujitsu quirks + - LP: #1542497 + * mmc: sdio: Fix invalid vdd in voltage switch power cycle + - LP: #1542497 + * mmc: sdhci: Fix sdhci_runtime_pm_bus_on/off() + - LP: #1542497 + * udf: limit the maximum number of indirect extents in a row + - LP: #1542497 + * nfs: Fix race in __update_open_stateid() + - LP: #1542497 + * USB: cp210x: add ID for ELV Marble Sound Board 1 + - LP: #1542497 + * NFSv4: Don't perform cached access checks before we've OPENed the file + - LP: #1542497 + * NFS: Fix attribute cache revalidation + - LP: #1542497 + * posix-clock: Fix return code on the poll method's error path + - LP: #1542497 + * rtlwifi: rtl8192de: Fix incorrect module parameter descriptions + - LP: #1542497 + * rtlwifi: rtl8192se: Fix module parameter initialization + - LP: #1542497 + * rtlwifi: rtl8192ce: Fix handling of module parameters + - LP: #1542497 + * rtlwifi: rtl8192cu: Add missing parameter setup + - LP: #1542497 + * bcache: fix a livelock when we cause a huge number of cache misses + - LP: #1542497 + * bcache: Add a cond_resched() call to gc + - LP: #1542497 + * bcache: clear BCACHE_DEV_UNLINK_DONE flag when attaching a backing + device + - LP: #1542497 + * bcache: fix a leak in bch_cached_dev_run() + - LP: #1542497 + * bcache: unregister reboot notifier if bcache fails to unregister device + - LP: #1542497 + * bcache: add mutex lock for bch_is_open + - LP: #1542497 + * bcache: allows use of register in udev to avoid "device_busy" error. + - LP: #1542497 + * bcache: Change refill_dirty() to always scan entire disk if necessary + - LP: #1542497 + * wlcore/wl12xx: spi: fix NULL pointer dereference (Oops) + - LP: #1542497 + * Input: i8042 - add Fujitsu Lifebook U745 to the nomux list + - LP: #1542497 + * libxfs: pack the agfl header structure so XFS_AGFL_SIZE is correct + - LP: #1542497 + * x86/xen: don't reset vcpu_info on a cancelled suspend + - LP: #1542497 + * udf: Prevent buffer overrun with multi-byte characters + - LP: #1542497 + * udf: Check output buffer length when converting name to CS0 + - LP: #1542497 + * PCI: host: Mark PCIe/PCI (MSI) IRQ cascade handlers as IRQF_NO_THREAD + - LP: #1542497 + * iwlwifi: update and fix 7265 series PCI IDs + - LP: #1542497 + * locks: fix unlock when fcntl_setlk races with a close + - LP: #1542497 + * ASoC: compress: Fix compress device direction check + - LP: #1542497 + * dm snapshot: fix hung bios when copy error occurs + - LP: #1542497 + * uml: fix hostfs mknod() + - LP: #1542497 + * uml: flush stdout before forking + - LP: #1542497 + * drm/nouveau/kms: take mode_config mutex in connector hotplug path + - LP: #1542497 + * x86/boot: Double BOOT_HEAP_SIZE to 64KB + - LP: #1542497 + * s390: fix normalization bug in exception table sorting + - LP: #1542497 + * xfs: inode recovery readahead can race with inode buffer creation + - LP: #1542497 + * clocksource/drivers/vt8500: Increase the minimum delta + - LP: #1542497 + * Input: elantech - mark protocols v2 and v3 as semi-mt + - LP: #1542497 + * x86/reboot/quirks: Add iMac10,1 to pci_reboot_dmi_table[] + - LP: #1542497 + * ALSA: seq: Fix missing NULL check at remove_events ioctl + - LP: #1542497 + * ALSA: seq: Fix race at timer setup and close + - LP: #1542497 + * virtio_balloon: fix race by fill and leak + - LP: #1542497 + * virtio_balloon: fix race between migration and ballooning + - LP: #1542497 + * parisc: Fix __ARCH_SI_PREAMBLE_SIZE + - LP: #1542497 + * scripts/recordmcount.pl: support data in text section on powerpc + - LP: #1542497 + * powerpc/module: Handle R_PPC64_ENTRY relocations + - LP: #1542497 + * ALSA: timer: Fix double unlink of active_list + - LP: #1542497 + * dmaengine: dw: fix cyclic transfer setup + - LP: #1542497 + * dmaengine: dw: fix cyclic transfer callbacks + - LP: #1542497 + * mmc: mmci: fix an ages old detection error + - LP: #1542497 + * ALSA: timer: Fix race among timer ioctls + - LP: #1542497 + * sparc64: fix incorrect sign extension in sys_sparc64_personality + - LP: #1542497 + * cifs: Ratelimit kernel log messages + - LP: #1542497 + * cifs: fix race between call_async() and reconnect() + - LP: #1542497 + * cifs_dbg() outputs an uninitialized buffer in cifs_readdir() + - LP: #1542497 + * m32r: fix m32104ut_defconfig build fail + - LP: #1542497 + * dma-debug: switch check from _text to _stext + - LP: #1542497 + * scripts/bloat-o-meter: fix python3 syntax error + - LP: #1542497 + * ocfs2/dlm: ignore cleaning the migration mle that is inuse + - LP: #1542497 + * ALSA: timer: Harden slave timer list handling + - LP: #1542497 + * mm: soft-offline: check return value in second __get_any_page() call + - LP: #1542497 + * memcg: only free spare array when readers are done + - LP: #1542497 + * panic: release stale console lock to always get the logbuf printed out + - LP: #1542497 + * kernel/panic.c: turn off locks debug before releasing console lock + - LP: #1542497 + * printk: do cond_resched() between lines while outputting to consoles + - LP: #1542497 + * ALSA: hda - Fix bass pin fixup for ASUS N550JX + - LP: #1542497 + * crypto: af_alg - Disallow bind/setkey/... after accept(2) + - LP: #1542497 + * crypto: af_alg - Fix socket double-free when accept fails + - LP: #1542497 + * crypto: af_alg - Add nokey compatibility path + - LP: #1542497 + * crypto: hash - Add crypto_ahash_has_setkey + - LP: #1542497 + * crypto: af_alg - Allow af_af_alg_release_parent to be called on nokey + path + - LP: #1542497 + * crypto: af_alg - Forbid bind(2) when nokey child sockets are present + - LP: #1542497 + * ALSA: hrtimer: Fix stall by hrtimer_cancel() + - LP: #1542497 + * ALSA: pcm: Fix snd_pcm_hw_params struct copy in compat mode + - LP: #1542497 + * ALSA: seq: Fix snd_seq_call_port_info_ioctl in compat mode + - LP: #1542497 + * ALSA: control: Avoid kernel warnings from tlv ioctl with numid 0 + - LP: #1542497 + * crypto: algif_skcipher - Load TX SG list after waiting + - LP: #1542497 + * crypto: crc32c - Fix crc32c soft dependency + - LP: #1542497 + * IB/qib: fix mcast detach when qp not attached + - LP: #1542497 + * iscsi-target: Fix potential dead-lock during node acl delete + - LP: #1542497 + * ocfs2: NFS hangs in __ocfs2_cluster_lock due to race with + ocfs2_unblock_lock + - LP: #1542497 + * [media] rc: allow rc modules to be loaded if rc-main is not a module + - LP: #1542497 + * SCSI: initio: remove duplicate module device table + - LP: #1542497 + * clk: xgene: Fix divider with non-zero shift value + - LP: #1542497 + * ath9k_htc: check for underflow in ath9k_htc_rx_msg() + - LP: #1542497 + * mtd: nand: fix ONFI parameter page layout + - LP: #1542497 + * ALSA: fm801: propagate TUNER_ONLY bit when autodetected + - LP: #1542497 + * pinctrl: bcm2835: Fix memory leak in error path + - LP: #1542497 + * kconfig: return 'false' instead of 'no' in bool function + - LP: #1542497 + * perf/x86: Fix filter_events() bug with event mappings + - LP: #1542497 + * power: test_power: correctly handle empty writes + - LP: #1542497 + * firmware: actually return NULL on failed request_firmware_nowait() + - LP: #1542497 + * mmc: sd: limit SD card power limit according to cards capabilities + - LP: #1542497 + * Btrfs: clean up an error code in btrfs_init_space_info() + - LP: #1542497 + * batman-adv: Avoid recursive call_rcu for batadv_bla_claim + - LP: #1542497 + * batman-adv: Avoid recursive call_rcu for batadv_nc_node + - LP: #1542497 + * batman-adv: Drop immediate orig_node free function + - LP: #1542497 + * printk: help pr_debug and pr_devel to optimize out arguments + - LP: #1542497 + * mmc: debugfs: correct wrong voltage value + - LP: #1542497 + * IB/mlx4: Initialize hop_limit when creating address handle + - LP: #1542497 + * veth: don’t modify ip_summed; doing so treats packets with bad + checksums as good. + - LP: #1542497 + * sctp: sctp should release assoc when sctp_make_abort_user return NULL + in sctp_close + - LP: #1542497 + * connector: bump skb->users before callback invocation + - LP: #1542497 + * unix: properly account for FDs passed over unix sockets + - LP: #1542497 + * bridge: Only call /sbin/bridge-stp for the initial network namespace + - LP: #1542497 + * net: sctp: prevent writes to cookie_hmac_alg from accessing invalid + memory + - LP: #1542497 + * tcp_yeah: don't set ssthresh below 2 + - LP: #1542497 + * bonding: Prevent IPv6 link local address on enslaved devices + - LP: #1542497 + * phonet: properly unshare skbs in phonet_rcv() + - LP: #1542497 + * ipv6: update skb->csum when CE mark is propagated + - LP: #1542497 + * team: Replace rcu_read_lock with a mutex in team_vlan_rx_kill_vid + - LP: #1542497 + * Linux 3.13.11-ckt34 + - LP: #1542497 + * qeth: initialize net_device with carrier off + - LP: #1541907 + * umount: Do not allow unmounting rootfs. + - LP: #1541313 + * [media] usbvision fix overflow of interfaces array + - LP: #1546273 + * [media] usbvision: fix leak of usb_dev on failure paths in + usbvision_probe() + - LP: #1546273 + * [media] usbvision: fix crash on detecting device with invalid + configuration + - LP: #1546273 + * tty: Fix unsafe ldisc reference via ioctl(TIOCGETD) + - LP: #1546273 + * USB: serial: visor: fix crash on detecting device without write_urbs + - LP: #1546273 + * ASN.1: Fix non-match detection failure on data overrun + - LP: #1546273 + * iio: adis_buffer: Fix out-of-bounds memory access + - LP: #1546273 + * x86/irq: Call chip->irq_set_affinity in proper context + - LP: #1546273 + * usb: cdc-acm: handle unlinked urb in acm read callback + - LP: #1546273 + * usb: cdc-acm: send zero packet for intel 7260 modem + - LP: #1546273 + * cdc-acm:exclude Samsung phone 04e8:685d + - LP: #1546273 + * usb: hub: do not clear BOS field during reset device + - LP: #1546273 + * USB: cp210x: add ID for IAI USB to RS485 adaptor + - LP: #1546273 + * USB: visor: fix null-deref at probe + - LP: #1546273 + * USB: serial: option: Adding support for Telit LE922 + - LP: #1546273 + * ALSA: seq: Fix incorrect sanity check at snd_seq_oss_synth_cleanup() + - LP: #1546273 + * ALSA: seq: Degrade the error message for too many opens + - LP: #1546273 + * USB: serial: ftdi_sio: add support for Yaesu SCU-18 cable + - LP: #1546273 + * USB: option: fix Cinterion AHxx enumeration + - LP: #1546273 + * ALSA: compress: Disable GET_CODEC_CAPS ioctl for some architectures + - LP: #1546273 + * ALSA: usb-audio: Fix TEAC UD-501/UD-503/NT-503 usb delay + - LP: #1546273 + * arm64: errata: Add -mpc-relative-literal-loads to build flags + - LP: #1533009, #1546273 + * SCSI: fix crashes in sd and sr runtime PM + - LP: #1546273 + * n_tty: Fix unsafe reference to "other" ldisc + - LP: #1546273 + * ALSA: dummy: Disable switching timer backend via sysfs + - LP: #1546273 + * drm/vmwgfx: respect 'nomodeset' + - LP: #1546273 + * x86/mm/pat: Avoid truncation when converting cpa->numpages to address + - LP: #1546273 + * perf annotate browser: Fix behaviour of Shift-Tab with nothing focussed + - LP: #1546273 + * powerpc/perf: Remove PPMU_HAS_SSLOT flag for Power8 + - LP: #1546273 + * Linux 3.13.11-ckt35 + - LP: #1546273 + * netfilter: bridge: don't use nf_bridge_info data to store mac header + - LP: #1463911 + * netfilter: bridge: restore vlan tag when refragmenting + - LP: #1463911 + * netfilter: bridge: forward IPv6 fragmented packets + - LP: #1463911 + * netfilter: bridge: Use __in6_dev_get rather than in6_dev_get in + br_validate_ipv6 + - LP: #1463911 + * ALSA: usb-audio: avoid freeing umidi object twice + - LP: #1546177 + - CVE-2016-2384 + * vmstat: explicitly schedule per-cpu work on the CPU we need it to run + on + - LP: #1546320 + + -- Brad Figg Mon, 22 Feb 2016 13:51:45 -0800 + +linux (3.13.0-79.123) trusty; urgency=low + + [ Seth Forshee ] + + * SAUCE: cred: Add clone_cred() interface + - LP: #1534961, #1535150 + - CVE-2016-1575 CVE-2016-1576 + * SAUCE: overlayfs: Use mounter's credentials instead of full kernel + credentials + - LP: #1534961, #1535150 + - CVE-2016-1575 CVE-2016-1576 + * SAUCE: overlayfs: Skip permission checking for trusted.overlayfs.* + xattrs + - LP: #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 13:14:25 +0000 + +linux (3.13.0-78.122) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1540559 + + [ Eric Dumazet ] + + * SAUCE: (no-up) udp: properly support MSG_PEEK with truncated buffers + - LP: #1527902 + + [ 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 + + [ Upstream Kernel Changes ] + + * Revert "[stable-only] net: add length argument to + skb_copy_and_csum_datagram_iovec" + - LP: #1538756 + * unregister_netdevice : move RTM_DELLINK to until after ndo_uninit + - LP: #1525324 + * rtnetlink: delay RTM_DELLINK notification until after ndo_uninit() + - LP: #1525324 + * Drivers: hv: Eliminate the channel spinlock in the callback path + - LP: #1519897 + * Drivers: hv: vmbus: Implement per-CPU mapping of relid to channel + - LP: #1519897 + * Drivers: hv: vmbus: Suport an API to send pagebuffers with additional + control + - LP: #1519897 + * Drivers: hv: vmbus: Suport an API to send packet with additional + control + - LP: #1519897 + * Drivers: hv: vmbus: Export the vmbus_sendpacket_pagebuffer_ctl() + - LP: #1519897 + * Drivers: hv: vmbus: Fix a siganlling host signalling issue + - LP: #1519897 + * Drivers: hv: vmbus: Fix a Host signaling bug + - LP: #1519897 + * ARC: Fix silly typo in MAINTAINERS file + - LP: #1538756 + * ip6mr: call del_timer_sync() in ip6mr_free_table() + - LP: #1538756 + * gre6: allow to update all parameters via rtnl + - LP: #1538756 + * atl1c: Improve driver not to do order 4 GFP_ATOMIC allocation + - LP: #1538756 + * sctp: use the same clock as if sock source timestamps were on + - LP: #1538756 + * sctp: update the netstamp_needed counter when copying sockets + - LP: #1538756 + * ipv6: sctp: clone options to avoid use after free + - LP: #1538756 + * net: add validation for the socket syscall protocol argument + - LP: #1538756 + * sh_eth: fix kernel oops in skb_put() + - LP: #1538756 + * pptp: verify sockaddr_len in pptp_bind() and pptp_connect() + - LP: #1538756 + * bluetooth: Validate socket address length in sco_sock_bind(). + - LP: #1538756 + * af_unix: Revert 'lock_interruptible' in stream receive code + - LP: #1538756 + * KEYS: Fix race between read and revoke + - LP: #1538756 + * tools: Add a "make all" rule + - LP: #1538756 + * efi: Disable interrupts around EFI calls, not in the epilog/prolog + calls + - LP: #1538756 + * net: ipmr: fix static mfc/dev leaks on table destruction + - LP: #1538756 + * fuse: break infinite loop in fuse_fill_write_pages() + - LP: #1538756 + * usb: gadget: pxa27x: fix suspend callback + - LP: #1538756 + * iio: fix some warning messages + - LP: #1538756 + * USB: cp210x: Remove CP2110 ID from compatibility list + - LP: #1538756 + * USB: cdc_acm: Ignore Infineon Flash Loader utility + - LP: #1538756 + * USB: serial: Another Infineon flash loader USB ID + - LP: #1538756 + * ext4: Fix handling of extended tv_sec + - LP: #1538756 + * jbd2: Fix unreclaimed pages after truncate in data=journal mode + - LP: #1538756 + * drm/ttm: Fixed a read/write lock imbalance + - LP: #1538756 + * i2c: mv64xxx: The n clockdiv factor is 0 based on sunxi SoCs + - LP: #1538756 + * AHCI: Fix softreset failed issue of Port Multiplier + - LP: #1538756 + * sata_sil: disable trim + - LP: #1538756 + * staging: lustre: echo_copy.._lsm() dereferences userland pointers + directly + - LP: #1538756 + * irqchip/versatile-fpga: Fix PCI IRQ mapping on Versatile PB + - LP: #1538756 + * usb: core : hub: Fix BOS 'NULL pointer' kernel panic + - LP: #1538756 + * USB: whci-hcd: add check for dma mapping error + - LP: #1538756 + * usb: Use the USB_SS_MULT() macro to decode burst multiplier for log + message + - LP: #1538756 + * dm btree: fix leak of bufio-backed block in btree_split_sibling error + path + - LP: #1538756 + * SCSI: Fix NULL pointer dereference in runtime PM + - LP: #1538756 + * usb: xhci: fix config fail of FS hub behind a HS hub with MTT + - LP: #1538756 + * ALSA: rme96: Fix unexpected volume reset after rate changes + - LP: #1538756 + * ALSA: hda - Add inverted dmic for Packard Bell DOTS + - LP: #1523232, #1538756 + * virtio: fix memory leak of virtio ida cache layers + - LP: #1538756 + * 9p: ->evict_inode() should kick out ->i_data, not ->i_mapping + - LP: #1538756 + * radeon/cik: Fix GFX IB test on Big-Endian + - LP: #1538756 + * crypto: skcipher - Copy iv from desc even for 0-len walks + - LP: #1538756 + * dm thin metadata: fix bug when taking a metadata snapshot + - LP: #1538756 + * dm space map metadata: fix ref counting bug when bootstrapping a new + space map + - LP: #1538756 + * ipmi: move timer init to before irq is setup + - LP: #1538756 + * KVM: PPC: Book3S HV: Prohibit setting illegal transaction state in MSR + - LP: #1538756 + * rfkill: copy the name into the rfkill struct + - LP: #1538756 + * dm btree: fix bufio buffer leaks in dm_btree_del() error path + - LP: #1538756 + * ses: Fix problems with simple enclosures + - LP: #1538756 + * vgaarb: fix signal handling in vga_get() + - LP: #1538756 + * ses: fix additional element traversal bug + - LP: #1538756 + * xhci: fix usb2 resume timing and races. + - LP: #1538756 + * USB: add quirk for devices with broken LPM + - LP: #1538756 + * powercap / RAPL: fix BIOS lock check + - LP: #1538756 + * parisc iommu: fix panic due to trying to allocate too large region + - LP: #1538756 + * mm, vmstat: allow WQ concurrency to discover memory reclaim doesn't + make any progress + - LP: #1538756 + * mm: hugetlb: call huge_pte_alloc() only if ptep is null + - LP: #1538756 + * drivers/base/memory.c: prohibit offlining of memory blocks with missing + sections + - LP: #1538756 + * sh64: fix __NR_fgetxattr + - LP: #1538756 + * n_tty: Fix poll() after buffer-limited eof push read + - LP: #1538756 + * tty: Fix GPF in flush_to_ldisc() + - LP: #1538756 + * genirq: Prevent chip buslock deadlock + - LP: #1538756 + * ALSA: usb-audio: Add a more accurate volume quirk for AudioQuest + DragonFly + - LP: #1538756 + * ARM: 8471/1: need to save/restore arm register(r11) when it is + corrupted + - LP: #1538756 + * spi: fix parent-device reference leak + - LP: #1538756 + * scripts: recordmcount: break hardlinks + - LP: #1538756 + * ftrace/scripts: Have recordmcount copy the object file + - LP: #1538756 + * ARC: dw2 unwind: Reinstante unwinding out of modules + - LP: #1538756 + * ARC: dw2 unwind: Ignore CIE version !=1 gracefully instead of bailing + - LP: #1538756 + * ALSA: hda - Set SKL+ hda controller power at freeze() and thaw() + - LP: #1538756 + * s390/dis: Fix handling of format specifiers + - LP: #1538756 + * USB: ipaq.c: fix a timeout loop + - LP: #1538756 + * USB: fix invalid memory access in hub_activate() + - LP: #1538756 + * x86/mce: Ensure offline CPUs don't participate in rendezvous process + - LP: #1538756 + * parisc: Fix syscall restarts + - LP: #1538756 + * ALSA: hda/realtek - Fix silent headphone output on MacPro 4,1 (v2) + - LP: #1538756 + * ASoC: arizona: Fix bclk for sample rates that are multiple of 4kHz + - LP: #1538756 + * mm/memory_hotplug.c: check for missing sections in + test_pages_in_a_zone() + - LP: #1538756 + * ftrace/scripts: Fix incorrect use of sprintf in recordmcount + - LP: #1538756 + * tracing: Fix setting of start_index in find_next() + - LP: #1538756 + * async_tx: use GFP_NOWAIT rather than GFP_IO + - LP: #1538756 + * dts: vt8500: Add SDHC node to DTS file for WM8650 + - LP: #1538756 + * ftrace/module: Call clean up function when module init fails early + - LP: #1538756 + * vmstat: allocate vmstat_wq before it is used + - LP: #1538756 + * firmware: dmi_scan: Fix UUID endianness for SMBIOS >= 2.6 + - LP: #1538756 + * kvm: x86: only channel 0 of the i8254 is linked to the HPET + - LP: #1538756 + * ipv6/addrlabel: fix ip6addrlbl_get() + - LP: #1538756 + * net: fix warnings in 'make htmldocs' by moving macro definition out of + field declaration + - LP: #1538756 + * ser_gigaset: fix deallocation of platform device structure + - LP: #1538756 + * pinctrl: bcm2835: Fix initial value for direction_output + - LP: #1538756 + * mISDN: fix a loop count + - LP: #1538756 + * sh_eth: fix TX buffer byte-swapping + - LP: #1538756 + * qlcnic: fix a timeout loop + - LP: #1538756 + * net: phy: mdio-mux: Check return value of mdiobus_alloc() + - LP: #1538756 + * include/linux/mmdebug.h: should include linux/bug.h + - LP: #1538756 + * net: possible use after free in dst_release + - LP: #1538756 + * Linux 3.13.11-ckt33 + - LP: #1538756 + * xfrm: dst_entries_init() per-net dst_ops + - LP: #1486670 + + -- Brad Figg Mon, 01 Feb 2016 12:04:20 -0800 + +linux (3.13.0-77.121) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1535880 + * Merged back Ubuntu-3.13.0-75.119 + + -- Luis Henriques Tue, 19 Jan 2016 19:52:52 +0000 + +linux (3.13.0-76.120) trusty; 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 09:54:03 +0000 + +linux (3.13.0-75.119) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1532781 + + [ Kamal Mostafa ] + + * Revert "SAUCE: disable stack-protector for ARM compressed bootloader" + * [Config] updateconfigs: select CC_STACKPROTECTOR_REGULAR + + [ Upstream Kernel Changes ] + + * Revert "dm mpath: fix stalls when handling invalid ioctls" + - LP: #1523661 + * Revert "xhci: don't finish a TD if we get a short transfer event mid + TD" + - LP: #1529077 + * x86/setup: Extend low identity map to cover whole kernel range + - LP: #1523661 + * x86/setup: Fix low identity map for >= 2GB kernel range + - LP: #1523661 + * drm/radeon: add quirk for MSI R7 370 + - LP: #1523661 + * drm/radeon: add quirk for ASUS R7 370 + - LP: #1523661 + * drm/radeon: fix quirk for MSI R7 370 Armor 2X + - LP: #1523661 + * irda: precedence bug in irlmp_seq_hb_idx() + - LP: #1523661 + * macvtap: unbreak receiving of gro skb with frag list + - LP: #1523661 + * RDS-TCP: Recover correctly from pskb_pull()/pksb_trim() failure in + rds_tcp_data_recv + - LP: #1523661 + * stmmac: Correctly report PTP capabilities. + - LP: #1523661 + * ipmr: fix possible race resulting from improper usage of + IP_INC_STATS_BH() in preemptible context. + - LP: #1523661 + * qmi_wwan: fix entry for HP lt4112 LTE/HSPA+ Gobi 4G Module + - LP: #1523661 + * net: avoid NULL deref in inet_ctl_sock_destroy() + - LP: #1523661 + * net: fix a race in dst_release() + - LP: #1523661 + * HID: core: Avoid uninitialized buffer access + - LP: #1523661 + * [media] v4l2-compat-ioctl32: fix alignment for ARM64 + - LP: #1523661 + * net: mvneta: Fix CPU_MAP registers initialisation + - LP: #1523661 + * mtd: mtdpart: fix add_mtd_partitions error path + - LP: #1523661 + * fs/proc, core/debug: Don't expose absolute kernel addresses via wchan + - LP: #1523661 + * ARM: 8426/1: dma-mapping: add missing range check in dma_mmap() + - LP: #1523661 + * ARM: 8427/1: dma-mapping: add support for offset parameter in + dma_mmap() + - LP: #1523661 + * spi: ti-qspi: Fix data corruption seen on r/w stress test + - LP: #1523661 + * lockd: create NSM handles per net namespace + - LP: #1523661 + * ARM: common: edma: Fix channel parameter for irq callbacks + - LP: #1523661 + * iommu/vt-d: Fix error in detect ATS capability + - LP: #1523661 + * iommu/vt-d: Fix ATSR handling for Root-Complex integrated endpoints + - LP: #1523661 + * ext4: fix potential use after free in __ext4_journal_stop + - LP: #1523661 + * fix calculation of meta_bg descriptor backups + - LP: #1523661 + * ext4, jbd2: ensure entering into panic after recording an error in + superblock + - LP: #1523661 + * vTPM: fix memory allocation flag for rtce buffer at kernel boot + - LP: #1523661 + * [media] media: vb2 dma-contig: Fully cache synchronise buffers in + prepare and finish + - LP: #1523661 + * Bluetooth: hidp: fix device disconnect on idle timeout + - LP: #1523661 + * Bluetooth: ath3k: Add new AR3012 0930:021c id + - LP: #1502781, #1523661 + * Bluetooth: ath3k: Add support of AR3012 0cf3:817b device + - LP: #1506615, #1523661 + * spi: atmel: Fix DMA-setup for transfers with more than 8 bits per word + - LP: #1523661 + * staging: rtl8712: Add device ID for Sitecom WLA2100 + - LP: #1523661 + * ACPI: Use correct IRQ when uninstalling ACPI interrupt handler + - LP: #1523661 + * ALSA: hda/realtek - Dell XPS one ALC3260 speaker no sound after resume + back + - LP: #1523661 + * ALSA: hda - Disable 64bit address for Creative HDA controllers + - LP: #1523661 + * MAINTAINERS: Add public mailing list for ARC + - LP: #1523661 + * megaraid_sas: Do not use PAGE_SIZE for max_sectors + - LP: #1523661 + * arm64: Fix compat register mappings + - LP: #1523661 + * can: Use correct type in sizeof() in nla_put() + - LP: #1523661 + * mtd: blkdevs: fix potential deadlock + lockdep warnings + - LP: #1523661 + * crypto: algif_hash - Only export and import on sockets with data + - LP: #1523661 + * xtensa: fixes for configs without loop option + - LP: #1523661 + * megaraid_sas : SMAP restriction--do not access user memory from IOCTL + code + - LP: #1523661 + * mac80211: allow null chandef in tracing + - LP: #1523661 + * recordmcount: Fix endianness handling bug for nop_mcount + - LP: #1523661 + * KVM: Disable SMAP for guests in EPT realmode and EPT unpaging mode + - LP: #1523661 + * KVM: VMX: fix SMEP and SMAP without EPT + - LP: #1523661 + * ALSA: hda - Apply pin fixup for HP ProBook 6550b + - LP: #1523661 + * ALSA: hda - Add Intel Lewisburg device IDs Audio + - LP: #1523661 + * firewire: ohci: fix JMicron JMB38x IT context discovery + - LP: #1523661 + * proc: actually make proc_fd_permission() thread-friendly + - LP: #1523661 + * printk: prevent userland from spoofing kernel messages + - LP: #1523661 + * x86/cpu: Call verify_cpu() after having entered long mode too + - LP: #1523661 + * Btrfs: fix race leading to incorrect item deletion when dropping + extents + - LP: #1523661 + * Btrfs: fix race leading to BUG_ON when running delalloc for nodatacow + - LP: #1523661 + * perf: Fix inherited events vs. tracepoint filters + - LP: #1523661 + * scsi_sysfs: Fix queue_ramp_up_period return code + - LP: #1523661 + * Btrfs: fix race when listing an inode's xattrs + - LP: #1523661 + * storvsc: Don't set the SRB_FLAGS_QUEUE_ACTION_ENABLE flag + - LP: #1523661 + * drm/ast: Initialized data needed to map fbdev memory + - LP: #1523661 + * FS-Cache: Increase reference of parent after registering, netfs success + - LP: #1523661 + * FS-Cache: Don't override netfs's primary_index if registering failed + - LP: #1523661 + * FS-Cache: Handle a write to the page immediately beyond the EOF marker + - LP: #1523661 + * binfmt_elf: Don't clobber passed executable's file header + - LP: #1523661 + * wm831x_power: Use IRQF_ONESHOT to request threaded IRQs + - LP: #1523661 + * mwifiex: fix mwifiex_rdeeprom_read() + - LP: #1523661 + * dmaengine: dw: convert to __ffs() + - LP: #1523661 + * devres: fix a for loop bounds check + - LP: #1523661 + * MIPS: atomic: Fix comment describing atomic64_add_unless's return + value. + - LP: #1523661 + * ipv6: fix tunnel error handling + - LP: #1523661 + * perf trace: Fix documentation for -i + - LP: #1523661 + * bonding: fix panic on non-ARPHRD_ETHER enslave failure + - LP: #1523661 + * mac80211: fix driver RSSI event calculations + - LP: #1523661 + * packet: fix match_fanout_group() + - LP: #1523661 + * ARM: pxa: remove incorrect __init annotation on pxa27x_set_pwrmode + - LP: #1523661 + * drm: Fix return value of drm_framebuffer_init() + - LP: #1523661 + * netfilter: nfnetlink: don't probe module if it exists + - LP: #1523661 + * TPM: Avoid reference to potentially freed memory + - LP: #1523661 + * Btrfs: fix file corruption and data loss after cloning inline extents + - LP: #1523661 + * Btrfs: don't use ram_bytes for uncompressed inline items + - LP: #1523661 + * Btrfs: fix truncation of compressed and inlined extents + - LP: #1523661 + * Linux 3.13.11-ckt31 + - LP: #1523661 + * stackprotector: Unify the HAVE_CC_STACKPROTECTOR logic between + architectures + * stackprotector: Introduce CONFIG_CC_STACKPROTECTOR_STRONG + * powerpc/tm: Check for already reclaimed tasks + - LP: #1520411 + * powerpc/tm: Block signal return setting invalid MSR state + - LP: #1520411 + * include/linux/mm.h: remove ifdef condition + - LP: #1294283 + * hv: hv_balloon: avoid memory leak on alloc_error of 2MB memory block + - LP: #1294283 + * Drivers: hv: hv_balloon: Fix a locking bug in the balloon driver + - LP: #1294283 + * Drivers: hv: hv_balloon: refuse to balloon below the floor + - LP: #1294283 + * Drivers: hv: hv_balloon: survive ballooning request with num_pages=0 + - LP: #1294283 + * Drivers: hv: hv_balloon: correctly handle val.freeramINT_MAX case + - LP: #1294283 + * Drivers: hv: balloon: check if ha_region_mutex was acquired in + MEM_CANCEL_ONLINE case + - LP: #1294283 + * mm: meminit: make __early_pfn_to_nid SMP-safe and introduce + meminit_pfn_in_nid + - LP: #1294283 + * mm: meminit: inline some helper functions + - LP: #1294283 + * mm, meminit: allow early_pfn_to_nid to be used during runtime + - LP: #1294283 + * mm: initialize hotplugged pages as reserved + - LP: #1294283 + * fanotify: fix -EOVERFLOW with large files on 64-bit + - LP: #1527039 + * tty: fix stall caused by missing memory barrier in drivers/tty/n_tty.c + - LP: #1512815, #1528377 + * iio: lpc32xx_adc: fix warnings caused by enabling unprepared clock + - LP: #1528377 + * iio:ad5064: Make sure ad5064_i2c_write() returns 0 on success + - LP: #1528377 + * iio: ad5064: Fix ad5629/ad5669 shift + - LP: #1528377 + * iio:ad7793: Fix ad7785 product ID + - LP: #1528377 + * x86/fpu: Fix 32-bit signal frame handling + - LP: #1528377 + * ALSA: usb-audio: add packet size quirk for the Medeli DD305 + - LP: #1528377 + * ALSA: usb-audio: prevent CH345 multiport output SysEx corruption + - LP: #1528377 + * ALSA: usb-audio: work around CH345 input SysEx corruption + - LP: #1528377 + * USB: serial: option: add support for Novatel MiFi USB620L + - LP: #1528377 + * USB: ti_usb_3410_5052: Add Honeywell HGI80 ID + - LP: #1528377 + * ASoC: wm8962: correct addresses for HPF_C_0/1 + - LP: #1528377 + * mac80211: mesh: fix call_rcu() usage + - LP: #1528377 + * usb: dwc3: gadget: let us set lower max_speed + - LP: #1528377 + * dm: fix ioctl retry termination with signal + - LP: #1528377 + * usb: chipidea: debug: disable usb irq while role switch + - LP: #1528377 + * MIPS: KVM: Fix ASID restoration logic + - LP: #1528377 + * MIPS: KVM: Fix CACHE immediate offset sign extension + - LP: #1528377 + * MIPS: KVM: Uninit VCPU in vcpu_create error path + - LP: #1528377 + * xhci: Fix a race in usb2 LPM resume, blocking U3 for usb2 devices + - LP: #1528377 + * x86/cpu: Fix SMAP check in PVOPS environments + - LP: #1528377 + * ALSA: hda - Add fixup for Acer Aspire One Cloudbook 14 + - LP: #1528377 + * arm64: restore bogomips information in /proc/cpuinfo + - LP: #1528377 + * USB: option: add XS Stick W100-2 from 4G Systems + - LP: #1528377 + * usblp: do not set TASK_INTERRUPTIBLE before lock + - LP: #1528377 + * mac: validate mac_partition is within sector + - LP: #1528377 + * ALSA: hda - Apply HP headphone fixups more generically + - LP: #1528377 + * fat: fix fake_offset handling on error path + - LP: #1528377 + * kernel/signal.c: unexport sigsuspend() + - LP: #1528377 + * parisc: Drop unused MADV_xxxK_PAGES flags from asm/mman.h + - LP: #1528377 + * can: sja1000: clear interrupts on start + - LP: #1528377 + * ARC: dw2 unwind: Remove falllback linear search thru FDE entries + - LP: #1528377 + * fix sysvfs symlinks + - LP: #1528377 + * vfs: Make sendfile(2) killable even better + - LP: #1528377 + * vfs: Avoid softlockups with sendfile(2) + - LP: #1528377 + * nfs4: start callback_ident at idr 1 + - LP: #1528377 + * ALSA: hda - Fix headphone noise after Dell XPS 13 resume back from S3 + - LP: #1519168, #1528377 + * ring-buffer: Update read stamp with first real commit on page + - LP: #1528377 + * arm64: KVM: Fix AArch32 to AArch64 register mapping + - LP: #1528377 + * drm/radeon: make rv770_set_sw_state failures non-fatal + - LP: #1528377 + * RDS: fix race condition when sending a message on unbound socket + - LP: #1528377 + * btrfs: fix signed overflows in btrfs_sync_file + - LP: #1528377 + * drm/radeon: make some dpm errors debug only + - LP: #1528377 + * nfs: if we have no valid attrs, then don't declare the attribute cache + valid + - LP: #1528377 + * xen/gntdev: Grant maps should not be subject to NUMA balancing + - LP: #1528377 + * iscsi-target: Fix rx_login_comp hang after login failure + - LP: #1528377 + * target: Fix race for SCF_COMPARE_AND_WRITE_POST checking + - LP: #1528377 + * target: fix COMPARE_AND_WRITE non zero SGL offset data corruption + - LP: #1528377 + * block: Always check queue limits for cloned requests + - LP: #1528377 + * Fix a memory leak in scsi_host_dev_release() + - LP: #1528377 + * wan/x25: Fix use-after-free in x25_asy_open_tty() + - LP: #1528377 + * sched/core: Clear the root_domain cpumasks in init_rootdomain() + - LP: #1528377 + * x86/signal: Fix restart_syscall number for x32 tasks + - LP: #1528377 + * mmc: remove bondage between REQ_META and reliable write + - LP: #1528377 + * sctp: translate host order to network order when setting a hmacid + - LP: #1528377 + * usb: musb: core: fix order of arguments to ulpi write callback + - LP: #1528377 + * FS-Cache: Add missing initialization of ret in cachefiles_write_page() + - LP: #1528377 + * tcp: md5: fix lockdep annotation + - LP: #1528377 + * ARM: dts: Kirkwood: Fix QNAP TS219 power-off + - LP: #1528377 + * isdn: Partially revert debug format string usage clean up + - LP: #1528377 + * remoteproc: avoid stack overflow in debugfs file + - LP: #1528377 + * net: mvneta: add configuration for MBUS windows access protection + - LP: #1528377 + * net: mvneta: fix bit assignment in MVNETA_RXQ_CONFIG_REG + - LP: #1528377 + * net: mvneta: fix bit assignment for RX packet irq enable + - LP: #1528377 + * sched/core: Remove false-positive warning from wake_up_process() + - LP: #1528377 + * packet: allow to transmit +4 byte in TX_RING slot for VLAN case + - LP: #1528377 + * packet: tpacket_snd(): fix signed/unsigned comparison + - LP: #1528377 + * packet: only allow extra vlan len on ethernet devices + - LP: #1528377 + * packet: fix tpacket_snd max frame len + - LP: #1528377 + * net/mlx4_core: Avoid returning success in case of an error flow + - LP: #1528377 + * net: ip6mr: fix static mfc/dev leaks on table destruction + - LP: #1528377 + * unix: avoid use-after-free in ep_remove_wait_queue + - LP: #1528377 + * broadcom: fix PHY_ID_BCM5481 entry in the id table + - LP: #1528377 + * net/neighbour: fix crash at dumping device-agnostic proxy entries + - LP: #1528377 + * Linux 3.13.11-ckt32 + - LP: #1528377 + * KVM: x86: Reload pit counters for all channels when restoring state + - LP: #1530956 + - CVE-2015-7513 + * HID: wacom - make sure touch_input is valid before using it + - LP: #1310800 + * xfs: give all workqueues rescuer threads + - LP: #1527062 + + -- Luis Henriques Mon, 11 Jan 2016 12:13:33 +0000 + +linux (3.13.0-74.118) trusty; urgency=low + + [ Kamal Mostafa ] + + * Release Tracking Bug + - LP: #1527404 + + [ Jann Horn ] + + * ptrace: being capable wrt a process requires mapped uids/gids + - LP: #1527374 + + -- Kamal Mostafa Thu, 17 Dec 2015 13:06:31 -0800 + +linux (3.13.0-74.117) trusty; 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/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 18:13:16 +0000 + +linux (3.13.0-73.116) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1522858 + + [ Upstream Kernel Changes ] + + * Revert "dm: fix AB-BA deadlock in __dm_destroy()" + - LP: #1522766 + * dm: fix AB-BA deadlock in __dm_destroy() + - LP: #1522766 + + -- Luis Henriques Fri, 04 Dec 2015 14:13:28 +0000 + +linux (3.13.0-72.115) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1521979 + + [ Andy Whitcroft ] + + * [Packaging] control -- make element ordering deterministic + - LP: #1516686 + * [Packaging] control -- prepare for new kernel-wedge semantics + - LP: #1516686 + * [Tests] rebuild -- fix up rebuild test + - LP: #1516686 + * [Debian] rebuild should only trigger for non-linux packages + - LP: #1498862, #1516686 + * [Tests] gcc-multilib does not exist on ppc64el + - LP: #1515541 + + [ Craig Magina ] + + * [Config] Enable USB for arm64 + - LP: #1514971 + + [ Duc Dang ] + + * SAUCE: (noup) arm64: dts: Add USB nodes for APM X-Gene v1 platforms + - LP: #1514971 + + [ Joseph Salisbury ] + + * SAUCE: scsi_sysfs: protect against double execution of + __scsi_remove_device() + - LP: #1509029 + + [ Upstream Kernel Changes ] + + * Revert "ARM64: unwind: Fix PC calculation" + - LP: #1520264 + * [SCSI] hpsa: allow SCSI mid layer to handle unit attention + - LP: #1512415 + * usb: make xhci platform driver use 64 bit or 32 bit DMA + - LP: #1514971 + * usb: Add support for ACPI identification to xhci-platform + - LP: #1514971 + * xhci: Workaround to get Intel xHCI reset working more reliably + * isdn_ppp: Add checks for allocation failure in isdn_ppp_open() + - LP: #1520264 + * ppp, slip: Validate VJ compression slot parameters completely + - LP: #1520264 + * staging/dgnc: fix info leak in ioctl + - LP: #1520264 + * regmap: debugfs: Ensure we don't underflow when printing access masks + - LP: #1520264 + * regmap: debugfs: Don't bother actually printing when calculating max + length + - LP: #1520264 + * tools lib traceevent: Fix string handling in heterogeneous arch + environments + - LP: #1520264 + * perf tools: Fix copying of /proc/kcore + - LP: #1520264 + * ASoC: db1200: Fix DAI link format for db1300 and db1550 + - LP: #1520264 + * m68k: Define asmlinkage_protect + - LP: #1520264 + * x86/xen: Support kexec/kdump in HVM guests by doing a soft reset + - LP: #1520264 + * x86/xen: Do not clip xen_e820_map to xen_e820_map_entries when + sanitizing map + - LP: #1520264 + * UBI: return ENOSPC if no enough space available + - LP: #1520264 + * s390/boot: fix boot of compressed kernel built with gcc 4.9 + - LP: #1520264 + * s390/boot/decompression: disable floating point in decompressor + - LP: #1520264 + * MIPS: dma-default: Fix 32-bit fall back to GFP_DMA + - LP: #1520264 + * drm/qxl: recreate the primary surface when the bo is not primary + - LP: #1520264 + * genirq: Fix race in register_irq_proc() + - LP: #1520264 + * KVM: nSVM: Check for NRIPS support before updating control field + - LP: #1520264 + * Use WARN_ON_ONCE for missing X86_FEATURE_NRIPS + - LP: #1520264 + * dm: fix AB-BA deadlock in __dm_destroy() + - LP: #1520264 + * mm: hugetlbfs: skip shared VMAs when unmapping private pages to satisfy + a fault + - LP: #1520264 + * [SMB3] Do not fall back to SMBWriteX in set_file_size error cases + - LP: #1520264 + * x86/mm: Set NX on gap between __ex_table and rodata + - LP: #1520264 + * ASoC: dwc: correct irq clear method + - LP: #1520264 + * dm raid: fix round up of default region size + - LP: #1520264 + * clocksource: Fix abs() usage w/ 64bit values + - LP: #1520264 + * ALSA: hda - Apply SPDIF pin ctl to MacBookPro 12,1 + - LP: #1520264 + * USB: Add reset-resume quirk for two Plantronics usb headphones. + - LP: #1520264 + * usb: Add device quirk for Logitech PTZ cameras + - LP: #1520264 + * staging: speakup: fix speakup-r regression + - LP: #1520264 + * ALSA: synth: Fix conflicting OSS device registration on AWE32 + - LP: #1520264 + * arm64: readahead: fault retry breaks mmap file read random detection + - LP: #1520264 + * dm cache: fix NULL pointer when switching from cleaner policy + - LP: #1520264 + * dmaengine: dw: properly read DWC_PARAMS register + - LP: #1520264 + * 3w-9xxx: don't unmap bounce buffered commands + - LP: #1520264 + * mm/slab: fix unexpected index mapping result of + kmalloc_size(INDEX_NODE+1) + - LP: #1520264 + * workqueue: make sure delayed work run in local cpu + - LP: #1520264 + * crypto: sparc - initialize blkcipher.ivsize + - LP: #1520264 + * drm/nouveau/fbcon: take runpm reference when userspace has an open fd + - LP: #1520264 + * crypto: ahash - ensure statesize is non-zero + - LP: #1520264 + * dm thin: fix missing pool reference count decrement in pool_ctr error + path + - LP: #1520264 + * btrfs: fix use after free iterating extrefs + - LP: #1520264 + * i2c: rcar: enable RuntimePM before registering to the core + - LP: #1520264 + * i2c: s3c2410: enable RuntimePM before registering to the core + - LP: #1520264 + * i2c: designware-platdrv: enable RuntimePM before registering to the + core + - LP: #1520264 + * i2c: designware: Do not use parameters from ACPI on Dell Inspiron 7348 + - LP: #1520264 + * l2tp: protect tunnel->del_work by ref_count + - LP: #1520264 + * af_unix: Convert the unix_sk macro to an inline function for type + safety + - LP: #1520264 + * af_unix: return data from multiple SKBs on recv() with MSG_PEEK flag + - LP: #1520264 + * net/unix: fix logic about sk_peek_offset + - LP: #1520264 + * skbuff: Fix skb checksum flag on skb pull + - LP: #1520264 + * skbuff: Fix skb checksum partial check. + - LP: #1520264 + * net: add pfmemalloc check in sk_add_backlog() + - LP: #1520264 + * ppp: don't override sk->sk_state in pppoe_flush_dev() + - LP: #1520264 + * ethtool: Use kcalloc instead of kmalloc for ethtool_get_strings + - LP: #1520264 + * asix: Don't reset PHY on if_up for ASIX 88772 + - LP: #1520264 + * asix: Do full reset during ax88772_bind + - LP: #1520264 + * ath9k: declare required extra tx headroom + - LP: #1520264 + * iio: accel: sca3000: memory corruption in sca3000_read_first_n_hw_rb() + - LP: #1520264 + * iwlwifi: dvm: fix D3 firmware PN programming + - LP: #1520264 + * iwlwifi: mvm: fix D3 firmware PN programming + - LP: #1520264 + * iwlwifi: fix firmware filename for 3160 + - LP: #1520264 + * ARM: orion: Fix DSA platform device after mvmdio conversion + - LP: #1520264 + * xen-blkfront: check for null drvdata in blkback_changed + (XenbusStateClosing) + - LP: #1520264 + * ALSA: hda - Fix inverted internal mic on Lenovo G50-80 + - LP: #1504778, #1520264 + * ASoC: Add info callback for SX_TLV controls + - LP: #1520264 + * xhci: don't finish a TD if we get a short transfer event mid TD + - LP: #1520264 + * xhci: handle no ping response error properly + - LP: #1520264 + * xhci: Add spurious wakeup quirk for LynxPoint-LP controllers + - LP: #1520264 + * ASoC: wm8904: Correct number of EQ registers + - LP: #1520264 + * drm/nouveau/gem: return only valid domain when there's only one + - LP: #1520264 + * powerpc/rtas: Validate rtas.entry before calling enter_rtas() + - LP: #1520264 + * mm: make sendfile(2) killable + - LP: #1520264 + * rbd: fix double free on rbd_dev->header_name + - LP: #1520264 + * rbd: don't leak parent_spec in rbd_dev_probe_parent() + - LP: #1520264 + * rbd: prevent kernel stack blow up on rbd map + - LP: #1520264 + * dm btree remove: fix a bug when rebalancing nodes after removal + - LP: #1520264 + * dm btree: fix leak of bufio-backed block in btree_split_beneath error + path + - LP: #1520264 + * IB/cm: Fix rb-tree duplicate free and use-after-free + - LP: #1520264 + * module: Fix locking in symbol_put_addr() + - LP: #1520264 + * crypto: api - Only abort operations on fatal signal + - LP: #1520264 + * md/raid1: submit_bio_wait() returns 0 on success + - LP: #1520264 + * md/raid10: submit_bio_wait() returns 0 on success + - LP: #1520264 + * iommu/amd: Don't clear DTE flags when modifying it + - LP: #1520264 + * mvsas: Fix NULL pointer dereference in mvs_slot_task_free + - LP: #1520264 + * drm/radeon: move bl encoder assignment into bl init + - LP: #1520264 + * rbd: require stable pages if message data CRCs are enabled + - LP: #1520264 + * md/raid5: fix locking in handle_stripe_clean_event() + - LP: #1520264 + * net/mlx4: Copy/set only sizeof struct mlx4_eqe bytes + - LP: #1520264 + * ipv6: Fix IPsec pre-encap fragmentation check + - LP: #1520264 + * ipv6: gre: support SIT encapsulation + - LP: #1520264 + * ppp: fix pppoe_dev deletion condition in pppoe_release() + - LP: #1520264 + * Linux 3.13.11-ckt30 + - LP: #1520264 + * KVM: svm: unconditionally intercept #DB + - LP: #1520184 + - CVE-2015-8104 + + -- Luis Henriques Wed, 02 Dec 2015 11:04:54 +0000 + +linux (3.13.0-71.114) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1521426 + + [ Upstream Kernel Changes ] + + * fib_rules: Fix dump_rules() not to exit early + - LP: #1514911 + - LP: #1514785 + + -- Luis Henriques Thu, 26 Nov 2015 14:27:35 +0000 + +linux (3.13.0-70.113) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1516733 + + [ Upstream Kernel Changes ] + + * arm64: errata: use KBUILD_CFLAGS_MODULE for erratum #843419 + - LP: #1516682 + + -- Luis Henriques Mon, 16 Nov 2015 17:47:36 +0000 + +linux (3.13.0-69.112) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1514858 + + [ Joseph Salisbury ] + + * SAUCE: storvsc: use small sg_tablesize on x86 + - LP: #1495983 + + [ Luis Henriques ] + + * [Config] updateconfigs after 3.13.11-ckt28 and 3.13.11-ckt29 stable + updates + + [ Upstream Kernel Changes ] + + * ext4: fix indirect punch hole corruption + - LP: #1292234 + * x86/hyperv: Mark the Hyper-V TSC as unstable + - LP: #1498206 + * 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 + * Drivers: hv: vmbus: Increase the limit on the number of pfns we can + handle + - LP: #1495983 + * sctp: fix race on protocol/netns initialization + - LP: #1514832 + * [media] v4l: omap3isp: Fix sub-device power management code + - LP: #1514832 + * [media] rc-core: fix remove uevent generation + - LP: #1514832 + * xtensa: fix threadptr reload on return to userspace + - LP: #1514832 + * ARM: OMAP2+: DRA7: clockdomain: change l4per2_7xx_clkdm to SW_WKUP + - LP: #1514832 + * mac80211: enable assoc check for mesh interfaces + - LP: #1514832 + * PCI: Add dev_flags bit to access VPD through function 0 + - LP: #1514832 + * PCI: Add VPD function 0 quirk for Intel Ethernet devices + - LP: #1514832 + * usb: dwc3: ep0: Fix mem corruption on OUT transfers of more than 512 + bytes + - LP: #1514832 + * serial: 8250_pci: Add support for Pericom PI7C9X795[1248] + - LP: #1514832 + * KVM: MMU: fix validation of mmio page fault + - LP: #1514832 + * auxdisplay: ks0108: fix refcount + - LP: #1514832 + * devres: fix devres_get() + - LP: #1514832 + * iio: adis16400: Fix adis16448 gyroscope scale + - LP: #1514832 + * iio: Add inverse unit conversion macros + - LP: #1514832 + * iio: adis16480: Fix scale factors + - LP: #1514832 + * iio: industrialio-buffer: Fix iio_buffer_poll return value + - LP: #1514832 + * iio: event: Remove negative error code from iio_event_poll + - LP: #1514832 + * NFSv4: don't set SETATTR for O_RDONLY|O_EXCL + - LP: #1514832 + * unshare: Unsharing a thread does not require unsharing a vm + - LP: #1514832 + * ASoC: adav80x: Remove .read_flag_mask setting from + adav80x_regmap_config + - LP: #1514832 + * drivers: usb :fsl: Implement Workaround for USB Erratum A007792 + - LP: #1514832 + * drivers: usb: fsl: Workaround for USB erratum-A005275 + - LP: #1514832 + * serial: 8250: don't bind to SMSC IrCC IR port + - LP: #1514832 + * staging: comedi: adl_pci7x3x: fix digital output on PCI-7230 + - LP: #1514832 + * blk-mq: fix buffer overflow when reading sysfs file of 'pending' + - LP: #1514832 + * xtensa: fix kernel register spilling + - LP: #1514832 + * NFS: nfs_set_pgio_error sometimes misses errors + - LP: #1514832 + * NFS: Fix a NULL pointer dereference of migration recovery ops for v4.2 + client + - LP: #1514832 + * usb: host: ehci-sys: delete useless bus_to_hcd conversion + - LP: #1514832 + * USB: symbolserial: Use usb_get_serial_port_data + - LP: #1514832 + * USB: ftdi_sio: Added custom PID for CustomWare products + - LP: #1514832 + * HID: usbhid: Fix the check for HID_RESET_PENDING in hid_io_error + - LP: #1514832 + * eCryptfs: Invalidate dcache entries when lower i_nlink is zero + - LP: #1514832 + * libxfs: readahead of dir3 data blocks should use the read verifier + - LP: #1514832 + * xfs: Fix xfs_attr_leafblock definition + - LP: #1514832 + * arm64: kconfig: Move LIST_POISON to a safe value + - LP: #1514832 + * Btrfs: check if previous transaction aborted to avoid fs corruption + - LP: #1514832 + * DRM - radeon: Don't link train DisplayPort on HPD until we get the dpcd + - LP: #1514832 + * rtlwifi: rtl8192cu: Add new device ID + - LP: #1514832 + * rtlwifi: rtl8192cu: Add new device ID + - LP: #1514832 + * of/address: Don't loop forever in of_find_matching_node_by_address(). + - LP: #1514832 + * drivercore: Fix unregistration path of platform devices + - LP: #1514832 + * xfs: return errors from partial I/O failures to files + - LP: #1514832 + * IB/qib: Change lkey table allocation to support more MRs + - LP: #1514832 + * tg3: Fix temperature reporting + - LP: #1514832 + * drm/i915: Always mark the object as dirty when used by the GPU + - LP: #1514832 + * Add radeon suspend/resume quirk for HP Compaq dc5750. + - LP: #1514832 + * IB/uverbs: reject invalid or unknown opcodes + - LP: #1514832 + * hpfs: update ctime and mtime on directory modification + - LP: #1514832 + * Input: evdev - do not report errors form flush() + - LP: #1514832 + * crypto: ghash-clmulni: specify context size for ghash async algorithm + - LP: #1514832 + * fs: create and use seq_show_option for escaping + - LP: #1514832 + * ALSA: hda - Enable headphone jack detect on old Fujitsu laptops + - LP: #1514832 + * ALSA: hda - Use ALC880_FIXUP_FUJITSU for FSC Amilo M1437 + - LP: #1514832 + * scsi: fix scsi_error_handler vs. scsi_host_dev_release race + - LP: #1514832 + * parisc: Use double word condition in 64bit CAS operation + - LP: #1514832 + * vmscan: fix increasing nr_isolated incurred by putback unevictable + pages + - LP: #1514832 + * hfs,hfsplus: cache pages correctly between bnode_create and bnode_free + - LP: #1514832 + * hfs: fix B-tree corruption after insertion at position 0 + - LP: #1514832 + * drm/qxl: validate monitors config modes + - LP: #1514832 + * PCI: Fix TI816X class code quirk + - LP: #1514832 + * x86/mm: Initialize pmd_idx in page_table_range_init_count() + - LP: #1514832 + * powerpc/rtas: Introduce rtas_get_sensor_fast() for IRQ handlers + - LP: #1514832 + * jbd2: avoid infinite loop when destroying aborted journal + - LP: #1514832 + * clk: versatile: off by one in clk_sp810_timerclken_of_get() + - LP: #1514832 + * usb: gadget: m66592-udc: forever loop in set_feature() + - LP: #1514832 + * windfarm: decrement client count when unregistering + - LP: #1514832 + * perf hists: Update the column width for the "srcline" sort key + - LP: #1514832 + * batman-adv: Make DAT capability changes atomic + - LP: #1514832 + * batman-adv: Make NC capability changes atomic + - LP: #1514832 + * powerpc/mm: Fix pte_pagesize_index() crash on 4K w/64K hash + - LP: #1514832 + * perf stat: Get correct cpu id for print_aggr + - LP: #1514832 + * IB/mlx4: Fix potential deadlock when sending mad to wire + - LP: #1514832 + * IB/mlx4: Forbid using sysfs to change RoCE pkeys + - LP: #1514832 + * IB/mlx4: Use correct SL on AH query under RoCE + - LP: #1514832 + * IB/uverbs: Fix race between ib_uverbs_open and remove_one + - LP: #1514832 + * mmc: core: fix race condition in mmc_wait_data_done + - LP: #1514832 + * ipv6: fix exthdrs offload registration in out_rt path + - LP: #1514832 + * task_work: remove fifo ordering guarantee + - LP: #1514832 + * scsi_dh: fix randconfig build error + - LP: #1514832 + * fs: if a coredump already exists, unlink and recreate with O_EXCL + - LP: #1514832 + * Linux 3.13.11-ckt28 + - LP: #1514832 + * sctp: donot reset the overall_error_count in SHUTDOWN_RECEIVE state + - LP: #1514853 + * KEYS: Fix race between key destruction and finding a keyring by name + - LP: #1514853 + * KEYS: Fix crash when attempt to garbage collect an uninstantiated + keyring + - LP: #1514853 + * KEYS: Don't permit request_key() to construct a new keyring + - LP: #1514853 + * net: Fix skb csum races when peeking + - LP: #1500810 + * [stable-only] net: add length argument to + skb_copy_and_csum_datagram_iovec + - LP: #1514853 + * spi: spi-pxa2xx: Check status register to determine if SSSR_TINT is + disabled + - LP: #1514853 + * spi: Fix documentation of spi_alloc_master() + - LP: #1514853 + * ARM: 8429/1: disable GCC SRA optimization + - LP: #1514853 + * powerpc/MSI: Fix race condition in tearing down MSI interrupts + - LP: #1514853 + * CIFS: fix type confusion in copy offload ioctl + - LP: #1514853 + * hwmon: (nct6775) Swap STEP_UP_TIME and STEP_DOWN_TIME registers for + most chips + - LP: #1514853 + * USB: option: add ZTE PIDs + - LP: #1514853 + * x86/apic: Serialize LVTT and TSC_DEADLINE writes + - LP: #1514853 + * Btrfs: fix read corruption of compressed and shared extents + - LP: #1514853 + * btrfs: skip waiting on ordered range for special files + - LP: #1514853 + * arm64: head.S: initialise mdcr_el2 in el2_setup + - LP: #1514853 + * kvm: fix zero length mmio searching + - LP: #1514853 + * iser-target: remove command with state ISTATE_REMOVE + - LP: #1514853 + * ARM: fix Thumb2 signal handling when ARMv6 is enabled + - LP: #1514853 + * powerpc/mm: Recompute hash value after a failed update + - LP: #1514853 + * x86/platform: Fix Geode LX timekeeping in the generic x86 build + - LP: #1514853 + * arm64: compat: fix vfp save/restore across signal handlers in + big-endian + - LP: #1514853 + * arm64: errata: add module build workaround for erratum #843419 + - LP: #1514853 + * arm64: KVM: Disable virtual timer even if the guest is not using it + - LP: #1514853 + * arm: KVM: Disable virtual timer even if the guest is not using it + - LP: #1514853 + * KVM: x86: trap AMD MSRs for the TSeg base and mask + - LP: #1514853 + * usb: Use the USB_SS_MULT() macro to get the burst multiplier. + - LP: #1514853 + * xhci: give command abortion one more chance before killing xhci + - LP: #1514853 + * usb: xhci: Clear XHCI_STATE_DYING on start + - LP: #1514853 + * xhci: change xhci 1.0 only restrictions to support xhci 1.1 + - LP: #1514853 + * disabling oplocks/leases via module parm enable_oplocks broken for SMB3 + - LP: #1514853 + * cifs: use server timestamp for ntlmv2 authentication + - LP: #1514853 + * x86/paravirt: Replace the paravirt nop with a bona fide empty function + - LP: #1514853 + * x86/nmi/64: Fix a paravirt stack-clobbering bug in the NMI code + - LP: #1514853 + * ASoC: pxa: pxa2xx-ac97: fix dma requestor lines + - LP: #1514853 + * drm/qxl: only report first monitor as connected if we have no state + - LP: #1514853 + * PCI: Fix devfn for VPD access through function 0 + - LP: #1514853 + * PCI: Use function 0 VPD for identical functions, regular VPD for others + - LP: #1514853 + * perf header: Fixup reading of HEADER_NRCPUS feature + - LP: #1514853 + * netfilter: nft_compat: skip family comparison in case of NFPROTO_UNSPEC + - LP: #1514853 + * ASoC: fix broken pxa SoC support + - LP: #1514853 + * ARM: dts: omap5-uevm.dts: fix i2c5 pinctrl offsets + - LP: #1514853 + * vxlan: set needed headroom correctly + - LP: #1514853 + * usbnet: Get EVENT_NO_RUNTIME_PM bit before it is cleared + - LP: #1514853 + * net/ipv6: Correct PIM6 mrt_lock handling + - LP: #1514853 + * netlink, mmap: transform mmap skb into full skb on taps + - LP: #1514853 + * openvswitch: Zero flows on allocation. + - LP: #1514853 + * fib_rules: fix fib rule dumps across multiple skbs + - LP: #1514853 + * Btrfs: update fix for read corruption of compressed and shared extents + - LP: #1514853 + * Linux 3.13.11-ckt29 + - LP: #1514853 + + -- Luis Henriques Tue, 10 Nov 2015 14:34:31 +0000 + +linux (3.13.0-68.111) trusty; 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 16:30:27 +0000 + +linux (3.13.0-67.110) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1509341 + + [ Upstream Kernel Changes ] + + * Revert "net: Fix skb csum races when peeking" + - LP: #1508510 + + -- Luis Henriques Fri, 23 Oct 2015 11:53:53 +0100 + +linux (3.13.0-67.109) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1507963 + + [ Tim Gardner ] + + * [Config] Add MMC modules sufficient for net booting + - LP: #1502772 + + [ Upstream Kernel Changes ] + + * USB: whiteheat: fix potential null-deref at probe + - LP: #1478826 + - CVE-2015-5257 + * dcache: Handle escaped paths in prepend_path + - LP: #1441108 + - CVE-2015-2925 + * vfs: Test for and handle paths that are unreachable from their mnt_root + - LP: #1441108 + - CVE-2015-2925 + + -- Luis Henriques Tue, 20 Oct 2015 10:42:53 +0100 + +linux (3.13.0-66.108) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1503713 + + [ Andy Whitcroft ] + + * Revert "SAUCE: aufs3: mmap: Fix races in madvise_remove() and + sys_msync()" + - LP: #1503655 + + [ Ben Hutchings ] + + * SAUCE: aufs3: mmap: Fix races in madvise_remove() and sys_msync() + - LP: #1503655 + - CVE-2015-7312 + + -- Luis Henriques Wed, 07 Oct 2015 14:29:57 +0100 + +linux (3.13.0-66.107) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1503021 + + [ Ben Hutchings ] + + * SAUCE: aufs3: mmap: Fix races in madvise_remove() and sys_msync() + - CVE-2015-7312 + + [ John Johansen ] + + * SAUCE: (no-up) apparmor: fix mount not handling disconnected paths + - LP: #1496430 + + [ Upstream Kernel Changes ] + + * mmc: sdhci-pci: set the clear transfer mode register quirk for O2Micro + - LP: #1472843 + * mmc: sdhci: Add a quirk for AMD SDHC transfer mode register need to be + cleared for cmd without data + - LP: #1472843 + * n_tty: Fix poll() when TIME_CHAR and MIN_CHAR == 0 + - LP: #1397976 + * net: make skb_gso_segment error handling more robust + - LP: #1497048 + * net: gso: use feature flag argument in all protocol gso handlers + - LP: #1497048 + * md/raid10: always set reshape_safe when initializing reshape_position. + - LP: #1500810 + * md: flush ->event_work before stopping array. + - LP: #1500810 + * ipv6: addrconf: validate new MTU before applying it + - LP: #1500810 + * virtio-net: drop NETIF_F_FRAGLIST + - LP: #1500810 + * RDS: verify the underlying transport exists before creating a + connection + - LP: #1500810 + * xen/gntdev: convert priv->lock to a mutex + - LP: #1500810 + * xen/gntdevt: Fix race condition in gntdev_release() + - LP: #1500810 + * PCI: Restore PCI_MSIX_FLAGS_BIRMASK definition + - LP: #1500810 + * nfsd: Drop BUG_ON and ignore SECLABEL on absent filesystem + - LP: #1500810 + * crypto: ixp4xx - Remove bogus BUG_ON on scattered dst buffer + - LP: #1500810 + * xen-blkfront: don't add indirect pages to list when !feature_persistent + - LP: #1500810 + * xen-blkback: replace work_pending with work_busy in + purge_persistent_gnt() + - LP: #1500810 + * USB: sierra: add 1199:68AB device ID + - LP: #1500810 + * regmap: regcache-rbtree: Clean new present bits on present bitmap + resize + - LP: #1500810 + * target/iscsi: Fix double free of a TUR followed by a solicited NOPOUT + - LP: #1500810 + * rbd: fix copyup completion race + - LP: #1500810 + * md/raid1: extend spinlock to protect raid1_end_read_request against + inconsistencies + - LP: #1500810 + * target: REPORT LUNS should return LUN 0 even for dynamic ACLs + - LP: #1500810 + * MIPS: Fix sched_getaffinity with MT FPAFF enabled + - LP: #1500810 + * xhci: fix off by one error in TRB DMA address boundary check + - LP: #1500810 + * perf: Fix fasync handling on inherited events + - LP: #1500810 + * mm, vmscan: Do not wait for page writeback for GFP_NOFS allocations + - LP: #1500810 + * MIPS: Make set_pte() SMP safe. + - LP: #1500810 + * ipc: modify message queue accounting to not take kernel data structures + into account + - LP: #1500810 + * ocfs2: fix BUG in ocfs2_downconvert_thread_do_work() + - LP: #1500810 + * fsnotify: fix oops in fsnotify_clear_marks_by_group_flags() + - LP: #1500810 + * KVM: x86: Use adjustment in guest cycles when handling + MSR_IA32_TSC_ADJUST + - LP: #1500810 + * localmodconfig: Use Kbuild files too + - LP: #1500810 + * dm thin metadata: delete btrees when releasing metadata snapshot + - LP: #1500810 + * dm btree: add ref counting ops for the leaves of top level btrees + - LP: #1500810 + * drm/radeon: add new OLAND pci id + - LP: #1500810 + * libiscsi: Fix host busy blocking during connection teardown + - LP: #1500810 + * libfc: Fix fc_exch_recv_req() error path + - LP: #1500810 + * libfc: Fix fc_fcp_cleanup_each_cmd() + - LP: #1500810 + * EDAC, ppc4xx: Access mci->csrows array elements properly + - LP: #1500810 + * crypto: caam - fix memory corruption in ahash_final_ctx + - LP: #1500810 + * mm/hwpoison: fix page refcount of unknown non LRU page + - LP: #1500810 + * ipc,sem: fix use after free on IPC_RMID after a task using same + semaphore set exits + - LP: #1500810 + * ipc/sem.c: change memory barrier in sem_lock() to smp_rmb() + - LP: #1500810 + * ipc/sem.c: update/correct memory barriers + - LP: #1500810 + * Add factory recertified Crucial M500s to blacklist + - LP: #1500810 + * arm64: KVM: Fix host crash when injecting a fault into a 32bit guest + - LP: #1500810 + * batman-adv: protect tt_local_entry from concurrent delete events + - LP: #1500810 + * ip6_gre: release cached dst on tunnel removal + - LP: #1500810 + * net: Fix RCU splat in af_key + - LP: #1500810 + * rds: fix an integer overflow test in rds_info_getsockopt() + - LP: #1500810 + * udp: fix dst races with multicast early demux + - LP: #1500810 + * sparc64: Fix userspace FPU register corruptions. + - LP: #1500810 + * ipv6: lock socket in ip6_datagram_connect() + - LP: #1500810 + * rtnetlink: verify IFLA_VF_INFO attributes before passing them to driver + - LP: #1500810 + * net/tipc: initialize security state for new connection socket + - LP: #1500810 + * net: pktgen: fix race between pktgen_thread_worker() and kthread_stop() + - LP: #1500810 + * net: call rcu_read_lock early in process_backlog + - LP: #1500810 + * net: Fix skb csum races when peeking + - LP: #1500810 + * netlink: don't hold mutex in rcu callback when releasing mmapd ring + - LP: #1500810 + * Linux 3.13.11-ckt27 + - LP: #1500810 + + -- Brad Figg Mon, 05 Oct 2015 12:59:00 -0700 + +linux (3.13.0-65.106) trusty; urgency=low + + [ Upstream Kernel Changes ] + + * Initialize msg/shm IPC objects before doing ipc_addid() + - LP: #1502032 + - CVE-2015-7613 + + -- Luis Henriques Fri, 02 Oct 2015 10:13:36 +0100 + +linux (3.13.0-65.105) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1498108 + + [ Upstream Kernel Changes ] + + * net: Fix skb_set_peeked use-after-free bug + - LP: #1497184 + + -- Brad Figg Mon, 21 Sep 2015 10:16:41 -0700 + +linux (3.13.0-64.104) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1493803 + + [ Chris J Arges ] + + * [Config] DEFAULT_IOSCHED="deadline" for ppc64el + - LP: #1469829 + + [ Upstream Kernel Changes ] + + * tcp: fix recv with flags MSG_WAITALL | MSG_PEEK + - LP: #1486146 + * libceph: abstract out ceph_osd_request enqueue logic + - LP: #1488035 + * libceph: resend lingering requests with a new tid + - LP: #1488035 + * n_tty: Refactor input_available_p() by call site + - LP: #1397976 + * tty: Fix pty master poll() after slave closes v2 + - LP: #1397976 + * md: use kzalloc() when bitmap is disabled + - LP: #1493305 + * ata: pmp: add quirk for Marvell 4140 SATA PMP + - LP: #1493305 + * libata: add ATA_HORKAGE_BROKEN_FPDMA_AA quirk for HP 250GB SATA disk + VB0250EAVER + - LP: #1493305 + * libata: add ATA_HORKAGE_NOTRIM + - LP: #1493305 + * libata: force disable trim for SuperSSpeed S238 + - LP: #1493305 + * libata: increase the timeout when setting transfer mode + - LP: #1493305 + * libata: Do not blacklist M510DC + - LP: #1493305 + * mac80211: clear subdir_stations when removing debugfs + - LP: #1493305 + * ALSA: hda - Add new GPU codec ID 0x10de007d to snd-hda + - LP: #1493305 + * drm: Stop resetting connector state to unknown + - LP: #1493305 + * usb: dwc3: Reset the transfer resource index on SET_INTERFACE + - LP: #1493305 + * usb: xhci: Bugfix for NULL pointer deference in xhci_endpoint_init() + function + - LP: #1493305 + * xhci: Calculate old endpoints correctly on device reset + - LP: #1493305 + * xhci: report U3 when link is in resume state + - LP: #1493305 + * xhci: prevent bus_suspend if SS port resuming in phase 1 + - LP: #1493305 + * xhci: do not report PLC when link is in internal resume state + - LP: #1493305 + * USB: OHCI: Fix race between ED unlink and URB submission + - LP: #1493305 + * usb-storage: ignore ZTE MF 823 card reader in mode 0x1225 + - LP: #1493305 + * blkcg: fix gendisk reference leak in blkg_conf_prep() + - LP: #1493305 + * tile: use free_bootmem_late() for initrd + - LP: #1493305 + * Input: usbtouchscreen - avoid unresponsive TSC-30 touch screen + - LP: #1493305 + * md/raid1: fix test for 'was read error from last working device'. + - LP: #1493305 + * mmc: omap_hsmmc: Fix DTO and DCRC handling + - LP: #1493305 + * isdn/gigaset: reset tty->receive_room when attaching ser_gigaset + - LP: #1493305 + * mmc: sdhci-pxav3: fix platform_data is not initialized + - LP: #1493305 + * mmc: block: Add missing mmc_blk_put() in power_ro_lock_show() + - LP: #1493305 + * mmc: sdhci-esdhc: Make 8BIT bus work + - LP: #1493305 + * bonding: correctly handle bonding type change on enslave failure + - LP: #1493305 + * net: Clone skb before setting peeked flag + - LP: #1493305 + * bridge: mdb: fix double add notification + - LP: #1493305 + * usb: gadget: mv_udc_core: fix phy_regs I/O memory leak + - LP: #1493305 + * inet: frags: fix defragmented packet's IP header for af_packet + - LP: #1493305 + * bonding: fix destruction of bond with devices different from + arphrd_ether + - LP: #1493305 + * ARM: OMAP2+: hwmod: Fix _wait_target_ready() for hwmods without sysc + - LP: #1493305 + * ASoC: pcm1681: Fix setting de-emphasis sampling rate selection + - LP: #1493305 + * iscsi-target: Fix use-after-free during TPG session shutdown + - LP: #1493305 + * iscsi-target: Fix iscsit_start_kthreads failure OOPs + - LP: #1493305 + * iscsi-target: Fix iser explicit logout TX kthread leak + - LP: #1493305 + * ALSA: hda - Apply fixup for another Toshiba Satellite S50D + - LP: #1493305 + * vhost: actually track log eventfd file + - LP: #1493305 + * xfs: remote attributes need to be considered data + - LP: #1493305 + * ALSA: usb-audio: add dB range mapping for some devices + - LP: #1493305 + * drm/radeon/combios: add some validation of lvds values + - LP: #1493305 + * x86/efi: Use all 64 bit of efi_memmap in setup_e820() + - LP: #1493305 + * ipr: Fix locking for unit attention handling + - LP: #1493305 + * ipr: Fix incorrect trace indexing + - LP: #1493305 + * ipr: Fix invalid array indexing for HRRQ + - LP: #1493305 + * ALSA: hda - Fix MacBook Pro 5,2 quirk + - LP: #1493305 + * x86/xen: Probe target addresses in set_aliased_prot() before the + hypercall + - LP: #1493305 + * netfilter: ctnetlink: put back references to master ct and expect + objects + - LP: #1493305 + * bridge: mdb: fix delmdb state in the notification + - LP: #1493305 + * ipvs: fix crash with sync protocol v0 and FTP + - LP: #1493305 + * act_pedit: check binding before calling tcf_hash_release() + - LP: #1493305 + * netfilter: nf_conntrack: Support expectations in different zones + - LP: #1493305 + * ipvs: do not use random local source address for tunnels + - LP: #1493305 + * ALSA: hda - fix cs4210_spdif_automute() + - LP: #1493305 + * niu: don't count tx error twice in case of headroom realloc fails + - LP: #1493305 + * net/mlx4_core: Fix wrong index in propagating port change event to VFs + - LP: #1493305 + * ipvs: fix crash if scheduler is changed + - LP: #1493305 + * Linux 3.13.11-ckt26 + - LP: #1493305 + + -- Luis Henriques Wed, 09 Sep 2015 12:03:43 +0100 + +linux (3.13.0-63.103) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1485102 + + [ Leann Ogasawara ] + + * [Config] d-i -- Add sfc to nic-modules udeb + - LP: #1481490 + + [ Upstream Kernel Changes ] + + * sg_start_req(): make sure that there's not too many elements in iovec + - LP: #1485100 + * Btrfs: use kmem_cache_free when freeing entry in inode cache + - LP: #1485100 + * Btrfs: fix race between caching kthread and returning inode to inode + cache + - LP: #1485100 + * Btrfs: fix fsync data loss after append write + - LP: #1485100 + * ext4: fix reservation release on invalidatepage for delalloc fs + - LP: #1485100 + * ext4: be more strict when migrating to non-extent based file + - LP: #1485100 + * ext4: correctly migrate a file with a hole at the beginning + - LP: #1485100 + * ext4: replace open coded nofail allocation in ext4_free_blocks() + - LP: #1485100 + * ACPI / PNP: Reserve ACPI resources at the fs_initcall_sync stage + - LP: #1485100 + * hpfs: kstrdup() out of memory handling + - LP: #1485100 + * 9p: don't leave a half-initialized inode sitting around + - LP: #1485100 + * freeing unlinked file indefinitely delayed + - LP: #1485100 + * iio: inv-mpu: Specify the expected format/precision for write channels + - LP: #1485100 + * iio: DAC: ad5624r_spi: fix bit shift of output data value + - LP: #1485100 + * iio: adc: at91_adc: allow to use full range of startup time + - LP: #1485100 + * ALSA: usb-audio: Add MIDI support for Steinberg MI2/MI4 + - LP: #1485100 + * iio: tmp006: Check channel info on write + - LP: #1485100 + * dm btree remove: fix bug in redistribute3 + - LP: #1485100 + * USB: option: add 2020:4000 ID + - LP: #1485100 + * USB: cp210x: add ID for Aruba Networks controllers + - LP: #1485100 + * dm btree: silence lockdep lock inversion in dm_btree_del() + - LP: #1485100 + * usb: musb: host: rely on port_mode to call musb_start() + - LP: #1485100 + * s390/sclp: clear upper register halves in _sclp_print_early + - LP: #1485100 + * drm: add a check for x/y in drm_mode_setcrtc + - LP: #1485100 + * ARM: dts: mx23: fix iio-hwmon support + - LP: #1485100 + * tracing: Have branch tracer use recursive field of task struct + - LP: #1485100 + * drivers: net: cpsw: fix crash while accessing second slave ethernet + interface + - LP: #1485100 + * USB: serial: Destroy serial_minors IDR on module exit + - LP: #1485100 + * Btrfs: fix memory leak in the extent_same ioctl + - LP: #1485100 + * ARC: make sure instruction_pointer() returns unsigned value + - LP: #1485100 + * s390/process: fix sfpc inline assembly + - LP: #1485100 + * st: null pointer dereference panic caused by use after kref_put by + st_open + - LP: #1485100 + * drm/radeon: add a dpm quirk for Sapphire Radeon R9 270X 2GB GDDR5 + - LP: #1485100 + * drm/radeon: Don't flush the GART TLB if rdev->gart.ptr == NULL + - LP: #1485100 + * genirq: Prevent resend to interrupts marked IRQ_NESTED_THREAD + - LP: #1485100 + * ip_tunnel: fix ipv4 pmtu check to honor inner ip header df + - LP: #1485100 + * bridge: mdb: start delete timer for temp static entries + - LP: #1485100 + * bridge: mdb: zero out the local br_ip variable before use + - LP: #1485100 + * net: do not process device backlog during unregistration + - LP: #1485100 + * net: graceful exit from netif_alloc_netdev_queues() + - LP: #1485100 + * net: dsa: Fix off-by-one in switch address parsing + - LP: #1485100 + * net: dsa: Test array index before use + - LP: #1485100 + * rds: rds_ib_device.refcount overflow + - LP: #1485100 + * ipv6: Make MLD packets to only be processed locally + - LP: #1485100 + * Linux 3.13.11-ckt25 + - LP: #1485100 + + -- Brad Figg Fri, 14 Aug 2015 13:02:47 -0700 + +linux (3.13.0-62.102) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1483657 + + [ Upstream Kernel Changes ] + + * Revert "Bluetooth: ath3k: Add support of 04ca:300d AR3012 device" + + -- Luis Henriques Tue, 11 Aug 2015 11:56:45 +0100 + +linux (3.13.0-62.101) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1479329 + * Merged back Ubuntu-3.13.0-61.100 + + -- Luis Henriques Wed, 29 Jul 2015 13:06:13 +0100 + +linux (3.13.0-60.99) trusty; urgency=low + + [ Kamal Mostafa ] + + * Release Tracking Bug + - LP: #1479082 + + [ Chris J Arges ] + + * [Config] CONFIG_UIO_PCI_GENERIC=m + - LP: #1473109 + + [ Tim Gardner ] + + * [Config] Add i40e[vf] to d-i + - LP: #1476393 + + [ Upstream Kernel Changes ] + + * Revert "crypto: talitos - convert to use be16_add_cpu()" + - LP: #1479058 + * add support for per-host cmd pools + - LP: #1445195 + * Drivers: hv: vmbus: Cleanup the packet send path + - LP: #1445195 + * virtio_scsi: use cmd_size + - LP: #1445195 + * storvsc: use cmd_size to allocate per-command data + - LP: #1445195 + * storvsc: fix a bug in storvsc limits + - LP: #1445195 + * Drivers: hv: vmbus: Support a vmbus API for efficiently sending page + arrays + - LP: #1445195 + * scsi: storvsc: Increase the ring buffer size + - LP: #1445195 + * scsi: storvsc: Size the queue depth based on the ringbuffer size + - LP: #1445195 + * scsi: storvsc: Always send on the selected outgoing channel + - LP: #1445195 + * scsi: storvsc: Retrieve information about the capability of the target + - LP: #1445195 + * scsi: storvsc: Don't assume that the scatterlist is not chained + - LP: #1445195 + * scsi: storvsc: Set the tablesize based on the information given by the + host + - LP: #1445195 + * gpio: gpio-kempld: Fix get_direction return value + - LP: #1474131 + * ARM: dts: imx27: only map 4 Kbyte for fec registers + - LP: #1474131 + * ARM: 8356/1: mm: handle non-pmd-aligned end of RAM + - LP: #1474131 + * x86/mce: Fix MCE severity messages + - LP: #1474131 + * hwmon: (ntc_thermistor) Ensure iio channel is of type IIO_VOLTAGE + - LP: #1474131 + * lguest: fix out-by-one error in address checking. + - LP: #1474131 + * fs, omfs: add NULL terminator in the end up the token list + - LP: #1474131 + * d_walk() might skip too much + - LP: #1474131 + * hwmon: (nct6775) Add missing sysfs attribute initialization + - LP: #1474131 + * target/pscsi: Don't leak scsi_host if hba is VIRTUAL_HOST + - LP: #1474131 + * fs/binfmt_elf.c:load_elf_binary(): return -EINVAL on zero-length + mappings + - LP: #1474131 + * iio: adis16400: Report pressure channel scale + - LP: #1474131 + * iio: adis16400: Use != channel indices for the two voltage channels + - LP: #1474131 + * iio: adis16400: Compute the scan mask from channel indices + - LP: #1474131 + * iio: adis16400: Remove unused variable + - LP: #1474131 + * iio: adis16400: Fix burst mode + - LP: #1474131 + * USB: serial: ftdi_sio: Add support for a Motion Tracker Development + Board + - LP: #1474131 + * iio: adc: twl6030-gpadc: Fix modalias + - LP: #1474131 + * serial: imx: Fix DMA handling for IDLE condition aborts + - LP: #1474131 + * ALSA: usb-audio: Add mic volume fix quirk for Logitech Quickcam Fusion + - LP: #1474131 + * n_tty: Fix auditing support for cannonical mode + - LP: #1474131 + * drm/i915/hsw: Fix workaround for server AUX channel clock divisor + - LP: #1474131 + * x86/asm/irq: Stop relying on magic JMP behavior for early_idt_handlers + - LP: #1474131 + * lib: Fix strnlen_user() to not touch memory after specified maximum + - LP: #1474131 + * Input: elantech - fix detection of touchpads where the revision matches + a known rate + - LP: #1474131 + * ALSA: hda/realtek - Add a fixup for another Acer Aspire 9420 + - LP: #1474131 + * ALSA: usb-audio: add MAYA44 USB+ mixer control names + - LP: #1474131 + * ALSA: usb-audio: fix missing input volume controls in MAYA44 USB(+) + - LP: #1474131 + * USB: cp210x: add ID for HubZ dual ZigBee and Z-Wave dongle + - LP: #1474131 + * MIPS: Fix enabling of DEBUG_STACKOVERFLOW + - LP: #1474131 + * virtio_pci: Clear stale cpumask when setting irq affinity + - LP: #1474131 + * pata_octeon_cf: fix broken build + - LP: #1474131 + * Input: synaptics - add min/max quirk for Lenovo S540 + - LP: #1474131 + * drm/i915: Fix DDC probe for passive adapters + - LP: #1474131 + * cfg80211: wext: clear sinfo struct before calling driver + - LP: #1474131 + * mm/memory_hotplug.c: set zone->wait_table to null after freeing it + - LP: #1474131 + * ring-buffer-benchmark: Fix the wrong sched_priority of producer + - LP: #1474131 + * drm/radeon: fix freeze for laptop with Turks/Thames GPU. + - LP: #1474131 + * block: fix ext_dev_lock lockdep report + - LP: #1474131 + * bridge: disable softirqs around br_fdb_update to avoid lockup + - LP: #1474131 + * bridge: fix multicast router rlist endless loop + - LP: #1474131 + * ALSA: hda - adding a DAC/pin preference map for a HP Envy TS machine + - LP: #1474131 + * drm/mgag200: Reject non-character-cell-aligned mode widths + - LP: #1474131 + * crypto: caam - fix uninitialized state->buf_dma field + - LP: #1474131 + * crypto: caam - improve initalization for context state saves + - LP: #1474131 + * crypto: caam - fix RNG buffer cache alignment + - LP: #1474131 + * Linux 3.13.11-ckt23 + - LP: #1474131 + * SUNRPC: TCP/UDP always close the old socket before reconnecting + - LP: #1403152 + * Fix kmalloc slab creation sequence + - LP: #1475204 + * iSER relies on refcounting to manage iser connections establishment and + teardown. + - LP: #1443648 + * ALSA: hda - White noise fix for XPS13 9333 + - LP: #1468582 + * ALSA: hda - Pop noises fix for XPS13 9333 + - LP: #1468582 + * ALSA: hda - Fix noisy outputs on Dell XPS13 (2015 model) + - LP: #1468582 + * sched/stop_machine: Fix deadlock between multiple stop_two_cpus() + - LP: #1461620 + * net: don't wait for order-3 page allocation + - LP: #1479058 + * sctp: fix ASCONF list handling + - LP: #1479058 + * bridge: fix br_stp_set_bridge_priority race conditions + - LP: #1479058 + * packet: read num_members once in packet_rcv_fanout() + - LP: #1479058 + * packet: avoid out of bounds read in round robin fanout + - LP: #1479058 + * tcp: Do not call tcp_fastopen_reset_cipher from interrupt context + - LP: #1479058 + * sctp: Fix race between OOTB responce and route removal + - LP: #1479058 + * sparc: Use GFP_ATOMIC in ldc_alloc_exp_dring() as it can be called in + softirq context + - LP: #1479058 + * [media] s5h1420: fix a buffer overflow when checking userspace params + - LP: #1479058 + * [media] cx24116: fix a buffer overflow when checking userspace params + - LP: #1479058 + * [media] af9013: Don't accept invalid bandwidth + - LP: #1479058 + * [media] cx24117: fix a buffer overflow when checking userspace params + - LP: #1479058 + * spi: fix race freeing dummy_tx/rx before it is unmapped + - LP: #1479058 + * mtd: fix: avoid race condition when accessing mtd->usecount + - LP: #1479058 + * leds / PM: fix hibernation on arm when gpio-led used with CPU led + trigger + - LP: #1479058 + * crypto: talitos - avoid memleak in talitos_alg_alloc() + - LP: #1479058 + * ASoC: wm8737: Fixup setting VMID Impedance control register + - LP: #1479058 + * ASoC: wm8903: Fix define for WM8903_VMID_RES_250K + - LP: #1479058 + * mnt: Refactor the logic for mounting sysfs and proc in a user namespace + - LP: #1479058 + * ASoC: wm8955: Fix setting wrong register for WM8955_K_8_0_MASK bits + - LP: #1479058 + * scsi_transport_srp: Introduce srp_wait_for_queuecommand() + - LP: #1479058 + * scsi_transport_srp: Fix a race condition + - LP: #1479058 + * KVM: mips: use id_to_memslot correctly + - LP: #1479058 + * drm/radeon: take the mode_config mutex when dealing with hpds (v2) + - LP: #1479058 + * rcu: Correctly handle non-empty Tiny RCU callback list with none ready + - LP: #1479058 + * ASoC: arizona: Fix noise generator gain TLV + - LP: #1479058 + * staging: rtl8712: prevent buffer overrun in recvbuf2recvframe + - LP: #1479058 + * usb: core: Fix USB 3.0 devices lost in NOTATTACHED state after a hub + port reset + - LP: #1479058 + * staging: vt6655: device_rx_srv check sk_buff is NULL + - LP: #1479058 + * fixing infinite OPEN loop in 4.0 stateid recovery + - LP: #1479058 + * powerpc/perf: Fix book3s kernel to userspace backtraces + - LP: #1479058 + * SUNRPC: Fix a memory leak in the backchannel code + - LP: #1479058 + * ipr: Increase default adapter init stage change timeout + - LP: #1479058 + * ieee802154: Fix sockaddr_ieee802154 implicit padding information leak. + - LP: #1479058 + * mnt: Modify fs_fully_visible to deal with locked ro nodev and atime + - LP: #1479058 + * drm/qxl: Do not cause spice-server to clean our objects + - LP: #1479058 + * drm/qxl: Do not leak memory if qxl_release_list_add fails + - LP: #1479058 + * selinux: fix setting of security labels on NFS + - LP: #1479058 + * Bluetooth: ath3k: Add support for a new AR3012 device + - LP: #1479058 + * ath3k: Add support of 0489:e076 AR3012 device + - LP: #1462614, #1479058 + * ath3k: add support of 13d3:3474 AR3012 device + - LP: #1427680, #1479058 + * Bluetooth: btusb: Fix memory leak in Intel setup routine + - LP: #1479058 + * ath9k: fix DMA stop sequence for AR9003+ + - LP: #1479058 + * cdc-acm: Add support of ATOL FPrint fiscal printers + - LP: #1479058 + * regulator: core: fix constraints output buffer + - LP: #1479058 + * x86/PCI: Use host bridge _CRS info on Foxconn K8M890-8237A + - LP: #1479058 + * pinctrl: mvebu: armada-370: fix spi0 pin description + - LP: #1479058 + * pinctrl: mvebu: armada-xp: remove non-existing NAND pins + - LP: #1479058 + * pinctrl: mvebu: armada-xp: remove non-existing VDD cpu_pd functions + - LP: #1479058 + * pinctrl: mvebu: armada-xp: fix functions of MPP48 + - LP: #1479058 + * i2c: at91: fix a race condition when using the DMA controller + - LP: #1479058 + * dmaengine: mv_xor: bug fix for racing condition in descriptors cleanup + - LP: #1479058 + * ASoC: wm8960: the enum of "DAC Polarity" should be wm8960_enum[1] + - LP: #1479058 + * arm64: Do not attempt to use init_mm in reset_context() + - LP: #1479058 + * ext4: fix race between truncate and __ext4_journalled_writepage() + - LP: #1479058 + * Disable write buffering on Toshiba ToPIC95 + - LP: #1479058 + * jbd2: use GFP_NOFS in jbd2_cleanup_journal_tail() + - LP: #1479058 + * regmap: Fix regmap_bulk_read in BE mode + - LP: #1479058 + * jbd2: fix ocfs2 corrupt when updating journal superblock fails + - LP: #1479058 + * ideapad: fix software rfkill setting + - LP: #1479058 + * regmap: Fix possible shift overflow in regmap_field_init() + - LP: #1479058 + * ima: fix ima_show_template_data_ascii() + - LP: #1479058 + * nfs: increase size of EXCHANGE_ID name string buffer + - LP: #1479058 + * vTPM: set virtual device before passing to ibmvtpm_reset_crq + - LP: #1479058 + * arm: KVM: force execution of HCPTR access on VM exit + - LP: #1479058 + * i2c: mux: Use __i2c_transfer() instead of calling parent's + master_xfer() + - LP: #1479058 + * i2c: mux: pca954x: Use __i2c_transfer because of quirks + - LP: #1479058 + * arm64: mm: Fix freeing of the wrong memmap entries with + !SPARSEMEM_VMEMMAP + - LP: #1479058 + * dm space map metadata: fix occasional leak of a metadata block on + resize + - LP: #1479058 + * dm stats: fix divide by zero if 'number_of_areas' arg is zero + - LP: #1479058 + * ACPI / PNP: Avoid conflicting resource reservations + - LP: #1479058 + * Bluetooth: ath3k: Add support for another AR3012 card + - LP: #1479058 + * Bluetooth: ath3k: add support of 04ca:300f AR3012 device + - LP: #1449730, #1479058 + * Bluetooth: ath3k: Add support of 04ca:300d AR3012 device + - LP: #1394368, #1479058 + * libata: Do not blacklist Micron M500DC + - LP: #1479058 + * arm64: vdso: work-around broken ELF toolchains in Makefile + - LP: #1479058 + * iommu/amd: Handle large pages correctly in free_pagetable + - LP: #1479058 + * ext4: call sync_blockdev() before invalidate_bdev() in put_super() + - LP: #1479058 + * MIPS: Fix KVM guest fixmap address + - LP: #1479058 + * xfs: fix remote symlinks on V5/CRC filesystems + - LP: #1479058 + * ext4: don't retry file block mapping on bigalloc fs with non-extent + file + - LP: #1479058 + * NET: ROSE: Don't dereference NULL neighbour pointer. + - LP: #1479058 + * netfilter: nf_qeueue: Drop queue entries on nf_unregister_hook + - LP: #1479058 + * fs: Fix S_NOSEC handling + - LP: #1479058 + * ACPI / resources: free memory on error in add_region_before() + - LP: #1479058 + * PM / sleep: Increase default DPM watchdog timeout to 60 + - LP: #1479058 + * ARC: add compiler barrier to LLSC based cmpxchg + - LP: #1479058 + * dell-laptop: Fix allocating & freeing SMI buffer page + - LP: #1479058 + * tracing/filter: Do not allow infix to exceed end of string + - LP: #1479058 + * clocksource: exynos_mct: Avoid blocking calls in the cpu hotplug + notifier + - LP: #1479058 + * ALSA: hda - Add headset support to Acer Aspire V5 + - LP: #1479058 + * ALSA: hda - Fix the dock headphone output on Fujitsu Lifebook E780 + - LP: #1479058 + * agp/intel: Fix typo in needs_ilk_vtd_wa() + - LP: #1479058 + * drm/radeon: compute ring fix hibernation (CI GPU family) v2. + - LP: #1479058 + * drm/radeon: SDMA fix hibernation (CI GPU family). + - LP: #1479058 + * net: mvneta: introduce compatible string "marvell, armada-xp-neta" + - LP: #1479058 + * net: mvneta: disable IP checksum with jumbo frames for Armada 370 + - LP: #1479058 + * crush: fix a bug in tree bucket decode + - LP: #1479058 + * rbd: use GFP_NOIO in rbd_obj_request_create() + - LP: #1479058 + * arm64: Don't report clear pmds and puds as huge + - LP: #1479058 + * fuse: initialize fc->release before calling it + - LP: #1479058 + * vfs: Ignore unlocked mounts in fs_fully_visible + - LP: #1479058 + * vfs: Remove incorrect debugging WARN in prepend_path + - LP: #1479058 + * hwmon: (mcp3021) Fix broken output scaling + - LP: #1479058 + * ACPICA: Tables: Fix an issue that FACS initialization is performed + twice + - LP: #1479058 + * KVM: x86: make vapics_in_nmi_mode atomic + - LP: #1479058 + * KVM: x86: properly restore LVT0 + - LP: #1479058 + * KVM: s390: virtio-ccw: don't overwrite config space values + - LP: #1479058 + * 9p: forgetting to cancel request on interrupted zero-copy RPC + - LP: #1479058 + * ipip: fix one sparse error + - LP: #1479058 + * __bitmap_parselist: fix bug in empty string handling + - LP: #1479058 + * powerpc/pseries: Fix possible leaked device node reference + - LP: #1479058 + * USB: devio: fix a condition in async_completed() + - LP: #1479058 + * bridge: multicast: restore router configuration on port link down/up + - LP: #1479058 + * cfg80211: ignore netif running state when changing iftype + - LP: #1479058 + * mm: fix potential infinite loop in dissolve_free_huge_pages() + - LP: #1479058 + * mm/hugetlb: introduce minimum hugepage order + - LP: #1479058 + * watchdog: omap: assert the counter being stopped before reprogramming + - LP: #1479058 + * ASoC: imx-wm8962: Add a missing error check + - LP: #1479058 + * neigh: do not modify unlinked entries + - LP: #1479058 + * mmc: card: Fixup request missing in mmc_blk_issue_rw_rq + - LP: #1479058 + * tty: remove platform_sysrq_reset_seq + - LP: #1479058 + * mtd: dc21285: use raw spinlock functions for nw_gpio_lock + - LP: #1479058 + * rndis_wlan: harmless issue calling set_bit() + - LP: #1479058 + * NFS: Fix size of NFSACL SETACL operations + - LP: #1479058 + * security_syslog() should be called once only + - LP: #1479058 + * pktgen: adjust spacing in proc file interface output + - LP: #1479058 + * of: return NUMA_NO_NODE from fallback of_node_to_nid() + - LP: #1479058 + * HID: i2c-hid: fix harmless test_bit() issue + - LP: #1479058 + * mac80211: prevent possible crypto tx tailroom corruption + - LP: #1479058 + * Linux 3.13.11-ckt24 + - LP: #1479058 + + -- Kamal Mostafa Tue, 28 Jul 2015 12:19:56 -0700 + +linux (3.13.0-61.100) trusty; urgency=low + + [ Luis Henriques] + + * Re-work previous CVE backports to fix regression + - LP: #1479093 + + [ Upstream Kernel Changes ] + + * Revert "x86/nmi/64: Use DF to avoid userspace RSP confusing nested NMI + detection" + * Revert "x86/nmi/64: Reorder nested NMI checks" + * Revert "x86/nmi/64: Improve nested NMI comments" + * Revert "x86/nmi/64: Switch stacks on userspace NMI entry" + * Revert "x86/nmi/64: Remove asm code that saves cr2" + * Revert "x86/nmi: Enable nested do_nmi handling for 64-bit kernels" + * Revert "x86/asm/entry/64: Remove pointless jump to irq_return" + * Revert "x86/asm/entry/64: Remove a redundant jump" + * Revert "x86/asm/entry/64: Fold the 'test_in_nmi' macro into its only + user" + * Revert "x86/asm/entry/64: Always allocate a complete "struct pt_regs" + on the kernel stack" + * Revert "x86/asm/64: Open-code register save/restore in + trace_hardirqs*() thunks" + * Revert "x86: entry_64.S: fold SAVE_ARGS_IRQ macro into its sole user" + * Revert "x86: ia32entry.S: fix wrong symbolic constant usage: + R11->ARGOFFSET" + * Revert "x86: entry_64.S: delete unused code" + * Revert "x86, entry: Switch stacks on a paranoid entry from userspace" + * Revert "x86: Speed up ___preempt_schedule*() by using THUNK helpers" + * Revert "x86_64, entry: Treat regs->ax the same in fastpath and slowpath + syscalls" + * Revert "x86, entry: Only call user_exit if TIF_NOHZ" + * Revert "x86/debug: Drop several unnecessary CFI annotations" + * Revert "x86_64, entry: Add missing 'DEFAULT_FRAME 0' entry annotations" + * x86/asm/entry/64: Fold the 'test_in_nmi' macro into its only user + * x86/asm/entry/64: Remove a redundant jump + * 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 + - CVE-2015-3290, CVE-2015-5157 + * x86/nmi/64: Improve nested NMI comments + * x86/nmi/64: Reorder nested NMI checks + * x86/nmi/64: Use DF to avoid userspace RSP confusing nested NMI + detection + - CVE-2015-3291 + + -- Luis Henriques Wed, 29 Jul 2015 10:58:25 +0100 + +linux (3.13.0-59.98) trusty; urgency=low + + [ Colin Ian King ] + + * SAUCE: KEYS: ensure we free the assoc array edit if edit is valid + - CVE-2015-1333 + + [ Upstream Kernel Changes ] + + * x86_64, entry: Add missing 'DEFAULT_FRAME 0' entry annotations + * x86/debug: Drop several unnecessary CFI annotations + * x86, entry: Only call user_exit if TIF_NOHZ + * x86_64, entry: Treat regs->ax the same in fastpath and slowpath + syscalls + * x86: Speed up ___preempt_schedule*() by using THUNK helpers + * x86, entry: Switch stacks on a paranoid entry from userspace + * x86: entry_64.S: delete unused code + * x86: ia32entry.S: fix wrong symbolic constant usage: R11->ARGOFFSET + * x86: entry_64.S: fold SAVE_ARGS_IRQ macro into its sole user + * x86/asm/64: Open-code register save/restore in trace_hardirqs*() thunks + * x86/asm/entry/64: Always allocate a complete "struct pt_regs" on the + kernel stack + * x86/asm/entry/64: Fold the 'test_in_nmi' macro into its only user + * x86/asm/entry/64: Remove a redundant jump + * x86/asm/entry/64: Remove pointless jump to irq_return + * 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 + - CVE-2015-3290, CVE-2015-5157 + * x86/nmi/64: Improve nested NMI comments + * x86/nmi/64: Reorder nested NMI checks + * x86/nmi/64: Use DF to avoid userspace RSP confusing nested NMI + detection + - CVE-2015-3291 + + -- Luis Henriques Fri, 24 Jul 2015 17:24:42 +0100 + +linux (3.13.0-58.97) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1472453 + + [ Upstream Kernel Changes ] + + * vm: Fix incomplete backport of VM_FAULT_SIGSEGV handling support + - LP: #1471892 + + -- Brad Figg Tue, 07 Jul 2015 18:48:51 -0700 + +linux (3.13.0-58.96) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1471991 + + [ Iyappan Subramanian ] + + * SAUCE: (no-up): drivers: net: xgene: fix: Out of order descriptor bytes + read + - LP: #1425576 + + [ Upstream Kernel Changes ] + + * NVMe: Add shutdown timeout as module parameter. + - LP: #1465136 + * Drivers: hv: vmbus: Add support for VMBus panic notifier handler + - LP: #1463584 + * Drivers: hv: vmbus: Correcting truncation error for constant + HV_CRASH_CTL_CRASH_NOTIFY + - LP: #1463584 + * netfilter: nf_conntrack: don't release a conntrack with non-zero refcnt + - LP: #1466135 + * lpfc: Add iotag memory barrier + - LP: #1468416 + * mm/slab_common: support the slub_debug boot option on specific object + size + - LP: #1456952 + * pipe: iovec: Fix memory corruption when retrying atomic copy as + non-atomic + - CVE-2015-1805 + * kvm: x86: fix kvm_apic_has_events to check for NULL pointer + * staging, rtl8192e, LLVMLinux: Change extern inline to static inline + - LP: #1471233 + * kernel: use the gnu89 standard explicitly + - LP: #1471233 + * staging, rtl8192e, LLVMLinux: Remove unused inline prototype + - LP: #1471233 + * staging: rtl8712, rtl8712: avoid lots of build warnings + - LP: #1471233 + * qla2xxx: remove redundant declaration in 'qla_gbl.h' + - LP: #1471233 + * staging: wlags49_h2: fix extern inline functions + - LP: #1471233 + * ARM: 8307/1: psci: move psci firmware calls out of line + - LP: #1471233 + * kconfig: Fix warning "‘jump’ may be used uninitialized" + - LP: #1471233 + * scripts/sortextable: suppress warning: `relocs_size' may be used + uninitialized + - LP: #1471233 + * ASoC: dapm: Enable autodisable on SOC_DAPM_SINGLE_TLV_AUTODISABLE + - LP: #1471233 + * ALSA: hda - Fix mute-LED fixed mode + - LP: #1471233 + * ALSA: emu10k1: Fix card shortname string buffer overflow + - LP: #1471233 + * ALSA: emux: Fix mutex deadlock at unloading + - LP: #1471233 + * drm/radeon: add SI DPM quirk for Sapphire R9 270 Dual-X 2G GDDR5 + - LP: #1471233 + * SCSI: add 1024 max sectors black list flag + - LP: #1471233 + * 3w-sas: fix command completion race + - LP: #1471233 + * 3w-xxxx: fix command completion race + - LP: #1471233 + * 3w-9xxx: fix command completion race + - LP: #1471233 + * serial: xilinx: Use platform_get_irq to get irq description structure + - LP: #1471233 + * serial: of-serial: Remove device_type = "serial" registration + - LP: #1471233 + * tty/serial: at91: maxburst was missing for dma transfers + - LP: #1471233 + * ALSA: emux: Fix mutex deadlock in OSS emulation + - LP: #1471233 + * ALSA: emu10k1: Emu10k2 32 bit DMA mode + - LP: #1471233 + * rbd: end I/O the entire obj_request on error + - LP: #1471233 + * powerpc/pseries: Correct cpu affinity for dlpar added cpus + - LP: #1471233 + * bridge/mdb: remove wrong use of NLM_F_MULTI + - LP: #1471233 + * efivarfs: Ensure VariableName is NUL-terminated + - LP: #1471233 + * x86/efi: Store upper bits of command line buffer address in + ext_cmd_line_ptr + - LP: #1471233 + * writeback: use |1 instead of +1 to protect against div by zero + - LP: #1471233 + * ARM: mvebu: armada-xp-openblocks-ax3-4: Disable internal RTC + - LP: #1471233 + * ARM: dts: imx23-olinuxino: Fix polarity of LED GPIO + - LP: #1471233 + * ARM: dts: imx23-olinuxino: Fix dr_mode of usb0 + - LP: #1471233 + * ARM: dts: imx25: Add #pwm-cells to pwm4 + - LP: #1471233 + * ARM: dts: imx28: Fix AUART4 TX-DMA interrupt name + - LP: #1471233 + * gpio: sysfs: fix memory leaks and device hotplug + - LP: #1471233 + * drm/radeon: disable semaphores for UVD V1 (v2) + - LP: #1471233 + * RDMA/CMA: Canonize IPv4 on IPV6 sockets properly + - LP: #1471233 + * drm/i915: Assume dual channel LVDS if pixel clock necessitates it + - LP: #1471233 + * drm/i915: Add missing MacBook Pro models with dual channel LVDS + - LP: #1471233 + * xen/console: Update console event channel on resume + - LP: #1471233 + * xen/events: Set irq_info->evtchn before binding the channel to CPU in + __startup_pirq() + - LP: #1471233 + * mm/memory-failure: call shake_page() when error hits thp tail page + - LP: #1471233 + * nilfs2: fix sanity check of btree level in nilfs_btree_root_broken() + - LP: #1471233 + * ocfs2: dlm: fix race between purge and get lock resource + - LP: #1471233 + * drm/radeon: make UVD handle checking more strict + - LP: #1471233 + * drm/radeon: more strictly validate the UVD codec + - LP: #1471233 + * path_openat(): fix double fput() + - LP: #1471233 + * mnt: Fix fs_fully_visible to verify the root directory is visible + - LP: #1471233 + * pinctrl: Don't just pretend to protect pinctrl_maps, do it for real + - LP: #1471233 + * mmc: sh_mmcif: Fix timeout value for command request + - LP: #1471233 + * xen-pciback: Add name prefix to global 'permissive' variable + - LP: #1471233 + * mmc: core: add missing pm event in mmc_pm_notify to fix hib restore + - LP: #1471233 + * thermal: step_wise: Revert optimization + - LP: #1471233 + * libata: Add helper to determine when PHY events should be ignored + - LP: #1471233 + * libata: Ignore spurious PHY event on LPM policy change + - LP: #1471233 + * usb: gadget: configfs: Fix interfaces array NULL-termination + - LP: #1471233 + * rtlwifi: rtl8192cu: Fix kernel deadlock + - LP: #1471233 + * USB: cp210x: add ID for KCF Technologies PRN device + - LP: #1471233 + * USB: pl2303: Remove support for Samsung I330 + - LP: #1471233 + * USB: visor: Match I330 phone more precisely + - LP: #1471233 + * nfsd: fix the check for confirmed openowner in + nfs4_preprocess_stateid_op + - LP: #1471233 + * svcrpc: fix potential GSSX_ACCEPT_SEC_CONTEXT decoding failures + - LP: #1471233 + * ACPI / init: Fix the ordering of acpi_reserve_resources() + - LP: #1471233 + * md/raid5: don't record new size if resize_stripes fails. + - LP: #1471233 + * xhci: fix isoc endpoint dequeue from advancing too far on transaction + error + - LP: #1471233 + * xhci: Solve full event ring by increasing TRBS_PER_SEGMENT to 256 + - LP: #1471233 + * xhci: gracefully handle xhci_irq dead device + - LP: #1471233 + * usb-storage: Add NO_WP_DETECT quirk for Lacie 059f:0651 devices + - LP: #1471233 + * ARM: net fix emit_udiv() for BPF_ALU | BPF_DIV | BPF_K intruction. + - LP: #1471233 + * drm/radeon: fix VM_CONTEXT*_PAGE_TABLE_END_ADDR handling + - LP: #1471233 + * drm/radeon: add new bonaire pci id + - LP: #1471233 + * firmware: dmi_scan: Fix ordering of product_uuid + - LP: #1471233 + * ext4: fix NULL pointer dereference when journal restart fails + - LP: #1471233 + * ext4: check for zero length extent explicitly + - LP: #1471233 + * jbd2: fix r_count overflows leading to buffer overflow in journal + recovery + - LP: #1471233 + * mm, numa: really disable NUMA balancing by default on single node + machines + - LP: #1471233 + * spi: bitbang: Make setup_transfer() callback optional + - LP: #1471233 + * igb: Fix NULL assignment to incorrect variable in igb_reset_q_vector + - LP: #1471233 + * ARM: net: delegate filter to kernel interpreter when imm_offset() + return value can't fit into 12bits. + - LP: #1471233 + * ALSA: hda - Add headphone quirk for Lifebook E752 + - LP: #1471233 + * ASoC: mc13783: Fix wrong mask value used in mc13xxx_reg_rmw() calls + - LP: #1471233 + * ASoC: uda1380: Avoid accessing i2c bus when codec is disabled + - LP: #1471233 + * mac80211: move WEP tailroom size check + - LP: #1471233 + * KVM: MMU: fix smap permission check + - LP: #1471233 + * KVM: MMU: fix CR4.SMEP=1, CR0.WP=0 with shadow pages + - LP: #1471233 + * KVM: MMU: fix SMAP virtualization + - LP: #1471233 + * storvsc: Set the SRB flags correctly when no data transfer is needed + - LP: #1471233 + * ASoC: wm8960: fix "RINPUT3" audio route error + - LP: #1471233 + * ASoC: wm8994: correct BCLK DIV 348 to 384 + - LP: #1471233 + * Input: elantech - fix semi-mt protocol for v3 HW + - LP: #1471233 + * powerpc: Align TOC to 256 bytes + - LP: #1471233 + * ALSA: hda - Add Conexant codecs CX20721, CX20722, CX20723 and CX20724 + - LP: #1454656, #1471233 + * mmc: atmel-mci: fix bad variable type for clkdiv + - LP: #1471233 + * sd: Disable support for 256 byte/sector disks + - LP: #1471233 + * libceph: request a new osdmap if lingering request maps to no osd + - LP: #1471233 + * crypto: s390/ghash - Fix incorrect ghash icv buffer handling. + - LP: #1471233 + * ipvs: fix memory leak in ip_vs_ctl.c + - LP: #1471233 + * net: phy: Allow EEE for all RGMII variants + - LP: #1471233 + * bridge: fix parsing of MLDv2 reports + - LP: #1471233 + * ipv4: Avoid crashing in ip_error + - LP: #1471233 + * ipv6: do not delete previously existing ECMP routes if add fails + - LP: #1471233 + * ipv6: fix ECMP route replacement + - LP: #1471233 + * net: core: Correct an over-stringent device loop detection. + - LP: #1471233 + * x86: bpf_jit: fix compilation of large bpf programs + - LP: #1471233 + * net: dp83640: fix broken calibration routine. + - LP: #1471233 + * unix/caif: sk_socket can disappear when state is unlocked + - LP: #1471233 + * net_sched: invoke ->attach() after setting dev->qdisc + - LP: #1471233 + * udp: fix behavior of wrong checksums + - LP: #1471233 + * xen: netback: read hotplug script once at start of day. + - LP: #1471233 + * ipv4/udp: Verify multicast group is ours in upd_v4_early_demux() + - LP: #1471233 + * drm/radeon: partially revert "fix VM_CONTEXT*_PAGE_TABLE_END_ADDR + handling" + - LP: #1471233 + * Linux 3.13.11-ckt22 + - LP: #1471233 + + -- Brad Figg Mon, 06 Jul 2015 14:41:28 -0700 + +linux (3.13.0-57.95) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1466592 + + [ Brad Figg ] + + * Merged back Ubuntu-3.13.0-55.94 regression fix for security release + + -- Luis Henriques Thu, 18 Jun 2015 18:19:14 +0100 + +linux (3.13.0-56.93) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1465798 + + [ Upstream Kernel Changes ] + + * net: eth: xgene: devm_ioremap() returns NULL on error + - LP: #1458042 + * drivers: net: xgene: fix new firmware backward compatibility with older + driver + - LP: #1458042 + * drivers: net: xgene: constify of_device_id array + - LP: #1458042 + * drivers: net: xgene: Add second SGMII based 1G interface + - LP: #1458042 + * net: phy: re-design phy_modes to be self-contained + - LP: #1458042 + * dtb: change binding name to match with newer firmware DT + - LP: #1458042 + * dtb: xgene: Add second SGMII based 1G interface node + - LP: #1458042 + * Btrfs: make xattr replace operations atomic + - LP: #1438501 + - CVE-2014-9710 + * cdc-acm: prevent infinite loop when parsing CDC headers. + - LP: #1460657 + * (upstream) libata: Blacklist queued TRIM on all Samsung 800-series + - LP: #1338706, #1449005 + * ahci: avoton port-disable reset-quirk + - LP: #1458617 + * xfs: avoid false quotacheck after unclean shutdown + - LP: #1461730 + * (upstream)[SCSI] Add timeout to avoid infinite command retry + - LP: #1449372 + * (upstream)scsi_lib: remove the description string in + scsi_io_completion() + - LP: #1449372 + * udf: Remove repeated loads blocksize + - LP: #1462173 + - CVE-2015-4167 + * udf: Check length of extended attributes and allocation descriptors + - LP: #1462173 + - CVE-2015-4167 + * vfs: read file_handle only once in handle_to_path + - LP: #1416503 + - CVE-2015-1420 + * ozwpan: Use unsigned ints to prevent heap overflow + - LP: #1463442 + - CVE-2015-4001 + * ozwpan: divide-by-zero leading to panic + - LP: #1463445 + - CVE-2015-4003 + * ozwpan: Use proper check to prevent heap overflow + - LP: #1463444 + - CVE-2015-4002 + * ozwpan: unchecked signed subtraction leads to DoS + - LP: #1463444 + - CVE-2015-4002 + * Input: elantech - add new icbody type + - LP: #1464490 + * Bluetooth: ath3k: Add support Atheros AR5B195 combo Mini PCIe card + - LP: #1465796 + * power_supply: twl4030_madc: Check return value of power_supply_register + - LP: #1465796 + * power_supply: lp8788-charger: Fix leaked power supply on probe fail + - LP: #1465796 + * ARM: dts: dove: Fix uart[23] reg property + - LP: #1465796 + * xtensa: xtfpga: fix hardware lockup caused by LCD driver + - LP: #1465796 + * Drivers: hv: vmbus: Fix a bug in the error path in vmbus_open() + - LP: #1465796 + * xtensa: provide __NR_sync_file_range2 instead of __NR_sync_file_range + - LP: #1465796 + * KVM: s390: Zero out current VMDB of STSI before including level3 data. + - LP: #1465796 + * usb: musb: core: fix TX/RX endpoint order + - LP: #1465796 + * drm/radeon: fix doublescan modes (v2) + - LP: #1465796 + * usb: phy: Find the right match in devm_usb_phy_match + - LP: #1465796 + * tools lib traceevent kbuffer: Remove extra update to data pointer in + PADDING + - LP: #1465796 + * ring-buffer: Replace this_cpu_*() with __this_cpu_*() + - LP: #1465796 + * ASoC: wm8741: Fix rates constraints values + - LP: #1465796 + * cdc-wdm: fix endianness bug in debug statements + - LP: #1465796 + * staging: panel: fix lcd type + - LP: #1465796 + * UBI: account for bitflips in both the VID header and data + - LP: #1465796 + * UBI: fix out of bounds write + - LP: #1465796 + * UBI: initialize LEB number variable + - LP: #1465796 + * UBI: fix check for "too many bytes" + - LP: #1465796 + * ARM: S3C64XX: Use fixed IRQ bases to avoid conflicts on Cragganmore + - LP: #1465796 + * ASoC: davinci-evm: drop un-necessary remove function + - LP: #1465796 + * iscsi-target: Convert iscsi_thread_set usage to kthread.h + - LP: #1465796 + * Drivers: hv: vmbus: Don't wait after requesting offers + - LP: #1465796 + * Btrfs: fix log tree corruption when fs mounted with -o discard + - LP: #1465796 + * btrfs: don't accept bare namespace as a valid xattr + - LP: #1465796 + * ARM: 8320/1: fix integer overflow in ELF_ET_DYN_BASE + - LP: #1465796 + * rtlwifi: rtl8192cu: Add new USB ID + - LP: #1465796 + * MIPS: Hibernate: flush TLB entries earlier + - LP: #1465796 + * ASoC: cs4271: Increase delay time after reset + - LP: #1465796 + * stk1160: Make sure current buffer is released + - LP: #1465796 + * mnt: Improve the umount_tree flags + - LP: #1465796 + * ext4: make fsync to sync parent dir in no-journal for real this time + - LP: #1465796 + * Input: elantech - fix absolute mode setting on some ASUS laptops + - LP: #1465796 + * usb: define a generic USB_RESUME_TIMEOUT macro + - LP: #1465796 + * usb: host: xhci: use new USB_RESUME_TIMEOUT + - LP: #1465796 + * usb: host: ehci: use new USB_RESUME_TIMEOUT + - LP: #1465796 + * usb: host: uhci: use new USB_RESUME_TIMEOUT + - LP: #1465796 + * usb: musb: use new USB_RESUME_TIMEOUT + - LP: #1465796 + * usb: host: isp116x: use new USB_RESUME_TIMEOUT + - LP: #1465796 + * usb: host: fotg210: use new USB_RESUME_TIMEOUT + - LP: #1465796 + * usb: host: fusbh200: use new USB_RESUME_TIMEOUT + - LP: #1465796 + * usb: host: oxu210hp: use new USB_RESUME_TIMEOUT + - LP: #1465796 + * usb: host: r8a66597: use new USB_RESUME_TIMEOUT + - LP: #1465796 + * usb: host: sl811: use new USB_RESUME_TIMEOUT + - LP: #1465796 + * usb: dwc2: hcd: use new USB_RESUME_TIMEOUT + - LP: #1465796 + * usb: isp1760: hcd: use new USB_RESUME_TIMEOUT + - LP: #1465796 + * usb: core: hub: use new USB_RESUME_TIMEOUT + - LP: #1465796 + * iser-target: Fix possible deadlock in RDMA_CM connection error + - LP: #1465796 + * gpio: mvebu: Fix mask/unmask managment per irq chip type + - LP: #1465796 + * scsi: storvsc: Fix a bug in copy_from_bounce_buffer() + - LP: #1465796 + * ALSA: emu10k1: don't deadlock in proc-functions + - LP: #1465796 + * xtensa: ISS: fix locking in TAP network adapter + - LP: #1465796 + * s390/hibernate: fix save and restore of kernel text section + - LP: #1465796 + * Btrfs: fix inode eviction infinite loop after extent_same ioctl + - LP: #1465796 + * Btrfs: fix inode eviction infinite loop after cloning into it + - LP: #1465796 + * ACPICA: Utilities: split IO address types from data type models. + - LP: #1465796 + * drm/i915: Dont enable CS_PARSER_ERROR interrupts at all + - LP: #1465796 + * target: Fix COMPARE_AND_WRITE with SG_TO_MEM_NOALLOC handling + - LP: #1465796 + * mm/hugetlb: use pmd_page() in follow_huge_pmd() + - LP: #1465796 + * fs/binfmt_elf.c: fix bug in loading of PIE binaries + - LP: #1465796 + * IB/core: disallow registering 0-sized memory region + - LP: #1465796 + * IB/core: don't disallow registering region starting at 0x0 + - LP: #1465796 + * ptrace: fix race between ptrace_resume() and wait_task_stopped() + - LP: #1465796 + * mvsas: fix panic on expander attached SATA devices + - LP: #1465796 + * drm/i915: cope with large i2c transfers + - LP: #1465796 + * RCU pathwalk breakage when running into a symlink overmounting + something + - LP: #1465796 + * compal-laptop: Check return value of power_supply_register + - LP: #1465796 + * sched/idle/x86: Restore mwait_idle() to fix boot hangs, to improve + power savings and to improve performance + - LP: #1465796 + * nfs: don't call blocking operations while !TASK_RUNNING + - LP: #1465796 + * nfs: fix high load average due to callback thread sleeping + - LP: #1465796 + * e1000: add dummy allocator to fix race condition between mtu change and + netpoll + - LP: #1465796 + * wl18xx: show rx_frames_per_rates as an array as it really is + - LP: #1465796 + * lib: memzero_explicit: use barrier instead of OPTIMIZER_HIDE_VAR + - LP: #1465796 + * driver core: bus: Goto appropriate labels on failure in bus_add_device + - LP: #1465796 + * C6x: time: Ensure consistency in __init + - LP: #1465796 + * crypto: omap-aes - Fix support for unequal lengths + - LP: #1465796 + * jhash: Update jhash_[321]words functions to use correct initval + - LP: #1465796 + * KVM: use slowpath for cross page cached accesses + - LP: #1465796 + * powerpc: Fix missing L2 cache size in /sys/devices/system/cpu + - LP: #1465796 + * NFS: fix BUG() crash in notify_change() with patch to chown_common() + - LP: #1465796 + * i2c: core: Export bus recovery functions + - LP: #1465796 + * IB/mlx4: Fix WQE LSO segment calculation + - LP: #1465796 + * mlx5: wrong page mask if CONFIG_ARCH_DMA_ADDR_T_64BIT enabled for 32Bit + architectures + - LP: #1465796 + * skbuff: Do not scrub skb mark within the same name space + - LP: #1465796 + * firmware/ihex2fw.c: restore missing default in switch statement + - LP: #1465796 + * memstick: mspro_block: add missing curly braces + - LP: #1465796 + * tools/power turbostat: Use $(CURDIR) instead of $(PWD) and add support + for O= option in Makefile + - LP: #1465796 + * ext4: fix data corruption caused by unwritten and delayed extents + - LP: #1465796 + * powerpc: Add vr save/restore functions + - LP: #1465796 + * Linux 3.13.11-ckt21 + - LP: #1465796 + + -- Brad Figg Tue, 16 Jun 2015 10:52:43 -0700 + +linux (3.13.0-55.94) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1466237 + + [ Andy Whitcroft ] + + * SAUCE: ensure that upper/lower layers are valid before checking + permissions + - LP: #1465998 + + -- Brad Figg Wed, 17 Jun 2015 14:58:16 -0700 + +linux (3.13.0-55.92) trusty; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: overlayfs: when copying up and reading directories ensure + mounter had permissions V2 + - CVE-2015-1328 + + -- Luis Henriques Fri, 12 Jun 2015 09:40:20 +0100 + +linux (3.13.0-54.91) trusty; urgency=medium + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1458618 + + [ Upstream Kernel Changes ] + + * [3.13-stable only] Revert "gianfar: Carefully free skbs in functions + called by netpoll." + - LP: #1454746 + + -- Luis Henriques Tue, 26 May 2015 17:19:30 +0100 + +linux (3.13.0-54.90) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1458618 + + [ Andy Whitcroft ] + + * [Config] push off linux-lts-{utopic, vivid}-tools-common + - LP: #1405807 + + [ Brad Figg ] + + * hyper-v -- add hid and fb drivers to linux-virtual + - LP: #1444179 + + [ Upstream Kernel Changes ] + + * DT doc: net: cpsw mac-address is optional + - LP: #1452628 + * net: cpsw: Add missing return value + - LP: #1452628 + * net: cpsw: header, Add missing include + - LP: #1452628 + * net: cpsw: Add am33xx MACID readout + - LP: #1452628 + * am33xx: define syscon control module device node + - LP: #1452628 + * arm: dts: am33xx, Add syscon phandle to cpsw node + - LP: #1452628 + * net: cpsw: do not register cpts twice + - LP: #1452620 + * x86: kvm: Revert "remove sched notifier for cross-cpu migrations" + - LP: #1450584 + * x86: vdso: fix pvclock races with task migration + - LP: #1450584 + * n_tty: Fix read buffer overwrite when no newline + - LP: #1381005, #1454746 + * KVM: x86: Fix lost interrupt on irr_pending race + - LP: #1454746 + * writeback: add missing INITIAL_JIFFIES init in + global_update_bandwidth() + - LP: #1454746 + * nbd: fix possible memory leak + - LP: #1454746 + * mfd: kempld-core: Fix callback return value check + - LP: #1454746 + * KVM: nVMX: mask unrestricted_guest if disabled on L0 + - LP: #1454746 + * spi: trigger trace event for message-done before mesg->complete + - LP: #1454746 + * powerpc/pseries: Little endian fixes for post mobility device tree + update + - LP: #1454746 + * net: ethernet: pcnet32: Setup the SRAM and NOUFLO on Am79C97{3, 5} + - LP: #1454746 + * perf: Fix irq_work 'tail' recursion + - LP: #1454746 + * arm64: Use the reserved TTBR0 if context switching to the init_mm + - LP: #1454746 + * selinux: fix sel_write_enforce broken return value + - LP: #1454746 + * mm: fix anon_vma->degree underflow in anon_vma endless growing + prevention + - LP: #1454746 + * mm/memory hotplug: postpone the reset of obsolete pgdat + - LP: #1454746 + * hfsplus: fix B-tree corruption after insertion at position 0 + - LP: #1454746 + * ARC: SA_SIGINFO ucontext regs off-by-one + - LP: #1454746 + * writeback: fix possible underflow in write bandwidth calculation + - LP: #1454746 + * iio: fix drivers that check buffer->scan_mask + - LP: #1454746 + * iio: inv_mpu6050: Clear timestamps fifo while resetting hardware fifo + - LP: #1454746 + * iio: core: Fix double free. + - LP: #1454746 + * USB: ftdi_sio: Added custom PID for Synapse Wireless product + - LP: #1454746 + * iwlwifi: dvm: run INIT firmware again upon .start() + - LP: #1454746 + * USB: keyspan_pda: add new device id + - LP: #1454746 + * cifs: smb2_clone_range() - exit on unhandled error + - LP: #1454746 + * cifs: fix use-after-free bug in find_writable_file + - LP: #1454746 + * can: flexcan: Deferred on Regulator return EPROBE_DEFER + - LP: #1454746 + * usb: xhci: handle Config Error Change (CEC) in xhci driver + - LP: #1454746 + * usb: xhci: apply XHCI_AVOID_BEI quirk to all Intel xHCI controllers + - LP: #1454746 + * USB: ftdi_sio: Use jtag quirk for SNAP Connect E10 + - LP: #1454746 + * tty: serial: fsl_lpuart: clear receive flag on FIFO flush + - LP: #1454746 + * radeon: Do not directly dereference pointers to BIOS area. + - LP: #1454746 + * iio: imu: Use iio_trigger_get for indio_dev->trig assignment + - LP: #1454746 + * dmaengine: edma: fix memory leak when terminating running transfers + - LP: #1454746 + * dmaengine: omap-dma: Fix memory leak when terminating running transfer + - LP: #1454746 + * x86/reboot: Add ASRock Q1900DC-ITX mainboard reboot quirk + - LP: #1454746 + * mac80211: fix RX A-MPDU session reorder timer deletion + - LP: #1454746 + * tcp: prevent fetching dst twice in early demux code + - LP: #1454746 + * net: use for_each_netdev_safe() in rtnl_group_changelink() + - LP: #1454746 + * xen-netfront: transmit fully GSO-sized packets + - LP: #1454746 + * tcp: fix FRTO undo on cumulative ACK of SACKed range + - LP: #1454746 + * PCI: cpcihp: Add missing curly braces in cpci_configure_slot() + - LP: #1454746 + * sh_veu: v4l2_dev wasn't set + - LP: #1454746 + * media: s5p-mfc: fix mmap support for 64bit arch + - LP: #1454746 + * cpuidle: ACPI: do not overwrite name and description of C0 + - LP: #1454746 + * ioctx_alloc(): fix vma (and file) leak on failure + - LP: #1454746 + * ALSA: hda/realtek - Make more stable to get pin sense for ALC283 + - LP: #1454746 + * be2iscsi: Fix kernel panic when device initialization fails + - LP: #1454746 + * Defer processing of REQ_PREEMPT requests for blocked devices + - LP: #1454746 + * ALSA: hda - Fix headphone pin config for Lifebook T731 + - LP: #1454746 + * ocfs2: _really_ sync the right range + - LP: #1454746 + * ALSA: usb - Creative USB X-Fi Pro SB1095 volume knob support + - LP: #1454746 + * iscsi target: fix oops when adding reject pdu + - LP: #1454746 + * net/mlx4_en: Call register_netdevice in the proper location + - LP: #1454746 + * ipv6: protect skb->sk accesses from recursive dereference inside the + stack + - LP: #1454746 + * tcp: tcp_make_synack() should clear skb->tstamp + - LP: #1454746 + * 8139cp: Call dev_kfree_skby_any instead of kfree_skb. + - LP: #1454746 + * 8139too: Call dev_kfree_skby_any instead of dev_kfree_skb. + - LP: #1454746 + * r8169: Call dev_kfree_skby_any instead of dev_kfree_skb. + - LP: #1454746 + * bonding: Call dev_kfree_skby_any instead of kfree_skb. + - LP: #1454746 + * bnx2: Call dev_kfree_skby_any instead of dev_kfree_skb. + - LP: #1454746 + * tg3: Call dev_kfree_skby_any instead of dev_kfree_skb. + - LP: #1454746 + * ixgb: Call dev_kfree_skby_any instead of dev_kfree_skb. + - LP: #1454746 + * benet: Call dev_kfree_skby_any instead of kfree_skb. + - LP: #1454746 + * gianfar: Carefully free skbs in functions called by netpoll. + - LP: #1454746 + * ip_forward: Drop frames with attached skb->sk + - LP: #1454746 + * tcp: fix possible deadlock in tcp_send_fin() + - LP: #1454746 + * tcp: avoid looping in tcp_send_fin() + - LP: #1454746 + * net: do not deplete pfmemalloc reserve + - LP: #1454746 + * net: fix crash in build_skb() + - LP: #1454746 + * ipv4: Missing sk_nulls_node_init() in ping_unhash(). + - LP: #1454746 + * Linux 3.13.11-ckt20 + - LP: #1454746 + * of: Add support for ePAPR "stdout-path" property + - LP: #1438585 + * lib: add glibc style strchrnul() variant + - LP: #1438585 + * of: Create unlocked version of for_each_child_of_node() + - LP: #1438585 + * of: Make of_find_node_by_path() handle /aliases + - LP: #1438585 + * of: Create of_console_check() for selecting a console specified in + /chosen + - LP: #1438585 + * of: Enable console on serial ports specified by /chosen/stdout-path + - LP: #1438585 + * of: correct of_console_check()'s return value + - LP: #1438585 + * of: Add bindings for chosen node, stdout-path + - LP: #1438585 + * of: add optional options parameter to of_find_node_by_path() + - LP: #1438585 + * of: support passing console options with stdout-path + - LP: #1438585 + * (upstream) net/mlx4_core: Adjust command timeouts to conform to the + firmware spec + - LP: #1455121 + * arm64: kernel: add MPIDR_EL1 accessors macros + - LP: #1455372 + * of: reimplement the matching method for __of_match_node() + - LP: #1455372 + * arm64: remove redundant "psci:" prefixes + - LP: #1455372 + * arm64: remove return value form psci_init() + - LP: #1455372 + * arm: KVM: Don't return PSCI_INVAL if waitqueue is inactive + - LP: #1455372 + * KVM: Add capability to advertise PSCI v0.2 support + - LP: #1455372 + * ARM/ARM64: KVM: Add common header for PSCI related defines + - LP: #1455372 + * ARM/ARM64: KVM: Add base for PSCI v0.2 emulation + - LP: #1455372 + * KVM: Documentation: Add info regarding KVM_ARM_VCPU_PSCI_0_2 feature + - LP: #1455372 + * ARM/ARM64: KVM: Make kvm_psci_call() return convention more flexible + - LP: #1455372 + * KVM: Add KVM_EXIT_SYSTEM_EVENT to user space API header + - LP: #1455372 + * ARM/ARM64: KVM: Emulate PSCI v0.2 SYSTEM_OFF and SYSTEM_RESET + - LP: #1455372 + * ARM/ARM64: KVM: Emulate PSCI v0.2 AFFINITY_INFO + - LP: #1455372 + * ARM/ARM64: KVM: Emulate PSCI v0.2 MIGRATE_INFO_TYPE and related + functions + - LP: #1455372 + * ARM/ARM64: KVM: Fix CPU_ON emulation for PSCI v0.2 + - LP: #1455372 + * ARM/ARM64: KVM: Emulate PSCI v0.2 CPU_SUSPEND + - LP: #1455372 + * ARM/ARM64: KVM: Advertise KVM_CAP_ARM_PSCI_0_2 to user space + - LP: #1455372 + * PSCI: Add initial support for PSCIv0.2 functions + - LP: #1455372 + * Documentation: devicetree: Add new binding for PSCIv0.2 + - LP: #1455372 + * ARM: Check if a CPU has gone offline + - LP: #1455372 + * arm64: KVM: Enable minimalistic support for Cortex-A53 + - LP: #1455372 + * HID: multitouch: add support of clickpads + - LP: #1456881 + * vhost/scsi: potential memory corruption + - LP: #1457807 + - CVE-2015-4036 + + -- Luis Henriques Tue, 26 May 2015 11:21:53 +0100 + +linux (3.13.0-53.89) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1456976 + + [ Upstream Kernel Changes ] + + * tcp: Fix crash in TCP Fast Open + - LP: #1447371 + - CVE-2015-3332 + + -- Luis Henriques Wed, 20 May 2015 11:00:58 +0100 + +linux (3.13.0-53.88) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1454785 + + [ Upstream Kernel Changes ] + + * mmc: card: Don't access RPMB partitions for normal read/write + - LP: #1454013 + + -- Brad Figg Wed, 13 May 2015 10:15:29 -0700 + +linux (3.13.0-53.87) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1452736 + + [ dann frazier ] + + * [Config] CONFIG_{EFI_PARAMS_FROM_FDT,GENERIC_EARLY_IOREMAP,LIBFDT}=y + - LP: #1441876 + * Move get_dram_base to arm private file + - LP: #1441876 + * arm64: Implement efi_enabled() + - LP: #1441876 + * [Config] CONFIG_RTC_DRV_EFI=y on arm64 + - LP: #1441291 + + [ Kamal Mostafa ] + + * Fix "mei: me: release hw from reset only during the reset flow" + - LP: #1450813 + + [ Stefan Bader ] + + * SAUCE: vesafb: Set mtrr:3 (write-combining) as default + - LP: #1434581 + + [ Upstream Kernel Changes ] + + * Revert "net: cx82310_eth: use common match macro" + - LP: #1451900 + * netfilter: nf_conntrack: reserve two bytes for nf_ct_ext->len + - LP: #1442080 + - CVE-2014-9715 + * add generic fixmap.h + - LP: #1441876 + * mm: create generic early_ioremap() support + - LP: #1441876 + * arm64: initialize pgprot info earlier in boot + - LP: #1441876 + * arm64: add early_ioremap support + - LP: #1441876 + * arm64: fixmap: fix missing sub-page offset for earlyprintk + - LP: #1441876 + * efi: create memory map iteration helper + - LP: #1441876 + * efi: Add get_dram_base() helper function + - LP: #1441876 + * lib: add fdt_empty_tree.c + - LP: #1441876 + * doc: efi-stub.txt updates for ARM + - LP: #1441876 + * efi: add helper function to get UEFI params from FDT + - LP: #1441876 + * arm64: Add function to create identity mappings + - LP: #1441876 + * efi: Add shared FDT related functions for ARM/ARM64 + - LP: #1441876 + * arm64: add EFI runtime services + - LP: #1441876 + * doc: arm: add UEFI support documentation + - LP: #1441876 + * arm64: efi: add EFI stub + - LP: #1441876 + * doc: arm64: add description of EFI stub support + - LP: #1441876 + * efi/arm64: ignore dtb= when UEFI SecureBoot is enabled + - LP: #1441876 + * arm64: efi: only attempt efi map setup if booting via EFI + - LP: #1441876 + * PCI: Don't clear ASPM bits when the FADT declares it's unsupported + - LP: #1441335 + * regmap: Skip read-only registers in regcache_sync() + - LP: #1448830 + * rtc: ia64: allow other architectures to use EFI RTC + - LP: #1441291 + * rtc: Disable EFI rtc for x86 + - LP: #1441291 + * mei: me: fix hw ready reset flow + - LP: #1450813 + * Input: serio - add firmware_id sysfs attribute + - LP: #1414930 + * Input: i8042 - add firmware_id support + - LP: #1414930 + * Input: Add INPUT_PROP_TOPBUTTONPAD device property + - LP: #1414930 + * Input: synaptics - report INPUT_PROP_TOPBUTTONPAD property + - LP: #1414930 + * Input: synaptics - add a matches_pnp_id helper function + - LP: #1414930 + * Input: synaptics - change min/max quirk table to pnp-id matching + - LP: #1414930 + * Input: psmouse - add psmouse_matches_pnp_id helper function + - LP: #1414930 + * Input: synaptics - split synaptics_resolution(), query first + - LP: #1414930 + * Input: synaptics - log queried and quirked dimension values + - LP: #1414930 + * Input: synaptics - remove obsolete min/max quirk for X240 + - LP: #1414930 + * Input: synaptics - add min/max quirk for pnp-id LEN2002 (Edge E531) + - LP: #1414930 + * Input: synaptics - add min/max quirk for Lenovo T440s + - LP: #1414930 + * Input: synaptics - adjust min/max for Lenovo ThinkPad X1 Carbon 2nd + - LP: #1414930 + * Input: synaptics - adjust min/max on Thinkpad E540 + - LP: #1414930 + * Input: synaptics - support min/max board id in min_max_pnpid_table + - LP: #1414930 + * Input: synaptics - skip quirks when post-2013 dimensions + - LP: #1414930 + * Input: synaptics - query min dimensions for fw v8.1 + - LP: #1414930 + * Input: synaptics - fix middle button on Lenovo 2015 products + - LP: #1414930 + * Input: synaptics - handle spurious release of trackstick buttons + - LP: #1414930 + * Input: synaptics - do not retrieve the board id on old firmwares + - LP: #1414930 + * Input: synaptics - retrieve the extended capabilities in query $10 + - LP: #1414930 + * Input: synaptics - remove TOPBUTTONPAD property for Lenovos 2015 + - LP: #1414930 + * Input: synaptics - re-route tracksticks buttons on the Lenovo 2015 + series + - LP: #1414930 + * Input: synaptics - remove X1 Carbon 3rd gen from the topbuttonpad list + - LP: #1414930 + * Input: synaptics - remove X250 from the topbuttonpad list + - LP: #1414930 + * drm/dp_helper: don't return EPROTO for defers (v2) + - LP: #1450322 + * iio: mxs-lradc: separate touchscreen and buffer virtual channels + - LP: #1451900 + * iio: mxs-lradc: make ADC reads not disable touchscreen interrupts + - LP: #1451900 + * iio: mxs-lradc: make ADC reads not unschedule touchscreen conversions + - LP: #1451900 + * iio: mxs-lradc: only update the buffer when its conversions have + finished + - LP: #1451900 + * iio: imu: adis16400: Fix sign extension + - LP: #1451900 + * iio:adc:mcp3422 Fix incorrect scales table + - LP: #1451900 + * iio: ad5686: fix optional reference voltage declaration + - LP: #1451900 + * usb: dwc3: dwc3-omap: Fix disable IRQ + - LP: #1451900 + * KVM: emulate: fix CMPXCHG8B on 32-bit hosts + - LP: #1451900 + * xhci: Allocate correct amount of scratchpad buffers + - LP: #1451900 + * USB: usbfs: don't leak kernel data in siginfo + - LP: #1451900 + * efi/libstub: Fix boundary checking in efi_high_alloc() + - LP: #1451900 + * USB: ftdi_sio: add PIDs for Actisense USB devices + - LP: #1451900 + * USB: serial: fix potential use-after-free after failed probe + - LP: #1451900 + * USB: serial: fix tty-device error handling at probe + - LP: #1451900 + * mac80211: Send EAPOL frames at lowest rate + - LP: #1451900 + * ARC: Fix KSTK_ESP() + - LP: #1451900 + * USB: serial: cp210x: Adding Seletek device id's + - LP: #1451900 + * mei: make device disabled on stop unconditionally + - LP: #1451900 + * NFSv4: Don't call put_rpccred() under the rcu_read_lock() + - LP: #1451900 + * btrfs: fix lost return value due to variable shadowing + - LP: #1451900 + * KVM: MIPS: Fix trace event to save PC directly + - LP: #1451900 + * usb: ftdi_sio: Add jtag quirk support for Cyber Cortex AV boards + - LP: #1451900 + * eCryptfs: don't pass fs-specific ioctl commands through + - LP: #1451900 + * drm/radeon: do a posting read in r100_set_irq + - LP: #1451900 + * drm/radeon: do a posting read in rs600_set_irq + - LP: #1451900 + * drm/radeon: do a posting read in r600_set_irq + - LP: #1451900 + * drm/radeon: do a posting read in evergreen_set_irq + - LP: #1451900 + * drm/radeon: do a posting read in si_set_irq + - LP: #1451900 + * drm/radeon: do a posting read in cik_set_irq + - LP: #1451900 + * drm/radeon: fix DRM_IOCTL_RADEON_CS oops + - LP: #1451900 + * drm/radeon: fix interlaced modes on DCE8 + - LP: #1451900 + * ACPI / video: Load the module even if ACPI is disabled + - LP: #1451900 + * ASoC: omap-pcm: Correct dma mask + - LP: #1451900 + * x86/asm/entry/64: Remove a bogus 'ret_from_fork' optimization + - LP: #1451900 + * Btrfs: fix data loss in the fast fsync path + - LP: #1451900 + * Btrfs:__add_inode_ref: out of bounds memory read when looking for + extended ref. + - LP: #1451900 + * xhci: fix reporting of 0-sized URBs in control endpoint + - LP: #1451900 + * xhci: Workaround for PME stuck issues in Intel xhci + - LP: #1451900 + * Change email address for 8250_pci + - LP: #1451900 + * tty: fix up atime/mtime mess, take four + - LP: #1451900 + * console: Fix console name size mismatch + - LP: #1451900 + * net: irda: fix wait_until_sent poll timeout + - LP: #1451900 + * USB: serial: fix infinite wait_until_sent timeout + - LP: #1451900 + * TTY: fix tty_wait_until_sent on 64-bit machines + - LP: #1451900 + * sunrpc: fix braino in ->poll() + - LP: #1451900 + * netfilter: xt_socket: fix a stack corruption bug + - LP: #1451900 + * svcrpc: fix memory leak in gssp_accept_sec_context_upcall + - LP: #1451900 + * ipv4: ip_check_defrag should correctly check return value of + skb_copy_bits + - LP: #1451900 + * net: phy: Fix verification of EEE support in phy_init_eee + - LP: #1451900 + * openvswitch: Fix net exit. + - LP: #1451900 + * team: fix possible null pointer dereference in team_handle_frame + - LP: #1451900 + * net: compat: Ignore MSG_CMSG_COMPAT in compat_sys_{send, recv}msg + - LP: #1451900 + * rtnetlink: ifla_vf_policy: fix misuses of NLA_BINARY + - LP: #1451900 + * rtnetlink: call ->dellink on failure when ->newlink exists + - LP: #1451900 + * gen_stats.c: Duplicate xstats buffer for later use + - LP: #1451900 + * ipv4: ip_check_defrag should not assume that skb_network_offset is zero + - LP: #1451900 + * ematch: Fix auto-loading of ematch modules. + - LP: #1451900 + * net: reject creation of netdev names with colons + - LP: #1451900 + * macvtap: make sure neighbour code can push ethernet header + - LP: #1451900 + * usb: plusb: Add support for National Instruments host-to-host cable + - LP: #1451900 + * udp: only allow UFO for packets from SOCK_DGRAM sockets + - LP: #1451900 + * net: ping: Return EAFNOSUPPORT when appropriate. + - LP: #1451900 + * team: don't traverse port list using rcu in team_set_mac_address + - LP: #1451900 + * cpuset: Fix cpuset sched_relax_domain_level + - LP: #1451900 + * workqueue: fix hang involving racing cancel[_delayed]_work_sync()'s for + PREEMPT_NONE + - LP: #1451900 + * bnx2x: Force fundamental reset for EEH recovery + - LP: #1451900 + * spi: pl022: Fix race in giveback() leading to driver lock-up + - LP: #1451900 + * tpm/ibmvtpm: Additional LE support for tpm_ibmvtpm_send + - LP: #1451900 + * libsas: Fix Kernel Crash in smp_execute_task + - LP: #1451900 + * can: add missing initialisations in CAN related skbuffs + - LP: #1451900 + * can: kvaser_usb: Avoid double free on URB submission failures + - LP: #1451900 + * can: kvaser_usb: Read all messages in a bulk-in URB buffer + - LP: #1451900 + * ftrace: Fix en(dis)able graph caller when en(dis)abling record via + sysctl + - LP: #1451900 + * ftrace: Fix ftrace enable ordering of sysctl ftrace_enabled + - LP: #1451900 + * drm/radeon: drop setting UPLL to sleep mode + - LP: #1451900 + * xen-pciback: limit guest control of command register + - LP: #1451900 + * ALSA: hda - Fix built-in mic on Compaq Presario CQ60 + - LP: #1451900 + * ALSA: control: Add sanity checks for user ctl id name string + - LP: #1451900 + * ALSA: snd-usb: add quirks for Roland UA-22 + - LP: #1451900 + * ALSA: hda - Set single_adc_amp flag for CS420x codecs + - LP: #1451900 + * ALSA: hda - Add workaround for MacBook Air 5,2 built-in mic + - LP: #1451900 + * nilfs2: fix deadlock of segment constructor during recovery + - LP: #1451900 + * ALSA: hda - Don't access stereo amps for mono channel widgets + - LP: #1451900 + * ipvs: add missing ip_vs_pe_put in sync code + - LP: #1451900 + * ARM: at91: pm: fix at91rm9200 standby + - LP: #1451900 + * rbd: drop an unsafe assertion + - LP: #1451900 + * fuse: notify: don't move pages + - LP: #1451900 + * fuse: set stolen page uptodate + - LP: #1451900 + * dm thin: fix to consistently zero-fill reads to unprovisioned blocks + - LP: #1451900 + * dm: hold suspend_lock while suspending device during device deletion + - LP: #1451900 + * dm io: deal with wandering queue limits when handling REQ_DISCARD and + REQ_WRITE_SAME + - LP: #1451900 + * crypto: arm/aes update NEON AES module to latest OpenSSL version + - LP: #1451900 + * mac80211: drop unencrypted frames in mesh fwding + - LP: #1451900 + * mac80211: disable u-APSD queues by default + - LP: #1451900 + * ASoC: ak4671: Fix control-less DAPM routes + - LP: #1451900 + * ASoC: da732x: Fix control-less DAPM routes + - LP: #1451900 + * ASoC: sn95031: Fix control-less DAPM routes + - LP: #1451900 + * virtio_console: init work unconditionally + - LP: #1451900 + * virtio_console: avoid config access from irq + - LP: #1451900 + * clocksource: efm32: Fix a NULL pointer dereference + - LP: #1451900 + * x86/vdso: Fix the build on GCC5 + - LP: #1451900 + * ASoC: sgtl5000: remove useless register write clearing CHRGPUMP_POWERUP + - LP: #1451900 + * regmap: regcache-rbtree: Fix present bitmap resize + - LP: #1451900 + * regulator: Only enable disabled regulators on resume + - LP: #1451900 + * regulator: core: Fix enable GPIO reference counting + - LP: #1451900 + * vt6655: RFbSetPower fix missing rate RATE_12M + - LP: #1451900 + * x86/asm/entry/32: Fix user_mode() misuses + - LP: #1451900 + * ASoC: adav80x: Fix wrong value references for boolean kctl + - LP: #1451900 + * ASoC: ak4641: Fix wrong value references for boolean kctl + - LP: #1451900 + * ASoC: cs4271: Fix wrong value references for boolean kctl + - LP: #1451900 + * ASoC: pcm1681: Fix wrong value references for boolean kctl + - LP: #1451900 + * ASoC: tas5086: Fix wrong value references for boolean kctl + - LP: #1451900 + * ASoC: wm2000: Fix wrong value references for boolean kctl + - LP: #1451900 + * ASoC: wm8731: Fix wrong value references for boolean kctl + - LP: #1451900 + * ASoC: wm8903: Fix wrong value references for boolean kctl + - LP: #1451900 + * ASoC: wm8904: Fix wrong value references for boolean kctl + - LP: #1451900 + * ASoC: wm8955: Fix wrong value references for boolean kctl + - LP: #1451900 + * ASoC: wm8960: Fix wrong value references for boolean kctl + - LP: #1451900 + * crypto: aesni - fix memory usage in GCM decryption + - LP: #1451900 + * phy: Find the right match in devm_phy_destroy() + - LP: #1451900 + * x86/fpu: Avoid math_state_restore() without used_math() in + __restore_xstate_sig() + - LP: #1451900 + * x86/fpu: Drop_fpu() should not assume that tsk equals current + - LP: #1451900 + * can: kvaser_usb: Fix tx queue start/stop race conditions + - LP: #1451900 + * nl80211: ignore HT/VHT capabilities without QoS/WMM + - LP: #1451900 + * ALSA: hda - Treat stereo-to-mono mix properly + - LP: #1451900 + * pagemap: do not leak physical addresses to non-privileged userspace + - LP: #1451900 + * of/irq: Fix of_irq_parse_one() returned error codes + - LP: #1451900 + * iscsi-target: Avoid early conn_logout_comp for iser connections + - LP: #1451900 + * tcm_qla2xxx: Fix incorrect use of __transport_register_session + - LP: #1451900 + * target: Fix reference leak in target_get_sess_cmd() error path + - LP: #1451900 + * tcm_fc: missing curly braces in ft_invl_hw_context() + - LP: #1451900 + * target/pscsi: Fix NULL pointer dereference in get_device_type + - LP: #1451900 + * target: Fix virtual LUN=0 target_configure_device failure OOPs + - LP: #1451900 + * xfrm: release dst_orig in case of error in xfrm_lookup() + - LP: #1451900 + * dmaengine: dw: append MODULE_ALIAS for platform driver + - LP: #1451900 + * sparc32: destroy_context() and switch_mm() needs to disable interrupts. + - LP: #1451900 + * sparc: semtimedop() unreachable due to comparison error + - LP: #1451900 + * sparc: perf: Remove redundant perf_pmu_{en|dis}able calls + - LP: #1451900 + * sparc: perf: Make counting mode actually work + - LP: #1451900 + * sparc: Touch NMI watchdog when walking cpus and calling printk + - LP: #1451900 + * sparc64: Fix several bugs in memmove(). + - LP: #1451900 + * net: sysctl_net_core: check SNDBUF and RCVBUF for min length + - LP: #1451900 + * rds: avoid potential stack overflow + - LP: #1451900 + * inet_diag: fix possible overflow in inet_diag_dump_one_icsk() + - LP: #1451900 + * caif: fix MSG_OOB test in caif_seqpkt_recvmsg() + - LP: #1451900 + * rxrpc: bogus MSG_PEEK test in rxrpc_recvmsg() + - LP: #1451900 + * ipv6: fix backtracking for throw routes + - LP: #1451900 + * tcp: fix tcp fin memory accounting + - LP: #1451900 + * net: compat: Update get_compat_msghdr() to match + copy_msghdr_from_user() behaviour + - LP: #1451900 + * tcp: make connect() mem charging friendly + - LP: #1451900 + * Linux 3.13.11-ckt19 + - LP: #1451900 + + -- Luis Henriques Thu, 07 May 2015 14:47:02 +0100 + +linux (3.13.0-52.86) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1451288 + + [ Upstream Kernel Changes ] + + * audit: create private file name copies when auditing inodes + - LP: #1450442 + + -- Brad Figg Sun, 03 May 2015 18:36:19 -0700 + +linux (3.13.0-52.85) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1450101 + + [ Upstream Kernel Changes ] + + * fs: take i_mutex during prepare_binprm for set[ug]id executables + - LP: #1447373 + - CVE-2015-3339 + + -- Luis Henriques Fri, 24 Apr 2015 17:26:50 +0100 + +linux (3.13.0-51.84) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1444141 + * Merged back Ubuntu-3.13.0-49.83 security release + + -- Luis Henriques Tue, 14 Apr 2015 21:38:57 +0100 + +linux (3.13.0-50.82) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1442285 + + [ Andy Whitcroft ] + + * [Config] CONFIG_DEFAULT_MMAP_MIN_ADDR needs to match on armhf and arm64 + - LP: #1418140 + + [ Chris J Arges ] + + * [Config] CONFIG_PCIEASPM_DEBUG=y + - LP: #1398544 + + [ Upstream Kernel Changes ] + + * KEYS: request_key() should reget expired keys rather than give + EKEYEXPIRED + - LP: #1124250 + * audit: correctly record file names with different path name types + - LP: #1439441 + * KVM: x86: Check for nested events if there is an injectable interrupt + - LP: #1413540 + * be2iscsi: fix memory leak in error path + - LP: #1440156 + * block: remove old blk_iopoll_enabled variable + - LP: #1440156 + * be2iscsi: Fix handling timed out MBX completion from FW + - LP: #1440156 + * be2iscsi: Fix doorbell format for EQ/CQ/RQ s per SLI spec. + - LP: #1440156 + * be2iscsi: Fix the session cleanup when reboot/shutdown happens + - LP: #1440156 + * be2iscsi: Fix scsi_cmnd leakage in driver. + - LP: #1440156 + * be2iscsi : Fix DMA Out of SW-IOMMU space error + - LP: #1440156 + * be2iscsi: Fix retrieving MCCQ_WRB in non-embedded Mbox path + - LP: #1440156 + * be2iscsi: Fix exposing Host in sysfs after adapter initialization is + complete + - LP: #1440156 + * be2iscsi: Fix interrupt Coalescing mechanism. + - LP: #1440156 + * be2iscsi: Fix TCP parameters while connection offloading. + - LP: #1440156 + * be2iscsi: Fix memory corruption in MBX path + - LP: #1440156 + * be2iscsi: Fix destroy MCC-CQ before MCC-EQ is destroyed + - LP: #1440156 + * be2iscsi: add an missing goto in error path + - LP: #1440156 + * be2iscsi: remove potential junk pointer free + - LP: #1440156 + * be2iscsi: Fix memory leak in mgmt_set_ip() + - LP: #1440156 + * be2iscsi: Fix the sparse warning introduced in previous submission + - LP: #1440156 + * be2iscsi: Fix updating the boot enteries in sysfs + - LP: #1440156 + * be2iscsi: Fix processing CQE before connection resources are freed + - LP: #1440156 + * be2iscsi : Fix kernel panic during reboot/shutdown + - LP: #1440156 + * fixed invalid assignment of 64bit mask to host dma_boundary for scatter + gather segment boundary limit. + - LP: #1440156 + * quota: Store maximum space limit in bytes + - LP: #1441284 + * ip: zero sockaddr returned on error queue + - LP: #1441284 + * net: rps: fix cpu unplug + - LP: #1441284 + * ipv6: stop sending PTB packets for MTU < 1280 + - LP: #1441284 + * netxen: fix netxen_nic_poll() logic + - LP: #1441284 + * udp_diag: Fix socket skipping within chain + - LP: #1441284 + * ping: Fix race in free in receive path + - LP: #1441284 + * bnx2x: fix napi poll return value for repoll + - LP: #1441284 + * net: don't OOPS on socket aio + - LP: #1441284 + * bridge: dont send notification when skb->len == 0 in rtnl_bridge_notify + - LP: #1441284 + * ipv4: tcp: get rid of ugly unicast_sock + - LP: #1441284 + * ppp: deflate: never return len larger than output buffer + - LP: #1441284 + * net: sctp: fix passing wrong parameter header to param_type2af in + sctp_process_param + - LP: #1441284 + * ARM: pxa: add regulator_has_full_constraints to corgi board file + - LP: #1441284 + * ARM: pxa: add regulator_has_full_constraints to poodle board file + - LP: #1441284 + * ARM: pxa: add regulator_has_full_constraints to spitz board file + - LP: #1441284 + * hx4700: regulator: declare full constraints + - LP: #1441284 + * HID: input: fix confusion on conflicting mappings + - LP: #1441284 + * HID: fixup the conflicting keyboard mappings quirk + - LP: #1441284 + * megaraid_sas: disable interrupt_mask before enabling hardware + interrupts + - LP: #1441284 + * PCI: Generate uppercase hex for modalias var in uevent + - LP: #1441284 + * usb: core: buffer: smallest buffer should start at ARCH_DMA_MINALIGN + - LP: #1441284 + * tty/serial: at91: enable peripheral clock before accessing I/O + registers + - LP: #1441284 + * tty/serial: at91: fix error handling in atmel_serial_probe() + - LP: #1441284 + * axonram: Fix bug in direct_access + - LP: #1441284 + * ksoftirqd: Enable IRQs and call cond_resched() before poking RCU + - LP: #1441284 + * TPM: Add new TPMs to the tail of the list to prevent inadvertent change + of dev + - LP: #1441284 + * char: tpm: Add missing error check for devm_kzalloc + - LP: #1441284 + * tpm_tis: verify interrupt during init + - LP: #1441284 + * tpm: Fix NULL return in tpm_ibmvtpm_get_desired_dma + - LP: #1441284 + * tpm/tpm_i2c_stm_st33: Fix potential bug in tpm_stm_i2c_send + - LP: #1441284 + * tpm/tpm_i2c_stm_st33: Add status check when reading data on the FIFO + - LP: #1441284 + * mmc: sdhci-pxav3: fix unbalanced clock issues during probe + - LP: #1441284 + * iwlwifi: mvm: validate tid and sta_id in ba_notif + - LP: #1441284 + * power: bq24190: Fix ignored supplicants + - LP: #1441284 + * ARM: DRA7: hwmod: Fix boot crash with DEBUG_LL enabled on UART3 + - LP: #1441284 + * Bluetooth: ath3k: Add support of AR3012 bluetooth 13d3:3423 device + - LP: #1411193, #1441284 + * cfq-iosched: fix incorrect filing of rt async cfqq + - LP: #1441284 + * smack: fix possible use after frees in task_security() callers + - LP: #1441284 + * xfs: ensure buffer types are set correctly + - LP: #1441284 + * xfs: inode unlink does not set AGI buffer type + - LP: #1441284 + * xfs: set buf types when converting extent formats + - LP: #1441284 + * xfs: set superblock buffer type correctly + - LP: #1441284 + * btrfs: set proper message level for skinny metadata + - LP: #1441284 + * KVM: s390: base hrtimer on a monotonic clock + - LP: #1441284 + * PCI: Fix infinite loop with ROM image of size 0 + - LP: #1441284 + * USB: cp210x: add ID for RUGGEDCOM USB Serial Console + - LP: #1441284 + * clk: zynq: Force CPU_2X clock to be ungated + - LP: #1441284 + * mmc: sdhci-pxav3: Remove checks for mandatory host clock + - LP: #1441284 + * mmc: sdhci-pxav3: fix race between runtime pm and irq + - LP: #1441284 + * power_supply: 88pm860x: Fix leaked power supply on probe fail + - LP: #1441284 + * staging: comedi: comedi_compat32.c: fix COMEDI_CMD copy back + - LP: #1441284 + * mmc: sdhci-pxav3: fix setting of pdata->clk_delay_cycles + - LP: #1441284 + * ARM: 8284/1: sa1100: clear RCSR_SMR on resume + - LP: #1441284 + * usb: musb: omap2plus bus glue needs USB host support + - LP: #1441284 + * USB: add flag for HCDs that can't receive wakeup requests (isp1760-hcd) + - LP: #1441284 + * USB: fix use-after-free bug in usb_hcd_unlink_urb() + - LP: #1441284 + * iwlwifi: mvm: always use mac color zero + - LP: #1441284 + * iwlwifi: pcie: disable the SCD_BASE_ADDR when we resume from WoWLAN + - LP: #1441284 + * vt: provide notifications on selection changes + - LP: #1441284 + * tty: Prevent untrappable signals from malicious program + - LP: #1441284 + * cpufreq: Set cpufreq_cpu_data to NULL before putting kobject + - LP: #1441284 + * lmedm04: Fix usb_submit_urb BOGUS urb xfer, pipe 1 != type 3 in + interrupt urb + - LP: #1441284 + * mei: mask interrupt set bit on clean reset bit + - LP: #1441284 + * mei: me: release hw from reset only during the reset flow + - LP: #1441284 + * MIPS: KVM: Deliver guest interrupts after local_irq_disable() + - LP: #1441284 + * KVM: MIPS: Don't leak FPU/DSP to guest + - LP: #1441284 + * ALSA: hda - Add the pin fixup for HP Envy TS bass speaker + - LP: #1441284 + * ALSA: hda - Set up GPIO for Toshiba Satellite S50D + - LP: #1441284 + * xen/manage: Fix USB interaction issues when resuming + - LP: #1441284 + * drm/i915: Correct the IOSF Dev_FN field for IOSF transfers + - LP: #1441284 + * cfq-iosched: handle failure of cfq group allocation + - LP: #1441284 + * tracing: Fix unmapping loop in tracing_mark_write + - LP: #1441284 + * fsnotify: fix handling of renames in audit + - LP: #1441284 + * drm/radeon: workaround for CP HW bug on CIK + - LP: #1441284 + * drm/radeon: only enable kv/kb dpm interrupts once v3 + - LP: #1441284 + * NFSv4.1: Fix a kfree() of uninitialised pointers in + decode_cb_sequence_args + - LP: #1441284 + * cpufreq: speedstep-smi: enable interrupts when waiting + - LP: #1441284 + * mm/hugetlb: pmd_huge() returns true for non-present hugepage + - LP: #1441284 + * mm: cleanup follow_page_mask() + - LP: #1441284 + * mm/hugetlb: take page table lock in follow_huge_pmd() + - LP: #1441284 + * mm/hugetlb: fix getting refcount 0 page in hugetlb_fault() + - LP: #1441284 + * mm/hugetlb: add migration/hwpoisoned entry check in + hugetlb_change_protection + - LP: #1441284 + * mm/hugetlb: add migration entry check in __unmap_hugepage_range + - LP: #1441284 + * mm: softdirty: unmapped addresses between VMAs are clean + - LP: #1441284 + * proc/pagemap: walk page tables under pte lock + - LP: #1441284 + * mm: when stealing freepages, also take pages created by splitting buddy + page + - LP: #1441284 + * mm/mmap.c: fix arithmetic overflow in __vm_enough_memory() + - LP: #1441284 + * mm/nommu.c: fix arithmetic overflow in __vm_enough_memory() + - LP: #1441284 + * iscsi-target: Drop problematic active_ts_list usage + - LP: #1441284 + * target: Fix PR_APTPL_BUF_LEN buffer size limitation + - LP: #1441284 + * mm/compaction: fix wrong order check in compact_finished() + - LP: #1441284 + * mm/memory.c: actually remap enough memory + - LP: #1441284 + * mm: hwpoison: drop lru_add_drain_all() in __soft_offline_page() + - LP: #1441284 + * ARC: fix page address calculation if PAGE_OFFSET != LINUX_LINK_BASE + - LP: #1441284 + * drm/radeon/dp: Set EDP_CONFIGURATION_SET for bridge chips if necessary + - LP: #1441284 + * drm/radeon: fix voltage setup on hawaii + - LP: #1441284 + * ALSA: hdspm - Constrain periods to 2 on older cards + - LP: #1441284 + * jffs2: fix handling of corrupted summary length + - LP: #1441284 + * dm mirror: do not degrade the mirror on discard error + - LP: #1441284 + * dm io: reject unsupported DISCARD requests with EOPNOTSUPP + - LP: #1441284 + * target: Add missing WRITE_SAME end-of-device sanity check + - LP: #1441284 + * target: Check for LBA + sectors wrap-around in sbc_parse_cdb + - LP: #1441284 + * Btrfs: fix fsync data loss after adding hard link to inode + - LP: #1441284 + * Added Little Endian support to vtpm module + - LP: #1441284 + * sg: fix read() error reporting + - LP: #1441284 + * IB/qib: Do not write EEPROM + - LP: #1441284 + * md/raid5: Fix livelock when array is both resyncing and degraded. + - LP: #1441284 + * dm: fix a race condition in dm_get_md + - LP: #1441284 + * dm snapshot: fix a possible invalid memory access on unload + - LP: #1441284 + * cpufreq: s3c: remove incorrect __init annotations + - LP: #1441284 + * libceph: assert both regular and lingering lists in __remove_osd() + - LP: #1441284 + * libceph: change from BUG to WARN for __remove_osd() asserts + - LP: #1441284 + * libceph: fix double __remove_osd() problem + - LP: #1441284 + * MIPS: Export FP functions used by lose_fpu(1) for KVM + - LP: #1441284 + * kdb: fix incorrect counts in KDB summary command output + - LP: #1441284 + * blk-throttle: check stats_cpu before reading it from sysfs + - LP: #1441284 + * procfs: fix race between symlink removals and traversals + - LP: #1441284 + * autofs4 copy_dev_ioctl(): keep the value of ->size we'd used for + allocation + - LP: #1441284 + * pktgen: fix UDP checksum computation + - LP: #1441284 + * ipv6: fix ipv6_cow_metrics for non DST_HOST case + - LP: #1441284 + * clk-gate: fix bit # check in clk_register_gate() + - LP: #1441284 + * ALSA: off by one bug in snd_riptide_joystick_probe() + - LP: #1441284 + * ath5k: fix spontaneus AR5312 freezes + - LP: #1441284 + * pinctrl: pinctrl-imx: don't use invalid value of conf_reg + - LP: #1441284 + * ALSA: hda - Add one more node in the EAPD supporting candidate list + - LP: #1436745, #1441284 + * ALSA: hda - Add pin configs for ASUS mobo with IDT 92HD73XX codec + - LP: #1441284 + * drm/i915/bdw: PCI IDs ending in 0xb are ULT. + - LP: #1441284 + * xfs: Fix quota type in quota structures when reusing quota file + - LP: #1441284 + * gpiolib: of: allow of_gpiochip_find_and_xlate to find more than one + chip per node + - LP: #1441284 + * gpio: tps65912: fix wrong container_of arguments + - LP: #1441284 + * ALSA: pcm: Don't leave PREPARED state after draining + - LP: #1441284 + * metag: Fix KSTK_EIP() and KSTK_ESP() macros + - LP: #1441284 + * md/raid1: fix read balance when a drive is write-mostly. + - LP: #1441284 + * drm/radeon: use drm_mode_vrefresh() rather than mode->vrefresh + - LP: #1441284 + * drm/radeon: fix 1 RB harvest config setup for TN/RL + - LP: #1441284 + * arm64: compat Fix siginfo_t -> compat_siginfo_t conversion on big + endian + - LP: #1441284 + * nilfs2: fix potential memory overrun on inode + - LP: #1441284 + * HID: i2c-hid: Limit reads to wMaxInputLength bytes for input events + - LP: #1441284 + * Linux 3.13.11-ckt18 + - LP: #1441284 + * ipv6: Don't reduce hop limit for an interface + - LP: #1441103 + - CVE-2015-2922 + * x86/microcode/intel: Guard against stack overflow in the loader + - LP: #1438504 + - CVE-2015-2666 + + -- Brad Figg Thu, 09 Apr 2015 10:06:28 -0700 + +linux (3.13.0-49.83) trusty; urgency=low + + [ Upstream Kernel Changes ] + + * powerpc/perf: Cap 64bit userspace backtraces to PERF_MAX_STACK_DEPTH + - LP: #1442180 + + -- Luis Henriques Fri, 10 Apr 2015 18:46:02 +0100 + +linux (3.13.0-49.81) trusty; urgency=low + + [ Kamal Mostafa ] + + * Release Tracking Bug + - LP: #1436016 + + [ Alex Hung ] + + * SAUCE: ACPI / blacklist: blacklist Win8 OSI for HP Pavilion dv6 + - LP: #1416940 + + [ Andy Whitcroft ] + + * [Packaging] generate live watchdog blacklists + - LP: #1432837 + + [ Ben Widawsky ] + + * SAUCE: i915_bdw: drm/i915/bdw: enable eDRAM. + - LP: #1430855 + + [ Chris J Arges ] + + * [Config] Add ibmvfc to d-i + - LP: #1416001 + + [ Seth Forshee ] + + * [Config] updateconfigs - enable X86_UP_APIC_MSI + + [ Upstream Kernel Changes ] + + * net: add sysfs helpers for netdev_adjacent logic + - LP: #1410852 + * net: Mark functions as static in core/dev.c + - LP: #1410852 + * net: rename sysfs symlinks on device name change + - LP: #1410852 + * btrfs: fix null pointer dereference in clone_fs_devices when name is + null + - LP: #1429804 + * cdc-acm: add sanity checks + - LP: #1413992 + * x86: thinkpad_acpi.c: fixed spacing coding style issue + - LP: #1417915 + * thinkpad_acpi: support new BIOS version string pattern + - LP: #1417915 + * net: sctp: fix slab corruption from use after free on INIT collisions + - LP: #1416506 + - CVE-2015-1421 + * ipv4: try to cache dst_entries which would cause a redirect + - LP: #1420027 + - CVE-2015-1465 + * x86, mm/ASLR: Fix stack randomization on 64-bit systems + - LP: #1423757 + - CVE-2015-1593 + * net: llc: use correct size for sysctl timeout entries + - LP: #1425271 + - CVE-2015-2041 + * net: rds: use correct size for max unacked packets and bytes + - LP: #1425274 + - CVE-2015-2042 + * Btrfs: clear compress-force when remounting with compress option + - LP: #1434183 + * ext4: merge uninitialized extents + - LP: #1430184 + * btrfs: filter invalid arg for btrfs resize + - LP: #1435441 + * Bluetooth: Add firmware update for Atheros 0cf3:311f + * Bluetooth: btusb: Add IMC Networks (Broadcom based) + * Bluetooth: sort the list of IDs in the source code + * Bluetooth: append new supported device to the list [0b05:17d0] + * Bluetooth: Add support for Intel bootloader devices + * Bluetooth: Ignore isochronous endpoints for Intel USB bootloader + * Bluetooth: Add support for Acer [13D3:3432] + * Bluetooth: Add support for Broadcom device of Asus Z97-DELUXE + motherboard + * Add a new PID/VID 0227/0930 for AR3012. + * Bluetooth: Add support for Acer [0489:e078] + * Bluetooth: Add USB device 04ca:3010 as Atheros AR3012 + * x86: mm: move mmap_sem unlock from mm_fault_error() to caller + * vm: add VM_FAULT_SIGSEGV handling support + * vm: make stack guard page errors return VM_FAULT_SIGSEGV rather than + SIGBUS + * spi/pxa2xx: Clear cur_chip pointer before starting next message + * spi: dw: Fix detecting FIFO depth + * spi: dw-mid: fix FIFO size + * ASoC: wm8960: Fix capture sample rate from 11250 to 11025 + * regulator: core: fix race condition in regulator_put() + * ASoC: omap-mcbsp: Correct CBM_CFS dai format configuration + * can: c_can: end pending transmission on network stop (ifdown) + * nfs: fix dio deadlock when O_DIRECT flag is flipped + * NFSv4.1: Fix an Oops in nfs41_walk_client_list + * Input: i8042 - add noloop quirk for Medion Akoya E7225 (MD98857) + * mac80211: properly set CCK flag in radiotap + * nl80211: fix per-station group key get/del and memory leak + * i2c: s3c2410: fix ABBA deadlock by keeping clock prepared + * usb-storage/SCSI: blacklist FUA on JMicron 152d:2566 USB-SATA + controller + * drm/i915: Only fence tiled region of object. + * drm/i915: Fix and clean BDW PCH identification + * drm/i915: BDW Fix Halo PCI IDs marked as ULT. + * ALSA: seq-dummy: remove deadlock-causing events on close + * drivers/rtc/rtc-s5m.c: terminate s5m_rtc_id array with empty element + * drivers: net: cpsw: discard dual emac default vlan configuration + * can: kvaser_usb: Do not sleep in atomic context + * can: kvaser_usb: Send correct context to URB completion + * can: kvaser_usb: Retry the first bulk transfer on -ETIMEDOUT + * can: kvaser_usb: Fix state handling upon BUS_ERROR events + * quota: Switch ->get_dqblk() and ->set_dqblk() to use bytes as space + units + * rbd: fix rbd_dev_parent_get() when parent_overlap == 0 + * rbd: drop parent_ref in rbd_dev_unprobe() unconditionally + * dm cache: fix missing ERR_PTR returns and handling + * dm thin: don't allow messages to be sent to a pool target in READ_ONLY + or FAIL mode + * net: cls_bpf: fix size mismatch on filter preparation + * net: cls_bpf: fix auto generation of per list handles + * ipv6: replacing a rt6_info needs to purge possible propagated rt6_infos + too + * perf: Tighten (and fix) the grouping condition + * arc: mm: Fix build failure + * MIPS: IRQ: Fix disable_irq on CPU IRQs + * Complete oplock break jobs before closing file handle + * smpboot: Add missing get_online_cpus() in + smpboot_register_percpu_thread() + * ASoC: atmel_ssc_dai: fix start event for I2S mode + * spi: fsl-dspi: Fix memory leak + * spi: spi-fsl-dspi: Remove usage of devm_kzalloc + * ALSA: ak411x: Fix stall in work callback + * lib/checksum.c: fix carry in csum_tcpudp_nofold + * MIPS: Fix kernel lockup or crash after CPU offline/online + * gpio: sysfs: fix memory leak in gpiod_export_link + * gpio: sysfs: fix memory leak in gpiod_sysfs_set_active_low + * PCI: Add NEC variants to Stratus ftServer PCIe DMI check + * ASoC: sgtl5000: add delay before first I2C access + * PCI: Handle read-only BARs on AMD CS553x devices + * mm: pagewalk: call pte_hole() for VM_PFNMAP during walk_page_range + * nilfs2: fix deadlock of segment constructor over I_SYNC flag + * tcp: ipv4: initialize unicast_sock sk_pacing_rate + * caif: remove wrong dev_net_set() call + * qlge: Fix qlge_update_hw_vlan_features to handle if interface is down + * ip6_gre: fix endianness errors in ip6gre_err + * spi: dw: revisit FIFO size detection again + * Linux 3.13.11-ckt17 + + -- Kamal Mostafa Tue, 24 Mar 2015 11:58:44 -0700 + +linux (3.13.0-48.80) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1431263 + * Merged back all changes that were in Ubuntu-3.13.0-47.78 + + [ Upstream Kernel Changes ] + + * xfs: remote attribute overwrite causes transaction overrun + - LP: #1429821 + - CVE-2015-0274 + + -- Luis Henriques Thu, 12 Mar 2015 10:21:27 +0000 + +linux (3.13.0-47.78) trusty; urgency=low + + [ Seth Forshee ] + + * Release Tracking Bug + - LP: #1427733 + + [ Rodrigo Vivi ] + + * SAUCE: drm/i915: Fix and clean BDW PCH identification + - LP: #1423292 + * SAUCE: drm/i915: BDW Fix Halo PCI IDs marked as ULT. + - LP: #1423292 + + [ Upstream Kernel Changes ] + + * ext4: prevent bugon on race between write/fcntl + * Bluetooth: ath3k: workaround the compatibility issue with xHCI + controller + - LP: #1400215 + * openvswitch: Silence RCU lockdep checks from flow lookup. + - LP: #1408972 + * openvswitch: Use exact lookup for flow_get and flow_del. + - LP: #1408972 + * splice: Apply generic position and size checks to each write + - LP: #1416498 + - CVE-2014-7822 + * ALSA: hda - enable mute led quirk for one more hp machine. + - LP: #1410704 + * crypto: prefix module autoloading with "crypto-" + - LP: #1427438 + * crypto: add missing crypto module aliases + - LP: #1427438 + * crypto: include crypto- module prefix in template + - LP: #1427438 + * crypto: crc32c - add missing crypto module alias + - LP: #1427438 + * drm/i915: Invalidate media caches on gen7 + - LP: #1427438 + * drm/i915: Force the CS stall for invalidate flushes + - LP: #1427438 + * audit: restore AUDIT_LOGINUID unset ABI + - LP: #1427438 + * parisc: fix out-of-register compiler error in ldcw inline assembler + function + - LP: #1427438 + * kvm: x86: drop severity of "generation wraparound" message + - LP: #1427438 + * udf: Verify i_size when loading inode + - LP: #1427438 + * udf: Verify symlink size before loading it + - LP: #1427438 + * udf: Check path length when reading symlink + - LP: #1427438 + * udf: Check component length before reading it + - LP: #1427438 + * crypto: af_alg - fix backlog handling + - LP: #1427438 + * ASoC: dwc: Ensure FIFOs are flushed to prevent channel swap + - LP: #1427438 + * video/logo: prevent use of logos after they have been freed + - LP: #1427438 + * video/fbdev: fix defio's fsync + - LP: #1427438 + * Add USB_EHCI_EXYNOS to multi_v7_defconfig + - LP: #1427438 + * drm/i915: Swap primary planes on gen2 for FBC + - LP: #1427438 + * drm/i915: Don't swap planes on 830M + - LP: #1427438 + * drm/i915: Don't call intel_prepare_page_flip() multiple times on gen2-4 + - LP: #1427438 + * x86, vdso: Use asm volatile in __getcpu + - LP: #1427438 + * drivers: net: cpsw: enable interrupts after napi enable and clearing + previous interrupts + - LP: #1427438 + * net: ethernet: cpsw: fix hangs with interrupts + - LP: #1427438 + * ALSA: hda - Fix wrong gpio_dir & gpio_mask hint setups for IDT/STAC + codecs + - LP: #1427438 + * drm/radeon: KV has three PPLLs (v2) + - LP: #1427438 + * drm/radeon: properly filter DP1.2 4k modes on non-DP1.2 hw + - LP: #1427438 + * virtio_pci: defer kfree until release callback + - LP: #1427438 + * virtio_pci: document why we defer kfree + - LP: #1427438 + * mm: propagate error from stack expansion even for guard page + - LP: #1427438 + * ALSA: hda - Add new GPU codec ID to snd-hda + - LP: #1427438 + * ALSA: hda - Add new GPU codec ID 0x10de0070 to snd-hda + - LP: #1427438 + * ALSA: hda - Add new GPU codec ID 0x10de0072 to snd-hda + - LP: #1427438 + * vfio-pci: Fix the check on pci device type in vfio_pci_probe() + - LP: #1427438 + * mm: prevent endless growth of anon_vma hierarchy + - LP: #1427438 + * mm: protect set_page_dirty() from ongoing truncation + - LP: #1427438 + * mm, vmscan: prevent kswapd livelock due to pfmemalloc-throttled process + being killed + - LP: #1427438 + * HID: roccat: potential out of bounds in pyra_sysfs_write_settings() + - LP: #1427438 + * mm: Don't count the stack guard page towards RLIMIT_STACK + - LP: #1427438 + * mm: fix corner case in anon_vma endless growing prevention + - LP: #1427438 + * usb: musb: stuff leak of struct usb_hcd + - LP: #1427438 + * usb: gadget: udc: atmel: change setting for DMA + - LP: #1427438 + * usb: gadget: udc: atmel: fix possible IN hang issue + - LP: #1427438 + * ARM: clk-imx6q: fix video divider for rev T0 1.0 + - LP: #1427438 + * ARM: dts: imx25: Fix the SPI1 clocks + - LP: #1427438 + * USB: cp210x: fix ID for production CEL MeshConnect USB Stick + - LP: #1427438 + * USB: keyspan: fix null-deref at probe + - LP: #1427438 + * ARM: omap5/dra7xx: Fix frequency typos + - LP: #1427438 + * LOCKD: Fix a race when initialising nlmsvc_timeout + - LP: #1427438 + * NFSv4.1: Fix client id trunking on Linux + - LP: #1427438 + * USB: cp210x: add IDs for CEL USB sticks and MeshWorks devices + - LP: #1427438 + * USB: qcserial/option: make AT URCs work for Sierra Wireless MC73xx + - LP: #1427438 + * USB: EHCI: fix initialization bug in iso_stream_schedule() + - LP: #1427438 + * OHCI: add a quirk for ULi M5237 blocking on reset + - LP: #1427438 + * mei: clean reset bit before reset + - LP: #1427438 + * target: Drop arbitrary maximum I/O size limit + - LP: #1427438 + * usb: gadget: udc: atmel: fix possible oops when unloading module + - LP: #1427438 + * USB: console: fix uninitialised ldisc semaphore + - LP: #1427438 + * USB: console: fix potential use after free + - LP: #1427438 + * mmc: sdhci: Fix sleep in atomic after inserting SD card + - LP: #1427438 + * usb: dwc3: gadget: Fix TRB preparation during SG + - LP: #1427438 + * usb: dwc3: gadget: Stop TRB preparation after limit is reached + - LP: #1427438 + * ftrace/jprobes/x86: Fix conflict between jprobes and function graph + tracing + - LP: #1427438 + * clocksource: exynos_mct: Fix bitmask regression for exynos4_mct_write + - LP: #1427438 + * time: settimeofday: Validate the values of tv from user + - LP: #1427438 + * Input: i8042 - reset keyboard to fix Elantech touchpad detection + - LP: #1427438 + * drm/radeon: fix VM flush on cayman/aruba (v3) + - LP: #1427438 + * drm/radeon: fix VM flush on SI (v3) + - LP: #1427438 + * drm/radeon: fix VM flush on CIK (v3) + - LP: #1427438 + * drm/radeon: add a dpm quirk list + - LP: #1427438 + * Input: elantech - support new ICs types for version 4 + - LP: #1427438 + * Input: I8042 - add Acer Aspire 7738 to the nomux list + - LP: #1427438 + * drm/i915: Fix mutex->owner inspection race under DEBUG_MUTEXES + - LP: #1427438 + * drm/radeon: add si dpm quirk list + - LP: #1427438 + * pinctrl: Fix two deadlocks + - LP: #1427438 + * gpio / ACPI: register to ACPI events automatically + - LP: #1427438 + * gpio: fix memory and reference leaks in gpiochip_add error path + - LP: #1427438 + * gpio: fix sleep-while-atomic in gpiochip_remove + - LP: #1427438 + * can: dev: fix crtlmode_supported check + - LP: #1427438 + * can: kvaser_usb: Don't free packets when tight on URBs + - LP: #1427438 + * can: kvaser_usb: Reset all URB tx contexts upon channel close + - LP: #1427438 + * can: kvaser_usb: Don't send a RESET_CHIP for non-existing channels + - LP: #1427438 + * gpio: sysfs: fix gpio-chip device-attribute leak + - LP: #1427438 + * gpio: sysfs: fix gpio device-attribute leak + - LP: #1427438 + * gpiolib: of: Correct error handling in of_get_named_gpiod_flags + - LP: #1427438 + * ALSA: usb-audio: Add mic volume fix quirk for Logitech Webcam C210 + - LP: #1427438 + * fix deadlock in cifs_ioctl_clone() + - LP: #1427438 + * ipr: wait for aborted command responses + - LP: #1427438 + * libata: allow sata_sil24 to opt-out of tag ordered submission + - LP: #1427438 + * scripts/recordmcount.pl: There is no -m32 gcc option on Super-H anymore + - LP: #1427438 + * libata: prevent HSM state change race between ISR and PIO + - LP: #1427438 + * bus: mvebu-mbus: fix support of MBus window 13 + - LP: #1427438 + * ARM: dts: imx25: Fix PWM "per" clocks + - LP: #1427438 + * x86, boot: Skip relocs when load address unchanged + - LP: #1427438 + * x86, hyperv: Mark the Hyper-V clocksource as being continuous + - LP: #1427438 + * x86, tls, ldt: Stop checking lm in LDT_empty + - LP: #1427438 + * x86, tls: Interpret an all-zero struct user_desc as "no segment" + - LP: #1427438 + * x86/apic: Re-enable PCI_MSI support for non-SMP X86_32 + - LP: #1427438 + * x86/tsc: Change Fast TSC calibration failed from error to info + - LP: #1427438 + * dm cache: share cache-metadata object across inactive and active DM + tables + - LP: #1427438 + * dm cache: fix problematic dual use of a single migration count variable + - LP: #1427438 + * time: adjtimex: Validate the ADJ_FREQUENCY values + - LP: #1427438 + * ntp: Fixup adjtimex freq validation on 32-bit systems + - LP: #1427438 + * Linux 3.13.11-ckt16 + - LP: #1427438 + + -- Seth Forshee Tue, 03 Mar 2015 09:33:08 -0600 + +linux (3.13.0-46.79) trusty; urgency=low + + [ Upstream Kernel Changes ] + + * IB/core: Prevent integer overflow in ib_umem_get address arithmetic + - LP: #1413741 + - CVE-2015-8159 + + -- Luis Henriques Mon, 09 Mar 2015 17:42:23 +0000 + +linux (3.13.0-46.77) trusty; urgency=low + + [ Seth Forshee ] + + * Revert "ipv6: fix swapped ipv4/ipv6 mtu_reduced callbacks" + - LP: #1404558 + * Release Tracking Bug + - LP: #1427292 + + -- Seth Forshee Mon, 02 Mar 2015 11:33:20 -0600 + +linux (3.13.0-46.76) trusty; urgency=low + + [ Kamal Mostafa ] + + * Release Tracking Bug + - LP: #1426060 + + [ Upstream Kernel Changes ] + + * clocksource: arch_timer: Only use the virtual counter (CNTVCT) on arm64 + - LP: #1426043 + + -- Kamal Mostafa Thu, 26 Feb 2015 09:53:44 -0800 + +linux (3.13.0-46.75) trusty; urgency=low + + [ Seth Forshee ] + + * Release Tracking Bug + - LP: #1419963 + + [ Andy Whitcroft ] + + * [Debian] arm64 -- build ubuntu drivers + - LP: #1411284 + * hyper-v -- fix comment handing in /etc/network/interfaces + - LP: #1413020 + + [ Kamal Mostafa ] + + * [Packaging] force "dpkg-source -I -i" behavior + + [ Upstream Kernel Changes ] + + * Revert "[SCSI] mpt2sas: Remove phys on topology change." + - LP: #1419838 + * Revert "[SCSI] mpt3sas: Remove phys on topology change" + - LP: #1419838 + * Btrfs: fix transaction abortion when remounting btrfs from RW to RO + - LP: #1411320 + * Btrfs: fix a crash of clone with inline extents's split + - LP: #1413129 + * net/mlx4_en: Add VXLAN ndo calls to the PF net device ops too + - LP: #1407760 + * KVM: x86: SYSENTER emulation is broken + - LP: #1414651 + - CVE-2015-0239 + * powerpc/xmon: Fix another endiannes issue in RTAS call from xmon + - LP: #1415919 + * ipv6: fix swapped ipv4/ipv6 mtu_reduced callbacks + - LP: #1404558, #1419837 + * usb: gadget: at91_udc: move prepare clk into process context + - LP: #1419837 + * KVM: x86: Fix far-jump to non-canonical check + - LP: #1419837 + * x86/tls: Validate TLS entries to protect espfix + - LP: #1419837 + * userns: Check euid no fsuid when establishing an unprivileged uid + mapping + - LP: #1419837 + * userns: Document what the invariant required for safe unprivileged + mappings. + - LP: #1419837 + * userns: Only allow the creator of the userns unprivileged mappings + - LP: #1419837 + * x86_64, switch_to(): Load TLS descriptors before switching DS and ES + - LP: #1419837 + * isofs: Fix infinite looping over CE entries + - LP: #1419837 + * batman-adv: Calculate extra tail size based on queued fragments + - LP: #1419837 + * KEYS: close race between key lookup and freeing + - LP: #1419837 + * isofs: Fix unchecked printing of ER records + - LP: #1419837 + * x86_64, vdso: Fix the vdso address randomization algorithm + - LP: #1419837 + * groups: Consolidate the setgroups permission checks + - LP: #1419837 + * userns: Don't allow setgroups until a gid mapping has been setablished + - LP: #1419837 + * userns: Don't allow unprivileged creation of gid mappings + - LP: #1419837 + * move d_rcu from overlapping d_child to overlapping d_alias + - LP: #1419837 + * deal with deadlock in d_walk() + - LP: #1419837 + * Linux 3.13.11-ckt14 + - LP: #1419837 + * gre: fix the inner mac header in nbma tunnel xmit path + - LP: #1419838 + * netlink: Always copy on mmap TX. + - LP: #1419838 + * netlink: Don't reorder loads/stores before marking mmap netlink frame + as available + - LP: #1419838 + * in6: fix conflict with glibc + - LP: #1419838 + * tg3: tg3_disable_ints using uninitialized mailbox value to disable + interrupts + - LP: #1419838 + * batman-adv: Unify fragment size calculation + - LP: #1419838 + * batman-adv: avoid NULL dereferences and fix if check + - LP: #1419838 + * net: Fix stacked vlan offload features computation + - LP: #1419838 + * net: Reset secmark when scrubbing packet + - LP: #1419838 + * tcp: Do not apply TSO segment limit to non-TSO packets + - LP: #1419838 + * alx: fix alx_poll() + - LP: #1419838 + * team: avoid possible underflow of count_pending value for notify_peers + and mcast_rejoin + - LP: #1419838 + * enic: fix rx skb checksum + - LP: #1419838 + * net/core: Handle csum for CHECKSUM_COMPLETE VXLAN forwarding + - LP: #1419838 + * macvlan: unregister net device when netdev_upper_dev_link() fails + - LP: #1419838 + * netfilter: conntrack: disable generic tracking for known protocols + - LP: #1419838 + * xen-netfront: Fix handling packets on compound pages with skb_linearize + - LP: #1317811, #1419838 + * xen-netfront: use correct linear area after linearizing an skb + - LP: #1317811, #1419838 + * eCryptfs: Force RO mount when encrypted view is enabled + - LP: #1419838 + * smiapp: Take mutex during PLL update in sensor initialisation + - LP: #1419838 + * smiapp-pll: Correct clock debug prints + - LP: #1419838 + * sound: simplify au0828 quirk table + - LP: #1419838 + * sound: Update au0828 quirks table + - LP: #1419838 + * af9005: fix kernel panic on init if compiled without IR + - LP: #1419838 + * writeback: fix a subtle race condition in I_DIRTY clearing + - LP: #1419838 + * usb: renesas_usbhs: gadget: fix NULL pointer dereference in + ep_disable() + - LP: #1419838 + * KVM: s390: flush CPU on load control + - LP: #1419838 + * UBI: Fix double free after do_sync_erase() + - LP: #1419838 + * UBI: Fix invalid vfree() + - LP: #1419838 + * Drivers: hv: vmbus: Fix a race condition when unregistering a device + - LP: #1419838 + * driver core: Fix unbalanced device reference in drivers_probe + - LP: #1419838 + * PCI: Restore detection of read-only BARs + - LP: #1419838 + * scsi: correct return values for .eh_abort_handler implementations + - LP: #1419838 + * drm/radeon: fix typo in CI dpm disable + - LP: #1419838 + * ARM: tegra: Re-add removed SoC id macro to tegra_resume() + - LP: #1419838 + * arm64: Add COMPAT_HWCAP_LPAE + - LP: #1419838 + * genhd: check for int overflow in disk_expand_part_tbl() + - LP: #1419838 + * ftrace/x86: Add frames pointers to trampoline as necessary + - LP: #1419838 + * drm/ttm: Avoid memory allocation from shrinker functions. + - LP: #1419838 + * ASoC: sigmadsp: Refuse to load firmware files with a non-supported + version + - LP: #1419838 + * drm/radeon: work around a hw bug in MGCG on CIK + - LP: #1419838 + * Btrfs: make sure we wait on logged extents when fsycning two subvols + - LP: #1419838 + * Btrfs: do not move em to modified list when unpinning + - LP: #1419838 + * megaraid_sas: corrected return of wait_event from abort frame path + - LP: #1419838 + * ASoC: max98090: Fix ill-defined sidetone route + - LP: #1419838 + * blk-mq: use 'nr_cpu_ids' as highest CPU ID count for hwq <-> cpu map + - LP: #1419838 + * nfs41: fix nfs4_proc_layoutget error handling + - LP: #1419838 + * cdc-acm: memory leak in error case + - LP: #1419838 + * USB: cdc-acm: check for valid interfaces + - LP: #1419838 + * x86/asm/traps: Disable tracing and kprobes in fixup_bad_iret and + sync_regs + - LP: #1419838 + * uvcvideo: Fix destruction order in uvc_delete() + - LP: #1419838 + * HID: i2c-hid: fix race condition reading reports + - LP: #1419838 + * mfd: tc6393xb: Fail ohci suspend if full state restore is required + - LP: #1419838 + * serial: samsung: wait for transfer completion before clock disable + - LP: #1419838 + * mmc: dw_mmc: avoid write to CDTHRCTL on older versions + - LP: #1419838 + * Bluetooth: ath3k: Add support of MCI 13d3:3408 bt device + - LP: #1419838 + * eCryptfs: Remove buggy and unnecessary write in file name decode + routine + - LP: #1419838 + * n_tty: Fix read_buf race condition, increment read_head after pushing + data + - LP: #1419838 + * dm cache: only use overwrite optimisation for promotion when in + writeback mode + - LP: #1419838 + * dm cache: dirty flag was mistakenly being cleared when promoting via + overwrite + - LP: #1419838 + * dm bufio: fix memleak when using a dm_buffer's inline bio + - LP: #1419838 + * ath9k_hw: fix hardware queue allocation + - LP: #1419838 + * ath9k: fix BE/BK queue order + - LP: #1419838 + * ath5k: fix hardware queue index assignment + - LP: #1419838 + * tcm_loop: Fix wrong I_T nexus association + - LP: #1419838 + * iwlwifi: dvm: fix flush support for old firmware + - LP: #1419838 + * iommu/vt-d: Fix an off-by-one bug in __domain_mapping() + - LP: #1419838 + * dm crypt: use memzero_explicit for on-stack buffer + - LP: #1419838 + * mnt: Implicitly add MNT_NODEV on remount when it was implicitly added + by mount + - LP: #1419838 + * mnt: Update unprivileged remount test + - LP: #1419838 + * umount: Disallow unprivileged mount force + - LP: #1419838 + * md/raid56: Don't perform reads to support writes until stripe is ready. + - LP: #1419838 + * md/raid5: avoid livelock caused by non-aligned writes. + - LP: #1419838 + * md/raid5: fetch_block must fetch all the blocks handle_stripe_dirtying + wants. + - LP: #1419838 + * drm/i915: Disallow pin ioctl completely for kms drivers + - LP: #1419838 + * drm/vmwgfx: Don't use memory accounting for kernel-side fence objects + - LP: #1419838 + * drm/vmwgfx: Fix fence event code + - LP: #1419838 + * hp_accel: Add support for HP ZBook 15 + - LP: #1419838 + * drm/radeon: check the right ring in radeon_evict_flags() + - LP: #1419838 + * swiotlb-xen: pass dev_addr to xen_dma_unmap_page and + xen_dma_sync_single_for_cpu + - LP: #1419838 + * swiotlb-xen: call xen_dma_sync_single_for_device when appropriate + - LP: #1419838 + * clocksource: arch_timer: Fix code to use physical timers when requested + - LP: #1419838 + * ALSA: hda - Fix built-in mic at resume on Lenovo Ideapad S210 + - LP: #1419838 + * can: peak_usb: fix memset() usage + - LP: #1419838 + * can: peak_usb: fix cleanup sequence order in case of error during init + - LP: #1419838 + * ALSA: usb-audio: Don't resubmit pending URBs at MIDI error recovery + - LP: #1419838 + * KEYS: Fix stale key registration at error path + - LP: #1419838 + * thermal: Fix error path in thermal_init() + - LP: #1419838 + * blk-mq: Fix a use-after-free + - LP: #1419838 + * fs: nfsd: Fix signedness bug in compare_blob + - LP: #1419838 + * nfsd4: fix xdr4 inclusion of escaped char + - LP: #1419838 + * userns: Rename id_map_mutex to userns_state_mutex + - LP: #1419838 + * drm/i915: Don't complain about stolen conflicts on gen3 + - LP: #1419838 + * ALSA: hda - Add EAPD fixup for ASUS Z99He laptop + - LP: #1419838 + * Btrfs: fix fs corruption on transaction abort if device supports + discard + - LP: #1419838 + * ncpfs: return proper error from NCP_IOC_SETROOT ioctl + - LP: #1419838 + * drivers/rtc/rtc-sirfsoc.c: move hardware initilization earlier in probe + - LP: #1419838 + * rtc: omap: fix missing wakealarm attribute + - LP: #1419838 + * exit: pidns: alloc_pid() leaks pid_namespace if child_reaper is exiting + - LP: #1419838 + * perf/x86/intel/uncore: Make sure only uncore events are collected + - LP: #1419838 + * perf: Fix events installation during moving group + - LP: #1419838 + * KVM: nVMX: Disable unrestricted mode if ept=0 + - LP: #1419838 + * drm/i915: save/restore GMBUS freq across suspend/resume on gen4 + - LP: #1419838 + * pstore-ram: Fix hangs by using write-combine mappings + - LP: #1419838 + * pstore-ram: Allow optional mapping with pgprot_noncached + - LP: #1419838 + * userns: Add a knob to disable setgroups on a per user namespace basis + - LP: #1419838 + * userns: Allow setting gid_maps without privilege when setgroups is + disabled + - LP: #1419838 + * userns: Unbreak the unprivileged remount tests + - LP: #1419838 + * HID: i2c-hid: prevent buffer overflow in early IRQ + - LP: #1419838 + * mac80211: fix multicast LED blinking and counter + - LP: #1419838 + * cfg80211: avoid mem leak on driver hint set + - LP: #1419838 + * mtd: tests: abort torturetest on erase errors + - LP: #1419838 + * tracing/sched: Check preempt_count() for current when reading + task->state + - LP: #1419838 + * iscsi,iser-target: Initiate termination only once + - LP: #1419838 + * iser-target: Fix flush + disconnect completion handling + - LP: #1419838 + * iser-target: Parallelize CM connection establishment + - LP: #1419838 + * iser-target: Fix connected_handler + teardown flow race + - LP: #1419838 + * iser-target: Handle ADDR_CHANGE event for listener cm_id + - LP: #1419838 + * iser-target: Fix implicit termination of connections + - LP: #1419838 + * genirq: Prevent proc race against freeing of irq descriptors + - LP: #1419838 + * x86/tls: Disallow unusual TLS segments + - LP: #1419838 + * powerpc/powernv: Switch off MMU before entering nap/sleep/rvwinkle mode + - LP: #1419838 + * ARC: [nsimosci] move peripherals to match model to FPGA + - LP: #1419838 + * scsi: blacklist RSOC for Microsoft iSCSI target devices + - LP: #1419838 + * rtlwifi: rtl8192ce: Set fw_ready flag + - LP: #1419838 + * iscsi-target: Fail connection on short sendmsg writes + - LP: #1419838 + * mac80211: free management frame keys when removing station + - LP: #1419838 + * ceph: do_sync is never initialized + - LP: #1419838 + * x86/tls: Don't validate lm in set_thread_area() after all + - LP: #1419838 + * ALSA: usb-audio: extend KEF X300A FU 10 tweak to Arcam rPAC + - LP: #1419838 + * mnt: Fix a memory stomp in umount + - LP: #1419838 + * ocfs2: fix journal commit deadlock + - LP: #1419838 + * tick/powerclamp: Remove tick_nohz_idle abuse + - LP: #1419838 + * Linux 3.13.11-ckt15 + - LP: #1419838 + + [ Xiong Zhang ] + + * SAUCE: ubuntu/i915: power on sink if dpcd read fail + - LP: #1416451 + + -- Seth Forshee Mon, 09 Feb 2015 14:08:50 -0600 + +linux (3.13.0-45.74) trusty; urgency=low + + [ Seth Forshee ] + + * Release Tracking Bug + - LP: #1410384 + + [ Jesse Barnes ] + + * SAUCE: drm/i915/vlv: assert and de-assert sideband reset at boot and + resume v3 + - LP: #1401963 + + [ K. Y. Srinivasan ] + + * SAUCE: storvsc: force SPC-3 compliance on win8 and win8 r2 hosts + - LP: #1406867 + + [ Timo Aaltonen ] + + * SAUCE: Switch VLV/BYT to use i915_bdw. + - LP: #1401963 + + [ Upstream Kernel Changes ] + + * Revert "xhci: clear root port wake on bits if controller isn't wake-up + capable" + - LP: #1408779 + * KVM: PPC: BOOK3S: HV: CMA: Reserve cma region only in hypervisor mode + - LP: #1400209 + * e1000e: Fix no connectivity when driver loaded with cable out + - LP: #1400365 + * net/mlx4_core: Enable CQE/EQE stride support + - LP: #1400127 + * net/mlx4_core: Cache line EQE size support + - LP: #1400127 + * net/mlx4_en: Add mlx4_en_get_cqe helper + - LP: #1400127 + * net/mlx4_core: Introduce mlx4_get_module_info for cable module info + reading + - LP: #1400127 + * ethtool, net/mlx4_en: Cable info, get_module_info/eeprom ethtool + support + - LP: #1400127 + * net/mlx4_core: Introduce ACCESS_REG CMD and eth_prot_ctrl dev cap + - LP: #1400127 + * net/mlx4_core: Add ethernet backplane autoneg device capability + - LP: #1400127 + * ethtool, net/mlx4_en: Add 100M, 20G, 56G speeds ethtool reporting + support + - LP: #1400127 + * net/mlx4_en: Use PTYS register to query ethtool settings + - LP: #1400127 + * net/mlx4_en: Use PTYS register to set ethtool settings (Speed) + - LP: #1400127 + * net/mlx4_en: Add support for setting rxvlan offload OFF/ON + - LP: #1400127 + * net/mlx4_en: Add ethtool support for [rx|tx]vlan offload set to OFF/ON + - LP: #1400127 + * net/mlx4_core: Prevent VF from changing port configuration + - LP: #1400127 + * net/mlx4_en: mlx4_en_set_settings() always fails when autoneg is set + - LP: #1400127 + * ipv4: fix nexthop attlen check in fib_nh_match + - LP: #1408779 + * vxlan: fix a use after free in vxlan_encap_bypass + - LP: #1408779 + * vxlan: using pskb_may_pull as early as possible + - LP: #1408779 + * vxlan: fix a free after use + - LP: #1408779 + * ipv4: fix a potential use after free in ip_tunnel_core.c + - LP: #1408779 + * ax88179_178a: fix bonding failure + - LP: #1408779 + * tcp: md5: do not use alloc_percpu() + - LP: #1408779 + * ipv4: dst_entry leak in ip_send_unicast_reply() + - LP: #1408779 + * drivers/net, ipv6: Select IPv6 fragment idents for virtio UFO packets + - LP: #1408779 + * drivers/net: macvtap and tun depend on INET + - LP: #1408779 + * ip6_tunnel: Use ip6_tnl_dev_init as the ndo_init function. + - LP: #1408779 + * vti6: Use vti6_dev_init as the ndo_init function. + - LP: #1408779 + * sit: Use ipip6_tunnel_init as the ndo_init function. + - LP: #1408779 + * gre6: Move the setting of dev->iflink into the ndo_init functions. + - LP: #1408779 + * vxlan: Do not reuse sockets for a different address family + - LP: #1408779 + * net: sctp: fix memory leak in auth key management + - LP: #1408779 + * smsc911x: power-up phydev before doing a software reset. + - LP: #1408779 + * sunvdc: add cdrom and v1.1 protocol support + - LP: #1408779 + * sunvdc: compute vdisk geometry from capacity + - LP: #1408779 + * sunvdc: limit each sg segment to a page + - LP: #1408779 + * vio: fix reuse of vio_dring slot + - LP: #1408779 + * sunvdc: don't call VD_OP_GET_VTOC + - LP: #1408779 + * sparc64: Fix crashes in schizo_pcierr_intr_other(). + - LP: #1408779 + * sparc64: Do irq_{enter,exit}() around generic_smp_call_function*(). + - LP: #1408779 + * sparc32: Implement xchg and atomic_xchg using ATOMIC_HASH locks + - LP: #1408779 + * sparc64: Fix constraints on swab helpers. + - LP: #1408779 + * inetdevice: fixed signed integer overflow + - LP: #1408779 + * ipv4: Fix incorrect error code when adding an unreachable route + - LP: #1408779 + * ieee802154: fix error handling in ieee802154fake_probe() + - LP: #1408779 + * qmi_wwan: Add support for HP lt4112 LTE/HSPA+ Gobi 4G Modem + - LP: #1408779 + * pptp: fix stack info leak in pptp_getname() + - LP: #1408779 + * ipx: fix locking regression in ipx_sendmsg and ipx_recvmsg + - LP: #1408779 + * aio: fix uncorrent dirty pages accouting when truncating AIO ring + buffer + - LP: #1408779 + * spi: dw: Fix dynamic speed change. + - LP: #1408779 + * USB: serial: cp210x: add IDs for CEL MeshConnect USB Stick + - LP: #1408779 + * iio: Fix IIO_EVENT_CODE_EXTRACT_DIR bit mask + - LP: #1408779 + * usb: serial: ftdi_sio: add PIDs for Matrix Orbital products + - LP: #1408779 + * USB: keyspan: fix tty line-status reporting + - LP: #1408779 + * USB: keyspan: fix overrun-error reporting + - LP: #1408779 + * USB: ssu100: fix overrun-error reporting + - LP: #1408779 + * nfsd: correctly define v4.2 support attributes + - LP: #1408779 + * SUNRPC: Fix locking around callback channel reply receive + - LP: #1408779 + * nfsd: Fix slot wake up race in the nfsv4.1 callback code + - LP: #1408779 + * bnx2fc: do not add shared skbs to the fcoe_rx_list + - LP: #1408779 + * scsi: add Intel Multi-Flex to scsi scan blacklist + - LP: #1408779 + * ARM: 8216/1: xscale: correct auxiliary register in suspend/resume + - LP: #1408779 + * USB: xhci: don't start a halted endpoint before its new dequeue is set + - LP: #1408779 + * USB: xhci: Reset a halted endpoint immediately when we encounter a + stall. + - LP: #1408779 + * usb: xhci: rework root port wake bits if controller isn't allowed to + wakeup + - LP: #1408779 + * ALSA: hda - Limit 40bit DMA for AMD HDMI controllers + - LP: #1408779 + * PCI/MSI: Add device flag indicating that 64-bit MSIs don't work + - LP: #1408779 + * gpu/radeon: Set flag to indicate broken 64-bit MSI + - LP: #1408779 + * sound/radeon: Move 64-bit MSI quirk from arch to driver + - LP: #1408779 + * powerpc/powernv: Honor the generic "no_64bit_msi" flag + - LP: #1408779 + * powerpc/pseries: Honor the generic "no_64bit_msi" flag + - LP: #1408779 + * MIPS: Loongson: Make platform serial setup always built-in. + - LP: #1408779 + * net/ping: handle protocol mismatching scenario + - LP: #1408779 + * usb-quirks: Add reset-resume quirk for MS Wireless Laser Mouse 6000 + - LP: #1408779 + * Input: xpad - use proper endpoint type + - LP: #1408779 + * powerpc: 32 bit getcpu VDSO function uses 64 bit instructions + - LP: #1408779 + * ARM: 8222/1: mvebu: enable strex backoff delay + - LP: #1408779 + * ARM: 8226/1: cacheflush: get rid of restarting block + - LP: #1408779 + * staging: r8188eu: Add new device ID for DLink GO-USB-N150 + - LP: #1408779 + * btrfs: zero out left over bytes after processing compression streams + - LP: #1408779 + * smiapp: Only some selection targets are settable + - LP: #1408779 + * i2c: omap: fix NACK and Arbitration Lost irq handling + - LP: #1408779 + * drm/nouveau/gf116: remove copy1 engine + - LP: #1408779 + * drm/i915: More cautious with pch fifo underruns + - LP: #1408779 + * drm/i915: Unlock panel even when LVDS is disabled + - LP: #1408779 + * AHCI: Add DeviceIDs for Sunrise Point-LP SATA controller + - LP: #1408779 + * sata_fsl: fix error handling of irq_of_parse_and_map + - LP: #1408779 + * drm/radeon: kernel panic in drm_calc_vbltimestamp_from_scanoutpos with + 3.18.0-rc6 + - LP: #1408779 + * mm: frontswap: invalidate expired data on a dup-store failure + - LP: #1408779 + * mm/vmpressure.c: fix race in vmpressure_work_fn() + - LP: #1408779 + * drivers/input/evdev.c: don't kfree() a vmalloc address + - LP: #1408779 + * mm: fix swapoff hang after page migration and fork + - LP: #1408779 + * mm: fix anon_vma_clone() error treatment + - LP: #1408779 + * slab: fix nodeid bounds check for non-contiguous node IDs + - LP: #1408779 + * ahci: disable MSI on SAMSUNG 0xa800 SSD + - LP: #1408779 + * i2c: davinci: generate STP always when NACK is received + - LP: #1408779 + * ip_tunnel: the lack of vti_link_ops' dellink() cause kernel panic + - LP: #1408779 + * ipv6: gre: fix wrong skb->protocol in WCCP + - LP: #1408779 + * Fix race condition between vxlan_sock_add and vxlan_sock_release + - LP: #1408779 + * tg3: fix ring init when there are more TX than RX channels + - LP: #1408779 + * net/mlx4_core: Limit count field to 24 bits in qp_alloc_res + - LP: #1408779 + * rtnetlink: release net refcnt on error in do_setlink() + - LP: #1408779 + * net: mvneta: fix Tx interrupt delay + - LP: #1408779 + * net: mvneta: fix race condition in mvneta_tx() + - LP: #1408779 + * net: sctp: use MAX_HEADER for headroom reserve in output path + - LP: #1408779 + * Linux 3.13.11-ckt13 + - LP: #1408779 + * ipv6: fix swapped ipv4/ipv6 mtu_reduced callbacks + - LP: #1404558 + * arm64: Fix machine_shutdown() definition + - LP: #1404335 + * arm64: Fix deadlock scenario with smp_send_stop() + - LP: #1404335 + * iwlwifi: mvm: a few more SKUs for 7260 and 3160 + * iwlwifi: fix and add 7265 series HW IDs + - LP: #1408222 + + -- Seth Forshee Tue, 13 Jan 2015 11:37:56 -0600 + +linux (3.13.0-44.73) trusty; urgency=low + + [ Kamal Mostafa ] + + * Release Tracking Bug + - LP: #1402872 + + [ AceLan Kao ] + + * SAUCE: Add use_native_backlight quirk for HP ProBook 6570b + - LP: #1359010 + + [ Andy Whitcroft ] + + * Revert "SAUCE: (no-up) arm64: optimized copy_to_user and copy_from_user + assembly code" + - LP: #1398596 + * [Config] updateconfigs to balance CONFIG_SCOM_DEBUGFS + + [ Upstream Kernel Changes ] + + * iwlwifi: mvm: fix merge damage + - LP: #1393317 + * iwlwifi: remove IWL_UCODE_TLV_FLAGS_SCHED_SCAN flag + - LP: #1393317 + * iwlwifi: mvm: disable scheduled scan to prevent firmware crash + - LP: #1393317 + * iwlwifi: mvm: enable scheduled scan on newest firmware + - LP: #1393317 + * x86: kvm: use alternatives for VMCALL vs. VMMCALL if kernel text is + read-only + - LP: #1379340 + * phylib: introduce PHY_INTERFACE_MODE_XGMII for 10G PHY + - LP: #1381084 + * of: make of_get_phy_mode parse 'phy-connection-type' + - LP: #1381084 + * xen-netfront: Remove BUGs on paged skb data which crosses a page + boundary + - LP: #1275879 + * ACPI / blacklist: blacklist Win8 OSI for Dell Vostro 3546 + - LP: #1383589 + * powerpc/pseries: Fix endiannes issue in RTAS call from xmon + - LP: #1396235 + * mmc: sdhci-pci-o2micro: Fix Dell E5440 issue + - LP: #1346067 + * mfd: rtsx: Fix PM suspend for 5227 & 5249 + - LP: #1359052 + * drivers:scsi:storvsc: Fix a bug in handling ring buffer failures that + may result in I/O freeze + - LP: #1400289 + * arm64: optimized copy_to_user and copy_from_user assembly code + - LP: #1400349 + * net:socket: set msg_namelen to 0 if msg_name is passed as NULL in + msghdr struct from userland. + - LP: #1335478 + * drm/radeon: initialize sadb to NULL in the audio code + - LP: #1402714 + * powerpc/vphn: NUMA node code expects big-endian + - LP: #1401150 + * ALSA: usb-audio: Fix device_del() sysfs warnings at disconnect + - LP: #1402853 + * ALSA: hda - Add mute LED pin quirk for HP 15 touchsmart + - LP: #1334950, #1402853 + * rcu: Make callers awaken grace-period kthread + - LP: #1402853 + * rcu: Use rcu_gp_kthread_wake() to wake up grace period kthreads + - LP: #1402853 + * net: sctp: fix NULL pointer dereference in af->from_addr_param on + malformed packet + - LP: #1402853 + * KVM: x86: Don't report guest userspace emulation error to userspace + - LP: #1402853 + * [media] ttusb-dec: buffer overflow in ioctl + - LP: #1402853 + * arm64: __clear_user: handle exceptions on strb + - LP: #1402853 + * ARM: pxa: fix hang on startup with DEBUG_LL + - LP: #1402853 + * samsung-laptop: Add broken-acpi-video quirk for NC210/NC110 + - LP: #1402853 + * acer-wmi: Add Aspire 5741 to video_vendor_dmi_table + - LP: #1402853 + * acer-wmi: Add acpi_backlight=video quirk for the Acer KAV80 + - LP: #1402853 + * rbd: Fix error recovery in rbd_obj_read_sync() + - LP: #1402853 + * [media] ds3000: fix LNB supply voltage on Tevii S480 on initialization + - LP: #1402853 + * powerpc: do_notify_resume can be called with bad thread_info flags + argument + - LP: #1402853 + * USB: kobil_sct: fix non-atomic allocation in write path + - LP: #1402853 + * USB: opticon: fix non-atomic allocation in write path + - LP: #1402853 + * regulator: max77693: Fix use of uninitialized regulator config + - LP: #1402853 + * USB: cdc-acm: add device id for GW Instek AFG-2225 + - LP: #1402853 + * usb: Do not allow usb_alloc_streams on unconfigured devices + - LP: #1402853 + * usb-storage: handle a skipped data phase + - LP: #1402853 + * xhci: Switch only Intel Lynx Point-LP ports to EHCI on shutdown. + - LP: #1402853 + * xhci: no switching back on non-ULT Haswell + - LP: #1402853 + * of: Fix overflow bug in string property parsing functions + - LP: #1402853 + * spi: fsl-dspi: Fix CTAR selection + - LP: #1402853 + * Btrfs: fix kfree on list_head in btrfs_lookup_csums_range error cleanup + - LP: #1402853 + * staging:iio:ade7758: Fix NULL pointer deref when enabling buffer + - LP: #1402853 + * staging:iio:ade7758: Fix check if channels are enabled in prenable + - LP: #1402853 + * staging:iio:ade7758: Remove "raw" from channel name + - LP: #1402853 + * USB: cdc-acm: only raise DTR on transitions from B0 + - LP: #1402853 + * serial: Fix divide-by-zero fault in uart_get_divisor() + - LP: #1402853 + * tty: Fix high cpu load if tty is unreleaseable + - LP: #1402853 + * tty: Prevent "read/write wait queue active!" log flooding + - LP: #1402853 + * tty/vt: don't set font mappings on vc not supporting this + - LP: #1402853 + * spi: pxa2xx: toggle clocks on suspend if not disabled by runtime PM + - LP: #1402853 + * sysfs: driver core: Fix glue dir race condition by gdp_mutex + - LP: #1402853 + * i2c: at91: don't account as iowait + - LP: #1402853 + * nfsd: don't try to reuse an expired DRC entry off the list + - LP: #1402853 + * nfsd: don't halt scanning the DRC LRU list when there's an RC_INPROG + entry + - LP: #1402853 + * dm bufio: change __GFP_IO to __GFP_FS in shrinker callbacks + - LP: #1402853 + * xtensa: re-wire umount syscall to sys_oldumount + - LP: #1402853 + * dm raid: ensure superblock's size matches device's logical block size + - LP: #1402853 + * ahci: disable MSI instead of NCQ on Samsung pci-e SSDs on macbooks + - LP: #1402853 + * ahci: Add Device IDs for Intel Sunrise Point PCH + - LP: #1402853 + * power: charger-manager: Fix accessing invalidated power supply after + charger unbind + - LP: #1402853 + * mac80211: use secondary channel offset IE also beacons during CSA + - LP: #1402853 + * mac80211: schedule the actual switch of the station before CSA count 0 + - LP: #1402853 + * mac80211: properly flush delayed scan work on interface removal + - LP: #1402853 + * mac80211: fix use-after-free in defragmentation + - LP: #1402853 + * tun: Fix csum_start with VLAN acceleration + - LP: #1402853 + * macvtap: Fix csum_start when VLAN tags are present + - LP: #1402853 + * dm thin: grab a virtual cell before looking up the mapping + - LP: #1402853 + * KVM: x86: Fix uninitialized op->type for some immediate values + - LP: #1402853 + * crypto: caam - fix missing dma unmap on error path + - LP: #1402853 + * hwrng: pseries - port to new read API and fix stack corruption + - LP: #1402853 + * drm/radeon: set correct CE ram size for CIK + - LP: #1402853 + * drm/radeon: make sure mode init is complete in bandwidth_update + - LP: #1402853 + * drm/radeon: use gart for DMA IB tests + - LP: #1402853 + * drm/radeon: add missing crtc unlock when setting up the MC + - LP: #1402853 + * ALSA: hda_intel: Add Device IDs for Intel Sunrise Point PCH + - LP: #1402853 + * ALSA: hda_intel: Add DeviceIDs for Sunrise Point-LP + - LP: #1402853 + * Input: alps - ignore potential bare packets when device is out of sync + - LP: #1402853 + * Input: alps - allow up to 2 invalid packets without resetting device + - LP: #1402853 + * scsi: only re-lock door after EH on devices that were reset + - LP: #1402853 + * dm btree: fix a recursion depth bug in btree walking code + - LP: #1402853 + * parisc: Use compat layer for msgctl, shmat, shmctl and semtimedop + syscalls + - LP: #1402853 + * ALSA: usb-audio: Fix memory leak in FTU quirk + - LP: #1402853 + * audit: keep inode pinned + - LP: #1402853 + * nfs: fix pnfs direct write memory leak + - LP: #1402853 + * nfs: Fix use of uninitialized variable in nfs_getattr() + - LP: #1402853 + * NFSv4: Ensure that we remove NFSv4.0 delegations when state has expired + - LP: #1402853 + * NFSv4.1: nfs41_clear_delegation_stateid shouldn't trust + NFS_DELEGATED_STATE + - LP: #1402853 + * NFSv4: Fix races between nfs_remove_bad_delegation() and delegation + return + - LP: #1402853 + * NFSv4: Ensure that we call FREE_STATEID when NFSv4.x stateids are + revoked + - LP: #1402853 + * NFS: Don't try to reclaim delegation open state if recovery failed + - LP: #1402853 + * libceph: do not crash on large auth tickets + - LP: #1402853 + * ARM: 8191/1: decompressor: ensure I-side picks up relocated code + - LP: #1402853 + * ARM: 8198/1: make kuser helpers depend on MMU + - LP: #1402853 + * zram: avoid kunmap_atomic() of a NULL pointer + - LP: #1402853 + * Input: alps - ignore bad data on Dell Latitudes E6440 and E7440 + - LP: #1402853 + * firewire: cdev: prevent kernel stack leaking into ioctl arguments + - LP: #1402853 + * md: Always set RECOVERY_NEEDED when clearing RECOVERY_FROZEN + - LP: #1402853 + * nfs: Don't busy-wait on SIGKILL in __nfs_iocounter_wait + - LP: #1402853 + * target: Don't call TFO->write_pending if data_length == 0 + - LP: #1402853 + * vhost-scsi: Take configfs group dependency during + VHOST_SCSI_SET_ENDPOINT + - LP: #1402853 + * srp-target: Retry when QP creation fails with ENOMEM + - LP: #1402853 + * ASoC: fsi: remove unsupported PAUSE flag + - LP: #1402853 + * ASoC: rsnd: remove unsupported PAUSE flag + - LP: #1402853 + * ib_isert: Add max_send_sge=2 minimum for control PDU responses + - LP: #1402853 + * iser-target: Handle DEVICE_REMOVAL event on network portal listener + correctly + - LP: #1402853 + * ASoC: dpcm: Fix race between FE/BE updates and trigger + - LP: #1402853 + * mac80211: Fix regression that triggers a kernel BUG with CCMP + - LP: #1402853 + * rt2x00: do not align payload on modern H/W + - LP: #1402853 + * ath9k: Add version/revision macros for QCA9531 + - LP: #1402853 + * ath9k: Fix RTC_DERIVED_CLK usage + - LP: #1402853 + * ASoC: sgtl5000: Fix SMALL_POP bit definition + - LP: #1402853 + * ALSA: usb-audio: Add ctrl message delay quirk for Marantz/Denon devices + - LP: #1402853 + * bitops: Fix shift overflow in GENMASK macros + - LP: #1402853 + * x86: Require exact match for 'noxsave' command line option + - LP: #1402853 + * drm/i915: drop WaSetupGtModeTdRowDispatch:snb + - LP: #1402853 + * ASoC: wm_adsp: Avoid attempt to free buffers that might still be in use + - LP: #1402853 + * can: dev: avoid calling kfree_skb() from interrupt context + - LP: #1402853 + * can: esd_usb2: fix memory leak on disconnect + - LP: #1402853 + * x86, mm: Set NX across entire PMD at boot + - LP: #1402853 + * of/irq: Drop obsolete 'interrupts' vs 'interrupts-extended' text + - LP: #1402853 + * of/base: Fix PowerPC address parsing hack + - LP: #1402853 + * clockevent: sun4i: Fix race condition in the probe code + - LP: #1402853 + * MIPS: oprofile: Fix backtrace on 64-bit kernel + - LP: #1402853 + * ACPI / PM: Ignore wakeup setting if the ACPI companion can't wake up + - LP: #1402853 + * IB/isert: Adjust CQ size to HW limits + - LP: #1402853 + * drm/radeon: fix endian swapping in vbios fetch for tdp table + - LP: #1402853 + * Linux 3.13.11-ckt12 + - LP: #1402853 + * mm: Remove false WARN_ON from pagecache_isize_extended() + - LP: #1402764 + + -- Kamal Mostafa Mon, 15 Dec 2014 16:00:52 -0800 + +linux (3.13.0-43.72) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1400408 + + [ Upstream Kernel Changes ] + + * x86_64, traps: Fix the espfix64 #DF fixup and rewrite it in C + - LP: #1398795 + - CVE-2014-9090 + * x86_64, traps: Rework bad_iret + - LP: #1398795 + - CVE-2014-9090 + * x86, kvm: Clear paravirt_enabled on KVM guests for espfix32's benefit + - LP: #1400314 + - CVE-2014-8134 + + -- Luis Henriques Mon, 08 Dec 2014 17:27:21 +0000 + +linux (3.13.0-42.71) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1399663 + + [ Upstream Kernel Changes ] + + * x86_64, traps: Stop using IST for #SS + - LP: #1398795 + - CVE-2014-9090 + + -- Luis Henriques Fri, 05 Dec 2014 14:29:10 +0000 + +linux (3.13.0-41.70) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1396112 + + [ Chris J Arges ] + + * [Config] CONFIG_SCOM_DEBUGFS=y for powerpc/powerpc64-smp + ppc64el/generic + - LP: #1395855 + + [ Upstream Kernel Changes ] + + * Revert "KVM: x86: Handle errors when RIP is set during far jumps" + - LP: #1393477 + * Revert "net/macb: add pinctrl consumer support" + - LP: #1393477 + * Revert "iwlwifi: mvm: treat EAPOLs like mgmt frames wrt rate" + - LP: #1393477 + * Revert "ipmi: simplify locking" + - LP: #1383921 + * ACPI / blacklist: add Win8 OSI quirks for some Dell laptop models + - LP: #1339456 + * ACPI / battery: Accelerate battery resume callback + - LP: #838543 + * tools: cpu-hotplug fix unexpected operator error + * netlink: reset network header before passing to taps + - LP: #1393477 + * rtnetlink: fix VF info size + - LP: #1393477 + * myri10ge: check for DMA mapping errors + - LP: #1393477 + * tcp: don't use timestamp from repaired skb-s to calculate RTT (v2) + - LP: #1393477 + * sit: Fix ipip6_tunnel_lookup device matching criteria + - LP: #1393477 + * tcp: fix tcp_release_cb() to dispatch via address family for + mtu_reduced() + - LP: #1393477 + * tcp: fix ssthresh and undo for consecutive short FRTO episodes + - LP: #1393477 + * packet: handle too big packets for PACKET_V3 + - LP: #1393477 + * openvswitch: fix panic with multiple vlan headers + - LP: #1393477 + * vxlan: fix incorrect initializer in union vxlan_addr + - LP: #1393477 + * l2tp: fix race while getting PMTU on PPP pseudo-wire + - LP: #1393477 + * bonding: fix div by zero while enslaving and transmitting + - LP: #1393477 + * bridge: Check if vlan filtering is enabled only once. + - LP: #1393477 + * bridge: Fix br_should_learn to check vlan_enabled + - LP: #1393477 + * net: allow macvlans to move to net namespace + - LP: #1393477 + * tg3: Work around HW/FW limitations with vlan encapsulated frames + - LP: #1393477 + * tg3: Allow for recieve of full-size 8021AD frames + - LP: #1393477 + * xfrm: Generate blackhole routes only from route lookup functions + - LP: #1393477 + * xfrm: Generate queueing routes only from route lookup functions + - LP: #1393477 + * macvtap: Fix race between device delete and open. + - LP: #1393477 + * gro: fix aggregation for skb using frag_list + - LP: #1393477 + * hyperv: Fix a bug in netvsc_start_xmit() + - LP: #1393477 + * ip6_gre: fix flowi6_proto value in xmit path + - LP: #1393477 + * team: avoid race condition in scheduling delayed work + - LP: #1393477 + * sctp: handle association restarts when the socket is closed. + - LP: #1393477 + * tcp: fixing TLP's FIN recovery + - LP: #1393477 + * sparc64: Do not disable interrupts in nmi_cpu_busy() + - LP: #1393477 + * sparc64: Fix pcr_ops initialization and usage bugs. + - LP: #1393477 + * sparc32: dma_alloc_coherent must honour gfp flags + - LP: #1393477 + * sparc64: sun4v TLB error power off events + - LP: #1393477 + * sparc64: Fix corrupted thread fault code. + - LP: #1393477 + * sparc64: find_node adjustment + - LP: #1393477 + * sparc64: Move request_irq() from ldc_bind() to ldc_alloc() + - LP: #1393477 + * sparc: Let memset return the address argument + - LP: #1393477 + * sparc64: Fix reversed start/end in flush_tlb_kernel_range() + - LP: #1393477 + * sparc64: Fix lockdep warnings on reboot on Ultra-5 + - LP: #1393477 + * sparc64: Fix FPU register corruption with AES crypto offload. + - LP: #1393477 + * sparc64: Do not define thread fpregs save area as zero-length array. + - LP: #1393477 + * sparc64: Fix hibernation code refrence to PAGE_OFFSET. + - LP: #1393477 + * sparc64: correctly recognise M6 and M7 cpu type + - LP: #1393477 + * sparc64: support M6 and M7 for building CPU distribution map + - LP: #1393477 + * sparc64: cpu hardware caps support for sparc M6 and M7 + - LP: #1393477 + * sparc64: T5 PMU + - LP: #1393477 + * sparc64: Switch to 4-level page tables. + - LP: #1393477 + * sparc64: Define VA hole at run time, rather than at compile time. + - LP: #1393477 + * sparc64: Adjust KTSB assembler to support larger physical addresses. + - LP: #1393477 + * sparc64: Fix physical memory management regressions with large + max_phys_bits. + - LP: #1393477 + * sparc64: Use kernel page tables for vmemmap. + - LP: #1393477 + * sparc64: Increase MAX_PHYS_ADDRESS_BITS to 53. + - LP: #1393477 + * sparc64: Adjust vmalloc region size based upon available virtual + address bits. + - LP: #1393477 + * sparc64: sparse irq + - LP: #1393477 + * sparc64: Kill unnecessary tables and increase MAX_BANKS. + - LP: #1393477 + * sparc64: Increase size of boot string to 1024 bytes + - LP: #1393477 + * sparc64: Fix register corruption in top-most kernel stack frame during + boot. + - LP: #1393477 + * sparc64: Implement __get_user_pages_fast(). + - LP: #1393477 + * ext4: check EA value offset when loading + - LP: #1393477 + * jbd2: free bh when descriptor block checksum fails + - LP: #1393477 + * ext4: don't check quota format when there are no quota files + - LP: #1393477 + * target: Fix queue full status NULL pointer for SCF_TRANSPORT_TASK_SENSE + - LP: #1393477 + * vfs: fix data corruption when blocksize < pagesize for mmaped data + - LP: #1393477 + * ext4: fix mmap data corruption when blocksize < pagesize + - LP: #1393477 + * ext4: grab missed write_count for EXT4_IOC_SWAP_BOOT + - LP: #1393477 + * qla_target: don't delete changed nacls + - LP: #1393477 + * target: Fix APTPL metadata handling for dynamic MappedLUNs + - LP: #1393477 + * iser-target: Disable TX completion interrupt coalescing + - LP: #1393477 + * ext4: don't orphan or truncate the boot loader inode + - LP: #1393477 + * ext4: add ext4_iget_normal() which is to be used for dir tree lookups + - LP: #1393477 + * ext4: fix reservation overflow in ext4_da_write_begin + - LP: #1393477 + * ext4: Replace open coded mdata csum feature to helper function + - LP: #1393477 + * ext4: move error report out of atomic context in + ext4_init_block_bitmap() + - LP: #1393477 + * ARC: [nsimosci] Allow "headless" models to boot + - LP: #1393477 + * ARC: Update order of registers in KGDB to match GDB 7.5 + - LP: #1393477 + * ext4: check s_chksum_driver when looking for bg csum presence + - LP: #1393477 + * drm/radeon: fix speaker allocation setup + - LP: #1393477 + * drm/radeon: use gart memory for DMA ring tests + - LP: #1393477 + * compiler: define OPTIMIZER_HIDE_VAR() macro + - LP: #1393477 + * random: add and use memzero_explicit() for clearing data + - LP: #1393477 + * ALSA: pcm: use the same dma mmap codepath both for arm and arm64 + - LP: #1393477 + * ALSA: ALC283 codec - Avoid pop noise on headphones during + suspend/resume + - LP: #1393477 + * ALSA: usb-audio: Add support for Steinberg UR22 USB interface + - LP: #1393477 + * ALSA: hda - hdmi: Fix missing ELD change event on plug/unplug + - LP: #1393477 + * arm64: compat: fix compat types affecting struct compat_elf_prpsinfo + - LP: #1393477 + * freezer: Do not freeze tasks killed by OOM killer + - LP: #1393477 + * OOM, PM: OOM killed task shouldn't escape PM suspend + - LP: #1393477 + * qxl: don't create too large primary surface + - LP: #1393477 + * MIPS: tlbex: Properly fix HUGE TLB Refill exception handler + - LP: #1393477 + * drm/cirrus: bind also to qemu-xen-traditional + - LP: #1393477 + * cpufreq: intel_pstate: Fix setting max_perf_pct in performance policy + - LP: #1393477 + * cpufreq: expose scaling_cur_freq sysfs file for set_policy() drivers + - LP: #1393477 + * cpufreq: intel_pstate: Reflect current no_turbo state correctly + - LP: #1393477 + * intel_pstate: Don't lose sysfs settings during cpu offline + - LP: #1393477 + * intel_pstate: Fix BYT frequency reporting + - LP: #1393477 + * intel_pstate: Correct BYT VID values. + - LP: #1393477 + * MIPS: ftrace: Fix a microMIPS build problem + - LP: #1393477 + * kvm: x86: don't kill guest on unknown exit reason + - LP: #1393477 + * kvm: fix excessive pages un-pinning in kvm_iommu_map error path. + - LP: #1393477 + * KVM: x86: use new CS.RPL as CPL during task switch + - LP: #1393477 + * KVM: x86: Handle errors when RIP is set during far jumps + - LP: #1393477 + * KVM: x86: Fix far-jump to non-canonical check + - LP: #1393477 + * staging:iio:ad5933: Fix NULL pointer deref when enabling buffer + - LP: #1393477 + * staging:iio:ad5933: Drop "raw" from channel names + - LP: #1393477 + * iio: st_sensors: Fix buffer copy + - LP: #1393477 + * iio: mxs-lradc: Propagate the real error code on platform_get_irq() + failure + - LP: #1393477 + * iio: adc: mxs-lradc: Disable the clock on probe failure + - LP: #1393477 + * spi: pl022: Fix incorrect dma_unmap_sg + - LP: #1393477 + * mac80211: fix typo in starting baserate for rts_cts_rate_idx + - LP: #1393477 + * usb: dwc3: gadget: fix set_halt() bug with pending transfers + - LP: #1393477 + * usb: gadget: function: acm: make f_acm pass USB20CV Chapter9 + - LP: #1393477 + * ext3: Don't check quota format when there are no quota files + - LP: #1393477 + * quota: Properly return errors from dquot_writeback_dquots() + - LP: #1393477 + * USB: serial: cp210x: add Silicon Labs 358x VID and PID + - LP: #1393477 + * usb: serial: ftdi_sio: add Awinda Station and Dongle products + - LP: #1393477 + * usb: option: add support for Telit LE910 + - LP: #1393477 + * USB: option: add Haier CE81B CDMA modem + - LP: #1393477 + * x86, apic: Handle a bad TSC more gracefully + - LP: #1393477 + * i3200_edac: Report CE events properly + - LP: #1393477 + * i82860_edac: Report CE events properly + - LP: #1393477 + * cpc925_edac: Report UE events properly + - LP: #1393477 + * e7xxx_edac: Report CE events properly + - LP: #1393477 + * scsi: Fix error handling in SCSI_IOCTL_SEND_COMMAND + - LP: #1393477 + * usb: serial: ftdi_sio: add "bricked" FTDI device PID + - LP: #1393477 + * usb: musb: cppi41: restart hrtimer only if not yet done + - LP: #1393477 + * usb: gadget: udc: core: fix kernel oops with soft-connect + - LP: #1393477 + * nfsd4: fix crash on unknown operation number + - LP: #1393477 + * iwlwifi: configure the LTR + - LP: #1393477 + * mac80211: add vif to flush call + - LP: #1393477 + * iwlwifi: dvm: drop non VO frames when flushing + - LP: #1393477 + * usb: dwc3: gadget: Properly initialize LINK TRB + - LP: #1393477 + * Input: i8042 - quirks for Fujitsu Lifebook A544 and Lifebook AH544 + - LP: #1393477 + * posix-timers: Fix stack info leak in timer_create() + - LP: #1393477 + * futex: Fix a race condition between REQUEUE_PI and task death + - LP: #1393477 + * PM / Sleep: fix recovery during resuming from hibernation + - LP: #1393477 + * ALSA: pcm: Zero-clear reserved fields of PCM status ioctl in compat + mode + - LP: #1393477 + * ima: check xattr value length and type in the ima_inode_setxattr() + - LP: #1393477 + * evm: check xattr value length and type in evm_inode_setxattr() + - LP: #1393477 + * drm/radeon/dpm: disable ulv support on SI + - LP: #1393477 + * drm/radeon: dpm fixes for asrock systems + - LP: #1393477 + * drm/radeon: remove invalid pci id + - LP: #1393477 + * x86, pageattr: Prevent overflow in slow_virt_to_phys() for X86_PAE + - LP: #1393477 + * cgroup/kmemleak: add kmemleak_free() for cgroup deallocations. + - LP: #1393477 + * mm: free compound page with correct order + - LP: #1393477 + * mm, thp: fix collapsing of hugepages on madvise + - LP: #1393477 + * lib/bitmap.c: fix undefined shift in __bitmap_shift_{left|right}() + - LP: #1393477 + * ext4: fix overflow when updating superblock backups after resize + - LP: #1393477 + * ext4: fix oops when loading block bitmap failed + - LP: #1393477 + * ext4: enable journal checksum when metadata checksum feature enabled + - LP: #1393477 + * ext4: bail out from make_indexed_dir() on first error + - LP: #1393477 + * PCI: Rename sysfs 'enabled' file back to 'enable' + - LP: #1393477 + * wireless: rt2x00: add new rt2800usb device + - LP: #1393477 + * fs: allow open(dir, O_TMPFILE|..., 0) with mode 0 + - LP: #1393477 + * tracing/syscalls: Ignore numbers outside NR_syscalls' range + - LP: #1393477 + * x86_64, entry: Fix out of bounds read on sysenter + - LP: #1393477 + * ACPI / EC: Add support to disallow QR_EC to be issued when SCI_EVT + isn't set + - LP: #1393477 + * ACPI / EC: Fix regression due to conflicting firmware behavior between + Samsung and Acer. + - LP: #1393477 + * net: sctp: fix skb_over_panic when receiving malformed ASCONF chunks + - LP: #1393477 + * net: sctp: fix panic on duplicate ASCONF chunks + - LP: #1393477 + * net: sctp: fix remote memory pressure from excessive queueing + - LP: #1393477 + * Linux 3.13.11.11 + - LP: #1393477 + * MAINTAINERS: Update APM X-Gene section + - LP: #1381084 + * Documentation: dts: Update section header for APM X-Gene + - LP: #1381084 + * dtb: Add 10GbE node to APM X-Gene SoC device tree + - LP: #1381084 + * drivers: net: xgene: Preparing for adding 10GbE support + - LP: #1381084 + * drivers: net: xgene: Add 10GbE support + - LP: #1381084 + * drivers: net: xgene: Add 10GbE ethtool support + - LP: #1381084 + * dtb: Add SGMII based 1GbE node to APM X-Gene SoC device tree + - LP: #1381216 + * drivers: net: xgene: Preparing for adding SGMII based 1GbE + - LP: #1381216 + * drivers: net: xgene: Add SGMII based 1GbE support + - LP: #1381216 + * drivers: net: xgene: Add SGMII based 1GbE ethtool support + - LP: #1381216 + * drivers: net: xgene: Rewrite buggy loop in xgene_enet_ecc_init() + - LP: #1381216 + * dtb: xgene: fix: Backward compatibility with older firmware + - LP: #1381084, #1381216 + * drivers: net: xgene: Backward compatibility with older firmware + - LP: #1381084, #1381216 + * drivers: net: xgene: fix: Use separate resources + - LP: #1381216 + * HID: Add the transport-driver functions to the HIDP driver. + - LP: #1393764 + * ipc: fix compat msgrcv with negative msgtyp + - LP: #1393355 + + -- Luis Henriques Tue, 25 Nov 2014 12:07:01 +0000 + +linux (3.13.0-40.69) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - re-used previous tracking bug + + [ Upstream Kernel Changes ] + + * regmap: fix kernel hang on regmap_bulk_write with zero val_count. + + -- Luis Henriques Thu, 13 Nov 2014 17:13:01 +0000 + +linux (3.13.0-40.68) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1388943 + * SAUCE: DEP8 test to run our regression tests + - LP: #1385330 + * SAUCE: The very first thing we should do when testing is make sure we + are testing the correct kernel + - LP: #1385330 + + [ dann frazier ] + + * [Config] Disable CONFIG_IPMI_SI_PROBE_DEFAULTS on armhf and arm64 + - LP: #1388952 + + [ Duc Dang ] + + * SAUCE: (no-up) [PCIE] APM X-Gene: Remove debug messages in MSI + interrupt handler path. + - LP: #1382244 + * SAUCE: (no-up) PCI: X-Gene: Fix max payload size and phantom function + configuration + - LP: #1386261 + + [ McAulay, Alistair ] + + * SAUCE: drm/i915: Rework GPU reset sequence to match driver load & thaw + - LP: #1384469 + + [ Timo Aaltonen ] + + * SAUCE: i915_bdw: Fix cherry-pick typo + - LP: #1384469 + + [ Upstream Kernel Changes ] + + * Revert "mac80211: disable uAPSD if all ACs are under ACM" + - LP: #1381234 + * Revert "iwlwifi: dvm: don't enable CTS to self" + - LP: #1381234 + * Revert "lzo: properly check for overruns" + - LP: #1387886 + * drm/i915: provide interface for audio driver to query cdclk + - LP: #1381168 + * regulatory: add NUL to alpha2 + - LP: #1381234 + * percpu: fix pcpu_alloc_pages() failure path + - LP: #1381234 + * percpu: perform tlb flush after pcpu_map_pages() failure + - LP: #1381234 + * cgroup: reject cgroup names with '\n' + - LP: #1381234 + * vfs: add d_is_dir() + - LP: #1381234 + * CIFS: Fix directory rename error + - LP: #1381234 + * usb: phy: twl4030-usb: Fix lost interrupts after ID pin goes down + - LP: #1381234 + * rtlwifi: rtl8192cu: Add new ID + - LP: #1381234 + * CIFS: Fix wrong restart readdir for SMB1 + - LP: #1381234 + * CIFS: Fix wrong filename length for SMB2 + - LP: #1381234 + * ahci: Add Device IDs for Intel 9 Series PCH + - LP: #1381234 + * ata_piix: Add Device IDs for Intel 9 Series PCH + - LP: #1381234 + * USB: zte_ev: fix removed PIDs + - LP: #1381234 + * USB: ftdi_sio: add support for NOVITUS Bono E thermal printer + - LP: #1381234 + * USB: sierra: avoid CDC class functions on "68A3" devices + - LP: #1381234 + * USB: sierra: add 1199:68AA device ID + - LP: #1381234 + * iommu/arm-smmu: fix programming of SMMU_CBn_TCR for stage 1 + - LP: #1381234 + * iommu/arm-smmu: remove pgtable_page_{c,d}tor() + - LP: #1381234 + * usb: gadget: fusb300_udc.h: Fix typo in include guard + - LP: #1381234 + * usb: phy: tegra: Avoid use of sizeof(void) + - LP: #1381234 + * arm64: use irq_set_affinity with force=false when migrating irqs + - LP: #1381234 + * block: Fix dev_t minor allocation lifetime + - LP: #1381234 + * usb: dwc3: core: fix order of PM runtime calls + - LP: #1381234 + * usb: dwc3: core: fix ordering for PHY suspend + - LP: #1381234 + * usb: dwc3: omap: fix ordering for runtime pm calls + - LP: #1381234 + * iommu/fsl: Fix warning resulting from adding PCI device twice + - LP: #1381234 + * ahci: add pcid for Marvel 0x9182 controller + - LP: #1381234 + * drm/i915: Fix EIO/wedged handling in gem fault handler + - LP: #1381234 + * ACPI / RTC: Fix CMOS RTC opregion handler accesses to wrong addresses + - LP: #1381234 + * drm/i915: Evict CS TLBs between batches + - LP: #1381234 + * drm/i915: Wait for vblank before enabling the TV encoder + - LP: #1381234 + * lockd: fix rpcbind crash on lockd startup failure + - LP: #1381234 + * drm/radeon: fix semaphore value init + - LP: #1381234 + * drm/radeon: add connector quirk for fujitsu board + - LP: #1381234 + * imx-drm: ipuv3-plane: fix ipu_plane_dpms() + - LP: #1381234 + * usb: host: xhci: fix compliance mode workaround + - LP: #1381234 + * Input: elantech - fix detection of touchpad on ASUS s301l + - LP: #1381234 + * USB: ftdi_sio: Add support for GE Healthcare Nemo Tracker device + - LP: #1381234 + * uwb: init beacon cache entry before registering uwb device + - LP: #1381234 + * nfs: fix kernel warning when removing proc entry + - LP: #1381234 + * drm/radeon/dpm: set the thermal type properly for special configs + - LP: #1381234 + * dm cache: fix race causing dirty blocks to be marked as clean + - LP: #1381234 + * libceph: gracefully handle large reply messages from the mon + - LP: #1381234 + * Input: serport - add compat handling for SPIOCSTYPE ioctl + - LP: #1381234 + * usb: hub: take hub->hdev reference when processing from eventlist + - LP: #1381234 + * eventpoll: fix uninitialized variable in epoll_ctl + - LP: #1381234 + * kcmp: fix standard comparison bug + - LP: #1381234 + * fsnotify/fdinfo: use named constants instead of hardcoded values + - LP: #1381234 + * fs/notify: don't show f_handle if exportfs_encode_inode_fh failed + - LP: #1381234 + * arm64: flush TLS registers during exec + - LP: #1381234 + * storage: Add single-LUN quirk for Jaz USB Adapter + - LP: #1381234 + * xhci: Fix null pointer dereference if xhci initialization fails + - LP: #1381234 + * usb: xhci: Fix OOPS in xhci error handling code + - LP: #1381234 + * xhci: fix oops when xhci resumes from hibernate with hw lpm capable + devices + - LP: #1381234 + * drm/ast: open key before detect chips + - LP: #1381234 + * drm/ast: AST2000 cannot be detected correctly + - LP: #1381234 + * futex: Unlock hb->lock in futex_wait_requeue_pi() error path + - LP: #1381234 + * jiffies: Fix timeval conversion to jiffies + - LP: #1381234 + * alarmtimer: Return relative times in timer_gettime + - LP: #1381234 + * alarmtimer: Do not signal SIGEV_NONE timers + - LP: #1381234 + * alarmtimer: Lock k_itimer during timer callback + - LP: #1381234 + * parisc: Implement new LWS CAS supporting 64 bit operations. + - LP: #1381234 + * don't bugger nd->seq on set_root_rcu() from follow_dotdot_rcu() + - LP: #1381234 + * be careful with nd->inode in path_init() and follow_dotdot_rcu() + - LP: #1381234 + * iio:inkern: fix overwritten -EPROBE_DEFER in of_iio_channel_get_by_name + - LP: #1381234 + * iio:trigger: modify return value for iio_trigger_get + - LP: #1381234 + * iio: accel: bma180: Fix indio_dev->trig assignment + - LP: #1381234 + * iio: adc: ad_sigma_delta: Fix indio_dev->trig assignment + - LP: #1381234 + * iio: hid_sensor_hub: Fix indio_dev->trig assignment + - LP: #1381234 + * iio: st_sensors: Fix indio_dev->trig assignment + - LP: #1381234 + * iio: gyro: itg3200: Fix indio_dev->trig assignment + - LP: #1381234 + * iio: inv_mpu6050: Fix indio_dev->trig assignment + - LP: #1381234 + * iio: meter: ade7758: Fix indio_dev->trig assignment + - LP: #1381234 + * MIPS: ZBOOT: add missing include + - LP: #1381234 + * spi: fsl: Don't use devm_kzalloc in master->setup callback + - LP: #1381234 + * spi: dw: Don't use devm_kzalloc in master->setup callback + - LP: #1381234 + * ARM: 8133/1: use irq_set_affinity with force=false when migrating irqs + - LP: #1381234 + * cx18: fix kernel oops with tda8290 tuner + - LP: #1381234 + * ASoC: davinci-mcasp: Correct rx format unit configuration + - LP: #1381234 + * spi: sirf: enable RX_IO_DMA_INT interrupt + - LP: #1381234 + * perf: Fix a race condition in perf_remove_from_context() + - LP: #1381234 + * ASoC: samsung-i2s: Maintain CDCLK settings across + i2s_{shutdown/startup} + - LP: #1381234 + * ASoC: samsung-i2s: Check secondary DAI exists before referencing + - LP: #1381234 + * ALSA: hda - Fix invalid pin powermap without jack detection + - LP: #1381234 + * Input: atkbd - do not try 'deactivate' keyboard on any LG laptops + - LP: #1381234 + * Input: i8042 - add Fujitsu U574 to no_timeout dmi table + - LP: #1381234 + * Input: i8042 - add nomux quirk for Avatar AVIU-145A6 + - LP: #1381234 + * iio: adc: at91: don't use the last converted data register + - LP: #1381234 + * iio:magnetometer: bugfix magnetometers gain values + - LP: #1381234 + * drm/i915: Fix SRC_COPY width on 830/845g + - LP: #1381234 + * Target/iser: Get isert_conn reference once got to connected_handler + - LP: #1381234 + * Target/iser: Don't put isert_conn inside disconnected handler + - LP: #1381234 + * ARM: 8148/1: flush TLS and thumbee register state during exec + - LP: #1381234 + * x86, ia64: Move EFI_FB vga_default_device() initialization to + pci_vga_fixup() + - LP: #1381234 + * vgaarb: Don't default exclusively to first video device with mem+io + - LP: #1381234 + * iscsi-target: Fix memory corruption in + iscsit_logout_post_handler_diffcid + - LP: #1381234 + * iscsi-target: avoid NULL pointer in iscsi_copy_param_list failure + - LP: #1381234 + * NFSv4: nfs4_state_manager() vs. nfs_server_remove_lists() + - LP: #1381234 + * NFSv4: Fix another bug in the close/open_downgrade code + - LP: #1381234 + * drm/radeon: don't reset dma on NI/SI init + - LP: #1381234 + * drm/radeon: don't reset sdma on CIK init + - LP: #1381234 + * drm/radeon: don't reset dma on r6xx-evergreen init + - LP: #1381234 + * vgaswitcheroo: add vga_switcheroo_fini_domain_pm_ops + - LP: #1381234 + * drm/radeon/px: fix module unload + - LP: #1381234 + * drm/nouveau/runpm: fix module unload + - LP: #1381234 + * libiscsi: fix potential buffer overrun in __iscsi_conn_send_pdu + - LP: #1381234 + * USB: EHCI: unlink QHs even after the controller has stopped + - LP: #1381234 + * USB: storage: Add quirk for Adaptec USBConnect 2000 USB-to-SCSI Adapter + - LP: #1381234 + * USB: storage: Add quirk for Ariston Technologies iConnect USB to SCSI + adapter + - LP: #1381234 + * USB: storage: Add quirks for Entrega/Xircom USB to SCSI converters + - LP: #1381234 + * drm/nouveau: ltc/gf100-: fix cbc issues on certain boards + - LP: #1381234 + * iwlwifi: increase DEFAULT_MAX_TX_POWER + - LP: #1381234 + * iwlwifi: mvm: treat EAPOLs like mgmt frames wrt rate + - LP: #1381234 + * workqueue: apply __WQ_ORDERED to create_singlethread_workqueue() + - LP: #1381234 + * can: flexcan: mark TX mailbox as TX_INACTIVE + - LP: #1381234 + * can: flexcan: correctly initialize mailboxes + - LP: #1381234 + * can: flexcan: implement workaround for errata ERR005829 + - LP: #1381234 + * can: flexcan: put TX mailbox into TX_INACTIVE mode after tx-complete + - LP: #1381234 + * can: at91_can: add missing prepare and unprepare of the clock + - LP: #1381234 + * IB/qib: Correct reference counting in debugfs qp_stats + - LP: #1381234 + * videobuf2-dma-sg: fix for wrong GFP mask to sg_alloc_table_from_pages + - LP: #1381234 + * vb2: fix plane index sanity check in vb2_plane_cookie() + - LP: #1381234 + * adv7604: fix inverted condition + - LP: #1381234 + * md/raid1: intialise start_next_window for READ case to avoid hang + - LP: #1381234 + * md/raid1: be more cautious where we read-balance during resync. + - LP: #1381234 + * md/raid1: clean up request counts properly in close_sync() + - LP: #1381234 + * md/raid1: make sure resync waits for conflicting writes to complete. + - LP: #1381234 + * md/raid1: Don't use next_resync to determine how far resync has + progressed + - LP: #1381234 + * md/raid1: update next_resync under resync_lock. + - LP: #1381234 + * md/raid1: count resync requests in nr_pending. + - LP: #1381234 + * md/raid1: fix_read_error should act on all non-faulty devices. + - LP: #1381234 + * ALSA: pcm: fix fifo_size frame calculation + - LP: #1381234 + * Fix nasty 32-bit overflow bug in buffer i/o code. + - LP: #1381234 + * drm/radeon/cik: use a separate counter for CP init timeout + - LP: #1381234 + * parisc: Only use -mfast-indirect-calls option for 32-bit kernel builds + - LP: #1381234 + * sched: Fix unreleased llc_shared_mask bit during CPU hotplug + - LP: #1381234 + * MIPS: mcount: Adjust stack pointer for static trace in MIPS32 + - LP: #1381234 + * nilfs2: fix data loss with mmap() + - LP: #1381234 + * ocfs2/dlm: do not get resource spinlock if lockres is new + - LP: #1381234 + * mm, slab: initialize object alignment on cache creation + - LP: #1381234 + * mm: softdirty: keep bit when zapping file pte + - LP: #1381234 + * shmem: fix nlink for rename overwrite directory + - LP: #1381234 + * ARM: 8165/1: alignment: don't break misaligned NEON load/store + - LP: #1381234 + * ASoC: core: fix possible ZERO_SIZE_PTR pointer dereferencing error. + - LP: #1381234 + * cpufreq: integrator: fix integrator_cpufreq_remove return type + - LP: #1381234 + * drm/i915: Flush the PTEs after updating them before suspend + - LP: #1381234 + * ARM: 8178/1: fix set_tls for !CONFIG_KUSER_HELPERS + - LP: #1381234 + * md/raid5: disable 'DISCARD' by default due to safety concerns. + - LP: #1381234 + * mm: migrate: Close race between migration completion and mprotect + - LP: #1381234 + * mm: numa: Do not mark PTEs pte_numa when splitting huge pages + - LP: #1381234 + * Fix problem recognizing symlinks + - LP: #1381234 + * mm: memcontrol: do not iterate uninitialized memcgs + - LP: #1381234 + * perf: fix perf bug in fork() + - LP: #1381234 + * mm: page_alloc: fix zone allocation fairness on UP + - LP: #1381234 + * init/Kconfig: Hide printk log config if CONFIG_PRINTK=n + - LP: #1381234 + * init/Kconfig: Fix HAVE_FUTEX_CMPXCHG to not break up the EXPERT menu + - LP: #1381234 + * genhd: fix leftover might_sleep() in blk_free_devt() + - LP: #1381234 + * Linux 3.13.11.9 + - LP: #1381234 + * NVMe: Initialize device reference count earlier + - LP: #1382221 + * nfs: fix duplicate proc entries + - LP: #1376245 + * xfs: xfs_dir2_block_to_sf temp buffer allocation fails + - LP: #1382333 + * UPSTREAM: kernel: Mark function as static in kernel/seccomp.c + - LP: #1379020 + * ARM: 8087/1: ptrace: reload syscall number after secure_computing() + check + - LP: #1379020 + * seccomp: create internal mode-setting function + - LP: #1379020 + * seccomp: extract check/assign mode helpers + - LP: #1379020 + * seccomp: split mode setting routines + - LP: #1379020 + * seccomp: add "seccomp" syscall + - LP: #1379020 + * ARM: add seccomp syscall + - LP: #1379020 + * MIPS: add seccomp syscall + - LP: #1379020 + * sched: move no_new_privs into new atomic flags + - LP: #1379020 + * seccomp: split filter prep from check and apply + - LP: #1379020 + * seccomp: introduce writer locking + - LP: #1379020 + * seccomp: allow mode setting across threads + - LP: #1379020 + * seccomp: implement SECCOMP_FILTER_FLAG_TSYNC + - LP: #1379020 + * seccomp: Replace BUG(!spin_is_locked()) with assert_spin_lock + - LP: #1379020 + * fs: Add a missing permission check to do_umount + - LP: #1383358 + - CVE-2014-7975 + * mfd: rtsx_pcr: Fix MSI enable error handling + - LP: #1366841 + * xen/balloon: Don't continue ballooning when BP_ECANCELED is encountered + - LP: #1304001 + * Bluetooth: Fix HCI H5 corrupted ack value + - LP: #1387886 + * dmaengine: fix xor sources continuation + - LP: #1387886 + * siano: add support for PCTV 77e + - LP: #1387886 + * em28xx-v4l: give back all active video buffers to the vb2 core properly + on streaming stop + - LP: #1387886 + * em28xx-v4l: fix video buffer field order reporting in progressive mode + - LP: #1387886 + * crypto: caam - fix addressing of struct member + - LP: #1387886 + * x86, fpu: shift drop_init_fpu() from save_xstate_sig() to + handle_signal() + - LP: #1387886 + * x86, fpu: __restore_xstate_sig()->math_state_restore() needs + preempt_disable() + - LP: #1387886 + * KVM: do not bias the generation number in kvm_current_mmio_generation + - LP: #1387886 + * kvm: fix potentially corrupt mmio cache + - LP: #1387886 + * kvm: x86: fix stale mmio cache bug + - LP: #1387886 + * UBIFS: fix free log space calculation + - LP: #1387886 + * Bluetooth: Fix issue with USB suspend in btusb driver + - LP: #1387886 + * mmc: rtsx_pci_sdmmc: fix incorrect last byte in R2 response + - LP: #1387886 + * KVM: s390: unintended fallthrough for external call + - LP: #1387886 + * UBI: add missing kmem_cache_free() in process_pool_aeb error path + - LP: #1387886 + * PCI: Increase IBM ipr SAS Crocodile BARs to at least system page size + - LP: #1387886 + * drbd: compute the end before rb_insert_augmented() + - LP: #1387886 + * Bluetooth: Fix setting correct security level when initiating SMP + - LP: #1387886 + * mmc: tmio: prevent endless loop in tmio_mmc_set_clock() + - LP: #1387886 + * iwlwifi: Add missing PCI IDs for the 7260 series + - LP: #1387886 + * media: usb: uvc: add a quirk for Dell XPS M1330 webcam + - LP: #1387886 + * USB: serial: cp210x: added Ketra N1 wireless interface support + - LP: #1387886 + * USB: cp210x: add support for Seluxit USB dongle + - LP: #1387886 + * PCI: Generate uppercase hex for modalias interface class + - LP: #1387886 + * PCI: mvebu: Fix uninitialized variable in mvebu_get_tgt_attr() + - LP: #1387886 + * xfs: ensure WB_SYNC_ALL writeback handles partial pages correctly + - LP: #1387886 + * v4l2-common: fix overflow in v4l_bound_align_image() + - LP: #1387886 + * USB: Add device quirk for ASUS T100 Base Station keyboard + - LP: #1387886 + * mei: bus: fix possible boundaries violation + - LP: #1387886 + * firmware_class: make sure fw requests contain a name + - LP: #1387886 + * Drivers: hv: vmbus: Cleanup vmbus_post_msg() + - LP: #1387886 + * Drivers: hv: vmbus: Cleanup vmbus_teardown_gpadl() + - LP: #1387886 + * Drivers: hv: vmbus: Cleanup vmbus_establish_gpadl() + - LP: #1387886 + * Drivers: hv: vmbus: Fix a bug in vmbus_open() + - LP: #1387886 + * Drivers: hv: vmbus: Cleanup vmbus_close_internal() + - LP: #1387886 + * Drivers: hv: vmbus: Cleanup hv_post_message() + - LP: #1387886 + * spi: dw-mid: respect 8 bit mode + - LP: #1387886 + * spi: dw-mid: terminate ongoing transfers at exit + - LP: #1387886 + * kvm: don't take vcpu mutex for obviously invalid vcpu ioctls + - LP: #1387886 + * x86/intel/quark: Switch off CR4.PGE so TLB flush uses CR3 instead + - LP: #1387886 + * ARM: at91: fix at91sam9263ek DT mmc pinmuxing settings + - LP: #1387886 + * ARM: at91/PMC: don't forget to write PMC_PCDR register to disable + clocks + - LP: #1387886 + * Fixing lease renewal + - LP: #1387886 + * lockd: Try to reconnect if statd has moved + - LP: #1387886 + * qla2xxx: Use correct offset to req-q-out for reserve calculation + - LP: #1387886 + * power: charger-manager: Fix NULL pointer exception with missing + cm-fuel-gauge + - LP: #1387886 + * rt2800: correct BBP1_TX_POWER_CTRL mask + - LP: #1387886 + * regmap: fix NULL pointer dereference in _regmap_write/read + - LP: #1387886 + * Documentation: lzo: document part of the encoding + - LP: #1387886 + * lzo: check for length overrun in variable length encoding. + - LP: #1387886 + * regmap: debugfs: fix possbile NULL pointer dereference + - LP: #1387886 + * regmap: fix possible ZERO_SIZE_PTR pointer dereferencing error. + - LP: #1387886 + * net_dma: simple removal + - LP: #1387886 + * libata-sff: Fix controllers with no ctl port + - LP: #1387886 + * NFSv4: Fix lock recovery when CREATE_SESSION/SETCLIENTID_CONFIRM fails + - LP: #1387886 + * NFSv4: fix open/lock state recovery error handling + - LP: #1387886 + * tty: omap-serial: fix division by zero + - LP: #1387886 + * serial: 8250: Add Quark X1000 to 8250_pci.c + - LP: #1387886 + * missing data dependency barrier in prepend_name() + - LP: #1387886 + * be2iscsi: check ip buffer before copying + - LP: #1387886 + * framebuffer: fix border color + - LP: #1387886 + * framebuffer: fix screen corruption when copying + - LP: #1387886 + * mpc85xx_edac: Make L2 interrupt shared too + - LP: #1387886 + * NFSv4.1: Fix an NFSv4.1 state renewal regression + - LP: #1387886 + * xen-blkback: fix leak on grant map error path + - LP: #1387886 + * m68k: Disable/restore interrupts in hwreg_present()/hwreg_write() + - LP: #1387886 + * ASoC: tlv320aic3x: fix PLL D configuration + - LP: #1387886 + * dm bufio: update last_accessed when relinking a buffer + - LP: #1387886 + * dm bufio: when done scanning return from __scan immediately + - LP: #1387886 + * dm log userspace: fix memory leak in dm_ulog_tfr_init failure path + - LP: #1387886 + * ecryptfs: avoid to access NULL pointer when write metadata in xattr + - LP: #1387886 + * x86_64, entry: Filter RFLAGS.NT on entry from userspace + - LP: #1387886 + * ASoC: soc-dapm: fix use after free + - LP: #1387886 + * pata_serverworks: disable 64-KB DMA transfers on Broadcom OSB4 IDE + Controller + - LP: #1387886 + * drm/ast: Fix HW cursor image + - LP: #1387886 + * x86: Reject x32 executables if x32 ABI not supported + - LP: #1387886 + * kill wbuf_queued/wbuf_dwork_lock + - LP: #1387886 + * fs: Fix theoretical division by 0 in super_cache_scan(). + - LP: #1387886 + * fs: make cont_expand_zero interruptible + - LP: #1387886 + * fix misuses of f_count() in ppp and netlink + - LP: #1387886 + * block: fix alignment_offset math that assumes io_min is a power-of-2 + - LP: #1387886 + * fanotify: enable close-on-exec on events' fd when requested in + fanotify_init() + - LP: #1387886 + * mm: clear __GFP_FS when PF_MEMALLOC_NOIO is set + - LP: #1387886 + * Input: i8042 - add noloop quirk for Asus X750LN + - LP: #1387886 + * um: ubd: Fix for processes stuck in D state forever + - LP: #1387886 + * kernel: add support for gcc 5 + - LP: #1387886 + * ALSA: emu10k1: Fix deadlock in synth voice lookup + - LP: #1387886 + * libceph: ceph-msgr workqueue needs a resque worker + - LP: #1387886 + * mnt: Prevent pivot_root from creating a loop in the mount tree + - LP: #1387886 + * modules, lock around setting of MODULE_STATE_UNFORMED + - LP: #1387886 + * virtio_pci: fix virtio spec compliance on restore + - LP: #1387886 + * selinux: fix inode security list corruption + - LP: #1387886 + * pstore: Fix duplicate {console,ftrace}-efi entries + - LP: #1387886 + * futex: Ensure get_futex_key_refs() always implies a barrier + - LP: #1387886 + * x86,kvm,vmx: Preserve CR4 across VM entry + - LP: #1387886 + * crypto: caam - remove duplicated sg copy functions + - LP: #1387886 + * Linux 3.13.11.10 + - LP: #1387886 + * ipmi: Turn off default probing of interfaces + - LP: #1388952 + + -- Tim Gardner Wed, 29 Oct 2014 14:39:14 -0400 + +linux (3.13.0-39.66) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1386629 + + [ Upstream Kernel Changes ] + + * KVM: x86: Check non-canonical addresses upon WRMSR + - LP: #1384539 + - CVE-2014-3610 + * KVM: x86: Prevent host from panicking on shared MSR writes. + - LP: #1384539 + - CVE-2014-3610 + * KVM: x86: Improve thread safety in pit + - LP: #1384540 + - CVE-2014-3611 + * KVM: x86: Fix wrong masking on relative jump/call + - LP: #1384545 + - CVE-2014-3647 + * KVM: x86: Warn if guest virtual address space is not 48-bits + - LP: #1384545 + - CVE-2014-3647 + * KVM: x86: Emulator fixes for eip canonical checks on near branches + - LP: #1384545 + - CVE-2014-3647 + * KVM: x86: emulating descriptor load misses long-mode case + - LP: #1384545 + - CVE-2014-3647 + * KVM: x86: Handle errors when RIP is set during far jumps + - LP: #1384545 + - CVE-2014-3647 + * kvm: vmx: handle invvpid vm exit gracefully + - LP: #1384544 + - CVE-2014-3646 + * Input: synaptics - gate forcepad support by DMI check + - LP: #1381815 + + -- Luis Henriques Tue, 28 Oct 2014 10:29:51 +0000 + +linux (3.13.0-38.65) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1379244 + + [ Andy Whitcroft ] + + * Revert "SAUCE: scsi: hyper-v storsvc switch up to SPC-3" + - LP: #1354397 + * [Config] linux-image-extra is additive to linux-image + - LP: #1375310 + * [Config] linux-image-extra postrm is not needed on purge + - LP: #1375310 + + [ Upstream Kernel Changes ] + + * Revert "KVM: x86: Increase the number of fixed MTRR regs to 10" + - LP: #1377564 + * Revert "USB: option,zte_ev: move most ZTE CDMA devices to zte_ev" + - LP: #1377564 + * aufs: bugfix, stop calling security_mmap_file() again + - LP: #1371316 + * ipvs: fix ipv6 hook registration for local replies + - LP: #1349768 + * Drivers: add blist flags + - LP: #1354397 + * sd: fix a bug in deriving the FLUSH_TIMEOUT from the basic I/O timeout + - LP: #1354397 + * drm/i915/bdw: Add 42ms delay for IPS disable + - LP: #1374389 + * drm/i915: add null render states for gen6, gen7 and gen8 + - LP: #1374389 + * drm/i915/bdw: 3D_CHICKEN3 has write mask bits + - LP: #1374389 + * drm/i915/bdw: Disable idle DOP clock gating + - LP: #1374389 + * drm/i915: call lpt_init_clock_gating on BDW too + - LP: #1374389 + * drm/i915: shuffle panel code + - LP: #1374389 + * drm/i915: extract backlight minimum brightness from VBT + - LP: #1374389 + * drm/i915: respect the VBT minimum backlight brightness + - LP: #1374389 + * drm/i915/bdw: Apply workarounds in render ring init function + - LP: #1374389 + * drm/i915/bdw: Cleanup pre prod workarounds + - LP: #1374389 + * drm/i915: Replace hardcoded cacheline size with macro + - LP: #1374389 + * drm/i915: Refactor Broadwell PIPE_CONTROL emission into a helper. + - LP: #1374389 + * drm/i915: Add the WaCsStallBeforeStateCacheInvalidate:bdw workaround. + - LP: #1374389 + * drm/i915/bdw: Remove BDW preproduction W/As until C stepping. + - LP: #1374389 + * mptfusion: enable no_write_same for vmware scsi disks + - LP: #1371591 + * iommu/amd: Fix cleanup_domain for mass device removal + - LP: #1375266 + * cifs: mask off top byte in get_rfc1002_length() + - LP: #1372482 + * Input: synaptics - add support for ForcePads + - LP: #1377564 + * ASoC: pxa-ssp: drop SNDRV_PCM_FMTBIT_S24_LE + - LP: #1377564 + * drm/radeon: add bapm module parameter + - LP: #1377564 + * drm/radeon: Add missing lines to ci_set_thermal_temperature_range + - LP: #1377564 + * drm/radeon: Add ability to get and change dpm state when radeon PX card + is turned off + - LP: #1377564 + * ALSA: hda/realtek - Avoid setting wrong COEF on ALC269 & co + - LP: #1377564 + * of/irq: Fix lookup to use 'interrupts-extended' property first + - LP: #1377564 + * Possible null ptr deref in SMB2_tcon + - LP: #1377564 + * CIFS: Fix SMB2 readdir error handling + - LP: #1377564 + * CIFS: Fix wrong directory attributes after rename + - LP: #1377564 + * md/raid6: avoid data corruption during recovery of double-degraded + RAID6 + - LP: #1377564 + * ARM: dts: i.MX53: fix apparent bug in VPU clks + - LP: #1377564 + * pata_scc: propagate return value of scc_wait_after_reset + - LP: #1377564 + * libata: widen Crucial M550 blacklist matching + - LP: #1377564 + * ALSA: hda - restore the gpio led after resume + - LP: #1358116, #1377564 + * md/raid10: fix memory leak when reshaping a RAID10. + - LP: #1377564 + * md/raid10: Fix memory leak when raid10 reshape completes. + - LP: #1377564 + * MIPS: OCTEON: make get_system_type() thread-safe + - LP: #1377564 + * can: c_can: checking IS_ERR() instead of NULL + - LP: #1377564 + * HID: logitech: perform bounds checking on device_id early enough + - LP: #1377564 + * firmware: Do not use WARN_ON(!spin_is_locked()) + - LP: #1377564 + * drm/radeon: add new KV pci id + - LP: #1377564 + * drm/radeon: add new bonaire pci ids + - LP: #1377564 + * drm/radeon: add additional SI pci ids + - LP: #1377564 + * ibmveth: Fix endian issues with rx_no_buffer statistic + - LP: #1377564 + * spi/omap-mcspi: Fix the spi task hangs waiting dma_rx + - LP: #1377564 + * xtensa: replace IOCTL code definitions with constants + - LP: #1377564 + * xtensa: fix address checks in dma_{alloc,free}_coherent + - LP: #1377564 + * xtensa: fix access to THREAD_RA/THREAD_SP/THREAD_DS + - LP: #1377564 + * xtensa: fix TLBTEMP_BASE_2 region handling in fast_second_level_miss + - LP: #1377564 + * xtensa: fix a6 and a7 handling in fast_syscall_xtensa + - LP: #1377564 + * staging: lustre: Remove circular dependency on header + - LP: #1377564 + * USB: option: reduce interrupt-urb logging verbosity + - LP: #1377564 + * USB: option: add VIA Telecom CDS7 chipset device id + - LP: #1377564 + * USB: zte_ev: remove duplicate Gobi PID + - LP: #1377564 + * USB: zte_ev: remove duplicate Qualcom PID + - LP: #1377564 + * USB: ftdi_sio: add Basic Micro ATOM Nano USB2Serial PID + - LP: #1377564 + * USB: serial: pl2303: add device id for ztek device + - LP: #1377564 + * USB: ftdi_sio: Added PID for new ekey device + - LP: #1377564 + * xhci: Treat not finding the event_seg on COMP_STOP the same as + COMP_STOP_INVAL + - LP: #1377564 + * usb: xhci: amd chipset also needs short TX quirk + - LP: #1377564 + * xhci: rework cycle bit checking for new dequeue pointers + - LP: #1377564 + * spi/pxa2xx: Add ACPI ID for Intel Braswell + - LP: #1377564 + * ALSA: core: fix buffer overflow in snd_info_get_line() + - LP: #1377564 + * HID: logitech-dj: prevent false errors to be shown + - LP: #1377564 + * usb: ehci: using wIndex + 1 for hub port + - LP: #1377564 + * staging/rtl8188eu: add 0df6:0076 Sitecom Europe B.V. + - LP: #1377564 + * staging: r8188eu: Add new USB ID + - LP: #1377564 + * mtd: nand: omap: Fix 1-bit Hamming code scheme, omap_calculate_ecc() + - LP: #1377564 + * trace: Fix epoll hang when we race with new entries + - LP: #1377564 + * cfq-iosched: Fix wrong children_weight calculation + - LP: #1377564 + * USB: sisusb: add device id for Magic Control USB video + - LP: #1377564 + * NFSv4: Fix problems with close in the presence of a delegation + - LP: #1377564 + * usb: hub: Prevent hub autosuspend if usbcore.autosuspend is -1 + - LP: #1377564 + * ARM: 8128/1: abort: don't clear the exclusive monitors + - LP: #1377564 + * ARM: 8129/1: errata: work around Cortex-A15 erratum 830321 using dummy + strex + - LP: #1377564 + * USB: serial: fix potential stack buffer overflow + - LP: #1377564 + * USB: serial: fix potential heap buffer overflow + - LP: #1377564 + * ext4: update i_disksize coherently with block allocation on error path + - LP: #1377564 + * jbd2: fix infinite loop when recovering corrupt journal blocks + - LP: #1377564 + * jbd2: fix descriptor block size handling errors with journal_csum + - LP: #1377564 + * memblock, memhotplug: fix wrong type in memblock_find_in_range_node(). + - LP: #1377564 + * xattr: fix check for simultaneous glibc header inclusion + - LP: #1377564 + * KVM: s390: Fix user triggerable bug in dead code + - LP: #1377564 + * KVM: s390/mm: try a cow on read only pages for key ops + - LP: #1377564 + * regmap: Fix regcache debugfs initialization + - LP: #1377564 + * regmap: Fix handling of volatile registers for format_write() chips + - LP: #1377564 + * ASoC: rt5640: Do not allow regmap to use bulk read-write operations + - LP: #1377564 + * drm/i915: Remove bogus __init annotation from DMI callbacks + - LP: #1377564 + * hwmon: (ds1621) Update zbits after conversion rate change + - LP: #1377564 + * arm64: ptrace: fix compat hardware watchpoint reporting + - LP: #1377564 + * ARM/ARM64: KVM: Nuke Hyp-mode tlbs before enabling MMU + - LP: #1377564 + * arm/arm64: KVM: Complete WFI/WFE instructions + - LP: #1377564 + * get rid of propagate_umount() mistakenly treating slaves as busy. + - LP: #1377564 + * fix EBUSY on umount() from MNT_SHRINKABLE + - LP: #1377564 + * regmap: Don't attempt block writes when syncing cache on single_rw + devices + - LP: #1377564 + * drm/vmwgfx: Fix a potential infinite spin waiting for fifo idle + - LP: #1377564 + * ALSA: hda - Fix digital mic on Acer Aspire 3830TG + - LP: #1377564 + * xfs: don't dirty buffers beyond EOF + - LP: #1377564 + * xfs: don't zero partial page cache pages during O_DIRECT writes + - LP: #1377564 + * xfs: don't zero partial page cache pages during O_DIRECT writes + - LP: #1377564 + * ALSA: hda - Fix COEF setups for ALC1150 codec + - LP: #1377564 + * i2c: rcar: fix MNR interrupt handling + - LP: #1377564 + * i2c: mv64xxx: continue probe when clock-frequency is missing + - LP: #1377564 + * i2c: at91: Fix a race condition during signal handling in + at91_do_twi_xfer. + - LP: #1377564 + * i2c: at91: add bound checking on SMBus block length bytes + - LP: #1377564 + * aio: add missing smp_rmb() in read_events_ring + - LP: #1377564 + * KEYS: Fix use-after-free in assoc_array_gc() + - LP: #1377564 + * ACPI / cpuidle: fix deadlock between cpuidle_lock and cpu_hotplug.lock + - LP: #1377564 + * USB: fix build error with CONFIG_PM_RUNTIME disabled + - LP: #1377564 + * Linux 3.13.11.8 + - LP: #1377564 + * powerpc: Fix kdump hang issue on p8 with relocation on exception + enabled. + - LP: #1352056 + * net-gre-gro: Fix a bug that breaks the forwarding path + - LP: #1377851 + + -- Luis Henriques Thu, 09 Oct 2014 10:31:36 +0100 + +linux (3.13.0-37.64) trusty; urgency=low + + [ Joseph Salisbury ] + + * Release Tracking Bug + - LP: #1372576 + + [ dann frazier ] + + * [Config] CONFIG_HW_RANDOM_XGENE=m on arm64 + + [ Edward Lin ] + + * SAUCE: Add use_native_backlight quirk for Dell Inspiron 5721/3521 + - LP: #1354253, #1354313 + + [ Tim Gardner ] + + * SAUCE: Fix nfs oops stable regression + - LP: #1348670 + * [Config] Add mpt3sas to d-i + - LP: #1368907 + * [Config] CONFIG_X86_16BIT=y + - LP: #1371601 + + [ Timo Aaltonen ] + + * SAUCE: i915_bdw: Rebase to v3.15.8 + - LP: #1359213 + + [ Upstream Kernel Changes ] + + * Revert "x86-64, modify_ldt: Make support for 16-bit segments a runtime + option" + - LP: #1371601 + * mmc: rtsx: add R1-no-CRC mmc command type handle + - LP: #1365378 + * rpc_pipe: remove the clntXX dir if creating the pipe fails + - LP: #1365869 + * sunrpc: add an "info" file for the dummy gssd pipe + - LP: #1365869 + * rpc_pipe: fix cleanup of dummy gssd directory when notification fails + - LP: #1365869 + * hwrng: xgene - add support for APM X-Gene SoC RNG support + - LP: #1365593 + * Documentation: rng: Add X-Gene SoC RNG driver documentation + - LP: #1365593 + * arm64: dts: add random number generator dts node to APM X-Gene + platform. + - LP: #1365593 + * xen/balloon: cancel ballooning if adding new memory failed + - LP: #1304001 + * x86/xen: resume timer irqs early + - LP: #1368724 + * xen/manage: Always freeze/thaw processes when suspend/resuming + - LP: #1368724 + * scsi_transport_sas: move bsg destructor into sas_rphy_remove + - LP: #1368991 + * drm/i915: Enable 5.4Ghz (HBR2) link rate for Displayport 1.2-capable + devices + - LP: #1369633 + * bnx2x: Fix link for KR with swapped polarity lane + - LP: #1370716 + * drm: add DRM_CAPs for cursor size + - LP: #1359213 + * drm/dp: Add AUX channel infrastructure + - LP: #1359213 + * drm/dp: Add drm_dp_dpcd_read_link_status() + - LP: #1359213 + * drm/dp: Add DisplayPort link helpers + - LP: #1359213 + * drm/dp: Allow registering AUX channels as I2C busses + - LP: #1359213 + * drm/dp: let drivers specify the name of the I2C-over-AUX adapter + - LP: #1359213 + * drm/dp: make aux retries less chatty + - LP: #1359213 + * Bluetooth: Enable Atheros 0cf3:311e for firmware upload + - LP: #1371477 + * bnx2x: fix crash during TSO tunneling + - LP: #1371601 + * inetpeer: get rid of ip_id_count + - LP: #1371601 + * ip: make IP identifiers less predictable + - LP: #1371601 + * tcp: Fix integer-overflows in TCP veno + - LP: #1371601 + * tcp: Fix integer-overflow in TCP vegas + - LP: #1371601 + * macvlan: Initialize vlan_features to turn on offload support. + - LP: #1371601 + * net: Correctly set segment mac_len in skb_segment(). + - LP: #1371601 + * iovec: make sure the caller actually wants anything in + memcpy_fromiovecend + - LP: #1371601 + * batman-adv: Fix out-of-order fragmentation support + - LP: #1371601 + * sctp: fix possible seqlock seadlock in sctp_packet_transmit() + - LP: #1371601 + * sparc64: Fix argument sign extension for compat_sys_futex(). + - LP: #1371601 + * sparc64: Make itc_sync_lock raw + - LP: #1371601 + * sparc64: Fix executable bit testing in set_pmd_at() paths. + - LP: #1371601 + * sparc64: Fix huge PMD invalidation. + - LP: #1371601 + * sparc64: Fix bugs in get_user_pages_fast() wrt. THP. + - LP: #1371601 + * sparc64: Fix hex values in comment above pte_modify(). + - LP: #1371601 + * sparc64: Don't use _PAGE_PRESENT in pte_modify() mask. + - LP: #1371601 + * sparc64: Handle 32-bit tasks properly in compute_effective_address(). + - LP: #1371601 + * sparc64: Fix top-level fault handling bugs. + - LP: #1371601 + * sparc64: Fix range check in kern_addr_valid(). + - LP: #1371601 + * sparc64: Use 'ILOG2_4MB' instead of constant '22'. + - LP: #1371601 + * sparc64: Add basic validations to {pud,pmd}_bad(). + - LP: #1371601 + * sparc64: Give more detailed information in {pgd,pmd}_ERROR() and kill + pte_ERROR(). + - LP: #1371601 + * sparc64: Don't bark so loudly about 32-bit tasks generating 64-bit + fault addresses. + - LP: #1371601 + * sparc64: Fix huge TSB mapping on pre-UltraSPARC-III cpus. + - LP: #1371601 + * sparc64: Add membar to Niagara2 memcpy code. + - LP: #1371601 + * sparc64: Do not insert non-valid PTEs into the TSB hash table. + - LP: #1371601 + * sparc64: Guard against flushing openfirmware mappings. + - LP: #1371601 + * bbc-i2c: Fix BBC I2C envctrl on SunBlade 2000 + - LP: #1371601 + * sunsab: Fix detection of BREAK on sunsab serial console + - LP: #1371601 + * sparc64: ldc_connect() should not return EINVAL when handshake is in + progress. + - LP: #1371601 + * arch/sparc/math-emu/math_32.c: drop stray break operator + - LP: #1371601 + * x86-64, espfix: Don't leak bits 31:16 of %esp returning to 16-bit stack + - LP: #1371601 + * x86, espfix: Move espfix definitions into a separate header file + - LP: #1371601 + * x86, espfix: Fix broken header guard + - LP: #1371601 + * x86, espfix: Make espfix64 a Kconfig option, fix UML + - LP: #1371601 + * x86, espfix: Make it possible to disable 16-bit support + - LP: #1371601 + * x86_64/entry/xen: Do not invoke espfix64 on Xen + - LP: #1371601 + * ALSA: usb-audio: fix BOSS ME-25 MIDI regression + - LP: #1371601 + * ASoC: wm8994: Prevent double lock of accdet_lock mutex on wm1811 + - LP: #1371601 + * v4l: vsp1: Remove the unneeded vsp1_video_buffer video field + - LP: #1371601 + * ASoC: max98090: Fix missing free_irq + - LP: #1371601 + * KVM: x86: Inter-privilege level ret emulation is not implemeneted + - LP: #1371601 + * au0828: Only alt setting logic when needed + - LP: #1371601 + * ASoC: pcm: fix dpcm_path_put in dpcm runtime update + - LP: #1371601 + * crypto: ux500 - make interrupt mode plausible + - LP: #1371601 + * Bluetooth: btmrvl: wait for HOST_SLEEP_ENABLE event in suspend + - LP: #1371601 + * ASoC: adau1701: fix adau1701_reg_read() + - LP: #1371601 + * ASoC: wm_adsp: Add missing MODULE_LICENSE + - LP: #1371601 + * regulator: arizona-ldo1: remove bypass functionality + - LP: #1371601 + * ASoC: samsung: Correct I2S DAI suspend/resume ops + - LP: #1371601 + * drm/tilcdc: panel: fix dangling sysfs connector node + - LP: #1371601 + * drm/tilcdc: slave: fix dangling sysfs connector node + - LP: #1371601 + * drm/tilcdc: tfp410: fix dangling sysfs connector node + - LP: #1371601 + * drm/tilcdc: panel: fix leak when unloading the module + - LP: #1371601 + * drm/tilcdc: fix release order on exit + - LP: #1371601 + * drm/tilcdc: fix double kfree + - LP: #1371601 + * ACPICA: Utilities: Fix memory leak in acpi_ut_copy_iobject_to_iobject + - LP: #1371601 + * stable_kernel_rules: Add pointer to netdev-FAQ for network patches + - LP: #1371601 + * USB: ehci-pci: USB host controller support for Intel Quark X1000 + - LP: #1371601 + * debugfs: Fix corrupted loop in debugfs_remove_recursive + - LP: #1371601 + * serial: core: Preserve termios c_cflag for console resume + - LP: #1371601 + * mtd/ftl: fix the double free of the buffers allocated in build_maps() + - LP: #1371601 + * ext4: Fix block zeroing when punching holes in indirect block files + - LP: #1371601 + * ext4: fix punch hole on files with indirect mapping + - LP: #1371601 + * x86: don't exclude low BIOS area when allocating address space for + non-PCI cards + - LP: #1371601 + * PCI: Configure ASPM when enabling device + - LP: #1371601 + * Bluetooth: never linger on process exit + - LP: #1371601 + * ASoC: blackfin: use samples to set silence + - LP: #1371601 + * USB: OHCI: fix bugs in debug routines + - LP: #1371601 + * USB: OHCI: don't lose track of EDs when a controller dies + - LP: #1371601 + * mei: start disconnect request timer consistently + - LP: #1371601 + * mei: fix return value on disconnect timeout + - LP: #1371601 + * USB: Fix persist resume of some SS USB devices + - LP: #1371601 + * media-device: Remove duplicated memset() in media_enum_entities() + - LP: #1371601 + * Bluetooth: Avoid use of session socket after the session gets freed + - LP: #1371601 + * xc5000: Fix get_frequency() + - LP: #1371601 + * xc4000: Fix get_frequency() + - LP: #1371601 + * CAPABILITIES: remove undefined caps from all processes + - LP: #1371601 + * scsi: add a blacklist flag which enables VPD page inquiries + - LP: #1371601 + * bfa: Fix undefined bit shift on big-endian architectures with 32-bit + DMA address + - LP: #1371601 + * hpsa: fix bad -ENOMEM return value in hpsa_big_passthru_ioctl + - LP: #1371601 + * Drivers: scsi: storvsc: Change the limits to reflect the values on the + host + - LP: #1371601 + * Drivers: scsi: storvsc: Set cmd_per_lun to reflect value supported by + the Host + - LP: #1371601 + * Drivers: scsi: storvsc: Filter commands based on the storage protocol + version + - LP: #1371601 + * Drivers: scsi: storvsc: Fix a bug in handling VMBUS protocol version + - LP: #1371601 + * Drivers: scsi: storvsc: Implement a eh_timed_out handler + - LP: #1371601 + * drivers: scsi: storvsc: Set srb_flags in all cases + - LP: #1371601 + * drivers: scsi: storvsc: Correctly handle TEST_UNIT_READY failure + - LP: #1371601 + * x86_64/vsyscall: Fix warn_bad_vsyscall log output + - LP: #1371601 + * KVM: PPC: Book3S PR: Take SRCU read lock around RTAS kvm_read_guest() + call + - LP: #1371601 + * spi: orion: fix incorrect handling of cell-index DT property + - LP: #1371601 + * mfd: omap-usb-host: Fix improper mask use. + - LP: #1371601 + * tpm: Add missing tpm_do_selftest to ST33 I2C driver + - LP: #1371601 + * tpm: missing tpm_chip_put in tpm_get_random() + - LP: #1371601 + * scsi: do not issue SCSI RSOC command to Promise Vtrak E610f + - LP: #1371601 + * hwmon: (ads1015) Fix off-by-one for valid channel index checking + - LP: #1371601 + * ALSA: hda - fix an external mic jack problem on a HP machine + - LP: #1350148, #1371601 + * MIPS: tlbex: Fix a missing statement for HUGETLB + - LP: #1371601 + * MIPS: Prevent user from setting FCSR cause bits + - LP: #1371601 + * KVM: x86: always exit on EOIs for interrupts listed in the IOAPIC redir + table + - LP: #1371601 + * MIPS: Remove BUG_ON(!is_fpu_owner()) in do_ade() + - LP: #1371601 + * MIPS: ptrace: Test correct task's flags in task_user_regset_view() + - LP: #1371601 + * MIPS: asm/reg.h: Make 32- and 64-bit definitions available at the same + time + - LP: #1371601 + * MIPS: ptrace: Change GP regset to use correct core dump register layout + - LP: #1371601 + * md/raid1,raid10: always abort recover on write error. + - LP: #1371601 + * ext4: fix ext4_discard_allocated_blocks() if we can't allocate the pa + struct + - LP: #1371601 + * hwmon: (lm85) Fix various errors on attribute writes + - LP: #1371601 + * hwmon: (lm78) Fix overflow problems seen when writing large temperature + limits + - LP: #1371601 + * hwmon: (amc6821) Fix possible race condition bug + - LP: #1371601 + * MIPS: GIC: Prevent array overrun + - LP: #1371601 + * mnt: Add tests for unprivileged remount cases that have found to be + faulty + - LP: #1371601 + * ARM: OMAP3: Fix choice of omap3_restore_es function in OMAP34XX + rev3.1.2 case. + - LP: #1371601 + * netlabel: fix a problem when setting bits below the previously lowest + bit + - LP: #1371601 + * netlabel: fix the horribly broken catmap functions + - LP: #1371601 + * netlabel: fix the catmap walking functions + - LP: #1371601 + * drivers/i2c/busses: use correct type for dma_map/unmap + - LP: #1371601 + * NFSD: Decrease nfsd_users in nfsd_startup_generic fail + - LP: #1371601 + * MIPS: O32/32-bit: Fix bug which can cause incorrect system call + restarts + - LP: #1371601 + * IB/srp: Fix deadlock between host removal and multipathd + - LP: #1371601 + * USB: serial: ftdi_sio: Annotate the current Xsens PID assignments + - LP: #1371601 + * USB: serial: ftdi_sio: Add support for new Xsens devices + - LP: #1371601 + * USB: devio: fix issue with log flooding + - LP: #1371601 + * CIFS: Fix async reading on reconnects + - LP: #1371601 + * CIFS: Fix STATUS_CANNOT_DELETE error mapping for SMB2 + - LP: #1371601 + * xfs: ensure verifiers are attached to recovered buffers + - LP: #1371601 + * drm/tegra: add MODULE_DEVICE_TABLEs + - LP: #1371601 + * ALSA: virtuoso: add Xonar Essence STX II support + - LP: #1371601 + * hwmon: (gpio-fan) Prevent overflow problem when writing large limits + - LP: #1371601 + * hwmon: (sis5595) Prevent overflow problem when writing large limits + - LP: #1371601 + * NFS: Fix /proc/fs/nfsfs/servers and /proc/fs/nfsfs/volumes + - LP: #1371601 + * drm/ttm: Fix possible division by 0 in ttm_dma_pool_shrink_scan(). + - LP: #1371601 + * drm/ttm: Choose a pool to shrink correctly in + ttm_dma_pool_shrink_scan(). + - LP: #1371601 + * drm/ttm: Use mutex_trylock() to avoid deadlock inside shrinker + functions. + - LP: #1371601 + * drm/ttm: Fix possible stack overflow by recursive shrinker calls. + - LP: #1371601 + * drm/ttm: Pass GFP flags in order to avoid deadlock. + - LP: #1371601 + * powerpc/mm/numa: Fix break placement + - LP: #1371601 + * powerpc/pci: Reorder pci bus/bridge unregistration during PHB removal + - LP: #1371601 + * drm/radeon: load the lm63 driver for an lm64 thermal chip. + - LP: #1371601 + * drm/radeon: set VM base addr using the PFP v2 + - LP: #1371601 + * drm/radeon/atom: add new voltage fetch function for hawaii + - LP: #1371601 + * drm/radeon/dpm: handle voltage info fetching on hawaii + - LP: #1371601 + * drm/radeon: re-enable dpm by default on cayman + - LP: #1371601 + * drm/radeon: re-enable dpm by default on BTC + - LP: #1371601 + * drm/radeon: use packet2 for nop on hawaii with old firmware + - LP: #1371601 + * drm/radeon: tweak ACCEL_WORKING2 query for hawaii + - LP: #1371601 + * KVM: nVMX: fix "acknowledge interrupt on exit" when APICv is in use + - LP: #1371601 + * RDMA/iwcm: Use a default listen backlog if needed + - LP: #1371601 + * x86/efi: Enforce CONFIG_RELOCATABLE for EFI boot stub + - LP: #1371601 + * net: sun4i-emac: fix memory leak on bad packet + - LP: #1371601 + * hwmon: (ads1015) Fix out-of-bounds array access + - LP: #1371601 + * hwmon: (dme1737) Prevent overflow problem when writing large limits + - LP: #1371601 + * s390/locking: Reenable optimistic spinning + - LP: #1371601 + * ring-buffer: Up rb_iter_peek() loop count to 3 + - LP: #1371601 + * ring-buffer: Always reset iterator to reader page + - LP: #1371601 + * kernel/smp.c:on_each_cpu_cond(): fix warning in fallback path + - LP: #1371601 + * drm/i915: read HEAD register back in init_ring_common() to enforce + ordering + - LP: #1371601 + * vm_is_stack: use for_each_thread() rather then buggy + while_each_thread() + - LP: #1371601 + * libceph: set last_piece in ceph_msg_data_pages_cursor_init() correctly + - LP: #1371601 + * drm/nouveau: Bump version from 1.1.1 to 1.1.2 + - LP: #1371601 + * ALSA: usb-audio: fix BOSS ME-25 MIDI regression + - LP: #1371601 + * ALSA: hda/ca0132 - Don't try loading firmware at resume when already + failed + - LP: #1371601 + * carl9170: fix sending URBs with wrong type when using full-speed + - LP: #1371601 + * powerpc/pseries: Failure on removing device node + - LP: #1371601 + * Btrfs: Fix memory corruption by ulist_add_merge() on 32bit arch + - LP: #1371601 + * Btrfs: fix csum tree corruption, duplicate and outdated checksums + - LP: #1371601 + * ext4: fix BUG_ON in mb_free_blocks() + - LP: #1371601 + * x86/espfix/xen: Fix allocation of pages for paravirt page tables + - LP: #1371601 + * Linux 3.13.11.7 + - LP: #1371601 + * HID: magicmouse: sanity check report size in raw_event() callback + - LP: #1370025 + - CVE-2014-3181 + * HID: fix a couple of off-by-ones + - LP: #1370035 + - CVE-2014-3184 + * USB: whiteheat: Added bounds checking for bulk command response + - LP: #1370036 + - CVE-2014-3185 + * HID: picolcd: sanity check report size in raw_event() callback + - LP: #1370038 + - CVE-2014-3186 + * KEYS: Fix termination condition in assoc array garbage collection + - LP: #1370041 + - CVE-2014-3631 + * udf: Fold udf_fill_inode() into __udf_read_inode() + - LP: #1370042 + - CVE-2014-6410 + * udf: Avoid infinite loop when processing indirect ICBs + - LP: #1370042 + - CVE-2014-6410 + * libceph: add process_one_ticket() helper + - LP: #1370044, #1370046, #1370047 + - CVE-2014-6418 + * libceph: do not hard code max auth ticket len + - LP: #1370044, #1370046, #1370047 + - CVE-2014-6418 + + -- Joseph Salisbury Mon, 22 Sep 2014 15:51:07 -0400 + +linux (3.13.0-36.63) trusty; urgency=low + + [ Joseph Salisbury ] + + * Release Tracking Bug + - LP: #1365052 + + [ 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 + + [ Ming Lei ] + + * SAUCE: (no-up) Drop APM X-Gene SoC Ethernet driver + - LP: #1360140 + * [Config] Drop XGENE entries + - LP: #1360140 + * [Config] CONFIG_NET_XGENE=m for arm64 + - LP: #1360140 + + [ Stefan Bader ] + + * SAUCE: Add compat macro for skb_get_hash + - LP: #1358162 + * SAUCE: bcache: prevent crash on changing writeback_running + - LP: #1357295 + + [ Suman Tripathi ] + + * SAUCE: (no-up) arm64: Fix the csr-mask for APM X-Gene SoC AHCI SATA PHY + clock DTS node. + - LP: #1359489 + * SAUCE: (no-up) ahci_xgene: Skip the PHY and clock initialization if + already configured by the firmware. + - LP: #1359501 + * SAUCE: (no-up) ahci_xgene: Fix the link down in first attempt for the + APM X-Gene SoC AHCI SATA host controller driver. + - LP: #1359507 + + [ Tuan Phan ] + + * SAUCE: (no-up) pci-xgene-msi: fixed deadlock in irq_set_affinity + - LP: #1359514 + + [ Upstream Kernel Changes ] + + * iwlwifi: mvm: Add a missed beacons threshold + - LP: #1349572 + * mac80211: reset probe_send_count also in HW_CONNECTION_MONITOR case + - LP: #1349572 + * genirq: Add an accessor for IRQ_PER_CPU flag + - LP: #1357527 + * arm64: perf: add support for percpu pmu interrupt + - LP: #1357527 + * cifs: sanity check length of data to send before sending + - LP: #1283101 + * KVM: nVMX: Pass vmexit parameters to nested_vmx_vmexit + - LP: #1329434 + * KVM: nVMX: Rework interception of IRQs and NMIs + - LP: #1329434 + * KVM: vmx: disable APIC virtualization in nested guests + - LP: #1329434 + * HID: Add transport-driver functions to the USB HID interface. + - LP: #1353021 + * ahci_xgene: Removing NCQ support from the APM X-Gene SoC AHCI SATA Host + Controller driver. + - LP: #1358498 + * fold d_kill() and d_free() + - LP: #1354234 + * fold try_prune_one_dentry() + - LP: #1354234 + * new helper: dentry_free() + - LP: #1354234 + * expand the call of dentry_lru_del() in dentry_kill() + - LP: #1354234 + * dentry_kill(): don't try to remove from shrink list + - LP: #1354234 + * don't remove from shrink list in select_collect() + - LP: #1354234 + * more graceful recovery in umount_collect() + - LP: #1354234 + * dcache: don't need rcu in shrink_dentry_list() + - LP: #1354234 + * lift the "already marked killed" case into shrink_dentry_list() + * split dentry_kill() + - LP: #1354234 + * expand dentry_kill(dentry, 0) in shrink_dentry_list() + - LP: #1354234 + * shrink_dentry_list(): take parent's ->d_lock earlier + - LP: #1354234 + * dealing with the rest of shrink_dentry_list() livelock + - LP: #1354234 + * dentry_kill() doesn't need the second argument now + - LP: #1354234 + * dcache: add missing lockdep annotation + - LP: #1354234 + * fs: convert use of typedef ctl_table to struct ctl_table + - LP: #1354234 + * lock_parent: don't step on stale ->d_parent of all-but-freed one + - LP: #1354234 + * tools/testing/selftests/ptrace/peeksiginfo.c: add PAGE_SIZE definition + - LP: #1358855 + * x86, irq, pic: Probe for legacy PIC and set legacy_pic appropriately + - LP: #1317697 + * bnx2x: Fix kernel crash and data miscompare after EEH recovery + - LP: #1353105 + * bnx2x: Adapter not recovery from EEH error injection + - LP: #1353105 + * Fix: module signature vs tracepoints: add new TAINT_UNSIGNED_MODULE + - LP: #1359670 + * bcache: fix crash on shutdown in passthrough mode + - LP: #1357295 + * bcache: fix uninterruptible sleep in writeback thread + - LP: #1357295 + * namespaces: Use task_lock and not rcu to protect nsproxy + - LP: #1328088 + * MAINTAINERS: Add entry for APM X-Gene SoC ethernet driver + - LP: #1360140 + * Documentation: dts: Add bindings for APM X-Gene SoC ethernet driver + - LP: #1360140 + * dts: Add bindings for APM X-Gene SoC ethernet driver + - LP: #1360140 + * drivers: net: Add APM X-Gene SoC ethernet driver support. + - LP: #1360140 + * powerpc/mm: Add new "set" flag argument to pte/pmd update function + - LP: #1357014 + * 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 + * powerpc: subpage_protect: Increase the array size to take care of 64TB + - LP: #1357014 + * mfd: rtsx: Add set pull control macro and simplify rtl8411 + - LP: #1361086 + * mfd: rtsx: Add support for card reader rtl8402 + - LP: #1361086 + * kvm: iommu: fix the third parameter of kvm_iommu_put_pages + (CVE-2014-3601) + - LP: #1362443 + - CVE-2014-3601 + * isofs: Fix unbounded recursion when processing relocated directories + - LP: #1362447, #1362448 + - CVE-2014-5472 + * net: sctp: inherit auth_capable on INIT collisions + - LP: #1349804 + - CVE-2014-5077 + * blk-mq: fix initializing request's start time + - LP: #1297522 + + [ 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 + + -- Joseph Salisbury Wed, 03 Sep 2014 12:13:43 -0400 + +linux (3.13.0-35.62) trusty; urgency=low + + [ Joseph Salisbury ] + + * Release Tracking Bug + - LP: #1357148 + + [ Brad Figg ] + + * Start new release + + [ dann frazier ] + + * SAUCE: (no-up) Fix build failure on arm64 + - LP: #1353657 + * [debian] Allow for package revisions condusive for branching + + [ David Henningsson ] + + * SAUCE: Call broadwell specific functions from the hda driver + - LP: #1317865 + + [ Edward Lin ] + + * SAUCE: (no-up) Add use native backlight quirk for Dell Inspiron + 5547/5447 + - LP: #1332437 + + [ Imre Deak ] + + * SAUCE: drm/i915: move power domain init earlier during system resume + - LP: #1353405 + + [ Jani Nikula ] + + * SAUCE: drm/i915: use lane count and link rate from VBT as minimums for + eDP + - LP: #1338582 + * SAUCE: drm/i915/dp: force eDP lane count to max available lanes on BDW + - LP: #1338582 + * SAUCE: drm/i915: provide interface for audio driver to query cdclk + - LP: #1188091 + * SAUCE: drm/i915: demote opregion excessive timeout WARN_ONCE to + DRM_INFO_ONCE + - LP: #1351014 + + [ Joseph Salisbury ] + + * [Config] updateconfigs after Linux 3.13.11.6 updates + + [ Luis Henriques ] + + * Revert "[Packaging] linux-udeb-flavour -- standardise on linux prefix" + + [ Ming Lei ] + + * Revert "SAUCE: (no-up) ata: Fix the dma state machine lockup for the + IDENTIFY DEVICE PIO mode command." + - LP: #1335645 + + [ Paulo Zanoni ] + + * SAUCE: drm/i915: consider the source max DP lane count too + - LP: #1338582 + + [ Tim Gardner ] + + * [Config] CONFIG_GPIO_SYSFS=y + - LP: #1342153 + * [Config] CONFIG_KEYS_DEBUG_PROC_KEYS=y + - LP: #1344405 + * [Config] updateconfigs + * [Config] CONFIG_SCSI_IPR_TRACE=y, CONFIG_SCSI_IPR_DUMP=y + - LP: #1343109 + * [Config] CONFIG_CONTEXT_TRACKING_FORCE=n + - LP: #1349028 + + [ Timo Aaltonen ] + + * SAUCE: Fix a typo in hda i915_bdw support. + - LP: #1343140 + + [ Upstream Kernel Changes ] + + * Revert "net/mlx4_en: Fix bad use of dev_id" + - LP: #1347012 + * Revert "ACPI / AC: Remove AC's proc directory." + - LP: #1356913 + * Revert "mac80211: move "bufferable MMPDU" check to fix AP mode scan" + - LP: #1356913 + * mm, pcp: allow restoring percpu_pagelist_fraction default + - LP: #1347088 + * net: Fix permission check in netlink_connect() + - LP: #1312989 + * netlink: Rename netlink_capable netlink_allowed + - LP: #1312989 + * net: Move the permission check in sock_diag_put_filterinfo to + packet_diag_dump + - LP: #1312989 + * net: Add variants of capable for use on on sockets + - LP: #1312989 + * net: Add variants of capable for use on netlink messages + - LP: #1312989 + * net: Use netlink_ns_capable to verify the permisions of netlink + messages + - LP: #1312989 + * netlink: Only check file credentials for implicit destinations + - LP: #1312989 + * igb: fix stats for i210 rx_fifo_errors + - LP: #1338893 + * HID: use multi input quirk for 22b9:2968 + - LP: #1339567 + * crypto/nx: disable NX on little endian builds + - LP: #1338666 + * ACPI / video: Add Dell Inspiron 5737 to the blacklist + - LP: #1250401 + * Input: elantech - deal with clickpads reporting right button events + - LP: #1188025 + * net/mlx4_core: Enforce irq affinity changes immediatly + - LP: #1326108 + * cpumask: Utility function to set n'th cpu - local cpu first + - LP: #1326108 + * net/mlx4_en: Use affinity hint + - LP: #1326108 + * net/mlx4_en: Don't use irq_affinity_notifier to track changes in IRQ + affinity map + - LP: #1326108 + * net/mlx4_en: IRQ affinity hint is not cleared on port down + - LP: #1326108 + * Subject: net: Allow tc changes in user namespaces + - LP: #1344049 + * net-gro: restore frag0 optimization + - LP: #1344323 + * Bluetooth: Fix redundant encryption request for reauthentication + - LP: #1347088 + * Bluetooth: Fix check for connection encryption + - LP: #1347088 + * introduce for_each_thread() to replace the buggy while_each_thread() + - LP: #1347088 + * NFS: Don't declare inode uptodate unless all attributes were checked + - LP: #1347088 + * usb: dwc3: gadget: clear stall when disabling endpoint + - LP: #1347088 + * ACPICA: utstring: Check array index bound before use. + - LP: #1347088 + * mtip32xx: Increase timeout for STANDBY IMMEDIATE command + - LP: #1347088 + * mtip32xx: Remove dfs_parent after pci unregister + - LP: #1347088 + * mtip32xx: Fix ERO and NoSnoop values in PCIe upstream on AMD systems + - LP: #1347088 + * extcon: max77693: Fix two NULL pointer exceptions on missing pdata + - LP: #1347088 + * extcon: max8997: Fix NULL pointer exception on missing pdata + - LP: #1347088 + * builddeb: use $OBJCOPY variable instead of objcopy + - LP: #1347088 + * bluetooth: hci_ldisc: fix deadlock condition + - LP: #1347088 + * powerpc/pseries: Fix overwritten PE state + - LP: #1347088 + * PCI: Add new ID for Intel GPU "spurious interrupt" quirk + - LP: #1347088 + * x86-32, espfix: Remove filter for espfix32 due to race + - LP: #1347088 + * genirq: Sanitize spurious interrupt detection of threaded irqs + - LP: #1347088 + * Drivers: hv: balloon: Ensure pressure reports are posted regularly + - LP: #1347088 + * x86, x32: Use compat shims for io_{setup,submit} + - LP: #1347088 + * iwlwifi: pcie: try to get ownership several times + - LP: #1347088 + * ext4: fix data integrity sync in ordered mode + - LP: #1347088 + * UBIFS: fix an mmap and fsync race condition + - LP: #1347088 + * [media] rtl28xxu: add USB ID for Genius TVGo DVB-T03 + - LP: #1347088 + * [media] rtl28xxu: add 1b80:d395 Peak DVB-T USB + - LP: #1347088 + * [media] rtl28xxu: add [1b80:d39d] Sveon STV20 + - LP: #1347088 + * [media] rtl28xxu: add [1b80:d3af] Sveon STV27 + - LP: #1347088 + * ASoC: max98090: Fix reset at resume time + - LP: #1347088 + * ACPI: Fix conflict between customized DSDT and DSDT local copy + - LP: #1347088 + * PM / OPP: fix incorrect OPP count handling in of_init_opp_table + - LP: #1347088 + * Target/iser: Bail from accept_np if np_thread is trying to close + - LP: #1347088 + * Target/iser: Fix hangs in connection teardown + - LP: #1347088 + * HID: core: fix validation of report id 0 + - LP: #1347088 + * IB/srp: Fix a sporadic crash triggered by cable pulling + - LP: #1347088 + * Target/iser: Improve cm events handling + - LP: #1347088 + * Target/iser: Wait for proper cleanup before unloading + - LP: #1347088 + * mtd: nand: omap: fix BCHx ecc.correct to return detected bit-flips in + erased-page + - LP: #1347088 + * mtd: eLBC NAND: fix subpage write support + - LP: #1347088 + * reiserfs: call truncate_setsize under tailpack mutex + - LP: #1347088 + * ARM: stacktrace: avoid listing stacktrace functions in stacktrace + - LP: #1347088 + * SUNRPC: Fix a module reference leak in svc_handle_xprt + - LP: #1347088 + * [media] uvcvideo: Fix clock param realtime setting + - LP: #1347088 + * [media] ivtv: Fix Oops when no firmware is loaded + - LP: #1347088 + * CIFS: Fix memory leaks in SMB2_open + - LP: #1347088 + * iio:adc:max1363 incorrect resolutions for max11604, max11605, max11610 + and max11611. + - LP: #1347088 + * staging/mt29f_spinand: Terminate of match table + - LP: #1347088 + * mac80211: fix IBSS join by initializing last_scan_completed + - LP: #1347088 + * KVM: lapic: sync highest ISR to hardware apic on EOI + - LP: #1347088 + * s390/time: cast tv_nsec to u64 prior to shift in update_vsyscall + - LP: #1347088 + * ahci: add PCI ID for Marvell 88SE91A0 SATA Controller + - LP: #1347088 + * ext4: fix zeroing of page during writeback + - LP: #1347088 + * ext4: fix wrong assert in ext4_mb_normalize_request() + - LP: #1347088 + * IB/mlx5: add missing padding at end of struct mlx5_ib_create_cq + - LP: #1347088 + * IB/mlx5: add missing padding at end of struct mlx5_ib_create_srq + - LP: #1347088 + * IB/qib: Fix port in pkey change event + - LP: #1347088 + * IB/ipath: Translate legacy diagpkt into newer extended diagpkt + - LP: #1347088 + * mei: me: drop harmful wait optimization + - LP: #1347088 + * mei: me: read H_CSR after asserting reset + - LP: #1347088 + * usb: usbtest: fix unlink write error with pattern 1 + - LP: #1347088 + * s390/lowcore: reserve 96 bytes for IRB in lowcore + - LP: #1347088 + * mac80211: fix a memory leak on sta rate selection table + - LP: #1347088 + * mac80211: don't check netdev state for debugfs read/write + - LP: #1347088 + * mtd: pxa3xx_nand: make the driver work on big-endian systems + - LP: #1347088 + * hv: use correct order when freeing monitor_pages + - LP: #1347088 + * usb: qcserial: add Netgear AirCard 341U + - LP: #1347088 + * usb: qcserial: add additional Sierra Wireless QMI devices + - LP: #1347088 + * IB/umad: Fix error handling + - LP: #1347088 + * RDMA/cxgb4: Add missing padding at end of struct c4iw_create_cq_resp + - LP: #1347088 + * MIPS: KVM: Allocate at least 16KB for exception handlers + - LP: #1347088 + * block: virtio_blk: don't hold spin lock during world switch + - LP: #1347088 + * nfsd: getattr for FATTR4_WORD0_FILES_AVAIL needs the statfs buffer + - LP: #1347088 + * ASoC: tlv320aci3x: Fix custom snd_soc_dapm_put_volsw_aic3x() function + - LP: #1347088 + * UBIFS: Remove incorrect assertion in shrink_tnc() + - LP: #1347088 + * Bluetooth: Fix L2CAP deadlock + - LP: #1347088 + * vgaswitcheroo: switch the mux to the igp on power down when runpm is + enabled + - LP: #1347088 + * drm/radeon: fix typo in radeon_connector_is_dp12_capable() + - LP: #1347088 + * drm/radeon/dp: fix lane/clock setup for dp 1.2 capable devices + - LP: #1347088 + * drm/radeon/atom: fix dithering on certain panels + - LP: #1347088 + * drm/radeon: only apply hdmi bpc pll flags when encoder mode is hdmi + - LP: #1347088 + * ahci: Add Device ID for HighPoint RocketRaid 642L + - LP: #1347088 + * mm: fix sleeping function warning from __put_anon_vma + - LP: #1347088 + * hugetlb: restrict hugepage_migration_support() to x86_64 + - LP: #1347088 + * kthread: fix return value of kthread_create() upon SIGKILL. + - LP: #1347088 + * mm: vmscan: do not throttle based on pfmemalloc reserves if node has no + ZONE_NORMAL + - LP: #1347088 + * memcg: do not hang on OOM when killed by userspace OOM access to memory + reserves + - LP: #1347088 + * mm: page_alloc: use word-based accesses for get/set pageblock bitmaps + - LP: #1347088 + * mm/memory-failure.c-failure: send right signal code to correct thread + - LP: #1347088 + * mm/memory-failure.c: don't let collect_procs() skip over processes for + MF_ACTION_REQUIRED + - LP: #1347088 + * mm/memory-failure.c: support use of a dedicated thread to handle + SIGBUS(BUS_MCEERR_AO) + - LP: #1347088 + * powerpc/serial: Use saner flags when creating legacy ports + - LP: #1347088 + * ALSA: hda/realtek - Add support of ALC891 codec + - LP: #1347088 + * rbd: use reference counts for image requests + - LP: #1347088 + * iscsi-target: Reject mutual authentication with reflected CHAP_C + - LP: #1347088 + * powerpc/mm: Check paca psize is up to date for huge mappings + - LP: #1347088 + * IB/umad: Fix use-after-free on close + - LP: #1347088 + * mm: vmscan: clear kswapd's special reclaim powers before exiting + - LP: #1347088 + * rtc: rtc-at91rm9200: fix infinite wait for ACKUPD irq + - LP: #1347088 + * ptrace: fix fork event messages across pid namespaces + - LP: #1347088 + * idr: fix overflow bug during maximum ID calculation at maximum height + - LP: #1347088 + * Input: elantech - don't set bit 1 of reg_10 when the no_hw_res quirk is + set + - LP: #1347088 + * nfsd4: fix FREE_STATEID lockowner leak + - LP: #1347088 + * Btrfs: fix double free in find_lock_delalloc_range + - LP: #1347088 + * target: Set CMD_T_ACTIVE bit for Task Management Requests + - LP: #1347088 + * target: Use complete_all for se_cmd->t_transport_stop_comp + - LP: #1347088 + * iscsi-target: Fix ABORT_TASK + connection reset iscsi_queue_req memory + leak + - LP: #1347088 + * drm/nv50-/mc: fix kms pageflip events by reordering irq handling order. + - LP: #1347088 + * drm/nouveau/kms/nv04-nv40: fix pageflip events via special case. + - LP: #1347088 + * NFS: populate ->net in mount data when remounting + - LP: #1347088 + * watchdog: kempld-wdt: Use the correct value when configuring the + prescaler with the watchdog + - LP: #1347088 + * watchdog: ath79_wdt: avoid spurious restarts on AR934x + - LP: #1347088 + * watchdog: sp805: Set watchdog_device->timeout from ->set_timeout() + - LP: #1347088 + * fs,userns: Change inode_capable to capable_wrt_inode_uidgid + - LP: #1347088 + * powerpc: Add AT_HWCAP2 to indicate V.CRYPTO category support + - LP: #1347088 + * powerpc: Correct DSCR during TM context switch + - LP: #1347088 + * powerpc: Don't setup CPUs with bad status + - LP: #1347088 + * Target/iscsi: Fix sendtargets response pdu for iser transport + - LP: #1347088 + * target: Report correct response length for some commands + - LP: #1347088 + * dm thin: update discard_granularity to reflect the thin-pool blocksize + - LP: #1347088 + * ALSA: compress: Cancel the optimization of compiler and fix the size of + struct for all platform. + - LP: #1347088 + * hwmon: (ina2xx) Cast to s16 on shunt and current regs + - LP: #1347088 + * evm: prohibit userspace writing 'security.evm' HMAC value + - LP: #1347088 + * ALSA: hda - Add quirk for external mic on Lifebook U904 + - LP: #1328587, #1347088 + * ALSA: hda/realtek - Add more entry for enable HP mute led + - LP: #1347088 + * ALSA: hda/realtek - Add more entry for enable HP mute led + - LP: #1347088 + * staging: iio: tsl2x7x_core: fix proximity treshold + - LP: #1347088 + * iio: Fix endianness issue in ak8975_read_axis() + - LP: #1347088 + * rtmutex: Handle deadlock detection smarter + - LP: #1347088 + * rtmutex: Detect changes in the pi lock chain + - LP: #1347088 + * drm/i915: Disable FBC by default also on Haswell and later + - LP: #1347088 + * drm/i915: Avoid div-by-zero when pixel_multiplier is zero + - LP: #1347088 + * drm/i915: Reorder semaphore deadlock check + - LP: #1347088 + * iio: adc: at91: signedness bug in at91_adc_get_trigger_value_by_name() + - LP: #1347088 + * rtmutex: Plug slow unlock race + - LP: #1347088 + * ACPI / ia64 / sba_iommu: Restore the working initialization ordering + - LP: #1347088 + * epoll: fix use-after-free in eventpoll_release_file + - LP: #1347088 + * drm/nouveau/kms: reference vblank for crtc during pageflip. + - LP: #1347088 + * ARM: mvebu: DT: fix OpenBlocks AX3-4 RAM size + - LP: #1347088 + * USB: EHCI: avoid BIOS handover on the HASEE E200 + - LP: #1347088 + * arm64: Bug fix in stack alignment exception + - LP: #1347088 + * arm64: ptrace: change fs when passing kernel pointer to regset code + - LP: #1347088 + * arm64: uid16: fix __kernel_old_{gid,uid}_t definitions + - LP: #1347088 + * arm64: ptrace: fix empty registers set in prstatus of aarch32 process + core + - LP: #1347088 + * ALSA: control: Protect user controls against concurrent access + - LP: #1347088 + * ALSA: control: Fix replacing user controls + - LP: #1347088 + * ALSA: control: Don't access controls outside of protected regions + - LP: #1347088 + * ALSA: control: Handle numid overflow + - LP: #1347088 + * ALSA: control: Make sure that id->index does not overflow + - LP: #1347088 + * Bluetooth: Fix SSP acceptor just-works confirmation without MITM + - LP: #1347088 + * Bluetooth: Fix setting correct authentication information for SMP STK + - LP: #1347088 + * Bluetooth: Fix indicating discovery state when canceling inquiry + - LP: #1347088 + * Bluetooth: Fix locking of hdev when calling into SMP code + - LP: #1347088 + * Bluetooth: Allow change security level on ATT_CID in slave role + - LP: #1347088 + * rt2x00: disable TKIP on USB + - LP: #1347088 + * b43: fix frequency reported on G-PHY with /new/ firmware + - LP: #1347088 + * rt2x00: fix rfkill regression on rt2500pci + - LP: #1347088 + * blkcg: fix use-after-free in __blkg_release_rcu() by making blkcg_gq + refcnt an atomic_t + - LP: #1347088 + * rbd: handle parent_overlap on writes correctly + - LP: #1347088 + * ALSA: hda - hdmi: call overridden init on resume + - LP: #1347088 + * x86_32, entry: Do syscall exit work on badsys (CVE-2014-4508) + - LP: #1347088 + * hugetlb: fix copy_hugetlb_page_range() to handle migration/hwpoisoned + entry + - LP: #1347088 + * kernel/watchdog.c: remove preemption restrictions when restarting + lockup detector + - LP: #1347088 + * DMA, CMA: fix possible memory leak + - LP: #1347088 + * mm: fix crashes from mbind() merging vmas + - LP: #1347088 + * drm/i915: Hold the table lock whilst walking the file's idr and + counting the objects in debugfs + - LP: #1347088 + * [CIFS] fix mount failure with broken pathnames when smb3 mount with + mapchars option + - LP: #1347088 + * aio: fix aio request leak when events are reaped by userspace + - LP: #1347088 + * aio: fix kernel memory disclosure in io_getevents() introduced in v3.10 + - LP: #1347088 + * nfs: Fix cache_validity check in nfs_write_pageuptodate() + - LP: #1347088 + * powerpc: Don't skip ePAPR spin-table CPUs + - LP: #1347088 + * net: allwinner: emac: Add missing free_irq + - LP: #1347088 + * ALSA: usb-audio: Fix races at disconnection and PCM closing + - LP: #1347088 + * recordmcount/MIPS: Fix possible incorrect mcount_loc table entries in + modules + - LP: #1347088 + * MIPS: MSC: Prevent out-of-bounds writes to MIPS SC ioremap'd region + - LP: #1347088 + * ALSA: hda - restore BCLK M/N values when resuming HSW/BDW display + controller + - LP: #1347088 + * target: Fix left-over se_lun->lun_sep pointer OOPs + - LP: #1347088 + * iscsi-target: Explicily clear login response PDU in exception path + - LP: #1347088 + * efi-pstore: Fix an overflow on 32-bit builds + - LP: #1347088 + * lz4: fix another possible overrun + - LP: #1347088 + * iscsi-target: Avoid rejecting incorrect ITT for Data-Out + - LP: #1347088 + * iscsi-target: fix iscsit_del_np deadlock on unload + - LP: #1347088 + * Linux 3.13.11.5 + - LP: #1347088 + * powerpc/powernv: Fix endianness problems in EEH + - LP: #1340200 + * libahci: export ahci_qc_issue() and ahci_start_fix_rx() + - LP: #1335645 + * ahci_xgene: fix the dma state machine lockup for the IDENTIFY DEVICE + PIO mode command. + - LP: #1335645 + * fix build error in gpio-dwapb patch + - LP: #1348808 + * usb: Check if port status is equal to RxDetect + - LP: #1322409 + * net/mlx4_en: Protect MAC address modification with the state_lock mutex + - LP: #1347012 + * net/mlx4_en: Fix errors in MAC address changing when port is down + - LP: #1347012 + * bonding: Advertize vxlan offload features when supported + - LP: #1347012 + * net/mlx4_core: Fix the error flow when probing with invalid VF + configuration + - LP: #1347012 + * net/mlx4_en: Don't configure the HW vxlan parser when vxlan offloading + isn't set + - LP: #1347012 + * net/mlx4_core: Keep only one driver entry release mlx4_priv + - LP: #1347012 + * net/mlx4_core: Preserve pci_dev_data after __mlx4_remove_one() + - LP: #1347012 + * net/mlx4_core: Defer VF initialization till PF is fully initialized + - LP: #1347012 + * net/mlx4_core: Adjust port number in qp_attach wrapper when detaching + - LP: #1347012 + * net/mlx4_core: Fix slave id computation for single port VF + - LP: #1347012 + * net/mlx4_core: Load the Eth driver first + - LP: #1347012 + * net/mlx4_core: Don't issue PCIe speed/width checks for VFs + - LP: #1347012 + * net/mlx4_core: Add UPDATE_QP SRIOV wrapper support + - LP: #1347012 + * net/mlx4_core: Reset RoCE VF gids when guest driver goes down + - LP: #1347012 + * net/mlx4_en: Reduce memory consumption on kdump kernel + - LP: #1347012 + * net/mlx4_core: Use low memory profile on kdump kernel + - LP: #1347012 + * net/mlx4_en: current_mac isn't updated in port up + - LP: #1347012 + * net/mlx4_en: Disable blueflame using ethtool private flags + - LP: #1347012 + * net/mlx4_en: Fix mac_hash database inconsistency + - LP: #1347012 + * ext4: handle symlink properly with inline_data + - LP: #1349020 + * net/mlx4_en: cq->irq_desc wasn't set in legacy EQ's + - LP: #1354242 + * rtl8821ae: fixup staging driver for revised + ieee80211_is_robust_mgmt_frame + - LP: #1354469 + * 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 + * sunrpc: create a new dummy pipe for gssd to hold open + - LP: #1327563 + * sunrpc: replace sunrpc_net->gssd_running flag with a more reliable + check + - LP: #1327563 + * nfs: check if gssd is running before attempting to use krb5i auth in + SETCLIENTID call + - LP: #1327563 + * ACPI / PAD: call schedule() when need_resched() is true + - LP: #1356913 + * KVM: ioapic: fix assignment of ioapic->rtc_status.pending_eoi + (CVE-2014-0155) + - LP: #1356913 + * target: Explicitly clear ramdisk_mcp backend pages + - LP: #1356913 + * sctp: Fix sk_ack_backlog wrap-around problem + - LP: #1356913 + * mm: hugetlb: fix copy_hugetlb_page_range() + - LP: #1356913 + * x86_32, entry: Store badsys error code in %eax + - LP: #1356913 + * shmem: fix faulting into a hole while it's punched + - LP: #1356913 + * shmem: fix faulting into a hole, not taking i_mutex + - LP: #1356913 + * shmem: fix splicing from a hole while it's punched + - LP: #1356913 + * ipvs: Fix panic due to non-linear skb + - LP: #1356913 + * ALSA: hda - verify pin:converter connection on unsol event for HSW and + VLV + - LP: #1356913 + * ALSA: hda - verify pin:cvt connection on preparing a stream for Intel + HDMI codec + - LP: #1356913 + * x86/xen: safely map and unmap grant frames when in atomic context + - LP: #1356913 + * ext4: Fix buffer double free in ext4_alloc_branch() + - LP: #1356913 + * ARM: OMAP2+: Fix parser-bug in platform muxing code + - LP: #1356913 + * KVM: x86: Increase the number of fixed MTRR regs to 10 + - LP: #1356913 + * KVM: x86: preserve the high 32-bits of the PAT register + - LP: #1356913 + * usb: musb: ux500: don't propagate the OF node + - LP: #1356913 + * usb: gadget: f_fs: fix NULL pointer dereference when there are no + strings + - LP: #1356913 + * staging: iio/ad7291: fix error code in ad7291_probe() + - LP: #1356913 + * iio: of_iio_channel_get_by_name() returns non-null pointers for error + legs + - LP: #1356913 + * irqchip: spear_shirq: Fix interrupt offset + - LP: #1356913 + * USB: option: add device ID for SpeedUp SU9800 usb 3g modem + - LP: #1356913 + * USB: ftdi_sio: fix null deref at port probe + - LP: #1356913 + * usb: option: add/modify Olivetti Olicard modems + - LP: #1356913 + * scsi_error: fix invalid setting of host byte + - LP: #1356913 + * xhci: Use correct SLOT ID when handling a reset device command + - LP: #1356913 + * xhci: correct burst count field for isoc transfers on 1.0 xhci hosts + - LP: #1356913 + * xhci: clear root port wake on bits if controller isn't wake-up capable + - LP: #1356913 + * xhci: Fix runtime suspended xhci from blocking system suspend. + - LP: #1356913 + * ibmvscsi: Abort init sequence during error recovery + - LP: #1356913 + * ibmvscsi: Add memory barriers for send / receive + - LP: #1356913 + * virtio-scsi: avoid cancelling uninitialized work items + - LP: #1356913 + * virtio-scsi: fix various bad behavior on aborted requests + - LP: #1356913 + * MIPS: KVM: Fix memory leak on VCPU + - LP: #1356913 + * ext4: Fix hole punching for files with indirect blocks + - LP: #1356913 + * usb: musb: Fix panic upon musb_am335x module removal + - LP: #1356913 + * usb: musb: Ensure that cppi41 timer gets armed on premature DMA TX irq + - LP: #1356913 + * nfsd: fix rare symlink decoding bug + - LP: #1356913 + * tools: ffs-test: fix header values endianess + - LP: #1356913 + * usb-storage/SCSI: Add broken_fua blacklist flag + - LP: #1356913 + * drm/radeon/dpm: fix typo in vddci setup for eg/btc + - LP: #1356913 + * drm/radeon/dpm: fix vddci setup typo on cayman + - LP: #1356913 + * tracing: Remove ftrace_stop/start() from reading the trace file + - LP: #1356913 + * usb: chipidea: udc: delete td from req's td list at ep_dequeue + - LP: #1356913 + * drm/radeon/cik: fix typo in EOP packet + - LP: #1356913 + * md: flush writes before starting a recovery. + - LP: #1356913 + * drm/vmwgfx: Fix incorrect write to read-only register v2: + - LP: #1356913 + * mm: page_alloc: fix CMA area initialisation when pageblock > MAX_ORDER + - LP: #1356913 + * /proc/stat: convert to single_open_size() + - LP: #1356913 + * nick kvfree() from apparmor + - LP: #1356913 + * fs/seq_file: fallback to vmalloc allocation + - LP: #1356913 + * lz4: add overrun checks to lz4_uncompress_unknownoutputsize() + - LP: #1356913 + * arm64: mm: Make icache synchronisation logic huge page aware + - LP: #1356913 + * workqueue: fix dev_set_uevent_suppress() imbalance + - LP: #1356913 + * cpuset,mempolicy: fix sleeping function called from invalid context + - LP: #1356913 + * crypto: sha512_ssse3 - fix byte count to bit count conversion + - LP: #1356913 + * thermal: hwmon: Make the check for critical temp valid consistent + - LP: #1356913 + * clk: s2mps11: Fix double free corruption during driver unbind + - LP: #1356913 + * hwmon: (amc6821) Fix permissions for temp2_input + - LP: #1356913 + * hwmon: (adm1029) Ensure the fan_div cache is updated in set_fan_div + - LP: #1356913 + * hwmon: (adm1021) Fix cache problem when writing temperature limits + - LP: #1356913 + * ext4: fix unjournalled bg descriptor while initializing inode bitmap + - LP: #1356913 + * ext4: clarify error count warning messages + - LP: #1356913 + * ext4: clarify ext4_error message in ext4_mb_generate_buddy_error() + - LP: #1356913 + * ext4: disable synchronous transaction batching if max_batch_time==0 + - LP: #1356913 + * intel_pstate: Fix setting VID + - LP: #1356913 + * intel_pstate: don't touch turbo bit if turbo disabled or unavailable. + - LP: #1356913 + * intel_pstate: Set CPU number before accessing MSRs + - LP: #1356913 + * USB: cp210x: add support for Corsair usb dongle + - LP: #1356913 + * usb: option: Add ID for Telewell TW-LTE 4G v2 + - LP: #1356913 + * ACPI / EC: Avoid race condition related to advance_transaction() + - LP: #1356913 + * ACPI / EC: Add asynchronous command byte write support + - LP: #1356913 + * ACPI / EC: Remove duplicated ec_wait_ibf0() waiter + - LP: #1356913 + * ACPI / EC: Fix race condition in ec_transaction_completed() + - LP: #1356913 + * ACPI / battery: Retry to get battery information if failed during + probing + - LP: #1356913 + * hwmon: (adm1031) Fix writes to limit registers + - LP: #1356913 + * workqueue: zero cpumask of wq_numa_possible_cpumask on init + - LP: #1356913 + * hwmon: (emc2103) Clamp limits instead of bailing out + - LP: #1356913 + * arm64: implement TASK_SIZE_OF + - LP: #1356913 + * iio: ti_am335x_adc: Fix: Use same step id at FIFOs both ends + - LP: #1356913 + * cpufreq: Makefile: fix compilation for davinci platform + - LP: #1356913 + * drm/i915: Don't clobber the GTT when it's within stolen memory + - LP: #1356913 + * Drivers: hv: vmbus: Fix a bug in the channel callback dispatch code + - LP: #1356913 + * USB: ftdi_sio: Add extra PID. + - LP: #1356913 + * crypto: caam - fix memleak in caam_jr module + - LP: #1356913 + * dm: allocate a special workqueue for deferred device removal + - LP: #1356913 + * dm io: fix a race condition in the wake up code for sync_io + - LP: #1356913 + * drm/radeon/dp: return -EIO for flags not zero case + - LP: #1356913 + * drm/radeon: fix typo in golden register setup on evergreen + - LP: #1356913 + * drm/radeon: fix typo in ci_stop_dpm() + - LP: #1356913 + * drm/radeon/dpm: Reenabling SS on Cayman + - LP: #1356913 + * powerpc/perf: Add PPMU_ARCH_207S define + - LP: #1356913 + * powerpc/perf: Clear MMCR2 when enabling PMU + - LP: #1356913 + * powerpc/perf: Never program book3s PMCs with values >= 0x80000000 + - LP: #1356913 + * USB: serial: ftdi_sio: Add Infineon Triboard + - LP: #1356913 + * phy: core: Fix error path in phy_create() + - LP: #1356913 + * ext4: fix a potential deadlock in __ext4_es_shrink() + - LP: #1356913 + * parisc: add serial ports of C8000/1GHz machine to hardware database + - LP: #1356913 + * parisc: fix fanotify_mark() syscall on 32bit compat kernel + - LP: #1356913 + * parisc: drop unused defines and header includes + - LP: #1356913 + * clk: spear3xx: Use proper control register offset + - LP: #1356913 + * Bluetooth: Ignore H5 non-link packets in non-active state + - LP: #1356913 + * iwlwifi: update the 7265 series HW IDs + - LP: #1356913 + * mwifiex: fix Tx timeout issue + - LP: #1356913 + * x86, tsc: Fix cpufreq lockup + - LP: #1356913 + * perf/x86/intel: ignore CondChgd bit to avoid false NMI handling + - LP: #1356913 + * perf: Do not allow optimized switch for non-cloned events + - LP: #1356913 + * xen/manage: fix potential deadlock when resuming the console + - LP: #1356913 + * iwlwifi: dvm: don't enable CTS to self + - LP: #1356913 + * iwlwifi: mvm: disable CTS to Self + - LP: #1356913 + * xen/balloon: set ballooned out pages as invalid in p2m + - LP: #1356913 + * mtd: devices: elm: fix elm_context_save() and elm_context_restore() + functions + - LP: #1356913 + * fuse: timeout comparison fix + - LP: #1356913 + * fuse: ignore entry-timeout on LOOKUP_REVAL + - LP: #1356913 + * fuse: handle large user and group ID + - LP: #1356913 + * alarmtimer: Fix bug where relative alarm timers were treated as + absolute + - LP: #1356913 + * irqchip: gic: Add support for cortex a7 compatible string + - LP: #1356913 + * net: mvneta: fix operation in 10 Mbit/s mode + - LP: #1356913 + * net: mvneta: Fix big endian issue in mvneta_txq_desc_csum() + - LP: #1356913 + * igb: Workaround for i210 Errata 25: Slow System Clock + - LP: #1356913 + * x86/efi: Include a .bss section within the PE/COFF headers + - LP: #1356913 + * igb: do a reset on SR-IOV re-init if device is down + - LP: #1356913 + * iio:core: Handle error when mask type is not separate + - LP: #1356913 + * of/irq: do irq resolution in platform_get_irq_byname() + - LP: #1356913 + * platform_get_irq: Revert to platform_get_resource if of_irq_get fails + - LP: #1356913 + * aio: protect reqs_available updates from changes in interrupt handlers + - LP: #1356913 + * hwmon: (da9052) Don't use dash in the name attribute + - LP: #1356913 + * hwmon: (da9055) Don't use dash in the name attribute + - LP: #1356913 + * PM / sleep: Fix request_firmware() error at resume + - LP: #1356913 + * ALSA: hda - Fix broken PM due to incomplete i915 initialization + - LP: #1356913 + * tracing: Add ftrace_trace_stack into __trace_puts/__trace_bputs + - LP: #1356913 + * tracing: Fix graph tracer with stack tracer on other archs + - LP: #1356913 + * tracing: Add TRACE_ITER_PRINTK flag check in __trace_puts/__trace_bputs + - LP: #1356913 + * dm thin metadata: do not allow the data block size to change + - LP: #1356913 + * dm cache metadata: do not allow the data block size to change + - LP: #1356913 + * quota: missing lock in dqcache_shrink_scan() + - LP: #1356913 + * ring-buffer: Fix polling on trace_pipe + - LP: #1356913 + * sched: Fix possible divide by zero in avg_atom() calculation + - LP: #1356913 + * locking/mutex: Disable optimistic spinning on some architectures + - LP: #1356913 + * drm/qxl: return IRQ_NONE if it was not our irq + - LP: #1356913 + * hwmon: (adt7470) Fix writes to temperature limit registers + - LP: #1356913 + * cpufreq: move policy kobj to policy->cpu at resume + - LP: #1356913 + * drm/radeon: avoid leaking edid data + - LP: #1356913 + * drm/radeon: set default bl level to something reasonable + - LP: #1356913 + * usb: chipidea: udc: Disable auto ZLP generation on ep0 + - LP: #1356913 + * irqchip: gic: Fix core ID calculation when topology is read from DT + - LP: #1356913 + * slab_common: fix the check for duplicate slab names + - LP: #1356913 + * xtensa: add fixup for double exception raised in window overflow + - LP: #1356913 + * [media] media: v4l2-core: v4l2-dv-timings.c: Cleaning up code wrong + value used in aspect ratio + - LP: #1356913 + * [media] hdpvr: fix two audio bugs + - LP: #1356913 + * block: don't assume last put of shared tags is for the host + - LP: #1356913 + * blkcg: don't call into policy draining if root_blkg is already gone + - LP: #1356913 + * block: provide compat ioctl for BLKZEROOUT + - LP: #1356913 + * libata: support the ata host which implements a queue depth less than + 32 + - LP: #1356913 + * [media] tda10071: force modulation to QPSK on DVB-S + - LP: #1356913 + * [media] gspca_pac7302: Add new usb-id for Genius i-Look 317 + - LP: #1356913 + * s390/ptrace: fix PSW mask check + - LP: #1356913 + * ahci: add support for the Promise FastTrak TX8660 SATA HBA (ahci mode) + - LP: #1356913 + * Input: fix defuzzing logic + - LP: #1356913 + * tracing: Fix wraparound problems in "uptime" trace clock + - LP: #1356913 + * drm/i915: Reorder the semaphore deadlock check, again + - LP: #1356913 + * libata: introduce ata_host->n_tags to avoid oops on SAS controllers + - LP: #1356913 + * drm/radeon: fix irq ring buffer overflow handling + - LP: #1356913 + * coredump: fix the setting of PF_DUMPCORE + - LP: #1356913 + * fs: umount on symlink leaks mnt count + - LP: #1356913 + * hwmon: (smsc47m192) Fix temperature limit and vrm write operations + - LP: #1356913 + * parisc: Remove SA_RESTORER define + - LP: #1356913 + * drm/radeon: fix cut and paste issue for hawaii. + - LP: #1356913 + * parport: fix menu breakage + - LP: #1356913 + * Fix gcc-4.9.0 miscompilation of load_balance() in scheduler + - LP: #1356913 + * scsi: handle flush errors properly + - LP: #1356913 + * cfg80211: fix mic_failure tracing + - LP: #1356913 + * iio: buffer: Fix demux table creation + - LP: #1356913 + * iio:bma180: Fix scale factors to report correct acceleration units + - LP: #1356913 + * iio:bma180: Missing check for frequency fractional part + - LP: #1356913 + * powerpc/perf: Fix MMCR2 handling for EBB + - LP: #1356913 + * ath9k: fix aggregation session lockup + - LP: #1356913 + * sched_clock: Avoid corrupting hrtimer tree during suspend + - LP: #1356913 + * staging: vt6655: Fix Warning on boot handle_irq_event_percpu. + - LP: #1356913 + * staging: vt6655: Fix disassociated messages every 10 seconds + - LP: #1356913 + * can: c_can_platform: Fix raminit, use devm_ioremap() instead of + devm_ioremap_resource() + - LP: #1356913 + * crypto: arm-aes - fix encryption of unaligned data + - LP: #1356913 + * ARM: fix alignment of keystone page table fixup + - LP: #1356913 + * net: sendmsg: fix NULL pointer dereference + - LP: #1356913 + * mm/page-writeback.c: fix divide by zero in bdi_dirty_limits() + - LP: #1356913 + * mm, thp: do not allow thp faults to avoid cpuset restrictions + - LP: #1356913 + * rapidio/tsi721_dma: fix failure to obtain transaction descriptor + - LP: #1356913 + * memcg: oom_notify use-after-free fix + - LP: #1356913 + * crypto: af_alg - properly label AF_ALG socket + - LP: #1356913 + * printk: rename printk_sched to printk_deferred + - LP: #1356913 + * timer: Fix lock inversion between hrtimer_bases.lock and scheduler + locks + - LP: #1356913 + * dm bufio: fully initialize shrinker + - LP: #1356913 + * dm cache: fix race affecting dirty block count + - LP: #1356913 + * qlcnic: info leak in qlcnic_dcb_peer_app_info() + - LP: #1356913 + * netlink: rate-limit leftover bytes warning and print process name + - LP: #1356913 + * bridge: Prevent insertion of FDB entry with disallowed vlan + - LP: #1356913 + * net: tunnels - enable module autoloading + - LP: #1356913 + * net: fix inet_getid() and ipv6_select_ident() bugs + - LP: #1356913 + * team: fix mtu setting + - LP: #1356913 + * tcp: fix cwnd undo on DSACK in F-RTO + - LP: #1356913 + * sh_eth: use RNC mode for packet reception + - LP: #1356913 + * sh_eth: fix SH7619/771x support + - LP: #1356913 + * net: filter: fix typo in sparc BPF JIT + - LP: #1356913 + * net: filter: fix sparc32 typo + - LP: #1356913 + * net: qmi_wwan: add Olivetti Olicard modems + - LP: #1356913 + * net: force a list_del() in unregister_netdevice_many() + - LP: #1356913 + * ipip, sit: fix ipv4_{update_pmtu,redirect} calls + - LP: #1356913 + * sfc: PIO:Restrict to 64bit arch and use 64-bit writes. + - LP: #1356913 + * ipv4: fix a race in ip4_datagram_release_cb() + - LP: #1356913 + * rtnetlink: fix userspace API breakage for iproute2 < v3.9.0 + - LP: #1356913 + * vxlan: use dev->needed_headroom instead of dev->hard_header_len + - LP: #1356913 + * udp: ipv4: do not waste time in __udp4_lib_mcast_demux_lookup + - LP: #1356913 + * ip_tunnel: fix ip_tunnel_lookup + - LP: #1356913 + * slip: Fix deadlock in write_wakeup + - LP: #1356913 + * slcan: Port write_wakeup deadlock fix from slip + - LP: #1356913 + * net: sctp: propagate sysctl errors from proc_do* properly + - LP: #1356913 + * tcp: fix tcp_match_skb_to_sack() for unaligned SACK at end of an skb + - LP: #1356913 + * net: sctp: check proc_dointvec result in proc_sctp_do_auth + - LP: #1356913 + * 8021q: fix a potential memory leak + - LP: #1356913 + * net: huawei_cdc_ncm: increase command buffer size + - LP: #1356913 + * ipv4: fix dst race in sk_dst_get() + - LP: #1356913 + * ipv4: irq safe sk_dst_[re]set() and ipv4_sk_update_pmtu() fix + - LP: #1356913 + * net: fix sparse warning in sk_dst_set() + - LP: #1356913 + * vlan: free percpu stats in device destructor + - LP: #1356913 + * bnx2x: fix possible panic under memory stress + - LP: #1356913 + * tcp: Fix divide by zero when pushing during tcp-repair + - LP: #1356913 + * ipv4: icmp: Fix pMTU handling for rare case + - LP: #1356913 + * net: qmi_wwan: Add ID for Telewell TW-LTE 4G v2 + - LP: #1356913 + * net: qmi_wwan: add two Sierra Wireless/Netgear devices + - LP: #1356913 + * net: Fix NETDEV_CHANGE notifier usage causing spurious arp flush + - LP: #1356913 + * igmp: fix the problem when mc leave group + - LP: #1356913 + * tcp: fix false undo corner cases + - LP: #1356913 + * appletalk: Fix socket referencing in skb + - LP: #1356913 + * netlink: Fix handling of error from netlink_dump(). + - LP: #1356913 + * be2net: set EQ DB clear-intr bit in be_open() + - LP: #1356913 + * tipc: clear 'next'-pointer of message fragments before reassembly + - LP: #1356913 + * net: sctp: fix information leaks in ulpevent layer + - LP: #1356913 + * net: pppoe: use correct channel MTU when using Multilink PPP + - LP: #1356913 + * sunvnet: clean up objects created in vnet_new() on vnet_exit() + - LP: #1356913 + * net: huawei_cdc_ncm: add "subclass 3" devices + - LP: #1356913 + * dns_resolver: assure that dns_query() result is null-terminated + - LP: #1356913 + * dns_resolver: Null-terminate the right string + - LP: #1356913 + * ipv4: fix buffer overflow in ip_options_compile() + - LP: #1356913 + * x86/xen: no need to explicitly register an NMI callback + - LP: #1356913 + * Linux 3.13.11.6 + - LP: #1356913 + + -- Joseph Salisbury Thu, 14 Aug 2014 17:12:19 -0400 + +linux (3.13.0-34.60) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1356396 + + [ Upstream Kernel Changes ] + + * mnt: Only change user settable mount flags in remount + - CVE-2014-5206 + * mnt: Move the test for MNT_LOCK_READONLY from change_mount_flags into + do_remount + - CVE-2014-5206 + * mnt: Correct permission checks in do_remount + - CVE-2014-5207 + * mnt: Change the default remount atime from relatime to the existing + value + - CVE-2014-5207 + + -- Brad Figg Tue, 29 Jul 2014 08:25:07 -0700 + +linux (3.13.0-33.58) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1349897 + + [ Upstream Kernel Changes ] + + * mm: numa: do not automatically migrate KSM pages + - LP: #1346917 + * net: fix UDP tunnel GSO of frag_list GRO packets + - LP: #1331219 + * auditsc: audit_krule mask accesses need bounds checking + - LP: #1347088 + * n_tty: Fix buffer overruns with larger-than-4k pastes + - LP: #1208740 + + -- Tim Gardner Fri, 18 Jul 2014 14:57:50 +0000 + +linux (3.13.0-32.57) trusty; urgency=low + + [ Upstream Kernel Changes ] + + * l2tp: Privilege escalation in ppp over l2tp sockets + - LP: #1341472 + - CVE-2014-4943 + + -- Luis Henriques Mon, 14 Jul 2014 10:03:44 +0100 + +linux (3.13.0-32.56) trusty; urgency=low + + [ Luis Henriques ] + + * Merged back Ubuntu-3.13.0-30.55 security release + * Revert "x86_64,ptrace: Enforce RIP <= TASK_SIZE_MAX (CVE-2014-4699)" + - LP: #1337339 + * Release Tracking Bug + - LP: #1338524 + + [ Upstream Kernel Changes ] + + * ptrace,x86: force IRET path after a ptrace_stop() + - LP: #1337339 + - CVE-2014-4699 + * hpsa: add new Smart Array PCI IDs (May 2014) + - LP: #1337516 + + -- Luis Henriques Mon, 07 Jul 2014 11:38:37 +0100 + +linux (3.13.0-31.55) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1336278 + + [ Andy Whitcroft ] + + * [Config] switch hyper-keyboard to virtual + - LP: #1325306 + * [Packaging] linux-udeb-flavour -- standardise on linux prefix + + [ dann frazier ] + + * [Config] CONFIG_GPIO_DWAPB=m + - LP: #1334823 + + [ Feng Kan ] + + * SAUCE: (no-up) arm64: dts: Add Designware GPIO dts binding to APM + X-Gene platform + - LP: #1334823 + + [ John Johansen ] + + * SAUCE: (no-up) apparmor: fix apparmor spams log with warning message + - LP: #1308761 + + [ Kamal Mostafa ] + + * [Config] updateconfigs ACPI_PROCFS_POWER=y after v3.13.11.4 rebase + + [ Loc Ho ] + + * SAUCE: (no-up) phy-xgene: Use correct tuning for Mustang + - LP: #1335636 + + [ Michael Ellerman ] + + * SAUCE: (no-up) powerpc/perf: Ensure all EBB register state is cleared + on fork() + - LP: #1328914 + + [ Ming Lei ] + + * Revert "SAUCE: (no-up) rtc: Add X-Gene SoC Real Time Clock Driver" + - LP: #1274305 + + [ Suman Tripathi ] + + * SAUCE: (no-up) libahci: Implement the function ahci_restart_engine to + restart the port dma engine. + - LP: #1335645 + * SAUCE: (no-up) ata: Fix the dma state machine lockup for the IDENTIFY + DEVICE PIO mode command. + - LP: #1335645 + + [ Tim Gardner ] + + * [Config] CONFIG_POWERNV_CPUFREQ=y for powerpc, ppc64el + - LP: #1324571 + * [Debian] Add UTS_UBUNTU_RELEASE_ABI to utsrelease.h + - LP: #1327619 + * [Config] CONFIG_HAVE_MEMORYLESS_NODES=y + - LP: #1332063 + * [Config] CONFIG_HID_RMI=m + - LP: #1305522 + + [ Upstream Kernel Changes ] + + * Revert "offb: Add palette hack for little endian" + - LP: #1333430 + * Revert "net: mvneta: fix usage as a module on RGMII configurations" + - LP: #1333837 + * Revert "USB: serial: add usbid for dell wwan card to sierra.c" + - LP: #1333837 + * Revert "macvlan : fix checksums error when we are in bridge mode" + - LP: #1333838 + * serial: uart: add hw flow control support configuration + - LP: #1328295 + * mm/numa: Remove BUG_ON() in __handle_mm_fault() + - LP: #1323165 + * Tools: hv: Handle the case when the target file exists correctly + - LP: #1306215 + * Documentation/devicetree/bindings: add documentation for the APM X-Gene + SoC RTC DTS binding + - LP: #1274305 + * drivers/rtc: add APM X-Gene SoC RTC driver + - LP: #1274305 + * arm64: add APM X-Gene SoC RTC DTS entry + - LP: #1274305 + * powerpc/perf: Add Power8 cache & TLB events + - LP: #1328914 + * powerpc/perf: Configure BHRB filter before enabling PMU interrupts + - LP: #1328914 + * powerpc/perf: Define perf_event_print_debug() to print PMU register + values + - LP: #1328914 + * powerpc: Add a cpu feature CPU_FTR_PMAO_BUG + - LP: #1328914 + * powerpc/perf: Add lost exception workaround + - LP: #1328914 + * powerpc/perf: Reject EBB events which specify a sample_type + - LP: #1328914 + * powerpc/perf: Clean up the EBB hash defines a little + - LP: #1328914 + * powerpc/perf: Avoid mutating event in power8_get_constraint() + - LP: #1328914 + * powerpc/perf: Add BHRB constraint and IFM MMCRA handling for EBB + - LP: #1328914 + * powerpc/perf: Enable BHRB access for EBB events + - LP: #1328914 + * powerpc/perf: Fix handling of L3 events with bank == 1 + - LP: #1328914 + * Bluetooth: Add support for Intel Bluetooth device [8087:0a2a] + - LP: #1329184 + * iwlwifi: mvm: disable beacon filtering + - LP: #1293569 + * SUNRPC: Ensure that call_connect times out correctly + - LP: #1322407 + * SUNRPC: Ensure call_connect_status() deals correctly with SOFTCONN + tasks + - LP: #1322407 + * bitops: Fix signedness of compile-time hweight implementations + - LP: #1321791 + * cpumask.h: silence warning with -Wsign-compare + - LP: #1321791 + * fbdev/fb.h: silence warning with -Wsign-compare + - LP: #1321791 + * rtlwifi: make MSI support a module parameter + - LP: #1296591 + * rtlwifi: rtl8188ee: add msi module parameter + - LP: #1296591 + * rtlwifi: rtl8723be: add msi module parameter + - LP: #1296591 + * net: avoid dependency of net_get_random_once on nop patching + - LP: #1330671 + * x86-64, modify_ldt: Make support for 16-bit segments a runtime option + - LP: #1328965 + * ALSA: usb-audio: Prevent printk ratelimiting from spamming kernel log + while DEBUG not defined + - LP: #1319457 + * btrfs: fix defrag 32-bit integer overflow + - LP: #1324953 + * dell-laptop: Only install the i8042 filter when rfkill is active + - LP: #1289238 + * kthread: ensure locality of task_struct allocations + - LP: #1332063 + * slub: search partial list on numa_mem_id(), instead of numa_node_id() + - LP: #1332063 + * powerpc/numa: Enable USE_PERCPU_NUMA_NODE_ID + - LP: #1332063 + * powerpc/numa: Enable CONFIG_HAVE_MEMORYLESS_NODES + - LP: #1332063 + * drm/i915: Allow user modes to exceed DVI 165MHz limit + - LP: #1332220 + * HID: rmi: introduce RMI driver for Synaptics touchpads + - LP: #1305522 + * HID: rmi: do not stop the device at the end of probe + - LP: #1305522 + * HID: rmi: check for the existence of some optional queries before + reading query 12 + - LP: #1305522 + * HID: rmi: do not fetch more than 16 bytes in a query + - LP: #1305522 + * HID: rmi: fix wrong struct field name + - LP: #1305522 + * HID: rmi: fix masks for x and w_x data + - LP: #1305522 + * HID: rmi: do not handle touchscreens through hid-rmi + - LP: #1305522 + * ipv6: Fix regression caused by efe4208 in udp_v6_mcast_next() + - LP: #1332420 + * HID: core: do not scan constant input report + - LP: #1333837 + * drm/radeon: fix audio pin counts for DCE6+ (v2) + - LP: #1333837 + * mac80211: fix software remain-on-channel implementation + - LP: #1333837 + * mac80211: exclude AP_VLAN interfaces from tx power calculation + - LP: #1333837 + * iwlwifi: add new 7265 HW IDs + - LP: #1333837 + * parisc: fix epoll_pwait syscall on compat kernel + - LP: #1333837 + * iwlwifi: add MODULE_FIRMWARE for 7265 + - LP: #1333837 + * dma: edma: fix incorrect SG list handling + - LP: #1333837 + * ALSA: hda/realtek - Add support of ALC288 codec + - LP: #1333837 + * xen/spinlock: Don't enable them unconditionally. + - LP: #1333837 + * tick-common: Fix wrong check in tick_check_replacement() + - LP: #1333837 + * tick-sched: Check tick_nohz_enabled in tick_nohz_switch_to_nohz() + - LP: #1333837 + * ALSA: hda - add headset mic detect quirk for a Dell laptop + - LP: #1297581, #1333837 + * ALSA: hda/realtek - Add headset Mic support for Dell machine + - LP: #1333837 + * staging: r8188eu: Calling rtw_get_stainfo() with a NULL sta_addr will + return NULL + - LP: #1333837 + * cifs: Wait for writebacks to complete before attempting write. + - LP: #1333837 + * mlx4_en: don't use napi_synchronize inside mlx4_en_netpoll + - LP: #1333837 + * mei: ignore client writing state during cb completion + - LP: #1333837 + * staging: r8712u: Fix case where ethtype was never obtained and always + be checked against 0 + - LP: #1333837 + * staging: r8188eu: Fix case where ethtype was never obtained and always + be checked against 0 + - LP: #1333837 + * USB: serial: ftdi_sio: add id for Brainboxes serial cards + - LP: #1333837 + * usb: option driver, add support for Telit UE910v2 + - LP: #1333837 + * USB: cp210x: Add 8281 (Nanotec Plug & Drive) + - LP: #1333837 + * USB: pl2303: add ids for Hewlett-Packard HP POS pole displays + - LP: #1333837 + * USB: usb_wwan: fix handling of missing bulk endpoints + - LP: #1333837 + * USB: fix crash during hotplug of PCI USB controller card + - LP: #1333837 + * USB: cdc-acm: Remove Motorola/Telit H24 serial interfaces from ACM + driver + - LP: #1333837 + * Drivers: hv: vmbus: Negotiate version 3.0 when running on ws2012r2 + hosts + - LP: #1333837 + * serial: omap: Fix missing pm_runtime_resume handling by simplifying + code + - LP: #1333837 + * drm/radeon: disable mclk dpm on R7 260X + - LP: #1333837 + * drm/radeon: fix runpm handling on APUs (v4) + - LP: #1333837 + * drm/radeon: add support for newer mc ucode on SI (v2) + - LP: #1333837 + * drm/radeon: add support for newer mc ucode on CI (v2) + - LP: #1333837 + * drm/radeon: re-enable mclk dpm on R7 260X asics + - LP: #1333837 + * drm/radeon: memory leak on bo reservation failure. v2 + - LP: #1333837 + * drm/radeon/si: make sure mc ucode is loaded before checking the size + - LP: #1333837 + * drm/radeon/ci: make sure mc ucode is loaded before checking the size + - LP: #1333837 + * init/Kconfig: move the trusted keyring config option to general setup + - LP: #1333837 + * mm/hugetlb.c: add cond_resched_lock() in return_unused_surplus_pages() + - LP: #1333837 + * thp: close race between split and zap huge pages + - LP: #1333837 + * coredump: fix va_list corruption + - LP: #1333837 + * powerpc/tm: Disable IRQ in tm_recheckpoint + - LP: #1333837 + * ACPI / EC: Process rather than discard events in acpi_ec_clear + - LP: #1333837 + * ath9k: Fix sequence number assignment for non-data frames + - LP: #1333837 + * xhci: Switch Intel Lynx Point ports to EHCI on shutdown. + - LP: #1333837 + * iio: adc: at91_adc: Repair broken platform_data support + - LP: #1333837 + * iio: querying buffer scan_mask should return 0/1 + - LP: #1333837 + * iio: cm36651: Fix i2c client leak and possible NULL pointer dereference + - LP: #1333837 + * libata: Update queued trim blacklist for M5x0 drives + - LP: #1333837 + * pata_at91: fix ata_host_activate() failure handling + - LP: #1333837 + * ext4: avoid possible overflow in ext4_map_blocks() + - LP: #1333837 + * ext4: FIBMAP ioctl causes BUG_ON due to handle EXT_MAX_BLOCKS + - LP: #1333837 + * ext4: note the error in ext4_end_bio() + - LP: #1333837 + * ext4: fix jbd2 warning under heavy xattr load + - LP: #1333837 + * ext4: move ext4_update_i_disksize() into mpage_map_and_submit_extent() + - LP: #1333837 + * ext4: use i_size_read in ext4_unaligned_aio() + - LP: #1333837 + * locks: allow __break_lease to sleep even when break_time is 0 + - LP: #1333837 + * usb: gadget: zero: Fix SuperSpeed enumeration for alternate setting 1 + - LP: #1333837 + * ahci: do not request irq for dummy port + - LP: #1333837 + * genirq: Allow forcing cpu affinity of interrupts + - LP: #1333837 + * irqchip: Gic: Support forced affinity setting + - LP: #1333837 + * clocksource: Exynos_mct: Use irq_force_affinity() in cpu bringup + - LP: #1333837 + * clocksource: Exynos_mct: Register clock event after request_irq() + - LP: #1333837 + * nfsd: set timeparms.to_maxval in setup_callback_client + - LP: #1333837 + * ahci: Do not receive interrupts sent by dummy ports + - LP: #1333837 + * libata/ahci: accommodate tag ordered controllers + - LP: #1333837 + * drm/radeon: disable dpm on rv770 by default + - LP: #1333837 + * Input: synaptics - add min/max quirk for ThinkPad T431s, L440, L540, S1 + Yoga and X1 + - LP: #1333837 + * drm/radeon: fix count in cik_sdma_ring_test() + - LP: #1333837 + * drm/radeon: properly unregister hwmon interface (v2) + - LP: #1333837 + * drm/radeon/pm: don't walk the crtc list before it has been initialized + (v2) + - LP: #1333837 + * drm/radeon: fix ATPX detection on non-VGA GPUs + - LP: #1333837 + * drm/radeon: don't allow runpm=1 on systems with out ATPX + - LP: #1333837 + * mm: make fixup_user_fault() check the vma access rights too + - LP: #1333837 + * ARM: 8027/1: fix do_div() bug in big-endian systems + - LP: #1333837 + * ARM: 8030/1: ARM : kdump : add arch_crash_save_vmcoreinfo + - LP: #1333837 + * ARM: pxa: hx4700.h: include "irqs.h" for PXA_NR_BUILTIN_GPIO + - LP: #1333837 + * ARM: tegra: remove UART5/UARTE from tegra124.dtsi + - LP: #1333837 + * USB: serial: fix sysfs-attribute removal deadlock + - LP: #1333837 + * 8250_core: Fix unwanted TX chars write + - LP: #1333837 + * serial: 8250: Fix thread unsafe __dma_tx_complete function + - LP: #1333837 + * Btrfs: fix inode caching vs tree log + - LP: #1333837 + * xhci: For streams the css flag most be read from the stream-ctx on ep + stop + - LP: #1333837 + * usb: xhci: Prefer endpoint context dequeue pointer over stopped_trb + - LP: #1333837 + * USB: io_ti: fix firmware download on big-endian machines + - LP: #1333837 + * usb: qcserial: add Sierra Wireless EM7355 + - LP: #1333837 + * usb: qcserial: add Sierra Wireless MC73xx + - LP: #1333837 + * usb: qcserial: add Sierra Wireless MC7305/MC7355 + - LP: #1333837 + * usb: option: add Olivetti Olicard 500 + - LP: #1333837 + * usb: option: add Alcatel L800MA + - LP: #1333837 + * usb: option: add and update a number of CMOTech devices + - LP: #1333837 + * word-at-a-time: avoid undefined behaviour in zero_bytemask macro + - LP: #1333837 + * s390/chsc: fix SEI usage on old FW levels + - LP: #1333837 + * irqchip: armada-370-xp: fix invalid cast of signed value into unsigned + variable + - LP: #1333837 + * irqchip: armada-370-xp: implement the ->check_device() msi_chip + operation + - LP: #1333837 + * irqchip: armada-370-xp: Fix releasing of MSIs + - LP: #1333837 + * ASoC: dapm: Fix widget double free with auto-disable DAPM kcontrol + - LP: #1333837 + * drm/i915: Don't check gmch state on inherited configs + - LP: #1333837 + * drm/vmwgfx: Make sure user-space can't DMA across buffer object + boundaries v2 + - LP: #1333837 + * of/irq: do irq resolution in platform_get_irq + - LP: #1333837 + * s390/bpf,jit: initialize A register if 1st insn is BPF_S_LDX_B_MSH + - LP: #1333837 + * drm/i915: Don't WARN nor handle unexpected hpd interrupts on gmch + platforms + - LP: #1333837 + * module: remove warning about waiting module removal. + - LP: #1333837 + * ALSA: hda - add headset mic detect quirk for a Dell laptop + - LP: #1297581, #1333837 + * arm: KVM: fix possible misalignment of PGDs and bounce page + - LP: #1333837 + * KVM: ARM: vgic: Fix sgi dispatch problem + - LP: #1333837 + * KVM: async_pf: mm->mm_users can not pin apf->mm + - LP: #1333837 + * ftrace/module: Hardcode ftrace_module_init() call into load_module() + - LP: #1333837 + * [SCSI] mpt2sas: Don't disable device twice at suspend. + - LP: #1333837 + * [SCSI] virtio-scsi: Skip setting affinity on uninitialized vq + - LP: #1333837 + * drivercore: deferral race condition fix + - LP: #1333837 + * hrtimer: Prevent all reprogramming if hang detected + - LP: #1333837 + * hrtimer: Prevent remote enqueue of leftmost timers + - LP: #1333837 + * timer: Prevent overflow in apply_slack + - LP: #1333837 + * ARC: !PREEMPT: Ensure Return to kernel mode is IRQ safe + - LP: #1333837 + * aio: fix potential leak in aio_run_iocb(). + - LP: #1333837 + * dm cache: fix writethrough mode quiescing in cache_map + - LP: #1333837 + * fix races between __d_instantiate() and checks of dentry flags + - LP: #1333837 + * net: Fix ns_capable check in sock_diag_put_filterinfo + - LP: #1333837 + * rt2x00: fix beaconing on USB + - LP: #1333837 + * rtlwifi: rtl8188ee: initialize packet_beacon + - LP: #1333837 + * Input: synaptics - add min/max quirk for ThinkPad Edge E431 + - LP: #1333837 + * Input: atkbd - fix keyboard not working on some LG laptops + - LP: #1333837 + * Bluetooth: Fix triggering BR/EDR L2CAP Connect too early + - LP: #1333837 + * drm/i915: Break encoder->crtc link separately in intel_sanitize_crtc() + - LP: #1333837 + * iio:imu:mpu6050: Fixed segfault in Invensens MPU driver due to null + dereference + - LP: #1333837 + * ALSA: hda - add headset mic detect quirk for a Dell laptop + - LP: #1297581, #1333837 + * rtlwifi: rtl8192se: Fix regression due to commit 1bf4bbb + - LP: #1333837 + * rtl8192cu: Fix unbalanced irq enable in error path of rtl92cu_hw_init() + - LP: #1333837 + * drm/radeon/uvd: use lower clocks on old UVD to boot v2 + - LP: #1333837 + * drm/radeon: use pflip irq on R600+ v2 + - LP: #1333837 + * drm/radeon: check buffer relocation offset + - LP: #1333837 + * drm/nouveau/acpi: allow non-optimus setups to load vbios from acpi + - LP: #1333837 + * drm/nouveau: fix another lock unbalance in nouveau_crtc_page_flip + - LP: #1333837 + * ALSA: usb-audio: work around corrupted TEAC UD-H01 feedback data + - LP: #1333837 + * USB: OHCI: fix problem with global suspend on ATI controllers + - LP: #1333837 + * usb: qcserial: add a number of Dell devices + - LP: #1333837 + * usb: storage: shuttle_usbat: fix discs being detected twice + - LP: #1333837 + * fsl-usb: do not test for PHY_CLK_VALID bit on controller version 1.6 + - LP: #1333837 + * tty: serial: 8250_core.c Bug fix for Exar chips. + - LP: #1333837 + * drivers/tty/hvc: don't free hvc_console_setup after init + - LP: #1333837 + * tty: Fix lockless tty buffer race + - LP: #1333837 + * USB: Nokia 305 should be treated as unusual dev + - LP: #1333837 + * USB: Nokia 5300 should be treated as unusual dev + - LP: #1333837 + * HID: add NO_INIT_REPORTS quirk for Synaptics Touch Pad V 103S + - LP: #1333837 + * ALSA: hda - hdmi: Set converter channel count even without sink + - LP: #1333837 + * Input: elantech - fix touchpad initialization on Gigabyte U2442 + - LP: #1333837 + * posix_acl: handle NULL ACL in posix_acl_equiv_mode + - LP: #1333837 + * mm/page-writeback.c: fix divide by zero in pos_ratio_polynom + - LP: #1333837 + * mm: compaction: detect when scanners meet in isolate_freepages + - LP: #1333837 + * mm/compaction: make isolate_freepages start at pageblock boundary + - LP: #1333837 + * autofs: fix lockref lookup + - LP: #1333837 + * libata: Blacklist queued trim for Crucial M500 + - LP: #1333837 + * Linux 3.13.11.3 + - LP: #1333837 + * net: sctp: wake up all assocs if sndbuf policy is per socket + - LP: #1333838 + * net: sctp: test if association is dead in sctp_wake_up_waiters + - LP: #1333838 + * l2tp: take PMTU from tunnel UDP socket + - LP: #1333838 + * net: core: don't account for udp header size when computing seglen + - LP: #1333838 + * bonding: Remove debug_fs files when module init fails + - LP: #1333838 + * bridge: Fix double free and memory leak around br_allowed_ingress + - LP: #1333838 + * ipv6: Limit mtu to 65575 bytes + - LP: #1333838 + * gre: don't allow to add the same tunnel twice + - LP: #1333838 + * vti: don't allow to add the same tunnel twice + - LP: #1333838 + * ipv4: return valid RTA_IIF on ip route get + - LP: #1333838 + * filter: prevent nla extensions to peek beyond the end of the message + - LP: #1333838 + * ip6_gre: don't allow to remove the fb_tunnel_dev + - LP: #1333838 + * vlan: Fix lockdep warning when vlan dev handle notification + - LP: #1333838 + * net: Find the nesting level of a given device by type. + - LP: #1333838 + * net: Allow for more then a single subclass for netif_addr_lock + - LP: #1333838 + * vlan: Fix lockdep warning with stacked vlan devices. + - LP: #1333838 + * macvlan: Fix lockdep warnings with stacked macvlan devices + - LP: #1333838 + * tg3: update rx_jumbo_pending ring param only when jumbo frames are + enabled + - LP: #1333838 + * net: sctp: cache auth_enable per endpoint + - LP: #1333838 + * rtnetlink: Warn when interface's information won't fit in our packet + - LP: #1333838 + * rtnetlink: Only supply IFLA_VF_PORTS information when RTEXT_FILTER_VF + is set + - LP: #1333838 + * ipv6: fib: fix fib dump restart + - LP: #1333838 + * bridge: Handle IFLA_ADDRESS correctly when creating bridge device + - LP: #1333838 + * sctp: reset flowi4_oif parameter on route lookup + - LP: #1333838 + * net: qmi_wwan: add Sierra Wireless EM7355 + - LP: #1333838 + * net: qmi_wwan: add Sierra Wireless MC73xx + - LP: #1333838 + * net: qmi_wwan: add Sierra Wireless MC7305/MC7355 + - LP: #1333838 + * net: qmi_wwan: add Olivetti Olicard 500 + - LP: #1333838 + * net: qmi_wwan: add Alcatel L800MA + - LP: #1333838 + * net: qmi_wwan: add a number of CMOTech devices + - LP: #1333838 + * net: qmi_wwan: add a number of Dell devices + - LP: #1333838 + * slip: fix spinlock variant + - LP: #1333838 + * net: sctp: Potentially-Failed state should not be reached from + unconfirmed state + - LP: #1333838 + * net: sctp: Don't transition to PF state when transport has exhausted + 'Path.Max.Retrans'. + - LP: #1333838 + * mactap: Fix checksum errors for non-gso packets in bridge mode + - LP: #1333838 + * tcp_cubic: fix the range of delayed_ack + - LP: #1333838 + * vsock: Make transport the proto owner + - LP: #1333838 + * net: cdc_ncm: fix buffer overflow + - LP: #1333838 + * ip_tunnel: Set network header properly for IP_ECN_decapsulate() + - LP: #1333838 + * net: cdc_mbim: __vlan_find_dev_deep need rcu_read_lock + - LP: #1333838 + * net: ipv4: ip_forward: fix inverted local_df test + - LP: #1333838 + * net: ipv6: send pkttoobig immediately if orig frag size > mtu + - LP: #1333838 + * ipv4: fib_semantics: increment fib_info_cnt after fib_info allocation + - LP: #1333838 + * net: cdc_mbim: handle unaccelerated VLAN tagged frames + - LP: #1333838 + * macvlan: Don't propagate IFF_ALLMULTI changes on down interfaces. + - LP: #1333838 + * sfc: fix calling of free_irq with already free vector + - LP: #1333838 + * ip6_tunnel: fix potential NULL pointer dereference + - LP: #1333838 + * net: filter: x86: fix JIT address randomization + - LP: #1333838 + * net: filter: s390: fix JIT address randomization + - LP: #1333838 + * ipv6: fix calculation of option len in ip6_append_data + - LP: #1333838 + * rtnetlink: wait for unregistering devices in rtnl_link_unregister() + - LP: #1333838 + * net: gro: make sure skb->cb[] initial content has not to be zero + - LP: #1333838 + * batman-adv: fix reference counting imbalance while sending fragment + - LP: #1333838 + * batman-adv: increase orig refcount when storing ref in gw_node + - LP: #1333838 + * batman-adv: fix local TT check for outgoing arp requests in DAT + - LP: #1333838 + * ip_tunnel: Initialize the fallback device properly + - LP: #1333838 + * ipv4: initialise the itag variable in __mkroute_input + - LP: #1333838 + * net-gro: reset skb->truesize in napi_reuse_skb() + - LP: #1333838 + * netfilter: ipv4: defrag: set local_df flag on defragmented skb + - LP: #1333838 + * ima: introduce ima_kernel_read() + - LP: #1333838 + * ima: audit log files opened with O_DIRECT flag + - LP: #1333838 + * percpu: make pcpu_alloc_chunk() use pcpu_mem_free() instead of kfree() + - LP: #1333838 + * workqueue: fix bugs in wq_update_unbound_numa() failure path + - LP: #1333838 + * [media] fc2580: fix tuning failure on 32-bit arch + - LP: #1333838 + * memory: mvebu-devbus: fix the conversion of the bus width + - LP: #1333838 + * ARM: orion5x: fix target ID for crypto SRAM window + - LP: #1333838 + * workqueue: make rescuer_thread() empty wq->maydays list before exiting + - LP: #1333838 + * workqueue: fix a possible race condition between rescuer and + pwq-release + - LP: #1333838 + * spi: core: Ignore unsupported Dual/Quad Transfer Mode bits + - LP: #1333838 + * device_cgroup: rework device access check and exception checking + - LP: #1333838 + * PCI: mvebu: fix off-by-one in the computed size of the mbus windows + - LP: #1333838 + * bus: mvebu-mbus: allow several windows with the same target/attribute + - LP: #1333838 + * PCI: mvebu: split PCIe BARs into multiple MBus windows when needed + - LP: #1333838 + * ARM: mvebu: fix NOR bus-width in Armada XP GP Device Tree + - LP: #1333838 + * ARM: mvebu: fix NOR bus-width in Armada XP DB Device Tree + - LP: #1333838 + * ARM: mvebu: fix NOR bus-width in Armada XP OpenBlocks AX3 Device Tree + - LP: #1333838 + * crypto: caam - add allocation failure handling in SPRINTFCAT macro + - LP: #1333838 + * ARM: common: edma: Fix xbar mapping + - LP: #1333838 + * clk: Fix double free due to devm_clk_register() + - LP: #1333838 + * [media] media-device: fix infoleak in ioctl media_enum_entities() + - LP: #1333838 + * ARM: dts: kirkwood: fix mislocated pcie-controller nodes + - LP: #1333838 + * device_cgroup: check if exception removal is allowed + - LP: #1333838 + * md: avoid possible spinning md thread at shutdown. + - LP: #1333838 + * ACPI: Remove Kconfig symbol ACPI_PROCFS + - LP: #1333838 + * ACPI: Revert "ACPI: Remove CONFIG_ACPI_PROCFS_POWER and cm_sbsc.c" + - LP: #1333838 + * ACPI: Revert "ACPI / Battery: Remove battery's proc directory" + - LP: #1333838 + * NFSd: Move default initialisers from create_client() to alloc_client() + - LP: #1333838 + * NFSd: call rpc_destroy_wait_queue() from free_client() + - LP: #1333838 + * genirq: Provide irq_force_affinity fallback for non-SMP + - LP: #1333838 + * libata: clean up ZPODD when a port is detached + - LP: #1333838 + * ACPI / blacklist: Add dmi_enable_osi_linux quirk for Asus EEE PC 1015PX + - LP: #1333838 + * ACPI: Revert "ACPI / AC: convert ACPI ac driver to platform bus" + - LP: #1333838 + * ACPI / processor: do not mark present at boot but not onlined CPU as + onlined + - LP: #1333838 + * NFSD: Call ->set_acl with a NULL ACL structure if no entries + - LP: #1333838 + * ALSA: hda - add headset mic detect quirks for three Dell laptops + - LP: #1297581, #1333838 + * gpio: mcp23s08: Bug fix of SPI device tree registration. + - LP: #1333838 + * drm/i915/vlv: reset VLV media force wake request register + - LP: #1333838 + * ARM: dts: i.MX53: Fix ipu register space size + - LP: #1333838 + * mm, thp: close race between mremap() and split_huge_page() + - LP: #1333838 + * intel_pstate: Set turbo VID for BayTrail + - LP: #1333838 + * powerpc/powernv: Reset root port in firmware + - LP: #1333838 + * hrtimer: Set expiry time before switch_hrtimer_base() + - LP: #1333838 + * hwmon: (emc1403) fix inverted store_hyst() + - LP: #1333838 + * hwmon: (emc1403) Fix resource leak on module unload + - LP: #1333838 + * hwmon: (emc1403) Support full range of known chip revision numbers + - LP: #1333838 + * iommu/amd: Fix interrupt remapping for aliased devices + - LP: #1333838 + * ASoC: wm8962: Update register CLASS_D_CONTROL_1 to be non-volatile + - LP: #1333838 + * [media] V4L2: ov7670: fix a wrong index, potentially Oopsing the kernel + from user-space + - LP: #1333838 + * [media] V4L2: fix VIDIOC_CREATE_BUFS in 64- / 32-bit compatibility mode + - LP: #1333838 + * x86, mm, hugetlb: Add missing TLB page invalidation for hugetlb_cow() + - LP: #1333838 + * i2c: designware: Mask all interrupts during i2c controller enable + - LP: #1333838 + * i2c: s3c2410: resume race fix + - LP: #1333838 + * i2c: rcar: bail out on zero length transfers + - LP: #1333838 + * dm crypt: fix cpu hotplug crash by removing per-cpu structure + - LP: #1333838 + * metag: fix memory barriers + - LP: #1333838 + * metag: Reduce maximum stack size to 256MB + - LP: #1333838 + * drm/i915: restore backlight precision when converting from ACPI + - LP: #1333838 + * drm/i915: Increase WM memory latency values on SNB + - LP: #1333838 + * PCI: shpchp: Check bridge's secondary (not primary) bus speed + - LP: #1333838 + * parisc: ratelimit userspace segfault printing + - LP: #1333838 + * parisc: Improve LWS-CAS performance + - LP: #1333838 + * Target/iser: Fix wrong connection requests list addition + - LP: #1333838 + * Target/iser: Fix iscsit_accept_np and rdma_cm racy flow + - LP: #1333838 + * iscsi-target: Change BUG_ON to REJECT in iscsit_process_nop_out + - LP: #1333838 + * tcm_fc: Fix free-after-use regression in ft_free_cmd + - LP: #1333838 + * target: Don't allow setting WC emulation if device doesn't support + - LP: #1333838 + * arm: dts: Fix missing device_type="memory" for ste-ccu8540 + - LP: #1333838 + * mips: dts: Fix missing device_type="memory" property in memory nodes + - LP: #1333838 + * arm64: fix pud_huge() for 2-level pagetables + - LP: #1333838 + * libceph: fix corruption when using page_count 0 page in rbd + - LP: #1333838 + * clk: tegra: use pll_ref as the pll_e parent + - LP: #1333838 + * clk: tegra: Fix wrong value written to PLLE_AUX + - LP: #1333838 + * target: fix memory leak on XCOPY + - LP: #1333838 + * sysfs: make sure read buffer is zeroed + - LP: #1333838 + * cfg80211: free sme on connection failures + - LP: #1333838 + * sched: Sanitize irq accounting madness + - LP: #1333838 + * sched: Use CPUPRI_NR_PRIORITIES instead of MAX_RT_PRIO in cpupri check + - LP: #1333838 + * mac80211: fix suspend vs. association race + - LP: #1333838 + * mac80211: fix on-channel remain-on-channel + - LP: #1333838 + * af_iucv: wrong mapping of sent and confirmed skbs + - LP: #1333838 + * perf: Limit perf_event_attr::sample_period to 63 bits + - LP: #1333838 + * perf: Prevent false warning in perf_swevent_add + - LP: #1333838 + * drm/gf119-/disp: fix nasty bug which can clobber SOR0's clock setup + - LP: #1333838 + * drm/radeon: also try GART for CPU accessed buffers + - LP: #1333838 + * drm/radeon: handle non-VGA class pci devices with ATRM + - LP: #1333838 + * drm/radeon: fix register typo on si + - LP: #1333838 + * drm/radeon: avoid segfault on device open when accel is not working. + - LP: #1333838 + * drm/radeon/pm: don't allow debugfs/sysfs access when PX card is off + (v2) + - LP: #1333838 + * can: peak_pci: prevent use after free at netdev removal + - LP: #1333838 + * nfsd4: remove lockowner when removing lock stateid + - LP: #1333838 + * nfsd4: warn on finding lockowner without stateid's + - LP: #1333838 + * dma: mv_xor: Flush descriptors before activating a channel + - LP: #1333838 + * dmaengine: fix dmaengine_unmap failure + - LP: #1333838 + * hwpoison, hugetlb: lock_page/unlock_page does not match for handling a + free hugepage + - LP: #1333838 + * mm/memory-failure.c: fix memory leak by race between poison and + unpoison + - LP: #1333838 + * ARM: OMAP3: clock: Back-propagate rate change from cam_mclk to dpll4_m5 + on all OMAP3 platforms + - LP: #1333838 + * dmaengine: dw: went back to plain {request,free}_irq() calls + - LP: #1333838 + * ARM: omap5: hwmod_data: Correct IDLEMODE for McPDM + - LP: #1333838 + * Input: synaptics - add min/max quirk for the ThinkPad W540 + - LP: #1333838 + * ARM: OMAP2+: nand: Fix NAND on OMAP2 and OMAP3 boards + - LP: #1333838 + * futex: Add another early deadlock detection check + - LP: #1333838 + * futex: Prevent attaching to kernel threads + - LP: #1333838 + * ARM: OMAP4: Fix the boot regression with CPU_IDLE enabled + - LP: #1333838 + * cpufreq: remove race while accessing cur_policy + - LP: #1333838 + * cpufreq: cpu0: drop wrong devm usage + - LP: #1333838 + * ARM: imx: fix error handling in ipu device registration + - LP: #1333838 + * ALSA: hda - Fix onboard audio on Intel H97/Z97 chipsets + - LP: #1333838 + * ARM: 8051/1: put_user: fix possible data corruption in put_user + - LP: #1333838 + * ARM: 8064/1: fix v7-M signal return + - LP: #1333838 + * Input: synaptics - T540p - unify with other LEN0034 models + - LP: #1333838 + * drm/i915: Only copy back the modified fields to userspace from + execbuffer + - LP: #1333838 + * dm cache: always split discards on cache block boundaries + - LP: #1333838 + * virtio_blk: don't crash, report error if virtqueue is broken. + - LP: #1333838 + * virtio_blk: fix race between start and stop queue + - LP: #1333838 + * powerpc: Fix 64 bit builds with binutils 2.24 + - LP: #1333838 + * powerpc, kexec: Fix "Processor X is stuck" issue during kexec from ST + mode + - LP: #1333838 + * rtmutex: Fix deadlock detector for real + - LP: #1333838 + * drm/radeon: avoid crash if VM command submission isn't available + - LP: #1333838 + * drm/radeon: don't allow RADEON_GEM_DOMAIN_CPU for command submission + - LP: #1333838 + * iwlwifi: mvm: fix setting channel in monitor mode + - LP: #1333838 + * Staging: speakup: Move pasting into a work item + - LP: #1333838 + * USB: Avoid runtime suspend loops for HCDs that can't handle + suspend/resume + - LP: #1333838 + * can: only rename enabled led triggers when changing the netdev name + - LP: #1333838 + * USB: io_ti: fix firmware download on big-endian machines (part 2) + - LP: #1333838 + * USB: ftdi_sio: add NovaTech OrionLXm product ID + - LP: #1333838 + * USB: serial: option: add support for Novatel E371 PCIe card + - LP: #1333838 + * USB: cdc-wdm: properly include types.h + - LP: #1333838 + * md: always set MD_RECOVERY_INTR when aborting a reshape or other + "resync". + - LP: #1333838 + * xhci: delete endpoints from bandwidth list before freeing whole device + - LP: #1333838 + * md: always set MD_RECOVERY_INTR when interrupting a reshape thread. + - LP: #1333838 + * ALSA: hda/analog - Fix silent output on ASUS A8JN + - LP: #1333838 + * drm/radeon/dpm: resume fixes for some systems + - LP: #1333838 + * drm/radeon: use the CP DMA on CIK + - LP: #1333838 + * ALSA: hda/realtek - Correction of fixup codes for PB V7900 laptop + - LP: #1333838 + * ALSA: hda/realtek - Fix COEF widget NID for ALC260 replacer fixup + - LP: #1333838 + * iser-target: Add missing target_put_sess_cmd for ImmedateData failure + - LP: #1333838 + * iscsi-target: Fix wrong buffer / buffer overrun in + iscsi_change_param_value() + - LP: #1333838 + * percpu-refcount: fix usage of this_cpu_ops + - LP: #1333838 + * target: Fix alua_access_state attribute OOPs for un-configured devices + - LP: #1333838 + * mm: rmap: fix use-after-free in __put_anon_vma + - LP: #1333838 + * mm: add !pte_present() check on existing hugetlb_entry callbacks + - LP: #1333838 + * target: Fix NULL pointer dereference for XCOPY in target_put_sess_cmd + - LP: #1333838 + * Linux 3.13.11.4 + - LP: #1333838 + * powerpc/powernv: Infrastructure to read opal messages in generic + format. + - LP: #1334268 + * powerpc/powernv: Infrastructure to support OPAL async completion + - LP: #1334268 + * powerpc/powernv: Enable fetching of platform sensor data + - LP: #1334268 + * powerpc/powernv: Fix endian issues with sensor code + - LP: #1334268 + * powerpc/powernv: Add OPAL message log interface + - LP: #1334268 + * powerpc/powernv: Fix kexec races going back to OPAL + - LP: #1334268 + * powerpc/powernv: Fix little endian issues in OPAL flash code + - LP: #1334268 + * powerpc/powernv: Fix little endian issues with opal_do_notifier calls + - LP: #1334268 + * powerpc/powernv: Fix little endian issues in OPAL error log code + - LP: #1334268 + * powerpc/powernv: Create OPAL sglist helper functions and fix endian + issues + - LP: #1334268 + * powerpc/powernv: Fix little endian issues in OPAL dump code + - LP: #1334268 + * powerpc: Fix error return in rtas_flash module init + - LP: #1334268 + * powerpc/powernv: Increase candidate fw image size + - LP: #1334268 + * powerpc/powernv: Return secondary CPUs to firmware before FW update + - LP: #1334268 + * powerpc/powernv: Pass buffer size to OPAL validate flash call + - LP: #1334268 + * gpio: add a driver for the Synopsys DesignWare APB GPIO block + - LP: #1334823 + * gpio: dwapb: drop irq_setup_generic_chip() + - LP: #1334823 + * gpio: dwapb: use a second irq chip + - LP: #1334823 + * lzo: properly check for overruns + - LP: #1335313 + - CVE-2014-4608 + * lz4: ensure length does not wrap + - LP: #1335314 + - CVE-2014-4611 + * netfilter: nf_nat: fix oops on netns removal + - LP: #1314274 + * ALSA: hda - add device ID for Broadwell display audio controller + - LP: #1188091 + * ALSA: hda - add codec ID for Broadwell display audio codec + - LP: #1188091 + * ALSA: hda/hdmi - apply all Haswell fix-ups to Broadwell display codec + - LP: #1188091 + * ALSA: hda - using POS_FIX_LPIB on Broadwell HDMI Audio + - LP: #1188091 + + -- Luis Henriques Tue, 01 Jul 2014 15:10:43 +0100 + +linux (3.13.0-30.55) trusty; urgency=low + + [ Upstream Kernel Changes ] + + * x86_64,ptrace: Enforce RIP <= TASK_SIZE_MAX (CVE-2014-4699) + - LP: #1337339 + - CVE-2014-4699 + + -- Luis Henriques Thu, 03 Jul 2014 16:15:57 +0100 + +linux (3.13.0-30.54) trusty; urgency=low + + [ Adam Conrad ] + + * [Config] Enable building the sata-modules udeb on ppc64el. + - LP: #1323980 + + [ Anton Blanchard ] + + * SAUCE: (no-up) powerpc: 64bit sendfile is capped at 2GB + - LP: #1328230 + + [ Ben Widawsky ] + + * SAUCE: i915_bdw: drm/i915: Fix PSR programming + - LP: #1321729 + * SAUCE: i915_bdw: drm/i915: Correct PPGTT total size + - LP: #1321729 + + [ Chris Wilson ] + + * SAUCE: i915_bdw: drm/i915: Broadwell expands ACTHD to 64bit + - LP: #1321729 + + [ Damien Lespiau ] + + * SAUCE: i915_bdw: drm/i915/bdw: Implement + Wa4x4STCOptimizationDisable:bdw + - LP: #1321729 + + [ Dave Chiluk ] + + * [Config] Enable CONFIG_IP_VS_IPV6=y + - LP: #1300739 + + [ Kamal Mostafa ] + + * [Config] add debian/gbp.conf + * Release Tracking Bug + - LP: #1328286 + + [ Mika Kuoppala ] + + * SAUCE: i915_bdw: drm/i915: add render state initialization + - LP: #1321729 + + [ Paulo Zanoni ] + + * SAUCE: i915_bdw: drm/i915: fix assert_cursor on BDW + - LP: #1321729 + + [ Steven Rostedt ] + + * SAUCE: i915_bdw: drm/i915: Do not dereference pointers from ring buffer + in evict event + - LP: #1321729 + + [ Tim Gardner ] + + * [Config] CONFIG_POWERNV_CPUFREQ=y for ppc64el + - LP: #1324571 + * [Debian] Treat vdso install as an environment variable + * [Config] Treat vdso install as an environment variable + * [Config] CONFIG_MLX4_DEBUG=y + - LP: #1328256 + * [Config] CONFIG_I40EVF=m, CONFIG_I40E_DCB=y, CONFIG_I40E_VXLAN=y + - LP: #1328037 + + [ Timo Aaltonen ] + + * SAUCE: i915_bdw: Rebase to drm-intel-next-2014-03-07 + fixes + - LP: #1321729 + * SAUCE: i915_bdw: Add BDW specific power well calls + - LP: #1317865 + + [ Upstream Kernel Changes ] + + * drm: expose subpixel order name routine v3 + * drm: dp helper: Add DP test sink CRC definition. + * drm: export cmdline and preferred mode functions from fb helper + * hugetlb: ensure hugepage access is denied if hugepages are not + supported + - LP: #1328251 + * powerpc/powernv: Move SG list structure to header file + - LP: #1326015 + * powerpc/powernv: Read OPAL error log and export it through sysfs + - LP: #1326015 + * powerpc/powernv Platform dump interface + - LP: #1326015 + * pci_regs.h: Add PCI bus link speed and width defines + - LP: #1328037 + * net_tstamp: Add SIOCGHWTSTAMP ioctl to match SIOCSHWTSTAMP + - LP: #1328037 + * PCI/MSI: Add pci_enable_msi_range() and pci_enable_msix_range() + - LP: #1328037 + * net: Change skb_get_rxhash to skb_get_hash + - LP: #1328037 + * net: Add utility functions to clear rxhash + - LP: #1328037 + * net: Add function to set the rxhash + - LP: #1328037 + * i40e: set pf_id based on device and function numbers + - LP: #1328037 + * i40e: register file updates + - LP: #1328037 + * i40e: clear AQ head and tail registers + - LP: #1328037 + * i40e: simplify aq head-tail-len setups + - LP: #1328037 + * i40e: firmware version fields offsets update + - LP: #1328037 + * i40e: allow one more vector for VFs + - LP: #1328037 + * i40e: select reset counters correctly + - LP: #1328037 + * i40e: retry call on timeout + - LP: #1328037 + * i40e: properly add VF MAC addresses + - LP: #1328037 + * i40e: fix debugging messages + - LP: #1328037 + * i40e: default debug mask setting + - LP: #1328037 + * i40e: add interrupt test + - LP: #1328037 + * i40e: add support for triggering EMPR + - LP: #1328037 + * i40e: restrict diag test length + - LP: #1328037 + * i40e: sync header files with hardware + - LP: #1328037 + * i40e: separate TSYNVALID and TSYNINDX fields in Rx descriptor + - LP: #1328037 + * i40e: check multi-bit state correctly + - LP: #1328037 + * i40e: get media type during link info + - LP: #1328037 + * i40e: Add flag for L2 VEB filtering + - LP: #1328037 + * i40e: enable early hardware support + - LP: #1328037 + * i40e: whitespace + - LP: #1328037 + * i40e: Bump version + - LP: #1328037 + * i40e: refactor reset code + - LP: #1328037 + * i40e: Enable all PCTYPEs except FCOE for RSS. + - LP: #1328037 + * i40e: only set up the rings to be used + - LP: #1328037 + * i40e: clear test state bit after all ethtool tests + - LP: #1328037 + * i40e: refactor ethtool tests + - LP: #1328037 + * i40e: add num_VFs message + - LP: #1328037 + * i40e: Add a new variable to track number of pf instances + - LP: #1328037 + * i40e: restrict diag test messages + - LP: #1328037 + * i40e: loopback info and set loopback fix + - LP: #1328037 + * i40e: complain about out-of-range descriptor request + - LP: #1328037 + * i40e: remove and fix confusing define name + - LP: #1328037 + * i40e: Bump version number + - LP: #1328037 + * i40e: fix up some of the ethtool connection reporting + - LP: #1328037 + * i40e: fix pf reset after offline test + - LP: #1328037 + * i40e: Tell the stack about our actual number of queues + - LP: #1328037 + * i40e: init flow control settings to disabled + - LP: #1328037 + * i40e: trivial fixes + - LP: #1328037 + * i40e: use same number of queues as CPUs + - LP: #1328037 + * i40e: reinit flow for the main VSI + - LP: #1328037 + * i40e: function to reconfigure RSS queues and rebuild + - LP: #1328037 + * i40e: Add basic support for get/set channels for RSS + - LP: #1328037 + * i40e: rtnl_lock in reset path fixes + - LP: #1328037 + * i40e: support for suspend and resume + - LP: #1328037 + * i40e: Remove FCoE in i40e_virtchnl_pf.c code + - LP: #1328037 + * i40e: Fix dump output from debugfs calls + - LP: #1328037 + * i40e: prevent null pointer exception in dump descriptor + - LP: #1328037 + * i40e: simplify error messages for dump descriptor + - LP: #1328037 + * i40e: fix up scanf decoders + - LP: #1328037 + * i40e: more print_hex_dump use + - LP: #1328037 + * i40e: Fix wrong mask bits being used in misc interrupt + - LP: #1328037 + * i40e: Bump version number + - LP: #1328037 + * i40e: Fix off by one in i40e_dbg_command_write + - LP: #1328037 + * i40e: make functions static and remove dead code + - LP: #1328037 + * i40evf: main driver core + - LP: #1328037 + * i40evf: transmit and receive functionality + - LP: #1328037 + * i40evf: core ethtool functionality + - LP: #1328037 + * i40evf: virtual channel interface + - LP: #1328037 + * i40evf: driver core headers + - LP: #1328037 + * i40evf: init code and hardware support + - LP: #1328037 + * i40evf: add driver to kernel build system + - LP: #1328037 + * i40evf: A0 silicon specific + - LP: #1328037 + * i40e: using for_each_set_bit to simplify the code + - LP: #1328037 + * i40e: Suppress HMC error to Interrupt message level + - LP: #1328037 + * i40e: Populate and check pci bus speed and width + - LP: #1328037 + * i40e: add wake-on-lan support + - LP: #1328037 + * i40e: fix curly brace use and return type + - LP: #1328037 + * i40e: Implementation of VXLAN ndo's + - LP: #1328037 + * i40e: Rx checksum offload for VXLAN + - LP: #1328037 + * i40e: move i40e_reset_vf + - LP: #1328037 + * i40e: refactor VF reset flow + - LP: #1328037 + * i40e: remove redundant code + - LP: #1328037 + * i40e: remove chatty log messages + - LP: #1328037 + * i40e: fix error return + - LP: #1328037 + * i40e: be more informative + - LP: #1328037 + * i40e: make a define from a large constant + - LP: #1328037 + * i40e: update led set args + - LP: #1328037 + * i40e: report VF MAC addresses correctly + - LP: #1328037 + * i40e: Dump the whole NVM, not half + - LP: #1328037 + * i40e: fix mac address checking + - LP: #1328037 + * i40e: Change the ethtool NVM read method to use AQ + - LP: #1328037 + * i40e: fix constant cast issues + - LP: #1328037 + * i40e: guard against vf message races + - LP: #1328037 + * i40e: add header file flag _I40E_TXRX_H_ + - LP: #1328037 + * i40e: use functions to enable and disable icr 0 + - LP: #1328037 + * i40e: reinit buffer size each time + - LP: #1328037 + * i40e: fix error handling when alloc of vsi array fails + - LP: #1328037 + * i40e: keep allocated memory in structs + - LP: #1328037 + * i40e: catch unset q_vector + - LP: #1328037 + * i40e: Fix ring allocation + - LP: #1328037 + * i40e: I40E_FLAG_MQ_ENABLED is not used + - LP: #1328037 + * i40e: Remove unnecessary prototypes + - LP: #1328037 + * i40e: remove un-necessary io-write + - LP: #1328037 + * i40e: Record dma buffer info for dummy packets + - LP: #1328037 + * i40e: Fix SR-IOV VF port VLAN + - LP: #1328037 + * i40e: fix whitespace + - LP: #1328037 + * i40e: avoid unnecessary register read + - LP: #1328037 + * i40e: Do not enable default port on the VEB + - LP: #1328037 + * i40e: use struct assign instead of memcpy + - LP: #1328037 + * i40e: don't allocate zero size + - LP: #1328037 + * i40e: acknowledge VFLR when disabling SR-IOV + - LP: #1328037 + * i40e: support VFs on PFs other than 0 + - LP: #1328037 + * i40e: Fix VF driver MAC address configuration + - LP: #1328037 + * i40e: use correct struct for get and update vsi params + - LP: #1328037 + * i40e: Hide the Port VLAN VLAN ID + - LP: #1328037 + * i40e: Admin queue shutdown fixes + - LP: #1328037 + * i40e: check asq alive before notify + - LP: #1328037 + * i40e: Do not allow AQ calls from ndo-ops + - LP: #1328037 + * i40e: Expose AQ debugfs hooks + - LP: #1328037 + * i40e: Do not enable broadcast promiscuous by default + - LP: #1328037 + * i40e: Stop accepting any VLAN tag on VLAN 0 filter set + - LP: #1328037 + * i40e: Allow VF to set already assigned MAC address + - LP: #1328037 + * i40e: Bump version + - LP: #1328037 + * i40e: Add code to wait for FW to complete in reset path + - LP: #1328037 + * i40e: update firmware api to 1.1 + - LP: #1328037 + * i40e: Reduce range of interrupt reg in reg test + - LP: #1328037 + * i40e: move PF ID init from PF reset to SC init + - LP: #1328037 + * i40e: check MAC type before any REG access + - LP: #1328037 + * i40e: rework shadow ram read functions + - LP: #1328037 + * i40e: whitespace paren and comment tweaks + - LP: #1328037 + * i40e: Enable/Disable PF switch LB on SR-IOV configure changes + - LP: #1328037 + * i40e: remove redundant AQ enable + - LP: #1328037 + * i40e: correctly setup ARQ descriptors + - LP: #1328037 + * i40e: Re-enable interrupt on ICR0 + - LP: #1328037 + * i40e: use kernel specific defines + - LP: #1328037 + * i40e: Fix GPL header + - LP: #1328037 + * i40e: Fix MAC format in Write MAC address AQ cmd + - LP: #1328037 + * i40e: add a comment on barrier and fix panic on reset + - LP: #1328037 + * i40e: disable packet split + - LP: #1328037 + * i40e: Cleanup reconfig rss path + - LP: #1328037 + * i40e: release NVM resource reservation on startup + - LP: #1328037 + * i40e: remove interrupt on AQ error + - LP: #1328037 + * i40e: accept pf to pf adminq messages + - LP: #1328037 + * i40e: shorten wordy fields + - LP: #1328037 + * i40e: trivial: formatting and checkpatch fixes + - LP: #1328037 + * i40e: fix spelling errors + - LP: #1328037 + * i40e: Add a dummy packet template + - LP: #1328037 + * i40e: Turn flow director off in MFP mode + - LP: #1328037 + * i40e: use assignment instead of memcpy + - LP: #1328037 + * i40e: drop unused macros + - LP: #1328037 + * i40e: Update the Current NVM version Low value + - LP: #1328037 + * i40e: Bump version + - LP: #1328037 + * i40e: fix long lines + - LP: #1328037 + * i40e: Cleanup Doxygen warnings + - LP: #1328037 + * i40e: Setting queue count to 1 using ethtool is valid + - LP: #1328037 + * i40e: do not bail when disabling if Tx queue disable fails + - LP: #1328037 + * i40e: allow VF to remove any MAC filter + - LP: #1328037 + * i40e: check for possible incorrect ipv6 checksum + - LP: #1328037 + * i40e: adjust ITR max and min values + - LP: #1328037 + * i40e: clear qtx_head before enabling Tx queue + - LP: #1328037 + * i40e: call clear_pxe after adminq is initialized + - LP: #1328037 + * i40e: enable PTP + - LP: #1328037 + * i40e: fix log message wording + - LP: #1328037 + * i40e: Bump version + - LP: #1328037 + * i40evf: fix s390 build failure due to implicit prefetch.h + - LP: #1328037 + * i40e: remove extra register write + - LP: #1328037 + * i40e: associate VMDq queue with VM type + - LP: #1328037 + * i40e: make message meaningful + - LP: #1328037 + * i40e: whitespace fixes + - LP: #1328037 + * i40e: trivial cleanup + - LP: #1328037 + * i40e: Bump version number + - LP: #1328037 + * i40e: Warn admin to reload VF driver on port VLAN configuration + - LP: #1328037 + * i40e: Retain MAC filters on port VLAN deletion + - LP: #1328037 + * i40e: Remove autogenerated Module.symvers file. + - LP: #1328037 + * i40e: check desc pointer before printing + - LP: #1328037 + * i40e: updates to AdminQ interface + - LP: #1328037 + * i40e: fix compile warning on checksum_local + - LP: #1328037 + * i40e: Change firmware workaround + - LP: #1328037 + * i40e: whitespace fixes + - LP: #1328037 + * i40e: rename defines + - LP: #1328037 + * i40e: refactor flow director + - LP: #1328037 + * i40e: implement DCB support infastructure + - LP: #1328037 + * i40e: add DCB and DCBNL support + - LP: #1328037 + * i40e: add DCB option to Kconfig + - LP: #1328037 + * i40e: Fix device ID define names to align to standard + - LP: #1328037 + * i40e: Add missing braces to i40e_dcb_need_reconfig() + - LP: #1328037 + * i40e: spelling error + - LP: #1328037 + * i40e: bump driver version + - LP: #1328037 + * i40evf: trivial fixes + - LP: #1328037 + * i40evf: clean up memsets + - LP: #1328037 + * i40e: Setting i40e_down bit for tx_timeout + - LP: #1328037 + * i40e: remove dead code + - LP: #1328037 + * i40e: set VF state to active when reset is complete + - LP: #1328037 + * i40e: reset VFs after PF reset + - LP: #1328037 + * i40e: enable extant VFs + - LP: #1328037 + * i40e: don't handle VF reset on unload + - LP: #1328037 + * i40evf: clean up adapter struct + - LP: #1328037 + * i40evf: fix bogus comment + - LP: #1328037 + * i40evf: don't store unnecessary array of strings + - LP: #1328037 + * i40evf: change type of flags variable + - LP: #1328037 + * i40evf: refactor reset handling + - LP: #1328037 + * net: i40evf: Remove duplicate include + - LP: #1328037 + * i40e: Use pci_enable_msix_range() instead of pci_enable_msix() + - LP: #1328037 + * i40evf: request reset on tx hang + - LP: #1328037 + * i40evf: remove VLAN filters on close + - LP: #1328037 + * i40evf: fix multiple crashes on remove + - LP: #1328037 + * i40evf: get rid of pci_using_dac + - LP: #1328037 + * i40evf: fix up strings in init task + - LP: #1328037 + * i40evf: remove bogus comment + - LP: #1328037 + * i40evf: don't guess device name + - LP: #1328037 + * i40evf: store ring size in ring structs + - LP: #1328037 + * i40evf: update version and copyright date + - LP: #1328037 + * i40evf: remove errant space + - LP: #1328037 + * i40e: remove unnecessary delay + - LP: #1328037 + * i40e: tighten up ring enable/disable flow + - LP: #1328037 + * i40e: Change MSIX to MSI-X + - LP: #1328037 + * i40e and i40evf: Bump driver versions + - LP: #1328037 + * i40evf: Enable the ndo_set_features netdev op + - LP: #1328037 + * i40e: Flow Director sideband accounting + - LP: #1328037 + * i40e: Prevent overflow due to kzalloc + - LP: #1328037 + * i40e/i40evf: i40e implementation for skb_set_hash + - LP: #1328037 + * i40e: clean up comment style + - LP: #1328037 + * i40e: Remove a FW workaround for Number of MSIX vectors + - LP: #1328037 + * i40e: count timeout events + - LP: #1328037 + * i40e: Remove a redundant filter addition + - LP: #1328037 + * i40e: Fix static checker warning + - LP: #1328037 + * i40e: fix nvm version and remove firmware report + - LP: #1328037 + * i40e/i40evf: carefully fill tx ring + - LP: #1328037 + * i40e/i40evf: Bump pf&vf build versions + - LP: #1328037 + * i40e: delete netdev after deleting napi and vectors + - LP: #1328037 + * i40e: Fix a bug in the update logic for FDIR SB filter. + - LP: #1328037 + * i40e/i40evf: Some flow director HW definition fixes + - LP: #1328037 + * i40e: make string references to q be queue + - LP: #1328037 + * i40e: cleanup strings + - LP: #1328037 + * i40e: simplified init string + - LP: #1328037 + * i40e: Fix function comments + - LP: #1328037 + * i40e: Define a new state variable to keep track of feature auto disable + - LP: #1328037 + * i40e: Add code to handle FD table full condition + - LP: #1328037 + * i40e: Bug fix for FDIR replay logic + - LP: #1328037 + * i40e: Let MDD events be handled by MDD handler + - LP: #1328037 + * i40e/i40evf: Use correct number of VF vectors + - LP: #1328037 + * i40e/i40evf: Use dma_set_mask_and_coherent + - LP: #1328037 + * net: Replace u64_stats_fetch_begin_bh to u64_stats_fetch_begin_irq + - LP: #1328037 + * i40e: Don't receive packets when the napi budget == 0 + - LP: #1328037 + * i40evf: Rename i40e_ptype_lookup i40evf_ptype_lookup + - LP: #1328037 + * net/i40e: Avoid double setting of NETIF_F_SG for the HW encapsulation + feature mask + - LP: #1328037 + * i40e: support VF link state ndo + - LP: #1328037 + * i40evf: correctly program RSS HLUT table + - LP: #1328037 + * i40evf: use min_t + - LP: #1328037 + * i40e: Patch to enable Ethtool/netdev feature flag for NTUPLE control + - LP: #1328037 + * i40e: Refactor and cleanup i40e_open(), adding i40e_vsi_open() + - LP: #1328037 + * i40e/i40evf: enable hardware feature head write back + - LP: #1328037 + * i40e/i40evf: reduce context descriptors + - LP: #1328037 + * i40e: potential array underflow in i40e_vc_process_vf_msg() + - LP: #1328037 + * i40e/i40evf: Bump build versions + - LP: #1328037 + * i40e/i40evf: Add EEE LPI stats + - LP: #1328037 + * i40e: Fix a message string + - LP: #1328037 + * i40evf: don't shut down admin queue on error + - LP: #1328037 + * i40evf: clean up init error messages + - LP: #1328037 + * i40e: Delete ATR filter on RST + - LP: #1328037 + * i40evf: fix oops in watchdog handler + - LP: #1328037 + * i40e: Make the alloc and free queue vector calls orthogonal + - LP: #1328037 + * i40e: eeprom integrity check on load and empr + - LP: #1328037 + * i40e: Cleanup in FDIR SB ethtool code + - LP: #1328037 + * i40e: Add functionality for FD SB to drop packets + - LP: #1328037 + * i40evf: remove double space after return + - LP: #1328037 + * i40e: check for netdev before debugfs use + - LP: #1328037 + * i40e/i40evf: Add an FD message level + - LP: #1328037 + * i40e: Use DEBUG_FD message level for an FD message + - LP: #1328037 + * i40e: fix function kernel doc description + - LP: #1328037 + * i40e/i40evf: fix error checking path + - LP: #1328037 + * i40e/i40evf: Remove addressof casts to same type + - LP: #1328037 + * i40e: Remove casts of pointer to same type + - LP: #1328037 + * i40evf: remove open-coded skb_cow_head + - LP: #1328037 + * i40evf: program RSS LUT correctly + - LP: #1328037 + * i40e: remove open-coded skb_cow_head + - LP: #1328037 + * i40e: fix TCP flag replication for hardware offload + - LP: #1328037 + * e1000e/igb/ixgbe/i40e: fix message terminations + - LP: #1328037 + * i40e: fix Timesync Tx interrupt handler code + - LP: #1328037 + * mm: use paravirt friendly ops for NUMA hinting ptes + - LP: #1313450 + + [ Ville Syrjälä ] + + * SAUCE: i915_bdw: drm/i915: Fix scanline counter fixup on BDW + - LP: #1321729 + + -- Kamal Mostafa Mon, 09 Jun 2014 15:09:43 -0700 + +linux (3.13.0-29.53) trusty; urgency=low + + [ Upstream Kernel Changes ] + + * futex-prevent-requeue-pi-on-same-futex.patch futex: Forbid uaddr == + uaddr2 in futex_requeue(..., requeue_pi=1) + - LP: #1326367 + - CVE-2014-3153 + * futex: Validate atomic acquisition in futex_lock_pi_atomic() + - LP: #1326367 + - CVE-2014-3153 + * futex: Always cleanup owner tid in unlock_pi + - LP: #1326367 + - CVE-2014-3153 + * futex: Make lookup_pi_state more robust + - LP: #1326367 + - CVE-2014-3153 + + -- Brad Figg Wed, 04 Jun 2014 08:25:41 -0700 + +linux (3.13.0-29.52) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - re-used previous tracking bug + + [ Adam Conrad ] + + * [Config] Normalize AHCI configs on powerpc/ppc64el with the rest of the + architectures + - LP: #1323980 + + [ Tanmay Inamdar ] + + * SAUCE: Add MSI/MSI-X driver for APM PCI bus + - LP: #1318977 + + -- Luis Henriques Wed, 28 May 2014 09:38:41 +0100 + +linux (3.13.0-28.51) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1322112 + + [ Adam Lee ] + + * SAUCE: (no-up) rtlwifi: rtl8723be: disable MSI interrupts mode + - LP: #1310512, #1320070 + + [ 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 + + [ Upstream Kernel Changes ] + + * Revert "PCI: Enable INTx in pci_reenable_device() only when MSI/MSI-X + not enabled" + - LP: #1320946 + * Bluetooth: allocate static minor for vhci + - LP: #1317336 + * core, nfqueue, openvswitch: Orphan frags in skb_zerocopy and handle + errors + - LP: #1320946 + * __dentry_path() fixes + - LP: #1320946 + * drm/i915: quirk invert brightness for Acer Aspire 5336 + - LP: #1320946 + * w1: fix w1_send_slave dropping a slave id + - LP: #1320946 + * ARM: 7954/1: mm: remove remaining domain support from ARMv6 + - LP: #1320946 + * matroxfb: restore the registers M_ACCESS and M_PITCH + - LP: #1320946 + * framebuffer: fix cfb_copyarea + - LP: #1320946 + * mach64: use unaligned access + - LP: #1320946 + * mach64: fix cursor when character width is not a multiple of 8 pixels + - LP: #1320946 + * tgafb: fix mode setting with fbset + - LP: #1320946 + * tgafb: fix data copying + - LP: #1320946 + * hvc: ensure hvc_init is only ever called once in hvc_console.c + - LP: #1320946 + * ARM: dts: Keep G3D regulator always on for exynos5250-arndale + - LP: #1320946 + * PCI: mvebu: Fix potential issue in range parsing + - LP: #1320946 + * usb: dwc3: fix wrong bit mask in dwc3_event_devt + - LP: #1320946 + * x86, AVX-512: AVX-512 Feature Detection + - LP: #1320946 + * x86, AVX-512: Enable AVX-512 States Context Switch + - LP: #1320946 + * s390/cio: fix driver callback initialization for ccw consoles + - LP: #1320946 + * ARM: Fix default CPU selection for ARCH_MULTI_V5 + - LP: #1320946 + * omap3isp: preview: Fix the crop margins + - LP: #1320946 + * ACPICA: Restore code that repairs NULL package elements in return + values. + - LP: #1320946 + * media: gspca: sn9c20x: add ID for Genius Look 1320 V2 + - LP: #1320946 + * m88rs2000: add caps FE_CAN_INVERSION_AUTO + - LP: #1320946 + * m88rs2000: prevent frontend crash on continuous transponder scans + - LP: #1320946 + * mmc: sdhci-bcm-kona: fix build errors when built-in + - LP: #1320946 + * usb: musb: avoid NULL pointer dereference + - LP: #1320946 + * uvcvideo: Do not use usb_set_interface on bulk EP + - LP: #1320946 + * drm/i915: Don't clobber CHICKEN_PIPESL_1 on BDW + - LP: #1320946 + * usb: dwc3: fix randconfig build errors + - LP: #1320946 + * usb: gadget: atmel_usba: fix crashed during stopping when DEBUG is + enabled + - LP: #1320946 + * blktrace: fix accounting of partially completed requests + - LP: #1320946 + * rtlwifi: rtl8192cu: Fix too long disable of IRQs + - LP: #1320946 + * rtlwifi: rtl8192se: Fix too long disable of IRQs + - LP: #1320946 + * rtlwifi: rtl8188ee: Fix too long disable of IRQs + - LP: #1320946 + * rtlwifi: rtl8723ae: Fix too long disable of IRQs + - LP: #1320946 + * xhci: Prevent runtime pm from autosuspending during initialization + - LP: #1320946 + * staging:serqt_usb2: Fix sparse warning restricted __le16 degrades to + integer + - LP: #1320946 + * mtd: atmel_nand: Disable subpage NAND write when using Atmel PMECC + - LP: #1320946 + * iwlwifi: dvm: take mutex when sending SYNC BT config command + - LP: #1320946 + * virtio_balloon: don't softlockup on huge balloon changes. + - LP: #1320946 + * arm64: Make DMA coherent and strongly ordered mappings not executable + - LP: #1320946 + * arm64: Do not synchronise I and D caches for special ptes + - LP: #1320946 + * ARM: OMAP2+: INTC: Acknowledge stuck active interrupts + - LP: #1320946 + * ARM: dts: am33xx: correcting dt node unit address for usb + - LP: #1320946 + * mtip32xx: Set queue bounce limit + - LP: #1320946 + * mtip32xx: Unmap the DMA segments before completing the IO request + - LP: #1320946 + * mtip32xx: mtip_async_complete() bug fixes + - LP: #1320946 + * ath9k: fix ready time of the multicast buffer queue + - LP: #1320946 + * KVM: s390: Optimize ucontrol path + - LP: #1320946 + * mei: fix memory leak of pending write cb objects + - LP: #1320946 + * usb: gadget: tcm_usb_gadget: stop format strings + - LP: #1320946 + * usb: phy: Add ulpi IDs for SMSC USB3320 and TI TUSB1210 + - LP: #1320946 + * USB: unbind all interfaces before rebinding any + - LP: #1320946 + * IB/ipath: Fix potential buffer overrun in sending diag packet routine + - LP: #1320946 + * IB/qib: Fix debugfs ordering issue with multiple HCAs + - LP: #1320946 + * IB/qib: add missing braces in do_qib_user_sdma_queue_create() + - LP: #1320946 + * IB/nes: Return an error on ib_copy_from_udata() failure instead of NULL + - LP: #1320946 + * ALSA: hda/realtek - Restore default value for ALC283 + - LP: #1320946 + * mfd: sec-core: Fix possible NULL pointer dereference when i2c_new_dummy + error + - LP: #1320946 + * regulator: arizona-ldo1: Correct default regulator init_data + - LP: #1320946 + * ASoC: cs42l73: Fix mask bits for SOC_VALUE_ENUM_SINGLE + - LP: #1320946 + * ASoC: cs42l52: Fix mask bits for SOC_VALUE_ENUM_SINGLE + - LP: #1320946 + * drm/i915: Do not dereference pointers from ring buffer in evict event + - LP: #1320946 + * mfd: Include all drivers in subsystem menu + - LP: #1320946 + * mfd: max8997: Fix possible NULL pointer dereference on i2c_new_dummy + error + - LP: #1320946 + * mfd: max77686: Fix possible NULL pointer dereference on i2c_new_dummy + error + - LP: #1320946 + * mfd: max8998: Fix possible NULL pointer dereference on i2c_new_dummy + error + - LP: #1320946 + * mfd: max8925: Fix possible NULL pointer dereference on i2c_new_dummy + error + - LP: #1320946 + * mfd: 88pm860x: Fix I2C device resource leak on regmap init fail + - LP: #1320946 + * mfd: 88pm860x: Fix possible NULL pointer dereference on i2c_new_dummy + error + - LP: #1320946 + * mfd: max77693: Fix possible NULL pointer dereference on i2c_new_dummy + error + - LP: #1320946 + * mfd: 88pm800: Fix I2C device resource leak if probe fails + - LP: #1320946 + * mfd: tps65910: Fix possible invalid pointer dereference on + regmap_add_irq_chip fail + - LP: #1320946 + * MIPS: KVM: Pass reserved instruction exceptions to guest + - LP: #1320946 + * ASoC: cs42l51: Fix SOC_DOUBLE_R_SX_TLV shift values for ADC, PCM, and + Analog kcontrols + - LP: #1320946 + * mac80211: fix potential use-after-free + - LP: #1320946 + * mac80211: fix suspend vs. authentication race + - LP: #1320946 + * mac80211: fix WPA with VLAN on AP side with ps-sta again + - LP: #1320946 + * pid: get pid_t ppid of task in init_pid_ns + - LP: #1320946 + * audit: restore order of tty and ses fields in log output + - LP: #1320946 + * audit: convert PPIDs to the inital PID namespace. + - LP: #1320946 + * mfd: kempld-core: Fix potential hang-up during boot + - LP: #1320946 + * drm/i915: Fix unsafe loop iteration over vma whilst unbinding them + - LP: #1320946 + * powerpc/compat: 32-bit little endian machine name is ppcle, not ppc + - LP: #1320946 + * clk: s2mps11: Fix possible NULL pointer dereference + - LP: #1320946 + * spi: efm32: use $vendor,$device scheme for compatible string + - LP: #1320946 + * ALSA: hda - add headset mic detect quirks for three Dell laptops + - LP: #1297581, #1320946 + * KVM: PPC: Book3S HV: Fix KVM hang with CONFIG_KVM_XICS=n + - LP: #1320946 + * gpio: mxs: Allow for recursive enable_irq_wake() call + - LP: #1320946 + * nfsd4: buffer-length check for SUPPATTR_EXCLCREAT + - LP: #1320946 + * nfsd4: session needs room for following op to error out + - LP: #1320946 + * nfsd4: leave reply buffer space for failed setattr + - LP: #1320946 + * nfsd4: fix test_stateid error reply encoding + - LP: #1320946 + * nfsd: notify_change needs elevated write count + - LP: #1320946 + * dm cache: prevent corruption caused by discard_block_size > + cache_block_size + - LP: #1320946 + * dm transaction manager: fix corruption due to non-atomic transaction + commit + - LP: #1320946 + * dm: take care to copy the space map roots before locking the superblock + - LP: #1320946 + * aio: v4 ensure access to ctx->ring_pages is correctly serialised for + migration + - LP: #1320946 + * NFSD: Traverse unconfirmed client through hash-table + - LP: #1320946 + * lockd: ensure we tear down any live sockets when socket creation fails + during lockd_up + - LP: #1320946 + * drm/i915/tv: fix gen4 composite s-video tv-out + - LP: #1320946 + * dm thin: fix dangling bio in process_deferred_bios error path + - LP: #1320946 + * em28xx: fix PCTV 290e LNA oops + - LP: #1320946 + * NFSv4: Fix a use-after-free problem in open() + - LP: #1320946 + * nfsd4: fix setclientid encode size + - LP: #1320946 + * MIPS: Hibernate: Flush TLB entries in swsusp_arch_resume() + - LP: #1320946 + * ALSA: hda - Enable beep for ASUS 1015E + - LP: #1320946 + * nfsd: check passed socket's net matches NFSd superblock's one + - LP: #1320946 + * s390/bitops,atomic: add missing memory barriers + - LP: #1320946 + * IB/mthca: Return an error on ib_copy_to_udata() failure + - LP: #1320946 + * IB/ehca: Returns an error on ib_copy_to_udata() failure + - LP: #1320946 + * drm/qxl: unset a pointer in sync_obj_unref + - LP: #1320946 + * smarter propagate_mnt() + - LP: #1320946 + * don't bother with {get,put}_write_access() on non-regular files + - LP: #1320946 + * reiserfs: fix race in readdir + - LP: #1320946 + * drm/vmwgfx: correct fb_fix_screeninfo.line_length + - LP: #1320946 + * ALSA: hda - Fix silent speaker output due to mute LED fixup + - LP: #1320946 + * drm/radeon: clear needs_reset flag if IB test fails + - LP: #1320946 + * drm/radeon: call drm_edid_to_eld when we update the edid + - LP: #1320946 + * drm/radeon: fix endian swap on hawaii clear state buffer setup + - LP: #1320946 + * drm/radeon: fix typo in spectre_golden_registers + - LP: #1320946 + * sh: fix format string bug in stack tracer + - LP: #1320946 + * ocfs2: dlm: fix lock migration crash + - LP: #1320946 + * ocfs2: dlm: fix recovery hung + - LP: #1320946 + * ocfs2: do not put bh when buffer_uptodate failed + - LP: #1320946 + * ocfs2: fix panic on kfree(xattr->name) + - LP: #1320946 + * xattr: guard against simultaneous glibc header inclusion + - LP: #1320946 + * drm/i915: move power domain init earlier during system resume + - LP: #1320946 + * Skip intel_crt_init for Dell XPS 8700 + - LP: #1320946 + * dm cache: fix a lock-inversion + - LP: #1320946 + * thinkpad_acpi: Fix inconsistent mute LED after resume + - LP: #1320946 + * iser-target: Add missing se_cmd put for WRITE_PENDING in tx_comp_err + - LP: #1320946 + * iscsi-target: Fix ERL=2 ASYNC_EVENT connection pointer bug + - LP: #1320946 + * Target/sbc: Initialize COMPARE_AND_WRITE write_sg scatterlist + - LP: #1320946 + * mm: page_alloc: spill to remote nodes before waking kswapd + - LP: #1320946 + * mm: try_to_unmap_cluster() should lock_page() before mlocking + - LP: #1320946 + * mm: hugetlb: fix softlockup when a large number of hugepages are freed. + - LP: #1320946 + * hung_task: check the value of "sysctl_hung_task_timeout_sec" + - LP: #1320946 + * DRM: armada: fix corruption while loading cursors + - LP: #1320946 + * ALSA: ice1712: Fix boundary checks in PCM pointer ops + - LP: #1320946 + * lib/percpu_counter.c: fix bad percpu counter state during suspend + - LP: #1320946 + * md/raid1: r1buf_pool_alloc: free allocate pages when subsequent + allocation fails. + - LP: #1320946 + * ALSA: hda - add headset mic detect quirk for a Dell laptop + - LP: #1297581, #1320946 + * b43: Fix machine check error due to improper access of + B43_MMIO_PSM_PHY_HDR + - LP: #1320946 + * x86-64, modify_ldt: Ban 16-bit segments on 64-bit kernels + - LP: #1320946 + * target/tcm_fc: Fix use-after-free of ft_tpg + - LP: #1320946 + * ib_srpt: Use correct ib_sg_dma primitives + - LP: #1320946 + * Linux 3.13.11.1 + - LP: #1320946 + * Linux 3.13.11.2 + - LP: #1320946 + * hp-wireless: new driver for hp wireless button for Windows 8 + - LP: #1303737 + * x86, platform: Make HP_WIRELESS option text more descriptive + - LP: #1303737 + * ACPI: blacklist win8 OSI for Dell Inspiron 7737 + - LP: #1288161 + + -- Luis Henriques Thu, 22 May 2014 12:20:44 +0100 + +linux (3.13.0-27.50) trusty; urgency=low + + [ Brad Figg ] + + * Revert "rtlwifi: Set the link state" + + -- Brad Figg Thu, 15 May 2014 10:21:43 -0700 + +linux (3.13.0-27.49) trusty; urgency=low + + [ Brad Figg ] + + * Revert "SAUCE: (no-up) HID: rmi: do not stop the device at the end of + probe" + * Revert "SAUCE: (no-up) HID: rmi: introduce RMI driver for Synaptics + touchpads" + * Revert "[Config] CONFIG_HID_RMI=m" + + -- Brad Figg Wed, 14 May 2014 10:29:07 -0700 + +linux (3.13.0-26.48) trusty; urgency=low + + [ Benjamin Tissoires ] + + * SAUCE: (no-up) HID: rmi: introduce RMI driver for Synaptics touchpads + - LP: #1305522 + * SAUCE: (no-up) HID: rmi: do not stop the device at the end of probe + - LP: #1305522 + + [ Kamal Mostafa ] + + * Merged back Ubuntu-3.13.0-24.47 security release + * Revert "n_tty: Fix n_tty_write crash when echoing in raw mode" + - LP: #1314762 + * Release Tracking Bug + - LP: #1316835 + + [ Tim Gardner ] + + * [Config] CONFIG_HID_RMI=m + - LP: #1305522 + * [Config] CONFIG_CRYPTO_DEV_NX=n for ppc64el + - LP: #1314625 + * [Config] CONFIG_ZSWAP=y + - LP: #1315203 + * Add rpcsec_gss_krb5 to generic inclusion list + - LP: #769527 + + [ Upstream Kernel Changes ] + + * HID: hidraw: make comment more accurate and nicer + - LP: #1305522 + * HID: remove hid_get_raw_report in struct hid_device + - LP: #1305522 + * HID: i2c-hid: implement ll_driver transport-layer callbacks + - LP: #1305522 + * HID: add inliners for ll_driver transport-layer callbacks + - LP: #1305522 + * HID: Add transport-driver callbacks to the hid_ll_driver struct + - LP: #1305522 + * drm/nouveau: fail runtime pm properly. + - LP: #1313986 + * drm/nouveau: don't suspend/resume display on runtime s/r + - LP: #1313986 + * n_tty: Fix n_tty_write crash when echoing in raw mode + - LP: #1314762 + - CVE-2014-0196 + * floppy: ignore kernel-only members in FDRAWCMD ioctl input + - LP: #1316729 + - CVE-2014-1737 + * floppy: don't write kernel-only members to FDRAWCMD ioctl output + - LP: #1316735 + - CVE-2014-1738 + + -- Kamal Mostafa Tue, 06 May 2014 15:30:29 -0700 + +linux (3.13.0-25.47) trusty; urgency=low + + [ Joseph Salisbury ] + + * Release Tracking Bug + - LP: #1313868 + + [ Adam Lee ] + + * [Config] CONFIG_RTL8723BE=m, CONFIG_RTL8723_COMMON=m + - LP: #1240940 + + [ Alex Hung ] + + * SAUCE: (no-up) dell-led: add mic mute led interface + - LP: #1308297 + + [ Andy Whitcroft ] + + * SAUCE: (no-up) powerpc: Increase COMMAND_LINE_SIZE to 2048 from 512. + - LP: #1306677 + + [ Ben Collins ] + + * [Config] Disable PAMU on Freescale kernels + - LP: #1311738 + + [ Tim Gardner ] + + * Revert "SAUCE: x86, hyperv: bypass the timer_irq_works() check" + - LP: #1311683 + * SAUCE: (no-up) ALSA: usb-audio: Suppress repetitive debug messages from + retire_playback_urb() + - LP: #1305133 + * SAUCE: (no-up) 'BUG:' message unnecessarily triggers kerneloops + - LP: #1305480 + * [Config] CONFIG_POWERNV_CPUFREQ=m + - LP: #1309576 + * [Config] CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y for ppc64el + - LP: #1309576 + * [Config] CONFIG_TRANSPARENT_HUGEPAGE=n for arm64 + - LP: #1309221 + * [Config] CONFIG_MEMCG_KMEM=y + - LP: #1309586 + * [Config] CONFIG_CRASH_DUMP=y for ppc64el + - LP: #1312783 + + [ Upstream Kernel Changes ] + + * Revert "rtlwifi: rtl8188ee: enable MSI interrupts mode" + - LP: #1310512 + * mac80211: add length check in ieee80211_is_robust_mgmt_frame() + - LP: #1240940 + * rtlwifi: rtl8723ae: rtl8723-common: Create new driver for common code + - LP: #1240940 + * rtlwifi: rtl8723ae: rtl8723-common: Copy common firmware code + - LP: #1240940 + * rtlwifi: rtl8723ae: rtl8723-common: Copy common dynamic power + management code + - LP: #1240940 + * rtlwifi: rtl8723be: Add new driver + - LP: #1240940 + * selinux: correctly label /proc inodes in use before the policy is + loaded + - LP: #1309007 + * net: sctp: fix skb leakage in COOKIE ECHO path of chunk->auth_chunk + - LP: #1309007 + * bridge: multicast: add sanity check for query source addresses + - LP: #1309007 + * tipc: allow connection shutdown callback to be invoked in advance + - LP: #1309007 + * tipc: fix connection refcount leak + - LP: #1309007 + * tipc: drop subscriber connection id invalidation + - LP: #1309007 + * tipc: fix memory leak during module removal + - LP: #1309007 + * tipc: don't log disabled tasklet handler errors + - LP: #1309007 + * inet: frag: make sure forced eviction removes all frags + - LP: #1309007 + * net: unix: non blocking recvmsg() should not return -EINTR + - LP: #1309007 + * ipv6: Fix exthdrs offload registration. + - LP: #1309007 + * bnx2: Fix shutdown sequence + - LP: #1309007 + * pkt_sched: fq: do not hold qdisc lock while allocating memory + - LP: #1309007 + * Xen-netback: Fix issue caused by using gso_type wrongly + - LP: #1309007 + * vlan: Set correct source MAC address with TX VLAN offload enabled + - LP: #1309007 + * tcp: tcp_release_cb() should release socket ownership + - LP: #1309007 + * bridge: multicast: add sanity check for general query destination + - LP: #1309007 + * bridge: multicast: enable snooping on general queries only + - LP: #1309007 + * net: socket: error on a negative msg_namelen + - LP: #1309007 + * bonding: set correct vlan id for alb xmit path + - LP: #1309007 + * eth: fec: Fix lost promiscuous mode after reconnecting cable + - LP: #1309007 + * ipv6: Avoid unnecessary temporary addresses being generated + - LP: #1309007 + * ipv6: ip6_append_data_mtu do not handle the mtu of the second fragment + properly + - LP: #1309007 + * net: cdc_ncm: fix control message ordering + - LP: #1309007 + * vxlan: fix potential NULL dereference in arp_reduce() + - LP: #1309007 + * vxlan: fix nonfunctional neigh_reduce() + - LP: #1309007 + * tcp: syncookies: do not use getnstimeofday() + - LP: #1309007 + * rtnetlink: fix fdb notification flags + - LP: #1309007 + * ipmr: fix mfc notification flags + - LP: #1309007 + * ip6mr: fix mfc notification flags + - LP: #1309007 + * net: micrel : ks8851-ml: add vdd-supply support + - LP: #1309007 + * netpoll: fix the skb check in pkt_is_ns + - LP: #1309007 + * tipc: fix spinlock recursion bug for failed subscriptions + - LP: #1309007 + * ip_tunnel: Fix dst ref-count. + - LP: #1309007 + * tg3: Do not include vlan acceleration features in vlan_features + - LP: #1309007 + * virtio-net: correct error handling of virtqueue_kick() + - LP: #1309007 + * usbnet: include wait queue head in device structure + - LP: #1309007 + * vlan: Set hard_header_len according to available acceleration + - LP: #1309007 + * vhost: fix total length when packets are too short + - LP: #1309007 + - CVE-2014-0077 + * tcp: fix get_timewait4_sock() delay computation on 64bit + - LP: #1309007 + * xen-netback: remove pointless clause from if statement + - LP: #1309007 + * ipv6: some ipv6 statistic counters failed to disable bh + - LP: #1309007 + * netlink: don't compare the nul-termination in nla_strcmp + - LP: #1309007 + * xen-netback: disable rogue vif in kthread context + - LP: #1309007 + * Call efx_set_channels() before efx->type->dimension_resources() + - LP: #1309007 + * net: vxlan: fix crash when interface is created with no group + - LP: #1309007 + * isdnloop: Validate NUL-terminated strings from user. + - LP: #1309007 + * isdnloop: several buffer overflows + - LP: #1309007 + * powernow-k6: disable cache when changing frequency + - LP: #1309007 + * powernow-k6: correctly initialize default parameters + - LP: #1309007 + * powernow-k6: reorder frequencies + - LP: #1309007 + * ARC: [nsimosci] Change .dts to use generic 8250 UART + - LP: #1309007 + * ARC: [nsimosci] Unbork console + - LP: #1309007 + * futex: Allow architectures to skip futex_atomic_cmpxchg_inatomic() test + - LP: #1309007 + * m68k: Skip futex_atomic_cmpxchg_inatomic() test + - LP: #1309007 + * crypto: ghash-clmulni-intel - use C implementation for setkey() + - LP: #1309007 + * Linux 3.13.10 + - LP: #1309007 + * cpufreq: powernv: cpufreq driver for powernv platform + - LP: #1309576 + * cpufreq: powernv: Use cpufreq_frequency_table.driver_data to store + pstate ids + - LP: #1309576 + * cpufreq: powernv: Select CPUFreq related Kconfig options for powernv + - LP: #1309576 + * support Thinkpad X1 Carbon 2nd generation's adaptive keyboard + - LP: #1309609 + * save and restore adaptive keyboard mode for suspend and,resume + - LP: #1309609 + * user namespace: fix incorrect memory barriers + - LP: #1311683 + * Char: ipmi_bt_sm, fix infinite loop + - LP: #1311683 + * x86, hyperv: Bypass the timer_irq_works() check + - LP: #1311683 + * x86: Adjust irq remapping quirk for older revisions of 5500/5520 + chipsets + - LP: #1311683 + * PCI: designware: Fix RC BAR to be single 64-bit non-prefetchable memory + BAR + - LP: #1311683 + * PCI: designware: Fix iATU programming for cfg1, io and mem viewport + - LP: #1311683 + * ACPI / button: Add ACPI Button event via netlink routine + - LP: #1311683 + * PCI: Enable INTx in pci_reenable_device() only when MSI/MSI-X not + enabled + - LP: #1311683 + * staging: comedi: 8255_pci: initialize MITE data window + - LP: #1311683 + * tty: Set correct tty name in 'active' sysfs attribute + - LP: #1311683 + * tty: Fix low_latency BUG + - LP: #1311683 + * SCSI: sd: don't fail if the device doesn't recognize SYNCHRONIZE CACHE + - LP: #1311683 + * pid_namespace: pidns_get() should check task_active_pid_ns() != NULL + - LP: #1311683 + * Bluetooth: Fix removing Long Term Key + - LP: #1311683 + * ima: restore the original behavior for sending data with ima template + - LP: #1311683 + * backing_dev: fix hung task on sync + - LP: #1311683 + * bdi: avoid oops on device removal + - LP: #1311683 + * xfs: fix directory hash ordering bug + - LP: #1311683 + * Btrfs: skip submitting barrier for missing device + - LP: #1311683 + * Btrfs: fix deadlock with nested trans handles + - LP: #1311683 + * ext4: fix error return from ext4_ext_handle_uninitialized_extents() + - LP: #1311683 + * ext4: fix partial cluster handling for bigalloc file systems + - LP: #1311683 + * ext4: fix premature freeing of partial clusters split across leaf + blocks + - LP: #1311683 + * jffs2: Fix segmentation fault found in stress test + - LP: #1311683 + * jffs2: Fix crash due to truncation of csize + - LP: #1311683 + * jffs2: avoid soft-lockup in jffs2_reserve_space_gc() + - LP: #1311683 + * jffs2: remove from wait queue after schedule() + - LP: #1311683 + * sparc32: fix build failure for arch_jump_label_transform + - LP: #1311683 + * sparc64: don't treat 64-bit syscall return codes as 32-bit + - LP: #1311683 + * sparc64: Make sure %pil interrupts are enabled during hypervisor yield. + - LP: #1311683 + * wait: fix reparent_leader() vs EXIT_DEAD->EXIT_ZOMBIE race + - LP: #1311683 + * exit: call disassociate_ctty() before exit_task_namespaces() + - LP: #1311683 + * Linux 3.13.11 + - LP: #1311683 + * powerpc/le: Enable RTAS events support + - LP: #1312230 + * net: ipv4: current group_info should be put after using. + - CVE-2014-2851 + * powerpc/relocate fix relocate processing in LE mode + - LP: #1312783 + + -- Joseph Salisbury Mon, 28 Apr 2014 15:02:45 -0400 + +linux (3.13.0-24.47) trusty; urgency=low + + [ Peter Hurley ] + + * n_tty: Fix n_tty_write crash when echoing in raw mode + + -- Brad Figg Wed, 30 Apr 2014 15:08:31 -0700 + +linux (3.13.0-24.46) trusty; urgency=low + + [ Andy Whitcroft ] + + * [Config] d-i -- add nvme devices to block-modules udeb + - LP: #1303710 + + [ Paolo Pisati ] + + * [Config] build vexpress a9 dtb + - LP: #1303657 + * [Config] disable HVC_DCC + - LP: #1303657 + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1305158 + * rebase to v3.13.9 + * CONFIG_RTLBTCOEXIST=m + - LP: #1296591 + + [ Upstream Kernel Changes ] + + * HID: Bluetooth: hidp: make sure input buffers are big enough + - LP: #1252874 + * ACPI / video: Add systems that should favour native backlight interface + - LP: #1303419 + * rds: prevent dereference of a NULL device in rds_iw_laddr_check + - LP: #1302222 + - CVE-2014-2678 + * x86/efi: Fix 32-bit fallout + - LP: #1301590 + * drm/nouveau/devinit: tidy up the subdev class definition + - LP: #1158689 + * drm/nouveau/device: provide a way for devinit to mark engines as + disabled + - LP: #1158689 + * drm/nv50-/devinit: prevent use of engines marked as disabled by + hw/vbios + - LP: #1158689 + * rtlwifi: btcoexist: Add new mini driver + - LP: #1296591 + * rtlwifi: Prepare existing drivers for new driver + - LP: #1296591 + * rtlwifi: add MSI interrupts mode support + - LP: #1296591 + * rtlwifi: rtl8188ee: enable MSI interrupts mode + - LP: #1296591 + + [ Upstream Kernel Changes ] + + * rebase to v3.13.9 + + -- Tim Gardner Fri, 04 Apr 2014 09:26:27 -0400 + +linux (3.13.0-23.45) trusty; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1302083 + + [ Emil Goode ] + + * SAUCE: (no-up) brcmsmac: fix deadlock on missing firmware + - LP: #1300416 + + [ Moni Shoua ] + + * SAUCE: (no-up) IB/core: Don't resolve passive side RoCE L2 address in cma req handler + Merged at the request of Mellanox engineers. It shold be making its way upstream. + http://www.spinics.net/lists/linux-rdma/msg19417.html + + [ Or Gerlitz ] + + * [Config] CONFIG_INFINIBAND_USNIC=m + + [ Tim Gardner ] + + * [Config] CONFIG_MLX4_EN_VXLAN=y + + [ Upstream Kernel Changes ] + + * This set of patches essentially updates the infiniband subsystem to 3.14 plus some + bug fixes from 3.15. The initial set of commits were determined using: + + git log --pretty=oneline --reverse v3.13..cd6362befe4cc7bf589a5236d2a780af2d47bcc9 -- drivers/infiniband drivers/net/ethernet/mellanox include/linux/mlx* include/rdma + + A few tree-wide patches were dropped since they were not essential. + This is the list of commits that were actually applied. As you can see there were + a few back ports, but all were simple context collisions and easily resolved. + + (cherry picked from commit 7c6d74d23a33a946bcf08ba2d3e52d31943b7342) + (cherry picked from commit 7b25d81b7ff03bb1893a9c7f97797b891a772deb) + (cherry picked from commit 73e74ab4e0d030f28d640507998156a22d4211f8) + (cherry picked from commit eb17711bc1d6611e934af5b6dabc225936084128) + (cherry picked from commit 8e1a28e8e6797449dfdfa4739002d1e5939355a8) + (cherry picked from commit 84c864038d6d991be81344fc3168ec2c2f7a8d06) + (cherry picked from commit d03a68f8217ea03492e4f7928db222dc6544792a) + (cherry picked from commit be902ab122fcc59ba6a8588e820c31861d75a5a4) + (cherry picked from commit e4b59a1cb6f8feb03f356b0abfd20451f05d7470) + (cherry picked from commit 0276a330617a0cf380f09e5065299078d3d45886) + (cherry picked from commit 982290a7fe36e528af292d3e3b61939b1900bfc6) + (cherry picked from commit c5266d40b0a26546d0ebedb44dd4145088b85cb8) + (cherry picked from commit 7ffdf726cfe0d188907bdbb0e7729fb35a69c219) + (cherry picked from commit 837052d0ccc5a789a578f8b628ba154b63bd51ea) + (cherry picked from commit c0623e587d869b4b18e077d64a8524ea364b5b77) + (cherry picked from commit ad7d4eaed995d76fb24a18e202fdf5072197ff0a) + (cherry picked from commit 2156d9a8ac0202f0158d407063cb850afffd3f56) + (cherry picked from commit b912b2f8fc71df4c3ffa7a9fe2c2227e8bcdaa07) + (cherry picked from commit 9ba75fb0c4b92416b94640b5a043c323a457f14a) + (cherry picked from commit 74b9c3ea847f060c784e86453f1ad77dd05a7a8f) + (cherry picked from commit e6a767582942d6fd9da0ddea673f5a7017a365c7) + (cherry picked from commit fe5e8a1acc7fd877b6706053cf88c418c33fe7a3) + (cherry picked from commit be8348df6efac6b602f2ad3210139bccf0dbe3d7) + (cherry picked from commit e3cf00d0a87f025db5855a43a67c67a41fa79fef) + (cherry picked from commit 8192d4acb5c5376c0f6756f2106ab243036c8c7d) + (cherry picked from commit 301a0dd68e5ddd22d992a58f466b621987d9df3b) + (cherry picked from commit 2183b990b67b761f81c68a18f60df028e080cf05) + (cherry picked from commit 8af94ac66a4d53a96278ecbb9ef2e8592f0d9ba3) + (cherry picked from commit 256d6a6ac52ee02e897cec88ecc96c3ae7f9cb88) + (cherry picked from commit 60b215e8b267f911751a043de63181dab1b69706) + (cherry picked from commit b85caf479b577f000067002259539ad4341d4530) + (cherry picked from commit 3f92bed3d6c073f41efc0777ecd3442aa1f03d20) + (cherry picked from commit 6214105460842759020bdd7f4dbb50afa1be9d17) + (cherry picked from commit c7845bcafe4d2ecd5c479fa64d1b425c21dde17c) + (cherry picked from commit e45e614e4015a489d2f8013eaed45d498d884e86) + (cherry picked from commit 248567f79304b953ea492fb92ade097b62ed09b2) + (cherry picked from commit 6a54d9f9a04ed35e6615a47974c1ef02ff3a62cb) + (cherry picked from commit c5f855e08a97edc107c4a3b73809ed629c1dcac1) + (cherry picked from commit 9f637f7936025aef57f247b11036bad18bb87c06) + (cherry picked from commit c30392ab5bb536fef268c22804dafded15170d14) + (cherry picked from commit 3108bccb3d9afbd32931d775f5dd5ee157eaa5a9) + (cherry picked from commit d9fe40916387bab884e458c99399c149b033506c) + (cherry picked from commit 24e42754f676d34e5c26d6b7b30f36df8004ec08) + (cherry picked from commit c1be5232d21de68f46637e617225b9b7c586451a) + (cherry picked from commit 90f1d1b41b70474bf73d07d4300196901cd81718) + (cherry picked from commit 240ae00e4d834e387f4f09e236130f520e357a70) + (back ported from commit 4de6580360867d44adecb2d05febed1c8d186c82) + (cherry picked from commit 0a9b7d59d5a8e2b97406a29a8a807bbc5ce7092e) + (cherry picked from commit a37a1a428431d3e7e9f53530b5c56ff7867bd487) + (cherry picked from commit c1c98501121eefa0888a42566ec7233a1626f678) + (back ported from commit dd5f03beb4f76ae65d76d8c22a8815e424fc607c) + (cherry picked from commit c9218a9e677856d6647ea82d821f22ccbffc988c) + (cherry picked from commit f088cbb8d8547a89af258a3223657f9a69b811e4) + (cherry picked from commit 4942c0b4b64478ff45c3bbf4d40aebd66de0bcc5) + (cherry picked from commit 2d97436f5b06217beb6c91a0cd0ae0f0d79b61cc) + (cherry picked from commit 5db5765e255de4072eb0e35facfeafce53af001b) + (cherry picked from commit 61f78268936e781a104b4ac06b7e47d760800c40) + (cherry picked from commit 6dcebe614c667fca73aaf0cfbd1e70bc9179538e) + (cherry picked from commit d1db47c5eed89a1c8b60e780aeadd870bb0d3894) + (cherry picked from commit af2e2e35a23e4aeecfe4332a7140c81e0f09b7e3) + (cherry picked from commit 7b85627b9f02f9b0fb2ef5f021807f4251135857) + (back ported from commit d487ee77740ccf79d7dc1935d4daa77887283028) + (cherry picked from commit 297e0dad720664dad44baa2cdd13f871979fb58c) + (cherry picked from commit eb6ab13267be87dcad3e611500b7cb404ed4479c) + (cherry picked from commit a3a5a82627492c8947d8866ddf421e9248088466) + (cherry picked from commit dc87a90f5d61d7f01cfb63d92d5eaa27718e5b19) + (cherry picked from commit 9bd626e79df67b2ba3b0c91a4640ab7bca1af04d) + (cherry picked from commit 40aca6ffcac57dd9c65877a59a8bbb210c4691ca) + (cherry picked from commit 37721d8501a9a1fbe87527c24d127a914b29fd7f) + (cherry picked from commit ed4c54e5b4baf55a7a67a80fa766334855c94854) + (cherry picked from commit 2f85d24e604c1532723c4b5791816b533baed2c3) + (cherry picked from commit 990acea616e99355703b503c1e50fb9c7ddff6b9) + (cherry picked from commit f282651de676d10e395bc7923f0087fbbba12ed7) + (cherry picked from commit 31ab8acbf6618c89fec77f7706df7daaa319feb5) + (cherry picked from commit 9392fa06411cf93885c4cafc8058085d98f52fec) + (cherry picked from commit 27cdef637c25705b433d5c4deeef4cf8dcb75d6a) + (cherry picked from commit 8ce96afa8239f13bdf5ab35839bac46c103bbedc) + (cherry picked from commit 6cd28f044b47aeeba91807d97d6f3ea5a048e88d) + (cherry picked from commit 5462eddd7a78131ccb514d52473625d99769215e) + (cherry picked from commit 05633102d85b50f35325dfbedafcedd6c5b3264c) + (cherry picked from commit 437708c44395a11e474fb33b4fd7f29483118e51) + (cherry picked from commit d9d5713ca628dc211d8b4a1da5fb9e0cfe592b92) + (cherry picked from commit a384b20e417ae0f5f1f359600b4bdcc34265b256) + (cherry picked from commit 298589b1cb626adf4beba6dd8e3cd4b64e8799be) + (cherry picked from commit e08a8761d89b7625144c3fbf0ff9643159135c96) + (cherry picked from commit 0b6e81b91070bdbe0defb9101384ebb26835e401) + (cherry picked from commit 042b9adae899e1b497282d92205d3fef42d5ca8d) + (cherry picked from commit ada388f7afad1e2e87acbfe30600fdaff9bd6327) + (cherry picked from commit 3bdb31f688276505ede23280885948e934304674) + (cherry picked from commit bde51583f49bd87e452e9504d489926638046b11) + (cherry picked from commit db81a5c374b5bd650c5e6ae85d026709751db103) + (cherry picked from commit 05bdb2ab6b09f2306f0afe0f60f4b9abffa7aba4) + (cherry picked from commit 9e9c47d07d447e09a66ee528c3ebad9ba359af6a) + (cherry picked from commit 1bde6e301cf6217da9238086c958f532b16e504d) + (cherry picked from commit 8c8a49148b95c4d7c5f58a6866a30ea02485d7a3) + (cherry picked from commit 57761d8df8efc7cc1227f9bc22e0dda01b0dd91b) + (cherry picked from commit 676687c69697d2081d25afd14ee90937d1fb0c8e) + (cherry picked from commit 9e65dc371b5c8d7476c81353137efc13cc1bdabd) + (cherry picked from commit 78c0f98cc9dd46824fa66f35f14ea24ba733d145) + (cherry picked from commit 1a4c3a3dc5fdeef2a7bdf4ac7d81df58c3c0a51e) + (cherry picked from commit d07875bd0d1517185534b5f9eef469426ba42cb9) + (cherry picked from commit ab576627c8f97c08297d81537be17df161171923) + (cherry picked from commit a80e21b3b2d151d79bb9be42334ab10d40195324) + (cherry picked from commit 9d8abf45944e4f1c18a04070fc3ed2f3ffcbbcb6) + (cherry picked from commit 4196670be786d529ab7f6c18f5077141ce1b787e) + (cherry picked from commit acc4fccf4eff5b29e545995b75de77e60ea44aae) + (cherry picked from commit 4ce5a5744a2f5479e58c6788cbe3987b8071b62e) + (cherry picked from commit ddf8bd349115c2bc85a62e3d94018c9976ac72f7) + (cherry picked from commit 5071456fe244e409adcda7226e5f0b5d1b879fd3) + (cherry picked from commit ad4885d279b63c65347220236d07669a2f59634b) + (cherry picked from commit b4a26a27287a7f81933ba016aeed6c69dd155323) + (cherry picked from commit 0f0132001fd239bb67c1f68436b95cc79de89736) + (cherry picked from commit 6ecde51dd7894ffe2f959cca1fea3ea2b9ee2394) + (cherry picked from commit 0861565f501ce3fcea9394d4b98c02b1f6de6b9e) + (cherry picked from commit f809309a251a13bd97cc189c3fa428782aab9716) + (cherry picked from commit 7d9eacf9457efc6b614665e1095336c11ad83f0d) + (cherry picked from commit fd8b48b22a2b7cdf21f15b01cae379e6159a7eea) + (cherry picked from commit a61d93d92f5c9533898098abb5f187840900aeb5) + (cherry picked from commit 09de3f1313a30d8a22e488c9a5b96a9560cae96d) + (cherry picked from commit 99932d4fc03a13bb3e94938fe25458fabc8f2fc3) + (cherry picked from commit 169a1d85d084edeb0736ad80fe439639ac938dcd) + (cherry picked from commit 367d56f7b4d5ce61e883c64f81786c7a3ae88eea) + (cherry picked from commit 57352ef4f5f19969a50d42e84b274287993b576f) + (cherry picked from commit 97989356af0ec8b1b1658d804892abb354127330) + (cherry picked from commit 56cb456746a15c1025a178466492ca4c373b1a63) + (cherry picked from commit 2a2083f7f3568c0192daa6ac0e6fa35d953f47bd) + (cherry picked from commit 7855bff42ea9938a0853321256f4c8ce3628aa73) + (cherry picked from commit de123268300fd33b7f7668fda3264059daffa6ef) + (cherry picked from commit 299603e8370a93dd5d8e8d800f0dff1ce2c53d36) + (cherry picked from commit bf5a755f5e9186406bbf50f4087100af5bd68e40) + (cherry picked from commit 600adc18eba823f9fd8ed5fec8b04f11dddf3884) + (back ported from commit b582ef0990d457f7ce8ccf827af51a575ca0b4a6) + (cherry picked from commit e27a2f839598e48bb345f9fc86d4d54c3944db50) + (back ported from commit dc01e7d3447793fd9e4090aa9d50c549848b5a18) + (cherry picked from commit b5aaab12b2b4bc4acab7384c17a87f3406e5047d) + (cherry picked from commit 920a0fde5a32fd40b4d3c94ad72f7fc7039db8e3) + (cherry picked from commit 438e38fadca2f6e57eeecc08326c8a95758594d4) + (cherry picked from commit 97a5221f56bad2e1c7e8ab55da4ac4748ef59c64) + (cherry picked from commit 02512482321c531df4abf73943529f8b44d869e2) + (cherry picked from commit bb2146bc883e86b835e30644757a6d4a649a7ce8) + (back ported from commit ca9f9f703950e5cb300526549b4f1b0a6605a5c5) + (cherry picked from commit fd8daa45f2bd9b876e0dbb9503ccc5a5252844f2) + (cherry picked from commit b97b33a3df0439401f80f041eda507d4fffa0dbf) + (cherry picked from commit 93591aaa62f89820f4ae0558f01eaf9a359738da) + (cherry picked from commit 15bffdffccb3204eb1e993f60eee65c439a03136) + (cherry picked from commit 9813337a4b16ea5b1701b1d00f7e410f5decdfa5) + (cherry picked from commit 313c2d375b1c9b648d9d4b96ec1b8185ac6a78c5) + (cherry picked from commit 28d222bbaa5122fb4bb0e607e39ab149a010e587) + (cherry picked from commit ec5709403e6893acb4f7ca40514ebd29c3116836) + (cherry picked from commit 9717218bb2982f5f214d84473c70542f1e42bfd7) + (cherry picked from commit d0ceebd7508d5bf6e81367640959aef7e0de4947) + (cherry picked from commit c120e9e03090b4f9578ca38ef4250ff3805b6e3f) + (cherry picked from commit 6ee51a4e866bbb0921180b457ed16cd172859346) + (cherry picked from commit 9cd593529c8652785bc9962acc79b6b176741f99) + (cherry picked from commit b6ffaeffaea4d92f05f5ba1ef54df407cb7c8517) + (cherry picked from commit 2f5bb473681b88819a9de28ac3a47e7737815a92) + (cherry picked from commit 5ea8bbfc49291b7e23161fe4de0bf3e4a4e34b18) + (cherry picked from commit ceb5433b3a54979216d794e45147d25c24c94999) + (cherry picked from commit aa9a2d51a3e70b15a898bec7dde3ce5726fec641) + (cherry picked from commit e81f44b66b456a7dcfbdeffeb355458cd6a58973) + (cherry picked from commit 7a2cea2aaae2d5eb5c00c49c52180c7c2c66130a) + (cherry picked from commit 05eb23893c2cf9502a9cec0c32e7f1d1ed2895c8) + (cherry picked from commit 38be0a347c91133843474e12baacd252d0fd1c30) + (cherry picked from commit 82373701be26b893eaf7372db0af84235a51998a) + (cherry picked from commit 1ab95d37bcc3ff2d69e3871e4f056bab7aed0b85) + (cherry picked from commit f74462acf8f390528c8b7937f227c6c90d017f3b) + (cherry picked from commit 449fc48866f7d84b0d9a19201de18a4dd4d3488c) + (cherry picked from commit dd41cc3bb90efd455df514899a5d3cf245182eb1) + (cherry picked from commit e471b40321a94f07d13b8a9e4b064885cf08835d) + (cherry picked from commit bfd2793c9559ae73ae021797f1d4b097c27f24be) + (cherry picked from commit b74757944d69f8cd7de5284fc7e8649d965361ab) + (cherry picked from commit d18f141a1a7cfa5ffad8433e43062b05a8d1b82a) + (cherry picked from commit 1b136de120dda625109f2afe1e3d04e256be9ec1) + (cherry picked from commit a66132f3eb514f42c49a3e8f57aab2ccd0360f06) + + * mlx4_core: Roll back round robin bitmap allocation commit for CQs, SRQs, and MPTs + * net/mlx4_core: Remove zeroed out of explicit QUERY_FUNC_CAP fields + * net/mlx4_core: Rename QUERY_FUNC_CAP fields + * net/mlx4_core: Introduce nic_info new flag in QUERY_FUNC_CAP + * net/mlx4_core: Expose physical port id as PF/VF capability + * net/mlx4_en: Implement ndo_get_phys_port_id + * net/mlx4_en: Configure the XPS queue mapping on driver load + * net/mlx4_core: Set CQE/EQE size to 64B by default + * net/mlx4_en: Ignore irrelevant hypervisor events + * net/mlx4_en: Add NAPI support for transmit side + * net/mlx4_core: Check port number for validity before accessing data + * infiniband: slight optimization of addr compare + * net/mlx4_core: Add basic support for TCP/IP offloads under tunneling + * net/mlx4_en: Add netdev support for TCP/IP offloads of vxlan tunneling + * net: mlx4: slight optimization of addr compare + * mlx4_en: Add PTP hardware clock + * mlx4_en: Only cycle port if HW timestamp config changes + * net/mlx4_core: Warn if device doesn't have enough PCI bandwidth + * net/mlx4_en: fix error return code in mlx4_en_get_qp() + * mlx4_en: Select PTP_1588_CLOCK + * net/mlx4_en: call gro handler for encapsulated frames + * RDMA/ocrdma: Fix AV_VALID bit position + * RDMA/ocrdma: Fix OCRDMA_GEN2_FAMILY macro definition + * IB/usnic: Add Cisco VIC low-level hardware driver + * IB/usnic: Change WARN_ON to lockdep_assert_held + * IB/usnic: Add struct usnic_transport_spec + * IB/usnic: Push all forwarding state to usnic_fwd.[hc] + * IB/usnic: Port over main.c and verbs.c to the usnic_fwd.h + * IB/usnic: Port over usnic_ib_qp_grp.[hc] to new usnic_fwd.h + * IB/usnic: Port over sysfs to new usnic_fwd.h + * IB/usnic: Update ABI and Version file for UDP support + * IB/usnic: Add UDP support to usnic_fwd.[hc] + * IB:usnic: Add UDP support to usnic_transport.[hc] + * IB/usnic: Add UDP support in u*verbs.c, u*main.c and u*util.h + * IB/usnic: Add UDP support in usnic_ib_qp_grp.[hc] + * IB/core: Add RDMA_TRANSPORT_USNIC_UDP + * IB/usnic: Remove superflous parentheses + * IB/usnic: Use for_each_sg instead of a for-loop + * IB/usnic: Expose flows via debugfs + * IB/usnic: Fix typo "Ignorning" -> "Ignoring" + * IB/usnic: Append documentation to usnic_transport.h and cleanup + * IB/mlx5: Remove unused code in mr.c + * mlx5_core: Remove dead code + * IB/mlx5: Fix micro UAR allocator + * IB/core: Add flow steering support for IPoIB UD traffic + * IB/core: Add support for IB L2 device-managed steering + * mlx4_core: Add support for steerable IB UD QPs + * IB/mlx4: Enable device-managed steering support for IB ports too + * IB/mlx4: Add mechanism to support flow steering over IB links + * IB/mlx4: Add support for steerable IB UD QPs + * IB/core: Ethernet L2 attributes in verbs/cm structures + * net/mlx4_core: clean up cq_res_start_move_to() + * net/mlx4_core: clean up srq_res_start_move_to() + * IB/usnic: Fix endianness-related warnings + * IB/usnic: Add dependency on CONFIG_INET + * IB/core: Add support for RDMA_NODE_USNIC_UDP + * IB/usnic: Advertise usNIC devices as RDMA_NODE_USNIC_UDP + * IB/usnic: Set userspace/kernel ABI ver to 4 + * IB/usnic: Remove unused variable in usnic_debugfs_exit() + * IB/mlx4: Fix error return code + * IB/cma: IBoE (RoCE) IP-based GID addressing + * IB/mlx4: Use IBoE (RoCE) IP based GIDs in the port GID table + * IB/mlx4: Handle Ethernet L2 parameters for IP based GID addressing + * IB/isert: seperate connection protection domains and dma MRs + * IB/isert: Avoid frwr notation, user fastreg + * IB/isert: Move fastreg descriptor creation to a function + * IB/isert: pass scatterlist instead of cmd to fast_reg_mr routine + * RDMA/ocrdma: Handle Ethernet L2 parameters for IP based GID addressing + * RDMA/ocrdma: Populate GID table with IP based gids + * IB/core: Resolve Ethernet L2 addresses when modifying QP + * IB/core: Make ib_addr a core IB module + * IB/cm: Fix missing unlock on error in cm_init_qp_rtr_attr() + * IB/mlx4: Add dependency INET + * RDMA/ocrdma: Move ocrdma_inetaddr_event outside of "#if CONFIG_IPV6" + * RDMA/ocrdma: Add dependency on INET + * IB/mlx4: Use IS_ENABLED(CONFIG_IPV6) + * IB/usnic: Use GFP_ATOMIC under spinlock + * net/mlx4_core: Remove unnecessary validation for port number + * RDMA/cma: Handle global/non-linklocal IPv6 addresses in cma_check_linklocal() + * IB/core: Fix unused variable warning + * IPoIB: Report operstate consistently when brought up without a link + * RDMA/amso1100: Add check if cache memory was allocated before freeing it + * IB/usnic: Remove unused includes of + * RDMA/cxgb4: Fix gcc warning on 32-bit arch + * mlx5_core: Fix out arg size in access_register command + * IB/mlx5: Clear out struct before create QP command + * mlx5_core: Use mlx5 core style warning + * IB/mlx5: Make sure doorbell record is visible before doorbell + * IB/mlx5: Implement modify CQ + * IB/mlx5: Add support for resize CQ + * mlx5_core: Improve debugfs readability + * mlx5_core: Fix PowerPC support + * IB/mlx5: Allow creation of QPs with zero-length work queues + * IB/mlx5: Abort driver cleanup if teardown hca fails + * IB/mlx5: Remove old field for create mkey mailbox + * IB/mlx5: Verify reserved fields are cleared + * iscsi-target: Convert gfp_t parameter to task state bitmask + * IB/mlx5: Fix RC transport send queue overhead computation + * IB/mlx5: Fix binary compatibility with libmlx5 + * IB/mlx5: Don't set "block multicast loopback" capability + * RDMA/nes: Fix error return code + * RDMA/amso1100: Fix error return code + * iser-target: Fix leak on failure in isert_conn_create_fastreg_pool + * IB/srpt: replace strict_strtoul() with kstrtoul() + * IB/mlx4: Don't allocate range of steerable UD QPs for Ethernet-only device + * IB/mlx4: Make sure GID index 0 is always occupied + * IB/mlx4: Move rtnl locking to the right place + * IB/mlx4: Do IBoE locking earlier when initializing the GID table + * IB/mlx4: Do IBoE GID table resets per-port + * IB/mlx4: Build the port IBoE GID table properly under bonding + * IB: Report using RoCE IP based gids in port caps + * RDMA/cxgb4: Add missing neigh_release in LE-Workaround path + * mlx5: Add include of because of kzalloc()/kfree() use + * IB/mlx5: Remove dependency on X86 + * IB/usnic: Fix smatch endianness error + * IB/iser: Avoid dereferencing iscsi_iser conn object when not bound to iser connection + * IB/iser: Fix use after free in iser_snd_completion() + * RDMA/ocrdma: Fix traffic class shift + * RDMA/ocrdma: Fix load time panic during GID table init + * netdevice: add queue selection fallback handler for ndo_select_queue + * net,IB/mlx: Bump all Mellanox driver versions + * net/mlx4: Support shutdown() interface + * net/mlx4_core: Fix memory access error in mlx4_QUERY_DEV_CAP_wrapper() + * net/mlx4_core: mlx4_init_slave() shouldn't access comm channel before PF is ready + * net/mlx4_core: Fix wrong dump of the vxlan offloads device capability + * net/mlx4_en: Handle vxlan steering rules for mac address changes + * net/mlx4_core: Load the IB driver when the device supports IBoE + * net/mlx4_en: Deregister multicast vxlan steering rules when going down + * net-gro: Prepare GRO stack for the upcoming tunneling support + * net-gre-gro: Add GRE support to the GRO stack + * net: gro: change GRO overflow strategy + * net: Add GRO support for UDP encapsulating protocols + * net: Export gro_find_by_type helpers + * net: Add GRO support for vxlan traffic + * net/udp_offload: Handle static checker complaints + * net/ipv4: Use non-atomic allocation of udp offloads structure instance + * net/vxlan: Go over all candidate streams for GRO matching + * gre_offload: statically build GRE offloading support + * net/mlx4_core: pass pci_device_id.driver_data to __mlx4_init_one during reset + * net/mlx4: Set number of RX rings in a utility function + * net/mlx4: Fix limiting number of IRQ's instead of RSS queues + * net/mlx4_en: Fix bad use of dev_id + * net/mlx4_en: Fix UP limit in ieee_ets->prio_tc + * net/mlx4_en: Verify mlx4_en module parameters + * net/mlx4_en: Pad ethernet packets smaller than 17 bytes + * net/mlx4_en: Move queue stopped/waked counters to be per ring + * net/mlx4: Replace mlx4_en_mac_to_u64() with mlx4_mac_to_u64() + * net/mlx4_en: Fix selftest failing on non 10G link speed + * net/mlx4_core: Fix sparse warning + * net/mlx4_en: Use union for BlueFlame WQE + * net/mlx4_en: Change Connect-X description in kconfig + * net/mlx4_en: mlx4_en_verify_params() can be static + * IB/mlx5_core: remove unreachable function call in module init + * mlx4: Adjust QP1 multiplexing for RoCE/SRIOV + * mlx4_core: For RoCE, allow slaves to set the GID entry at that slave's index + * mlx4: In RoCE allow guests to have multiple GIDS + * mlx4: Add ref counting to port MAC table for RoCE + * mlx4: Implement IP based gids support for RoCE/SRIOV + * mlx4_ib: Fix SIDR support of for UD QPs under SRIOV/RoCE + * mlx4: Activate RoCE/SRIOV + * mlx4: Call dev_kfree_skby_any instead of dev_kfree_skb. + * cxgb4/iw_cxgb4: Treat CPL_ERR_KEEPALV_NEG_ADVICE as negative advice + * cxgb4/iw_cxgb4: Doorbell Drop Avoidance Bug Fixes + * mlx4: Don't receive packets when the napi budget == 0 + * IB/mlx4_ib: Adapt code to use caps.num_ports instead of a constant + * net/mlx4: Add data structures to support N-Ports per VF + * net/mlx4: Add utils for N-Port VFs + * net/mlx4: Adapt code for N-Port VF + * net/mlx4: Adapt num_vfs/probed_vf params for single port VF + * mlx4: Use actual number of PCI functions (PF + VFs) for alias GUID logic + * RDMA/cxgb4: set error code on kmalloc() failure + * net/mlx4: USe one wrapper that returns -EPERM + * mlx4: Add support for CONFIG_DEV command + * net/mlx4: Implement vxlan ndo calls + * net/mlx4: Set proper build dependancy with vxlan + + [ Wen-chien Jesse Sung ] + + * SAUCE: Bluetooth: Give restart command more time to complete its job + - LP: #1301908 + + -- Tim Gardner Thu, 03 Apr 2014 06:06:15 -0600 + +linux (3.13.0-22.44) trusty; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1301562 + + [ dann frazier ] + + * [Config] enable linux-tools on arm64 + https://lists.ubuntu.com/archives/kernel-team/2014-April/041332.html + + [ Greg Kurz ] + + * SAUCE: powerpc/le: Big endian arguments for ppc_rtas() + - LP: #1289518 + + [ Mahesh Salgaonkar ] + + * SAUCE: powerpc/book3s: Fix CFAR clobbering issue in machine check + handler. + - LP: #1301424 + * SAUCE: powerpc/book3s: Recover from MC in sapphire on SCOM read via + MMIO. + - LP: #1301424 + * SAUCE: powerpc/book3s: Fix mc_recoverable_range buffer overrun issue. + - LP: #1301424 + + [ Paolo Pisati ] + + * [Config] armhf: USB_STORAGE=y + https://lists.ubuntu.com/archives/kernel-team/2014-April/041349.html + + [ Stefan Bader ] + + * SAUCE: kvm: Force preempt folding in kvm on i386 + - LP: #1268906 + + [ Tim Gardner ] + + * SAUCE: Drop lttng in favor of lttng-modules + The kernel version was down rev on an rc release. + + [ Tomas Winkler ] + + * SAUCE: (no-up) mei: me: do not load the driver if the FW doesn't + support MEI interface + - LP: #1301118 + + [ Upstream Kernel Changes ] + + * drm/i915: Deprecated UMS support + - LP: #1284816 + * powerpc/book3s: Split the common exception prolog logic into two + section. + - LP: #1301424 + * powerpc/book3s: Introduce exclusive emergency stack for machine check + exception. + - LP: #1301424 + * powerpc/book3s: handle machine check in Linux host. + - LP: #1301424 + * powerpc/book3s: Return from interrupt if coming from evil context. + - LP: #1301424 + * powerpc/book3s: Introduce a early machine check hook in cpu_spec. + - LP: #1301424 + * powerpc/book3s: Add flush_tlb operation in cpu_spec. + - LP: #1301424 + * powerpc/book3s: Flush SLB/TLBs if we get SLB/TLB machine check errors + on power7. + - LP: #1301424 + * powerpc/book3s: Flush SLB/TLBs if we get SLB/TLB machine check errors + on power8. + - LP: #1301424 + * powerpc/book3s: Decode and save machine check event. + - LP: #1301424 + * powerpc/book3s: Queue up and process delayed MCE events. + - LP: #1301424 + * powerpc/powernv: Remove machine check handling in OPAL. + - LP: #1301424 + * powerpc/powernv: Machine check exception handling. + - LP: #1301424 + * powerpc: Fix "attempt to move .org backwards" error + - LP: #1301424 + * powerpc: Fix endian issues in power7/8 machine check handler + - LP: #1301424 + * Move precessing of MCE queued event out from syscall exit path. + - LP: #1301424 + + -- Andy Whitcroft Wed, 02 Apr 2014 15:58:48 +0100 + +linux (3.13.0-21.43) trusty; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: kvm: BIOS disabled kvm support should be a warning + - LP: #1300247 + * SAUCE: nouveau: missing outputs should be warnings + - LP: #1300244 + + [ John Johansen ] + + * Revert "SAUCE: Add config option to disable new apparmor 3 semantics" + * Revert "SAUCE: apparmor: fix uninitialized lsm_audit membe" + * Revert "SAUCE: (no-up) apparmor: Fix tasks not subject to, reloaded + policy" + * Revert "SAUCE: apparmor: allocate path lookup buffers during init" + * Revert "SAUCE: apparmor: fix unix domain sockets to be mediated on + connection" + * Revert "SAUCE: (no-up) apparmor: Sync to apparmor 3 - alpha 4 snapshot" + * SAUCE: (no-up) apparmor: Sync to apparmor3 - alpha6 snapshot + - LP: #1298611 + + [ Tetsuo Handa ] + + * SAUCE: kthread: Do not leave kthread_create() immediately upon SIGKILL. + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1300412 + * [Config] updateconfigs after AA patch set + * [Config] CONFIG_ZSWAP=n, CONFIG_ZBUD=n for all arches + * [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_VME_BUS=m for ppc64el + * [Config] CONFIG_VIRT_DRIVERS=y for ppc64el + * [Config] CONFIG_VIDEO_OUTPUT_CONTROL=m for ppc64el + * [Config] CONFIG_VERSION_SIGNATURE="" for powerpc64-emb + * [Config] CONFIG_UWB=m for ppc64el + + [ Upstream Kernel Changes ] + + * vhost: validate vhost_get_vq_desc return value + - CVE-2014-0055 + * net: use kfree_skb_list() helper + * skbuff: skb_segment: s/frag/nskb_frag/ + * skbuff: skb_segment: s/skb_frag/frag/ + * skbuff: skb_segment: s/skb/head_skb/ + * skbuff: skb_segment: s/fskb/list_skb/ + * skbuff: skb_segment: orphan frags before copying + - CVE-2014-0131 + + [ Upstream Kernel Changes ] + + * rebase to v3.13.8 + + -- Tim Gardner Mon, 31 Mar 2014 12:38:11 -0600 + +linux (3.13.0-20.42) trusty; urgency=low + + [ Adam Conrad ] + + * [Packaging] Set bootloader and loader on ppc64el to grub + + [ Andy Whitcroft ] + + * rebase to v3.13.7 + * [Config] updateconfigs following rebase to v3.13.7 + * 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 -- ensure we force older hv-kvp-daemon-init off + * [Config] fix up Breaks/Replaces on linux-cloud-tools-common to fix upgrades + + [ Emmanuel Grumbach ] + + * SAUCE: (no-up) iwlwifi: mvm: disable uAPSD due to bugs in the firmware + + [ James Bottomley ] + + * SAUCE: (no-up) fix our current target reap infrastructure + - LP: #1283604 + * SAUCE: (no-up) dual scan thread bug fix + - LP: #1283604 + + [ K. Y. Srinivasan ] + + * SAUCE: (no-up) Tools: hv: vssdaemon: Ignore VFAT mounts during the + Freeze operation + - LP: #1298192 + + [ Paolo Pisati ] + + * [Config] disable HW_RANDOM_EXYNOS, USB_DWC3_EXYNOS, + PHY_EXYNOS_MIPI_VIDEO + - LP: #1294353 + * [Config] armhf: generic: AHCI_IMX=y, SERIAL_FSL_LPUART=m + - LP: #1294951 + * [Config] armhf: generic: MFD_TI_AM335X_TSCADC and USB_DWC3_OMAP = m + - LP: #1294962 + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1298585 + * [Config] ignore.modules + * SAUCE: i2c-cpm: Add missing includes for powerpc + * [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_BLK_DEV_INTEGRITY=y for ppc64el + * [Config] CONFIG_BSD_PROCESS_ACCT=y for ppc64el + * [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_EXT4_USE_FOR_EXT23=y for powerpc, ppc64el + * [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_MLX4_DEBUG=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_NETPOLL_TRAP=n 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_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 + + [ Timo Aaltonen ] + + * SAUCE: i915_bdw: Provide an ubuntu/i915 driver for Broadwell graphics + - LP: #1294144 + * SAUCE: i915_bdw: Add DP_AUX definitions + - LP: #1294144 + * SAUCE: i915_bdw: Update intel_ips.h file location + - LP: #1294144 + * SAUCE: i915_bdw: Revert "ACPI / i915: replace open-coded _DSM code with + helper functions" + - LP: #1294144 + * SAUCE: i915_bdw: Add an include back to intel_opregion.c + - LP: #1294144 + * SAUCE: i915_bdw: Only support Broadwell with ubuntu/i915 driver + - LP: #1294144 + * SAUCE: i915_bdw: Add i915_bdw_gpu_*() calls for ubuntu/i915 + - LP: #1294144 + * i915_bdw: [Config] Enable CONFIG_DRM_I915_BDW=m, and disable UMS + - LP: #1294144 + * SAUCE: i915_bdw: Rename ubuntu/i915 driver to i915_bdw + - LP: #1294144 + + [ Upstream Kernel Changes ] + + * netfilter: nf_conntrack_dccp: fix skb_header_pointer API usages + - CVE-2014-2523 + * Input: ALPS - add support for "Dolphin" devices + - LP: #1190867 + * x86/mm/pageattr: Lookup address in an arbitrary PGD + - LP: #1297658 + * x86/mm/pageattr: Add a PGD pagetable populating function + - LP: #1297658 + * x86/mm/pageattr: Add a PUD pagetable populating function + - LP: #1297658 + * x86/mm/pageattr: Add a PMD pagetable populating function + - LP: #1297658 + * x86/mm/pageattr: Add a PTE pagetable populating function + - LP: #1297658 + * x86/mm/pageattr: Add a PUD error unwinding path + - LP: #1297658 + * x86/mm/pageattr: Add last levels of error path + - LP: #1297658 + * x86/mm/cpa: Map in an arbitrary pgd + - LP: #1297658 + * x86/efi: Runtime services virtual mapping + - LP: #1297658 + * x86/efi: Check krealloc return value + - LP: #1297658 + * Include apm-mustang.dtb in kernel-image udeb + * drm/i915: add i915_reset_count + - LP: #1294144 + * drm/i915: add i915_get_reset_stats_ioctl + - LP: #1294144 + * drm: add DRM_INFO_ONCE() to print a one-time DRM_INFO() message + - LP: #1294144 + * drm: provide a helper for the encoder possible_crtcs mask + - LP: #1294144 + * drm: Move drm_encoder_crtc_ok() to core + - LP: #1294144 + * drm: Pass the display mode to drm_calc_timestamping_constants() + - LP: #1294144 + * drm: Pass the display mode to drm_calc_vbltimestamp_from_scanoutpos() + - LP: #1294144 + * drm: Pass 'flags' from the caller to .get_scanout_position() + - LP: #1294144 + + [ Upstream Kernel Changes ] + + * rebase to v3.13.7 + - LP: #1268468 + + -- Andy Whitcroft Mon, 24 Mar 2014 10:41:31 +0000 + +linux (3.13.0-19.40) trusty; urgency=low + + [ Tim Gardner ] + + * [Config] Add new mlx modules to d-i + * [Config] Fix d-i spelling error: ahxi_xgene --> ahci_xgene + * [Config] Added Muti-Arch support for linux-headers-PKGVER-ABINUM, + linux-tools-common, and linux-cloud-tools-common + - LP: #1295112 + * Release Tracking Bug + - LP: #1296484 + + [ Upstream Kernel Changes ] + + * Drivers: hv: vmbus: Specify the target CPU that should receive + notification + - LP: #1295813 + + -- Tim Gardner Sun, 23 Mar 2014 19:54:50 -0600 + +linux (3.13.0-19.39) trusty; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1295462 + + [ Andy Whitcroft ] + + * ubuntu: aufs3 -- update update scripting + * ubuntu: AUFS -- update to 75dbb997b5812e16771bec20e92449ba0b1705d9 + + [ Anup Patel ] + + * SAUCE: (no-up) KVM: Documentation: Fix typo for KVM_ARM_VCPU_INIT ioctl + * SAUCE: (no-up) arm64: KVM: Force undefined exception for Guest SMC + intructions + + [ dann frazier ] + + * SAUCE: (no-up) Fix pcie-xgene build failure + + [ Emmanuel Grumbach ] + + * SAUCE: iwlwifi: mvm: send udev event upon firmware error to dump logs + + [ Feng Kan ] + + * SAUCE: (no-up) power: reset: Add generic SYSCON register mapped reset + - LP: #1284433 + * SAUCE: (no-up) arm64: dts: Add X-Gene reboot driver dts node + - LP: #1284433 + + [ Hans de Goede ] + + * SAUCE: (no-up) libahci: Allow drivers to override start_engine + - LP: #1282920 + * SAUCE: (no-up) ahci-platform: Add support for devices with more then 1 + clock + - LP: #1282920 + * SAUCE: (no-up) ahci-platform: Add support for an optional regulator for + sata-target power + - LP: #1282920 + * SAUCE: (no-up) ahci-platform: Add enable_ / disable_resources helper + functions + - LP: #1282920 + * SAUCE: (no-up) ahci-platform: "Library-ise" ahci_probe functionality + - LP: #1282920 + * SAUCE: (no-up) ahci-platform: "Library-ise" suspend / resume + functionality + - LP: #1282920 + + [ Iyappan Subramanian ] + + * SAUCE: (no-up) Documentation: APM X-Gene SoC Ethernet DTS binding + documentation + * SAUCE: (no-up) arm64: dts: APM X-Gene SoC Ethernet device tree nodes + * SAUCE: (no-up) drivers: net: APM X-Gene SoC Ethernet base driver + * SAUCE: (no-up) drivers: net: APM X-Gene SoC Ethernet driver error + handling + * SAUCE: (no-up) drivers: net: APM X-Gene SoC Ethernet driver ethtool + support + + [ Loc Ho ] + + * SAUCE: (no-up) Documentation: Add APM X-Gene SoC 15Gbps Multi-purpose + PHY driver binding documentation + - LP: #1282920 + * SAUCE: (no-up) PHY: add APM X-Gene SoC 15Gbps Multi-purpose PHY driver + - LP: #1282920 + * SAUCE: (no-up) arm64: Add APM X-Gene SoC 15Gbps Multi-purpose PHY DTS + entries + - LP: #1282920 + * SAUCE: (no-up) Documentation: Add documentation for the APM X-Gene SoC + SATA host controller DTS binding + * SAUCE: (no-up) ata: Add APM X-Gene SoC AHCI SATA host controller driver + * SAUCE: (no-up) ata: Fix compiler warning with APM X-Gene host + controller driver + * SAUCE: (no-up) arm64: Add APM X-Gene SoC AHCI SATA host controller DTS + entries + * SAUCE: (no-up) clk: arm64: Fix the clock-names property for pcppll, + socpll, and socplldiv2 + + [ Marc Zyngier ] + + * SAUCE: (no-up) arm64: KVM: force cache clean on page fault when caches + are off + * SAUCE: (no-up) arm64: KVM: allows discrimination of AArch32 sysreg + access + * SAUCE: (no-up) arm64: KVM: trap VM system registers until MMU and + caches are ON + * SAUCE: (no-up) ARM: KVM: introduce kvm_p*d_addr_end + * SAUCE: (no-up) arm64: KVM: flush VM pages before letting the guest + enable caches + * SAUCE: (no-up) ARM: KVM: force cache clean on page fault when caches + are off + + [ Ming Lei ] + + * SAUCE: (no-up) arm64: apm-storm: support ttyS1 + * SAUCE: (no-up) apm: pcie: fix hang when no card connected + + [ Paolo Pisati ] + + * [Config] armhf: generic: disable CPU_IDLE + * [Config] armhf: CPU_FREQ=y + * [Config] armhf: TI_THERMAL=y + + [ Rameshwar Prasad Sahu ] + + * SAUCE: (no-up) rtc: Add X-Gene SoC Real Time Clock Driver + + [ Ravi Patel ] + + * SAUCE: (no-up) Documentation: misc-devices: APM X-Gene SoC QMTM + * SAUCE: (no-up) Documentation: devicetree: bindings for APM X-Gene SoC + QMTM + * SAUCE: (no-up) misc: xgene: base driver for APM X-Gene SoC QMTM + * SAUCE: (no-up) arm64: boot: dts: entries for APM X-Gene SoC QMTM + * SAUCE: (no-up) misc: xgene: error handling for APM X-Gene SoC QMTM + + [ Roger Quadros ] + + * SAUCE: (no-up) ata: ahci_platform: Manage SATA PHY + - LP: #1282920 + * SAUCE: (no-up) ata: ahci_platform: runtime resume the device before use + - LP: #1282920 + + [ Seth Forshee ] + + * SAUCE: iwlwifi: mvm: Free sram dump immediately after using it + * SAUCE: iwlwifi: mvm: Only notify userspace of fw error dump when one is + created + * SAUCE: iwlwifi: mvm: Don't create fw error dump if there's nothing to + dump + + [ Tanmay Inamdar ] + + * SAUCE: (no-up) arm64: PCI(e) arch support + * SAUCE: (no-up) pci: APM X-Gene PCIe controller driver + * SAUCE: (no-up) arm64: dts: APM X-Gene PCIe device tree nodes + * SAUCE: (no-up) dt-bindings: pci: xgene pcie device tree bindings + * SAUCE: (no-up) MAINTAINERS: entry for APM X-Gene PCIe host driver + + [ Tim Gardner ] + + * [Config] CONFIG_POWER_RESET_SYSCON=y for arm64 + * SAUCE: (no-up) Restrict CONFIG_POWER_RESET_SYSCON to arm64 only + * SAUCE: iwlwifi: Fix FTBS for armhf + * [Config] CONFIG_PHY_XGENE=m for arm64 + * [Config] CONFIG_AHCI_XGENE=m for arm64 + * [Config] CONFIG_NET_XGENE=m for arm64 + * [Config] CONFIG_RTC_DRV_XGENE=m for arm64 + * SAUCE: (no-up) Add drivers/phy/phy-core.ko to generic inclusion list + * [Config] Enable PCI for arm64 + * SAUCE: arm64: export __cpu_clear_user_page for modules + * SAUCE: ARCH_HAS_DMA_GET_REQUIRED_MASK=n for arm64 + * [Config] CONFIG_PCI_XGENE=y + * [Config] CONFIG_PHY_XGENE=y for arm64 + * [Config] CONFIG_RTC_DRV_XGENE=y for arm64 + * d-i: Add ahxi_xgene and xgene-enet + + [ Upstream Kernel Changes ] + + * Staging: rtl8821ae: rc.c: fix up function prototypes + * Staging: rtl8821ae: removed unused functions and variables + * Staging: rtl8821ae: add TODO file + * Staging: rtl8812ae: disable due to build errors + * staging: r8821ae: Fix build problems + * staging: r8821ae: Enable build by reverting BROKEN marking + * staging: rtl8821ae: Fixed the size of array to macro as discussed by + Linus + * staging/rtl8821ae: fix build, depends on MAC80211 + * powerpc: Reclaim two unused thread_info flag bits + * powerpc: Don't corrupt transactional state when using FP/VMX in kernel + * powerpc: Fix transactional FP/VMX/VSX unavailable handlers + * Drivers: hv: Ballon: Make pressure posting thread sleep interruptibly + - LP: #1294253 + * mac80211: don't validate unchanged AP bandwidth while tracking + - LP: #1294558 + * phy-core: Don't propagate -ENOSUPP from phy_pm_runtime_get_sync to + caller + * CONFIG_XGENE_QMTM=m for arm64 + + -- Tim Gardner Thu, 20 Mar 2014 21:51:11 -0400 + +linux (3.13.0-18.38) trusty; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1293725 + * [Config] Add hv_balloon to d-i virtio-modules + - LP: #1292216 + + [ Andy Whitcroft ] + + * [Config] d-i -- add virtio_scsi to virtio-modules + - LP: #1288607 + + [ Colin Ian King ] + + * SAUCE: intel_pstate: inform user that thermald is worth considering + + [ dann frazier ] + + * [Config] arm64: KVM=y + + [ Gerd Hoffmann ] + + * SAUCE: vmbus: add missing breaks + - LP: #1287398 + * SAUCE: vmbus: use resource for hyperv mmio region + - LP: #1287398 + * SAUCE: hyperv-fb: add support for generation 2 virtual machines. + - LP: #1287398 + * SAUCE: hyperv-fb: kick off efifb early + - LP: #1287398 + + [ Haiyang Zhang ] + + * SAUCE: hyperv: Change the receive buffer size for legacy hosts + - LP: #1290151 + + [ K. Y. Srinivasan ] + + * SAUCE: Drivers: hv: vmbus: Extract the mmio information from DSDT + - LP: #1287398 + + [ Paolo Pisati ] + + * SAUCE: leds-gpio: of: introduce MODULE_DEVICE_TABLE for module + autoloading + * [Config] amhf: LEDS_TRIGGER_HEARTBEAT=y + + [ Upstream Kernel Changes ] + + * Revert "xhci 1.0: Limit arbitrarily-aligned scatter gather." + - LP: #1293361 + * Revert "USBNET: ax88179_178a: enable tso if usb host supports sg dma" + - LP: #1293361 + * powerpc/tm: Fix crash when forking inside a transaction + * AX88179_178A: Add VID:DID for Lenovo OneLinkDock Gigabit LAN + - LP: #1291890 + * drm/vmwgfx: Fix a surface reference corner-case in legacy emulation + mode + * Input: wacom - scale up touch width and height values for Intuos Pro + * Input: wacom - make sure touch_max is set for touch devices + * Input: wacom - add support for three new Intuos devices + * Input: wacom - add reporting of SW_MUTE_DEVICE events + * Input: wacom - fix wacom->shared guards for dual input devices + * Input: wacom - add support for DTU-1031 + * net: fix for a race condition in the inet frag code + - CVE-2014-0100 + * net: sctp: fix sctp_sf_do_5_1D_ce to verify if we/peer is AUTH capable + - CVE-2014-0101 + * KEYS: Make the keyring cycle detector ignore other keyrings of the same + name + - CVE-2014-0102 + * ipv6: don't set DST_NOCOUNT for remotely added routes + - CVE-2014-2309 + + -- Andy Whitcroft Thu, 13 Mar 2014 10:06:05 +0000 + +linux (3.13.0-17.37) trusty; urgency=low + + [ Andy Whitcroft ] + + * Release Tracking Bug + - LP: #1290484 + * Revert "SAUCE: hv: Add vss daemon to Makefile" + * Revert "SAUCE: (no-up) tools/hv: add basic Makefile" + * Revert "SAUCE: (no-up) hv -- bodge hv_kvp_daemon so it can use the + local linux/hyperv.h" + * Revert "SAUCE: (no-up) hv -- bodge hv_vss_daemon so it can use the + local linux/hyperv.h" + * Revert "SAUCE: SELinux: security_load_policy: Silence frame-larger-than + warning" + * Revert "SAUCE: ARM: OMAP4460: cpuidle: Extend + PM_OMAP4_ROM_SMP_BOOT_ERRATUM_GICD on cpuidle" + * ubuntu: overlayfs -- use kernel service credentials for copy up and + xattr manipulations + * [Packaging] tools -- hv tools build correctly against the built headers + * [Packaging] cloud-tools -- add the hv_fcopy_daemon to the package + * rebase to v3.13.6 + + [ Anton Blanchard ] + + * SAUCE: ibmveth: Fix endian issues with MAC addresses + + [ Bjarke Istrup Pedersen ] + + * SAUCE: hv: Add hyperv.h to uapi headers + - LP: #1282700 + + [ Fengguang Wu ] + + * SAUCE: Drivers: hv: fcopy_open() can be static + - LP: #1282700 + + [ K. Y. Srinivasan ] + + * SAUCE: Drivers: hv: Implement the file copy service + - LP: #1282700 + + [ Tim Gardner ] + + * SAUCE: (no-up) mei: Fix stable update misapplication + * SAUCE: (no-up) mei_me: Add module parameter to disable MSI + + [ Upstream Kernel Changes ] + + * arm64: KVM: Add Kconfig option for max VCPUs per-Guest + * arm64: KVM: Support X-Gene guest VCPU on APM X-Gene host + * ACPI / EC: Clear stale EC events on Samsung systems + * drm/ttm: Fix TTM object open regression + * SELinux: security_load_policy: Silence frame-larger-than warning + * ARM: OMAP4460: cpuidle: Extend PM_OMAP4_ROM_SMP_BOOT_ERRATUM_GICD on + cpuidle + + [ Upstream Kernel Changes ] + + * rebase to v3.13.6 + - LP: #1282369 + - LP: #1260303 + + -- Tim Gardner Wed, 05 Mar 2014 06:52:34 -0700 + +linux (3.13.0-16.36) trusty; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1287903 + + [ Andy Whitcroft ] + + * Revert "[Config] lowlatency -- turn CONFIG_IRQ_FORCED_THREADING_DEFAULT + off temporarily" + + [ Chris Bainbridge ] + + * SAUCE: x86: set Pentium M as PAE capable + - LP: #930447 + + [ Dave Jones ] + + * SAUCE: taint: repurpose TAINT_UNSAFE_SMP to TAINT_CPU_OUT_OF_SPEC + - LP: #930447 + + [ Paolo Pisati ] + + * [Config] SND_DAVINCI_SOC && SND_AM33XX_SOC_EVM =m + * [Config] armhf: DRM_TILCDC=m + + [ Philippe Bergheaud ] + + * SAUCE: powerpc: fix xmon disassembler for little-endian + - LP: #1286255 + + [ Tim Gardner ] + + * [Config] CONFIG_MICROCODE_EARLY=y + * [Config] CONFIG_R8821AE=m + * [Config] Add some virtio drivers to -virtual + - LP: #1287401 + * [Config] inclusion-list: vesafb and virtio_balloon are built-in + * SAUCE: vmwgfx: Expose U32_MAX + + [ Upstream Kernel Changes ] + + * Revert "drm/vmwgfx: Fix regression caused by "drm/ttm: make ttm + reservation calls behave like reservation calls"" + * Revert "drm/vmwgfx: Fix the driver for large dma addresses" + * usb: ehci: fix deadlock when threadirqs option is used + - LP: #1274987, #1279081 + * Staging: rtl8812ae: Add Realtek 8821 PCI WIFI driver + - LP: #1287298 + * intel_pstate: Remove periodic P state boost + * intel_pstate: Add trace point to report internal state. + * intel_pstate: Take core C0 time into account for core busy calculation + * intel_pstate: Use LFM bus ratio as min ratio/P state + * intel_pstate: Add support for Baytrail turbo P states + * intel_pstate: Change busy calculation to use fixed point math. + * PM / hibernate: Fix restore hang in freeze_processes() + * ipmi: remove deprecated IRQF_DISABLED + * ipmi: use USEC_PER_SEC instead of 1000000 for more meaningful + * ipmi: fix timeout calculation when bmc is disconnected + * ipmi: Cleanup error return + * ipmi: Add missing rv in ipmi_parisc_probe() + * drm/ttm: ttm object security fixes for render nodes + * drivers: gpu: Mark functions as static in vmwgfx_kms.c + * drivers: gpu: Mark functions as static in vmwgfx_buffer.c + * drivers: gpu: Mark functions as static in vmwgfx_fence.c + * drm/vmwgfx: Fix the driver for large dma addresses + * drm/vmwgfx: Update the svga3d register header file for new device + version + * drm/vmwgfx: Update the driver user-space interface for guest-backed + objects + * drm/vmwgfx: Replace vram_size with prim_bb_mem for calculation of max + resolution + * drm/vmwgfx: Update the svga register definition + * drm/vmwgfx: Adapt capability reporting to new hardware version + * drm/vmwgfx: Add MOB management + * drm/vmwgfx: Hook up MOBs to TTM as a separate memory type + * drm/vmwgfx: Read bounding box memory from the appropriate register + * drm/vmwgfx: Add the possibility to validate a buffer as a MOB + * drm/vmwgfx: Hook up guest-backed queries + * drm/vmwgfx: Detach backing store from its resources when it is evicted + * drm/vmwgfx: Hook up guest-backed contexts + * drm/vmwgfx: Hook up guest-backed surfaces + * drm/vmwgfx: Add guest-backed shaders + * drm/vmwgfx: Validate guest-backed shader const commands + * drm/vmwgfx: Add new unused (by user-space) commands to the verifier + * drm/vmwgfx: Enable 3D for new hardware version + * drm/vmwgfx: Fix up the vmwgfx_drv.h header for new files + * drm/vmwgfx: Extend the command verifier to handle guest-backed on / off + * drm/vmwgfx: Make sure that the multisampling is off + * drm/vmwgfx: Implement a buffer object synccpu ioctl. + * drm/vmwgfx: Add a parameter to get max MOB memory size + * drm/vmwgfx: Block the BIND_SHADERCONSTS command + * drm/vmwgfx: Track context bindings and scrub them upon exiting execbuf + * drm/vmwgfx: Persistent tracking of context bindings + * drm/vmwgfx: Ditch the vmw_dummy_query_bo_prepare function + * drm/vmwgfx: Use the linux DMA api also for MOBs + * drm/vmwgfx: Update otable definitions + * drm/vmwgfx: Fix surface framebuffer check for guest-backed surfaces + * drm/vmwgfx: Implement 64-bit Otable- and MOB binding v2 + * drm/vmwgfx: Silence the device command verifier + * drm/vmwgfx: Invalidate surface on non-readback unbind + * drm/vmwgfx: Fix recently introduced sparse / smatch warnings and errors + * drm/vmwgfx: Don't commit staged bindings if execbuf fails + * drm/vmwgfx: Fix regression caused by "drm/ttm: make ttm reservation + calls behave like reservation calls" + * drm/vmwgfx: Fix SET_SHADER_CONST emulation on guest-backed devices + * drm/vmwgfx: Fix legacy surface reference size copyback + * drm/vmwgfx: Emulate legacy shaders on guest-backed devices v2 + * drm/vmwgfx: Detect old user-space drivers and set up legacy emulation + v2 + * drm/vmwgfx: Reemit context bindings when necessary v2 + * vmwgfx: Fix unitialized stack read in vmw_setup_otable_base + * drm/vmwgfx: Fix a couple of sparse warnings and errors + * drm/vmwgfx: Get maximum mob size from register SVGA_REG_MOB_MAX_SIZE + * drm/vmwgfx: unlock on error path in vmw_execbuf_process() + * drm/vmwgfx: Remove stray const + * drm/vmwgfx: Fix possible integer overflow + * drm/vmwgfx: Fix command defines and checks + * drm/vmwgfx: Remove some unused surface formats + * drm/vmwgfx: Make sure backing mobs are cleared when allocated. Update + driver date. + * drm/vmwgfx: avoid null pointer dereference at failure paths + + -- Tim Gardner Mon, 03 Mar 2014 13:04:10 -0700 + +linux (3.13.0-15.35) trusty; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1287175 + + [ Andy Whitcroft ] + + * [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] ppc64el -- switch to 64K system pages + + [ Benjamin Herrenschmidt ] + + * SAUCE: powerpc/powernv: Add iommu DMA bypass support for IODA2 + + [ Paul Mackerras ] + + * SAUCE: powerpc: Increase stack redzone for 64-bit userspace to 512 + bytes + + [ Upstream Kernel Changes ] + + * perf trace: Fix ioctl 'request' beautifier build problems on !(i386 || + x86_64) arches + * kvm, vmx: Really fix lazy FPU on nested guest + - LP: #1278531 + + -- Tim Gardner Mon, 03 Mar 2014 13:22:56 +0000 + +linux (3.13.0-14.34) trusty; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1285851 + + [ Andy Whitcroft ] + + * [Config] d-i -- add hyperv_keyboard to serial-modules udeb + - LP: #1285434 + + [ Hannes Frederic Sowa ] + + * SAUCE: ipv6: honor IPV6_PKTINFO with v4 mapped addresses on sendmsg + - LP: #1284535 + + [ Jason Wang ] + + * SAUCE: x86, hyperv: bypass the timer_irq_works() check + - LP: #1282693 + + [ Paolo Pisati ] + + * [Config] disable FB_OMAP2, DRM_OMAP=m + + [ Upstream Kernel Changes ] + + * ipv6: make IPV6_RECVPKTINFO work for ipv4 datagrams + - LP: #1284535 + * mei: remove flash_work_queue + * mei: drop redundant list_del_init + * mei: cleanup mei_irq_read_handler + * mei: enable marking internal commands + * mei: me: set dma mask using DMA mapping API + * Documentation/misc-devices/mei/mei-amt-version.c: remove unneeded call + of mei_deinit() + * mei: do not run reset flow from the interrupt thread + * mei: nfc: mei_nfc_free has to be called under lock + * mei: fix syntax in comments and debug output + * mei: revamp mei reset state machine + * mei: limit the number of consecutive resets + * mei: set client's read_cb to NULL when flow control fails + + -- Tim Gardner Wed, 26 Feb 2014 08:43:20 -0500 + +linux (3.13.0-13.33) trusty; urgency=low + + [ Andy Whitcroft ] + + * Release Tracking Bug + - LP: #1284614 + * [Config] powerpc -- CONFIG_SCSI_IBMVSCSI=y + * [Config] CONFIG_RT_GROUP_SCHED=n + - LP: #1284731 + + [ Stefan Bader ] + + * [Config] Revert back to build IPMI as a module on all arches + + [ Tim Gardner ] + + * rebase to v3.13.5 + + [ Upstream Kernel Changes ] + + * cifs: ensure that uncached writes handle unmapped areas correctly + * rebase to v3.13.5 + + -- Andy Whitcroft Tue, 25 Feb 2014 12:15:09 +0000 + +linux (3.13.0-12.32) trusty; urgency=low + + [ Andy Whitcroft ] + + * Release Tracking Bug + - LP: #1283074 + + * Revert "SAUCE: Drivers: hv: vmbus: Specify the target CPU that should + receive notification" + * [Packaging] tools -- clean up generic so it gives more targetted hints + * [Packaging] tools -- fix relative links + * rebase to v3.13.4 + + [ Colin Ian King ] + + * [Config][v2] armhf, arm64, powerpc, ppc64el: IPMI_SI=m + + [ Paolo Pisati ] + + * [Config] armhf: SOC_AM33XX=y + * [Config] armhf: TI_CPSW, TI_CPTS and TI_DAVINCI_[CPDMA|MDIO] = y + * [Config] armhf: RTC_DRV_OMAP=y + * [Config] build beaglebone and bleaglebone black dtbs + + [ Tony Breeds ] + + * SAUCE: powerpc/le: Ensure that the 'stop-self' RTAS token is handled + correctly + - LP: #1282712 + + [ Upstream Kernel Changes ] + + * Drivers: hv: vmbus: Specify the target CPU that should receive + notification + - LP: #1282694 + * Drivers: hv: vmbus: Don't timeout during the initial connection with + host + - LP: #1282694 + * hyperv: Add support for physically discontinuous receive buffer + - LP: #1282695 + * Input: hyperv-keyboard - pass through 0xE1 prefix + - LP: #1282699 + * rebase to v3.13.4 + + -- Andy Whitcroft Fri, 21 Feb 2014 12:51:17 +0000 + +linux (3.13.0-11.31) trusty; urgency=low + + [ Colin Ian King ] + + * [config] Set IPMI suppoort default to "y" + + [ Tim Gardner ] + + * [Config] CONFIG_USER_NS=y for ppc64el + * [Config] CONFIG_RESOURCE_COUNTERS=y for ppc64el + * Release Tracking Bug + - LP: #1282243 + + -- Tim Gardner Wed, 19 Feb 2014 12:04:43 -0500 + +linux (3.13.0-10.30) trusty; urgency=low + + [ Andy Whitcroft ] + + * [Packaging] tools -- fix up do_tools interface which is assumed by + external tooling + + [ Tim Gardner ] + + * [Config] CONFIG_CGROUP_SCHED=y for ppc64el + * [Config] CONFIG_BLK_CGROUP=y for ppc64el + * [Config] CONFIG_USB_XHCI_HCD=y for ppc64el + * [Config] CONFIG_CGROUP_PERF=y for ppc64el + * Release Tracking Bug + - LP: #1281783 + + [ Upstream Kernel Changes ] + + * be2net: Use MCC_CREATE_EXT_V1 cmd for Skyhawk-R + - LP: #1281446 + * be2net: don't set "pport" field when querying "pvid" + - LP: #1281446 + * be2net: Log the profile-id used by FW during driver initialization + - LP: #1281446 + * be2net: do not call be_set/get_fw_log_level() on Skyhawk-R + - LP: #1281446 + * be2net: ignore mac-addr set call for an already programmed mac-addr + - LP: #1281446 + * be2net: fix incorrect setting of cmd_privileges for VFs + - LP: #1281446 + * be2net: Remove "10Gbps" from driver description string + - LP: #1281446 + * be2net: do not use frag index in the RX-compl entry + - LP: #1281446 + * be2net: use GET_MAC_LIST cmd to query mac-address from a pmac-id + - LP: #1281446 + * be2net: cleanup wake-on-lan code + - LP: #1281446 + * be2net: update driver version to 10.0.x + - LP: #1281446 + * be2net: Fix be_vlan_add/rem_vid() routines + - LP: #1281446 + + -- Tim Gardner Tue, 18 Feb 2014 13:13:24 -0700 + +linux (3.13.0-9.29) trusty; urgency=low + + [ Andy Whitcroft ] + + * Release Tracking Bug + - LP: #1280291 + * [Config] lowlatency -- turn CONFIG_IRQ_FORCED_THREADING_DEFAULT off + temporarily + * [Packaging] tools -- split out "cloud only" tools into a cloud tools + package + + [ Paolo Pisati ] + + * [Config] armhf: DISPLAY_CONNECTOR_HDMI && DISPLAY_ENCODER_TPD12S015 =y + + [ Tim Gardner ] + + * rebase to v3.13.3 + + [ Upstream Kernel Changes ] + + * Revert "mmc: sdhci-pci: Fix possibility of chip->fixes being null" + * Revert "mmc: sdhci-pci: Fix BYT sd card getting stuck in runtime + suspend" + * NVMe: Avoid shift operation when writing cq head doorbell + - LP: #1256155 + * NVMe: remove deprecated IRQF_DISABLED + - LP: #1256155 + * NVMe: compat SG_IO ioctl + - LP: #1256155 + * NVMe: Fix lockdep warnings + - LP: #1256155 + * NVMe: Cache dev->pci_dev in a local pointer + - LP: #1256155 + * NVMe: Device resume error handling + - LP: #1256155 + * NVMe: Schedule reset for failed controllers + - LP: #1256155 + * NVMe: Abort timed out commands + - LP: #1256155 + * NVMe: Surprise removal handling + - LP: #1256155 + * NVMe: Async IO queue deletion + - LP: #1256155 + * NVMe: Dynamically allocate partition numbers + - LP: #1256155 + * NVMe: Disable admin queue on init failure + - LP: #1256155 + * NVMe: Add a pci_driver shutdown method + - LP: #1256155 + * NVMe: Include device and queue numbers in interrupt name + - LP: #1256155 + * NVMe: Correct uses of INIT_WORK + - LP: #1256155 + * NVMe: Namespace use after free on surprise removal + - LP: #1256155 + * intel_pstate: Add setting voltage value for baytrail P states. + - LP: #1270736 + * mmc: sdhci-pci: break out definitions to header file + * mmc: sdhci-pci: add support of O2Micro/BayHubTech SD hosts + * mmc: sdhci-pci: Fix BYT sd card getting stuck in runtime suspend + * mmc: sdhci-pci: Fix possibility of chip->fixes being null + + [ Upstream Kernel Changes ] + + * rebase to v3.13.3 + + -- Tim Gardner Thu, 13 Feb 2014 06:08:09 -0700 + +linux (3.13.0-8.28) trusty; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1278963 + + [ Paolo Pisati ] + + * [Config] armhf: RTC_DRV_PL031=y + + [ Serge Hallyn ] + + * SAUCE: Overlayfs: allow unprivileged mounts + + [ Upstream Kernel Changes ] + + * kexec: add sysctl to disable kexec_load + - LP: #1259570 + * SELinux: Fix kernel BUG on empty security contexts. + - CVE-2014-1874 + + -- Tim Gardner Tue, 11 Feb 2014 08:35:39 -0500 + +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-3.13.0.orig/debian.master/changelog.historical +++ linux-3.13.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-3.13.0.orig/debian.master/config/amd64/config.common.amd64 +++ linux-3.13.0/debian.master/config/amd64/config.common.amd64 @@ -0,0 +1,315 @@ +# +# Config options for config.common.amd64 automatically generated by splitconfig.pl +# +CONFIG_64BIT=y +CONFIG_AC97_BUS=m +# CONFIG_AHCI_IMX is not set +CONFIG_AIC79XX_RESET_DELAY_MS=5000 +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_ASYNC_TX_DMA is not set +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_ATA_PIIX=y +# CONFIG_ATOMIC64_SELFTEST is not set +CONFIG_AUDIT_ARCH=y +CONFIG_BCH=m +CONFIG_CC_STACKPROTECTOR=y +CONFIG_COMEDI_ISA_DRIVERS=y +CONFIG_COMPACTION=y +CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y +CONFIG_CPU_IDLE=y +CONFIG_CRASH_DUMP=y +# CONFIG_DEBUG_MEMORY_INIT is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 +CONFIG_EXYNOS_VIDEO=y +CONFIG_EZX_PCAP=y +CONFIG_FB_ATY128=m +CONFIG_FB_BACKLIGHT=y +CONFIG_FB_BOOT_VESA_SUPPORT=y +CONFIG_FB_DDC=m +# CONFIG_FB_MACMODES is not set +CONFIG_FB_RADEON=m +CONFIG_FB_SVGALIB=m +CONFIG_FB_SYS_COPYAREA=m +CONFIG_FB_SYS_FILLRECT=m +CONFIG_FB_SYS_FOPS=m +CONFIG_FB_SYS_IMAGEBLIT=m +CONFIG_FB_UDL=m +CONFIG_FB_VOODOO1=m +# CONFIG_FMAN_P1023 is not set +CONFIG_FMAN_P3040_P4080_P5020=y +# CONFIG_FONTS is not set +CONFIG_FRAME_WARN=1024 +CONFIG_FSL_FMAN=y +CONFIG_FUNCTION_TRACER=y +CONFIG_GENERIC_PHY=m +CONFIG_GPIO_GENERIC=m +CONFIG_GPIO_TWL6040=m +# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set +# CONFIG_HAVE_AOUT 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_CPCI=y +CONFIG_HOTPLUG_PCI_SHPC=m +CONFIG_HUGETLB_PAGE=y +# CONFIG_HW_RANDOM_ATMEL is not set +# CONFIG_HZ_100 is not set +CONFIG_I2C_ALGOBIT=m +# CONFIG_IDE is not set +# CONFIG_IKCONFIG is not set +CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 +CONFIG_IMA=y +CONFIG_INFINIBAND_AMSO1100=m +CONFIG_INPUT_IDEAPAD_SLIDEBAR=m +CONFIG_IOMMU_SUPPORT=y +CONFIG_IPMI_SI_PROBE_DEFAULTS=y +# CONFIG_IRQ_DOMAIN_DEBUG is not set +CONFIG_KSM=y +CONFIG_KVM=m +CONFIG_LEDS_TRIGGER_HEARTBEAT=m +CONFIG_LIBERTAS_MESH=y +CONFIG_LIS3L02DQ=m +CONFIG_LOG_BUF_SHIFT=18 +CONFIG_MACINTOSH_DRIVERS=y +CONFIG_MEMORY_HOTREMOVE=y +# CONFIG_MFD_TI_AM335X_TSCADC is not set +# 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_SM_COMMON=m +CONFIG_MUSB_PIO_ONLY=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_NET_TULIP=y +CONFIG_NODES_SHIFT=6 +CONFIG_NOP_USB_XCEIV=m +CONFIG_NO_HZ_FULL=y +# CONFIG_NO_HZ_IDLE is not set +CONFIG_NR_CPUS=256 +CONFIG_NUMA=y +CONFIG_NVRAM=m +CONFIG_OUTPUT_FORMAT="elf64-x86-64" +CONFIG_PARIDE_EPATC8=y +CONFIG_PATA_SIS=y +CONFIG_PCCARD=m +CONFIG_PCIEPORTBUS=y +CONFIG_PERCPU_TEST=m +CONFIG_PERSISTENT_KEYRINGS=y +CONFIG_PHYSICAL_ALIGN=0x1000000 +CONFIG_PHYSICAL_START=0x1000000 +CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_PMIC_ADP5520=y +CONFIG_PMIC_DA903X=y +CONFIG_PM_DEBUG=y +CONFIG_PM_RUNTIME=y +# CONFIG_PM_WAKELOCKS is not set +CONFIG_PPS=m +CONFIG_PPS_CLIENT_GPIO=m +CONFIG_PPS_CLIENT_LDISC=m +CONFIG_PPS_CLIENT_PARPORT=m +CONFIG_PROBE_EVENTS=y +# CONFIG_PSTORE_CONSOLE is not set +CONFIG_PSTORE_RAM=m +CONFIG_PTP_1588_CLOCK=m +CONFIG_RAPIDIO_CPS_GEN2=m +CONFIG_RAPIDIO_CPS_XX=m +CONFIG_RAPIDIO_TSI568=m +CONFIG_RAPIDIO_TSI57X=m +CONFIG_RAPIDIO_TSI721=m +CONFIG_RBTREE_TEST=m +CONFIG_RCU_CPU_STALL_TIMEOUT=60 +CONFIG_RCU_FANOUT=64 +CONFIG_RCU_FAST_NO_HZ=y +CONFIG_RCU_NOCB_CPU=y +CONFIG_RCU_USER_QS=y +CONFIG_REED_SOLOMON=m +CONFIG_REGULATOR_FIXED_VOLTAGE=m +# CONFIG_REGULATOR_S2MPS11 is not set +CONFIG_REISERFS_FS=m +CONFIG_RFKILL=y +CONFIG_RT2800USB_UNKNOWN=y +# CONFIG_RT2X00_LIB_DEBUGFS is not set +CONFIG_RTC_DRV_CMOS=y +CONFIG_RTC_DRV_DS3232=m +CONFIG_SAMSUNG_USB2PHY=m +CONFIG_SAMSUNG_USB3PHY=m +CONFIG_SATA_AHCI_PLATFORM=m +# CONFIG_SATA_HIGHBANK is not set +CONFIG_SATA_SVW=m +CONFIG_SCHED_AUTOGROUP=y +CONFIG_SCHED_SMT=y +CONFIG_SCSI_SPI_ATTRS=y +CONFIG_SCSI_SRP_ATTRS=m +CONFIG_SENSORS_SCH56XX_COMMON=m +CONFIG_SERIAL_8250_PCI=y +# CONFIG_SERIAL_FSL_LPUART is not set +CONFIG_SERIO_ALTERA_PS2=m +CONFIG_SERIO_ARC_PS2=m +CONFIG_SERIO_I8042=y +CONFIG_SERIO_PARKBD=m +CONFIG_SERIO_PCIPS2=m +CONFIG_SERIO_PS2MULT=m +CONFIG_SERIO_RAW=m +CONFIG_SND=m +CONFIG_SND_COMPRESS_OFFLOAD=m +CONFIG_SND_EMU10K1_SEQ=m +CONFIG_SND_OPL3_LIB_SEQ=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_I2C_AND_SPI=m +CONFIG_SND_TIMER=m +CONFIG_SOUND=m +CONFIG_SPARSEMEM_MANUAL=y +CONFIG_SPI_PXA2XX_PCI=m +CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y +# CONFIG_SQUASHFS_DECOMP_SINGLE is not set +# CONFIG_SQUASHFS_FILE_CACHE is not set +CONFIG_SQUASHFS_FILE_DIRECT=y +CONFIG_SRAM=y +CONFIG_STACK_TRACER=y +CONFIG_STAGING=y +# CONFIG_STANDALONE is not set +CONFIG_SUNRPC_DEBUG=y +CONFIG_SWIOTLB=y +CONFIG_SYSCTL_SYSCALL=y +CONFIG_SYS_HYPERVISOR=y +CONFIG_TEST_KSTRTOX=m +CONFIG_TEST_STRING_HELPERS=m +CONFIG_TIGON3=m +CONFIG_TIMER_STATS=y +CONFIG_TRANSPARENT_HUGEPAGE=y +# CONFIG_TWL4030_CORE is not set +CONFIG_TWL6040_CORE=y +CONFIG_UIO_AEC=m +CONFIG_UIO_CIF=m +CONFIG_UIO_DMEM_GENIRQ=m +CONFIG_UIO_MF624=m +CONFIG_UIO_NETX=m +CONFIG_UIO_PDRV_GENIRQ=m +CONFIG_UIO_SERCOS3=m +CONFIG_UNUSED_SYMBOLS=y +CONFIG_USB_ADUTUX=m +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y +CONFIG_USB_APPLEDISPLAY=m +CONFIG_USB_C67X00_HCD=m +CONFIG_USB_CATC=m +CONFIG_USB_CHIPIDEA=m +CONFIG_USB_CYPRESS_CY7C63=m +CONFIG_USB_CYTHERM=m +CONFIG_USB_DWC3=m +# CONFIG_USB_DWC3_OMAP is not set +CONFIG_USB_DYNAMIC_MINORS=y +CONFIG_USB_EHCI_HCD_PLATFORM=y +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHSET_TEST_FIXTURE=m +CONFIG_USB_EMI26=m +CONFIG_USB_EMI62=m +CONFIG_USB_EZUSB_FX2=m +CONFIG_USB_FOTG210_HCD=m +CONFIG_USB_FTDI_ELAN=m +CONFIG_USB_FUSBH200_HCD=m +CONFIG_USB_GADGET=m +# CONFIG_USB_G_MULTI is not set +CONFIG_USB_HCD_BCMA=m +CONFIG_USB_HCD_SSB=m +CONFIG_USB_HSIC_USB3503=m +CONFIG_USB_IDMOUSE=m +CONFIG_USB_IOWARRIOR=m +CONFIG_USB_IPHETH=m +CONFIG_USB_ISIGHTFW=m +CONFIG_USB_ISP116X_HCD=m +CONFIG_USB_ISP1301=m +CONFIG_USB_ISP1362_HCD=m +CONFIG_USB_ISP1760_HCD=m +CONFIG_USB_KAWETH=m +CONFIG_USB_LCD=m +CONFIG_USB_LD=m +CONFIG_USB_LED=m +CONFIG_USB_LEGOTOWER=m +CONFIG_USB_MDC800=m +CONFIG_USB_MICROTEK=m +CONFIG_USB_MUSB_HDRC=m +CONFIG_USB_MUSB_TUSB6010=m +CONFIG_USB_OHCI_HCD_PLATFORM=y +# CONFIG_USB_OTG is not set +CONFIG_USB_OXU210HP_HCD=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_PRINTER=m +CONFIG_USB_R8A66597_HCD=m +CONFIG_USB_RCAR_PHY=m +CONFIG_USB_RIO500=m +CONFIG_USB_RTL8150=m +CONFIG_USB_RTL8152=m +CONFIG_USB_SERIAL=m +CONFIG_USB_SEVSEG=m +CONFIG_USB_SISUSBVGA=m +CONFIG_USB_SL811_HCD=m +CONFIG_USB_STORAGE=m +CONFIG_USB_STORAGE_ALAUDA=m +CONFIG_USB_STORAGE_CYPRESS_ATACB=m +CONFIG_USB_STORAGE_DATAFAB=m +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_TEST=m +CONFIG_USB_TMC=m +CONFIG_USB_TRANCEVIBRATOR=m +CONFIG_USB_UHCI_HCD=y +CONFIG_USB_USS720=m +CONFIG_USB_WUSB_CBAF=m +CONFIG_USB_YUREX=m +CONFIG_VFIO_IOMMU_TYPE1=m +CONFIG_VGASTATE=m +CONFIG_VGA_CONSOLE=y +CONFIG_VIRTIO=y +CONFIG_VIRTIO_BALLOON=y +CONFIG_VIRTIO_BLK=y +CONFIG_VIRTIO_CONSOLE=y +CONFIG_VIRTIO_MMIO=y +CONFIG_VIRTIO_NET=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRT_CPU_ACCOUNTING_GEN=y +CONFIG_WIL6210=m +# CONFIG_WIMAX_GDM72XX_SDIO is not set +CONFIG_WIMAX_GDM72XX_USB=y +CONFIG_X86_MINIMUM_CPU_FAMILY=64 +CONFIG_X86_SPEEDSTEP_LIB=m +CONFIG_XEN=y +CONFIG_XEN_MAX_DOMAIN_MEMORY=500 +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_ARMTHUMB=y +CONFIG_XZ_DEC_IA64=y +CONFIG_XZ_DEC_SPARC=y +CONFIG_XZ_DEC_TEST=m +CONFIG_XZ_DEC_X86=y +CONFIG_ZONE_DMA32=y +CONFIG_ZONE_DMA_FLAG=1 --- linux-3.13.0.orig/debian.master/config/amd64/config.flavour.generic +++ linux-3.13.0/debian.master/config/amd64/config.flavour.generic @@ -0,0 +1,10 @@ +# +# Config options for config.flavour.generic automatically generated by splitconfig.pl +# +CONFIG_HZ=250 +# CONFIG_HZ_1000 is not set +CONFIG_HZ_250=y +# CONFIG_IRQ_FORCED_THREADING_DEFAULT is not set +# CONFIG_PREEMPT is not set +# CONFIG_PREEMPT_RCU is not set +CONFIG_PREEMPT_VOLUNTARY=y --- linux-3.13.0.orig/debian.master/config/amd64/config.flavour.lowlatency +++ linux-3.13.0/debian.master/config/amd64/config.flavour.lowlatency @@ -0,0 +1,10 @@ +# +# Config options for config.flavour.lowlatency automatically generated by splitconfig.pl +# +CONFIG_HZ=1000 +CONFIG_HZ_1000=y +# CONFIG_HZ_250 is not set +CONFIG_IRQ_FORCED_THREADING_DEFAULT=y +CONFIG_PREEMPT=y +CONFIG_PREEMPT_RCU=y +# CONFIG_PREEMPT_VOLUNTARY is not set --- linux-3.13.0.orig/debian.master/config/annotations +++ linux-3.13.0/debian.master/config/annotations @@ -0,0 +1,2147 @@ +# 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_DEBUG_RODATA y mark +CONFIG_DEBUG_SET_MODULE_RONX y mark +CONFIG_SLUB_DEBUG y +CONFIG_SCHED_DEBUG y + +# Menu: ROOT +CONFIG_SYSTEM_TRUSTED_KEYRING y + +# Menu: ROOT (arm) +CONFIG_ARM_DMA_IOMMU_ALIGNMENT 8 +CONFIG_ARM_PATCH_PHYS_VIRT y + +# Menu: ROOT (powerpc) +CONFIG_RELOCATABLE y +CONFIG_CPU_BIG_ENDIAN n +CONFIG_PPC64 y +CONFIG_CPU_LITTLE_ENDIAN y +CONFIG_NR_IRQS 512 +CONFIG_SCOM_DEBUGFS n + +# Menu: ROOT (x86) + +# Menu: Advanced setup (powerpc) +CONFIG_RELOCATABLE y + +# Menu: Boot options (arm) +CONFIG_KEXEC y +CONFIG_CRASH_DUMP y + +# Menu: Bus options (arm) + +# Menu: Bus options (powerpc) +CONFIG_FSL_LBC y + +# Menu: Bus options (x86) +CONFIG_ISA_DMA_API y +CONFIG_X86_SYSFB y +CONFIG_ISA y +CONFIG_EISA y +CONFIG_ALIX y +CONFIG_NET5501 y +CONFIG_GEOS y + +# Menu: Bus options >> PCCard (PCMCIA/CardBus) support +CONFIG_PCCARD p policy<(arch armel armhf ppc64el &/ value n) | value m> note +CONFIG_PCMCIA_LOAD_CIS y +CONFIG_CARDBUS y +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 support +CONFIG_PCI y +CONFIG_PCIEPORTBUS y +CONFIG_HOTPLUG_PCI_PCIE y +CONFIG_PCIEAER_INJECT n flag +CONFIG_PCI_IOAPIC p policy<(arch i386 amd64 &/ value y) | value m> note + +# Menu: Bus options >> PCI support (arm) + +# Menu: Bus options >> PCI support (powerpc) + +# Menu: Bus options >> PCI support (x86) +CONFIG_PCI_MMCONFIG y +CONFIG_PCI_GOANY y + +# Menu: Bus options >> PCI support >> PCI host controller drivers +CONFIG_PCI_IMX6 y +CONFIG_PCI_TEGRA y + +# Menu: Bus options >> 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 support >> RapidIO support (powerpc) + +# Menu: Bus options >> PCI support >> RapidIO support (x86) + +# Menu: Bus options >> PCI support >> RapidIO support >> RapidIO Switch drivers + +# Menu: Bus options >> PCI support >> Support for PCI Hotplug +CONFIG_HOTPLUG_PCI y +CONFIG_HOTPLUG_PCI_ACPI y +CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM y + +# Menu: CAN Device Drivers + +# Menu: CAN Device Drivers >> CAN USB interfaces + +# Menu: CAN Device Drivers >> Platform CAN drivers with Netlink support +CONFIG_CAN_CALC_BITTIMING y +CONFIG_CAN_LEDS y + +# Menu: CAN Device Drivers >> Platform CAN drivers with Netlink support >> Bosch CC770 and Intel AN82527 devices + +# Menu: CAN Device Drivers >> Platform CAN drivers with Netlink support >> Bosch C_CAN/D_CAN devices + +# Menu: CAN Device Drivers >> Platform CAN drivers with Netlink support >> Philips/NXP SJA1000 devices +CONFIG_CAN_PEAK_PCIEC y + +# Menu: CPU Power Management >> CPU Frequency scaling +CONFIG_CPU_FREQ y +CONFIG_CPU_FREQ_STAT y note +CONFIG_CPU_FREQ_STAT_DETAILS y +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE y note +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_CRYPTO_DEV_NX y + +# Menu: CPU Power Management >> CPU Frequency scaling >> ARM CPU frequency scaling drivers + +# Menu: CPU Power Management >> CPU Frequency scaling >> AVR32 CPU frequency scaling drivers + +# Menu: CPU Power Management >> CPU Frequency scaling >> CPUFreq processor drivers + +# Menu: CPU Power Management >> CPU Frequency scaling >> MIPS CPUFreq processor drivers + +# Menu: CPU Power Management >> CPU Frequency scaling >> PowerPC CPU frequency scaling drivers + +# Menu: CPU Power Management >> CPU Frequency scaling >> SH CPU Frequency scaling + +# Menu: CPU Power Management >> CPU Frequency scaling >> SPARC CPU frequency scaling drivers + +# Menu: CPU Power Management >> CPU Frequency scaling >> x86 CPU frequency scaling drivers +CONFIG_X86_INTEL_PSTATE y +CONFIG_X86_PCC_CPUFREQ y note +CONFIG_X86_ACPI_CPUFREQ y note +CONFIG_X86_ACPI_CPUFREQ_CPB y +CONFIG_X86_POWERNOW_K8 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: CPU Power Management >> CPU Idle +CONFIG_CPU_IDLE y +CONFIG_CPU_IDLE_MULTIPLE_DRIVERS y +CONFIG_CPU_IDLE_GOV_LADDER y +CONFIG_CPU_IDLE_GOV_MENU y + +# Menu: CPU Power Management >> CPU Idle >> ARM CPU Idle Drivers +CONFIG_ARM_BIG_LITTLE_CPUIDLE y +CONFIG_ARM_HIGHBANK_CPUIDLE p policy<(arch armhf & flavour generic &/ value n) | value y> 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_HW y +CONFIG_CRYPTO_DEV_PADLOCK y note +CONFIG_CRYPTO_DEV_HIFN_795X_RNG y +CONFIG_CRYPTO_DEV_NX_COMPRESS y note + +# Menu: Device Drivers +CONFIG_POWER_AVS y +CONFIG_RESET_CONTROLLER y +CONFIG_VEXPRESS_CONFIG y +CONFIG_ARM_ARCH_TIMER_EVTSTREAM y + +# Menu: Device Drivers >> 1-wire Bus Masters + +# Menu: Device Drivers >> 1-wire Slaves +CONFIG_W1_SLAVE_DS2408_READBACK y +CONFIG_W1_SLAVE_DS2433_CRC n + +# Menu: Device Drivers >> ATA/ATAPI/MFM/RLL support (DEPRECATED) +set +tree 'Device Drivers>>ATA/ATAPI/MFM/RLL support (DEPRECATED)' = n +# +CONFIG_IDE p policy<(arch powerpc ppc64el &/ value y) | value n> note +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 + +# Menu: Device Drivers >> Accelerometers + +# Menu: Device Drivers >> Accessibility support + +# Menu: Device Drivers >> Active cards + +# Menu: Device Drivers >> Amplifiers + +# Menu: Device Drivers >> Analog to digital converters +CONFIG_LP8788_ADC y +CONFIG_EXYNOS_ADC y + +# Menu: Device Drivers >> Android +CONFIG_ANDROID n + +# Menu: Device Drivers >> Atmel devices (AVR32 and AT91) + +# 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_PARIDE_EPATC8 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_BLK_DEV_RAM y note +CONFIG_BLK_DEV_RAM_COUNT 16 +CONFIG_BLK_DEV_RAM_SIZE 65536 +CONFIG_BLK_DEV_XIP n note +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 + +# Menu: Device Drivers >> Broadcom specific AMBA +CONFIG_BCMA_HOST_PCI y +CONFIG_BCMA_HOST_SOC y +CONFIG_BCMA_DRIVER_GMAC_CMN y +CONFIG_BCMA_DRIVER_GPIO y + +# Menu: Device Drivers >> Bus devices +CONFIG_IMX_WEIM y +CONFIG_OMAP_INTERCONNECT y note +CONFIG_ARM_CCI 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_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_SERIAL_NONSTANDARD y +CONFIG_CYZ_INTR n +CONFIG_DEVKMEM n mark +CONFIG_TTY_PRINTK y +CONFIG_LP_CONSOLE n +CONFIG_HVC_XEN y +CONFIG_HVC_XEN_FRONTEND y +CONFIG_HW_RANDOM y +CONFIG_HW_RANDOM_ATMEL n note +CONFIG_NVRAM p policy<(arch powerpc &/ value y) | value m> note +CONFIG_MAX_RAW_DEVS 256 +CONFIG_HPET y +CONFIG_HPET_MMAP y +CONFIG_HPET_MMAP_DEFAULT y +CONFIG_HVC_DCC y +CONFIG_VIRTIO_CONSOLE y +CONFIG_HVC_CONSOLE y +CONFIG_HVC_OLD_HVSI n +CONFIG_HVC_OPAL y +CONFIG_HVC_RTAS y +CONFIG_HVC_UDBG n + +# Menu: Device Drivers >> Character devices >> IPMI top-level message handler +CONFIG_IPMI_PANIC_EVENT n + +# Menu: Device Drivers >> Character devices >> PCMCIA character devices + +# Menu: Device Drivers >> Character devices >> Serial drivers +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_EXTENDED y +CONFIG_SERIAL_8250_MANY_PORTS y +CONFIG_SERIAL_8250_SHARE_IRQ y +CONFIG_SERIAL_8250_DETECT_IRQ n +CONFIG_SERIAL_8250_RSA y +CONFIG_SERIAL_KGDB_NMI y +CONFIG_SERIAL_MAX310X y +CONFIG_SERIAL_SCCNXP y +CONFIG_SERIAL_SCCNXP_CONSOLE y +CONFIG_SERIAL_ALTERA_UART_MAXPORTS 4 +CONFIG_SERIAL_ALTERA_UART_BAUDRATE 115200 +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_OF_PLATFORM y +CONFIG_SERIAL_8250_EM n +CONFIG_SERIAL_IMX y +CONFIG_SERIAL_IMX_CONSOLE y +CONFIG_SERIAL_SH_SCI_NR_UARTS 2 +CONFIG_SERIAL_OMAP p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_SERIAL_OMAP_CONSOLE y + +# Menu: Device Drivers >> Character devices >> TPM Hardware Support +CONFIG_TCG_TPM y note +CONFIG_TCG_TIS y +CONFIG_TCG_IBMVTPM y + +# Menu: Device Drivers >> Common Clock Framework +CONFIG_COMMON_CLK_VERSATILE y +CONFIG_COMMON_CLK_XGENE y + +# Menu: Device Drivers >> Connector - unified userspace <-> kernelspace linker +CONFIG_CONNECTOR y +CONFIG_PROC_EVENTS y + +# Menu: Device Drivers >> Customise DVB Frontends +CONFIG_DVB_DUMMY_FE n note + +# Menu: Device Drivers >> DMA Engine support +CONFIG_DMADEVICES y +CONFIG_NET_DMA y note +CONFIG_ASYNC_TX_DMA y +CONFIG_DMATEST n flag +CONFIG_AMBA_PL08X y +CONFIG_DMA_OMAP y + +# Menu: Device Drivers >> Dallas's 1-wire support +CONFIG_W1_CON y + +# Menu: Device Drivers >> Device Tree and Open Firmware support +CONFIG_PROC_DEVICETREE y +CONFIG_OF_SELFTEST n flag + +# Menu: Device Drivers >> Digital gyroscope sensors + +# Menu: Device Drivers >> Digital to analog converters + +# Menu: Device Drivers >> Distributed Switch Architecture drivers + +# Menu: Device Drivers >> EDAC (Error Detection And Correction) reporting +CONFIG_EDAC y +CONFIG_EDAC_AMD64_ERROR_INJECTION n +CONFIG_EDAC_SBRIDGE m note + +# Menu: Device Drivers >> Encoders, decoders, sensors and other helper chips + +# 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 >> Frequency Synthesizers DDS/PLL >> Clock Generator/Distribution + +# Menu: Device Drivers >> Frequency Synthesizers DDS/PLL >> Phase-Locked Loop (PLL) frequency synthesizers + +# 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 y +CONFIG_GPIOLIB y +CONFIG_GPIO_EM n note +CONFIG_GPIO_TWL4030 y note + +# Menu: Device Drivers >> Generic Driver Options +CONFIG_UEVENT_HELPER_PATH "" +CONFIG_DEVTMPFS y +CONFIG_DEVTMPFS_MOUNT y +CONFIG_STANDALONE p policy<(arch i386 amd64 &/ value n) | value y> +CONFIG_PREVENT_FIRMWARE_BUILD y +CONFIG_FW_LOADER y note +CONFIG_FIRMWARE_IN_KERNEL y +CONFIG_EXTRA_FIRMWARE "" +CONFIG_FW_LOADER_USER_HELPER y +CONFIG_DMA_CMA y +CONFIG_CMA_SIZE_MBYTES 16 +CONFIG_CMA_SIZE_SEL_MBYTES y +CONFIG_CMA_ALIGNMENT 8 +CONFIG_CMA_AREAS 7 + +# 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 + +# 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_DEFAULT_GOV_STEP_WISE y +CONFIG_THERMAL_GOV_FAIR_SHARE y +CONFIG_THERMAL_GOV_STEP_WISE y +CONFIG_THERMAL_GOV_USER_SPACE y +CONFIG_CPU_THERMAL y +CONFIG_THERMAL_EMULATION 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_DRM_LOAD_EDID_FIRMWARE 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 +CONFIG_BACKLIGHT_CLASS_DEVICE y + +# Menu: Device Drivers >> Graphics support >> Console display driver support +CONFIG_VGA_CONSOLE y +CONFIG_VGACON_SOFT_SCROLLBACK n +CONFIG_FRAMEBUFFER_CONSOLE y note +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY y +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION n + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) +CONFIG_DRM p mark policy<(arch armel armhf &/ value y) | value m> note +CONFIG_NOUVEAU_DEBUG 5 +CONFIG_NOUVEAU_DEBUG_DEFAULT 3 +CONFIG_DRM_I915_FBDEV y +CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT y +CONFIG_DRM_VMWGFX_FBCON n +CONFIG_DRM_GMA600 y +CONFIG_DRM_GMA3600 y +CONFIG_DRM_EXYNOS n flag +CONFIG_DRM_RCAR_LVDS y +CONFIG_DRM_OMAP n + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> I2C encoder or helper chips + +# Menu: Device Drivers >> Graphics support >> Exynos Video driver support +CONFIG_EXYNOS_VIDEO y + +# Menu: Device Drivers >> Graphics support >> Marvell MMP Display Subsystem support + +# Menu: Device Drivers >> Graphics support >> OMAP Display Device Drivers (new device model) + +# Menu: Device Drivers >> Graphics support >> OMAP2+ Display Subsystem support +CONFIG_OMAP2_DSS p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_OMAP2_DSS_DEBUGFS n +CONFIG_OMAP2_DSS_DPI y +CONFIG_OMAP2_DSS_VENC y +CONFIG_OMAP4_DSS_HDMI y +CONFIG_OMAP2_DSS_SDI y +CONFIG_OMAP2_DSS_DSI n +CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK 0 +CONFIG_OMAP2_DSS_SLEEP_AFTER_VENC_RESET y + +# Menu: Device Drivers >> Graphics support >> Support for frame buffer devices +CONFIG_FB y +CONFIG_FIRMWARE_EDID y +CONFIG_FB_MODE_HELPERS y +CONFIG_FB_TILEBLITTING y +CONFIG_FB_PM2_FIFO_DISCONNECT y +CONFIG_FB_CYBER2000_DDC y +CONFIG_FB_MATROX_MILLENIUM y +CONFIG_FB_MATROX_MYSTIQUE y +CONFIG_FB_MATROX_G y +CONFIG_FB_RADEON p policy<(arch powerpc &/ value y) | value m> note +CONFIG_FB_ATY128 p policy<(arch powerpc &/ value y) | value m> note +CONFIG_FB_ATY_CT y +CONFIG_FB_ATY_GX y +CONFIG_FB_S3_DDC y +CONFIG_FB_SIS_300 y +CONFIG_FB_SIS_315 y +CONFIG_FB_VIA_X_COMPATIBILITY y +CONFIG_FB_3DFX p policy<(arch powerpc &/ value y) | value m> note +CONFIG_FB_3DFX_ACCEL y +CONFIG_FB_VOODOO1 p policy<(arch powerpc &/ value y) | value m> note +CONFIG_FB_CARMINE_DRAM_EVAL y +CONFIG_FB_TMIO_ACCELL y +CONFIG_FB_VIRTUAL n flag +CONFIG_FB_MB862XX_PCI_GDC y + +# Menu: Device Drivers >> Graphics support >> Support for frame buffer devices >> Bootup logo +CONFIG_LOGO n + +# Menu: Device Drivers >> Graphics support >> Support for frame buffer devices >> Framebuffer foreign endianness support +CONFIG_FB_FOREIGN_ENDIAN n + +# Menu: Device Drivers >> Graphics support >> Support for frame buffer devices >> OMAP2+ frame buffer support +CONFIG_FB_OMAP2 p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_FB_OMAP2_NUM_FBS 3 + +# 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 +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 + +# Menu: Device Drivers >> Hardware Spinlock drivers +CONFIG_HWSPINLOCK_OMAP y note + +# Menu: Device Drivers >> Hid Sensor IIO Common + +# Menu: Device Drivers >> I2C Algorithms +CONFIG_I2C_ALGOBIT p policy<(arch powerpc &/ value y) | value m> note + +# Menu: Device Drivers >> I2C Hardware Bus support +CONFIG_I2C_IMX y +CONFIG_I2C_OMAP p policy<(arch armel armhf &/ value y) | value m> note + +# Menu: Device Drivers >> I2C support +CONFIG_I2C y +CONFIG_I2C_COMPAT y mark +CONFIG_I2C_HELPER_AUTO y + +# Menu: Device Drivers >> I2C support >> I2C bus multiplexing support + +# Menu: Device Drivers >> I2C support >> I2C bus multiplexing support >> Multiplexer I2C Chip support + +# Menu: Device Drivers >> I2O device support +CONFIG_I2O_CONFIG_OLD_IOCTL n + +# Menu: Device Drivers >> IEEE 1394 (FireWire) support + +# Menu: Device Drivers >> IIO staging drivers +CONFIG_IIO_SIMPLE_DUMMY_EVENTS n note +CONFIG_IIO_SIMPLE_DUMMY_BUFFER n note + +# Menu: Device Drivers >> IIO staging drivers >> Accelerometers +CONFIG_LIS3L02DQ p policy<(arch armhf &/ value n) | value m> flag + +# Menu: Device Drivers >> IIO staging drivers >> Active energy metering IC + +# Menu: Device Drivers >> IIO staging drivers >> Analog digital bi-direction converters + +# Menu: Device Drivers >> IIO staging drivers >> Analog to digital converters +CONFIG_AD799X_RING_BUFFER y + +# Menu: Device Drivers >> IIO staging drivers >> Capacitance to digital converters + +# Menu: Device Drivers >> IIO staging drivers >> Digital gyroscope sensors + +# Menu: Device Drivers >> IIO staging drivers >> Direct Digital Synthesis + +# Menu: Device Drivers >> IIO staging drivers >> Light sensors + +# Menu: Device Drivers >> IIO staging drivers >> Magnetometer sensors + +# Menu: Device Drivers >> IIO staging drivers >> Network Analyzer, Impedance Converters + +# Menu: Device Drivers >> IIO staging drivers >> Resolver to digital converters + +# 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_OMAP_IOVMM n note +CONFIG_SHMOBILE_IOMMU_ADDRSIZE_2048MB y + +# Menu: Device Drivers >> ISDN feature submodules + +# Menu: Device Drivers >> ISDN support +CONFIG_ISDN y +CONFIG_HYSDN_CAPI y + +# Menu: Device Drivers >> ISDN support >> CAPI 2.0 subsystem + +# Menu: Device Drivers >> ISDN support >> CAPI 2.0 subsystem >> Active AVM cards +CONFIG_CAPI_AVM y + +# Menu: Device Drivers >> ISDN support >> CAPI 2.0 subsystem >> Active Eicon DIVA Server cards +CONFIG_CAPI_EICON y + +# Menu: Device Drivers >> ISDN support >> Modular ISDN driver + +# Menu: Device Drivers >> ISDN support >> Old ISDN4Linux (deprecated) + +# Menu: Device Drivers >> ISDN support >> Siemens Gigaset support + +# Menu: Device Drivers >> Industrial I/O support + +# Menu: Device Drivers >> IndustryPack bus support + +# Menu: Device Drivers >> Inertial measurement units + +# Menu: Device Drivers >> InfiniBand 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_MOUSEDEV y +CONFIG_INPUT_MOUSEDEV_PSAUX y +CONFIG_INPUT_MOUSEDEV_SCREEN_X 1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y 768 +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_INPUT_KEYBOARD y +CONFIG_KEYBOARD_ATKBD y note +CONFIG_KEYBOARD_IMX n +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 + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Mice +CONFIG_INPUT_MOUSE y +CONFIG_MOUSE_INPORT n note + +# 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 + +# 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 >> Hardware I/O ports +CONFIG_SERIO y note +CONFIG_SERIO_I8042 y note +CONFIG_SERIO_SERPORT p policy<(arch armhf &/ value y) | value m> 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_CLASS y +CONFIG_LEDS_PCA9532_GPIO y +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_ASIC3 y + +# Menu: Device Drivers >> LED Support >> LED Class Support >> LED Trigger support +CONFIG_LEDS_TRIGGERS y +CONFIG_LEDS_TRIGGER_HEARTBEAT p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_LEDS_TRIGGER_CPU y + +# Menu: Device Drivers >> Light sensors + +# Menu: Device Drivers >> MMC/SD/SDIO card support +CONFIG_MMC y +CONFIG_MMC_BLOCK p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_MMC_TEST n flag +CONFIG_MMC_SDHCI p policy<(arch armel armhf highbank &/ value y) | value m> note +CONFIG_MMC_SDHCI_PLTFM p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_MMC_OMAP p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_MMC_OMAP_HS p policy<(arch armel armhf &/ value y) | value m> note + +# Menu: Device Drivers >> Macintosh device drivers +CONFIG_MACINTOSH_DRIVERS y + +# Menu: Device Drivers >> Magnetometer sensors + +# Menu: Device Drivers >> Mailbox Hardware Support +CONFIG_MAILBOX y +CONFIG_PL320_MBOX y +CONFIG_OMAP_MBOX_KFIFO_SIZE 256 + +# Menu: Device Drivers >> Memory Controller drivers +CONFIG_MEMORY y +CONFIG_TEGRA20_MC y +CONFIG_TEGRA30_MC y + +# Menu: Device Drivers >> Memory Technology Device (MTD) support +CONFIG_MTD p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_MTD_BLKDEVS p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_MTD_BLOCK p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_SM_FTL m note +CONFIG_MTD_OF_PARTS p policy<(arch armel armhf &/ value y) | value m> note + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> Enable UBI - Unsorted block images + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> LPDDR flash memory drivers + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> Mapping drivers for chip access +CONFIG_MTD_COMPLEX_MAPPINGS y +CONFIG_MTD_PHYSMAP_COMPAT 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 + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> OneNAND Device Support + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> RAM/ROM/Flash chip drivers + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> Self-contained MTD device drivers + +# Menu: Device Drivers >> Microsoft Hyper-V guest support + +# Menu: Device Drivers >> Misc devices +CONFIG_CS5535_MFGPT n note +CONFIG_SRAM y + +# Menu: Device Drivers >> Misc devices >> EEPROM support + +# 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_EZX_PCAP p policy<(arch armhf &/ value n) | value m> flag +CONFIG_MFD_SM501 p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_MFD_OMAP_USB_HOST y + +# 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 Capabilities Port drivers + +# 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_MEDIA_SUBDRV_AUTOSELECT 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 >> Customize TV tuners + +# 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 >> Cameras/video grabbers support +CONFIG_MEDIA_CAMERA_SUPPORT y + +# Menu: Device Drivers >> Multimedia support >> Cameras/video grabbers support >> ISA and parallel port devices +CONFIG_MEDIA_PARPORT_SUPPORT 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 >> Media PCI Adapters +CONFIG_MEDIA_PCI_SUPPORT y +CONFIG_VIDEO_SAA7134_RC y +CONFIG_DVB_AV7110_OSD y + +# 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_STK1160_AC97 y +CONFIG_VIDEO_CX231XX_RC y +CONFIG_DVB_USB_DIBUSB_MB_FAULTY n + +# Menu: Device Drivers >> Multimedia support >> Media USB Adapters >> GSPCA based webcams + +# Menu: Device Drivers >> Multimedia support >> Remote Controller devices +CONFIG_RC_DEVICES y + +# Menu: Device Drivers >> Multimedia support >> Remote controller decoders +CONFIG_RC_DECODERS y + +# 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 +CONFIG_BLK_DEV_MD y +CONFIG_MD_AUTODETECT y +CONFIG_BLK_DEV_DM y +CONFIG_DM_UEVENT y + +# Menu: Device Drivers >> Network device support +set +pattern '^NET_VENDOR_' = y +# +CONFIG_NETDEVICES y +CONFIG_FDDI y +CONFIG_HIPPI n note +CONFIG_PPP y +CONFIG_PPP_FILTER y +CONFIG_PPP_MULTILINK y +CONFIG_SLIP_COMPRESSED y +CONFIG_SLIP_SMART y +CONFIG_SLIP_MODE_SLIP6 y +CONFIG_XEN_NETDEV_FRONTEND y note + +# Menu: Device Drivers >> Network device support >> ARCnet support + +# Menu: Device Drivers >> Network device support >> ATM drivers +CONFIG_ATM_DRIVERS y + +# Menu: Device Drivers >> Network device support >> Ethernet driver support +CONFIG_ETHERNET y +CONFIG_NET_CALXEDA_XGMAC p policy<(arch armhf &/ value y) | value m> note +CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL n + +# Menu: Device Drivers >> Network device support >> IEEE 802.15.4 drivers +CONFIG_IEEE802154_FAKEHARD n flag + +# Menu: Device Drivers >> Network device support >> Network core driver support +CONFIG_NET_CORE y +CONFIG_NET_FC y +CONFIG_NETCONSOLE_DYNAMIC y +CONFIG_NETPOLL_TRAP n +CONFIG_TUN y +CONFIG_VIRTIO_NET p policy<(arch i386 amd64 &/ value y) | (arch armel armhf &/ value n) | value m> 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 = y note +set +tree 'Device Drivers>>Network device support>>PHY Device support and infrastructure' !flag EXPERIMENTAL ?type tristate = y note +# +CONFIG_PHYLIB y +CONFIG_STE10XP y +CONFIG_FIXED_PHY y + +# Menu: Device Drivers >> Network device support >> S/390 network device drivers + +# Menu: Device Drivers >> Network device support >> Wan interfaces support +CONFIG_WAN y +CONFIG_DSCC4_PCISYNC y +CONFIG_DSCC4_PCI_RST y +CONFIG_DLCI_MAX 8 + +# Menu: Device Drivers >> Network device support >> Wireless LAN +CONFIG_WLAN y +CONFIG_B43_BCMA y +CONFIG_B43_PCMCIA n +CONFIG_B43_SDIO n +CONFIG_B43_PHY_N y +CONFIG_B43_PHY_LP y +CONFIG_B43_PHY_HT y +CONFIG_B43LEGACY_DMA_AND_PIO_MODE y +CONFIG_BRCMFMAC_USB y +CONFIG_BRCMDBG - flag + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Atheros Wireless Cards +CONFIG_ATH6KL_USB m note + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Intel Wireless WiFi Next Gen AGN - Wireless-N/Advanced-N/Ultimate-N (iwlwifi) + +# 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 >> Ralink driver support +CONFIG_RT2800PCI_RT33XX y +CONFIG_RT2800PCI_RT35XX y +CONFIG_RT2800PCI_RT53XX y +CONFIG_RT2800PCI_RT3290 y +CONFIG_RT2800USB_RT33XX y +CONFIG_RT2800USB_RT35XX y +CONFIG_RT2800USB_RT3573 y +CONFIG_RT2800USB_RT53XX y +CONFIG_RT2800USB_RT55XX 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 >> TI Wireless LAN support +CONFIG_WL_TI y + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> TI Wireless LAN support >> TI wl1251 driver support + +# Menu: Device Drivers >> PHY Subsystem +CONFIG_TWL4030_USB y + +# Menu: Device Drivers >> PPS support +CONFIG_PPS_CLIENT_KTIMER n flag + +# Menu: Device Drivers >> PTP clock support + +# Menu: Device Drivers >> Parallel port support +CONFIG_PARPORT_PC_FIFO y +CONFIG_PARPORT_PC_SUPERIO n +CONFIG_PARPORT_1284 y + +# Menu: Device Drivers >> Passive cards +set +tree 'Device Drivers>>Passive cards' ?pattern '^HISAX_' !pattern '^HISAX_NO_' ?type bool = y + +# Menu: Device Drivers >> Pin controllers +set +tree 'Device Drivers>>Pin controllers' ?pattern '^PINCTRL_' ?type bool = y +CONFIG_PINMUX y +CONFIG_PINCONF y + +# 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 +CONFIG_POWER_RESET_RESTART y + +# Menu: Device Drivers >> Power supply class support >> Board level reset or power off +CONFIG_POWER_RESET y +CONFIG_POWER_RESET_GPIO y +CONFIG_POWER_RESET_VEXPRESS y + +# Menu: Device Drivers >> Pressure sensors + +# 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_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<(arch i386 amd64 &/ value y) | value m> note +CONFIG_RTC_DRV_TWL4030 p policy<(arch armel armhf &/ value y) | value m> note + +# Menu: Device Drivers >> Remoteproc drivers + +# Menu: Device Drivers >> SCSI device support + +# Menu: Device Drivers >> SCSI device support >> SCSI device support +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_MULTI_LUN y +CONFIG_SCSI_CONSTANTS y +CONFIG_SCSI_LOGGING y +CONFIG_SCSI_SCAN_ASYNC y +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_FC_TGT_ATTRS y +CONFIG_SCSI_SAS_ATA y +CONFIG_SCSI_SAS_HOST_SMP y +CONFIG_SCSI_SRP_TGT_ATTRS y + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> SCSI low-level drivers +CONFIG_SCSI_LOWLEVEL y +CONFIG_AIC7XXX_CMDS_PER_DEVICE 8 +CONFIG_AIC7XXX_RESET_DELAY_MS 15000 +CONFIG_AIC7XXX_DEBUG_MASK 0 +CONFIG_AIC7XXX_REG_PRETTY_PRINT y +CONFIG_SCSI_AIC7XXX_OLD n note +CONFIG_AIC79XX_CMDS_PER_DEVICE 32 +CONFIG_AIC79XX_RESET_DELAY_MS 5000 +CONFIG_AIC79XX_DEBUG_MASK 0 +CONFIG_AIC79XX_REG_PRETTY_PRINT 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_EATA_TAGGED_QUEUE y +CONFIG_SCSI_EATA_LINKED_COMMANDS y +CONFIG_SCSI_EATA_MAX_TAGS 16 +CONFIG_SCSI_IZIP_EPP16 n +CONFIG_SCSI_IZIP_SLOW_CTR n +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE 1 +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS 16 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS 64 +CONFIG_SCSI_SYM53C8XX_MMIO y +CONFIG_SCSI_IPR_TRACE y +CONFIG_SCSI_IPR_DUMP y +CONFIG_SCSI_DEBUG m +CONFIG_SCSI_VIRTIO m note +CONFIG_SCSI_GENERIC_NCR53C400 y +CONFIG_SCSI_U14_34F_TAGGED_QUEUE y +CONFIG_SCSI_U14_34F_LINKED_COMMANDS y +CONFIG_SCSI_U14_34F_MAX_TAGS 8 + +# Menu: Device Drivers >> SPI support +CONFIG_SPI y +CONFIG_SPI_XILINX n +CONFIG_SPI_SPIDEV m note +CONFIG_SPI_OMAP24XX y + +# Menu: Device Drivers >> Samsung thermal drivers + +# Menu: Device Drivers >> Sensors used on soc_camera driver + +# Menu: Device Drivers >> Serial ATA and Parallel ATA drivers +CONFIG_ATA y mark +CONFIG_ATA_VERBOSE_ERROR y +CONFIG_ATA_ACPI y +CONFIG_SATA_PMP y +CONFIG_SATA_AHCI_PLATFORM p policy<(arch armhf &/ value y) | value m> note +CONFIG_ATA_SFF y +CONFIG_ATA_BMDMA y +CONFIG_ATA_PIIX p policy<(arch i386 amd64 &/ value y) | value m> note +CONFIG_SATA_SVW p policy<(arch powerpc &/ value y) | value m> note +CONFIG_PATA_HPT3X3_DMA n note +CONFIG_PATA_SIS p policy<(arch i386 amd64 &/ value y) | value m> note +CONFIG_PATA_ACPI p policy<(arch i386 amd64 &/ value m)> note +CONFIG_ATA_GENERIC p policy<(arch i386 amd64 &/ value y) | value m> note + +# Menu: Device Drivers >> SoC Audio support for SuperH + +# Menu: Device Drivers >> Sonics Silicon Backplane + +# Menu: Device Drivers >> Sony MemoryStick card support + +# Menu: Device Drivers >> Sound card support +CONFIG_SOUND p policy<(arch armel armhf &/ value y) | value m> note + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture +CONFIG_SND p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_SND_PCM_OSS n note + +# 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 +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 for Freescale MXS CPUs + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> 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 i.MX CPUs + +# 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 >> ARM sound devices + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> Apple Onboard Audio driver + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> FireWire sound devices +CONFIG_SND_FIREWIRE y + +# 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 + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ISA sound devices +CONFIG_SND_ISA 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 + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> PCI sound devices >> Intel HD Audio + +# 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 + +# 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 >> Speakup console speech + +# Menu: Device Drivers >> Staging drivers +CONFIG_STAGING y +CONFIG_PANEL_PARPORT 0 +CONFIG_PANEL_PROFILE 5 +CONFIG_PANEL_CHANGE_MESSAGE n +CONFIG_ZSMALLOC y note +CONFIG_ZRAM y mark note +CONFIG_SBE_PMCC4_NCOMM y + +# Menu: Device Drivers >> Staging drivers >> DSP Bridge driver + +# 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 y + +# Menu: Device Drivers >> Staging drivers >> Data acquisition support (comedi) >> Comedi PCMCIA drivers +CONFIG_COMEDI_PCMCIA_DRIVERS y + +# Menu: Device Drivers >> Staging drivers >> Data acquisition support (comedi) >> Comedi USB drivers +CONFIG_COMEDI_USB_DRIVERS y + +# 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 y +CONFIG_WIMAX_GDM72XX_USB_PM y + +# Menu: Device Drivers >> Staging drivers >> Line6 USB support +CONFIG_LINE6_USB_IMPULSE_RESPONSE n + +# Menu: Device Drivers >> Staging drivers >> Media staging drivers +CONFIG_STAGING_MEDIA y +CONFIG_DT3155_CCIR n note +CONFIG_DT3155_STREAMING 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 >> TI VLYNQ + +# Menu: Device Drivers >> Temperature sensors + +# Menu: Device Drivers >> Texas Instruments WL128x FM driver (ST based) + +# Menu: Device Drivers >> Texas Instruments thermal drivers +CONFIG_OMAP4_THERMAL y +CONFIG_DRA752_THERMAL y + +# Menu: Device Drivers >> Triggers - standalone + +# Menu: Device Drivers >> USB Network Adapters +CONFIG_USB_USBNET p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_USB_NET_SMSC95XX p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_USB_KC2190 y note + +# Menu: Device Drivers >> USB Peripheral Controller +CONFIG_USB_M66592 n note +CONFIG_USB_DUMMY_HCD n flag + +# Menu: Device Drivers >> USB Physical Layer drivers +CONFIG_NOP_USB_XCEIV p policy<(arch armel armhf &/ value y) | value m> note + +# Menu: Device Drivers >> USB support +CONFIG_USB_SUPPORT y + +# Menu: Device Drivers >> USB support >> Support for Host-side USB +CONFIG_USB y +CONFIG_USB_OTG n note mark +CONFIG_USB_OTG_WHITELIST n note +CONFIG_USB_OTG_BLACKLIST_HUB n note +CONFIG_USB_XHCI_HCD y note +CONFIG_USB_EHCI_HCD y note +CONFIG_USB_OHCI_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_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 +CONFIG_USB_SISUSBVGA_CON n note +CONFIG_USB_MUSB_OMAP2PLUS y +CONFIG_USB_INVENTRA_DMA p policy<(arch armel armhf &/ value y) | value n> note + +# 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 Serial Converter support +CONFIG_USB_SERIAL_GENERIC y +CONFIG_USB_SERIAL_SAFE_PADDED n +CONFIG_USB_SERIAL_DEBUG m note + +# Menu: Device Drivers >> USB support >> USB Gadget Support +CONFIG_USB_GADGET p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_USB_GADGETFS m note +CONFIG_USB_FUNCTIONFS m note +CONFIG_USB_G_MULTI p policy<(arch armel armhf &/ value m) | value n> note + +# Menu: Device Drivers >> Ultra Wideband devices + +# Menu: Device Drivers >> Userspace I/O drivers + +# Menu: Device Drivers >> VFIO Non-Privileged userspace driver framework + +# Menu: Device Drivers >> VME bridge support + +# Menu: Device Drivers >> Virtio drivers +CONFIG_VIRTIO_PCI p policy<(arch i386 amd64 &/ value y) | (arch armel armhf &/ value n) | value m> note +CONFIG_VIRTIO_BALLOON p policy<(arch armel armhf &/ value n) | value m> note +CONFIG_VIRTIO_MMIO p policy<(arch armel armhf &/ value n) | value m> note +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<(arch armel armhf &/ value y) | value m> note + +# Menu: Device Drivers >> Watchdog Timer Support +CONFIG_WATCHDOG y +CONFIG_WATCHDOG_CORE y + +# Menu: Device Drivers >> WiMAX Wireless Broadband devices + +# Menu: Device Drivers >> X86 Platform Specific Device Drivers +CONFIG_X86_PLATFORM_DEVICES y + +# Menu: Device Drivers >> Xen driver support +CONFIG_XEN_BALLOON y +CONFIG_XEN_SELFBALLOONING y +CONFIG_XEN_BALLOON_MEMORY_HOTPLUG y +CONFIG_XEN_SCRUB_PAGES y +CONFIG_XEN_BACKEND y +CONFIG_XEN_COMPAT_XENFS y +CONFIG_XEN_SYS_HYPERVISOR y +CONFIG_XEN_ACPI_PROCESSOR p policy<(arch i386 amd64 &/ value y) | value m> +CONFIG_XEN_MCE_LOG y + +# Menu: Device Drivers >> iwl3945 / iwl4965 Debugging Options + +# 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_SIG y +CONFIG_MODULE_SIG_FORCE n +CONFIG_MODULE_SIG_ALL y +CONFIG_MODULE_SIG_SHA512 y + +# Menu: Enable the block layer +CONFIG_BLOCK y +CONFIG_BLK_DEV_THROTTLING y note + +# Menu: Executable file formats / Emulations +CONFIG_BINFMT_ELF y + +# Menu: Executable file formats / Emulations (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 +# +CONFIG_EXT2_FS n note +CONFIG_EXT3_FS n note +CONFIG_EXT4_FS y note +CONFIG_EXT4_USE_FOR_EXT23 y +CONFIG_REISERFS_CHECK n +CONFIG_REISERFS_PROC_INFO n +CONFIG_JFS_STATISTICS y +CONFIG_XFS_QUOTA y +CONFIG_XFS_RT y +CONFIG_GFS2_FS_LOCKING_DLM y +CONFIG_OCFS2_FS_STATS y +CONFIG_OCFS2_DEBUG_MASKLOG y +CONFIG_BTRFS_FS_POSIX_ACL y +CONFIG_FILE_LOCKING y +CONFIG_DNOTIFY y +CONFIG_INOTIFY_USER y +CONFIG_FANOTIFY y +CONFIG_FANOTIFY_ACCESS_PERMISSIONS y +CONFIG_QUOTA y +CONFIG_QUOTA_NETLINK_INTERFACE y +CONFIG_PRINT_QUOTA_WARNING n +CONFIG_FUSE_FS y note + +# Menu: File systems >> CD-ROM/DVD Filesystems +CONFIG_JOLIET y +CONFIG_ZISOFS y + +# Menu: File systems >> Caches +CONFIG_FSCACHE_STATS y +CONFIG_FSCACHE_HISTOGRAM n +CONFIG_FSCACHE_OBJECT_LIST n +CONFIG_CACHEFILES_HISTOGRAM n + +# Menu: File systems >> DOS/FAT/NT Filesystems +CONFIG_VFAT_FS y +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 >> Miscellaneous filesystems +CONFIG_MISC_FILESYSTEMS y +CONFIG_ECRYPT_FS y note +CONFIG_JFFS2_FS_DEBUG 0 +CONFIG_JFFS2_FS_WRITEBUFFER y +CONFIG_JFFS2_FS_WBUF_VERIFY n +CONFIG_JFFS2_SUMMARY n +CONFIG_JFFS2_COMPRESSION_OPTIONS y +CONFIG_JFFS2_ZLIB y +CONFIG_JFFS2_LZO y +CONFIG_JFFS2_RTIME y +CONFIG_JFFS2_RUBIN n +CONFIG_JFFS2_CMODE_FAVOURLZO y +CONFIG_UBIFS_FS_ADVANCED_COMPR n +CONFIG_UBIFS_FS_LZO y +CONFIG_UBIFS_FS_ZLIB y +CONFIG_LOGFS n note +CONFIG_SQUASHFS_ZLIB y +CONFIG_SQUASHFS_LZO y +CONFIG_SQUASHFS_XZ y +CONFIG_SQUASHFS_4K_DEVBLK_SIZE n +CONFIG_SQUASHFS_4K_DEVBLK_SIZE n note +CONFIG_SQUASHFS_4K_DEVBLK_SIZE n +CONFIG_SQUASHFS_4K_DEVBLK_SIZE n note +CONFIG_SQUASHFS_EMBEDDED n +CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE 3 +CONFIG_ROMFS_BACKED_BY_BLOCK y +CONFIG_PSTORE y +CONFIG_PSTORE_CONSOLE n note +CONFIG_PSTORE_FTRACE n +CONFIG_F2FS_STAT_FS y + +# Menu: File systems >> Native language support +CONFIG_NLS y note +CONFIG_NLS_CODEPAGE_437 y + +# Menu: File systems >> Network File Systems +CONFIG_NETWORK_FILESYSTEMS y +CONFIG_NFS_V3_ACL y +CONFIG_NFS_SWAP y +CONFIG_NFS_V4_1 y +CONFIG_NFS_V4_2 y +CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN "kernel.org" +CONFIG_NFS_FSCACHE y +CONFIG_NFS_USE_LEGACY_DNS n +CONFIG_NFSD_V3 y +CONFIG_NFSD_V3_ACL y +CONFIG_NFSD_V4 y note +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 +CONFIG_CIFS_FSCACHE y +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 >> Pseudo filesystems +CONFIG_PROC_FS y +CONFIG_PROC_KCORE y +CONFIG_PROC_VMCORE y +CONFIG_PROC_SYSCTL y +CONFIG_PROC_PAGE_MONITOR y +CONFIG_SYSFS y +CONFIG_TMPFS y +CONFIG_HUGETLBFS y + +# Menu: Firmware Drivers +CONFIG_EDD y note + +# Menu: Firmware Drivers >> EFI (Extensible Firmware Interface) Support +CONFIG_EFI_VARS y note + +# Menu: Firmware Drivers >> Google Firmware Drivers + +# Menu: Firmware Drivers >> Google Firmware Drivers >> Google Firmware Drivers + +# Menu: Floating point emulation (arm) + +# Menu: General setup +CONFIG_KERNEL_GZIP y +CONFIG_IKCONFIG n note +CONFIG_SLUB_DEBUG y +CONFIG_RD_GZIP y +CONFIG_RD_BZIP2 y +CONFIG_RD_LZMA y +CONFIG_RD_XZ y +CONFIG_RD_LZO y +CONFIG_RD_LZ4 y +CONFIG_SLUB y + +# Menu: General setup (arm) +# Menu: General setup (powerpc) +# Menu: General setup (x86) +CONFIG_OPROFILE_EVENT_MULTIPLEX n +CONFIG_KPROBES y +CONFIG_JUMP_LABEL y +CONFIG_UPROBES y + +# Menu: General setup >> CPU/Task time and stats accounting + +# Menu: General setup >> Configure standard kernel features (expert users) +CONFIG_EXPERT y + +# Menu: General setup >> Control Group support +CONFIG_CGROUPS y +CONFIG_CGROUP_HUGETLB y +CONFIG_BLK_CGROUP y note + +# 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 y + +# Menu: General setup >> GCOV-based kernel profiling +CONFIG_GCOV_KERNEL n + +# Menu: General setup >> IRQ subsystem + +# Menu: General setup >> Kernel Performance Events And Counters + +# 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_TREE_RCU y + +# Menu: General setup >> Timers subsystem + +# Menu: IO Schedulers +CONFIG_IOSCHED_DEADLINE y +CONFIG_IOSCHED_CFQ y +CONFIG_CFQ_GROUP_IOSCHED y +CONFIG_DEFAULT_DEADLINE y + +# Menu: Kernel Features +# Menu: Kernel Features (arm) +CONFIG_PREEMPT_VOLUNTARY y +CONFIG_COMPACTION y +CONFIG_MIGRATION y +CONFIG_KSM y +CONFIG_TRANSPARENT_HUGEPAGE y +CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS y + +CONFIG_CC_STACKPROTECTOR_REGULAR y mark + +# Menu: Kernel hacking +CONFIG_MAGIC_SYSRQ y +CONFIG_PANIC_ON_OOPS n note + +# Menu: Kernel hacking (arm) +# Menu: Kernel hacking (powerpc) +# Menu: Kernel hacking (x86) +CONFIG_STRICT_DEVMEM y +CONFIG_DEBUG_RODATA y +CONFIG_DEBUG_SET_MODULE_RONX y +CONFIG_EARLY_PRINTK y +CONFIG_DEBUG_NX_TEST n flag + +# Menu: Kernel hacking >> Compile-time checks and compiler options +CONFIG_DEBUG_FS y note +CONFIG_DEBUG_INFO y note +CONFIG_DEBUG_INFO_REDUCED n + +# Menu: Kernel hacking >> Debug Lockups and Hangs +CONFIG_LOCKUP_DETECTOR y + +# Menu: Kernel hacking >> Kernel debugging +CONFIG_DEBUG_KERNEL y note +CONFIG_SCHED_DEBUG y + +# Menu: Kernel hacking >> Kernel debugging >> KGDB: kernel debugger +CONFIG_KGDB y +CONFIG_KGDB_SERIAL_CONSOLE y note + +# Menu: Kernel hacking >> Lock Debugging (spinlocks, mutexes, etc...) + +# Menu: Kernel hacking >> Memory Debugging + +# Menu: Kernel hacking >> Memory Debugging >> kmemcheck: trap use of uninitialized memory + +# Menu: Kernel hacking >> RCU Debugging +CONFIG_RCU_TORTURE_TEST n flag + +# Menu: Kernel hacking >> Runtime Testing +CONFIG_LKDTM n flag +CONFIG_BACKTRACE_SELF_TEST n flag + +# Menu: Kernel hacking >> Sample kernel code +CONFIG_SAMPLES n + +# Menu: Kernel hacking >> Tracers +CONFIG_FTRACE y +CONFIG_FUNCTION_TRACER y +CONFIG_FUNCTION_GRAPH_TRACER y +CONFIG_SCHED_TRACER y +CONFIG_FTRACE_SYSCALLS y +CONFIG_BRANCH_PROFILE_NONE y +CONFIG_STACK_TRACER y +CONFIG_BLK_DEV_IO_TRACE y +CONFIG_KPROBE_EVENT y +CONFIG_UPROBE_EVENT y +CONFIG_DYNAMIC_FTRACE y +CONFIG_FUNCTION_PROFILER y +CONFIG_FTRACE_STARTUP_TEST n flag +CONFIG_MMIOTRACE y +CONFIG_MMIOTRACE_TEST n flag +CONFIG_RING_BUFFER_BENCHMARK n flag +CONFIG_RING_BUFFER_STARTUP_TEST n flag + +# Menu: Kernel hacking >> printk and dmesg options +CONFIG_PRINTK_TIME y +CONFIG_DYNAMIC_DEBUG y + +# Menu: Kernel options +CONFIG_APM_EMULATION p policy<(arch armel armhf &/ value n) | value m> note + +# Menu: Kernel options (powerpc) +CONFIG_KEXEC y +CONFIG_CRASH_DUMP y + +# Menu: Library routines +CONFIG_CRC16 y note +CONFIG_CRC_T10DIF y note +CONFIG_CRC32 y note +CONFIG_CRC32_SELFTEST n flag +CONFIG_XZ_DEC y note +CONFIG_FONTS p policy<(arch armel armhf &/ value y) | value n> +CONFIG_FONT_8x8 y +CONFIG_FONT_8x16 y +CONFIG_FONT_6x11 n +CONFIG_FONT_7x14 n +CONFIG_FONT_PEARL_8x8 n +CONFIG_FONT_ACORN_8x8 y +CONFIG_FONT_MINI_4x6 n +CONFIG_FONT_SUN8x16 n +CONFIG_FONT_SUN12x22 n +CONFIG_FONT_10x18 n + +# Menu: Networking options +CONFIG_PACKET y note +CONFIG_UNIX y note +CONFIG_NETWORK_SECMARK y +CONFIG_ATM_CLIP_NO_ICMP n +CONFIG_ATM_BR2684_IPFILTER n +CONFIG_BRIDGE_IGMP_SNOOPING y +CONFIG_VLAN_8021Q_GVRP y +CONFIG_IPX_INTERN n +CONFIG_IPDDP_ENCAP y +CONFIG_X25 m note +CONFIG_LAPB m note +CONFIG_IEEE802154 m note +CONFIG_MAC802154 - note +CONFIG_DCB y +CONFIG_DNS_RESOLVER y note +CONFIG_BATMAN_ADV_BLA y +CONFIG_BATMAN_ADV_DAT y +CONFIG_BPF_JIT y note +CONFIG_COPS_DAYNA y +CONFIG_COPS_TANGENT y + +# Menu: Networking options >> DCCP CCIDs Configuration + +# Menu: Networking options >> DCCP Kernel Hacking + +# Menu: Networking options >> Network packet filtering framework (Netfilter) +CONFIG_NETFILTER y mark + +# Menu: Networking options >> Network packet filtering framework (Netfilter) >> Advanced netfilter configuration +CONFIG_NETFILTER_ADVANCED y +CONFIG_BRIDGE_NETFILTER y + +# Menu: Networking options >> Network packet filtering framework (Netfilter) >> Advanced netfilter configuration >> DECnet: Netfilter Configuration + +# Menu: Networking options >> Network packet filtering framework (Netfilter) >> Core Netfilter Configuration +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 options >> Network packet filtering framework (Netfilter) >> Ethernet Bridge tables (ebtables) support +CONFIG_BRIDGE_EBT_ULOG n flag + +# Menu: Networking options >> Network packet filtering framework (Netfilter) >> IP set support +CONFIG_IP_SET_MAX 256 + +# Menu: 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 options >> Network packet filtering framework (Netfilter) >> IP: Netfilter Configuration + +# Menu: Networking options >> Network packet filtering framework (Netfilter) >> IPv6: Netfilter Configuration + +# Menu: Networking options >> Network testing +CONFIG_NET_DROP_MONITOR n + +# Menu: Networking options >> QoS and/or fair queueing +CONFIG_NET_SCHED y mark +CONFIG_CLS_U32_PERF n +CONFIG_CLS_U32_MARK y +CONFIG_NET_EMATCH y +CONFIG_NET_EMATCH_STACK 32 +CONFIG_NET_CLS_ACT y +CONFIG_GACT_PROB y +CONFIG_NET_CLS_IND n flag + +# Menu: Networking options >> TCP/IP networking +CONFIG_INET y note +CONFIG_IP_MULTICAST y +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 +CONFIG_IP_PNP y +CONFIG_IP_PNP_DHCP y +CONFIG_IP_PNP_BOOTP n +CONFIG_IP_PNP_RARP n +CONFIG_NET_IPGRE_BROADCAST y note +CONFIG_IP_MROUTE y +CONFIG_IP_MROUTE_MULTIPLE_TABLES n +CONFIG_IP_PIMSM_V1 y +CONFIG_IP_PIMSM_V2 y +CONFIG_SYN_COOKIES y mark +CONFIG_INET_LRO y note +CONFIG_TCP_MD5SIG y mark +CONFIG_NETLABEL y mark +CONFIG_RDS m note + +# Menu: Networking options >> TCP/IP networking >> Layer Two Tunneling Protocol (L2TP) +CONFIG_L2TP_V3 y + +# Menu: Networking options >> TCP/IP networking >> TCP: advanced congestion control +CONFIG_TCP_CONG_ADVANCED y +CONFIG_TCP_CONG_CUBIC y note +CONFIG_DEFAULT_CUBIC y + +# Menu: Networking options >> TCP/IP networking >> The IPv6 protocol +CONFIG_IPV6 y 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 options >> TCP/IP networking >> The SCTP Protocol +CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1 y +CONFIG_SCTP_COOKIE_HMAC_MD5 y +CONFIG_SCTP_COOKIE_HMAC_SHA1 y + +# Menu: Networking options >> TCP/IP networking >> The TIPC Protocol +CONFIG_TIPC m note +CONFIG_TIPC_PORTS 8191 + +# Menu: Networking support +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 + +# Menu: Networking support >> Amateur Radio support >> Amateur Radio AX.25 Level 2 protocol >> AX.25 network device drivers + +# Menu: Networking support >> Bluetooth subsystem support +CONFIG_BT m + +# Menu: Networking support >> Bluetooth subsystem support >> Bluetooth device drivers + +# Menu: Networking support >> CAIF support + +# Menu: Networking support >> CAN bus subsystem support + +# Menu: Networking support >> IrDA (infrared) subsystem support + +# Menu: Networking support >> IrDA (infrared) subsystem support >> Infrared-port device drivers +CONFIG_DONGLE y + +# Menu: Networking support >> NFC subsystem support +CONFIG_NFC m note mark +CONFIG_NFC_NCI m note + +# Menu: Networking support >> NFC subsystem support >> Near Field Communication (NFC) devices + +# Menu: Networking support >> Plan 9 Resource Sharing Support (9P2000) + +# Menu: Networking support >> RF switch subsystem support +CONFIG_RFKILL y + +# Menu: Networking support >> WiMAX Wireless Broadband support + +# Menu: Networking support >> Wireless +CONFIG_WIRELESS y + +# Menu: Networking support >> Wireless >> Generic IEEE 802.11 Networking Stack (mac80211) + +# Menu: Networking support >> Wireless >> Generic IEEE 802.11 Networking Stack (mac80211) >> Select mac80211 debugging features + +# Menu: Partition Types +set +tree 'Partition Types' ?pattern _PARTITION$ !flag EXPERIMENTAL = y +set +tree 'Partition Types' ?pattern _DISKLABEL$ !flag EXPERIMENTAL = y + +# Menu: Platform support (powerpc) +CONFIG_KVM_GUEST y + +# Menu: Platform support >> 82xx-based boards (PQ II) (powerpc) + +# Menu: Platform support >> 83xx-based boards (powerpc) + +# Menu: Platform support >> 86xx-based boards (powerpc) + +# Menu: Platform support >> Cell Broadband Engine options (powerpc) + +# Menu: Platform support >> Freescale Book-E Machine Type (powerpc) + +# Menu: Platform support >> Freescale Ethernet driver platform-specific options (powerpc) + +# Menu: Platform support >> MPC8xx CPM Options (powerpc) + +# Menu: Platform support >> PA Semi SoC-based platforms (powerpc) + +# Menu: Platform support >> PA Semi SoC-based platforms >> PA Semi PWRficient options (powerpc) + +# Menu: Platform support >> Sony PS3 (powerpc) + +# Menu: Platform support >> Sony PS3 >> PS3 Platform Options (powerpc) + +# Menu: Platform support >> WSP platform selection (powerpc) + +# Menu: Power management and ACPI options +CONFIG_SUSPEND y +CONFIG_SUSPEND_FREEZER y +CONFIG_HIBERNATION y +CONFIG_APM_EMULATION p policy<(arch armel armhf &/ value n) | value m> note + +# Menu: Power management and ACPI options >> ACPI (Advanced Configuration and Power Interface) Support +CONFIG_ACPI y mark +CONFIG_ACPI_AC y note +CONFIG_ACPI_BATTERY y note +CONFIG_ACPI_BUTTON y note +CONFIG_ACPI_FAN y note +CONFIG_ACPI_PROCESSOR y note +CONFIG_ACPI_THERMAL y note +CONFIG_ACPI_CONTAINER y note +CONFIG_ACPI_HED y note +CONFIG_ACPI_CUSTOM_METHOD n note + +# Menu: Power management and ACPI options >> APM (Advanced Power Management) BIOS support (x86) +CONFIG_APM m mark + +# Menu: Power management and ACPI options >> Memory power savings + +# Menu: Power management options +CONFIG_APM_EMULATION p policy<(arch armel armhf &/ value n) | value m> note + +# Menu: Processor support (powerpc) +CONFIG_SMP y + +# Menu: Processor type and features + +# Menu: Processor type and features (x86) +CONFIG_CC_STACKPROTECTOR_REGULAR y mark +CONFIG_KEXEC y +CONFIG_CRASH_DUMP y +CONFIG_RELOCATABLE y +CONFIG_TOSHIBA n note + +# Menu: Processor type and features >> Linux guest support (x86) +CONFIG_HYPERVISOR_GUEST y +CONFIG_PARAVIRT y +CONFIG_KVM_GUEST y + +# Menu: Security options +CONFIG_KEYS y +CONFIG_PERSISTENT_KEYRINGS y +CONFIG_TRUSTED_KEYS y note +CONFIG_ENCRYPTED_KEYS y note +CONFIG_SECURITY_DMESG_RESTRICT n +CONFIG_SECURITY y mark +CONFIG_SECURITYFS y +CONFIG_SECURITY_NETWORK y +CONFIG_SECURITY_NETWORK_XFRM n +CONFIG_SECURITY_PATH y +CONFIG_INTEL_TXT p policy<(arch i386 amd64 &/ value y) | value n)> +CONFIG_LSM_MMAP_MIN_ADDR 0 +CONFIG_SECURITY_SELINUX y +CONFIG_SECURITY_SELINUX_BOOTPARAM y +CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE 0 +CONFIG_SECURITY_SELINUX_DISABLE y note +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_SMACK y +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" +CONFIG_SECURITY_APPARMOR y +CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE 1 +CONFIG_SECURITY_YAMA y +CONFIG_SECURITY_YAMA_STACKED y +CONFIG_INTEGRITY_SIGNATURE y +CONFIG_IMA n note +CONFIG_EVM y +CONFIG_DEFAULT_SECURITY_APPARMOR y + +# Menu: System Type (arm) +CONFIG_ARCH_MULTIPLATFORM p policy<(arch armhf &/ value y) | value n> + +# Menu: System Type >> ARM Ltd. Versatile Express family (arm) + +# Menu: System Type >> ARM Ltd. Versatile Express family >> Versatile Express platform type (arm) + +# Menu: System Type >> Atmel AT91 System-on-Chip (arm) + +# Menu: System Type >> Atmel AT91 System-on-Chip >> Atmel Non-DT world (arm) + +# Menu: System Type >> Broadcom SoC Selection (arm) + +# Menu: System Type >> CLPS711X/EP721X/EP731X Implementations (arm) + +# Menu: System Type >> CSR SiRF atlas6/primaII/Marco/Polo Specific Features (arm) + +# Menu: System Type >> Cavium Networks CNS3XXX family (arm) + +# Menu: System Type >> Cavium Networks CNS3XXX family >> CNS3XXX platform type (arm) + +# Menu: System Type >> Cirrus EP93xx Implementation Options (arm) + +# Menu: System Type >> Cortina Systems Gemini Implementations (arm) + +# Menu: System Type >> Footbridge Implementations (arm) + +# Menu: System Type >> Freescale i.MX family (arm) + +# Menu: System Type >> Freescale i.MX family >> Freescale i.MX support (arm) + +# Menu: System Type >> IOP13XX Implementation Options (arm) + +# Menu: System Type >> IOP32x Implementation Options (arm) + +# Menu: System Type >> IOP33x Implementation Options (arm) + +# Menu: System Type >> Integrator Options (arm) + +# Menu: System Type >> Intel IXP4xx Implementation Options (arm) + +# Menu: System Type >> Intel PXA2xx/PXA3xx Implementations (arm) + +# Menu: System Type >> Kendin/Micrel KS8695 Implementations (arm) + +# Menu: System Type >> Marvell Dove Implementations (arm) + +# Menu: System Type >> Marvell Kirkwood Implementations (arm) + +# Menu: System Type >> Marvell MV78xx0 Implementations (arm) + +# Menu: System Type >> Marvell PXA168/910/MMP2 Implmentations (arm) + +# Menu: System Type >> Marvell SOC with device tree (arm) + +# Menu: System Type >> Multiple platform selection (arm) + +# Menu: System Type >> NUC950 Machines (arm) + +# Menu: System Type >> NUC960 Machines (arm) + +# Menu: System Type >> NVIDIA Tegra (arm) + +# Menu: System Type >> NVIDIA Tegra >> NVIDIA Tegra options (arm) + +# Menu: System Type >> NetX Implementations (arm) + +# Menu: System Type >> Nomadik boards (arm) + +# Menu: System Type >> Orion Implementations (arm) + +# Menu: System Type >> Qualcomm MSM Board Type (arm) + +# Menu: System Type >> RealView platform type (arm) + +# Menu: System Type >> S5PC110 Machines (arm) + +# Menu: System Type >> S5PV210 Machines (arm) + +# Menu: System Type >> SA11x0 Implementations (arm) + +# Menu: System Type >> SAMSUNG EXYNOS SoCs Support (arm) + +# Menu: System Type >> SAMSUNG S3C24XX SoCs Support (arm) + +# Menu: System Type >> ST SPEAr Family (arm) + +# Menu: System Type >> ST-Ericsson AB U300/U335 Platform (arm) + +# Menu: System Type >> STMicroelectronics Consumer Electronics SOCs with Device Trees (arm) + +# Menu: System Type >> SuperH / SH-Mobile Driver Options + +# Menu: System Type >> TI DaVinci Implementations (arm) + +# Menu: System Type >> TI OMAP Common Features (arm) + +# Menu: System Type >> TI OMAP1 specific features (arm) + +# Menu: System Type >> TI OMAP2/3/4 Specific Features (arm) + +# Menu: System Type >> Timer and clock configuration (arm) + +# Menu: System Type >> Use 8-bit SDHCI bus width (arm) + +# Menu: System Type >> Ux500 target platform (boards) (arm) + +# Menu: System Type >> Versatile platform type (arm) + +# Menu: System Type >> W90P910 Machines (arm) + +# Menu: Ubuntu Supplied Third-Party Device Drivers + +# Menu: Userspace binary formats +CONFIG_BINFMT_ELF y +CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS y +CONFIG_BINFMT_SCRIPT y +CONFIG_BINFMT_MISC y +CONFIG_COREDUMP y + +# Menu: Userspace binary formats (arm) + +# Menu: Virtualization +# Menu: Virtualization (arm) +# Menu: Virtualization (powerpc) +# Menu: Virtualization (x86) +CONFIG_VIRTUALIZATION y +CONFIG_KVM p policy<(arch powerpc &/ value y) | value m> +CONFIG_KVM_MMU_AUDIT n +CONFIG_KVM_DEVICE_ASSIGNMENT y +CONFIG_LGUEST n + +# 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 m> 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-3.13.0.orig/debian.master/config/arm64/config.common.arm64 +++ linux-3.13.0/debian.master/config/arm64/config.common.arm64 @@ -0,0 +1,272 @@ +# +# Config options for config.common.arm64 automatically generated by splitconfig.pl +# +CONFIG_64BIT=y +# CONFIG_AHCI_IMX is not set +CONFIG_AIC79XX_RESET_DELAY_MS=5000 +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_ARCH_PHYS_ADDR_T_64BIT=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCH_SPARSEMEM_DEFAULT=y +# CONFIG_ASYNC_TX_DMA is not set +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_ATA_PIIX=m +CONFIG_ATOMIC64_SELFTEST=y +CONFIG_BCH=m +# CONFIG_CC_STACKPROTECTOR is not set +CONFIG_CMDLINE="console=ttyAMA0" +CONFIG_COMEDI_ISA_DRIVERS=y +CONFIG_COMPACTION=y +CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y +# CONFIG_CPU_BIG_ENDIAN is not set +# CONFIG_DEBUG_MEMORY_INIT is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 +CONFIG_EXYNOS_VIDEO=y +# CONFIG_EZX_PCAP is not set +CONFIG_FB_ATY128=m +CONFIG_FB_BACKLIGHT=y +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +CONFIG_FB_DDC=m +# CONFIG_FB_MACMODES is not set +CONFIG_FB_RADEON=m +CONFIG_FB_SVGALIB=m +CONFIG_FB_SYS_COPYAREA=m +CONFIG_FB_SYS_FILLRECT=m +CONFIG_FB_SYS_FOPS=m +CONFIG_FB_SYS_IMAGEBLIT=m +# CONFIG_FB_UDL is not set +CONFIG_FB_VOODOO1=m +# CONFIG_FMAN_P1023 is not set +CONFIG_FMAN_P3040_P4080_P5020=y +# CONFIG_FONTS is not set +CONFIG_FORCE_MAX_ZONEORDER=11 +CONFIG_FRAME_WARN=1024 +CONFIG_FSL_FMAN=y +CONFIG_GENERIC_CSUM=y +CONFIG_GENERIC_PHY=y +CONFIG_GPIO_GENERIC=m +# CONFIG_GPIO_TWL6040 is not set +CONFIG_HAVE_64BIT_ALIGNED_ACCESS=y +# CONFIG_HAVE_AOUT is not set +# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_HUGETLB_PAGE=y +# CONFIG_HW_RANDOM_ATMEL is not set +CONFIG_HZ=100 +CONFIG_I2C_ALGOBIT=m +# CONFIG_IKCONFIG is not set +CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 +CONFIG_IMA=y +CONFIG_INFINIBAND_AMSO1100=m +# CONFIG_IOMMU_SUPPORT is not set +# CONFIG_IPMI_SI_PROBE_DEFAULTS is not set +# CONFIG_IRQ_DOMAIN_DEBUG is not set +# CONFIG_KSM is not set +CONFIG_KVM=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=m +CONFIG_LIBERTAS_MESH=y +# CONFIG_LIS3L02DQ is not set +CONFIG_LOG_BUF_SHIFT=14 +# CONFIG_MFD_TI_AM335X_TSCADC is not set +# 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_OF_PARTS=m +CONFIG_MTD_SM_COMMON=m +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NET_TULIP=y +CONFIG_NOP_USB_XCEIV=y +CONFIG_NO_HZ_IDLE=y +CONFIG_NR_CPUS=8 +CONFIG_PATA_SIS=y +CONFIG_PCIEPORTBUS=y +CONFIG_PCI_SYSCALL=y +CONFIG_PERCPU_TEST=m +CONFIG_PERSISTENT_KEYRINGS=y +CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_PHY_EXYNOS_DP_VIDEO=m +CONFIG_PMIC_ADP5520=y +CONFIG_PMIC_DA903X=y +CONFIG_PPS=m +CONFIG_PPS_CLIENT_GPIO=m +CONFIG_PPS_CLIENT_LDISC=m +CONFIG_PPS_CLIENT_PARPORT=m +# CONFIG_PREEMPT is not set +# CONFIG_PREEMPT_RCU 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_RBTREE_TEST=m +CONFIG_RCU_CPU_STALL_TIMEOUT=60 +CONFIG_RCU_FANOUT=64 +CONFIG_RCU_FAST_NO_HZ=y +# CONFIG_RCU_NOCB_CPU is not set +CONFIG_REED_SOLOMON=m +CONFIG_REGULATOR_FIXED_VOLTAGE=m +# CONFIG_REGULATOR_S2MPS11 is not set +CONFIG_REISERFS_FS=m +CONFIG_RFKILL=y +# CONFIG_RT2800USB_UNKNOWN is not set +# CONFIG_RT2X00_LIB_DEBUGFS is not set +CONFIG_RTC_DRV_DS3232=m +CONFIG_RTC_DRV_PL031=m +CONFIG_SAMSUNG_USB2PHY=m +CONFIG_SAMSUNG_USB3PHY=m +CONFIG_SATA_AHCI_PLATFORM=m +# CONFIG_SATA_HIGHBANK is not set +CONFIG_SATA_SVW=m +CONFIG_SCHED_AUTOGROUP=y +CONFIG_SCSI_SPI_ATTRS=m +CONFIG_SCSI_SRP_ATTRS=m +CONFIG_SENSORS_SCH56XX_COMMON=m +CONFIG_SERIAL_8250_PCI=m +# CONFIG_SERIAL_FSL_LPUART is not set +CONFIG_SERIAL_OF_PLATFORM=y +CONFIG_SERIO_ALTERA_PS2=m +CONFIG_SERIO_APBPS2=m +CONFIG_SERIO_ARC_PS2=m +# CONFIG_SERIO_I8042 is not set +CONFIG_SERIO_OLPC_APSP=m +CONFIG_SERIO_PARKBD=m +CONFIG_SERIO_PCIPS2=m +CONFIG_SERIO_PS2MULT=m +CONFIG_SERIO_RAW=m +CONFIG_SMC91X=y +# CONFIG_SOUND is not set +CONFIG_SPARSEMEM_MANUAL=y +CONFIG_SPI_PXA2XX_PCI=m +CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y +# CONFIG_SQUASHFS_DECOMP_SINGLE is not set +# CONFIG_SQUASHFS_FILE_CACHE is not set +CONFIG_SQUASHFS_FILE_DIRECT=y +CONFIG_SRAM=y +CONFIG_STAGING=y +CONFIG_STANDALONE=y +CONFIG_SUNRPC_DEBUG=y +CONFIG_SWIOTLB=y +CONFIG_SYSCTL_SYSCALL=y +CONFIG_SYS_HYPERVISOR=y +CONFIG_TEST_KSTRTOX=m +CONFIG_TEST_STRING_HELPERS=m +CONFIG_TICK_CPU_ACCOUNTING=y +CONFIG_TIGON3=m +CONFIG_TIMER_STATS=y +# CONFIG_TRANSPARENT_HUGEPAGE is not set +# CONFIG_TWL4030_CORE is not set +CONFIG_TWL6040_CORE=y +CONFIG_UIO_AEC=m +CONFIG_UIO_CIF=m +CONFIG_UIO_DMEM_GENIRQ=m +CONFIG_UIO_MF624=m +CONFIG_UIO_NETX=m +CONFIG_UIO_PDRV_GENIRQ=m +CONFIG_UIO_SERCOS3=m +CONFIG_UNUSED_SYMBOLS=y +CONFIG_USB_ADUTUX=m +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y +CONFIG_USB_APPLEDISPLAY=m +CONFIG_USB_C67X00_HCD=m +# CONFIG_USB_CATC is not set +CONFIG_USB_CHIPIDEA=m +CONFIG_USB_CYPRESS_CY7C63=m +CONFIG_USB_CYTHERM=m +CONFIG_USB_DWC3=m +CONFIG_USB_DWC3_OMAP=m +CONFIG_USB_DYNAMIC_MINORS=y +CONFIG_USB_EHCI_HCD_PLATFORM=m +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHSET_TEST_FIXTURE=m +CONFIG_USB_EMI26=m +CONFIG_USB_EMI62=m +CONFIG_USB_EZUSB_FX2=m +CONFIG_USB_FOTG210_HCD=m +CONFIG_USB_FTDI_ELAN=m +CONFIG_USB_FUSBH200_HCD=m +CONFIG_USB_GADGET=m +# CONFIG_USB_G_MULTI is not set +CONFIG_USB_HCD_BCMA=m +CONFIG_USB_HCD_SSB=m +CONFIG_USB_HSIC_USB3503=m +CONFIG_USB_IDMOUSE=m +CONFIG_USB_IOWARRIOR=m +# CONFIG_USB_IPHETH is not set +CONFIG_USB_ISIGHTFW=m +CONFIG_USB_ISP116X_HCD=m +CONFIG_USB_ISP1301=m +CONFIG_USB_ISP1362_HCD=m +CONFIG_USB_ISP1760_HCD=m +# CONFIG_USB_KAWETH is not set +CONFIG_USB_LCD=m +CONFIG_USB_LD=m +CONFIG_USB_LED=m +CONFIG_USB_LEGOTOWER=m +CONFIG_USB_MDC800=m +CONFIG_USB_MICROTEK=m +# CONFIG_USB_MUSB_HDRC is not set +CONFIG_USB_OHCI_HCD_PLATFORM=m +CONFIG_USB_OXU210HP_HCD=m +# CONFIG_USB_PEGASUS is not set +CONFIG_USB_PRINTER=m +CONFIG_USB_R8A66597_HCD=m +CONFIG_USB_RCAR_PHY=m +CONFIG_USB_RIO500=m +# CONFIG_USB_RTL8150 is not set +# CONFIG_USB_RTL8152 is not set +CONFIG_USB_SERIAL=m +CONFIG_USB_SEVSEG=m +CONFIG_USB_SISUSBVGA=m +CONFIG_USB_SL811_HCD=m +CONFIG_USB_STORAGE=m +CONFIG_USB_STORAGE_ALAUDA=m +CONFIG_USB_STORAGE_CYPRESS_ATACB=m +CONFIG_USB_STORAGE_DATAFAB=m +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_TEST=m +CONFIG_USB_TMC=m +CONFIG_USB_TRANCEVIBRATOR=m +CONFIG_USB_UHCI_HCD=y +CONFIG_USB_USS720=m +CONFIG_USB_WUSB_CBAF=m +CONFIG_USB_YUREX=m +CONFIG_VGASTATE=m +# CONFIG_VGA_CONSOLE is not set +CONFIG_VIRTIO=y +CONFIG_VIRTIO_BALLOON=y +CONFIG_VIRTIO_BLK=y +CONFIG_VIRTIO_CONSOLE=y +CONFIG_VIRTIO_MMIO=y +CONFIG_VIRTIO_NET=y +CONFIG_VIRTIO_PCI=m +CONFIG_WIL6210=m +CONFIG_WIMAX_GDM72XX_SDIO=y +# CONFIG_WIMAX_GDM72XX_USB is not set +CONFIG_XEN=y +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_ARMTHUMB=y +CONFIG_XZ_DEC_IA64=y +CONFIG_XZ_DEC_SPARC=y +CONFIG_XZ_DEC_TEST=m +CONFIG_XZ_DEC_X86=y +CONFIG_ZONE_DMA32=y +CONFIG_ZONE_DMA_FLAG=0 --- linux-3.13.0.orig/debian.master/config/arm64/config.flavour.generic +++ linux-3.13.0/debian.master/config/arm64/config.flavour.generic @@ -0,0 +1,3 @@ +# +# Config options for config.flavour.generic automatically generated by splitconfig.pl +# --- linux-3.13.0.orig/debian.master/config/armhf/config.common.armhf +++ linux-3.13.0/debian.master/config/armhf/config.common.armhf @@ -0,0 +1,284 @@ +# +# Config options for config.common.armhf automatically generated by splitconfig.pl +# +CONFIG_AIC79XX_RESET_DELAY_MS=5000 +# CONFIG_APM_EMULATION is not set +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set +# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set +CONFIG_ASYNC_TX_DMA=y +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_ATA_PIIX=y +# CONFIG_ATOMIC64_SELFTEST is not set +CONFIG_BATTERY_TWL4030_MADC=m +CONFIG_BCH=y +CONFIG_CC_STACKPROTECTOR=y +CONFIG_CMDLINE="" +CONFIG_COMEDI_ISA_DRIVERS=y +CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y +# CONFIG_CPU_BIG_ENDIAN is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y +CONFIG_CRASH_DUMP=y +# CONFIG_DEBUG_MEMORY_INIT is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 +CONFIG_EXYNOS_VIDEO=y +# CONFIG_EZX_PCAP is not set +CONFIG_FB_ATY128=m +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +# CONFIG_FB_MACMODES is not set +CONFIG_FB_RADEON=m +CONFIG_FB_SYS_COPYAREA=y +CONFIG_FB_SYS_FILLRECT=y +CONFIG_FB_SYS_FOPS=m +CONFIG_FB_SYS_IMAGEBLIT=y +CONFIG_FB_UDL=m +CONFIG_FB_VOODOO1=m +# CONFIG_FMAN_P1023 is not set +CONFIG_FMAN_P3040_P4080_P5020=y +CONFIG_FONTS=y +CONFIG_FRAME_WARN=1024 +CONFIG_FSL_FMAN=y +# CONFIG_FUNCTION_TRACER is not set +CONFIG_GPIO_TWL4030=y +# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set +# CONFIG_HAVE_AOUT is not set +# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +# CONFIG_HW_RANDOM_ATMEL is not set +CONFIG_HZ=250 +# CONFIG_HZ_100 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ_250=y +CONFIG_I2C_ALGOBIT=m +# CONFIG_IDE is not set +# CONFIG_IKCONFIG is not set +CONFIG_IMA=y +CONFIG_INFINIBAND_AMSO1100=m +CONFIG_IOMMU_SUPPORT=y +# CONFIG_IPMI_SI_PROBE_DEFAULTS is not set +# CONFIG_IRQ_DOMAIN_DEBUG is not set +# CONFIG_IRQ_FORCED_THREADING_DEFAULT is not set +# CONFIG_KSM is not set +CONFIG_KVM=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +# CONFIG_LIBERTAS_MESH is not set +# CONFIG_LIS3L02DQ is not set +CONFIG_LOG_BUF_SHIFT=17 +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_OF_PARTS=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NET_TULIP=y +CONFIG_NOP_USB_XCEIV=y +# CONFIG_NO_HZ_FULL is not set +CONFIG_NO_HZ_IDLE=y +CONFIG_NR_CPUS=4 +CONFIG_NVRAM=m +CONFIG_PAGE_OFFSET=0xC0000000 +CONFIG_PARIDE_EPATC8=y +CONFIG_PATA_SIS=y +# CONFIG_PCCARD is not set +CONFIG_PCIEPORTBUS=y +CONFIG_PERCPU_TEST=m +CONFIG_PERSISTENT_KEYRINGS=y +CONFIG_PHY_EXYNOS_DP_VIDEO=m +CONFIG_PMIC_ADP5520=y +CONFIG_PMIC_DA903X=y +CONFIG_PM_DEBUG=y +CONFIG_PM_RUNTIME=y +CONFIG_PM_WAKELOCKS=y +CONFIG_PPS=y +CONFIG_PPS_CLIENT_GPIO=m +CONFIG_PPS_CLIENT_LDISC=m +CONFIG_PPS_CLIENT_PARPORT=m +# CONFIG_PREEMPT is not set +# CONFIG_PREEMPT_RCU 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_RBTREE_TEST=m +CONFIG_RCU_CPU_STALL_TIMEOUT=60 +CONFIG_RCU_FANOUT=32 +CONFIG_RCU_FAST_NO_HZ=y +# CONFIG_RCU_NOCB_CPU is not set +# CONFIG_RCU_USER_QS is not set +CONFIG_REED_SOLOMON=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +# CONFIG_REGULATOR_S2MPS11 is not set +CONFIG_REISERFS_FS=m +CONFIG_RFKILL=y +# CONFIG_RT2800USB_UNKNOWN is not set +CONFIG_RT2X00_LIB_DEBUGFS=y +CONFIG_RTC_DRV_CMOS=m +CONFIG_RTC_DRV_DS3232=m +CONFIG_RTC_DRV_PL031=y +CONFIG_SAMSUNG_USB2PHY=m +CONFIG_SAMSUNG_USB3PHY=m +CONFIG_SATA_HIGHBANK=y +CONFIG_SATA_SVW=m +CONFIG_SCHED_AUTOGROUP=y +# CONFIG_SCHED_SMT is not set +CONFIG_SCSI_SPI_ATTRS=m +CONFIG_SCSI_SRP_ATTRS=m +CONFIG_SENSORS_SCH56XX_COMMON=m +CONFIG_SERIAL_8250_PCI=y +CONFIG_SERIAL_OF_PLATFORM=y +CONFIG_SERIO_ALTERA_PS2=m +CONFIG_SERIO_APBPS2=m +CONFIG_SERIO_ARC_PS2=m +CONFIG_SERIO_OLPC_APSP=m +CONFIG_SERIO_PARKBD=m +CONFIG_SERIO_PCIPS2=m +CONFIG_SERIO_PS2MULT=m +CONFIG_SERIO_RAW=m +CONFIG_SMC91X=m +CONFIG_SND=y +CONFIG_SND_COMPRESS_OFFLOAD=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_FSL_SSI=y +CONFIG_SND_SOC_I2C_AND_SPI=y +CONFIG_SND_TIMER=y +CONFIG_SOUND=y +CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y +# CONFIG_SQUASHFS_DECOMP_SINGLE is not set +# CONFIG_SQUASHFS_FILE_CACHE is not set +CONFIG_SQUASHFS_FILE_DIRECT=y +CONFIG_SRAM=y +# CONFIG_STACK_TRACER is not set +CONFIG_STAGING=y +CONFIG_STANDALONE=y +CONFIG_SUNRPC_DEBUG=y +CONFIG_SWIOTLB=y +CONFIG_SYSCTL_SYSCALL=y +# CONFIG_SYS_HYPERVISOR is not set +CONFIG_TEST_KSTRTOX=m +CONFIG_TEST_STRING_HELPERS=m +# CONFIG_TICK_CPU_ACCOUNTING is not set +CONFIG_TIGON3=m +CONFIG_TIMER_STATS=y +CONFIG_TRANSPARENT_HUGEPAGE=y +CONFIG_TWL4030_CORE=y +CONFIG_TWL6040_CORE=y +CONFIG_UIO_AEC=m +CONFIG_UIO_CIF=m +CONFIG_UIO_DMEM_GENIRQ=m +CONFIG_UIO_MF624=m +CONFIG_UIO_NETX=m +CONFIG_UIO_PDRV_GENIRQ=m +CONFIG_UIO_SERCOS3=m +CONFIG_UNUSED_SYMBOLS=y +CONFIG_USB_ADUTUX=m +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y +CONFIG_USB_APPLEDISPLAY=m +CONFIG_USB_C67X00_HCD=m +CONFIG_USB_CATC=m +CONFIG_USB_CHIPIDEA=y +CONFIG_USB_CYPRESS_CY7C63=m +CONFIG_USB_CYTHERM=m +CONFIG_USB_DWC3=m +CONFIG_USB_DYNAMIC_MINORS=y +# CONFIG_USB_EHCI_HCD_PLATFORM is not set +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHSET_TEST_FIXTURE=m +CONFIG_USB_EMI26=m +CONFIG_USB_EMI62=m +CONFIG_USB_EZUSB_FX2=m +CONFIG_USB_FOTG210_HCD=m +# CONFIG_USB_FSL_USB2 is not set +CONFIG_USB_FTDI_ELAN=m +CONFIG_USB_FUSBH200_HCD=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_HSIC_USB3503=m +CONFIG_USB_IDMOUSE=m +CONFIG_USB_IOWARRIOR=m +CONFIG_USB_IPHETH=m +CONFIG_USB_ISIGHTFW=m +CONFIG_USB_ISP116X_HCD=m +CONFIG_USB_ISP1301=m +CONFIG_USB_ISP1362_HCD=m +CONFIG_USB_ISP1760_HCD=m +CONFIG_USB_KAWETH=m +CONFIG_USB_LCD=m +CONFIG_USB_LD=m +CONFIG_USB_LED=m +CONFIG_USB_LEGOTOWER=m +CONFIG_USB_MDC800=m +CONFIG_USB_MICROTEK=m +# CONFIG_USB_MUSB_DSPS is not set +CONFIG_USB_MUSB_HDRC=y +# CONFIG_USB_MUSB_TUSB6010 is not set +# CONFIG_USB_OHCI_HCD_PLATFORM is not set +# CONFIG_USB_OTG is not set +CONFIG_USB_OXU210HP_HCD=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_PRINTER=m +CONFIG_USB_R8A66597_HCD=m +CONFIG_USB_RCAR_PHY=m +CONFIG_USB_RIO500=m +CONFIG_USB_RTL8150=m +CONFIG_USB_RTL8152=m +CONFIG_USB_SERIAL=m +CONFIG_USB_SEVSEG=m +CONFIG_USB_SISUSBVGA=m +CONFIG_USB_SL811_HCD=m +CONFIG_USB_STORAGE=y +CONFIG_USB_STORAGE_ALAUDA=m +CONFIG_USB_STORAGE_CYPRESS_ATACB=m +CONFIG_USB_STORAGE_DATAFAB=m +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_TEST=m +CONFIG_USB_TMC=m +CONFIG_USB_TRANCEVIBRATOR=m +CONFIG_USB_UHCI_HCD=y +CONFIG_USB_USS720=m +CONFIG_USB_WUSB_CBAF=m +CONFIG_USB_YUREX=m +# CONFIG_VFIO_IOMMU_TYPE1 is not set +CONFIG_VIRTIO=y +CONFIG_VIRTIO_BALLOON=y +CONFIG_VIRTIO_BLK=y +CONFIG_VIRTIO_CONSOLE=y +CONFIG_VIRTIO_MMIO=y +CONFIG_VIRTIO_NET=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRT_CPU_ACCOUNTING_GEN=y +# CONFIG_WIL6210 is not set +# CONFIG_WIMAX_GDM72XX_SDIO is not set +CONFIG_WIMAX_GDM72XX_USB=y +# CONFIG_XEN is not set +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_ARMTHUMB=y +CONFIG_XZ_DEC_IA64=y +CONFIG_XZ_DEC_SPARC=y +CONFIG_XZ_DEC_TEST=m +CONFIG_XZ_DEC_X86=y +CONFIG_ZONE_DMA_FLAG=1 --- linux-3.13.0.orig/debian.master/config/armhf/config.flavour.generic +++ linux-3.13.0/debian.master/config/armhf/config.flavour.generic @@ -0,0 +1,38 @@ +# +# Config options for config.flavour.generic automatically generated by splitconfig.pl +# +CONFIG_AC97_BUS=y +CONFIG_AHCI_IMX=y +CONFIG_ARCH_MXC=y +CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED=y +CONFIG_ARCH_NR_GPIO=1024 +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_LPAE is not set +# CONFIG_COMPACTION is not set +# CONFIG_CPU_IDLE is not set +CONFIG_DRM_TILCDC=m +CONFIG_FB_BACKLIGHT=y +CONFIG_FB_DDC=m +CONFIG_FB_SVGALIB=m +CONFIG_FORCE_MAX_ZONEORDER=12 +CONFIG_GENERIC_PHY=y +CONFIG_GPIO_GENERIC=y +CONFIG_GPIO_TWL6040=y +# CONFIG_HUGETLB_PAGE is not set +CONFIG_MFD_TI_AM335X_TSCADC=m +CONFIG_MTD_SM_COMMON=m +# CONFIG_MUSB_PIO_ONLY is not set +CONFIG_PCI_SYSCALL=y +# CONFIG_PHYS_ADDR_T_64BIT is not set +CONFIG_SATA_AHCI_PLATFORM=y +CONFIG_SERIAL_FSL_LPUART=m +CONFIG_SND_EMU10K1_SEQ=m +CONFIG_SND_OPL3_LIB_SEQ=m +CONFIG_SOC_AM33XX=y +CONFIG_SPI_PXA2XX_PCI=m +CONFIG_USB_DWC3_OMAP=m +CONFIG_VGASTATE=m --- linux-3.13.0.orig/debian.master/config/armhf/config.flavour.generic-lpae +++ linux-3.13.0/debian.master/config/armhf/config.flavour.generic-lpae @@ -0,0 +1,38 @@ +# +# Config options for config.flavour.generic-lpae automatically generated by splitconfig.pl +# +CONFIG_AC97_BUS=m +# CONFIG_AHCI_IMX is not set +# CONFIG_ARCH_MXC is not set +# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set +CONFIG_ARCH_NR_GPIO=0 +# 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_LPAE=y +CONFIG_COMPACTION=y +CONFIG_CPU_IDLE=y +# CONFIG_DRM_TILCDC is not set +# CONFIG_FB_BACKLIGHT is not set +# CONFIG_FB_DDC is not set +# CONFIG_FB_SVGALIB is not set +CONFIG_FORCE_MAX_ZONEORDER=11 +CONFIG_GENERIC_PHY=m +CONFIG_GPIO_GENERIC=m +CONFIG_GPIO_TWL6040=m +CONFIG_HUGETLB_PAGE=y +# CONFIG_MFD_TI_AM335X_TSCADC is not set +# CONFIG_MTD_SM_COMMON is not set +CONFIG_MUSB_PIO_ONLY=y +# CONFIG_PCI_SYSCALL is not set +CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_SATA_AHCI_PLATFORM=m +# CONFIG_SERIAL_FSL_LPUART is not set +# CONFIG_SND_EMU10K1_SEQ is not set +# CONFIG_SND_OPL3_LIB_SEQ is not set +# CONFIG_SOC_AM33XX is not set +# CONFIG_SPI_PXA2XX_PCI is not set +# CONFIG_USB_DWC3_OMAP is not set +# CONFIG_VGASTATE is not set --- linux-3.13.0.orig/debian.master/config/config.common.ports +++ linux-3.13.0/debian.master/config/config.common.ports @@ -0,0 +1,3 @@ +# +# Common config options automatically generated by splitconfig.pl +# --- linux-3.13.0.orig/debian.master/config/config.common.ubuntu +++ linux-3.13.0/debian.master/config/config.common.ubuntu @@ -0,0 +1,7510 @@ +# +# 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_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_88EU_AP_MODE=y +CONFIG_88EU_P2P=y +CONFIG_9P_FS=m +# CONFIG_9P_FSCACHE is not set +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=y +# CONFIG_ACORN_PARTITION_ADFS is not set +# CONFIG_ACORN_PARTITION_CUMANA is not set +# CONFIG_ACORN_PARTITION_EESOX is not set +CONFIG_ACORN_PARTITION_ICS=y +# CONFIG_ACORN_PARTITION_POWERTEC is not set +CONFIG_ACORN_PARTITION_RISCIX=y +CONFIG_ACPI=y +CONFIG_ACPI_AC=y +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_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_HED=y +CONFIG_ACPI_HOTPLUG_CPU=y +CONFIG_ACPI_HOTPLUG_MEMORY=y +# CONFIG_ACPI_INITRD_TABLE_OVERRIDE is not set +CONFIG_ACPI_IPMI=m +CONFIG_ACPI_NUMA=y +CONFIG_ACPI_PCI_SLOT=y +CONFIG_ACPI_PROCESSOR=y +CONFIG_ACPI_PROCESSOR_AGGREGATOR=m +CONFIG_ACPI_PROCFS_POWER=y +CONFIG_ACPI_QUICKSTART=m +CONFIG_ACPI_SBS=m +CONFIG_ACPI_SLEEP=y +CONFIG_ACPI_THERMAL=y +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_AD5930=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_AD799X_RING_BUFFER=y +CONFIG_AD8366=m +CONFIG_AD9523=m +CONFIG_AD9832=m +CONFIG_AD9834=m +CONFIG_AD9850=m +CONFIG_AD9852=m +CONFIG_AD9910=m +CONFIG_AD9951=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_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 is not set +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_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_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=15000 +# CONFIG_AIC94XX_DEBUG is not set +CONFIG_AIO=y +CONFIG_AIRO=m +CONFIG_AIRO_CS=m +CONFIG_AIX_PARTITION=y +CONFIG_AK8975=m +CONFIG_ALIGNMENT_TRAP=y +CONFIG_ALIM1535_WDT=m +CONFIG_ALIM7101_WDT=m +CONFIG_ALIX=y +CONFIG_ALI_FIR=m +CONFIG_ALTERA_STAPL=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=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_AR5523=m +# CONFIG_ARCH_AT91 is not set +# CONFIG_ARCH_BCM is not set +CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=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_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 is not set +CONFIG_ARCH_FLATMEM_ENABLE=y +# CONFIG_ARCH_FOOTBRIDGE 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_CPUFREQ=y +CONFIG_ARCH_HAS_CPU_AUTOPROBE=y +CONFIG_ARCH_HAS_CPU_RELAX=y +CONFIG_ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS=y +CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y +CONFIG_ARCH_HAS_ILOG2_U32=y +CONFIG_ARCH_HAS_ILOG2_U64=y +CONFIG_ARCH_HAS_OPP=y +CONFIG_ARCH_HAS_RESET_CONTROLLER=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_HIBERNATION_HEADER=y +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_ARCH_HIGHBANK=y +# CONFIG_ARCH_INTEGRATOR is not set +# 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_KIRKWOOD is not set +# CONFIG_ARCH_KS8695 is not set +# CONFIG_ARCH_LPC32XX is not set +CONFIG_ARCH_MAY_HAVE_PC_FDC=y +CONFIG_ARCH_MEMORY_PROBE=y +CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y +# CONFIG_ARCH_MMP is not set +# CONFIG_ARCH_MSM is not set +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 is not set +# CONFIG_ARCH_NETX is not set +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_REALVIEW is not set +CONFIG_ARCH_REQUIRE_GPIOLIB=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_S5P64X0 is not set +# CONFIG_ARCH_S5PC100 is not set +# CONFIG_ARCH_S5PV210 is not set +# CONFIG_ARCH_SA1100 is not set +# CONFIG_ARCH_SHMOBILE 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_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_INT128=y +CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y +CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y +CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=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_U8500 is not set +CONFIG_ARCH_USES_NUMA_PROT_NONE=y +CONFIG_ARCH_USES_PG_UNCACHED=y +CONFIG_ARCH_USE_BUILTIN_BSWAP=y +CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y +# CONFIG_ARCH_VERSATILE is not set +CONFIG_ARCH_VEXPRESS=y +CONFIG_ARCH_VEXPRESS_CA9X4=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_FREEZER_CONTROL=y +CONFIG_ARCH_WANTS_PROT_NUMA_PROT_NONE=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_ZYNQ is not set +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_ARM=y +CONFIG_ARM64=y +# CONFIG_ARM64_64K_PAGES is not set +CONFIG_ARM64_ERRATUM_843419=y +CONFIG_ARM_AMBA=y +CONFIG_ARM_APPENDED_DTB=y +CONFIG_ARM_ARCH_TIMER=y +CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y +CONFIG_ARM_AT91_ETHER=m +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_CHARLCD=y +CONFIG_ARM_CPU_SUSPEND=y +CONFIG_ARM_CPU_TOPOLOGY=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_GIC=y +CONFIG_ARM_HAS_SG_CHAIN=y +CONFIG_ARM_HIGHBANK_CPUFREQ=y +CONFIG_ARM_HIGHBANK_CPUIDLE=y +CONFIG_ARM_IMX6Q_CPUFREQ=m +# 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_NR_BANKS=8 +CONFIG_ARM_OMAP2PLUS_CPUFREQ=y +CONFIG_ARM_PATCH_PHYS_VIRT=y +CONFIG_ARM_PSCI=y +# CONFIG_ARM_SMMU is not set +CONFIG_ARM_SP805_WATCHDOG=m +CONFIG_ARM_TEGRA_CPUFREQ=y +CONFIG_ARM_THUMB=y +# CONFIG_ARM_THUMBEE is not set +CONFIG_ARM_TIMER_SP804=y +CONFIG_ARM_UNWIND=y +CONFIG_ARM_VEXPRESS_SPC_CPUFREQ=m +CONFIG_ARM_VIRT_EXT=y +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_ENABLE_CHANNEL_SWITCH=y +CONFIG_ASYNC_XOR=m +CONFIG_AT76C50X_USB=m +CONFIG_AT803X_PHY=y +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_GENERIC=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_COMMON=m +CONFIG_ATH9K_DEBUGFS=y +CONFIG_ATH9K_HTC=m +CONFIG_ATH9K_HTC_DEBUGFS=y +CONFIG_ATH9K_HW=m +CONFIG_ATH9K_LEGACY_RATE_CONTROL=y +CONFIG_ATH9K_PCI=y +CONFIG_ATH9K_RFKILL=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_PWM=m +CONFIG_ATMEL_SSC=m +CONFIG_ATM_AMBASSADOR=m +# CONFIG_ATM_AMBASSADOR_DEBUG is not set +CONFIG_ATM_BR2684=m +# CONFIG_ATM_BR2684_IPFILTER is not set +CONFIG_ATM_CLIP=m +# CONFIG_ATM_CLIP_NO_ICMP is not set +CONFIG_ATM_DRIVERS=y +CONFIG_ATM_DUMMY=m +CONFIG_ATM_ENI=m +# CONFIG_ATM_ENI_DEBUG is not set +# CONFIG_ATM_ENI_TUNE_BURST is not set +CONFIG_ATM_FIRESTREAM=m +CONFIG_ATM_FORE200E=m +CONFIG_ATM_FORE200E_DEBUG=0 +CONFIG_ATM_FORE200E_TX_RETRY=16 +# CONFIG_ATM_FORE200E_USE_TASKLET is not set +CONFIG_ATM_HE=m +CONFIG_ATM_HE_USE_SUNI=y +CONFIG_ATM_HORIZON=m +# CONFIG_ATM_HORIZON_DEBUG is not set +CONFIG_ATM_IA=m +# CONFIG_ATM_IA_DEBUG is not set +CONFIG_ATM_IDT77252=m +# CONFIG_ATM_IDT77252_DEBUG is not set +# CONFIG_ATM_IDT77252_RCV_ALL is not set +CONFIG_ATM_IDT77252_USE_SUNI=y +CONFIG_ATM_LANAI=m +CONFIG_ATM_LANE=m +CONFIG_ATM_MPOA=m +CONFIG_ATM_NICSTAR=m +# CONFIG_ATM_NICSTAR_USE_IDT77105 is not set +# CONFIG_ATM_NICSTAR_USE_SUNI is not set +CONFIG_ATM_SOLOS=m +CONFIG_ATM_TCP=m +CONFIG_ATM_ZATM=m +# CONFIG_ATM_ZATM_DEBUG is not set +CONFIG_ATP=m +CONFIG_AUDIT=y +CONFIG_AUDITSYSCALL=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=y +CONFIG_AUFS_BR_HFSPLUS=y +CONFIG_AUFS_BR_RAMFS=y +# CONFIG_AUFS_DEBUG is not set +CONFIG_AUFS_EXPORT=y +CONFIG_AUFS_FS=m +# CONFIG_AUFS_HNOTIFY is not set +CONFIG_AUFS_INO_T_64=y +CONFIG_AUFS_POLL=y +# CONFIG_AUFS_RDU is not set +CONFIG_AUFS_SBILIST=y +# CONFIG_AUFS_SHWH is not set +# CONFIG_AUFS_SP_IATTR 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_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_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_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_ATMEL_PWM=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_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_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_INTEL_MID=m +CONFIG_BATTERY_MAX17040=m +CONFIG_BATTERY_MAX17042=m +CONFIG_BATTERY_PMU=m +CONFIG_BATTERY_RX51=m +CONFIG_BATTERY_SBS=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_BCM87XX_PHY=y +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_PCI=y +CONFIG_BCMA_HOST_PCI_POSSIBLE=y +CONFIG_BCMA_HOST_SOC=y +CONFIG_BCMA_POSSIBLE=y +CONFIG_BCM_WIMAX=m +# CONFIG_BDI_SWITCH is not set +CONFIG_BE2ISCSI=m +CONFIG_BE2NET=m +# CONFIG_BEFS_DEBUG is not set +CONFIG_BEFS_FS=m +CONFIG_BFS_FS=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_AEC62XX is not set +# CONFIG_BLK_DEV_ALI15X3 is not set +CONFIG_BLK_DEV_AMD74XX=y +CONFIG_BLK_DEV_BSG=y +CONFIG_BLK_DEV_BSGLIB=y +# CONFIG_BLK_DEV_CMD64X is not set +# CONFIG_BLK_DEV_COW_COMMON is not set +CONFIG_BLK_DEV_CRYPTOLOOP=m +# CONFIG_BLK_DEV_CS5520 is not set +# CONFIG_BLK_DEV_CS5530 is not set +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_GENERIC=y +# CONFIG_BLK_DEV_HD is not set +# CONFIG_BLK_DEV_HPT366 is not set +CONFIG_BLK_DEV_IDECD=y +CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y +CONFIG_BLK_DEV_IDEDMA=y +CONFIG_BLK_DEV_IDEDMA_PCI=y +CONFIG_BLK_DEV_IDEDMA_SFF=y +CONFIG_BLK_DEV_IDEPCI=y +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDE_SATA is not set +CONFIG_BLK_DEV_INITRD=y +CONFIG_BLK_DEV_INTEGRITY=y +CONFIG_BLK_DEV_IO_TRACE=y +# CONFIG_BLK_DEV_IT8172 is not set +# CONFIG_BLK_DEV_IT8213 is not set +# CONFIG_BLK_DEV_IT821X is not set +# CONFIG_BLK_DEV_JMICRON is not set +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_NS87415 is not set +CONFIG_BLK_DEV_NULL_BLK=m +CONFIG_BLK_DEV_NVME=m +# CONFIG_BLK_DEV_OFFBOARD is not set +# CONFIG_BLK_DEV_OPTI621 is not set +CONFIG_BLK_DEV_OSD=m +CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m +# CONFIG_BLK_DEV_PDC202XX_NEW is not set +# CONFIG_BLK_DEV_PDC202XX_OLD is not set +# CONFIG_BLK_DEV_PIIX is not set +# CONFIG_BLK_DEV_PLATFORM is not set +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_RSXX=m +# CONFIG_BLK_DEV_SC1200 is not set +CONFIG_BLK_DEV_SD=y +# CONFIG_BLK_DEV_SIIMAGE is not set +CONFIG_BLK_DEV_SKD=m +# CONFIG_BLK_DEV_SL82C105 is not set +# CONFIG_BLK_DEV_SLC90E66 is not set +CONFIG_BLK_DEV_SR=y +# CONFIG_BLK_DEV_SR_VENDOR is not set +# CONFIG_BLK_DEV_SVWKS is not set +CONFIG_BLK_DEV_SX8=m +# CONFIG_BLK_DEV_TC86C001 is not set +CONFIG_BLK_DEV_THROTTLING=y +# CONFIG_BLK_DEV_TRIFLEX is not set +# CONFIG_BLK_DEV_TRM290 is not set +CONFIG_BLK_DEV_UMEM=m +# CONFIG_BLK_DEV_VIA82CXXX is not set +# CONFIG_BLK_DEV_XIP is not set +CONFIG_BLOCK=y +CONFIG_BLOCK_COMPAT=y +CONFIG_BL_SWITCHER=y +CONFIG_BL_SWITCHER_DUMMY_IF=m +CONFIG_BMA180=m +CONFIG_BMAC=m +CONFIG_BMP085=m +CONFIG_BMP085_I2C=m +CONFIG_BMP085_SPI=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=m +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_BPCTL=m +CONFIG_BPF_JIT=y +CONFIG_BPQETHER=m +CONFIG_BQL=y +CONFIG_BRANCH_PROFILE_NONE=y +# CONFIG_BRCMDBG is not set +CONFIG_BRCMFMAC=m +CONFIG_BRCMFMAC_SDIO=y +CONFIG_BRCMFMAC_USB=y +CONFIG_BRCMSMAC=m +CONFIG_BRCMUTIL=m +CONFIG_BRCM_TRACING=y +CONFIG_BRIDGE=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_IP6=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_NFLOG=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +# CONFIG_BRIDGE_EBT_ULOG is not set +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_IGMP_SNOOPING=y +CONFIG_BRIDGE_NETFILTER=y +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BRIDGE_VLAN_FILTERING=y +CONFIG_BROADCOM_PHY=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_BT_ATH3K=m +CONFIG_BT_BNEP=m +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y +CONFIG_BT_CMTP=m +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_HCIDTL1=m +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_3WIRE=y +CONFIG_BT_HCIUART_ATH3K=y +CONFIG_BT_HCIUART_BCSP=y +CONFIG_BT_HCIUART_H4=y +CONFIG_BT_HCIUART_LL=y +CONFIG_BT_HCIVHCI=m +CONFIG_BT_HIDP=m +CONFIG_BT_MRVL=m +CONFIG_BT_MRVL_SDIO=m +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_WILINK=m +CONFIG_BUG=y +CONFIG_BUILDTIME_EXTABLE_SORT=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_L2X0=y +CONFIG_CACHE_PL310=y +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_AT91=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_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_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_SJA1000=m +CONFIG_CAN_SJA1000_ISA=m +CONFIG_CAN_SJA1000_OF_PLATFORM=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_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_CB710_CORE=m +# CONFIG_CB710_DEBUG is not set +CONFIG_CB710_DEBUG_ASSUMPTIONS=y +CONFIG_CBE_CPUFREQ_SPU_GOVERNOR=m +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +# 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_CED1401=m +# CONFIG_CELL_CPU is not set +CONFIG_CEPH_FS=m +CONFIG_CEPH_FSCACHE=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_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_PERF=y +CONFIG_CGROUP_SCHED=y +CONFIG_CHARGER_88PM860X=m +CONFIG_CHARGER_BQ2415X=m +CONFIG_CHARGER_BQ24190=m +CONFIG_CHARGER_BQ24735=m +CONFIG_CHARGER_GPIO=m +CONFIG_CHARGER_ISP1704=m +CONFIG_CHARGER_LP8727=m +CONFIG_CHARGER_LP8788=m +CONFIG_CHARGER_MANAGER=y +CONFIG_CHARGER_MAX8903=m +CONFIG_CHARGER_MAX8997=m +CONFIG_CHARGER_MAX8998=m +CONFIG_CHARGER_PCF50633=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_CHROMEOS_LAPTOP=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=y +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_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_I8253=y +CONFIG_CLKSRC_MMIO=y +CONFIG_CLKSRC_OF=y +CONFIG_CLK_PPC_CORENET=y +CONFIG_CLK_TWL6040=m +CONFIG_CLOCKSOURCE_WATCHDOG=y +CONFIG_CLONE_BACKWARDS=y +CONFIG_CLS_U32_MARK=y +# CONFIG_CLS_U32_PERF is not set +CONFIG_CLZ_TAB=y +CONFIG_CM36651=m +CONFIG_CMA=y +CONFIG_CMA_ALIGNMENT=8 +CONFIG_CMA_AREAS=7 +# CONFIG_CMA_DEBUG 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_BOOL is not set +# CONFIG_CMDLINE_FORCE is not set +CONFIG_CMDLINE_PARTITION=y +CONFIG_CMM=y +CONFIG_CNIC=m +CONFIG_CODA_FS=m +CONFIG_COMEDI=m +CONFIG_COMEDI_8255=m +CONFIG_COMEDI_8255_PCI=m +CONFIG_COMEDI_ADDI_APCI_035=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_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_FC=m +CONFIG_COMEDI_FL512=m +CONFIG_COMEDI_GSC_HPDI=m +CONFIG_COMEDI_ICP_MULTI=m +CONFIG_COMEDI_II_PCI20KC=m +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_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_PARPORT=m +CONFIG_COMEDI_PCI_DRIVERS=y +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=y +CONFIG_COMEDI_PCMDA12=m +CONFIG_COMEDI_PCMMIO=m +CONFIG_COMEDI_PCMUIO=m +CONFIG_COMEDI_POC=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_SKEL=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=y +CONFIG_COMEDI_VMK80XX=m +CONFIG_COMMON_CLK=y +# CONFIG_COMMON_CLK_DEBUG is not set +CONFIG_COMMON_CLK_MAX77686=m +CONFIG_COMMON_CLK_S2MPS11=m +CONFIG_COMMON_CLK_SI5351=m +CONFIG_COMMON_CLK_VERSATILE=y +CONFIG_COMMON_CLK_WM831X=m +CONFIG_COMMON_CLK_XGENE=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_CONTEXT_TRACKING=y +# CONFIG_CONTEXT_TRACKING_FORCE is not set +CONFIG_COPS=m +CONFIG_COPS_DAYNA=y +CONFIG_COPS_TANGENT=y +CONFIG_CORDIC=m +CONFIG_COREDUMP=y +CONFIG_CORENET_GENERIC=y +CONFIG_COSA=m +# CONFIG_CPA_DEBUG is not set +CONFIG_CPM=y +CONFIG_CPM2=y +CONFIG_CPU5_WDT=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_DCACHE_DISABLE is not set +CONFIG_CPU_FREQ=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set +# 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_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_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_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_ARM_BS=m +CONFIG_CRYPTO_AES_NI_INTEL=m +CONFIG_CRYPTO_AES_X86_64=m +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_CMAC=m +CONFIG_CRYPTO_CRC32=m +CONFIG_CRYPTO_CRC32C=y +CONFIG_CRYPTO_CRC32C_INTEL=y +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_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_NX=y +CONFIG_CRYPTO_DEV_NX_COMPRESS=m +CONFIG_CRYPTO_DEV_NX_ENCRYPT=m +CONFIG_CRYPTO_DEV_OMAP_AES=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_SAHARA=m +CONFIG_CRYPTO_DEV_TALITOS=m +CONFIG_CRYPTO_DEV_TEGRA_AES=m +CONFIG_CRYPTO_ECB=y +CONFIG_CRYPTO_FCRYPT=m +CONFIG_CRYPTO_GCM=m +CONFIG_CRYPTO_GF128MUL=m +CONFIG_CRYPTO_GHASH=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_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_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_RMD128=m +CONFIG_CRYPTO_RMD160=m +CONFIG_CRYPTO_RMD256=m +CONFIG_CRYPTO_RMD320=m +CONFIG_CRYPTO_RNG=y +CONFIG_CRYPTO_RNG2=y +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_PPC=m +CONFIG_CRYPTO_SHA1_SSSE3=m +CONFIG_CRYPTO_SHA256=y +CONFIG_CRYPTO_SHA256_SSSE3=m +CONFIG_CRYPTO_SHA512=y +CONFIG_CRYPTO_SHA512_SSSE3=m +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_HASH=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_CRYSTALHD=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_CXT1E1=m +CONFIG_CYCLADES=m +CONFIG_CYPRESS_FIRMWARE=m +# CONFIG_CYZ_INTR is not set +CONFIG_DA9052_WATCHDOG=m +CONFIG_DA9055_WATCHDOG=m +CONFIG_DAVICOM_PHY=y +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_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_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_REDUCED 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_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_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_TLBFLUSH is not set +# CONFIG_DEBUG_UART_8250 is not set +# CONFIG_DEBUG_UART_PL01X is not set +# CONFIG_DEBUG_USER is not set +# CONFIG_DEBUG_VIRTUAL is not set +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_WRITECOUNT 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_MESSAGE_LOGLEVEL=4 +# 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_DEFXX=m +# CONFIG_DEFXX_MMIO is not set +CONFIG_DELL_LAPTOP=m +CONFIG_DELL_RBU=m +CONFIG_DELL_WMI=m +CONFIG_DELL_WMI_AIO=m +# 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_DEVPORT=y +CONFIG_DEVPTS_MULTIPLE_INSTANCES=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_DEV_APPLETALK=m +CONFIG_DE_AOC=y +CONFIG_DGAP=m +CONFIG_DGNC=m +CONFIG_DGRP=m +CONFIG_DIRECT_GBPAGES=y +CONFIG_DISPLAY_CONNECTOR_ANALOG_TV=m +CONFIG_DISPLAY_CONNECTOR_DVI=m +CONFIG_DISPLAY_CONNECTOR_HDMI=y +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=y +CONFIG_DMA_ENGINE=y +CONFIG_DMA_ENGINE_RAID=y +CONFIG_DMA_OF=y +CONFIG_DMA_OMAP=y +CONFIG_DMA_SHARED_BUFFER=y +CONFIG_DMA_VIRTUAL_CHANNELS=y +CONFIG_DMI=y +CONFIG_DMIID=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_CRYPT=m +# CONFIG_DM_DEBUG is not set +# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set +CONFIG_DM_DELAY=m +CONFIG_DM_FLAKEY=m +CONFIG_DM_LOG_USERSPACE=m +CONFIG_DM_MIRROR=m +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_DPA=y +# CONFIG_DPAA_ETH_UNIT_TESTS is not set +CONFIG_DPA_MAX_FRM_SIZE=1522 +CONFIG_DPA_OFFLINE_PORTS=y +# 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_ARMADA=m +CONFIG_DRM_AST=m +CONFIG_DRM_CIRRUS_QEMU=m +# CONFIG_DRM_EXYNOS is not set +CONFIG_DRM_GEM_CMA_HELPER=y +CONFIG_DRM_GMA3600=y +CONFIG_DRM_GMA500=m +CONFIG_DRM_GMA600=y +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_BDW=m +CONFIG_DRM_I915_FBDEV=y +CONFIG_DRM_I915_KMS=y +CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT=y +# CONFIG_DRM_I915_UMS is not set +# CONFIG_DRM_IMX is not set +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 is not set +CONFIG_DRM_MGA=m +# CONFIG_DRM_MGAG200 is not set +CONFIG_DRM_NOUVEAU=m +CONFIG_DRM_NOUVEAU_BACKLIGHT=y +CONFIG_DRM_OMAP=m +CONFIG_DRM_OMAP_NUM_CRTCS=1 +CONFIG_DRM_QXL=m +CONFIG_DRM_R128=m +CONFIG_DRM_RADEON=m +CONFIG_DRM_RADEON_UMS=y +CONFIG_DRM_RCAR_DU=m +CONFIG_DRM_RCAR_LVDS=y +CONFIG_DRM_SAVAGE=m +CONFIG_DRM_SHMOBILE=m +CONFIG_DRM_SIS=m +CONFIG_DRM_TDFX=m +# CONFIG_DRM_TEGRA is not set +CONFIG_DRM_TTM=m +CONFIG_DRM_UDL=m +CONFIG_DRM_USB=m +CONFIG_DRM_VIA=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_DT3155_CCIR is not set +CONFIG_DT3155_STREAMING=y +CONFIG_DTC=y +CONFIG_DTL=y +CONFIG_DTLK=m +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_ATBM8830=m +CONFIG_DVB_AU8522=m +CONFIG_DVB_AU8522_DTV=m +CONFIG_DVB_AU8522_V4L=m +CONFIG_DVB_AV7110=m +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_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_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_IT913X_FE=m +CONFIG_DVB_IX2505V=m +CONFIG_DVB_L64781=m +CONFIG_DVB_LG2160=m +CONFIG_DVB_LGDT3305=m +CONFIG_DVB_LGDT330X=m +CONFIG_DVB_LGS8GXX=m +CONFIG_DVB_LNBP21=m +CONFIG_DVB_LNBP22=m +CONFIG_DVB_M88RS2000=m +CONFIG_DVB_MANTIS=m +CONFIG_DVB_MAX_ADAPTERS=8 +CONFIG_DVB_MB86A16=m +CONFIG_DVB_MB86A20S=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_RTL2830=m +CONFIG_DVB_RTL2832=m +CONFIG_DVB_S5H1409=m +CONFIG_DVB_S5H1411=m +CONFIG_DVB_S5H1420=m +CONFIG_DVB_S921=m +CONFIG_DVB_SI21XX=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_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_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_IT913X=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_DW_APB_TIMER=y +CONFIG_DW_DMAC=m +CONFIG_DW_DMAC_CORE=m +CONFIG_DW_DMAC_PCI=m +CONFIG_DW_WATCHDOG=m +CONFIG_DX_SEP=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_EARLY_PRINTK_INTEL_MID=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_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_LEGACY_SYSFS=y +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_X38=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_PARAMS_FROM_FDT=y +CONFIG_EFI_PARTITION=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_EMBEDDED is not set +CONFIG_EM_TIMER_STI=y +# 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_HMAC_VERSION=2 +# 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_FS=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_GPIO=m +CONFIG_EXTCON_MAX77693=m +CONFIG_EXTCON_MAX8997=m +CONFIG_EXTCON_PALMAS=m +CONFIG_EXTRA_FIRMWARE="" +CONFIG_EXTRA_TARGETS="" +CONFIG_EXYNOS_ADC=y +# CONFIG_F2FS_CHECK_FS is not set +CONFIG_F2FS_FS=m +CONFIG_F2FS_FS_POSIX_ACL=y +CONFIG_F2FS_FS_SECURITY=y +CONFIG_F2FS_FS_XATTR=y +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 is not set +CONFIG_FB=y +CONFIG_FB_3DFX=m +CONFIG_FB_3DFX_ACCEL=y +CONFIG_FB_3DFX_I2C=y +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_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_CFB_REV_PIXELS_IN_BYTE is not set +CONFIG_FB_CIRRUS=m +CONFIG_FB_CONTROL=y +CONFIG_FB_CT65550=y +CONFIG_FB_CYBER2000=m +CONFIG_FB_CYBER2000_DDC=y +# CONFIG_FB_DA8XX is not set +CONFIG_FB_DEFERRED_IO=y +CONFIG_FB_EFI=y +# 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_GOLDFISH=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_INTEL=m +# CONFIG_FB_INTEL_DEBUG is not set +# CONFIG_FB_INTEL_I2C is not set +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_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 is not set +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_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_S3_DDC=y +CONFIG_FB_SAVAGE=m +# CONFIG_FB_SAVAGE_ACCEL is not set +CONFIG_FB_SAVAGE_I2C=y +CONFIG_FB_SIMPLE=y +CONFIG_FB_SIS=m +CONFIG_FB_SIS_300=y +CONFIG_FB_SIS_315=y +CONFIG_FB_SM501=m +CONFIG_FB_SM7XX=m +CONFIG_FB_SMSCUFX=m +CONFIG_FB_SSD1307=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_FHANDLE=y +CONFIG_FIB_RULES=y +CONFIG_FILE_LOCKING=y +CONFIG_FIREWIRE=m +CONFIG_FIREWIRE_NET=m +CONFIG_FIREWIRE_NOSY=m +CONFIG_FIREWIRE_OHCI=m +# CONFIG_FIREWIRE_OHCI_REMOTE_DMA is not set +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=y +CONFIG_FLAT_NODE_MEM_MAP=y +# CONFIG_FMAN_MIB_CNT_OVF_IRQ_EN is not set +# CONFIG_FMAN_RESOURCE_ALLOCATION_ALGORITHM is not set +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_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_BMAN=y +CONFIG_FSL_BMAN_CONFIG=y +CONFIG_FSL_BMAN_DEBUGFS=m +CONFIG_FSL_BMAN_PORTAL=y +# CONFIG_FSL_BMAN_TEST is not set +CONFIG_FSL_BOOKE=y +CONFIG_FSL_DMA=m +CONFIG_FSL_DPA=y +CONFIG_FSL_DPA_1588=m +CONFIG_FSL_DPA_CAN_WAIT=y +CONFIG_FSL_DPA_CAN_WAIT_SYNC=y +# CONFIG_FSL_DPA_CHECKING is not set +CONFIG_FSL_DPA_HAVE_IRQ=y +CONFIG_FSL_DPA_PIRQ_FAST=y +CONFIG_FSL_DPA_PIRQ_SLOW=y +CONFIG_FSL_DPA_PORTAL_SHARE=y +CONFIG_FSL_DPA_UIO=m +CONFIG_FSL_EMB_PERFMON=y +CONFIG_FSL_EMB_PERF_EVENT=y +CONFIG_FSL_EMB_PERF_EVENT_E500=y +# CONFIG_FSL_FMAN_TEST is not set +CONFIG_FSL_HV_MANAGER=m +CONFIG_FSL_IFC=y +CONFIG_FSL_LBC=y +# CONFIG_FSL_PAMU is not set +CONFIG_FSL_PCI=y +CONFIG_FSL_PME2=y +CONFIG_FSL_PME2_CTRL=y +CONFIG_FSL_PME2_DB=y +CONFIG_FSL_PME2_DB_QOSOUT_PRIORITY=2 +CONFIG_FSL_PME2_PDSRSIZE=131072 +CONFIG_FSL_PME2_PORTAL=y +CONFIG_FSL_PME2_SCAN=y +# CONFIG_FSL_PME2_SCAN_DEBUG is not set +CONFIG_FSL_PME2_SRESIZE=327680 +# CONFIG_FSL_PME2_SRE_AIM is not set +CONFIG_FSL_PME2_SRE_CNR=128 +CONFIG_FSL_PME2_SRE_CTX_SIZE_PER_SESSION=17 +# CONFIG_FSL_PME2_SRE_ESR is not set +CONFIG_FSL_PME2_SRE_MAX_BLOCK_NUMBER=32767 +CONFIG_FSL_PME2_SRE_MAX_INSTRUCTION_LIMIT=65535 +CONFIG_FSL_PME2_STAT_ACCUMULATOR_UPDATE_INTERVAL=3400 +# CONFIG_FSL_PME2_TEST_HIGH is not set +# CONFIG_FSL_PME2_TEST_SCAN is not set +CONFIG_FSL_PQ_MDIO=m +CONFIG_FSL_QMAN=y +CONFIG_FSL_QMAN_BUG_AND_FEATURE_REV1=y +CONFIG_FSL_QMAN_CI_SCHED_CFG_BMAN_W=2 +CONFIG_FSL_QMAN_CI_SCHED_CFG_RW_W=2 +CONFIG_FSL_QMAN_CI_SCHED_CFG_SRCCIV=4 +CONFIG_FSL_QMAN_CI_SCHED_CFG_SRQ_W=3 +CONFIG_FSL_QMAN_CONFIG=y +CONFIG_FSL_QMAN_DEBUGFS=m +CONFIG_FSL_QMAN_DQRR_PREFETCHING=y +CONFIG_FSL_QMAN_FQD_SZ=9 +CONFIG_FSL_QMAN_NULL_FQ_DEMUX=y +CONFIG_FSL_QMAN_PIRQ_DQRR_ITHRESH=12 +CONFIG_FSL_QMAN_PIRQ_IPERIOD=100 +CONFIG_FSL_QMAN_PIRQ_MR_ITHRESH=4 +CONFIG_FSL_QMAN_POLL_LIMIT=32 +CONFIG_FSL_QMAN_PORTAL=y +# CONFIG_FSL_QMAN_PORTAL_DISABLEAUTO_DCA is not set +# CONFIG_FSL_QMAN_TEST is not set +CONFIG_FSL_SOC=y +CONFIG_FSL_SOC_BOOKE=y +CONFIG_FSL_USB2_OTG=m +CONFIG_FSL_XGMAC_MDIO=y +CONFIG_FSNOTIFY=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_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_FW_LOADER=y +CONFIG_FW_LOADER_USER_HELPER=y +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_GEF_WDT is not set +CONFIG_GELIC_NET=m +CONFIG_GELIC_WIRELESS=y +CONFIG_GENERIC_ACL=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_BUILD=y +CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y +CONFIG_GENERIC_CMOS_UPDATE=y +CONFIG_GENERIC_CPU=y +CONFIG_GENERIC_CPUFREQ_CPU0=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_NET_UTILS=y +CONFIG_GENERIC_NVRAM=y +CONFIG_GENERIC_PCI_IOMAP=y +CONFIG_GENERIC_PENDING_IRQ=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_GEOS=y +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_GOOGLE_FIRMWARE is not set +CONFIG_GP2AP020A00F=m +CONFIG_GPIOLIB=y +CONFIG_GPIO_74X164=m +CONFIG_GPIO_ACPI=y +CONFIG_GPIO_ADNP=m +CONFIG_GPIO_ADP5520=m +CONFIG_GPIO_ADP5588=m +CONFIG_GPIO_AMD8111=m +CONFIG_GPIO_ARIZONA=m +CONFIG_GPIO_BCM_KONA=y +CONFIG_GPIO_CS5535=m +CONFIG_GPIO_DA9052=m +CONFIG_GPIO_DA9055=m +CONFIG_GPIO_DEVRES=y +CONFIG_GPIO_DWAPB=m +# CONFIG_GPIO_EM is not set +CONFIG_GPIO_F7188X=m +CONFIG_GPIO_GENERIC_PLATFORM=m +CONFIG_GPIO_GE_FPGA=y +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_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_MXC=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_STMPE=y +CONFIG_GPIO_SX150X=y +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_TS5500=m +CONFIG_GPIO_UCB1400=m +CONFIG_GPIO_VIPERBOARD=m +CONFIG_GPIO_VX855=m +CONFIG_GPIO_WM831X=m +CONFIG_GPIO_WM8350=m +CONFIG_GPIO_WM8994=m +CONFIG_GPIO_XILINX=y +CONFIG_GREENASIA_FF=y +CONFIG_HAMACHI=m +CONFIG_HAMRADIO=y +CONFIG_HANGCHECK_TIMER=m +CONFIG_HAPPYMEAL=m +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_HARDLOCKUP_DETECTOR=y +CONFIG_HAS_DMA=y +CONFIG_HAS_FSL_PME=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y +CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y +CONFIG_HAVE_ARCH_JUMP_LABEL=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_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_FUNCTION_TRACE_MCOUNT_TEST=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_CPU_RELAX_INTERCEPT=y +CONFIG_HAVE_KVM_EVENTFD=y +CONFIG_HAVE_KVM_IRQCHIP=y +CONFIG_HAVE_KVM_IRQ_ROUTING=y +CONFIG_HAVE_KVM_MSI=y +CONFIG_HAVE_LATENCYTOP_SUPPORT=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_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_CHERRY=m +CONFIG_HID_CHICONY=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_GYRATION=m +CONFIG_HID_HOLTEK=m +CONFIG_HID_HUION=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_TPKBD=m +CONFIG_HID_LOGITECH=m +CONFIG_HID_LOGITECH_DJ=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_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_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_GYRO_3D=m +CONFIG_HID_SENSOR_HUB=m +CONFIG_HID_SENSOR_IIO_COMMON=m +CONFIG_HID_SENSOR_IIO_TRIGGER=m +CONFIG_HID_SENSOR_MAGNETOMETER_3D=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_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_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_GENERIC=m +CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m +CONFIG_HOTPLUG_PCI_IBM=m +CONFIG_HOTPLUG_PCI_PCIE=y +CONFIG_HOTPLUG_PCI_RPA=m +CONFIG_HOTPLUG_PCI_RPA_DLPAR=m +CONFIG_HP100=m +CONFIG_HPET=y +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_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_HT_IRQ=y +CONFIG_HUGETLBFS=y +CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y +CONFIG_HVC_CONSOLE=y +# CONFIG_HVC_DCC is not set +CONFIG_HVC_DRIVER=y +CONFIG_HVC_IRQ=y +CONFIG_HVC_OPAL=y +CONFIG_HVC_RTAS=y +CONFIG_HVC_XEN=y +CONFIG_HVC_XEN_FRONTEND=y +CONFIG_HWMON=y +# CONFIG_HWMON_DEBUG_CHIP is not set +CONFIG_HWMON_VID=m +CONFIG_HWPOISON_INJECT=m +# CONFIG_HWSPINLOCK_OMAP is not set +CONFIG_HW_CONSOLE=y +CONFIG_HW_PERF_EVENTS=y +CONFIG_HW_RANDOM=y +CONFIG_HW_RANDOM_AMD=m +# CONFIG_HW_RANDOM_EXYNOS is not set +CONFIG_HW_RANDOM_GEODE=m +CONFIG_HW_RANDOM_INTEL=m +CONFIG_HW_RANDOM_OMAP=m +CONFIG_HW_RANDOM_OMAP3_ROM=m +CONFIG_HW_RANDOM_PASEMI=y +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_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_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_BOARDINFO=y +CONFIG_I2C_CBUS_GPIO=m +CONFIG_I2C_CHARDEV=m +CONFIG_I2C_COMPAT=y +CONFIG_I2C_CPM=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_PCI=m +CONFIG_I2C_DESIGNWARE_PLATFORM=m +CONFIG_I2C_DIOLAN_U2C=m +CONFIG_I2C_EG20T=m +CONFIG_I2C_GPIO=m +CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_HID=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_MPC=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_NFORCE2=m +CONFIG_I2C_NFORCE2_S4985=m +CONFIG_I2C_NOMADIK=m +CONFIG_I2C_OCORES=m +CONFIG_I2C_OMAP=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_RCAR=m +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_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_XILINX=m +CONFIG_I2O=m +CONFIG_I2O_BLOCK=m +CONFIG_I2O_BUS=m +CONFIG_I2O_CONFIG=m +# CONFIG_I2O_CONFIG_OLD_IOCTL is not set +CONFIG_I2O_EXT_ADAPTEC=y +CONFIG_I2O_EXT_ADAPTEC_DMA64=y +CONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y +CONFIG_I2O_PROC=m +CONFIG_I2O_SCSI=m +CONFIG_I40E=m +CONFIG_I40EVF=m +CONFIG_I40E_DCB=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=y +CONFIG_ICS932S401=m +CONFIG_ICST=y +CONFIG_IDEAPAD_LAPTOP=m +CONFIG_IDEPCI_PCIBUS_ORDER=y +CONFIG_IDE_ATAPI=y +CONFIG_IDE_GD=y +CONFIG_IDE_GD_ATA=y +# CONFIG_IDE_GD_ATAPI is not set +CONFIG_IDE_PHISON=m +CONFIG_IDE_PROC_FS=y +# CONFIG_IDE_TASK_IOCTL is not set +CONFIG_IDE_TIMINGS=y +CONFIG_IDE_XFER_MODE=y +CONFIG_IE6XX_WDT=m +CONFIG_IEEE802154=m +CONFIG_IEEE802154_6LOWPAN=m +CONFIG_IEEE802154_AT86RF230=m +CONFIG_IEEE802154_DRIVERS=m +# CONFIG_IEEE802154_FAKEHARD is not set +CONFIG_IEEE802154_FAKELB=m +CONFIG_IEEE802154_MRF24J40=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_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_PROC=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_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_IMX2_WDT is not set +# CONFIG_IMX_DMA is not set +# CONFIG_IMX_SDMA is not set +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_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_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_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_EVBUG=m +CONFIG_INPUT_EVDEV=y +CONFIG_INPUT_FF_MEMLESS=m +CONFIG_INPUT_GP2A=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_MATRIXKMAP=m +CONFIG_INPUT_MAX8925_ONKEY=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_PCAP=m +CONFIG_INPUT_PCF50633_PMU=m +CONFIG_INPUT_PCF8574=m +CONFIG_INPUT_PCSPKR=m +CONFIG_INPUT_POLLDEV=m +CONFIG_INPUT_POWERMATE=m +CONFIG_INPUT_RETU_PWRBUTTON=m +CONFIG_INPUT_SPARSEKMAP=m +CONFIG_INPUT_TABLET=y +CONFIG_INPUT_TOUCHSCREEN=y +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_INTEGRITY=y +CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y +CONFIG_INTEGRITY_AUDIT=y +CONFIG_INTEGRITY_SIGNATURE=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_MENLOW=m +CONFIG_INTEL_MFLD_THERMAL=m +CONFIG_INTEL_MIC_CARD=m +CONFIG_INTEL_MIC_HOST=m +CONFIG_INTEL_MID_DMAC=m +CONFIG_INTEL_MID_POWER_BUTTON=m +CONFIG_INTEL_MID_PTI=m +CONFIG_INTEL_OAKTRAIL=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_TXT=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_STRESS is not set +CONFIG_IOSCHED_CFQ=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_NOOP=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_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=y +# CONFIG_IPMI_PANIC_EVENT is not set +CONFIG_IPMI_POWEROFF=m +CONFIG_IPMI_SI=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_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_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_NF_TARGET_ULOG=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_IPPORT=m +CONFIG_IP_SET_HASH_IPPORTIP=m +CONFIG_IP_SET_HASH_IPPORTNET=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_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_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_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_NEC_DECODER=m +CONFIG_IR_NUVOTON=m +CONFIG_IR_RC5_DECODER=m +CONFIG_IR_RC5_SZ_DECODER=m +CONFIG_IR_RC6_DECODER=m +CONFIG_IR_REDRAT3=m +CONFIG_IR_SANYO_DECODER=m +CONFIG_IR_SONY_DECODER=m +CONFIG_IR_STREAMZAP=m +CONFIG_IR_TTUSBIR=m +CONFIG_IR_WINBOND_CIR=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_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_AVMB1_VERBOSE_REASON=y +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_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_DEBUG is not set +CONFIG_IWLWIFI_DEBUGFS=y +CONFIG_IWLWIFI_DEVICE_TRACING=y +CONFIG_IWLWIFI_OPMODE_MODULAR=y +CONFIG_IXGB=m +CONFIG_IXGBE=m +CONFIG_IXGBEVF=m +CONFIG_IXGBE_DCA=y +CONFIG_IXGBE_DCB=y +CONFIG_IXGBE_HWMON=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_WBUF_VERIFY is not set +CONFIG_JFFS2_FS_WRITEBUFFER=y +# CONFIG_JFFS2_FS_XATTR is not set +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_JUMP_LABEL=y +CONFIG_KALLSYMS=y +CONFIG_KALLSYMS_ALL=y +CONFIG_KARMA_PARTITION=y +CONFIG_KDB_CONTINUE_CATASTROPHIC=0 +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_KEXEC=y +CONFIG_KEXEC_JUMP=y +CONFIG_KEYBOARD_ADP5520=m +CONFIG_KEYBOARD_ADP5588=m +CONFIG_KEYBOARD_ADP5589=m +CONFIG_KEYBOARD_ATKBD=y +CONFIG_KEYBOARD_CROS_EC=m +CONFIG_KEYBOARD_GPIO=m +CONFIG_KEYBOARD_GPIO_POLLED=m +# CONFIG_KEYBOARD_IMX is not set +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_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_KEYS_DEBUG_PROC_KEYS=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_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_KSZ884X_PCI=m +CONFIG_KTIME_SCALAR=y +CONFIG_KUSER_HELPERS=y +CONFIG_KVM_AMD=m +CONFIG_KVM_APIC_ARCHITECTURE=y +CONFIG_KVM_ARM_HOST=y +CONFIG_KVM_ARM_MAX_VCPUS=4 +CONFIG_KVM_ARM_TIMER=y +CONFIG_KVM_ARM_VGIC=y +CONFIG_KVM_ASYNC_PF=y +CONFIG_KVM_BOOK3S_64_HANDLER=y +# CONFIG_KVM_BOOK3S_64_HV is not set +CONFIG_KVM_BOOK3S_64_PR=m +CONFIG_KVM_BOOK3S_HANDLER=y +CONFIG_KVM_BOOK3S_PR_POSSIBLE=y +CONFIG_KVM_BOOKE_HV=y +CONFIG_KVM_DEBUG_FS=y +CONFIG_KVM_DEVICE_ASSIGNMENT=y +CONFIG_KVM_E500MC=y +# CONFIG_KVM_EXIT_TIMING is not set +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_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=y +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_ADP5520=m +CONFIG_LEDS_ASIC3=y +CONFIG_LEDS_ATMEL_PWM=m +CONFIG_LEDS_BD2802=m +CONFIG_LEDS_BLINKM=m +CONFIG_LEDS_CLASS=y +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_LM3530=m +CONFIG_LEDS_LM3533=m +CONFIG_LEDS_LM355x=m +CONFIG_LEDS_LM3642=m +CONFIG_LEDS_LP3944=m +CONFIG_LEDS_LP5521=m +CONFIG_LEDS_LP5523=m +CONFIG_LEDS_LP5562=m +CONFIG_LEDS_LP55XX_COMMON=m +CONFIG_LEDS_LP8501=m +CONFIG_LEDS_LP8788=m +CONFIG_LEDS_LT3593=m +CONFIG_LEDS_MAX8997=m +CONFIG_LEDS_MC13783=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_PCA9685=m +CONFIG_LEDS_PWM=m +CONFIG_LEDS_REGULATOR=m +CONFIG_LEDS_TCA6507=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_IDE_DISK 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_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_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_LINE6_USB=m +# CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set +CONFIG_LIRC=m +CONFIG_LIRC_BT829=m +CONFIG_LIRC_IGORPLUGUSB=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_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_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_STAT is not set +# 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_LOOPBACK_TARGET=m +CONFIG_LOWMEM_CAM_NUM=3 +CONFIG_LOWMEM_SIZE=0x30000000 +CONFIG_LP8788_ADC=y +CONFIG_LPC_ICH=m +CONFIG_LPC_SCH=m +# CONFIG_LP_CONSOLE is not set +CONFIG_LRU_CACHE=m +CONFIG_LSI_ET1011C_PHY=y +CONFIG_LSM_MMAP_MIN_ADDR=0 +CONFIG_LTE_GDM724X=m +CONFIG_LTPC=m +# CONFIG_LUSTRE_DEBUG_EXPENSIVE_CHECK is not set +CONFIG_LUSTRE_FS=m +CONFIG_LUSTRE_LLITE_LLOOP=y +CONFIG_LUSTRE_OBD_MAX_IOCTL_BUFFER=8192 +CONFIG_LUSTRE_TRANSLATE_ERRNOS=y +CONFIG_LXT_PHY=y +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_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_DEFAULT_PID is not set +CONFIG_MAC80211_RC_MINSTREL=y +CONFIG_MAC80211_RC_MINSTREL_HT=y +CONFIG_MAC80211_RC_PID=y +CONFIG_MAC802154=m +CONFIG_MACB=m +CONFIG_MACE=m +# CONFIG_MACE_AAUI_PORT is not set +CONFIG_MACHZ_WDT=m +# CONFIG_MACH_CM_T35 is not set +CONFIG_MACH_CM_T3517=y +# CONFIG_MACH_CRANEBOARD is not set +# CONFIG_MACH_DEVKIT8000 is not set +# CONFIG_MACH_EUKREA_CPUIMX51SD is not set +# CONFIG_MACH_IMX51_DT is not set +CONFIG_MACH_KZM9D=y +# CONFIG_MACH_MX51_BABBAGE is not set +# CONFIG_MACH_NOKIA_RX51 is not set +# CONFIG_MACH_OMAP3517EVM is not set +CONFIG_MACH_OMAP3530_LV_SOM=y +CONFIG_MACH_OMAP3_BEAGLE=y +CONFIG_MACH_OMAP3_PANDORA=y +CONFIG_MACH_OMAP3_TORPEDO=y +CONFIG_MACH_OMAP_3430SDP=y +CONFIG_MACH_OMAP_GENERIC=y +CONFIG_MACH_OMAP_LDP=y +CONFIG_MACH_OVERO=y +CONFIG_MACH_SBC3530=y +CONFIG_MACH_TI8148EVM=y +CONFIG_MACH_TI8168EVM=y +CONFIG_MACH_TOUCHBOOK=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=y +# CONFIG_MATH_EMULATION_FULL is not set +CONFIG_MATH_EMULATION_HW_UNIMPLEMENTED=y +# CONFIG_MATOM is not set +CONFIG_MAX1363=m +CONFIG_MAX517=m +CONFIG_MAX63XX_WATCHDOG=m +CONFIG_MAX8925_POWER=m +# CONFIG_MAXSMP is not set +CONFIG_MAX_RAW_DEVS=256 +# CONFIG_MCORE2 is not set +CONFIG_MCP2120_DONGLE=m +CONFIG_MCP320X=m +CONFIG_MCP3422=m +CONFIG_MCP4725=m +CONFIG_MCPM=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_BITBANG=y +CONFIG_MDIO_BUS_MUX=y +CONFIG_MDIO_BUS_MUX_GPIO=y +CONFIG_MDIO_BUS_MUX_MMIOREG=y +CONFIG_MDIO_GPIO=y +CONFIG_MD_AUTODETECT=y +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_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 is not set +CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y +CONFIG_MEDIA_PARPORT_SUPPORT=y +CONFIG_MEDIA_PCI_SUPPORT=y +CONFIG_MEDIA_RADIO_SUPPORT=y +CONFIG_MEDIA_RC_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_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_MXL5005S=m +CONFIG_MEDIA_TUNER_MXL5007T=m +CONFIG_MEDIA_TUNER_QT1010=m +CONFIG_MEDIA_TUNER_R820T=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_FAILURE=y +CONFIG_MEMORY_HOTPLUG=y +CONFIG_MEMORY_HOTPLUG_SPARSE=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_TIFM_MS=m +# CONFIG_MEMSTICK_UNSAFE_RESUME is not set +CONFIG_MEMTEST=y +CONFIG_MEM_SOFT_DIRTY=y +CONFIG_MEN_A21_WDT=m +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_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_INTEL_MSIC=y +CONFIG_MFD_JANZ_CMODIO=m +CONFIG_MFD_KEMPLD=m +CONFIG_MFD_LM3533=m +CONFIG_MFD_LP8788=y +CONFIG_MFD_MAX77686=y +CONFIG_MFD_MAX77693=y +CONFIG_MFD_MAX8907=m +CONFIG_MFD_MAX8925=y +CONFIG_MFD_MAX8997=y +CONFIG_MFD_MAX8998=y +CONFIG_MFD_MC13783=m +CONFIG_MFD_MC13XXX=m +CONFIG_MFD_MC13XXX_I2C=m +CONFIG_MFD_MC13XXX_SPI=m +CONFIG_MFD_NVEC=m +CONFIG_MFD_OMAP_USB_HOST=y +CONFIG_MFD_PALMAS=y +CONFIG_MFD_PCF50633=m +CONFIG_MFD_RC5T583=y +CONFIG_MFD_RDC321X=m +CONFIG_MFD_RETU=m +CONFIG_MFD_RTSX_PCI=m +CONFIG_MFD_SEC_CORE=y +CONFIG_MFD_SI476X_CORE=m +CONFIG_MFD_SM501=m +# CONFIG_MFD_SM501_GPIO is not set +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_TIMBERDALE=m +CONFIG_MFD_TPS65090=y +CONFIG_MFD_TPS65217=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_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=y +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=y +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_INTEL_LIB=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_INFINIBAND=m +CONFIG_MMC=y +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 is not set +CONFIG_MMC_DW_PCI=m +CONFIG_MMC_DW_PLTFM=m +CONFIG_MMC_DW_SOCFPGA=m +# CONFIG_MMC_MXC is not set +CONFIG_MMC_OMAP=m +CONFIG_MMC_OMAP_HS=y +CONFIG_MMC_REALTEK_PCI=m +CONFIG_MMC_RICOH_MMC=y +CONFIG_MMC_SDHCI_ACPI=m +CONFIG_MMC_SDHCI_BIG_ENDIAN_32BIT_BYTE_SWAPPER=y +CONFIG_MMC_SDHCI_ESDHC_IMX=y +CONFIG_MMC_SDHCI_IO_ACCESSORS=y +CONFIG_MMC_SDHCI_OF_ESDHC=m +CONFIG_MMC_SDHCI_OF_HLWD=m +CONFIG_MMC_SDHCI_PCI=m +CONFIG_MMC_SDHCI_PXAV2=m +CONFIG_MMC_SDHCI_PXAV3=m +CONFIG_MMC_SDHCI_TEGRA=m +CONFIG_MMC_SDRICOH_CS=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_UNSAFE_RESUME is not set +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_MM_OWNER=y +CONFIG_MODULES=y +CONFIG_MODULES_USE_ELF_REL=y +CONFIG_MODULES_USE_ELF_RELA=y +# 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_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_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_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_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_MPSC is not set +CONFIG_MRP=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_MSPRO_BLOCK=m +CONFIG_MS_BLOCK=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_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_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_MXC is not set +CONFIG_MTD_NAND_NANDSIM=m +CONFIG_MTD_NAND_OMAP2=y +CONFIG_MTD_NAND_OMAP_BCH=y +CONFIG_MTD_NAND_PASEMI=m +CONFIG_MTD_NAND_PLATFORM=m +CONFIG_MTD_NAND_RICOH=m +CONFIG_MTD_NAND_SOCRATES=m +CONFIG_MTD_NAND_TMIO=m +CONFIG_MTD_NETSC520=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_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_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_SC520CDP=m +CONFIG_MTD_SCB2_FLASH=m +CONFIG_MTD_SCx200_DOCFLASH=m +CONFIG_MTD_SLRAM=m +CONFIG_MTD_SPINAND_MT29F=m +CONFIG_MTD_SPINAND_ONDIEECC=y +CONFIG_MTD_SST25L=m +CONFIG_MTD_SWAP=m +# CONFIG_MTD_TESTS is not set +CONFIG_MTD_TS5500=m +CONFIG_MTD_UBI=m +CONFIG_MTD_UBI_BEB_LIMIT=20 +CONFIG_MTD_UBI_FASTMAP=y +CONFIG_MTD_UBI_GLUEBI=m +CONFIG_MTD_UBI_WL_THRESHOLD=4096 +CONFIG_MTRR=y +CONFIG_MTRR_SANITIZER=y +CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1 +CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1 +CONFIG_MULTI_IRQ_HANDLER=y +CONFIG_MUTEX_SPIN_ON_OWNER=y +CONFIG_MV643XX_ETH=m +# CONFIG_MVIAC3_2 is not set +# CONFIG_MVIAC7 is not set +CONFIG_MVMDIO=m +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_DEBUG_BOARD is not set +# CONFIG_MXC_IRQ_PRIOR is not set +CONFIG_MXM_WMI=m +# CONFIG_MXS_DMA is not set +CONFIG_MYRI10GE=m +CONFIG_MYRI10GE_DCA=y +CONFIG_N2=m +CONFIG_NAMESPACES=y +CONFIG_NATIONAL_PHY=y +CONFIG_NATSEMI=m +CONFIG_NAU7802=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_NE2000=m +CONFIG_NE2K_PCI=m +CONFIG_NEED_MULTIPLE_NODES=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_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_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_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_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_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=m +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_NETPOLL_TRAP is not set +CONFIG_NETPRIO_CGROUP=m +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_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_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_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=m +CONFIG_NET_DSA_MV88E6060=m +CONFIG_NET_DSA_MV88E6123_61_65=m +CONFIG_NET_DSA_MV88E6131=m +CONFIG_NET_DSA_MV88E6XXX=m +CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y +CONFIG_NET_DSA_TAG_DSA=y +CONFIG_NET_DSA_TAG_EDSA=y +CONFIG_NET_DSA_TAG_TRAILER=y +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_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_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_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_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_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_VENDOR_3COM=y +CONFIG_NET_VENDOR_8390=y +CONFIG_NET_VENDOR_ADAPTEC=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_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_FARADAY=y +CONFIG_NET_VENDOR_FREESCALE=y +CONFIG_NET_VENDOR_FUJITSU=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_RDC=y +CONFIG_NET_VENDOR_REALTEK=y +CONFIG_NET_VENDOR_SEEQ=y +CONFIG_NET_VENDOR_SILAN=y +CONFIG_NET_VENDOR_SILICOM=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_NCI=m +CONFIG_NFC_NCI_SPI=y +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_WILINK=m +CONFIG_NFSD=m +# CONFIG_NFSD_FAULT_INJECTION is not set +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_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_META=m +CONFIG_NFT_NAT=m +CONFIG_NFT_RBTREE=m +CONFIG_NFT_REJECT_IPV4=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_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_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_SIP=m +CONFIG_NF_NAT_SNMP_BASIC=m +CONFIG_NF_NAT_TFTP=m +CONFIG_NF_TABLES=m +CONFIG_NF_TABLES_ARP=m +CONFIG_NF_TABLES_BRIDGE=m +CONFIG_NF_TABLES_IPV4=m +CONFIG_NF_TABLES_IPV6=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_NOP_TRACER=y +CONFIG_NORTEL_HERMES=m +CONFIG_NOTIFIER_ERROR_INJECTION=m +CONFIG_NOUVEAU_DEBUG=5 +CONFIG_NOUVEAU_DEBUG_DEFAULT=3 +CONFIG_NOZOMI=m +CONFIG_NO_BOOTMEM=y +CONFIG_NO_HZ=y +CONFIG_NO_HZ_COMMON=y +# CONFIG_NO_HZ_FULL_ALL is not set +CONFIG_NO_HZ_FULL_SYSIDLE=y +CONFIG_NO_HZ_FULL_SYSIDLE_SMALL=8 +CONFIG_NO_IOPORT=y +CONFIG_NR_IRQS=512 +CONFIG_NS83820=m +CONFIG_NSC_FIR=m +CONFIG_NSC_GPIO=m +CONFIG_NTB=m +CONFIG_NTB_NETDEV=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 is not set +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_OC_ETM=y +CONFIG_OF=y +CONFIG_OF_ADDRESS=y +CONFIG_OF_DYNAMIC=y +CONFIG_OF_EARLY_FLATTREE=y +CONFIG_OF_EXTCON=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_PCI=y +CONFIG_OF_PCI_IRQ=y +# CONFIG_OF_RECONFIG_NOTIFIER_ERROR_INJECT is not set +# CONFIG_OF_SELFTEST is not set +CONFIG_OID_REGISTRY=y +CONFIG_OLD_BELKIN_DONGLE=m +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_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_EMU=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_DSS_HDMI_AUDIO=y +CONFIG_OMAP4_THERMAL=y +CONFIG_OMAP_32K_TIMER=y +CONFIG_OMAP_CONTROL_USB=y +CONFIG_OMAP_DM_TIMER=y +CONFIG_OMAP_INTERCONNECT=y +CONFIG_OMAP_IOMMU=y +# CONFIG_OMAP_IOVMM is not set +CONFIG_OMAP_MBOX=m +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_PACKAGE_CUS=y +CONFIG_OMAP_PM_NOOP=y +CONFIG_OMAP_REMOTEPROC=m +CONFIG_OMAP_RESET_CLOCKS=y +CONFIG_OMAP_USB2=y +CONFIG_OMAP_USB3=m +CONFIG_OMAP_WATCHDOG=m +CONFIG_OMFS_FS=m +CONFIG_OPENVSWITCH=m +CONFIG_OPENVSWITCH_GRE=y +CONFIG_OPENVSWITCH_VXLAN=y +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_OSF_PARTITION=y +CONFIG_OUTER_CACHE=y +CONFIG_OUTER_CACHE_SYNC=y +CONFIG_OVERLAYFS_FS=m +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_PANASONIC_LAPTOP=m +CONFIG_PANEL=m +# CONFIG_PANEL_CHANGE_MESSAGE is not set +CONFIG_PANEL_PARPORT=0 +CONFIG_PANEL_PROFILE=5 +# CONFIG_PANIC_ON_OOPS is not set +CONFIG_PANIC_ON_OOPS_VALUE=0 +CONFIG_PANTHERLORD_FF=y +CONFIG_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_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_ARASAN_CF=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 is not set +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_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_PCIE_DW=y +# CONFIG_PCIE_ECRC is not set +CONFIG_PCIE_PME=y +CONFIG_PCIPCWATCHDOG=m +CONFIG_PCI_ATMEL=m +CONFIG_PCI_ATS=y +CONFIG_PCI_BIOS=y +# CONFIG_PCI_CNB20LE_QUIRK is not set +# CONFIG_PCI_DEBUG is not set +CONFIG_PCI_DIRECT=y +CONFIG_PCI_DOMAINS=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_IMX6=y +CONFIG_PCI_IOAPIC=y +CONFIG_PCI_IOV=y +CONFIG_PCI_LABEL=y +CONFIG_PCI_MMCONFIG=y +CONFIG_PCI_MSI=y +CONFIG_PCI_PASID=y +CONFIG_PCI_PRI=y +CONFIG_PCI_QUIRKS=y +CONFIG_PCI_REALLOC_ENABLE_AUTO=y +CONFIG_PCI_STUB=m +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_PERF_EVENTS=y +CONFIG_PERF_USE_VMALLOC=y +CONFIG_PHANTOM=m +CONFIG_PHONET=m +CONFIG_PHYLIB=y +CONFIG_PHYS_64BIT=y +# CONFIG_PHY_EXYNOS_MIPI_VIDEO is not set +CONFIG_PHY_XGENE=y +# CONFIG_PID_IN_CONTEXTIDR is not set +CONFIG_PID_NS=y +CONFIG_PINCONF=y +CONFIG_PINCTRL=y +CONFIG_PINCTRL_AS3722=y +CONFIG_PINCTRL_BAYTRAIL=y +CONFIG_PINCTRL_IMX=y +CONFIG_PINCTRL_IMX6Q=y +CONFIG_PINCTRL_IMX6SL=y +CONFIG_PINCTRL_PALMAS=y +CONFIG_PINCTRL_SINGLE=y +CONFIG_PINCTRL_TEGRA=y +CONFIG_PINCTRL_TEGRA114=y +CONFIG_PINCTRL_TEGRA20=y +CONFIG_PINCTRL_TEGRA30=y +CONFIG_PINCTRL_VF610=y +CONFIG_PINMUX=y +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_PLAT_SPEAR is not set +CONFIG_PLAT_VERSATILE=y +CONFIG_PLAT_VERSATILE_CLCD=y +CONFIG_PLAT_VERSATILE_SCHED_CLOCK=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_PMIC_DA9052=y +CONFIG_PM_ADVANCED_DEBUG=y +# CONFIG_PM_AUTOSLEEP is not set +CONFIG_PM_CLK=y +CONFIG_PM_DEVFREQ=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_TRACE=y +CONFIG_PM_TRACE_RTC=y +CONFIG_PM_WAKELOCKS_GC=y +CONFIG_PM_WAKELOCKS_LIMIT=100 +CONFIG_PNFS_BLOCK=m +CONFIG_PNFS_FILE_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_POWER3=y +CONFIG_POWER4=y +# CONFIG_POWER4_CPU is not set +# CONFIG_POWER5_CPU is not set +# CONFIG_POWER6_CPU is not set +CONFIG_POWERCAP=y +CONFIG_POWERNV_CPUFREQ=y +CONFIG_POWERNV_MSI=y +CONFIG_POWER_AVS=y +CONFIG_POWER_AVS_OMAP=y +CONFIG_POWER_AVS_OMAP_CLASS3=y +CONFIG_POWER_RESET=y +CONFIG_POWER_RESET_GPIO=y +CONFIG_POWER_RESET_RESTART=y +CONFIG_POWER_RESET_SYSCON=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_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_A2=y +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_CELLEB is not set +# CONFIG_PPC_CELL_NATIVE is not set +# CONFIG_PPC_CELL_QPACE is not set +CONFIG_PPC_CHROMA=y +CONFIG_PPC_CHRP=y +# CONFIG_PPC_CLOCK is not set +CONFIG_PPC_CORENET_CPUFREQ=m +# 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_EARLY_DEBUG_EHV_BC is not set +# CONFIG_PPC_EMULATED_STATS is not set +CONFIG_PPC_EMULATE_SSTEP=y +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_IO_WORKAROUNDS=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=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=y +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_POWERNV_RTAS=y +CONFIG_PPC_PSERIES=y +CONFIG_PPC_PSR2=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_KTIMER is not set +# 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_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_DEVICETREE=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_DELAY 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_IDLE=y +CONFIG_PSERIES_MSI=y +CONFIG_PSTORE=y +# CONFIG_PSTORE_FTRACE 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_PVPANIC=m +CONFIG_PWM=y +# CONFIG_PWM_IMX is not set +CONFIG_PWM_PCA9685=m +CONFIG_PWM_SYSFS=y +CONFIG_PWM_TEGRA=m +# CONFIG_PWM_TIECAP is not set +# CONFIG_PWM_TIEHRPWM is not set +CONFIG_PWM_TWL=m +CONFIG_PWM_TWL_LED=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_SRIOV=y +CONFIG_QLGE=m +CONFIG_QNX4FS_FS=m +# CONFIG_QNX6FS_DEBUG is not set +CONFIG_QNX6FS_FS=m +CONFIG_QSEMI_PHY=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_R8187SE=m +CONFIG_R8188EU=m +CONFIG_R8712U=m +CONFIG_R8821AE=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_RAPIDIO=y +# 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_RATIONAL=y +CONFIG_RAW_DRIVER=m +# CONFIG_RCU_BOOST is not set +# CONFIG_RCU_CPU_STALL_INFO is not set +# CONFIG_RCU_CPU_STALL_VERBOSE is not set +# CONFIG_RCU_FANOUT_EXACT is not set +CONFIG_RCU_FANOUT_LEAF=16 +CONFIG_RCU_NOCB_CPU_ALL=y +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=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_REGULATOR=y +CONFIG_REGULATOR_88PM800=m +CONFIG_REGULATOR_88PM8607=y +CONFIG_REGULATOR_AAT2870=m +CONFIG_REGULATOR_AB3100=m +CONFIG_REGULATOR_AD5398=m +CONFIG_REGULATOR_ANATOP=m +CONFIG_REGULATOR_ARIZONA=m +CONFIG_REGULATOR_AS3711=m +CONFIG_REGULATOR_AS3722=m +CONFIG_REGULATOR_DA903X=m +CONFIG_REGULATOR_DA9052=m +CONFIG_REGULATOR_DA9055=m +CONFIG_REGULATOR_DA9063=m +CONFIG_REGULATOR_DA9210=m +# CONFIG_REGULATOR_DEBUG is not set +CONFIG_REGULATOR_FAN53555=m +CONFIG_REGULATOR_GPIO=m +CONFIG_REGULATOR_ISL6271A=m +CONFIG_REGULATOR_LP3971=m +CONFIG_REGULATOR_LP3972=m +CONFIG_REGULATOR_LP872X=y +CONFIG_REGULATOR_LP8755=m +CONFIG_REGULATOR_LP8788=y +CONFIG_REGULATOR_MAX1586=m +CONFIG_REGULATOR_MAX77686=m +CONFIG_REGULATOR_MAX77693=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_PALMAS=m +CONFIG_REGULATOR_PCAP=m +CONFIG_REGULATOR_PCF50633=m +CONFIG_REGULATOR_PFUZE100=m +CONFIG_REGULATOR_RC5T583=m +CONFIG_REGULATOR_S5M8767=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_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_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_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_RESET_CONTROLLER=y +CONFIG_RESOURCE_COUNTERS=y +CONFIG_RETU_WATCHDOG=m +CONFIG_RFD_FTL=m +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_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_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_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_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_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_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_DS1286=m +CONFIG_RTC_DRV_DS1305=m +CONFIG_RTC_DRV_DS1307=m +CONFIG_RTC_DRV_DS1374=m +CONFIG_RTC_DRV_DS1390=m +CONFIG_RTC_DRV_DS1511=m +CONFIG_RTC_DRV_DS1553=m +CONFIG_RTC_DRV_DS1672=m +CONFIG_RTC_DRV_DS1742=m +CONFIG_RTC_DRV_DS2404=m +CONFIG_RTC_DRV_DS3234=m +CONFIG_RTC_DRV_EFI=y +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_IMXDI is not set +CONFIG_RTC_DRV_ISL12022=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_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_MOXART=m +CONFIG_RTC_DRV_MSM6242=m +# CONFIG_RTC_DRV_MXC is not set +CONFIG_RTC_DRV_OMAP=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_PCF8523=m +CONFIG_RTC_DRV_PCF8563=m +CONFIG_RTC_DRV_PCF8583=m +CONFIG_RTC_DRV_PL030=m +CONFIG_RTC_DRV_PS3=m +CONFIG_RTC_DRV_R9701=m +CONFIG_RTC_DRV_RC5T583=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_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_TWL4030=y +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_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_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_RTL8192SE=m +CONFIG_RTL8192U=m +CONFIG_RTL8723AE=m +CONFIG_RTL8723BE=m +CONFIG_RTL8723_COMMON=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_RTS5139=m +# CONFIG_RTS5139_DEBUG is not set +# CONFIG_RT_GROUP_SCHED is not set +CONFIG_RT_MUTEXES=y +# CONFIG_RT_MUTEX_TESTER is not set +CONFIG_RWSEM_GENERIC_SPINLOCK=y +CONFIG_RWSEM_XCHGADD_ALGORITHM=y +CONFIG_RXKAD=m +CONFIG_S2IO=m +# CONFIG_SAMPLES is not set +CONFIG_SAMSUNG_LAPTOP=m +CONFIG_SAMSUNG_Q10=m +CONFIG_SAMSUNG_USBPHY=m +CONFIG_SATA_ACARD_AHCI=m +CONFIG_SATA_AHCI=m +CONFIG_SATA_FSL=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_SBC_EPX_C3_WATCHDOG=m +CONFIG_SBC_FITPC2_WATCHDOG=m +CONFIG_SBE_2T3E3=m +CONFIG_SBE_PMCC4_NCOMM=y +CONFIG_SBNI=m +# CONFIG_SBNI_MULTILINE is not set +CONFIG_SBP_TARGET=m +CONFIG_SBYPASS=m +CONFIG_SC1200_WDT=m +CONFIG_SC520_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_DEBUG=y +CONFIG_SCHED_HRTICK=y +CONFIG_SCHED_MC=y +CONFIG_SCHED_OMIT_FRAME_POINTER=y +CONFIG_SCHED_TRACER=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_AIC7XXX_OLD is not set +CONFIG_SCSI_AIC94XX=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_DC390T=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_FC_TGT_ATTRS=y +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_MULTI_LUN=y +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_SRP=m +CONFIG_SCSI_SRP_TGT_ATTRS=y +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_TGT=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_ULTRASTOR=m +CONFIG_SCSI_VIRTIO=m +CONFIG_SCTP_COOKIE_HMAC_MD5=y +CONFIG_SCTP_COOKIE_HMAC_SHA1=y +# CONFIG_SCTP_DBG_OBJCNT is not set +# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5 is not set +# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE is not set +CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1=y +CONFIG_SCx200=m +CONFIG_SCx200HR_TIMER=m +CONFIG_SCx200_ACB=m +CONFIG_SCx200_GPIO=m +# CONFIG_SCx200_I2C is not set +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_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 is not set +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_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_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_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_HTU21=m +CONFIG_SENSORS_I5K_AMB=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_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_LTC2978=m +CONFIG_SENSORS_LTC4151=m +CONFIG_SENSORS_LTC4215=m +CONFIG_SENSORS_LTC4245=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_NCT6775=m +CONFIG_SENSORS_NTC_THERMISTOR=m +CONFIG_SENSORS_PC87360=m +CONFIG_SENSORS_PC87427=m +CONFIG_SENSORS_PCF8591=m +CONFIG_SENSORS_PMBUS=m +CONFIG_SENSORS_SCH5627=m +CONFIG_SENSORS_SCH5636=m +CONFIG_SENSORS_SHT15=m +CONFIG_SENSORS_SHT21=m +CONFIG_SENSORS_SIS5595=m +CONFIG_SENSORS_SMM665=m +CONFIG_SENSORS_SMSC47B397=m +CONFIG_SENSORS_SMSC47M1=m +CONFIG_SENSORS_SMSC47M192=m +CONFIG_SENSORS_THMC50=m +CONFIG_SENSORS_TMP102=m +CONFIG_SENSORS_TMP401=m +CONFIG_SENSORS_TMP421=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_DW=m +# CONFIG_SERIAL_8250_EM is not set +CONFIG_SERIAL_8250_EXAR_ST16C554=m +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_FOURPORT=m +CONFIG_SERIAL_8250_FSL=y +CONFIG_SERIAL_8250_HUB6=m +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_NR_UARTS=48 +CONFIG_SERIAL_8250_PNP=y +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_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_SERIAL_CPM=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_MFD_HSU=m +CONFIG_SERIAL_MRST_MAX3110=m +CONFIG_SERIAL_NONSTANDARD=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_SCCNXP=y +CONFIG_SERIAL_SCCNXP_CONSOLE=y +CONFIG_SERIAL_SH_SCI=m +CONFIG_SERIAL_SH_SCI_NR_UARTS=2 +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_AMBAKMI=m +CONFIG_SERIO_CT82C710=m +CONFIG_SERIO_LIBPS2=y +CONFIG_SERIO_NVEC_PS2=m +CONFIG_SERIO_SERPORT=m +CONFIG_SFC=m +CONFIG_SFC_MCDI_MON=y +CONFIG_SFC_MTD=y +CONFIG_SFC_SRIOV=y +CONFIG_SFI=y +CONFIG_SGI_IOC4=m +CONFIG_SGI_PARTITION=y +CONFIG_SGY_CTS1000=y +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_ETH=m +CONFIG_SH_TIMER_CMT=y +CONFIG_SH_TIMER_TMU=y +CONFIG_SIGMATEL_FIR=m +CONFIG_SIGNALFD=y +CONFIG_SIGNATURE=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=y +CONFIG_SMSC_SCH311X_WDT=m +CONFIG_SMS_SDIO_DRV=m +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_AT73C213=m +CONFIG_SND_AT73C213_TARGET_BITRATE=48000 +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_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=m +CONFIG_SND_DAVINCI_SOC_MCASP=m +CONFIG_SND_DEBUG=y +# CONFIG_SND_DEBUG_VERBOSE is not set +CONFIG_SND_DESIGNWARE_I2S=m +CONFIG_SND_DICE=m +CONFIG_SND_DMAENGINE_PCM=y +CONFIG_SND_DMA_SGBUF=y +CONFIG_SND_DRIVERS=y +CONFIG_SND_DUMMY=m +CONFIG_SND_DYNAMIC_MINORS=y +CONFIG_SND_ECHO3G=m +CONFIG_SND_EMU10K1=m +CONFIG_SND_EMU10K1X=m +CONFIG_SND_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_FIREWIRE_SPEAKERS=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_CODEC_ANALOG=y +CONFIG_SND_HDA_CODEC_CA0110=y +CONFIG_SND_HDA_CODEC_CA0132=y +CONFIG_SND_HDA_CODEC_CA0132_DSP=y +CONFIG_SND_HDA_CODEC_CIRRUS=y +CONFIG_SND_HDA_CODEC_CMEDIA=y +CONFIG_SND_HDA_CODEC_CONEXANT=y +CONFIG_SND_HDA_CODEC_HDMI=y +CONFIG_SND_HDA_CODEC_REALTEK=y +CONFIG_SND_HDA_CODEC_SI3054=y +CONFIG_SND_HDA_CODEC_SIGMATEL=y +CONFIG_SND_HDA_CODEC_VIA=y +CONFIG_SND_HDA_DSP_LOADER=y +CONFIG_SND_HDA_GENERIC=y +CONFIG_SND_HDA_HWDEP=y +CONFIG_SND_HDA_I915=y +CONFIG_SND_HDA_INPUT_BEEP=y +CONFIG_SND_HDA_INPUT_BEEP_MODE=0 +CONFIG_SND_HDA_INPUT_JACK=y +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_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_KCTL_JACK=y +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 is not set +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=y +CONFIG_SND_OMAP_SOC_HDMI=y +CONFIG_SND_OMAP_SOC_MCBSP=y +CONFIG_SND_OMAP_SOC_MCPDM=y +CONFIG_SND_OMAP_SOC_OMAP3_PANDORA=m +CONFIG_SND_OMAP_SOC_OMAP_ABE_TWL6040=y +CONFIG_SND_OMAP_SOC_OMAP_HDMI=y +CONFIG_SND_OMAP_SOC_OMAP_TWL4030=y +CONFIG_SND_OPL3SA2=m +CONFIG_SND_OPL3_LIB=m +CONFIG_SND_OPL4_LIB=m +CONFIG_SND_OPTI92X_AD1848=m +CONFIG_SND_OPTI92X_CS4231=m +CONFIG_SND_OPTI93X=m +CONFIG_SND_OXYGEN=m +CONFIG_SND_OXYGEN_LIB=m +CONFIG_SND_PCI=y +CONFIG_SND_PCMCIA=y +# CONFIG_SND_PCM_OSS is not set +CONFIG_SND_PCM_XRUN_DEBUG=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_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_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_ALC5632=m +CONFIG_SND_SOC_DMIC=y +CONFIG_SND_SOC_FSL_SPDIF=m +CONFIG_SND_SOC_FSL_UTILS=m +CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y +CONFIG_SND_SOC_HDMI_CODEC=y +CONFIG_SND_SOC_IMX_AUDMUX=y +CONFIG_SND_SOC_IMX_MC13783=m +CONFIG_SND_SOC_IMX_PCM_DMA=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_MC13783=m +CONFIG_SND_SOC_P1022_DS=m +CONFIG_SND_SOC_P1022_RDK=m +CONFIG_SND_SOC_POWERPC_DMA=m +CONFIG_SND_SOC_RT5640=m +CONFIG_SND_SOC_SGTL5000=y +CONFIG_SND_SOC_SI476X=m +CONFIG_SND_SOC_SN95031=m +CONFIG_SND_SOC_SPDIF=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_RT5640=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_TLV320AIC23=m +CONFIG_SND_SOC_TLV320AIC3X=m +CONFIG_SND_SOC_TWL4030=y +CONFIG_SND_SOC_TWL6040=y +CONFIG_SND_SOC_WM8753=m +CONFIG_SND_SOC_WM8776=m +CONFIG_SND_SOC_WM8903=m +CONFIG_SND_SOC_WM8960=m +CONFIG_SND_SOC_WM8962=m +CONFIG_SND_SOC_WM9712=m +CONFIG_SND_SONICVIBES=m +CONFIG_SND_SPI=y +CONFIG_SND_SSCAPE=m +CONFIG_SND_SST_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_UA101=m +CONFIG_SND_USB_US122L=m +CONFIG_SND_USB_USX2Y=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_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_HAS_OMAP2_SDRC=y +CONFIG_SOC_HAS_REALTIME_COUNTER=y +# CONFIG_SOC_IMX53 is not set +CONFIG_SOC_IMX6Q=y +CONFIG_SOC_IMX6SL=y +CONFIG_SOC_OMAP3430=y +# CONFIG_SOC_OMAP5 is not set +CONFIG_SOC_TI81XX=y +CONFIG_SOC_VF610=y +CONFIG_SOFT_WATCHDOG=m +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_SOLO6X10=m +CONFIG_SONYPI=m +CONFIG_SONYPI_COMPAT=y +CONFIG_SONY_FF=y +CONFIG_SONY_LAPTOP=m +# CONFIG_SOUND_OSS_CORE is not set +# CONFIG_SOUND_PRIME is not set +CONFIG_SP5100_TCO=m +CONFIG_SPARSEMEM=y +CONFIG_SPARSEMEM_ALLOC_MEM_MAP_TOGETHER=y +CONFIG_SPARSEMEM_EXTREME=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_DEBUG is not set +CONFIG_SPI_DESIGNWARE=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_SPI=y +CONFIG_SPI_GPIO=m +CONFIG_SPI_IMX=m +CONFIG_SPI_LM70_LLP=m +CONFIG_SPI_MASTER=y +CONFIG_SPI_OC_TINY=m +CONFIG_SPI_OMAP24XX=y +CONFIG_SPI_PL022=m +CONFIG_SPI_PXA2XX=m +CONFIG_SPI_PXA2XX_DMA=y +CONFIG_SPI_SC18IS602=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_SPLIT_PTLOCK_CPUS=4 +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_EMBEDDED is not set +CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XATTR=y +CONFIG_SQUASHFS_XZ=y +CONFIG_SQUASHFS_ZLIB=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_STACKTRACE=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_STAGING_MEDIA=y +CONFIG_STE10XP=y +CONFIG_STE_MODEM_RPROC=m +# CONFIG_STMMAC_DA is not set +# CONFIG_STMMAC_DEBUG_FS is not set +CONFIG_STMMAC_ETH=m +# CONFIG_STMMAC_PCI is not set +CONFIG_STMMAC_PLATFORM=y +CONFIG_STMPE_I2C=y +CONFIG_STMPE_SPI=y +CONFIG_STMP_DEVICE=y +CONFIG_STOP_MACHINE=y +CONFIG_STP=m +CONFIG_STRICT_DEVMEM=y +# CONFIG_STRIP_ASM_SYMS is not set +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_GSS=m +CONFIG_SUNRPC_SWAP=y +CONFIG_SUNRPC_XPRT_RDMA=m +CONFIG_SUN_PARTITION=y +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +CONFIG_SWAP=y +CONFIG_SWIOTLB_XEN=y +CONFIG_SWP_EMULATE=y +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_SYSFS=y +# CONFIG_SYSFS_DEPRECATED is not set +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_HUGETLBFS=y +CONFIG_TABLET_USB_ACECAD=m +CONFIG_TABLET_USB_AIPTEK=m +CONFIG_TABLET_USB_GTCO=m +CONFIG_TABLET_USB_HANWANG=m +CONFIG_TABLET_USB_KBTAB=m +CONFIG_TABLET_USB_WACOM=m +CONFIG_TARGET_CORE=m +CONFIG_TASKSTATS=y +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_INFINEON=m +CONFIG_TCG_NSC=m +CONFIG_TCG_ST33_I2C=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_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_TCP_CONG_ADVANCED=y +CONFIG_TCP_CONG_BIC=m +CONFIG_TCP_CONG_CUBIC=y +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_TCS3472=m +CONFIG_TEGRA20_APB_DMA=y +CONFIG_TEGRA20_MC=y +CONFIG_TEGRA30_MC=y +CONFIG_TEGRA_AHB=y +CONFIG_TEGRA_EMC_SCALING_ENABLE=y +CONFIG_TEGRA_HOST1X=m +CONFIG_TEGRA_HOST1X_FIREWALL=y +CONFIG_TEGRA_IOMMU_GART=y +CONFIG_TEGRA_IOMMU_SMMU=y +CONFIG_TEHUTI=m +CONFIG_TEKRAM_DONGLE=m +CONFIG_TELCLOCK=m +# CONFIG_TEST_LIST_SORT is not set +CONFIG_TEST_POWER=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_STEP_WISE=y +# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set +CONFIG_THERMAL_EMULATION=y +CONFIG_THERMAL_GOV_FAIR_SHARE=y +CONFIG_THERMAL_GOV_STEP_WISE=y +CONFIG_THERMAL_GOV_USER_SPACE=y +CONFIG_THERMAL_HWMON=y +CONFIG_THERM_ADT746X=y +CONFIG_THERM_PM72=m +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_TICK_ONESHOT=y +CONFIG_TIFM_7XX1=m +CONFIG_TIFM_CORE=m +CONFIG_TIMB_DMA=m +CONFIG_TIMERFD=y +CONFIG_TIPC=m +CONFIG_TIPC_MEDIA_IB=y +CONFIG_TIPC_PORTS=8191 +CONFIG_TI_ADC081C=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_EDMA=y +CONFIG_TI_EMIF=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_TOSHIBA is not set +CONFIG_TOSHIBA_BT_RFKILL=m +CONFIG_TOSHIBA_FIR=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_ATMEL_MXT=m +CONFIG_TOUCHSCREEN_AUO_PIXCIR=m +CONFIG_TOUCHSCREEN_BU21013=m +CONFIG_TOUCHSCREEN_CLEARPAD_TM1217=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_ELO=m +CONFIG_TOUCHSCREEN_FUJITSU=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_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_W90X900=m +CONFIG_TOUCHSCREEN_WACOM_I2C=m +CONFIG_TOUCHSCREEN_WACOM_W8001=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_TQM85xx=y +CONFIG_TRACEPOINTS=y +CONFIG_TRACER_MAX_TRACE=y +CONFIG_TRACER_SNAPSHOT=y +# CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP is not set +CONFIG_TRACE_CLOCK=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_TRACE_ROUTER=m +CONFIG_TRACE_SINK=m +CONFIG_TRACING=y +CONFIG_TRACING_SUPPORT=y +CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y +# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set +CONFIG_TRANZPORT=m +CONFIG_TREE_PREEMPT_RCU=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_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_TWL4030_MADC=m +CONFIG_TWL4030_POWER=y +CONFIG_TWL4030_USB=m +CONFIG_TWL4030_WATCHDOG=m +CONFIG_TWL6030_GPADC=m +CONFIG_TWL6030_USB=m +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_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_UIDGID_STRICT_TYPE_CHECKS=y +CONFIG_UIO=m +CONFIG_UIO_PCI_GENERIC=m +CONFIG_ULI526X=m +CONFIG_ULTRA=m +CONFIG_ULTRIX_PARTITION=y +CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h" +CONFIG_UNINLINE_SPIN_UNLOCK=y +CONFIG_UNIX=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_UNIX_DIAG=m +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_ALI_M5632=y +CONFIG_USB_AMD5536UDC=m +CONFIG_USB_AN2720=y +CONFIG_USB_ARCH_HAS_EHCI=y +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB_ARCH_HAS_OHCI=y +CONFIG_USB_ARMLINUX=y +CONFIG_USB_ATM=m +CONFIG_USB_AUDIO=m +CONFIG_USB_BELKIN=y +CONFIG_USB_BTMTK=m +CONFIG_USB_CDC_COMPOSITE=m +CONFIG_USB_CDC_PHONET=m +# CONFIG_USB_CHIPIDEA_DEBUG is not set +CONFIG_USB_CHIPIDEA_HOST=y +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_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_DEBUG is not set +CONFIG_USB_DEFAULT_PERSIST=y +CONFIG_USB_DSBR=m +# CONFIG_USB_DUMMY_HCD is not set +CONFIG_USB_DWC2=m +# CONFIG_USB_DWC2_DEBUG is not set +# CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set +# CONFIG_USB_DWC3_DEBUG is not set +CONFIG_USB_DWC3_DUAL_ROLE=y +# CONFIG_USB_DWC3_EXYNOS is not set +# CONFIG_USB_DWC3_GADGET is not set +# CONFIG_USB_DWC3_HOST is not set +CONFIG_USB_DWC3_PCI=m +CONFIG_USB_EG20T=m +CONFIG_USB_EHCI_BIG_ENDIAN_DESC=y +CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y +CONFIG_USB_EHCI_FSL=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_HCD_OMAP=y +# CONFIG_USB_EHCI_MXC is not set +CONFIG_USB_EHCI_PCI=y +CONFIG_USB_EHCI_TEGRA=y +CONFIG_USB_EHCI_TT_NEWSCHED=y +CONFIG_USB_ENESTORAGE=m +CONFIG_USB_EPSON2888=y +CONFIG_USB_ETH=m +CONFIG_USB_ETH_EEM=y +CONFIG_USB_ETH_RNDIS=y +CONFIG_USB_FOTG210_UDC=m +CONFIG_USB_FSL_MPH_DR_OF=y +CONFIG_USB_FSL_QE=m +CONFIG_USB_FUNCTIONFS=m +CONFIG_USB_FUNCTIONFS_ETH=y +CONFIG_USB_FUNCTIONFS_GENERIC=y +CONFIG_USB_FUNCTIONFS_RNDIS=y +CONFIG_USB_FUSB300=m +CONFIG_USB_F_ACM=m +CONFIG_USB_F_ECM=m +CONFIG_USB_F_EEM=m +CONFIG_USB_F_MASS_STORAGE=m +CONFIG_USB_F_NCM=m +CONFIG_USB_F_OBEX=m +CONFIG_USB_F_PHONET=m +CONFIG_USB_F_RNDIS=m +CONFIG_USB_F_SERIAL=m +CONFIG_USB_F_SS_LB=m +CONFIG_USB_F_SUBSET=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_GL860=m +CONFIG_USB_GOKU=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_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_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_HCD_TEST_MODE is not set +CONFIG_USB_HID=m +CONFIG_USB_HIDDEV=y +CONFIG_USB_HSO=m +CONFIG_USB_HWA_HCD=m +# CONFIG_USB_IMX21_HCD is not set +CONFIG_USB_INVENTRA_DMA=y +CONFIG_USB_IRDA=m +CONFIG_USB_KBD=m +CONFIG_USB_KC2190=y +CONFIG_USB_KEENE=m +CONFIG_USB_LIBCOMPOSITE=m +CONFIG_USB_M5602=m +# CONFIG_USB_M66592 is not set +CONFIG_USB_MA901=m +CONFIG_USB_MASS_STORAGE=m +CONFIG_USB_MIDI_GADGET=m +CONFIG_USB_MON=m +CONFIG_USB_MOUSE=m +CONFIG_USB_MR800=m +CONFIG_USB_MSI3101=m +CONFIG_USB_MUSB_AM335X_CHILD=m +# CONFIG_USB_MUSB_AM35X is not set +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_UX500=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_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_ZAURUS=m +CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y +CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_HCD_OMAP3=y +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_BLACKLIST_HUB is not set +# CONFIG_USB_OTG_WHITELIST is not set +CONFIG_USB_PHY=y +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_RENESAS_USBHS=m +CONFIG_USB_RENESAS_USBHS_HCD=m +CONFIG_USB_RENESAS_USBHS_UDC=m +CONFIG_USB_S2255=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_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_QUATECH2=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_SERIAL_ZTE=m +CONFIG_USB_SI470X=m +CONFIG_USB_SIERRA_NET=m +# CONFIG_USB_SISUSBVGA_CON is not set +CONFIG_USB_SL811_CS=m +CONFIG_USB_SL811_HCD_ISO=y +# CONFIG_USB_SN9C102 is not set +CONFIG_USB_SPEEDTOUCH=m +CONFIG_USB_STKWEBCAM=m +# CONFIG_USB_STORAGE_DEBUG is not set +CONFIG_USB_STV06XX=m +CONFIG_USB_SUPPORT=y +CONFIG_USB_SWITCH_FSA9480=m +# CONFIG_USB_TI_CPPI41_DMA is not set +CONFIG_USB_U132_HCD=m +CONFIG_USB_UEAGLEATM=m +CONFIG_USB_ULPI=y +CONFIG_USB_ULPI_VIEWPORT=y +CONFIG_USB_USBNET=m +# CONFIG_USB_UX500_DMA is not set +CONFIG_USB_U_ETHER=m +CONFIG_USB_U_RNDIS=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 is not set +CONFIG_USB_WUSB=m +# CONFIG_USB_WUSB_CBAF_DEBUG is not set +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_XHCI_PLATFORM=m +CONFIG_USB_XUSBATM=m +CONFIG_USB_ZD1201=m +CONFIG_USB_ZERO=m +CONFIG_USB_ZERO_HNPTEST=y +CONFIG_USB_ZR364XX=m +CONFIG_USER_NS=y +CONFIG_USER_RETURN_NOTIFIER=y +CONFIG_USER_STACKTRACE_SUPPORT=y +CONFIG_USE_OF=y +CONFIG_USE_PERCPU_NUMA_NODE_ID=y +CONFIG_UTS_NS=y +CONFIG_UWB=m +CONFIG_UWB_HWA=m +CONFIG_UWB_I1480U=m +CONFIG_UWB_WHCI=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_VECTORS_BASE=0xffff0000 +CONFIG_VERSION_SIGNATURE="" +CONFIG_VETH=m +CONFIG_VEXPRESS_CONFIG=y +CONFIG_VFAT_FS=y +CONFIG_VFIO=m +CONFIG_VFIO_IOMMU_SPAPR_TCE=m +CONFIG_VFIO_PCI=m +CONFIG_VFIO_PCI_VGA=y +CONFIG_VFP=y +CONFIG_VFPv3=y +CONFIG_VF_PIT_TIMER=y +# CONFIG_VGACON_SOFT_SCROLLBACK is not set +CONFIG_VGA_ARB=y +CONFIG_VGA_ARB_MAX_GPUS=16 +CONFIG_VGA_SWITCHEROO=y +CONFIG_VHOST=m +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_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_ADV_DEBUG is not set +CONFIG_VIDEO_AU0828=m +CONFIG_VIDEO_AU0828_V4L2=y +CONFIG_VIDEO_BT819=m +CONFIG_VIDEO_BT848=m +CONFIG_VIDEO_BT856=m +CONFIG_VIDEO_BT866=m +CONFIG_VIDEO_BTCX=m +CONFIG_VIDEO_BWQCAM=m +CONFIG_VIDEO_CAFE_CCIC=m +# CONFIG_VIDEO_CODA is not set +CONFIG_VIDEO_CPIA2=m +CONFIG_VIDEO_CQCAM=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_DM6446_CCDC=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_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_MEM2MEM_TESTDEV=m +CONFIG_VIDEO_MEYE=m +CONFIG_VIDEO_MSP3400=m +CONFIG_VIDEO_MT9V011=m +# CONFIG_VIDEO_MX3 is not set +CONFIG_VIDEO_MXB=m +CONFIG_VIDEO_OMAP2_VOUT=m +CONFIG_VIDEO_OMAP2_VOUT_VRFB=y +CONFIG_VIDEO_OUTPUT_CONTROL=m +CONFIG_VIDEO_OV7640=m +CONFIG_VIDEO_OV7670=m +CONFIG_VIDEO_PMS=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_SAA6588=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_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_SH_MOBILE_CEU=m +CONFIG_VIDEO_SH_MOBILE_CSI2=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_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_TLG2300=m +CONFIG_VIDEO_TM6000=m +CONFIG_VIDEO_TM6000_ALSA=m +CONFIG_VIDEO_TM6000_DVB=m +CONFIG_VIDEO_TUNER=m +CONFIG_VIDEO_TVAUDIO=m +CONFIG_VIDEO_TVEEPROM=m +CONFIG_VIDEO_TVP5150=m +CONFIG_VIDEO_TW2804=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_INT_DEVICE=m +CONFIG_VIDEO_VIA_CAMERA=m +CONFIG_VIDEO_VIVI=m +CONFIG_VIDEO_VP27SMPX=m +CONFIG_VIDEO_VPX3220=m +CONFIG_VIDEO_W9966=m +CONFIG_VIDEO_WM8739=m +CONFIG_VIDEO_WM8775=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_MMIO_CMDLINE_DEVICES=y +CONFIG_VIRTUALIZATION=y +CONFIG_VIRT_CPU_ACCOUNTING=y +CONFIG_VIRT_CPU_ACCOUNTING_NATIVE=y +CONFIG_VIRT_DRIVERS=y +CONFIG_VIRT_TO_BUS=y +CONFIG_VITESSE_PHY=y +CONFIG_VLAN_8021Q=m +CONFIG_VLAN_8021Q_GVRP=y +CONFIG_VLAN_8021Q_MVRP=y +CONFIG_VLSI_FIR=m +CONFIG_VM86=y +CONFIG_VME_BUS=m +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_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_W35UND=m +CONFIG_W83627HF_WDT=m +CONFIG_W83697HF_WDT=m +CONFIG_W83697UG_WDT=m +CONFIG_W83877F_WDT=m +CONFIG_W83977F_WDT=m +CONFIG_WAFER_WDT=m +CONFIG_WAN=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_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_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_WL1251=m +CONFIG_WL1251_SDIO=m +CONFIG_WL1251_SPI=m +CONFIG_WL12XX=m +CONFIG_WL18XX=m +CONFIG_WLAGS49_H2=m +CONFIG_WLAGS49_H25=m +CONFIG_WLAN=y +CONFIG_WLCORE=m +CONFIG_WLCORE_SDIO=m +CONFIG_WLCORE_SPI=m +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_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_STATIC_CPU_HAS is not set +# CONFIG_X86_DECODER_SELFTEST is not set +CONFIG_X86_DEV_DMA_OPS=y +CONFIG_X86_ESPFIX32=y +CONFIG_X86_ESPFIX64=y +CONFIG_X86_EXTENDED_PLATFORM=y +# CONFIG_X86_E_POWERSAVER is not set +CONFIG_X86_GENERIC=y +# CONFIG_X86_GOLDFISH is not set +CONFIG_X86_GX_SUSPMOD=m +CONFIG_X86_HT=y +CONFIG_X86_INTEL_LPSS=y +CONFIG_X86_INTEL_MID=y +CONFIG_X86_INTEL_PSTATE=y +CONFIG_X86_INTEL_USERCOPY=y +CONFIG_X86_INTERNODE_CACHE_SHIFT=6 +CONFIG_X86_IO_APIC=y +CONFIG_X86_L1_CACHE_SHIFT=6 +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_MDFLD=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_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_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_UP_APIC_MSI=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_WANT_INTEL_MID=y +CONFIG_X86_X2APIC=y +CONFIG_X86_X32=y +CONFIG_XENFS=m +CONFIG_XEN_ACPI_PROCESSOR=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_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_PRIVILEGED_GUEST=y +CONFIG_XEN_PVHVM=y +CONFIG_XEN_SAVE_RESTORE=y +CONFIG_XEN_SCRUB_PAGES=y +CONFIG_XEN_SELFBALLOONING=y +CONFIG_XEN_SYS_HYPERVISOR=y +CONFIG_XEN_TMEM=m +CONFIG_XEN_WDT=m +CONFIG_XEN_XENBUS_FRONTEND=y +CONFIG_XFRM=y +CONFIG_XFRM_ALGO=m +CONFIG_XFRM_IPCOMP=m +# CONFIG_XFRM_MIGRATE is not set +# CONFIG_XFRM_STATISTICS is not set +# 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_EMACLITE is not set +CONFIG_XILINX_LL_TEMAC=m +CONFIG_XILLYBUS=m +CONFIG_XILLYBUS_OF=m +CONFIG_XILLYBUS_PCIE=m +# CONFIG_XMON_DEFAULT is not set +CONFIG_XMON_DISASSEMBLY=y +CONFIG_XO15_EBOOK=m +CONFIG_XOR_BLOCKS=m +CONFIG_XPS=y +CONFIG_XPS_USB_HCD_XILINX=y +CONFIG_XZ_DEC=y +CONFIG_XZ_DEC_BCJ=y +CONFIG_XZ_DEC_POWERPC=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_ZRAM=m +# CONFIG_ZRAM_DEBUG is not set +CONFIG_ZSMALLOC=y +CONFIG_ZSWAP=y --- linux-3.13.0.orig/debian.master/config/enforce +++ linux-3.13.0/debian.master/config/enforce @@ -0,0 +1,130 @@ +# +# SECURITY items +# +# Ensure this option is enabled. +value CONFIG_COMPAT_BRK n +value CONFIG_DEVKMEM n +value CONFIG_LSM_MMAP_MIN_ADDR 0 +value CONFIG_SECURITY y +!exists CONFIG_SECURITY_FILE_CAPABILITIES | value CONFIG_SECURITY_FILE_CAPABILITIES y +value CONFIG_SECURITY_SELINUX y +value CONFIG_SECURITY_SMACK y +value CONFIG_SECURITY_YAMA y +value CONFIG_SYN_COOKIES y +value CONFIG_DEFAULT_SECURITY_APPARMOR y +value CONFIG_DEBUG_INFO y +# For architectures which support this option ensure it is enabled. +!exists CONFIG_XEN_ACPI_PROCESSOR | value CONFIG_XEN_ACPI_PROCESSOR y +!exists CONFIG_SECCOMP | value CONFIG_SECCOMP y +!exists CONFIG_HAVE_ARCH_SECCOMP_FILTER | value CONFIG_SECCOMP_FILTER y +!exists CONFIG_CC_STACKPROTECTOR_REGULAR | value CONFIG_CC_STACKPROTECTOR_REGULAR y +!exists CONFIG_DEBUG_RODATA | value CONFIG_DEBUG_RODATA y +!exists CONFIG_DEBUG_SET_MODULE_RONX | value CONFIG_DEBUG_SET_MODULE_RONX y +!exists CONFIG_STRICT_DEVMEM | value CONFIG_STRICT_DEVMEM y +# For architectures which support this option ensure it is disabled. +!exists CONFIG_COMPAT_VDSO | value CONFIG_COMPAT_VDSO n +!exists CONFIG_ACPI_CUSTOM_METHOD | value CONFIG_ACPI_CUSTOM_METHOD n +# Default to 32768 on ARM, 65536 for everything else -- arm64 and armhf must match (LP:1418140) +(arch armel armhf arm64 &/ value CONFIG_DEFAULT_MMAP_MIN_ADDR 32768) | \ + value CONFIG_DEFAULT_MMAP_MIN_ADDR 65536 + +# upstart requires DEVTMPFS be enabled and mounted by default. +value CONFIG_DEVTMPFS y +value CONFIG_DEVTMPFS_MOUNT y + +# some /dev nodes require POSIX ACLs, like /dev/dsp +value CONFIG_TMPFS_POSIX_ACL y + +# Ramdisk size should be a minimum of 64M +value CONFIG_BLK_DEV_RAM_SIZE 65536 + +# LVM requires dm_mod built in to activate correctly (LP: #560717) +value CONFIG_BLK_DEV_DM y + +# sysfs: ensure all DEPRECATED items are off +!exists CONFIG_SYSFS_DEPRECATED_V2 | value CONFIG_SYSFS_DEPRECATED_V2 n +!exists CONFIG_SYSFS_DEPRECATED | value CONFIG_SYSFS_DEPRECATED n + +# automatically add local version will cause packaging failure +value CONFIG_LOCALVERSION_AUTO n + +# provide framebuffer console form the start +# UbuntuSpec:foundations-m-grub2-boot-framebuffer +value CONFIG_FRAMEBUFFER_CONSOLE y + +# GRUB changes will rely on built in vesafb on x86, +# UbuntuSpec:foundations-m-grub2-boot-framebuffer +#(( arch i386 | arch amd64 ) & value CONFIG_FB_VESA y) | \ +# value CONFIG_FB_VESA m | !exists CONFIG_FB_VESA +#value CONFIG_FB_VESA m | !exists CONFIG_FB_VESA + +# Build in uinput module so that it's always available (LP: 584812) +value CONFIG_INPUT_UINPUT y + +# upstart relies on getting all of the kernel arguments +#value CONFIG_INIT_PASS_ALL_PARAMS y + +# Ensure CONFIG_IPV6 is y, if this is a module we get a module load for +# every ipv6 packet, bad. +value 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. +value CONFIG_ECRYPT_FS y + +# Ensure CONFIG_EFI_VARS is y as debian-installer relies on having +# access to efivars when installing in EFI mode. See LP:837332 +value CONFIG_EFI_VARS y | !exists CONFIG_EFI_VARS + +# Ensure CONFIG_VFAT_FS is y for arm, needed to ensure we able to replace +# a kernel with the same version. Also needed for EFI based systems. +#(arch armel armhf arm64 i386 amd64 &/ value CONFIG_VFAT_FS y) | \ +# value CONFIG_VFAT_FS m +value CONFIG_VFAT_FS y + +# Ensure CONFIG_GPIO_TWL4030 is y for arm, LP:921934 +(arch armel armhf &/ value CONFIG_GPIO_TWL4030 y) | \ + value CONFIG_GPIO_TWL4030 m | \ + !exists CONFIG_GPIO_TWL4030 + +# Ensure CONFIG_THERM_ADT746X is y for powerpc-smp flavours. +# See LP:923094 +(flavour powerpc-smp &/ value CONFIG_THERM_ADT746X y) | \ + !exists CONFIG_THERM_ADT746X + +# Ensure CONFIG_NVRAM is y for powerpc-smp, LP:942193 +(flavour powerpc-smp powerpc-e500 powerpc-e500mc &/ value CONFIG_NVRAM y) | \ + (flavour powerpc-e500 powerpc-e500mc) | \ + value CONFIG_NVRAM m | \ + !exists CONFIG_NVRAM + +# Ensure CONFIG_STUB_POULSBO is disabled if CONFIG_DRM_PSB is enabled +# See LP:899244 +(!exists CONFIG_DRM_PSB | value CONFIG_DRM_PSB n) | \ +((value CONFIG_DRM_PSB y | value CONFIG_DRM_PSB m) & (value CONFIG_STUB_POULSBO n | !exists CONFIG_STUB_POULSBO)) + +# Ensure CONFIG_B43_BCMA_EXTRA is disabled if CONFIG_BRCMSMAC is enabled. +# Otherwise b43 and brcmsmac will overlap in the hardware they claim to +# support. +(!exists CONFIG_BRCMSMAC | value CONFIG_BRCMSMAC n) | \ +((value CONFIG_BRCMSMAC y | value CONFIG_BRCMSMAC m) & (value CONFIG_B43_BCMA_EXTRA n | !exists CONFIG_B43_BCMA_EXTRA)) + +# CONFIG_I2C_DESIGNWARE_PLATFORM is required by Calxeda Highbank +(flavour highbank &/ value CONFIG_I2C_DESIGNWARE_PLATFORM y) | \ +value CONFIG_I2C_DESIGNWARE_PLATFORM m | \ +!exists CONFIG_I2C_DESIGNWARE_PLATFORM + +# Don't use the generic ehci/ohci code on omap, it doesn't work +((flavour generic & arch armhf &/ value CONFIG_USB_EHCI_HCD_PLATFORM n & value CONFIG_USB_OHCI_HCD_PLATFORM n) | \ + !exists MISSING) + +# CONFIG_DRM_MGAG200, experimental driver hangs boot on HP Proliant Gen8 +# See LP:1042903 +(!exists CONFIG_DRM_MGAG200 | value CONFIG_DRM_MGAG200 n) + +# Required if /init is a shell script. +value CONFIG_BINFMT_SCRIPT y + +# CPUIDLE is a source of instabilities on ECX-1000, leave it off +((flavour generic & arch armhf &/ value CONFIG_CPU_IDLE n) | \ + !exists MISSING) --- linux-3.13.0.orig/debian.master/config/i386/config.common.i386 +++ linux-3.13.0/debian.master/config/i386/config.common.i386 @@ -0,0 +1,312 @@ +# +# Config options for config.common.i386 automatically generated by splitconfig.pl +# +# CONFIG_64BIT is not set +CONFIG_AC97_BUS=m +# CONFIG_AHCI_IMX is not set +CONFIG_AIC79XX_RESET_DELAY_MS=5000 +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_ASYNC_TX_DMA=y +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_ATA_PIIX=y +# CONFIG_ATOMIC64_SELFTEST is not set +# CONFIG_AUDIT_ARCH is not set +CONFIG_BCH=m +CONFIG_CC_STACKPROTECTOR=y +CONFIG_COMEDI_ISA_DRIVERS=y +CONFIG_COMPACTION=y +CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y +CONFIG_CPU_IDLE=y +CONFIG_CRASH_DUMP=y +# CONFIG_DEBUG_MEMORY_INIT is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 +CONFIG_EXYNOS_VIDEO=y +# CONFIG_EZX_PCAP is not set +CONFIG_FB_ATY128=m +CONFIG_FB_BACKLIGHT=y +CONFIG_FB_BOOT_VESA_SUPPORT=y +CONFIG_FB_DDC=m +# CONFIG_FB_MACMODES is not set +CONFIG_FB_RADEON=m +CONFIG_FB_SVGALIB=m +CONFIG_FB_SYS_COPYAREA=m +CONFIG_FB_SYS_FILLRECT=m +CONFIG_FB_SYS_FOPS=m +CONFIG_FB_SYS_IMAGEBLIT=m +CONFIG_FB_UDL=m +CONFIG_FB_VOODOO1=m +# CONFIG_FMAN_P1023 is not set +CONFIG_FMAN_P3040_P4080_P5020=y +# CONFIG_FONTS is not set +CONFIG_FRAME_WARN=1024 +CONFIG_FSL_FMAN=y +CONFIG_FUNCTION_TRACER=y +CONFIG_GENERIC_PHY=m +CONFIG_GPIO_GENERIC=m +CONFIG_GPIO_TWL6040=m +# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set +CONFIG_HAVE_AOUT=y +# 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_CPCI=y +CONFIG_HOTPLUG_PCI_SHPC=m +CONFIG_HUGETLB_PAGE=y +# CONFIG_HW_RANDOM_ATMEL is not set +# CONFIG_HZ_100 is not set +CONFIG_I2C_ALGOBIT=m +# CONFIG_IDE is not set +# CONFIG_IKCONFIG is not set +CONFIG_ILLEGAL_POINTER_VALUE=0 +CONFIG_IMA=y +CONFIG_INFINIBAND_AMSO1100=m +CONFIG_INPUT_IDEAPAD_SLIDEBAR=m +CONFIG_IOMMU_SUPPORT=y +CONFIG_IPMI_SI_PROBE_DEFAULTS=y +# CONFIG_IRQ_DOMAIN_DEBUG is not set +CONFIG_ISA=y +CONFIG_KSM=y +CONFIG_KVM=m +CONFIG_LEDS_TRIGGER_HEARTBEAT=m +CONFIG_LIBERTAS_MESH=y +CONFIG_LIS3L02DQ=m +CONFIG_LOG_BUF_SHIFT=17 +CONFIG_MACINTOSH_DRIVERS=y +# CONFIG_MATH_EMULATION is not set +# CONFIG_MFD_TI_AM335X_TSCADC is not set +# 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_SM_COMMON=m +CONFIG_MUSB_PIO_ONLY=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_NET_TULIP=y +CONFIG_NOP_USB_XCEIV=m +CONFIG_NO_HZ_IDLE=y +CONFIG_NR_CPUS=8 +CONFIG_NVRAM=m +CONFIG_OUTPUT_FORMAT="elf32-i386" +CONFIG_PAGE_OFFSET=0xC0000000 +CONFIG_PARIDE_EPATC8=y +CONFIG_PATA_SIS=y +CONFIG_PCCARD=m +CONFIG_PCIEPORTBUS=y +CONFIG_PERCPU_TEST=m +CONFIG_PERSISTENT_KEYRINGS=y +CONFIG_PHYSICAL_ALIGN=0x1000000 +CONFIG_PHYSICAL_START=0x1000000 +CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_PMIC_ADP5520=y +CONFIG_PMIC_DA903X=y +CONFIG_PM_DEBUG=y +CONFIG_PM_RUNTIME=y +CONFIG_PM_WAKELOCKS=y +CONFIG_PPS=m +CONFIG_PPS_CLIENT_GPIO=m +CONFIG_PPS_CLIENT_LDISC=m +CONFIG_PPS_CLIENT_PARPORT=m +CONFIG_PROBE_EVENTS=y +# CONFIG_PSTORE_CONSOLE is not set +CONFIG_PSTORE_RAM=m +CONFIG_PTP_1588_CLOCK=m +CONFIG_RAPIDIO_CPS_GEN2=m +CONFIG_RAPIDIO_CPS_XX=m +CONFIG_RAPIDIO_TSI568=m +CONFIG_RAPIDIO_TSI57X=m +CONFIG_RAPIDIO_TSI721=m +CONFIG_RBTREE_TEST=m +CONFIG_RCU_CPU_STALL_TIMEOUT=60 +CONFIG_RCU_FANOUT=32 +CONFIG_RCU_FAST_NO_HZ=y +# CONFIG_RCU_NOCB_CPU is not set +CONFIG_REED_SOLOMON=m +CONFIG_REGULATOR_FIXED_VOLTAGE=m +# CONFIG_REGULATOR_S2MPS11 is not set +CONFIG_REISERFS_FS=m +CONFIG_RFKILL=y +CONFIG_RT2800USB_UNKNOWN=y +# CONFIG_RT2X00_LIB_DEBUGFS is not set +CONFIG_RTC_DRV_CMOS=y +CONFIG_RTC_DRV_DS3232=m +CONFIG_SAMSUNG_USB2PHY=m +CONFIG_SAMSUNG_USB3PHY=m +CONFIG_SATA_AHCI_PLATFORM=m +# CONFIG_SATA_HIGHBANK is not set +CONFIG_SATA_SVW=m +CONFIG_SCHED_AUTOGROUP=y +CONFIG_SCHED_SMT=y +CONFIG_SCSI_SPI_ATTRS=y +CONFIG_SCSI_SRP_ATTRS=m +CONFIG_SENSORS_SCH56XX_COMMON=m +CONFIG_SERIAL_8250_PCI=y +# CONFIG_SERIAL_FSL_LPUART is not set +CONFIG_SERIO_ALTERA_PS2=m +CONFIG_SERIO_ARC_PS2=m +CONFIG_SERIO_I8042=y +CONFIG_SERIO_PARKBD=m +CONFIG_SERIO_PCIPS2=m +CONFIG_SERIO_PS2MULT=m +CONFIG_SERIO_RAW=m +CONFIG_SND=m +CONFIG_SND_COMPRESS_OFFLOAD=m +CONFIG_SND_EMU10K1_SEQ=m +CONFIG_SND_OPL3_LIB_SEQ=m +CONFIG_SND_OPL4_LIB_SEQ=m +CONFIG_SND_PCM=m +CONFIG_SND_SBAWE_SEQ=m +CONFIG_SND_SOC=m +CONFIG_SND_SOC_I2C_AND_SPI=m +CONFIG_SND_TIMER=m +CONFIG_SOUND=m +# CONFIG_SPARSEMEM_MANUAL is not set +CONFIG_SPI_PXA2XX_PCI=m +CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y +# CONFIG_SQUASHFS_DECOMP_SINGLE is not set +# CONFIG_SQUASHFS_FILE_CACHE is not set +CONFIG_SQUASHFS_FILE_DIRECT=y +CONFIG_SRAM=y +CONFIG_STACK_TRACER=y +CONFIG_STAGING=y +# CONFIG_STANDALONE is not set +CONFIG_SUNRPC_DEBUG=y +CONFIG_SWIOTLB=y +CONFIG_SYSCTL_SYSCALL=y +CONFIG_SYS_HYPERVISOR=y +CONFIG_TEST_KSTRTOX=m +CONFIG_TEST_STRING_HELPERS=m +CONFIG_TICK_CPU_ACCOUNTING=y +CONFIG_TIGON3=m +CONFIG_TIMER_STATS=y +CONFIG_TRANSPARENT_HUGEPAGE=y +# CONFIG_TWL4030_CORE is not set +CONFIG_TWL6040_CORE=y +CONFIG_UIO_AEC=m +CONFIG_UIO_CIF=m +CONFIG_UIO_DMEM_GENIRQ=m +CONFIG_UIO_MF624=m +CONFIG_UIO_NETX=m +CONFIG_UIO_PDRV_GENIRQ=m +CONFIG_UIO_SERCOS3=m +CONFIG_UNUSED_SYMBOLS=y +CONFIG_USB_ADUTUX=m +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y +CONFIG_USB_APPLEDISPLAY=m +CONFIG_USB_C67X00_HCD=m +CONFIG_USB_CATC=m +CONFIG_USB_CHIPIDEA=m +CONFIG_USB_CYPRESS_CY7C63=m +CONFIG_USB_CYTHERM=m +CONFIG_USB_DWC3=m +# CONFIG_USB_DWC3_OMAP is not set +CONFIG_USB_DYNAMIC_MINORS=y +CONFIG_USB_EHCI_HCD_PLATFORM=y +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHSET_TEST_FIXTURE=m +CONFIG_USB_EMI26=m +CONFIG_USB_EMI62=m +CONFIG_USB_EZUSB_FX2=m +CONFIG_USB_FOTG210_HCD=m +CONFIG_USB_FTDI_ELAN=m +CONFIG_USB_FUSBH200_HCD=m +CONFIG_USB_GADGET=m +# CONFIG_USB_G_MULTI is not set +CONFIG_USB_HCD_BCMA=m +CONFIG_USB_HCD_SSB=m +CONFIG_USB_HSIC_USB3503=m +CONFIG_USB_IDMOUSE=m +CONFIG_USB_IOWARRIOR=m +CONFIG_USB_IPHETH=m +CONFIG_USB_ISIGHTFW=m +CONFIG_USB_ISP116X_HCD=m +CONFIG_USB_ISP1301=m +CONFIG_USB_ISP1362_HCD=m +CONFIG_USB_ISP1760_HCD=m +CONFIG_USB_KAWETH=m +CONFIG_USB_LCD=m +CONFIG_USB_LD=m +CONFIG_USB_LED=m +CONFIG_USB_LEGOTOWER=m +CONFIG_USB_MDC800=m +CONFIG_USB_MICROTEK=m +CONFIG_USB_MUSB_HDRC=m +CONFIG_USB_MUSB_TUSB6010=m +CONFIG_USB_OHCI_HCD_PLATFORM=y +# CONFIG_USB_OTG is not set +CONFIG_USB_OXU210HP_HCD=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_PRINTER=m +CONFIG_USB_R8A66597_HCD=m +CONFIG_USB_RCAR_PHY=m +CONFIG_USB_RIO500=m +CONFIG_USB_RTL8150=m +CONFIG_USB_RTL8152=m +CONFIG_USB_SERIAL=m +CONFIG_USB_SEVSEG=m +CONFIG_USB_SISUSBVGA=m +CONFIG_USB_SL811_HCD=m +CONFIG_USB_STORAGE=m +CONFIG_USB_STORAGE_ALAUDA=m +CONFIG_USB_STORAGE_CYPRESS_ATACB=m +CONFIG_USB_STORAGE_DATAFAB=m +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_TEST=m +CONFIG_USB_TMC=m +CONFIG_USB_TRANCEVIBRATOR=m +CONFIG_USB_UHCI_HCD=y +CONFIG_USB_USS720=m +CONFIG_USB_WUSB_CBAF=m +CONFIG_USB_YUREX=m +CONFIG_VFIO_IOMMU_TYPE1=m +CONFIG_VGASTATE=m +CONFIG_VGA_CONSOLE=y +CONFIG_VIRTIO=y +CONFIG_VIRTIO_BALLOON=y +CONFIG_VIRTIO_BLK=y +CONFIG_VIRTIO_CONSOLE=y +CONFIG_VIRTIO_MMIO=y +CONFIG_VIRTIO_NET=y +CONFIG_VIRTIO_PCI=y +CONFIG_WIL6210=m +# CONFIG_WIMAX_GDM72XX_SDIO is not set +CONFIG_WIMAX_GDM72XX_USB=y +CONFIG_X86_MINIMUM_CPU_FAMILY=5 +CONFIG_X86_SPEEDSTEP_LIB=y +CONFIG_XEN=y +CONFIG_XEN_MAX_DOMAIN_MEMORY=64 +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_ARMTHUMB=y +CONFIG_XZ_DEC_IA64=y +CONFIG_XZ_DEC_SPARC=y +CONFIG_XZ_DEC_TEST=m +CONFIG_XZ_DEC_X86=y +# CONFIG_ZONE_DMA32 is not set +CONFIG_ZONE_DMA_FLAG=1 --- linux-3.13.0.orig/debian.master/config/i386/config.flavour.generic +++ linux-3.13.0/debian.master/config/i386/config.flavour.generic @@ -0,0 +1,10 @@ +# +# Config options for config.flavour.generic automatically generated by splitconfig.pl +# +CONFIG_HZ=250 +# CONFIG_HZ_1000 is not set +CONFIG_HZ_250=y +# CONFIG_IRQ_FORCED_THREADING_DEFAULT is not set +# CONFIG_PREEMPT is not set +# CONFIG_PREEMPT_RCU is not set +CONFIG_PREEMPT_VOLUNTARY=y --- linux-3.13.0.orig/debian.master/config/i386/config.flavour.lowlatency +++ linux-3.13.0/debian.master/config/i386/config.flavour.lowlatency @@ -0,0 +1,10 @@ +# +# Config options for config.flavour.lowlatency automatically generated by splitconfig.pl +# +CONFIG_HZ=1000 +CONFIG_HZ_1000=y +# CONFIG_HZ_250 is not set +CONFIG_IRQ_FORCED_THREADING_DEFAULT=y +CONFIG_PREEMPT=y +CONFIG_PREEMPT_RCU=y +# CONFIG_PREEMPT_VOLUNTARY is not set --- linux-3.13.0.orig/debian.master/config/powerpc/config.common.powerpc +++ linux-3.13.0/debian.master/config/powerpc/config.common.powerpc @@ -0,0 +1,338 @@ +# +# Config options for config.common.powerpc automatically generated by splitconfig.pl +# +CONFIG_64BIT=y +CONFIG_AC97_BUS=m +# CONFIG_AHCI_IMX is not set +CONFIG_AIC79XX_RESET_DELAY_MS=15000 +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_ASYNC_TX_DMA is not set +CONFIG_ATA_PIIX=m +# CONFIG_ATOMIC64_SELFTEST is not set +CONFIG_AUDIT_ARCH=y +# CONFIG_BATTERY_TWL4030_MADC is not set +CONFIG_BCH=m +# CONFIG_CC_STACKPROTECTOR is not set +# CONFIG_CODE_PATCHING_SELFTEST is not set +# CONFIG_COMEDI_ISA_DRIVERS is not set +CONFIG_COMPACTION=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_CPU_BIG_ENDIAN=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y +CONFIG_CPU_IDLE=y +# CONFIG_CPU_LITTLE_ENDIAN is not set +# CONFIG_CRASH_DUMP is not set +# CONFIG_DEBUG_MEMORY_INIT is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 +CONFIG_EXYNOS_VIDEO=y +# CONFIG_EZX_PCAP is not set +CONFIG_FB_ATY128=y +CONFIG_FB_BACKLIGHT=y +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +CONFIG_FB_DDC=y +CONFIG_FB_IBM_GXT4500=m +CONFIG_FB_MACMODES=y +CONFIG_FB_RADEON=y +CONFIG_FB_SVGALIB=m +CONFIG_FB_VOODOO1=y +# CONFIG_FONTS is not set +CONFIG_FRAME_WARN=1024 +CONFIG_FUNCTION_TRACER=y +# CONFIG_GENERIC_CSUM is not set +CONFIG_GENERIC_PHY=m +CONFIG_GENERIC_TBSYNC=y +CONFIG_GPIO_GENERIC=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_BOOTMEM_INFO_NODE is not set +# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set +CONFIG_HOTPLUG_PCI_CPCI=y +CONFIG_HOTPLUG_PCI_SHPC=m +CONFIG_HVCS=y +CONFIG_HVC_OLD_HVSI=y +CONFIG_HVC_UDBG=y +CONFIG_HW_RANDOM_ATMEL=m +CONFIG_HW_RANDOM_POWERNV=y +CONFIG_HZ=250 +# CONFIG_HZ_100 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ_250=y +CONFIG_I2C_ALGOBIT=y +# CONFIG_IBMEBUS is not set +CONFIG_IBMVETH=m +# CONFIG_IDE is not set +# CONFIG_IKCONFIG is not set +# CONFIG_IMA is not set +CONFIG_INFINIBAND_AMSO1100=m +# CONFIG_INPUT_IDEAPAD_SLIDEBAR is not set +CONFIG_IOMMU_SUPPORT=y +CONFIG_IPMI_SI_PROBE_DEFAULTS=y +# CONFIG_IRQ_ALL_CPUS is not set +# CONFIG_IRQ_DOMAIN_DEBUG is not set +# CONFIG_IRQ_FORCED_THREADING_DEFAULT is not set +# CONFIG_ISA is not set +CONFIG_KSM=y +CONFIG_KVM=y +CONFIG_KVM_BOOK3S_64=m +CONFIG_LEDS_TRIGGER_HEARTBEAT=m +CONFIG_LIBERTAS_MESH=y +CONFIG_LIS3L02DQ=m +CONFIG_LOG_BUF_SHIFT=17 +# CONFIG_LPARCFG is not set +CONFIG_MACINTOSH_DRIVERS=y +CONFIG_MATH_EMULATION=y +# CONFIG_MEMORY_HOTREMOVE is not set +# CONFIG_MFD_TI_AM335X_TSCADC is not set +# 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_OF_PARTS=m +CONFIG_MTD_SM_COMMON=m +CONFIG_MUSB_PIO_ONLY=y +CONFIG_NET_TULIP=y +CONFIG_NODES_SHIFT=8 +CONFIG_NOP_USB_XCEIV=m +CONFIG_NO_HZ_FULL=y +CONFIG_NVRAM=y +# CONFIG_PARIDE_EPATC8 is not set +CONFIG_PATA_SIS=m +CONFIG_PCCARD=m +CONFIG_PCIEPORTBUS=y +CONFIG_PCI_SYSCALL=y +CONFIG_PERCPU_TEST=m +CONFIG_PERSISTENT_KEYRINGS=y +CONFIG_PHYSICAL_ALIGN=0x04000000 +CONFIG_PHYSICAL_START=0x00000000 +CONFIG_PHY_EXYNOS_DP_VIDEO=m +CONFIG_PMIC_ADP5520=y +CONFIG_PMIC_DA903X=y +# CONFIG_PM_DEBUG is not set +CONFIG_PM_RUNTIME=y +CONFIG_PM_WAKELOCKS=y +# 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_EPAPR_HV_BYTECHAN=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_PPS_CLIENT_GPIO=m +CONFIG_PPS_CLIENT_LDISC=m +CONFIG_PPS_CLIENT_PARPORT=m +# CONFIG_PREEMPT is not set +# CONFIG_PREEMPT_RCU is not set +CONFIG_PREEMPT_VOLUNTARY=y +CONFIG_PROBE_EVENTS=y +CONFIG_PSERIES_ENERGY=m +# CONFIG_PSTORE_CONSOLE is not set +CONFIG_PSTORE_RAM=m +CONFIG_PTP_1588_CLOCK=m +CONFIG_RAPIDIO_CPS_GEN2=y +CONFIG_RAPIDIO_CPS_XX=y +CONFIG_RAPIDIO_TSI568=y +CONFIG_RAPIDIO_TSI57X=y +CONFIG_RAPIDIO_TSI721=y +CONFIG_RBTREE_TEST=m +CONFIG_RCU_CPU_STALL_TIMEOUT=60 +CONFIG_RCU_FAST_NO_HZ=y +CONFIG_RCU_USER_QS=y +CONFIG_REED_SOLOMON=m +CONFIG_REGULATOR_FIXED_VOLTAGE=m +CONFIG_REGULATOR_S2MPS11=m +CONFIG_REISERFS_FS=m +CONFIG_RFKILL=y +CONFIG_RT2800USB_UNKNOWN=y +# CONFIG_RT2X00_LIB_DEBUGFS is not set +# CONFIG_RTAS_FLASH is not set +CONFIG_RTC_DRV_CMOS=m +CONFIG_SAMSUNG_USB2PHY=m +CONFIG_SAMSUNG_USB3PHY=m +CONFIG_SATA_AHCI_PLATFORM=m +# CONFIG_SATA_HIGHBANK is not set +CONFIG_SATA_SVW=y +CONFIG_SCHED_AUTOGROUP=y +CONFIG_SCSI_SPI_ATTRS=m +# CONFIG_SENSORS_SCH56XX_COMMON is not set +CONFIG_SERIAL_8250_PCI=m +# CONFIG_SERIAL_FSL_LPUART is not set +CONFIG_SERIAL_OF_PLATFORM=m +CONFIG_SERIO_ALTERA_PS2=m +CONFIG_SERIO_APBPS2=m +CONFIG_SERIO_ARC_PS2=m +CONFIG_SERIO_I8042=y +CONFIG_SERIO_OLPC_APSP=m +CONFIG_SERIO_PARKBD=m +CONFIG_SERIO_PCIPS2=m +CONFIG_SERIO_PS2MULT=m +CONFIG_SERIO_RAW=m +CONFIG_SERIO_XILINX_XPS_PS2=m +CONFIG_SIMPLE_GPIO=y +CONFIG_SND=m +CONFIG_SND_COMPRESS_OFFLOAD=m +CONFIG_SND_EMU10K1_SEQ=m +CONFIG_SND_OPL3_LIB_SEQ=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_I2C_AND_SPI=m +CONFIG_SND_TIMER=m +CONFIG_SOUND=m +CONFIG_SPAPR_TCE_IOMMU=y +CONFIG_SPI_PXA2XX_PCI=m +CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y +# CONFIG_SQUASHFS_DECOMP_SINGLE is not set +# CONFIG_SQUASHFS_FILE_CACHE is not set +CONFIG_SQUASHFS_FILE_DIRECT=y +CONFIG_SRAM=y +CONFIG_STACK_TRACER=y +CONFIG_STAGING=y +CONFIG_STANDALONE=y +# CONFIG_SUNRPC_DEBUG is not set +CONFIG_SWIOTLB=y +CONFIG_SYSCTL_SYSCALL=y +# CONFIG_SYS_HYPERVISOR is not set +CONFIG_TCG_IBMVTPM=m +CONFIG_TEST_KSTRTOX=m +CONFIG_TEST_STRING_HELPERS=m +CONFIG_TIGON3=m +CONFIG_TIMER_STATS=y +CONFIG_TWL4030_CORE=y +CONFIG_TWL6040_CORE=y +CONFIG_UDBG_RTAS_CONSOLE=y +CONFIG_UIO_AEC=m +CONFIG_UIO_CIF=m +CONFIG_UIO_DMEM_GENIRQ=m +CONFIG_UIO_MF624=m +CONFIG_UIO_NETX=m +CONFIG_UIO_PDRV_GENIRQ=m +CONFIG_UIO_SERCOS3=m +CONFIG_UNUSED_SYMBOLS=y +CONFIG_USB_ADUTUX=m +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y +CONFIG_USB_APPLEDISPLAY=m +CONFIG_USB_C67X00_HCD=m +CONFIG_USB_CATC=m +CONFIG_USB_CHIPIDEA=m +CONFIG_USB_CYPRESS_CY7C63=m +CONFIG_USB_CYTHERM=m +CONFIG_USB_DWC3=m +# CONFIG_USB_DWC3_OMAP is not set +CONFIG_USB_DYNAMIC_MINORS=y +CONFIG_USB_EHCI_HCD_PLATFORM=y +CONFIG_USB_EHCI_HCD_PPC_OF=y +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHSET_TEST_FIXTURE=m +CONFIG_USB_EMI26=m +CONFIG_USB_EMI62=m +CONFIG_USB_EZUSB_FX2=m +CONFIG_USB_FOTG210_HCD=m +CONFIG_USB_FSL_USB2=m +CONFIG_USB_FTDI_ELAN=m +CONFIG_USB_FUSBH200_HCD=m +CONFIG_USB_GADGET=m +# CONFIG_USB_G_MULTI is not set +CONFIG_USB_HCD_BCMA=m +CONFIG_USB_HCD_SSB=m +CONFIG_USB_HSIC_USB3503=m +CONFIG_USB_IDMOUSE=m +CONFIG_USB_IOWARRIOR=m +CONFIG_USB_IPHETH=m +CONFIG_USB_ISIGHTFW=m +CONFIG_USB_ISP116X_HCD=m +CONFIG_USB_ISP1301=m +CONFIG_USB_ISP1362_HCD=m +CONFIG_USB_ISP1760_HCD=m +CONFIG_USB_KAWETH=m +CONFIG_USB_LCD=m +CONFIG_USB_LD=m +CONFIG_USB_LED=m +CONFIG_USB_LEGOTOWER=m +CONFIG_USB_MDC800=m +CONFIG_USB_MICROTEK=m +CONFIG_USB_MUSB_DSPS=m +CONFIG_USB_MUSB_HDRC=m +CONFIG_USB_MUSB_TUSB6010=m +CONFIG_USB_OHCI_HCD_PLATFORM=y +CONFIG_USB_OHCI_HCD_PPC_OF=y +CONFIG_USB_OHCI_HCD_PPC_OF_BE=y +CONFIG_USB_OXU210HP_HCD=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_PRINTER=m +CONFIG_USB_R8A66597_HCD=m +CONFIG_USB_RCAR_PHY=m +CONFIG_USB_RIO500=m +CONFIG_USB_RTL8150=m +CONFIG_USB_RTL8152=m +CONFIG_USB_SERIAL=m +CONFIG_USB_SEVSEG=m +CONFIG_USB_SISUSBVGA=m +CONFIG_USB_SL811_HCD=m +CONFIG_USB_STORAGE=m +CONFIG_USB_STORAGE_ALAUDA=m +CONFIG_USB_STORAGE_CYPRESS_ATACB=m +CONFIG_USB_STORAGE_DATAFAB=m +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_TEST=m +CONFIG_USB_TMC=m +CONFIG_USB_TRANCEVIBRATOR=m +CONFIG_USB_UHCI_HCD=y +CONFIG_USB_USS720=m +CONFIG_USB_WUSB_CBAF=m +CONFIG_USB_YUREX=m +# CONFIG_VFIO_IOMMU_TYPE1 is not set +CONFIG_VGASTATE=m +CONFIG_VGA_CONSOLE=y +CONFIG_VIRTIO=m +CONFIG_VIRTIO_BALLOON=m +CONFIG_VIRTIO_BLK=m +CONFIG_VIRTIO_CONSOLE=m +CONFIG_VIRTIO_MMIO=m +CONFIG_VIRTIO_NET=m +CONFIG_VIRTIO_PCI=m +CONFIG_VIRT_CPU_ACCOUNTING_GEN=y +CONFIG_WIL6210=m +# CONFIG_WIMAX_GDM72XX_SDIO is not set +CONFIG_WIMAX_GDM72XX_USB=y +# CONFIG_XMON is not set +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_ARMTHUMB=y +CONFIG_XZ_DEC_IA64=y +CONFIG_XZ_DEC_SPARC=y +CONFIG_XZ_DEC_TEST=m +CONFIG_XZ_DEC_X86=y +CONFIG_ZONE_DMA_FLAG=1 --- linux-3.13.0.orig/debian.master/config/powerpc/config.flavour.powerpc-e500 +++ linux-3.13.0/debian.master/config/powerpc/config.flavour.powerpc-e500 @@ -0,0 +1,85 @@ +# +# Config options for config.flavour.powerpc-e500 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_BSC9131_RDB=y +CONFIG_DEFAULT_UIMAGE=y +# 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_FMAN_P1023=y +# CONFIG_FMAN_P3040_P4080_P5020 is not set +CONFIG_FORCE_MAX_ZONEORDER=11 +CONFIG_FSL_FMAN=y +# CONFIG_FSL_QMAN_FQ_LOOKUP is not set +# CONFIG_FSL_RIO is not set +CONFIG_FSL_ULI1575=y +CONFIG_GE_FPGA=y +CONFIG_GE_IMP3A=y +CONFIG_HAS_FSL_QBMAN=y +CONFIG_HAS_RAPIDIO=y +# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set +# CONFIG_HIBERNATION is not set +CONFIG_HUGETLB_PAGE=y +CONFIG_KERNEL_START=0xc0000000 +CONFIG_KSI8560=y +CONFIG_MMIO_NVRAM=y +CONFIG_MPC8536_DS=y +CONFIG_MPC8540_ADS=y +CONFIG_MPC8560_ADS=y +CONFIG_MPC85xx_CDS=y +CONFIG_MPC85xx_DS=y +CONFIG_MPC85xx_MDS=y +CONFIG_MPC85xx_RDB=y +# 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_NO_HZ_IDLE=y +CONFIG_NR_CPUS=8 +CONFIG_P1010_RDB=y +CONFIG_P1022_DS=y +CONFIG_P1022_RDK=y +CONFIG_P1023_RDS=y +CONFIG_PAGE_OFFSET=0xc0000000 +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_DOORBELL=y +CONFIG_PPC_EPAPR_HV_PIC=y +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 is not set +# CONFIG_PPC_P7_NAP is not set +# CONFIG_PPC_RTAS is not set +# CONFIG_PPC_WSP is not set +# CONFIG_PPC_XICS is not set +CONFIG_RCU_FANOUT=32 +# CONFIG_RCU_NOCB_CPU is not set +CONFIG_RTC_DRV_DS3232=m +CONFIG_SBC8548=y +CONFIG_SCSI_SRP_ATTRS=m +CONFIG_SOCRATES=y +CONFIG_STX_GP3=y +CONFIG_TICK_CPU_ACCOUNTING=y +CONFIG_TQM8540=y +CONFIG_TQM8541=y +CONFIG_TQM8548=y +CONFIG_TQM8555=y +CONFIG_TQM8560=y +CONFIG_USB_OTG=y +CONFIG_WORD_SIZE=32 +CONFIG_XES_MPC85xx=y --- linux-3.13.0.orig/debian.master/config/powerpc/config.flavour.powerpc-e500mc +++ linux-3.13.0/debian.master/config/powerpc/config.flavour.powerpc-e500mc @@ -0,0 +1,85 @@ +# +# 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_BSC9131_RDB 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_FMAN_P1023 is not set +CONFIG_FMAN_P3040_P4080_P5020=y +CONFIG_FORCE_MAX_ZONEORDER=11 +CONFIG_FSL_FMAN=y +# CONFIG_FSL_QMAN_FQ_LOOKUP is not set +CONFIG_FSL_RIO=y +# CONFIG_FSL_ULI1575 is not set +# CONFIG_GE_FPGA is not set +# CONFIG_GE_IMP3A is not set +CONFIG_HAS_FSL_QBMAN=y +CONFIG_HAS_RAPIDIO=y +# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set +# CONFIG_HIBERNATION is not set +CONFIG_HUGETLB_PAGE=y +CONFIG_KERNEL_START=0xc0000000 +# CONFIG_KSI8560 is not set +# CONFIG_MMIO_NVRAM is not set +# 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_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_NO_HZ_IDLE=y +CONFIG_NR_CPUS=8 +# CONFIG_P1010_RDB is not set +# CONFIG_P1022_DS is not set +# CONFIG_P1022_RDK is not set +# CONFIG_P1023_RDS is not set +CONFIG_PAGE_OFFSET=0xc0000000 +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_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_WSP is not set +# CONFIG_PPC_XICS is not set +CONFIG_RCU_FANOUT=32 +# CONFIG_RCU_NOCB_CPU is not set +CONFIG_RTC_DRV_DS3232=y +# CONFIG_SBC8548 is not set +CONFIG_SCSI_SRP_ATTRS=m +# CONFIG_SOCRATES is not set +# CONFIG_STX_GP3 is not set +CONFIG_TICK_CPU_ACCOUNTING=y +# 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_USB_OTG=y +CONFIG_WORD_SIZE=32 +# CONFIG_XES_MPC85xx is not set --- linux-3.13.0.orig/debian.master/config/powerpc/config.flavour.powerpc-smp +++ linux-3.13.0/debian.master/config/powerpc/config.flavour.powerpc-smp @@ -0,0 +1,59 @@ +# +# 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_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_FSL_FMAN is not set +# CONFIG_FSL_ULI1575 is not set +# CONFIG_GE_FPGA is not set +# CONFIG_HAS_FSL_QBMAN is not set +# CONFIG_HAS_RAPIDIO is not set +# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set +CONFIG_HIBERNATION=y +# CONFIG_HUGETLB_PAGE is not set +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_NO_HZ_IDLE=y +CONFIG_NR_CPUS=4 +CONFIG_PAGE_OFFSET=0xc0000000 +# 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_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_WSP is not set +# CONFIG_PPC_XICS is not set +CONFIG_RCU_FANOUT=32 +# CONFIG_RCU_NOCB_CPU is not set +CONFIG_RTC_DRV_DS3232=m +CONFIG_SCSI_SRP_ATTRS=m +CONFIG_TICK_CPU_ACCOUNTING=y +# CONFIG_USB_OTG is not set +CONFIG_WORD_SIZE=32 --- linux-3.13.0.orig/debian.master/config/powerpc/config.flavour.powerpc64-emb +++ linux-3.13.0/debian.master/config/powerpc/config.flavour.powerpc64-emb @@ -0,0 +1,67 @@ +# +# 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_DEFAULT_UIMAGE=y +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=y +CONFIG_FORCE_MAX_ZONEORDER=13 +# CONFIG_FSL_FMAN is not set +CONFIG_FSL_QMAN_FQ_LOOKUP=y +CONFIG_FSL_RIO=y +# CONFIG_FSL_ULI1575 is not set +# CONFIG_GE_FPGA is not set +CONFIG_HAS_FSL_QBMAN=y +CONFIG_HAS_RAPIDIO=y +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +# CONFIG_HIBERNATION is not set +CONFIG_HUGETLB_PAGE=y +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_NO_HZ_IDLE=y +CONFIG_NR_CPUS=8 +# CONFIG_NUMA is not set +CONFIG_PAGE_OFFSET=0xc000000000000000 +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_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=y +# 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_WSP=y +CONFIG_PPC_XICS=y +CONFIG_RCU_FANOUT=32 +# CONFIG_RCU_NOCB_CPU is not set +CONFIG_RTC_DRV_DS3232=y +# CONFIG_SCHED_SMT is not set +# CONFIG_SCOM_DEBUGFS is not set +CONFIG_SCSI_SRP_ATTRS=m +# CONFIG_SPARSEMEM_MANUAL is not set +# CONFIG_TICK_CPU_ACCOUNTING is not set +# CONFIG_U3_DART is not set +CONFIG_USB_OTG=y +CONFIG_WORD_SIZE=64 --- linux-3.13.0.orig/debian.master/config/powerpc/config.flavour.powerpc64-smp +++ linux-3.13.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_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_FSL_FMAN is not set +# CONFIG_FSL_ULI1575 is not set +# CONFIG_GE_FPGA is not set +# CONFIG_HAS_FSL_QBMAN is not set +# CONFIG_HAS_RAPIDIO is not set +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +CONFIG_HIBERNATION=y +CONFIG_HUGETLB_PAGE=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_NO_HZ_IDLE is not set +CONFIG_NR_CPUS=1024 +CONFIG_NUMA=y +CONFIG_PAGE_OFFSET=0xc000000000000000 +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_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_WSP is not set +CONFIG_PPC_XICS=y +CONFIG_RCU_FANOUT=64 +CONFIG_RCU_NOCB_CPU=y +CONFIG_RTC_DRV_DS3232=m +CONFIG_SCHED_SMT=y +CONFIG_SCOM_DEBUGFS=y +CONFIG_SCSI_SRP_ATTRS=y +CONFIG_SPARSEMEM_MANUAL=y +CONFIG_U3_DART=y +# CONFIG_USB_OTG is not set +CONFIG_WORD_SIZE=64 --- linux-3.13.0.orig/debian.master/config/ppc64el/config.common.ppc64el +++ linux-3.13.0/debian.master/config/ppc64el/config.common.ppc64el @@ -0,0 +1,367 @@ +# +# Config options for config.common.ppc64el automatically generated by splitconfig.pl +# +CONFIG_64BIT=y +# CONFIG_AHCI_IMX is not set +CONFIG_AIC79XX_RESET_DELAY_MS=5000 +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_ASYNC_TX_DMA is not set +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_ATA_PIIX=m +# CONFIG_ATOMIC64_SELFTEST is not set +CONFIG_AUDIT_ARCH=y +CONFIG_BCH=m +# CONFIG_CC_STACKPROTECTOR is not set +CONFIG_CODE_PATCHING_SELFTEST=y +CONFIG_COMPACTION=y +CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y +# CONFIG_CPU_BIG_ENDIAN is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set +CONFIG_CPU_IDLE=y +CONFIG_CPU_LITTLE_ENDIAN=y +CONFIG_CRASH_DUMP=y +CONFIG_DEBUG_MEMORY_INIT=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 +# CONFIG_DEFAULT_UIMAGE is not set +CONFIG_EPAPR_BOOT=y +# CONFIG_EXYNOS_VIDEO is not set +# CONFIG_EZX_PCAP is not set +CONFIG_FB_ATY128=m +CONFIG_FB_BACKLIGHT=y +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +CONFIG_FB_DDC=m +CONFIG_FB_IBM_GXT4500=y +CONFIG_FB_MACMODES=y +CONFIG_FB_RADEON=m +CONFIG_FB_SVGALIB=m +CONFIG_FB_SYS_COPYAREA=m +CONFIG_FB_SYS_FILLRECT=m +CONFIG_FB_SYS_FOPS=m +CONFIG_FB_SYS_IMAGEBLIT=m +CONFIG_FB_UDL=m +CONFIG_FB_VOODOO1=m +# CONFIG_FMAN_P1023 is not set +CONFIG_FMAN_P3040_P4080_P5020=y +# CONFIG_FONTS is not set +CONFIG_FORCE_MAX_ZONEORDER=9 +CONFIG_FRAME_WARN=2048 +CONFIG_FSL_FMAN=y +# CONFIG_FSL_ULI1575 is not set +CONFIG_FUNCTION_TRACER=y +CONFIG_GENERIC_CSUM=y +# CONFIG_GENERIC_PHY is not set +# CONFIG_GENERIC_TBSYNC is not set +# CONFIG_GE_FPGA is not set +CONFIG_GPIO_GENERIC=m +# CONFIG_HAS_FSL_QBMAN is not set +# CONFIG_HAS_RAPIDIO is not set +CONFIG_HAVE_64BIT_ALIGNED_ACCESS=y +# CONFIG_HAVE_AOUT 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_CPCI is not set +# CONFIG_HOTPLUG_PCI_SHPC is not set +CONFIG_HUGETLB_PAGE=y +CONFIG_HVCS=m +# CONFIG_HVC_OLD_HVSI is not set +# CONFIG_HVC_UDBG is not set +CONFIG_HW_RANDOM_POWERNV=m +CONFIG_HZ=100 +CONFIG_HZ_100=y +# CONFIG_HZ_1000 is not set +# CONFIG_HZ_250 is not set +CONFIG_I2C_ALGOBIT=m +CONFIG_IBMEBUS=y +CONFIG_IBMVETH=y +CONFIG_IDE=y +CONFIG_IKCONFIG=y +CONFIG_IMA=y +# CONFIG_INFINIBAND_AMSO1100 is not set +CONFIG_INPUT_IDEAPAD_SLIDEBAR=m +CONFIG_IOMMU_SUPPORT=y +CONFIG_IPMI_SI_PROBE_DEFAULTS=y +CONFIG_IRQ_ALL_CPUS=y +CONFIG_IRQ_DOMAIN_DEBUG=y +# CONFIG_IRQ_FORCED_THREADING_DEFAULT is not set +CONFIG_KERNEL_START=0xc000000000000000 +CONFIG_KSM=y +# CONFIG_KVM_BOOK3S_64 is not set +CONFIG_LEDS_TRIGGER_HEARTBEAT=m +CONFIG_LIBERTAS_MESH=y +CONFIG_LOG_BUF_SHIFT=17 +CONFIG_LPARCFG=y +# CONFIG_MACINTOSH_DRIVERS is not set +CONFIG_MEMORY_HOTREMOVE=y +# CONFIG_MFD_TI_AM335X_TSCADC is not set +# 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_OF_PARTS=m +CONFIG_MTD_SM_COMMON=m +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +# CONFIG_NET_TULIP is not set +CONFIG_NODES_SHIFT=8 +CONFIG_NONSTATIC_KERNEL=y +CONFIG_NOP_USB_XCEIV=m +# CONFIG_NO_HZ_FULL is not set +CONFIG_NO_HZ_IDLE=y +CONFIG_NR_CPUS=2048 +CONFIG_NUMA=y +CONFIG_PAGE_OFFSET=0xc000000000000000 +CONFIG_PARIDE_EPATC8=y +CONFIG_PATA_SIS=m +# CONFIG_PCCARD is not set +# CONFIG_PCIEPORTBUS is not set +CONFIG_PCI_SYSCALL=y +# CONFIG_PERCPU_TEST is not set +# CONFIG_PERSISTENT_KEYRINGS is not set +CONFIG_PHYSICAL_START=0x00000000 +CONFIG_PHYS_ADDR_T_64BIT=y +# CONFIG_PHY_EXYNOS_DP_VIDEO is not set +# CONFIG_PMIC_ADP5520 is not set +# CONFIG_PMIC_DA903X is not set +# CONFIG_PM_DEBUG is not set +# CONFIG_PM_RUNTIME is not set +# CONFIG_PM_WAKELOCKS 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_DENORMALISATION=y +# CONFIG_PPC_DISABLE_WERROR is not set +CONFIG_PPC_DOORBELL=y +# CONFIG_PPC_EPAPR_HV_BYTECHAN is not set +# 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_WSP is not set +CONFIG_PPC_XICS=y +CONFIG_PPS=y +# CONFIG_PPS_CLIENT_GPIO is not set +# CONFIG_PPS_CLIENT_LDISC is not set +# CONFIG_PPS_CLIENT_PARPORT is not set +# CONFIG_PREEMPT is not set +# CONFIG_PREEMPT_RCU is not set +CONFIG_PREEMPT_VOLUNTARY=y +CONFIG_PROBE_EVENTS=y +CONFIG_PSERIES_ENERGY=y +# CONFIG_PSTORE_CONSOLE is not set +CONFIG_PSTORE_RAM=m +CONFIG_PTP_1588_CLOCK=y +CONFIG_RAPIDIO_CPS_GEN2=m +CONFIG_RAPIDIO_CPS_XX=m +CONFIG_RAPIDIO_TSI568=m +CONFIG_RAPIDIO_TSI57X=m +# CONFIG_RBTREE_TEST is not set +CONFIG_RCU_CPU_STALL_TIMEOUT=21 +CONFIG_RCU_FANOUT=64 +# CONFIG_RCU_FAST_NO_HZ is not set +# CONFIG_RCU_NOCB_CPU is not set +# CONFIG_RCU_USER_QS is not set +CONFIG_REED_SOLOMON=m +CONFIG_REGULATOR_FIXED_VOLTAGE=m +# CONFIG_REGULATOR_S2MPS11 is not set +CONFIG_REISERFS_FS=y +# CONFIG_RFKILL is not set +CONFIG_RT2800USB_UNKNOWN=y +CONFIG_RT2X00_LIB_DEBUGFS=y +CONFIG_RTAS_FLASH=m +CONFIG_RTC_DRV_CMOS=m +CONFIG_RTC_DRV_DS3232=m +# CONFIG_SAMSUNG_USB2PHY is not set +# CONFIG_SAMSUNG_USB3PHY is not set +CONFIG_SATA_AHCI_PLATFORM=m +# CONFIG_SATA_HIGHBANK is not set +CONFIG_SATA_SVW=m +# CONFIG_SCHED_AUTOGROUP is not set +CONFIG_SCHED_SMT=y +CONFIG_SCOM_DEBUGFS=y +CONFIG_SCSI_SPI_ATTRS=y +CONFIG_SCSI_SRP_ATTRS=y +# CONFIG_SENSORS_SCH56XX_COMMON is not set +CONFIG_SERIAL_8250_PCI=y +# CONFIG_SERIAL_FSL_LPUART is not set +CONFIG_SERIAL_OF_PLATFORM=y +# CONFIG_SERIO_ALTERA_PS2 is not set +# CONFIG_SERIO_APBPS2 is not set +# CONFIG_SERIO_ARC_PS2 is not set +CONFIG_SERIO_I8042=y +# CONFIG_SERIO_OLPC_APSP is not set +# CONFIG_SERIO_PARKBD is not set +# CONFIG_SERIO_PCIPS2 is not set +# CONFIG_SERIO_PS2MULT is not set +# CONFIG_SERIO_RAW is not set +# CONFIG_SERIO_XILINX_XPS_PS2 is not set +# CONFIG_SIMPLE_GPIO is not set +# CONFIG_SOUND is not set +# CONFIG_SPAPR_TCE_IOMMU is not set +CONFIG_SPARSEMEM_MANUAL=y +CONFIG_SPI_PXA2XX_PCI=m +# CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU is not set +CONFIG_SQUASHFS_DECOMP_SINGLE=y +CONFIG_SQUASHFS_FILE_CACHE=y +# CONFIG_SQUASHFS_FILE_DIRECT is not set +# CONFIG_SRAM is not set +CONFIG_STACK_TRACER=y +# CONFIG_STAGING is not set +CONFIG_STANDALONE=y +# CONFIG_SUNRPC_DEBUG is not set +# CONFIG_SWIOTLB is not set +# CONFIG_SYSCTL_SYSCALL is not set +# CONFIG_SYS_HYPERVISOR is not set +CONFIG_TCG_IBMVTPM=y +# CONFIG_TEST_KSTRTOX is not set +# CONFIG_TEST_STRING_HELPERS is not set +# CONFIG_TICK_CPU_ACCOUNTING is not set +CONFIG_TIGON3=y +# CONFIG_TIMER_STATS is not set +CONFIG_TRANSPARENT_HUGEPAGE=y +# CONFIG_TWL4030_CORE is not set +# CONFIG_TWL6040_CORE is not set +# CONFIG_U3_DART is not set +# CONFIG_UDBG_RTAS_CONSOLE is not set +# CONFIG_UIO_AEC is not set +# CONFIG_UIO_CIF is not set +# CONFIG_UIO_DMEM_GENIRQ is not set +# CONFIG_UIO_MF624 is not set +# CONFIG_UIO_NETX is not set +# CONFIG_UIO_PDRV_GENIRQ is not set +# CONFIG_UIO_SERCOS3 is not set +# CONFIG_UNUSED_SYMBOLS is not set +# CONFIG_USB_ADUTUX is not set +# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set +# CONFIG_USB_APPLEDISPLAY is not set +# CONFIG_USB_C67X00_HCD is not set +# CONFIG_USB_CATC is not set +# CONFIG_USB_CHIPIDEA is not set +# CONFIG_USB_CYPRESS_CY7C63 is not set +# CONFIG_USB_CYTHERM is not set +# CONFIG_USB_DWC3 is not set +# CONFIG_USB_DYNAMIC_MINORS is not set +# CONFIG_USB_EHCI_HCD_PLATFORM is not set +# CONFIG_USB_EHCI_HCD_PPC_OF is not set +# CONFIG_USB_EHCI_ROOT_HUB_TT is not set +# CONFIG_USB_EHSET_TEST_FIXTURE is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_EMI62 is not set +# CONFIG_USB_EZUSB_FX2 is not set +# CONFIG_USB_FOTG210_HCD is not set +# CONFIG_USB_FTDI_ELAN is not set +# CONFIG_USB_FUSBH200_HCD is not set +# CONFIG_USB_GADGET is not set +# CONFIG_USB_HCD_BCMA is not set +# CONFIG_USB_HCD_SSB is not set +# CONFIG_USB_HSIC_USB3503 is not set +# CONFIG_USB_IDMOUSE is not set +# CONFIG_USB_IOWARRIOR is not set +# CONFIG_USB_IPHETH is not set +# CONFIG_USB_ISIGHTFW is not set +# CONFIG_USB_ISP116X_HCD is not set +# CONFIG_USB_ISP1301 is not set +# CONFIG_USB_ISP1362_HCD is not set +# CONFIG_USB_ISP1760_HCD is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_LCD is not set +# CONFIG_USB_LD is not set +# CONFIG_USB_LED is not set +# CONFIG_USB_LEGOTOWER is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USB_OHCI_HCD_PLATFORM is not set +# CONFIG_USB_OHCI_HCD_PPC_OF is not set +# CONFIG_USB_OHCI_HCD_PPC_OF_BE is not set +# CONFIG_USB_OXU210HP_HCD is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_PRINTER is not set +# CONFIG_USB_R8A66597_HCD is not set +# CONFIG_USB_RCAR_PHY is not set +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_RTL8150 is not set +# CONFIG_USB_RTL8152 is not set +# CONFIG_USB_SERIAL is not set +# CONFIG_USB_SEVSEG is not set +# CONFIG_USB_SISUSBVGA is not set +# CONFIG_USB_SL811_HCD is not set +CONFIG_USB_STORAGE=m +# CONFIG_USB_STORAGE_ALAUDA is not set +# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_ENE_UB6250 is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_STORAGE_KARMA is not set +# CONFIG_USB_STORAGE_ONETOUCH is not set +# CONFIG_USB_STORAGE_REALTEK is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_USBAT is not set +# CONFIG_USB_TEST is not set +# CONFIG_USB_TMC is not set +# CONFIG_USB_TRANCEVIBRATOR is not set +# CONFIG_USB_UHCI_HCD is not set +# CONFIG_USB_USS720 is not set +# CONFIG_USB_WUSB_CBAF is not set +# CONFIG_USB_YUREX is not set +CONFIG_VGASTATE=m +# CONFIG_VGA_CONSOLE is not set +CONFIG_VIRTIO=y +CONFIG_VIRTIO_BALLOON=y +CONFIG_VIRTIO_BLK=y +CONFIG_VIRTIO_CONSOLE=y +# CONFIG_VIRTIO_MMIO is not set +CONFIG_VIRTIO_NET=y +CONFIG_VIRTIO_PCI=y +# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set +CONFIG_WIL6210=m +CONFIG_WORD_SIZE=64 +CONFIG_XMON=y +# CONFIG_XZ_DEC_ARM is not set +# CONFIG_XZ_DEC_ARMTHUMB is not set +# CONFIG_XZ_DEC_IA64 is not set +# CONFIG_XZ_DEC_SPARC is not set +# CONFIG_XZ_DEC_TEST is not set +# CONFIG_XZ_DEC_X86 is not set +CONFIG_ZONE_DMA_FLAG=1 --- linux-3.13.0.orig/debian.master/config/ppc64el/config.flavour.generic +++ linux-3.13.0/debian.master/config/ppc64el/config.flavour.generic @@ -0,0 +1,3 @@ +# +# Config options for config.flavour.generic automatically generated by splitconfig.pl +# --- linux-3.13.0.orig/debian.master/config/x32/config.common.x32 +++ linux-3.13.0/debian.master/config/x32/config.common.x32 @@ -0,0 +1 @@ +# nothing here yet --- linux-3.13.0.orig/debian.master/config/x32/config.flavour.generic +++ linux-3.13.0/debian.master/config/x32/config.flavour.generic @@ -0,0 +1 @@ +# nothing here yet --- linux-3.13.0.orig/debian.master/control.d/flavour-control.stub +++ linux-3.13.0/debian.master/control.d/flavour-control.stub @@ -0,0 +1,129 @@ +# 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 +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), module-init-tools (>= 3.3-pre11-4ubuntu3) +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 +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 +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 +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 +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 +Architecture: ARCH +Section: devel +Priority: optional +Depends: ${misc:Depends}, SRCPKGNAME-cloud-tools-PKGVER-ABINUM +Description: Linux kernel version specific cloud tools for version PKGVER-ABINUM + This package provides the architecture dependant parts for kernel + version locked tools for cloud for version PKGVER-ABINUM on + =HUMAN=. + +Package: SRCPKGNAME-udebs-FLAVOUR +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-3.13.0.orig/debian.master/control.d/generic.inclusion-list +++ linux-3.13.0/debian.master/control.d/generic.inclusion-list @@ -0,0 +1,171 @@ +arch/*/{crypto,kernel,oprofile} +arch/*/kvm/kvm.ko +arch/x86/kvm/kvm-intel.ko +arch/x86/kvm/kvm-amd.ko +crypto/* +drivers/acpi/* +drivers/ata/ahci_platform.ko +drivers/ata/ahci.ko +drivers/ata/acard-ahci.ko +drivers/ata/libahci.ko +drivers/block/nbd.ko +drivers/block/floppy.ko +drivers/block/cryptoloop.ko +drivers/block/rbd.ko +drivers/char/hangcheck-timer.ko +drivers/char/hw_random/virtio-rng.ko +drivers/char/ipmi/ipmi_msghandler.ko +drivers/char/lp.ko +drivers/char/nvram.ko +drivers/char/ppdev.ko +drivers/char/raw.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/misc/vmw_balloon.ko +drivers/misc/vmw_vmci/vmw_vmci.ko +drivers/net/caif/caif_virtio.ko +drivers/net/mii.ko +drivers/net/ethernet/8390/8390.ko +drivers/net/ethernet/realtek/8139too.ko +drivers/net/ethernet/realtek/8139cp.ko +drivers/net/appletalk/ipddp.ko +drivers/net/bonding/bonding.ko +drivers/net/ppp/bsd_comp.ko +drivers/net/dummy.ko +drivers/net/ethernet/intel/e1000/e1000.ko +drivers/net/ethernet/intel/e1000e/e1000e.ko +drivers/net/eql.ko +drivers/net/ifb.ko +drivers/net/ethernet/intel/igbvf/igbvf.ko +drivers/net/ethernet/intel/ixgbevf/ixgbevf.ko +drivers/net/macvlan.ko +drivers/net/macvtap.ko +drivers/net/ethernet/8390/ne2k-pci.ko +drivers/net/netconsole.ko +drivers/net/ethernet/amd/pcnet32.ko +drivers/net/hyperv/hv_netvsc.ko +drivers/net/ppp/* +drivers/net/slip/* +drivers/net/veth.ko +drivers/net/vmxnet3/vmxnet3.ko +drivers/net/vxlan.ko +drivers/net/xen-netback/* +drivers/parport/parport.ko +drivers/parport/parport_pc.ko +drivers/phy/phy-core.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_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/scsi_tgt.ko +drivers/scsi/vmw_pvscsi.ko +drivers/scsi/hv_storvsc.ko +drivers/scsi/virtio_scsi.ko +drivers/usb/storage/usb-storage.ko +drivers/vhost/vringh.ko +drivers/video/cirrusfb.ko +drivers/video/output.ko +drivers/video/syscopyarea.ko +drivers/video/sysfillrect.ko +drivers/video/sysimgblt.ko +drivers/video/hyperv_fb.ko +drivers/video/vga16fb.ko +drivers/video/vgastate.ko +drivers/video/xen-fbfront.ko +drivers/video/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/exofs/libore.ko +fs/ext*/* +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/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 +sound/core/* +sound/pci/snd-ens1370.ko +sound/drivers/pcsp/snd-pcsp.ko --- linux-3.13.0.orig/debian.master/control.d/vars.generic +++ linux-3.13.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" --- linux-3.13.0.orig/debian.master/control.d/vars.generic-lpae +++ linux-3.13.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-3.13.0.orig/debian.master/control.d/vars.lowlatency +++ linux-3.13.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" --- linux-3.13.0.orig/debian.master/control.d/vars.powerpc-e500 +++ linux-3.13.0/debian.master/control.d/vars.powerpc-e500 @@ -0,0 +1,6 @@ +supported="32-bit Freescale Power e500v1 and e500v2" +target="Geared toward server systems." +desc="32-bit Freescale Power e500v1 and e500v2" +bootloader="grub-ieee1275" +provides="redhat-cluster-modules, ivtv-modules" +arch="powerpc" --- linux-3.13.0.orig/debian.master/control.d/vars.powerpc-e500mc +++ linux-3.13.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-3.13.0.orig/debian.master/control.d/vars.powerpc-smp +++ linux-3.13.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-3.13.0.orig/debian.master/control.d/vars.powerpc64-emb +++ linux-3.13.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-3.13.0.orig/debian.master/control.d/vars.powerpc64-smp +++ linux-3.13.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-3.13.0.orig/debian.master/control.stub +++ linux-3.13.0/debian.master/control.stub @@ -0,0 +1,977 @@ +Source: linux +Section: devel +Priority: optional +Maintainer: Ubuntu Kernel Team +Standards-Version: 3.9.4.0 +Build-Depends: debhelper (>= 5), cpio, module-init-tools, kernel-wedge (>= 2.24ubuntu1), 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] +Build-Depends-Indep: xmlto, docbook-utils, ghostscript, transfig, bzip2, sharutils, asciidoc +Vcs-Git: http://kernel.ubuntu.com/git-repos/ubuntu/ubuntu-trusty.git +XS-Testsuite: autopkgtest +#XS-Testsuite-Depends: gcc-4.7 binutils + +Package: linux-source-3.13.0 +Architecture: all +Section: devel +Priority: optional +Provides: linux-source, linux-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 3.13.0 with Ubuntu patches + This package provides the source code for the Linux kernel version + 3.13.0. + . + This package is mainly meant for other packages to use, in order to build + custom flavours. + . + If you wish to use this package to create a custom Linux kernel, then it + is suggested that you investigate the package kernel-package, which has + been designed to ease the task of creating kernel image packages. + . + If you are simply trying to build third-party modules for your kernel, + you do not want this package. Install the appropriate linux-headers + package instead. + +Package: linux-doc +Architecture: all +Section: doc +Priority: optional +Depends: ${misc:Depends} +Conflicts: linux-doc-3 +Replaces: linux-doc-3 +Description: Linux kernel specific documentation for version 3.13.0 + This package provides the various documents in the 3.13.0 kernel + Documentation/ subdirectory. These document kernel subsystems, APIs, device + drivers, and so on. See + /usr/share/doc/linux-doc/00-INDEX for a list of what is + contained in each file. + +Package: linux-headers-3.13.0-100 +Architecture: all +Multi-Arch: foreign +Section: devel +Priority: optional +Depends: ${misc:Depends}, coreutils | fileutils (>= 4.0) +Description: Header files related to Linux kernel version 3.13.0 + This package provides kernel header files for version 3.13.0, for sites + that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.13.0-100/debian.README.gz for details + +Package: linux-libc-dev +Architecture: i386 amd64 armhf arm64 x32 powerpc ppc64el +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), linux-kernel-headers +Replaces: libc6-dev (<< 2.3.2.ds1-6), libc6.1-dev (<< 2.3.2.ds1-6), dvb-dev (<< 1.0.1-6), linux-kernel-headers, libdrm-dev +Provides: linux-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 linux-headers-* packages for that. + +Package: linux-tools-common +Architecture: all +Multi-Arch: foreign +Section: kernel +Priority: optional +Depends: ${misc:Depends} +Conflicts: linux-lts-utopic-tools-common, linux-lts-vivid-tools-common +Replaces: linux-tools (<= 2.6.32-16.25), linux-lts-utopic-tools-common, linux-lts-vivid-tools-common +Description: Linux kernel version specific tools for version 3.13.0 + This package provides the architecture independent parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version PGKVER. + +Package: linux-tools-3.13.0-100 +Architecture: i386 amd64 armhf arm64 powerpc ppc64el +Section: devel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-tools-common +Description: Linux kernel version specific tools for version 3.13.0-100 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 3.13.0-100 on + 64 bit x86. + You probabally want to install linux-tools-3.13.0-100-. + +Package: linux-cloud-tools-common +Architecture: all +Multi-Arch: foreign +Section: kernel +Priority: optional +Breaks: linux-tools-common (<< 3.13.0-8.28), hv-kvp-daemon-init (<< 3.13) +Conflicts: linux-lts-utopic-cloud-tools-common, linux-lts-vivid-cloud-tools-common +Replaces: linux-tools-common (<< 3.13.0-8.28), hv-kvp-daemon-init (<< 3.13), linux-lts-utopic-cloud-tools-common, linux-lts-vivid-cloud-tools-common +Depends: ${misc:Depends} +Description: Linux kernel version specific cloud tools for version 3.13.0 + This package provides the architecture independent parts for kernel + version locked tools for cloud tools for version PGKVER. + +Package: linux-cloud-tools-3.13.0-100 +Architecture: i386 amd64 armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-cloud-tools-common +Description: Linux kernel version specific cloud tools for version 3.13.0-100 + This package provides the architecture dependant parts for kernel + version locked tools for cloud tools for version 3.13.0-100 on + 64 bit x86. + You probabally want to install linux-cloud-tools-3.13.0-100-. + + +Package: linux-image-3.13.0-100-generic +Architecture: i386 amd64 armhf arm64 ppc64el +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), module-init-tools (>= 3.3-pre11-4ubuntu3) +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-doc-3.13.0 | linux-source-3.13.0, linux-tools, linux-headers-3.13.0-100-generic +Description: Linux kernel image for version 3.13.0 on 64 bit x86 SMP + This package contains the Linux kernel image for version 3.13.0 on + 64 bit x86 SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Generic processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-generic meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.13.0-100-generic +Architecture: i386 amd64 armhf arm64 ppc64el +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.13.0-100-generic, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel extra modules for version 3.13.0 on 64 bit x86 SMP + This package contains the Linux kernel extra modules for version 3.13.0 on + 64 bit x86 SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Generic processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-generic meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.13.0-100-generic +Architecture: i386 amd64 armhf arm64 ppc64el +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.13.0-100, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.13.0 on 64 bit x86 SMP + This package provides kernel header files for version 3.13.0 on + 64 bit x86 SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.13.0-100/debian.README.gz for details. + +Package: linux-image-3.13.0-100-generic-dbgsym +Architecture: i386 amd64 armhf arm64 ppc64el +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.13.0 on 64 bit x86 SMP + This package provides a kernel debug image for version 3.13.0 on + 64 bit x86 SMP. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-tools-3.13.0-100-generic +Architecture: i386 amd64 armhf arm64 ppc64el +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-tools-3.13.0-100 +Description: Linux kernel version specific tools for version 3.13.0-100 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 3.13.0-100 on + 64 bit x86. + +Package: linux-cloud-tools-3.13.0-100-generic +Architecture: i386 amd64 armhf arm64 ppc64el +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-cloud-tools-3.13.0-100 +Description: Linux kernel version specific cloud tools for version 3.13.0-100 + This package provides the architecture dependant parts for kernel + version locked tools for cloud for version 3.13.0-100 on + 64 bit x86. + +Package: linux-udebs-generic +XC-Package-Type: udeb +Section: debian-installer +Architecture: i386 amd64 armhf arm64 ppc64el +Depends: ${udeb:Depends} +Description: Metapackage depending on kernel udebs + This package depends on the all udebs that the kernel build generated, + for easier version and migration tracking. + + +Package: linux-image-3.13.0-100-generic-lpae +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), module-init-tools (>= 3.3-pre11-4ubuntu3) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: flash-kernel [armhf] +Suggests: fdutils, linux-doc-3.13.0 | linux-source-3.13.0, linux-tools, linux-headers-3.13.0-100-generic-lpae +Description: Linux kernel image for version 3.13.0 on 64 bit x86 SMP + This package contains the Linux kernel image for version 3.13.0 on + 64 bit x86 SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Generic LPAE processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-generic-lpae meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.13.0-100-generic-lpae +Architecture: armhf +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.13.0-100-generic-lpae, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel extra modules for version 3.13.0 on 64 bit x86 SMP + This package contains the Linux kernel extra modules for version 3.13.0 on + 64 bit x86 SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Generic LPAE processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-generic-lpae meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.13.0-100-generic-lpae +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.13.0-100, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.13.0 on 64 bit x86 SMP + This package provides kernel header files for version 3.13.0 on + 64 bit x86 SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.13.0-100/debian.README.gz for details. + +Package: linux-image-3.13.0-100-generic-lpae-dbgsym +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.13.0 on 64 bit x86 SMP + This package provides a kernel debug image for version 3.13.0 on + 64 bit x86 SMP. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-tools-3.13.0-100-generic-lpae +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-tools-3.13.0-100 +Description: Linux kernel version specific tools for version 3.13.0-100 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 3.13.0-100 on + 64 bit x86. + +Package: linux-cloud-tools-3.13.0-100-generic-lpae +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-cloud-tools-3.13.0-100 +Description: Linux kernel version specific cloud tools for version 3.13.0-100 + This package provides the architecture dependant parts for kernel + version locked tools for cloud for version 3.13.0-100 on + 64 bit x86. + +Package: linux-udebs-generic-lpae +XC-Package-Type: udeb +Section: debian-installer +Architecture: armhf +Depends: ${udeb:Depends} +Description: Metapackage depending on kernel udebs + This package depends on the all udebs that the kernel build generated, + for easier version and migration tracking. + + +Package: linux-image-3.13.0-100-lowlatency +Architecture: i386 amd64 +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), module-init-tools (>= 3.3-pre11-4ubuntu3) +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] +Suggests: fdutils, linux-doc-3.13.0 | linux-source-3.13.0, linux-tools, linux-headers-3.13.0-100-lowlatency +Description: Linux kernel image for version 3.13.0 on 64 bit x86 SMP + This package contains the Linux kernel image for version 3.13.0 on + 64 bit x86 SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Lowlatency processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-lowlatency meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.13.0-100-lowlatency +Architecture: i386 amd64 +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.13.0-100-lowlatency, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel extra modules for version 3.13.0 on 64 bit x86 SMP + This package contains the Linux kernel extra modules for version 3.13.0 on + 64 bit x86 SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Lowlatency processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-lowlatency meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.13.0-100-lowlatency +Architecture: i386 amd64 +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.13.0-100, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.13.0 on 64 bit x86 SMP + This package provides kernel header files for version 3.13.0 on + 64 bit x86 SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.13.0-100/debian.README.gz for details. + +Package: linux-image-3.13.0-100-lowlatency-dbgsym +Architecture: i386 amd64 +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.13.0 on 64 bit x86 SMP + This package provides a kernel debug image for version 3.13.0 on + 64 bit x86 SMP. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-tools-3.13.0-100-lowlatency +Architecture: i386 amd64 +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-tools-3.13.0-100 +Description: Linux kernel version specific tools for version 3.13.0-100 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 3.13.0-100 on + 64 bit x86. + +Package: linux-cloud-tools-3.13.0-100-lowlatency +Architecture: i386 amd64 +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-cloud-tools-3.13.0-100 +Description: Linux kernel version specific cloud tools for version 3.13.0-100 + This package provides the architecture dependant parts for kernel + version locked tools for cloud for version 3.13.0-100 on + 64 bit x86. + +Package: linux-udebs-lowlatency +XC-Package-Type: udeb +Section: debian-installer +Architecture: i386 amd64 +Depends: ${udeb:Depends} +Description: Metapackage depending on kernel udebs + This package depends on the all udebs that the kernel build generated, + for easier version and migration tracking. + + +Package: linux-image-3.13.0-100-powerpc-e500 +Architecture: powerpc +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6), module-init-tools (>= 3.3-pre11-4ubuntu3) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: grub-ieee1275 +Suggests: fdutils, linux-doc-3.13.0 | linux-source-3.13.0, linux-tools, linux-headers-3.13.0-100-powerpc-e500 +Description: Linux kernel image for version 3.13.0 on 32-bit Freescale Power e500v1 and e500v2 + This package contains the Linux kernel image for version 3.13.0 on + 32-bit Freescale Power e500v1 and e500v2. + . + 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 32-bit Freescale Power e500v1 and e500v2 processors. + . + Geared toward server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc-e500 meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.13.0-100-powerpc-e500 +Architecture: powerpc +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.13.0-100-powerpc-e500, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel extra modules for version 3.13.0 on 32-bit Freescale Power e500v1 and e500v2 + This package contains the Linux kernel extra modules for version 3.13.0 on + 32-bit Freescale Power e500v1 and e500v2. + . + 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 32-bit Freescale Power e500v1 and e500v2 processors. + . + Geared toward server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc-e500 meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.13.0-100-powerpc-e500 +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.13.0-100, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.13.0 on 32-bit Freescale Power e500v1 and e500v2 + This package provides kernel header files for version 3.13.0 on + 32-bit Freescale Power e500v1 and e500v2. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.13.0-100/debian.README.gz for details. + +Package: linux-image-3.13.0-100-powerpc-e500-dbgsym +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.13.0 on 32-bit Freescale Power e500v1 and e500v2 + This package provides a kernel debug image for version 3.13.0 on + 32-bit Freescale Power e500v1 and e500v2. + . + 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-3.13.0-100-powerpc-e500 +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-tools-3.13.0-100 +Description: Linux kernel version specific tools for version 3.13.0-100 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 3.13.0-100 on + 64 bit x86. + +Package: linux-cloud-tools-3.13.0-100-powerpc-e500 +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-cloud-tools-3.13.0-100 +Description: Linux kernel version specific cloud tools for version 3.13.0-100 + This package provides the architecture dependant parts for kernel + version locked tools for cloud for version 3.13.0-100 on + 64 bit x86. + +Package: linux-udebs-powerpc-e500 +XC-Package-Type: udeb +Section: debian-installer +Architecture: powerpc +Depends: ${udeb:Depends} +Description: Metapackage depending on kernel udebs + This package depends on the all udebs that the kernel build generated, + for easier version and migration tracking. + + +Package: linux-image-3.13.0-100-powerpc-e500mc +Architecture: powerpc +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6), module-init-tools (>= 3.3-pre11-4ubuntu3) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: grub-ieee1275 +Suggests: fdutils, linux-doc-3.13.0 | linux-source-3.13.0, linux-tools, linux-headers-3.13.0-100-powerpc-e500mc +Description: Linux kernel image for version 3.13.0 on 32-bit Freescale Power e500mc + This package contains the Linux kernel image for version 3.13.0 on + 32-bit Freescale Power e500mc. + . + 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 32-bit Freescale Power e500mc processors. + . + Geared toward server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc-e500mc meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.13.0-100-powerpc-e500mc +Architecture: powerpc +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.13.0-100-powerpc-e500mc, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel extra modules for version 3.13.0 on 32-bit Freescale Power e500mc + This package contains the Linux kernel extra modules for version 3.13.0 on + 32-bit Freescale Power e500mc. + . + 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 32-bit Freescale Power e500mc processors. + . + Geared toward server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc-e500mc meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.13.0-100-powerpc-e500mc +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.13.0-100, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.13.0 on 32-bit Freescale Power e500mc + This package provides kernel header files for version 3.13.0 on + 32-bit Freescale Power e500mc. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.13.0-100/debian.README.gz for details. + +Package: linux-image-3.13.0-100-powerpc-e500mc-dbgsym +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.13.0 on 32-bit Freescale Power e500mc + This package provides a kernel debug image for version 3.13.0 on + 32-bit Freescale Power e500mc. + . + 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-3.13.0-100-powerpc-e500mc +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-tools-3.13.0-100 +Description: Linux kernel version specific tools for version 3.13.0-100 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 3.13.0-100 on + 64 bit x86. + +Package: linux-cloud-tools-3.13.0-100-powerpc-e500mc +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-cloud-tools-3.13.0-100 +Description: Linux kernel version specific cloud tools for version 3.13.0-100 + This package provides the architecture dependant parts for kernel + version locked tools for cloud for version 3.13.0-100 on + 64 bit x86. + +Package: linux-udebs-powerpc-e500mc +XC-Package-Type: udeb +Section: debian-installer +Architecture: powerpc +Depends: ${udeb:Depends} +Description: Metapackage depending on kernel udebs + This package depends on the all udebs that the kernel build generated, + for easier version and migration tracking. + + +Package: linux-image-3.13.0-100-powerpc-smp +Architecture: powerpc +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6), module-init-tools (>= 3.3-pre11-4ubuntu3) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: yaboot +Suggests: fdutils, linux-doc-3.13.0 | linux-source-3.13.0, linux-tools, linux-headers-3.13.0-100-powerpc-smp +Description: Linux kernel image for version 3.13.0 on 32-bit PowerPC SMP + This package contains the Linux kernel image for version 3.13.0 on + 32-bit PowerPC 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 32-bit PowerPC SMP processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc-smp meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.13.0-100-powerpc-smp +Architecture: powerpc +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.13.0-100-powerpc-smp, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel extra modules for version 3.13.0 on 32-bit PowerPC SMP + This package contains the Linux kernel extra modules for version 3.13.0 on + 32-bit PowerPC 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 32-bit PowerPC SMP processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc-smp meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.13.0-100-powerpc-smp +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.13.0-100, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.13.0 on 32-bit PowerPC SMP + This package provides kernel header files for version 3.13.0 on + 32-bit PowerPC SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.13.0-100/debian.README.gz for details. + +Package: linux-image-3.13.0-100-powerpc-smp-dbgsym +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.13.0 on 32-bit PowerPC SMP + This package provides a kernel debug image for version 3.13.0 on + 32-bit PowerPC 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-3.13.0-100-powerpc-smp +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-tools-3.13.0-100 +Description: Linux kernel version specific tools for version 3.13.0-100 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 3.13.0-100 on + 64 bit x86. + +Package: linux-cloud-tools-3.13.0-100-powerpc-smp +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-cloud-tools-3.13.0-100 +Description: Linux kernel version specific cloud tools for version 3.13.0-100 + This package provides the architecture dependant parts for kernel + version locked tools for cloud for version 3.13.0-100 on + 64 bit x86. + +Package: linux-udebs-powerpc-smp +XC-Package-Type: udeb +Section: debian-installer +Architecture: powerpc +Depends: ${udeb:Depends} +Description: Metapackage depending on kernel udebs + This package depends on the all udebs that the kernel build generated, + for easier version and migration tracking. + + +Package: linux-image-3.13.0-100-powerpc64-emb +Architecture: powerpc +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6), module-init-tools (>= 3.3-pre11-4ubuntu3) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: grub-ieee1275 +Suggests: fdutils, linux-doc-3.13.0 | linux-source-3.13.0, linux-tools, linux-headers-3.13.0-100-powerpc64-emb +Description: Linux kernel image for version 3.13.0 on 64-bit PowerPC SMP Book3E + This package contains the Linux kernel image for version 3.13.0 on + 64-bit PowerPC SMP Book3E. + . + 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 64-bit PowerPC SMP Book3E processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc64-emb meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.13.0-100-powerpc64-emb +Architecture: powerpc +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.13.0-100-powerpc64-emb, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel extra modules for version 3.13.0 on 64-bit PowerPC SMP Book3E + This package contains the Linux kernel extra modules for version 3.13.0 on + 64-bit PowerPC SMP Book3E. + . + 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 64-bit PowerPC SMP Book3E processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc64-emb meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.13.0-100-powerpc64-emb +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.13.0-100, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.13.0 on 64-bit PowerPC SMP Book3E + This package provides kernel header files for version 3.13.0 on + 64-bit PowerPC SMP Book3E. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.13.0-100/debian.README.gz for details. + +Package: linux-image-3.13.0-100-powerpc64-emb-dbgsym +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.13.0 on 64-bit PowerPC SMP Book3E + This package provides a kernel debug image for version 3.13.0 on + 64-bit PowerPC SMP Book3E. + . + 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-3.13.0-100-powerpc64-emb +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-tools-3.13.0-100 +Description: Linux kernel version specific tools for version 3.13.0-100 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 3.13.0-100 on + 64 bit x86. + +Package: linux-cloud-tools-3.13.0-100-powerpc64-emb +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-cloud-tools-3.13.0-100 +Description: Linux kernel version specific cloud tools for version 3.13.0-100 + This package provides the architecture dependant parts for kernel + version locked tools for cloud for version 3.13.0-100 on + 64 bit x86. + +Package: linux-udebs-powerpc64-emb +XC-Package-Type: udeb +Section: debian-installer +Architecture: powerpc +Depends: ${udeb:Depends} +Description: Metapackage depending on kernel udebs + This package depends on the all udebs that the kernel build generated, + for easier version and migration tracking. + + +Package: linux-image-3.13.0-100-powerpc64-smp +Architecture: powerpc +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6), module-init-tools (>= 3.3-pre11-4ubuntu3) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: yaboot +Suggests: fdutils, linux-doc-3.13.0 | linux-source-3.13.0, linux-tools, linux-headers-3.13.0-100-powerpc64-smp +Description: Linux kernel image for version 3.13.0 on 64-bit PowerPC SMP + This package contains the Linux kernel image for version 3.13.0 on + 64-bit PowerPC 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 64-bit PowerPC SMP processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc64-smp meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.13.0-100-powerpc64-smp +Architecture: powerpc +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.13.0-100-powerpc64-smp, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel extra modules for version 3.13.0 on 64-bit PowerPC SMP + This package contains the Linux kernel extra modules for version 3.13.0 on + 64-bit PowerPC 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 64-bit PowerPC SMP processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc64-smp meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.13.0-100-powerpc64-smp +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.13.0-100, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.13.0 on 64-bit PowerPC SMP + This package provides kernel header files for version 3.13.0 on + 64-bit PowerPC SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.13.0-100/debian.README.gz for details. + +Package: linux-image-3.13.0-100-powerpc64-smp-dbgsym +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.13.0 on 64-bit PowerPC SMP + This package provides a kernel debug image for version 3.13.0 on + 64-bit PowerPC 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-3.13.0-100-powerpc64-smp +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-tools-3.13.0-100 +Description: Linux kernel version specific tools for version 3.13.0-100 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 3.13.0-100 on + 64 bit x86. + +Package: linux-cloud-tools-3.13.0-100-powerpc64-smp +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-cloud-tools-3.13.0-100 +Description: Linux kernel version specific cloud tools for version 3.13.0-100 + This package provides the architecture dependant parts for kernel + version locked tools for cloud for version 3.13.0-100 on + 64 bit x86. + +Package: linux-udebs-powerpc64-smp +XC-Package-Type: udeb +Section: debian-installer +Architecture: powerpc +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-3.13.0.orig/debian.master/control.stub.in +++ linux-3.13.0/debian.master/control.stub.in @@ -0,0 +1,121 @@ +Source: linux +Section: devel +Priority: optional +Maintainer: Ubuntu Kernel Team +Standards-Version: 3.9.4.0 +Build-Depends: debhelper (>= 5), cpio, module-init-tools, kernel-wedge (>= 2.24ubuntu1), 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] +Build-Depends-Indep: xmlto, docbook-utils, ghostscript, transfig, bzip2, sharutils, asciidoc +Vcs-Git: http://kernel.ubuntu.com/git-repos/ubuntu/ubuntu-trusty.git +XS-Testsuite: autopkgtest +#XS-Testsuite-Depends: gcc-4.7 binutils + +Package: SRCPKGNAME-source-PKGVER +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 +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 +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 +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 +Architecture: all +Multi-Arch: foreign +Section: kernel +Priority: optional +Depends: ${misc:Depends} +Conflicts: linux-lts-utopic-tools-common, linux-lts-vivid-tools-common +Replaces: SRCPKGNAME-tools (<= 2.6.32-16.25), linux-lts-utopic-tools-common, linux-lts-vivid-tools-common +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 +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 probabally want to install linux-tools-PKGVER-ABINUM-. + +Package: SRCPKGNAME-cloud-tools-common +Architecture: all +Multi-Arch: foreign +Section: kernel +Priority: optional +Breaks: SRCPKGNAME-tools-common (<< 3.13.0-8.28), hv-kvp-daemon-init (<< 3.13) +Conflicts: linux-lts-utopic-cloud-tools-common, linux-lts-vivid-cloud-tools-common +Replaces: SRCPKGNAME-tools-common (<< 3.13.0-8.28), hv-kvp-daemon-init (<< 3.13), linux-lts-utopic-cloud-tools-common, linux-lts-vivid-cloud-tools-common +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 +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 probabally want to install linux-cloud-tools-PKGVER-ABINUM-. + --- linux-3.13.0.orig/debian.master/copyright +++ linux-3.13.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-3.13.0.orig/debian.master/d-i/exclude-firmware.armhf-generic +++ linux-3.13.0/debian.master/d-i/exclude-firmware.armhf-generic @@ -0,0 +1,2 @@ +nic-modules +scsi-modules --- linux-3.13.0.orig/debian.master/d-i/exclude-firmware.armhf-generic-lpae +++ linux-3.13.0/debian.master/d-i/exclude-firmware.armhf-generic-lpae @@ -0,0 +1,2 @@ +nic-modules +scsi-modules --- linux-3.13.0.orig/debian.master/d-i/exclude-modules.amd64-virtual +++ linux-3.13.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-3.13.0.orig/debian.master/d-i/exclude-modules.arm64-generic +++ linux-3.13.0/debian.master/d-i/exclude-modules.arm64-generic @@ -0,0 +1,11 @@ +serial-modules +pata-modules +firewire-core-modules +floppy-modules +usb-modules +pcmcia-storage-modules +fb-modules +nic-pcmcia-modules +pcmcia-modules +nic-usb-modules +message-modules --- linux-3.13.0.orig/debian.master/d-i/exclude-modules.armhf-generic +++ linux-3.13.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-3.13.0.orig/debian.master/d-i/exclude-modules.armhf-generic-lpae +++ linux-3.13.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-3.13.0.orig/debian.master/d-i/exclude-modules.i386-virtual +++ linux-3.13.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-3.13.0.orig/debian.master/d-i/exclude-modules.powerpc +++ linux-3.13.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-3.13.0.orig/debian.master/d-i/exclude-modules.ppc64el-generic +++ linux-3.13.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-3.13.0.orig/debian.master/d-i/firmware/README.txt +++ linux-3.13.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-3.13.0.orig/debian.master/d-i/firmware/kernel-image +++ linux-3.13.0/debian.master/d-i/firmware/kernel-image @@ -0,0 +1,14 @@ +device-tree/apm-mustang.dtb ? +device-tree/highbank.dtb ? +device-tree/imx6dl-wandboard.dtb ? +device-tree/imx6q-sabrelite.dtb ? +device-tree/imx6q-wandboard.dtb ? +device-tree/omap3-beagle-xm.dtb ? +device-tree/omap4-panda.dtb ? +device-tree/omap4-panda-es.dtb ? +device-tree/tegra20-harmony.dtb ? +device-tree/tegra20-paz00.dtb ? +device-tree/tegra20-seaboard.dtb ? +device-tree/tegra20-trimslice.dtb ? +device-tree/tegra20-ventana.dtb ? +device-tree/tegra20-whistler.dtb ? --- linux-3.13.0.orig/debian.master/d-i/firmware/nic-modules +++ linux-3.13.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-3.13.0.orig/debian.master/d-i/firmware/scsi-modules +++ linux-3.13.0/debian.master/d-i/firmware/scsi-modules @@ -0,0 +1,3 @@ +qlogic/1040.bin ? +qlogic/12160.bin ? +qlogic/1280.bin ? --- linux-3.13.0.orig/debian.master/d-i/kernel-versions +++ linux-3.13.0/debian.master/d-i/kernel-versions @@ -0,0 +1,19 @@ +# arch version flavour installedname suffix bdep +amd64 3.13.0-100 generic 3.13.0-100-generic - + +i386 3.13.0-100 generic 3.13.0-100-generic - + +armhf 3.13.0-100 generic 3.13.0-100-generic - + +armhf 3.13.0-100 generic-lpae 3.13.0-100-generic-lpae - + +arm64 3.13.0-100 generic 3.13.0-100-generic - + +ppc64el 3.13.0-100 generic 3.13.0-100-generic - + +# Ports +# arch version flavour installedname suffix bdep +powerpc 3.13.0-100 powerpc-smp 3.13.0-100-powerpc-smp - +powerpc 3.13.0-100 powerpc64-smp 3.13.0-100-powerpc64-smp - +powerpc 3.13.0-100 powerpc-e500 3.13.0-100-powerpc-e500 - +powerpc 3.13.0-100 powerpc-e500mc 3.13.0-100-powerpc-e500mc - --- linux-3.13.0.orig/debian.master/d-i/kernel-versions.in +++ linux-3.13.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 - + +# 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-e500 PKGVER-ABINUM-powerpc-e500 - +powerpc PKGVER-ABINUM powerpc-e500mc PKGVER-ABINUM-powerpc-e500mc - --- linux-3.13.0.orig/debian.master/d-i/modules-powerpc/block-modules +++ linux-3.13.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-3.13.0.orig/debian.master/d-i/modules-powerpc/message-modules +++ linux-3.13.0/debian.master/d-i/modules-powerpc/message-modules @@ -0,0 +1,13 @@ +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +i2o_block +i2o_bus +i2o_config ? +i2o_core +i2o_proc +i2o_scsi --- linux-3.13.0.orig/debian.master/d-i/modules-powerpc/nic-modules +++ linux-3.13.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-3.13.0.orig/debian.master/d-i/modules-powerpc/scsi-modules +++ linux-3.13.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-3.13.0.orig/debian.master/d-i/modules-powerpc/storage-core-modules +++ linux-3.13.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-3.13.0.orig/debian.master/d-i/modules/block-modules +++ linux-3.13.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-3.13.0.orig/debian.master/d-i/modules/crypto-modules +++ linux-3.13.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-3.13.0.orig/debian.master/d-i/modules/fat-modules +++ linux-3.13.0/debian.master/d-i/modules/fat-modules @@ -0,0 +1,7 @@ +fat ? +vfat ? + +# Supporting modules ? +nls_cp437 ? +nls_iso8859-1 ? +nls_utf8 ? --- linux-3.13.0.orig/debian.master/d-i/modules/fb-modules +++ linux-3.13.0/debian.master/d-i/modules/fb-modules @@ -0,0 +1,3 @@ +fbcon ? +vesafb ? +vga16fb ? --- linux-3.13.0.orig/debian.master/d-i/modules/firewire-core-modules +++ linux-3.13.0/debian.master/d-i/modules/firewire-core-modules @@ -0,0 +1,4 @@ +firewire-core ? +firewire-ohci ? +firewire-sbp2 ? +firewire-net ? --- linux-3.13.0.orig/debian.master/d-i/modules/floppy-modules +++ linux-3.13.0/debian.master/d-i/modules/floppy-modules @@ -0,0 +1 @@ +floppy ? --- linux-3.13.0.orig/debian.master/d-i/modules/fs-core-modules +++ linux-3.13.0/debian.master/d-i/modules/fs-core-modules @@ -0,0 +1,4 @@ +ext2 ? +jfs ? +reiserfs ? +xfs ? --- linux-3.13.0.orig/debian.master/d-i/modules/fs-secondary-modules +++ linux-3.13.0/debian.master/d-i/modules/fs-secondary-modules @@ -0,0 +1,5 @@ +btrfs ? +fuse ? +ntfs ? +hfs ? +hfsplus ? --- linux-3.13.0.orig/debian.master/d-i/modules/input-modules +++ linux-3.13.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-3.13.0.orig/debian.master/d-i/modules/ipmi-modules +++ linux-3.13.0/debian.master/d-i/modules/ipmi-modules @@ -0,0 +1,5 @@ +ipmi_devintf ? +ipmi_msghandler ? +ipmi_poweroff ? +ipmi_si ? +ipmi_watchdog ? --- linux-3.13.0.orig/debian.master/d-i/modules/irda-modules +++ linux-3.13.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-3.13.0.orig/debian.master/d-i/modules/kernel-image +++ linux-3.13.0/debian.master/d-i/modules/kernel-image @@ -0,0 +1,24 @@ +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 ? --- linux-3.13.0.orig/debian.master/d-i/modules/md-modules +++ linux-3.13.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-3.13.0.orig/debian.master/d-i/modules/message-modules +++ linux-3.13.0/debian.master/d-i/modules/message-modules @@ -0,0 +1,15 @@ +mptbase ? +mptctl ? +mptfc ? +mptlan ? +mptsas ? +mpt2sas ? +mpt3sas ? +mptscsih ? +mptspi ? +i2o_block ? +i2o_bus ? +i2o_config ? +i2o_core ? +i2o_proc ? +i2o_scsi ? --- linux-3.13.0.orig/debian.master/d-i/modules/mouse-modules +++ linux-3.13.0/debian.master/d-i/modules/mouse-modules @@ -0,0 +1,2 @@ +psmouse ? +usbmouse ? --- linux-3.13.0.orig/debian.master/d-i/modules/multipath-modules +++ linux-3.13.0/debian.master/d-i/modules/multipath-modules @@ -0,0 +1,2 @@ +dm-multipath ? +dm-round-robin ? --- linux-3.13.0.orig/debian.master/d-i/modules/nfs-modules +++ linux-3.13.0/debian.master/d-i/modules/nfs-modules @@ -0,0 +1,6 @@ +nfs ? +nfs_acl ? +nfsv3 ? +lockd ? +sunrpc ? +cifs ? --- linux-3.13.0.orig/debian.master/d-i/modules/nic-modules +++ linux-3.13.0/debian.master/d-i/modules/nic-modules @@ -0,0 +1,177 @@ +3c359 ? +3c501 ? +3c503 ? +3c505 ? +3c507 ? +3c509 ? +3c515 ? +3c523 ? +3c527 ? +3c59x ? +8139cp ? +8139too ? +82596 ? +abyss ? +ac3200 ? +adm8211 ? +airo ? +airport ? +alx ? +amd8111e ? +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 ? +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-3.13.0.orig/debian.master/d-i/modules/nic-pcmcia-modules +++ linux-3.13.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-3.13.0.orig/debian.master/d-i/modules/nic-shared-modules +++ linux-3.13.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-3.13.0.orig/debian.master/d-i/modules/nic-usb-modules +++ linux-3.13.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-3.13.0.orig/debian.master/d-i/modules/parport-modules +++ linux-3.13.0/debian.master/d-i/modules/parport-modules @@ -0,0 +1,2 @@ +parport ? +parport_pc ? --- linux-3.13.0.orig/debian.master/d-i/modules/pata-modules +++ linux-3.13.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-3.13.0.orig/debian.master/d-i/modules/pcmcia-modules +++ linux-3.13.0/debian.master/d-i/modules/pcmcia-modules @@ -0,0 +1,8 @@ +i82092 ? +i82365 ? +pcmcia ? +pcmcia_core ? +pd6729 ? +rsrc_nonstatic ? +tcic ? +yenta_socket ? --- linux-3.13.0.orig/debian.master/d-i/modules/pcmcia-storage-modules +++ linux-3.13.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-3.13.0.orig/debian.master/d-i/modules/plip-modules +++ linux-3.13.0/debian.master/d-i/modules/plip-modules @@ -0,0 +1 @@ +plip ? --- linux-3.13.0.orig/debian.master/d-i/modules/ppp-modules +++ linux-3.13.0/debian.master/d-i/modules/ppp-modules @@ -0,0 +1,6 @@ +ppp_async ? +ppp_deflate ? +ppp_mppe ? +pppoe ? +pppox ? +ppp_synctty ? --- linux-3.13.0.orig/debian.master/d-i/modules/sata-modules +++ linux-3.13.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 ? +ahci_xgene ? +acard-ahci ? +libahci ? --- linux-3.13.0.orig/debian.master/d-i/modules/scsi-modules +++ linux-3.13.0/debian.master/d-i/modules/scsi-modules @@ -0,0 +1,130 @@ +# 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 ? +pm80xx ? +psi240i ? +BusLogic ? +dpt_i2o ? +u14-34f ? +ultrastor ? +aha152x ? +aha1542 ? +aha1740 ? +aic7xxx_old ? +ips ? +fd_mcs ? +fdomain ? +fnic ? +in2000 ? +g_NCR5380 ? +g_NCR5380_mmio ? +NCR53c406a ? +NCR_D700 ? +NCR_Q720_mod ? +sym53c416 ? +qlogicfas408 ? +qla1280 ? +pas16 ? +seagate ? +seagate ? +t128 ? +dmx3191d ? +dtc ? +zalon7xx ? +eata_pio ? +wd7000 ? +mca_53c9x ? +ibmmca ? +eata ? +dc395x ? +tmscsim ? +megaraid ? +atp870u ? +esp ? +gdth ? +initio ? +a100u2w ? +qlogicpti ? +ide-scsi ? +mesh ? +mac53c94 ? +pluto ? +dec_esp ? +3w-xxxx ? +3w-9xxx ? +ppa ? +imm ? +jazz_esp ? +sun3x_esp ? +fcal ? +lasi700 ? +nsp32 ? +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-3.13.0.orig/debian.master/d-i/modules/serial-modules +++ linux-3.13.0/debian.master/d-i/modules/serial-modules @@ -0,0 +1,4 @@ +generic_serial ? +serial_cs ? +synclink_cs ? +hyperv-keyboard ? --- linux-3.13.0.orig/debian.master/d-i/modules/speakup-modules +++ linux-3.13.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-3.13.0.orig/debian.master/d-i/modules/squashfs-modules +++ linux-3.13.0/debian.master/d-i/modules/squashfs-modules @@ -0,0 +1 @@ +squashfs ? --- linux-3.13.0.orig/debian.master/d-i/modules/storage-core-modules +++ linux-3.13.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-3.13.0.orig/debian.master/d-i/modules/usb-modules +++ linux-3.13.0/debian.master/d-i/modules/usb-modules @@ -0,0 +1,10 @@ +ehci-hcd ? +isp116x-hcd ? +isp1760 ? +ohci-hcd ? +r8a66597-hcd ? +sl811_cs ? +sl811-hcd ? +u132-hcd ? +uhci-hcd ? +xhci-hcd ? --- linux-3.13.0.orig/debian.master/d-i/modules/virtio-modules +++ linux-3.13.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-3.13.0.orig/debian.master/d-i/modules/vlan-modules +++ linux-3.13.0/debian.master/d-i/modules/vlan-modules @@ -0,0 +1,3 @@ +slp ? +garp ? +8021q ? --- linux-3.13.0.orig/debian.master/d-i/package-list +++ linux-3.13.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-3.13.0.orig/debian.master/etc/getabis +++ linux-3.13.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-e500 powerpc-e500mc powerpc64-emb --- linux-3.13.0.orig/debian.master/etc/kernelconfig +++ linux-3.13.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-3.13.0.orig/debian.master/rules.d/amd64.mk +++ linux-3.13.0/debian.master/rules.d/amd64.mk @@ -0,0 +1,17 @@ +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_cpupower = true +do_tools_perf = true +do_tools_x86 = true +do_tools_hyperv = true +do_extras_package = true --- linux-3.13.0.orig/debian.master/rules.d/arm64.mk +++ linux-3.13.0/debian.master/rules.d/arm64.mk @@ -0,0 +1,19 @@ +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_cpupower = true +do_tools_perf = true + +dtb_files_generic += apm-mustang.dtb +dtb_files_generic += foundation-v8.dtb +dtb_files_generic += rtsm_ve-aemv8a.dtb --- linux-3.13.0.orig/debian.master/rules.d/armhf.mk +++ linux-3.13.0/debian.master/rules.d/armhf.mk @@ -0,0 +1,35 @@ +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_cpupower = true +do_tools_perf = true + +# Flavour specific configuration. +dtb_files_generic += highbank.dtb +dtb_files_generic += imx6q-sabrelite.dtb +dtb_files_generic += imx6dl-wandboard.dtb +dtb_files_generic += imx6q-wandboard.dtb +dtb_files_generic += omap3-beagle-xm.dtb +dtb_files_generic += omap4-panda.dtb +dtb_files_generic += omap4-panda-es.dtb +dtb_files_generic += tegra20-harmony.dtb +dtb_files_generic += tegra20-paz00.dtb +dtb_files_generic += tegra20-seaboard.dtb +dtb_files_generic += tegra20-trimslice.dtb +dtb_files_generic += tegra20-ventana.dtb +dtb_files_generic += tegra20-whistler.dtb +dtb_files_generic += am335x-bone.dtb +dtb_files_generic += am335x-boneblack.dtb +dtb_files_generic += vexpress-v2p-ca9.dtb + +dtb_files_generic-lpae += highbank.dtb +dtb_files_generic-lpae += vexpress-v2p-ca15-tc1.dtb --- linux-3.13.0.orig/debian.master/rules.d/i386.mk +++ linux-3.13.0/debian.master/rules.d/i386.mk @@ -0,0 +1,15 @@ +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_cpupower = true +do_tools_perf = true +do_tools_x86 = true +do_extras_package = true --- linux-3.13.0.orig/debian.master/rules.d/powerpc.mk +++ linux-3.13.0/debian.master/rules.d/powerpc.mk @@ -0,0 +1,29 @@ +human_arch = PowerPC (32 bit userspace) +build_arch = powerpc +header_arch = $(build_arch) +defconfig = pmac32_defconfig +flavours = powerpc-smp powerpc64-smp powerpc-e500 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_powerpc-e500 = uImage +kernel_file_powerpc-e500 = arch/powerpc/boot/uImage + +loader = yaboot + +custom_flavours = + +no_dumpfile = true +do_tools_cpupower = true +do_tools_perf = true + +family = ubuntu --- linux-3.13.0.orig/debian.master/rules.d/ppc64el.mk +++ linux-3.13.0/debian.master/rules.d/ppc64el.mk @@ -0,0 +1,17 @@ +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 +loader = grub +vdso = vdso_install +do_extras_package = true + +do_tools_cpupower = true +do_tools_perf = true + +#do_flavour_image_package = false --- linux-3.13.0.orig/debian.master/rules.d/x32.mk +++ linux-3.13.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-3.13.0.orig/debian/changelog +++ linux-3.13.0/debian/changelog @@ -0,0 +1,24311 @@ +linux (3.13.0-100.147) trusty; urgency=low + + * CVE-2016-5195 + - SAUCE: mm: remove gup_flags FOLL_WRITE games from __get_user_pages() + + -- Stefan Bader Tue, 18 Oct 2016 10:27:42 +0200 + +linux (3.13.0-98.145) trusty; urgency=low + + * Fix GRO recursion overflow for tunneling protocols (LP: #1631287) + - tunnels: Don't apply GRO to multiple layers of encapsulation. + + * CVE-2016-7039 + - SAUCE: net: add recursion limit to GRO + + -- Seth Forshee Fri, 07 Oct 2016 20:08:32 -0500 + +linux (3.13.0-97.144) trusty; urgency=low + + [ Joseph Salisbury ] + + * Release Tracking Bug + - LP: #1626604 + + * Altering use_tempaddr drops all IPv6 addresses (LP: #994931) + - Revert "UBUNTU: SAUCE: (no-up) ipv6: Fix net.ipv6.conf.all.use_tempaddr + sysctl" + - Revert "UBUNTU: SAUCE: (no-up) ipv6: make the net.ipv6.conf.all.use_tempaddr + sysctl propagate to interface settings" + - neigh: convert parms to an array + - neigh: wrap proc dointvec functions + - neigh: use tbl->family to distinguish ipv4 from ipv6 + - neigh: restore old behaviour of default parms values + - neigh: ipv6: respect default values set before an address is assigned to + device + + * PCI quirk required for correct access to configuration space of NFP + 4000/6000 (LP: #1624267) + - PCI: Support PCIe devices with short cfg_size + - PCI: Add Netronome vendor and device IDs + - PCI: Limit config space size for Netronome NFP6000 family + - PCI: Add Netronome NFP4000 PF device ID + - PCI: Limit config space size for Netronome NFP4000 + + * CVE-2016-6136 + - audit: fix a double fetch in audit_log_single_execve_arg() + + * CVE-2016-6480 + - aacraid: Check size values after double-fetch from user + + * CVE-2016-6828 + - tcp: fix use after free in tcp_xmit_retransmit_queue() + + * IPv6 with LVS Performance issue in latest 3.13LTS kernels (LP: #1618299) + - ipv6: remove prune parameter for fib6_clean_all + - ipv6: remove rt6i_genid + + * lsattr 32bit does not work on 64bit kernel (Inappropriate ioctl error) + (LP: #1619918) + - btrfs: bugfix: handle FS_IOC32_{GETFLAGS, SETFLAGS, GETVERSION} in + btrfs_ioctl + + * Miscellaneous upstream changes + - powerpc/pseries: use pci_host_bridge.release_fn() to kfree(phb) + + -- Joseph Salisbury Thu, 22 Sep 2016 11:12:47 -0400 + +linux (3.13.0-96.143) trusty; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1618083 + + * CVE-2015-8767 + - sctp: Prevent soft lockup when sctp_accept() is called during a timeout + event + + * MacBookPro11,4 fails to poweroff or suspend (LP: #1587714) + - SAUCE: PCI: Workaround to enable poweroff on Mac Pro 11 + + * 3.13: libvirtd: page allocation failure: order:4, mode:0x1040d0 + (LP: #1616193) + - vhost-net: extend device allocation to vmalloc + - vhost-net: don't open-code kvfree + + * [arm64] nova instances can't boot with 3.13.0-92 (LP: #1608854) + - Revert "UBUNTU: [Config] CONFIG_EFI=n for arm64" + - Revert "UBUNTU: SAUCE: UEFI: Set EFI_SECURE_BOOT bit in x86_efi_facility" + - Revert "UBUNTU: SAUCE: UEFI: Add secure boot and MOK SB State disabled + sysctl" + - Revert "UBUNTU: SAUCE: UEFI: Display MOKSBState when disabled" + - Revert "UBUNTU: SAUCE: UEFI: efi: Disable secure boot if shim is in insecure + mode" + - Revert "UBUNTU: SAUCE: UEFI MODSIGN: Import certificates from UEFI Secure + Boot" + - Revert "UBUNTU: SAUCE: UEFI: efi: Make EFI_SECURE_BOOT_SIG_ENFORCE depend on + EFI" + - Revert "UBUNTU: SAUCE: UEFI: Add option to automatically enforce module + signatures when in Secure Boot mode" + - Revert "UBUNTU: [Config] CONFIG_EFI_SECURE_BOOT_SIG_ENFORCE=y" + - Revert "UBUNTU: SAUCE: UEFI: x86: Restrict MSR access when module loading is + restricted" + - Revert "UBUNTU: SAUCE: UEFI: kexec: Disable at runtime if the kernel + enforces module loading restrictions" + - Revert "UBUNTU: SAUCE: UEFI: acpi: Ignore acpi_rsdp kernel parameter when + module loading is restricted" + - Revert "UBUNTU: SAUCE: UEFI: Restrict /dev/mem and /dev/kmem when module + loading is restricted" + - Revert "UBUNTU: SAUCE: UEFI: asus-wmi: Restrict debugfs interface when + module loading is restricted" + - Revert "UBUNTU: SAUCE: UEFI: ACPI: Limit access to custom_method" + - Revert "UBUNTU: SAUCE: UEFI: x86: Lock down IO port access when module + security is enabled" + - Revert "UBUNTU: SAUCE: UEFI: PCI: Lock down BAR access when module security + is enabled" + - Revert "UBUNTU: SAUCE: UEFI: Add secure_modules() call" + - Revert "x86/efi: Build our own EFI services pointer table" + - Revert "efi: Add separate 32-bit/64-bit definitions" + + * [Hyper-V] storvsc messages for CD-ROM medium not present tray closed + (LP: #1590655) + - scsi: storvsc: Filter out storvsc messages CD-ROM medium not present + + * CVE-2016-3841 + - ipv6: add complete rcu protection around np->opt + + -- Kamal Mostafa Tue, 16 Aug 2016 10:20:51 -0700 + +linux (3.13.0-95.142) trusty; urgency=low + + [ Stefan Bader ] + + * Release Tracking Bug + - LP: #1612715 + + * CVE-2016-5696 + - tcp: make challenge acks less predictable + + -- Stefan Bader Fri, 12 Aug 2016 18:37:52 +0200 + +linux (3.13.0-94.141) trusty; urgency=low + + [ Stefan Bader ] + + * Release Tracking Bug + - LP: #1611281 + + * CVE-2016-5828 + - powerpc/tm: Always reclaim in start_thread() for exec() class syscalls + + * CVE-2016-5829 + - HID: hiddev: validate num_values for HIDIOCGUSAGES, HIDIOCSUSAGES commands + + * changelog: add CVEs as first class citizens (LP: #1604344) + - use CVE numbers in changelog + - avoid duplicate CVE numbers in changelog + + * CVE-2016-5728 + - misc: mic: Fix for double fetch security bug in VOP driver + + * CVE-2016-5244 (LP: #1589041) + - rds: fix an infoleak in rds_inc_info_copy + + -- Stefan Bader Tue, 09 Aug 2016 10:44:14 +0200 + +linux (3.13.0-93.140) trusty; urgency=low + + [ Seth Forshee ] + + * Release Tracking Bug + - LP: #1604134 + + * Boot failure with EFI stub (LP: #1603476) + - x86/efi: Fix boot failure with EFI stub + + * CVE-2016-5243 (LP: #1589036) + - tipc: fix an infoleak in tipc_nl_compat_link_dump + + * qeth: delete napi struct when removing a qeth device (LP: #1601831) + - qeth: delete napi struct when removing a qeth device + + * deadlock on balloon deflation (LP: #1598197) + - SAUCE: mm/balloon_compaction: Fix Regression of LP#1572562 + + * serial: 8250_pci: Add support for 16 port Exar boards (LP: #1447485) + - serial: 8250_pci: Add support for 16 port Exar boards + - serial: 8250_pci: Add support for 12 port Exar boards + - serial: 8250_pci: Correct uartclk for xr17v35x expansion chips + + * linux: Homogenize changelog format across releases (LP: #1599562) + - Revert "UBUNTU: [debian] BugLink: close LP: bugs only for Launchpad urls" + - [Debian] git-ubuntu-log -- switch to bug order + - [Debian] git-ubuntu-log -- fix empty section formatting + - [Debian] git-ubuntu-log -- output should be utf-8 + - [Debian] git-ubuntu-log -- handle invalid or private bugs + - [Debian] git-ubuntu-log -- wrap long bug and commit titles + - [Debian] git-ubuntu-log -- ensure we get the last commit + - [Debian] git-ubuntu-log -- prevent bug references being split + - [Debian] git-ubuntu-log -- git log output is UTF-8 + + * exercising ptys causes a kernel oops (LP: #1586418) + - devpts: fix null pointer dereference on failed memory allocation + + * Miscellaneous upstream changes + - KEYS: potential uninitialized variable + + -- Seth Forshee Mon, 18 Jul 2016 15:05:56 -0500 + +linux (3.13.0-92.139) trusty; urgency=low + + [ Kamal Mostafa ] + + * Release Tracking Bug + - LP: #1597060 + + [ Josh Boyer ] + + * SAUCE: UEFI: acpi: Ignore acpi_rsdp kernel parameter when module + loading is restricted + - LP: #1566221 + * SAUCE: UEFI: efi: Make EFI_SECURE_BOOT_SIG_ENFORCE depend on EFI + - LP: #1566221 + * SAUCE: UEFI MODSIGN: Import certificates from UEFI Secure Boot + - LP: #1566221, #1571691 + * SAUCE: UEFI: efi: Disable secure boot if shim is in insecure mode + - LP: #1566221, #1571691 + + [ Matthew Garrett ] + + * SAUCE: UEFI: Add secure_modules() call + - LP: #1566221 + * SAUCE: UEFI: PCI: Lock down BAR access when module security is enabled + - LP: #1566221 + * SAUCE: UEFI: x86: Lock down IO port access when module security is + enabled + - LP: #1566221 + * SAUCE: UEFI: ACPI: Limit access to custom_method + - LP: #1566221 + * SAUCE: UEFI: asus-wmi: Restrict debugfs interface when module loading + is restricted + - LP: #1566221 + * SAUCE: UEFI: Restrict /dev/mem and /dev/kmem when module loading is + restricted + - LP: #1566221 + * SAUCE: UEFI: kexec: Disable at runtime if the kernel enforces module + loading restrictions + - LP: #1566221 + * SAUCE: UEFI: x86: Restrict MSR access when module loading is restricted + - LP: #1566221 + * SAUCE: UEFI: Add option to automatically enforce module signatures when + in Secure Boot mode + - LP: #1566221 + + [ Stefan Bader ] + + * [Config] Add pm80xx scsi driver to d-i + - LP: #1595628 + + [ Tim Gardner ] + + * [Config] CONFIG_EFI_SECURE_BOOT_SIG_ENFORCE=y + * SAUCE: UEFI: Display MOKSBState when disabled + - LP: #1566221, #1571691 + * SAUCE: UEFI: Add secure boot and MOK SB State disabled sysctl + - LP: #1593075 + * SAUCE: UEFI: Set EFI_SECURE_BOOT bit in x86_efi_facility + - LP: #1593075 + * [Config] CONFIG_EFI=n for arm64 + - LP: #1566221 + + [ Upstream Kernel Changes ] + + * powerpc/tm: Abort syscalls in active transactions + - LP: #1572624 + * HID: core: prevent out-of-bound readings + - LP: #1579190 + * efi: Add separate 32-bit/64-bit definitions + - LP: #1566221 + * x86/efi: Build our own EFI services pointer table + - LP: #1566221 + * mm: migrate dirty page without clear_page_dirty_for_io etc + - LP: #1581865 + - CVE-2016-3070 + * oom_kill: change oom_kill.c to use for_each_thread() + - LP: #1592429 + * oom_kill: has_intersects_mems_allowed() needs rcu_read_lock() + - LP: #1592429 + * oom_kill: add rcu_read_lock() into find_lock_task_mm() + - LP: #1592429 + * virtio_balloon: return the amount of freed memory from leak_balloon() + - LP: #1587089 + * virtio_balloon: free some memory from balloon on OOM + - LP: #1587089 + * virtio_ballon: change stub of release_pages_by_pfn + - LP: #1587089 + * virtio_balloon: do not change memory amount visible via /proc/meminfo + - LP: #1587089 + + -- Kamal Mostafa Tue, 28 Jun 2016 12:40:49 -0700 + +linux (3.13.0-91.138) trusty; urgency=medium + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1595991 + + [ Upstream Kernel Changes ] + + * netfilter: x_tables: validate e->target_offset early + - LP: #1555338 + - CVE-2016-3134 + * netfilter: x_tables: make sure e->next_offset covers remaining blob + size + - LP: #1555338 + - CVE-2016-3134 + * netfilter: x_tables: fix unconditional helper + - LP: #1555338 + - CVE-2016-3134 + * netfilter: x_tables: don't move to non-existent next rule + - LP: #1595350 + * netfilter: x_tables: validate targets of jumps + - LP: #1595350 + * netfilter: x_tables: add and use xt_check_entry_offsets + - LP: #1595350 + * netfilter: x_tables: kill check_entry helper + - LP: #1595350 + * netfilter: x_tables: assert minimum target size + - LP: #1595350 + * netfilter: x_tables: add compat version of xt_check_entry_offsets + - LP: #1595350 + * netfilter: x_tables: check standard target size too + - LP: #1595350 + * netfilter: x_tables: check for bogus target offset + - LP: #1595350 + * netfilter: x_tables: validate all offsets and sizes in a rule + - LP: #1595350 + * netfilter: x_tables: don't reject valid target size on some + architectures + - LP: #1595350 + * netfilter: arp_tables: simplify translate_compat_table args + - LP: #1595350 + * netfilter: ip_tables: simplify translate_compat_table args + - LP: #1595350 + * netfilter: ip6_tables: simplify translate_compat_table args + - LP: #1595350 + * netfilter: x_tables: xt_compat_match_from_user doesn't need a retval + - LP: #1595350 + * netfilter: x_tables: do compat validation via translate_table + - LP: #1595350 + * netfilter: x_tables: introduce and use xt_copy_counters_from_user + - LP: #1595350 + + -- Luis Henriques Fri, 24 Jun 2016 16:19:03 +0100 + +linux (3.13.0-90.137) trusty; urgency=low + + [ Kamal Mostafa ] + + * Release Tracking Bug + - LP: #1595693 + + [ Serge Hallyn ] + + * SAUCE: add a sysctl to disable unprivileged user namespace unsharing + - LP: #1555338, #1595350 + + -- Kamal Mostafa Thu, 23 Jun 2016 13:10:53 -0700 + +linux (3.13.0-89.136) trusty; urgency=low + + [ Kamal Mostafa ] + + * Release Tracking Bug + - LP: #1591315 + + [ Kamal Mostafa ] + + * [debian] getabis: Only git add $abidir if running in local repo + - LP: #1584890 + * [debian] getabis: Fix inconsistent compiler versions check + - LP: #1584890 + + [ Stefan Bader ] + + * SAUCE: powerpc/powernv: Fix incomplete backport of 8117ac6 + - LP: #1589910 + + [ Tim Gardner ] + + * [Config] Remove arc4 from nic-modules + - LP: #1582991 + + [ Upstream Kernel Changes ] + + * KVM: x86: move steal time initialization to vcpu entry time + - LP: #1494350 + * lpfc: Fix premature release of rpi bit in bitmask + - LP: #1580560 + * lpfc: Correct loss of target discovery after cable swap. + - LP: #1580560 + * mm/balloon_compaction: redesign ballooned pages management + - LP: #1572562 + * mm/balloon_compaction: fix deflation when compaction is disabled + - LP: #1572562 + * bridge: Fix the way to find old local fdb entries in br_fdb_changeaddr + - LP: #1581585 + * bridge: notify user space after fdb update + - LP: #1581585 + * ALSA: timer: Fix leak in SNDRV_TIMER_IOCTL_PARAMS + - LP: #1580379 + - CVE-2016-4569 + * ALSA: timer: Fix leak in events via snd_timer_user_ccallback + - LP: #1581866 + - CVE-2016-4578 + * ALSA: timer: Fix leak in events via snd_timer_user_tinterrupt + - LP: #1581866 + - CVE-2016-4578 + * net: fix a kernel infoleak in x25 module + - LP: #1585366 + - CVE-2016-4580 + * get_rock_ridge_filename(): handle malformed NM entries + - LP: #1583962 + - CVE-2016-4913 + * netfilter: Set /proc/net entries owner to root in namespace + - LP: #1584953 + * USB: usbfs: fix potential infoleak in devio + - LP: #1578493 + - CVE-2016-4482 + * IB/security: Restrict use of the write() interface + - LP: #1580372 + - CVE-2016-4565 + * netlink: autosize skb lengthes + - LP: #1568969 + * xfs: allow inode allocations in post-growfs disk space + - LP: #1560142 + + -- Kamal Mostafa Fri, 10 Jun 2016 11:38:36 -0700 + +linux (3.13.0-88.135) trusty; urgency=low + + [ Kamal Mostafa ] + + * CVE-2016-1583 (LP: #1588871) + - ecryptfs: fix handling of directory opening + - SAUCE: proc: prevent stacking filesystems on top + - SAUCE: ecryptfs: forbid opening files without mmap handler + + -- Andy Whitcroft Wed, 08 Jun 2016 21:55:49 +0100 + +linux (3.13.0-87.133) trusty; urgency=low + + [ Kamal Mostafa ] + + * Release Tracking Bug + - LP: #1585315 + + [ Upstream Kernel Changes ] + + * Revert "usb: hub: do not clear BOS field during reset device" + - LP: #1582864 + + -- Kamal Mostafa Tue, 24 May 2016 11:04:30 -0700 + +linux (3.13.0-87.132) trusty; urgency=low + + [ Kamal Mostafa ] + + * Release Tracking Bug + - LP: #1582398 + + [ Kamal Mostafa ] + + * [Config] Drop ozwpan from the ABI + + [ Luis Henriques ] + + * [Config] CONFIG_USB_WPAN_HCD=n + - LP: #1463740 + - CVE-2015-4004 + + [ Prarit Bhargava ] + + * SAUCE: (no-up) ACPICA: Dispatcher: Update thread ID for recursive + method calls + - LP: #1577898 + + [ Upstream Kernel Changes ] + + * usbnet: cleanup after bind() in probe() + - LP: #1567191 + - CVE-2016-3951 + * KVM: x86: bit-ops emulation ignores offset on 64-bit + - LP: #1423672 + * USB: usbip: fix potential out-of-bounds write + - LP: #1572666 + - CVE-2016-3955 + * x86/mm/32: Enable full randomization on i386 and X86_32 + - LP: #1568523 + - CVE-2016-3672 + * Input: gtco - fix crash on detecting device without endpoints + - LP: #1575706 + - CVE-2016-2187 + * atl2: Disable unimplemented scatter/gather feature + - LP: #1561403 + - CVE-2016-2117 + * ALSA: usb-audio: Skip volume controls triggers hangup on Dell USB Dock + - LP: #1577905 + * fs/pnode.c: treat zero mnt_group_id-s as unequal + - LP: #1572316 + * propogate_mnt: Handle the first propogated copy being a slave + - LP: #1572316 + * drm: Balance error path for GEM handle allocation + - LP: #1579610 + * x86/mm: Add barriers and document switch_mm()-vs-flush synchronization + - LP: #1538429 + - CVE-2016-2069 + * x86/mm: Improve switch_mm() barrier comments + - LP: #1538429 + - CVE-2016-2069 + * net: fix infoleak in llc + - LP: #1578496 + - CVE-2016-4485 + * net: fix infoleak in rtnetlink + - LP: #1578497 + - CVE-2016-4486 + + -- Kamal Mostafa Mon, 16 May 2016 13:28:38 -0700 + +linux (3.13.0-86.131) trusty; urgency=low + + [ Kamal Mostafa ] + + * CVE-2016-0758 (LP: #1581202) + - SAUCE: KEYS: Fix ASN.1 indefinite length object parsing + + -- Kamal Mostafa Thu, 12 May 2016 15:36:26 -0700 + +linux (3.13.0-86.130) trusty; urgency=low + + [ Kamal Mostafa ] + + * Release Tracking Bug + - LP: #1571718 + + [ Benjamin Tissoires ] + + * SAUCE: Input: synaptics - handle spurious release of trackstick + buttons, again + - LP: #1553811 + + [ 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 v3.13.11-ckt38 + + [ Tim Gardner ] + + * [Debian] Fix linux-doc dangling symlinks + - LP: #661306 + + [ Upstream Kernel Changes ] + + * Revert "jffs2: Fix lock acquisition order bug in jffs2_write_begin" + - LP: #1562900 + * [stable-only] AIO: properly check iovec sizes + - LP: #1562900 + * Input: aiptek - fix crash on detecting device without endpoints + - LP: #1562900 + * wext: fix message delay/ordering + - LP: #1562900 + * cfg80211/wext: fix message ordering + - LP: #1562900 + * mac80211: fix use of uninitialised values in RX aggregation + - LP: #1562900 + * libata: fix HDIO_GET_32BIT ioctl + - LP: #1562900 + * mac80211: minstrel_ht: set default tx aggregation timeout to 0 + - LP: #1562900 + * jffs2: Fix page lock / f->sem deadlock + - LP: #1562900 + * Fix directory hardlinks from deleted directories + - LP: #1562900 + * iommu/amd: Fix boot warning when device 00:00.0 is not iommu covered + - LP: #1562900 + * libata: Align ata_device's id on a cacheline + - LP: #1562900 + * vfio: fix ioctl error handling + - LP: #1562900 + * ALSA: ctl: Fix ioctls for X32 ABI + - LP: #1562900 + * ALSA: rawmidi: Fix ioctls X32 ABI + - LP: #1562900 + * ALSA: timer: Fix broken compat timer user status ioctl + - LP: #1562900 + * ALSA: timer: Fix ioctls for X32 ABI + - LP: #1562900 + * cifs: fix out-of-bounds access in lease parsing + - LP: #1562900 + * CIFS: Fix SMB2+ interim response processing for read requests + - LP: #1562900 + * ALSA: hdspm: Fix wrong boolean ctl value accesses + - LP: #1562900 + * ALSA: hdspm: Fix zero-division + - LP: #1562900 + * ALSA: hdsp: Fix wrong boolean ctl value accesses + - LP: #1562900 + * USB: cp210x: Add ID for Parrot NMEA GPS Flight Recorder + - LP: #1562900 + * ASoC: wm8958: Fix enum ctl accesses in a wrong type + - LP: #1562900 + * ASoC: wm8994: Fix enum ctl accesses in a wrong type + - LP: #1562900 + * ASoC: wm_adsp: Fix enum ctl accesses in a wrong type + - LP: #1562900 + * USB: serial: option: add support for Telit LE922 PID 0x1045 + - LP: #1562900 + * USB: serial: option: add support for Quectel UC20 + - LP: #1562900 + * ALSA: seq: oss: Don't drain at closing a client + - LP: #1562900 + * drm/ast: Fix incorrect register check for DRAM width + - LP: #1562900 + * drm/radeon/pm: update current crtc info after setting the powerstate + - LP: #1562900 + * PM / sleep / x86: Fix crash on graph trace through x86 suspend + - LP: #1562900 + * ALSA: hda - Fix mic issues on Acer Aspire E1-472 + - LP: #1562900 + * MIPS: traps: Fix SIGFPE information leak from `do_ov' and + `do_trap_or_bp' + - LP: #1562900 + * ubi: Fix out of bounds write in volume update code + - LP: #1562900 + * KVM: VMX: disable PEBS before a guest entry + - LP: #1562900 + * ext4: iterate over buffer heads correctly in move_extent_per_page() + - LP: #1562900 + * net/mlx4_core: Allow resetting VF admin mac to zero + - LP: #1562900 + * ipv6: re-enable fragment header matching in ipv6_find_hdr + - LP: #1562900 + * cdc_ncm: do not call usbnet_link_change from cdc_ncm_bind + - LP: #1562900 + * net: moxa: fix an error code + - LP: #1562900 + * IB/core: Use GRH when the path hop-limit > 0 + - LP: #1562900 + * Linux 3.13.11-ckt37 + - LP: #1562900 + * Drivers: hv_vmbus: Fix signal to host condition + - LP: #1556264 + * [stable-only] pipe: Fix buffer offset after partially failed read + - LP: #1563916 + * EDAC, amd64_edac: Shift wrapping issue in f1x_get_norm_dct_addr() + - LP: #1567615 + * tty: Fix GPF in flush_to_ldisc(), part 2 + - LP: #1567615 + * [media] media: v4l2-compat-ioctl32: fix missing length copy in + put_v4l2_buffer32 + - LP: #1567615 + * [media] pwc: Add USB id for Philips Spc880nc webcam + - LP: #1567615 + * 8250: use callbacks to access UART_DLL/UART_DLM + - LP: #1567615 + * net: irda: Fix use-after-free in irtty_open() + - LP: #1567615 + * usb: retry reset if a device times out + - LP: #1567615 + * HID: core: do not scan reports if the group is already set + - LP: #1567615 + * HID: fix hid_ignore_special_drivers module parameter + - LP: #1567615 + * scripts/coccinelle: modernize & + - LP: #1567615 + * [media] adv7511: TX_EDID_PRESENT is still 1 after a disconnect + - LP: #1567615 + * [media] saa7134: Fix bytesperline not being set correctly for planar + formats + - LP: #1567615 + * perf tools: Dont stop PMU parsing on alias parse error + - LP: #1567615 + * Bluetooth: btusb: Add new AR3012 ID 13d3:3395 + - LP: #1542564, #1567615 + * Bluetooth: Add new AR3012 ID 0489:e095 + - LP: #1542944, #1567615 + * aacraid: Fix memory leak in aac_fib_map_free + - LP: #1567615 + * mtd: onenand: fix deadlock in onenand_block_markbad + - LP: #1567615 + * PCI: Disable IO/MEM decoding for devices with non-compliant BARs + - LP: #1567615 + * md/raid5: Compare apples to apples (or sectors to sectors) + - LP: #1567615 + * Bluetooth: btusb: Add a new AR3012 ID 04ca:3014 + - LP: #1546694, #1567615 + * IB/srpt: Simplify srpt_handle_tsk_mgmt() + - LP: #1567615 + * [media] bttv: Width must be a multiple of 16 when capturing planar + formats + - LP: #1567615 + * watchdog: rc32434_wdt: fix ioctl error handling + - LP: #1567615 + * xfs: fix two memory leaks in xfs_attr_list.c error paths + - LP: #1567615 + * quota: Fix possible GPF due to uninitialised pointers + - LP: #1567615 + * mtip32xx: Print exact time when an internal command is interrupted + - LP: #1567615 + * KVM: i8254: change PIT discard tick policy + - LP: #1567615 + * sched/cputime: Fix steal time accounting vs. CPU hotplug + - LP: #1567615 + * rt2x00: add new rt2800usb device Buffalo WLI-UC-G450 + - LP: #1567615 + * pinctrl-bcm2835: Fix cut-and-paste error in "pull" parsing + - LP: #1567615 + * perf/core: Fix perf_sched_count derailment + - LP: #1567615 + * perf/x86/intel: Use PAGE_SIZE for PEBS buffer size on Core2 + - LP: #1567615 + * bcache: fix cache_set_flush() NULL pointer dereference on OOM + - LP: #1567615 + * x86/PCI: Mark Broadwell-EP Home Agent & PCU as having non-compliant + BARs + - LP: #1567615 + * be2iscsi: set the boot_kset pointer to NULL in case of failure + - LP: #1567615 + * drm/radeon: Don't drop DP 2.7 Ghz link setup on some cards. + - LP: #1567615 + * sg: fix dxferp in from_to case + - LP: #1567615 + * jbd2: fix FS corruption possibility in jbd2_journal_destroy() on umount + path + - LP: #1567615 + * Bluetooth: btusb: Add a new AR3012 ID 13d3:3472 + - LP: #1552925, #1567615 + * iser-target: Separate flows for np listeners and connections cma events + - LP: #1567615 + * xtensa: ISS: don't hang if stdin EOF is reached + - LP: #1567615 + * xtensa: clear all DBREAKC registers on start + - LP: #1567615 + * bus: imx-weim: Take the 'status' property value into account + - LP: #1567615 + * ALSA: intel8x0: Add clock quirk entry for AD1981B on IBM ThinkPad X41. + - LP: #1567615 + * s390/pci: enforce fmb page boundary rule + - LP: #1567615 + * Input: powermate - fix oops with malicious USB descriptors + - LP: #1567615 + * net: mvneta: enable change MAC address when interface is up + - LP: #1567615 + * HID: i2c-hid: fix OOB write in i2c_hid_set_or_send_report() + - LP: #1567615 + * ALSA: hda - Fix unconditional GPIO toggle via automute + - LP: #1567615 + * ALSA: usb-audio: Fix NULL dereference in create_fixed_stream_quirk() + - LP: #1567615 + * ALSA: usb-audio: Add sanity checks for endpoint accesses + - LP: #1567615 + * nfsd: fix deadlock secinfo+readdir compound + - LP: #1567615 + * x86/iopl: Fix iopl capability check on Xen PV + - LP: #1567615 + * Input: ims-pcu - sanity check against missing interfaces + - LP: #1567615 + * x86/apic: Fix suspicious RCU usage in + smp_trace_call_function_interrupt() + - LP: #1567615 + * USB: iowarrior: fix oops with malicious USB descriptors + - LP: #1567615 + * USB: usb_driver_claim_interface: add sanity checking + - LP: #1567615 + * USB: cdc-acm: more sanity checking + - LP: #1567615 + * USB: uas: Reduce can_queue to MAX_CMNDS + - LP: #1567615 + * tracing: Have preempt(irqs)off trace preempt disabled functions + - LP: #1567615 + * tracing: Fix crash from reading trace_pipe with sendfile + - LP: #1567615 + * splice: handle zero nr_pages in splice_to_pipe() + - LP: #1567615 + * target: Fix target_release_cmd_kref shutdown comp leak + - LP: #1567615 + * KVM: VMX: avoid guest hang on invalid invept instruction + - LP: #1567615 + * KVM: fix spin_lock_init order on x86 + - LP: #1567615 + * tracing: Fix trace_printk() to print when not using bprintk() + - LP: #1567615 + * fs/coredump: prevent fsuid=0 dumps into user-controlled directories + - LP: #1567615 + * rapidio/rionet: fix deadlock on SMP + - LP: #1567615 + * Input: ati_remote2 - fix crashes on detecting device with invalid + descriptor + - LP: #1567615 + * MAINTAINERS: Update mailing list and web page for hwmon subsystem + - LP: #1567615 + * ocfs2/dlm: fix race between convert and recovery + - LP: #1567615 + * ocfs2/dlm: fix BUG in dlm_move_lockres_to_recovery_list + - LP: #1567615 + * clk: xgene: Add missing parenthesis when clearing divider value + - LP: #1567615 + * ppp: take reference on channels netns + - LP: #1567615 + * mdio-sun4i: oops in error handling in probe + - LP: #1567615 + * net: Fix use after free in the recvmmsg exit path + - LP: #1567615 + * ethernet: micrel: fix some error codes + - LP: #1567615 + * misc/bmp085: Enable building as a module + - LP: #1567615 + * net/mlx5: Make command timeout way shorter + - LP: #1567615 + * ipvs: correct initial offset of Call-ID header search in SIP + persistence engine + - LP: #1567615 + * ath9k: fix buffer overrun for ar9287 + - LP: #1567615 + * mtd: map: fix .set_vpp() documentation + - LP: #1567615 + * ARM: OMAP3: Add cpuidle parameters table for omap3430 + - LP: #1567615 + * rtc: vr41xx: Wire up alarm_irq_enable + - LP: #1567615 + * sunrpc/cache: drop reference when sunrpc_cache_pipe_upcall() detects a + race + - LP: #1567615 + * ipv4: fix broadcast packets reception + - LP: #1567615 + * lpfc: fix misleading indentation + - LP: #1567615 + * ASoC: s3c24xx: use const snd_soc_component_driver pointer + - LP: #1567615 + * kbuild/mkspec: fix grub2 installkernel issue + - LP: #1567615 + * paride: make 'verbose' parameter an 'int' again + - LP: #1567615 + * ppp: ensure file->private_data can't be overridden + - LP: #1567615 + * clk: versatile: sp810: support reentrance + - LP: #1567615 + * drivers/misc/ad525x_dpot: AD5274 fix RDAC read back errors + - LP: #1567615 + * perf stat: Document --detailed option + - LP: #1567615 + * x86/iopl/64: Properly context-switch IOPL on Xen PV + - LP: #1567615 + * Linux 3.13.11-ckt38 + - LP: #1567615 + * drm/radeon: add a dpm quirk for sapphire Dual-X R7 370 2G D5 + - LP: #1571041 + * hwmon: (max1111) Return -ENODEV from max1111_read_channel if not + instantiated + - LP: #1571041 + * drm/radeon: add another R7 370 quirk + - LP: #1571041 + * usb: renesas_usbhs: avoid NULL pointer derefernce in + usbhsf_pkt_handler() + - LP: #1571041 + * usb: renesas_usbhs: disable TX IRQ before starting TX DMAC transfer + - LP: #1571041 + * USB: mct_u232: add sanity checking in probe + - LP: #1571041 + - CVE-2016-3136 + * USB: cypress_m8: add endpoint sanity check + - LP: #1571041 + - CVE-2016-3137 + * USB: digi_acceleport: do sanity checking for the number of ports + - LP: #1571041 + * ALSA: timer: Use mod_timer() for rearming the system timer + - LP: #1571041 + * mm: fix invalid node in alloc_migrate_target() + - LP: #1571041 + * iio: st_magn: always define ST_MAGN_TRIGGER_SET_STATE + - LP: #1571041 + * USB: serial: ftdi_sio: Add support for ICP DAS I-756xU devices + - LP: #1571041 + * USB: serial: cp210x: Adding GE Healthcare Device ID + - LP: #1571041 + * USB: option: add "D-Link DWM-221 B1" device id + - LP: #1571041 + * parisc: Avoid function pointers for kernel exception routines + - LP: #1571041 + * ip6_tunnel: set rtnl_link_ops before calling register_netdevice + - LP: #1571041 + * Linux 3.13.11-ckt39 + - LP: #1571041 + * include/linux/poison.h: fix LIST_POISON{1,2} offset + - LP: #1561389 + - CVE-2016-0821 + * ipv4: Don't do expensive useless work during inetdev destroy. + - LP: #1558847 + - CVE-2016-3156 + + -- Kamal Mostafa Mon, 18 Apr 2016 09:03:12 -0700 + +linux (3.13.0-85.129) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1558727 + + [ Upstream Kernel Changes ] + + * Revert "Revert "af_unix: Revert 'lock_interruptible' in stream receive + code"" + + -- Brad Figg Thu, 17 Mar 2016 11:42:09 -0700 + +linux (3.13.0-84.128) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1557596 + + [ Upstream Kernel Changes ] + + * Revert "af_unix: Revert 'lock_interruptible' in stream receive code" + - LP: #1540731 + * seccomp: cap SECCOMP_RET_ERRNO data to MAX_ERRNO + - LP: #1496073 + * net/mlx4_en: Remove dependency between timestamping capability and + service_task + - LP: #1537859 + * net/mlx4_en: Fix HW timestamp init issue upon system startup + - LP: #1537859 + * x86/mm: Fix slow_virt_to_phys() for X86_PAE again + - LP: #1549601 + * iw_cxgb3: Fix incorrectly returning error on success + - LP: #1557191 + * EVM: Use crypto_memneq() for digest comparisons + - LP: #1557191 + * x86/entry/compat: Add missing CLAC to entry_INT80_32 + - LP: #1557191 + * iio: dac: mcp4725: set iio name property in sysfs + - LP: #1557191 + * iommu/vt-d: Fix 64-bit accesses to 32-bit DMAR_GSTS_REG + - LP: #1557191 + * PCI/AER: Flush workqueue on device remove to avoid use-after-free + - LP: #1557191 + * libata: disable forced PORTS_IMPL for >= AHCI 1.3 + - LP: #1557191 + * mac80211: start_next_roc only if scan was actually running + - LP: #1557191 + * mac80211: Requeue work after scan complete for all VIF types. + - LP: #1557191 + * rfkill: fix rfkill_fop_read wait_event usage + - LP: #1557191 + * crypto: shash - Fix has_key setting + - LP: #1557191 + * drm/i915/dp: fall back to 18 bpp when sink capability is unknown + - LP: #1557191 + * target: Fix WRITE_SAME/DISCARD conversion to linux 512b sectors + - LP: #1557191 + * crypto: algif_hash - wait for crypto_ahash_init() to complete + - LP: #1557191 + * iio: inkern: fix a NULL dereference on error + - LP: #1557191 + * intel_scu_ipcutil: underflow in scu_reg_access() + - LP: #1557191 + * ALSA: seq: Fix race at closing in virmidi driver + - LP: #1557191 + * ALSA: rawmidi: Remove kernel WARNING for NULL user-space buffer check + - LP: #1557191 + * ALSA: pcm: Fix potential deadlock in OSS emulation + - LP: #1557191 + * ALSA: seq: Fix yet another races among ALSA timer accesses + - LP: #1557191 + * ALSA: timer: Fix link corruption due to double start or stop + - LP: #1557191 + * libata: fix sff host state machine locking while polling + - LP: #1557191 + * cputime: Prevent 32bit overflow in time[val|spec]_to_cputime() + - LP: #1557191 + * ASoC: dpcm: fix the BE state on hw_free + - LP: #1557191 + * module: wrapper for symbol name. + - LP: #1557191 + * ALSA: hda - Add fixup for Mac Mini 7,1 model + - LP: #1557191 + * ALSA: Move EXPORT_SYMBOL() in appropriate places + - LP: #1557191 + * ALSA: rawmidi: Make snd_rawmidi_transmit() race-free + - LP: #1557191 + * ALSA: rawmidi: Fix race at copying & updating the position + - LP: #1557191 + * ALSA: seq: Fix lockdep warnings due to double mutex locks + - LP: #1557191 + * drivers/scsi/sg.c: mark VMA as VM_IO to prevent migration + - LP: #1557191 + * radix-tree: fix race in gang lookup + - LP: #1557191 + * usb: xhci: apply XHCI_PME_STUCK_QUIRK to Intel Broxton-M platforms + - LP: #1557191 + * xhci: Fix list corruption in urb dequeue at host removal + - LP: #1557191 + * target: Fix Task Aborted Status (TAS) handling + - LP: #1557191 + * target: Add TFO->abort_task for aborted task resources release + - LP: #1557191 + * target: Fix LUN_RESET active TMR descriptor handling + - LP: #1557191 + * target: Fix LUN_RESET active I/O handling for ACK_KREF + - LP: #1557191 + * target: Fix TAS handling for multi-session se_node_acls + - LP: #1557191 + * target: Fix remote-port TMR ABORT + se_cmd fabric stop + - LP: #1557191 + * target: Fix race with SCF_SEND_DELAYED_TAS handling + - LP: #1557191 + * [media] tda1004x: only update the frontend properties if locked + - LP: #1557191 + * ALSA: timer: Fix leftover link at closing + - LP: #1557191 + * [media] saa7134-alsa: Only frees registered sound cards + - LP: #1557191 + * Btrfs: fix hang on extent buffer lock caused by the inode_paths ioctl + - LP: #1557191 + * scsi_dh_rdac: always retry MODE SELECT on command lock violation + - LP: #1557191 + * SCSI: Add Marvell Console to VPD blacklist + - LP: #1557191 + * drm: Add drm_fixp_from_fraction and drm_fixp2int_ceil + - LP: #1557191 + * ALSA: hda - Fix static checker warning in patch_hdmi.c + - LP: #1557191 + * dump_stack: avoid potential deadlocks + - LP: #1557191 + * mm, vmstat: fix wrong WQ sleep when memory reclaim doesn't make any + progress + - LP: #1557191 + * ocfs2/dlm: clear refmap bit of recovery lock while doing local recovery + cleanup + - LP: #1557191 + * mm: replace vma_lock_anon_vma with anon_vma_lock_read/write + - LP: #1557191 + * radix-tree: fix oops after radix_tree_iter_retry + - LP: #1557191 + * crypto: user - lock crypto_alg_list on alg dump + - LP: #1557191 + * serial: omap: Prevent DoS using unprivileged ioctl(TIOCSRS485) + - LP: #1557191 + * pty: fix possible use after free of tty->driver_data + - LP: #1557191 + * pty: make sure super_block is still valid in final /dev/tty close + - LP: #1557191 + * ALSA: hda - Fix speaker output from VAIO AiO machines + - LP: #1557191 + * klist: fix starting point removed bug in klist iterators + - LP: #1557191 + * ALSA: dummy: Implement timer backend switching more safely + - LP: #1557191 + * powerpc: Fix dedotify for binutils >= 2.26 + - LP: #1557191 + * ALSA: timer: Fix wrong instance passed to slave callbacks + - LP: #1557191 + * ARM: 8517/1: ICST: avoid arithmetic overflow in icst_hz() + - LP: #1557191 + * nfs: fix nfs_size_to_loff_t + - LP: #1557191 + * ALSA: timer: Fix race between stop and interrupt + - LP: #1557191 + * ALSA: timer: Fix race at concurrent reads + - LP: #1557191 + * phy: twl4030-usb: Relase usb phy on unload + - LP: #1557191 + * drm/i915: fix error path in intel_setup_gmbus() + - LP: #1557191 + * ahci: Intel DNV device IDs SATA + - LP: #1557191 + * workqueue: handle NUMA_NO_NODE for unbound pool_workqueue lookup + - LP: #1557191 + * cifs: fix erroneous return value + - LP: #1557191 + * s390/dasd: prevent incorrect length error under z/VM after PAV changes + - LP: #1557191 + * s390/dasd: fix refcount for PAV reassignment + - LP: #1557191 + * ARM: 8519/1: ICST: try other dividends than 1 + - LP: #1557191 + * btrfs: properly set the termination value of ctx->pos in readdir + - LP: #1557191 + * ext4: fix potential integer overflow + - LP: #1557191 + * ext4: don't read blocks from disk after extents being swapped + - LP: #1557191 + * bio: return EINTR if copying to user space got interrupted + - LP: #1557191 + * xen/pciback: Check PF instead of VF for PCI_COMMAND_MEMORY + - LP: #1557191 + * xen/pciback: Save the number of MSI-X entries to be copied later. + - LP: #1557191 + * xen/pcifront: Fix mysterious crashes when NUMA locality information was + extracted. + - LP: #1557191 + * ALSA: seq: Drop superfluous error/debug messages after malloc failures + - LP: #1557191 + * ALSA: seq: Fix leak of pool buffer at concurrent writes + - LP: #1557191 + * dmaengine: dw: disable BLOCK IRQs for non-cyclic xfer + - LP: #1557191 + * tracepoints: Do not trace when cpu is offline + - LP: #1557191 + * tracing: Fix freak link error caused by branch tracer + - LP: #1557191 + * ALSA: seq: Fix double port list deletion + - LP: #1557191 + * drm/radeon: use post-decrement in error handling + - LP: #1557191 + * drm/qxl: use kmalloc_array to alloc reloc_info in + qxl_process_single_command + - LP: #1557191 + * NFSv4: Fix a dentry leak on alias use + - LP: #1557191 + * USB: option: add support for SIM7100E + - LP: #1557191 + * USB: cp210x: add IDs for GE B650V3 and B850V3 boards + - LP: #1557191 + * USB: option: add "4G LTE usb-modem U901" + - LP: #1557191 + * hwmon: (ads1015) Handle negative conversion values correctly + - LP: #1557191 + * ext4: fix bh->b_state corruption + - LP: #1557191 + * ext4: fix crashes in dioread_nolock mode + - LP: #1557191 + * kernel/resource.c: fix muxed resource handling in __request_region() + - LP: #1557191 + * drivers: android: correct the size of struct binder_uintptr_t for + BC_DEAD_BINDER_DONE + - LP: #1557191 + * can: ems_usb: Fix possible tx overflow + - LP: #1557191 + * sunrpc/cache: fix off-by-one in qword_get() + - LP: #1557191 + * KVM: async_pf: do not warn on page allocation failures + - LP: #1557191 + * tracing: Fix showing function event in available_events + - LP: #1557191 + * libceph: don't bail early from try_read() when skipping a message + - LP: #1557191 + * KVM: x86: MMU: fix ubsan index-out-of-range warning + - LP: #1557191 + * hpfs: don't truncate the file when delete fails + - LP: #1557191 + * do_last(): don't let a bogus return value from ->open() et.al. to + confuse us + - LP: #1557191 + * af_iucv: Validate socket address length in iucv_sock_bind() + - LP: #1557191 + * net: dp83640: Fix tx timestamp overflow handling. + - LP: #1557191 + * tcp: fix NULL deref in tcp_v4_send_ack() + - LP: #1557191 + * af_unix: fix struct pid memory leak + - LP: #1557191 + * pptp: fix illegal memory access caused by multiple bind()s + - LP: #1557191 + * sctp: allow setting SCTP_SACK_IMMEDIATELY by the application + - LP: #1557191 + * ipv6/udp: use sticky pktinfo egress ifindex on connect() + - LP: #1557191 + * net/ipv6: add sysctl option accept_ra_min_hop_limit + - LP: #1557191 + * ipv6: fix a lockdep splat + - LP: #1557191 + * unix: correctly track in-flight fds in sending process user_struct + - LP: #1557191 + * net:Add sysctl_max_skb_frags + - LP: #1557191 + * sctp: translate network order to host order when users get a hmacid + - LP: #1557191 + * af_unix: Guard against other == sk in unix_dgram_sendmsg + - LP: #1543980, #1557191 + * qmi_wwan: add "4G LTE usb-modem U901" + - LP: #1557191 + * net/mlx4_en: Count HW buffer overrun only once + - LP: #1557191 + * pppoe: fix reference counting in PPPoE proxy + - LP: #1557191 + * rtnl: RTM_GETNETCONF: fix wrong return value + - LP: #1557191 + * unix_diag: fix incorrect sign extension in unix_lookup_by_ino + - LP: #1557191 + * sctp: Fix port hash table size computation + - LP: #1557191 + * bonding: Fix ARP monitor validation + - LP: #1557191 + * ipv4: fix memory leaks in ip_cmsg_send() callers + - LP: #1557191 + * net/mlx4_en: Choose time-stamping shift value according to HW frequency + - LP: #1557191 + * af_unix: Don't set err in unix_stream_read_generic unless there was an + error + - LP: #1557191 + * pipe: limit the per-user amount of pages allocated in pipes + - LP: #1557191 + * Linux 3.13.11-ckt36 + - LP: #1557191 + * sched/numa: Move task_numa_free() to __put_task_struct() + - LP: #1527643 + * sched/numa: Fix unsafe get_task_struct() in task_numa_assign() + - LP: #1527643 + * sched/numa: Fix use-after-free bug in the task_numa_compare + - LP: #1527643 + + -- Brad Figg Tue, 15 Mar 2016 08:41:17 -0700 + +linux (3.13.0-83.127) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1555839 + + [ Florian Westphal ] + + * SAUCE: [nf,v2] netfilter: x_tables: don't rely on well-behaving + userspace + - LP: #1555338 + + -- Brad Figg Thu, 10 Mar 2016 14:41:56 -0800 + +linux (3.13.0-82.126) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1554732 + + [ Upstream Kernel Changes ] + + * Revert "drm/radeon: call hpd_irq_event on resume" + - LP: #1554608 + * net: generic dev_disable_lro() stacked device handling + - LP: #1547680 + + -- Brad Figg Tue, 08 Mar 2016 13:28:08 -0800 + +linux (3.13.0-81.125) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1552316 + + [ Upstream Kernel Changes ] + + * Revert "firmware: dmi_scan: Fix UUID endianness for SMBIOS >= 2.6" + - LP: #1551419 + * bcache: Fix a lockdep splat in an error path + - LP: #1551327 + + -- Luis Henriques Wed, 02 Mar 2016 16:21:33 +0000 + +linux (3.13.0-80.124) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1548519 + + [ 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 + + [ Dan Streetman ] + + * SAUCE: nbd: ratelimit error msgs after socket close + - LP: #1505564 + + [ Upstream Kernel Changes ] + + * Revert "workqueue: make sure delayed work run in local cpu" + - LP: #1546320 + * [media] gspca: ov534/topro: prevent a division by 0 + - LP: #1542497 + * [media] media: dvb-core: Don't force CAN_INVERSION_AUTO in oneshot mode + - LP: #1542497 + * tools lib traceevent: Fix output of %llu for 64 bit values read on 32 + bit machines + - LP: #1542497 + * KVM: x86: correctly print #AC in traces + - LP: #1542497 + * drm/radeon: call hpd_irq_event on resume + - LP: #1542497 + * xhci: refuse loading if nousb is used + - LP: #1542497 + * arm64: Clear out any singlestep state on a ptrace detach operation + - LP: #1542497 + * time: Avoid signed overflow in timekeeping_get_ns() + - LP: #1542497 + * rtlwifi: fix memory leak for USB device + - LP: #1542497 + * wlcore/wl12xx: spi: fix oops on firmware load + - LP: #1542497 + * EDAC, mc_sysfs: Fix freeing bus' name + - LP: #1542497 + * EDAC: Don't try to cancel workqueue when it's never setup + - LP: #1542497 + * EDAC: Robustify workqueues destruction + - LP: #1542497 + * powerpc: Make value-returning atomics fully ordered + - LP: #1542497 + * powerpc: Make {cmp}xchg* and their atomic_ versions fully ordered + - LP: #1542497 + * dm space map metadata: remove unused variable in brb_pop() + - LP: #1542497 + * dm thin: fix race condition when destroying thin pool workqueue + - LP: #1542497 + * futex: Drop refcount if requeue_pi() acquired the rtmutex + - LP: #1542497 + * drm/radeon: clean up fujitsu quirks + - LP: #1542497 + * mmc: sdio: Fix invalid vdd in voltage switch power cycle + - LP: #1542497 + * mmc: sdhci: Fix sdhci_runtime_pm_bus_on/off() + - LP: #1542497 + * udf: limit the maximum number of indirect extents in a row + - LP: #1542497 + * nfs: Fix race in __update_open_stateid() + - LP: #1542497 + * USB: cp210x: add ID for ELV Marble Sound Board 1 + - LP: #1542497 + * NFSv4: Don't perform cached access checks before we've OPENed the file + - LP: #1542497 + * NFS: Fix attribute cache revalidation + - LP: #1542497 + * posix-clock: Fix return code on the poll method's error path + - LP: #1542497 + * rtlwifi: rtl8192de: Fix incorrect module parameter descriptions + - LP: #1542497 + * rtlwifi: rtl8192se: Fix module parameter initialization + - LP: #1542497 + * rtlwifi: rtl8192ce: Fix handling of module parameters + - LP: #1542497 + * rtlwifi: rtl8192cu: Add missing parameter setup + - LP: #1542497 + * bcache: fix a livelock when we cause a huge number of cache misses + - LP: #1542497 + * bcache: Add a cond_resched() call to gc + - LP: #1542497 + * bcache: clear BCACHE_DEV_UNLINK_DONE flag when attaching a backing + device + - LP: #1542497 + * bcache: fix a leak in bch_cached_dev_run() + - LP: #1542497 + * bcache: unregister reboot notifier if bcache fails to unregister device + - LP: #1542497 + * bcache: add mutex lock for bch_is_open + - LP: #1542497 + * bcache: allows use of register in udev to avoid "device_busy" error. + - LP: #1542497 + * bcache: Change refill_dirty() to always scan entire disk if necessary + - LP: #1542497 + * wlcore/wl12xx: spi: fix NULL pointer dereference (Oops) + - LP: #1542497 + * Input: i8042 - add Fujitsu Lifebook U745 to the nomux list + - LP: #1542497 + * libxfs: pack the agfl header structure so XFS_AGFL_SIZE is correct + - LP: #1542497 + * x86/xen: don't reset vcpu_info on a cancelled suspend + - LP: #1542497 + * udf: Prevent buffer overrun with multi-byte characters + - LP: #1542497 + * udf: Check output buffer length when converting name to CS0 + - LP: #1542497 + * PCI: host: Mark PCIe/PCI (MSI) IRQ cascade handlers as IRQF_NO_THREAD + - LP: #1542497 + * iwlwifi: update and fix 7265 series PCI IDs + - LP: #1542497 + * locks: fix unlock when fcntl_setlk races with a close + - LP: #1542497 + * ASoC: compress: Fix compress device direction check + - LP: #1542497 + * dm snapshot: fix hung bios when copy error occurs + - LP: #1542497 + * uml: fix hostfs mknod() + - LP: #1542497 + * uml: flush stdout before forking + - LP: #1542497 + * drm/nouveau/kms: take mode_config mutex in connector hotplug path + - LP: #1542497 + * x86/boot: Double BOOT_HEAP_SIZE to 64KB + - LP: #1542497 + * s390: fix normalization bug in exception table sorting + - LP: #1542497 + * xfs: inode recovery readahead can race with inode buffer creation + - LP: #1542497 + * clocksource/drivers/vt8500: Increase the minimum delta + - LP: #1542497 + * Input: elantech - mark protocols v2 and v3 as semi-mt + - LP: #1542497 + * x86/reboot/quirks: Add iMac10,1 to pci_reboot_dmi_table[] + - LP: #1542497 + * ALSA: seq: Fix missing NULL check at remove_events ioctl + - LP: #1542497 + * ALSA: seq: Fix race at timer setup and close + - LP: #1542497 + * virtio_balloon: fix race by fill and leak + - LP: #1542497 + * virtio_balloon: fix race between migration and ballooning + - LP: #1542497 + * parisc: Fix __ARCH_SI_PREAMBLE_SIZE + - LP: #1542497 + * scripts/recordmcount.pl: support data in text section on powerpc + - LP: #1542497 + * powerpc/module: Handle R_PPC64_ENTRY relocations + - LP: #1542497 + * ALSA: timer: Fix double unlink of active_list + - LP: #1542497 + * dmaengine: dw: fix cyclic transfer setup + - LP: #1542497 + * dmaengine: dw: fix cyclic transfer callbacks + - LP: #1542497 + * mmc: mmci: fix an ages old detection error + - LP: #1542497 + * ALSA: timer: Fix race among timer ioctls + - LP: #1542497 + * sparc64: fix incorrect sign extension in sys_sparc64_personality + - LP: #1542497 + * cifs: Ratelimit kernel log messages + - LP: #1542497 + * cifs: fix race between call_async() and reconnect() + - LP: #1542497 + * cifs_dbg() outputs an uninitialized buffer in cifs_readdir() + - LP: #1542497 + * m32r: fix m32104ut_defconfig build fail + - LP: #1542497 + * dma-debug: switch check from _text to _stext + - LP: #1542497 + * scripts/bloat-o-meter: fix python3 syntax error + - LP: #1542497 + * ocfs2/dlm: ignore cleaning the migration mle that is inuse + - LP: #1542497 + * ALSA: timer: Harden slave timer list handling + - LP: #1542497 + * mm: soft-offline: check return value in second __get_any_page() call + - LP: #1542497 + * memcg: only free spare array when readers are done + - LP: #1542497 + * panic: release stale console lock to always get the logbuf printed out + - LP: #1542497 + * kernel/panic.c: turn off locks debug before releasing console lock + - LP: #1542497 + * printk: do cond_resched() between lines while outputting to consoles + - LP: #1542497 + * ALSA: hda - Fix bass pin fixup for ASUS N550JX + - LP: #1542497 + * crypto: af_alg - Disallow bind/setkey/... after accept(2) + - LP: #1542497 + * crypto: af_alg - Fix socket double-free when accept fails + - LP: #1542497 + * crypto: af_alg - Add nokey compatibility path + - LP: #1542497 + * crypto: hash - Add crypto_ahash_has_setkey + - LP: #1542497 + * crypto: af_alg - Allow af_af_alg_release_parent to be called on nokey + path + - LP: #1542497 + * crypto: af_alg - Forbid bind(2) when nokey child sockets are present + - LP: #1542497 + * ALSA: hrtimer: Fix stall by hrtimer_cancel() + - LP: #1542497 + * ALSA: pcm: Fix snd_pcm_hw_params struct copy in compat mode + - LP: #1542497 + * ALSA: seq: Fix snd_seq_call_port_info_ioctl in compat mode + - LP: #1542497 + * ALSA: control: Avoid kernel warnings from tlv ioctl with numid 0 + - LP: #1542497 + * crypto: algif_skcipher - Load TX SG list after waiting + - LP: #1542497 + * crypto: crc32c - Fix crc32c soft dependency + - LP: #1542497 + * IB/qib: fix mcast detach when qp not attached + - LP: #1542497 + * iscsi-target: Fix potential dead-lock during node acl delete + - LP: #1542497 + * ocfs2: NFS hangs in __ocfs2_cluster_lock due to race with + ocfs2_unblock_lock + - LP: #1542497 + * [media] rc: allow rc modules to be loaded if rc-main is not a module + - LP: #1542497 + * SCSI: initio: remove duplicate module device table + - LP: #1542497 + * clk: xgene: Fix divider with non-zero shift value + - LP: #1542497 + * ath9k_htc: check for underflow in ath9k_htc_rx_msg() + - LP: #1542497 + * mtd: nand: fix ONFI parameter page layout + - LP: #1542497 + * ALSA: fm801: propagate TUNER_ONLY bit when autodetected + - LP: #1542497 + * pinctrl: bcm2835: Fix memory leak in error path + - LP: #1542497 + * kconfig: return 'false' instead of 'no' in bool function + - LP: #1542497 + * perf/x86: Fix filter_events() bug with event mappings + - LP: #1542497 + * power: test_power: correctly handle empty writes + - LP: #1542497 + * firmware: actually return NULL on failed request_firmware_nowait() + - LP: #1542497 + * mmc: sd: limit SD card power limit according to cards capabilities + - LP: #1542497 + * Btrfs: clean up an error code in btrfs_init_space_info() + - LP: #1542497 + * batman-adv: Avoid recursive call_rcu for batadv_bla_claim + - LP: #1542497 + * batman-adv: Avoid recursive call_rcu for batadv_nc_node + - LP: #1542497 + * batman-adv: Drop immediate orig_node free function + - LP: #1542497 + * printk: help pr_debug and pr_devel to optimize out arguments + - LP: #1542497 + * mmc: debugfs: correct wrong voltage value + - LP: #1542497 + * IB/mlx4: Initialize hop_limit when creating address handle + - LP: #1542497 + * veth: don’t modify ip_summed; doing so treats packets with bad + checksums as good. + - LP: #1542497 + * sctp: sctp should release assoc when sctp_make_abort_user return NULL + in sctp_close + - LP: #1542497 + * connector: bump skb->users before callback invocation + - LP: #1542497 + * unix: properly account for FDs passed over unix sockets + - LP: #1542497 + * bridge: Only call /sbin/bridge-stp for the initial network namespace + - LP: #1542497 + * net: sctp: prevent writes to cookie_hmac_alg from accessing invalid + memory + - LP: #1542497 + * tcp_yeah: don't set ssthresh below 2 + - LP: #1542497 + * bonding: Prevent IPv6 link local address on enslaved devices + - LP: #1542497 + * phonet: properly unshare skbs in phonet_rcv() + - LP: #1542497 + * ipv6: update skb->csum when CE mark is propagated + - LP: #1542497 + * team: Replace rcu_read_lock with a mutex in team_vlan_rx_kill_vid + - LP: #1542497 + * Linux 3.13.11-ckt34 + - LP: #1542497 + * qeth: initialize net_device with carrier off + - LP: #1541907 + * umount: Do not allow unmounting rootfs. + - LP: #1541313 + * [media] usbvision fix overflow of interfaces array + - LP: #1546273 + * [media] usbvision: fix leak of usb_dev on failure paths in + usbvision_probe() + - LP: #1546273 + * [media] usbvision: fix crash on detecting device with invalid + configuration + - LP: #1546273 + * tty: Fix unsafe ldisc reference via ioctl(TIOCGETD) + - LP: #1546273 + * USB: serial: visor: fix crash on detecting device without write_urbs + - LP: #1546273 + * ASN.1: Fix non-match detection failure on data overrun + - LP: #1546273 + * iio: adis_buffer: Fix out-of-bounds memory access + - LP: #1546273 + * x86/irq: Call chip->irq_set_affinity in proper context + - LP: #1546273 + * usb: cdc-acm: handle unlinked urb in acm read callback + - LP: #1546273 + * usb: cdc-acm: send zero packet for intel 7260 modem + - LP: #1546273 + * cdc-acm:exclude Samsung phone 04e8:685d + - LP: #1546273 + * usb: hub: do not clear BOS field during reset device + - LP: #1546273 + * USB: cp210x: add ID for IAI USB to RS485 adaptor + - LP: #1546273 + * USB: visor: fix null-deref at probe + - LP: #1546273 + * USB: serial: option: Adding support for Telit LE922 + - LP: #1546273 + * ALSA: seq: Fix incorrect sanity check at snd_seq_oss_synth_cleanup() + - LP: #1546273 + * ALSA: seq: Degrade the error message for too many opens + - LP: #1546273 + * USB: serial: ftdi_sio: add support for Yaesu SCU-18 cable + - LP: #1546273 + * USB: option: fix Cinterion AHxx enumeration + - LP: #1546273 + * ALSA: compress: Disable GET_CODEC_CAPS ioctl for some architectures + - LP: #1546273 + * ALSA: usb-audio: Fix TEAC UD-501/UD-503/NT-503 usb delay + - LP: #1546273 + * arm64: errata: Add -mpc-relative-literal-loads to build flags + - LP: #1533009, #1546273 + * SCSI: fix crashes in sd and sr runtime PM + - LP: #1546273 + * n_tty: Fix unsafe reference to "other" ldisc + - LP: #1546273 + * ALSA: dummy: Disable switching timer backend via sysfs + - LP: #1546273 + * drm/vmwgfx: respect 'nomodeset' + - LP: #1546273 + * x86/mm/pat: Avoid truncation when converting cpa->numpages to address + - LP: #1546273 + * perf annotate browser: Fix behaviour of Shift-Tab with nothing focussed + - LP: #1546273 + * powerpc/perf: Remove PPMU_HAS_SSLOT flag for Power8 + - LP: #1546273 + * Linux 3.13.11-ckt35 + - LP: #1546273 + * netfilter: bridge: don't use nf_bridge_info data to store mac header + - LP: #1463911 + * netfilter: bridge: restore vlan tag when refragmenting + - LP: #1463911 + * netfilter: bridge: forward IPv6 fragmented packets + - LP: #1463911 + * netfilter: bridge: Use __in6_dev_get rather than in6_dev_get in + br_validate_ipv6 + - LP: #1463911 + * ALSA: usb-audio: avoid freeing umidi object twice + - LP: #1546177 + - CVE-2016-2384 + * vmstat: explicitly schedule per-cpu work on the CPU we need it to run + on + - LP: #1546320 + + -- Brad Figg Mon, 22 Feb 2016 13:51:45 -0800 + +linux (3.13.0-79.123) trusty; urgency=low + + [ Seth Forshee ] + + * SAUCE: cred: Add clone_cred() interface + - LP: #1534961, #1535150 + - CVE-2016-1575 CVE-2016-1576 + * SAUCE: overlayfs: Use mounter's credentials instead of full kernel + credentials + - LP: #1534961, #1535150 + - CVE-2016-1575 CVE-2016-1576 + * SAUCE: overlayfs: Skip permission checking for trusted.overlayfs.* + xattrs + - LP: #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 13:14:25 +0000 + +linux (3.13.0-78.122) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1540559 + + [ Eric Dumazet ] + + * SAUCE: (no-up) udp: properly support MSG_PEEK with truncated buffers + - LP: #1527902 + + [ 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 + + [ Upstream Kernel Changes ] + + * Revert "[stable-only] net: add length argument to + skb_copy_and_csum_datagram_iovec" + - LP: #1538756 + * unregister_netdevice : move RTM_DELLINK to until after ndo_uninit + - LP: #1525324 + * rtnetlink: delay RTM_DELLINK notification until after ndo_uninit() + - LP: #1525324 + * Drivers: hv: Eliminate the channel spinlock in the callback path + - LP: #1519897 + * Drivers: hv: vmbus: Implement per-CPU mapping of relid to channel + - LP: #1519897 + * Drivers: hv: vmbus: Suport an API to send pagebuffers with additional + control + - LP: #1519897 + * Drivers: hv: vmbus: Suport an API to send packet with additional + control + - LP: #1519897 + * Drivers: hv: vmbus: Export the vmbus_sendpacket_pagebuffer_ctl() + - LP: #1519897 + * Drivers: hv: vmbus: Fix a siganlling host signalling issue + - LP: #1519897 + * Drivers: hv: vmbus: Fix a Host signaling bug + - LP: #1519897 + * ARC: Fix silly typo in MAINTAINERS file + - LP: #1538756 + * ip6mr: call del_timer_sync() in ip6mr_free_table() + - LP: #1538756 + * gre6: allow to update all parameters via rtnl + - LP: #1538756 + * atl1c: Improve driver not to do order 4 GFP_ATOMIC allocation + - LP: #1538756 + * sctp: use the same clock as if sock source timestamps were on + - LP: #1538756 + * sctp: update the netstamp_needed counter when copying sockets + - LP: #1538756 + * ipv6: sctp: clone options to avoid use after free + - LP: #1538756 + * net: add validation for the socket syscall protocol argument + - LP: #1538756 + * sh_eth: fix kernel oops in skb_put() + - LP: #1538756 + * pptp: verify sockaddr_len in pptp_bind() and pptp_connect() + - LP: #1538756 + * bluetooth: Validate socket address length in sco_sock_bind(). + - LP: #1538756 + * af_unix: Revert 'lock_interruptible' in stream receive code + - LP: #1538756 + * KEYS: Fix race between read and revoke + - LP: #1538756 + * tools: Add a "make all" rule + - LP: #1538756 + * efi: Disable interrupts around EFI calls, not in the epilog/prolog + calls + - LP: #1538756 + * net: ipmr: fix static mfc/dev leaks on table destruction + - LP: #1538756 + * fuse: break infinite loop in fuse_fill_write_pages() + - LP: #1538756 + * usb: gadget: pxa27x: fix suspend callback + - LP: #1538756 + * iio: fix some warning messages + - LP: #1538756 + * USB: cp210x: Remove CP2110 ID from compatibility list + - LP: #1538756 + * USB: cdc_acm: Ignore Infineon Flash Loader utility + - LP: #1538756 + * USB: serial: Another Infineon flash loader USB ID + - LP: #1538756 + * ext4: Fix handling of extended tv_sec + - LP: #1538756 + * jbd2: Fix unreclaimed pages after truncate in data=journal mode + - LP: #1538756 + * drm/ttm: Fixed a read/write lock imbalance + - LP: #1538756 + * i2c: mv64xxx: The n clockdiv factor is 0 based on sunxi SoCs + - LP: #1538756 + * AHCI: Fix softreset failed issue of Port Multiplier + - LP: #1538756 + * sata_sil: disable trim + - LP: #1538756 + * staging: lustre: echo_copy.._lsm() dereferences userland pointers + directly + - LP: #1538756 + * irqchip/versatile-fpga: Fix PCI IRQ mapping on Versatile PB + - LP: #1538756 + * usb: core : hub: Fix BOS 'NULL pointer' kernel panic + - LP: #1538756 + * USB: whci-hcd: add check for dma mapping error + - LP: #1538756 + * usb: Use the USB_SS_MULT() macro to decode burst multiplier for log + message + - LP: #1538756 + * dm btree: fix leak of bufio-backed block in btree_split_sibling error + path + - LP: #1538756 + * SCSI: Fix NULL pointer dereference in runtime PM + - LP: #1538756 + * usb: xhci: fix config fail of FS hub behind a HS hub with MTT + - LP: #1538756 + * ALSA: rme96: Fix unexpected volume reset after rate changes + - LP: #1538756 + * ALSA: hda - Add inverted dmic for Packard Bell DOTS + - LP: #1523232, #1538756 + * virtio: fix memory leak of virtio ida cache layers + - LP: #1538756 + * 9p: ->evict_inode() should kick out ->i_data, not ->i_mapping + - LP: #1538756 + * radeon/cik: Fix GFX IB test on Big-Endian + - LP: #1538756 + * crypto: skcipher - Copy iv from desc even for 0-len walks + - LP: #1538756 + * dm thin metadata: fix bug when taking a metadata snapshot + - LP: #1538756 + * dm space map metadata: fix ref counting bug when bootstrapping a new + space map + - LP: #1538756 + * ipmi: move timer init to before irq is setup + - LP: #1538756 + * KVM: PPC: Book3S HV: Prohibit setting illegal transaction state in MSR + - LP: #1538756 + * rfkill: copy the name into the rfkill struct + - LP: #1538756 + * dm btree: fix bufio buffer leaks in dm_btree_del() error path + - LP: #1538756 + * ses: Fix problems with simple enclosures + - LP: #1538756 + * vgaarb: fix signal handling in vga_get() + - LP: #1538756 + * ses: fix additional element traversal bug + - LP: #1538756 + * xhci: fix usb2 resume timing and races. + - LP: #1538756 + * USB: add quirk for devices with broken LPM + - LP: #1538756 + * powercap / RAPL: fix BIOS lock check + - LP: #1538756 + * parisc iommu: fix panic due to trying to allocate too large region + - LP: #1538756 + * mm, vmstat: allow WQ concurrency to discover memory reclaim doesn't + make any progress + - LP: #1538756 + * mm: hugetlb: call huge_pte_alloc() only if ptep is null + - LP: #1538756 + * drivers/base/memory.c: prohibit offlining of memory blocks with missing + sections + - LP: #1538756 + * sh64: fix __NR_fgetxattr + - LP: #1538756 + * n_tty: Fix poll() after buffer-limited eof push read + - LP: #1538756 + * tty: Fix GPF in flush_to_ldisc() + - LP: #1538756 + * genirq: Prevent chip buslock deadlock + - LP: #1538756 + * ALSA: usb-audio: Add a more accurate volume quirk for AudioQuest + DragonFly + - LP: #1538756 + * ARM: 8471/1: need to save/restore arm register(r11) when it is + corrupted + - LP: #1538756 + * spi: fix parent-device reference leak + - LP: #1538756 + * scripts: recordmcount: break hardlinks + - LP: #1538756 + * ftrace/scripts: Have recordmcount copy the object file + - LP: #1538756 + * ARC: dw2 unwind: Reinstante unwinding out of modules + - LP: #1538756 + * ARC: dw2 unwind: Ignore CIE version !=1 gracefully instead of bailing + - LP: #1538756 + * ALSA: hda - Set SKL+ hda controller power at freeze() and thaw() + - LP: #1538756 + * s390/dis: Fix handling of format specifiers + - LP: #1538756 + * USB: ipaq.c: fix a timeout loop + - LP: #1538756 + * USB: fix invalid memory access in hub_activate() + - LP: #1538756 + * x86/mce: Ensure offline CPUs don't participate in rendezvous process + - LP: #1538756 + * parisc: Fix syscall restarts + - LP: #1538756 + * ALSA: hda/realtek - Fix silent headphone output on MacPro 4,1 (v2) + - LP: #1538756 + * ASoC: arizona: Fix bclk for sample rates that are multiple of 4kHz + - LP: #1538756 + * mm/memory_hotplug.c: check for missing sections in + test_pages_in_a_zone() + - LP: #1538756 + * ftrace/scripts: Fix incorrect use of sprintf in recordmcount + - LP: #1538756 + * tracing: Fix setting of start_index in find_next() + - LP: #1538756 + * async_tx: use GFP_NOWAIT rather than GFP_IO + - LP: #1538756 + * dts: vt8500: Add SDHC node to DTS file for WM8650 + - LP: #1538756 + * ftrace/module: Call clean up function when module init fails early + - LP: #1538756 + * vmstat: allocate vmstat_wq before it is used + - LP: #1538756 + * firmware: dmi_scan: Fix UUID endianness for SMBIOS >= 2.6 + - LP: #1538756 + * kvm: x86: only channel 0 of the i8254 is linked to the HPET + - LP: #1538756 + * ipv6/addrlabel: fix ip6addrlbl_get() + - LP: #1538756 + * net: fix warnings in 'make htmldocs' by moving macro definition out of + field declaration + - LP: #1538756 + * ser_gigaset: fix deallocation of platform device structure + - LP: #1538756 + * pinctrl: bcm2835: Fix initial value for direction_output + - LP: #1538756 + * mISDN: fix a loop count + - LP: #1538756 + * sh_eth: fix TX buffer byte-swapping + - LP: #1538756 + * qlcnic: fix a timeout loop + - LP: #1538756 + * net: phy: mdio-mux: Check return value of mdiobus_alloc() + - LP: #1538756 + * include/linux/mmdebug.h: should include linux/bug.h + - LP: #1538756 + * net: possible use after free in dst_release + - LP: #1538756 + * Linux 3.13.11-ckt33 + - LP: #1538756 + * xfrm: dst_entries_init() per-net dst_ops + - LP: #1486670 + + -- Brad Figg Mon, 01 Feb 2016 12:04:20 -0800 + +linux (3.13.0-77.121) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1535880 + * Merged back Ubuntu-3.13.0-75.119 + + -- Luis Henriques Tue, 19 Jan 2016 19:52:52 +0000 + +linux (3.13.0-76.120) trusty; 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 09:54:03 +0000 + +linux (3.13.0-75.119) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1532781 + + [ Kamal Mostafa ] + + * Revert "SAUCE: disable stack-protector for ARM compressed bootloader" + * [Config] updateconfigs: select CC_STACKPROTECTOR_REGULAR + + [ Upstream Kernel Changes ] + + * Revert "dm mpath: fix stalls when handling invalid ioctls" + - LP: #1523661 + * Revert "xhci: don't finish a TD if we get a short transfer event mid + TD" + - LP: #1529077 + * x86/setup: Extend low identity map to cover whole kernel range + - LP: #1523661 + * x86/setup: Fix low identity map for >= 2GB kernel range + - LP: #1523661 + * drm/radeon: add quirk for MSI R7 370 + - LP: #1523661 + * drm/radeon: add quirk for ASUS R7 370 + - LP: #1523661 + * drm/radeon: fix quirk for MSI R7 370 Armor 2X + - LP: #1523661 + * irda: precedence bug in irlmp_seq_hb_idx() + - LP: #1523661 + * macvtap: unbreak receiving of gro skb with frag list + - LP: #1523661 + * RDS-TCP: Recover correctly from pskb_pull()/pksb_trim() failure in + rds_tcp_data_recv + - LP: #1523661 + * stmmac: Correctly report PTP capabilities. + - LP: #1523661 + * ipmr: fix possible race resulting from improper usage of + IP_INC_STATS_BH() in preemptible context. + - LP: #1523661 + * qmi_wwan: fix entry for HP lt4112 LTE/HSPA+ Gobi 4G Module + - LP: #1523661 + * net: avoid NULL deref in inet_ctl_sock_destroy() + - LP: #1523661 + * net: fix a race in dst_release() + - LP: #1523661 + * HID: core: Avoid uninitialized buffer access + - LP: #1523661 + * [media] v4l2-compat-ioctl32: fix alignment for ARM64 + - LP: #1523661 + * net: mvneta: Fix CPU_MAP registers initialisation + - LP: #1523661 + * mtd: mtdpart: fix add_mtd_partitions error path + - LP: #1523661 + * fs/proc, core/debug: Don't expose absolute kernel addresses via wchan + - LP: #1523661 + * ARM: 8426/1: dma-mapping: add missing range check in dma_mmap() + - LP: #1523661 + * ARM: 8427/1: dma-mapping: add support for offset parameter in + dma_mmap() + - LP: #1523661 + * spi: ti-qspi: Fix data corruption seen on r/w stress test + - LP: #1523661 + * lockd: create NSM handles per net namespace + - LP: #1523661 + * ARM: common: edma: Fix channel parameter for irq callbacks + - LP: #1523661 + * iommu/vt-d: Fix error in detect ATS capability + - LP: #1523661 + * iommu/vt-d: Fix ATSR handling for Root-Complex integrated endpoints + - LP: #1523661 + * ext4: fix potential use after free in __ext4_journal_stop + - LP: #1523661 + * fix calculation of meta_bg descriptor backups + - LP: #1523661 + * ext4, jbd2: ensure entering into panic after recording an error in + superblock + - LP: #1523661 + * vTPM: fix memory allocation flag for rtce buffer at kernel boot + - LP: #1523661 + * [media] media: vb2 dma-contig: Fully cache synchronise buffers in + prepare and finish + - LP: #1523661 + * Bluetooth: hidp: fix device disconnect on idle timeout + - LP: #1523661 + * Bluetooth: ath3k: Add new AR3012 0930:021c id + - LP: #1502781, #1523661 + * Bluetooth: ath3k: Add support of AR3012 0cf3:817b device + - LP: #1506615, #1523661 + * spi: atmel: Fix DMA-setup for transfers with more than 8 bits per word + - LP: #1523661 + * staging: rtl8712: Add device ID for Sitecom WLA2100 + - LP: #1523661 + * ACPI: Use correct IRQ when uninstalling ACPI interrupt handler + - LP: #1523661 + * ALSA: hda/realtek - Dell XPS one ALC3260 speaker no sound after resume + back + - LP: #1523661 + * ALSA: hda - Disable 64bit address for Creative HDA controllers + - LP: #1523661 + * MAINTAINERS: Add public mailing list for ARC + - LP: #1523661 + * megaraid_sas: Do not use PAGE_SIZE for max_sectors + - LP: #1523661 + * arm64: Fix compat register mappings + - LP: #1523661 + * can: Use correct type in sizeof() in nla_put() + - LP: #1523661 + * mtd: blkdevs: fix potential deadlock + lockdep warnings + - LP: #1523661 + * crypto: algif_hash - Only export and import on sockets with data + - LP: #1523661 + * xtensa: fixes for configs without loop option + - LP: #1523661 + * megaraid_sas : SMAP restriction--do not access user memory from IOCTL + code + - LP: #1523661 + * mac80211: allow null chandef in tracing + - LP: #1523661 + * recordmcount: Fix endianness handling bug for nop_mcount + - LP: #1523661 + * KVM: Disable SMAP for guests in EPT realmode and EPT unpaging mode + - LP: #1523661 + * KVM: VMX: fix SMEP and SMAP without EPT + - LP: #1523661 + * ALSA: hda - Apply pin fixup for HP ProBook 6550b + - LP: #1523661 + * ALSA: hda - Add Intel Lewisburg device IDs Audio + - LP: #1523661 + * firewire: ohci: fix JMicron JMB38x IT context discovery + - LP: #1523661 + * proc: actually make proc_fd_permission() thread-friendly + - LP: #1523661 + * printk: prevent userland from spoofing kernel messages + - LP: #1523661 + * x86/cpu: Call verify_cpu() after having entered long mode too + - LP: #1523661 + * Btrfs: fix race leading to incorrect item deletion when dropping + extents + - LP: #1523661 + * Btrfs: fix race leading to BUG_ON when running delalloc for nodatacow + - LP: #1523661 + * perf: Fix inherited events vs. tracepoint filters + - LP: #1523661 + * scsi_sysfs: Fix queue_ramp_up_period return code + - LP: #1523661 + * Btrfs: fix race when listing an inode's xattrs + - LP: #1523661 + * storvsc: Don't set the SRB_FLAGS_QUEUE_ACTION_ENABLE flag + - LP: #1523661 + * drm/ast: Initialized data needed to map fbdev memory + - LP: #1523661 + * FS-Cache: Increase reference of parent after registering, netfs success + - LP: #1523661 + * FS-Cache: Don't override netfs's primary_index if registering failed + - LP: #1523661 + * FS-Cache: Handle a write to the page immediately beyond the EOF marker + - LP: #1523661 + * binfmt_elf: Don't clobber passed executable's file header + - LP: #1523661 + * wm831x_power: Use IRQF_ONESHOT to request threaded IRQs + - LP: #1523661 + * mwifiex: fix mwifiex_rdeeprom_read() + - LP: #1523661 + * dmaengine: dw: convert to __ffs() + - LP: #1523661 + * devres: fix a for loop bounds check + - LP: #1523661 + * MIPS: atomic: Fix comment describing atomic64_add_unless's return + value. + - LP: #1523661 + * ipv6: fix tunnel error handling + - LP: #1523661 + * perf trace: Fix documentation for -i + - LP: #1523661 + * bonding: fix panic on non-ARPHRD_ETHER enslave failure + - LP: #1523661 + * mac80211: fix driver RSSI event calculations + - LP: #1523661 + * packet: fix match_fanout_group() + - LP: #1523661 + * ARM: pxa: remove incorrect __init annotation on pxa27x_set_pwrmode + - LP: #1523661 + * drm: Fix return value of drm_framebuffer_init() + - LP: #1523661 + * netfilter: nfnetlink: don't probe module if it exists + - LP: #1523661 + * TPM: Avoid reference to potentially freed memory + - LP: #1523661 + * Btrfs: fix file corruption and data loss after cloning inline extents + - LP: #1523661 + * Btrfs: don't use ram_bytes for uncompressed inline items + - LP: #1523661 + * Btrfs: fix truncation of compressed and inlined extents + - LP: #1523661 + * Linux 3.13.11-ckt31 + - LP: #1523661 + * stackprotector: Unify the HAVE_CC_STACKPROTECTOR logic between + architectures + * stackprotector: Introduce CONFIG_CC_STACKPROTECTOR_STRONG + * powerpc/tm: Check for already reclaimed tasks + - LP: #1520411 + * powerpc/tm: Block signal return setting invalid MSR state + - LP: #1520411 + * include/linux/mm.h: remove ifdef condition + - LP: #1294283 + * hv: hv_balloon: avoid memory leak on alloc_error of 2MB memory block + - LP: #1294283 + * Drivers: hv: hv_balloon: Fix a locking bug in the balloon driver + - LP: #1294283 + * Drivers: hv: hv_balloon: refuse to balloon below the floor + - LP: #1294283 + * Drivers: hv: hv_balloon: survive ballooning request with num_pages=0 + - LP: #1294283 + * Drivers: hv: hv_balloon: correctly handle val.freeramINT_MAX case + - LP: #1294283 + * Drivers: hv: balloon: check if ha_region_mutex was acquired in + MEM_CANCEL_ONLINE case + - LP: #1294283 + * mm: meminit: make __early_pfn_to_nid SMP-safe and introduce + meminit_pfn_in_nid + - LP: #1294283 + * mm: meminit: inline some helper functions + - LP: #1294283 + * mm, meminit: allow early_pfn_to_nid to be used during runtime + - LP: #1294283 + * mm: initialize hotplugged pages as reserved + - LP: #1294283 + * fanotify: fix -EOVERFLOW with large files on 64-bit + - LP: #1527039 + * tty: fix stall caused by missing memory barrier in drivers/tty/n_tty.c + - LP: #1512815, #1528377 + * iio: lpc32xx_adc: fix warnings caused by enabling unprepared clock + - LP: #1528377 + * iio:ad5064: Make sure ad5064_i2c_write() returns 0 on success + - LP: #1528377 + * iio: ad5064: Fix ad5629/ad5669 shift + - LP: #1528377 + * iio:ad7793: Fix ad7785 product ID + - LP: #1528377 + * x86/fpu: Fix 32-bit signal frame handling + - LP: #1528377 + * ALSA: usb-audio: add packet size quirk for the Medeli DD305 + - LP: #1528377 + * ALSA: usb-audio: prevent CH345 multiport output SysEx corruption + - LP: #1528377 + * ALSA: usb-audio: work around CH345 input SysEx corruption + - LP: #1528377 + * USB: serial: option: add support for Novatel MiFi USB620L + - LP: #1528377 + * USB: ti_usb_3410_5052: Add Honeywell HGI80 ID + - LP: #1528377 + * ASoC: wm8962: correct addresses for HPF_C_0/1 + - LP: #1528377 + * mac80211: mesh: fix call_rcu() usage + - LP: #1528377 + * usb: dwc3: gadget: let us set lower max_speed + - LP: #1528377 + * dm: fix ioctl retry termination with signal + - LP: #1528377 + * usb: chipidea: debug: disable usb irq while role switch + - LP: #1528377 + * MIPS: KVM: Fix ASID restoration logic + - LP: #1528377 + * MIPS: KVM: Fix CACHE immediate offset sign extension + - LP: #1528377 + * MIPS: KVM: Uninit VCPU in vcpu_create error path + - LP: #1528377 + * xhci: Fix a race in usb2 LPM resume, blocking U3 for usb2 devices + - LP: #1528377 + * x86/cpu: Fix SMAP check in PVOPS environments + - LP: #1528377 + * ALSA: hda - Add fixup for Acer Aspire One Cloudbook 14 + - LP: #1528377 + * arm64: restore bogomips information in /proc/cpuinfo + - LP: #1528377 + * USB: option: add XS Stick W100-2 from 4G Systems + - LP: #1528377 + * usblp: do not set TASK_INTERRUPTIBLE before lock + - LP: #1528377 + * mac: validate mac_partition is within sector + - LP: #1528377 + * ALSA: hda - Apply HP headphone fixups more generically + - LP: #1528377 + * fat: fix fake_offset handling on error path + - LP: #1528377 + * kernel/signal.c: unexport sigsuspend() + - LP: #1528377 + * parisc: Drop unused MADV_xxxK_PAGES flags from asm/mman.h + - LP: #1528377 + * can: sja1000: clear interrupts on start + - LP: #1528377 + * ARC: dw2 unwind: Remove falllback linear search thru FDE entries + - LP: #1528377 + * fix sysvfs symlinks + - LP: #1528377 + * vfs: Make sendfile(2) killable even better + - LP: #1528377 + * vfs: Avoid softlockups with sendfile(2) + - LP: #1528377 + * nfs4: start callback_ident at idr 1 + - LP: #1528377 + * ALSA: hda - Fix headphone noise after Dell XPS 13 resume back from S3 + - LP: #1519168, #1528377 + * ring-buffer: Update read stamp with first real commit on page + - LP: #1528377 + * arm64: KVM: Fix AArch32 to AArch64 register mapping + - LP: #1528377 + * drm/radeon: make rv770_set_sw_state failures non-fatal + - LP: #1528377 + * RDS: fix race condition when sending a message on unbound socket + - LP: #1528377 + * btrfs: fix signed overflows in btrfs_sync_file + - LP: #1528377 + * drm/radeon: make some dpm errors debug only + - LP: #1528377 + * nfs: if we have no valid attrs, then don't declare the attribute cache + valid + - LP: #1528377 + * xen/gntdev: Grant maps should not be subject to NUMA balancing + - LP: #1528377 + * iscsi-target: Fix rx_login_comp hang after login failure + - LP: #1528377 + * target: Fix race for SCF_COMPARE_AND_WRITE_POST checking + - LP: #1528377 + * target: fix COMPARE_AND_WRITE non zero SGL offset data corruption + - LP: #1528377 + * block: Always check queue limits for cloned requests + - LP: #1528377 + * Fix a memory leak in scsi_host_dev_release() + - LP: #1528377 + * wan/x25: Fix use-after-free in x25_asy_open_tty() + - LP: #1528377 + * sched/core: Clear the root_domain cpumasks in init_rootdomain() + - LP: #1528377 + * x86/signal: Fix restart_syscall number for x32 tasks + - LP: #1528377 + * mmc: remove bondage between REQ_META and reliable write + - LP: #1528377 + * sctp: translate host order to network order when setting a hmacid + - LP: #1528377 + * usb: musb: core: fix order of arguments to ulpi write callback + - LP: #1528377 + * FS-Cache: Add missing initialization of ret in cachefiles_write_page() + - LP: #1528377 + * tcp: md5: fix lockdep annotation + - LP: #1528377 + * ARM: dts: Kirkwood: Fix QNAP TS219 power-off + - LP: #1528377 + * isdn: Partially revert debug format string usage clean up + - LP: #1528377 + * remoteproc: avoid stack overflow in debugfs file + - LP: #1528377 + * net: mvneta: add configuration for MBUS windows access protection + - LP: #1528377 + * net: mvneta: fix bit assignment in MVNETA_RXQ_CONFIG_REG + - LP: #1528377 + * net: mvneta: fix bit assignment for RX packet irq enable + - LP: #1528377 + * sched/core: Remove false-positive warning from wake_up_process() + - LP: #1528377 + * packet: allow to transmit +4 byte in TX_RING slot for VLAN case + - LP: #1528377 + * packet: tpacket_snd(): fix signed/unsigned comparison + - LP: #1528377 + * packet: only allow extra vlan len on ethernet devices + - LP: #1528377 + * packet: fix tpacket_snd max frame len + - LP: #1528377 + * net/mlx4_core: Avoid returning success in case of an error flow + - LP: #1528377 + * net: ip6mr: fix static mfc/dev leaks on table destruction + - LP: #1528377 + * unix: avoid use-after-free in ep_remove_wait_queue + - LP: #1528377 + * broadcom: fix PHY_ID_BCM5481 entry in the id table + - LP: #1528377 + * net/neighbour: fix crash at dumping device-agnostic proxy entries + - LP: #1528377 + * Linux 3.13.11-ckt32 + - LP: #1528377 + * KVM: x86: Reload pit counters for all channels when restoring state + - LP: #1530956 + - CVE-2015-7513 + * HID: wacom - make sure touch_input is valid before using it + - LP: #1310800 + * xfs: give all workqueues rescuer threads + - LP: #1527062 + + -- Luis Henriques Mon, 11 Jan 2016 12:13:33 +0000 + +linux (3.13.0-74.118) trusty; urgency=low + + [ Kamal Mostafa ] + + * Release Tracking Bug + - LP: #1527404 + + [ Jann Horn ] + + * ptrace: being capable wrt a process requires mapped uids/gids + - LP: #1527374 + + -- Kamal Mostafa Thu, 17 Dec 2015 13:06:31 -0800 + +linux (3.13.0-74.117) trusty; 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/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 18:13:16 +0000 + +linux (3.13.0-73.116) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1522858 + + [ Upstream Kernel Changes ] + + * Revert "dm: fix AB-BA deadlock in __dm_destroy()" + - LP: #1522766 + * dm: fix AB-BA deadlock in __dm_destroy() + - LP: #1522766 + + -- Luis Henriques Fri, 04 Dec 2015 14:13:28 +0000 + +linux (3.13.0-72.115) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1521979 + + [ Andy Whitcroft ] + + * [Packaging] control -- make element ordering deterministic + - LP: #1516686 + * [Packaging] control -- prepare for new kernel-wedge semantics + - LP: #1516686 + * [Tests] rebuild -- fix up rebuild test + - LP: #1516686 + * [Debian] rebuild should only trigger for non-linux packages + - LP: #1498862, #1516686 + * [Tests] gcc-multilib does not exist on ppc64el + - LP: #1515541 + + [ Craig Magina ] + + * [Config] Enable USB for arm64 + - LP: #1514971 + + [ Duc Dang ] + + * SAUCE: (noup) arm64: dts: Add USB nodes for APM X-Gene v1 platforms + - LP: #1514971 + + [ Joseph Salisbury ] + + * SAUCE: scsi_sysfs: protect against double execution of + __scsi_remove_device() + - LP: #1509029 + + [ Upstream Kernel Changes ] + + * Revert "ARM64: unwind: Fix PC calculation" + - LP: #1520264 + * [SCSI] hpsa: allow SCSI mid layer to handle unit attention + - LP: #1512415 + * usb: make xhci platform driver use 64 bit or 32 bit DMA + - LP: #1514971 + * usb: Add support for ACPI identification to xhci-platform + - LP: #1514971 + * xhci: Workaround to get Intel xHCI reset working more reliably + * isdn_ppp: Add checks for allocation failure in isdn_ppp_open() + - LP: #1520264 + * ppp, slip: Validate VJ compression slot parameters completely + - LP: #1520264 + * staging/dgnc: fix info leak in ioctl + - LP: #1520264 + * regmap: debugfs: Ensure we don't underflow when printing access masks + - LP: #1520264 + * regmap: debugfs: Don't bother actually printing when calculating max + length + - LP: #1520264 + * tools lib traceevent: Fix string handling in heterogeneous arch + environments + - LP: #1520264 + * perf tools: Fix copying of /proc/kcore + - LP: #1520264 + * ASoC: db1200: Fix DAI link format for db1300 and db1550 + - LP: #1520264 + * m68k: Define asmlinkage_protect + - LP: #1520264 + * x86/xen: Support kexec/kdump in HVM guests by doing a soft reset + - LP: #1520264 + * x86/xen: Do not clip xen_e820_map to xen_e820_map_entries when + sanitizing map + - LP: #1520264 + * UBI: return ENOSPC if no enough space available + - LP: #1520264 + * s390/boot: fix boot of compressed kernel built with gcc 4.9 + - LP: #1520264 + * s390/boot/decompression: disable floating point in decompressor + - LP: #1520264 + * MIPS: dma-default: Fix 32-bit fall back to GFP_DMA + - LP: #1520264 + * drm/qxl: recreate the primary surface when the bo is not primary + - LP: #1520264 + * genirq: Fix race in register_irq_proc() + - LP: #1520264 + * KVM: nSVM: Check for NRIPS support before updating control field + - LP: #1520264 + * Use WARN_ON_ONCE for missing X86_FEATURE_NRIPS + - LP: #1520264 + * dm: fix AB-BA deadlock in __dm_destroy() + - LP: #1520264 + * mm: hugetlbfs: skip shared VMAs when unmapping private pages to satisfy + a fault + - LP: #1520264 + * [SMB3] Do not fall back to SMBWriteX in set_file_size error cases + - LP: #1520264 + * x86/mm: Set NX on gap between __ex_table and rodata + - LP: #1520264 + * ASoC: dwc: correct irq clear method + - LP: #1520264 + * dm raid: fix round up of default region size + - LP: #1520264 + * clocksource: Fix abs() usage w/ 64bit values + - LP: #1520264 + * ALSA: hda - Apply SPDIF pin ctl to MacBookPro 12,1 + - LP: #1520264 + * USB: Add reset-resume quirk for two Plantronics usb headphones. + - LP: #1520264 + * usb: Add device quirk for Logitech PTZ cameras + - LP: #1520264 + * staging: speakup: fix speakup-r regression + - LP: #1520264 + * ALSA: synth: Fix conflicting OSS device registration on AWE32 + - LP: #1520264 + * arm64: readahead: fault retry breaks mmap file read random detection + - LP: #1520264 + * dm cache: fix NULL pointer when switching from cleaner policy + - LP: #1520264 + * dmaengine: dw: properly read DWC_PARAMS register + - LP: #1520264 + * 3w-9xxx: don't unmap bounce buffered commands + - LP: #1520264 + * mm/slab: fix unexpected index mapping result of + kmalloc_size(INDEX_NODE+1) + - LP: #1520264 + * workqueue: make sure delayed work run in local cpu + - LP: #1520264 + * crypto: sparc - initialize blkcipher.ivsize + - LP: #1520264 + * drm/nouveau/fbcon: take runpm reference when userspace has an open fd + - LP: #1520264 + * crypto: ahash - ensure statesize is non-zero + - LP: #1520264 + * dm thin: fix missing pool reference count decrement in pool_ctr error + path + - LP: #1520264 + * btrfs: fix use after free iterating extrefs + - LP: #1520264 + * i2c: rcar: enable RuntimePM before registering to the core + - LP: #1520264 + * i2c: s3c2410: enable RuntimePM before registering to the core + - LP: #1520264 + * i2c: designware-platdrv: enable RuntimePM before registering to the + core + - LP: #1520264 + * i2c: designware: Do not use parameters from ACPI on Dell Inspiron 7348 + - LP: #1520264 + * l2tp: protect tunnel->del_work by ref_count + - LP: #1520264 + * af_unix: Convert the unix_sk macro to an inline function for type + safety + - LP: #1520264 + * af_unix: return data from multiple SKBs on recv() with MSG_PEEK flag + - LP: #1520264 + * net/unix: fix logic about sk_peek_offset + - LP: #1520264 + * skbuff: Fix skb checksum flag on skb pull + - LP: #1520264 + * skbuff: Fix skb checksum partial check. + - LP: #1520264 + * net: add pfmemalloc check in sk_add_backlog() + - LP: #1520264 + * ppp: don't override sk->sk_state in pppoe_flush_dev() + - LP: #1520264 + * ethtool: Use kcalloc instead of kmalloc for ethtool_get_strings + - LP: #1520264 + * asix: Don't reset PHY on if_up for ASIX 88772 + - LP: #1520264 + * asix: Do full reset during ax88772_bind + - LP: #1520264 + * ath9k: declare required extra tx headroom + - LP: #1520264 + * iio: accel: sca3000: memory corruption in sca3000_read_first_n_hw_rb() + - LP: #1520264 + * iwlwifi: dvm: fix D3 firmware PN programming + - LP: #1520264 + * iwlwifi: mvm: fix D3 firmware PN programming + - LP: #1520264 + * iwlwifi: fix firmware filename for 3160 + - LP: #1520264 + * ARM: orion: Fix DSA platform device after mvmdio conversion + - LP: #1520264 + * xen-blkfront: check for null drvdata in blkback_changed + (XenbusStateClosing) + - LP: #1520264 + * ALSA: hda - Fix inverted internal mic on Lenovo G50-80 + - LP: #1504778, #1520264 + * ASoC: Add info callback for SX_TLV controls + - LP: #1520264 + * xhci: don't finish a TD if we get a short transfer event mid TD + - LP: #1520264 + * xhci: handle no ping response error properly + - LP: #1520264 + * xhci: Add spurious wakeup quirk for LynxPoint-LP controllers + - LP: #1520264 + * ASoC: wm8904: Correct number of EQ registers + - LP: #1520264 + * drm/nouveau/gem: return only valid domain when there's only one + - LP: #1520264 + * powerpc/rtas: Validate rtas.entry before calling enter_rtas() + - LP: #1520264 + * mm: make sendfile(2) killable + - LP: #1520264 + * rbd: fix double free on rbd_dev->header_name + - LP: #1520264 + * rbd: don't leak parent_spec in rbd_dev_probe_parent() + - LP: #1520264 + * rbd: prevent kernel stack blow up on rbd map + - LP: #1520264 + * dm btree remove: fix a bug when rebalancing nodes after removal + - LP: #1520264 + * dm btree: fix leak of bufio-backed block in btree_split_beneath error + path + - LP: #1520264 + * IB/cm: Fix rb-tree duplicate free and use-after-free + - LP: #1520264 + * module: Fix locking in symbol_put_addr() + - LP: #1520264 + * crypto: api - Only abort operations on fatal signal + - LP: #1520264 + * md/raid1: submit_bio_wait() returns 0 on success + - LP: #1520264 + * md/raid10: submit_bio_wait() returns 0 on success + - LP: #1520264 + * iommu/amd: Don't clear DTE flags when modifying it + - LP: #1520264 + * mvsas: Fix NULL pointer dereference in mvs_slot_task_free + - LP: #1520264 + * drm/radeon: move bl encoder assignment into bl init + - LP: #1520264 + * rbd: require stable pages if message data CRCs are enabled + - LP: #1520264 + * md/raid5: fix locking in handle_stripe_clean_event() + - LP: #1520264 + * net/mlx4: Copy/set only sizeof struct mlx4_eqe bytes + - LP: #1520264 + * ipv6: Fix IPsec pre-encap fragmentation check + - LP: #1520264 + * ipv6: gre: support SIT encapsulation + - LP: #1520264 + * ppp: fix pppoe_dev deletion condition in pppoe_release() + - LP: #1520264 + * Linux 3.13.11-ckt30 + - LP: #1520264 + * KVM: svm: unconditionally intercept #DB + - LP: #1520184 + - CVE-2015-8104 + + -- Luis Henriques Wed, 02 Dec 2015 11:04:54 +0000 + +linux (3.13.0-71.114) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1521426 + + [ Upstream Kernel Changes ] + + * fib_rules: Fix dump_rules() not to exit early + - LP: #1514911 + - LP: #1514785 + + -- Luis Henriques Thu, 26 Nov 2015 14:27:35 +0000 + +linux (3.13.0-70.113) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1516733 + + [ Upstream Kernel Changes ] + + * arm64: errata: use KBUILD_CFLAGS_MODULE for erratum #843419 + - LP: #1516682 + + -- Luis Henriques Mon, 16 Nov 2015 17:47:36 +0000 + +linux (3.13.0-69.112) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1514858 + + [ Joseph Salisbury ] + + * SAUCE: storvsc: use small sg_tablesize on x86 + - LP: #1495983 + + [ Luis Henriques ] + + * [Config] updateconfigs after 3.13.11-ckt28 and 3.13.11-ckt29 stable + updates + + [ Upstream Kernel Changes ] + + * ext4: fix indirect punch hole corruption + - LP: #1292234 + * x86/hyperv: Mark the Hyper-V TSC as unstable + - LP: #1498206 + * 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 + * Drivers: hv: vmbus: Increase the limit on the number of pfns we can + handle + - LP: #1495983 + * sctp: fix race on protocol/netns initialization + - LP: #1514832 + * [media] v4l: omap3isp: Fix sub-device power management code + - LP: #1514832 + * [media] rc-core: fix remove uevent generation + - LP: #1514832 + * xtensa: fix threadptr reload on return to userspace + - LP: #1514832 + * ARM: OMAP2+: DRA7: clockdomain: change l4per2_7xx_clkdm to SW_WKUP + - LP: #1514832 + * mac80211: enable assoc check for mesh interfaces + - LP: #1514832 + * PCI: Add dev_flags bit to access VPD through function 0 + - LP: #1514832 + * PCI: Add VPD function 0 quirk for Intel Ethernet devices + - LP: #1514832 + * usb: dwc3: ep0: Fix mem corruption on OUT transfers of more than 512 + bytes + - LP: #1514832 + * serial: 8250_pci: Add support for Pericom PI7C9X795[1248] + - LP: #1514832 + * KVM: MMU: fix validation of mmio page fault + - LP: #1514832 + * auxdisplay: ks0108: fix refcount + - LP: #1514832 + * devres: fix devres_get() + - LP: #1514832 + * iio: adis16400: Fix adis16448 gyroscope scale + - LP: #1514832 + * iio: Add inverse unit conversion macros + - LP: #1514832 + * iio: adis16480: Fix scale factors + - LP: #1514832 + * iio: industrialio-buffer: Fix iio_buffer_poll return value + - LP: #1514832 + * iio: event: Remove negative error code from iio_event_poll + - LP: #1514832 + * NFSv4: don't set SETATTR for O_RDONLY|O_EXCL + - LP: #1514832 + * unshare: Unsharing a thread does not require unsharing a vm + - LP: #1514832 + * ASoC: adav80x: Remove .read_flag_mask setting from + adav80x_regmap_config + - LP: #1514832 + * drivers: usb :fsl: Implement Workaround for USB Erratum A007792 + - LP: #1514832 + * drivers: usb: fsl: Workaround for USB erratum-A005275 + - LP: #1514832 + * serial: 8250: don't bind to SMSC IrCC IR port + - LP: #1514832 + * staging: comedi: adl_pci7x3x: fix digital output on PCI-7230 + - LP: #1514832 + * blk-mq: fix buffer overflow when reading sysfs file of 'pending' + - LP: #1514832 + * xtensa: fix kernel register spilling + - LP: #1514832 + * NFS: nfs_set_pgio_error sometimes misses errors + - LP: #1514832 + * NFS: Fix a NULL pointer dereference of migration recovery ops for v4.2 + client + - LP: #1514832 + * usb: host: ehci-sys: delete useless bus_to_hcd conversion + - LP: #1514832 + * USB: symbolserial: Use usb_get_serial_port_data + - LP: #1514832 + * USB: ftdi_sio: Added custom PID for CustomWare products + - LP: #1514832 + * HID: usbhid: Fix the check for HID_RESET_PENDING in hid_io_error + - LP: #1514832 + * eCryptfs: Invalidate dcache entries when lower i_nlink is zero + - LP: #1514832 + * libxfs: readahead of dir3 data blocks should use the read verifier + - LP: #1514832 + * xfs: Fix xfs_attr_leafblock definition + - LP: #1514832 + * arm64: kconfig: Move LIST_POISON to a safe value + - LP: #1514832 + * Btrfs: check if previous transaction aborted to avoid fs corruption + - LP: #1514832 + * DRM - radeon: Don't link train DisplayPort on HPD until we get the dpcd + - LP: #1514832 + * rtlwifi: rtl8192cu: Add new device ID + - LP: #1514832 + * rtlwifi: rtl8192cu: Add new device ID + - LP: #1514832 + * of/address: Don't loop forever in of_find_matching_node_by_address(). + - LP: #1514832 + * drivercore: Fix unregistration path of platform devices + - LP: #1514832 + * xfs: return errors from partial I/O failures to files + - LP: #1514832 + * IB/qib: Change lkey table allocation to support more MRs + - LP: #1514832 + * tg3: Fix temperature reporting + - LP: #1514832 + * drm/i915: Always mark the object as dirty when used by the GPU + - LP: #1514832 + * Add radeon suspend/resume quirk for HP Compaq dc5750. + - LP: #1514832 + * IB/uverbs: reject invalid or unknown opcodes + - LP: #1514832 + * hpfs: update ctime and mtime on directory modification + - LP: #1514832 + * Input: evdev - do not report errors form flush() + - LP: #1514832 + * crypto: ghash-clmulni: specify context size for ghash async algorithm + - LP: #1514832 + * fs: create and use seq_show_option for escaping + - LP: #1514832 + * ALSA: hda - Enable headphone jack detect on old Fujitsu laptops + - LP: #1514832 + * ALSA: hda - Use ALC880_FIXUP_FUJITSU for FSC Amilo M1437 + - LP: #1514832 + * scsi: fix scsi_error_handler vs. scsi_host_dev_release race + - LP: #1514832 + * parisc: Use double word condition in 64bit CAS operation + - LP: #1514832 + * vmscan: fix increasing nr_isolated incurred by putback unevictable + pages + - LP: #1514832 + * hfs,hfsplus: cache pages correctly between bnode_create and bnode_free + - LP: #1514832 + * hfs: fix B-tree corruption after insertion at position 0 + - LP: #1514832 + * drm/qxl: validate monitors config modes + - LP: #1514832 + * PCI: Fix TI816X class code quirk + - LP: #1514832 + * x86/mm: Initialize pmd_idx in page_table_range_init_count() + - LP: #1514832 + * powerpc/rtas: Introduce rtas_get_sensor_fast() for IRQ handlers + - LP: #1514832 + * jbd2: avoid infinite loop when destroying aborted journal + - LP: #1514832 + * clk: versatile: off by one in clk_sp810_timerclken_of_get() + - LP: #1514832 + * usb: gadget: m66592-udc: forever loop in set_feature() + - LP: #1514832 + * windfarm: decrement client count when unregistering + - LP: #1514832 + * perf hists: Update the column width for the "srcline" sort key + - LP: #1514832 + * batman-adv: Make DAT capability changes atomic + - LP: #1514832 + * batman-adv: Make NC capability changes atomic + - LP: #1514832 + * powerpc/mm: Fix pte_pagesize_index() crash on 4K w/64K hash + - LP: #1514832 + * perf stat: Get correct cpu id for print_aggr + - LP: #1514832 + * IB/mlx4: Fix potential deadlock when sending mad to wire + - LP: #1514832 + * IB/mlx4: Forbid using sysfs to change RoCE pkeys + - LP: #1514832 + * IB/mlx4: Use correct SL on AH query under RoCE + - LP: #1514832 + * IB/uverbs: Fix race between ib_uverbs_open and remove_one + - LP: #1514832 + * mmc: core: fix race condition in mmc_wait_data_done + - LP: #1514832 + * ipv6: fix exthdrs offload registration in out_rt path + - LP: #1514832 + * task_work: remove fifo ordering guarantee + - LP: #1514832 + * scsi_dh: fix randconfig build error + - LP: #1514832 + * fs: if a coredump already exists, unlink and recreate with O_EXCL + - LP: #1514832 + * Linux 3.13.11-ckt28 + - LP: #1514832 + * sctp: donot reset the overall_error_count in SHUTDOWN_RECEIVE state + - LP: #1514853 + * KEYS: Fix race between key destruction and finding a keyring by name + - LP: #1514853 + * KEYS: Fix crash when attempt to garbage collect an uninstantiated + keyring + - LP: #1514853 + * KEYS: Don't permit request_key() to construct a new keyring + - LP: #1514853 + * net: Fix skb csum races when peeking + - LP: #1500810 + * [stable-only] net: add length argument to + skb_copy_and_csum_datagram_iovec + - LP: #1514853 + * spi: spi-pxa2xx: Check status register to determine if SSSR_TINT is + disabled + - LP: #1514853 + * spi: Fix documentation of spi_alloc_master() + - LP: #1514853 + * ARM: 8429/1: disable GCC SRA optimization + - LP: #1514853 + * powerpc/MSI: Fix race condition in tearing down MSI interrupts + - LP: #1514853 + * CIFS: fix type confusion in copy offload ioctl + - LP: #1514853 + * hwmon: (nct6775) Swap STEP_UP_TIME and STEP_DOWN_TIME registers for + most chips + - LP: #1514853 + * USB: option: add ZTE PIDs + - LP: #1514853 + * x86/apic: Serialize LVTT and TSC_DEADLINE writes + - LP: #1514853 + * Btrfs: fix read corruption of compressed and shared extents + - LP: #1514853 + * btrfs: skip waiting on ordered range for special files + - LP: #1514853 + * arm64: head.S: initialise mdcr_el2 in el2_setup + - LP: #1514853 + * kvm: fix zero length mmio searching + - LP: #1514853 + * iser-target: remove command with state ISTATE_REMOVE + - LP: #1514853 + * ARM: fix Thumb2 signal handling when ARMv6 is enabled + - LP: #1514853 + * powerpc/mm: Recompute hash value after a failed update + - LP: #1514853 + * x86/platform: Fix Geode LX timekeeping in the generic x86 build + - LP: #1514853 + * arm64: compat: fix vfp save/restore across signal handlers in + big-endian + - LP: #1514853 + * arm64: errata: add module build workaround for erratum #843419 + - LP: #1514853 + * arm64: KVM: Disable virtual timer even if the guest is not using it + - LP: #1514853 + * arm: KVM: Disable virtual timer even if the guest is not using it + - LP: #1514853 + * KVM: x86: trap AMD MSRs for the TSeg base and mask + - LP: #1514853 + * usb: Use the USB_SS_MULT() macro to get the burst multiplier. + - LP: #1514853 + * xhci: give command abortion one more chance before killing xhci + - LP: #1514853 + * usb: xhci: Clear XHCI_STATE_DYING on start + - LP: #1514853 + * xhci: change xhci 1.0 only restrictions to support xhci 1.1 + - LP: #1514853 + * disabling oplocks/leases via module parm enable_oplocks broken for SMB3 + - LP: #1514853 + * cifs: use server timestamp for ntlmv2 authentication + - LP: #1514853 + * x86/paravirt: Replace the paravirt nop with a bona fide empty function + - LP: #1514853 + * x86/nmi/64: Fix a paravirt stack-clobbering bug in the NMI code + - LP: #1514853 + * ASoC: pxa: pxa2xx-ac97: fix dma requestor lines + - LP: #1514853 + * drm/qxl: only report first monitor as connected if we have no state + - LP: #1514853 + * PCI: Fix devfn for VPD access through function 0 + - LP: #1514853 + * PCI: Use function 0 VPD for identical functions, regular VPD for others + - LP: #1514853 + * perf header: Fixup reading of HEADER_NRCPUS feature + - LP: #1514853 + * netfilter: nft_compat: skip family comparison in case of NFPROTO_UNSPEC + - LP: #1514853 + * ASoC: fix broken pxa SoC support + - LP: #1514853 + * ARM: dts: omap5-uevm.dts: fix i2c5 pinctrl offsets + - LP: #1514853 + * vxlan: set needed headroom correctly + - LP: #1514853 + * usbnet: Get EVENT_NO_RUNTIME_PM bit before it is cleared + - LP: #1514853 + * net/ipv6: Correct PIM6 mrt_lock handling + - LP: #1514853 + * netlink, mmap: transform mmap skb into full skb on taps + - LP: #1514853 + * openvswitch: Zero flows on allocation. + - LP: #1514853 + * fib_rules: fix fib rule dumps across multiple skbs + - LP: #1514853 + * Btrfs: update fix for read corruption of compressed and shared extents + - LP: #1514853 + * Linux 3.13.11-ckt29 + - LP: #1514853 + + -- Luis Henriques Tue, 10 Nov 2015 14:34:31 +0000 + +linux (3.13.0-68.111) trusty; 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 16:30:27 +0000 + +linux (3.13.0-67.110) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1509341 + + [ Upstream Kernel Changes ] + + * Revert "net: Fix skb csum races when peeking" + - LP: #1508510 + + -- Luis Henriques Fri, 23 Oct 2015 11:53:53 +0100 + +linux (3.13.0-67.109) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1507963 + + [ Tim Gardner ] + + * [Config] Add MMC modules sufficient for net booting + - LP: #1502772 + + [ Upstream Kernel Changes ] + + * USB: whiteheat: fix potential null-deref at probe + - LP: #1478826 + - CVE-2015-5257 + * dcache: Handle escaped paths in prepend_path + - LP: #1441108 + - CVE-2015-2925 + * vfs: Test for and handle paths that are unreachable from their mnt_root + - LP: #1441108 + - CVE-2015-2925 + + -- Luis Henriques Tue, 20 Oct 2015 10:42:53 +0100 + +linux (3.13.0-66.108) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1503713 + + [ Andy Whitcroft ] + + * Revert "SAUCE: aufs3: mmap: Fix races in madvise_remove() and + sys_msync()" + - LP: #1503655 + + [ Ben Hutchings ] + + * SAUCE: aufs3: mmap: Fix races in madvise_remove() and sys_msync() + - LP: #1503655 + - CVE-2015-7312 + + -- Luis Henriques Wed, 07 Oct 2015 14:29:57 +0100 + +linux (3.13.0-66.107) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1503021 + + [ Ben Hutchings ] + + * SAUCE: aufs3: mmap: Fix races in madvise_remove() and sys_msync() + - CVE-2015-7312 + + [ John Johansen ] + + * SAUCE: (no-up) apparmor: fix mount not handling disconnected paths + - LP: #1496430 + + [ Upstream Kernel Changes ] + + * mmc: sdhci-pci: set the clear transfer mode register quirk for O2Micro + - LP: #1472843 + * mmc: sdhci: Add a quirk for AMD SDHC transfer mode register need to be + cleared for cmd without data + - LP: #1472843 + * n_tty: Fix poll() when TIME_CHAR and MIN_CHAR == 0 + - LP: #1397976 + * net: make skb_gso_segment error handling more robust + - LP: #1497048 + * net: gso: use feature flag argument in all protocol gso handlers + - LP: #1497048 + * md/raid10: always set reshape_safe when initializing reshape_position. + - LP: #1500810 + * md: flush ->event_work before stopping array. + - LP: #1500810 + * ipv6: addrconf: validate new MTU before applying it + - LP: #1500810 + * virtio-net: drop NETIF_F_FRAGLIST + - LP: #1500810 + * RDS: verify the underlying transport exists before creating a + connection + - LP: #1500810 + * xen/gntdev: convert priv->lock to a mutex + - LP: #1500810 + * xen/gntdevt: Fix race condition in gntdev_release() + - LP: #1500810 + * PCI: Restore PCI_MSIX_FLAGS_BIRMASK definition + - LP: #1500810 + * nfsd: Drop BUG_ON and ignore SECLABEL on absent filesystem + - LP: #1500810 + * crypto: ixp4xx - Remove bogus BUG_ON on scattered dst buffer + - LP: #1500810 + * xen-blkfront: don't add indirect pages to list when !feature_persistent + - LP: #1500810 + * xen-blkback: replace work_pending with work_busy in + purge_persistent_gnt() + - LP: #1500810 + * USB: sierra: add 1199:68AB device ID + - LP: #1500810 + * regmap: regcache-rbtree: Clean new present bits on present bitmap + resize + - LP: #1500810 + * target/iscsi: Fix double free of a TUR followed by a solicited NOPOUT + - LP: #1500810 + * rbd: fix copyup completion race + - LP: #1500810 + * md/raid1: extend spinlock to protect raid1_end_read_request against + inconsistencies + - LP: #1500810 + * target: REPORT LUNS should return LUN 0 even for dynamic ACLs + - LP: #1500810 + * MIPS: Fix sched_getaffinity with MT FPAFF enabled + - LP: #1500810 + * xhci: fix off by one error in TRB DMA address boundary check + - LP: #1500810 + * perf: Fix fasync handling on inherited events + - LP: #1500810 + * mm, vmscan: Do not wait for page writeback for GFP_NOFS allocations + - LP: #1500810 + * MIPS: Make set_pte() SMP safe. + - LP: #1500810 + * ipc: modify message queue accounting to not take kernel data structures + into account + - LP: #1500810 + * ocfs2: fix BUG in ocfs2_downconvert_thread_do_work() + - LP: #1500810 + * fsnotify: fix oops in fsnotify_clear_marks_by_group_flags() + - LP: #1500810 + * KVM: x86: Use adjustment in guest cycles when handling + MSR_IA32_TSC_ADJUST + - LP: #1500810 + * localmodconfig: Use Kbuild files too + - LP: #1500810 + * dm thin metadata: delete btrees when releasing metadata snapshot + - LP: #1500810 + * dm btree: add ref counting ops for the leaves of top level btrees + - LP: #1500810 + * drm/radeon: add new OLAND pci id + - LP: #1500810 + * libiscsi: Fix host busy blocking during connection teardown + - LP: #1500810 + * libfc: Fix fc_exch_recv_req() error path + - LP: #1500810 + * libfc: Fix fc_fcp_cleanup_each_cmd() + - LP: #1500810 + * EDAC, ppc4xx: Access mci->csrows array elements properly + - LP: #1500810 + * crypto: caam - fix memory corruption in ahash_final_ctx + - LP: #1500810 + * mm/hwpoison: fix page refcount of unknown non LRU page + - LP: #1500810 + * ipc,sem: fix use after free on IPC_RMID after a task using same + semaphore set exits + - LP: #1500810 + * ipc/sem.c: change memory barrier in sem_lock() to smp_rmb() + - LP: #1500810 + * ipc/sem.c: update/correct memory barriers + - LP: #1500810 + * Add factory recertified Crucial M500s to blacklist + - LP: #1500810 + * arm64: KVM: Fix host crash when injecting a fault into a 32bit guest + - LP: #1500810 + * batman-adv: protect tt_local_entry from concurrent delete events + - LP: #1500810 + * ip6_gre: release cached dst on tunnel removal + - LP: #1500810 + * net: Fix RCU splat in af_key + - LP: #1500810 + * rds: fix an integer overflow test in rds_info_getsockopt() + - LP: #1500810 + * udp: fix dst races with multicast early demux + - LP: #1500810 + * sparc64: Fix userspace FPU register corruptions. + - LP: #1500810 + * ipv6: lock socket in ip6_datagram_connect() + - LP: #1500810 + * rtnetlink: verify IFLA_VF_INFO attributes before passing them to driver + - LP: #1500810 + * net/tipc: initialize security state for new connection socket + - LP: #1500810 + * net: pktgen: fix race between pktgen_thread_worker() and kthread_stop() + - LP: #1500810 + * net: call rcu_read_lock early in process_backlog + - LP: #1500810 + * net: Fix skb csum races when peeking + - LP: #1500810 + * netlink: don't hold mutex in rcu callback when releasing mmapd ring + - LP: #1500810 + * Linux 3.13.11-ckt27 + - LP: #1500810 + + -- Brad Figg Mon, 05 Oct 2015 12:59:00 -0700 + +linux (3.13.0-65.106) trusty; urgency=low + + [ Upstream Kernel Changes ] + + * Initialize msg/shm IPC objects before doing ipc_addid() + - LP: #1502032 + - CVE-2015-7613 + + -- Luis Henriques Fri, 02 Oct 2015 10:13:36 +0100 + +linux (3.13.0-65.105) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1498108 + + [ Upstream Kernel Changes ] + + * net: Fix skb_set_peeked use-after-free bug + - LP: #1497184 + + -- Brad Figg Mon, 21 Sep 2015 10:16:41 -0700 + +linux (3.13.0-64.104) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1493803 + + [ Chris J Arges ] + + * [Config] DEFAULT_IOSCHED="deadline" for ppc64el + - LP: #1469829 + + [ Upstream Kernel Changes ] + + * tcp: fix recv with flags MSG_WAITALL | MSG_PEEK + - LP: #1486146 + * libceph: abstract out ceph_osd_request enqueue logic + - LP: #1488035 + * libceph: resend lingering requests with a new tid + - LP: #1488035 + * n_tty: Refactor input_available_p() by call site + - LP: #1397976 + * tty: Fix pty master poll() after slave closes v2 + - LP: #1397976 + * md: use kzalloc() when bitmap is disabled + - LP: #1493305 + * ata: pmp: add quirk for Marvell 4140 SATA PMP + - LP: #1493305 + * libata: add ATA_HORKAGE_BROKEN_FPDMA_AA quirk for HP 250GB SATA disk + VB0250EAVER + - LP: #1493305 + * libata: add ATA_HORKAGE_NOTRIM + - LP: #1493305 + * libata: force disable trim for SuperSSpeed S238 + - LP: #1493305 + * libata: increase the timeout when setting transfer mode + - LP: #1493305 + * libata: Do not blacklist M510DC + - LP: #1493305 + * mac80211: clear subdir_stations when removing debugfs + - LP: #1493305 + * ALSA: hda - Add new GPU codec ID 0x10de007d to snd-hda + - LP: #1493305 + * drm: Stop resetting connector state to unknown + - LP: #1493305 + * usb: dwc3: Reset the transfer resource index on SET_INTERFACE + - LP: #1493305 + * usb: xhci: Bugfix for NULL pointer deference in xhci_endpoint_init() + function + - LP: #1493305 + * xhci: Calculate old endpoints correctly on device reset + - LP: #1493305 + * xhci: report U3 when link is in resume state + - LP: #1493305 + * xhci: prevent bus_suspend if SS port resuming in phase 1 + - LP: #1493305 + * xhci: do not report PLC when link is in internal resume state + - LP: #1493305 + * USB: OHCI: Fix race between ED unlink and URB submission + - LP: #1493305 + * usb-storage: ignore ZTE MF 823 card reader in mode 0x1225 + - LP: #1493305 + * blkcg: fix gendisk reference leak in blkg_conf_prep() + - LP: #1493305 + * tile: use free_bootmem_late() for initrd + - LP: #1493305 + * Input: usbtouchscreen - avoid unresponsive TSC-30 touch screen + - LP: #1493305 + * md/raid1: fix test for 'was read error from last working device'. + - LP: #1493305 + * mmc: omap_hsmmc: Fix DTO and DCRC handling + - LP: #1493305 + * isdn/gigaset: reset tty->receive_room when attaching ser_gigaset + - LP: #1493305 + * mmc: sdhci-pxav3: fix platform_data is not initialized + - LP: #1493305 + * mmc: block: Add missing mmc_blk_put() in power_ro_lock_show() + - LP: #1493305 + * mmc: sdhci-esdhc: Make 8BIT bus work + - LP: #1493305 + * bonding: correctly handle bonding type change on enslave failure + - LP: #1493305 + * net: Clone skb before setting peeked flag + - LP: #1493305 + * bridge: mdb: fix double add notification + - LP: #1493305 + * usb: gadget: mv_udc_core: fix phy_regs I/O memory leak + - LP: #1493305 + * inet: frags: fix defragmented packet's IP header for af_packet + - LP: #1493305 + * bonding: fix destruction of bond with devices different from + arphrd_ether + - LP: #1493305 + * ARM: OMAP2+: hwmod: Fix _wait_target_ready() for hwmods without sysc + - LP: #1493305 + * ASoC: pcm1681: Fix setting de-emphasis sampling rate selection + - LP: #1493305 + * iscsi-target: Fix use-after-free during TPG session shutdown + - LP: #1493305 + * iscsi-target: Fix iscsit_start_kthreads failure OOPs + - LP: #1493305 + * iscsi-target: Fix iser explicit logout TX kthread leak + - LP: #1493305 + * ALSA: hda - Apply fixup for another Toshiba Satellite S50D + - LP: #1493305 + * vhost: actually track log eventfd file + - LP: #1493305 + * xfs: remote attributes need to be considered data + - LP: #1493305 + * ALSA: usb-audio: add dB range mapping for some devices + - LP: #1493305 + * drm/radeon/combios: add some validation of lvds values + - LP: #1493305 + * x86/efi: Use all 64 bit of efi_memmap in setup_e820() + - LP: #1493305 + * ipr: Fix locking for unit attention handling + - LP: #1493305 + * ipr: Fix incorrect trace indexing + - LP: #1493305 + * ipr: Fix invalid array indexing for HRRQ + - LP: #1493305 + * ALSA: hda - Fix MacBook Pro 5,2 quirk + - LP: #1493305 + * x86/xen: Probe target addresses in set_aliased_prot() before the + hypercall + - LP: #1493305 + * netfilter: ctnetlink: put back references to master ct and expect + objects + - LP: #1493305 + * bridge: mdb: fix delmdb state in the notification + - LP: #1493305 + * ipvs: fix crash with sync protocol v0 and FTP + - LP: #1493305 + * act_pedit: check binding before calling tcf_hash_release() + - LP: #1493305 + * netfilter: nf_conntrack: Support expectations in different zones + - LP: #1493305 + * ipvs: do not use random local source address for tunnels + - LP: #1493305 + * ALSA: hda - fix cs4210_spdif_automute() + - LP: #1493305 + * niu: don't count tx error twice in case of headroom realloc fails + - LP: #1493305 + * net/mlx4_core: Fix wrong index in propagating port change event to VFs + - LP: #1493305 + * ipvs: fix crash if scheduler is changed + - LP: #1493305 + * Linux 3.13.11-ckt26 + - LP: #1493305 + + -- Luis Henriques Wed, 09 Sep 2015 12:03:43 +0100 + +linux (3.13.0-63.103) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1485102 + + [ Leann Ogasawara ] + + * [Config] d-i -- Add sfc to nic-modules udeb + - LP: #1481490 + + [ Upstream Kernel Changes ] + + * sg_start_req(): make sure that there's not too many elements in iovec + - LP: #1485100 + * Btrfs: use kmem_cache_free when freeing entry in inode cache + - LP: #1485100 + * Btrfs: fix race between caching kthread and returning inode to inode + cache + - LP: #1485100 + * Btrfs: fix fsync data loss after append write + - LP: #1485100 + * ext4: fix reservation release on invalidatepage for delalloc fs + - LP: #1485100 + * ext4: be more strict when migrating to non-extent based file + - LP: #1485100 + * ext4: correctly migrate a file with a hole at the beginning + - LP: #1485100 + * ext4: replace open coded nofail allocation in ext4_free_blocks() + - LP: #1485100 + * ACPI / PNP: Reserve ACPI resources at the fs_initcall_sync stage + - LP: #1485100 + * hpfs: kstrdup() out of memory handling + - LP: #1485100 + * 9p: don't leave a half-initialized inode sitting around + - LP: #1485100 + * freeing unlinked file indefinitely delayed + - LP: #1485100 + * iio: inv-mpu: Specify the expected format/precision for write channels + - LP: #1485100 + * iio: DAC: ad5624r_spi: fix bit shift of output data value + - LP: #1485100 + * iio: adc: at91_adc: allow to use full range of startup time + - LP: #1485100 + * ALSA: usb-audio: Add MIDI support for Steinberg MI2/MI4 + - LP: #1485100 + * iio: tmp006: Check channel info on write + - LP: #1485100 + * dm btree remove: fix bug in redistribute3 + - LP: #1485100 + * USB: option: add 2020:4000 ID + - LP: #1485100 + * USB: cp210x: add ID for Aruba Networks controllers + - LP: #1485100 + * dm btree: silence lockdep lock inversion in dm_btree_del() + - LP: #1485100 + * usb: musb: host: rely on port_mode to call musb_start() + - LP: #1485100 + * s390/sclp: clear upper register halves in _sclp_print_early + - LP: #1485100 + * drm: add a check for x/y in drm_mode_setcrtc + - LP: #1485100 + * ARM: dts: mx23: fix iio-hwmon support + - LP: #1485100 + * tracing: Have branch tracer use recursive field of task struct + - LP: #1485100 + * drivers: net: cpsw: fix crash while accessing second slave ethernet + interface + - LP: #1485100 + * USB: serial: Destroy serial_minors IDR on module exit + - LP: #1485100 + * Btrfs: fix memory leak in the extent_same ioctl + - LP: #1485100 + * ARC: make sure instruction_pointer() returns unsigned value + - LP: #1485100 + * s390/process: fix sfpc inline assembly + - LP: #1485100 + * st: null pointer dereference panic caused by use after kref_put by + st_open + - LP: #1485100 + * drm/radeon: add a dpm quirk for Sapphire Radeon R9 270X 2GB GDDR5 + - LP: #1485100 + * drm/radeon: Don't flush the GART TLB if rdev->gart.ptr == NULL + - LP: #1485100 + * genirq: Prevent resend to interrupts marked IRQ_NESTED_THREAD + - LP: #1485100 + * ip_tunnel: fix ipv4 pmtu check to honor inner ip header df + - LP: #1485100 + * bridge: mdb: start delete timer for temp static entries + - LP: #1485100 + * bridge: mdb: zero out the local br_ip variable before use + - LP: #1485100 + * net: do not process device backlog during unregistration + - LP: #1485100 + * net: graceful exit from netif_alloc_netdev_queues() + - LP: #1485100 + * net: dsa: Fix off-by-one in switch address parsing + - LP: #1485100 + * net: dsa: Test array index before use + - LP: #1485100 + * rds: rds_ib_device.refcount overflow + - LP: #1485100 + * ipv6: Make MLD packets to only be processed locally + - LP: #1485100 + * Linux 3.13.11-ckt25 + - LP: #1485100 + + -- Brad Figg Fri, 14 Aug 2015 13:02:47 -0700 + +linux (3.13.0-62.102) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1483657 + + [ Upstream Kernel Changes ] + + * Revert "Bluetooth: ath3k: Add support of 04ca:300d AR3012 device" + + -- Luis Henriques Tue, 11 Aug 2015 11:56:45 +0100 + +linux (3.13.0-62.101) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1479329 + * Merged back Ubuntu-3.13.0-61.100 + + -- Luis Henriques Wed, 29 Jul 2015 13:06:13 +0100 + +linux (3.13.0-60.99) trusty; urgency=low + + [ Kamal Mostafa ] + + * Release Tracking Bug + - LP: #1479082 + + [ Chris J Arges ] + + * [Config] CONFIG_UIO_PCI_GENERIC=m + - LP: #1473109 + + [ Tim Gardner ] + + * [Config] Add i40e[vf] to d-i + - LP: #1476393 + + [ Upstream Kernel Changes ] + + * Revert "crypto: talitos - convert to use be16_add_cpu()" + - LP: #1479058 + * add support for per-host cmd pools + - LP: #1445195 + * Drivers: hv: vmbus: Cleanup the packet send path + - LP: #1445195 + * virtio_scsi: use cmd_size + - LP: #1445195 + * storvsc: use cmd_size to allocate per-command data + - LP: #1445195 + * storvsc: fix a bug in storvsc limits + - LP: #1445195 + * Drivers: hv: vmbus: Support a vmbus API for efficiently sending page + arrays + - LP: #1445195 + * scsi: storvsc: Increase the ring buffer size + - LP: #1445195 + * scsi: storvsc: Size the queue depth based on the ringbuffer size + - LP: #1445195 + * scsi: storvsc: Always send on the selected outgoing channel + - LP: #1445195 + * scsi: storvsc: Retrieve information about the capability of the target + - LP: #1445195 + * scsi: storvsc: Don't assume that the scatterlist is not chained + - LP: #1445195 + * scsi: storvsc: Set the tablesize based on the information given by the + host + - LP: #1445195 + * gpio: gpio-kempld: Fix get_direction return value + - LP: #1474131 + * ARM: dts: imx27: only map 4 Kbyte for fec registers + - LP: #1474131 + * ARM: 8356/1: mm: handle non-pmd-aligned end of RAM + - LP: #1474131 + * x86/mce: Fix MCE severity messages + - LP: #1474131 + * hwmon: (ntc_thermistor) Ensure iio channel is of type IIO_VOLTAGE + - LP: #1474131 + * lguest: fix out-by-one error in address checking. + - LP: #1474131 + * fs, omfs: add NULL terminator in the end up the token list + - LP: #1474131 + * d_walk() might skip too much + - LP: #1474131 + * hwmon: (nct6775) Add missing sysfs attribute initialization + - LP: #1474131 + * target/pscsi: Don't leak scsi_host if hba is VIRTUAL_HOST + - LP: #1474131 + * fs/binfmt_elf.c:load_elf_binary(): return -EINVAL on zero-length + mappings + - LP: #1474131 + * iio: adis16400: Report pressure channel scale + - LP: #1474131 + * iio: adis16400: Use != channel indices for the two voltage channels + - LP: #1474131 + * iio: adis16400: Compute the scan mask from channel indices + - LP: #1474131 + * iio: adis16400: Remove unused variable + - LP: #1474131 + * iio: adis16400: Fix burst mode + - LP: #1474131 + * USB: serial: ftdi_sio: Add support for a Motion Tracker Development + Board + - LP: #1474131 + * iio: adc: twl6030-gpadc: Fix modalias + - LP: #1474131 + * serial: imx: Fix DMA handling for IDLE condition aborts + - LP: #1474131 + * ALSA: usb-audio: Add mic volume fix quirk for Logitech Quickcam Fusion + - LP: #1474131 + * n_tty: Fix auditing support for cannonical mode + - LP: #1474131 + * drm/i915/hsw: Fix workaround for server AUX channel clock divisor + - LP: #1474131 + * x86/asm/irq: Stop relying on magic JMP behavior for early_idt_handlers + - LP: #1474131 + * lib: Fix strnlen_user() to not touch memory after specified maximum + - LP: #1474131 + * Input: elantech - fix detection of touchpads where the revision matches + a known rate + - LP: #1474131 + * ALSA: hda/realtek - Add a fixup for another Acer Aspire 9420 + - LP: #1474131 + * ALSA: usb-audio: add MAYA44 USB+ mixer control names + - LP: #1474131 + * ALSA: usb-audio: fix missing input volume controls in MAYA44 USB(+) + - LP: #1474131 + * USB: cp210x: add ID for HubZ dual ZigBee and Z-Wave dongle + - LP: #1474131 + * MIPS: Fix enabling of DEBUG_STACKOVERFLOW + - LP: #1474131 + * virtio_pci: Clear stale cpumask when setting irq affinity + - LP: #1474131 + * pata_octeon_cf: fix broken build + - LP: #1474131 + * Input: synaptics - add min/max quirk for Lenovo S540 + - LP: #1474131 + * drm/i915: Fix DDC probe for passive adapters + - LP: #1474131 + * cfg80211: wext: clear sinfo struct before calling driver + - LP: #1474131 + * mm/memory_hotplug.c: set zone->wait_table to null after freeing it + - LP: #1474131 + * ring-buffer-benchmark: Fix the wrong sched_priority of producer + - LP: #1474131 + * drm/radeon: fix freeze for laptop with Turks/Thames GPU. + - LP: #1474131 + * block: fix ext_dev_lock lockdep report + - LP: #1474131 + * bridge: disable softirqs around br_fdb_update to avoid lockup + - LP: #1474131 + * bridge: fix multicast router rlist endless loop + - LP: #1474131 + * ALSA: hda - adding a DAC/pin preference map for a HP Envy TS machine + - LP: #1474131 + * drm/mgag200: Reject non-character-cell-aligned mode widths + - LP: #1474131 + * crypto: caam - fix uninitialized state->buf_dma field + - LP: #1474131 + * crypto: caam - improve initalization for context state saves + - LP: #1474131 + * crypto: caam - fix RNG buffer cache alignment + - LP: #1474131 + * Linux 3.13.11-ckt23 + - LP: #1474131 + * SUNRPC: TCP/UDP always close the old socket before reconnecting + - LP: #1403152 + * Fix kmalloc slab creation sequence + - LP: #1475204 + * iSER relies on refcounting to manage iser connections establishment and + teardown. + - LP: #1443648 + * ALSA: hda - White noise fix for XPS13 9333 + - LP: #1468582 + * ALSA: hda - Pop noises fix for XPS13 9333 + - LP: #1468582 + * ALSA: hda - Fix noisy outputs on Dell XPS13 (2015 model) + - LP: #1468582 + * sched/stop_machine: Fix deadlock between multiple stop_two_cpus() + - LP: #1461620 + * net: don't wait for order-3 page allocation + - LP: #1479058 + * sctp: fix ASCONF list handling + - LP: #1479058 + * bridge: fix br_stp_set_bridge_priority race conditions + - LP: #1479058 + * packet: read num_members once in packet_rcv_fanout() + - LP: #1479058 + * packet: avoid out of bounds read in round robin fanout + - LP: #1479058 + * tcp: Do not call tcp_fastopen_reset_cipher from interrupt context + - LP: #1479058 + * sctp: Fix race between OOTB responce and route removal + - LP: #1479058 + * sparc: Use GFP_ATOMIC in ldc_alloc_exp_dring() as it can be called in + softirq context + - LP: #1479058 + * [media] s5h1420: fix a buffer overflow when checking userspace params + - LP: #1479058 + * [media] cx24116: fix a buffer overflow when checking userspace params + - LP: #1479058 + * [media] af9013: Don't accept invalid bandwidth + - LP: #1479058 + * [media] cx24117: fix a buffer overflow when checking userspace params + - LP: #1479058 + * spi: fix race freeing dummy_tx/rx before it is unmapped + - LP: #1479058 + * mtd: fix: avoid race condition when accessing mtd->usecount + - LP: #1479058 + * leds / PM: fix hibernation on arm when gpio-led used with CPU led + trigger + - LP: #1479058 + * crypto: talitos - avoid memleak in talitos_alg_alloc() + - LP: #1479058 + * ASoC: wm8737: Fixup setting VMID Impedance control register + - LP: #1479058 + * ASoC: wm8903: Fix define for WM8903_VMID_RES_250K + - LP: #1479058 + * mnt: Refactor the logic for mounting sysfs and proc in a user namespace + - LP: #1479058 + * ASoC: wm8955: Fix setting wrong register for WM8955_K_8_0_MASK bits + - LP: #1479058 + * scsi_transport_srp: Introduce srp_wait_for_queuecommand() + - LP: #1479058 + * scsi_transport_srp: Fix a race condition + - LP: #1479058 + * KVM: mips: use id_to_memslot correctly + - LP: #1479058 + * drm/radeon: take the mode_config mutex when dealing with hpds (v2) + - LP: #1479058 + * rcu: Correctly handle non-empty Tiny RCU callback list with none ready + - LP: #1479058 + * ASoC: arizona: Fix noise generator gain TLV + - LP: #1479058 + * staging: rtl8712: prevent buffer overrun in recvbuf2recvframe + - LP: #1479058 + * usb: core: Fix USB 3.0 devices lost in NOTATTACHED state after a hub + port reset + - LP: #1479058 + * staging: vt6655: device_rx_srv check sk_buff is NULL + - LP: #1479058 + * fixing infinite OPEN loop in 4.0 stateid recovery + - LP: #1479058 + * powerpc/perf: Fix book3s kernel to userspace backtraces + - LP: #1479058 + * SUNRPC: Fix a memory leak in the backchannel code + - LP: #1479058 + * ipr: Increase default adapter init stage change timeout + - LP: #1479058 + * ieee802154: Fix sockaddr_ieee802154 implicit padding information leak. + - LP: #1479058 + * mnt: Modify fs_fully_visible to deal with locked ro nodev and atime + - LP: #1479058 + * drm/qxl: Do not cause spice-server to clean our objects + - LP: #1479058 + * drm/qxl: Do not leak memory if qxl_release_list_add fails + - LP: #1479058 + * selinux: fix setting of security labels on NFS + - LP: #1479058 + * Bluetooth: ath3k: Add support for a new AR3012 device + - LP: #1479058 + * ath3k: Add support of 0489:e076 AR3012 device + - LP: #1462614, #1479058 + * ath3k: add support of 13d3:3474 AR3012 device + - LP: #1427680, #1479058 + * Bluetooth: btusb: Fix memory leak in Intel setup routine + - LP: #1479058 + * ath9k: fix DMA stop sequence for AR9003+ + - LP: #1479058 + * cdc-acm: Add support of ATOL FPrint fiscal printers + - LP: #1479058 + * regulator: core: fix constraints output buffer + - LP: #1479058 + * x86/PCI: Use host bridge _CRS info on Foxconn K8M890-8237A + - LP: #1479058 + * pinctrl: mvebu: armada-370: fix spi0 pin description + - LP: #1479058 + * pinctrl: mvebu: armada-xp: remove non-existing NAND pins + - LP: #1479058 + * pinctrl: mvebu: armada-xp: remove non-existing VDD cpu_pd functions + - LP: #1479058 + * pinctrl: mvebu: armada-xp: fix functions of MPP48 + - LP: #1479058 + * i2c: at91: fix a race condition when using the DMA controller + - LP: #1479058 + * dmaengine: mv_xor: bug fix for racing condition in descriptors cleanup + - LP: #1479058 + * ASoC: wm8960: the enum of "DAC Polarity" should be wm8960_enum[1] + - LP: #1479058 + * arm64: Do not attempt to use init_mm in reset_context() + - LP: #1479058 + * ext4: fix race between truncate and __ext4_journalled_writepage() + - LP: #1479058 + * Disable write buffering on Toshiba ToPIC95 + - LP: #1479058 + * jbd2: use GFP_NOFS in jbd2_cleanup_journal_tail() + - LP: #1479058 + * regmap: Fix regmap_bulk_read in BE mode + - LP: #1479058 + * jbd2: fix ocfs2 corrupt when updating journal superblock fails + - LP: #1479058 + * ideapad: fix software rfkill setting + - LP: #1479058 + * regmap: Fix possible shift overflow in regmap_field_init() + - LP: #1479058 + * ima: fix ima_show_template_data_ascii() + - LP: #1479058 + * nfs: increase size of EXCHANGE_ID name string buffer + - LP: #1479058 + * vTPM: set virtual device before passing to ibmvtpm_reset_crq + - LP: #1479058 + * arm: KVM: force execution of HCPTR access on VM exit + - LP: #1479058 + * i2c: mux: Use __i2c_transfer() instead of calling parent's + master_xfer() + - LP: #1479058 + * i2c: mux: pca954x: Use __i2c_transfer because of quirks + - LP: #1479058 + * arm64: mm: Fix freeing of the wrong memmap entries with + !SPARSEMEM_VMEMMAP + - LP: #1479058 + * dm space map metadata: fix occasional leak of a metadata block on + resize + - LP: #1479058 + * dm stats: fix divide by zero if 'number_of_areas' arg is zero + - LP: #1479058 + * ACPI / PNP: Avoid conflicting resource reservations + - LP: #1479058 + * Bluetooth: ath3k: Add support for another AR3012 card + - LP: #1479058 + * Bluetooth: ath3k: add support of 04ca:300f AR3012 device + - LP: #1449730, #1479058 + * Bluetooth: ath3k: Add support of 04ca:300d AR3012 device + - LP: #1394368, #1479058 + * libata: Do not blacklist Micron M500DC + - LP: #1479058 + * arm64: vdso: work-around broken ELF toolchains in Makefile + - LP: #1479058 + * iommu/amd: Handle large pages correctly in free_pagetable + - LP: #1479058 + * ext4: call sync_blockdev() before invalidate_bdev() in put_super() + - LP: #1479058 + * MIPS: Fix KVM guest fixmap address + - LP: #1479058 + * xfs: fix remote symlinks on V5/CRC filesystems + - LP: #1479058 + * ext4: don't retry file block mapping on bigalloc fs with non-extent + file + - LP: #1479058 + * NET: ROSE: Don't dereference NULL neighbour pointer. + - LP: #1479058 + * netfilter: nf_qeueue: Drop queue entries on nf_unregister_hook + - LP: #1479058 + * fs: Fix S_NOSEC handling + - LP: #1479058 + * ACPI / resources: free memory on error in add_region_before() + - LP: #1479058 + * PM / sleep: Increase default DPM watchdog timeout to 60 + - LP: #1479058 + * ARC: add compiler barrier to LLSC based cmpxchg + - LP: #1479058 + * dell-laptop: Fix allocating & freeing SMI buffer page + - LP: #1479058 + * tracing/filter: Do not allow infix to exceed end of string + - LP: #1479058 + * clocksource: exynos_mct: Avoid blocking calls in the cpu hotplug + notifier + - LP: #1479058 + * ALSA: hda - Add headset support to Acer Aspire V5 + - LP: #1479058 + * ALSA: hda - Fix the dock headphone output on Fujitsu Lifebook E780 + - LP: #1479058 + * agp/intel: Fix typo in needs_ilk_vtd_wa() + - LP: #1479058 + * drm/radeon: compute ring fix hibernation (CI GPU family) v2. + - LP: #1479058 + * drm/radeon: SDMA fix hibernation (CI GPU family). + - LP: #1479058 + * net: mvneta: introduce compatible string "marvell, armada-xp-neta" + - LP: #1479058 + * net: mvneta: disable IP checksum with jumbo frames for Armada 370 + - LP: #1479058 + * crush: fix a bug in tree bucket decode + - LP: #1479058 + * rbd: use GFP_NOIO in rbd_obj_request_create() + - LP: #1479058 + * arm64: Don't report clear pmds and puds as huge + - LP: #1479058 + * fuse: initialize fc->release before calling it + - LP: #1479058 + * vfs: Ignore unlocked mounts in fs_fully_visible + - LP: #1479058 + * vfs: Remove incorrect debugging WARN in prepend_path + - LP: #1479058 + * hwmon: (mcp3021) Fix broken output scaling + - LP: #1479058 + * ACPICA: Tables: Fix an issue that FACS initialization is performed + twice + - LP: #1479058 + * KVM: x86: make vapics_in_nmi_mode atomic + - LP: #1479058 + * KVM: x86: properly restore LVT0 + - LP: #1479058 + * KVM: s390: virtio-ccw: don't overwrite config space values + - LP: #1479058 + * 9p: forgetting to cancel request on interrupted zero-copy RPC + - LP: #1479058 + * ipip: fix one sparse error + - LP: #1479058 + * __bitmap_parselist: fix bug in empty string handling + - LP: #1479058 + * powerpc/pseries: Fix possible leaked device node reference + - LP: #1479058 + * USB: devio: fix a condition in async_completed() + - LP: #1479058 + * bridge: multicast: restore router configuration on port link down/up + - LP: #1479058 + * cfg80211: ignore netif running state when changing iftype + - LP: #1479058 + * mm: fix potential infinite loop in dissolve_free_huge_pages() + - LP: #1479058 + * mm/hugetlb: introduce minimum hugepage order + - LP: #1479058 + * watchdog: omap: assert the counter being stopped before reprogramming + - LP: #1479058 + * ASoC: imx-wm8962: Add a missing error check + - LP: #1479058 + * neigh: do not modify unlinked entries + - LP: #1479058 + * mmc: card: Fixup request missing in mmc_blk_issue_rw_rq + - LP: #1479058 + * tty: remove platform_sysrq_reset_seq + - LP: #1479058 + * mtd: dc21285: use raw spinlock functions for nw_gpio_lock + - LP: #1479058 + * rndis_wlan: harmless issue calling set_bit() + - LP: #1479058 + * NFS: Fix size of NFSACL SETACL operations + - LP: #1479058 + * security_syslog() should be called once only + - LP: #1479058 + * pktgen: adjust spacing in proc file interface output + - LP: #1479058 + * of: return NUMA_NO_NODE from fallback of_node_to_nid() + - LP: #1479058 + * HID: i2c-hid: fix harmless test_bit() issue + - LP: #1479058 + * mac80211: prevent possible crypto tx tailroom corruption + - LP: #1479058 + * Linux 3.13.11-ckt24 + - LP: #1479058 + + -- Kamal Mostafa Tue, 28 Jul 2015 12:19:56 -0700 + +linux (3.13.0-61.100) trusty; urgency=low + + [ Luis Henriques] + + * Re-work previous CVE backports to fix regression + - LP: #1479093 + + [ Upstream Kernel Changes ] + + * Revert "x86/nmi/64: Use DF to avoid userspace RSP confusing nested NMI + detection" + * Revert "x86/nmi/64: Reorder nested NMI checks" + * Revert "x86/nmi/64: Improve nested NMI comments" + * Revert "x86/nmi/64: Switch stacks on userspace NMI entry" + * Revert "x86/nmi/64: Remove asm code that saves cr2" + * Revert "x86/nmi: Enable nested do_nmi handling for 64-bit kernels" + * Revert "x86/asm/entry/64: Remove pointless jump to irq_return" + * Revert "x86/asm/entry/64: Remove a redundant jump" + * Revert "x86/asm/entry/64: Fold the 'test_in_nmi' macro into its only + user" + * Revert "x86/asm/entry/64: Always allocate a complete "struct pt_regs" + on the kernel stack" + * Revert "x86/asm/64: Open-code register save/restore in + trace_hardirqs*() thunks" + * Revert "x86: entry_64.S: fold SAVE_ARGS_IRQ macro into its sole user" + * Revert "x86: ia32entry.S: fix wrong symbolic constant usage: + R11->ARGOFFSET" + * Revert "x86: entry_64.S: delete unused code" + * Revert "x86, entry: Switch stacks on a paranoid entry from userspace" + * Revert "x86: Speed up ___preempt_schedule*() by using THUNK helpers" + * Revert "x86_64, entry: Treat regs->ax the same in fastpath and slowpath + syscalls" + * Revert "x86, entry: Only call user_exit if TIF_NOHZ" + * Revert "x86/debug: Drop several unnecessary CFI annotations" + * Revert "x86_64, entry: Add missing 'DEFAULT_FRAME 0' entry annotations" + * x86/asm/entry/64: Fold the 'test_in_nmi' macro into its only user + * x86/asm/entry/64: Remove a redundant jump + * 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 + - CVE-2015-3290, CVE-2015-5157 + * x86/nmi/64: Improve nested NMI comments + * x86/nmi/64: Reorder nested NMI checks + * x86/nmi/64: Use DF to avoid userspace RSP confusing nested NMI + detection + - CVE-2015-3291 + + -- Luis Henriques Wed, 29 Jul 2015 10:58:25 +0100 + +linux (3.13.0-59.98) trusty; urgency=low + + [ Colin Ian King ] + + * SAUCE: KEYS: ensure we free the assoc array edit if edit is valid + - CVE-2015-1333 + + [ Upstream Kernel Changes ] + + * x86_64, entry: Add missing 'DEFAULT_FRAME 0' entry annotations + * x86/debug: Drop several unnecessary CFI annotations + * x86, entry: Only call user_exit if TIF_NOHZ + * x86_64, entry: Treat regs->ax the same in fastpath and slowpath + syscalls + * x86: Speed up ___preempt_schedule*() by using THUNK helpers + * x86, entry: Switch stacks on a paranoid entry from userspace + * x86: entry_64.S: delete unused code + * x86: ia32entry.S: fix wrong symbolic constant usage: R11->ARGOFFSET + * x86: entry_64.S: fold SAVE_ARGS_IRQ macro into its sole user + * x86/asm/64: Open-code register save/restore in trace_hardirqs*() thunks + * x86/asm/entry/64: Always allocate a complete "struct pt_regs" on the + kernel stack + * x86/asm/entry/64: Fold the 'test_in_nmi' macro into its only user + * x86/asm/entry/64: Remove a redundant jump + * x86/asm/entry/64: Remove pointless jump to irq_return + * 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 + - CVE-2015-3290, CVE-2015-5157 + * x86/nmi/64: Improve nested NMI comments + * x86/nmi/64: Reorder nested NMI checks + * x86/nmi/64: Use DF to avoid userspace RSP confusing nested NMI + detection + - CVE-2015-3291 + + -- Luis Henriques Fri, 24 Jul 2015 17:24:42 +0100 + +linux (3.13.0-58.97) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1472453 + + [ Upstream Kernel Changes ] + + * vm: Fix incomplete backport of VM_FAULT_SIGSEGV handling support + - LP: #1471892 + + -- Brad Figg Tue, 07 Jul 2015 18:48:51 -0700 + +linux (3.13.0-58.96) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1471991 + + [ Iyappan Subramanian ] + + * SAUCE: (no-up): drivers: net: xgene: fix: Out of order descriptor bytes + read + - LP: #1425576 + + [ Upstream Kernel Changes ] + + * NVMe: Add shutdown timeout as module parameter. + - LP: #1465136 + * Drivers: hv: vmbus: Add support for VMBus panic notifier handler + - LP: #1463584 + * Drivers: hv: vmbus: Correcting truncation error for constant + HV_CRASH_CTL_CRASH_NOTIFY + - LP: #1463584 + * netfilter: nf_conntrack: don't release a conntrack with non-zero refcnt + - LP: #1466135 + * lpfc: Add iotag memory barrier + - LP: #1468416 + * mm/slab_common: support the slub_debug boot option on specific object + size + - LP: #1456952 + * pipe: iovec: Fix memory corruption when retrying atomic copy as + non-atomic + - CVE-2015-1805 + * kvm: x86: fix kvm_apic_has_events to check for NULL pointer + * staging, rtl8192e, LLVMLinux: Change extern inline to static inline + - LP: #1471233 + * kernel: use the gnu89 standard explicitly + - LP: #1471233 + * staging, rtl8192e, LLVMLinux: Remove unused inline prototype + - LP: #1471233 + * staging: rtl8712, rtl8712: avoid lots of build warnings + - LP: #1471233 + * qla2xxx: remove redundant declaration in 'qla_gbl.h' + - LP: #1471233 + * staging: wlags49_h2: fix extern inline functions + - LP: #1471233 + * ARM: 8307/1: psci: move psci firmware calls out of line + - LP: #1471233 + * kconfig: Fix warning "‘jump’ may be used uninitialized" + - LP: #1471233 + * scripts/sortextable: suppress warning: `relocs_size' may be used + uninitialized + - LP: #1471233 + * ASoC: dapm: Enable autodisable on SOC_DAPM_SINGLE_TLV_AUTODISABLE + - LP: #1471233 + * ALSA: hda - Fix mute-LED fixed mode + - LP: #1471233 + * ALSA: emu10k1: Fix card shortname string buffer overflow + - LP: #1471233 + * ALSA: emux: Fix mutex deadlock at unloading + - LP: #1471233 + * drm/radeon: add SI DPM quirk for Sapphire R9 270 Dual-X 2G GDDR5 + - LP: #1471233 + * SCSI: add 1024 max sectors black list flag + - LP: #1471233 + * 3w-sas: fix command completion race + - LP: #1471233 + * 3w-xxxx: fix command completion race + - LP: #1471233 + * 3w-9xxx: fix command completion race + - LP: #1471233 + * serial: xilinx: Use platform_get_irq to get irq description structure + - LP: #1471233 + * serial: of-serial: Remove device_type = "serial" registration + - LP: #1471233 + * tty/serial: at91: maxburst was missing for dma transfers + - LP: #1471233 + * ALSA: emux: Fix mutex deadlock in OSS emulation + - LP: #1471233 + * ALSA: emu10k1: Emu10k2 32 bit DMA mode + - LP: #1471233 + * rbd: end I/O the entire obj_request on error + - LP: #1471233 + * powerpc/pseries: Correct cpu affinity for dlpar added cpus + - LP: #1471233 + * bridge/mdb: remove wrong use of NLM_F_MULTI + - LP: #1471233 + * efivarfs: Ensure VariableName is NUL-terminated + - LP: #1471233 + * x86/efi: Store upper bits of command line buffer address in + ext_cmd_line_ptr + - LP: #1471233 + * writeback: use |1 instead of +1 to protect against div by zero + - LP: #1471233 + * ARM: mvebu: armada-xp-openblocks-ax3-4: Disable internal RTC + - LP: #1471233 + * ARM: dts: imx23-olinuxino: Fix polarity of LED GPIO + - LP: #1471233 + * ARM: dts: imx23-olinuxino: Fix dr_mode of usb0 + - LP: #1471233 + * ARM: dts: imx25: Add #pwm-cells to pwm4 + - LP: #1471233 + * ARM: dts: imx28: Fix AUART4 TX-DMA interrupt name + - LP: #1471233 + * gpio: sysfs: fix memory leaks and device hotplug + - LP: #1471233 + * drm/radeon: disable semaphores for UVD V1 (v2) + - LP: #1471233 + * RDMA/CMA: Canonize IPv4 on IPV6 sockets properly + - LP: #1471233 + * drm/i915: Assume dual channel LVDS if pixel clock necessitates it + - LP: #1471233 + * drm/i915: Add missing MacBook Pro models with dual channel LVDS + - LP: #1471233 + * xen/console: Update console event channel on resume + - LP: #1471233 + * xen/events: Set irq_info->evtchn before binding the channel to CPU in + __startup_pirq() + - LP: #1471233 + * mm/memory-failure: call shake_page() when error hits thp tail page + - LP: #1471233 + * nilfs2: fix sanity check of btree level in nilfs_btree_root_broken() + - LP: #1471233 + * ocfs2: dlm: fix race between purge and get lock resource + - LP: #1471233 + * drm/radeon: make UVD handle checking more strict + - LP: #1471233 + * drm/radeon: more strictly validate the UVD codec + - LP: #1471233 + * path_openat(): fix double fput() + - LP: #1471233 + * mnt: Fix fs_fully_visible to verify the root directory is visible + - LP: #1471233 + * pinctrl: Don't just pretend to protect pinctrl_maps, do it for real + - LP: #1471233 + * mmc: sh_mmcif: Fix timeout value for command request + - LP: #1471233 + * xen-pciback: Add name prefix to global 'permissive' variable + - LP: #1471233 + * mmc: core: add missing pm event in mmc_pm_notify to fix hib restore + - LP: #1471233 + * thermal: step_wise: Revert optimization + - LP: #1471233 + * libata: Add helper to determine when PHY events should be ignored + - LP: #1471233 + * libata: Ignore spurious PHY event on LPM policy change + - LP: #1471233 + * usb: gadget: configfs: Fix interfaces array NULL-termination + - LP: #1471233 + * rtlwifi: rtl8192cu: Fix kernel deadlock + - LP: #1471233 + * USB: cp210x: add ID for KCF Technologies PRN device + - LP: #1471233 + * USB: pl2303: Remove support for Samsung I330 + - LP: #1471233 + * USB: visor: Match I330 phone more precisely + - LP: #1471233 + * nfsd: fix the check for confirmed openowner in + nfs4_preprocess_stateid_op + - LP: #1471233 + * svcrpc: fix potential GSSX_ACCEPT_SEC_CONTEXT decoding failures + - LP: #1471233 + * ACPI / init: Fix the ordering of acpi_reserve_resources() + - LP: #1471233 + * md/raid5: don't record new size if resize_stripes fails. + - LP: #1471233 + * xhci: fix isoc endpoint dequeue from advancing too far on transaction + error + - LP: #1471233 + * xhci: Solve full event ring by increasing TRBS_PER_SEGMENT to 256 + - LP: #1471233 + * xhci: gracefully handle xhci_irq dead device + - LP: #1471233 + * usb-storage: Add NO_WP_DETECT quirk for Lacie 059f:0651 devices + - LP: #1471233 + * ARM: net fix emit_udiv() for BPF_ALU | BPF_DIV | BPF_K intruction. + - LP: #1471233 + * drm/radeon: fix VM_CONTEXT*_PAGE_TABLE_END_ADDR handling + - LP: #1471233 + * drm/radeon: add new bonaire pci id + - LP: #1471233 + * firmware: dmi_scan: Fix ordering of product_uuid + - LP: #1471233 + * ext4: fix NULL pointer dereference when journal restart fails + - LP: #1471233 + * ext4: check for zero length extent explicitly + - LP: #1471233 + * jbd2: fix r_count overflows leading to buffer overflow in journal + recovery + - LP: #1471233 + * mm, numa: really disable NUMA balancing by default on single node + machines + - LP: #1471233 + * spi: bitbang: Make setup_transfer() callback optional + - LP: #1471233 + * igb: Fix NULL assignment to incorrect variable in igb_reset_q_vector + - LP: #1471233 + * ARM: net: delegate filter to kernel interpreter when imm_offset() + return value can't fit into 12bits. + - LP: #1471233 + * ALSA: hda - Add headphone quirk for Lifebook E752 + - LP: #1471233 + * ASoC: mc13783: Fix wrong mask value used in mc13xxx_reg_rmw() calls + - LP: #1471233 + * ASoC: uda1380: Avoid accessing i2c bus when codec is disabled + - LP: #1471233 + * mac80211: move WEP tailroom size check + - LP: #1471233 + * KVM: MMU: fix smap permission check + - LP: #1471233 + * KVM: MMU: fix CR4.SMEP=1, CR0.WP=0 with shadow pages + - LP: #1471233 + * KVM: MMU: fix SMAP virtualization + - LP: #1471233 + * storvsc: Set the SRB flags correctly when no data transfer is needed + - LP: #1471233 + * ASoC: wm8960: fix "RINPUT3" audio route error + - LP: #1471233 + * ASoC: wm8994: correct BCLK DIV 348 to 384 + - LP: #1471233 + * Input: elantech - fix semi-mt protocol for v3 HW + - LP: #1471233 + * powerpc: Align TOC to 256 bytes + - LP: #1471233 + * ALSA: hda - Add Conexant codecs CX20721, CX20722, CX20723 and CX20724 + - LP: #1454656, #1471233 + * mmc: atmel-mci: fix bad variable type for clkdiv + - LP: #1471233 + * sd: Disable support for 256 byte/sector disks + - LP: #1471233 + * libceph: request a new osdmap if lingering request maps to no osd + - LP: #1471233 + * crypto: s390/ghash - Fix incorrect ghash icv buffer handling. + - LP: #1471233 + * ipvs: fix memory leak in ip_vs_ctl.c + - LP: #1471233 + * net: phy: Allow EEE for all RGMII variants + - LP: #1471233 + * bridge: fix parsing of MLDv2 reports + - LP: #1471233 + * ipv4: Avoid crashing in ip_error + - LP: #1471233 + * ipv6: do not delete previously existing ECMP routes if add fails + - LP: #1471233 + * ipv6: fix ECMP route replacement + - LP: #1471233 + * net: core: Correct an over-stringent device loop detection. + - LP: #1471233 + * x86: bpf_jit: fix compilation of large bpf programs + - LP: #1471233 + * net: dp83640: fix broken calibration routine. + - LP: #1471233 + * unix/caif: sk_socket can disappear when state is unlocked + - LP: #1471233 + * net_sched: invoke ->attach() after setting dev->qdisc + - LP: #1471233 + * udp: fix behavior of wrong checksums + - LP: #1471233 + * xen: netback: read hotplug script once at start of day. + - LP: #1471233 + * ipv4/udp: Verify multicast group is ours in upd_v4_early_demux() + - LP: #1471233 + * drm/radeon: partially revert "fix VM_CONTEXT*_PAGE_TABLE_END_ADDR + handling" + - LP: #1471233 + * Linux 3.13.11-ckt22 + - LP: #1471233 + + -- Brad Figg Mon, 06 Jul 2015 14:41:28 -0700 + +linux (3.13.0-57.95) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1466592 + + [ Brad Figg ] + + * Merged back Ubuntu-3.13.0-55.94 regression fix for security release + + -- Luis Henriques Thu, 18 Jun 2015 18:19:14 +0100 + +linux (3.13.0-56.93) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1465798 + + [ Upstream Kernel Changes ] + + * net: eth: xgene: devm_ioremap() returns NULL on error + - LP: #1458042 + * drivers: net: xgene: fix new firmware backward compatibility with older + driver + - LP: #1458042 + * drivers: net: xgene: constify of_device_id array + - LP: #1458042 + * drivers: net: xgene: Add second SGMII based 1G interface + - LP: #1458042 + * net: phy: re-design phy_modes to be self-contained + - LP: #1458042 + * dtb: change binding name to match with newer firmware DT + - LP: #1458042 + * dtb: xgene: Add second SGMII based 1G interface node + - LP: #1458042 + * Btrfs: make xattr replace operations atomic + - LP: #1438501 + - CVE-2014-9710 + * cdc-acm: prevent infinite loop when parsing CDC headers. + - LP: #1460657 + * (upstream) libata: Blacklist queued TRIM on all Samsung 800-series + - LP: #1338706, #1449005 + * ahci: avoton port-disable reset-quirk + - LP: #1458617 + * xfs: avoid false quotacheck after unclean shutdown + - LP: #1461730 + * (upstream)[SCSI] Add timeout to avoid infinite command retry + - LP: #1449372 + * (upstream)scsi_lib: remove the description string in + scsi_io_completion() + - LP: #1449372 + * udf: Remove repeated loads blocksize + - LP: #1462173 + - CVE-2015-4167 + * udf: Check length of extended attributes and allocation descriptors + - LP: #1462173 + - CVE-2015-4167 + * vfs: read file_handle only once in handle_to_path + - LP: #1416503 + - CVE-2015-1420 + * ozwpan: Use unsigned ints to prevent heap overflow + - LP: #1463442 + - CVE-2015-4001 + * ozwpan: divide-by-zero leading to panic + - LP: #1463445 + - CVE-2015-4003 + * ozwpan: Use proper check to prevent heap overflow + - LP: #1463444 + - CVE-2015-4002 + * ozwpan: unchecked signed subtraction leads to DoS + - LP: #1463444 + - CVE-2015-4002 + * Input: elantech - add new icbody type + - LP: #1464490 + * Bluetooth: ath3k: Add support Atheros AR5B195 combo Mini PCIe card + - LP: #1465796 + * power_supply: twl4030_madc: Check return value of power_supply_register + - LP: #1465796 + * power_supply: lp8788-charger: Fix leaked power supply on probe fail + - LP: #1465796 + * ARM: dts: dove: Fix uart[23] reg property + - LP: #1465796 + * xtensa: xtfpga: fix hardware lockup caused by LCD driver + - LP: #1465796 + * Drivers: hv: vmbus: Fix a bug in the error path in vmbus_open() + - LP: #1465796 + * xtensa: provide __NR_sync_file_range2 instead of __NR_sync_file_range + - LP: #1465796 + * KVM: s390: Zero out current VMDB of STSI before including level3 data. + - LP: #1465796 + * usb: musb: core: fix TX/RX endpoint order + - LP: #1465796 + * drm/radeon: fix doublescan modes (v2) + - LP: #1465796 + * usb: phy: Find the right match in devm_usb_phy_match + - LP: #1465796 + * tools lib traceevent kbuffer: Remove extra update to data pointer in + PADDING + - LP: #1465796 + * ring-buffer: Replace this_cpu_*() with __this_cpu_*() + - LP: #1465796 + * ASoC: wm8741: Fix rates constraints values + - LP: #1465796 + * cdc-wdm: fix endianness bug in debug statements + - LP: #1465796 + * staging: panel: fix lcd type + - LP: #1465796 + * UBI: account for bitflips in both the VID header and data + - LP: #1465796 + * UBI: fix out of bounds write + - LP: #1465796 + * UBI: initialize LEB number variable + - LP: #1465796 + * UBI: fix check for "too many bytes" + - LP: #1465796 + * ARM: S3C64XX: Use fixed IRQ bases to avoid conflicts on Cragganmore + - LP: #1465796 + * ASoC: davinci-evm: drop un-necessary remove function + - LP: #1465796 + * iscsi-target: Convert iscsi_thread_set usage to kthread.h + - LP: #1465796 + * Drivers: hv: vmbus: Don't wait after requesting offers + - LP: #1465796 + * Btrfs: fix log tree corruption when fs mounted with -o discard + - LP: #1465796 + * btrfs: don't accept bare namespace as a valid xattr + - LP: #1465796 + * ARM: 8320/1: fix integer overflow in ELF_ET_DYN_BASE + - LP: #1465796 + * rtlwifi: rtl8192cu: Add new USB ID + - LP: #1465796 + * MIPS: Hibernate: flush TLB entries earlier + - LP: #1465796 + * ASoC: cs4271: Increase delay time after reset + - LP: #1465796 + * stk1160: Make sure current buffer is released + - LP: #1465796 + * mnt: Improve the umount_tree flags + - LP: #1465796 + * ext4: make fsync to sync parent dir in no-journal for real this time + - LP: #1465796 + * Input: elantech - fix absolute mode setting on some ASUS laptops + - LP: #1465796 + * usb: define a generic USB_RESUME_TIMEOUT macro + - LP: #1465796 + * usb: host: xhci: use new USB_RESUME_TIMEOUT + - LP: #1465796 + * usb: host: ehci: use new USB_RESUME_TIMEOUT + - LP: #1465796 + * usb: host: uhci: use new USB_RESUME_TIMEOUT + - LP: #1465796 + * usb: musb: use new USB_RESUME_TIMEOUT + - LP: #1465796 + * usb: host: isp116x: use new USB_RESUME_TIMEOUT + - LP: #1465796 + * usb: host: fotg210: use new USB_RESUME_TIMEOUT + - LP: #1465796 + * usb: host: fusbh200: use new USB_RESUME_TIMEOUT + - LP: #1465796 + * usb: host: oxu210hp: use new USB_RESUME_TIMEOUT + - LP: #1465796 + * usb: host: r8a66597: use new USB_RESUME_TIMEOUT + - LP: #1465796 + * usb: host: sl811: use new USB_RESUME_TIMEOUT + - LP: #1465796 + * usb: dwc2: hcd: use new USB_RESUME_TIMEOUT + - LP: #1465796 + * usb: isp1760: hcd: use new USB_RESUME_TIMEOUT + - LP: #1465796 + * usb: core: hub: use new USB_RESUME_TIMEOUT + - LP: #1465796 + * iser-target: Fix possible deadlock in RDMA_CM connection error + - LP: #1465796 + * gpio: mvebu: Fix mask/unmask managment per irq chip type + - LP: #1465796 + * scsi: storvsc: Fix a bug in copy_from_bounce_buffer() + - LP: #1465796 + * ALSA: emu10k1: don't deadlock in proc-functions + - LP: #1465796 + * xtensa: ISS: fix locking in TAP network adapter + - LP: #1465796 + * s390/hibernate: fix save and restore of kernel text section + - LP: #1465796 + * Btrfs: fix inode eviction infinite loop after extent_same ioctl + - LP: #1465796 + * Btrfs: fix inode eviction infinite loop after cloning into it + - LP: #1465796 + * ACPICA: Utilities: split IO address types from data type models. + - LP: #1465796 + * drm/i915: Dont enable CS_PARSER_ERROR interrupts at all + - LP: #1465796 + * target: Fix COMPARE_AND_WRITE with SG_TO_MEM_NOALLOC handling + - LP: #1465796 + * mm/hugetlb: use pmd_page() in follow_huge_pmd() + - LP: #1465796 + * fs/binfmt_elf.c: fix bug in loading of PIE binaries + - LP: #1465796 + * IB/core: disallow registering 0-sized memory region + - LP: #1465796 + * IB/core: don't disallow registering region starting at 0x0 + - LP: #1465796 + * ptrace: fix race between ptrace_resume() and wait_task_stopped() + - LP: #1465796 + * mvsas: fix panic on expander attached SATA devices + - LP: #1465796 + * drm/i915: cope with large i2c transfers + - LP: #1465796 + * RCU pathwalk breakage when running into a symlink overmounting + something + - LP: #1465796 + * compal-laptop: Check return value of power_supply_register + - LP: #1465796 + * sched/idle/x86: Restore mwait_idle() to fix boot hangs, to improve + power savings and to improve performance + - LP: #1465796 + * nfs: don't call blocking operations while !TASK_RUNNING + - LP: #1465796 + * nfs: fix high load average due to callback thread sleeping + - LP: #1465796 + * e1000: add dummy allocator to fix race condition between mtu change and + netpoll + - LP: #1465796 + * wl18xx: show rx_frames_per_rates as an array as it really is + - LP: #1465796 + * lib: memzero_explicit: use barrier instead of OPTIMIZER_HIDE_VAR + - LP: #1465796 + * driver core: bus: Goto appropriate labels on failure in bus_add_device + - LP: #1465796 + * C6x: time: Ensure consistency in __init + - LP: #1465796 + * crypto: omap-aes - Fix support for unequal lengths + - LP: #1465796 + * jhash: Update jhash_[321]words functions to use correct initval + - LP: #1465796 + * KVM: use slowpath for cross page cached accesses + - LP: #1465796 + * powerpc: Fix missing L2 cache size in /sys/devices/system/cpu + - LP: #1465796 + * NFS: fix BUG() crash in notify_change() with patch to chown_common() + - LP: #1465796 + * i2c: core: Export bus recovery functions + - LP: #1465796 + * IB/mlx4: Fix WQE LSO segment calculation + - LP: #1465796 + * mlx5: wrong page mask if CONFIG_ARCH_DMA_ADDR_T_64BIT enabled for 32Bit + architectures + - LP: #1465796 + * skbuff: Do not scrub skb mark within the same name space + - LP: #1465796 + * firmware/ihex2fw.c: restore missing default in switch statement + - LP: #1465796 + * memstick: mspro_block: add missing curly braces + - LP: #1465796 + * tools/power turbostat: Use $(CURDIR) instead of $(PWD) and add support + for O= option in Makefile + - LP: #1465796 + * ext4: fix data corruption caused by unwritten and delayed extents + - LP: #1465796 + * powerpc: Add vr save/restore functions + - LP: #1465796 + * Linux 3.13.11-ckt21 + - LP: #1465796 + + -- Brad Figg Tue, 16 Jun 2015 10:52:43 -0700 + +linux (3.13.0-55.94) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1466237 + + [ Andy Whitcroft ] + + * SAUCE: ensure that upper/lower layers are valid before checking + permissions + - LP: #1465998 + + -- Brad Figg Wed, 17 Jun 2015 14:58:16 -0700 + +linux (3.13.0-55.92) trusty; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: overlayfs: when copying up and reading directories ensure + mounter had permissions V2 + - CVE-2015-1328 + + -- Luis Henriques Fri, 12 Jun 2015 09:40:20 +0100 + +linux (3.13.0-54.91) trusty; urgency=medium + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1458618 + + [ Upstream Kernel Changes ] + + * [3.13-stable only] Revert "gianfar: Carefully free skbs in functions + called by netpoll." + - LP: #1454746 + + -- Luis Henriques Tue, 26 May 2015 17:19:30 +0100 + +linux (3.13.0-54.90) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1458618 + + [ Andy Whitcroft ] + + * [Config] push off linux-lts-{utopic, vivid}-tools-common + - LP: #1405807 + + [ Brad Figg ] + + * hyper-v -- add hid and fb drivers to linux-virtual + - LP: #1444179 + + [ Upstream Kernel Changes ] + + * DT doc: net: cpsw mac-address is optional + - LP: #1452628 + * net: cpsw: Add missing return value + - LP: #1452628 + * net: cpsw: header, Add missing include + - LP: #1452628 + * net: cpsw: Add am33xx MACID readout + - LP: #1452628 + * am33xx: define syscon control module device node + - LP: #1452628 + * arm: dts: am33xx, Add syscon phandle to cpsw node + - LP: #1452628 + * net: cpsw: do not register cpts twice + - LP: #1452620 + * x86: kvm: Revert "remove sched notifier for cross-cpu migrations" + - LP: #1450584 + * x86: vdso: fix pvclock races with task migration + - LP: #1450584 + * n_tty: Fix read buffer overwrite when no newline + - LP: #1381005, #1454746 + * KVM: x86: Fix lost interrupt on irr_pending race + - LP: #1454746 + * writeback: add missing INITIAL_JIFFIES init in + global_update_bandwidth() + - LP: #1454746 + * nbd: fix possible memory leak + - LP: #1454746 + * mfd: kempld-core: Fix callback return value check + - LP: #1454746 + * KVM: nVMX: mask unrestricted_guest if disabled on L0 + - LP: #1454746 + * spi: trigger trace event for message-done before mesg->complete + - LP: #1454746 + * powerpc/pseries: Little endian fixes for post mobility device tree + update + - LP: #1454746 + * net: ethernet: pcnet32: Setup the SRAM and NOUFLO on Am79C97{3, 5} + - LP: #1454746 + * perf: Fix irq_work 'tail' recursion + - LP: #1454746 + * arm64: Use the reserved TTBR0 if context switching to the init_mm + - LP: #1454746 + * selinux: fix sel_write_enforce broken return value + - LP: #1454746 + * mm: fix anon_vma->degree underflow in anon_vma endless growing + prevention + - LP: #1454746 + * mm/memory hotplug: postpone the reset of obsolete pgdat + - LP: #1454746 + * hfsplus: fix B-tree corruption after insertion at position 0 + - LP: #1454746 + * ARC: SA_SIGINFO ucontext regs off-by-one + - LP: #1454746 + * writeback: fix possible underflow in write bandwidth calculation + - LP: #1454746 + * iio: fix drivers that check buffer->scan_mask + - LP: #1454746 + * iio: inv_mpu6050: Clear timestamps fifo while resetting hardware fifo + - LP: #1454746 + * iio: core: Fix double free. + - LP: #1454746 + * USB: ftdi_sio: Added custom PID for Synapse Wireless product + - LP: #1454746 + * iwlwifi: dvm: run INIT firmware again upon .start() + - LP: #1454746 + * USB: keyspan_pda: add new device id + - LP: #1454746 + * cifs: smb2_clone_range() - exit on unhandled error + - LP: #1454746 + * cifs: fix use-after-free bug in find_writable_file + - LP: #1454746 + * can: flexcan: Deferred on Regulator return EPROBE_DEFER + - LP: #1454746 + * usb: xhci: handle Config Error Change (CEC) in xhci driver + - LP: #1454746 + * usb: xhci: apply XHCI_AVOID_BEI quirk to all Intel xHCI controllers + - LP: #1454746 + * USB: ftdi_sio: Use jtag quirk for SNAP Connect E10 + - LP: #1454746 + * tty: serial: fsl_lpuart: clear receive flag on FIFO flush + - LP: #1454746 + * radeon: Do not directly dereference pointers to BIOS area. + - LP: #1454746 + * iio: imu: Use iio_trigger_get for indio_dev->trig assignment + - LP: #1454746 + * dmaengine: edma: fix memory leak when terminating running transfers + - LP: #1454746 + * dmaengine: omap-dma: Fix memory leak when terminating running transfer + - LP: #1454746 + * x86/reboot: Add ASRock Q1900DC-ITX mainboard reboot quirk + - LP: #1454746 + * mac80211: fix RX A-MPDU session reorder timer deletion + - LP: #1454746 + * tcp: prevent fetching dst twice in early demux code + - LP: #1454746 + * net: use for_each_netdev_safe() in rtnl_group_changelink() + - LP: #1454746 + * xen-netfront: transmit fully GSO-sized packets + - LP: #1454746 + * tcp: fix FRTO undo on cumulative ACK of SACKed range + - LP: #1454746 + * PCI: cpcihp: Add missing curly braces in cpci_configure_slot() + - LP: #1454746 + * sh_veu: v4l2_dev wasn't set + - LP: #1454746 + * media: s5p-mfc: fix mmap support for 64bit arch + - LP: #1454746 + * cpuidle: ACPI: do not overwrite name and description of C0 + - LP: #1454746 + * ioctx_alloc(): fix vma (and file) leak on failure + - LP: #1454746 + * ALSA: hda/realtek - Make more stable to get pin sense for ALC283 + - LP: #1454746 + * be2iscsi: Fix kernel panic when device initialization fails + - LP: #1454746 + * Defer processing of REQ_PREEMPT requests for blocked devices + - LP: #1454746 + * ALSA: hda - Fix headphone pin config for Lifebook T731 + - LP: #1454746 + * ocfs2: _really_ sync the right range + - LP: #1454746 + * ALSA: usb - Creative USB X-Fi Pro SB1095 volume knob support + - LP: #1454746 + * iscsi target: fix oops when adding reject pdu + - LP: #1454746 + * net/mlx4_en: Call register_netdevice in the proper location + - LP: #1454746 + * ipv6: protect skb->sk accesses from recursive dereference inside the + stack + - LP: #1454746 + * tcp: tcp_make_synack() should clear skb->tstamp + - LP: #1454746 + * 8139cp: Call dev_kfree_skby_any instead of kfree_skb. + - LP: #1454746 + * 8139too: Call dev_kfree_skby_any instead of dev_kfree_skb. + - LP: #1454746 + * r8169: Call dev_kfree_skby_any instead of dev_kfree_skb. + - LP: #1454746 + * bonding: Call dev_kfree_skby_any instead of kfree_skb. + - LP: #1454746 + * bnx2: Call dev_kfree_skby_any instead of dev_kfree_skb. + - LP: #1454746 + * tg3: Call dev_kfree_skby_any instead of dev_kfree_skb. + - LP: #1454746 + * ixgb: Call dev_kfree_skby_any instead of dev_kfree_skb. + - LP: #1454746 + * benet: Call dev_kfree_skby_any instead of kfree_skb. + - LP: #1454746 + * gianfar: Carefully free skbs in functions called by netpoll. + - LP: #1454746 + * ip_forward: Drop frames with attached skb->sk + - LP: #1454746 + * tcp: fix possible deadlock in tcp_send_fin() + - LP: #1454746 + * tcp: avoid looping in tcp_send_fin() + - LP: #1454746 + * net: do not deplete pfmemalloc reserve + - LP: #1454746 + * net: fix crash in build_skb() + - LP: #1454746 + * ipv4: Missing sk_nulls_node_init() in ping_unhash(). + - LP: #1454746 + * Linux 3.13.11-ckt20 + - LP: #1454746 + * of: Add support for ePAPR "stdout-path" property + - LP: #1438585 + * lib: add glibc style strchrnul() variant + - LP: #1438585 + * of: Create unlocked version of for_each_child_of_node() + - LP: #1438585 + * of: Make of_find_node_by_path() handle /aliases + - LP: #1438585 + * of: Create of_console_check() for selecting a console specified in + /chosen + - LP: #1438585 + * of: Enable console on serial ports specified by /chosen/stdout-path + - LP: #1438585 + * of: correct of_console_check()'s return value + - LP: #1438585 + * of: Add bindings for chosen node, stdout-path + - LP: #1438585 + * of: add optional options parameter to of_find_node_by_path() + - LP: #1438585 + * of: support passing console options with stdout-path + - LP: #1438585 + * (upstream) net/mlx4_core: Adjust command timeouts to conform to the + firmware spec + - LP: #1455121 + * arm64: kernel: add MPIDR_EL1 accessors macros + - LP: #1455372 + * of: reimplement the matching method for __of_match_node() + - LP: #1455372 + * arm64: remove redundant "psci:" prefixes + - LP: #1455372 + * arm64: remove return value form psci_init() + - LP: #1455372 + * arm: KVM: Don't return PSCI_INVAL if waitqueue is inactive + - LP: #1455372 + * KVM: Add capability to advertise PSCI v0.2 support + - LP: #1455372 + * ARM/ARM64: KVM: Add common header for PSCI related defines + - LP: #1455372 + * ARM/ARM64: KVM: Add base for PSCI v0.2 emulation + - LP: #1455372 + * KVM: Documentation: Add info regarding KVM_ARM_VCPU_PSCI_0_2 feature + - LP: #1455372 + * ARM/ARM64: KVM: Make kvm_psci_call() return convention more flexible + - LP: #1455372 + * KVM: Add KVM_EXIT_SYSTEM_EVENT to user space API header + - LP: #1455372 + * ARM/ARM64: KVM: Emulate PSCI v0.2 SYSTEM_OFF and SYSTEM_RESET + - LP: #1455372 + * ARM/ARM64: KVM: Emulate PSCI v0.2 AFFINITY_INFO + - LP: #1455372 + * ARM/ARM64: KVM: Emulate PSCI v0.2 MIGRATE_INFO_TYPE and related + functions + - LP: #1455372 + * ARM/ARM64: KVM: Fix CPU_ON emulation for PSCI v0.2 + - LP: #1455372 + * ARM/ARM64: KVM: Emulate PSCI v0.2 CPU_SUSPEND + - LP: #1455372 + * ARM/ARM64: KVM: Advertise KVM_CAP_ARM_PSCI_0_2 to user space + - LP: #1455372 + * PSCI: Add initial support for PSCIv0.2 functions + - LP: #1455372 + * Documentation: devicetree: Add new binding for PSCIv0.2 + - LP: #1455372 + * ARM: Check if a CPU has gone offline + - LP: #1455372 + * arm64: KVM: Enable minimalistic support for Cortex-A53 + - LP: #1455372 + * HID: multitouch: add support of clickpads + - LP: #1456881 + * vhost/scsi: potential memory corruption + - LP: #1457807 + - CVE-2015-4036 + + -- Luis Henriques Tue, 26 May 2015 11:21:53 +0100 + +linux (3.13.0-53.89) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1456976 + + [ Upstream Kernel Changes ] + + * tcp: Fix crash in TCP Fast Open + - LP: #1447371 + - CVE-2015-3332 + + -- Luis Henriques Wed, 20 May 2015 11:00:58 +0100 + +linux (3.13.0-53.88) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1454785 + + [ Upstream Kernel Changes ] + + * mmc: card: Don't access RPMB partitions for normal read/write + - LP: #1454013 + + -- Brad Figg Wed, 13 May 2015 10:15:29 -0700 + +linux (3.13.0-53.87) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1452736 + + [ dann frazier ] + + * [Config] CONFIG_{EFI_PARAMS_FROM_FDT,GENERIC_EARLY_IOREMAP,LIBFDT}=y + - LP: #1441876 + * Move get_dram_base to arm private file + - LP: #1441876 + * arm64: Implement efi_enabled() + - LP: #1441876 + * [Config] CONFIG_RTC_DRV_EFI=y on arm64 + - LP: #1441291 + + [ Kamal Mostafa ] + + * Fix "mei: me: release hw from reset only during the reset flow" + - LP: #1450813 + + [ Stefan Bader ] + + * SAUCE: vesafb: Set mtrr:3 (write-combining) as default + - LP: #1434581 + + [ Upstream Kernel Changes ] + + * Revert "net: cx82310_eth: use common match macro" + - LP: #1451900 + * netfilter: nf_conntrack: reserve two bytes for nf_ct_ext->len + - LP: #1442080 + - CVE-2014-9715 + * add generic fixmap.h + - LP: #1441876 + * mm: create generic early_ioremap() support + - LP: #1441876 + * arm64: initialize pgprot info earlier in boot + - LP: #1441876 + * arm64: add early_ioremap support + - LP: #1441876 + * arm64: fixmap: fix missing sub-page offset for earlyprintk + - LP: #1441876 + * efi: create memory map iteration helper + - LP: #1441876 + * efi: Add get_dram_base() helper function + - LP: #1441876 + * lib: add fdt_empty_tree.c + - LP: #1441876 + * doc: efi-stub.txt updates for ARM + - LP: #1441876 + * efi: add helper function to get UEFI params from FDT + - LP: #1441876 + * arm64: Add function to create identity mappings + - LP: #1441876 + * efi: Add shared FDT related functions for ARM/ARM64 + - LP: #1441876 + * arm64: add EFI runtime services + - LP: #1441876 + * doc: arm: add UEFI support documentation + - LP: #1441876 + * arm64: efi: add EFI stub + - LP: #1441876 + * doc: arm64: add description of EFI stub support + - LP: #1441876 + * efi/arm64: ignore dtb= when UEFI SecureBoot is enabled + - LP: #1441876 + * arm64: efi: only attempt efi map setup if booting via EFI + - LP: #1441876 + * PCI: Don't clear ASPM bits when the FADT declares it's unsupported + - LP: #1441335 + * regmap: Skip read-only registers in regcache_sync() + - LP: #1448830 + * rtc: ia64: allow other architectures to use EFI RTC + - LP: #1441291 + * rtc: Disable EFI rtc for x86 + - LP: #1441291 + * mei: me: fix hw ready reset flow + - LP: #1450813 + * Input: serio - add firmware_id sysfs attribute + - LP: #1414930 + * Input: i8042 - add firmware_id support + - LP: #1414930 + * Input: Add INPUT_PROP_TOPBUTTONPAD device property + - LP: #1414930 + * Input: synaptics - report INPUT_PROP_TOPBUTTONPAD property + - LP: #1414930 + * Input: synaptics - add a matches_pnp_id helper function + - LP: #1414930 + * Input: synaptics - change min/max quirk table to pnp-id matching + - LP: #1414930 + * Input: psmouse - add psmouse_matches_pnp_id helper function + - LP: #1414930 + * Input: synaptics - split synaptics_resolution(), query first + - LP: #1414930 + * Input: synaptics - log queried and quirked dimension values + - LP: #1414930 + * Input: synaptics - remove obsolete min/max quirk for X240 + - LP: #1414930 + * Input: synaptics - add min/max quirk for pnp-id LEN2002 (Edge E531) + - LP: #1414930 + * Input: synaptics - add min/max quirk for Lenovo T440s + - LP: #1414930 + * Input: synaptics - adjust min/max for Lenovo ThinkPad X1 Carbon 2nd + - LP: #1414930 + * Input: synaptics - adjust min/max on Thinkpad E540 + - LP: #1414930 + * Input: synaptics - support min/max board id in min_max_pnpid_table + - LP: #1414930 + * Input: synaptics - skip quirks when post-2013 dimensions + - LP: #1414930 + * Input: synaptics - query min dimensions for fw v8.1 + - LP: #1414930 + * Input: synaptics - fix middle button on Lenovo 2015 products + - LP: #1414930 + * Input: synaptics - handle spurious release of trackstick buttons + - LP: #1414930 + * Input: synaptics - do not retrieve the board id on old firmwares + - LP: #1414930 + * Input: synaptics - retrieve the extended capabilities in query $10 + - LP: #1414930 + * Input: synaptics - remove TOPBUTTONPAD property for Lenovos 2015 + - LP: #1414930 + * Input: synaptics - re-route tracksticks buttons on the Lenovo 2015 + series + - LP: #1414930 + * Input: synaptics - remove X1 Carbon 3rd gen from the topbuttonpad list + - LP: #1414930 + * Input: synaptics - remove X250 from the topbuttonpad list + - LP: #1414930 + * drm/dp_helper: don't return EPROTO for defers (v2) + - LP: #1450322 + * iio: mxs-lradc: separate touchscreen and buffer virtual channels + - LP: #1451900 + * iio: mxs-lradc: make ADC reads not disable touchscreen interrupts + - LP: #1451900 + * iio: mxs-lradc: make ADC reads not unschedule touchscreen conversions + - LP: #1451900 + * iio: mxs-lradc: only update the buffer when its conversions have + finished + - LP: #1451900 + * iio: imu: adis16400: Fix sign extension + - LP: #1451900 + * iio:adc:mcp3422 Fix incorrect scales table + - LP: #1451900 + * iio: ad5686: fix optional reference voltage declaration + - LP: #1451900 + * usb: dwc3: dwc3-omap: Fix disable IRQ + - LP: #1451900 + * KVM: emulate: fix CMPXCHG8B on 32-bit hosts + - LP: #1451900 + * xhci: Allocate correct amount of scratchpad buffers + - LP: #1451900 + * USB: usbfs: don't leak kernel data in siginfo + - LP: #1451900 + * efi/libstub: Fix boundary checking in efi_high_alloc() + - LP: #1451900 + * USB: ftdi_sio: add PIDs for Actisense USB devices + - LP: #1451900 + * USB: serial: fix potential use-after-free after failed probe + - LP: #1451900 + * USB: serial: fix tty-device error handling at probe + - LP: #1451900 + * mac80211: Send EAPOL frames at lowest rate + - LP: #1451900 + * ARC: Fix KSTK_ESP() + - LP: #1451900 + * USB: serial: cp210x: Adding Seletek device id's + - LP: #1451900 + * mei: make device disabled on stop unconditionally + - LP: #1451900 + * NFSv4: Don't call put_rpccred() under the rcu_read_lock() + - LP: #1451900 + * btrfs: fix lost return value due to variable shadowing + - LP: #1451900 + * KVM: MIPS: Fix trace event to save PC directly + - LP: #1451900 + * usb: ftdi_sio: Add jtag quirk support for Cyber Cortex AV boards + - LP: #1451900 + * eCryptfs: don't pass fs-specific ioctl commands through + - LP: #1451900 + * drm/radeon: do a posting read in r100_set_irq + - LP: #1451900 + * drm/radeon: do a posting read in rs600_set_irq + - LP: #1451900 + * drm/radeon: do a posting read in r600_set_irq + - LP: #1451900 + * drm/radeon: do a posting read in evergreen_set_irq + - LP: #1451900 + * drm/radeon: do a posting read in si_set_irq + - LP: #1451900 + * drm/radeon: do a posting read in cik_set_irq + - LP: #1451900 + * drm/radeon: fix DRM_IOCTL_RADEON_CS oops + - LP: #1451900 + * drm/radeon: fix interlaced modes on DCE8 + - LP: #1451900 + * ACPI / video: Load the module even if ACPI is disabled + - LP: #1451900 + * ASoC: omap-pcm: Correct dma mask + - LP: #1451900 + * x86/asm/entry/64: Remove a bogus 'ret_from_fork' optimization + - LP: #1451900 + * Btrfs: fix data loss in the fast fsync path + - LP: #1451900 + * Btrfs:__add_inode_ref: out of bounds memory read when looking for + extended ref. + - LP: #1451900 + * xhci: fix reporting of 0-sized URBs in control endpoint + - LP: #1451900 + * xhci: Workaround for PME stuck issues in Intel xhci + - LP: #1451900 + * Change email address for 8250_pci + - LP: #1451900 + * tty: fix up atime/mtime mess, take four + - LP: #1451900 + * console: Fix console name size mismatch + - LP: #1451900 + * net: irda: fix wait_until_sent poll timeout + - LP: #1451900 + * USB: serial: fix infinite wait_until_sent timeout + - LP: #1451900 + * TTY: fix tty_wait_until_sent on 64-bit machines + - LP: #1451900 + * sunrpc: fix braino in ->poll() + - LP: #1451900 + * netfilter: xt_socket: fix a stack corruption bug + - LP: #1451900 + * svcrpc: fix memory leak in gssp_accept_sec_context_upcall + - LP: #1451900 + * ipv4: ip_check_defrag should correctly check return value of + skb_copy_bits + - LP: #1451900 + * net: phy: Fix verification of EEE support in phy_init_eee + - LP: #1451900 + * openvswitch: Fix net exit. + - LP: #1451900 + * team: fix possible null pointer dereference in team_handle_frame + - LP: #1451900 + * net: compat: Ignore MSG_CMSG_COMPAT in compat_sys_{send, recv}msg + - LP: #1451900 + * rtnetlink: ifla_vf_policy: fix misuses of NLA_BINARY + - LP: #1451900 + * rtnetlink: call ->dellink on failure when ->newlink exists + - LP: #1451900 + * gen_stats.c: Duplicate xstats buffer for later use + - LP: #1451900 + * ipv4: ip_check_defrag should not assume that skb_network_offset is zero + - LP: #1451900 + * ematch: Fix auto-loading of ematch modules. + - LP: #1451900 + * net: reject creation of netdev names with colons + - LP: #1451900 + * macvtap: make sure neighbour code can push ethernet header + - LP: #1451900 + * usb: plusb: Add support for National Instruments host-to-host cable + - LP: #1451900 + * udp: only allow UFO for packets from SOCK_DGRAM sockets + - LP: #1451900 + * net: ping: Return EAFNOSUPPORT when appropriate. + - LP: #1451900 + * team: don't traverse port list using rcu in team_set_mac_address + - LP: #1451900 + * cpuset: Fix cpuset sched_relax_domain_level + - LP: #1451900 + * workqueue: fix hang involving racing cancel[_delayed]_work_sync()'s for + PREEMPT_NONE + - LP: #1451900 + * bnx2x: Force fundamental reset for EEH recovery + - LP: #1451900 + * spi: pl022: Fix race in giveback() leading to driver lock-up + - LP: #1451900 + * tpm/ibmvtpm: Additional LE support for tpm_ibmvtpm_send + - LP: #1451900 + * libsas: Fix Kernel Crash in smp_execute_task + - LP: #1451900 + * can: add missing initialisations in CAN related skbuffs + - LP: #1451900 + * can: kvaser_usb: Avoid double free on URB submission failures + - LP: #1451900 + * can: kvaser_usb: Read all messages in a bulk-in URB buffer + - LP: #1451900 + * ftrace: Fix en(dis)able graph caller when en(dis)abling record via + sysctl + - LP: #1451900 + * ftrace: Fix ftrace enable ordering of sysctl ftrace_enabled + - LP: #1451900 + * drm/radeon: drop setting UPLL to sleep mode + - LP: #1451900 + * xen-pciback: limit guest control of command register + - LP: #1451900 + * ALSA: hda - Fix built-in mic on Compaq Presario CQ60 + - LP: #1451900 + * ALSA: control: Add sanity checks for user ctl id name string + - LP: #1451900 + * ALSA: snd-usb: add quirks for Roland UA-22 + - LP: #1451900 + * ALSA: hda - Set single_adc_amp flag for CS420x codecs + - LP: #1451900 + * ALSA: hda - Add workaround for MacBook Air 5,2 built-in mic + - LP: #1451900 + * nilfs2: fix deadlock of segment constructor during recovery + - LP: #1451900 + * ALSA: hda - Don't access stereo amps for mono channel widgets + - LP: #1451900 + * ipvs: add missing ip_vs_pe_put in sync code + - LP: #1451900 + * ARM: at91: pm: fix at91rm9200 standby + - LP: #1451900 + * rbd: drop an unsafe assertion + - LP: #1451900 + * fuse: notify: don't move pages + - LP: #1451900 + * fuse: set stolen page uptodate + - LP: #1451900 + * dm thin: fix to consistently zero-fill reads to unprovisioned blocks + - LP: #1451900 + * dm: hold suspend_lock while suspending device during device deletion + - LP: #1451900 + * dm io: deal with wandering queue limits when handling REQ_DISCARD and + REQ_WRITE_SAME + - LP: #1451900 + * crypto: arm/aes update NEON AES module to latest OpenSSL version + - LP: #1451900 + * mac80211: drop unencrypted frames in mesh fwding + - LP: #1451900 + * mac80211: disable u-APSD queues by default + - LP: #1451900 + * ASoC: ak4671: Fix control-less DAPM routes + - LP: #1451900 + * ASoC: da732x: Fix control-less DAPM routes + - LP: #1451900 + * ASoC: sn95031: Fix control-less DAPM routes + - LP: #1451900 + * virtio_console: init work unconditionally + - LP: #1451900 + * virtio_console: avoid config access from irq + - LP: #1451900 + * clocksource: efm32: Fix a NULL pointer dereference + - LP: #1451900 + * x86/vdso: Fix the build on GCC5 + - LP: #1451900 + * ASoC: sgtl5000: remove useless register write clearing CHRGPUMP_POWERUP + - LP: #1451900 + * regmap: regcache-rbtree: Fix present bitmap resize + - LP: #1451900 + * regulator: Only enable disabled regulators on resume + - LP: #1451900 + * regulator: core: Fix enable GPIO reference counting + - LP: #1451900 + * vt6655: RFbSetPower fix missing rate RATE_12M + - LP: #1451900 + * x86/asm/entry/32: Fix user_mode() misuses + - LP: #1451900 + * ASoC: adav80x: Fix wrong value references for boolean kctl + - LP: #1451900 + * ASoC: ak4641: Fix wrong value references for boolean kctl + - LP: #1451900 + * ASoC: cs4271: Fix wrong value references for boolean kctl + - LP: #1451900 + * ASoC: pcm1681: Fix wrong value references for boolean kctl + - LP: #1451900 + * ASoC: tas5086: Fix wrong value references for boolean kctl + - LP: #1451900 + * ASoC: wm2000: Fix wrong value references for boolean kctl + - LP: #1451900 + * ASoC: wm8731: Fix wrong value references for boolean kctl + - LP: #1451900 + * ASoC: wm8903: Fix wrong value references for boolean kctl + - LP: #1451900 + * ASoC: wm8904: Fix wrong value references for boolean kctl + - LP: #1451900 + * ASoC: wm8955: Fix wrong value references for boolean kctl + - LP: #1451900 + * ASoC: wm8960: Fix wrong value references for boolean kctl + - LP: #1451900 + * crypto: aesni - fix memory usage in GCM decryption + - LP: #1451900 + * phy: Find the right match in devm_phy_destroy() + - LP: #1451900 + * x86/fpu: Avoid math_state_restore() without used_math() in + __restore_xstate_sig() + - LP: #1451900 + * x86/fpu: Drop_fpu() should not assume that tsk equals current + - LP: #1451900 + * can: kvaser_usb: Fix tx queue start/stop race conditions + - LP: #1451900 + * nl80211: ignore HT/VHT capabilities without QoS/WMM + - LP: #1451900 + * ALSA: hda - Treat stereo-to-mono mix properly + - LP: #1451900 + * pagemap: do not leak physical addresses to non-privileged userspace + - LP: #1451900 + * of/irq: Fix of_irq_parse_one() returned error codes + - LP: #1451900 + * iscsi-target: Avoid early conn_logout_comp for iser connections + - LP: #1451900 + * tcm_qla2xxx: Fix incorrect use of __transport_register_session + - LP: #1451900 + * target: Fix reference leak in target_get_sess_cmd() error path + - LP: #1451900 + * tcm_fc: missing curly braces in ft_invl_hw_context() + - LP: #1451900 + * target/pscsi: Fix NULL pointer dereference in get_device_type + - LP: #1451900 + * target: Fix virtual LUN=0 target_configure_device failure OOPs + - LP: #1451900 + * xfrm: release dst_orig in case of error in xfrm_lookup() + - LP: #1451900 + * dmaengine: dw: append MODULE_ALIAS for platform driver + - LP: #1451900 + * sparc32: destroy_context() and switch_mm() needs to disable interrupts. + - LP: #1451900 + * sparc: semtimedop() unreachable due to comparison error + - LP: #1451900 + * sparc: perf: Remove redundant perf_pmu_{en|dis}able calls + - LP: #1451900 + * sparc: perf: Make counting mode actually work + - LP: #1451900 + * sparc: Touch NMI watchdog when walking cpus and calling printk + - LP: #1451900 + * sparc64: Fix several bugs in memmove(). + - LP: #1451900 + * net: sysctl_net_core: check SNDBUF and RCVBUF for min length + - LP: #1451900 + * rds: avoid potential stack overflow + - LP: #1451900 + * inet_diag: fix possible overflow in inet_diag_dump_one_icsk() + - LP: #1451900 + * caif: fix MSG_OOB test in caif_seqpkt_recvmsg() + - LP: #1451900 + * rxrpc: bogus MSG_PEEK test in rxrpc_recvmsg() + - LP: #1451900 + * ipv6: fix backtracking for throw routes + - LP: #1451900 + * tcp: fix tcp fin memory accounting + - LP: #1451900 + * net: compat: Update get_compat_msghdr() to match + copy_msghdr_from_user() behaviour + - LP: #1451900 + * tcp: make connect() mem charging friendly + - LP: #1451900 + * Linux 3.13.11-ckt19 + - LP: #1451900 + + -- Luis Henriques Thu, 07 May 2015 14:47:02 +0100 + +linux (3.13.0-52.86) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1451288 + + [ Upstream Kernel Changes ] + + * audit: create private file name copies when auditing inodes + - LP: #1450442 + + -- Brad Figg Sun, 03 May 2015 18:36:19 -0700 + +linux (3.13.0-52.85) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1450101 + + [ Upstream Kernel Changes ] + + * fs: take i_mutex during prepare_binprm for set[ug]id executables + - LP: #1447373 + - CVE-2015-3339 + + -- Luis Henriques Fri, 24 Apr 2015 17:26:50 +0100 + +linux (3.13.0-51.84) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1444141 + * Merged back Ubuntu-3.13.0-49.83 security release + + -- Luis Henriques Tue, 14 Apr 2015 21:38:57 +0100 + +linux (3.13.0-50.82) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1442285 + + [ Andy Whitcroft ] + + * [Config] CONFIG_DEFAULT_MMAP_MIN_ADDR needs to match on armhf and arm64 + - LP: #1418140 + + [ Chris J Arges ] + + * [Config] CONFIG_PCIEASPM_DEBUG=y + - LP: #1398544 + + [ Upstream Kernel Changes ] + + * KEYS: request_key() should reget expired keys rather than give + EKEYEXPIRED + - LP: #1124250 + * audit: correctly record file names with different path name types + - LP: #1439441 + * KVM: x86: Check for nested events if there is an injectable interrupt + - LP: #1413540 + * be2iscsi: fix memory leak in error path + - LP: #1440156 + * block: remove old blk_iopoll_enabled variable + - LP: #1440156 + * be2iscsi: Fix handling timed out MBX completion from FW + - LP: #1440156 + * be2iscsi: Fix doorbell format for EQ/CQ/RQ s per SLI spec. + - LP: #1440156 + * be2iscsi: Fix the session cleanup when reboot/shutdown happens + - LP: #1440156 + * be2iscsi: Fix scsi_cmnd leakage in driver. + - LP: #1440156 + * be2iscsi : Fix DMA Out of SW-IOMMU space error + - LP: #1440156 + * be2iscsi: Fix retrieving MCCQ_WRB in non-embedded Mbox path + - LP: #1440156 + * be2iscsi: Fix exposing Host in sysfs after adapter initialization is + complete + - LP: #1440156 + * be2iscsi: Fix interrupt Coalescing mechanism. + - LP: #1440156 + * be2iscsi: Fix TCP parameters while connection offloading. + - LP: #1440156 + * be2iscsi: Fix memory corruption in MBX path + - LP: #1440156 + * be2iscsi: Fix destroy MCC-CQ before MCC-EQ is destroyed + - LP: #1440156 + * be2iscsi: add an missing goto in error path + - LP: #1440156 + * be2iscsi: remove potential junk pointer free + - LP: #1440156 + * be2iscsi: Fix memory leak in mgmt_set_ip() + - LP: #1440156 + * be2iscsi: Fix the sparse warning introduced in previous submission + - LP: #1440156 + * be2iscsi: Fix updating the boot enteries in sysfs + - LP: #1440156 + * be2iscsi: Fix processing CQE before connection resources are freed + - LP: #1440156 + * be2iscsi : Fix kernel panic during reboot/shutdown + - LP: #1440156 + * fixed invalid assignment of 64bit mask to host dma_boundary for scatter + gather segment boundary limit. + - LP: #1440156 + * quota: Store maximum space limit in bytes + - LP: #1441284 + * ip: zero sockaddr returned on error queue + - LP: #1441284 + * net: rps: fix cpu unplug + - LP: #1441284 + * ipv6: stop sending PTB packets for MTU < 1280 + - LP: #1441284 + * netxen: fix netxen_nic_poll() logic + - LP: #1441284 + * udp_diag: Fix socket skipping within chain + - LP: #1441284 + * ping: Fix race in free in receive path + - LP: #1441284 + * bnx2x: fix napi poll return value for repoll + - LP: #1441284 + * net: don't OOPS on socket aio + - LP: #1441284 + * bridge: dont send notification when skb->len == 0 in rtnl_bridge_notify + - LP: #1441284 + * ipv4: tcp: get rid of ugly unicast_sock + - LP: #1441284 + * ppp: deflate: never return len larger than output buffer + - LP: #1441284 + * net: sctp: fix passing wrong parameter header to param_type2af in + sctp_process_param + - LP: #1441284 + * ARM: pxa: add regulator_has_full_constraints to corgi board file + - LP: #1441284 + * ARM: pxa: add regulator_has_full_constraints to poodle board file + - LP: #1441284 + * ARM: pxa: add regulator_has_full_constraints to spitz board file + - LP: #1441284 + * hx4700: regulator: declare full constraints + - LP: #1441284 + * HID: input: fix confusion on conflicting mappings + - LP: #1441284 + * HID: fixup the conflicting keyboard mappings quirk + - LP: #1441284 + * megaraid_sas: disable interrupt_mask before enabling hardware + interrupts + - LP: #1441284 + * PCI: Generate uppercase hex for modalias var in uevent + - LP: #1441284 + * usb: core: buffer: smallest buffer should start at ARCH_DMA_MINALIGN + - LP: #1441284 + * tty/serial: at91: enable peripheral clock before accessing I/O + registers + - LP: #1441284 + * tty/serial: at91: fix error handling in atmel_serial_probe() + - LP: #1441284 + * axonram: Fix bug in direct_access + - LP: #1441284 + * ksoftirqd: Enable IRQs and call cond_resched() before poking RCU + - LP: #1441284 + * TPM: Add new TPMs to the tail of the list to prevent inadvertent change + of dev + - LP: #1441284 + * char: tpm: Add missing error check for devm_kzalloc + - LP: #1441284 + * tpm_tis: verify interrupt during init + - LP: #1441284 + * tpm: Fix NULL return in tpm_ibmvtpm_get_desired_dma + - LP: #1441284 + * tpm/tpm_i2c_stm_st33: Fix potential bug in tpm_stm_i2c_send + - LP: #1441284 + * tpm/tpm_i2c_stm_st33: Add status check when reading data on the FIFO + - LP: #1441284 + * mmc: sdhci-pxav3: fix unbalanced clock issues during probe + - LP: #1441284 + * iwlwifi: mvm: validate tid and sta_id in ba_notif + - LP: #1441284 + * power: bq24190: Fix ignored supplicants + - LP: #1441284 + * ARM: DRA7: hwmod: Fix boot crash with DEBUG_LL enabled on UART3 + - LP: #1441284 + * Bluetooth: ath3k: Add support of AR3012 bluetooth 13d3:3423 device + - LP: #1411193, #1441284 + * cfq-iosched: fix incorrect filing of rt async cfqq + - LP: #1441284 + * smack: fix possible use after frees in task_security() callers + - LP: #1441284 + * xfs: ensure buffer types are set correctly + - LP: #1441284 + * xfs: inode unlink does not set AGI buffer type + - LP: #1441284 + * xfs: set buf types when converting extent formats + - LP: #1441284 + * xfs: set superblock buffer type correctly + - LP: #1441284 + * btrfs: set proper message level for skinny metadata + - LP: #1441284 + * KVM: s390: base hrtimer on a monotonic clock + - LP: #1441284 + * PCI: Fix infinite loop with ROM image of size 0 + - LP: #1441284 + * USB: cp210x: add ID for RUGGEDCOM USB Serial Console + - LP: #1441284 + * clk: zynq: Force CPU_2X clock to be ungated + - LP: #1441284 + * mmc: sdhci-pxav3: Remove checks for mandatory host clock + - LP: #1441284 + * mmc: sdhci-pxav3: fix race between runtime pm and irq + - LP: #1441284 + * power_supply: 88pm860x: Fix leaked power supply on probe fail + - LP: #1441284 + * staging: comedi: comedi_compat32.c: fix COMEDI_CMD copy back + - LP: #1441284 + * mmc: sdhci-pxav3: fix setting of pdata->clk_delay_cycles + - LP: #1441284 + * ARM: 8284/1: sa1100: clear RCSR_SMR on resume + - LP: #1441284 + * usb: musb: omap2plus bus glue needs USB host support + - LP: #1441284 + * USB: add flag for HCDs that can't receive wakeup requests (isp1760-hcd) + - LP: #1441284 + * USB: fix use-after-free bug in usb_hcd_unlink_urb() + - LP: #1441284 + * iwlwifi: mvm: always use mac color zero + - LP: #1441284 + * iwlwifi: pcie: disable the SCD_BASE_ADDR when we resume from WoWLAN + - LP: #1441284 + * vt: provide notifications on selection changes + - LP: #1441284 + * tty: Prevent untrappable signals from malicious program + - LP: #1441284 + * cpufreq: Set cpufreq_cpu_data to NULL before putting kobject + - LP: #1441284 + * lmedm04: Fix usb_submit_urb BOGUS urb xfer, pipe 1 != type 3 in + interrupt urb + - LP: #1441284 + * mei: mask interrupt set bit on clean reset bit + - LP: #1441284 + * mei: me: release hw from reset only during the reset flow + - LP: #1441284 + * MIPS: KVM: Deliver guest interrupts after local_irq_disable() + - LP: #1441284 + * KVM: MIPS: Don't leak FPU/DSP to guest + - LP: #1441284 + * ALSA: hda - Add the pin fixup for HP Envy TS bass speaker + - LP: #1441284 + * ALSA: hda - Set up GPIO for Toshiba Satellite S50D + - LP: #1441284 + * xen/manage: Fix USB interaction issues when resuming + - LP: #1441284 + * drm/i915: Correct the IOSF Dev_FN field for IOSF transfers + - LP: #1441284 + * cfq-iosched: handle failure of cfq group allocation + - LP: #1441284 + * tracing: Fix unmapping loop in tracing_mark_write + - LP: #1441284 + * fsnotify: fix handling of renames in audit + - LP: #1441284 + * drm/radeon: workaround for CP HW bug on CIK + - LP: #1441284 + * drm/radeon: only enable kv/kb dpm interrupts once v3 + - LP: #1441284 + * NFSv4.1: Fix a kfree() of uninitialised pointers in + decode_cb_sequence_args + - LP: #1441284 + * cpufreq: speedstep-smi: enable interrupts when waiting + - LP: #1441284 + * mm/hugetlb: pmd_huge() returns true for non-present hugepage + - LP: #1441284 + * mm: cleanup follow_page_mask() + - LP: #1441284 + * mm/hugetlb: take page table lock in follow_huge_pmd() + - LP: #1441284 + * mm/hugetlb: fix getting refcount 0 page in hugetlb_fault() + - LP: #1441284 + * mm/hugetlb: add migration/hwpoisoned entry check in + hugetlb_change_protection + - LP: #1441284 + * mm/hugetlb: add migration entry check in __unmap_hugepage_range + - LP: #1441284 + * mm: softdirty: unmapped addresses between VMAs are clean + - LP: #1441284 + * proc/pagemap: walk page tables under pte lock + - LP: #1441284 + * mm: when stealing freepages, also take pages created by splitting buddy + page + - LP: #1441284 + * mm/mmap.c: fix arithmetic overflow in __vm_enough_memory() + - LP: #1441284 + * mm/nommu.c: fix arithmetic overflow in __vm_enough_memory() + - LP: #1441284 + * iscsi-target: Drop problematic active_ts_list usage + - LP: #1441284 + * target: Fix PR_APTPL_BUF_LEN buffer size limitation + - LP: #1441284 + * mm/compaction: fix wrong order check in compact_finished() + - LP: #1441284 + * mm/memory.c: actually remap enough memory + - LP: #1441284 + * mm: hwpoison: drop lru_add_drain_all() in __soft_offline_page() + - LP: #1441284 + * ARC: fix page address calculation if PAGE_OFFSET != LINUX_LINK_BASE + - LP: #1441284 + * drm/radeon/dp: Set EDP_CONFIGURATION_SET for bridge chips if necessary + - LP: #1441284 + * drm/radeon: fix voltage setup on hawaii + - LP: #1441284 + * ALSA: hdspm - Constrain periods to 2 on older cards + - LP: #1441284 + * jffs2: fix handling of corrupted summary length + - LP: #1441284 + * dm mirror: do not degrade the mirror on discard error + - LP: #1441284 + * dm io: reject unsupported DISCARD requests with EOPNOTSUPP + - LP: #1441284 + * target: Add missing WRITE_SAME end-of-device sanity check + - LP: #1441284 + * target: Check for LBA + sectors wrap-around in sbc_parse_cdb + - LP: #1441284 + * Btrfs: fix fsync data loss after adding hard link to inode + - LP: #1441284 + * Added Little Endian support to vtpm module + - LP: #1441284 + * sg: fix read() error reporting + - LP: #1441284 + * IB/qib: Do not write EEPROM + - LP: #1441284 + * md/raid5: Fix livelock when array is both resyncing and degraded. + - LP: #1441284 + * dm: fix a race condition in dm_get_md + - LP: #1441284 + * dm snapshot: fix a possible invalid memory access on unload + - LP: #1441284 + * cpufreq: s3c: remove incorrect __init annotations + - LP: #1441284 + * libceph: assert both regular and lingering lists in __remove_osd() + - LP: #1441284 + * libceph: change from BUG to WARN for __remove_osd() asserts + - LP: #1441284 + * libceph: fix double __remove_osd() problem + - LP: #1441284 + * MIPS: Export FP functions used by lose_fpu(1) for KVM + - LP: #1441284 + * kdb: fix incorrect counts in KDB summary command output + - LP: #1441284 + * blk-throttle: check stats_cpu before reading it from sysfs + - LP: #1441284 + * procfs: fix race between symlink removals and traversals + - LP: #1441284 + * autofs4 copy_dev_ioctl(): keep the value of ->size we'd used for + allocation + - LP: #1441284 + * pktgen: fix UDP checksum computation + - LP: #1441284 + * ipv6: fix ipv6_cow_metrics for non DST_HOST case + - LP: #1441284 + * clk-gate: fix bit # check in clk_register_gate() + - LP: #1441284 + * ALSA: off by one bug in snd_riptide_joystick_probe() + - LP: #1441284 + * ath5k: fix spontaneus AR5312 freezes + - LP: #1441284 + * pinctrl: pinctrl-imx: don't use invalid value of conf_reg + - LP: #1441284 + * ALSA: hda - Add one more node in the EAPD supporting candidate list + - LP: #1436745, #1441284 + * ALSA: hda - Add pin configs for ASUS mobo with IDT 92HD73XX codec + - LP: #1441284 + * drm/i915/bdw: PCI IDs ending in 0xb are ULT. + - LP: #1441284 + * xfs: Fix quota type in quota structures when reusing quota file + - LP: #1441284 + * gpiolib: of: allow of_gpiochip_find_and_xlate to find more than one + chip per node + - LP: #1441284 + * gpio: tps65912: fix wrong container_of arguments + - LP: #1441284 + * ALSA: pcm: Don't leave PREPARED state after draining + - LP: #1441284 + * metag: Fix KSTK_EIP() and KSTK_ESP() macros + - LP: #1441284 + * md/raid1: fix read balance when a drive is write-mostly. + - LP: #1441284 + * drm/radeon: use drm_mode_vrefresh() rather than mode->vrefresh + - LP: #1441284 + * drm/radeon: fix 1 RB harvest config setup for TN/RL + - LP: #1441284 + * arm64: compat Fix siginfo_t -> compat_siginfo_t conversion on big + endian + - LP: #1441284 + * nilfs2: fix potential memory overrun on inode + - LP: #1441284 + * HID: i2c-hid: Limit reads to wMaxInputLength bytes for input events + - LP: #1441284 + * Linux 3.13.11-ckt18 + - LP: #1441284 + * ipv6: Don't reduce hop limit for an interface + - LP: #1441103 + - CVE-2015-2922 + * x86/microcode/intel: Guard against stack overflow in the loader + - LP: #1438504 + - CVE-2015-2666 + + -- Brad Figg Thu, 09 Apr 2015 10:06:28 -0700 + +linux (3.13.0-49.83) trusty; urgency=low + + [ Upstream Kernel Changes ] + + * powerpc/perf: Cap 64bit userspace backtraces to PERF_MAX_STACK_DEPTH + - LP: #1442180 + + -- Luis Henriques Fri, 10 Apr 2015 18:46:02 +0100 + +linux (3.13.0-49.81) trusty; urgency=low + + [ Kamal Mostafa ] + + * Release Tracking Bug + - LP: #1436016 + + [ Alex Hung ] + + * SAUCE: ACPI / blacklist: blacklist Win8 OSI for HP Pavilion dv6 + - LP: #1416940 + + [ Andy Whitcroft ] + + * [Packaging] generate live watchdog blacklists + - LP: #1432837 + + [ Ben Widawsky ] + + * SAUCE: i915_bdw: drm/i915/bdw: enable eDRAM. + - LP: #1430855 + + [ Chris J Arges ] + + * [Config] Add ibmvfc to d-i + - LP: #1416001 + + [ Seth Forshee ] + + * [Config] updateconfigs - enable X86_UP_APIC_MSI + + [ Upstream Kernel Changes ] + + * net: add sysfs helpers for netdev_adjacent logic + - LP: #1410852 + * net: Mark functions as static in core/dev.c + - LP: #1410852 + * net: rename sysfs symlinks on device name change + - LP: #1410852 + * btrfs: fix null pointer dereference in clone_fs_devices when name is + null + - LP: #1429804 + * cdc-acm: add sanity checks + - LP: #1413992 + * x86: thinkpad_acpi.c: fixed spacing coding style issue + - LP: #1417915 + * thinkpad_acpi: support new BIOS version string pattern + - LP: #1417915 + * net: sctp: fix slab corruption from use after free on INIT collisions + - LP: #1416506 + - CVE-2015-1421 + * ipv4: try to cache dst_entries which would cause a redirect + - LP: #1420027 + - CVE-2015-1465 + * x86, mm/ASLR: Fix stack randomization on 64-bit systems + - LP: #1423757 + - CVE-2015-1593 + * net: llc: use correct size for sysctl timeout entries + - LP: #1425271 + - CVE-2015-2041 + * net: rds: use correct size for max unacked packets and bytes + - LP: #1425274 + - CVE-2015-2042 + * Btrfs: clear compress-force when remounting with compress option + - LP: #1434183 + * ext4: merge uninitialized extents + - LP: #1430184 + * btrfs: filter invalid arg for btrfs resize + - LP: #1435441 + * Bluetooth: Add firmware update for Atheros 0cf3:311f + * Bluetooth: btusb: Add IMC Networks (Broadcom based) + * Bluetooth: sort the list of IDs in the source code + * Bluetooth: append new supported device to the list [0b05:17d0] + * Bluetooth: Add support for Intel bootloader devices + * Bluetooth: Ignore isochronous endpoints for Intel USB bootloader + * Bluetooth: Add support for Acer [13D3:3432] + * Bluetooth: Add support for Broadcom device of Asus Z97-DELUXE + motherboard + * Add a new PID/VID 0227/0930 for AR3012. + * Bluetooth: Add support for Acer [0489:e078] + * Bluetooth: Add USB device 04ca:3010 as Atheros AR3012 + * x86: mm: move mmap_sem unlock from mm_fault_error() to caller + * vm: add VM_FAULT_SIGSEGV handling support + * vm: make stack guard page errors return VM_FAULT_SIGSEGV rather than + SIGBUS + * spi/pxa2xx: Clear cur_chip pointer before starting next message + * spi: dw: Fix detecting FIFO depth + * spi: dw-mid: fix FIFO size + * ASoC: wm8960: Fix capture sample rate from 11250 to 11025 + * regulator: core: fix race condition in regulator_put() + * ASoC: omap-mcbsp: Correct CBM_CFS dai format configuration + * can: c_can: end pending transmission on network stop (ifdown) + * nfs: fix dio deadlock when O_DIRECT flag is flipped + * NFSv4.1: Fix an Oops in nfs41_walk_client_list + * Input: i8042 - add noloop quirk for Medion Akoya E7225 (MD98857) + * mac80211: properly set CCK flag in radiotap + * nl80211: fix per-station group key get/del and memory leak + * i2c: s3c2410: fix ABBA deadlock by keeping clock prepared + * usb-storage/SCSI: blacklist FUA on JMicron 152d:2566 USB-SATA + controller + * drm/i915: Only fence tiled region of object. + * drm/i915: Fix and clean BDW PCH identification + * drm/i915: BDW Fix Halo PCI IDs marked as ULT. + * ALSA: seq-dummy: remove deadlock-causing events on close + * drivers/rtc/rtc-s5m.c: terminate s5m_rtc_id array with empty element + * drivers: net: cpsw: discard dual emac default vlan configuration + * can: kvaser_usb: Do not sleep in atomic context + * can: kvaser_usb: Send correct context to URB completion + * can: kvaser_usb: Retry the first bulk transfer on -ETIMEDOUT + * can: kvaser_usb: Fix state handling upon BUS_ERROR events + * quota: Switch ->get_dqblk() and ->set_dqblk() to use bytes as space + units + * rbd: fix rbd_dev_parent_get() when parent_overlap == 0 + * rbd: drop parent_ref in rbd_dev_unprobe() unconditionally + * dm cache: fix missing ERR_PTR returns and handling + * dm thin: don't allow messages to be sent to a pool target in READ_ONLY + or FAIL mode + * net: cls_bpf: fix size mismatch on filter preparation + * net: cls_bpf: fix auto generation of per list handles + * ipv6: replacing a rt6_info needs to purge possible propagated rt6_infos + too + * perf: Tighten (and fix) the grouping condition + * arc: mm: Fix build failure + * MIPS: IRQ: Fix disable_irq on CPU IRQs + * Complete oplock break jobs before closing file handle + * smpboot: Add missing get_online_cpus() in + smpboot_register_percpu_thread() + * ASoC: atmel_ssc_dai: fix start event for I2S mode + * spi: fsl-dspi: Fix memory leak + * spi: spi-fsl-dspi: Remove usage of devm_kzalloc + * ALSA: ak411x: Fix stall in work callback + * lib/checksum.c: fix carry in csum_tcpudp_nofold + * MIPS: Fix kernel lockup or crash after CPU offline/online + * gpio: sysfs: fix memory leak in gpiod_export_link + * gpio: sysfs: fix memory leak in gpiod_sysfs_set_active_low + * PCI: Add NEC variants to Stratus ftServer PCIe DMI check + * ASoC: sgtl5000: add delay before first I2C access + * PCI: Handle read-only BARs on AMD CS553x devices + * mm: pagewalk: call pte_hole() for VM_PFNMAP during walk_page_range + * nilfs2: fix deadlock of segment constructor over I_SYNC flag + * tcp: ipv4: initialize unicast_sock sk_pacing_rate + * caif: remove wrong dev_net_set() call + * qlge: Fix qlge_update_hw_vlan_features to handle if interface is down + * ip6_gre: fix endianness errors in ip6gre_err + * spi: dw: revisit FIFO size detection again + * Linux 3.13.11-ckt17 + + -- Kamal Mostafa Tue, 24 Mar 2015 11:58:44 -0700 + +linux (3.13.0-48.80) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1431263 + * Merged back all changes that were in Ubuntu-3.13.0-47.78 + + [ Upstream Kernel Changes ] + + * xfs: remote attribute overwrite causes transaction overrun + - LP: #1429821 + - CVE-2015-0274 + + -- Luis Henriques Thu, 12 Mar 2015 10:21:27 +0000 + +linux (3.13.0-47.78) trusty; urgency=low + + [ Seth Forshee ] + + * Release Tracking Bug + - LP: #1427733 + + [ Rodrigo Vivi ] + + * SAUCE: drm/i915: Fix and clean BDW PCH identification + - LP: #1423292 + * SAUCE: drm/i915: BDW Fix Halo PCI IDs marked as ULT. + - LP: #1423292 + + [ Upstream Kernel Changes ] + + * ext4: prevent bugon on race between write/fcntl + * Bluetooth: ath3k: workaround the compatibility issue with xHCI + controller + - LP: #1400215 + * openvswitch: Silence RCU lockdep checks from flow lookup. + - LP: #1408972 + * openvswitch: Use exact lookup for flow_get and flow_del. + - LP: #1408972 + * splice: Apply generic position and size checks to each write + - LP: #1416498 + - CVE-2014-7822 + * ALSA: hda - enable mute led quirk for one more hp machine. + - LP: #1410704 + * crypto: prefix module autoloading with "crypto-" + - LP: #1427438 + * crypto: add missing crypto module aliases + - LP: #1427438 + * crypto: include crypto- module prefix in template + - LP: #1427438 + * crypto: crc32c - add missing crypto module alias + - LP: #1427438 + * drm/i915: Invalidate media caches on gen7 + - LP: #1427438 + * drm/i915: Force the CS stall for invalidate flushes + - LP: #1427438 + * audit: restore AUDIT_LOGINUID unset ABI + - LP: #1427438 + * parisc: fix out-of-register compiler error in ldcw inline assembler + function + - LP: #1427438 + * kvm: x86: drop severity of "generation wraparound" message + - LP: #1427438 + * udf: Verify i_size when loading inode + - LP: #1427438 + * udf: Verify symlink size before loading it + - LP: #1427438 + * udf: Check path length when reading symlink + - LP: #1427438 + * udf: Check component length before reading it + - LP: #1427438 + * crypto: af_alg - fix backlog handling + - LP: #1427438 + * ASoC: dwc: Ensure FIFOs are flushed to prevent channel swap + - LP: #1427438 + * video/logo: prevent use of logos after they have been freed + - LP: #1427438 + * video/fbdev: fix defio's fsync + - LP: #1427438 + * Add USB_EHCI_EXYNOS to multi_v7_defconfig + - LP: #1427438 + * drm/i915: Swap primary planes on gen2 for FBC + - LP: #1427438 + * drm/i915: Don't swap planes on 830M + - LP: #1427438 + * drm/i915: Don't call intel_prepare_page_flip() multiple times on gen2-4 + - LP: #1427438 + * x86, vdso: Use asm volatile in __getcpu + - LP: #1427438 + * drivers: net: cpsw: enable interrupts after napi enable and clearing + previous interrupts + - LP: #1427438 + * net: ethernet: cpsw: fix hangs with interrupts + - LP: #1427438 + * ALSA: hda - Fix wrong gpio_dir & gpio_mask hint setups for IDT/STAC + codecs + - LP: #1427438 + * drm/radeon: KV has three PPLLs (v2) + - LP: #1427438 + * drm/radeon: properly filter DP1.2 4k modes on non-DP1.2 hw + - LP: #1427438 + * virtio_pci: defer kfree until release callback + - LP: #1427438 + * virtio_pci: document why we defer kfree + - LP: #1427438 + * mm: propagate error from stack expansion even for guard page + - LP: #1427438 + * ALSA: hda - Add new GPU codec ID to snd-hda + - LP: #1427438 + * ALSA: hda - Add new GPU codec ID 0x10de0070 to snd-hda + - LP: #1427438 + * ALSA: hda - Add new GPU codec ID 0x10de0072 to snd-hda + - LP: #1427438 + * vfio-pci: Fix the check on pci device type in vfio_pci_probe() + - LP: #1427438 + * mm: prevent endless growth of anon_vma hierarchy + - LP: #1427438 + * mm: protect set_page_dirty() from ongoing truncation + - LP: #1427438 + * mm, vmscan: prevent kswapd livelock due to pfmemalloc-throttled process + being killed + - LP: #1427438 + * HID: roccat: potential out of bounds in pyra_sysfs_write_settings() + - LP: #1427438 + * mm: Don't count the stack guard page towards RLIMIT_STACK + - LP: #1427438 + * mm: fix corner case in anon_vma endless growing prevention + - LP: #1427438 + * usb: musb: stuff leak of struct usb_hcd + - LP: #1427438 + * usb: gadget: udc: atmel: change setting for DMA + - LP: #1427438 + * usb: gadget: udc: atmel: fix possible IN hang issue + - LP: #1427438 + * ARM: clk-imx6q: fix video divider for rev T0 1.0 + - LP: #1427438 + * ARM: dts: imx25: Fix the SPI1 clocks + - LP: #1427438 + * USB: cp210x: fix ID for production CEL MeshConnect USB Stick + - LP: #1427438 + * USB: keyspan: fix null-deref at probe + - LP: #1427438 + * ARM: omap5/dra7xx: Fix frequency typos + - LP: #1427438 + * LOCKD: Fix a race when initialising nlmsvc_timeout + - LP: #1427438 + * NFSv4.1: Fix client id trunking on Linux + - LP: #1427438 + * USB: cp210x: add IDs for CEL USB sticks and MeshWorks devices + - LP: #1427438 + * USB: qcserial/option: make AT URCs work for Sierra Wireless MC73xx + - LP: #1427438 + * USB: EHCI: fix initialization bug in iso_stream_schedule() + - LP: #1427438 + * OHCI: add a quirk for ULi M5237 blocking on reset + - LP: #1427438 + * mei: clean reset bit before reset + - LP: #1427438 + * target: Drop arbitrary maximum I/O size limit + - LP: #1427438 + * usb: gadget: udc: atmel: fix possible oops when unloading module + - LP: #1427438 + * USB: console: fix uninitialised ldisc semaphore + - LP: #1427438 + * USB: console: fix potential use after free + - LP: #1427438 + * mmc: sdhci: Fix sleep in atomic after inserting SD card + - LP: #1427438 + * usb: dwc3: gadget: Fix TRB preparation during SG + - LP: #1427438 + * usb: dwc3: gadget: Stop TRB preparation after limit is reached + - LP: #1427438 + * ftrace/jprobes/x86: Fix conflict between jprobes and function graph + tracing + - LP: #1427438 + * clocksource: exynos_mct: Fix bitmask regression for exynos4_mct_write + - LP: #1427438 + * time: settimeofday: Validate the values of tv from user + - LP: #1427438 + * Input: i8042 - reset keyboard to fix Elantech touchpad detection + - LP: #1427438 + * drm/radeon: fix VM flush on cayman/aruba (v3) + - LP: #1427438 + * drm/radeon: fix VM flush on SI (v3) + - LP: #1427438 + * drm/radeon: fix VM flush on CIK (v3) + - LP: #1427438 + * drm/radeon: add a dpm quirk list + - LP: #1427438 + * Input: elantech - support new ICs types for version 4 + - LP: #1427438 + * Input: I8042 - add Acer Aspire 7738 to the nomux list + - LP: #1427438 + * drm/i915: Fix mutex->owner inspection race under DEBUG_MUTEXES + - LP: #1427438 + * drm/radeon: add si dpm quirk list + - LP: #1427438 + * pinctrl: Fix two deadlocks + - LP: #1427438 + * gpio / ACPI: register to ACPI events automatically + - LP: #1427438 + * gpio: fix memory and reference leaks in gpiochip_add error path + - LP: #1427438 + * gpio: fix sleep-while-atomic in gpiochip_remove + - LP: #1427438 + * can: dev: fix crtlmode_supported check + - LP: #1427438 + * can: kvaser_usb: Don't free packets when tight on URBs + - LP: #1427438 + * can: kvaser_usb: Reset all URB tx contexts upon channel close + - LP: #1427438 + * can: kvaser_usb: Don't send a RESET_CHIP for non-existing channels + - LP: #1427438 + * gpio: sysfs: fix gpio-chip device-attribute leak + - LP: #1427438 + * gpio: sysfs: fix gpio device-attribute leak + - LP: #1427438 + * gpiolib: of: Correct error handling in of_get_named_gpiod_flags + - LP: #1427438 + * ALSA: usb-audio: Add mic volume fix quirk for Logitech Webcam C210 + - LP: #1427438 + * fix deadlock in cifs_ioctl_clone() + - LP: #1427438 + * ipr: wait for aborted command responses + - LP: #1427438 + * libata: allow sata_sil24 to opt-out of tag ordered submission + - LP: #1427438 + * scripts/recordmcount.pl: There is no -m32 gcc option on Super-H anymore + - LP: #1427438 + * libata: prevent HSM state change race between ISR and PIO + - LP: #1427438 + * bus: mvebu-mbus: fix support of MBus window 13 + - LP: #1427438 + * ARM: dts: imx25: Fix PWM "per" clocks + - LP: #1427438 + * x86, boot: Skip relocs when load address unchanged + - LP: #1427438 + * x86, hyperv: Mark the Hyper-V clocksource as being continuous + - LP: #1427438 + * x86, tls, ldt: Stop checking lm in LDT_empty + - LP: #1427438 + * x86, tls: Interpret an all-zero struct user_desc as "no segment" + - LP: #1427438 + * x86/apic: Re-enable PCI_MSI support for non-SMP X86_32 + - LP: #1427438 + * x86/tsc: Change Fast TSC calibration failed from error to info + - LP: #1427438 + * dm cache: share cache-metadata object across inactive and active DM + tables + - LP: #1427438 + * dm cache: fix problematic dual use of a single migration count variable + - LP: #1427438 + * time: adjtimex: Validate the ADJ_FREQUENCY values + - LP: #1427438 + * ntp: Fixup adjtimex freq validation on 32-bit systems + - LP: #1427438 + * Linux 3.13.11-ckt16 + - LP: #1427438 + + -- Seth Forshee Tue, 03 Mar 2015 09:33:08 -0600 + +linux (3.13.0-46.79) trusty; urgency=low + + [ Upstream Kernel Changes ] + + * IB/core: Prevent integer overflow in ib_umem_get address arithmetic + - LP: #1413741 + - CVE-2015-8159 + + -- Luis Henriques Mon, 09 Mar 2015 17:42:23 +0000 + +linux (3.13.0-46.77) trusty; urgency=low + + [ Seth Forshee ] + + * Revert "ipv6: fix swapped ipv4/ipv6 mtu_reduced callbacks" + - LP: #1404558 + * Release Tracking Bug + - LP: #1427292 + + -- Seth Forshee Mon, 02 Mar 2015 11:33:20 -0600 + +linux (3.13.0-46.76) trusty; urgency=low + + [ Kamal Mostafa ] + + * Release Tracking Bug + - LP: #1426060 + + [ Upstream Kernel Changes ] + + * clocksource: arch_timer: Only use the virtual counter (CNTVCT) on arm64 + - LP: #1426043 + + -- Kamal Mostafa Thu, 26 Feb 2015 09:53:44 -0800 + +linux (3.13.0-46.75) trusty; urgency=low + + [ Seth Forshee ] + + * Release Tracking Bug + - LP: #1419963 + + [ Andy Whitcroft ] + + * [Debian] arm64 -- build ubuntu drivers + - LP: #1411284 + * hyper-v -- fix comment handing in /etc/network/interfaces + - LP: #1413020 + + [ Kamal Mostafa ] + + * [Packaging] force "dpkg-source -I -i" behavior + + [ Upstream Kernel Changes ] + + * Revert "[SCSI] mpt2sas: Remove phys on topology change." + - LP: #1419838 + * Revert "[SCSI] mpt3sas: Remove phys on topology change" + - LP: #1419838 + * Btrfs: fix transaction abortion when remounting btrfs from RW to RO + - LP: #1411320 + * Btrfs: fix a crash of clone with inline extents's split + - LP: #1413129 + * net/mlx4_en: Add VXLAN ndo calls to the PF net device ops too + - LP: #1407760 + * KVM: x86: SYSENTER emulation is broken + - LP: #1414651 + - CVE-2015-0239 + * powerpc/xmon: Fix another endiannes issue in RTAS call from xmon + - LP: #1415919 + * ipv6: fix swapped ipv4/ipv6 mtu_reduced callbacks + - LP: #1404558, #1419837 + * usb: gadget: at91_udc: move prepare clk into process context + - LP: #1419837 + * KVM: x86: Fix far-jump to non-canonical check + - LP: #1419837 + * x86/tls: Validate TLS entries to protect espfix + - LP: #1419837 + * userns: Check euid no fsuid when establishing an unprivileged uid + mapping + - LP: #1419837 + * userns: Document what the invariant required for safe unprivileged + mappings. + - LP: #1419837 + * userns: Only allow the creator of the userns unprivileged mappings + - LP: #1419837 + * x86_64, switch_to(): Load TLS descriptors before switching DS and ES + - LP: #1419837 + * isofs: Fix infinite looping over CE entries + - LP: #1419837 + * batman-adv: Calculate extra tail size based on queued fragments + - LP: #1419837 + * KEYS: close race between key lookup and freeing + - LP: #1419837 + * isofs: Fix unchecked printing of ER records + - LP: #1419837 + * x86_64, vdso: Fix the vdso address randomization algorithm + - LP: #1419837 + * groups: Consolidate the setgroups permission checks + - LP: #1419837 + * userns: Don't allow setgroups until a gid mapping has been setablished + - LP: #1419837 + * userns: Don't allow unprivileged creation of gid mappings + - LP: #1419837 + * move d_rcu from overlapping d_child to overlapping d_alias + - LP: #1419837 + * deal with deadlock in d_walk() + - LP: #1419837 + * Linux 3.13.11-ckt14 + - LP: #1419837 + * gre: fix the inner mac header in nbma tunnel xmit path + - LP: #1419838 + * netlink: Always copy on mmap TX. + - LP: #1419838 + * netlink: Don't reorder loads/stores before marking mmap netlink frame + as available + - LP: #1419838 + * in6: fix conflict with glibc + - LP: #1419838 + * tg3: tg3_disable_ints using uninitialized mailbox value to disable + interrupts + - LP: #1419838 + * batman-adv: Unify fragment size calculation + - LP: #1419838 + * batman-adv: avoid NULL dereferences and fix if check + - LP: #1419838 + * net: Fix stacked vlan offload features computation + - LP: #1419838 + * net: Reset secmark when scrubbing packet + - LP: #1419838 + * tcp: Do not apply TSO segment limit to non-TSO packets + - LP: #1419838 + * alx: fix alx_poll() + - LP: #1419838 + * team: avoid possible underflow of count_pending value for notify_peers + and mcast_rejoin + - LP: #1419838 + * enic: fix rx skb checksum + - LP: #1419838 + * net/core: Handle csum for CHECKSUM_COMPLETE VXLAN forwarding + - LP: #1419838 + * macvlan: unregister net device when netdev_upper_dev_link() fails + - LP: #1419838 + * netfilter: conntrack: disable generic tracking for known protocols + - LP: #1419838 + * xen-netfront: Fix handling packets on compound pages with skb_linearize + - LP: #1317811, #1419838 + * xen-netfront: use correct linear area after linearizing an skb + - LP: #1317811, #1419838 + * eCryptfs: Force RO mount when encrypted view is enabled + - LP: #1419838 + * smiapp: Take mutex during PLL update in sensor initialisation + - LP: #1419838 + * smiapp-pll: Correct clock debug prints + - LP: #1419838 + * sound: simplify au0828 quirk table + - LP: #1419838 + * sound: Update au0828 quirks table + - LP: #1419838 + * af9005: fix kernel panic on init if compiled without IR + - LP: #1419838 + * writeback: fix a subtle race condition in I_DIRTY clearing + - LP: #1419838 + * usb: renesas_usbhs: gadget: fix NULL pointer dereference in + ep_disable() + - LP: #1419838 + * KVM: s390: flush CPU on load control + - LP: #1419838 + * UBI: Fix double free after do_sync_erase() + - LP: #1419838 + * UBI: Fix invalid vfree() + - LP: #1419838 + * Drivers: hv: vmbus: Fix a race condition when unregistering a device + - LP: #1419838 + * driver core: Fix unbalanced device reference in drivers_probe + - LP: #1419838 + * PCI: Restore detection of read-only BARs + - LP: #1419838 + * scsi: correct return values for .eh_abort_handler implementations + - LP: #1419838 + * drm/radeon: fix typo in CI dpm disable + - LP: #1419838 + * ARM: tegra: Re-add removed SoC id macro to tegra_resume() + - LP: #1419838 + * arm64: Add COMPAT_HWCAP_LPAE + - LP: #1419838 + * genhd: check for int overflow in disk_expand_part_tbl() + - LP: #1419838 + * ftrace/x86: Add frames pointers to trampoline as necessary + - LP: #1419838 + * drm/ttm: Avoid memory allocation from shrinker functions. + - LP: #1419838 + * ASoC: sigmadsp: Refuse to load firmware files with a non-supported + version + - LP: #1419838 + * drm/radeon: work around a hw bug in MGCG on CIK + - LP: #1419838 + * Btrfs: make sure we wait on logged extents when fsycning two subvols + - LP: #1419838 + * Btrfs: do not move em to modified list when unpinning + - LP: #1419838 + * megaraid_sas: corrected return of wait_event from abort frame path + - LP: #1419838 + * ASoC: max98090: Fix ill-defined sidetone route + - LP: #1419838 + * blk-mq: use 'nr_cpu_ids' as highest CPU ID count for hwq <-> cpu map + - LP: #1419838 + * nfs41: fix nfs4_proc_layoutget error handling + - LP: #1419838 + * cdc-acm: memory leak in error case + - LP: #1419838 + * USB: cdc-acm: check for valid interfaces + - LP: #1419838 + * x86/asm/traps: Disable tracing and kprobes in fixup_bad_iret and + sync_regs + - LP: #1419838 + * uvcvideo: Fix destruction order in uvc_delete() + - LP: #1419838 + * HID: i2c-hid: fix race condition reading reports + - LP: #1419838 + * mfd: tc6393xb: Fail ohci suspend if full state restore is required + - LP: #1419838 + * serial: samsung: wait for transfer completion before clock disable + - LP: #1419838 + * mmc: dw_mmc: avoid write to CDTHRCTL on older versions + - LP: #1419838 + * Bluetooth: ath3k: Add support of MCI 13d3:3408 bt device + - LP: #1419838 + * eCryptfs: Remove buggy and unnecessary write in file name decode + routine + - LP: #1419838 + * n_tty: Fix read_buf race condition, increment read_head after pushing + data + - LP: #1419838 + * dm cache: only use overwrite optimisation for promotion when in + writeback mode + - LP: #1419838 + * dm cache: dirty flag was mistakenly being cleared when promoting via + overwrite + - LP: #1419838 + * dm bufio: fix memleak when using a dm_buffer's inline bio + - LP: #1419838 + * ath9k_hw: fix hardware queue allocation + - LP: #1419838 + * ath9k: fix BE/BK queue order + - LP: #1419838 + * ath5k: fix hardware queue index assignment + - LP: #1419838 + * tcm_loop: Fix wrong I_T nexus association + - LP: #1419838 + * iwlwifi: dvm: fix flush support for old firmware + - LP: #1419838 + * iommu/vt-d: Fix an off-by-one bug in __domain_mapping() + - LP: #1419838 + * dm crypt: use memzero_explicit for on-stack buffer + - LP: #1419838 + * mnt: Implicitly add MNT_NODEV on remount when it was implicitly added + by mount + - LP: #1419838 + * mnt: Update unprivileged remount test + - LP: #1419838 + * umount: Disallow unprivileged mount force + - LP: #1419838 + * md/raid56: Don't perform reads to support writes until stripe is ready. + - LP: #1419838 + * md/raid5: avoid livelock caused by non-aligned writes. + - LP: #1419838 + * md/raid5: fetch_block must fetch all the blocks handle_stripe_dirtying + wants. + - LP: #1419838 + * drm/i915: Disallow pin ioctl completely for kms drivers + - LP: #1419838 + * drm/vmwgfx: Don't use memory accounting for kernel-side fence objects + - LP: #1419838 + * drm/vmwgfx: Fix fence event code + - LP: #1419838 + * hp_accel: Add support for HP ZBook 15 + - LP: #1419838 + * drm/radeon: check the right ring in radeon_evict_flags() + - LP: #1419838 + * swiotlb-xen: pass dev_addr to xen_dma_unmap_page and + xen_dma_sync_single_for_cpu + - LP: #1419838 + * swiotlb-xen: call xen_dma_sync_single_for_device when appropriate + - LP: #1419838 + * clocksource: arch_timer: Fix code to use physical timers when requested + - LP: #1419838 + * ALSA: hda - Fix built-in mic at resume on Lenovo Ideapad S210 + - LP: #1419838 + * can: peak_usb: fix memset() usage + - LP: #1419838 + * can: peak_usb: fix cleanup sequence order in case of error during init + - LP: #1419838 + * ALSA: usb-audio: Don't resubmit pending URBs at MIDI error recovery + - LP: #1419838 + * KEYS: Fix stale key registration at error path + - LP: #1419838 + * thermal: Fix error path in thermal_init() + - LP: #1419838 + * blk-mq: Fix a use-after-free + - LP: #1419838 + * fs: nfsd: Fix signedness bug in compare_blob + - LP: #1419838 + * nfsd4: fix xdr4 inclusion of escaped char + - LP: #1419838 + * userns: Rename id_map_mutex to userns_state_mutex + - LP: #1419838 + * drm/i915: Don't complain about stolen conflicts on gen3 + - LP: #1419838 + * ALSA: hda - Add EAPD fixup for ASUS Z99He laptop + - LP: #1419838 + * Btrfs: fix fs corruption on transaction abort if device supports + discard + - LP: #1419838 + * ncpfs: return proper error from NCP_IOC_SETROOT ioctl + - LP: #1419838 + * drivers/rtc/rtc-sirfsoc.c: move hardware initilization earlier in probe + - LP: #1419838 + * rtc: omap: fix missing wakealarm attribute + - LP: #1419838 + * exit: pidns: alloc_pid() leaks pid_namespace if child_reaper is exiting + - LP: #1419838 + * perf/x86/intel/uncore: Make sure only uncore events are collected + - LP: #1419838 + * perf: Fix events installation during moving group + - LP: #1419838 + * KVM: nVMX: Disable unrestricted mode if ept=0 + - LP: #1419838 + * drm/i915: save/restore GMBUS freq across suspend/resume on gen4 + - LP: #1419838 + * pstore-ram: Fix hangs by using write-combine mappings + - LP: #1419838 + * pstore-ram: Allow optional mapping with pgprot_noncached + - LP: #1419838 + * userns: Add a knob to disable setgroups on a per user namespace basis + - LP: #1419838 + * userns: Allow setting gid_maps without privilege when setgroups is + disabled + - LP: #1419838 + * userns: Unbreak the unprivileged remount tests + - LP: #1419838 + * HID: i2c-hid: prevent buffer overflow in early IRQ + - LP: #1419838 + * mac80211: fix multicast LED blinking and counter + - LP: #1419838 + * cfg80211: avoid mem leak on driver hint set + - LP: #1419838 + * mtd: tests: abort torturetest on erase errors + - LP: #1419838 + * tracing/sched: Check preempt_count() for current when reading + task->state + - LP: #1419838 + * iscsi,iser-target: Initiate termination only once + - LP: #1419838 + * iser-target: Fix flush + disconnect completion handling + - LP: #1419838 + * iser-target: Parallelize CM connection establishment + - LP: #1419838 + * iser-target: Fix connected_handler + teardown flow race + - LP: #1419838 + * iser-target: Handle ADDR_CHANGE event for listener cm_id + - LP: #1419838 + * iser-target: Fix implicit termination of connections + - LP: #1419838 + * genirq: Prevent proc race against freeing of irq descriptors + - LP: #1419838 + * x86/tls: Disallow unusual TLS segments + - LP: #1419838 + * powerpc/powernv: Switch off MMU before entering nap/sleep/rvwinkle mode + - LP: #1419838 + * ARC: [nsimosci] move peripherals to match model to FPGA + - LP: #1419838 + * scsi: blacklist RSOC for Microsoft iSCSI target devices + - LP: #1419838 + * rtlwifi: rtl8192ce: Set fw_ready flag + - LP: #1419838 + * iscsi-target: Fail connection on short sendmsg writes + - LP: #1419838 + * mac80211: free management frame keys when removing station + - LP: #1419838 + * ceph: do_sync is never initialized + - LP: #1419838 + * x86/tls: Don't validate lm in set_thread_area() after all + - LP: #1419838 + * ALSA: usb-audio: extend KEF X300A FU 10 tweak to Arcam rPAC + - LP: #1419838 + * mnt: Fix a memory stomp in umount + - LP: #1419838 + * ocfs2: fix journal commit deadlock + - LP: #1419838 + * tick/powerclamp: Remove tick_nohz_idle abuse + - LP: #1419838 + * Linux 3.13.11-ckt15 + - LP: #1419838 + + [ Xiong Zhang ] + + * SAUCE: ubuntu/i915: power on sink if dpcd read fail + - LP: #1416451 + + -- Seth Forshee Mon, 09 Feb 2015 14:08:50 -0600 + +linux (3.13.0-45.74) trusty; urgency=low + + [ Seth Forshee ] + + * Release Tracking Bug + - LP: #1410384 + + [ Jesse Barnes ] + + * SAUCE: drm/i915/vlv: assert and de-assert sideband reset at boot and + resume v3 + - LP: #1401963 + + [ K. Y. Srinivasan ] + + * SAUCE: storvsc: force SPC-3 compliance on win8 and win8 r2 hosts + - LP: #1406867 + + [ Timo Aaltonen ] + + * SAUCE: Switch VLV/BYT to use i915_bdw. + - LP: #1401963 + + [ Upstream Kernel Changes ] + + * Revert "xhci: clear root port wake on bits if controller isn't wake-up + capable" + - LP: #1408779 + * KVM: PPC: BOOK3S: HV: CMA: Reserve cma region only in hypervisor mode + - LP: #1400209 + * e1000e: Fix no connectivity when driver loaded with cable out + - LP: #1400365 + * net/mlx4_core: Enable CQE/EQE stride support + - LP: #1400127 + * net/mlx4_core: Cache line EQE size support + - LP: #1400127 + * net/mlx4_en: Add mlx4_en_get_cqe helper + - LP: #1400127 + * net/mlx4_core: Introduce mlx4_get_module_info for cable module info + reading + - LP: #1400127 + * ethtool, net/mlx4_en: Cable info, get_module_info/eeprom ethtool + support + - LP: #1400127 + * net/mlx4_core: Introduce ACCESS_REG CMD and eth_prot_ctrl dev cap + - LP: #1400127 + * net/mlx4_core: Add ethernet backplane autoneg device capability + - LP: #1400127 + * ethtool, net/mlx4_en: Add 100M, 20G, 56G speeds ethtool reporting + support + - LP: #1400127 + * net/mlx4_en: Use PTYS register to query ethtool settings + - LP: #1400127 + * net/mlx4_en: Use PTYS register to set ethtool settings (Speed) + - LP: #1400127 + * net/mlx4_en: Add support for setting rxvlan offload OFF/ON + - LP: #1400127 + * net/mlx4_en: Add ethtool support for [rx|tx]vlan offload set to OFF/ON + - LP: #1400127 + * net/mlx4_core: Prevent VF from changing port configuration + - LP: #1400127 + * net/mlx4_en: mlx4_en_set_settings() always fails when autoneg is set + - LP: #1400127 + * ipv4: fix nexthop attlen check in fib_nh_match + - LP: #1408779 + * vxlan: fix a use after free in vxlan_encap_bypass + - LP: #1408779 + * vxlan: using pskb_may_pull as early as possible + - LP: #1408779 + * vxlan: fix a free after use + - LP: #1408779 + * ipv4: fix a potential use after free in ip_tunnel_core.c + - LP: #1408779 + * ax88179_178a: fix bonding failure + - LP: #1408779 + * tcp: md5: do not use alloc_percpu() + - LP: #1408779 + * ipv4: dst_entry leak in ip_send_unicast_reply() + - LP: #1408779 + * drivers/net, ipv6: Select IPv6 fragment idents for virtio UFO packets + - LP: #1408779 + * drivers/net: macvtap and tun depend on INET + - LP: #1408779 + * ip6_tunnel: Use ip6_tnl_dev_init as the ndo_init function. + - LP: #1408779 + * vti6: Use vti6_dev_init as the ndo_init function. + - LP: #1408779 + * sit: Use ipip6_tunnel_init as the ndo_init function. + - LP: #1408779 + * gre6: Move the setting of dev->iflink into the ndo_init functions. + - LP: #1408779 + * vxlan: Do not reuse sockets for a different address family + - LP: #1408779 + * net: sctp: fix memory leak in auth key management + - LP: #1408779 + * smsc911x: power-up phydev before doing a software reset. + - LP: #1408779 + * sunvdc: add cdrom and v1.1 protocol support + - LP: #1408779 + * sunvdc: compute vdisk geometry from capacity + - LP: #1408779 + * sunvdc: limit each sg segment to a page + - LP: #1408779 + * vio: fix reuse of vio_dring slot + - LP: #1408779 + * sunvdc: don't call VD_OP_GET_VTOC + - LP: #1408779 + * sparc64: Fix crashes in schizo_pcierr_intr_other(). + - LP: #1408779 + * sparc64: Do irq_{enter,exit}() around generic_smp_call_function*(). + - LP: #1408779 + * sparc32: Implement xchg and atomic_xchg using ATOMIC_HASH locks + - LP: #1408779 + * sparc64: Fix constraints on swab helpers. + - LP: #1408779 + * inetdevice: fixed signed integer overflow + - LP: #1408779 + * ipv4: Fix incorrect error code when adding an unreachable route + - LP: #1408779 + * ieee802154: fix error handling in ieee802154fake_probe() + - LP: #1408779 + * qmi_wwan: Add support for HP lt4112 LTE/HSPA+ Gobi 4G Modem + - LP: #1408779 + * pptp: fix stack info leak in pptp_getname() + - LP: #1408779 + * ipx: fix locking regression in ipx_sendmsg and ipx_recvmsg + - LP: #1408779 + * aio: fix uncorrent dirty pages accouting when truncating AIO ring + buffer + - LP: #1408779 + * spi: dw: Fix dynamic speed change. + - LP: #1408779 + * USB: serial: cp210x: add IDs for CEL MeshConnect USB Stick + - LP: #1408779 + * iio: Fix IIO_EVENT_CODE_EXTRACT_DIR bit mask + - LP: #1408779 + * usb: serial: ftdi_sio: add PIDs for Matrix Orbital products + - LP: #1408779 + * USB: keyspan: fix tty line-status reporting + - LP: #1408779 + * USB: keyspan: fix overrun-error reporting + - LP: #1408779 + * USB: ssu100: fix overrun-error reporting + - LP: #1408779 + * nfsd: correctly define v4.2 support attributes + - LP: #1408779 + * SUNRPC: Fix locking around callback channel reply receive + - LP: #1408779 + * nfsd: Fix slot wake up race in the nfsv4.1 callback code + - LP: #1408779 + * bnx2fc: do not add shared skbs to the fcoe_rx_list + - LP: #1408779 + * scsi: add Intel Multi-Flex to scsi scan blacklist + - LP: #1408779 + * ARM: 8216/1: xscale: correct auxiliary register in suspend/resume + - LP: #1408779 + * USB: xhci: don't start a halted endpoint before its new dequeue is set + - LP: #1408779 + * USB: xhci: Reset a halted endpoint immediately when we encounter a + stall. + - LP: #1408779 + * usb: xhci: rework root port wake bits if controller isn't allowed to + wakeup + - LP: #1408779 + * ALSA: hda - Limit 40bit DMA for AMD HDMI controllers + - LP: #1408779 + * PCI/MSI: Add device flag indicating that 64-bit MSIs don't work + - LP: #1408779 + * gpu/radeon: Set flag to indicate broken 64-bit MSI + - LP: #1408779 + * sound/radeon: Move 64-bit MSI quirk from arch to driver + - LP: #1408779 + * powerpc/powernv: Honor the generic "no_64bit_msi" flag + - LP: #1408779 + * powerpc/pseries: Honor the generic "no_64bit_msi" flag + - LP: #1408779 + * MIPS: Loongson: Make platform serial setup always built-in. + - LP: #1408779 + * net/ping: handle protocol mismatching scenario + - LP: #1408779 + * usb-quirks: Add reset-resume quirk for MS Wireless Laser Mouse 6000 + - LP: #1408779 + * Input: xpad - use proper endpoint type + - LP: #1408779 + * powerpc: 32 bit getcpu VDSO function uses 64 bit instructions + - LP: #1408779 + * ARM: 8222/1: mvebu: enable strex backoff delay + - LP: #1408779 + * ARM: 8226/1: cacheflush: get rid of restarting block + - LP: #1408779 + * staging: r8188eu: Add new device ID for DLink GO-USB-N150 + - LP: #1408779 + * btrfs: zero out left over bytes after processing compression streams + - LP: #1408779 + * smiapp: Only some selection targets are settable + - LP: #1408779 + * i2c: omap: fix NACK and Arbitration Lost irq handling + - LP: #1408779 + * drm/nouveau/gf116: remove copy1 engine + - LP: #1408779 + * drm/i915: More cautious with pch fifo underruns + - LP: #1408779 + * drm/i915: Unlock panel even when LVDS is disabled + - LP: #1408779 + * AHCI: Add DeviceIDs for Sunrise Point-LP SATA controller + - LP: #1408779 + * sata_fsl: fix error handling of irq_of_parse_and_map + - LP: #1408779 + * drm/radeon: kernel panic in drm_calc_vbltimestamp_from_scanoutpos with + 3.18.0-rc6 + - LP: #1408779 + * mm: frontswap: invalidate expired data on a dup-store failure + - LP: #1408779 + * mm/vmpressure.c: fix race in vmpressure_work_fn() + - LP: #1408779 + * drivers/input/evdev.c: don't kfree() a vmalloc address + - LP: #1408779 + * mm: fix swapoff hang after page migration and fork + - LP: #1408779 + * mm: fix anon_vma_clone() error treatment + - LP: #1408779 + * slab: fix nodeid bounds check for non-contiguous node IDs + - LP: #1408779 + * ahci: disable MSI on SAMSUNG 0xa800 SSD + - LP: #1408779 + * i2c: davinci: generate STP always when NACK is received + - LP: #1408779 + * ip_tunnel: the lack of vti_link_ops' dellink() cause kernel panic + - LP: #1408779 + * ipv6: gre: fix wrong skb->protocol in WCCP + - LP: #1408779 + * Fix race condition between vxlan_sock_add and vxlan_sock_release + - LP: #1408779 + * tg3: fix ring init when there are more TX than RX channels + - LP: #1408779 + * net/mlx4_core: Limit count field to 24 bits in qp_alloc_res + - LP: #1408779 + * rtnetlink: release net refcnt on error in do_setlink() + - LP: #1408779 + * net: mvneta: fix Tx interrupt delay + - LP: #1408779 + * net: mvneta: fix race condition in mvneta_tx() + - LP: #1408779 + * net: sctp: use MAX_HEADER for headroom reserve in output path + - LP: #1408779 + * Linux 3.13.11-ckt13 + - LP: #1408779 + * ipv6: fix swapped ipv4/ipv6 mtu_reduced callbacks + - LP: #1404558 + * arm64: Fix machine_shutdown() definition + - LP: #1404335 + * arm64: Fix deadlock scenario with smp_send_stop() + - LP: #1404335 + * iwlwifi: mvm: a few more SKUs for 7260 and 3160 + * iwlwifi: fix and add 7265 series HW IDs + - LP: #1408222 + + -- Seth Forshee Tue, 13 Jan 2015 11:37:56 -0600 + +linux (3.13.0-44.73) trusty; urgency=low + + [ Kamal Mostafa ] + + * Release Tracking Bug + - LP: #1402872 + + [ AceLan Kao ] + + * SAUCE: Add use_native_backlight quirk for HP ProBook 6570b + - LP: #1359010 + + [ Andy Whitcroft ] + + * Revert "SAUCE: (no-up) arm64: optimized copy_to_user and copy_from_user + assembly code" + - LP: #1398596 + * [Config] updateconfigs to balance CONFIG_SCOM_DEBUGFS + + [ Upstream Kernel Changes ] + + * iwlwifi: mvm: fix merge damage + - LP: #1393317 + * iwlwifi: remove IWL_UCODE_TLV_FLAGS_SCHED_SCAN flag + - LP: #1393317 + * iwlwifi: mvm: disable scheduled scan to prevent firmware crash + - LP: #1393317 + * iwlwifi: mvm: enable scheduled scan on newest firmware + - LP: #1393317 + * x86: kvm: use alternatives for VMCALL vs. VMMCALL if kernel text is + read-only + - LP: #1379340 + * phylib: introduce PHY_INTERFACE_MODE_XGMII for 10G PHY + - LP: #1381084 + * of: make of_get_phy_mode parse 'phy-connection-type' + - LP: #1381084 + * xen-netfront: Remove BUGs on paged skb data which crosses a page + boundary + - LP: #1275879 + * ACPI / blacklist: blacklist Win8 OSI for Dell Vostro 3546 + - LP: #1383589 + * powerpc/pseries: Fix endiannes issue in RTAS call from xmon + - LP: #1396235 + * mmc: sdhci-pci-o2micro: Fix Dell E5440 issue + - LP: #1346067 + * mfd: rtsx: Fix PM suspend for 5227 & 5249 + - LP: #1359052 + * drivers:scsi:storvsc: Fix a bug in handling ring buffer failures that + may result in I/O freeze + - LP: #1400289 + * arm64: optimized copy_to_user and copy_from_user assembly code + - LP: #1400349 + * net:socket: set msg_namelen to 0 if msg_name is passed as NULL in + msghdr struct from userland. + - LP: #1335478 + * drm/radeon: initialize sadb to NULL in the audio code + - LP: #1402714 + * powerpc/vphn: NUMA node code expects big-endian + - LP: #1401150 + * ALSA: usb-audio: Fix device_del() sysfs warnings at disconnect + - LP: #1402853 + * ALSA: hda - Add mute LED pin quirk for HP 15 touchsmart + - LP: #1334950, #1402853 + * rcu: Make callers awaken grace-period kthread + - LP: #1402853 + * rcu: Use rcu_gp_kthread_wake() to wake up grace period kthreads + - LP: #1402853 + * net: sctp: fix NULL pointer dereference in af->from_addr_param on + malformed packet + - LP: #1402853 + * KVM: x86: Don't report guest userspace emulation error to userspace + - LP: #1402853 + * [media] ttusb-dec: buffer overflow in ioctl + - LP: #1402853 + * arm64: __clear_user: handle exceptions on strb + - LP: #1402853 + * ARM: pxa: fix hang on startup with DEBUG_LL + - LP: #1402853 + * samsung-laptop: Add broken-acpi-video quirk for NC210/NC110 + - LP: #1402853 + * acer-wmi: Add Aspire 5741 to video_vendor_dmi_table + - LP: #1402853 + * acer-wmi: Add acpi_backlight=video quirk for the Acer KAV80 + - LP: #1402853 + * rbd: Fix error recovery in rbd_obj_read_sync() + - LP: #1402853 + * [media] ds3000: fix LNB supply voltage on Tevii S480 on initialization + - LP: #1402853 + * powerpc: do_notify_resume can be called with bad thread_info flags + argument + - LP: #1402853 + * USB: kobil_sct: fix non-atomic allocation in write path + - LP: #1402853 + * USB: opticon: fix non-atomic allocation in write path + - LP: #1402853 + * regulator: max77693: Fix use of uninitialized regulator config + - LP: #1402853 + * USB: cdc-acm: add device id for GW Instek AFG-2225 + - LP: #1402853 + * usb: Do not allow usb_alloc_streams on unconfigured devices + - LP: #1402853 + * usb-storage: handle a skipped data phase + - LP: #1402853 + * xhci: Switch only Intel Lynx Point-LP ports to EHCI on shutdown. + - LP: #1402853 + * xhci: no switching back on non-ULT Haswell + - LP: #1402853 + * of: Fix overflow bug in string property parsing functions + - LP: #1402853 + * spi: fsl-dspi: Fix CTAR selection + - LP: #1402853 + * Btrfs: fix kfree on list_head in btrfs_lookup_csums_range error cleanup + - LP: #1402853 + * staging:iio:ade7758: Fix NULL pointer deref when enabling buffer + - LP: #1402853 + * staging:iio:ade7758: Fix check if channels are enabled in prenable + - LP: #1402853 + * staging:iio:ade7758: Remove "raw" from channel name + - LP: #1402853 + * USB: cdc-acm: only raise DTR on transitions from B0 + - LP: #1402853 + * serial: Fix divide-by-zero fault in uart_get_divisor() + - LP: #1402853 + * tty: Fix high cpu load if tty is unreleaseable + - LP: #1402853 + * tty: Prevent "read/write wait queue active!" log flooding + - LP: #1402853 + * tty/vt: don't set font mappings on vc not supporting this + - LP: #1402853 + * spi: pxa2xx: toggle clocks on suspend if not disabled by runtime PM + - LP: #1402853 + * sysfs: driver core: Fix glue dir race condition by gdp_mutex + - LP: #1402853 + * i2c: at91: don't account as iowait + - LP: #1402853 + * nfsd: don't try to reuse an expired DRC entry off the list + - LP: #1402853 + * nfsd: don't halt scanning the DRC LRU list when there's an RC_INPROG + entry + - LP: #1402853 + * dm bufio: change __GFP_IO to __GFP_FS in shrinker callbacks + - LP: #1402853 + * xtensa: re-wire umount syscall to sys_oldumount + - LP: #1402853 + * dm raid: ensure superblock's size matches device's logical block size + - LP: #1402853 + * ahci: disable MSI instead of NCQ on Samsung pci-e SSDs on macbooks + - LP: #1402853 + * ahci: Add Device IDs for Intel Sunrise Point PCH + - LP: #1402853 + * power: charger-manager: Fix accessing invalidated power supply after + charger unbind + - LP: #1402853 + * mac80211: use secondary channel offset IE also beacons during CSA + - LP: #1402853 + * mac80211: schedule the actual switch of the station before CSA count 0 + - LP: #1402853 + * mac80211: properly flush delayed scan work on interface removal + - LP: #1402853 + * mac80211: fix use-after-free in defragmentation + - LP: #1402853 + * tun: Fix csum_start with VLAN acceleration + - LP: #1402853 + * macvtap: Fix csum_start when VLAN tags are present + - LP: #1402853 + * dm thin: grab a virtual cell before looking up the mapping + - LP: #1402853 + * KVM: x86: Fix uninitialized op->type for some immediate values + - LP: #1402853 + * crypto: caam - fix missing dma unmap on error path + - LP: #1402853 + * hwrng: pseries - port to new read API and fix stack corruption + - LP: #1402853 + * drm/radeon: set correct CE ram size for CIK + - LP: #1402853 + * drm/radeon: make sure mode init is complete in bandwidth_update + - LP: #1402853 + * drm/radeon: use gart for DMA IB tests + - LP: #1402853 + * drm/radeon: add missing crtc unlock when setting up the MC + - LP: #1402853 + * ALSA: hda_intel: Add Device IDs for Intel Sunrise Point PCH + - LP: #1402853 + * ALSA: hda_intel: Add DeviceIDs for Sunrise Point-LP + - LP: #1402853 + * Input: alps - ignore potential bare packets when device is out of sync + - LP: #1402853 + * Input: alps - allow up to 2 invalid packets without resetting device + - LP: #1402853 + * scsi: only re-lock door after EH on devices that were reset + - LP: #1402853 + * dm btree: fix a recursion depth bug in btree walking code + - LP: #1402853 + * parisc: Use compat layer for msgctl, shmat, shmctl and semtimedop + syscalls + - LP: #1402853 + * ALSA: usb-audio: Fix memory leak in FTU quirk + - LP: #1402853 + * audit: keep inode pinned + - LP: #1402853 + * nfs: fix pnfs direct write memory leak + - LP: #1402853 + * nfs: Fix use of uninitialized variable in nfs_getattr() + - LP: #1402853 + * NFSv4: Ensure that we remove NFSv4.0 delegations when state has expired + - LP: #1402853 + * NFSv4.1: nfs41_clear_delegation_stateid shouldn't trust + NFS_DELEGATED_STATE + - LP: #1402853 + * NFSv4: Fix races between nfs_remove_bad_delegation() and delegation + return + - LP: #1402853 + * NFSv4: Ensure that we call FREE_STATEID when NFSv4.x stateids are + revoked + - LP: #1402853 + * NFS: Don't try to reclaim delegation open state if recovery failed + - LP: #1402853 + * libceph: do not crash on large auth tickets + - LP: #1402853 + * ARM: 8191/1: decompressor: ensure I-side picks up relocated code + - LP: #1402853 + * ARM: 8198/1: make kuser helpers depend on MMU + - LP: #1402853 + * zram: avoid kunmap_atomic() of a NULL pointer + - LP: #1402853 + * Input: alps - ignore bad data on Dell Latitudes E6440 and E7440 + - LP: #1402853 + * firewire: cdev: prevent kernel stack leaking into ioctl arguments + - LP: #1402853 + * md: Always set RECOVERY_NEEDED when clearing RECOVERY_FROZEN + - LP: #1402853 + * nfs: Don't busy-wait on SIGKILL in __nfs_iocounter_wait + - LP: #1402853 + * target: Don't call TFO->write_pending if data_length == 0 + - LP: #1402853 + * vhost-scsi: Take configfs group dependency during + VHOST_SCSI_SET_ENDPOINT + - LP: #1402853 + * srp-target: Retry when QP creation fails with ENOMEM + - LP: #1402853 + * ASoC: fsi: remove unsupported PAUSE flag + - LP: #1402853 + * ASoC: rsnd: remove unsupported PAUSE flag + - LP: #1402853 + * ib_isert: Add max_send_sge=2 minimum for control PDU responses + - LP: #1402853 + * iser-target: Handle DEVICE_REMOVAL event on network portal listener + correctly + - LP: #1402853 + * ASoC: dpcm: Fix race between FE/BE updates and trigger + - LP: #1402853 + * mac80211: Fix regression that triggers a kernel BUG with CCMP + - LP: #1402853 + * rt2x00: do not align payload on modern H/W + - LP: #1402853 + * ath9k: Add version/revision macros for QCA9531 + - LP: #1402853 + * ath9k: Fix RTC_DERIVED_CLK usage + - LP: #1402853 + * ASoC: sgtl5000: Fix SMALL_POP bit definition + - LP: #1402853 + * ALSA: usb-audio: Add ctrl message delay quirk for Marantz/Denon devices + - LP: #1402853 + * bitops: Fix shift overflow in GENMASK macros + - LP: #1402853 + * x86: Require exact match for 'noxsave' command line option + - LP: #1402853 + * drm/i915: drop WaSetupGtModeTdRowDispatch:snb + - LP: #1402853 + * ASoC: wm_adsp: Avoid attempt to free buffers that might still be in use + - LP: #1402853 + * can: dev: avoid calling kfree_skb() from interrupt context + - LP: #1402853 + * can: esd_usb2: fix memory leak on disconnect + - LP: #1402853 + * x86, mm: Set NX across entire PMD at boot + - LP: #1402853 + * of/irq: Drop obsolete 'interrupts' vs 'interrupts-extended' text + - LP: #1402853 + * of/base: Fix PowerPC address parsing hack + - LP: #1402853 + * clockevent: sun4i: Fix race condition in the probe code + - LP: #1402853 + * MIPS: oprofile: Fix backtrace on 64-bit kernel + - LP: #1402853 + * ACPI / PM: Ignore wakeup setting if the ACPI companion can't wake up + - LP: #1402853 + * IB/isert: Adjust CQ size to HW limits + - LP: #1402853 + * drm/radeon: fix endian swapping in vbios fetch for tdp table + - LP: #1402853 + * Linux 3.13.11-ckt12 + - LP: #1402853 + * mm: Remove false WARN_ON from pagecache_isize_extended() + - LP: #1402764 + + -- Kamal Mostafa Mon, 15 Dec 2014 16:00:52 -0800 + +linux (3.13.0-43.72) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1400408 + + [ Upstream Kernel Changes ] + + * x86_64, traps: Fix the espfix64 #DF fixup and rewrite it in C + - LP: #1398795 + - CVE-2014-9090 + * x86_64, traps: Rework bad_iret + - LP: #1398795 + - CVE-2014-9090 + * x86, kvm: Clear paravirt_enabled on KVM guests for espfix32's benefit + - LP: #1400314 + - CVE-2014-8134 + + -- Luis Henriques Mon, 08 Dec 2014 17:27:21 +0000 + +linux (3.13.0-42.71) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1399663 + + [ Upstream Kernel Changes ] + + * x86_64, traps: Stop using IST for #SS + - LP: #1398795 + - CVE-2014-9090 + + -- Luis Henriques Fri, 05 Dec 2014 14:29:10 +0000 + +linux (3.13.0-41.70) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1396112 + + [ Chris J Arges ] + + * [Config] CONFIG_SCOM_DEBUGFS=y for powerpc/powerpc64-smp + ppc64el/generic + - LP: #1395855 + + [ Upstream Kernel Changes ] + + * Revert "KVM: x86: Handle errors when RIP is set during far jumps" + - LP: #1393477 + * Revert "net/macb: add pinctrl consumer support" + - LP: #1393477 + * Revert "iwlwifi: mvm: treat EAPOLs like mgmt frames wrt rate" + - LP: #1393477 + * Revert "ipmi: simplify locking" + - LP: #1383921 + * ACPI / blacklist: add Win8 OSI quirks for some Dell laptop models + - LP: #1339456 + * ACPI / battery: Accelerate battery resume callback + - LP: #838543 + * tools: cpu-hotplug fix unexpected operator error + * netlink: reset network header before passing to taps + - LP: #1393477 + * rtnetlink: fix VF info size + - LP: #1393477 + * myri10ge: check for DMA mapping errors + - LP: #1393477 + * tcp: don't use timestamp from repaired skb-s to calculate RTT (v2) + - LP: #1393477 + * sit: Fix ipip6_tunnel_lookup device matching criteria + - LP: #1393477 + * tcp: fix tcp_release_cb() to dispatch via address family for + mtu_reduced() + - LP: #1393477 + * tcp: fix ssthresh and undo for consecutive short FRTO episodes + - LP: #1393477 + * packet: handle too big packets for PACKET_V3 + - LP: #1393477 + * openvswitch: fix panic with multiple vlan headers + - LP: #1393477 + * vxlan: fix incorrect initializer in union vxlan_addr + - LP: #1393477 + * l2tp: fix race while getting PMTU on PPP pseudo-wire + - LP: #1393477 + * bonding: fix div by zero while enslaving and transmitting + - LP: #1393477 + * bridge: Check if vlan filtering is enabled only once. + - LP: #1393477 + * bridge: Fix br_should_learn to check vlan_enabled + - LP: #1393477 + * net: allow macvlans to move to net namespace + - LP: #1393477 + * tg3: Work around HW/FW limitations with vlan encapsulated frames + - LP: #1393477 + * tg3: Allow for recieve of full-size 8021AD frames + - LP: #1393477 + * xfrm: Generate blackhole routes only from route lookup functions + - LP: #1393477 + * xfrm: Generate queueing routes only from route lookup functions + - LP: #1393477 + * macvtap: Fix race between device delete and open. + - LP: #1393477 + * gro: fix aggregation for skb using frag_list + - LP: #1393477 + * hyperv: Fix a bug in netvsc_start_xmit() + - LP: #1393477 + * ip6_gre: fix flowi6_proto value in xmit path + - LP: #1393477 + * team: avoid race condition in scheduling delayed work + - LP: #1393477 + * sctp: handle association restarts when the socket is closed. + - LP: #1393477 + * tcp: fixing TLP's FIN recovery + - LP: #1393477 + * sparc64: Do not disable interrupts in nmi_cpu_busy() + - LP: #1393477 + * sparc64: Fix pcr_ops initialization and usage bugs. + - LP: #1393477 + * sparc32: dma_alloc_coherent must honour gfp flags + - LP: #1393477 + * sparc64: sun4v TLB error power off events + - LP: #1393477 + * sparc64: Fix corrupted thread fault code. + - LP: #1393477 + * sparc64: find_node adjustment + - LP: #1393477 + * sparc64: Move request_irq() from ldc_bind() to ldc_alloc() + - LP: #1393477 + * sparc: Let memset return the address argument + - LP: #1393477 + * sparc64: Fix reversed start/end in flush_tlb_kernel_range() + - LP: #1393477 + * sparc64: Fix lockdep warnings on reboot on Ultra-5 + - LP: #1393477 + * sparc64: Fix FPU register corruption with AES crypto offload. + - LP: #1393477 + * sparc64: Do not define thread fpregs save area as zero-length array. + - LP: #1393477 + * sparc64: Fix hibernation code refrence to PAGE_OFFSET. + - LP: #1393477 + * sparc64: correctly recognise M6 and M7 cpu type + - LP: #1393477 + * sparc64: support M6 and M7 for building CPU distribution map + - LP: #1393477 + * sparc64: cpu hardware caps support for sparc M6 and M7 + - LP: #1393477 + * sparc64: T5 PMU + - LP: #1393477 + * sparc64: Switch to 4-level page tables. + - LP: #1393477 + * sparc64: Define VA hole at run time, rather than at compile time. + - LP: #1393477 + * sparc64: Adjust KTSB assembler to support larger physical addresses. + - LP: #1393477 + * sparc64: Fix physical memory management regressions with large + max_phys_bits. + - LP: #1393477 + * sparc64: Use kernel page tables for vmemmap. + - LP: #1393477 + * sparc64: Increase MAX_PHYS_ADDRESS_BITS to 53. + - LP: #1393477 + * sparc64: Adjust vmalloc region size based upon available virtual + address bits. + - LP: #1393477 + * sparc64: sparse irq + - LP: #1393477 + * sparc64: Kill unnecessary tables and increase MAX_BANKS. + - LP: #1393477 + * sparc64: Increase size of boot string to 1024 bytes + - LP: #1393477 + * sparc64: Fix register corruption in top-most kernel stack frame during + boot. + - LP: #1393477 + * sparc64: Implement __get_user_pages_fast(). + - LP: #1393477 + * ext4: check EA value offset when loading + - LP: #1393477 + * jbd2: free bh when descriptor block checksum fails + - LP: #1393477 + * ext4: don't check quota format when there are no quota files + - LP: #1393477 + * target: Fix queue full status NULL pointer for SCF_TRANSPORT_TASK_SENSE + - LP: #1393477 + * vfs: fix data corruption when blocksize < pagesize for mmaped data + - LP: #1393477 + * ext4: fix mmap data corruption when blocksize < pagesize + - LP: #1393477 + * ext4: grab missed write_count for EXT4_IOC_SWAP_BOOT + - LP: #1393477 + * qla_target: don't delete changed nacls + - LP: #1393477 + * target: Fix APTPL metadata handling for dynamic MappedLUNs + - LP: #1393477 + * iser-target: Disable TX completion interrupt coalescing + - LP: #1393477 + * ext4: don't orphan or truncate the boot loader inode + - LP: #1393477 + * ext4: add ext4_iget_normal() which is to be used for dir tree lookups + - LP: #1393477 + * ext4: fix reservation overflow in ext4_da_write_begin + - LP: #1393477 + * ext4: Replace open coded mdata csum feature to helper function + - LP: #1393477 + * ext4: move error report out of atomic context in + ext4_init_block_bitmap() + - LP: #1393477 + * ARC: [nsimosci] Allow "headless" models to boot + - LP: #1393477 + * ARC: Update order of registers in KGDB to match GDB 7.5 + - LP: #1393477 + * ext4: check s_chksum_driver when looking for bg csum presence + - LP: #1393477 + * drm/radeon: fix speaker allocation setup + - LP: #1393477 + * drm/radeon: use gart memory for DMA ring tests + - LP: #1393477 + * compiler: define OPTIMIZER_HIDE_VAR() macro + - LP: #1393477 + * random: add and use memzero_explicit() for clearing data + - LP: #1393477 + * ALSA: pcm: use the same dma mmap codepath both for arm and arm64 + - LP: #1393477 + * ALSA: ALC283 codec - Avoid pop noise on headphones during + suspend/resume + - LP: #1393477 + * ALSA: usb-audio: Add support for Steinberg UR22 USB interface + - LP: #1393477 + * ALSA: hda - hdmi: Fix missing ELD change event on plug/unplug + - LP: #1393477 + * arm64: compat: fix compat types affecting struct compat_elf_prpsinfo + - LP: #1393477 + * freezer: Do not freeze tasks killed by OOM killer + - LP: #1393477 + * OOM, PM: OOM killed task shouldn't escape PM suspend + - LP: #1393477 + * qxl: don't create too large primary surface + - LP: #1393477 + * MIPS: tlbex: Properly fix HUGE TLB Refill exception handler + - LP: #1393477 + * drm/cirrus: bind also to qemu-xen-traditional + - LP: #1393477 + * cpufreq: intel_pstate: Fix setting max_perf_pct in performance policy + - LP: #1393477 + * cpufreq: expose scaling_cur_freq sysfs file for set_policy() drivers + - LP: #1393477 + * cpufreq: intel_pstate: Reflect current no_turbo state correctly + - LP: #1393477 + * intel_pstate: Don't lose sysfs settings during cpu offline + - LP: #1393477 + * intel_pstate: Fix BYT frequency reporting + - LP: #1393477 + * intel_pstate: Correct BYT VID values. + - LP: #1393477 + * MIPS: ftrace: Fix a microMIPS build problem + - LP: #1393477 + * kvm: x86: don't kill guest on unknown exit reason + - LP: #1393477 + * kvm: fix excessive pages un-pinning in kvm_iommu_map error path. + - LP: #1393477 + * KVM: x86: use new CS.RPL as CPL during task switch + - LP: #1393477 + * KVM: x86: Handle errors when RIP is set during far jumps + - LP: #1393477 + * KVM: x86: Fix far-jump to non-canonical check + - LP: #1393477 + * staging:iio:ad5933: Fix NULL pointer deref when enabling buffer + - LP: #1393477 + * staging:iio:ad5933: Drop "raw" from channel names + - LP: #1393477 + * iio: st_sensors: Fix buffer copy + - LP: #1393477 + * iio: mxs-lradc: Propagate the real error code on platform_get_irq() + failure + - LP: #1393477 + * iio: adc: mxs-lradc: Disable the clock on probe failure + - LP: #1393477 + * spi: pl022: Fix incorrect dma_unmap_sg + - LP: #1393477 + * mac80211: fix typo in starting baserate for rts_cts_rate_idx + - LP: #1393477 + * usb: dwc3: gadget: fix set_halt() bug with pending transfers + - LP: #1393477 + * usb: gadget: function: acm: make f_acm pass USB20CV Chapter9 + - LP: #1393477 + * ext3: Don't check quota format when there are no quota files + - LP: #1393477 + * quota: Properly return errors from dquot_writeback_dquots() + - LP: #1393477 + * USB: serial: cp210x: add Silicon Labs 358x VID and PID + - LP: #1393477 + * usb: serial: ftdi_sio: add Awinda Station and Dongle products + - LP: #1393477 + * usb: option: add support for Telit LE910 + - LP: #1393477 + * USB: option: add Haier CE81B CDMA modem + - LP: #1393477 + * x86, apic: Handle a bad TSC more gracefully + - LP: #1393477 + * i3200_edac: Report CE events properly + - LP: #1393477 + * i82860_edac: Report CE events properly + - LP: #1393477 + * cpc925_edac: Report UE events properly + - LP: #1393477 + * e7xxx_edac: Report CE events properly + - LP: #1393477 + * scsi: Fix error handling in SCSI_IOCTL_SEND_COMMAND + - LP: #1393477 + * usb: serial: ftdi_sio: add "bricked" FTDI device PID + - LP: #1393477 + * usb: musb: cppi41: restart hrtimer only if not yet done + - LP: #1393477 + * usb: gadget: udc: core: fix kernel oops with soft-connect + - LP: #1393477 + * nfsd4: fix crash on unknown operation number + - LP: #1393477 + * iwlwifi: configure the LTR + - LP: #1393477 + * mac80211: add vif to flush call + - LP: #1393477 + * iwlwifi: dvm: drop non VO frames when flushing + - LP: #1393477 + * usb: dwc3: gadget: Properly initialize LINK TRB + - LP: #1393477 + * Input: i8042 - quirks for Fujitsu Lifebook A544 and Lifebook AH544 + - LP: #1393477 + * posix-timers: Fix stack info leak in timer_create() + - LP: #1393477 + * futex: Fix a race condition between REQUEUE_PI and task death + - LP: #1393477 + * PM / Sleep: fix recovery during resuming from hibernation + - LP: #1393477 + * ALSA: pcm: Zero-clear reserved fields of PCM status ioctl in compat + mode + - LP: #1393477 + * ima: check xattr value length and type in the ima_inode_setxattr() + - LP: #1393477 + * evm: check xattr value length and type in evm_inode_setxattr() + - LP: #1393477 + * drm/radeon/dpm: disable ulv support on SI + - LP: #1393477 + * drm/radeon: dpm fixes for asrock systems + - LP: #1393477 + * drm/radeon: remove invalid pci id + - LP: #1393477 + * x86, pageattr: Prevent overflow in slow_virt_to_phys() for X86_PAE + - LP: #1393477 + * cgroup/kmemleak: add kmemleak_free() for cgroup deallocations. + - LP: #1393477 + * mm: free compound page with correct order + - LP: #1393477 + * mm, thp: fix collapsing of hugepages on madvise + - LP: #1393477 + * lib/bitmap.c: fix undefined shift in __bitmap_shift_{left|right}() + - LP: #1393477 + * ext4: fix overflow when updating superblock backups after resize + - LP: #1393477 + * ext4: fix oops when loading block bitmap failed + - LP: #1393477 + * ext4: enable journal checksum when metadata checksum feature enabled + - LP: #1393477 + * ext4: bail out from make_indexed_dir() on first error + - LP: #1393477 + * PCI: Rename sysfs 'enabled' file back to 'enable' + - LP: #1393477 + * wireless: rt2x00: add new rt2800usb device + - LP: #1393477 + * fs: allow open(dir, O_TMPFILE|..., 0) with mode 0 + - LP: #1393477 + * tracing/syscalls: Ignore numbers outside NR_syscalls' range + - LP: #1393477 + * x86_64, entry: Fix out of bounds read on sysenter + - LP: #1393477 + * ACPI / EC: Add support to disallow QR_EC to be issued when SCI_EVT + isn't set + - LP: #1393477 + * ACPI / EC: Fix regression due to conflicting firmware behavior between + Samsung and Acer. + - LP: #1393477 + * net: sctp: fix skb_over_panic when receiving malformed ASCONF chunks + - LP: #1393477 + * net: sctp: fix panic on duplicate ASCONF chunks + - LP: #1393477 + * net: sctp: fix remote memory pressure from excessive queueing + - LP: #1393477 + * Linux 3.13.11.11 + - LP: #1393477 + * MAINTAINERS: Update APM X-Gene section + - LP: #1381084 + * Documentation: dts: Update section header for APM X-Gene + - LP: #1381084 + * dtb: Add 10GbE node to APM X-Gene SoC device tree + - LP: #1381084 + * drivers: net: xgene: Preparing for adding 10GbE support + - LP: #1381084 + * drivers: net: xgene: Add 10GbE support + - LP: #1381084 + * drivers: net: xgene: Add 10GbE ethtool support + - LP: #1381084 + * dtb: Add SGMII based 1GbE node to APM X-Gene SoC device tree + - LP: #1381216 + * drivers: net: xgene: Preparing for adding SGMII based 1GbE + - LP: #1381216 + * drivers: net: xgene: Add SGMII based 1GbE support + - LP: #1381216 + * drivers: net: xgene: Add SGMII based 1GbE ethtool support + - LP: #1381216 + * drivers: net: xgene: Rewrite buggy loop in xgene_enet_ecc_init() + - LP: #1381216 + * dtb: xgene: fix: Backward compatibility with older firmware + - LP: #1381084, #1381216 + * drivers: net: xgene: Backward compatibility with older firmware + - LP: #1381084, #1381216 + * drivers: net: xgene: fix: Use separate resources + - LP: #1381216 + * HID: Add the transport-driver functions to the HIDP driver. + - LP: #1393764 + * ipc: fix compat msgrcv with negative msgtyp + - LP: #1393355 + + -- Luis Henriques Tue, 25 Nov 2014 12:07:01 +0000 + +linux (3.13.0-40.69) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - re-used previous tracking bug + + [ Upstream Kernel Changes ] + + * regmap: fix kernel hang on regmap_bulk_write with zero val_count. + + -- Luis Henriques Thu, 13 Nov 2014 17:13:01 +0000 + +linux (3.13.0-40.68) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1388943 + * SAUCE: DEP8 test to run our regression tests + - LP: #1385330 + * SAUCE: The very first thing we should do when testing is make sure we + are testing the correct kernel + - LP: #1385330 + + [ dann frazier ] + + * [Config] Disable CONFIG_IPMI_SI_PROBE_DEFAULTS on armhf and arm64 + - LP: #1388952 + + [ Duc Dang ] + + * SAUCE: (no-up) [PCIE] APM X-Gene: Remove debug messages in MSI + interrupt handler path. + - LP: #1382244 + * SAUCE: (no-up) PCI: X-Gene: Fix max payload size and phantom function + configuration + - LP: #1386261 + + [ McAulay, Alistair ] + + * SAUCE: drm/i915: Rework GPU reset sequence to match driver load & thaw + - LP: #1384469 + + [ Timo Aaltonen ] + + * SAUCE: i915_bdw: Fix cherry-pick typo + - LP: #1384469 + + [ Upstream Kernel Changes ] + + * Revert "mac80211: disable uAPSD if all ACs are under ACM" + - LP: #1381234 + * Revert "iwlwifi: dvm: don't enable CTS to self" + - LP: #1381234 + * Revert "lzo: properly check for overruns" + - LP: #1387886 + * drm/i915: provide interface for audio driver to query cdclk + - LP: #1381168 + * regulatory: add NUL to alpha2 + - LP: #1381234 + * percpu: fix pcpu_alloc_pages() failure path + - LP: #1381234 + * percpu: perform tlb flush after pcpu_map_pages() failure + - LP: #1381234 + * cgroup: reject cgroup names with '\n' + - LP: #1381234 + * vfs: add d_is_dir() + - LP: #1381234 + * CIFS: Fix directory rename error + - LP: #1381234 + * usb: phy: twl4030-usb: Fix lost interrupts after ID pin goes down + - LP: #1381234 + * rtlwifi: rtl8192cu: Add new ID + - LP: #1381234 + * CIFS: Fix wrong restart readdir for SMB1 + - LP: #1381234 + * CIFS: Fix wrong filename length for SMB2 + - LP: #1381234 + * ahci: Add Device IDs for Intel 9 Series PCH + - LP: #1381234 + * ata_piix: Add Device IDs for Intel 9 Series PCH + - LP: #1381234 + * USB: zte_ev: fix removed PIDs + - LP: #1381234 + * USB: ftdi_sio: add support for NOVITUS Bono E thermal printer + - LP: #1381234 + * USB: sierra: avoid CDC class functions on "68A3" devices + - LP: #1381234 + * USB: sierra: add 1199:68AA device ID + - LP: #1381234 + * iommu/arm-smmu: fix programming of SMMU_CBn_TCR for stage 1 + - LP: #1381234 + * iommu/arm-smmu: remove pgtable_page_{c,d}tor() + - LP: #1381234 + * usb: gadget: fusb300_udc.h: Fix typo in include guard + - LP: #1381234 + * usb: phy: tegra: Avoid use of sizeof(void) + - LP: #1381234 + * arm64: use irq_set_affinity with force=false when migrating irqs + - LP: #1381234 + * block: Fix dev_t minor allocation lifetime + - LP: #1381234 + * usb: dwc3: core: fix order of PM runtime calls + - LP: #1381234 + * usb: dwc3: core: fix ordering for PHY suspend + - LP: #1381234 + * usb: dwc3: omap: fix ordering for runtime pm calls + - LP: #1381234 + * iommu/fsl: Fix warning resulting from adding PCI device twice + - LP: #1381234 + * ahci: add pcid for Marvel 0x9182 controller + - LP: #1381234 + * drm/i915: Fix EIO/wedged handling in gem fault handler + - LP: #1381234 + * ACPI / RTC: Fix CMOS RTC opregion handler accesses to wrong addresses + - LP: #1381234 + * drm/i915: Evict CS TLBs between batches + - LP: #1381234 + * drm/i915: Wait for vblank before enabling the TV encoder + - LP: #1381234 + * lockd: fix rpcbind crash on lockd startup failure + - LP: #1381234 + * drm/radeon: fix semaphore value init + - LP: #1381234 + * drm/radeon: add connector quirk for fujitsu board + - LP: #1381234 + * imx-drm: ipuv3-plane: fix ipu_plane_dpms() + - LP: #1381234 + * usb: host: xhci: fix compliance mode workaround + - LP: #1381234 + * Input: elantech - fix detection of touchpad on ASUS s301l + - LP: #1381234 + * USB: ftdi_sio: Add support for GE Healthcare Nemo Tracker device + - LP: #1381234 + * uwb: init beacon cache entry before registering uwb device + - LP: #1381234 + * nfs: fix kernel warning when removing proc entry + - LP: #1381234 + * drm/radeon/dpm: set the thermal type properly for special configs + - LP: #1381234 + * dm cache: fix race causing dirty blocks to be marked as clean + - LP: #1381234 + * libceph: gracefully handle large reply messages from the mon + - LP: #1381234 + * Input: serport - add compat handling for SPIOCSTYPE ioctl + - LP: #1381234 + * usb: hub: take hub->hdev reference when processing from eventlist + - LP: #1381234 + * eventpoll: fix uninitialized variable in epoll_ctl + - LP: #1381234 + * kcmp: fix standard comparison bug + - LP: #1381234 + * fsnotify/fdinfo: use named constants instead of hardcoded values + - LP: #1381234 + * fs/notify: don't show f_handle if exportfs_encode_inode_fh failed + - LP: #1381234 + * arm64: flush TLS registers during exec + - LP: #1381234 + * storage: Add single-LUN quirk for Jaz USB Adapter + - LP: #1381234 + * xhci: Fix null pointer dereference if xhci initialization fails + - LP: #1381234 + * usb: xhci: Fix OOPS in xhci error handling code + - LP: #1381234 + * xhci: fix oops when xhci resumes from hibernate with hw lpm capable + devices + - LP: #1381234 + * drm/ast: open key before detect chips + - LP: #1381234 + * drm/ast: AST2000 cannot be detected correctly + - LP: #1381234 + * futex: Unlock hb->lock in futex_wait_requeue_pi() error path + - LP: #1381234 + * jiffies: Fix timeval conversion to jiffies + - LP: #1381234 + * alarmtimer: Return relative times in timer_gettime + - LP: #1381234 + * alarmtimer: Do not signal SIGEV_NONE timers + - LP: #1381234 + * alarmtimer: Lock k_itimer during timer callback + - LP: #1381234 + * parisc: Implement new LWS CAS supporting 64 bit operations. + - LP: #1381234 + * don't bugger nd->seq on set_root_rcu() from follow_dotdot_rcu() + - LP: #1381234 + * be careful with nd->inode in path_init() and follow_dotdot_rcu() + - LP: #1381234 + * iio:inkern: fix overwritten -EPROBE_DEFER in of_iio_channel_get_by_name + - LP: #1381234 + * iio:trigger: modify return value for iio_trigger_get + - LP: #1381234 + * iio: accel: bma180: Fix indio_dev->trig assignment + - LP: #1381234 + * iio: adc: ad_sigma_delta: Fix indio_dev->trig assignment + - LP: #1381234 + * iio: hid_sensor_hub: Fix indio_dev->trig assignment + - LP: #1381234 + * iio: st_sensors: Fix indio_dev->trig assignment + - LP: #1381234 + * iio: gyro: itg3200: Fix indio_dev->trig assignment + - LP: #1381234 + * iio: inv_mpu6050: Fix indio_dev->trig assignment + - LP: #1381234 + * iio: meter: ade7758: Fix indio_dev->trig assignment + - LP: #1381234 + * MIPS: ZBOOT: add missing include + - LP: #1381234 + * spi: fsl: Don't use devm_kzalloc in master->setup callback + - LP: #1381234 + * spi: dw: Don't use devm_kzalloc in master->setup callback + - LP: #1381234 + * ARM: 8133/1: use irq_set_affinity with force=false when migrating irqs + - LP: #1381234 + * cx18: fix kernel oops with tda8290 tuner + - LP: #1381234 + * ASoC: davinci-mcasp: Correct rx format unit configuration + - LP: #1381234 + * spi: sirf: enable RX_IO_DMA_INT interrupt + - LP: #1381234 + * perf: Fix a race condition in perf_remove_from_context() + - LP: #1381234 + * ASoC: samsung-i2s: Maintain CDCLK settings across + i2s_{shutdown/startup} + - LP: #1381234 + * ASoC: samsung-i2s: Check secondary DAI exists before referencing + - LP: #1381234 + * ALSA: hda - Fix invalid pin powermap without jack detection + - LP: #1381234 + * Input: atkbd - do not try 'deactivate' keyboard on any LG laptops + - LP: #1381234 + * Input: i8042 - add Fujitsu U574 to no_timeout dmi table + - LP: #1381234 + * Input: i8042 - add nomux quirk for Avatar AVIU-145A6 + - LP: #1381234 + * iio: adc: at91: don't use the last converted data register + - LP: #1381234 + * iio:magnetometer: bugfix magnetometers gain values + - LP: #1381234 + * drm/i915: Fix SRC_COPY width on 830/845g + - LP: #1381234 + * Target/iser: Get isert_conn reference once got to connected_handler + - LP: #1381234 + * Target/iser: Don't put isert_conn inside disconnected handler + - LP: #1381234 + * ARM: 8148/1: flush TLS and thumbee register state during exec + - LP: #1381234 + * x86, ia64: Move EFI_FB vga_default_device() initialization to + pci_vga_fixup() + - LP: #1381234 + * vgaarb: Don't default exclusively to first video device with mem+io + - LP: #1381234 + * iscsi-target: Fix memory corruption in + iscsit_logout_post_handler_diffcid + - LP: #1381234 + * iscsi-target: avoid NULL pointer in iscsi_copy_param_list failure + - LP: #1381234 + * NFSv4: nfs4_state_manager() vs. nfs_server_remove_lists() + - LP: #1381234 + * NFSv4: Fix another bug in the close/open_downgrade code + - LP: #1381234 + * drm/radeon: don't reset dma on NI/SI init + - LP: #1381234 + * drm/radeon: don't reset sdma on CIK init + - LP: #1381234 + * drm/radeon: don't reset dma on r6xx-evergreen init + - LP: #1381234 + * vgaswitcheroo: add vga_switcheroo_fini_domain_pm_ops + - LP: #1381234 + * drm/radeon/px: fix module unload + - LP: #1381234 + * drm/nouveau/runpm: fix module unload + - LP: #1381234 + * libiscsi: fix potential buffer overrun in __iscsi_conn_send_pdu + - LP: #1381234 + * USB: EHCI: unlink QHs even after the controller has stopped + - LP: #1381234 + * USB: storage: Add quirk for Adaptec USBConnect 2000 USB-to-SCSI Adapter + - LP: #1381234 + * USB: storage: Add quirk for Ariston Technologies iConnect USB to SCSI + adapter + - LP: #1381234 + * USB: storage: Add quirks for Entrega/Xircom USB to SCSI converters + - LP: #1381234 + * drm/nouveau: ltc/gf100-: fix cbc issues on certain boards + - LP: #1381234 + * iwlwifi: increase DEFAULT_MAX_TX_POWER + - LP: #1381234 + * iwlwifi: mvm: treat EAPOLs like mgmt frames wrt rate + - LP: #1381234 + * workqueue: apply __WQ_ORDERED to create_singlethread_workqueue() + - LP: #1381234 + * can: flexcan: mark TX mailbox as TX_INACTIVE + - LP: #1381234 + * can: flexcan: correctly initialize mailboxes + - LP: #1381234 + * can: flexcan: implement workaround for errata ERR005829 + - LP: #1381234 + * can: flexcan: put TX mailbox into TX_INACTIVE mode after tx-complete + - LP: #1381234 + * can: at91_can: add missing prepare and unprepare of the clock + - LP: #1381234 + * IB/qib: Correct reference counting in debugfs qp_stats + - LP: #1381234 + * videobuf2-dma-sg: fix for wrong GFP mask to sg_alloc_table_from_pages + - LP: #1381234 + * vb2: fix plane index sanity check in vb2_plane_cookie() + - LP: #1381234 + * adv7604: fix inverted condition + - LP: #1381234 + * md/raid1: intialise start_next_window for READ case to avoid hang + - LP: #1381234 + * md/raid1: be more cautious where we read-balance during resync. + - LP: #1381234 + * md/raid1: clean up request counts properly in close_sync() + - LP: #1381234 + * md/raid1: make sure resync waits for conflicting writes to complete. + - LP: #1381234 + * md/raid1: Don't use next_resync to determine how far resync has + progressed + - LP: #1381234 + * md/raid1: update next_resync under resync_lock. + - LP: #1381234 + * md/raid1: count resync requests in nr_pending. + - LP: #1381234 + * md/raid1: fix_read_error should act on all non-faulty devices. + - LP: #1381234 + * ALSA: pcm: fix fifo_size frame calculation + - LP: #1381234 + * Fix nasty 32-bit overflow bug in buffer i/o code. + - LP: #1381234 + * drm/radeon/cik: use a separate counter for CP init timeout + - LP: #1381234 + * parisc: Only use -mfast-indirect-calls option for 32-bit kernel builds + - LP: #1381234 + * sched: Fix unreleased llc_shared_mask bit during CPU hotplug + - LP: #1381234 + * MIPS: mcount: Adjust stack pointer for static trace in MIPS32 + - LP: #1381234 + * nilfs2: fix data loss with mmap() + - LP: #1381234 + * ocfs2/dlm: do not get resource spinlock if lockres is new + - LP: #1381234 + * mm, slab: initialize object alignment on cache creation + - LP: #1381234 + * mm: softdirty: keep bit when zapping file pte + - LP: #1381234 + * shmem: fix nlink for rename overwrite directory + - LP: #1381234 + * ARM: 8165/1: alignment: don't break misaligned NEON load/store + - LP: #1381234 + * ASoC: core: fix possible ZERO_SIZE_PTR pointer dereferencing error. + - LP: #1381234 + * cpufreq: integrator: fix integrator_cpufreq_remove return type + - LP: #1381234 + * drm/i915: Flush the PTEs after updating them before suspend + - LP: #1381234 + * ARM: 8178/1: fix set_tls for !CONFIG_KUSER_HELPERS + - LP: #1381234 + * md/raid5: disable 'DISCARD' by default due to safety concerns. + - LP: #1381234 + * mm: migrate: Close race between migration completion and mprotect + - LP: #1381234 + * mm: numa: Do not mark PTEs pte_numa when splitting huge pages + - LP: #1381234 + * Fix problem recognizing symlinks + - LP: #1381234 + * mm: memcontrol: do not iterate uninitialized memcgs + - LP: #1381234 + * perf: fix perf bug in fork() + - LP: #1381234 + * mm: page_alloc: fix zone allocation fairness on UP + - LP: #1381234 + * init/Kconfig: Hide printk log config if CONFIG_PRINTK=n + - LP: #1381234 + * init/Kconfig: Fix HAVE_FUTEX_CMPXCHG to not break up the EXPERT menu + - LP: #1381234 + * genhd: fix leftover might_sleep() in blk_free_devt() + - LP: #1381234 + * Linux 3.13.11.9 + - LP: #1381234 + * NVMe: Initialize device reference count earlier + - LP: #1382221 + * nfs: fix duplicate proc entries + - LP: #1376245 + * xfs: xfs_dir2_block_to_sf temp buffer allocation fails + - LP: #1382333 + * UPSTREAM: kernel: Mark function as static in kernel/seccomp.c + - LP: #1379020 + * ARM: 8087/1: ptrace: reload syscall number after secure_computing() + check + - LP: #1379020 + * seccomp: create internal mode-setting function + - LP: #1379020 + * seccomp: extract check/assign mode helpers + - LP: #1379020 + * seccomp: split mode setting routines + - LP: #1379020 + * seccomp: add "seccomp" syscall + - LP: #1379020 + * ARM: add seccomp syscall + - LP: #1379020 + * MIPS: add seccomp syscall + - LP: #1379020 + * sched: move no_new_privs into new atomic flags + - LP: #1379020 + * seccomp: split filter prep from check and apply + - LP: #1379020 + * seccomp: introduce writer locking + - LP: #1379020 + * seccomp: allow mode setting across threads + - LP: #1379020 + * seccomp: implement SECCOMP_FILTER_FLAG_TSYNC + - LP: #1379020 + * seccomp: Replace BUG(!spin_is_locked()) with assert_spin_lock + - LP: #1379020 + * fs: Add a missing permission check to do_umount + - LP: #1383358 + - CVE-2014-7975 + * mfd: rtsx_pcr: Fix MSI enable error handling + - LP: #1366841 + * xen/balloon: Don't continue ballooning when BP_ECANCELED is encountered + - LP: #1304001 + * Bluetooth: Fix HCI H5 corrupted ack value + - LP: #1387886 + * dmaengine: fix xor sources continuation + - LP: #1387886 + * siano: add support for PCTV 77e + - LP: #1387886 + * em28xx-v4l: give back all active video buffers to the vb2 core properly + on streaming stop + - LP: #1387886 + * em28xx-v4l: fix video buffer field order reporting in progressive mode + - LP: #1387886 + * crypto: caam - fix addressing of struct member + - LP: #1387886 + * x86, fpu: shift drop_init_fpu() from save_xstate_sig() to + handle_signal() + - LP: #1387886 + * x86, fpu: __restore_xstate_sig()->math_state_restore() needs + preempt_disable() + - LP: #1387886 + * KVM: do not bias the generation number in kvm_current_mmio_generation + - LP: #1387886 + * kvm: fix potentially corrupt mmio cache + - LP: #1387886 + * kvm: x86: fix stale mmio cache bug + - LP: #1387886 + * UBIFS: fix free log space calculation + - LP: #1387886 + * Bluetooth: Fix issue with USB suspend in btusb driver + - LP: #1387886 + * mmc: rtsx_pci_sdmmc: fix incorrect last byte in R2 response + - LP: #1387886 + * KVM: s390: unintended fallthrough for external call + - LP: #1387886 + * UBI: add missing kmem_cache_free() in process_pool_aeb error path + - LP: #1387886 + * PCI: Increase IBM ipr SAS Crocodile BARs to at least system page size + - LP: #1387886 + * drbd: compute the end before rb_insert_augmented() + - LP: #1387886 + * Bluetooth: Fix setting correct security level when initiating SMP + - LP: #1387886 + * mmc: tmio: prevent endless loop in tmio_mmc_set_clock() + - LP: #1387886 + * iwlwifi: Add missing PCI IDs for the 7260 series + - LP: #1387886 + * media: usb: uvc: add a quirk for Dell XPS M1330 webcam + - LP: #1387886 + * USB: serial: cp210x: added Ketra N1 wireless interface support + - LP: #1387886 + * USB: cp210x: add support for Seluxit USB dongle + - LP: #1387886 + * PCI: Generate uppercase hex for modalias interface class + - LP: #1387886 + * PCI: mvebu: Fix uninitialized variable in mvebu_get_tgt_attr() + - LP: #1387886 + * xfs: ensure WB_SYNC_ALL writeback handles partial pages correctly + - LP: #1387886 + * v4l2-common: fix overflow in v4l_bound_align_image() + - LP: #1387886 + * USB: Add device quirk for ASUS T100 Base Station keyboard + - LP: #1387886 + * mei: bus: fix possible boundaries violation + - LP: #1387886 + * firmware_class: make sure fw requests contain a name + - LP: #1387886 + * Drivers: hv: vmbus: Cleanup vmbus_post_msg() + - LP: #1387886 + * Drivers: hv: vmbus: Cleanup vmbus_teardown_gpadl() + - LP: #1387886 + * Drivers: hv: vmbus: Cleanup vmbus_establish_gpadl() + - LP: #1387886 + * Drivers: hv: vmbus: Fix a bug in vmbus_open() + - LP: #1387886 + * Drivers: hv: vmbus: Cleanup vmbus_close_internal() + - LP: #1387886 + * Drivers: hv: vmbus: Cleanup hv_post_message() + - LP: #1387886 + * spi: dw-mid: respect 8 bit mode + - LP: #1387886 + * spi: dw-mid: terminate ongoing transfers at exit + - LP: #1387886 + * kvm: don't take vcpu mutex for obviously invalid vcpu ioctls + - LP: #1387886 + * x86/intel/quark: Switch off CR4.PGE so TLB flush uses CR3 instead + - LP: #1387886 + * ARM: at91: fix at91sam9263ek DT mmc pinmuxing settings + - LP: #1387886 + * ARM: at91/PMC: don't forget to write PMC_PCDR register to disable + clocks + - LP: #1387886 + * Fixing lease renewal + - LP: #1387886 + * lockd: Try to reconnect if statd has moved + - LP: #1387886 + * qla2xxx: Use correct offset to req-q-out for reserve calculation + - LP: #1387886 + * power: charger-manager: Fix NULL pointer exception with missing + cm-fuel-gauge + - LP: #1387886 + * rt2800: correct BBP1_TX_POWER_CTRL mask + - LP: #1387886 + * regmap: fix NULL pointer dereference in _regmap_write/read + - LP: #1387886 + * Documentation: lzo: document part of the encoding + - LP: #1387886 + * lzo: check for length overrun in variable length encoding. + - LP: #1387886 + * regmap: debugfs: fix possbile NULL pointer dereference + - LP: #1387886 + * regmap: fix possible ZERO_SIZE_PTR pointer dereferencing error. + - LP: #1387886 + * net_dma: simple removal + - LP: #1387886 + * libata-sff: Fix controllers with no ctl port + - LP: #1387886 + * NFSv4: Fix lock recovery when CREATE_SESSION/SETCLIENTID_CONFIRM fails + - LP: #1387886 + * NFSv4: fix open/lock state recovery error handling + - LP: #1387886 + * tty: omap-serial: fix division by zero + - LP: #1387886 + * serial: 8250: Add Quark X1000 to 8250_pci.c + - LP: #1387886 + * missing data dependency barrier in prepend_name() + - LP: #1387886 + * be2iscsi: check ip buffer before copying + - LP: #1387886 + * framebuffer: fix border color + - LP: #1387886 + * framebuffer: fix screen corruption when copying + - LP: #1387886 + * mpc85xx_edac: Make L2 interrupt shared too + - LP: #1387886 + * NFSv4.1: Fix an NFSv4.1 state renewal regression + - LP: #1387886 + * xen-blkback: fix leak on grant map error path + - LP: #1387886 + * m68k: Disable/restore interrupts in hwreg_present()/hwreg_write() + - LP: #1387886 + * ASoC: tlv320aic3x: fix PLL D configuration + - LP: #1387886 + * dm bufio: update last_accessed when relinking a buffer + - LP: #1387886 + * dm bufio: when done scanning return from __scan immediately + - LP: #1387886 + * dm log userspace: fix memory leak in dm_ulog_tfr_init failure path + - LP: #1387886 + * ecryptfs: avoid to access NULL pointer when write metadata in xattr + - LP: #1387886 + * x86_64, entry: Filter RFLAGS.NT on entry from userspace + - LP: #1387886 + * ASoC: soc-dapm: fix use after free + - LP: #1387886 + * pata_serverworks: disable 64-KB DMA transfers on Broadcom OSB4 IDE + Controller + - LP: #1387886 + * drm/ast: Fix HW cursor image + - LP: #1387886 + * x86: Reject x32 executables if x32 ABI not supported + - LP: #1387886 + * kill wbuf_queued/wbuf_dwork_lock + - LP: #1387886 + * fs: Fix theoretical division by 0 in super_cache_scan(). + - LP: #1387886 + * fs: make cont_expand_zero interruptible + - LP: #1387886 + * fix misuses of f_count() in ppp and netlink + - LP: #1387886 + * block: fix alignment_offset math that assumes io_min is a power-of-2 + - LP: #1387886 + * fanotify: enable close-on-exec on events' fd when requested in + fanotify_init() + - LP: #1387886 + * mm: clear __GFP_FS when PF_MEMALLOC_NOIO is set + - LP: #1387886 + * Input: i8042 - add noloop quirk for Asus X750LN + - LP: #1387886 + * um: ubd: Fix for processes stuck in D state forever + - LP: #1387886 + * kernel: add support for gcc 5 + - LP: #1387886 + * ALSA: emu10k1: Fix deadlock in synth voice lookup + - LP: #1387886 + * libceph: ceph-msgr workqueue needs a resque worker + - LP: #1387886 + * mnt: Prevent pivot_root from creating a loop in the mount tree + - LP: #1387886 + * modules, lock around setting of MODULE_STATE_UNFORMED + - LP: #1387886 + * virtio_pci: fix virtio spec compliance on restore + - LP: #1387886 + * selinux: fix inode security list corruption + - LP: #1387886 + * pstore: Fix duplicate {console,ftrace}-efi entries + - LP: #1387886 + * futex: Ensure get_futex_key_refs() always implies a barrier + - LP: #1387886 + * x86,kvm,vmx: Preserve CR4 across VM entry + - LP: #1387886 + * crypto: caam - remove duplicated sg copy functions + - LP: #1387886 + * Linux 3.13.11.10 + - LP: #1387886 + * ipmi: Turn off default probing of interfaces + - LP: #1388952 + + -- Tim Gardner Wed, 29 Oct 2014 14:39:14 -0400 + +linux (3.13.0-39.66) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1386629 + + [ Upstream Kernel Changes ] + + * KVM: x86: Check non-canonical addresses upon WRMSR + - LP: #1384539 + - CVE-2014-3610 + * KVM: x86: Prevent host from panicking on shared MSR writes. + - LP: #1384539 + - CVE-2014-3610 + * KVM: x86: Improve thread safety in pit + - LP: #1384540 + - CVE-2014-3611 + * KVM: x86: Fix wrong masking on relative jump/call + - LP: #1384545 + - CVE-2014-3647 + * KVM: x86: Warn if guest virtual address space is not 48-bits + - LP: #1384545 + - CVE-2014-3647 + * KVM: x86: Emulator fixes for eip canonical checks on near branches + - LP: #1384545 + - CVE-2014-3647 + * KVM: x86: emulating descriptor load misses long-mode case + - LP: #1384545 + - CVE-2014-3647 + * KVM: x86: Handle errors when RIP is set during far jumps + - LP: #1384545 + - CVE-2014-3647 + * kvm: vmx: handle invvpid vm exit gracefully + - LP: #1384544 + - CVE-2014-3646 + * Input: synaptics - gate forcepad support by DMI check + - LP: #1381815 + + -- Luis Henriques Tue, 28 Oct 2014 10:29:51 +0000 + +linux (3.13.0-38.65) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1379244 + + [ Andy Whitcroft ] + + * Revert "SAUCE: scsi: hyper-v storsvc switch up to SPC-3" + - LP: #1354397 + * [Config] linux-image-extra is additive to linux-image + - LP: #1375310 + * [Config] linux-image-extra postrm is not needed on purge + - LP: #1375310 + + [ Upstream Kernel Changes ] + + * Revert "KVM: x86: Increase the number of fixed MTRR regs to 10" + - LP: #1377564 + * Revert "USB: option,zte_ev: move most ZTE CDMA devices to zte_ev" + - LP: #1377564 + * aufs: bugfix, stop calling security_mmap_file() again + - LP: #1371316 + * ipvs: fix ipv6 hook registration for local replies + - LP: #1349768 + * Drivers: add blist flags + - LP: #1354397 + * sd: fix a bug in deriving the FLUSH_TIMEOUT from the basic I/O timeout + - LP: #1354397 + * drm/i915/bdw: Add 42ms delay for IPS disable + - LP: #1374389 + * drm/i915: add null render states for gen6, gen7 and gen8 + - LP: #1374389 + * drm/i915/bdw: 3D_CHICKEN3 has write mask bits + - LP: #1374389 + * drm/i915/bdw: Disable idle DOP clock gating + - LP: #1374389 + * drm/i915: call lpt_init_clock_gating on BDW too + - LP: #1374389 + * drm/i915: shuffle panel code + - LP: #1374389 + * drm/i915: extract backlight minimum brightness from VBT + - LP: #1374389 + * drm/i915: respect the VBT minimum backlight brightness + - LP: #1374389 + * drm/i915/bdw: Apply workarounds in render ring init function + - LP: #1374389 + * drm/i915/bdw: Cleanup pre prod workarounds + - LP: #1374389 + * drm/i915: Replace hardcoded cacheline size with macro + - LP: #1374389 + * drm/i915: Refactor Broadwell PIPE_CONTROL emission into a helper. + - LP: #1374389 + * drm/i915: Add the WaCsStallBeforeStateCacheInvalidate:bdw workaround. + - LP: #1374389 + * drm/i915/bdw: Remove BDW preproduction W/As until C stepping. + - LP: #1374389 + * mptfusion: enable no_write_same for vmware scsi disks + - LP: #1371591 + * iommu/amd: Fix cleanup_domain for mass device removal + - LP: #1375266 + * cifs: mask off top byte in get_rfc1002_length() + - LP: #1372482 + * Input: synaptics - add support for ForcePads + - LP: #1377564 + * ASoC: pxa-ssp: drop SNDRV_PCM_FMTBIT_S24_LE + - LP: #1377564 + * drm/radeon: add bapm module parameter + - LP: #1377564 + * drm/radeon: Add missing lines to ci_set_thermal_temperature_range + - LP: #1377564 + * drm/radeon: Add ability to get and change dpm state when radeon PX card + is turned off + - LP: #1377564 + * ALSA: hda/realtek - Avoid setting wrong COEF on ALC269 & co + - LP: #1377564 + * of/irq: Fix lookup to use 'interrupts-extended' property first + - LP: #1377564 + * Possible null ptr deref in SMB2_tcon + - LP: #1377564 + * CIFS: Fix SMB2 readdir error handling + - LP: #1377564 + * CIFS: Fix wrong directory attributes after rename + - LP: #1377564 + * md/raid6: avoid data corruption during recovery of double-degraded + RAID6 + - LP: #1377564 + * ARM: dts: i.MX53: fix apparent bug in VPU clks + - LP: #1377564 + * pata_scc: propagate return value of scc_wait_after_reset + - LP: #1377564 + * libata: widen Crucial M550 blacklist matching + - LP: #1377564 + * ALSA: hda - restore the gpio led after resume + - LP: #1358116, #1377564 + * md/raid10: fix memory leak when reshaping a RAID10. + - LP: #1377564 + * md/raid10: Fix memory leak when raid10 reshape completes. + - LP: #1377564 + * MIPS: OCTEON: make get_system_type() thread-safe + - LP: #1377564 + * can: c_can: checking IS_ERR() instead of NULL + - LP: #1377564 + * HID: logitech: perform bounds checking on device_id early enough + - LP: #1377564 + * firmware: Do not use WARN_ON(!spin_is_locked()) + - LP: #1377564 + * drm/radeon: add new KV pci id + - LP: #1377564 + * drm/radeon: add new bonaire pci ids + - LP: #1377564 + * drm/radeon: add additional SI pci ids + - LP: #1377564 + * ibmveth: Fix endian issues with rx_no_buffer statistic + - LP: #1377564 + * spi/omap-mcspi: Fix the spi task hangs waiting dma_rx + - LP: #1377564 + * xtensa: replace IOCTL code definitions with constants + - LP: #1377564 + * xtensa: fix address checks in dma_{alloc,free}_coherent + - LP: #1377564 + * xtensa: fix access to THREAD_RA/THREAD_SP/THREAD_DS + - LP: #1377564 + * xtensa: fix TLBTEMP_BASE_2 region handling in fast_second_level_miss + - LP: #1377564 + * xtensa: fix a6 and a7 handling in fast_syscall_xtensa + - LP: #1377564 + * staging: lustre: Remove circular dependency on header + - LP: #1377564 + * USB: option: reduce interrupt-urb logging verbosity + - LP: #1377564 + * USB: option: add VIA Telecom CDS7 chipset device id + - LP: #1377564 + * USB: zte_ev: remove duplicate Gobi PID + - LP: #1377564 + * USB: zte_ev: remove duplicate Qualcom PID + - LP: #1377564 + * USB: ftdi_sio: add Basic Micro ATOM Nano USB2Serial PID + - LP: #1377564 + * USB: serial: pl2303: add device id for ztek device + - LP: #1377564 + * USB: ftdi_sio: Added PID for new ekey device + - LP: #1377564 + * xhci: Treat not finding the event_seg on COMP_STOP the same as + COMP_STOP_INVAL + - LP: #1377564 + * usb: xhci: amd chipset also needs short TX quirk + - LP: #1377564 + * xhci: rework cycle bit checking for new dequeue pointers + - LP: #1377564 + * spi/pxa2xx: Add ACPI ID for Intel Braswell + - LP: #1377564 + * ALSA: core: fix buffer overflow in snd_info_get_line() + - LP: #1377564 + * HID: logitech-dj: prevent false errors to be shown + - LP: #1377564 + * usb: ehci: using wIndex + 1 for hub port + - LP: #1377564 + * staging/rtl8188eu: add 0df6:0076 Sitecom Europe B.V. + - LP: #1377564 + * staging: r8188eu: Add new USB ID + - LP: #1377564 + * mtd: nand: omap: Fix 1-bit Hamming code scheme, omap_calculate_ecc() + - LP: #1377564 + * trace: Fix epoll hang when we race with new entries + - LP: #1377564 + * cfq-iosched: Fix wrong children_weight calculation + - LP: #1377564 + * USB: sisusb: add device id for Magic Control USB video + - LP: #1377564 + * NFSv4: Fix problems with close in the presence of a delegation + - LP: #1377564 + * usb: hub: Prevent hub autosuspend if usbcore.autosuspend is -1 + - LP: #1377564 + * ARM: 8128/1: abort: don't clear the exclusive monitors + - LP: #1377564 + * ARM: 8129/1: errata: work around Cortex-A15 erratum 830321 using dummy + strex + - LP: #1377564 + * USB: serial: fix potential stack buffer overflow + - LP: #1377564 + * USB: serial: fix potential heap buffer overflow + - LP: #1377564 + * ext4: update i_disksize coherently with block allocation on error path + - LP: #1377564 + * jbd2: fix infinite loop when recovering corrupt journal blocks + - LP: #1377564 + * jbd2: fix descriptor block size handling errors with journal_csum + - LP: #1377564 + * memblock, memhotplug: fix wrong type in memblock_find_in_range_node(). + - LP: #1377564 + * xattr: fix check for simultaneous glibc header inclusion + - LP: #1377564 + * KVM: s390: Fix user triggerable bug in dead code + - LP: #1377564 + * KVM: s390/mm: try a cow on read only pages for key ops + - LP: #1377564 + * regmap: Fix regcache debugfs initialization + - LP: #1377564 + * regmap: Fix handling of volatile registers for format_write() chips + - LP: #1377564 + * ASoC: rt5640: Do not allow regmap to use bulk read-write operations + - LP: #1377564 + * drm/i915: Remove bogus __init annotation from DMI callbacks + - LP: #1377564 + * hwmon: (ds1621) Update zbits after conversion rate change + - LP: #1377564 + * arm64: ptrace: fix compat hardware watchpoint reporting + - LP: #1377564 + * ARM/ARM64: KVM: Nuke Hyp-mode tlbs before enabling MMU + - LP: #1377564 + * arm/arm64: KVM: Complete WFI/WFE instructions + - LP: #1377564 + * get rid of propagate_umount() mistakenly treating slaves as busy. + - LP: #1377564 + * fix EBUSY on umount() from MNT_SHRINKABLE + - LP: #1377564 + * regmap: Don't attempt block writes when syncing cache on single_rw + devices + - LP: #1377564 + * drm/vmwgfx: Fix a potential infinite spin waiting for fifo idle + - LP: #1377564 + * ALSA: hda - Fix digital mic on Acer Aspire 3830TG + - LP: #1377564 + * xfs: don't dirty buffers beyond EOF + - LP: #1377564 + * xfs: don't zero partial page cache pages during O_DIRECT writes + - LP: #1377564 + * xfs: don't zero partial page cache pages during O_DIRECT writes + - LP: #1377564 + * ALSA: hda - Fix COEF setups for ALC1150 codec + - LP: #1377564 + * i2c: rcar: fix MNR interrupt handling + - LP: #1377564 + * i2c: mv64xxx: continue probe when clock-frequency is missing + - LP: #1377564 + * i2c: at91: Fix a race condition during signal handling in + at91_do_twi_xfer. + - LP: #1377564 + * i2c: at91: add bound checking on SMBus block length bytes + - LP: #1377564 + * aio: add missing smp_rmb() in read_events_ring + - LP: #1377564 + * KEYS: Fix use-after-free in assoc_array_gc() + - LP: #1377564 + * ACPI / cpuidle: fix deadlock between cpuidle_lock and cpu_hotplug.lock + - LP: #1377564 + * USB: fix build error with CONFIG_PM_RUNTIME disabled + - LP: #1377564 + * Linux 3.13.11.8 + - LP: #1377564 + * powerpc: Fix kdump hang issue on p8 with relocation on exception + enabled. + - LP: #1352056 + * net-gre-gro: Fix a bug that breaks the forwarding path + - LP: #1377851 + + -- Luis Henriques Thu, 09 Oct 2014 10:31:36 +0100 + +linux (3.13.0-37.64) trusty; urgency=low + + [ Joseph Salisbury ] + + * Release Tracking Bug + - LP: #1372576 + + [ dann frazier ] + + * [Config] CONFIG_HW_RANDOM_XGENE=m on arm64 + + [ Edward Lin ] + + * SAUCE: Add use_native_backlight quirk for Dell Inspiron 5721/3521 + - LP: #1354253, #1354313 + + [ Tim Gardner ] + + * SAUCE: Fix nfs oops stable regression + - LP: #1348670 + * [Config] Add mpt3sas to d-i + - LP: #1368907 + * [Config] CONFIG_X86_16BIT=y + - LP: #1371601 + + [ Timo Aaltonen ] + + * SAUCE: i915_bdw: Rebase to v3.15.8 + - LP: #1359213 + + [ Upstream Kernel Changes ] + + * Revert "x86-64, modify_ldt: Make support for 16-bit segments a runtime + option" + - LP: #1371601 + * mmc: rtsx: add R1-no-CRC mmc command type handle + - LP: #1365378 + * rpc_pipe: remove the clntXX dir if creating the pipe fails + - LP: #1365869 + * sunrpc: add an "info" file for the dummy gssd pipe + - LP: #1365869 + * rpc_pipe: fix cleanup of dummy gssd directory when notification fails + - LP: #1365869 + * hwrng: xgene - add support for APM X-Gene SoC RNG support + - LP: #1365593 + * Documentation: rng: Add X-Gene SoC RNG driver documentation + - LP: #1365593 + * arm64: dts: add random number generator dts node to APM X-Gene + platform. + - LP: #1365593 + * xen/balloon: cancel ballooning if adding new memory failed + - LP: #1304001 + * x86/xen: resume timer irqs early + - LP: #1368724 + * xen/manage: Always freeze/thaw processes when suspend/resuming + - LP: #1368724 + * scsi_transport_sas: move bsg destructor into sas_rphy_remove + - LP: #1368991 + * drm/i915: Enable 5.4Ghz (HBR2) link rate for Displayport 1.2-capable + devices + - LP: #1369633 + * bnx2x: Fix link for KR with swapped polarity lane + - LP: #1370716 + * drm: add DRM_CAPs for cursor size + - LP: #1359213 + * drm/dp: Add AUX channel infrastructure + - LP: #1359213 + * drm/dp: Add drm_dp_dpcd_read_link_status() + - LP: #1359213 + * drm/dp: Add DisplayPort link helpers + - LP: #1359213 + * drm/dp: Allow registering AUX channels as I2C busses + - LP: #1359213 + * drm/dp: let drivers specify the name of the I2C-over-AUX adapter + - LP: #1359213 + * drm/dp: make aux retries less chatty + - LP: #1359213 + * Bluetooth: Enable Atheros 0cf3:311e for firmware upload + - LP: #1371477 + * bnx2x: fix crash during TSO tunneling + - LP: #1371601 + * inetpeer: get rid of ip_id_count + - LP: #1371601 + * ip: make IP identifiers less predictable + - LP: #1371601 + * tcp: Fix integer-overflows in TCP veno + - LP: #1371601 + * tcp: Fix integer-overflow in TCP vegas + - LP: #1371601 + * macvlan: Initialize vlan_features to turn on offload support. + - LP: #1371601 + * net: Correctly set segment mac_len in skb_segment(). + - LP: #1371601 + * iovec: make sure the caller actually wants anything in + memcpy_fromiovecend + - LP: #1371601 + * batman-adv: Fix out-of-order fragmentation support + - LP: #1371601 + * sctp: fix possible seqlock seadlock in sctp_packet_transmit() + - LP: #1371601 + * sparc64: Fix argument sign extension for compat_sys_futex(). + - LP: #1371601 + * sparc64: Make itc_sync_lock raw + - LP: #1371601 + * sparc64: Fix executable bit testing in set_pmd_at() paths. + - LP: #1371601 + * sparc64: Fix huge PMD invalidation. + - LP: #1371601 + * sparc64: Fix bugs in get_user_pages_fast() wrt. THP. + - LP: #1371601 + * sparc64: Fix hex values in comment above pte_modify(). + - LP: #1371601 + * sparc64: Don't use _PAGE_PRESENT in pte_modify() mask. + - LP: #1371601 + * sparc64: Handle 32-bit tasks properly in compute_effective_address(). + - LP: #1371601 + * sparc64: Fix top-level fault handling bugs. + - LP: #1371601 + * sparc64: Fix range check in kern_addr_valid(). + - LP: #1371601 + * sparc64: Use 'ILOG2_4MB' instead of constant '22'. + - LP: #1371601 + * sparc64: Add basic validations to {pud,pmd}_bad(). + - LP: #1371601 + * sparc64: Give more detailed information in {pgd,pmd}_ERROR() and kill + pte_ERROR(). + - LP: #1371601 + * sparc64: Don't bark so loudly about 32-bit tasks generating 64-bit + fault addresses. + - LP: #1371601 + * sparc64: Fix huge TSB mapping on pre-UltraSPARC-III cpus. + - LP: #1371601 + * sparc64: Add membar to Niagara2 memcpy code. + - LP: #1371601 + * sparc64: Do not insert non-valid PTEs into the TSB hash table. + - LP: #1371601 + * sparc64: Guard against flushing openfirmware mappings. + - LP: #1371601 + * bbc-i2c: Fix BBC I2C envctrl on SunBlade 2000 + - LP: #1371601 + * sunsab: Fix detection of BREAK on sunsab serial console + - LP: #1371601 + * sparc64: ldc_connect() should not return EINVAL when handshake is in + progress. + - LP: #1371601 + * arch/sparc/math-emu/math_32.c: drop stray break operator + - LP: #1371601 + * x86-64, espfix: Don't leak bits 31:16 of %esp returning to 16-bit stack + - LP: #1371601 + * x86, espfix: Move espfix definitions into a separate header file + - LP: #1371601 + * x86, espfix: Fix broken header guard + - LP: #1371601 + * x86, espfix: Make espfix64 a Kconfig option, fix UML + - LP: #1371601 + * x86, espfix: Make it possible to disable 16-bit support + - LP: #1371601 + * x86_64/entry/xen: Do not invoke espfix64 on Xen + - LP: #1371601 + * ALSA: usb-audio: fix BOSS ME-25 MIDI regression + - LP: #1371601 + * ASoC: wm8994: Prevent double lock of accdet_lock mutex on wm1811 + - LP: #1371601 + * v4l: vsp1: Remove the unneeded vsp1_video_buffer video field + - LP: #1371601 + * ASoC: max98090: Fix missing free_irq + - LP: #1371601 + * KVM: x86: Inter-privilege level ret emulation is not implemeneted + - LP: #1371601 + * au0828: Only alt setting logic when needed + - LP: #1371601 + * ASoC: pcm: fix dpcm_path_put in dpcm runtime update + - LP: #1371601 + * crypto: ux500 - make interrupt mode plausible + - LP: #1371601 + * Bluetooth: btmrvl: wait for HOST_SLEEP_ENABLE event in suspend + - LP: #1371601 + * ASoC: adau1701: fix adau1701_reg_read() + - LP: #1371601 + * ASoC: wm_adsp: Add missing MODULE_LICENSE + - LP: #1371601 + * regulator: arizona-ldo1: remove bypass functionality + - LP: #1371601 + * ASoC: samsung: Correct I2S DAI suspend/resume ops + - LP: #1371601 + * drm/tilcdc: panel: fix dangling sysfs connector node + - LP: #1371601 + * drm/tilcdc: slave: fix dangling sysfs connector node + - LP: #1371601 + * drm/tilcdc: tfp410: fix dangling sysfs connector node + - LP: #1371601 + * drm/tilcdc: panel: fix leak when unloading the module + - LP: #1371601 + * drm/tilcdc: fix release order on exit + - LP: #1371601 + * drm/tilcdc: fix double kfree + - LP: #1371601 + * ACPICA: Utilities: Fix memory leak in acpi_ut_copy_iobject_to_iobject + - LP: #1371601 + * stable_kernel_rules: Add pointer to netdev-FAQ for network patches + - LP: #1371601 + * USB: ehci-pci: USB host controller support for Intel Quark X1000 + - LP: #1371601 + * debugfs: Fix corrupted loop in debugfs_remove_recursive + - LP: #1371601 + * serial: core: Preserve termios c_cflag for console resume + - LP: #1371601 + * mtd/ftl: fix the double free of the buffers allocated in build_maps() + - LP: #1371601 + * ext4: Fix block zeroing when punching holes in indirect block files + - LP: #1371601 + * ext4: fix punch hole on files with indirect mapping + - LP: #1371601 + * x86: don't exclude low BIOS area when allocating address space for + non-PCI cards + - LP: #1371601 + * PCI: Configure ASPM when enabling device + - LP: #1371601 + * Bluetooth: never linger on process exit + - LP: #1371601 + * ASoC: blackfin: use samples to set silence + - LP: #1371601 + * USB: OHCI: fix bugs in debug routines + - LP: #1371601 + * USB: OHCI: don't lose track of EDs when a controller dies + - LP: #1371601 + * mei: start disconnect request timer consistently + - LP: #1371601 + * mei: fix return value on disconnect timeout + - LP: #1371601 + * USB: Fix persist resume of some SS USB devices + - LP: #1371601 + * media-device: Remove duplicated memset() in media_enum_entities() + - LP: #1371601 + * Bluetooth: Avoid use of session socket after the session gets freed + - LP: #1371601 + * xc5000: Fix get_frequency() + - LP: #1371601 + * xc4000: Fix get_frequency() + - LP: #1371601 + * CAPABILITIES: remove undefined caps from all processes + - LP: #1371601 + * scsi: add a blacklist flag which enables VPD page inquiries + - LP: #1371601 + * bfa: Fix undefined bit shift on big-endian architectures with 32-bit + DMA address + - LP: #1371601 + * hpsa: fix bad -ENOMEM return value in hpsa_big_passthru_ioctl + - LP: #1371601 + * Drivers: scsi: storvsc: Change the limits to reflect the values on the + host + - LP: #1371601 + * Drivers: scsi: storvsc: Set cmd_per_lun to reflect value supported by + the Host + - LP: #1371601 + * Drivers: scsi: storvsc: Filter commands based on the storage protocol + version + - LP: #1371601 + * Drivers: scsi: storvsc: Fix a bug in handling VMBUS protocol version + - LP: #1371601 + * Drivers: scsi: storvsc: Implement a eh_timed_out handler + - LP: #1371601 + * drivers: scsi: storvsc: Set srb_flags in all cases + - LP: #1371601 + * drivers: scsi: storvsc: Correctly handle TEST_UNIT_READY failure + - LP: #1371601 + * x86_64/vsyscall: Fix warn_bad_vsyscall log output + - LP: #1371601 + * KVM: PPC: Book3S PR: Take SRCU read lock around RTAS kvm_read_guest() + call + - LP: #1371601 + * spi: orion: fix incorrect handling of cell-index DT property + - LP: #1371601 + * mfd: omap-usb-host: Fix improper mask use. + - LP: #1371601 + * tpm: Add missing tpm_do_selftest to ST33 I2C driver + - LP: #1371601 + * tpm: missing tpm_chip_put in tpm_get_random() + - LP: #1371601 + * scsi: do not issue SCSI RSOC command to Promise Vtrak E610f + - LP: #1371601 + * hwmon: (ads1015) Fix off-by-one for valid channel index checking + - LP: #1371601 + * ALSA: hda - fix an external mic jack problem on a HP machine + - LP: #1350148, #1371601 + * MIPS: tlbex: Fix a missing statement for HUGETLB + - LP: #1371601 + * MIPS: Prevent user from setting FCSR cause bits + - LP: #1371601 + * KVM: x86: always exit on EOIs for interrupts listed in the IOAPIC redir + table + - LP: #1371601 + * MIPS: Remove BUG_ON(!is_fpu_owner()) in do_ade() + - LP: #1371601 + * MIPS: ptrace: Test correct task's flags in task_user_regset_view() + - LP: #1371601 + * MIPS: asm/reg.h: Make 32- and 64-bit definitions available at the same + time + - LP: #1371601 + * MIPS: ptrace: Change GP regset to use correct core dump register layout + - LP: #1371601 + * md/raid1,raid10: always abort recover on write error. + - LP: #1371601 + * ext4: fix ext4_discard_allocated_blocks() if we can't allocate the pa + struct + - LP: #1371601 + * hwmon: (lm85) Fix various errors on attribute writes + - LP: #1371601 + * hwmon: (lm78) Fix overflow problems seen when writing large temperature + limits + - LP: #1371601 + * hwmon: (amc6821) Fix possible race condition bug + - LP: #1371601 + * MIPS: GIC: Prevent array overrun + - LP: #1371601 + * mnt: Add tests for unprivileged remount cases that have found to be + faulty + - LP: #1371601 + * ARM: OMAP3: Fix choice of omap3_restore_es function in OMAP34XX + rev3.1.2 case. + - LP: #1371601 + * netlabel: fix a problem when setting bits below the previously lowest + bit + - LP: #1371601 + * netlabel: fix the horribly broken catmap functions + - LP: #1371601 + * netlabel: fix the catmap walking functions + - LP: #1371601 + * drivers/i2c/busses: use correct type for dma_map/unmap + - LP: #1371601 + * NFSD: Decrease nfsd_users in nfsd_startup_generic fail + - LP: #1371601 + * MIPS: O32/32-bit: Fix bug which can cause incorrect system call + restarts + - LP: #1371601 + * IB/srp: Fix deadlock between host removal and multipathd + - LP: #1371601 + * USB: serial: ftdi_sio: Annotate the current Xsens PID assignments + - LP: #1371601 + * USB: serial: ftdi_sio: Add support for new Xsens devices + - LP: #1371601 + * USB: devio: fix issue with log flooding + - LP: #1371601 + * CIFS: Fix async reading on reconnects + - LP: #1371601 + * CIFS: Fix STATUS_CANNOT_DELETE error mapping for SMB2 + - LP: #1371601 + * xfs: ensure verifiers are attached to recovered buffers + - LP: #1371601 + * drm/tegra: add MODULE_DEVICE_TABLEs + - LP: #1371601 + * ALSA: virtuoso: add Xonar Essence STX II support + - LP: #1371601 + * hwmon: (gpio-fan) Prevent overflow problem when writing large limits + - LP: #1371601 + * hwmon: (sis5595) Prevent overflow problem when writing large limits + - LP: #1371601 + * NFS: Fix /proc/fs/nfsfs/servers and /proc/fs/nfsfs/volumes + - LP: #1371601 + * drm/ttm: Fix possible division by 0 in ttm_dma_pool_shrink_scan(). + - LP: #1371601 + * drm/ttm: Choose a pool to shrink correctly in + ttm_dma_pool_shrink_scan(). + - LP: #1371601 + * drm/ttm: Use mutex_trylock() to avoid deadlock inside shrinker + functions. + - LP: #1371601 + * drm/ttm: Fix possible stack overflow by recursive shrinker calls. + - LP: #1371601 + * drm/ttm: Pass GFP flags in order to avoid deadlock. + - LP: #1371601 + * powerpc/mm/numa: Fix break placement + - LP: #1371601 + * powerpc/pci: Reorder pci bus/bridge unregistration during PHB removal + - LP: #1371601 + * drm/radeon: load the lm63 driver for an lm64 thermal chip. + - LP: #1371601 + * drm/radeon: set VM base addr using the PFP v2 + - LP: #1371601 + * drm/radeon/atom: add new voltage fetch function for hawaii + - LP: #1371601 + * drm/radeon/dpm: handle voltage info fetching on hawaii + - LP: #1371601 + * drm/radeon: re-enable dpm by default on cayman + - LP: #1371601 + * drm/radeon: re-enable dpm by default on BTC + - LP: #1371601 + * drm/radeon: use packet2 for nop on hawaii with old firmware + - LP: #1371601 + * drm/radeon: tweak ACCEL_WORKING2 query for hawaii + - LP: #1371601 + * KVM: nVMX: fix "acknowledge interrupt on exit" when APICv is in use + - LP: #1371601 + * RDMA/iwcm: Use a default listen backlog if needed + - LP: #1371601 + * x86/efi: Enforce CONFIG_RELOCATABLE for EFI boot stub + - LP: #1371601 + * net: sun4i-emac: fix memory leak on bad packet + - LP: #1371601 + * hwmon: (ads1015) Fix out-of-bounds array access + - LP: #1371601 + * hwmon: (dme1737) Prevent overflow problem when writing large limits + - LP: #1371601 + * s390/locking: Reenable optimistic spinning + - LP: #1371601 + * ring-buffer: Up rb_iter_peek() loop count to 3 + - LP: #1371601 + * ring-buffer: Always reset iterator to reader page + - LP: #1371601 + * kernel/smp.c:on_each_cpu_cond(): fix warning in fallback path + - LP: #1371601 + * drm/i915: read HEAD register back in init_ring_common() to enforce + ordering + - LP: #1371601 + * vm_is_stack: use for_each_thread() rather then buggy + while_each_thread() + - LP: #1371601 + * libceph: set last_piece in ceph_msg_data_pages_cursor_init() correctly + - LP: #1371601 + * drm/nouveau: Bump version from 1.1.1 to 1.1.2 + - LP: #1371601 + * ALSA: usb-audio: fix BOSS ME-25 MIDI regression + - LP: #1371601 + * ALSA: hda/ca0132 - Don't try loading firmware at resume when already + failed + - LP: #1371601 + * carl9170: fix sending URBs with wrong type when using full-speed + - LP: #1371601 + * powerpc/pseries: Failure on removing device node + - LP: #1371601 + * Btrfs: Fix memory corruption by ulist_add_merge() on 32bit arch + - LP: #1371601 + * Btrfs: fix csum tree corruption, duplicate and outdated checksums + - LP: #1371601 + * ext4: fix BUG_ON in mb_free_blocks() + - LP: #1371601 + * x86/espfix/xen: Fix allocation of pages for paravirt page tables + - LP: #1371601 + * Linux 3.13.11.7 + - LP: #1371601 + * HID: magicmouse: sanity check report size in raw_event() callback + - LP: #1370025 + - CVE-2014-3181 + * HID: fix a couple of off-by-ones + - LP: #1370035 + - CVE-2014-3184 + * USB: whiteheat: Added bounds checking for bulk command response + - LP: #1370036 + - CVE-2014-3185 + * HID: picolcd: sanity check report size in raw_event() callback + - LP: #1370038 + - CVE-2014-3186 + * KEYS: Fix termination condition in assoc array garbage collection + - LP: #1370041 + - CVE-2014-3631 + * udf: Fold udf_fill_inode() into __udf_read_inode() + - LP: #1370042 + - CVE-2014-6410 + * udf: Avoid infinite loop when processing indirect ICBs + - LP: #1370042 + - CVE-2014-6410 + * libceph: add process_one_ticket() helper + - LP: #1370044, #1370046, #1370047 + - CVE-2014-6418 + * libceph: do not hard code max auth ticket len + - LP: #1370044, #1370046, #1370047 + - CVE-2014-6418 + + -- Joseph Salisbury Mon, 22 Sep 2014 15:51:07 -0400 + +linux (3.13.0-36.63) trusty; urgency=low + + [ Joseph Salisbury ] + + * Release Tracking Bug + - LP: #1365052 + + [ 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 + + [ Ming Lei ] + + * SAUCE: (no-up) Drop APM X-Gene SoC Ethernet driver + - LP: #1360140 + * [Config] Drop XGENE entries + - LP: #1360140 + * [Config] CONFIG_NET_XGENE=m for arm64 + - LP: #1360140 + + [ Stefan Bader ] + + * SAUCE: Add compat macro for skb_get_hash + - LP: #1358162 + * SAUCE: bcache: prevent crash on changing writeback_running + - LP: #1357295 + + [ Suman Tripathi ] + + * SAUCE: (no-up) arm64: Fix the csr-mask for APM X-Gene SoC AHCI SATA PHY + clock DTS node. + - LP: #1359489 + * SAUCE: (no-up) ahci_xgene: Skip the PHY and clock initialization if + already configured by the firmware. + - LP: #1359501 + * SAUCE: (no-up) ahci_xgene: Fix the link down in first attempt for the + APM X-Gene SoC AHCI SATA host controller driver. + - LP: #1359507 + + [ Tuan Phan ] + + * SAUCE: (no-up) pci-xgene-msi: fixed deadlock in irq_set_affinity + - LP: #1359514 + + [ Upstream Kernel Changes ] + + * iwlwifi: mvm: Add a missed beacons threshold + - LP: #1349572 + * mac80211: reset probe_send_count also in HW_CONNECTION_MONITOR case + - LP: #1349572 + * genirq: Add an accessor for IRQ_PER_CPU flag + - LP: #1357527 + * arm64: perf: add support for percpu pmu interrupt + - LP: #1357527 + * cifs: sanity check length of data to send before sending + - LP: #1283101 + * KVM: nVMX: Pass vmexit parameters to nested_vmx_vmexit + - LP: #1329434 + * KVM: nVMX: Rework interception of IRQs and NMIs + - LP: #1329434 + * KVM: vmx: disable APIC virtualization in nested guests + - LP: #1329434 + * HID: Add transport-driver functions to the USB HID interface. + - LP: #1353021 + * ahci_xgene: Removing NCQ support from the APM X-Gene SoC AHCI SATA Host + Controller driver. + - LP: #1358498 + * fold d_kill() and d_free() + - LP: #1354234 + * fold try_prune_one_dentry() + - LP: #1354234 + * new helper: dentry_free() + - LP: #1354234 + * expand the call of dentry_lru_del() in dentry_kill() + - LP: #1354234 + * dentry_kill(): don't try to remove from shrink list + - LP: #1354234 + * don't remove from shrink list in select_collect() + - LP: #1354234 + * more graceful recovery in umount_collect() + - LP: #1354234 + * dcache: don't need rcu in shrink_dentry_list() + - LP: #1354234 + * lift the "already marked killed" case into shrink_dentry_list() + * split dentry_kill() + - LP: #1354234 + * expand dentry_kill(dentry, 0) in shrink_dentry_list() + - LP: #1354234 + * shrink_dentry_list(): take parent's ->d_lock earlier + - LP: #1354234 + * dealing with the rest of shrink_dentry_list() livelock + - LP: #1354234 + * dentry_kill() doesn't need the second argument now + - LP: #1354234 + * dcache: add missing lockdep annotation + - LP: #1354234 + * fs: convert use of typedef ctl_table to struct ctl_table + - LP: #1354234 + * lock_parent: don't step on stale ->d_parent of all-but-freed one + - LP: #1354234 + * tools/testing/selftests/ptrace/peeksiginfo.c: add PAGE_SIZE definition + - LP: #1358855 + * x86, irq, pic: Probe for legacy PIC and set legacy_pic appropriately + - LP: #1317697 + * bnx2x: Fix kernel crash and data miscompare after EEH recovery + - LP: #1353105 + * bnx2x: Adapter not recovery from EEH error injection + - LP: #1353105 + * Fix: module signature vs tracepoints: add new TAINT_UNSIGNED_MODULE + - LP: #1359670 + * bcache: fix crash on shutdown in passthrough mode + - LP: #1357295 + * bcache: fix uninterruptible sleep in writeback thread + - LP: #1357295 + * namespaces: Use task_lock and not rcu to protect nsproxy + - LP: #1328088 + * MAINTAINERS: Add entry for APM X-Gene SoC ethernet driver + - LP: #1360140 + * Documentation: dts: Add bindings for APM X-Gene SoC ethernet driver + - LP: #1360140 + * dts: Add bindings for APM X-Gene SoC ethernet driver + - LP: #1360140 + * drivers: net: Add APM X-Gene SoC ethernet driver support. + - LP: #1360140 + * powerpc/mm: Add new "set" flag argument to pte/pmd update function + - LP: #1357014 + * 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 + * powerpc: subpage_protect: Increase the array size to take care of 64TB + - LP: #1357014 + * mfd: rtsx: Add set pull control macro and simplify rtl8411 + - LP: #1361086 + * mfd: rtsx: Add support for card reader rtl8402 + - LP: #1361086 + * kvm: iommu: fix the third parameter of kvm_iommu_put_pages + (CVE-2014-3601) + - LP: #1362443 + - CVE-2014-3601 + * isofs: Fix unbounded recursion when processing relocated directories + - LP: #1362447, #1362448 + - CVE-2014-5472 + * net: sctp: inherit auth_capable on INIT collisions + - LP: #1349804 + - CVE-2014-5077 + * blk-mq: fix initializing request's start time + - LP: #1297522 + + [ 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 + + -- Joseph Salisbury Wed, 03 Sep 2014 12:13:43 -0400 + +linux (3.13.0-35.62) trusty; urgency=low + + [ Joseph Salisbury ] + + * Release Tracking Bug + - LP: #1357148 + + [ Brad Figg ] + + * Start new release + + [ dann frazier ] + + * SAUCE: (no-up) Fix build failure on arm64 + - LP: #1353657 + * [debian] Allow for package revisions condusive for branching + + [ David Henningsson ] + + * SAUCE: Call broadwell specific functions from the hda driver + - LP: #1317865 + + [ Edward Lin ] + + * SAUCE: (no-up) Add use native backlight quirk for Dell Inspiron + 5547/5447 + - LP: #1332437 + + [ Imre Deak ] + + * SAUCE: drm/i915: move power domain init earlier during system resume + - LP: #1353405 + + [ Jani Nikula ] + + * SAUCE: drm/i915: use lane count and link rate from VBT as minimums for + eDP + - LP: #1338582 + * SAUCE: drm/i915/dp: force eDP lane count to max available lanes on BDW + - LP: #1338582 + * SAUCE: drm/i915: provide interface for audio driver to query cdclk + - LP: #1188091 + * SAUCE: drm/i915: demote opregion excessive timeout WARN_ONCE to + DRM_INFO_ONCE + - LP: #1351014 + + [ Joseph Salisbury ] + + * [Config] updateconfigs after Linux 3.13.11.6 updates + + [ Luis Henriques ] + + * Revert "[Packaging] linux-udeb-flavour -- standardise on linux prefix" + + [ Ming Lei ] + + * Revert "SAUCE: (no-up) ata: Fix the dma state machine lockup for the + IDENTIFY DEVICE PIO mode command." + - LP: #1335645 + + [ Paulo Zanoni ] + + * SAUCE: drm/i915: consider the source max DP lane count too + - LP: #1338582 + + [ Tim Gardner ] + + * [Config] CONFIG_GPIO_SYSFS=y + - LP: #1342153 + * [Config] CONFIG_KEYS_DEBUG_PROC_KEYS=y + - LP: #1344405 + * [Config] updateconfigs + * [Config] CONFIG_SCSI_IPR_TRACE=y, CONFIG_SCSI_IPR_DUMP=y + - LP: #1343109 + * [Config] CONFIG_CONTEXT_TRACKING_FORCE=n + - LP: #1349028 + + [ Timo Aaltonen ] + + * SAUCE: Fix a typo in hda i915_bdw support. + - LP: #1343140 + + [ Upstream Kernel Changes ] + + * Revert "net/mlx4_en: Fix bad use of dev_id" + - LP: #1347012 + * Revert "ACPI / AC: Remove AC's proc directory." + - LP: #1356913 + * Revert "mac80211: move "bufferable MMPDU" check to fix AP mode scan" + - LP: #1356913 + * mm, pcp: allow restoring percpu_pagelist_fraction default + - LP: #1347088 + * net: Fix permission check in netlink_connect() + - LP: #1312989 + * netlink: Rename netlink_capable netlink_allowed + - LP: #1312989 + * net: Move the permission check in sock_diag_put_filterinfo to + packet_diag_dump + - LP: #1312989 + * net: Add variants of capable for use on on sockets + - LP: #1312989 + * net: Add variants of capable for use on netlink messages + - LP: #1312989 + * net: Use netlink_ns_capable to verify the permisions of netlink + messages + - LP: #1312989 + * netlink: Only check file credentials for implicit destinations + - LP: #1312989 + * igb: fix stats for i210 rx_fifo_errors + - LP: #1338893 + * HID: use multi input quirk for 22b9:2968 + - LP: #1339567 + * crypto/nx: disable NX on little endian builds + - LP: #1338666 + * ACPI / video: Add Dell Inspiron 5737 to the blacklist + - LP: #1250401 + * Input: elantech - deal with clickpads reporting right button events + - LP: #1188025 + * net/mlx4_core: Enforce irq affinity changes immediatly + - LP: #1326108 + * cpumask: Utility function to set n'th cpu - local cpu first + - LP: #1326108 + * net/mlx4_en: Use affinity hint + - LP: #1326108 + * net/mlx4_en: Don't use irq_affinity_notifier to track changes in IRQ + affinity map + - LP: #1326108 + * net/mlx4_en: IRQ affinity hint is not cleared on port down + - LP: #1326108 + * Subject: net: Allow tc changes in user namespaces + - LP: #1344049 + * net-gro: restore frag0 optimization + - LP: #1344323 + * Bluetooth: Fix redundant encryption request for reauthentication + - LP: #1347088 + * Bluetooth: Fix check for connection encryption + - LP: #1347088 + * introduce for_each_thread() to replace the buggy while_each_thread() + - LP: #1347088 + * NFS: Don't declare inode uptodate unless all attributes were checked + - LP: #1347088 + * usb: dwc3: gadget: clear stall when disabling endpoint + - LP: #1347088 + * ACPICA: utstring: Check array index bound before use. + - LP: #1347088 + * mtip32xx: Increase timeout for STANDBY IMMEDIATE command + - LP: #1347088 + * mtip32xx: Remove dfs_parent after pci unregister + - LP: #1347088 + * mtip32xx: Fix ERO and NoSnoop values in PCIe upstream on AMD systems + - LP: #1347088 + * extcon: max77693: Fix two NULL pointer exceptions on missing pdata + - LP: #1347088 + * extcon: max8997: Fix NULL pointer exception on missing pdata + - LP: #1347088 + * builddeb: use $OBJCOPY variable instead of objcopy + - LP: #1347088 + * bluetooth: hci_ldisc: fix deadlock condition + - LP: #1347088 + * powerpc/pseries: Fix overwritten PE state + - LP: #1347088 + * PCI: Add new ID for Intel GPU "spurious interrupt" quirk + - LP: #1347088 + * x86-32, espfix: Remove filter for espfix32 due to race + - LP: #1347088 + * genirq: Sanitize spurious interrupt detection of threaded irqs + - LP: #1347088 + * Drivers: hv: balloon: Ensure pressure reports are posted regularly + - LP: #1347088 + * x86, x32: Use compat shims for io_{setup,submit} + - LP: #1347088 + * iwlwifi: pcie: try to get ownership several times + - LP: #1347088 + * ext4: fix data integrity sync in ordered mode + - LP: #1347088 + * UBIFS: fix an mmap and fsync race condition + - LP: #1347088 + * [media] rtl28xxu: add USB ID for Genius TVGo DVB-T03 + - LP: #1347088 + * [media] rtl28xxu: add 1b80:d395 Peak DVB-T USB + - LP: #1347088 + * [media] rtl28xxu: add [1b80:d39d] Sveon STV20 + - LP: #1347088 + * [media] rtl28xxu: add [1b80:d3af] Sveon STV27 + - LP: #1347088 + * ASoC: max98090: Fix reset at resume time + - LP: #1347088 + * ACPI: Fix conflict between customized DSDT and DSDT local copy + - LP: #1347088 + * PM / OPP: fix incorrect OPP count handling in of_init_opp_table + - LP: #1347088 + * Target/iser: Bail from accept_np if np_thread is trying to close + - LP: #1347088 + * Target/iser: Fix hangs in connection teardown + - LP: #1347088 + * HID: core: fix validation of report id 0 + - LP: #1347088 + * IB/srp: Fix a sporadic crash triggered by cable pulling + - LP: #1347088 + * Target/iser: Improve cm events handling + - LP: #1347088 + * Target/iser: Wait for proper cleanup before unloading + - LP: #1347088 + * mtd: nand: omap: fix BCHx ecc.correct to return detected bit-flips in + erased-page + - LP: #1347088 + * mtd: eLBC NAND: fix subpage write support + - LP: #1347088 + * reiserfs: call truncate_setsize under tailpack mutex + - LP: #1347088 + * ARM: stacktrace: avoid listing stacktrace functions in stacktrace + - LP: #1347088 + * SUNRPC: Fix a module reference leak in svc_handle_xprt + - LP: #1347088 + * [media] uvcvideo: Fix clock param realtime setting + - LP: #1347088 + * [media] ivtv: Fix Oops when no firmware is loaded + - LP: #1347088 + * CIFS: Fix memory leaks in SMB2_open + - LP: #1347088 + * iio:adc:max1363 incorrect resolutions for max11604, max11605, max11610 + and max11611. + - LP: #1347088 + * staging/mt29f_spinand: Terminate of match table + - LP: #1347088 + * mac80211: fix IBSS join by initializing last_scan_completed + - LP: #1347088 + * KVM: lapic: sync highest ISR to hardware apic on EOI + - LP: #1347088 + * s390/time: cast tv_nsec to u64 prior to shift in update_vsyscall + - LP: #1347088 + * ahci: add PCI ID for Marvell 88SE91A0 SATA Controller + - LP: #1347088 + * ext4: fix zeroing of page during writeback + - LP: #1347088 + * ext4: fix wrong assert in ext4_mb_normalize_request() + - LP: #1347088 + * IB/mlx5: add missing padding at end of struct mlx5_ib_create_cq + - LP: #1347088 + * IB/mlx5: add missing padding at end of struct mlx5_ib_create_srq + - LP: #1347088 + * IB/qib: Fix port in pkey change event + - LP: #1347088 + * IB/ipath: Translate legacy diagpkt into newer extended diagpkt + - LP: #1347088 + * mei: me: drop harmful wait optimization + - LP: #1347088 + * mei: me: read H_CSR after asserting reset + - LP: #1347088 + * usb: usbtest: fix unlink write error with pattern 1 + - LP: #1347088 + * s390/lowcore: reserve 96 bytes for IRB in lowcore + - LP: #1347088 + * mac80211: fix a memory leak on sta rate selection table + - LP: #1347088 + * mac80211: don't check netdev state for debugfs read/write + - LP: #1347088 + * mtd: pxa3xx_nand: make the driver work on big-endian systems + - LP: #1347088 + * hv: use correct order when freeing monitor_pages + - LP: #1347088 + * usb: qcserial: add Netgear AirCard 341U + - LP: #1347088 + * usb: qcserial: add additional Sierra Wireless QMI devices + - LP: #1347088 + * IB/umad: Fix error handling + - LP: #1347088 + * RDMA/cxgb4: Add missing padding at end of struct c4iw_create_cq_resp + - LP: #1347088 + * MIPS: KVM: Allocate at least 16KB for exception handlers + - LP: #1347088 + * block: virtio_blk: don't hold spin lock during world switch + - LP: #1347088 + * nfsd: getattr for FATTR4_WORD0_FILES_AVAIL needs the statfs buffer + - LP: #1347088 + * ASoC: tlv320aci3x: Fix custom snd_soc_dapm_put_volsw_aic3x() function + - LP: #1347088 + * UBIFS: Remove incorrect assertion in shrink_tnc() + - LP: #1347088 + * Bluetooth: Fix L2CAP deadlock + - LP: #1347088 + * vgaswitcheroo: switch the mux to the igp on power down when runpm is + enabled + - LP: #1347088 + * drm/radeon: fix typo in radeon_connector_is_dp12_capable() + - LP: #1347088 + * drm/radeon/dp: fix lane/clock setup for dp 1.2 capable devices + - LP: #1347088 + * drm/radeon/atom: fix dithering on certain panels + - LP: #1347088 + * drm/radeon: only apply hdmi bpc pll flags when encoder mode is hdmi + - LP: #1347088 + * ahci: Add Device ID for HighPoint RocketRaid 642L + - LP: #1347088 + * mm: fix sleeping function warning from __put_anon_vma + - LP: #1347088 + * hugetlb: restrict hugepage_migration_support() to x86_64 + - LP: #1347088 + * kthread: fix return value of kthread_create() upon SIGKILL. + - LP: #1347088 + * mm: vmscan: do not throttle based on pfmemalloc reserves if node has no + ZONE_NORMAL + - LP: #1347088 + * memcg: do not hang on OOM when killed by userspace OOM access to memory + reserves + - LP: #1347088 + * mm: page_alloc: use word-based accesses for get/set pageblock bitmaps + - LP: #1347088 + * mm/memory-failure.c-failure: send right signal code to correct thread + - LP: #1347088 + * mm/memory-failure.c: don't let collect_procs() skip over processes for + MF_ACTION_REQUIRED + - LP: #1347088 + * mm/memory-failure.c: support use of a dedicated thread to handle + SIGBUS(BUS_MCEERR_AO) + - LP: #1347088 + * powerpc/serial: Use saner flags when creating legacy ports + - LP: #1347088 + * ALSA: hda/realtek - Add support of ALC891 codec + - LP: #1347088 + * rbd: use reference counts for image requests + - LP: #1347088 + * iscsi-target: Reject mutual authentication with reflected CHAP_C + - LP: #1347088 + * powerpc/mm: Check paca psize is up to date for huge mappings + - LP: #1347088 + * IB/umad: Fix use-after-free on close + - LP: #1347088 + * mm: vmscan: clear kswapd's special reclaim powers before exiting + - LP: #1347088 + * rtc: rtc-at91rm9200: fix infinite wait for ACKUPD irq + - LP: #1347088 + * ptrace: fix fork event messages across pid namespaces + - LP: #1347088 + * idr: fix overflow bug during maximum ID calculation at maximum height + - LP: #1347088 + * Input: elantech - don't set bit 1 of reg_10 when the no_hw_res quirk is + set + - LP: #1347088 + * nfsd4: fix FREE_STATEID lockowner leak + - LP: #1347088 + * Btrfs: fix double free in find_lock_delalloc_range + - LP: #1347088 + * target: Set CMD_T_ACTIVE bit for Task Management Requests + - LP: #1347088 + * target: Use complete_all for se_cmd->t_transport_stop_comp + - LP: #1347088 + * iscsi-target: Fix ABORT_TASK + connection reset iscsi_queue_req memory + leak + - LP: #1347088 + * drm/nv50-/mc: fix kms pageflip events by reordering irq handling order. + - LP: #1347088 + * drm/nouveau/kms/nv04-nv40: fix pageflip events via special case. + - LP: #1347088 + * NFS: populate ->net in mount data when remounting + - LP: #1347088 + * watchdog: kempld-wdt: Use the correct value when configuring the + prescaler with the watchdog + - LP: #1347088 + * watchdog: ath79_wdt: avoid spurious restarts on AR934x + - LP: #1347088 + * watchdog: sp805: Set watchdog_device->timeout from ->set_timeout() + - LP: #1347088 + * fs,userns: Change inode_capable to capable_wrt_inode_uidgid + - LP: #1347088 + * powerpc: Add AT_HWCAP2 to indicate V.CRYPTO category support + - LP: #1347088 + * powerpc: Correct DSCR during TM context switch + - LP: #1347088 + * powerpc: Don't setup CPUs with bad status + - LP: #1347088 + * Target/iscsi: Fix sendtargets response pdu for iser transport + - LP: #1347088 + * target: Report correct response length for some commands + - LP: #1347088 + * dm thin: update discard_granularity to reflect the thin-pool blocksize + - LP: #1347088 + * ALSA: compress: Cancel the optimization of compiler and fix the size of + struct for all platform. + - LP: #1347088 + * hwmon: (ina2xx) Cast to s16 on shunt and current regs + - LP: #1347088 + * evm: prohibit userspace writing 'security.evm' HMAC value + - LP: #1347088 + * ALSA: hda - Add quirk for external mic on Lifebook U904 + - LP: #1328587, #1347088 + * ALSA: hda/realtek - Add more entry for enable HP mute led + - LP: #1347088 + * ALSA: hda/realtek - Add more entry for enable HP mute led + - LP: #1347088 + * staging: iio: tsl2x7x_core: fix proximity treshold + - LP: #1347088 + * iio: Fix endianness issue in ak8975_read_axis() + - LP: #1347088 + * rtmutex: Handle deadlock detection smarter + - LP: #1347088 + * rtmutex: Detect changes in the pi lock chain + - LP: #1347088 + * drm/i915: Disable FBC by default also on Haswell and later + - LP: #1347088 + * drm/i915: Avoid div-by-zero when pixel_multiplier is zero + - LP: #1347088 + * drm/i915: Reorder semaphore deadlock check + - LP: #1347088 + * iio: adc: at91: signedness bug in at91_adc_get_trigger_value_by_name() + - LP: #1347088 + * rtmutex: Plug slow unlock race + - LP: #1347088 + * ACPI / ia64 / sba_iommu: Restore the working initialization ordering + - LP: #1347088 + * epoll: fix use-after-free in eventpoll_release_file + - LP: #1347088 + * drm/nouveau/kms: reference vblank for crtc during pageflip. + - LP: #1347088 + * ARM: mvebu: DT: fix OpenBlocks AX3-4 RAM size + - LP: #1347088 + * USB: EHCI: avoid BIOS handover on the HASEE E200 + - LP: #1347088 + * arm64: Bug fix in stack alignment exception + - LP: #1347088 + * arm64: ptrace: change fs when passing kernel pointer to regset code + - LP: #1347088 + * arm64: uid16: fix __kernel_old_{gid,uid}_t definitions + - LP: #1347088 + * arm64: ptrace: fix empty registers set in prstatus of aarch32 process + core + - LP: #1347088 + * ALSA: control: Protect user controls against concurrent access + - LP: #1347088 + * ALSA: control: Fix replacing user controls + - LP: #1347088 + * ALSA: control: Don't access controls outside of protected regions + - LP: #1347088 + * ALSA: control: Handle numid overflow + - LP: #1347088 + * ALSA: control: Make sure that id->index does not overflow + - LP: #1347088 + * Bluetooth: Fix SSP acceptor just-works confirmation without MITM + - LP: #1347088 + * Bluetooth: Fix setting correct authentication information for SMP STK + - LP: #1347088 + * Bluetooth: Fix indicating discovery state when canceling inquiry + - LP: #1347088 + * Bluetooth: Fix locking of hdev when calling into SMP code + - LP: #1347088 + * Bluetooth: Allow change security level on ATT_CID in slave role + - LP: #1347088 + * rt2x00: disable TKIP on USB + - LP: #1347088 + * b43: fix frequency reported on G-PHY with /new/ firmware + - LP: #1347088 + * rt2x00: fix rfkill regression on rt2500pci + - LP: #1347088 + * blkcg: fix use-after-free in __blkg_release_rcu() by making blkcg_gq + refcnt an atomic_t + - LP: #1347088 + * rbd: handle parent_overlap on writes correctly + - LP: #1347088 + * ALSA: hda - hdmi: call overridden init on resume + - LP: #1347088 + * x86_32, entry: Do syscall exit work on badsys (CVE-2014-4508) + - LP: #1347088 + * hugetlb: fix copy_hugetlb_page_range() to handle migration/hwpoisoned + entry + - LP: #1347088 + * kernel/watchdog.c: remove preemption restrictions when restarting + lockup detector + - LP: #1347088 + * DMA, CMA: fix possible memory leak + - LP: #1347088 + * mm: fix crashes from mbind() merging vmas + - LP: #1347088 + * drm/i915: Hold the table lock whilst walking the file's idr and + counting the objects in debugfs + - LP: #1347088 + * [CIFS] fix mount failure with broken pathnames when smb3 mount with + mapchars option + - LP: #1347088 + * aio: fix aio request leak when events are reaped by userspace + - LP: #1347088 + * aio: fix kernel memory disclosure in io_getevents() introduced in v3.10 + - LP: #1347088 + * nfs: Fix cache_validity check in nfs_write_pageuptodate() + - LP: #1347088 + * powerpc: Don't skip ePAPR spin-table CPUs + - LP: #1347088 + * net: allwinner: emac: Add missing free_irq + - LP: #1347088 + * ALSA: usb-audio: Fix races at disconnection and PCM closing + - LP: #1347088 + * recordmcount/MIPS: Fix possible incorrect mcount_loc table entries in + modules + - LP: #1347088 + * MIPS: MSC: Prevent out-of-bounds writes to MIPS SC ioremap'd region + - LP: #1347088 + * ALSA: hda - restore BCLK M/N values when resuming HSW/BDW display + controller + - LP: #1347088 + * target: Fix left-over se_lun->lun_sep pointer OOPs + - LP: #1347088 + * iscsi-target: Explicily clear login response PDU in exception path + - LP: #1347088 + * efi-pstore: Fix an overflow on 32-bit builds + - LP: #1347088 + * lz4: fix another possible overrun + - LP: #1347088 + * iscsi-target: Avoid rejecting incorrect ITT for Data-Out + - LP: #1347088 + * iscsi-target: fix iscsit_del_np deadlock on unload + - LP: #1347088 + * Linux 3.13.11.5 + - LP: #1347088 + * powerpc/powernv: Fix endianness problems in EEH + - LP: #1340200 + * libahci: export ahci_qc_issue() and ahci_start_fix_rx() + - LP: #1335645 + * ahci_xgene: fix the dma state machine lockup for the IDENTIFY DEVICE + PIO mode command. + - LP: #1335645 + * fix build error in gpio-dwapb patch + - LP: #1348808 + * usb: Check if port status is equal to RxDetect + - LP: #1322409 + * net/mlx4_en: Protect MAC address modification with the state_lock mutex + - LP: #1347012 + * net/mlx4_en: Fix errors in MAC address changing when port is down + - LP: #1347012 + * bonding: Advertize vxlan offload features when supported + - LP: #1347012 + * net/mlx4_core: Fix the error flow when probing with invalid VF + configuration + - LP: #1347012 + * net/mlx4_en: Don't configure the HW vxlan parser when vxlan offloading + isn't set + - LP: #1347012 + * net/mlx4_core: Keep only one driver entry release mlx4_priv + - LP: #1347012 + * net/mlx4_core: Preserve pci_dev_data after __mlx4_remove_one() + - LP: #1347012 + * net/mlx4_core: Defer VF initialization till PF is fully initialized + - LP: #1347012 + * net/mlx4_core: Adjust port number in qp_attach wrapper when detaching + - LP: #1347012 + * net/mlx4_core: Fix slave id computation for single port VF + - LP: #1347012 + * net/mlx4_core: Load the Eth driver first + - LP: #1347012 + * net/mlx4_core: Don't issue PCIe speed/width checks for VFs + - LP: #1347012 + * net/mlx4_core: Add UPDATE_QP SRIOV wrapper support + - LP: #1347012 + * net/mlx4_core: Reset RoCE VF gids when guest driver goes down + - LP: #1347012 + * net/mlx4_en: Reduce memory consumption on kdump kernel + - LP: #1347012 + * net/mlx4_core: Use low memory profile on kdump kernel + - LP: #1347012 + * net/mlx4_en: current_mac isn't updated in port up + - LP: #1347012 + * net/mlx4_en: Disable blueflame using ethtool private flags + - LP: #1347012 + * net/mlx4_en: Fix mac_hash database inconsistency + - LP: #1347012 + * ext4: handle symlink properly with inline_data + - LP: #1349020 + * net/mlx4_en: cq->irq_desc wasn't set in legacy EQ's + - LP: #1354242 + * rtl8821ae: fixup staging driver for revised + ieee80211_is_robust_mgmt_frame + - LP: #1354469 + * 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 + * sunrpc: create a new dummy pipe for gssd to hold open + - LP: #1327563 + * sunrpc: replace sunrpc_net->gssd_running flag with a more reliable + check + - LP: #1327563 + * nfs: check if gssd is running before attempting to use krb5i auth in + SETCLIENTID call + - LP: #1327563 + * ACPI / PAD: call schedule() when need_resched() is true + - LP: #1356913 + * KVM: ioapic: fix assignment of ioapic->rtc_status.pending_eoi + (CVE-2014-0155) + - LP: #1356913 + * target: Explicitly clear ramdisk_mcp backend pages + - LP: #1356913 + * sctp: Fix sk_ack_backlog wrap-around problem + - LP: #1356913 + * mm: hugetlb: fix copy_hugetlb_page_range() + - LP: #1356913 + * x86_32, entry: Store badsys error code in %eax + - LP: #1356913 + * shmem: fix faulting into a hole while it's punched + - LP: #1356913 + * shmem: fix faulting into a hole, not taking i_mutex + - LP: #1356913 + * shmem: fix splicing from a hole while it's punched + - LP: #1356913 + * ipvs: Fix panic due to non-linear skb + - LP: #1356913 + * ALSA: hda - verify pin:converter connection on unsol event for HSW and + VLV + - LP: #1356913 + * ALSA: hda - verify pin:cvt connection on preparing a stream for Intel + HDMI codec + - LP: #1356913 + * x86/xen: safely map and unmap grant frames when in atomic context + - LP: #1356913 + * ext4: Fix buffer double free in ext4_alloc_branch() + - LP: #1356913 + * ARM: OMAP2+: Fix parser-bug in platform muxing code + - LP: #1356913 + * KVM: x86: Increase the number of fixed MTRR regs to 10 + - LP: #1356913 + * KVM: x86: preserve the high 32-bits of the PAT register + - LP: #1356913 + * usb: musb: ux500: don't propagate the OF node + - LP: #1356913 + * usb: gadget: f_fs: fix NULL pointer dereference when there are no + strings + - LP: #1356913 + * staging: iio/ad7291: fix error code in ad7291_probe() + - LP: #1356913 + * iio: of_iio_channel_get_by_name() returns non-null pointers for error + legs + - LP: #1356913 + * irqchip: spear_shirq: Fix interrupt offset + - LP: #1356913 + * USB: option: add device ID for SpeedUp SU9800 usb 3g modem + - LP: #1356913 + * USB: ftdi_sio: fix null deref at port probe + - LP: #1356913 + * usb: option: add/modify Olivetti Olicard modems + - LP: #1356913 + * scsi_error: fix invalid setting of host byte + - LP: #1356913 + * xhci: Use correct SLOT ID when handling a reset device command + - LP: #1356913 + * xhci: correct burst count field for isoc transfers on 1.0 xhci hosts + - LP: #1356913 + * xhci: clear root port wake on bits if controller isn't wake-up capable + - LP: #1356913 + * xhci: Fix runtime suspended xhci from blocking system suspend. + - LP: #1356913 + * ibmvscsi: Abort init sequence during error recovery + - LP: #1356913 + * ibmvscsi: Add memory barriers for send / receive + - LP: #1356913 + * virtio-scsi: avoid cancelling uninitialized work items + - LP: #1356913 + * virtio-scsi: fix various bad behavior on aborted requests + - LP: #1356913 + * MIPS: KVM: Fix memory leak on VCPU + - LP: #1356913 + * ext4: Fix hole punching for files with indirect blocks + - LP: #1356913 + * usb: musb: Fix panic upon musb_am335x module removal + - LP: #1356913 + * usb: musb: Ensure that cppi41 timer gets armed on premature DMA TX irq + - LP: #1356913 + * nfsd: fix rare symlink decoding bug + - LP: #1356913 + * tools: ffs-test: fix header values endianess + - LP: #1356913 + * usb-storage/SCSI: Add broken_fua blacklist flag + - LP: #1356913 + * drm/radeon/dpm: fix typo in vddci setup for eg/btc + - LP: #1356913 + * drm/radeon/dpm: fix vddci setup typo on cayman + - LP: #1356913 + * tracing: Remove ftrace_stop/start() from reading the trace file + - LP: #1356913 + * usb: chipidea: udc: delete td from req's td list at ep_dequeue + - LP: #1356913 + * drm/radeon/cik: fix typo in EOP packet + - LP: #1356913 + * md: flush writes before starting a recovery. + - LP: #1356913 + * drm/vmwgfx: Fix incorrect write to read-only register v2: + - LP: #1356913 + * mm: page_alloc: fix CMA area initialisation when pageblock > MAX_ORDER + - LP: #1356913 + * /proc/stat: convert to single_open_size() + - LP: #1356913 + * nick kvfree() from apparmor + - LP: #1356913 + * fs/seq_file: fallback to vmalloc allocation + - LP: #1356913 + * lz4: add overrun checks to lz4_uncompress_unknownoutputsize() + - LP: #1356913 + * arm64: mm: Make icache synchronisation logic huge page aware + - LP: #1356913 + * workqueue: fix dev_set_uevent_suppress() imbalance + - LP: #1356913 + * cpuset,mempolicy: fix sleeping function called from invalid context + - LP: #1356913 + * crypto: sha512_ssse3 - fix byte count to bit count conversion + - LP: #1356913 + * thermal: hwmon: Make the check for critical temp valid consistent + - LP: #1356913 + * clk: s2mps11: Fix double free corruption during driver unbind + - LP: #1356913 + * hwmon: (amc6821) Fix permissions for temp2_input + - LP: #1356913 + * hwmon: (adm1029) Ensure the fan_div cache is updated in set_fan_div + - LP: #1356913 + * hwmon: (adm1021) Fix cache problem when writing temperature limits + - LP: #1356913 + * ext4: fix unjournalled bg descriptor while initializing inode bitmap + - LP: #1356913 + * ext4: clarify error count warning messages + - LP: #1356913 + * ext4: clarify ext4_error message in ext4_mb_generate_buddy_error() + - LP: #1356913 + * ext4: disable synchronous transaction batching if max_batch_time==0 + - LP: #1356913 + * intel_pstate: Fix setting VID + - LP: #1356913 + * intel_pstate: don't touch turbo bit if turbo disabled or unavailable. + - LP: #1356913 + * intel_pstate: Set CPU number before accessing MSRs + - LP: #1356913 + * USB: cp210x: add support for Corsair usb dongle + - LP: #1356913 + * usb: option: Add ID for Telewell TW-LTE 4G v2 + - LP: #1356913 + * ACPI / EC: Avoid race condition related to advance_transaction() + - LP: #1356913 + * ACPI / EC: Add asynchronous command byte write support + - LP: #1356913 + * ACPI / EC: Remove duplicated ec_wait_ibf0() waiter + - LP: #1356913 + * ACPI / EC: Fix race condition in ec_transaction_completed() + - LP: #1356913 + * ACPI / battery: Retry to get battery information if failed during + probing + - LP: #1356913 + * hwmon: (adm1031) Fix writes to limit registers + - LP: #1356913 + * workqueue: zero cpumask of wq_numa_possible_cpumask on init + - LP: #1356913 + * hwmon: (emc2103) Clamp limits instead of bailing out + - LP: #1356913 + * arm64: implement TASK_SIZE_OF + - LP: #1356913 + * iio: ti_am335x_adc: Fix: Use same step id at FIFOs both ends + - LP: #1356913 + * cpufreq: Makefile: fix compilation for davinci platform + - LP: #1356913 + * drm/i915: Don't clobber the GTT when it's within stolen memory + - LP: #1356913 + * Drivers: hv: vmbus: Fix a bug in the channel callback dispatch code + - LP: #1356913 + * USB: ftdi_sio: Add extra PID. + - LP: #1356913 + * crypto: caam - fix memleak in caam_jr module + - LP: #1356913 + * dm: allocate a special workqueue for deferred device removal + - LP: #1356913 + * dm io: fix a race condition in the wake up code for sync_io + - LP: #1356913 + * drm/radeon/dp: return -EIO for flags not zero case + - LP: #1356913 + * drm/radeon: fix typo in golden register setup on evergreen + - LP: #1356913 + * drm/radeon: fix typo in ci_stop_dpm() + - LP: #1356913 + * drm/radeon/dpm: Reenabling SS on Cayman + - LP: #1356913 + * powerpc/perf: Add PPMU_ARCH_207S define + - LP: #1356913 + * powerpc/perf: Clear MMCR2 when enabling PMU + - LP: #1356913 + * powerpc/perf: Never program book3s PMCs with values >= 0x80000000 + - LP: #1356913 + * USB: serial: ftdi_sio: Add Infineon Triboard + - LP: #1356913 + * phy: core: Fix error path in phy_create() + - LP: #1356913 + * ext4: fix a potential deadlock in __ext4_es_shrink() + - LP: #1356913 + * parisc: add serial ports of C8000/1GHz machine to hardware database + - LP: #1356913 + * parisc: fix fanotify_mark() syscall on 32bit compat kernel + - LP: #1356913 + * parisc: drop unused defines and header includes + - LP: #1356913 + * clk: spear3xx: Use proper control register offset + - LP: #1356913 + * Bluetooth: Ignore H5 non-link packets in non-active state + - LP: #1356913 + * iwlwifi: update the 7265 series HW IDs + - LP: #1356913 + * mwifiex: fix Tx timeout issue + - LP: #1356913 + * x86, tsc: Fix cpufreq lockup + - LP: #1356913 + * perf/x86/intel: ignore CondChgd bit to avoid false NMI handling + - LP: #1356913 + * perf: Do not allow optimized switch for non-cloned events + - LP: #1356913 + * xen/manage: fix potential deadlock when resuming the console + - LP: #1356913 + * iwlwifi: dvm: don't enable CTS to self + - LP: #1356913 + * iwlwifi: mvm: disable CTS to Self + - LP: #1356913 + * xen/balloon: set ballooned out pages as invalid in p2m + - LP: #1356913 + * mtd: devices: elm: fix elm_context_save() and elm_context_restore() + functions + - LP: #1356913 + * fuse: timeout comparison fix + - LP: #1356913 + * fuse: ignore entry-timeout on LOOKUP_REVAL + - LP: #1356913 + * fuse: handle large user and group ID + - LP: #1356913 + * alarmtimer: Fix bug where relative alarm timers were treated as + absolute + - LP: #1356913 + * irqchip: gic: Add support for cortex a7 compatible string + - LP: #1356913 + * net: mvneta: fix operation in 10 Mbit/s mode + - LP: #1356913 + * net: mvneta: Fix big endian issue in mvneta_txq_desc_csum() + - LP: #1356913 + * igb: Workaround for i210 Errata 25: Slow System Clock + - LP: #1356913 + * x86/efi: Include a .bss section within the PE/COFF headers + - LP: #1356913 + * igb: do a reset on SR-IOV re-init if device is down + - LP: #1356913 + * iio:core: Handle error when mask type is not separate + - LP: #1356913 + * of/irq: do irq resolution in platform_get_irq_byname() + - LP: #1356913 + * platform_get_irq: Revert to platform_get_resource if of_irq_get fails + - LP: #1356913 + * aio: protect reqs_available updates from changes in interrupt handlers + - LP: #1356913 + * hwmon: (da9052) Don't use dash in the name attribute + - LP: #1356913 + * hwmon: (da9055) Don't use dash in the name attribute + - LP: #1356913 + * PM / sleep: Fix request_firmware() error at resume + - LP: #1356913 + * ALSA: hda - Fix broken PM due to incomplete i915 initialization + - LP: #1356913 + * tracing: Add ftrace_trace_stack into __trace_puts/__trace_bputs + - LP: #1356913 + * tracing: Fix graph tracer with stack tracer on other archs + - LP: #1356913 + * tracing: Add TRACE_ITER_PRINTK flag check in __trace_puts/__trace_bputs + - LP: #1356913 + * dm thin metadata: do not allow the data block size to change + - LP: #1356913 + * dm cache metadata: do not allow the data block size to change + - LP: #1356913 + * quota: missing lock in dqcache_shrink_scan() + - LP: #1356913 + * ring-buffer: Fix polling on trace_pipe + - LP: #1356913 + * sched: Fix possible divide by zero in avg_atom() calculation + - LP: #1356913 + * locking/mutex: Disable optimistic spinning on some architectures + - LP: #1356913 + * drm/qxl: return IRQ_NONE if it was not our irq + - LP: #1356913 + * hwmon: (adt7470) Fix writes to temperature limit registers + - LP: #1356913 + * cpufreq: move policy kobj to policy->cpu at resume + - LP: #1356913 + * drm/radeon: avoid leaking edid data + - LP: #1356913 + * drm/radeon: set default bl level to something reasonable + - LP: #1356913 + * usb: chipidea: udc: Disable auto ZLP generation on ep0 + - LP: #1356913 + * irqchip: gic: Fix core ID calculation when topology is read from DT + - LP: #1356913 + * slab_common: fix the check for duplicate slab names + - LP: #1356913 + * xtensa: add fixup for double exception raised in window overflow + - LP: #1356913 + * [media] media: v4l2-core: v4l2-dv-timings.c: Cleaning up code wrong + value used in aspect ratio + - LP: #1356913 + * [media] hdpvr: fix two audio bugs + - LP: #1356913 + * block: don't assume last put of shared tags is for the host + - LP: #1356913 + * blkcg: don't call into policy draining if root_blkg is already gone + - LP: #1356913 + * block: provide compat ioctl for BLKZEROOUT + - LP: #1356913 + * libata: support the ata host which implements a queue depth less than + 32 + - LP: #1356913 + * [media] tda10071: force modulation to QPSK on DVB-S + - LP: #1356913 + * [media] gspca_pac7302: Add new usb-id for Genius i-Look 317 + - LP: #1356913 + * s390/ptrace: fix PSW mask check + - LP: #1356913 + * ahci: add support for the Promise FastTrak TX8660 SATA HBA (ahci mode) + - LP: #1356913 + * Input: fix defuzzing logic + - LP: #1356913 + * tracing: Fix wraparound problems in "uptime" trace clock + - LP: #1356913 + * drm/i915: Reorder the semaphore deadlock check, again + - LP: #1356913 + * libata: introduce ata_host->n_tags to avoid oops on SAS controllers + - LP: #1356913 + * drm/radeon: fix irq ring buffer overflow handling + - LP: #1356913 + * coredump: fix the setting of PF_DUMPCORE + - LP: #1356913 + * fs: umount on symlink leaks mnt count + - LP: #1356913 + * hwmon: (smsc47m192) Fix temperature limit and vrm write operations + - LP: #1356913 + * parisc: Remove SA_RESTORER define + - LP: #1356913 + * drm/radeon: fix cut and paste issue for hawaii. + - LP: #1356913 + * parport: fix menu breakage + - LP: #1356913 + * Fix gcc-4.9.0 miscompilation of load_balance() in scheduler + - LP: #1356913 + * scsi: handle flush errors properly + - LP: #1356913 + * cfg80211: fix mic_failure tracing + - LP: #1356913 + * iio: buffer: Fix demux table creation + - LP: #1356913 + * iio:bma180: Fix scale factors to report correct acceleration units + - LP: #1356913 + * iio:bma180: Missing check for frequency fractional part + - LP: #1356913 + * powerpc/perf: Fix MMCR2 handling for EBB + - LP: #1356913 + * ath9k: fix aggregation session lockup + - LP: #1356913 + * sched_clock: Avoid corrupting hrtimer tree during suspend + - LP: #1356913 + * staging: vt6655: Fix Warning on boot handle_irq_event_percpu. + - LP: #1356913 + * staging: vt6655: Fix disassociated messages every 10 seconds + - LP: #1356913 + * can: c_can_platform: Fix raminit, use devm_ioremap() instead of + devm_ioremap_resource() + - LP: #1356913 + * crypto: arm-aes - fix encryption of unaligned data + - LP: #1356913 + * ARM: fix alignment of keystone page table fixup + - LP: #1356913 + * net: sendmsg: fix NULL pointer dereference + - LP: #1356913 + * mm/page-writeback.c: fix divide by zero in bdi_dirty_limits() + - LP: #1356913 + * mm, thp: do not allow thp faults to avoid cpuset restrictions + - LP: #1356913 + * rapidio/tsi721_dma: fix failure to obtain transaction descriptor + - LP: #1356913 + * memcg: oom_notify use-after-free fix + - LP: #1356913 + * crypto: af_alg - properly label AF_ALG socket + - LP: #1356913 + * printk: rename printk_sched to printk_deferred + - LP: #1356913 + * timer: Fix lock inversion between hrtimer_bases.lock and scheduler + locks + - LP: #1356913 + * dm bufio: fully initialize shrinker + - LP: #1356913 + * dm cache: fix race affecting dirty block count + - LP: #1356913 + * qlcnic: info leak in qlcnic_dcb_peer_app_info() + - LP: #1356913 + * netlink: rate-limit leftover bytes warning and print process name + - LP: #1356913 + * bridge: Prevent insertion of FDB entry with disallowed vlan + - LP: #1356913 + * net: tunnels - enable module autoloading + - LP: #1356913 + * net: fix inet_getid() and ipv6_select_ident() bugs + - LP: #1356913 + * team: fix mtu setting + - LP: #1356913 + * tcp: fix cwnd undo on DSACK in F-RTO + - LP: #1356913 + * sh_eth: use RNC mode for packet reception + - LP: #1356913 + * sh_eth: fix SH7619/771x support + - LP: #1356913 + * net: filter: fix typo in sparc BPF JIT + - LP: #1356913 + * net: filter: fix sparc32 typo + - LP: #1356913 + * net: qmi_wwan: add Olivetti Olicard modems + - LP: #1356913 + * net: force a list_del() in unregister_netdevice_many() + - LP: #1356913 + * ipip, sit: fix ipv4_{update_pmtu,redirect} calls + - LP: #1356913 + * sfc: PIO:Restrict to 64bit arch and use 64-bit writes. + - LP: #1356913 + * ipv4: fix a race in ip4_datagram_release_cb() + - LP: #1356913 + * rtnetlink: fix userspace API breakage for iproute2 < v3.9.0 + - LP: #1356913 + * vxlan: use dev->needed_headroom instead of dev->hard_header_len + - LP: #1356913 + * udp: ipv4: do not waste time in __udp4_lib_mcast_demux_lookup + - LP: #1356913 + * ip_tunnel: fix ip_tunnel_lookup + - LP: #1356913 + * slip: Fix deadlock in write_wakeup + - LP: #1356913 + * slcan: Port write_wakeup deadlock fix from slip + - LP: #1356913 + * net: sctp: propagate sysctl errors from proc_do* properly + - LP: #1356913 + * tcp: fix tcp_match_skb_to_sack() for unaligned SACK at end of an skb + - LP: #1356913 + * net: sctp: check proc_dointvec result in proc_sctp_do_auth + - LP: #1356913 + * 8021q: fix a potential memory leak + - LP: #1356913 + * net: huawei_cdc_ncm: increase command buffer size + - LP: #1356913 + * ipv4: fix dst race in sk_dst_get() + - LP: #1356913 + * ipv4: irq safe sk_dst_[re]set() and ipv4_sk_update_pmtu() fix + - LP: #1356913 + * net: fix sparse warning in sk_dst_set() + - LP: #1356913 + * vlan: free percpu stats in device destructor + - LP: #1356913 + * bnx2x: fix possible panic under memory stress + - LP: #1356913 + * tcp: Fix divide by zero when pushing during tcp-repair + - LP: #1356913 + * ipv4: icmp: Fix pMTU handling for rare case + - LP: #1356913 + * net: qmi_wwan: Add ID for Telewell TW-LTE 4G v2 + - LP: #1356913 + * net: qmi_wwan: add two Sierra Wireless/Netgear devices + - LP: #1356913 + * net: Fix NETDEV_CHANGE notifier usage causing spurious arp flush + - LP: #1356913 + * igmp: fix the problem when mc leave group + - LP: #1356913 + * tcp: fix false undo corner cases + - LP: #1356913 + * appletalk: Fix socket referencing in skb + - LP: #1356913 + * netlink: Fix handling of error from netlink_dump(). + - LP: #1356913 + * be2net: set EQ DB clear-intr bit in be_open() + - LP: #1356913 + * tipc: clear 'next'-pointer of message fragments before reassembly + - LP: #1356913 + * net: sctp: fix information leaks in ulpevent layer + - LP: #1356913 + * net: pppoe: use correct channel MTU when using Multilink PPP + - LP: #1356913 + * sunvnet: clean up objects created in vnet_new() on vnet_exit() + - LP: #1356913 + * net: huawei_cdc_ncm: add "subclass 3" devices + - LP: #1356913 + * dns_resolver: assure that dns_query() result is null-terminated + - LP: #1356913 + * dns_resolver: Null-terminate the right string + - LP: #1356913 + * ipv4: fix buffer overflow in ip_options_compile() + - LP: #1356913 + * x86/xen: no need to explicitly register an NMI callback + - LP: #1356913 + * Linux 3.13.11.6 + - LP: #1356913 + + -- Joseph Salisbury Thu, 14 Aug 2014 17:12:19 -0400 + +linux (3.13.0-34.60) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1356396 + + [ Upstream Kernel Changes ] + + * mnt: Only change user settable mount flags in remount + - CVE-2014-5206 + * mnt: Move the test for MNT_LOCK_READONLY from change_mount_flags into + do_remount + - CVE-2014-5206 + * mnt: Correct permission checks in do_remount + - CVE-2014-5207 + * mnt: Change the default remount atime from relatime to the existing + value + - CVE-2014-5207 + + -- Brad Figg Tue, 29 Jul 2014 08:25:07 -0700 + +linux (3.13.0-33.58) trusty; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1349897 + + [ Upstream Kernel Changes ] + + * mm: numa: do not automatically migrate KSM pages + - LP: #1346917 + * net: fix UDP tunnel GSO of frag_list GRO packets + - LP: #1331219 + * auditsc: audit_krule mask accesses need bounds checking + - LP: #1347088 + * n_tty: Fix buffer overruns with larger-than-4k pastes + - LP: #1208740 + + -- Tim Gardner Fri, 18 Jul 2014 14:57:50 +0000 + +linux (3.13.0-32.57) trusty; urgency=low + + [ Upstream Kernel Changes ] + + * l2tp: Privilege escalation in ppp over l2tp sockets + - LP: #1341472 + - CVE-2014-4943 + + -- Luis Henriques Mon, 14 Jul 2014 10:03:44 +0100 + +linux (3.13.0-32.56) trusty; urgency=low + + [ Luis Henriques ] + + * Merged back Ubuntu-3.13.0-30.55 security release + * Revert "x86_64,ptrace: Enforce RIP <= TASK_SIZE_MAX (CVE-2014-4699)" + - LP: #1337339 + * Release Tracking Bug + - LP: #1338524 + + [ Upstream Kernel Changes ] + + * ptrace,x86: force IRET path after a ptrace_stop() + - LP: #1337339 + - CVE-2014-4699 + * hpsa: add new Smart Array PCI IDs (May 2014) + - LP: #1337516 + + -- Luis Henriques Mon, 07 Jul 2014 11:38:37 +0100 + +linux (3.13.0-31.55) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1336278 + + [ Andy Whitcroft ] + + * [Config] switch hyper-keyboard to virtual + - LP: #1325306 + * [Packaging] linux-udeb-flavour -- standardise on linux prefix + + [ dann frazier ] + + * [Config] CONFIG_GPIO_DWAPB=m + - LP: #1334823 + + [ Feng Kan ] + + * SAUCE: (no-up) arm64: dts: Add Designware GPIO dts binding to APM + X-Gene platform + - LP: #1334823 + + [ John Johansen ] + + * SAUCE: (no-up) apparmor: fix apparmor spams log with warning message + - LP: #1308761 + + [ Kamal Mostafa ] + + * [Config] updateconfigs ACPI_PROCFS_POWER=y after v3.13.11.4 rebase + + [ Loc Ho ] + + * SAUCE: (no-up) phy-xgene: Use correct tuning for Mustang + - LP: #1335636 + + [ Michael Ellerman ] + + * SAUCE: (no-up) powerpc/perf: Ensure all EBB register state is cleared + on fork() + - LP: #1328914 + + [ Ming Lei ] + + * Revert "SAUCE: (no-up) rtc: Add X-Gene SoC Real Time Clock Driver" + - LP: #1274305 + + [ Suman Tripathi ] + + * SAUCE: (no-up) libahci: Implement the function ahci_restart_engine to + restart the port dma engine. + - LP: #1335645 + * SAUCE: (no-up) ata: Fix the dma state machine lockup for the IDENTIFY + DEVICE PIO mode command. + - LP: #1335645 + + [ Tim Gardner ] + + * [Config] CONFIG_POWERNV_CPUFREQ=y for powerpc, ppc64el + - LP: #1324571 + * [Debian] Add UTS_UBUNTU_RELEASE_ABI to utsrelease.h + - LP: #1327619 + * [Config] CONFIG_HAVE_MEMORYLESS_NODES=y + - LP: #1332063 + * [Config] CONFIG_HID_RMI=m + - LP: #1305522 + + [ Upstream Kernel Changes ] + + * Revert "offb: Add palette hack for little endian" + - LP: #1333430 + * Revert "net: mvneta: fix usage as a module on RGMII configurations" + - LP: #1333837 + * Revert "USB: serial: add usbid for dell wwan card to sierra.c" + - LP: #1333837 + * Revert "macvlan : fix checksums error when we are in bridge mode" + - LP: #1333838 + * serial: uart: add hw flow control support configuration + - LP: #1328295 + * mm/numa: Remove BUG_ON() in __handle_mm_fault() + - LP: #1323165 + * Tools: hv: Handle the case when the target file exists correctly + - LP: #1306215 + * Documentation/devicetree/bindings: add documentation for the APM X-Gene + SoC RTC DTS binding + - LP: #1274305 + * drivers/rtc: add APM X-Gene SoC RTC driver + - LP: #1274305 + * arm64: add APM X-Gene SoC RTC DTS entry + - LP: #1274305 + * powerpc/perf: Add Power8 cache & TLB events + - LP: #1328914 + * powerpc/perf: Configure BHRB filter before enabling PMU interrupts + - LP: #1328914 + * powerpc/perf: Define perf_event_print_debug() to print PMU register + values + - LP: #1328914 + * powerpc: Add a cpu feature CPU_FTR_PMAO_BUG + - LP: #1328914 + * powerpc/perf: Add lost exception workaround + - LP: #1328914 + * powerpc/perf: Reject EBB events which specify a sample_type + - LP: #1328914 + * powerpc/perf: Clean up the EBB hash defines a little + - LP: #1328914 + * powerpc/perf: Avoid mutating event in power8_get_constraint() + - LP: #1328914 + * powerpc/perf: Add BHRB constraint and IFM MMCRA handling for EBB + - LP: #1328914 + * powerpc/perf: Enable BHRB access for EBB events + - LP: #1328914 + * powerpc/perf: Fix handling of L3 events with bank == 1 + - LP: #1328914 + * Bluetooth: Add support for Intel Bluetooth device [8087:0a2a] + - LP: #1329184 + * iwlwifi: mvm: disable beacon filtering + - LP: #1293569 + * SUNRPC: Ensure that call_connect times out correctly + - LP: #1322407 + * SUNRPC: Ensure call_connect_status() deals correctly with SOFTCONN + tasks + - LP: #1322407 + * bitops: Fix signedness of compile-time hweight implementations + - LP: #1321791 + * cpumask.h: silence warning with -Wsign-compare + - LP: #1321791 + * fbdev/fb.h: silence warning with -Wsign-compare + - LP: #1321791 + * rtlwifi: make MSI support a module parameter + - LP: #1296591 + * rtlwifi: rtl8188ee: add msi module parameter + - LP: #1296591 + * rtlwifi: rtl8723be: add msi module parameter + - LP: #1296591 + * net: avoid dependency of net_get_random_once on nop patching + - LP: #1330671 + * x86-64, modify_ldt: Make support for 16-bit segments a runtime option + - LP: #1328965 + * ALSA: usb-audio: Prevent printk ratelimiting from spamming kernel log + while DEBUG not defined + - LP: #1319457 + * btrfs: fix defrag 32-bit integer overflow + - LP: #1324953 + * dell-laptop: Only install the i8042 filter when rfkill is active + - LP: #1289238 + * kthread: ensure locality of task_struct allocations + - LP: #1332063 + * slub: search partial list on numa_mem_id(), instead of numa_node_id() + - LP: #1332063 + * powerpc/numa: Enable USE_PERCPU_NUMA_NODE_ID + - LP: #1332063 + * powerpc/numa: Enable CONFIG_HAVE_MEMORYLESS_NODES + - LP: #1332063 + * drm/i915: Allow user modes to exceed DVI 165MHz limit + - LP: #1332220 + * HID: rmi: introduce RMI driver for Synaptics touchpads + - LP: #1305522 + * HID: rmi: do not stop the device at the end of probe + - LP: #1305522 + * HID: rmi: check for the existence of some optional queries before + reading query 12 + - LP: #1305522 + * HID: rmi: do not fetch more than 16 bytes in a query + - LP: #1305522 + * HID: rmi: fix wrong struct field name + - LP: #1305522 + * HID: rmi: fix masks for x and w_x data + - LP: #1305522 + * HID: rmi: do not handle touchscreens through hid-rmi + - LP: #1305522 + * ipv6: Fix regression caused by efe4208 in udp_v6_mcast_next() + - LP: #1332420 + * HID: core: do not scan constant input report + - LP: #1333837 + * drm/radeon: fix audio pin counts for DCE6+ (v2) + - LP: #1333837 + * mac80211: fix software remain-on-channel implementation + - LP: #1333837 + * mac80211: exclude AP_VLAN interfaces from tx power calculation + - LP: #1333837 + * iwlwifi: add new 7265 HW IDs + - LP: #1333837 + * parisc: fix epoll_pwait syscall on compat kernel + - LP: #1333837 + * iwlwifi: add MODULE_FIRMWARE for 7265 + - LP: #1333837 + * dma: edma: fix incorrect SG list handling + - LP: #1333837 + * ALSA: hda/realtek - Add support of ALC288 codec + - LP: #1333837 + * xen/spinlock: Don't enable them unconditionally. + - LP: #1333837 + * tick-common: Fix wrong check in tick_check_replacement() + - LP: #1333837 + * tick-sched: Check tick_nohz_enabled in tick_nohz_switch_to_nohz() + - LP: #1333837 + * ALSA: hda - add headset mic detect quirk for a Dell laptop + - LP: #1297581, #1333837 + * ALSA: hda/realtek - Add headset Mic support for Dell machine + - LP: #1333837 + * staging: r8188eu: Calling rtw_get_stainfo() with a NULL sta_addr will + return NULL + - LP: #1333837 + * cifs: Wait for writebacks to complete before attempting write. + - LP: #1333837 + * mlx4_en: don't use napi_synchronize inside mlx4_en_netpoll + - LP: #1333837 + * mei: ignore client writing state during cb completion + - LP: #1333837 + * staging: r8712u: Fix case where ethtype was never obtained and always + be checked against 0 + - LP: #1333837 + * staging: r8188eu: Fix case where ethtype was never obtained and always + be checked against 0 + - LP: #1333837 + * USB: serial: ftdi_sio: add id for Brainboxes serial cards + - LP: #1333837 + * usb: option driver, add support for Telit UE910v2 + - LP: #1333837 + * USB: cp210x: Add 8281 (Nanotec Plug & Drive) + - LP: #1333837 + * USB: pl2303: add ids for Hewlett-Packard HP POS pole displays + - LP: #1333837 + * USB: usb_wwan: fix handling of missing bulk endpoints + - LP: #1333837 + * USB: fix crash during hotplug of PCI USB controller card + - LP: #1333837 + * USB: cdc-acm: Remove Motorola/Telit H24 serial interfaces from ACM + driver + - LP: #1333837 + * Drivers: hv: vmbus: Negotiate version 3.0 when running on ws2012r2 + hosts + - LP: #1333837 + * serial: omap: Fix missing pm_runtime_resume handling by simplifying + code + - LP: #1333837 + * drm/radeon: disable mclk dpm on R7 260X + - LP: #1333837 + * drm/radeon: fix runpm handling on APUs (v4) + - LP: #1333837 + * drm/radeon: add support for newer mc ucode on SI (v2) + - LP: #1333837 + * drm/radeon: add support for newer mc ucode on CI (v2) + - LP: #1333837 + * drm/radeon: re-enable mclk dpm on R7 260X asics + - LP: #1333837 + * drm/radeon: memory leak on bo reservation failure. v2 + - LP: #1333837 + * drm/radeon/si: make sure mc ucode is loaded before checking the size + - LP: #1333837 + * drm/radeon/ci: make sure mc ucode is loaded before checking the size + - LP: #1333837 + * init/Kconfig: move the trusted keyring config option to general setup + - LP: #1333837 + * mm/hugetlb.c: add cond_resched_lock() in return_unused_surplus_pages() + - LP: #1333837 + * thp: close race between split and zap huge pages + - LP: #1333837 + * coredump: fix va_list corruption + - LP: #1333837 + * powerpc/tm: Disable IRQ in tm_recheckpoint + - LP: #1333837 + * ACPI / EC: Process rather than discard events in acpi_ec_clear + - LP: #1333837 + * ath9k: Fix sequence number assignment for non-data frames + - LP: #1333837 + * xhci: Switch Intel Lynx Point ports to EHCI on shutdown. + - LP: #1333837 + * iio: adc: at91_adc: Repair broken platform_data support + - LP: #1333837 + * iio: querying buffer scan_mask should return 0/1 + - LP: #1333837 + * iio: cm36651: Fix i2c client leak and possible NULL pointer dereference + - LP: #1333837 + * libata: Update queued trim blacklist for M5x0 drives + - LP: #1333837 + * pata_at91: fix ata_host_activate() failure handling + - LP: #1333837 + * ext4: avoid possible overflow in ext4_map_blocks() + - LP: #1333837 + * ext4: FIBMAP ioctl causes BUG_ON due to handle EXT_MAX_BLOCKS + - LP: #1333837 + * ext4: note the error in ext4_end_bio() + - LP: #1333837 + * ext4: fix jbd2 warning under heavy xattr load + - LP: #1333837 + * ext4: move ext4_update_i_disksize() into mpage_map_and_submit_extent() + - LP: #1333837 + * ext4: use i_size_read in ext4_unaligned_aio() + - LP: #1333837 + * locks: allow __break_lease to sleep even when break_time is 0 + - LP: #1333837 + * usb: gadget: zero: Fix SuperSpeed enumeration for alternate setting 1 + - LP: #1333837 + * ahci: do not request irq for dummy port + - LP: #1333837 + * genirq: Allow forcing cpu affinity of interrupts + - LP: #1333837 + * irqchip: Gic: Support forced affinity setting + - LP: #1333837 + * clocksource: Exynos_mct: Use irq_force_affinity() in cpu bringup + - LP: #1333837 + * clocksource: Exynos_mct: Register clock event after request_irq() + - LP: #1333837 + * nfsd: set timeparms.to_maxval in setup_callback_client + - LP: #1333837 + * ahci: Do not receive interrupts sent by dummy ports + - LP: #1333837 + * libata/ahci: accommodate tag ordered controllers + - LP: #1333837 + * drm/radeon: disable dpm on rv770 by default + - LP: #1333837 + * Input: synaptics - add min/max quirk for ThinkPad T431s, L440, L540, S1 + Yoga and X1 + - LP: #1333837 + * drm/radeon: fix count in cik_sdma_ring_test() + - LP: #1333837 + * drm/radeon: properly unregister hwmon interface (v2) + - LP: #1333837 + * drm/radeon/pm: don't walk the crtc list before it has been initialized + (v2) + - LP: #1333837 + * drm/radeon: fix ATPX detection on non-VGA GPUs + - LP: #1333837 + * drm/radeon: don't allow runpm=1 on systems with out ATPX + - LP: #1333837 + * mm: make fixup_user_fault() check the vma access rights too + - LP: #1333837 + * ARM: 8027/1: fix do_div() bug in big-endian systems + - LP: #1333837 + * ARM: 8030/1: ARM : kdump : add arch_crash_save_vmcoreinfo + - LP: #1333837 + * ARM: pxa: hx4700.h: include "irqs.h" for PXA_NR_BUILTIN_GPIO + - LP: #1333837 + * ARM: tegra: remove UART5/UARTE from tegra124.dtsi + - LP: #1333837 + * USB: serial: fix sysfs-attribute removal deadlock + - LP: #1333837 + * 8250_core: Fix unwanted TX chars write + - LP: #1333837 + * serial: 8250: Fix thread unsafe __dma_tx_complete function + - LP: #1333837 + * Btrfs: fix inode caching vs tree log + - LP: #1333837 + * xhci: For streams the css flag most be read from the stream-ctx on ep + stop + - LP: #1333837 + * usb: xhci: Prefer endpoint context dequeue pointer over stopped_trb + - LP: #1333837 + * USB: io_ti: fix firmware download on big-endian machines + - LP: #1333837 + * usb: qcserial: add Sierra Wireless EM7355 + - LP: #1333837 + * usb: qcserial: add Sierra Wireless MC73xx + - LP: #1333837 + * usb: qcserial: add Sierra Wireless MC7305/MC7355 + - LP: #1333837 + * usb: option: add Olivetti Olicard 500 + - LP: #1333837 + * usb: option: add Alcatel L800MA + - LP: #1333837 + * usb: option: add and update a number of CMOTech devices + - LP: #1333837 + * word-at-a-time: avoid undefined behaviour in zero_bytemask macro + - LP: #1333837 + * s390/chsc: fix SEI usage on old FW levels + - LP: #1333837 + * irqchip: armada-370-xp: fix invalid cast of signed value into unsigned + variable + - LP: #1333837 + * irqchip: armada-370-xp: implement the ->check_device() msi_chip + operation + - LP: #1333837 + * irqchip: armada-370-xp: Fix releasing of MSIs + - LP: #1333837 + * ASoC: dapm: Fix widget double free with auto-disable DAPM kcontrol + - LP: #1333837 + * drm/i915: Don't check gmch state on inherited configs + - LP: #1333837 + * drm/vmwgfx: Make sure user-space can't DMA across buffer object + boundaries v2 + - LP: #1333837 + * of/irq: do irq resolution in platform_get_irq + - LP: #1333837 + * s390/bpf,jit: initialize A register if 1st insn is BPF_S_LDX_B_MSH + - LP: #1333837 + * drm/i915: Don't WARN nor handle unexpected hpd interrupts on gmch + platforms + - LP: #1333837 + * module: remove warning about waiting module removal. + - LP: #1333837 + * ALSA: hda - add headset mic detect quirk for a Dell laptop + - LP: #1297581, #1333837 + * arm: KVM: fix possible misalignment of PGDs and bounce page + - LP: #1333837 + * KVM: ARM: vgic: Fix sgi dispatch problem + - LP: #1333837 + * KVM: async_pf: mm->mm_users can not pin apf->mm + - LP: #1333837 + * ftrace/module: Hardcode ftrace_module_init() call into load_module() + - LP: #1333837 + * [SCSI] mpt2sas: Don't disable device twice at suspend. + - LP: #1333837 + * [SCSI] virtio-scsi: Skip setting affinity on uninitialized vq + - LP: #1333837 + * drivercore: deferral race condition fix + - LP: #1333837 + * hrtimer: Prevent all reprogramming if hang detected + - LP: #1333837 + * hrtimer: Prevent remote enqueue of leftmost timers + - LP: #1333837 + * timer: Prevent overflow in apply_slack + - LP: #1333837 + * ARC: !PREEMPT: Ensure Return to kernel mode is IRQ safe + - LP: #1333837 + * aio: fix potential leak in aio_run_iocb(). + - LP: #1333837 + * dm cache: fix writethrough mode quiescing in cache_map + - LP: #1333837 + * fix races between __d_instantiate() and checks of dentry flags + - LP: #1333837 + * net: Fix ns_capable check in sock_diag_put_filterinfo + - LP: #1333837 + * rt2x00: fix beaconing on USB + - LP: #1333837 + * rtlwifi: rtl8188ee: initialize packet_beacon + - LP: #1333837 + * Input: synaptics - add min/max quirk for ThinkPad Edge E431 + - LP: #1333837 + * Input: atkbd - fix keyboard not working on some LG laptops + - LP: #1333837 + * Bluetooth: Fix triggering BR/EDR L2CAP Connect too early + - LP: #1333837 + * drm/i915: Break encoder->crtc link separately in intel_sanitize_crtc() + - LP: #1333837 + * iio:imu:mpu6050: Fixed segfault in Invensens MPU driver due to null + dereference + - LP: #1333837 + * ALSA: hda - add headset mic detect quirk for a Dell laptop + - LP: #1297581, #1333837 + * rtlwifi: rtl8192se: Fix regression due to commit 1bf4bbb + - LP: #1333837 + * rtl8192cu: Fix unbalanced irq enable in error path of rtl92cu_hw_init() + - LP: #1333837 + * drm/radeon/uvd: use lower clocks on old UVD to boot v2 + - LP: #1333837 + * drm/radeon: use pflip irq on R600+ v2 + - LP: #1333837 + * drm/radeon: check buffer relocation offset + - LP: #1333837 + * drm/nouveau/acpi: allow non-optimus setups to load vbios from acpi + - LP: #1333837 + * drm/nouveau: fix another lock unbalance in nouveau_crtc_page_flip + - LP: #1333837 + * ALSA: usb-audio: work around corrupted TEAC UD-H01 feedback data + - LP: #1333837 + * USB: OHCI: fix problem with global suspend on ATI controllers + - LP: #1333837 + * usb: qcserial: add a number of Dell devices + - LP: #1333837 + * usb: storage: shuttle_usbat: fix discs being detected twice + - LP: #1333837 + * fsl-usb: do not test for PHY_CLK_VALID bit on controller version 1.6 + - LP: #1333837 + * tty: serial: 8250_core.c Bug fix for Exar chips. + - LP: #1333837 + * drivers/tty/hvc: don't free hvc_console_setup after init + - LP: #1333837 + * tty: Fix lockless tty buffer race + - LP: #1333837 + * USB: Nokia 305 should be treated as unusual dev + - LP: #1333837 + * USB: Nokia 5300 should be treated as unusual dev + - LP: #1333837 + * HID: add NO_INIT_REPORTS quirk for Synaptics Touch Pad V 103S + - LP: #1333837 + * ALSA: hda - hdmi: Set converter channel count even without sink + - LP: #1333837 + * Input: elantech - fix touchpad initialization on Gigabyte U2442 + - LP: #1333837 + * posix_acl: handle NULL ACL in posix_acl_equiv_mode + - LP: #1333837 + * mm/page-writeback.c: fix divide by zero in pos_ratio_polynom + - LP: #1333837 + * mm: compaction: detect when scanners meet in isolate_freepages + - LP: #1333837 + * mm/compaction: make isolate_freepages start at pageblock boundary + - LP: #1333837 + * autofs: fix lockref lookup + - LP: #1333837 + * libata: Blacklist queued trim for Crucial M500 + - LP: #1333837 + * Linux 3.13.11.3 + - LP: #1333837 + * net: sctp: wake up all assocs if sndbuf policy is per socket + - LP: #1333838 + * net: sctp: test if association is dead in sctp_wake_up_waiters + - LP: #1333838 + * l2tp: take PMTU from tunnel UDP socket + - LP: #1333838 + * net: core: don't account for udp header size when computing seglen + - LP: #1333838 + * bonding: Remove debug_fs files when module init fails + - LP: #1333838 + * bridge: Fix double free and memory leak around br_allowed_ingress + - LP: #1333838 + * ipv6: Limit mtu to 65575 bytes + - LP: #1333838 + * gre: don't allow to add the same tunnel twice + - LP: #1333838 + * vti: don't allow to add the same tunnel twice + - LP: #1333838 + * ipv4: return valid RTA_IIF on ip route get + - LP: #1333838 + * filter: prevent nla extensions to peek beyond the end of the message + - LP: #1333838 + * ip6_gre: don't allow to remove the fb_tunnel_dev + - LP: #1333838 + * vlan: Fix lockdep warning when vlan dev handle notification + - LP: #1333838 + * net: Find the nesting level of a given device by type. + - LP: #1333838 + * net: Allow for more then a single subclass for netif_addr_lock + - LP: #1333838 + * vlan: Fix lockdep warning with stacked vlan devices. + - LP: #1333838 + * macvlan: Fix lockdep warnings with stacked macvlan devices + - LP: #1333838 + * tg3: update rx_jumbo_pending ring param only when jumbo frames are + enabled + - LP: #1333838 + * net: sctp: cache auth_enable per endpoint + - LP: #1333838 + * rtnetlink: Warn when interface's information won't fit in our packet + - LP: #1333838 + * rtnetlink: Only supply IFLA_VF_PORTS information when RTEXT_FILTER_VF + is set + - LP: #1333838 + * ipv6: fib: fix fib dump restart + - LP: #1333838 + * bridge: Handle IFLA_ADDRESS correctly when creating bridge device + - LP: #1333838 + * sctp: reset flowi4_oif parameter on route lookup + - LP: #1333838 + * net: qmi_wwan: add Sierra Wireless EM7355 + - LP: #1333838 + * net: qmi_wwan: add Sierra Wireless MC73xx + - LP: #1333838 + * net: qmi_wwan: add Sierra Wireless MC7305/MC7355 + - LP: #1333838 + * net: qmi_wwan: add Olivetti Olicard 500 + - LP: #1333838 + * net: qmi_wwan: add Alcatel L800MA + - LP: #1333838 + * net: qmi_wwan: add a number of CMOTech devices + - LP: #1333838 + * net: qmi_wwan: add a number of Dell devices + - LP: #1333838 + * slip: fix spinlock variant + - LP: #1333838 + * net: sctp: Potentially-Failed state should not be reached from + unconfirmed state + - LP: #1333838 + * net: sctp: Don't transition to PF state when transport has exhausted + 'Path.Max.Retrans'. + - LP: #1333838 + * mactap: Fix checksum errors for non-gso packets in bridge mode + - LP: #1333838 + * tcp_cubic: fix the range of delayed_ack + - LP: #1333838 + * vsock: Make transport the proto owner + - LP: #1333838 + * net: cdc_ncm: fix buffer overflow + - LP: #1333838 + * ip_tunnel: Set network header properly for IP_ECN_decapsulate() + - LP: #1333838 + * net: cdc_mbim: __vlan_find_dev_deep need rcu_read_lock + - LP: #1333838 + * net: ipv4: ip_forward: fix inverted local_df test + - LP: #1333838 + * net: ipv6: send pkttoobig immediately if orig frag size > mtu + - LP: #1333838 + * ipv4: fib_semantics: increment fib_info_cnt after fib_info allocation + - LP: #1333838 + * net: cdc_mbim: handle unaccelerated VLAN tagged frames + - LP: #1333838 + * macvlan: Don't propagate IFF_ALLMULTI changes on down interfaces. + - LP: #1333838 + * sfc: fix calling of free_irq with already free vector + - LP: #1333838 + * ip6_tunnel: fix potential NULL pointer dereference + - LP: #1333838 + * net: filter: x86: fix JIT address randomization + - LP: #1333838 + * net: filter: s390: fix JIT address randomization + - LP: #1333838 + * ipv6: fix calculation of option len in ip6_append_data + - LP: #1333838 + * rtnetlink: wait for unregistering devices in rtnl_link_unregister() + - LP: #1333838 + * net: gro: make sure skb->cb[] initial content has not to be zero + - LP: #1333838 + * batman-adv: fix reference counting imbalance while sending fragment + - LP: #1333838 + * batman-adv: increase orig refcount when storing ref in gw_node + - LP: #1333838 + * batman-adv: fix local TT check for outgoing arp requests in DAT + - LP: #1333838 + * ip_tunnel: Initialize the fallback device properly + - LP: #1333838 + * ipv4: initialise the itag variable in __mkroute_input + - LP: #1333838 + * net-gro: reset skb->truesize in napi_reuse_skb() + - LP: #1333838 + * netfilter: ipv4: defrag: set local_df flag on defragmented skb + - LP: #1333838 + * ima: introduce ima_kernel_read() + - LP: #1333838 + * ima: audit log files opened with O_DIRECT flag + - LP: #1333838 + * percpu: make pcpu_alloc_chunk() use pcpu_mem_free() instead of kfree() + - LP: #1333838 + * workqueue: fix bugs in wq_update_unbound_numa() failure path + - LP: #1333838 + * [media] fc2580: fix tuning failure on 32-bit arch + - LP: #1333838 + * memory: mvebu-devbus: fix the conversion of the bus width + - LP: #1333838 + * ARM: orion5x: fix target ID for crypto SRAM window + - LP: #1333838 + * workqueue: make rescuer_thread() empty wq->maydays list before exiting + - LP: #1333838 + * workqueue: fix a possible race condition between rescuer and + pwq-release + - LP: #1333838 + * spi: core: Ignore unsupported Dual/Quad Transfer Mode bits + - LP: #1333838 + * device_cgroup: rework device access check and exception checking + - LP: #1333838 + * PCI: mvebu: fix off-by-one in the computed size of the mbus windows + - LP: #1333838 + * bus: mvebu-mbus: allow several windows with the same target/attribute + - LP: #1333838 + * PCI: mvebu: split PCIe BARs into multiple MBus windows when needed + - LP: #1333838 + * ARM: mvebu: fix NOR bus-width in Armada XP GP Device Tree + - LP: #1333838 + * ARM: mvebu: fix NOR bus-width in Armada XP DB Device Tree + - LP: #1333838 + * ARM: mvebu: fix NOR bus-width in Armada XP OpenBlocks AX3 Device Tree + - LP: #1333838 + * crypto: caam - add allocation failure handling in SPRINTFCAT macro + - LP: #1333838 + * ARM: common: edma: Fix xbar mapping + - LP: #1333838 + * clk: Fix double free due to devm_clk_register() + - LP: #1333838 + * [media] media-device: fix infoleak in ioctl media_enum_entities() + - LP: #1333838 + * ARM: dts: kirkwood: fix mislocated pcie-controller nodes + - LP: #1333838 + * device_cgroup: check if exception removal is allowed + - LP: #1333838 + * md: avoid possible spinning md thread at shutdown. + - LP: #1333838 + * ACPI: Remove Kconfig symbol ACPI_PROCFS + - LP: #1333838 + * ACPI: Revert "ACPI: Remove CONFIG_ACPI_PROCFS_POWER and cm_sbsc.c" + - LP: #1333838 + * ACPI: Revert "ACPI / Battery: Remove battery's proc directory" + - LP: #1333838 + * NFSd: Move default initialisers from create_client() to alloc_client() + - LP: #1333838 + * NFSd: call rpc_destroy_wait_queue() from free_client() + - LP: #1333838 + * genirq: Provide irq_force_affinity fallback for non-SMP + - LP: #1333838 + * libata: clean up ZPODD when a port is detached + - LP: #1333838 + * ACPI / blacklist: Add dmi_enable_osi_linux quirk for Asus EEE PC 1015PX + - LP: #1333838 + * ACPI: Revert "ACPI / AC: convert ACPI ac driver to platform bus" + - LP: #1333838 + * ACPI / processor: do not mark present at boot but not onlined CPU as + onlined + - LP: #1333838 + * NFSD: Call ->set_acl with a NULL ACL structure if no entries + - LP: #1333838 + * ALSA: hda - add headset mic detect quirks for three Dell laptops + - LP: #1297581, #1333838 + * gpio: mcp23s08: Bug fix of SPI device tree registration. + - LP: #1333838 + * drm/i915/vlv: reset VLV media force wake request register + - LP: #1333838 + * ARM: dts: i.MX53: Fix ipu register space size + - LP: #1333838 + * mm, thp: close race between mremap() and split_huge_page() + - LP: #1333838 + * intel_pstate: Set turbo VID for BayTrail + - LP: #1333838 + * powerpc/powernv: Reset root port in firmware + - LP: #1333838 + * hrtimer: Set expiry time before switch_hrtimer_base() + - LP: #1333838 + * hwmon: (emc1403) fix inverted store_hyst() + - LP: #1333838 + * hwmon: (emc1403) Fix resource leak on module unload + - LP: #1333838 + * hwmon: (emc1403) Support full range of known chip revision numbers + - LP: #1333838 + * iommu/amd: Fix interrupt remapping for aliased devices + - LP: #1333838 + * ASoC: wm8962: Update register CLASS_D_CONTROL_1 to be non-volatile + - LP: #1333838 + * [media] V4L2: ov7670: fix a wrong index, potentially Oopsing the kernel + from user-space + - LP: #1333838 + * [media] V4L2: fix VIDIOC_CREATE_BUFS in 64- / 32-bit compatibility mode + - LP: #1333838 + * x86, mm, hugetlb: Add missing TLB page invalidation for hugetlb_cow() + - LP: #1333838 + * i2c: designware: Mask all interrupts during i2c controller enable + - LP: #1333838 + * i2c: s3c2410: resume race fix + - LP: #1333838 + * i2c: rcar: bail out on zero length transfers + - LP: #1333838 + * dm crypt: fix cpu hotplug crash by removing per-cpu structure + - LP: #1333838 + * metag: fix memory barriers + - LP: #1333838 + * metag: Reduce maximum stack size to 256MB + - LP: #1333838 + * drm/i915: restore backlight precision when converting from ACPI + - LP: #1333838 + * drm/i915: Increase WM memory latency values on SNB + - LP: #1333838 + * PCI: shpchp: Check bridge's secondary (not primary) bus speed + - LP: #1333838 + * parisc: ratelimit userspace segfault printing + - LP: #1333838 + * parisc: Improve LWS-CAS performance + - LP: #1333838 + * Target/iser: Fix wrong connection requests list addition + - LP: #1333838 + * Target/iser: Fix iscsit_accept_np and rdma_cm racy flow + - LP: #1333838 + * iscsi-target: Change BUG_ON to REJECT in iscsit_process_nop_out + - LP: #1333838 + * tcm_fc: Fix free-after-use regression in ft_free_cmd + - LP: #1333838 + * target: Don't allow setting WC emulation if device doesn't support + - LP: #1333838 + * arm: dts: Fix missing device_type="memory" for ste-ccu8540 + - LP: #1333838 + * mips: dts: Fix missing device_type="memory" property in memory nodes + - LP: #1333838 + * arm64: fix pud_huge() for 2-level pagetables + - LP: #1333838 + * libceph: fix corruption when using page_count 0 page in rbd + - LP: #1333838 + * clk: tegra: use pll_ref as the pll_e parent + - LP: #1333838 + * clk: tegra: Fix wrong value written to PLLE_AUX + - LP: #1333838 + * target: fix memory leak on XCOPY + - LP: #1333838 + * sysfs: make sure read buffer is zeroed + - LP: #1333838 + * cfg80211: free sme on connection failures + - LP: #1333838 + * sched: Sanitize irq accounting madness + - LP: #1333838 + * sched: Use CPUPRI_NR_PRIORITIES instead of MAX_RT_PRIO in cpupri check + - LP: #1333838 + * mac80211: fix suspend vs. association race + - LP: #1333838 + * mac80211: fix on-channel remain-on-channel + - LP: #1333838 + * af_iucv: wrong mapping of sent and confirmed skbs + - LP: #1333838 + * perf: Limit perf_event_attr::sample_period to 63 bits + - LP: #1333838 + * perf: Prevent false warning in perf_swevent_add + - LP: #1333838 + * drm/gf119-/disp: fix nasty bug which can clobber SOR0's clock setup + - LP: #1333838 + * drm/radeon: also try GART for CPU accessed buffers + - LP: #1333838 + * drm/radeon: handle non-VGA class pci devices with ATRM + - LP: #1333838 + * drm/radeon: fix register typo on si + - LP: #1333838 + * drm/radeon: avoid segfault on device open when accel is not working. + - LP: #1333838 + * drm/radeon/pm: don't allow debugfs/sysfs access when PX card is off + (v2) + - LP: #1333838 + * can: peak_pci: prevent use after free at netdev removal + - LP: #1333838 + * nfsd4: remove lockowner when removing lock stateid + - LP: #1333838 + * nfsd4: warn on finding lockowner without stateid's + - LP: #1333838 + * dma: mv_xor: Flush descriptors before activating a channel + - LP: #1333838 + * dmaengine: fix dmaengine_unmap failure + - LP: #1333838 + * hwpoison, hugetlb: lock_page/unlock_page does not match for handling a + free hugepage + - LP: #1333838 + * mm/memory-failure.c: fix memory leak by race between poison and + unpoison + - LP: #1333838 + * ARM: OMAP3: clock: Back-propagate rate change from cam_mclk to dpll4_m5 + on all OMAP3 platforms + - LP: #1333838 + * dmaengine: dw: went back to plain {request,free}_irq() calls + - LP: #1333838 + * ARM: omap5: hwmod_data: Correct IDLEMODE for McPDM + - LP: #1333838 + * Input: synaptics - add min/max quirk for the ThinkPad W540 + - LP: #1333838 + * ARM: OMAP2+: nand: Fix NAND on OMAP2 and OMAP3 boards + - LP: #1333838 + * futex: Add another early deadlock detection check + - LP: #1333838 + * futex: Prevent attaching to kernel threads + - LP: #1333838 + * ARM: OMAP4: Fix the boot regression with CPU_IDLE enabled + - LP: #1333838 + * cpufreq: remove race while accessing cur_policy + - LP: #1333838 + * cpufreq: cpu0: drop wrong devm usage + - LP: #1333838 + * ARM: imx: fix error handling in ipu device registration + - LP: #1333838 + * ALSA: hda - Fix onboard audio on Intel H97/Z97 chipsets + - LP: #1333838 + * ARM: 8051/1: put_user: fix possible data corruption in put_user + - LP: #1333838 + * ARM: 8064/1: fix v7-M signal return + - LP: #1333838 + * Input: synaptics - T540p - unify with other LEN0034 models + - LP: #1333838 + * drm/i915: Only copy back the modified fields to userspace from + execbuffer + - LP: #1333838 + * dm cache: always split discards on cache block boundaries + - LP: #1333838 + * virtio_blk: don't crash, report error if virtqueue is broken. + - LP: #1333838 + * virtio_blk: fix race between start and stop queue + - LP: #1333838 + * powerpc: Fix 64 bit builds with binutils 2.24 + - LP: #1333838 + * powerpc, kexec: Fix "Processor X is stuck" issue during kexec from ST + mode + - LP: #1333838 + * rtmutex: Fix deadlock detector for real + - LP: #1333838 + * drm/radeon: avoid crash if VM command submission isn't available + - LP: #1333838 + * drm/radeon: don't allow RADEON_GEM_DOMAIN_CPU for command submission + - LP: #1333838 + * iwlwifi: mvm: fix setting channel in monitor mode + - LP: #1333838 + * Staging: speakup: Move pasting into a work item + - LP: #1333838 + * USB: Avoid runtime suspend loops for HCDs that can't handle + suspend/resume + - LP: #1333838 + * can: only rename enabled led triggers when changing the netdev name + - LP: #1333838 + * USB: io_ti: fix firmware download on big-endian machines (part 2) + - LP: #1333838 + * USB: ftdi_sio: add NovaTech OrionLXm product ID + - LP: #1333838 + * USB: serial: option: add support for Novatel E371 PCIe card + - LP: #1333838 + * USB: cdc-wdm: properly include types.h + - LP: #1333838 + * md: always set MD_RECOVERY_INTR when aborting a reshape or other + "resync". + - LP: #1333838 + * xhci: delete endpoints from bandwidth list before freeing whole device + - LP: #1333838 + * md: always set MD_RECOVERY_INTR when interrupting a reshape thread. + - LP: #1333838 + * ALSA: hda/analog - Fix silent output on ASUS A8JN + - LP: #1333838 + * drm/radeon/dpm: resume fixes for some systems + - LP: #1333838 + * drm/radeon: use the CP DMA on CIK + - LP: #1333838 + * ALSA: hda/realtek - Correction of fixup codes for PB V7900 laptop + - LP: #1333838 + * ALSA: hda/realtek - Fix COEF widget NID for ALC260 replacer fixup + - LP: #1333838 + * iser-target: Add missing target_put_sess_cmd for ImmedateData failure + - LP: #1333838 + * iscsi-target: Fix wrong buffer / buffer overrun in + iscsi_change_param_value() + - LP: #1333838 + * percpu-refcount: fix usage of this_cpu_ops + - LP: #1333838 + * target: Fix alua_access_state attribute OOPs for un-configured devices + - LP: #1333838 + * mm: rmap: fix use-after-free in __put_anon_vma + - LP: #1333838 + * mm: add !pte_present() check on existing hugetlb_entry callbacks + - LP: #1333838 + * target: Fix NULL pointer dereference for XCOPY in target_put_sess_cmd + - LP: #1333838 + * Linux 3.13.11.4 + - LP: #1333838 + * powerpc/powernv: Infrastructure to read opal messages in generic + format. + - LP: #1334268 + * powerpc/powernv: Infrastructure to support OPAL async completion + - LP: #1334268 + * powerpc/powernv: Enable fetching of platform sensor data + - LP: #1334268 + * powerpc/powernv: Fix endian issues with sensor code + - LP: #1334268 + * powerpc/powernv: Add OPAL message log interface + - LP: #1334268 + * powerpc/powernv: Fix kexec races going back to OPAL + - LP: #1334268 + * powerpc/powernv: Fix little endian issues in OPAL flash code + - LP: #1334268 + * powerpc/powernv: Fix little endian issues with opal_do_notifier calls + - LP: #1334268 + * powerpc/powernv: Fix little endian issues in OPAL error log code + - LP: #1334268 + * powerpc/powernv: Create OPAL sglist helper functions and fix endian + issues + - LP: #1334268 + * powerpc/powernv: Fix little endian issues in OPAL dump code + - LP: #1334268 + * powerpc: Fix error return in rtas_flash module init + - LP: #1334268 + * powerpc/powernv: Increase candidate fw image size + - LP: #1334268 + * powerpc/powernv: Return secondary CPUs to firmware before FW update + - LP: #1334268 + * powerpc/powernv: Pass buffer size to OPAL validate flash call + - LP: #1334268 + * gpio: add a driver for the Synopsys DesignWare APB GPIO block + - LP: #1334823 + * gpio: dwapb: drop irq_setup_generic_chip() + - LP: #1334823 + * gpio: dwapb: use a second irq chip + - LP: #1334823 + * lzo: properly check for overruns + - LP: #1335313 + - CVE-2014-4608 + * lz4: ensure length does not wrap + - LP: #1335314 + - CVE-2014-4611 + * netfilter: nf_nat: fix oops on netns removal + - LP: #1314274 + * ALSA: hda - add device ID for Broadwell display audio controller + - LP: #1188091 + * ALSA: hda - add codec ID for Broadwell display audio codec + - LP: #1188091 + * ALSA: hda/hdmi - apply all Haswell fix-ups to Broadwell display codec + - LP: #1188091 + * ALSA: hda - using POS_FIX_LPIB on Broadwell HDMI Audio + - LP: #1188091 + + -- Luis Henriques Tue, 01 Jul 2014 15:10:43 +0100 + +linux (3.13.0-30.55) trusty; urgency=low + + [ Upstream Kernel Changes ] + + * x86_64,ptrace: Enforce RIP <= TASK_SIZE_MAX (CVE-2014-4699) + - LP: #1337339 + - CVE-2014-4699 + + -- Luis Henriques Thu, 03 Jul 2014 16:15:57 +0100 + +linux (3.13.0-30.54) trusty; urgency=low + + [ Adam Conrad ] + + * [Config] Enable building the sata-modules udeb on ppc64el. + - LP: #1323980 + + [ Anton Blanchard ] + + * SAUCE: (no-up) powerpc: 64bit sendfile is capped at 2GB + - LP: #1328230 + + [ Ben Widawsky ] + + * SAUCE: i915_bdw: drm/i915: Fix PSR programming + - LP: #1321729 + * SAUCE: i915_bdw: drm/i915: Correct PPGTT total size + - LP: #1321729 + + [ Chris Wilson ] + + * SAUCE: i915_bdw: drm/i915: Broadwell expands ACTHD to 64bit + - LP: #1321729 + + [ Damien Lespiau ] + + * SAUCE: i915_bdw: drm/i915/bdw: Implement + Wa4x4STCOptimizationDisable:bdw + - LP: #1321729 + + [ Dave Chiluk ] + + * [Config] Enable CONFIG_IP_VS_IPV6=y + - LP: #1300739 + + [ Kamal Mostafa ] + + * [Config] add debian/gbp.conf + * Release Tracking Bug + - LP: #1328286 + + [ Mika Kuoppala ] + + * SAUCE: i915_bdw: drm/i915: add render state initialization + - LP: #1321729 + + [ Paulo Zanoni ] + + * SAUCE: i915_bdw: drm/i915: fix assert_cursor on BDW + - LP: #1321729 + + [ Steven Rostedt ] + + * SAUCE: i915_bdw: drm/i915: Do not dereference pointers from ring buffer + in evict event + - LP: #1321729 + + [ Tim Gardner ] + + * [Config] CONFIG_POWERNV_CPUFREQ=y for ppc64el + - LP: #1324571 + * [Debian] Treat vdso install as an environment variable + * [Config] Treat vdso install as an environment variable + * [Config] CONFIG_MLX4_DEBUG=y + - LP: #1328256 + * [Config] CONFIG_I40EVF=m, CONFIG_I40E_DCB=y, CONFIG_I40E_VXLAN=y + - LP: #1328037 + + [ Timo Aaltonen ] + + * SAUCE: i915_bdw: Rebase to drm-intel-next-2014-03-07 + fixes + - LP: #1321729 + * SAUCE: i915_bdw: Add BDW specific power well calls + - LP: #1317865 + + [ Upstream Kernel Changes ] + + * drm: expose subpixel order name routine v3 + * drm: dp helper: Add DP test sink CRC definition. + * drm: export cmdline and preferred mode functions from fb helper + * hugetlb: ensure hugepage access is denied if hugepages are not + supported + - LP: #1328251 + * powerpc/powernv: Move SG list structure to header file + - LP: #1326015 + * powerpc/powernv: Read OPAL error log and export it through sysfs + - LP: #1326015 + * powerpc/powernv Platform dump interface + - LP: #1326015 + * pci_regs.h: Add PCI bus link speed and width defines + - LP: #1328037 + * net_tstamp: Add SIOCGHWTSTAMP ioctl to match SIOCSHWTSTAMP + - LP: #1328037 + * PCI/MSI: Add pci_enable_msi_range() and pci_enable_msix_range() + - LP: #1328037 + * net: Change skb_get_rxhash to skb_get_hash + - LP: #1328037 + * net: Add utility functions to clear rxhash + - LP: #1328037 + * net: Add function to set the rxhash + - LP: #1328037 + * i40e: set pf_id based on device and function numbers + - LP: #1328037 + * i40e: register file updates + - LP: #1328037 + * i40e: clear AQ head and tail registers + - LP: #1328037 + * i40e: simplify aq head-tail-len setups + - LP: #1328037 + * i40e: firmware version fields offsets update + - LP: #1328037 + * i40e: allow one more vector for VFs + - LP: #1328037 + * i40e: select reset counters correctly + - LP: #1328037 + * i40e: retry call on timeout + - LP: #1328037 + * i40e: properly add VF MAC addresses + - LP: #1328037 + * i40e: fix debugging messages + - LP: #1328037 + * i40e: default debug mask setting + - LP: #1328037 + * i40e: add interrupt test + - LP: #1328037 + * i40e: add support for triggering EMPR + - LP: #1328037 + * i40e: restrict diag test length + - LP: #1328037 + * i40e: sync header files with hardware + - LP: #1328037 + * i40e: separate TSYNVALID and TSYNINDX fields in Rx descriptor + - LP: #1328037 + * i40e: check multi-bit state correctly + - LP: #1328037 + * i40e: get media type during link info + - LP: #1328037 + * i40e: Add flag for L2 VEB filtering + - LP: #1328037 + * i40e: enable early hardware support + - LP: #1328037 + * i40e: whitespace + - LP: #1328037 + * i40e: Bump version + - LP: #1328037 + * i40e: refactor reset code + - LP: #1328037 + * i40e: Enable all PCTYPEs except FCOE for RSS. + - LP: #1328037 + * i40e: only set up the rings to be used + - LP: #1328037 + * i40e: clear test state bit after all ethtool tests + - LP: #1328037 + * i40e: refactor ethtool tests + - LP: #1328037 + * i40e: add num_VFs message + - LP: #1328037 + * i40e: Add a new variable to track number of pf instances + - LP: #1328037 + * i40e: restrict diag test messages + - LP: #1328037 + * i40e: loopback info and set loopback fix + - LP: #1328037 + * i40e: complain about out-of-range descriptor request + - LP: #1328037 + * i40e: remove and fix confusing define name + - LP: #1328037 + * i40e: Bump version number + - LP: #1328037 + * i40e: fix up some of the ethtool connection reporting + - LP: #1328037 + * i40e: fix pf reset after offline test + - LP: #1328037 + * i40e: Tell the stack about our actual number of queues + - LP: #1328037 + * i40e: init flow control settings to disabled + - LP: #1328037 + * i40e: trivial fixes + - LP: #1328037 + * i40e: use same number of queues as CPUs + - LP: #1328037 + * i40e: reinit flow for the main VSI + - LP: #1328037 + * i40e: function to reconfigure RSS queues and rebuild + - LP: #1328037 + * i40e: Add basic support for get/set channels for RSS + - LP: #1328037 + * i40e: rtnl_lock in reset path fixes + - LP: #1328037 + * i40e: support for suspend and resume + - LP: #1328037 + * i40e: Remove FCoE in i40e_virtchnl_pf.c code + - LP: #1328037 + * i40e: Fix dump output from debugfs calls + - LP: #1328037 + * i40e: prevent null pointer exception in dump descriptor + - LP: #1328037 + * i40e: simplify error messages for dump descriptor + - LP: #1328037 + * i40e: fix up scanf decoders + - LP: #1328037 + * i40e: more print_hex_dump use + - LP: #1328037 + * i40e: Fix wrong mask bits being used in misc interrupt + - LP: #1328037 + * i40e: Bump version number + - LP: #1328037 + * i40e: Fix off by one in i40e_dbg_command_write + - LP: #1328037 + * i40e: make functions static and remove dead code + - LP: #1328037 + * i40evf: main driver core + - LP: #1328037 + * i40evf: transmit and receive functionality + - LP: #1328037 + * i40evf: core ethtool functionality + - LP: #1328037 + * i40evf: virtual channel interface + - LP: #1328037 + * i40evf: driver core headers + - LP: #1328037 + * i40evf: init code and hardware support + - LP: #1328037 + * i40evf: add driver to kernel build system + - LP: #1328037 + * i40evf: A0 silicon specific + - LP: #1328037 + * i40e: using for_each_set_bit to simplify the code + - LP: #1328037 + * i40e: Suppress HMC error to Interrupt message level + - LP: #1328037 + * i40e: Populate and check pci bus speed and width + - LP: #1328037 + * i40e: add wake-on-lan support + - LP: #1328037 + * i40e: fix curly brace use and return type + - LP: #1328037 + * i40e: Implementation of VXLAN ndo's + - LP: #1328037 + * i40e: Rx checksum offload for VXLAN + - LP: #1328037 + * i40e: move i40e_reset_vf + - LP: #1328037 + * i40e: refactor VF reset flow + - LP: #1328037 + * i40e: remove redundant code + - LP: #1328037 + * i40e: remove chatty log messages + - LP: #1328037 + * i40e: fix error return + - LP: #1328037 + * i40e: be more informative + - LP: #1328037 + * i40e: make a define from a large constant + - LP: #1328037 + * i40e: update led set args + - LP: #1328037 + * i40e: report VF MAC addresses correctly + - LP: #1328037 + * i40e: Dump the whole NVM, not half + - LP: #1328037 + * i40e: fix mac address checking + - LP: #1328037 + * i40e: Change the ethtool NVM read method to use AQ + - LP: #1328037 + * i40e: fix constant cast issues + - LP: #1328037 + * i40e: guard against vf message races + - LP: #1328037 + * i40e: add header file flag _I40E_TXRX_H_ + - LP: #1328037 + * i40e: use functions to enable and disable icr 0 + - LP: #1328037 + * i40e: reinit buffer size each time + - LP: #1328037 + * i40e: fix error handling when alloc of vsi array fails + - LP: #1328037 + * i40e: keep allocated memory in structs + - LP: #1328037 + * i40e: catch unset q_vector + - LP: #1328037 + * i40e: Fix ring allocation + - LP: #1328037 + * i40e: I40E_FLAG_MQ_ENABLED is not used + - LP: #1328037 + * i40e: Remove unnecessary prototypes + - LP: #1328037 + * i40e: remove un-necessary io-write + - LP: #1328037 + * i40e: Record dma buffer info for dummy packets + - LP: #1328037 + * i40e: Fix SR-IOV VF port VLAN + - LP: #1328037 + * i40e: fix whitespace + - LP: #1328037 + * i40e: avoid unnecessary register read + - LP: #1328037 + * i40e: Do not enable default port on the VEB + - LP: #1328037 + * i40e: use struct assign instead of memcpy + - LP: #1328037 + * i40e: don't allocate zero size + - LP: #1328037 + * i40e: acknowledge VFLR when disabling SR-IOV + - LP: #1328037 + * i40e: support VFs on PFs other than 0 + - LP: #1328037 + * i40e: Fix VF driver MAC address configuration + - LP: #1328037 + * i40e: use correct struct for get and update vsi params + - LP: #1328037 + * i40e: Hide the Port VLAN VLAN ID + - LP: #1328037 + * i40e: Admin queue shutdown fixes + - LP: #1328037 + * i40e: check asq alive before notify + - LP: #1328037 + * i40e: Do not allow AQ calls from ndo-ops + - LP: #1328037 + * i40e: Expose AQ debugfs hooks + - LP: #1328037 + * i40e: Do not enable broadcast promiscuous by default + - LP: #1328037 + * i40e: Stop accepting any VLAN tag on VLAN 0 filter set + - LP: #1328037 + * i40e: Allow VF to set already assigned MAC address + - LP: #1328037 + * i40e: Bump version + - LP: #1328037 + * i40e: Add code to wait for FW to complete in reset path + - LP: #1328037 + * i40e: update firmware api to 1.1 + - LP: #1328037 + * i40e: Reduce range of interrupt reg in reg test + - LP: #1328037 + * i40e: move PF ID init from PF reset to SC init + - LP: #1328037 + * i40e: check MAC type before any REG access + - LP: #1328037 + * i40e: rework shadow ram read functions + - LP: #1328037 + * i40e: whitespace paren and comment tweaks + - LP: #1328037 + * i40e: Enable/Disable PF switch LB on SR-IOV configure changes + - LP: #1328037 + * i40e: remove redundant AQ enable + - LP: #1328037 + * i40e: correctly setup ARQ descriptors + - LP: #1328037 + * i40e: Re-enable interrupt on ICR0 + - LP: #1328037 + * i40e: use kernel specific defines + - LP: #1328037 + * i40e: Fix GPL header + - LP: #1328037 + * i40e: Fix MAC format in Write MAC address AQ cmd + - LP: #1328037 + * i40e: add a comment on barrier and fix panic on reset + - LP: #1328037 + * i40e: disable packet split + - LP: #1328037 + * i40e: Cleanup reconfig rss path + - LP: #1328037 + * i40e: release NVM resource reservation on startup + - LP: #1328037 + * i40e: remove interrupt on AQ error + - LP: #1328037 + * i40e: accept pf to pf adminq messages + - LP: #1328037 + * i40e: shorten wordy fields + - LP: #1328037 + * i40e: trivial: formatting and checkpatch fixes + - LP: #1328037 + * i40e: fix spelling errors + - LP: #1328037 + * i40e: Add a dummy packet template + - LP: #1328037 + * i40e: Turn flow director off in MFP mode + - LP: #1328037 + * i40e: use assignment instead of memcpy + - LP: #1328037 + * i40e: drop unused macros + - LP: #1328037 + * i40e: Update the Current NVM version Low value + - LP: #1328037 + * i40e: Bump version + - LP: #1328037 + * i40e: fix long lines + - LP: #1328037 + * i40e: Cleanup Doxygen warnings + - LP: #1328037 + * i40e: Setting queue count to 1 using ethtool is valid + - LP: #1328037 + * i40e: do not bail when disabling if Tx queue disable fails + - LP: #1328037 + * i40e: allow VF to remove any MAC filter + - LP: #1328037 + * i40e: check for possible incorrect ipv6 checksum + - LP: #1328037 + * i40e: adjust ITR max and min values + - LP: #1328037 + * i40e: clear qtx_head before enabling Tx queue + - LP: #1328037 + * i40e: call clear_pxe after adminq is initialized + - LP: #1328037 + * i40e: enable PTP + - LP: #1328037 + * i40e: fix log message wording + - LP: #1328037 + * i40e: Bump version + - LP: #1328037 + * i40evf: fix s390 build failure due to implicit prefetch.h + - LP: #1328037 + * i40e: remove extra register write + - LP: #1328037 + * i40e: associate VMDq queue with VM type + - LP: #1328037 + * i40e: make message meaningful + - LP: #1328037 + * i40e: whitespace fixes + - LP: #1328037 + * i40e: trivial cleanup + - LP: #1328037 + * i40e: Bump version number + - LP: #1328037 + * i40e: Warn admin to reload VF driver on port VLAN configuration + - LP: #1328037 + * i40e: Retain MAC filters on port VLAN deletion + - LP: #1328037 + * i40e: Remove autogenerated Module.symvers file. + - LP: #1328037 + * i40e: check desc pointer before printing + - LP: #1328037 + * i40e: updates to AdminQ interface + - LP: #1328037 + * i40e: fix compile warning on checksum_local + - LP: #1328037 + * i40e: Change firmware workaround + - LP: #1328037 + * i40e: whitespace fixes + - LP: #1328037 + * i40e: rename defines + - LP: #1328037 + * i40e: refactor flow director + - LP: #1328037 + * i40e: implement DCB support infastructure + - LP: #1328037 + * i40e: add DCB and DCBNL support + - LP: #1328037 + * i40e: add DCB option to Kconfig + - LP: #1328037 + * i40e: Fix device ID define names to align to standard + - LP: #1328037 + * i40e: Add missing braces to i40e_dcb_need_reconfig() + - LP: #1328037 + * i40e: spelling error + - LP: #1328037 + * i40e: bump driver version + - LP: #1328037 + * i40evf: trivial fixes + - LP: #1328037 + * i40evf: clean up memsets + - LP: #1328037 + * i40e: Setting i40e_down bit for tx_timeout + - LP: #1328037 + * i40e: remove dead code + - LP: #1328037 + * i40e: set VF state to active when reset is complete + - LP: #1328037 + * i40e: reset VFs after PF reset + - LP: #1328037 + * i40e: enable extant VFs + - LP: #1328037 + * i40e: don't handle VF reset on unload + - LP: #1328037 + * i40evf: clean up adapter struct + - LP: #1328037 + * i40evf: fix bogus comment + - LP: #1328037 + * i40evf: don't store unnecessary array of strings + - LP: #1328037 + * i40evf: change type of flags variable + - LP: #1328037 + * i40evf: refactor reset handling + - LP: #1328037 + * net: i40evf: Remove duplicate include + - LP: #1328037 + * i40e: Use pci_enable_msix_range() instead of pci_enable_msix() + - LP: #1328037 + * i40evf: request reset on tx hang + - LP: #1328037 + * i40evf: remove VLAN filters on close + - LP: #1328037 + * i40evf: fix multiple crashes on remove + - LP: #1328037 + * i40evf: get rid of pci_using_dac + - LP: #1328037 + * i40evf: fix up strings in init task + - LP: #1328037 + * i40evf: remove bogus comment + - LP: #1328037 + * i40evf: don't guess device name + - LP: #1328037 + * i40evf: store ring size in ring structs + - LP: #1328037 + * i40evf: update version and copyright date + - LP: #1328037 + * i40evf: remove errant space + - LP: #1328037 + * i40e: remove unnecessary delay + - LP: #1328037 + * i40e: tighten up ring enable/disable flow + - LP: #1328037 + * i40e: Change MSIX to MSI-X + - LP: #1328037 + * i40e and i40evf: Bump driver versions + - LP: #1328037 + * i40evf: Enable the ndo_set_features netdev op + - LP: #1328037 + * i40e: Flow Director sideband accounting + - LP: #1328037 + * i40e: Prevent overflow due to kzalloc + - LP: #1328037 + * i40e/i40evf: i40e implementation for skb_set_hash + - LP: #1328037 + * i40e: clean up comment style + - LP: #1328037 + * i40e: Remove a FW workaround for Number of MSIX vectors + - LP: #1328037 + * i40e: count timeout events + - LP: #1328037 + * i40e: Remove a redundant filter addition + - LP: #1328037 + * i40e: Fix static checker warning + - LP: #1328037 + * i40e: fix nvm version and remove firmware report + - LP: #1328037 + * i40e/i40evf: carefully fill tx ring + - LP: #1328037 + * i40e/i40evf: Bump pf&vf build versions + - LP: #1328037 + * i40e: delete netdev after deleting napi and vectors + - LP: #1328037 + * i40e: Fix a bug in the update logic for FDIR SB filter. + - LP: #1328037 + * i40e/i40evf: Some flow director HW definition fixes + - LP: #1328037 + * i40e: make string references to q be queue + - LP: #1328037 + * i40e: cleanup strings + - LP: #1328037 + * i40e: simplified init string + - LP: #1328037 + * i40e: Fix function comments + - LP: #1328037 + * i40e: Define a new state variable to keep track of feature auto disable + - LP: #1328037 + * i40e: Add code to handle FD table full condition + - LP: #1328037 + * i40e: Bug fix for FDIR replay logic + - LP: #1328037 + * i40e: Let MDD events be handled by MDD handler + - LP: #1328037 + * i40e/i40evf: Use correct number of VF vectors + - LP: #1328037 + * i40e/i40evf: Use dma_set_mask_and_coherent + - LP: #1328037 + * net: Replace u64_stats_fetch_begin_bh to u64_stats_fetch_begin_irq + - LP: #1328037 + * i40e: Don't receive packets when the napi budget == 0 + - LP: #1328037 + * i40evf: Rename i40e_ptype_lookup i40evf_ptype_lookup + - LP: #1328037 + * net/i40e: Avoid double setting of NETIF_F_SG for the HW encapsulation + feature mask + - LP: #1328037 + * i40e: support VF link state ndo + - LP: #1328037 + * i40evf: correctly program RSS HLUT table + - LP: #1328037 + * i40evf: use min_t + - LP: #1328037 + * i40e: Patch to enable Ethtool/netdev feature flag for NTUPLE control + - LP: #1328037 + * i40e: Refactor and cleanup i40e_open(), adding i40e_vsi_open() + - LP: #1328037 + * i40e/i40evf: enable hardware feature head write back + - LP: #1328037 + * i40e/i40evf: reduce context descriptors + - LP: #1328037 + * i40e: potential array underflow in i40e_vc_process_vf_msg() + - LP: #1328037 + * i40e/i40evf: Bump build versions + - LP: #1328037 + * i40e/i40evf: Add EEE LPI stats + - LP: #1328037 + * i40e: Fix a message string + - LP: #1328037 + * i40evf: don't shut down admin queue on error + - LP: #1328037 + * i40evf: clean up init error messages + - LP: #1328037 + * i40e: Delete ATR filter on RST + - LP: #1328037 + * i40evf: fix oops in watchdog handler + - LP: #1328037 + * i40e: Make the alloc and free queue vector calls orthogonal + - LP: #1328037 + * i40e: eeprom integrity check on load and empr + - LP: #1328037 + * i40e: Cleanup in FDIR SB ethtool code + - LP: #1328037 + * i40e: Add functionality for FD SB to drop packets + - LP: #1328037 + * i40evf: remove double space after return + - LP: #1328037 + * i40e: check for netdev before debugfs use + - LP: #1328037 + * i40e/i40evf: Add an FD message level + - LP: #1328037 + * i40e: Use DEBUG_FD message level for an FD message + - LP: #1328037 + * i40e: fix function kernel doc description + - LP: #1328037 + * i40e/i40evf: fix error checking path + - LP: #1328037 + * i40e/i40evf: Remove addressof casts to same type + - LP: #1328037 + * i40e: Remove casts of pointer to same type + - LP: #1328037 + * i40evf: remove open-coded skb_cow_head + - LP: #1328037 + * i40evf: program RSS LUT correctly + - LP: #1328037 + * i40e: remove open-coded skb_cow_head + - LP: #1328037 + * i40e: fix TCP flag replication for hardware offload + - LP: #1328037 + * e1000e/igb/ixgbe/i40e: fix message terminations + - LP: #1328037 + * i40e: fix Timesync Tx interrupt handler code + - LP: #1328037 + * mm: use paravirt friendly ops for NUMA hinting ptes + - LP: #1313450 + + [ Ville Syrjälä ] + + * SAUCE: i915_bdw: drm/i915: Fix scanline counter fixup on BDW + - LP: #1321729 + + -- Kamal Mostafa Mon, 09 Jun 2014 15:09:43 -0700 + +linux (3.13.0-29.53) trusty; urgency=low + + [ Upstream Kernel Changes ] + + * futex-prevent-requeue-pi-on-same-futex.patch futex: Forbid uaddr == + uaddr2 in futex_requeue(..., requeue_pi=1) + - LP: #1326367 + - CVE-2014-3153 + * futex: Validate atomic acquisition in futex_lock_pi_atomic() + - LP: #1326367 + - CVE-2014-3153 + * futex: Always cleanup owner tid in unlock_pi + - LP: #1326367 + - CVE-2014-3153 + * futex: Make lookup_pi_state more robust + - LP: #1326367 + - CVE-2014-3153 + + -- Brad Figg Wed, 04 Jun 2014 08:25:41 -0700 + +linux (3.13.0-29.52) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - re-used previous tracking bug + + [ Adam Conrad ] + + * [Config] Normalize AHCI configs on powerpc/ppc64el with the rest of the + architectures + - LP: #1323980 + + [ Tanmay Inamdar ] + + * SAUCE: Add MSI/MSI-X driver for APM PCI bus + - LP: #1318977 + + -- Luis Henriques Wed, 28 May 2014 09:38:41 +0100 + +linux (3.13.0-28.51) trusty; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1322112 + + [ Adam Lee ] + + * SAUCE: (no-up) rtlwifi: rtl8723be: disable MSI interrupts mode + - LP: #1310512, #1320070 + + [ 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 + + [ Upstream Kernel Changes ] + + * Revert "PCI: Enable INTx in pci_reenable_device() only when MSI/MSI-X + not enabled" + - LP: #1320946 + * Bluetooth: allocate static minor for vhci + - LP: #1317336 + * core, nfqueue, openvswitch: Orphan frags in skb_zerocopy and handle + errors + - LP: #1320946 + * __dentry_path() fixes + - LP: #1320946 + * drm/i915: quirk invert brightness for Acer Aspire 5336 + - LP: #1320946 + * w1: fix w1_send_slave dropping a slave id + - LP: #1320946 + * ARM: 7954/1: mm: remove remaining domain support from ARMv6 + - LP: #1320946 + * matroxfb: restore the registers M_ACCESS and M_PITCH + - LP: #1320946 + * framebuffer: fix cfb_copyarea + - LP: #1320946 + * mach64: use unaligned access + - LP: #1320946 + * mach64: fix cursor when character width is not a multiple of 8 pixels + - LP: #1320946 + * tgafb: fix mode setting with fbset + - LP: #1320946 + * tgafb: fix data copying + - LP: #1320946 + * hvc: ensure hvc_init is only ever called once in hvc_console.c + - LP: #1320946 + * ARM: dts: Keep G3D regulator always on for exynos5250-arndale + - LP: #1320946 + * PCI: mvebu: Fix potential issue in range parsing + - LP: #1320946 + * usb: dwc3: fix wrong bit mask in dwc3_event_devt + - LP: #1320946 + * x86, AVX-512: AVX-512 Feature Detection + - LP: #1320946 + * x86, AVX-512: Enable AVX-512 States Context Switch + - LP: #1320946 + * s390/cio: fix driver callback initialization for ccw consoles + - LP: #1320946 + * ARM: Fix default CPU selection for ARCH_MULTI_V5 + - LP: #1320946 + * omap3isp: preview: Fix the crop margins + - LP: #1320946 + * ACPICA: Restore code that repairs NULL package elements in return + values. + - LP: #1320946 + * media: gspca: sn9c20x: add ID for Genius Look 1320 V2 + - LP: #1320946 + * m88rs2000: add caps FE_CAN_INVERSION_AUTO + - LP: #1320946 + * m88rs2000: prevent frontend crash on continuous transponder scans + - LP: #1320946 + * mmc: sdhci-bcm-kona: fix build errors when built-in + - LP: #1320946 + * usb: musb: avoid NULL pointer dereference + - LP: #1320946 + * uvcvideo: Do not use usb_set_interface on bulk EP + - LP: #1320946 + * drm/i915: Don't clobber CHICKEN_PIPESL_1 on BDW + - LP: #1320946 + * usb: dwc3: fix randconfig build errors + - LP: #1320946 + * usb: gadget: atmel_usba: fix crashed during stopping when DEBUG is + enabled + - LP: #1320946 + * blktrace: fix accounting of partially completed requests + - LP: #1320946 + * rtlwifi: rtl8192cu: Fix too long disable of IRQs + - LP: #1320946 + * rtlwifi: rtl8192se: Fix too long disable of IRQs + - LP: #1320946 + * rtlwifi: rtl8188ee: Fix too long disable of IRQs + - LP: #1320946 + * rtlwifi: rtl8723ae: Fix too long disable of IRQs + - LP: #1320946 + * xhci: Prevent runtime pm from autosuspending during initialization + - LP: #1320946 + * staging:serqt_usb2: Fix sparse warning restricted __le16 degrades to + integer + - LP: #1320946 + * mtd: atmel_nand: Disable subpage NAND write when using Atmel PMECC + - LP: #1320946 + * iwlwifi: dvm: take mutex when sending SYNC BT config command + - LP: #1320946 + * virtio_balloon: don't softlockup on huge balloon changes. + - LP: #1320946 + * arm64: Make DMA coherent and strongly ordered mappings not executable + - LP: #1320946 + * arm64: Do not synchronise I and D caches for special ptes + - LP: #1320946 + * ARM: OMAP2+: INTC: Acknowledge stuck active interrupts + - LP: #1320946 + * ARM: dts: am33xx: correcting dt node unit address for usb + - LP: #1320946 + * mtip32xx: Set queue bounce limit + - LP: #1320946 + * mtip32xx: Unmap the DMA segments before completing the IO request + - LP: #1320946 + * mtip32xx: mtip_async_complete() bug fixes + - LP: #1320946 + * ath9k: fix ready time of the multicast buffer queue + - LP: #1320946 + * KVM: s390: Optimize ucontrol path + - LP: #1320946 + * mei: fix memory leak of pending write cb objects + - LP: #1320946 + * usb: gadget: tcm_usb_gadget: stop format strings + - LP: #1320946 + * usb: phy: Add ulpi IDs for SMSC USB3320 and TI TUSB1210 + - LP: #1320946 + * USB: unbind all interfaces before rebinding any + - LP: #1320946 + * IB/ipath: Fix potential buffer overrun in sending diag packet routine + - LP: #1320946 + * IB/qib: Fix debugfs ordering issue with multiple HCAs + - LP: #1320946 + * IB/qib: add missing braces in do_qib_user_sdma_queue_create() + - LP: #1320946 + * IB/nes: Return an error on ib_copy_from_udata() failure instead of NULL + - LP: #1320946 + * ALSA: hda/realtek - Restore default value for ALC283 + - LP: #1320946 + * mfd: sec-core: Fix possible NULL pointer dereference when i2c_new_dummy + error + - LP: #1320946 + * regulator: arizona-ldo1: Correct default regulator init_data + - LP: #1320946 + * ASoC: cs42l73: Fix mask bits for SOC_VALUE_ENUM_SINGLE + - LP: #1320946 + * ASoC: cs42l52: Fix mask bits for SOC_VALUE_ENUM_SINGLE + - LP: #1320946 + * drm/i915: Do not dereference pointers from ring buffer in evict event + - LP: #1320946 + * mfd: Include all drivers in subsystem menu + - LP: #1320946 + * mfd: max8997: Fix possible NULL pointer dereference on i2c_new_dummy + error + - LP: #1320946 + * mfd: max77686: Fix possible NULL pointer dereference on i2c_new_dummy + error + - LP: #1320946 + * mfd: max8998: Fix possible NULL pointer dereference on i2c_new_dummy + error + - LP: #1320946 + * mfd: max8925: Fix possible NULL pointer dereference on i2c_new_dummy + error + - LP: #1320946 + * mfd: 88pm860x: Fix I2C device resource leak on regmap init fail + - LP: #1320946 + * mfd: 88pm860x: Fix possible NULL pointer dereference on i2c_new_dummy + error + - LP: #1320946 + * mfd: max77693: Fix possible NULL pointer dereference on i2c_new_dummy + error + - LP: #1320946 + * mfd: 88pm800: Fix I2C device resource leak if probe fails + - LP: #1320946 + * mfd: tps65910: Fix possible invalid pointer dereference on + regmap_add_irq_chip fail + - LP: #1320946 + * MIPS: KVM: Pass reserved instruction exceptions to guest + - LP: #1320946 + * ASoC: cs42l51: Fix SOC_DOUBLE_R_SX_TLV shift values for ADC, PCM, and + Analog kcontrols + - LP: #1320946 + * mac80211: fix potential use-after-free + - LP: #1320946 + * mac80211: fix suspend vs. authentication race + - LP: #1320946 + * mac80211: fix WPA with VLAN on AP side with ps-sta again + - LP: #1320946 + * pid: get pid_t ppid of task in init_pid_ns + - LP: #1320946 + * audit: restore order of tty and ses fields in log output + - LP: #1320946 + * audit: convert PPIDs to the inital PID namespace. + - LP: #1320946 + * mfd: kempld-core: Fix potential hang-up during boot + - LP: #1320946 + * drm/i915: Fix unsafe loop iteration over vma whilst unbinding them + - LP: #1320946 + * powerpc/compat: 32-bit little endian machine name is ppcle, not ppc + - LP: #1320946 + * clk: s2mps11: Fix possible NULL pointer dereference + - LP: #1320946 + * spi: efm32: use $vendor,$device scheme for compatible string + - LP: #1320946 + * ALSA: hda - add headset mic detect quirks for three Dell laptops + - LP: #1297581, #1320946 + * KVM: PPC: Book3S HV: Fix KVM hang with CONFIG_KVM_XICS=n + - LP: #1320946 + * gpio: mxs: Allow for recursive enable_irq_wake() call + - LP: #1320946 + * nfsd4: buffer-length check for SUPPATTR_EXCLCREAT + - LP: #1320946 + * nfsd4: session needs room for following op to error out + - LP: #1320946 + * nfsd4: leave reply buffer space for failed setattr + - LP: #1320946 + * nfsd4: fix test_stateid error reply encoding + - LP: #1320946 + * nfsd: notify_change needs elevated write count + - LP: #1320946 + * dm cache: prevent corruption caused by discard_block_size > + cache_block_size + - LP: #1320946 + * dm transaction manager: fix corruption due to non-atomic transaction + commit + - LP: #1320946 + * dm: take care to copy the space map roots before locking the superblock + - LP: #1320946 + * aio: v4 ensure access to ctx->ring_pages is correctly serialised for + migration + - LP: #1320946 + * NFSD: Traverse unconfirmed client through hash-table + - LP: #1320946 + * lockd: ensure we tear down any live sockets when socket creation fails + during lockd_up + - LP: #1320946 + * drm/i915/tv: fix gen4 composite s-video tv-out + - LP: #1320946 + * dm thin: fix dangling bio in process_deferred_bios error path + - LP: #1320946 + * em28xx: fix PCTV 290e LNA oops + - LP: #1320946 + * NFSv4: Fix a use-after-free problem in open() + - LP: #1320946 + * nfsd4: fix setclientid encode size + - LP: #1320946 + * MIPS: Hibernate: Flush TLB entries in swsusp_arch_resume() + - LP: #1320946 + * ALSA: hda - Enable beep for ASUS 1015E + - LP: #1320946 + * nfsd: check passed socket's net matches NFSd superblock's one + - LP: #1320946 + * s390/bitops,atomic: add missing memory barriers + - LP: #1320946 + * IB/mthca: Return an error on ib_copy_to_udata() failure + - LP: #1320946 + * IB/ehca: Returns an error on ib_copy_to_udata() failure + - LP: #1320946 + * drm/qxl: unset a pointer in sync_obj_unref + - LP: #1320946 + * smarter propagate_mnt() + - LP: #1320946 + * don't bother with {get,put}_write_access() on non-regular files + - LP: #1320946 + * reiserfs: fix race in readdir + - LP: #1320946 + * drm/vmwgfx: correct fb_fix_screeninfo.line_length + - LP: #1320946 + * ALSA: hda - Fix silent speaker output due to mute LED fixup + - LP: #1320946 + * drm/radeon: clear needs_reset flag if IB test fails + - LP: #1320946 + * drm/radeon: call drm_edid_to_eld when we update the edid + - LP: #1320946 + * drm/radeon: fix endian swap on hawaii clear state buffer setup + - LP: #1320946 + * drm/radeon: fix typo in spectre_golden_registers + - LP: #1320946 + * sh: fix format string bug in stack tracer + - LP: #1320946 + * ocfs2: dlm: fix lock migration crash + - LP: #1320946 + * ocfs2: dlm: fix recovery hung + - LP: #1320946 + * ocfs2: do not put bh when buffer_uptodate failed + - LP: #1320946 + * ocfs2: fix panic on kfree(xattr->name) + - LP: #1320946 + * xattr: guard against simultaneous glibc header inclusion + - LP: #1320946 + * drm/i915: move power domain init earlier during system resume + - LP: #1320946 + * Skip intel_crt_init for Dell XPS 8700 + - LP: #1320946 + * dm cache: fix a lock-inversion + - LP: #1320946 + * thinkpad_acpi: Fix inconsistent mute LED after resume + - LP: #1320946 + * iser-target: Add missing se_cmd put for WRITE_PENDING in tx_comp_err + - LP: #1320946 + * iscsi-target: Fix ERL=2 ASYNC_EVENT connection pointer bug + - LP: #1320946 + * Target/sbc: Initialize COMPARE_AND_WRITE write_sg scatterlist + - LP: #1320946 + * mm: page_alloc: spill to remote nodes before waking kswapd + - LP: #1320946 + * mm: try_to_unmap_cluster() should lock_page() before mlocking + - LP: #1320946 + * mm: hugetlb: fix softlockup when a large number of hugepages are freed. + - LP: #1320946 + * hung_task: check the value of "sysctl_hung_task_timeout_sec" + - LP: #1320946 + * DRM: armada: fix corruption while loading cursors + - LP: #1320946 + * ALSA: ice1712: Fix boundary checks in PCM pointer ops + - LP: #1320946 + * lib/percpu_counter.c: fix bad percpu counter state during suspend + - LP: #1320946 + * md/raid1: r1buf_pool_alloc: free allocate pages when subsequent + allocation fails. + - LP: #1320946 + * ALSA: hda - add headset mic detect quirk for a Dell laptop + - LP: #1297581, #1320946 + * b43: Fix machine check error due to improper access of + B43_MMIO_PSM_PHY_HDR + - LP: #1320946 + * x86-64, modify_ldt: Ban 16-bit segments on 64-bit kernels + - LP: #1320946 + * target/tcm_fc: Fix use-after-free of ft_tpg + - LP: #1320946 + * ib_srpt: Use correct ib_sg_dma primitives + - LP: #1320946 + * Linux 3.13.11.1 + - LP: #1320946 + * Linux 3.13.11.2 + - LP: #1320946 + * hp-wireless: new driver for hp wireless button for Windows 8 + - LP: #1303737 + * x86, platform: Make HP_WIRELESS option text more descriptive + - LP: #1303737 + * ACPI: blacklist win8 OSI for Dell Inspiron 7737 + - LP: #1288161 + + -- Luis Henriques Thu, 22 May 2014 12:20:44 +0100 + +linux (3.13.0-27.50) trusty; urgency=low + + [ Brad Figg ] + + * Revert "rtlwifi: Set the link state" + + -- Brad Figg Thu, 15 May 2014 10:21:43 -0700 + +linux (3.13.0-27.49) trusty; urgency=low + + [ Brad Figg ] + + * Revert "SAUCE: (no-up) HID: rmi: do not stop the device at the end of + probe" + * Revert "SAUCE: (no-up) HID: rmi: introduce RMI driver for Synaptics + touchpads" + * Revert "[Config] CONFIG_HID_RMI=m" + + -- Brad Figg Wed, 14 May 2014 10:29:07 -0700 + +linux (3.13.0-26.48) trusty; urgency=low + + [ Benjamin Tissoires ] + + * SAUCE: (no-up) HID: rmi: introduce RMI driver for Synaptics touchpads + - LP: #1305522 + * SAUCE: (no-up) HID: rmi: do not stop the device at the end of probe + - LP: #1305522 + + [ Kamal Mostafa ] + + * Merged back Ubuntu-3.13.0-24.47 security release + * Revert "n_tty: Fix n_tty_write crash when echoing in raw mode" + - LP: #1314762 + * Release Tracking Bug + - LP: #1316835 + + [ Tim Gardner ] + + * [Config] CONFIG_HID_RMI=m + - LP: #1305522 + * [Config] CONFIG_CRYPTO_DEV_NX=n for ppc64el + - LP: #1314625 + * [Config] CONFIG_ZSWAP=y + - LP: #1315203 + * Add rpcsec_gss_krb5 to generic inclusion list + - LP: #769527 + + [ Upstream Kernel Changes ] + + * HID: hidraw: make comment more accurate and nicer + - LP: #1305522 + * HID: remove hid_get_raw_report in struct hid_device + - LP: #1305522 + * HID: i2c-hid: implement ll_driver transport-layer callbacks + - LP: #1305522 + * HID: add inliners for ll_driver transport-layer callbacks + - LP: #1305522 + * HID: Add transport-driver callbacks to the hid_ll_driver struct + - LP: #1305522 + * drm/nouveau: fail runtime pm properly. + - LP: #1313986 + * drm/nouveau: don't suspend/resume display on runtime s/r + - LP: #1313986 + * n_tty: Fix n_tty_write crash when echoing in raw mode + - LP: #1314762 + - CVE-2014-0196 + * floppy: ignore kernel-only members in FDRAWCMD ioctl input + - LP: #1316729 + - CVE-2014-1737 + * floppy: don't write kernel-only members to FDRAWCMD ioctl output + - LP: #1316735 + - CVE-2014-1738 + + -- Kamal Mostafa Tue, 06 May 2014 15:30:29 -0700 + +linux (3.13.0-25.47) trusty; urgency=low + + [ Joseph Salisbury ] + + * Release Tracking Bug + - LP: #1313868 + + [ Adam Lee ] + + * [Config] CONFIG_RTL8723BE=m, CONFIG_RTL8723_COMMON=m + - LP: #1240940 + + [ Alex Hung ] + + * SAUCE: (no-up) dell-led: add mic mute led interface + - LP: #1308297 + + [ Andy Whitcroft ] + + * SAUCE: (no-up) powerpc: Increase COMMAND_LINE_SIZE to 2048 from 512. + - LP: #1306677 + + [ Ben Collins ] + + * [Config] Disable PAMU on Freescale kernels + - LP: #1311738 + + [ Tim Gardner ] + + * Revert "SAUCE: x86, hyperv: bypass the timer_irq_works() check" + - LP: #1311683 + * SAUCE: (no-up) ALSA: usb-audio: Suppress repetitive debug messages from + retire_playback_urb() + - LP: #1305133 + * SAUCE: (no-up) 'BUG:' message unnecessarily triggers kerneloops + - LP: #1305480 + * [Config] CONFIG_POWERNV_CPUFREQ=m + - LP: #1309576 + * [Config] CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y for ppc64el + - LP: #1309576 + * [Config] CONFIG_TRANSPARENT_HUGEPAGE=n for arm64 + - LP: #1309221 + * [Config] CONFIG_MEMCG_KMEM=y + - LP: #1309586 + * [Config] CONFIG_CRASH_DUMP=y for ppc64el + - LP: #1312783 + + [ Upstream Kernel Changes ] + + * Revert "rtlwifi: rtl8188ee: enable MSI interrupts mode" + - LP: #1310512 + * mac80211: add length check in ieee80211_is_robust_mgmt_frame() + - LP: #1240940 + * rtlwifi: rtl8723ae: rtl8723-common: Create new driver for common code + - LP: #1240940 + * rtlwifi: rtl8723ae: rtl8723-common: Copy common firmware code + - LP: #1240940 + * rtlwifi: rtl8723ae: rtl8723-common: Copy common dynamic power + management code + - LP: #1240940 + * rtlwifi: rtl8723be: Add new driver + - LP: #1240940 + * selinux: correctly label /proc inodes in use before the policy is + loaded + - LP: #1309007 + * net: sctp: fix skb leakage in COOKIE ECHO path of chunk->auth_chunk + - LP: #1309007 + * bridge: multicast: add sanity check for query source addresses + - LP: #1309007 + * tipc: allow connection shutdown callback to be invoked in advance + - LP: #1309007 + * tipc: fix connection refcount leak + - LP: #1309007 + * tipc: drop subscriber connection id invalidation + - LP: #1309007 + * tipc: fix memory leak during module removal + - LP: #1309007 + * tipc: don't log disabled tasklet handler errors + - LP: #1309007 + * inet: frag: make sure forced eviction removes all frags + - LP: #1309007 + * net: unix: non blocking recvmsg() should not return -EINTR + - LP: #1309007 + * ipv6: Fix exthdrs offload registration. + - LP: #1309007 + * bnx2: Fix shutdown sequence + - LP: #1309007 + * pkt_sched: fq: do not hold qdisc lock while allocating memory + - LP: #1309007 + * Xen-netback: Fix issue caused by using gso_type wrongly + - LP: #1309007 + * vlan: Set correct source MAC address with TX VLAN offload enabled + - LP: #1309007 + * tcp: tcp_release_cb() should release socket ownership + - LP: #1309007 + * bridge: multicast: add sanity check for general query destination + - LP: #1309007 + * bridge: multicast: enable snooping on general queries only + - LP: #1309007 + * net: socket: error on a negative msg_namelen + - LP: #1309007 + * bonding: set correct vlan id for alb xmit path + - LP: #1309007 + * eth: fec: Fix lost promiscuous mode after reconnecting cable + - LP: #1309007 + * ipv6: Avoid unnecessary temporary addresses being generated + - LP: #1309007 + * ipv6: ip6_append_data_mtu do not handle the mtu of the second fragment + properly + - LP: #1309007 + * net: cdc_ncm: fix control message ordering + - LP: #1309007 + * vxlan: fix potential NULL dereference in arp_reduce() + - LP: #1309007 + * vxlan: fix nonfunctional neigh_reduce() + - LP: #1309007 + * tcp: syncookies: do not use getnstimeofday() + - LP: #1309007 + * rtnetlink: fix fdb notification flags + - LP: #1309007 + * ipmr: fix mfc notification flags + - LP: #1309007 + * ip6mr: fix mfc notification flags + - LP: #1309007 + * net: micrel : ks8851-ml: add vdd-supply support + - LP: #1309007 + * netpoll: fix the skb check in pkt_is_ns + - LP: #1309007 + * tipc: fix spinlock recursion bug for failed subscriptions + - LP: #1309007 + * ip_tunnel: Fix dst ref-count. + - LP: #1309007 + * tg3: Do not include vlan acceleration features in vlan_features + - LP: #1309007 + * virtio-net: correct error handling of virtqueue_kick() + - LP: #1309007 + * usbnet: include wait queue head in device structure + - LP: #1309007 + * vlan: Set hard_header_len according to available acceleration + - LP: #1309007 + * vhost: fix total length when packets are too short + - LP: #1309007 + - CVE-2014-0077 + * tcp: fix get_timewait4_sock() delay computation on 64bit + - LP: #1309007 + * xen-netback: remove pointless clause from if statement + - LP: #1309007 + * ipv6: some ipv6 statistic counters failed to disable bh + - LP: #1309007 + * netlink: don't compare the nul-termination in nla_strcmp + - LP: #1309007 + * xen-netback: disable rogue vif in kthread context + - LP: #1309007 + * Call efx_set_channels() before efx->type->dimension_resources() + - LP: #1309007 + * net: vxlan: fix crash when interface is created with no group + - LP: #1309007 + * isdnloop: Validate NUL-terminated strings from user. + - LP: #1309007 + * isdnloop: several buffer overflows + - LP: #1309007 + * powernow-k6: disable cache when changing frequency + - LP: #1309007 + * powernow-k6: correctly initialize default parameters + - LP: #1309007 + * powernow-k6: reorder frequencies + - LP: #1309007 + * ARC: [nsimosci] Change .dts to use generic 8250 UART + - LP: #1309007 + * ARC: [nsimosci] Unbork console + - LP: #1309007 + * futex: Allow architectures to skip futex_atomic_cmpxchg_inatomic() test + - LP: #1309007 + * m68k: Skip futex_atomic_cmpxchg_inatomic() test + - LP: #1309007 + * crypto: ghash-clmulni-intel - use C implementation for setkey() + - LP: #1309007 + * Linux 3.13.10 + - LP: #1309007 + * cpufreq: powernv: cpufreq driver for powernv platform + - LP: #1309576 + * cpufreq: powernv: Use cpufreq_frequency_table.driver_data to store + pstate ids + - LP: #1309576 + * cpufreq: powernv: Select CPUFreq related Kconfig options for powernv + - LP: #1309576 + * support Thinkpad X1 Carbon 2nd generation's adaptive keyboard + - LP: #1309609 + * save and restore adaptive keyboard mode for suspend and,resume + - LP: #1309609 + * user namespace: fix incorrect memory barriers + - LP: #1311683 + * Char: ipmi_bt_sm, fix infinite loop + - LP: #1311683 + * x86, hyperv: Bypass the timer_irq_works() check + - LP: #1311683 + * x86: Adjust irq remapping quirk for older revisions of 5500/5520 + chipsets + - LP: #1311683 + * PCI: designware: Fix RC BAR to be single 64-bit non-prefetchable memory + BAR + - LP: #1311683 + * PCI: designware: Fix iATU programming for cfg1, io and mem viewport + - LP: #1311683 + * ACPI / button: Add ACPI Button event via netlink routine + - LP: #1311683 + * PCI: Enable INTx in pci_reenable_device() only when MSI/MSI-X not + enabled + - LP: #1311683 + * staging: comedi: 8255_pci: initialize MITE data window + - LP: #1311683 + * tty: Set correct tty name in 'active' sysfs attribute + - LP: #1311683 + * tty: Fix low_latency BUG + - LP: #1311683 + * SCSI: sd: don't fail if the device doesn't recognize SYNCHRONIZE CACHE + - LP: #1311683 + * pid_namespace: pidns_get() should check task_active_pid_ns() != NULL + - LP: #1311683 + * Bluetooth: Fix removing Long Term Key + - LP: #1311683 + * ima: restore the original behavior for sending data with ima template + - LP: #1311683 + * backing_dev: fix hung task on sync + - LP: #1311683 + * bdi: avoid oops on device removal + - LP: #1311683 + * xfs: fix directory hash ordering bug + - LP: #1311683 + * Btrfs: skip submitting barrier for missing device + - LP: #1311683 + * Btrfs: fix deadlock with nested trans handles + - LP: #1311683 + * ext4: fix error return from ext4_ext_handle_uninitialized_extents() + - LP: #1311683 + * ext4: fix partial cluster handling for bigalloc file systems + - LP: #1311683 + * ext4: fix premature freeing of partial clusters split across leaf + blocks + - LP: #1311683 + * jffs2: Fix segmentation fault found in stress test + - LP: #1311683 + * jffs2: Fix crash due to truncation of csize + - LP: #1311683 + * jffs2: avoid soft-lockup in jffs2_reserve_space_gc() + - LP: #1311683 + * jffs2: remove from wait queue after schedule() + - LP: #1311683 + * sparc32: fix build failure for arch_jump_label_transform + - LP: #1311683 + * sparc64: don't treat 64-bit syscall return codes as 32-bit + - LP: #1311683 + * sparc64: Make sure %pil interrupts are enabled during hypervisor yield. + - LP: #1311683 + * wait: fix reparent_leader() vs EXIT_DEAD->EXIT_ZOMBIE race + - LP: #1311683 + * exit: call disassociate_ctty() before exit_task_namespaces() + - LP: #1311683 + * Linux 3.13.11 + - LP: #1311683 + * powerpc/le: Enable RTAS events support + - LP: #1312230 + * net: ipv4: current group_info should be put after using. + - CVE-2014-2851 + * powerpc/relocate fix relocate processing in LE mode + - LP: #1312783 + + -- Joseph Salisbury Mon, 28 Apr 2014 15:02:45 -0400 + +linux (3.13.0-24.47) trusty; urgency=low + + [ Peter Hurley ] + + * n_tty: Fix n_tty_write crash when echoing in raw mode + + -- Brad Figg Wed, 30 Apr 2014 15:08:31 -0700 + +linux (3.13.0-24.46) trusty; urgency=low + + [ Andy Whitcroft ] + + * [Config] d-i -- add nvme devices to block-modules udeb + - LP: #1303710 + + [ Paolo Pisati ] + + * [Config] build vexpress a9 dtb + - LP: #1303657 + * [Config] disable HVC_DCC + - LP: #1303657 + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1305158 + * rebase to v3.13.9 + * CONFIG_RTLBTCOEXIST=m + - LP: #1296591 + + [ Upstream Kernel Changes ] + + * HID: Bluetooth: hidp: make sure input buffers are big enough + - LP: #1252874 + * ACPI / video: Add systems that should favour native backlight interface + - LP: #1303419 + * rds: prevent dereference of a NULL device in rds_iw_laddr_check + - LP: #1302222 + - CVE-2014-2678 + * x86/efi: Fix 32-bit fallout + - LP: #1301590 + * drm/nouveau/devinit: tidy up the subdev class definition + - LP: #1158689 + * drm/nouveau/device: provide a way for devinit to mark engines as + disabled + - LP: #1158689 + * drm/nv50-/devinit: prevent use of engines marked as disabled by + hw/vbios + - LP: #1158689 + * rtlwifi: btcoexist: Add new mini driver + - LP: #1296591 + * rtlwifi: Prepare existing drivers for new driver + - LP: #1296591 + * rtlwifi: add MSI interrupts mode support + - LP: #1296591 + * rtlwifi: rtl8188ee: enable MSI interrupts mode + - LP: #1296591 + + [ Upstream Kernel Changes ] + + * rebase to v3.13.9 + + -- Tim Gardner Fri, 04 Apr 2014 09:26:27 -0400 + +linux (3.13.0-23.45) trusty; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1302083 + + [ Emil Goode ] + + * SAUCE: (no-up) brcmsmac: fix deadlock on missing firmware + - LP: #1300416 + + [ Moni Shoua ] + + * SAUCE: (no-up) IB/core: Don't resolve passive side RoCE L2 address in cma req handler + Merged at the request of Mellanox engineers. It shold be making its way upstream. + http://www.spinics.net/lists/linux-rdma/msg19417.html + + [ Or Gerlitz ] + + * [Config] CONFIG_INFINIBAND_USNIC=m + + [ Tim Gardner ] + + * [Config] CONFIG_MLX4_EN_VXLAN=y + + [ Upstream Kernel Changes ] + + * This set of patches essentially updates the infiniband subsystem to 3.14 plus some + bug fixes from 3.15. The initial set of commits were determined using: + + git log --pretty=oneline --reverse v3.13..cd6362befe4cc7bf589a5236d2a780af2d47bcc9 -- drivers/infiniband drivers/net/ethernet/mellanox include/linux/mlx* include/rdma + + A few tree-wide patches were dropped since they were not essential. + This is the list of commits that were actually applied. As you can see there were + a few back ports, but all were simple context collisions and easily resolved. + + (cherry picked from commit 7c6d74d23a33a946bcf08ba2d3e52d31943b7342) + (cherry picked from commit 7b25d81b7ff03bb1893a9c7f97797b891a772deb) + (cherry picked from commit 73e74ab4e0d030f28d640507998156a22d4211f8) + (cherry picked from commit eb17711bc1d6611e934af5b6dabc225936084128) + (cherry picked from commit 8e1a28e8e6797449dfdfa4739002d1e5939355a8) + (cherry picked from commit 84c864038d6d991be81344fc3168ec2c2f7a8d06) + (cherry picked from commit d03a68f8217ea03492e4f7928db222dc6544792a) + (cherry picked from commit be902ab122fcc59ba6a8588e820c31861d75a5a4) + (cherry picked from commit e4b59a1cb6f8feb03f356b0abfd20451f05d7470) + (cherry picked from commit 0276a330617a0cf380f09e5065299078d3d45886) + (cherry picked from commit 982290a7fe36e528af292d3e3b61939b1900bfc6) + (cherry picked from commit c5266d40b0a26546d0ebedb44dd4145088b85cb8) + (cherry picked from commit 7ffdf726cfe0d188907bdbb0e7729fb35a69c219) + (cherry picked from commit 837052d0ccc5a789a578f8b628ba154b63bd51ea) + (cherry picked from commit c0623e587d869b4b18e077d64a8524ea364b5b77) + (cherry picked from commit ad7d4eaed995d76fb24a18e202fdf5072197ff0a) + (cherry picked from commit 2156d9a8ac0202f0158d407063cb850afffd3f56) + (cherry picked from commit b912b2f8fc71df4c3ffa7a9fe2c2227e8bcdaa07) + (cherry picked from commit 9ba75fb0c4b92416b94640b5a043c323a457f14a) + (cherry picked from commit 74b9c3ea847f060c784e86453f1ad77dd05a7a8f) + (cherry picked from commit e6a767582942d6fd9da0ddea673f5a7017a365c7) + (cherry picked from commit fe5e8a1acc7fd877b6706053cf88c418c33fe7a3) + (cherry picked from commit be8348df6efac6b602f2ad3210139bccf0dbe3d7) + (cherry picked from commit e3cf00d0a87f025db5855a43a67c67a41fa79fef) + (cherry picked from commit 8192d4acb5c5376c0f6756f2106ab243036c8c7d) + (cherry picked from commit 301a0dd68e5ddd22d992a58f466b621987d9df3b) + (cherry picked from commit 2183b990b67b761f81c68a18f60df028e080cf05) + (cherry picked from commit 8af94ac66a4d53a96278ecbb9ef2e8592f0d9ba3) + (cherry picked from commit 256d6a6ac52ee02e897cec88ecc96c3ae7f9cb88) + (cherry picked from commit 60b215e8b267f911751a043de63181dab1b69706) + (cherry picked from commit b85caf479b577f000067002259539ad4341d4530) + (cherry picked from commit 3f92bed3d6c073f41efc0777ecd3442aa1f03d20) + (cherry picked from commit 6214105460842759020bdd7f4dbb50afa1be9d17) + (cherry picked from commit c7845bcafe4d2ecd5c479fa64d1b425c21dde17c) + (cherry picked from commit e45e614e4015a489d2f8013eaed45d498d884e86) + (cherry picked from commit 248567f79304b953ea492fb92ade097b62ed09b2) + (cherry picked from commit 6a54d9f9a04ed35e6615a47974c1ef02ff3a62cb) + (cherry picked from commit c5f855e08a97edc107c4a3b73809ed629c1dcac1) + (cherry picked from commit 9f637f7936025aef57f247b11036bad18bb87c06) + (cherry picked from commit c30392ab5bb536fef268c22804dafded15170d14) + (cherry picked from commit 3108bccb3d9afbd32931d775f5dd5ee157eaa5a9) + (cherry picked from commit d9fe40916387bab884e458c99399c149b033506c) + (cherry picked from commit 24e42754f676d34e5c26d6b7b30f36df8004ec08) + (cherry picked from commit c1be5232d21de68f46637e617225b9b7c586451a) + (cherry picked from commit 90f1d1b41b70474bf73d07d4300196901cd81718) + (cherry picked from commit 240ae00e4d834e387f4f09e236130f520e357a70) + (back ported from commit 4de6580360867d44adecb2d05febed1c8d186c82) + (cherry picked from commit 0a9b7d59d5a8e2b97406a29a8a807bbc5ce7092e) + (cherry picked from commit a37a1a428431d3e7e9f53530b5c56ff7867bd487) + (cherry picked from commit c1c98501121eefa0888a42566ec7233a1626f678) + (back ported from commit dd5f03beb4f76ae65d76d8c22a8815e424fc607c) + (cherry picked from commit c9218a9e677856d6647ea82d821f22ccbffc988c) + (cherry picked from commit f088cbb8d8547a89af258a3223657f9a69b811e4) + (cherry picked from commit 4942c0b4b64478ff45c3bbf4d40aebd66de0bcc5) + (cherry picked from commit 2d97436f5b06217beb6c91a0cd0ae0f0d79b61cc) + (cherry picked from commit 5db5765e255de4072eb0e35facfeafce53af001b) + (cherry picked from commit 61f78268936e781a104b4ac06b7e47d760800c40) + (cherry picked from commit 6dcebe614c667fca73aaf0cfbd1e70bc9179538e) + (cherry picked from commit d1db47c5eed89a1c8b60e780aeadd870bb0d3894) + (cherry picked from commit af2e2e35a23e4aeecfe4332a7140c81e0f09b7e3) + (cherry picked from commit 7b85627b9f02f9b0fb2ef5f021807f4251135857) + (back ported from commit d487ee77740ccf79d7dc1935d4daa77887283028) + (cherry picked from commit 297e0dad720664dad44baa2cdd13f871979fb58c) + (cherry picked from commit eb6ab13267be87dcad3e611500b7cb404ed4479c) + (cherry picked from commit a3a5a82627492c8947d8866ddf421e9248088466) + (cherry picked from commit dc87a90f5d61d7f01cfb63d92d5eaa27718e5b19) + (cherry picked from commit 9bd626e79df67b2ba3b0c91a4640ab7bca1af04d) + (cherry picked from commit 40aca6ffcac57dd9c65877a59a8bbb210c4691ca) + (cherry picked from commit 37721d8501a9a1fbe87527c24d127a914b29fd7f) + (cherry picked from commit ed4c54e5b4baf55a7a67a80fa766334855c94854) + (cherry picked from commit 2f85d24e604c1532723c4b5791816b533baed2c3) + (cherry picked from commit 990acea616e99355703b503c1e50fb9c7ddff6b9) + (cherry picked from commit f282651de676d10e395bc7923f0087fbbba12ed7) + (cherry picked from commit 31ab8acbf6618c89fec77f7706df7daaa319feb5) + (cherry picked from commit 9392fa06411cf93885c4cafc8058085d98f52fec) + (cherry picked from commit 27cdef637c25705b433d5c4deeef4cf8dcb75d6a) + (cherry picked from commit 8ce96afa8239f13bdf5ab35839bac46c103bbedc) + (cherry picked from commit 6cd28f044b47aeeba91807d97d6f3ea5a048e88d) + (cherry picked from commit 5462eddd7a78131ccb514d52473625d99769215e) + (cherry picked from commit 05633102d85b50f35325dfbedafcedd6c5b3264c) + (cherry picked from commit 437708c44395a11e474fb33b4fd7f29483118e51) + (cherry picked from commit d9d5713ca628dc211d8b4a1da5fb9e0cfe592b92) + (cherry picked from commit a384b20e417ae0f5f1f359600b4bdcc34265b256) + (cherry picked from commit 298589b1cb626adf4beba6dd8e3cd4b64e8799be) + (cherry picked from commit e08a8761d89b7625144c3fbf0ff9643159135c96) + (cherry picked from commit 0b6e81b91070bdbe0defb9101384ebb26835e401) + (cherry picked from commit 042b9adae899e1b497282d92205d3fef42d5ca8d) + (cherry picked from commit ada388f7afad1e2e87acbfe30600fdaff9bd6327) + (cherry picked from commit 3bdb31f688276505ede23280885948e934304674) + (cherry picked from commit bde51583f49bd87e452e9504d489926638046b11) + (cherry picked from commit db81a5c374b5bd650c5e6ae85d026709751db103) + (cherry picked from commit 05bdb2ab6b09f2306f0afe0f60f4b9abffa7aba4) + (cherry picked from commit 9e9c47d07d447e09a66ee528c3ebad9ba359af6a) + (cherry picked from commit 1bde6e301cf6217da9238086c958f532b16e504d) + (cherry picked from commit 8c8a49148b95c4d7c5f58a6866a30ea02485d7a3) + (cherry picked from commit 57761d8df8efc7cc1227f9bc22e0dda01b0dd91b) + (cherry picked from commit 676687c69697d2081d25afd14ee90937d1fb0c8e) + (cherry picked from commit 9e65dc371b5c8d7476c81353137efc13cc1bdabd) + (cherry picked from commit 78c0f98cc9dd46824fa66f35f14ea24ba733d145) + (cherry picked from commit 1a4c3a3dc5fdeef2a7bdf4ac7d81df58c3c0a51e) + (cherry picked from commit d07875bd0d1517185534b5f9eef469426ba42cb9) + (cherry picked from commit ab576627c8f97c08297d81537be17df161171923) + (cherry picked from commit a80e21b3b2d151d79bb9be42334ab10d40195324) + (cherry picked from commit 9d8abf45944e4f1c18a04070fc3ed2f3ffcbbcb6) + (cherry picked from commit 4196670be786d529ab7f6c18f5077141ce1b787e) + (cherry picked from commit acc4fccf4eff5b29e545995b75de77e60ea44aae) + (cherry picked from commit 4ce5a5744a2f5479e58c6788cbe3987b8071b62e) + (cherry picked from commit ddf8bd349115c2bc85a62e3d94018c9976ac72f7) + (cherry picked from commit 5071456fe244e409adcda7226e5f0b5d1b879fd3) + (cherry picked from commit ad4885d279b63c65347220236d07669a2f59634b) + (cherry picked from commit b4a26a27287a7f81933ba016aeed6c69dd155323) + (cherry picked from commit 0f0132001fd239bb67c1f68436b95cc79de89736) + (cherry picked from commit 6ecde51dd7894ffe2f959cca1fea3ea2b9ee2394) + (cherry picked from commit 0861565f501ce3fcea9394d4b98c02b1f6de6b9e) + (cherry picked from commit f809309a251a13bd97cc189c3fa428782aab9716) + (cherry picked from commit 7d9eacf9457efc6b614665e1095336c11ad83f0d) + (cherry picked from commit fd8b48b22a2b7cdf21f15b01cae379e6159a7eea) + (cherry picked from commit a61d93d92f5c9533898098abb5f187840900aeb5) + (cherry picked from commit 09de3f1313a30d8a22e488c9a5b96a9560cae96d) + (cherry picked from commit 99932d4fc03a13bb3e94938fe25458fabc8f2fc3) + (cherry picked from commit 169a1d85d084edeb0736ad80fe439639ac938dcd) + (cherry picked from commit 367d56f7b4d5ce61e883c64f81786c7a3ae88eea) + (cherry picked from commit 57352ef4f5f19969a50d42e84b274287993b576f) + (cherry picked from commit 97989356af0ec8b1b1658d804892abb354127330) + (cherry picked from commit 56cb456746a15c1025a178466492ca4c373b1a63) + (cherry picked from commit 2a2083f7f3568c0192daa6ac0e6fa35d953f47bd) + (cherry picked from commit 7855bff42ea9938a0853321256f4c8ce3628aa73) + (cherry picked from commit de123268300fd33b7f7668fda3264059daffa6ef) + (cherry picked from commit 299603e8370a93dd5d8e8d800f0dff1ce2c53d36) + (cherry picked from commit bf5a755f5e9186406bbf50f4087100af5bd68e40) + (cherry picked from commit 600adc18eba823f9fd8ed5fec8b04f11dddf3884) + (back ported from commit b582ef0990d457f7ce8ccf827af51a575ca0b4a6) + (cherry picked from commit e27a2f839598e48bb345f9fc86d4d54c3944db50) + (back ported from commit dc01e7d3447793fd9e4090aa9d50c549848b5a18) + (cherry picked from commit b5aaab12b2b4bc4acab7384c17a87f3406e5047d) + (cherry picked from commit 920a0fde5a32fd40b4d3c94ad72f7fc7039db8e3) + (cherry picked from commit 438e38fadca2f6e57eeecc08326c8a95758594d4) + (cherry picked from commit 97a5221f56bad2e1c7e8ab55da4ac4748ef59c64) + (cherry picked from commit 02512482321c531df4abf73943529f8b44d869e2) + (cherry picked from commit bb2146bc883e86b835e30644757a6d4a649a7ce8) + (back ported from commit ca9f9f703950e5cb300526549b4f1b0a6605a5c5) + (cherry picked from commit fd8daa45f2bd9b876e0dbb9503ccc5a5252844f2) + (cherry picked from commit b97b33a3df0439401f80f041eda507d4fffa0dbf) + (cherry picked from commit 93591aaa62f89820f4ae0558f01eaf9a359738da) + (cherry picked from commit 15bffdffccb3204eb1e993f60eee65c439a03136) + (cherry picked from commit 9813337a4b16ea5b1701b1d00f7e410f5decdfa5) + (cherry picked from commit 313c2d375b1c9b648d9d4b96ec1b8185ac6a78c5) + (cherry picked from commit 28d222bbaa5122fb4bb0e607e39ab149a010e587) + (cherry picked from commit ec5709403e6893acb4f7ca40514ebd29c3116836) + (cherry picked from commit 9717218bb2982f5f214d84473c70542f1e42bfd7) + (cherry picked from commit d0ceebd7508d5bf6e81367640959aef7e0de4947) + (cherry picked from commit c120e9e03090b4f9578ca38ef4250ff3805b6e3f) + (cherry picked from commit 6ee51a4e866bbb0921180b457ed16cd172859346) + (cherry picked from commit 9cd593529c8652785bc9962acc79b6b176741f99) + (cherry picked from commit b6ffaeffaea4d92f05f5ba1ef54df407cb7c8517) + (cherry picked from commit 2f5bb473681b88819a9de28ac3a47e7737815a92) + (cherry picked from commit 5ea8bbfc49291b7e23161fe4de0bf3e4a4e34b18) + (cherry picked from commit ceb5433b3a54979216d794e45147d25c24c94999) + (cherry picked from commit aa9a2d51a3e70b15a898bec7dde3ce5726fec641) + (cherry picked from commit e81f44b66b456a7dcfbdeffeb355458cd6a58973) + (cherry picked from commit 7a2cea2aaae2d5eb5c00c49c52180c7c2c66130a) + (cherry picked from commit 05eb23893c2cf9502a9cec0c32e7f1d1ed2895c8) + (cherry picked from commit 38be0a347c91133843474e12baacd252d0fd1c30) + (cherry picked from commit 82373701be26b893eaf7372db0af84235a51998a) + (cherry picked from commit 1ab95d37bcc3ff2d69e3871e4f056bab7aed0b85) + (cherry picked from commit f74462acf8f390528c8b7937f227c6c90d017f3b) + (cherry picked from commit 449fc48866f7d84b0d9a19201de18a4dd4d3488c) + (cherry picked from commit dd41cc3bb90efd455df514899a5d3cf245182eb1) + (cherry picked from commit e471b40321a94f07d13b8a9e4b064885cf08835d) + (cherry picked from commit bfd2793c9559ae73ae021797f1d4b097c27f24be) + (cherry picked from commit b74757944d69f8cd7de5284fc7e8649d965361ab) + (cherry picked from commit d18f141a1a7cfa5ffad8433e43062b05a8d1b82a) + (cherry picked from commit 1b136de120dda625109f2afe1e3d04e256be9ec1) + (cherry picked from commit a66132f3eb514f42c49a3e8f57aab2ccd0360f06) + + * mlx4_core: Roll back round robin bitmap allocation commit for CQs, SRQs, and MPTs + * net/mlx4_core: Remove zeroed out of explicit QUERY_FUNC_CAP fields + * net/mlx4_core: Rename QUERY_FUNC_CAP fields + * net/mlx4_core: Introduce nic_info new flag in QUERY_FUNC_CAP + * net/mlx4_core: Expose physical port id as PF/VF capability + * net/mlx4_en: Implement ndo_get_phys_port_id + * net/mlx4_en: Configure the XPS queue mapping on driver load + * net/mlx4_core: Set CQE/EQE size to 64B by default + * net/mlx4_en: Ignore irrelevant hypervisor events + * net/mlx4_en: Add NAPI support for transmit side + * net/mlx4_core: Check port number for validity before accessing data + * infiniband: slight optimization of addr compare + * net/mlx4_core: Add basic support for TCP/IP offloads under tunneling + * net/mlx4_en: Add netdev support for TCP/IP offloads of vxlan tunneling + * net: mlx4: slight optimization of addr compare + * mlx4_en: Add PTP hardware clock + * mlx4_en: Only cycle port if HW timestamp config changes + * net/mlx4_core: Warn if device doesn't have enough PCI bandwidth + * net/mlx4_en: fix error return code in mlx4_en_get_qp() + * mlx4_en: Select PTP_1588_CLOCK + * net/mlx4_en: call gro handler for encapsulated frames + * RDMA/ocrdma: Fix AV_VALID bit position + * RDMA/ocrdma: Fix OCRDMA_GEN2_FAMILY macro definition + * IB/usnic: Add Cisco VIC low-level hardware driver + * IB/usnic: Change WARN_ON to lockdep_assert_held + * IB/usnic: Add struct usnic_transport_spec + * IB/usnic: Push all forwarding state to usnic_fwd.[hc] + * IB/usnic: Port over main.c and verbs.c to the usnic_fwd.h + * IB/usnic: Port over usnic_ib_qp_grp.[hc] to new usnic_fwd.h + * IB/usnic: Port over sysfs to new usnic_fwd.h + * IB/usnic: Update ABI and Version file for UDP support + * IB/usnic: Add UDP support to usnic_fwd.[hc] + * IB:usnic: Add UDP support to usnic_transport.[hc] + * IB/usnic: Add UDP support in u*verbs.c, u*main.c and u*util.h + * IB/usnic: Add UDP support in usnic_ib_qp_grp.[hc] + * IB/core: Add RDMA_TRANSPORT_USNIC_UDP + * IB/usnic: Remove superflous parentheses + * IB/usnic: Use for_each_sg instead of a for-loop + * IB/usnic: Expose flows via debugfs + * IB/usnic: Fix typo "Ignorning" -> "Ignoring" + * IB/usnic: Append documentation to usnic_transport.h and cleanup + * IB/mlx5: Remove unused code in mr.c + * mlx5_core: Remove dead code + * IB/mlx5: Fix micro UAR allocator + * IB/core: Add flow steering support for IPoIB UD traffic + * IB/core: Add support for IB L2 device-managed steering + * mlx4_core: Add support for steerable IB UD QPs + * IB/mlx4: Enable device-managed steering support for IB ports too + * IB/mlx4: Add mechanism to support flow steering over IB links + * IB/mlx4: Add support for steerable IB UD QPs + * IB/core: Ethernet L2 attributes in verbs/cm structures + * net/mlx4_core: clean up cq_res_start_move_to() + * net/mlx4_core: clean up srq_res_start_move_to() + * IB/usnic: Fix endianness-related warnings + * IB/usnic: Add dependency on CONFIG_INET + * IB/core: Add support for RDMA_NODE_USNIC_UDP + * IB/usnic: Advertise usNIC devices as RDMA_NODE_USNIC_UDP + * IB/usnic: Set userspace/kernel ABI ver to 4 + * IB/usnic: Remove unused variable in usnic_debugfs_exit() + * IB/mlx4: Fix error return code + * IB/cma: IBoE (RoCE) IP-based GID addressing + * IB/mlx4: Use IBoE (RoCE) IP based GIDs in the port GID table + * IB/mlx4: Handle Ethernet L2 parameters for IP based GID addressing + * IB/isert: seperate connection protection domains and dma MRs + * IB/isert: Avoid frwr notation, user fastreg + * IB/isert: Move fastreg descriptor creation to a function + * IB/isert: pass scatterlist instead of cmd to fast_reg_mr routine + * RDMA/ocrdma: Handle Ethernet L2 parameters for IP based GID addressing + * RDMA/ocrdma: Populate GID table with IP based gids + * IB/core: Resolve Ethernet L2 addresses when modifying QP + * IB/core: Make ib_addr a core IB module + * IB/cm: Fix missing unlock on error in cm_init_qp_rtr_attr() + * IB/mlx4: Add dependency INET + * RDMA/ocrdma: Move ocrdma_inetaddr_event outside of "#if CONFIG_IPV6" + * RDMA/ocrdma: Add dependency on INET + * IB/mlx4: Use IS_ENABLED(CONFIG_IPV6) + * IB/usnic: Use GFP_ATOMIC under spinlock + * net/mlx4_core: Remove unnecessary validation for port number + * RDMA/cma: Handle global/non-linklocal IPv6 addresses in cma_check_linklocal() + * IB/core: Fix unused variable warning + * IPoIB: Report operstate consistently when brought up without a link + * RDMA/amso1100: Add check if cache memory was allocated before freeing it + * IB/usnic: Remove unused includes of + * RDMA/cxgb4: Fix gcc warning on 32-bit arch + * mlx5_core: Fix out arg size in access_register command + * IB/mlx5: Clear out struct before create QP command + * mlx5_core: Use mlx5 core style warning + * IB/mlx5: Make sure doorbell record is visible before doorbell + * IB/mlx5: Implement modify CQ + * IB/mlx5: Add support for resize CQ + * mlx5_core: Improve debugfs readability + * mlx5_core: Fix PowerPC support + * IB/mlx5: Allow creation of QPs with zero-length work queues + * IB/mlx5: Abort driver cleanup if teardown hca fails + * IB/mlx5: Remove old field for create mkey mailbox + * IB/mlx5: Verify reserved fields are cleared + * iscsi-target: Convert gfp_t parameter to task state bitmask + * IB/mlx5: Fix RC transport send queue overhead computation + * IB/mlx5: Fix binary compatibility with libmlx5 + * IB/mlx5: Don't set "block multicast loopback" capability + * RDMA/nes: Fix error return code + * RDMA/amso1100: Fix error return code + * iser-target: Fix leak on failure in isert_conn_create_fastreg_pool + * IB/srpt: replace strict_strtoul() with kstrtoul() + * IB/mlx4: Don't allocate range of steerable UD QPs for Ethernet-only device + * IB/mlx4: Make sure GID index 0 is always occupied + * IB/mlx4: Move rtnl locking to the right place + * IB/mlx4: Do IBoE locking earlier when initializing the GID table + * IB/mlx4: Do IBoE GID table resets per-port + * IB/mlx4: Build the port IBoE GID table properly under bonding + * IB: Report using RoCE IP based gids in port caps + * RDMA/cxgb4: Add missing neigh_release in LE-Workaround path + * mlx5: Add include of because of kzalloc()/kfree() use + * IB/mlx5: Remove dependency on X86 + * IB/usnic: Fix smatch endianness error + * IB/iser: Avoid dereferencing iscsi_iser conn object when not bound to iser connection + * IB/iser: Fix use after free in iser_snd_completion() + * RDMA/ocrdma: Fix traffic class shift + * RDMA/ocrdma: Fix load time panic during GID table init + * netdevice: add queue selection fallback handler for ndo_select_queue + * net,IB/mlx: Bump all Mellanox driver versions + * net/mlx4: Support shutdown() interface + * net/mlx4_core: Fix memory access error in mlx4_QUERY_DEV_CAP_wrapper() + * net/mlx4_core: mlx4_init_slave() shouldn't access comm channel before PF is ready + * net/mlx4_core: Fix wrong dump of the vxlan offloads device capability + * net/mlx4_en: Handle vxlan steering rules for mac address changes + * net/mlx4_core: Load the IB driver when the device supports IBoE + * net/mlx4_en: Deregister multicast vxlan steering rules when going down + * net-gro: Prepare GRO stack for the upcoming tunneling support + * net-gre-gro: Add GRE support to the GRO stack + * net: gro: change GRO overflow strategy + * net: Add GRO support for UDP encapsulating protocols + * net: Export gro_find_by_type helpers + * net: Add GRO support for vxlan traffic + * net/udp_offload: Handle static checker complaints + * net/ipv4: Use non-atomic allocation of udp offloads structure instance + * net/vxlan: Go over all candidate streams for GRO matching + * gre_offload: statically build GRE offloading support + * net/mlx4_core: pass pci_device_id.driver_data to __mlx4_init_one during reset + * net/mlx4: Set number of RX rings in a utility function + * net/mlx4: Fix limiting number of IRQ's instead of RSS queues + * net/mlx4_en: Fix bad use of dev_id + * net/mlx4_en: Fix UP limit in ieee_ets->prio_tc + * net/mlx4_en: Verify mlx4_en module parameters + * net/mlx4_en: Pad ethernet packets smaller than 17 bytes + * net/mlx4_en: Move queue stopped/waked counters to be per ring + * net/mlx4: Replace mlx4_en_mac_to_u64() with mlx4_mac_to_u64() + * net/mlx4_en: Fix selftest failing on non 10G link speed + * net/mlx4_core: Fix sparse warning + * net/mlx4_en: Use union for BlueFlame WQE + * net/mlx4_en: Change Connect-X description in kconfig + * net/mlx4_en: mlx4_en_verify_params() can be static + * IB/mlx5_core: remove unreachable function call in module init + * mlx4: Adjust QP1 multiplexing for RoCE/SRIOV + * mlx4_core: For RoCE, allow slaves to set the GID entry at that slave's index + * mlx4: In RoCE allow guests to have multiple GIDS + * mlx4: Add ref counting to port MAC table for RoCE + * mlx4: Implement IP based gids support for RoCE/SRIOV + * mlx4_ib: Fix SIDR support of for UD QPs under SRIOV/RoCE + * mlx4: Activate RoCE/SRIOV + * mlx4: Call dev_kfree_skby_any instead of dev_kfree_skb. + * cxgb4/iw_cxgb4: Treat CPL_ERR_KEEPALV_NEG_ADVICE as negative advice + * cxgb4/iw_cxgb4: Doorbell Drop Avoidance Bug Fixes + * mlx4: Don't receive packets when the napi budget == 0 + * IB/mlx4_ib: Adapt code to use caps.num_ports instead of a constant + * net/mlx4: Add data structures to support N-Ports per VF + * net/mlx4: Add utils for N-Port VFs + * net/mlx4: Adapt code for N-Port VF + * net/mlx4: Adapt num_vfs/probed_vf params for single port VF + * mlx4: Use actual number of PCI functions (PF + VFs) for alias GUID logic + * RDMA/cxgb4: set error code on kmalloc() failure + * net/mlx4: USe one wrapper that returns -EPERM + * mlx4: Add support for CONFIG_DEV command + * net/mlx4: Implement vxlan ndo calls + * net/mlx4: Set proper build dependancy with vxlan + + [ Wen-chien Jesse Sung ] + + * SAUCE: Bluetooth: Give restart command more time to complete its job + - LP: #1301908 + + -- Tim Gardner Thu, 03 Apr 2014 06:06:15 -0600 + +linux (3.13.0-22.44) trusty; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1301562 + + [ dann frazier ] + + * [Config] enable linux-tools on arm64 + https://lists.ubuntu.com/archives/kernel-team/2014-April/041332.html + + [ Greg Kurz ] + + * SAUCE: powerpc/le: Big endian arguments for ppc_rtas() + - LP: #1289518 + + [ Mahesh Salgaonkar ] + + * SAUCE: powerpc/book3s: Fix CFAR clobbering issue in machine check + handler. + - LP: #1301424 + * SAUCE: powerpc/book3s: Recover from MC in sapphire on SCOM read via + MMIO. + - LP: #1301424 + * SAUCE: powerpc/book3s: Fix mc_recoverable_range buffer overrun issue. + - LP: #1301424 + + [ Paolo Pisati ] + + * [Config] armhf: USB_STORAGE=y + https://lists.ubuntu.com/archives/kernel-team/2014-April/041349.html + + [ Stefan Bader ] + + * SAUCE: kvm: Force preempt folding in kvm on i386 + - LP: #1268906 + + [ Tim Gardner ] + + * SAUCE: Drop lttng in favor of lttng-modules + The kernel version was down rev on an rc release. + + [ Tomas Winkler ] + + * SAUCE: (no-up) mei: me: do not load the driver if the FW doesn't + support MEI interface + - LP: #1301118 + + [ Upstream Kernel Changes ] + + * drm/i915: Deprecated UMS support + - LP: #1284816 + * powerpc/book3s: Split the common exception prolog logic into two + section. + - LP: #1301424 + * powerpc/book3s: Introduce exclusive emergency stack for machine check + exception. + - LP: #1301424 + * powerpc/book3s: handle machine check in Linux host. + - LP: #1301424 + * powerpc/book3s: Return from interrupt if coming from evil context. + - LP: #1301424 + * powerpc/book3s: Introduce a early machine check hook in cpu_spec. + - LP: #1301424 + * powerpc/book3s: Add flush_tlb operation in cpu_spec. + - LP: #1301424 + * powerpc/book3s: Flush SLB/TLBs if we get SLB/TLB machine check errors + on power7. + - LP: #1301424 + * powerpc/book3s: Flush SLB/TLBs if we get SLB/TLB machine check errors + on power8. + - LP: #1301424 + * powerpc/book3s: Decode and save machine check event. + - LP: #1301424 + * powerpc/book3s: Queue up and process delayed MCE events. + - LP: #1301424 + * powerpc/powernv: Remove machine check handling in OPAL. + - LP: #1301424 + * powerpc/powernv: Machine check exception handling. + - LP: #1301424 + * powerpc: Fix "attempt to move .org backwards" error + - LP: #1301424 + * powerpc: Fix endian issues in power7/8 machine check handler + - LP: #1301424 + * Move precessing of MCE queued event out from syscall exit path. + - LP: #1301424 + + -- Andy Whitcroft Wed, 02 Apr 2014 15:58:48 +0100 + +linux (3.13.0-21.43) trusty; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: kvm: BIOS disabled kvm support should be a warning + - LP: #1300247 + * SAUCE: nouveau: missing outputs should be warnings + - LP: #1300244 + + [ John Johansen ] + + * Revert "SAUCE: Add config option to disable new apparmor 3 semantics" + * Revert "SAUCE: apparmor: fix uninitialized lsm_audit membe" + * Revert "SAUCE: (no-up) apparmor: Fix tasks not subject to, reloaded + policy" + * Revert "SAUCE: apparmor: allocate path lookup buffers during init" + * Revert "SAUCE: apparmor: fix unix domain sockets to be mediated on + connection" + * Revert "SAUCE: (no-up) apparmor: Sync to apparmor 3 - alpha 4 snapshot" + * SAUCE: (no-up) apparmor: Sync to apparmor3 - alpha6 snapshot + - LP: #1298611 + + [ Tetsuo Handa ] + + * SAUCE: kthread: Do not leave kthread_create() immediately upon SIGKILL. + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1300412 + * [Config] updateconfigs after AA patch set + * [Config] CONFIG_ZSWAP=n, CONFIG_ZBUD=n for all arches + * [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_VME_BUS=m for ppc64el + * [Config] CONFIG_VIRT_DRIVERS=y for ppc64el + * [Config] CONFIG_VIDEO_OUTPUT_CONTROL=m for ppc64el + * [Config] CONFIG_VERSION_SIGNATURE="" for powerpc64-emb + * [Config] CONFIG_UWB=m for ppc64el + + [ Upstream Kernel Changes ] + + * vhost: validate vhost_get_vq_desc return value + - CVE-2014-0055 + * net: use kfree_skb_list() helper + * skbuff: skb_segment: s/frag/nskb_frag/ + * skbuff: skb_segment: s/skb_frag/frag/ + * skbuff: skb_segment: s/skb/head_skb/ + * skbuff: skb_segment: s/fskb/list_skb/ + * skbuff: skb_segment: orphan frags before copying + - CVE-2014-0131 + + [ Upstream Kernel Changes ] + + * rebase to v3.13.8 + + -- Tim Gardner Mon, 31 Mar 2014 12:38:11 -0600 + +linux (3.13.0-20.42) trusty; urgency=low + + [ Adam Conrad ] + + * [Packaging] Set bootloader and loader on ppc64el to grub + + [ Andy Whitcroft ] + + * rebase to v3.13.7 + * [Config] updateconfigs following rebase to v3.13.7 + * 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 -- ensure we force older hv-kvp-daemon-init off + * [Config] fix up Breaks/Replaces on linux-cloud-tools-common to fix upgrades + + [ Emmanuel Grumbach ] + + * SAUCE: (no-up) iwlwifi: mvm: disable uAPSD due to bugs in the firmware + + [ James Bottomley ] + + * SAUCE: (no-up) fix our current target reap infrastructure + - LP: #1283604 + * SAUCE: (no-up) dual scan thread bug fix + - LP: #1283604 + + [ K. Y. Srinivasan ] + + * SAUCE: (no-up) Tools: hv: vssdaemon: Ignore VFAT mounts during the + Freeze operation + - LP: #1298192 + + [ Paolo Pisati ] + + * [Config] disable HW_RANDOM_EXYNOS, USB_DWC3_EXYNOS, + PHY_EXYNOS_MIPI_VIDEO + - LP: #1294353 + * [Config] armhf: generic: AHCI_IMX=y, SERIAL_FSL_LPUART=m + - LP: #1294951 + * [Config] armhf: generic: MFD_TI_AM335X_TSCADC and USB_DWC3_OMAP = m + - LP: #1294962 + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1298585 + * [Config] ignore.modules + * SAUCE: i2c-cpm: Add missing includes for powerpc + * [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_BLK_DEV_INTEGRITY=y for ppc64el + * [Config] CONFIG_BSD_PROCESS_ACCT=y for ppc64el + * [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_EXT4_USE_FOR_EXT23=y for powerpc, ppc64el + * [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_MLX4_DEBUG=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_NETPOLL_TRAP=n 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_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 + + [ Timo Aaltonen ] + + * SAUCE: i915_bdw: Provide an ubuntu/i915 driver for Broadwell graphics + - LP: #1294144 + * SAUCE: i915_bdw: Add DP_AUX definitions + - LP: #1294144 + * SAUCE: i915_bdw: Update intel_ips.h file location + - LP: #1294144 + * SAUCE: i915_bdw: Revert "ACPI / i915: replace open-coded _DSM code with + helper functions" + - LP: #1294144 + * SAUCE: i915_bdw: Add an include back to intel_opregion.c + - LP: #1294144 + * SAUCE: i915_bdw: Only support Broadwell with ubuntu/i915 driver + - LP: #1294144 + * SAUCE: i915_bdw: Add i915_bdw_gpu_*() calls for ubuntu/i915 + - LP: #1294144 + * i915_bdw: [Config] Enable CONFIG_DRM_I915_BDW=m, and disable UMS + - LP: #1294144 + * SAUCE: i915_bdw: Rename ubuntu/i915 driver to i915_bdw + - LP: #1294144 + + [ Upstream Kernel Changes ] + + * netfilter: nf_conntrack_dccp: fix skb_header_pointer API usages + - CVE-2014-2523 + * Input: ALPS - add support for "Dolphin" devices + - LP: #1190867 + * x86/mm/pageattr: Lookup address in an arbitrary PGD + - LP: #1297658 + * x86/mm/pageattr: Add a PGD pagetable populating function + - LP: #1297658 + * x86/mm/pageattr: Add a PUD pagetable populating function + - LP: #1297658 + * x86/mm/pageattr: Add a PMD pagetable populating function + - LP: #1297658 + * x86/mm/pageattr: Add a PTE pagetable populating function + - LP: #1297658 + * x86/mm/pageattr: Add a PUD error unwinding path + - LP: #1297658 + * x86/mm/pageattr: Add last levels of error path + - LP: #1297658 + * x86/mm/cpa: Map in an arbitrary pgd + - LP: #1297658 + * x86/efi: Runtime services virtual mapping + - LP: #1297658 + * x86/efi: Check krealloc return value + - LP: #1297658 + * Include apm-mustang.dtb in kernel-image udeb + * drm/i915: add i915_reset_count + - LP: #1294144 + * drm/i915: add i915_get_reset_stats_ioctl + - LP: #1294144 + * drm: add DRM_INFO_ONCE() to print a one-time DRM_INFO() message + - LP: #1294144 + * drm: provide a helper for the encoder possible_crtcs mask + - LP: #1294144 + * drm: Move drm_encoder_crtc_ok() to core + - LP: #1294144 + * drm: Pass the display mode to drm_calc_timestamping_constants() + - LP: #1294144 + * drm: Pass the display mode to drm_calc_vbltimestamp_from_scanoutpos() + - LP: #1294144 + * drm: Pass 'flags' from the caller to .get_scanout_position() + - LP: #1294144 + + [ Upstream Kernel Changes ] + + * rebase to v3.13.7 + - LP: #1268468 + + -- Andy Whitcroft Mon, 24 Mar 2014 10:41:31 +0000 + +linux (3.13.0-19.40) trusty; urgency=low + + [ Tim Gardner ] + + * [Config] Add new mlx modules to d-i + * [Config] Fix d-i spelling error: ahxi_xgene --> ahci_xgene + * [Config] Added Muti-Arch support for linux-headers-PKGVER-ABINUM, + linux-tools-common, and linux-cloud-tools-common + - LP: #1295112 + * Release Tracking Bug + - LP: #1296484 + + [ Upstream Kernel Changes ] + + * Drivers: hv: vmbus: Specify the target CPU that should receive + notification + - LP: #1295813 + + -- Tim Gardner Sun, 23 Mar 2014 19:54:50 -0600 + +linux (3.13.0-19.39) trusty; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1295462 + + [ Andy Whitcroft ] + + * ubuntu: aufs3 -- update update scripting + * ubuntu: AUFS -- update to 75dbb997b5812e16771bec20e92449ba0b1705d9 + + [ Anup Patel ] + + * SAUCE: (no-up) KVM: Documentation: Fix typo for KVM_ARM_VCPU_INIT ioctl + * SAUCE: (no-up) arm64: KVM: Force undefined exception for Guest SMC + intructions + + [ dann frazier ] + + * SAUCE: (no-up) Fix pcie-xgene build failure + + [ Emmanuel Grumbach ] + + * SAUCE: iwlwifi: mvm: send udev event upon firmware error to dump logs + + [ Feng Kan ] + + * SAUCE: (no-up) power: reset: Add generic SYSCON register mapped reset + - LP: #1284433 + * SAUCE: (no-up) arm64: dts: Add X-Gene reboot driver dts node + - LP: #1284433 + + [ Hans de Goede ] + + * SAUCE: (no-up) libahci: Allow drivers to override start_engine + - LP: #1282920 + * SAUCE: (no-up) ahci-platform: Add support for devices with more then 1 + clock + - LP: #1282920 + * SAUCE: (no-up) ahci-platform: Add support for an optional regulator for + sata-target power + - LP: #1282920 + * SAUCE: (no-up) ahci-platform: Add enable_ / disable_resources helper + functions + - LP: #1282920 + * SAUCE: (no-up) ahci-platform: "Library-ise" ahci_probe functionality + - LP: #1282920 + * SAUCE: (no-up) ahci-platform: "Library-ise" suspend / resume + functionality + - LP: #1282920 + + [ Iyappan Subramanian ] + + * SAUCE: (no-up) Documentation: APM X-Gene SoC Ethernet DTS binding + documentation + * SAUCE: (no-up) arm64: dts: APM X-Gene SoC Ethernet device tree nodes + * SAUCE: (no-up) drivers: net: APM X-Gene SoC Ethernet base driver + * SAUCE: (no-up) drivers: net: APM X-Gene SoC Ethernet driver error + handling + * SAUCE: (no-up) drivers: net: APM X-Gene SoC Ethernet driver ethtool + support + + [ Loc Ho ] + + * SAUCE: (no-up) Documentation: Add APM X-Gene SoC 15Gbps Multi-purpose + PHY driver binding documentation + - LP: #1282920 + * SAUCE: (no-up) PHY: add APM X-Gene SoC 15Gbps Multi-purpose PHY driver + - LP: #1282920 + * SAUCE: (no-up) arm64: Add APM X-Gene SoC 15Gbps Multi-purpose PHY DTS + entries + - LP: #1282920 + * SAUCE: (no-up) Documentation: Add documentation for the APM X-Gene SoC + SATA host controller DTS binding + * SAUCE: (no-up) ata: Add APM X-Gene SoC AHCI SATA host controller driver + * SAUCE: (no-up) ata: Fix compiler warning with APM X-Gene host + controller driver + * SAUCE: (no-up) arm64: Add APM X-Gene SoC AHCI SATA host controller DTS + entries + * SAUCE: (no-up) clk: arm64: Fix the clock-names property for pcppll, + socpll, and socplldiv2 + + [ Marc Zyngier ] + + * SAUCE: (no-up) arm64: KVM: force cache clean on page fault when caches + are off + * SAUCE: (no-up) arm64: KVM: allows discrimination of AArch32 sysreg + access + * SAUCE: (no-up) arm64: KVM: trap VM system registers until MMU and + caches are ON + * SAUCE: (no-up) ARM: KVM: introduce kvm_p*d_addr_end + * SAUCE: (no-up) arm64: KVM: flush VM pages before letting the guest + enable caches + * SAUCE: (no-up) ARM: KVM: force cache clean on page fault when caches + are off + + [ Ming Lei ] + + * SAUCE: (no-up) arm64: apm-storm: support ttyS1 + * SAUCE: (no-up) apm: pcie: fix hang when no card connected + + [ Paolo Pisati ] + + * [Config] armhf: generic: disable CPU_IDLE + * [Config] armhf: CPU_FREQ=y + * [Config] armhf: TI_THERMAL=y + + [ Rameshwar Prasad Sahu ] + + * SAUCE: (no-up) rtc: Add X-Gene SoC Real Time Clock Driver + + [ Ravi Patel ] + + * SAUCE: (no-up) Documentation: misc-devices: APM X-Gene SoC QMTM + * SAUCE: (no-up) Documentation: devicetree: bindings for APM X-Gene SoC + QMTM + * SAUCE: (no-up) misc: xgene: base driver for APM X-Gene SoC QMTM + * SAUCE: (no-up) arm64: boot: dts: entries for APM X-Gene SoC QMTM + * SAUCE: (no-up) misc: xgene: error handling for APM X-Gene SoC QMTM + + [ Roger Quadros ] + + * SAUCE: (no-up) ata: ahci_platform: Manage SATA PHY + - LP: #1282920 + * SAUCE: (no-up) ata: ahci_platform: runtime resume the device before use + - LP: #1282920 + + [ Seth Forshee ] + + * SAUCE: iwlwifi: mvm: Free sram dump immediately after using it + * SAUCE: iwlwifi: mvm: Only notify userspace of fw error dump when one is + created + * SAUCE: iwlwifi: mvm: Don't create fw error dump if there's nothing to + dump + + [ Tanmay Inamdar ] + + * SAUCE: (no-up) arm64: PCI(e) arch support + * SAUCE: (no-up) pci: APM X-Gene PCIe controller driver + * SAUCE: (no-up) arm64: dts: APM X-Gene PCIe device tree nodes + * SAUCE: (no-up) dt-bindings: pci: xgene pcie device tree bindings + * SAUCE: (no-up) MAINTAINERS: entry for APM X-Gene PCIe host driver + + [ Tim Gardner ] + + * [Config] CONFIG_POWER_RESET_SYSCON=y for arm64 + * SAUCE: (no-up) Restrict CONFIG_POWER_RESET_SYSCON to arm64 only + * SAUCE: iwlwifi: Fix FTBS for armhf + * [Config] CONFIG_PHY_XGENE=m for arm64 + * [Config] CONFIG_AHCI_XGENE=m for arm64 + * [Config] CONFIG_NET_XGENE=m for arm64 + * [Config] CONFIG_RTC_DRV_XGENE=m for arm64 + * SAUCE: (no-up) Add drivers/phy/phy-core.ko to generic inclusion list + * [Config] Enable PCI for arm64 + * SAUCE: arm64: export __cpu_clear_user_page for modules + * SAUCE: ARCH_HAS_DMA_GET_REQUIRED_MASK=n for arm64 + * [Config] CONFIG_PCI_XGENE=y + * [Config] CONFIG_PHY_XGENE=y for arm64 + * [Config] CONFIG_RTC_DRV_XGENE=y for arm64 + * d-i: Add ahxi_xgene and xgene-enet + + [ Upstream Kernel Changes ] + + * Staging: rtl8821ae: rc.c: fix up function prototypes + * Staging: rtl8821ae: removed unused functions and variables + * Staging: rtl8821ae: add TODO file + * Staging: rtl8812ae: disable due to build errors + * staging: r8821ae: Fix build problems + * staging: r8821ae: Enable build by reverting BROKEN marking + * staging: rtl8821ae: Fixed the size of array to macro as discussed by + Linus + * staging/rtl8821ae: fix build, depends on MAC80211 + * powerpc: Reclaim two unused thread_info flag bits + * powerpc: Don't corrupt transactional state when using FP/VMX in kernel + * powerpc: Fix transactional FP/VMX/VSX unavailable handlers + * Drivers: hv: Ballon: Make pressure posting thread sleep interruptibly + - LP: #1294253 + * mac80211: don't validate unchanged AP bandwidth while tracking + - LP: #1294558 + * phy-core: Don't propagate -ENOSUPP from phy_pm_runtime_get_sync to + caller + * CONFIG_XGENE_QMTM=m for arm64 + + -- Tim Gardner Thu, 20 Mar 2014 21:51:11 -0400 + +linux (3.13.0-18.38) trusty; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1293725 + * [Config] Add hv_balloon to d-i virtio-modules + - LP: #1292216 + + [ Andy Whitcroft ] + + * [Config] d-i -- add virtio_scsi to virtio-modules + - LP: #1288607 + + [ Colin Ian King ] + + * SAUCE: intel_pstate: inform user that thermald is worth considering + + [ dann frazier ] + + * [Config] arm64: KVM=y + + [ Gerd Hoffmann ] + + * SAUCE: vmbus: add missing breaks + - LP: #1287398 + * SAUCE: vmbus: use resource for hyperv mmio region + - LP: #1287398 + * SAUCE: hyperv-fb: add support for generation 2 virtual machines. + - LP: #1287398 + * SAUCE: hyperv-fb: kick off efifb early + - LP: #1287398 + + [ Haiyang Zhang ] + + * SAUCE: hyperv: Change the receive buffer size for legacy hosts + - LP: #1290151 + + [ K. Y. Srinivasan ] + + * SAUCE: Drivers: hv: vmbus: Extract the mmio information from DSDT + - LP: #1287398 + + [ Paolo Pisati ] + + * SAUCE: leds-gpio: of: introduce MODULE_DEVICE_TABLE for module + autoloading + * [Config] amhf: LEDS_TRIGGER_HEARTBEAT=y + + [ Upstream Kernel Changes ] + + * Revert "xhci 1.0: Limit arbitrarily-aligned scatter gather." + - LP: #1293361 + * Revert "USBNET: ax88179_178a: enable tso if usb host supports sg dma" + - LP: #1293361 + * powerpc/tm: Fix crash when forking inside a transaction + * AX88179_178A: Add VID:DID for Lenovo OneLinkDock Gigabit LAN + - LP: #1291890 + * drm/vmwgfx: Fix a surface reference corner-case in legacy emulation + mode + * Input: wacom - scale up touch width and height values for Intuos Pro + * Input: wacom - make sure touch_max is set for touch devices + * Input: wacom - add support for three new Intuos devices + * Input: wacom - add reporting of SW_MUTE_DEVICE events + * Input: wacom - fix wacom->shared guards for dual input devices + * Input: wacom - add support for DTU-1031 + * net: fix for a race condition in the inet frag code + - CVE-2014-0100 + * net: sctp: fix sctp_sf_do_5_1D_ce to verify if we/peer is AUTH capable + - CVE-2014-0101 + * KEYS: Make the keyring cycle detector ignore other keyrings of the same + name + - CVE-2014-0102 + * ipv6: don't set DST_NOCOUNT for remotely added routes + - CVE-2014-2309 + + -- Andy Whitcroft Thu, 13 Mar 2014 10:06:05 +0000 + +linux (3.13.0-17.37) trusty; urgency=low + + [ Andy Whitcroft ] + + * Release Tracking Bug + - LP: #1290484 + * Revert "SAUCE: hv: Add vss daemon to Makefile" + * Revert "SAUCE: (no-up) tools/hv: add basic Makefile" + * Revert "SAUCE: (no-up) hv -- bodge hv_kvp_daemon so it can use the + local linux/hyperv.h" + * Revert "SAUCE: (no-up) hv -- bodge hv_vss_daemon so it can use the + local linux/hyperv.h" + * Revert "SAUCE: SELinux: security_load_policy: Silence frame-larger-than + warning" + * Revert "SAUCE: ARM: OMAP4460: cpuidle: Extend + PM_OMAP4_ROM_SMP_BOOT_ERRATUM_GICD on cpuidle" + * ubuntu: overlayfs -- use kernel service credentials for copy up and + xattr manipulations + * [Packaging] tools -- hv tools build correctly against the built headers + * [Packaging] cloud-tools -- add the hv_fcopy_daemon to the package + * rebase to v3.13.6 + + [ Anton Blanchard ] + + * SAUCE: ibmveth: Fix endian issues with MAC addresses + + [ Bjarke Istrup Pedersen ] + + * SAUCE: hv: Add hyperv.h to uapi headers + - LP: #1282700 + + [ Fengguang Wu ] + + * SAUCE: Drivers: hv: fcopy_open() can be static + - LP: #1282700 + + [ K. Y. Srinivasan ] + + * SAUCE: Drivers: hv: Implement the file copy service + - LP: #1282700 + + [ Tim Gardner ] + + * SAUCE: (no-up) mei: Fix stable update misapplication + * SAUCE: (no-up) mei_me: Add module parameter to disable MSI + + [ Upstream Kernel Changes ] + + * arm64: KVM: Add Kconfig option for max VCPUs per-Guest + * arm64: KVM: Support X-Gene guest VCPU on APM X-Gene host + * ACPI / EC: Clear stale EC events on Samsung systems + * drm/ttm: Fix TTM object open regression + * SELinux: security_load_policy: Silence frame-larger-than warning + * ARM: OMAP4460: cpuidle: Extend PM_OMAP4_ROM_SMP_BOOT_ERRATUM_GICD on + cpuidle + + [ Upstream Kernel Changes ] + + * rebase to v3.13.6 + - LP: #1282369 + - LP: #1260303 + + -- Tim Gardner Wed, 05 Mar 2014 06:52:34 -0700 + +linux (3.13.0-16.36) trusty; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1287903 + + [ Andy Whitcroft ] + + * Revert "[Config] lowlatency -- turn CONFIG_IRQ_FORCED_THREADING_DEFAULT + off temporarily" + + [ Chris Bainbridge ] + + * SAUCE: x86: set Pentium M as PAE capable + - LP: #930447 + + [ Dave Jones ] + + * SAUCE: taint: repurpose TAINT_UNSAFE_SMP to TAINT_CPU_OUT_OF_SPEC + - LP: #930447 + + [ Paolo Pisati ] + + * [Config] SND_DAVINCI_SOC && SND_AM33XX_SOC_EVM =m + * [Config] armhf: DRM_TILCDC=m + + [ Philippe Bergheaud ] + + * SAUCE: powerpc: fix xmon disassembler for little-endian + - LP: #1286255 + + [ Tim Gardner ] + + * [Config] CONFIG_MICROCODE_EARLY=y + * [Config] CONFIG_R8821AE=m + * [Config] Add some virtio drivers to -virtual + - LP: #1287401 + * [Config] inclusion-list: vesafb and virtio_balloon are built-in + * SAUCE: vmwgfx: Expose U32_MAX + + [ Upstream Kernel Changes ] + + * Revert "drm/vmwgfx: Fix regression caused by "drm/ttm: make ttm + reservation calls behave like reservation calls"" + * Revert "drm/vmwgfx: Fix the driver for large dma addresses" + * usb: ehci: fix deadlock when threadirqs option is used + - LP: #1274987, #1279081 + * Staging: rtl8812ae: Add Realtek 8821 PCI WIFI driver + - LP: #1287298 + * intel_pstate: Remove periodic P state boost + * intel_pstate: Add trace point to report internal state. + * intel_pstate: Take core C0 time into account for core busy calculation + * intel_pstate: Use LFM bus ratio as min ratio/P state + * intel_pstate: Add support for Baytrail turbo P states + * intel_pstate: Change busy calculation to use fixed point math. + * PM / hibernate: Fix restore hang in freeze_processes() + * ipmi: remove deprecated IRQF_DISABLED + * ipmi: use USEC_PER_SEC instead of 1000000 for more meaningful + * ipmi: fix timeout calculation when bmc is disconnected + * ipmi: Cleanup error return + * ipmi: Add missing rv in ipmi_parisc_probe() + * drm/ttm: ttm object security fixes for render nodes + * drivers: gpu: Mark functions as static in vmwgfx_kms.c + * drivers: gpu: Mark functions as static in vmwgfx_buffer.c + * drivers: gpu: Mark functions as static in vmwgfx_fence.c + * drm/vmwgfx: Fix the driver for large dma addresses + * drm/vmwgfx: Update the svga3d register header file for new device + version + * drm/vmwgfx: Update the driver user-space interface for guest-backed + objects + * drm/vmwgfx: Replace vram_size with prim_bb_mem for calculation of max + resolution + * drm/vmwgfx: Update the svga register definition + * drm/vmwgfx: Adapt capability reporting to new hardware version + * drm/vmwgfx: Add MOB management + * drm/vmwgfx: Hook up MOBs to TTM as a separate memory type + * drm/vmwgfx: Read bounding box memory from the appropriate register + * drm/vmwgfx: Add the possibility to validate a buffer as a MOB + * drm/vmwgfx: Hook up guest-backed queries + * drm/vmwgfx: Detach backing store from its resources when it is evicted + * drm/vmwgfx: Hook up guest-backed contexts + * drm/vmwgfx: Hook up guest-backed surfaces + * drm/vmwgfx: Add guest-backed shaders + * drm/vmwgfx: Validate guest-backed shader const commands + * drm/vmwgfx: Add new unused (by user-space) commands to the verifier + * drm/vmwgfx: Enable 3D for new hardware version + * drm/vmwgfx: Fix up the vmwgfx_drv.h header for new files + * drm/vmwgfx: Extend the command verifier to handle guest-backed on / off + * drm/vmwgfx: Make sure that the multisampling is off + * drm/vmwgfx: Implement a buffer object synccpu ioctl. + * drm/vmwgfx: Add a parameter to get max MOB memory size + * drm/vmwgfx: Block the BIND_SHADERCONSTS command + * drm/vmwgfx: Track context bindings and scrub them upon exiting execbuf + * drm/vmwgfx: Persistent tracking of context bindings + * drm/vmwgfx: Ditch the vmw_dummy_query_bo_prepare function + * drm/vmwgfx: Use the linux DMA api also for MOBs + * drm/vmwgfx: Update otable definitions + * drm/vmwgfx: Fix surface framebuffer check for guest-backed surfaces + * drm/vmwgfx: Implement 64-bit Otable- and MOB binding v2 + * drm/vmwgfx: Silence the device command verifier + * drm/vmwgfx: Invalidate surface on non-readback unbind + * drm/vmwgfx: Fix recently introduced sparse / smatch warnings and errors + * drm/vmwgfx: Don't commit staged bindings if execbuf fails + * drm/vmwgfx: Fix regression caused by "drm/ttm: make ttm reservation + calls behave like reservation calls" + * drm/vmwgfx: Fix SET_SHADER_CONST emulation on guest-backed devices + * drm/vmwgfx: Fix legacy surface reference size copyback + * drm/vmwgfx: Emulate legacy shaders on guest-backed devices v2 + * drm/vmwgfx: Detect old user-space drivers and set up legacy emulation + v2 + * drm/vmwgfx: Reemit context bindings when necessary v2 + * vmwgfx: Fix unitialized stack read in vmw_setup_otable_base + * drm/vmwgfx: Fix a couple of sparse warnings and errors + * drm/vmwgfx: Get maximum mob size from register SVGA_REG_MOB_MAX_SIZE + * drm/vmwgfx: unlock on error path in vmw_execbuf_process() + * drm/vmwgfx: Remove stray const + * drm/vmwgfx: Fix possible integer overflow + * drm/vmwgfx: Fix command defines and checks + * drm/vmwgfx: Remove some unused surface formats + * drm/vmwgfx: Make sure backing mobs are cleared when allocated. Update + driver date. + * drm/vmwgfx: avoid null pointer dereference at failure paths + + -- Tim Gardner Mon, 03 Mar 2014 13:04:10 -0700 + +linux (3.13.0-15.35) trusty; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1287175 + + [ Andy Whitcroft ] + + * [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] ppc64el -- switch to 64K system pages + + [ Benjamin Herrenschmidt ] + + * SAUCE: powerpc/powernv: Add iommu DMA bypass support for IODA2 + + [ Paul Mackerras ] + + * SAUCE: powerpc: Increase stack redzone for 64-bit userspace to 512 + bytes + + [ Upstream Kernel Changes ] + + * perf trace: Fix ioctl 'request' beautifier build problems on !(i386 || + x86_64) arches + * kvm, vmx: Really fix lazy FPU on nested guest + - LP: #1278531 + + -- Tim Gardner Mon, 03 Mar 2014 13:22:56 +0000 + +linux (3.13.0-14.34) trusty; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1285851 + + [ Andy Whitcroft ] + + * [Config] d-i -- add hyperv_keyboard to serial-modules udeb + - LP: #1285434 + + [ Hannes Frederic Sowa ] + + * SAUCE: ipv6: honor IPV6_PKTINFO with v4 mapped addresses on sendmsg + - LP: #1284535 + + [ Jason Wang ] + + * SAUCE: x86, hyperv: bypass the timer_irq_works() check + - LP: #1282693 + + [ Paolo Pisati ] + + * [Config] disable FB_OMAP2, DRM_OMAP=m + + [ Upstream Kernel Changes ] + + * ipv6: make IPV6_RECVPKTINFO work for ipv4 datagrams + - LP: #1284535 + * mei: remove flash_work_queue + * mei: drop redundant list_del_init + * mei: cleanup mei_irq_read_handler + * mei: enable marking internal commands + * mei: me: set dma mask using DMA mapping API + * Documentation/misc-devices/mei/mei-amt-version.c: remove unneeded call + of mei_deinit() + * mei: do not run reset flow from the interrupt thread + * mei: nfc: mei_nfc_free has to be called under lock + * mei: fix syntax in comments and debug output + * mei: revamp mei reset state machine + * mei: limit the number of consecutive resets + * mei: set client's read_cb to NULL when flow control fails + + -- Tim Gardner Wed, 26 Feb 2014 08:43:20 -0500 + +linux (3.13.0-13.33) trusty; urgency=low + + [ Andy Whitcroft ] + + * Release Tracking Bug + - LP: #1284614 + * [Config] powerpc -- CONFIG_SCSI_IBMVSCSI=y + * [Config] CONFIG_RT_GROUP_SCHED=n + - LP: #1284731 + + [ Stefan Bader ] + + * [Config] Revert back to build IPMI as a module on all arches + + [ Tim Gardner ] + + * rebase to v3.13.5 + + [ Upstream Kernel Changes ] + + * cifs: ensure that uncached writes handle unmapped areas correctly + * rebase to v3.13.5 + + -- Andy Whitcroft Tue, 25 Feb 2014 12:15:09 +0000 + +linux (3.13.0-12.32) trusty; urgency=low + + [ Andy Whitcroft ] + + * Release Tracking Bug + - LP: #1283074 + + * Revert "SAUCE: Drivers: hv: vmbus: Specify the target CPU that should + receive notification" + * [Packaging] tools -- clean up generic so it gives more targetted hints + * [Packaging] tools -- fix relative links + * rebase to v3.13.4 + + [ Colin Ian King ] + + * [Config][v2] armhf, arm64, powerpc, ppc64el: IPMI_SI=m + + [ Paolo Pisati ] + + * [Config] armhf: SOC_AM33XX=y + * [Config] armhf: TI_CPSW, TI_CPTS and TI_DAVINCI_[CPDMA|MDIO] = y + * [Config] armhf: RTC_DRV_OMAP=y + * [Config] build beaglebone and bleaglebone black dtbs + + [ Tony Breeds ] + + * SAUCE: powerpc/le: Ensure that the 'stop-self' RTAS token is handled + correctly + - LP: #1282712 + + [ Upstream Kernel Changes ] + + * Drivers: hv: vmbus: Specify the target CPU that should receive + notification + - LP: #1282694 + * Drivers: hv: vmbus: Don't timeout during the initial connection with + host + - LP: #1282694 + * hyperv: Add support for physically discontinuous receive buffer + - LP: #1282695 + * Input: hyperv-keyboard - pass through 0xE1 prefix + - LP: #1282699 + * rebase to v3.13.4 + + -- Andy Whitcroft Fri, 21 Feb 2014 12:51:17 +0000 + +linux (3.13.0-11.31) trusty; urgency=low + + [ Colin Ian King ] + + * [config] Set IPMI suppoort default to "y" + + [ Tim Gardner ] + + * [Config] CONFIG_USER_NS=y for ppc64el + * [Config] CONFIG_RESOURCE_COUNTERS=y for ppc64el + * Release Tracking Bug + - LP: #1282243 + + -- Tim Gardner Wed, 19 Feb 2014 12:04:43 -0500 + +linux (3.13.0-10.30) trusty; urgency=low + + [ Andy Whitcroft ] + + * [Packaging] tools -- fix up do_tools interface which is assumed by + external tooling + + [ Tim Gardner ] + + * [Config] CONFIG_CGROUP_SCHED=y for ppc64el + * [Config] CONFIG_BLK_CGROUP=y for ppc64el + * [Config] CONFIG_USB_XHCI_HCD=y for ppc64el + * [Config] CONFIG_CGROUP_PERF=y for ppc64el + * Release Tracking Bug + - LP: #1281783 + + [ Upstream Kernel Changes ] + + * be2net: Use MCC_CREATE_EXT_V1 cmd for Skyhawk-R + - LP: #1281446 + * be2net: don't set "pport" field when querying "pvid" + - LP: #1281446 + * be2net: Log the profile-id used by FW during driver initialization + - LP: #1281446 + * be2net: do not call be_set/get_fw_log_level() on Skyhawk-R + - LP: #1281446 + * be2net: ignore mac-addr set call for an already programmed mac-addr + - LP: #1281446 + * be2net: fix incorrect setting of cmd_privileges for VFs + - LP: #1281446 + * be2net: Remove "10Gbps" from driver description string + - LP: #1281446 + * be2net: do not use frag index in the RX-compl entry + - LP: #1281446 + * be2net: use GET_MAC_LIST cmd to query mac-address from a pmac-id + - LP: #1281446 + * be2net: cleanup wake-on-lan code + - LP: #1281446 + * be2net: update driver version to 10.0.x + - LP: #1281446 + * be2net: Fix be_vlan_add/rem_vid() routines + - LP: #1281446 + + -- Tim Gardner Tue, 18 Feb 2014 13:13:24 -0700 + +linux (3.13.0-9.29) trusty; urgency=low + + [ Andy Whitcroft ] + + * Release Tracking Bug + - LP: #1280291 + * [Config] lowlatency -- turn CONFIG_IRQ_FORCED_THREADING_DEFAULT off + temporarily + * [Packaging] tools -- split out "cloud only" tools into a cloud tools + package + + [ Paolo Pisati ] + + * [Config] armhf: DISPLAY_CONNECTOR_HDMI && DISPLAY_ENCODER_TPD12S015 =y + + [ Tim Gardner ] + + * rebase to v3.13.3 + + [ Upstream Kernel Changes ] + + * Revert "mmc: sdhci-pci: Fix possibility of chip->fixes being null" + * Revert "mmc: sdhci-pci: Fix BYT sd card getting stuck in runtime + suspend" + * NVMe: Avoid shift operation when writing cq head doorbell + - LP: #1256155 + * NVMe: remove deprecated IRQF_DISABLED + - LP: #1256155 + * NVMe: compat SG_IO ioctl + - LP: #1256155 + * NVMe: Fix lockdep warnings + - LP: #1256155 + * NVMe: Cache dev->pci_dev in a local pointer + - LP: #1256155 + * NVMe: Device resume error handling + - LP: #1256155 + * NVMe: Schedule reset for failed controllers + - LP: #1256155 + * NVMe: Abort timed out commands + - LP: #1256155 + * NVMe: Surprise removal handling + - LP: #1256155 + * NVMe: Async IO queue deletion + - LP: #1256155 + * NVMe: Dynamically allocate partition numbers + - LP: #1256155 + * NVMe: Disable admin queue on init failure + - LP: #1256155 + * NVMe: Add a pci_driver shutdown method + - LP: #1256155 + * NVMe: Include device and queue numbers in interrupt name + - LP: #1256155 + * NVMe: Correct uses of INIT_WORK + - LP: #1256155 + * NVMe: Namespace use after free on surprise removal + - LP: #1256155 + * intel_pstate: Add setting voltage value for baytrail P states. + - LP: #1270736 + * mmc: sdhci-pci: break out definitions to header file + * mmc: sdhci-pci: add support of O2Micro/BayHubTech SD hosts + * mmc: sdhci-pci: Fix BYT sd card getting stuck in runtime suspend + * mmc: sdhci-pci: Fix possibility of chip->fixes being null + + [ Upstream Kernel Changes ] + + * rebase to v3.13.3 + + -- Tim Gardner Thu, 13 Feb 2014 06:08:09 -0700 + +linux (3.13.0-8.28) trusty; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1278963 + + [ Paolo Pisati ] + + * [Config] armhf: RTC_DRV_PL031=y + + [ Serge Hallyn ] + + * SAUCE: Overlayfs: allow unprivileged mounts + + [ Upstream Kernel Changes ] + + * kexec: add sysctl to disable kexec_load + - LP: #1259570 + * SELinux: Fix kernel BUG on empty security contexts. + - CVE-2014-1874 + + -- Tim Gardner Tue, 11 Feb 2014 08:35:39 -0500 + +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-3.13.0.orig/debian/cloud-tools/hv_get_dhcp_info +++ linux-3.13.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-3.13.0.orig/debian/cloud-tools/hv_get_dns_info +++ linux-3.13.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-3.13.0.orig/debian/cloud-tools/hv_set_ifconfig +++ linux-3.13.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-3.13.0.orig/debian/commit-templates/bumpabi +++ linux-3.13.0/debian/commit-templates/bumpabi @@ -0,0 +1,3 @@ +UBUNTU: Bump ABI + +Ignore: yes --- linux-3.13.0.orig/debian/commit-templates/config-updates +++ linux-3.13.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-3.13.0.orig/debian/commit-templates/external-driver +++ linux-3.13.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-3.13.0.orig/debian/commit-templates/missing-modules +++ linux-3.13.0/debian/commit-templates/missing-modules @@ -0,0 +1,3 @@ +UBUNTU: build/modules: Add modules that have intentionally gone missing + +Ignore: yes --- linux-3.13.0.orig/debian/commit-templates/newrelease +++ linux-3.13.0/debian/commit-templates/newrelease @@ -0,0 +1,3 @@ +UBUNTU: Start new release + +Ignore: yes --- linux-3.13.0.orig/debian/commit-templates/sauce-patch +++ linux-3.13.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-3.13.0.orig/debian/commit-templates/upstream-patch +++ linux-3.13.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-3.13.0.orig/debian/compat +++ linux-3.13.0/debian/compat @@ -0,0 +1 @@ +5 --- linux-3.13.0.orig/debian/control +++ linux-3.13.0/debian/control @@ -0,0 +1,977 @@ +Source: linux +Section: devel +Priority: optional +Maintainer: Ubuntu Kernel Team +Standards-Version: 3.9.4.0 +Build-Depends: debhelper (>= 5), cpio, module-init-tools, kernel-wedge (>= 2.24ubuntu1), 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] +Build-Depends-Indep: xmlto, docbook-utils, ghostscript, transfig, bzip2, sharutils, asciidoc +Vcs-Git: http://kernel.ubuntu.com/git-repos/ubuntu/ubuntu-trusty.git +XS-Testsuite: autopkgtest +#XS-Testsuite-Depends: gcc-4.7 binutils + +Package: linux-source-3.13.0 +Architecture: all +Section: devel +Priority: optional +Provides: linux-source, linux-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 3.13.0 with Ubuntu patches + This package provides the source code for the Linux kernel version + 3.13.0. + . + This package is mainly meant for other packages to use, in order to build + custom flavours. + . + If you wish to use this package to create a custom Linux kernel, then it + is suggested that you investigate the package kernel-package, which has + been designed to ease the task of creating kernel image packages. + . + If you are simply trying to build third-party modules for your kernel, + you do not want this package. Install the appropriate linux-headers + package instead. + +Package: linux-doc +Architecture: all +Section: doc +Priority: optional +Depends: ${misc:Depends} +Conflicts: linux-doc-3 +Replaces: linux-doc-3 +Description: Linux kernel specific documentation for version 3.13.0 + This package provides the various documents in the 3.13.0 kernel + Documentation/ subdirectory. These document kernel subsystems, APIs, device + drivers, and so on. See + /usr/share/doc/linux-doc/00-INDEX for a list of what is + contained in each file. + +Package: linux-headers-3.13.0-100 +Architecture: all +Multi-Arch: foreign +Section: devel +Priority: optional +Depends: ${misc:Depends}, coreutils | fileutils (>= 4.0) +Description: Header files related to Linux kernel version 3.13.0 + This package provides kernel header files for version 3.13.0, for sites + that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.13.0-100/debian.README.gz for details + +Package: linux-libc-dev +Architecture: i386 amd64 armhf arm64 x32 powerpc ppc64el +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), linux-kernel-headers +Replaces: libc6-dev (<< 2.3.2.ds1-6), libc6.1-dev (<< 2.3.2.ds1-6), dvb-dev (<< 1.0.1-6), linux-kernel-headers, libdrm-dev +Provides: linux-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 linux-headers-* packages for that. + +Package: linux-tools-common +Architecture: all +Multi-Arch: foreign +Section: kernel +Priority: optional +Depends: ${misc:Depends} +Conflicts: linux-lts-utopic-tools-common, linux-lts-vivid-tools-common +Replaces: linux-tools (<= 2.6.32-16.25), linux-lts-utopic-tools-common, linux-lts-vivid-tools-common +Description: Linux kernel version specific tools for version 3.13.0 + This package provides the architecture independent parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version PGKVER. + +Package: linux-tools-3.13.0-100 +Architecture: i386 amd64 armhf arm64 powerpc ppc64el +Section: devel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-tools-common +Description: Linux kernel version specific tools for version 3.13.0-100 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 3.13.0-100 on + 64 bit x86. + You probabally want to install linux-tools-3.13.0-100-. + +Package: linux-cloud-tools-common +Architecture: all +Multi-Arch: foreign +Section: kernel +Priority: optional +Breaks: linux-tools-common (<< 3.13.0-8.28), hv-kvp-daemon-init (<< 3.13) +Conflicts: linux-lts-utopic-cloud-tools-common, linux-lts-vivid-cloud-tools-common +Replaces: linux-tools-common (<< 3.13.0-8.28), hv-kvp-daemon-init (<< 3.13), linux-lts-utopic-cloud-tools-common, linux-lts-vivid-cloud-tools-common +Depends: ${misc:Depends} +Description: Linux kernel version specific cloud tools for version 3.13.0 + This package provides the architecture independent parts for kernel + version locked tools for cloud tools for version PGKVER. + +Package: linux-cloud-tools-3.13.0-100 +Architecture: i386 amd64 armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-cloud-tools-common +Description: Linux kernel version specific cloud tools for version 3.13.0-100 + This package provides the architecture dependant parts for kernel + version locked tools for cloud tools for version 3.13.0-100 on + 64 bit x86. + You probabally want to install linux-cloud-tools-3.13.0-100-. + + +Package: linux-image-3.13.0-100-generic +Architecture: i386 amd64 armhf arm64 ppc64el +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), module-init-tools (>= 3.3-pre11-4ubuntu3) +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-doc-3.13.0 | linux-source-3.13.0, linux-tools, linux-headers-3.13.0-100-generic +Description: Linux kernel image for version 3.13.0 on 64 bit x86 SMP + This package contains the Linux kernel image for version 3.13.0 on + 64 bit x86 SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Generic processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-generic meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.13.0-100-generic +Architecture: i386 amd64 armhf arm64 ppc64el +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.13.0-100-generic, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel extra modules for version 3.13.0 on 64 bit x86 SMP + This package contains the Linux kernel extra modules for version 3.13.0 on + 64 bit x86 SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Generic processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-generic meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.13.0-100-generic +Architecture: i386 amd64 armhf arm64 ppc64el +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.13.0-100, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.13.0 on 64 bit x86 SMP + This package provides kernel header files for version 3.13.0 on + 64 bit x86 SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.13.0-100/debian.README.gz for details. + +Package: linux-image-3.13.0-100-generic-dbgsym +Architecture: i386 amd64 armhf arm64 ppc64el +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.13.0 on 64 bit x86 SMP + This package provides a kernel debug image for version 3.13.0 on + 64 bit x86 SMP. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-tools-3.13.0-100-generic +Architecture: i386 amd64 armhf arm64 ppc64el +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-tools-3.13.0-100 +Description: Linux kernel version specific tools for version 3.13.0-100 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 3.13.0-100 on + 64 bit x86. + +Package: linux-cloud-tools-3.13.0-100-generic +Architecture: i386 amd64 armhf arm64 ppc64el +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-cloud-tools-3.13.0-100 +Description: Linux kernel version specific cloud tools for version 3.13.0-100 + This package provides the architecture dependant parts for kernel + version locked tools for cloud for version 3.13.0-100 on + 64 bit x86. + +Package: linux-udebs-generic +XC-Package-Type: udeb +Section: debian-installer +Architecture: i386 amd64 armhf arm64 ppc64el +Depends: ${udeb:Depends} +Description: Metapackage depending on kernel udebs + This package depends on the all udebs that the kernel build generated, + for easier version and migration tracking. + + +Package: linux-image-3.13.0-100-generic-lpae +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), module-init-tools (>= 3.3-pre11-4ubuntu3) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: flash-kernel [armhf] +Suggests: fdutils, linux-doc-3.13.0 | linux-source-3.13.0, linux-tools, linux-headers-3.13.0-100-generic-lpae +Description: Linux kernel image for version 3.13.0 on 64 bit x86 SMP + This package contains the Linux kernel image for version 3.13.0 on + 64 bit x86 SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Generic LPAE processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-generic-lpae meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.13.0-100-generic-lpae +Architecture: armhf +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.13.0-100-generic-lpae, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel extra modules for version 3.13.0 on 64 bit x86 SMP + This package contains the Linux kernel extra modules for version 3.13.0 on + 64 bit x86 SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Generic LPAE processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-generic-lpae meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.13.0-100-generic-lpae +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.13.0-100, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.13.0 on 64 bit x86 SMP + This package provides kernel header files for version 3.13.0 on + 64 bit x86 SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.13.0-100/debian.README.gz for details. + +Package: linux-image-3.13.0-100-generic-lpae-dbgsym +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.13.0 on 64 bit x86 SMP + This package provides a kernel debug image for version 3.13.0 on + 64 bit x86 SMP. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-tools-3.13.0-100-generic-lpae +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-tools-3.13.0-100 +Description: Linux kernel version specific tools for version 3.13.0-100 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 3.13.0-100 on + 64 bit x86. + +Package: linux-cloud-tools-3.13.0-100-generic-lpae +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-cloud-tools-3.13.0-100 +Description: Linux kernel version specific cloud tools for version 3.13.0-100 + This package provides the architecture dependant parts for kernel + version locked tools for cloud for version 3.13.0-100 on + 64 bit x86. + +Package: linux-udebs-generic-lpae +XC-Package-Type: udeb +Section: debian-installer +Architecture: armhf +Depends: ${udeb:Depends} +Description: Metapackage depending on kernel udebs + This package depends on the all udebs that the kernel build generated, + for easier version and migration tracking. + + +Package: linux-image-3.13.0-100-lowlatency +Architecture: i386 amd64 +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), module-init-tools (>= 3.3-pre11-4ubuntu3) +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] +Suggests: fdutils, linux-doc-3.13.0 | linux-source-3.13.0, linux-tools, linux-headers-3.13.0-100-lowlatency +Description: Linux kernel image for version 3.13.0 on 64 bit x86 SMP + This package contains the Linux kernel image for version 3.13.0 on + 64 bit x86 SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Lowlatency processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-lowlatency meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.13.0-100-lowlatency +Architecture: i386 amd64 +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.13.0-100-lowlatency, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel extra modules for version 3.13.0 on 64 bit x86 SMP + This package contains the Linux kernel extra modules for version 3.13.0 on + 64 bit x86 SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Lowlatency processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-lowlatency meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.13.0-100-lowlatency +Architecture: i386 amd64 +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.13.0-100, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.13.0 on 64 bit x86 SMP + This package provides kernel header files for version 3.13.0 on + 64 bit x86 SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.13.0-100/debian.README.gz for details. + +Package: linux-image-3.13.0-100-lowlatency-dbgsym +Architecture: i386 amd64 +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.13.0 on 64 bit x86 SMP + This package provides a kernel debug image for version 3.13.0 on + 64 bit x86 SMP. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-tools-3.13.0-100-lowlatency +Architecture: i386 amd64 +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-tools-3.13.0-100 +Description: Linux kernel version specific tools for version 3.13.0-100 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 3.13.0-100 on + 64 bit x86. + +Package: linux-cloud-tools-3.13.0-100-lowlatency +Architecture: i386 amd64 +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-cloud-tools-3.13.0-100 +Description: Linux kernel version specific cloud tools for version 3.13.0-100 + This package provides the architecture dependant parts for kernel + version locked tools for cloud for version 3.13.0-100 on + 64 bit x86. + +Package: linux-udebs-lowlatency +XC-Package-Type: udeb +Section: debian-installer +Architecture: i386 amd64 +Depends: ${udeb:Depends} +Description: Metapackage depending on kernel udebs + This package depends on the all udebs that the kernel build generated, + for easier version and migration tracking. + + +Package: linux-image-3.13.0-100-powerpc-e500 +Architecture: powerpc +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6), module-init-tools (>= 3.3-pre11-4ubuntu3) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: grub-ieee1275 +Suggests: fdutils, linux-doc-3.13.0 | linux-source-3.13.0, linux-tools, linux-headers-3.13.0-100-powerpc-e500 +Description: Linux kernel image for version 3.13.0 on 32-bit Freescale Power e500v1 and e500v2 + This package contains the Linux kernel image for version 3.13.0 on + 32-bit Freescale Power e500v1 and e500v2. + . + 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 32-bit Freescale Power e500v1 and e500v2 processors. + . + Geared toward server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc-e500 meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.13.0-100-powerpc-e500 +Architecture: powerpc +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.13.0-100-powerpc-e500, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel extra modules for version 3.13.0 on 32-bit Freescale Power e500v1 and e500v2 + This package contains the Linux kernel extra modules for version 3.13.0 on + 32-bit Freescale Power e500v1 and e500v2. + . + 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 32-bit Freescale Power e500v1 and e500v2 processors. + . + Geared toward server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc-e500 meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.13.0-100-powerpc-e500 +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.13.0-100, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.13.0 on 32-bit Freescale Power e500v1 and e500v2 + This package provides kernel header files for version 3.13.0 on + 32-bit Freescale Power e500v1 and e500v2. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.13.0-100/debian.README.gz for details. + +Package: linux-image-3.13.0-100-powerpc-e500-dbgsym +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.13.0 on 32-bit Freescale Power e500v1 and e500v2 + This package provides a kernel debug image for version 3.13.0 on + 32-bit Freescale Power e500v1 and e500v2. + . + 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-3.13.0-100-powerpc-e500 +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-tools-3.13.0-100 +Description: Linux kernel version specific tools for version 3.13.0-100 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 3.13.0-100 on + 64 bit x86. + +Package: linux-cloud-tools-3.13.0-100-powerpc-e500 +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-cloud-tools-3.13.0-100 +Description: Linux kernel version specific cloud tools for version 3.13.0-100 + This package provides the architecture dependant parts for kernel + version locked tools for cloud for version 3.13.0-100 on + 64 bit x86. + +Package: linux-udebs-powerpc-e500 +XC-Package-Type: udeb +Section: debian-installer +Architecture: powerpc +Depends: ${udeb:Depends} +Description: Metapackage depending on kernel udebs + This package depends on the all udebs that the kernel build generated, + for easier version and migration tracking. + + +Package: linux-image-3.13.0-100-powerpc-e500mc +Architecture: powerpc +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6), module-init-tools (>= 3.3-pre11-4ubuntu3) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: grub-ieee1275 +Suggests: fdutils, linux-doc-3.13.0 | linux-source-3.13.0, linux-tools, linux-headers-3.13.0-100-powerpc-e500mc +Description: Linux kernel image for version 3.13.0 on 32-bit Freescale Power e500mc + This package contains the Linux kernel image for version 3.13.0 on + 32-bit Freescale Power e500mc. + . + 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 32-bit Freescale Power e500mc processors. + . + Geared toward server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc-e500mc meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.13.0-100-powerpc-e500mc +Architecture: powerpc +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.13.0-100-powerpc-e500mc, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel extra modules for version 3.13.0 on 32-bit Freescale Power e500mc + This package contains the Linux kernel extra modules for version 3.13.0 on + 32-bit Freescale Power e500mc. + . + 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 32-bit Freescale Power e500mc processors. + . + Geared toward server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc-e500mc meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.13.0-100-powerpc-e500mc +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.13.0-100, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.13.0 on 32-bit Freescale Power e500mc + This package provides kernel header files for version 3.13.0 on + 32-bit Freescale Power e500mc. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.13.0-100/debian.README.gz for details. + +Package: linux-image-3.13.0-100-powerpc-e500mc-dbgsym +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.13.0 on 32-bit Freescale Power e500mc + This package provides a kernel debug image for version 3.13.0 on + 32-bit Freescale Power e500mc. + . + 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-3.13.0-100-powerpc-e500mc +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-tools-3.13.0-100 +Description: Linux kernel version specific tools for version 3.13.0-100 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 3.13.0-100 on + 64 bit x86. + +Package: linux-cloud-tools-3.13.0-100-powerpc-e500mc +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-cloud-tools-3.13.0-100 +Description: Linux kernel version specific cloud tools for version 3.13.0-100 + This package provides the architecture dependant parts for kernel + version locked tools for cloud for version 3.13.0-100 on + 64 bit x86. + +Package: linux-udebs-powerpc-e500mc +XC-Package-Type: udeb +Section: debian-installer +Architecture: powerpc +Depends: ${udeb:Depends} +Description: Metapackage depending on kernel udebs + This package depends on the all udebs that the kernel build generated, + for easier version and migration tracking. + + +Package: linux-image-3.13.0-100-powerpc-smp +Architecture: powerpc +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6), module-init-tools (>= 3.3-pre11-4ubuntu3) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: yaboot +Suggests: fdutils, linux-doc-3.13.0 | linux-source-3.13.0, linux-tools, linux-headers-3.13.0-100-powerpc-smp +Description: Linux kernel image for version 3.13.0 on 32-bit PowerPC SMP + This package contains the Linux kernel image for version 3.13.0 on + 32-bit PowerPC 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 32-bit PowerPC SMP processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc-smp meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.13.0-100-powerpc-smp +Architecture: powerpc +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.13.0-100-powerpc-smp, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel extra modules for version 3.13.0 on 32-bit PowerPC SMP + This package contains the Linux kernel extra modules for version 3.13.0 on + 32-bit PowerPC 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 32-bit PowerPC SMP processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc-smp meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.13.0-100-powerpc-smp +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.13.0-100, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.13.0 on 32-bit PowerPC SMP + This package provides kernel header files for version 3.13.0 on + 32-bit PowerPC SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.13.0-100/debian.README.gz for details. + +Package: linux-image-3.13.0-100-powerpc-smp-dbgsym +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.13.0 on 32-bit PowerPC SMP + This package provides a kernel debug image for version 3.13.0 on + 32-bit PowerPC 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-3.13.0-100-powerpc-smp +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-tools-3.13.0-100 +Description: Linux kernel version specific tools for version 3.13.0-100 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 3.13.0-100 on + 64 bit x86. + +Package: linux-cloud-tools-3.13.0-100-powerpc-smp +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-cloud-tools-3.13.0-100 +Description: Linux kernel version specific cloud tools for version 3.13.0-100 + This package provides the architecture dependant parts for kernel + version locked tools for cloud for version 3.13.0-100 on + 64 bit x86. + +Package: linux-udebs-powerpc-smp +XC-Package-Type: udeb +Section: debian-installer +Architecture: powerpc +Depends: ${udeb:Depends} +Description: Metapackage depending on kernel udebs + This package depends on the all udebs that the kernel build generated, + for easier version and migration tracking. + + +Package: linux-image-3.13.0-100-powerpc64-emb +Architecture: powerpc +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6), module-init-tools (>= 3.3-pre11-4ubuntu3) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: grub-ieee1275 +Suggests: fdutils, linux-doc-3.13.0 | linux-source-3.13.0, linux-tools, linux-headers-3.13.0-100-powerpc64-emb +Description: Linux kernel image for version 3.13.0 on 64-bit PowerPC SMP Book3E + This package contains the Linux kernel image for version 3.13.0 on + 64-bit PowerPC SMP Book3E. + . + 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 64-bit PowerPC SMP Book3E processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc64-emb meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.13.0-100-powerpc64-emb +Architecture: powerpc +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.13.0-100-powerpc64-emb, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel extra modules for version 3.13.0 on 64-bit PowerPC SMP Book3E + This package contains the Linux kernel extra modules for version 3.13.0 on + 64-bit PowerPC SMP Book3E. + . + 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 64-bit PowerPC SMP Book3E processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc64-emb meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.13.0-100-powerpc64-emb +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.13.0-100, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.13.0 on 64-bit PowerPC SMP Book3E + This package provides kernel header files for version 3.13.0 on + 64-bit PowerPC SMP Book3E. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.13.0-100/debian.README.gz for details. + +Package: linux-image-3.13.0-100-powerpc64-emb-dbgsym +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.13.0 on 64-bit PowerPC SMP Book3E + This package provides a kernel debug image for version 3.13.0 on + 64-bit PowerPC SMP Book3E. + . + 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-3.13.0-100-powerpc64-emb +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-tools-3.13.0-100 +Description: Linux kernel version specific tools for version 3.13.0-100 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 3.13.0-100 on + 64 bit x86. + +Package: linux-cloud-tools-3.13.0-100-powerpc64-emb +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-cloud-tools-3.13.0-100 +Description: Linux kernel version specific cloud tools for version 3.13.0-100 + This package provides the architecture dependant parts for kernel + version locked tools for cloud for version 3.13.0-100 on + 64 bit x86. + +Package: linux-udebs-powerpc64-emb +XC-Package-Type: udeb +Section: debian-installer +Architecture: powerpc +Depends: ${udeb:Depends} +Description: Metapackage depending on kernel udebs + This package depends on the all udebs that the kernel build generated, + for easier version and migration tracking. + + +Package: linux-image-3.13.0-100-powerpc64-smp +Architecture: powerpc +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6), module-init-tools (>= 3.3-pre11-4ubuntu3) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: yaboot +Suggests: fdutils, linux-doc-3.13.0 | linux-source-3.13.0, linux-tools, linux-headers-3.13.0-100-powerpc64-smp +Description: Linux kernel image for version 3.13.0 on 64-bit PowerPC SMP + This package contains the Linux kernel image for version 3.13.0 on + 64-bit PowerPC 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 64-bit PowerPC SMP processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc64-smp meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.13.0-100-powerpc64-smp +Architecture: powerpc +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.13.0-100-powerpc64-smp, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel extra modules for version 3.13.0 on 64-bit PowerPC SMP + This package contains the Linux kernel extra modules for version 3.13.0 on + 64-bit PowerPC 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 64-bit PowerPC SMP processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc64-smp meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.13.0-100-powerpc64-smp +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.13.0-100, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.13.0 on 64-bit PowerPC SMP + This package provides kernel header files for version 3.13.0 on + 64-bit PowerPC SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.13.0-100/debian.README.gz for details. + +Package: linux-image-3.13.0-100-powerpc64-smp-dbgsym +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.13.0 on 64-bit PowerPC SMP + This package provides a kernel debug image for version 3.13.0 on + 64-bit PowerPC 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-3.13.0-100-powerpc64-smp +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-tools-3.13.0-100 +Description: Linux kernel version specific tools for version 3.13.0-100 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 3.13.0-100 on + 64 bit x86. + +Package: linux-cloud-tools-3.13.0-100-powerpc64-smp +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-cloud-tools-3.13.0-100 +Description: Linux kernel version specific cloud tools for version 3.13.0-100 + This package provides the architecture dependant parts for kernel + version locked tools for cloud for version 3.13.0-100 on + 64 bit x86. + +Package: linux-udebs-powerpc64-smp +XC-Package-Type: udeb +Section: debian-installer +Architecture: powerpc +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-3.13.0.orig/debian/control-scripts/extra-post +++ linux-3.13.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-3.13.0.orig/debian/control-scripts/headers-postinst +++ linux-3.13.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-3.13.0.orig/debian/control-scripts/postinst +++ linux-3.13.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-3.13.0.orig/debian/control-scripts/postrm +++ linux-3.13.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-3.13.0.orig/debian/control-scripts/preinst +++ linux-3.13.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-3.13.0.orig/debian/control-scripts/prerm +++ linux-3.13.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-3.13.0.orig/debian/control.stub +++ linux-3.13.0/debian/control.stub @@ -0,0 +1 @@ +# placebo control.stub for kernel-wedge flow change --- linux-3.13.0.orig/debian/copyright +++ linux-3.13.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-3.13.0.orig/debian/debian.env +++ linux-3.13.0/debian/debian.env @@ -0,0 +1 @@ +DEBIAN=debian.master --- linux-3.13.0.orig/debian/docs/README.inclusion-list +++ linux-3.13.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-3.13.0.orig/debian/gbp.conf +++ linux-3.13.0/debian/gbp.conf @@ -0,0 +1,2 @@ +[buildpackage] +debian-tag = Ubuntu-%(version)s --- linux-3.13.0.orig/debian/linux-cloud-tools-common.hv-fcopy-daemon.upstart +++ linux-3.13.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 " + +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 " + +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-3.13.0.orig/debian/rules.d/0-common-vars.mk +++ linux-3.13.0/debian/rules.d/0-common-vars.mk @@ -0,0 +1,235 @@ +# +# 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)) +prev_revision := $(word $(words $(prev_revisions)),$(prev_revisions)) + +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=linux-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 + +# 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) + +# 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-3.13.0.orig/debian/rules.d/1-maintainer.mk +++ linux-3.13.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 | \ + $(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-3.13.0.orig/debian/rules.d/2-binary-arch.mk +++ linux-3.13.0/debian/rules.d/2-binary-arch.mk @@ -0,0 +1,650 @@ +# 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-%: dtb_target = $(dtb_files_$*) +$(stampdir)/stamp-build-%: $(stampdir)/stamp-prepare-% + @echo Debug: $@ build_image $(build_image) bldimg $(bldimg) + $(build_cd) $(kmake) $(build_O) $(conc_level) $(bldimg) modules $(dtb_target) + @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-%: dtb_files = $(dtb_files_$*) +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 [ "$(dtb_files)" ]; then \ + install -d $(pkgdir)/lib/firmware/$(abi_release)-$*/device-tree; \ + for dtb_file in $(dtb_files); do \ + install -m644 $(builddir)/build-$*/arch/$(build_arch)/boot/dts/$$dtb_file \ + $(pkgdir)/lib/firmware/$(abi_release)-$*/device-tree/$$dtb_file; \ + 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 "# Autogenerated blacklist for $(src_pkg_name) $(abi_release)-$* $(arch)" \ + >$(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 -f $(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; \ + scripts/sign-file $(CONFIG_MODULE_SIG_HASH) $(MODSECKEY) $(MODPUBKEY) \ + $(pkgdir)/$$module; \ + 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 -s /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_cpupower),true) + ln -s ../../$(src_pkg_name)-tools-$(abi_release)/cpupower $(toolspkgdir)/usr/lib/linux-tools/$(abi_release)-$* +endif +ifeq ($(do_tools_perf),true) + ln -s ../../$(src_pkg_name)-tools-$(abi_release)/perf $(toolspkgdir)/usr/lib/linux-tools/$(abi_release)-$* +endif +ifeq ($(do_tools_x86),true) + ln -s ../../$(src_pkg_name)-tools-$(abi_release)/x86_energy_perf_policy $(toolspkgdir)/usr/lib/linux-tools/$(abi_release)-$* + ln -s ../../$(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 -s ../../$(src_pkg_name)-tools-$(abi_release)/hv_kvp_daemon $(cloudpkgdir)/usr/lib/linux-tools/$(abi_release)-$* + ln -s ../../$(src_pkg_name)-tools-$(abi_release)/hv_vss_daemon $(cloudpkgdir)/usr/lib/linux-tools/$(abi_release)-$* + ln -s ../../$(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 -s $(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_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_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-3.13.0.orig/debian/rules.d/3-binary-indep.mk +++ linux-3.13.0/debian/rules.d/3-binary-indep.mk @@ -0,0 +1,164 @@ +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 -s $(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: $@ + + rm -rf $(builddir)/tools + install -d $(builddir)/tools + for i in *; do ln -s $(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)/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 + + dh_installinit -p$(cloudpkg) --name hv-kvp-daemon + dh_installinit -p$(cloudpkg) --name hv-vss-daemon + dh_installinit -p$(cloudpkg) --name hv-fcopy-daemon + + + +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: install-indep + @echo Debug: $@ + + dh_installchangelogs -i + dh_installdocs -i + dh_compress -i + dh_fixperms -i + dh_installdeb -i + $(lockme) dh_gencontrol -i + dh_md5sums -i + dh_builddeb -i --- linux-3.13.0.orig/debian/rules.d/4-checks.mk +++ linux-3.13.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)" "$*" "$(sharedconfdir)" "$(skipconfig)" + --- linux-3.13.0.orig/debian/rules.d/5-udebs.mk +++ linux-3.13.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 !~ /^'$(src_pkg_name)'-udebs-/) { \ + match(package, "'$(release)'-'$(abinum)'-(.*)-di", bits); \ + flavour = bits[1]; \ + } \ + (/^Architecture:/ && $$0 " " ~ / '$(arch)'/) { \ + parch=$$0; \ + } \ + (flavour != "" && parch != "") { \ + udebs[flavour] = udebs[flavour] package ", "; \ + flavour=""; parch=""; \ + } \ + END { \ + for (flavour in udebs) { \ + package="'$(src_pkg_name)'-udebs-" flavour; \ + file="debian/" package ".substvars"; \ + print("udeb:Depends=" udebs[flavour]) > file; \ + metas="'$(builddir)'/udeb-meta-packages"; \ + print(package) >metas \ + } \ + } \ + ' <$(CURDIR)/debian/control + @while read i; do \ + $(lockme) dh_gencontrol -p$$i; \ + dh_builddeb -p$$i; \ + done <$(builddir)/udeb-meta-packages --- linux-3.13.0.orig/debian/scripts/abi-check +++ linux-3.13.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-3.13.0.orig/debian/scripts/config-check +++ linux-3.13.0/debian/scripts/config-check @@ -0,0 +1,413 @@ +#!/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 $checks = "$commonconfig/enforce"; +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; + +# Predicate execution engine. +sub pred_first { + my ($rest) = @_; + my $depth = 0; + my $off; + my $char; + my $pred; + + for ($off = 0; $off <= length($rest); $off++) { + $char = substr($rest, $off, 1); + if ($char eq '(') { + $depth++; + } elsif ($char eq ')') { + $depth--; + } elsif ($depth == 0 && $char eq '&') { + last; + } elsif ($depth == 0 && $char eq '|') { + last; + } + } + if ($depth > 0) { + die "$P: $rest: missing close parenthesis ')'\n"; + } elsif ($depth < 0) { + die "$P: $rest: missing open parenthesis '('\n"; + } + + ($pred, $rest) = (substr($rest, 0, $off), substr($rest, $off + 1)); + + $pred =~ s/^\s*//; + $pred =~ s/\s*$//; + + #print "pred<$pred> rest<$rest> char<$char>\n"; + ($pred, $rest, $char); +} + +sub pred_do { + my ($pred) = @_; + my (@a) = split(' ', $pred); + my $possible; + + if ($a[0] eq 'arch') { + die "$P: $pred: malformed -- $pred \n" if ($#a < 1); + for $possible (@a[1..$#a]) { + #print " *** ARCH<$flavour ?? $possible>\n"; + return 1 if ($arch eq $possible); + } + return 0; + } elsif ($a[0] eq 'flavour') { + die "$P: $pred: malformed -- $pred \n" if ($#a < 1); + for $possible (@a[1..$#a]) { + #print " *** FLAVOUR<$flavour ?? $possible>\n"; + return 1 if ($flavour eq $possible); + } + return 0; + } elsif ($a[0] eq 'value') { + die "$P: $pred: malformed -- $pred \n" if ($#a != 2); + #print " *** CHECK<$a[1] $a[2] ?? " . $values{$a[1]} . ">\n"; + return ($values{$a[1]} eq $a[2]); + } elsif ($a[0] eq 'exists') { + die "$P: $pred: malformed -- $pred \n" if ($#a != 1); + return (defined $values{$a[1]}); + } else { + die "$P: $pred: unknown predicate\n"; + } + return 1; +} +sub pred_exec { + my ($rest) = @_; + my $pred; + my $cut = 0; + my $res; + my $sep; + + #print "pred_exec<$rest>\n"; + + ($pred, $rest, $sep) = pred_first($rest); + + # Leading ! implies inversion. + if ($pred =~ /^\s*!\s*(.*)$/) { + #print " invert<$1>\n"; + ($cut, $res) = pred_exec($1); + $res = !$res; + + # Leading / implies a CUT operation. + } elsif ($pred =~ /^\s*\/\s*(.*)$/) { + #print " cut<$1>\n"; + ($cut, $res) = pred_exec($1); + $cut = 1; + + # Recurse left for complex expressions. + } elsif ($pred =~ /^\s*\((.*)\)\s*$/) { + #print " left<$1>\n"; + ($cut, $res) = pred_exec($1); + + # Check for common syntax issues. + } elsif ($pred eq '') { + if ($sep eq '&' || $sep eq '|') { + die "$P: $pred$rest: malformed binary operator\n"; + } else { + die "$P: $pred$rest: syntax error\n"; + } + + # A predicate, execute it. + } else { + #print " DO<$pred> sep<$sep>\n"; + $res = pred_do($pred); + } + + #print " pre-return res<$res> sep<$sep>\n"; + if ($sep eq '') { + # + + # Recurse right for binary operators -- note these are lazy. + } elsif ($sep eq '&' || $sep eq '|') { + #print " right<$rest> ? sep<$sep> res<$res>\n"; + if ($rest =~ /^\s*($|\||\&)/) { + die "$P: $pred$rest: malformed binary operator\n"; + } + if ($cut == 0 && (($res && $sep eq '&') || (!$res && $sep eq '|'))) { + #print " right<$rest>\n"; + ($cut, $res) = pred_exec($rest); + } + + } else { + die "$P: $pred$rest: malformed predicate\n"; + } + #warn " return cut<$cut> res<$res> sep<$sep>\n"; + return ($cut, $res); +} + +# +# PREDICATE TESTS +# +my $test_total = 1; +my $test_good = 0; +sub pred_test { + my ($pred, $eres, $eerr) = @_; + my ($cut, $res, $err, $fail); + + $test_total++; + if ($test != 0 && $test != $test_total - 1) { + return; + } + + eval { + ($cut, $res) = pred_exec($pred); + }; + $err = $@; + chomp($err); + + $res = !!$res; + $eres = !!$eres; + + $fail = ''; + if (defined $eres && $res != $eres) { + $fail = "result missmatch, expected $eres returned $res"; + } + if (defined $eerr && $err eq '') { + $fail = "error missmatch, expected '$eerr' returned success"; + } elsif (defined $eerr && $err !~ /$eerr/) { + $fail = "error missmatch, expected '$eerr' returned '$err'"; + } elsif (!defined $eerr && $err ne '') { + $fail = "error missmatch, expected success returned '$err'"; + } + + if ($fail eq '') { + $test_good++; + } else { + print "$pred: $test_total: FAIL: $fail\n"; + } + #print "TEST<$pred> eres<$eres> eerr<$eerr> res<$res> err<$err>\n"; +} +if ($test >= 0) { + $arch = 'MYARCH'; + $flavour = 'MYFLAVOUR'; + %values = ( 'ENABLED' => 'y', 'DISABLED' => 'n' ); + + # Errors. + my $eunkn = 'unknown predicate'; + my $epred = 'malformed'; + my $eclose = 'missing close parenthesis'; + my $eopen = 'missing open parenthesis'; + my $ebinary = 'malformed binary operator'; + + # Basic predicate tests. + print "TEST: $test_total: basic predicate tests ...\n"; + + pred_test('nosuchcommand', undef, $eunkn); + pred_test('arch', undef, $epred); + pred_test('arch MYARCH', 1, undef); + pred_test('arch MYARCH NOTMYARCH', 1, undef); + pred_test('arch NOTMYARCH MYARCH', 1, undef); + pred_test('arch NOTMYARCH NOTMYARCH MYARCH', 1, undef); + pred_test('arch NOTMYARCH MYARCH NOTMYARCH', 1, undef); + pred_test('arch NOTMYARCH', 0, undef); + + pred_test('flavour', undef, $epred); + pred_test('flavour MYFLAVOUR', 1, undef); + pred_test('flavour NOTMYFLAVOUR MYFLAVOUR', 1, undef); + pred_test('flavour NOTMYFLAVOUR NOTMYFLAVOUR MYFLAVOUR', 1, undef); + pred_test('flavour NOTMYFLAVOUR MYFLAVOUR NOTMYFLAVOUR', 1, undef); + pred_test('flavour NOTMYFLAVOUR', 0, undef); + + pred_test('value', undef, $epred); + pred_test('value ENABLED', undef, $epred); + pred_test('value ENABLED ENABLED ENABLED', undef, $epred); + pred_test('value ENABLED y', 1, undef); + pred_test('value ENABLED n', 0, undef); + pred_test('value DISABLED n', 1, undef); + pred_test('value DISABLED y', 0, undef); + + pred_test('exists', undef, $epred); + pred_test('exists ENABLED ENABLED', undef, $epred); + pred_test('exists ENABLED', 1, undef); + pred_test('exists DISABLED', 1, undef); + pred_test('exists MISSING', 0, undef); + + print "TEST: $test_total: inversion tests ...\n"; + pred_test('!exists ENABLED', 0, undef); + pred_test('!exists MISSING', 1, undef); + pred_test('!!exists ENABLED', 1, undef); + pred_test('!!exists MISSING', 0, undef); + pred_test('!!!exists ENABLED', 0, undef); + pred_test('!!!exists MISSING', 1, undef); + + print "TEST: $test_total: parentheses tests ...\n"; + pred_test('(exists ENABLED)', 1, undef); + pred_test('((exists ENABLED))', 1, undef); + pred_test('(((exists ENABLED)))', 1, undef); + pred_test('(exists MISSING)', 0, undef); + pred_test('((exists MISSING))', 0, undef); + pred_test('(((exists MISSING)))', 0, undef); + + pred_test('(!exists ENABLED)', 0, undef); + pred_test('((!exists ENABLED))', 0, undef); + pred_test('(((!exists ENABLED)))', 0, undef); + pred_test('(!exists MISSING)', 1, undef); + pred_test('((!exists MISSING))', 1, undef); + pred_test('(((!exists MISSING)))', 1, undef); + + pred_test('((!(exists ENABLED)))', 0, undef); + pred_test('((!(exists MISSING)))', 1, undef); + pred_test('(!((exists ENABLED)))', 0, undef); + pred_test('(!((exists MISSING)))', 1, undef); + pred_test('!(((exists ENABLED)))', 0, undef); + pred_test('!(((exists MISSING)))', 1, undef); + pred_test('!((!(exists ENABLED)))', 1, undef); + pred_test('!((!(exists MISSING)))', 0, undef); + pred_test('!(!(!(exists ENABLED)))', 0, undef); + pred_test('!(!(!(exists MISSING)))', 1, undef); + + pred_test('(', undef, $eclose); + pred_test('()(', undef, $eclose); + pred_test('(())(', undef, $eclose); + pred_test('((()))(', undef, $eclose); + pred_test('(()', undef, $eclose); + pred_test('((())', undef, $eclose); + pred_test('(((()))', undef, $eclose); + pred_test('(()()', undef, $eclose); + pred_test('((())()', undef, $eclose); + + pred_test(')', undef, $eopen); + pred_test('())', undef, $eopen); + pred_test('(()))', undef, $eopen); + pred_test('((())))', undef, $eopen); + + print "TEST: $test_total: binary and tests ...\n"; + + pred_test('exists ENABLED &', undef, $ebinary); + pred_test('& exists ENABLED', undef, $ebinary); + pred_test('exists ENABLED & & exists ENABLED', undef, $ebinary); + + pred_test('exists MISSING & exists MISSING', 0, undef); + pred_test('exists MISSING & exists ENABLED', 0, undef); + pred_test('exists ENABLED & exists MISSING', 0, undef); + pred_test('exists ENABLED & exists ENABLED', 1, undef); + + pred_test('exists MISSING & exists MISSING & exists MISSING', 0, undef); + pred_test('exists MISSING & exists MISSING & exists ENABLED', 0, undef); + pred_test('exists MISSING & exists ENABLED & exists MISSING', 0, undef); + pred_test('exists MISSING & exists ENABLED & exists ENABLED', 0, undef); + pred_test('exists ENABLED & exists MISSING & exists MISSING', 0, undef); + pred_test('exists ENABLED & exists MISSING & exists ENABLED', 0, undef); + pred_test('exists ENABLED & exists ENABLED & exists MISSING', 0, undef); + pred_test('exists ENABLED & exists ENABLED & exists ENABLED', 1, undef); + + print "TEST: $test_total: binary or tests ...\n"; + + pred_test('exists ENABLED |', undef, $ebinary); + pred_test('| exists ENABLED', undef, $ebinary); + pred_test('exists ENABLED | | exists ENABLED', undef, $ebinary); + + pred_test('exists MISSING | exists MISSING', 0, undef); + pred_test('exists MISSING | exists ENABLED', 1, undef); + pred_test('exists ENABLED | exists MISSING', 1, undef); + pred_test('exists ENABLED | exists ENABLED', 1, undef); + + pred_test('exists MISSING | exists MISSING | exists MISSING', 0, undef); + pred_test('exists MISSING | exists MISSING | exists ENABLED', 1, undef); + pred_test('exists MISSING | exists ENABLED | exists MISSING', 1, undef); + pred_test('exists MISSING | exists ENABLED | exists ENABLED', 1, undef); + pred_test('exists ENABLED | exists MISSING | exists MISSING', 1, undef); + pred_test('exists ENABLED | exists MISSING | exists ENABLED', 1, undef); + pred_test('exists ENABLED | exists ENABLED | exists MISSING', 1, undef); + pred_test('exists ENABLED | exists ENABLED | exists ENABLED', 1, undef); + + print "TEST: $test_total: binary or/and combination tests ...\n"; + + pred_test('exists MISSING | exists MISSING & exists MISSING', 0, undef); + pred_test('exists MISSING | exists MISSING & exists ENABLED', 0, undef); + pred_test('exists MISSING | exists ENABLED & exists MISSING', 0, undef); + pred_test('exists MISSING | exists ENABLED & exists ENABLED', 1, undef); + pred_test('exists ENABLED | exists MISSING & exists MISSING', 1, undef); + pred_test('exists ENABLED | exists MISSING & exists ENABLED', 1, undef); + pred_test('exists ENABLED | exists ENABLED & exists MISSING', 1, undef); + pred_test('exists ENABLED | exists ENABLED & exists ENABLED', 1, undef); + + print "TEST: $test_total: binary and/or combination tests ...\n"; + + pred_test('exists MISSING & exists MISSING | exists MISSING', 0, undef); + pred_test('exists MISSING & exists MISSING | exists ENABLED', 0, undef); + pred_test('exists MISSING & exists ENABLED | exists MISSING', 0, undef); + pred_test('exists MISSING & exists ENABLED | exists ENABLED', 0, undef); + pred_test('exists ENABLED & exists MISSING | exists MISSING', 0, undef); + pred_test('exists ENABLED & exists MISSING | exists ENABLED', 1, undef); + pred_test('exists ENABLED & exists ENABLED | exists MISSING', 1, undef); + pred_test('exists ENABLED & exists ENABLED | exists ENABLED', 1, undef); + + print "TEST: $test_total: cut tests ...\n"; + pred_test('(arch MYARCH & exists MISSING) | exists ENABLED', 1, undef); + pred_test('(arch MYARCH &/ exists MISSING) | exists ENABLED', 0, undef); + + $test_total--; + print "TEST: $test_good/$test_total succeeded\n"; + + exit $exit_val; +} + +# 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); + +# FATAL: Check if we have an enforcement list. +my $pass = 0; +my $total = 0; +my $line = ''; +print "$P: $checks: loading checks\n"; +open(CHECKS, "<$checks") || die "$P: $checks: open failed -- $! -- aborting\n"; +while () { + /^#/ && next; + chomp; + + $line .= $_; + if ($line =~ /\\$/) { + chop($line); + $line .= " "; + next; + } + $line =~ /^\s*$/ && next; + + #print "CHECK: <$line>\n"; + $total++; + my (undef, $result) = pred_exec($line); + if (!$result) { + print "$P: FAIL: $line\n"; + $exit_val = $fail_exit; + } else { + $pass++; + } + + $line = ''; +} +close(CHECKS); + +print "$P: $pass/$total checks passed -- exit $exit_val\n"; +exit $exit_val; --- linux-3.13.0.orig/debian/scripts/control-create +++ linux-3.13.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-3.13.0.orig/debian/scripts/link-headers +++ linux-3.13.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-3.13.0.orig/debian/scripts/misc/find-obsolete-firmware +++ linux-3.13.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-3.13.0.orig/debian/scripts/misc/fw-to-ihex.sh +++ linux-3.13.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-3.13.0.orig/debian/scripts/misc/get-firmware +++ linux-3.13.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-3.13.0.orig/debian/scripts/misc/getabis +++ linux-3.13.0/debian/scripts/misc/getabis @@ -0,0 +1,135 @@ +#!/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 + +# Extract compiler source package version from e.g.: +# GCC: (Ubuntu/Linaro 4.8.2-19ubuntu1) 4.8.2 +compilers=`sed 's/^.*(.* \(.*\)).*$/\1/' $abidir/*/*.compiler | sort -u | wc -l` +if [ "$compilers" != 1 ]; then + echo "WARNING: inconsistent compiler versions detected:" 1>&2 + sort -u $abidir/*/*.compiler | sed 's/^/WARNING: /' 1>&2 +fi + +sort < $fwinfo | uniq > fwinfo.tmp +mv fwinfo.tmp $fwinfo + +rmdir $tmpdir + +# If this is running in a git repo, add the new ABI directory, remove the old +if [ -d ".git" ]; then + git add $abidir + find $DEBIAN/abi/* -maxdepth 0 -type d | grep -v $verfull | while read f; do git rm -r $f;done +fi --- linux-3.13.0.orig/debian/scripts/misc/git-ubuntu-log +++ linux-3.13.0/debian/scripts/misc/git-ubuntu-log @@ -0,0 +1,125 @@ +#!/usr/bin/python3 + +import os +import sys + +import codecs +import urllib.request +import json + +import textwrap + +sys.stdin = codecs.getreader("utf-8")(sys.stdin.detach()) +sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach()) + +entries = [] +def add_entry(entry): + if entry and 'ignore' not in entry: + if 'bugs' not in entry and 'cves' in entry: + for cve in entry['cves']: + if cve not in bugs: + bugs.append(cve) + entries.append(entry) + +# Suck up the git log output and extract the information we need. +bugs = [] +entry = None +subject_wait = False +for line in sys.stdin: + if line.startswith('commit '): + add_entry(entry) + entry = {} + subject_wait = True + + elif line.startswith('Author: '): + bits = line.strip().split(maxsplit=1) + entry['author'] = bits[1] + + elif subject_wait and line.startswith(' '): + subject_wait = False + entry['subject'] = line.strip() + + elif line.startswith(' BugLink: ') and 'launchpad.net' in line: + bits = line.strip().split(maxsplit=1) + bits = bits[1].split('/') + entry.setdefault('bugs', []).append(bits[-1]) + + # Accumulate bug numbers. + if bits[-1] not in bugs: + bugs.append(bits[-1]) + + elif line.startswith(' CVE-'): + entry.setdefault('cves', []).append(line.strip()) + + elif line.startswith(' Ignore:'): + entry['ignore'] = True + +add_entry(entry) + +entries.reverse() + +# Go through the entries and clear out authors for upstream commits. +for entry in entries: + if entry['subject'].startswith('UBUNTU:'): + entry['subject'] = entry['subject'][7:].strip() + else: + del entry['author'] + +# Lump everything without a bug at the bottom. +bugs.append('__packaging__') +bugs.append('__mainline__') + +emit_nl = False +for bug in bugs: + if bug == '__packaging__': + title = 'Miscellaneous Ubuntu changes' + elif bug == '__mainline__': + title = 'Miscellaneous upstream changes' + elif bug.startswith('CVE-'): + title = bug + else: + bug_info = None + + try: + #urllib.request.urlcleanup() + request = urllib.request.Request('https://api.launchpad.net/devel/bugs/' + bug) + request.add_header('Cache-Control', 'max-age=0') + with urllib.request.urlopen(request) as response: + data = response.read() + bug_info = json.loads(data.decode('utf-8')) + + title = bug_info['title'] + if 'description' in bug_info: + for line in bug_info['description'].split('\n'): + if line.startswith('Kernel-Description:'): + title = line.split(' ', 1)[1] + + except urllib.error.HTTPError: + title = 'INVALID or PRIVATE BUG' + + title += ' (LP###' + bug + ')' + + emit_title = True + for entry in entries: + if (bug == '__packaging__' and 'bugs' not in entry and 'cves' not in entry and 'author' in entry) or \ + (bug == '__mainline__' and 'bugs' not in entry and 'cves' not in entry and 'author' not in entry) or \ + ('bugs' in entry and bug in entry['bugs']) or \ + ('cves' in entry and bug in entry['cves']): + if emit_title: + if emit_nl: + print('') + emit_nl = True + + title_lines = textwrap.wrap(title, 76) + print(' * ' + title_lines[0].replace('LP###', 'LP: #')) + for line in title_lines[1:]: + line = line.replace('LP###', 'LP: #') + print(' ' + line) + + emit_title = False + title_lines = textwrap.wrap(entry['subject'], 76) + print(' - ' + title_lines[0]) + for line in title_lines[1:]: + line = line.replace('LP###', 'LP: #') + print(' ' + line) + --- linux-3.13.0.orig/debian/scripts/misc/insert-changes.pl +++ linux-3.13.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-3.13.0.orig/debian/scripts/misc/insert-mainline-changes +++ linux-3.13.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-3.13.0.orig/debian/scripts/misc/insert-ubuntu-changes +++ linux-3.13.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-3.13.0.orig/debian/scripts/misc/kernelconfig +++ linux-3.13.0/debian/scripts/misc/kernelconfig @@ -0,0 +1,172 @@ +#!/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" +sharedconfdir="$kerneldir/debian.master/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" "$sharedconfdir" "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-3.13.0.orig/debian/scripts/misc/retag +++ linux-3.13.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-3.13.0.orig/debian/scripts/misc/splitconfig.pl +++ linux-3.13.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-3.13.0.orig/debian/scripts/module-check +++ linux-3.13.0/debian/scripts/module-check @@ -0,0 +1,121 @@ +#!/usr/bin/perl -w + +$flavour = shift; +$prev_abidir = shift; +$abidir = shift; +$skipmodule = shift; + +print "II: Checking modules for $flavour..."; +print " prev_abidir : $prev_abidir"; + +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-3.13.0.orig/debian/scripts/module-inclusion +++ linux-3.13.0/debian/scripts/module-inclusion @@ -0,0 +1,60 @@ +#!/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 \ +# 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... +if [ "$master" -eq 1 ]; then + (cd ${ROOT}; find . ! -name "*.ko" -type f) | \ + while read f + do + mkdir -p ${NROOT}/`dirname $f` + mv ${ROOT}/$f ${NROOT}/$f + done +fi + +cat ${ILIST} |while read i +do + # + # 'find' blurts a warning if it cannot find any ko files. + # + if echo "$i" | grep '\*' > /dev/null + then + (cd ${ROOT}; eval find "${i}" -name "*.ko") |while read f + do + mkdir -p ${NROOT}/`dirname $f` + mv ${ROOT}/$f ${NROOT}/$f + done + else + if [ -f "${ROOT}/$i" ] + then + mkdir -p ${NROOT}/`dirname $i` + mv ${ROOT}/$i ${NROOT}/$i + else + echo Warning: Could not find ${ROOT}/$i + fi + fi + +done + +exit 0 --- linux-3.13.0.orig/debian/scripts/sub-flavour +++ linux-3.13.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-3.13.0.orig/debian/source/format +++ linux-3.13.0/debian/source/format @@ -0,0 +1 @@ +1.0 --- linux-3.13.0.orig/debian/source/options +++ linux-3.13.0/debian/source/options @@ -0,0 +1,3 @@ +# force "dpkg-source -I -i" behavior +diff-ignore +tar-ignore --- linux-3.13.0.orig/debian/stamps/keep-dir +++ linux-3.13.0/debian/stamps/keep-dir @@ -0,0 +1 @@ +Place holder --- linux-3.13.0.orig/debian/tests-build/README +++ linux-3.13.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-3.13.0.orig/debian/tests-build/check-aliases +++ linux-3.13.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-3.13.0.orig/debian/tests/control +++ linux-3.13.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-3.13.0.orig/debian/tests/rebuild +++ linux-3.13.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-3.13.0.orig/debian/tests/ubuntu-regression-suite +++ linux-3.13.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-3.13.0.orig/debian/tools/generic +++ linux-3.13.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-3.13.0.orig/drivers/Kconfig +++ linux-3.13.0/drivers/Kconfig @@ -170,4 +170,6 @@ source "drivers/powercap/Kconfig" +source "drivers/net/dpa/NetCommSw/Kconfig" + endmenu --- linux-3.13.0.orig/drivers/acpi/Kconfig +++ linux-3.13.0/drivers/acpi/Kconfig @@ -43,18 +43,22 @@ depends on SUSPEND || HIBERNATION default y -config ACPI_PROCFS - bool "Deprecated /proc/acpi files" +config ACPI_PROCFS_POWER + bool "Deprecated power /proc/acpi directories" depends on PROC_FS help For backwards compatibility, this option allows - deprecated /proc/acpi/ files to exist, even when - they have been replaced by functions in /sys. + deprecated power /proc/acpi/ directories to exist, even when + they have been replaced by functions in /sys. + The deprecated directories (and their replacements) include: + /proc/acpi/battery/* (/sys/class/power_supply/*) + /proc/acpi/ac_adapter/* (sys/class/power_supply/*) + This option has no effect on /proc/acpi/ directories + and functions, which do not yet exist in /sys + This option, together with the proc directories, will be + deleted in 2.6.39. - This option has no effect on /proc/acpi/ files - and functions which do not yet exist in /sys. - - Say N to delete /proc/acpi/ files that have moved to /sys/ + Say N to delete power /proc/acpi/ directories that have moved to /sys/ config ACPI_EC_DEBUGFS tristate "EC read/write access through /sys/kernel/debug/ec" --- linux-3.13.0.orig/drivers/acpi/Makefile +++ linux-3.13.0/drivers/acpi/Makefile @@ -47,6 +47,7 @@ acpi-$(CONFIG_X86) += acpi_cmos_rtc.o acpi-$(CONFIG_DEBUG_FS) += debugfs.o acpi-$(CONFIG_ACPI_NUMA) += numa.o +acpi-$(CONFIG_ACPI_PROCFS_POWER) += cm_sbs.o ifdef CONFIG_ACPI_VIDEO acpi-y += video_detect.o endif --- linux-3.13.0.orig/drivers/acpi/ac.c +++ linux-3.13.0/drivers/acpi/ac.c @@ -30,6 +30,10 @@ #include #include #include +#ifdef CONFIG_ACPI_PROCFS_POWER +#include +#include +#endif #include #include #include @@ -52,26 +56,74 @@ MODULE_DESCRIPTION("ACPI AC Adapter Driver"); MODULE_LICENSE("GPL"); + +static int acpi_ac_add(struct acpi_device *device); +static int acpi_ac_remove(struct acpi_device *device); +static void acpi_ac_notify(struct acpi_device *device, u32 event); + +static const struct acpi_device_id ac_device_ids[] = { + {"ACPI0003", 0}, + {"", 0}, +}; +MODULE_DEVICE_TABLE(acpi, ac_device_ids); + +#ifdef CONFIG_PM_SLEEP +static int acpi_ac_resume(struct device *dev); +#endif +static SIMPLE_DEV_PM_OPS(acpi_ac_pm, NULL, acpi_ac_resume); + +#ifdef CONFIG_ACPI_PROCFS_POWER +extern struct proc_dir_entry *acpi_lock_ac_dir(void); +extern void *acpi_unlock_ac_dir(struct proc_dir_entry *acpi_ac_dir); +static int acpi_ac_open_fs(struct inode *inode, struct file *file); +#endif + + static int ac_sleep_before_get_state_ms; +static struct acpi_driver acpi_ac_driver = { + .name = "ac", + .class = ACPI_AC_CLASS, + .ids = ac_device_ids, + .flags = ACPI_DRIVER_ALL_NOTIFY_EVENTS, + .ops = { + .add = acpi_ac_add, + .remove = acpi_ac_remove, + .notify = acpi_ac_notify, + }, + .drv.pm = &acpi_ac_pm, +}; + struct acpi_ac { struct power_supply charger; - struct platform_device *pdev; + struct acpi_device * device; unsigned long long state; }; #define to_acpi_ac(x) container_of(x, struct acpi_ac, charger) +#ifdef CONFIG_ACPI_PROCFS_POWER +static const struct file_operations acpi_ac_fops = { + .owner = THIS_MODULE, + .open = acpi_ac_open_fs, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; +#endif + /* -------------------------------------------------------------------------- AC Adapter Management -------------------------------------------------------------------------- */ static int acpi_ac_get_state(struct acpi_ac *ac) { - acpi_status status; - acpi_handle handle = ACPI_HANDLE(&ac->pdev->dev); + acpi_status status = AE_OK; - status = acpi_evaluate_integer(handle, "_PSR", NULL, + if (!ac) + return -EINVAL; + + status = acpi_evaluate_integer(ac->device->handle, "_PSR", NULL, &ac->state); if (ACPI_FAILURE(status)) { ACPI_EXCEPTION((AE_INFO, status, @@ -112,14 +164,90 @@ POWER_SUPPLY_PROP_ONLINE, }; +#ifdef CONFIG_ACPI_PROCFS_POWER +/* -------------------------------------------------------------------------- + FS Interface (/proc) + -------------------------------------------------------------------------- */ + +static struct proc_dir_entry *acpi_ac_dir; + +static int acpi_ac_seq_show(struct seq_file *seq, void *offset) +{ + struct acpi_ac *ac = seq->private; + + + if (!ac) + return 0; + + if (acpi_ac_get_state(ac)) { + seq_puts(seq, "ERROR: Unable to read AC Adapter state\n"); + return 0; + } + + seq_puts(seq, "state: "); + switch (ac->state) { + case ACPI_AC_STATUS_OFFLINE: + seq_puts(seq, "off-line\n"); + break; + case ACPI_AC_STATUS_ONLINE: + seq_puts(seq, "on-line\n"); + break; + default: + seq_puts(seq, "unknown\n"); + break; + } + + return 0; +} + +static int acpi_ac_open_fs(struct inode *inode, struct file *file) +{ + return single_open(file, acpi_ac_seq_show, PDE_DATA(inode)); +} + +static int acpi_ac_add_fs(struct acpi_ac *ac) +{ + struct proc_dir_entry *entry = NULL; + + printk(KERN_WARNING PREFIX "Deprecated procfs I/F for AC is loaded," + " please retry with CONFIG_ACPI_PROCFS_POWER cleared\n"); + if (!acpi_device_dir(ac->device)) { + acpi_device_dir(ac->device) = + proc_mkdir(acpi_device_bid(ac->device), acpi_ac_dir); + if (!acpi_device_dir(ac->device)) + return -ENODEV; + } + + /* 'state' [R] */ + entry = proc_create_data(ACPI_AC_FILE_STATE, + S_IRUGO, acpi_device_dir(ac->device), + &acpi_ac_fops, ac); + if (!entry) + return -ENODEV; + return 0; +} + +static int acpi_ac_remove_fs(struct acpi_ac *ac) +{ + + if (acpi_device_dir(ac->device)) { + remove_proc_entry(ACPI_AC_FILE_STATE, + acpi_device_dir(ac->device)); + remove_proc_entry(acpi_device_bid(ac->device), acpi_ac_dir); + acpi_device_dir(ac->device) = NULL; + } + + return 0; +} +#endif + /* -------------------------------------------------------------------------- Driver Model -------------------------------------------------------------------------- */ -static void acpi_ac_notify_handler(acpi_handle handle, u32 event, void *data) +static void acpi_ac_notify(struct acpi_device *device, u32 event) { - struct acpi_ac *ac = data; - struct acpi_device *adev; + struct acpi_ac *ac = acpi_driver_data(device); if (!ac) return; @@ -142,11 +270,10 @@ msleep(ac_sleep_before_get_state_ms); acpi_ac_get_state(ac); - adev = ACPI_COMPANION(&ac->pdev->dev); - acpi_bus_generate_netlink_event(adev->pnp.device_class, - dev_name(&ac->pdev->dev), - event, (u32) ac->state); - acpi_notifier_call_chain(adev, event, (u32) ac->state); + acpi_bus_generate_netlink_event(device->pnp.device_class, + dev_name(&device->dev), event, + (u32) ac->state); + acpi_notifier_call_chain(device, event, (u32) ac->state); kobject_uevent(&ac->charger.dev->kobj, KOBJ_CHANGE); } @@ -171,54 +298,53 @@ {}, }; -static int acpi_ac_probe(struct platform_device *pdev) +static int acpi_ac_add(struct acpi_device *device) { int result = 0; struct acpi_ac *ac = NULL; - struct acpi_device *adev; - if (!pdev) - return -EINVAL; - adev = ACPI_COMPANION(&pdev->dev); - if (!adev) - return -ENODEV; + if (!device) + return -EINVAL; ac = kzalloc(sizeof(struct acpi_ac), GFP_KERNEL); if (!ac) return -ENOMEM; - strcpy(acpi_device_name(adev), ACPI_AC_DEVICE_NAME); - strcpy(acpi_device_class(adev), ACPI_AC_CLASS); - ac->pdev = pdev; - platform_set_drvdata(pdev, ac); + ac->device = device; + strcpy(acpi_device_name(device), ACPI_AC_DEVICE_NAME); + strcpy(acpi_device_class(device), ACPI_AC_CLASS); + device->driver_data = ac; result = acpi_ac_get_state(ac); if (result) goto end; - ac->charger.name = acpi_device_bid(adev); + ac->charger.name = acpi_device_bid(device); +#ifdef CONFIG_ACPI_PROCFS_POWER + result = acpi_ac_add_fs(ac); + if (result) + goto end; +#endif ac->charger.type = POWER_SUPPLY_TYPE_MAINS; ac->charger.properties = ac_props; ac->charger.num_properties = ARRAY_SIZE(ac_props); ac->charger.get_property = get_ac_property; - result = power_supply_register(&pdev->dev, &ac->charger); + result = power_supply_register(&ac->device->dev, &ac->charger); if (result) goto end; - result = acpi_install_notify_handler(ACPI_HANDLE(&pdev->dev), - ACPI_ALL_NOTIFY, acpi_ac_notify_handler, ac); - if (result) { - power_supply_unregister(&ac->charger); - goto end; - } printk(KERN_INFO PREFIX "%s [%s] (%s)\n", - acpi_device_name(adev), acpi_device_bid(adev), + acpi_device_name(device), acpi_device_bid(device), ac->state ? "on-line" : "off-line"); end: - if (result) + if (result) { +#ifdef CONFIG_ACPI_PROCFS_POWER + acpi_ac_remove_fs(ac); +#endif kfree(ac); + } dmi_check_system(ac_dmi_table); return result; @@ -233,7 +359,7 @@ if (!dev) return -EINVAL; - ac = platform_get_drvdata(to_platform_device(dev)); + ac = acpi_driver_data(to_acpi_device(dev)); if (!ac) return -EINVAL; @@ -245,44 +371,29 @@ return 0; } #endif -static SIMPLE_DEV_PM_OPS(acpi_ac_pm_ops, NULL, acpi_ac_resume); -static int acpi_ac_remove(struct platform_device *pdev) +static int acpi_ac_remove(struct acpi_device *device) { - struct acpi_ac *ac; + struct acpi_ac *ac = NULL; + - if (!pdev) + if (!device || !acpi_driver_data(device)) return -EINVAL; - acpi_remove_notify_handler(ACPI_HANDLE(&pdev->dev), - ACPI_ALL_NOTIFY, acpi_ac_notify_handler); + ac = acpi_driver_data(device); - ac = platform_get_drvdata(pdev); if (ac->charger.dev) power_supply_unregister(&ac->charger); +#ifdef CONFIG_ACPI_PROCFS_POWER + acpi_ac_remove_fs(ac); +#endif + kfree(ac); return 0; } -static const struct acpi_device_id acpi_ac_match[] = { - { "ACPI0003", 0 }, - { } -}; -MODULE_DEVICE_TABLE(acpi, acpi_ac_match); - -static struct platform_driver acpi_ac_driver = { - .probe = acpi_ac_probe, - .remove = acpi_ac_remove, - .driver = { - .name = "acpi-ac", - .owner = THIS_MODULE, - .pm = &acpi_ac_pm_ops, - .acpi_match_table = ACPI_PTR(acpi_ac_match), - }, -}; - static int __init acpi_ac_init(void) { int result; @@ -290,16 +401,30 @@ if (acpi_disabled) return -ENODEV; - result = platform_driver_register(&acpi_ac_driver); - if (result < 0) +#ifdef CONFIG_ACPI_PROCFS_POWER + acpi_ac_dir = acpi_lock_ac_dir(); + if (!acpi_ac_dir) return -ENODEV; +#endif + + + result = acpi_bus_register_driver(&acpi_ac_driver); + if (result < 0) { +#ifdef CONFIG_ACPI_PROCFS_POWER + acpi_unlock_ac_dir(acpi_ac_dir); +#endif + return -ENODEV; + } return 0; } static void __exit acpi_ac_exit(void) { - platform_driver_unregister(&acpi_ac_driver); + acpi_bus_unregister_driver(&acpi_ac_driver); +#ifdef CONFIG_ACPI_PROCFS_POWER + acpi_unlock_ac_dir(acpi_ac_dir); +#endif } module_init(acpi_ac_init); module_exit(acpi_ac_exit); --- linux-3.13.0.orig/drivers/acpi/acpi_cmos_rtc.c +++ linux-3.13.0/drivers/acpi/acpi_cmos_rtc.c @@ -35,7 +35,7 @@ void *handler_context, void *region_context) { int i; - u8 *value = (u8 *)&value64; + u8 *value = (u8 *)value64; if (address > 0xff || !value64) return AE_BAD_PARAMETER; --- linux-3.13.0.orig/drivers/acpi/acpi_pad.c +++ linux-3.13.0/drivers/acpi/acpi_pad.c @@ -219,8 +219,15 @@ * borrow CPU time from this CPU and cause RT task use > 95% * CPU time. To make 'avoid starvation' work, takes a nap here. */ - if (do_sleep) + if (unlikely(do_sleep)) schedule_timeout_killable(HZ * idle_pct / 100); + + /* If an external event has set the need_resched flag, then + * we need to deal with it, or this loop will continue to + * spin without calling __mwait(). + */ + if (unlikely(need_resched())) + schedule(); } exit_round_robin(tsk_index); --- linux-3.13.0.orig/drivers/acpi/acpi_platform.c +++ linux-3.13.0/drivers/acpi/acpi_platform.c @@ -29,7 +29,6 @@ static const struct acpi_device_id acpi_platform_device_ids[] = { { "PNP0D40" }, - { "ACPI0003" }, { "VPC2004" }, { "BCM4752" }, --- linux-3.13.0.orig/drivers/acpi/acpi_processor.c +++ linux-3.13.0/drivers/acpi/acpi_processor.c @@ -400,7 +400,6 @@ goto err; pr->dev = dev; - dev->offline = pr->flags.need_hotplug_init; /* Trigger the processor driver's .probe() if present. */ if (device_attach(dev) >= 0) --- linux-3.13.0.orig/drivers/acpi/acpica/dsmethod.c +++ linux-3.13.0/drivers/acpi/acpica/dsmethod.c @@ -267,6 +267,9 @@ obj_desc->method.mutex->mutex. original_sync_level = obj_desc->method.mutex->mutex.sync_level; + + obj_desc->method.mutex->mutex.thread_id = + acpi_os_get_thread_id(); } } --- linux-3.13.0.orig/drivers/acpi/acpica/nsrepair.c +++ linux-3.13.0/drivers/acpi/acpica/nsrepair.c @@ -207,13 +207,30 @@ * this predefined name. Either one return value is expected, or none, * for both methods and other objects. * - * Exit now if there is no return object. Warning if one was expected. + * Try to fix if there was no return object. Warning if failed to fix. */ if (!return_object) { if (expected_btypes && (!(expected_btypes & ACPI_RTYPE_NONE))) { - ACPI_WARN_PREDEFINED((AE_INFO, info->full_pathname, - ACPI_WARN_ALWAYS, - "Missing expected return value")); + if (package_index != ACPI_NOT_PACKAGE_ELEMENT) { + ACPI_WARN_PREDEFINED((AE_INFO, + info->full_pathname, + ACPI_WARN_ALWAYS, + "Found unexpected NULL package element")); + + status = + acpi_ns_repair_null_element(info, + expected_btypes, + package_index, + return_object_ptr); + if (ACPI_SUCCESS(status)) { + return (AE_OK); /* Repair was successful */ + } + } else { + ACPI_WARN_PREDEFINED((AE_INFO, + info->full_pathname, + ACPI_WARN_ALWAYS, + "Missing expected return value")); + } return (AE_AML_NO_RETURN_VALUE); } --- linux-3.13.0.orig/drivers/acpi/acpica/utcopy.c +++ linux-3.13.0/drivers/acpi/acpica/utcopy.c @@ -1001,5 +1001,11 @@ status = acpi_ut_copy_simple_object(source_desc, *dest_desc); } + /* Delete the allocated object if copy failed */ + + if (ACPI_FAILURE(status)) { + acpi_ut_remove_reference(*dest_desc); + } + return_ACPI_STATUS(status); } --- linux-3.13.0.orig/drivers/acpi/acpica/utstring.c +++ linux-3.13.0/drivers/acpi/acpica/utstring.c @@ -353,7 +353,7 @@ } acpi_os_printf("\""); - for (i = 0; string[i] && (i < max_length); i++) { + for (i = 0; (i < max_length) && string[i]; i++) { /* Escape sequences */ --- linux-3.13.0.orig/drivers/acpi/acpica/utxfinit.c +++ linux-3.13.0/drivers/acpi/acpica/utxfinit.c @@ -167,10 +167,12 @@ * Obtain a permanent mapping for the FACS. This is required for the * Global Lock and the Firmware Waking Vector */ - status = acpi_tb_initialize_facs(); - if (ACPI_FAILURE(status)) { - ACPI_WARNING((AE_INFO, "Could not map the FACS table")); - return_ACPI_STATUS(status); + if (!(flags & ACPI_NO_FACS_INIT)) { + status = acpi_tb_initialize_facs(); + if (ACPI_FAILURE(status)) { + ACPI_WARNING((AE_INFO, "Could not map the FACS table")); + return_ACPI_STATUS(status); + } } #endif /* !ACPI_REDUCED_HARDWARE */ --- linux-3.13.0.orig/drivers/acpi/battery.c +++ linux-3.13.0/drivers/acpi/battery.c @@ -34,8 +34,15 @@ #include #include #include +#include #include +#ifdef CONFIG_ACPI_PROCFS_POWER +#include +#include +#include +#endif + #include #include #include @@ -67,6 +74,19 @@ module_param(cache_time, uint, 0644); MODULE_PARM_DESC(cache_time, "cache time in milliseconds"); +#ifdef CONFIG_ACPI_PROCFS_POWER +extern struct proc_dir_entry *acpi_lock_battery_dir(void); +extern void *acpi_unlock_battery_dir(struct proc_dir_entry *acpi_battery_dir); + +enum acpi_battery_files { + info_tag = 0, + state_tag, + alarm_tag, + ACPI_BATTERY_NUMFILES, +}; + +#endif + static const struct acpi_device_id battery_device_ids[] = { {"PNP0C0A", 0}, {"", 0}, @@ -302,6 +322,14 @@ POWER_SUPPLY_PROP_SERIAL_NUMBER, }; +#ifdef CONFIG_ACPI_PROCFS_POWER +inline char *acpi_battery_units(struct acpi_battery *battery) +{ + return (battery->power_unit == ACPI_BATTERY_POWER_UNIT_MA) ? + "mA" : "mW"; +} +#endif + /* -------------------------------------------------------------------------- Battery Management -------------------------------------------------------------------------- */ @@ -672,7 +700,7 @@ } } -static int acpi_battery_update(struct acpi_battery *battery) +static int acpi_battery_update(struct acpi_battery *battery, bool resume) { int result, old_present = acpi_battery_present(battery); result = acpi_battery_get_status(battery); @@ -683,6 +711,10 @@ battery->update_time = 0; return 0; } + + if (resume) + return 0; + if (!battery->update_time || old_present != acpi_battery_present(battery)) { result = acpi_battery_get_info(battery); @@ -720,6 +752,279 @@ } /* -------------------------------------------------------------------------- + FS Interface (/proc) + -------------------------------------------------------------------------- */ + +#ifdef CONFIG_ACPI_PROCFS_POWER +static struct proc_dir_entry *acpi_battery_dir; + +static int acpi_battery_print_info(struct seq_file *seq, int result) +{ + struct acpi_battery *battery = seq->private; + + if (result) + goto end; + + seq_printf(seq, "present: %s\n", + acpi_battery_present(battery) ? "yes" : "no"); + if (!acpi_battery_present(battery)) + goto end; + if (battery->design_capacity == ACPI_BATTERY_VALUE_UNKNOWN) + seq_printf(seq, "design capacity: unknown\n"); + else + seq_printf(seq, "design capacity: %d %sh\n", + battery->design_capacity, + acpi_battery_units(battery)); + + if (battery->full_charge_capacity == ACPI_BATTERY_VALUE_UNKNOWN) + seq_printf(seq, "last full capacity: unknown\n"); + else + seq_printf(seq, "last full capacity: %d %sh\n", + battery->full_charge_capacity, + acpi_battery_units(battery)); + + seq_printf(seq, "battery technology: %srechargeable\n", + (!battery->technology)?"non-":""); + + if (battery->design_voltage == ACPI_BATTERY_VALUE_UNKNOWN) + seq_printf(seq, "design voltage: unknown\n"); + else + seq_printf(seq, "design voltage: %d mV\n", + battery->design_voltage); + seq_printf(seq, "design capacity warning: %d %sh\n", + battery->design_capacity_warning, + acpi_battery_units(battery)); + seq_printf(seq, "design capacity low: %d %sh\n", + battery->design_capacity_low, + acpi_battery_units(battery)); + seq_printf(seq, "cycle count: %i\n", battery->cycle_count); + seq_printf(seq, "capacity granularity 1: %d %sh\n", + battery->capacity_granularity_1, + acpi_battery_units(battery)); + seq_printf(seq, "capacity granularity 2: %d %sh\n", + battery->capacity_granularity_2, + acpi_battery_units(battery)); + seq_printf(seq, "model number: %s\n", battery->model_number); + seq_printf(seq, "serial number: %s\n", battery->serial_number); + seq_printf(seq, "battery type: %s\n", battery->type); + seq_printf(seq, "OEM info: %s\n", battery->oem_info); + end: + if (result) + seq_printf(seq, "ERROR: Unable to read battery info\n"); + return result; +} + +static int acpi_battery_print_state(struct seq_file *seq, int result) +{ + struct acpi_battery *battery = seq->private; + + if (result) + goto end; + + seq_printf(seq, "present: %s\n", + acpi_battery_present(battery) ? "yes" : "no"); + if (!acpi_battery_present(battery)) + goto end; + + seq_printf(seq, "capacity state: %s\n", + (battery->state & 0x04) ? "critical" : "ok"); + if ((battery->state & 0x01) && (battery->state & 0x02)) + seq_printf(seq, + "charging state: charging/discharging\n"); + else if (battery->state & 0x01) + seq_printf(seq, "charging state: discharging\n"); + else if (battery->state & 0x02) + seq_printf(seq, "charging state: charging\n"); + else + seq_printf(seq, "charging state: charged\n"); + + if (battery->rate_now == ACPI_BATTERY_VALUE_UNKNOWN) + seq_printf(seq, "present rate: unknown\n"); + else + seq_printf(seq, "present rate: %d %s\n", + battery->rate_now, acpi_battery_units(battery)); + + if (battery->capacity_now == ACPI_BATTERY_VALUE_UNKNOWN) + seq_printf(seq, "remaining capacity: unknown\n"); + else + seq_printf(seq, "remaining capacity: %d %sh\n", + battery->capacity_now, acpi_battery_units(battery)); + if (battery->voltage_now == ACPI_BATTERY_VALUE_UNKNOWN) + seq_printf(seq, "present voltage: unknown\n"); + else + seq_printf(seq, "present voltage: %d mV\n", + battery->voltage_now); + end: + if (result) + seq_printf(seq, "ERROR: Unable to read battery state\n"); + + return result; +} + +static int acpi_battery_print_alarm(struct seq_file *seq, int result) +{ + struct acpi_battery *battery = seq->private; + + if (result) + goto end; + + if (!acpi_battery_present(battery)) { + seq_printf(seq, "present: no\n"); + goto end; + } + seq_printf(seq, "alarm: "); + if (!battery->alarm) + seq_printf(seq, "unsupported\n"); + else + seq_printf(seq, "%u %sh\n", battery->alarm, + acpi_battery_units(battery)); + end: + if (result) + seq_printf(seq, "ERROR: Unable to read battery alarm\n"); + return result; +} + +static ssize_t acpi_battery_write_alarm(struct file *file, + const char __user * buffer, + size_t count, loff_t * ppos) +{ + int result = 0; + char alarm_string[12] = { '\0' }; + struct seq_file *m = file->private_data; + struct acpi_battery *battery = m->private; + + if (!battery || (count > sizeof(alarm_string) - 1)) + return -EINVAL; + if (!acpi_battery_present(battery)) { + result = -ENODEV; + goto end; + } + if (copy_from_user(alarm_string, buffer, count)) { + result = -EFAULT; + goto end; + } + alarm_string[count] = '\0'; + battery->alarm = simple_strtol(alarm_string, NULL, 0); + result = acpi_battery_set_alarm(battery); + end: + if (!result) + return count; + return result; +} + +typedef int(*print_func)(struct seq_file *seq, int result); + +static print_func acpi_print_funcs[ACPI_BATTERY_NUMFILES] = { + acpi_battery_print_info, + acpi_battery_print_state, + acpi_battery_print_alarm, +}; + +static int acpi_battery_read(int fid, struct seq_file *seq) +{ + struct acpi_battery *battery = seq->private; + int result = acpi_battery_update(battery, false); + return acpi_print_funcs[fid](seq, result); +} + +#define DECLARE_FILE_FUNCTIONS(_name) \ +static int acpi_battery_read_##_name(struct seq_file *seq, void *offset) \ +{ \ + return acpi_battery_read(_name##_tag, seq); \ +} \ +static int acpi_battery_##_name##_open_fs(struct inode *inode, struct file *file) \ +{ \ + return single_open(file, acpi_battery_read_##_name, PDE_DATA(inode)); \ +} + +DECLARE_FILE_FUNCTIONS(info); +DECLARE_FILE_FUNCTIONS(state); +DECLARE_FILE_FUNCTIONS(alarm); + +#undef DECLARE_FILE_FUNCTIONS + +#define FILE_DESCRIPTION_RO(_name) \ + { \ + .name = __stringify(_name), \ + .mode = S_IRUGO, \ + .ops = { \ + .open = acpi_battery_##_name##_open_fs, \ + .read = seq_read, \ + .llseek = seq_lseek, \ + .release = single_release, \ + .owner = THIS_MODULE, \ + }, \ + } + +#define FILE_DESCRIPTION_RW(_name) \ + { \ + .name = __stringify(_name), \ + .mode = S_IFREG | S_IRUGO | S_IWUSR, \ + .ops = { \ + .open = acpi_battery_##_name##_open_fs, \ + .read = seq_read, \ + .llseek = seq_lseek, \ + .write = acpi_battery_write_##_name, \ + .release = single_release, \ + .owner = THIS_MODULE, \ + }, \ + } + +static const struct battery_file { + struct file_operations ops; + umode_t mode; + const char *name; +} acpi_battery_file[] = { + FILE_DESCRIPTION_RO(info), + FILE_DESCRIPTION_RO(state), + FILE_DESCRIPTION_RW(alarm), +}; + +#undef FILE_DESCRIPTION_RO +#undef FILE_DESCRIPTION_RW + +static int acpi_battery_add_fs(struct acpi_device *device) +{ + struct proc_dir_entry *entry = NULL; + int i; + + printk(KERN_WARNING PREFIX "Deprecated procfs I/F for battery is loaded," + " please retry with CONFIG_ACPI_PROCFS_POWER cleared\n"); + if (!acpi_device_dir(device)) { + acpi_device_dir(device) = proc_mkdir(acpi_device_bid(device), + acpi_battery_dir); + if (!acpi_device_dir(device)) + return -ENODEV; + } + + for (i = 0; i < ACPI_BATTERY_NUMFILES; ++i) { + entry = proc_create_data(acpi_battery_file[i].name, + acpi_battery_file[i].mode, + acpi_device_dir(device), + &acpi_battery_file[i].ops, + acpi_driver_data(device)); + if (!entry) + return -ENODEV; + } + return 0; +} + +static void acpi_battery_remove_fs(struct acpi_device *device) +{ + int i; + if (!acpi_device_dir(device)) + return; + for (i = 0; i < ACPI_BATTERY_NUMFILES; ++i) + remove_proc_entry(acpi_battery_file[i].name, + acpi_device_dir(device)); + + remove_proc_entry(acpi_device_bid(device), acpi_battery_dir); + acpi_device_dir(device) = NULL; +} + +#endif + +/* -------------------------------------------------------------------------- Driver Interface -------------------------------------------------------------------------- */ @@ -733,7 +1038,7 @@ old = battery->bat.dev; if (event == ACPI_BATTERY_NOTIFY_INFO) acpi_battery_refresh(battery); - acpi_battery_update(battery); + acpi_battery_update(battery, false); acpi_bus_generate_netlink_event(device->pnp.device_class, dev_name(&device->dev), event, acpi_battery_present(battery)); @@ -747,13 +1052,27 @@ { struct acpi_battery *battery = container_of(nb, struct acpi_battery, pm_nb); + int result; + switch (mode) { case PM_POST_HIBERNATION: case PM_POST_SUSPEND: - if (battery->bat.dev) { - sysfs_remove_battery(battery); - sysfs_add_battery(battery); - } + if (!acpi_battery_present(battery)) + return 0; + + if (!battery->bat.dev) { + result = acpi_battery_get_info(battery); + if (result) + return result; + + result = sysfs_add_battery(battery); + if (result) + return result; + } else + acpi_battery_refresh(battery); + + acpi_battery_init_alarm(battery); + acpi_battery_get_state(battery); break; } @@ -771,6 +1090,28 @@ {}, }; +/* + * Some machines'(E,G Lenovo Z480) ECs are not stable + * during boot up and this causes battery driver fails to be + * probed due to failure of getting battery information + * from EC sometimes. After several retries, the operation + * may work. So add retry code here and 20ms sleep between + * every retries. + */ +static int acpi_battery_update_retry(struct acpi_battery *battery) +{ + int retry, ret; + + for (retry = 5; retry; retry--) { + ret = acpi_battery_update(battery, false); + if (!ret) + break; + + msleep(20); + } + return ret; +} + static int acpi_battery_add(struct acpi_device *device) { int result = 0; @@ -789,10 +1130,21 @@ mutex_init(&battery->sysfs_lock); if (acpi_has_method(battery->device->handle, "_BIX")) set_bit(ACPI_BATTERY_XINFO_PRESENT, &battery->flags); - result = acpi_battery_update(battery); + + result = acpi_battery_update_retry(battery); if (result) goto fail; +#ifdef CONFIG_ACPI_PROCFS_POWER + result = acpi_battery_add_fs(device); +#endif + if (result) { +#ifdef CONFIG_ACPI_PROCFS_POWER + acpi_battery_remove_fs(device); +#endif + goto fail; + } + printk(KERN_INFO PREFIX "%s Slot [%s] (battery %s)\n", ACPI_BATTERY_DEVICE_NAME, acpi_device_bid(device), device->status.battery_present ? "present" : "absent"); @@ -818,6 +1170,9 @@ return -EINVAL; battery = acpi_driver_data(device); unregister_pm_notifier(&battery->pm_nb); +#ifdef CONFIG_ACPI_PROCFS_POWER + acpi_battery_remove_fs(device); +#endif sysfs_remove_battery(battery); mutex_destroy(&battery->lock); mutex_destroy(&battery->sysfs_lock); @@ -839,7 +1194,7 @@ return -EINVAL; battery->update_time = 0; - acpi_battery_update(battery); + acpi_battery_update(battery, true); return 0; } #endif @@ -866,7 +1221,19 @@ if (dmi_check_system(bat_dmi_table)) battery_bix_broken_package = 1; - acpi_bus_register_driver(&acpi_battery_driver); + +#ifdef CONFIG_ACPI_PROCFS_POWER + acpi_battery_dir = acpi_lock_battery_dir(); + if (!acpi_battery_dir) + return; +#endif + if (acpi_bus_register_driver(&acpi_battery_driver) < 0) { +#ifdef CONFIG_ACPI_PROCFS_POWER + acpi_unlock_battery_dir(acpi_battery_dir); +#endif + return; + } + return; } static int __init acpi_battery_init(void) @@ -878,6 +1245,9 @@ static void __exit acpi_battery_exit(void) { acpi_bus_unregister_driver(&acpi_battery_driver); +#ifdef CONFIG_ACPI_PROCFS_POWER + acpi_unlock_battery_dir(acpi_battery_dir); +#endif } module_init(acpi_battery_init); --- linux-3.13.0.orig/drivers/acpi/blacklist.c +++ linux-3.13.0/drivers/acpi/blacklist.c @@ -248,8 +248,8 @@ }, /* - * The following machines have broken backlight support when reporting - * the Windows 2012 OSI, so disable it until their support is fixed. + * The wireless hotkey does not work on those machines when + * returning true for _OSI("Windows 2012") */ { .callback = dmi_disable_osi_win8, @@ -261,14 +261,6 @@ }, { .callback = dmi_disable_osi_win8, - .ident = "Dell Inspiron 15R SE", - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), - DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 7520"), - }, - }, - { - .callback = dmi_disable_osi_win8, .ident = "ThinkPad Edge E530", .matches = { DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), @@ -323,6 +315,144 @@ DMI_MATCH(DMI_PRODUCT_VERSION, "2349D15"), }, }, + { + .callback = dmi_disable_osi_win8, + .ident = "Dell Inspiron 7737", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 7737"), + }, + }, + { + .callback = dmi_disable_osi_win8, + .ident = "Dell Inspiron 7537", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 7537"), + }, + }, + { + .callback = dmi_disable_osi_win8, + .ident = "Dell Inspiron 5437", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 5437"), + }, + }, + { + .callback = dmi_disable_osi_win8, + .ident = "Dell Inspiron 3437", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 3437"), + }, + }, + { + .callback = dmi_disable_osi_win8, + .ident = "Dell Vostro 3446", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "Vostro 3446"), + }, + }, + { + .callback = dmi_disable_osi_win8, + .ident = "Dell Vostro 3546", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "Vostro 3546"), + }, + }, + /* + * 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"), + }, + }, + { + .callback = dmi_disable_osi_win8, + .ident = "Dell Inspiron 5537", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 5537"), + }, + }, + /* + * The brightness hotkeys do not work on those machines when + * returning true for _OSI("Windows 2012") + */ + { + .callback = dmi_disable_osi_win8, + .ident = "HP Pavilion dv6", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), + DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion dv6 Notebook PC"), + }, + }, /* * BIOS invocation of _OSI(Linux) is almost always a BIOS bug. @@ -383,6 +513,19 @@ DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad T500"), }, }, + /* + * Without this this EEEpc exports a non working WMI interface, with + * this it exports a working "good old" eeepc_laptop interface, fixing + * both brightness control, and rfkill not working. + */ + { + .callback = dmi_enable_osi_linux, + .ident = "Asus EEE PC 1015PX", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer INC."), + DMI_MATCH(DMI_PRODUCT_NAME, "1015PX"), + }, + }, {} }; --- linux-3.13.0.orig/drivers/acpi/bus.c +++ linux-3.13.0/drivers/acpi/bus.c @@ -33,6 +33,7 @@ #include #include #include +#include #ifdef CONFIG_X86 #include #endif @@ -56,6 +57,12 @@ #ifdef CONFIG_X86 +#ifdef CONFIG_ACPI_CUSTOM_DSDT +static inline int set_copy_dsdt(const struct dmi_system_id *id) +{ + return 0; +} +#else static int set_copy_dsdt(const struct dmi_system_id *id) { printk(KERN_NOTICE "%s detected - " @@ -63,6 +70,7 @@ acpi_gbl_copy_dsdt_locally = 1; return 0; } +#endif static struct dmi_system_id dsdt_dmi_table[] __initdata = { /* @@ -576,6 +584,14 @@ goto error0; } + /* + * If the system is using ACPI then we can be reasonably + * confident that any regulators are managed by the firmware + * so tell the regulator core it has everything it needs to + * know. + */ + regulator_has_full_constraints(); + return; error0: --- linux-3.13.0.orig/drivers/acpi/button.c +++ linux-3.13.0/drivers/acpi/button.c @@ -302,6 +302,10 @@ input_sync(input); pm_wakeup_event(&device->dev, 0); + acpi_bus_generate_netlink_event( + device->pnp.device_class, + dev_name(&device->dev), + event, ++button->pushed); } break; default: --- linux-3.13.0.orig/drivers/acpi/cm_sbs.c +++ linux-3.13.0/drivers/acpi/cm_sbs.c @@ -0,0 +1,105 @@ +/* + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + * + * 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 + +#define PREFIX "ACPI: " + +ACPI_MODULE_NAME("cm_sbs"); +#define ACPI_AC_CLASS "ac_adapter" +#define ACPI_BATTERY_CLASS "battery" +#define _COMPONENT ACPI_SBS_COMPONENT +static struct proc_dir_entry *acpi_ac_dir; +static struct proc_dir_entry *acpi_battery_dir; + +static DEFINE_MUTEX(cm_sbs_mutex); + +static int lock_ac_dir_cnt; +static int lock_battery_dir_cnt; + +struct proc_dir_entry *acpi_lock_ac_dir(void) +{ + mutex_lock(&cm_sbs_mutex); + if (!acpi_ac_dir) + acpi_ac_dir = proc_mkdir(ACPI_AC_CLASS, acpi_root_dir); + if (acpi_ac_dir) { + lock_ac_dir_cnt++; + } else { + printk(KERN_ERR PREFIX + "Cannot create %s\n", ACPI_AC_CLASS); + } + mutex_unlock(&cm_sbs_mutex); + return acpi_ac_dir; +} +EXPORT_SYMBOL(acpi_lock_ac_dir); + +void acpi_unlock_ac_dir(struct proc_dir_entry *acpi_ac_dir_param) +{ + mutex_lock(&cm_sbs_mutex); + if (acpi_ac_dir_param) + lock_ac_dir_cnt--; + if (lock_ac_dir_cnt == 0 && acpi_ac_dir_param && acpi_ac_dir) { + remove_proc_entry(ACPI_AC_CLASS, acpi_root_dir); + acpi_ac_dir = NULL; + } + mutex_unlock(&cm_sbs_mutex); +} +EXPORT_SYMBOL(acpi_unlock_ac_dir); + +struct proc_dir_entry *acpi_lock_battery_dir(void) +{ + mutex_lock(&cm_sbs_mutex); + if (!acpi_battery_dir) { + acpi_battery_dir = + proc_mkdir(ACPI_BATTERY_CLASS, acpi_root_dir); + } + if (acpi_battery_dir) { + lock_battery_dir_cnt++; + } else { + printk(KERN_ERR PREFIX + "Cannot create %s\n", ACPI_BATTERY_CLASS); + } + mutex_unlock(&cm_sbs_mutex); + return acpi_battery_dir; +} +EXPORT_SYMBOL(acpi_lock_battery_dir); + +void acpi_unlock_battery_dir(struct proc_dir_entry *acpi_battery_dir_param) +{ + mutex_lock(&cm_sbs_mutex); + if (acpi_battery_dir_param) + lock_battery_dir_cnt--; + if (lock_battery_dir_cnt == 0 && acpi_battery_dir_param + && acpi_battery_dir) { + remove_proc_entry(ACPI_BATTERY_CLASS, acpi_root_dir); + acpi_battery_dir = NULL; + } + mutex_unlock(&cm_sbs_mutex); + return; +} +EXPORT_SYMBOL(acpi_unlock_battery_dir); --- linux-3.13.0.orig/drivers/acpi/device_pm.c +++ linux-3.13.0/drivers/acpi/device_pm.c @@ -857,7 +857,7 @@ return 0; target_state = acpi_target_system_state(); - wakeup = device_may_wakeup(dev); + wakeup = device_may_wakeup(dev) && acpi_device_can_wakeup(adev); error = __acpi_device_sleep_wake(adev, target_state, wakeup); if (wakeup && error) return error; --- linux-3.13.0.orig/drivers/acpi/ec.c +++ linux-3.13.0/drivers/acpi/ec.c @@ -68,6 +68,8 @@ #define ACPI_EC_DELAY 500 /* Wait 500ms max. during EC ops */ #define ACPI_EC_UDELAY_GLK 1000 /* Wait 1ms max. to get global lock */ #define ACPI_EC_MSI_UDELAY 550 /* Wait 550us for MSI EC */ +#define ACPI_EC_CLEAR_MAX 100 /* Maximum number of events to query + * when trying to clear the EC */ enum { EC_FLAGS_QUERY_PENDING, /* Query is pending */ @@ -77,6 +79,9 @@ EC_FLAGS_BLOCKED, /* Transactions are blocked */ }; +#define ACPI_EC_COMMAND_POLL 0x01 /* Available for command byte */ +#define ACPI_EC_COMMAND_COMPLETE 0x02 /* Completed last byte */ + /* ec.c is compiled in acpi namespace so this shows up as acpi.ec_delay param */ static unsigned int ec_delay __read_mostly = ACPI_EC_DELAY; module_param(ec_delay, uint, 0644); @@ -112,7 +117,7 @@ u8 ri; u8 wlen; u8 rlen; - bool done; + u8 flags; }; struct acpi_ec *boot_ec, *first_ec; @@ -121,6 +126,8 @@ static int EC_FLAGS_MSI; /* Out-of-spec MSI controller */ static int EC_FLAGS_VALIDATE_ECDT; /* ASUStec ECDTs need to be validated */ static int EC_FLAGS_SKIP_DSDT_SCAN; /* Not all BIOS survive early DSDT scan */ +static int EC_FLAGS_CLEAR_ON_RESUME; /* Needs acpi_ec_clear() on boot/resume */ +static int EC_FLAGS_QUERY_HANDSHAKE; /* Needs QR_EC issued when SCI_EVT set */ /* -------------------------------------------------------------------------- Transaction Management @@ -152,69 +159,93 @@ outb(data, ec->data_addr); } -static int ec_transaction_done(struct acpi_ec *ec) +static int ec_transaction_completed(struct acpi_ec *ec) { unsigned long flags; int ret = 0; spin_lock_irqsave(&ec->lock, flags); - if (!ec->curr || ec->curr->done) + if (ec->curr && (ec->curr->flags & ACPI_EC_COMMAND_COMPLETE)) ret = 1; spin_unlock_irqrestore(&ec->lock, flags); return ret; } -static void start_transaction(struct acpi_ec *ec) -{ - ec->curr->irq_count = ec->curr->wi = ec->curr->ri = 0; - ec->curr->done = false; - acpi_ec_write_cmd(ec, ec->curr->command); -} - -static void advance_transaction(struct acpi_ec *ec, u8 status) +static bool advance_transaction(struct acpi_ec *ec) { - unsigned long flags; struct transaction *t; + u8 status; + bool wakeup = false; - spin_lock_irqsave(&ec->lock, flags); + pr_debug("===== %s =====\n", in_interrupt() ? "IRQ" : "TASK"); + status = acpi_ec_read_status(ec); t = ec->curr; if (!t) - goto unlock; - if (t->wlen > t->wi) { - if ((status & ACPI_EC_FLAG_IBF) == 0) - acpi_ec_write_data(ec, - t->wdata[t->wi++]); - else - goto err; - } else if (t->rlen > t->ri) { - if ((status & ACPI_EC_FLAG_OBF) == 1) { - t->rdata[t->ri++] = acpi_ec_read_data(ec); - if (t->rlen == t->ri) - t->done = true; + goto err; + if (t->flags & ACPI_EC_COMMAND_POLL) { + if (t->wlen > t->wi) { + if ((status & ACPI_EC_FLAG_IBF) == 0) + acpi_ec_write_data(ec, t->wdata[t->wi++]); + else + goto err; + } else if (t->rlen > t->ri) { + if ((status & ACPI_EC_FLAG_OBF) == 1) { + t->rdata[t->ri++] = acpi_ec_read_data(ec); + if (t->rlen == t->ri) { + t->flags |= ACPI_EC_COMMAND_COMPLETE; + if (t->command == ACPI_EC_COMMAND_QUERY) + pr_debug("hardware QR_EC completion\n"); + wakeup = true; + } + } else + goto err; + } else if (t->wlen == t->wi && + (status & ACPI_EC_FLAG_IBF) == 0) { + t->flags |= ACPI_EC_COMMAND_COMPLETE; + wakeup = true; + } + return wakeup; + } else { + if (EC_FLAGS_QUERY_HANDSHAKE && + !(status & ACPI_EC_FLAG_SCI) && + (t->command == ACPI_EC_COMMAND_QUERY)) { + t->flags |= ACPI_EC_COMMAND_POLL; + t->rdata[t->ri++] = 0x00; + t->flags |= ACPI_EC_COMMAND_COMPLETE; + pr_debug("software QR_EC completion\n"); + wakeup = true; + } else if ((status & ACPI_EC_FLAG_IBF) == 0) { + acpi_ec_write_cmd(ec, t->command); + t->flags |= ACPI_EC_COMMAND_POLL; } else goto err; - } else if (t->wlen == t->wi && - (status & ACPI_EC_FLAG_IBF) == 0) - t->done = true; - goto unlock; + return wakeup; + } err: /* * If SCI bit is set, then don't think it's a false IRQ * otherwise will take a not handled IRQ as a false one. */ - if (in_interrupt() && !(status & ACPI_EC_FLAG_SCI)) - ++t->irq_count; + if (!(status & ACPI_EC_FLAG_SCI)) { + if (in_interrupt() && t) + ++t->irq_count; + } + return wakeup; +} -unlock: - spin_unlock_irqrestore(&ec->lock, flags); +static void start_transaction(struct acpi_ec *ec) +{ + ec->curr->irq_count = ec->curr->wi = ec->curr->ri = 0; + ec->curr->flags = 0; + (void)advance_transaction(ec); } -static int acpi_ec_sync_query(struct acpi_ec *ec); +static int acpi_ec_sync_query(struct acpi_ec *ec, u8 *data); static int ec_check_sci_sync(struct acpi_ec *ec, u8 state) { if (state & ACPI_EC_FLAG_SCI) { if (!test_and_set_bit(EC_FLAGS_QUERY_PENDING, &ec->flags)) - return acpi_ec_sync_query(ec); + return acpi_ec_sync_query(ec, NULL); } return 0; } @@ -230,15 +261,17 @@ /* don't sleep with disabled interrupts */ if (EC_FLAGS_MSI || irqs_disabled()) { udelay(ACPI_EC_MSI_UDELAY); - if (ec_transaction_done(ec)) + if (ec_transaction_completed(ec)) return 0; } else { if (wait_event_timeout(ec->wait, - ec_transaction_done(ec), + ec_transaction_completed(ec), msecs_to_jiffies(1))) return 0; } - advance_transaction(ec, acpi_ec_read_status(ec)); + spin_lock_irqsave(&ec->lock, flags); + (void)advance_transaction(ec); + spin_unlock_irqrestore(&ec->lock, flags); } while (time_before(jiffies, delay)); pr_debug("controller reset, restart transaction\n"); spin_lock_irqsave(&ec->lock, flags); @@ -270,23 +303,6 @@ return ret; } -static int ec_check_ibf0(struct acpi_ec *ec) -{ - u8 status = acpi_ec_read_status(ec); - return (status & ACPI_EC_FLAG_IBF) == 0; -} - -static int ec_wait_ibf0(struct acpi_ec *ec) -{ - unsigned long delay = jiffies + msecs_to_jiffies(ec_delay); - /* interrupt wait manually if GPE mode is not active */ - while (time_before(jiffies, delay)) - if (wait_event_timeout(ec->wait, ec_check_ibf0(ec), - msecs_to_jiffies(1))) - return 0; - return -ETIME; -} - static int acpi_ec_transaction(struct acpi_ec *ec, struct transaction *t) { int status; @@ -307,12 +323,6 @@ goto unlock; } } - if (ec_wait_ibf0(ec)) { - pr_err("input buffer is not empty, " - "aborting transaction\n"); - status = -ETIME; - goto end; - } pr_debug("transaction start (cmd=0x%02x, addr=0x%02x)\n", t->command, t->wdata ? t->wdata[0] : 0); /* disable GPE during transaction if storm is detected */ @@ -336,7 +346,6 @@ set_bit(EC_FLAGS_GPE_STORM, &ec->flags); } pr_debug("transaction end\n"); -end: if (ec->global_lock) acpi_release_global_lock(glk); unlock: @@ -466,6 +475,27 @@ EXPORT_SYMBOL(ec_get_handle); +/* + * Process _Q events that might have accumulated in the EC. + * Run with locked ec mutex. + */ +static void acpi_ec_clear(struct acpi_ec *ec) +{ + int i, status; + u8 value = 0; + + for (i = 0; i < ACPI_EC_CLEAR_MAX; i++) { + status = acpi_ec_sync_query(ec, &value); + if (status || !value) + break; + } + + if (unlikely(i == ACPI_EC_CLEAR_MAX)) + pr_warn("Warning: Maximum of %d stale EC events cleared\n", i); + else + pr_info("%d stale EC events cleared\n", i); +} + void acpi_ec_block_transactions(void) { struct acpi_ec *ec = first_ec; @@ -489,6 +519,10 @@ mutex_lock(&ec->mutex); /* Allow transactions to be carried out again */ clear_bit(EC_FLAGS_BLOCKED, &ec->flags); + + if (EC_FLAGS_CLEAR_ON_RESUME) + acpi_ec_clear(ec); + mutex_unlock(&ec->mutex); } @@ -578,13 +612,18 @@ kfree(handler); } -static int acpi_ec_sync_query(struct acpi_ec *ec) +static int acpi_ec_sync_query(struct acpi_ec *ec, u8 *data) { u8 value = 0; int status; struct acpi_ec_query_handler *handler, *copy; - if ((status = acpi_ec_query_unlocked(ec, &value))) + + status = acpi_ec_query_unlocked(ec, &value); + if (data) + *data = value; + if (status) return status; + list_for_each_entry(handler, &ec->list, node) { if (value == handler->query_bit) { /* have custom handler for this bit */ @@ -608,7 +647,7 @@ if (!ec) return; mutex_lock(&ec->mutex); - acpi_ec_sync_query(ec); + acpi_ec_sync_query(ec, NULL); mutex_unlock(&ec->mutex); } @@ -627,17 +666,14 @@ static u32 acpi_ec_gpe_handler(acpi_handle gpe_device, u32 gpe_number, void *data) { + unsigned long flags; struct acpi_ec *ec = data; - u8 status = acpi_ec_read_status(ec); - - pr_debug("~~~> interrupt, status:0x%02x\n", status); - advance_transaction(ec, status); - if (ec_transaction_done(ec) && - (acpi_ec_read_status(ec) & ACPI_EC_FLAG_IBF) == 0) { + spin_lock_irqsave(&ec->lock, flags); + if (advance_transaction(ec)) wake_up(&ec->wait); - ec_check_sci(ec, acpi_ec_read_status(ec)); - } + spin_unlock_irqrestore(&ec->lock, flags); + ec_check_sci(ec, acpi_ec_read_status(ec)); return ACPI_INTERRUPT_HANDLED | ACPI_REENABLE_GPE; } @@ -847,6 +883,13 @@ /* EC is fully operational, allow queries */ clear_bit(EC_FLAGS_QUERY_PENDING, &ec->flags); + + /* Clear stale _Q events if hardware might require that */ + if (EC_FLAGS_CLEAR_ON_RESUME) { + mutex_lock(&ec->mutex); + acpi_ec_clear(ec); + mutex_unlock(&ec->mutex); + } return ret; } @@ -948,6 +991,42 @@ return 0; } +/* + * Acer EC firmware refuses to respond QR_EC when SCI_EVT is not set, for + * which case, we complete the QR_EC without issuing it to the firmware. + * https://bugzilla.kernel.org/show_bug.cgi?id=86211 + */ +static int ec_flag_query_handshake(const struct dmi_system_id *id) +{ + pr_debug("Detected the EC firmware requiring QR_EC issued when SCI_EVT set\n"); + EC_FLAGS_QUERY_HANDSHAKE = 1; + return 0; +} + +/* + * On some hardware it is necessary to clear events accumulated by the EC during + * sleep. These ECs stop reporting GPEs until they are manually polled, if too + * many events are accumulated. (e.g. Samsung Series 5/9 notebooks) + * + * https://bugzilla.kernel.org/show_bug.cgi?id=44161 + * + * Ideally, the EC should also be instructed NOT to accumulate events during + * sleep (which Windows seems to do somehow), but the interface to control this + * behaviour is not known at this time. + * + * Models known to be affected are Samsung 530Uxx/535Uxx/540Uxx/550Pxx/900Xxx, + * however it is very likely that other Samsung models are affected. + * + * On systems which don't accumulate _Q events during sleep, this extra check + * should be harmless. + */ +static int ec_clear_on_resume(const struct dmi_system_id *id) +{ + pr_debug("Detected system needing EC poll on resume.\n"); + EC_FLAGS_CLEAR_ON_RESUME = 1; + return 0; +} + static struct dmi_system_id ec_dmi_table[] __initdata = { { ec_skip_dsdt_scan, "Compal JFL92", { @@ -991,6 +1070,12 @@ ec_validate_ecdt, "ASUS hardware", { DMI_MATCH(DMI_SYS_VENDOR, "ASUSTek Computer Inc."), DMI_MATCH(DMI_PRODUCT_NAME, "L4R"),}, NULL}, + { + ec_clear_on_resume, "Samsung hardware", { + DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD.")}, NULL}, + { + ec_flag_query_handshake, "Acer hardware", { + DMI_MATCH(DMI_SYS_VENDOR, "Acer"), }, NULL}, {}, }; --- linux-3.13.0.orig/drivers/acpi/osl.c +++ linux-3.13.0/drivers/acpi/osl.c @@ -87,6 +87,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 @@ -208,7 +209,7 @@ return 0; } -device_initcall(acpi_reserve_resources); +fs_initcall_sync(acpi_reserve_resources); void acpi_os_printf(const char *fmt, ...) { @@ -818,17 +819,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; } --- linux-3.13.0.orig/drivers/acpi/pci_irq.c +++ linux-3.13.0/drivers/acpi/pci_irq.c @@ -432,6 +432,7 @@ pin_name(pin)); } + kfree(entry); return 0; } --- linux-3.13.0.orig/drivers/acpi/pci_root.c +++ linux-3.13.0/drivers/acpi/pci_root.c @@ -418,8 +418,7 @@ } EXPORT_SYMBOL(acpi_pci_osc_control_set); -static void negotiate_os_control(struct acpi_pci_root *root, int *no_aspm, - int *clear_aspm) +static void negotiate_os_control(struct acpi_pci_root *root, int *no_aspm) { u32 support, control, requested; acpi_status status; @@ -477,10 +476,12 @@ decode_osc_control(root, "OS now controls", control); if (acpi_gbl_FADT.boot_flags & ACPI_FADT_NO_ASPM) { /* - * We have ASPM control, but the FADT indicates - * that it's unsupported. Clear it. + * We have ASPM control, but the FADT indicates that + * it's unsupported. Leave existing configuration + * intact and prevent the OS from touching it. */ - *clear_aspm = 1; + dev_info(&device->dev, "FADT indicates ASPM is unsupported, using BIOS configuration\n"); + *no_aspm = 1; } } else { decode_osc_control(root, "OS requested", requested); @@ -507,7 +508,7 @@ int result; struct acpi_pci_root *root; acpi_handle handle = device->handle; - int no_aspm = 0, clear_aspm = 0; + int no_aspm = 0; root = kzalloc(sizeof(struct acpi_pci_root), GFP_KERNEL); if (!root) @@ -560,7 +561,7 @@ root->mcfg_addr = acpi_pci_root_get_mcfg_addr(handle); - negotiate_os_control(root, &no_aspm, &clear_aspm); + negotiate_os_control(root, &no_aspm); /* * TBD: Need PCI interface for enumeration/configuration of roots. @@ -583,10 +584,6 @@ goto end; } - if (clear_aspm) { - dev_info(&device->dev, "Disabling ASPM (FADT indicates it is unsupported)\n"); - pcie_clear_aspm(root->bus); - } if (no_aspm) pcie_no_aspm(); --- linux-3.13.0.orig/drivers/acpi/processor_idle.c +++ linux-3.13.0/drivers/acpi/processor_idle.c @@ -973,7 +973,7 @@ return -EINVAL; drv->safe_state_index = -1; - for (i = 0; i < CPUIDLE_STATE_MAX; i++) { + for (i = CPUIDLE_DRIVER_STATE_START; i < CPUIDLE_STATE_MAX; i++) { drv->states[i].name[0] = '\0'; drv->states[i].desc[0] = '\0'; } @@ -1089,9 +1089,9 @@ if (pr->id == 0 && cpuidle_get_driver() == &acpi_idle_driver) { - cpuidle_pause_and_lock(); /* Protect against cpu-hotplug */ get_online_cpus(); + cpuidle_pause_and_lock(); /* Disable all cpuidle devices */ for_each_online_cpu(cpu) { @@ -1118,8 +1118,8 @@ cpuidle_enable_device(dev); } } - put_online_cpus(); cpuidle_resume_and_unlock(); + put_online_cpus(); } return 0; --- linux-3.13.0.orig/drivers/acpi/processor_throttling.c +++ linux-3.13.0/drivers/acpi/processor_throttling.c @@ -59,6 +59,12 @@ int target_state; /* target T-state */ }; +struct acpi_processor_throttling_arg { + struct acpi_processor *pr; + int target_state; + bool force; +}; + #define THROTTLING_PRECHANGE (1) #define THROTTLING_POSTCHANGE (2) @@ -1063,16 +1069,24 @@ return 0; } +static long acpi_processor_throttling_fn(void *data) +{ + struct acpi_processor_throttling_arg *arg = data; + struct acpi_processor *pr = arg->pr; + + return pr->throttling.acpi_processor_set_throttling(pr, + arg->target_state, arg->force); +} + int acpi_processor_set_throttling(struct acpi_processor *pr, int state, bool force) { - cpumask_var_t saved_mask; int ret = 0; unsigned int i; struct acpi_processor *match_pr; struct acpi_processor_throttling *p_throttling; + struct acpi_processor_throttling_arg arg; struct throttling_tstate t_state; - cpumask_var_t online_throttling_cpus; if (!pr) return -EINVAL; @@ -1083,14 +1097,6 @@ if ((state < 0) || (state > (pr->throttling.state_count - 1))) return -EINVAL; - if (!alloc_cpumask_var(&saved_mask, GFP_KERNEL)) - return -ENOMEM; - - if (!alloc_cpumask_var(&online_throttling_cpus, GFP_KERNEL)) { - free_cpumask_var(saved_mask); - return -ENOMEM; - } - if (cpu_is_offline(pr->id)) { /* * the cpu pointed by pr->id is offline. Unnecessary to change @@ -1099,17 +1105,15 @@ return -ENODEV; } - cpumask_copy(saved_mask, ¤t->cpus_allowed); t_state.target_state = state; p_throttling = &(pr->throttling); - cpumask_and(online_throttling_cpus, cpu_online_mask, - p_throttling->shared_cpu_map); + /* * The throttling notifier will be called for every * affected cpu in order to get one proper T-state. * The notifier event is THROTTLING_PRECHANGE. */ - for_each_cpu(i, online_throttling_cpus) { + for_each_cpu_and(i, cpu_online_mask, p_throttling->shared_cpu_map) { t_state.cpu = i; acpi_processor_throttling_notifier(THROTTLING_PRECHANGE, &t_state); @@ -1121,21 +1125,18 @@ * it can be called only for the cpu pointed by pr. */ if (p_throttling->shared_type == DOMAIN_COORD_TYPE_SW_ANY) { - /* FIXME: use work_on_cpu() */ - if (set_cpus_allowed_ptr(current, cpumask_of(pr->id))) { - /* Can't migrate to the pr->id CPU. Exit */ - ret = -ENODEV; - goto exit; - } - ret = p_throttling->acpi_processor_set_throttling(pr, - t_state.target_state, force); + arg.pr = pr; + arg.target_state = state; + arg.force = force; + ret = work_on_cpu(pr->id, acpi_processor_throttling_fn, &arg); } else { /* * When the T-state coordination is SW_ALL or HW_ALL, * it is necessary to set T-state for every affected * cpus. */ - for_each_cpu(i, online_throttling_cpus) { + for_each_cpu_and(i, cpu_online_mask, + p_throttling->shared_cpu_map) { match_pr = per_cpu(processors, i); /* * If the pointer is invalid, we will report the @@ -1156,13 +1157,12 @@ "on CPU %d\n", i)); continue; } - t_state.cpu = i; - /* FIXME: use work_on_cpu() */ - if (set_cpus_allowed_ptr(current, cpumask_of(i))) - continue; - ret = match_pr->throttling. - acpi_processor_set_throttling( - match_pr, t_state.target_state, force); + + arg.pr = match_pr; + arg.target_state = state; + arg.force = force; + ret = work_on_cpu(pr->id, acpi_processor_throttling_fn, + &arg); } } /* @@ -1171,17 +1171,12 @@ * affected cpu to update the T-states. * The notifier event is THROTTLING_POSTCHANGE */ - for_each_cpu(i, online_throttling_cpus) { + for_each_cpu_and(i, cpu_online_mask, p_throttling->shared_cpu_map) { t_state.cpu = i; acpi_processor_throttling_notifier(THROTTLING_POSTCHANGE, &t_state); } - /* restore the previous state */ - /* FIXME: use work_on_cpu() */ - set_cpus_allowed_ptr(current, saved_mask); -exit: - free_cpumask_var(online_throttling_cpus); - free_cpumask_var(saved_mask); + return ret; } --- linux-3.13.0.orig/drivers/acpi/resource.c +++ linux-3.13.0/drivers/acpi/resource.c @@ -77,18 +77,24 @@ switch (ares->type) { case ACPI_RESOURCE_TYPE_MEMORY24: memory24 = &ares->data.memory24; + if (!memory24->address_length) + return false; acpi_dev_get_memresource(res, memory24->minimum, memory24->address_length, memory24->write_protect); break; case ACPI_RESOURCE_TYPE_MEMORY32: memory32 = &ares->data.memory32; + if (!memory32->address_length) + return false; acpi_dev_get_memresource(res, memory32->minimum, memory32->address_length, memory32->write_protect); break; case ACPI_RESOURCE_TYPE_FIXED_MEMORY32: fixed_memory32 = &ares->data.fixed_memory32; + if (!fixed_memory32->address_length) + return false; acpi_dev_get_memresource(res, fixed_memory32->address, fixed_memory32->address_length, fixed_memory32->write_protect); @@ -144,12 +150,16 @@ switch (ares->type) { case ACPI_RESOURCE_TYPE_IO: io = &ares->data.io; + if (!io->address_length) + return false; acpi_dev_get_ioresource(res, io->minimum, io->address_length, io->io_decode); break; case ACPI_RESOURCE_TYPE_FIXED_IO: fixed_io = &ares->data.fixed_io; + if (!fixed_io->address_length) + return false; acpi_dev_get_ioresource(res, fixed_io->address, fixed_io->address_length, ACPI_DECODE_10); --- linux-3.13.0.orig/drivers/acpi/sleep.c +++ linux-3.13.0/drivers/acpi/sleep.c @@ -75,6 +75,17 @@ return 0; } +static bool acpi_sleep_state_supported(u8 sleep_state) +{ + acpi_status status; + u8 type_a, type_b; + + status = acpi_get_sleep_type_data(sleep_state, &type_a, &type_b); + return ACPI_SUCCESS(status) && (!acpi_gbl_reduced_hardware + || (acpi_gbl_FADT.sleep_control.address + && acpi_gbl_FADT.sleep_status.address)); +} + #ifdef CONFIG_ACPI_SLEEP static u32 acpi_target_sleep_state = ACPI_STATE_S0; @@ -608,15 +619,9 @@ { int i; - for (i = ACPI_STATE_S1; i < ACPI_STATE_S4; i++) { - acpi_status status; - u8 type_a, type_b; - - status = acpi_get_sleep_type_data(i, &type_a, &type_b); - if (ACPI_SUCCESS(status)) { + for (i = ACPI_STATE_S1; i < ACPI_STATE_S4; i++) + if (acpi_sleep_state_supported(i)) sleep_states[i] = 1; - } - } suspend_set_ops(old_suspend_ordering ? &acpi_suspend_ops_old : &acpi_suspend_ops); @@ -747,11 +752,7 @@ static void acpi_sleep_hibernate_setup(void) { - acpi_status status; - u8 type_a, type_b; - - status = acpi_get_sleep_type_data(ACPI_STATE_S4, &type_a, &type_b); - if (ACPI_FAILURE(status)) + if (!acpi_sleep_state_supported(ACPI_STATE_S4)) return; hibernation_set_ops(old_suspend_ordering ? @@ -800,8 +801,6 @@ int __init acpi_sleep_init(void) { - acpi_status status; - u8 type_a, type_b; char supported[ACPI_S_STATE_COUNT * 3 + 1]; char *pos = supported; int i; @@ -816,8 +815,7 @@ acpi_sleep_suspend_setup(); acpi_sleep_hibernate_setup(); - status = acpi_get_sleep_type_data(ACPI_STATE_S5, &type_a, &type_b); - if (ACPI_SUCCESS(status)) { + if (acpi_sleep_state_supported(ACPI_STATE_S5)) { sleep_states[ACPI_STATE_S5] = 1; pm_power_off_prepare = acpi_power_off_prepare; pm_power_off = acpi_power_off; --- linux-3.13.0.orig/drivers/acpi/video.c +++ linux-3.13.0/drivers/acpi/video.c @@ -82,11 +82,12 @@ module_param(allow_duplicates, bool, 0644); /* - * For Windows 8 systems: if set ture and the GPU driver has - * registered a backlight interface, skip registering ACPI video's. + * For Windows 8 systems: used to decide if video module + * should skip registering backlight interface of its own. */ -static bool use_native_backlight = false; -module_param(use_native_backlight, bool, 0644); +static int use_native_backlight_param = -1; +module_param_named(use_native_backlight, use_native_backlight_param, int, 0444); +static bool use_native_backlight_dmi = false; static int register_count; static struct mutex video_list_lock; @@ -232,9 +233,17 @@ static int acpi_video_switch_brightness(struct acpi_video_device *device, int event); +static bool acpi_video_use_native_backlight(void) +{ + if (use_native_backlight_param != -1) + return use_native_backlight_param; + else + return use_native_backlight_dmi; +} + static bool acpi_video_verify_backlight_support(void) { - if (acpi_osi_is_win8() && use_native_backlight && + if (acpi_osi_is_win8() && acpi_video_use_native_backlight() && backlight_device_registered(BACKLIGHT_RAW)) return false; return acpi_video_backlight_support(); @@ -399,6 +408,12 @@ return 0; } +static int __init video_set_use_native_backlight(const struct dmi_system_id *d) +{ + use_native_backlight_dmi = true; + return 0; +} + static struct dmi_system_id video_dmi_table[] __initdata = { /* * Broken _BQC workaround http://bugzilla.kernel.org/show_bug.cgi?id=13121 @@ -443,6 +458,160 @@ DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 7720"), }, }, + { + .callback = video_set_use_native_backlight, + .ident = "ThinkPad T430s", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad T430s"), + }, + }, + { + .callback = video_set_use_native_backlight, + .ident = "ThinkPad X230", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad X230"), + }, + }, + { + .callback = video_set_use_native_backlight, + .ident = "ThinkPad X1 Carbon", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad X1 Carbon"), + }, + }, + { + .callback = video_set_use_native_backlight, + .ident = "Lenovo Yoga 13", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo IdeaPad Yoga 13"), + }, + }, + { + .callback = video_set_use_native_backlight, + .ident = "Dell Inspiron 7520", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_VERSION, "Inspiron 7520"), + }, + }, + { + .callback = video_set_use_native_backlight, + .ident = "Dell Inspiron 5547", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 5547"), + }, + }, + { + .callback = video_set_use_native_backlight, + .ident = "Dell Inspiron 5447", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 5447"), + }, + }, + { + .callback = video_set_use_native_backlight, + .ident = "Dell Inspiron 5721", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 5721"), + }, + }, + { + .callback = video_set_use_native_backlight, + .ident = "Dell Inspiron 3521", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 3521"), + }, + }, + { + .callback = video_set_use_native_backlight, + .ident = "Acer Aspire 5733Z", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Acer"), + DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5733Z"), + }, + }, + { + .callback = video_set_use_native_backlight, + .ident = "Acer Aspire V5-431", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Acer"), + DMI_MATCH(DMI_PRODUCT_NAME, "Aspire V5-431"), + }, + }, + { + .callback = video_set_use_native_backlight, + .ident = "HP ProBook 4340s", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), + DMI_MATCH(DMI_PRODUCT_VERSION, "HP ProBook 4340s"), + }, + }, + { + .callback = video_set_use_native_backlight, + .ident = "HP ProBook 2013 models", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), + DMI_MATCH(DMI_PRODUCT_NAME, "HP ProBook "), + DMI_MATCH(DMI_PRODUCT_NAME, " G1"), + }, + }, + { + .callback = video_set_use_native_backlight, + .ident = "HP EliteBook 2013 models", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), + DMI_MATCH(DMI_PRODUCT_NAME, "HP EliteBook "), + DMI_MATCH(DMI_PRODUCT_NAME, " G1"), + }, + }, + { + .callback = video_set_use_native_backlight, + .ident = "HP ZBook 14", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), + DMI_MATCH(DMI_PRODUCT_NAME, "HP ZBook 14"), + }, + }, + { + .callback = video_set_use_native_backlight, + .ident = "HP ZBook 15", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), + DMI_MATCH(DMI_PRODUCT_NAME, "HP ZBook 15"), + }, + }, + { + .callback = video_set_use_native_backlight, + .ident = "HP ZBook 17", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), + DMI_MATCH(DMI_PRODUCT_NAME, "HP ZBook 17"), + }, + }, + { + .callback = video_set_use_native_backlight, + .ident = "HP EliteBook 8780w", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), + DMI_MATCH(DMI_PRODUCT_NAME, "HP EliteBook 8780w"), + }, + }, + { + .callback = video_set_use_native_backlight, + .ident = "HP ProBook 6570b", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), + DMI_MATCH(DMI_PRODUCT_NAME, "HP ProBook 6570b"), + }, + }, {} }; @@ -686,6 +855,7 @@ union acpi_object *o; struct acpi_video_device_brightness *br = NULL; int result = -EINVAL; + u32 value; if (!ACPI_SUCCESS(acpi_video_device_lcd_query_levels(device, &obj))) { ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Could not query available " @@ -716,7 +886,12 @@ printk(KERN_ERR PREFIX "Invalid data\n"); continue; } - br->levels[count] = (u32) o->integer.value; + value = (u32) o->integer.value; + /* Skip duplicate entries */ + if (count > 2 && br->levels[count - 1] == value) + continue; + + br->levels[count] = value; if (br->levels[count] > max_level) max_level = br->levels[count]; @@ -1922,6 +2097,17 @@ static int __init acpi_video_init(void) { + /* + * Let the module load even if ACPI is disabled (e.g. due to + * a broken BIOS) so that i915.ko can still be loaded on such + * old systems without an AcpiOpRegion. + * + * acpi_video_register() will report -ENODEV later as well due + * to acpi_disabled when i915.ko tries to register itself afterwards. + */ + if (acpi_disabled) + return 0; + dmi_check_system(video_dmi_table); if (intel_opregion_present()) --- linux-3.13.0.orig/drivers/acpi/video_detect.c +++ linux-3.13.0/drivers/acpi/video_detect.c @@ -176,6 +176,14 @@ DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo IdeaPad Yoga 13"), }, }, + { + .callback = video_detect_force_vendor, + .ident = "Dell Inspiron 5737", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 5737"), + }, + }, { }, }; --- linux-3.13.0.orig/drivers/ata/Kconfig +++ linux-3.13.0/drivers/ata/Kconfig @@ -106,6 +106,13 @@ If unsure, say N. +config AHCI_XGENE + tristate "APM X-Gene 6.0Gbps AHCI SATA host controller support" + depends on SATA_AHCI_PLATFORM && (ARM64 || COMPILE_TEST) + select PHY_XGENE + help + This option enables support for APM X-Gene SoC SATA host controller. + config SATA_FSL tristate "Freescale 3.0Gbps SATA support" depends on FSL_SOC --- linux-3.13.0.orig/drivers/ata/Makefile +++ linux-3.13.0/drivers/ata/Makefile @@ -11,6 +11,7 @@ obj-$(CONFIG_SATA_DWC) += sata_dwc_460ex.o obj-$(CONFIG_SATA_HIGHBANK) += sata_highbank.o libahci.o obj-$(CONFIG_AHCI_IMX) += ahci_imx.o +obj-$(CONFIG_AHCI_XGENE) += ahci_xgene.o # SFF w/ custom DMA obj-$(CONFIG_PDC_ADMA) += pdc_adma.o --- linux-3.13.0.orig/drivers/ata/ahci.c +++ linux-3.13.0/drivers/ata/ahci.c @@ -61,10 +61,13 @@ /* board IDs by feature in alphabetical order */ board_ahci, board_ahci_ign_iferr, + board_ahci_nomsi, + board_ahci_noncq, board_ahci_nosntf, board_ahci_yes_fbs, /* board IDs for specific chipsets in alphabetical order */ + board_ahci_avn, board_ahci_mcp65, board_ahci_mcp77, board_ahci_mcp89, @@ -83,6 +86,8 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent); static int ahci_vt8251_hardreset(struct ata_link *link, unsigned int *class, unsigned long deadline); +static int ahci_avn_hardreset(struct ata_link *link, unsigned int *class, + unsigned long deadline); static int ahci_p5wdh_hardreset(struct ata_link *link, unsigned int *class, unsigned long deadline); #ifdef CONFIG_PM @@ -104,6 +109,11 @@ .hardreset = ahci_p5wdh_hardreset, }; +static struct ata_port_operations ahci_avn_ops = { + .inherits = &ahci_ops, + .hardreset = ahci_avn_hardreset, +}; + static const struct ata_port_info ahci_port_info[] = { /* by features */ [board_ahci] = { @@ -119,6 +129,20 @@ .udma_mask = ATA_UDMA6, .port_ops = &ahci_ops, }, + [board_ahci_nomsi] = { + AHCI_HFLAGS (AHCI_HFLAG_NO_MSI), + .flags = AHCI_FLAG_COMMON, + .pio_mask = ATA_PIO4, + .udma_mask = ATA_UDMA6, + .port_ops = &ahci_ops, + }, + [board_ahci_noncq] = { + AHCI_HFLAGS (AHCI_HFLAG_NO_NCQ), + .flags = AHCI_FLAG_COMMON, + .pio_mask = ATA_PIO4, + .udma_mask = ATA_UDMA6, + .port_ops = &ahci_ops, + }, [board_ahci_nosntf] = { AHCI_HFLAGS (AHCI_HFLAG_NO_SNTF), .flags = AHCI_FLAG_COMMON, @@ -134,6 +158,12 @@ .port_ops = &ahci_ops, }, /* by chipsets */ + [board_ahci_avn] = { + .flags = AHCI_FLAG_COMMON, + .pio_mask = ATA_PIO4, + .udma_mask = ATA_UDMA6, + .port_ops = &ahci_avn_ops, + }, [board_ahci_mcp65] = { AHCI_HFLAGS (AHCI_HFLAG_NO_FPDMA_AA | AHCI_HFLAG_NO_PMP | AHCI_HFLAG_YES_NCQ), @@ -231,6 +261,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 */ @@ -273,14 +323,14 @@ { PCI_VDEVICE(INTEL, 0x1f27), board_ahci }, /* Avoton RAID */ { PCI_VDEVICE(INTEL, 0x1f2e), board_ahci }, /* Avoton RAID */ { PCI_VDEVICE(INTEL, 0x1f2f), board_ahci }, /* Avoton RAID */ - { PCI_VDEVICE(INTEL, 0x1f32), board_ahci }, /* Avoton AHCI */ - { PCI_VDEVICE(INTEL, 0x1f33), board_ahci }, /* Avoton AHCI */ - { PCI_VDEVICE(INTEL, 0x1f34), board_ahci }, /* Avoton RAID */ - { PCI_VDEVICE(INTEL, 0x1f35), board_ahci }, /* Avoton RAID */ - { PCI_VDEVICE(INTEL, 0x1f36), board_ahci }, /* Avoton RAID */ - { PCI_VDEVICE(INTEL, 0x1f37), board_ahci }, /* Avoton RAID */ - { PCI_VDEVICE(INTEL, 0x1f3e), board_ahci }, /* Avoton RAID */ - { PCI_VDEVICE(INTEL, 0x1f3f), board_ahci }, /* Avoton RAID */ + { PCI_VDEVICE(INTEL, 0x1f32), board_ahci_avn }, /* Avoton AHCI */ + { PCI_VDEVICE(INTEL, 0x1f33), board_ahci_avn }, /* Avoton AHCI */ + { PCI_VDEVICE(INTEL, 0x1f34), board_ahci_avn }, /* Avoton RAID */ + { PCI_VDEVICE(INTEL, 0x1f35), board_ahci_avn }, /* Avoton RAID */ + { PCI_VDEVICE(INTEL, 0x1f36), board_ahci_avn }, /* Avoton RAID */ + { PCI_VDEVICE(INTEL, 0x1f37), board_ahci_avn }, /* Avoton RAID */ + { PCI_VDEVICE(INTEL, 0x1f3e), board_ahci_avn }, /* Avoton RAID */ + { PCI_VDEVICE(INTEL, 0x1f3f), board_ahci_avn }, /* Avoton RAID */ { PCI_VDEVICE(INTEL, 0x2823), board_ahci }, /* Wellsburg RAID */ { PCI_VDEVICE(INTEL, 0x2827), board_ahci }, /* Wellsburg RAID */ { PCI_VDEVICE(INTEL, 0x8d02), board_ahci }, /* Wellsburg AHCI */ @@ -296,6 +346,22 @@ { PCI_VDEVICE(INTEL, 0x9c85), board_ahci }, /* Wildcat Point-LP RAID */ { PCI_VDEVICE(INTEL, 0x9c87), board_ahci }, /* Wildcat Point-LP RAID */ { PCI_VDEVICE(INTEL, 0x9c8f), board_ahci }, /* Wildcat Point-LP RAID */ + { PCI_VDEVICE(INTEL, 0x8c82), board_ahci }, /* 9 Series AHCI */ + { PCI_VDEVICE(INTEL, 0x8c83), board_ahci }, /* 9 Series AHCI */ + { PCI_VDEVICE(INTEL, 0x8c84), board_ahci }, /* 9 Series RAID */ + { PCI_VDEVICE(INTEL, 0x8c85), board_ahci }, /* 9 Series RAID */ + { PCI_VDEVICE(INTEL, 0x8c86), board_ahci }, /* 9 Series RAID */ + { PCI_VDEVICE(INTEL, 0x8c87), board_ahci }, /* 9 Series RAID */ + { PCI_VDEVICE(INTEL, 0x8c8e), board_ahci }, /* 9 Series RAID */ + { PCI_VDEVICE(INTEL, 0x8c8f), board_ahci }, /* 9 Series RAID */ + { PCI_VDEVICE(INTEL, 0x9d03), board_ahci }, /* Sunrise Point-LP AHCI */ + { PCI_VDEVICE(INTEL, 0x9d05), board_ahci }, /* Sunrise Point-LP RAID */ + { PCI_VDEVICE(INTEL, 0x9d07), board_ahci }, /* Sunrise Point-LP RAID */ + { PCI_VDEVICE(INTEL, 0xa103), board_ahci }, /* Sunrise Point-H AHCI */ + { PCI_VDEVICE(INTEL, 0xa103), board_ahci }, /* Sunrise Point-H RAID */ + { 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 */ /* 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, @@ -433,16 +499,23 @@ { PCI_DEVICE(PCI_VENDOR_ID_MARVELL_EXT, 0x917a), .driver_data = board_ahci_yes_fbs }, /* 88se9172 */ { PCI_DEVICE(PCI_VENDOR_ID_MARVELL_EXT, 0x9172), + .driver_data = board_ahci_yes_fbs }, /* 88se9182 */ + { PCI_DEVICE(PCI_VENDOR_ID_MARVELL_EXT, 0x9182), .driver_data = board_ahci_yes_fbs }, /* 88se9172 */ { PCI_DEVICE(PCI_VENDOR_ID_MARVELL_EXT, 0x9192), .driver_data = board_ahci_yes_fbs }, /* 88se9172 on some Gigabyte */ + { PCI_DEVICE(PCI_VENDOR_ID_MARVELL_EXT, 0x91a0), + .driver_data = board_ahci_yes_fbs }, { PCI_DEVICE(PCI_VENDOR_ID_MARVELL_EXT, 0x91a3), .driver_data = board_ahci_yes_fbs }, { PCI_DEVICE(PCI_VENDOR_ID_MARVELL_EXT, 0x9230), .driver_data = board_ahci_yes_fbs }, + { PCI_DEVICE(PCI_VENDOR_ID_TTI, 0x0642), + .driver_data = board_ahci_yes_fbs }, /* Promise */ { PCI_VDEVICE(PROMISE, 0x3f20), board_ahci }, /* PDC42819 */ + { PCI_VDEVICE(PROMISE, 0x3781), board_ahci }, /* FastTrak TX8660 ahci-mode */ /* Asmedia */ { PCI_VDEVICE(ASMEDIA, 0x0601), board_ahci }, /* ASM1060 */ @@ -450,6 +523,13 @@ { PCI_VDEVICE(ASMEDIA, 0x0611), board_ahci }, /* ASM1061 */ { PCI_VDEVICE(ASMEDIA, 0x0612), board_ahci }, /* ASM1062 */ + /* + * Samsung SSDs found on some macbooks. NCQ times out if MSI is + * enabled. https://bugzilla.kernel.org/show_bug.cgi?id=60731 + */ + { PCI_VDEVICE(SAMSUNG, 0x1600), board_ahci_nomsi }, + { PCI_VDEVICE(SAMSUNG, 0xa800), board_ahci_nomsi }, + /* Enmotus */ { PCI_DEVICE(0x1c44, 0x8000), board_ahci }, @@ -562,6 +642,7 @@ unsigned long deadline) { struct ata_port *ap = link->ap; + struct ahci_host_priv *hpriv = ap->host->private_data; bool online; int rc; @@ -572,7 +653,7 @@ rc = sata_link_hardreset(link, sata_ehc_deb_timing(&link->eh_context), deadline, &online, NULL); - ahci_start_engine(ap); + hpriv->start_engine(ap); DPRINTK("EXIT, rc=%d, class=%u\n", rc, *class); @@ -587,6 +668,7 @@ { struct ata_port *ap = link->ap; struct ahci_port_priv *pp = ap->private_data; + struct ahci_host_priv *hpriv = ap->host->private_data; u8 *d2h_fis = pp->rx_fis + RX_FIS_D2H_REG; struct ata_taskfile tf; bool online; @@ -602,7 +684,7 @@ rc = sata_link_hardreset(link, sata_ehc_deb_timing(&link->eh_context), deadline, &online, NULL); - ahci_start_engine(ap); + hpriv->start_engine(ap); /* The pseudo configuration device on SIMG4726 attached to * ASUS P5W-DH Deluxe doesn't send signature FIS after @@ -626,6 +708,79 @@ return rc; } +/* + * ahci_avn_hardreset - attempt more aggressive recovery of Avoton ports. + * + * It has been observed with some SSDs that the timing of events in the + * link synchronization phase can leave the port in a state that can not + * be recovered by a SATA-hard-reset alone. The failing signature is + * SStatus.DET stuck at 1 ("Device presence detected but Phy + * communication not established"). It was found that unloading and + * reloading the driver when this problem occurs allows the drive + * connection to be recovered (DET advanced to 0x3). The critical + * component of reloading the driver is that the port state machines are + * reset by bouncing "port enable" in the AHCI PCS configuration + * register. So, reproduce that effect by bouncing a port whenever we + * see DET==1 after a reset. + */ +static int ahci_avn_hardreset(struct ata_link *link, unsigned int *class, + unsigned long deadline) +{ + const unsigned long *timing = sata_ehc_deb_timing(&link->eh_context); + struct ata_port *ap = link->ap; + struct ahci_port_priv *pp = ap->private_data; + struct ahci_host_priv *hpriv = ap->host->private_data; + u8 *d2h_fis = pp->rx_fis + RX_FIS_D2H_REG; + unsigned long tmo = deadline - jiffies; + struct ata_taskfile tf; + bool online; + int rc, i; + + DPRINTK("ENTER\n"); + + ahci_stop_engine(ap); + + for (i = 0; i < 2; i++) { + u16 val; + u32 sstatus; + int port = ap->port_no; + struct ata_host *host = ap->host; + struct pci_dev *pdev = to_pci_dev(host->dev); + + /* clear D2H reception area to properly wait for D2H FIS */ + ata_tf_init(link->device, &tf); + tf.command = ATA_BUSY; + ata_tf_to_fis(&tf, 0, 0, d2h_fis); + + rc = sata_link_hardreset(link, timing, deadline, &online, + ahci_check_ready); + + if (sata_scr_read(link, SCR_STATUS, &sstatus) != 0 || + (sstatus & 0xf) != 1) + break; + + ata_link_printk(link, KERN_INFO, "avn bounce port%d\n", + port); + + pci_read_config_word(pdev, 0x92, &val); + val &= ~(1 << port); + pci_write_config_word(pdev, 0x92, val); + ata_msleep(ap, 1000); + val |= 1 << port; + pci_write_config_word(pdev, 0x92, val); + deadline += tmo; + } + + hpriv->start_engine(ap); + + if (online) + *class = ahci_dev_classify(ap); + + DPRINTK("EXIT, rc=%d, class=%u\n", rc, *class); + return rc; +} + + #ifdef CONFIG_PM static int ahci_pci_device_suspend(struct pci_dev *pdev, pm_message_t mesg) { @@ -1155,18 +1310,18 @@ return rc; for (i = 0; i < host->n_ports; i++) { - const char* desc; struct ahci_port_priv *pp = host->ports[i]->private_data; - /* pp is NULL for dummy ports */ - if (pp) - desc = pp->irq_desc; - else - desc = dev_driver_string(host->dev); + /* Do not receive interrupts sent by dummy ports */ + if (!pp) { + disable_irq(irq + i); + continue; + } - rc = devm_request_threaded_irq(host->dev, - irq + i, ahci_hw_interrupt, ahci_thread_fn, IRQF_SHARED, - desc, host->ports[i]); + rc = devm_request_threaded_irq(host->dev, irq + i, + ahci_hw_interrupt, + ahci_thread_fn, IRQF_SHARED, + pp->irq_desc, host->ports[i]); if (rc) goto out_free_irqs; } --- linux-3.13.0.orig/drivers/ata/ahci.h +++ linux-3.13.0/drivers/ata/ahci.h @@ -37,6 +37,8 @@ #include #include +#include +#include /* Enclosure Management Control */ #define EM_CTRL_MSG_TYPE 0x000f0000 @@ -51,6 +53,7 @@ enum { AHCI_MAX_PORTS = 32, + AHCI_MAX_CLKS = 3, AHCI_MAX_SG = 168, /* hardware max is 64K */ AHCI_DMA_BOUNDARY = 0xffffffff, AHCI_MAX_CMDS = 32, @@ -321,8 +324,17 @@ u32 em_loc; /* enclosure management location */ u32 em_buf_sz; /* EM buffer size in byte */ u32 em_msg_type; /* EM message type */ - struct clk *clk; /* Only for platforms supporting clk */ + bool got_runtime_pm; /* Did we do pm_runtime_get? */ + struct clk *clks[AHCI_MAX_CLKS]; /* Optional */ + struct regulator *target_pwr; /* Optional */ + struct phy *phy; /* If platform uses phy */ void *plat_data; /* Other platform data */ + /* + * Optional ahci_start_engine override, if not set this gets set to the + * default ahci_start_engine during ahci_save_initial_config, this can + * be overridden anytime before the host is activated. + */ + void (*start_engine)(struct ata_port *ap); }; extern int ahci_ignore_sss; @@ -356,8 +368,11 @@ int pmp, unsigned long deadline, int (*check_ready)(struct ata_link *link)); +unsigned int ahci_qc_issue(struct ata_queued_cmd *qc); int ahci_stop_engine(struct ata_port *ap); +void ahci_start_fis_rx(struct ata_port *ap); void ahci_start_engine(struct ata_port *ap); +int ahci_restart_engine(struct ata_port *ap); int ahci_check_ready(struct ata_link *link); int ahci_kick_engine(struct ata_port *ap); int ahci_port_resume(struct ata_port *ap); --- linux-3.13.0.orig/drivers/ata/ahci_platform.c +++ linux-3.13.0/drivers/ata/ahci_platform.c @@ -23,6 +23,8 @@ #include #include #include +#include +#include #include "ahci.h" static void ahci_host_stop(struct ata_host *host); @@ -87,78 +89,284 @@ AHCI_SHT("ahci_platform"), }; -static int ahci_probe(struct platform_device *pdev) +/** + * ahci_platform_enable_clks - Enable platform clocks + * @hpriv: host private area to store config values + * + * This function enables all the clks found in hpriv->clks, starting at + * index 0. If any clk fails to enable it disables all the clks already + * enabled in reverse order, and then returns an error. + * + * RETURNS: + * 0 on success otherwise a negative error code + */ +int ahci_platform_enable_clks(struct ahci_host_priv *hpriv) +{ + int c, rc; + + for (c = 0; c < AHCI_MAX_CLKS && hpriv->clks[c]; c++) { + rc = clk_prepare_enable(hpriv->clks[c]); + if (rc) + goto disable_unprepare_clk; + } + return 0; + +disable_unprepare_clk: + while (--c >= 0) + clk_disable_unprepare(hpriv->clks[c]); + return rc; +} +EXPORT_SYMBOL_GPL(ahci_platform_enable_clks); + +/** + * ahci_platform_disable_clks - Disable platform clocks + * @hpriv: host private area to store config values + * + * This function disables all the clks found in hpriv->clks, in reverse + * order of ahci_platform_enable_clks (starting at the end of the array). + */ +void ahci_platform_disable_clks(struct ahci_host_priv *hpriv) +{ + int c; + + for (c = AHCI_MAX_CLKS - 1; c >= 0; c--) + if (hpriv->clks[c]) + clk_disable_unprepare(hpriv->clks[c]); +} +EXPORT_SYMBOL_GPL(ahci_platform_disable_clks); + +/** + * ahci_platform_enable_resources - Enable platform resources + * @hpriv: host private area to store config values + * + * This function enables all ahci_platform managed resources in the + * following order: + * 1) Regulator + * 2) Clocks (through ahci_platform_enable_clks) + * 3) Phy + * + * If resource enabling fails at any point the previous enabled resources + * are disabled in reverse order. + * + * RETURNS: + * 0 on success otherwise a negative error code + */ +int ahci_platform_enable_resources(struct ahci_host_priv *hpriv) { - struct device *dev = &pdev->dev; - struct ahci_platform_data *pdata = dev_get_platdata(dev); - const struct platform_device_id *id = platform_get_device_id(pdev); - struct ata_port_info pi = ahci_port_info[id ? id->driver_data : 0]; - const struct ata_port_info *ppi[] = { &pi, NULL }; - struct ahci_host_priv *hpriv; - struct ata_host *host; - struct resource *mem; - int irq; - int n_ports; - int i; int rc; - mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); - if (!mem) { - dev_err(dev, "no mmio space\n"); - return -EINVAL; + if (hpriv->target_pwr) { + rc = regulator_enable(hpriv->target_pwr); + if (rc) + return rc; } - irq = platform_get_irq(pdev, 0); - if (irq <= 0) { - dev_err(dev, "no irq\n"); - return -EINVAL; + rc = ahci_platform_enable_clks(hpriv); + if (rc) + goto disable_regulator; + + if (hpriv->phy) { + rc = phy_init(hpriv->phy); + if (rc) + goto disable_clks; + + rc = phy_power_on(hpriv->phy); + if (rc) { + phy_exit(hpriv->phy); + goto disable_clks; + } } - if (pdata && pdata->ata_port_info) - pi = *pdata->ata_port_info; + return 0; - hpriv = devm_kzalloc(dev, sizeof(*hpriv), GFP_KERNEL); - if (!hpriv) { - dev_err(dev, "can't alloc ahci_host_priv\n"); - return -ENOMEM; +disable_clks: + ahci_platform_disable_clks(hpriv); + +disable_regulator: + if (hpriv->target_pwr) + regulator_disable(hpriv->target_pwr); + return rc; +} +EXPORT_SYMBOL_GPL(ahci_platform_enable_resources); + +/** + * ahci_platform_disable_resources - Disable platform resources + * @hpriv: host private area to store config values + * + * This function disables all ahci_platform managed resources in the + * following order: + * 1) Phy + * 2) Clocks (through ahci_platform_disable_clks) + * 3) Regulator + */ +void ahci_platform_disable_resources(struct ahci_host_priv *hpriv) +{ + if (hpriv->phy) { + phy_power_off(hpriv->phy); + phy_exit(hpriv->phy); } - hpriv->flags |= (unsigned long)pi.private_data; + ahci_platform_disable_clks(hpriv); + + if (hpriv->target_pwr) + regulator_disable(hpriv->target_pwr); +} +EXPORT_SYMBOL_GPL(ahci_platform_disable_resources); + +static void ahci_platform_put_resources(struct device *dev, void *res) +{ + struct ahci_host_priv *hpriv = res; + int c; + + if (hpriv->got_runtime_pm) { + pm_runtime_put_sync(dev); + pm_runtime_disable(dev); + } + + for (c = 0; c < AHCI_MAX_CLKS && hpriv->clks[c]; c++) + clk_put(hpriv->clks[c]); +} - hpriv->mmio = devm_ioremap(dev, mem->start, resource_size(mem)); +/** + * ahci_platform_get_resources - Get platform resources + * @pdev: platform device to get resources for + * + * This function allocates an ahci_host_priv struct, and gets the following + * resources, storing a reference to them inside the returned struct: + * + * 1) mmio registers (IORESOURCE_MEM 0, mandatory) + * 2) regulator for controlling the targets power (optional) + * 3) 0 - AHCI_MAX_CLKS clocks, as specified in the devs devicetree node, + * or for non devicetree enabled platforms a single clock + * 4) phy (optional) + * + * RETURNS: + * The allocated ahci_host_priv on success, otherwise an ERR_PTR value + */ +struct ahci_host_priv *ahci_platform_get_resources( + struct platform_device *pdev) +{ + struct device *dev = &pdev->dev; + struct ahci_host_priv *hpriv; + struct clk *clk; + int i, rc = -ENOMEM; + + if (!devres_open_group(dev, NULL, GFP_KERNEL)) + return ERR_PTR(-ENOMEM); + + hpriv = devres_alloc(ahci_platform_put_resources, sizeof(*hpriv), + GFP_KERNEL); + if (!hpriv) + goto err_out; + + devres_add(dev, hpriv); + + hpriv->mmio = devm_ioremap_resource(dev, + platform_get_resource(pdev, IORESOURCE_MEM, 0)); if (!hpriv->mmio) { - dev_err(dev, "can't map %pR\n", mem); - return -ENOMEM; + dev_err(dev, "no mmio space\n"); + goto err_out; } - hpriv->clk = clk_get(dev, NULL); - if (IS_ERR(hpriv->clk)) { - dev_err(dev, "can't get clock\n"); - } else { - rc = clk_prepare_enable(hpriv->clk); - if (rc) { - dev_err(dev, "clock prepare enable failed"); - goto free_clk; + hpriv->target_pwr = devm_regulator_get_optional(dev, "target"); + if (IS_ERR(hpriv->target_pwr)) { + rc = PTR_ERR(hpriv->target_pwr); + if (rc == -EPROBE_DEFER) + goto err_out; + hpriv->target_pwr = NULL; + } + + for (i = 0; i < AHCI_MAX_CLKS; i++) { + /* + * For now we must use clk_get(dev, NULL) for the first clock, + * because some platforms (da850, spear13xx) are not yet + * converted to use devicetree for clocks. For new platforms + * this is equivalent to of_clk_get(dev->of_node, 0). + */ + if (i == 0) + clk = clk_get(dev, NULL); + else + clk = of_clk_get(dev->of_node, i); + + if (IS_ERR(clk)) { + rc = PTR_ERR(clk); + if (rc == -EPROBE_DEFER) + goto err_out; + break; } + hpriv->clks[i] = clk; } - /* - * Some platforms might need to prepare for mmio region access, - * which could be done in the following init call. So, the mmio - * region shouldn't be accessed before init (if provided) has - * returned successfully. - */ - if (pdata && pdata->init) { - rc = pdata->init(dev, hpriv->mmio); - if (rc) - goto disable_unprepare_clk; + hpriv->phy = devm_phy_get(dev, "sata-phy"); + if (IS_ERR(hpriv->phy)) { + rc = PTR_ERR(hpriv->phy); + switch (rc) { + case -ENODEV: + case -ENOSYS: + /* continue normally */ + hpriv->phy = NULL; + break; + + case -EPROBE_DEFER: + goto err_out; + + default: + dev_err(dev, "couldn't get sata-phy\n"); + goto err_out; + } } - ahci_save_initial_config(dev, hpriv, - pdata ? pdata->force_port_map : 0, - pdata ? pdata->mask_port_map : 0); + pm_runtime_enable(dev); + pm_runtime_get_sync(dev); + hpriv->got_runtime_pm = true; + + devres_remove_group(dev, NULL); + return hpriv; + +err_out: + devres_release_group(dev, NULL); + return ERR_PTR(rc); +} +EXPORT_SYMBOL_GPL(ahci_platform_get_resources); + +/** + * ahci_platform_init_host - Bring up an ahci-platform host + * @pdev: platform device pointer for the host + * @hpriv: ahci-host private data for the host + * @pi_template: template for the ata_port_info to use + * @force_port_map: param passed to ahci_save_initial_config + * @mask_port_map: param passed to ahci_save_initial_config + * + * This function does all the usual steps needed to bring up an + * ahci-platform host, note any necessary resources (ie clks, phy, etc.) + * must be initialized / enabled before calling this. + * + * RETURNS: + * 0 on success otherwise a negative error code + */ +int ahci_platform_init_host(struct platform_device *pdev, + struct ahci_host_priv *hpriv, + const struct ata_port_info *pi_template, + unsigned int force_port_map, + unsigned int mask_port_map) +{ + struct device *dev = &pdev->dev; + struct ata_port_info pi = *pi_template; + const struct ata_port_info *ppi[] = { &pi, NULL }; + struct ata_host *host; + int i, irq, n_ports, rc; + + irq = platform_get_irq(pdev, 0); + if (irq <= 0) { + dev_err(dev, "no irq\n"); + return -EINVAL; + } /* prepare host */ + hpriv->flags |= (unsigned long)pi.private_data; + + ahci_save_initial_config(dev, hpriv, force_port_map, mask_port_map); + if (hpriv->cap & HOST_CAP_NCQ) pi.flags |= ATA_FLAG_NCQ; @@ -175,10 +383,8 @@ n_ports = max(ahci_nr_ports(hpriv->cap), fls(hpriv->port_map)); host = ata_host_alloc_pinfo(dev, ppi, n_ports); - if (!host) { - rc = -ENOMEM; - goto pdata_exit; - } + if (!host) + return -ENOMEM; host->private_data = hpriv; @@ -193,7 +399,8 @@ for (i = 0; i < host->n_ports; i++) { struct ata_port *ap = host->ports[i]; - ata_port_desc(ap, "mmio %pR", mem); + ata_port_desc(ap, "mmio %pR", + platform_get_resource(pdev, IORESOURCE_MEM, 0)); ata_port_desc(ap, "port 0x%x", 0x100 + ap->port_no * 0x80); /* set enclosure management message type */ @@ -207,13 +414,53 @@ rc = ahci_reset_controller(host); if (rc) - goto pdata_exit; + return rc; ahci_init_controller(host); ahci_print_info(host, "platform"); - rc = ata_host_activate(host, irq, ahci_interrupt, IRQF_SHARED, - &ahci_platform_sht); + return ata_host_activate(host, irq, ahci_interrupt, IRQF_SHARED, + &ahci_platform_sht); +} +EXPORT_SYMBOL_GPL(ahci_platform_init_host); + +static int ahci_probe(struct platform_device *pdev) +{ + struct device *dev = &pdev->dev; + struct ahci_platform_data *pdata = dev_get_platdata(dev); + const struct platform_device_id *id = platform_get_device_id(pdev); + const struct ata_port_info *pi_template; + struct ahci_host_priv *hpriv; + int rc; + + hpriv = ahci_platform_get_resources(pdev); + if (IS_ERR(hpriv)) + return PTR_ERR(hpriv); + + rc = ahci_platform_enable_resources(hpriv); + if (rc) + return rc; + + /* + * Some platforms might need to prepare for mmio region access, + * which could be done in the following init call. So, the mmio + * region shouldn't be accessed before init (if provided) has + * returned successfully. + */ + if (pdata && pdata->init) { + rc = pdata->init(dev, hpriv->mmio); + if (rc) + goto disable_resources; + } + + if (pdata && pdata->ata_port_info) + pi_template = pdata->ata_port_info; + else + pi_template = &ahci_port_info[id ? id->driver_data : 0]; + + rc = ahci_platform_init_host(pdev, hpriv, pi_template, + pdata ? pdata->force_port_map : 0, + pdata ? pdata->mask_port_map : 0); if (rc) goto pdata_exit; @@ -221,12 +468,8 @@ pdata_exit: if (pdata && pdata->exit) pdata->exit(dev); -disable_unprepare_clk: - if (!IS_ERR(hpriv->clk)) - clk_disable_unprepare(hpriv->clk); -free_clk: - if (!IS_ERR(hpriv->clk)) - clk_put(hpriv->clk); +disable_resources: + ahci_platform_disable_resources(hpriv); return rc; } @@ -239,21 +482,27 @@ if (pdata && pdata->exit) pdata->exit(dev); - if (!IS_ERR(hpriv->clk)) { - clk_disable_unprepare(hpriv->clk); - clk_put(hpriv->clk); - } + ahci_platform_disable_resources(hpriv); } #ifdef CONFIG_PM_SLEEP -static int ahci_suspend(struct device *dev) +/** + * ahci_platform_suspend_host - Suspend an ahci-platform host + * @dev: device pointer for the host + * + * This function does all the usual steps needed to suspend an + * ahci-platform host, note any necessary resources (ie clks, phy, etc.) + * must be disabled after calling this. + * + * RETURNS: + * 0 on success otherwise a negative error code + */ +int ahci_platform_suspend_host(struct device *dev) { - struct ahci_platform_data *pdata = dev_get_platdata(dev); struct ata_host *host = dev_get_drvdata(dev); struct ahci_host_priv *hpriv = host->private_data; void __iomem *mmio = hpriv->mmio; u32 ctl; - int rc; if (hpriv->flags & AHCI_HFLAG_NO_SUSPEND) { dev_err(dev, "firmware update required for suspend/resume\n"); @@ -270,61 +519,118 @@ writel(ctl, mmio + HOST_CTL); readl(mmio + HOST_CTL); /* flush */ - rc = ata_host_suspend(host, PMSG_SUSPEND); + return ata_host_suspend(host, PMSG_SUSPEND); +} +EXPORT_SYMBOL_GPL(ahci_platform_suspend_host); + +/** + * ahci_platform_resume_host - Resume an ahci-platform host + * @dev: device pointer for the host + * + * This function does all the usual steps needed to resume an ahci-platform + * host, note any necessary resources (ie clks, phy, etc.) must be + * initialized / enabled before calling this. + * + * RETURNS: + * 0 on success otherwise a negative error code + */ +int ahci_platform_resume_host(struct device *dev) +{ + struct ata_host *host = dev_get_drvdata(dev); + int rc; + + if (dev->power.power_state.event == PM_EVENT_SUSPEND) { + rc = ahci_reset_controller(host); + if (rc) + return rc; + + ahci_init_controller(host); + } + + ata_host_resume(host); + + return 0; +} +EXPORT_SYMBOL_GPL(ahci_platform_resume_host); + +/** + * ahci_platform_suspend - Suspend an ahci-platform device + * @dev: the platform device to suspend + * + * This function suspends the host associated with the device, followed by + * disabling all the resources of the device. + * + * RETURNS: + * 0 on success otherwise a negative error code + */ +int ahci_platform_suspend(struct device *dev) +{ + struct ahci_platform_data *pdata = dev_get_platdata(dev); + struct ata_host *host = dev_get_drvdata(dev); + struct ahci_host_priv *hpriv = host->private_data; + int rc; + + rc = ahci_platform_suspend_host(dev); if (rc) return rc; if (pdata && pdata->suspend) return pdata->suspend(dev); - if (!IS_ERR(hpriv->clk)) - clk_disable_unprepare(hpriv->clk); + ahci_platform_disable_resources(hpriv); return 0; } +EXPORT_SYMBOL_GPL(ahci_platform_suspend); -static int ahci_resume(struct device *dev) +/** + * ahci_platform_resume - Resume an ahci-platform device + * @dev: the platform device to resume + * + * This function enables all the resources of the device followed by + * resuming the host associated with the device. + * + * RETURNS: + * 0 on success otherwise a negative error code + */ +int ahci_platform_resume(struct device *dev) { struct ahci_platform_data *pdata = dev_get_platdata(dev); struct ata_host *host = dev_get_drvdata(dev); struct ahci_host_priv *hpriv = host->private_data; int rc; - if (!IS_ERR(hpriv->clk)) { - rc = clk_prepare_enable(hpriv->clk); - if (rc) { - dev_err(dev, "clock prepare enable failed"); - return rc; - } - } + rc = ahci_platform_enable_resources(hpriv); + if (rc) + return rc; if (pdata && pdata->resume) { rc = pdata->resume(dev); if (rc) - goto disable_unprepare_clk; + goto disable_resources; } - if (dev->power.power_state.event == PM_EVENT_SUSPEND) { - rc = ahci_reset_controller(host); - if (rc) - goto disable_unprepare_clk; - - ahci_init_controller(host); - } + rc = ahci_platform_resume_host(dev); + if (rc) + goto disable_resources; - ata_host_resume(host); + /* We resumed so update PM runtime state */ + pm_runtime_disable(dev); + pm_runtime_set_active(dev); + pm_runtime_enable(dev); return 0; -disable_unprepare_clk: - if (!IS_ERR(hpriv->clk)) - clk_disable_unprepare(hpriv->clk); +disable_resources: + ahci_platform_disable_resources(hpriv); return rc; } +EXPORT_SYMBOL_GPL(ahci_platform_resume); #endif -static SIMPLE_DEV_PM_OPS(ahci_pm_ops, ahci_suspend, ahci_resume); +static SIMPLE_DEV_PM_OPS(ahci_pm_ops, ahci_platform_suspend, + ahci_platform_resume); static const struct of_device_id ahci_of_match[] = { { .compatible = "snps,spear-ahci", }, --- linux-3.13.0.orig/drivers/ata/ahci_xgene.c +++ linux-3.13.0/drivers/ata/ahci_xgene.c @@ -0,0 +1,555 @@ +/* + * AppliedMicro X-Gene SoC SATA Host Controller Driver + * + * Copyright (c) 2014, Applied Micro Circuits Corporation + * Author: Loc Ho + * Tuan Phan + * Suman Tripathi + * + * 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 . + * + * NOTE: PM support is not currently available. + * + */ +#include +#include +#include +#include +#include +#include +#include "ahci.h" + +/* Max # of disk per a controller */ +#define MAX_AHCI_CHN_PERCTR 2 + +/* MUX CSR */ +#define SATA_ENET_CONFIG_REG 0x00000000 +#define CFG_SATA_ENET_SELECT_MASK 0x00000001 + +/* SATA core host controller CSR */ +#define SLVRDERRATTRIBUTES 0x00000000 +#define SLVWRERRATTRIBUTES 0x00000004 +#define MSTRDERRATTRIBUTES 0x00000008 +#define MSTWRERRATTRIBUTES 0x0000000c +#define BUSCTLREG 0x00000014 +#define IOFMSTRWAUX 0x00000018 +#define INTSTATUSMASK 0x0000002c +#define ERRINTSTATUS 0x00000030 +#define ERRINTSTATUSMASK 0x00000034 + +/* SATA host AHCI CSR */ +#define PORTCFG 0x000000a4 +#define PORTADDR_SET(dst, src) \ + (((dst) & ~0x0000003f) | (((u32)(src)) & 0x0000003f)) +#define PORTPHY1CFG 0x000000a8 +#define PORTPHY1CFG_FRCPHYRDY_SET(dst, src) \ + (((dst) & ~0x00100000) | (((u32)(src) << 0x14) & 0x00100000)) +#define PORTPHY2CFG 0x000000ac +#define PORTPHY3CFG 0x000000b0 +#define PORTPHY4CFG 0x000000b4 +#define PORTPHY5CFG 0x000000b8 +#define SCTL0 0x0000012C +#define PORTPHY5CFG_RTCHG_SET(dst, src) \ + (((dst) & ~0xfff00000) | (((u32)(src) << 0x14) & 0xfff00000)) +#define PORTAXICFG_EN_CONTEXT_SET(dst, src) \ + (((dst) & ~0x01000000) | (((u32)(src) << 0x18) & 0x01000000)) +#define PORTAXICFG 0x000000bc +#define PORTAXICFG_OUTTRANS_SET(dst, src) \ + (((dst) & ~0x00f00000) | (((u32)(src) << 0x14) & 0x00f00000)) +#define PORTRANSCFG 0x000000c8 +#define PORTRANSCFG_RXWM_SET(dst, src) \ + (((dst) & ~0x0000007f) | (((u32)(src)) & 0x0000007f)) + +/* SATA host controller AXI CSR */ +#define INT_SLV_TMOMASK 0x00000010 + +/* SATA diagnostic CSR */ +#define CFG_MEM_RAM_SHUTDOWN 0x00000070 +#define BLOCK_MEM_RDY 0x00000074 + +/* Max retry for link down */ +#define MAX_LINK_DOWN_RETRY 3 + +struct xgene_ahci_context { + struct ahci_host_priv *hpriv; + struct device *dev; + u8 last_cmd[MAX_AHCI_CHN_PERCTR]; /* tracking the last command issued*/ + void __iomem *csr_core; /* Core CSR address of IP */ + void __iomem *csr_diag; /* Diag CSR address of IP */ + void __iomem *csr_axi; /* AXI CSR address of IP */ + void __iomem *csr_mux; /* MUX CSR address of IP */ +}; + +static int xgene_ahci_init_memram(struct xgene_ahci_context *ctx) +{ + dev_dbg(ctx->dev, "Release memory from shutdown\n"); + writel(0x0, ctx->csr_diag + CFG_MEM_RAM_SHUTDOWN); + readl(ctx->csr_diag + CFG_MEM_RAM_SHUTDOWN); /* Force a barrier */ + msleep(1); /* reset may take up to 1ms */ + if (readl(ctx->csr_diag + BLOCK_MEM_RDY) != 0xFFFFFFFF) { + dev_err(ctx->dev, "failed to release memory from shutdown\n"); + return -ENODEV; + } + return 0; +} + +/** + * xgene_ahci_restart_engine - Restart the dma engine. + * @ap : ATA port of interest + * + * Restarts the dma engine inside the controller. + */ +static int xgene_ahci_restart_engine(struct ata_port *ap) +{ + struct ahci_host_priv *hpriv = ap->host->private_data; + + ahci_stop_engine(ap); + ahci_start_fis_rx(ap); + hpriv->start_engine(ap); + + return 0; +} + +/** + * xgene_ahci_qc_issue - Issue commands to the device + * @qc: Command to issue + * + * Due to Hardware errata for IDENTIFY DEVICE command, the controller cannot + * clear the BSY bit after receiving the PIO setup FIS. This results in the dma + * state machine goes into the CMFatalErrorUpdate state and locks up. By + * restarting the dma engine, it removes the controller out of lock up state. + */ +static unsigned int xgene_ahci_qc_issue(struct ata_queued_cmd *qc) +{ + struct ata_port *ap = qc->ap; + struct ahci_host_priv *hpriv = ap->host->private_data; + struct xgene_ahci_context *ctx = hpriv->plat_data; + int rc = 0; + + if (unlikely(ctx->last_cmd[ap->port_no] == ATA_CMD_ID_ATA)) + xgene_ahci_restart_engine(ap); + + rc = ahci_qc_issue(qc); + + /* Save the last command issued */ + ctx->last_cmd[ap->port_no] = qc->tf.command; + + return rc; +} + +static int xgene_ahci_is_memram_inited(struct xgene_ahci_context *ctx) +{ + void __iomem *diagcsr = ctx->csr_diag; + + if (readl(diagcsr + CFG_MEM_RAM_SHUTDOWN) == 0 && + readl(diagcsr + BLOCK_MEM_RDY) == 0xFFFFFFFF) + return 1; + return 0; +} + +/** + * xgene_ahci_read_id - Read ID data from the specified device + * @dev: device + * @tf: proposed taskfile + * @id: data buffer + * + * This custom read ID function is required due to the fact that the HW + * does not support DEVSLP. + */ +static unsigned int xgene_ahci_read_id(struct ata_device *dev, + struct ata_taskfile *tf, u16 *id) +{ + u32 err_mask; + + err_mask = ata_do_dev_read_id(dev, tf, id); + if (err_mask) + return err_mask; + + /* + * Mask reserved area. Word78 spec of Link Power Management + * bit15-8: reserved + * bit7: NCQ autosence + * bit6: Software settings preservation supported + * bit5: reserved + * bit4: In-order sata delivery supported + * bit3: DIPM requests supported + * bit2: DMA Setup FIS Auto-Activate optimization supported + * bit1: DMA Setup FIX non-Zero buffer offsets supported + * bit0: Reserved + * + * Clear reserved bit 8 (DEVSLP bit) as we don't support DEVSLP + */ + id[ATA_ID_FEATURE_SUPP] &= ~(1 << 8); + + return 0; +} + +static void xgene_ahci_set_phy_cfg(struct xgene_ahci_context *ctx, int channel) +{ + void __iomem *mmio = ctx->hpriv->mmio; + u32 val; + + dev_dbg(ctx->dev, "port configure mmio 0x%p channel %d\n", + mmio, channel); + val = readl(mmio + PORTCFG); + val = PORTADDR_SET(val, channel == 0 ? 2 : 3); + writel(val, mmio + PORTCFG); + readl(mmio + PORTCFG); /* Force a barrier */ + /* Disable fix rate */ + writel(0x0001fffe, mmio + PORTPHY1CFG); + readl(mmio + PORTPHY1CFG); /* Force a barrier */ + writel(0x28183219, mmio + PORTPHY2CFG); + readl(mmio + PORTPHY2CFG); /* Force a barrier */ + writel(0x13081008, mmio + PORTPHY3CFG); + readl(mmio + PORTPHY3CFG); /* Force a barrier */ + writel(0x00480815, mmio + PORTPHY4CFG); + readl(mmio + PORTPHY4CFG); /* Force a barrier */ + /* Set window negotiation */ + val = readl(mmio + PORTPHY5CFG); + val = PORTPHY5CFG_RTCHG_SET(val, 0x300); + writel(val, mmio + PORTPHY5CFG); + readl(mmio + PORTPHY5CFG); /* Force a barrier */ + val = readl(mmio + PORTAXICFG); + val = PORTAXICFG_EN_CONTEXT_SET(val, 0x1); /* Enable context mgmt */ + val = PORTAXICFG_OUTTRANS_SET(val, 0xe); /* Set outstanding */ + writel(val, mmio + PORTAXICFG); + readl(mmio + PORTAXICFG); /* Force a barrier */ + /* Set the watermark threshold of the receive FIFO */ + val = readl(mmio + PORTRANSCFG); + val = PORTRANSCFG_RXWM_SET(val, 0x30); + writel(val, mmio + PORTRANSCFG); +} + +/** + * xgene_ahci_do_hardreset - Issue the actual COMRESET + * @link: link to reset + * @deadline: deadline jiffies for the operation + * @online: Return value to indicate if device online + * + * Due to the limitation of the hardware PHY, a difference set of setting is + * required for each supported disk speed - Gen3 (6.0Gbps), Gen2 (3.0Gbps), + * and Gen1 (1.5Gbps). Otherwise during long IO stress test, the PHY will + * report disparity error and etc. In addition, during COMRESET, there can + * be error reported in the register PORT_SCR_ERR. For SERR_DISPARITY and + * SERR_10B_8B_ERR, the PHY receiver line must be reseted. The following + * algorithm is followed to proper configure the hardware PHY during COMRESET: + * + * Alg Part 1: + * 1. Start the PHY at Gen3 speed (default setting) + * 2. Issue the COMRESET + * 3. If no link, go to Alg Part 3 + * 4. If link up, determine if the negotiated speed matches the PHY + * configured speed + * 5. If they matched, go to Alg Part 2 + * 6. If they do not matched and first time, configure the PHY for the linked + * up disk speed and repeat step 2 + * 7. Go to Alg Part 2 + * + * Alg Part 2: + * 1. On link up, if there are any SERR_DISPARITY and SERR_10B_8B_ERR error + * reported in the register PORT_SCR_ERR, then reset the PHY receiver line + * 2. Go to Alg Part 3 + * + * Alg Part 3: + * 1. Clear any pending from register PORT_SCR_ERR. + * + * NOTE: For the initial version, we will NOT support Gen1/Gen2. In addition + * and until the underlying PHY supports an method to reset the receiver + * line, on detection of SERR_DISPARITY or SERR_10B_8B_ERR errors, + * an warning message will be printed. + */ +static int xgene_ahci_do_hardreset(struct ata_link *link, + unsigned long deadline, bool *online) +{ + const unsigned long *timing = sata_ehc_deb_timing(&link->eh_context); + struct ata_port *ap = link->ap; + struct ahci_host_priv *hpriv = ap->host->private_data; + struct xgene_ahci_context *ctx = hpriv->plat_data; + struct ahci_port_priv *pp = ap->private_data; + u8 *d2h_fis = pp->rx_fis + RX_FIS_D2H_REG; + void __iomem *port_mmio = ahci_port_base(ap); + struct ata_taskfile tf; + int link_down_retry = 0; + int rc; + u32 val, sstatus; + + do { + /* clear D2H reception area to properly wait for D2H FIS */ + ata_tf_init(link->device, &tf); + tf.command = ATA_BUSY; + ata_tf_to_fis(&tf, 0, 0, d2h_fis); + rc = sata_link_hardreset(link, timing, deadline, online, + ahci_check_ready); + if (*online) + break; + + sata_scr_read(link, SCR_STATUS, &sstatus); + } while (link_down_retry++ < MAX_LINK_DOWN_RETRY && + (sstatus & 0xff) == 0x1); + + val = readl(port_mmio + PORT_SCR_ERR); + if (val & (SERR_DISPARITY | SERR_10B_8B_ERR)) + dev_warn(ctx->dev, "link has error\n"); + + /* clear all errors if any pending */ + val = readl(port_mmio + PORT_SCR_ERR); + writel(val, port_mmio + PORT_SCR_ERR); + + return rc; +} + +static int xgene_ahci_hardreset(struct ata_link *link, unsigned int *class, + unsigned long deadline) +{ + struct ata_port *ap = link->ap; + struct ahci_host_priv *hpriv = ap->host->private_data; + void __iomem *port_mmio = ahci_port_base(ap); + bool online; + int rc; + u32 portcmd_saved; + u32 portclb_saved; + u32 portclbhi_saved; + u32 portrxfis_saved; + u32 portrxfishi_saved; + + /* As hardreset resets these CSR, save it to restore later */ + portcmd_saved = readl(port_mmio + PORT_CMD); + portclb_saved = readl(port_mmio + PORT_LST_ADDR); + portclbhi_saved = readl(port_mmio + PORT_LST_ADDR_HI); + portrxfis_saved = readl(port_mmio + PORT_FIS_ADDR); + portrxfishi_saved = readl(port_mmio + PORT_FIS_ADDR_HI); + + ahci_stop_engine(ap); + + rc = xgene_ahci_do_hardreset(link, deadline, &online); + + /* As controller hardreset clears them, restore them */ + writel(portcmd_saved, port_mmio + PORT_CMD); + writel(portclb_saved, port_mmio + PORT_LST_ADDR); + writel(portclbhi_saved, port_mmio + PORT_LST_ADDR_HI); + writel(portrxfis_saved, port_mmio + PORT_FIS_ADDR); + writel(portrxfishi_saved, port_mmio + PORT_FIS_ADDR_HI); + + hpriv->start_engine(ap); + + if (online) + *class = ahci_dev_classify(ap); + + return rc; +} + +static void xgene_ahci_host_stop(struct ata_host *host) +{ + struct ahci_host_priv *hpriv = host->private_data; + + ahci_platform_disable_resources(hpriv); +} + +static struct ata_port_operations xgene_ahci_ops = { + .inherits = &ahci_ops, + .host_stop = xgene_ahci_host_stop, + .hardreset = xgene_ahci_hardreset, + .read_id = xgene_ahci_read_id, + .qc_issue = xgene_ahci_qc_issue, +}; + +static const struct ata_port_info xgene_ahci_port_info = { + AHCI_HFLAGS(AHCI_HFLAG_NO_PMP | AHCI_HFLAG_NO_NCQ), + .flags = AHCI_FLAG_COMMON, + .pio_mask = ATA_PIO4, + .udma_mask = ATA_UDMA6, + .port_ops = &xgene_ahci_ops, +}; + +static int xgene_ahci_hw_init(struct ahci_host_priv *hpriv) +{ + struct xgene_ahci_context *ctx = hpriv->plat_data; + int i; + int rc; + u32 val; + + /* Remove IP RAM out of shutdown */ + rc = xgene_ahci_init_memram(ctx); + if (rc) + return rc; + + for (i = 0; i < MAX_AHCI_CHN_PERCTR; i++) + xgene_ahci_set_phy_cfg(ctx, i); + + /* AXI disable Mask */ + writel(0xffffffff, hpriv->mmio + HOST_IRQ_STAT); + readl(hpriv->mmio + HOST_IRQ_STAT); /* Force a barrier */ + writel(0, ctx->csr_core + INTSTATUSMASK); + val = readl(ctx->csr_core + INTSTATUSMASK); /* Force a barrier */ + dev_dbg(ctx->dev, "top level interrupt mask 0x%X value 0x%08X\n", + INTSTATUSMASK, val); + + writel(0x0, ctx->csr_core + ERRINTSTATUSMASK); + readl(ctx->csr_core + ERRINTSTATUSMASK); /* Force a barrier */ + writel(0x0, ctx->csr_axi + INT_SLV_TMOMASK); + readl(ctx->csr_axi + INT_SLV_TMOMASK); + + /* Enable AXI Interrupt */ + writel(0xffffffff, ctx->csr_core + SLVRDERRATTRIBUTES); + writel(0xffffffff, ctx->csr_core + SLVWRERRATTRIBUTES); + writel(0xffffffff, ctx->csr_core + MSTRDERRATTRIBUTES); + writel(0xffffffff, ctx->csr_core + MSTWRERRATTRIBUTES); + + /* Enable coherency */ + val = readl(ctx->csr_core + BUSCTLREG); + val &= ~0x00000002; /* Enable write coherency */ + val &= ~0x00000001; /* Enable read coherency */ + writel(val, ctx->csr_core + BUSCTLREG); + + val = readl(ctx->csr_core + IOFMSTRWAUX); + val |= (1 << 3); /* Enable read coherency */ + val |= (1 << 9); /* Enable write coherency */ + writel(val, ctx->csr_core + IOFMSTRWAUX); + val = readl(ctx->csr_core + IOFMSTRWAUX); + dev_dbg(ctx->dev, "coherency 0x%X value 0x%08X\n", + IOFMSTRWAUX, val); + + return rc; +} + +static int xgene_ahci_mux_select(struct xgene_ahci_context *ctx) +{ + u32 val; + + /* Check for optional MUX resource */ + if (IS_ERR(ctx->csr_mux)) + return 0; + + val = readl(ctx->csr_mux + SATA_ENET_CONFIG_REG); + val &= ~CFG_SATA_ENET_SELECT_MASK; + writel(val, ctx->csr_mux + SATA_ENET_CONFIG_REG); + val = readl(ctx->csr_mux + SATA_ENET_CONFIG_REG); + return val & CFG_SATA_ENET_SELECT_MASK ? -1 : 0; +} + +static int xgene_ahci_probe(struct platform_device *pdev) +{ + struct device *dev = &pdev->dev; + struct ahci_host_priv *hpriv; + struct xgene_ahci_context *ctx; + struct resource *res; + int rc; + + hpriv = ahci_platform_get_resources(pdev); + if (IS_ERR(hpriv)) + return PTR_ERR(hpriv); + + ctx = devm_kzalloc(dev, sizeof(*ctx), GFP_KERNEL); + if (!ctx) + return -ENOMEM; + + hpriv->plat_data = ctx; + ctx->hpriv = hpriv; + ctx->dev = dev; + + /* Retrieve the IP core resource */ + res = platform_get_resource(pdev, IORESOURCE_MEM, 1); + ctx->csr_core = devm_ioremap_resource(dev, res); + if (IS_ERR(ctx->csr_core)) + return PTR_ERR(ctx->csr_core); + + /* Retrieve the IP diagnostic resource */ + res = platform_get_resource(pdev, IORESOURCE_MEM, 2); + ctx->csr_diag = devm_ioremap_resource(dev, res); + if (IS_ERR(ctx->csr_diag)) + return PTR_ERR(ctx->csr_diag); + + /* Retrieve the IP AXI resource */ + res = platform_get_resource(pdev, IORESOURCE_MEM, 3); + ctx->csr_axi = devm_ioremap_resource(dev, res); + if (IS_ERR(ctx->csr_axi)) + return PTR_ERR(ctx->csr_axi); + + /* Retrieve the optional IP mux resource */ + res = platform_get_resource(pdev, IORESOURCE_MEM, 4); + ctx->csr_mux = devm_ioremap_resource(dev, res); + + dev_dbg(dev, "VAddr 0x%p Mmio VAddr 0x%p\n", ctx->csr_core, + hpriv->mmio); + + /* Select ATA */ + if ((rc = xgene_ahci_mux_select(ctx))) { + dev_err(dev, "SATA mux selection failed error %d\n", rc); + return -ENODEV; + } + + if (xgene_ahci_is_memram_inited(ctx)) { + dev_info(dev, "skip clock and PHY initialization\n"); + goto skip_clk_phy; + } + + /* Due to errata, HW requires full toggle transition */ + rc = ahci_platform_enable_clks(hpriv); + if (rc) + goto disable_resources; + ahci_platform_disable_clks(hpriv); + + rc = ahci_platform_enable_resources(hpriv); + if (rc) + goto disable_resources; + + /* Configure the host controller */ + xgene_ahci_hw_init(hpriv); + +skip_clk_phy: + + /* + * Setup DMA mask. This is preliminary until the DMA range is sorted + * out. + */ + rc = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(64)); + if (rc) { + dev_err(dev, "Unable to set dma mask\n"); + goto disable_resources; + } + + rc = ahci_platform_init_host(pdev, hpriv, &xgene_ahci_port_info, 0, 0); + if (rc) + goto disable_resources; + + dev_dbg(dev, "X-Gene SATA host controller initialized\n"); + return 0; + +disable_resources: + ahci_platform_disable_resources(hpriv); + return rc; +} + +static const struct of_device_id xgene_ahci_of_match[] = { + {.compatible = "apm,xgene-ahci"}, + {}, +}; +MODULE_DEVICE_TABLE(of, xgene_ahci_of_match); + +static struct platform_driver xgene_ahci_driver = { + .probe = xgene_ahci_probe, + .remove = ata_platform_remove_one, + .driver = { + .name = "xgene-ahci", + .owner = THIS_MODULE, + .of_match_table = xgene_ahci_of_match, + }, +}; + +module_platform_driver(xgene_ahci_driver); + +MODULE_DESCRIPTION("APM X-Gene AHCI SATA driver"); +MODULE_AUTHOR("Loc Ho "); +MODULE_LICENSE("GPL"); +MODULE_VERSION("0.4"); --- linux-3.13.0.orig/drivers/ata/ata_piix.c +++ linux-3.13.0/drivers/ata/ata_piix.c @@ -340,6 +340,14 @@ { 0x8086, 0x0F21, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata_byt }, /* SATA Controller IDE (Coleto Creek) */ { 0x8086, 0x23a6, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata }, + /* SATA Controller IDE (9 Series) */ + { 0x8086, 0x8c88, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata_snb }, + /* SATA Controller IDE (9 Series) */ + { 0x8086, 0x8c89, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata_snb }, + /* SATA Controller IDE (9 Series) */ + { 0x8086, 0x8c80, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_snb }, + /* SATA Controller IDE (9 Series) */ + { 0x8086, 0x8c81, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_snb }, { } /* terminate list */ }; --- linux-3.13.0.orig/drivers/ata/libahci.c +++ linux-3.13.0/drivers/ata/libahci.c @@ -69,7 +69,6 @@ static int ahci_scr_read(struct ata_link *link, unsigned int sc_reg, u32 *val); static int ahci_scr_write(struct ata_link *link, unsigned int sc_reg, u32 val); -static unsigned int ahci_qc_issue(struct ata_queued_cmd *qc); static bool ahci_qc_fill_rtf(struct ata_queued_cmd *qc); static int ahci_port_start(struct ata_port *ap); static void ahci_port_stop(struct ata_port *ap); @@ -394,6 +393,9 @@ * * If inconsistent, config values are fixed up by this function. * + * If it is not set already this function sets hpriv->start_engine to + * ahci_start_engine. + * * LOCKING: * None. */ @@ -487,8 +489,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); @@ -500,6 +502,9 @@ hpriv->cap = cap; hpriv->cap2 = cap2; hpriv->port_map = port_map; + + if (!hpriv->start_engine) + hpriv->start_engine = ahci_start_engine; } EXPORT_SYMBOL_GPL(ahci_save_initial_config); @@ -603,7 +608,7 @@ } EXPORT_SYMBOL_GPL(ahci_stop_engine); -static void ahci_start_fis_rx(struct ata_port *ap) +void ahci_start_fis_rx(struct ata_port *ap) { void __iomem *port_mmio = ahci_port_base(ap); struct ahci_host_priv *hpriv = ap->host->private_data; @@ -629,6 +634,7 @@ /* flush */ readl(port_mmio + PORT_CMD); } +EXPORT_SYMBOL_GPL(ahci_start_fis_rx); static int ahci_stop_fis_rx(struct ata_port *ap) { @@ -730,6 +736,18 @@ return 0; } +int ahci_restart_engine(struct ata_port *ap) +{ + struct ahci_host_priv *hpriv = ap->host->private_data; + + ahci_stop_engine(ap); + ahci_start_fis_rx(ap); + hpriv->start_engine(ap); + + return 0; +} +EXPORT_SYMBOL_GPL(ahci_restart_engine); + #ifdef CONFIG_PM static void ahci_power_down(struct ata_port *ap) { @@ -766,7 +784,7 @@ /* enable DMA */ if (!(hpriv->flags & AHCI_HFLAG_DELAY_ENGINE)) - ahci_start_engine(ap); + hpriv->start_engine(ap); /* turn on LEDs */ if (ap->flags & ATA_FLAG_EM) { @@ -1234,7 +1252,7 @@ /* restart engine */ out_restart: - ahci_start_engine(ap); + hpriv->start_engine(ap); return rc; } EXPORT_SYMBOL_GPL(ahci_kick_engine); @@ -1253,6 +1271,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); @@ -1426,6 +1453,7 @@ const unsigned long *timing = sata_ehc_deb_timing(&link->eh_context); struct ata_port *ap = link->ap; struct ahci_port_priv *pp = ap->private_data; + struct ahci_host_priv *hpriv = ap->host->private_data; u8 *d2h_fis = pp->rx_fis + RX_FIS_D2H_REG; struct ata_taskfile tf; bool online; @@ -1443,7 +1471,7 @@ rc = sata_link_hardreset(link, timing, deadline, &online, ahci_check_ready); - ahci_start_engine(ap); + hpriv->start_engine(ap); if (online) *class = ahci_dev_classify(ap); @@ -1693,8 +1721,7 @@ if (unlikely(resetting)) status &= ~PORT_IRQ_BAD_PMP; - /* if LPM is enabled, PHYRDY doesn't mean anything */ - if (ap->link.lpm_policy > ATA_LPM_MAX_POWER) { + if (sata_lpm_ignore_phy_events(&ap->link)) { status &= ~PORT_IRQ_PHYRDY; ahci_scr_write(&ap->link, SCR_ERROR, SERR_PHYRDY_CHG); } @@ -1926,7 +1953,7 @@ } EXPORT_SYMBOL_GPL(ahci_interrupt); -static unsigned int ahci_qc_issue(struct ata_queued_cmd *qc) +unsigned int ahci_qc_issue(struct ata_queued_cmd *qc) { struct ata_port *ap = qc->ap; void __iomem *port_mmio = ahci_port_base(ap); @@ -1955,6 +1982,7 @@ return 0; } +EXPORT_SYMBOL_GPL(ahci_qc_issue); static bool ahci_qc_fill_rtf(struct ata_queued_cmd *qc) { @@ -2007,10 +2035,12 @@ void ahci_error_handler(struct ata_port *ap) { + struct ahci_host_priv *hpriv = ap->host->private_data; + if (!(ap->pflags & ATA_PFLAG_FROZEN)) { /* restart engine */ ahci_stop_engine(ap); - ahci_start_engine(ap); + hpriv->start_engine(ap); } sata_pmp_error_handler(ap); @@ -2031,6 +2061,7 @@ static void ahci_set_aggressive_devslp(struct ata_port *ap, bool sleep) { + struct ahci_host_priv *hpriv = ap->host->private_data; void __iomem *port_mmio = ahci_port_base(ap); struct ata_device *dev = ap->link.device; u32 devslp, dm, dito, mdat, deto; @@ -2094,7 +2125,7 @@ PORT_DEVSLP_ADSE); writel(devslp, port_mmio + PORT_DEVSLP); - ahci_start_engine(ap); + hpriv->start_engine(ap); /* enable device sleep feature for the drive */ err_mask = ata_dev_set_feature(dev, @@ -2106,6 +2137,7 @@ static void ahci_enable_fbs(struct ata_port *ap) { + struct ahci_host_priv *hpriv = ap->host->private_data; struct ahci_port_priv *pp = ap->private_data; void __iomem *port_mmio = ahci_port_base(ap); u32 fbs; @@ -2134,11 +2166,12 @@ } else dev_err(ap->host->dev, "Failed to enable FBS\n"); - ahci_start_engine(ap); + hpriv->start_engine(ap); } static void ahci_disable_fbs(struct ata_port *ap) { + struct ahci_host_priv *hpriv = ap->host->private_data; struct ahci_port_priv *pp = ap->private_data; void __iomem *port_mmio = ahci_port_base(ap); u32 fbs; @@ -2166,7 +2199,7 @@ pp->fbs_enabled = false; } - ahci_start_engine(ap); + hpriv->start_engine(ap); } static void ahci_pmp_attach(struct ata_port *ap) --- linux-3.13.0.orig/drivers/ata/libata-core.c +++ linux-3.13.0/drivers/ata/libata-core.c @@ -2222,6 +2222,16 @@ if (rc) return rc; + /* some WD SATA-1 drives have issues with LPM, turn on NOLPM for them */ + if ((dev->horkage & ATA_HORKAGE_WD_BROKEN_LPM) && + (id[ATA_ID_SATA_CAPABILITY] & 0xe) == 0x2) + dev->horkage |= ATA_HORKAGE_NOLPM; + + if (dev->horkage & ATA_HORKAGE_NOLPM) { + ata_dev_warn(dev, "LPM support broken, forcing max_power\n"); + dev->link->ap->target_lpm_policy = ATA_LPM_MAX_POWER; + } + /* let ACPI work its magic */ rc = ata_acpi_on_devcfg(dev); if (rc) @@ -4163,8 +4173,10 @@ { "ST3320[68]13AS", "SD1[5-9]", ATA_HORKAGE_NONCQ | ATA_HORKAGE_FIRMWARE_WARN }, - /* Seagate Momentus SpinPoint M8 seem to have FPMDA_AA issues */ + /* drives which fail FPDMA_AA activation (some may freeze afterwards) */ { "ST1000LM024 HN-M101MBB", "2AR10001", ATA_HORKAGE_BROKEN_FPDMA_AA }, + { "ST1000LM024 HN-M101MBB", "2BA30001", ATA_HORKAGE_BROKEN_FPDMA_AA }, + { "VB0250EAVER", "HPG7", ATA_HORKAGE_BROKEN_FPDMA_AA }, /* Blacklist entries taken from Silicon Image 3124/3132 Windows driver .inf file - also several Linux problem reports */ @@ -4213,8 +4225,32 @@ { "PIONEER DVD-RW DVR-216D", NULL, ATA_HORKAGE_NOSETXFER }, /* devices that don't properly handle queued TRIM commands */ - { "Micron_M500*", NULL, ATA_HORKAGE_NO_NCQ_TRIM, }, - { "Crucial_CT???M500SSD1", NULL, ATA_HORKAGE_NO_NCQ_TRIM, }, + { "Micron_M500_*", NULL, ATA_HORKAGE_NO_NCQ_TRIM, }, + { "Crucial_CT???M500SSD*", NULL, ATA_HORKAGE_NO_NCQ_TRIM, }, + { "Micron_M550_*", NULL, ATA_HORKAGE_NO_NCQ_TRIM, }, + { "Crucial_CT*M550SSD*", NULL, ATA_HORKAGE_NO_NCQ_TRIM, }, + { "Samsung SSD 8*", NULL, ATA_HORKAGE_NO_NCQ_TRIM, }, + { "FCCT*M500*", NULL, ATA_HORKAGE_NO_NCQ_TRIM, }, + + /* devices that don't properly handle TRIM commands */ + { "SuperSSpeed S238*", NULL, ATA_HORKAGE_NOTRIM, }, + + /* + * Some WD SATA-I drives spin up and down erratically when the link + * is put into the slumber mode. We don't have full list of the + * affected devices. Disable LPM if the device matches one of the + * known prefixes and is SATA-1. As a side effect LPM partial is + * lost too. + * + * https://bugzilla.kernel.org/show_bug.cgi?id=57211 + */ + { "WDC WD800JD-*", NULL, ATA_HORKAGE_WD_BROKEN_LPM }, + { "WDC WD1200JD-*", NULL, ATA_HORKAGE_WD_BROKEN_LPM }, + { "WDC WD1600JD-*", NULL, ATA_HORKAGE_WD_BROKEN_LPM }, + { "WDC WD2000JD-*", NULL, ATA_HORKAGE_WD_BROKEN_LPM }, + { "WDC WD2500JD-*", NULL, ATA_HORKAGE_WD_BROKEN_LPM }, + { "WDC WD3000JD-*", NULL, ATA_HORKAGE_WD_BROKEN_LPM }, + { "WDC WD3200JD-*", NULL, ATA_HORKAGE_WD_BROKEN_LPM }, /* End Marker */ { } @@ -4503,7 +4539,8 @@ else /* In the ancient relic department - skip all of this */ return 0; - err_mask = ata_exec_internal(dev, &tf, NULL, DMA_NONE, NULL, 0, 0); + /* On some disks, this command causes spin-up, so we need longer timeout */ + err_mask = ata_exec_internal(dev, &tf, NULL, DMA_NONE, NULL, 0, 15000); DPRINTK("EXIT, err_mask=%x\n", err_mask); return err_mask; @@ -4757,6 +4794,10 @@ * ata_qc_new - Request an available ATA command, for queueing * @ap: target port * + * Some ATA host controllers may implement a queue depth which is less + * than ATA_MAX_QUEUE. So we shouldn't allocate a tag which is beyond + * the hardware limitation. + * * LOCKING: * None. */ @@ -4764,21 +4805,30 @@ static struct ata_queued_cmd *ata_qc_new(struct ata_port *ap) { struct ata_queued_cmd *qc = NULL; - unsigned int i; + unsigned int max_queue = ap->host->n_tags; + unsigned int i, tag; /* no command while frozen */ if (unlikely(ap->pflags & ATA_PFLAG_FROZEN)) return NULL; - /* the last tag is reserved for internal command. */ - for (i = 0; i < ATA_MAX_QUEUE - 1; i++) - if (!test_and_set_bit(i, &ap->qc_allocated)) { - qc = __ata_qc_from_tag(ap, i); + for (i = 0, tag = ap->last_tag + 1; i < max_queue; i++, tag++) { + if (ap->flags & ATA_FLAG_LOWTAG) + tag = i; + else + tag = tag < max_queue ? tag : 0; + + /* the last tag is reserved for internal command. */ + if (tag == ATA_TAG_INTERNAL) + continue; + + if (!test_and_set_bit(tag, &ap->qc_allocated)) { + qc = __ata_qc_from_tag(ap, tag); + qc->tag = tag; + ap->last_tag = tag; break; } - - if (qc) - qc->tag = i; + } return qc; } @@ -6068,6 +6118,7 @@ { spin_lock_init(&host->lock); mutex_init(&host->eh_mutex); + host->n_tags = ATA_MAX_QUEUE - 1; host->dev = dev; host->ops = ops; } @@ -6149,6 +6200,8 @@ { int i, rc; + host->n_tags = clamp(sht->can_queue, 1, ATA_MAX_QUEUE - 1); + /* host must have been started */ if (!(host->flags & ATA_HOST_STARTED)) { dev_err(host->dev, "BUG: trying to register unstarted host\n"); @@ -6294,6 +6347,8 @@ static void ata_port_detach(struct ata_port *ap) { unsigned long flags; + struct ata_link *link; + struct ata_device *dev; if (!ap->ops->error_handler) goto skip_eh; @@ -6313,6 +6368,13 @@ cancel_delayed_work_sync(&ap->hotplug_task); skip_eh: + /* clean up zpodd on port removal */ + ata_for_each_link(link, ap, HOST_FIRST) { + ata_for_each_dev(dev, link, ALL) { + if (zpodd_dev_enabled(dev)) + zpodd_exit(dev); + } + } if (ap->pmp_link) { int i; for (i = 0; i < SATA_PMP_MAX_PORTS; i++) @@ -6773,6 +6835,38 @@ return tmp; } +/** + * sata_lpm_ignore_phy_events - test if PHY event should be ignored + * @link: Link receiving the event + * + * Test whether the received PHY event has to be ignored or not. + * + * LOCKING: + * None: + * + * RETURNS: + * True if the event has to be ignored. + */ +bool sata_lpm_ignore_phy_events(struct ata_link *link) +{ + unsigned long lpm_timeout = link->last_lpm_change + + msecs_to_jiffies(ATA_TMOUT_SPURIOUS_PHY); + + /* if LPM is enabled, PHYRDY doesn't mean anything */ + if (link->lpm_policy > ATA_LPM_MAX_POWER) + return true; + + /* ignore the first PHY event after the LPM policy changed + * as it is might be spurious + */ + if ((link->flags & ATA_LFLAG_CHANGED) && + time_before(jiffies, lpm_timeout)) + return true; + + return false; +} +EXPORT_SYMBOL_GPL(sata_lpm_ignore_phy_events); + /* * Dummy port_ops */ --- linux-3.13.0.orig/drivers/ata/libata-eh.c +++ linux-3.13.0/drivers/ata/libata-eh.c @@ -3489,6 +3489,9 @@ } } + link->last_lpm_change = jiffies; + link->flags |= ATA_LFLAG_CHANGED; + return 0; fail: --- linux-3.13.0.orig/drivers/ata/libata-pmp.c +++ linux-3.13.0/drivers/ata/libata-pmp.c @@ -447,8 +447,11 @@ * otherwise. Don't try hard to recover it. */ ap->pmp_link[ap->nr_pmp_links - 1].flags |= ATA_LFLAG_NO_RETRY; - } else if (vendor == 0x197b && devid == 0x2352) { - /* chip found in Thermaltake BlackX Duet, jmicron JMB350? */ + } else if (vendor == 0x197b && (devid == 0x2352 || devid == 0x0325)) { + /* + * 0x2352: found in Thermaltake BlackX Duet, jmicron JMB350? + * 0x0325: jmicron JMB394. + */ ata_for_each_link(link, ap, EDGE) { /* SRST breaks detection and disks get misclassified * LPM disabled to avoid potential problems @@ -457,6 +460,13 @@ ATA_LFLAG_NO_SRST | ATA_LFLAG_ASSUME_ATA; } + } else if (vendor == 0x11ab && devid == 0x4140) { + /* Marvell 4140 quirks */ + ata_for_each_link(link, ap, EDGE) { + /* port 4 is for SEMB device and it doesn't like SRST */ + if (link->pmp == 4) + link->flags |= ATA_LFLAG_DISABLED; + } } } --- linux-3.13.0.orig/drivers/ata/libata-scsi.c +++ linux-3.13.0/drivers/ata/libata-scsi.c @@ -111,12 +111,14 @@ [ATA_LPM_MIN_POWER] = "min_power", }; -static ssize_t ata_scsi_lpm_store(struct device *dev, +static ssize_t ata_scsi_lpm_store(struct device *device, struct device_attribute *attr, const char *buf, size_t count) { - struct Scsi_Host *shost = class_to_shost(dev); + struct Scsi_Host *shost = class_to_shost(device); struct ata_port *ap = ata_shost_to_port(shost); + struct ata_link *link; + struct ata_device *dev; enum ata_lpm_policy policy; unsigned long flags; @@ -132,10 +134,20 @@ return -EINVAL; spin_lock_irqsave(ap->lock, flags); + + ata_for_each_link(link, ap, EDGE) { + ata_for_each_dev(dev, &ap->link, ENABLED) { + if (dev->horkage & ATA_HORKAGE_NOLPM) { + count = -EOPNOTSUPP; + goto out_unlock; + } + } + } + ap->target_lpm_policy = policy; ata_port_schedule_eh(ap); +out_unlock: spin_unlock_irqrestore(ap->lock, flags); - return count; } @@ -662,19 +674,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); @@ -2498,7 +2509,8 @@ rbuf[14] = (lowest_aligned >> 8) & 0x3f; rbuf[15] = lowest_aligned; - if (ata_id_has_trim(args->id)) { + if (ata_id_has_trim(args->id) && + !(dev->horkage & ATA_HORKAGE_NOTRIM)) { rbuf[14] |= 0x80; /* TPE */ if (ata_id_has_zero_after_trim(args->id)) --- linux-3.13.0.orig/drivers/ata/libata-sff.c +++ linux-3.13.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. */ @@ -1333,7 +1316,19 @@ DPRINTK("ENTER\n"); cancel_delayed_work_sync(&ap->sff_pio_task); + + /* + * We wanna reset the HSM state to IDLE. If we do so without + * grabbing the port lock, critical sections protected by it which + * expect the HSM state to stay stable may get surprised. For + * example, we may set IDLE in between the time + * __ata_sff_port_intr() checks for HSM_ST_IDLE and before it calls + * ata_sff_hsm_move() causing ata_sff_hsm_move() to BUG(). + */ + spin_lock_irq(ap->lock); ap->hsm_task_state = HSM_ST_IDLE; + spin_unlock_irq(ap->lock); + ap->sff_pio_task_link = NULL; if (ata_msg_ctl(ap)) @@ -1349,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: @@ -1369,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; } } @@ -1390,6 +1390,8 @@ */ if (poll_next) goto fsm_start; +out_unlock: + spin_unlock_irq(ap->lock); } /** @@ -2008,13 +2010,15 @@ DPRINTK("ata%u: bus reset via SRST\n", ap->print_id); - /* software reset. causes dev0 to be selected */ - iowrite8(ap->ctl, ioaddr->ctl_addr); - udelay(20); /* FIXME: flush */ - iowrite8(ap->ctl | ATA_SRST, ioaddr->ctl_addr); - udelay(20); /* FIXME: flush */ - iowrite8(ap->ctl, ioaddr->ctl_addr); - ap->last_ctl = ap->ctl; + if (ap->ioaddr.ctl_addr) { + /* software reset. causes dev0 to be selected */ + iowrite8(ap->ctl, ioaddr->ctl_addr); + udelay(20); /* FIXME: flush */ + iowrite8(ap->ctl | ATA_SRST, ioaddr->ctl_addr); + udelay(20); /* FIXME: flush */ + iowrite8(ap->ctl, ioaddr->ctl_addr); + ap->last_ctl = ap->ctl; + } /* wait the port to become ready */ return ata_sff_wait_after_reset(&ap->link, devmask, deadline); @@ -2215,10 +2219,6 @@ spin_unlock_irqrestore(ap->lock, flags); - /* ignore ata_sff_softreset if ctl isn't accessible */ - if (softreset == ata_sff_softreset && !ap->ioaddr.ctl_addr) - softreset = NULL; - /* ignore built-in hardresets if SCR access is not available */ if ((hardreset == sata_std_hardreset || hardreset == sata_sff_hardreset) && !sata_scr_valid(&ap->link)) --- linux-3.13.0.orig/drivers/ata/pata_at91.c +++ linux-3.13.0/drivers/ata/pata_at91.c @@ -408,12 +408,13 @@ host->private_data = info; - return ata_host_activate(host, gpio_is_valid(irq) ? gpio_to_irq(irq) : 0, - gpio_is_valid(irq) ? ata_sff_interrupt : NULL, - irq_flags, &pata_at91_sht); + ret = ata_host_activate(host, gpio_is_valid(irq) ? gpio_to_irq(irq) : 0, + gpio_is_valid(irq) ? ata_sff_interrupt : NULL, + irq_flags, &pata_at91_sht); + if (ret) + goto err_put; - if (!ret) - return 0; + return 0; err_put: clk_put(info->mck); --- linux-3.13.0.orig/drivers/ata/pata_octeon_cf.c +++ linux-3.13.0/drivers/ata/pata_octeon_cf.c @@ -1069,7 +1069,7 @@ }, {}, }; -MODULE_DEVICE_TABLE(of, octeon_i2c_match); +MODULE_DEVICE_TABLE(of, octeon_cf_match); static struct platform_driver octeon_cf_driver = { .probe = octeon_cf_probe, --- linux-3.13.0.orig/drivers/ata/pata_scc.c +++ linux-3.13.0/drivers/ata/pata_scc.c @@ -586,7 +586,7 @@ * Note: Original code is ata_bus_softreset(). */ -static unsigned int scc_bus_softreset(struct ata_port *ap, unsigned int devmask, +static int scc_bus_softreset(struct ata_port *ap, unsigned int devmask, unsigned long deadline) { struct ata_ioports *ioaddr = &ap->ioaddr; @@ -600,9 +600,7 @@ udelay(20); out_be32(ioaddr->ctl_addr, ap->ctl); - scc_wait_after_reset(&ap->link, devmask, deadline); - - return 0; + return scc_wait_after_reset(&ap->link, devmask, deadline); } /** @@ -619,7 +617,8 @@ { struct ata_port *ap = link->ap; unsigned int slave_possible = ap->flags & ATA_FLAG_SLAVE_POSS; - unsigned int devmask = 0, err_mask; + unsigned int devmask = 0; + int rc; u8 err; DPRINTK("ENTER\n"); @@ -635,9 +634,9 @@ /* issue bus reset */ DPRINTK("about to softreset, devmask=%x\n", devmask); - err_mask = scc_bus_softreset(ap, devmask, deadline); - if (err_mask) { - ata_port_err(ap, "SRST failed (err_mask=0x%x)\n", err_mask); + rc = scc_bus_softreset(ap, devmask, deadline); + if (rc) { + ata_port_err(ap, "SRST failed (err_mask=0x%x)\n", rc); return -EIO; } --- linux-3.13.0.orig/drivers/ata/pata_serverworks.c +++ linux-3.13.0/drivers/ata/pata_serverworks.c @@ -252,12 +252,18 @@ pci_write_config_byte(pdev, 0x54, ultra_cfg); } -static struct scsi_host_template serverworks_sht = { +static struct scsi_host_template serverworks_osb4_sht = { + ATA_BMDMA_SHT(DRV_NAME), + .sg_tablesize = LIBATA_DUMB_MAX_PRD, +}; + +static struct scsi_host_template serverworks_csb_sht = { ATA_BMDMA_SHT(DRV_NAME), }; static struct ata_port_operations serverworks_osb4_port_ops = { .inherits = &ata_bmdma_port_ops, + .qc_prep = ata_bmdma_dumb_qc_prep, .cable_detect = serverworks_cable_detect, .mode_filter = serverworks_osb4_filter, .set_piomode = serverworks_set_piomode, @@ -266,6 +272,7 @@ static struct ata_port_operations serverworks_csb_port_ops = { .inherits = &serverworks_osb4_port_ops, + .qc_prep = ata_bmdma_qc_prep, .mode_filter = serverworks_csb_filter, }; @@ -405,6 +412,7 @@ } }; const struct ata_port_info *ppi[] = { &info[id->driver_data], NULL }; + struct scsi_host_template *sht = &serverworks_csb_sht; int rc; rc = pcim_enable_device(pdev); @@ -418,6 +426,7 @@ /* Select non UDMA capable OSB4 if we can't do fixups */ if (rc < 0) ppi[0] = &info[1]; + sht = &serverworks_osb4_sht; } /* setup CSB5/CSB6 : South Bridge and IDE option RAID */ else if ((pdev->device == PCI_DEVICE_ID_SERVERWORKS_CSB5IDE) || @@ -434,7 +443,7 @@ ppi[1] = &ata_dummy_port_info; } - return ata_pci_bmdma_init_one(pdev, ppi, &serverworks_sht, NULL, 0); + return ata_pci_bmdma_init_one(pdev, ppi, sht, NULL, 0); } #ifdef CONFIG_PM --- linux-3.13.0.orig/drivers/ata/sata_fsl.c +++ linux-3.13.0/drivers/ata/sata_fsl.c @@ -1503,7 +1503,7 @@ host_priv->csr_base = csr_base; irq = irq_of_parse_and_map(ofdev->dev.of_node, 0); - if (irq < 0) { + if (!irq) { dev_err(&ofdev->dev, "invalid irq from platform\n"); goto error_exit_with_cleanup; } --- linux-3.13.0.orig/drivers/ata/sata_highbank.c +++ linux-3.13.0/drivers/ata/sata_highbank.c @@ -404,6 +404,7 @@ static const unsigned long timing[] = { 5, 100, 500}; struct ata_port *ap = link->ap; struct ahci_port_priv *pp = ap->private_data; + struct ahci_host_priv *hpriv = ap->host->private_data; u8 *d2h_fis = pp->rx_fis + RX_FIS_D2H_REG; struct ata_taskfile tf; bool online; @@ -432,7 +433,7 @@ break; } while (!online && retry--); - ahci_start_engine(ap); + hpriv->start_engine(ap); if (online) *class = ahci_dev_classify(ap); --- linux-3.13.0.orig/drivers/ata/sata_mv.c +++ linux-3.13.0/drivers/ata/sata_mv.c @@ -304,6 +304,7 @@ MV5_LTMODE = 0x30, MV5_PHY_CTL = 0x0C, SATA_IFCFG = 0x050, + LP_PHY_CTL = 0x058, MV_M2_PREAMP_MASK = 0x7e0, @@ -431,6 +432,7 @@ MV_HP_CUT_THROUGH = (1 << 10), /* can use EDMA cut-through */ MV_HP_FLAG_SOC = (1 << 11), /* SystemOnChip, no PCI */ MV_HP_QUIRK_LED_BLINK_EN = (1 << 12), /* is led blinking enabled? */ + MV_HP_FIX_LP_PHY_CTL = (1 << 13), /* fix speed in LP_PHY_CTL ? */ /* Port private flags (pp_flags) */ MV_PP_FLAG_EDMA_EN = (1 << 0), /* is EDMA engine enabled? */ @@ -1358,6 +1360,7 @@ if (ofs != 0xffffffffU) { void __iomem *addr = mv_ap_base(link->ap) + ofs; + struct mv_host_priv *hpriv = link->ap->host->private_data; if (sc_reg_in == SCR_CONTROL) { /* * Workaround for 88SX60x1 FEr SATA#26: @@ -1374,6 +1377,18 @@ */ if ((val & 0xf) == 1 || (readl(addr) & 0xf) == 1) val |= 0xf000; + + if (hpriv->hp_flags & MV_HP_FIX_LP_PHY_CTL) { + void __iomem *lp_phy_addr = + mv_ap_base(link->ap) + LP_PHY_CTL; + /* + * Set PHY speed according to SControl speed. + */ + if ((val & 0xf0) == 0x10) + writelfl(0x7, lp_phy_addr); + else + writelfl(0x227, lp_phy_addr); + } } writelfl(val, addr); return 0; @@ -4110,6 +4125,15 @@ if (rc) goto err; + /* + * To allow disk hotplug on Armada 370/XP SoCs, the PHY speed must be + * updated in the LP_PHY_CTL register. + */ + if (pdev->dev.of_node && + of_device_is_compatible(pdev->dev.of_node, + "marvell,armada-370-sata")) + hpriv->hp_flags |= MV_HP_FIX_LP_PHY_CTL; + /* initialize adapter */ rc = mv_init_host(host); if (rc) @@ -4209,6 +4233,7 @@ #ifdef CONFIG_OF static struct of_device_id mv_sata_dt_ids[] = { + { .compatible = "marvell,armada-370-sata", }, { .compatible = "marvell,orion-sata", }, {}, }; --- linux-3.13.0.orig/drivers/ata/sata_sil.c +++ linux-3.13.0/drivers/ata/sata_sil.c @@ -157,6 +157,7 @@ { "ST380011ASL", SIL_QUIRK_MOD15WRITE }, { "ST3120022ASL", SIL_QUIRK_MOD15WRITE }, { "ST3160021ASL", SIL_QUIRK_MOD15WRITE }, + { "TOSHIBA MK2561GSYN", SIL_QUIRK_MOD15WRITE }, { "Maxtor 4D060H3", SIL_QUIRK_UDMA5MAX }, { } }; @@ -630,6 +631,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-3.13.0.orig/drivers/ata/sata_sil24.c +++ linux-3.13.0/drivers/ata/sata_sil24.c @@ -246,7 +246,7 @@ /* host flags */ SIL24_COMMON_FLAGS = ATA_FLAG_SATA | ATA_FLAG_PIO_DMA | ATA_FLAG_NCQ | ATA_FLAG_ACPI_SATA | - ATA_FLAG_AN | ATA_FLAG_PMP, + ATA_FLAG_AN | ATA_FLAG_PMP | ATA_FLAG_LOWTAG, SIL24_FLAG_PCIX_IRQ_WOC = (1 << 24), /* IRQ loss errata on PCI-X */ IRQ_STAT_4PORTS = 0xf, --- linux-3.13.0.orig/drivers/auxdisplay/ks0108.c +++ linux-3.13.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-3.13.0.orig/drivers/base/bus.c +++ linux-3.13.0/drivers/base/bus.c @@ -243,13 +243,15 @@ const char *buf, size_t count) { struct device *dev; + int err = -EINVAL; dev = bus_find_device_by_name(bus, NULL, buf); if (!dev) return -ENODEV; - if (bus_rescan_devices_helper(dev, NULL) != 0) - return -EINVAL; - return count; + if (bus_rescan_devices_helper(dev, NULL) == 0) + err = count; + put_device(dev); + return err; } static struct device *next_device(struct klist_iter *i) @@ -502,11 +504,11 @@ goto out_put; error = device_add_groups(dev, bus->dev_groups); if (error) - goto out_groups; + goto out_id; error = sysfs_create_link(&bus->p->devices_kset->kobj, &dev->kobj, dev_name(dev)); if (error) - goto out_id; + goto out_groups; error = sysfs_create_link(&dev->kobj, &dev->bus->p->subsys.kobj, "subsystem"); if (error) --- linux-3.13.0.orig/drivers/base/core.c +++ linux-3.13.0/drivers/base/core.c @@ -739,12 +739,12 @@ return &dir->kobj; } +static DEFINE_MUTEX(gdp_mutex); static struct kobject *get_device_parent(struct device *dev, struct device *parent) { if (dev->class) { - static DEFINE_MUTEX(gdp_mutex); struct kobject *kobj = NULL; struct kobject *parent_kobj; struct kobject *k; @@ -808,7 +808,9 @@ glue_dir->kset != &dev->class->p->glue_dirs) return; + mutex_lock(&gdp_mutex); kobject_put(glue_dir); + mutex_unlock(&gdp_mutex); } static void cleanup_device_parent(struct device *dev) --- linux-3.13.0.orig/drivers/base/dd.c +++ linux-3.13.0/drivers/base/dd.c @@ -52,6 +52,7 @@ static LIST_HEAD(deferred_probe_pending_list); static LIST_HEAD(deferred_probe_active_list); static struct workqueue_struct *deferred_wq; +static atomic_t deferred_trigger_count = ATOMIC_INIT(0); /** * deferred_probe_work_func() - Retry probing devices in the active list. @@ -135,6 +136,17 @@ * This functions moves all devices from the pending list to the active * list and schedules the deferred probe workqueue to process them. It * should be called anytime a driver is successfully bound to a device. + * + * Note, there is a race condition in multi-threaded probe. In the case where + * more than one device is probing at the same time, it is possible for one + * probe to complete successfully while another is about to defer. If the second + * depends on the first, then it will get put on the pending list after the + * trigger event has already occured and will be stuck there. + * + * The atomic 'deferred_trigger_count' is used to determine if a successful + * trigger has occurred in the midst of probing a driver. If the trigger count + * changes in the midst of a probe, then deferred processing should be triggered + * again. */ static void driver_deferred_probe_trigger(void) { @@ -147,6 +159,7 @@ * into the active list so they can be retried by the workqueue */ mutex_lock(&deferred_probe_mutex); + atomic_inc(&deferred_trigger_count); list_splice_tail_init(&deferred_probe_pending_list, &deferred_probe_active_list); mutex_unlock(&deferred_probe_mutex); @@ -265,6 +278,7 @@ static int really_probe(struct device *dev, struct device_driver *drv) { int ret = 0; + int local_trigger_count = atomic_read(&deferred_trigger_count); atomic_inc(&probe_count); pr_debug("bus: '%s': %s: probing driver %s with device %s\n", @@ -310,6 +324,9 @@ /* Driver requested deferred probing */ dev_info(dev, "Driver %s requests probe deferral\n", drv->name); driver_deferred_probe_add(dev); + /* Did a trigger occur while probing? Need to re-trigger if yes */ + if (local_trigger_count != atomic_read(&deferred_trigger_count)) + driver_deferred_probe_trigger(); } else if (ret != -ENODEV && ret != -ENXIO) { /* driver matched but the probe failed */ printk(KERN_WARNING --- linux-3.13.0.orig/drivers/base/devres.c +++ linux-3.13.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-3.13.0.orig/drivers/base/dma-contiguous.c +++ linux-3.13.0/drivers/base/dma-contiguous.c @@ -155,13 +155,23 @@ base_pfn = pfn; for (j = pageblock_nr_pages; j; --j, pfn++) { WARN_ON_ONCE(!pfn_valid(pfn)); + /* + * alloc_contig_range requires the pfn range + * specified to be in the same zone. Make this + * simple by forcing the entire CMA resv range + * to be in the same zone. + */ if (page_zone(pfn_to_page(pfn)) != zone) - return -EINVAL; + goto err; } init_cma_reserved_pageblock(pfn_to_page(base_pfn)); } while (--i); return 0; + +err: + kfree(cma->bitmap); + return -EINVAL; } static struct cma cma_areas[MAX_CMA_AREAS]; --- linux-3.13.0.orig/drivers/base/firmware_class.c +++ linux-3.13.0/drivers/base/firmware_class.c @@ -1063,13 +1063,18 @@ _request_firmware(const struct firmware **firmware_p, const char *name, struct device *device, bool uevent, bool nowait) { - struct firmware *fw; + struct firmware *fw = NULL; long timeout; int ret; if (!firmware_p) 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 */ goto out; @@ -1541,6 +1546,7 @@ switch (mode) { case PM_HIBERNATION_PREPARE: case PM_SUSPEND_PREPARE: + case PM_RESTORE_PREPARE: kill_requests_without_uevent(); device_cache_fw_images(); break; --- linux-3.13.0.orig/drivers/base/memory.c +++ linux-3.13.0/drivers/base/memory.c @@ -311,6 +311,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); } --- linux-3.13.0.orig/drivers/base/platform.c +++ linux-3.13.0/drivers/base/platform.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -87,7 +88,16 @@ return -ENXIO; return dev->archdata.irqs[num]; #else - struct resource *r = platform_get_resource(dev, IORESOURCE_IRQ, num); + struct resource *r; + if (IS_ENABLED(CONFIG_OF_IRQ) && dev->dev.of_node) { + int ret; + + ret = of_irq_get(dev->dev.of_node, num); + if (ret >= 0 || ret == -EPROBE_DEFER) + return ret; + } + + r = platform_get_resource(dev, IORESOURCE_IRQ, num); return r ? r->start : -ENXIO; #endif @@ -126,9 +136,17 @@ */ int platform_get_irq_byname(struct platform_device *dev, const char *name) { - struct resource *r = platform_get_resource_byname(dev, IORESOURCE_IRQ, - name); + struct resource *r; + + if (IS_ENABLED(CONFIG_OF_IRQ) && dev->dev.of_node) { + int ret; + ret = of_irq_get_byname(dev->dev.of_node, name); + if (ret >= 0 || ret == -EPROBE_DEFER) + return ret; + } + + r = platform_get_resource_byname(dev, IORESOURCE_IRQ, name); return r ? r->start : -ENXIO; } EXPORT_SYMBOL_GPL(platform_get_irq_byname); @@ -344,9 +362,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); } @@ -377,9 +393,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-3.13.0.orig/drivers/base/power/opp.c +++ linux-3.13.0/drivers/base/power/opp.c @@ -735,11 +735,9 @@ unsigned long freq = be32_to_cpup(val++) * 1000; unsigned long volt = be32_to_cpup(val++); - if (dev_pm_opp_add(dev, freq, volt)) { + if (dev_pm_opp_add(dev, freq, volt)) dev_warn(dev, "%s: Failed to add OPP %ld\n", __func__, freq); - continue; - } nr -= 2; } --- linux-3.13.0.orig/drivers/base/regmap/internal.h +++ linux-3.13.0/drivers/base/regmap/internal.h @@ -144,6 +144,9 @@ enum regcache_type type; int (*init)(struct regmap *map); int (*exit)(struct regmap *map); +#ifdef CONFIG_DEBUG_FS + void (*debugfs_init)(struct regmap *map); +#endif int (*read)(struct regmap *map, unsigned int reg, unsigned int *value); int (*write)(struct regmap *map, unsigned int reg, unsigned int value); int (*sync)(struct regmap *map, unsigned int min, unsigned int max); --- linux-3.13.0.orig/drivers/base/regmap/regcache-rbtree.c +++ linux-3.13.0/drivers/base/regmap/regcache-rbtree.c @@ -194,10 +194,6 @@ { debugfs_create_file("rbtree", 0400, map->debugfs, map, &rbtree_fops); } -#else -static void rbtree_debugfs_init(struct regmap *map) -{ -} #endif static int regcache_rbtree_init(struct regmap *map) @@ -222,8 +218,6 @@ goto err; } - rbtree_debugfs_init(map); - return 0; err: @@ -302,18 +296,27 @@ if (!blk) return -ENOMEM; - present = krealloc(rbnode->cache_present, - BITS_TO_LONGS(blklen) * sizeof(*present), GFP_KERNEL); - if (!present) { - kfree(blk); - return -ENOMEM; + if (BITS_TO_LONGS(blklen) > BITS_TO_LONGS(rbnode->blklen)) { + present = krealloc(rbnode->cache_present, + BITS_TO_LONGS(blklen) * sizeof(*present), + GFP_KERNEL); + if (!present) { + kfree(blk); + return -ENOMEM; + } + + memset(present + BITS_TO_LONGS(rbnode->blklen), 0, + (BITS_TO_LONGS(blklen) - BITS_TO_LONGS(rbnode->blklen)) + * sizeof(*present)); + } else { + present = rbnode->cache_present; } /* insert the register value in the correct place in the rbnode block */ if (pos == 0) { memmove(blk + offset * map->cache_word_size, blk, rbnode->blklen * map->cache_word_size); - bitmap_shift_right(present, present, offset, blklen); + bitmap_shift_left(present, present, offset, blklen); } /* update the rbnode block, its size and the base register */ @@ -532,6 +535,9 @@ .name = "rbtree", .init = regcache_rbtree_init, .exit = regcache_rbtree_exit, +#ifdef CONFIG_DEBUG_FS + .debugfs_init = rbtree_debugfs_init, +#endif .read = regcache_rbtree_read, .write = regcache_rbtree_write, .sync = regcache_rbtree_sync, --- linux-3.13.0.orig/drivers/base/regmap/regcache.c +++ linux-3.13.0/drivers/base/regmap/regcache.c @@ -603,7 +603,8 @@ for (i = start; i < end; i++) { regtmp = block_base + (i * map->reg_stride); - if (!regcache_reg_present(cache_present, i)) + if (!regcache_reg_present(cache_present, i) || + !regmap_writeable(map, regtmp)) continue; val = regcache_get_val(map, block, i); @@ -666,7 +667,8 @@ for (i = start; i < end; i++) { regtmp = block_base + (i * map->reg_stride); - if (!regcache_reg_present(cache_present, i)) { + if (!regcache_reg_present(cache_present, i) || + !regmap_writeable(map, regtmp)) { ret = regcache_sync_block_raw_flush(map, &data, base, regtmp); if (ret != 0) @@ -701,7 +703,7 @@ unsigned int block_base, unsigned int start, unsigned int end) { - if (regmap_can_raw_write(map)) + if (regmap_can_raw_write(map) && !map->use_single_rw) return regcache_sync_block_raw(map, block, cache_present, block_base, start, end); else --- linux-3.13.0.orig/drivers/base/regmap/regmap-debugfs.c +++ linux-3.13.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 */ @@ -473,6 +472,7 @@ { struct rb_node *next; struct regmap_range_node *range_node; + const char *devname = "dummy"; /* If we don't have the debugfs root yet, postpone init */ if (!regmap_debugfs_root) { @@ -491,12 +491,15 @@ INIT_LIST_HEAD(&map->debugfs_off_cache); mutex_init(&map->cache_lock); + if (map->dev) + devname = dev_name(map->dev); + if (name) { map->debugfs_name = kasprintf(GFP_KERNEL, "%s-%s", - dev_name(map->dev), name); + devname, name); name = map->debugfs_name; } else { - name = dev_name(map->dev); + name = devname; } map->debugfs = debugfs_create_dir(name, regmap_debugfs_root); @@ -538,6 +541,9 @@ next = rb_next(&range_node->node); } + + if (map->cache_ops && map->cache_ops->debugfs_init) + map->cache_ops->debugfs_init(map); } void regmap_debugfs_exit(struct regmap *map) --- linux-3.13.0.orig/drivers/base/regmap/regmap.c +++ linux-3.13.0/drivers/base/regmap/regmap.c @@ -105,7 +105,7 @@ bool regmap_volatile(struct regmap *map, unsigned int reg) { - if (!regmap_readable(map, reg)) + if (!map->format.format_write && !regmap_readable(map, reg)) return false; if (map->volatile_reg) @@ -808,11 +808,10 @@ static void regmap_field_init(struct regmap_field *rm_field, struct regmap *regmap, struct reg_field reg_field) { - int field_bits = reg_field.msb - reg_field.lsb + 1; rm_field->regmap = regmap; rm_field->reg = reg_field.reg; rm_field->shift = reg_field.lsb; - rm_field->mask = ((BIT(field_bits) - 1) << reg_field.lsb); + rm_field->mask = GENMASK(reg_field.msb, reg_field.lsb); rm_field->id_size = reg_field.id_size; rm_field->id_offset = reg_field.id_offset; } @@ -1308,7 +1307,7 @@ } #ifdef LOG_DEVICE - if (strcmp(dev_name(map->dev), LOG_DEVICE) == 0) + if (map->dev && strcmp(dev_name(map->dev), LOG_DEVICE) == 0) dev_info(map->dev, "%x <= %x\n", reg, val); #endif @@ -1529,6 +1528,11 @@ if (val_bytes == 1) { wval = (void *)val; } else { + if (!val_count) { + ret = -EINVAL; + goto out; + } + wval = kmemdup(val, val_count * val_bytes, GFP_KERNEL); if (!wval) { ret = -ENOMEM; @@ -1727,7 +1731,7 @@ ret = map->reg_read(context, reg, val); if (ret == 0) { #ifdef LOG_DEVICE - if (strcmp(dev_name(map->dev), LOG_DEVICE) == 0) + if (map->dev && strcmp(dev_name(map->dev), LOG_DEVICE) == 0) dev_info(map->dev, "%x => %x\n", reg, *val); #endif @@ -1934,7 +1938,7 @@ &ival); if (ret != 0) return ret; - memcpy(val + (i * val_bytes), &ival, val_bytes); + map->format.format_val(val + (i * val_bytes), ival, 0); } } --- linux-3.13.0.orig/drivers/block/aoe/aoecmd.c +++ linux-3.13.0/drivers/block/aoe/aoecmd.c @@ -905,7 +905,7 @@ /* Non-zero page count for non-head members of * compound pages is no longer allowed by the kernel. */ - page = compound_trans_head(bv->bv_page); + page = compound_head(bv->bv_page); atomic_inc(&page->_count); } } @@ -918,7 +918,7 @@ int i; bio_for_each_segment(bv, bio, i) { - page = compound_trans_head(bv->bv_page); + page = compound_head(bv->bv_page); atomic_dec(&page->_count); } } --- linux-3.13.0.orig/drivers/block/drbd/drbd_interval.c +++ linux-3.13.0/drivers/block/drbd/drbd_interval.c @@ -79,6 +79,7 @@ drbd_insert_interval(struct rb_root *root, struct drbd_interval *this) { struct rb_node **new = &root->rb_node, *parent = NULL; + sector_t this_end = this->sector + (this->size >> 9); BUG_ON(!IS_ALIGNED(this->size, 512)); @@ -87,6 +88,8 @@ rb_entry(*new, struct drbd_interval, rb); parent = *new; + if (here->end < this_end) + here->end = this_end; if (this->sector < here->sector) new = &(*new)->rb_left; else if (this->sector > here->sector) @@ -99,6 +102,7 @@ return false; } + this->end = this_end; rb_link_node(&this->rb, parent, new); rb_insert_augmented(&this->rb, root, &augment_callbacks); return true; --- linux-3.13.0.orig/drivers/block/floppy.c +++ linux-3.13.0/drivers/block/floppy.c @@ -3053,7 +3053,10 @@ int ret; while (ptr) { - ret = copy_to_user(param, ptr, sizeof(*ptr)); + struct floppy_raw_cmd cmd = *ptr; + cmd.next = NULL; + cmd.kernel_data = NULL; + ret = copy_to_user(param, &cmd, sizeof(cmd)); if (ret) return -EFAULT; param += sizeof(struct floppy_raw_cmd); @@ -3107,10 +3110,11 @@ return -ENOMEM; *rcmd = ptr; ret = copy_from_user(ptr, param, sizeof(*ptr)); - if (ret) - return -EFAULT; ptr->next = NULL; ptr->buffer_length = 0; + ptr->kernel_data = NULL; + if (ret) + return -EFAULT; param += sizeof(struct floppy_raw_cmd); if (ptr->cmd_count > 33) /* the command may now also take up the space @@ -3126,7 +3130,6 @@ for (i = 0; i < 16; i++) ptr->reply[i] = 0; ptr->resultcode = 0; - ptr->kernel_data = NULL; if (ptr->flags & (FD_RAW_READ | FD_RAW_WRITE)) { if (ptr->length <= 0) --- linux-3.13.0.orig/drivers/block/loop.c +++ linux-3.13.0/drivers/block/loop.c @@ -691,6 +691,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, --- linux-3.13.0.orig/drivers/block/mtip32xx/mtip32xx.c +++ linux-3.13.0/drivers/block/mtip32xx/mtip32xx.c @@ -231,38 +231,45 @@ void *data, int status) { - struct mtip_cmd *command; + struct mtip_cmd *cmd; struct driver_data *dd = data; - int cb_status = status ? -EIO : 0; + int unaligned, cb_status = status ? -EIO : 0; + void (*func)(void *, int); if (unlikely(!dd) || unlikely(!port)) return; - command = &port->commands[tag]; + cmd = &port->commands[tag]; if (unlikely(status == PORT_IRQ_TF_ERR)) { dev_warn(&port->dd->pdev->dev, "Command tag %d failed due to TFE\n", tag); } + /* Clear the active flag */ + atomic_set(&port->commands[tag].active, 0); + /* Upper layer callback */ - if (likely(command->async_callback)) - command->async_callback(command->async_data, cb_status); + func = cmd->async_callback; + if (likely(func && cmpxchg(&cmd->async_callback, func, 0) == func)) { - command->async_callback = NULL; - command->comp_func = NULL; + /* Unmap the DMA scatter list entries */ + dma_unmap_sg(&dd->pdev->dev, + cmd->sg, + cmd->scatter_ents, + cmd->direction); - /* Unmap the DMA scatter list entries */ - dma_unmap_sg(&dd->pdev->dev, - command->sg, - command->scatter_ents, - command->direction); + func(cmd->async_data, cb_status); + unaligned = cmd->unaligned; - /* Clear the allocated and active bits for the command */ - atomic_set(&port->commands[tag].active, 0); - release_slot(port, tag); + /* Clear the allocated bit for the command */ + release_slot(port, tag); - up(&port->cmd_slot); + if (unlikely(unaligned)) + up(&port->cmd_slot_unal); + else + up(&port->cmd_slot); + } } /* @@ -639,11 +646,12 @@ { struct mtip_port *port = (struct mtip_port *) data; struct host_to_dev_fis *fis; - struct mtip_cmd *command; - int tag, cmdto_cnt = 0; + struct mtip_cmd *cmd; + int unaligned, tag, cmdto_cnt = 0; unsigned int bit, group; unsigned int num_command_slots; unsigned long to, tagaccum[SLOTBITS_IN_LONGS]; + void (*func)(void *, int); if (unlikely(!port)) return; @@ -673,8 +681,8 @@ group = tag >> 5; bit = tag & 0x1F; - command = &port->commands[tag]; - fis = (struct host_to_dev_fis *) command->command; + cmd = &port->commands[tag]; + fis = (struct host_to_dev_fis *) cmd->command; set_bit(tag, tagaccum); cmdto_cnt++; @@ -688,27 +696,30 @@ */ writel(1 << bit, port->completed[group]); - /* Call the async completion callback. */ - if (likely(command->async_callback)) - command->async_callback(command->async_data, - -EIO); - command->async_callback = NULL; - command->comp_func = NULL; - - /* Unmap the DMA scatter list entries */ - dma_unmap_sg(&port->dd->pdev->dev, - command->sg, - command->scatter_ents, - command->direction); - - /* - * Clear the allocated bit and active tag for the - * command. - */ + /* Clear the active flag for the command */ atomic_set(&port->commands[tag].active, 0); - release_slot(port, tag); - up(&port->cmd_slot); + func = cmd->async_callback; + if (func && + cmpxchg(&cmd->async_callback, func, 0) == func) { + + /* Unmap the DMA scatter list entries */ + dma_unmap_sg(&port->dd->pdev->dev, + cmd->sg, + cmd->scatter_ents, + cmd->direction); + + func(cmd->async_data, -EIO); + unaligned = cmd->unaligned; + + /* Clear the allocated bit for the command. */ + release_slot(port, tag); + + if (unaligned) + up(&port->cmd_slot_unal); + else + up(&port->cmd_slot); + } } } @@ -1306,6 +1317,7 @@ struct mtip_cmd *int_cmd = &port->commands[MTIP_TAG_INTERNAL]; unsigned long to; struct driver_data *dd = port->dd; + unsigned long start; /* Make sure the buffer is 8 byte aligned. This is asic specific. */ if (buffer & 0x00000007) { @@ -1378,6 +1390,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); @@ -1388,8 +1402,9 @@ 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 */ @@ -1496,6 +1511,37 @@ be16_to_cpus(&buf[i]); } +static void mtip_set_timeout(struct driver_data *dd, + struct host_to_dev_fis *fis, + unsigned int *timeout, u8 erasemode) +{ + switch (fis->command) { + case ATA_CMD_DOWNLOAD_MICRO: + *timeout = 120000; /* 2 minutes */ + break; + case ATA_CMD_SEC_ERASE_UNIT: + case 0xFC: + if (erasemode) + *timeout = ((*(dd->port->identify + 90) * 2) * 60000); + else + *timeout = ((*(dd->port->identify + 89) * 2) * 60000); + break; + case ATA_CMD_STANDBYNOW1: + *timeout = 120000; /* 2 minutes */ + break; + case 0xF7: + case 0xFA: + *timeout = 60000; /* 60 seconds */ + break; + case ATA_CMD_SMART: + *timeout = 15000; /* 15 seconds */ + break; + default: + *timeout = MTIP_IOCTL_COMMAND_TIMEOUT_MS; + break; + } +} + /* * Request the device identity information. * @@ -1605,6 +1651,7 @@ int rv; struct host_to_dev_fis fis; unsigned long start; + unsigned int timeout; /* Build the FIS. */ memset(&fis, 0, sizeof(struct host_to_dev_fis)); @@ -1612,6 +1659,8 @@ fis.opts = 1 << 7; fis.command = ATA_CMD_STANDBYNOW1; + mtip_set_timeout(port->dd, &fis, &timeout, 0); + start = jiffies; rv = mtip_exec_internal_command(port, &fis, @@ -1620,7 +1669,7 @@ 0, 0, GFP_ATOMIC, - 15000); + timeout); dbg_printk(MTIP_DRV_NAME "Time taken to complete standby cmd: %d ms\n", jiffies_to_msecs(jiffies - start)); if (rv) @@ -2159,36 +2208,6 @@ } return rv; } -static void mtip_set_timeout(struct driver_data *dd, - struct host_to_dev_fis *fis, - unsigned int *timeout, u8 erasemode) -{ - switch (fis->command) { - case ATA_CMD_DOWNLOAD_MICRO: - *timeout = 120000; /* 2 minutes */ - break; - case ATA_CMD_SEC_ERASE_UNIT: - case 0xFC: - if (erasemode) - *timeout = ((*(dd->port->identify + 90) * 2) * 60000); - else - *timeout = ((*(dd->port->identify + 89) * 2) * 60000); - break; - case ATA_CMD_STANDBYNOW1: - *timeout = 120000; /* 2 minutes */ - break; - case 0xF7: - case 0xFA: - *timeout = 60000; /* 60 seconds */ - break; - case ATA_CMD_SMART: - *timeout = 15000; /* 15 seconds */ - break; - default: - *timeout = MTIP_IOCTL_COMMAND_TIMEOUT_MS; - break; - } -} /* * Executes a taskfile @@ -4145,6 +4164,7 @@ blk_queue_max_hw_sectors(dd->queue, 0xffff); blk_queue_max_segment_size(dd->queue, 0x400000); blk_queue_io_min(dd->queue, 4096); + blk_queue_bounce_limit(dd->queue, dd->pdev->dma_mask); /* * write back cache is not supported in the device. FUA depends on @@ -4399,6 +4419,57 @@ static DEFINE_HANDLER(6); static DEFINE_HANDLER(7); +static void mtip_disable_link_opts(struct driver_data *dd, struct pci_dev *pdev) +{ + int pos; + unsigned short pcie_dev_ctrl; + + pos = pci_find_capability(pdev, PCI_CAP_ID_EXP); + if (pos) { + pci_read_config_word(pdev, + pos + PCI_EXP_DEVCTL, + &pcie_dev_ctrl); + if (pcie_dev_ctrl & (1 << 11) || + pcie_dev_ctrl & (1 << 4)) { + dev_info(&dd->pdev->dev, + "Disabling ERO/No-Snoop on bridge device %04x:%04x\n", + pdev->vendor, pdev->device); + pcie_dev_ctrl &= ~(PCI_EXP_DEVCTL_NOSNOOP_EN | + PCI_EXP_DEVCTL_RELAX_EN); + pci_write_config_word(pdev, + pos + PCI_EXP_DEVCTL, + pcie_dev_ctrl); + } + } +} + +static void mtip_fix_ero_nosnoop(struct driver_data *dd, struct pci_dev *pdev) +{ + /* + * This workaround is specific to AMD/ATI chipset with a PCI upstream + * device with device id 0x5aXX + */ + if (pdev->bus && pdev->bus->self) { + if (pdev->bus->self->vendor == PCI_VENDOR_ID_ATI && + ((pdev->bus->self->device & 0xff00) == 0x5a00)) { + mtip_disable_link_opts(dd, pdev->bus->self); + } else { + /* Check further up the topology */ + struct pci_dev *parent_dev = pdev->bus->self; + if (parent_dev->bus && + parent_dev->bus->parent && + parent_dev->bus->parent->self && + parent_dev->bus->parent->self->vendor == + PCI_VENDOR_ID_ATI && + (parent_dev->bus->parent->self->device & + 0xff00) == 0x5a00) { + mtip_disable_link_opts(dd, + parent_dev->bus->parent->self); + } + } + } +} + /* * Called for each supported PCI device detected. * @@ -4550,6 +4621,8 @@ goto block_initialize_err; } + mtip_fix_ero_nosnoop(dd, pdev); + /* Initialize the block layer. */ rv = mtip_block_initialize(dd); if (rv < 0) { @@ -4853,13 +4926,13 @@ */ static void __exit mtip_exit(void) { - debugfs_remove_recursive(dfs_parent); - /* Release the allocated major block device number. */ unregister_blkdev(mtip_major, MTIP_DRV_NAME); /* Unregister the PCI driver. */ pci_unregister_driver(&mtip_pci_driver); + + debugfs_remove_recursive(dfs_parent); } MODULE_AUTHOR("Micron Technology, Inc"); --- linux-3.13.0.orig/drivers/block/nbd.c +++ linux-3.13.0/drivers/block/nbd.c @@ -57,7 +57,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: @@ -581,8 +581,8 @@ BUG_ON(nbd->magic != NBD_MAGIC); 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(req); spin_lock_irq(q->queue_lock); @@ -814,10 +814,6 @@ return -EINVAL; } - nbd_dev = kcalloc(nbds_max, sizeof(*nbd_dev), GFP_KERNEL); - if (!nbd_dev) - return -ENOMEM; - part_shift = 0; if (max_part > 0) { part_shift = fls(max_part); @@ -839,6 +835,10 @@ if (nbds_max > 1UL << (MINORBITS - part_shift)) return -EINVAL; + nbd_dev = kcalloc(nbds_max, sizeof(*nbd_dev), GFP_KERNEL); + if (!nbd_dev) + return -ENOMEM; + for (i = 0; i < nbds_max; i++) { struct gendisk *disk = alloc_disk(1 << part_shift); if (!disk) --- linux-3.13.0.orig/drivers/block/nvme-core.c +++ linux-3.13.0/drivers/block/nvme-core.c @@ -46,8 +46,12 @@ #define NVME_Q_DEPTH 1024 #define SQ_SIZE(depth) (depth * sizeof(struct nvme_command)) #define CQ_SIZE(depth) (depth * sizeof(struct nvme_completion)) -#define NVME_MINORS 64 #define ADMIN_TIMEOUT (60 * HZ) +#define SHUTDOWN_TIMEOUT (shutdown_timeout * HZ) + +static unsigned char shutdown_timeout = 5; +module_param(shutdown_timeout, byte, 0644); +MODULE_PARM_DESC(shutdown_timeout, "timeout in seconds for controller shutdown"); static int nvme_major; module_param(nvme_major, int, 0); @@ -58,6 +62,17 @@ static DEFINE_SPINLOCK(dev_list_lock); static LIST_HEAD(dev_list); static struct task_struct *nvme_thread; +static struct workqueue_struct *nvme_workq; + +static void nvme_reset_failed_dev(struct work_struct *ws); + +struct async_cmd_info { + struct kthread_work work; + struct kthread_worker *worker; + u32 result; + int status; + void *ctx; +}; /* * An NVM Express queue. Each device has at least two (one for admin @@ -66,6 +81,7 @@ struct nvme_queue { struct device *q_dmadev; struct nvme_dev *dev; + char irqname[24]; /* nvme4294967295-65535\0 */ spinlock_t q_lock; struct nvme_command *sq_cmds; volatile struct nvme_completion *cqes; @@ -80,9 +96,11 @@ u16 sq_head; u16 sq_tail; u16 cq_head; + u16 qid; u8 cq_phase; u8 cqe_seen; u8 q_suspended; + struct async_cmd_info cmdinfo; unsigned long cmdid_data[]; }; @@ -97,6 +115,7 @@ BUILD_BUG_ON(sizeof(struct nvme_delete_queue) != 64); BUILD_BUG_ON(sizeof(struct nvme_features) != 64); BUILD_BUG_ON(sizeof(struct nvme_format_cmd) != 64); + BUILD_BUG_ON(sizeof(struct nvme_abort_cmd) != 64); BUILD_BUG_ON(sizeof(struct nvme_command) != 64); BUILD_BUG_ON(sizeof(struct nvme_id_ctrl) != 4096); BUILD_BUG_ON(sizeof(struct nvme_id_ns) != 4096); @@ -111,6 +130,7 @@ nvme_completion_fn fn; void *ctx; unsigned long timeout; + int aborted; }; static struct nvme_cmd_info *nvme_cmd_info(struct nvme_queue *nvmeq) @@ -154,6 +174,7 @@ info[cmdid].fn = handler; info[cmdid].ctx = ctx; info[cmdid].timeout = jiffies + timeout; + info[cmdid].aborted = 0; return cmdid; } @@ -172,6 +193,7 @@ #define CMD_CTX_COMPLETED (0x310 + CMD_CTX_BASE) #define CMD_CTX_INVALID (0x314 + CMD_CTX_BASE) #define CMD_CTX_FLUSH (0x318 + CMD_CTX_BASE) +#define CMD_CTX_ABORT (0x31C + CMD_CTX_BASE) static void special_completion(struct nvme_dev *dev, void *ctx, struct nvme_completion *cqe) @@ -180,6 +202,10 @@ return; if (ctx == CMD_CTX_FLUSH) return; + if (ctx == CMD_CTX_ABORT) { + ++dev->abort_limit; + return; + } if (ctx == CMD_CTX_COMPLETED) { dev_warn(&dev->pci_dev->dev, "completed id %d twice on queue %d\n", @@ -196,6 +222,15 @@ dev_warn(&dev->pci_dev->dev, "Unknown special completion %p\n", ctx); } +static void async_completion(struct nvme_dev *dev, void *ctx, + struct nvme_completion *cqe) +{ + struct async_cmd_info *cmdinfo = ctx; + cmdinfo->result = le32_to_cpup(&cqe->result); + cmdinfo->status = le16_to_cpup(&cqe->status) >> 1; + queue_kthread_work(cmdinfo->worker, &cmdinfo->work); +} + /* * Called with local interrupts disabled and the q_lock held. May not sleep. */ @@ -775,7 +810,7 @@ if (head == nvmeq->cq_head && phase == nvmeq->cq_phase) return 0; - writel(head, nvmeq->q_db + (1 << nvmeq->dev->db_stride)); + writel(head, nvmeq->q_db + nvmeq->dev->db_stride); nvmeq->cq_head = head; nvmeq->cq_phase = phase; @@ -886,12 +921,34 @@ return cmdinfo.status; } +static int nvme_submit_async_cmd(struct nvme_queue *nvmeq, + struct nvme_command *cmd, + struct async_cmd_info *cmdinfo, unsigned timeout) +{ + int cmdid; + + cmdid = alloc_cmdid_killable(nvmeq, cmdinfo, async_completion, timeout); + if (cmdid < 0) + return cmdid; + cmdinfo->status = -EINTR; + cmd->common.command_id = cmdid; + nvme_submit_cmd(nvmeq, cmd); + return 0; +} + int nvme_submit_admin_cmd(struct nvme_dev *dev, struct nvme_command *cmd, u32 *result) { return nvme_submit_sync_cmd(dev->queues[0], cmd, result, ADMIN_TIMEOUT); } +static int nvme_submit_admin_cmd_async(struct nvme_dev *dev, + struct nvme_command *cmd, struct async_cmd_info *cmdinfo) +{ + return nvme_submit_async_cmd(dev->queues[0], cmd, cmdinfo, + ADMIN_TIMEOUT); +} + static int adapter_delete_queue(struct nvme_dev *dev, u8 opcode, u16 id) { int status; @@ -1002,6 +1059,56 @@ } /** + * nvme_abort_cmd - Attempt aborting a command + * @cmdid: Command id of a timed out IO + * @queue: The queue with timed out IO + * + * Schedule controller reset if the command was already aborted once before and + * still hasn't been returned to the driver, or if this is the admin queue. + */ +static void nvme_abort_cmd(int cmdid, struct nvme_queue *nvmeq) +{ + int a_cmdid; + struct nvme_command cmd; + struct nvme_dev *dev = nvmeq->dev; + struct nvme_cmd_info *info = nvme_cmd_info(nvmeq); + + if (!nvmeq->qid || info[cmdid].aborted) { + if (work_busy(&dev->reset_work)) + return; + list_del_init(&dev->node); + dev_warn(&dev->pci_dev->dev, + "I/O %d QID %d timeout, reset controller\n", cmdid, + nvmeq->qid); + PREPARE_WORK(&dev->reset_work, nvme_reset_failed_dev); + queue_work(nvme_workq, &dev->reset_work); + return; + } + + if (!dev->abort_limit) + return; + + a_cmdid = alloc_cmdid(dev->queues[0], CMD_CTX_ABORT, special_completion, + ADMIN_TIMEOUT); + if (a_cmdid < 0) + return; + + memset(&cmd, 0, sizeof(cmd)); + cmd.abort.opcode = nvme_admin_abort_cmd; + cmd.abort.cid = cmdid; + cmd.abort.sqid = cpu_to_le16(nvmeq->qid); + cmd.abort.command_id = a_cmdid; + + --dev->abort_limit; + info[cmdid].aborted = 1; + info[cmdid].timeout = jiffies + ADMIN_TIMEOUT; + + dev_warn(nvmeq->q_dmadev, "Aborting I/O %d QID %d\n", cmdid, + nvmeq->qid); + nvme_submit_cmd(dev->queues[0], &cmd); +} + +/** * nvme_cancel_ios - Cancel outstanding I/Os * @queue: The queue to cancel I/Os on * @timeout: True to only cancel I/Os which have timed out @@ -1024,7 +1131,12 @@ continue; if (info[cmdid].ctx == CMD_CTX_CANCELLED) continue; - dev_warn(nvmeq->q_dmadev, "Cancelling I/O %d\n", cmdid); + if (timeout && nvmeq->dev->initialized) { + nvme_abort_cmd(cmdid, nvmeq); + continue; + } + dev_warn(nvmeq->q_dmadev, "Cancelling I/O %d QID %d\n", cmdid, + nvmeq->qid); ctx = cancel_cmdid(nvmeq, cmdid, &fn); fn(nvmeq->dev, ctx, &cqe); } @@ -1046,26 +1158,31 @@ kfree(nvmeq); } -static void nvme_free_queues(struct nvme_dev *dev) +static void nvme_free_queues(struct nvme_dev *dev, int lowest) { int i; - for (i = dev->queue_count - 1; i >= 0; i--) { + for (i = dev->queue_count - 1; i >= lowest; i--) { nvme_free_queue(dev->queues[i]); dev->queue_count--; dev->queues[i] = NULL; } } -static void nvme_disable_queue(struct nvme_dev *dev, int qid) +/** + * nvme_suspend_queue - put queue into suspended state + * @nvmeq - queue to suspend + * + * Returns 1 if already suspended, 0 otherwise. + */ +static int nvme_suspend_queue(struct nvme_queue *nvmeq) { - struct nvme_queue *nvmeq = dev->queues[qid]; - int vector = dev->entry[nvmeq->cq_vector].vector; + int vector = nvmeq->dev->entry[nvmeq->cq_vector].vector; spin_lock_irq(&nvmeq->q_lock); if (nvmeq->q_suspended) { spin_unlock_irq(&nvmeq->q_lock); - return; + return 1; } nvmeq->q_suspended = 1; spin_unlock_irq(&nvmeq->q_lock); @@ -1073,18 +1190,35 @@ irq_set_affinity_hint(vector, NULL); free_irq(vector, nvmeq); - /* Don't tell the adapter to delete the admin queue */ - if (qid) { - adapter_delete_sq(dev, qid); - adapter_delete_cq(dev, qid); - } + return 0; +} +static void nvme_clear_queue(struct nvme_queue *nvmeq) +{ spin_lock_irq(&nvmeq->q_lock); nvme_process_cq(nvmeq); nvme_cancel_ios(nvmeq, false); spin_unlock_irq(&nvmeq->q_lock); } +static void nvme_disable_queue(struct nvme_dev *dev, int qid) +{ + struct nvme_queue *nvmeq = dev->queues[qid]; + + if (!nvmeq) + return; + if (nvme_suspend_queue(nvmeq)) + return; + + /* Don't tell the adapter to delete the admin queue. + * Don't tell a removed adapter to delete IO queues. */ + if (qid && readl(&dev->bar->csts) != -1) { + adapter_delete_sq(dev, qid); + adapter_delete_cq(dev, qid); + } + nvme_clear_queue(nvmeq); +} + static struct nvme_queue *nvme_alloc_queue(struct nvme_dev *dev, int qid, int depth, int vector) { @@ -1107,15 +1241,18 @@ nvmeq->q_dmadev = dmadev; nvmeq->dev = dev; + snprintf(nvmeq->irqname, sizeof(nvmeq->irqname), "nvme%dq%d", + dev->instance, qid); spin_lock_init(&nvmeq->q_lock); nvmeq->cq_head = 0; nvmeq->cq_phase = 1; init_waitqueue_head(&nvmeq->sq_full); init_waitqueue_entry(&nvmeq->sq_cong_wait, nvme_thread); bio_list_init(&nvmeq->sq_cong); - nvmeq->q_db = &dev->dbs[qid << (dev->db_stride + 1)]; + nvmeq->q_db = &dev->dbs[qid * 2 * dev->db_stride]; nvmeq->q_depth = depth; nvmeq->cq_vector = vector; + nvmeq->qid = qid; nvmeq->q_suspended = 1; dev->queue_count++; @@ -1134,11 +1271,10 @@ { if (use_threaded_interrupts) return request_threaded_irq(dev->entry[nvmeq->cq_vector].vector, - nvme_irq_check, nvme_irq, - IRQF_DISABLED | IRQF_SHARED, + nvme_irq_check, nvme_irq, IRQF_SHARED, name, nvmeq); return request_irq(dev->entry[nvmeq->cq_vector].vector, nvme_irq, - IRQF_DISABLED | IRQF_SHARED, name, nvmeq); + IRQF_SHARED, name, nvmeq); } static void nvme_init_queue(struct nvme_queue *nvmeq, u16 qid) @@ -1149,7 +1285,7 @@ nvmeq->sq_tail = 0; nvmeq->cq_head = 0; nvmeq->cq_phase = 1; - nvmeq->q_db = &dev->dbs[qid << (dev->db_stride + 1)]; + nvmeq->q_db = &dev->dbs[qid * 2 * dev->db_stride]; memset(nvmeq->cmdid_data, 0, extra); memset((void *)nvmeq->cqes, 0, CQ_SIZE(nvmeq->q_depth)); nvme_cancel_ios(nvmeq, false); @@ -1169,13 +1305,13 @@ if (result < 0) goto release_cq; - result = queue_request_irq(dev, nvmeq, "nvme"); + result = queue_request_irq(dev, nvmeq, nvmeq->irqname); if (result < 0) goto release_sq; - spin_lock(&nvmeq->q_lock); + spin_lock_irq(&nvmeq->q_lock); nvme_init_queue(nvmeq, qid); - spin_unlock(&nvmeq->q_lock); + spin_unlock_irq(&nvmeq->q_lock); return result; @@ -1235,7 +1371,7 @@ cc = (readl(&dev->bar->cc) & ~NVME_CC_SHN_MASK) | NVME_CC_SHN_NORMAL; writel(cc, &dev->bar->cc); - timeout = 2 * HZ + jiffies; + timeout = SHUTDOWN_TIMEOUT + jiffies; while ((readl(&dev->bar->csts) & NVME_CSTS_SHST_MASK) != NVME_CSTS_SHST_CMPLT) { msleep(100); @@ -1287,13 +1423,13 @@ if (result) return result; - result = queue_request_irq(dev, nvmeq, "nvme admin"); + result = queue_request_irq(dev, nvmeq, nvmeq->irqname); if (result) return result; - spin_lock(&nvmeq->q_lock); + spin_lock_irq(&nvmeq->q_lock); nvme_init_queue(nvmeq, 0); - spin_unlock(&nvmeq->q_lock); + spin_unlock_irq(&nvmeq->q_lock); return result; } @@ -1569,10 +1705,47 @@ } } +#ifdef CONFIG_COMPAT +static int nvme_compat_ioctl(struct block_device *bdev, fmode_t mode, + unsigned int cmd, unsigned long arg) +{ + struct nvme_ns *ns = bdev->bd_disk->private_data; + + switch (cmd) { + case SG_IO: + return nvme_sg_io32(ns, arg); + } + return nvme_ioctl(bdev, mode, cmd, arg); +} +#else +#define nvme_compat_ioctl NULL +#endif + +static int nvme_open(struct block_device *bdev, fmode_t mode) +{ + struct nvme_ns *ns = bdev->bd_disk->private_data; + struct nvme_dev *dev = ns->dev; + + kref_get(&dev->kref); + return 0; +} + +static void nvme_free_dev(struct kref *kref); + +static void nvme_release(struct gendisk *disk, fmode_t mode) +{ + struct nvme_ns *ns = disk->private_data; + struct nvme_dev *dev = ns->dev; + + kref_put(&dev->kref, nvme_free_dev); +} + static const struct block_device_operations nvme_fops = { .owner = THIS_MODULE, .ioctl = nvme_ioctl, - .compat_ioctl = nvme_ioctl, + .compat_ioctl = nvme_compat_ioctl, + .open = nvme_open, + .release = nvme_release, }; static void nvme_resubmit_bios(struct nvme_queue *nvmeq) @@ -1596,13 +1769,25 @@ static int nvme_kthread(void *data) { - struct nvme_dev *dev; + struct nvme_dev *dev, *next; while (!kthread_should_stop()) { set_current_state(TASK_INTERRUPTIBLE); spin_lock(&dev_list_lock); - list_for_each_entry(dev, &dev_list, node) { + list_for_each_entry_safe(dev, next, &dev_list, node) { int i; + if (readl(&dev->bar->csts) & NVME_CSTS_CFS && + dev->initialized) { + if (work_busy(&dev->reset_work)) + continue; + list_del_init(&dev->node); + dev_warn(&dev->pci_dev->dev, + "Failed status, reset controller\n"); + PREPARE_WORK(&dev->reset_work, + nvme_reset_failed_dev); + queue_work(nvme_workq, &dev->reset_work); + continue; + } for (i = 0; i < dev->queue_count; i++) { struct nvme_queue *nvmeq = dev->queues[i]; if (!nvmeq) @@ -1623,33 +1808,6 @@ return 0; } -static DEFINE_IDA(nvme_index_ida); - -static int nvme_get_ns_idx(void) -{ - int index, error; - - do { - if (!ida_pre_get(&nvme_index_ida, GFP_KERNEL)) - return -1; - - spin_lock(&dev_list_lock); - error = ida_get_new(&nvme_index_ida, &index); - spin_unlock(&dev_list_lock); - } while (error == -EAGAIN); - - if (error) - index = -1; - return index; -} - -static void nvme_put_ns_idx(int index) -{ - spin_lock(&dev_list_lock); - ida_remove(&nvme_index_ida, index); - spin_unlock(&dev_list_lock); -} - static void nvme_config_discard(struct nvme_ns *ns) { u32 logical_block_size = queue_logical_block_size(ns->queue); @@ -1683,7 +1841,7 @@ ns->dev = dev; ns->queue->queuedata = ns; - disk = alloc_disk(NVME_MINORS); + disk = alloc_disk(0); if (!disk) goto out_free_queue; ns->ns_id = nsid; @@ -1696,12 +1854,12 @@ blk_queue_max_hw_sectors(ns->queue, dev->max_hw_sectors); disk->major = nvme_major; - disk->minors = NVME_MINORS; - disk->first_minor = NVME_MINORS * nvme_get_ns_idx(); + disk->first_minor = 0; disk->fops = &nvme_fops; disk->private_data = ns; disk->queue = ns->queue; disk->driverfs_dev = &dev->pci_dev->dev; + disk->flags = GENHD_FL_EXT_DEVT; sprintf(disk->disk_name, "nvme%dn%d", dev->instance, nsid); set_capacity(disk, le64_to_cpup(&id->nsze) << (ns->lba_shift - 9)); @@ -1717,15 +1875,6 @@ return NULL; } -static void nvme_ns_free(struct nvme_ns *ns) -{ - int index = ns->disk->first_minor / NVME_MINORS; - put_disk(ns->disk); - nvme_put_ns_idx(index); - blk_cleanup_queue(ns->queue); - kfree(ns); -} - static int set_queue_count(struct nvme_dev *dev, int count) { int status; @@ -1741,11 +1890,12 @@ static size_t db_bar_size(struct nvme_dev *dev, unsigned nr_io_queues) { - return 4096 + ((nr_io_queues + 1) << (dev->db_stride + 3)); + return 4096 + ((nr_io_queues + 1) * 8 * dev->db_stride); } static int nvme_setup_io_queues(struct nvme_dev *dev) { + struct nvme_queue *adminq = dev->queues[0]; struct pci_dev *pdev = dev->pci_dev; int result, cpu, i, vecs, nr_io_queues, size, q_depth; @@ -1772,7 +1922,7 @@ } /* Deregister the admin queue's interrupt */ - free_irq(dev->entry[0].vector, dev->queues[0]); + free_irq(dev->entry[0].vector, adminq); vecs = nr_io_queues; for (i = 0; i < vecs; i++) @@ -1810,9 +1960,9 @@ */ nr_io_queues = vecs; - result = queue_request_irq(dev, dev->queues[0], "nvme admin"); + result = queue_request_irq(dev, adminq, adminq->irqname); if (result) { - dev->queues[0]->q_suspended = 1; + adminq->q_suspended = 1; goto free_queues; } @@ -1821,9 +1971,9 @@ for (i = dev->queue_count - 1; i > nr_io_queues; i--) { struct nvme_queue *nvmeq = dev->queues[i]; - spin_lock(&nvmeq->q_lock); + spin_lock_irq(&nvmeq->q_lock); nvme_cancel_ios(nvmeq, false); - spin_unlock(&nvmeq->q_lock); + spin_unlock_irq(&nvmeq->q_lock); nvme_free_queue(nvmeq); dev->queue_count--; @@ -1864,7 +2014,7 @@ return 0; free_queues: - nvme_free_queues(dev); + nvme_free_queues(dev, 1); return result; } @@ -1876,6 +2026,7 @@ */ static int nvme_dev_add(struct nvme_dev *dev) { + struct pci_dev *pdev = dev->pci_dev; int res; unsigned nn, i; struct nvme_ns *ns; @@ -1885,8 +2036,7 @@ dma_addr_t dma_addr; int shift = NVME_CAP_MPSMIN(readq(&dev->bar->cap)) + 12; - mem = dma_alloc_coherent(&dev->pci_dev->dev, 8192, &dma_addr, - GFP_KERNEL); + mem = dma_alloc_coherent(&pdev->dev, 8192, &dma_addr, GFP_KERNEL); if (!mem) return -ENOMEM; @@ -1899,13 +2049,14 @@ ctrl = mem; nn = le32_to_cpup(&ctrl->nn); dev->oncs = le16_to_cpup(&ctrl->oncs); + dev->abort_limit = ctrl->acl + 1; memcpy(dev->serial, ctrl->sn, sizeof(ctrl->sn)); memcpy(dev->model, ctrl->mn, sizeof(ctrl->mn)); memcpy(dev->firmware_rev, ctrl->fr, sizeof(ctrl->fr)); if (ctrl->mdts) dev->max_hw_sectors = 1 << (ctrl->mdts + shift - 9); - if ((dev->pci_dev->vendor == PCI_VENDOR_ID_INTEL) && - (dev->pci_dev->device == 0x0953) && ctrl->vs[3]) + if ((pdev->vendor == PCI_VENDOR_ID_INTEL) && + (pdev->device == 0x0953) && ctrl->vs[3]) dev->stripe_size = 1 << (ctrl->vs[3] + shift); id_ns = mem; @@ -1953,16 +2104,21 @@ dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32))) goto disable; - pci_set_drvdata(pdev, dev); dev->bar = ioremap(pci_resource_start(pdev, 0), 8192); if (!dev->bar) goto disable; - - dev->db_stride = NVME_CAP_STRIDE(readq(&dev->bar->cap)); + if (readl(&dev->bar->csts) == -1) { + result = -ENODEV; + goto unmap; + } + dev->db_stride = 1 << NVME_CAP_STRIDE(readq(&dev->bar->cap)); dev->dbs = ((void __iomem *)dev->bar) + 4096; return 0; + unmap: + iounmap(dev->bar); + dev->bar = NULL; disable: pci_release_regions(pdev); disable_pci: @@ -1980,37 +2136,183 @@ if (dev->bar) { iounmap(dev->bar); dev->bar = NULL; + pci_release_regions(dev->pci_dev); } - pci_release_regions(dev->pci_dev); if (pci_is_enabled(dev->pci_dev)) pci_disable_device(dev->pci_dev); } +struct nvme_delq_ctx { + struct task_struct *waiter; + struct kthread_worker *worker; + atomic_t refcount; +}; + +static void nvme_wait_dq(struct nvme_delq_ctx *dq, struct nvme_dev *dev) +{ + dq->waiter = current; + mb(); + + for (;;) { + set_current_state(TASK_KILLABLE); + if (!atomic_read(&dq->refcount)) + break; + if (!schedule_timeout(ADMIN_TIMEOUT) || + fatal_signal_pending(current)) { + set_current_state(TASK_RUNNING); + + nvme_disable_ctrl(dev, readq(&dev->bar->cap)); + nvme_disable_queue(dev, 0); + + send_sig(SIGKILL, dq->worker->task, 1); + flush_kthread_worker(dq->worker); + return; + } + } + set_current_state(TASK_RUNNING); +} + +static void nvme_put_dq(struct nvme_delq_ctx *dq) +{ + atomic_dec(&dq->refcount); + if (dq->waiter) + wake_up_process(dq->waiter); +} + +static struct nvme_delq_ctx *nvme_get_dq(struct nvme_delq_ctx *dq) +{ + atomic_inc(&dq->refcount); + return dq; +} + +static void nvme_del_queue_end(struct nvme_queue *nvmeq) +{ + struct nvme_delq_ctx *dq = nvmeq->cmdinfo.ctx; + + nvme_clear_queue(nvmeq); + nvme_put_dq(dq); +} + +static int adapter_async_del_queue(struct nvme_queue *nvmeq, u8 opcode, + kthread_work_func_t fn) +{ + struct nvme_command c; + + memset(&c, 0, sizeof(c)); + c.delete_queue.opcode = opcode; + c.delete_queue.qid = cpu_to_le16(nvmeq->qid); + + init_kthread_work(&nvmeq->cmdinfo.work, fn); + return nvme_submit_admin_cmd_async(nvmeq->dev, &c, &nvmeq->cmdinfo); +} + +static void nvme_del_cq_work_handler(struct kthread_work *work) +{ + struct nvme_queue *nvmeq = container_of(work, struct nvme_queue, + cmdinfo.work); + nvme_del_queue_end(nvmeq); +} + +static int nvme_delete_cq(struct nvme_queue *nvmeq) +{ + return adapter_async_del_queue(nvmeq, nvme_admin_delete_cq, + nvme_del_cq_work_handler); +} + +static void nvme_del_sq_work_handler(struct kthread_work *work) +{ + struct nvme_queue *nvmeq = container_of(work, struct nvme_queue, + cmdinfo.work); + int status = nvmeq->cmdinfo.status; + + if (!status) + status = nvme_delete_cq(nvmeq); + if (status) + nvme_del_queue_end(nvmeq); +} + +static int nvme_delete_sq(struct nvme_queue *nvmeq) +{ + return adapter_async_del_queue(nvmeq, nvme_admin_delete_sq, + nvme_del_sq_work_handler); +} + +static void nvme_del_queue_start(struct kthread_work *work) +{ + struct nvme_queue *nvmeq = container_of(work, struct nvme_queue, + cmdinfo.work); + allow_signal(SIGKILL); + if (nvme_delete_sq(nvmeq)) + nvme_del_queue_end(nvmeq); +} + +static void nvme_disable_io_queues(struct nvme_dev *dev) +{ + int i; + DEFINE_KTHREAD_WORKER_ONSTACK(worker); + struct nvme_delq_ctx dq; + struct task_struct *kworker_task = kthread_run(kthread_worker_fn, + &worker, "nvme%d", dev->instance); + + if (IS_ERR(kworker_task)) { + dev_err(&dev->pci_dev->dev, + "Failed to create queue del task\n"); + for (i = dev->queue_count - 1; i > 0; i--) + nvme_disable_queue(dev, i); + return; + } + + dq.waiter = NULL; + atomic_set(&dq.refcount, 0); + dq.worker = &worker; + for (i = dev->queue_count - 1; i > 0; i--) { + struct nvme_queue *nvmeq = dev->queues[i]; + + if (nvme_suspend_queue(nvmeq)) + continue; + nvmeq->cmdinfo.ctx = nvme_get_dq(&dq); + nvmeq->cmdinfo.worker = dq.worker; + init_kthread_work(&nvmeq->cmdinfo.work, nvme_del_queue_start); + queue_kthread_work(dq.worker, &nvmeq->cmdinfo.work); + } + nvme_wait_dq(&dq, dev); + kthread_stop(kworker_task); +} + static void nvme_dev_shutdown(struct nvme_dev *dev) { int i; - for (i = dev->queue_count - 1; i >= 0; i--) - nvme_disable_queue(dev, i); + dev->initialized = 0; spin_lock(&dev_list_lock); list_del_init(&dev->node); spin_unlock(&dev_list_lock); - if (dev->bar) + if (!dev->bar || (dev->bar && readl(&dev->bar->csts) == -1)) { + for (i = dev->queue_count - 1; i >= 0; i--) { + struct nvme_queue *nvmeq = dev->queues[i]; + nvme_suspend_queue(nvmeq); + nvme_clear_queue(nvmeq); + } + } else { + nvme_disable_io_queues(dev); nvme_shutdown_ctrl(dev); + nvme_disable_queue(dev, 0); + } nvme_dev_unmap(dev); } static void nvme_dev_remove(struct nvme_dev *dev) { - struct nvme_ns *ns, *next; + struct nvme_ns *ns; - list_for_each_entry_safe(ns, next, &dev->namespaces, list) { - list_del(&ns->list); - del_gendisk(ns->disk); - nvme_ns_free(ns); + list_for_each_entry(ns, &dev->namespaces, list) { + if (ns->disk->flags & GENHD_FL_UP) + del_gendisk(ns->disk); + if (!blk_queue_dying(ns->queue)) + blk_cleanup_queue(ns->queue); } } @@ -2067,14 +2369,22 @@ spin_unlock(&dev_list_lock); } +static void nvme_free_namespaces(struct nvme_dev *dev) +{ + struct nvme_ns *ns, *next; + + list_for_each_entry_safe(ns, next, &dev->namespaces, list) { + list_del(&ns->list); + put_disk(ns->disk); + kfree(ns); + } +} + static void nvme_free_dev(struct kref *kref) { struct nvme_dev *dev = container_of(kref, struct nvme_dev, kref); - nvme_dev_remove(dev); - nvme_dev_shutdown(dev); - nvme_free_queues(dev); - nvme_release_instance(dev); - nvme_release_prp_pools(dev); + + nvme_free_namespaces(dev); kfree(dev->queues); kfree(dev->entry); kfree(dev); @@ -2138,6 +2448,7 @@ return result; disable: + nvme_disable_queue(dev, 0); spin_lock(&dev_list_lock); list_del_init(&dev->node); spin_unlock(&dev_list_lock); @@ -2146,6 +2457,71 @@ return result; } +static int nvme_remove_dead_ctrl(void *arg) +{ + struct nvme_dev *dev = (struct nvme_dev *)arg; + struct pci_dev *pdev = dev->pci_dev; + + if (pci_get_drvdata(pdev)) + pci_stop_and_remove_bus_device(pdev); + kref_put(&dev->kref, nvme_free_dev); + return 0; +} + +static void nvme_remove_disks(struct work_struct *ws) +{ + int i; + struct nvme_dev *dev = container_of(ws, struct nvme_dev, reset_work); + + nvme_dev_remove(dev); + spin_lock(&dev_list_lock); + for (i = dev->queue_count - 1; i > 0; i--) { + BUG_ON(!dev->queues[i] || !dev->queues[i]->q_suspended); + nvme_free_queue(dev->queues[i]); + dev->queue_count--; + dev->queues[i] = NULL; + } + spin_unlock(&dev_list_lock); +} + +static int nvme_dev_resume(struct nvme_dev *dev) +{ + int ret; + + ret = nvme_dev_start(dev); + if (ret && ret != -EBUSY) + return ret; + if (ret == -EBUSY) { + spin_lock(&dev_list_lock); + PREPARE_WORK(&dev->reset_work, nvme_remove_disks); + queue_work(nvme_workq, &dev->reset_work); + spin_unlock(&dev_list_lock); + } + dev->initialized = 1; + return 0; +} + +static void nvme_dev_reset(struct nvme_dev *dev) +{ + nvme_dev_shutdown(dev); + if (nvme_dev_resume(dev)) { + dev_err(&dev->pci_dev->dev, "Device failed to resume\n"); + kref_get(&dev->kref); + if (IS_ERR(kthread_run(nvme_remove_dead_ctrl, dev, "nvme%d", + dev->instance))) { + dev_err(&dev->pci_dev->dev, + "Failed to start controller remove task\n"); + kref_put(&dev->kref, nvme_free_dev); + } + } +} + +static void nvme_reset_failed_dev(struct work_struct *ws) +{ + struct nvme_dev *dev = container_of(ws, struct nvme_dev, reset_work); + nvme_dev_reset(dev); +} + static int nvme_probe(struct pci_dev *pdev, const struct pci_device_id *id) { int result = -ENOMEM; @@ -2164,8 +2540,9 @@ goto free; INIT_LIST_HEAD(&dev->namespaces); + INIT_WORK(&dev->reset_work, nvme_reset_failed_dev); dev->pci_dev = pdev; - + pci_set_drvdata(pdev, dev); result = nvme_set_instance(dev); if (result) goto free; @@ -2174,6 +2551,7 @@ if (result) goto release; + kref_init(&dev->kref); result = nvme_dev_start(dev); if (result) { if (result == -EBUSY) @@ -2195,15 +2573,16 @@ if (result) goto remove; - kref_init(&dev->kref); + dev->initialized = 1; return 0; remove: nvme_dev_remove(dev); + nvme_free_namespaces(dev); shutdown: nvme_dev_shutdown(dev); release_pools: - nvme_free_queues(dev); + nvme_free_queues(dev, 0); nvme_release_prp_pools(dev); release: nvme_release_instance(dev); @@ -2214,10 +2593,28 @@ return result; } +static void nvme_shutdown(struct pci_dev *pdev) +{ + struct nvme_dev *dev = pci_get_drvdata(pdev); + nvme_dev_shutdown(dev); +} + static void nvme_remove(struct pci_dev *pdev) { struct nvme_dev *dev = pci_get_drvdata(pdev); + + spin_lock(&dev_list_lock); + list_del_init(&dev->node); + spin_unlock(&dev_list_lock); + + pci_set_drvdata(pdev, NULL); + flush_work(&dev->reset_work); misc_deregister(&dev->miscdev); + nvme_dev_remove(dev); + nvme_dev_shutdown(dev); + nvme_free_queues(dev, 0); + nvme_release_instance(dev); + nvme_release_prp_pools(dev); kref_put(&dev->kref, nvme_free_dev); } @@ -2241,13 +2638,12 @@ { struct pci_dev *pdev = to_pci_dev(dev); struct nvme_dev *ndev = pci_get_drvdata(pdev); - int ret; - ret = nvme_dev_start(ndev); - /* XXX: should remove gendisks if resume fails */ - if (ret) - nvme_free_queues(ndev); - return ret; + if (nvme_dev_resume(ndev) && !work_busy(&ndev->reset_work)) { + PREPARE_WORK(&ndev->reset_work, nvme_reset_failed_dev); + queue_work(nvme_workq, &ndev->reset_work); + } + return 0; } static SIMPLE_DEV_PM_OPS(nvme_dev_pm_ops, nvme_suspend, nvme_resume); @@ -2274,6 +2670,7 @@ .id_table = nvme_id_table, .probe = nvme_probe, .remove = nvme_remove, + .shutdown = nvme_shutdown, .driver = { .pm = &nvme_dev_pm_ops, }, @@ -2288,9 +2685,14 @@ if (IS_ERR(nvme_thread)) return PTR_ERR(nvme_thread); + result = -ENOMEM; + nvme_workq = create_singlethread_workqueue("nvme"); + if (!nvme_workq) + goto kill_kthread; + result = register_blkdev(nvme_major, "nvme"); if (result < 0) - goto kill_kthread; + goto kill_workq; else if (result > 0) nvme_major = result; @@ -2301,6 +2703,8 @@ unregister_blkdev: unregister_blkdev(nvme_major, "nvme"); + kill_workq: + destroy_workqueue(nvme_workq); kill_kthread: kthread_stop(nvme_thread); return result; @@ -2310,6 +2714,7 @@ { pci_unregister_driver(&nvme_driver); unregister_blkdev(nvme_major, "nvme"); + destroy_workqueue(nvme_workq); kthread_stop(nvme_thread); } --- linux-3.13.0.orig/drivers/block/nvme-scsi.c +++ linux-3.13.0/drivers/block/nvme-scsi.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -3038,6 +3039,152 @@ return retcode; } +#ifdef CONFIG_COMPAT +typedef struct sg_io_hdr32 { + compat_int_t interface_id; /* [i] 'S' for SCSI generic (required) */ + compat_int_t dxfer_direction; /* [i] data transfer direction */ + unsigned char cmd_len; /* [i] SCSI command length ( <= 16 bytes) */ + unsigned char mx_sb_len; /* [i] max length to write to sbp */ + unsigned short iovec_count; /* [i] 0 implies no scatter gather */ + compat_uint_t dxfer_len; /* [i] byte count of data transfer */ + compat_uint_t dxferp; /* [i], [*io] points to data transfer memory + or scatter gather list */ + compat_uptr_t cmdp; /* [i], [*i] points to command to perform */ + compat_uptr_t sbp; /* [i], [*o] points to sense_buffer memory */ + compat_uint_t timeout; /* [i] MAX_UINT->no timeout (unit: millisec) */ + compat_uint_t flags; /* [i] 0 -> default, see SG_FLAG... */ + compat_int_t pack_id; /* [i->o] unused internally (normally) */ + compat_uptr_t usr_ptr; /* [i->o] unused internally */ + unsigned char status; /* [o] scsi status */ + unsigned char masked_status; /* [o] shifted, masked scsi status */ + unsigned char msg_status; /* [o] messaging level data (optional) */ + unsigned char sb_len_wr; /* [o] byte count actually written to sbp */ + unsigned short host_status; /* [o] errors from host adapter */ + unsigned short driver_status; /* [o] errors from software driver */ + compat_int_t resid; /* [o] dxfer_len - actual_transferred */ + compat_uint_t duration; /* [o] time taken by cmd (unit: millisec) */ + compat_uint_t info; /* [o] auxiliary information */ +} sg_io_hdr32_t; /* 64 bytes long (on sparc32) */ + +typedef struct sg_iovec32 { + compat_uint_t iov_base; + compat_uint_t iov_len; +} sg_iovec32_t; + +static int sg_build_iovec(sg_io_hdr_t __user *sgio, void __user *dxferp, u16 iovec_count) +{ + sg_iovec_t __user *iov = (sg_iovec_t __user *) (sgio + 1); + sg_iovec32_t __user *iov32 = dxferp; + int i; + + for (i = 0; i < iovec_count; i++) { + u32 base, len; + + if (get_user(base, &iov32[i].iov_base) || + get_user(len, &iov32[i].iov_len) || + put_user(compat_ptr(base), &iov[i].iov_base) || + put_user(len, &iov[i].iov_len)) + return -EFAULT; + } + + if (put_user(iov, &sgio->dxferp)) + return -EFAULT; + return 0; +} + +int nvme_sg_io32(struct nvme_ns *ns, unsigned long arg) +{ + sg_io_hdr32_t __user *sgio32 = (sg_io_hdr32_t __user *)arg; + sg_io_hdr_t __user *sgio; + u16 iovec_count; + u32 data; + void __user *dxferp; + int err; + int interface_id; + + if (get_user(interface_id, &sgio32->interface_id)) + return -EFAULT; + if (interface_id != 'S') + return -EINVAL; + + if (get_user(iovec_count, &sgio32->iovec_count)) + return -EFAULT; + + { + void __user *top = compat_alloc_user_space(0); + void __user *new = compat_alloc_user_space(sizeof(sg_io_hdr_t) + + (iovec_count * sizeof(sg_iovec_t))); + if (new > top) + return -EINVAL; + + sgio = new; + } + + /* Ok, now construct. */ + if (copy_in_user(&sgio->interface_id, &sgio32->interface_id, + (2 * sizeof(int)) + + (2 * sizeof(unsigned char)) + + (1 * sizeof(unsigned short)) + + (1 * sizeof(unsigned int)))) + return -EFAULT; + + if (get_user(data, &sgio32->dxferp)) + return -EFAULT; + dxferp = compat_ptr(data); + if (iovec_count) { + if (sg_build_iovec(sgio, dxferp, iovec_count)) + return -EFAULT; + } else { + if (put_user(dxferp, &sgio->dxferp)) + return -EFAULT; + } + + { + unsigned char __user *cmdp; + unsigned char __user *sbp; + + if (get_user(data, &sgio32->cmdp)) + return -EFAULT; + cmdp = compat_ptr(data); + + if (get_user(data, &sgio32->sbp)) + return -EFAULT; + sbp = compat_ptr(data); + + if (put_user(cmdp, &sgio->cmdp) || + put_user(sbp, &sgio->sbp)) + return -EFAULT; + } + + if (copy_in_user(&sgio->timeout, &sgio32->timeout, + 3 * sizeof(int))) + return -EFAULT; + + if (get_user(data, &sgio32->usr_ptr)) + return -EFAULT; + if (put_user(compat_ptr(data), &sgio->usr_ptr)) + return -EFAULT; + + err = nvme_sg_io(ns, sgio); + if (err >= 0) { + void __user *datap; + + if (copy_in_user(&sgio32->pack_id, &sgio->pack_id, + sizeof(int)) || + get_user(datap, &sgio->usr_ptr) || + put_user((u32)(unsigned long)datap, + &sgio32->usr_ptr) || + copy_in_user(&sgio32->status, &sgio->status, + (4 * sizeof(unsigned char)) + + (2 * sizeof(unsigned short)) + + (3 * sizeof(int)))) + err = -EFAULT; + } + + return err; +} +#endif + int nvme_sg_get_version_num(int __user *ip) { return put_user(sg_version_num, ip); --- linux-3.13.0.orig/drivers/block/paride/pd.c +++ linux-3.13.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-3.13.0.orig/drivers/block/paride/pt.c +++ linux-3.13.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-3.13.0.orig/drivers/block/rbd.c +++ linux-3.13.0/drivers/block/rbd.c @@ -93,6 +93,8 @@ #define RBD_MINORS_PER_MAJOR 256 /* max minors per blkdev */ +#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)) @@ -394,7 +396,7 @@ size_t count); static ssize_t rbd_remove(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 BUS_ATTR(add, S_IWUSR, NULL, rbd_add); @@ -461,6 +463,7 @@ # define rbd_assert(expr) ((void) 0) #endif /* !RBD_DEBUG */ +static void rbd_osd_copyup_callback(struct rbd_obj_request *obj_request); static int rbd_img_obj_request_submit(struct rbd_obj_request *obj_request); static void rbd_img_parent_read(struct rbd_obj_request *obj_request); static void rbd_dev_remove_parent(struct rbd_device *rbd_dev); @@ -1379,6 +1382,14 @@ return test_bit(OBJ_REQ_EXISTS, &obj_request->flags) != 0; } +static bool obj_request_overlaps_parent(struct rbd_obj_request *obj_request) +{ + struct rbd_device *rbd_dev = obj_request->img_request->rbd_dev; + + return obj_request->img_offset < + round_up(rbd_dev->parent_overlap, rbd_obj_bytes(&rbd_dev->header)); +} + static void rbd_obj_request_get(struct rbd_obj_request *obj_request) { dout("%s: obj %p (was %d)\n", __func__, obj_request, @@ -1395,6 +1406,13 @@ kref_put(&obj_request->kref, rbd_obj_request_destroy); } +static void rbd_img_request_get(struct rbd_img_request *img_request) +{ + dout("%s: img %p (was %d)\n", __func__, img_request, + atomic_read(&img_request->kref.refcount)); + kref_get(&img_request->kref); +} + static bool img_request_child_test(struct rbd_img_request *img_request); static void rbd_parent_request_destroy(struct kref *kref); static void rbd_img_request_destroy(struct kref *kref); @@ -1649,6 +1667,16 @@ obj_request_done_set(obj_request); } +static void rbd_osd_call_callback(struct rbd_obj_request *obj_request) +{ + dout("%s: obj %p\n", __func__, obj_request); + + if (obj_request_img_data_test(obj_request)) + rbd_osd_copyup_callback(obj_request); + else + obj_request_done_set(obj_request); +} + static void rbd_osd_req_callback(struct ceph_osd_request *osd_req, struct ceph_msg *msg) { @@ -1687,6 +1715,8 @@ rbd_osd_stat_callback(obj_request); break; case CEPH_OSD_OP_CALL: + rbd_osd_call_callback(obj_request); + break; case CEPH_OSD_OP_NOTIFY_ACK: case CEPH_OSD_OP_WATCH: rbd_osd_trivial_callback(obj_request); @@ -1830,11 +1860,11 @@ rbd_assert(obj_request_type_valid(type)); size = strlen(object_name) + 1; - name = kmalloc(size, GFP_KERNEL); + name = kmalloc(size, GFP_NOIO); if (!name) return NULL; - obj_request = kmem_cache_zalloc(rbd_obj_request_cache, GFP_KERNEL); + obj_request = kmem_cache_zalloc(rbd_obj_request_cache, GFP_NOIO); if (!obj_request) { kfree(name); return NULL; @@ -1930,32 +1960,26 @@ * If an image has a non-zero parent overlap, get a reference to its * parent. * - * We must get the reference before checking for the overlap to - * coordinate properly with zeroing the parent overlap in - * rbd_dev_v2_parent_info() when an image gets flattened. We - * drop it again if there is no overlap. - * * Returns true if the rbd device has a parent with a non-zero * overlap and a reference for it was successfully taken, or * false otherwise. */ static bool rbd_dev_parent_get(struct rbd_device *rbd_dev) { - int counter; + int counter = 0; if (!rbd_dev->parent_spec) return false; - counter = atomic_inc_return_safe(&rbd_dev->parent_ref); - if (counter > 0 && rbd_dev->parent_overlap) - return true; - - /* Image was flattened, but parent is not yet torn down */ + down_read(&rbd_dev->header_rwsem); + if (rbd_dev->parent_overlap) + counter = atomic_inc_return_safe(&rbd_dev->parent_ref); + up_read(&rbd_dev->header_rwsem); if (counter < 0) rbd_warn(rbd_dev, "parent reference overflow\n"); - return false; + return counter > 0; } /* @@ -2094,6 +2118,11 @@ result, xferred); if (!img_request->result) img_request->result = result; + /* + * Need to end I/O on the entire obj_request worth of + * bytes in case of error. + */ + xferred = obj_request->length; } /* Image object requests don't own their page array */ @@ -2128,7 +2157,6 @@ rbd_assert(img_request->obj_request_count > 0); rbd_assert(which != BAD_WHICH); rbd_assert(which < img_request->obj_request_count); - rbd_assert(which >= img_request->next_completion); spin_lock_irq(&img_request->completion_lock); if (which != img_request->next_completion) @@ -2148,6 +2176,7 @@ img_request->next_completion = which; out: spin_unlock_irq(&img_request->completion_lock); + rbd_img_request_put(img_request); if (!more) rbd_img_request_complete(img_request); @@ -2244,6 +2273,7 @@ goto out_partial; obj_request->osd_req = osd_req; obj_request->callback = rbd_img_obj_callback; + rbd_img_request_get(img_request); osd_req_op_extent_init(osd_req, 0, opcode, offset, length, 0, 0); @@ -2278,13 +2308,15 @@ } static void -rbd_img_obj_copyup_callback(struct rbd_obj_request *obj_request) +rbd_osd_copyup_callback(struct rbd_obj_request *obj_request) { struct rbd_img_request *img_request; struct rbd_device *rbd_dev; struct page **pages; u32 page_count; + dout("%s: obj %p\n", __func__, obj_request); + rbd_assert(obj_request->type == OBJ_REQUEST_BIO); rbd_assert(obj_request_img_data_test(obj_request)); img_request = obj_request->img_request; @@ -2310,9 +2342,7 @@ if (!obj_request->result) obj_request->xferred = obj_request->length; - /* Finish up with the normal image object callback */ - - rbd_img_obj_callback(obj_request); + obj_request_done_set(obj_request); } static void @@ -2409,7 +2439,6 @@ /* All set, send it off. */ - orig_request->callback = rbd_img_obj_copyup_callback; osdc = &rbd_dev->rbd_client->client->osdc; img_result = rbd_obj_request_submit(osdc, orig_request); if (!img_result) @@ -2666,7 +2695,7 @@ */ if (!img_request_write_test(img_request) || !img_request_layered_test(img_request) || - rbd_dev->parent_overlap <= obj_request->img_offset || + !obj_request_overlaps_parent(obj_request) || ((known = obj_request_known_test(obj_request)) && obj_request_exists_test(obj_request))) { @@ -3203,7 +3232,7 @@ page_count = (u32) calc_pages_for(offset, length); pages = ceph_alloc_page_vector(page_count, GFP_KERNEL); if (IS_ERR(pages)) - ret = PTR_ERR(pages); + return PTR_ERR(pages); ret = -ENOMEM; obj_request = rbd_obj_request_create(object_name, offset, length, @@ -3414,6 +3443,9 @@ blk_queue_io_opt(q, segment_size); 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; @@ -3877,7 +3909,6 @@ */ if (rbd_dev->parent_overlap) { rbd_dev->parent_overlap = 0; - smp_mb(); rbd_dev_parent_put(rbd_dev); pr_info("%s: clone image has been flattened\n", rbd_dev->disk->disk_name); @@ -3921,7 +3952,6 @@ * treat it specially. */ rbd_dev->parent_overlap = overlap; - smp_mb(); if (!overlap) { /* A null parent_spec indicates it's the initial probe */ @@ -4765,10 +4795,7 @@ { struct rbd_image_header *header; - /* Drop parent reference unless it's already been done (or none) */ - - if (rbd_dev->parent_overlap) - rbd_dev_parent_put(rbd_dev); + rbd_dev_parent_put(rbd_dev); /* Free dynamic fields from the header, then zero it out */ @@ -4814,45 +4841,50 @@ 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); - if (!parent) + if (++depth > RBD_MAX_PARENT_CHAIN_LEN) { + pr_info("parent chain is too long (%d)\n", depth); + ret = -EINVAL; + goto out_err; + } + + parent = rbd_dev_create(rbd_dev->rbd_client, rbd_dev->parent_spec); + 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, false); + 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; } @@ -4958,7 +4990,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; int tmp; @@ -4979,7 +5011,7 @@ if (ret) goto err_out_format; - if (mapping) { + if (!depth) { ret = rbd_dev_header_watch_sync(rbd_dev, true); if (ret) goto out_header_name; @@ -4996,7 +5028,7 @@ if (ret) goto err_out_probe; - ret = rbd_dev_probe_parent(rbd_dev); + ret = rbd_dev_probe_parent(rbd_dev, depth); if (ret) goto err_out_probe; @@ -5007,7 +5039,7 @@ err_out_probe: rbd_dev_unprobe(rbd_dev); err_out_watch: - if (mapping) { + if (!depth) { tmp = rbd_dev_header_watch_sync(rbd_dev, false); if (tmp) rbd_warn(rbd_dev, "unable to tear down " @@ -5078,7 +5110,7 @@ rbdc = NULL; /* rbd_dev now owns this */ spec = 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-3.13.0.orig/drivers/block/sunvdc.c +++ linux-3.13.0/drivers/block/sunvdc.c @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -22,8 +23,8 @@ #define DRV_MODULE_NAME "sunvdc" #define PFX DRV_MODULE_NAME ": " -#define DRV_MODULE_VERSION "1.0" -#define DRV_MODULE_RELDATE "June 25, 2007" +#define DRV_MODULE_VERSION "1.1" +#define DRV_MODULE_RELDATE "February 13, 2013" static char version[] = DRV_MODULE_NAME ".c:v" DRV_MODULE_VERSION " (" DRV_MODULE_RELDATE ")\n"; @@ -32,7 +33,7 @@ MODULE_LICENSE("GPL"); MODULE_VERSION(DRV_MODULE_VERSION); -#define VDC_TX_RING_SIZE 256 +#define VDC_TX_RING_SIZE 512 #define WAITING_FOR_LINK_UP 0x01 #define WAITING_FOR_TX_SPACE 0x02 @@ -65,11 +66,9 @@ u64 operations; u32 vdisk_size; u8 vdisk_type; + u8 vdisk_mtype; char disk_name[32]; - - struct vio_disk_geom geom; - struct vio_disk_vtoc label; }; static inline struct vdc_port *to_vdc_port(struct vio_driver_state *vio) @@ -79,9 +78,16 @@ /* Ordered from largest major to lowest */ static struct vio_version vdc_versions[] = { + { .major = 1, .minor = 1 }, { .major = 1, .minor = 0 }, }; +static inline int vdc_version_supported(struct vdc_port *port, + u16 major, u16 minor) +{ + return port->vio.ver.major == major && port->vio.ver.minor >= minor; +} + #define VDCBLK_NAME "vdisk" static int vdc_major; #define PARTITION_SHIFT 3 @@ -94,18 +100,54 @@ static int vdc_getgeo(struct block_device *bdev, struct hd_geometry *geo) { struct gendisk *disk = bdev->bd_disk; - struct vdc_port *port = disk->private_data; + sector_t nsect = get_capacity(disk); + sector_t cylinders = nsect; - geo->heads = (u8) port->geom.num_hd; - geo->sectors = (u8) port->geom.num_sec; - geo->cylinders = port->geom.num_cyl; + geo->heads = 0xff; + geo->sectors = 0x3f; + sector_div(cylinders, geo->heads * geo->sectors); + geo->cylinders = cylinders; + if ((sector_t)(geo->cylinders + 1) * geo->heads * geo->sectors < nsect) + geo->cylinders = 0xffff; return 0; } +/* Add ioctl/CDROM_GET_CAPABILITY to support cdrom_id in udev + * when vdisk_mtype is VD_MEDIA_TYPE_CD or VD_MEDIA_TYPE_DVD. + * Needed to be able to install inside an ldom from an iso image. + */ +static int vdc_ioctl(struct block_device *bdev, fmode_t mode, + unsigned command, unsigned long argument) +{ + int i; + struct gendisk *disk; + + switch (command) { + case CDROMMULTISESSION: + pr_debug(PFX "Multisession CDs not supported\n"); + for (i = 0; i < sizeof(struct cdrom_multisession); i++) + if (put_user(0, (char __user *)(argument + i))) + return -EFAULT; + return 0; + + case CDROM_GET_CAPABILITY: + disk = bdev->bd_disk; + + if (bdev->bd_disk && (disk->flags & GENHD_FL_CD)) + return 0; + return -EINVAL; + + default: + pr_debug(PFX "ioctl %08x not supported\n", command); + return -EINVAL; + } +} + static const struct block_device_operations vdc_fops = { .owner = THIS_MODULE, .getgeo = vdc_getgeo, + .ioctl = vdc_ioctl, }; static void vdc_finish(struct vio_driver_state *vio, int err, int waiting_for) @@ -165,9 +207,9 @@ struct vio_disk_attr_info *pkt = arg; viodbg(HS, "GOT ATTR stype[0x%x] ops[%llx] disk_size[%llu] disk_type[%x] " - "xfer_mode[0x%x] blksz[%u] max_xfer[%llu]\n", + "mtype[0x%x] xfer_mode[0x%x] blksz[%u] max_xfer[%llu]\n", pkt->tag.stype, pkt->operations, - pkt->vdisk_size, pkt->vdisk_type, + pkt->vdisk_size, pkt->vdisk_type, pkt->vdisk_mtype, pkt->xfer_mode, pkt->vdisk_block_size, pkt->max_xfer_size); @@ -192,8 +234,11 @@ } port->operations = pkt->operations; - port->vdisk_size = pkt->vdisk_size; port->vdisk_type = pkt->vdisk_type; + if (vdc_version_supported(port, 1, 1)) { + port->vdisk_size = pkt->vdisk_size; + port->vdisk_mtype = pkt->vdisk_mtype; + } if (pkt->max_xfer_size < port->max_xfer_size) port->max_xfer_size = pkt->max_xfer_size; port->vdisk_block_size = pkt->vdisk_block_size; @@ -236,7 +281,9 @@ __blk_end_request(req, (desc->status ? -EIO : 0), desc->size); - if (blk_queue_stopped(port->disk->queue)) + /* restart blk queue when ring is half emptied */ + if (blk_queue_stopped(port->disk->queue) && + vdc_tx_dring_avail(dr) * 100 / VDC_TX_RING_SIZE >= 50) blk_start_queue(port->disk->queue); } @@ -388,12 +435,6 @@ for (i = 0; i < nsg; i++) len += sg[i].length; - if (unlikely(vdc_tx_dring_avail(dr) < 1)) { - blk_stop_queue(port->disk->queue); - err = -ENOMEM; - goto out; - } - desc = vio_dring_cur(dr); err = ldc_map_sg(port->vio.lp, sg, nsg, @@ -433,21 +474,32 @@ port->req_id++; dr->prod = (dr->prod + 1) & (VDC_TX_RING_SIZE - 1); } -out: return err; } -static void do_vdc_request(struct request_queue *q) +static void do_vdc_request(struct request_queue *rq) { - while (1) { - struct request *req = blk_fetch_request(q); + struct request *req; - if (!req) + while ((req = blk_peek_request(rq)) != NULL) { + struct vdc_port *port; + struct vio_dring_state *dr; + + port = req->rq_disk->private_data; + dr = &port->vio.drings[VIO_DRIVER_TX_RING]; + if (unlikely(vdc_tx_dring_avail(dr) < 1)) + goto wait; + + blk_start_request(req); + + if (__send_request(req) < 0) { + blk_requeue_request(rq, req); +wait: + /* Avoid pointless unplugs. */ + blk_stop_queue(rq); break; - - if (__send_request(req) < 0) - __blk_end_request_all(req, -EIO); + } } } @@ -656,25 +708,27 @@ if (comp.err) return comp.err; - err = generic_request(port, VD_OP_GET_VTOC, - &port->label, sizeof(port->label)); - if (err < 0) { - printk(KERN_ERR PFX "VD_OP_GET_VTOC returns error %d\n", err); - return err; - } + if (vdc_version_supported(port, 1, 1)) { + /* vdisk_size should be set during the handshake, if it wasn't + * then the underlying disk is reserved by another system + */ + if (port->vdisk_size == -1) + return -ENODEV; + } else { + struct vio_disk_geom geom; - err = generic_request(port, VD_OP_GET_DISKGEOM, - &port->geom, sizeof(port->geom)); - if (err < 0) { - printk(KERN_ERR PFX "VD_OP_GET_DISKGEOM returns " - "error %d\n", err); - return err; + err = generic_request(port, VD_OP_GET_DISKGEOM, + &geom, sizeof(geom)); + if (err < 0) { + printk(KERN_ERR PFX "VD_OP_GET_DISKGEOM returns " + "error %d\n", err); + return err; + } + port->vdisk_size = ((u64)geom.num_cyl * + (u64)geom.num_hd * + (u64)geom.num_sec); } - port->vdisk_size = ((u64)port->geom.num_cyl * - (u64)port->geom.num_hd * - (u64)port->geom.num_sec); - q = blk_init_queue(do_vdc_request, &port->vio.lock); if (!q) { printk(KERN_ERR PFX "%s: Could not allocate queue.\n", @@ -691,6 +745,10 @@ port->disk = g; + /* Each segment in a request is up to an aligned page in size. */ + blk_queue_segment_boundary(q, PAGE_SIZE - 1); + blk_queue_max_segment_size(q, PAGE_SIZE); + blk_queue_max_segments(q, port->ring_cookies); blk_queue_max_hw_sectors(q, port->max_xfer_size); g->major = vdc_major; @@ -704,9 +762,32 @@ set_capacity(g, port->vdisk_size); - printk(KERN_INFO PFX "%s: %u sectors (%u MB)\n", + if (vdc_version_supported(port, 1, 1)) { + switch (port->vdisk_mtype) { + case VD_MEDIA_TYPE_CD: + pr_info(PFX "Virtual CDROM %s\n", port->disk_name); + g->flags |= GENHD_FL_CD; + g->flags |= GENHD_FL_REMOVABLE; + set_disk_ro(g, 1); + break; + + case VD_MEDIA_TYPE_DVD: + pr_info(PFX "Virtual DVD %s\n", port->disk_name); + g->flags |= GENHD_FL_CD; + g->flags |= GENHD_FL_REMOVABLE; + set_disk_ro(g, 1); + break; + + case VD_MEDIA_TYPE_FIXED: + pr_info(PFX "Virtual Hard disk %s\n", port->disk_name); + break; + } + } + + pr_info(PFX "%s: %u sectors (%u MB) protocol %d.%d\n", g->disk_name, - port->vdisk_size, (port->vdisk_size >> (20 - 9))); + port->vdisk_size, (port->vdisk_size >> (20 - 9)), + port->vio.ver.major, port->vio.ver.minor); add_disk(g); @@ -765,6 +846,7 @@ else snprintf(port->disk_name, sizeof(port->disk_name), VDCBLK_NAME "%c", 'a' + ((int)vdev->dev_no % 26)); + port->vdisk_size = -1; err = vio_driver_init(&port->vio, vdev, VDEV_DISK, vdc_versions, ARRAY_SIZE(vdc_versions), --- linux-3.13.0.orig/drivers/block/virtio_blk.c +++ linux-3.13.0/drivers/block/virtio_blk.c @@ -144,11 +144,11 @@ if (unlikely(virtqueue_is_broken(vq))) break; } while (!virtqueue_enable_cb(vq)); - spin_unlock_irqrestore(&vblk->vq_lock, flags); /* In case queue is stopped waiting for more buffers. */ if (req_done) blk_mq_start_stopped_hw_queues(vblk->disk->queue); + spin_unlock_irqrestore(&vblk->vq_lock, flags); } static int virtio_queue_rq(struct blk_mq_hw_ctx *hctx, struct request *req) @@ -158,6 +158,8 @@ unsigned long flags; unsigned int num; const bool last = (req->cmd_flags & REQ_END) != 0; + int err; + bool notify = false; BUG_ON(req->nr_phys_segments + 2 > vblk->sg_elems); @@ -198,17 +200,24 @@ } spin_lock_irqsave(&vblk->vq_lock, flags); - if (__virtblk_add_req(vblk->vq, vbr, vbr->sg, num) < 0) { + err = __virtblk_add_req(vblk->vq, vbr, vbr->sg, num); + if (err) { virtqueue_kick(vblk->vq); - spin_unlock_irqrestore(&vblk->vq_lock, flags); blk_mq_stop_hw_queue(hctx); - return BLK_MQ_RQ_QUEUE_BUSY; + spin_unlock_irqrestore(&vblk->vq_lock, flags); + /* Out of mem doesn't actually happen, since we fall back + * to direct descriptors */ + if (err == -ENOMEM || err == -ENOSPC) + return BLK_MQ_RQ_QUEUE_BUSY; + return BLK_MQ_RQ_QUEUE_ERROR; } - if (last) - virtqueue_kick(vblk->vq); - + if (last && virtqueue_kick_prepare(vblk->vq)) + notify = true; spin_unlock_irqrestore(&vblk->vq_lock, flags); + + if (notify) + virtqueue_notify(vblk->vq); return BLK_MQ_RQ_QUEUE_OK; } --- linux-3.13.0.orig/drivers/block/xen-blkback/blkback.c +++ linux-3.13.0/drivers/block/xen-blkback/blkback.c @@ -350,8 +350,8 @@ return; } - if (work_pending(&blkif->persistent_purge_work)) { - pr_alert_ratelimited(DRV_PFX "Scheduled work from previous purge is still pending, cannot purge list\n"); + if (work_busy(&blkif->persistent_purge_work)) { + pr_alert_ratelimited(DRV_PFX "Scheduled work from previous purge is still busy, cannot purge list\n"); return; } @@ -755,6 +755,7 @@ BUG_ON(new_map_idx >= segs_to_map); if (unlikely(map[new_map_idx].status != 0)) { pr_debug(DRV_PFX "invalid buffer -- could not remap it\n"); + put_free_pages(blkif, &pages[seg_idx]->page, 1); pages[seg_idx]->handle = BLKBACK_INVALID_HANDLE; ret |= 1; goto next; @@ -852,6 +853,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) @@ -860,14 +863,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 = ACCESS_ONCE(segments[i].first_sect); + last_sect = ACCESS_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-3.13.0.orig/drivers/block/xen-blkback/common.h +++ linux-3.13.0/drivers/block/xen-blkback/common.h @@ -388,8 +388,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 = ACCESS_ONCE(src->operation); + switch (dst->operation) { case BLKIF_OP_READ: case BLKIF_OP_WRITE: case BLKIF_OP_WRITE_BARRIER: @@ -436,8 +436,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 = ACCESS_ONCE(src->operation); + switch (dst->operation) { case BLKIF_OP_READ: case BLKIF_OP_WRITE: case BLKIF_OP_WRITE_BARRIER: --- linux-3.13.0.orig/drivers/block/xen-blkfront.c +++ linux-3.13.0/drivers/block/xen-blkfront.c @@ -1093,8 +1093,10 @@ * Add the used indirect page back to the list of * available pages for indirect grefs. */ - indirect_page = pfn_to_page(s->indirect_grants[i]->pfn); - list_add(&indirect_page->lru, &info->indirect_pages); + if (!info->feature_persistent) { + indirect_page = pfn_to_page(s->indirect_grants[i]->pfn); + list_add(&indirect_page->lru, &info->indirect_pages); + } s->indirect_grants[i]->gref = GRANT_INVALID_REF; list_add_tail(&s->indirect_grants[i]->node, &info->grants); } @@ -1356,7 +1358,7 @@ char *type; int len; /* no unplug has been done: do not hook devices != xen vbds */ - if (xen_platform_pci_unplug & XEN_UNPLUG_UNNECESSARY) { + if (xen_has_pv_and_legacy_disk_devices()) { int major; if (!VDEV_IS_EXTENDED(vdevice)) @@ -1904,15 +1906,19 @@ case XenbusStateReconfiguring: case XenbusStateReconfigured: case XenbusStateUnknown: - case XenbusStateClosed: break; case XenbusStateConnected: blkfront_connect(info); break; + case XenbusStateClosed: + if (dev->state == XenbusStateClosed) + break; + /* Missed the backend's Closing state -- fallthrough */ case XenbusStateClosing: - blkfront_closing(info); + if (info) + blkfront_closing(info); break; } } @@ -2079,7 +2085,7 @@ if (!xen_domain()) return -ENODEV; - if (xen_hvm_domain() && !xen_platform_pci_unplug) + if (!xen_has_pv_disk_devices()) return -ENODEV; if (register_blkdev(XENVBD_MAJOR, DEV_NAME)) { --- linux-3.13.0.orig/drivers/bluetooth/ath3k.c +++ linux-3.13.0/drivers/bluetooth/ath3k.c @@ -62,48 +62,69 @@ { USB_DEVICE(0x0CF3, 0x3000) }, /* Atheros AR3011 with sflash firmware*/ + { USB_DEVICE(0x0489, 0xE027) }, + { USB_DEVICE(0x0489, 0xE03D) }, + { USB_DEVICE(0x04F2, 0xAFF1) }, + { USB_DEVICE(0x0930, 0x0215) }, { USB_DEVICE(0x0CF3, 0x3002) }, { USB_DEVICE(0x0CF3, 0xE019) }, { USB_DEVICE(0x13d3, 0x3304) }, - { USB_DEVICE(0x0930, 0x0215) }, - { USB_DEVICE(0x0489, 0xE03D) }, - { USB_DEVICE(0x0489, 0xE027) }, /* Atheros AR9285 Malbec with sflash firmware */ { USB_DEVICE(0x03F0, 0x311D) }, /* Atheros AR3012 with sflash firmware*/ + { USB_DEVICE(0x0489, 0xe04d) }, + { USB_DEVICE(0x0489, 0xe04e) }, + { USB_DEVICE(0x0489, 0xe056) }, + { USB_DEVICE(0x0489, 0xe057) }, + { 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) }, + { USB_DEVICE(0x04CA, 0x3006) }, + { USB_DEVICE(0x04CA, 0x3008) }, + { USB_DEVICE(0x04CA, 0x300b) }, + { 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) }, { USB_DEVICE(0x0CF3, 0x0036) }, { USB_DEVICE(0x0CF3, 0x3004) }, { USB_DEVICE(0x0CF3, 0x3008) }, { USB_DEVICE(0x0CF3, 0x311D) }, + { USB_DEVICE(0x0CF3, 0x311E) }, + { USB_DEVICE(0x0CF3, 0x311F) }, + { USB_DEVICE(0x0cf3, 0x3121) }, { USB_DEVICE(0x0CF3, 0x817a) }, - { USB_DEVICE(0x13d3, 0x3375) }, - { USB_DEVICE(0x04CA, 0x3004) }, - { USB_DEVICE(0x04CA, 0x3005) }, - { USB_DEVICE(0x04CA, 0x3006) }, - { USB_DEVICE(0x04CA, 0x3008) }, - { USB_DEVICE(0x13d3, 0x3362) }, + { USB_DEVICE(0x0CF3, 0x817b) }, + { USB_DEVICE(0x0cf3, 0xe003) }, { USB_DEVICE(0x0CF3, 0xE004) }, { USB_DEVICE(0x0CF3, 0xE005) }, - { USB_DEVICE(0x0930, 0x0219) }, - { USB_DEVICE(0x0930, 0x0220) }, - { USB_DEVICE(0x0489, 0xe057) }, + { USB_DEVICE(0x13d3, 0x3362) }, + { USB_DEVICE(0x13d3, 0x3375) }, { USB_DEVICE(0x13d3, 0x3393) }, - { USB_DEVICE(0x0489, 0xe04e) }, - { USB_DEVICE(0x0489, 0xe056) }, - { USB_DEVICE(0x0489, 0xe04d) }, - { USB_DEVICE(0x04c5, 0x1330) }, + { USB_DEVICE(0x13d3, 0x3395) }, { USB_DEVICE(0x13d3, 0x3402) }, - { USB_DEVICE(0x0cf3, 0x3121) }, - { USB_DEVICE(0x0cf3, 0xe003) }, + { 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 */ { USB_DEVICE(0x0489, 0xE02C) }, /* Atheros AR5BBU22 with sflash firmware */ - { USB_DEVICE(0x0489, 0xE03C) }, { USB_DEVICE(0x0489, 0xE036) }, + { USB_DEVICE(0x0489, 0xE03C) }, { } /* Terminating entry */ }; @@ -116,30 +137,50 @@ static const struct usb_device_id ath3k_blist_tbl[] = { /* Atheros AR3012 with sflash firmware*/ + { USB_DEVICE(0x0489, 0xe04d), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0489, 0xe04e), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0489, 0xe056), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0489, 0xe057), .driver_info = BTUSB_ATH3012 }, + { 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 }, + { USB_DEVICE(0x04ca, 0x3006), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x04ca, 0x3008), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x04ca, 0x300b), .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 }, { USB_DEVICE(0x0CF3, 0x0036), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0x3004), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0x3008), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0x311D), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0cf3, 0x311E), .driver_info = BTUSB_ATH3012 }, + { 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(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 }, - { USB_DEVICE(0x04ca, 0x3004), .driver_info = BTUSB_ATH3012 }, - { USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 }, - { USB_DEVICE(0x04ca, 0x3006), .driver_info = BTUSB_ATH3012 }, - { USB_DEVICE(0x04ca, 0x3008), .driver_info = BTUSB_ATH3012 }, - { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0cf3, 0xe003), .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(0x0930, 0x0219), .driver_info = BTUSB_ATH3012 }, - { USB_DEVICE(0x0930, 0x0220), .driver_info = BTUSB_ATH3012 }, - { USB_DEVICE(0x0489, 0xe057), .driver_info = BTUSB_ATH3012 }, + { 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(0x0489, 0xe04e), .driver_info = BTUSB_ATH3012 }, - { USB_DEVICE(0x0489, 0xe056), .driver_info = BTUSB_ATH3012 }, - { USB_DEVICE(0x0489, 0xe04d), .driver_info = BTUSB_ATH3012 }, - { USB_DEVICE(0x04c5, 0x1330), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x13d3, 0x3395), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x13d3, 0x3402), .driver_info = BTUSB_ATH3012 }, - { USB_DEVICE(0x0cf3, 0x3121), .driver_info = BTUSB_ATH3012 }, - { USB_DEVICE(0x0cf3, 0xe003), .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 */ { USB_DEVICE(0x0489, 0xE03C), .driver_info = BTUSB_ATH3012 }, @@ -151,6 +192,8 @@ #define USB_REQ_DFU_DNLOAD 1 #define BULK_SIZE 4096 #define FW_HDR_SIZE 20 +#define TIMEGAP_USEC_MIN 50 +#define TIMEGAP_USEC_MAX 100 static int ath3k_load_firmware(struct usb_device *udev, const struct firmware *firmware) @@ -181,6 +224,9 @@ count -= 20; while (count) { + /* workaround the compatibility issue with xHCI controller*/ + usleep_range(TIMEGAP_USEC_MIN, TIMEGAP_USEC_MAX); + size = min_t(uint, count, BULK_SIZE); pipe = usb_sndbulkpipe(udev, 0x02); memcpy(send_buf, firmware->data + sent, size); @@ -277,6 +323,9 @@ count -= size; while (count) { + /* workaround the compatibility issue with xHCI controller*/ + usleep_range(TIMEGAP_USEC_MIN, TIMEGAP_USEC_MAX); + size = min_t(uint, count, BULK_SIZE); pipe = usb_sndbulkpipe(udev, 0x02); --- linux-3.13.0.orig/drivers/bluetooth/btmrvl_drv.h +++ linux-3.13.0/drivers/bluetooth/btmrvl_drv.h @@ -70,6 +70,7 @@ u8 hs_state; u8 wakeup_tries; wait_queue_head_t cmd_wait_q; + wait_queue_head_t event_hs_wait_q; u8 cmd_complete; bool is_suspended; }; --- linux-3.13.0.orig/drivers/bluetooth/btmrvl_main.c +++ linux-3.13.0/drivers/bluetooth/btmrvl_main.c @@ -115,6 +115,7 @@ adapter->hs_state = HS_ACTIVATED; if (adapter->psmode) adapter->ps_state = PS_SLEEP; + wake_up_interruptible(&adapter->event_hs_wait_q); BT_DBG("HS ACTIVATED!"); } else { BT_DBG("HS Enable failed"); @@ -254,11 +255,31 @@ int btmrvl_enable_hs(struct btmrvl_private *priv) { + struct btmrvl_adapter *adapter = priv->adapter; int ret; ret = btmrvl_send_sync_cmd(priv, BT_CMD_HOST_SLEEP_ENABLE, NULL, 0); - if (ret) + if (ret) { BT_ERR("Host sleep enable command failed\n"); + return ret; + } + + ret = wait_event_interruptible_timeout(adapter->event_hs_wait_q, + adapter->hs_state, + msecs_to_jiffies(WAIT_UNTIL_HS_STATE_CHANGED)); + if (ret < 0) { + BT_ERR("event_hs_wait_q terminated (%d): %d,%d,%d", + ret, adapter->hs_state, adapter->ps_state, + adapter->wakeup_tries); + } else if (!ret) { + BT_ERR("hs_enable timeout: %d,%d,%d", adapter->hs_state, + adapter->ps_state, adapter->wakeup_tries); + ret = -ETIMEDOUT; + } else { + BT_DBG("host sleep enabled: %d,%d,%d", adapter->hs_state, + adapter->ps_state, adapter->wakeup_tries); + ret = 0; + } return ret; } @@ -344,6 +365,7 @@ priv->adapter->ps_state = PS_AWAKE; init_waitqueue_head(&priv->adapter->cmd_wait_q); + init_waitqueue_head(&priv->adapter->event_hs_wait_q); } static void btmrvl_free_adapter(struct btmrvl_private *priv) @@ -716,6 +738,7 @@ hdev = priv->btmrvl_dev.hcidev; wake_up_interruptible(&priv->adapter->cmd_wait_q); + wake_up_interruptible(&priv->adapter->event_hs_wait_q); kthread_stop(priv->main_thread.task); --- linux-3.13.0.orig/drivers/bluetooth/btusb.c +++ linux-3.13.0/drivers/bluetooth/btusb.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include @@ -49,6 +50,8 @@ #define BTUSB_WRONG_SCO_MTU 0x40 #define BTUSB_ATH3012 0x80 #define BTUSB_INTEL 0x100 +#define BTUSB_INTEL_BOOT 0x200 +#define BTUSB_BCM_PATCHRAM 0x800 static const struct usb_device_id btusb_table[] = { /* Generic Bluetooth USB device */ @@ -101,21 +104,38 @@ { USB_DEVICE(0x0c10, 0x0000) }, /* Broadcom BCM20702A0 */ + { USB_DEVICE(0x0489, 0xe042) }, + { USB_DEVICE(0x04ca, 0x2003) }, { USB_DEVICE(0x0b05, 0x17b5) }, { USB_DEVICE(0x0b05, 0x17cb) }, - { USB_DEVICE(0x04ca, 0x2003) }, - { USB_DEVICE(0x0489, 0xe042) }, - { USB_DEVICE(0x413c, 0x8197) }, + { USB_DEVICE(0x13d3, 0x3388), .driver_info = BTUSB_BCM_PATCHRAM }, + { USB_DEVICE(0x13d3, 0x3389), .driver_info = BTUSB_BCM_PATCHRAM }, + { USB_DEVICE(0x413c, 0x8197), .driver_info = BTUSB_BCM_PATCHRAM }, + { USB_DEVICE(0x413c, 0x8143), .driver_info = BTUSB_BCM_PATCHRAM }, + + /* Broadcom BCM43142A0 */ + { USB_DEVICE(0x04ca, 0x2007), .driver_info = BTUSB_BCM_PATCHRAM }, + { USB_DEVICE(0x105b, 0xe065), .driver_info = BTUSB_BCM_PATCHRAM }, /* Foxconn - Hon Hai */ - { USB_VENDOR_AND_INTERFACE_INFO(0x0489, 0xff, 0x01, 0x01) }, + { USB_VENDOR_AND_INTERFACE_INFO(0x0489, 0xff, 0x01, 0x01), .driver_info = BTUSB_BCM_PATCHRAM }, + + /* Broadcom devices with vendor specific id */ + { USB_VENDOR_AND_INTERFACE_INFO(0x0a5c, 0xff, 0x01, 0x01), .driver_info = BTUSB_BCM_PATCHRAM }, - /*Broadcom devices with vendor specific id */ - { USB_VENDOR_AND_INTERFACE_INFO(0x0a5c, 0xff, 0x01, 0x01) }, + /* ASUSTek Computer - Broadcom based */ + { USB_VENDOR_AND_INTERFACE_INFO(0x0b05, 0xff, 0x01, 0x01) }, /* Belkin F8065bf - Broadcom based */ { USB_VENDOR_AND_INTERFACE_INFO(0x050d, 0xff, 0x01, 0x01) }, + /* IMC Networks - Broadcom based */ + { USB_VENDOR_AND_INTERFACE_INFO(0x13d3, 0xff, 0x01, 0x01) }, + + /* Intel Bluetooth USB Bootloader (RAM module) */ + { USB_DEVICE(0x8087, 0x0a5a), + .driver_info = BTUSB_INTEL_BOOT | BTUSB_BROKEN_ISOC }, + { } /* Terminating entry */ }; @@ -129,41 +149,62 @@ { USB_DEVICE(0x0a5c, 0x2033), .driver_info = BTUSB_IGNORE }, /* Atheros 3011 with sflash firmware */ + { USB_DEVICE(0x0489, 0xe027), .driver_info = BTUSB_IGNORE }, + { USB_DEVICE(0x0489, 0xe03d), .driver_info = BTUSB_IGNORE }, + { USB_DEVICE(0x04f2, 0xaff1), .driver_info = BTUSB_IGNORE }, + { USB_DEVICE(0x0930, 0x0215), .driver_info = BTUSB_IGNORE }, { USB_DEVICE(0x0cf3, 0x3002), .driver_info = BTUSB_IGNORE }, { USB_DEVICE(0x0cf3, 0xe019), .driver_info = BTUSB_IGNORE }, { USB_DEVICE(0x13d3, 0x3304), .driver_info = BTUSB_IGNORE }, - { USB_DEVICE(0x0930, 0x0215), .driver_info = BTUSB_IGNORE }, - { USB_DEVICE(0x0489, 0xe03d), .driver_info = BTUSB_IGNORE }, - { USB_DEVICE(0x0489, 0xe027), .driver_info = BTUSB_IGNORE }, /* Atheros AR9285 Malbec with sflash firmware */ { USB_DEVICE(0x03f0, 0x311d), .driver_info = BTUSB_IGNORE }, /* Atheros 3012 with sflash firmware */ + { USB_DEVICE(0x0489, 0xe04d), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0489, 0xe04e), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0489, 0xe056), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0489, 0xe057), .driver_info = BTUSB_ATH3012 }, + { 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 }, + { USB_DEVICE(0x04ca, 0x3006), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x04ca, 0x3008), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x04ca, 0x300b), .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 }, { USB_DEVICE(0x0cf3, 0x0036), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0x3004), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0x3008), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0x311d), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0cf3, 0x311e), .driver_info = BTUSB_ATH3012 }, + { 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(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 }, - { USB_DEVICE(0x04ca, 0x3004), .driver_info = BTUSB_ATH3012 }, - { USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 }, - { USB_DEVICE(0x04ca, 0x3006), .driver_info = BTUSB_ATH3012 }, - { USB_DEVICE(0x04ca, 0x3008), .driver_info = BTUSB_ATH3012 }, - { USB_DEVICE(0x13d3, 0x3362), .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 }, - { USB_DEVICE(0x0930, 0x0219), .driver_info = BTUSB_ATH3012 }, - { USB_DEVICE(0x0930, 0x0220), .driver_info = BTUSB_ATH3012 }, - { USB_DEVICE(0x0489, 0xe057), .driver_info = BTUSB_ATH3012 }, + { 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(0x0489, 0xe04e), .driver_info = BTUSB_ATH3012 }, - { USB_DEVICE(0x0489, 0xe056), .driver_info = BTUSB_ATH3012 }, - { USB_DEVICE(0x0489, 0xe04d), .driver_info = BTUSB_ATH3012 }, - { USB_DEVICE(0x04c5, 0x1330), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x13d3, 0x3395), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x13d3, 0x3402), .driver_info = BTUSB_ATH3012 }, - { USB_DEVICE(0x0cf3, 0x3121), .driver_info = BTUSB_ATH3012 }, - { USB_DEVICE(0x0cf3, 0xe003), .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 */ { USB_DEVICE(0x0489, 0xe02c), .driver_info = BTUSB_IGNORE }, @@ -173,9 +214,9 @@ { USB_DEVICE(0x0489, 0xe036), .driver_info = BTUSB_ATH3012 }, /* Broadcom BCM2035 */ - { USB_DEVICE(0x0a5c, 0x2035), .driver_info = BTUSB_WRONG_SCO_MTU }, - { USB_DEVICE(0x0a5c, 0x200a), .driver_info = BTUSB_WRONG_SCO_MTU }, { USB_DEVICE(0x0a5c, 0x2009), .driver_info = BTUSB_BCM92035 }, + { USB_DEVICE(0x0a5c, 0x200a), .driver_info = BTUSB_WRONG_SCO_MTU }, + { USB_DEVICE(0x0a5c, 0x2035), .driver_info = BTUSB_WRONG_SCO_MTU }, /* Broadcom BCM2045 */ { USB_DEVICE(0x0a5c, 0x2039), .driver_info = BTUSB_WRONG_SCO_MTU }, @@ -224,6 +265,7 @@ /* Intel Bluetooth device */ { USB_DEVICE(0x8087, 0x07dc), .driver_info = BTUSB_INTEL }, + { USB_DEVICE(0x8087, 0x0a2a), .driver_info = BTUSB_INTEL }, { } /* Terminating entry */ }; @@ -305,6 +347,9 @@ BT_ERR("%s corrupted event packet", hdev->name); hdev->stat.err_rx++; } + } else if (urb->status == -ENOENT) { + /* Avoid suspend failed when usb_kill_urb */ + return; } if (!test_bit(BTUSB_INTR_RUNNING, &data->flags)) @@ -393,6 +438,9 @@ BT_ERR("%s corrupted ACL packet", hdev->name); hdev->stat.err_rx++; } + } else if (urb->status == -ENOENT) { + /* Avoid suspend failed when usb_kill_urb */ + return; } if (!test_bit(BTUSB_BULK_RUNNING, &data->flags)) @@ -487,6 +535,9 @@ hdev->stat.err_rx++; } } + } else if (urb->status == -ENOENT) { + /* Avoid suspend failed when usb_kill_urb */ + return; } if (!test_bit(BTUSB_ISOC_RUNNING, &data->flags)) @@ -1219,6 +1270,8 @@ } fw_ptr = fw->data; + kfree_skb(skb); + /* This Intel specific command enables the manufacturer mode of the * controller. * @@ -1331,6 +1384,72 @@ return 0; } +static int btusb_setup_patchram_packet(struct hci_dev *hdev, u16 opcode, u32 plen, const void *param) +{ + struct sk_buff *skb; + + skb = __hci_cmd_sync(hdev, opcode, plen, param, HCI_INIT_TIMEOUT); + if (IS_ERR(skb)) + return PTR_ERR(skb); + kfree_skb(skb); + return 0; +} + +#define PATCHRAM_NAME_LEN 20 + +static int btusb_setup_patchram(struct hci_dev *hdev) +{ + struct btusb_data *data = hci_get_drvdata(hdev); + struct usb_device *udev = data->udev; + size_t pos = 0; + int err = 0; + char filename[PATCHRAM_NAME_LEN]; + const struct firmware *fw; + u8 val = 0x00; + + snprintf(filename, PATCHRAM_NAME_LEN, "fw-%04x_%04x.hcd", + le16_to_cpu(udev->descriptor.idVendor), + le16_to_cpu(udev->descriptor.idProduct)); + if (request_firmware(&fw, (const char *) filename, &udev->dev) < 0) { + BT_INFO("can't load firmware, may not work correctly"); + return 0; + } + + err = btusb_setup_patchram_packet(hdev, 0x0c03, 1, &val); + if (err) + goto out; + + msleep(300); + err = btusb_setup_patchram_packet(hdev, 0xfc2e, 1, &val); + if (err) + goto out; + + msleep(1000); + while (pos < fw->size) { + size_t len; + len = fw->data[pos + 2] + 3; + if (pos + len > fw->size) { + err = -EINVAL; + goto out; + } + err = btusb_setup_patchram_packet(hdev, le16_to_cpu(*(u16*)(fw->data + pos)), + fw->data[pos + 2] , &fw->data[pos + 3]); + if (err) + goto out; + pos += len; + } + + err = btusb_setup_patchram_packet(hdev, 0x0c03, 1, &val); +out: + release_firmware(fw); + if (err) { + BT_INFO("fail to load firmware"); + return err; + } + BT_INFO("firmware loaded"); + return 0; +} + static int btusb_probe(struct usb_interface *intf, const struct usb_device_id *id) { @@ -1439,6 +1558,12 @@ if (id->driver_info & BTUSB_INTEL) hdev->setup = btusb_setup_intel; + if (id->driver_info & BTUSB_BCM_PATCHRAM) + hdev->setup = btusb_setup_patchram; + + if (id->driver_info & BTUSB_INTEL_BOOT) + set_bit(HCI_QUIRK_RAW_DEVICE, &hdev->quirks); + /* Interface numbers are hardcoded in the specification */ data->isoc = usb_ifnum_to_if(data->udev, 1); --- linux-3.13.0.orig/drivers/bluetooth/hci_h5.c +++ linux-3.13.0/drivers/bluetooth/hci_h5.c @@ -237,7 +237,7 @@ break; to_remove--; - seq = (seq - 1) % 8; + seq = (seq - 1) & 0x07; } if (seq != h5->rx_ack) @@ -406,6 +406,7 @@ H5_HDR_PKT_TYPE(hdr) != HCI_3WIRE_LINK_PKT) { BT_ERR("Non-link packet received in non-active state"); h5_reset_rx(h5); + return 0; } h5->rx_func = h5_rx_payload; --- linux-3.13.0.orig/drivers/bluetooth/hci_ldisc.c +++ linux-3.13.0/drivers/bluetooth/hci_ldisc.c @@ -118,10 +118,6 @@ int hci_uart_tx_wakeup(struct hci_uart *hu) { - struct tty_struct *tty = hu->tty; - struct hci_dev *hdev = hu->hdev; - struct sk_buff *skb; - if (test_and_set_bit(HCI_UART_SENDING, &hu->tx_state)) { set_bit(HCI_UART_TX_WAKEUP, &hu->tx_state); return 0; @@ -129,6 +125,22 @@ BT_DBG(""); + schedule_work(&hu->write_work); + + return 0; +} + +static void hci_uart_write_work(struct work_struct *work) +{ + struct hci_uart *hu = container_of(work, struct hci_uart, write_work); + struct tty_struct *tty = hu->tty; + struct hci_dev *hdev = hu->hdev; + struct sk_buff *skb; + + /* REVISIT: should we cope with bad skbs or ->write() returning + * and error value ? + */ + restart: clear_bit(HCI_UART_TX_WAKEUP, &hu->tx_state); @@ -153,7 +165,6 @@ goto restart; clear_bit(HCI_UART_SENDING, &hu->tx_state); - return 0; } static void hci_uart_init_work(struct work_struct *work) @@ -281,6 +292,7 @@ tty->receive_room = 65536; INIT_WORK(&hu->init_ready, hci_uart_init_work); + INIT_WORK(&hu->write_work, hci_uart_write_work); spin_lock_init(&hu->rx_lock); @@ -318,6 +330,8 @@ if (hdev) hci_uart_close(hdev); + cancel_work_sync(&hu->write_work); + if (test_and_clear_bit(HCI_UART_PROTO_SET, &hu->flags)) { if (hdev) { if (test_bit(HCI_UART_REGISTERED, &hu->flags)) --- linux-3.13.0.orig/drivers/bluetooth/hci_uart.h +++ linux-3.13.0/drivers/bluetooth/hci_uart.h @@ -68,6 +68,7 @@ unsigned long hdev_flags; struct work_struct init_ready; + struct work_struct write_work; struct hci_uart_proto *proto; void *priv; --- linux-3.13.0.orig/drivers/bluetooth/hci_vhci.c +++ linux-3.13.0/drivers/bluetooth/hci_vhci.c @@ -352,7 +352,7 @@ static struct miscdevice vhci_miscdev= { .name = "vhci", .fops = &vhci_fops, - .minor = MISC_DYNAMIC_MINOR, + .minor = VHCI_MINOR, }; static int __init vhci_init(void) @@ -378,3 +378,4 @@ MODULE_VERSION(VERSION); MODULE_LICENSE("GPL"); MODULE_ALIAS("devname:vhci"); +MODULE_ALIAS_MISCDEV(VHCI_MINOR); --- linux-3.13.0.orig/drivers/bus/imx-weim.c +++ linux-3.13.0/drivers/bus/imx-weim.c @@ -92,7 +92,7 @@ struct device_node *child; int 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-3.13.0.orig/drivers/bus/mvebu-mbus.c +++ linux-3.13.0/drivers/bus/mvebu-mbus.c @@ -181,12 +181,25 @@ } /* Checks whether the given window number is available */ + +/* On Armada XP, 375 and 38x the MBus window 13 has the remap + * capability, like windows 0 to 7. However, the mvebu-mbus driver + * isn't currently taking into account this special case, which means + * that when window 13 is actually used, the remap registers are left + * to 0, making the device using this MBus window unavailable. The + * quick fix for stable is to not use window 13. A follow up patch + * will correctly handle this window. +*/ static int mvebu_mbus_window_is_free(struct mvebu_mbus_state *mbus, const int win) { void __iomem *addr = mbus->mbuswins_base + mbus->soc->win_cfg_offset(win); u32 ctrl = readl(addr + WIN_CTRL_OFF); + + if (win == 13) + return false; + return !(ctrl & WIN_CTRL_ENABLE); } @@ -222,12 +235,6 @@ */ if ((u64)base < wend && end > wbase) return 0; - - /* - * Check if target/attribute conflicts - */ - if (target == wtarget && attr == wattr) - return 0; } return 1; --- linux-3.13.0.orig/drivers/cdrom/cdrom.c +++ linux-3.13.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-3.13.0.orig/drivers/char/agp/intel-gtt.c +++ linux-3.13.0/drivers/char/agp/intel-gtt.c @@ -583,7 +583,7 @@ /* Query intel_iommu to see if we need the workaround. Presumably that * was loaded first. */ - if ((gpu_devid == PCI_DEVICE_ID_INTEL_IRONLAKE_M_HB || + if ((gpu_devid == PCI_DEVICE_ID_INTEL_IRONLAKE_D_IG || gpu_devid == PCI_DEVICE_ID_INTEL_IRONLAKE_M_IG) && intel_iommu_gfx_mapped) return 1; --- linux-3.13.0.orig/drivers/char/hw_random/Kconfig +++ linux-3.13.0/drivers/char/hw_random/Kconfig @@ -352,3 +352,16 @@ module will be called msm-rng. If unsure, say Y. + +config HW_RANDOM_XGENE + tristate "APM X-Gene True Random Number Generator (TRNG) support" + depends on HW_RANDOM && ARCH_XGENE + default HW_RANDOM + ---help--- + This driver provides kernel-side support for the Random Number + Generator hardware found on APM X-Gene SoC. + + To compile this driver as a module, choose M here: the + module will be called xgene_rng. + + If unsure, say Y. --- linux-3.13.0.orig/drivers/char/hw_random/Makefile +++ linux-3.13.0/drivers/char/hw_random/Makefile @@ -30,3 +30,4 @@ obj-$(CONFIG_HW_RANDOM_TPM) += tpm-rng.o obj-$(CONFIG_HW_RANDOM_BCM2835) += bcm2835-rng.o obj-$(CONFIG_HW_RANDOM_MSM) += msm-rng.o +obj-$(CONFIG_HW_RANDOM_XGENE) += xgene-rng.o --- linux-3.13.0.orig/drivers/char/hw_random/pseries-rng.c +++ linux-3.13.0/drivers/char/hw_random/pseries-rng.c @@ -25,18 +25,21 @@ #include -static int pseries_rng_data_read(struct hwrng *rng, u32 *data) +static int pseries_rng_read(struct hwrng *rng, void *data, size_t max, bool wait) { + u64 buffer[PLPAR_HCALL_BUFSIZE]; + size_t size = max < 8 ? max : 8; int rc; - rc = plpar_hcall(H_RANDOM, (unsigned long *)data); + rc = plpar_hcall(H_RANDOM, (unsigned long *)buffer); if (rc != H_SUCCESS) { pr_err_ratelimited("H_RANDOM call failed %d\n", rc); return -EIO; } + memcpy(data, buffer, size); /* The hypervisor interface returns 64 bits */ - return 8; + return size; } /** @@ -55,7 +58,7 @@ static struct hwrng pseries_rng = { .name = KBUILD_MODNAME, - .data_read = pseries_rng_data_read, + .read = pseries_rng_read, }; static int __init pseries_rng_probe(struct vio_dev *dev, --- linux-3.13.0.orig/drivers/char/hw_random/xgene-rng.c +++ linux-3.13.0/drivers/char/hw_random/xgene-rng.c @@ -0,0 +1,423 @@ +/* + * APM X-Gene SoC RNG Driver + * + * Copyright (c) 2014, Applied Micro Circuits Corporation + * Author: Rameshwar Prasad Sahu + * Shamal Winchurkar + * Feng Kan + * + * 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 . + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define RNG_MAX_DATUM 4 +#define MAX_TRY 100 +#define XGENE_RNG_RETRY_COUNT 20 +#define XGENE_RNG_RETRY_INTERVAL 10 + +/* RNG Registers */ +#define RNG_INOUT_0 0x00 +#define RNG_INTR_STS_ACK 0x10 +#define RNG_CONTROL 0x14 +#define RNG_CONFIG 0x18 +#define RNG_ALARMCNT 0x1c +#define RNG_FROENABLE 0x20 +#define RNG_FRODETUNE 0x24 +#define RNG_ALARMMASK 0x28 +#define RNG_ALARMSTOP 0x2c +#define RNG_OPTIONS 0x78 +#define RNG_EIP_REV 0x7c + +#define MONOBIT_FAIL_MASK BIT(7) +#define POKER_FAIL_MASK BIT(6) +#define LONG_RUN_FAIL_MASK BIT(5) +#define RUN_FAIL_MASK BIT(4) +#define NOISE_FAIL_MASK BIT(3) +#define STUCK_OUT_MASK BIT(2) +#define SHUTDOWN_OFLO_MASK BIT(1) +#define READY_MASK BIT(0) + +#define MAJOR_HW_REV_RD(src) (((src) & 0x0f000000) >> 24) +#define MINOR_HW_REV_RD(src) (((src) & 0x00f00000) >> 20) +#define HW_PATCH_LEVEL_RD(src) (((src) & 0x000f0000) >> 16) +#define MAX_REFILL_CYCLES_SET(dst, src) \ + ((dst & ~0xffff0000) | (((u32)src << 16) & 0xffff0000)) +#define MIN_REFILL_CYCLES_SET(dst, src) \ + ((dst & ~0x000000ff) | (((u32)src) & 0x000000ff)) +#define ALARM_THRESHOLD_SET(dst, src) \ + ((dst & ~0x000000ff) | (((u32)src) & 0x000000ff)) +#define ENABLE_RNG_SET(dst, src) \ + ((dst & ~BIT(10)) | (((u32)src << 10) & BIT(10))) +#define REGSPEC_TEST_MODE_SET(dst, src) \ + ((dst & ~BIT(8)) | (((u32)src << 8) & BIT(8))) +#define MONOBIT_FAIL_MASK_SET(dst, src) \ + ((dst & ~BIT(7)) | (((u32)src << 7) & BIT(7))) +#define POKER_FAIL_MASK_SET(dst, src) \ + ((dst & ~BIT(6)) | (((u32)src << 6) & BIT(6))) +#define LONG_RUN_FAIL_MASK_SET(dst, src) \ + ((dst & ~BIT(5)) | (((u32)src << 5) & BIT(5))) +#define RUN_FAIL_MASK_SET(dst, src) \ + ((dst & ~BIT(4)) | (((u32)src << 4) & BIT(4))) +#define NOISE_FAIL_MASK_SET(dst, src) \ + ((dst & ~BIT(3)) | (((u32)src << 3) & BIT(3))) +#define STUCK_OUT_MASK_SET(dst, src) \ + ((dst & ~BIT(2)) | (((u32)src << 2) & BIT(2))) +#define SHUTDOWN_OFLO_MASK_SET(dst, src) \ + ((dst & ~BIT(1)) | (((u32)src << 1) & BIT(1))) + +struct xgene_rng_dev { + u32 irq; + void __iomem *csr_base; + u32 revision; + u32 datum_size; + u32 failure_cnt; /* Failure count last minute */ + unsigned long failure_ts;/* First failure timestamp */ + struct timer_list failure_timer; + struct device *dev; + struct clk *clk; +}; + +static void xgene_rng_expired_timer(unsigned long arg) +{ + struct xgene_rng_dev *ctx = (struct xgene_rng_dev *) arg; + + /* Clear failure counter as timer expired */ + disable_irq(ctx->irq); + ctx->failure_cnt = 0; + del_timer(&ctx->failure_timer); + enable_irq(ctx->irq); +} + +static void xgene_rng_start_timer(struct xgene_rng_dev *ctx) +{ + ctx->failure_timer.data = (unsigned long) ctx; + ctx->failure_timer.function = xgene_rng_expired_timer; + ctx->failure_timer.expires = jiffies + 120 * HZ; + add_timer(&ctx->failure_timer); +} + +/* + * Initialize or reinit free running oscillators (FROs) + */ +static void xgene_rng_init_fro(struct xgene_rng_dev *ctx, u32 fro_val) +{ + writel(fro_val, ctx->csr_base + RNG_FRODETUNE); + writel(0x00000000, ctx->csr_base + RNG_ALARMMASK); + writel(0x00000000, ctx->csr_base + RNG_ALARMSTOP); + writel(0xFFFFFFFF, ctx->csr_base + RNG_FROENABLE); +} + +static void xgene_rng_chk_overflow(struct xgene_rng_dev *ctx) +{ + u32 val; + + val = readl(ctx->csr_base + RNG_INTR_STS_ACK); + if (val & MONOBIT_FAIL_MASK) + /* + * LFSR detected an out-of-bounds number of 1s after + * checking 20,000 bits (test T1 as specified in the + * AIS-31 standard) + */ + dev_err(ctx->dev, "test monobit failure error 0x%08X\n", val); + if (val & POKER_FAIL_MASK) + /* + * LFSR detected an out-of-bounds value in at least one + * of the 16 poker_count_X counters or an out of bounds sum + * of squares value after checking 20,000 bits (test T2 as + * specified in the AIS-31 standard) + */ + dev_err(ctx->dev, "test poker failure error 0x%08X\n", val); + if (val & LONG_RUN_FAIL_MASK) + /* + * LFSR detected a sequence of 34 identical bits + * (test T4 as specified in the AIS-31 standard) + */ + dev_err(ctx->dev, "test long run failure error 0x%08X\n", val); + if (val & RUN_FAIL_MASK) + /* + * LFSR detected an outof-bounds value for at least one + * of the running counters after checking 20,000 bits + * (test T3 as specified in the AIS-31 standard) + */ + dev_err(ctx->dev, "test run failure error 0x%08X\n", val); + if (val & NOISE_FAIL_MASK) + /* LFSR detected a sequence of 48 identical bits */ + dev_err(ctx->dev, "noise failure error 0x%08X\n", val); + if (val & STUCK_OUT_MASK) + /* + * Detected output data registers generated same value twice + * in a row + */ + dev_err(ctx->dev, "stuck out failure error 0x%08X\n", val); + + if (val & SHUTDOWN_OFLO_MASK) { + u32 frostopped; + + /* FROs shut down after a second error event. Try recover. */ + if (++ctx->failure_cnt == 1) { + /* 1st time, just recover */ + ctx->failure_ts = jiffies; + frostopped = readl(ctx->csr_base + RNG_ALARMSTOP); + xgene_rng_init_fro(ctx, frostopped); + + /* + * We must start a timer to clear out this error + * in case the system timer wrap around + */ + xgene_rng_start_timer(ctx); + } else { + /* 2nd time failure in lesser than 1 minute? */ + if (time_after(ctx->failure_ts + 60 * HZ, jiffies)) { + dev_err(ctx->dev, + "FRO shutdown failure error 0x%08X\n", + val); + } else { + /* 2nd time failure after 1 minutes, recover */ + ctx->failure_ts = jiffies; + ctx->failure_cnt = 1; + /* + * We must start a timer to clear out this + * error in case the system timer wrap + * around + */ + xgene_rng_start_timer(ctx); + } + frostopped = readl(ctx->csr_base + RNG_ALARMSTOP); + xgene_rng_init_fro(ctx, frostopped); + } + } + /* Clear them all */ + writel(val, ctx->csr_base + RNG_INTR_STS_ACK); +} + +static irqreturn_t xgene_rng_irq_handler(int irq, void *id) +{ + struct xgene_rng_dev *ctx = (struct xgene_rng_dev *) id; + + /* RNG Alarm Counter overflow */ + xgene_rng_chk_overflow(ctx); + + return IRQ_HANDLED; +} + +static int xgene_rng_data_present(struct hwrng *rng, int wait) +{ + struct xgene_rng_dev *ctx = (struct xgene_rng_dev *) rng->priv; + u32 i, val = 0; + + for (i = 0; i < XGENE_RNG_RETRY_COUNT; i++) { + val = readl(ctx->csr_base + RNG_INTR_STS_ACK); + if ((val & READY_MASK) || !wait) + break; + udelay(XGENE_RNG_RETRY_INTERVAL); + } + + return (val & READY_MASK); +} + +static int xgene_rng_data_read(struct hwrng *rng, u32 *data) +{ + struct xgene_rng_dev *ctx = (struct xgene_rng_dev *) rng->priv; + int i; + + for (i = 0; i < ctx->datum_size; i++) + data[i] = readl(ctx->csr_base + RNG_INOUT_0 + i * 4); + + /* Clear ready bit to start next transaction */ + writel(READY_MASK, ctx->csr_base + RNG_INTR_STS_ACK); + + return ctx->datum_size << 2; +} + +static void xgene_rng_init_internal(struct xgene_rng_dev *ctx) +{ + u32 val; + + writel(0x00000000, ctx->csr_base + RNG_CONTROL); + + val = MAX_REFILL_CYCLES_SET(0, 10); + val = MIN_REFILL_CYCLES_SET(val, 10); + writel(val, ctx->csr_base + RNG_CONFIG); + + val = ALARM_THRESHOLD_SET(0, 0xFF); + writel(val, ctx->csr_base + RNG_ALARMCNT); + + xgene_rng_init_fro(ctx, 0); + + writel(MONOBIT_FAIL_MASK | + POKER_FAIL_MASK | + LONG_RUN_FAIL_MASK | + RUN_FAIL_MASK | + NOISE_FAIL_MASK | + STUCK_OUT_MASK | + SHUTDOWN_OFLO_MASK | + READY_MASK, ctx->csr_base + RNG_INTR_STS_ACK); + + val = ENABLE_RNG_SET(0, 1); + val = MONOBIT_FAIL_MASK_SET(val, 1); + val = POKER_FAIL_MASK_SET(val, 1); + val = LONG_RUN_FAIL_MASK_SET(val, 1); + val = RUN_FAIL_MASK_SET(val, 1); + val = NOISE_FAIL_MASK_SET(val, 1); + val = STUCK_OUT_MASK_SET(val, 1); + val = SHUTDOWN_OFLO_MASK_SET(val, 1); + writel(val, ctx->csr_base + RNG_CONTROL); +} + +static int xgene_rng_init(struct hwrng *rng) +{ + struct xgene_rng_dev *ctx = (struct xgene_rng_dev *) rng->priv; + + ctx->failure_cnt = 0; + init_timer(&ctx->failure_timer); + + ctx->revision = readl(ctx->csr_base + RNG_EIP_REV); + + dev_dbg(ctx->dev, "Rev %d.%d.%d\n", + MAJOR_HW_REV_RD(ctx->revision), + MINOR_HW_REV_RD(ctx->revision), + HW_PATCH_LEVEL_RD(ctx->revision)); + + dev_dbg(ctx->dev, "Options 0x%08X", + readl(ctx->csr_base + RNG_OPTIONS)); + + xgene_rng_init_internal(ctx); + + ctx->datum_size = RNG_MAX_DATUM; + + return 0; +} + +static struct hwrng xgene_rng_func = { + .name = "xgene-rng", + .init = xgene_rng_init, + .data_present = xgene_rng_data_present, + .data_read = xgene_rng_data_read, +}; + +static int xgene_rng_probe(struct platform_device *pdev) +{ + struct resource *res; + struct xgene_rng_dev *ctx; + int rc = 0; + + ctx = devm_kzalloc(&pdev->dev, sizeof(*ctx), GFP_KERNEL); + if (!ctx) + return -ENOMEM; + + ctx->dev = &pdev->dev; + platform_set_drvdata(pdev, ctx); + + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + ctx->csr_base = devm_ioremap_resource(&pdev->dev, res); + if (IS_ERR(ctx->csr_base)) + return PTR_ERR(ctx->csr_base); + + ctx->irq = platform_get_irq(pdev, 0); + if (ctx->irq < 0) { + dev_err(&pdev->dev, "No IRQ resource\n"); + return ctx->irq; + } + + dev_dbg(&pdev->dev, "APM X-Gene RNG BASE %p ALARM IRQ %d", + ctx->csr_base, ctx->irq); + + rc = devm_request_irq(&pdev->dev, ctx->irq, xgene_rng_irq_handler, 0, + dev_name(&pdev->dev), ctx); + if (rc) { + dev_err(&pdev->dev, "Could not request RNG alarm IRQ\n"); + return rc; + } + + /* Enable IP clock */ + ctx->clk = devm_clk_get(&pdev->dev, NULL); + if (IS_ERR(ctx->clk)) { + dev_warn(&pdev->dev, "Couldn't get the clock for RNG\n"); + } else { + rc = clk_prepare_enable(ctx->clk); + if (rc) { + dev_warn(&pdev->dev, + "clock prepare enable failed for RNG"); + return rc; + } + } + + xgene_rng_func.priv = (unsigned long) ctx; + + rc = hwrng_register(&xgene_rng_func); + if (rc) { + dev_err(&pdev->dev, "RNG registering failed error %d\n", rc); + if (!IS_ERR(ctx->clk)) + clk_disable_unprepare(ctx->clk); + return rc; + } + + rc = device_init_wakeup(&pdev->dev, 1); + if (rc) { + dev_err(&pdev->dev, "RNG device_init_wakeup failed error %d\n", + rc); + if (!IS_ERR(ctx->clk)) + clk_disable_unprepare(ctx->clk); + hwrng_unregister(&xgene_rng_func); + return rc; + } + + return 0; +} + +static int xgene_rng_remove(struct platform_device *pdev) +{ + struct xgene_rng_dev *ctx = platform_get_drvdata(pdev); + int rc; + + rc = device_init_wakeup(&pdev->dev, 0); + if (rc) + dev_err(&pdev->dev, "RNG init wakeup failed error %d\n", rc); + if (!IS_ERR(ctx->clk)) + clk_disable_unprepare(ctx->clk); + hwrng_unregister(&xgene_rng_func); + + return rc; +} + +static const struct of_device_id xgene_rng_of_match[] = { + { .compatible = "apm,xgene-rng" }, + { } +}; + +MODULE_DEVICE_TABLE(of, xgene_rng_of_match); + +static struct platform_driver xgene_rng_driver = { + .probe = xgene_rng_probe, + .remove = xgene_rng_remove, + .driver = { + .name = "xgene-rng", + .of_match_table = xgene_rng_of_match, + }, +}; + +module_platform_driver(xgene_rng_driver); +MODULE_DESCRIPTION("APM X-Gene RNG driver"); +MODULE_LICENSE("GPL"); --- linux-3.13.0.orig/drivers/char/ipmi/Kconfig +++ linux-3.13.0/drivers/char/ipmi/Kconfig @@ -50,6 +50,18 @@ Currently, only KCS and SMIC are supported. If you are using IPMI, you should probably say "y" here. +config IPMI_SI_PROBE_DEFAULTS + bool 'Probe for all possible IPMI system interfaces by default' + default n + depends on IPMI_SI + help + Modern systems will usually expose IPMI interfaces via a discoverable + firmware mechanism such as ACPI or DMI. Older systems do not, and so + the driver is forced to probe hardware manually. This may cause boot + delays. Say "n" here to disable this manual probing. IPMI will then + only be available on older systems if the "ipmi_si_intf.trydefaults=1" + boot argument is passed. + config IPMI_WATCHDOG tristate 'IPMI Watchdog Timer' help --- linux-3.13.0.orig/drivers/char/ipmi/ipmi_bt_sm.c +++ linux-3.13.0/drivers/char/ipmi/ipmi_bt_sm.c @@ -201,7 +201,7 @@ } bt->state = BT_STATE_IDLE; /* start here */ bt->complete = BT_STATE_IDLE; /* end here */ - bt->BT_CAP_req2rsp = BT_NORMAL_TIMEOUT * 1000000; + bt->BT_CAP_req2rsp = BT_NORMAL_TIMEOUT * USEC_PER_SEC; bt->BT_CAP_retries = BT_NORMAL_RETRY_LIMIT; /* BT_CAP_outreqs == zero is a flag to read BT Capabilities */ return 3; /* We claim 3 bytes of space; ought to check SPMI table */ @@ -352,7 +352,7 @@ static inline int read_all_bytes(struct si_sm_data *bt) { - unsigned char i; + unsigned int i; /* * length is "framing info", minimum = 4: NetFn, Seq, Cmd, cCode. @@ -613,7 +613,7 @@ HOST2BMC(42); /* Sequence number */ HOST2BMC(3); /* Cmd == Soft reset */ BT_CONTROL(BT_H2B_ATN); - bt->timeout = BT_RESET_DELAY * 1000000; + bt->timeout = BT_RESET_DELAY * USEC_PER_SEC; BT_STATE_CHANGE(BT_STATE_RESET3, SI_SM_CALL_WITH_DELAY); @@ -651,14 +651,14 @@ bt_init_data(bt, bt->io); if ((i == 8) && !BT_CAP[2]) { bt->BT_CAP_outreqs = BT_CAP[3]; - bt->BT_CAP_req2rsp = BT_CAP[6] * 1000000; + bt->BT_CAP_req2rsp = BT_CAP[6] * USEC_PER_SEC; bt->BT_CAP_retries = BT_CAP[7]; } else printk(KERN_WARNING "IPMI BT: using default values\n"); if (!bt->BT_CAP_outreqs) bt->BT_CAP_outreqs = 1; printk(KERN_WARNING "IPMI BT: req2rsp=%ld secs retries=%d\n", - bt->BT_CAP_req2rsp / 1000000L, bt->BT_CAP_retries); + bt->BT_CAP_req2rsp / USEC_PER_SEC, bt->BT_CAP_retries); bt->timeout = bt->BT_CAP_req2rsp; return SI_SM_CALL_WITHOUT_DELAY; --- linux-3.13.0.orig/drivers/char/ipmi/ipmi_kcs_sm.c +++ linux-3.13.0/drivers/char/ipmi/ipmi_kcs_sm.c @@ -118,8 +118,8 @@ #define MAX_KCS_WRITE_SIZE IPMI_MAX_MSG_LENGTH /* Timeouts in microseconds. */ -#define IBF_RETRY_TIMEOUT 5000000 -#define OBF_RETRY_TIMEOUT 5000000 +#define IBF_RETRY_TIMEOUT (5*USEC_PER_SEC) +#define OBF_RETRY_TIMEOUT (5*USEC_PER_SEC) #define MAX_ERROR_RETRIES 10 #define ERROR0_OBF_WAIT_JIFFIES (2*HZ) --- linux-3.13.0.orig/drivers/char/ipmi/ipmi_si_intf.c +++ linux-3.13.0/drivers/char/ipmi/ipmi_si_intf.c @@ -175,6 +175,7 @@ struct si_sm_handlers *handlers; enum si_type si_type; spinlock_t si_lock; + spinlock_t msg_lock; struct list_head xmit_msgs; struct list_head hp_xmit_msgs; struct ipmi_smi_msg *curr_msg; @@ -356,6 +357,13 @@ struct timeval t; #endif + /* + * No need to save flags, we aleady have interrupts off and we + * already hold the SMI lock. + */ + if (!smi_info->run_to_completion) + spin_lock(&(smi_info->msg_lock)); + /* Pick the high priority queue first. */ if (!list_empty(&(smi_info->hp_xmit_msgs))) { entry = smi_info->hp_xmit_msgs.next; @@ -393,6 +401,9 @@ rv = SI_SM_CALL_WITHOUT_DELAY; } out: + if (!smi_info->run_to_completion) + spin_unlock(&(smi_info->msg_lock)); + return rv; } @@ -879,6 +890,19 @@ printk("**Enqueue: %d.%9.9d\n", t.tv_sec, t.tv_usec); #endif + /* + * last_timeout_jiffies is updated here to avoid + * smi_timeout() handler passing very large time_diff + * value to smi_event_handler() that causes + * the send command to abort. + */ + smi_info->last_timeout_jiffies = jiffies; + + mod_timer(&smi_info->si_timer, jiffies + SI_TIMEOUT_JIFFIES); + + if (smi_info->thread) + wake_up_process(smi_info->thread); + if (smi_info->run_to_completion) { /* * If we are running to completion, then throw it in @@ -901,26 +925,15 @@ return; } - spin_lock_irqsave(&smi_info->si_lock, flags); + spin_lock_irqsave(&smi_info->msg_lock, flags); if (priority > 0) list_add_tail(&msg->link, &smi_info->hp_xmit_msgs); else list_add_tail(&msg->link, &smi_info->xmit_msgs); + spin_unlock_irqrestore(&smi_info->msg_lock, flags); + spin_lock_irqsave(&smi_info->si_lock, flags); if (smi_info->si_state == SI_NORMAL && smi_info->curr_msg == NULL) { - /* - * last_timeout_jiffies is updated here to avoid - * smi_timeout() handler passing very large time_diff - * value to smi_event_handler() that causes - * the send command to abort. - */ - smi_info->last_timeout_jiffies = jiffies; - - mod_timer(&smi_info->si_timer, jiffies + SI_TIMEOUT_JIFFIES); - - if (smi_info->thread) - wake_up_process(smi_info->thread); - start_next_msg(smi_info); smi_event_handler(smi_info, 0); } @@ -1024,19 +1037,16 @@ static void poll(void *send_info) { struct smi_info *smi_info = send_info; - unsigned long flags = 0; - int run_to_completion = smi_info->run_to_completion; + unsigned long flags; /* * Make sure there is some delay in the poll loop so we can * drive time forward and timeout things. */ udelay(10); - if (!run_to_completion) - spin_lock_irqsave(&smi_info->si_lock, flags); + spin_lock_irqsave(&smi_info->si_lock, flags); smi_event_handler(smi_info, 10); - if (!run_to_completion) - spin_unlock_irqrestore(&smi_info->si_lock, flags); + spin_unlock_irqrestore(&smi_info->si_lock, flags); } static void request_events(void *send_info) @@ -1141,15 +1151,15 @@ 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); new_smi->last_timeout_jiffies = jiffies; mod_timer(&new_smi->si_timer, 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. */ @@ -1230,7 +1240,7 @@ #ifdef CONFIG_PCI static bool si_trypci = 1; #endif -static bool si_trydefaults = 1; +static bool si_trydefaults = IS_ENABLED(CONFIG_IPMI_SI_PROBE_DEFAULTS); static char *si_type[SI_MAX_PARMS]; #define MAX_SI_TYPE_STR 30 static char si_type_str[MAX_SI_TYPE_STR]; @@ -1358,7 +1368,7 @@ if (info->si_type == SI_BT) { rv = request_irq(info->irq, si_bt_irq_handler, - IRQF_SHARED | IRQF_DISABLED, + IRQF_SHARED, DEVICE_NAME, info); if (!rv) @@ -1368,7 +1378,7 @@ } else rv = request_irq(info->irq, si_irq_handler, - IRQF_SHARED | IRQF_DISABLED, + IRQF_SHARED, DEVICE_NAME, info); if (rv) { @@ -1702,8 +1712,10 @@ { struct smi_info *info = kzalloc(sizeof(*info), GFP_KERNEL); - if (info) + if (info) { spin_lock_init(&info->si_lock); + spin_lock_init(&info->msg_lock); + } return info; } @@ -1849,11 +1861,15 @@ info->irq_setup = std_irq_setup; info->slave_addr = ipmb; - if (!add_smi(info)) { - if (try_smi_init(info)) - cleanup_one_si(info); - } else { + rv = add_smi(info); + if (rv) { kfree(info); + goto out; + } + rv = try_smi_init(info); + if (rv) { + cleanup_one_si(info); + goto out; } } else { /* remove */ @@ -2067,6 +2083,7 @@ static int try_init_spmi(struct SPMITable *spmi) { struct smi_info *info; + int rv; if (spmi->IPMIlegacy != 1) { printk(KERN_INFO PFX "Bad SPMI legacy %d\n", spmi->IPMIlegacy); @@ -2141,10 +2158,11 @@ info->io.addr_data, info->io.regsize, info->io.regspacing, info->irq); - if (add_smi(info)) + rv = add_smi(info); + if (rv) kfree(info); - return 0; + return rv; } static void spmi_find_bmc(void) @@ -2178,6 +2196,7 @@ acpi_handle handle; acpi_status status; unsigned long long tmp; + int rv; acpi_dev = pnp_acpi_device(dev); if (!acpi_dev) @@ -2259,10 +2278,11 @@ res, info->io.regsize, info->io.regspacing, info->irq); - if (add_smi(info)) - goto err_free; + rv = add_smi(info); + if (rv) + kfree(info); - return 0; + return rv; err_free: kfree(info); @@ -2566,16 +2586,20 @@ &pdev->resource[0], info->io.regsize, info->io.regspacing, info->irq); - if (add_smi(info)) + rv = add_smi(info); + if (rv) { kfree(info); + pci_disable_device(pdev); + } - return 0; + return rv; } static void ipmi_pci_remove(struct pci_dev *pdev) { struct smi_info *info = pci_get_drvdata(pdev); cleanup_one_si(info); + pci_disable_device(pdev); } static struct pci_device_id ipmi_pci_devices[] = { @@ -2670,9 +2694,10 @@ dev_set_drvdata(&dev->dev, info); - if (add_smi(info)) { + ret = add_smi(info); + if (ret) { kfree(info); - return -EBUSY; + return ret; } #endif return 0; @@ -2711,6 +2736,7 @@ static int ipmi_parisc_probe(struct parisc_device *dev) { struct smi_info *info; + int rv; info = smi_info_alloc(); @@ -2736,9 +2762,10 @@ dev_set_drvdata(&dev->dev, info); - if (add_smi(info)) { + rv = add_smi(info); + if (rv) { kfree(info); - return -EBUSY; + return rv; } return 0; @@ -2773,7 +2800,7 @@ smi_result == SI_SM_CALL_WITH_TICK_DELAY) { schedule_timeout_uninterruptible(1); smi_result = smi_info->handlers->event( - smi_info->si_sm, 100); + smi_info->si_sm, jiffies_to_usecs(1)); } else if (smi_result == SI_SM_CALL_WITHOUT_DELAY) { smi_result = smi_info->handlers->event( smi_info->si_sm, 0); --- linux-3.13.0.orig/drivers/char/ipmi/ipmi_smic_sm.c +++ linux-3.13.0/drivers/char/ipmi/ipmi_smic_sm.c @@ -80,7 +80,7 @@ #define SMIC_MAX_ERROR_RETRIES 3 /* Timeouts in microseconds. */ -#define SMIC_RETRY_TIMEOUT 2000000 +#define SMIC_RETRY_TIMEOUT (2*USEC_PER_SEC) /* SMIC Flags Register Bits */ #define SMIC_RX_DATA_READY 0x80 --- linux-3.13.0.orig/drivers/char/random.c +++ linux-3.13.0/drivers/char/random.c @@ -1063,8 +1063,8 @@ * pool while mixing, and hash one final time. */ sha_transform(hash.w, extract, workspace); - memset(extract, 0, sizeof(extract)); - memset(workspace, 0, sizeof(workspace)); + memzero_explicit(extract, sizeof(extract)); + memzero_explicit(workspace, sizeof(workspace)); /* * In case the hash function has some recognizable output @@ -1076,7 +1076,7 @@ hash.w[2] ^= rol32(hash.w[2], 16); memcpy(out, &hash, EXTRACT_SIZE); - memset(&hash, 0, sizeof(hash)); + memzero_explicit(&hash, sizeof(hash)); } static ssize_t extract_entropy(struct entropy_store *r, void *buf, @@ -1124,7 +1124,7 @@ } /* Wipe data just returned from memory */ - memset(tmp, 0, sizeof(tmp)); + memzero_explicit(tmp, sizeof(tmp)); return ret; } @@ -1162,7 +1162,7 @@ } /* Wipe data just returned from memory */ - memset(tmp, 0, sizeof(tmp)); + memzero_explicit(tmp, sizeof(tmp)); return ret; } --- linux-3.13.0.orig/drivers/char/raw.c +++ linux-3.13.0/drivers/char/raw.c @@ -190,7 +190,7 @@ struct raw_device_data *rawdev; struct block_device *bdev; - if (number <= 0 || number >= MAX_RAW_MINORS) + if (number <= 0 || number >= max_raw_minors) return -EINVAL; rawdev = &raw_devices[number]; --- linux-3.13.0.orig/drivers/char/tpm/tpm-interface.c +++ linux-3.13.0/drivers/char/tpm/tpm-interface.c @@ -1400,13 +1400,13 @@ int err, total = 0, retries = 5; u8 *dest = out; + if (!out || !num_bytes || max > TPM_MAX_RNG_DATA) + return -EINVAL; + chip = tpm_chip_find_get(chip_num); if (chip == NULL) return -ENODEV; - if (!out || !num_bytes || max > TPM_MAX_RNG_DATA) - return -EINVAL; - do { tpm_cmd.header.in = tpm_getrandom_header; tpm_cmd.params.getrandom_in.num_bytes = cpu_to_be32(num_bytes); @@ -1425,6 +1425,7 @@ num_bytes -= recd; } while (retries-- && total < max); + tpm_chip_put(chip); return total ? total : -EIO; } EXPORT_SYMBOL_GPL(tpm_get_random); @@ -1535,7 +1536,7 @@ /* Make 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); return chip; --- linux-3.13.0.orig/drivers/char/tpm/tpm_i2c_atmel.c +++ linux-3.13.0/drivers/char/tpm/tpm_i2c_atmel.c @@ -208,6 +208,10 @@ chip->vendor.priv = devm_kzalloc(dev, sizeof(struct priv_data), GFP_KERNEL); + if (!chip->vendor.priv) { + rc = -ENOMEM; + goto out_err; + } /* Default timeouts */ chip->vendor.timeout_a = msecs_to_jiffies(TPM_I2C_SHORT_TIMEOUT); --- linux-3.13.0.orig/drivers/char/tpm/tpm_i2c_nuvoton.c +++ linux-3.13.0/drivers/char/tpm/tpm_i2c_nuvoton.c @@ -579,6 +579,11 @@ chip->vendor.priv = devm_kzalloc(dev, sizeof(struct priv_data), GFP_KERNEL); + if (!chip->vendor.priv) { + rc = -ENOMEM; + goto out_err; + } + init_waitqueue_head(&chip->vendor.read_queue); init_waitqueue_head(&chip->vendor.int_queue); --- linux-3.13.0.orig/drivers/char/tpm/tpm_i2c_stm_st33.c +++ linux-3.13.0/drivers/char/tpm/tpm_i2c_stm_st33.c @@ -398,7 +398,7 @@ */ static int recv_data(struct tpm_chip *chip, u8 *buf, size_t count) { - int size = 0, burstcnt, len; + int size = 0, burstcnt, len, ret; struct i2c_client *client; client = (struct i2c_client *)TPM_VPRIV(chip); @@ -410,8 +410,13 @@ &chip->vendor.read_queue) == 0) { burstcnt = get_burstcount(chip); + if (burstcnt < 0) + return burstcnt; len = min_t(int, burstcnt, count - size); - I2C_READ_DATA(client, TPM_DATA_FIFO, buf + size, len); + ret = I2C_READ_DATA(client, TPM_DATA_FIFO, buf + size, len); + if (ret < 0) + return ret; + size += len; } return size; @@ -451,7 +456,8 @@ static int tpm_stm_i2c_send(struct tpm_chip *chip, unsigned char *buf, size_t len) { - u32 status, burstcnt = 0, i, size; + u32 status, i, size; + int burstcnt = 0; int ret; u8 data; struct i2c_client *client; @@ -482,8 +488,10 @@ for (i = 0; i < len - 1;) { burstcnt = get_burstcount(chip); + if (burstcnt < 0) + return burstcnt; size = min_t(int, len - i - 1, burstcnt); - ret = I2C_WRITE_DATA(client, TPM_DATA_FIFO, buf, size); + ret = I2C_WRITE_DATA(client, TPM_DATA_FIFO, buf + i, size); if (ret < 0) goto out_err; @@ -745,6 +753,7 @@ } tpm_get_timeouts(chip); + tpm_do_selftest(chip); dev_info(chip->dev, "TPM I2C Initialized\n"); return 0; --- linux-3.13.0.orig/drivers/char/tpm/tpm_ibmvtpm.c +++ linux-3.13.0/drivers/char/tpm/tpm_ibmvtpm.c @@ -124,7 +124,7 @@ { struct ibmvtpm_dev *ibmvtpm; struct ibmvtpm_crq crq; - u64 *word = (u64 *) &crq; + __be64 *word = (__be64 *)&crq; int rc; ibmvtpm = (struct ibmvtpm_dev *)TPM_VPRIV(chip); @@ -145,10 +145,11 @@ memcpy((void *)ibmvtpm->rtce_buf, (void *)buf, count); crq.valid = (u8)IBMVTPM_VALID_CMD; crq.msg = (u8)VTPM_TPM_COMMAND; - crq.len = (u16)count; - crq.data = ibmvtpm->rtce_dma_handle; + crq.len = cpu_to_be16(count); + crq.data = cpu_to_be32(ibmvtpm->rtce_dma_handle); - rc = ibmvtpm_send_crq(ibmvtpm->vdev, word[0], word[1]); + rc = ibmvtpm_send_crq(ibmvtpm->vdev, be64_to_cpu(word[0]), + be64_to_cpu(word[1])); if (rc != H_SUCCESS) { dev_err(ibmvtpm->dev, "tpm_ibmvtpm_send failed rc=%d\n", rc); rc = 0; @@ -186,7 +187,8 @@ crq.valid = (u8)IBMVTPM_VALID_CMD; crq.msg = (u8)VTPM_GET_RTCE_BUFFER_SIZE; - rc = ibmvtpm_send_crq(ibmvtpm->vdev, buf[0], buf[1]); + rc = ibmvtpm_send_crq(ibmvtpm->vdev, cpu_to_be64(buf[0]), + cpu_to_be64(buf[1])); if (rc != H_SUCCESS) dev_err(ibmvtpm->dev, "ibmvtpm_crq_get_rtce_size failed rc=%d\n", rc); @@ -212,7 +214,8 @@ crq.valid = (u8)IBMVTPM_VALID_CMD; crq.msg = (u8)VTPM_GET_VERSION; - rc = ibmvtpm_send_crq(ibmvtpm->vdev, buf[0], buf[1]); + rc = ibmvtpm_send_crq(ibmvtpm->vdev, cpu_to_be64(buf[0]), + cpu_to_be64(buf[1])); if (rc != H_SUCCESS) dev_err(ibmvtpm->dev, "ibmvtpm_crq_get_version failed rc=%d\n", rc); @@ -307,6 +310,14 @@ static unsigned long tpm_ibmvtpm_get_desired_dma(struct vio_dev *vdev) { struct ibmvtpm_dev *ibmvtpm = ibmvtpm_get_data(&vdev->dev); + + /* ibmvtpm initializes at probe time, so the data we are + * asking for may not be set yet. Estimate that 4K required + * for TCE-mapped buffer in addition to CRQ. + */ + if (!ibmvtpm) + return CRQ_RES_BUF_SIZE + PAGE_SIZE; + return CRQ_RES_BUF_SIZE + ibmvtpm->rtce_size; } @@ -327,7 +338,8 @@ crq.valid = (u8)IBMVTPM_VALID_CMD; crq.msg = (u8)VTPM_PREPARE_TO_SUSPEND; - rc = ibmvtpm_send_crq(ibmvtpm->vdev, buf[0], buf[1]); + rc = ibmvtpm_send_crq(ibmvtpm->vdev, cpu_to_be64(buf[0]), + cpu_to_be64(buf[1])); if (rc != H_SUCCESS) dev_err(ibmvtpm->dev, "tpm_ibmvtpm_suspend failed rc=%d\n", rc); @@ -511,13 +523,13 @@ case IBMVTPM_VALID_CMD: switch (crq->msg) { case VTPM_GET_RTCE_BUFFER_SIZE_RES: - if (crq->len <= 0) { + if (be16_to_cpu(crq->len) <= 0) { dev_err(ibmvtpm->dev, "Invalid rtce size\n"); return; } - ibmvtpm->rtce_size = crq->len; + 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; @@ -536,11 +548,11 @@ return; case VTPM_GET_VERSION_RES: - ibmvtpm->vtpm_version = crq->data; + ibmvtpm->vtpm_version = be32_to_cpu(crq->data); return; case VTPM_TPM_COMMAND_RES: /* len of the data in rtce buffer */ - ibmvtpm->res_len = crq->len; + ibmvtpm->res_len = be16_to_cpu(crq->len); wake_up_interruptible(&ibmvtpm->wq); return; default: @@ -606,6 +618,9 @@ goto cleanup; } + ibmvtpm->dev = dev; + ibmvtpm->vdev = vio_dev; + crq_q = &ibmvtpm->crq_queue; crq_q->crq_addr = (struct ibmvtpm_crq *)get_zeroed_page(GFP_KERNEL); if (!crq_q->crq_addr) { @@ -650,8 +665,6 @@ crq_q->index = 0; - ibmvtpm->dev = dev; - ibmvtpm->vdev = vio_dev; TPM_VPRIV(chip) = (void *)ibmvtpm; spin_lock_init(&ibmvtpm->rtce_lock); --- linux-3.13.0.orig/drivers/char/tpm/tpm_ibmvtpm.h +++ linux-3.13.0/drivers/char/tpm/tpm_ibmvtpm.h @@ -22,9 +22,9 @@ struct ibmvtpm_crq { u8 valid; u8 msg; - u16 len; - u32 data; - u64 reserved; + __be16 len; + __be32 data; + __be64 reserved; } __attribute__((packed, aligned(8))); struct ibmvtpm_crq_queue { --- linux-3.13.0.orig/drivers/char/tpm/tpm_of.c +++ linux-3.13.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-3.13.0.orig/drivers/char/tpm/tpm_ppi.c +++ linux-3.13.0/drivers/char/tpm/tpm_ppi.c @@ -172,7 +172,7 @@ * is updated with function index from SUBREQ to SUBREQ2 since PPI * version 1.1 */ - if (strcmp(version, "1.1") == -1) + if (strcmp(version, "1.1") < 0) params[2].integer.value = TPM_PPI_FN_SUBREQ; else params[2].integer.value = TPM_PPI_FN_SUBREQ2; @@ -182,7 +182,7 @@ * string/package type. For PPI version 1.0 and 1.1, use buffer type * for compatibility, and use package type since 1.2 according to spec. */ - if (strcmp(version, "1.2") == -1) { + if (strcmp(version, "1.2") < 0) { params[3].type = ACPI_TYPE_BUFFER; params[3].buffer.length = sizeof(req); sscanf(buf, "%d", &req); @@ -248,7 +248,7 @@ * (e.g. Capella with PPI 1.0) need integer/string/buffer type, so for * compatibility, define params[3].type as buffer, if PPI version < 1.2 */ - if (strcmp(version, "1.2") == -1) { + if (strcmp(version, "1.2") < 0) { params[3].type = ACPI_TYPE_BUFFER; params[3].buffer.length = 0; params[3].buffer.pointer = NULL; @@ -390,7 +390,7 @@ kfree(output.pointer); output.length = ACPI_ALLOCATE_BUFFER; output.pointer = NULL; - if (strcmp(version, "1.2") == -1) + if (strcmp(version, "1.2") < 0) return -EPERM; params[2].integer.value = TPM_PPI_FN_GETOPR; --- linux-3.13.0.orig/drivers/char/tpm/tpm_tis.c +++ linux-3.13.0/drivers/char/tpm/tpm_tis.c @@ -75,6 +75,10 @@ #define TPM_DID_VID(l) (0x0F00 | ((l) << 12)) #define TPM_RID(l) (0x0F04 | ((l) << 12)) +struct priv_data { + bool irq_tested; +}; + static LIST_HEAD(tis_chips); static DEFINE_MUTEX(tis_lock); @@ -338,12 +342,27 @@ return rc; } +static void disable_interrupts(struct tpm_chip *chip) +{ + u32 intmask; + + intmask = + ioread32(chip->vendor.iobase + + TPM_INT_ENABLE(chip->vendor.locality)); + intmask &= ~TPM_GLOBAL_INT_ENABLE; + iowrite32(intmask, + chip->vendor.iobase + + TPM_INT_ENABLE(chip->vendor.locality)); + free_irq(chip->vendor.irq, chip); + chip->vendor.irq = 0; +} + /* * If interrupts are used (signaled by an irq set in the vendor structure) * tpm.c can skip polling for the data to be available as the interrupt is * waited for here */ -static int tpm_tis_send(struct tpm_chip *chip, u8 *buf, size_t len) +static int tpm_tis_send_main(struct tpm_chip *chip, u8 *buf, size_t len) { int rc; u32 ordinal; @@ -373,6 +392,30 @@ return rc; } +static int tpm_tis_send(struct tpm_chip *chip, u8 *buf, size_t len) +{ + int rc, irq; + struct priv_data *priv = chip->vendor.priv; + + if (!chip->vendor.irq || priv->irq_tested) + return tpm_tis_send_main(chip, buf, len); + + /* Verify receipt of the expected IRQ */ + irq = chip->vendor.irq; + chip->vendor.irq = 0; + rc = tpm_tis_send_main(chip, buf, len); + chip->vendor.irq = irq; + if (!priv->irq_tested) + msleep(1); + if (!priv->irq_tested) { + disable_interrupts(chip); + dev_err(chip->dev, + FW_BUG "TPM interrupt not working, polling instead\n"); + } + priv->irq_tested = true; + return rc; +} + /* * Early probing for iTPM with STS_DATA_EXPECT flaw. * Try sending command without itpm flag set and if that @@ -515,6 +558,7 @@ if (interrupt == 0) return IRQ_NONE; + ((struct priv_data *)chip->vendor.priv)->irq_tested = true; if (interrupt & TPM_INTF_DATA_AVAIL_INT) wake_up_interruptible(&chip->vendor.read_queue); if (interrupt & TPM_INTF_LOCALITY_CHANGE_INT) @@ -544,9 +588,14 @@ u32 vendor, intfcaps, intmask; int rc, i, irq_s, irq_e, probe; struct tpm_chip *chip; + struct priv_data *priv; + priv = devm_kzalloc(dev, sizeof(struct priv_data), GFP_KERNEL); + if (priv == NULL) + return -ENOMEM; if (!(chip = tpm_register_hardware(dev, &tpm_tis))) return -ENODEV; + chip->vendor.priv = priv; chip->vendor.iobase = ioremap(start, len); if (!chip->vendor.iobase) { @@ -615,19 +664,6 @@ if (intfcaps & TPM_INTF_DATA_AVAIL_INT) dev_dbg(dev, "\tData Avail Int Support\n"); - /* get the timeouts before testing for irqs */ - if (tpm_get_timeouts(chip)) { - dev_err(dev, "Could not get TPM timeouts and durations\n"); - rc = -ENODEV; - goto out_err; - } - - if (tpm_do_selftest(chip)) { - dev_err(dev, "TPM self test failed\n"); - rc = -ENODEV; - goto out_err; - } - /* INTERRUPT Setup */ init_waitqueue_head(&chip->vendor.read_queue); init_waitqueue_head(&chip->vendor.int_queue); @@ -729,6 +765,18 @@ } } + if (tpm_get_timeouts(chip)) { + dev_err(dev, "Could not get TPM timeouts and durations\n"); + rc = -ENODEV; + goto out_err; + } + + if (tpm_do_selftest(chip)) { + dev_err(dev, "TPM self test failed\n"); + rc = -ENODEV; + goto out_err; + } + INIT_LIST_HEAD(&chip->vendor.list); mutex_lock(&tis_lock); list_add(&chip->vendor.list, &tis_chips); --- linux-3.13.0.orig/drivers/char/tpm/xen-tpmfront.c +++ linux-3.13.0/drivers/char/tpm/xen-tpmfront.c @@ -17,6 +17,7 @@ #include #include #include "tpm.h" +#include struct tpm_private { struct tpm_chip *chip; @@ -421,6 +422,9 @@ if (!xen_domain()) return -ENODEV; + if (!xen_has_pv_devices()) + return -ENODEV; + return xenbus_register_frontend(&tpmfront_driver); } module_init(xen_tpmfront_init); --- linux-3.13.0.orig/drivers/char/virtio_console.c +++ linux-3.13.0/drivers/char/virtio_console.c @@ -142,6 +142,7 @@ * notification */ struct work_struct control_work; + struct work_struct config_work; struct list_head ports; @@ -1835,10 +1836,21 @@ portdev = vdev->priv; + if (!use_multiport(portdev)) + schedule_work(&portdev->config_work); +} + +static void config_work_handler(struct work_struct *work) +{ + struct ports_device *portdev; + + portdev = container_of(work, struct ports_device, control_work); if (!use_multiport(portdev)) { + struct virtio_device *vdev; struct port *port; u16 rows, cols; + vdev = portdev->vdev; virtio_cread(vdev, struct virtio_console_config, cols, &cols); virtio_cread(vdev, struct virtio_console_config, rows, &rows); @@ -2027,12 +2039,14 @@ spin_lock_init(&portdev->ports_lock); INIT_LIST_HEAD(&portdev->ports); + INIT_WORK(&portdev->config_work, &config_work_handler); + INIT_WORK(&portdev->control_work, &control_work_handler); + if (multiport) { unsigned int nr_added_bufs; spin_lock_init(&portdev->c_ivq_lock); spin_lock_init(&portdev->c_ovq_lock); - INIT_WORK(&portdev->control_work, &control_work_handler); nr_added_bufs = fill_queue(portdev->c_ivq, &portdev->c_ivq_lock); @@ -2100,6 +2114,8 @@ /* Finish up work that's lined up */ if (use_multiport(portdev)) cancel_work_sync(&portdev->control_work); + else + cancel_work_sync(&portdev->config_work); list_for_each_entry_safe(port, port2, &portdev->ports, list) unplug_port(port); @@ -2151,6 +2167,7 @@ virtqueue_disable_cb(portdev->c_ivq); cancel_work_sync(&portdev->control_work); + cancel_work_sync(&portdev->config_work); /* * Once more: if control_work_handler() was running, it would * enable the cb as the last step. --- linux-3.13.0.orig/drivers/clk/clk-gate.c +++ linux-3.13.0/drivers/clk/clk-gate.c @@ -128,7 +128,7 @@ struct clk_init_data init; if (clk_gate_flags & CLK_GATE_HIWORD_MASK) { - if (bit_idx > 16) { + if (bit_idx > 15) { pr_err("gate bit exceeds LOWORD field\n"); return ERR_PTR(-EINVAL); } --- linux-3.13.0.orig/drivers/clk/clk-s2mps11.c +++ linux-3.13.0/drivers/clk/clk-s2mps11.c @@ -130,7 +130,7 @@ int i; if (!iodev->dev->of_node) - return NULL; + return ERR_PTR(-EINVAL); clk_np = of_find_node_by_name(iodev->dev->of_node, "clocks"); if (!clk_np) { @@ -190,16 +190,13 @@ goto err_reg; } - s2mps11_clk->lookup = devm_kzalloc(&pdev->dev, - sizeof(struct clk_lookup), GFP_KERNEL); + s2mps11_clk->lookup = clkdev_alloc(s2mps11_clk->clk, + s2mps11_name(s2mps11_clk), NULL); if (!s2mps11_clk->lookup) { ret = -ENOMEM; goto err_lup; } - s2mps11_clk->lookup->con_id = s2mps11_name(s2mps11_clk); - s2mps11_clk->lookup->clk = s2mps11_clk->clk; - clkdev_add(s2mps11_clk->lookup); } --- linux-3.13.0.orig/drivers/clk/clk-xgene.c +++ linux-3.13.0/drivers/clk/clk-xgene.c @@ -351,7 +351,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-3.13.0.orig/drivers/clk/clk.c +++ linux-3.13.0/drivers/clk/clk.c @@ -1819,9 +1819,28 @@ } EXPORT_SYMBOL_GPL(__clk_register); -static int _clk_register(struct device *dev, struct clk_hw *hw, struct clk *clk) +/** + * clk_register - allocate a new clock, register it and return an opaque cookie + * @dev: device that is registering this clock + * @hw: link to hardware-specific clock data + * + * clk_register is the primary interface for populating the clock tree with new + * clock nodes. It returns a pointer to the newly allocated struct clk which + * cannot be dereferenced by driver code but may be used in conjuction with the + * rest of the clock API. In the event of an error clk_register will return an + * error code; drivers must test for an error code after calling clk_register. + */ +struct clk *clk_register(struct device *dev, struct clk_hw *hw) { int i, ret; + struct clk *clk; + + clk = kzalloc(sizeof(*clk), GFP_KERNEL); + if (!clk) { + pr_err("%s: could not allocate clk\n", __func__); + ret = -ENOMEM; + goto fail_out; + } clk->name = kstrdup(hw->init->name, GFP_KERNEL); if (!clk->name) { @@ -1859,7 +1878,7 @@ ret = __clk_init(dev, clk); if (!ret) - return 0; + return clk; fail_parent_names_copy: while (--i >= 0) @@ -1868,36 +1887,6 @@ fail_parent_names: kfree(clk->name); fail_name: - return ret; -} - -/** - * clk_register - allocate a new clock, register it and return an opaque cookie - * @dev: device that is registering this clock - * @hw: link to hardware-specific clock data - * - * clk_register is the primary interface for populating the clock tree with new - * clock nodes. It returns a pointer to the newly allocated struct clk which - * cannot be dereferenced by driver code but may be used in conjuction with the - * rest of the clock API. In the event of an error clk_register will return an - * error code; drivers must test for an error code after calling clk_register. - */ -struct clk *clk_register(struct device *dev, struct clk_hw *hw) -{ - int ret; - struct clk *clk; - - clk = kzalloc(sizeof(*clk), GFP_KERNEL); - if (!clk) { - pr_err("%s: could not allocate clk\n", __func__); - ret = -ENOMEM; - goto fail_out; - } - - ret = _clk_register(dev, hw, clk); - if (!ret) - return clk; - kfree(clk); fail_out: return ERR_PTR(ret); @@ -1915,7 +1904,7 @@ static void devm_clk_release(struct device *dev, void *res) { - clk_unregister(res); + clk_unregister(*(struct clk **)res); } /** @@ -1930,18 +1919,18 @@ struct clk *devm_clk_register(struct device *dev, struct clk_hw *hw) { struct clk *clk; - int ret; + struct clk **clkp; - clk = devres_alloc(devm_clk_release, sizeof(*clk), GFP_KERNEL); - if (!clk) + clkp = devres_alloc(devm_clk_release, sizeof(*clkp), GFP_KERNEL); + if (!clkp) return ERR_PTR(-ENOMEM); - ret = _clk_register(dev, hw, clk); - if (!ret) { - devres_add(dev, clk); + clk = clk_register(dev, hw); + if (!IS_ERR(clk)) { + *clkp = clk; + devres_add(dev, clkp); } else { - devres_free(clk); - clk = ERR_PTR(ret); + devres_free(clkp); } return clk; --- linux-3.13.0.orig/drivers/clk/spear/spear3xx_clock.c +++ linux-3.13.0/drivers/clk/spear/spear3xx_clock.c @@ -211,7 +211,7 @@ /* array of all spear 320 clock lookups */ #ifdef CONFIG_MACH_SPEAR320 -#define SPEAR320_CONTROL_REG (soc_config_base + 0x0000) +#define SPEAR320_CONTROL_REG (soc_config_base + 0x0010) #define SPEAR320_EXT_CTRL_REG (soc_config_base + 0x0018) #define SPEAR320_UARTX_PCLK_MASK 0x1 --- linux-3.13.0.orig/drivers/clk/tegra/clk-pll.c +++ linux-3.13.0/drivers/clk/tegra/clk-pll.c @@ -1587,12 +1587,14 @@ val_aux = pll_readl(pll_params->aux_reg, pll); if (val & PLL_BASE_ENABLE) { - if (!(val_aux & PLLE_AUX_PLLRE_SEL)) + if ((val_aux & PLLE_AUX_PLLRE_SEL) || + (val_aux & PLLE_AUX_PLLP_SEL)) WARN(1, "pll_e enabled with unsupported parent %s\n", - (val & PLLE_AUX_PLLP_SEL) ? "pllp_out0" : "pll_ref"); + (val_aux & PLLE_AUX_PLLP_SEL) ? "pllp_out0" : + "pll_re_vco"); } else { - val_aux |= PLLE_AUX_PLLRE_SEL; - pll_writel(val, pll_params->aux_reg, pll); + val_aux &= ~(PLLE_AUX_PLLRE_SEL | PLLE_AUX_PLLP_SEL); + pll_writel(val_aux, pll_params->aux_reg, pll); } clk = _tegra_clk_register_pll(pll, name, parent_name, flags, --- linux-3.13.0.orig/drivers/clk/tegra/clk-tegra114.c +++ linux-3.13.0/drivers/clk/tegra/clk-tegra114.c @@ -673,6 +673,7 @@ /* PLLE special case: use cpcon field to store cml divider value */ {336000000, 100000000, 100, 21, 16, 11}, {312000000, 100000000, 200, 26, 24, 13}, + {12000000, 100000000, 200, 1, 24, 13}, {0, 0, 0, 0, 0, 0}, }; @@ -1501,7 +1502,7 @@ clks[pll_re_out] = clk; /* PLLE */ - clk = tegra_clk_register_plle_tegra114("pll_e_out0", "pll_re_vco", + clk = tegra_clk_register_plle_tegra114("pll_e_out0", "pll_ref", clk_base, 0, 100000000, &pll_e_params, pll_e_freq_table, NULL); clk_register_clkdev(clk, "pll_e_out0", NULL); --- linux-3.13.0.orig/drivers/clk/versatile/clk-sp810.c +++ linux-3.13.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-3.13.0.orig/drivers/clk/zynq/clkc.c +++ linux-3.13.0/drivers/clk/zynq/clkc.c @@ -290,6 +290,7 @@ clks[cpu_2x] = clk_register_gate(NULL, clk_output_name[cpu_2x], "cpu_2x_div", CLK_IGNORE_UNUSED, SLCR_ARM_CLK_CTRL, 26, 0, &armclk_lock); + clk_prepare_enable(clks[cpu_2x]); clk = clk_register_fixed_factor(NULL, "cpu_1x_div", "cpu_div", 0, 1, 4 + 2 * tmp); --- linux-3.13.0.orig/drivers/clocksource/arm_arch_timer.c +++ linux-3.13.0/drivers/clocksource/arm_arch_timer.c @@ -426,10 +426,14 @@ u64 start_count; /* Register the CP15 based counter if we have one */ - if (type & ARCH_CP15_TIMER) - arch_timer_read_counter = arch_counter_get_cntvct; - else + if (type & ARCH_CP15_TIMER) { + if (IS_ENABLED(CONFIG_ARM64) || arch_timer_use_virtual) + arch_timer_read_counter = arch_counter_get_cntvct; + else + arch_timer_read_counter = arch_counter_get_cntpct; + } else { arch_timer_read_counter = arch_counter_get_cntvct_mem; + } start_count = arch_timer_read_counter(); clocksource_register_hz(&clocksource_counter, arch_timer_rate); --- linux-3.13.0.orig/drivers/clocksource/exynos_mct.c +++ linux-3.13.0/drivers/clocksource/exynos_mct.c @@ -94,8 +94,8 @@ __raw_writel(value, reg_base + offset); if (likely(offset >= EXYNOS4_MCT_L_BASE(0))) { - stat_addr = (offset & ~EXYNOS4_MCT_L_MASK) + MCT_L_WSTAT_OFFSET; - switch (offset & EXYNOS4_MCT_L_MASK) { + stat_addr = (offset & EXYNOS4_MCT_L_MASK) + MCT_L_WSTAT_OFFSET; + switch (offset & ~EXYNOS4_MCT_L_MASK) { case MCT_L_TCON_OFFSET: mask = 1 << 3; /* L_TCON write status */ break; @@ -414,23 +414,21 @@ evt->set_mode = exynos4_tick_set_mode; evt->features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT; evt->rating = 450; - clockevents_config_and_register(evt, clk_rate / (TICK_BASE_CNT + 1), - 0xf, 0x7fffffff); exynos4_mct_write(TICK_BASE_CNT, mevt->base + MCT_L_TCNTB_OFFSET); if (mct_int_type == MCT_INT_SPI) { - evt->irq = mct_irqs[MCT_L0_IRQ + cpu]; - if (request_irq(evt->irq, exynos4_mct_tick_isr, - IRQF_TIMER | IRQF_NOBALANCING, - evt->name, mevt)) { - pr_err("exynos-mct: cannot register IRQ %d\n", - evt->irq); + + if (evt->irq == -1) return -EIO; - } + + irq_force_affinity(evt->irq, cpumask_of(cpu)); + enable_irq(evt->irq); } else { enable_percpu_irq(mct_irqs[MCT_L0_IRQ], 0); } + clockevents_config_and_register(evt, clk_rate / (TICK_BASE_CNT + 1), + 0xf, 0x7fffffff); return 0; } @@ -438,17 +436,18 @@ static void exynos4_local_timer_stop(struct clock_event_device *evt) { evt->set_mode(CLOCK_EVT_MODE_UNUSED, evt); - if (mct_int_type == MCT_INT_SPI) - free_irq(evt->irq, this_cpu_ptr(&percpu_mct_tick)); - else + if (mct_int_type == MCT_INT_SPI) { + if (evt->irq != -1) + disable_irq_nosync(evt->irq); + } else { disable_percpu_irq(mct_irqs[MCT_L0_IRQ]); + } } static int exynos4_mct_cpu_notify(struct notifier_block *self, unsigned long action, void *hcpu) { struct mct_clock_event_device *mevt; - unsigned int cpu; /* * Grab cpu pointer in each case to avoid spurious @@ -459,12 +458,6 @@ mevt = this_cpu_ptr(&percpu_mct_tick); exynos4_local_timer_setup(&mevt->evt); break; - case CPU_ONLINE: - cpu = (unsigned long)hcpu; - if (mct_int_type == MCT_INT_SPI) - irq_set_affinity(mct_irqs[MCT_L0_IRQ + cpu], - cpumask_of(cpu)); - break; case CPU_DYING: mevt = this_cpu_ptr(&percpu_mct_tick); exynos4_local_timer_stop(&mevt->evt); @@ -480,7 +473,7 @@ static void __init exynos4_timer_resources(struct device_node *np, void __iomem *base) { - int err; + int err, cpu; struct mct_clock_event_device *mevt = this_cpu_ptr(&percpu_mct_tick); struct clk *mct_clk, *tick_clk; @@ -507,7 +500,25 @@ WARN(err, "MCT: can't request IRQ %d (%d)\n", mct_irqs[MCT_L0_IRQ], err); } else { - irq_set_affinity(mct_irqs[MCT_L0_IRQ], cpumask_of(0)); + for_each_possible_cpu(cpu) { + int mct_irq = mct_irqs[MCT_L0_IRQ + cpu]; + struct mct_clock_event_device *pcpu_mevt = + per_cpu_ptr(&percpu_mct_tick, cpu); + + pcpu_mevt->evt.irq = -1; + + irq_set_status_flags(mct_irq, IRQ_NOAUTOEN); + if (request_irq(mct_irq, + exynos4_mct_tick_isr, + IRQF_TIMER | IRQF_NOBALANCING, + pcpu_mevt->name, pcpu_mevt)) { + pr_err("exynos-mct: cannot register IRQ (cpu%d)\n", + cpu); + + continue; + } + pcpu_mevt->evt.irq = mct_irq; + } } err = register_cpu_notifier(&exynos4_mct_cpu_nb); --- linux-3.13.0.orig/drivers/clocksource/sun4i_timer.c +++ linux-3.13.0/drivers/clocksource/sun4i_timer.c @@ -182,6 +182,11 @@ /* Make sure timer is stopped before playing with interrupts */ sun4i_clkevt_time_stop(0); + sun4i_clockevent.cpumask = cpumask_of(0); + + clockevents_config_and_register(&sun4i_clockevent, rate, + TIMER_SYNC_TICKS, 0xffffffff); + ret = setup_irq(irq, &sun4i_timer_irq); if (ret) pr_warn("failed to setup irq %d\n", irq); @@ -189,11 +194,6 @@ /* Enable timer0 interrupt */ val = readl(timer_base + TIMER_IRQ_EN_REG); writel(val | TIMER_IRQ_EN(0), timer_base + TIMER_IRQ_EN_REG); - - sun4i_clockevent.cpumask = cpumask_of(0); - - clockevents_config_and_register(&sun4i_clockevent, rate, - TIMER_SYNC_TICKS, 0xffffffff); } CLOCKSOURCE_OF_DECLARE(sun4i, "allwinner,sun4i-timer", sun4i_timer_init); --- linux-3.13.0.orig/drivers/clocksource/time-efm32.c +++ linux-3.13.0/drivers/clocksource/time-efm32.c @@ -225,12 +225,12 @@ clock_event_ddata.base = base; clock_event_ddata.periodic_top = DIV_ROUND_CLOSEST(rate, 1024 * HZ); - setup_irq(irq, &efm32_clock_event_irq); - clockevents_config_and_register(&clock_event_ddata.evtdev, DIV_ROUND_CLOSEST(rate, 1024), 0xf, 0xffff); + setup_irq(irq, &efm32_clock_event_irq); + return 0; err_get_irq: --- linux-3.13.0.orig/drivers/clocksource/vf_pit_timer.c +++ linux-3.13.0/drivers/clocksource/vf_pit_timer.c @@ -54,7 +54,7 @@ static u64 pit_read_sched_clock(void) { - return __raw_readl(clksrc_base + PITCVAL); + return ~__raw_readl(clksrc_base + PITCVAL); } static int __init pit_clocksource_init(unsigned long rate) --- linux-3.13.0.orig/drivers/clocksource/vt8500_timer.c +++ linux-3.13.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-3.13.0.orig/drivers/connector/cn_proc.c +++ linux-3.13.0/drivers/connector/cn_proc.c @@ -369,7 +369,7 @@ return; /* Can only change if privileged. */ - if (!capable(CAP_NET_ADMIN)) { + if (!__netlink_ns_capable(nsp, &init_user_ns, CAP_NET_ADMIN)) { err = EPERM; goto out; } --- linux-3.13.0.orig/drivers/connector/connector.c +++ linux-3.13.0/drivers/connector/connector.c @@ -154,26 +154,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-3.13.0.orig/drivers/cpufreq/Kconfig.powerpc +++ linux-3.13.0/drivers/cpufreq/Kconfig.powerpc @@ -54,3 +54,11 @@ help This adds the support for frequency switching on PA Semi PWRficient processors. + +config POWERNV_CPUFREQ + tristate "CPU frequency scaling for IBM POWERNV platform" + depends on PPC_POWERNV + default y + help + This adds support for CPU frequency switching on IBM POWERNV + platform --- linux-3.13.0.orig/drivers/cpufreq/Makefile +++ linux-3.13.0/drivers/cpufreq/Makefile @@ -47,7 +47,7 @@ # LITTLE drivers, so that it is probed last. obj-$(CONFIG_ARM_DT_BL_CPUFREQ) += arm_big_little_dt.o -obj-$(CONFIG_ARCH_DAVINCI_DA850) += davinci-cpufreq.o +obj-$(CONFIG_ARCH_DAVINCI) += davinci-cpufreq.o obj-$(CONFIG_UX500_SOC_DB8500) += dbx500-cpufreq.o obj-$(CONFIG_ARM_EXYNOS_CPUFREQ) += exynos-cpufreq.o obj-$(CONFIG_ARM_EXYNOS4210_CPUFREQ) += exynos4210-cpufreq.o @@ -86,6 +86,7 @@ obj-$(CONFIG_CPU_FREQ_PMAC) += pmac32-cpufreq.o obj-$(CONFIG_CPU_FREQ_PMAC64) += pmac64-cpufreq.o obj-$(CONFIG_PPC_PASEMI_CPUFREQ) += pasemi-cpufreq.o +obj-$(CONFIG_POWERNV_CPUFREQ) += powernv-cpufreq.o ################################################################################## # Other platform drivers --- linux-3.13.0.orig/drivers/cpufreq/cpufreq-cpu0.c +++ linux-3.13.0/drivers/cpufreq/cpufreq-cpu0.c @@ -131,7 +131,7 @@ return -ENOENT; } - cpu_reg = devm_regulator_get_optional(cpu_dev, "cpu0"); + cpu_reg = regulator_get_optional(cpu_dev, "cpu0"); if (IS_ERR(cpu_reg)) { /* * If cpu0 regulator supply node is present, but regulator is @@ -146,23 +146,23 @@ PTR_ERR(cpu_reg)); } - cpu_clk = devm_clk_get(cpu_dev, NULL); + cpu_clk = clk_get(cpu_dev, NULL); if (IS_ERR(cpu_clk)) { ret = PTR_ERR(cpu_clk); pr_err("failed to get cpu0 clock: %d\n", ret); - goto out_put_node; + goto out_put_reg; } ret = of_init_opp_table(cpu_dev); if (ret) { pr_err("failed to init OPP table: %d\n", ret); - goto out_put_node; + goto out_put_clk; } ret = dev_pm_opp_init_cpufreq_table(cpu_dev, &freq_table); if (ret) { pr_err("failed to init cpufreq table: %d\n", ret); - goto out_put_node; + goto out_put_clk; } of_property_read_u32(np, "voltage-tolerance", &voltage_tolerance); @@ -206,6 +206,12 @@ out_free_table: dev_pm_opp_free_cpufreq_table(cpu_dev, &freq_table); +out_put_clk: + if (!IS_ERR(cpu_clk)) + clk_put(cpu_clk); +out_put_reg: + if (!IS_ERR(cpu_reg)) + regulator_put(cpu_reg); out_put_node: of_node_put(np); return ret; --- linux-3.13.0.orig/drivers/cpufreq/cpufreq.c +++ linux-3.13.0/drivers/cpufreq/cpufreq.c @@ -405,7 +405,18 @@ show_one(cpuinfo_transition_latency, cpuinfo.transition_latency); show_one(scaling_min_freq, min); show_one(scaling_max_freq, max); -show_one(scaling_cur_freq, cur); + +static ssize_t show_scaling_cur_freq( + struct cpufreq_policy *policy, char *buf) +{ + ssize_t ret; + + if (cpufreq_driver && cpufreq_driver->setpolicy && cpufreq_driver->get) + ret = sprintf(buf, "%u\n", cpufreq_driver->get(policy->cpu)); + else + ret = sprintf(buf, "%u\n", policy->cur); + return ret; +} static int cpufreq_set_policy(struct cpufreq_policy *policy, struct cpufreq_policy *new_policy); @@ -799,11 +810,11 @@ if (ret) goto err_out_kobj_put; } - if (has_target()) { - ret = sysfs_create_file(&policy->kobj, &scaling_cur_freq.attr); - if (ret) - goto err_out_kobj_put; - } + + ret = sysfs_create_file(&policy->kobj, &scaling_cur_freq.attr); + if (ret) + goto err_out_kobj_put; + if (cpufreq_driver->bios_limit) { ret = sysfs_create_file(&policy->kobj, &bios_limit.attr); if (ret) @@ -1031,10 +1042,12 @@ * the creation of a brand new one. So we need to perform this update * by invoking update_policy_cpu(). */ - if (frozen && cpu != policy->cpu) + if (frozen && cpu != policy->cpu) { update_policy_cpu(policy, cpu); - else + WARN_ON(kobject_move(&policy->kobj, &dev->kobj)); + } else { policy->cpu = cpu; + } policy->governor = CPUFREQ_DEFAULT_GOVERNOR; cpumask_copy(policy->cpus, cpumask_of(cpu)); @@ -1051,7 +1064,7 @@ goto err_set_policy_cpu; } - if (cpufreq_driver->get) { + if (cpufreq_driver->get && !cpufreq_driver->setpolicy) { policy->cur = cpufreq_driver->get(policy->cpu); if (!policy->cur) { pr_err("%s: ->get() failed\n", __func__); @@ -1249,9 +1262,10 @@ unsigned long flags; struct cpufreq_policy *policy; - read_lock_irqsave(&cpufreq_driver_lock, flags); + write_lock_irqsave(&cpufreq_driver_lock, flags); policy = per_cpu(cpufreq_cpu_data, cpu); - read_unlock_irqrestore(&cpufreq_driver_lock, flags); + per_cpu(cpufreq_cpu_data, cpu) = NULL; + write_unlock_irqrestore(&cpufreq_driver_lock, flags); if (!policy) { pr_debug("%s: No cpu_data found\n", __func__); @@ -1306,7 +1320,6 @@ } } - per_cpu(cpufreq_cpu_data, cpu) = NULL; return 0; } @@ -1447,23 +1460,16 @@ */ unsigned int cpufreq_get(unsigned int cpu) { - struct cpufreq_policy *policy = per_cpu(cpufreq_cpu_data, cpu); + struct cpufreq_policy *policy = cpufreq_cpu_get(cpu); unsigned int ret_freq = 0; - if (cpufreq_disabled() || !cpufreq_driver) - return -ENOENT; - - BUG_ON(!policy); - - if (!down_read_trylock(&cpufreq_rwsem)) - return 0; - - down_read(&policy->rwsem); - - ret_freq = __cpufreq_get(cpu); + if (policy) { + down_read(&policy->rwsem); + ret_freq = __cpufreq_get(cpu); + up_read(&policy->rwsem); - up_read(&policy->rwsem); - up_read(&cpufreq_rwsem); + cpufreq_cpu_put(policy); + } return ret_freq; } @@ -2058,7 +2064,7 @@ * BIOS might change freq behind our back * -> ask driver for current freq and notify governors about a change */ - if (cpufreq_driver->get) { + if (cpufreq_driver->get && !cpufreq_driver->setpolicy) { new_policy.cur = cpufreq_driver->get(cpu); if (!policy->cur) { pr_debug("Driver did not initialize current freq"); @@ -2123,6 +2129,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# @@ -2146,7 +2166,13 @@ driver_data->target)) 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; if (driver_data->setpolicy) driver_data->flags |= CPUFREQ_CONST_LOOPS; --- linux-3.13.0.orig/drivers/cpufreq/cpufreq_governor.c +++ linux-3.13.0/drivers/cpufreq/cpufreq_governor.c @@ -362,6 +362,11 @@ break; case CPUFREQ_GOV_LIMITS: + mutex_lock(&dbs_data->mutex); + if (!cpu_cdbs->cur_policy) { + mutex_unlock(&dbs_data->mutex); + break; + } mutex_lock(&cpu_cdbs->timer_mutex); if (policy->max < cpu_cdbs->cur_policy->cur) __cpufreq_driver_target(cpu_cdbs->cur_policy, @@ -371,6 +376,7 @@ policy->min, CPUFREQ_RELATION_L); dbs_check_cpu(dbs_data, cpu); mutex_unlock(&cpu_cdbs->timer_mutex); + mutex_unlock(&dbs_data->mutex); break; } return 0; --- linux-3.13.0.orig/drivers/cpufreq/integrator-cpufreq.c +++ linux-3.13.0/drivers/cpufreq/integrator-cpufreq.c @@ -212,9 +212,9 @@ return cpufreq_register_driver(&integrator_driver); } -static void __exit integrator_cpufreq_remove(struct platform_device *pdev) +static int __exit integrator_cpufreq_remove(struct platform_device *pdev) { - cpufreq_unregister_driver(&integrator_driver); + return cpufreq_unregister_driver(&integrator_driver); } static const struct of_device_id integrator_cpufreq_match[] = { --- linux-3.13.0.orig/drivers/cpufreq/intel_pstate.c +++ linux-3.13.0/drivers/cpufreq/intel_pstate.c @@ -34,11 +34,16 @@ #define SAMPLE_COUNT 3 -#define BYT_RATIOS 0x66a +#define BYT_RATIOS 0x66a +#define BYT_VIDS 0x66b +#define BYT_TURBO_RATIOS 0x66c +#define BYT_TURBO_VIDS 0x66d -#define FRAC_BITS 8 + +#define FRAC_BITS 6 #define int_tofp(X) ((int64_t)(X) << FRAC_BITS) #define fp_toint(X) ((X) >> FRAC_BITS) +#define FP_ROUNDUP(X) ((X) += 1 << FRAC_BITS) static inline int32_t mul_fp(int32_t x, int32_t y) { @@ -50,10 +55,24 @@ return div_s64((int64_t)x << FRAC_BITS, (int64_t)y); } +static u64 energy_divisor; + +static inline int ceiling_fp(int32_t x) +{ + int mask, ret; + + ret = fp_toint(x); + mask = (1 << FRAC_BITS) - 1; + if (x & mask) + ret += 1; + return ret; +} + struct sample { int32_t core_pct_busy; u64 aperf; u64 mperf; + unsigned long long tsc; int freq; }; @@ -61,9 +80,17 @@ int current_pstate; int min_pstate; int max_pstate; + int scaling; int turbo_pstate; }; +struct vid_data { + int min; + int max; + int turbo; + int32_t ratio; +}; + struct _pid { int setpoint; int32_t integral; @@ -82,12 +109,12 @@ struct timer_list timer; struct pstate_data pstate; + struct vid_data vid; struct _pid pid; - int min_pstate_count; - u64 prev_aperf; u64 prev_mperf; + unsigned long long prev_tsc; int sample_ptr; struct sample samples[SAMPLE_COUNT]; }; @@ -106,7 +133,9 @@ int (*get_max)(void); int (*get_min)(void); int (*get_turbo)(void); - void (*set)(int pstate); + int (*get_scaling)(void); + void (*set)(struct cpudata*, int pstate); + void (*get_vid)(struct cpudata *); }; struct cpu_defaults { @@ -119,6 +148,7 @@ struct perf_limits { int no_turbo; + int turbo_disabled; int max_perf_pct; int min_perf_pct; int32_t max_perf; @@ -129,6 +159,7 @@ static struct perf_limits limits = { .no_turbo = 0, + .turbo_disabled = 0, .max_perf_pct = 100, .max_perf = int_tofp(1), .min_perf_pct = 0, @@ -213,6 +244,18 @@ } } +static inline void update_turbo_state(void) +{ + u64 misc_en; + struct cpudata *cpu; + + cpu = all_cpu_data[0]; + rdmsrl(MSR_IA32_MISC_ENABLE, misc_en); + limits.turbo_disabled = + (misc_en & MSR_IA32_MISC_ENABLE_TURBO_DISABLE || + cpu->pstate.max_pstate == cpu->pstate.turbo_pstate); +} + /************************** debugfs begin ************************/ static int pid_param_set(void *data, u64 val) { @@ -269,6 +312,20 @@ return sprintf(buf, "%u\n", limits.object); \ } +static ssize_t show_no_turbo(struct kobject *kobj, + struct attribute *attr, char *buf) +{ + ssize_t ret; + + update_turbo_state(); + if (limits.turbo_disabled) + ret = sprintf(buf, "%u\n", limits.turbo_disabled); + else + ret = sprintf(buf, "%u\n", limits.no_turbo); + + return ret; +} + static ssize_t store_no_turbo(struct kobject *a, struct attribute *b, const char *buf, size_t count) { @@ -277,7 +334,13 @@ ret = sscanf(buf, "%u", &input); if (ret != 1) return -EINVAL; - limits.no_turbo = clamp_t(int, input, 0 , 1); + + update_turbo_state(); + if (limits.turbo_disabled) { + pr_warn("Turbo disabled by BIOS or unavailable on processor\n"); + return -EPERM; + } + limits.no_turbo = clamp_t(int, input, 0, 1); return count; } @@ -311,7 +374,6 @@ return count; } -show_one(no_turbo, no_turbo); show_one(max_perf_pct, max_perf_pct); show_one(min_perf_pct, min_perf_pct); @@ -348,16 +410,82 @@ { u64 value; rdmsrl(BYT_RATIOS, value); - return value & 0xFF; + return (value >> 8) & 0x7F; } static int byt_get_max_pstate(void) { u64 value; rdmsrl(BYT_RATIOS, value); - return (value >> 16) & 0xFF; + return (value >> 16) & 0x7F; +} + +static int byt_get_turbo_pstate(void) +{ + u64 value; + rdmsrl(BYT_TURBO_RATIOS, value); + return value & 0x7F; +} + +static void byt_set_pstate(struct cpudata *cpudata, int pstate) +{ + u64 val; + int32_t vid_fp; + u32 vid; + + val = pstate << 8; + if (limits.no_turbo && !limits.turbo_disabled) + val |= (u64)1 << 32; + + vid_fp = cpudata->vid.min + mul_fp( + int_tofp(pstate - cpudata->pstate.min_pstate), + cpudata->vid.ratio); + + vid_fp = clamp_t(int32_t, vid_fp, cpudata->vid.min, cpudata->vid.max); + vid = ceiling_fp(vid_fp); + + if (pstate > cpudata->pstate.max_pstate) + vid = cpudata->vid.turbo; + + val |= vid; + + wrmsrl(MSR_IA32_PERF_CTL, val); } +#define BYT_BCLK_FREQS 5 +static int byt_freq_table[BYT_BCLK_FREQS] = { 833, 1000, 1333, 1167, 800}; + +static int byt_get_scaling(void) +{ + u64 value; + int i; + + rdmsrl(MSR_FSB_FREQ, value); + i = value & 0x3; + + BUG_ON(i > BYT_BCLK_FREQS); + + return byt_freq_table[i] * 100; +} + +static void byt_get_vid(struct cpudata *cpudata) +{ + u64 value; + + + rdmsrl(BYT_VIDS, value); + cpudata->vid.min = int_tofp((value >> 8) & 0x7f); + cpudata->vid.max = int_tofp((value >> 16) & 0x7f); + cpudata->vid.ratio = div_fp( + cpudata->vid.max - cpudata->vid.min, + int_tofp(cpudata->pstate.max_pstate - + cpudata->pstate.min_pstate)); + + rdmsrl(BYT_TURBO_VIDS, value); + cpudata->vid.turbo = value & 0x7f; +} + + static int core_get_min_pstate(void) { u64 value; @@ -384,12 +512,17 @@ return ret; } -static void core_set_pstate(int pstate) +static inline int core_get_scaling(void) +{ + return 100000; +} + +static void core_set_pstate(struct cpudata *cpudata, int pstate) { u64 val; val = pstate << 8; - if (limits.no_turbo) + if (limits.no_turbo && !limits.turbo_disabled) val |= (u64)1 << 32; wrmsrl(MSR_IA32_PERF_CTL, val); @@ -408,6 +541,7 @@ .get_max = core_get_max_pstate, .get_min = core_get_min_pstate, .get_turbo = core_get_turbo_pstate, + .get_scaling = core_get_scaling, .set = core_set_pstate, }, }; @@ -424,8 +558,10 @@ .funcs = { .get_max = byt_get_max_pstate, .get_min = byt_get_min_pstate, - .get_turbo = byt_get_max_pstate, - .set = core_set_pstate, + .get_turbo = byt_get_turbo_pstate, + .set = byt_set_pstate, + .get_scaling = byt_get_scaling, + .get_vid = byt_get_vid, }, }; @@ -435,7 +571,8 @@ int max_perf = cpu->pstate.turbo_pstate; int max_perf_adj; int min_perf; - if (limits.no_turbo) + + if (limits.no_turbo || limits.turbo_disabled) max_perf = cpu->pstate.max_pstate; max_perf_adj = fp_toint(mul_fp(int_tofp(max_perf), limits.max_perf)); @@ -451,6 +588,8 @@ { int max_perf, min_perf; + update_turbo_state(); + intel_pstate_get_min_max(cpu, &min_perf, &max_perf); pstate = clamp_t(int, pstate, min_perf, max_perf); @@ -458,11 +597,11 @@ if (pstate == cpu->pstate.current_pstate) return; - trace_cpu_frequency(pstate * 100000, cpu->cpu); + trace_cpu_frequency(pstate * cpu->pstate.scaling, cpu->cpu); cpu->pstate.current_pstate = pstate; - pstate_funcs.set(pstate); + pstate_funcs.set(cpu, pstate); } static inline void intel_pstate_pstate_increase(struct cpudata *cpu, int steps) @@ -487,6 +626,10 @@ cpu->pstate.min_pstate = pstate_funcs.get_min(); cpu->pstate.max_pstate = pstate_funcs.get_max(); cpu->pstate.turbo_pstate = pstate_funcs.get_turbo(); + cpu->pstate.scaling = pstate_funcs.get_scaling(); + + if (pstate_funcs.get_vid) + pstate_funcs.get_vid(cpu); /* * goto max pstate so we don't slow up boot if we are built-in if we are @@ -498,30 +641,50 @@ static inline void intel_pstate_calc_busy(struct cpudata *cpu, struct sample *sample) { - u64 core_pct; - core_pct = div64_u64(int_tofp(sample->aperf * 100), - sample->mperf); - sample->freq = fp_toint(cpu->pstate.max_pstate * core_pct * 1000); + int32_t core_pct; + int32_t c0_pct; + + core_pct = div_fp(int_tofp((sample->aperf)), + int_tofp((sample->mperf))); + core_pct = mul_fp(core_pct, int_tofp(100)); + FP_ROUNDUP(core_pct); + + c0_pct = div_fp(int_tofp(sample->mperf), int_tofp(sample->tsc)); + + sample->freq = fp_toint( + mul_fp(int_tofp( + cpu->pstate.max_pstate * cpu->pstate.scaling / 100), + core_pct)); - sample->core_pct_busy = core_pct; + sample->core_pct_busy = mul_fp(core_pct, c0_pct); } static inline void intel_pstate_sample(struct cpudata *cpu) { u64 aperf, mperf; + unsigned long long tsc; rdmsrl(MSR_IA32_APERF, aperf); rdmsrl(MSR_IA32_MPERF, mperf); + tsc = native_read_tsc(); + + aperf = aperf >> FRAC_BITS; + mperf = mperf >> FRAC_BITS; + tsc = tsc >> FRAC_BITS; + cpu->sample_ptr = (cpu->sample_ptr + 1) % SAMPLE_COUNT; cpu->samples[cpu->sample_ptr].aperf = aperf; cpu->samples[cpu->sample_ptr].mperf = mperf; + cpu->samples[cpu->sample_ptr].tsc = tsc; cpu->samples[cpu->sample_ptr].aperf -= cpu->prev_aperf; cpu->samples[cpu->sample_ptr].mperf -= cpu->prev_mperf; + cpu->samples[cpu->sample_ptr].tsc -= cpu->prev_tsc; intel_pstate_calc_busy(cpu, &cpu->samples[cpu->sample_ptr]); cpu->prev_aperf = aperf; cpu->prev_mperf = mperf; + cpu->prev_tsc = tsc; } static inline void intel_pstate_set_sample_time(struct cpudata *cpu) @@ -540,7 +703,8 @@ core_busy = cpu->samples[cpu->sample_ptr].core_pct_busy; max_pstate = int_tofp(cpu->pstate.max_pstate); current_pstate = int_tofp(cpu->pstate.current_pstate); - return mul_fp(core_busy, div_fp(max_pstate, current_pstate)); + core_busy = mul_fp(core_busy, div_fp(max_pstate, current_pstate)); + return FP_ROUNDUP(core_busy); } static inline void intel_pstate_adjust_busy_pstate(struct cpudata *cpu) @@ -556,6 +720,7 @@ ctl = pid_calc(pid, busy_scaled); steps = abs(ctl); + if (ctl < 0) intel_pstate_pstate_increase(cpu, steps); else @@ -565,17 +730,23 @@ static void intel_pstate_timer_func(unsigned long __data) { struct cpudata *cpu = (struct cpudata *) __data; + struct sample *sample; + u64 energy; intel_pstate_sample(cpu); + + sample = &cpu->samples[cpu->sample_ptr]; + rdmsrl(MSR_PKG_ENERGY_STATUS, energy); + intel_pstate_adjust_busy_pstate(cpu); - if (cpu->pstate.current_pstate == cpu->pstate.min_pstate) { - cpu->min_pstate_count++; - if (!(cpu->min_pstate_count % 5)) { - intel_pstate_set_pstate(cpu, cpu->pstate.max_pstate); - } - } else - cpu->min_pstate_count = 0; + trace_pstate_sample(fp_toint(sample->core_pct_busy), + fp_toint(intel_pstate_get_scaled_busy(cpu)), + cpu->pstate.current_pstate, + sample->mperf, + sample->aperf, + div64_u64(energy, energy_divisor), + sample->freq); intel_pstate_set_sample_time(cpu); } @@ -608,12 +779,15 @@ if (!id) return -ENODEV; - all_cpu_data[cpunum] = kzalloc(sizeof(struct cpudata), GFP_KERNEL); + if (!all_cpu_data[cpunum]) + all_cpu_data[cpunum] = kzalloc(sizeof(struct cpudata), + GFP_KERNEL); if (!all_cpu_data[cpunum]) return -ENOMEM; cpu = all_cpu_data[cpunum]; + cpu->cpu = cpunum; intel_pstate_get_cpu_pstates(cpu); if (!cpu->pstate.current_pstate) { all_cpu_data[cpunum] = NULL; @@ -621,8 +795,6 @@ return -ENODATA; } - cpu->cpu = cpunum; - init_timer_deferrable(&cpu->timer); cpu->timer.function = intel_pstate_timer_func; cpu->timer.data = @@ -663,6 +835,7 @@ if (policy->policy == CPUFREQ_POLICY_PERFORMANCE) { limits.min_perf_pct = 100; limits.min_perf = int_tofp(1); + limits.max_policy_pct = 100; limits.max_perf_pct = 100; limits.max_perf = int_tofp(1); limits.no_turbo = 0; @@ -696,8 +869,6 @@ int cpu = policy->cpu; del_timer(&all_cpu_data[cpu]->timer); - kfree(all_cpu_data[cpu]); - all_cpu_data[cpu] = NULL; return 0; } @@ -712,18 +883,18 @@ cpu = all_cpu_data[policy->cpu]; - if (!limits.no_turbo && - limits.min_perf_pct == 100 && limits.max_perf_pct == 100) + if (limits.min_perf_pct == 100 && limits.max_perf_pct == 100) policy->policy = CPUFREQ_POLICY_PERFORMANCE; else policy->policy = CPUFREQ_POLICY_POWERSAVE; - policy->min = cpu->pstate.min_pstate * 100000; - policy->max = cpu->pstate.turbo_pstate * 100000; + policy->min = cpu->pstate.min_pstate * cpu->pstate.scaling; + policy->max = cpu->pstate.turbo_pstate * cpu->pstate.scaling; /* cpuinfo and default policy values */ - policy->cpuinfo.min_freq = cpu->pstate.min_pstate * 100000; - policy->cpuinfo.max_freq = cpu->pstate.turbo_pstate * 100000; + policy->cpuinfo.min_freq = cpu->pstate.min_pstate * cpu->pstate.scaling; + policy->cpuinfo.max_freq = + cpu->pstate.turbo_pstate * cpu->pstate.scaling; policy->cpuinfo.transition_latency = CPUFREQ_ETERNAL; cpumask_set_cpu(policy->cpu, policy->cpus); @@ -740,7 +911,7 @@ .name = "intel_pstate", }; -static int __initdata no_load; +static int __initdata no_load = 1; static int intel_pstate_msrs_not_valid(void) { @@ -781,7 +952,9 @@ pstate_funcs.get_max = funcs->get_max; pstate_funcs.get_min = funcs->get_min; pstate_funcs.get_turbo = funcs->get_turbo; + pstate_funcs.get_scaling = funcs->get_scaling; pstate_funcs.set = funcs->set; + pstate_funcs.get_vid = funcs->get_vid; } #if IS_ENABLED(CONFIG_ACPI) @@ -855,6 +1028,7 @@ int cpu, rc = 0; const struct x86_cpu_id *id; struct cpu_defaults *cpu_info; + u64 units; if (no_load) return -ENODEV; @@ -888,8 +1062,14 @@ if (rc) goto out; + rdmsrl(MSR_RAPL_POWER_UNIT, units); + energy_divisor = 1 << ((units >> 8) & 0x1f); /* bits{12:8} */ + intel_pstate_debug_expose_params(); intel_pstate_sysfs_expose_params(); + + pr_info("Consider also installing thermald for improved thermal control.\n"); + return rc; out: get_online_cpus(); @@ -913,6 +1093,8 @@ if (!strcmp(str, "disable")) no_load = 1; + else if (!strcmp(str, "enable")) + no_load = 0; return 0; } early_param("intel_pstate", intel_pstate_setup); --- linux-3.13.0.orig/drivers/cpufreq/powernow-k6.c +++ linux-3.13.0/drivers/cpufreq/powernow-k6.c @@ -26,41 +26,108 @@ static unsigned int busfreq; /* FSB, in 10 kHz */ static unsigned int max_multiplier; +static unsigned int param_busfreq = 0; +static unsigned int param_max_multiplier = 0; + +module_param_named(max_multiplier, param_max_multiplier, uint, S_IRUGO); +MODULE_PARM_DESC(max_multiplier, "Maximum multiplier (allowed values: 20 30 35 40 45 50 55 60)"); + +module_param_named(bus_frequency, param_busfreq, uint, S_IRUGO); +MODULE_PARM_DESC(bus_frequency, "Bus frequency in kHz"); /* Clock ratio multiplied by 10 - see table 27 in AMD#23446 */ static struct cpufreq_frequency_table clock_ratio[] = { - {45, /* 000 -> 4.5x */ 0}, + {60, /* 110 -> 6.0x */ 0}, + {55, /* 011 -> 5.5x */ 0}, {50, /* 001 -> 5.0x */ 0}, + {45, /* 000 -> 4.5x */ 0}, {40, /* 010 -> 4.0x */ 0}, - {55, /* 011 -> 5.5x */ 0}, - {20, /* 100 -> 2.0x */ 0}, - {30, /* 101 -> 3.0x */ 0}, - {60, /* 110 -> 6.0x */ 0}, {35, /* 111 -> 3.5x */ 0}, + {30, /* 101 -> 3.0x */ 0}, + {20, /* 100 -> 2.0x */ 0}, {0, CPUFREQ_TABLE_END} }; +static const u8 index_to_register[8] = { 6, 3, 1, 0, 2, 7, 5, 4 }; +static const u8 register_to_index[8] = { 3, 2, 4, 1, 7, 6, 0, 5 }; + +static const struct { + unsigned freq; + unsigned mult; +} usual_frequency_table[] = { + { 400000, 40 }, // 100 * 4 + { 450000, 45 }, // 100 * 4.5 + { 475000, 50 }, // 95 * 5 + { 500000, 50 }, // 100 * 5 + { 506250, 45 }, // 112.5 * 4.5 + { 533500, 55 }, // 97 * 5.5 + { 550000, 55 }, // 100 * 5.5 + { 562500, 50 }, // 112.5 * 5 + { 570000, 60 }, // 95 * 6 + { 600000, 60 }, // 100 * 6 + { 618750, 55 }, // 112.5 * 5.5 + { 660000, 55 }, // 120 * 5.5 + { 675000, 60 }, // 112.5 * 6 + { 720000, 60 }, // 120 * 6 +}; + +#define FREQ_RANGE 3000 /** * powernow_k6_get_cpu_multiplier - returns the current FSB multiplier * - * Returns the current setting of the frequency multiplier. Core clock + * Returns the current setting of the frequency multiplier. Core clock * speed is frequency of the Front-Side Bus multiplied with this value. */ static int powernow_k6_get_cpu_multiplier(void) { - u64 invalue = 0; + unsigned long invalue = 0; u32 msrval; + local_irq_disable(); + msrval = POWERNOW_IOPORT + 0x1; wrmsr(MSR_K6_EPMR, msrval, 0); /* enable the PowerNow port */ invalue = inl(POWERNOW_IOPORT + 0x8); msrval = POWERNOW_IOPORT + 0x0; wrmsr(MSR_K6_EPMR, msrval, 0); /* disable it again */ - return clock_ratio[(invalue >> 5)&7].driver_data; + local_irq_enable(); + + return clock_ratio[register_to_index[(invalue >> 5)&7]].driver_data; } +static void powernow_k6_set_cpu_multiplier(unsigned int best_i) +{ + unsigned long outvalue, invalue; + unsigned long msrval; + unsigned long cr0; + + /* we now need to transform best_i to the BVC format, see AMD#23446 */ + + /* + * The processor doesn't respond to inquiry cycles while changing the + * frequency, so we must disable cache. + */ + local_irq_disable(); + cr0 = read_cr0(); + write_cr0(cr0 | X86_CR0_CD); + wbinvd(); + + outvalue = (1<<12) | (1<<10) | (1<<9) | (index_to_register[best_i]<<5); + + msrval = POWERNOW_IOPORT + 0x1; + wrmsr(MSR_K6_EPMR, msrval, 0); /* enable the PowerNow port */ + invalue = inl(POWERNOW_IOPORT + 0x8); + invalue = invalue & 0x1f; + outvalue = outvalue | invalue; + outl(outvalue, (POWERNOW_IOPORT + 0x8)); + msrval = POWERNOW_IOPORT + 0x0; + wrmsr(MSR_K6_EPMR, msrval, 0); /* disable it again */ + + write_cr0(cr0); + local_irq_enable(); +} /** * powernow_k6_target - set the PowerNow! multiplier @@ -71,8 +138,6 @@ static int powernow_k6_target(struct cpufreq_policy *policy, unsigned int best_i) { - unsigned long outvalue = 0, invalue = 0; - unsigned long msrval; struct cpufreq_freqs freqs; if (clock_ratio[best_i].driver_data > max_multiplier) { @@ -85,35 +150,63 @@ cpufreq_notify_transition(policy, &freqs, CPUFREQ_PRECHANGE); - /* we now need to transform best_i to the BVC format, see AMD#23446 */ - - outvalue = (1<<12) | (1<<10) | (1<<9) | (best_i<<5); - - msrval = POWERNOW_IOPORT + 0x1; - wrmsr(MSR_K6_EPMR, msrval, 0); /* enable the PowerNow port */ - invalue = inl(POWERNOW_IOPORT + 0x8); - invalue = invalue & 0xf; - outvalue = outvalue | invalue; - outl(outvalue , (POWERNOW_IOPORT + 0x8)); - msrval = POWERNOW_IOPORT + 0x0; - wrmsr(MSR_K6_EPMR, msrval, 0); /* disable it again */ + powernow_k6_set_cpu_multiplier(best_i); cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE); return 0; } - static int powernow_k6_cpu_init(struct cpufreq_policy *policy) { unsigned int i, f; + unsigned khz; if (policy->cpu != 0) return -ENODEV; - /* get frequencies */ - max_multiplier = powernow_k6_get_cpu_multiplier(); - busfreq = cpu_khz / max_multiplier; + max_multiplier = 0; + khz = cpu_khz; + for (i = 0; i < ARRAY_SIZE(usual_frequency_table); i++) { + if (khz >= usual_frequency_table[i].freq - FREQ_RANGE && + khz <= usual_frequency_table[i].freq + FREQ_RANGE) { + khz = usual_frequency_table[i].freq; + max_multiplier = usual_frequency_table[i].mult; + break; + } + } + if (param_max_multiplier) { + for (i = 0; (clock_ratio[i].frequency != CPUFREQ_TABLE_END); i++) { + if (clock_ratio[i].driver_data == param_max_multiplier) { + max_multiplier = param_max_multiplier; + goto have_max_multiplier; + } + } + printk(KERN_ERR "powernow-k6: invalid max_multiplier parameter, valid parameters 20, 30, 35, 40, 45, 50, 55, 60\n"); + return -EINVAL; + } + + if (!max_multiplier) { + printk(KERN_WARNING "powernow-k6: unknown frequency %u, cannot determine current multiplier\n", khz); + printk(KERN_WARNING "powernow-k6: use module parameters max_multiplier and bus_frequency\n"); + return -EOPNOTSUPP; + } + +have_max_multiplier: + param_max_multiplier = max_multiplier; + + if (param_busfreq) { + if (param_busfreq >= 50000 && param_busfreq <= 150000) { + busfreq = param_busfreq / 10; + goto have_busfreq; + } + printk(KERN_ERR "powernow-k6: invalid bus_frequency parameter, allowed range 50000 - 150000 kHz\n"); + return -EINVAL; + } + + busfreq = khz / max_multiplier; +have_busfreq: + param_busfreq = busfreq * 10; /* table init */ for (i = 0; (clock_ratio[i].frequency != CPUFREQ_TABLE_END); i++) { @@ -125,7 +218,7 @@ } /* cpuinfo and default policy values */ - policy->cpuinfo.transition_latency = 200000; + policy->cpuinfo.transition_latency = 500000; return cpufreq_table_validate_and_show(policy, clock_ratio); } --- linux-3.13.0.orig/drivers/cpufreq/powernow-k8.c +++ linux-3.13.0/drivers/cpufreq/powernow-k8.c @@ -1081,7 +1081,7 @@ { struct powernow_k8_data *data; struct init_on_cpu init_on_cpu; - int rc; + int rc, cpu; smp_call_function_single(pol->cpu, check_supported_cpu, &rc, 1); if (rc) @@ -1145,7 +1145,9 @@ pr_debug("cpu_init done, current fid 0x%x, vid 0x%x\n", data->currfid, data->currvid); - per_cpu(powernow_data, pol->cpu) = data; + /* Point all the CPUs in this policy to the same data */ + for_each_cpu(cpu, pol->cpus) + per_cpu(powernow_data, cpu) = data; return 0; @@ -1160,6 +1162,7 @@ static int powernowk8_cpu_exit(struct cpufreq_policy *pol) { struct powernow_k8_data *data = per_cpu(powernow_data, pol->cpu); + int cpu; if (!data) return -EINVAL; @@ -1170,7 +1173,8 @@ kfree(data->powernow_table); kfree(data); - per_cpu(powernow_data, pol->cpu) = NULL; + for_each_cpu(cpu, pol->cpus) + per_cpu(powernow_data, cpu) = NULL; return 0; } --- linux-3.13.0.orig/drivers/cpufreq/powernv-cpufreq.c +++ linux-3.13.0/drivers/cpufreq/powernv-cpufreq.c @@ -0,0 +1,341 @@ +/* + * POWERNV cpufreq driver for the IBM POWER processors + * + * (C) Copyright IBM 2014 + * + * Author: Vaidyanathan Srinivasan + * + * 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, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + */ + +#define pr_fmt(fmt) "powernv-cpufreq: " fmt + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#define POWERNV_MAX_PSTATES 256 + +static struct cpufreq_frequency_table powernv_freqs[POWERNV_MAX_PSTATES+1]; + +/* + * Note: The set of pstates consists of contiguous integers, the + * smallest of which is indicated by powernv_pstate_info.min, the + * largest of which is indicated by powernv_pstate_info.max. + * + * The nominal pstate is the highest non-turbo pstate in this + * platform. This is indicated by powernv_pstate_info.nominal. + */ +static struct powernv_pstate_info { + int min; + int max; + int nominal; + int nr_pstates; +} powernv_pstate_info; + +/* + * Initialize the freq table based on data obtained + * from the firmware passed via device-tree + */ +static int init_powernv_pstates(void) +{ + struct device_node *power_mgt; + int i, pstate_min, pstate_max, pstate_nominal, nr_pstates = 0; + const __be32 *pstate_ids, *pstate_freqs; + u32 len_ids, len_freqs; + + power_mgt = of_find_node_by_path("/ibm,opal/power-mgt"); + if (!power_mgt) { + pr_warn("power-mgt node not found\n"); + return -ENODEV; + } + + if (of_property_read_u32(power_mgt, "ibm,pstate-min", &pstate_min)) { + pr_warn("ibm,pstate-min node not found\n"); + return -ENODEV; + } + + if (of_property_read_u32(power_mgt, "ibm,pstate-max", &pstate_max)) { + pr_warn("ibm,pstate-max node not found\n"); + return -ENODEV; + } + + if (of_property_read_u32(power_mgt, "ibm,pstate-nominal", + &pstate_nominal)) { + pr_warn("ibm,pstate-nominal not found\n"); + return -ENODEV; + } + pr_info("cpufreq pstate min %d nominal %d max %d\n", pstate_min, + pstate_nominal, pstate_max); + + pstate_ids = of_get_property(power_mgt, "ibm,pstate-ids", &len_ids); + if (!pstate_ids) { + pr_warn("ibm,pstate-ids not found\n"); + return -ENODEV; + } + + pstate_freqs = of_get_property(power_mgt, "ibm,pstate-frequencies-mhz", + &len_freqs); + if (!pstate_freqs) { + pr_warn("ibm,pstate-frequencies-mhz not found\n"); + return -ENODEV; + } + + WARN_ON(len_ids != len_freqs); + nr_pstates = min(len_ids, len_freqs) / sizeof(u32); + if (!nr_pstates) { + pr_warn("No PStates found\n"); + return -ENODEV; + } + + pr_debug("NR PStates %d\n", nr_pstates); + for (i = 0; i < nr_pstates; i++) { + u32 id = be32_to_cpu(pstate_ids[i]); + u32 freq = be32_to_cpu(pstate_freqs[i]); + + pr_debug("PState id %d freq %d MHz\n", id, freq); + powernv_freqs[i].frequency = freq * 1000; /* kHz */ + powernv_freqs[i].driver_data = id; + } + /* End of list marker entry */ + powernv_freqs[i].frequency = CPUFREQ_TABLE_END; + + powernv_pstate_info.min = pstate_min; + powernv_pstate_info.max = pstate_max; + powernv_pstate_info.nominal = pstate_nominal; + powernv_pstate_info.nr_pstates = nr_pstates; + + return 0; +} + +/* Returns the CPU frequency corresponding to the pstate_id. */ +static unsigned int pstate_id_to_freq(int pstate_id) +{ + int i; + + i = powernv_pstate_info.max - pstate_id; + BUG_ON(i >= powernv_pstate_info.nr_pstates || i < 0); + + return powernv_freqs[i].frequency; +} + +/* + * cpuinfo_nominal_freq_show - Show the nominal CPU frequency as indicated by + * the firmware + */ +static ssize_t cpuinfo_nominal_freq_show(struct cpufreq_policy *policy, + char *buf) +{ + return sprintf(buf, "%u\n", + pstate_id_to_freq(powernv_pstate_info.nominal)); +} + +struct freq_attr cpufreq_freq_attr_cpuinfo_nominal_freq = + __ATTR_RO(cpuinfo_nominal_freq); + +static struct freq_attr *powernv_cpu_freq_attr[] = { + &cpufreq_freq_attr_scaling_available_freqs, + &cpufreq_freq_attr_cpuinfo_nominal_freq, + NULL, +}; + +/* Helper routines */ + +/* Access helpers to power mgt SPR */ + +static inline unsigned long get_pmspr(unsigned long sprn) +{ + switch (sprn) { + case SPRN_PMCR: + return mfspr(SPRN_PMCR); + + case SPRN_PMICR: + return mfspr(SPRN_PMICR); + + case SPRN_PMSR: + return mfspr(SPRN_PMSR); + } + BUG(); +} + +static inline void set_pmspr(unsigned long sprn, unsigned long val) +{ + switch (sprn) { + case SPRN_PMCR: + mtspr(SPRN_PMCR, val); + return; + + case SPRN_PMICR: + mtspr(SPRN_PMICR, val); + return; + } + BUG(); +} + +/* + * Use objects of this type to query/update + * pstates on a remote CPU via smp_call_function. + */ +struct powernv_smp_call_data { + unsigned int freq; + int pstate_id; +}; + +/* + * powernv_read_cpu_freq: Reads the current frequency on this CPU. + * + * Called via smp_call_function. + * + * Note: The caller of the smp_call_function should pass an argument of + * the type 'struct powernv_smp_call_data *' along with this function. + * + * The current frequency on this CPU will be returned via + * ((struct powernv_smp_call_data *)arg)->freq; + */ +static void powernv_read_cpu_freq(void *arg) +{ + unsigned long pmspr_val; + s8 local_pstate_id; + struct powernv_smp_call_data *freq_data = arg; + + pmspr_val = get_pmspr(SPRN_PMSR); + + /* + * The local pstate id corresponds bits 48..55 in the PMSR. + * Note: Watch out for the sign! + */ + local_pstate_id = (pmspr_val >> 48) & 0xFF; + freq_data->pstate_id = local_pstate_id; + freq_data->freq = pstate_id_to_freq(freq_data->pstate_id); + + pr_debug("cpu %d pmsr %016lX pstate_id %d frequency %d kHz\n", + raw_smp_processor_id(), pmspr_val, freq_data->pstate_id, + freq_data->freq); +} + +/* + * powernv_cpufreq_get: Returns the CPU frequency as reported by the + * firmware for CPU 'cpu'. This value is reported through the sysfs + * file cpuinfo_cur_freq. + */ +unsigned int powernv_cpufreq_get(unsigned int cpu) +{ + struct powernv_smp_call_data freq_data; + + smp_call_function_any(cpu_sibling_mask(cpu), powernv_read_cpu_freq, + &freq_data, 1); + + return freq_data.freq; +} + +/* + * set_pstate: Sets the pstate on this CPU. + * + * This is called via an smp_call_function. + * + * The caller must ensure that freq_data is of the type + * (struct powernv_smp_call_data *) and the pstate_id which needs to be set + * on this CPU should be present in freq_data->pstate_id. + */ +static void set_pstate(void *freq_data) +{ + unsigned long val; + unsigned long pstate_ul = + ((struct powernv_smp_call_data *) freq_data)->pstate_id; + + val = get_pmspr(SPRN_PMCR); + val = val & 0x0000FFFFFFFFFFFFULL; + + pstate_ul = pstate_ul & 0xFF; + + /* Set both global(bits 56..63) and local(bits 48..55) PStates */ + val = val | (pstate_ul << 56) | (pstate_ul << 48); + + pr_debug("Setting cpu %d pmcr to %016lX\n", + raw_smp_processor_id(), val); + set_pmspr(SPRN_PMCR, val); +} + +/* + * powernv_cpufreq_target_index: Sets the frequency corresponding to + * the cpufreq table entry indexed by new_index on the cpus in the + * mask policy->cpus + */ +static int powernv_cpufreq_target_index(struct cpufreq_policy *policy, + unsigned int new_index) +{ + struct powernv_smp_call_data freq_data; + + freq_data.pstate_id = powernv_freqs[new_index].driver_data; + + /* + * Use smp_call_function to send IPI and execute the + * mtspr on target CPU. We could do that without IPI + * if current CPU is within policy->cpus (core) + */ + smp_call_function_any(policy->cpus, set_pstate, &freq_data, 1); + + return 0; +} + +static int powernv_cpufreq_cpu_init(struct cpufreq_policy *policy) +{ + int base, i; + + base = cpu_first_thread_sibling(policy->cpu); + + for (i = 0; i < threads_per_core; i++) + cpumask_set_cpu(base + i, policy->cpus); + + return cpufreq_table_validate_and_show(policy, powernv_freqs); +} + +static struct cpufreq_driver powernv_cpufreq_driver = { + .name = "powernv-cpufreq", + .flags = CPUFREQ_CONST_LOOPS, + .init = powernv_cpufreq_cpu_init, + .verify = cpufreq_generic_frequency_table_verify, + .target_index = powernv_cpufreq_target_index, + .get = powernv_cpufreq_get, + .attr = powernv_cpu_freq_attr, +}; + +static int __init powernv_cpufreq_init(void) +{ + int rc = 0; + + /* Discover pstates from device tree and init */ + rc = init_powernv_pstates(); + if (rc) { + pr_info("powernv-cpufreq disabled. System does not support PState control\n"); + return rc; + } + + return cpufreq_register_driver(&powernv_cpufreq_driver); +} +module_init(powernv_cpufreq_init); + +static void __exit powernv_cpufreq_exit(void) +{ + cpufreq_unregister_driver(&powernv_cpufreq_driver); +} +module_exit(powernv_cpufreq_exit); + +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Vaidyanathan Srinivasan "); --- linux-3.13.0.orig/drivers/cpufreq/s3c2416-cpufreq.c +++ linux-3.13.0/drivers/cpufreq/s3c2416-cpufreq.c @@ -263,7 +263,7 @@ } #ifdef CONFIG_ARM_S3C2416_CPUFREQ_VCORESCALE -static void __init s3c2416_cpufreq_cfg_regulator(struct s3c2416_data *s3c_freq) +static void s3c2416_cpufreq_cfg_regulator(struct s3c2416_data *s3c_freq) { int count, v, i, found; struct cpufreq_frequency_table *freq; @@ -335,7 +335,7 @@ .notifier_call = s3c2416_cpufreq_reboot_notifier_evt, }; -static int __init s3c2416_cpufreq_driver_init(struct cpufreq_policy *policy) +static int s3c2416_cpufreq_driver_init(struct cpufreq_policy *policy) { struct s3c2416_data *s3c_freq = &s3c2416_cpufreq; struct cpufreq_frequency_table *freq; --- linux-3.13.0.orig/drivers/cpufreq/s3c24xx-cpufreq.c +++ linux-3.13.0/drivers/cpufreq/s3c24xx-cpufreq.c @@ -458,7 +458,7 @@ }; -int __init s3c_cpufreq_register(struct s3c_cpufreq_info *info) +int s3c_cpufreq_register(struct s3c_cpufreq_info *info) { if (!info || !info->name) { printk(KERN_ERR "%s: failed to pass valid information\n", --- linux-3.13.0.orig/drivers/cpufreq/speedstep-lib.c +++ linux-3.13.0/drivers/cpufreq/speedstep-lib.c @@ -400,6 +400,7 @@ pr_debug("previous speed is %u\n", prev_speed); + preempt_disable(); local_irq_save(flags); /* switch to low state */ @@ -464,6 +465,8 @@ out: local_irq_restore(flags); + preempt_enable(); + return ret; } EXPORT_SYMBOL_GPL(speedstep_get_freqs); --- linux-3.13.0.orig/drivers/cpufreq/speedstep-smi.c +++ linux-3.13.0/drivers/cpufreq/speedstep-smi.c @@ -188,6 +188,7 @@ return; /* Disable IRQs */ + preempt_disable(); local_irq_save(flags); command = (smi_sig & 0xffffff00) | (smi_cmd & 0xff); @@ -198,9 +199,19 @@ do { if (retry) { + /* + * We need to enable interrupts, otherwise the blockage + * won't resolve. + * + * We disable preemption so that other processes don't + * run. If other processes were running, they could + * submit more DMA requests, making the blockage worse. + */ pr_debug("retry %u, previous result %u, waiting...\n", retry, result); + local_irq_enable(); mdelay(retry * 50); + local_irq_disable(); } retry++; __asm__ __volatile__( @@ -217,6 +228,7 @@ /* enable IRQs */ local_irq_restore(flags); + preempt_enable(); if (new_state == state) pr_debug("change to %u MHz succeeded after %u tries " --- linux-3.13.0.orig/drivers/crypto/Kconfig +++ linux-3.13.0/drivers/crypto/Kconfig @@ -323,7 +323,7 @@ config CRYPTO_DEV_NX bool "Support for IBM Power7+ in-Nest cryptographic acceleration" - depends on PPC64 && IBMVIO + depends on PPC64 && IBMVIO && !CPU_LITTLE_ENDIAN default n help Support for Power7+ in-Nest cryptographic acceleration. --- linux-3.13.0.orig/drivers/crypto/caam/caamhash.c +++ linux-3.13.0/drivers/crypto/caam/caamhash.c @@ -835,8 +835,9 @@ edesc->sec4_sg + sec4_sg_src_index, chained); if (*next_buflen) { - sg_copy_part(next_buf, req->src, to_hash - - *buflen, req->nbytes); + scatterwalk_map_and_copy(next_buf, req->src, + to_hash - *buflen, + *next_buflen, 0); state->current_buf = !state->current_buf; } } else { @@ -869,7 +870,8 @@ kfree(edesc); } } else if (*next_buflen) { - sg_copy(buf + *buflen, req->src, req->nbytes); + scatterwalk_map_and_copy(buf + *buflen, req->src, 0, + req->nbytes, 0); *buflen = *next_buflen; *next_buflen = last_buflen; } @@ -898,13 +900,14 @@ state->buflen_1; u32 *sh_desc = ctx->sh_desc_fin, *desc; dma_addr_t ptr = ctx->sh_desc_fin_dma; - int sec4_sg_bytes; + int sec4_sg_bytes, sec4_sg_src_index; int digestsize = crypto_ahash_digestsize(ahash); struct ahash_edesc *edesc; int ret = 0; int sh_len; - sec4_sg_bytes = (1 + (buflen ? 1 : 0)) * sizeof(struct sec4_sg_entry); + sec4_sg_src_index = 1 + (buflen ? 1 : 0); + sec4_sg_bytes = sec4_sg_src_index * sizeof(struct sec4_sg_entry); /* allocate space for base edesc and hw desc commands, link tables */ edesc = kmalloc(sizeof(struct ahash_edesc) + DESC_JOB_IO_LEN + @@ -931,7 +934,7 @@ state->buf_dma = try_buf_map_to_sec4_sg(jrdev, edesc->sec4_sg + 1, buf, state->buf_dma, buflen, last_buflen); - (edesc->sec4_sg + sec4_sg_bytes - 1)->len |= SEC4_SG_LEN_FIN; + (edesc->sec4_sg + sec4_sg_src_index - 1)->len |= SEC4_SG_LEN_FIN; append_seq_in_ptr(desc, edesc->sec4_sg_dma, ctx->ctx_len + buflen, LDST_SGF); @@ -1216,8 +1219,9 @@ src_map_to_sec4_sg(jrdev, req->src, src_nents, edesc->sec4_sg + 1, chained); if (*next_buflen) { - sg_copy_part(next_buf, req->src, to_hash - *buflen, - req->nbytes); + scatterwalk_map_and_copy(next_buf, req->src, + to_hash - *buflen, + *next_buflen, 0); state->current_buf = !state->current_buf; } @@ -1248,7 +1252,8 @@ kfree(edesc); } } else if (*next_buflen) { - sg_copy(buf + *buflen, req->src, req->nbytes); + scatterwalk_map_and_copy(buf + *buflen, req->src, 0, + req->nbytes, 0); *buflen = *next_buflen; *next_buflen = 0; } @@ -1348,9 +1353,9 @@ struct device *jrdev = ctx->jrdev; gfp_t flags = (req->base.flags & (CRYPTO_TFM_REQ_MAY_BACKLOG | CRYPTO_TFM_REQ_MAY_SLEEP)) ? GFP_KERNEL : GFP_ATOMIC; - u8 *next_buf = state->buf_0 + state->current_buf * - CAAM_MAX_HASH_BLOCK_SIZE; - int *next_buflen = &state->buflen_0 + state->current_buf; + u8 *next_buf = state->current_buf ? state->buf_1 : state->buf_0; + int *next_buflen = state->current_buf ? + &state->buflen_1 : &state->buflen_0; int to_hash; u32 *sh_desc = ctx->sh_desc_update_first, *desc; dma_addr_t ptr = ctx->sh_desc_update_first_dma; @@ -1405,7 +1410,8 @@ } if (*next_buflen) - sg_copy_part(next_buf, req->src, to_hash, req->nbytes); + scatterwalk_map_and_copy(next_buf, req->src, to_hash, + *next_buflen, 0); sh_len = desc_len(sh_desc); desc = edesc->hw_desc; @@ -1438,7 +1444,8 @@ state->update = ahash_update_no_ctx; state->finup = ahash_finup_no_ctx; state->final = ahash_final_no_ctx; - sg_copy(next_buf, req->src, req->nbytes); + scatterwalk_map_and_copy(next_buf, req->src, 0, + req->nbytes, 0); } #ifdef DEBUG print_hex_dump(KERN_ERR, "next buf@"__stringify(__LINE__)": ", @@ -1463,6 +1470,9 @@ state->final = ahash_final_no_ctx; state->current_buf = 0; + state->buf_dma = 0; + state->buflen_0 = 0; + state->buflen_1 = 0; return 0; } --- linux-3.13.0.orig/drivers/crypto/caam/caamrng.c +++ linux-3.13.0/drivers/crypto/caam/caamrng.c @@ -56,7 +56,7 @@ /* Buffer, its dma address and lock */ struct buf_data { - u8 buf[RN_BUF_SIZE]; + u8 buf[RN_BUF_SIZE] ____cacheline_aligned; dma_addr_t addr; struct completion filled; u32 hw_desc[DESC_JOB_O_LEN]; --- linux-3.13.0.orig/drivers/crypto/caam/error.c +++ linux-3.13.0/drivers/crypto/caam/error.c @@ -16,9 +16,13 @@ char *tmp; \ \ tmp = kmalloc(sizeof(format) + max_alloc, GFP_ATOMIC); \ - sprintf(tmp, format, param); \ - strcat(str, tmp); \ - kfree(tmp); \ + if (likely(tmp)) { \ + sprintf(tmp, format, param); \ + strcat(str, tmp); \ + kfree(tmp); \ + } else { \ + strcat(str, "kmalloc failure in SPRINTFCAT"); \ + } \ } static void report_jump_idx(u32 status, char *outstr) --- linux-3.13.0.orig/drivers/crypto/caam/jr.c +++ linux-3.13.0/drivers/crypto/caam/jr.c @@ -453,8 +453,8 @@ int error; jrdev = &pdev->dev; - jrpriv = kmalloc(sizeof(struct caam_drv_private_jr), - GFP_KERNEL); + jrpriv = devm_kmalloc(jrdev, sizeof(struct caam_drv_private_jr), + GFP_KERNEL); if (!jrpriv) return -ENOMEM; @@ -487,10 +487,8 @@ /* Now do the platform independent part */ error = caam_jr_init(jrdev); /* now turn on hardware */ - if (error) { - kfree(jrpriv); + if (error) return error; - } jrpriv->dev = jrdev; spin_lock(&driver_data.jr_alloc_lock); --- linux-3.13.0.orig/drivers/crypto/caam/key_gen.c +++ linux-3.13.0/drivers/crypto/caam/key_gen.c @@ -51,23 +51,29 @@ u32 *desc; struct split_key_result result; dma_addr_t dma_addr_in, dma_addr_out; - int ret = 0; + int ret = -ENOMEM; desc = kmalloc(CAAM_CMD_SZ * 6 + CAAM_PTR_SZ * 2, GFP_KERNEL | GFP_DMA); if (!desc) { dev_err(jrdev, "unable to allocate key input memory\n"); - return -ENOMEM; + return ret; } - init_job_desc(desc, 0); - dma_addr_in = dma_map_single(jrdev, (void *)key_in, keylen, DMA_TO_DEVICE); if (dma_mapping_error(jrdev, dma_addr_in)) { dev_err(jrdev, "unable to map key input memory\n"); - kfree(desc); - return -ENOMEM; + goto out_free; } + + dma_addr_out = dma_map_single(jrdev, key_out, split_key_pad_len, + DMA_FROM_DEVICE); + if (dma_mapping_error(jrdev, dma_addr_out)) { + dev_err(jrdev, "unable to map key output memory\n"); + goto out_unmap_in; + } + + init_job_desc(desc, 0); append_key(desc, dma_addr_in, keylen, CLASS_2 | KEY_DEST_CLASS_REG); /* Sets MDHA up into an HMAC-INIT */ @@ -84,13 +90,6 @@ * FIFO_STORE with the explicit split-key content store * (0x26 output type) */ - dma_addr_out = dma_map_single(jrdev, key_out, split_key_pad_len, - DMA_FROM_DEVICE); - if (dma_mapping_error(jrdev, dma_addr_out)) { - dev_err(jrdev, "unable to map key output memory\n"); - kfree(desc); - return -ENOMEM; - } append_fifo_store(desc, dma_addr_out, split_key_len, LDST_CLASS_2_CCB | FIFOST_TYPE_SPLIT_KEK); @@ -118,10 +117,10 @@ dma_unmap_single(jrdev, dma_addr_out, split_key_pad_len, DMA_FROM_DEVICE); +out_unmap_in: dma_unmap_single(jrdev, dma_addr_in, keylen, DMA_TO_DEVICE); - +out_free: kfree(desc); - return ret; } EXPORT_SYMBOL(gen_split_key); --- linux-3.13.0.orig/drivers/crypto/caam/sg_sw_sec4.h +++ linux-3.13.0/drivers/crypto/caam/sg_sw_sec4.h @@ -116,57 +116,3 @@ } return nents; } - -/* Map SG page in kernel virtual address space and copy */ -static inline void sg_map_copy(u8 *dest, struct scatterlist *sg, - int len, int offset) -{ - u8 *mapped_addr; - - /* - * Page here can be user-space pinned using get_user_pages - * Same must be kmapped before use and kunmapped subsequently - */ - mapped_addr = kmap_atomic(sg_page(sg)); - memcpy(dest, mapped_addr + offset, len); - kunmap_atomic(mapped_addr); -} - -/* Copy from len bytes of sg to dest, starting from beginning */ -static inline void sg_copy(u8 *dest, struct scatterlist *sg, unsigned int len) -{ - struct scatterlist *current_sg = sg; - int cpy_index = 0, next_cpy_index = current_sg->length; - - while (next_cpy_index < len) { - sg_map_copy(dest + cpy_index, current_sg, current_sg->length, - current_sg->offset); - current_sg = scatterwalk_sg_next(current_sg); - cpy_index = next_cpy_index; - next_cpy_index += current_sg->length; - } - if (cpy_index < len) - sg_map_copy(dest + cpy_index, current_sg, len-cpy_index, - current_sg->offset); -} - -/* Copy sg data, from to_skip to end, to dest */ -static inline void sg_copy_part(u8 *dest, struct scatterlist *sg, - int to_skip, unsigned int end) -{ - struct scatterlist *current_sg = sg; - int sg_index, cpy_index, offset; - - sg_index = current_sg->length; - while (sg_index <= to_skip) { - current_sg = scatterwalk_sg_next(current_sg); - sg_index += current_sg->length; - } - cpy_index = sg_index - to_skip; - offset = current_sg->offset + current_sg->length - cpy_index; - sg_map_copy(dest, current_sg, cpy_index, offset); - if (end - sg_index) { - current_sg = scatterwalk_sg_next(current_sg); - sg_copy(dest + cpy_index, current_sg, end - sg_index); - } -} --- linux-3.13.0.orig/drivers/crypto/ixp4xx_crypto.c +++ linux-3.13.0/drivers/crypto/ixp4xx_crypto.c @@ -904,7 +904,6 @@ crypt->mode |= NPE_OP_NOT_IN_PLACE; /* This was never tested by Intel * for more than one dst buffer, I think. */ - BUG_ON(req->dst->length < nbytes); req_ctx->dst = NULL; if (!chainup_buffers(dev, req->dst, nbytes, &dst_hook, flags, DMA_FROM_DEVICE)) --- linux-3.13.0.orig/drivers/crypto/omap-aes.c +++ linux-3.13.0/drivers/crypto/omap-aes.c @@ -554,15 +554,23 @@ return err; } -static int omap_aes_check_aligned(struct scatterlist *sg) +static int omap_aes_check_aligned(struct scatterlist *sg, int total) { + int len = 0; + while (sg) { if (!IS_ALIGNED(sg->offset, 4)) return -1; if (!IS_ALIGNED(sg->length, AES_BLOCK_SIZE)) return -1; + + len += sg->length; sg = sg_next(sg); } + + if (len != total) + return -1; + return 0; } @@ -633,8 +641,8 @@ dd->in_sg = req->src; dd->out_sg = req->dst; - if (omap_aes_check_aligned(dd->in_sg) || - omap_aes_check_aligned(dd->out_sg)) { + if (omap_aes_check_aligned(dd->in_sg, dd->total) || + omap_aes_check_aligned(dd->out_sg, dd->total)) { if (omap_aes_copy_sgs(dd)) pr_err("Failed to copy SGs for unaligned cases\n"); dd->sgs_copied = 1; @@ -784,6 +792,7 @@ static int omap_aes_cra_init(struct crypto_tfm *tfm) { struct omap_aes_dev *dd = NULL; + int err; /* Find AES device, currently picks the first device */ spin_lock_bh(&list_lock); @@ -792,7 +801,13 @@ } spin_unlock_bh(&list_lock); - pm_runtime_get_sync(dd->dev); + err = pm_runtime_get_sync(dd->dev); + if (err < 0) { + dev_err(dd->dev, "%s: failed to get_sync(%d)\n", + __func__, err); + return err; + } + tfm->crt_ablkcipher.reqsize = sizeof(struct omap_aes_reqctx); return 0; @@ -1182,7 +1197,12 @@ dd->phys_base = res.start; pm_runtime_enable(dev); - pm_runtime_get_sync(dev); + err = pm_runtime_get_sync(dev); + if (err < 0) { + dev_err(dev, "%s: failed to get_sync(%d)\n", + __func__, err); + goto err_res; + } omap_aes_dma_stop(dd); --- linux-3.13.0.orig/drivers/crypto/padlock-aes.c +++ linux-3.13.0/drivers/crypto/padlock-aes.c @@ -563,4 +563,4 @@ MODULE_LICENSE("GPL"); MODULE_AUTHOR("Michal Ludvig"); -MODULE_ALIAS("aes"); +MODULE_ALIAS_CRYPTO("aes"); --- linux-3.13.0.orig/drivers/crypto/padlock-sha.c +++ linux-3.13.0/drivers/crypto/padlock-sha.c @@ -593,7 +593,7 @@ MODULE_LICENSE("GPL"); MODULE_AUTHOR("Michal Ludvig"); -MODULE_ALIAS("sha1-all"); -MODULE_ALIAS("sha256-all"); -MODULE_ALIAS("sha1-padlock"); -MODULE_ALIAS("sha256-padlock"); +MODULE_ALIAS_CRYPTO("sha1-all"); +MODULE_ALIAS_CRYPTO("sha256-all"); +MODULE_ALIAS_CRYPTO("sha1-padlock"); +MODULE_ALIAS_CRYPTO("sha256-padlock"); --- linux-3.13.0.orig/drivers/crypto/talitos.c +++ linux-3.13.0/drivers/crypto/talitos.c @@ -918,7 +918,8 @@ sg_count--; link_tbl_ptr--; } - be16_add_cpu(&link_tbl_ptr->len, cryptlen); + link_tbl_ptr->len = cpu_to_be16(be16_to_cpu(link_tbl_ptr->len) + + cryptlen); /* tag end of link table */ link_tbl_ptr->j_extent = DESC_PTR_LNKTBL_RETURN; @@ -2556,6 +2557,7 @@ break; default: dev_err(dev, "unknown algorithm type %d\n", t_alg->algt.type); + kfree(t_alg); return ERR_PTR(-EINVAL); } --- linux-3.13.0.orig/drivers/crypto/ux500/cryp/cryp_core.c +++ linux-3.13.0/drivers/crypto/ux500/cryp/cryp_core.c @@ -190,7 +190,7 @@ static irqreturn_t cryp_interrupt_handler(int irq, void *param) { struct cryp_ctx *ctx; - int i; + int count; struct cryp_device_data *device_data; if (param == NULL) { @@ -215,12 +215,11 @@ if (cryp_pending_irq_src(device_data, CRYP_IRQ_SRC_OUTPUT_FIFO)) { if (ctx->outlen / ctx->blocksize > 0) { - for (i = 0; i < ctx->blocksize / 4; i++) { - *(ctx->outdata) = readl_relaxed( - &device_data->base->dout); - ctx->outdata += 4; - ctx->outlen -= 4; - } + count = ctx->blocksize / 4; + + readsl(&device_data->base->dout, ctx->outdata, count); + ctx->outdata += count; + ctx->outlen -= count; if (ctx->outlen == 0) { cryp_disable_irq_src(device_data, @@ -230,12 +229,12 @@ } else if (cryp_pending_irq_src(device_data, CRYP_IRQ_SRC_INPUT_FIFO)) { if (ctx->datalen / ctx->blocksize > 0) { - for (i = 0 ; i < ctx->blocksize / 4; i++) { - writel_relaxed(ctx->indata, - &device_data->base->din); - ctx->indata += 4; - ctx->datalen -= 4; - } + count = ctx->blocksize / 4; + + writesl(&device_data->base->din, ctx->indata, count); + + ctx->indata += count; + ctx->datalen -= count; if (ctx->datalen == 0) cryp_disable_irq_src(device_data, @@ -1811,7 +1810,7 @@ module_param(cryp_mode, int, 0); MODULE_DESCRIPTION("Driver for ST-Ericsson UX500 CRYP crypto engine."); -MODULE_ALIAS("aes-all"); -MODULE_ALIAS("des-all"); +MODULE_ALIAS_CRYPTO("aes-all"); +MODULE_ALIAS_CRYPTO("des-all"); MODULE_LICENSE("GPL"); --- linux-3.13.0.orig/drivers/crypto/ux500/hash/hash_core.c +++ linux-3.13.0/drivers/crypto/ux500/hash/hash_core.c @@ -1995,7 +1995,7 @@ MODULE_DESCRIPTION("Driver for ST-Ericsson UX500 HASH engine."); MODULE_LICENSE("GPL"); -MODULE_ALIAS("sha1-all"); -MODULE_ALIAS("sha256-all"); -MODULE_ALIAS("hmac-sha1-all"); -MODULE_ALIAS("hmac-sha256-all"); +MODULE_ALIAS_CRYPTO("sha1-all"); +MODULE_ALIAS_CRYPTO("sha256-all"); +MODULE_ALIAS_CRYPTO("hmac-sha1-all"); +MODULE_ALIAS_CRYPTO("hmac-sha256-all"); --- linux-3.13.0.orig/drivers/dma/Kconfig +++ linux-3.13.0/drivers/dma/Kconfig @@ -351,18 +351,6 @@ comment "DMA Clients" depends on DMA_ENGINE -config NET_DMA - bool "Network: TCP receive copy offload" - depends on DMA_ENGINE && NET - default (INTEL_IOATDMA || FSL_DMA) - depends on BROKEN - help - This enables the use of DMA engines in the network stack to - offload receive copy-to-user operations, freeing CPU cycles. - - Say Y here if you enabled INTEL_IOATDMA or FSL_DMA, otherwise - say N. - config ASYNC_TX_DMA bool "Async_tx: Offload support for the async_tx api" depends on DMA_ENGINE --- linux-3.13.0.orig/drivers/dma/Makefile +++ linux-3.13.0/drivers/dma/Makefile @@ -6,7 +6,6 @@ obj-$(CONFIG_DMA_ACPI) += acpi-dma.o obj-$(CONFIG_DMA_OF) += of-dma.o -obj-$(CONFIG_NET_DMA) += iovlock.o obj-$(CONFIG_INTEL_MID_DMAC) += intel_mid_dma.o obj-$(CONFIG_DMATEST) += dmatest.o obj-$(CONFIG_INTEL_IOATDMA) += ioat/ --- linux-3.13.0.orig/drivers/dma/dmaengine.c +++ linux-3.13.0/drivers/dma/dmaengine.c @@ -959,6 +959,7 @@ dma_unmap_page(dev, unmap->addr[i], unmap->len, DMA_BIDIRECTIONAL); } + cnt = unmap->map_cnt; mempool_free(unmap, __get_unmap_pool(cnt)->pool); } @@ -1024,115 +1025,12 @@ memset(unmap, 0, sizeof(*unmap)); kref_init(&unmap->kref); unmap->dev = dev; + unmap->map_cnt = nr; return unmap; } EXPORT_SYMBOL(dmaengine_get_unmap_data); -/** - * dma_async_memcpy_pg_to_pg - offloaded copy from page to page - * @chan: DMA channel to offload copy to - * @dest_pg: destination page - * @dest_off: offset in page to copy to - * @src_pg: source page - * @src_off: offset in page to copy from - * @len: length - * - * Both @dest_page/@dest_off and @src_page/@src_off must be mappable to a bus - * address according to the DMA mapping API rules for streaming mappings. - * Both @dest_page/@dest_off and @src_page/@src_off must stay memory resident - * (kernel memory or locked user space pages). - */ -dma_cookie_t -dma_async_memcpy_pg_to_pg(struct dma_chan *chan, struct page *dest_pg, - unsigned int dest_off, struct page *src_pg, unsigned int src_off, - size_t len) -{ - struct dma_device *dev = chan->device; - struct dma_async_tx_descriptor *tx; - struct dmaengine_unmap_data *unmap; - dma_cookie_t cookie; - unsigned long flags; - - unmap = dmaengine_get_unmap_data(dev->dev, 2, GFP_NOWAIT); - if (!unmap) - return -ENOMEM; - - unmap->to_cnt = 1; - unmap->from_cnt = 1; - unmap->addr[0] = dma_map_page(dev->dev, src_pg, src_off, len, - DMA_TO_DEVICE); - unmap->addr[1] = dma_map_page(dev->dev, dest_pg, dest_off, len, - DMA_FROM_DEVICE); - unmap->len = len; - flags = DMA_CTRL_ACK; - tx = dev->device_prep_dma_memcpy(chan, unmap->addr[1], unmap->addr[0], - len, flags); - - if (!tx) { - dmaengine_unmap_put(unmap); - return -ENOMEM; - } - - dma_set_unmap(tx, unmap); - cookie = tx->tx_submit(tx); - dmaengine_unmap_put(unmap); - - preempt_disable(); - __this_cpu_add(chan->local->bytes_transferred, len); - __this_cpu_inc(chan->local->memcpy_count); - preempt_enable(); - - return cookie; -} -EXPORT_SYMBOL(dma_async_memcpy_pg_to_pg); - -/** - * dma_async_memcpy_buf_to_buf - offloaded copy between virtual addresses - * @chan: DMA channel to offload copy to - * @dest: destination address (virtual) - * @src: source address (virtual) - * @len: length - * - * Both @dest and @src must be mappable to a bus address according to the - * DMA mapping API rules for streaming mappings. - * Both @dest and @src must stay memory resident (kernel memory or locked - * user space pages). - */ -dma_cookie_t -dma_async_memcpy_buf_to_buf(struct dma_chan *chan, void *dest, - void *src, size_t len) -{ - return dma_async_memcpy_pg_to_pg(chan, virt_to_page(dest), - (unsigned long) dest & ~PAGE_MASK, - virt_to_page(src), - (unsigned long) src & ~PAGE_MASK, len); -} -EXPORT_SYMBOL(dma_async_memcpy_buf_to_buf); - -/** - * dma_async_memcpy_buf_to_pg - offloaded copy from address to page - * @chan: DMA channel to offload copy to - * @page: destination page - * @offset: offset in page to copy to - * @kdata: source address (virtual) - * @len: length - * - * Both @page/@offset and @kdata must be mappable to a bus address according - * to the DMA mapping API rules for streaming mappings. - * Both @page/@offset and @kdata must stay memory resident (kernel memory or - * locked user space pages) - */ -dma_cookie_t -dma_async_memcpy_buf_to_pg(struct dma_chan *chan, struct page *page, - unsigned int offset, void *kdata, size_t len) -{ - return dma_async_memcpy_pg_to_pg(chan, page, offset, - virt_to_page(kdata), - (unsigned long) kdata & ~PAGE_MASK, len); -} -EXPORT_SYMBOL(dma_async_memcpy_buf_to_pg); - void dma_async_tx_descriptor_init(struct dma_async_tx_descriptor *tx, struct dma_chan *chan) { --- linux-3.13.0.orig/drivers/dma/dw/core.c +++ linux-3.13.0/drivers/dma/dw/core.c @@ -176,7 +176,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 @@ -541,16 +541,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; @@ -582,6 +583,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); @@ -590,6 +592,9 @@ spin_unlock_irqrestore(&dwc->lock, flags); } + + /* Re-enable interrupts */ + channel_set_bit(dw, MASK.BLOCK, dwc->mask); } /* ------------------------------------------------------------------------- */ @@ -598,10 +603,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); @@ -610,16 +617,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); } @@ -640,6 +646,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); @@ -650,6 +657,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); @@ -726,7 +734,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) @@ -805,7 +813,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) @@ -825,7 +833,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); @@ -865,7 +873,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) @@ -885,7 +893,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); @@ -1185,6 +1193,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); @@ -1209,7 +1218,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)) { @@ -1219,24 +1228,10 @@ spin_lock_irqsave(&dwc->lock, flags); - /* Assert channel is idle */ - if (dma_readl(dw, CH_EN) & dwc->mask) { - dev_err(chan2dev(&dwc->chan), - "BUG: Attempted to start non-idle channel\n"); - dwc_dump_chan_regs(dwc); - spin_unlock_irqrestore(&dwc->lock, flags); - return -EBUSY; - } + /* Enable interrupts to perform cyclic transfer */ + channel_set_bit(dw, MASK.BLOCK, dwc->mask); - 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); - - channel_set_bit(dw, CH_EN, dwc->mask); + dwc_dostart(dwc, dwc->cdesc->desc[0]); spin_unlock_irqrestore(&dwc->lock, flags); @@ -1442,6 +1437,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); @@ -1466,6 +1462,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); @@ -1543,14 +1540,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); - - err = devm_request_irq(chip->dev, chip->irq, dw_dma_interrupt, - IRQF_SHARED, "dw_dmac", dw); - if (err) - return err; - /* 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); @@ -1561,10 +1550,14 @@ tasklet_init(&dw->tasklet, dw_dma_tasklet, (unsigned long)dw); + err = request_irq(chip->irq, dw_dma_interrupt, IRQF_SHARED, + "dw_dmac", dw); + if (err) + return err; + 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); @@ -1576,7 +1569,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; @@ -1596,6 +1589,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); @@ -1663,6 +1657,7 @@ dw_dma_off(dw); dma_async_device_unregister(&dw->dma); + free_irq(chip->irq, dw); tasklet_kill(&dw->tasklet); list_for_each_entry_safe(dwc, _dwc, &dw->dma.channels, --- linux-3.13.0.orig/drivers/dma/dw/platform.c +++ linux-3.13.0/drivers/dma/dw/platform.c @@ -25,6 +25,8 @@ #include "internal.h" +#define DRV_NAME "dw_dmac" + struct dw_dma_of_filter_args { struct dw_dma *dw; unsigned int req; @@ -293,7 +295,7 @@ .remove = dw_remove, .shutdown = dw_shutdown, .driver = { - .name = "dw_dmac", + .name = DRV_NAME, .pm = &dw_dev_pm_ops, .of_match_table = of_match_ptr(dw_dma_of_id_table), .acpi_match_table = ACPI_PTR(dw_dma_acpi_id_table), @@ -314,3 +316,4 @@ MODULE_LICENSE("GPL v2"); MODULE_DESCRIPTION("Synopsys DesignWare DMA Controller platform driver"); +MODULE_ALIAS("platform:" DRV_NAME); --- linux-3.13.0.orig/drivers/dma/edma.c +++ linux-3.13.0/drivers/dma/edma.c @@ -182,11 +182,13 @@ echan->ecc->dummy_slot); } - edma_resume(echan->ch_num); - if (edesc->processed <= MAX_NR_SG) { dev_dbg(dev, "first transfer starting %d\n", echan->ch_num); edma_start(echan->ch_num); + } else { + dev_dbg(dev, "chan: %d: completed %d elements, resuming\n", + echan->ch_num, edesc->processed); + edma_resume(echan->ch_num); } /* @@ -217,6 +219,12 @@ * echan->edesc is NULL and exit.) */ if (echan->edesc) { + /* + * free the running request descriptor + * since it is not in any of the vdesc lists + */ + edma_desc_free(&echan->edesc->vdesc); + echan->edesc = NULL; edma_stop(echan->ch_num); } --- linux-3.13.0.orig/drivers/dma/ioat/dma.c +++ linux-3.13.0/drivers/dma/ioat/dma.c @@ -77,7 +77,8 @@ attnstatus = readl(instance->reg_base + IOAT_ATTNSTATUS_OFFSET); for_each_set_bit(bit, &attnstatus, BITS_PER_LONG) { chan = ioat_chan_by_index(instance, bit); - tasklet_schedule(&chan->cleanup_task); + if (test_bit(IOAT_RUN, &chan->state)) + tasklet_schedule(&chan->cleanup_task); } writeb(intrctrl, instance->reg_base + IOAT_INTRCTRL_OFFSET); @@ -93,7 +94,8 @@ { struct ioat_chan_common *chan = data; - tasklet_schedule(&chan->cleanup_task); + if (test_bit(IOAT_RUN, &chan->state)) + tasklet_schedule(&chan->cleanup_task); return IRQ_HANDLED; } @@ -116,7 +118,6 @@ chan->timer.function = device->timer_fn; chan->timer.data = data; tasklet_init(&chan->cleanup_task, device->cleanup_fn, data); - tasklet_disable(&chan->cleanup_task); } /** @@ -354,13 +355,49 @@ writel(((u64) chan->completion_dma) >> 32, chan->reg_base + IOAT_CHANCMP_OFFSET_HIGH); - tasklet_enable(&chan->cleanup_task); + set_bit(IOAT_RUN, &chan->state); ioat1_dma_start_null_desc(ioat); /* give chain to dma device */ dev_dbg(to_dev(chan), "%s: allocated %d descriptors\n", __func__, ioat->desccount); return ioat->desccount; } +void ioat_stop(struct ioat_chan_common *chan) +{ + struct ioatdma_device *device = chan->device; + struct pci_dev *pdev = device->pdev; + int chan_id = chan_num(chan); + struct msix_entry *msix; + + /* 1/ stop irq from firing tasklets + * 2/ stop the tasklet from re-arming irqs + */ + clear_bit(IOAT_RUN, &chan->state); + + /* flush inflight interrupts */ + switch (device->irq_mode) { + case IOAT_MSIX: + msix = &device->msix_entries[chan_id]; + synchronize_irq(msix->vector); + break; + case IOAT_MSI: + case IOAT_INTX: + synchronize_irq(pdev->irq); + break; + default: + break; + } + + /* flush inflight timers */ + del_timer_sync(&chan->timer); + + /* flush inflight tasklet runs */ + tasklet_kill(&chan->cleanup_task); + + /* final cleanup now that everything is quiesced and can't re-arm */ + device->cleanup_fn((unsigned long) &chan->common); +} + /** * ioat1_dma_free_chan_resources - release all the descriptors * @chan: the channel to be cleaned @@ -379,9 +416,7 @@ if (ioat->desccount == 0) return; - tasklet_disable(&chan->cleanup_task); - del_timer_sync(&chan->timer); - ioat1_cleanup(ioat); + ioat_stop(chan); /* Delay 100ms after reset to allow internal DMA logic to quiesce * before removing DMA descriptor resources. @@ -526,8 +561,11 @@ static void ioat1_cleanup_event(unsigned long data) { struct ioat_dma_chan *ioat = to_ioat_chan((void *) data); + struct ioat_chan_common *chan = &ioat->base; ioat1_cleanup(ioat); + if (!test_bit(IOAT_RUN, &chan->state)) + return; writew(IOAT_CHANCTRL_RUN, ioat->base.reg_base + IOAT_CHANCTRL_OFFSET); } @@ -1184,7 +1222,6 @@ err = ioat_probe(device); if (err) return err; - ioat_set_tcp_copy_break(4096); err = ioat_register(device); if (err) return err; --- linux-3.13.0.orig/drivers/dma/ioat/dma.h +++ linux-3.13.0/drivers/dma/ioat/dma.h @@ -214,13 +214,6 @@ #define dump_desc_dbg(c, d) \ ({ if (d) __dump_desc_dbg(&c->base, d->hw, &d->txd, desc_id(d)); 0; }) -static inline void ioat_set_tcp_copy_break(unsigned long copybreak) -{ - #ifdef CONFIG_NET_DMA - sysctl_tcp_dma_copybreak = copybreak; - #endif -} - static inline struct ioat_chan_common * ioat_chan_by_index(struct ioatdma_device *device, int index) { @@ -356,6 +349,7 @@ void ioat_kobject_add(struct ioatdma_device *device, struct kobj_type *type); void ioat_kobject_del(struct ioatdma_device *device); int ioat_dma_setup_interrupts(struct ioatdma_device *device); +void ioat_stop(struct ioat_chan_common *chan); extern const struct sysfs_ops ioat_sysfs_ops; extern struct ioat_sysfs_entry ioat_version_attr; extern struct ioat_sysfs_entry ioat_cap_attr; --- linux-3.13.0.orig/drivers/dma/ioat/dma_v2.c +++ linux-3.13.0/drivers/dma/ioat/dma_v2.c @@ -190,8 +190,11 @@ void ioat2_cleanup_event(unsigned long data) { struct ioat2_dma_chan *ioat = to_ioat2_chan((void *) data); + struct ioat_chan_common *chan = &ioat->base; ioat2_cleanup(ioat); + if (!test_bit(IOAT_RUN, &chan->state)) + return; writew(IOAT_CHANCTRL_RUN, ioat->base.reg_base + IOAT_CHANCTRL_OFFSET); } @@ -553,10 +556,10 @@ ioat->issued = 0; ioat->tail = 0; ioat->alloc_order = order; + set_bit(IOAT_RUN, &chan->state); spin_unlock_bh(&ioat->prep_lock); spin_unlock_bh(&chan->cleanup_lock); - tasklet_enable(&chan->cleanup_task); ioat2_start_null_desc(ioat); /* check that we got off the ground */ @@ -566,7 +569,6 @@ } while (i++ < 20 && !is_ioat_active(status) && !is_ioat_idle(status)); if (is_ioat_active(status) || is_ioat_idle(status)) { - set_bit(IOAT_RUN, &chan->state); return 1 << ioat->alloc_order; } else { u32 chanerr = readl(chan->reg_base + IOAT_CHANERR_OFFSET); @@ -809,11 +811,8 @@ if (!ioat->ring) return; - tasklet_disable(&chan->cleanup_task); - del_timer_sync(&chan->timer); - device->cleanup_fn((unsigned long) c); + ioat_stop(chan); device->reset_hw(chan); - clear_bit(IOAT_RUN, &chan->state); spin_lock_bh(&chan->cleanup_lock); spin_lock_bh(&ioat->prep_lock); @@ -900,7 +899,6 @@ err = ioat_probe(device); if (err) return err; - ioat_set_tcp_copy_break(2048); list_for_each_entry(c, &dma->channels, device_node) { chan = to_chan_common(c); --- linux-3.13.0.orig/drivers/dma/ioat/dma_v3.c +++ linux-3.13.0/drivers/dma/ioat/dma_v3.c @@ -464,8 +464,11 @@ static void ioat3_cleanup_event(unsigned long data) { struct ioat2_dma_chan *ioat = to_ioat2_chan((void *) data); + struct ioat_chan_common *chan = &ioat->base; ioat3_cleanup(ioat); + if (!test_bit(IOAT_RUN, &chan->state)) + return; writew(IOAT_CHANCTRL_RUN, ioat->base.reg_base + IOAT_CHANCTRL_OFFSET); } @@ -1652,7 +1655,6 @@ err = ioat_probe(device); if (err) return err; - ioat_set_tcp_copy_break(262144); list_for_each_entry(c, &dma->channels, device_node) { chan = to_chan_common(c); --- linux-3.13.0.orig/drivers/dma/mv_xor.c +++ linux-3.13.0/drivers/dma/mv_xor.c @@ -191,12 +191,10 @@ static void mv_chan_activate(struct mv_xor_chan *chan) { - u32 activation; - dev_dbg(mv_chan_to_devp(chan), " activate chan.\n"); - activation = readl_relaxed(XOR_ACTIVATION(chan)); - activation |= 0x1; - writel_relaxed(activation, XOR_ACTIVATION(chan)); + + /* writel ensures all descriptors are flushed before activation */ + writel(BIT(0), XOR_ACTIVATION(chan)); } static char mv_chan_is_busy(struct mv_xor_chan *chan) @@ -318,7 +316,8 @@ dma_cookie_t cookie = 0; int busy = mv_chan_is_busy(mv_chan); u32 current_desc = mv_chan_get_current_desc(mv_chan); - int seen_current = 0; + int current_cleaned = 0; + struct mv_xor_desc *hw_desc; dev_dbg(mv_chan_to_devp(mv_chan), "%s %d\n", __func__, __LINE__); dev_dbg(mv_chan_to_devp(mv_chan), "current_desc %x\n", current_desc); @@ -330,38 +329,57 @@ list_for_each_entry_safe(iter, _iter, &mv_chan->chain, chain_node) { - prefetch(_iter); - prefetch(&_iter->async_tx); - /* do not advance past the current descriptor loaded into the - * hardware channel, subsequent descriptors are either in - * process or have not been submitted - */ - if (seen_current) - break; - - /* stop the search if we reach the current descriptor and the - * channel is busy - */ - if (iter->async_tx.phys == current_desc) { - seen_current = 1; - if (busy) + /* clean finished descriptors */ + hw_desc = iter->hw_desc; + if (hw_desc->status & XOR_DESC_SUCCESS) { + cookie = mv_xor_run_tx_complete_actions(iter, mv_chan, + cookie); + + /* done processing desc, clean slot */ + mv_xor_clean_slot(iter, mv_chan); + + /* break if we did cleaned the current */ + if (iter->async_tx.phys == current_desc) { + current_cleaned = 1; break; + } + } else { + if (iter->async_tx.phys == current_desc) { + current_cleaned = 0; + break; + } } - - cookie = mv_xor_run_tx_complete_actions(iter, mv_chan, cookie); - - if (mv_xor_clean_slot(iter, mv_chan)) - break; } if ((busy == 0) && !list_empty(&mv_chan->chain)) { - struct mv_xor_desc_slot *chain_head; - chain_head = list_entry(mv_chan->chain.next, - struct mv_xor_desc_slot, - chain_node); - - mv_xor_start_new_chain(mv_chan, chain_head); + if (current_cleaned) { + /* + * current descriptor cleaned and removed, run + * from list head + */ + iter = list_entry(mv_chan->chain.next, + struct mv_xor_desc_slot, + chain_node); + mv_xor_start_new_chain(mv_chan, iter); + } else { + if (!list_is_last(&iter->chain_node, &mv_chan->chain)) { + /* + * descriptors are still waiting after + * current, trigger them + */ + iter = list_entry(iter->chain_node.next, + struct mv_xor_desc_slot, + chain_node); + mv_xor_start_new_chain(mv_chan, iter); + } else { + /* + * some descriptors are still waiting + * to be cleaned + */ + tasklet_schedule(&mv_chan->irq_tasklet); + } + } } if (cookie > 0) --- linux-3.13.0.orig/drivers/dma/mv_xor.h +++ linux-3.13.0/drivers/dma/mv_xor.h @@ -33,6 +33,7 @@ #define XOR_OPERATION_MODE_XOR 0 #define XOR_OPERATION_MODE_MEMCPY 2 #define XOR_DESCRIPTOR_SWAP BIT(14) +#define XOR_DESC_SUCCESS 0x40000000 #define XOR_CURR_DESC(chan) (chan->mmr_high_base + 0x10 + (chan->idx * 4)) #define XOR_NEXT_DESC(chan) (chan->mmr_high_base + 0x00 + (chan->idx * 4)) --- linux-3.13.0.orig/drivers/dma/omap-dma.c +++ linux-3.13.0/drivers/dma/omap-dma.c @@ -487,6 +487,7 @@ * c->desc is NULL and exit.) */ if (c->desc) { + omap_dma_desc_free(&c->desc->vd); c->desc = NULL; /* Avoid stopping the dma twice */ if (!c->paused) --- linux-3.13.0.orig/drivers/dma/ste_dma40.c +++ linux-3.13.0/drivers/dma/ste_dma40.c @@ -1641,6 +1641,7 @@ struct d40_chan *d40c = (struct d40_chan *) data; struct d40_desc *d40d; unsigned long flags; + bool callback_active; dma_async_tx_callback callback; void *callback_param; @@ -1668,6 +1669,7 @@ } /* Callback to client */ + callback_active = !!(d40d->txd.flags & DMA_PREP_INTERRUPT); callback = d40d->txd.callback; callback_param = d40d->txd.callback_param; @@ -1690,7 +1692,7 @@ spin_unlock_irqrestore(&d40c->lock, flags); - if (callback && (d40d->txd.flags & DMA_PREP_INTERRUPT)) + if (callback_active && callback) callback(callback_param); return; --- linux-3.13.0.orig/drivers/edac/amd64_edac.c +++ linux-3.13.0/drivers/edac/amd64_edac.c @@ -1295,7 +1295,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-3.13.0.orig/drivers/edac/cpc925_edac.c +++ linux-3.13.0/drivers/edac/cpc925_edac.c @@ -562,7 +562,7 @@ if (apiexcp & UECC_EXCP_DETECTED) { cpc925_mc_printk(mci, KERN_INFO, "DRAM UECC Fault\n"); - edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, 1, + edac_mc_handle_error(HW_EVENT_ERR_UNCORRECTED, mci, 1, pfn, offset, 0, csrow, -1, -1, mci->ctl_name, ""); --- linux-3.13.0.orig/drivers/edac/e752x_edac.c +++ linux-3.13.0/drivers/edac/e752x_edac.c @@ -1182,9 +1182,11 @@ pvt->bridge_ck = pci_get_device(PCI_VENDOR_ID_INTEL, pvt->dev_info->err_dev, pvt->bridge_ck); - if (pvt->bridge_ck == NULL) + if (pvt->bridge_ck == NULL) { pvt->bridge_ck = pci_scan_single_device(pdev->bus, PCI_DEVFN(0, 1)); + pci_dev_get(pvt->bridge_ck); + } if (pvt->bridge_ck == NULL) { e752x_printk(KERN_ERR, "error reporting device not found:" --- linux-3.13.0.orig/drivers/edac/e7xxx_edac.c +++ linux-3.13.0/drivers/edac/e7xxx_edac.c @@ -226,7 +226,7 @@ static void process_ce_no_info(struct mem_ctl_info *mci) { edac_dbg(3, "\n"); - edac_mc_handle_error(HW_EVENT_ERR_UNCORRECTED, mci, 1, 0, 0, 0, -1, -1, -1, + edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, 1, 0, 0, 0, -1, -1, -1, "e7xxx CE log register overflow", ""); } --- linux-3.13.0.orig/drivers/edac/edac_device.c +++ linux-3.13.0/drivers/edac/edac_device.c @@ -435,13 +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-3.13.0.orig/drivers/edac/edac_mc.c +++ linux-3.13.0/drivers/edac/edac_mc.c @@ -559,7 +559,8 @@ * * called with the mem_ctls_mutex held */ -static void edac_mc_workq_setup(struct mem_ctl_info *mci, unsigned msec) +static void edac_mc_workq_setup(struct mem_ctl_info *mci, unsigned msec, + bool init) { edac_dbg(0, "\n"); @@ -567,7 +568,9 @@ if (mci->op_state != OP_RUNNING_POLL) return; - INIT_DELAYED_WORK(&mci->work, edac_mc_workq_function); + if (init) + INIT_DELAYED_WORK(&mci->work, edac_mc_workq_function); + mod_delayed_work(edac_workqueue, &mci->work, msecs_to_jiffies(msec)); } @@ -581,18 +584,10 @@ */ static void edac_mc_workq_teardown(struct mem_ctl_info *mci) { - int status; - - 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"); + mci->op_state = OP_OFFLINE; - /* workq instance might be running, wait for it */ - flush_workqueue(edac_workqueue); - } + cancel_delayed_work_sync(&mci->work); + flush_workqueue(edac_workqueue); } /* @@ -601,7 +596,7 @@ * user space has updated our poll period value, need to * reset our workq delays */ -void edac_mc_reset_delay_period(int value) +void edac_mc_reset_delay_period(unsigned long value) { struct mem_ctl_info *mci; struct list_head *item; @@ -611,7 +606,7 @@ list_for_each(item, &mc_devices) { mci = list_entry(item, struct mem_ctl_info, link); - edac_mc_workq_setup(mci, (unsigned long) value); + edac_mc_workq_setup(mci, value, false); } mutex_unlock(&mem_ctls_mutex); @@ -782,7 +777,7 @@ /* This instance is NOW RUNNING */ mci->op_state = OP_RUNNING_POLL; - edac_mc_workq_setup(mci, edac_mc_get_poll_msec()); + edac_mc_workq_setup(mci, edac_mc_get_poll_msec(), true); } else { mci->op_state = OP_RUNNING_INTERRUPT; } --- linux-3.13.0.orig/drivers/edac/edac_mc_sysfs.c +++ linux-3.13.0/drivers/edac/edac_mc_sysfs.c @@ -52,18 +52,20 @@ static int edac_set_poll_msec(const char *val, struct kernel_param *kp) { - long l; + unsigned long l; int ret; if (!val) return -EINVAL; - ret = kstrtol(val, 0, &l); + ret = kstrtoul(val, 0, &l); if (ret) return ret; - if ((int)l != l) + + if (l < 1000) return -EINVAL; - *((int *)kp->arg) = l; + + *((unsigned long *)kp->arg) = l; /* notify edac_mc engine to reset the poll period */ edac_mc_reset_delay_period(l); @@ -971,21 +973,26 @@ */ int edac_create_sysfs_mci_device(struct mem_ctl_info *mci) { + 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) + if (err < 0) { + kfree(name); return err; + } /* get the /sys/devices/system/edac subsys reference */ mci->dev.type = &mci_attr_type; @@ -1069,7 +1076,8 @@ fail2: device_unregister(&mci->dev); bus_unregister(mci->bus); - kfree(mci->bus->name); + kfree(name); + return err; } @@ -1100,10 +1108,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-3.13.0.orig/drivers/edac/edac_module.h +++ linux-3.13.0/drivers/edac/edac_module.h @@ -52,7 +52,7 @@ extern void edac_device_workq_teardown(struct edac_device_ctl_info *edac_dev); extern void edac_device_reset_delay_period(struct edac_device_ctl_info *edac_dev, unsigned long value); -extern void edac_mc_reset_delay_period(int value); +extern void edac_mc_reset_delay_period(unsigned long value); extern void *edac_align_ptr(void **p, unsigned size, int n_elems); --- linux-3.13.0.orig/drivers/edac/edac_pci.c +++ linux-3.13.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-3.13.0.orig/drivers/edac/i3200_edac.c +++ linux-3.13.0/drivers/edac/i3200_edac.c @@ -242,11 +242,11 @@ -1, -1, "i3000 UE", ""); } else if (log & I3200_ECCERRLOG_CE) { - edac_mc_handle_error(HW_EVENT_ERR_UNCORRECTED, mci, 1, + edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, 1, 0, 0, eccerrlog_syndrome(log), eccerrlog_row(channel, log), -1, -1, - "i3000 UE", ""); + "i3000 CE", ""); } } } --- linux-3.13.0.orig/drivers/edac/i7300_edac.c +++ linux-3.13.0/drivers/edac/i7300_edac.c @@ -943,33 +943,35 @@ /* Attempt to 'get' the MCH register we want */ pdev = NULL; - while (!pvt->pci_dev_16_1_fsb_addr_map || - !pvt->pci_dev_16_2_fsb_err_regs) { - pdev = pci_get_device(PCI_VENDOR_ID_INTEL, - PCI_DEVICE_ID_INTEL_I7300_MCH_ERR, pdev); - if (!pdev) { - /* End of list, leave */ - i7300_printk(KERN_ERR, - "'system address,Process Bus' " - "device not found:" - "vendor 0x%x device 0x%x ERR funcs " - "(broken BIOS?)\n", - PCI_VENDOR_ID_INTEL, - PCI_DEVICE_ID_INTEL_I7300_MCH_ERR); - goto error; - } - + while ((pdev = pci_get_device(PCI_VENDOR_ID_INTEL, + PCI_DEVICE_ID_INTEL_I7300_MCH_ERR, + pdev))) { /* Store device 16 funcs 1 and 2 */ switch (PCI_FUNC(pdev->devfn)) { case 1: - pvt->pci_dev_16_1_fsb_addr_map = pdev; + if (!pvt->pci_dev_16_1_fsb_addr_map) + pvt->pci_dev_16_1_fsb_addr_map = + pci_dev_get(pdev); break; case 2: - pvt->pci_dev_16_2_fsb_err_regs = pdev; + if (!pvt->pci_dev_16_2_fsb_err_regs) + pvt->pci_dev_16_2_fsb_err_regs = + pci_dev_get(pdev); break; } } + if (!pvt->pci_dev_16_1_fsb_addr_map || + !pvt->pci_dev_16_2_fsb_err_regs) { + /* At least one device was not found */ + i7300_printk(KERN_ERR, + "'system address,Process Bus' device not found:" + "vendor 0x%x device 0x%x ERR funcs (broken BIOS?)\n", + PCI_VENDOR_ID_INTEL, + PCI_DEVICE_ID_INTEL_I7300_MCH_ERR); + goto error; + } + edac_dbg(1, "System Address, processor bus- PCI Bus ID: %s %x:%x\n", pci_name(pvt->pci_dev_16_0_fsb_ctlr), pvt->pci_dev_16_0_fsb_ctlr->vendor, --- linux-3.13.0.orig/drivers/edac/i7core_edac.c +++ linux-3.13.0/drivers/edac/i7core_edac.c @@ -1334,14 +1334,19 @@ * is at addr 8086:2c40, instead of 8086:2c41. So, we need * to probe for the alternate address in case of failure */ - if (dev_descr->dev_id == PCI_DEVICE_ID_INTEL_I7_NONCORE && !pdev) + if (dev_descr->dev_id == PCI_DEVICE_ID_INTEL_I7_NONCORE && !pdev) { + pci_dev_get(*prev); /* pci_get_device will put it */ pdev = pci_get_device(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_I7_NONCORE_ALT, *prev); + } - if (dev_descr->dev_id == PCI_DEVICE_ID_INTEL_LYNNFIELD_NONCORE && !pdev) + if (dev_descr->dev_id == PCI_DEVICE_ID_INTEL_LYNNFIELD_NONCORE && + !pdev) { + pci_dev_get(*prev); /* pci_get_device will put it */ pdev = pci_get_device(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_LYNNFIELD_NONCORE_ALT, *prev); + } if (!pdev) { if (*prev) { --- linux-3.13.0.orig/drivers/edac/i82860_edac.c +++ linux-3.13.0/drivers/edac/i82860_edac.c @@ -124,7 +124,7 @@ dimm->location[0], dimm->location[1], -1, "i82860 UE", ""); else - edac_mc_handle_error(HW_EVENT_ERR_UNCORRECTED, mci, 1, + edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, 1, info->eap, 0, info->derrsyn, dimm->location[0], dimm->location[1], -1, "i82860 CE", ""); --- linux-3.13.0.orig/drivers/edac/mpc85xx_edac.c +++ linux-3.13.0/drivers/edac/mpc85xx_edac.c @@ -557,7 +557,7 @@ if (edac_op_state == EDAC_OPSTATE_INT) { pdata->irq = irq_of_parse_and_map(op->dev.of_node, 0); res = devm_request_irq(&op->dev, pdata->irq, - mpc85xx_l2_isr, IRQF_DISABLED, + mpc85xx_l2_isr, IRQF_SHARED, "[EDAC] L2 err", edac_dev); if (res < 0) { printk(KERN_ERR --- linux-3.13.0.orig/drivers/edac/ppc4xx_edac.c +++ linux-3.13.0/drivers/edac/ppc4xx_edac.c @@ -921,7 +921,7 @@ */ for (row = 0; row < mci->nr_csrows; row++) { - struct csrow_info *csi = &mci->csrows[row]; + struct csrow_info *csi = mci->csrows[row]; /* * Get the configuration settings for this --- linux-3.13.0.orig/drivers/eisa/eisa-bus.c +++ linux-3.13.0/drivers/eisa/eisa-bus.c @@ -275,18 +275,19 @@ } if (slot) { + edev->res[i].name = NULL; edev->res[i].start = SLOT_ADDRESS(root, slot) + (i * 0x400); edev->res[i].end = edev->res[i].start + 0xff; edev->res[i].flags = IORESOURCE_IO; } else { + edev->res[i].name = NULL; edev->res[i].start = SLOT_ADDRESS(root, slot) + EISA_VENDOR_ID_OFFSET; edev->res[i].end = edev->res[i].start + 3; edev->res[i].flags = IORESOURCE_IO | IORESOURCE_BUSY; } - dev_printk(KERN_DEBUG, &edev->dev, "%pR\n", &edev->res[i]); if (request_resource(root->res, &edev->res[i])) goto failed; } @@ -326,19 +327,20 @@ return -ENOMEM; } - if (eisa_init_device(root, edev, 0)) { + if (eisa_request_resources(root, edev, 0)) { + dev_warn(root->dev, + "EISA: Cannot allocate resource for mainboard\n"); kfree(edev); if (!root->force_probe) - return -ENODEV; + return -EBUSY; goto force_probe; } - if (eisa_request_resources(root, edev, 0)) { - dev_warn(root->dev, - "EISA: Cannot allocate resource for mainboard\n"); + if (eisa_init_device(root, edev, 0)) { + eisa_release_resources(edev); kfree(edev); if (!root->force_probe) - return -EBUSY; + return -ENODEV; goto force_probe; } @@ -361,11 +363,6 @@ continue; } - if (eisa_init_device(root, edev, i)) { - kfree(edev); - continue; - } - if (eisa_request_resources(root, edev, i)) { dev_warn(root->dev, "Cannot allocate resource for EISA slot %d\n", @@ -373,6 +370,12 @@ kfree(edev); continue; } + + if (eisa_init_device(root, edev, i)) { + eisa_release_resources(edev); + kfree(edev); + continue; + } if (edev->state == (EISA_CONFIG_ENABLED | EISA_CONFIG_FORCED)) enabled_str = " (forced enabled)"; --- linux-3.13.0.orig/drivers/extcon/extcon-gpio.c +++ linux-3.13.0/drivers/extcon/extcon-gpio.c @@ -105,6 +105,12 @@ extcon_data->state_off = pdata->state_off; if (pdata->state_on && pdata->state_off) extcon_data->edev.print_state = extcon_gpio_print_state; + + ret = devm_gpio_request_one(&pdev->dev, extcon_data->gpio, GPIOF_DIR_IN, + pdev->name); + if (ret < 0) + return ret; + if (pdata->debounce) { ret = gpio_set_debounce(extcon_data->gpio, pdata->debounce * 1000); @@ -117,11 +123,6 @@ if (ret < 0) return ret; - ret = devm_gpio_request_one(&pdev->dev, extcon_data->gpio, GPIOF_DIR_IN, - pdev->name); - if (ret < 0) - goto err; - INIT_DELAYED_WORK(&extcon_data->work, gpio_extcon_work); extcon_data->irq = gpio_to_irq(extcon_data->gpio); --- linux-3.13.0.orig/drivers/extcon/extcon-max77693.c +++ linux-3.13.0/drivers/extcon/extcon-max77693.c @@ -1193,7 +1193,7 @@ /* Initialize MUIC register by using platform data or default data */ - if (pdata->muic_data) { + if (pdata && pdata->muic_data) { init_data = pdata->muic_data->init_data; num_init_data = pdata->muic_data->num_init_data; } else { @@ -1226,7 +1226,7 @@ = init_data[i].data; } - if (pdata->muic_data) { + if (pdata && pdata->muic_data) { struct max77693_muic_platform_data *muic_pdata = pdata->muic_data; --- linux-3.13.0.orig/drivers/extcon/extcon-max8997.c +++ linux-3.13.0/drivers/extcon/extcon-max8997.c @@ -715,7 +715,7 @@ goto err_irq; } - if (pdata->muic_pdata) { + if (pdata && pdata->muic_pdata) { struct max8997_muic_platform_data *muic_pdata = pdata->muic_pdata; --- linux-3.13.0.orig/drivers/firewire/core-cdev.c +++ linux-3.13.0/drivers/firewire/core-cdev.c @@ -1637,8 +1637,7 @@ _IOC_SIZE(cmd) > sizeof(buffer)) return -ENOTTY; - if (_IOC_DIR(cmd) == _IOC_READ) - memset(&buffer, 0, _IOC_SIZE(cmd)); + memset(&buffer, 0, sizeof(buffer)); if (_IOC_DIR(cmd) & _IOC_WRITE) if (copy_from_user(&buffer, arg, _IOC_SIZE(cmd))) --- linux-3.13.0.orig/drivers/firewire/core-device.c +++ linux-3.13.0/drivers/firewire/core-device.c @@ -916,7 +916,7 @@ old->config_rom_retries = 0; fw_notice(card, "rediscovered device %s\n", dev_name(dev)); - PREPARE_DELAYED_WORK(&old->work, fw_device_update); + old->workfn = fw_device_update; fw_schedule_device_work(old, 0); if (current_node == card->root_node) @@ -1075,7 +1075,7 @@ if (atomic_cmpxchg(&device->state, FW_DEVICE_INITIALIZING, FW_DEVICE_RUNNING) == FW_DEVICE_GONE) { - PREPARE_DELAYED_WORK(&device->work, fw_device_shutdown); + device->workfn = fw_device_shutdown; fw_schedule_device_work(device, SHUTDOWN_DELAY); } else { fw_notice(card, "created device %s: GUID %08x%08x, S%d00\n", @@ -1196,13 +1196,20 @@ dev_name(&device->device), fw_rcode_string(ret)); gone: atomic_set(&device->state, FW_DEVICE_GONE); - PREPARE_DELAYED_WORK(&device->work, fw_device_shutdown); + device->workfn = fw_device_shutdown; fw_schedule_device_work(device, SHUTDOWN_DELAY); out: if (node_id == card->root_node->node_id) fw_schedule_bm_work(card, 0); } +static void fw_device_workfn(struct work_struct *work) +{ + struct fw_device *device = container_of(to_delayed_work(work), + struct fw_device, work); + device->workfn(work); +} + void fw_node_event(struct fw_card *card, struct fw_node *node, int event) { struct fw_device *device; @@ -1252,7 +1259,8 @@ * power-up after getting plugged in. We schedule the * first config rom scan half a second after bus reset. */ - INIT_DELAYED_WORK(&device->work, fw_device_init); + device->workfn = fw_device_init; + INIT_DELAYED_WORK(&device->work, fw_device_workfn); fw_schedule_device_work(device, INITIAL_DELAY); break; @@ -1268,7 +1276,7 @@ if (atomic_cmpxchg(&device->state, FW_DEVICE_RUNNING, FW_DEVICE_INITIALIZING) == FW_DEVICE_RUNNING) { - PREPARE_DELAYED_WORK(&device->work, fw_device_refresh); + device->workfn = fw_device_refresh; fw_schedule_device_work(device, device->is_local ? 0 : INITIAL_DELAY); } @@ -1283,7 +1291,7 @@ smp_wmb(); /* update node_id before generation */ device->generation = card->generation; if (atomic_read(&device->state) == FW_DEVICE_RUNNING) { - PREPARE_DELAYED_WORK(&device->work, fw_device_update); + device->workfn = fw_device_update; fw_schedule_device_work(device, 0); } break; @@ -1308,7 +1316,7 @@ device = node->data; if (atomic_xchg(&device->state, FW_DEVICE_GONE) == FW_DEVICE_RUNNING) { - PREPARE_DELAYED_WORK(&device->work, fw_device_shutdown); + device->workfn = fw_device_shutdown; fw_schedule_device_work(device, list_empty(&card->link) ? 0 : SHUTDOWN_DELAY); } --- linux-3.13.0.orig/drivers/firewire/net.c +++ linux-3.13.0/drivers/firewire/net.c @@ -929,8 +929,6 @@ if (rcode == RCODE_COMPLETE) { fwnet_transmit_packet_done(ptask); } else { - fwnet_transmit_packet_failed(ptask); - if (printk_timed_ratelimit(&j, 1000) || rcode != last_rcode) { dev_err(&ptask->dev->netdev->dev, "fwnet_write_complete failed: %x (skipped %d)\n", @@ -938,8 +936,10 @@ errors_skipped = 0; last_rcode = rcode; - } else + } else { errors_skipped++; + } + fwnet_transmit_packet_failed(ptask); } } --- linux-3.13.0.orig/drivers/firewire/ohci.c +++ linux-3.13.0/drivers/firewire/ohci.c @@ -290,7 +290,6 @@ #define QUIRK_NO_MSI 0x10 #define QUIRK_TI_SLLZ059 0x20 #define QUIRK_IR_WAKE 0x40 -#define QUIRK_PHY_LCTRL_TIMEOUT 0x80 /* In case of multiple matches in ohci_quirks[], only the first one is used. */ static const struct { @@ -303,10 +302,7 @@ QUIRK_BE_HEADERS}, {PCI_VENDOR_ID_ATT, PCI_DEVICE_ID_AGERE_FW643, 6, - QUIRK_PHY_LCTRL_TIMEOUT | QUIRK_NO_MSI}, - - {PCI_VENDOR_ID_ATT, PCI_ANY_ID, PCI_ANY_ID, - QUIRK_PHY_LCTRL_TIMEOUT}, + QUIRK_NO_MSI}, {PCI_VENDOR_ID_CREATIVE, PCI_DEVICE_ID_CREATIVE_SB1394, PCI_ANY_ID, QUIRK_RESET_PACKET}, @@ -353,7 +349,6 @@ ", disable MSI = " __stringify(QUIRK_NO_MSI) ", TI SLLZ059 erratum = " __stringify(QUIRK_TI_SLLZ059) ", IR wake unreliable = " __stringify(QUIRK_IR_WAKE) - ", phy LCtrl timeout = " __stringify(QUIRK_PHY_LCTRL_TIMEOUT) ")"); #define OHCI_PARAM_DEBUG_AT_AR 1 @@ -2295,9 +2290,6 @@ * TI TSB82AA2 + TSB81BA3(A) cards signal LPS enabled early but * cannot actually use the phy at that time. These need tens of * millisecods pause between LPS write and first phy access too. - * - * But do not wait for 50msec on Agere/LSI cards. Their phy - * arbitration state machine may time out during such a long wait. */ reg_write(ohci, OHCI1394_HCControlSet, @@ -2305,11 +2297,8 @@ OHCI1394_HCControl_postedWriteEnable); flush_writes(ohci); - if (!(ohci->quirks & QUIRK_PHY_LCTRL_TIMEOUT)) + for (lps = 0, i = 0; !lps && i < 3; i++) { msleep(50); - - for (lps = 0, i = 0; !lps && i < 150; i++) { - msleep(1); lps = reg_read(ohci, OHCI1394_HCControlSet) & OHCI1394_HCControl_LPS; } @@ -3683,6 +3672,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-3.13.0.orig/drivers/firewire/sbp2.c +++ linux-3.13.0/drivers/firewire/sbp2.c @@ -146,6 +146,7 @@ */ int generation; int retries; + work_func_t workfn; struct delayed_work work; bool has_sdev; bool blocked; @@ -864,7 +865,7 @@ /* set appropriate retry limit(s) in BUSY_TIMEOUT register */ sbp2_set_busy_timeout(lu); - PREPARE_DELAYED_WORK(&lu->work, sbp2_reconnect); + lu->workfn = sbp2_reconnect; sbp2_agent_reset(lu); /* This was a re-login. */ @@ -918,7 +919,7 @@ * If a bus reset happened, sbp2_update will have requeued * lu->work already. Reset the work from reconnect to login. */ - PREPARE_DELAYED_WORK(&lu->work, sbp2_login); + lu->workfn = sbp2_login; } static void sbp2_reconnect(struct work_struct *work) @@ -952,7 +953,7 @@ lu->retries++ >= 5) { dev_err(tgt_dev(tgt), "failed to reconnect\n"); lu->retries = 0; - PREPARE_DELAYED_WORK(&lu->work, sbp2_login); + lu->workfn = sbp2_login; } sbp2_queue_work(lu, DIV_ROUND_UP(HZ, 5)); @@ -972,6 +973,13 @@ sbp2_conditionally_unblock(lu); } +static void sbp2_lu_workfn(struct work_struct *work) +{ + struct sbp2_logical_unit *lu = container_of(to_delayed_work(work), + struct sbp2_logical_unit, work); + lu->workfn(work); +} + static int sbp2_add_logical_unit(struct sbp2_target *tgt, int lun_entry) { struct sbp2_logical_unit *lu; @@ -998,7 +1006,8 @@ lu->blocked = false; ++tgt->dont_block; INIT_LIST_HEAD(&lu->orb_list); - INIT_DELAYED_WORK(&lu->work, sbp2_login); + lu->workfn = sbp2_login; + INIT_DELAYED_WORK(&lu->work, sbp2_lu_workfn); list_add_tail(&lu->link, &tgt->lu_list); return 0; --- linux-3.13.0.orig/drivers/firmware/dmi_scan.c +++ linux-3.13.0/drivers/firmware/dmi_scan.c @@ -489,6 +489,10 @@ buf += 16; if (memcmp(buf, "_DMI_", 5) == 0 && dmi_checksum(buf, 15)) { + if (smbios_ver) + dmi_ver = smbios_ver; + else + dmi_ver = (buf[14] & 0xF0) << 4 | (buf[14] & 0x0F); dmi_num = (buf[13] << 8) | buf[12]; dmi_len = (buf[7] << 8) | buf[6]; dmi_base = (buf[11] << 24) | (buf[10] << 16) | @@ -496,12 +500,9 @@ if (dmi_walk_early(dmi_decode) == 0) { if (smbios_ver) { - dmi_ver = smbios_ver; pr_info("SMBIOS %d.%d present.\n", dmi_ver >> 8, dmi_ver & 0xFF); } else { - dmi_ver = (buf[14] & 0xF0) << 4 | - (buf[14] & 0x0F); pr_info("Legacy DMI %d.%d present.\n", dmi_ver >> 8, dmi_ver & 0xFF); } --- linux-3.13.0.orig/drivers/firmware/efi/Kconfig +++ linux-3.13.0/drivers/firmware/efi/Kconfig @@ -36,6 +36,13 @@ backend for pstore by default. This setting can be overridden using the efivars module's pstore_disable parameter. +config EFI_PARAMS_FROM_FDT + bool + help + Select this config option from the architecture Kconfig if + the EFI runtime support gets system table address, memory + map address, and other parameters from the device tree. + endmenu config UEFI_CPER --- linux-3.13.0.orig/drivers/firmware/efi/arm-stub.c +++ linux-3.13.0/drivers/firmware/efi/arm-stub.c @@ -0,0 +1,291 @@ +/* + * EFI stub implementation that is shared by arm and arm64 architectures. + * This should be #included by the EFI stub implementation files. + * + * Copyright (C) 2013,2014 Linaro Limited + * Roy Franz + * + * This file is part of the Linux kernel, and is made available under the + * terms of the GNU General Public License version 2. + * + */ + +static int __init efi_secureboot_enabled(efi_system_table_t *sys_table_arg) +{ + static efi_guid_t const var_guid __initconst = EFI_GLOBAL_VARIABLE_GUID; + static efi_char16_t const var_name[] __initconst = { + 'S', 'e', 'c', 'u', 'r', 'e', 'B', 'o', 'o', 't', 0 }; + + efi_get_variable_t *f_getvar = sys_table_arg->runtime->get_variable; + unsigned long size = sizeof(u8); + efi_status_t status; + u8 val; + + status = f_getvar((efi_char16_t *)var_name, (efi_guid_t *)&var_guid, + NULL, &size, &val); + + switch (status) { + case EFI_SUCCESS: + return val; + case EFI_NOT_FOUND: + return 0; + default: + return 1; + } +} + +static efi_status_t efi_open_volume(efi_system_table_t *sys_table_arg, + void *__image, void **__fh) +{ + efi_file_io_interface_t *io; + efi_loaded_image_t *image = __image; + efi_file_handle_t *fh; + efi_guid_t fs_proto = EFI_FILE_SYSTEM_GUID; + efi_status_t status; + void *handle = (void *)(unsigned long)image->device_handle; + + status = sys_table_arg->boottime->handle_protocol(handle, + &fs_proto, (void **)&io); + if (status != EFI_SUCCESS) { + efi_printk(sys_table_arg, "Failed to handle fs_proto\n"); + return status; + } + + status = io->open_volume(io, &fh); + if (status != EFI_SUCCESS) + efi_printk(sys_table_arg, "Failed to open volume\n"); + + *__fh = fh; + return status; +} +static efi_status_t efi_file_close(void *handle) +{ + efi_file_handle_t *fh = handle; + + return fh->close(handle); +} + +static efi_status_t +efi_file_read(void *handle, unsigned long *size, void *addr) +{ + efi_file_handle_t *fh = handle; + + return fh->read(handle, size, addr); +} + + +static efi_status_t +efi_file_size(efi_system_table_t *sys_table_arg, void *__fh, + efi_char16_t *filename_16, void **handle, u64 *file_sz) +{ + efi_file_handle_t *h, *fh = __fh; + efi_file_info_t *info; + efi_status_t status; + efi_guid_t info_guid = EFI_FILE_INFO_ID; + unsigned long info_sz; + + status = fh->open(fh, &h, filename_16, EFI_FILE_MODE_READ, (u64)0); + if (status != EFI_SUCCESS) { + efi_printk(sys_table_arg, "Failed to open file: "); + efi_char16_printk(sys_table_arg, filename_16); + efi_printk(sys_table_arg, "\n"); + return status; + } + + *handle = h; + + info_sz = 0; + status = h->get_info(h, &info_guid, &info_sz, NULL); + if (status != EFI_BUFFER_TOO_SMALL) { + efi_printk(sys_table_arg, "Failed to get file info size\n"); + return status; + } + +grow: + status = sys_table_arg->boottime->allocate_pool(EFI_LOADER_DATA, + info_sz, (void **)&info); + if (status != EFI_SUCCESS) { + efi_printk(sys_table_arg, "Failed to alloc mem for file info\n"); + return status; + } + + status = h->get_info(h, &info_guid, &info_sz, + info); + if (status == EFI_BUFFER_TOO_SMALL) { + sys_table_arg->boottime->free_pool(info); + goto grow; + } + + *file_sz = info->file_size; + sys_table_arg->boottime->free_pool(info); + + if (status != EFI_SUCCESS) + efi_printk(sys_table_arg, "Failed to get initrd info\n"); + + return status; +} + +/* + * This function handles the architcture specific differences between arm and + * arm64 regarding where the kernel image must be loaded and any memory that + * must be reserved. On failure it is required to free all + * all allocations it has made. + */ +static efi_status_t handle_kernel_image(efi_system_table_t *sys_table, + unsigned long *image_addr, + unsigned long *image_size, + unsigned long *reserve_addr, + unsigned long *reserve_size, + unsigned long dram_base, + efi_loaded_image_t *image); +static unsigned long __init get_dram_base(efi_system_table_t *sys_table_arg) +{ + efi_status_t status; + unsigned long map_size; + unsigned long membase = EFI_ERROR; + struct efi_memory_map map; + efi_memory_desc_t *md; + + status = efi_get_memory_map(sys_table_arg, (efi_memory_desc_t **)&map.map, + &map_size, &map.desc_size, NULL, NULL); + if (status != EFI_SUCCESS) + return membase; + + map.map_end = map.map + map_size; + + for_each_efi_memory_desc(&map, md) + if (md->attribute & EFI_MEMORY_WB) + if (membase > md->phys_addr) + membase = md->phys_addr; + + efi_call_early(free_pool, map.map); + + return membase; +} + +/* + * EFI entry point for the arm/arm64 EFI stubs. This is the entrypoint + * that is described in the PE/COFF header. Most of the code is the same + * for both archictectures, with the arch-specific code provided in the + * handle_kernel_image() function. + */ +unsigned long __init efi_entry(void *handle, efi_system_table_t *sys_table, + unsigned long *image_addr) +{ + efi_loaded_image_t *image; + efi_status_t status; + unsigned long image_size = 0; + unsigned long dram_base; + /* addr/point and size pairs for memory management*/ + unsigned long initrd_addr; + u64 initrd_size = 0; + unsigned long fdt_addr = 0; /* Original DTB */ + u64 fdt_size = 0; /* We don't get size from configuration table */ + char *cmdline_ptr = NULL; + int cmdline_size = 0; + unsigned long new_fdt_addr; + efi_guid_t loaded_image_proto = LOADED_IMAGE_PROTOCOL_GUID; + unsigned long reserve_addr = 0; + unsigned long reserve_size = 0; + + /* Check if we were booted by the EFI firmware */ + if (sys_table->hdr.signature != EFI_SYSTEM_TABLE_SIGNATURE) + goto fail; + + pr_efi(sys_table, "Booting Linux Kernel...\n"); + + /* + * Get a handle to the loaded image protocol. This is used to get + * information about the running image, such as size and the command + * line. + */ + status = sys_table->boottime->handle_protocol(handle, + &loaded_image_proto, (void *)&image); + if (status != EFI_SUCCESS) { + pr_efi_err(sys_table, "Failed to get loaded image protocol\n"); + goto fail; + } + + dram_base = get_dram_base(sys_table); + if (dram_base == EFI_ERROR) { + pr_efi_err(sys_table, "Failed to find DRAM base\n"); + goto fail; + } + status = handle_kernel_image(sys_table, image_addr, &image_size, + &reserve_addr, + &reserve_size, + dram_base, image); + if (status != EFI_SUCCESS) { + pr_efi_err(sys_table, "Failed to relocate kernel\n"); + goto fail; + } + + /* + * Get the command line from EFI, using the LOADED_IMAGE + * protocol. We are going to copy the command line into the + * device tree, so this can be allocated anywhere. + */ + cmdline_ptr = efi_convert_cmdline_to_ascii(sys_table, image, &cmdline_size); + if (!cmdline_ptr) { + pr_efi_err(sys_table, "getting command line via LOADED_IMAGE_PROTOCOL\n"); + goto fail_free_image; + } + + /* + * Unauthenticated device tree data is a security hazard, so + * ignore 'dtb=' unless UEFI Secure Boot is disabled. + */ + if (efi_secureboot_enabled(sys_table)) { + pr_efi(sys_table, "UEFI Secure Boot is enabled.\n"); + } else { + status = handle_cmdline_files(sys_table, image, cmdline_ptr, + "dtb=", + ~0UL, (unsigned long *)&fdt_addr, + (unsigned long *)&fdt_size); + + if (status != EFI_SUCCESS) { + pr_efi_err(sys_table, "Failed to load device tree!\n"); + goto fail_free_cmdline; + } + } + if (!fdt_addr) + /* Look for a device tree configuration table entry. */ + fdt_addr = (uintptr_t)get_fdt(sys_table); + + status = handle_cmdline_files(sys_table, image, cmdline_ptr, + "initrd=", dram_base + SZ_512M, + (unsigned long *)&initrd_addr, + (unsigned long *)&initrd_size); + if (status != EFI_SUCCESS) + pr_efi_err(sys_table, "Failed initrd from command line!\n"); + + new_fdt_addr = fdt_addr; + status = allocate_new_fdt_and_exit_boot(sys_table, handle, + &new_fdt_addr, dram_base + MAX_FDT_OFFSET, + initrd_addr, initrd_size, cmdline_ptr, + fdt_addr, fdt_size); + + /* + * If all went well, we need to return the FDT address to the + * calling function so it can be passed to kernel as part of + * the kernel boot protocol. + */ + if (status == EFI_SUCCESS) + return new_fdt_addr; + + pr_efi_err(sys_table, "Failed to update FDT and exit boot services\n"); + + efi_free(sys_table, initrd_size, initrd_addr); + efi_free(sys_table, fdt_size, fdt_addr); + +fail_free_cmdline: + efi_free(sys_table, cmdline_size, (unsigned long)cmdline_ptr); + +fail_free_image: + efi_free(sys_table, image_size, *image_addr); + efi_free(sys_table, reserve_size, reserve_addr); +fail: + return EFI_ERROR; +} --- linux-3.13.0.orig/drivers/firmware/efi/efi-pstore.c +++ linux-3.13.0/drivers/firmware/efi/efi-pstore.c @@ -40,7 +40,7 @@ static inline u64 generic_id(unsigned long timestamp, unsigned int part, int count) { - return (timestamp * 100 + part) * 1000 + count; + return ((u64) timestamp * 100 + part) * 1000 + count; } static int efi_pstore_read_func(struct efivar_entry *entry, void *data) --- linux-3.13.0.orig/drivers/firmware/efi/efi-stub-helper.c +++ linux-3.13.0/drivers/firmware/efi/efi-stub-helper.c @@ -11,6 +11,10 @@ */ #define EFI_READ_CHUNK_SIZE (1024 * 1024) +/* error code which can't be mistaken for valid address */ +#define EFI_ERROR (~0UL) + + struct file_info { efi_file_handle_t *handle; u64 size; @@ -45,6 +49,9 @@ } } +#define pr_efi(sys_table, msg) efi_printk(sys_table, "EFI stub: "msg) +#define pr_efi_err(sys_table, msg) efi_printk(sys_table, "EFI stub: ERROR: "msg) + static efi_status_t efi_get_memory_map(efi_system_table_t *sys_table_arg, efi_memory_desc_t **map, @@ -133,12 +140,12 @@ start = desc->phys_addr; end = start + desc->num_pages * (1UL << EFI_PAGE_SHIFT); - if ((start + size) > end || (start + size) > max) - continue; - - if (end - size > max) + if (end > max) end = max; + if ((start + size) > end) + continue; + if (round_down(end - size, align) < start) continue; --- linux-3.13.0.orig/drivers/firmware/efi/efi.c +++ linux-3.13.0/drivers/firmware/efi/efi.c @@ -20,6 +20,8 @@ #include #include #include +#include +#include #include struct efi __read_mostly efi = { @@ -272,3 +274,80 @@ early_iounmap(config_tables, efi.systab->nr_tables * sz); return 0; } + +#ifdef CONFIG_EFI_PARAMS_FROM_FDT + +#define UEFI_PARAM(name, prop, field) \ + { \ + { name }, \ + { prop }, \ + offsetof(struct efi_fdt_params, field), \ + FIELD_SIZEOF(struct efi_fdt_params, field) \ + } + +static __initdata struct { + const char name[32]; + const char propname[32]; + int offset; + int size; +} dt_params[] = { + UEFI_PARAM("System Table", "linux,uefi-system-table", system_table), + UEFI_PARAM("MemMap Address", "linux,uefi-mmap-start", mmap), + UEFI_PARAM("MemMap Size", "linux,uefi-mmap-size", mmap_size), + UEFI_PARAM("MemMap Desc. Size", "linux,uefi-mmap-desc-size", desc_size), + UEFI_PARAM("MemMap Desc. Version", "linux,uefi-mmap-desc-ver", desc_ver) +}; + +struct param_info { + int verbose; + void *params; +}; + +static int __init fdt_find_uefi_params(unsigned long node, const char *uname, + int depth, void *data) +{ + struct param_info *info = data; + void *prop, *dest; + unsigned long len; + u64 val; + int i; + + if (depth != 1 || + (strcmp(uname, "chosen") != 0 && strcmp(uname, "chosen@0") != 0)) + return 0; + + pr_info("Getting parameters from FDT:\n"); + + for (i = 0; i < ARRAY_SIZE(dt_params); i++) { + prop = of_get_flat_dt_prop(node, dt_params[i].propname, &len); + if (!prop) { + pr_err("Can't find %s in device tree!\n", + dt_params[i].name); + return 0; + } + dest = info->params + dt_params[i].offset; + + val = of_read_number(prop, len / sizeof(u32)); + + if (dt_params[i].size == sizeof(u32)) + *(u32 *)dest = val; + else + *(u64 *)dest = val; + + if (info->verbose) + pr_info(" %s: 0x%0*llx\n", dt_params[i].name, + dt_params[i].size * 2, val); + } + return 1; +} + +int __init efi_get_fdt_params(struct efi_fdt_params *params, int verbose) +{ + struct param_info info; + + info.verbose = verbose; + info.params = params; + + return of_scan_flat_dt(fdt_find_uefi_params, &info); +} +#endif /* CONFIG_EFI_PARAMS_FROM_FDT */ --- linux-3.13.0.orig/drivers/firmware/efi/fdt.c +++ linux-3.13.0/drivers/firmware/efi/fdt.c @@ -0,0 +1,285 @@ +/* + * FDT related Helper functions used by the EFI stub on multiple + * architectures. This should be #included by the EFI stub + * implementation files. + * + * Copyright 2013 Linaro Limited; author Roy Franz + * + * This file is part of the Linux kernel, and is made available + * under the terms of the GNU General Public License version 2. + * + */ + +static efi_status_t update_fdt(efi_system_table_t *sys_table, void *orig_fdt, + unsigned long orig_fdt_size, + void *fdt, int new_fdt_size, char *cmdline_ptr, + u64 initrd_addr, u64 initrd_size, + efi_memory_desc_t *memory_map, + unsigned long map_size, unsigned long desc_size, + u32 desc_ver) +{ + int node, prev; + int status; + u32 fdt_val32; + u64 fdt_val64; + + /* + * Copy definition of linux_banner here. Since this code is + * built as part of the decompressor for ARM v7, pulling + * in version.c where linux_banner is defined for the + * kernel brings other kernel dependencies with it. + */ + const char linux_banner[] = + "Linux version " UTS_RELEASE " (" LINUX_COMPILE_BY "@" + LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") " UTS_VERSION "\n"; + + /* Do some checks on provided FDT, if it exists*/ + if (orig_fdt) { + if (fdt_check_header(orig_fdt)) { + pr_efi_err(sys_table, "Device Tree header not valid!\n"); + return EFI_LOAD_ERROR; + } + /* + * We don't get the size of the FDT if we get if from a + * configuration table. + */ + if (orig_fdt_size && fdt_totalsize(orig_fdt) > orig_fdt_size) { + pr_efi_err(sys_table, "Truncated device tree! foo!\n"); + return EFI_LOAD_ERROR; + } + } + + if (orig_fdt) + status = fdt_open_into(orig_fdt, fdt, new_fdt_size); + else + status = fdt_create_empty_tree(fdt, new_fdt_size); + + if (status != 0) + goto fdt_set_fail; + + /* + * Delete any memory nodes present. We must delete nodes which + * early_init_dt_scan_memory may try to use. + */ + prev = 0; + for (;;) { + const char *type, *name; + int len; + + node = fdt_next_node(fdt, prev, NULL); + if (node < 0) + break; + + type = fdt_getprop(fdt, node, "device_type", &len); + if (type && strncmp(type, "memory", len) == 0) { + fdt_del_node(fdt, node); + continue; + } + + prev = node; + } + + node = fdt_subnode_offset(fdt, 0, "chosen"); + if (node < 0) { + node = fdt_add_subnode(fdt, 0, "chosen"); + if (node < 0) { + status = node; /* node is error code when negative */ + goto fdt_set_fail; + } + } + + if ((cmdline_ptr != NULL) && (strlen(cmdline_ptr) > 0)) { + status = fdt_setprop(fdt, node, "bootargs", cmdline_ptr, + strlen(cmdline_ptr) + 1); + if (status) + goto fdt_set_fail; + } + + /* Set initrd address/end in device tree, if present */ + if (initrd_size != 0) { + u64 initrd_image_end; + u64 initrd_image_start = cpu_to_fdt64(initrd_addr); + + status = fdt_setprop(fdt, node, "linux,initrd-start", + &initrd_image_start, sizeof(u64)); + if (status) + goto fdt_set_fail; + initrd_image_end = cpu_to_fdt64(initrd_addr + initrd_size); + status = fdt_setprop(fdt, node, "linux,initrd-end", + &initrd_image_end, sizeof(u64)); + if (status) + goto fdt_set_fail; + } + + /* Add FDT entries for EFI runtime services in chosen node. */ + node = fdt_subnode_offset(fdt, 0, "chosen"); + fdt_val64 = cpu_to_fdt64((u64)(unsigned long)sys_table); + status = fdt_setprop(fdt, node, "linux,uefi-system-table", + &fdt_val64, sizeof(fdt_val64)); + if (status) + goto fdt_set_fail; + + fdt_val64 = cpu_to_fdt64((u64)(unsigned long)memory_map); + status = fdt_setprop(fdt, node, "linux,uefi-mmap-start", + &fdt_val64, sizeof(fdt_val64)); + if (status) + goto fdt_set_fail; + + fdt_val32 = cpu_to_fdt32(map_size); + status = fdt_setprop(fdt, node, "linux,uefi-mmap-size", + &fdt_val32, sizeof(fdt_val32)); + if (status) + goto fdt_set_fail; + + fdt_val32 = cpu_to_fdt32(desc_size); + status = fdt_setprop(fdt, node, "linux,uefi-mmap-desc-size", + &fdt_val32, sizeof(fdt_val32)); + if (status) + goto fdt_set_fail; + + fdt_val32 = cpu_to_fdt32(desc_ver); + status = fdt_setprop(fdt, node, "linux,uefi-mmap-desc-ver", + &fdt_val32, sizeof(fdt_val32)); + if (status) + goto fdt_set_fail; + + /* + * Add kernel version banner so stub/kernel match can be + * verified. + */ + status = fdt_setprop_string(fdt, node, "linux,uefi-stub-kern-ver", + linux_banner); + if (status) + goto fdt_set_fail; + + return EFI_SUCCESS; + +fdt_set_fail: + if (status == -FDT_ERR_NOSPACE) + return EFI_BUFFER_TOO_SMALL; + + return EFI_LOAD_ERROR; +} + +#ifndef EFI_FDT_ALIGN +#define EFI_FDT_ALIGN EFI_PAGE_SIZE +#endif + +/* + * Allocate memory for a new FDT, then add EFI, commandline, and + * initrd related fields to the FDT. This routine increases the + * FDT allocation size until the allocated memory is large + * enough. EFI allocations are in EFI_PAGE_SIZE granules, + * which are fixed at 4K bytes, so in most cases the first + * allocation should succeed. + * EFI boot services are exited at the end of this function. + * There must be no allocations between the get_memory_map() + * call and the exit_boot_services() call, so the exiting of + * boot services is very tightly tied to the creation of the FDT + * with the final memory map in it. + */ + +efi_status_t allocate_new_fdt_and_exit_boot(efi_system_table_t *sys_table, + void *handle, + unsigned long *new_fdt_addr, + unsigned long max_addr, + u64 initrd_addr, u64 initrd_size, + char *cmdline_ptr, + unsigned long fdt_addr, + unsigned long fdt_size) +{ + unsigned long map_size, desc_size; + u32 desc_ver; + unsigned long mmap_key; + efi_memory_desc_t *memory_map; + unsigned long new_fdt_size; + efi_status_t status; + + /* + * Estimate size of new FDT, and allocate memory for it. We + * will allocate a bigger buffer if this ends up being too + * small, so a rough guess is OK here. + */ + new_fdt_size = fdt_size + EFI_PAGE_SIZE; + while (1) { + status = efi_high_alloc(sys_table, new_fdt_size, EFI_FDT_ALIGN, + new_fdt_addr, max_addr); + if (status != EFI_SUCCESS) { + pr_efi_err(sys_table, "Unable to allocate memory for new device tree.\n"); + goto fail; + } + + /* + * Now that we have done our final memory allocation (and free) + * we can get the memory map key needed for + * exit_boot_services(). + */ + status = efi_get_memory_map(sys_table, &memory_map, &map_size, + &desc_size, &desc_ver, &mmap_key); + if (status != EFI_SUCCESS) + goto fail_free_new_fdt; + + status = update_fdt(sys_table, + (void *)fdt_addr, fdt_size, + (void *)*new_fdt_addr, new_fdt_size, + cmdline_ptr, initrd_addr, initrd_size, + memory_map, map_size, desc_size, desc_ver); + + /* Succeeding the first time is the expected case. */ + if (status == EFI_SUCCESS) + break; + + if (status == EFI_BUFFER_TOO_SMALL) { + /* + * We need to allocate more space for the new + * device tree, so free existing buffer that is + * too small. Also free memory map, as we will need + * to get new one that reflects the free/alloc we do + * on the device tree buffer. + */ + efi_free(sys_table, new_fdt_size, *new_fdt_addr); + sys_table->boottime->free_pool(memory_map); + new_fdt_size += EFI_PAGE_SIZE; + } else { + pr_efi_err(sys_table, "Unable to constuct new device tree.\n"); + goto fail_free_mmap; + } + } + + /* Now we are ready to exit_boot_services.*/ + status = sys_table->boottime->exit_boot_services(handle, mmap_key); + + + if (status == EFI_SUCCESS) + return status; + + pr_efi_err(sys_table, "Exit boot services failed.\n"); + +fail_free_mmap: + sys_table->boottime->free_pool(memory_map); + +fail_free_new_fdt: + efi_free(sys_table, new_fdt_size, *new_fdt_addr); + +fail: + return EFI_LOAD_ERROR; +} + +static void *get_fdt(efi_system_table_t *sys_table) +{ + efi_guid_t fdt_guid = DEVICE_TREE_GUID; + efi_config_table_t *tables; + void *fdt; + int i; + + tables = (efi_config_table_t *) sys_table->tables; + fdt = NULL; + + for (i = 0; i < sys_table->nr_tables; i++) + if (efi_guidcmp(tables[i].guid, fdt_guid) == 0) { + fdt = (void *) tables[i].table; + break; + } + + return fdt; +} --- linux-3.13.0.orig/drivers/firmware/efi/vars.c +++ linux-3.13.0/drivers/firmware/efi/vars.c @@ -481,7 +481,7 @@ */ static void efivar_entry_list_del_unlock(struct efivar_entry *entry) { - WARN_ON(!spin_is_locked(&__efivars->lock)); + lockdep_assert_held(&__efivars->lock); list_del(&entry->list); spin_unlock_irq(&__efivars->lock); @@ -507,7 +507,7 @@ const struct efivar_operations *ops = __efivars->ops; efi_status_t status; - WARN_ON(!spin_is_locked(&__efivars->lock)); + lockdep_assert_held(&__efivars->lock); status = ops->set_variable(entry->var.VariableName, &entry->var.VendorGuid, @@ -667,7 +667,7 @@ int strsize1, strsize2; bool found = false; - WARN_ON(!spin_is_locked(&__efivars->lock)); + lockdep_assert_held(&__efivars->lock); list_for_each_entry_safe(entry, n, head, list) { strsize1 = ucs2_strsize(name, 1024); @@ -739,7 +739,7 @@ const struct efivar_operations *ops = __efivars->ops; efi_status_t status; - WARN_ON(!spin_is_locked(&__efivars->lock)); + lockdep_assert_held(&__efivars->lock); status = ops->get_variable(entry->var.VariableName, &entry->var.VendorGuid, --- linux-3.13.0.orig/drivers/gpio/Kconfig +++ linux-3.13.0/drivers/gpio/Kconfig @@ -121,6 +121,15 @@ help Say yes here to support basic platform_device memory-mapped GPIO controllers. +config GPIO_DWAPB + tristate "Synopsys DesignWare APB GPIO driver" + select GPIO_GENERIC + select GENERIC_IRQ_CHIP + depends on OF_GPIO + help + Say Y or M here to build support for the Synopsys DesignWare APB + GPIO block. + config GPIO_IT8761E tristate "IT8761E GPIO support" depends on X86 # unconditional access to IO space. --- linux-3.13.0.orig/drivers/gpio/Makefile +++ linux-3.13.0/drivers/gpio/Makefile @@ -23,6 +23,7 @@ obj-$(CONFIG_GPIO_DA9052) += gpio-da9052.o obj-$(CONFIG_GPIO_DA9055) += gpio-da9055.o obj-$(CONFIG_ARCH_DAVINCI) += gpio-davinci.o +obj-$(CONFIG_GPIO_DWAPB) += gpio-dwapb.o obj-$(CONFIG_GPIO_EM) += gpio-em.o obj-$(CONFIG_GPIO_EP93XX) += gpio-ep93xx.o obj-$(CONFIG_GPIO_F7188X) += gpio-f7188x.o --- linux-3.13.0.orig/drivers/gpio/gpio-dwapb.c +++ linux-3.13.0/drivers/gpio/gpio-dwapb.c @@ -0,0 +1,442 @@ +/* + * Copyright (c) 2011 Jamie Iles + * + * 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. + * + * All enquiries to support@picochip.com + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define GPIO_SWPORTA_DR 0x00 +#define GPIO_SWPORTA_DDR 0x04 +#define GPIO_SWPORTB_DR 0x0c +#define GPIO_SWPORTB_DDR 0x10 +#define GPIO_SWPORTC_DR 0x18 +#define GPIO_SWPORTC_DDR 0x1c +#define GPIO_SWPORTD_DR 0x24 +#define GPIO_SWPORTD_DDR 0x28 +#define GPIO_INTEN 0x30 +#define GPIO_INTMASK 0x34 +#define GPIO_INTTYPE_LEVEL 0x38 +#define GPIO_INT_POLARITY 0x3c +#define GPIO_INTSTATUS 0x40 +#define GPIO_PORTA_EOI 0x4c +#define GPIO_EXT_PORTA 0x50 +#define GPIO_EXT_PORTB 0x54 +#define GPIO_EXT_PORTC 0x58 +#define GPIO_EXT_PORTD 0x5c + +#define DWAPB_MAX_PORTS 4 +#define GPIO_EXT_PORT_SIZE (GPIO_EXT_PORTB - GPIO_EXT_PORTA) +#define GPIO_SWPORT_DR_SIZE (GPIO_SWPORTB_DR - GPIO_SWPORTA_DR) +#define GPIO_SWPORT_DDR_SIZE (GPIO_SWPORTB_DDR - GPIO_SWPORTA_DDR) + +struct dwapb_gpio; + +struct dwapb_gpio_port { + struct bgpio_chip bgc; + bool is_registered; + struct dwapb_gpio *gpio; +}; + +struct dwapb_gpio { + struct device *dev; + void __iomem *regs; + struct dwapb_gpio_port *ports; + unsigned int nr_ports; + struct irq_domain *domain; +}; + +static int dwapb_gpio_to_irq(struct gpio_chip *gc, unsigned offset) +{ + struct bgpio_chip *bgc = to_bgpio_chip(gc); + struct dwapb_gpio_port *port = container_of(bgc, struct + dwapb_gpio_port, bgc); + struct dwapb_gpio *gpio = port->gpio; + + return irq_find_mapping(gpio->domain, offset); +} + +static void dwapb_toggle_trigger(struct dwapb_gpio *gpio, unsigned int offs) +{ + u32 v = readl(gpio->regs + GPIO_INT_POLARITY); + + if (gpio_get_value(gpio->ports[0].bgc.gc.base + offs)) + v &= ~BIT(offs); + else + v |= BIT(offs); + + writel(v, gpio->regs + GPIO_INT_POLARITY); +} + +static void dwapb_irq_handler(u32 irq, struct irq_desc *desc) +{ + struct dwapb_gpio *gpio = irq_get_handler_data(irq); + struct irq_chip *chip = irq_desc_get_chip(desc); + u32 irq_status = readl_relaxed(gpio->regs + GPIO_INTSTATUS); + + while (irq_status) { + int hwirq = fls(irq_status) - 1; + int gpio_irq = irq_find_mapping(gpio->domain, hwirq); + + generic_handle_irq(gpio_irq); + irq_status &= ~BIT(hwirq); + + if ((irq_get_trigger_type(gpio_irq) & IRQ_TYPE_SENSE_MASK) + == IRQ_TYPE_EDGE_BOTH) + dwapb_toggle_trigger(gpio, hwirq); + } + + if (chip->irq_eoi) + chip->irq_eoi(irq_desc_get_irq_data(desc)); +} + +static void dwapb_irq_enable(struct irq_data *d) +{ + struct irq_chip_generic *igc = irq_data_get_irq_chip_data(d); + struct dwapb_gpio *gpio = igc->private; + struct bgpio_chip *bgc = &gpio->ports[0].bgc; + unsigned long flags; + u32 val; + + spin_lock_irqsave(&bgc->lock, flags); + val = readl(gpio->regs + GPIO_INTEN); + val |= BIT(d->hwirq); + writel(val, gpio->regs + GPIO_INTEN); + spin_unlock_irqrestore(&bgc->lock, flags); +} + +static void dwapb_irq_disable(struct irq_data *d) +{ + struct irq_chip_generic *igc = irq_data_get_irq_chip_data(d); + struct dwapb_gpio *gpio = igc->private; + struct bgpio_chip *bgc = &gpio->ports[0].bgc; + unsigned long flags; + u32 val; + + spin_lock_irqsave(&bgc->lock, flags); + val = readl(gpio->regs + GPIO_INTEN); + val &= ~BIT(d->hwirq); + writel(val, gpio->regs + GPIO_INTEN); + spin_unlock_irqrestore(&bgc->lock, flags); +} + +static unsigned int dwapb_irq_startup(struct irq_data *d) +{ + struct irq_chip_generic *igc = irq_data_get_irq_chip_data(d); + struct dwapb_gpio *gpio = igc->private; + struct bgpio_chip *bgc = &gpio->ports[0].bgc; + + if (gpio_lock_as_irq(&bgc->gc, irqd_to_hwirq(d))) + dev_err(gpio->dev, "unable to lock HW IRQ %lu for IRQ\n", + irqd_to_hwirq(d)); + dwapb_irq_enable(d); + return 0; +} + +static void dwapb_irq_shutdown(struct irq_data *d) +{ + struct irq_chip_generic *igc = irq_data_get_irq_chip_data(d); + struct dwapb_gpio *gpio = igc->private; + struct bgpio_chip *bgc = &gpio->ports[0].bgc; + + dwapb_irq_disable(d); + gpio_unlock_as_irq(&bgc->gc, irqd_to_hwirq(d)); +} + +static int dwapb_irq_set_type(struct irq_data *d, u32 type) +{ + struct irq_chip_generic *igc = irq_data_get_irq_chip_data(d); + struct dwapb_gpio *gpio = igc->private; + struct bgpio_chip *bgc = &gpio->ports[0].bgc; + int bit = d->hwirq; + unsigned long level, polarity, flags; + + if (type & ~(IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING | + IRQ_TYPE_LEVEL_HIGH | IRQ_TYPE_LEVEL_LOW)) + return -EINVAL; + + spin_lock_irqsave(&bgc->lock, flags); + level = readl(gpio->regs + GPIO_INTTYPE_LEVEL); + polarity = readl(gpio->regs + GPIO_INT_POLARITY); + + switch (type) { + case IRQ_TYPE_EDGE_BOTH: + level |= BIT(bit); + dwapb_toggle_trigger(gpio, bit); + break; + case IRQ_TYPE_EDGE_RISING: + level |= BIT(bit); + polarity |= BIT(bit); + break; + case IRQ_TYPE_EDGE_FALLING: + level |= BIT(bit); + polarity &= ~BIT(bit); + break; + case IRQ_TYPE_LEVEL_HIGH: + level &= ~BIT(bit); + polarity |= BIT(bit); + break; + case IRQ_TYPE_LEVEL_LOW: + level &= ~BIT(bit); + polarity &= ~BIT(bit); + break; + } + + irq_setup_alt_chip(d, type); + + writel(level, gpio->regs + GPIO_INTTYPE_LEVEL); + writel(polarity, gpio->regs + GPIO_INT_POLARITY); + spin_unlock_irqrestore(&bgc->lock, flags); + + return 0; +} + +static void dwapb_configure_irqs(struct dwapb_gpio *gpio, + struct dwapb_gpio_port *port) +{ + struct gpio_chip *gc = &port->bgc.gc; + struct device_node *node = gc->of_node; + struct irq_chip_generic *irq_gc; + unsigned int hwirq, ngpio = gc->ngpio; + struct irq_chip_type *ct; + int err, irq, i; + + irq = irq_of_parse_and_map(node, 0); + if (!irq) { + dev_warn(gpio->dev, "no irq for bank %s\n", + port->bgc.gc.of_node->full_name); + return; + } + + gpio->domain = irq_domain_add_linear(node, ngpio, + &irq_generic_chip_ops, gpio); + if (!gpio->domain) + return; + + err = irq_alloc_domain_generic_chips(gpio->domain, ngpio, 2, + "gpio-dwapb", handle_level_irq, + IRQ_NOREQUEST, 0, + IRQ_GC_INIT_NESTED_LOCK); + if (err) { + dev_info(gpio->dev, "irq_alloc_domain_generic_chips failed\n"); + irq_domain_remove(gpio->domain); + gpio->domain = NULL; + return; + } + + irq_gc = irq_get_domain_generic_chip(gpio->domain, 0); + if (!irq_gc) { + irq_domain_remove(gpio->domain); + gpio->domain = NULL; + return; + } + + irq_gc->reg_base = gpio->regs; + irq_gc->private = gpio; + + for (i = 0; i < 2; i++) { + ct = &irq_gc->chip_types[i]; + ct->chip.irq_ack = irq_gc_ack_set_bit; + ct->chip.irq_mask = irq_gc_mask_set_bit; + ct->chip.irq_unmask = irq_gc_mask_clr_bit; + ct->chip.irq_set_type = dwapb_irq_set_type; + ct->chip.irq_enable = dwapb_irq_enable; + ct->chip.irq_disable = dwapb_irq_disable; + ct->regs.ack = GPIO_PORTA_EOI; + ct->regs.mask = GPIO_INTMASK; + ct->type = IRQ_TYPE_LEVEL_MASK; + } + + irq_gc->chip_types[0].type = IRQ_TYPE_LEVEL_MASK; + irq_gc->chip_types[1].type = IRQ_TYPE_EDGE_BOTH; + irq_gc->chip_types[1].handler = handle_edge_irq; + + irq_set_chained_handler(irq, dwapb_irq_handler); + irq_set_handler_data(irq, gpio); + + for (hwirq = 0 ; hwirq < ngpio ; hwirq++) + irq_create_mapping(gpio->domain, hwirq); + + port->bgc.gc.to_irq = dwapb_gpio_to_irq; +} + +static void dwapb_irq_teardown(struct dwapb_gpio *gpio) +{ + struct dwapb_gpio_port *port = &gpio->ports[0]; + struct gpio_chip *gc = &port->bgc.gc; + unsigned int ngpio = gc->ngpio; + irq_hw_number_t hwirq; + + if (!gpio->domain) + return; + + for (hwirq = 0 ; hwirq < ngpio ; hwirq++) + irq_dispose_mapping(irq_find_mapping(gpio->domain, hwirq)); + + irq_domain_remove(gpio->domain); + gpio->domain = NULL; +} + +static int dwapb_gpio_add_port(struct dwapb_gpio *gpio, + struct device_node *port_np, + unsigned int offs) +{ + struct dwapb_gpio_port *port; + u32 port_idx, ngpio; + void __iomem *dat, *set, *dirout; + int err; + + if (of_property_read_u32(port_np, "reg", &port_idx) || + port_idx >= DWAPB_MAX_PORTS) { + dev_err(gpio->dev, "missing/invalid port index for %s\n", + port_np->full_name); + return -EINVAL; + } + + port = &gpio->ports[offs]; + port->gpio = gpio; + + if (of_property_read_u32(port_np, "snps,nr-gpios", &ngpio)) { + dev_info(gpio->dev, "failed to get number of gpios for %s\n", + port_np->full_name); + ngpio = 32; + } + + dat = gpio->regs + GPIO_EXT_PORTA + (port_idx * GPIO_EXT_PORT_SIZE); + set = gpio->regs + GPIO_SWPORTA_DR + (port_idx * GPIO_SWPORT_DR_SIZE); + dirout = gpio->regs + GPIO_SWPORTA_DDR + + (port_idx * GPIO_SWPORT_DDR_SIZE); + + err = bgpio_init(&port->bgc, gpio->dev, 4, dat, set, NULL, dirout, + NULL, false); + if (err) { + dev_err(gpio->dev, "failed to init gpio chip for %s\n", + port_np->full_name); + return err; + } + + port->bgc.gc.ngpio = ngpio; + port->bgc.gc.of_node = port_np; + + /* + * Only port A can provide interrupts in all configurations of the IP. + */ + if (port_idx == 0 && + of_property_read_bool(port_np, "interrupt-controller")) + dwapb_configure_irqs(gpio, port); + + err = gpiochip_add(&port->bgc.gc); + if (err) + dev_err(gpio->dev, "failed to register gpiochip for %s\n", + port_np->full_name); + else + port->is_registered = true; + + return err; +} + +static void dwapb_gpio_unregister(struct dwapb_gpio *gpio) +{ + unsigned int m; + + for (m = 0; m < gpio->nr_ports; ++m) + if (gpio->ports[m].is_registered) + WARN_ON(gpiochip_remove(&gpio->ports[m].bgc.gc)); +} + +static int dwapb_gpio_probe(struct platform_device *pdev) +{ + struct resource *res; + struct dwapb_gpio *gpio; + struct device_node *np; + int err; + unsigned int offs = 0; + + gpio = devm_kzalloc(&pdev->dev, sizeof(*gpio), GFP_KERNEL); + if (!gpio) + return -ENOMEM; + gpio->dev = &pdev->dev; + + gpio->nr_ports = of_get_child_count(pdev->dev.of_node); + if (!gpio->nr_ports) { + err = -EINVAL; + goto out_err; + } + gpio->ports = devm_kzalloc(&pdev->dev, gpio->nr_ports * + sizeof(*gpio->ports), GFP_KERNEL); + if (!gpio->ports) { + err = -ENOMEM; + goto out_err; + } + + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + gpio->regs = devm_ioremap_resource(&pdev->dev, res); + if (IS_ERR(gpio->regs)) { + err = PTR_ERR(gpio->regs); + goto out_err; + } + + for_each_child_of_node(pdev->dev.of_node, np) { + err = dwapb_gpio_add_port(gpio, np, offs++); + if (err) + goto out_unregister; + } + platform_set_drvdata(pdev, gpio); + + return 0; + +out_unregister: + dwapb_gpio_unregister(gpio); + dwapb_irq_teardown(gpio); + +out_err: + return err; +} + +static int dwapb_gpio_remove(struct platform_device *pdev) +{ + struct dwapb_gpio *gpio = platform_get_drvdata(pdev); + + dwapb_gpio_unregister(gpio); + dwapb_irq_teardown(gpio); + + return 0; +} + +static const struct of_device_id dwapb_of_match[] = { + { .compatible = "snps,dw-apb-gpio" }, + { /* Sentinel */ } +}; +MODULE_DEVICE_TABLE(of, dwapb_of_match); + +static struct platform_driver dwapb_gpio_driver = { + .driver = { + .name = "gpio-dwapb", + .owner = THIS_MODULE, + .of_match_table = of_match_ptr(dwapb_of_match), + }, + .probe = dwapb_gpio_probe, + .remove = dwapb_gpio_remove, +}; + +module_platform_driver(dwapb_gpio_driver); + +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Jamie Iles"); +MODULE_DESCRIPTION("Synopsys DesignWare APB GPIO driver"); --- linux-3.13.0.orig/drivers/gpio/gpio-kempld.c +++ linux-3.13.0/drivers/gpio/gpio-kempld.c @@ -117,7 +117,7 @@ = container_of(chip, struct kempld_gpio_data, chip); struct kempld_device_data *pld = gpio->pld; - return kempld_gpio_get_bit(pld, KEMPLD_GPIO_DIR_NUM(offset), offset); + return !kempld_gpio_get_bit(pld, KEMPLD_GPIO_DIR_NUM(offset), offset); } static int kempld_gpio_pincount(struct kempld_device_data *pld) --- linux-3.13.0.orig/drivers/gpio/gpio-mcp23s08.c +++ linux-3.13.0/drivers/gpio/gpio-mcp23s08.c @@ -656,9 +656,11 @@ dev_err(&spi->dev, "invalid spi-present-mask\n"); return -ENODEV; } - - for (addr = 0; addr < ARRAY_SIZE(pdata->chip); addr++) + for (addr = 0; addr < ARRAY_SIZE(pdata->chip); addr++) { + if ((spi_present_mask & (1 << addr))) + chips++; pullups[addr] = 0; + } } else { type = spi_get_device_id(spi)->driver_data; pdata = dev_get_platdata(&spi->dev); @@ -681,12 +683,12 @@ pullups[addr] = pdata->chip[addr].pullups; } - if (!chips) - return -ENODEV; - base = pdata->base; } + if (!chips) + return -ENODEV; + data = kzalloc(sizeof *data + chips * sizeof(struct mcp23s08), GFP_KERNEL); if (!data) --- linux-3.13.0.orig/drivers/gpio/gpio-mvebu.c +++ linux-3.13.0/drivers/gpio/gpio-mvebu.c @@ -304,11 +304,13 @@ { struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d); struct mvebu_gpio_chip *mvchip = gc->private; + struct irq_chip_type *ct = irq_data_get_chip_type(d); u32 mask = 1 << (d->irq - gc->irq_base); irq_gc_lock(gc); - gc->mask_cache &= ~mask; - writel_relaxed(gc->mask_cache, mvebu_gpioreg_edge_mask(mvchip)); + ct->mask_cache_priv &= ~mask; + + writel_relaxed(ct->mask_cache_priv, mvebu_gpioreg_edge_mask(mvchip)); irq_gc_unlock(gc); } @@ -316,11 +318,13 @@ { struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d); struct mvebu_gpio_chip *mvchip = gc->private; + struct irq_chip_type *ct = irq_data_get_chip_type(d); + u32 mask = 1 << (d->irq - gc->irq_base); irq_gc_lock(gc); - gc->mask_cache |= mask; - writel_relaxed(gc->mask_cache, mvebu_gpioreg_edge_mask(mvchip)); + ct->mask_cache_priv |= mask; + writel_relaxed(ct->mask_cache_priv, mvebu_gpioreg_edge_mask(mvchip)); irq_gc_unlock(gc); } @@ -328,11 +332,13 @@ { struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d); struct mvebu_gpio_chip *mvchip = gc->private; + struct irq_chip_type *ct = irq_data_get_chip_type(d); + u32 mask = 1 << (d->irq - gc->irq_base); irq_gc_lock(gc); - gc->mask_cache &= ~mask; - writel_relaxed(gc->mask_cache, mvebu_gpioreg_level_mask(mvchip)); + ct->mask_cache_priv &= ~mask; + writel_relaxed(ct->mask_cache_priv, mvebu_gpioreg_level_mask(mvchip)); irq_gc_unlock(gc); } @@ -340,11 +346,13 @@ { struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d); struct mvebu_gpio_chip *mvchip = gc->private; + struct irq_chip_type *ct = irq_data_get_chip_type(d); + u32 mask = 1 << (d->irq - gc->irq_base); irq_gc_lock(gc); - gc->mask_cache |= mask; - writel_relaxed(gc->mask_cache, mvebu_gpioreg_level_mask(mvchip)); + ct->mask_cache_priv |= mask; + writel_relaxed(ct->mask_cache_priv, mvebu_gpioreg_level_mask(mvchip)); irq_gc_unlock(gc); } --- linux-3.13.0.orig/drivers/gpio/gpio-mxs.c +++ linux-3.13.0/drivers/gpio/gpio-mxs.c @@ -214,7 +214,8 @@ ct->regs.ack = PINCTRL_IRQSTAT(port) + MXS_CLR; ct->regs.mask = PINCTRL_IRQEN(port); - irq_setup_generic_chip(gc, IRQ_MSK(32), 0, IRQ_NOREQUEST, 0); + irq_setup_generic_chip(gc, IRQ_MSK(32), IRQ_GC_INIT_NESTED_LOCK, + IRQ_NOREQUEST, 0); } static int mxs_gpio_to_irq(struct gpio_chip *gc, unsigned offset) --- linux-3.13.0.orig/drivers/gpio/gpio-tps65912.c +++ linux-3.13.0/drivers/gpio/gpio-tps65912.c @@ -26,9 +26,12 @@ struct gpio_chip gpio_chip; }; +#define to_tgd(gc) container_of(gc, struct tps65912_gpio_data, gpio_chip) + static int tps65912_gpio_get(struct gpio_chip *gc, unsigned offset) { - struct tps65912 *tps65912 = container_of(gc, struct tps65912, gpio); + struct tps65912_gpio_data *tps65912_gpio = to_tgd(gc); + struct tps65912 *tps65912 = tps65912_gpio->tps65912; int val; val = tps65912_reg_read(tps65912, TPS65912_GPIO1 + offset); @@ -42,7 +45,8 @@ static void tps65912_gpio_set(struct gpio_chip *gc, unsigned offset, int value) { - struct tps65912 *tps65912 = container_of(gc, struct tps65912, gpio); + struct tps65912_gpio_data *tps65912_gpio = to_tgd(gc); + struct tps65912 *tps65912 = tps65912_gpio->tps65912; if (value) tps65912_set_bits(tps65912, TPS65912_GPIO1 + offset, @@ -55,7 +59,8 @@ static int tps65912_gpio_output(struct gpio_chip *gc, unsigned offset, int value) { - struct tps65912 *tps65912 = container_of(gc, struct tps65912, gpio); + struct tps65912_gpio_data *tps65912_gpio = to_tgd(gc); + struct tps65912 *tps65912 = tps65912_gpio->tps65912; /* Set the initial value */ tps65912_gpio_set(gc, offset, value); @@ -66,7 +71,8 @@ static int tps65912_gpio_input(struct gpio_chip *gc, unsigned offset) { - struct tps65912 *tps65912 = container_of(gc, struct tps65912, gpio); + struct tps65912_gpio_data *tps65912_gpio = to_tgd(gc); + struct tps65912 *tps65912 = tps65912_gpio->tps65912; return tps65912_clear_bits(tps65912, TPS65912_GPIO1 + offset, GPIO_CFG_MASK); --- linux-3.13.0.orig/drivers/gpio/gpiolib-acpi.c +++ linux-3.13.0/drivers/gpio/gpiolib-acpi.c @@ -94,7 +94,7 @@ * gpio pins have acpi event methods and assigns interrupt handlers that calls * the acpi event methods for those pins. */ -void acpi_gpiochip_request_interrupts(struct gpio_chip *chip) +static void acpi_gpiochip_request_interrupts(struct gpio_chip *chip) { struct acpi_buffer buf = {ACPI_ALLOCATE_BUFFER, NULL}; struct acpi_resource *res; @@ -192,7 +192,6 @@ irq); } } -EXPORT_SYMBOL(acpi_gpiochip_request_interrupts); /** * acpi_gpiochip_free_interrupts() - Free GPIO _EVT ACPI event interrupts. @@ -203,7 +202,7 @@ * The remaining ACPI event interrupts associated with the chip are freed * automatically. */ -void acpi_gpiochip_free_interrupts(struct gpio_chip *chip) +static void acpi_gpiochip_free_interrupts(struct gpio_chip *chip) { acpi_handle handle; acpi_status status; @@ -230,7 +229,6 @@ acpi_detach_data(handle, acpi_gpio_evt_dh); kfree(evt_pins); } -EXPORT_SYMBOL(acpi_gpiochip_free_interrupts); struct acpi_gpio_lookup { struct acpi_gpio_info info; @@ -310,3 +308,13 @@ return lookup.desc ? lookup.desc : ERR_PTR(-ENODEV); } EXPORT_SYMBOL_GPL(acpi_get_gpiod_by_index); + +void acpi_gpiochip_add(struct gpio_chip *chip) +{ + acpi_gpiochip_request_interrupts(chip); +} + +void acpi_gpiochip_remove(struct gpio_chip *chip) +{ + acpi_gpiochip_free_interrupts(chip); +} --- linux-3.13.0.orig/drivers/gpio/gpiolib-of.c +++ linux-3.13.0/drivers/gpio/gpiolib-of.c @@ -44,8 +44,15 @@ return false; ret = gc->of_xlate(gc, &gg_data->gpiospec, gg_data->flags); - if (ret < 0) + if (ret < 0) { + /* We've found a gpio chip, but the translation failed. + * Store translation error in out_gpio. + * Return false to keep looking, as more than one gpio chip + * could be registered per of-node. + */ + gg_data->out_gpio = ERR_PTR(ret); return false; + } gg_data->out_gpio = gpio_to_desc(ret + gc->base); return true; --- linux-3.13.0.orig/drivers/gpio/gpiolib.c +++ linux-3.13.0/drivers/gpio/gpiolib.c @@ -16,6 +16,8 @@ #include #include +#include "gpiolib.h" + #define CREATE_TRACE_POINTS #include @@ -388,7 +390,7 @@ return status; } -static const DEVICE_ATTR(value, 0644, +static DEVICE_ATTR(value, 0644, gpio_value_show, gpio_value_store); static irqreturn_t gpio_sysfs_irq(int irq, void *priv) @@ -613,18 +615,15 @@ return status ? : size; } -static const DEVICE_ATTR(active_low, 0644, +static DEVICE_ATTR(active_low, 0644, gpio_active_low_show, gpio_active_low_store); -static const struct attribute *gpio_attrs[] = { +static struct attribute *gpio_attrs[] = { &dev_attr_value.attr, &dev_attr_active_low.attr, NULL, }; - -static const struct attribute_group gpio_attr_group = { - .attrs = (struct attribute **) gpio_attrs, -}; +ATTRIBUTE_GROUPS(gpio); /* * /sys/class/gpio/gpiochipN/ @@ -660,16 +659,13 @@ } static DEVICE_ATTR(ngpio, 0444, chip_ngpio_show, NULL); -static const struct attribute *gpiochip_attrs[] = { +static struct attribute *gpiochip_attrs[] = { &dev_attr_base.attr, &dev_attr_label.attr, &dev_attr_ngpio.attr, NULL, }; - -static const struct attribute_group gpiochip_attr_group = { - .attrs = (struct attribute **) gpiochip_attrs, -}; +ATTRIBUTE_GROUPS(gpiochip); /* * /sys/class/gpio/export ... write-only @@ -785,6 +781,7 @@ */ int gpiod_export(struct gpio_desc *desc, bool direction_may_change) { + struct gpio_chip *chip; unsigned long flags; int status; const char *ioname = NULL; @@ -802,8 +799,16 @@ return -EINVAL; } + chip = desc->chip; + mutex_lock(&sysfs_lock); + /* check if chip is being removed */ + if (!chip || !chip->exported) { + status = -ENODEV; + goto fail_unlock; + } + spin_lock_irqsave(&gpio_lock, flags); if (!test_bit(FLAG_REQUESTED, &desc->flags) || test_bit(FLAG_EXPORT, &desc->flags)) { @@ -824,18 +829,15 @@ if (desc->chip->names && desc->chip->names[offset]) ioname = desc->chip->names[offset]; - dev = device_create(&gpio_class, desc->chip->dev, MKDEV(0, 0), - desc, ioname ? ioname : "gpio%u", - desc_to_gpio(desc)); + dev = device_create_with_groups(&gpio_class, desc->chip->dev, + MKDEV(0, 0), desc, gpio_groups, + ioname ? ioname : "gpio%u", + desc_to_gpio(desc)); if (IS_ERR(dev)) { status = PTR_ERR(dev); goto fail_unlock; } - status = sysfs_create_group(&dev->kobj, &gpio_attr_group); - if (status) - goto fail_unregister_device; - if (direction_may_change) { status = device_create_file(dev, &dev_attr_direction); if (status) @@ -846,13 +848,15 @@ !test_bit(FLAG_IS_OUT, &desc->flags))) { status = device_create_file(dev, &dev_attr_edge); if (status) - goto fail_unregister_device; + goto fail_remove_attr_direction; } set_bit(FLAG_EXPORT, &desc->flags); mutex_unlock(&sysfs_lock); return 0; +fail_remove_attr_direction: + device_remove_file(dev, &dev_attr_direction); fail_unregister_device: device_unregister(dev); fail_unlock: @@ -898,6 +902,7 @@ if (tdev != NULL) { status = sysfs_create_link(&dev->kobj, &tdev->kobj, name); + put_device(tdev); } else { status = -ENODEV; } @@ -946,7 +951,7 @@ } status = sysfs_set_active_low(desc, dev, value); - + put_device(dev); unlock: mutex_unlock(&sysfs_lock); @@ -989,6 +994,8 @@ mutex_unlock(&sysfs_lock); if (dev) { + device_remove_file(dev, &dev_attr_edge); + device_remove_file(dev, &dev_attr_direction); device_unregister(dev); put_device(dev); } @@ -1014,13 +1021,13 @@ /* use chip->base for the ID; it's already known to be unique */ mutex_lock(&sysfs_lock); - dev = device_create(&gpio_class, chip->dev, MKDEV(0, 0), chip, - "gpiochip%d", chip->base); - if (!IS_ERR(dev)) { - status = sysfs_create_group(&dev->kobj, - &gpiochip_attr_group); - } else + dev = device_create_with_groups(&gpio_class, chip->dev, MKDEV(0, 0), + chip, gpiochip_groups, + "gpiochip%d", chip->base); + if (IS_ERR(dev)) status = PTR_ERR(dev); + else + status = 0; chip->exported = (status == 0); mutex_unlock(&sysfs_lock); @@ -1045,12 +1052,15 @@ { int status; struct device *dev; + struct gpio_desc *desc; + unsigned int i; mutex_lock(&sysfs_lock); dev = class_find_device(&gpio_class, NULL, chip, match_export); if (dev) { put_device(dev); device_unregister(dev); + /* prevent further gpiod exports */ chip->exported = 0; status = 0; } else @@ -1060,6 +1070,13 @@ if (status) pr_debug("%s: chip %s status %d\n", __func__, chip->label, status); + + /* unregister gpiod class devices owned by sysfs */ + for (i = 0; i < chip->ngpio; i++) { + desc = &chip->desc[i]; + if (test_and_clear_bit(FLAG_SYSFS, &desc->flags)) + gpiod_free(desc); + } } static int __init gpiolib_sysfs_init(void) @@ -1208,18 +1225,22 @@ spin_unlock_irqrestore(&gpio_lock, flags); + if (status) + goto fail; + #ifdef CONFIG_PINCTRL INIT_LIST_HEAD(&chip->pin_ranges); #endif of_gpiochip_add(chip); - - if (status) - goto fail; + acpi_gpiochip_add(chip); status = gpiochip_export(chip); - if (status) + if (status) { + acpi_gpiochip_remove(chip); + of_gpiochip_remove(chip); goto fail; + } pr_debug("gpiochip_add: registered GPIOs %d to %d on device: %s\n", chip->base, chip->base + chip->ngpio - 1, @@ -1250,11 +1271,11 @@ int status = 0; unsigned id; - spin_lock_irqsave(&gpio_lock, flags); - gpiochip_remove_pin_ranges(chip); of_gpiochip_remove(chip); + acpi_gpiochip_remove(chip); + spin_lock_irqsave(&gpio_lock, flags); for (id = 0; id < chip->ngpio; id++) { if (test_bit(FLAG_REQUESTED, &chip->desc[id].flags)) { status = -EBUSY; --- linux-3.13.0.orig/drivers/gpio/gpiolib.h +++ linux-3.13.0/drivers/gpio/gpiolib.h @@ -0,0 +1,23 @@ +/* + * Internal GPIO functions. + * + * Copyright (C) 2013, Intel Corporation + * Author: 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 GPIOLIB_H +#define GPIOLIB_H + +#ifdef CONFIG_ACPI +void acpi_gpiochip_add(struct gpio_chip *chip); +void acpi_gpiochip_remove(struct gpio_chip *chip); +#else +static inline void acpi_gpiochip_add(struct gpio_chip *chip) { } +static inline void acpi_gpiochip_remove(struct gpio_chip *chip) { } +#endif + +#endif /* GPIOLIB_H */ --- linux-3.13.0.orig/drivers/gpu/drm/armada/armada_crtc.c +++ linux-3.13.0/drivers/gpu/drm/armada/armada_crtc.c @@ -678,6 +678,7 @@ base + LCD_SPU_SRAM_WRDAT); writel_relaxed(addr | SRAM_WRITE, base + LCD_SPU_SRAM_CTRL); + readl_relaxed(base + LCD_SPU_HWC_OVSA_HPXL_VLN); addr += 1; if ((addr & 0x00ff) == 0) addr += 0xf00; --- linux-3.13.0.orig/drivers/gpu/drm/armada/armada_drv.c +++ linux-3.13.0/drivers/gpu/drm/armada/armada_drv.c @@ -68,15 +68,7 @@ { struct armada_private *priv = dev->dev_private; - /* - * Yes, we really must jump through these hoops just to store a - * _pointer_ to something into the kfifo. This is utterly insane - * and idiotic, because it kfifo requires the _data_ pointed to by - * the pointer const, not the pointer itself. Not only that, but - * you have to pass a pointer _to_ the pointer you want stored. - */ - const struct drm_framebuffer *silly_api_alert = fb; - WARN_ON(!kfifo_put(&priv->fb_unref, &silly_api_alert)); + WARN_ON(!kfifo_put(&priv->fb_unref, fb)); schedule_work(&priv->fb_unref_work); } --- linux-3.13.0.orig/drivers/gpu/drm/ast/ast_drv.h +++ linux-3.13.0/drivers/gpu/drm/ast/ast_drv.h @@ -296,6 +296,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-3.13.0.orig/drivers/gpu/drm/ast/ast_fb.c +++ linux-3.13.0/drivers/gpu/drm/ast/ast_fb.c @@ -65,7 +65,7 @@ * then the BO is being moved and we should * store up the damage until later. */ - if (!in_interrupt()) + if (drm_can_sleep()) ret = ast_bo_reserve(bo, true); if (ret) { if (ret != -EBUSY) @@ -367,3 +367,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-3.13.0.orig/drivers/gpu/drm/ast/ast_main.c +++ linux-3.13.0/drivers/gpu/drm/ast/ast_main.c @@ -66,6 +66,7 @@ static int ast_detect_chip(struct drm_device *dev) { struct ast_private *ast = dev->dev_private; + ast_open_key(ast); if (dev->pdev->device == PCI_CHIP_AST1180) { ast->chip = AST1100; @@ -100,7 +101,7 @@ } ast->vga2_clone = false; } else { - ast->chip = 2000; + ast->chip = AST2000; DRM_INFO("AST 2000 detected\n"); } } @@ -124,7 +125,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; @@ -359,6 +360,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-3.13.0.orig/drivers/gpu/drm/ast/ast_mode.c +++ linux-3.13.0/drivers/gpu/drm/ast/ast_mode.c @@ -509,6 +509,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); @@ -1012,8 +1014,8 @@ srcdata32[1].ul = *((u32 *)(srcxor + 4)) & 0xf0f0f0f0; data32.b[0] = srcdata32[0].b[1] | (srcdata32[0].b[0] >> 4); data32.b[1] = srcdata32[0].b[3] | (srcdata32[0].b[2] >> 4); - data32.b[2] = srcdata32[0].b[1] | (srcdata32[1].b[0] >> 4); - data32.b[3] = srcdata32[0].b[3] | (srcdata32[1].b[2] >> 4); + data32.b[2] = srcdata32[1].b[1] | (srcdata32[1].b[0] >> 4); + data32.b[3] = srcdata32[1].b[3] | (srcdata32[1].b[2] >> 4); writel(data32.ul, dstxor); csum += data32.ul; --- linux-3.13.0.orig/drivers/gpu/drm/cirrus/cirrus_drv.c +++ linux-3.13.0/drivers/gpu/drm/cirrus/cirrus_drv.c @@ -31,6 +31,8 @@ static DEFINE_PCI_DEVICE_TABLE(pciidlist) = { { PCI_VENDOR_ID_CIRRUS, PCI_DEVICE_ID_CIRRUS_5446, 0x1af4, 0x1100, 0, 0, 0 }, + { PCI_VENDOR_ID_CIRRUS, PCI_DEVICE_ID_CIRRUS_5446, PCI_VENDOR_ID_XEN, + 0x0001, 0, 0, 0 }, {0,} }; --- linux-3.13.0.orig/drivers/gpu/drm/cirrus/cirrus_fbdev.c +++ linux-3.13.0/drivers/gpu/drm/cirrus/cirrus_fbdev.c @@ -39,7 +39,7 @@ * then the BO is being moved and we should * store up the damage until later. */ - if (!in_interrupt()) + if (drm_can_sleep()) ret = cirrus_bo_reserve(bo, true); if (ret) { if (ret != -EBUSY) --- linux-3.13.0.orig/drivers/gpu/drm/cirrus/cirrus_mode.c +++ linux-3.13.0/drivers/gpu/drm/cirrus/cirrus_mode.c @@ -273,8 +273,8 @@ sr07 |= 0x11; break; case 16: - sr07 |= 0xc1; - hdr = 0xc0; + sr07 |= 0x17; + hdr = 0xc1; break; case 24: sr07 |= 0x15; --- linux-3.13.0.orig/drivers/gpu/drm/drm_crtc.c +++ linux-3.13.0/drivers/gpu/drm/drm_crtc.c @@ -215,6 +215,16 @@ { DRM_MODE_ENCODER_DSI, "DSI" }, }; +static const struct drm_prop_enum_list drm_subpixel_enum_list[] = +{ + { SubPixelUnknown, "Unknown" }, + { SubPixelHorizontalRGB, "Horizontal RGB" }, + { SubPixelHorizontalBGR, "Horizontal BGR" }, + { SubPixelVerticalRGB, "Vertical RGB" }, + { SubPixelVerticalBGR, "Vertical BGR" }, + { SubPixelNone, "None" }, +}; + void drm_connector_ida_init(void) { int i; @@ -264,6 +274,19 @@ } EXPORT_SYMBOL(drm_get_connector_status_name); +/** + * drm_get_subpixel_order_name - return a string for a given subpixel enum + * @order: enum of subpixel_order + * + * Note you could abuse this and return something out of bounds, but that + * would be a caller error. No unscrubbed user data should make it here. + */ +const char *drm_get_subpixel_order_name(enum subpixel_order order) +{ + return drm_subpixel_enum_list[order].name; +} +EXPORT_SYMBOL(drm_get_subpixel_order_name); + static char printable_char(int c) { return isascii(c) && isprint(c) ? c : '?'; @@ -296,8 +319,7 @@ * for tracking modes, CRTCs and connectors. * * RETURNS: - * New unique (relative to other objects in @dev) integer identifier for the - * object. + * Zero on success, error code on failure. */ static int drm_mode_object_get(struct drm_device *dev, struct drm_mode_object *obj, uint32_t obj_type) @@ -403,7 +425,7 @@ out: mutex_unlock(&dev->mode_config.fb_lock); - return 0; + return ret; } EXPORT_SYMBOL(drm_framebuffer_init); @@ -675,6 +697,29 @@ EXPORT_SYMBOL(drm_crtc_cleanup); /** + * drm_crtc_index - find the index of a registered CRTC + * @crtc: CRTC to find index for + * + * Given a registered CRTC, return the index of that CRTC within a DRM + * device's list of CRTCs. + */ +unsigned int drm_crtc_index(struct drm_crtc *crtc) +{ + unsigned int index = 0; + struct drm_crtc *tmp; + + list_for_each_entry(tmp, &crtc->dev->mode_config.crtc_list, head) { + if (tmp == crtc) + return index; + + index++; + } + + BUG(); +} +EXPORT_SYMBOL(drm_crtc_index); + +/** * drm_mode_probed_add - add a mode to a connector's probed mode list * @connector: connector the new mode * @mode: mode data @@ -2132,8 +2177,11 @@ if (!drm_core_check_feature(dev, DRIVER_MODESET)) return -EINVAL; - /* For some reason crtc x/y offsets are signed internally. */ - if (crtc_req->x > INT_MAX || crtc_req->y > INT_MAX) + /* + * Universal plane src offsets are only 16.16, prevent havoc for + * drivers using universal plane code internally. + */ + if (crtc_req->x & 0xffff0000 || crtc_req->y & 0xffff0000) return -ERANGE; drm_modeset_lock_all(dev); @@ -3727,12 +3775,9 @@ if (encoder->funcs->reset) encoder->funcs->reset(encoder); - list_for_each_entry(connector, &dev->mode_config.connector_list, head) { - connector->status = connector_status_unknown; - + list_for_each_entry(connector, &dev->mode_config.connector_list, head) if (connector->funcs->reset) connector->funcs->reset(connector); - } } EXPORT_SYMBOL(drm_mode_config_reset); --- linux-3.13.0.orig/drivers/gpu/drm/drm_crtc_helper.c +++ linux-3.13.0/drivers/gpu/drm/drm_crtc_helper.c @@ -324,35 +324,6 @@ } EXPORT_SYMBOL(drm_helper_disable_unused_functions); -/** - * drm_encoder_crtc_ok - can a given crtc drive a given encoder? - * @encoder: encoder to test - * @crtc: crtc to test - * - * Return false if @encoder can't be driven by @crtc, true otherwise. - */ -static bool drm_encoder_crtc_ok(struct drm_encoder *encoder, - struct drm_crtc *crtc) -{ - struct drm_device *dev; - struct drm_crtc *tmp; - int crtc_mask = 1; - - WARN(!crtc, "checking null crtc?\n"); - - dev = crtc->dev; - - list_for_each_entry(tmp, &dev->mode_config.crtc_list, head) { - if (tmp == crtc) - break; - crtc_mask <<= 1; - } - - if (encoder->possible_crtcs & crtc_mask) - return true; - return false; -} - /* * Check the CRTC we're going to map each output to vs. its current * CRTC. If they don't match, we have to disable the output and the CRTC @@ -536,7 +507,7 @@ * are later needed by vblank and swap-completion * timestamping. They are derived from true hwmode. */ - drm_calc_timestamping_constants(crtc); + drm_calc_timestamping_constants(crtc, &crtc->hwmode); /* FIXME: add subpixel order */ done: --- linux-3.13.0.orig/drivers/gpu/drm/drm_dp_helper.c +++ linux-3.13.0/drivers/gpu/drm/drm_dp_helper.c @@ -346,3 +346,399 @@ } } EXPORT_SYMBOL(drm_dp_bw_code_to_link_rate); + +/** + * DOC: dp helpers + * + * The DisplayPort AUX channel is an abstraction to allow generic, driver- + * independent access to AUX functionality. Drivers can take advantage of + * this by filling in the fields of the drm_dp_aux structure. + * + * Transactions are described using a hardware-independent drm_dp_aux_msg + * structure, which is passed into a driver's .transfer() implementation. + * Both native and I2C-over-AUX transactions are supported. + */ + +static int drm_dp_dpcd_access(struct drm_dp_aux *aux, u8 request, + unsigned int offset, void *buffer, size_t size) +{ + struct drm_dp_aux_msg msg; + unsigned int retry; + int err; + + memset(&msg, 0, sizeof(msg)); + msg.address = offset; + msg.request = request; + msg.buffer = buffer; + msg.size = size; + + /* + * The specification doesn't give any recommendation on how often to + * retry native transactions, so retry 7 times like for I2C-over-AUX + * transactions. + */ + for (retry = 0; retry < 7; retry++) { + err = aux->transfer(aux, &msg); + if (err < 0) { + if (err == -EBUSY) + continue; + + return err; + } + + + switch (msg.reply & DP_AUX_NATIVE_REPLY_MASK) { + case DP_AUX_NATIVE_REPLY_ACK: + if (err < size) + return -EPROTO; + return err; + + case DP_AUX_NATIVE_REPLY_NACK: + return -EIO; + + case DP_AUX_NATIVE_REPLY_DEFER: + usleep_range(400, 500); + break; + } + } + + DRM_DEBUG_KMS("too many retries, giving up\n"); + return -EIO; +} + +/** + * drm_dp_dpcd_read() - read a series of bytes from the DPCD + * @aux: DisplayPort AUX channel + * @offset: address of the (first) register to read + * @buffer: buffer to store the register values + * @size: number of bytes in @buffer + * + * Returns the number of bytes transferred on success, or a negative error + * code on failure. -EIO is returned if the request was NAKed by the sink or + * if the retry count was exceeded. If not all bytes were transferred, this + * function returns -EPROTO. Errors from the underlying AUX channel transfer + * function, with the exception of -EBUSY (which causes the transaction to + * be retried), are propagated to the caller. + */ +ssize_t drm_dp_dpcd_read(struct drm_dp_aux *aux, unsigned int offset, + void *buffer, size_t size) +{ + return drm_dp_dpcd_access(aux, DP_AUX_NATIVE_READ, offset, buffer, + size); +} +EXPORT_SYMBOL(drm_dp_dpcd_read); + +/** + * drm_dp_dpcd_write() - write a series of bytes to the DPCD + * @aux: DisplayPort AUX channel + * @offset: address of the (first) register to write + * @buffer: buffer containing the values to write + * @size: number of bytes in @buffer + * + * Returns the number of bytes transferred on success, or a negative error + * code on failure. -EIO is returned if the request was NAKed by the sink or + * if the retry count was exceeded. If not all bytes were transferred, this + * function returns -EPROTO. Errors from the underlying AUX channel transfer + * function, with the exception of -EBUSY (which causes the transaction to + * be retried), are propagated to the caller. + */ +ssize_t drm_dp_dpcd_write(struct drm_dp_aux *aux, unsigned int offset, + void *buffer, size_t size) +{ + return drm_dp_dpcd_access(aux, DP_AUX_NATIVE_WRITE, offset, buffer, + size); +} +EXPORT_SYMBOL(drm_dp_dpcd_write); + +/** + * drm_dp_dpcd_read_link_status() - read DPCD link status (bytes 0x202-0x207) + * @aux: DisplayPort AUX channel + * @status: buffer to store the link status in (must be at least 6 bytes) + * + * Returns the number of bytes transferred on success or a negative error + * code on failure. + */ +int drm_dp_dpcd_read_link_status(struct drm_dp_aux *aux, + u8 status[DP_LINK_STATUS_SIZE]) +{ + return drm_dp_dpcd_read(aux, DP_LANE0_1_STATUS, status, + DP_LINK_STATUS_SIZE); +} +EXPORT_SYMBOL(drm_dp_dpcd_read_link_status); + +/** + * drm_dp_link_probe() - probe a DisplayPort link for capabilities + * @aux: DisplayPort AUX channel + * @link: pointer to structure in which to return link capabilities + * + * The structure filled in by this function can usually be passed directly + * into drm_dp_link_power_up() and drm_dp_link_configure() to power up and + * configure the link based on the link's capabilities. + * + * Returns 0 on success or a negative error code on failure. + */ +int drm_dp_link_probe(struct drm_dp_aux *aux, struct drm_dp_link *link) +{ + u8 values[3]; + int err; + + memset(link, 0, sizeof(*link)); + + err = drm_dp_dpcd_read(aux, DP_DPCD_REV, values, sizeof(values)); + if (err < 0) + return err; + + link->revision = values[0]; + link->rate = drm_dp_bw_code_to_link_rate(values[1]); + link->num_lanes = values[2] & DP_MAX_LANE_COUNT_MASK; + + if (values[2] & DP_ENHANCED_FRAME_CAP) + link->capabilities |= DP_LINK_CAP_ENHANCED_FRAMING; + + return 0; +} +EXPORT_SYMBOL(drm_dp_link_probe); + +/** + * drm_dp_link_power_up() - power up a DisplayPort link + * @aux: DisplayPort AUX channel + * @link: pointer to a structure containing the link configuration + * + * Returns 0 on success or a negative error code on failure. + */ +int drm_dp_link_power_up(struct drm_dp_aux *aux, struct drm_dp_link *link) +{ + u8 value; + int err; + + /* DP_SET_POWER register is only available on DPCD v1.1 and later */ + if (link->revision < 0x11) + return 0; + + err = drm_dp_dpcd_readb(aux, DP_SET_POWER, &value); + if (err < 0) + return err; + + value &= ~DP_SET_POWER_MASK; + value |= DP_SET_POWER_D0; + + err = drm_dp_dpcd_writeb(aux, DP_SET_POWER, value); + if (err < 0) + return err; + + /* + * According to the DP 1.1 specification, a "Sink Device must exit the + * power saving state within 1 ms" (Section 2.5.3.1, Table 5-52, "Sink + * Control Field" (register 0x600). + */ + usleep_range(1000, 2000); + + return 0; +} +EXPORT_SYMBOL(drm_dp_link_power_up); + +/** + * drm_dp_link_configure() - configure a DisplayPort link + * @aux: DisplayPort AUX channel + * @link: pointer to a structure containing the link configuration + * + * Returns 0 on success or a negative error code on failure. + */ +int drm_dp_link_configure(struct drm_dp_aux *aux, struct drm_dp_link *link) +{ + u8 values[2]; + int err; + + values[0] = drm_dp_link_rate_to_bw_code(link->rate); + values[1] = link->num_lanes; + + if (link->capabilities & DP_LINK_CAP_ENHANCED_FRAMING) + values[1] |= DP_LANE_COUNT_ENHANCED_FRAME_EN; + + err = drm_dp_dpcd_write(aux, DP_LINK_BW_SET, values, sizeof(values)); + if (err < 0) + return err; + + return 0; +} +EXPORT_SYMBOL(drm_dp_link_configure); + +/* + * I2C-over-AUX implementation + */ + +static u32 drm_dp_i2c_functionality(struct i2c_adapter *adapter) +{ + return I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL | + I2C_FUNC_SMBUS_READ_BLOCK_DATA | + I2C_FUNC_SMBUS_BLOCK_PROC_CALL | + I2C_FUNC_10BIT_ADDR; +} + +/* + * Transfer a single I2C-over-AUX message and handle various error conditions, + * retrying the transaction as appropriate. + */ +static int drm_dp_i2c_do_msg(struct drm_dp_aux *aux, struct drm_dp_aux_msg *msg) +{ + unsigned int retry; + int err; + + /* + * DP1.2 sections 2.7.7.1.5.6.1 and 2.7.7.1.6.6.1: A DP Source device + * is required to retry at least seven times upon receiving AUX_DEFER + * before giving up the AUX transaction. + */ + for (retry = 0; retry < 7; retry++) { + err = aux->transfer(aux, msg); + if (err < 0) { + if (err == -EBUSY) + continue; + + DRM_DEBUG_KMS("transaction failed: %d\n", err); + return err; + } + + + switch (msg->reply & DP_AUX_NATIVE_REPLY_MASK) { + case DP_AUX_NATIVE_REPLY_ACK: + /* + * For I2C-over-AUX transactions this isn't enough, we + * need to check for the I2C ACK reply. + */ + break; + + case DP_AUX_NATIVE_REPLY_NACK: + DRM_DEBUG_KMS("native nack\n"); + return -EREMOTEIO; + + case DP_AUX_NATIVE_REPLY_DEFER: + DRM_DEBUG_KMS("native defer"); + /* + * We could check for I2C bit rate capabilities and if + * available adjust this interval. We could also be + * more careful with DP-to-legacy adapters where a + * long legacy cable may force very low I2C bit rates. + * + * For now just defer for long enough to hopefully be + * safe for all use-cases. + */ + usleep_range(500, 600); + continue; + + default: + DRM_ERROR("invalid native reply %#04x\n", msg->reply); + return -EREMOTEIO; + } + + switch (msg->reply & DP_AUX_I2C_REPLY_MASK) { + case DP_AUX_I2C_REPLY_ACK: + /* + * Both native ACK and I2C ACK replies received. We + * can assume the transfer was successful. + */ + if (err < msg->size) + return -EPROTO; + return 0; + + case DP_AUX_I2C_REPLY_NACK: + DRM_DEBUG_KMS("I2C nack\n"); + return -EREMOTEIO; + + case DP_AUX_I2C_REPLY_DEFER: + DRM_DEBUG_KMS("I2C defer\n"); + usleep_range(400, 500); + continue; + + default: + DRM_ERROR("invalid I2C reply %#04x\n", msg->reply); + return -EREMOTEIO; + } + } + + DRM_DEBUG_KMS("too many retries, giving up\n"); + return -EREMOTEIO; +} + +static int drm_dp_i2c_xfer(struct i2c_adapter *adapter, struct i2c_msg *msgs, + int num) +{ + struct drm_dp_aux *aux = adapter->algo_data; + unsigned int i, j; + + for (i = 0; i < num; i++) { + struct drm_dp_aux_msg msg; + int err; + + /* + * Many hardware implementations support FIFOs larger than a + * single byte, but it has been empirically determined that + * transferring data in larger chunks can actually lead to + * decreased performance. Therefore each message is simply + * transferred byte-by-byte. + */ + for (j = 0; j < msgs[i].len; j++) { + memset(&msg, 0, sizeof(msg)); + msg.address = msgs[i].addr; + + msg.request = (msgs[i].flags & I2C_M_RD) ? + DP_AUX_I2C_READ : + DP_AUX_I2C_WRITE; + + /* + * All messages except the last one are middle-of- + * transfer messages. + */ + if ((i < num - 1) || (j < msgs[i].len - 1)) + msg.request |= DP_AUX_I2C_MOT; + + msg.buffer = msgs[i].buf + j; + msg.size = 1; + + err = drm_dp_i2c_do_msg(aux, &msg); + if (err < 0) + return err; + } + } + + return num; +} + +static const struct i2c_algorithm drm_dp_i2c_algo = { + .functionality = drm_dp_i2c_functionality, + .master_xfer = drm_dp_i2c_xfer, +}; + +/** + * drm_dp_aux_register_i2c_bus() - register an I2C adapter for I2C-over-AUX + * @aux: DisplayPort AUX channel + * + * Returns 0 on success or a negative error code on failure. + */ +int drm_dp_aux_register_i2c_bus(struct drm_dp_aux *aux) +{ + aux->ddc.algo = &drm_dp_i2c_algo; + aux->ddc.algo_data = aux; + aux->ddc.retries = 3; + + aux->ddc.class = I2C_CLASS_DDC; + aux->ddc.owner = THIS_MODULE; + aux->ddc.dev.parent = aux->dev; + aux->ddc.dev.of_node = aux->dev->of_node; + + strlcpy(aux->ddc.name, aux->name ? aux->name : dev_name(aux->dev), + sizeof(aux->ddc.name)); + + return i2c_add_adapter(&aux->ddc); +} +EXPORT_SYMBOL(drm_dp_aux_register_i2c_bus); + +/** + * drm_dp_aux_unregister_i2c_bus() - unregister an I2C-over-AUX adapter + * @aux: DisplayPort AUX channel + */ +void drm_dp_aux_unregister_i2c_bus(struct drm_dp_aux *aux) +{ + i2c_del_adapter(&aux->ddc); +} +EXPORT_SYMBOL(drm_dp_aux_unregister_i2c_bus); --- linux-3.13.0.orig/drivers/gpu/drm/drm_fb_helper.c +++ linux-3.13.0/drivers/gpu/drm/drm_fb_helper.c @@ -1130,7 +1130,7 @@ return count; } -static struct drm_display_mode *drm_has_preferred_mode(struct drm_fb_helper_connector *fb_connector, int width, int height) +struct drm_display_mode *drm_has_preferred_mode(struct drm_fb_helper_connector *fb_connector, int width, int height) { struct drm_display_mode *mode; @@ -1143,6 +1143,7 @@ } return NULL; } +EXPORT_SYMBOL(drm_has_preferred_mode); static bool drm_has_cmdline_mode(struct drm_fb_helper_connector *fb_connector) { @@ -1151,7 +1152,7 @@ return cmdline_mode->specified; } -static struct drm_display_mode *drm_pick_cmdline_mode(struct drm_fb_helper_connector *fb_helper_conn, +struct drm_display_mode *drm_pick_cmdline_mode(struct drm_fb_helper_connector *fb_helper_conn, int width, int height) { struct drm_cmdline_mode *cmdline_mode; @@ -1191,6 +1192,7 @@ list_add(&mode->head, &fb_helper_conn->connector->modes); return mode; } +EXPORT_SYMBOL(drm_pick_cmdline_mode); static bool drm_connector_enabled(struct drm_connector *connector, bool strict) { --- linux-3.13.0.orig/drivers/gpu/drm/drm_gem.c +++ linux-3.13.0/drivers/gpu/drm/drm_gem.c @@ -129,11 +129,12 @@ { struct file *filp; + drm_gem_private_object_init(dev, obj, size); + filp = shmem_file_setup("drm mm object", size, VM_NORESERVE); if (IS_ERR(filp)) return PTR_ERR(filp); - drm_gem_private_object_init(dev, obj, size); obj->filp = filp; return 0; @@ -324,27 +325,32 @@ spin_unlock(&file_priv->table_lock); idr_preload_end(); mutex_unlock(&dev->object_name_lock); - if (ret < 0) { - drm_gem_object_handle_unreference_unlocked(obj); - return ret; - } + if (ret < 0) + goto err_unref; + *handlep = ret; ret = drm_vma_node_allow(&obj->vma_node, file_priv->filp); - if (ret) { - drm_gem_handle_delete(file_priv, *handlep); - return ret; - } + if (ret) + goto err_remove; if (dev->driver->gem_open_object) { ret = dev->driver->gem_open_object(obj, file_priv); - if (ret) { - drm_gem_handle_delete(file_priv, *handlep); - return ret; - } + if (ret) + goto err_revoke; } return 0; + +err_revoke: + drm_vma_node_revoke(&obj->vma_node, file_priv->filp); +err_remove: + spin_lock(&file_priv->table_lock); + idr_remove(&file_priv->object_idr, *handlep); + spin_unlock(&file_priv->table_lock); +err_unref: + drm_gem_object_handle_unreference_unlocked(obj); + return ret; } /** --- linux-3.13.0.orig/drivers/gpu/drm/drm_ioctl.c +++ linux-3.13.0/drivers/gpu/drm/drm_ioctl.c @@ -296,6 +296,18 @@ case DRM_CAP_ASYNC_PAGE_FLIP: req->value = dev->mode_config.async_page_flip; break; + case DRM_CAP_CURSOR_WIDTH: + if (dev->mode_config.cursor_width) + req->value = dev->mode_config.cursor_width; + else + req->value = 64; + break; + case DRM_CAP_CURSOR_HEIGHT: + if (dev->mode_config.cursor_height) + req->value = dev->mode_config.cursor_height; + else + req->value = 64; + break; default: return -EINVAL; } --- linux-3.13.0.orig/drivers/gpu/drm/drm_irq.c +++ linux-3.13.0/drivers/gpu/drm/drm_irq.c @@ -445,20 +445,22 @@ * adjustments into account. * * @crtc drm_crtc whose timestamp constants should be updated. + * @mode display mode containing the scanout timings * */ -void drm_calc_timestamping_constants(struct drm_crtc *crtc) +void drm_calc_timestamping_constants(struct drm_crtc *crtc, + const struct drm_display_mode *mode) { s64 linedur_ns = 0, pixeldur_ns = 0, framedur_ns = 0; u64 dotclock; /* Dot clock in Hz: */ - dotclock = (u64) crtc->hwmode.clock * 1000; + dotclock = (u64) mode->clock * 1000; /* Fields of interlaced scanout modes are only half a frame duration. * Double the dotclock to get half the frame-/line-/pixelduration. */ - if (crtc->hwmode.flags & DRM_MODE_FLAG_INTERLACE) + if (mode->flags & DRM_MODE_FLAG_INTERLACE) dotclock *= 2; /* Valid dotclock? */ @@ -469,10 +471,9 @@ * nanoseconds: */ pixeldur_ns = (s64) div64_u64(1000000000, dotclock); - linedur_ns = (s64) div64_u64(((u64) crtc->hwmode.crtc_htotal * + linedur_ns = (s64) div64_u64(((u64) mode->crtc_htotal * 1000000000), dotclock); - frame_size = crtc->hwmode.crtc_htotal * - crtc->hwmode.crtc_vtotal; + frame_size = mode->crtc_htotal * mode->crtc_vtotal; framedur_ns = (s64) div64_u64((u64) frame_size * 1000000000, dotclock); } else @@ -484,8 +485,8 @@ crtc->framedur_ns = framedur_ns; DRM_DEBUG("crtc %d: hwmode: htotal %d, vtotal %d, vdisplay %d\n", - crtc->base.id, crtc->hwmode.crtc_htotal, - crtc->hwmode.crtc_vtotal, crtc->hwmode.crtc_vdisplay); + crtc->base.id, mode->crtc_htotal, + mode->crtc_vtotal, mode->crtc_vdisplay); DRM_DEBUG("crtc %d: clock %d kHz framedur %d linedur %d, pixeldur %d\n", crtc->base.id, (int) dotclock/1000, (int) framedur_ns, (int) linedur_ns, (int) pixeldur_ns); @@ -521,6 +522,7 @@ * 0 = Default. * DRM_CALLED_FROM_VBLIRQ = If function is called from vbl irq handler. * @refcrtc: drm_crtc* of crtc which defines scanout timing. + * @mode: mode which defines the scanout timings * * Returns negative value on error, failure or if not supported in current * video mode: @@ -540,11 +542,11 @@ int *max_error, struct timeval *vblank_time, unsigned flags, - struct drm_crtc *refcrtc) + const struct drm_crtc *refcrtc, + const struct drm_display_mode *mode) { ktime_t stime, etime, mono_time_offset; struct timeval tv_etime; - struct drm_display_mode *mode; int vbl_status, vtotal, vdisplay; int vpos, hpos, i; s64 framedur_ns, linedur_ns, pixeldur_ns, delta_ns, duration_ns; @@ -561,7 +563,6 @@ return -EIO; } - mode = &refcrtc->hwmode; vtotal = mode->crtc_vtotal; vdisplay = mode->crtc_vdisplay; @@ -590,7 +591,7 @@ * Get vertical and horizontal scanout position vpos, hpos, * and bounding timestamps stime, etime, pre/post query. */ - vbl_status = dev->driver->get_scanout_position(dev, crtc, &vpos, + vbl_status = dev->driver->get_scanout_position(dev, crtc, flags, &vpos, &hpos, &stime, &etime); /* --- linux-3.13.0.orig/drivers/gpu/drm/gma500/gma_display.c +++ linux-3.13.0/drivers/gpu/drm/gma500/gma_display.c @@ -349,6 +349,7 @@ /* If we didn't get a handle then turn the cursor off */ if (!handle) { temp = CURSOR_MODE_DISABLE; + mutex_lock(&dev->struct_mutex); if (gma_power_begin(dev, false)) { REG_WRITE(control, temp); @@ -365,6 +366,7 @@ gma_crtc->cursor_obj = NULL; } + mutex_unlock(&dev->struct_mutex); return 0; } @@ -374,9 +376,12 @@ return -EINVAL; } + mutex_lock(&dev->struct_mutex); obj = drm_gem_object_lookup(dev, file_priv, handle); - if (!obj) - return -ENOENT; + if (!obj) { + ret = -ENOENT; + goto unlock; + } if (obj->size < width * height * 4) { dev_dbg(dev->dev, "Buffer is too small\n"); @@ -440,10 +445,13 @@ } gma_crtc->cursor_obj = obj; +unlock: + mutex_unlock(&dev->struct_mutex); return ret; unref_cursor: drm_gem_object_unreference(obj); + mutex_unlock(&dev->struct_mutex); return ret; } --- linux-3.13.0.orig/drivers/gpu/drm/i915/Kconfig +++ linux-3.13.0/drivers/gpu/drm/i915/Kconfig @@ -35,12 +35,11 @@ config DRM_I915_KMS bool "Enable modesetting on intel by default" depends on DRM_I915 + default y help - Choose this option if you want kernel modesetting enabled by default, - and you have a new enough userspace to support this. Running old - userspaces with this enabled will cause pain. Note that this causes - the driver to bind to PCI devices, which precludes loading things - like intelfb. + Choose this option if you want kernel modesetting enabled by default. + + If in doubt, say "Y". config DRM_I915_FBDEV bool "Enable legacy fbdev support for the modesettting intel driver" @@ -55,9 +54,12 @@ support. Note that this support also provide the linux console support on top of the intel modesetting driver. + If in doubt, say "Y". + config DRM_I915_PRELIMINARY_HW_SUPPORT bool "Enable preliminary support for prerelease Intel hardware by default" depends on DRM_I915 + default n help Choose this option if you have prerelease Intel hardware and want the i915 driver to support it by default. You can enable such support at @@ -65,3 +67,15 @@ option changes the default for that module option. If in doubt, say "N". + +config DRM_I915_UMS + bool "Enable userspace modesetting on Intel hardware (DEPRECATED)" + depends on DRM_I915 + default n + help + Choose this option if you still need userspace modesetting. + + Userspace modesetting is deprecated for quite some time now, so + enable this only if you have ancient versions of the DDX drivers. + + If in doubt, say "N". --- linux-3.13.0.orig/drivers/gpu/drm/i915/i915_debugfs.c +++ linux-3.13.0/drivers/gpu/drm/i915/i915_debugfs.c @@ -408,7 +408,9 @@ struct file_stats stats; memset(&stats, 0, sizeof(stats)); + spin_lock(&file->table_lock); idr_for_each(&file->object_idr, per_file_stats, &stats); + spin_unlock(&file->table_lock); seq_printf(m, "%s: %u objects, %zu bytes (%zu active, %zu inactive, %zu unbound)\n", get_pid_task(file->pid, PIDTYPE_PID)->comm, stats.count, --- linux-3.13.0.orig/drivers/gpu/drm/i915/i915_dma.c +++ linux-3.13.0/drivers/gpu/drm/i915/i915_dma.c @@ -1679,6 +1679,7 @@ intel_teardown_gmbus(dev); intel_teardown_mchbar(dev); + pm_qos_remove_request(&dev_priv->pm_qos); destroy_workqueue(dev_priv->wq); out_mtrrfree: arch_phys_wc_del(dev_priv->gtt.mtrr); @@ -1910,6 +1911,7 @@ DRM_IOCTL_DEF_DRV(I915_GEM_CONTEXT_CREATE, i915_gem_context_create_ioctl, DRM_UNLOCKED|DRM_RENDER_ALLOW), DRM_IOCTL_DEF_DRV(I915_GEM_CONTEXT_DESTROY, i915_gem_context_destroy_ioctl, DRM_UNLOCKED|DRM_RENDER_ALLOW), DRM_IOCTL_DEF_DRV(I915_REG_READ, i915_reg_read_ioctl, DRM_UNLOCKED|DRM_RENDER_ALLOW), + DRM_IOCTL_DEF_DRV(I915_GET_RESET_STATS, i915_get_reset_stats_ioctl, DRM_UNLOCKED|DRM_RENDER_ALLOW), }; int i915_max_ioctl = DRM_ARRAY_SIZE(i915_ioctls); --- linux-3.13.0.orig/drivers/gpu/drm/i915/i915_drv.c +++ linux-3.13.0/drivers/gpu/drm/i915/i915_drv.c @@ -383,11 +383,7 @@ INTEL_IVB_M_IDS(&intel_ivybridge_m_info), \ INTEL_IVB_D_IDS(&intel_ivybridge_d_info), \ INTEL_HSW_D_IDS(&intel_haswell_d_info), \ - INTEL_HSW_M_IDS(&intel_haswell_m_info), \ - INTEL_VLV_M_IDS(&intel_valleyview_m_info), \ - INTEL_VLV_D_IDS(&intel_valleyview_d_info), \ - INTEL_BDW_M_IDS(&intel_broadwell_m_info), \ - INTEL_BDW_D_IDS(&intel_broadwell_d_info) + INTEL_HSW_M_IDS(&intel_haswell_m_info) static const struct pci_device_id pciidlist[] = { /* aka */ INTEL_PCI_IDS, @@ -401,7 +397,7 @@ void intel_detect_pch(struct drm_device *dev) { struct drm_i915_private *dev_priv = dev->dev_private; - struct pci_dev *pch; + struct pci_dev *pch = NULL; /* In all current cases, num_pipes is equivalent to the PCH_NOP setting * (which really amounts to a PCH but no South Display). @@ -422,12 +418,9 @@ * all the ISA bridge devices and check for the first match, instead * of only checking the first one. */ - pch = pci_get_class(PCI_CLASS_BRIDGE_ISA << 8, NULL); - while (pch) { - struct pci_dev *curr = pch; + while ((pch = pci_get_class(PCI_CLASS_BRIDGE_ISA << 8, pch))) { if (pch->vendor == PCI_VENDOR_ID_INTEL) { - unsigned short id; - id = pch->device & INTEL_PCH_DEVICE_ID_MASK; + unsigned short id = pch->device & INTEL_PCH_DEVICE_ID_MASK; dev_priv->pch_id = id; if (id == INTEL_PCH_IBX_DEVICE_ID_TYPE) { @@ -446,31 +439,23 @@ } else if (id == INTEL_PCH_LPT_DEVICE_ID_TYPE) { dev_priv->pch_type = PCH_LPT; DRM_DEBUG_KMS("Found LynxPoint PCH\n"); - WARN_ON(!IS_HASWELL(dev)); - WARN_ON(IS_ULT(dev)); - } else if (IS_BROADWELL(dev)) { - dev_priv->pch_type = PCH_LPT; - dev_priv->pch_id = - INTEL_PCH_LPT_LP_DEVICE_ID_TYPE; - DRM_DEBUG_KMS("This is Broadwell, assuming " - "LynxPoint LP PCH\n"); + WARN_ON(!IS_HASWELL(dev) && !IS_BROADWELL(dev)); + WARN_ON(IS_HSW_ULT(dev) || IS_BDW_ULT(dev)); } else if (id == INTEL_PCH_LPT_LP_DEVICE_ID_TYPE) { dev_priv->pch_type = PCH_LPT; DRM_DEBUG_KMS("Found LynxPoint LP PCH\n"); - WARN_ON(!IS_HASWELL(dev)); - WARN_ON(!IS_ULT(dev)); - } else { - goto check_next; - } - pci_dev_put(pch); + WARN_ON(!IS_HASWELL(dev) && !IS_BROADWELL(dev)); + WARN_ON(!IS_HSW_ULT(dev) && !IS_BDW_ULT(dev)); + } else + continue; + break; } -check_next: - pch = pci_get_class(PCI_CLASS_BRIDGE_ISA << 8, curr); - pci_dev_put(curr); } if (!pch) - DRM_DEBUG_KMS("No PCH found?\n"); + DRM_DEBUG_KMS("No PCH found.\n"); + + pci_dev_put(pch); } bool i915_semaphore_is_enabled(struct drm_device *dev) @@ -615,15 +600,20 @@ drm_helper_hpd_irq_event(dev); } +static int i915_drm_thaw_early(struct drm_device *dev) +{ + intel_uncore_early_sanitize(dev); + intel_uncore_sanitize(dev); + intel_power_domains_init_hw(dev); + + return 0; +} + static int __i915_drm_thaw(struct drm_device *dev, bool restore_gtt_mappings) { struct drm_i915_private *dev_priv = dev->dev_private; int error = 0; - intel_uncore_early_sanitize(dev); - - intel_uncore_sanitize(dev); - if (drm_core_check_feature(dev, DRIVER_MODESET) && restore_gtt_mappings) { mutex_lock(&dev->struct_mutex); @@ -631,8 +621,6 @@ mutex_unlock(&dev->struct_mutex); } - intel_power_domains_init_hw(dev); - i915_restore_state(dev); intel_opregion_setup(dev); @@ -699,19 +687,33 @@ return __i915_drm_thaw(dev, true); } -int i915_resume(struct drm_device *dev) +static int i915_resume_early(struct drm_device *dev) { - struct drm_i915_private *dev_priv = dev->dev_private; - int ret; - if (dev->switch_power_state == DRM_SWITCH_POWER_OFF) return 0; + /* + * We have a resume ordering issue with the snd-hda driver also + * requiring our device to be power up. Due to the lack of a + * parent/child relationship we currently solve this with an early + * resume hook. + * + * FIXME: This should be solved with a special hdmi sink device or + * similar so that power domains can be employed. + */ if (pci_enable_device(dev->pdev)) return -EIO; pci_set_master(dev->pdev); + return i915_drm_thaw_early(dev); +} + +int i915_resume(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int ret; + /* * Platforms with opregion should have sane BIOS, older ones (gen3 and * earlier) need to restore the GTT mappings since the BIOS might clear @@ -725,6 +727,14 @@ return 0; } +static int i915_resume_legacy(struct drm_device *dev) +{ + i915_resume_early(dev); + i915_resume(dev); + + return 0; +} + /** * i915_reset - reset chip after a hang * @dev: drm device to reset @@ -858,7 +868,6 @@ { struct pci_dev *pdev = to_pci_dev(dev); struct drm_device *drm_dev = pci_get_drvdata(pdev); - int error; if (!drm_dev || !drm_dev->dev_private) { dev_err(dev, "DRM not initialized, aborting suspend.\n"); @@ -868,9 +877,25 @@ if (drm_dev->switch_power_state == DRM_SWITCH_POWER_OFF) return 0; - error = i915_drm_freeze(drm_dev); - if (error) - return error; + return i915_drm_freeze(drm_dev); +} + +static int i915_pm_suspend_late(struct device *dev) +{ + struct pci_dev *pdev = to_pci_dev(dev); + struct drm_device *drm_dev = pci_get_drvdata(pdev); + + /* + * We have a suspedn ordering issue with the snd-hda driver also + * requiring our device to be power up. Due to the lack of a + * parent/child relationship we currently solve this with an late + * suspend hook. + * + * FIXME: This should be solved with a special hdmi sink device or + * similar so that power domains can be employed. + */ + if (drm_dev->switch_power_state == DRM_SWITCH_POWER_OFF) + return 0; pci_disable_device(pdev); pci_set_power_state(pdev, PCI_D3hot); @@ -878,6 +903,14 @@ return 0; } +static int i915_pm_resume_early(struct device *dev) +{ + struct pci_dev *pdev = to_pci_dev(dev); + struct drm_device *drm_dev = pci_get_drvdata(pdev); + + return i915_resume_early(drm_dev); +} + static int i915_pm_resume(struct device *dev) { struct pci_dev *pdev = to_pci_dev(dev); @@ -899,6 +932,14 @@ return i915_drm_freeze(drm_dev); } +static int i915_pm_thaw_early(struct device *dev) +{ + struct pci_dev *pdev = to_pci_dev(dev); + struct drm_device *drm_dev = pci_get_drvdata(pdev); + + return i915_drm_thaw_early(drm_dev); +} + static int i915_pm_thaw(struct device *dev) { struct pci_dev *pdev = to_pci_dev(dev); @@ -917,10 +958,14 @@ static const struct dev_pm_ops i915_pm_ops = { .suspend = i915_pm_suspend, + .suspend_late = i915_pm_suspend_late, + .resume_early = i915_pm_resume_early, .resume = i915_pm_resume, .freeze = i915_pm_freeze, + .thaw_early = i915_pm_thaw_early, .thaw = i915_pm_thaw, .poweroff = i915_pm_poweroff, + .restore_early = i915_pm_resume_early, .restore = i915_pm_resume, }; @@ -961,7 +1006,7 @@ /* Used in place of i915_pm_ops for non-DRIVER_MODESET */ .suspend = i915_suspend, - .resume = i915_resume, + .resume = i915_resume_legacy, .device_is_agp = i915_driver_device_is_agp, .master_create = i915_master_create, @@ -1024,8 +1069,13 @@ driver.driver_features &= ~DRIVER_MODESET; #endif - if (!(driver.driver_features & DRIVER_MODESET)) + if (!(driver.driver_features & DRIVER_MODESET)) { driver.get_vblank_timestamp = NULL; +#ifndef CONFIG_DRM_I915_UMS + /* Silently fail loading to not upset userspace. */ + return 0; +#endif + } return drm_pci_init(&driver, &i915_pci_driver); } --- linux-3.13.0.orig/drivers/gpu/drm/i915/i915_drv.h +++ linux-3.13.0/drivers/gpu/drm/i915/i915_drv.h @@ -317,6 +317,7 @@ u64 fence[I915_MAX_NUM_FENCES]; struct timeval time; struct drm_i915_error_ring { + bool valid; struct drm_i915_error_object { int page_count; u32 gtt_offset; @@ -875,6 +876,7 @@ u32 savePIPEB_LINK_N1; u32 saveMCHBAR_RENDER_STANDBY; u32 savePCH_PORT_HOTPLUG; + u16 saveGCDGMBUS; }; struct intel_gen6_power_mgmt { @@ -1077,34 +1079,30 @@ unsigned long missed_irq_rings; /** - * State variable and reset counter controlling the reset flow + * State variable controlling the reset flow and count * - * Upper bits are for the reset counter. This counter is used by the - * wait_seqno code to race-free noticed that a reset event happened and - * that it needs to restart the entire ioctl (since most likely the - * seqno it waited for won't ever signal anytime soon). + * This is a counter which gets incremented when reset is triggered, + * and again when reset has been handled. So odd values (lowest bit set) + * means that reset is in progress and even values that + * (reset_counter >> 1):th reset was successfully completed. + * + * If reset is not completed succesfully, the I915_WEDGE bit is + * set meaning that hardware is terminally sour and there is no + * recovery. All waiters on the reset_queue will be woken when + * that happens. + * + * This counter is used by the wait_seqno code to notice that reset + * event happened and it needs to restart the entire ioctl (since most + * likely the seqno it waited for won't ever signal anytime soon). * * This is important for lock-free wait paths, where no contended lock * naturally enforces the correct ordering between the bail-out of the * waiter and the gpu reset work code. - * - * Lowest bit controls the reset state machine: Set means a reset is in - * progress. This state will (presuming we don't have any bugs) decay - * into either unset (successful reset) or the special WEDGED value (hw - * terminally sour). All waiters on the reset_queue will be woken when - * that happens. */ atomic_t reset_counter; - /** - * Special values/flags for reset_counter - * - * Note that the code relies on - * I915_WEDGED & I915_RESET_IN_PROGRESS_FLAG - * being true. - */ #define I915_RESET_IN_PROGRESS_FLAG 1 -#define I915_WEDGED 0xffffffff +#define I915_WEDGED (1 << 31) /** * Waitqueue to signal when the reset has completed. Used by clients @@ -1756,8 +1754,8 @@ #define IS_HSW_EARLY_SDV(dev) (IS_HASWELL(dev) && \ ((dev)->pdev->device & 0xFF00) == 0x0C00) #define IS_BDW_ULT(dev) (IS_BROADWELL(dev) && \ - (((dev)->pdev->device & 0xf) == 0x2 || \ - ((dev)->pdev->device & 0xf) == 0x6 || \ + (((dev)->pdev->device & 0xf) == 0x6 || \ + ((dev)->pdev->device & 0xf) == 0xb || \ ((dev)->pdev->device & 0xf) == 0xe)) #define IS_HSW_ULT(dev) (IS_HASWELL(dev) && \ ((dev)->pdev->device & 0xFF00) == 0x0A00) @@ -2063,12 +2061,17 @@ static inline bool i915_reset_in_progress(struct i915_gpu_error *error) { return unlikely(atomic_read(&error->reset_counter) - & I915_RESET_IN_PROGRESS_FLAG); + & (I915_RESET_IN_PROGRESS_FLAG | I915_WEDGED)); } static inline bool i915_terminally_wedged(struct i915_gpu_error *error) { - return atomic_read(&error->reset_counter) == I915_WEDGED; + return atomic_read(&error->reset_counter) & I915_WEDGED; +} + +static inline u32 i915_reset_count(struct i915_gpu_error *error) +{ + return ((atomic_read(&error->reset_counter) & ~I915_WEDGED) + 1) / 2; } void i915_gem_reset(struct drm_device *dev); @@ -2398,6 +2401,8 @@ extern bool i915_semaphore_is_enabled(struct drm_device *dev); int i915_reg_read_ioctl(struct drm_device *dev, void *data, struct drm_file *file); +int i915_get_reset_stats_ioctl(struct drm_device *dev, void *data, + struct drm_file *file); /* overlay */ extern struct intel_overlay_error_state *intel_overlay_capture_error_state(struct drm_device *dev); --- linux-3.13.0.orig/drivers/gpu/drm/i915/i915_gem.c +++ linux-3.13.0/drivers/gpu/drm/i915/i915_gem.c @@ -1424,10 +1424,13 @@ out: switch (ret) { case -EIO: - /* If this -EIO is due to a gpu hang, give the reset code a - * chance to clean up the mess. Otherwise return the proper - * SIGBUS. */ - if (i915_terminally_wedged(&dev_priv->gpu_error)) + /* + * We eat errors when the gpu is terminally wedged to avoid + * userspace unduly crashing (gl has no provisions for mmaps to + * fail). But any other -EIO isn't ours (e.g. swap in failure) + * and so needs to be reported. + */ + if (!i915_terminally_wedged(&dev_priv->gpu_error)) return VM_FAULT_SIGBUS; case -EAGAIN: /* @@ -2852,6 +2855,13 @@ u32 size = i915_gem_obj_ggtt_size(obj); uint64_t val; + /* Adjust fence size to match tiled area */ + if (obj->tiling_mode != I915_TILING_NONE) { + uint32_t row_size = obj->stride * + (obj->tiling_mode == I915_TILING_Y ? 32 : 8); + size = (size / row_size) * row_size; + } + val = (uint64_t)((i915_gem_obj_ggtt_offset(obj) + size - 4096) & 0xfffff000) << 32; val |= i915_gem_obj_ggtt_offset(obj) & 0xfffff000; @@ -3486,7 +3496,7 @@ { struct drm_device *dev = obj->base.dev; drm_i915_private_t *dev_priv = dev->dev_private; - struct i915_vma *vma; + struct i915_vma *vma, *next; int ret; if (obj->cache_level == cache_level) @@ -3497,7 +3507,7 @@ return -EBUSY; } - list_for_each_entry(vma, &obj->vma_list, vma_link) { + list_for_each_entry_safe(vma, next, &obj->vma_list, vma_link) { if (!i915_gem_valid_gtt_space(dev, &vma->node, cache_level)) { ret = i915_vma_unbind(vma); if (ret) @@ -3923,6 +3933,9 @@ struct drm_i915_gem_object *obj; int ret; + if (drm_core_check_feature(dev, DRIVER_MODESET)) + return -ENODEV; + ret = i915_mutex_lock_interruptible(dev); if (ret) return ret; @@ -3976,6 +3989,9 @@ struct drm_i915_gem_object *obj; int ret; + if (drm_core_check_feature(dev, DRIVER_MODESET)) + return -ENODEV; + ret = i915_mutex_lock_interruptible(dev); if (ret) return ret; @@ -4922,7 +4938,7 @@ if (!mutex_is_locked(mutex)) return false; -#if defined(CONFIG_SMP) || defined(CONFIG_DEBUG_MUTEXES) +#if defined(CONFIG_SMP) && !defined(CONFIG_DEBUG_MUTEXES) return mutex->owner == task; #else /* Since UP may be pre-empted, we cannot assume that we own the lock */ --- linux-3.13.0.orig/drivers/gpu/drm/i915/i915_gem_execbuffer.c +++ linux-3.13.0/drivers/gpu/drm/i915/i915_gem_execbuffer.c @@ -767,9 +767,9 @@ * relocations were valid. */ for (j = 0; j < exec[i].relocation_count; j++) { - if (copy_to_user(&user_relocs[j].presumed_offset, - &invalid_offset, - sizeof(invalid_offset))) { + if (__copy_to_user(&user_relocs[j].presumed_offset, + &invalid_offset, + sizeof(invalid_offset))) { ret = -EFAULT; mutex_lock(&dev->struct_mutex); goto err; @@ -912,6 +912,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; @@ -920,7 +921,6 @@ i915_vma_move_to_active(vma, ring); if (obj->base.write_domain) { - obj->dirty = 1; obj->last_write_seqno = intel_ring_get_seqno(ring); if (obj->pin_count) /* check for potential scanout */ intel_mark_fb_busy(obj, ring); @@ -1312,18 +1312,21 @@ ret = i915_gem_do_execbuffer(dev, data, file, &exec2, exec2_list, &dev_priv->gtt.base); if (!ret) { + struct drm_i915_gem_exec_object __user *user_exec_list = + to_user_ptr(args->buffers_ptr); + /* Copy the new buffer offsets back to the user's exec list. */ - for (i = 0; i < args->buffer_count; i++) - exec_list[i].offset = exec2_list[i].offset; - /* ... and back out to userspace */ - ret = copy_to_user(to_user_ptr(args->buffers_ptr), - exec_list, - sizeof(*exec_list) * args->buffer_count); - if (ret) { - ret = -EFAULT; - DRM_DEBUG("failed to copy %d exec entries " - "back to user (%d)\n", - args->buffer_count, ret); + for (i = 0; i < args->buffer_count; i++) { + ret = __copy_to_user(&user_exec_list[i].offset, + &exec2_list[i].offset, + sizeof(user_exec_list[i].offset)); + if (ret) { + ret = -EFAULT; + DRM_DEBUG("failed to copy %d exec entries " + "back to user (%d)\n", + args->buffer_count, ret); + break; + } } } @@ -1371,14 +1374,21 @@ &dev_priv->gtt.base); if (!ret) { /* Copy the new buffer offsets back to the user's exec list. */ - ret = copy_to_user(to_user_ptr(args->buffers_ptr), - exec2_list, - sizeof(*exec2_list) * args->buffer_count); - if (ret) { - ret = -EFAULT; - DRM_DEBUG("failed to copy %d exec entries " - "back to user (%d)\n", - args->buffer_count, ret); + struct drm_i915_gem_exec_object2 *user_exec_list = + to_user_ptr(args->buffers_ptr); + int i; + + for (i = 0; i < args->buffer_count; i++) { + ret = __copy_to_user(&user_exec_list[i].offset, + &exec2_list[i].offset, + sizeof(user_exec_list[i].offset)); + if (ret) { + ret = -EFAULT; + DRM_DEBUG("failed to copy %d exec entries " + "back to user\n", + args->buffer_count); + break; + } } } --- linux-3.13.0.orig/drivers/gpu/drm/i915/i915_gem_gtt.c +++ linux-3.13.0/drivers/gpu/drm/i915/i915_gem_gtt.c @@ -813,6 +813,16 @@ POSTING_READ(RING_FAULT_REG(&dev_priv->ring[RCS])); } +static void i915_ggtt_flush(struct drm_i915_private *dev_priv) +{ + if (INTEL_INFO(dev_priv->dev)->gen < 6) { + intel_gtt_chipset_flush(); + } else { + I915_WRITE(GFX_FLSH_CNTL_GEN6, GFX_FLSH_CNTL_EN); + POSTING_READ(GFX_FLSH_CNTL_GEN6); + } +} + void i915_gem_suspend_gtt_mappings(struct drm_device *dev) { struct drm_i915_private *dev_priv = dev->dev_private; @@ -828,7 +838,9 @@ dev_priv->gtt.base.clear_range(&dev_priv->gtt.base, dev_priv->gtt.base.start / PAGE_SIZE, dev_priv->gtt.base.total / PAGE_SIZE, - false); + true); + + i915_ggtt_flush(dev_priv); } void i915_gem_restore_gtt_mappings(struct drm_device *dev) @@ -849,7 +861,7 @@ i915_gem_gtt_bind_object(obj, obj->cache_level); } - i915_gem_chipset_flush(dev); + i915_ggtt_flush(dev_priv); } int i915_gem_gtt_prepare_object(struct drm_i915_gem_object *obj) --- linux-3.13.0.orig/drivers/gpu/drm/i915/i915_gem_stolen.c +++ linux-3.13.0/drivers/gpu/drm/i915/i915_gem_stolen.c @@ -74,6 +74,50 @@ if (base == 0) return 0; + /* make sure we don't clobber the GTT if it's within stolen memory */ + if (INTEL_INFO(dev)->gen <= 4 && !IS_G33(dev) && !IS_G4X(dev)) { + struct { + u32 start, end; + } stolen[2] = { + { .start = base, .end = base + dev_priv->gtt.stolen_size, }, + { .start = base, .end = base + dev_priv->gtt.stolen_size, }, + }; + u64 gtt_start, gtt_end; + + gtt_start = I915_READ(PGTBL_CTL); + if (IS_GEN4(dev)) + gtt_start = (gtt_start & PGTBL_ADDRESS_LO_MASK) | + (gtt_start & PGTBL_ADDRESS_HI_MASK) << 28; + else + gtt_start &= PGTBL_ADDRESS_LO_MASK; + gtt_end = gtt_start + gtt_total_entries(dev_priv->gtt) * 4; + + if (gtt_start >= stolen[0].start && gtt_start < stolen[0].end) + stolen[0].end = gtt_start; + if (gtt_end > stolen[1].start && gtt_end <= stolen[1].end) + stolen[1].start = gtt_end; + + /* pick the larger of the two chunks */ + if (stolen[0].end - stolen[0].start > + stolen[1].end - stolen[1].start) { + base = stolen[0].start; + dev_priv->gtt.stolen_size = stolen[0].end - stolen[0].start; + } else { + base = stolen[1].start; + dev_priv->gtt.stolen_size = stolen[1].end - stolen[1].start; + } + + if (stolen[0].start != stolen[1].start || + stolen[0].end != stolen[1].end) { + DRM_DEBUG_KMS("GTT within stolen memory at 0x%llx-0x%llx\n", + (unsigned long long) gtt_start, + (unsigned long long) gtt_end - 1); + DRM_DEBUG_KMS("Stolen memory adjusted to 0x%x-0x%x\n", + base, base + (u32) dev_priv->gtt.stolen_size - 1); + } + } + + /* Verify that nothing else uses this physical address. Stolen * memory should be reserved by the BIOS and hidden from the * kernel. So if the region is already marked as busy, something @@ -81,7 +125,11 @@ */ r = devm_request_mem_region(dev->dev, base, dev_priv->gtt.stolen_size, "Graphics Stolen Memory"); - if (r == NULL) { + /* + * GEN3 firmware likes to smash pci bridges into the stolen + * range. Apparently this works. + */ + if (r == NULL && !IS_GEN3(dev)) { DRM_ERROR("conflict detected with stolen region: [0x%08x - 0x%08x]\n", base, base + (uint32_t)dev_priv->gtt.stolen_size); base = 0; @@ -201,6 +249,13 @@ struct drm_i915_private *dev_priv = dev->dev_private; int bios_reserved = 0; +#ifdef CONFIG_INTEL_IOMMU + if (intel_iommu_gfx_mapped) { + DRM_INFO("DMAR active, disabling use of stolen memory\n"); + return 0; + } +#endif + if (dev_priv->gtt.stolen_size == 0) return 0; @@ -250,7 +305,7 @@ } sg = st->sgl; - sg->offset = offset; + sg->offset = 0; sg->length = size; sg_dma_address(sg) = (dma_addr_t)dev_priv->mm.stolen_base + offset; --- linux-3.13.0.orig/drivers/gpu/drm/i915/i915_gpu_error.c +++ linux-3.13.0/drivers/gpu/drm/i915/i915_gpu_error.c @@ -146,7 +146,10 @@ va_list tmp; va_copy(tmp, args); - if (!__i915_error_seek(e, vsnprintf(NULL, 0, f, tmp))) + len = vsnprintf(NULL, 0, f, tmp); + va_end(tmp); + + if (!__i915_error_seek(e, len)) return; } @@ -239,6 +242,9 @@ unsigned ring) { BUG_ON(ring >= I915_NUM_RINGS); /* shut up confused gcc */ + if (!error->ring[ring].valid) + return; + err_printf(m, "%s command stream:\n", ring_str(ring)); err_printf(m, " HEAD: 0x%08x\n", error->head[ring]); err_printf(m, " TAIL: 0x%08x\n", error->tail[ring]); @@ -294,7 +300,6 @@ struct drm_device *dev = error_priv->dev; drm_i915_private_t *dev_priv = dev->dev_private; struct drm_i915_error_state *error = error_priv->error; - struct intel_ring_buffer *ring; int i, j, page, offset, elt; if (!error) { @@ -329,7 +334,7 @@ if (INTEL_INFO(dev)->gen == 7) err_printf(m, "ERR_INT: 0x%08x\n", error->err_int); - for_each_ring(ring, dev_priv, i) + for (i = 0; i < ARRAY_SIZE(error->ring); i++) i915_ring_error_state(m, dev, error, i); if (error->active_bo) @@ -386,8 +391,7 @@ } } - obj = error->ring[i].ctx; - if (obj) { + if ((obj = error->ring[i].ctx)) { err_printf(m, "%s --- HW Context = 0x%08x\n", dev_priv->ring[i].name, obj->gtt_offset); @@ -668,7 +672,8 @@ return NULL; obj = ring->scratch.obj; - if (acthd >= i915_gem_obj_ggtt_offset(obj) && + if (obj != NULL && + acthd >= i915_gem_obj_ggtt_offset(obj) && acthd < i915_gem_obj_ggtt_offset(obj) + obj->base.size) return i915_error_object_create(dev_priv, obj); } @@ -775,11 +780,17 @@ struct drm_i915_error_state *error) { struct drm_i915_private *dev_priv = dev->dev_private; - struct intel_ring_buffer *ring; struct drm_i915_gem_request *request; int i, count; - for_each_ring(ring, dev_priv, i) { + for (i = 0; i < I915_NUM_RINGS; i++) { + struct intel_ring_buffer *ring = &dev_priv->ring[i]; + + if (ring->dev == NULL) + continue; + + error->ring[i].valid = true; + i915_record_ring_state(dev, error, ring); error->ring[i].batchbuffer = --- linux-3.13.0.orig/drivers/gpu/drm/i915/i915_irq.c +++ linux-3.13.0/drivers/gpu/drm/i915/i915_irq.c @@ -567,8 +567,7 @@ vbl_start = mode->crtc_vblank_start * mode->crtc_htotal; } else { - enum transcoder cpu_transcoder = - intel_pipe_to_cpu_transcoder(dev_priv, pipe); + enum transcoder cpu_transcoder = (enum transcoder) pipe; u32 htotal; htotal = ((I915_READ(HTOTAL(cpu_transcoder)) >> 16) & 0x1fff) + 1; @@ -675,7 +674,8 @@ } static int i915_get_crtc_scanoutpos(struct drm_device *dev, int pipe, - int *vpos, int *hpos, ktime_t *stime, ktime_t *etime) + unsigned int flags, int *vpos, int *hpos, + ktime_t *stime, ktime_t *etime) { struct drm_i915_private *dev_priv = dev->dev_private; struct drm_crtc *crtc = dev_priv->pipe_to_crtc_mapping[pipe]; @@ -809,7 +809,8 @@ /* Helper routine in DRM core does all the work: */ return drm_calc_vbltimestamp_from_scanoutpos(dev, pipe, max_error, vblank_time, flags, - crtc); + crtc, + &to_intel_crtc(crtc)->config.adjusted_mode); } static bool intel_hpd_irq_event(struct drm_device *dev, @@ -1235,9 +1236,20 @@ spin_lock(&dev_priv->irq_lock); for (i = 1; i < HPD_NUM_PINS; i++) { - WARN(((hpd[i] & hotplug_trigger) && - dev_priv->hpd_stats[i].hpd_mark != HPD_ENABLED), - "Received HPD interrupt although disabled\n"); + if (hpd[i] & hotplug_trigger && + dev_priv->hpd_stats[i].hpd_mark == 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 (0x%08x) on pin %d (0x%08x) although disabled\n", + hotplug_trigger, i, hpd[i]); + + continue; + } if (!(hpd[i] & hotplug_trigger) || dev_priv->hpd_stats[i].hpd_mark != HPD_ENABLED) @@ -1993,7 +2005,7 @@ kobject_uevent_env(&dev->primary->kdev->kobj, KOBJ_CHANGE, reset_done_event); } else { - atomic_set(&error->reset_counter, I915_WEDGED); + atomic_set_mask(I915_WEDGED, &error->reset_counter); } /* @@ -2382,20 +2394,27 @@ { struct drm_i915_private *dev_priv = ring->dev->dev_private; struct intel_ring_buffer *signaller; - u32 seqno, ctl; + u32 seqno; - ring->hangcheck.deadlock = true; + ring->hangcheck.deadlock++; signaller = semaphore_waits_for(ring, &seqno); - if (signaller == NULL || signaller->hangcheck.deadlock) + if (signaller == NULL) return -1; + /* Prevent pathological recursion due to driver bugs */ + if (signaller->hangcheck.deadlock >= I915_NUM_RINGS) + return -1; + + if (i915_seqno_passed(signaller->get_seqno(signaller, false), seqno)) + return 1; + /* cursory check for an unkickable deadlock */ - ctl = I915_READ_CTL(signaller); - if (ctl & RING_WAIT_SEMAPHORE && semaphore_passed(signaller) < 0) + if (I915_READ_CTL(signaller) & RING_WAIT_SEMAPHORE && + semaphore_passed(signaller) < 0) return -1; - return i915_seqno_passed(signaller->get_seqno(signaller, false), seqno); + return 0; } static void semaphore_clear_deadlocks(struct drm_i915_private *dev_priv) @@ -2404,7 +2423,7 @@ int i; for_each_ring(ring, dev_priv, i) - ring->hangcheck.deadlock = false; + ring->hangcheck.deadlock = 0; } static enum intel_ring_hangcheck_action @@ -2761,10 +2780,9 @@ return; if (HAS_PCH_IBX(dev)) { - mask = SDE_GMBUS | SDE_AUX_MASK | SDE_TRANSB_FIFO_UNDER | - SDE_TRANSA_FIFO_UNDER | SDE_POISON; + mask = SDE_GMBUS | SDE_AUX_MASK | SDE_POISON; } else { - mask = SDE_GMBUS_CPT | SDE_AUX_MASK_CPT | SDE_ERROR_CPT; + mask = SDE_GMBUS_CPT | SDE_AUX_MASK_CPT; I915_WRITE(SERR_INT, I915_READ(SERR_INT)); } @@ -2824,20 +2842,19 @@ display_mask = (DE_MASTER_IRQ_CONTROL | DE_GSE_IVB | DE_PCH_EVENT_IVB | DE_PLANEC_FLIP_DONE_IVB | DE_PLANEB_FLIP_DONE_IVB | - DE_PLANEA_FLIP_DONE_IVB | DE_AUX_CHANNEL_A_IVB | - DE_ERR_INT_IVB); + DE_PLANEA_FLIP_DONE_IVB | DE_AUX_CHANNEL_A_IVB); extra_mask = (DE_PIPEC_VBLANK_IVB | DE_PIPEB_VBLANK_IVB | - DE_PIPEA_VBLANK_IVB); + DE_PIPEA_VBLANK_IVB | DE_ERR_INT_IVB); I915_WRITE(GEN7_ERR_INT, I915_READ(GEN7_ERR_INT)); } else { display_mask = (DE_MASTER_IRQ_CONTROL | DE_GSE | DE_PCH_EVENT | DE_PLANEA_FLIP_DONE | DE_PLANEB_FLIP_DONE | DE_AUX_CHANNEL_A | - DE_PIPEB_FIFO_UNDERRUN | DE_PIPEA_FIFO_UNDERRUN | DE_PIPEB_CRC_DONE | DE_PIPEA_CRC_DONE | DE_POISON); - extra_mask = DE_PIPEA_VBLANK | DE_PIPEB_VBLANK | DE_PCU_EVENT; + extra_mask = DE_PIPEA_VBLANK | DE_PIPEB_VBLANK | DE_PCU_EVENT | + DE_PIPEB_FIFO_UNDERRUN | DE_PIPEA_FIFO_UNDERRUN; } dev_priv->irq_mask = ~display_mask; @@ -2953,9 +2970,9 @@ struct drm_device *dev = dev_priv->dev; uint32_t de_pipe_masked = GEN8_PIPE_FLIP_DONE | GEN8_PIPE_CDCLK_CRC_DONE | - GEN8_PIPE_FIFO_UNDERRUN | GEN8_DE_PIPE_IRQ_FAULT_ERRORS; - uint32_t de_pipe_enables = de_pipe_masked | GEN8_PIPE_VBLANK; + uint32_t de_pipe_enables = de_pipe_masked | GEN8_PIPE_VBLANK | + GEN8_PIPE_FIFO_UNDERRUN; int pipe; dev_priv->de_irq_mask[PIPE_A] = ~de_pipe_masked; dev_priv->de_irq_mask[PIPE_B] = ~de_pipe_masked; @@ -3115,14 +3132,12 @@ ~(I915_DISPLAY_PIPE_A_EVENT_INTERRUPT | I915_DISPLAY_PIPE_B_EVENT_INTERRUPT | I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT | - I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT | - I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT); + I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT); I915_WRITE16(IMR, dev_priv->irq_mask); I915_WRITE16(IER, I915_DISPLAY_PIPE_A_EVENT_INTERRUPT | I915_DISPLAY_PIPE_B_EVENT_INTERRUPT | - I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT | I915_USER_INTERRUPT); POSTING_READ16(IER); @@ -3140,10 +3155,10 @@ * Returns true when a page flip has completed. */ static bool i8xx_handle_vblank(struct drm_device *dev, - int pipe, u16 iir) + int plane, int pipe, u32 iir) { drm_i915_private_t *dev_priv = dev->dev_private; - u16 flip_pending = DISPLAY_PLANE_FLIP_PENDING(pipe); + u16 flip_pending = DISPLAY_PLANE_FLIP_PENDING(plane); if (!drm_handle_vblank(dev, pipe)) return false; @@ -3151,8 +3166,6 @@ if ((iir & flip_pending) == 0) return false; - intel_prepare_page_flip(dev, pipe); - /* We detect FlipDone by looking for the change in PendingFlip from '1' * to '0' on the following vblank, i.e. IIR has the Pendingflip * asserted following the MI_DISPLAY_FLIP, but ISR is deasserted, hence @@ -3162,6 +3175,7 @@ if (I915_READ16(ISR) & flip_pending) return false; + intel_prepare_page_flip(dev, plane); intel_finish_page_flip(dev, pipe); return true; @@ -3220,9 +3234,13 @@ notify_ring(dev, &dev_priv->ring[RCS]); for_each_pipe(pipe) { + int plane = pipe; + if (I915_HAS_FBC(dev)) + plane = !plane; + if (pipe_stats[pipe] & PIPE_VBLANK_INTERRUPT_STATUS && - i8xx_handle_vblank(dev, pipe, iir)) - flip_mask &= ~DISPLAY_PLANE_FLIP_PENDING(pipe); + i8xx_handle_vblank(dev, plane, pipe, iir)) + flip_mask &= ~DISPLAY_PLANE_FLIP_PENDING(plane); if (pipe_stats[pipe] & PIPE_CRC_DONE_INTERRUPT_STATUS) i9xx_pipe_crc_irq_handler(dev, pipe); @@ -3283,14 +3301,12 @@ I915_DISPLAY_PIPE_A_EVENT_INTERRUPT | I915_DISPLAY_PIPE_B_EVENT_INTERRUPT | I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT | - I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT | - I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT); + I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT); enable_mask = I915_ASLE_INTERRUPT | I915_DISPLAY_PIPE_A_EVENT_INTERRUPT | I915_DISPLAY_PIPE_B_EVENT_INTERRUPT | - I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT | I915_USER_INTERRUPT; if (I915_HAS_HOTPLUG(dev)) { @@ -3334,8 +3350,6 @@ if ((iir & flip_pending) == 0) return false; - intel_prepare_page_flip(dev, plane); - /* We detect FlipDone by looking for the change in PendingFlip from '1' * to '0' on the following vblank, i.e. IIR has the Pendingflip * asserted following the MI_DISPLAY_FLIP, but ISR is deasserted, hence @@ -3345,6 +3359,7 @@ if (I915_READ(ISR) & flip_pending) return false; + intel_prepare_page_flip(dev, plane); intel_finish_page_flip(dev, pipe); return true; @@ -3418,7 +3433,7 @@ for_each_pipe(pipe) { int plane = pipe; - if (IS_MOBILE(dev)) + if (I915_HAS_FBC(dev)) plane = !plane; if (pipe_stats[pipe] & PIPE_VBLANK_INTERRUPT_STATUS && --- linux-3.13.0.orig/drivers/gpu/drm/i915/i915_reg.h +++ linux-3.13.0/drivers/gpu/drm/i915/i915_reg.h @@ -74,6 +74,7 @@ #define I915_GC_RENDER_CLOCK_200_MHZ (1 << 0) #define I915_GC_RENDER_CLOCK_333_MHZ (4 << 0) #define LBB 0xf4 +#define GCDGMBUS 0xcc /* Graphics reset regs */ #define I965_GDRST 0xc0 /* PCI config register */ @@ -300,16 +301,20 @@ #define GFX_OP_DESTBUFFER_INFO ((0x3<<29)|(0x1d<<24)|(0x8e<<16)|1) #define GFX_OP_DRAWRECT_INFO ((0x3<<29)|(0x1d<<24)|(0x80<<16)|(0x3)) #define GFX_OP_DRAWRECT_INFO_I965 ((0x7900<<16)|0x2) -#define SRC_COPY_BLT_CMD ((2<<29)|(0x43<<22)|4) + +#define COLOR_BLT_CMD (2<<29 | 0x40<<22 | (5-2)) +#define SRC_COPY_BLT_CMD ((2<<29)|(0x43<<22)|4) #define XY_SRC_COPY_BLT_CMD ((2<<29)|(0x53<<22)|6) #define XY_MONO_SRC_COPY_IMM_BLT ((2<<29)|(0x71<<22)|5) -#define XY_SRC_COPY_BLT_WRITE_ALPHA (1<<21) -#define XY_SRC_COPY_BLT_WRITE_RGB (1<<20) +#define BLT_WRITE_A (2<<20) +#define BLT_WRITE_RGB (1<<20) +#define BLT_WRITE_RGBA (BLT_WRITE_RGB | BLT_WRITE_A) #define BLT_DEPTH_8 (0<<24) #define BLT_DEPTH_16_565 (1<<24) #define BLT_DEPTH_16_1555 (2<<24) #define BLT_DEPTH_32 (3<<24) -#define BLT_ROP_GXCOPY (0xcc<<16) +#define BLT_ROP_SRC_COPY (0xcc<<16) +#define BLT_ROP_COLOR_COPY (0xf0<<16) #define XY_SRC_COPY_BLT_SRC_TILED (1<<15) /* 965+ only */ #define XY_SRC_COPY_BLT_DST_TILED (1<<11) /* 965+ only */ #define CMD_OP_DISPLAYBUFFER_INFO ((0x0<<29)|(0x14<<23)|2) @@ -320,6 +325,7 @@ #define PIPE_CONTROL_GLOBAL_GTT_IVB (1<<24) /* gen7+ */ #define PIPE_CONTROL_CS_STALL (1<<20) #define PIPE_CONTROL_TLB_INVALIDATE (1<<18) +#define PIPE_CONTROL_MEDIA_STATE_CLEAR (1<<16) #define PIPE_CONTROL_QW_WRITE (1<<14) #define PIPE_CONTROL_DEPTH_STALL (1<<13) #define PIPE_CONTROL_WRITE_FLUSH (1<<12) @@ -628,6 +634,9 @@ /* * Instruction and interrupt control regs */ +#define PGTBL_CTL 0x02020 +#define PGTBL_ADDRESS_LO_MASK 0xfffff000 /* bits [31:12] */ +#define PGTBL_ADDRESS_HI_MASK 0x000000f0 /* bits [35:32] (gen4) */ #define PGTBL_ER 0x02024 #define RENDER_RING_BASE 0x02000 #define BSD_RING_BASE 0x04000 @@ -1172,6 +1181,7 @@ #define GMBUS_CYCLE_INDEX (2<<25) #define GMBUS_CYCLE_STOP (4<<25) #define GMBUS_BYTE_COUNT_SHIFT 16 +#define GMBUS_BYTE_COUNT_MAX 256U #define GMBUS_SLAVE_INDEX_SHIFT 8 #define GMBUS_SLAVE_ADDR_SHIFT 1 #define GMBUS_SLAVE_READ (1<<0) @@ -2117,9 +2127,13 @@ * Please check the detailed lore in the commit message for for experimental * evidence. */ -#define PORTD_HOTPLUG_LIVE_STATUS (1 << 29) -#define PORTC_HOTPLUG_LIVE_STATUS (1 << 28) -#define PORTB_HOTPLUG_LIVE_STATUS (1 << 27) +#define PORTD_HOTPLUG_LIVE_STATUS_G4X (1 << 29) +#define PORTC_HOTPLUG_LIVE_STATUS_G4X (1 << 28) +#define PORTB_HOTPLUG_LIVE_STATUS_G4X (1 << 27) +/* VLV DP/HDMI bits again match Bspec */ +#define PORTD_HOTPLUG_LIVE_STATUS_VLV (1 << 27) +#define PORTC_HOTPLUG_LIVE_STATUS_VLV (1 << 28) +#define PORTB_HOTPLUG_LIVE_STATUS_VLV (1 << 29) #define PORTD_HOTPLUG_INT_STATUS (3 << 21) #define PORTC_HOTPLUG_INT_STATUS (3 << 19) #define PORTB_HOTPLUG_INT_STATUS (3 << 17) --- linux-3.13.0.orig/drivers/gpu/drm/i915/i915_suspend.c +++ linux-3.13.0/drivers/gpu/drm/i915/i915_suspend.c @@ -397,6 +397,10 @@ intel_disable_gt_powersave(dev); + if (IS_GEN4(dev)) + pci_read_config_word(dev->pdev, GCDGMBUS, + &dev_priv->regfile.saveGCDGMBUS); + /* Cache mode state */ if (INTEL_INFO(dev)->gen < 7) dev_priv->regfile.saveCACHE_MODE_0 = I915_READ(CACHE_MODE_0); @@ -429,6 +433,10 @@ mutex_lock(&dev->struct_mutex); i915_gem_restore_fences(dev); + + if (IS_GEN4(dev)) + pci_write_config_word(dev->pdev, GCDGMBUS, + dev_priv->regfile.saveGCDGMBUS); i915_restore_display(dev); if (!drm_core_check_feature(dev, DRIVER_MODESET)) { --- linux-3.13.0.orig/drivers/gpu/drm/i915/i915_trace.h +++ linux-3.13.0/drivers/gpu/drm/i915/i915_trace.h @@ -238,14 +238,16 @@ TP_ARGS(vm), TP_STRUCT__entry( + __field(u32, dev) __field(struct i915_address_space *, vm) ), TP_fast_assign( + __entry->dev = vm->dev->primary->index; __entry->vm = vm; ), - TP_printk("dev=%d, vm=%p", __entry->vm->dev->primary->index, __entry->vm) + TP_printk("dev=%d, vm=%p", __entry->dev, __entry->vm) ); TRACE_EVENT(i915_gem_ring_sync_to, --- linux-3.13.0.orig/drivers/gpu/drm/i915/intel_bios.c +++ linux-3.13.0/drivers/gpu/drm/i915/intel_bios.c @@ -811,7 +811,7 @@ } } -static int __init intel_no_opregion_vbt_callback(const struct dmi_system_id *id) +static int intel_no_opregion_vbt_callback(const struct dmi_system_id *id) { DRM_DEBUG_KMS("Falling back to manually reading VBT from " "VBIOS ROM for %s\n", --- linux-3.13.0.orig/drivers/gpu/drm/i915/intel_crt.c +++ linux-3.13.0/drivers/gpu/drm/i915/intel_crt.c @@ -749,7 +749,7 @@ .destroy = intel_encoder_destroy, }; -static int __init intel_no_crt_dmi_callback(const struct dmi_system_id *id) +static int intel_no_crt_dmi_callback(const struct dmi_system_id *id) { DRM_INFO("Skipping CRT initialization for %s\n", id->ident); return 1; @@ -764,6 +764,14 @@ DMI_MATCH(DMI_PRODUCT_NAME, "ZGB"), }, }, + { + .callback = intel_no_crt_dmi_callback, + .ident = "DELL XPS 8700", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "XPS 8700"), + }, + }, { } }; --- linux-3.13.0.orig/drivers/gpu/drm/i915/intel_display.c +++ linux-3.13.0/drivers/gpu/drm/i915/intel_display.c @@ -3755,7 +3755,6 @@ ironlake_fdi_disable(crtc); ironlake_disable_pch_transcoder(dev_priv, pipe); - intel_set_pch_fifo_underrun_reporting(dev, pipe, true); if (HAS_PCH_CPT(dev)) { /* disable TRANS_DP_CTL */ @@ -3821,7 +3820,6 @@ if (intel_crtc->config.has_pch_encoder) { lpt_disable_pch_transcoder(dev_priv); - intel_set_pch_fifo_underrun_reporting(dev, TRANSCODER_A, true); intel_ddi_fdi_disable(crtc); } @@ -8335,6 +8333,20 @@ if (ring->id == RCS) len += 6; + /* + * BSpec MI_DISPLAY_FLIP for IVB: + * "The full packet must be contained within the same cache line." + * + * Currently the LRI+SRM+MI_DISPLAY_FLIP all fit within the same + * cacheline, if we ever start emitting more commands before + * the MI_DISPLAY_FLIP we may need to first emit everything else, + * then do the cacheline alignment, and finally emit the + * MI_DISPLAY_FLIP. + */ + ret = intel_ring_cacheline_align(ring); + if (ret) + goto err_unpin; + ret = intel_ring_begin(ring, len); if (ret) goto err_unpin; @@ -8578,11 +8590,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; + } } } @@ -9111,11 +9133,22 @@ PIPE_CONF_CHECK_I(pipe_src_w); PIPE_CONF_CHECK_I(pipe_src_h); - PIPE_CONF_CHECK_I(gmch_pfit.control); - /* pfit ratios are autocomputed by the hw on gen4+ */ - if (INTEL_INFO(dev)->gen < 4) - PIPE_CONF_CHECK_I(gmch_pfit.pgm_ratios); - PIPE_CONF_CHECK_I(gmch_pfit.lvds_border_bits); + /* + * FIXME: BIOS likes to set up a cloned config with lvds+external + * screen. Since we don't yet re-compute the pipe config when moving + * just the lvds port away to another pipe the sw tracking won't match. + * + * Proper atomic modesets with recomputed global state will fix this. + * Until then just don't check gmch state for inherited modes. + */ + if (!PIPE_CONF_QUIRK(PIPE_CONFIG_QUIRK_INHERITED_MODE)) { + PIPE_CONF_CHECK_I(gmch_pfit.control); + /* pfit ratios are autocomputed by the hw on gen4+ */ + if (INTEL_INFO(dev)->gen < 4) + PIPE_CONF_CHECK_I(gmch_pfit.pgm_ratios); + PIPE_CONF_CHECK_I(gmch_pfit.lvds_border_bits); + } + PIPE_CONF_CHECK_I(pch_pfit.enabled); if (current_config->pch_pfit.enabled) { PIPE_CONF_CHECK_I(pch_pfit.pos); @@ -9449,7 +9482,8 @@ * are later needed by vblank and swap-completion * timestamping. They are derived from true hwmode. */ - drm_calc_timestamping_constants(crtc); + drm_calc_timestamping_constants(crtc, + &pipe_config->adjusted_mode); } /* FIXME: add subpixel order */ @@ -9926,10 +9960,13 @@ intel_crtc->lut_b[i] = i; } - /* Swap pipes & planes for FBC on pre-965 */ + /* + * On gen2/3 only plane A can do fbc, but the panel fitter and lvds port + * is hooked to plane B. Hence we want plane A feeding pipe B. + */ intel_crtc->pipe = pipe; intel_crtc->plane = pipe; - if (IS_MOBILE(dev) && IS_GEN3(dev)) { + if (I915_HAS_FBC(dev) && INTEL_INFO(dev)->gen < 4) { DRM_DEBUG_KMS("swapping pipes & planes for FBC\n"); intel_crtc->plane = !pipe; } @@ -10556,6 +10593,9 @@ /* Acer Aspire 4736Z */ { 0x2a42, 0x1025, 0x0260, quirk_invert_brightness }, + /* Acer Aspire 5336 */ + { 0x2a42, 0x1025, 0x048a, quirk_invert_brightness }, + /* Dell XPS13 HD Sandy Bridge */ { 0x0116, 0x1028, 0x052e, quirk_no_pcm_pwm_enable }, /* Dell XPS13 HD and XPS13 FHD Ivy Bridge */ @@ -10687,15 +10727,6 @@ intel_disable_fbc(dev); } -static void -intel_connector_break_all_links(struct intel_connector *connector) -{ - connector->base.dpms = DRM_MODE_DPMS_OFF; - connector->base.encoder = NULL; - connector->encoder->connectors_active = false; - connector->encoder->base.crtc = NULL; -} - static void intel_enable_pipe_a(struct drm_device *dev) { struct intel_connector *connector; @@ -10777,8 +10808,17 @@ if (connector->encoder->base.crtc != &crtc->base) continue; - intel_connector_break_all_links(connector); + connector->base.dpms = DRM_MODE_DPMS_OFF; + connector->base.encoder = NULL; } + /* multiple connectors may have the same encoder: + * handle them and break crtc link separately */ + list_for_each_entry(connector, &dev->mode_config.connector_list, + base.head) + if (connector->encoder->base.crtc == &crtc->base) { + connector->encoder->base.crtc = NULL; + connector->encoder->connectors_active = false; + } WARN_ON(crtc->active); crtc->base.enabled = false; @@ -10849,6 +10889,8 @@ drm_get_encoder_name(&encoder->base)); encoder->disable(encoder); } + encoder->base.crtc = NULL; + encoder->connectors_active = false; /* Inconsistent output/port/pipe state happens presumably due to * a bug in one of the get_hw_state functions. Or someplace else @@ -10859,8 +10901,8 @@ base.head) { if (connector->encoder != encoder) continue; - - intel_connector_break_all_links(connector); + connector->base.dpms = DRM_MODE_DPMS_OFF; + connector->base.encoder = NULL; } } /* Enabled encoders without active connectors will be fixed in @@ -10902,6 +10944,8 @@ base.head) { memset(&crtc->config, 0, sizeof(crtc->config)); + crtc->config.quirks |= PIPE_CONFIG_QUIRK_INHERITED_MODE; + crtc->active = dev_priv->display.get_pipe_config(crtc, &crtc->config); --- linux-3.13.0.orig/drivers/gpu/drm/i915/intel_dp.c +++ linux-3.13.0/drivers/gpu/drm/i915/intel_dp.c @@ -96,13 +96,18 @@ intel_dp_max_link_bw(struct intel_dp *intel_dp) { int max_link_bw = intel_dp->dpcd[DP_MAX_LINK_RATE]; + struct drm_device *dev = intel_dp->attached_connector->base.dev; switch (max_link_bw) { case DP_LINK_BW_1_62: case DP_LINK_BW_2_7: break; case DP_LINK_BW_5_4: /* 1.2 capable displays may advertise higher bw */ - max_link_bw = DP_LINK_BW_2_7; + if ((IS_HASWELL(dev) || INTEL_INFO(dev)->gen >= 8) && + intel_dp->dpcd[DP_DPCD_REV] >= 0x12) + max_link_bw = DP_LINK_BW_5_4; + else + max_link_bw = DP_LINK_BW_2_7; break; default: WARN(1, "invalid max DP link bw val %x, using 1.62Gbps\n", @@ -481,10 +486,8 @@ DP_AUX_CH_CTL_RECEIVE_ERROR)) continue; if (status & DP_AUX_CH_CTL_DONE) - break; + goto done; } - if (status & DP_AUX_CH_CTL_DONE) - break; } if ((status & DP_AUX_CH_CTL_DONE) == 0) { @@ -493,6 +496,7 @@ goto out; } +done: /* Check for timeout or receive error. * Timeouts occur when the sink is not connected */ @@ -537,6 +541,7 @@ uint8_t msg[20]; int msg_bytes; uint8_t ack; + int retry; if (WARN_ON(send_bytes > 16)) return -E2BIG; @@ -548,18 +553,20 @@ msg[3] = send_bytes - 1; memcpy(&msg[4], send, send_bytes); msg_bytes = send_bytes + 4; - for (;;) { + for (retry = 0; retry < 7; retry++) { ret = intel_dp_aux_ch(intel_dp, msg, msg_bytes, &ack, 1); if (ret < 0) return ret; if ((ack & AUX_NATIVE_REPLY_MASK) == AUX_NATIVE_REPLY_ACK) - break; + return send_bytes; else if ((ack & AUX_NATIVE_REPLY_MASK) == AUX_NATIVE_REPLY_DEFER) - udelay(100); + usleep_range(400, 500); else return -EIO; } - return send_bytes; + + DRM_ERROR("too many retries, giving up\n"); + return -EIO; } /* Write a single byte to the aux channel in native mode */ @@ -581,6 +588,7 @@ int reply_bytes; uint8_t ack; int ret; + int retry; if (WARN_ON(recv_bytes > 19)) return -E2BIG; @@ -594,7 +602,7 @@ msg_bytes = 4; reply_bytes = recv_bytes + 1; - for (;;) { + for (retry = 0; retry < 7; retry++) { ret = intel_dp_aux_ch(intel_dp, msg, msg_bytes, reply, reply_bytes); if (ret == 0) @@ -607,10 +615,13 @@ return ret - 1; } else if ((ack & AUX_NATIVE_REPLY_MASK) == AUX_NATIVE_REPLY_DEFER) - udelay(100); + usleep_range(400, 500); else return -EIO; } + + DRM_ERROR("too many retries, giving up\n"); + return -EIO; } static int @@ -804,9 +815,10 @@ struct intel_connector *intel_connector = intel_dp->attached_connector; int lane_count, clock; int max_lane_count = drm_dp_max_lane_count(intel_dp->dpcd); - int max_clock = intel_dp_max_link_bw(intel_dp) == DP_LINK_BW_2_7 ? 1 : 0; + /* Conveniently, the link BW constants become indices with a shift...*/ + int max_clock = intel_dp_max_link_bw(intel_dp) >> 3; int bpp, mode_rate; - static int bws[2] = { DP_LINK_BW_1_62, DP_LINK_BW_2_7 }; + static int bws[] = { DP_LINK_BW_1_62, DP_LINK_BW_2_7, DP_LINK_BW_5_4 }; int link_avail, link_clock; if (HAS_PCH_SPLIT(dev) && !HAS_DDI(dev) && port != PORT_A) @@ -1627,7 +1639,7 @@ val |= EDP_PSR_LINK_DISABLE; I915_WRITE(EDP_PSR_CTL(dev), val | - IS_BROADWELL(dev) ? 0 : link_entry_time | + (IS_BROADWELL(dev) ? 0 : link_entry_time) | max_sleep_time << EDP_PSR_MAX_SLEEP_TIME_SHIFT | idle_frames << EDP_PSR_IDLE_FRAME_SHIFT | EDP_PSR_ENABLE); @@ -1865,10 +1877,12 @@ mutex_unlock(&dev_priv->dpio_lock); - /* init power sequencer on this pipe and port */ - intel_dp_init_panel_power_sequencer(dev, intel_dp, &power_seq); - intel_dp_init_panel_power_sequencer_registers(dev, intel_dp, - &power_seq); + if (is_edp(intel_dp)) { + /* init power sequencer on this pipe and port */ + intel_dp_init_panel_power_sequencer(dev, intel_dp, &power_seq); + intel_dp_init_panel_power_sequencer_registers(dev, intel_dp, + &power_seq); + } intel_enable_dp(encoder); @@ -2629,10 +2643,15 @@ bool channel_eq = false; int tries, cr_tries; uint32_t DP = intel_dp->DP; + uint32_t training_pattern = DP_TRAINING_PATTERN_2; + + /* Training Pattern 3 for HBR2 ot 1.2 devices that support it*/ + if (intel_dp->link_bw == DP_LINK_BW_5_4 || intel_dp->use_tps3) + training_pattern = DP_TRAINING_PATTERN_3; /* channel equalization */ if (!intel_dp_set_link_train(intel_dp, &DP, - DP_TRAINING_PATTERN_2 | + training_pattern | DP_LINK_SCRAMBLING_DISABLE)) { DRM_ERROR("failed to start channel equalization\n"); return; @@ -2660,7 +2679,7 @@ if (!drm_dp_clock_recovery_ok(link_status, intel_dp->lane_count)) { intel_dp_start_link_train(intel_dp); intel_dp_set_link_train(intel_dp, &DP, - DP_TRAINING_PATTERN_2 | + training_pattern | DP_LINK_SCRAMBLING_DISABLE); cr_tries++; continue; @@ -2676,7 +2695,7 @@ intel_dp_link_down(intel_dp); intel_dp_start_link_train(intel_dp); intel_dp_set_link_train(intel_dp, &DP, - DP_TRAINING_PATTERN_2 | + training_pattern | DP_LINK_SCRAMBLING_DISABLE); tries = 0; cr_tries++; @@ -2818,6 +2837,14 @@ } } + /* Training Pattern 3 support */ + if (intel_dp->dpcd[DP_DPCD_REV] >= 0x12 && + intel_dp->dpcd[DP_MAX_LANE_COUNT] & DP_TPS3_SUPPORTED) { + intel_dp->use_tps3 = true; + DRM_DEBUG_KMS("Displayport TPS3 supported"); + } else + intel_dp->use_tps3 = false; + if (!(intel_dp->dpcd[DP_DOWNSTREAMPORT_PRESENT] & DP_DWN_STRM_PORT_PRESENT)) return true; /* native DP sink */ @@ -3020,18 +3047,34 @@ return status; } - switch (intel_dig_port->port) { - case PORT_B: - bit = PORTB_HOTPLUG_LIVE_STATUS; - break; - case PORT_C: - bit = PORTC_HOTPLUG_LIVE_STATUS; - break; - case PORT_D: - bit = PORTD_HOTPLUG_LIVE_STATUS; - break; - default: - return connector_status_unknown; + if (IS_VALLEYVIEW(dev)) { + switch (intel_dig_port->port) { + case PORT_B: + bit = PORTB_HOTPLUG_LIVE_STATUS_VLV; + break; + case PORT_C: + bit = PORTC_HOTPLUG_LIVE_STATUS_VLV; + break; + case PORT_D: + bit = PORTD_HOTPLUG_LIVE_STATUS_VLV; + break; + default: + return connector_status_unknown; + } + } else { + switch (intel_dig_port->port) { + case PORT_B: + bit = PORTB_HOTPLUG_LIVE_STATUS_G4X; + break; + case PORT_C: + bit = PORTC_HOTPLUG_LIVE_STATUS_G4X; + break; + case PORT_D: + bit = PORTD_HOTPLUG_LIVE_STATUS_G4X; + break; + default: + return connector_status_unknown; + } } if ((I915_READ(PORT_HOTPLUG_STAT) & bit) == 0) --- linux-3.13.0.orig/drivers/gpu/drm/i915/intel_drv.h +++ linux-3.13.0/drivers/gpu/drm/i915/intel_drv.h @@ -207,7 +207,8 @@ * tracked with quirk flags so that fastboot and state checker can act * accordingly. */ -#define PIPE_CONFIG_QUIRK_MODE_SYNC_FLAGS (1<<0) /* unreliable sync mode.flags */ +#define PIPE_CONFIG_QUIRK_MODE_SYNC_FLAGS (1<<0) /* unreliable sync mode.flags */ +#define PIPE_CONFIG_QUIRK_INHERITED_MODE (1<<1) /* mode inherited from firmware */ unsigned long quirks; /* User requested mode, only valid as a starting point to @@ -474,6 +475,7 @@ struct delayed_work panel_vdd_work; bool want_panel_vdd; bool psr_setup_done; + bool use_tps3; struct intel_connector *attached_connector; }; --- linux-3.13.0.orig/drivers/gpu/drm/i915/intel_hdmi.c +++ linux-3.13.0/drivers/gpu/drm/i915/intel_hdmi.c @@ -841,11 +841,11 @@ } } -static int hdmi_portclock_limit(struct intel_hdmi *hdmi) +static int hdmi_portclock_limit(struct intel_hdmi *hdmi, bool respect_dvi_limit) { struct drm_device *dev = intel_hdmi_to_dev(hdmi); - if (IS_G4X(dev)) + if ((respect_dvi_limit && !hdmi->has_hdmi_sink) || IS_G4X(dev)) return 165000; else if (IS_HASWELL(dev) || INTEL_INFO(dev)->gen >= 8) return 300000; @@ -856,7 +856,8 @@ static int intel_hdmi_mode_valid(struct drm_connector *connector, struct drm_display_mode *mode) { - if (mode->clock > hdmi_portclock_limit(intel_attached_hdmi(connector))) + if (mode->clock > hdmi_portclock_limit(intel_attached_hdmi(connector), + true)) return MODE_CLOCK_HIGH; if (mode->clock < 20000) return MODE_CLOCK_LOW; @@ -874,7 +875,7 @@ struct drm_device *dev = encoder->base.dev; struct drm_display_mode *adjusted_mode = &pipe_config->adjusted_mode; int clock_12bpc = pipe_config->adjusted_mode.crtc_clock * 3 / 2; - int portclock_limit = hdmi_portclock_limit(intel_hdmi); + int portclock_limit = hdmi_portclock_limit(intel_hdmi, false); int desired_bpp; if (intel_hdmi->color_range_auto) { @@ -898,8 +899,8 @@ * outputs. We also need to check that the higher clock still fits * within limits. */ - if (pipe_config->pipe_bpp > 8*3 && clock_12bpc <= portclock_limit - && HAS_PCH_SPLIT(dev)) { + if (pipe_config->pipe_bpp > 8*3 && intel_hdmi->has_hdmi_sink && + clock_12bpc <= portclock_limit && HAS_PCH_SPLIT(dev)) { DRM_DEBUG_KMS("picking bpc to 12 for HDMI output\n"); desired_bpp = 12*3; --- linux-3.13.0.orig/drivers/gpu/drm/i915/intel_i2c.c +++ linux-3.13.0/drivers/gpu/drm/i915/intel_i2c.c @@ -340,18 +340,17 @@ } static int -gmbus_xfer_read(struct drm_i915_private *dev_priv, struct i2c_msg *msg, - u32 gmbus1_index) +gmbus_xfer_read_chunk(struct drm_i915_private *dev_priv, + unsigned short addr, u8 *buf, unsigned int len, + u32 gmbus1_index) { int reg_offset = dev_priv->gpio_mmio_base; - u16 len = msg->len; - u8 *buf = msg->buf; I915_WRITE(GMBUS1 + reg_offset, gmbus1_index | GMBUS_CYCLE_WAIT | (len << GMBUS_BYTE_COUNT_SHIFT) | - (msg->addr << GMBUS_SLAVE_ADDR_SHIFT) | + (addr << GMBUS_SLAVE_ADDR_SHIFT) | GMBUS_SLAVE_READ | GMBUS_SW_RDY); while (len) { int ret; @@ -373,11 +372,35 @@ } static int -gmbus_xfer_write(struct drm_i915_private *dev_priv, struct i2c_msg *msg) +gmbus_xfer_read(struct drm_i915_private *dev_priv, struct i2c_msg *msg, + u32 gmbus1_index) { - int reg_offset = dev_priv->gpio_mmio_base; - u16 len = msg->len; u8 *buf = msg->buf; + unsigned int rx_size = msg->len; + unsigned int len; + int ret; + + do { + len = min(rx_size, GMBUS_BYTE_COUNT_MAX); + + ret = gmbus_xfer_read_chunk(dev_priv, msg->addr, + buf, len, gmbus1_index); + if (ret) + return ret; + + rx_size -= len; + buf += len; + } while (rx_size != 0); + + return 0; +} + +static int +gmbus_xfer_write_chunk(struct drm_i915_private *dev_priv, + unsigned short addr, u8 *buf, unsigned int len) +{ + int reg_offset = dev_priv->gpio_mmio_base; + unsigned int chunk_size = len; u32 val, loop; val = loop = 0; @@ -389,8 +412,8 @@ I915_WRITE(GMBUS3 + reg_offset, val); I915_WRITE(GMBUS1 + reg_offset, GMBUS_CYCLE_WAIT | - (msg->len << GMBUS_BYTE_COUNT_SHIFT) | - (msg->addr << GMBUS_SLAVE_ADDR_SHIFT) | + (chunk_size << GMBUS_BYTE_COUNT_SHIFT) | + (addr << GMBUS_SLAVE_ADDR_SHIFT) | GMBUS_SLAVE_WRITE | GMBUS_SW_RDY); while (len) { int ret; @@ -407,6 +430,29 @@ if (ret) return ret; } + + return 0; +} + +static int +gmbus_xfer_write(struct drm_i915_private *dev_priv, struct i2c_msg *msg) +{ + u8 *buf = msg->buf; + unsigned int tx_size = msg->len; + unsigned int len; + int ret; + + do { + len = min(tx_size, GMBUS_BYTE_COUNT_MAX); + + ret = gmbus_xfer_write_chunk(dev_priv, msg->addr, buf, len); + if (ret) + return ret; + + buf += len; + tx_size -= len; + } while (tx_size != 0); + return 0; } @@ -459,7 +505,7 @@ struct intel_gmbus, adapter); struct drm_i915_private *dev_priv = bus->dev_priv; - int i, reg_offset; + int i = 0, inc, try = 0, reg_offset; int ret = 0; intel_aux_display_runtime_get(dev_priv); @@ -472,12 +518,14 @@ reg_offset = dev_priv->gpio_mmio_base; +retry: I915_WRITE(GMBUS0 + reg_offset, bus->reg0); - for (i = 0; i < num; i++) { + for (; i < num; i += inc) { + inc = 1; if (gmbus_is_index_read(msgs, i, num)) { ret = gmbus_xfer_index_read(dev_priv, &msgs[i]); - i += 1; /* set i to the index of the read xfer */ + inc = 2; /* an index read is two msgs */ } else if (msgs[i].flags & I2C_M_RD) { ret = gmbus_xfer_read(dev_priv, &msgs[i], 0); } else { @@ -549,6 +597,18 @@ adapter->name, msgs[i].addr, (msgs[i].flags & I2C_M_RD) ? 'r' : 'w', msgs[i].len); + /* + * Passive adapters sometimes NAK the first probe. Retry the first + * message once on -ENXIO for GMBUS transfers; the bit banging algorithm + * has retries internally. See also the retry loop in + * drm_do_probe_ddc_edid, which bails out on the first -ENXIO. + */ + if (ret == -ENXIO && i == 0 && try++ == 0) { + DRM_DEBUG_KMS("GMBUS [%s] NAK on first message, retry\n", + adapter->name); + goto retry; + } + goto out; timeout: @@ -636,7 +696,7 @@ return 0; err: - while (--i) { + while (i--) { struct intel_gmbus *bus = &dev_priv->gmbus[i]; i2c_del_adapter(&bus->adapter); } --- linux-3.13.0.orig/drivers/gpu/drm/i915/intel_lvds.c +++ linux-3.13.0/drivers/gpu/drm/i915/intel_lvds.c @@ -533,7 +533,7 @@ .destroy = intel_encoder_destroy, }; -static int __init intel_no_lvds_dmi_callback(const struct dmi_system_id *id) +static int intel_no_lvds_dmi_callback(const struct dmi_system_id *id) { DRM_INFO("Skipping LVDS initialization for %s\n", id->ident); return 1; @@ -855,12 +855,28 @@ static const struct dmi_system_id intel_dual_link_lvds[] = { { .callback = intel_dual_link_lvds_callback, - .ident = "Apple MacBook Pro (Core i5/i7 Series)", + .ident = "Apple MacBook Pro 15\" (2010)", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "MacBookPro6,2"), + }, + }, + { + .callback = intel_dual_link_lvds_callback, + .ident = "Apple MacBook Pro 15\" (2011)", .matches = { DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."), DMI_MATCH(DMI_PRODUCT_NAME, "MacBookPro8,2"), }, }, + { + .callback = intel_dual_link_lvds_callback, + .ident = "Apple MacBook Pro 15\" (2012)", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "MacBookPro9,1"), + }, + }, { } /* terminating entry */ }; @@ -891,6 +907,11 @@ if (i915_lvds_channel_mode > 0) return i915_lvds_channel_mode == 2; + /* single channel LVDS is limited to 112 MHz */ + if (lvds_encoder->attached_connector->base.panel.fixed_mode->clock + > 112999) + return true; + if (dmi_check_system(intel_dual_link_lvds)) return true; @@ -945,6 +966,17 @@ int pipe; u8 pin; + /* + * Unlock registers and just leave them unlocked. Do this before + * checking quirk lists to avoid bogus WARNINGs. + */ + if (HAS_PCH_SPLIT(dev)) { + I915_WRITE(PCH_PP_CONTROL, + I915_READ(PCH_PP_CONTROL) | PANEL_UNLOCK_REGS); + } else { + I915_WRITE(PP_CONTROL, + I915_READ(PP_CONTROL) | PANEL_UNLOCK_REGS); + } if (!intel_lvds_supported(dev)) return; @@ -1120,21 +1152,12 @@ goto failed; out: + intel_panel_init(&intel_connector->panel, fixed_mode); + lvds_encoder->is_dual_link = compute_is_dual_link_lvds(lvds_encoder); DRM_DEBUG_KMS("detected %s-link lvds configuration\n", lvds_encoder->is_dual_link ? "dual" : "single"); - /* - * Unlock registers and just - * leave them unlocked - */ - if (HAS_PCH_SPLIT(dev)) { - I915_WRITE(PCH_PP_CONTROL, - I915_READ(PCH_PP_CONTROL) | PANEL_UNLOCK_REGS); - } else { - I915_WRITE(PP_CONTROL, - I915_READ(PP_CONTROL) | PANEL_UNLOCK_REGS); - } lvds_connector->lid_notifier.notifier_call = intel_lid_notify; if (acpi_lid_notifier_register(&lvds_connector->lid_notifier)) { DRM_DEBUG_KMS("lid notifier registration failed\n"); @@ -1142,7 +1165,6 @@ } drm_sysfs_connector_add(connector); - intel_panel_init(&intel_connector->panel, fixed_mode); intel_panel_setup_backlight(connector); return; --- linux-3.13.0.orig/drivers/gpu/drm/i915/intel_panel.c +++ linux-3.13.0/drivers/gpu/drm/i915/intel_panel.c @@ -544,6 +544,7 @@ enum pipe pipe = intel_get_pipe_from_connector(connector); u32 freq; unsigned long flags; + u64 n; if (pipe == INVALID_PIPE) return; @@ -557,10 +558,9 @@ } /* scale to hardware, but be careful to not overflow */ - if (freq < max) - level = level * freq / max; - else - level = freq / max * level; + n = (u64)level * freq; + do_div(n, max); + level = n; dev_priv->backlight.level = level; if (dev_priv->backlight.device) --- linux-3.13.0.orig/drivers/gpu/drm/i915/intel_pm.c +++ linux-3.13.0/drivers/gpu/drm/i915/intel_pm.c @@ -498,8 +498,7 @@ obj = intel_fb->obj; adjusted_mode = &intel_crtc->config.adjusted_mode; - if (i915_enable_fbc < 0 && - INTEL_INFO(dev)->gen <= 7 && !IS_HASWELL(dev)) { + if (i915_enable_fbc < 0) { if (set_no_fbc_reason(dev_priv, FBC_CHIP_DEFAULT)) DRM_DEBUG_KMS("disabled per chip default\n"); goto out_disable; @@ -2563,6 +2562,43 @@ } } +static bool ilk_increase_wm_latency(struct drm_i915_private *dev_priv, + uint16_t wm[5], uint16_t min) +{ + int level, max_level = ilk_wm_max_level(dev_priv->dev); + + if (wm[0] >= min) + return false; + + wm[0] = max(wm[0], min); + for (level = 1; level <= max_level; level++) + wm[level] = max_t(uint16_t, wm[level], DIV_ROUND_UP(min, 5)); + + return true; +} + +static void snb_wm_latency_quirk(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + bool changed; + + /* + * The BIOS provided WM memory latency values are often + * inadequate for high resolution displays. Adjust them. + */ + changed = ilk_increase_wm_latency(dev_priv, dev_priv->wm.pri_latency, 12) | + ilk_increase_wm_latency(dev_priv, dev_priv->wm.spr_latency, 12) | + ilk_increase_wm_latency(dev_priv, dev_priv->wm.cur_latency, 12); + + if (!changed) + return; + + DRM_DEBUG_KMS("WM latency values increased to avoid potential underruns\n"); + intel_print_wm_latency(dev, "Primary", dev_priv->wm.pri_latency); + intel_print_wm_latency(dev, "Sprite", dev_priv->wm.spr_latency); + intel_print_wm_latency(dev, "Cursor", dev_priv->wm.cur_latency); +} + static void intel_setup_wm_latency(struct drm_device *dev) { struct drm_i915_private *dev_priv = dev->dev_private; @@ -2580,6 +2616,9 @@ intel_print_wm_latency(dev, "Primary", dev_priv->wm.pri_latency); intel_print_wm_latency(dev, "Sprite", dev_priv->wm.spr_latency); intel_print_wm_latency(dev, "Cursor", dev_priv->wm.cur_latency); + + if (IS_GEN6(dev)) + snb_wm_latency_quirk(dev); } static void hsw_compute_wm_parameters(struct drm_crtc *crtc, @@ -5156,11 +5195,6 @@ I915_WRITE(_3D_CHICKEN, _MASKED_BIT_ENABLE(_3D_CHICKEN_HIZ_PLANE_DISABLE_MSAA_4X_SNB)); - /* WaSetupGtModeTdRowDispatch:snb */ - if (IS_SNB_GT1(dev)) - I915_WRITE(GEN6_GT_MODE, - _MASKED_BIT_ENABLE(GEN6_TD_FOUR_ROW_DISPATCH_DISABLE)); - I915_WRITE(WM3_LP_ILK, 0); I915_WRITE(WM2_LP_ILK, 0); I915_WRITE(WM1_LP_ILK, 0); @@ -5314,8 +5348,8 @@ /* WaPsrDPRSUnmaskVBlankInSRD */ for_each_pipe(i) { I915_WRITE(CHICKEN_PIPESL_1(i), - I915_READ(CHICKEN_PIPESL_1(i) | - DPRS_MASK_VBLANK_SRD)); + I915_READ(CHICKEN_PIPESL_1(i)) | + DPRS_MASK_VBLANK_SRD); } } @@ -5843,6 +5877,27 @@ } EXPORT_SYMBOL_GPL(i915_release_power_well); +/* + * Private interface for the audio driver to get CDCLK in kHz. + * + * Caller must request power well using i915_request_power_well() prior to + * making the call. + */ +int i915_get_cdclk_freq(void) +{ + struct drm_i915_private *dev_priv; + + if (!hsw_pwr) + return -ENODEV; + + dev_priv = container_of(hsw_pwr, struct drm_i915_private, + power_domains); + + return intel_ddi_get_cdclk_freq(dev_priv); +} +EXPORT_SYMBOL_GPL(i915_get_cdclk_freq); + + int intel_power_domains_init(struct drm_device *dev) { struct drm_i915_private *dev_priv = dev->dev_private; --- linux-3.13.0.orig/drivers/gpu/drm/i915/intel_ringbuffer.c +++ linux-3.13.0/drivers/gpu/drm/i915/intel_ringbuffer.c @@ -332,12 +332,15 @@ flags |= PIPE_CONTROL_VF_CACHE_INVALIDATE; flags |= PIPE_CONTROL_CONST_CACHE_INVALIDATE; flags |= PIPE_CONTROL_STATE_CACHE_INVALIDATE; + flags |= PIPE_CONTROL_MEDIA_STATE_CLEAR; /* * TLB invalidate requires a post-sync write. */ flags |= PIPE_CONTROL_QW_WRITE; flags |= PIPE_CONTROL_GLOBAL_GTT_IVB; + flags |= PIPE_CONTROL_STALL_AT_SCOREBOARD; + /* Workaround: we must issue a pipe_control with CS-stall bit * set before a pipe_control command that has the state cache * invalidate bit set. */ @@ -473,6 +476,9 @@ } } + /* Enforce ordering by reading HEAD register back */ + I915_READ_HEAD(ring); + /* Initialize the ring. This must happen _after_ we've cleared the ring * registers with the above sequence (the readback of the HEAD registers * also enforces ordering), otherwise the hw might lose the new ring @@ -1177,54 +1183,66 @@ /* Just userspace ABI convention to limit the wa batch bo to a resonable size */ #define I830_BATCH_LIMIT (256*1024) +#define I830_TLB_ENTRIES (2) +#define I830_WA_SIZE max(I830_TLB_ENTRIES*4096, I830_BATCH_LIMIT) static int i830_dispatch_execbuffer(struct intel_ring_buffer *ring, u32 offset, u32 len, unsigned flags) { + u32 cs_offset = ring->scratch.gtt_offset; int ret; - if (flags & I915_DISPATCH_PINNED) { - ret = intel_ring_begin(ring, 4); - if (ret) - return ret; + ret = intel_ring_begin(ring, 6); + if (ret) + return ret; - intel_ring_emit(ring, MI_BATCH_BUFFER); - intel_ring_emit(ring, offset | (flags & I915_DISPATCH_SECURE ? 0 : MI_BATCH_NON_SECURE)); - intel_ring_emit(ring, offset + len - 8); - intel_ring_emit(ring, MI_NOOP); - intel_ring_advance(ring); - } else { - u32 cs_offset = ring->scratch.gtt_offset; + /* Evict the invalid PTE TLBs */ + intel_ring_emit(ring, COLOR_BLT_CMD | BLT_WRITE_RGBA); + intel_ring_emit(ring, BLT_DEPTH_32 | BLT_ROP_COLOR_COPY | 4096); + intel_ring_emit(ring, I830_TLB_ENTRIES << 16 | 4); /* load each page */ + intel_ring_emit(ring, cs_offset); + intel_ring_emit(ring, 0xdeadbeef); + intel_ring_emit(ring, MI_NOOP); + intel_ring_advance(ring); + if ((flags & I915_DISPATCH_PINNED) == 0) { if (len > I830_BATCH_LIMIT) return -ENOSPC; - ret = intel_ring_begin(ring, 9+3); + ret = intel_ring_begin(ring, 6 + 2); if (ret) return ret; - /* Blit the batch (which has now all relocs applied) to the stable batch - * scratch bo area (so that the CS never stumbles over its tlb - * invalidation bug) ... */ - intel_ring_emit(ring, XY_SRC_COPY_BLT_CMD | - XY_SRC_COPY_BLT_WRITE_ALPHA | - XY_SRC_COPY_BLT_WRITE_RGB); - intel_ring_emit(ring, BLT_DEPTH_32 | BLT_ROP_GXCOPY | 4096); - intel_ring_emit(ring, 0); - intel_ring_emit(ring, (DIV_ROUND_UP(len, 4096) << 16) | 1024); + + /* Blit the batch (which has now all relocs applied) to the + * stable batch scratch bo area (so that the CS never + * stumbles over its tlb invalidation bug) ... + */ + intel_ring_emit(ring, SRC_COPY_BLT_CMD | BLT_WRITE_RGBA); + intel_ring_emit(ring, BLT_DEPTH_32 | BLT_ROP_SRC_COPY | 4096); + intel_ring_emit(ring, DIV_ROUND_UP(len, 4096) << 16 | 4096); intel_ring_emit(ring, cs_offset); - intel_ring_emit(ring, 0); intel_ring_emit(ring, 4096); intel_ring_emit(ring, offset); + intel_ring_emit(ring, MI_FLUSH); + intel_ring_emit(ring, MI_NOOP); + intel_ring_advance(ring); /* ... and execute it. */ - intel_ring_emit(ring, MI_BATCH_BUFFER); - intel_ring_emit(ring, cs_offset | (flags & I915_DISPATCH_SECURE ? 0 : MI_BATCH_NON_SECURE)); - intel_ring_emit(ring, cs_offset + len - 8); - intel_ring_advance(ring); + offset = cs_offset; } + ret = intel_ring_begin(ring, 4); + if (ret) + return ret; + + intel_ring_emit(ring, MI_BATCH_BUFFER); + intel_ring_emit(ring, offset | (flags & I915_DISPATCH_SECURE ? 0 : MI_BATCH_NON_SECURE)); + intel_ring_emit(ring, offset + len - 8); + intel_ring_emit(ring, MI_NOOP); + intel_ring_advance(ring); + return 0; } @@ -1611,8 +1629,8 @@ return i915_gem_get_seqno(ring->dev, &ring->outstanding_lazy_seqno); } -static int __intel_ring_begin(struct intel_ring_buffer *ring, - int bytes) +static int __intel_ring_prepare(struct intel_ring_buffer *ring, + int bytes) { int ret; @@ -1628,7 +1646,6 @@ return ret; } - ring->space -= bytes; return 0; } @@ -1643,12 +1660,38 @@ if (ret) return ret; + ret = __intel_ring_prepare(ring, num_dwords * sizeof(uint32_t)); + if (ret) + return ret; + /* Preallocate the olr before touching the ring */ ret = intel_ring_alloc_seqno(ring); if (ret) return ret; - return __intel_ring_begin(ring, num_dwords * sizeof(uint32_t)); + ring->space -= num_dwords * sizeof(uint32_t); + return 0; +} + +/* Align the ring tail to a cacheline boundary */ +int intel_ring_cacheline_align(struct intel_ring_buffer *ring) +{ + int num_dwords = (64 - (ring->tail & 63)) / sizeof(uint32_t); + int ret; + + if (num_dwords == 0) + return 0; + + ret = intel_ring_begin(ring, num_dwords); + if (ret) + return ret; + + while (num_dwords--) + intel_ring_emit(ring, MI_NOOP); + + intel_ring_advance(ring); + + return 0; } void intel_ring_init_seqno(struct intel_ring_buffer *ring, u32 seqno) @@ -1925,7 +1968,7 @@ struct drm_i915_gem_object *obj; int ret; - obj = i915_gem_alloc_object(dev, I830_BATCH_LIMIT); + obj = i915_gem_alloc_object(dev, I830_WA_SIZE); if (obj == NULL) { DRM_ERROR("Failed to allocate batch bo\n"); return -ENOMEM; --- linux-3.13.0.orig/drivers/gpu/drm/i915/intel_ringbuffer.h +++ linux-3.13.0/drivers/gpu/drm/i915/intel_ringbuffer.h @@ -42,11 +42,11 @@ }; struct intel_ring_hangcheck { - bool deadlock; u32 seqno; u32 acthd; int score; enum intel_ring_hangcheck_action action; + int deadlock; }; struct intel_ring_buffer { @@ -233,6 +233,7 @@ void intel_cleanup_ring_buffer(struct intel_ring_buffer *ring); int __must_check intel_ring_begin(struct intel_ring_buffer *ring, int n); +int __must_check intel_ring_cacheline_align(struct intel_ring_buffer *ring); static inline void intel_ring_emit(struct intel_ring_buffer *ring, u32 data) { --- linux-3.13.0.orig/drivers/gpu/drm/i915/intel_sdvo.c +++ linux-3.13.0/drivers/gpu/drm/i915/intel_sdvo.c @@ -1364,7 +1364,9 @@ >> SDVO_PORT_MULTIPLY_SHIFT) + 1; } - dotclock = pipe_config->port_clock / pipe_config->pixel_multiplier; + dotclock = pipe_config->port_clock; + if (pipe_config->pixel_multiplier) + dotclock /= pipe_config->pixel_multiplier; if (HAS_PCH_SPLIT(dev)) ironlake_check_encoder_dotclock(pipe_config, dotclock); --- linux-3.13.0.orig/drivers/gpu/drm/i915/intel_sideband.c +++ linux-3.13.0/drivers/gpu/drm/i915/intel_sideband.c @@ -73,7 +73,7 @@ WARN_ON(!mutex_is_locked(&dev_priv->rps.hw_lock)); mutex_lock(&dev_priv->dpio_lock); - vlv_sideband_rw(dev_priv, PCI_DEVFN(2, 0), IOSF_PORT_PUNIT, + vlv_sideband_rw(dev_priv, PCI_DEVFN(0, 0), IOSF_PORT_PUNIT, PUNIT_OPCODE_REG_READ, addr, &val); mutex_unlock(&dev_priv->dpio_lock); @@ -85,7 +85,7 @@ WARN_ON(!mutex_is_locked(&dev_priv->rps.hw_lock)); mutex_lock(&dev_priv->dpio_lock); - vlv_sideband_rw(dev_priv, PCI_DEVFN(2, 0), IOSF_PORT_PUNIT, + vlv_sideband_rw(dev_priv, PCI_DEVFN(0, 0), IOSF_PORT_PUNIT, PUNIT_OPCODE_REG_WRITE, addr, &val); mutex_unlock(&dev_priv->dpio_lock); } @@ -97,7 +97,7 @@ WARN_ON(!mutex_is_locked(&dev_priv->rps.hw_lock)); mutex_lock(&dev_priv->dpio_lock); - vlv_sideband_rw(dev_priv, PCI_DEVFN(2, 0), IOSF_PORT_NC, + vlv_sideband_rw(dev_priv, PCI_DEVFN(0, 0), IOSF_PORT_NC, PUNIT_OPCODE_REG_READ, addr, &val); mutex_unlock(&dev_priv->dpio_lock); @@ -107,56 +107,56 @@ u32 vlv_gpio_nc_read(struct drm_i915_private *dev_priv, u32 reg) { u32 val = 0; - vlv_sideband_rw(dev_priv, PCI_DEVFN(2, 0), IOSF_PORT_GPIO_NC, + vlv_sideband_rw(dev_priv, PCI_DEVFN(0, 0), IOSF_PORT_GPIO_NC, PUNIT_OPCODE_REG_READ, reg, &val); return val; } void vlv_gpio_nc_write(struct drm_i915_private *dev_priv, u32 reg, u32 val) { - vlv_sideband_rw(dev_priv, PCI_DEVFN(2, 0), IOSF_PORT_GPIO_NC, + vlv_sideband_rw(dev_priv, PCI_DEVFN(0, 0), IOSF_PORT_GPIO_NC, PUNIT_OPCODE_REG_WRITE, reg, &val); } u32 vlv_cck_read(struct drm_i915_private *dev_priv, u32 reg) { u32 val = 0; - vlv_sideband_rw(dev_priv, PCI_DEVFN(2, 0), IOSF_PORT_CCK, + vlv_sideband_rw(dev_priv, PCI_DEVFN(0, 0), IOSF_PORT_CCK, PUNIT_OPCODE_REG_READ, reg, &val); return val; } void vlv_cck_write(struct drm_i915_private *dev_priv, u32 reg, u32 val) { - vlv_sideband_rw(dev_priv, PCI_DEVFN(2, 0), IOSF_PORT_CCK, + vlv_sideband_rw(dev_priv, PCI_DEVFN(0, 0), IOSF_PORT_CCK, PUNIT_OPCODE_REG_WRITE, reg, &val); } u32 vlv_ccu_read(struct drm_i915_private *dev_priv, u32 reg) { u32 val = 0; - vlv_sideband_rw(dev_priv, PCI_DEVFN(2, 0), IOSF_PORT_CCU, + vlv_sideband_rw(dev_priv, PCI_DEVFN(0, 0), IOSF_PORT_CCU, PUNIT_OPCODE_REG_READ, reg, &val); return val; } void vlv_ccu_write(struct drm_i915_private *dev_priv, u32 reg, u32 val) { - vlv_sideband_rw(dev_priv, PCI_DEVFN(2, 0), IOSF_PORT_CCU, + vlv_sideband_rw(dev_priv, PCI_DEVFN(0, 0), IOSF_PORT_CCU, PUNIT_OPCODE_REG_WRITE, reg, &val); } u32 vlv_gps_core_read(struct drm_i915_private *dev_priv, u32 reg) { u32 val = 0; - vlv_sideband_rw(dev_priv, PCI_DEVFN(2, 0), IOSF_PORT_GPS_CORE, + vlv_sideband_rw(dev_priv, PCI_DEVFN(0, 0), IOSF_PORT_GPS_CORE, PUNIT_OPCODE_REG_READ, reg, &val); return val; } void vlv_gps_core_write(struct drm_i915_private *dev_priv, u32 reg, u32 val) { - vlv_sideband_rw(dev_priv, PCI_DEVFN(2, 0), IOSF_PORT_GPS_CORE, + vlv_sideband_rw(dev_priv, PCI_DEVFN(0, 0), IOSF_PORT_GPS_CORE, PUNIT_OPCODE_REG_WRITE, reg, &val); } --- linux-3.13.0.orig/drivers/gpu/drm/i915/intel_tv.c +++ linux-3.13.0/drivers/gpu/drm/i915/intel_tv.c @@ -854,6 +854,10 @@ struct drm_device *dev = encoder->base.dev; struct drm_i915_private *dev_priv = dev->dev_private; + /* Prevents vblank waits from timing out in intel_tv_detect_type() */ + intel_wait_for_vblank(encoder->base.dev, + to_intel_crtc(encoder->base.crtc)->pipe); + I915_WRITE(TV_CTL, I915_READ(TV_CTL) | TV_ENC_ENABLE); } @@ -1536,9 +1540,14 @@ /* * If the device type is not TV, continue. */ - if (p_child->old.device_type != DEVICE_TYPE_INT_TV && - p_child->old.device_type != DEVICE_TYPE_TV) + switch (p_child->old.device_type) { + case DEVICE_TYPE_INT_TV: + case DEVICE_TYPE_TV: + case DEVICE_TYPE_TV_SVIDEO_COMPOSITE: + break; + default: continue; + } /* Only when the addin_offset is non-zero, it is regarded * as present. */ --- linux-3.13.0.orig/drivers/gpu/drm/i915/intel_uncore.c +++ linux-3.13.0/drivers/gpu/drm/i915/intel_uncore.c @@ -167,6 +167,8 @@ { __raw_i915_write32(dev_priv, FORCEWAKE_VLV, _MASKED_BIT_DISABLE(0xffff)); + __raw_i915_write32(dev_priv, FORCEWAKE_MEDIA_VLV, + _MASKED_BIT_DISABLE(0xffff)); /* something from same cacheline, but !FORCEWAKE_VLV */ __raw_posting_read(dev_priv, FORCEWAKE_ACK_VLV); } @@ -686,6 +688,40 @@ return 0; } + +int i915_get_reset_stats_ioctl(struct drm_device *dev, + void *data, struct drm_file *file) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_i915_reset_stats *args = data; + struct i915_ctx_hang_stats *hs; + int ret; + + if (args->ctx_id == DEFAULT_CONTEXT_ID && !capable(CAP_SYS_ADMIN)) + return -EPERM; + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + hs = i915_gem_context_get_hang_stats(dev, file, args->ctx_id); + if (IS_ERR(hs)) { + mutex_unlock(&dev->struct_mutex); + return PTR_ERR(hs); + } + + if (capable(CAP_SYS_ADMIN)) + args->reset_count = i915_reset_count(&dev_priv->gpu_error); + else + args->reset_count = 0; + + args->batch_active = hs->batch_active; + args->batch_pending = hs->batch_pending; + + mutex_unlock(&dev->struct_mutex); + + return 0; +} static int i965_reset_complete(struct drm_device *dev) { --- linux-3.13.0.orig/drivers/gpu/drm/mgag200/mgag200_cursor.c +++ linux-3.13.0/drivers/gpu/drm/mgag200/mgag200_cursor.c @@ -22,8 +22,10 @@ { WREG8(MGA_CURPOSXL, 0); WREG8(MGA_CURPOSXH, 0); - mgag200_bo_unpin(mdev->cursor.pixels_1); - mgag200_bo_unpin(mdev->cursor.pixels_2); + if (mdev->cursor.pixels_1->pin_count) + mgag200_bo_unpin(mdev->cursor.pixels_1); + if (mdev->cursor.pixels_2->pin_count) + mgag200_bo_unpin(mdev->cursor.pixels_2); } int mga_crtc_cursor_set(struct drm_crtc *crtc, @@ -32,7 +34,7 @@ uint32_t width, uint32_t height) { - struct drm_device *dev = (struct drm_device *)file_priv->minor->dev; + struct drm_device *dev = crtc->dev; struct mga_device *mdev = (struct mga_device *)dev->dev_private; struct mgag200_bo *pixels_1 = mdev->cursor.pixels_1; struct mgag200_bo *pixels_2 = mdev->cursor.pixels_2; --- linux-3.13.0.orig/drivers/gpu/drm/mgag200/mgag200_fb.c +++ linux-3.13.0/drivers/gpu/drm/mgag200/mgag200_fb.c @@ -41,7 +41,7 @@ * then the BO is being moved and we should * store up the damage until later. */ - if (!in_interrupt()) + if (drm_can_sleep()) ret = mgag200_bo_reserve(bo, true); if (ret) { if (ret != -EBUSY) --- linux-3.13.0.orig/drivers/gpu/drm/mgag200/mgag200_mode.c +++ linux-3.13.0/drivers/gpu/drm/mgag200/mgag200_mode.c @@ -1519,16 +1519,21 @@ (mga_vga_calculate_mode_bandwidth(mode, bpp) > (32700 * 1024))) { return MODE_BANDWIDTH; - } else if (mode->type == G200_EH && + } else if (mdev->type == G200_EH && (mga_vga_calculate_mode_bandwidth(mode, bpp) > (37500 * 1024))) { return MODE_BANDWIDTH; - } else if (mode->type == G200_ER && + } else if (mdev->type == G200_ER && (mga_vga_calculate_mode_bandwidth(mode, bpp) > (55000 * 1024))) { return MODE_BANDWIDTH; } + if ((mode->hdisplay % 8) != 0 || (mode->hsync_start % 8) != 0 || + (mode->hsync_end % 8) != 0 || (mode->htotal % 8) != 0) { + return MODE_H_ILLEGAL; + } + if (mode->crtc_hdisplay > 2048 || mode->crtc_hsync_start > 4096 || mode->crtc_hsync_end > 4096 || mode->crtc_htotal > 4096 || mode->crtc_vdisplay > 2048 || mode->crtc_vsync_start > 4096 || --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/Makefile +++ linux-3.13.0/drivers/gpu/drm/nouveau/Makefile @@ -71,7 +71,10 @@ nouveau-y += core/subdev/devinit/nv1a.o nouveau-y += core/subdev/devinit/nv20.o nouveau-y += core/subdev/devinit/nv50.o +nouveau-y += core/subdev/devinit/nv84.o +nouveau-y += core/subdev/devinit/nv98.o nouveau-y += core/subdev/devinit/nva3.o +nouveau-y += core/subdev/devinit/nvaf.o nouveau-y += core/subdev/devinit/nvc0.o nouveau-y += core/subdev/fb/base.o nouveau-y += core/subdev/fb/nv04.o --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/core/engine.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/core/engine.c @@ -42,11 +42,24 @@ if (ret) return ret; - if ( parent && - !nouveau_boolopt(nv_device(parent)->cfgopt, iname, enable)) { - if (!enable) - nv_warn(engine, "disabled, %s=1 to enable\n", iname); - return -ENODEV; + if (parent) { + struct nouveau_device *device = nv_device(parent); + int engidx = nv_engidx(nv_object(engine)); + + if (device->disable_mask & (1ULL << engidx)) { + if (!nouveau_boolopt(device->cfgopt, iname, false)) { + nv_debug(engine, "engine disabled by hw/fw\n"); + return -ENODEV; + } + + nv_warn(engine, "ignoring hw/fw engine disable\n"); + } + + if (!nouveau_boolopt(device->cfgopt, iname, enable)) { + if (!enable) + nv_warn(engine, "disabled, %s=1 to enable\n", iname); + return -ENODEV; + } } INIT_LIST_HEAD(&engine->contexts); --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/engine/copy/nvc0.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/engine/copy/nvc0.c @@ -105,9 +105,6 @@ struct nvc0_copy_priv *priv; int ret; - if (nv_rd32(parent, 0x022500) & 0x00000100) - return -ENODEV; - ret = nouveau_falcon_create(parent, engine, oclass, 0x104000, true, "PCE0", "copy0", &priv); *pobject = nv_object(priv); @@ -133,9 +130,6 @@ struct nvc0_copy_priv *priv; int ret; - if (nv_rd32(parent, 0x022500) & 0x00000200) - return -ENODEV; - ret = nouveau_falcon_create(parent, engine, oclass, 0x105000, true, "PCE1", "copy1", &priv); *pobject = nv_object(priv); --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/engine/copy/nve0.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/engine/copy/nve0.c @@ -88,9 +88,6 @@ struct nve0_copy_priv *priv; int ret; - if (nv_rd32(parent, 0x022500) & 0x00000100) - return -ENODEV; - ret = nouveau_engine_create(parent, engine, oclass, true, "PCE0", "copy0", &priv); *pobject = nv_object(priv); @@ -112,9 +109,6 @@ struct nve0_copy_priv *priv; int ret; - if (nv_rd32(parent, 0x022500) & 0x00000200) - return -ENODEV; - ret = nouveau_engine_create(parent, engine, oclass, true, "PCE1", "copy1", &priv); *pobject = nv_object(priv); --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/engine/device/nv04.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/engine/device/nv04.c @@ -49,7 +49,7 @@ device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = &nv04_i2c_oclass; device->oclass[NVDEV_SUBDEV_CLOCK ] = &nv04_clock_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv04_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv04_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv04_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv04_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -67,7 +67,7 @@ device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = &nv04_i2c_oclass; device->oclass[NVDEV_SUBDEV_CLOCK ] = &nv04_clock_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv05_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv05_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv04_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv04_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/engine/device/nv10.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/engine/device/nv10.c @@ -51,7 +51,7 @@ device->oclass[NVDEV_SUBDEV_GPIO ] = &nv10_gpio_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = &nv04_i2c_oclass; device->oclass[NVDEV_SUBDEV_CLOCK ] = &nv04_clock_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv10_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv10_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv04_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv04_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -68,7 +68,7 @@ device->oclass[NVDEV_SUBDEV_GPIO ] = &nv10_gpio_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = &nv04_i2c_oclass; device->oclass[NVDEV_SUBDEV_CLOCK ] = &nv04_clock_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv10_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv10_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv04_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv04_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -87,7 +87,7 @@ device->oclass[NVDEV_SUBDEV_GPIO ] = &nv10_gpio_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = &nv04_i2c_oclass; device->oclass[NVDEV_SUBDEV_CLOCK ] = &nv04_clock_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv10_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv10_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv04_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv04_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -106,7 +106,7 @@ device->oclass[NVDEV_SUBDEV_GPIO ] = &nv10_gpio_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = &nv04_i2c_oclass; device->oclass[NVDEV_SUBDEV_CLOCK ] = &nv04_clock_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv1a_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv1a_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv04_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv04_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -125,7 +125,7 @@ device->oclass[NVDEV_SUBDEV_GPIO ] = &nv10_gpio_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = &nv04_i2c_oclass; device->oclass[NVDEV_SUBDEV_CLOCK ] = &nv04_clock_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv10_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv10_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv04_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv04_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -144,7 +144,7 @@ device->oclass[NVDEV_SUBDEV_GPIO ] = &nv10_gpio_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = &nv04_i2c_oclass; device->oclass[NVDEV_SUBDEV_CLOCK ] = &nv04_clock_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv10_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv10_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv04_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv04_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -163,7 +163,7 @@ device->oclass[NVDEV_SUBDEV_GPIO ] = &nv10_gpio_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = &nv04_i2c_oclass; device->oclass[NVDEV_SUBDEV_CLOCK ] = &nv04_clock_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv1a_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv1a_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv04_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv04_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -182,7 +182,7 @@ device->oclass[NVDEV_SUBDEV_GPIO ] = &nv10_gpio_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = &nv04_i2c_oclass; device->oclass[NVDEV_SUBDEV_CLOCK ] = &nv04_clock_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv10_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv10_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv04_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv04_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/engine/device/nv20.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/engine/device/nv20.c @@ -52,7 +52,7 @@ device->oclass[NVDEV_SUBDEV_GPIO ] = &nv10_gpio_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = &nv04_i2c_oclass; device->oclass[NVDEV_SUBDEV_CLOCK ] = &nv04_clock_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv20_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv20_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv04_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv04_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -71,7 +71,7 @@ device->oclass[NVDEV_SUBDEV_GPIO ] = &nv10_gpio_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = &nv04_i2c_oclass; device->oclass[NVDEV_SUBDEV_CLOCK ] = &nv04_clock_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv20_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv20_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv04_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv04_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -90,7 +90,7 @@ device->oclass[NVDEV_SUBDEV_GPIO ] = &nv10_gpio_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = &nv04_i2c_oclass; device->oclass[NVDEV_SUBDEV_CLOCK ] = &nv04_clock_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv20_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv20_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv04_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv04_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -109,7 +109,7 @@ device->oclass[NVDEV_SUBDEV_GPIO ] = &nv10_gpio_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = &nv04_i2c_oclass; device->oclass[NVDEV_SUBDEV_CLOCK ] = &nv04_clock_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv20_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv20_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv04_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv04_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/engine/device/nv30.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/engine/device/nv30.c @@ -52,7 +52,7 @@ device->oclass[NVDEV_SUBDEV_GPIO ] = &nv10_gpio_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = &nv04_i2c_oclass; device->oclass[NVDEV_SUBDEV_CLOCK ] = &nv04_clock_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv20_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv20_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv04_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv04_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -71,7 +71,7 @@ device->oclass[NVDEV_SUBDEV_GPIO ] = &nv10_gpio_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = &nv04_i2c_oclass; device->oclass[NVDEV_SUBDEV_CLOCK ] = &nv04_clock_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv20_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv20_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv04_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv04_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -90,7 +90,7 @@ device->oclass[NVDEV_SUBDEV_GPIO ] = &nv10_gpio_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = &nv04_i2c_oclass; device->oclass[NVDEV_SUBDEV_CLOCK ] = &nv04_clock_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv20_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv20_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv04_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv31_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -110,7 +110,7 @@ device->oclass[NVDEV_SUBDEV_GPIO ] = &nv10_gpio_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = &nv04_i2c_oclass; device->oclass[NVDEV_SUBDEV_CLOCK ] = &nv04_clock_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv20_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv20_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv04_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv31_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -130,7 +130,7 @@ device->oclass[NVDEV_SUBDEV_GPIO ] = &nv10_gpio_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = &nv04_i2c_oclass; device->oclass[NVDEV_SUBDEV_CLOCK ] = &nv04_clock_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv10_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv10_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv04_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv31_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/engine/device/nv40.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/engine/device/nv40.c @@ -57,7 +57,7 @@ device->oclass[NVDEV_SUBDEV_I2C ] = &nv04_i2c_oclass; device->oclass[NVDEV_SUBDEV_CLOCK ] = &nv40_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nv40_therm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv1a_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv1a_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv40_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv31_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -80,7 +80,7 @@ device->oclass[NVDEV_SUBDEV_I2C ] = &nv04_i2c_oclass; device->oclass[NVDEV_SUBDEV_CLOCK ] = &nv40_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nv40_therm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv1a_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv1a_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv40_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv31_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -103,7 +103,7 @@ device->oclass[NVDEV_SUBDEV_I2C ] = &nv04_i2c_oclass; device->oclass[NVDEV_SUBDEV_CLOCK ] = &nv40_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nv40_therm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv1a_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv1a_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv40_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv31_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -126,7 +126,7 @@ device->oclass[NVDEV_SUBDEV_I2C ] = &nv04_i2c_oclass; device->oclass[NVDEV_SUBDEV_CLOCK ] = &nv40_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nv40_therm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv1a_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv1a_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv40_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv31_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -149,7 +149,7 @@ device->oclass[NVDEV_SUBDEV_I2C ] = &nv04_i2c_oclass; device->oclass[NVDEV_SUBDEV_CLOCK ] = &nv40_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nv40_therm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv1a_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv1a_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv40_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv31_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -172,7 +172,7 @@ device->oclass[NVDEV_SUBDEV_I2C ] = &nv04_i2c_oclass; device->oclass[NVDEV_SUBDEV_CLOCK ] = &nv40_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nv40_therm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv1a_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv1a_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv40_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv31_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -195,7 +195,7 @@ device->oclass[NVDEV_SUBDEV_I2C ] = &nv04_i2c_oclass; device->oclass[NVDEV_SUBDEV_CLOCK ] = &nv40_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nv40_therm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv1a_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv1a_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv40_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv31_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -218,7 +218,7 @@ device->oclass[NVDEV_SUBDEV_I2C ] = &nv04_i2c_oclass; device->oclass[NVDEV_SUBDEV_CLOCK ] = &nv40_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nv40_therm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv1a_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv1a_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv40_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv31_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -241,7 +241,7 @@ device->oclass[NVDEV_SUBDEV_I2C ] = &nv04_i2c_oclass; device->oclass[NVDEV_SUBDEV_CLOCK ] = &nv40_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nv40_therm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv1a_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv1a_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv44_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv31_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -264,7 +264,7 @@ device->oclass[NVDEV_SUBDEV_I2C ] = &nv04_i2c_oclass; device->oclass[NVDEV_SUBDEV_CLOCK ] = &nv40_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nv40_therm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv1a_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv1a_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv44_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv31_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -287,7 +287,7 @@ device->oclass[NVDEV_SUBDEV_I2C ] = &nv04_i2c_oclass; device->oclass[NVDEV_SUBDEV_CLOCK ] = &nv40_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nv40_therm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv1a_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv1a_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv44_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv31_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -310,7 +310,7 @@ device->oclass[NVDEV_SUBDEV_I2C ] = &nv04_i2c_oclass; device->oclass[NVDEV_SUBDEV_CLOCK ] = &nv40_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nv40_therm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv1a_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv1a_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv44_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv31_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -333,7 +333,7 @@ device->oclass[NVDEV_SUBDEV_I2C ] = &nv4e_i2c_oclass; device->oclass[NVDEV_SUBDEV_CLOCK ] = &nv40_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nv40_therm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv1a_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv1a_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv44_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv31_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -356,7 +356,7 @@ device->oclass[NVDEV_SUBDEV_I2C ] = &nv04_i2c_oclass; device->oclass[NVDEV_SUBDEV_CLOCK ] = &nv40_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nv40_therm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv1a_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv1a_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv44_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv31_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -379,7 +379,7 @@ device->oclass[NVDEV_SUBDEV_I2C ] = &nv04_i2c_oclass; device->oclass[NVDEV_SUBDEV_CLOCK ] = &nv40_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nv40_therm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv1a_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv1a_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv44_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv31_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -402,7 +402,7 @@ device->oclass[NVDEV_SUBDEV_I2C ] = &nv04_i2c_oclass; device->oclass[NVDEV_SUBDEV_CLOCK ] = &nv40_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nv40_therm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv1a_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv1a_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv44_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv31_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/engine/device/nv50.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/engine/device/nv50.c @@ -65,7 +65,7 @@ device->oclass[NVDEV_SUBDEV_CLOCK ] = nv50_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nv50_therm_oclass; device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv50_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv50_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv50_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv50_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -90,7 +90,7 @@ device->oclass[NVDEV_SUBDEV_CLOCK ] = nv84_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nv84_therm_oclass; device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv50_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv84_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv50_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv50_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -118,7 +118,7 @@ device->oclass[NVDEV_SUBDEV_CLOCK ] = nv84_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nv84_therm_oclass; device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv50_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv84_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv50_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv50_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -146,7 +146,7 @@ device->oclass[NVDEV_SUBDEV_CLOCK ] = nv84_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nv84_therm_oclass; device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv50_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv84_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv50_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv50_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -174,7 +174,7 @@ device->oclass[NVDEV_SUBDEV_CLOCK ] = nv84_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nv84_therm_oclass; device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv50_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv84_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv94_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv94_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -202,7 +202,7 @@ device->oclass[NVDEV_SUBDEV_CLOCK ] = nv84_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nv84_therm_oclass; device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv50_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv84_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv94_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv94_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -230,7 +230,7 @@ device->oclass[NVDEV_SUBDEV_CLOCK ] = nv84_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nv84_therm_oclass; device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv50_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv98_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv98_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv94_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -258,7 +258,7 @@ device->oclass[NVDEV_SUBDEV_CLOCK ] = nv84_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nv84_therm_oclass; device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv50_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv84_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv98_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv94_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -286,7 +286,7 @@ device->oclass[NVDEV_SUBDEV_CLOCK ] = nvaa_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nv84_therm_oclass; device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv50_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv98_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv98_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv94_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -314,7 +314,7 @@ device->oclass[NVDEV_SUBDEV_CLOCK ] = nvaa_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nv84_therm_oclass; device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv50_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nv98_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv98_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv94_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -342,7 +342,7 @@ device->oclass[NVDEV_SUBDEV_CLOCK ] = &nva3_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nva3_therm_oclass; device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nva3_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nva3_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv98_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv94_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -372,7 +372,7 @@ device->oclass[NVDEV_SUBDEV_CLOCK ] = &nva3_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nva3_therm_oclass; device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nva3_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nva3_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv98_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv94_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -401,7 +401,7 @@ device->oclass[NVDEV_SUBDEV_CLOCK ] = &nva3_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nva3_therm_oclass; device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nva3_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nva3_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv98_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv94_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -430,7 +430,7 @@ device->oclass[NVDEV_SUBDEV_CLOCK ] = &nva3_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nva3_therm_oclass; device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nva3_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nvaf_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nv98_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv94_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/engine/device/nvc0.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/engine/device/nvc0.c @@ -65,7 +65,7 @@ device->oclass[NVDEV_SUBDEV_CLOCK ] = &nvc0_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nva3_therm_oclass; device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nvc0_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nvc0_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nvc0_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nvc0_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -97,7 +97,7 @@ device->oclass[NVDEV_SUBDEV_CLOCK ] = &nvc0_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nva3_therm_oclass; device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nvc0_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nvc0_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nvc0_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nvc0_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -129,7 +129,7 @@ device->oclass[NVDEV_SUBDEV_CLOCK ] = &nvc0_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nva3_therm_oclass; device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nvc0_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nvc0_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nvc3_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nvc0_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -160,7 +160,7 @@ device->oclass[NVDEV_SUBDEV_CLOCK ] = &nvc0_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nva3_therm_oclass; device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nvc0_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nvc0_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nvc0_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nvc0_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -192,7 +192,7 @@ device->oclass[NVDEV_SUBDEV_CLOCK ] = &nvc0_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nva3_therm_oclass; device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nvc0_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nvc0_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nvc3_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nvc0_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -212,7 +212,6 @@ device->oclass[NVDEV_ENGINE_BSP ] = &nvc0_bsp_oclass; device->oclass[NVDEV_ENGINE_PPP ] = &nvc0_ppp_oclass; device->oclass[NVDEV_ENGINE_COPY0 ] = &nvc0_copy0_oclass; - device->oclass[NVDEV_ENGINE_COPY1 ] = &nvc0_copy1_oclass; device->oclass[NVDEV_ENGINE_DISP ] = &nva3_disp_oclass; device->oclass[NVDEV_ENGINE_PERFMON] = &nvc0_perfmon_oclass; break; @@ -224,7 +223,7 @@ device->oclass[NVDEV_SUBDEV_CLOCK ] = &nvc0_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nva3_therm_oclass; device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nvc0_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nvc0_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nvc3_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nvc0_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -255,7 +254,7 @@ device->oclass[NVDEV_SUBDEV_CLOCK ] = &nvc0_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nva3_therm_oclass; device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nvc0_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nvc0_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nvc0_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nvc0_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -287,7 +286,7 @@ device->oclass[NVDEV_SUBDEV_CLOCK ] = &nvc0_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nvd0_therm_oclass; device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nvc0_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nvc0_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nvc3_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nvc0_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -318,7 +317,7 @@ device->oclass[NVDEV_SUBDEV_CLOCK ] = &nvc0_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nvd0_therm_oclass; device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nvc0_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nvc0_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nvc3_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nvc0_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/engine/device/nve0.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/engine/device/nve0.c @@ -65,7 +65,7 @@ device->oclass[NVDEV_SUBDEV_CLOCK ] = &nve0_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nvd0_therm_oclass; device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nvc0_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nvc0_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nvc3_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nvc0_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -98,7 +98,7 @@ device->oclass[NVDEV_SUBDEV_CLOCK ] = &nve0_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nvd0_therm_oclass; device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nvc0_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nvc0_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nvc3_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nvc0_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -131,7 +131,7 @@ device->oclass[NVDEV_SUBDEV_CLOCK ] = &nve0_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nvd0_therm_oclass; device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nvc0_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nvc0_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nvc3_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nvc0_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -164,7 +164,7 @@ device->oclass[NVDEV_SUBDEV_CLOCK ] = &nve0_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nvd0_therm_oclass; device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nvc0_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nvc0_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nvc3_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nvc0_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; @@ -199,7 +199,7 @@ device->oclass[NVDEV_SUBDEV_CLOCK ] = &nve0_clock_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nvd0_therm_oclass; device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; - device->oclass[NVDEV_SUBDEV_DEVINIT] = &nvc0_devinit_oclass; + device->oclass[NVDEV_SUBDEV_DEVINIT] = nvc0_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = nvc3_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nvc0_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/engine/disp/nv50.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/engine/disp/nv50.c @@ -1112,7 +1112,7 @@ if (conf != ~0) { if (outp.location == 0 && outp.type == DCB_OUTPUT_DP) { u32 soff = (ffs(outp.or) - 1) * 0x08; - u32 ctrl = nv_rd32(priv, 0x610798 + soff); + u32 ctrl = nv_rd32(priv, 0x610794 + soff); u32 datarate; switch ((ctrl & 0x000f0000) >> 16) { --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/engine/disp/nvd0.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/engine/disp/nvd0.c @@ -687,7 +687,7 @@ } if (outp == 8) - return false; + return conf; data = exec_lookup(priv, head, outp, ctrl, dcb, &ver, &hdr, &cnt, &len, &info1); if (data == 0x0000) @@ -967,9 +967,6 @@ int heads = nv_rd32(parent, 0x022448); int ret; - if (nv_rd32(parent, 0x022500) & 0x00000001) - return -ENODEV; - ret = nouveau_disp_create(parent, engine, oclass, heads, "PDISP", "display", &priv); *pobject = nv_object(priv); --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/engine/disp/nve0.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/engine/disp/nve0.c @@ -54,9 +54,6 @@ int heads = nv_rd32(parent, 0x022448); int ret; - if (nv_rd32(parent, 0x022500) & 0x00000001) - return -ENODEV; - ret = nouveau_disp_create(parent, engine, oclass, heads, "PDISP", "display", &priv); *pobject = nv_object(priv); --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/engine/disp/nvf0.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/engine/disp/nvf0.c @@ -54,9 +54,6 @@ int heads = nv_rd32(parent, 0x022448); int ret; - if (nv_rd32(parent, 0x022500) & 0x00000001) - return -ENODEV; - ret = nouveau_disp_create(parent, engine, oclass, heads, "PDISP", "display", &priv); *pobject = nv_object(priv); --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/engine/falcon.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/engine/falcon.c @@ -56,6 +56,16 @@ nv_wr32(falcon, falcon->addr + addr, data); } +static void * +vmemdup(const void *src, size_t len) +{ + void *p = vmalloc(len); + + if (p) + memcpy(p, src, len); + return p; +} + int _nouveau_falcon_init(struct nouveau_object *object) { @@ -111,7 +121,7 @@ ret = request_firmware(&fw, name, &device->pdev->dev); if (ret == 0) { - falcon->code.data = kmemdup(fw->data, fw->size, GFP_KERNEL); + falcon->code.data = vmemdup(fw->data, fw->size); falcon->code.size = fw->size; falcon->data.data = NULL; falcon->data.size = 0; @@ -134,7 +144,7 @@ return ret; } - falcon->data.data = kmemdup(fw->data, fw->size, GFP_KERNEL); + falcon->data.data = vmemdup(fw->data, fw->size); falcon->data.size = fw->size; release_firmware(fw); if (!falcon->data.data) @@ -149,7 +159,7 @@ return ret; } - falcon->code.data = kmemdup(fw->data, fw->size, GFP_KERNEL); + falcon->code.data = vmemdup(fw->data, fw->size); falcon->code.size = fw->size; release_firmware(fw); if (!falcon->code.data) @@ -235,8 +245,8 @@ if (!suspend) { nouveau_gpuobj_ref(NULL, &falcon->core); if (falcon->external) { - kfree(falcon->data.data); - kfree(falcon->code.data); + vfree(falcon->data.data); + vfree(falcon->code.data); falcon->code.data = NULL; } } --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/include/core/device.h +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/include/core/device.h @@ -70,6 +70,7 @@ const char *dbgopt; const char *name; const char *cname; + u64 disable_mask; enum { NV_04 = 0x04, --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/include/subdev/devinit.h +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/include/subdev/devinit.h @@ -9,7 +9,6 @@ bool post; void (*meminit)(struct nouveau_devinit *); int (*pll_set)(struct nouveau_devinit *, u32 type, u32 freq); - }; static inline struct nouveau_devinit * @@ -18,32 +17,16 @@ return (void *)nv_device(obj)->subdev[NVDEV_SUBDEV_DEVINIT]; } -#define nouveau_devinit_create(p,e,o,d) \ - nouveau_devinit_create_((p), (e), (o), sizeof(**d), (void **)d) -#define nouveau_devinit_destroy(p) \ - nouveau_subdev_destroy(&(p)->base) -#define nouveau_devinit_init(p) ({ \ - struct nouveau_devinit *d = (p); \ - _nouveau_devinit_init(nv_object(d)); \ -}) -#define nouveau_devinit_fini(p,s) ({ \ - struct nouveau_devinit *d = (p); \ - _nouveau_devinit_fini(nv_object(d), (s)); \ -}) - -int nouveau_devinit_create_(struct nouveau_object *, struct nouveau_object *, - struct nouveau_oclass *, int, void **); -#define _nouveau_devinit_dtor _nouveau_subdev_dtor -int _nouveau_devinit_init(struct nouveau_object *); -int _nouveau_devinit_fini(struct nouveau_object *, bool suspend); - -extern struct nouveau_oclass nv04_devinit_oclass; -extern struct nouveau_oclass nv05_devinit_oclass; -extern struct nouveau_oclass nv10_devinit_oclass; -extern struct nouveau_oclass nv1a_devinit_oclass; -extern struct nouveau_oclass nv20_devinit_oclass; -extern struct nouveau_oclass nv50_devinit_oclass; -extern struct nouveau_oclass nva3_devinit_oclass; -extern struct nouveau_oclass nvc0_devinit_oclass; +extern struct nouveau_oclass *nv04_devinit_oclass; +extern struct nouveau_oclass *nv05_devinit_oclass; +extern struct nouveau_oclass *nv10_devinit_oclass; +extern struct nouveau_oclass *nv1a_devinit_oclass; +extern struct nouveau_oclass *nv20_devinit_oclass; +extern struct nouveau_oclass *nv50_devinit_oclass; +extern struct nouveau_oclass *nv84_devinit_oclass; +extern struct nouveau_oclass *nv98_devinit_oclass; +extern struct nouveau_oclass *nva3_devinit_oclass; +extern struct nouveau_oclass *nvaf_devinit_oclass; +extern struct nouveau_oclass *nvc0_devinit_oclass; #endif --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/subdev/bar/nvc0.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/subdev/bar/nvc0.c @@ -198,7 +198,6 @@ nv_mask(priv, 0x000200, 0x00000100, 0x00000000); nv_mask(priv, 0x000200, 0x00000100, 0x00000100); - nv_mask(priv, 0x100c80, 0x00000001, 0x00000000); nv_wr32(priv, 0x001704, 0x80000000 | priv->bar[1].mem->addr >> 12); nv_wr32(priv, 0x001714, 0xc0000000 | priv->bar[0].mem->addr >> 12); --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/subdev/clock/nv04.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/subdev/clock/nv04.c @@ -25,7 +25,7 @@ #include #include #include -#include +#include #include "pll.h" --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/subdev/devinit/base.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/subdev/devinit/base.c @@ -24,10 +24,11 @@ #include -#include #include #include +#include "priv.h" + int _nouveau_devinit_fini(struct nouveau_object *object, bool suspend) { @@ -43,12 +44,21 @@ int _nouveau_devinit_init(struct nouveau_object *object) { + struct nouveau_devinit_impl *impl = (void *)object->oclass; struct nouveau_devinit *devinit = (void *)object; - int ret = nouveau_subdev_init(&devinit->base); + int ret; + + ret = nouveau_subdev_init(&devinit->base); if (ret) return ret; - return nvbios_init(&devinit->base, devinit->post); + ret = nvbios_init(&devinit->base, devinit->post); + if (ret) + return ret; + + if (impl->disable) + nv_device(devinit)->disable_mask |= impl->disable(devinit); + return 0; } int @@ -57,6 +67,7 @@ struct nouveau_oclass *oclass, int size, void **pobject) { + struct nouveau_devinit_impl *impl = (void *)oclass; struct nouveau_device *device = nv_device(parent); struct nouveau_devinit *devinit; int ret; @@ -68,5 +79,7 @@ return ret; devinit->post = nouveau_boolopt(device->cfgopt, "NvForcePost", false); + devinit->meminit = impl->meminit; + devinit->pll_set = impl->pll_set; return 0; } --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/subdev/devinit/nv04.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/subdev/devinit/nv04.c @@ -27,12 +27,7 @@ #include #include "fbmem.h" -#include "priv.h" - -struct nv04_devinit_priv { - struct nouveau_devinit base; - int owner; -}; +#include "nv04.h" static void nv04_devinit_meminit(struct nouveau_devinit *devinit) @@ -438,7 +433,7 @@ nouveau_devinit_destroy(&priv->base); } -static int +int nv04_devinit_ctor(struct nouveau_object *parent, struct nouveau_object *engine, struct nouveau_oclass *oclass, void *data, u32 size, struct nouveau_object **pobject) @@ -451,19 +446,19 @@ if (ret) return ret; - priv->base.meminit = nv04_devinit_meminit; - priv->base.pll_set = nv04_devinit_pll_set; priv->owner = -1; return 0; } -struct nouveau_oclass -nv04_devinit_oclass = { - .handle = NV_SUBDEV(DEVINIT, 0x04), - .ofuncs = &(struct nouveau_ofuncs) { +struct nouveau_oclass * +nv04_devinit_oclass = &(struct nouveau_devinit_impl) { + .base.handle = NV_SUBDEV(DEVINIT, 0x04), + .base.ofuncs = &(struct nouveau_ofuncs) { .ctor = nv04_devinit_ctor, .dtor = nv04_devinit_dtor, .init = nv04_devinit_init, .fini = nv04_devinit_fini, }, -}; + .meminit = nv04_devinit_meminit, + .pll_set = nv04_devinit_pll_set, +}.base; --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/subdev/devinit/nv04.h +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/subdev/devinit/nv04.h @@ -0,0 +1,23 @@ +#ifndef __NVKM_DEVINIT_NV04_H__ +#define __NVKM_DEVINIT_NV04_H__ + +#include "priv.h" + +struct nv04_devinit_priv { + struct nouveau_devinit base; + u8 owner; +}; + +int nv04_devinit_ctor(struct nouveau_object *, struct nouveau_object *, + struct nouveau_oclass *, void *, u32, + struct nouveau_object **); +void nv04_devinit_dtor(struct nouveau_object *); +int nv04_devinit_init(struct nouveau_object *); +int nv04_devinit_fini(struct nouveau_object *, bool); +int nv04_devinit_pll_set(struct nouveau_devinit *, u32, u32); + +void setPLL_single(struct nouveau_devinit *, u32, struct nouveau_pll_vals *); +void setPLL_double_highregs(struct nouveau_devinit *, u32, struct nouveau_pll_vals *); +void setPLL_double_lowregs(struct nouveau_devinit *, u32, struct nouveau_pll_vals *); + +#endif --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/subdev/devinit/nv05.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/subdev/devinit/nv05.c @@ -29,12 +29,7 @@ #include #include "fbmem.h" -#include "priv.h" - -struct nv05_devinit_priv { - struct nouveau_devinit base; - u8 owner; -}; +#include "nv04.h" static void nv05_devinit_meminit(struct nouveau_devinit *devinit) @@ -49,7 +44,7 @@ { 0x06, 0x00 }, { 0x00, 0x00 } }; - struct nv05_devinit_priv *priv = (void *)devinit; + struct nv04_devinit_priv *priv = (void *)devinit; struct nouveau_bios *bios = nouveau_bios(priv); struct io_mapping *fb; u32 patt = 0xdeadbeef; @@ -130,31 +125,15 @@ fbmem_fini(fb); } -static int -nv05_devinit_ctor(struct nouveau_object *parent, struct nouveau_object *engine, - struct nouveau_oclass *oclass, void *data, u32 size, - struct nouveau_object **pobject) -{ - struct nv05_devinit_priv *priv; - int ret; - - ret = nouveau_devinit_create(parent, engine, oclass, &priv); - *pobject = nv_object(priv); - if (ret) - return ret; - - priv->base.meminit = nv05_devinit_meminit; - priv->base.pll_set = nv04_devinit_pll_set; - return 0; -} - -struct nouveau_oclass -nv05_devinit_oclass = { - .handle = NV_SUBDEV(DEVINIT, 0x05), - .ofuncs = &(struct nouveau_ofuncs) { - .ctor = nv05_devinit_ctor, +struct nouveau_oclass * +nv05_devinit_oclass = &(struct nouveau_devinit_impl) { + .base.handle = NV_SUBDEV(DEVINIT, 0x05), + .base.ofuncs = &(struct nouveau_ofuncs) { + .ctor = nv04_devinit_ctor, .dtor = nv04_devinit_dtor, .init = nv04_devinit_init, .fini = nv04_devinit_fini, }, -}; + .meminit = nv05_devinit_meminit, + .pll_set = nv04_devinit_pll_set, +}.base; --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/subdev/devinit/nv10.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/subdev/devinit/nv10.c @@ -27,17 +27,12 @@ #include #include "fbmem.h" -#include "priv.h" - -struct nv10_devinit_priv { - struct nouveau_devinit base; - u8 owner; -}; +#include "nv04.h" static void nv10_devinit_meminit(struct nouveau_devinit *devinit) { - struct nv10_devinit_priv *priv = (void *)devinit; + struct nv04_devinit_priv *priv = (void *)devinit; static const int mem_width[] = { 0x10, 0x00, 0x20 }; int mem_width_count; uint32_t patt = 0xdeadbeef; @@ -101,31 +96,15 @@ fbmem_fini(fb); } -static int -nv10_devinit_ctor(struct nouveau_object *parent, struct nouveau_object *engine, - struct nouveau_oclass *oclass, void *data, u32 size, - struct nouveau_object **pobject) -{ - struct nv10_devinit_priv *priv; - int ret; - - ret = nouveau_devinit_create(parent, engine, oclass, &priv); - *pobject = nv_object(priv); - if (ret) - return ret; - - priv->base.meminit = nv10_devinit_meminit; - priv->base.pll_set = nv04_devinit_pll_set; - return 0; -} - -struct nouveau_oclass -nv10_devinit_oclass = { - .handle = NV_SUBDEV(DEVINIT, 0x10), - .ofuncs = &(struct nouveau_ofuncs) { - .ctor = nv10_devinit_ctor, +struct nouveau_oclass * +nv10_devinit_oclass = &(struct nouveau_devinit_impl) { + .base.handle = NV_SUBDEV(DEVINIT, 0x10), + .base.ofuncs = &(struct nouveau_ofuncs) { + .ctor = nv04_devinit_ctor, .dtor = nv04_devinit_dtor, .init = nv04_devinit_init, .fini = nv04_devinit_fini, }, -}; + .meminit = nv10_devinit_meminit, + .pll_set = nv04_devinit_pll_set, +}.base; --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/subdev/devinit/nv1a.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/subdev/devinit/nv1a.c @@ -22,37 +22,16 @@ * Authors: Ben Skeggs */ -#include "priv.h" +#include "nv04.h" -struct nv1a_devinit_priv { - struct nouveau_devinit base; - u8 owner; -}; - -static int -nv1a_devinit_ctor(struct nouveau_object *parent, struct nouveau_object *engine, - struct nouveau_oclass *oclass, void *data, u32 size, - struct nouveau_object **pobject) -{ - struct nv1a_devinit_priv *priv; - int ret; - - ret = nouveau_devinit_create(parent, engine, oclass, &priv); - *pobject = nv_object(priv); - if (ret) - return ret; - - priv->base.pll_set = nv04_devinit_pll_set; - return 0; -} - -struct nouveau_oclass -nv1a_devinit_oclass = { - .handle = NV_SUBDEV(DEVINIT, 0x1a), - .ofuncs = &(struct nouveau_ofuncs) { - .ctor = nv1a_devinit_ctor, +struct nouveau_oclass * +nv1a_devinit_oclass = &(struct nouveau_devinit_impl) { + .base.handle = NV_SUBDEV(DEVINIT, 0x1a), + .base.ofuncs = &(struct nouveau_ofuncs) { + .ctor = nv04_devinit_ctor, .dtor = nv04_devinit_dtor, .init = nv04_devinit_init, .fini = nv04_devinit_fini, }, -}; + .pll_set = nv04_devinit_pll_set, +}.base; --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/subdev/devinit/nv20.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/subdev/devinit/nv20.c @@ -24,18 +24,13 @@ * */ -#include "priv.h" +#include "nv04.h" #include "fbmem.h" -struct nv20_devinit_priv { - struct nouveau_devinit base; - u8 owner; -}; - static void nv20_devinit_meminit(struct nouveau_devinit *devinit) { - struct nv20_devinit_priv *priv = (void *)devinit; + struct nv04_devinit_priv *priv = (void *)devinit; struct nouveau_device *device = nv_device(priv); uint32_t mask = (device->chipset >= 0x25 ? 0x300 : 0x900); uint32_t amount, off; @@ -65,31 +60,15 @@ fbmem_fini(fb); } -static int -nv20_devinit_ctor(struct nouveau_object *parent, struct nouveau_object *engine, - struct nouveau_oclass *oclass, void *data, u32 size, - struct nouveau_object **pobject) -{ - struct nv20_devinit_priv *priv; - int ret; - - ret = nouveau_devinit_create(parent, engine, oclass, &priv); - *pobject = nv_object(priv); - if (ret) - return ret; - - priv->base.meminit = nv20_devinit_meminit; - priv->base.pll_set = nv04_devinit_pll_set; - return 0; -} - -struct nouveau_oclass -nv20_devinit_oclass = { - .handle = NV_SUBDEV(DEVINIT, 0x20), - .ofuncs = &(struct nouveau_ofuncs) { - .ctor = nv20_devinit_ctor, +struct nouveau_oclass * +nv20_devinit_oclass = &(struct nouveau_devinit_impl) { + .base.handle = NV_SUBDEV(DEVINIT, 0x20), + .base.ofuncs = &(struct nouveau_ofuncs) { + .ctor = nv04_devinit_ctor, .dtor = nv04_devinit_dtor, .init = nv04_devinit_init, .fini = nv04_devinit_fini, }, -}; + .meminit = nv20_devinit_meminit, + .pll_set = nv04_devinit_pll_set, +}.base; --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/subdev/devinit/nv50.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/subdev/devinit/nv50.c @@ -28,9 +28,9 @@ #include #include -#include "priv.h" +#include "nv50.h" -static int +int nv50_devinit_pll_set(struct nouveau_devinit *devinit, u32 type, u32 freq) { struct nv50_devinit_priv *priv = (void *)devinit; @@ -74,6 +74,19 @@ return 0; } +static u64 +nv50_devinit_disable(struct nouveau_devinit *devinit) +{ + struct nv50_devinit_priv *priv = (void *)devinit; + u32 r001540 = nv_rd32(priv, 0x001540); + u64 disable = 0ULL; + + if (!(r001540 & 0x40000000)) + disable |= (1ULL << NVDEV_ENGINE_MPEG); + + return disable; +} + int nv50_devinit_init(struct nouveau_object *object) { @@ -120,7 +133,7 @@ return 0; } -static int +int nv50_devinit_ctor(struct nouveau_object *parent, struct nouveau_object *engine, struct nouveau_oclass *oclass, void *data, u32 size, struct nouveau_object **pobject) @@ -133,17 +146,18 @@ if (ret) return ret; - priv->base.pll_set = nv50_devinit_pll_set; return 0; } -struct nouveau_oclass -nv50_devinit_oclass = { - .handle = NV_SUBDEV(DEVINIT, 0x50), - .ofuncs = &(struct nouveau_ofuncs) { +struct nouveau_oclass * +nv50_devinit_oclass = &(struct nouveau_devinit_impl) { + .base.handle = NV_SUBDEV(DEVINIT, 0x50), + .base.ofuncs = &(struct nouveau_ofuncs) { .ctor = nv50_devinit_ctor, .dtor = _nouveau_devinit_dtor, .init = nv50_devinit_init, .fini = _nouveau_devinit_fini, }, -}; + .pll_set = nv50_devinit_pll_set, + .disable = nv50_devinit_disable, +}.base; --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/subdev/devinit/nv50.h +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/subdev/devinit/nv50.h @@ -0,0 +1,18 @@ +#ifndef __NVKM_DEVINIT_NV50_H__ +#define __NVKM_DEVINIT_NV50_H__ + +#include "priv.h" + +struct nv50_devinit_priv { + struct nouveau_devinit base; +}; + +int nv50_devinit_ctor(struct nouveau_object *, struct nouveau_object *, + struct nouveau_oclass *, void *, u32, + struct nouveau_object **); +int nv50_devinit_init(struct nouveau_object *); +int nv50_devinit_pll_set(struct nouveau_devinit *, u32, u32); + +int nva3_devinit_pll_set(struct nouveau_devinit *, u32, u32); + +#endif --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/subdev/devinit/nv84.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/subdev/devinit/nv84.c @@ -0,0 +1,63 @@ +/* + * Copyright 2013 Red Hat Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + * + * Authors: Ben Skeggs + */ + +#include "nv50.h" + +static u64 +nv84_devinit_disable(struct nouveau_devinit *devinit) +{ + struct nv50_devinit_priv *priv = (void *)devinit; + u32 r001540 = nv_rd32(priv, 0x001540); + u32 r00154c = nv_rd32(priv, 0x00154c); + u64 disable = 0ULL; + + if (!(r001540 & 0x40000000)) { + disable |= (1ULL << NVDEV_ENGINE_MPEG); + disable |= (1ULL << NVDEV_ENGINE_VP); + disable |= (1ULL << NVDEV_ENGINE_BSP); + disable |= (1ULL << NVDEV_ENGINE_CRYPT); + } + + if (!(r00154c & 0x00000004)) + disable |= (1ULL << NVDEV_ENGINE_DISP); + if (!(r00154c & 0x00000020)) + disable |= (1ULL << NVDEV_ENGINE_BSP); + if (!(r00154c & 0x00000040)) + disable |= (1ULL << NVDEV_ENGINE_CRYPT); + + return disable; +} + +struct nouveau_oclass * +nv84_devinit_oclass = &(struct nouveau_devinit_impl) { + .base.handle = NV_SUBDEV(DEVINIT, 0x84), + .base.ofuncs = &(struct nouveau_ofuncs) { + .ctor = nv50_devinit_ctor, + .dtor = _nouveau_devinit_dtor, + .init = nv50_devinit_init, + .fini = _nouveau_devinit_fini, + }, + .pll_set = nv50_devinit_pll_set, + .disable = nv84_devinit_disable, +}.base; --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/subdev/devinit/nv98.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/subdev/devinit/nv98.c @@ -0,0 +1,62 @@ +/* + * Copyright 2013 Red Hat Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + * + * Authors: Ben Skeggs + */ + +#include "nv50.h" + +static u64 +nv98_devinit_disable(struct nouveau_devinit *devinit) +{ + struct nv50_devinit_priv *priv = (void *)devinit; + u32 r001540 = nv_rd32(priv, 0x001540); + u32 r00154c = nv_rd32(priv, 0x00154c); + u64 disable = 0ULL; + + if (!(r001540 & 0x40000000)) { + disable |= (1ULL << NVDEV_ENGINE_VP); + disable |= (1ULL << NVDEV_ENGINE_BSP); + disable |= (1ULL << NVDEV_ENGINE_PPP); + } + + if (!(r00154c & 0x00000004)) + disable |= (1ULL << NVDEV_ENGINE_DISP); + if (!(r00154c & 0x00000020)) + disable |= (1ULL << NVDEV_ENGINE_BSP); + if (!(r00154c & 0x00000040)) + disable |= (1ULL << NVDEV_ENGINE_CRYPT); + + return disable; +} + +struct nouveau_oclass * +nv98_devinit_oclass = &(struct nouveau_devinit_impl) { + .base.handle = NV_SUBDEV(DEVINIT, 0x98), + .base.ofuncs = &(struct nouveau_ofuncs) { + .ctor = nv50_devinit_ctor, + .dtor = _nouveau_devinit_dtor, + .init = nv50_devinit_init, + .fini = _nouveau_devinit_fini, + }, + .pll_set = nv50_devinit_pll_set, + .disable = nv98_devinit_disable, +}.base; --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/subdev/devinit/nva3.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/subdev/devinit/nva3.c @@ -22,12 +22,12 @@ * Authors: Ben Skeggs */ -#include "priv.h" +#include "nv50.h" -static int +int nva3_devinit_pll_set(struct nouveau_devinit *devinit, u32 type, u32 freq) { - struct nva3_devinit_priv *priv = (void *)devinit; + struct nv50_devinit_priv *priv = (void *)devinit; struct nouveau_bios *bios = nouveau_bios(priv); struct nvbios_pll info; int N, fN, M, P; @@ -58,30 +58,38 @@ return ret; } -static int -nva3_devinit_ctor(struct nouveau_object *parent, struct nouveau_object *engine, - struct nouveau_oclass *oclass, void *data, u32 size, - struct nouveau_object **pobject) +static u64 +nva3_devinit_disable(struct nouveau_devinit *devinit) { - struct nv50_devinit_priv *priv; - int ret; + struct nv50_devinit_priv *priv = (void *)devinit; + u32 r001540 = nv_rd32(priv, 0x001540); + u32 r00154c = nv_rd32(priv, 0x00154c); + u64 disable = 0ULL; + + if (!(r001540 & 0x40000000)) { + disable |= (1ULL << NVDEV_ENGINE_VP); + disable |= (1ULL << NVDEV_ENGINE_PPP); + } - ret = nouveau_devinit_create(parent, engine, oclass, &priv); - *pobject = nv_object(priv); - if (ret) - return ret; + if (!(r00154c & 0x00000004)) + disable |= (1ULL << NVDEV_ENGINE_DISP); + if (!(r00154c & 0x00000020)) + disable |= (1ULL << NVDEV_ENGINE_BSP); + if (!(r00154c & 0x00000200)) + disable |= (1ULL << NVDEV_ENGINE_COPY0); - priv->base.pll_set = nva3_devinit_pll_set; - return 0; + return disable; } -struct nouveau_oclass -nva3_devinit_oclass = { - .handle = NV_SUBDEV(DEVINIT, 0xa3), - .ofuncs = &(struct nouveau_ofuncs) { - .ctor = nva3_devinit_ctor, +struct nouveau_oclass * +nva3_devinit_oclass = &(struct nouveau_devinit_impl) { + .base.handle = NV_SUBDEV(DEVINIT, 0xa3), + .base.ofuncs = &(struct nouveau_ofuncs) { + .ctor = nv50_devinit_ctor, .dtor = _nouveau_devinit_dtor, .init = nv50_devinit_init, .fini = _nouveau_devinit_fini, }, -}; + .pll_set = nva3_devinit_pll_set, + .disable = nva3_devinit_disable, +}.base; --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/subdev/devinit/nvaf.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/subdev/devinit/nvaf.c @@ -0,0 +1,63 @@ +/* + * Copyright 2013 Red Hat Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + * + * Authors: Ben Skeggs + */ + +#include "nv50.h" + +static u64 +nvaf_devinit_disable(struct nouveau_devinit *devinit) +{ + struct nv50_devinit_priv *priv = (void *)devinit; + u32 r001540 = nv_rd32(priv, 0x001540); + u32 r00154c = nv_rd32(priv, 0x00154c); + u64 disable = 0; + + if (!(r001540 & 0x40000000)) { + disable |= (1ULL << NVDEV_ENGINE_VP); + disable |= (1ULL << NVDEV_ENGINE_PPP); + } + + if (!(r00154c & 0x00000004)) + disable |= (1ULL << NVDEV_ENGINE_DISP); + if (!(r00154c & 0x00000020)) + disable |= (1ULL << NVDEV_ENGINE_BSP); + if (!(r00154c & 0x00000040)) + disable |= (1ULL << NVDEV_ENGINE_VIC); + if (!(r00154c & 0x00000200)) + disable |= (1ULL << NVDEV_ENGINE_COPY0); + + return disable; +} + +struct nouveau_oclass * +nvaf_devinit_oclass = &(struct nouveau_devinit_impl) { + .base.handle = NV_SUBDEV(DEVINIT, 0xaf), + .base.ofuncs = &(struct nouveau_ofuncs) { + .ctor = nv50_devinit_ctor, + .dtor = _nouveau_devinit_dtor, + .init = nv50_devinit_init, + .fini = _nouveau_devinit_fini, + }, + .pll_set = nva3_devinit_pll_set, + .disable = nvaf_devinit_disable, +}.base; --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/subdev/devinit/nvc0.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/subdev/devinit/nvc0.c @@ -22,12 +22,12 @@ * Authors: Ben Skeggs */ -#include "priv.h" +#include "nv50.h" static int nvc0_devinit_pll_set(struct nouveau_devinit *devinit, u32 type, u32 freq) { - struct nvc0_devinit_priv *priv = (void *)devinit; + struct nv50_devinit_priv *priv = (void *)devinit; struct nouveau_bios *bios = nouveau_bios(priv); struct nvbios_pll info; int N, fN, M, P; @@ -59,6 +59,33 @@ return ret; } +static u64 +nvc0_devinit_disable(struct nouveau_devinit *devinit) +{ + struct nv50_devinit_priv *priv = (void *)devinit; + u32 r022500 = nv_rd32(priv, 0x022500); + u64 disable = 0ULL; + + if (r022500 & 0x00000001) + disable |= (1ULL << NVDEV_ENGINE_DISP); + + if (r022500 & 0x00000002) { + disable |= (1ULL << NVDEV_ENGINE_VP); + disable |= (1ULL << NVDEV_ENGINE_PPP); + } + + if (r022500 & 0x00000004) + disable |= (1ULL << NVDEV_ENGINE_BSP); + if (r022500 & 0x00000008) + disable |= (1ULL << NVDEV_ENGINE_VENC); + if (r022500 & 0x00000100) + disable |= (1ULL << NVDEV_ENGINE_COPY0); + if (r022500 & 0x00000200) + disable |= (1ULL << NVDEV_ENGINE_COPY1); + + return disable; +} + static int nvc0_devinit_ctor(struct nouveau_object *parent, struct nouveau_object *engine, struct nouveau_oclass *oclass, void *data, u32 size, @@ -72,19 +99,20 @@ if (ret) return ret; - priv->base.pll_set = nvc0_devinit_pll_set; if (nv_rd32(priv, 0x022500) & 0x00000001) priv->base.post = true; return 0; } -struct nouveau_oclass -nvc0_devinit_oclass = { - .handle = NV_SUBDEV(DEVINIT, 0xc0), - .ofuncs = &(struct nouveau_ofuncs) { +struct nouveau_oclass * +nvc0_devinit_oclass = &(struct nouveau_devinit_impl) { + .base.handle = NV_SUBDEV(DEVINIT, 0xc0), + .base.ofuncs = &(struct nouveau_ofuncs) { .ctor = nvc0_devinit_ctor, .dtor = _nouveau_devinit_dtor, .init = nv50_devinit_init, .fini = _nouveau_devinit_fini, }, -}; + .pll_set = nvc0_devinit_pll_set, + .disable = nvc0_devinit_disable, +}.base; --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/subdev/devinit/priv.h +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/subdev/devinit/priv.h @@ -6,20 +6,30 @@ #include #include -void nv04_devinit_dtor(struct nouveau_object *); -int nv04_devinit_init(struct nouveau_object *); -int nv04_devinit_fini(struct nouveau_object *, bool); -int nv04_devinit_pll_set(struct nouveau_devinit *, u32, u32); - -void setPLL_single(struct nouveau_devinit *, u32, struct nouveau_pll_vals *); -void setPLL_double_highregs(struct nouveau_devinit *, u32, struct nouveau_pll_vals *); -void setPLL_double_lowregs(struct nouveau_devinit *, u32, struct nouveau_pll_vals *); - - -struct nv50_devinit_priv { - struct nouveau_devinit base; +struct nouveau_devinit_impl { + struct nouveau_oclass base; + void (*meminit)(struct nouveau_devinit *); + int (*pll_set)(struct nouveau_devinit *, u32 type, u32 freq); + u64 (*disable)(struct nouveau_devinit *); }; -int nv50_devinit_init(struct nouveau_object *); +#define nouveau_devinit_create(p,e,o,d) \ + nouveau_devinit_create_((p), (e), (o), sizeof(**d), (void **)d) +#define nouveau_devinit_destroy(p) \ + nouveau_subdev_destroy(&(p)->base) +#define nouveau_devinit_init(p) ({ \ + struct nouveau_devinit *d = (p); \ + _nouveau_devinit_init(nv_object(d)); \ +}) +#define nouveau_devinit_fini(p,s) ({ \ + struct nouveau_devinit *d = (p); \ + _nouveau_devinit_fini(nv_object(d), (s)); \ +}) + +int nouveau_devinit_create_(struct nouveau_object *, struct nouveau_object *, + struct nouveau_oclass *, int, void **); +#define _nouveau_devinit_dtor _nouveau_subdev_dtor +int _nouveau_devinit_init(struct nouveau_object *); +int _nouveau_devinit_fini(struct nouveau_object *, bool suspend); #endif --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/subdev/fb/nv1a.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/subdev/fb/nv1a.c @@ -36,7 +36,7 @@ .fini = _nouveau_fb_fini, }, .base.memtype = nv04_fb_memtype_valid, - .base.ram = &nv10_ram_oclass, + .base.ram = &nv1a_ram_oclass, .tile.regions = 8, .tile.init = nv10_fb_tile_init, .tile.fini = nv10_fb_tile_fini, --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/subdev/fb/nvc0.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/subdev/fb/nvc0.c @@ -45,6 +45,7 @@ if (priv->r100c10_page) nv_wr32(priv, 0x100c10, priv->r100c10 >> 8); + nv_mask(priv, 0x100c80, 0x00000001, 0x00000000); /* 128KiB lpg */ return 0; } --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/subdev/mc/nv50.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/subdev/mc/nv50.c @@ -26,6 +26,7 @@ const struct nouveau_mc_intr nv50_mc_intr[] = { + { 0x04000000, NVDEV_ENGINE_DISP }, /* DISP before FIFO, so pageflip-timestamping works! */ { 0x00000001, NVDEV_ENGINE_MPEG }, { 0x00000100, NVDEV_ENGINE_FIFO }, { 0x00001000, NVDEV_ENGINE_GR }, @@ -34,7 +35,6 @@ { 0x00020000, NVDEV_ENGINE_VP }, /* NV84- */ { 0x00100000, NVDEV_SUBDEV_TIMER }, { 0x00200000, NVDEV_SUBDEV_GPIO }, - { 0x04000000, NVDEV_ENGINE_DISP }, { 0x10000000, NVDEV_SUBDEV_BUS }, { 0x80000000, NVDEV_ENGINE_SW }, { 0x0002d101, NVDEV_SUBDEV_FB }, --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/subdev/mc/nv98.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/subdev/mc/nv98.c @@ -26,6 +26,7 @@ static const struct nouveau_mc_intr nv98_mc_intr[] = { + { 0x04000000, NVDEV_ENGINE_DISP }, /* DISP first, so pageflip timestamps work */ { 0x00000001, NVDEV_ENGINE_PPP }, { 0x00000100, NVDEV_ENGINE_FIFO }, { 0x00001000, NVDEV_ENGINE_GR }, @@ -37,7 +38,6 @@ { 0x00100000, NVDEV_SUBDEV_TIMER }, { 0x00200000, NVDEV_SUBDEV_GPIO }, { 0x00400000, NVDEV_ENGINE_COPY0 }, /* NVA3- */ - { 0x04000000, NVDEV_ENGINE_DISP }, { 0x10000000, NVDEV_SUBDEV_BUS }, { 0x80000000, NVDEV_ENGINE_SW }, { 0x0042d101, NVDEV_SUBDEV_FB }, --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/core/subdev/mc/nvc0.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/core/subdev/mc/nvc0.c @@ -26,6 +26,7 @@ const struct nouveau_mc_intr nvc0_mc_intr[] = { + { 0x04000000, NVDEV_ENGINE_DISP }, /* DISP first, so pageflip timestamps work. */ { 0x00000001, NVDEV_ENGINE_PPP }, { 0x00000020, NVDEV_ENGINE_COPY0 }, { 0x00000040, NVDEV_ENGINE_COPY1 }, @@ -39,7 +40,6 @@ { 0x00200000, NVDEV_SUBDEV_GPIO }, { 0x01000000, NVDEV_SUBDEV_PWR }, { 0x02000000, NVDEV_SUBDEV_LTCG }, - { 0x04000000, NVDEV_ENGINE_DISP }, { 0x10000000, NVDEV_SUBDEV_BUS }, { 0x40000000, NVDEV_SUBDEV_IBUS }, { 0x80000000, NVDEV_ENGINE_SW }, --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/nouveau_acpi.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/nouveau_acpi.c @@ -423,9 +423,6 @@ acpi_status status; acpi_handle dhandle, rom_handle; - if (!nouveau_dsm_priv.dsm_detected && !nouveau_dsm_priv.optimus_detected) - return false; - dhandle = ACPI_HANDLE(&pdev->dev); if (!dhandle) return false; --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/nouveau_bios.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/nouveau_bios.c @@ -352,7 +352,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; @@ -936,7 +936,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-3.13.0.orig/drivers/gpu/drm/nouveau/nouveau_bo.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/nouveau_bo.c @@ -798,25 +798,25 @@ struct ttm_mem_reg *old_mem, struct ttm_mem_reg *new_mem) { struct nouveau_mem *node = old_mem->mm_node; - struct nouveau_bo *nvbo = nouveau_bo(bo); u64 length = (new_mem->num_pages << PAGE_SHIFT); u64 src_offset = node->vma[0].offset; u64 dst_offset = node->vma[1].offset; + int src_tiled = !!node->memtype; + int dst_tiled = !!((struct nouveau_mem *)new_mem->mm_node)->memtype; int ret; while (length) { u32 amount, stride, height; + ret = RING_SPACE(chan, 18 + 6 * (src_tiled + dst_tiled)); + if (ret) + return ret; + amount = min(length, (u64)(4 * 1024 * 1024)); stride = 16 * 4; height = amount / stride; - if (old_mem->mem_type == TTM_PL_VRAM && - nouveau_bo_tile_layout(nvbo)) { - ret = RING_SPACE(chan, 8); - if (ret) - return ret; - + if (src_tiled) { BEGIN_NV04(chan, NvSubCopy, 0x0200, 7); OUT_RING (chan, 0); OUT_RING (chan, 0); @@ -826,19 +826,10 @@ OUT_RING (chan, 0); OUT_RING (chan, 0); } else { - ret = RING_SPACE(chan, 2); - if (ret) - return ret; - BEGIN_NV04(chan, NvSubCopy, 0x0200, 1); OUT_RING (chan, 1); } - if (new_mem->mem_type == TTM_PL_VRAM && - nouveau_bo_tile_layout(nvbo)) { - ret = RING_SPACE(chan, 8); - if (ret) - return ret; - + if (dst_tiled) { BEGIN_NV04(chan, NvSubCopy, 0x021c, 7); OUT_RING (chan, 0); OUT_RING (chan, 0); @@ -848,18 +839,10 @@ OUT_RING (chan, 0); OUT_RING (chan, 0); } else { - ret = RING_SPACE(chan, 2); - if (ret) - return ret; - BEGIN_NV04(chan, NvSubCopy, 0x021c, 1); OUT_RING (chan, 1); } - ret = RING_SPACE(chan, 14); - if (ret) - return ret; - BEGIN_NV04(chan, NvSubCopy, 0x0238, 2); OUT_RING (chan, upper_32_bits(src_offset)); OUT_RING (chan, upper_32_bits(dst_offset)); --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/nouveau_connector.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/nouveau_connector.c @@ -925,10 +925,12 @@ NV_DEBUG(drm, "%splugged %s\n", plugged ? "" : "un", drm_get_connector_name(connector)); + 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(dev); } --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/nouveau_display.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/nouveau_display.c @@ -603,6 +603,14 @@ if (!s) return -ENOMEM; + if (new_bo != old_bo) { + ret = nouveau_bo_pin(new_bo, TTM_PL_FLAG_VRAM); + if (ret) + goto fail_free; + } + + mutex_lock(&chan->cli->mutex); + /* synchronise rendering channel with the kernel's channel */ spin_lock(&new_bo->bo.bdev->fence_lock); fence = nouveau_fence_ref(new_bo->bo.sync_obj); @@ -610,15 +618,8 @@ ret = nouveau_fence_sync(fence, chan); nouveau_fence_unref(&fence); if (ret) - goto fail_free; - - if (new_bo != old_bo) { - ret = nouveau_bo_pin(new_bo, TTM_PL_FLAG_VRAM); - if (ret) - goto fail_free; - } + goto fail_unpin; - mutex_lock(&chan->cli->mutex); ret = ttm_bo_reserve(&old_bo->bo, true, false, false, NULL); if (ret) goto fail_unpin; @@ -629,6 +630,9 @@ fb->bits_per_pixel, fb->pitches[0], crtc->x, crtc->y, new_bo->bo.offset }; + /* Keep vblanks on during flip, for the target crtc of this flip */ + drm_vblank_get(dev, nouveau_crtc(crtc)->index); + /* Emit a page flip */ if (nv_device(drm->device)->card_type >= NV_50) { ret = nv50_display_flip_next(crtc, fb, chan, swap_interval); @@ -657,9 +661,9 @@ } ret = nouveau_page_flip_emit(chan, old_bo, new_bo, s, &fence); - mutex_unlock(&chan->cli->mutex); if (ret) goto fail_unreserve; + mutex_unlock(&chan->cli->mutex); /* Update the crtc struct and cleanup */ crtc->fb = fb; @@ -672,6 +676,7 @@ return 0; fail_unreserve: + drm_vblank_put(dev, nouveau_crtc(crtc)->index); ttm_bo_unreserve(&old_bo->bo); fail_unpin: mutex_unlock(&chan->cli->mutex); @@ -691,6 +696,7 @@ struct drm_device *dev = drm->dev; struct nouveau_page_flip_state *s; unsigned long flags; + int crtcid = -1; spin_lock_irqsave(&dev->event_lock, flags); @@ -701,8 +707,16 @@ } s = list_first_entry(&fctx->flip, struct nouveau_page_flip_state, head); - if (s->event) - drm_send_vblank_event(dev, s->crtc, s->event); + if (s->event) { + /* Vblank timestamps/counts are only correct on >= NV-50 */ + if (nv_device(drm->device)->card_type >= NV_50) + crtcid = s->crtc; + + drm_send_vblank_event(dev, crtcid, s->event); + } + + /* Give up ownership of vblank for page-flipped crtc */ + drm_vblank_put(dev, s->crtc); list_del(&s->head); if (ps) --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/nouveau_drm.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/nouveau_drm.c @@ -376,6 +376,8 @@ if (ret) goto fail_device; + dev->irq_enabled = true; + /* workaround an odd issue on nvc1 by disabling the device's * nosnoop capability. hopefully won't cause issues until a * better fix is found - assuming there is one... @@ -475,6 +477,7 @@ struct nouveau_drm *drm = nouveau_drm(dev); struct nouveau_object *device; + dev->irq_enabled = false; device = drm->client.base.device; drm_put_dev(dev); @@ -483,13 +486,13 @@ } static int -nouveau_do_suspend(struct drm_device *dev) +nouveau_do_suspend(struct drm_device *dev, bool runtime) { struct nouveau_drm *drm = nouveau_drm(dev); struct nouveau_cli *cli; int ret; - if (dev->mode_config.num_crtc) { + if (dev->mode_config.num_crtc && !runtime) { NV_INFO(drm, "suspending display...\n"); ret = nouveau_display_suspend(dev); if (ret) @@ -557,7 +560,7 @@ if (drm_dev->mode_config.num_crtc) nouveau_fbcon_set_suspend(drm_dev, 1); - ret = nouveau_do_suspend(drm_dev); + ret = nouveau_do_suspend(drm_dev, false); if (ret) return ret; @@ -637,7 +640,7 @@ if (drm_dev->mode_config.num_crtc) nouveau_fbcon_set_suspend(drm_dev, 1); - ret = nouveau_do_suspend(drm_dev); + ret = nouveau_do_suspend(drm_dev, false); return ret; } @@ -855,20 +858,23 @@ struct drm_device *drm_dev = pci_get_drvdata(pdev); int ret; - if (nouveau_runtime_pm == 0) - return -EINVAL; + if (nouveau_runtime_pm == 0) { + pm_runtime_forbid(dev); + return -EBUSY; + } /* are we optimus enabled? */ if (nouveau_runtime_pm == -1 && !nouveau_is_optimus() && !nouveau_is_v1_dsm()) { DRM_DEBUG_DRIVER("failing to power off - not optimus\n"); - return -EINVAL; + pm_runtime_forbid(dev); + return -EBUSY; } nv_debug_level(SILENT); drm_kms_helper_poll_disable(drm_dev); vga_switcheroo_set_dynamic_switch(pdev, VGA_SWITCHEROO_OFF); nouveau_switcheroo_optimus_dsm(); - ret = nouveau_do_suspend(drm_dev); + ret = nouveau_do_suspend(drm_dev, true); pci_save_state(pdev); pci_disable_device(pdev); pci_set_power_state(pdev, PCI_D3cold); @@ -894,8 +900,6 @@ pci_set_master(pdev); ret = nouveau_do_resume(drm_dev); - if (drm_dev->mode_config.num_crtc) - nouveau_display_resume(drm_dev); drm_kms_helper_poll_enable(drm_dev); /* do magic */ nv_mask(device, 0x88488, (1 << 25), (1 << 25)); @@ -912,12 +916,15 @@ struct nouveau_drm *drm = nouveau_drm(drm_dev); struct drm_crtc *crtc; - if (nouveau_runtime_pm == 0) + if (nouveau_runtime_pm == 0) { + pm_runtime_forbid(dev); return -EBUSY; + } /* are we optimus enabled? */ if (nouveau_runtime_pm == -1 && !nouveau_is_optimus() && !nouveau_is_v1_dsm()) { DRM_DEBUG_DRIVER("failing to power off - not optimus\n"); + pm_runtime_forbid(dev); return -EBUSY; } --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/nouveau_drm.h +++ linux-3.13.0/drivers/gpu/drm/nouveau/nouveau_drm.h @@ -10,7 +10,7 @@ #define DRIVER_MAJOR 1 #define DRIVER_MINOR 1 -#define DRIVER_PATCHLEVEL 1 +#define DRIVER_PATCHLEVEL 2 /* * 1.1.1: @@ -21,6 +21,8 @@ * to control registers on the MPs to enable performance counters, * and to control the warp error enable mask (OpenGL requires out of * bounds access to local memory to be silently ignored / return 0). + * 1.1.2: + * - fixes multiple bugs in flip completion events and timestamping */ #include --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/nouveau_fbcon.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/nouveau_fbcon.c @@ -183,8 +183,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, @@ -200,6 +222,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-3.13.0.orig/drivers/gpu/drm/nouveau/nouveau_gem.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/nouveau_gem.c @@ -196,11 +196,12 @@ struct nouveau_bo *nvbo = nouveau_gem_object(gem); struct nouveau_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->base.vm) { vma = nouveau_bo_vma_find(nvbo, cli->base.vm); --- linux-3.13.0.orig/drivers/gpu/drm/nouveau/nouveau_vga.c +++ linux-3.13.0/drivers/gpu/drm/nouveau/nouveau_vga.c @@ -98,7 +98,16 @@ nouveau_vga_fini(struct nouveau_drm *drm) { struct drm_device *dev = drm->dev; + bool runtime = false; + + if (nouveau_runtime_pm == 1) + runtime = true; + if ((nouveau_runtime_pm == -1) && (nouveau_is_optimus() || nouveau_is_v1_dsm())) + runtime = true; + vga_switcheroo_unregister_client(dev->pdev); + if (runtime && nouveau_is_v1_dsm() && !nouveau_is_optimus()) + vga_switcheroo_fini_domain_pm_ops(drm->dev->dev); vga_client_register(dev->pdev, NULL, NULL, NULL); } --- linux-3.13.0.orig/drivers/gpu/drm/qxl/qxl_cmd.c +++ linux-3.13.0/drivers/gpu/drm/qxl/qxl_cmd.c @@ -505,6 +505,7 @@ cmd = (struct qxl_surface_cmd *)qxl_release_map(qdev, release); cmd->type = QXL_SURFACE_CMD_CREATE; + cmd->flags = QXL_SURF_FLAG_KEEP_DATA; cmd->u.surface_create.format = surf->surf.format; cmd->u.surface_create.width = surf->surf.width; cmd->u.surface_create.height = surf->surf.height; --- linux-3.13.0.orig/drivers/gpu/drm/qxl/qxl_display.c +++ linux-3.13.0/drivers/gpu/drm/qxl/qxl_display.c @@ -136,9 +136,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) @@ -146,29 +172,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); @@ -516,7 +519,6 @@ struct qxl_framebuffer *qfb; struct qxl_bo *bo, *old_bo = NULL; struct qxl_crtc *qcrtc = to_qxl_crtc(crtc); - uint32_t width, height, base_offset; bool recreate_primary = false; int ret; int surf_id; @@ -543,12 +545,13 @@ adjusted_mode->hdisplay, adjusted_mode->vdisplay); - if (qcrtc->index == 0) + if (bo->is_primary == false) recreate_primary = true; - width = mode->hdisplay; - height = mode->vdisplay; - base_offset = 0; + if (bo->surf.stride * bo->surf.height > qdev->vram_size) { + DRM_ERROR("Mode doesn't fit in vram size (vgamem)"); + return -EINVAL; + } ret = qxl_bo_reserve(bo, false); if (ret != 0) @@ -562,10 +565,10 @@ if (recreate_primary) { qxl_io_destroy_primary(qdev); qxl_io_log(qdev, - "recreate primary: %dx%d (was %dx%d,%d,%d)\n", - width, height, bo->surf.width, - bo->surf.height, bo->surf.stride, bo->surf.format); - qxl_io_create_primary(qdev, base_offset, bo); + "recreate primary: %dx%d,%d,%d\n", + bo->surf.width, bo->surf.height, + bo->surf.stride, bo->surf.format); + qxl_io_create_primary(qdev, 0, bo); bo->is_primary = true; surf_id = 0; } else { @@ -746,11 +749,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) @@ -795,13 +809,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-3.13.0.orig/drivers/gpu/drm/qxl/qxl_drv.h +++ linux-3.13.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-3.13.0.orig/drivers/gpu/drm/qxl/qxl_ioctl.c +++ linux-3.13.0/drivers/gpu/drm/qxl/qxl_ioctl.c @@ -122,8 +122,10 @@ qobj = gem_to_qxl_bo(gobj); ret = qxl_release_list_add(release, qobj); - if (ret) + if (ret) { + drm_gem_object_unreference_unlocked(gobj); return NULL; + } return qobj; } @@ -166,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-3.13.0.orig/drivers/gpu/drm/qxl/qxl_irq.c +++ linux-3.13.0/drivers/gpu/drm/qxl/qxl_irq.c @@ -33,6 +33,9 @@ pending = xchg(&qdev->ram_header->int_pending, 0); + if (!pending) + return IRQ_NONE; + atomic_inc(&qdev->irq_received); if (pending & QXL_INTERRUPT_DISPLAY) { --- linux-3.13.0.orig/drivers/gpu/drm/qxl/qxl_ttm.c +++ linux-3.13.0/drivers/gpu/drm/qxl/qxl_ttm.c @@ -433,6 +433,7 @@ static void qxl_sync_obj_unref(void **sync_obj) { + *sync_obj = NULL; } static void *qxl_sync_obj_ref(void *sync_obj) --- linux-3.13.0.orig/drivers/gpu/drm/radeon/atombios_crtc.c +++ linux-3.13.0/drivers/gpu/drm/radeon/atombios_crtc.c @@ -209,6 +209,16 @@ atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); } +static const u32 vga_control_regs[6] = +{ + AVIVO_D1VGA_CONTROL, + AVIVO_D2VGA_CONTROL, + EVERGREEN_D3VGA_CONTROL, + EVERGREEN_D4VGA_CONTROL, + EVERGREEN_D5VGA_CONTROL, + EVERGREEN_D6VGA_CONTROL, +}; + static void atombios_blank_crtc(struct drm_crtc *crtc, int state) { struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc); @@ -216,13 +226,23 @@ struct radeon_device *rdev = dev->dev_private; int index = GetIndexIntoMasterTable(COMMAND, BlankCRTC); BLANK_CRTC_PS_ALLOCATION args; + u32 vga_control = 0; memset(&args, 0, sizeof(args)); + if (ASIC_IS_DCE8(rdev)) { + vga_control = RREG32(vga_control_regs[radeon_crtc->crtc_id]); + WREG32(vga_control_regs[radeon_crtc->crtc_id], vga_control | 1); + } + args.ucCRTC = radeon_crtc->crtc_id; args.ucBlanking = state; atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); + + if (ASIC_IS_DCE8(rdev)) { + WREG32(vga_control_regs[radeon_crtc->crtc_id], vga_control); + } } static void atombios_powergate_crtc(struct drm_crtc *crtc, int state) @@ -250,8 +270,6 @@ switch (mode) { case DRM_MODE_DPMS_ON: radeon_crtc->enabled = true; - /* adjust pm to dpms changes BEFORE enabling crtcs */ - radeon_pm_compute_clocks(rdev); atombios_enable_crtc(crtc, ATOM_ENABLE); if (ASIC_IS_DCE3(rdev) && !ASIC_IS_DCE6(rdev)) atombios_enable_crtc_memreq(crtc, ATOM_ENABLE); @@ -269,10 +287,10 @@ atombios_enable_crtc_memreq(crtc, ATOM_DISABLE); atombios_enable_crtc(crtc, ATOM_DISABLE); radeon_crtc->enabled = false; - /* adjust pm to dpms changes AFTER disabling crtcs */ - radeon_pm_compute_clocks(rdev); break; } + /* adjust pm to dpms */ + radeon_pm_compute_clocks(rdev); } static void @@ -312,8 +330,10 @@ misc |= ATOM_COMPOSITESYNC; if (mode->flags & DRM_MODE_FLAG_INTERLACE) misc |= ATOM_INTERLACE; - if (mode->flags & DRM_MODE_FLAG_DBLSCAN) + if (mode->flags & DRM_MODE_FLAG_DBLCLK) misc |= ATOM_DOUBLE_CLOCK_MODE; + if (mode->flags & DRM_MODE_FLAG_DBLSCAN) + misc |= ATOM_H_REPLICATIONBY2 | ATOM_V_REPLICATIONBY2; args.susModeMiscInfo.usAccess = cpu_to_le16(misc); args.ucCRTC = radeon_crtc->crtc_id; @@ -356,8 +376,10 @@ misc |= ATOM_COMPOSITESYNC; if (mode->flags & DRM_MODE_FLAG_INTERLACE) misc |= ATOM_INTERLACE; - if (mode->flags & DRM_MODE_FLAG_DBLSCAN) + if (mode->flags & DRM_MODE_FLAG_DBLCLK) misc |= ATOM_DOUBLE_CLOCK_MODE; + if (mode->flags & DRM_MODE_FLAG_DBLSCAN) + misc |= ATOM_H_REPLICATIONBY2 | ATOM_V_REPLICATIONBY2; args.susModeMiscInfo.usAccess = cpu_to_le16(misc); args.ucCRTC = radeon_crtc->crtc_id; @@ -839,14 +861,16 @@ args.v5.ucMiscInfo = 0; /* HDMI depth, etc. */ if (ss_enabled && (ss->type & ATOM_EXTERNAL_SS_MASK)) args.v5.ucMiscInfo |= PIXEL_CLOCK_V5_MISC_REF_DIV_SRC; - switch (bpc) { - case 8: - default: - args.v5.ucMiscInfo |= PIXEL_CLOCK_V5_MISC_HDMI_24BPP; - break; - case 10: - args.v5.ucMiscInfo |= PIXEL_CLOCK_V5_MISC_HDMI_30BPP; - break; + if (encoder_mode == ATOM_ENCODER_MODE_HDMI) { + switch (bpc) { + case 8: + default: + args.v5.ucMiscInfo |= PIXEL_CLOCK_V5_MISC_HDMI_24BPP; + break; + case 10: + args.v5.ucMiscInfo |= PIXEL_CLOCK_V5_MISC_HDMI_30BPP; + break; + } } args.v5.ucTransmitterID = encoder_id; args.v5.ucEncoderMode = encoder_mode; @@ -861,20 +885,22 @@ args.v6.ucMiscInfo = 0; /* HDMI depth, etc. */ if (ss_enabled && (ss->type & ATOM_EXTERNAL_SS_MASK)) args.v6.ucMiscInfo |= PIXEL_CLOCK_V6_MISC_REF_DIV_SRC; - switch (bpc) { - case 8: - default: - args.v6.ucMiscInfo |= PIXEL_CLOCK_V6_MISC_HDMI_24BPP; - break; - case 10: - args.v6.ucMiscInfo |= PIXEL_CLOCK_V6_MISC_HDMI_30BPP; - break; - case 12: - args.v6.ucMiscInfo |= PIXEL_CLOCK_V6_MISC_HDMI_36BPP; - break; - case 16: - args.v6.ucMiscInfo |= PIXEL_CLOCK_V6_MISC_HDMI_48BPP; - break; + if (encoder_mode == ATOM_ENCODER_MODE_HDMI) { + switch (bpc) { + case 8: + default: + args.v6.ucMiscInfo |= PIXEL_CLOCK_V6_MISC_HDMI_24BPP; + break; + case 10: + args.v6.ucMiscInfo |= PIXEL_CLOCK_V6_MISC_HDMI_30BPP; + break; + case 12: + args.v6.ucMiscInfo |= PIXEL_CLOCK_V6_MISC_HDMI_36BPP; + break; + case 16: + args.v6.ucMiscInfo |= PIXEL_CLOCK_V6_MISC_HDMI_48BPP; + break; + } } args.v6.ucTransmitterID = encoder_id; args.v6.ucEncoderMode = encoder_mode; @@ -938,11 +964,14 @@ radeon_atombios_get_ppll_ss_info(rdev, &radeon_crtc->ss, ATOM_DP_SS_ID1); - } else + } else { radeon_crtc->ss_enabled = radeon_atombios_get_ppll_ss_info(rdev, &radeon_crtc->ss, ATOM_DP_SS_ID1); + } + /* disable spread spectrum on DCE3 DP */ + radeon_crtc->ss_enabled = false; } break; case ATOM_ENCODER_MODE_LVDS: @@ -1146,7 +1175,7 @@ evergreen_tiling_fields(tiling_flags, &bankw, &bankh, &mtaspect, &tile_split); /* Set NUM_BANKS. */ - if (rdev->family >= CHIP_BONAIRE) { + if (rdev->family >= CHIP_TAHITI) { unsigned tileb, index, num_banks, tile_split_bytes; /* Calculate the macrotile mode index. */ @@ -1164,13 +1193,14 @@ return -EINVAL; } - num_banks = (rdev->config.cik.macrotile_mode_array[index] >> 6) & 0x3; + if (rdev->family >= CHIP_BONAIRE) + num_banks = (rdev->config.cik.macrotile_mode_array[index] >> 6) & 0x3; + else + num_banks = (rdev->config.si.tile_mode_array[index] >> 20) & 0x3; fb_format |= EVERGREEN_GRPH_NUM_BANKS(num_banks); } else { - /* SI and older. */ - if (rdev->family >= CHIP_TAHITI) - tmp = rdev->config.si.tile_config; - else if (rdev->family >= CHIP_CAYMAN) + /* NI and older. */ + if (rdev->family >= CHIP_CAYMAN) tmp = rdev->config.cayman.tile_config; else tmp = rdev->config.evergreen.tile_config; @@ -1273,6 +1303,9 @@ (x << 16) | y); viewport_w = crtc->mode.hdisplay; viewport_h = (crtc->mode.vdisplay + 1) & ~1; + if ((rdev->family >= CHIP_BONAIRE) && + (crtc->mode.flags & DRM_MODE_FLAG_INTERLACE)) + viewport_h *= 2; WREG32(EVERGREEN_VIEWPORT_SIZE + radeon_crtc->crtc_offset, (viewport_w << 16) | viewport_h); @@ -1688,9 +1721,8 @@ return pll; } /* otherwise, pick one of the plls */ - if ((rdev->family == CHIP_KAVERI) || - (rdev->family == CHIP_KABINI)) { - /* KB/KV has PPLL1 and PPLL2 */ + if ((rdev->family == CHIP_KABINI)) { + /* KB has PPLL1 and PPLL2 */ pll_in_use = radeon_get_pll_use_mask(crtc); if (!(pll_in_use & (1 << ATOM_PPLL2))) return ATOM_PPLL2; @@ -1699,7 +1731,7 @@ DRM_ERROR("unable to allocate a PPLL\n"); return ATOM_PPLL_INVALID; } else { - /* CI has PPLL0, PPLL1, and PPLL2 */ + /* CI/KV has PPLL0, PPLL1, and PPLL2 */ pll_in_use = radeon_get_pll_use_mask(crtc); if (!(pll_in_use & (1 << ATOM_PPLL2))) return ATOM_PPLL2; @@ -1743,6 +1775,20 @@ return ATOM_PPLL1; DRM_ERROR("unable to allocate a PPLL\n"); return ATOM_PPLL_INVALID; + } else if (ASIC_IS_DCE41(rdev)) { + /* Don't share PLLs on DCE4.1 chips */ + if (ENCODER_MODE_IS_DP(atombios_get_encoder_mode(radeon_crtc->encoder))) { + if (rdev->clock.dp_extclk) + /* skip PPLL programming if using ext clock */ + return ATOM_PPLL_INVALID; + } + pll_in_use = radeon_get_pll_use_mask(crtc); + if (!(pll_in_use & (1 << ATOM_PPLL1))) + return ATOM_PPLL1; + if (!(pll_in_use & (1 << ATOM_PPLL2))) + return ATOM_PPLL2; + DRM_ERROR("unable to allocate a PPLL\n"); + return ATOM_PPLL_INVALID; } else if (ASIC_IS_DCE4(rdev)) { /* in DP mode, the DP ref clock can come from PPLL, DCPLL, or ext clock, * depending on the asic: @@ -1770,7 +1816,7 @@ if (pll != ATOM_PPLL_INVALID) return pll; } - } else if (!ASIC_IS_DCE41(rdev)) { /* Don't share PLLs on DCE4.1 chips */ + } else { /* use the same PPLL for all monitors with the same clock */ pll = radeon_get_shared_nondp_ppll(crtc); if (pll != ATOM_PPLL_INVALID) @@ -1973,6 +2019,7 @@ case ATOM_PPLL0: /* disable the ppll */ if ((rdev->family == CHIP_ARUBA) || + (rdev->family == CHIP_KAVERI) || (rdev->family == CHIP_BONAIRE) || (rdev->family == CHIP_HAWAII)) atombios_crtc_program_pll(crtc, radeon_crtc->crtc_id, radeon_crtc->pll_id, --- linux-3.13.0.orig/drivers/gpu/drm/radeon/atombios_dp.c +++ linux-3.13.0/drivers/gpu/drm/radeon/atombios_dp.c @@ -123,7 +123,7 @@ /* flags not zero */ if (args.v1.ucReplyStatus == 2) { DRM_DEBUG_KMS("dp_aux_ch flags not zero\n"); - return -EBUSY; + return -EIO; } /* error */ @@ -384,6 +384,19 @@ /***** radeon specific DP functions *****/ +static int radeon_dp_get_max_link_rate(struct drm_connector *connector, + u8 dpcd[DP_DPCD_SIZE]) +{ + int max_link_rate; + + if (radeon_connector_is_dp12_capable(connector)) + max_link_rate = min(drm_dp_max_link_rate(dpcd), 540000); + else + max_link_rate = min(drm_dp_max_link_rate(dpcd), 270000); + + return max_link_rate; +} + /* First get the min lane# when low rate is used according to pixel clock * (prefer low rate), second check max lane# supported by DP panel, * if the max lane# < low rate lane# then use max lane# instead. @@ -393,7 +406,7 @@ int pix_clock) { int bpp = convert_bpc_to_bpp(radeon_get_monitor_bpc(connector)); - int max_link_rate = drm_dp_max_link_rate(dpcd); + int max_link_rate = radeon_dp_get_max_link_rate(connector, dpcd); int max_lane_num = drm_dp_max_lane_count(dpcd); int lane_num; int max_dp_pix_clock; @@ -431,7 +444,7 @@ return 540000; } - return drm_dp_max_link_rate(dpcd); + return radeon_dp_get_max_link_rate(connector, dpcd); } static u8 radeon_dp_encoder_service(struct radeon_device *rdev, @@ -561,6 +574,10 @@ struct radeon_connector_atom_dig *dig_connector; int dp_clock; + if ((mode->clock > 340000) && + (!radeon_connector_is_dp12_capable(connector))) + return MODE_CLOCK_HIGH; + if (!radeon_connector->con_priv) return MODE_CLOCK_HIGH; dig_connector = radeon_connector->con_priv; @@ -683,10 +700,8 @@ radeon_write_dpcd_reg(dp_info->radeon_connector, DP_DOWNSPREAD_CTRL, 0); - if ((dp_info->connector->connector_type == DRM_MODE_CONNECTOR_eDP) && - (dig->panel_mode == DP_PANEL_MODE_INTERNAL_DP2_MODE)) { + if (dig->panel_mode == DP_PANEL_MODE_INTERNAL_DP2_MODE) radeon_write_dpcd_reg(dp_info->radeon_connector, DP_EDP_CONFIGURATION_SET, 1); - } /* set the lane count on the sink */ tmp = dp_info->dp_lane_count; --- linux-3.13.0.orig/drivers/gpu/drm/radeon/atombios_encoders.c +++ linux-3.13.0/drivers/gpu/drm/radeon/atombios_encoders.c @@ -183,7 +183,6 @@ struct backlight_properties props; struct radeon_backlight_privdata *pdata; struct radeon_encoder_atom_dig *dig; - u8 backlight_level; char bl_name[16]; /* Mac laptops with multiple GPUs use the gmux driver for backlight @@ -222,16 +221,22 @@ pdata->encoder = radeon_encoder; - backlight_level = radeon_atom_get_backlight_level_from_reg(rdev); - dig = radeon_encoder->enc_priv; dig->bl_dev = bd; bd->props.brightness = radeon_atom_backlight_get_brightness(bd); + /* Set a reasonable default here if the level is 0 otherwise + * fbdev will attempt to turn the backlight on after console + * unblanking and it will try and restore 0 which turns the backlight + * off again. + */ + if (bd->props.brightness == 0) + bd->props.brightness = RADEON_MAX_BL_LEVEL; bd->props.power = FB_BLANK_UNBLANK; backlight_update_status(bd); DRM_INFO("radeon atom DIG backlight initialized\n"); + rdev->mode_info.bl_encoder = radeon_encoder; return; @@ -890,8 +895,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; @@ -908,6 +911,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: @@ -1313,7 +1320,7 @@ } if (is_dp) args.v5.ucLaneNum = dp_lane_count; - else if (radeon_encoder->pixel_clock > 165000) + else if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock)) args.v5.ucLaneNum = 8; else args.v5.ucLaneNum = 4; @@ -1897,8 +1904,11 @@ args.v2.ucEncodeMode = ATOM_ENCODER_MODE_CRT; else args.v2.ucEncodeMode = atombios_get_encoder_mode(encoder); - } else + } else if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) { + args.v2.ucEncodeMode = ATOM_ENCODER_MODE_LVDS; + } else { args.v2.ucEncodeMode = atombios_get_encoder_mode(encoder); + } switch (radeon_encoder->encoder_id) { case ENCODER_OBJECT_ID_INTERNAL_UNIPHY: case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1: --- linux-3.13.0.orig/drivers/gpu/drm/radeon/ci_dpm.c +++ linux-3.13.0/drivers/gpu/drm/radeon/ci_dpm.c @@ -21,8 +21,10 @@ * */ +#include #include "drmP.h" #include "radeon.h" +#include "radeon_ucode.h" #include "cikd.h" #include "r600_dpm.h" #include "ci_dpm.h" @@ -850,6 +852,9 @@ WREG32_SMC(CG_THERMAL_CTRL, tmp); #endif + rdev->pm.dpm.thermal.min_temp = low_temp; + rdev->pm.dpm.thermal.max_temp = high_temp; + return 0; } @@ -921,7 +926,18 @@ pi->vddc_leakage.count = 0; pi->vddci_leakage.count = 0; - if (radeon_atom_get_leakage_id_from_vbios(rdev, &leakage_id) == 0) { + if (rdev->pm.dpm.platform_caps & ATOM_PP_PLATFORM_CAP_EVV) { + for (i = 0; i < CISLANDS_MAX_LEAKAGE_COUNT; i++) { + virtual_voltage_id = ATOM_VIRTUAL_VOLTAGE_ID0 + i; + if (radeon_atom_get_voltage_evv(rdev, virtual_voltage_id, &vddc) != 0) + continue; + if (vddc != 0 && vddc != virtual_voltage_id) { + pi->vddc_leakage.actual_voltage[pi->vddc_leakage.count] = vddc; + pi->vddc_leakage.leakage_id[pi->vddc_leakage.count] = virtual_voltage_id; + pi->vddc_leakage.count++; + } + } + } else if (radeon_atom_get_leakage_id_from_vbios(rdev, &leakage_id) == 0) { for (i = 0; i < CISLANDS_MAX_LEAKAGE_COUNT; i++) { virtual_voltage_id = ATOM_VIRTUAL_VOLTAGE_ID0 + i; if (radeon_atom_get_leakage_vddc_based_on_leakage_params(rdev, &vddc, &vddci, @@ -1160,7 +1176,7 @@ tmp &= ~GLOBAL_PWRMGT_EN; WREG32_SMC(GENERAL_PWRMGT, tmp); - tmp = RREG32(SCLK_PWRMGT_CNTL); + tmp = RREG32_SMC(SCLK_PWRMGT_CNTL); tmp &= ~DYNAMIC_PM_EN; WREG32_SMC(SCLK_PWRMGT_CNTL, tmp); @@ -4725,7 +4741,7 @@ ci_enable_spread_spectrum(rdev, false); ci_enable_auto_throttle_source(rdev, RADEON_DPM_AUTO_THROTTLE_SRC_THERMAL, false); ci_stop_dpm(rdev); - ci_enable_ds_master_switch(rdev, true); + ci_enable_ds_master_switch(rdev, false); ci_enable_ulv(rdev, false); ci_clear_vc(rdev); ci_reset_to_default(rdev); @@ -5128,6 +5144,12 @@ pi->mclk_dpm_key_disabled = 0; pi->pcie_dpm_key_disabled = 0; + /* mclk dpm is unstable on some R7 260X cards with the old mc ucode */ + if ((rdev->pdev->device == 0x6658) && + (rdev->mc_fw->size == (BONAIRE_MC_UCODE_SIZE * 4))) { + pi->mclk_dpm_key_disabled = 1; + } + pi->caps_sclk_ds = true; pi->mclk_strobe_mode_threshold = 40000; --- linux-3.13.0.orig/drivers/gpu/drm/radeon/cik.c +++ linux-3.13.0/drivers/gpu/drm/radeon/cik.c @@ -38,6 +38,7 @@ MODULE_FIRMWARE("radeon/BONAIRE_ce.bin"); MODULE_FIRMWARE("radeon/BONAIRE_mec.bin"); MODULE_FIRMWARE("radeon/BONAIRE_mc.bin"); +MODULE_FIRMWARE("radeon/BONAIRE_mc2.bin"); MODULE_FIRMWARE("radeon/BONAIRE_rlc.bin"); MODULE_FIRMWARE("radeon/BONAIRE_sdma.bin"); MODULE_FIRMWARE("radeon/BONAIRE_smc.bin"); @@ -46,6 +47,7 @@ MODULE_FIRMWARE("radeon/HAWAII_ce.bin"); MODULE_FIRMWARE("radeon/HAWAII_mec.bin"); MODULE_FIRMWARE("radeon/HAWAII_mc.bin"); +MODULE_FIRMWARE("radeon/HAWAII_mc2.bin"); MODULE_FIRMWARE("radeon/HAWAII_rlc.bin"); MODULE_FIRMWARE("radeon/HAWAII_sdma.bin"); MODULE_FIRMWARE("radeon/HAWAII_smc.bin"); @@ -1095,7 +1097,7 @@ 0x8a14, 0xf000003f, 0x00000007, 0x8b24, 0xffffffff, 0x00ffffff, 0x28350, 0x3f3f3fff, 0x00000082, - 0x28355, 0x0000003f, 0x00000000, + 0x28354, 0x0000003f, 0x00000000, 0x3e78, 0x00000001, 0x00000002, 0x913c, 0xffff03df, 0x00000004, 0xc768, 0x00000008, 0x00000008, @@ -1702,20 +1704,20 @@ const __be32 *fw_data; u32 running, blackout = 0; u32 *io_mc_regs; - int i, ucode_size, regs_size; + int i, regs_size, ucode_size; if (!rdev->mc_fw) return -EINVAL; + ucode_size = rdev->mc_fw->size / 4; + switch (rdev->family) { case CHIP_BONAIRE: io_mc_regs = (u32 *)&bonaire_io_mc_regs; - ucode_size = CIK_MC_UCODE_SIZE; regs_size = BONAIRE_IO_MC_REGS_SIZE; break; case CHIP_HAWAII: io_mc_regs = (u32 *)&hawaii_io_mc_regs; - ucode_size = HAWAII_MC_UCODE_SIZE; regs_size = HAWAII_IO_MC_REGS_SIZE; break; default: @@ -1782,7 +1784,7 @@ const char *chip_name; size_t pfp_req_size, me_req_size, ce_req_size, mec_req_size, rlc_req_size, mc_req_size = 0, - sdma_req_size, smc_req_size = 0; + sdma_req_size, smc_req_size = 0, mc2_req_size = 0; char fw_name[30]; int err; @@ -1796,7 +1798,8 @@ ce_req_size = CIK_CE_UCODE_SIZE * 4; mec_req_size = CIK_MEC_UCODE_SIZE * 4; rlc_req_size = BONAIRE_RLC_UCODE_SIZE * 4; - mc_req_size = CIK_MC_UCODE_SIZE * 4; + mc_req_size = BONAIRE_MC_UCODE_SIZE * 4; + mc2_req_size = BONAIRE_MC2_UCODE_SIZE * 4; sdma_req_size = CIK_SDMA_UCODE_SIZE * 4; smc_req_size = ALIGN(BONAIRE_SMC_UCODE_SIZE, 4); break; @@ -1808,6 +1811,7 @@ mec_req_size = CIK_MEC_UCODE_SIZE * 4; rlc_req_size = BONAIRE_RLC_UCODE_SIZE * 4; mc_req_size = HAWAII_MC_UCODE_SIZE * 4; + mc2_req_size = HAWAII_MC2_UCODE_SIZE * 4; sdma_req_size = CIK_SDMA_UCODE_SIZE * 4; smc_req_size = ALIGN(HAWAII_SMC_UCODE_SIZE, 4); break; @@ -1903,16 +1907,22 @@ /* No SMC, MC ucode on APUs */ if (!(rdev->flags & RADEON_IS_IGP)) { - snprintf(fw_name, sizeof(fw_name), "radeon/%s_mc.bin", chip_name); + snprintf(fw_name, sizeof(fw_name), "radeon/%s_mc2.bin", chip_name); err = request_firmware(&rdev->mc_fw, fw_name, rdev->dev); - if (err) - goto out; - if (rdev->mc_fw->size != mc_req_size) { + if (err) { + snprintf(fw_name, sizeof(fw_name), "radeon/%s_mc.bin", chip_name); + err = request_firmware(&rdev->mc_fw, fw_name, rdev->dev); + if (err) + goto out; + } + if ((rdev->mc_fw->size != mc_req_size) && + (rdev->mc_fw->size != mc2_req_size)){ printk(KERN_ERR "cik_mc: Bogus length %zu in firmware \"%s\"\n", rdev->mc_fw->size, fw_name); err = -EINVAL; } + DRM_INFO("%s: %zu bytes\n", fw_name, rdev->mc_fw->size); snprintf(fw_name, sizeof(fw_name), "radeon/%s_smc.bin", chip_name); err = request_firmware(&rdev->smc_fw, fw_name, rdev->dev); @@ -2209,6 +2219,7 @@ gb_tile_moden = 0; break; } + rdev->config.cik.macrotile_mode_array[reg_offset] = gb_tile_moden; WREG32(GB_MACROTILE_MODE0 + (reg_offset * 4), gb_tile_moden); } } else if (num_pipe_configs == 8) { @@ -3220,6 +3231,7 @@ (rdev->pdev->device == 0x130B) || (rdev->pdev->device == 0x130E) || (rdev->pdev->device == 0x1315) || + (rdev->pdev->device == 0x1318) || (rdev->pdev->device == 0x131B)) { rdev->config.cik.max_cu_per_sh = 4; rdev->config.cik.max_backends_per_se = 1; @@ -3501,7 +3513,21 @@ struct radeon_ring *ring = &rdev->ring[fence->ring]; u64 addr = rdev->fence_drv[fence->ring].gpu_addr; - /* EVENT_WRITE_EOP - flush caches, send int */ + /* Workaround for cache flush problems. First send a dummy EOP + * event down the pipe with seq one below. + */ + radeon_ring_write(ring, PACKET3(PACKET3_EVENT_WRITE_EOP, 4)); + radeon_ring_write(ring, (EOP_TCL1_ACTION_EN | + EOP_TC_ACTION_EN | + EVENT_TYPE(CACHE_FLUSH_AND_INV_TS_EVENT) | + EVENT_INDEX(5))); + radeon_ring_write(ring, addr & 0xfffffffc); + radeon_ring_write(ring, (upper_32_bits(addr) & 0xffff) | + DATA_SEL(1) | INT_SEL(0)); + radeon_ring_write(ring, fence->seq - 1); + radeon_ring_write(ring, 0); + + /* Then send the real EOP event down the pipe. */ radeon_ring_write(ring, PACKET3(PACKET3_EVENT_WRITE_EOP, 4)); radeon_ring_write(ring, (EOP_TCL1_ACTION_EN | EOP_TC_ACTION_EN | @@ -3566,8 +3592,6 @@ struct radeon_semaphore *semaphore, bool emit_wait) { -/* TODO: figure out why semaphore cause lockups */ -#if 0 uint64_t addr = semaphore->gpu_addr; unsigned sel = emit_wait ? PACKET3_SEM_SEL_WAIT : PACKET3_SEM_SEL_SIGNAL; @@ -3576,9 +3600,6 @@ radeon_ring_write(ring, (upper_32_bits(addr) & 0xffff) | sel); return true; -#else - return false; -#endif } /** @@ -3705,11 +3726,7 @@ (ib->vm ? (ib->vm->id << 24) : 0); 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); } @@ -3898,8 +3915,8 @@ /* init the CE partitions. CE only used for gfx on CIK */ radeon_ring_write(ring, PACKET3(PACKET3_SET_BASE, 2)); radeon_ring_write(ring, PACKET3_BASE_INDEX(CE_PARTITION_BASE)); - radeon_ring_write(ring, 0xc000); - radeon_ring_write(ring, 0xc000); + radeon_ring_write(ring, 0x8000); + radeon_ring_write(ring, 0x8000); /* setup clear context state */ radeon_ring_write(ring, PACKET3(PACKET3_PREAMBLE_CNTL, 0)); @@ -4062,6 +4079,31 @@ WDOORBELL32(ring->doorbell_index, ring->wptr); } +static void cik_compute_stop(struct radeon_device *rdev, + struct radeon_ring *ring) +{ + u32 j, tmp; + + cik_srbm_select(rdev, ring->me, ring->pipe, ring->queue, 0); + /* Disable wptr polling. */ + tmp = RREG32(CP_PQ_WPTR_POLL_CNTL); + tmp &= ~WPTR_POLL_EN; + WREG32(CP_PQ_WPTR_POLL_CNTL, tmp); + /* Disable HQD. */ + if (RREG32(CP_HQD_ACTIVE) & 1) { + WREG32(CP_HQD_DEQUEUE_REQUEST, 1); + for (j = 0; j < rdev->usec_timeout; j++) { + if (!(RREG32(CP_HQD_ACTIVE) & 1)) + break; + udelay(1); + } + WREG32(CP_HQD_DEQUEUE_REQUEST, 0); + WREG32(CP_HQD_PQ_RPTR, 0); + WREG32(CP_HQD_PQ_WPTR, 0); + } + cik_srbm_select(rdev, 0, 0, 0, 0); +} + /** * cik_cp_compute_enable - enable/disable the compute CP MEs * @@ -4074,8 +4116,20 @@ { if (enable) WREG32(CP_MEC_CNTL, 0); - else + else { + /* + * To make hibernation reliable we need to clear compute ring + * configuration before halting the compute ring. + */ + mutex_lock(&rdev->srbm_mutex); + cik_compute_stop(rdev,&rdev->ring[CAYMAN_RING_TYPE_CP1_INDEX]); + cik_compute_stop(rdev,&rdev->ring[CAYMAN_RING_TYPE_CP2_INDEX]); + mutex_unlock(&rdev->srbm_mutex); + WREG32(CP_MEC_CNTL, (MEC_ME1_HALT | MEC_ME2_HALT)); + rdev->ring[CAYMAN_RING_TYPE_CP1_INDEX].ready = false; + rdev->ring[CAYMAN_RING_TYPE_CP2_INDEX].ready = false; + } udelay(50); } @@ -4317,7 +4371,7 @@ */ static int cik_cp_compute_resume(struct radeon_device *rdev) { - int r, i, idx; + int r, i, j, idx; u32 tmp; bool use_doorbell = true; u64 hqd_gpu_addr; @@ -4436,7 +4490,7 @@ mqd->queue_state.cp_hqd_pq_wptr= 0; if (RREG32(CP_HQD_ACTIVE) & 1) { WREG32(CP_HQD_DEQUEUE_REQUEST, 1); - for (i = 0; i < rdev->usec_timeout; i++) { + for (j = 0; j < rdev->usec_timeout; j++) { if (!(RREG32(CP_HQD_ACTIVE) & 1)) break; udelay(1); @@ -5110,7 +5164,7 @@ */ /* set vm size, must be a multiple of 4 */ WREG32(VM_CONTEXT1_PAGE_TABLE_START_ADDR, 0); - WREG32(VM_CONTEXT1_PAGE_TABLE_END_ADDR, rdev->vm_manager.max_pfn); + WREG32(VM_CONTEXT1_PAGE_TABLE_END_ADDR, rdev->vm_manager.max_pfn - 1); for (i = 1; i < 16; i++) { if (i < 8) WREG32(VM_CONTEXT0_PAGE_TABLE_BASE_ADDR + (i << 2), @@ -5323,12 +5377,13 @@ void cik_vm_flush(struct radeon_device *rdev, int ridx, struct radeon_vm *vm) { struct radeon_ring *ring = &rdev->ring[ridx]; + int usepfp = (ridx == RADEON_RING_TYPE_GFX_INDEX); if (vm == NULL) return; radeon_ring_write(ring, PACKET3(PACKET3_WRITE_DATA, 3)); - radeon_ring_write(ring, (WRITE_DATA_ENGINE_SEL(0) | + radeon_ring_write(ring, (WRITE_DATA_ENGINE_SEL(usepfp) | WRITE_DATA_DST_SEL(0))); if (vm->id < 8) { radeon_ring_write(ring, @@ -5386,8 +5441,19 @@ radeon_ring_write(ring, 0); radeon_ring_write(ring, 1 << vm->id); + /* wait for the invalidate to complete */ + radeon_ring_write(ring, PACKET3(PACKET3_WAIT_REG_MEM, 5)); + radeon_ring_write(ring, (WAIT_REG_MEM_OPERATION(0) | /* wait */ + WAIT_REG_MEM_FUNCTION(0) | /* always */ + WAIT_REG_MEM_ENGINE(0))); /* me */ + radeon_ring_write(ring, VM_INVALIDATE_REQUEST >> 2); + radeon_ring_write(ring, 0); + radeon_ring_write(ring, 0); /* ref */ + radeon_ring_write(ring, 0); /* mask */ + radeon_ring_write(ring, 0x20); /* poll interval */ + /* compute doesn't have PFP */ - if (ridx == RADEON_RING_TYPE_GFX_INDEX) { + if (usepfp) { /* sync PFP to ME, otherwise we might get invalid PFP reads */ radeon_ring_write(ring, PACKET3(PACKET3_PFP_SYNC_ME, 0)); radeon_ring_write(ring, 0x0); @@ -5665,6 +5731,7 @@ } orig = data = RREG32(RLC_CGTT_MGCG_OVERRIDE); + data |= 0x00000001; data &= 0xfffffffd; if (orig != data) WREG32(RLC_CGTT_MGCG_OVERRIDE, data); @@ -5696,7 +5763,7 @@ } } else { orig = data = RREG32(RLC_CGTT_MGCG_OVERRIDE); - data |= 0x00000002; + data |= 0x00000003; if (orig != data) WREG32(RLC_CGTT_MGCG_OVERRIDE, data); @@ -6320,8 +6387,8 @@ buffer[count++] = cpu_to_le32(0x00000000); break; case CHIP_HAWAII: - buffer[count++] = 0x3a00161a; - buffer[count++] = 0x0000002e; + buffer[count++] = cpu_to_le32(0x3a00161a); + buffer[count++] = cpu_to_le32(0x0000002e); break; default: buffer[count++] = cpu_to_le32(0x00000000); @@ -6461,6 +6528,19 @@ WREG32(LB_INTERRUPT_MASK + EVERGREEN_CRTC4_REGISTER_OFFSET, 0); WREG32(LB_INTERRUPT_MASK + EVERGREEN_CRTC5_REGISTER_OFFSET, 0); } + /* pflip */ + if (rdev->num_crtc >= 2) { + WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC0_REGISTER_OFFSET, 0); + WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC1_REGISTER_OFFSET, 0); + } + if (rdev->num_crtc >= 4) { + WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC2_REGISTER_OFFSET, 0); + WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC3_REGISTER_OFFSET, 0); + } + if (rdev->num_crtc >= 6) { + WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC4_REGISTER_OFFSET, 0); + WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC5_REGISTER_OFFSET, 0); + } /* dac hotplug */ WREG32(DAC_AUTODETECT_INT_CONTROL, 0); @@ -6581,7 +6661,6 @@ u32 hpd1, hpd2, hpd3, hpd4, hpd5, hpd6; u32 grbm_int_cntl = 0; u32 dma_cntl, dma_cntl1; - u32 thermal_int; if (!rdev->irq.installed) { WARN(1, "Can't enable IRQ/MSI because no handler is installed\n"); @@ -6618,13 +6697,6 @@ cp_m2p2 = RREG32(CP_ME2_PIPE2_INT_CNTL) & ~TIME_STAMP_INT_ENABLE; cp_m2p3 = RREG32(CP_ME2_PIPE3_INT_CNTL) & ~TIME_STAMP_INT_ENABLE; - if (rdev->flags & RADEON_IS_IGP) - thermal_int = RREG32_SMC(CG_THERMAL_INT_CTRL) & - ~(THERM_INTH_MASK | THERM_INTL_MASK); - else - thermal_int = RREG32_SMC(CG_THERMAL_INT) & - ~(THERM_INT_MASK_HIGH | THERM_INT_MASK_LOW); - /* enable CP interrupts on all rings */ if (atomic_read(&rdev->irq.ring_int[RADEON_RING_TYPE_GFX_INDEX])) { DRM_DEBUG("cik_irq_set: sw int gfx\n"); @@ -6782,14 +6854,6 @@ hpd6 |= DC_HPDx_INT_EN; } - if (rdev->irq.dpm_thermal) { - DRM_DEBUG("dpm thermal\n"); - if (rdev->flags & RADEON_IS_IGP) - thermal_int |= THERM_INTH_MASK | THERM_INTL_MASK; - else - thermal_int |= THERM_INT_MASK_HIGH | THERM_INT_MASK_LOW; - } - WREG32(CP_INT_CNTL_RING0, cp_int_cntl); WREG32(SDMA0_CNTL + SDMA0_REGISTER_OFFSET, dma_cntl); @@ -6817,6 +6881,25 @@ WREG32(LB_INTERRUPT_MASK + EVERGREEN_CRTC5_REGISTER_OFFSET, crtc6); } + if (rdev->num_crtc >= 2) { + WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC0_REGISTER_OFFSET, + GRPH_PFLIP_INT_MASK); + WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC1_REGISTER_OFFSET, + GRPH_PFLIP_INT_MASK); + } + if (rdev->num_crtc >= 4) { + WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC2_REGISTER_OFFSET, + GRPH_PFLIP_INT_MASK); + WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC3_REGISTER_OFFSET, + GRPH_PFLIP_INT_MASK); + } + if (rdev->num_crtc >= 6) { + WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC4_REGISTER_OFFSET, + GRPH_PFLIP_INT_MASK); + WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC5_REGISTER_OFFSET, + GRPH_PFLIP_INT_MASK); + } + WREG32(DC_HPD1_INT_CONTROL, hpd1); WREG32(DC_HPD2_INT_CONTROL, hpd2); WREG32(DC_HPD3_INT_CONTROL, hpd3); @@ -6824,10 +6907,8 @@ WREG32(DC_HPD5_INT_CONTROL, hpd5); WREG32(DC_HPD6_INT_CONTROL, hpd6); - if (rdev->flags & RADEON_IS_IGP) - WREG32_SMC(CG_THERMAL_INT_CTRL, thermal_int); - else - WREG32_SMC(CG_THERMAL_INT, thermal_int); + /* posting read */ + RREG32(SRBM_STATUS); return 0; } @@ -6853,6 +6934,29 @@ rdev->irq.stat_regs.cik.disp_int_cont5 = RREG32(DISP_INTERRUPT_STATUS_CONTINUE5); rdev->irq.stat_regs.cik.disp_int_cont6 = RREG32(DISP_INTERRUPT_STATUS_CONTINUE6); + rdev->irq.stat_regs.cik.d1grph_int = RREG32(GRPH_INT_STATUS + + EVERGREEN_CRTC0_REGISTER_OFFSET); + rdev->irq.stat_regs.cik.d2grph_int = RREG32(GRPH_INT_STATUS + + EVERGREEN_CRTC1_REGISTER_OFFSET); + if (rdev->num_crtc >= 4) { + rdev->irq.stat_regs.cik.d3grph_int = RREG32(GRPH_INT_STATUS + + EVERGREEN_CRTC2_REGISTER_OFFSET); + rdev->irq.stat_regs.cik.d4grph_int = RREG32(GRPH_INT_STATUS + + EVERGREEN_CRTC3_REGISTER_OFFSET); + } + if (rdev->num_crtc >= 6) { + rdev->irq.stat_regs.cik.d5grph_int = RREG32(GRPH_INT_STATUS + + EVERGREEN_CRTC4_REGISTER_OFFSET); + rdev->irq.stat_regs.cik.d6grph_int = RREG32(GRPH_INT_STATUS + + EVERGREEN_CRTC5_REGISTER_OFFSET); + } + + if (rdev->irq.stat_regs.cik.d1grph_int & GRPH_PFLIP_INT_OCCURRED) + WREG32(GRPH_INT_STATUS + EVERGREEN_CRTC0_REGISTER_OFFSET, + GRPH_PFLIP_INT_CLEAR); + if (rdev->irq.stat_regs.cik.d2grph_int & GRPH_PFLIP_INT_OCCURRED) + WREG32(GRPH_INT_STATUS + EVERGREEN_CRTC1_REGISTER_OFFSET, + GRPH_PFLIP_INT_CLEAR); if (rdev->irq.stat_regs.cik.disp_int & LB_D1_VBLANK_INTERRUPT) WREG32(LB_VBLANK_STATUS + EVERGREEN_CRTC0_REGISTER_OFFSET, VBLANK_ACK); if (rdev->irq.stat_regs.cik.disp_int & LB_D1_VLINE_INTERRUPT) @@ -6863,6 +6967,12 @@ WREG32(LB_VLINE_STATUS + EVERGREEN_CRTC1_REGISTER_OFFSET, VLINE_ACK); if (rdev->num_crtc >= 4) { + if (rdev->irq.stat_regs.cik.d3grph_int & GRPH_PFLIP_INT_OCCURRED) + WREG32(GRPH_INT_STATUS + EVERGREEN_CRTC2_REGISTER_OFFSET, + GRPH_PFLIP_INT_CLEAR); + if (rdev->irq.stat_regs.cik.d4grph_int & GRPH_PFLIP_INT_OCCURRED) + WREG32(GRPH_INT_STATUS + EVERGREEN_CRTC3_REGISTER_OFFSET, + GRPH_PFLIP_INT_CLEAR); if (rdev->irq.stat_regs.cik.disp_int_cont2 & LB_D3_VBLANK_INTERRUPT) WREG32(LB_VBLANK_STATUS + EVERGREEN_CRTC2_REGISTER_OFFSET, VBLANK_ACK); if (rdev->irq.stat_regs.cik.disp_int_cont2 & LB_D3_VLINE_INTERRUPT) @@ -6874,6 +6984,12 @@ } if (rdev->num_crtc >= 6) { + if (rdev->irq.stat_regs.cik.d5grph_int & GRPH_PFLIP_INT_OCCURRED) + WREG32(GRPH_INT_STATUS + EVERGREEN_CRTC4_REGISTER_OFFSET, + GRPH_PFLIP_INT_CLEAR); + if (rdev->irq.stat_regs.cik.d6grph_int & GRPH_PFLIP_INT_OCCURRED) + WREG32(GRPH_INT_STATUS + EVERGREEN_CRTC5_REGISTER_OFFSET, + GRPH_PFLIP_INT_CLEAR); if (rdev->irq.stat_regs.cik.disp_int_cont4 & LB_D5_VBLANK_INTERRUPT) WREG32(LB_VBLANK_STATUS + EVERGREEN_CRTC4_REGISTER_OFFSET, VBLANK_ACK); if (rdev->irq.stat_regs.cik.disp_int_cont4 & LB_D5_VLINE_INTERRUPT) @@ -6992,6 +7108,7 @@ tmp = RREG32(IH_RB_CNTL); tmp |= IH_WPTR_OVERFLOW_CLEAR; WREG32(IH_RB_CNTL, tmp); + wptr &= ~RB_OVERFLOW; } return (wptr & rdev->ih.ptr_mask); } @@ -7225,6 +7342,15 @@ break; } break; + case 8: /* D1 page flip */ + case 10: /* D2 page flip */ + case 12: /* D3 page flip */ + case 14: /* D4 page flip */ + case 16: /* D5 page flip */ + case 18: /* D6 page flip */ + DRM_DEBUG("IH: D%d flip\n", ((src_id - 8) >> 1) + 1); + radeon_crtc_handle_flip(rdev, (src_id - 8) >> 1); + break; case 42: /* HPD hotplug */ switch (src_data) { case 0: @@ -7489,6 +7615,7 @@ static int cik_startup(struct radeon_device *rdev) { struct radeon_ring *ring; + u32 nop; int r; /* enable pcie gen2/3 link */ @@ -7503,26 +7630,7 @@ cik_mc_program(rdev); - if (rdev->flags & RADEON_IS_IGP) { - if (!rdev->me_fw || !rdev->pfp_fw || !rdev->ce_fw || - !rdev->mec_fw || !rdev->sdma_fw || !rdev->rlc_fw) { - r = cik_init_microcode(rdev); - if (r) { - DRM_ERROR("Failed to load firmware!\n"); - return r; - } - } - } else { - if (!rdev->me_fw || !rdev->pfp_fw || !rdev->ce_fw || - !rdev->mec_fw || !rdev->sdma_fw || !rdev->rlc_fw || - !rdev->mc_fw) { - r = cik_init_microcode(rdev); - if (r) { - DRM_ERROR("Failed to load firmware!\n"); - return r; - } - } - + if (!(rdev->flags & RADEON_IS_IGP)) { r = ci_mc_load_microcode(rdev); if (r) { DRM_ERROR("Failed to load MC firmware!\n"); @@ -7625,10 +7733,16 @@ } cik_irq_set(rdev); + if (rdev->family == CHIP_HAWAII) { + nop = RADEON_CP_PACKET2; + } else { + nop = PACKET3(PACKET3_NOP, 0x3FFF); + } + ring = &rdev->ring[RADEON_RING_TYPE_GFX_INDEX]; r = radeon_ring_init(rdev, ring, ring->ring_size, RADEON_WB_CP_RPTR_OFFSET, CP_RB0_RPTR, CP_RB0_WPTR, - PACKET3(PACKET3_NOP, 0x3FFF)); + nop); if (r) return r; @@ -7637,7 +7751,7 @@ ring = &rdev->ring[CAYMAN_RING_TYPE_CP1_INDEX]; r = radeon_ring_init(rdev, ring, ring->ring_size, RADEON_WB_CP1_RPTR_OFFSET, CP_HQD_PQ_RPTR, CP_HQD_PQ_WPTR, - PACKET3(PACKET3_NOP, 0x3FFF)); + nop); if (r) return r; ring->me = 1; /* first MEC */ @@ -7649,7 +7763,7 @@ ring = &rdev->ring[CAYMAN_RING_TYPE_CP2_INDEX]; r = radeon_ring_init(rdev, ring, ring->ring_size, RADEON_WB_CP2_RPTR_OFFSET, CP_HQD_PQ_RPTR, CP_HQD_PQ_WPTR, - PACKET3(PACKET3_NOP, 0x3FFF)); + nop); if (r) return r; /* dGPU only have 1 MEC */ @@ -7835,6 +7949,27 @@ if (r) return r; + if (rdev->flags & RADEON_IS_IGP) { + if (!rdev->me_fw || !rdev->pfp_fw || !rdev->ce_fw || + !rdev->mec_fw || !rdev->sdma_fw || !rdev->rlc_fw) { + r = cik_init_microcode(rdev); + if (r) { + DRM_ERROR("Failed to load firmware!\n"); + return r; + } + } + } else { + if (!rdev->me_fw || !rdev->pfp_fw || !rdev->ce_fw || + !rdev->mec_fw || !rdev->sdma_fw || !rdev->rlc_fw || + !rdev->mc_fw) { + r = cik_init_microcode(rdev); + if (r) { + DRM_ERROR("Failed to load firmware!\n"); + return r; + } + } + } + ring = &rdev->ring[RADEON_RING_TYPE_GFX_INDEX]; ring->ring_obj = NULL; r600_ring_init(rdev, ring, 1024 * 1024); @@ -8593,6 +8728,9 @@ u32 num_heads = 0, lb_size; int i; + if (!rdev->mode_info.mode_config_initialized) + return; + radeon_update_display_priority(rdev); for (i = 0; i < rdev->num_crtc; i++) { --- linux-3.13.0.orig/drivers/gpu/drm/radeon/cik_sdma.c +++ linux-3.13.0/drivers/gpu/drm/radeon/cik_sdma.c @@ -88,6 +88,35 @@ } /** + * cik_sdma_hdp_flush_ring_emit - emit an hdp flush on the DMA ring + * + * @rdev: radeon_device pointer + * @ridx: radeon ring index + * + * Emit an hdp flush packet on the requested DMA ring. + */ +static void cik_sdma_hdp_flush_ring_emit(struct radeon_device *rdev, + int ridx) +{ + struct radeon_ring *ring = &rdev->ring[ridx]; + u32 extra_bits = (SDMA_POLL_REG_MEM_EXTRA_OP(1) | + SDMA_POLL_REG_MEM_EXTRA_FUNC(3)); /* == */ + u32 ref_and_mask; + + if (ridx == R600_RING_TYPE_DMA_INDEX) + ref_and_mask = SDMA0; + else + ref_and_mask = SDMA1; + + radeon_ring_write(ring, SDMA_PACKET(SDMA_OPCODE_POLL_REG_MEM, 0, extra_bits)); + radeon_ring_write(ring, GPU_HDP_FLUSH_DONE); + radeon_ring_write(ring, GPU_HDP_FLUSH_REQ); + radeon_ring_write(ring, ref_and_mask); /* reference */ + radeon_ring_write(ring, ref_and_mask); /* mask */ + radeon_ring_write(ring, (0xfff << 16) | 10); /* retry count, poll interval */ +} + +/** * cik_sdma_fence_ring_emit - emit a fence on the DMA ring * * @rdev: radeon_device pointer @@ -111,12 +140,7 @@ /* generate an interrupt */ radeon_ring_write(ring, SDMA_PACKET(SDMA_OPCODE_TRAP, 0, 0)); /* flush HDP */ - /* We should be using the new POLL_REG_MEM special op packet here - * but it causes sDMA to hang sometimes - */ - radeon_ring_write(ring, SDMA_PACKET(SDMA_OPCODE_SRBM_WRITE, 0, 0xf000)); - radeon_ring_write(ring, HDP_MEM_COHERENCY_FLUSH_CNTL >> 2); - radeon_ring_write(ring, 0); + cik_sdma_hdp_flush_ring_emit(rdev, fence->ring); } /** @@ -169,6 +193,19 @@ WREG32(SDMA0_GFX_RB_CNTL + reg_offset, rb_cntl); WREG32(SDMA0_GFX_IB_CNTL + reg_offset, 0); } + rdev->ring[R600_RING_TYPE_DMA_INDEX].ready = false; + rdev->ring[CAYMAN_RING_TYPE_DMA1_INDEX].ready = false; + + /* FIXME use something else than big hammer but after few days can not + * seem to find good combination so reset SDMA blocks as it seems we + * do not shut them down properly. This fix hibernation and does not + * affect suspend to ram. + */ + WREG32(SRBM_SOFT_RESET, SOFT_RESET_SDMA | SOFT_RESET_SDMA1); + (void)RREG32(SRBM_SOFT_RESET); + udelay(50); + WREG32(SRBM_SOFT_RESET, 0); + (void)RREG32(SRBM_SOFT_RESET); } /** @@ -196,6 +233,11 @@ u32 me_cntl, reg_offset; int i; + if (enable == false) { + cik_sdma_gfx_stop(rdev); + cik_sdma_rlc_stop(rdev); + } + for (i = 0; i < 2; i++) { if (i == 0) reg_offset = SDMA0_REGISTER_OFFSET; @@ -323,10 +365,6 @@ if (!rdev->sdma_fw) return -EINVAL; - /* stop the gfx rings and rlc compute queues */ - cik_sdma_gfx_stop(rdev); - cik_sdma_rlc_stop(rdev); - /* halt the MEs */ cik_sdma_enable(rdev, false); @@ -361,13 +399,6 @@ { int r; - /* Reset dma */ - WREG32(SRBM_SOFT_RESET, SOFT_RESET_SDMA | SOFT_RESET_SDMA1); - RREG32(SRBM_SOFT_RESET); - udelay(50); - WREG32(SRBM_SOFT_RESET, 0); - RREG32(SRBM_SOFT_RESET); - r = cik_sdma_load_microcode(rdev); if (r) return r; @@ -395,9 +426,6 @@ */ void cik_sdma_fini(struct radeon_device *rdev) { - /* stop the gfx rings and rlc compute queues */ - cik_sdma_gfx_stop(rdev); - cik_sdma_rlc_stop(rdev); /* halt the MEs */ cik_sdma_enable(rdev, false); radeon_ring_fini(rdev, &rdev->ring[R600_RING_TYPE_DMA_INDEX]); @@ -491,31 +519,34 @@ { unsigned i; int r; - void __iomem *ptr = (void *)rdev->vram_scratch.ptr; + unsigned index; u32 tmp; + u64 gpu_addr; - if (!ptr) { - DRM_ERROR("invalid vram scratch pointer\n"); - return -EINVAL; - } + if (ring->idx == R600_RING_TYPE_DMA_INDEX) + index = R600_WB_DMA_RING_TEST_OFFSET; + else + index = CAYMAN_WB_DMA1_RING_TEST_OFFSET; + + gpu_addr = rdev->wb.gpu_addr + index; tmp = 0xCAFEDEAD; - writel(tmp, ptr); + rdev->wb.wb[index/4] = cpu_to_le32(tmp); - r = radeon_ring_lock(rdev, ring, 4); + r = radeon_ring_lock(rdev, ring, 5); if (r) { DRM_ERROR("radeon: dma failed to lock ring %d (%d).\n", ring->idx, r); return r; } radeon_ring_write(ring, SDMA_PACKET(SDMA_OPCODE_WRITE, SDMA_WRITE_SUB_OPCODE_LINEAR, 0)); - radeon_ring_write(ring, rdev->vram_scratch.gpu_addr & 0xfffffffc); - radeon_ring_write(ring, upper_32_bits(rdev->vram_scratch.gpu_addr) & 0xffffffff); + radeon_ring_write(ring, lower_32_bits(gpu_addr)); + radeon_ring_write(ring, upper_32_bits(gpu_addr)); radeon_ring_write(ring, 1); /* number of DWs to follow */ radeon_ring_write(ring, 0xDEADBEEF); radeon_ring_unlock_commit(rdev, ring); for (i = 0; i < rdev->usec_timeout; i++) { - tmp = readl(ptr); + tmp = le32_to_cpu(rdev->wb.wb[index/4]); if (tmp == 0xDEADBEEF) break; DRM_UDELAY(1); @@ -544,17 +575,20 @@ { struct radeon_ib ib; unsigned i; + unsigned index; int r; - void __iomem *ptr = (void *)rdev->vram_scratch.ptr; u32 tmp = 0; + u64 gpu_addr; - if (!ptr) { - DRM_ERROR("invalid vram scratch pointer\n"); - return -EINVAL; - } + if (ring->idx == R600_RING_TYPE_DMA_INDEX) + index = R600_WB_DMA_RING_TEST_OFFSET; + else + index = CAYMAN_WB_DMA1_RING_TEST_OFFSET; + + gpu_addr = rdev->wb.gpu_addr + index; tmp = 0xCAFEDEAD; - writel(tmp, ptr); + rdev->wb.wb[index/4] = cpu_to_le32(tmp); r = radeon_ib_get(rdev, ring->idx, &ib, NULL, 256); if (r) { @@ -563,8 +597,8 @@ } ib.ptr[0] = SDMA_PACKET(SDMA_OPCODE_WRITE, SDMA_WRITE_SUB_OPCODE_LINEAR, 0); - ib.ptr[1] = rdev->vram_scratch.gpu_addr & 0xfffffffc; - ib.ptr[2] = upper_32_bits(rdev->vram_scratch.gpu_addr) & 0xffffffff; + ib.ptr[1] = lower_32_bits(gpu_addr); + ib.ptr[2] = upper_32_bits(gpu_addr); ib.ptr[3] = 1; ib.ptr[4] = 0xDEADBEEF; ib.length_dw = 5; @@ -581,7 +615,7 @@ return r; } for (i = 0; i < rdev->usec_timeout; i++) { - tmp = readl(ptr); + tmp = le32_to_cpu(rdev->wb.wb[index/4]); if (tmp == 0xDEADBEEF) break; DRM_UDELAY(1); @@ -708,6 +742,8 @@ */ void cik_dma_vm_flush(struct radeon_device *rdev, int ridx, struct radeon_vm *vm) { + u32 extra_bits = (SDMA_POLL_REG_MEM_EXTRA_OP(0) | + SDMA_POLL_REG_MEM_EXTRA_FUNC(0)); /* always */ struct radeon_ring *ring = &rdev->ring[ridx]; if (vm == NULL) @@ -747,16 +783,18 @@ radeon_ring_write(ring, VMID(0)); /* flush HDP */ - /* We should be using the new POLL_REG_MEM special op packet here - * but it causes sDMA to hang sometimes - */ - radeon_ring_write(ring, SDMA_PACKET(SDMA_OPCODE_SRBM_WRITE, 0, 0xf000)); - radeon_ring_write(ring, HDP_MEM_COHERENCY_FLUSH_CNTL >> 2); - radeon_ring_write(ring, 0); + cik_sdma_hdp_flush_ring_emit(rdev, ridx); /* flush TLB */ radeon_ring_write(ring, SDMA_PACKET(SDMA_OPCODE_SRBM_WRITE, 0, 0xf000)); radeon_ring_write(ring, VM_INVALIDATE_REQUEST >> 2); radeon_ring_write(ring, 1 << vm->id); + + radeon_ring_write(ring, SDMA_PACKET(SDMA_OPCODE_POLL_REG_MEM, 0, extra_bits)); + radeon_ring_write(ring, VM_INVALIDATE_REQUEST >> 2); + radeon_ring_write(ring, 0); + radeon_ring_write(ring, 0); /* reference */ + radeon_ring_write(ring, 0); /* mask */ + radeon_ring_write(ring, (0xfff << 16) | 10); /* retry count, poll interval */ } --- linux-3.13.0.orig/drivers/gpu/drm/radeon/cikd.h +++ linux-3.13.0/drivers/gpu/drm/radeon/cikd.h @@ -871,6 +871,15 @@ # define DC_HPD6_RX_INTERRUPT (1 << 18) #define DISP_INTERRUPT_STATUS_CONTINUE6 0x6780 +/* 0x6858, 0x7458, 0x10058, 0x10c58, 0x11858, 0x12458 */ +#define GRPH_INT_STATUS 0x6858 +# define GRPH_PFLIP_INT_OCCURRED (1 << 0) +# define GRPH_PFLIP_INT_CLEAR (1 << 8) +/* 0x685c, 0x745c, 0x1005c, 0x10c5c, 0x1185c, 0x1245c */ +#define GRPH_INT_CONTROL 0x685c +# define GRPH_PFLIP_INT_MASK (1 << 0) +# define GRPH_PFLIP_INT_TYPE (1 << 8) + #define DAC_AUTODETECT_INT_CONTROL 0x67c8 #define DC_HPD1_INT_STATUS 0x601c @@ -1725,12 +1734,12 @@ #define EOP_TC_WB_ACTION_EN (1 << 15) /* L2 */ #define EOP_TCL1_ACTION_EN (1 << 16) #define EOP_TC_ACTION_EN (1 << 17) /* L2 */ +#define EOP_TCL2_VOLATILE (1 << 24) #define EOP_CACHE_POLICY(x) ((x) << 25) /* 0 - LRU * 1 - Stream * 2 - Bypass */ -#define EOP_TCL2_VOLATILE (1 << 27) #define DATA_SEL(x) ((x) << 29) /* 0 - discard * 1 - send low 32bit data --- linux-3.13.0.orig/drivers/gpu/drm/radeon/cypress_dpm.c +++ linux-3.13.0/drivers/gpu/drm/radeon/cypress_dpm.c @@ -1551,7 +1551,7 @@ table->voltageMaskTable.highMask[RV770_SMC_VOLTAGEMASK_VDDCI] = 0; table->voltageMaskTable.lowMask[RV770_SMC_VOLTAGEMASK_VDDCI] = - cpu_to_be32(eg_pi->vddc_voltage_table.mask_low); + cpu_to_be32(eg_pi->vddci_voltage_table.mask_low); } return 0; --- linux-3.13.0.orig/drivers/gpu/drm/radeon/dce6_afmt.c +++ linux-3.13.0/drivers/gpu/drm/radeon/dce6_afmt.c @@ -155,7 +155,7 @@ struct drm_connector *connector; struct radeon_connector *radeon_connector = NULL; u32 offset, tmp; - u8 *sadb; + u8 *sadb = NULL; int sad_count; if (!dig || !dig->afmt || !dig->afmt->pin) @@ -174,9 +174,9 @@ } sad_count = drm_edid_to_speaker_allocation(radeon_connector->edid, &sadb); - if (sad_count <= 0) { - DRM_ERROR("Couldn't read Speaker Allocation Data Block: %d\n", sad_count); - return; + if (sad_count < 0) { + DRM_DEBUG("Couldn't read Speaker Allocation Data Block: %d\n", sad_count); + sad_count = 0; } /* program the speaker allocation */ @@ -283,7 +283,7 @@ bool enable) { WREG32_ENDPOINT(pin->offset, AZ_F0_CODEC_PIN_CONTROL_HOTPLUG_CONTROL, - AUDIO_ENABLED); + enable ? AUDIO_ENABLED : 0); DRM_INFO("%s audio %d support\n", enable ? "Enabling" : "Disabling", pin->id); } @@ -307,11 +307,17 @@ rdev->audio.enabled = true; - if (ASIC_IS_DCE8(rdev)) + if (ASIC_IS_DCE81(rdev)) /* KV: 4 streams, 7 endpoints */ + rdev->audio.num_pins = 7; + else if (ASIC_IS_DCE83(rdev)) /* KB: 2 streams, 3 endpoints */ + rdev->audio.num_pins = 3; + else if (ASIC_IS_DCE8(rdev)) /* BN/HW: 6 streams, 7 endpoints */ + rdev->audio.num_pins = 7; + else if (ASIC_IS_DCE61(rdev)) /* TN: 4 streams, 6 endpoints */ rdev->audio.num_pins = 6; - else if (ASIC_IS_DCE61(rdev)) - rdev->audio.num_pins = 4; - else + else if (ASIC_IS_DCE64(rdev)) /* OL: 2 streams, 2 endpoints */ + rdev->audio.num_pins = 2; + else /* SI: 6 streams, 6 endpoints */ rdev->audio.num_pins = 6; for (i = 0; i < rdev->audio.num_pins; i++) { --- linux-3.13.0.orig/drivers/gpu/drm/radeon/evergreen.c +++ linux-3.13.0/drivers/gpu/drm/radeon/evergreen.c @@ -188,7 +188,7 @@ 0x8c1c, 0xffffffff, 0x00001010, 0x28350, 0xffffffff, 0x00000000, 0xa008, 0xffffffff, 0x00010000, - 0x5cc, 0xffffffff, 0x00000001, + 0x5c4, 0xffffffff, 0x00000001, 0x9508, 0xffffffff, 0x00000002, 0x913c, 0x0000000f, 0x0000000a }; @@ -475,7 +475,7 @@ 0x8c1c, 0xffffffff, 0x00001010, 0x28350, 0xffffffff, 0x00000000, 0xa008, 0xffffffff, 0x00010000, - 0x5cc, 0xffffffff, 0x00000001, + 0x5c4, 0xffffffff, 0x00000001, 0x9508, 0xffffffff, 0x00000002 }; @@ -634,7 +634,7 @@ static const u32 supersumo_golden_registers[] = { 0x5eb4, 0xffffffff, 0x00000002, - 0x5cc, 0xffffffff, 0x00000001, + 0x5c4, 0xffffffff, 0x00000001, 0x7030, 0xffffffff, 0x00000011, 0x7c30, 0xffffffff, 0x00000011, 0x6104, 0x01000300, 0x00000000, @@ -718,7 +718,7 @@ static const u32 wrestler_golden_registers[] = { 0x5eb4, 0xffffffff, 0x00000002, - 0x5cc, 0xffffffff, 0x00000001, + 0x5c4, 0xffffffff, 0x00000001, 0x7030, 0xffffffff, 0x00000011, 0x7c30, 0xffffffff, 0x00000011, 0x6104, 0x01000300, 0x00000000, @@ -2361,6 +2361,9 @@ u32 num_heads = 0, lb_size; int i; + if (!rdev->mode_info.mode_config_initialized) + return; + radeon_update_display_priority(rdev); for (i = 0; i < rdev->num_crtc; i++) { @@ -2569,6 +2572,7 @@ WREG32(EVERGREEN_CRTC_UPDATE_LOCK + crtc_offsets[i], 1); tmp |= EVERGREEN_CRTC_BLANK_DATA_EN; WREG32(EVERGREEN_CRTC_BLANK_CONTROL + crtc_offsets[i], tmp); + WREG32(EVERGREEN_CRTC_UPDATE_LOCK + crtc_offsets[i], 0); } } else { tmp = RREG32(EVERGREEN_CRTC_CONTROL + crtc_offsets[i]); @@ -4298,8 +4302,8 @@ WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC5_REGISTER_OFFSET, 0); } - /* only one DAC on DCE6 */ - if (!ASIC_IS_DCE6(rdev)) + /* only one DAC on DCE5 */ + if (!ASIC_IS_DCE5(rdev)) WREG32(DACA_AUTODETECT_INT_CONTROL, 0); WREG32(DACB_AUTODETECT_INT_CONTROL, 0); @@ -4325,7 +4329,6 @@ u32 crtc1 = 0, crtc2 = 0, crtc3 = 0, crtc4 = 0, crtc5 = 0, crtc6 = 0; u32 hpd1, hpd2, hpd3, hpd4, hpd5, hpd6; u32 grbm_int_cntl = 0; - u32 grph1 = 0, grph2 = 0, grph3 = 0, grph4 = 0, grph5 = 0, grph6 = 0; u32 afmt1 = 0, afmt2 = 0, afmt3 = 0, afmt4 = 0, afmt5 = 0, afmt6 = 0; u32 dma_cntl, dma_cntl1 = 0; u32 thermal_int = 0; @@ -4508,15 +4511,21 @@ WREG32(INT_MASK + EVERGREEN_CRTC5_REGISTER_OFFSET, crtc6); } - WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC0_REGISTER_OFFSET, grph1); - WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC1_REGISTER_OFFSET, grph2); + WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC0_REGISTER_OFFSET, + GRPH_PFLIP_INT_MASK); + WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC1_REGISTER_OFFSET, + GRPH_PFLIP_INT_MASK); if (rdev->num_crtc >= 4) { - WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC2_REGISTER_OFFSET, grph3); - WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC3_REGISTER_OFFSET, grph4); + WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC2_REGISTER_OFFSET, + GRPH_PFLIP_INT_MASK); + WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC3_REGISTER_OFFSET, + GRPH_PFLIP_INT_MASK); } if (rdev->num_crtc >= 6) { - WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC4_REGISTER_OFFSET, grph5); - WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC5_REGISTER_OFFSET, grph6); + WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC4_REGISTER_OFFSET, + GRPH_PFLIP_INT_MASK); + WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC5_REGISTER_OFFSET, + GRPH_PFLIP_INT_MASK); } WREG32(DC_HPD1_INT_CONTROL, hpd1); @@ -4537,6 +4546,9 @@ WREG32(AFMT_AUDIO_PACKET_CONTROL + EVERGREEN_CRTC4_REGISTER_OFFSET, afmt5); WREG32(AFMT_AUDIO_PACKET_CONTROL + EVERGREEN_CRTC5_REGISTER_OFFSET, afmt6); + /* posting read */ + RREG32(SRBM_STATUS); + return 0; } @@ -4708,6 +4720,7 @@ tmp = RREG32(IH_RB_CNTL); tmp |= IH_WPTR_OVERFLOW_CLEAR; WREG32(IH_RB_CNTL, tmp); + wptr &= ~RB_OVERFLOW; } return (wptr & rdev->ih.ptr_mask); } @@ -4905,6 +4918,15 @@ break; } break; + case 8: /* D1 page flip */ + case 10: /* D2 page flip */ + case 12: /* D3 page flip */ + case 14: /* D4 page flip */ + case 16: /* D5 page flip */ + case 18: /* D6 page flip */ + DRM_DEBUG("IH: D%d flip\n", ((src_id - 8) >> 1) + 1); + radeon_crtc_handle_flip(rdev, (src_id - 8) >> 1); + break; case 42: /* HPD hotplug */ switch (src_data) { case 0: @@ -5110,26 +5132,11 @@ evergreen_mc_program(rdev); if (ASIC_IS_DCE5(rdev)) { - if (!rdev->me_fw || !rdev->pfp_fw || !rdev->rlc_fw || !rdev->mc_fw) { - r = ni_init_microcode(rdev); - if (r) { - DRM_ERROR("Failed to load firmware!\n"); - return r; - } - } r = ni_mc_load_microcode(rdev); if (r) { DRM_ERROR("Failed to load MC firmware!\n"); return r; } - } else { - if (!rdev->me_fw || !rdev->pfp_fw || !rdev->rlc_fw) { - r = r600_init_microcode(rdev); - if (r) { - DRM_ERROR("Failed to load firmware!\n"); - return r; - } - } } if (rdev->flags & RADEON_IS_AGP) { @@ -5357,6 +5364,24 @@ if (r) return r; + if (ASIC_IS_DCE5(rdev)) { + if (!rdev->me_fw || !rdev->pfp_fw || !rdev->rlc_fw || !rdev->mc_fw) { + r = ni_init_microcode(rdev); + if (r) { + DRM_ERROR("Failed to load firmware!\n"); + return r; + } + } + } else { + if (!rdev->me_fw || !rdev->pfp_fw || !rdev->rlc_fw) { + r = r600_init_microcode(rdev); + if (r) { + DRM_ERROR("Failed to load firmware!\n"); + return r; + } + } + } + rdev->ring[RADEON_RING_TYPE_GFX_INDEX].ring_obj = NULL; r600_ring_init(rdev, &rdev->ring[RADEON_RING_TYPE_GFX_INDEX], 1024 * 1024); @@ -5418,9 +5443,9 @@ radeon_wb_fini(rdev); radeon_ib_pool_fini(rdev); radeon_irq_kms_fini(rdev); - evergreen_pcie_gart_fini(rdev); uvd_v1_0_fini(rdev); radeon_uvd_fini(rdev); + evergreen_pcie_gart_fini(rdev); r600_vram_scratch_fini(rdev); radeon_gem_fini(rdev); radeon_fence_driver_fini(rdev); --- linux-3.13.0.orig/drivers/gpu/drm/radeon/evergreen_cs.c +++ linux-3.13.0/drivers/gpu/drm/radeon/evergreen_cs.c @@ -967,7 +967,10 @@ if (track->cb_dirty) { tmp = track->cb_target_mask; for (i = 0; i < 8; i++) { - if ((tmp >> (i * 4)) & 0xF) { + u32 format = G_028C70_FORMAT(track->cb_color_info[i]); + + if (format != V_028C70_COLOR_INVALID && + (tmp >> (i * 4)) & 0xF) { /* at least one component is enabled */ if (track->cb_color_bo[i] == NULL) { dev_warn(p->dev, "%s:%d mask 0x%08X | 0x%08X no cb for %d\n", --- linux-3.13.0.orig/drivers/gpu/drm/radeon/evergreen_hdmi.c +++ linux-3.13.0/drivers/gpu/drm/radeon/evergreen_hdmi.c @@ -102,7 +102,7 @@ struct drm_connector *connector; struct radeon_connector *radeon_connector = NULL; u32 tmp; - u8 *sadb; + u8 *sadb = NULL; int sad_count; list_for_each_entry(connector, &encoder->dev->mode_config.connector_list, head) { @@ -118,9 +118,9 @@ } sad_count = drm_edid_to_speaker_allocation(radeon_connector->edid, &sadb); - if (sad_count <= 0) { - DRM_ERROR("Couldn't read Speaker Allocation Data Block: %d\n", sad_count); - return; + if (sad_count < 0) { + DRM_DEBUG("Couldn't read Speaker Allocation Data Block: %d\n", sad_count); + sad_count = 0; } /* program the speaker allocation */ --- linux-3.13.0.orig/drivers/gpu/drm/radeon/evergreen_smc.h +++ linux-3.13.0/drivers/gpu/drm/radeon/evergreen_smc.h @@ -57,7 +57,7 @@ #define EVERGREEN_SMC_FIRMWARE_HEADER_LOCATION 0x100 -#define EVERGREEN_SMC_FIRMWARE_HEADER_softRegisters 0x0 +#define EVERGREEN_SMC_FIRMWARE_HEADER_softRegisters 0x8 #define EVERGREEN_SMC_FIRMWARE_HEADER_stateTable 0xC #define EVERGREEN_SMC_FIRMWARE_HEADER_mcRegisterTable 0x20 --- linux-3.13.0.orig/drivers/gpu/drm/radeon/kv_dpm.c +++ linux-3.13.0/drivers/gpu/drm/radeon/kv_dpm.c @@ -1121,6 +1121,19 @@ } } +static void kv_enable_thermal_int(struct radeon_device *rdev, bool enable) +{ + u32 thermal_int; + + thermal_int = RREG32_SMC(CG_THERMAL_INT_CTRL); + if (enable) + thermal_int |= THERM_INTH_MASK | THERM_INTL_MASK; + else + thermal_int &= ~(THERM_INTH_MASK | THERM_INTL_MASK); + WREG32_SMC(CG_THERMAL_INT_CTRL, thermal_int); + +} + int kv_dpm_enable(struct radeon_device *rdev) { struct kv_power_info *pi = kv_get_pi(rdev); @@ -1222,8 +1235,7 @@ DRM_ERROR("kv_set_thermal_temperature_range failed\n"); return ret; } - rdev->irq.dpm_thermal = true; - radeon_irq_set(rdev); + kv_enable_thermal_int(rdev, true); } ret = kv_smc_bapm_enable(rdev, false); @@ -1269,6 +1281,7 @@ kv_stop_dpm(rdev); kv_enable_ulv(rdev, false); kv_reset_am(rdev); + kv_enable_thermal_int(rdev, false); kv_update_current_ps(rdev, rdev->pm.dpm.boot_ps); } @@ -2620,7 +2633,11 @@ if (rdev->family == CHIP_KABINI) pi->high_voltage_t = 4001; - pi->enable_nb_dpm = true; + /* Enabling nb dpm on an asrock system prevents dpm from working */ + if (rdev->pdev->subsystem_vendor == 0x1849) + pi->enable_nb_dpm = false; + else + pi->enable_nb_dpm = true; pi->caps_power_containment = true; pi->caps_cac = true; @@ -2635,7 +2652,19 @@ pi->caps_sclk_ds = true; pi->enable_auto_thermal_throttling = true; pi->disable_nb_ps3_in_battery = false; - pi->bapm_enable = false; + if (radeon_bapm == -1) { + /* There are stability issues reported on with + * bapm enabled on an asrock system. + */ + if (rdev->pdev->subsystem_vendor == 0x1849) + pi->bapm_enable = false; + else + pi->bapm_enable = true; + } else if (radeon_bapm == 0) { + pi->bapm_enable = false; + } else { + pi->bapm_enable = true; + } pi->voltage_drop_t = 0; pi->caps_sclk_throttle_low_notification = false; pi->caps_fps = false; /* true? */ --- linux-3.13.0.orig/drivers/gpu/drm/radeon/ni.c +++ linux-3.13.0/drivers/gpu/drm/radeon/ni.c @@ -1072,12 +1072,12 @@ if ((rdev->config.cayman.max_backends_per_se == 1) && (rdev->flags & RADEON_IS_IGP)) { - if ((disabled_rb_mask & 3) == 1) { - /* RB0 disabled, RB1 enabled */ - tmp = 0x11111111; - } else { + if ((disabled_rb_mask & 3) == 2) { /* RB1 disabled, RB0 enabled */ tmp = 0x00000000; + } else { + /* RB0 disabled, RB1 enabled */ + tmp = 0x11111111; } } else { tmp = gb_addr_config & NUM_PIPES_MASK; @@ -1255,7 +1255,8 @@ */ for (i = 1; i < 8; i++) { WREG32(VM_CONTEXT0_PAGE_TABLE_START_ADDR + (i << 2), 0); - WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR + (i << 2), rdev->vm_manager.max_pfn); + WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR + (i << 2), + rdev->vm_manager.max_pfn - 1); WREG32(VM_CONTEXT0_PAGE_TABLE_BASE_ADDR + (i << 2), rdev->gart.table_addr >> 12); } @@ -1330,13 +1331,12 @@ { struct radeon_ring *ring = &rdev->ring[fence->ring]; u64 addr = rdev->fence_drv[fence->ring].gpu_addr; + u32 cp_coher_cntl = PACKET3_FULL_CACHE_ENA | PACKET3_TC_ACTION_ENA | + PACKET3_SH_ACTION_ENA; /* flush read cache over gart for this vmid */ - radeon_ring_write(ring, PACKET3(PACKET3_SET_CONFIG_REG, 1)); - radeon_ring_write(ring, (CP_COHER_CNTL2 - PACKET3_SET_CONFIG_REG_START) >> 2); - radeon_ring_write(ring, 0); radeon_ring_write(ring, PACKET3(PACKET3_SURFACE_SYNC, 3)); - radeon_ring_write(ring, PACKET3_TC_ACTION_ENA | PACKET3_SH_ACTION_ENA); + radeon_ring_write(ring, PACKET3_ENGINE_ME | cp_coher_cntl); radeon_ring_write(ring, 0xFFFFFFFF); radeon_ring_write(ring, 0); radeon_ring_write(ring, 10); /* poll interval */ @@ -1352,6 +1352,8 @@ void cayman_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib) { struct radeon_ring *ring = &rdev->ring[ib->ring]; + u32 cp_coher_cntl = PACKET3_FULL_CACHE_ENA | PACKET3_TC_ACTION_ENA | + PACKET3_SH_ACTION_ENA; /* set to DX10/11 mode */ radeon_ring_write(ring, PACKET3(PACKET3_MODE_CONTROL, 0)); @@ -1376,14 +1378,11 @@ (ib->vm ? (ib->vm->id << 24) : 0)); /* flush read cache over gart for this vmid */ - radeon_ring_write(ring, PACKET3(PACKET3_SET_CONFIG_REG, 1)); - radeon_ring_write(ring, (CP_COHER_CNTL2 - PACKET3_SET_CONFIG_REG_START) >> 2); - radeon_ring_write(ring, ib->vm ? ib->vm->id : 0); radeon_ring_write(ring, PACKET3(PACKET3_SURFACE_SYNC, 3)); - radeon_ring_write(ring, PACKET3_TC_ACTION_ENA | PACKET3_SH_ACTION_ENA); + radeon_ring_write(ring, PACKET3_ENGINE_ME | cp_coher_cntl); radeon_ring_write(ring, 0xFFFFFFFF); radeon_ring_write(ring, 0); - radeon_ring_write(ring, 10); /* poll interval */ + radeon_ring_write(ring, ((ib->vm ? ib->vm->id : 0) << 24) | 10); /* poll interval */ } static void cayman_cp_enable(struct radeon_device *rdev, bool enable) @@ -1878,23 +1877,7 @@ evergreen_mc_program(rdev); - if (rdev->flags & RADEON_IS_IGP) { - if (!rdev->me_fw || !rdev->pfp_fw || !rdev->rlc_fw) { - r = ni_init_microcode(rdev); - if (r) { - DRM_ERROR("Failed to load firmware!\n"); - return r; - } - } - } else { - if (!rdev->me_fw || !rdev->pfp_fw || !rdev->rlc_fw || !rdev->mc_fw) { - r = ni_init_microcode(rdev); - if (r) { - DRM_ERROR("Failed to load firmware!\n"); - return r; - } - } - + if (!(rdev->flags & RADEON_IS_IGP)) { r = ni_mc_load_microcode(rdev); if (r) { DRM_ERROR("Failed to load MC firmware!\n"); @@ -2145,6 +2128,24 @@ if (r) return r; + if (rdev->flags & RADEON_IS_IGP) { + if (!rdev->me_fw || !rdev->pfp_fw || !rdev->rlc_fw) { + r = ni_init_microcode(rdev); + if (r) { + DRM_ERROR("Failed to load firmware!\n"); + return r; + } + } + } else { + if (!rdev->me_fw || !rdev->pfp_fw || !rdev->rlc_fw || !rdev->mc_fw) { + r = ni_init_microcode(rdev); + if (r) { + DRM_ERROR("Failed to load firmware!\n"); + return r; + } + } + } + ring->ring_obj = NULL; r600_ring_init(rdev, ring, 1024 * 1024); @@ -2433,6 +2434,16 @@ radeon_ring_write(ring, PACKET0(VM_INVALIDATE_REQUEST, 0)); radeon_ring_write(ring, 1 << vm->id); + /* wait for the invalidate to complete */ + radeon_ring_write(ring, PACKET3(PACKET3_WAIT_REG_MEM, 5)); + radeon_ring_write(ring, (WAIT_REG_MEM_FUNCTION(0) | /* always */ + WAIT_REG_MEM_ENGINE(0))); /* me */ + radeon_ring_write(ring, VM_INVALIDATE_REQUEST >> 2); + radeon_ring_write(ring, 0); + radeon_ring_write(ring, 0); /* ref */ + radeon_ring_write(ring, 0); /* mask */ + radeon_ring_write(ring, 0x20); /* poll interval */ + /* sync PFP to ME, otherwise we might get invalid PFP reads */ radeon_ring_write(ring, PACKET3(PACKET3_PFP_SYNC_ME, 0)); radeon_ring_write(ring, 0x0); --- linux-3.13.0.orig/drivers/gpu/drm/radeon/ni_dma.c +++ linux-3.13.0/drivers/gpu/drm/radeon/ni_dma.c @@ -120,12 +120,6 @@ u32 reg_offset, wb_offset; int i, r; - /* Reset dma */ - WREG32(SRBM_SOFT_RESET, SOFT_RESET_DMA | SOFT_RESET_DMA1); - RREG32(SRBM_SOFT_RESET); - udelay(50); - WREG32(SRBM_SOFT_RESET, 0); - for (i = 0; i < 2; i++) { if (i == 0) { ring = &rdev->ring[R600_RING_TYPE_DMA_INDEX]; @@ -335,5 +329,11 @@ radeon_ring_write(ring, DMA_PACKET(DMA_PACKET_SRBM_WRITE, 0, 0, 0)); radeon_ring_write(ring, (0xf << 16) | (VM_INVALIDATE_REQUEST >> 2)); radeon_ring_write(ring, 1 << vm->id); + + /* wait for invalidate to complete */ + radeon_ring_write(ring, DMA_SRBM_READ_PACKET); + radeon_ring_write(ring, (0xff << 20) | (VM_INVALIDATE_REQUEST >> 2)); + radeon_ring_write(ring, 0); /* mask */ + radeon_ring_write(ring, 0); /* value */ } --- linux-3.13.0.orig/drivers/gpu/drm/radeon/ni_dpm.c +++ linux-3.13.0/drivers/gpu/drm/radeon/ni_dpm.c @@ -1313,7 +1313,7 @@ table->voltageMaskTable.highMask[NISLANDS_SMC_VOLTAGEMASK_VDDCI] = 0; table->voltageMaskTable.lowMask[NISLANDS_SMC_VOLTAGEMASK_VDDCI] = - cpu_to_be32(eg_pi->vddc_voltage_table.mask_low); + cpu_to_be32(eg_pi->vddci_voltage_table.mask_low); } } @@ -2586,7 +2586,7 @@ if (NISLANDS_DPM2_SQ_RAMP_STI_SIZE > (STI_SIZE_MASK >> STI_SIZE_SHIFT)) enable_sq_ramping = false; - if (NISLANDS_DPM2_SQ_RAMP_LTI_RATIO <= (LTI_RATIO_MASK >> LTI_RATIO_SHIFT)) + if (NISLANDS_DPM2_SQ_RAMP_LTI_RATIO > (LTI_RATIO_MASK >> LTI_RATIO_SHIFT)) enable_sq_ramping = false; for (i = 0; i < state->performance_level_count; i++) { --- linux-3.13.0.orig/drivers/gpu/drm/radeon/nid.h +++ linux-3.13.0/drivers/gpu/drm/radeon/nid.h @@ -1132,6 +1132,23 @@ #define PACKET3_MEM_SEMAPHORE 0x39 #define PACKET3_MPEG_INDEX 0x3A #define PACKET3_WAIT_REG_MEM 0x3C +#define WAIT_REG_MEM_FUNCTION(x) ((x) << 0) + /* 0 - always + * 1 - < + * 2 - <= + * 3 - == + * 4 - != + * 5 - >= + * 6 - > + */ +#define WAIT_REG_MEM_MEM_SPACE(x) ((x) << 4) + /* 0 - reg + * 1 - mem + */ +#define WAIT_REG_MEM_ENGINE(x) ((x) << 8) + /* 0 - me + * 1 - pfp + */ #define PACKET3_MEM_WRITE 0x3D #define PACKET3_PFP_SYNC_ME 0x42 #define PACKET3_SURFACE_SYNC 0x43 @@ -1154,6 +1171,7 @@ # define PACKET3_DB_ACTION_ENA (1 << 26) # define PACKET3_SH_ACTION_ENA (1 << 27) # define PACKET3_SX_ACTION_ENA (1 << 28) +# define PACKET3_ENGINE_ME (1 << 31) #define PACKET3_ME_INITIALIZE 0x44 #define PACKET3_ME_INITIALIZE_DEVICE_ID(x) ((x) << 16) #define PACKET3_COND_WRITE 0x45 @@ -1270,6 +1288,13 @@ (1 << 21) | \ (((n) & 0xFFFFF) << 0)) +#define DMA_SRBM_POLL_PACKET ((9 << 28) | \ + (1 << 27) | \ + (1 << 26)) + +#define DMA_SRBM_READ_PACKET ((9 << 28) | \ + (1 << 27)) + /* async DMA Packet types */ #define DMA_PACKET_WRITE 0x2 #define DMA_PACKET_COPY 0x3 --- linux-3.13.0.orig/drivers/gpu/drm/radeon/r100.c +++ linux-3.13.0/drivers/gpu/drm/radeon/r100.c @@ -742,6 +742,10 @@ tmp |= RADEON_FP2_DETECT_MASK; } WREG32(RADEON_GEN_INT_CNTL, tmp); + + /* read back to post the write */ + RREG32(RADEON_GEN_INT_CNTL); + return 0; } @@ -3190,6 +3194,9 @@ uint32_t pixel_bytes1 = 0; uint32_t pixel_bytes2 = 0; + if (!rdev->mode_info.mode_config_initialized) + return; + radeon_update_display_priority(rdev); if (rdev->mode_info.crtcs[0]->base.enabled) { --- linux-3.13.0.orig/drivers/gpu/drm/radeon/r600.c +++ linux-3.13.0/drivers/gpu/drm/radeon/r600.c @@ -2607,14 +2607,17 @@ struct radeon_fence *fence) { struct radeon_ring *ring = &rdev->ring[fence->ring]; + u32 cp_coher_cntl = PACKET3_TC_ACTION_ENA | PACKET3_VC_ACTION_ENA | + PACKET3_SH_ACTION_ENA; + + if (rdev->family >= CHIP_RV770) + cp_coher_cntl |= PACKET3_FULL_CACHE_ENA; if (rdev->wb.use_event) { u64 addr = rdev->fence_drv[fence->ring].gpu_addr; /* flush read cache over gart */ radeon_ring_write(ring, PACKET3(PACKET3_SURFACE_SYNC, 3)); - radeon_ring_write(ring, PACKET3_TC_ACTION_ENA | - PACKET3_VC_ACTION_ENA | - PACKET3_SH_ACTION_ENA); + radeon_ring_write(ring, cp_coher_cntl); radeon_ring_write(ring, 0xFFFFFFFF); radeon_ring_write(ring, 0); radeon_ring_write(ring, 10); /* poll interval */ @@ -2628,9 +2631,7 @@ } else { /* flush read cache over gart */ radeon_ring_write(ring, PACKET3(PACKET3_SURFACE_SYNC, 3)); - radeon_ring_write(ring, PACKET3_TC_ACTION_ENA | - PACKET3_VC_ACTION_ENA | - PACKET3_SH_ACTION_ENA); + radeon_ring_write(ring, cp_coher_cntl); radeon_ring_write(ring, 0xFFFFFFFF); radeon_ring_write(ring, 0); radeon_ring_write(ring, 10); /* poll interval */ @@ -2775,14 +2776,6 @@ r600_mc_program(rdev); - if (!rdev->me_fw || !rdev->pfp_fw || !rdev->rlc_fw) { - r = r600_init_microcode(rdev); - if (r) { - DRM_ERROR("Failed to load firmware!\n"); - return r; - } - } - if (rdev->flags & RADEON_IS_AGP) { r600_agp_enable(rdev); } else { @@ -2970,6 +2963,14 @@ if (r) return r; + if (!rdev->me_fw || !rdev->pfp_fw || !rdev->rlc_fw) { + r = r600_init_microcode(rdev); + if (r) { + DRM_ERROR("Failed to load firmware!\n"); + return r; + } + } + rdev->ring[RADEON_RING_TYPE_GFX_INDEX].ring_obj = NULL; r600_ring_init(rdev, &rdev->ring[RADEON_RING_TYPE_GFX_INDEX], 1024 * 1024); @@ -3420,7 +3421,6 @@ u32 hpd1, hpd2, hpd3, hpd4 = 0, hpd5 = 0, hpd6 = 0; u32 grbm_int_cntl = 0; u32 hdmi0, hdmi1; - u32 d1grph = 0, d2grph = 0; u32 dma_cntl; u32 thermal_int = 0; @@ -3529,8 +3529,8 @@ WREG32(CP_INT_CNTL, cp_int_cntl); WREG32(DMA_CNTL, dma_cntl); WREG32(DxMODE_INT_MASK, mode_int); - WREG32(D1GRPH_INTERRUPT_CONTROL, d1grph); - WREG32(D2GRPH_INTERRUPT_CONTROL, d2grph); + WREG32(D1GRPH_INTERRUPT_CONTROL, DxGRPH_PFLIP_INT_MASK); + WREG32(D2GRPH_INTERRUPT_CONTROL, DxGRPH_PFLIP_INT_MASK); WREG32(GRBM_INT_CNTL, grbm_int_cntl); if (ASIC_IS_DCE3(rdev)) { WREG32(DC_HPD1_INT_CONTROL, hpd1); @@ -3559,6 +3559,9 @@ WREG32(RV770_CG_THERMAL_INT, thermal_int); } + /* posting read */ + RREG32(R_000E50_SRBM_STATUS); + return 0; } @@ -3707,6 +3710,7 @@ tmp = RREG32(IH_RB_CNTL); tmp |= IH_WPTR_OVERFLOW_CLEAR; WREG32(IH_RB_CNTL, tmp); + wptr &= ~RB_OVERFLOW; } return (wptr & rdev->ih.ptr_mask); } @@ -3833,6 +3837,14 @@ break; } break; + case 9: /* D1 pflip */ + DRM_DEBUG("IH: D1 flip\n"); + radeon_crtc_handle_flip(rdev, 0); + break; + case 11: /* D2 pflip */ + DRM_DEBUG("IH: D2 flip\n"); + radeon_crtc_handle_flip(rdev, 1); + break; case 19: /* HPD/DAC hotplug */ switch (src_data) { case 0: @@ -3903,6 +3915,10 @@ break; } break; + case 124: /* UVD */ + DRM_DEBUG("IH: UVD int: 0x%08x\n", src_data); + radeon_fence_process(rdev, R600_RING_TYPE_UVD_INDEX); + break; case 176: /* CP_INT in ring buffer */ case 177: /* CP_INT in IB1 */ case 178: /* CP_INT in IB2 */ --- linux-3.13.0.orig/drivers/gpu/drm/radeon/r600_cs.c +++ linux-3.13.0/drivers/gpu/drm/radeon/r600_cs.c @@ -749,7 +749,10 @@ } for (i = 0; i < 8; i++) { - if ((tmp >> (i * 4)) & 0xF) { + u32 format = G_0280A0_FORMAT(track->cb_color_info[i]); + + if (format != V_0280A0_COLOR_INVALID && + (tmp >> (i * 4)) & 0xF) { /* at least one component is enabled */ if (track->cb_color_bo[i] == NULL) { dev_warn(p->dev, "%s:%d mask 0x%08X | 0x%08X no cb for %d\n", --- linux-3.13.0.orig/drivers/gpu/drm/radeon/r600_dma.c +++ linux-3.13.0/drivers/gpu/drm/radeon/r600_dma.c @@ -116,15 +116,6 @@ u32 rb_bufsz; int r; - /* Reset dma */ - if (rdev->family >= CHIP_RV770) - WREG32(SRBM_SOFT_RESET, RV770_SOFT_RESET_DMA); - else - WREG32(SRBM_SOFT_RESET, SOFT_RESET_DMA); - RREG32(SRBM_SOFT_RESET); - udelay(50); - WREG32(SRBM_SOFT_RESET, 0); - WREG32(DMA_SEM_INCOMPLETE_TIMER_CNTL, 0); WREG32(DMA_SEM_WAIT_FAIL_TIMER_CNTL, 0); @@ -236,16 +227,19 @@ { unsigned i; int r; - void __iomem *ptr = (void *)rdev->vram_scratch.ptr; + unsigned index; u32 tmp; + u64 gpu_addr; - if (!ptr) { - DRM_ERROR("invalid vram scratch pointer\n"); - return -EINVAL; - } + if (ring->idx == R600_RING_TYPE_DMA_INDEX) + index = R600_WB_DMA_RING_TEST_OFFSET; + else + index = CAYMAN_WB_DMA1_RING_TEST_OFFSET; + + gpu_addr = rdev->wb.gpu_addr + index; tmp = 0xCAFEDEAD; - writel(tmp, ptr); + rdev->wb.wb[index/4] = cpu_to_le32(tmp); r = radeon_ring_lock(rdev, ring, 4); if (r) { @@ -253,13 +247,13 @@ return r; } radeon_ring_write(ring, DMA_PACKET(DMA_PACKET_WRITE, 0, 0, 1)); - radeon_ring_write(ring, rdev->vram_scratch.gpu_addr & 0xfffffffc); - radeon_ring_write(ring, upper_32_bits(rdev->vram_scratch.gpu_addr) & 0xff); + radeon_ring_write(ring, lower_32_bits(gpu_addr)); + radeon_ring_write(ring, upper_32_bits(gpu_addr) & 0xff); radeon_ring_write(ring, 0xDEADBEEF); radeon_ring_unlock_commit(rdev, ring); for (i = 0; i < rdev->usec_timeout; i++) { - tmp = readl(ptr); + tmp = le32_to_cpu(rdev->wb.wb[index/4]); if (tmp == 0xDEADBEEF) break; DRM_UDELAY(1); @@ -339,17 +333,17 @@ { struct radeon_ib ib; unsigned i; + unsigned index; int r; - void __iomem *ptr = (void *)rdev->vram_scratch.ptr; u32 tmp = 0; + u64 gpu_addr; - if (!ptr) { - DRM_ERROR("invalid vram scratch pointer\n"); - return -EINVAL; - } + if (ring->idx == R600_RING_TYPE_DMA_INDEX) + index = R600_WB_DMA_RING_TEST_OFFSET; + else + index = CAYMAN_WB_DMA1_RING_TEST_OFFSET; - tmp = 0xCAFEDEAD; - writel(tmp, ptr); + gpu_addr = rdev->wb.gpu_addr + index; r = radeon_ib_get(rdev, ring->idx, &ib, NULL, 256); if (r) { @@ -358,8 +352,8 @@ } ib.ptr[0] = DMA_PACKET(DMA_PACKET_WRITE, 0, 0, 1); - ib.ptr[1] = rdev->vram_scratch.gpu_addr & 0xfffffffc; - ib.ptr[2] = upper_32_bits(rdev->vram_scratch.gpu_addr) & 0xff; + ib.ptr[1] = lower_32_bits(gpu_addr); + ib.ptr[2] = upper_32_bits(gpu_addr) & 0xff; ib.ptr[3] = 0xDEADBEEF; ib.length_dw = 4; @@ -375,7 +369,7 @@ return r; } for (i = 0; i < rdev->usec_timeout; i++) { - tmp = readl(ptr); + tmp = le32_to_cpu(rdev->wb.wb[index/4]); if (tmp == 0xDEADBEEF) break; DRM_UDELAY(1); --- linux-3.13.0.orig/drivers/gpu/drm/radeon/r600_dpm.c +++ linux-3.13.0/drivers/gpu/drm/radeon/r600_dpm.c @@ -158,16 +158,18 @@ u32 line_time_us, vblank_lines; u32 vblank_time_us = 0xffffffff; /* if the displays are off, vblank time is max */ - list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { - radeon_crtc = to_radeon_crtc(crtc); - if (crtc->enabled && radeon_crtc->enabled && radeon_crtc->hw_mode.clock) { - line_time_us = (radeon_crtc->hw_mode.crtc_htotal * 1000) / - radeon_crtc->hw_mode.clock; - vblank_lines = radeon_crtc->hw_mode.crtc_vblank_end - - radeon_crtc->hw_mode.crtc_vdisplay + - (radeon_crtc->v_border * 2); - vblank_time_us = vblank_lines * line_time_us; - break; + if (rdev->num_crtc && rdev->mode_info.mode_config_initialized) { + list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { + radeon_crtc = to_radeon_crtc(crtc); + if (crtc->enabled && radeon_crtc->enabled && radeon_crtc->hw_mode.clock) { + line_time_us = (radeon_crtc->hw_mode.crtc_htotal * 1000) / + radeon_crtc->hw_mode.clock; + vblank_lines = radeon_crtc->hw_mode.crtc_vblank_end - + radeon_crtc->hw_mode.crtc_vdisplay + + (radeon_crtc->v_border * 2); + vblank_time_us = vblank_lines * line_time_us; + break; + } } } @@ -181,14 +183,15 @@ struct radeon_crtc *radeon_crtc; u32 vrefresh = 0; - list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { - radeon_crtc = to_radeon_crtc(crtc); - if (crtc->enabled && radeon_crtc->enabled && radeon_crtc->hw_mode.clock) { - vrefresh = radeon_crtc->hw_mode.vrefresh; - break; + if (rdev->num_crtc && rdev->mode_info.mode_config_initialized) { + list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { + radeon_crtc = to_radeon_crtc(crtc); + if (crtc->enabled && radeon_crtc->enabled && radeon_crtc->hw_mode.clock) { + vrefresh = drm_mode_vrefresh(&radeon_crtc->hw_mode); + break; + } } } - return vrefresh; } @@ -1190,7 +1193,7 @@ (mode_info->atom_context->bios + data_offset + le16_to_cpu(ext_hdr->usPowerTuneTableOffset)); rdev->pm.dpm.dyn_state.cac_tdp_table->maximum_power_delivery_limit = - ppt->usMaximumPowerDeliveryLimit; + le16_to_cpu(ppt->usMaximumPowerDeliveryLimit); pt = &ppt->power_tune_table; } else { ATOM_PPLIB_POWERTUNE_Table *ppt = (ATOM_PPLIB_POWERTUNE_Table *) --- linux-3.13.0.orig/drivers/gpu/drm/radeon/r600_hdmi.c +++ linux-3.13.0/drivers/gpu/drm/radeon/r600_hdmi.c @@ -326,7 +326,7 @@ struct drm_connector *connector; struct radeon_connector *radeon_connector = NULL; u32 tmp; - u8 *sadb; + u8 *sadb = NULL; int sad_count; /* XXX: setting this register causes hangs on some asics */ --- linux-3.13.0.orig/drivers/gpu/drm/radeon/r600d.h +++ linux-3.13.0/drivers/gpu/drm/radeon/r600d.h @@ -1575,6 +1575,7 @@ # define PACKET3_CP_DMA_CMD_DAIC (1 << 29) #define PACKET3_SURFACE_SYNC 0x43 # define PACKET3_CB0_DEST_BASE_ENA (1 << 6) +# define PACKET3_FULL_CACHE_ENA (1 << 20) /* r7xx+ only */ # define PACKET3_TC_ACTION_ENA (1 << 23) # define PACKET3_VC_ACTION_ENA (1 << 24) # define PACKET3_CB_ACTION_ENA (1 << 25) --- linux-3.13.0.orig/drivers/gpu/drm/radeon/radeon.h +++ linux-3.13.0/drivers/gpu/drm/radeon/radeon.h @@ -99,6 +99,7 @@ extern int radeon_dpm; extern int radeon_aspm; extern int radeon_runtime_pm; +extern int radeon_bapm; /* * Copy from radeon_drv.h so we don't have to include both and have conflicting @@ -134,6 +135,9 @@ /* R600+ */ #define R600_RING_TYPE_UVD_INDEX 5 +/* number of hw syncs before falling back on blocking */ +#define RADEON_NUM_SYNCS 4 + /* hardcode those limit for now */ #define RADEON_VA_IB_OFFSET (1 << 20) #define RADEON_VA_RESERVED_SIZE (8 << 20) @@ -286,6 +290,9 @@ u16 *vddc, u16 *vddci, u16 virtual_voltage_id, u16 vbios_voltage_id); +int radeon_atom_get_voltage_evv(struct radeon_device *rdev, + u16 virtual_voltage_id, + u16 *voltage); int radeon_atom_round_to_true_voltage(struct radeon_device *rdev, u8 voltage_type, u16 nominal_voltage, @@ -544,7 +551,6 @@ /* * Semaphores. */ -/* everything here is constant */ struct radeon_semaphore { struct radeon_sa_bo *sa_bo; signed waiters; @@ -721,6 +727,12 @@ u32 disp_int_cont4; u32 disp_int_cont5; u32 disp_int_cont6; + u32 d1grph_int; + u32 d2grph_int; + u32 d3grph_int; + u32 d4grph_int; + u32 d5grph_int; + u32 d6grph_int; }; union radeon_irq_stat_regs { @@ -730,7 +742,7 @@ struct cik_irq_stat_regs cik; }; -#define RADEON_MAX_HPD_PINS 6 +#define RADEON_MAX_HPD_PINS 7 #define RADEON_MAX_CRTCS 6 #define RADEON_MAX_AFMT_BLOCKS 7 @@ -1069,6 +1081,8 @@ #define R600_WB_EVENT_OFFSET 3072 #define CIK_WB_CP1_WPTR_OFFSET 3328 #define CIK_WB_CP2_WPTR_OFFSET 3584 +#define R600_WB_DMA_RING_TEST_OFFSET 3588 +#define CAYMAN_WB_DMA1_RING_TEST_OFFSET 3592 /** * struct radeon_pm - power management datas @@ -2229,6 +2243,7 @@ bool have_disp_power_ref; }; +bool radeon_is_px(struct drm_device *dev); int radeon_device_init(struct radeon_device *rdev, struct drm_device *ddev, struct pci_dev *pdev, @@ -2539,6 +2554,9 @@ #define ASIC_IS_DCE64(rdev) ((rdev->family == CHIP_OLAND)) #define ASIC_IS_NODCE(rdev) ((rdev->family == CHIP_HAINAN)) #define ASIC_IS_DCE8(rdev) ((rdev->family >= CHIP_BONAIRE)) +#define ASIC_IS_DCE81(rdev) ((rdev->family == CHIP_KAVERI)) +#define ASIC_IS_DCE82(rdev) ((rdev->family == CHIP_BONAIRE)) +#define ASIC_IS_DCE83(rdev) ((rdev->family == CHIP_KABINI)) #define ASIC_IS_LOMBOK(rdev) ((rdev->ddev->pdev->device == 0x6849) || \ (rdev->ddev->pdev->device == 0x6850) || \ --- linux-3.13.0.orig/drivers/gpu/drm/radeon/radeon_asic.c +++ linux-3.13.0/drivers/gpu/drm/radeon/radeon_asic.c @@ -1157,7 +1157,7 @@ static struct radeon_asic_ring rv770_uvd_ring = { .ib_execute = &uvd_v1_0_ib_execute, .emit_fence = &uvd_v2_2_fence_emit, - .emit_semaphore = &uvd_v1_0_semaphore_emit, + .emit_semaphore = &uvd_v2_2_semaphore_emit, .cs_parse = &radeon_uvd_cs_parse, .ring_test = &uvd_v1_0_ring_test, .ib_test = &uvd_v1_0_ib_test, @@ -2025,8 +2025,8 @@ .blit_ring_index = RADEON_RING_TYPE_GFX_INDEX, .dma = &cik_copy_dma, .dma_ring_index = R600_RING_TYPE_DMA_INDEX, - .copy = &cik_copy_dma, - .copy_ring_index = R600_RING_TYPE_DMA_INDEX, + .copy = &cik_copy_cpdma, + .copy_ring_index = RADEON_RING_TYPE_GFX_INDEX, }, .surface = { .set_reg = r600_set_surface_reg, --- linux-3.13.0.orig/drivers/gpu/drm/radeon/radeon_asic.h +++ linux-3.13.0/drivers/gpu/drm/radeon/radeon_asic.h @@ -813,6 +813,10 @@ int uvd_v2_2_resume(struct radeon_device *rdev); void uvd_v2_2_fence_emit(struct radeon_device *rdev, struct radeon_fence *fence); +bool uvd_v2_2_semaphore_emit(struct radeon_device *rdev, + struct radeon_ring *ring, + struct radeon_semaphore *semaphore, + bool emit_wait); /* uvd v3.1 */ bool uvd_v3_1_semaphore_emit(struct radeon_device *rdev, --- linux-3.13.0.orig/drivers/gpu/drm/radeon/radeon_atombios.c +++ linux-3.13.0/drivers/gpu/drm/radeon/radeon_atombios.c @@ -453,7 +453,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) { @@ -464,7 +466,6 @@ } } - return true; } @@ -1963,7 +1964,7 @@ "adm1032", "adm1030", "max6649", - "lm64", + "lm63", /* lm64 */ "f75375", "asc7xxx", }; @@ -1974,7 +1975,7 @@ "adm1032", "adm1030", "max6649", - "lm64", + "lm63", /* lm64 */ "f75375", "RV6xx", "RV770", @@ -2281,19 +2282,31 @@ (controller->ucFanParameters & ATOM_PP_FANPARAMETERS_NOFAN) ? "without" : "with"); rdev->pm.int_thermal_type = THERMAL_TYPE_KV; - } else if ((controller->ucType == - ATOM_PP_THERMALCONTROLLER_EXTERNAL_GPIO) || - (controller->ucType == - ATOM_PP_THERMALCONTROLLER_ADT7473_WITH_INTERNAL) || - (controller->ucType == - ATOM_PP_THERMALCONTROLLER_EMC2103_WITH_INTERNAL)) { - DRM_INFO("Special thermal controller config\n"); + } else if (controller->ucType == + ATOM_PP_THERMALCONTROLLER_EXTERNAL_GPIO) { + DRM_INFO("External GPIO thermal controller %s fan control\n", + (controller->ucFanParameters & + ATOM_PP_FANPARAMETERS_NOFAN) ? "without" : "with"); + rdev->pm.int_thermal_type = THERMAL_TYPE_EXTERNAL_GPIO; + } else if (controller->ucType == + ATOM_PP_THERMALCONTROLLER_ADT7473_WITH_INTERNAL) { + DRM_INFO("ADT7473 with internal thermal controller %s fan control\n", + (controller->ucFanParameters & + ATOM_PP_FANPARAMETERS_NOFAN) ? "without" : "with"); + rdev->pm.int_thermal_type = THERMAL_TYPE_ADT7473_WITH_INTERNAL; + } else if (controller->ucType == + ATOM_PP_THERMALCONTROLLER_EMC2103_WITH_INTERNAL) { + DRM_INFO("EMC2103 with internal thermal controller %s fan control\n", + (controller->ucFanParameters & + ATOM_PP_FANPARAMETERS_NOFAN) ? "without" : "with"); + rdev->pm.int_thermal_type = THERMAL_TYPE_EMC2103_WITH_INTERNAL; } else if (controller->ucType < ARRAY_SIZE(pp_lib_thermal_controller_names)) { DRM_INFO("Possible %s thermal controller at 0x%02x %s fan control\n", pp_lib_thermal_controller_names[controller->ucType], controller->ucI2cAddress >> 1, (controller->ucFanParameters & ATOM_PP_FANPARAMETERS_NOFAN) ? "without" : "with"); + rdev->pm.int_thermal_type = THERMAL_TYPE_EXTERNAL; i2c_bus = radeon_lookup_i2c_gpio(rdev, controller->ucI2cLine); rdev->pm.i2c_bus = radeon_i2c_lookup(rdev, &i2c_bus); if (rdev->pm.i2c_bus) { @@ -3236,6 +3249,42 @@ return 0; } +union get_voltage_info { + struct _GET_VOLTAGE_INFO_INPUT_PARAMETER_V1_2 in; + struct _GET_EVV_VOLTAGE_INFO_OUTPUT_PARAMETER_V1_2 evv_out; +}; + +int radeon_atom_get_voltage_evv(struct radeon_device *rdev, + u16 virtual_voltage_id, + u16 *voltage) +{ + int index = GetIndexIntoMasterTable(COMMAND, GetVoltageInfo); + u32 entry_id; + u32 count = rdev->pm.dpm.dyn_state.vddc_dependency_on_sclk.count; + union get_voltage_info args; + + for (entry_id = 0; entry_id < count; entry_id++) { + if (rdev->pm.dpm.dyn_state.vddc_dependency_on_sclk.entries[entry_id].v == + virtual_voltage_id) + break; + } + + if (entry_id >= count) + return -EINVAL; + + args.in.ucVoltageType = VOLTAGE_TYPE_VDDC; + args.in.ucVoltageMode = ATOM_GET_VOLTAGE_EVV_VOLTAGE; + args.in.usVoltageLevel = cpu_to_le16(virtual_voltage_id); + args.in.ulSCLKFreq = + cpu_to_le32(rdev->pm.dpm.dyn_state.vddc_dependency_on_sclk.entries[entry_id].clk); + + atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); + + *voltage = le16_to_cpu(args.evv_out.usVoltageLevel); + + return 0; +} + int radeon_atom_get_voltage_gpio_settings(struct radeon_device *rdev, u16 voltage_level, u8 voltage_type, u32 *gpio_value, u32 *gpio_mask) @@ -3944,6 +3993,10 @@ /* tell the bios not to handle mode switching */ bios_6_scratch |= ATOM_S6_ACC_BLOCK_DISPLAY_SWITCH; + /* clear the vbios dpms state */ + if (ASIC_IS_DCE4(rdev)) + bios_2_scratch &= ~ATOM_S2_DEVICE_DPMS_STATE; + if (rdev->family >= CHIP_R600) { WREG32(R600_BIOS_2_SCRATCH, bios_2_scratch); WREG32(R600_BIOS_6_SCRATCH, bios_6_scratch); --- linux-3.13.0.orig/drivers/gpu/drm/radeon/radeon_atpx_handler.c +++ linux-3.13.0/drivers/gpu/drm/radeon/radeon_atpx_handler.c @@ -59,7 +59,7 @@ u16 mux; } __packed; -bool radeon_is_px(void) { +bool radeon_has_atpx(void) { return radeon_atpx_priv.atpx_detected; } @@ -219,7 +219,8 @@ memcpy(&output, info->buffer.pointer, size); /* TODO: check version? */ - printk("ATPX version %u\n", output.version); + printk("ATPX version %u, functions 0x%08x\n", + output.version, output.function_bits); radeon_atpx_parse_functions(&atpx->functions, output.function_bits); @@ -525,6 +526,13 @@ vga_count++; has_atpx |= (radeon_atpx_pci_probe_handle(pdev) == true); + } + + /* some newer PX laptops mark the dGPU as a non-VGA display device */ + while ((pdev = pci_get_class(PCI_CLASS_DISPLAY_OTHER << 8, pdev)) != NULL) { + vga_count++; + + has_atpx |= (radeon_atpx_pci_probe_handle(pdev) == true); } if (has_atpx && vga_count == 2) { --- linux-3.13.0.orig/drivers/gpu/drm/radeon/radeon_bios.c +++ linux-3.13.0/drivers/gpu/drm/radeon/radeon_bios.c @@ -76,7 +76,7 @@ static bool radeon_read_bios(struct radeon_device *rdev) { - uint8_t __iomem *bios; + uint8_t __iomem *bios, val1, val2; size_t size; rdev->bios = NULL; @@ -86,15 +86,19 @@ return false; } - if (size == 0 || bios[0] != 0x55 || bios[1] != 0xaa) { + val1 = readb(&bios[0]); + val2 = readb(&bios[1]); + + if (size == 0 || val1 != 0x55 || val2 != 0xaa) { pci_unmap_rom(rdev->pdev, bios); return false; } - rdev->bios = kmemdup(bios, size, GFP_KERNEL); + rdev->bios = kzalloc(size, GFP_KERNEL); if (rdev->bios == NULL) { pci_unmap_rom(rdev->pdev, bios); return false; } + memcpy_fromio(rdev->bios, bios, size); pci_unmap_rom(rdev->pdev, bios); return true; } @@ -196,6 +200,20 @@ } } + if (!found) { + while ((pdev = pci_get_class(PCI_CLASS_DISPLAY_OTHER << 8, pdev)) != NULL) { + dhandle = ACPI_HANDLE(&pdev->dev); + if (!dhandle) + continue; + + status = acpi_get_handle(dhandle, "ATRM", &atrm_handle); + if (!ACPI_FAILURE(status)) { + found = true; + break; + } + } + } + if (!found) return false; --- linux-3.13.0.orig/drivers/gpu/drm/radeon/radeon_combios.c +++ linux-3.13.0/drivers/gpu/drm/radeon/radeon_combios.c @@ -1271,10 +1271,15 @@ if ((RBIOS16(tmp) == lvds->native_mode.hdisplay) && (RBIOS16(tmp + 2) == lvds->native_mode.vdisplay)) { + u32 hss = (RBIOS16(tmp + 21) - RBIOS16(tmp + 19) - 1) * 8; + + if (hss > lvds->native_mode.hdisplay) + hss = (10 - 1) * 8; + lvds->native_mode.htotal = lvds->native_mode.hdisplay + (RBIOS16(tmp + 17) - RBIOS16(tmp + 19)) * 8; lvds->native_mode.hsync_start = lvds->native_mode.hdisplay + - (RBIOS16(tmp + 21) - RBIOS16(tmp + 19) - 1) * 8; + hss; lvds->native_mode.hsync_end = lvds->native_mode.hsync_start + (RBIOS8(tmp + 23) * 8); @@ -3398,6 +3403,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-3.13.0.orig/drivers/gpu/drm/radeon/radeon_connectors.c +++ linux-3.13.0/drivers/gpu/drm/radeon/radeon_connectors.c @@ -80,6 +80,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. @@ -1411,7 +1416,7 @@ struct radeon_device *rdev = dev->dev_private; if (ASIC_IS_DCE5(rdev) && - (rdev->clock.dp_extclk >= 53900) && + (rdev->clock.default_dispclk >= 53900) && radeon_connector_encoder_is_hbr2(connector)) { return true; } --- linux-3.13.0.orig/drivers/gpu/drm/radeon/radeon_cs.c +++ linux-3.13.0/drivers/gpu/drm/radeon/radeon_cs.c @@ -97,6 +97,12 @@ uint32_t domain = r->write_domain ? r->write_domain : r->read_domains; + if (domain & RADEON_GEM_DOMAIN_CPU) { + DRM_ERROR("RADEON_GEM_DOMAIN_CPU is not valid " + "for command submission\n"); + return -EINVAL; + } + p->relocs[i].lobj.domain = domain; if (domain == RADEON_GEM_DOMAIN_VRAM) domain |= RADEON_GEM_DOMAIN_GTT; @@ -173,11 +179,13 @@ u32 ring = RADEON_CS_RING_GFX; s32 priority = 0; + INIT_LIST_HEAD(&p->validated); + if (!cs->num_chunks) { return 0; } + /* get chunks */ - INIT_LIST_HEAD(&p->validated); p->idx = 0; p->ib.sa_bo = NULL; p->ib.semaphore = NULL; @@ -276,10 +284,17 @@ return -EINVAL; /* we only support VM on some SI+ rings */ - if ((p->rdev->asic->ring[p->ring]->cs_parse == NULL) && - ((p->cs_flags & RADEON_CS_USE_VM) == 0)) { - DRM_ERROR("Ring %d requires VM!\n", p->ring); - return -EINVAL; + if ((p->cs_flags & RADEON_CS_USE_VM) == 0) { + if (p->rdev->asic->ring[p->ring]->cs_parse == NULL) { + DRM_ERROR("Ring %d requires VM!\n", p->ring); + return -EINVAL; + } + } else { + if (p->rdev->asic->ring[p->ring]->ib_parse == NULL) { + DRM_ERROR("VM not supported on ring %d!\n", + p->ring); + return -EINVAL; + } } } --- linux-3.13.0.orig/drivers/gpu/drm/radeon/radeon_device.c +++ linux-3.13.0/drivers/gpu/drm/radeon/radeon_device.c @@ -102,11 +102,14 @@ "LAST", }; -#if defined(CONFIG_VGA_SWITCHEROO) -bool radeon_is_px(void); -#else -static inline bool radeon_is_px(void) { return false; } -#endif +bool radeon_is_px(struct drm_device *dev) +{ + struct radeon_device *rdev = dev->dev_private; + + if (rdev->flags & RADEON_IS_PX) + return true; + return false; +} /** * radeon_program_register_sequence - program an array of registers. @@ -1077,7 +1080,7 @@ { struct drm_device *dev = pci_get_drvdata(pdev); - if (radeon_is_px() && state == VGA_SWITCHEROO_OFF) + if (radeon_is_px(dev) && state == VGA_SWITCHEROO_OFF) return; if (state == VGA_SWITCHEROO_ON) { @@ -1298,9 +1301,7 @@ * ignore it */ vga_client_register(rdev->pdev, rdev, NULL, radeon_vga_set_decode); - if (radeon_runtime_pm == 1) - runtime = true; - if ((radeon_runtime_pm == -1) && radeon_is_px()) + if (rdev->flags & RADEON_IS_PX) runtime = true; vga_switcheroo_register_client(rdev->pdev, &radeon_switcheroo_ops, runtime); if (runtime) @@ -1308,7 +1309,7 @@ r = radeon_init(rdev); if (r) - return r; + goto failed; r = radeon_ib_ring_tests(rdev); if (r) @@ -1328,8 +1329,24 @@ radeon_agp_disable(rdev); r = radeon_init(rdev); if (r) - return r; + goto failed; } + + /* + * Turks/Thames GPU will freeze whole laptop if DPM is not restarted + * after the CP ring have chew one packet at least. Hence here we stop + * and restart DPM after the radeon_ib_ring_tests(). + */ + if (rdev->pm.dpm_enabled && + (rdev->pm.pm_method == PM_METHOD_DPM) && + (rdev->family == CHIP_TURKS) && + (rdev->flags & RADEON_IS_MOBILITY)) { + mutex_lock(&rdev->pm.mutex); + radeon_dpm_disable(rdev); + radeon_dpm_enable(rdev); + mutex_unlock(&rdev->pm.mutex); + } + if ((radeon_testing & 1)) { if (rdev->accel_working) radeon_test_moves(rdev); @@ -1349,6 +1366,11 @@ DRM_INFO("radeon: acceleration disabled, skipping benchmarks\n"); } return 0; + +failed: + if (runtime) + vga_switcheroo_fini_domain_pm_ops(rdev->dev); + return r; } static void radeon_debugfs_remove_files(struct radeon_device *rdev); @@ -1369,6 +1391,8 @@ radeon_bo_evict_vram(rdev); radeon_fini(rdev); vga_switcheroo_unregister_client(rdev->pdev); + if (rdev->flags & RADEON_IS_PX) + vga_switcheroo_fini_domain_pm_ops(rdev->dev); vga_client_register(rdev->pdev, NULL, NULL, NULL); if (rdev->rio_mem) pci_iounmap(rdev->pdev, rdev->rio_mem); @@ -1546,6 +1570,11 @@ } drm_kms_helper_poll_enable(dev); + + /* set the power state here in case we are a PX system or headless */ + if ((rdev->pm.pm_method == PM_METHOD_DPM) && rdev->pm.dpm_enabled) + radeon_pm_compute_clocks(rdev); + return 0; } --- linux-3.13.0.orig/drivers/gpu/drm/radeon/radeon_display.c +++ linux-3.13.0/drivers/gpu/drm/radeon/radeon_display.c @@ -282,6 +282,10 @@ u32 update_pending; int vpos, hpos; + /* can happen during initialization */ + if (radeon_crtc == NULL) + return; + spin_lock_irqsave(&rdev->ddev->event_lock, flags); work = radeon_crtc->unpin_work; if (work == NULL || @@ -306,7 +310,7 @@ * to complete in this vblank? */ if (update_pending && - (DRM_SCANOUTPOS_VALID & radeon_get_crtc_scanoutpos(rdev->ddev, crtc_id, + (DRM_SCANOUTPOS_VALID & radeon_get_crtc_scanoutpos(rdev->ddev, crtc_id, 0, &vpos, &hpos, NULL, NULL)) && ((vpos >= (99 * rdev->mode_info.crtcs[crtc_id]->base.hwmode.crtc_vdisplay)/100) || (vpos < 0 && !ASIC_IS_AVIVO(rdev)))) { @@ -749,6 +753,10 @@ struct radeon_device *rdev = dev->dev_private; int ret = 0; + /* don't leak the edid if we already fetched it in detect() */ + if (radeon_connector->edid) + goto got_edid; + /* on hw with routers, select right port */ if (radeon_connector->router.ddc_valid) radeon_router_select_ddc_port(radeon_connector); @@ -788,8 +796,10 @@ radeon_connector->edid = radeon_bios_get_hardcoded_edid(rdev); } if (radeon_connector->edid) { +got_edid: drm_mode_connector_update_edid_property(&radeon_connector->base, radeon_connector->edid); ret = drm_add_edid_modes(&radeon_connector->base, radeon_connector->edid); + drm_edid_to_eld(&radeon_connector->base, radeon_connector->edid); return ret; } drm_mode_connector_update_edid_property(&radeon_connector->base, NULL); @@ -1601,6 +1611,7 @@ * * \param dev Device to query. * \param crtc Crtc to query. + * \param flags Flags from caller (DRM_CALLED_FROM_VBLIRQ or 0). * \param *vpos Location where vertical scanout position should be stored. * \param *hpos Location where horizontal scanout position should go. * \param *stime Target location for timestamp taken immediately before @@ -1622,8 +1633,8 @@ * unknown small number of scanlines wrt. real scanout position. * */ -int radeon_get_crtc_scanoutpos(struct drm_device *dev, int crtc, int *vpos, int *hpos, - ktime_t *stime, ktime_t *etime) +int radeon_get_crtc_scanoutpos(struct drm_device *dev, int crtc, unsigned int flags, + int *vpos, int *hpos, ktime_t *stime, ktime_t *etime) { u32 stat_crtc = 0, vbl = 0, position = 0; int vbl_start, vbl_end, vtotal, ret = 0; --- linux-3.13.0.orig/drivers/gpu/drm/radeon/radeon_drv.c +++ linux-3.13.0/drivers/gpu/drm/radeon/radeon_drv.c @@ -109,8 +109,10 @@ void radeon_gem_object_close(struct drm_gem_object *obj, struct drm_file *file_priv); extern int radeon_get_crtc_scanoutpos(struct drm_device *dev, int crtc, + unsigned int flags, int *vpos, int *hpos, ktime_t *stime, ktime_t *etime); +extern bool radeon_is_px(struct drm_device *dev); extern const struct drm_ioctl_desc radeon_ioctls_kms[]; extern int radeon_max_kms_ioctl; int radeon_mmap(struct file *filp, struct vm_area_struct *vma); @@ -140,11 +142,9 @@ #if defined(CONFIG_VGA_SWITCHEROO) void radeon_register_atpx_handler(void); void radeon_unregister_atpx_handler(void); -bool radeon_is_px(void); #else static inline void radeon_register_atpx_handler(void) {} static inline void radeon_unregister_atpx_handler(void) {} -static inline bool radeon_is_px(void) { return false; } #endif int radeon_no_wb; @@ -168,6 +168,7 @@ int radeon_dpm = -1; int radeon_aspm = -1; int radeon_runtime_pm = -1; +int radeon_bapm = -1; MODULE_PARM_DESC(no_wb, "Disable AGP writeback for scratch registers"); module_param_named(no_wb, radeon_no_wb, int, 0444); @@ -232,6 +233,9 @@ MODULE_PARM_DESC(runpm, "PX runtime pm (1 = force enable, 0 = disable, -1 = PX only default)"); module_param_named(runpm, radeon_runtime_pm, int, 0444); +MODULE_PARM_DESC(bapm, "BAPM support (1 = enable, 0 = disable, -1 = auto)"); +module_param_named(bapm, radeon_bapm, int, 0444); + static struct pci_device_id pciidlist[] = { radeon_PCI_IDS }; @@ -400,6 +404,9 @@ if (radeon_runtime_pm == 0) return -EINVAL; + if (radeon_runtime_pm == -1 && !radeon_is_px(drm_dev)) + return -EINVAL; + drm_dev->switch_power_state = DRM_SWITCH_POWER_CHANGING; drm_kms_helper_poll_disable(drm_dev); vga_switcheroo_set_dynamic_switch(pdev, VGA_SWITCHEROO_OFF); @@ -419,7 +426,7 @@ struct drm_device *drm_dev = pci_get_drvdata(pdev); int ret; - if (radeon_runtime_pm == 0) + if (!radeon_is_px(drm_dev)) return -EINVAL; drm_dev->switch_power_state = DRM_SWITCH_POWER_CHANGING; @@ -448,7 +455,7 @@ return -EBUSY; /* are we PX enabled? */ - if (radeon_runtime_pm == -1 && !radeon_is_px()) { + if (radeon_runtime_pm == -1 && !radeon_is_px(drm_dev)) { DRM_DEBUG_DRIVER("failing to power off - not px\n"); return -EBUSY; } --- linux-3.13.0.orig/drivers/gpu/drm/radeon/radeon_encoders.c +++ linux-3.13.0/drivers/gpu/drm/radeon/radeon_encoders.c @@ -179,7 +179,6 @@ radeon_atom_backlight_init(radeon_encoder, connector); else radeon_legacy_backlight_init(radeon_encoder, connector); - rdev->mode_info.bl_encoder = radeon_encoder; } } } --- linux-3.13.0.orig/drivers/gpu/drm/radeon/radeon_family.h +++ linux-3.13.0/drivers/gpu/drm/radeon/radeon_family.h @@ -115,6 +115,7 @@ RADEON_NEW_MEMMAP = 0x00400000UL, RADEON_IS_PCI = 0x00800000UL, RADEON_IS_IGPGART = 0x01000000UL, + RADEON_IS_PX = 0x02000000UL, }; #endif --- linux-3.13.0.orig/drivers/gpu/drm/radeon/radeon_gart.c +++ linux-3.13.0/drivers/gpu/drm/radeon/radeon_gart.c @@ -251,8 +251,10 @@ } } } - mb(); - radeon_gart_tlb_flush(rdev); + if (rdev->gart.ptr) { + mb(); + radeon_gart_tlb_flush(rdev); + } } /** @@ -294,8 +296,10 @@ } } } - mb(); - radeon_gart_tlb_flush(rdev); + if (rdev->gart.ptr) { + mb(); + radeon_gart_tlb_flush(rdev); + } return 0; } --- linux-3.13.0.orig/drivers/gpu/drm/radeon/radeon_i2c.c +++ linux-3.13.0/drivers/gpu/drm/radeon/radeon_i2c.c @@ -1020,6 +1020,9 @@ /* Add the default buses */ void radeon_i2c_init(struct radeon_device *rdev) { + if (radeon_hw_i2c) + DRM_INFO("hw_i2c forced on, you may experience display detection problems!\n"); + if (rdev->is_atom_bios) radeon_atombios_i2c_init(rdev); else --- linux-3.13.0.orig/drivers/gpu/drm/radeon/radeon_irq_kms.c +++ linux-3.13.0/drivers/gpu/drm/radeon/radeon_irq_kms.c @@ -79,10 +79,12 @@ struct drm_mode_config *mode_config = &dev->mode_config; struct drm_connector *connector; + mutex_lock(&mode_config->mutex); if (mode_config->num_connector) { list_for_each_entry(connector, &mode_config->connector_list, head) radeon_connector_hotplug(connector); } + mutex_unlock(&mode_config->mutex); /* Just fire off a uevent and let userspace tell us what to do */ drm_helper_hpd_irq_event(dev); } @@ -202,6 +204,16 @@ if (rdev->flags & RADEON_IS_AGP) return false; + /* + * Older chips have a HW limitation, they can only generate 40 bits + * of address for "64-bit" MSIs which breaks on some platforms, notably + * IBM POWER servers, so we limit them + */ + if (rdev->family < CHIP_BONAIRE) { + dev_info(rdev->dev, "radeon: MSI limited to 32-bit\n"); + rdev->pdev->no_64bit_msi = 1; + } + /* force MSI on */ if (radeon_msi == 1) return true; --- linux-3.13.0.orig/drivers/gpu/drm/radeon/radeon_kms.c +++ linux-3.13.0/drivers/gpu/drm/radeon/radeon_kms.c @@ -33,6 +33,13 @@ #include #include #include + +#if defined(CONFIG_VGA_SWITCHEROO) +bool radeon_has_atpx(void); +#else +static inline bool radeon_has_atpx(void) { return false; } +#endif + /** * radeon_driver_unload_kms - Main unload function for KMS. * @@ -100,6 +107,11 @@ flags |= RADEON_IS_PCI; } + if ((radeon_runtime_pm != 0) && + radeon_has_atpx() && + ((flags & RADEON_IS_IGP) == 0)) + flags |= RADEON_IS_PX; + /* radeon_device_init should report only fatal error * like memory allocation failure or iomapping failure, * or memory manager initialization failure, it must @@ -130,7 +142,7 @@ "Error during ACPI methods call\n"); } - if (radeon_runtime_pm != 0) { + if (radeon_is_px(dev)) { pm_runtime_use_autosuspend(dev->dev); pm_runtime_set_autosuspend_delay(dev->dev, 5000); pm_runtime_set_active(dev->dev); @@ -242,7 +254,14 @@ } break; case RADEON_INFO_ACCEL_WORKING2: - *value = rdev->accel_working; + if (rdev->family == CHIP_HAWAII) { + if (rdev->accel_working) + *value = 2; + else + *value = 0; + } else { + *value = rdev->accel_working; + } break; case RADEON_INFO_TILING_CONFIG: if (rdev->family >= CHIP_BONAIRE) @@ -530,19 +549,29 @@ radeon_vm_init(rdev, &fpriv->vm); - /* map the ib pool buffer read only into - * virtual address space */ - bo_va = radeon_vm_bo_add(rdev, &fpriv->vm, - rdev->ring_tmp_bo.bo); - r = radeon_vm_bo_set_addr(rdev, bo_va, RADEON_VA_IB_OFFSET, - RADEON_VM_PAGE_READABLE | - RADEON_VM_PAGE_SNOOPED); - if (r) { - radeon_vm_fini(rdev, &fpriv->vm); - kfree(fpriv); - return r; - } + if (rdev->accel_working) { + r = radeon_bo_reserve(rdev->ring_tmp_bo.bo, false); + if (r) { + radeon_vm_fini(rdev, &fpriv->vm); + kfree(fpriv); + return r; + } + /* map the ib pool buffer read only into + * virtual address space */ + bo_va = radeon_vm_bo_add(rdev, &fpriv->vm, + rdev->ring_tmp_bo.bo); + r = radeon_vm_bo_set_addr(rdev, bo_va, RADEON_VA_IB_OFFSET, + RADEON_VM_PAGE_READABLE | + RADEON_VM_PAGE_SNOOPED); + + radeon_bo_unreserve(rdev->ring_tmp_bo.bo); + if (r) { + radeon_vm_fini(rdev, &fpriv->vm); + kfree(fpriv); + return r; + } + } file_priv->driver_priv = fpriv; } @@ -570,13 +599,15 @@ struct radeon_bo_va *bo_va; int r; - r = radeon_bo_reserve(rdev->ring_tmp_bo.bo, false); - if (!r) { - bo_va = radeon_vm_bo_find(&fpriv->vm, - rdev->ring_tmp_bo.bo); - if (bo_va) - radeon_vm_bo_rmv(rdev, bo_va); - radeon_bo_unreserve(rdev->ring_tmp_bo.bo); + if (rdev->accel_working) { + r = radeon_bo_reserve(rdev->ring_tmp_bo.bo, false); + if (!r) { + bo_va = radeon_vm_bo_find(&fpriv->vm, + rdev->ring_tmp_bo.bo); + if (bo_va) + radeon_vm_bo_rmv(rdev, bo_va); + radeon_bo_unreserve(rdev->ring_tmp_bo.bo); + } } radeon_vm_fini(rdev, &fpriv->vm); @@ -708,11 +739,13 @@ /* Get associated drm_crtc: */ drmcrtc = &rdev->mode_info.crtcs[crtc]->base; + if (!drmcrtc) + return -EINVAL; /* Helper routine in DRM core does all the work: */ return drm_calc_vbltimestamp_from_scanoutpos(dev, crtc, max_error, vblank_time, flags, - drmcrtc); + drmcrtc, &drmcrtc->hwmode); } #define KMS_INVALID_IOCTL(name) \ --- linux-3.13.0.orig/drivers/gpu/drm/radeon/radeon_legacy_encoders.c +++ linux-3.13.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-3.13.0.orig/drivers/gpu/drm/radeon/radeon_mode.h +++ linux-3.13.0/drivers/gpu/drm/radeon/radeon_mode.h @@ -766,6 +766,7 @@ int x, int y); extern int radeon_get_crtc_scanoutpos(struct drm_device *dev, int crtc, + unsigned int flags, int *vpos, int *hpos, ktime_t *stime, ktime_t *etime); --- linux-3.13.0.orig/drivers/gpu/drm/radeon/radeon_object.c +++ linux-3.13.0/drivers/gpu/drm/radeon/radeon_object.c @@ -586,22 +586,30 @@ rbo = container_of(bo, struct radeon_bo, tbo); radeon_bo_check_tiling(rbo, 0, 0); rdev = rbo->rdev; - if (bo->mem.mem_type == TTM_PL_VRAM) { - size = bo->mem.num_pages << PAGE_SHIFT; - offset = bo->mem.start << PAGE_SHIFT; - if ((offset + size) > rdev->mc.visible_vram_size) { - /* hurrah the memory is not visible ! */ - radeon_ttm_placement_from_domain(rbo, RADEON_GEM_DOMAIN_VRAM); - rbo->placement.lpfn = rdev->mc.visible_vram_size >> PAGE_SHIFT; - r = ttm_bo_validate(bo, &rbo->placement, false, false); - if (unlikely(r != 0)) - return r; - offset = bo->mem.start << PAGE_SHIFT; - /* this should not happen */ - if ((offset + size) > rdev->mc.visible_vram_size) - return -EINVAL; - } + if (bo->mem.mem_type != TTM_PL_VRAM) + return 0; + + size = bo->mem.num_pages << PAGE_SHIFT; + offset = bo->mem.start << PAGE_SHIFT; + if ((offset + size) <= rdev->mc.visible_vram_size) + return 0; + + /* hurrah the memory is not visible ! */ + radeon_ttm_placement_from_domain(rbo, RADEON_GEM_DOMAIN_VRAM); + rbo->placement.lpfn = rdev->mc.visible_vram_size >> PAGE_SHIFT; + r = ttm_bo_validate(bo, &rbo->placement, false, false); + if (unlikely(r == -ENOMEM)) { + radeon_ttm_placement_from_domain(rbo, RADEON_GEM_DOMAIN_GTT); + return ttm_bo_validate(bo, &rbo->placement, false, false); + } else if (unlikely(r != 0)) { + return r; } + + offset = bo->mem.start << PAGE_SHIFT; + /* this should never happen */ + if ((offset + size) > rdev->mc.visible_vram_size) + return -EINVAL; + return 0; } --- linux-3.13.0.orig/drivers/gpu/drm/radeon/radeon_pm.c +++ linux-3.13.0/drivers/gpu/drm/radeon/radeon_pm.c @@ -361,6 +361,11 @@ struct drm_device *ddev = dev_get_drvdata(dev); struct radeon_device *rdev = ddev->dev_private; + /* Can't set profile when the card is off */ + if ((rdev->flags & RADEON_IS_PX) && + (ddev->switch_power_state != DRM_SWITCH_POWER_ON)) + return -EINVAL; + mutex_lock(&rdev->pm.mutex); if (rdev->pm.pm_method == PM_METHOD_PROFILE) { if (strncmp("default", buf, strlen("default")) == 0) @@ -409,6 +414,13 @@ struct drm_device *ddev = dev_get_drvdata(dev); struct radeon_device *rdev = ddev->dev_private; + /* Can't set method when the card is off */ + if ((rdev->flags & RADEON_IS_PX) && + (ddev->switch_power_state != DRM_SWITCH_POWER_ON)) { + count = -EINVAL; + goto fail; + } + /* we don't support the legacy modes with dpm */ if (rdev->pm.pm_method == PM_METHOD_DPM) { count = -EINVAL; @@ -472,7 +484,12 @@ goto fail; } mutex_unlock(&rdev->pm.mutex); - radeon_pm_compute_clocks(rdev); + + /* Can't set dpm state when the card is off */ + if (!(rdev->flags & RADEON_IS_PX) || + (ddev->switch_power_state == DRM_SWITCH_POWER_ON)) + radeon_pm_compute_clocks(rdev); + fail: return count; } @@ -485,6 +502,10 @@ struct radeon_device *rdev = ddev->dev_private; enum radeon_dpm_forced_level level = rdev->pm.dpm.forced_level; + if ((rdev->flags & RADEON_IS_PX) && + (ddev->switch_power_state != DRM_SWITCH_POWER_ON)) + return snprintf(buf, PAGE_SIZE, "off\n"); + return snprintf(buf, PAGE_SIZE, "%s\n", (level == RADEON_DPM_FORCED_LEVEL_AUTO) ? "auto" : (level == RADEON_DPM_FORCED_LEVEL_LOW) ? "low" : "high"); @@ -500,6 +521,11 @@ enum radeon_dpm_forced_level level; int ret = 0; + /* Can't force performance level when the card is off */ + if ((rdev->flags & RADEON_IS_PX) && + (ddev->switch_power_state != DRM_SWITCH_POWER_ON)) + return -EINVAL; + mutex_lock(&rdev->pm.mutex); if (strncmp("low", buf, strlen("low")) == 0) { level = RADEON_DPM_FORCED_LEVEL_LOW; @@ -538,8 +564,14 @@ char *buf) { struct radeon_device *rdev = dev_get_drvdata(dev); + struct drm_device *ddev = rdev->ddev; int temp; + /* Can't get temperature when the card is off */ + if ((rdev->flags & RADEON_IS_PX) && + (ddev->switch_power_state != DRM_SWITCH_POWER_ON)) + return -EINVAL; + if (rdev->asic->pm.get_temperature) temp = radeon_get_temperature(rdev); else @@ -603,7 +635,6 @@ static int radeon_hwmon_init(struct radeon_device *rdev) { int err = 0; - struct device *hwmon_dev; switch (rdev->pm.int_thermal_type) { case THERMAL_TYPE_RV6XX: @@ -616,11 +647,11 @@ case THERMAL_TYPE_KV: if (rdev->asic->pm.get_temperature == NULL) return err; - hwmon_dev = hwmon_device_register_with_groups(rdev->dev, - "radeon", rdev, - hwmon_groups); - if (IS_ERR(hwmon_dev)) { - err = PTR_ERR(hwmon_dev); + rdev->pm.int_hwmon_dev = hwmon_device_register_with_groups(rdev->dev, + "radeon", rdev, + hwmon_groups); + if (IS_ERR(rdev->pm.int_hwmon_dev)) { + err = PTR_ERR(rdev->pm.int_hwmon_dev); dev_err(rdev->dev, "Unable to register hwmon device: %d\n", err); } @@ -632,6 +663,12 @@ return err; } +static void radeon_hwmon_fini(struct radeon_device *rdev) +{ + if (rdev->pm.int_hwmon_dev) + hwmon_device_unregister(rdev->pm.int_hwmon_dev); +} + static void radeon_dpm_thermal_work_handler(struct work_struct *work) { struct radeon_device *rdev = @@ -881,9 +918,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; - /* wait for the rings to drain */ for (i = 0; i < RADEON_NUM_RINGS; i++) { struct radeon_ring *ring = &rdev->ring[i]; @@ -899,6 +933,9 @@ 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; + if (rdev->asic->dpm.force_performance_level) { if (rdev->pm.dpm.thermal_active) { enum radeon_dpm_forced_level level = rdev->pm.dpm.forced_level; @@ -1010,8 +1047,10 @@ rdev->pm.current_clock_mode_index = 0; rdev->pm.current_sclk = rdev->pm.default_sclk; rdev->pm.current_mclk = rdev->pm.default_mclk; - rdev->pm.current_vddc = rdev->pm.power_state[rdev->pm.default_power_state_index].clock_info[0].voltage.voltage; - rdev->pm.current_vddci = rdev->pm.power_state[rdev->pm.default_power_state_index].clock_info[0].voltage.vddci; + if (rdev->pm.power_state) { + rdev->pm.current_vddc = rdev->pm.power_state[rdev->pm.default_power_state_index].clock_info[0].voltage.voltage; + rdev->pm.current_vddci = rdev->pm.power_state[rdev->pm.default_power_state_index].clock_info[0].voltage.vddci; + } if (rdev->pm.pm_method == PM_METHOD_DYNPM && rdev->pm.dynpm_state == DYNPM_STATE_SUSPENDED) { rdev->pm.dynpm_state = DYNPM_STATE_ACTIVE; @@ -1050,7 +1089,6 @@ } } else { rdev->pm.dpm_enabled = true; - radeon_pm_compute_clocks(rdev); } } @@ -1217,8 +1255,39 @@ return 0; } +struct radeon_dpm_quirk { + u32 chip_vendor; + u32 chip_device; + u32 subsys_vendor; + u32 subsys_device; +}; + +/* cards with dpm stability problems */ +static struct radeon_dpm_quirk radeon_dpm_quirk_list[] = { + /* TURKS - https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1386534 */ + { PCI_VENDOR_ID_ATI, 0x6759, 0x1682, 0x3195 }, + /* TURKS - https://bugzilla.kernel.org/show_bug.cgi?id=83731 */ + { PCI_VENDOR_ID_ATI, 0x6840, 0x1179, 0xfb81 }, + { 0, 0, 0, 0 }, +}; + int radeon_pm_init(struct radeon_device *rdev) { + struct radeon_dpm_quirk *p = radeon_dpm_quirk_list; + bool disable_dpm = false; + + /* Apply dpm quirks */ + while (p && p->chip_device != 0) { + if (rdev->pdev->vendor == p->chip_vendor && + rdev->pdev->device == p->chip_device && + rdev->pdev->subsystem_vendor == p->subsys_vendor && + rdev->pdev->subsystem_device == p->subsys_device) { + disable_dpm = true; + break; + } + ++p; + } + /* enable dpm on rv6xx+ */ switch (rdev->family) { case CHIP_RV610: @@ -1228,7 +1297,7 @@ case CHIP_RV670: case CHIP_RS780: case CHIP_RS880: - case CHIP_CAYMAN: + case CHIP_RV770: case CHIP_BONAIRE: case CHIP_KABINI: case CHIP_KAVERI: @@ -1245,7 +1314,6 @@ else rdev->pm.pm_method = PM_METHOD_PROFILE; break; - case CHIP_RV770: case CHIP_RV730: case CHIP_RV710: case CHIP_RV740: @@ -1260,6 +1328,7 @@ case CHIP_BARTS: case CHIP_TURKS: case CHIP_CAICOS: + case CHIP_CAYMAN: case CHIP_ARUBA: case CHIP_TAHITI: case CHIP_PITCAIRN: @@ -1273,6 +1342,8 @@ (!(rdev->flags & RADEON_IS_IGP)) && (!rdev->smc_fw)) rdev->pm.pm_method = PM_METHOD_PROFILE; + else if (disable_dpm && (radeon_dpm == -1)) + rdev->pm.pm_method = PM_METHOD_PROFILE; else if (radeon_dpm == 0) rdev->pm.pm_method = PM_METHOD_PROFILE; else @@ -1312,6 +1383,8 @@ device_remove_file(rdev->dev, &dev_attr_power_method); } + radeon_hwmon_fini(rdev); + if (rdev->pm.power_state) kfree(rdev->pm.power_state); } @@ -1331,6 +1404,8 @@ } radeon_dpm_fini(rdev); + radeon_hwmon_fini(rdev); + if (rdev->pm.power_state) kfree(rdev->pm.power_state); } @@ -1356,12 +1431,14 @@ rdev->pm.active_crtcs = 0; rdev->pm.active_crtc_count = 0; - list_for_each_entry(crtc, - &ddev->mode_config.crtc_list, head) { - radeon_crtc = to_radeon_crtc(crtc); - if (radeon_crtc->enabled) { - rdev->pm.active_crtcs |= (1 << radeon_crtc->crtc_id); - rdev->pm.active_crtc_count++; + if (rdev->num_crtc && rdev->mode_info.mode_config_initialized) { + list_for_each_entry(crtc, + &ddev->mode_config.crtc_list, head) { + radeon_crtc = to_radeon_crtc(crtc); + if (radeon_crtc->enabled) { + rdev->pm.active_crtcs |= (1 << radeon_crtc->crtc_id); + rdev->pm.active_crtc_count++; + } } } @@ -1425,12 +1502,14 @@ /* update active crtc counts */ rdev->pm.dpm.new_active_crtcs = 0; rdev->pm.dpm.new_active_crtc_count = 0; - list_for_each_entry(crtc, - &ddev->mode_config.crtc_list, head) { - radeon_crtc = to_radeon_crtc(crtc); - if (crtc->enabled) { - rdev->pm.dpm.new_active_crtcs |= (1 << radeon_crtc->crtc_id); - rdev->pm.dpm.new_active_crtc_count++; + if (rdev->num_crtc && rdev->mode_info.mode_config_initialized) { + list_for_each_entry(crtc, + &ddev->mode_config.crtc_list, head) { + radeon_crtc = to_radeon_crtc(crtc); + if (crtc->enabled) { + rdev->pm.dpm.new_active_crtcs |= (1 << radeon_crtc->crtc_id); + rdev->pm.dpm.new_active_crtc_count++; + } } } @@ -1464,7 +1543,7 @@ */ for (crtc = 0; (crtc < rdev->num_crtc) && in_vbl; crtc++) { if (rdev->pm.active_crtcs & (1 << crtc)) { - vbl_status = radeon_get_crtc_scanoutpos(rdev->ddev, crtc, &vpos, &hpos, NULL, NULL); + vbl_status = radeon_get_crtc_scanoutpos(rdev->ddev, crtc, 0, &vpos, &hpos, NULL, NULL); if ((vbl_status & DRM_SCANOUTPOS_VALID) && !(vbl_status & DRM_SCANOUTPOS_INVBL)) in_vbl = false; @@ -1556,8 +1635,12 @@ struct drm_info_node *node = (struct drm_info_node *) m->private; struct drm_device *dev = node->minor->dev; struct radeon_device *rdev = dev->dev_private; + struct drm_device *ddev = rdev->ddev; - if (rdev->pm.dpm_enabled) { + if ((rdev->flags & RADEON_IS_PX) && + (ddev->switch_power_state != DRM_SWITCH_POWER_ON)) { + seq_printf(m, "PX asic powered off\n"); + } else if (rdev->pm.dpm_enabled) { mutex_lock(&rdev->pm.mutex); if (rdev->asic->dpm.debugfs_print_current_performance_level) radeon_dpm_debugfs_print_current_performance_level(rdev, m); --- linux-3.13.0.orig/drivers/gpu/drm/radeon/radeon_ring.c +++ linux-3.13.0/drivers/gpu/drm/radeon/radeon_ring.c @@ -139,7 +139,7 @@ } /* 64 dwords should be enough for fence too */ - r = radeon_ring_lock(rdev, ring, 64 + RADEON_NUM_RINGS * 8); + r = radeon_ring_lock(rdev, ring, 64 + RADEON_NUM_SYNCS * 8); if (r) { dev_err(rdev->dev, "scheduling IB failed (%d).\n", r); return r; @@ -257,6 +257,7 @@ r = radeon_ib_test(rdev, i, ring); if (r) { ring->ready = false; + rdev->needs_reset = false; if (i == RADEON_RING_TYPE_GFX_INDEX) { /* oh, oh, that's really bad */ --- linux-3.13.0.orig/drivers/gpu/drm/radeon/radeon_semaphore.c +++ linux-3.13.0/drivers/gpu/drm/radeon/radeon_semaphore.c @@ -34,14 +34,15 @@ int radeon_semaphore_create(struct radeon_device *rdev, struct radeon_semaphore **semaphore) { + uint64_t *cpu_addr; int i, r; *semaphore = kmalloc(sizeof(struct radeon_semaphore), GFP_KERNEL); if (*semaphore == NULL) { return -ENOMEM; } - r = radeon_sa_bo_new(rdev, &rdev->ring_tmp_bo, - &(*semaphore)->sa_bo, 8, 8, true); + r = radeon_sa_bo_new(rdev, &rdev->ring_tmp_bo, &(*semaphore)->sa_bo, + 8 * RADEON_NUM_SYNCS, 8, true); if (r) { kfree(*semaphore); *semaphore = NULL; @@ -49,7 +50,10 @@ } (*semaphore)->waiters = 0; (*semaphore)->gpu_addr = radeon_sa_bo_gpu_addr((*semaphore)->sa_bo); - *((uint64_t*)radeon_sa_bo_cpu_addr((*semaphore)->sa_bo)) = 0; + + cpu_addr = radeon_sa_bo_cpu_addr((*semaphore)->sa_bo); + for (i = 0; i < RADEON_NUM_SYNCS; ++i) + cpu_addr[i] = 0; for (i = 0; i < RADEON_NUM_RINGS; ++i) (*semaphore)->sync_to[i] = NULL; @@ -125,6 +129,7 @@ struct radeon_semaphore *semaphore, int ring) { + unsigned count = 0; int i, r; for (i = 0; i < RADEON_NUM_RINGS; ++i) { @@ -140,6 +145,12 @@ return -EINVAL; } + if (++count > RADEON_NUM_SYNCS) { + /* not enough room, wait manually */ + radeon_fence_wait_locked(fence); + continue; + } + /* allocate enough space for sync command */ r = radeon_ring_alloc(rdev, &rdev->ring[i], 16); if (r) { @@ -164,6 +175,8 @@ radeon_ring_commit(rdev, &rdev->ring[i]); radeon_fence_note_sync(fence, ring); + + semaphore->gpu_addr += 8; } return 0; --- linux-3.13.0.orig/drivers/gpu/drm/radeon/radeon_ttm.c +++ linux-3.13.0/drivers/gpu/drm/radeon/radeon_ttm.c @@ -189,7 +189,7 @@ rbo = container_of(bo, struct radeon_bo, tbo); switch (bo->mem.mem_type) { case TTM_PL_VRAM: - if (rbo->rdev->ring[RADEON_RING_TYPE_GFX_INDEX].ready == false) + if (rbo->rdev->ring[radeon_copy_ring_index(rbo->rdev)].ready == false) radeon_ttm_placement_from_domain(rbo, RADEON_GEM_DOMAIN_CPU); else radeon_ttm_placement_from_domain(rbo, RADEON_GEM_DOMAIN_GTT); @@ -621,7 +621,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; @@ -712,6 +712,9 @@ DRM_ERROR("Failed initializing VRAM heap.\n"); return r; } + /* Change the size here instead of the init above so only lpfn is affected */ + radeon_ttm_set_active_vram_size(rdev, rdev->mc.visible_vram_size); + r = radeon_bo_create(rdev, 256 * 1024, PAGE_SIZE, true, RADEON_GEM_DOMAIN_VRAM, NULL, &rdev->stollen_vga_memory); --- linux-3.13.0.orig/drivers/gpu/drm/radeon/radeon_ucode.h +++ linux-3.13.0/drivers/gpu/drm/radeon/radeon_ucode.h @@ -57,9 +57,14 @@ #define BTC_MC_UCODE_SIZE 6024 #define CAYMAN_MC_UCODE_SIZE 6037 #define SI_MC_UCODE_SIZE 7769 +#define TAHITI_MC_UCODE_SIZE 7808 +#define PITCAIRN_MC_UCODE_SIZE 7775 +#define VERDE_MC_UCODE_SIZE 7875 #define OLAND_MC_UCODE_SIZE 7863 -#define CIK_MC_UCODE_SIZE 7866 +#define BONAIRE_MC_UCODE_SIZE 7866 +#define BONAIRE_MC2_UCODE_SIZE 7948 #define HAWAII_MC_UCODE_SIZE 7933 +#define HAWAII_MC2_UCODE_SIZE 8091 /* SDMA */ #define CIK_SDMA_UCODE_SIZE 1050 --- linux-3.13.0.orig/drivers/gpu/drm/radeon/radeon_uvd.c +++ linux-3.13.0/drivers/gpu/drm/radeon/radeon_uvd.c @@ -91,6 +91,7 @@ case CHIP_VERDE: case CHIP_PITCAIRN: case CHIP_ARUBA: + case CHIP_OLAND: fw_name = FIRMWARE_TAHITI; break; @@ -170,6 +171,8 @@ radeon_bo_unref(&rdev->uvd.vcpu_bo); + radeon_ring_fini(rdev, &rdev->ring[R600_RING_TYPE_UVD_INDEX]); + release_firmware(rdev->uvd_fw); } @@ -347,6 +350,29 @@ return 0; } +static int radeon_uvd_validate_codec(struct radeon_cs_parser *p, + unsigned stream_type) +{ + switch (stream_type) { + case 0: /* H264 */ + case 1: /* VC1 */ + /* always supported */ + return 0; + + case 3: /* MPEG2 */ + case 4: /* MPEG4 */ + /* only since UVD 3 */ + if (p->rdev->family >= CHIP_PALM) + return 0; + + /* fall through */ + default: + DRM_ERROR("UVD codec not supported by hardware %d!\n", + stream_type); + return -EINVAL; + } +} + static int radeon_uvd_cs_msg(struct radeon_cs_parser *p, struct radeon_bo *bo, unsigned offset, unsigned buf_sizes[]) { @@ -385,50 +411,70 @@ return -EINVAL; } - if (msg_type == 1) { - /* it's a decode msg, calc buffer sizes */ - r = radeon_uvd_cs_msg_decode(msg, buf_sizes); - /* calc image size (width * height) */ - img_size = msg[6] * msg[7]; + switch (msg_type) { + case 0: + /* it's a create msg, calc image size (width * height) */ + img_size = msg[7] * msg[8]; + + r = radeon_uvd_validate_codec(p, msg[4]); + radeon_bo_kunmap(bo); + if (r) + return r; + + /* try to alloc a new handle */ + for (i = 0; i < RADEON_MAX_UVD_HANDLES; ++i) { + if (atomic_read(&p->rdev->uvd.handles[i]) == handle) { + DRM_ERROR("Handle 0x%x already in use!\n", handle); + return -EINVAL; + } + + if (!atomic_cmpxchg(&p->rdev->uvd.handles[i], 0, handle)) { + p->rdev->uvd.filp[i] = p->filp; + p->rdev->uvd.img_size[i] = img_size; + return 0; + } + } + + DRM_ERROR("No more free UVD handles!\n"); + return -EINVAL; + + case 1: + /* it's a decode msg, validate codec and calc buffer sizes */ + r = radeon_uvd_validate_codec(p, msg[4]); + if (!r) + r = radeon_uvd_cs_msg_decode(msg, buf_sizes); radeon_bo_kunmap(bo); if (r) return r; - } else if (msg_type == 2) { + /* validate the handle */ + for (i = 0; i < RADEON_MAX_UVD_HANDLES; ++i) { + if (atomic_read(&p->rdev->uvd.handles[i]) == handle) { + if (p->rdev->uvd.filp[i] != p->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 < RADEON_MAX_UVD_HANDLES; ++i) atomic_cmpxchg(&p->rdev->uvd.handles[i], handle, 0); radeon_bo_kunmap(bo); return 0; - } else { - /* it's a create msg, calc image size (width * height) */ - img_size = msg[7] * msg[8]; - radeon_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 < RADEON_MAX_UVD_HANDLES; ++i) { - if (atomic_read(&p->rdev->uvd.handles[i]) == handle) - return 0; - } + default: - /* handle not found try to alloc a new one */ - for (i = 0; i < RADEON_MAX_UVD_HANDLES; ++i) { - if (!atomic_cmpxchg(&p->rdev->uvd.handles[i], 0, handle)) { - p->rdev->uvd.filp[i] = p->filp; - p->rdev->uvd.img_size[i] = img_size; - return 0; - } + DRM_ERROR("Illegal UVD message type (%d)!\n", msg_type); + return -EINVAL; } - DRM_ERROR("No more free UVD handles!\n"); + BUG(); return -EINVAL; } @@ -462,6 +508,10 @@ cmd = radeon_get_ib_value(p, p->idx) >> 1; if (cmd < 0x4) { + if (end <= start) { + DRM_ERROR("invalid reloc offset %X!\n", offset); + return -EINVAL; + } if ((end - start) < buf_sizes[cmd]) { DRM_ERROR("buffer (%d) to small (%d / %d)!\n", cmd, (unsigned)(end - start), buf_sizes[cmd]); --- linux-3.13.0.orig/drivers/gpu/drm/radeon/rs600.c +++ linux-3.13.0/drivers/gpu/drm/radeon/rs600.c @@ -698,6 +698,10 @@ WREG32(R_007D18_DC_HOT_PLUG_DETECT2_INT_CONTROL, hpd2); if (ASIC_IS_DCE2(rdev)) WREG32(R_007408_HDMI0_AUDIO_PACKET_CONTROL, hdmi0); + + /* posting read */ + RREG32(R_000040_GEN_INT_CNTL); + return 0; } @@ -888,6 +892,9 @@ u32 d1mode_priority_a_cnt, d2mode_priority_a_cnt; /* FIXME: implement full support */ + if (!rdev->mode_info.mode_config_initialized) + return; + radeon_update_display_priority(rdev); if (rdev->mode_info.crtcs[0]->base.enabled) --- linux-3.13.0.orig/drivers/gpu/drm/radeon/rs690.c +++ linux-3.13.0/drivers/gpu/drm/radeon/rs690.c @@ -579,6 +579,9 @@ u32 d1mode_priority_a_cnt, d1mode_priority_b_cnt; u32 d2mode_priority_a_cnt, d2mode_priority_b_cnt; + if (!rdev->mode_info.mode_config_initialized) + return; + radeon_update_display_priority(rdev); if (rdev->mode_info.crtcs[0]->base.enabled) --- linux-3.13.0.orig/drivers/gpu/drm/radeon/rv515.c +++ linux-3.13.0/drivers/gpu/drm/radeon/rv515.c @@ -1271,6 +1271,9 @@ struct drm_display_mode *mode0 = NULL; struct drm_display_mode *mode1 = NULL; + if (!rdev->mode_info.mode_config_initialized) + return; + radeon_update_display_priority(rdev); if (rdev->mode_info.crtcs[0]->base.enabled) --- linux-3.13.0.orig/drivers/gpu/drm/radeon/rv730_dpm.c +++ linux-3.13.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-3.13.0.orig/drivers/gpu/drm/radeon/rv770.c +++ linux-3.13.0/drivers/gpu/drm/radeon/rv770.c @@ -1665,14 +1665,6 @@ rv770_mc_program(rdev); - if (!rdev->me_fw || !rdev->pfp_fw || !rdev->rlc_fw) { - r = r600_init_microcode(rdev); - if (r) { - DRM_ERROR("Failed to load firmware!\n"); - return r; - } - } - if (rdev->flags & RADEON_IS_AGP) { rv770_agp_enable(rdev); } else { @@ -1876,6 +1868,14 @@ if (r) return r; + if (!rdev->me_fw || !rdev->pfp_fw || !rdev->rlc_fw) { + r = r600_init_microcode(rdev); + if (r) { + DRM_ERROR("Failed to load firmware!\n"); + return r; + } + } + rdev->ring[RADEON_RING_TYPE_GFX_INDEX].ring_obj = NULL; r600_ring_init(rdev, &rdev->ring[RADEON_RING_TYPE_GFX_INDEX], 1024 * 1024); @@ -1921,9 +1921,9 @@ radeon_wb_fini(rdev); radeon_ib_pool_fini(rdev); radeon_irq_kms_fini(rdev); - rv770_pcie_gart_fini(rdev); uvd_v1_0_fini(rdev); radeon_uvd_fini(rdev); + rv770_pcie_gart_fini(rdev); r600_vram_scratch_fini(rdev); radeon_gem_fini(rdev); radeon_fence_driver_fini(rdev); --- linux-3.13.0.orig/drivers/gpu/drm/radeon/rv770_dpm.c +++ linux-3.13.0/drivers/gpu/drm/radeon/rv770_dpm.c @@ -192,7 +192,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); @@ -1415,7 +1415,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; } @@ -2328,12 +2328,6 @@ pi->mclk_ss = radeon_atombios_get_asic_ss_info(rdev, &ss, ASIC_INTERNAL_MEMORY_SS, 0); - /* disable ss, causes hangs on some cayman boards */ - if (rdev->family == CHIP_CAYMAN) { - pi->sclk_ss = false; - pi->mclk_ss = false; - } - if (pi->sclk_ss || pi->mclk_ss) pi->dynamic_ss = true; else @@ -2531,6 +2525,12 @@ (rdev->pdev->subsystem_device == 0x1c42)) switch_limit = 200; + /* RV770 */ + /* mclk switching doesn't seem to work reliably on desktop RV770s */ + if ((rdev->family == CHIP_RV770) && + !(rdev->flags & RADEON_IS_MOBILITY)) + switch_limit = 0xffffffff; /* disable mclk switching */ + if (vblank_time < switch_limit) return true; else --- linux-3.13.0.orig/drivers/gpu/drm/radeon/rv770d.h +++ linux-3.13.0/drivers/gpu/drm/radeon/rv770d.h @@ -982,6 +982,9 @@ ((n) & 0x3FFF) << 16) /* UVD */ +#define UVD_SEMA_ADDR_LOW 0xef00 +#define UVD_SEMA_ADDR_HIGH 0xef04 +#define UVD_SEMA_CMD 0xef08 #define UVD_GPCOM_VCPU_CMD 0xef0c #define UVD_GPCOM_VCPU_DATA0 0xef10 #define UVD_GPCOM_VCPU_DATA1 0xef14 --- linux-3.13.0.orig/drivers/gpu/drm/radeon/si.c +++ linux-3.13.0/drivers/gpu/drm/radeon/si.c @@ -39,30 +39,35 @@ MODULE_FIRMWARE("radeon/TAHITI_me.bin"); MODULE_FIRMWARE("radeon/TAHITI_ce.bin"); MODULE_FIRMWARE("radeon/TAHITI_mc.bin"); +MODULE_FIRMWARE("radeon/TAHITI_mc2.bin"); MODULE_FIRMWARE("radeon/TAHITI_rlc.bin"); MODULE_FIRMWARE("radeon/TAHITI_smc.bin"); MODULE_FIRMWARE("radeon/PITCAIRN_pfp.bin"); MODULE_FIRMWARE("radeon/PITCAIRN_me.bin"); MODULE_FIRMWARE("radeon/PITCAIRN_ce.bin"); MODULE_FIRMWARE("radeon/PITCAIRN_mc.bin"); +MODULE_FIRMWARE("radeon/PITCAIRN_mc2.bin"); MODULE_FIRMWARE("radeon/PITCAIRN_rlc.bin"); MODULE_FIRMWARE("radeon/PITCAIRN_smc.bin"); MODULE_FIRMWARE("radeon/VERDE_pfp.bin"); MODULE_FIRMWARE("radeon/VERDE_me.bin"); MODULE_FIRMWARE("radeon/VERDE_ce.bin"); MODULE_FIRMWARE("radeon/VERDE_mc.bin"); +MODULE_FIRMWARE("radeon/VERDE_mc2.bin"); MODULE_FIRMWARE("radeon/VERDE_rlc.bin"); MODULE_FIRMWARE("radeon/VERDE_smc.bin"); MODULE_FIRMWARE("radeon/OLAND_pfp.bin"); MODULE_FIRMWARE("radeon/OLAND_me.bin"); MODULE_FIRMWARE("radeon/OLAND_ce.bin"); MODULE_FIRMWARE("radeon/OLAND_mc.bin"); +MODULE_FIRMWARE("radeon/OLAND_mc2.bin"); MODULE_FIRMWARE("radeon/OLAND_rlc.bin"); MODULE_FIRMWARE("radeon/OLAND_smc.bin"); MODULE_FIRMWARE("radeon/HAINAN_pfp.bin"); MODULE_FIRMWARE("radeon/HAINAN_me.bin"); MODULE_FIRMWARE("radeon/HAINAN_ce.bin"); MODULE_FIRMWARE("radeon/HAINAN_mc.bin"); +MODULE_FIRMWARE("radeon/HAINAN_mc2.bin"); MODULE_FIRMWARE("radeon/HAINAN_rlc.bin"); MODULE_FIRMWARE("radeon/HAINAN_smc.bin"); @@ -1465,36 +1470,33 @@ const __be32 *fw_data; u32 running, blackout = 0; u32 *io_mc_regs; - int i, ucode_size, regs_size; + int i, regs_size, ucode_size; if (!rdev->mc_fw) return -EINVAL; + ucode_size = rdev->mc_fw->size / 4; + switch (rdev->family) { case CHIP_TAHITI: io_mc_regs = (u32 *)&tahiti_io_mc_regs; - ucode_size = SI_MC_UCODE_SIZE; regs_size = TAHITI_IO_MC_REGS_SIZE; break; case CHIP_PITCAIRN: io_mc_regs = (u32 *)&pitcairn_io_mc_regs; - ucode_size = SI_MC_UCODE_SIZE; regs_size = TAHITI_IO_MC_REGS_SIZE; break; case CHIP_VERDE: default: io_mc_regs = (u32 *)&verde_io_mc_regs; - ucode_size = SI_MC_UCODE_SIZE; regs_size = TAHITI_IO_MC_REGS_SIZE; break; case CHIP_OLAND: io_mc_regs = (u32 *)&oland_io_mc_regs; - ucode_size = OLAND_MC_UCODE_SIZE; regs_size = TAHITI_IO_MC_REGS_SIZE; break; case CHIP_HAINAN: io_mc_regs = (u32 *)&hainan_io_mc_regs; - ucode_size = OLAND_MC_UCODE_SIZE; regs_size = TAHITI_IO_MC_REGS_SIZE; break; } @@ -1550,7 +1552,7 @@ const char *chip_name; const char *rlc_chip_name; size_t pfp_req_size, me_req_size, ce_req_size, rlc_req_size, mc_req_size; - size_t smc_req_size; + size_t smc_req_size, mc2_req_size; char fw_name[30]; int err; @@ -1565,6 +1567,7 @@ ce_req_size = SI_CE_UCODE_SIZE * 4; rlc_req_size = SI_RLC_UCODE_SIZE * 4; mc_req_size = SI_MC_UCODE_SIZE * 4; + mc2_req_size = TAHITI_MC_UCODE_SIZE * 4; smc_req_size = ALIGN(TAHITI_SMC_UCODE_SIZE, 4); break; case CHIP_PITCAIRN: @@ -1575,6 +1578,7 @@ ce_req_size = SI_CE_UCODE_SIZE * 4; rlc_req_size = SI_RLC_UCODE_SIZE * 4; mc_req_size = SI_MC_UCODE_SIZE * 4; + mc2_req_size = PITCAIRN_MC_UCODE_SIZE * 4; smc_req_size = ALIGN(PITCAIRN_SMC_UCODE_SIZE, 4); break; case CHIP_VERDE: @@ -1585,6 +1589,7 @@ ce_req_size = SI_CE_UCODE_SIZE * 4; rlc_req_size = SI_RLC_UCODE_SIZE * 4; mc_req_size = SI_MC_UCODE_SIZE * 4; + mc2_req_size = VERDE_MC_UCODE_SIZE * 4; smc_req_size = ALIGN(VERDE_SMC_UCODE_SIZE, 4); break; case CHIP_OLAND: @@ -1594,7 +1599,7 @@ me_req_size = SI_PM4_UCODE_SIZE * 4; ce_req_size = SI_CE_UCODE_SIZE * 4; rlc_req_size = SI_RLC_UCODE_SIZE * 4; - mc_req_size = OLAND_MC_UCODE_SIZE * 4; + mc_req_size = mc2_req_size = OLAND_MC_UCODE_SIZE * 4; smc_req_size = ALIGN(OLAND_SMC_UCODE_SIZE, 4); break; case CHIP_HAINAN: @@ -1604,7 +1609,7 @@ me_req_size = SI_PM4_UCODE_SIZE * 4; ce_req_size = SI_CE_UCODE_SIZE * 4; rlc_req_size = SI_RLC_UCODE_SIZE * 4; - mc_req_size = OLAND_MC_UCODE_SIZE * 4; + mc_req_size = mc2_req_size = OLAND_MC_UCODE_SIZE * 4; smc_req_size = ALIGN(HAINAN_SMC_UCODE_SIZE, 4); break; default: BUG(); @@ -1657,16 +1662,22 @@ err = -EINVAL; } - snprintf(fw_name, sizeof(fw_name), "radeon/%s_mc.bin", chip_name); + snprintf(fw_name, sizeof(fw_name), "radeon/%s_mc2.bin", chip_name); err = request_firmware(&rdev->mc_fw, fw_name, rdev->dev); - if (err) - goto out; - if (rdev->mc_fw->size != mc_req_size) { + if (err) { + snprintf(fw_name, sizeof(fw_name), "radeon/%s_mc.bin", chip_name); + err = request_firmware(&rdev->mc_fw, fw_name, rdev->dev); + if (err) + goto out; + } + if ((rdev->mc_fw->size != mc_req_size) && + (rdev->mc_fw->size != mc2_req_size)) { printk(KERN_ERR "si_mc: Bogus length %zu in firmware \"%s\"\n", rdev->mc_fw->size, fw_name); err = -EINVAL; } + DRM_INFO("%s: %zu bytes\n", fw_name, rdev->mc_fw->size); snprintf(fw_name, sizeof(fw_name), "radeon/%s_smc.bin", chip_name); err = request_firmware(&rdev->smc_fw, fw_name, rdev->dev); @@ -2214,6 +2225,9 @@ u32 num_heads = 0, lb_size; int i; + if (!rdev->mode_info.mode_config_initialized) + return; + radeon_update_display_priority(rdev); for (i = 0; i < rdev->num_crtc; i++) { @@ -3957,7 +3971,7 @@ /* empty context1-15 */ /* set vm size, must be a multiple of 4 */ WREG32(VM_CONTEXT1_PAGE_TABLE_START_ADDR, 0); - WREG32(VM_CONTEXT1_PAGE_TABLE_END_ADDR, rdev->vm_manager.max_pfn); + WREG32(VM_CONTEXT1_PAGE_TABLE_END_ADDR, rdev->vm_manager.max_pfn - 1); /* Assign the pt base to something valid for now; the pts used for * the VMs are determined by the application and setup and assigned * on the fly in the vm part of radeon_gart.c @@ -4686,7 +4700,7 @@ /* write new base address */ radeon_ring_write(ring, PACKET3(PACKET3_WRITE_DATA, 3)); - radeon_ring_write(ring, (WRITE_DATA_ENGINE_SEL(0) | + radeon_ring_write(ring, (WRITE_DATA_ENGINE_SEL(1) | WRITE_DATA_DST_SEL(0))); if (vm->id < 8) { @@ -4715,6 +4729,16 @@ radeon_ring_write(ring, 0); radeon_ring_write(ring, 1 << vm->id); + /* wait for the invalidate to complete */ + radeon_ring_write(ring, PACKET3(PACKET3_WAIT_REG_MEM, 5)); + radeon_ring_write(ring, (WAIT_REG_MEM_FUNCTION(0) | /* always */ + WAIT_REG_MEM_ENGINE(0))); /* me */ + radeon_ring_write(ring, VM_INVALIDATE_REQUEST >> 2); + radeon_ring_write(ring, 0); + radeon_ring_write(ring, 0); /* ref */ + radeon_ring_write(ring, 0); /* mask */ + radeon_ring_write(ring, 0x20); /* poll interval */ + /* sync PFP to ME, otherwise we might get invalid PFP reads */ radeon_ring_write(ring, PACKET3(PACKET3_PFP_SYNC_ME, 0)); radeon_ring_write(ring, 0x0); @@ -5566,7 +5590,7 @@ } if (!ASIC_IS_NODCE(rdev)) { - WREG32(DACA_AUTODETECT_INT_CONTROL, 0); + WREG32(DAC_AUTODETECT_INT_CONTROL, 0); tmp = RREG32(DC_HPD1_INT_CONTROL) & DC_HPDx_INT_POLARITY; WREG32(DC_HPD1_INT_CONTROL, tmp); @@ -5661,7 +5685,6 @@ u32 crtc1 = 0, crtc2 = 0, crtc3 = 0, crtc4 = 0, crtc5 = 0, crtc6 = 0; u32 hpd1 = 0, hpd2 = 0, hpd3 = 0, hpd4 = 0, hpd5 = 0, hpd6 = 0; u32 grbm_int_cntl = 0; - u32 grph1 = 0, grph2 = 0, grph3 = 0, grph4 = 0, grph5 = 0, grph6 = 0; u32 dma_cntl, dma_cntl1; u32 thermal_int = 0; @@ -5800,16 +5823,22 @@ } if (rdev->num_crtc >= 2) { - WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC0_REGISTER_OFFSET, grph1); - WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC1_REGISTER_OFFSET, grph2); + WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC0_REGISTER_OFFSET, + GRPH_PFLIP_INT_MASK); + WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC1_REGISTER_OFFSET, + GRPH_PFLIP_INT_MASK); } if (rdev->num_crtc >= 4) { - WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC2_REGISTER_OFFSET, grph3); - WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC3_REGISTER_OFFSET, grph4); + WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC2_REGISTER_OFFSET, + GRPH_PFLIP_INT_MASK); + WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC3_REGISTER_OFFSET, + GRPH_PFLIP_INT_MASK); } if (rdev->num_crtc >= 6) { - WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC4_REGISTER_OFFSET, grph5); - WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC5_REGISTER_OFFSET, grph6); + WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC4_REGISTER_OFFSET, + GRPH_PFLIP_INT_MASK); + WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC5_REGISTER_OFFSET, + GRPH_PFLIP_INT_MASK); } if (!ASIC_IS_NODCE(rdev)) { @@ -5823,6 +5852,9 @@ WREG32(CG_THERMAL_INT, thermal_int); + /* posting read */ + RREG32(SRBM_STATUS); + return 0; } @@ -5966,6 +5998,7 @@ tmp = RREG32(IH_RB_CNTL); tmp |= IH_WPTR_OVERFLOW_CLEAR; WREG32(IH_RB_CNTL, tmp); + wptr &= ~RB_OVERFLOW; } return (wptr & rdev->ih.ptr_mask); } @@ -6173,6 +6206,15 @@ break; } break; + case 8: /* D1 page flip */ + case 10: /* D2 page flip */ + case 12: /* D3 page flip */ + case 14: /* D4 page flip */ + case 16: /* D5 page flip */ + case 18: /* D6 page flip */ + DRM_DEBUG("IH: D%d flip\n", ((src_id - 8) >> 1) + 1); + radeon_crtc_handle_flip(rdev, (src_id - 8) >> 1); + break; case 42: /* HPD hotplug */ switch (src_data) { case 0: @@ -6222,6 +6264,10 @@ break; } break; + case 124: /* UVD */ + DRM_DEBUG("IH: UVD int: 0x%08x\n", src_data); + radeon_fence_process(rdev, R600_RING_TYPE_UVD_INDEX); + break; case 146: case 147: addr = RREG32(VM_CONTEXT1_PROTECTION_FAULT_ADDR); @@ -6324,15 +6370,6 @@ si_mc_program(rdev); - if (!rdev->me_fw || !rdev->pfp_fw || !rdev->ce_fw || - !rdev->rlc_fw || !rdev->mc_fw) { - r = si_init_microcode(rdev); - if (r) { - DRM_ERROR("Failed to load firmware!\n"); - return r; - } - } - r = si_mc_load_microcode(rdev); if (r) { DRM_ERROR("Failed to load MC firmware!\n"); @@ -6600,6 +6637,15 @@ if (r) return r; + if (!rdev->me_fw || !rdev->pfp_fw || !rdev->ce_fw || + !rdev->rlc_fw || !rdev->mc_fw) { + r = si_init_microcode(rdev); + if (r) { + DRM_ERROR("Failed to load firmware!\n"); + return r; + } + } + ring = &rdev->ring[RADEON_RING_TYPE_GFX_INDEX]; ring->ring_obj = NULL; r600_ring_init(rdev, ring, 1024 * 1024); @@ -6724,8 +6770,7 @@ WREG32_P(CG_UPLL_FUNC_CNTL, UPLL_BYPASS_EN_MASK, ~UPLL_BYPASS_EN_MASK); if (!vclk || !dclk) { - /* keep the Bypass mode, put PLL to sleep */ - WREG32_P(CG_UPLL_FUNC_CNTL, UPLL_SLEEP_MASK, ~UPLL_SLEEP_MASK); + /* keep the Bypass mode */ return 0; } @@ -6741,8 +6786,7 @@ /* set VCO_MODE to 1 */ WREG32_P(CG_UPLL_FUNC_CNTL, UPLL_VCO_MODE_MASK, ~UPLL_VCO_MODE_MASK); - /* toggle UPLL_SLEEP to 1 then back to 0 */ - WREG32_P(CG_UPLL_FUNC_CNTL, UPLL_SLEEP_MASK, ~UPLL_SLEEP_MASK); + /* disable sleep mode */ WREG32_P(CG_UPLL_FUNC_CNTL, 0, ~UPLL_SLEEP_MASK); /* deassert UPLL_RESET */ --- linux-3.13.0.orig/drivers/gpu/drm/radeon/si_dma.c +++ linux-3.13.0/drivers/gpu/drm/radeon/si_dma.c @@ -153,6 +153,14 @@ radeon_ring_write(ring, DMA_PACKET(DMA_PACKET_SRBM_WRITE, 0, 0, 0, 0)); radeon_ring_write(ring, (0xf << 16) | (VM_INVALIDATE_REQUEST >> 2)); radeon_ring_write(ring, 1 << vm->id); + + /* wait for invalidate to complete */ + radeon_ring_write(ring, DMA_PACKET(DMA_PACKET_POLL_REG_MEM, 0, 0, 0, 0)); + radeon_ring_write(ring, VM_INVALIDATE_REQUEST); + radeon_ring_write(ring, 0xff << 16); /* retry */ + radeon_ring_write(ring, 1 << vm->id); /* mask */ + radeon_ring_write(ring, 0); /* value */ + radeon_ring_write(ring, (0 << 28) | 0x20); /* func(always) | poll interval */ } /** --- linux-3.13.0.orig/drivers/gpu/drm/radeon/si_dpm.c +++ linux-3.13.0/drivers/gpu/drm/radeon/si_dpm.c @@ -2396,7 +2396,7 @@ if (SISLANDS_DPM2_SQ_RAMP_STI_SIZE > (STI_SIZE_MASK >> STI_SIZE_SHIFT)) enable_sq_ramping = false; - if (NISLANDS_DPM2_SQ_RAMP_LTI_RATIO <= (LTI_RATIO_MASK >> LTI_RATIO_SHIFT)) + if (SISLANDS_DPM2_SQ_RAMP_LTI_RATIO > (LTI_RATIO_MASK >> LTI_RATIO_SHIFT)) enable_sq_ramping = false; for (i = 0; i < state->performance_level_count; i++) { @@ -2901,6 +2901,28 @@ return ret; } +struct si_dpm_quirk { + u32 chip_vendor; + u32 chip_device; + u32 subsys_vendor; + u32 subsys_device; + u32 max_sclk; + u32 max_mclk; +}; + +/* cards with dpm stability problems */ +static struct si_dpm_quirk si_dpm_quirk_list[] = { + /* 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 }, +}; + static void si_apply_state_adjust_rules(struct radeon_device *rdev, struct radeon_ps *rps) { @@ -2911,7 +2933,22 @@ u32 mclk, sclk; u16 vddc, vddci; u32 max_sclk_vddc, max_mclk_vddci, max_mclk_vddc; + u32 max_sclk = 0, max_mclk = 0; int i; + struct si_dpm_quirk *p = si_dpm_quirk_list; + + /* Apply dpm quirks */ + while (p && p->chip_device != 0) { + if (rdev->pdev->vendor == p->chip_vendor && + rdev->pdev->device == p->chip_device && + rdev->pdev->subsystem_vendor == p->subsys_vendor && + rdev->pdev->subsystem_device == p->subsys_device) { + max_sclk = p->max_sclk; + max_mclk = p->max_mclk; + break; + } + ++p; + } if ((rdev->pm.dpm.new_active_crtc_count > 1) || ni_dpm_vblank_too_short(rdev)) @@ -2965,6 +3002,14 @@ if (ps->performance_levels[i].mclk > max_mclk_vddc) ps->performance_levels[i].mclk = max_mclk_vddc; } + if (max_mclk) { + if (ps->performance_levels[i].mclk > max_mclk) + ps->performance_levels[i].mclk = max_mclk; + } + if (max_sclk) { + if (ps->performance_levels[i].sclk > max_sclk) + ps->performance_levels[i].sclk = max_sclk; + } } /* XXX validate the min clocks required for display */ @@ -3591,10 +3636,9 @@ /* Setting this to false forces the performance state to low if the crtcs are disabled. * This can be a problem on PowerXpress systems or if you want to use the card - * for offscreen rendering or compute if there are no crtcs enabled. Set it to - * true for now so that performance scales even if the displays are off. + * for offscreen rendering or compute if there are no crtcs enabled. */ - si_notify_smc_display_change(rdev, true /*rdev->pm.dpm.new_active_crtc_count > 0*/); + si_notify_smc_display_change(rdev, rdev->pm.dpm.new_active_crtc_count > 0); } static void si_enable_spread_spectrum(struct radeon_device *rdev, bool enable) @@ -5414,7 +5458,7 @@ for (i = 0, j = 0; j < si_pi->mc_reg_table.last; j++) { if (si_pi->mc_reg_table.valid_flag & (1 << j)) { - if (i >= SMC_NISLANDS_MC_REGISTER_ARRAY_SIZE) + if (i >= SMC_SISLANDS_MC_REGISTER_ARRAY_SIZE) break; mc_reg_table->address[i].s0 = cpu_to_be16(si_pi->mc_reg_table.mc_reg_address[j].s0); @@ -6225,7 +6269,7 @@ if ((rps->class2 & ATOM_PPLIB_CLASSIFICATION2_ULV) && index == 0) { /* XXX disable for A0 tahiti */ - si_pi->ulv.supported = true; + si_pi->ulv.supported = false; si_pi->ulv.pl = *pl; si_pi->ulv.one_pcie_lane_in_ulv = false; si_pi->ulv.volt_change_delay = SISLANDS_ULVVOLTAGECHANGEDELAY_DFLT; --- linux-3.13.0.orig/drivers/gpu/drm/radeon/sid.h +++ linux-3.13.0/drivers/gpu/drm/radeon/sid.h @@ -102,8 +102,8 @@ #define CG_SPLL_FUNC_CNTL_4 0x60c #define SPLL_CNTL_MODE 0x618 -# define SPLL_REFCLK_SEL(x) ((x) << 8) -# define SPLL_REFCLK_SEL_MASK 0xFF00 +# define SPLL_REFCLK_SEL(x) ((x) << 26) +# define SPLL_REFCLK_SEL_MASK (3 << 26) #define CG_SPLL_SPREAD_SPECTRUM 0x620 #define SSEN (1 << 0) @@ -815,7 +815,7 @@ # define GRPH_PFLIP_INT_MASK (1 << 0) # define GRPH_PFLIP_INT_TYPE (1 << 8) -#define DACA_AUTODETECT_INT_CONTROL 0x66c8 +#define DAC_AUTODETECT_INT_CONTROL 0x67c8 #define DC_HPD1_INT_STATUS 0x601c #define DC_HPD2_INT_STATUS 0x6028 @@ -1586,6 +1586,23 @@ #define PACKET3_MPEG_INDEX 0x3A #define PACKET3_COPY_DW 0x3B #define PACKET3_WAIT_REG_MEM 0x3C +#define WAIT_REG_MEM_FUNCTION(x) ((x) << 0) + /* 0 - always + * 1 - < + * 2 - <= + * 3 - == + * 4 - != + * 5 - >= + * 6 - > + */ +#define WAIT_REG_MEM_MEM_SPACE(x) ((x) << 4) + /* 0 - reg + * 1 - mem + */ +#define WAIT_REG_MEM_ENGINE(x) ((x) << 8) + /* 0 - me + * 1 - pfp + */ #define PACKET3_MEM_WRITE 0x3D #define PACKET3_COPY_DATA 0x40 #define PACKET3_CP_DMA 0x41 @@ -1789,6 +1806,7 @@ #define DMA_PACKET_TRAP 0x7 #define DMA_PACKET_SRBM_WRITE 0x9 #define DMA_PACKET_CONSTANT_FILL 0xd +#define DMA_PACKET_POLL_REG_MEM 0xe #define DMA_PACKET_NOP 0xf #endif --- linux-3.13.0.orig/drivers/gpu/drm/radeon/trinity_dpm.c +++ linux-3.13.0/drivers/gpu/drm/radeon/trinity_dpm.c @@ -1868,7 +1868,22 @@ for (i = 0; i < SUMO_MAX_HARDWARE_POWERLEVELS; i++) pi->at[i] = TRINITY_AT_DFLT; - pi->enable_bapm = false; + if (radeon_bapm == -1) { + /* There are stability issues reported on with + * bapm enabled when switching between AC and battery + * power. At the same time, some MSI boards hang + * if it's not enabled and dpm is enabled. Just enable + * it for MSI boards right now. + */ + if (rdev->pdev->subsystem_vendor == 0x1462) + pi->enable_bapm = true; + else + pi->enable_bapm = false; + } else if (radeon_bapm == 0) { + pi->enable_bapm = false; + } else { + pi->enable_bapm = true; + } pi->enable_nbps_policy = true; pi->enable_sclk_ds = true; pi->enable_gfx_power_gating = true; --- linux-3.13.0.orig/drivers/gpu/drm/radeon/uvd_v1_0.c +++ linux-3.13.0/drivers/gpu/drm/radeon/uvd_v1_0.c @@ -83,7 +83,10 @@ int r; /* raise clocks while booting up the VCPU */ - radeon_set_uvd_clocks(rdev, 53300, 40000); + if (rdev->family < CHIP_RV740) + radeon_set_uvd_clocks(rdev, 10000, 10000); + else + radeon_set_uvd_clocks(rdev, 53300, 40000); r = uvd_v1_0_start(rdev); if (r) @@ -362,18 +365,8 @@ struct radeon_semaphore *semaphore, bool emit_wait) { - uint64_t addr = semaphore->gpu_addr; - - radeon_ring_write(ring, PACKET0(UVD_SEMA_ADDR_LOW, 0)); - radeon_ring_write(ring, (addr >> 3) & 0x000FFFFF); - - radeon_ring_write(ring, PACKET0(UVD_SEMA_ADDR_HIGH, 0)); - radeon_ring_write(ring, (addr >> 23) & 0x000FFFFF); - - radeon_ring_write(ring, PACKET0(UVD_SEMA_CMD, 0)); - radeon_ring_write(ring, emit_wait ? 1 : 0); - - return true; + /* disable semaphores for UVD V1 hardware */ + return false; } /** @@ -407,7 +400,10 @@ struct radeon_fence *fence = NULL; int r; - r = radeon_set_uvd_clocks(rdev, 53300, 40000); + if (rdev->family < CHIP_RV740) + r = radeon_set_uvd_clocks(rdev, 10000, 10000); + else + r = radeon_set_uvd_clocks(rdev, 53300, 40000); if (r) { DRM_ERROR("radeon: failed to raise UVD clocks (%d).\n", r); return r; --- linux-3.13.0.orig/drivers/gpu/drm/radeon/uvd_v2_2.c +++ linux-3.13.0/drivers/gpu/drm/radeon/uvd_v2_2.c @@ -61,6 +61,35 @@ } /** + * uvd_v2_2_semaphore_emit - emit semaphore command + * + * @rdev: radeon_device pointer + * @ring: radeon_ring pointer + * @semaphore: semaphore to emit commands for + * @emit_wait: true if we should emit a wait command + * + * Emit a semaphore command (either wait or signal) to the UVD ring. + */ +bool uvd_v2_2_semaphore_emit(struct radeon_device *rdev, + struct radeon_ring *ring, + struct radeon_semaphore *semaphore, + bool emit_wait) +{ + uint64_t addr = semaphore->gpu_addr; + + radeon_ring_write(ring, PACKET0(UVD_SEMA_ADDR_LOW, 0)); + radeon_ring_write(ring, (addr >> 3) & 0x000FFFFF); + + radeon_ring_write(ring, PACKET0(UVD_SEMA_ADDR_HIGH, 0)); + radeon_ring_write(ring, (addr >> 23) & 0x000FFFFF); + + radeon_ring_write(ring, PACKET0(UVD_SEMA_CMD, 0)); + radeon_ring_write(ring, emit_wait ? 1 : 0); + + return true; +} + +/** * uvd_v2_2_resume - memory controller programming * * @rdev: radeon_device pointer @@ -153,6 +182,7 @@ chip_id = 0x01000015; break; case CHIP_PITCAIRN: + case CHIP_OLAND: chip_id = 0x01000016; break; case CHIP_ARUBA: --- linux-3.13.0.orig/drivers/gpu/drm/rcar-du/rcar_du_crtc.c +++ linux-3.13.0/drivers/gpu/drm/rcar-du/rcar_du_crtc.c @@ -371,7 +371,6 @@ goto error; rcrtc->plane->format = format; - rcrtc->plane->pitch = crtc->fb->pitches[0]; rcrtc->plane->src_x = x; rcrtc->plane->src_y = y; --- linux-3.13.0.orig/drivers/gpu/drm/rcar-du/rcar_du_plane.c +++ linux-3.13.0/drivers/gpu/drm/rcar-du/rcar_du_plane.c @@ -104,6 +104,15 @@ { struct rcar_du_group *rgrp = plane->group; unsigned int index = plane->hwindex; + u32 mwr; + + /* Memory pitch (expressed in pixels) */ + if (plane->format->planes == 2) + mwr = plane->pitch; + else + mwr = plane->pitch * 8 / plane->format->bpp; + + rcar_du_plane_write(rgrp, index, PnMWR, mwr); /* The Y position is expressed in raster line units and must be doubled * for 32bpp formats, according to the R8A7790 datasheet. No mention of @@ -133,6 +142,8 @@ { struct drm_gem_cma_object *gem; + plane->pitch = fb->pitches[0]; + gem = drm_fb_cma_get_gem_obj(fb, 0); plane->dma[0] = gem->paddr + fb->offsets[0]; @@ -209,7 +220,6 @@ struct rcar_du_group *rgrp = plane->group; u32 ddcr2 = PnDDCR2_CODE; u32 ddcr4; - u32 mwr; /* Data format * @@ -240,14 +250,6 @@ rcar_du_plane_write(rgrp, index, PnDDCR2, ddcr2); rcar_du_plane_write(rgrp, index, PnDDCR4, ddcr4); - /* Memory pitch (expressed in pixels) */ - if (plane->format->planes == 2) - mwr = plane->pitch; - else - mwr = plane->pitch * 8 / plane->format->bpp; - - rcar_du_plane_write(rgrp, index, PnMWR, mwr); - /* Destination position and size */ rcar_du_plane_write(rgrp, index, PnDSXR, plane->width); rcar_du_plane_write(rgrp, index, PnDSYR, plane->height); @@ -309,7 +311,6 @@ rplane->crtc = crtc; rplane->format = format; - rplane->pitch = fb->pitches[0]; rplane->src_x = src_x >> 16; rplane->src_y = src_y >> 16; --- linux-3.13.0.orig/drivers/gpu/drm/tegra/dc.c +++ linux-3.13.0/drivers/gpu/drm/tegra/dc.c @@ -1252,6 +1252,7 @@ { .compatible = "nvidia,tegra20-dc", }, { }, }; +MODULE_DEVICE_TABLE(of, tegra_dc_of_match); struct platform_driver tegra_dc_driver = { .driver = { --- linux-3.13.0.orig/drivers/gpu/drm/tegra/gr2d.c +++ linux-3.13.0/drivers/gpu/drm/tegra/gr2d.c @@ -129,6 +129,7 @@ { .compatible = "nvidia,tegra20-gr2d" }, { }, }; +MODULE_DEVICE_TABLE(of, gr2d_match); static const u32 gr2d_addr_regs[] = { GR2D_UA_BASE_ADDR, --- linux-3.13.0.orig/drivers/gpu/drm/tegra/gr3d.c +++ linux-3.13.0/drivers/gpu/drm/tegra/gr3d.c @@ -127,6 +127,7 @@ { .compatible = "nvidia,tegra20-gr3d" }, { } }; +MODULE_DEVICE_TABLE(of, tegra_gr3d_match); static const u32 gr3d_addr_regs[] = { GR3D_IDX_ATTRIBUTE( 0), --- linux-3.13.0.orig/drivers/gpu/drm/tegra/hdmi.c +++ linux-3.13.0/drivers/gpu/drm/tegra/hdmi.c @@ -1309,6 +1309,7 @@ { .compatible = "nvidia,tegra20-hdmi", .data = &tegra20_hdmi_config }, { }, }; +MODULE_DEVICE_TABLE(of, tegra_hdmi_of_match); static int tegra_hdmi_probe(struct platform_device *pdev) { --- linux-3.13.0.orig/drivers/gpu/drm/tilcdc/tilcdc_drv.c +++ linux-3.13.0/drivers/gpu/drm/tilcdc/tilcdc_drv.c @@ -122,6 +122,7 @@ struct tilcdc_drm_private *priv = dev->dev_private; struct tilcdc_module *mod, *cur; + drm_fbdev_cma_fini(priv->fbdev); drm_kms_helper_poll_fini(dev); drm_mode_config_cleanup(dev); drm_vblank_cleanup(dev); @@ -628,10 +629,10 @@ static void __exit tilcdc_drm_fini(void) { DBG("fini"); - tilcdc_tfp410_fini(); - tilcdc_slave_fini(); - tilcdc_panel_fini(); platform_driver_unregister(&tilcdc_platform_driver); + tilcdc_panel_fini(); + tilcdc_slave_fini(); + tilcdc_tfp410_fini(); } late_initcall(tilcdc_drm_init); --- linux-3.13.0.orig/drivers/gpu/drm/tilcdc/tilcdc_panel.c +++ linux-3.13.0/drivers/gpu/drm/tilcdc/tilcdc_panel.c @@ -151,6 +151,7 @@ static void panel_connector_destroy(struct drm_connector *connector) { struct panel_connector *panel_connector = to_panel_connector(connector); + drm_sysfs_connector_remove(connector); drm_connector_cleanup(connector); kfree(panel_connector); } @@ -285,10 +286,8 @@ { struct panel_module *panel_mod = to_panel_module(mod); - if (panel_mod->timings) { + if (panel_mod->timings) display_timings_release(panel_mod->timings); - kfree(panel_mod->timings); - } tilcdc_module_cleanup(mod); kfree(panel_mod->info); --- linux-3.13.0.orig/drivers/gpu/drm/tilcdc/tilcdc_slave.c +++ linux-3.13.0/drivers/gpu/drm/tilcdc/tilcdc_slave.c @@ -166,6 +166,7 @@ static void slave_connector_destroy(struct drm_connector *connector) { struct slave_connector *slave_connector = to_slave_connector(connector); + drm_sysfs_connector_remove(connector); drm_connector_cleanup(connector); kfree(slave_connector); } --- linux-3.13.0.orig/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c +++ linux-3.13.0/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c @@ -167,6 +167,7 @@ static void tfp410_connector_destroy(struct drm_connector *connector) { struct tfp410_connector *tfp410_connector = to_tfp410_connector(connector); + drm_sysfs_connector_remove(connector); drm_connector_cleanup(connector); kfree(tfp410_connector); } --- linux-3.13.0.orig/drivers/gpu/drm/ttm/ttm_bo.c +++ linux-3.13.0/drivers/gpu/drm/ttm/ttm_bo.c @@ -351,9 +351,11 @@ moved: if (bo->evicted) { - ret = bdev->driver->invalidate_caches(bdev, bo->mem.placement); - if (ret) - pr_err("Can not flush read caches\n"); + if (bdev->driver->invalidate_caches) { + ret = bdev->driver->invalidate_caches(bdev, bo->mem.placement); + if (ret) + pr_err("Can not flush read caches\n"); + } bo->evicted = false; } --- linux-3.13.0.orig/drivers/gpu/drm/ttm/ttm_lock.c +++ linux-3.13.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-3.13.0.orig/drivers/gpu/drm/ttm/ttm_object.c +++ linux-3.13.0/drivers/gpu/drm/ttm/ttm_object.c @@ -68,7 +68,7 @@ struct ttm_object_file { struct ttm_object_device *tdev; - rwlock_t lock; + spinlock_t lock; struct list_head ref_list; struct drm_open_hash ref_hash[TTM_REF_NUM]; struct kref refcount; @@ -118,6 +118,7 @@ */ struct ttm_ref_object { + struct rcu_head rcu_head; struct drm_hash_item hash; struct list_head head; struct kref kref; @@ -210,10 +211,9 @@ * call_rcu() or ttm_base_object_kfree(). */ - if (base->refcount_release) { - ttm_object_file_unref(&base->tfile); + ttm_object_file_unref(&base->tfile); + if (base->refcount_release) base->refcount_release(&base); - } } void ttm_base_object_unref(struct ttm_base_object **p_base) @@ -229,32 +229,46 @@ struct ttm_base_object *ttm_base_object_lookup(struct ttm_object_file *tfile, uint32_t key) { - struct ttm_object_device *tdev = tfile->tdev; - struct ttm_base_object *uninitialized_var(base); + struct ttm_base_object *base = NULL; struct drm_hash_item *hash; + struct drm_open_hash *ht = &tfile->ref_hash[TTM_REF_USAGE]; int ret; rcu_read_lock(); - ret = drm_ht_find_item_rcu(&tdev->object_hash, key, &hash); + ret = drm_ht_find_item_rcu(ht, key, &hash); if (likely(ret == 0)) { - base = drm_hash_entry(hash, struct ttm_base_object, hash); - ret = kref_get_unless_zero(&base->refcount) ? 0 : -EINVAL; + base = drm_hash_entry(hash, struct ttm_ref_object, hash)->obj; + if (!kref_get_unless_zero(&base->refcount)) + base = NULL; } rcu_read_unlock(); - if (unlikely(ret != 0)) - return NULL; + return base; +} +EXPORT_SYMBOL(ttm_base_object_lookup); - if (tfile != base->tfile && !base->shareable) { - pr_err("Attempted access of non-shareable object\n"); - ttm_base_object_unref(&base); - return NULL; +struct ttm_base_object * +ttm_base_object_lookup_for_ref(struct ttm_object_device *tdev, uint32_t key) +{ + struct ttm_base_object *base = NULL; + struct drm_hash_item *hash; + struct drm_open_hash *ht = &tdev->object_hash; + int ret; + + rcu_read_lock(); + ret = drm_ht_find_item_rcu(ht, key, &hash); + + if (likely(ret == 0)) { + base = drm_hash_entry(hash, struct ttm_base_object, hash); + if (!kref_get_unless_zero(&base->refcount)) + base = NULL; } + rcu_read_unlock(); return base; } -EXPORT_SYMBOL(ttm_base_object_lookup); +EXPORT_SYMBOL(ttm_base_object_lookup_for_ref); int ttm_ref_object_add(struct ttm_object_file *tfile, struct ttm_base_object *base, @@ -266,21 +280,25 @@ struct ttm_mem_global *mem_glob = tfile->tdev->mem_glob; int ret = -EINVAL; + if (base->tfile != tfile && !base->shareable) + return -EPERM; + if (existed != NULL) *existed = true; while (ret == -EINVAL) { - read_lock(&tfile->lock); - ret = drm_ht_find_item(ht, base->hash.key, &hash); + rcu_read_lock(); + ret = drm_ht_find_item_rcu(ht, base->hash.key, &hash); if (ret == 0) { ref = drm_hash_entry(hash, struct ttm_ref_object, hash); - kref_get(&ref->kref); - read_unlock(&tfile->lock); - break; + if (kref_get_unless_zero(&ref->kref)) { + rcu_read_unlock(); + break; + } } - read_unlock(&tfile->lock); + rcu_read_unlock(); ret = ttm_mem_global_alloc(mem_glob, sizeof(*ref), false, false); if (unlikely(ret != 0)) @@ -297,19 +315,19 @@ ref->ref_type = ref_type; kref_init(&ref->kref); - write_lock(&tfile->lock); - ret = drm_ht_insert_item(ht, &ref->hash); + spin_lock(&tfile->lock); + ret = drm_ht_insert_item_rcu(ht, &ref->hash); if (likely(ret == 0)) { list_add_tail(&ref->head, &tfile->ref_list); kref_get(&base->refcount); - write_unlock(&tfile->lock); + spin_unlock(&tfile->lock); if (existed != NULL) *existed = false; break; } - write_unlock(&tfile->lock); + spin_unlock(&tfile->lock); BUG_ON(ret != -EINVAL); ttm_mem_global_free(mem_glob, sizeof(*ref)); @@ -330,17 +348,17 @@ struct ttm_mem_global *mem_glob = tfile->tdev->mem_glob; ht = &tfile->ref_hash[ref->ref_type]; - (void)drm_ht_remove_item(ht, &ref->hash); + (void)drm_ht_remove_item_rcu(ht, &ref->hash); list_del(&ref->head); - write_unlock(&tfile->lock); + spin_unlock(&tfile->lock); if (ref->ref_type != TTM_REF_USAGE && base->ref_obj_release) base->ref_obj_release(base, ref->ref_type); ttm_base_object_unref(&ref->obj); ttm_mem_global_free(mem_glob, sizeof(*ref)); - kfree(ref); - write_lock(&tfile->lock); + kfree_rcu(ref, rcu_head); + spin_lock(&tfile->lock); } int ttm_ref_object_base_unref(struct ttm_object_file *tfile, @@ -351,15 +369,15 @@ struct drm_hash_item *hash; int ret; - write_lock(&tfile->lock); + spin_lock(&tfile->lock); ret = drm_ht_find_item(ht, key, &hash); if (unlikely(ret != 0)) { - write_unlock(&tfile->lock); + spin_unlock(&tfile->lock); return -EINVAL; } ref = drm_hash_entry(hash, struct ttm_ref_object, hash); kref_put(&ref->kref, ttm_ref_object_release); - write_unlock(&tfile->lock); + spin_unlock(&tfile->lock); return 0; } EXPORT_SYMBOL(ttm_ref_object_base_unref); @@ -372,7 +390,7 @@ struct ttm_object_file *tfile = *p_tfile; *p_tfile = NULL; - write_lock(&tfile->lock); + spin_lock(&tfile->lock); /* * Since we release the lock within the loop, we have to @@ -388,7 +406,7 @@ for (i = 0; i < TTM_REF_NUM; ++i) drm_ht_remove(&tfile->ref_hash[i]); - write_unlock(&tfile->lock); + spin_unlock(&tfile->lock); ttm_object_file_unref(&tfile); } EXPORT_SYMBOL(ttm_object_file_release); @@ -404,7 +422,7 @@ if (unlikely(tfile == NULL)) return NULL; - rwlock_init(&tfile->lock); + spin_lock_init(&tfile->lock); tfile->tdev = tdev; kref_init(&tfile->refcount); INIT_LIST_HEAD(&tfile->ref_list); --- linux-3.13.0.orig/drivers/gpu/drm/ttm/ttm_page_alloc.c +++ linux-3.13.0/drivers/gpu/drm/ttm/ttm_page_alloc.c @@ -297,9 +297,12 @@ * * @pool: to free the pages from * @free_all: If set to true will free all pages in pool + * @use_static: Safe to use static buffer **/ -static int ttm_page_pool_free(struct ttm_page_pool *pool, unsigned nr_free) +static int ttm_page_pool_free(struct ttm_page_pool *pool, unsigned nr_free, + bool use_static) { + static struct page *static_buf[NUM_PAGES_TO_ALLOC]; unsigned long irq_flags; struct page *p; struct page **pages_to_free; @@ -309,8 +312,11 @@ if (NUM_PAGES_TO_ALLOC < nr_free) npages_to_free = NUM_PAGES_TO_ALLOC; - pages_to_free = kmalloc(npages_to_free * sizeof(struct page *), - GFP_KERNEL); + if (use_static) + pages_to_free = static_buf; + else + pages_to_free = kmalloc(npages_to_free * sizeof(struct page *), + GFP_KERNEL); if (!pages_to_free) { pr_err("Failed to allocate memory for pool free operation\n"); return 0; @@ -373,7 +379,8 @@ if (freed_pages) ttm_pages_put(pages_to_free, freed_pages); out: - kfree(pages_to_free); + if (pages_to_free != static_buf) + kfree(pages_to_free); return nr_free; } @@ -382,32 +389,33 @@ * * XXX: (dchinner) Deadlock warning! * - * ttm_page_pool_free() does memory allocation using GFP_KERNEL. that means - * this can deadlock when called a sc->gfp_mask that is not equal to - * GFP_KERNEL. - * * This code is crying out for a shrinker per pool.... */ static unsigned long ttm_pool_shrink_scan(struct shrinker *shrink, struct shrink_control *sc) { - static atomic_t start_pool = ATOMIC_INIT(0); + static DEFINE_MUTEX(lock); + static unsigned start_pool; unsigned i; - unsigned pool_offset = atomic_add_return(1, &start_pool); + unsigned pool_offset; struct ttm_page_pool *pool; int shrink_pages = sc->nr_to_scan; unsigned long freed = 0; - pool_offset = pool_offset % NUM_POOLS; + if (!mutex_trylock(&lock)) + return SHRINK_STOP; + pool_offset = ++start_pool % NUM_POOLS; /* select start pool in round robin fashion */ for (i = 0; i < NUM_POOLS; ++i) { unsigned nr_free = shrink_pages; if (shrink_pages == 0) break; pool = &_manager->pools[(i + pool_offset)%NUM_POOLS]; - shrink_pages = ttm_page_pool_free(pool, nr_free); + /* OK to use static buffer since global mutex is held. */ + shrink_pages = ttm_page_pool_free(pool, nr_free, true); freed += nr_free - shrink_pages; } + mutex_unlock(&lock); return freed; } @@ -706,7 +714,7 @@ } spin_unlock_irqrestore(&pool->lock, irq_flags); if (npages) - ttm_page_pool_free(pool, npages); + ttm_page_pool_free(pool, npages, false); } /* @@ -845,8 +853,9 @@ pr_info("Finalizing pool allocator\n"); ttm_pool_mm_shrink_fini(_manager); + /* OK to use static buffer since global mutex is no longer used. */ for (i = 0; i < NUM_POOLS; ++i) - ttm_page_pool_free(&_manager->pools[i], FREE_ALL_PAGES); + ttm_page_pool_free(&_manager->pools[i], FREE_ALL_PAGES, true); kobject_put(&_manager->kobj); _manager = NULL; --- linux-3.13.0.orig/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c +++ linux-3.13.0/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c @@ -411,9 +411,12 @@ * * @pool: to free the pages from * @nr_free: If set to true will free all pages in pool + * @use_static: Safe to use static buffer **/ -static unsigned ttm_dma_page_pool_free(struct dma_pool *pool, unsigned nr_free) +static unsigned ttm_dma_page_pool_free(struct dma_pool *pool, unsigned nr_free, + bool use_static) { + static struct page *static_buf[NUM_PAGES_TO_ALLOC]; unsigned long irq_flags; struct dma_page *dma_p, *tmp; struct page **pages_to_free; @@ -430,8 +433,11 @@ npages_to_free, nr_free); } #endif - pages_to_free = kmalloc(npages_to_free * sizeof(struct page *), - GFP_KERNEL); + if (use_static) + pages_to_free = static_buf; + else + pages_to_free = kmalloc(npages_to_free * sizeof(struct page *), + GFP_KERNEL); if (!pages_to_free) { pr_err("%s: Failed to allocate memory for pool free operation\n", @@ -501,7 +507,8 @@ if (freed_pages) ttm_dma_pages_put(pool, &d_pages, pages_to_free, freed_pages); out: - kfree(pages_to_free); + if (pages_to_free != static_buf) + kfree(pages_to_free); return nr_free; } @@ -530,7 +537,8 @@ if (pool->type != type) continue; /* Takes a spinlock.. */ - ttm_dma_page_pool_free(pool, FREE_ALL_PAGES); + /* OK to use static buffer since global mutex is held. */ + ttm_dma_page_pool_free(pool, FREE_ALL_PAGES, true); WARN_ON(((pool->npages_in_use + pool->npages_free) != 0)); /* This code path is called after _all_ references to the * struct device has been dropped - so nobody should be @@ -983,7 +991,7 @@ /* shrink pool if necessary (only on !is_cached pools)*/ if (npages) - ttm_dma_page_pool_free(pool, npages); + ttm_dma_page_pool_free(pool, npages, false); ttm->state = tt_unpopulated; } EXPORT_SYMBOL_GPL(ttm_dma_unpopulate); @@ -993,20 +1001,15 @@ * * XXX: (dchinner) Deadlock warning! * - * ttm_dma_page_pool_free() does GFP_KERNEL memory allocation, and so attention - * needs to be paid to sc->gfp_mask to determine if this can be done or not. - * GFP_KERNEL memory allocation in a GFP_ATOMIC reclaim context woul dbe really - * bad. - * * I'm getting sadder as I hear more pathetical whimpers about needing per-pool * shrinkers */ static unsigned long ttm_dma_pool_shrink_scan(struct shrinker *shrink, struct shrink_control *sc) { - static atomic_t start_pool = ATOMIC_INIT(0); + static unsigned start_pool; unsigned idx = 0; - unsigned pool_offset = atomic_add_return(1, &start_pool); + unsigned pool_offset; unsigned shrink_pages = sc->nr_to_scan; struct device_pools *p; unsigned long freed = 0; @@ -1014,8 +1017,11 @@ if (list_empty(&_manager->pools)) return SHRINK_STOP; - mutex_lock(&_manager->lock); - pool_offset = pool_offset % _manager->npools; + if (!mutex_trylock(&_manager->lock)) + return SHRINK_STOP; + if (!_manager->npools) + goto out; + pool_offset = ++start_pool % _manager->npools; list_for_each_entry(p, &_manager->pools, pools) { unsigned nr_free; @@ -1027,13 +1033,15 @@ if (++idx < pool_offset) continue; nr_free = shrink_pages; - shrink_pages = ttm_dma_page_pool_free(p->pool, nr_free); + /* OK to use static buffer since global mutex is held. */ + shrink_pages = ttm_dma_page_pool_free(p->pool, nr_free, true); freed += nr_free - shrink_pages; pr_debug("%s: (%s:%d) Asked to shrink %d, have %d more to go\n", p->pool->dev_name, p->pool->name, current->pid, nr_free, shrink_pages); } +out: mutex_unlock(&_manager->lock); return freed; } @@ -1044,7 +1052,8 @@ struct device_pools *p; unsigned long count = 0; - mutex_lock(&_manager->lock); + if (!mutex_trylock(&_manager->lock)) + return 0; list_for_each_entry(p, &_manager->pools, pools) count += p->pool->npages_free; mutex_unlock(&_manager->lock); --- linux-3.13.0.orig/drivers/gpu/drm/vmwgfx/Makefile +++ linux-3.13.0/drivers/gpu/drm/vmwgfx/Makefile @@ -6,6 +6,6 @@ vmwgfx_fifo.o vmwgfx_irq.o vmwgfx_ldu.o vmwgfx_ttm_glue.o \ vmwgfx_overlay.o vmwgfx_marker.o vmwgfx_gmrid_manager.o \ vmwgfx_fence.o vmwgfx_dmabuf.o vmwgfx_scrn.o vmwgfx_context.o \ - vmwgfx_surface.o vmwgfx_prime.o + vmwgfx_surface.o vmwgfx_prime.o vmwgfx_mob.o vmwgfx_shader.o obj-$(CONFIG_DRM_VMWGFX) := vmwgfx.o --- linux-3.13.0.orig/drivers/gpu/drm/vmwgfx/svga3d_reg.h +++ linux-3.13.0/drivers/gpu/drm/vmwgfx/svga3d_reg.h @@ -34,6 +34,8 @@ #include "svga_reg.h" +typedef uint32 PPN; +typedef __le64 PPN64; /* * 3D Hardware Version @@ -71,6 +73,9 @@ #define SVGA3D_MAX_CONTEXT_IDS 256 #define SVGA3D_MAX_SURFACE_IDS (32 * 1024) +#define SVGA3D_NUM_TEXTURE_UNITS 32 +#define SVGA3D_NUM_LIGHTS 8 + /* * Surface formats. * @@ -81,6 +86,7 @@ */ typedef enum SVGA3dSurfaceFormat { + SVGA3D_FORMAT_MIN = 0, SVGA3D_FORMAT_INVALID = 0, SVGA3D_X8R8G8B8 = 1, @@ -134,12 +140,6 @@ SVGA3D_RG_S10E5 = 35, SVGA3D_RG_S23E8 = 36, - /* - * Any surface can be used as a buffer object, but SVGA3D_BUFFER is - * the most efficient format to use when creating new surfaces - * expressly for index or vertex data. - */ - SVGA3D_BUFFER = 37, SVGA3D_Z_D24X8 = 38, @@ -159,15 +159,109 @@ /* Video format with alpha */ SVGA3D_AYUV = 45, + SVGA3D_R32G32B32A32_TYPELESS = 46, + SVGA3D_R32G32B32A32_FLOAT = 25, + SVGA3D_R32G32B32A32_UINT = 47, + SVGA3D_R32G32B32A32_SINT = 48, + SVGA3D_R32G32B32_TYPELESS = 49, + SVGA3D_R32G32B32_FLOAT = 50, + SVGA3D_R32G32B32_UINT = 51, + SVGA3D_R32G32B32_SINT = 52, + SVGA3D_R16G16B16A16_TYPELESS = 53, + SVGA3D_R16G16B16A16_FLOAT = 24, + SVGA3D_R16G16B16A16_UNORM = 41, + SVGA3D_R16G16B16A16_UINT = 54, + SVGA3D_R16G16B16A16_SNORM = 55, + SVGA3D_R16G16B16A16_SINT = 56, + SVGA3D_R32G32_TYPELESS = 57, + SVGA3D_R32G32_FLOAT = 36, + SVGA3D_R32G32_UINT = 58, + SVGA3D_R32G32_SINT = 59, + SVGA3D_R32G8X24_TYPELESS = 60, + SVGA3D_D32_FLOAT_S8X24_UINT = 61, + SVGA3D_R32_FLOAT_X8X24_TYPELESS = 62, + SVGA3D_X32_TYPELESS_G8X24_UINT = 63, + SVGA3D_R10G10B10A2_TYPELESS = 64, + SVGA3D_R10G10B10A2_UNORM = 26, + SVGA3D_R10G10B10A2_UINT = 65, + SVGA3D_R11G11B10_FLOAT = 66, + SVGA3D_R8G8B8A8_TYPELESS = 67, + SVGA3D_R8G8B8A8_UNORM = 68, + SVGA3D_R8G8B8A8_UNORM_SRGB = 69, + SVGA3D_R8G8B8A8_UINT = 70, + SVGA3D_R8G8B8A8_SNORM = 28, + SVGA3D_R8G8B8A8_SINT = 71, + SVGA3D_R16G16_TYPELESS = 72, + SVGA3D_R16G16_FLOAT = 35, + SVGA3D_R16G16_UNORM = 40, + SVGA3D_R16G16_UINT = 73, + SVGA3D_R16G16_SNORM = 39, + SVGA3D_R16G16_SINT = 74, + SVGA3D_R32_TYPELESS = 75, + SVGA3D_D32_FLOAT = 76, + SVGA3D_R32_FLOAT = 34, + SVGA3D_R32_UINT = 77, + SVGA3D_R32_SINT = 78, + SVGA3D_R24G8_TYPELESS = 79, + SVGA3D_D24_UNORM_S8_UINT = 80, + SVGA3D_R24_UNORM_X8_TYPELESS = 81, + SVGA3D_X24_TYPELESS_G8_UINT = 82, + SVGA3D_R8G8_TYPELESS = 83, + SVGA3D_R8G8_UNORM = 84, + SVGA3D_R8G8_UINT = 85, + SVGA3D_R8G8_SNORM = 27, + SVGA3D_R8G8_SINT = 86, + SVGA3D_R16_TYPELESS = 87, + SVGA3D_R16_FLOAT = 33, + SVGA3D_D16_UNORM = 8, + SVGA3D_R16_UNORM = 88, + SVGA3D_R16_UINT = 89, + SVGA3D_R16_SNORM = 90, + SVGA3D_R16_SINT = 91, + SVGA3D_R8_TYPELESS = 92, + SVGA3D_R8_UNORM = 93, + SVGA3D_R8_UINT = 94, + SVGA3D_R8_SNORM = 95, + SVGA3D_R8_SINT = 96, + SVGA3D_A8_UNORM = 32, + SVGA3D_R1_UNORM = 97, + SVGA3D_R9G9B9E5_SHAREDEXP = 98, + SVGA3D_R8G8_B8G8_UNORM = 99, + SVGA3D_G8R8_G8B8_UNORM = 100, + SVGA3D_BC1_TYPELESS = 101, + SVGA3D_BC1_UNORM = 15, + SVGA3D_BC1_UNORM_SRGB = 102, + SVGA3D_BC2_TYPELESS = 103, + SVGA3D_BC2_UNORM = 17, + SVGA3D_BC2_UNORM_SRGB = 104, + SVGA3D_BC3_TYPELESS = 105, + SVGA3D_BC3_UNORM = 19, + SVGA3D_BC3_UNORM_SRGB = 106, + SVGA3D_BC4_TYPELESS = 107, SVGA3D_BC4_UNORM = 108, + SVGA3D_BC4_SNORM = 109, + SVGA3D_BC5_TYPELESS = 110, SVGA3D_BC5_UNORM = 111, + SVGA3D_BC5_SNORM = 112, + SVGA3D_B5G6R5_UNORM = 3, + SVGA3D_B5G5R5A1_UNORM = 5, + SVGA3D_B8G8R8A8_UNORM = 2, + SVGA3D_B8G8R8X8_UNORM = 1, + SVGA3D_R10G10B10_XR_BIAS_A2_UNORM = 113, + SVGA3D_B8G8R8A8_TYPELESS = 114, + SVGA3D_B8G8R8A8_UNORM_SRGB = 115, + SVGA3D_B8G8R8X8_TYPELESS = 116, + SVGA3D_B8G8R8X8_UNORM_SRGB = 117, /* Advanced D3D9 depth formats. */ SVGA3D_Z_DF16 = 118, SVGA3D_Z_DF24 = 119, SVGA3D_Z_D24S8_INT = 120, - SVGA3D_FORMAT_MAX + /* Planar video formats. */ + SVGA3D_YV12 = 121, + + SVGA3D_FORMAT_MAX = 122, } SVGA3dSurfaceFormat; typedef uint32 SVGA3dColor; /* a, r, g, b */ @@ -957,15 +1051,21 @@ } SVGA3dCubeFace; typedef enum { + SVGA3D_SHADERTYPE_INVALID = 0, + SVGA3D_SHADERTYPE_MIN = 1, SVGA3D_SHADERTYPE_VS = 1, SVGA3D_SHADERTYPE_PS = 2, - SVGA3D_SHADERTYPE_MAX + SVGA3D_SHADERTYPE_MAX = 3, + SVGA3D_SHADERTYPE_GS = 3, } SVGA3dShaderType; +#define SVGA3D_NUM_SHADERTYPE (SVGA3D_SHADERTYPE_MAX - SVGA3D_SHADERTYPE_MIN) + typedef enum { SVGA3D_CONST_TYPE_FLOAT = 0, SVGA3D_CONST_TYPE_INT = 1, SVGA3D_CONST_TYPE_BOOL = 2, + SVGA3D_CONST_TYPE_MAX } SVGA3dShaderConstType; #define SVGA3D_MAX_SURFACE_FACES 6 @@ -1056,9 +1156,84 @@ #define SVGA_3D_CMD_GENERATE_MIPMAPS SVGA_3D_CMD_BASE + 31 #define SVGA_3D_CMD_ACTIVATE_SURFACE SVGA_3D_CMD_BASE + 40 #define SVGA_3D_CMD_DEACTIVATE_SURFACE SVGA_3D_CMD_BASE + 41 -#define SVGA_3D_CMD_MAX SVGA_3D_CMD_BASE + 42 +#define SVGA_3D_CMD_SCREEN_DMA 1082 +#define SVGA_3D_CMD_SET_UNITY_SURFACE_COOKIE 1083 +#define SVGA_3D_CMD_OPEN_CONTEXT_SURFACE 1084 + +#define SVGA_3D_CMD_LOGICOPS_BITBLT 1085 +#define SVGA_3D_CMD_LOGICOPS_TRANSBLT 1086 +#define SVGA_3D_CMD_LOGICOPS_STRETCHBLT 1087 +#define SVGA_3D_CMD_LOGICOPS_COLORFILL 1088 +#define SVGA_3D_CMD_LOGICOPS_ALPHABLEND 1089 +#define SVGA_3D_CMD_LOGICOPS_CLEARTYPEBLEND 1090 + +#define SVGA_3D_CMD_SET_OTABLE_BASE 1091 +#define SVGA_3D_CMD_READBACK_OTABLE 1092 + +#define SVGA_3D_CMD_DEFINE_GB_MOB 1093 +#define SVGA_3D_CMD_DESTROY_GB_MOB 1094 +#define SVGA_3D_CMD_REDEFINE_GB_MOB 1095 +#define SVGA_3D_CMD_UPDATE_GB_MOB_MAPPING 1096 + +#define SVGA_3D_CMD_DEFINE_GB_SURFACE 1097 +#define SVGA_3D_CMD_DESTROY_GB_SURFACE 1098 +#define SVGA_3D_CMD_BIND_GB_SURFACE 1099 +#define SVGA_3D_CMD_COND_BIND_GB_SURFACE 1100 +#define SVGA_3D_CMD_UPDATE_GB_IMAGE 1101 +#define SVGA_3D_CMD_UPDATE_GB_SURFACE 1102 +#define SVGA_3D_CMD_READBACK_GB_IMAGE 1103 +#define SVGA_3D_CMD_READBACK_GB_SURFACE 1104 +#define SVGA_3D_CMD_INVALIDATE_GB_IMAGE 1105 +#define SVGA_3D_CMD_INVALIDATE_GB_SURFACE 1106 + +#define SVGA_3D_CMD_DEFINE_GB_CONTEXT 1107 +#define SVGA_3D_CMD_DESTROY_GB_CONTEXT 1108 +#define SVGA_3D_CMD_BIND_GB_CONTEXT 1109 +#define SVGA_3D_CMD_READBACK_GB_CONTEXT 1110 +#define SVGA_3D_CMD_INVALIDATE_GB_CONTEXT 1111 + +#define SVGA_3D_CMD_DEFINE_GB_SHADER 1112 +#define SVGA_3D_CMD_DESTROY_GB_SHADER 1113 +#define SVGA_3D_CMD_BIND_GB_SHADER 1114 + +#define SVGA_3D_CMD_SET_OTABLE_BASE64 1115 + +#define SVGA_3D_CMD_BEGIN_GB_QUERY 1116 +#define SVGA_3D_CMD_END_GB_QUERY 1117 +#define SVGA_3D_CMD_WAIT_FOR_GB_QUERY 1118 + +#define SVGA_3D_CMD_NOP 1119 + +#define SVGA_3D_CMD_ENABLE_GART 1120 +#define SVGA_3D_CMD_DISABLE_GART 1121 +#define SVGA_3D_CMD_MAP_MOB_INTO_GART 1122 +#define SVGA_3D_CMD_UNMAP_GART_RANGE 1123 + +#define SVGA_3D_CMD_DEFINE_GB_SCREENTARGET 1124 +#define SVGA_3D_CMD_DESTROY_GB_SCREENTARGET 1125 +#define SVGA_3D_CMD_BIND_GB_SCREENTARGET 1126 +#define SVGA_3D_CMD_UPDATE_GB_SCREENTARGET 1127 + +#define SVGA_3D_CMD_READBACK_GB_IMAGE_PARTIAL 1128 +#define SVGA_3D_CMD_INVALIDATE_GB_IMAGE_PARTIAL 1129 + +#define SVGA_3D_CMD_SET_GB_SHADERCONSTS_INLINE 1130 +#define SVGA_3D_CMD_GB_SCREEN_DMA 1131 +#define SVGA_3D_CMD_BIND_GB_SURFACE_WITH_PITCH 1132 +#define SVGA_3D_CMD_GB_MOB_FENCE 1133 +#define SVGA_3D_CMD_DEFINE_GB_SURFACE_V2 1134 +#define SVGA_3D_CMD_DEFINE_GB_MOB64 1135 +#define SVGA_3D_CMD_REDEFINE_GB_MOB64 1136 +#define SVGA_3D_CMD_NOP_ERROR 1137 + +#define SVGA_3D_CMD_RESERVED1 1138 +#define SVGA_3D_CMD_RESERVED2 1139 +#define SVGA_3D_CMD_RESERVED3 1140 +#define SVGA_3D_CMD_RESERVED4 1141 +#define SVGA_3D_CMD_RESERVED5 1142 -#define SVGA_3D_CMD_FUTURE_MAX 2000 +#define SVGA_3D_CMD_MAX 1142 +#define SVGA_3D_CMD_FUTURE_MAX 3000 /* * Common substructures used in multiple FIFO commands: @@ -1750,6 +1925,507 @@ /* + * Guest-backed surface definitions. + */ + +typedef uint32 SVGAMobId; + +typedef enum SVGAMobFormat { + SVGA3D_MOBFMT_INVALID = SVGA3D_INVALID_ID, + SVGA3D_MOBFMT_PTDEPTH_0 = 0, + SVGA3D_MOBFMT_PTDEPTH_1 = 1, + SVGA3D_MOBFMT_PTDEPTH_2 = 2, + SVGA3D_MOBFMT_RANGE = 3, + SVGA3D_MOBFMT_PTDEPTH64_0 = 4, + SVGA3D_MOBFMT_PTDEPTH64_1 = 5, + SVGA3D_MOBFMT_PTDEPTH64_2 = 6, + SVGA3D_MOBFMT_MAX, +} SVGAMobFormat; + +/* + * Sizes of opaque types. + */ + +#define SVGA3D_OTABLE_MOB_ENTRY_SIZE 16 +#define SVGA3D_OTABLE_CONTEXT_ENTRY_SIZE 8 +#define SVGA3D_OTABLE_SURFACE_ENTRY_SIZE 64 +#define SVGA3D_OTABLE_SHADER_ENTRY_SIZE 16 +#define SVGA3D_OTABLE_SCREEN_TARGET_ENTRY_SIZE 64 +#define SVGA3D_CONTEXT_DATA_SIZE 16384 + +/* + * SVGA3dCmdSetOTableBase -- + * + * This command allows the guest to specify the base PPN of the + * specified object table. + */ + +typedef enum { + SVGA_OTABLE_MOB = 0, + SVGA_OTABLE_MIN = 0, + SVGA_OTABLE_SURFACE = 1, + SVGA_OTABLE_CONTEXT = 2, + SVGA_OTABLE_SHADER = 3, + SVGA_OTABLE_SCREEN_TARGET = 4, + SVGA_OTABLE_DX9_MAX = 5, + SVGA_OTABLE_MAX = 8 +} SVGAOTableType; + +typedef +struct { + SVGAOTableType type; + PPN baseAddress; + uint32 sizeInBytes; + uint32 validSizeInBytes; + SVGAMobFormat ptDepth; +} __packed +SVGA3dCmdSetOTableBase; /* SVGA_3D_CMD_SET_OTABLE_BASE */ + +typedef +struct { + SVGAOTableType type; + PPN64 baseAddress; + uint32 sizeInBytes; + uint32 validSizeInBytes; + SVGAMobFormat ptDepth; +} __packed +SVGA3dCmdSetOTableBase64; /* SVGA_3D_CMD_SET_OTABLE_BASE64 */ + +typedef +struct { + SVGAOTableType type; +} __packed +SVGA3dCmdReadbackOTable; /* SVGA_3D_CMD_READBACK_OTABLE */ + +/* + * Define a memory object (Mob) in the OTable. + */ + +typedef +struct SVGA3dCmdDefineGBMob { + SVGAMobId mobid; + SVGAMobFormat ptDepth; + PPN base; + uint32 sizeInBytes; +} __packed +SVGA3dCmdDefineGBMob; /* SVGA_3D_CMD_DEFINE_GB_MOB */ + + +/* + * Destroys an object in the OTable. + */ + +typedef +struct SVGA3dCmdDestroyGBMob { + SVGAMobId mobid; +} __packed +SVGA3dCmdDestroyGBMob; /* SVGA_3D_CMD_DESTROY_GB_MOB */ + +/* + * Redefine an object in the OTable. + */ + +typedef +struct SVGA3dCmdRedefineGBMob { + SVGAMobId mobid; + SVGAMobFormat ptDepth; + PPN base; + uint32 sizeInBytes; +} __packed +SVGA3dCmdRedefineGBMob; /* SVGA_3D_CMD_REDEFINE_GB_MOB */ + +/* + * Define a memory object (Mob) in the OTable with a PPN64 base. + */ + +typedef +struct SVGA3dCmdDefineGBMob64 { + SVGAMobId mobid; + SVGAMobFormat ptDepth; + PPN64 base; + uint32 sizeInBytes; +} __packed +SVGA3dCmdDefineGBMob64; /* SVGA_3D_CMD_DEFINE_GB_MOB64 */ + +/* + * Redefine an object in the OTable with PPN64 base. + */ + +typedef +struct SVGA3dCmdRedefineGBMob64 { + SVGAMobId mobid; + SVGAMobFormat ptDepth; + PPN64 base; + uint32 sizeInBytes; +} __packed +SVGA3dCmdRedefineGBMob64; /* SVGA_3D_CMD_REDEFINE_GB_MOB64 */ + +/* + * Notification that the page tables have been modified. + */ + +typedef +struct SVGA3dCmdUpdateGBMobMapping { + SVGAMobId mobid; +} __packed +SVGA3dCmdUpdateGBMobMapping; /* SVGA_3D_CMD_UPDATE_GB_MOB_MAPPING */ + +/* + * Define a guest-backed surface. + */ + +typedef +struct SVGA3dCmdDefineGBSurface { + uint32 sid; + SVGA3dSurfaceFlags surfaceFlags; + SVGA3dSurfaceFormat format; + uint32 numMipLevels; + uint32 multisampleCount; + SVGA3dTextureFilter autogenFilter; + SVGA3dSize size; +} __packed +SVGA3dCmdDefineGBSurface; /* SVGA_3D_CMD_DEFINE_GB_SURFACE */ + +/* + * Destroy a guest-backed surface. + */ + +typedef +struct SVGA3dCmdDestroyGBSurface { + uint32 sid; +} __packed +SVGA3dCmdDestroyGBSurface; /* SVGA_3D_CMD_DESTROY_GB_SURFACE */ + +/* + * Bind a guest-backed surface to an object. + */ + +typedef +struct SVGA3dCmdBindGBSurface { + uint32 sid; + SVGAMobId mobid; +} __packed +SVGA3dCmdBindGBSurface; /* SVGA_3D_CMD_BIND_GB_SURFACE */ + +/* + * Conditionally bind a mob to a guest backed surface if testMobid + * matches the currently bound mob. Optionally issue a readback on + * the surface while it is still bound to the old mobid if the mobid + * is changed by this command. + */ + +#define SVGA3D_COND_BIND_GB_SURFACE_FLAG_READBACK (1 << 0) + +typedef +struct{ + uint32 sid; + SVGAMobId testMobid; + SVGAMobId mobid; + uint32 flags; +} __packed +SVGA3dCmdCondBindGBSurface; /* SVGA_3D_CMD_COND_BIND_GB_SURFACE */ + +/* + * Update an image in a guest-backed surface. + * (Inform the device that the guest-contents have been updated.) + */ + +typedef +struct SVGA3dCmdUpdateGBImage { + SVGA3dSurfaceImageId image; + SVGA3dBox box; +} __packed +SVGA3dCmdUpdateGBImage; /* SVGA_3D_CMD_UPDATE_GB_IMAGE */ + +/* + * Update an entire guest-backed surface. + * (Inform the device that the guest-contents have been updated.) + */ + +typedef +struct SVGA3dCmdUpdateGBSurface { + uint32 sid; +} __packed +SVGA3dCmdUpdateGBSurface; /* SVGA_3D_CMD_UPDATE_GB_SURFACE */ + +/* + * Readback an image in a guest-backed surface. + * (Request the device to flush the dirty contents into the guest.) + */ + +typedef +struct SVGA3dCmdReadbackGBImage { + SVGA3dSurfaceImageId image; +} __packed +SVGA3dCmdReadbackGBImage; /* SVGA_3D_CMD_READBACK_GB_IMAGE*/ + +/* + * Readback an entire guest-backed surface. + * (Request the device to flush the dirty contents into the guest.) + */ + +typedef +struct SVGA3dCmdReadbackGBSurface { + uint32 sid; +} __packed +SVGA3dCmdReadbackGBSurface; /* SVGA_3D_CMD_READBACK_GB_SURFACE */ + +/* + * Readback a sub rect of an image in a guest-backed surface. After + * issuing this command the driver is required to issue an update call + * of the same region before issuing any other commands that reference + * this surface or rendering is not guaranteed. + */ + +typedef +struct SVGA3dCmdReadbackGBImagePartial { + SVGA3dSurfaceImageId image; + SVGA3dBox box; + uint32 invertBox; +} __packed +SVGA3dCmdReadbackGBImagePartial; /* SVGA_3D_CMD_READBACK_GB_IMAGE_PARTIAL */ + +/* + * Invalidate an image in a guest-backed surface. + * (Notify the device that the contents can be lost.) + */ + +typedef +struct SVGA3dCmdInvalidateGBImage { + SVGA3dSurfaceImageId image; +} __packed +SVGA3dCmdInvalidateGBImage; /* SVGA_3D_CMD_INVALIDATE_GB_IMAGE */ + +/* + * Invalidate an entire guest-backed surface. + * (Notify the device that the contents if all images can be lost.) + */ + +typedef +struct SVGA3dCmdInvalidateGBSurface { + uint32 sid; +} __packed +SVGA3dCmdInvalidateGBSurface; /* SVGA_3D_CMD_INVALIDATE_GB_SURFACE */ + +/* + * Invalidate a sub rect of an image in a guest-backed surface. After + * issuing this command the driver is required to issue an update call + * of the same region before issuing any other commands that reference + * this surface or rendering is not guaranteed. + */ + +typedef +struct SVGA3dCmdInvalidateGBImagePartial { + SVGA3dSurfaceImageId image; + SVGA3dBox box; + uint32 invertBox; +} __packed +SVGA3dCmdInvalidateGBImagePartial; /* SVGA_3D_CMD_INVALIDATE_GB_IMAGE_PARTIAL */ + +/* + * Define a guest-backed context. + */ + +typedef +struct SVGA3dCmdDefineGBContext { + uint32 cid; +} __packed +SVGA3dCmdDefineGBContext; /* SVGA_3D_CMD_DEFINE_GB_CONTEXT */ + +/* + * Destroy a guest-backed context. + */ + +typedef +struct SVGA3dCmdDestroyGBContext { + uint32 cid; +} __packed +SVGA3dCmdDestroyGBContext; /* SVGA_3D_CMD_DESTROY_GB_CONTEXT */ + +/* + * Bind a guest-backed context. + * + * validContents should be set to 0 for new contexts, + * and 1 if this is an old context which is getting paged + * back on to the device. + * + * For new contexts, it is recommended that the driver + * issue commands to initialize all interesting state + * prior to rendering. + */ + +typedef +struct SVGA3dCmdBindGBContext { + uint32 cid; + SVGAMobId mobid; + uint32 validContents; +} __packed +SVGA3dCmdBindGBContext; /* SVGA_3D_CMD_BIND_GB_CONTEXT */ + +/* + * Readback a guest-backed context. + * (Request that the device flush the contents back into guest memory.) + */ + +typedef +struct SVGA3dCmdReadbackGBContext { + uint32 cid; +} __packed +SVGA3dCmdReadbackGBContext; /* SVGA_3D_CMD_READBACK_GB_CONTEXT */ + +/* + * Invalidate a guest-backed context. + */ +typedef +struct SVGA3dCmdInvalidateGBContext { + uint32 cid; +} __packed +SVGA3dCmdInvalidateGBContext; /* SVGA_3D_CMD_INVALIDATE_GB_CONTEXT */ + +/* + * Define a guest-backed shader. + */ + +typedef +struct SVGA3dCmdDefineGBShader { + uint32 shid; + SVGA3dShaderType type; + uint32 sizeInBytes; +} __packed +SVGA3dCmdDefineGBShader; /* SVGA_3D_CMD_DEFINE_GB_SHADER */ + +/* + * Bind a guest-backed shader. + */ + +typedef struct SVGA3dCmdBindGBShader { + uint32 shid; + SVGAMobId mobid; + uint32 offsetInBytes; +} __packed +SVGA3dCmdBindGBShader; /* SVGA_3D_CMD_BIND_GB_SHADER */ + +/* + * Destroy a guest-backed shader. + */ + +typedef struct SVGA3dCmdDestroyGBShader { + uint32 shid; +} __packed +SVGA3dCmdDestroyGBShader; /* SVGA_3D_CMD_DESTROY_GB_SHADER */ + +typedef +struct { + uint32 cid; + uint32 regStart; + SVGA3dShaderType shaderType; + SVGA3dShaderConstType constType; + + /* + * Followed by a variable number of shader constants. + * + * Note that FLOAT and INT constants are 4-dwords in length, while + * BOOL constants are 1-dword in length. + */ +} __packed +SVGA3dCmdSetGBShaderConstInline; +/* SVGA_3D_CMD_SET_GB_SHADERCONSTS_INLINE */ + +typedef +struct { + uint32 cid; + SVGA3dQueryType type; +} __packed +SVGA3dCmdBeginGBQuery; /* SVGA_3D_CMD_BEGIN_GB_QUERY */ + +typedef +struct { + uint32 cid; + SVGA3dQueryType type; + SVGAMobId mobid; + uint32 offset; +} __packed +SVGA3dCmdEndGBQuery; /* SVGA_3D_CMD_END_GB_QUERY */ + + +/* + * SVGA_3D_CMD_WAIT_FOR_GB_QUERY -- + * + * The semantics of this command are identical to the + * SVGA_3D_CMD_WAIT_FOR_QUERY except that the results are written + * to a Mob instead of a GMR. + */ + +typedef +struct { + uint32 cid; + SVGA3dQueryType type; + SVGAMobId mobid; + uint32 offset; +} __packed +SVGA3dCmdWaitForGBQuery; /* SVGA_3D_CMD_WAIT_FOR_GB_QUERY */ + +typedef +struct { + SVGAMobId mobid; + uint32 fbOffset; + uint32 initalized; +} __packed +SVGA3dCmdEnableGart; /* SVGA_3D_CMD_ENABLE_GART */ + +typedef +struct { + SVGAMobId mobid; + uint32 gartOffset; +} __packed +SVGA3dCmdMapMobIntoGart; /* SVGA_3D_CMD_MAP_MOB_INTO_GART */ + + +typedef +struct { + uint32 gartOffset; + uint32 numPages; +} __packed +SVGA3dCmdUnmapGartRange; /* SVGA_3D_CMD_UNMAP_GART_RANGE */ + + +/* + * Screen Targets + */ +#define SVGA_STFLAG_PRIMARY (1 << 0) + +typedef +struct { + uint32 stid; + uint32 width; + uint32 height; + int32 xRoot; + int32 yRoot; + uint32 flags; +} __packed +SVGA3dCmdDefineGBScreenTarget; /* SVGA_3D_CMD_DEFINE_GB_SCREENTARGET */ + +typedef +struct { + uint32 stid; +} __packed +SVGA3dCmdDestroyGBScreenTarget; /* SVGA_3D_CMD_DESTROY_GB_SCREENTARGET */ + +typedef +struct { + uint32 stid; + SVGA3dSurfaceImageId image; +} __packed +SVGA3dCmdBindGBScreenTarget; /* SVGA_3D_CMD_BIND_GB_SCREENTARGET */ + +typedef +struct { + uint32 stid; + SVGA3dBox box; +} __packed +SVGA3dCmdUpdateGBScreenTarget; /* SVGA_3D_CMD_UPDATE_GB_SCREENTARGET */ + +/* * Capability query index. * * Notes: @@ -1879,10 +2555,41 @@ SVGA3D_DEVCAP_SURFACEFMT_BC5_UNORM = 83, /* - * Don't add new caps into the previous section; the values in this - * enumeration must not change. You can put new values right before - * SVGA3D_DEVCAP_MAX. + * Deprecated. + */ + SVGA3D_DEVCAP_VGPU10 = 84, + + /* + * This contains several SVGA_3D_CAPS_VIDEO_DECODE elements + * ored together, one for every type of video decoding supported. */ + SVGA3D_DEVCAP_VIDEO_DECODE = 85, + + /* + * This contains several SVGA_3D_CAPS_VIDEO_PROCESS elements + * ored together, one for every type of video processing supported. + */ + SVGA3D_DEVCAP_VIDEO_PROCESS = 86, + + SVGA3D_DEVCAP_LINE_AA = 87, /* boolean */ + SVGA3D_DEVCAP_LINE_STIPPLE = 88, /* boolean */ + SVGA3D_DEVCAP_MAX_LINE_WIDTH = 89, /* float */ + SVGA3D_DEVCAP_MAX_AA_LINE_WIDTH = 90, /* float */ + + SVGA3D_DEVCAP_SURFACEFMT_YV12 = 91, + + /* + * Does the host support the SVGA logic ops commands? + */ + SVGA3D_DEVCAP_LOGICOPS = 92, + + /* + * What support does the host have for screen targets? + * + * See the SVGA3D_SCREENTARGET_CAP bits below. + */ + SVGA3D_DEVCAP_SCREENTARGETS = 93, + SVGA3D_DEVCAP_MAX /* This must be the last index. */ } SVGA3dDevCapIndex; @@ -1893,4 +2600,28 @@ float f; } SVGA3dDevCapResult; +typedef enum { + SVGA3DCAPS_RECORD_UNKNOWN = 0, + SVGA3DCAPS_RECORD_DEVCAPS_MIN = 0x100, + SVGA3DCAPS_RECORD_DEVCAPS = 0x100, + SVGA3DCAPS_RECORD_DEVCAPS_MAX = 0x1ff, +} SVGA3dCapsRecordType; + +typedef +struct SVGA3dCapsRecordHeader { + uint32 length; + SVGA3dCapsRecordType type; +} +SVGA3dCapsRecordHeader; + +typedef +struct SVGA3dCapsRecord { + SVGA3dCapsRecordHeader header; + uint32 data[1]; +} +SVGA3dCapsRecord; + + +typedef uint32 SVGA3dCapPair[2]; + #endif /* _SVGA3D_REG_H_ */ --- linux-3.13.0.orig/drivers/gpu/drm/vmwgfx/svga3d_surfacedefs.h +++ linux-3.13.0/drivers/gpu/drm/vmwgfx/svga3d_surfacedefs.h @@ -38,11 +38,15 @@ #define DIV_ROUND_UP(x, y) (((x) + (y) - 1) / (y)) #define max_t(type, x, y) ((x) > (y) ? (x) : (y)) +#define min_t(type, x, y) ((x) < (y) ? (x) : (y)) #define surf_size_struct SVGA3dSize #define u32 uint32 +#define u64 uint64_t #endif /* __KERNEL__ */ +#define U32_MAX ((u32)~0U) + #include "svga3d_reg.h" /* @@ -704,8 +708,8 @@ static inline u32 clamped_umul32(u32 a, u32 b) { - uint64_t tmp = (uint64_t) a*b; - return (tmp > (uint64_t) ((u32) -1)) ? (u32) -1 : tmp; + u64 tmp = (u64) a*b; + return (tmp > (u64) U32_MAX) ? U32_MAX : tmp; } static inline const struct svga3d_surface_desc * @@ -834,7 +838,7 @@ bool cubemap) { const struct svga3d_surface_desc *desc = svga3dsurface_get_desc(format); - u32 total_size = 0; + u64 total_size = 0; u32 mip; for (mip = 0; mip < num_mip_levels; mip++) { @@ -847,7 +851,7 @@ if (cubemap) total_size *= SVGA3D_MAX_SURFACE_FACES; - return total_size; + return (u32) min_t(u64, total_size, (u64) U32_MAX); } --- linux-3.13.0.orig/drivers/gpu/drm/vmwgfx/svga_reg.h +++ linux-3.13.0/drivers/gpu/drm/vmwgfx/svga_reg.h @@ -169,7 +169,17 @@ SVGA_REG_TRACES = 45, /* Enable trace-based updates even when FIFO is on */ SVGA_REG_GMRS_MAX_PAGES = 46, /* Maximum number of 4KB pages for all GMRs */ SVGA_REG_MEMORY_SIZE = 47, /* Total dedicated device memory excluding FIFO */ - SVGA_REG_TOP = 48, /* Must be 1 more than the last register */ + SVGA_REG_COMMAND_LOW = 48, /* Lower 32 bits and submits commands */ + SVGA_REG_COMMAND_HIGH = 49, /* Upper 32 bits of command buffer PA */ + SVGA_REG_MAX_PRIMARY_BOUNDING_BOX_MEM = 50, /* Max primary memory */ + SVGA_REG_SUGGESTED_GBOBJECT_MEM_SIZE_KB = 51, /* Suggested limit on mob mem */ + SVGA_REG_DEV_CAP = 52, /* Write dev cap index, read value */ + SVGA_REG_CMD_PREPEND_LOW = 53, + SVGA_REG_CMD_PREPEND_HIGH = 54, + SVGA_REG_SCREENTARGET_MAX_WIDTH = 55, + SVGA_REG_SCREENTARGET_MAX_HEIGHT = 56, + SVGA_REG_MOB_MAX_SIZE = 57, + SVGA_REG_TOP = 58, /* Must be 1 more than the last register */ SVGA_PALETTE_BASE = 1024, /* Base of SVGA color map */ /* Next 768 (== 256*3) registers exist for colormap */ @@ -431,7 +441,10 @@ #define SVGA_CAP_TRACES 0x00200000 #define SVGA_CAP_GMR2 0x00400000 #define SVGA_CAP_SCREEN_OBJECT_2 0x00800000 - +#define SVGA_CAP_COMMAND_BUFFERS 0x01000000 +#define SVGA_CAP_DEAD1 0x02000000 +#define SVGA_CAP_CMD_BUFFERS_2 0x04000000 +#define SVGA_CAP_GBOBJECTS 0x08000000 /* * FIFO register indices. --- linux-3.13.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_buffer.c +++ linux-3.13.0/drivers/gpu/drm/vmwgfx/vmwgfx_buffer.c @@ -40,6 +40,10 @@ static uint32_t sys_placement_flags = TTM_PL_FLAG_SYSTEM | TTM_PL_FLAG_CACHED; +static uint32_t sys_ne_placement_flags = TTM_PL_FLAG_SYSTEM | + TTM_PL_FLAG_CACHED | + TTM_PL_FLAG_NO_EVICT; + static uint32_t gmr_placement_flags = VMW_PL_FLAG_GMR | TTM_PL_FLAG_CACHED; @@ -47,6 +51,9 @@ TTM_PL_FLAG_CACHED | TTM_PL_FLAG_NO_EVICT; +static uint32_t mob_placement_flags = VMW_PL_FLAG_MOB | + TTM_PL_FLAG_CACHED; + struct ttm_placement vmw_vram_placement = { .fpfn = 0, .lpfn = 0, @@ -116,16 +123,26 @@ .busy_placement = &sys_placement_flags }; +struct ttm_placement vmw_sys_ne_placement = { + .fpfn = 0, + .lpfn = 0, + .num_placement = 1, + .placement = &sys_ne_placement_flags, + .num_busy_placement = 1, + .busy_placement = &sys_ne_placement_flags +}; + static uint32_t evictable_placement_flags[] = { TTM_PL_FLAG_SYSTEM | TTM_PL_FLAG_CACHED, TTM_PL_FLAG_VRAM | TTM_PL_FLAG_CACHED, - VMW_PL_FLAG_GMR | TTM_PL_FLAG_CACHED + VMW_PL_FLAG_GMR | TTM_PL_FLAG_CACHED, + VMW_PL_FLAG_MOB | TTM_PL_FLAG_CACHED }; struct ttm_placement vmw_evictable_placement = { .fpfn = 0, .lpfn = 0, - .num_placement = 3, + .num_placement = 4, .placement = evictable_placement_flags, .num_busy_placement = 1, .busy_placement = &sys_placement_flags @@ -140,10 +157,21 @@ .busy_placement = gmr_vram_placement_flags }; +struct ttm_placement vmw_mob_placement = { + .fpfn = 0, + .lpfn = 0, + .num_placement = 1, + .num_busy_placement = 1, + .placement = &mob_placement_flags, + .busy_placement = &mob_placement_flags +}; + struct vmw_ttm_tt { struct ttm_dma_tt dma_ttm; struct vmw_private *dev_priv; int gmr_id; + struct vmw_mob *mob; + int mem_type; struct sg_table sgt; struct vmw_sg_table vsgt; uint64_t sg_alloc_size; @@ -244,6 +272,7 @@ viter->dma_address = &__vmw_piter_dma_addr; viter->page = &__vmw_piter_non_sg_page; viter->addrs = vsgt->addrs; + viter->pages = vsgt->pages; break; case vmw_dma_map_populate: case vmw_dma_map_bind: @@ -424,6 +453,63 @@ vmw_tt->mapped = false; } + +/** + * vmw_bo_map_dma - Make sure buffer object pages are visible to the device + * + * @bo: Pointer to a struct ttm_buffer_object + * + * Wrapper around vmw_ttm_map_dma, that takes a TTM buffer object pointer + * instead of a pointer to a struct vmw_ttm_backend as argument. + * Note that the buffer object must be either pinned or reserved before + * calling this function. + */ +int vmw_bo_map_dma(struct ttm_buffer_object *bo) +{ + struct vmw_ttm_tt *vmw_tt = + container_of(bo->ttm, struct vmw_ttm_tt, dma_ttm.ttm); + + return vmw_ttm_map_dma(vmw_tt); +} + + +/** + * vmw_bo_unmap_dma - Make sure buffer object pages are visible to the device + * + * @bo: Pointer to a struct ttm_buffer_object + * + * Wrapper around vmw_ttm_unmap_dma, that takes a TTM buffer object pointer + * instead of a pointer to a struct vmw_ttm_backend as argument. + */ +void vmw_bo_unmap_dma(struct ttm_buffer_object *bo) +{ + struct vmw_ttm_tt *vmw_tt = + container_of(bo->ttm, struct vmw_ttm_tt, dma_ttm.ttm); + + vmw_ttm_unmap_dma(vmw_tt); +} + + +/** + * vmw_bo_sg_table - Return a struct vmw_sg_table object for a + * TTM buffer object + * + * @bo: Pointer to a struct ttm_buffer_object + * + * Returns a pointer to a struct vmw_sg_table object. The object should + * not be freed after use. + * Note that for the device addresses to be valid, the buffer object must + * either be reserved or pinned. + */ +const struct vmw_sg_table *vmw_bo_sg_table(struct ttm_buffer_object *bo) +{ + struct vmw_ttm_tt *vmw_tt = + container_of(bo->ttm, struct vmw_ttm_tt, dma_ttm.ttm); + + return &vmw_tt->vsgt; +} + + static int vmw_ttm_bind(struct ttm_tt *ttm, struct ttm_mem_reg *bo_mem) { struct vmw_ttm_tt *vmw_be = @@ -435,9 +521,27 @@ return ret; vmw_be->gmr_id = bo_mem->start; + vmw_be->mem_type = bo_mem->mem_type; + + switch (bo_mem->mem_type) { + case VMW_PL_GMR: + return vmw_gmr_bind(vmw_be->dev_priv, &vmw_be->vsgt, + ttm->num_pages, vmw_be->gmr_id); + case VMW_PL_MOB: + if (unlikely(vmw_be->mob == NULL)) { + vmw_be->mob = + vmw_mob_create(ttm->num_pages); + if (unlikely(vmw_be->mob == NULL)) + return -ENOMEM; + } - return vmw_gmr_bind(vmw_be->dev_priv, &vmw_be->vsgt, - ttm->num_pages, vmw_be->gmr_id); + return vmw_mob_bind(vmw_be->dev_priv, vmw_be->mob, + &vmw_be->vsgt, ttm->num_pages, + vmw_be->gmr_id); + default: + BUG(); + } + return 0; } static int vmw_ttm_unbind(struct ttm_tt *ttm) @@ -445,7 +549,16 @@ struct vmw_ttm_tt *vmw_be = container_of(ttm, struct vmw_ttm_tt, dma_ttm.ttm); - vmw_gmr_unbind(vmw_be->dev_priv, vmw_be->gmr_id); + switch (vmw_be->mem_type) { + case VMW_PL_GMR: + vmw_gmr_unbind(vmw_be->dev_priv, vmw_be->gmr_id); + break; + case VMW_PL_MOB: + vmw_mob_unbind(vmw_be->dev_priv, vmw_be->mob); + break; + default: + BUG(); + } if (vmw_be->dev_priv->map_mode == vmw_dma_map_bind) vmw_ttm_unmap_dma(vmw_be); @@ -453,6 +566,7 @@ return 0; } + static void vmw_ttm_destroy(struct ttm_tt *ttm) { struct vmw_ttm_tt *vmw_be = @@ -463,9 +577,14 @@ ttm_dma_tt_fini(&vmw_be->dma_ttm); else ttm_tt_fini(ttm); + + if (vmw_be->mob) + vmw_mob_destroy(vmw_be->mob); + kfree(vmw_be); } + static int vmw_ttm_populate(struct ttm_tt *ttm) { struct vmw_ttm_tt *vmw_tt = @@ -500,6 +619,12 @@ struct vmw_private *dev_priv = vmw_tt->dev_priv; struct ttm_mem_global *glob = vmw_mem_glob(dev_priv); + + if (vmw_tt->mob) { + vmw_mob_destroy(vmw_tt->mob); + vmw_tt->mob = NULL; + } + vmw_ttm_unmap_dma(vmw_tt); if (dev_priv->map_mode == vmw_dma_alloc_coherent) { size_t size = @@ -517,7 +642,7 @@ .destroy = vmw_ttm_destroy, }; -struct ttm_tt *vmw_ttm_tt_create(struct ttm_bo_device *bdev, +static struct ttm_tt *vmw_ttm_tt_create(struct ttm_bo_device *bdev, unsigned long size, uint32_t page_flags, struct page *dummy_read_page) { @@ -530,6 +655,7 @@ vmw_be->dma_ttm.ttm.func = &vmw_ttm_func; vmw_be->dev_priv = container_of(bdev, struct vmw_private, bdev); + vmw_be->mob = NULL; if (vmw_be->dev_priv->map_mode == vmw_dma_alloc_coherent) ret = ttm_dma_tt_init(&vmw_be->dma_ttm, bdev, size, page_flags, @@ -546,12 +672,12 @@ return NULL; } -int vmw_invalidate_caches(struct ttm_bo_device *bdev, uint32_t flags) +static int vmw_invalidate_caches(struct ttm_bo_device *bdev, uint32_t flags) { return 0; } -int vmw_init_mem_type(struct ttm_bo_device *bdev, uint32_t type, +static int vmw_init_mem_type(struct ttm_bo_device *bdev, uint32_t type, struct ttm_mem_type_manager *man) { switch (type) { @@ -571,6 +697,7 @@ man->default_caching = TTM_PL_FLAG_CACHED; break; case VMW_PL_GMR: + case VMW_PL_MOB: /* * "Guest Memory Regions" is an aperture like feature with * one slot per bo. There is an upper limit of the number of @@ -589,7 +716,7 @@ return 0; } -void vmw_evict_flags(struct ttm_buffer_object *bo, +static void vmw_evict_flags(struct ttm_buffer_object *bo, struct ttm_placement *placement) { *placement = vmw_sys_placement; @@ -618,6 +745,7 @@ switch (mem->mem_type) { case TTM_PL_SYSTEM: case VMW_PL_GMR: + case VMW_PL_MOB: return 0; case TTM_PL_VRAM: mem->bus.offset = mem->start << PAGE_SHIFT; @@ -677,6 +805,38 @@ VMW_FENCE_WAIT_TIMEOUT); } +/** + * vmw_move_notify - TTM move_notify_callback + * + * @bo: The TTM buffer object about to move. + * @mem: The truct ttm_mem_reg indicating to what memory + * region the move is taking place. + * + * Calls move_notify for all subsystems needing it. + * (currently only resources). + */ +static void vmw_move_notify(struct ttm_buffer_object *bo, + struct ttm_mem_reg *mem) +{ + vmw_resource_move_notify(bo, mem); +} + + +/** + * vmw_swap_notify - TTM move_notify_callback + * + * @bo: The TTM buffer object about to be swapped out. + */ +static void vmw_swap_notify(struct ttm_buffer_object *bo) +{ + struct ttm_bo_device *bdev = bo->bdev; + + spin_lock(&bdev->fence_lock); + ttm_bo_wait(bo, false, false, false); + spin_unlock(&bdev->fence_lock); +} + + struct ttm_bo_driver vmw_bo_driver = { .ttm_tt_create = &vmw_ttm_tt_create, .ttm_tt_populate = &vmw_ttm_populate, @@ -691,8 +851,8 @@ .sync_obj_flush = vmw_sync_obj_flush, .sync_obj_unref = vmw_sync_obj_unref, .sync_obj_ref = vmw_sync_obj_ref, - .move_notify = NULL, - .swap_notify = NULL, + .move_notify = vmw_move_notify, + .swap_notify = vmw_swap_notify, .fault_reserve_notify = &vmw_ttm_fault_reserve_notify, .io_mem_reserve = &vmw_ttm_io_mem_reserve, .io_mem_free = &vmw_ttm_io_mem_free, --- linux-3.13.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_context.c +++ linux-3.13.0/drivers/gpu/drm/vmwgfx/vmwgfx_context.c @@ -32,12 +32,30 @@ struct vmw_user_context { struct ttm_base_object base; struct vmw_resource res; + struct vmw_ctx_binding_state cbs; }; + + +typedef int (*vmw_scrub_func)(struct vmw_ctx_bindinfo *, bool); + static void vmw_user_context_free(struct vmw_resource *res); static struct vmw_resource * vmw_user_context_base_to_res(struct ttm_base_object *base); +static int vmw_gb_context_create(struct vmw_resource *res); +static int vmw_gb_context_bind(struct vmw_resource *res, + struct ttm_validate_buffer *val_buf); +static int vmw_gb_context_unbind(struct vmw_resource *res, + bool readback, + struct ttm_validate_buffer *val_buf); +static int vmw_gb_context_destroy(struct vmw_resource *res); +static int vmw_context_scrub_shader(struct vmw_ctx_bindinfo *bi, bool rebind); +static int vmw_context_scrub_render_target(struct vmw_ctx_bindinfo *bi, + bool rebind); +static int vmw_context_scrub_texture(struct vmw_ctx_bindinfo *bi, bool rebind); +static void vmw_context_binding_state_scrub(struct vmw_ctx_binding_state *cbs); +static void vmw_context_binding_state_kill(struct vmw_ctx_binding_state *cbs); static uint64_t vmw_user_context_size; static const struct vmw_user_resource_conv user_context_conv = { @@ -62,6 +80,23 @@ .unbind = NULL }; +static const struct vmw_res_func vmw_gb_context_func = { + .res_type = vmw_res_context, + .needs_backup = true, + .may_evict = true, + .type_name = "guest backed contexts", + .backup_placement = &vmw_mob_placement, + .create = vmw_gb_context_create, + .destroy = vmw_gb_context_destroy, + .bind = vmw_gb_context_bind, + .unbind = vmw_gb_context_unbind +}; + +static const vmw_scrub_func vmw_scrub_funcs[vmw_ctx_binding_max] = { + [vmw_ctx_binding_shader] = vmw_context_scrub_shader, + [vmw_ctx_binding_rt] = vmw_context_scrub_render_target, + [vmw_ctx_binding_tex] = vmw_context_scrub_texture }; + /** * Context management: */ @@ -76,6 +111,20 @@ } *cmd; + if (res->func->destroy == vmw_gb_context_destroy) { + mutex_lock(&dev_priv->cmdbuf_mutex); + mutex_lock(&dev_priv->binding_mutex); + (void) vmw_context_binding_state_kill + (&container_of(res, struct vmw_user_context, res)->cbs); + (void) vmw_gb_context_destroy(res); + if (dev_priv->pinned_bo != NULL && + !dev_priv->query_cid_valid) + __vmw_execbuf_release_pinned_bo(dev_priv, NULL); + mutex_unlock(&dev_priv->binding_mutex); + mutex_unlock(&dev_priv->cmdbuf_mutex); + return; + } + vmw_execbuf_release_pinned_bo(dev_priv); cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd)); if (unlikely(cmd == NULL)) { @@ -92,6 +141,33 @@ vmw_3d_resource_dec(dev_priv, false); } +static int vmw_gb_context_init(struct vmw_private *dev_priv, + struct vmw_resource *res, + void (*res_free) (struct vmw_resource *res)) +{ + int ret; + struct vmw_user_context *uctx = + container_of(res, struct vmw_user_context, res); + + ret = vmw_resource_init(dev_priv, res, true, + res_free, &vmw_gb_context_func); + res->backup_size = SVGA3D_CONTEXT_DATA_SIZE; + + if (unlikely(ret != 0)) { + if (res_free) + res_free(res); + else + kfree(res); + return ret; + } + + memset(&uctx->cbs, 0, sizeof(uctx->cbs)); + INIT_LIST_HEAD(&uctx->cbs.list); + + vmw_resource_activate(res, vmw_hw_context_destroy); + return 0; +} + static int vmw_context_init(struct vmw_private *dev_priv, struct vmw_resource *res, void (*res_free) (struct vmw_resource *res)) @@ -103,6 +179,9 @@ SVGA3dCmdDefineContext body; } *cmd; + if (dev_priv->has_mob) + return vmw_gb_context_init(dev_priv, res, res_free); + ret = vmw_resource_init(dev_priv, res, false, res_free, &vmw_legacy_context_func); @@ -154,6 +233,180 @@ return (ret == 0) ? res : NULL; } + +static int vmw_gb_context_create(struct vmw_resource *res) +{ + struct vmw_private *dev_priv = res->dev_priv; + int ret; + struct { + SVGA3dCmdHeader header; + SVGA3dCmdDefineGBContext body; + } *cmd; + + if (likely(res->id != -1)) + return 0; + + ret = vmw_resource_alloc_id(res); + if (unlikely(ret != 0)) { + DRM_ERROR("Failed to allocate a context id.\n"); + goto out_no_id; + } + + if (unlikely(res->id >= VMWGFX_NUM_GB_CONTEXT)) { + ret = -EBUSY; + goto out_no_fifo; + } + + cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd)); + if (unlikely(cmd == NULL)) { + DRM_ERROR("Failed reserving FIFO space for context " + "creation.\n"); + ret = -ENOMEM; + goto out_no_fifo; + } + + cmd->header.id = SVGA_3D_CMD_DEFINE_GB_CONTEXT; + cmd->header.size = sizeof(cmd->body); + cmd->body.cid = res->id; + vmw_fifo_commit(dev_priv, sizeof(*cmd)); + (void) vmw_3d_resource_inc(dev_priv, false); + + return 0; + +out_no_fifo: + vmw_resource_release_id(res); +out_no_id: + return ret; +} + +static int vmw_gb_context_bind(struct vmw_resource *res, + struct ttm_validate_buffer *val_buf) +{ + struct vmw_private *dev_priv = res->dev_priv; + struct { + SVGA3dCmdHeader header; + SVGA3dCmdBindGBContext body; + } *cmd; + struct ttm_buffer_object *bo = val_buf->bo; + + BUG_ON(bo->mem.mem_type != VMW_PL_MOB); + + cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd)); + if (unlikely(cmd == NULL)) { + DRM_ERROR("Failed reserving FIFO space for context " + "binding.\n"); + return -ENOMEM; + } + + cmd->header.id = SVGA_3D_CMD_BIND_GB_CONTEXT; + cmd->header.size = sizeof(cmd->body); + cmd->body.cid = res->id; + cmd->body.mobid = bo->mem.start; + cmd->body.validContents = res->backup_dirty; + res->backup_dirty = false; + vmw_fifo_commit(dev_priv, sizeof(*cmd)); + + return 0; +} + +static int vmw_gb_context_unbind(struct vmw_resource *res, + bool readback, + struct ttm_validate_buffer *val_buf) +{ + struct vmw_private *dev_priv = res->dev_priv; + struct ttm_buffer_object *bo = val_buf->bo; + struct vmw_fence_obj *fence; + struct vmw_user_context *uctx = + container_of(res, struct vmw_user_context, res); + + struct { + SVGA3dCmdHeader header; + SVGA3dCmdReadbackGBContext body; + } *cmd1; + struct { + SVGA3dCmdHeader header; + SVGA3dCmdBindGBContext body; + } *cmd2; + uint32_t submit_size; + uint8_t *cmd; + + + BUG_ON(bo->mem.mem_type != VMW_PL_MOB); + + mutex_lock(&dev_priv->binding_mutex); + vmw_context_binding_state_scrub(&uctx->cbs); + + submit_size = sizeof(*cmd2) + (readback ? sizeof(*cmd1) : 0); + + cmd = vmw_fifo_reserve(dev_priv, submit_size); + if (unlikely(cmd == NULL)) { + DRM_ERROR("Failed reserving FIFO space for context " + "unbinding.\n"); + mutex_unlock(&dev_priv->binding_mutex); + return -ENOMEM; + } + + cmd2 = (void *) cmd; + if (readback) { + cmd1 = (void *) cmd; + cmd1->header.id = SVGA_3D_CMD_READBACK_GB_CONTEXT; + cmd1->header.size = sizeof(cmd1->body); + cmd1->body.cid = res->id; + cmd2 = (void *) (&cmd1[1]); + } + cmd2->header.id = SVGA_3D_CMD_BIND_GB_CONTEXT; + cmd2->header.size = sizeof(cmd2->body); + cmd2->body.cid = res->id; + cmd2->body.mobid = SVGA3D_INVALID_ID; + + vmw_fifo_commit(dev_priv, submit_size); + mutex_unlock(&dev_priv->binding_mutex); + + /* + * Create a fence object and fence the backup buffer. + */ + + (void) vmw_execbuf_fence_commands(NULL, dev_priv, + &fence, NULL); + + vmw_fence_single_bo(bo, fence); + + if (likely(fence != NULL)) + vmw_fence_obj_unreference(&fence); + + return 0; +} + +static int vmw_gb_context_destroy(struct vmw_resource *res) +{ + struct vmw_private *dev_priv = res->dev_priv; + struct { + SVGA3dCmdHeader header; + SVGA3dCmdDestroyGBContext body; + } *cmd; + + if (likely(res->id == -1)) + return 0; + + cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd)); + if (unlikely(cmd == NULL)) { + DRM_ERROR("Failed reserving FIFO space for context " + "destruction.\n"); + return -ENOMEM; + } + + cmd->header.id = SVGA_3D_CMD_DESTROY_GB_CONTEXT; + cmd->header.size = sizeof(cmd->body); + cmd->body.cid = res->id; + vmw_fifo_commit(dev_priv, sizeof(*cmd)); + if (dev_priv->query_cid == res->id) + dev_priv->query_cid_valid = false; + vmw_resource_release_id(res); + vmw_3d_resource_dec(dev_priv, false); + + return 0; +} + /** * User-space context management: */ @@ -272,3 +525,380 @@ return ret; } + +/** + * vmw_context_scrub_shader - scrub a shader binding from a context. + * + * @bi: single binding information. + * @rebind: Whether to issue a bind instead of scrub command. + */ +static int vmw_context_scrub_shader(struct vmw_ctx_bindinfo *bi, bool rebind) +{ + struct vmw_private *dev_priv = bi->ctx->dev_priv; + struct { + SVGA3dCmdHeader header; + SVGA3dCmdSetShader body; + } *cmd; + + cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd)); + if (unlikely(cmd == NULL)) { + DRM_ERROR("Failed reserving FIFO space for shader " + "unbinding.\n"); + return -ENOMEM; + } + + cmd->header.id = SVGA_3D_CMD_SET_SHADER; + cmd->header.size = sizeof(cmd->body); + cmd->body.cid = bi->ctx->id; + cmd->body.type = bi->i1.shader_type; + cmd->body.shid = ((rebind) ? bi->res->id : SVGA3D_INVALID_ID); + vmw_fifo_commit(dev_priv, sizeof(*cmd)); + + return 0; +} + +/** + * vmw_context_scrub_render_target - scrub a render target binding + * from a context. + * + * @bi: single binding information. + * @rebind: Whether to issue a bind instead of scrub command. + */ +static int vmw_context_scrub_render_target(struct vmw_ctx_bindinfo *bi, + bool rebind) +{ + struct vmw_private *dev_priv = bi->ctx->dev_priv; + struct { + SVGA3dCmdHeader header; + SVGA3dCmdSetRenderTarget body; + } *cmd; + + cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd)); + if (unlikely(cmd == NULL)) { + DRM_ERROR("Failed reserving FIFO space for render target " + "unbinding.\n"); + return -ENOMEM; + } + + cmd->header.id = SVGA_3D_CMD_SETRENDERTARGET; + cmd->header.size = sizeof(cmd->body); + cmd->body.cid = bi->ctx->id; + cmd->body.type = bi->i1.rt_type; + cmd->body.target.sid = ((rebind) ? bi->res->id : SVGA3D_INVALID_ID); + cmd->body.target.face = 0; + cmd->body.target.mipmap = 0; + vmw_fifo_commit(dev_priv, sizeof(*cmd)); + + return 0; +} + +/** + * vmw_context_scrub_texture - scrub a texture binding from a context. + * + * @bi: single binding information. + * @rebind: Whether to issue a bind instead of scrub command. + * + * TODO: Possibly complement this function with a function that takes + * a list of texture bindings and combines them to a single command. + */ +static int vmw_context_scrub_texture(struct vmw_ctx_bindinfo *bi, + bool rebind) +{ + struct vmw_private *dev_priv = bi->ctx->dev_priv; + struct { + SVGA3dCmdHeader header; + struct { + SVGA3dCmdSetTextureState c; + SVGA3dTextureState s1; + } body; + } *cmd; + + cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd)); + if (unlikely(cmd == NULL)) { + DRM_ERROR("Failed reserving FIFO space for texture " + "unbinding.\n"); + return -ENOMEM; + } + + + cmd->header.id = SVGA_3D_CMD_SETTEXTURESTATE; + cmd->header.size = sizeof(cmd->body); + cmd->body.c.cid = bi->ctx->id; + cmd->body.s1.stage = bi->i1.texture_stage; + cmd->body.s1.name = SVGA3D_TS_BIND_TEXTURE; + cmd->body.s1.value = ((rebind) ? bi->res->id : SVGA3D_INVALID_ID); + vmw_fifo_commit(dev_priv, sizeof(*cmd)); + + return 0; +} + +/** + * vmw_context_binding_drop: Stop tracking a context binding + * + * @cb: Pointer to binding tracker storage. + * + * Stops tracking a context binding, and re-initializes its storage. + * Typically used when the context binding is replaced with a binding to + * another (or the same, for that matter) resource. + */ +static void vmw_context_binding_drop(struct vmw_ctx_binding *cb) +{ + list_del(&cb->ctx_list); + if (!list_empty(&cb->res_list)) + list_del(&cb->res_list); + cb->bi.ctx = NULL; +} + +/** + * vmw_context_binding_add: Start tracking a context binding + * + * @cbs: Pointer to the context binding state tracker. + * @bi: Information about the binding to track. + * + * Performs basic checks on the binding to make sure arguments are within + * bounds and then starts tracking the binding in the context binding + * state structure @cbs. + */ +int vmw_context_binding_add(struct vmw_ctx_binding_state *cbs, + const struct vmw_ctx_bindinfo *bi) +{ + struct vmw_ctx_binding *loc; + + switch (bi->bt) { + case vmw_ctx_binding_rt: + if (unlikely((unsigned)bi->i1.rt_type >= SVGA3D_RT_MAX)) { + DRM_ERROR("Illegal render target type %u.\n", + (unsigned) bi->i1.rt_type); + return -EINVAL; + } + loc = &cbs->render_targets[bi->i1.rt_type]; + break; + case vmw_ctx_binding_tex: + if (unlikely((unsigned)bi->i1.texture_stage >= + SVGA3D_NUM_TEXTURE_UNITS)) { + DRM_ERROR("Illegal texture/sampler unit %u.\n", + (unsigned) bi->i1.texture_stage); + return -EINVAL; + } + loc = &cbs->texture_units[bi->i1.texture_stage]; + break; + case vmw_ctx_binding_shader: + if (unlikely((unsigned)bi->i1.shader_type >= + SVGA3D_SHADERTYPE_MAX)) { + DRM_ERROR("Illegal shader type %u.\n", + (unsigned) bi->i1.shader_type); + return -EINVAL; + } + loc = &cbs->shaders[bi->i1.shader_type]; + break; + default: + BUG(); + } + + if (loc->bi.ctx != NULL) + vmw_context_binding_drop(loc); + + loc->bi = *bi; + loc->bi.scrubbed = false; + list_add_tail(&loc->ctx_list, &cbs->list); + INIT_LIST_HEAD(&loc->res_list); + + return 0; +} + +/** + * vmw_context_binding_transfer: Transfer a context binding tracking entry. + * + * @cbs: Pointer to the persistent context binding state tracker. + * @bi: Information about the binding to track. + * + */ +static void vmw_context_binding_transfer(struct vmw_ctx_binding_state *cbs, + const struct vmw_ctx_bindinfo *bi) +{ + struct vmw_ctx_binding *loc; + + switch (bi->bt) { + case vmw_ctx_binding_rt: + loc = &cbs->render_targets[bi->i1.rt_type]; + break; + case vmw_ctx_binding_tex: + loc = &cbs->texture_units[bi->i1.texture_stage]; + break; + case vmw_ctx_binding_shader: + loc = &cbs->shaders[bi->i1.shader_type]; + break; + default: + BUG(); + } + + if (loc->bi.ctx != NULL) + vmw_context_binding_drop(loc); + + if (bi->res != NULL) { + loc->bi = *bi; + list_add_tail(&loc->ctx_list, &cbs->list); + list_add_tail(&loc->res_list, &bi->res->binding_head); + } +} + +/** + * vmw_context_binding_kill - Kill a binding on the device + * and stop tracking it. + * + * @cb: Pointer to binding tracker storage. + * + * Emits FIFO commands to scrub a binding represented by @cb. + * Then stops tracking the binding and re-initializes its storage. + */ +static void vmw_context_binding_kill(struct vmw_ctx_binding *cb) +{ + if (!cb->bi.scrubbed) { + (void) vmw_scrub_funcs[cb->bi.bt](&cb->bi, false); + cb->bi.scrubbed = true; + } + vmw_context_binding_drop(cb); +} + +/** + * vmw_context_binding_state_kill - Kill all bindings associated with a + * struct vmw_ctx_binding state structure, and re-initialize the structure. + * + * @cbs: Pointer to the context binding state tracker. + * + * Emits commands to scrub all bindings associated with the + * context binding state tracker. Then re-initializes the whole structure. + */ +static void vmw_context_binding_state_kill(struct vmw_ctx_binding_state *cbs) +{ + struct vmw_ctx_binding *entry, *next; + + list_for_each_entry_safe(entry, next, &cbs->list, ctx_list) + vmw_context_binding_kill(entry); +} + +/** + * vmw_context_binding_state_scrub - Scrub all bindings associated with a + * struct vmw_ctx_binding state structure. + * + * @cbs: Pointer to the context binding state tracker. + * + * Emits commands to scrub all bindings associated with the + * context binding state tracker. + */ +static void vmw_context_binding_state_scrub(struct vmw_ctx_binding_state *cbs) +{ + struct vmw_ctx_binding *entry; + + list_for_each_entry(entry, &cbs->list, ctx_list) { + if (!entry->bi.scrubbed) { + (void) vmw_scrub_funcs[entry->bi.bt](&entry->bi, false); + entry->bi.scrubbed = true; + } + } +} + +/** + * vmw_context_binding_res_list_kill - Kill all bindings on a + * resource binding list + * + * @head: list head of resource binding list + * + * Kills all bindings associated with a specific resource. Typically + * called before the resource is destroyed. + */ +void vmw_context_binding_res_list_kill(struct list_head *head) +{ + struct vmw_ctx_binding *entry, *next; + + list_for_each_entry_safe(entry, next, head, res_list) + vmw_context_binding_kill(entry); +} + +/** + * vmw_context_binding_res_list_scrub - Scrub all bindings on a + * resource binding list + * + * @head: list head of resource binding list + * + * Scrub all bindings associated with a specific resource. Typically + * called before the resource is evicted. + */ +void vmw_context_binding_res_list_scrub(struct list_head *head) +{ + struct vmw_ctx_binding *entry; + + list_for_each_entry(entry, head, res_list) { + if (!entry->bi.scrubbed) { + (void) vmw_scrub_funcs[entry->bi.bt](&entry->bi, false); + entry->bi.scrubbed = true; + } + } +} + +/** + * vmw_context_binding_state_transfer - Commit staged binding info + * + * @ctx: Pointer to context to commit the staged binding info to. + * @from: Staged binding info built during execbuf. + * + * Transfers binding info from a temporary structure to the persistent + * structure in the context. This can be done once commands + */ +void vmw_context_binding_state_transfer(struct vmw_resource *ctx, + struct vmw_ctx_binding_state *from) +{ + struct vmw_user_context *uctx = + container_of(ctx, struct vmw_user_context, res); + struct vmw_ctx_binding *entry, *next; + + list_for_each_entry_safe(entry, next, &from->list, ctx_list) + vmw_context_binding_transfer(&uctx->cbs, &entry->bi); +} + +/** + * vmw_context_rebind_all - Rebind all scrubbed bindings of a context + * + * @ctx: The context resource + * + * Walks through the context binding list and rebinds all scrubbed + * resources. + */ +int vmw_context_rebind_all(struct vmw_resource *ctx) +{ + struct vmw_ctx_binding *entry; + struct vmw_user_context *uctx = + container_of(ctx, struct vmw_user_context, res); + struct vmw_ctx_binding_state *cbs = &uctx->cbs; + int ret; + + list_for_each_entry(entry, &cbs->list, ctx_list) { + if (likely(!entry->bi.scrubbed)) + continue; + + if (WARN_ON(entry->bi.res == NULL || entry->bi.res->id == + SVGA3D_INVALID_ID)) + continue; + + ret = vmw_scrub_funcs[entry->bi.bt](&entry->bi, true); + if (unlikely(ret != 0)) + return ret; + + entry->bi.scrubbed = false; + } + + return 0; +} + +/** + * vmw_context_binding_list - Return a list of context bindings + * + * @ctx: The context resource + * + * Returns the current list of bindings of the given context. Note that + * this list becomes stale as soon as the dev_priv::binding_mutex is unlocked. + */ +struct list_head *vmw_context_binding_list(struct vmw_resource *ctx) +{ + return &(container_of(ctx, struct vmw_user_context, res)->cbs.list); +} --- linux-3.13.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_dmabuf.c +++ linux-3.13.0/drivers/gpu/drm/vmwgfx/vmwgfx_dmabuf.c @@ -290,8 +290,7 @@ /** * vmw_bo_pin - Pin or unpin a buffer object without moving it. * - * @bo: The buffer object. Must be reserved, and present either in VRAM - * or GMR memory. + * @bo: The buffer object. Must be reserved. * @pin: Whether to pin or unpin. * */ @@ -303,10 +302,9 @@ int ret; lockdep_assert_held(&bo->resv->lock.base); - BUG_ON(old_mem_type != TTM_PL_VRAM && - old_mem_type != VMW_PL_GMR); - pl_flags = TTM_PL_FLAG_VRAM | VMW_PL_FLAG_GMR | TTM_PL_FLAG_CACHED; + pl_flags = TTM_PL_FLAG_VRAM | VMW_PL_FLAG_GMR | VMW_PL_FLAG_MOB + | TTM_PL_FLAG_SYSTEM | TTM_PL_FLAG_CACHED; if (pin) pl_flags |= TTM_PL_FLAG_NO_EVICT; --- linux-3.13.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c +++ linux-3.13.0/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c @@ -25,6 +25,7 @@ * **************************************************************************/ #include +#include #include #include "vmwgfx_drv.h" @@ -112,6 +113,21 @@ #define DRM_IOCTL_VMW_UPDATE_LAYOUT \ DRM_IOW(DRM_COMMAND_BASE + DRM_VMW_UPDATE_LAYOUT, \ struct drm_vmw_update_layout_arg) +#define DRM_IOCTL_VMW_CREATE_SHADER \ + DRM_IOWR(DRM_COMMAND_BASE + DRM_VMW_CREATE_SHADER, \ + struct drm_vmw_shader_create_arg) +#define DRM_IOCTL_VMW_UNREF_SHADER \ + DRM_IOW(DRM_COMMAND_BASE + DRM_VMW_UNREF_SHADER, \ + struct drm_vmw_shader_arg) +#define DRM_IOCTL_VMW_GB_SURFACE_CREATE \ + DRM_IOWR(DRM_COMMAND_BASE + DRM_VMW_GB_SURFACE_CREATE, \ + union drm_vmw_gb_surface_create_arg) +#define DRM_IOCTL_VMW_GB_SURFACE_REF \ + DRM_IOWR(DRM_COMMAND_BASE + DRM_VMW_GB_SURFACE_REF, \ + union drm_vmw_gb_surface_reference_arg) +#define DRM_IOCTL_VMW_SYNCCPU \ + DRM_IOW(DRM_COMMAND_BASE + DRM_VMW_SYNCCPU, \ + struct drm_vmw_synccpu_arg) /** * The core DRM version of this macro doesn't account for @@ -177,6 +193,21 @@ VMW_IOCTL_DEF(VMW_UPDATE_LAYOUT, vmw_kms_update_layout_ioctl, DRM_MASTER | DRM_UNLOCKED), + VMW_IOCTL_DEF(VMW_CREATE_SHADER, + vmw_shader_define_ioctl, + DRM_AUTH | DRM_UNLOCKED), + VMW_IOCTL_DEF(VMW_UNREF_SHADER, + vmw_shader_destroy_ioctl, + DRM_AUTH | DRM_UNLOCKED), + VMW_IOCTL_DEF(VMW_GB_SURFACE_CREATE, + vmw_gb_surface_define_ioctl, + DRM_AUTH | DRM_UNLOCKED), + VMW_IOCTL_DEF(VMW_GB_SURFACE_REF, + vmw_gb_surface_reference_ioctl, + DRM_AUTH | DRM_UNLOCKED), + VMW_IOCTL_DEF(VMW_SYNCCPU, + vmw_user_dmabuf_synccpu_ioctl, + DRM_AUTH | DRM_UNLOCKED), }; static struct pci_device_id vmw_pci_id_list[] = { @@ -189,6 +220,7 @@ static int vmw_force_iommu; static int vmw_restrict_iommu; static int vmw_force_coherent; +static int vmw_restrict_dma_mask; static int vmw_probe(struct pci_dev *, const struct pci_device_id *); static void vmw_master_init(struct vmw_master *); @@ -203,6 +235,8 @@ module_param_named(restrict_iommu, vmw_restrict_iommu, int, 0600); MODULE_PARM_DESC(force_coherent, "Force coherent TTM pages"); module_param_named(force_coherent, vmw_force_coherent, int, 0600); +MODULE_PARM_DESC(restrict_dma_mask, "Restrict DMA mask to 44 bits with IOMMU"); +module_param_named(restrict_dma_mask, vmw_restrict_dma_mask, int, 0600); static void vmw_print_capabilities(uint32_t capabilities) @@ -240,38 +274,52 @@ DRM_INFO(" GMR2.\n"); if (capabilities & SVGA_CAP_SCREEN_OBJECT_2) DRM_INFO(" Screen Object 2.\n"); + if (capabilities & SVGA_CAP_COMMAND_BUFFERS) + DRM_INFO(" Command Buffers.\n"); + if (capabilities & SVGA_CAP_CMD_BUFFERS_2) + DRM_INFO(" Command Buffers 2.\n"); + if (capabilities & SVGA_CAP_GBOBJECTS) + DRM_INFO(" Guest Backed Resources.\n"); } - /** - * vmw_execbuf_prepare_dummy_query - Initialize a query result structure at - * the start of a buffer object. + * vmw_dummy_query_bo_create - create a bo to hold a dummy query result * - * @dev_priv: The device private structure. + * @dev_priv: A device private structure. * - * This function will idle the buffer using an uninterruptible wait, then - * map the first page and initialize a pending occlusion query result structure, - * Finally it will unmap the buffer. + * This function creates a small buffer object that holds the query + * result for dummy queries emitted as query barriers. + * The function will then map the first page and initialize a pending + * occlusion query result structure, Finally it will unmap the buffer. + * No interruptible waits are done within this function. * - * TODO: Since we're only mapping a single page, we should optimize the map - * to use kmap_atomic / iomap_atomic. + * Returns an error if bo creation or initialization fails. */ -static void vmw_dummy_query_bo_prepare(struct vmw_private *dev_priv) +static int vmw_dummy_query_bo_create(struct vmw_private *dev_priv) { + int ret; + struct ttm_buffer_object *bo; struct ttm_bo_kmap_obj map; volatile SVGA3dQueryResult *result; bool dummy; - int ret; - struct ttm_bo_device *bdev = &dev_priv->bdev; - struct ttm_buffer_object *bo = dev_priv->dummy_query_bo; - ttm_bo_reserve(bo, false, false, false, 0); - spin_lock(&bdev->fence_lock); - ret = ttm_bo_wait(bo, false, false, false); - spin_unlock(&bdev->fence_lock); + /* + * Create the bo as pinned, so that a tryreserve will + * immediately succeed. This is because we're the only + * user of the bo currently. + */ + ret = ttm_bo_create(&dev_priv->bdev, + PAGE_SIZE, + ttm_bo_type_device, + &vmw_sys_ne_placement, + 0, false, NULL, + &bo); + if (unlikely(ret != 0)) - (void) vmw_fallback_wait(dev_priv, false, true, 0, false, - 10*HZ); + return ret; + + ret = ttm_bo_reserve(bo, false, true, false, 0); + BUG_ON(ret != 0); ret = ttm_bo_kmap(bo, 0, 1, &map); if (likely(ret == 0)) { @@ -280,34 +328,19 @@ result->state = SVGA3D_QUERYSTATE_PENDING; result->result32 = 0xff; ttm_bo_kunmap(&map); - } else - DRM_ERROR("Dummy query buffer map failed.\n"); + } + vmw_bo_pin(bo, false); ttm_bo_unreserve(bo); -} + if (unlikely(ret != 0)) { + DRM_ERROR("Dummy query buffer map failed.\n"); + ttm_bo_unref(&bo); + } else + dev_priv->dummy_query_bo = bo; -/** - * vmw_dummy_query_bo_create - create a bo to hold a dummy query result - * - * @dev_priv: A device private structure. - * - * This function creates a small buffer object that holds the query - * result for dummy queries emitted as query barriers. - * No interruptible waits are done within this function. - * - * Returns an error if bo creation fails. - */ -static int vmw_dummy_query_bo_create(struct vmw_private *dev_priv) -{ - return ttm_bo_create(&dev_priv->bdev, - PAGE_SIZE, - ttm_bo_type_device, - &vmw_vram_sys_placement, - 0, false, NULL, - &dev_priv->dummy_query_bo); + return ret; } - static int vmw_request_device(struct vmw_private *dev_priv) { int ret; @@ -318,14 +351,24 @@ return ret; } vmw_fence_fifo_up(dev_priv->fman); + if (dev_priv->has_mob) { + ret = vmw_otables_setup(dev_priv); + if (unlikely(ret != 0)) { + DRM_ERROR("Unable to initialize " + "guest Memory OBjects.\n"); + goto out_no_mob; + } + } ret = vmw_dummy_query_bo_create(dev_priv); if (unlikely(ret != 0)) goto out_no_query_bo; - vmw_dummy_query_bo_prepare(dev_priv); return 0; out_no_query_bo: + if (dev_priv->has_mob) + vmw_otables_takedown(dev_priv); +out_no_mob: vmw_fence_fifo_down(dev_priv->fman); vmw_fifo_release(dev_priv, &dev_priv->fifo); return ret; @@ -341,10 +384,13 @@ BUG_ON(dev_priv->pinned_bo != NULL); ttm_bo_unref(&dev_priv->dummy_query_bo); + if (dev_priv->has_mob) + vmw_otables_takedown(dev_priv); vmw_fence_fifo_down(dev_priv->fman); vmw_fifo_release(dev_priv, &dev_priv->fifo); } + /** * Increase the 3d resource refcount. * If the count was prevously zero, initialize the fifo, switching to svga @@ -510,6 +556,33 @@ return 0; } +/** + * vmw_dma_masks - set required page- and dma masks + * + * @dev: Pointer to struct drm-device + * + * With 32-bit we can only handle 32 bit PFNs. Optionally set that + * restriction also for 64-bit systems. + */ +#ifdef CONFIG_INTEL_IOMMU +static int vmw_dma_masks(struct vmw_private *dev_priv) +{ + struct drm_device *dev = dev_priv->dev; + + if (intel_iommu_enabled && + (sizeof(unsigned long) == 4 || vmw_restrict_dma_mask)) { + DRM_INFO("Restricting DMA addresses to 44 bits.\n"); + return dma_set_mask(dev->dev, DMA_BIT_MASK(44)); + } + return 0; +} +#else +static int vmw_dma_masks(struct vmw_private *dev_priv) +{ + return 0; +} +#endif + static int vmw_driver_load(struct drm_device *dev, unsigned long chipset) { struct vmw_private *dev_priv; @@ -532,6 +605,7 @@ mutex_init(&dev_priv->hw_mutex); mutex_init(&dev_priv->cmdbuf_mutex); mutex_init(&dev_priv->release_mutex); + mutex_init(&dev_priv->binding_mutex); rwlock_init(&dev_priv->resource_lock); for (i = vmw_res_context; i < vmw_res_max; ++i) { @@ -578,14 +652,9 @@ vmw_get_initial_size(dev_priv); - if (dev_priv->capabilities & SVGA_CAP_GMR) { - dev_priv->max_gmr_descriptors = - vmw_read(dev_priv, - SVGA_REG_GMR_MAX_DESCRIPTOR_LENGTH); + if (dev_priv->capabilities & SVGA_CAP_GMR2) { dev_priv->max_gmr_ids = vmw_read(dev_priv, SVGA_REG_GMR_MAX_IDS); - } - if (dev_priv->capabilities & SVGA_CAP_GMR2) { dev_priv->max_gmr_pages = vmw_read(dev_priv, SVGA_REG_GMRS_MAX_PAGES); dev_priv->memory_size = @@ -598,23 +667,45 @@ */ dev_priv->memory_size = 512*1024*1024; } + dev_priv->max_mob_pages = 0; + dev_priv->max_mob_size = 0; + if (dev_priv->capabilities & SVGA_CAP_GBOBJECTS) { + uint64_t mem_size = + vmw_read(dev_priv, + SVGA_REG_SUGGESTED_GBOBJECT_MEM_SIZE_KB); + + dev_priv->max_mob_pages = mem_size * 1024 / PAGE_SIZE; + dev_priv->prim_bb_mem = + vmw_read(dev_priv, + SVGA_REG_MAX_PRIMARY_BOUNDING_BOX_MEM); + dev_priv->max_mob_size = + vmw_read(dev_priv, SVGA_REG_MOB_MAX_SIZE); + } else + dev_priv->prim_bb_mem = dev_priv->vram_size; + + ret = vmw_dma_masks(dev_priv); + if (unlikely(ret != 0)) { + mutex_unlock(&dev_priv->hw_mutex); + goto out_err0; + } + + if (unlikely(dev_priv->prim_bb_mem < dev_priv->vram_size)) + dev_priv->prim_bb_mem = dev_priv->vram_size; mutex_unlock(&dev_priv->hw_mutex); vmw_print_capabilities(dev_priv->capabilities); - if (dev_priv->capabilities & SVGA_CAP_GMR) { + if (dev_priv->capabilities & SVGA_CAP_GMR2) { DRM_INFO("Max GMR ids is %u\n", (unsigned)dev_priv->max_gmr_ids); - DRM_INFO("Max GMR descriptors is %u\n", - (unsigned)dev_priv->max_gmr_descriptors); - } - if (dev_priv->capabilities & SVGA_CAP_GMR2) { DRM_INFO("Max number of GMR pages is %u\n", (unsigned)dev_priv->max_gmr_pages); DRM_INFO("Max dedicated hypervisor surface memory is %u kiB\n", (unsigned)dev_priv->memory_size / 1024); } + DRM_INFO("Maximum display memory size is %u kiB\n", + dev_priv->prim_bb_mem / 1024); DRM_INFO("VRAM at 0x%08x size is %u kiB\n", dev_priv->vram_start, dev_priv->vram_size / 1024); DRM_INFO("MMIO at 0x%08x size is %u kiB\n", @@ -649,12 +740,22 @@ dev_priv->has_gmr = true; if (((dev_priv->capabilities & (SVGA_CAP_GMR | SVGA_CAP_GMR2)) == 0) || refuse_dma || ttm_bo_init_mm(&dev_priv->bdev, VMW_PL_GMR, - dev_priv->max_gmr_ids) != 0) { + VMW_PL_GMR) != 0) { DRM_INFO("No GMR memory available. " "Graphics memory resources are very limited.\n"); dev_priv->has_gmr = false; } + if (dev_priv->capabilities & SVGA_CAP_GBOBJECTS) { + dev_priv->has_mob = true; + if (ttm_bo_init_mm(&dev_priv->bdev, VMW_PL_MOB, + VMW_PL_MOB) != 0) { + DRM_INFO("No MOB memory available. " + "3D will be disabled.\n"); + dev_priv->has_mob = false; + } + } + dev_priv->mmio_mtrr = arch_phys_wc_add(dev_priv->mmio_start, dev_priv->mmio_size); @@ -757,6 +858,8 @@ iounmap(dev_priv->mmio_virt); out_err3: arch_phys_wc_del(dev_priv->mmio_mtrr); + if (dev_priv->has_mob) + (void) ttm_bo_clean_mm(&dev_priv->bdev, VMW_PL_MOB); if (dev_priv->has_gmr) (void) ttm_bo_clean_mm(&dev_priv->bdev, VMW_PL_GMR); (void)ttm_bo_clean_mm(&dev_priv->bdev, TTM_PL_VRAM); @@ -801,6 +904,8 @@ ttm_object_device_release(&dev_priv->tdev); iounmap(dev_priv->mmio_virt); arch_phys_wc_del(dev_priv->mmio_mtrr); + if (dev_priv->has_mob) + (void) ttm_bo_clean_mm(&dev_priv->bdev, VMW_PL_MOB); if (dev_priv->has_gmr) (void)ttm_bo_clean_mm(&dev_priv->bdev, VMW_PL_GMR); (void)ttm_bo_clean_mm(&dev_priv->bdev, TTM_PL_VRAM); @@ -840,6 +945,7 @@ drm_master_put(&vmw_fp->locked_master); } + vmw_compat_shader_man_destroy(vmw_fp->shman); ttm_object_file_release(&vmw_fp->tfile); kfree(vmw_fp); } @@ -859,11 +965,17 @@ if (unlikely(vmw_fp->tfile == NULL)) goto out_no_tfile; + vmw_fp->shman = vmw_compat_shader_man_create(dev_priv); + if (IS_ERR(vmw_fp->shman)) + goto out_no_shman; + file_priv->driver_priv = vmw_fp; dev_priv->bdev.dev_mapping = dev->dev_mapping; return 0; +out_no_shman: + ttm_object_file_release(&vmw_fp->tfile); out_no_tfile: kfree(vmw_fp); return ret; @@ -1265,6 +1377,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"); --- linux-3.13.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h +++ linux-3.13.0/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h @@ -40,9 +40,9 @@ #include #include "vmwgfx_fence.h" -#define VMWGFX_DRIVER_DATE "20120209" +#define VMWGFX_DRIVER_DATE "20140228" #define VMWGFX_DRIVER_MAJOR 2 -#define VMWGFX_DRIVER_MINOR 4 +#define VMWGFX_DRIVER_MINOR 5 #define VMWGFX_DRIVER_PATCHLEVEL 0 #define VMWGFX_FILE_PAGE_OFFSET 0x00100000 #define VMWGFX_FIFO_STATIC_SIZE (1024*1024) @@ -50,19 +50,39 @@ #define VMWGFX_MAX_VALIDATIONS 2048 #define VMWGFX_MAX_DISPLAYS 16 #define VMWGFX_CMD_BOUNCE_INIT_SIZE 32768 +#define VMWGFX_ENABLE_SCREEN_TARGET_OTABLE 0 + +/* + * Perhaps we should have sysfs entries for these. + */ +#define VMWGFX_NUM_GB_CONTEXT 256 +#define VMWGFX_NUM_GB_SHADER 20000 +#define VMWGFX_NUM_GB_SURFACE 32768 +#define VMWGFX_NUM_GB_SCREEN_TARGET VMWGFX_MAX_DISPLAYS +#define VMWGFX_NUM_MOB (VMWGFX_NUM_GB_CONTEXT +\ + VMWGFX_NUM_GB_SHADER +\ + VMWGFX_NUM_GB_SURFACE +\ + VMWGFX_NUM_GB_SCREEN_TARGET) #define VMW_PL_GMR TTM_PL_PRIV0 #define VMW_PL_FLAG_GMR TTM_PL_FLAG_PRIV0 +#define VMW_PL_MOB TTM_PL_PRIV1 +#define VMW_PL_FLAG_MOB TTM_PL_FLAG_PRIV1 #define VMW_RES_CONTEXT ttm_driver_type0 #define VMW_RES_SURFACE ttm_driver_type1 #define VMW_RES_STREAM ttm_driver_type2 #define VMW_RES_FENCE ttm_driver_type3 +#define VMW_RES_SHADER ttm_driver_type4 + +struct vmw_compat_shader_manager; struct vmw_fpriv { struct drm_master *locked_master; struct ttm_object_file *tfile; struct list_head fence_events; + bool gb_aware; + struct vmw_compat_shader_manager *shman; }; struct vmw_dma_buffer { @@ -82,6 +102,7 @@ struct vmw_validate_buffer { struct ttm_validate_buffer base; struct drm_hash_item hash; + bool validate_as_mob; }; struct vmw_res_func; @@ -98,6 +119,7 @@ const struct vmw_res_func *func; struct list_head lru_head; /* Protected by the resource lock */ struct list_head mob_head; /* Protected by @backup reserved */ + struct list_head binding_head; /* Protected by binding_mutex */ void (*res_free) (struct vmw_resource *res); void (*hw_destroy) (struct vmw_resource *res); }; @@ -106,6 +128,7 @@ vmw_res_context, vmw_res_surface, vmw_res_stream, + vmw_res_shader, vmw_res_max }; @@ -154,6 +177,7 @@ }; struct vmw_relocation { + SVGAMobId *mob_loc; SVGAGuestPtr *location; uint32_t index; }; @@ -229,11 +253,77 @@ struct page *(*page)(struct vmw_piter *); }; +/* + * enum vmw_ctx_binding_type - abstract resource to context binding types + */ +enum vmw_ctx_binding_type { + vmw_ctx_binding_shader, + vmw_ctx_binding_rt, + vmw_ctx_binding_tex, + vmw_ctx_binding_max +}; + +/** + * struct vmw_ctx_bindinfo - structure representing a single context binding + * + * @ctx: Pointer to the context structure. NULL means the binding is not + * active. + * @res: Non ref-counted pointer to the bound resource. + * @bt: The binding type. + * @i1: Union of information needed to unbind. + */ +struct vmw_ctx_bindinfo { + struct vmw_resource *ctx; + struct vmw_resource *res; + enum vmw_ctx_binding_type bt; + bool scrubbed; + union { + SVGA3dShaderType shader_type; + SVGA3dRenderTargetType rt_type; + uint32 texture_stage; + } i1; +}; + +/** + * struct vmw_ctx_binding - structure representing a single context binding + * - suitable for tracking in a context + * + * @ctx_list: List head for context. + * @res_list: List head for bound resource. + * @bi: Binding info + */ +struct vmw_ctx_binding { + struct list_head ctx_list; + struct list_head res_list; + struct vmw_ctx_bindinfo bi; +}; + + +/** + * struct vmw_ctx_binding_state - context binding state + * + * @list: linked list of individual bindings. + * @render_targets: Render target bindings. + * @texture_units: Texture units/samplers bindings. + * @shaders: Shader bindings. + * + * Note that this structure also provides storage space for the individual + * struct vmw_ctx_binding objects, so that no dynamic allocation is needed + * for individual bindings. + * + */ +struct vmw_ctx_binding_state { + struct list_head list; + struct vmw_ctx_binding render_targets[SVGA3D_RT_MAX]; + struct vmw_ctx_binding texture_units[SVGA3D_NUM_TEXTURE_UNITS]; + struct vmw_ctx_binding shaders[SVGA3D_SHADERTYPE_MAX]; +}; + struct vmw_sw_context{ struct drm_open_hash res_ht; bool res_ht_initialized; bool kernel; /**< is the called made from the kernel */ - struct ttm_object_file *tfile; + struct vmw_fpriv *fp; struct list_head validate_nodes; struct vmw_relocation relocs[VMWGFX_MAX_RELOCATIONS]; uint32_t cur_reloc; @@ -250,6 +340,8 @@ struct vmw_resource *last_query_ctx; bool needs_post_query_barrier; struct vmw_resource *error_resource; + struct vmw_ctx_binding_state staged_bindings; + struct list_head staged_shaders; }; struct vmw_legacy_display; @@ -281,6 +373,7 @@ unsigned int io_start; uint32_t vram_start; uint32_t vram_size; + uint32_t prim_bb_mem; uint32_t mmio_start; uint32_t mmio_size; uint32_t fb_max_width; @@ -290,11 +383,13 @@ __le32 __iomem *mmio_virt; int mmio_mtrr; uint32_t capabilities; - uint32_t max_gmr_descriptors; uint32_t max_gmr_ids; uint32_t max_gmr_pages; + uint32_t max_mob_pages; + uint32_t max_mob_size; uint32_t memory_size; bool has_gmr; + bool has_mob; struct mutex hw_mutex; /* @@ -370,6 +465,7 @@ struct vmw_sw_context ctx; struct mutex cmdbuf_mutex; + struct mutex binding_mutex; /** * Operating mode. @@ -415,6 +511,12 @@ * DMA mapping stuff. */ enum vmw_dma_map_mode map_mode; + + /* + * Guest Backed stuff + */ + struct ttm_buffer_object *otable_bo; + struct vmw_otable *otables; }; static inline struct vmw_surface *vmw_res_to_srf(struct vmw_resource *res) @@ -471,23 +573,14 @@ * Resource utilities - vmwgfx_resource.c */ struct vmw_user_resource_conv; -extern const struct vmw_user_resource_conv *user_surface_converter; -extern const struct vmw_user_resource_conv *user_context_converter; -extern struct vmw_resource *vmw_context_alloc(struct vmw_private *dev_priv); extern void vmw_resource_unreference(struct vmw_resource **p_res); extern struct vmw_resource *vmw_resource_reference(struct vmw_resource *res); +extern struct vmw_resource * +vmw_resource_reference_unless_doomed(struct vmw_resource *res); extern int vmw_resource_validate(struct vmw_resource *res); extern int vmw_resource_reserve(struct vmw_resource *res, bool no_backup); extern bool vmw_resource_needs_backup(const struct vmw_resource *res); -extern int vmw_context_destroy_ioctl(struct drm_device *dev, void *data, - struct drm_file *file_priv); -extern int vmw_context_define_ioctl(struct drm_device *dev, void *data, - struct drm_file *file_priv); -extern int vmw_context_check(struct vmw_private *dev_priv, - struct ttm_object_file *tfile, - int id, - struct vmw_resource **p_res); extern int vmw_user_lookup_handle(struct vmw_private *dev_priv, struct ttm_object_file *tfile, uint32_t handle, @@ -499,18 +592,6 @@ uint32_t handle, const struct vmw_user_resource_conv *converter, struct vmw_resource **p_res); -extern void vmw_surface_res_free(struct vmw_resource *res); -extern int vmw_surface_destroy_ioctl(struct drm_device *dev, void *data, - struct drm_file *file_priv); -extern int vmw_surface_define_ioctl(struct drm_device *dev, void *data, - struct drm_file *file_priv); -extern int vmw_surface_reference_ioctl(struct drm_device *dev, void *data, - struct drm_file *file_priv); -extern int vmw_surface_check(struct vmw_private *dev_priv, - struct ttm_object_file *tfile, - uint32_t handle, int *id); -extern int vmw_surface_validate(struct vmw_private *dev_priv, - struct vmw_surface *srf); extern void vmw_dmabuf_bo_free(struct ttm_buffer_object *bo); extern int vmw_dmabuf_init(struct vmw_private *dev_priv, struct vmw_dma_buffer *vmw_bo, @@ -519,10 +600,21 @@ void (*bo_free) (struct ttm_buffer_object *bo)); extern int vmw_user_dmabuf_verify_access(struct ttm_buffer_object *bo, struct ttm_object_file *tfile); +extern int vmw_user_dmabuf_alloc(struct vmw_private *dev_priv, + struct ttm_object_file *tfile, + uint32_t size, + bool shareable, + uint32_t *handle, + struct vmw_dma_buffer **p_dma_buf); +extern int vmw_user_dmabuf_reference(struct ttm_object_file *tfile, + struct vmw_dma_buffer *dma_buf, + uint32_t *handle); extern int vmw_dmabuf_alloc_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv); extern int vmw_dmabuf_unref_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv); +extern int vmw_user_dmabuf_synccpu_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); extern uint32_t vmw_dmabuf_validate_node(struct ttm_buffer_object *bo, uint32_t cur_validate_node); extern void vmw_dmabuf_validate_clear(struct ttm_buffer_object *bo); @@ -622,10 +714,16 @@ extern struct ttm_placement vmw_vram_gmr_placement; extern struct ttm_placement vmw_vram_gmr_ne_placement; extern struct ttm_placement vmw_sys_placement; +extern struct ttm_placement vmw_sys_ne_placement; extern struct ttm_placement vmw_evictable_placement; extern struct ttm_placement vmw_srf_placement; +extern struct ttm_placement vmw_mob_placement; extern struct ttm_bo_driver vmw_bo_driver; extern int vmw_dma_quiescent(struct drm_device *dev); +extern int vmw_bo_map_dma(struct ttm_buffer_object *bo); +extern void vmw_bo_unmap_dma(struct ttm_buffer_object *bo); +extern const struct vmw_sg_table * +vmw_bo_sg_table(struct ttm_buffer_object *bo); extern void vmw_piter_start(struct vmw_piter *viter, const struct vmw_sg_table *vsgt, unsigned long p_offs); @@ -832,6 +930,101 @@ uint32_t handle, uint32_t flags, int *prime_fd); +/* + * MemoryOBject management - vmwgfx_mob.c + */ +struct vmw_mob; +extern int vmw_mob_bind(struct vmw_private *dev_priv, struct vmw_mob *mob, + const struct vmw_sg_table *vsgt, + unsigned long num_data_pages, int32_t mob_id); +extern void vmw_mob_unbind(struct vmw_private *dev_priv, + struct vmw_mob *mob); +extern void vmw_mob_destroy(struct vmw_mob *mob); +extern struct vmw_mob *vmw_mob_create(unsigned long data_pages); +extern int vmw_otables_setup(struct vmw_private *dev_priv); +extern void vmw_otables_takedown(struct vmw_private *dev_priv); + +/* + * Context management - vmwgfx_context.c + */ + +extern const struct vmw_user_resource_conv *user_context_converter; + +extern struct vmw_resource *vmw_context_alloc(struct vmw_private *dev_priv); + +extern int vmw_context_check(struct vmw_private *dev_priv, + struct ttm_object_file *tfile, + int id, + struct vmw_resource **p_res); +extern int vmw_context_define_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +extern int vmw_context_destroy_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +extern int vmw_context_binding_add(struct vmw_ctx_binding_state *cbs, + const struct vmw_ctx_bindinfo *ci); +extern void +vmw_context_binding_state_transfer(struct vmw_resource *res, + struct vmw_ctx_binding_state *cbs); +extern void vmw_context_binding_res_list_kill(struct list_head *head); +extern void vmw_context_binding_res_list_scrub(struct list_head *head); +extern int vmw_context_rebind_all(struct vmw_resource *ctx); +extern struct list_head *vmw_context_binding_list(struct vmw_resource *ctx); + +/* + * Surface management - vmwgfx_surface.c + */ + +extern const struct vmw_user_resource_conv *user_surface_converter; + +extern void vmw_surface_res_free(struct vmw_resource *res); +extern int vmw_surface_destroy_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +extern int vmw_surface_define_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +extern int vmw_surface_reference_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +extern int vmw_gb_surface_define_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +extern int vmw_gb_surface_reference_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +extern int vmw_surface_check(struct vmw_private *dev_priv, + struct ttm_object_file *tfile, + uint32_t handle, int *id); +extern int vmw_surface_validate(struct vmw_private *dev_priv, + struct vmw_surface *srf); + +/* + * Shader management - vmwgfx_shader.c + */ + +extern const struct vmw_user_resource_conv *user_shader_converter; + +extern int vmw_shader_define_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +extern int vmw_shader_destroy_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +extern int vmw_compat_shader_lookup(struct vmw_compat_shader_manager *man, + SVGA3dShaderType shader_type, + u32 *user_key); +extern void vmw_compat_shaders_commit(struct vmw_compat_shader_manager *man, + struct list_head *list); +extern void vmw_compat_shaders_revert(struct vmw_compat_shader_manager *man, + struct list_head *list); +extern int vmw_compat_shader_remove(struct vmw_compat_shader_manager *man, + u32 user_key, + SVGA3dShaderType shader_type, + struct list_head *list); +extern int vmw_compat_shader_add(struct vmw_compat_shader_manager *man, + u32 user_key, const void *bytecode, + SVGA3dShaderType shader_type, + size_t size, + struct ttm_object_file *tfile, + struct list_head *list); +extern struct vmw_compat_shader_manager * +vmw_compat_shader_man_create(struct vmw_private *dev_priv); +extern void +vmw_compat_shader_man_destroy(struct vmw_compat_shader_manager *man); + /** * Inline helper functions --- linux-3.13.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c +++ linux-3.13.0/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c @@ -54,6 +54,8 @@ * @res: Ref-counted pointer to the resource. * @switch_backup: Boolean whether to switch backup buffer on unreserve. * @new_backup: Refcounted pointer to the new backup buffer. + * @staged_bindings: If @res is a context, tracks bindings set up during + * the command batch. Otherwise NULL. * @new_backup_offset: New backup buffer offset if @new_backup is non-NUll. * @first_usage: Set to true the first time the resource is referenced in * the command stream. @@ -65,12 +67,32 @@ struct drm_hash_item hash; struct vmw_resource *res; struct vmw_dma_buffer *new_backup; + struct vmw_ctx_binding_state *staged_bindings; unsigned long new_backup_offset; bool first_usage; bool no_buffer_needed; }; /** + * struct vmw_cmd_entry - Describe a command for the verifier + * + * @user_allow: Whether allowed from the execbuf ioctl. + * @gb_disable: Whether disabled if guest-backed objects are available. + * @gb_enable: Whether enabled iff guest-backed objects are available. + */ +struct vmw_cmd_entry { + int (*func) (struct vmw_private *, struct vmw_sw_context *, + SVGA3dCmdHeader *); + bool user_allow; + bool gb_disable; + bool gb_enable; +}; + +#define VMW_CMD_DEF(_cmd, _func, _user_allow, _gb_disable, _gb_enable) \ + [(_cmd) - SVGA_3D_CMD_BASE] = {(_func), (_user_allow),\ + (_gb_disable), (_gb_enable)} + +/** * vmw_resource_unreserve - unreserve resources previously reserved for * command submission. * @@ -87,6 +109,18 @@ struct vmw_dma_buffer *new_backup = backoff ? NULL : val->new_backup; + /* + * Transfer staged context bindings to the + * persistent context binding tracker. + */ + if (unlikely(val->staged_bindings)) { + if (!backoff) { + vmw_context_binding_state_transfer + (val->res, val->staged_bindings); + } + kfree(val->staged_bindings); + val->staged_bindings = NULL; + } vmw_resource_unreserve(res, new_backup, val->new_backup_offset); vmw_dmabuf_unreference(&val->new_backup); @@ -146,6 +180,44 @@ } /** + * vmw_resource_context_res_add - Put resources previously bound to a context on + * the validation list + * + * @dev_priv: Pointer to a device private structure + * @sw_context: Pointer to a software context used for this command submission + * @ctx: Pointer to the context resource + * + * This function puts all resources that were previously bound to @ctx on + * the resource validation list. This is part of the context state reemission + */ +static int vmw_resource_context_res_add(struct vmw_private *dev_priv, + struct vmw_sw_context *sw_context, + struct vmw_resource *ctx) +{ + struct list_head *binding_list; + struct vmw_ctx_binding *entry; + int ret = 0; + struct vmw_resource *res; + + mutex_lock(&dev_priv->binding_mutex); + binding_list = vmw_context_binding_list(ctx); + + list_for_each_entry(entry, binding_list, ctx_list) { + res = vmw_resource_reference_unless_doomed(entry->bi.res); + if (unlikely(res == NULL)) + continue; + + ret = vmw_resource_val_add(sw_context, entry->bi.res, NULL); + vmw_resource_unreference(&res); + if (unlikely(ret != 0)) + break; + } + + mutex_unlock(&dev_priv->binding_mutex); + return ret; +} + +/** * vmw_resource_relocation_add - Add a relocation to the relocation list * * @list: Pointer to head of relocation list. @@ -201,8 +273,12 @@ { struct vmw_resource_relocation *rel; - list_for_each_entry(rel, list, head) - cb[rel->offset] = rel->res->id; + list_for_each_entry(rel, list, head) { + if (likely(rel->res != NULL)) + cb[rel->offset] = rel->res->id; + else + cb[rel->offset] = SVGA_3D_CMD_NOP; + } } static int vmw_cmd_invalid(struct vmw_private *dev_priv, @@ -224,6 +300,7 @@ * * @sw_context: The software context used for this command submission batch. * @bo: The buffer object to add. + * @validate_as_mob: Validate this buffer as a MOB. * @p_val_node: If non-NULL Will be updated with the validate node number * on return. * @@ -232,6 +309,7 @@ */ static int vmw_bo_to_validate_list(struct vmw_sw_context *sw_context, struct ttm_buffer_object *bo, + bool validate_as_mob, uint32_t *p_val_node) { uint32_t val_node; @@ -244,6 +322,10 @@ &hash) == 0)) { vval_buf = container_of(hash, struct vmw_validate_buffer, hash); + if (unlikely(vval_buf->validate_as_mob != validate_as_mob)) { + DRM_ERROR("Inconsistent buffer usage.\n"); + return -EINVAL; + } val_buf = &vval_buf->base; val_node = vval_buf - sw_context->val_bufs; } else { @@ -266,6 +348,7 @@ val_buf->bo = ttm_bo_reference(bo); val_buf->reserved = false; list_add_tail(&val_buf->head, &sw_context->validate_nodes); + vval_buf->validate_as_mob = validate_as_mob; } sw_context->fence_flags |= DRM_VMW_FENCE_FLAG_EXEC; @@ -302,7 +385,8 @@ struct ttm_buffer_object *bo = &res->backup->base; ret = vmw_bo_to_validate_list - (sw_context, bo, NULL); + (sw_context, bo, + vmw_resource_needs_backup(res), NULL); if (unlikely(ret != 0)) return ret; @@ -339,22 +423,27 @@ } /** - * vmw_cmd_res_check - Check that a resource is present and if so, put it + * vmw_cmd_compat_res_check - Check that a resource is present and if so, put it * on the resource validate list unless it's already there. * * @dev_priv: Pointer to a device private structure. * @sw_context: Pointer to the software context. * @res_type: Resource type. * @converter: User-space visisble type specific information. - * @id: Pointer to the location in the command buffer currently being + * @id: user-space resource id handle. + * @id_loc: Pointer to the location in the command buffer currently being * parsed from where the user-space resource id handle is located. + * @p_val: Pointer to pointer to resource validalidation node. Populated + * on exit. */ -static int vmw_cmd_res_check(struct vmw_private *dev_priv, - struct vmw_sw_context *sw_context, - enum vmw_res_type res_type, - const struct vmw_user_resource_conv *converter, - uint32_t *id, - struct vmw_resource_val_node **p_val) +static int +vmw_cmd_compat_res_check(struct vmw_private *dev_priv, + struct vmw_sw_context *sw_context, + enum vmw_res_type res_type, + const struct vmw_user_resource_conv *converter, + uint32_t id, + uint32_t *id_loc, + struct vmw_resource_val_node **p_val) { struct vmw_res_cache_entry *rcache = &sw_context->res_cache[res_type]; @@ -362,15 +451,22 @@ struct vmw_resource_val_node *node; int ret; - if (*id == SVGA3D_INVALID_ID) + if (id == SVGA3D_INVALID_ID) { + if (p_val) + *p_val = NULL; + if (res_type == vmw_res_context) { + DRM_ERROR("Illegal context invalid id.\n"); + return -EINVAL; + } return 0; + } /* * Fastpath in case of repeated commands referencing the same * resource */ - if (likely(rcache->valid && *id == rcache->handle)) { + if (likely(rcache->valid && id == rcache->handle)) { const struct vmw_resource *res = rcache->res; rcache->node->first_usage = false; @@ -379,28 +475,28 @@ return vmw_resource_relocation_add (&sw_context->res_relocations, res, - id - sw_context->buf_start); + id_loc - sw_context->buf_start); } ret = vmw_user_resource_lookup_handle(dev_priv, - sw_context->tfile, - *id, + sw_context->fp->tfile, + id, converter, &res); if (unlikely(ret != 0)) { DRM_ERROR("Could not find or use resource 0x%08x.\n", - (unsigned) *id); + (unsigned) id); dump_stack(); return ret; } rcache->valid = true; rcache->res = res; - rcache->handle = *id; + rcache->handle = id; ret = vmw_resource_relocation_add(&sw_context->res_relocations, res, - id - sw_context->buf_start); + id_loc - sw_context->buf_start); if (unlikely(ret != 0)) goto out_no_reloc; @@ -411,6 +507,22 @@ rcache->node = node; if (p_val) *p_val = node; + + if (dev_priv->has_mob && node->first_usage && + res_type == vmw_res_context) { + ret = vmw_resource_context_res_add(dev_priv, sw_context, res); + if (unlikely(ret != 0)) + goto out_no_reloc; + node->staged_bindings = + kzalloc(sizeof(*node->staged_bindings), GFP_KERNEL); + if (node->staged_bindings == NULL) { + DRM_ERROR("Failed to allocate context binding " + "information.\n"); + goto out_no_reloc; + } + INIT_LIST_HEAD(&node->staged_bindings->list); + } + vmw_resource_unreference(&res); return 0; @@ -422,6 +534,59 @@ } /** + * vmw_cmd_res_check - Check that a resource is present and if so, put it + * on the resource validate list unless it's already there. + * + * @dev_priv: Pointer to a device private structure. + * @sw_context: Pointer to the software context. + * @res_type: Resource type. + * @converter: User-space visisble type specific information. + * @id_loc: Pointer to the location in the command buffer currently being + * parsed from where the user-space resource id handle is located. + * @p_val: Pointer to pointer to resource validalidation node. Populated + * on exit. + */ +static int +vmw_cmd_res_check(struct vmw_private *dev_priv, + struct vmw_sw_context *sw_context, + enum vmw_res_type res_type, + const struct vmw_user_resource_conv *converter, + uint32_t *id_loc, + struct vmw_resource_val_node **p_val) +{ + return vmw_cmd_compat_res_check(dev_priv, sw_context, res_type, + converter, *id_loc, id_loc, p_val); +} + +/** + * vmw_rebind_contexts - Rebind all resources previously bound to + * referenced contexts. + * + * @sw_context: Pointer to the software context. + * + * Rebind context binding points that have been scrubbed because of eviction. + */ +static int vmw_rebind_contexts(struct vmw_sw_context *sw_context) +{ + struct vmw_resource_val_node *val; + int ret; + + list_for_each_entry(val, &sw_context->resource_list, head) { + if (likely(!val->staged_bindings)) + continue; + + ret = vmw_context_rebind_all(val->res); + if (unlikely(ret != 0)) { + if (ret != -ERESTARTSYS) + DRM_ERROR("Failed to rebind context.\n"); + return ret; + } + } + + return 0; +} + +/** * vmw_cmd_cid_check - Check a command header for valid context information. * * @dev_priv: Pointer to a device private structure. @@ -437,7 +602,7 @@ { struct vmw_cid_cmd { SVGA3dCmdHeader header; - __le32 cid; + uint32_t cid; } *cmd; cmd = container_of(header, struct vmw_cid_cmd, header); @@ -453,17 +618,35 @@ SVGA3dCmdHeader header; SVGA3dCmdSetRenderTarget body; } *cmd; + struct vmw_resource_val_node *ctx_node; + struct vmw_resource_val_node *res_node; int ret; - ret = vmw_cmd_cid_check(dev_priv, sw_context, header); + cmd = container_of(header, struct vmw_sid_cmd, header); + + ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_context, + user_context_converter, &cmd->body.cid, + &ctx_node); if (unlikely(ret != 0)) return ret; - cmd = container_of(header, struct vmw_sid_cmd, header); ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, user_surface_converter, - &cmd->body.target.sid, NULL); - return ret; + &cmd->body.target.sid, &res_node); + if (unlikely(ret != 0)) + return ret; + + if (dev_priv->has_mob) { + struct vmw_ctx_bindinfo bi; + + bi.ctx = ctx_node->res; + bi.res = res_node ? res_node->res : NULL; + bi.bt = vmw_ctx_binding_rt; + bi.i1.rt_type = cmd->body.type; + return vmw_context_binding_add(ctx_node->staged_bindings, &bi); + } + + return 0; } static int vmw_cmd_surface_copy_check(struct vmw_private *dev_priv, @@ -519,11 +702,6 @@ cmd = container_of(header, struct vmw_sid_cmd, header); - if (unlikely(!sw_context->kernel)) { - DRM_ERROR("Kernel only SVGA3d command: %u.\n", cmd->header.id); - return -EPERM; - } - return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, user_surface_converter, &cmd->body.srcImage.sid, NULL); @@ -541,11 +719,6 @@ cmd = container_of(header, struct vmw_sid_cmd, header); - if (unlikely(!sw_context->kernel)) { - DRM_ERROR("Kernel only SVGA3d command: %u.\n", cmd->header.id); - return -EPERM; - } - return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, user_surface_converter, &cmd->body.sid, NULL); @@ -586,7 +759,7 @@ sw_context->needs_post_query_barrier = true; ret = vmw_bo_to_validate_list(sw_context, sw_context->cur_query_bo, - NULL); + dev_priv->has_mob, NULL); if (unlikely(ret != 0)) return ret; } @@ -594,7 +767,7 @@ ret = vmw_bo_to_validate_list(sw_context, dev_priv->dummy_query_bo, - NULL); + dev_priv->has_mob, NULL); if (unlikely(ret != 0)) return ret; @@ -672,6 +845,66 @@ } /** + * vmw_translate_mob_pointer - Prepare to translate a user-space buffer + * handle to a MOB id. + * + * @dev_priv: Pointer to a device private structure. + * @sw_context: The software context used for this command batch validation. + * @id: Pointer to the user-space handle to be translated. + * @vmw_bo_p: Points to a location that, on successful return will carry + * a reference-counted pointer to the DMA buffer identified by the + * user-space handle in @id. + * + * This function saves information needed to translate a user-space buffer + * handle to a MOB id. The translation does not take place immediately, but + * during a call to vmw_apply_relocations(). This function builds a relocation + * list and a list of buffers to validate. The former needs to be freed using + * either vmw_apply_relocations() or vmw_free_relocations(). The latter + * needs to be freed using vmw_clear_validations. + */ +static int vmw_translate_mob_ptr(struct vmw_private *dev_priv, + struct vmw_sw_context *sw_context, + SVGAMobId *id, + struct vmw_dma_buffer **vmw_bo_p) +{ + struct vmw_dma_buffer *vmw_bo = NULL; + struct ttm_buffer_object *bo; + uint32_t handle = *id; + struct vmw_relocation *reloc; + int ret; + + ret = vmw_user_dmabuf_lookup(sw_context->fp->tfile, handle, &vmw_bo); + if (unlikely(ret != 0)) { + DRM_ERROR("Could not find or use MOB buffer.\n"); + return -EINVAL; + } + bo = &vmw_bo->base; + + if (unlikely(sw_context->cur_reloc >= VMWGFX_MAX_RELOCATIONS)) { + DRM_ERROR("Max number relocations per submission" + " exceeded\n"); + ret = -EINVAL; + goto out_no_reloc; + } + + reloc = &sw_context->relocs[sw_context->cur_reloc++]; + reloc->mob_loc = id; + reloc->location = NULL; + + ret = vmw_bo_to_validate_list(sw_context, bo, true, &reloc->index); + if (unlikely(ret != 0)) + goto out_no_reloc; + + *vmw_bo_p = vmw_bo; + return 0; + +out_no_reloc: + vmw_dmabuf_unreference(&vmw_bo); + vmw_bo_p = NULL; + return ret; +} + +/** * vmw_translate_guest_pointer - Prepare to translate a user-space buffer * handle to a valid SVGAGuestPtr * @@ -701,7 +934,7 @@ struct vmw_relocation *reloc; int ret; - ret = vmw_user_dmabuf_lookup(sw_context->tfile, handle, &vmw_bo); + ret = vmw_user_dmabuf_lookup(sw_context->fp->tfile, handle, &vmw_bo); if (unlikely(ret != 0)) { DRM_ERROR("Could not find or use GMR region.\n"); return -EINVAL; @@ -718,7 +951,7 @@ reloc = &sw_context->relocs[sw_context->cur_reloc++]; reloc->location = ptr; - ret = vmw_bo_to_validate_list(sw_context, bo, &reloc->index); + ret = vmw_bo_to_validate_list(sw_context, bo, false, &reloc->index); if (unlikely(ret != 0)) goto out_no_reloc; @@ -732,6 +965,30 @@ } /** + * vmw_cmd_begin_gb_query - validate a SVGA_3D_CMD_BEGIN_GB_QUERY command. + * + * @dev_priv: Pointer to a device private struct. + * @sw_context: The software context used for this command submission. + * @header: Pointer to the command header in the command stream. + */ +static int vmw_cmd_begin_gb_query(struct vmw_private *dev_priv, + struct vmw_sw_context *sw_context, + SVGA3dCmdHeader *header) +{ + struct vmw_begin_gb_query_cmd { + SVGA3dCmdHeader header; + SVGA3dCmdBeginGBQuery q; + } *cmd; + + cmd = container_of(header, struct vmw_begin_gb_query_cmd, + header); + + return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_context, + user_context_converter, &cmd->q.cid, + NULL); +} + +/** * vmw_cmd_begin_query - validate a SVGA_3D_CMD_BEGIN_QUERY command. * * @dev_priv: Pointer to a device private struct. @@ -750,12 +1007,64 @@ cmd = container_of(header, struct vmw_begin_query_cmd, header); + if (unlikely(dev_priv->has_mob)) { + struct { + SVGA3dCmdHeader header; + SVGA3dCmdBeginGBQuery q; + } gb_cmd; + + BUG_ON(sizeof(gb_cmd) != sizeof(*cmd)); + + gb_cmd.header.id = SVGA_3D_CMD_BEGIN_GB_QUERY; + gb_cmd.header.size = cmd->header.size; + gb_cmd.q.cid = cmd->q.cid; + gb_cmd.q.type = cmd->q.type; + + memcpy(cmd, &gb_cmd, sizeof(*cmd)); + return vmw_cmd_begin_gb_query(dev_priv, sw_context, header); + } + return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_context, user_context_converter, &cmd->q.cid, NULL); } /** + * vmw_cmd_end_gb_query - validate a SVGA_3D_CMD_END_GB_QUERY command. + * + * @dev_priv: Pointer to a device private struct. + * @sw_context: The software context used for this command submission. + * @header: Pointer to the command header in the command stream. + */ +static int vmw_cmd_end_gb_query(struct vmw_private *dev_priv, + struct vmw_sw_context *sw_context, + SVGA3dCmdHeader *header) +{ + struct vmw_dma_buffer *vmw_bo; + struct vmw_query_cmd { + SVGA3dCmdHeader header; + SVGA3dCmdEndGBQuery q; + } *cmd; + int ret; + + cmd = container_of(header, struct vmw_query_cmd, header); + ret = vmw_cmd_cid_check(dev_priv, sw_context, header); + if (unlikely(ret != 0)) + return ret; + + ret = vmw_translate_mob_ptr(dev_priv, sw_context, + &cmd->q.mobid, + &vmw_bo); + if (unlikely(ret != 0)) + return ret; + + ret = vmw_query_bo_switch_prepare(dev_priv, &vmw_bo->base, sw_context); + + vmw_dmabuf_unreference(&vmw_bo); + return ret; +} + +/** * vmw_cmd_end_query - validate a SVGA_3D_CMD_END_QUERY command. * * @dev_priv: Pointer to a device private struct. @@ -774,6 +1083,25 @@ int ret; cmd = container_of(header, struct vmw_query_cmd, header); + if (dev_priv->has_mob) { + struct { + SVGA3dCmdHeader header; + SVGA3dCmdEndGBQuery q; + } gb_cmd; + + BUG_ON(sizeof(gb_cmd) != sizeof(*cmd)); + + gb_cmd.header.id = SVGA_3D_CMD_END_GB_QUERY; + gb_cmd.header.size = cmd->header.size; + gb_cmd.q.cid = cmd->q.cid; + gb_cmd.q.type = cmd->q.type; + gb_cmd.q.mobid = cmd->q.guestResult.gmrId; + gb_cmd.q.offset = cmd->q.guestResult.offset; + + memcpy(cmd, &gb_cmd, sizeof(*cmd)); + return vmw_cmd_end_gb_query(dev_priv, sw_context, header); + } + ret = vmw_cmd_cid_check(dev_priv, sw_context, header); if (unlikely(ret != 0)) return ret; @@ -790,7 +1118,40 @@ return ret; } -/* +/** + * vmw_cmd_wait_gb_query - validate a SVGA_3D_CMD_WAIT_GB_QUERY command. + * + * @dev_priv: Pointer to a device private struct. + * @sw_context: The software context used for this command submission. + * @header: Pointer to the command header in the command stream. + */ +static int vmw_cmd_wait_gb_query(struct vmw_private *dev_priv, + struct vmw_sw_context *sw_context, + SVGA3dCmdHeader *header) +{ + struct vmw_dma_buffer *vmw_bo; + struct vmw_query_cmd { + SVGA3dCmdHeader header; + SVGA3dCmdWaitForGBQuery q; + } *cmd; + int ret; + + cmd = container_of(header, struct vmw_query_cmd, header); + ret = vmw_cmd_cid_check(dev_priv, sw_context, header); + if (unlikely(ret != 0)) + return ret; + + ret = vmw_translate_mob_ptr(dev_priv, sw_context, + &cmd->q.mobid, + &vmw_bo); + if (unlikely(ret != 0)) + return ret; + + vmw_dmabuf_unreference(&vmw_bo); + return 0; +} + +/** * vmw_cmd_wait_query - validate a SVGA_3D_CMD_WAIT_QUERY command. * * @dev_priv: Pointer to a device private struct. @@ -809,6 +1170,25 @@ int ret; cmd = container_of(header, struct vmw_query_cmd, header); + if (dev_priv->has_mob) { + struct { + SVGA3dCmdHeader header; + SVGA3dCmdWaitForGBQuery q; + } gb_cmd; + + BUG_ON(sizeof(gb_cmd) != sizeof(*cmd)); + + gb_cmd.header.id = SVGA_3D_CMD_WAIT_FOR_GB_QUERY; + gb_cmd.header.size = cmd->header.size; + gb_cmd.q.cid = cmd->q.cid; + gb_cmd.q.type = cmd->q.type; + gb_cmd.q.mobid = cmd->q.guestResult.gmrId; + gb_cmd.q.offset = cmd->q.guestResult.offset; + + memcpy(cmd, &gb_cmd, sizeof(*cmd)); + return vmw_cmd_wait_gb_query(dev_priv, sw_context, header); + } + ret = vmw_cmd_cid_check(dev_priv, sw_context, header); if (unlikely(ret != 0)) return ret; @@ -834,14 +1214,36 @@ SVGA3dCmdSurfaceDMA dma; } *cmd; int ret; + SVGA3dCmdSurfaceDMASuffix *suffix; + uint32_t bo_size; cmd = container_of(header, struct vmw_dma_cmd, header); + suffix = (SVGA3dCmdSurfaceDMASuffix *)((unsigned long) &cmd->dma + + header->size - sizeof(*suffix)); + + /* Make sure device and verifier stays in sync. */ + if (unlikely(suffix->suffixSize != sizeof(*suffix))) { + DRM_ERROR("Invalid DMA suffix size.\n"); + return -EINVAL; + } + ret = vmw_translate_guest_ptr(dev_priv, sw_context, &cmd->dma.guest.ptr, &vmw_bo); if (unlikely(ret != 0)) return ret; + /* Make sure DMA doesn't cross BO boundaries. */ + bo_size = vmw_bo->base.num_pages * PAGE_SIZE; + if (unlikely(cmd->dma.guest.ptr.offset > bo_size)) { + DRM_ERROR("Invalid DMA offset.\n"); + return -EINVAL; + } + + bo_size -= cmd->dma.guest.ptr.offset; + if (unlikely(suffix->maximumOffset > bo_size)) + suffix->maximumOffset = bo_size; + ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, user_surface_converter, &cmd->dma.host.sid, NULL); @@ -853,7 +1255,8 @@ srf = vmw_res_to_srf(sw_context->res_cache[vmw_res_surface].res); - vmw_kms_cursor_snoop(srf, sw_context->tfile, &vmw_bo->base, header); + vmw_kms_cursor_snoop(srf, sw_context->fp->tfile, &vmw_bo->base, + header); out_no_surface: vmw_dmabuf_unreference(&vmw_bo); @@ -921,15 +1324,22 @@ struct vmw_tex_state_cmd { SVGA3dCmdHeader header; SVGA3dCmdSetTextureState state; - }; + } *cmd; SVGA3dTextureState *last_state = (SVGA3dTextureState *) ((unsigned long) header + header->size + sizeof(header)); SVGA3dTextureState *cur_state = (SVGA3dTextureState *) ((unsigned long) header + sizeof(struct vmw_tex_state_cmd)); + struct vmw_resource_val_node *ctx_node; + struct vmw_resource_val_node *res_node; int ret; - ret = vmw_cmd_cid_check(dev_priv, sw_context, header); + cmd = container_of(header, struct vmw_tex_state_cmd, + header); + + ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_context, + user_context_converter, &cmd->state.cid, + &ctx_node); if (unlikely(ret != 0)) return ret; @@ -939,9 +1349,20 @@ ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, user_surface_converter, - &cur_state->value, NULL); + &cur_state->value, &res_node); if (unlikely(ret != 0)) return ret; + + if (dev_priv->has_mob) { + struct vmw_ctx_bindinfo bi; + + bi.ctx = ctx_node->res; + bi.res = res_node ? res_node->res : NULL; + bi.bt = vmw_ctx_binding_tex; + bi.i1.texture_stage = cur_state->stage; + vmw_context_binding_add(ctx_node->staged_bindings, + &bi); + } } return 0; @@ -971,6 +1392,314 @@ } /** + * vmw_cmd_switch_backup - Utility function to handle backup buffer switching + * + * @dev_priv: Pointer to a device private struct. + * @sw_context: The software context being used for this batch. + * @res_type: The resource type. + * @converter: Information about user-space binding for this resource type. + * @res_id: Pointer to the user-space resource handle in the command stream. + * @buf_id: Pointer to the user-space backup buffer handle in the command + * stream. + * @backup_offset: Offset of backup into MOB. + * + * This function prepares for registering a switch of backup buffers + * in the resource metadata just prior to unreserving. + */ +static int vmw_cmd_switch_backup(struct vmw_private *dev_priv, + struct vmw_sw_context *sw_context, + enum vmw_res_type res_type, + const struct vmw_user_resource_conv + *converter, + uint32_t *res_id, + uint32_t *buf_id, + unsigned long backup_offset) +{ + int ret; + struct vmw_dma_buffer *dma_buf; + struct vmw_resource_val_node *val_node; + + ret = vmw_cmd_res_check(dev_priv, sw_context, res_type, + converter, res_id, &val_node); + if (unlikely(ret != 0)) + return ret; + + ret = vmw_translate_mob_ptr(dev_priv, sw_context, buf_id, &dma_buf); + if (unlikely(ret != 0)) + return ret; + + if (val_node->first_usage) + val_node->no_buffer_needed = true; + + vmw_dmabuf_unreference(&val_node->new_backup); + val_node->new_backup = dma_buf; + val_node->new_backup_offset = backup_offset; + + return 0; +} + +/** + * vmw_cmd_bind_gb_surface - Validate an SVGA_3D_CMD_BIND_GB_SURFACE + * command + * + * @dev_priv: Pointer to a device private struct. + * @sw_context: The software context being used for this batch. + * @header: Pointer to the command header in the command stream. + */ +static int vmw_cmd_bind_gb_surface(struct vmw_private *dev_priv, + struct vmw_sw_context *sw_context, + SVGA3dCmdHeader *header) +{ + struct vmw_bind_gb_surface_cmd { + SVGA3dCmdHeader header; + SVGA3dCmdBindGBSurface body; + } *cmd; + + cmd = container_of(header, struct vmw_bind_gb_surface_cmd, header); + + return vmw_cmd_switch_backup(dev_priv, sw_context, vmw_res_surface, + user_surface_converter, + &cmd->body.sid, &cmd->body.mobid, + 0); +} + +/** + * vmw_cmd_update_gb_image - Validate an SVGA_3D_CMD_UPDATE_GB_IMAGE + * command + * + * @dev_priv: Pointer to a device private struct. + * @sw_context: The software context being used for this batch. + * @header: Pointer to the command header in the command stream. + */ +static int vmw_cmd_update_gb_image(struct vmw_private *dev_priv, + struct vmw_sw_context *sw_context, + SVGA3dCmdHeader *header) +{ + struct vmw_gb_surface_cmd { + SVGA3dCmdHeader header; + SVGA3dCmdUpdateGBImage body; + } *cmd; + + cmd = container_of(header, struct vmw_gb_surface_cmd, header); + + return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, + user_surface_converter, + &cmd->body.image.sid, NULL); +} + +/** + * vmw_cmd_update_gb_surface - Validate an SVGA_3D_CMD_UPDATE_GB_SURFACE + * command + * + * @dev_priv: Pointer to a device private struct. + * @sw_context: The software context being used for this batch. + * @header: Pointer to the command header in the command stream. + */ +static int vmw_cmd_update_gb_surface(struct vmw_private *dev_priv, + struct vmw_sw_context *sw_context, + SVGA3dCmdHeader *header) +{ + struct vmw_gb_surface_cmd { + SVGA3dCmdHeader header; + SVGA3dCmdUpdateGBSurface body; + } *cmd; + + cmd = container_of(header, struct vmw_gb_surface_cmd, header); + + return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, + user_surface_converter, + &cmd->body.sid, NULL); +} + +/** + * vmw_cmd_readback_gb_image - Validate an SVGA_3D_CMD_READBACK_GB_IMAGE + * command + * + * @dev_priv: Pointer to a device private struct. + * @sw_context: The software context being used for this batch. + * @header: Pointer to the command header in the command stream. + */ +static int vmw_cmd_readback_gb_image(struct vmw_private *dev_priv, + struct vmw_sw_context *sw_context, + SVGA3dCmdHeader *header) +{ + struct vmw_gb_surface_cmd { + SVGA3dCmdHeader header; + SVGA3dCmdReadbackGBImage body; + } *cmd; + + cmd = container_of(header, struct vmw_gb_surface_cmd, header); + + return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, + user_surface_converter, + &cmd->body.image.sid, NULL); +} + +/** + * vmw_cmd_readback_gb_surface - Validate an SVGA_3D_CMD_READBACK_GB_SURFACE + * command + * + * @dev_priv: Pointer to a device private struct. + * @sw_context: The software context being used for this batch. + * @header: Pointer to the command header in the command stream. + */ +static int vmw_cmd_readback_gb_surface(struct vmw_private *dev_priv, + struct vmw_sw_context *sw_context, + SVGA3dCmdHeader *header) +{ + struct vmw_gb_surface_cmd { + SVGA3dCmdHeader header; + SVGA3dCmdReadbackGBSurface body; + } *cmd; + + cmd = container_of(header, struct vmw_gb_surface_cmd, header); + + return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, + user_surface_converter, + &cmd->body.sid, NULL); +} + +/** + * vmw_cmd_invalidate_gb_image - Validate an SVGA_3D_CMD_INVALIDATE_GB_IMAGE + * command + * + * @dev_priv: Pointer to a device private struct. + * @sw_context: The software context being used for this batch. + * @header: Pointer to the command header in the command stream. + */ +static int vmw_cmd_invalidate_gb_image(struct vmw_private *dev_priv, + struct vmw_sw_context *sw_context, + SVGA3dCmdHeader *header) +{ + struct vmw_gb_surface_cmd { + SVGA3dCmdHeader header; + SVGA3dCmdInvalidateGBImage body; + } *cmd; + + cmd = container_of(header, struct vmw_gb_surface_cmd, header); + + return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, + user_surface_converter, + &cmd->body.image.sid, NULL); +} + +/** + * vmw_cmd_invalidate_gb_surface - Validate an + * SVGA_3D_CMD_INVALIDATE_GB_SURFACE command + * + * @dev_priv: Pointer to a device private struct. + * @sw_context: The software context being used for this batch. + * @header: Pointer to the command header in the command stream. + */ +static int vmw_cmd_invalidate_gb_surface(struct vmw_private *dev_priv, + struct vmw_sw_context *sw_context, + SVGA3dCmdHeader *header) +{ + struct vmw_gb_surface_cmd { + SVGA3dCmdHeader header; + SVGA3dCmdInvalidateGBSurface body; + } *cmd; + + cmd = container_of(header, struct vmw_gb_surface_cmd, header); + + return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, + user_surface_converter, + &cmd->body.sid, NULL); +} + + +/** + * vmw_cmd_shader_define - Validate an SVGA_3D_CMD_SHADER_DEFINE + * command + * + * @dev_priv: Pointer to a device private struct. + * @sw_context: The software context being used for this batch. + * @header: Pointer to the command header in the command stream. + */ +static int vmw_cmd_shader_define(struct vmw_private *dev_priv, + struct vmw_sw_context *sw_context, + SVGA3dCmdHeader *header) +{ + struct vmw_shader_define_cmd { + SVGA3dCmdHeader header; + SVGA3dCmdDefineShader body; + } *cmd; + int ret; + size_t size; + + cmd = container_of(header, struct vmw_shader_define_cmd, + header); + + ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_context, + user_context_converter, &cmd->body.cid, + NULL); + if (unlikely(ret != 0)) + return ret; + + if (unlikely(!dev_priv->has_mob)) + return 0; + + size = cmd->header.size - sizeof(cmd->body); + ret = vmw_compat_shader_add(sw_context->fp->shman, + cmd->body.shid, cmd + 1, + cmd->body.type, size, + sw_context->fp->tfile, + &sw_context->staged_shaders); + if (unlikely(ret != 0)) + return ret; + + return vmw_resource_relocation_add(&sw_context->res_relocations, + NULL, &cmd->header.id - + sw_context->buf_start); + + return 0; +} + +/** + * vmw_cmd_shader_destroy - Validate an SVGA_3D_CMD_SHADER_DESTROY + * command + * + * @dev_priv: Pointer to a device private struct. + * @sw_context: The software context being used for this batch. + * @header: Pointer to the command header in the command stream. + */ +static int vmw_cmd_shader_destroy(struct vmw_private *dev_priv, + struct vmw_sw_context *sw_context, + SVGA3dCmdHeader *header) +{ + struct vmw_shader_destroy_cmd { + SVGA3dCmdHeader header; + SVGA3dCmdDestroyShader body; + } *cmd; + int ret; + + cmd = container_of(header, struct vmw_shader_destroy_cmd, + header); + + ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_context, + user_context_converter, &cmd->body.cid, + NULL); + if (unlikely(ret != 0)) + return ret; + + if (unlikely(!dev_priv->has_mob)) + return 0; + + ret = vmw_compat_shader_remove(sw_context->fp->shman, + cmd->body.shid, + cmd->body.type, + &sw_context->staged_shaders); + if (unlikely(ret != 0)) + return ret; + + return vmw_resource_relocation_add(&sw_context->res_relocations, + NULL, &cmd->header.id - + sw_context->buf_start); + + return 0; +} + +/** * vmw_cmd_set_shader - Validate an SVGA_3D_CMD_SET_SHADER * command * @@ -986,18 +1715,105 @@ SVGA3dCmdHeader header; SVGA3dCmdSetShader body; } *cmd; + struct vmw_resource_val_node *ctx_node; int ret; cmd = container_of(header, struct vmw_set_shader_cmd, header); - ret = vmw_cmd_cid_check(dev_priv, sw_context, header); + ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_context, + user_context_converter, &cmd->body.cid, + &ctx_node); + if (unlikely(ret != 0)) + return ret; + + if (dev_priv->has_mob) { + struct vmw_ctx_bindinfo bi; + struct vmw_resource_val_node *res_node; + u32 shid = cmd->body.shid; + + if (shid != SVGA3D_INVALID_ID) + (void) vmw_compat_shader_lookup(sw_context->fp->shman, + cmd->body.type, + &shid); + + ret = vmw_cmd_compat_res_check(dev_priv, sw_context, + vmw_res_shader, + user_shader_converter, + shid, + &cmd->body.shid, &res_node); + if (unlikely(ret != 0)) + return ret; + + bi.ctx = ctx_node->res; + bi.res = res_node ? res_node->res : NULL; + bi.bt = vmw_ctx_binding_shader; + bi.i1.shader_type = cmd->body.type; + return vmw_context_binding_add(ctx_node->staged_bindings, &bi); + } + + return 0; +} + +/** + * vmw_cmd_set_shader_const - Validate an SVGA_3D_CMD_SET_SHADER_CONST + * command + * + * @dev_priv: Pointer to a device private struct. + * @sw_context: The software context being used for this batch. + * @header: Pointer to the command header in the command stream. + */ +static int vmw_cmd_set_shader_const(struct vmw_private *dev_priv, + struct vmw_sw_context *sw_context, + SVGA3dCmdHeader *header) +{ + struct vmw_set_shader_const_cmd { + SVGA3dCmdHeader header; + SVGA3dCmdSetShaderConst body; + } *cmd; + int ret; + + cmd = container_of(header, struct vmw_set_shader_const_cmd, + header); + + ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_context, + user_context_converter, &cmd->body.cid, + NULL); if (unlikely(ret != 0)) return ret; + if (dev_priv->has_mob) + header->id = SVGA_3D_CMD_SET_GB_SHADERCONSTS_INLINE; + return 0; } +/** + * vmw_cmd_bind_gb_shader - Validate an SVGA_3D_CMD_BIND_GB_SHADER + * command + * + * @dev_priv: Pointer to a device private struct. + * @sw_context: The software context being used for this batch. + * @header: Pointer to the command header in the command stream. + */ +static int vmw_cmd_bind_gb_shader(struct vmw_private *dev_priv, + struct vmw_sw_context *sw_context, + SVGA3dCmdHeader *header) +{ + struct vmw_bind_gb_shader_cmd { + SVGA3dCmdHeader header; + SVGA3dCmdBindGBShader body; + } *cmd; + + cmd = container_of(header, struct vmw_bind_gb_shader_cmd, + header); + + return vmw_cmd_switch_backup(dev_priv, sw_context, vmw_res_shader, + user_shader_converter, + &cmd->body.shid, &cmd->body.mobid, + cmd->body.offsetInBytes); +} + static int vmw_cmd_check_not_3d(struct vmw_private *dev_priv, struct vmw_sw_context *sw_context, void *buf, uint32_t *size) @@ -1041,50 +1857,173 @@ return 0; } -typedef int (*vmw_cmd_func) (struct vmw_private *, - struct vmw_sw_context *, - SVGA3dCmdHeader *); - -#define VMW_CMD_DEF(cmd, func) \ - [cmd - SVGA_3D_CMD_BASE] = func - -static vmw_cmd_func vmw_cmd_funcs[SVGA_3D_CMD_MAX] = { - VMW_CMD_DEF(SVGA_3D_CMD_SURFACE_DEFINE, &vmw_cmd_invalid), - VMW_CMD_DEF(SVGA_3D_CMD_SURFACE_DESTROY, &vmw_cmd_invalid), - VMW_CMD_DEF(SVGA_3D_CMD_SURFACE_COPY, &vmw_cmd_surface_copy_check), - VMW_CMD_DEF(SVGA_3D_CMD_SURFACE_STRETCHBLT, &vmw_cmd_stretch_blt_check), - VMW_CMD_DEF(SVGA_3D_CMD_SURFACE_DMA, &vmw_cmd_dma), - VMW_CMD_DEF(SVGA_3D_CMD_CONTEXT_DEFINE, &vmw_cmd_invalid), - VMW_CMD_DEF(SVGA_3D_CMD_CONTEXT_DESTROY, &vmw_cmd_invalid), - VMW_CMD_DEF(SVGA_3D_CMD_SETTRANSFORM, &vmw_cmd_cid_check), - VMW_CMD_DEF(SVGA_3D_CMD_SETZRANGE, &vmw_cmd_cid_check), - VMW_CMD_DEF(SVGA_3D_CMD_SETRENDERSTATE, &vmw_cmd_cid_check), +static const struct vmw_cmd_entry vmw_cmd_entries[SVGA_3D_CMD_MAX] = { + VMW_CMD_DEF(SVGA_3D_CMD_SURFACE_DEFINE, &vmw_cmd_invalid, + false, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_SURFACE_DESTROY, &vmw_cmd_invalid, + false, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_SURFACE_COPY, &vmw_cmd_surface_copy_check, + true, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_SURFACE_STRETCHBLT, &vmw_cmd_stretch_blt_check, + true, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_SURFACE_DMA, &vmw_cmd_dma, + true, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_CONTEXT_DEFINE, &vmw_cmd_invalid, + false, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_CONTEXT_DESTROY, &vmw_cmd_invalid, + false, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_SETTRANSFORM, &vmw_cmd_cid_check, + true, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_SETZRANGE, &vmw_cmd_cid_check, + true, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_SETRENDERSTATE, &vmw_cmd_cid_check, + true, false, false), VMW_CMD_DEF(SVGA_3D_CMD_SETRENDERTARGET, - &vmw_cmd_set_render_target_check), - VMW_CMD_DEF(SVGA_3D_CMD_SETTEXTURESTATE, &vmw_cmd_tex_state), - VMW_CMD_DEF(SVGA_3D_CMD_SETMATERIAL, &vmw_cmd_cid_check), - VMW_CMD_DEF(SVGA_3D_CMD_SETLIGHTDATA, &vmw_cmd_cid_check), - VMW_CMD_DEF(SVGA_3D_CMD_SETLIGHTENABLED, &vmw_cmd_cid_check), - VMW_CMD_DEF(SVGA_3D_CMD_SETVIEWPORT, &vmw_cmd_cid_check), - VMW_CMD_DEF(SVGA_3D_CMD_SETCLIPPLANE, &vmw_cmd_cid_check), - VMW_CMD_DEF(SVGA_3D_CMD_CLEAR, &vmw_cmd_cid_check), - VMW_CMD_DEF(SVGA_3D_CMD_PRESENT, &vmw_cmd_present_check), - VMW_CMD_DEF(SVGA_3D_CMD_SHADER_DEFINE, &vmw_cmd_cid_check), - VMW_CMD_DEF(SVGA_3D_CMD_SHADER_DESTROY, &vmw_cmd_cid_check), - VMW_CMD_DEF(SVGA_3D_CMD_SET_SHADER, &vmw_cmd_set_shader), - VMW_CMD_DEF(SVGA_3D_CMD_SET_SHADER_CONST, &vmw_cmd_cid_check), - VMW_CMD_DEF(SVGA_3D_CMD_DRAW_PRIMITIVES, &vmw_cmd_draw), - VMW_CMD_DEF(SVGA_3D_CMD_SETSCISSORRECT, &vmw_cmd_cid_check), - VMW_CMD_DEF(SVGA_3D_CMD_BEGIN_QUERY, &vmw_cmd_begin_query), - VMW_CMD_DEF(SVGA_3D_CMD_END_QUERY, &vmw_cmd_end_query), - VMW_CMD_DEF(SVGA_3D_CMD_WAIT_FOR_QUERY, &vmw_cmd_wait_query), - VMW_CMD_DEF(SVGA_3D_CMD_PRESENT_READBACK, &vmw_cmd_ok), + &vmw_cmd_set_render_target_check, true, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_SETTEXTURESTATE, &vmw_cmd_tex_state, + true, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_SETMATERIAL, &vmw_cmd_cid_check, + true, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_SETLIGHTDATA, &vmw_cmd_cid_check, + true, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_SETLIGHTENABLED, &vmw_cmd_cid_check, + true, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_SETVIEWPORT, &vmw_cmd_cid_check, + true, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_SETCLIPPLANE, &vmw_cmd_cid_check, + true, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_CLEAR, &vmw_cmd_cid_check, + true, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_PRESENT, &vmw_cmd_present_check, + false, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_SHADER_DEFINE, &vmw_cmd_shader_define, + true, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_SHADER_DESTROY, &vmw_cmd_shader_destroy, + true, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_SET_SHADER, &vmw_cmd_set_shader, + true, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_SET_SHADER_CONST, &vmw_cmd_set_shader_const, + true, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_DRAW_PRIMITIVES, &vmw_cmd_draw, + true, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_SETSCISSORRECT, &vmw_cmd_cid_check, + true, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_BEGIN_QUERY, &vmw_cmd_begin_query, + true, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_END_QUERY, &vmw_cmd_end_query, + true, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_WAIT_FOR_QUERY, &vmw_cmd_wait_query, + true, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_PRESENT_READBACK, &vmw_cmd_ok, + true, false, false), VMW_CMD_DEF(SVGA_3D_CMD_BLIT_SURFACE_TO_SCREEN, - &vmw_cmd_blt_surf_screen_check), - VMW_CMD_DEF(SVGA_3D_CMD_SURFACE_DEFINE_V2, &vmw_cmd_invalid), - VMW_CMD_DEF(SVGA_3D_CMD_GENERATE_MIPMAPS, &vmw_cmd_invalid), - VMW_CMD_DEF(SVGA_3D_CMD_ACTIVATE_SURFACE, &vmw_cmd_invalid), - VMW_CMD_DEF(SVGA_3D_CMD_DEACTIVATE_SURFACE, &vmw_cmd_invalid), + &vmw_cmd_blt_surf_screen_check, false, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_SURFACE_DEFINE_V2, &vmw_cmd_invalid, + false, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_GENERATE_MIPMAPS, &vmw_cmd_invalid, + false, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_ACTIVATE_SURFACE, &vmw_cmd_invalid, + false, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_DEACTIVATE_SURFACE, &vmw_cmd_invalid, + false, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_SCREEN_DMA, &vmw_cmd_invalid, + false, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_SET_UNITY_SURFACE_COOKIE, &vmw_cmd_invalid, + false, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_OPEN_CONTEXT_SURFACE, &vmw_cmd_invalid, + false, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_LOGICOPS_BITBLT, &vmw_cmd_invalid, + false, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_LOGICOPS_TRANSBLT, &vmw_cmd_invalid, + false, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_LOGICOPS_STRETCHBLT, &vmw_cmd_invalid, + false, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_LOGICOPS_COLORFILL, &vmw_cmd_invalid, + false, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_LOGICOPS_ALPHABLEND, &vmw_cmd_invalid, + false, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_LOGICOPS_CLEARTYPEBLEND, &vmw_cmd_invalid, + false, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_SET_OTABLE_BASE, &vmw_cmd_invalid, + false, false, true), + VMW_CMD_DEF(SVGA_3D_CMD_READBACK_OTABLE, &vmw_cmd_invalid, + false, false, true), + VMW_CMD_DEF(SVGA_3D_CMD_DEFINE_GB_MOB, &vmw_cmd_invalid, + false, false, true), + VMW_CMD_DEF(SVGA_3D_CMD_DESTROY_GB_MOB, &vmw_cmd_invalid, + false, false, true), + VMW_CMD_DEF(SVGA_3D_CMD_REDEFINE_GB_MOB, &vmw_cmd_invalid, + false, false, true), + VMW_CMD_DEF(SVGA_3D_CMD_UPDATE_GB_MOB_MAPPING, &vmw_cmd_invalid, + false, false, true), + VMW_CMD_DEF(SVGA_3D_CMD_DEFINE_GB_SURFACE, &vmw_cmd_invalid, + false, false, true), + VMW_CMD_DEF(SVGA_3D_CMD_DESTROY_GB_SURFACE, &vmw_cmd_invalid, + false, false, true), + VMW_CMD_DEF(SVGA_3D_CMD_BIND_GB_SURFACE, &vmw_cmd_bind_gb_surface, + true, false, true), + VMW_CMD_DEF(SVGA_3D_CMD_COND_BIND_GB_SURFACE, &vmw_cmd_invalid, + false, false, true), + VMW_CMD_DEF(SVGA_3D_CMD_UPDATE_GB_IMAGE, &vmw_cmd_update_gb_image, + true, false, true), + VMW_CMD_DEF(SVGA_3D_CMD_UPDATE_GB_SURFACE, + &vmw_cmd_update_gb_surface, true, false, true), + VMW_CMD_DEF(SVGA_3D_CMD_READBACK_GB_IMAGE, + &vmw_cmd_readback_gb_image, true, false, true), + VMW_CMD_DEF(SVGA_3D_CMD_READBACK_GB_SURFACE, + &vmw_cmd_readback_gb_surface, true, false, true), + VMW_CMD_DEF(SVGA_3D_CMD_INVALIDATE_GB_IMAGE, + &vmw_cmd_invalidate_gb_image, true, false, true), + VMW_CMD_DEF(SVGA_3D_CMD_INVALIDATE_GB_SURFACE, + &vmw_cmd_invalidate_gb_surface, true, false, true), + VMW_CMD_DEF(SVGA_3D_CMD_DEFINE_GB_CONTEXT, &vmw_cmd_invalid, + false, false, true), + VMW_CMD_DEF(SVGA_3D_CMD_DESTROY_GB_CONTEXT, &vmw_cmd_invalid, + false, false, true), + VMW_CMD_DEF(SVGA_3D_CMD_BIND_GB_CONTEXT, &vmw_cmd_invalid, + false, false, true), + VMW_CMD_DEF(SVGA_3D_CMD_READBACK_GB_CONTEXT, &vmw_cmd_invalid, + false, false, true), + VMW_CMD_DEF(SVGA_3D_CMD_INVALIDATE_GB_CONTEXT, &vmw_cmd_invalid, + false, false, true), + VMW_CMD_DEF(SVGA_3D_CMD_DEFINE_GB_SHADER, &vmw_cmd_invalid, + false, false, true), + VMW_CMD_DEF(SVGA_3D_CMD_BIND_GB_SHADER, &vmw_cmd_bind_gb_shader, + true, false, true), + VMW_CMD_DEF(SVGA_3D_CMD_DESTROY_GB_SHADER, &vmw_cmd_invalid, + false, false, true), + VMW_CMD_DEF(SVGA_3D_CMD_SET_OTABLE_BASE64, &vmw_cmd_invalid, + false, false, false), + VMW_CMD_DEF(SVGA_3D_CMD_BEGIN_GB_QUERY, &vmw_cmd_begin_gb_query, + true, false, true), + VMW_CMD_DEF(SVGA_3D_CMD_END_GB_QUERY, &vmw_cmd_end_gb_query, + true, false, true), + VMW_CMD_DEF(SVGA_3D_CMD_WAIT_FOR_GB_QUERY, &vmw_cmd_wait_gb_query, + true, false, true), + VMW_CMD_DEF(SVGA_3D_CMD_NOP, &vmw_cmd_ok, + true, false, true), + VMW_CMD_DEF(SVGA_3D_CMD_ENABLE_GART, &vmw_cmd_invalid, + false, false, true), + VMW_CMD_DEF(SVGA_3D_CMD_DISABLE_GART, &vmw_cmd_invalid, + false, false, true), + VMW_CMD_DEF(SVGA_3D_CMD_MAP_MOB_INTO_GART, &vmw_cmd_invalid, + false, false, true), + VMW_CMD_DEF(SVGA_3D_CMD_UNMAP_GART_RANGE, &vmw_cmd_invalid, + false, false, true), + VMW_CMD_DEF(SVGA_3D_CMD_DEFINE_GB_SCREENTARGET, &vmw_cmd_invalid, + false, false, true), + VMW_CMD_DEF(SVGA_3D_CMD_DESTROY_GB_SCREENTARGET, &vmw_cmd_invalid, + false, false, true), + VMW_CMD_DEF(SVGA_3D_CMD_BIND_GB_SCREENTARGET, &vmw_cmd_invalid, + false, false, true), + VMW_CMD_DEF(SVGA_3D_CMD_UPDATE_GB_SCREENTARGET, &vmw_cmd_invalid, + false, false, true), + VMW_CMD_DEF(SVGA_3D_CMD_READBACK_GB_IMAGE_PARTIAL, &vmw_cmd_invalid, + false, false, true), + VMW_CMD_DEF(SVGA_3D_CMD_INVALIDATE_GB_IMAGE_PARTIAL, &vmw_cmd_invalid, + false, false, true), + VMW_CMD_DEF(SVGA_3D_CMD_SET_GB_SHADERCONSTS_INLINE, &vmw_cmd_cid_check, + true, false, true) }; static int vmw_cmd_check(struct vmw_private *dev_priv, @@ -1095,6 +2034,8 @@ uint32_t size_remaining = *size; SVGA3dCmdHeader *header = (SVGA3dCmdHeader *) buf; int ret; + const struct vmw_cmd_entry *entry; + bool gb = dev_priv->capabilities & SVGA_CAP_GBOBJECTS; cmd_id = le32_to_cpu(((uint32_t *)buf)[0]); /* Handle any none 3D commands */ @@ -1107,18 +2048,43 @@ cmd_id -= SVGA_3D_CMD_BASE; if (unlikely(*size > size_remaining)) - goto out_err; + goto out_invalid; if (unlikely(cmd_id >= SVGA_3D_CMD_MAX - SVGA_3D_CMD_BASE)) - goto out_err; + goto out_invalid; + + entry = &vmw_cmd_entries[cmd_id]; + if (unlikely(!entry->func)) + goto out_invalid; + + if (unlikely(!entry->user_allow && !sw_context->kernel)) + goto out_privileged; - ret = vmw_cmd_funcs[cmd_id](dev_priv, sw_context, header); + if (unlikely(entry->gb_disable && gb)) + goto out_old; + + if (unlikely(entry->gb_enable && !gb)) + goto out_new; + + ret = entry->func(dev_priv, sw_context, header); if (unlikely(ret != 0)) - goto out_err; + goto out_invalid; return 0; -out_err: - DRM_ERROR("Illegal / Invalid SVGA3D command: %d\n", +out_invalid: + DRM_ERROR("Invalid SVGA3D command: %d\n", + cmd_id + SVGA_3D_CMD_BASE); + return -EINVAL; +out_privileged: + DRM_ERROR("Privileged SVGA3D command: %d\n", + cmd_id + SVGA_3D_CMD_BASE); + return -EPERM; +out_old: + DRM_ERROR("Deprecated (disallowed) SVGA3D command: %d\n", + cmd_id + SVGA_3D_CMD_BASE); + return -EINVAL; +out_new: + DRM_ERROR("SVGA3D command: %d not supported by virtual hardware.\n", cmd_id + SVGA_3D_CMD_BASE); return -EINVAL; } @@ -1174,6 +2140,9 @@ case VMW_PL_GMR: reloc->location->gmrId = bo->mem.start; break; + case VMW_PL_MOB: + *reloc->mob_loc = bo->mem.start; + break; default: BUG(); } @@ -1198,6 +2167,8 @@ list_for_each_entry_safe(val, val_next, list, head) { list_del_init(&val->head); vmw_resource_unreference(&val->res); + if (unlikely(val->staged_bindings)) + kfree(val->staged_bindings); kfree(val); } } @@ -1224,7 +2195,8 @@ } static int vmw_validate_single_buffer(struct vmw_private *dev_priv, - struct ttm_buffer_object *bo) + struct ttm_buffer_object *bo, + bool validate_as_mob) { int ret; @@ -1238,6 +2210,9 @@ dev_priv->dummy_query_bo_pinned)) return 0; + if (validate_as_mob) + return ttm_bo_validate(bo, &vmw_mob_placement, true, false); + /** * Put BO in VRAM if there is space, otherwise as a GMR. * If there is no space in VRAM and GMR ids are all used up, @@ -1259,7 +2234,6 @@ return ret; } - static int vmw_validate_buffers(struct vmw_private *dev_priv, struct vmw_sw_context *sw_context) { @@ -1267,7 +2241,8 @@ int ret; list_for_each_entry(entry, &sw_context->validate_nodes, base.head) { - ret = vmw_validate_single_buffer(dev_priv, entry->base.bo); + ret = vmw_validate_single_buffer(dev_priv, entry->base.bo, + entry->validate_as_mob); if (unlikely(ret != 0)) return ret; } @@ -1461,7 +2436,7 @@ } else sw_context->kernel = true; - sw_context->tfile = vmw_fpriv(file_priv)->tfile; + sw_context->fp = vmw_fpriv(file_priv); sw_context->cur_reloc = 0; sw_context->cur_val_buf = 0; sw_context->fence_flags = 0; @@ -1478,16 +2453,17 @@ goto out_unlock; sw_context->res_ht_initialized = true; } + INIT_LIST_HEAD(&sw_context->staged_shaders); INIT_LIST_HEAD(&resource_list); ret = vmw_cmd_check_all(dev_priv, sw_context, kernel_commands, command_size); if (unlikely(ret != 0)) - goto out_err; + goto out_err_nores; ret = vmw_resources_reserve(sw_context); if (unlikely(ret != 0)) - goto out_err; + goto out_err_nores; ret = ttm_eu_reserve_buffers(&ticket, &sw_context->validate_nodes); if (unlikely(ret != 0)) @@ -1509,11 +2485,23 @@ goto out_err; } + ret = mutex_lock_interruptible(&dev_priv->binding_mutex); + if (unlikely(ret != 0)) { + ret = -ERESTARTSYS; + goto out_err; + } + + if (dev_priv->has_mob) { + ret = vmw_rebind_contexts(sw_context); + if (unlikely(ret != 0)) + goto out_unlock_binding; + } + cmd = vmw_fifo_reserve(dev_priv, command_size); if (unlikely(cmd == NULL)) { DRM_ERROR("Failed reserving fifo space for commands.\n"); ret = -ENOMEM; - goto out_err; + goto out_unlock_binding; } vmw_apply_relocations(sw_context); @@ -1538,6 +2526,8 @@ DRM_ERROR("Fence submission error. Syncing.\n"); vmw_resource_list_unreserve(&sw_context->resource_list, false); + mutex_unlock(&dev_priv->binding_mutex); + ttm_eu_fence_buffer_objects(&ticket, &sw_context->validate_nodes, (void *) fence); @@ -1558,6 +2548,8 @@ } list_splice_init(&sw_context->resource_list, &resource_list); + vmw_compat_shaders_commit(sw_context->fp->shman, + &sw_context->staged_shaders); mutex_unlock(&dev_priv->cmdbuf_mutex); /* @@ -1568,11 +2560,14 @@ return 0; +out_unlock_binding: + mutex_unlock(&dev_priv->binding_mutex); out_err: - vmw_resource_relocations_free(&sw_context->res_relocations); - vmw_free_relocations(sw_context); ttm_eu_backoff_reservation(&ticket, &sw_context->validate_nodes); +out_err_nores: vmw_resource_list_unreserve(&sw_context->resource_list, true); + vmw_resource_relocations_free(&sw_context->res_relocations); + vmw_free_relocations(sw_context); vmw_clear_validations(sw_context); if (unlikely(dev_priv->pinned_bo != NULL && !dev_priv->query_cid_valid)) @@ -1581,6 +2576,8 @@ list_splice_init(&sw_context->resource_list, &resource_list); error_resource = sw_context->error_resource; sw_context->error_resource = NULL; + vmw_compat_shaders_revert(sw_context->fp->shman, + &sw_context->staged_shaders); mutex_unlock(&dev_priv->cmdbuf_mutex); /* --- linux-3.13.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c +++ linux-3.13.0/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c @@ -147,7 +147,7 @@ } if (!vmw_kms_validate_mode_vram(vmw_priv, - info->fix.line_length, + var->xres * var->bits_per_pixel/8, var->yoffset + var->yres)) { DRM_ERROR("Requested geom can not fit in framebuffer\n"); return -EINVAL; @@ -162,6 +162,8 @@ struct vmw_private *vmw_priv = par->vmw_priv; int ret; + info->fix.line_length = info->var.xres * info->var.bits_per_pixel/8; + ret = vmw_kms_write_svga(vmw_priv, info->var.xres, info->var.yres, info->fix.line_length, par->bpp, par->depth); --- linux-3.13.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c +++ linux-3.13.0/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c @@ -271,7 +271,7 @@ spin_unlock_irq(&fman->lock); } -void vmw_fences_perform_actions(struct vmw_fence_manager *fman, +static void vmw_fences_perform_actions(struct vmw_fence_manager *fman, struct list_head *list) { struct vmw_fence_action *action, *next_action; @@ -485,14 +485,7 @@ static void vmw_fence_destroy(struct vmw_fence_obj *fence) { - struct vmw_fence_manager *fman = fence->fman; - kfree(fence); - /* - * Free kernel space accounting. - */ - ttm_mem_global_free(vmw_mem_glob(fman->dev_priv), - fman->fence_size); } int vmw_fence_create(struct vmw_fence_manager *fman, @@ -500,20 +493,12 @@ uint32_t mask, struct vmw_fence_obj **p_fence) { - struct ttm_mem_global *mem_glob = vmw_mem_glob(fman->dev_priv); struct vmw_fence_obj *fence; int ret; - ret = ttm_mem_global_alloc(mem_glob, fman->fence_size, - false, false); - if (unlikely(ret != 0)) - return ret; - fence = kzalloc(sizeof(*fence), GFP_KERNEL); - if (unlikely(fence == NULL)) { - ret = -ENOMEM; - goto out_no_object; - } + if (unlikely(fence == NULL)) + return -ENOMEM; ret = vmw_fence_obj_init(fman, fence, seqno, mask, vmw_fence_destroy); @@ -525,8 +510,6 @@ out_err_init: kfree(fence); -out_no_object: - ttm_mem_global_free(mem_glob, fman->fence_size); return ret; } @@ -897,7 +880,7 @@ * Note that the action callbacks may be executed before this function * returns. */ -void vmw_fence_obj_add_action(struct vmw_fence_obj *fence, +static void vmw_fence_obj_add_action(struct vmw_fence_obj *fence, struct vmw_fence_action *action) { struct vmw_fence_manager *fman = fence->fman; @@ -993,7 +976,7 @@ struct drm_vmw_event_fence event; }; -int vmw_event_fence_action_create(struct drm_file *file_priv, +static int vmw_event_fence_action_create(struct drm_file *file_priv, struct vmw_fence_obj *fence, uint32_t flags, uint64_t user_data, @@ -1049,6 +1032,8 @@ if (ret != 0) goto out_no_queue; + return 0; + out_no_queue: event->base.destroy(&event->base); out_no_event: @@ -1080,7 +1065,8 @@ */ if (arg->handle) { struct ttm_base_object *base = - ttm_base_object_lookup(vmw_fp->tfile, arg->handle); + ttm_base_object_lookup_for_ref(dev_priv->tdev, + arg->handle); if (unlikely(base == NULL)) { DRM_ERROR("Fence event invalid fence object handle " @@ -1123,17 +1109,10 @@ BUG_ON(fence == NULL); - if (arg->flags & DRM_VMW_FE_FLAG_REQ_TIME) - ret = vmw_event_fence_action_create(file_priv, fence, - arg->flags, - arg->user_data, - true); - else - ret = vmw_event_fence_action_create(file_priv, fence, - arg->flags, - arg->user_data, - true); - + ret = vmw_event_fence_action_create(file_priv, fence, + arg->flags, + arg->user_data, + true); if (unlikely(ret != 0)) { if (ret != -ERESTARTSYS) DRM_ERROR("Failed to attach event to fence.\n"); --- linux-3.13.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c +++ linux-3.13.0/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c @@ -35,6 +35,23 @@ uint32_t fifo_min, hwversion; const struct vmw_fifo_state *fifo = &dev_priv->fifo; + if (!(dev_priv->capabilities & SVGA_CAP_3D)) + return false; + + if (dev_priv->capabilities & SVGA_CAP_GBOBJECTS) { + uint32_t result; + + if (!dev_priv->has_mob) + return false; + + mutex_lock(&dev_priv->hw_mutex); + vmw_write(dev_priv, SVGA_REG_DEV_CAP, SVGA3D_DEVCAP_3D); + result = vmw_read(dev_priv, SVGA_REG_DEV_CAP); + mutex_unlock(&dev_priv->hw_mutex); + + return (result != 0); + } + if (!(dev_priv->capabilities & SVGA_CAP_EXTENDED_FIFO)) return false; @@ -163,8 +180,9 @@ mutex_lock(&dev_priv->hw_mutex); + vmw_write(dev_priv, SVGA_REG_SYNC, SVGA_SYNC_GENERIC); while (vmw_read(dev_priv, SVGA_REG_BUSY) != 0) - vmw_write(dev_priv, SVGA_REG_SYNC, SVGA_SYNC_GENERIC); + ; dev_priv->last_read_seqno = ioread32(fifo_mem + SVGA_FIFO_FENCE); @@ -511,24 +529,16 @@ } /** - * vmw_fifo_emit_dummy_query - emits a dummy query to the fifo. + * vmw_fifo_emit_dummy_legacy_query - emits a dummy query to the fifo using + * legacy query commands. * * @dev_priv: The device private structure. * @cid: The hardware context id used for the query. * - * This function is used to emit a dummy occlusion query with - * no primitives rendered between query begin and query end. - * It's used to provide a query barrier, in order to know that when - * this query is finished, all preceding queries are also finished. - * - * A Query results structure should have been initialized at the start - * of the dev_priv->dummy_query_bo buffer object. And that buffer object - * must also be either reserved or pinned when this function is called. - * - * Returns -ENOMEM on failure to reserve fifo space. + * See the vmw_fifo_emit_dummy_query documentation. */ -int vmw_fifo_emit_dummy_query(struct vmw_private *dev_priv, - uint32_t cid) +static int vmw_fifo_emit_dummy_legacy_query(struct vmw_private *dev_priv, + uint32_t cid) { /* * A query wait without a preceding query end will @@ -566,3 +576,75 @@ return 0; } + +/** + * vmw_fifo_emit_dummy_gb_query - emits a dummy query to the fifo using + * guest-backed resource query commands. + * + * @dev_priv: The device private structure. + * @cid: The hardware context id used for the query. + * + * See the vmw_fifo_emit_dummy_query documentation. + */ +static int vmw_fifo_emit_dummy_gb_query(struct vmw_private *dev_priv, + uint32_t cid) +{ + /* + * A query wait without a preceding query end will + * actually finish all queries for this cid + * without writing to the query result structure. + */ + + struct ttm_buffer_object *bo = dev_priv->dummy_query_bo; + struct { + SVGA3dCmdHeader header; + SVGA3dCmdWaitForGBQuery body; + } *cmd; + + cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd)); + + if (unlikely(cmd == NULL)) { + DRM_ERROR("Out of fifo space for dummy query.\n"); + return -ENOMEM; + } + + cmd->header.id = SVGA_3D_CMD_WAIT_FOR_GB_QUERY; + cmd->header.size = sizeof(cmd->body); + cmd->body.cid = cid; + cmd->body.type = SVGA3D_QUERYTYPE_OCCLUSION; + BUG_ON(bo->mem.mem_type != VMW_PL_MOB); + cmd->body.mobid = bo->mem.start; + cmd->body.offset = 0; + + vmw_fifo_commit(dev_priv, sizeof(*cmd)); + + return 0; +} + + +/** + * vmw_fifo_emit_dummy_gb_query - emits a dummy query to the fifo using + * appropriate resource query commands. + * + * @dev_priv: The device private structure. + * @cid: The hardware context id used for the query. + * + * This function is used to emit a dummy occlusion query with + * no primitives rendered between query begin and query end. + * It's used to provide a query barrier, in order to know that when + * this query is finished, all preceding queries are also finished. + * + * A Query results structure should have been initialized at the start + * of the dev_priv->dummy_query_bo buffer object. And that buffer object + * must also be either reserved or pinned when this function is called. + * + * Returns -ENOMEM on failure to reserve fifo space. + */ +int vmw_fifo_emit_dummy_query(struct vmw_private *dev_priv, + uint32_t cid) +{ + if (dev_priv->has_mob) + return vmw_fifo_emit_dummy_gb_query(dev_priv, cid); + + return vmw_fifo_emit_dummy_legacy_query(dev_priv, cid); +} --- linux-3.13.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_gmr.c +++ linux-3.13.0/drivers/gpu/drm/vmwgfx/vmwgfx_gmr.c @@ -125,181 +125,27 @@ } -static void vmw_gmr_free_descriptors(struct device *dev, dma_addr_t desc_dma, - struct list_head *desc_pages) -{ - struct page *page, *next; - struct svga_guest_mem_descriptor *page_virtual; - unsigned int desc_per_page = PAGE_SIZE / - sizeof(struct svga_guest_mem_descriptor) - 1; - - if (list_empty(desc_pages)) - return; - - list_for_each_entry_safe(page, next, desc_pages, lru) { - list_del_init(&page->lru); - - if (likely(desc_dma != DMA_ADDR_INVALID)) { - dma_unmap_page(dev, desc_dma, PAGE_SIZE, - DMA_TO_DEVICE); - } - - page_virtual = kmap_atomic(page); - desc_dma = (dma_addr_t) - le32_to_cpu(page_virtual[desc_per_page].ppn) << - PAGE_SHIFT; - kunmap_atomic(page_virtual); - - __free_page(page); - } -} - -/** - * FIXME: Adjust to the ttm lowmem / highmem storage to minimize - * the number of used descriptors. - * - */ - -static int vmw_gmr_build_descriptors(struct device *dev, - struct list_head *desc_pages, - struct vmw_piter *iter, - unsigned long num_pages, - dma_addr_t *first_dma) -{ - struct page *page; - struct svga_guest_mem_descriptor *page_virtual = NULL; - struct svga_guest_mem_descriptor *desc_virtual = NULL; - unsigned int desc_per_page; - unsigned long prev_pfn; - unsigned long pfn; - int ret; - dma_addr_t desc_dma; - - desc_per_page = PAGE_SIZE / - sizeof(struct svga_guest_mem_descriptor) - 1; - - while (likely(num_pages != 0)) { - page = alloc_page(__GFP_HIGHMEM); - if (unlikely(page == NULL)) { - ret = -ENOMEM; - goto out_err; - } - - list_add_tail(&page->lru, desc_pages); - page_virtual = kmap_atomic(page); - desc_virtual = page_virtual - 1; - prev_pfn = ~(0UL); - - while (likely(num_pages != 0)) { - pfn = vmw_piter_dma_addr(iter) >> PAGE_SHIFT; - - if (pfn != prev_pfn + 1) { - - if (desc_virtual - page_virtual == - desc_per_page - 1) - break; - - (++desc_virtual)->ppn = cpu_to_le32(pfn); - desc_virtual->num_pages = cpu_to_le32(1); - } else { - uint32_t tmp = - le32_to_cpu(desc_virtual->num_pages); - desc_virtual->num_pages = cpu_to_le32(tmp + 1); - } - prev_pfn = pfn; - --num_pages; - vmw_piter_next(iter); - } - - (++desc_virtual)->ppn = DMA_PAGE_INVALID; - desc_virtual->num_pages = cpu_to_le32(0); - kunmap_atomic(page_virtual); - } - - desc_dma = 0; - list_for_each_entry_reverse(page, desc_pages, lru) { - page_virtual = kmap_atomic(page); - page_virtual[desc_per_page].ppn = cpu_to_le32 - (desc_dma >> PAGE_SHIFT); - kunmap_atomic(page_virtual); - desc_dma = dma_map_page(dev, page, 0, PAGE_SIZE, - DMA_TO_DEVICE); - - if (unlikely(dma_mapping_error(dev, desc_dma))) - goto out_err; - } - *first_dma = desc_dma; - - return 0; -out_err: - vmw_gmr_free_descriptors(dev, DMA_ADDR_INVALID, desc_pages); - return ret; -} - -static void vmw_gmr_fire_descriptors(struct vmw_private *dev_priv, - int gmr_id, dma_addr_t desc_dma) -{ - mutex_lock(&dev_priv->hw_mutex); - - vmw_write(dev_priv, SVGA_REG_GMR_ID, gmr_id); - wmb(); - vmw_write(dev_priv, SVGA_REG_GMR_DESCRIPTOR, desc_dma >> PAGE_SHIFT); - mb(); - - mutex_unlock(&dev_priv->hw_mutex); - -} - int vmw_gmr_bind(struct vmw_private *dev_priv, const struct vmw_sg_table *vsgt, unsigned long num_pages, int gmr_id) { - struct list_head desc_pages; - dma_addr_t desc_dma = 0; - struct device *dev = dev_priv->dev->dev; struct vmw_piter data_iter; - int ret; vmw_piter_start(&data_iter, vsgt, 0); if (unlikely(!vmw_piter_next(&data_iter))) return 0; - if (likely(dev_priv->capabilities & SVGA_CAP_GMR2)) - return vmw_gmr2_bind(dev_priv, &data_iter, num_pages, gmr_id); - - if (unlikely(!(dev_priv->capabilities & SVGA_CAP_GMR))) - return -EINVAL; - - if (vsgt->num_regions > dev_priv->max_gmr_descriptors) + if (unlikely(!(dev_priv->capabilities & SVGA_CAP_GMR2))) return -EINVAL; - INIT_LIST_HEAD(&desc_pages); - - ret = vmw_gmr_build_descriptors(dev, &desc_pages, &data_iter, - num_pages, &desc_dma); - if (unlikely(ret != 0)) - return ret; - - vmw_gmr_fire_descriptors(dev_priv, gmr_id, desc_dma); - vmw_gmr_free_descriptors(dev, desc_dma, &desc_pages); - - return 0; + return vmw_gmr2_bind(dev_priv, &data_iter, num_pages, gmr_id); } void vmw_gmr_unbind(struct vmw_private *dev_priv, int gmr_id) { - if (likely(dev_priv->capabilities & SVGA_CAP_GMR2)) { + if (likely(dev_priv->capabilities & SVGA_CAP_GMR2)) vmw_gmr2_unbind(dev_priv, gmr_id); - return; - } - - mutex_lock(&dev_priv->hw_mutex); - vmw_write(dev_priv, SVGA_REG_GMR_ID, gmr_id); - wmb(); - vmw_write(dev_priv, SVGA_REG_GMR_DESCRIPTOR, 0); - mb(); - mutex_unlock(&dev_priv->hw_mutex); } --- linux-3.13.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c +++ linux-3.13.0/drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c @@ -125,10 +125,21 @@ return -ENOMEM; spin_lock_init(&gman->lock); - gman->max_gmr_pages = dev_priv->max_gmr_pages; gman->used_gmr_pages = 0; ida_init(&gman->gmr_ida); - gman->max_gmr_ids = p_size; + + switch (p_size) { + case VMW_PL_GMR: + gman->max_gmr_ids = dev_priv->max_gmr_ids; + gman->max_gmr_pages = dev_priv->max_gmr_pages; + break; + case VMW_PL_MOB: + gman->max_gmr_ids = VMWGFX_NUM_MOB; + gman->max_gmr_pages = dev_priv->max_mob_pages; + break; + default: + BUG(); + } man->priv = (void *) gman; return 0; } --- linux-3.13.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_ioctl.c +++ linux-3.13.0/drivers/gpu/drm/vmwgfx/vmwgfx_ioctl.c @@ -29,12 +29,18 @@ #include #include "vmwgfx_kms.h" +struct svga_3d_compat_cap { + SVGA3dCapsRecordHeader header; + SVGA3dCapPair pairs[SVGA3D_DEVCAP_MAX]; +}; + int vmw_getparam_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv) { struct vmw_private *dev_priv = vmw_priv(dev); struct drm_vmw_getparam_arg *param = (struct drm_vmw_getparam_arg *)data; + struct vmw_fpriv *vmw_fp = vmw_fpriv(file_priv); switch (param->param) { case DRM_VMW_PARAM_NUM_STREAMS: @@ -53,13 +59,18 @@ param->value = dev_priv->fifo.capabilities; break; case DRM_VMW_PARAM_MAX_FB_SIZE: - param->value = dev_priv->vram_size; + param->value = dev_priv->prim_bb_mem; break; case DRM_VMW_PARAM_FIFO_HW_VERSION: { __le32 __iomem *fifo_mem = dev_priv->mmio_virt; const struct vmw_fifo_state *fifo = &dev_priv->fifo; + if ((dev_priv->capabilities & SVGA_CAP_GBOBJECTS)) { + param->value = SVGA3D_HWVERSION_WS8_B1; + break; + } + param->value = ioread32(fifo_mem + ((fifo->capabilities & @@ -69,7 +80,30 @@ break; } case DRM_VMW_PARAM_MAX_SURF_MEMORY: - param->value = dev_priv->memory_size; + if ((dev_priv->capabilities & SVGA_CAP_GBOBJECTS) && + !vmw_fp->gb_aware) + param->value = dev_priv->max_mob_pages * PAGE_SIZE / 2; + else + param->value = dev_priv->memory_size; + break; + case DRM_VMW_PARAM_3D_CAPS_SIZE: + if ((dev_priv->capabilities & SVGA_CAP_GBOBJECTS) && + vmw_fp->gb_aware) + param->value = SVGA3D_DEVCAP_MAX * sizeof(uint32_t); + else if (dev_priv->capabilities & SVGA_CAP_GBOBJECTS) + param->value = sizeof(struct svga_3d_compat_cap) + + sizeof(uint32_t); + else + param->value = (SVGA_FIFO_3D_CAPS_LAST - + SVGA_FIFO_3D_CAPS + 1) * + sizeof(uint32_t); + break; + case DRM_VMW_PARAM_MAX_MOB_MEMORY: + vmw_fp->gb_aware = true; + param->value = dev_priv->max_mob_pages * PAGE_SIZE; + break; + case DRM_VMW_PARAM_MAX_MOB_SIZE: + param->value = dev_priv->max_mob_size; break; default: DRM_ERROR("Illegal vmwgfx get param request: %d\n", @@ -80,6 +114,38 @@ return 0; } +static int vmw_fill_compat_cap(struct vmw_private *dev_priv, void *bounce, + size_t size) +{ + struct svga_3d_compat_cap *compat_cap = + (struct svga_3d_compat_cap *) bounce; + unsigned int i; + size_t pair_offset = offsetof(struct svga_3d_compat_cap, pairs); + unsigned int max_size; + + if (size < pair_offset) + return -EINVAL; + + max_size = (size - pair_offset) / sizeof(SVGA3dCapPair); + + if (max_size > SVGA3D_DEVCAP_MAX) + max_size = SVGA3D_DEVCAP_MAX; + + compat_cap->header.length = + (pair_offset + max_size * sizeof(SVGA3dCapPair)) / sizeof(u32); + compat_cap->header.type = SVGA3DCAPS_RECORD_DEVCAPS; + + mutex_lock(&dev_priv->hw_mutex); + for (i = 0; i < max_size; ++i) { + vmw_write(dev_priv, SVGA_REG_DEV_CAP, i); + compat_cap->pairs[i][0] = i; + compat_cap->pairs[i][1] = vmw_read(dev_priv, SVGA_REG_DEV_CAP); + } + mutex_unlock(&dev_priv->hw_mutex); + + return 0; +} + int vmw_get_cap_3d_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv) @@ -92,29 +158,58 @@ void __user *buffer = (void __user *)((unsigned long)(arg->buffer)); void *bounce; int ret; + bool gb_objects = !!(dev_priv->capabilities & SVGA_CAP_GBOBJECTS); + struct vmw_fpriv *vmw_fp = vmw_fpriv(file_priv); if (unlikely(arg->pad64 != 0)) { DRM_ERROR("Illegal GET_3D_CAP argument.\n"); return -EINVAL; } - size = (SVGA_FIFO_3D_CAPS_LAST - SVGA_FIFO_3D_CAPS + 1) << 2; + if (gb_objects && vmw_fp->gb_aware) + size = SVGA3D_DEVCAP_MAX * sizeof(uint32_t); + else if (gb_objects) + size = sizeof(struct svga_3d_compat_cap) + sizeof(uint32_t); + else + size = (SVGA_FIFO_3D_CAPS_LAST - SVGA_FIFO_3D_CAPS + 1) * + sizeof(uint32_t); if (arg->max_size < size) size = arg->max_size; - bounce = vmalloc(size); + bounce = vzalloc(size); if (unlikely(bounce == NULL)) { DRM_ERROR("Failed to allocate bounce buffer for 3D caps.\n"); return -ENOMEM; } - fifo_mem = dev_priv->mmio_virt; - memcpy_fromio(bounce, &fifo_mem[SVGA_FIFO_3D_CAPS], size); + if (gb_objects && vmw_fp->gb_aware) { + int i, num; + uint32_t *bounce32 = (uint32_t *) bounce; + + num = size / sizeof(uint32_t); + if (num > SVGA3D_DEVCAP_MAX) + num = SVGA3D_DEVCAP_MAX; + + mutex_lock(&dev_priv->hw_mutex); + for (i = 0; i < num; ++i) { + vmw_write(dev_priv, SVGA_REG_DEV_CAP, i); + *bounce32++ = vmw_read(dev_priv, SVGA_REG_DEV_CAP); + } + mutex_unlock(&dev_priv->hw_mutex); + } else if (gb_objects) { + ret = vmw_fill_compat_cap(dev_priv, bounce, size); + if (unlikely(ret != 0)) + goto out_err; + } else { + fifo_mem = dev_priv->mmio_virt; + memcpy_fromio(bounce, &fifo_mem[SVGA_FIFO_3D_CAPS], size); + } ret = copy_to_user(buffer, bounce, size); if (ret) ret = -EFAULT; +out_err: vfree(bounce); if (unlikely(ret != 0)) --- linux-3.13.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c +++ linux-3.13.0/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c @@ -40,7 +40,7 @@ * Clip @num_rects number of @rects against @clip storing the * results in @out_rects and the number of passed rects in @out_num. */ -void vmw_clip_cliprects(struct drm_clip_rect *rects, +static void vmw_clip_cliprects(struct drm_clip_rect *rects, int num_rects, struct vmw_clip_rect clip, SVGASignedRect *out_rects, @@ -423,7 +423,7 @@ struct drm_master *master; }; -void vmw_framebuffer_surface_destroy(struct drm_framebuffer *framebuffer) +static void vmw_framebuffer_surface_destroy(struct drm_framebuffer *framebuffer) { struct vmw_framebuffer_surface *vfbs = vmw_framebuffer_to_vfbs(framebuffer); @@ -589,7 +589,7 @@ return ret; } -int vmw_framebuffer_surface_dirty(struct drm_framebuffer *framebuffer, +static int vmw_framebuffer_surface_dirty(struct drm_framebuffer *framebuffer, struct drm_file *file_priv, unsigned flags, unsigned color, struct drm_clip_rect *clips, @@ -665,9 +665,9 @@ if (unlikely(surface->mip_levels[0] != 1 || surface->num_sizes != 1 || - surface->sizes[0].width < mode_cmd->width || - surface->sizes[0].height < mode_cmd->height || - surface->sizes[0].depth != 1)) { + surface->base_size.width < mode_cmd->width || + surface->base_size.height < mode_cmd->height || + surface->base_size.depth != 1)) { DRM_ERROR("Incompatible surface dimensions " "for requested mode.\n"); return -EINVAL; @@ -754,7 +754,7 @@ struct vmw_dma_buffer *buffer; }; -void vmw_framebuffer_dmabuf_destroy(struct drm_framebuffer *framebuffer) +static void vmw_framebuffer_dmabuf_destroy(struct drm_framebuffer *framebuffer) { struct vmw_framebuffer_dmabuf *vfbd = vmw_framebuffer_to_vfbd(framebuffer); @@ -940,7 +940,7 @@ return ret; } -int vmw_framebuffer_dmabuf_dirty(struct drm_framebuffer *framebuffer, +static int vmw_framebuffer_dmabuf_dirty(struct drm_framebuffer *framebuffer, struct drm_file *file_priv, unsigned flags, unsigned color, struct drm_clip_rect *clips, @@ -1631,7 +1631,7 @@ uint32_t pitch, uint32_t height) { - return ((u64) pitch * (u64) height) < (u64) dev_priv->vram_size; + return ((u64) pitch * (u64) height) < (u64) dev_priv->prim_bb_mem; } @@ -1663,7 +1663,7 @@ * Small shared kms functions. */ -int vmw_du_update_layout(struct vmw_private *dev_priv, unsigned num, +static int vmw_du_update_layout(struct vmw_private *dev_priv, unsigned num, struct drm_vmw_rect *rects) { struct drm_device *dev = dev_priv->dev; --- linux-3.13.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_mob.c +++ linux-3.13.0/drivers/gpu/drm/vmwgfx/vmwgfx_mob.c @@ -0,0 +1,656 @@ +/************************************************************************** + * + * Copyright © 2012 VMware, Inc., Palo Alto, CA., USA + * 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, sub license, 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 NON-INFRINGEMENT. IN NO EVENT SHALL + * THE COPYRIGHT HOLDERS, AUTHORS 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. + * + **************************************************************************/ + +#include "vmwgfx_drv.h" + +/* + * If we set up the screen target otable, screen objects stop working. + */ + +#define VMW_OTABLE_SETUP_SUB ((VMWGFX_ENABLE_SCREEN_TARGET_OTABLE) ? 0 : 1) + +#ifdef CONFIG_64BIT +#define VMW_PPN_SIZE 8 +#define VMW_MOBFMT_PTDEPTH_0 SVGA3D_MOBFMT_PTDEPTH64_0 +#define VMW_MOBFMT_PTDEPTH_1 SVGA3D_MOBFMT_PTDEPTH64_1 +#define VMW_MOBFMT_PTDEPTH_2 SVGA3D_MOBFMT_PTDEPTH64_2 +#else +#define VMW_PPN_SIZE 4 +#define VMW_MOBFMT_PTDEPTH_0 SVGA3D_MOBFMT_PTDEPTH_0 +#define VMW_MOBFMT_PTDEPTH_1 SVGA3D_MOBFMT_PTDEPTH_1 +#define VMW_MOBFMT_PTDEPTH_2 SVGA3D_MOBFMT_PTDEPTH_2 +#endif + +/* + * struct vmw_mob - Structure containing page table and metadata for a + * Guest Memory OBject. + * + * @num_pages Number of pages that make up the page table. + * @pt_level The indirection level of the page table. 0-2. + * @pt_root_page DMA address of the level 0 page of the page table. + */ +struct vmw_mob { + struct ttm_buffer_object *pt_bo; + unsigned long num_pages; + unsigned pt_level; + dma_addr_t pt_root_page; + uint32_t id; +}; + +/* + * struct vmw_otable - Guest Memory OBject table metadata + * + * @size: Size of the table (page-aligned). + * @page_table: Pointer to a struct vmw_mob holding the page table. + */ +struct vmw_otable { + unsigned long size; + struct vmw_mob *page_table; +}; + +static int vmw_mob_pt_populate(struct vmw_private *dev_priv, + struct vmw_mob *mob); +static void vmw_mob_pt_setup(struct vmw_mob *mob, + struct vmw_piter data_iter, + unsigned long num_data_pages); + +/* + * vmw_setup_otable_base - Issue an object table base setup command to + * the device + * + * @dev_priv: Pointer to a device private structure + * @type: Type of object table base + * @offset Start of table offset into dev_priv::otable_bo + * @otable Pointer to otable metadata; + * + * This function returns -ENOMEM if it fails to reserve fifo space, + * and may block waiting for fifo space. + */ +static int vmw_setup_otable_base(struct vmw_private *dev_priv, + SVGAOTableType type, + unsigned long offset, + struct vmw_otable *otable) +{ + struct { + SVGA3dCmdHeader header; + SVGA3dCmdSetOTableBase64 body; + } *cmd; + struct vmw_mob *mob; + const struct vmw_sg_table *vsgt; + struct vmw_piter iter; + int ret; + + BUG_ON(otable->page_table != NULL); + + vsgt = vmw_bo_sg_table(dev_priv->otable_bo); + vmw_piter_start(&iter, vsgt, offset >> PAGE_SHIFT); + WARN_ON(!vmw_piter_next(&iter)); + + mob = vmw_mob_create(otable->size >> PAGE_SHIFT); + if (unlikely(mob == NULL)) { + DRM_ERROR("Failed creating OTable page table.\n"); + return -ENOMEM; + } + + if (otable->size <= PAGE_SIZE) { + mob->pt_level = VMW_MOBFMT_PTDEPTH_0; + mob->pt_root_page = vmw_piter_dma_addr(&iter); + } else if (vsgt->num_regions == 1) { + mob->pt_level = SVGA3D_MOBFMT_RANGE; + mob->pt_root_page = vmw_piter_dma_addr(&iter); + } else { + ret = vmw_mob_pt_populate(dev_priv, mob); + if (unlikely(ret != 0)) + goto out_no_populate; + + vmw_mob_pt_setup(mob, iter, otable->size >> PAGE_SHIFT); + mob->pt_level += VMW_MOBFMT_PTDEPTH_1 - SVGA3D_MOBFMT_PTDEPTH_1; + } + + cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd)); + if (unlikely(cmd == NULL)) { + DRM_ERROR("Failed reserving FIFO space for OTable setup.\n"); + ret = -ENOMEM; + goto out_no_fifo; + } + + memset(cmd, 0, sizeof(*cmd)); + cmd->header.id = SVGA_3D_CMD_SET_OTABLE_BASE64; + cmd->header.size = sizeof(cmd->body); + cmd->body.type = type; + cmd->body.baseAddress = cpu_to_le64(mob->pt_root_page >> PAGE_SHIFT); + cmd->body.sizeInBytes = otable->size; + cmd->body.validSizeInBytes = 0; + cmd->body.ptDepth = mob->pt_level; + + /* + * The device doesn't support this, But the otable size is + * determined at compile-time, so this BUG shouldn't trigger + * randomly. + */ + BUG_ON(mob->pt_level == VMW_MOBFMT_PTDEPTH_2); + + vmw_fifo_commit(dev_priv, sizeof(*cmd)); + otable->page_table = mob; + + return 0; + +out_no_fifo: +out_no_populate: + vmw_mob_destroy(mob); + return ret; +} + +/* + * vmw_takedown_otable_base - Issue an object table base takedown command + * to the device + * + * @dev_priv: Pointer to a device private structure + * @type: Type of object table base + * + */ +static void vmw_takedown_otable_base(struct vmw_private *dev_priv, + SVGAOTableType type, + struct vmw_otable *otable) +{ + struct { + SVGA3dCmdHeader header; + SVGA3dCmdSetOTableBase body; + } *cmd; + struct ttm_buffer_object *bo; + + if (otable->page_table == NULL) + return; + + bo = otable->page_table->pt_bo; + cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd)); + if (unlikely(cmd == NULL)) { + DRM_ERROR("Failed reserving FIFO space for OTable " + "takedown.\n"); + } else { + memset(cmd, 0, sizeof(*cmd)); + cmd->header.id = SVGA_3D_CMD_SET_OTABLE_BASE; + cmd->header.size = sizeof(cmd->body); + cmd->body.type = type; + cmd->body.baseAddress = 0; + cmd->body.sizeInBytes = 0; + cmd->body.validSizeInBytes = 0; + cmd->body.ptDepth = SVGA3D_MOBFMT_INVALID; + vmw_fifo_commit(dev_priv, sizeof(*cmd)); + } + + if (bo) { + int ret; + + ret = ttm_bo_reserve(bo, false, true, false, NULL); + BUG_ON(ret != 0); + + vmw_fence_single_bo(bo, NULL); + ttm_bo_unreserve(bo); + } + + vmw_mob_destroy(otable->page_table); + otable->page_table = NULL; +} + +/* + * vmw_otables_setup - Set up guest backed memory object tables + * + * @dev_priv: Pointer to a device private structure + * + * Takes care of the device guest backed surface + * initialization, by setting up the guest backed memory object tables. + * Returns 0 on success and various error codes on failure. A succesful return + * means the object tables can be taken down using the vmw_otables_takedown + * function. + */ +int vmw_otables_setup(struct vmw_private *dev_priv) +{ + unsigned long offset; + unsigned long bo_size; + struct vmw_otable *otables; + SVGAOTableType i; + int ret; + + otables = kzalloc(SVGA_OTABLE_DX9_MAX * sizeof(*otables), + GFP_KERNEL); + if (unlikely(otables == NULL)) { + DRM_ERROR("Failed to allocate space for otable " + "metadata.\n"); + return -ENOMEM; + } + + otables[SVGA_OTABLE_MOB].size = + VMWGFX_NUM_MOB * SVGA3D_OTABLE_MOB_ENTRY_SIZE; + otables[SVGA_OTABLE_SURFACE].size = + VMWGFX_NUM_GB_SURFACE * SVGA3D_OTABLE_SURFACE_ENTRY_SIZE; + otables[SVGA_OTABLE_CONTEXT].size = + VMWGFX_NUM_GB_CONTEXT * SVGA3D_OTABLE_CONTEXT_ENTRY_SIZE; + otables[SVGA_OTABLE_SHADER].size = + VMWGFX_NUM_GB_SHADER * SVGA3D_OTABLE_SHADER_ENTRY_SIZE; + otables[SVGA_OTABLE_SCREEN_TARGET].size = + VMWGFX_NUM_GB_SCREEN_TARGET * + SVGA3D_OTABLE_SCREEN_TARGET_ENTRY_SIZE; + + bo_size = 0; + for (i = 0; i < SVGA_OTABLE_DX9_MAX; ++i) { + otables[i].size = + (otables[i].size + PAGE_SIZE - 1) & PAGE_MASK; + bo_size += otables[i].size; + } + + ret = ttm_bo_create(&dev_priv->bdev, bo_size, + ttm_bo_type_device, + &vmw_sys_ne_placement, + 0, false, NULL, + &dev_priv->otable_bo); + + if (unlikely(ret != 0)) + goto out_no_bo; + + ret = ttm_bo_reserve(dev_priv->otable_bo, false, true, false, NULL); + BUG_ON(ret != 0); + ret = vmw_bo_driver.ttm_tt_populate(dev_priv->otable_bo->ttm); + if (unlikely(ret != 0)) + goto out_unreserve; + ret = vmw_bo_map_dma(dev_priv->otable_bo); + if (unlikely(ret != 0)) + goto out_unreserve; + + ttm_bo_unreserve(dev_priv->otable_bo); + + offset = 0; + for (i = 0; i < SVGA_OTABLE_DX9_MAX - VMW_OTABLE_SETUP_SUB; ++i) { + ret = vmw_setup_otable_base(dev_priv, i, offset, + &otables[i]); + if (unlikely(ret != 0)) + goto out_no_setup; + offset += otables[i].size; + } + + dev_priv->otables = otables; + return 0; + +out_unreserve: + ttm_bo_unreserve(dev_priv->otable_bo); +out_no_setup: + for (i = 0; i < SVGA_OTABLE_DX9_MAX - VMW_OTABLE_SETUP_SUB; ++i) + vmw_takedown_otable_base(dev_priv, i, &otables[i]); + + ttm_bo_unref(&dev_priv->otable_bo); +out_no_bo: + kfree(otables); + return ret; +} + + +/* + * vmw_otables_takedown - Take down guest backed memory object tables + * + * @dev_priv: Pointer to a device private structure + * + * Take down the Guest Memory Object tables. + */ +void vmw_otables_takedown(struct vmw_private *dev_priv) +{ + SVGAOTableType i; + struct ttm_buffer_object *bo = dev_priv->otable_bo; + int ret; + + for (i = 0; i < SVGA_OTABLE_DX9_MAX - VMW_OTABLE_SETUP_SUB; ++i) + vmw_takedown_otable_base(dev_priv, i, + &dev_priv->otables[i]); + + ret = ttm_bo_reserve(bo, false, true, false, NULL); + BUG_ON(ret != 0); + + vmw_fence_single_bo(bo, NULL); + ttm_bo_unreserve(bo); + + ttm_bo_unref(&dev_priv->otable_bo); + kfree(dev_priv->otables); + dev_priv->otables = NULL; +} + + +/* + * vmw_mob_calculate_pt_pages - Calculate the number of page table pages + * needed for a guest backed memory object. + * + * @data_pages: Number of data pages in the memory object buffer. + */ +static unsigned long vmw_mob_calculate_pt_pages(unsigned long data_pages) +{ + unsigned long data_size = data_pages * PAGE_SIZE; + unsigned long tot_size = 0; + + while (likely(data_size > PAGE_SIZE)) { + data_size = DIV_ROUND_UP(data_size, PAGE_SIZE); + data_size *= VMW_PPN_SIZE; + tot_size += (data_size + PAGE_SIZE - 1) & PAGE_MASK; + } + + return tot_size >> PAGE_SHIFT; +} + +/* + * vmw_mob_create - Create a mob, but don't populate it. + * + * @data_pages: Number of data pages of the underlying buffer object. + */ +struct vmw_mob *vmw_mob_create(unsigned long data_pages) +{ + struct vmw_mob *mob = kzalloc(sizeof(*mob), GFP_KERNEL); + + if (unlikely(mob == NULL)) + return NULL; + + mob->num_pages = vmw_mob_calculate_pt_pages(data_pages); + + return mob; +} + +/* + * vmw_mob_pt_populate - Populate the mob pagetable + * + * @mob: Pointer to the mob the pagetable of which we want to + * populate. + * + * This function allocates memory to be used for the pagetable, and + * adjusts TTM memory accounting accordingly. Returns ENOMEM if + * memory resources aren't sufficient and may cause TTM buffer objects + * to be swapped out by using the TTM memory accounting function. + */ +static int vmw_mob_pt_populate(struct vmw_private *dev_priv, + struct vmw_mob *mob) +{ + int ret; + BUG_ON(mob->pt_bo != NULL); + + ret = ttm_bo_create(&dev_priv->bdev, mob->num_pages * PAGE_SIZE, + ttm_bo_type_device, + &vmw_sys_ne_placement, + 0, false, NULL, &mob->pt_bo); + if (unlikely(ret != 0)) + return ret; + + ret = ttm_bo_reserve(mob->pt_bo, false, true, false, NULL); + + BUG_ON(ret != 0); + ret = vmw_bo_driver.ttm_tt_populate(mob->pt_bo->ttm); + if (unlikely(ret != 0)) + goto out_unreserve; + ret = vmw_bo_map_dma(mob->pt_bo); + if (unlikely(ret != 0)) + goto out_unreserve; + + ttm_bo_unreserve(mob->pt_bo); + + return 0; + +out_unreserve: + ttm_bo_unreserve(mob->pt_bo); + ttm_bo_unref(&mob->pt_bo); + + return ret; +} + +/** + * vmw_mob_assign_ppn - Assign a value to a page table entry + * + * @addr: Pointer to pointer to page table entry. + * @val: The page table entry + * + * Assigns a value to a page table entry pointed to by *@addr and increments + * *@addr according to the page table entry size. + */ +#if (VMW_PPN_SIZE == 8) +static void vmw_mob_assign_ppn(__le32 **addr, dma_addr_t val) +{ + *((__le64 *) *addr) = cpu_to_le64(val >> PAGE_SHIFT); + *addr += 2; +} +#else +static void vmw_mob_assign_ppn(__le32 **addr, dma_addr_t val) +{ + *(*addr)++ = cpu_to_le32(val >> PAGE_SHIFT); +} +#endif + +/* + * vmw_mob_build_pt - Build a pagetable + * + * @data_addr: Array of DMA addresses to the underlying buffer + * object's data pages. + * @num_data_pages: Number of buffer object data pages. + * @pt_pages: Array of page pointers to the page table pages. + * + * Returns the number of page table pages actually used. + * Uses atomic kmaps of highmem pages to avoid TLB thrashing. + */ +static unsigned long vmw_mob_build_pt(struct vmw_piter *data_iter, + unsigned long num_data_pages, + struct vmw_piter *pt_iter) +{ + unsigned long pt_size = num_data_pages * VMW_PPN_SIZE; + unsigned long num_pt_pages = DIV_ROUND_UP(pt_size, PAGE_SIZE); + unsigned long pt_page; + __le32 *addr, *save_addr; + unsigned long i; + struct page *page; + + for (pt_page = 0; pt_page < num_pt_pages; ++pt_page) { + page = vmw_piter_page(pt_iter); + + save_addr = addr = kmap_atomic(page); + + for (i = 0; i < PAGE_SIZE / VMW_PPN_SIZE; ++i) { + vmw_mob_assign_ppn(&addr, + vmw_piter_dma_addr(data_iter)); + if (unlikely(--num_data_pages == 0)) + break; + WARN_ON(!vmw_piter_next(data_iter)); + } + kunmap_atomic(save_addr); + vmw_piter_next(pt_iter); + } + + return num_pt_pages; +} + +/* + * vmw_mob_build_pt - Set up a multilevel mob pagetable + * + * @mob: Pointer to a mob whose page table needs setting up. + * @data_addr Array of DMA addresses to the buffer object's data + * pages. + * @num_data_pages: Number of buffer object data pages. + * + * Uses tail recursion to set up a multilevel mob page table. + */ +static void vmw_mob_pt_setup(struct vmw_mob *mob, + struct vmw_piter data_iter, + unsigned long num_data_pages) +{ + unsigned long num_pt_pages = 0; + struct ttm_buffer_object *bo = mob->pt_bo; + struct vmw_piter save_pt_iter; + struct vmw_piter pt_iter; + const struct vmw_sg_table *vsgt; + int ret; + + ret = ttm_bo_reserve(bo, false, true, false, NULL); + BUG_ON(ret != 0); + + vsgt = vmw_bo_sg_table(bo); + vmw_piter_start(&pt_iter, vsgt, 0); + BUG_ON(!vmw_piter_next(&pt_iter)); + mob->pt_level = 0; + while (likely(num_data_pages > 1)) { + ++mob->pt_level; + BUG_ON(mob->pt_level > 2); + save_pt_iter = pt_iter; + num_pt_pages = vmw_mob_build_pt(&data_iter, num_data_pages, + &pt_iter); + data_iter = save_pt_iter; + num_data_pages = num_pt_pages; + } + + mob->pt_root_page = vmw_piter_dma_addr(&save_pt_iter); + ttm_bo_unreserve(bo); +} + +/* + * vmw_mob_destroy - Destroy a mob, unpopulating first if necessary. + * + * @mob: Pointer to a mob to destroy. + */ +void vmw_mob_destroy(struct vmw_mob *mob) +{ + if (mob->pt_bo) + ttm_bo_unref(&mob->pt_bo); + kfree(mob); +} + +/* + * vmw_mob_unbind - Hide a mob from the device. + * + * @dev_priv: Pointer to a device private. + * @mob_id: Device id of the mob to unbind. + */ +void vmw_mob_unbind(struct vmw_private *dev_priv, + struct vmw_mob *mob) +{ + struct { + SVGA3dCmdHeader header; + SVGA3dCmdDestroyGBMob body; + } *cmd; + int ret; + struct ttm_buffer_object *bo = mob->pt_bo; + + if (bo) { + ret = ttm_bo_reserve(bo, false, true, false, NULL); + /* + * Noone else should be using this buffer. + */ + BUG_ON(ret != 0); + } + + cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd)); + if (unlikely(cmd == NULL)) { + DRM_ERROR("Failed reserving FIFO space for Memory " + "Object unbinding.\n"); + } else { + cmd->header.id = SVGA_3D_CMD_DESTROY_GB_MOB; + cmd->header.size = sizeof(cmd->body); + cmd->body.mobid = mob->id; + vmw_fifo_commit(dev_priv, sizeof(*cmd)); + } + if (bo) { + vmw_fence_single_bo(bo, NULL); + ttm_bo_unreserve(bo); + } + vmw_3d_resource_dec(dev_priv, false); +} + +/* + * vmw_mob_bind - Make a mob visible to the device after first + * populating it if necessary. + * + * @dev_priv: Pointer to a device private. + * @mob: Pointer to the mob we're making visible. + * @data_addr: Array of DMA addresses to the data pages of the underlying + * buffer object. + * @num_data_pages: Number of data pages of the underlying buffer + * object. + * @mob_id: Device id of the mob to bind + * + * This function is intended to be interfaced with the ttm_tt backend + * code. + */ +int vmw_mob_bind(struct vmw_private *dev_priv, + struct vmw_mob *mob, + const struct vmw_sg_table *vsgt, + unsigned long num_data_pages, + int32_t mob_id) +{ + int ret; + bool pt_set_up = false; + struct vmw_piter data_iter; + struct { + SVGA3dCmdHeader header; + SVGA3dCmdDefineGBMob64 body; + } *cmd; + + mob->id = mob_id; + vmw_piter_start(&data_iter, vsgt, 0); + if (unlikely(!vmw_piter_next(&data_iter))) + return 0; + + if (likely(num_data_pages == 1)) { + mob->pt_level = VMW_MOBFMT_PTDEPTH_0; + mob->pt_root_page = vmw_piter_dma_addr(&data_iter); + } else if (vsgt->num_regions == 1) { + mob->pt_level = SVGA3D_MOBFMT_RANGE; + mob->pt_root_page = vmw_piter_dma_addr(&data_iter); + } else if (unlikely(mob->pt_bo == NULL)) { + ret = vmw_mob_pt_populate(dev_priv, mob); + if (unlikely(ret != 0)) + return ret; + + vmw_mob_pt_setup(mob, data_iter, num_data_pages); + pt_set_up = true; + mob->pt_level += VMW_MOBFMT_PTDEPTH_1 - SVGA3D_MOBFMT_PTDEPTH_1; + } + + (void) vmw_3d_resource_inc(dev_priv, false); + + cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd)); + if (unlikely(cmd == NULL)) { + DRM_ERROR("Failed reserving FIFO space for Memory " + "Object binding.\n"); + goto out_no_cmd_space; + } + + cmd->header.id = SVGA_3D_CMD_DEFINE_GB_MOB64; + cmd->header.size = sizeof(cmd->body); + cmd->body.mobid = mob_id; + cmd->body.ptDepth = mob->pt_level; + cmd->body.base = cpu_to_le64(mob->pt_root_page >> PAGE_SHIFT); + cmd->body.sizeInBytes = num_data_pages * PAGE_SIZE; + + vmw_fifo_commit(dev_priv, sizeof(*cmd)); + + return 0; + +out_no_cmd_space: + vmw_3d_resource_dec(dev_priv, false); + if (pt_set_up) + ttm_bo_unref(&mob->pt_bo); + + return -ENOMEM; +} --- linux-3.13.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c +++ linux-3.13.0/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c @@ -88,6 +88,11 @@ return res; } +struct vmw_resource * +vmw_resource_reference_unless_doomed(struct vmw_resource *res) +{ + return kref_get_unless_zero(&res->kref) ? res : NULL; +} /** * vmw_resource_release_id - release a resource id to the id manager. @@ -136,8 +141,12 @@ vmw_dmabuf_unreference(&res->backup); } - if (likely(res->hw_destroy != NULL)) + if (likely(res->hw_destroy != NULL)) { res->hw_destroy(res); + mutex_lock(&dev_priv->binding_mutex); + vmw_context_binding_res_list_kill(&res->binding_head); + mutex_unlock(&dev_priv->binding_mutex); + } id = res->id; if (res->res_free != NULL) @@ -215,6 +224,7 @@ res->func = func; INIT_LIST_HEAD(&res->lru_head); INIT_LIST_HEAD(&res->mob_head); + INIT_LIST_HEAD(&res->binding_head); res->id = -1; res->backup = NULL; res->backup_offset = 0; @@ -417,8 +427,7 @@ INIT_LIST_HEAD(&vmw_bo->res_list); ret = ttm_bo_init(bdev, &vmw_bo->base, size, - (user) ? ttm_bo_type_device : - ttm_bo_type_kernel, placement, + ttm_bo_type_device, placement, 0, interruptible, NULL, acc_size, NULL, bo_free); return ret; @@ -441,6 +450,21 @@ ttm_bo_unref(&bo); } +static void vmw_user_dmabuf_ref_obj_release(struct ttm_base_object *base, + enum ttm_ref_type ref_type) +{ + struct vmw_user_dma_buffer *user_bo; + user_bo = container_of(base, struct vmw_user_dma_buffer, prime.base); + + switch (ref_type) { + case TTM_REF_SYNCCPU_WRITE: + ttm_bo_synccpu_write_release(&user_bo->dma.base); + break; + default: + BUG(); + } +} + /** * vmw_user_dmabuf_alloc - Allocate a user dma buffer * @@ -471,6 +495,8 @@ } ret = vmw_dmabuf_init(dev_priv, &user_bo->dma, size, + (dev_priv->has_mob) ? + &vmw_sys_placement : &vmw_vram_sys_placement, true, &vmw_user_dmabuf_destroy); if (unlikely(ret != 0)) @@ -482,7 +508,8 @@ &user_bo->prime, shareable, ttm_buffer_type, - &vmw_user_dmabuf_release, NULL); + &vmw_user_dmabuf_release, + &vmw_user_dmabuf_ref_obj_release); if (unlikely(ret != 0)) { ttm_bo_unref(&tmp); goto out_no_base_object; @@ -515,6 +542,130 @@ vmw_user_bo->prime.base.shareable) ? 0 : -EPERM; } +/** + * vmw_user_dmabuf_synccpu_grab - Grab a struct vmw_user_dma_buffer for cpu + * access, idling previous GPU operations on the buffer and optionally + * blocking it for further command submissions. + * + * @user_bo: Pointer to the buffer object being grabbed for CPU access + * @tfile: Identifying the caller. + * @flags: Flags indicating how the grab should be performed. + * + * A blocking grab will be automatically released when @tfile is closed. + */ +static int vmw_user_dmabuf_synccpu_grab(struct vmw_user_dma_buffer *user_bo, + struct ttm_object_file *tfile, + uint32_t flags) +{ + struct ttm_buffer_object *bo = &user_bo->dma.base; + bool existed; + int ret; + + if (flags & drm_vmw_synccpu_allow_cs) { + struct ttm_bo_device *bdev = bo->bdev; + + spin_lock(&bdev->fence_lock); + ret = ttm_bo_wait(bo, false, true, + !!(flags & drm_vmw_synccpu_dontblock)); + spin_unlock(&bdev->fence_lock); + return ret; + } + + ret = ttm_bo_synccpu_write_grab + (bo, !!(flags & drm_vmw_synccpu_dontblock)); + if (unlikely(ret != 0)) + return ret; + + ret = ttm_ref_object_add(tfile, &user_bo->prime.base, + TTM_REF_SYNCCPU_WRITE, &existed); + if (ret != 0 || existed) + ttm_bo_synccpu_write_release(&user_bo->dma.base); + + return ret; +} + +/** + * vmw_user_dmabuf_synccpu_release - Release a previous grab for CPU access, + * and unblock command submission on the buffer if blocked. + * + * @handle: Handle identifying the buffer object. + * @tfile: Identifying the caller. + * @flags: Flags indicating the type of release. + */ +static int vmw_user_dmabuf_synccpu_release(uint32_t handle, + struct ttm_object_file *tfile, + uint32_t flags) +{ + if (!(flags & drm_vmw_synccpu_allow_cs)) + return ttm_ref_object_base_unref(tfile, handle, + TTM_REF_SYNCCPU_WRITE); + + return 0; +} + +/** + * vmw_user_dmabuf_synccpu_release - ioctl function implementing the synccpu + * functionality. + * + * @dev: Identifies the drm device. + * @data: Pointer to the ioctl argument. + * @file_priv: Identifies the caller. + * + * This function checks the ioctl arguments for validity and calls the + * relevant synccpu functions. + */ +int vmw_user_dmabuf_synccpu_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + struct drm_vmw_synccpu_arg *arg = + (struct drm_vmw_synccpu_arg *) data; + struct vmw_dma_buffer *dma_buf; + struct vmw_user_dma_buffer *user_bo; + struct ttm_object_file *tfile = vmw_fpriv(file_priv)->tfile; + int ret; + + if ((arg->flags & (drm_vmw_synccpu_read | drm_vmw_synccpu_write)) == 0 + || (arg->flags & ~(drm_vmw_synccpu_read | drm_vmw_synccpu_write | + drm_vmw_synccpu_dontblock | + drm_vmw_synccpu_allow_cs)) != 0) { + DRM_ERROR("Illegal synccpu flags.\n"); + return -EINVAL; + } + + switch (arg->op) { + case drm_vmw_synccpu_grab: + ret = vmw_user_dmabuf_lookup(tfile, arg->handle, &dma_buf); + if (unlikely(ret != 0)) + return ret; + + user_bo = container_of(dma_buf, struct vmw_user_dma_buffer, + dma); + ret = vmw_user_dmabuf_synccpu_grab(user_bo, tfile, arg->flags); + vmw_dmabuf_unreference(&dma_buf); + if (unlikely(ret != 0 && ret != -ERESTARTSYS && + ret != -EBUSY)) { + DRM_ERROR("Failed synccpu grab on handle 0x%08x.\n", + (unsigned int) arg->handle); + return ret; + } + break; + case drm_vmw_synccpu_release: + ret = vmw_user_dmabuf_synccpu_release(arg->handle, tfile, + arg->flags); + if (unlikely(ret != 0)) { + DRM_ERROR("Failed synccpu release on handle 0x%08x.\n", + (unsigned int) arg->handle); + return ret; + } + break; + default: + DRM_ERROR("Invalid synccpu operation.\n"); + return -EINVAL; + } + + return 0; +} + int vmw_dmabuf_alloc_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv) { @@ -591,7 +742,8 @@ } int vmw_user_dmabuf_reference(struct ttm_object_file *tfile, - struct vmw_dma_buffer *dma_buf) + struct vmw_dma_buffer *dma_buf, + uint32_t *handle) { struct vmw_user_dma_buffer *user_bo; @@ -599,6 +751,8 @@ return -EINVAL; user_bo = container_of(dma_buf, struct vmw_user_dma_buffer, dma); + + *handle = user_bo->prime.base.hash.key; return ttm_ref_object_add(tfile, &user_bo->prime.base, TTM_REF_USAGE, NULL); } @@ -1291,11 +1445,54 @@ * @mem: The truct ttm_mem_reg indicating to what memory * region the move is taking place. * - * For now does nothing. + * Evicts the Guest Backed hardware resource if the backup + * buffer is being moved out of MOB memory. + * Note that this function should not race with the resource + * validation code as long as it accesses only members of struct + * resource that remain static while bo::res is !NULL and + * while we have @bo reserved. struct resource::backup is *not* a + * static member. The resource validation code will take care + * to set @bo::res to NULL, while having @bo reserved when the + * buffer is no longer bound to the resource, so @bo:res can be + * used to determine whether there is a need to unbind and whether + * it is safe to unbind. */ void vmw_resource_move_notify(struct ttm_buffer_object *bo, struct ttm_mem_reg *mem) { + struct vmw_dma_buffer *dma_buf; + + if (mem == NULL) + return; + + if (bo->destroy != vmw_dmabuf_bo_free && + bo->destroy != vmw_user_dmabuf_destroy) + return; + + dma_buf = container_of(bo, struct vmw_dma_buffer, base); + + if (mem->mem_type != VMW_PL_MOB) { + struct vmw_resource *res, *n; + struct ttm_bo_device *bdev = bo->bdev; + struct ttm_validate_buffer val_buf; + + val_buf.bo = bo; + + list_for_each_entry_safe(res, n, &dma_buf->res_list, mob_head) { + + if (unlikely(res->func->unbind == NULL)) + continue; + + (void) res->func->unbind(res, true, &val_buf); + res->backup_dirty = true; + res->res_dirty = false; + list_del_init(&res->mob_head); + } + + spin_lock(&bdev->fence_lock); + (void) ttm_bo_wait(bo, false, false, false); + spin_unlock(&bdev->fence_lock); + } } /** --- linux-3.13.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_shader.c +++ linux-3.13.0/drivers/gpu/drm/vmwgfx/vmwgfx_shader.c @@ -0,0 +1,812 @@ +/************************************************************************** + * + * Copyright © 2009-2012 VMware, Inc., Palo Alto, CA., USA + * 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, sub license, 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 NON-INFRINGEMENT. IN NO EVENT SHALL + * THE COPYRIGHT HOLDERS, AUTHORS 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. + * + **************************************************************************/ + +#include "vmwgfx_drv.h" +#include "vmwgfx_resource_priv.h" +#include "ttm/ttm_placement.h" + +#define VMW_COMPAT_SHADER_HT_ORDER 12 + +struct vmw_shader { + struct vmw_resource res; + SVGA3dShaderType type; + uint32_t size; +}; + +struct vmw_user_shader { + struct ttm_base_object base; + struct vmw_shader shader; +}; + +/** + * enum vmw_compat_shader_state - Staging state for compat shaders + */ +enum vmw_compat_shader_state { + VMW_COMPAT_COMMITED, + VMW_COMPAT_ADD, + VMW_COMPAT_DEL +}; + +/** + * struct vmw_compat_shader - Metadata for compat shaders. + * + * @handle: The TTM handle of the guest backed shader. + * @tfile: The struct ttm_object_file the guest backed shader is registered + * with. + * @hash: Hash item for lookup. + * @head: List head for staging lists or the compat shader manager list. + * @state: Staging state. + * + * The structure is protected by the cmdbuf lock. + */ +struct vmw_compat_shader { + u32 handle; + struct ttm_object_file *tfile; + struct drm_hash_item hash; + struct list_head head; + enum vmw_compat_shader_state state; +}; + +/** + * struct vmw_compat_shader_manager - Compat shader manager. + * + * @shaders: Hash table containing staged and commited compat shaders + * @list: List of commited shaders. + * @dev_priv: Pointer to a device private structure. + * + * @shaders and @list are protected by the cmdbuf mutex for now. + */ +struct vmw_compat_shader_manager { + struct drm_open_hash shaders; + struct list_head list; + struct vmw_private *dev_priv; +}; + +static void vmw_user_shader_free(struct vmw_resource *res); +static struct vmw_resource * +vmw_user_shader_base_to_res(struct ttm_base_object *base); + +static int vmw_gb_shader_create(struct vmw_resource *res); +static int vmw_gb_shader_bind(struct vmw_resource *res, + struct ttm_validate_buffer *val_buf); +static int vmw_gb_shader_unbind(struct vmw_resource *res, + bool readback, + struct ttm_validate_buffer *val_buf); +static int vmw_gb_shader_destroy(struct vmw_resource *res); + +static uint64_t vmw_user_shader_size; + +static const struct vmw_user_resource_conv user_shader_conv = { + .object_type = VMW_RES_SHADER, + .base_obj_to_res = vmw_user_shader_base_to_res, + .res_free = vmw_user_shader_free +}; + +const struct vmw_user_resource_conv *user_shader_converter = + &user_shader_conv; + + +static const struct vmw_res_func vmw_gb_shader_func = { + .res_type = vmw_res_shader, + .needs_backup = true, + .may_evict = true, + .type_name = "guest backed shaders", + .backup_placement = &vmw_mob_placement, + .create = vmw_gb_shader_create, + .destroy = vmw_gb_shader_destroy, + .bind = vmw_gb_shader_bind, + .unbind = vmw_gb_shader_unbind +}; + +/** + * Shader management: + */ + +static inline struct vmw_shader * +vmw_res_to_shader(struct vmw_resource *res) +{ + return container_of(res, struct vmw_shader, res); +} + +static void vmw_hw_shader_destroy(struct vmw_resource *res) +{ + (void) vmw_gb_shader_destroy(res); +} + +static int vmw_gb_shader_init(struct vmw_private *dev_priv, + struct vmw_resource *res, + uint32_t size, + uint64_t offset, + SVGA3dShaderType type, + struct vmw_dma_buffer *byte_code, + void (*res_free) (struct vmw_resource *res)) +{ + struct vmw_shader *shader = vmw_res_to_shader(res); + int ret; + + ret = vmw_resource_init(dev_priv, res, true, + res_free, &vmw_gb_shader_func); + + + if (unlikely(ret != 0)) { + if (res_free) + res_free(res); + else + kfree(res); + return ret; + } + + res->backup_size = size; + if (byte_code) { + res->backup = vmw_dmabuf_reference(byte_code); + res->backup_offset = offset; + } + shader->size = size; + shader->type = type; + + vmw_resource_activate(res, vmw_hw_shader_destroy); + return 0; +} + +static int vmw_gb_shader_create(struct vmw_resource *res) +{ + struct vmw_private *dev_priv = res->dev_priv; + struct vmw_shader *shader = vmw_res_to_shader(res); + int ret; + struct { + SVGA3dCmdHeader header; + SVGA3dCmdDefineGBShader body; + } *cmd; + + if (likely(res->id != -1)) + return 0; + + ret = vmw_resource_alloc_id(res); + if (unlikely(ret != 0)) { + DRM_ERROR("Failed to allocate a shader id.\n"); + goto out_no_id; + } + + if (unlikely(res->id >= VMWGFX_NUM_GB_SHADER)) { + ret = -EBUSY; + goto out_no_fifo; + } + + cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd)); + if (unlikely(cmd == NULL)) { + DRM_ERROR("Failed reserving FIFO space for shader " + "creation.\n"); + ret = -ENOMEM; + goto out_no_fifo; + } + + cmd->header.id = SVGA_3D_CMD_DEFINE_GB_SHADER; + cmd->header.size = sizeof(cmd->body); + cmd->body.shid = res->id; + cmd->body.type = shader->type; + cmd->body.sizeInBytes = shader->size; + vmw_fifo_commit(dev_priv, sizeof(*cmd)); + (void) vmw_3d_resource_inc(dev_priv, false); + + return 0; + +out_no_fifo: + vmw_resource_release_id(res); +out_no_id: + return ret; +} + +static int vmw_gb_shader_bind(struct vmw_resource *res, + struct ttm_validate_buffer *val_buf) +{ + struct vmw_private *dev_priv = res->dev_priv; + struct { + SVGA3dCmdHeader header; + SVGA3dCmdBindGBShader body; + } *cmd; + struct ttm_buffer_object *bo = val_buf->bo; + + BUG_ON(bo->mem.mem_type != VMW_PL_MOB); + + cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd)); + if (unlikely(cmd == NULL)) { + DRM_ERROR("Failed reserving FIFO space for shader " + "binding.\n"); + return -ENOMEM; + } + + cmd->header.id = SVGA_3D_CMD_BIND_GB_SHADER; + cmd->header.size = sizeof(cmd->body); + cmd->body.shid = res->id; + cmd->body.mobid = bo->mem.start; + cmd->body.offsetInBytes = 0; + res->backup_dirty = false; + vmw_fifo_commit(dev_priv, sizeof(*cmd)); + + return 0; +} + +static int vmw_gb_shader_unbind(struct vmw_resource *res, + bool readback, + struct ttm_validate_buffer *val_buf) +{ + struct vmw_private *dev_priv = res->dev_priv; + struct { + SVGA3dCmdHeader header; + SVGA3dCmdBindGBShader body; + } *cmd; + struct vmw_fence_obj *fence; + + BUG_ON(res->backup->base.mem.mem_type != VMW_PL_MOB); + + cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd)); + if (unlikely(cmd == NULL)) { + DRM_ERROR("Failed reserving FIFO space for shader " + "unbinding.\n"); + return -ENOMEM; + } + + cmd->header.id = SVGA_3D_CMD_BIND_GB_SHADER; + cmd->header.size = sizeof(cmd->body); + cmd->body.shid = res->id; + cmd->body.mobid = SVGA3D_INVALID_ID; + cmd->body.offsetInBytes = 0; + vmw_fifo_commit(dev_priv, sizeof(*cmd)); + + /* + * Create a fence object and fence the backup buffer. + */ + + (void) vmw_execbuf_fence_commands(NULL, dev_priv, + &fence, NULL); + + vmw_fence_single_bo(val_buf->bo, fence); + + if (likely(fence != NULL)) + vmw_fence_obj_unreference(&fence); + + return 0; +} + +static int vmw_gb_shader_destroy(struct vmw_resource *res) +{ + struct vmw_private *dev_priv = res->dev_priv; + struct { + SVGA3dCmdHeader header; + SVGA3dCmdDestroyGBShader body; + } *cmd; + + if (likely(res->id == -1)) + return 0; + + mutex_lock(&dev_priv->binding_mutex); + vmw_context_binding_res_list_scrub(&res->binding_head); + + cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd)); + if (unlikely(cmd == NULL)) { + DRM_ERROR("Failed reserving FIFO space for shader " + "destruction.\n"); + mutex_unlock(&dev_priv->binding_mutex); + return -ENOMEM; + } + + cmd->header.id = SVGA_3D_CMD_DESTROY_GB_SHADER; + cmd->header.size = sizeof(cmd->body); + cmd->body.shid = res->id; + vmw_fifo_commit(dev_priv, sizeof(*cmd)); + mutex_unlock(&dev_priv->binding_mutex); + vmw_resource_release_id(res); + vmw_3d_resource_dec(dev_priv, false); + + return 0; +} + +/** + * User-space shader management: + */ + +static struct vmw_resource * +vmw_user_shader_base_to_res(struct ttm_base_object *base) +{ + return &(container_of(base, struct vmw_user_shader, base)-> + shader.res); +} + +static void vmw_user_shader_free(struct vmw_resource *res) +{ + struct vmw_user_shader *ushader = + container_of(res, struct vmw_user_shader, shader.res); + struct vmw_private *dev_priv = res->dev_priv; + + ttm_base_object_kfree(ushader, base); + ttm_mem_global_free(vmw_mem_glob(dev_priv), + vmw_user_shader_size); +} + +/** + * This function is called when user space has no more references on the + * base object. It releases the base-object's reference on the resource object. + */ + +static void vmw_user_shader_base_release(struct ttm_base_object **p_base) +{ + struct ttm_base_object *base = *p_base; + struct vmw_resource *res = vmw_user_shader_base_to_res(base); + + *p_base = NULL; + vmw_resource_unreference(&res); +} + +int vmw_shader_destroy_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + struct drm_vmw_shader_arg *arg = (struct drm_vmw_shader_arg *)data; + struct ttm_object_file *tfile = vmw_fpriv(file_priv)->tfile; + + return ttm_ref_object_base_unref(tfile, arg->handle, + TTM_REF_USAGE); +} + +static int vmw_shader_alloc(struct vmw_private *dev_priv, + struct vmw_dma_buffer *buffer, + size_t shader_size, + size_t offset, + SVGA3dShaderType shader_type, + struct ttm_object_file *tfile, + u32 *handle) +{ + struct vmw_user_shader *ushader; + struct vmw_resource *res, *tmp; + int ret; + + /* + * Approximate idr memory usage with 128 bytes. It will be limited + * by maximum number_of shaders anyway. + */ + if (unlikely(vmw_user_shader_size == 0)) + vmw_user_shader_size = + ttm_round_pot(sizeof(struct vmw_user_shader)) + 128; + + ret = ttm_mem_global_alloc(vmw_mem_glob(dev_priv), + vmw_user_shader_size, + false, true); + if (unlikely(ret != 0)) { + if (ret != -ERESTARTSYS) + DRM_ERROR("Out of graphics memory for shader " + "creation.\n"); + goto out; + } + + ushader = kzalloc(sizeof(*ushader), GFP_KERNEL); + if (unlikely(ushader == NULL)) { + ttm_mem_global_free(vmw_mem_glob(dev_priv), + vmw_user_shader_size); + ret = -ENOMEM; + goto out; + } + + res = &ushader->shader.res; + ushader->base.shareable = false; + ushader->base.tfile = NULL; + + /* + * From here on, the destructor takes over resource freeing. + */ + + ret = vmw_gb_shader_init(dev_priv, res, shader_size, + offset, shader_type, buffer, + vmw_user_shader_free); + if (unlikely(ret != 0)) + goto out; + + tmp = vmw_resource_reference(res); + ret = ttm_base_object_init(tfile, &ushader->base, false, + VMW_RES_SHADER, + &vmw_user_shader_base_release, NULL); + + if (unlikely(ret != 0)) { + vmw_resource_unreference(&tmp); + goto out_err; + } + + if (handle) + *handle = ushader->base.hash.key; +out_err: + vmw_resource_unreference(&res); +out: + return ret; +} + + +int vmw_shader_define_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + struct vmw_private *dev_priv = vmw_priv(dev); + struct drm_vmw_shader_create_arg *arg = + (struct drm_vmw_shader_create_arg *)data; + struct ttm_object_file *tfile = vmw_fpriv(file_priv)->tfile; + struct vmw_master *vmaster = vmw_master(file_priv->master); + struct vmw_dma_buffer *buffer = NULL; + SVGA3dShaderType shader_type; + int ret; + + if (arg->buffer_handle != SVGA3D_INVALID_ID) { + ret = vmw_user_dmabuf_lookup(tfile, arg->buffer_handle, + &buffer); + if (unlikely(ret != 0)) { + DRM_ERROR("Could not find buffer for shader " + "creation.\n"); + return ret; + } + + if ((u64)buffer->base.num_pages * PAGE_SIZE < + (u64)arg->size + (u64)arg->offset) { + DRM_ERROR("Illegal buffer- or shader size.\n"); + ret = -EINVAL; + goto out_bad_arg; + } + } + + switch (arg->shader_type) { + case drm_vmw_shader_type_vs: + shader_type = SVGA3D_SHADERTYPE_VS; + break; + case drm_vmw_shader_type_ps: + shader_type = SVGA3D_SHADERTYPE_PS; + break; + case drm_vmw_shader_type_gs: + shader_type = SVGA3D_SHADERTYPE_GS; + break; + default: + DRM_ERROR("Illegal shader type.\n"); + ret = -EINVAL; + goto out_bad_arg; + } + + ret = ttm_read_lock(&vmaster->lock, true); + if (unlikely(ret != 0)) + goto out_bad_arg; + + ret = vmw_shader_alloc(dev_priv, buffer, arg->size, arg->offset, + shader_type, tfile, &arg->shader_handle); + + ttm_read_unlock(&vmaster->lock); +out_bad_arg: + vmw_dmabuf_unreference(&buffer); + return ret; +} + +/** + * vmw_compat_shader_lookup - Look up a compat shader + * + * @man: Pointer to the compat shader manager. + * @shader_type: The shader type, that combined with the user_key identifies + * the shader. + * @user_key: On entry, this should be a pointer to the user_key. + * On successful exit, it will contain the guest-backed shader's TTM handle. + * + * Returns 0 on success. Non-zero on failure, in which case the value pointed + * to by @user_key is unmodified. + */ +int vmw_compat_shader_lookup(struct vmw_compat_shader_manager *man, + SVGA3dShaderType shader_type, + u32 *user_key) +{ + struct drm_hash_item *hash; + int ret; + unsigned long key = *user_key | (shader_type << 24); + + ret = drm_ht_find_item(&man->shaders, key, &hash); + if (unlikely(ret != 0)) + return ret; + + *user_key = drm_hash_entry(hash, struct vmw_compat_shader, + hash)->handle; + + return 0; +} + +/** + * vmw_compat_shader_free - Free a compat shader. + * + * @man: Pointer to the compat shader manager. + * @entry: Pointer to a struct vmw_compat_shader. + * + * Frees a struct vmw_compat_shder entry and drops its reference to the + * guest backed shader. + */ +static void vmw_compat_shader_free(struct vmw_compat_shader_manager *man, + struct vmw_compat_shader *entry) +{ + list_del(&entry->head); + WARN_ON(drm_ht_remove_item(&man->shaders, &entry->hash)); + WARN_ON(ttm_ref_object_base_unref(entry->tfile, entry->handle, + TTM_REF_USAGE)); + kfree(entry); +} + +/** + * vmw_compat_shaders_commit - Commit a list of compat shader actions. + * + * @man: Pointer to the compat shader manager. + * @list: Caller's list of compat shader actions. + * + * This function commits a list of compat shader additions or removals. + * It is typically called when the execbuf ioctl call triggering these + * actions has commited the fifo contents to the device. + */ +void vmw_compat_shaders_commit(struct vmw_compat_shader_manager *man, + struct list_head *list) +{ + struct vmw_compat_shader *entry, *next; + + list_for_each_entry_safe(entry, next, list, head) { + list_del(&entry->head); + switch (entry->state) { + case VMW_COMPAT_ADD: + entry->state = VMW_COMPAT_COMMITED; + list_add_tail(&entry->head, &man->list); + break; + case VMW_COMPAT_DEL: + ttm_ref_object_base_unref(entry->tfile, entry->handle, + TTM_REF_USAGE); + kfree(entry); + break; + default: + BUG(); + break; + } + } +} + +/** + * vmw_compat_shaders_revert - Revert a list of compat shader actions + * + * @man: Pointer to the compat shader manager. + * @list: Caller's list of compat shader actions. + * + * This function reverts a list of compat shader additions or removals. + * It is typically called when the execbuf ioctl call triggering these + * actions failed for some reason, and the command stream was never + * submitted. + */ +void vmw_compat_shaders_revert(struct vmw_compat_shader_manager *man, + struct list_head *list) +{ + struct vmw_compat_shader *entry, *next; + int ret; + + list_for_each_entry_safe(entry, next, list, head) { + switch (entry->state) { + case VMW_COMPAT_ADD: + vmw_compat_shader_free(man, entry); + break; + case VMW_COMPAT_DEL: + ret = drm_ht_insert_item(&man->shaders, &entry->hash); + list_del(&entry->head); + list_add_tail(&entry->head, &man->list); + entry->state = VMW_COMPAT_COMMITED; + break; + default: + BUG(); + break; + } + } +} + +/** + * vmw_compat_shader_remove - Stage a compat shader for removal. + * + * @man: Pointer to the compat shader manager + * @user_key: The key that is used to identify the shader. The key is + * unique to the shader type. + * @shader_type: Shader type. + * @list: Caller's list of staged shader actions. + * + * This function stages a compat shader for removal and removes the key from + * the shader manager's hash table. If the shader was previously only staged + * for addition it is completely removed (But the execbuf code may keep a + * reference if it was bound to a context between addition and removal). If + * it was previously commited to the manager, it is staged for removal. + */ +int vmw_compat_shader_remove(struct vmw_compat_shader_manager *man, + u32 user_key, SVGA3dShaderType shader_type, + struct list_head *list) +{ + struct vmw_compat_shader *entry; + struct drm_hash_item *hash; + int ret; + + ret = drm_ht_find_item(&man->shaders, user_key | (shader_type << 24), + &hash); + if (likely(ret != 0)) + return -EINVAL; + + entry = drm_hash_entry(hash, struct vmw_compat_shader, hash); + + switch (entry->state) { + case VMW_COMPAT_ADD: + vmw_compat_shader_free(man, entry); + break; + case VMW_COMPAT_COMMITED: + (void) drm_ht_remove_item(&man->shaders, &entry->hash); + list_del(&entry->head); + entry->state = VMW_COMPAT_DEL; + list_add_tail(&entry->head, list); + break; + default: + BUG(); + break; + } + + return 0; +} + +/** + * vmw_compat_shader_add - Create a compat shader and add the + * key to the manager + * + * @man: Pointer to the compat shader manager + * @user_key: The key that is used to identify the shader. The key is + * unique to the shader type. + * @bytecode: Pointer to the bytecode of the shader. + * @shader_type: Shader type. + * @tfile: Pointer to a struct ttm_object_file that the guest-backed shader is + * to be created with. + * @list: Caller's list of staged shader actions. + * + * Note that only the key is added to the shader manager's hash table. + * The shader is not yet added to the shader manager's list of shaders. + */ +int vmw_compat_shader_add(struct vmw_compat_shader_manager *man, + u32 user_key, const void *bytecode, + SVGA3dShaderType shader_type, + size_t size, + struct ttm_object_file *tfile, + struct list_head *list) +{ + struct vmw_dma_buffer *buf; + struct ttm_bo_kmap_obj map; + bool is_iomem; + struct vmw_compat_shader *compat; + u32 handle; + int ret; + + if (user_key > ((1 << 24) - 1) || (unsigned) shader_type > 16) + return -EINVAL; + + /* Allocate and pin a DMA buffer */ + buf = kzalloc(sizeof(*buf), GFP_KERNEL); + if (unlikely(buf == NULL)) + return -ENOMEM; + + ret = vmw_dmabuf_init(man->dev_priv, buf, size, &vmw_sys_ne_placement, + true, vmw_dmabuf_bo_free); + if (unlikely(ret != 0)) + goto out; + + ret = ttm_bo_reserve(&buf->base, false, true, false, NULL); + if (unlikely(ret != 0)) + goto no_reserve; + + /* Map and copy shader bytecode. */ + ret = ttm_bo_kmap(&buf->base, 0, PAGE_ALIGN(size) >> PAGE_SHIFT, + &map); + if (unlikely(ret != 0)) { + ttm_bo_unreserve(&buf->base); + goto no_reserve; + } + + memcpy(ttm_kmap_obj_virtual(&map, &is_iomem), bytecode, size); + WARN_ON(is_iomem); + + ttm_bo_kunmap(&map); + ret = ttm_bo_validate(&buf->base, &vmw_sys_placement, false, true); + WARN_ON(ret != 0); + ttm_bo_unreserve(&buf->base); + + /* Create a guest-backed shader container backed by the dma buffer */ + ret = vmw_shader_alloc(man->dev_priv, buf, size, 0, shader_type, + tfile, &handle); + vmw_dmabuf_unreference(&buf); + if (unlikely(ret != 0)) + goto no_reserve; + /* + * Create a compat shader structure and stage it for insertion + * in the manager + */ + compat = kzalloc(sizeof(*compat), GFP_KERNEL); + if (compat == NULL) + goto no_compat; + + compat->hash.key = user_key | (shader_type << 24); + ret = drm_ht_insert_item(&man->shaders, &compat->hash); + if (unlikely(ret != 0)) + goto out_invalid_key; + + compat->state = VMW_COMPAT_ADD; + compat->handle = handle; + compat->tfile = tfile; + list_add_tail(&compat->head, list); + + return 0; + +out_invalid_key: + kfree(compat); +no_compat: + ttm_ref_object_base_unref(tfile, handle, TTM_REF_USAGE); +no_reserve: +out: + return ret; +} + +/** + * vmw_compat_shader_man_create - Create a compat shader manager + * + * @dev_priv: Pointer to a device private structure. + * + * Typically done at file open time. If successful returns a pointer to a + * compat shader manager. Otherwise returns an error pointer. + */ +struct vmw_compat_shader_manager * +vmw_compat_shader_man_create(struct vmw_private *dev_priv) +{ + struct vmw_compat_shader_manager *man; + int ret; + + man = kzalloc(sizeof(*man), GFP_KERNEL); + if (man == NULL) + return ERR_PTR(-ENOMEM); + + man->dev_priv = dev_priv; + INIT_LIST_HEAD(&man->list); + ret = drm_ht_create(&man->shaders, VMW_COMPAT_SHADER_HT_ORDER); + if (ret == 0) + return man; + + kfree(man); + return ERR_PTR(ret); +} + +/** + * vmw_compat_shader_man_destroy - Destroy a compat shader manager + * + * @man: Pointer to the shader manager to destroy. + * + * Typically done at file close time. + */ +void vmw_compat_shader_man_destroy(struct vmw_compat_shader_manager *man) +{ + struct vmw_compat_shader *entry, *next; + + mutex_lock(&man->dev_priv->cmdbuf_mutex); + list_for_each_entry_safe(entry, next, &man->list, head) + vmw_compat_shader_free(man, entry); + + mutex_unlock(&man->dev_priv->cmdbuf_mutex); + kfree(man); +} --- linux-3.13.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c +++ linux-3.13.0/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c @@ -41,7 +41,6 @@ struct ttm_prime_object prime; struct vmw_surface srf; uint32_t size; - uint32_t backup_handle; }; /** @@ -68,6 +67,14 @@ struct ttm_validate_buffer *val_buf); static int vmw_legacy_srf_create(struct vmw_resource *res); static int vmw_legacy_srf_destroy(struct vmw_resource *res); +static int vmw_gb_surface_create(struct vmw_resource *res); +static int vmw_gb_surface_bind(struct vmw_resource *res, + struct ttm_validate_buffer *val_buf); +static int vmw_gb_surface_unbind(struct vmw_resource *res, + bool readback, + struct ttm_validate_buffer *val_buf); +static int vmw_gb_surface_destroy(struct vmw_resource *res); + static const struct vmw_user_resource_conv user_surface_conv = { .object_type = VMW_RES_SURFACE, @@ -93,6 +100,18 @@ .unbind = &vmw_legacy_srf_unbind }; +static const struct vmw_res_func vmw_gb_surface_func = { + .res_type = vmw_res_surface, + .needs_backup = true, + .may_evict = true, + .type_name = "guest backed surfaces", + .backup_placement = &vmw_mob_placement, + .create = vmw_gb_surface_create, + .destroy = vmw_gb_surface_destroy, + .bind = vmw_gb_surface_bind, + .unbind = vmw_gb_surface_unbind +}; + /** * struct vmw_surface_dma - SVGA3D DMA command */ @@ -291,6 +310,11 @@ struct vmw_surface *srf; void *cmd; + if (res->func->destroy == vmw_gb_surface_destroy) { + (void) vmw_gb_surface_destroy(res); + return; + } + if (res->id != -1) { cmd = vmw_fifo_reserve(dev_priv, vmw_surface_destroy_size()); @@ -549,12 +573,15 @@ struct vmw_resource *res = &srf->res; BUG_ON(res_free == NULL); - (void) vmw_3d_resource_inc(dev_priv, false); + if (!dev_priv->has_mob) + (void) vmw_3d_resource_inc(dev_priv, false); ret = vmw_resource_init(dev_priv, res, true, res_free, + (dev_priv->has_mob) ? &vmw_gb_surface_func : &vmw_legacy_surface_func); if (unlikely(ret != 0)) { - vmw_3d_resource_dec(dev_priv, false); + if (!dev_priv->has_mob) + vmw_3d_resource_dec(dev_priv, false); res_free(res); return ret; } @@ -750,7 +777,7 @@ srf->base_size = *srf->sizes; srf->autogen_filter = SVGA3D_TEX_FILTER_NONE; - srf->multisample_count = 1; + srf->multisample_count = 0; cur_bo_offset = 0; cur_offset = srf->offsets; @@ -803,6 +830,24 @@ if (unlikely(ret != 0)) goto out_unlock; + /* + * A gb-aware client referencing a shared surface will + * expect a backup buffer to be present. + */ + if (dev_priv->has_mob && req->shareable) { + uint32_t backup_handle; + + ret = vmw_user_dmabuf_alloc(dev_priv, tfile, + res->backup_size, + true, + &backup_handle, + &res->backup); + if (unlikely(ret != 0)) { + vmw_resource_unreference(&res); + goto out_unlock; + } + } + tmp = vmw_resource_reference(&srf->res); ret = ttm_prime_object_init(tfile, res->backup_size, &user_srf->prime, req->shareable, VMW_RES_SURFACE, @@ -843,6 +888,7 @@ int vmw_surface_reference_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv) { + struct vmw_private *dev_priv = vmw_priv(dev); union drm_vmw_surface_reference_arg *arg = (union drm_vmw_surface_reference_arg *)data; struct drm_vmw_surface_arg *req = &arg->req; @@ -854,7 +900,7 @@ struct ttm_base_object *base; int ret = -EINVAL; - base = ttm_base_object_lookup(tfile, req->sid); + base = ttm_base_object_lookup_for_ref(dev_priv->tdev, req->sid); if (unlikely(base == NULL)) { DRM_ERROR("Could not find surface to reference.\n"); return -EINVAL; @@ -880,8 +926,8 @@ rep->size_addr; if (user_sizes) - ret = copy_to_user(user_sizes, srf->sizes, - srf->num_sizes * sizeof(*srf->sizes)); + ret = copy_to_user(user_sizes, &srf->base_size, + sizeof(srf->base_size)); if (unlikely(ret != 0)) { DRM_ERROR("copy_to_user failed %p %u\n", user_sizes, srf->num_sizes); @@ -892,4 +938,437 @@ ttm_base_object_unref(&base); return ret; +} + +/** + * vmw_surface_define_encode - Encode a surface_define command. + * + * @srf: Pointer to a struct vmw_surface object. + * @cmd_space: Pointer to memory area in which the commands should be encoded. + */ +static int vmw_gb_surface_create(struct vmw_resource *res) +{ + struct vmw_private *dev_priv = res->dev_priv; + struct vmw_surface *srf = vmw_res_to_srf(res); + uint32_t cmd_len, submit_len; + int ret; + struct { + SVGA3dCmdHeader header; + SVGA3dCmdDefineGBSurface body; + } *cmd; + + if (likely(res->id != -1)) + return 0; + + (void) vmw_3d_resource_inc(dev_priv, false); + ret = vmw_resource_alloc_id(res); + if (unlikely(ret != 0)) { + DRM_ERROR("Failed to allocate a surface id.\n"); + goto out_no_id; + } + + if (unlikely(res->id >= VMWGFX_NUM_GB_SURFACE)) { + ret = -EBUSY; + goto out_no_fifo; + } + + cmd_len = sizeof(cmd->body); + submit_len = sizeof(*cmd); + cmd = vmw_fifo_reserve(dev_priv, submit_len); + if (unlikely(cmd == NULL)) { + DRM_ERROR("Failed reserving FIFO space for surface " + "creation.\n"); + ret = -ENOMEM; + goto out_no_fifo; + } + + cmd->header.id = SVGA_3D_CMD_DEFINE_GB_SURFACE; + cmd->header.size = cmd_len; + cmd->body.sid = srf->res.id; + cmd->body.surfaceFlags = srf->flags; + cmd->body.format = cpu_to_le32(srf->format); + cmd->body.numMipLevels = srf->mip_levels[0]; + cmd->body.multisampleCount = srf->multisample_count; + cmd->body.autogenFilter = srf->autogen_filter; + cmd->body.size.width = srf->base_size.width; + cmd->body.size.height = srf->base_size.height; + cmd->body.size.depth = srf->base_size.depth; + vmw_fifo_commit(dev_priv, submit_len); + + return 0; + +out_no_fifo: + vmw_resource_release_id(res); +out_no_id: + vmw_3d_resource_dec(dev_priv, false); + return ret; +} + + +static int vmw_gb_surface_bind(struct vmw_resource *res, + struct ttm_validate_buffer *val_buf) +{ + struct vmw_private *dev_priv = res->dev_priv; + struct { + SVGA3dCmdHeader header; + SVGA3dCmdBindGBSurface body; + } *cmd1; + struct { + SVGA3dCmdHeader header; + SVGA3dCmdUpdateGBSurface body; + } *cmd2; + uint32_t submit_size; + struct ttm_buffer_object *bo = val_buf->bo; + + BUG_ON(bo->mem.mem_type != VMW_PL_MOB); + + submit_size = sizeof(*cmd1) + (res->backup_dirty ? sizeof(*cmd2) : 0); + + cmd1 = vmw_fifo_reserve(dev_priv, submit_size); + if (unlikely(cmd1 == NULL)) { + DRM_ERROR("Failed reserving FIFO space for surface " + "binding.\n"); + return -ENOMEM; + } + + cmd1->header.id = SVGA_3D_CMD_BIND_GB_SURFACE; + cmd1->header.size = sizeof(cmd1->body); + cmd1->body.sid = res->id; + cmd1->body.mobid = bo->mem.start; + if (res->backup_dirty) { + cmd2 = (void *) &cmd1[1]; + cmd2->header.id = SVGA_3D_CMD_UPDATE_GB_SURFACE; + cmd2->header.size = sizeof(cmd2->body); + cmd2->body.sid = res->id; + res->backup_dirty = false; + } + vmw_fifo_commit(dev_priv, submit_size); + + return 0; +} + +static int vmw_gb_surface_unbind(struct vmw_resource *res, + bool readback, + struct ttm_validate_buffer *val_buf) +{ + struct vmw_private *dev_priv = res->dev_priv; + struct ttm_buffer_object *bo = val_buf->bo; + struct vmw_fence_obj *fence; + + struct { + SVGA3dCmdHeader header; + SVGA3dCmdReadbackGBSurface body; + } *cmd1; + struct { + SVGA3dCmdHeader header; + SVGA3dCmdInvalidateGBSurface body; + } *cmd2; + struct { + SVGA3dCmdHeader header; + SVGA3dCmdBindGBSurface body; + } *cmd3; + uint32_t submit_size; + uint8_t *cmd; + + + BUG_ON(bo->mem.mem_type != VMW_PL_MOB); + + submit_size = sizeof(*cmd3) + (readback ? sizeof(*cmd1) : sizeof(*cmd2)); + cmd = vmw_fifo_reserve(dev_priv, submit_size); + if (unlikely(cmd == NULL)) { + DRM_ERROR("Failed reserving FIFO space for surface " + "unbinding.\n"); + return -ENOMEM; + } + + if (readback) { + cmd1 = (void *) cmd; + cmd1->header.id = SVGA_3D_CMD_READBACK_GB_SURFACE; + cmd1->header.size = sizeof(cmd1->body); + cmd1->body.sid = res->id; + cmd3 = (void *) &cmd1[1]; + } else { + cmd2 = (void *) cmd; + cmd2->header.id = SVGA_3D_CMD_INVALIDATE_GB_SURFACE; + cmd2->header.size = sizeof(cmd2->body); + cmd2->body.sid = res->id; + cmd3 = (void *) &cmd2[1]; + } + + cmd3->header.id = SVGA_3D_CMD_BIND_GB_SURFACE; + cmd3->header.size = sizeof(cmd3->body); + cmd3->body.sid = res->id; + cmd3->body.mobid = SVGA3D_INVALID_ID; + + vmw_fifo_commit(dev_priv, submit_size); + + /* + * Create a fence object and fence the backup buffer. + */ + + (void) vmw_execbuf_fence_commands(NULL, dev_priv, + &fence, NULL); + + vmw_fence_single_bo(val_buf->bo, fence); + + if (likely(fence != NULL)) + vmw_fence_obj_unreference(&fence); + + return 0; +} + +static int vmw_gb_surface_destroy(struct vmw_resource *res) +{ + struct vmw_private *dev_priv = res->dev_priv; + struct { + SVGA3dCmdHeader header; + SVGA3dCmdDestroyGBSurface body; + } *cmd; + + if (likely(res->id == -1)) + return 0; + + mutex_lock(&dev_priv->binding_mutex); + vmw_context_binding_res_list_scrub(&res->binding_head); + + cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd)); + if (unlikely(cmd == NULL)) { + DRM_ERROR("Failed reserving FIFO space for surface " + "destruction.\n"); + mutex_unlock(&dev_priv->binding_mutex); + return -ENOMEM; + } + + cmd->header.id = SVGA_3D_CMD_DESTROY_GB_SURFACE; + cmd->header.size = sizeof(cmd->body); + cmd->body.sid = res->id; + vmw_fifo_commit(dev_priv, sizeof(*cmd)); + mutex_unlock(&dev_priv->binding_mutex); + vmw_resource_release_id(res); + vmw_3d_resource_dec(dev_priv, false); + + return 0; +} + +/** + * vmw_gb_surface_define_ioctl - Ioctl function implementing + * the user surface define functionality. + * + * @dev: Pointer to a struct drm_device. + * @data: Pointer to data copied from / to user-space. + * @file_priv: Pointer to a drm file private structure. + */ +int vmw_gb_surface_define_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + struct vmw_private *dev_priv = vmw_priv(dev); + struct vmw_user_surface *user_srf; + struct vmw_surface *srf; + struct vmw_resource *res; + struct vmw_resource *tmp; + union drm_vmw_gb_surface_create_arg *arg = + (union drm_vmw_gb_surface_create_arg *)data; + struct drm_vmw_gb_surface_create_req *req = &arg->req; + struct drm_vmw_gb_surface_create_rep *rep = &arg->rep; + struct ttm_object_file *tfile = vmw_fpriv(file_priv)->tfile; + int ret; + uint32_t size; + struct vmw_master *vmaster = vmw_master(file_priv->master); + const struct svga3d_surface_desc *desc; + uint32_t backup_handle; + + if (unlikely(vmw_user_surface_size == 0)) + vmw_user_surface_size = ttm_round_pot(sizeof(*user_srf)) + + 128; + + size = vmw_user_surface_size + 128; + + desc = svga3dsurface_get_desc(req->format); + if (unlikely(desc->block_desc == SVGA3DBLOCKDESC_NONE)) { + DRM_ERROR("Invalid surface format for surface creation.\n"); + return -EINVAL; + } + + ret = ttm_read_lock(&vmaster->lock, true); + if (unlikely(ret != 0)) + return ret; + + ret = ttm_mem_global_alloc(vmw_mem_glob(dev_priv), + size, false, true); + if (unlikely(ret != 0)) { + if (ret != -ERESTARTSYS) + DRM_ERROR("Out of graphics memory for surface" + " creation.\n"); + goto out_unlock; + } + + user_srf = kzalloc(sizeof(*user_srf), GFP_KERNEL); + if (unlikely(user_srf == NULL)) { + ret = -ENOMEM; + goto out_no_user_srf; + } + + srf = &user_srf->srf; + res = &srf->res; + + srf->flags = req->svga3d_flags; + srf->format = req->format; + srf->scanout = req->drm_surface_flags & drm_vmw_surface_flag_scanout; + srf->mip_levels[0] = req->mip_levels; + srf->num_sizes = 1; + srf->sizes = NULL; + srf->offsets = NULL; + user_srf->size = size; + srf->base_size = req->base_size; + srf->autogen_filter = SVGA3D_TEX_FILTER_NONE; + srf->multisample_count = req->multisample_count; + res->backup_size = svga3dsurface_get_serialized_size + (srf->format, srf->base_size, srf->mip_levels[0], + srf->flags & SVGA3D_SURFACE_CUBEMAP); + + user_srf->prime.base.shareable = false; + user_srf->prime.base.tfile = NULL; + + /** + * From this point, the generic resource management functions + * destroy the object on failure. + */ + + ret = vmw_surface_init(dev_priv, srf, vmw_user_surface_free); + if (unlikely(ret != 0)) + goto out_unlock; + + if (req->buffer_handle != SVGA3D_INVALID_ID) { + ret = vmw_user_dmabuf_lookup(tfile, req->buffer_handle, + &res->backup); + } else if (req->drm_surface_flags & + drm_vmw_surface_flag_create_buffer) + ret = vmw_user_dmabuf_alloc(dev_priv, tfile, + res->backup_size, + req->drm_surface_flags & + drm_vmw_surface_flag_shareable, + &backup_handle, + &res->backup); + + if (unlikely(ret != 0)) { + vmw_resource_unreference(&res); + goto out_unlock; + } + + tmp = vmw_resource_reference(&srf->res); + ret = ttm_prime_object_init(tfile, res->backup_size, &user_srf->prime, + req->drm_surface_flags & + drm_vmw_surface_flag_shareable, + VMW_RES_SURFACE, + &vmw_user_surface_base_release, NULL); + + if (unlikely(ret != 0)) { + vmw_resource_unreference(&tmp); + vmw_resource_unreference(&res); + goto out_unlock; + } + + rep->handle = user_srf->prime.base.hash.key; + rep->backup_size = res->backup_size; + if (res->backup) { + rep->buffer_map_handle = + drm_vma_node_offset_addr(&res->backup->base.vma_node); + rep->buffer_size = res->backup->base.num_pages * PAGE_SIZE; + rep->buffer_handle = backup_handle; + } else { + rep->buffer_map_handle = 0; + rep->buffer_size = 0; + rep->buffer_handle = SVGA3D_INVALID_ID; + } + + vmw_resource_unreference(&res); + + ttm_read_unlock(&vmaster->lock); + return 0; +out_no_user_srf: + ttm_mem_global_free(vmw_mem_glob(dev_priv), size); +out_unlock: + ttm_read_unlock(&vmaster->lock); + return ret; +} + +/** + * vmw_gb_surface_reference_ioctl - Ioctl function implementing + * the user surface reference functionality. + * + * @dev: Pointer to a struct drm_device. + * @data: Pointer to data copied from / to user-space. + * @file_priv: Pointer to a drm file private structure. + */ +int vmw_gb_surface_reference_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + struct vmw_private *dev_priv = vmw_priv(dev); + union drm_vmw_gb_surface_reference_arg *arg = + (union drm_vmw_gb_surface_reference_arg *)data; + struct drm_vmw_surface_arg *req = &arg->req; + struct drm_vmw_gb_surface_ref_rep *rep = &arg->rep; + struct ttm_object_file *tfile = vmw_fpriv(file_priv)->tfile; + struct vmw_surface *srf; + struct vmw_user_surface *user_srf; + struct ttm_base_object *base; + uint32_t backup_handle; + int ret = -EINVAL; + + base = ttm_base_object_lookup_for_ref(dev_priv->tdev, req->sid); + if (unlikely(base == NULL)) { + DRM_ERROR("Could not find surface to reference.\n"); + return -EINVAL; + } + + if (unlikely(ttm_base_object_type(base) != VMW_RES_SURFACE)) + goto out_bad_resource; + + user_srf = container_of(base, struct vmw_user_surface, prime.base); + srf = &user_srf->srf; + if (srf->res.backup == NULL) { + DRM_ERROR("Shared GB surface is missing a backup buffer.\n"); + goto out_bad_resource; + } + + ret = ttm_ref_object_add(tfile, &user_srf->prime.base, + TTM_REF_USAGE, NULL); + if (unlikely(ret != 0)) { + DRM_ERROR("Could not add a reference to a GB surface.\n"); + goto out_bad_resource; + } + + mutex_lock(&dev_priv->cmdbuf_mutex); /* Protect res->backup */ + ret = vmw_user_dmabuf_reference(tfile, srf->res.backup, + &backup_handle); + mutex_unlock(&dev_priv->cmdbuf_mutex); + + if (unlikely(ret != 0)) { + DRM_ERROR("Could not add a reference to a GB surface " + "backup buffer.\n"); + (void) ttm_ref_object_base_unref(vmw_fpriv(file_priv)->tfile, + req->sid, + TTM_REF_USAGE); + goto out_bad_resource; + } + + rep->creq.svga3d_flags = srf->flags; + rep->creq.format = srf->format; + rep->creq.mip_levels = srf->mip_levels[0]; + rep->creq.drm_surface_flags = 0; + rep->creq.multisample_count = srf->multisample_count; + rep->creq.autogen_filter = srf->autogen_filter; + rep->creq.buffer_handle = backup_handle; + rep->creq.base_size = srf->base_size; + rep->crep.handle = user_srf->prime.base.hash.key; + rep->crep.backup_size = srf->res.backup_size; + rep->crep.buffer_handle = backup_handle; + rep->crep.buffer_map_handle = + drm_vma_node_offset_addr(&srf->res.backup->base.vma_node); + rep->crep.buffer_size = srf->res.backup->base.num_pages * PAGE_SIZE; + +out_bad_resource: + ttm_base_object_unref(&base); + + return ret; } --- linux-3.13.0.orig/drivers/gpu/vga/vga_switcheroo.c +++ linux-3.13.0/drivers/gpu/vga/vga_switcheroo.c @@ -623,7 +623,8 @@ ret = dev->bus->pm->runtime_suspend(dev); if (ret) return ret; - + if (vgasr_priv.handler->switchto) + vgasr_priv.handler->switchto(VGA_SWITCHEROO_IGD); vga_switcheroo_power_switch(pdev, VGA_SWITCHEROO_OFF); return 0; } @@ -659,6 +660,12 @@ } EXPORT_SYMBOL(vga_switcheroo_init_domain_pm_ops); +void vga_switcheroo_fini_domain_pm_ops(struct device *dev) +{ + dev->pm_domain = NULL; +} +EXPORT_SYMBOL(vga_switcheroo_fini_domain_pm_ops); + static int vga_switcheroo_runtime_resume_hdmi_audio(struct device *dev) { struct pci_dev *pdev = to_pci_dev(dev); --- linux-3.13.0.orig/drivers/gpu/vga/vgaarb.c +++ linux-3.13.0/drivers/gpu/vga/vgaarb.c @@ -41,6 +41,7 @@ #include #include #include +#include #include @@ -392,8 +393,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(); @@ -580,8 +583,11 @@ */ #ifndef __ARCH_HAS_VGA_DEFAULT_DEVICE if (vga_default == NULL && - ((vgadev->owns & VGA_RSRC_LEGACY_MASK) == VGA_RSRC_LEGACY_MASK)) + ((vgadev->owns & VGA_RSRC_LEGACY_MASK) == VGA_RSRC_LEGACY_MASK)) { + pr_info("vgaarb: setting as boot device: PCI:%s\n", + pci_name(pdev)); vga_set_default_device(pdev); + } #endif vga_arbiter_check_bridge_sharing(vgadev); @@ -1316,6 +1322,38 @@ pr_info("vgaarb: loaded\n"); list_for_each_entry(vgadev, &vga_list, list) { +#if defined(CONFIG_X86) || defined(CONFIG_IA64) + /* Override I/O based detection done by vga_arbiter_add_pci_device() + * as it may take the wrong device (e.g. on Apple system under EFI). + * + * Select the device owning the boot framebuffer if there is one. + */ + resource_size_t start, end; + int i; + + /* Does firmware framebuffer belong to us? */ + for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) { + if (!(pci_resource_flags(vgadev->pdev, i) & IORESOURCE_MEM)) + continue; + + start = pci_resource_start(vgadev->pdev, i); + end = pci_resource_end(vgadev->pdev, i); + + if (!start || !end) + continue; + + if (screen_info.lfb_base < start || + (screen_info.lfb_base + screen_info.lfb_size) >= end) + continue; + if (!vga_default_device()) + pr_info("vgaarb: setting as boot device: PCI:%s\n", + pci_name(vgadev->pdev)); + else if (vgadev->pdev != vga_default_device()) + pr_info("vgaarb: overriding boot device: PCI:%s\n", + pci_name(vgadev->pdev)); + vga_set_default_device(vgadev->pdev); + } +#endif if (vgadev->bridge_has_one_vga) pr_info("vgaarb: bridge control possible %s\n", pci_name(vgadev->pdev)); else --- linux-3.13.0.orig/drivers/hid/Kconfig +++ linux-3.13.0/drivers/hid/Kconfig @@ -27,7 +27,7 @@ config HID_BATTERY_STRENGTH bool "Battery level reporting for HID devices" - depends on HID && POWER_SUPPLY && HID = POWER_SUPPLY + depends on HID && POWER_SUPPLY default n ---help--- This option adds support of reporting battery strength (for HID devices @@ -645,6 +645,14 @@ ---help--- Support for Sunplus wireless desktop. +config HID_RMI + tristate "Synaptics RMI4 device support" + depends on HID + ---help--- + Support for Synaptics RMI4 touchpads. + Say Y here if you have a Synaptics RMI4 touchpads over i2c-hid or usbhid + and want support for its special functionalities. + config HID_GREENASIA tristate "GreenAsia (Product ID 0x12) game controller support" depends on HID --- linux-3.13.0.orig/drivers/hid/Makefile +++ linux-3.13.0/drivers/hid/Makefile @@ -96,6 +96,7 @@ hid-roccat-arvo.o hid-roccat-isku.o hid-roccat-kone.o \ hid-roccat-koneplus.o hid-roccat-konepure.o hid-roccat-kovaplus.o \ hid-roccat-lua.o hid-roccat-pyra.o hid-roccat-ryos.o hid-roccat-savu.o +obj-$(CONFIG_HID_RMI) += hid-rmi.o obj-$(CONFIG_HID_SAITEK) += hid-saitek.o obj-$(CONFIG_HID_SAMSUNG) += hid-samsung.o obj-$(CONFIG_HID_SMARTJOYPLUS) += hid-sjoy.o --- linux-3.13.0.orig/drivers/hid/hid-cherry.c +++ linux-3.13.0/drivers/hid/hid-cherry.c @@ -28,7 +28,7 @@ static __u8 *ch_report_fixup(struct hid_device *hdev, __u8 *rdesc, unsigned int *rsize) { - if (*rsize >= 17 && rdesc[11] == 0x3c && rdesc[12] == 0x02) { + if (*rsize >= 18 && rdesc[11] == 0x3c && rdesc[12] == 0x02) { hid_info(hdev, "fixing up Cherry Cymotion report descriptor\n"); rdesc[11] = rdesc[16] = 0xff; rdesc[12] = rdesc[17] = 0x03; --- linux-3.13.0.orig/drivers/hid/hid-core.c +++ linux-3.13.0/drivers/hid/hid-core.c @@ -718,6 +718,9 @@ case HID_MAIN_ITEM_TAG_END_COLLECTION: break; case HID_MAIN_ITEM_TAG_INPUT: + /* ignore constant inputs, they will be ignored by hid-input */ + if (data & HID_MAIN_ITEM_CONSTANT) + break; for (i = 0; i < parser->local.usage_index; i++) hid_scan_input_usage(parser, parser->local.usage[i]); break; @@ -776,6 +779,14 @@ (hid->group == HID_GROUP_MULTITOUCH)) hid->group = HID_GROUP_MULTITOUCH_WIN_8; + /* + * Vendor specific handlings + */ + if ((hid->vendor == USB_VENDOR_ID_SYNAPTICS) && + (hid->group == HID_GROUP_GENERIC)) + /* hid-rmi should take care of them, not hid-generic */ + hid->group = HID_GROUP_RMI; + vfree(parser); return 0; } @@ -839,7 +850,17 @@ * ->numbered being checked, which may not always be the case when * drivers go to access report values. */ - report = hid->report_enum[type].report_id_hash[id]; + if (id == 0) { + /* + * Validating on id 0 means we should examine the first + * report in the list. + */ + report = list_entry( + hid->report_enum[type].report_list.next, + struct hid_report, list); + } else { + report = hid->report_enum[type].report_id_hash[id]; + } if (!report) { hid_err(hid, "missing %s %u\n", hid_report_names[type], id); return NULL; @@ -1181,6 +1202,7 @@ /* Ignore report if ErrorRollOver */ if (!(field->flags & HID_MAIN_ITEM_VARIABLE) && value[n] >= min && value[n] <= max && + value[n] - min < field->maxusage && field->usage[value[n] - min].hid == HID_UP_KEYBOARD + 1) goto exit; } @@ -1193,11 +1215,13 @@ } if (field->value[n] >= min && field->value[n] <= max + && field->value[n] - min < field->maxusage && field->usage[field->value[n] - min].hid && search(value, field->value[n], count)) hid_process_event(hid, field, &field->usage[field->value[n] - min], 0, interrupt); if (value[n] >= min && value[n] <= max + && value[n] - min < field->maxusage && field->usage[value[n] - min].hid && search(field->value, value[n], count)) hid_process_event(hid, field, &field->usage[value[n] - min], 1, interrupt); @@ -1493,7 +1517,7 @@ "Multi-Axis Controller" }; const char *type, *bus; - char buf[64]; + char buf[64] = ""; unsigned int i; int len; int ret; @@ -2440,8 +2464,10 @@ /* * Scan generic devices for group information */ - if (hid_ignore_special_drivers || - !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-3.13.0.orig/drivers/hid/hid-ids.h +++ linux-3.13.0/drivers/hid/hid-ids.h @@ -312,6 +312,7 @@ #define USB_VENDOR_ID_ETURBOTOUCH 0x22b9 #define USB_DEVICE_ID_ETURBOTOUCH 0x0006 +#define USB_DEVICE_ID_ETURBOTOUCH_2968 0x2968 #define USB_VENDOR_ID_EZKEY 0x0518 #define USB_DEVICE_ID_BTC_8193 0x0002 @@ -809,6 +810,7 @@ #define USB_DEVICE_ID_SYNAPTICS_DPAD 0x0013 #define USB_DEVICE_ID_SYNAPTICS_LTS1 0x0af8 #define USB_DEVICE_ID_SYNAPTICS_LTS2 0x1d10 +#define USB_DEVICE_ID_SYNAPTICS_TP_V103 0x5710 #define USB_VENDOR_ID_THINGM 0x27b8 #define USB_DEVICE_ID_BLINK1 0x01ed --- linux-3.13.0.orig/drivers/hid/hid-input.c +++ linux-3.13.0/drivers/hid/hid-input.c @@ -350,9 +350,9 @@ ret = -ENOMEM; break; } - ret = dev->hid_get_raw_report(dev, dev->battery_report_id, - buf, 2, - dev->battery_report_type); + ret = hid_hw_raw_request(dev, dev->battery_report_id, buf, 2, + dev->battery_report_type, + HID_REQ_GET_REPORT); if (ret != 2) { ret = -ENODATA; @@ -1063,6 +1063,23 @@ return; } + /* + * Ignore reports for absolute data if the data didn't change. This is + * not only an optimization but also fixes 'dead' key reports. Some + * RollOver implementations for localized keys (like BACKSLASH/PIPE; HID + * 0x31 and 0x32) report multiple keys, even though a localized keyboard + * can only have one of them physically available. The 'dead' keys + * report constant 0. As all map to the same keycode, they'd confuse + * the input layer. If we filter the 'dead' keys on the HID level, we + * skip the keycode translation and only forward real events. + */ + if (!(field->flags & (HID_MAIN_ITEM_RELATIVE | + HID_MAIN_ITEM_BUFFERED_BYTE)) && + (field->flags & HID_MAIN_ITEM_VARIABLE) && + usage->usage_index < field->maxusage && + value == field->value[usage->usage_index]) + return; + /* report the usage code as scancode if the key status has changed */ if (usage->type == EV_KEY && !!test_bit(usage->code, input->key) != value) input_event(input, EV_MSC, MSC_SCAN, usage->hid); --- linux-3.13.0.orig/drivers/hid/hid-kye.c +++ linux-3.13.0/drivers/hid/hid-kye.c @@ -300,7 +300,7 @@ * - change the button usage range to 4-7 for the extra * buttons */ - if (*rsize >= 74 && + if (*rsize >= 75 && rdesc[61] == 0x05 && rdesc[62] == 0x08 && rdesc[63] == 0x19 && rdesc[64] == 0x08 && rdesc[65] == 0x29 && rdesc[66] == 0x0f && --- linux-3.13.0.orig/drivers/hid/hid-lg.c +++ linux-3.13.0/drivers/hid/hid-lg.c @@ -345,14 +345,14 @@ struct usb_device_descriptor *udesc; __u16 bcdDevice, rev_maj, rev_min; - if ((drv_data->quirks & LG_RDESC) && *rsize >= 90 && rdesc[83] == 0x26 && + if ((drv_data->quirks & LG_RDESC) && *rsize >= 91 && rdesc[83] == 0x26 && rdesc[84] == 0x8c && rdesc[85] == 0x02) { hid_info(hdev, "fixing up Logitech keyboard report descriptor\n"); rdesc[84] = rdesc[89] = 0x4d; rdesc[85] = rdesc[90] = 0x10; } - if ((drv_data->quirks & LG_RDESC_REL_ABS) && *rsize >= 50 && + if ((drv_data->quirks & LG_RDESC_REL_ABS) && *rsize >= 51 && rdesc[32] == 0x81 && rdesc[33] == 0x06 && rdesc[49] == 0x81 && rdesc[50] == 0x06) { hid_info(hdev, --- linux-3.13.0.orig/drivers/hid/hid-logitech-dj.c +++ linux-3.13.0/drivers/hid/hid-logitech-dj.c @@ -237,13 +237,6 @@ return; } - if ((dj_report->device_index < DJ_DEVICE_INDEX_MIN) || - (dj_report->device_index > DJ_DEVICE_INDEX_MAX)) { - dev_err(&djrcv_hdev->dev, "%s: invalid device index:%d\n", - __func__, dj_report->device_index); - return; - } - if (djrcv_dev->paired_dj_devices[dj_report->device_index]) { /* The device is already known. No need to reallocate it. */ dbg_hid("%s: device is already known\n", __func__); @@ -686,7 +679,6 @@ struct dj_receiver_dev *djrcv_dev = hid_get_drvdata(hdev); struct dj_report *dj_report = (struct dj_report *) data; unsigned long flags; - bool report_processed = false; dbg_hid("%s, size:%d\n", __func__, size); @@ -714,27 +706,41 @@ * anything else with it. */ + /* case 1) */ + if (data[0] != REPORT_ID_DJ_SHORT) + return false; + + if ((dj_report->device_index < DJ_DEVICE_INDEX_MIN) || + (dj_report->device_index > DJ_DEVICE_INDEX_MAX)) { + /* + * Device index is wrong, bail out. + * This driver can ignore safely the receiver notifications, + * so ignore those reports too. + */ + if (dj_report->device_index != DJ_RECEIVER_INDEX) + dev_err(&hdev->dev, "%s: invalid device index:%d\n", + __func__, dj_report->device_index); + return false; + } + spin_lock_irqsave(&djrcv_dev->lock, flags); - if (dj_report->report_id == REPORT_ID_DJ_SHORT) { - switch (dj_report->report_type) { - case REPORT_TYPE_NOTIF_DEVICE_PAIRED: - case REPORT_TYPE_NOTIF_DEVICE_UNPAIRED: - logi_dj_recv_queue_notification(djrcv_dev, dj_report); - break; - case REPORT_TYPE_NOTIF_CONNECTION_STATUS: - if (dj_report->report_params[CONNECTION_STATUS_PARAM_STATUS] == - STATUS_LINKLOSS) { - logi_dj_recv_forward_null_report(djrcv_dev, dj_report); - } - break; - default: - logi_dj_recv_forward_report(djrcv_dev, dj_report); + switch (dj_report->report_type) { + case REPORT_TYPE_NOTIF_DEVICE_PAIRED: + case REPORT_TYPE_NOTIF_DEVICE_UNPAIRED: + logi_dj_recv_queue_notification(djrcv_dev, dj_report); + break; + case REPORT_TYPE_NOTIF_CONNECTION_STATUS: + if (dj_report->report_params[CONNECTION_STATUS_PARAM_STATUS] == + STATUS_LINKLOSS) { + logi_dj_recv_forward_null_report(djrcv_dev, dj_report); } - report_processed = true; + break; + default: + logi_dj_recv_forward_report(djrcv_dev, dj_report); } spin_unlock_irqrestore(&djrcv_dev->lock, flags); - return report_processed; + return true; } static int logi_dj_probe(struct hid_device *hdev, --- linux-3.13.0.orig/drivers/hid/hid-logitech-dj.h +++ linux-3.13.0/drivers/hid/hid-logitech-dj.h @@ -27,6 +27,7 @@ #define DJ_MAX_PAIRED_DEVICES 6 #define DJ_MAX_NUMBER_NOTIFICATIONS 8 +#define DJ_RECEIVER_INDEX 0 #define DJ_DEVICE_INDEX_MIN 1 #define DJ_DEVICE_INDEX_MAX 6 --- linux-3.13.0.orig/drivers/hid/hid-magicmouse.c +++ linux-3.13.0/drivers/hid/hid-magicmouse.c @@ -290,6 +290,11 @@ if (size < 4 || ((size - 4) % 9) != 0) return 0; npoints = (size - 4) / 9; + if (npoints > 15) { + hid_warn(hdev, "invalid size value (%d) for TRACKPAD_REPORT_ID\n", + size); + return 0; + } msc->ntouches = 0; for (ii = 0; ii < npoints; ii++) magicmouse_emit_touch(msc, ii, data + ii * 9 + 4); @@ -307,6 +312,11 @@ if (size < 6 || ((size - 6) % 8) != 0) return 0; npoints = (size - 6) / 8; + if (npoints > 15) { + hid_warn(hdev, "invalid size value (%d) for MOUSE_REPORT_ID\n", + size); + return 0; + } msc->ntouches = 0; for (ii = 0; ii < npoints; ii++) magicmouse_emit_touch(msc, ii, data + ii * 8 + 6); --- linux-3.13.0.orig/drivers/hid/hid-monterey.c +++ linux-3.13.0/drivers/hid/hid-monterey.c @@ -24,7 +24,7 @@ static __u8 *mr_report_fixup(struct hid_device *hdev, __u8 *rdesc, unsigned int *rsize) { - if (*rsize >= 30 && rdesc[29] == 0x05 && rdesc[30] == 0x09) { + if (*rsize >= 31 && rdesc[29] == 0x05 && rdesc[30] == 0x09) { hid_info(hdev, "fixing up button/consumer in HID report descriptor\n"); rdesc[30] = 0x0c; } --- linux-3.13.0.orig/drivers/hid/hid-multitouch.c +++ linux-3.13.0/drivers/hid/hid-multitouch.c @@ -111,6 +111,7 @@ __u8 touches_by_report; /* how many touches are present in one report: * 1 means we should use a serial protocol * > 1 means hybrid (multitouch) protocol */ + __u8 buttons_count; /* number of physical buttons per touchpad */ bool serial_maybe; /* need to check for serial protocol */ bool curvalid; /* is the current contact valid? */ unsigned mt_flags; /* flags to pass to input-mt */ @@ -418,6 +419,10 @@ (usage->hid & HID_USAGE_PAGE) == HID_UP_BUTTON) td->mt_flags |= INPUT_MT_POINTER; + /* count the buttons on touchpads */ + if ((usage->hid & HID_USAGE_PAGE) == HID_UP_BUTTON) + td->buttons_count++; + if (usage->usage_index) prev_usage = &field->usage[usage->usage_index - 1]; @@ -767,6 +772,10 @@ if (cls->quirks & MT_QUIRK_NOT_SEEN_MEANS_UP) td->mt_flags |= INPUT_MT_DROP_UNUSED; + /* check for clickpads */ + if ((td->mt_flags & INPUT_MT_POINTER) && (td->buttons_count == 1)) + __set_bit(INPUT_PROP_BUTTONPAD, input->propbit); + input_mt_init_slots(input, td->maxcontacts, td->mt_flags); td->mt_flags = 0; --- linux-3.13.0.orig/drivers/hid/hid-petalynx.c +++ linux-3.13.0/drivers/hid/hid-petalynx.c @@ -25,7 +25,7 @@ static __u8 *pl_report_fixup(struct hid_device *hdev, __u8 *rdesc, unsigned int *rsize) { - if (*rsize >= 60 && rdesc[39] == 0x2a && rdesc[40] == 0xf5 && + if (*rsize >= 62 && rdesc[39] == 0x2a && rdesc[40] == 0xf5 && rdesc[41] == 0x00 && rdesc[59] == 0x26 && rdesc[60] == 0xf9 && rdesc[61] == 0x00) { hid_info(hdev, "fixing up Petalynx Maxter Remote report descriptor\n"); --- linux-3.13.0.orig/drivers/hid/hid-picolcd_core.c +++ linux-3.13.0/drivers/hid/hid-picolcd_core.c @@ -350,6 +350,12 @@ if (!data) return 1; + if (size > 64) { + hid_warn(hdev, "invalid size value (%d) for picolcd raw event\n", + size); + return 0; + } + if (report->id == REPORT_KEY_STATE) { if (data->input_keys) ret = picolcd_raw_keypad(data, report, raw_data+1, size-1); --- linux-3.13.0.orig/drivers/hid/hid-rmi.c +++ linux-3.13.0/drivers/hid/hid-rmi.c @@ -0,0 +1,920 @@ +/* + * Copyright (c) 2013 Andrew Duggan + * Copyright (c) 2013 Synaptics Incorporated + * Copyright (c) 2014 Benjamin Tissoires + * Copyright (c) 2014 Red Hat, 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 2 of the License, or (at your option) + * any later version. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "hid-ids.h" + +#define RMI_MOUSE_REPORT_ID 0x01 /* Mouse emulation Report */ +#define RMI_WRITE_REPORT_ID 0x09 /* Output Report */ +#define RMI_READ_ADDR_REPORT_ID 0x0a /* Output Report */ +#define RMI_READ_DATA_REPORT_ID 0x0b /* Input Report */ +#define RMI_ATTN_REPORT_ID 0x0c /* Input Report */ +#define RMI_SET_RMI_MODE_REPORT_ID 0x0f /* Feature Report */ + +/* flags */ +#define RMI_READ_REQUEST_PENDING BIT(0) +#define RMI_READ_DATA_PENDING BIT(1) +#define RMI_STARTED BIT(2) + +enum rmi_mode_type { + RMI_MODE_OFF = 0, + RMI_MODE_ATTN_REPORTS = 1, + RMI_MODE_NO_PACKED_ATTN_REPORTS = 2, +}; + +struct rmi_function { + unsigned page; /* page of the function */ + u16 query_base_addr; /* base address for queries */ + u16 command_base_addr; /* base address for commands */ + u16 control_base_addr; /* base address for controls */ + u16 data_base_addr; /* base address for datas */ + unsigned int interrupt_base; /* cross-function interrupt number + * (uniq in the device)*/ + unsigned int interrupt_count; /* number of interrupts */ + unsigned int report_size; /* size of a report */ + unsigned long irq_mask; /* mask of the interrupts + * (to be applied against ATTN IRQ) */ +}; + +/** + * struct rmi_data - stores information for hid communication + * + * @page_mutex: Locks current page to avoid changing pages in unexpected ways. + * @page: Keeps track of the current virtual page + * + * @wait: Used for waiting for read data + * + * @writeReport: output buffer when writing RMI registers + * @readReport: input buffer when reading RMI registers + * + * @input_report_size: size of an input report (advertised by HID) + * @output_report_size: size of an output report (advertised by HID) + * + * @flags: flags for the current device (started, reading, etc...) + * + * @f11: placeholder of internal RMI function F11 description + * @f30: placeholder of internal RMI function F30 description + * + * @max_fingers: maximum finger count reported by the device + * @max_x: maximum x value reported by the device + * @max_y: maximum y value reported by the device + * + * @gpio_led_count: count of GPIOs + LEDs reported by F30 + * @button_count: actual physical buttons count + * @button_mask: button mask used to decode GPIO ATTN reports + * @button_state_mask: pull state of the buttons + * + * @input: pointer to the kernel input device + * + * @reset_work: worker which will be called in case of a mouse report + * @hdev: pointer to the struct hid_device + */ +struct rmi_data { + struct mutex page_mutex; + int page; + + wait_queue_head_t wait; + + u8 *writeReport; + u8 *readReport; + + int input_report_size; + int output_report_size; + + unsigned long flags; + + struct rmi_function f11; + struct rmi_function f30; + + unsigned int max_fingers; + unsigned int max_x; + unsigned int max_y; + unsigned int x_size_mm; + unsigned int y_size_mm; + + unsigned int gpio_led_count; + unsigned int button_count; + unsigned long button_mask; + unsigned long button_state_mask; + + struct input_dev *input; + + struct work_struct reset_work; + struct hid_device *hdev; +}; + +#define RMI_PAGE(addr) (((addr) >> 8) & 0xff) + +static int rmi_write_report(struct hid_device *hdev, u8 *report, int len); + +/** + * rmi_set_page - Set RMI page + * @hdev: The pointer to the hid_device struct + * @page: The new page address. + * + * RMI devices have 16-bit addressing, but some of the physical + * implementations (like SMBus) only have 8-bit addressing. So RMI implements + * a page address at 0xff of every page so we can reliable page addresses + * every 256 registers. + * + * The page_mutex lock must be held when this function is entered. + * + * Returns zero on success, non-zero on failure. + */ +static int rmi_set_page(struct hid_device *hdev, u8 page) +{ + struct rmi_data *data = hid_get_drvdata(hdev); + int retval; + + data->writeReport[0] = RMI_WRITE_REPORT_ID; + data->writeReport[1] = 1; + data->writeReport[2] = 0xFF; + data->writeReport[4] = page; + + retval = rmi_write_report(hdev, data->writeReport, + data->output_report_size); + if (retval != data->output_report_size) { + dev_err(&hdev->dev, + "%s: set page failed: %d.", __func__, retval); + return retval; + } + + data->page = page; + return 0; +} + +static int rmi_set_mode(struct hid_device *hdev, u8 mode) +{ + int ret; + u8 txbuf[2] = {RMI_SET_RMI_MODE_REPORT_ID, mode}; + + ret = hid_hw_raw_request(hdev, RMI_SET_RMI_MODE_REPORT_ID, txbuf, + sizeof(txbuf), HID_FEATURE_REPORT, HID_REQ_SET_REPORT); + if (ret < 0) { + dev_err(&hdev->dev, "unable to set rmi mode to %d (%d)\n", mode, + ret); + return ret; + } + + return 0; +} + +static int rmi_write_report(struct hid_device *hdev, u8 *report, int len) +{ + int ret; + + ret = hid_hw_output_report(hdev, (void *)report, len); + if (ret < 0) { + dev_err(&hdev->dev, "failed to write hid report (%d)\n", ret); + return ret; + } + + return ret; +} + +static int rmi_read_block(struct hid_device *hdev, u16 addr, void *buf, + const int len) +{ + struct rmi_data *data = hid_get_drvdata(hdev); + int ret; + int bytes_read; + int bytes_needed; + int retries; + int read_input_count; + + mutex_lock(&data->page_mutex); + + if (RMI_PAGE(addr) != data->page) { + ret = rmi_set_page(hdev, RMI_PAGE(addr)); + if (ret < 0) + goto exit; + } + + for (retries = 5; retries > 0; retries--) { + data->writeReport[0] = RMI_READ_ADDR_REPORT_ID; + data->writeReport[1] = 0; /* old 1 byte read count */ + data->writeReport[2] = addr & 0xFF; + data->writeReport[3] = (addr >> 8) & 0xFF; + data->writeReport[4] = len & 0xFF; + data->writeReport[5] = (len >> 8) & 0xFF; + + set_bit(RMI_READ_REQUEST_PENDING, &data->flags); + + ret = rmi_write_report(hdev, data->writeReport, + data->output_report_size); + if (ret != data->output_report_size) { + clear_bit(RMI_READ_REQUEST_PENDING, &data->flags); + dev_err(&hdev->dev, + "failed to write request output report (%d)\n", + ret); + goto exit; + } + + bytes_read = 0; + bytes_needed = len; + while (bytes_read < len) { + if (!wait_event_timeout(data->wait, + test_bit(RMI_READ_DATA_PENDING, &data->flags), + msecs_to_jiffies(1000))) { + hid_warn(hdev, "%s: timeout elapsed\n", + __func__); + ret = -EAGAIN; + break; + } + + read_input_count = data->readReport[1]; + memcpy(buf + bytes_read, &data->readReport[2], + read_input_count < bytes_needed ? + read_input_count : bytes_needed); + + bytes_read += read_input_count; + bytes_needed -= read_input_count; + clear_bit(RMI_READ_DATA_PENDING, &data->flags); + } + + if (ret >= 0) { + ret = 0; + break; + } + } + +exit: + clear_bit(RMI_READ_REQUEST_PENDING, &data->flags); + mutex_unlock(&data->page_mutex); + return ret; +} + +static inline int rmi_read(struct hid_device *hdev, u16 addr, void *buf) +{ + return rmi_read_block(hdev, addr, buf, 1); +} + +static void rmi_f11_process_touch(struct rmi_data *hdata, int slot, + u8 finger_state, u8 *touch_data) +{ + int x, y, wx, wy; + int wide, major, minor; + int z; + + input_mt_slot(hdata->input, slot); + input_mt_report_slot_state(hdata->input, MT_TOOL_FINGER, + finger_state == 0x01); + if (finger_state == 0x01) { + x = (touch_data[0] << 4) | (touch_data[2] & 0x0F); + y = (touch_data[1] << 4) | (touch_data[2] >> 4); + wx = touch_data[3] & 0x0F; + wy = touch_data[3] >> 4; + wide = (wx > wy); + major = max(wx, wy); + minor = min(wx, wy); + z = touch_data[4]; + + /* y is inverted */ + y = hdata->max_y - y; + + input_event(hdata->input, EV_ABS, ABS_MT_POSITION_X, x); + input_event(hdata->input, EV_ABS, ABS_MT_POSITION_Y, y); + input_event(hdata->input, EV_ABS, ABS_MT_ORIENTATION, wide); + input_event(hdata->input, EV_ABS, ABS_MT_PRESSURE, z); + input_event(hdata->input, EV_ABS, ABS_MT_TOUCH_MAJOR, major); + input_event(hdata->input, EV_ABS, ABS_MT_TOUCH_MINOR, minor); + } +} + +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); +} + +static inline int rmi_schedule_reset(struct hid_device *hdev) +{ + struct rmi_data *hdata = hid_get_drvdata(hdev); + return schedule_work(&hdata->reset_work); +} + +static int rmi_f11_input_event(struct hid_device *hdev, u8 irq, u8 *data, + int size) +{ + struct rmi_data *hdata = hid_get_drvdata(hdev); + int offset; + int i; + + if (size < hdata->f11.report_size) + return 0; + + if (!(irq & hdata->f11.irq_mask)) + return 0; + + offset = (hdata->max_fingers >> 2) + 1; + for (i = 0; i < hdata->max_fingers; i++) { + int fs_byte_position = i >> 2; + int fs_bit_position = (i & 0x3) << 1; + int finger_state = (data[fs_byte_position] >> fs_bit_position) & + 0x03; + + rmi_f11_process_touch(hdata, i, finger_state, + &data[offset + 5 * i]); + } + input_mt_sync_frame(hdata->input); + input_sync(hdata->input); + return hdata->f11.report_size; +} + +static int rmi_f30_input_event(struct hid_device *hdev, u8 irq, u8 *data, + int size) +{ + struct rmi_data *hdata = hid_get_drvdata(hdev); + int i; + int button = 0; + bool value; + + if (!(irq & hdata->f30.irq_mask)) + return 0; + + for (i = 0; i < hdata->gpio_led_count; i++) { + if (test_bit(i, &hdata->button_mask)) { + value = (data[i / 8] >> (i & 0x07)) & BIT(0); + if (test_bit(i, &hdata->button_state_mask)) + value = !value; + input_event(hdata->input, EV_KEY, BTN_LEFT + button++, + value); + } + } + return hdata->f30.report_size; +} + +static int rmi_input_event(struct hid_device *hdev, u8 *data, int size) +{ + struct rmi_data *hdata = hid_get_drvdata(hdev); + unsigned long irq_mask = 0; + unsigned index = 2; + + if (!(test_bit(RMI_STARTED, &hdata->flags))) + return 0; + + irq_mask |= hdata->f11.irq_mask; + irq_mask |= hdata->f30.irq_mask; + + if (data[1] & ~irq_mask) + hid_warn(hdev, "unknown intr source:%02lx %s:%d\n", + data[1] & ~irq_mask, __FILE__, __LINE__); + + if (hdata->f11.interrupt_base < hdata->f30.interrupt_base) { + index += rmi_f11_input_event(hdev, data[1], &data[index], + size - index); + index += rmi_f30_input_event(hdev, data[1], &data[index], + size - index); + } else { + index += rmi_f30_input_event(hdev, data[1], &data[index], + size - index); + index += rmi_f11_input_event(hdev, data[1], &data[index], + size - index); + } + + return 1; +} + +static int rmi_read_data_event(struct hid_device *hdev, u8 *data, int size) +{ + struct rmi_data *hdata = hid_get_drvdata(hdev); + + if (!test_bit(RMI_READ_REQUEST_PENDING, &hdata->flags)) { + hid_err(hdev, "no read request pending\n"); + return 0; + } + + memcpy(hdata->readReport, data, size < hdata->input_report_size ? + size : hdata->input_report_size); + set_bit(RMI_READ_DATA_PENDING, &hdata->flags); + wake_up(&hdata->wait); + + return 1; +} + +static int rmi_raw_event(struct hid_device *hdev, + struct hid_report *report, u8 *data, int size) +{ + switch (data[0]) { + case RMI_READ_DATA_REPORT_ID: + return rmi_read_data_event(hdev, data, size); + case RMI_ATTN_REPORT_ID: + return rmi_input_event(hdev, data, size); + case RMI_MOUSE_REPORT_ID: + rmi_schedule_reset(hdev); + break; + } + + return 0; +} + +static int rmi_post_reset(struct hid_device *hdev) +{ + return rmi_set_mode(hdev, RMI_MODE_ATTN_REPORTS); +} + +static int rmi_post_resume(struct hid_device *hdev) +{ + return rmi_set_mode(hdev, RMI_MODE_ATTN_REPORTS); +} + +#define RMI4_MAX_PAGE 0xff +#define RMI4_PAGE_SIZE 0x0100 + +#define PDT_START_SCAN_LOCATION 0x00e9 +#define PDT_END_SCAN_LOCATION 0x0005 +#define RMI4_END_OF_PDT(id) ((id) == 0x00 || (id) == 0xff) + +struct pdt_entry { + u8 query_base_addr:8; + u8 command_base_addr:8; + u8 control_base_addr:8; + u8 data_base_addr:8; + u8 interrupt_source_count:3; + u8 bits3and4:2; + u8 function_version:2; + u8 bit7:1; + u8 function_number:8; +} __attribute__((__packed__)); + +static inline unsigned long rmi_gen_mask(unsigned irq_base, unsigned irq_count) +{ + return GENMASK(irq_count + irq_base - 1, irq_base); +} + +static void rmi_register_function(struct rmi_data *data, + struct pdt_entry *pdt_entry, int page, unsigned interrupt_count) +{ + struct rmi_function *f = NULL; + u16 page_base = page << 8; + + switch (pdt_entry->function_number) { + case 0x11: + f = &data->f11; + break; + case 0x30: + f = &data->f30; + break; + } + + if (f) { + f->page = page; + f->query_base_addr = page_base | pdt_entry->query_base_addr; + f->command_base_addr = page_base | pdt_entry->command_base_addr; + f->control_base_addr = page_base | pdt_entry->control_base_addr; + f->data_base_addr = page_base | pdt_entry->data_base_addr; + f->interrupt_base = interrupt_count; + f->interrupt_count = pdt_entry->interrupt_source_count; + f->irq_mask = rmi_gen_mask(f->interrupt_base, + f->interrupt_count); + } +} + +static int rmi_scan_pdt(struct hid_device *hdev) +{ + struct rmi_data *data = hid_get_drvdata(hdev); + struct pdt_entry entry; + int page; + bool page_has_function; + int i; + int retval; + int interrupt = 0; + u16 page_start, pdt_start , pdt_end; + + hid_info(hdev, "Scanning PDT...\n"); + + for (page = 0; (page <= RMI4_MAX_PAGE); page++) { + page_start = RMI4_PAGE_SIZE * page; + pdt_start = page_start + PDT_START_SCAN_LOCATION; + pdt_end = page_start + PDT_END_SCAN_LOCATION; + + page_has_function = false; + for (i = pdt_start; i >= pdt_end; i -= sizeof(entry)) { + retval = rmi_read_block(hdev, i, &entry, sizeof(entry)); + if (retval) { + hid_err(hdev, + "Read of PDT entry at %#06x failed.\n", + i); + goto error_exit; + } + + if (RMI4_END_OF_PDT(entry.function_number)) + break; + + page_has_function = true; + + hid_info(hdev, "Found F%02X on page %#04x\n", + entry.function_number, page); + + rmi_register_function(data, &entry, page, interrupt); + interrupt += entry.interrupt_source_count; + } + + if (!page_has_function) + break; + } + + hid_info(hdev, "%s: Done with PDT scan.\n", __func__); + retval = 0; + +error_exit: + return retval; +} + +static int rmi_populate_f11(struct hid_device *hdev) +{ + struct rmi_data *data = hid_get_drvdata(hdev); + u8 buf[20]; + int ret; + bool has_query9; + bool has_query10; + bool has_query11; + bool has_query12; + bool has_physical_props; + unsigned x_size, y_size; + u16 query12_offset; + + if (!data->f11.query_base_addr) { + hid_err(hdev, "No 2D sensor found, giving up.\n"); + return -ENODEV; + } + + /* query 0 contains some useful information */ + ret = rmi_read(hdev, data->f11.query_base_addr, buf); + if (ret) { + hid_err(hdev, "can not get query 0: %d.\n", ret); + return ret; + } + has_query9 = !!(buf[0] & BIT(3)); + has_query11 = !!(buf[0] & BIT(4)); + has_query12 = !!(buf[0] & BIT(5)); + + /* query 1 to get the max number of fingers */ + ret = rmi_read(hdev, data->f11.query_base_addr + 1, buf); + if (ret) { + hid_err(hdev, "can not get NumberOfFingers: %d.\n", ret); + return ret; + } + data->max_fingers = (buf[0] & 0x07) + 1; + if (data->max_fingers > 5) + data->max_fingers = 10; + + data->f11.report_size = data->max_fingers * 5 + + DIV_ROUND_UP(data->max_fingers, 4); + + if (!(buf[0] & BIT(4))) { + hid_err(hdev, "No absolute events, giving up.\n"); + return -ENODEV; + } + + /* query 8 to find out if query 10 exists */ + ret = rmi_read(hdev, data->f11.query_base_addr + 8, buf); + if (ret) { + hid_err(hdev, "can not read gesture information: %d.\n", ret); + return ret; + } + has_query10 = !!(buf[0] & BIT(2)); + + /* + * At least 8 queries are guaranteed to be present in F11 + * +1 for query12. + */ + query12_offset = 9; + + if (has_query9) + ++query12_offset; + + if (has_query10) + ++query12_offset; + + if (has_query11) + ++query12_offset; + + /* query 12 to know if the physical properties are reported */ + if (has_query12) { + ret = rmi_read(hdev, data->f11.query_base_addr + + query12_offset, buf); + if (ret) { + hid_err(hdev, "can not get query 12: %d.\n", ret); + return ret; + } + has_physical_props = !!(buf[0] & BIT(5)); + + if (has_physical_props) { + ret = rmi_read_block(hdev, + data->f11.query_base_addr + + query12_offset + 1, buf, 4); + if (ret) { + hid_err(hdev, "can not read query 15-18: %d.\n", + ret); + return ret; + } + + x_size = buf[0] | (buf[1] << 8); + y_size = buf[2] | (buf[3] << 8); + + data->x_size_mm = DIV_ROUND_CLOSEST(x_size, 10); + data->y_size_mm = DIV_ROUND_CLOSEST(y_size, 10); + + hid_info(hdev, "%s: size in mm: %d x %d\n", + __func__, data->x_size_mm, data->y_size_mm); + } + } + + /* + * retrieve the ctrl registers + * the ctrl register has a size of 20 but a fw bug split it into 16 + 4, + * and there is no way to know if the first 20 bytes are here or not. + * We use only the first 10 bytes, so get only them. + */ + ret = rmi_read_block(hdev, data->f11.control_base_addr, buf, 10); + if (ret) { + hid_err(hdev, "can not read ctrl block of size 10: %d.\n", ret); + return ret; + } + + data->max_x = buf[6] | (buf[7] << 8); + data->max_y = buf[8] | (buf[9] << 8); + + return 0; +} + +static int rmi_populate_f30(struct hid_device *hdev) +{ + struct rmi_data *data = hid_get_drvdata(hdev); + u8 buf[20]; + int ret; + bool has_gpio, has_led; + unsigned bytes_per_ctrl; + u8 ctrl2_addr; + int ctrl2_3_length; + int i; + + /* function F30 is for physical buttons */ + if (!data->f30.query_base_addr) { + hid_err(hdev, "No GPIO/LEDs found, giving up.\n"); + return -ENODEV; + } + + ret = rmi_read_block(hdev, data->f30.query_base_addr, buf, 2); + if (ret) { + hid_err(hdev, "can not get F30 query registers: %d.\n", ret); + return ret; + } + + has_gpio = !!(buf[0] & BIT(3)); + has_led = !!(buf[0] & BIT(2)); + data->gpio_led_count = buf[1] & 0x1f; + + /* retrieve ctrl 2 & 3 registers */ + bytes_per_ctrl = (data->gpio_led_count + 7) / 8; + /* Ctrl0 is present only if both has_gpio and has_led are set*/ + ctrl2_addr = (has_gpio && has_led) ? bytes_per_ctrl : 0; + /* Ctrl1 is always be present */ + ctrl2_addr += bytes_per_ctrl; + ctrl2_3_length = 2 * bytes_per_ctrl; + + data->f30.report_size = bytes_per_ctrl; + + ret = rmi_read_block(hdev, data->f30.control_base_addr + ctrl2_addr, + buf, ctrl2_3_length); + if (ret) { + hid_err(hdev, "can not read ctrl 2&3 block of size %d: %d.\n", + ctrl2_3_length, ret); + return ret; + } + + for (i = 0; i < data->gpio_led_count; i++) { + int byte_position = i >> 3; + int bit_position = i & 0x07; + u8 dir_byte = buf[byte_position]; + u8 data_byte = buf[byte_position + bytes_per_ctrl]; + bool dir = (dir_byte >> bit_position) & BIT(0); + bool dat = (data_byte >> bit_position) & BIT(0); + + if (dir == 0) { + /* input mode */ + if (dat) { + /* actual buttons have pull up resistor */ + data->button_count++; + set_bit(i, &data->button_mask); + set_bit(i, &data->button_state_mask); + } + } + + } + + return 0; +} + +static int rmi_populate(struct hid_device *hdev) +{ + int ret; + + ret = rmi_scan_pdt(hdev); + if (ret) { + hid_err(hdev, "PDT scan failed with code %d.\n", ret); + return ret; + } + + ret = rmi_populate_f11(hdev); + if (ret) { + hid_err(hdev, "Error while initializing F11 (%d).\n", ret); + return ret; + } + + ret = rmi_populate_f30(hdev); + if (ret) + hid_warn(hdev, "Error while initializing F30 (%d).\n", ret); + + return 0; +} + +static void rmi_input_configured(struct hid_device *hdev, struct hid_input *hi) +{ + struct rmi_data *data = hid_get_drvdata(hdev); + struct input_dev *input = hi->input; + int ret; + int res_x, res_y, i; + + data->input = input; + + hid_dbg(hdev, "Opening low level driver\n"); + ret = hid_hw_open(hdev); + if (ret) + return; + + /* Allow incoming hid reports */ + hid_device_io_start(hdev); + + ret = rmi_set_mode(hdev, RMI_MODE_ATTN_REPORTS); + if (ret < 0) { + dev_err(&hdev->dev, "failed to set rmi mode\n"); + goto exit; + } + + ret = rmi_set_page(hdev, 0); + if (ret < 0) { + dev_err(&hdev->dev, "failed to set page select to 0.\n"); + goto exit; + } + + ret = rmi_populate(hdev); + if (ret) + goto exit; + + __set_bit(EV_ABS, input->evbit); + input_set_abs_params(input, ABS_MT_POSITION_X, 1, data->max_x, 0, 0); + input_set_abs_params(input, ABS_MT_POSITION_Y, 1, data->max_y, 0, 0); + + if (data->x_size_mm && data->y_size_mm) { + res_x = (data->max_x - 1) / data->x_size_mm; + res_y = (data->max_y - 1) / data->y_size_mm; + + input_abs_set_res(input, ABS_MT_POSITION_X, res_x); + input_abs_set_res(input, ABS_MT_POSITION_Y, res_y); + } + + input_set_abs_params(input, ABS_MT_ORIENTATION, 0, 1, 0, 0); + input_set_abs_params(input, ABS_MT_PRESSURE, 0, 0xff, 0, 0); + input_set_abs_params(input, ABS_MT_TOUCH_MAJOR, 0, 0x0f, 0, 0); + input_set_abs_params(input, ABS_MT_TOUCH_MINOR, 0, 0x0f, 0, 0); + + input_mt_init_slots(input, data->max_fingers, INPUT_MT_POINTER); + + if (data->button_count) { + __set_bit(EV_KEY, input->evbit); + for (i = 0; i < data->button_count; i++) + __set_bit(BTN_LEFT + i, input->keybit); + + if (data->button_count == 1) + __set_bit(INPUT_PROP_BUTTONPAD, input->propbit); + } + + set_bit(RMI_STARTED, &data->flags); + +exit: + hid_device_io_stop(hdev); + hid_hw_close(hdev); +} + +static int rmi_input_mapping(struct hid_device *hdev, + struct hid_input *hi, struct hid_field *field, + struct hid_usage *usage, unsigned long **bit, int *max) +{ + /* we want to make HID ignore the advertised HID collection */ + return -1; +} + +static int rmi_probe(struct hid_device *hdev, const struct hid_device_id *id) +{ + struct rmi_data *data = NULL; + int ret; + size_t alloc_size; + + data = devm_kzalloc(&hdev->dev, sizeof(struct rmi_data), GFP_KERNEL); + if (!data) + return -ENOMEM; + + INIT_WORK(&data->reset_work, rmi_reset_work); + data->hdev = hdev; + + hid_set_drvdata(hdev, data); + + hdev->quirks |= HID_QUIRK_NO_INIT_REPORTS; + + ret = hid_parse(hdev); + if (ret) { + hid_err(hdev, "parse failed\n"); + return ret; + } + + data->input_report_size = (hdev->report_enum[HID_INPUT_REPORT] + .report_id_hash[RMI_ATTN_REPORT_ID]->size >> 3) + + 1 /* report id */; + data->output_report_size = (hdev->report_enum[HID_OUTPUT_REPORT] + .report_id_hash[RMI_WRITE_REPORT_ID]->size >> 3) + + 1 /* report id */; + + alloc_size = data->output_report_size + data->input_report_size; + + data->writeReport = devm_kzalloc(&hdev->dev, alloc_size, GFP_KERNEL); + if (!data->writeReport) { + ret = -ENOMEM; + return ret; + } + + data->readReport = data->writeReport + data->output_report_size; + + init_waitqueue_head(&data->wait); + + mutex_init(&data->page_mutex); + + ret = hid_hw_start(hdev, HID_CONNECT_DEFAULT); + if (ret) { + hid_err(hdev, "hw start failed\n"); + return ret; + } + + if (!test_bit(RMI_STARTED, &data->flags)) { + hid_hw_stop(hdev); + return -EIO; + } + + return 0; +} + +static void rmi_remove(struct hid_device *hdev) +{ + struct rmi_data *hdata = hid_get_drvdata(hdev); + + clear_bit(RMI_STARTED, &hdata->flags); + + hid_hw_stop(hdev); +} + +static const struct hid_device_id rmi_id[] = { + { HID_DEVICE(HID_BUS_ANY, HID_GROUP_RMI, HID_ANY_ID, HID_ANY_ID) }, + { } +}; +MODULE_DEVICE_TABLE(hid, rmi_id); + +static struct hid_driver rmi_driver = { + .name = "hid-rmi", + .id_table = rmi_id, + .probe = rmi_probe, + .remove = rmi_remove, + .raw_event = rmi_raw_event, + .input_mapping = rmi_input_mapping, + .input_configured = rmi_input_configured, +#ifdef CONFIG_PM + .resume = rmi_post_resume, + .reset_resume = rmi_post_reset, +#endif +}; + +module_hid_driver(rmi_driver); + +MODULE_AUTHOR("Andrew Duggan "); +MODULE_DESCRIPTION("RMI HID driver"); +MODULE_LICENSE("GPL"); --- linux-3.13.0.orig/drivers/hid/hid-roccat-pyra.c +++ linux-3.13.0/drivers/hid/hid-roccat-pyra.c @@ -35,6 +35,8 @@ static void profile_activated(struct pyra_device *pyra, unsigned int new_profile) { + if (new_profile >= ARRAY_SIZE(pyra->profile_settings)) + return; pyra->actual_profile = new_profile; pyra->actual_cpi = pyra->profile_settings[pyra->actual_profile].y_cpi; } @@ -257,9 +259,11 @@ if (off != 0 || count != PYRA_SIZE_SETTINGS) return -EINVAL; - mutex_lock(&pyra->pyra_lock); - settings = (struct pyra_settings const *)buf; + if (settings->startup_profile >= ARRAY_SIZE(pyra->profile_settings)) + return -EINVAL; + + mutex_lock(&pyra->pyra_lock); retval = pyra_set_settings(usb_dev, settings); if (retval) { --- linux-3.13.0.orig/drivers/hid/hid-sony.c +++ linux-3.13.0/drivers/hid/hid-sony.c @@ -432,7 +432,8 @@ if (!buf) return -ENOMEM; - ret = hdev->hid_get_raw_report(hdev, 0xf2, buf, 17, HID_FEATURE_REPORT); + ret = hid_hw_raw_request(hdev, 0xf2, buf, 17, HID_FEATURE_REPORT, + HID_REQ_GET_REPORT); if (ret < 0) hid_err(hdev, "can't set operational mode\n"); --- linux-3.13.0.orig/drivers/hid/hid-sunplus.c +++ linux-3.13.0/drivers/hid/hid-sunplus.c @@ -24,7 +24,7 @@ static __u8 *sp_report_fixup(struct hid_device *hdev, __u8 *rdesc, unsigned int *rsize) { - if (*rsize >= 107 && rdesc[104] == 0x26 && rdesc[105] == 0x80 && + if (*rsize >= 112 && rdesc[104] == 0x26 && rdesc[105] == 0x80 && rdesc[106] == 0x03) { hid_info(hdev, "fixing up Sunplus Wireless Desktop report descriptor\n"); rdesc[105] = rdesc[110] = 0x03; --- linux-3.13.0.orig/drivers/hid/hidraw.c +++ linux-3.13.0/drivers/hid/hidraw.c @@ -6,7 +6,7 @@ * to work on raw hid events as they want to, and avoids a need to * use a transport-specific userspace libhid/libusb libraries. * - * Copyright (c) 2007 Jiri Kosina + * Copyright (c) 2007-2014 Jiri Kosina */ /* @@ -104,8 +104,11 @@ return ret; } -/* The first byte is expected to be a report number. - * This function is to be called with the minors_lock mutex held */ +/* + * The first byte of the report buffer is expected to be a report number. + * + * This function is to be called with the minors_lock mutex held. + */ static ssize_t hidraw_send_report(struct file *file, const char __user *buffer, size_t count, unsigned char report_type) { unsigned int minor = iminor(file_inode(file)); @@ -157,7 +160,6 @@ return ret; } -/* the first byte is expected to be a report number */ static ssize_t hidraw_write(struct file *file, const char __user *buffer, size_t count, loff_t *ppos) { ssize_t ret; @@ -168,12 +170,15 @@ } -/* This function performs a Get_Report transfer over the control endpoint +/* + * This function performs a Get_Report transfer over the control endpoint * per section 7.2.1 of the HID specification, version 1.1. The first byte * of buffer is the report number to request, or 0x0 if the defice does not * use numbered reports. The report_type parameter can be HID_FEATURE_REPORT - * or HID_INPUT_REPORT. This function is to be called with the minors_lock - * mutex held. */ + * or HID_INPUT_REPORT. + * + * This function is to be called with the minors_lock mutex held. + */ static ssize_t hidraw_get_report(struct file *file, char __user *buffer, size_t count, unsigned char report_type) { unsigned int minor = iminor(file_inode(file)); @@ -184,7 +189,7 @@ dev = hidraw_table[minor]->hid; - if (!dev->hid_get_raw_report) { + if (!dev->ll_driver->raw_request) { ret = -ENODEV; goto out; } @@ -209,14 +214,17 @@ goto out; } - /* Read the first byte from the user. This is the report number, - * which is passed to dev->hid_get_raw_report(). */ + /* + * Read the first byte from the user. This is the report number, + * which is passed to hid_hw_raw_request(). + */ if (copy_from_user(&report_number, buffer, 1)) { ret = -EFAULT; goto out_free; } - ret = dev->hid_get_raw_report(dev, report_number, buf, count, report_type); + ret = hid_hw_raw_request(dev, report_number, buf, count, report_type, + HID_REQ_GET_REPORT); if (ret < 0) goto out_free; @@ -313,13 +321,13 @@ hid_hw_close(hidraw->hid); wake_up_interruptible(&hidraw->wait); } + device_destroy(hidraw_class, + MKDEV(hidraw_major, hidraw->minor)); } else { --hidraw->open; } if (!hidraw->open) { if (!hidraw->exist) { - device_destroy(hidraw_class, - MKDEV(hidraw_major, hidraw->minor)); hidraw_table[hidraw->minor] = NULL; kfree(hidraw); } else { @@ -498,7 +506,7 @@ int minor, result; struct hidraw *dev; - /* we accept any HID device, no matter the applications */ + /* we accept any HID device, all applications */ dev = kzalloc(sizeof(struct hidraw), GFP_KERNEL); if (!dev) --- linux-3.13.0.orig/drivers/hid/i2c-hid/i2c-hid.c +++ linux-3.13.0/drivers/hid/i2c-hid/i2c-hid.c @@ -40,9 +40,9 @@ #include /* flags */ -#define I2C_HID_STARTED (1 << 0) -#define I2C_HID_RESET_PENDING (1 << 1) -#define I2C_HID_READ_PENDING (1 << 2) +#define I2C_HID_STARTED 0 +#define I2C_HID_RESET_PENDING 1 +#define I2C_HID_READ_PENDING 2 #define I2C_HID_PWR_ON 0x00 #define I2C_HID_PWR_SLEEP 0x01 @@ -136,6 +136,7 @@ * descriptor. */ unsigned int bufsize; /* i2c buffer size */ char *inbuf; /* Input buffer */ + char *rawbuf; /* Raw Input buffer */ char *cmdbuf; /* Command buffer */ char *argsbuf; /* Command arguments buffer */ @@ -256,27 +257,43 @@ return 0; } -static int i2c_hid_set_report(struct i2c_client *client, u8 reportType, - u8 reportID, unsigned char *buf, size_t data_len) +/** + * i2c_hid_set_or_send_report: forward an incoming report to the device + * @client: the i2c_client of the device + * @reportType: 0x03 for HID_FEATURE_REPORT ; 0x02 for HID_OUTPUT_REPORT + * @reportID: the report ID + * @buf: the actual data to transfer, without the report ID + * @len: size of buf + * @use_data: true: use SET_REPORT HID command, false: send plain OUTPUT report + */ +static int i2c_hid_set_or_send_report(struct i2c_client *client, u8 reportType, + u8 reportID, unsigned char *buf, size_t data_len, bool use_data) { struct i2c_hid *ihid = i2c_get_clientdata(client); u8 *args = ihid->argsbuf; - const struct i2c_hid_cmd * hidcmd = &hid_set_report_cmd; + const struct i2c_hid_cmd *hidcmd; int ret; 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__); - /* hidraw already checked that data_len < HID_MAX_BUFFER_SIZE */ - u16 size = 2 /* size */ + + if (data_len > ihid->bufsize) + return -EINVAL; + + 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; if (reportID >= 0x0F) { args[index++] = reportID; @@ -287,9 +304,10 @@ * use the data register for feature reports or if the device does not * support the output register */ - if (reportType == 0x03 || maxOutputLength == 0) { + if (use_data) { args[index++] = dataRegister & 0xFF; args[index++] = dataRegister >> 8; + hidcmd = &hid_set_report_cmd; } else { args[index++] = outputRegister & 0xFF; args[index++] = outputRegister >> 8; @@ -357,6 +375,9 @@ int ret, ret_size; int size = le16_to_cpu(ihid->hdesc.wMaxInputLength); + if (size > ihid->bufsize) + size = ihid->bufsize; + ret = i2c_master_recv(ihid->client, ihid->inbuf, size); if (ret != size) { if (ret < 0) @@ -482,9 +503,11 @@ static void i2c_hid_free_buffers(struct i2c_hid *ihid) { kfree(ihid->inbuf); + kfree(ihid->rawbuf); kfree(ihid->argsbuf); kfree(ihid->cmdbuf); ihid->inbuf = NULL; + ihid->rawbuf = NULL; ihid->cmdbuf = NULL; ihid->argsbuf = NULL; ihid->bufsize = 0; @@ -500,10 +523,11 @@ report_size; /* report */ ihid->inbuf = kzalloc(report_size, GFP_KERNEL); + ihid->rawbuf = kzalloc(report_size, GFP_KERNEL); ihid->argsbuf = kzalloc(args_len, GFP_KERNEL); ihid->cmdbuf = kzalloc(sizeof(union command) + args_len, GFP_KERNEL); - if (!ihid->inbuf || !ihid->argsbuf || !ihid->cmdbuf) { + if (!ihid->inbuf || !ihid->rawbuf || !ihid->argsbuf || !ihid->cmdbuf) { i2c_hid_free_buffers(ihid); return -ENOMEM; } @@ -530,12 +554,12 @@ ret = i2c_hid_get_report(client, report_type == HID_FEATURE_REPORT ? 0x03 : 0x01, - report_number, ihid->inbuf, ask_count); + report_number, ihid->rawbuf, ask_count); if (ret < 0) return ret; - ret_count = ihid->inbuf[0] | (ihid->inbuf[1] << 8); + ret_count = ihid->rawbuf[0] | (ihid->rawbuf[1] << 8); if (ret_count <= 2) return 0; @@ -544,13 +568,13 @@ /* The query buffer contains the size, dropping it in the reply */ count = min(count, ret_count - 2); - memcpy(buf, ihid->inbuf + 2, count); + memcpy(buf, ihid->rawbuf + 2, count); return count; } static int i2c_hid_output_raw_report(struct hid_device *hid, __u8 *buf, - size_t count, unsigned char report_type) + size_t count, unsigned char report_type, bool use_data) { struct i2c_client *client = hid->driver_data; int report_id = buf[0]; @@ -564,9 +588,9 @@ count--; } - ret = i2c_hid_set_report(client, + ret = i2c_hid_set_or_send_report(client, report_type == HID_FEATURE_REPORT ? 0x03 : 0x02, - report_id, buf, count); + report_id, buf, count, use_data); if (report_id && ret >= 0) ret++; /* add report_id to the number of transfered bytes */ @@ -574,6 +598,42 @@ return ret; } +static int __i2c_hid_output_raw_report(struct hid_device *hid, __u8 *buf, + size_t count, unsigned char report_type) +{ + struct i2c_client *client = hid->driver_data; + struct i2c_hid *ihid = i2c_get_clientdata(client); + bool data = true; /* SET_REPORT */ + + if (report_type == HID_OUTPUT_REPORT) + data = le16_to_cpu(ihid->hdesc.wMaxOutputLength) == 0; + + return i2c_hid_output_raw_report(hid, buf, count, report_type, data); +} + +static int i2c_hid_output_report(struct hid_device *hid, __u8 *buf, + size_t count) +{ + return i2c_hid_output_raw_report(hid, buf, count, HID_OUTPUT_REPORT, + false); +} + +static int i2c_hid_raw_request(struct hid_device *hid, unsigned char reportnum, + __u8 *buf, size_t len, unsigned char rtype, + int reqtype) +{ + switch (reqtype) { + case HID_REQ_GET_REPORT: + return i2c_hid_get_raw_report(hid, reportnum, buf, len, rtype); + case HID_REQ_SET_REPORT: + if (buf[0] != reportnum) + return -EINVAL; + return i2c_hid_output_raw_report(hid, buf, len, rtype, true); + default: + return -EIO; + } +} + static void i2c_hid_request(struct hid_device *hid, struct hid_report *rep, int reqtype) { @@ -597,7 +657,7 @@ break; case HID_REQ_SET_REPORT: hid_output_report(rep, buf); - i2c_hid_output_raw_report(hid, buf, len, rep->type); + i2c_hid_output_raw_report(hid, buf, len, rep->type, true); break; } @@ -761,6 +821,8 @@ .close = i2c_hid_close, .power = i2c_hid_power, .request = i2c_hid_request, + .output_report = i2c_hid_output_report, + .raw_request = i2c_hid_raw_request, }; static int i2c_hid_init_irq(struct i2c_client *client) @@ -1005,8 +1067,7 @@ hid->driver_data = client; hid->ll_driver = &i2c_hid_ll_driver; - hid->hid_get_raw_report = i2c_hid_get_raw_report; - hid->hid_output_raw_report = i2c_hid_output_raw_report; + hid->hid_output_raw_report = __i2c_hid_output_raw_report; hid->dev.parent = &client->dev; ACPI_COMPANION_SET(&hid->dev, ACPI_COMPANION(&client->dev)); hid->bus = BUS_I2C; --- linux-3.13.0.orig/drivers/hid/uhid.c +++ linux-3.13.0/drivers/hid/uhid.c @@ -377,7 +377,6 @@ hid->uniq[63] = 0; hid->ll_driver = &uhid_hid_driver; - hid->hid_get_raw_report = uhid_hid_get_raw; hid->hid_output_raw_report = uhid_hid_output_raw; hid->bus = ev->u.create.bus; hid->vendor = ev->u.create.vendor; --- linux-3.13.0.orig/drivers/hid/usbhid/hid-core.c +++ linux-3.13.0/drivers/hid/usbhid/hid-core.c @@ -180,7 +180,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); @@ -884,6 +884,38 @@ return ret; } +static int usbhid_set_raw_report(struct hid_device *hid, unsigned int reportnum, + __u8 *buf, size_t count, unsigned char rtype) +{ + struct usbhid_device *usbhid = hid->driver_data; + struct usb_device *dev = hid_to_usb_dev(hid); + struct usb_interface *intf = usbhid->intf; + struct usb_host_interface *interface = intf->cur_altsetting; + int ret, skipped_report_id = 0; + + /* Byte 0 is the report number. Report data starts at byte 1.*/ + buf[0] = reportnum; + if (buf[0] == 0x0) { + /* Don't send the Report ID */ + buf++; + count--; + skipped_report_id = 1; + } + + ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0), + HID_REQ_SET_REPORT, + USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE, + ((rtype + 1) << 8) | reportnum, + interface->desc.bInterfaceNumber, buf, count, + USB_CTRL_SET_TIMEOUT); + /* count also the report id, if this was a numbered report. */ + if (ret > 0 && skipped_report_id) + ret++; + + return ret; +} + + static int usbhid_output_raw_report(struct hid_device *hid, __u8 *buf, size_t count, unsigned char report_type) { @@ -936,6 +968,36 @@ return ret; } +static int usbhid_output_report(struct hid_device *hid, __u8 *buf, size_t count) +{ + struct usbhid_device *usbhid = hid->driver_data; + struct usb_device *dev = hid_to_usb_dev(hid); + int actual_length, skipped_report_id = 0, ret; + + if (!usbhid->urbout) + return -EIO; + + if (buf[0] == 0x0) { + /* Don't send the Report ID */ + buf++; + count--; + skipped_report_id = 1; + } + + ret = usb_interrupt_msg(dev, usbhid->urbout->pipe, + buf, count, &actual_length, + USB_CTRL_SET_TIMEOUT); + /* return the number of bytes transferred */ + if (ret == 0) { + ret = actual_length; + /* count also the report id */ + if (skipped_report_id) + ret++; + } + + return ret; +} + static void usbhid_restart_queues(struct usbhid_device *usbhid) { if (usbhid->urbout && !test_bit(HID_OUT_RUNNING, &usbhid->iofl)) @@ -1200,6 +1262,20 @@ } } +static int usbhid_raw_request(struct hid_device *hid, unsigned char reportnum, + __u8 *buf, size_t len, unsigned char rtype, + int reqtype) +{ + switch (reqtype) { + case HID_REQ_GET_REPORT: + return usbhid_get_raw_report(hid, reportnum, buf, len, rtype); + case HID_REQ_SET_REPORT: + return usbhid_set_raw_report(hid, reportnum, buf, len, rtype); + default: + return -EIO; + } +} + static int usbhid_idle(struct hid_device *hid, int report, int idle, int reqtype) { @@ -1223,6 +1299,8 @@ .power = usbhid_power, .request = usbhid_request, .wait = usbhid_wait_io, + .raw_request = usbhid_raw_request, + .output_report = usbhid_output_report, .idle = usbhid_idle, }; @@ -1253,7 +1331,6 @@ usb_set_intfdata(intf, hid); hid->ll_driver = &usb_hid_driver; - hid->hid_get_raw_report = usbhid_get_raw_report; hid->hid_output_raw_report = usbhid_output_raw_report; hid->ff_init = hid_pidff_init; #ifdef CONFIG_USB_HIDDEV --- linux-3.13.0.orig/drivers/hid/usbhid/hid-quirks.c +++ linux-3.13.0/drivers/hid/usbhid/hid-quirks.c @@ -49,6 +49,7 @@ { USB_VENDOR_ID_EMS, USB_DEVICE_ID_EMS_TRIO_LINKER_PLUS_II, HID_QUIRK_MULTI_INPUT }, { USB_VENDOR_ID_ETURBOTOUCH, USB_DEVICE_ID_ETURBOTOUCH, HID_QUIRK_MULTI_INPUT }, + { USB_VENDOR_ID_ETURBOTOUCH, USB_DEVICE_ID_ETURBOTOUCH_2968, HID_QUIRK_MULTI_INPUT }, { USB_VENDOR_ID_GREENASIA, USB_DEVICE_ID_GREENASIA_DUAL_USB_JOYPAD, HID_QUIRK_MULTI_INPUT }, { USB_VENDOR_ID_PANTHERLORD, USB_DEVICE_ID_PANTHERLORD_TWIN_USB_JOYSTICK, HID_QUIRK_MULTI_INPUT | HID_QUIRK_SKIP_OUTPUT_REPORTS }, { USB_VENDOR_ID_PLAYDOTCOM, USB_DEVICE_ID_PLAYDOTCOM_EMS_USBII, HID_QUIRK_MULTI_INPUT }, @@ -115,6 +116,7 @@ { USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_LTS1, HID_QUIRK_NO_INIT_REPORTS }, { USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_LTS2, HID_QUIRK_NO_INIT_REPORTS }, { USB_VENDOR_ID_SIS, USB_DEVICE_ID_SIS_TS, HID_QUIRK_NO_INIT_REPORTS }, + { USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_TP_V103, HID_QUIRK_NO_INIT_REPORTS }, { 0, 0 } }; --- linux-3.13.0.orig/drivers/hid/usbhid/hiddev.c +++ linux-3.13.0/drivers/hid/usbhid/hiddev.c @@ -516,13 +516,13 @@ goto inval; } else if (uref->usage_index >= field->report_count) goto inval; - - else if ((cmd == HIDIOCGUSAGES || cmd == HIDIOCSUSAGES) && - (uref_multi->num_values > HID_MAX_MULTI_USAGES || - uref->usage_index + uref_multi->num_values > field->report_count)) - goto inval; } + if ((cmd == HIDIOCGUSAGES || cmd == HIDIOCSUSAGES) && + (uref_multi->num_values > HID_MAX_MULTI_USAGES || + uref->usage_index + uref_multi->num_values > field->report_count)) + goto inval; + switch (cmd) { case HIDIOCGUSAGE: uref->value = field->value[uref->usage_index]; --- linux-3.13.0.orig/drivers/hv/Makefile +++ linux-3.13.0/drivers/hv/Makefile @@ -5,4 +5,4 @@ hv_vmbus-y := vmbus_drv.o \ hv.o connection.o channel.o \ channel_mgmt.o ring_buffer.o -hv_utils-y := hv_util.o hv_kvp.o hv_snapshot.o +hv_utils-y := hv_util.o hv_kvp.o hv_snapshot.o hv_fcopy.o --- linux-3.13.0.orig/drivers/hv/channel.c +++ linux-3.13.0/drivers/hv/channel.c @@ -27,6 +27,7 @@ #include #include #include +#include #include "hyperv_vmbus.h" @@ -134,7 +135,7 @@ GFP_KERNEL); if (!open_info) { err = -ENOMEM; - goto error0; + goto error_gpadl; } init_completion(&open_info->waitevent); @@ -150,7 +151,7 @@ if (userdatalen > MAX_USER_DEFINED_BYTES) { err = -EINVAL; - goto error0; + goto error_gpadl; } if (userdatalen) @@ -164,8 +165,10 @@ ret = vmbus_post_msg(open_msg, sizeof(struct vmbus_channel_open_channel)); - if (ret != 0) + if (ret != 0) { + err = ret; goto error1; + } t = wait_for_completion_timeout(&open_info->waitevent, 5*HZ); if (t == 0) { @@ -192,6 +195,9 @@ list_del(&open_info->msglistentry); spin_unlock_irqrestore(&vmbus_connection.channelmsg_lock, flags); +error_gpadl: + vmbus_teardown_gpadl(newchannel, newchannel->ringbuffer_gpadlhandle); + error0: free_pages((unsigned long)out, get_order(send_ringbuffer_size + recv_ringbuffer_size)); @@ -209,7 +215,6 @@ { int i; int pagecount; - unsigned long long pfn; struct vmbus_channel_gpadl_header *gpadl_header; struct vmbus_channel_gpadl_body *gpadl_body; struct vmbus_channel_msginfo *msgheader; @@ -219,7 +224,6 @@ int pfnsum, pfncount, pfnleft, pfncurr, pfnsize; pagecount = size >> PAGE_SHIFT; - pfn = virt_to_phys(kbuffer) >> PAGE_SHIFT; /* do we need a gpadl body msg */ pfnsize = MAX_SIZE_CHANNEL_MESSAGE - @@ -248,7 +252,8 @@ gpadl_header->range[0].byte_offset = 0; gpadl_header->range[0].byte_count = size; for (i = 0; i < pfncount; i++) - gpadl_header->range[0].pfn_array[i] = pfn+i; + gpadl_header->range[0].pfn_array[i] = slow_virt_to_phys( + kbuffer + PAGE_SIZE * i) >> PAGE_SHIFT; *msginfo = msgheader; *messagecount = 1; @@ -301,7 +306,9 @@ * so the hypervisor gurantees that this is ok. */ for (i = 0; i < pfncurr; i++) - gpadl_body->pfn[i] = pfn + pfnsum + i; + gpadl_body->pfn[i] = slow_virt_to_phys( + kbuffer + PAGE_SIZE * (pfnsum + i)) >> + PAGE_SHIFT; /* add to msg header */ list_add_tail(&msgbody->msglistentry, @@ -327,7 +334,8 @@ gpadl_header->range[0].byte_offset = 0; gpadl_header->range[0].byte_count = size; for (i = 0; i < pagecount; i++) - gpadl_header->range[0].pfn_array[i] = pfn+i; + gpadl_header->range[0].pfn_array[i] = slow_virt_to_phys( + kbuffer + PAGE_SIZE * i) >> PAGE_SHIFT; *msginfo = msgheader; *messagecount = 1; @@ -344,7 +352,7 @@ * vmbus_establish_gpadl - Estabish a GPADL for the specified buffer * * @channel: a channel - * @kbuffer: from kmalloc + * @kbuffer: from kmalloc or vmalloc * @size: page-size multiple * @gpadl_handle: some funky thing */ @@ -360,7 +368,6 @@ u32 next_gpadl_handle; unsigned long flags; int ret = 0; - int t; next_gpadl_handle = atomic_read(&vmbus_connection.next_gpadl_handle); atomic_inc(&vmbus_connection.next_gpadl_handle); @@ -407,9 +414,7 @@ } } - t = wait_for_completion_timeout(&msginfo->waitevent, 5*HZ); - BUG_ON(t == 0); - + wait_for_completion(&msginfo->waitevent); /* At this point, we received the gpadl created msg */ *gpadl_handle = gpadlmsg->gpadl; @@ -432,7 +437,7 @@ struct vmbus_channel_gpadl_teardown *msg; struct vmbus_channel_msginfo *info; unsigned long flags; - int ret, t; + int ret; info = kmalloc(sizeof(*info) + sizeof(struct vmbus_channel_gpadl_teardown), GFP_KERNEL); @@ -454,11 +459,12 @@ ret = vmbus_post_msg(msg, sizeof(struct vmbus_channel_gpadl_teardown)); - BUG_ON(ret != 0); - t = wait_for_completion_timeout(&info->waitevent, 5*HZ); - BUG_ON(t == 0); + if (ret) + goto post_msg_err; + + wait_for_completion(&info->waitevent); - /* Received a torndown response */ +post_msg_err: spin_lock_irqsave(&vmbus_connection.channelmsg_lock, flags); list_del(&info->msglistentry); spin_unlock_irqrestore(&vmbus_connection.channelmsg_lock, flags); @@ -468,18 +474,26 @@ } EXPORT_SYMBOL_GPL(vmbus_teardown_gpadl); +static void reset_channel_cb(void *arg) +{ + struct vmbus_channel *channel = arg; + + channel->onchannel_callback = NULL; +} + static void vmbus_close_internal(struct vmbus_channel *channel) { struct vmbus_channel_close_channel *msg; int ret; - unsigned long flags; channel->state = CHANNEL_OPEN_STATE; channel->sc_creation_callback = NULL; /* Stop callback and cancel the timer asap */ - spin_lock_irqsave(&channel->inbound_lock, flags); - channel->onchannel_callback = NULL; - spin_unlock_irqrestore(&channel->inbound_lock, flags); + if (channel->target_cpu != smp_processor_id()) + smp_call_function_single(channel->target_cpu, reset_channel_cb, + channel, true); + else + reset_channel_cb(channel); /* Send a closing message */ @@ -490,11 +504,28 @@ ret = vmbus_post_msg(msg, sizeof(struct vmbus_channel_close_channel)); - BUG_ON(ret != 0); + if (ret) { + pr_err("Close failed: close post msg return is %d\n", ret); + /* + * If we failed to post the close msg, + * it is perhaps better to leak memory. + */ + return ret; + } + /* Tear down the gpadl for the channel's ring buffer */ - if (channel->ringbuffer_gpadlhandle) - vmbus_teardown_gpadl(channel, - channel->ringbuffer_gpadlhandle); + if (channel->ringbuffer_gpadlhandle) { + ret = vmbus_teardown_gpadl(channel, + channel->ringbuffer_gpadlhandle); + if (ret) { + pr_err("Close failed: teardown gpadl return %d\n", ret); + /* + * If we failed to teardown gpadl, + * it is perhaps better to leak memory. + */ + return ret; + } + } /* Cleanup the ring buffers for this channel */ hv_ringbuffer_cleanup(&channel->outbound); @@ -503,7 +534,7 @@ free_pages((unsigned long)channel->ringbuffer_pages, get_order(channel->ringbuffer_pagecount * PAGE_SIZE)); - + return ret; } /* @@ -538,28 +569,14 @@ } EXPORT_SYMBOL_GPL(vmbus_close); -/** - * vmbus_sendpacket() - Send the specified buffer on the given channel - * @channel: Pointer to vmbus_channel structure. - * @buffer: Pointer to the buffer you want to receive the data into. - * @bufferlen: Maximum size of what the the buffer will hold - * @requestid: Identifier of the request - * @type: Type of packet that is being send e.g. negotiate, time - * packet etc. - * - * Sends data in @buffer directly to hyper-v via the vmbus - * This will send the data unparsed to hyper-v. - * - * Mainly used by Hyper-V drivers. - */ -int vmbus_sendpacket(struct vmbus_channel *channel, const void *buffer, +int vmbus_sendpacket_ctl(struct vmbus_channel *channel, void *buffer, u32 bufferlen, u64 requestid, - enum vmbus_packet_type type, u32 flags) + enum vmbus_packet_type type, u32 flags, bool kick_q) { struct vmpacket_descriptor desc; u32 packetlen = sizeof(struct vmpacket_descriptor) + bufferlen; u32 packetlen_aligned = ALIGN(packetlen, sizeof(u64)); - struct scatterlist bufferlist[3]; + struct kvec bufferlist[3]; u64 aligned_data = 0; int ret; bool signal = false; @@ -573,29 +590,79 @@ desc.len8 = (u16)(packetlen_aligned >> 3); desc.trans_id = requestid; - sg_init_table(bufferlist, 3); - sg_set_buf(&bufferlist[0], &desc, sizeof(struct vmpacket_descriptor)); - sg_set_buf(&bufferlist[1], buffer, bufferlen); - sg_set_buf(&bufferlist[2], &aligned_data, - packetlen_aligned - packetlen); + bufferlist[0].iov_base = &desc; + bufferlist[0].iov_len = sizeof(struct vmpacket_descriptor); + bufferlist[1].iov_base = buffer; + bufferlist[1].iov_len = bufferlen; + bufferlist[2].iov_base = &aligned_data; + bufferlist[2].iov_len = (packetlen_aligned - packetlen); ret = hv_ringbuffer_write(&channel->outbound, bufferlist, 3, &signal); - if (ret == 0 && signal) + /* + * Signalling the host is conditional on many factors: + * 1. The ring state changed from being empty to non-empty. + * This is tracked by the variable "signal". + * 2. The variable kick_q tracks if more data will be placed + * 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); return ret; } +EXPORT_SYMBOL(vmbus_sendpacket_ctl); + +/** + * vmbus_sendpacket() - Send the specified buffer on the given channel + * @channel: Pointer to vmbus_channel structure. + * @buffer: Pointer to the buffer you want to receive the data into. + * @bufferlen: Maximum size of what the the buffer will hold + * @requestid: Identifier of the request + * @type: Type of packet that is being send e.g. negotiate, time + * packet etc. + * + * Sends data in @buffer directly to hyper-v via the vmbus + * This will send the data unparsed to hyper-v. + * + * Mainly used by Hyper-V drivers. + */ +int vmbus_sendpacket(struct vmbus_channel *channel, void *buffer, + u32 bufferlen, u64 requestid, + enum vmbus_packet_type type, u32 flags) +{ + return vmbus_sendpacket_ctl(channel, buffer, bufferlen, requestid, + type, flags, true); +} EXPORT_SYMBOL(vmbus_sendpacket); /* - * vmbus_sendpacket_pagebuffer - Send a range of single-page buffer - * packets using a GPADL Direct packet type. + * vmbus_sendpacket_pagebuffer_ctl - Send a range of single-page buffer + * packets using a GPADL Direct packet type. This interface allows you + * to control notifying the host. This will be useful for sending + * batched data. Also the sender can control the send flags + * explicitly. */ -int vmbus_sendpacket_pagebuffer(struct vmbus_channel *channel, +int vmbus_sendpacket_pagebuffer_ctl(struct vmbus_channel *channel, struct hv_page_buffer pagebuffers[], u32 pagecount, void *buffer, u32 bufferlen, - u64 requestid) + u64 requestid, + u32 flags, + bool kick_q) { int ret; int i; @@ -603,7 +670,7 @@ u32 descsize; u32 packetlen; u32 packetlen_aligned; - struct scatterlist bufferlist[3]; + struct kvec bufferlist[3]; u64 aligned_data = 0; bool signal = false; @@ -623,7 +690,7 @@ /* Setup the descriptor */ desc.type = VM_PKT_DATA_USING_GPA_DIRECT; - desc.flags = VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED; + desc.flags = flags; desc.dataoffset8 = descsize >> 3; /* in 8-bytes grandularity */ desc.length8 = (u16)(packetlen_aligned >> 3); desc.transactionid = requestid; @@ -635,24 +702,107 @@ desc.range[i].pfn = pagebuffers[i].pfn; } - sg_init_table(bufferlist, 3); - sg_set_buf(&bufferlist[0], &desc, descsize); - sg_set_buf(&bufferlist[1], buffer, bufferlen); - sg_set_buf(&bufferlist[2], &aligned_data, - packetlen_aligned - packetlen); + bufferlist[0].iov_base = &desc; + bufferlist[0].iov_len = descsize; + bufferlist[1].iov_base = buffer; + bufferlist[1].iov_len = bufferlen; + bufferlist[2].iov_base = &aligned_data; + bufferlist[2].iov_len = (packetlen_aligned - packetlen); ret = hv_ringbuffer_write(&channel->outbound, bufferlist, 3, &signal); - if (ret == 0 && signal) + /* + * Signalling the host is conditional on many factors: + * 1. The ring state changed from being empty to non-empty. + * This is tracked by the variable "signal". + * 2. The variable kick_q tracks if more data will be placed + * 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); return ret; } +EXPORT_SYMBOL_GPL(vmbus_sendpacket_pagebuffer_ctl); + +/* + * vmbus_sendpacket_pagebuffer - Send a range of single-page buffer + * packets using a GPADL Direct packet type. + */ +int vmbus_sendpacket_pagebuffer(struct vmbus_channel *channel, + struct hv_page_buffer pagebuffers[], + u32 pagecount, void *buffer, u32 bufferlen, + u64 requestid) +{ + u32 flags = VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED; + return vmbus_sendpacket_pagebuffer_ctl(channel, pagebuffers, pagecount, + buffer, bufferlen, requestid, + flags, true); + +} EXPORT_SYMBOL_GPL(vmbus_sendpacket_pagebuffer); /* * vmbus_sendpacket_multipagebuffer - Send a multi-page buffer packet * using a GPADL Direct packet type. + * The buffer includes the vmbus descriptor. + */ +int vmbus_sendpacket_mpb_desc(struct vmbus_channel *channel, + struct vmbus_packet_mpb_array *desc, + u32 desc_size, + void *buffer, u32 bufferlen, u64 requestid) +{ + int ret; + u32 packetlen; + u32 packetlen_aligned; + struct kvec bufferlist[3]; + u64 aligned_data = 0; + bool signal = false; + + packetlen = desc_size + bufferlen; + packetlen_aligned = ALIGN(packetlen, sizeof(u64)); + + /* Setup the descriptor */ + desc->type = VM_PKT_DATA_USING_GPA_DIRECT; + desc->flags = VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED; + desc->dataoffset8 = desc_size >> 3; /* in 8-bytes grandularity */ + desc->length8 = (u16)(packetlen_aligned >> 3); + desc->transactionid = requestid; + desc->rangecount = 1; + + bufferlist[0].iov_base = desc; + bufferlist[0].iov_len = desc_size; + bufferlist[1].iov_base = buffer; + bufferlist[1].iov_len = bufferlen; + bufferlist[2].iov_base = &aligned_data; + bufferlist[2].iov_len = (packetlen_aligned - packetlen); + + ret = hv_ringbuffer_write(&channel->outbound, bufferlist, 3, &signal); + + if (ret == 0 && signal) + vmbus_setevent(channel); + + return ret; +} +EXPORT_SYMBOL_GPL(vmbus_sendpacket_mpb_desc); + +/* + * vmbus_sendpacket_multipagebuffer - Send a multi-page buffer packet + * using a GPADL Direct packet type. */ int vmbus_sendpacket_multipagebuffer(struct vmbus_channel *channel, struct hv_multipage_buffer *multi_pagebuffer, @@ -663,7 +813,7 @@ u32 descsize; u32 packetlen; u32 packetlen_aligned; - struct scatterlist bufferlist[3]; + struct kvec bufferlist[3]; u64 aligned_data = 0; bool signal = false; u32 pfncount = NUM_PAGES_SPANNED(multi_pagebuffer->offset, @@ -698,11 +848,12 @@ memcpy(desc.range.pfn_array, multi_pagebuffer->pfn_array, pfncount * sizeof(u64)); - sg_init_table(bufferlist, 3); - sg_set_buf(&bufferlist[0], &desc, descsize); - sg_set_buf(&bufferlist[1], buffer, bufferlen); - sg_set_buf(&bufferlist[2], &aligned_data, - packetlen_aligned - packetlen); + bufferlist[0].iov_base = &desc; + bufferlist[0].iov_len = descsize; + bufferlist[1].iov_base = buffer; + bufferlist[1].iov_len = bufferlen; + bufferlist[2].iov_base = &aligned_data; + bufferlist[2].iov_len = (packetlen_aligned - packetlen); ret = hv_ringbuffer_write(&channel->outbound, bufferlist, 3, &signal); --- linux-3.13.0.orig/drivers/hv/channel_mgmt.c +++ linux-3.13.0/drivers/hv/channel_mgmt.c @@ -149,6 +149,7 @@ spin_lock_init(&channel->sc_lock); INIT_LIST_HEAD(&channel->sc_list); + INIT_LIST_HEAD(&channel->percpu_list); channel->controlwq = create_workqueue("hv_vmbus_ctl"); if (!channel->controlwq) { @@ -188,7 +189,20 @@ queue_work(vmbus_connection.work_queue, &channel->work); } +static void percpu_channel_enq(void *arg) +{ + struct vmbus_channel *channel = arg; + int cpu = smp_processor_id(); + + list_add_tail(&channel->percpu_list, &hv_context.percpu_list[cpu]); +} +static void percpu_channel_deq(void *arg) +{ + struct vmbus_channel *channel = arg; + + list_del(&channel->percpu_list); +} /* * vmbus_process_rescind_offer - @@ -202,14 +216,27 @@ unsigned long flags; struct vmbus_channel *primary_channel; struct vmbus_channel_relid_released msg; + struct device *dev; + + if (channel->device_obj) { + dev = get_device(&channel->device_obj->device); + if (dev) { + vmbus_device_unregister(channel->device_obj); + put_device(dev); + } + } - if (channel->device_obj) - vmbus_device_unregister(channel->device_obj); memset(&msg, 0, sizeof(struct vmbus_channel_relid_released)); msg.child_relid = channel->offermsg.child_relid; msg.header.msgtype = CHANNELMSG_RELID_RELEASED; vmbus_post_msg(&msg, sizeof(struct vmbus_channel_relid_released)); + if (channel->target_cpu != smp_processor_id()) + smp_call_function_single(channel->target_cpu, + percpu_channel_deq, channel, true); + else + percpu_channel_deq(channel); + if (channel->primary_channel == NULL) { spin_lock_irqsave(&vmbus_connection.channel_lock, flags); list_del(&channel->listentry); @@ -245,6 +272,7 @@ work); struct vmbus_channel *channel; bool fnew = true; + bool enq = false; int ret; unsigned long flags; @@ -264,12 +292,22 @@ } } - if (fnew) + if (fnew) { list_add_tail(&newchannel->listentry, &vmbus_connection.chn_list); + enq = true; + } spin_unlock_irqrestore(&vmbus_connection.channel_lock, flags); + if (enq) { + if (newchannel->target_cpu != smp_processor_id()) + smp_call_function_single(newchannel->target_cpu, + percpu_channel_enq, + newchannel, true); + else + percpu_channel_enq(newchannel); + } if (!fnew) { /* * Check to see if this is a sub-channel. @@ -282,6 +320,14 @@ spin_lock_irqsave(&channel->sc_lock, flags); list_add_tail(&newchannel->sc_list, &channel->sc_list); spin_unlock_irqrestore(&channel->sc_lock, flags); + + if (newchannel->target_cpu != smp_processor_id()) + smp_call_function_single(newchannel->target_cpu, + percpu_channel_enq, + newchannel, true); + else + percpu_channel_enq(newchannel); + newchannel->state = CHANNEL_OPEN_STATE; if (channel->sc_creation_callback != NULL) channel->sc_creation_callback(newchannel); @@ -365,7 +411,7 @@ * performance critical channels (IDE, SCSI and Network) will be uniformly * distributed across all available CPUs. */ -static u32 get_vp_index(uuid_le *type_guid) +static void init_vp_index(struct vmbus_channel *channel, uuid_le *type_guid) { u32 cur_cpu; int i; @@ -387,10 +433,13 @@ * Also if the channel is not a performance critical * channel, bind it to cpu 0. */ - return 0; + channel->target_cpu = 0; + channel->target_vp = 0; + return; } cur_cpu = (++next_vp % max_cpus); - return hv_context.vp_index[cur_cpu]; + channel->target_cpu = cur_cpu; + channel->target_vp = hv_context.vp_index[cur_cpu]; } /* @@ -438,7 +487,7 @@ offer->connection_id; } - newchannel->target_vp = get_vp_index(&offer->offer.if_type); + init_vp_index(newchannel, &offer->offer.if_type); memcpy(&newchannel->offermsg, offer, sizeof(struct vmbus_channel_offer_channel)); @@ -709,7 +758,7 @@ { struct vmbus_channel_message_header *msg; struct vmbus_channel_msginfo *msginfo; - int ret, t; + int ret; msginfo = kmalloc(sizeof(*msginfo) + sizeof(struct vmbus_channel_message_header), @@ -717,8 +766,6 @@ if (!msginfo) return -ENOMEM; - init_completion(&msginfo->waitevent); - msg = (struct vmbus_channel_message_header *)msginfo->msg; msg->msgtype = CHANNELMSG_REQUESTOFFERS; @@ -732,14 +779,6 @@ goto cleanup; } - t = wait_for_completion_timeout(&msginfo->waitevent, 5*HZ); - if (t == 0) { - ret = -ETIMEDOUT; - goto cleanup; - } - - - cleanup: kfree(msginfo); --- linux-3.13.0.orig/drivers/hv/connection.c +++ linux-3.13.0/drivers/hv/connection.c @@ -55,6 +55,9 @@ case (VERSION_WIN8): return VERSION_WIN7; + case (VERSION_WIN8_1): + return VERSION_WIN8; + case (VERSION_WS2008): default: return VERSION_INVAL; @@ -67,7 +70,6 @@ int ret = 0; struct vmbus_channel_initiate_contact *msg; unsigned long flags; - int t; init_completion(&msginfo->waitevent); @@ -78,6 +80,8 @@ msg->interrupt_page = virt_to_phys(vmbus_connection.int_page); msg->monitor_page1 = virt_to_phys(vmbus_connection.monitor_pages[0]); msg->monitor_page2 = virt_to_phys(vmbus_connection.monitor_pages[1]); + if (version == VERSION_WIN8_1) + msg->target_vcpu = hv_context.vp_index[smp_processor_id()]; /* * Add to list before we send the request since we may @@ -100,15 +104,7 @@ } /* Wait for the connection response */ - t = wait_for_completion_timeout(&msginfo->waitevent, 5*HZ); - if (t == 0) { - spin_lock_irqsave(&vmbus_connection.channelmsg_lock, - flags); - list_del(&msginfo->msglistentry); - spin_unlock_irqrestore(&vmbus_connection.channelmsg_lock, - flags); - return -ETIMEDOUT; - } + wait_for_completion(&msginfo->waitevent); spin_lock_irqsave(&vmbus_connection.channelmsg_lock, flags); list_del(&msginfo->msglistentry); @@ -228,8 +224,8 @@ vmbus_connection.int_page = NULL; } - free_pages((unsigned long)vmbus_connection.monitor_pages[0], 1); - free_pages((unsigned long)vmbus_connection.monitor_pages[1], 1); + free_pages((unsigned long)vmbus_connection.monitor_pages[0], 0); + free_pages((unsigned long)vmbus_connection.monitor_pages[1], 0); vmbus_connection.monitor_pages[0] = NULL; vmbus_connection.monitor_pages[1] = NULL; @@ -238,6 +234,28 @@ return ret; } +/* + * Map the given relid to the corresponding channel based on the + * per-cpu list of channels that have been affinitized to this CPU. + * This will be used in the channel callback path as we can do this + * mapping in a lock-free fashion. + */ +static struct vmbus_channel *pcpu_relid2channel(u32 relid) +{ + struct vmbus_channel *channel; + struct vmbus_channel *found_channel = NULL; + int cpu = smp_processor_id(); + struct list_head *pcpu_head = &hv_context.percpu_list[cpu]; + + list_for_each_entry(channel, pcpu_head, percpu_list) { + if (channel->offermsg.child_relid == relid) { + found_channel = channel; + break; + } + } + + return found_channel; +} /* * relid2channel - Get the channel object given its @@ -281,7 +299,6 @@ static void process_chn_event(u32 relid) { struct vmbus_channel *channel; - unsigned long flags; void *arg; bool read_state; u32 bytes_to_read; @@ -290,7 +307,7 @@ * Find the channel based on this relid and invokes the * channel callback to process the event */ - channel = relid2channel(relid); + channel = pcpu_relid2channel(relid); if (!channel) { pr_err("channel not found for relid - %u\n", relid); @@ -300,13 +317,12 @@ /* * A channel once created is persistent even when there * is no driver handling the device. An unloading driver - * sets the onchannel_callback to NULL under the - * protection of the channel inbound_lock. Thus, checking - * and invoking the driver specific callback takes care of - * orderly unloading of the driver. + * sets the onchannel_callback to NULL on the same CPU + * as where this interrupt is handled (in an interrupt context). + * Thus, checking and invoking the driver specific callback takes + * care of orderly unloading of the driver. */ - spin_lock_irqsave(&channel->inbound_lock, flags); if (channel->onchannel_callback != NULL) { arg = channel->channel_callback_context; read_state = channel->batched_reading; @@ -323,15 +339,18 @@ */ do { - hv_begin_read(&channel->inbound); + if (read_state) + hv_begin_read(&channel->inbound); channel->onchannel_callback(arg); - bytes_to_read = hv_end_read(&channel->inbound); + if (read_state) + bytes_to_read = hv_end_read(&channel->inbound); + else + bytes_to_read = 0; } while (read_state && (bytes_to_read != 0)); } else { pr_err("no channel callback for relid - %u\n", relid); } - spin_unlock_irqrestore(&channel->inbound_lock, flags); } /* @@ -408,10 +427,21 @@ * insufficient resources. Retry the operation a couple of * times before giving up. */ - while (retries < 3) { - ret = hv_post_message(conn_id, 1, buffer, buflen); - if (ret != HV_STATUS_INSUFFICIENT_BUFFERS) + while (retries < 10) { + ret = hv_post_message(conn_id, 1, buffer, buflen); + + switch (ret) { + case HV_STATUS_INSUFFICIENT_BUFFERS: + ret = -ENOMEM; + case -ENOMEM: + break; + case HV_STATUS_SUCCESS: return ret; + default: + pr_err("hv_post_msg() failed; error code:%d\n", ret); + return -EINVAL; + } + retries++; msleep(100); } --- linux-3.13.0.orig/drivers/hv/hv.c +++ linux-3.13.0/drivers/hv/hv.c @@ -31,6 +31,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, @@ -138,6 +146,8 @@ memset(hv_context.synic_event_page, 0, sizeof(void *) * NR_CPUS); memset(hv_context.synic_message_page, 0, sizeof(void *) * NR_CPUS); + memset(hv_context.post_msg_page, 0, + sizeof(void *) * NR_CPUS); memset(hv_context.vp_index, 0, sizeof(int) * NR_CPUS); memset(hv_context.event_dpc, 0, @@ -148,7 +158,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 */ @@ -217,26 +227,18 @@ enum hv_message_type message_type, void *payload, size_t payload_size) { - struct aligned_input { - u64 alignment8; - struct hv_input_post_message msg; - }; struct hv_input_post_message *aligned_msg; u16 status; - unsigned long addr; if (payload_size > HV_MESSAGE_PAYLOAD_BYTE_COUNT) return -EMSGSIZE; - addr = (unsigned long)kmalloc(sizeof(struct aligned_input), GFP_ATOMIC); - if (!addr) - return -ENOMEM; - aligned_msg = (struct hv_input_post_message *) - (ALIGN(addr, HV_HYPERCALL_PARAM_ALIGN)); + hv_context.post_msg_page[get_cpu()]; aligned_msg->connectionid = connection_id; + aligned_msg->reserved = 0; aligned_msg->message_type = message_type; aligned_msg->payload_size = payload_size; memcpy((void *)aligned_msg->payload, payload, payload_size); @@ -244,8 +246,7 @@ status = do_hypercall(HVCALL_POST_MESSAGE, aligned_msg, NULL) & 0xFFFF; - kfree((void *)addr); - + put_cpu(); return status; } @@ -294,6 +295,14 @@ pr_err("Unable to allocate SYNIC event page\n"); goto err; } + + hv_context.post_msg_page[cpu] = + (void *)get_zeroed_page(GFP_ATOMIC); + + if (hv_context.post_msg_page[cpu] == NULL) { + pr_err("Unable to allocate post msg page\n"); + goto err; + } } return 0; @@ -308,6 +317,8 @@ free_page((unsigned long)hv_context.synic_event_page[cpu]); if (hv_context.synic_message_page[cpu]) free_page((unsigned long)hv_context.synic_message_page[cpu]); + if (hv_context.post_msg_page[cpu]) + free_page((unsigned long)hv_context.post_msg_page[cpu]); } void hv_synic_free(void) @@ -383,6 +394,8 @@ */ rdmsrl(HV_X64_MSR_VP_INDEX, vp_index); hv_context.vp_index[cpu] = (u32)vp_index; + + INIT_LIST_HEAD(&hv_context.percpu_list[cpu]); return; } --- linux-3.13.0.orig/drivers/hv/hv_balloon.c +++ linux-3.13.0/drivers/hv/hv_balloon.c @@ -19,6 +19,7 @@ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt #include +#include #include #include #include @@ -459,6 +460,11 @@ */ static uint pressure_report_delay = 45; +/* + * The last time we posted a pressure report to host. + */ +static unsigned long last_post_time; + module_param(hot_add, bool, (S_IRUGO | S_IWUSR)); MODULE_PARM_DESC(hot_add, "If set attempt memory hot_add"); @@ -527,6 +533,9 @@ */ struct task_struct *thread; + struct mutex ha_region_mutex; + struct completion waiter_event; + /* * A list of hot-add regions. */ @@ -542,7 +551,62 @@ static struct hv_dynmem_device dm_device; +static void post_status(struct hv_dynmem_device *dm); + #ifdef CONFIG_MEMORY_HOTPLUG +static void acquire_region_mutex(bool trylock) +{ + if (trylock) { + reinit_completion(&dm_device.waiter_event); + while (!mutex_trylock(&dm_device.ha_region_mutex)) + wait_for_completion(&dm_device.waiter_event); + } else { + mutex_lock(&dm_device.ha_region_mutex); + } +} + +static void release_region_mutex(bool trylock) +{ + if (trylock) { + mutex_unlock(&dm_device.ha_region_mutex); + } else { + mutex_unlock(&dm_device.ha_region_mutex); + complete(&dm_device.waiter_event); + } +} + +static int hv_memory_notifier(struct notifier_block *nb, unsigned long val, + void *v) +{ + switch (val) { + case MEM_GOING_ONLINE: + acquire_region_mutex(true); + break; + + case MEM_ONLINE: + case MEM_CANCEL_ONLINE: + if (val == MEM_ONLINE || + mutex_is_locked(&dm_device.ha_region_mutex)) + mutex_unlock(&dm_device.ha_region_mutex); + if (dm_device.ha_waiting) { + dm_device.ha_waiting = false; + complete(&dm_device.ol_waitevent); + } + break; + + case MEM_GOING_OFFLINE: + case MEM_OFFLINE: + case MEM_CANCEL_OFFLINE: + break; + } + return NOTIFY_OK; +} + +static struct notifier_block hv_memory_nb = { + .notifier_call = hv_memory_notifier, + .priority = 0 +}; + static void hv_bring_pgs_online(unsigned long start_pfn, unsigned long size) { @@ -584,6 +648,7 @@ init_completion(&dm_device.ol_waitevent); dm_device.ha_waiting = true; + release_region_mutex(false); nid = memory_add_physaddr_to_nid(PFN_PHYS(start_pfn)); ret = add_memory(nid, PFN_PHYS((start_pfn)), (HA_CHUNK << PAGE_SHIFT)); @@ -612,7 +677,8 @@ * have not been "onlined" within the allowed time. */ wait_for_completion_timeout(&dm_device.ol_waitevent, 5*HZ); - + acquire_region_mutex(false); + post_status(&dm_device); } return; @@ -625,11 +691,6 @@ unsigned long cur_start_pgp; unsigned long cur_end_pgp; - if (dm_device.ha_waiting) { - dm_device.ha_waiting = false; - complete(&dm_device.ol_waitevent); - } - list_for_each(cur, &dm_device.ha_region_list) { has = list_entry(cur, struct hv_hotadd_state, list); cur_start_pgp = (unsigned long) @@ -827,6 +888,7 @@ resp.hdr.size = sizeof(struct dm_hot_add_response); #ifdef CONFIG_MEMORY_HOTPLUG + acquire_region_mutex(false); pg_start = dm->ha_wrk.ha_page_range.finfo.start_page; pfn_cnt = dm->ha_wrk.ha_page_range.finfo.page_cnt; @@ -858,6 +920,7 @@ if (do_hot_add) resp.page_count = process_hot_add(pg_start, pfn_cnt, rg_start, rg_sz); + release_region_mutex(false); #endif /* * The result field of the response structure has the @@ -951,11 +1014,17 @@ { struct dm_status status; struct sysinfo val; + unsigned long now = jiffies; + unsigned long last_post = last_post_time; if (pressure_report_delay > 0) { --pressure_report_delay; return; } + + if (!time_after(now, (last_post_time + HZ))) + return; + si_meminfo(&val); memset(&status, 0, sizeof(struct dm_status)); status.hdr.type = DM_STATUS_REPORT; @@ -983,6 +1052,14 @@ if (status.hdr.trans_id != atomic_read(&trans_id)) return; + /* + * If the last post time that we sampled has changed, + * we have raced, don't post the status. + */ + if (last_post != last_post_time) + return; + + last_post_time = jiffies; vmbus_sendpacket(dm->dev->channel, &status, sizeof(struct dm_status), (unsigned long)NULL, @@ -1007,11 +1084,12 @@ -static int alloc_balloon_pages(struct hv_dynmem_device *dm, int num_pages, - struct dm_balloon_response *bl_resp, int alloc_unit, - bool *alloc_error) +static unsigned int alloc_balloon_pages(struct hv_dynmem_device *dm, + unsigned int num_pages, + struct dm_balloon_response *bl_resp, + int alloc_unit) { - int i = 0; + unsigned int i = 0; struct page *pg; if (num_pages < alloc_unit) @@ -1030,11 +1108,8 @@ __GFP_NOMEMALLOC | __GFP_NOWARN, get_order(alloc_unit << PAGE_SHIFT)); - if (!pg) { - *alloc_error = true; + if (!pg) return i * alloc_unit; - } - dm->num_pages_ballooned += alloc_unit; @@ -1061,15 +1136,18 @@ static void balloon_up(struct work_struct *dummy) { - int num_pages = dm_device.balloon_wrk.num_pages; - int num_ballooned = 0; + unsigned int num_pages = dm_device.balloon_wrk.num_pages; + unsigned int num_ballooned = 0; struct dm_balloon_response *bl_resp; int alloc_unit; int ret; - bool alloc_error = false; bool done = false; int i; + struct sysinfo val; + unsigned long floor; + /* The host balloons pages in 2M granularity. */ + WARN_ON_ONCE(num_pages % PAGES_IN_2M != 0); /* * We will attempt 2M allocations. However, if we fail to @@ -1077,6 +1155,15 @@ */ alloc_unit = 512; + si_meminfo(&val); + floor = compute_balloon_floor(); + + /* Refuse to balloon below the floor, keep the 2M granularity. */ + if (val.freeram < num_pages || val.freeram - num_pages < floor) { + num_pages = val.freeram > floor ? (val.freeram - floor) : 0; + num_pages -= num_pages % PAGES_IN_2M; + } + while (!done) { bl_resp = (struct dm_balloon_response *)send_buffer; memset(send_buffer, 0, PAGE_SIZE); @@ -1087,15 +1174,14 @@ num_pages -= num_ballooned; num_ballooned = alloc_balloon_pages(&dm_device, num_pages, - bl_resp, alloc_unit, - &alloc_error); + bl_resp, alloc_unit); - if ((alloc_error) && (alloc_unit != 1)) { + if (alloc_unit != 1 && num_ballooned == 0) { alloc_unit = 1; continue; } - if ((alloc_error) || (num_ballooned == num_pages)) { + if (num_ballooned == 0 || num_ballooned == num_pages) { bl_resp->more_pages = 0; done = true; dm_device.state = DM_INITIALIZED; @@ -1117,7 +1203,7 @@ if (ret == -EAGAIN) msleep(20); - + post_status(&dm_device); } while (ret == -EAGAIN); if (ret) { @@ -1144,8 +1230,10 @@ struct dm_unballoon_response resp; int i; - for (i = 0; i < range_count; i++) + for (i = 0; i < range_count; i++) { free_balloon_pages(dm, &range_array[i]); + post_status(&dm_device); + } if (req->more_pages == 1) return; @@ -1171,7 +1259,8 @@ int t; while (!kthread_should_stop()) { - t = wait_for_completion_timeout(&dm_device.config_event, 1*HZ); + t = wait_for_completion_interruptible_timeout( + &dm_device.config_event, 1*HZ); /* * The host expects us to post information on the memory * pressure every second. @@ -1359,7 +1448,9 @@ dm_device.next_version = DYNMEM_PROTOCOL_VERSION_WIN7; init_completion(&dm_device.host_event); init_completion(&dm_device.config_event); + init_completion(&dm_device.waiter_event); INIT_LIST_HEAD(&dm_device.ha_region_list); + mutex_init(&dm_device.ha_region_mutex); INIT_WORK(&dm_device.balloon_wrk.wrk, balloon_up); INIT_WORK(&dm_device.ha_wrk.wrk, hot_add_req); dm_device.host_specified_ha_region = false; @@ -1373,6 +1464,7 @@ #ifdef CONFIG_MEMORY_HOTPLUG set_online_page_callback(&hv_online_page); + register_memory_notifier(&hv_memory_nb); #endif hv_set_drvdata(dev, &dm_device); @@ -1491,6 +1583,7 @@ kfree(send_buffer); #ifdef CONFIG_MEMORY_HOTPLUG restore_online_page_callback(&hv_online_page); + unregister_memory_notifier(&hv_memory_nb); #endif list_for_each_safe(cur, tmp, &dm->ha_region_list) { has = list_entry(cur, struct hv_hotadd_state, list); --- linux-3.13.0.orig/drivers/hv/hv_fcopy.c +++ linux-3.13.0/drivers/hv/hv_fcopy.c @@ -0,0 +1,414 @@ +/* + * An implementation of file copy service. + * + * Copyright (C) 2014, Microsoft, Inc. + * + * Author : K. Y. Srinivasan + * + * 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, GOOD TITLE or + * NON INFRINGEMENT. See the GNU General Public License for more + * details. + * + */ + +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "hyperv_vmbus.h" + +#define WIN8_SRV_MAJOR 1 +#define WIN8_SRV_MINOR 1 +#define WIN8_SRV_VERSION (WIN8_SRV_MAJOR << 16 | WIN8_SRV_MINOR) + +/* + * Global state maintained for transaction that is being processed. + * For a class of integration services, including the "file copy service", + * the specified protocol is a "request/response" protocol which means that + * there can only be single outstanding transaction from the host at any + * given point in time. We use this to simplify memory management in this + * driver - we cache and process only one message at a time. + * + * While the request/response protocol is guaranteed by the host, we further + * ensure this by serializing packet processing in this driver - we do not + * read additional packets from the VMBUs until the current packet is fully + * handled. + * + * The transaction "active" state is set when we receive a request from the + * host and we cleanup this state when the transaction is completed - when we + * respond to the host with our response. When the transaction active state is + * set, we defer handling incoming packets. + */ + +static struct { + bool active; /* transaction status - active or not */ + int recv_len; /* number of bytes received. */ + struct hv_fcopy_hdr *fcopy_msg; /* current message */ + struct hv_start_fcopy message; /* sent to daemon */ + struct vmbus_channel *recv_channel; /* chn we got the request */ + u64 recv_req_id; /* request ID. */ + void *fcopy_context; /* for the channel callback */ + struct semaphore read_sema; +} fcopy_transaction; + +static bool opened; /* currently device opened */ + +/* + * Before we can accept copy messages from the host, we need + * to handshake with the user level daemon. This state tracks + * if we are in the handshake phase. + */ +static bool in_hand_shake = true; +static void fcopy_send_data(void); +static void fcopy_respond_to_host(int error); +static void fcopy_work_func(struct work_struct *dummy); +static DECLARE_DELAYED_WORK(fcopy_work, fcopy_work_func); +static u8 *recv_buffer; + +static void fcopy_work_func(struct work_struct *dummy) +{ + /* + * If the timer fires, the user-mode component has not responded; + * process the pending transaction. + */ + fcopy_respond_to_host(HV_E_FAIL); +} + +static int fcopy_handle_handshake(u32 version) +{ + switch (version) { + case FCOPY_CURRENT_VERSION: + break; + default: + /* + * For now we will fail the registration. + * If and when we have multiple versions to + * deal with, we will be backward compatible. + * We will add this code when needed. + */ + return -EINVAL; + } + pr_info("FCP: user-mode registering done. Daemon version: %d\n", + version); + fcopy_transaction.active = false; + if (fcopy_transaction.fcopy_context) + hv_fcopy_onchannelcallback(fcopy_transaction.fcopy_context); + in_hand_shake = false; + return 0; +} + +static void fcopy_send_data(void) +{ + struct hv_start_fcopy *smsg_out = &fcopy_transaction.message; + int operation = fcopy_transaction.fcopy_msg->operation; + struct hv_start_fcopy *smsg_in; + + /* + * The strings sent from the host are encoded in + * in utf16; convert it to utf8 strings. + * The host assures us that the utf16 strings will not exceed + * the max lengths specified. We will however, reserve room + * for the string terminating character - in the utf16s_utf8s() + * function we limit the size of the buffer where the converted + * string is placed to W_MAX_PATH -1 to guarantee + * that the strings can be properly terminated! + */ + + switch (operation) { + case START_FILE_COPY: + memset(smsg_out, 0, sizeof(struct hv_start_fcopy)); + 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); + + utf16s_to_utf8s((wchar_t *)smsg_in->path_name, W_MAX_PATH, + UTF16_LITTLE_ENDIAN, + (__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; + break; + + default: + break; + } + up(&fcopy_transaction.read_sema); + return; +} + +/* + * Send a response back to the host. + */ + +static void +fcopy_respond_to_host(int error) +{ + struct icmsg_hdr *icmsghdr; + u32 buf_len; + struct vmbus_channel *channel; + u64 req_id; + + /* + * Copy the global state for completing the transaction. Note that + * only one transaction can be active at a time. This is guaranteed + * by the file copy protocol implemented by the host. Furthermore, + * the "transaction active" state we maintain ensures that there can + * only be one active transaction at a time. + */ + + buf_len = fcopy_transaction.recv_len; + channel = fcopy_transaction.recv_channel; + req_id = fcopy_transaction.recv_req_id; + + fcopy_transaction.active = false; + + icmsghdr = (struct icmsg_hdr *) + &recv_buffer[sizeof(struct vmbuspipe_hdr)]; + + if (channel->onchannel_callback == NULL) + /* + * We have raced with util driver being unloaded; + * silently return. + */ + return; + + icmsghdr->status = error; + icmsghdr->icflags = ICMSGHDRFLAG_TRANSACTION | ICMSGHDRFLAG_RESPONSE; + vmbus_sendpacket(channel, recv_buffer, buf_len, req_id, + VM_PKT_DATA_INBAND, 0); +} + +void hv_fcopy_onchannelcallback(void *context) +{ + struct vmbus_channel *channel = context; + u32 recvlen; + u64 requestid; + struct hv_fcopy_hdr *fcopy_msg; + struct icmsg_hdr *icmsghdr; + struct icmsg_negotiate *negop = NULL; + int util_fw_version; + int fcopy_srv_version; + + if (fcopy_transaction.active) { + /* + * We will defer processing this callback once + * the current transaction is complete. + */ + fcopy_transaction.fcopy_context = context; + return; + } + + vmbus_recvpacket(channel, recv_buffer, PAGE_SIZE * 2, &recvlen, + &requestid); + if (recvlen <= 0) + return; + + icmsghdr = (struct icmsg_hdr *)&recv_buffer[ + sizeof(struct vmbuspipe_hdr)]; + if (icmsghdr->icmsgtype == ICMSGTYPE_NEGOTIATE) { + util_fw_version = UTIL_FW_VERSION; + fcopy_srv_version = WIN8_SRV_VERSION; + vmbus_prep_negotiate_resp(icmsghdr, negop, recv_buffer, + util_fw_version, fcopy_srv_version); + } else { + fcopy_msg = (struct hv_fcopy_hdr *)&recv_buffer[ + sizeof(struct vmbuspipe_hdr) + + sizeof(struct icmsg_hdr)]; + + /* + * Stash away this global state for completing the + * transaction; note transactions are serialized. + */ + + fcopy_transaction.active = true; + fcopy_transaction.recv_len = recvlen; + fcopy_transaction.recv_channel = channel; + fcopy_transaction.recv_req_id = requestid; + fcopy_transaction.fcopy_msg = fcopy_msg; + + /* + * Send the information to the user-level daemon. + */ + fcopy_send_data(); + schedule_delayed_work(&fcopy_work, 5*HZ); + return; + } + icmsghdr->icflags = ICMSGHDRFLAG_TRANSACTION | ICMSGHDRFLAG_RESPONSE; + vmbus_sendpacket(channel, recv_buffer, recvlen, requestid, + VM_PKT_DATA_INBAND, 0); +} + +/* + * Create a char device that can support read/write for passing + * the payload. + */ + +static ssize_t fcopy_read(struct file *file, char __user *buf, + size_t count, loff_t *ppos) +{ + void *src; + size_t copy_size; + int operation; + + /* + * Wait until there is something to be read. + */ + if (down_interruptible(&fcopy_transaction.read_sema)) + return -EINTR; + + /* + * The channel may be rescinded and in this case, we will wakeup the + * the thread blocked on the semaphore and we will use the opened + * state to correctly handle this case. + */ + if (!opened) + return -ENODEV; + + operation = fcopy_transaction.fcopy_msg->operation; + + if (operation == START_FILE_COPY) { + src = &fcopy_transaction.message; + copy_size = sizeof(struct hv_start_fcopy); + if (count < copy_size) + return 0; + } else { + src = fcopy_transaction.fcopy_msg; + copy_size = sizeof(struct hv_do_fcopy); + if (count < copy_size) + return 0; + } + if (copy_to_user(buf, src, copy_size)) + return -EFAULT; + + return copy_size; +} + +static ssize_t fcopy_write(struct file *file, const char __user *buf, + size_t count, loff_t *ppos) +{ + int response = 0; + + if (count != sizeof(int)) + return -EINVAL; + + if (copy_from_user(&response, buf, sizeof(int))) + return -EFAULT; + + if (in_hand_shake) { + if (fcopy_handle_handshake(response)) + return -EINVAL; + return sizeof(int); + } + + /* + * Complete the transaction by forwarding the result + * to the host. But first, cancel the timeout. + */ + if (cancel_delayed_work_sync(&fcopy_work)) + fcopy_respond_to_host(response); + + return sizeof(int); +} + +static int fcopy_open(struct inode *inode, struct file *f) +{ + /* + * The user level daemon that will open this device is + * really an extension of this driver. We can have only + * active open at a time. + */ + if (opened) + return -EBUSY; + + /* + * The daemon is alive; setup the state. + */ + opened = true; + return 0; +} + +static int fcopy_release(struct inode *inode, struct file *f) +{ + /* + * The daemon has exited; reset the state. + */ + in_hand_shake = true; + opened = false; + return 0; +} + + +static const struct file_operations fcopy_fops = { + .read = fcopy_read, + .write = fcopy_write, + .release = fcopy_release, + .open = fcopy_open, +}; + +static struct miscdevice fcopy_misc = { + .minor = MISC_DYNAMIC_MINOR, + .name = "vmbus/hv_fcopy", + .fops = &fcopy_fops, +}; + +static int fcopy_dev_init(void) +{ + return misc_register(&fcopy_misc); +} + +static void fcopy_dev_deinit(void) +{ + + /* + * The device is going away - perhaps because the + * host has rescinded the channel. Setup state so that + * user level daemon can gracefully exit if it is blocked + * on the read semaphore. + */ + opened = false; + /* + * Signal the semaphore as the device is + * going away. + */ + up(&fcopy_transaction.read_sema); + misc_deregister(&fcopy_misc); +} + +int hv_fcopy_init(struct hv_util_service *srv) +{ + recv_buffer = srv->recv_buffer; + + /* + * When this driver loads, the user level daemon that + * processes the host requests may not yet be running. + * Defer processing channel callbacks until the daemon + * has registered. + */ + fcopy_transaction.active = true; + sema_init(&fcopy_transaction.read_sema, 0); + + return fcopy_dev_init(); +} + +void hv_fcopy_deinit(void) +{ + cancel_delayed_work_sync(&fcopy_work); + fcopy_dev_deinit(); +} --- linux-3.13.0.orig/drivers/hv/hv_util.c +++ linux-3.13.0/drivers/hv/hv_util.c @@ -28,6 +28,7 @@ #include #include +#include "hyperv_vmbus.h" #define SD_MAJOR 3 #define SD_MINOR 0 @@ -82,6 +83,12 @@ .util_deinit = hv_vss_deinit, }; +static struct hv_util_service util_fcopy = { + .util_cb = hv_fcopy_onchannelcallback, + .util_init = hv_fcopy_init, + .util_deinit = hv_fcopy_deinit, +}; + static void perform_shutdown(struct work_struct *dummy) { orderly_poweroff(true); @@ -401,6 +408,10 @@ { HV_VSS_GUID, .driver_data = (unsigned long)&util_vss }, + /* File copy GUID */ + { HV_FCOPY_GUID, + .driver_data = (unsigned long)&util_fcopy + }, { }, }; --- linux-3.13.0.orig/drivers/hv/hyperv_vmbus.h +++ linux-3.13.0/drivers/hv/hyperv_vmbus.h @@ -49,6 +49,17 @@ HVCPUID_IMPLEMENTATION_LIMITS = 0x40000005, }; +#define HV_FEATURE_GUEST_CRASH_MSR_AVAILABLE 0x400 + +#define HV_X64_MSR_CRASH_P0 0x40000100 +#define HV_X64_MSR_CRASH_P1 0x40000101 +#define HV_X64_MSR_CRASH_P2 0x40000102 +#define HV_X64_MSR_CRASH_P3 0x40000103 +#define HV_X64_MSR_CRASH_P4 0x40000104 +#define HV_X64_MSR_CRASH_CTL 0x40000105 + +#define HV_CRASH_CTL_CRASH_NOTIFY (1ULL << 63) + /* Define version of the synthetic interrupt controller. */ #define HV_SYNIC_VERSION (1) @@ -510,6 +521,15 @@ * basis. */ struct tasklet_struct *event_dpc[NR_CPUS]; + /* + * buffer to post messages to the host. + */ + void *post_msg_page[NR_CPUS]; + /* + * To optimize the mapping of relid to channel, maintain + * per-cpu list of the channels based on their CPU affinity. + */ + struct list_head percpu_list[NR_CPUS]; }; extern struct hv_context hv_context; @@ -559,8 +579,8 @@ void hv_ringbuffer_cleanup(struct hv_ring_buffer_info *ring_info); int hv_ringbuffer_write(struct hv_ring_buffer_info *ring_info, - struct scatterlist *sglist, - u32 sgcount, bool *signal); + struct kvec *kv_list, + u32 kv_count, bool *signal); int hv_ringbuffer_peek(struct hv_ring_buffer_info *ring_info, void *buffer, u32 buflen); @@ -669,5 +689,9 @@ void vmbus_on_event(unsigned long data); +int hv_fcopy_init(struct hv_util_service *); +void hv_fcopy_deinit(void); +void hv_fcopy_onchannelcallback(void *); + #endif /* _HYPERV_VMBUS_H */ --- linux-3.13.0.orig/drivers/hv/ring_buffer.c +++ linux-3.13.0/drivers/hv/ring_buffer.c @@ -26,6 +26,7 @@ #include #include #include +#include #include "hyperv_vmbus.h" @@ -102,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; @@ -122,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; @@ -387,23 +382,20 @@ * */ int hv_ringbuffer_write(struct hv_ring_buffer_info *outring_info, - struct scatterlist *sglist, u32 sgcount, bool *signal) + struct kvec *kv_list, u32 kv_count, bool *signal) { int i = 0; u32 bytes_avail_towrite; u32 bytes_avail_toread; u32 totalbytes_towrite = 0; - struct scatterlist *sg; u32 next_write_location; u32 old_write; u64 prev_indices = 0; unsigned long flags; - for_each_sg(sglist, sg, sgcount, i) - { - totalbytes_towrite += sg->length; - } + for (i = 0; i < kv_count; i++) + totalbytes_towrite += kv_list[i].iov_len; totalbytes_towrite += sizeof(u64); @@ -427,12 +419,11 @@ old_write = next_write_location; - for_each_sg(sglist, sg, sgcount, i) - { + for (i = 0; i < kv_count; i++) { next_write_location = hv_copyto_ringbuffer(outring_info, next_write_location, - sg_virt(sg), - sg->length); + kv_list[i].iov_base, + kv_list[i].iov_len); } /* Set previous packet start */ @@ -515,7 +506,6 @@ u32 next_read_location = 0; u64 prev_indices = 0; unsigned long flags; - u32 old_read; if (buflen <= 0) return -EINVAL; @@ -526,8 +516,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); @@ -558,7 +546,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-3.13.0.orig/drivers/hv/vmbus_drv.c +++ linux-3.13.0/drivers/hv/vmbus_drv.c @@ -37,6 +37,8 @@ #include #include #include +#include +#include #include "hyperv_vmbus.h" @@ -46,6 +48,37 @@ static struct completion probe_event; static int irq; + +int hyperv_panic_event(struct notifier_block *nb, + unsigned long event, void *ptr) +{ + struct pt_regs *regs; + + regs = current_pt_regs(); + + wrmsrl(HV_X64_MSR_CRASH_P0, regs->ip); + wrmsrl(HV_X64_MSR_CRASH_P1, regs->ax); + wrmsrl(HV_X64_MSR_CRASH_P2, regs->bx); + wrmsrl(HV_X64_MSR_CRASH_P3, regs->cx); + wrmsrl(HV_X64_MSR_CRASH_P4, regs->dx); + + /* + * Let Hyper-V know there is crash data available + */ + wrmsrl(HV_X64_MSR_CRASH_CTL, HV_CRASH_CTL_CRASH_NOTIFY); + return NOTIFY_DONE; +} + +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); + static int vmbus_exists(void) { if (hv_acpi_dev == NULL) @@ -749,6 +782,14 @@ if (ret) goto err_alloc; + /* + * Only register if the crash MSRs are available + */ + if (ms_hyperv.features & HV_FEATURE_GUEST_CRASH_MSR_AVAILABLE) { + atomic_notifier_chain_register(&panic_notifier_list, + &hyperv_panic_block); + } + vmbus_request_offers(); return 0; @@ -888,18 +929,21 @@ /* - * VMBUS is an acpi enumerated device. Get the the IRQ information - * from DSDT. + * VMBUS is an acpi enumerated device. Get the the information we + * need from DSDT. */ -static acpi_status vmbus_walk_resources(struct acpi_resource *res, void *irq) +static acpi_status vmbus_walk_resources(struct acpi_resource *res, void *ctx) { + switch (res->type) { + case ACPI_RESOURCE_TYPE_IRQ: + irq = res->data.irq.interrupts[0]; + break; - if (res->type == ACPI_RESOURCE_TYPE_IRQ) { - struct acpi_resource_irq *irqp; - irqp = &res->data.irq; - - *((unsigned int *)irq) = irqp->interrupts[0]; + case ACPI_RESOURCE_TYPE_ADDRESS64: + hyperv_mmio.start = res->data.address64.minimum; + hyperv_mmio.end = res->data.address64.maximum; + break; } return AE_OK; @@ -908,18 +952,34 @@ static int vmbus_acpi_add(struct acpi_device *device) { acpi_status result; + int ret_val = -ENODEV; hv_acpi_dev = device; result = acpi_walk_resources(device->handle, METHOD_NAME__CRS, - vmbus_walk_resources, &irq); + vmbus_walk_resources, NULL); - if (ACPI_FAILURE(result)) { - complete(&probe_event); - return -ENODEV; + 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. + */ + if (device->parent) { + result = acpi_walk_resources(device->parent->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); } + ret_val = 0; + +acpi_walk_err: complete(&probe_event); - return 0; + return ret_val; } static const struct acpi_device_id vmbus_acpi_device_ids[] = { --- linux-3.13.0.orig/drivers/hwmon/adm1021.c +++ linux-3.13.0/drivers/hwmon/adm1021.c @@ -185,7 +185,7 @@ struct i2c_client *client = to_i2c_client(dev); struct adm1021_data *data = i2c_get_clientdata(client); long temp; - int err; + int reg_val, err; err = kstrtol(buf, 10, &temp); if (err) @@ -193,10 +193,11 @@ temp /= 1000; mutex_lock(&data->update_lock); - data->temp_max[index] = clamp_val(temp, -128, 127); + reg_val = clamp_val(temp, -128, 127); + data->temp_max[index] = reg_val * 1000; if (!read_only) i2c_smbus_write_byte_data(client, ADM1021_REG_TOS_W(index), - data->temp_max[index]); + reg_val); mutex_unlock(&data->update_lock); return count; @@ -210,7 +211,7 @@ struct i2c_client *client = to_i2c_client(dev); struct adm1021_data *data = i2c_get_clientdata(client); long temp; - int err; + int reg_val, err; err = kstrtol(buf, 10, &temp); if (err) @@ -218,10 +219,11 @@ temp /= 1000; mutex_lock(&data->update_lock); - data->temp_min[index] = clamp_val(temp, -128, 127); + reg_val = clamp_val(temp, -128, 127); + data->temp_min[index] = reg_val * 1000; if (!read_only) i2c_smbus_write_byte_data(client, ADM1021_REG_THYST_W(index), - data->temp_min[index]); + reg_val); mutex_unlock(&data->update_lock); return count; --- linux-3.13.0.orig/drivers/hwmon/adm1029.c +++ linux-3.13.0/drivers/hwmon/adm1029.c @@ -232,6 +232,9 @@ /* Update the value */ reg = (reg & 0x3F) | (val << 6); + /* Update the cache */ + data->fan_div[attr->index] = reg; + /* Write value */ i2c_smbus_write_byte_data(client, ADM1029_REG_FAN_DIV[attr->index], reg); --- linux-3.13.0.orig/drivers/hwmon/adm1031.c +++ linux-3.13.0/drivers/hwmon/adm1031.c @@ -365,6 +365,7 @@ if (ret) return ret; + val = clamp_val(val, 0, 127000); mutex_lock(&data->update_lock); data->auto_temp[nr] = AUTO_TEMP_MIN_TO_REG(val, data->auto_temp[nr]); adm1031_write_value(client, ADM1031_REG_AUTO_TEMP(nr), @@ -394,6 +395,7 @@ if (ret) return ret; + val = clamp_val(val, 0, 127000); mutex_lock(&data->update_lock); data->temp_max[nr] = AUTO_TEMP_MAX_TO_REG(val, data->auto_temp[nr], data->pwm[nr]); @@ -696,7 +698,7 @@ if (ret) return ret; - val = clamp_val(val, -55000, nr == 0 ? 127750 : 127875); + val = clamp_val(val, -55000, 127000); mutex_lock(&data->update_lock); data->temp_min[nr] = TEMP_TO_REG(val); adm1031_write_value(client, ADM1031_REG_TEMP_MIN(nr), @@ -717,7 +719,7 @@ if (ret) return ret; - val = clamp_val(val, -55000, nr == 0 ? 127750 : 127875); + val = clamp_val(val, -55000, 127000); mutex_lock(&data->update_lock); data->temp_max[nr] = TEMP_TO_REG(val); adm1031_write_value(client, ADM1031_REG_TEMP_MAX(nr), @@ -738,7 +740,7 @@ if (ret) return ret; - val = clamp_val(val, -55000, nr == 0 ? 127750 : 127875); + val = clamp_val(val, -55000, 127000); mutex_lock(&data->update_lock); data->temp_crit[nr] = TEMP_TO_REG(val); adm1031_write_value(client, ADM1031_REG_TEMP_CRIT(nr), --- linux-3.13.0.orig/drivers/hwmon/ads1015.c +++ linux-3.13.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); } @@ -198,7 +198,7 @@ } channel = be32_to_cpup(property); - if (channel > ADS1015_CHANNELS) { + if (channel >= ADS1015_CHANNELS) { dev_err(&client->dev, "invalid channel index %d on %s\n", channel, node->full_name); @@ -212,6 +212,7 @@ dev_err(&client->dev, "invalid gain on %s\n", node->full_name); + return -EINVAL; } } @@ -222,6 +223,7 @@ dev_err(&client->dev, "invalid data_rate on %s\n", node->full_name); + return -EINVAL; } } --- linux-3.13.0.orig/drivers/hwmon/adt7470.c +++ linux-3.13.0/drivers/hwmon/adt7470.c @@ -515,7 +515,7 @@ return -EINVAL; temp = DIV_ROUND_CLOSEST(temp, 1000); - temp = clamp_val(temp, 0, 255); + temp = clamp_val(temp, -128, 127); mutex_lock(&data->lock); data->temp_min[attr->index] = temp; @@ -549,7 +549,7 @@ return -EINVAL; temp = DIV_ROUND_CLOSEST(temp, 1000); - temp = clamp_val(temp, 0, 255); + temp = clamp_val(temp, -128, 127); mutex_lock(&data->lock); data->temp_max[attr->index] = temp; @@ -826,7 +826,7 @@ return -EINVAL; temp = DIV_ROUND_CLOSEST(temp, 1000); - temp = clamp_val(temp, 0, 255); + temp = clamp_val(temp, -128, 127); mutex_lock(&data->lock); data->pwm_tmin[attr->index] = temp; --- linux-3.13.0.orig/drivers/hwmon/amc6821.c +++ linux-3.13.0/drivers/hwmon/amc6821.c @@ -360,11 +360,13 @@ if (config) return config; + mutex_lock(&data->update_lock); config = i2c_smbus_read_byte_data(client, AMC6821_REG_CONF1); if (config < 0) { dev_err(&client->dev, "Error reading configuration register, aborting.\n"); - return config; + count = config; + goto unlock; } switch (val) { @@ -381,14 +383,15 @@ config |= AMC6821_CONF1_FDRC1; break; default: - return -EINVAL; + count = -EINVAL; + goto unlock; } - mutex_lock(&data->update_lock); if (i2c_smbus_write_byte_data(client, AMC6821_REG_CONF1, config)) { dev_err(&client->dev, "Configuration register write error, aborting.\n"); count = -EIO; } +unlock: mutex_unlock(&data->update_lock); return count; } @@ -493,8 +496,9 @@ return -EINVAL; } - data->valid = 0; mutex_lock(&data->update_lock); + data->valid = 0; + switch (ix) { case 0: ptemp[0] = clamp_val(val / 1000, 0, @@ -658,13 +662,14 @@ if (config) return config; + mutex_lock(&data->update_lock); config = i2c_smbus_read_byte_data(client, AMC6821_REG_CONF4); if (config < 0) { dev_err(&client->dev, "Error reading configuration register, aborting.\n"); - return config; + count = config; + goto EXIT; } - mutex_lock(&data->update_lock); switch (val) { case 2: config &= ~AMC6821_CONF4_PSPR; @@ -704,7 +709,7 @@ get_temp_alarm, NULL, IDX_TEMP1_MAX); static SENSOR_DEVICE_ATTR(temp1_crit_alarm, S_IRUGO, get_temp_alarm, NULL, IDX_TEMP1_CRIT); -static SENSOR_DEVICE_ATTR(temp2_input, S_IRUGO | S_IWUSR, +static SENSOR_DEVICE_ATTR(temp2_input, S_IRUGO, get_temp, NULL, IDX_TEMP2_INPUT); static SENSOR_DEVICE_ATTR(temp2_min, S_IRUGO | S_IWUSR, get_temp, set_temp, IDX_TEMP2_MIN); --- linux-3.13.0.orig/drivers/hwmon/da9052-hwmon.c +++ linux-3.13.0/drivers/hwmon/da9052-hwmon.c @@ -194,7 +194,7 @@ struct device_attribute *devattr, char *buf) { - return sprintf(buf, "da9052-hwmon\n"); + return sprintf(buf, "da9052\n"); } static ssize_t show_label(struct device *dev, --- linux-3.13.0.orig/drivers/hwmon/da9055-hwmon.c +++ linux-3.13.0/drivers/hwmon/da9055-hwmon.c @@ -204,7 +204,7 @@ struct device_attribute *devattr, char *buf) { - return sprintf(buf, "da9055-hwmon\n"); + return sprintf(buf, "da9055\n"); } static ssize_t show_label(struct device *dev, --- linux-3.13.0.orig/drivers/hwmon/dme1737.c +++ linux-3.13.0/drivers/hwmon/dme1737.c @@ -247,8 +247,8 @@ u8 pwm_acz[3]; u8 pwm_freq[6]; u8 pwm_rr[2]; - u8 zone_low[3]; - u8 zone_abs[3]; + s8 zone_low[3]; + s8 zone_abs[3]; u8 zone_hyst[2]; u32 alarms; }; @@ -277,7 +277,7 @@ return (reg * nominal + (3 << (res - 3))) / (3 << (res - 2)); } -static inline int IN_TO_REG(int val, int nominal) +static inline int IN_TO_REG(long val, int nominal) { return clamp_val((val * 192 + nominal / 2) / nominal, 0, 255); } @@ -293,7 +293,7 @@ return (reg * 1000) >> (res - 8); } -static inline int TEMP_TO_REG(int val) +static inline int TEMP_TO_REG(long val) { return clamp_val((val < 0 ? val - 500 : val + 500) / 1000, -128, 127); } @@ -308,7 +308,7 @@ return TEMP_RANGE[(reg >> 4) & 0x0f]; } -static int TEMP_RANGE_TO_REG(int val, int reg) +static int TEMP_RANGE_TO_REG(long val, int reg) { int i; @@ -331,7 +331,7 @@ return (((ix == 1) ? reg : reg >> 4) & 0x0f) * 1000; } -static inline int TEMP_HYST_TO_REG(int val, int ix, int reg) +static inline int TEMP_HYST_TO_REG(long val, int ix, int reg) { int hyst = clamp_val((val + 500) / 1000, 0, 15); @@ -347,7 +347,7 @@ return (reg == 0 || reg == 0xffff) ? 0 : 90000 * 60 / reg; } -static inline int FAN_TO_REG(int val, int tpc) +static inline int FAN_TO_REG(long val, int tpc) { if (tpc) { return clamp_val(val / tpc, 0, 0xffff); @@ -379,7 +379,7 @@ return (edge > 0) ? 1 << (edge - 1) : 0; } -static inline int FAN_TYPE_TO_REG(int val, int reg) +static inline int FAN_TYPE_TO_REG(long val, int reg) { int edge = (val == 4) ? 3 : val; @@ -402,7 +402,7 @@ return 1000 + i * 500; } -static int FAN_MAX_TO_REG(int val) +static int FAN_MAX_TO_REG(long val) { int i; @@ -460,7 +460,7 @@ return acz[(reg >> 5) & 0x07]; } -static inline int PWM_ACZ_TO_REG(int val, int reg) +static inline int PWM_ACZ_TO_REG(long val, int reg) { int acz = (val == 4) ? 2 : val - 1; @@ -476,7 +476,7 @@ return PWM_FREQ[reg & 0x0f]; } -static int PWM_FREQ_TO_REG(int val, int reg) +static int PWM_FREQ_TO_REG(long val, int reg) { int i; @@ -510,7 +510,7 @@ return (rr & 0x08) ? PWM_RR[rr & 0x07] : 0; } -static int PWM_RR_TO_REG(int val, int ix, int reg) +static int PWM_RR_TO_REG(long val, int ix, int reg) { int i; @@ -528,7 +528,7 @@ return PWM_RR_FROM_REG(reg, ix) ? 1 : 0; } -static inline int PWM_RR_EN_TO_REG(int val, int ix, int reg) +static inline int PWM_RR_EN_TO_REG(long val, int ix, int reg) { int en = (ix == 1) ? 0x80 : 0x08; @@ -1481,13 +1481,16 @@ const char *buf, size_t count) { struct dme1737_data *data = dev_get_drvdata(dev); - long val; + unsigned long val; int err; - err = kstrtol(buf, 10, &val); + err = kstrtoul(buf, 10, &val); if (err) return err; + if (val > 255) + return -EINVAL; + data->vrm = val; return count; } --- linux-3.13.0.orig/drivers/hwmon/ds1621.c +++ linux-3.13.0/drivers/hwmon/ds1621.c @@ -309,6 +309,7 @@ data->conf |= (resol << DS1621_REG_CONFIG_RESOL_SHIFT); i2c_smbus_write_byte_data(client, DS1621_REG_CONF, data->conf); data->update_interval = ds1721_convrates[resol]; + data->zbits = 7 - resol; mutex_unlock(&data->update_lock); return count; --- linux-3.13.0.orig/drivers/hwmon/emc1403.c +++ linux-3.13.0/drivers/hwmon/emc1403.c @@ -163,7 +163,7 @@ if (retval < 0) goto fail; - hyst = val - retval * 1000; + hyst = retval * 1000 - val; hyst = DIV_ROUND_CLOSEST(hyst, 1000); if (hyst < 0 || hyst > 255) { retval = -ERANGE; @@ -330,7 +330,7 @@ } id = i2c_smbus_read_byte_data(client, THERMAL_REVISION_REG); - if (id != 0x01) + if (id < 0x01 || id > 0x04) return -ENODEV; return 0; @@ -355,9 +355,9 @@ if (id->driver_data) data->groups[1] = &emc1404_group; - hwmon_dev = hwmon_device_register_with_groups(&client->dev, - client->name, data, - data->groups); + hwmon_dev = devm_hwmon_device_register_with_groups(&client->dev, + client->name, data, + data->groups); if (IS_ERR(hwmon_dev)) return PTR_ERR(hwmon_dev); --- linux-3.13.0.orig/drivers/hwmon/emc2103.c +++ linux-3.13.0/drivers/hwmon/emc2103.c @@ -250,9 +250,7 @@ if (result < 0) return result; - val = DIV_ROUND_CLOSEST(val, 1000); - if ((val < -63) || (val > 127)) - return -EINVAL; + val = clamp_val(DIV_ROUND_CLOSEST(val, 1000), -63, 127); mutex_lock(&data->update_lock); data->temp_min[nr] = val; @@ -274,9 +272,7 @@ if (result < 0) return result; - val = DIV_ROUND_CLOSEST(val, 1000); - if ((val < -63) || (val > 127)) - return -EINVAL; + val = clamp_val(DIV_ROUND_CLOSEST(val, 1000), -63, 127); mutex_lock(&data->update_lock); data->temp_max[nr] = val; @@ -390,15 +386,14 @@ { struct emc2103_data *data = emc2103_update_device(dev); struct i2c_client *client = to_i2c_client(dev); - long rpm_target; + unsigned long rpm_target; - int result = kstrtol(buf, 10, &rpm_target); + int result = kstrtoul(buf, 10, &rpm_target); if (result < 0) return result; /* Datasheet states 16384 as maximum RPM target (table 3.2) */ - if ((rpm_target < 0) || (rpm_target > 16384)) - return -EINVAL; + rpm_target = clamp_val(rpm_target, 0, 16384); mutex_lock(&data->update_lock); --- linux-3.13.0.orig/drivers/hwmon/gpio-fan.c +++ linux-3.13.0/drivers/hwmon/gpio-fan.c @@ -173,7 +173,7 @@ return -ENODEV; } -static int rpm_to_speed_index(struct gpio_fan_data *fan_data, int rpm) +static int rpm_to_speed_index(struct gpio_fan_data *fan_data, unsigned long rpm) { struct gpio_fan_speed *speed = fan_data->speed; int i; --- linux-3.13.0.orig/drivers/hwmon/ina2xx.c +++ linux-3.13.0/drivers/hwmon/ina2xx.c @@ -148,7 +148,8 @@ switch (reg) { case INA2XX_SHUNT_VOLTAGE: - val = DIV_ROUND_CLOSEST(data->regs[reg], + /* signed register */ + val = DIV_ROUND_CLOSEST((s16)data->regs[reg], data->config->shunt_div); break; case INA2XX_BUS_VOLTAGE: @@ -160,8 +161,8 @@ val = data->regs[reg] * data->config->power_lsb; break; case INA2XX_CURRENT: - /* LSB=1mA (selected). Is in mA */ - val = data->regs[reg]; + /* signed register, LSB=1mA (selected), in mA */ + val = (s16)data->regs[reg]; break; default: /* programmer goofed */ --- linux-3.13.0.orig/drivers/hwmon/k10temp.c +++ linux-3.13.0/drivers/hwmon/k10temp.c @@ -210,6 +210,7 @@ { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_CNB17H_F3) }, { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_15H_NB_F3) }, { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_15H_M10H_F3) }, + { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_15H_M30H_NB_F3) }, { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_16H_NB_F3) }, {} }; --- linux-3.13.0.orig/drivers/hwmon/lm78.c +++ linux-3.13.0/drivers/hwmon/lm78.c @@ -108,7 +108,7 @@ * TEMP: mC (-128C to +127C) * REG: 1C/bit, two's complement */ -static inline s8 TEMP_TO_REG(int val) +static inline s8 TEMP_TO_REG(long val) { int nval = clamp_val(val, -128000, 127000) ; return nval < 0 ? (nval - 500) / 1000 : (nval + 500) / 1000; --- linux-3.13.0.orig/drivers/hwmon/lm85.c +++ linux-3.13.0/drivers/hwmon/lm85.c @@ -158,7 +158,7 @@ /* Temperature is reported in .001 degC increments */ #define TEMP_TO_REG(val) \ - clamp_val(SCALE(val, 1000, 1), -127, 127) + DIV_ROUND_CLOSEST(clamp_val((val), -127000, 127000), 1000) #define TEMPEXT_FROM_REG(val, ext) \ SCALE(((val) << 4) + (ext), 16, 1000) #define TEMP_FROM_REG(val) ((val) * 1000) @@ -192,7 +192,7 @@ 13300, 16000, 20000, 26600, 32000, 40000, 53300, 80000 }; -static int RANGE_TO_REG(int range) +static int RANGE_TO_REG(long range) { int i; @@ -214,7 +214,7 @@ 11, 15, 22, 29, 35, 44, 59, 88 }; -static int FREQ_TO_REG(const int *map, int freq) +static int FREQ_TO_REG(const int *map, unsigned long freq) { int i; @@ -463,6 +463,9 @@ if (err) return err; + if (val > 255) + return -EINVAL; + data->vrm = val; return count; } --- linux-3.13.0.orig/drivers/hwmon/max1111.c +++ linux-3.13.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); @@ -260,6 +263,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-3.13.0.orig/drivers/hwmon/max1668.c +++ linux-3.13.0/drivers/hwmon/max1668.c @@ -243,7 +243,7 @@ data->temp_min[index] = clamp_val(temp/1000, -128, 127); if (i2c_smbus_write_byte_data(client, MAX1668_REG_LIML_WR(index), - data->temp_max[index])) + data->temp_min[index])) count = -EIO; mutex_unlock(&data->update_lock); --- linux-3.13.0.orig/drivers/hwmon/mcp3021.c +++ linux-3.13.0/drivers/hwmon/mcp3021.c @@ -31,14 +31,11 @@ /* output format */ #define MCP3021_SAR_SHIFT 2 #define MCP3021_SAR_MASK 0x3ff - #define MCP3021_OUTPUT_RES 10 /* 10-bit resolution */ -#define MCP3021_OUTPUT_SCALE 4 #define MCP3221_SAR_SHIFT 0 #define MCP3221_SAR_MASK 0xfff #define MCP3221_OUTPUT_RES 12 /* 12-bit resolution */ -#define MCP3221_OUTPUT_SCALE 1 enum chips { mcp3021, @@ -54,7 +51,6 @@ u16 sar_shift; u16 sar_mask; u8 output_res; - u8 output_scale; }; static int mcp3021_read16(struct i2c_client *client) @@ -84,13 +80,7 @@ static inline u16 volts_from_reg(struct mcp3021_data *data, u16 val) { - if (val == 0) - return 0; - - val = val * data->output_scale - data->output_scale / 2; - - return val * DIV_ROUND_CLOSEST(data->vdd, - (1 << data->output_res) * data->output_scale); + return DIV_ROUND_CLOSEST(data->vdd * val, 1 << data->output_res); } static ssize_t show_in_input(struct device *dev, struct device_attribute *attr, @@ -132,14 +122,12 @@ data->sar_shift = MCP3021_SAR_SHIFT; data->sar_mask = MCP3021_SAR_MASK; data->output_res = MCP3021_OUTPUT_RES; - data->output_scale = MCP3021_OUTPUT_SCALE; break; case mcp3221: data->sar_shift = MCP3221_SAR_SHIFT; data->sar_mask = MCP3221_SAR_MASK; data->output_res = MCP3221_OUTPUT_RES; - data->output_scale = MCP3221_OUTPUT_SCALE; break; } --- linux-3.13.0.orig/drivers/hwmon/nct6775.c +++ linux-3.13.0/drivers/hwmon/nct6775.c @@ -350,6 +350,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 */ @@ -986,6 +990,7 @@ (*t)->dev_attr.attr.name, tg->base + i); if ((*t)->s2) { a2 = &su->u.a2; + sysfs_attr_init(&a2->dev_attr.attr); a2->dev_attr.attr.name = su->name; a2->nr = (*t)->u.s.nr + i; a2->index = (*t)->u.s.index; @@ -996,6 +1001,7 @@ *attrs = &a2->dev_attr.attr; } else { a = &su->u.a1; + sysfs_attr_init(&a->dev_attr.attr); a->dev_attr.attr.name = su->name; a->index = (*t)->u.index + i; a->dev_attr.attr.mode = @@ -3474,8 +3480,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; @@ -3546,8 +3552,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; @@ -3622,8 +3628,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-3.13.0.orig/drivers/hwmon/ntc_thermistor.c +++ linux-3.13.0/drivers/hwmon/ntc_thermistor.c @@ -145,7 +145,7 @@ static int ntc_adc_iio_read(struct ntc_thermistor_platform_data *pdata) { struct iio_channel *channel = pdata->chan; - unsigned int result; + s64 result; int val, ret; ret = iio_read_channel_raw(channel, &val); @@ -155,10 +155,10 @@ } /* unit: mV */ - result = pdata->pullup_uv * val; + result = pdata->pullup_uv * (s64) val; result >>= 12; - return result; + return (int)result; } static const struct of_device_id ntc_match[] = { @@ -180,8 +180,10 @@ ntc_thermistor_parse_dt(struct platform_device *pdev) { struct iio_channel *chan; + enum iio_chan_type type; struct device_node *np = pdev->dev.of_node; struct ntc_thermistor_platform_data *pdata; + int ret; if (!np) return NULL; @@ -194,6 +196,13 @@ if (IS_ERR(chan)) return ERR_CAST(chan); + ret = iio_get_channel_type(chan, &type); + if (ret < 0) + return ERR_PTR(ret); + + if (type != IIO_VOLTAGE) + return ERR_PTR(-EINVAL); + if (of_property_read_u32(np, "pullup-uv", &pdata->pullup_uv)) return ERR_PTR(-ENODEV); if (of_property_read_u32(np, "pullup-ohm", &pdata->pullup_ohm)) --- linux-3.13.0.orig/drivers/hwmon/sis5595.c +++ linux-3.13.0/drivers/hwmon/sis5595.c @@ -159,7 +159,7 @@ { return val * 830 + 52120; } -static inline s8 TEMP_TO_REG(int val) +static inline s8 TEMP_TO_REG(long val) { int nval = clamp_val(val, -54120, 157530) ; return nval < 0 ? (nval - 5212 - 415) / 830 : (nval - 5212 + 415) / 830; --- linux-3.13.0.orig/drivers/hwmon/smsc47m192.c +++ linux-3.13.0/drivers/hwmon/smsc47m192.c @@ -86,7 +86,7 @@ */ static inline s8 TEMP_TO_REG(int val) { - return clamp_val(SCALE(val, 1, 1000), -128000, 127000); + return SCALE(clamp_val(val, -128000, 127000), 1, 1000); } static inline int TEMP_FROM_REG(s8 val) @@ -384,6 +384,8 @@ err = kstrtoul(buf, 10, &val); if (err) return err; + if (val > 255) + return -EINVAL; data->vrm = val; return count; --- linux-3.13.0.orig/drivers/i2c/busses/Kconfig +++ linux-3.13.0/drivers/i2c/busses/Kconfig @@ -152,6 +152,7 @@ ATI SB700/SP5100 ATI SB800 AMD Hudson-2 + AMD ML AMD CZ Serverworks OSB4 Serverworks CSB5 @@ -386,7 +387,7 @@ config I2C_CPM tristate "Freescale CPM1 or CPM2 (MPC8xx/826x)" - depends on (CPM1 || CPM2) && OF_I2C + depends on CPM1 || CPM2 help This supports the use of the I2C interface on Freescale processors with CPM1 or CPM2. --- linux-3.13.0.orig/drivers/i2c/busses/i2c-at91.c +++ linux-3.13.0/drivers/i2c/busses/i2c-at91.c @@ -62,6 +62,9 @@ #define AT91_TWI_UNRE 0x0080 /* Underrun Error */ #define AT91_TWI_NACK 0x0100 /* Not Acknowledged */ +#define AT91_TWI_INT_MASK \ + (AT91_TWI_TXCOMP | AT91_TWI_RXRDY | AT91_TWI_TXRDY | AT91_TWI_NACK) + #define AT91_TWI_IER 0x0024 /* Interrupt Enable Register */ #define AT91_TWI_IDR 0x0028 /* Interrupt Disable Register */ #define AT91_TWI_IMR 0x002c /* Interrupt Mask Register */ @@ -101,6 +104,7 @@ unsigned twi_cwgr_reg; struct at91_twi_pdata *pdata; bool use_dma; + bool recv_len_abort; struct at91_twi_dma dma; }; @@ -116,13 +120,12 @@ static void at91_disable_twi_interrupts(struct at91_twi_dev *dev) { - at91_twi_write(dev, AT91_TWI_IDR, - AT91_TWI_TXCOMP | AT91_TWI_RXRDY | AT91_TWI_TXRDY); + at91_twi_write(dev, AT91_TWI_IDR, AT91_TWI_INT_MASK); } static void at91_twi_irq_save(struct at91_twi_dev *dev) { - dev->imr = at91_twi_read(dev, AT91_TWI_IMR) & 0x7; + dev->imr = at91_twi_read(dev, AT91_TWI_IMR) & AT91_TWI_INT_MASK; at91_disable_twi_interrupts(dev); } @@ -210,8 +213,16 @@ struct at91_twi_dev *dev = (struct at91_twi_dev *)data; dma_unmap_single(dev->dev, sg_dma_address(&dev->dma.sg), - dev->buf_len, DMA_MEM_TO_DEV); + dev->buf_len, DMA_TO_DEVICE); + /* + * When this callback is called, THR/TX FIFO is likely not to be empty + * yet. So we have to wait for TXCOMP or NACK bits to be set into the + * Status Register to be sure that the STOP bit has been sent and the + * transfer is completed. The NACK interrupt has already been enabled, + * we just have to enable TXCOMP one. + */ + at91_twi_write(dev, AT91_TWI_IER, AT91_TWI_TXCOMP); at91_twi_write(dev, AT91_TWI_CR, AT91_TWI_STOP); } @@ -267,12 +278,24 @@ *dev->buf = at91_twi_read(dev, AT91_TWI_RHR) & 0xff; --dev->buf_len; + /* return if aborting, we only needed to read RHR to clear RXRDY*/ + if (dev->recv_len_abort) + return; + /* handle I2C_SMBUS_BLOCK_DATA */ if (unlikely(dev->msg->flags & I2C_M_RECV_LEN)) { - dev->msg->flags &= ~I2C_M_RECV_LEN; - dev->buf_len += *dev->buf; - dev->msg->len = dev->buf_len + 1; - dev_dbg(dev->dev, "received block length %d\n", dev->buf_len); + /* ensure length byte is a valid value */ + if (*dev->buf <= I2C_SMBUS_BLOCK_MAX && *dev->buf > 0) { + dev->msg->flags &= ~I2C_M_RECV_LEN; + dev->buf_len += *dev->buf; + dev->msg->len = dev->buf_len + 1; + dev_dbg(dev->dev, "received block length %d\n", + dev->buf_len); + } else { + /* abort and send the stop by reading one more byte */ + dev->recv_len_abort = true; + dev->buf_len = 1; + } } /* send stop if second but last byte has been read */ @@ -289,12 +312,12 @@ struct at91_twi_dev *dev = (struct at91_twi_dev *)data; dma_unmap_single(dev->dev, sg_dma_address(&dev->dma.sg), - dev->buf_len, DMA_DEV_TO_MEM); + dev->buf_len, DMA_FROM_DEVICE); /* The last two bytes have to be read without using dma */ dev->buf += dev->buf_len - 2; dev->buf_len = 2; - at91_twi_write(dev, AT91_TWI_IER, AT91_TWI_RXRDY); + at91_twi_write(dev, AT91_TWI_IER, AT91_TWI_RXRDY | AT91_TWI_TXCOMP); } static void at91_twi_read_data_dma(struct at91_twi_dev *dev) @@ -355,7 +378,7 @@ /* catch error flags */ dev->transfer_status |= status; - if (irqstatus & AT91_TWI_TXCOMP) { + if (irqstatus & (AT91_TWI_TXCOMP | AT91_TWI_NACK)) { at91_disable_twi_interrupts(dev); complete(&dev->cmd_complete); } @@ -368,6 +391,34 @@ int ret; bool has_unre_flag = dev->pdata->has_unre_flag; + /* + * WARNING: the TXCOMP bit in the Status Register is NOT a clear on + * read flag but shows the state of the transmission at the time the + * Status Register is read. According to the programmer datasheet, + * TXCOMP is set when both holding register and internal shifter are + * empty and STOP condition has been sent. + * Consequently, we should enable NACK interrupt rather than TXCOMP to + * detect transmission failure. + * + * Besides, the TXCOMP bit is already set before the i2c transaction + * has been started. For read transactions, this bit is cleared when + * writing the START bit into the Control Register. So the + * corresponding interrupt can safely be enabled just after. + * However for write transactions managed by the CPU, we first write + * into THR, so TXCOMP is cleared. Then we can safely enable TXCOMP + * interrupt. If TXCOMP interrupt were enabled before writing into THR, + * the interrupt handler would be called immediately and the i2c command + * would be reported as completed. + * Also when a write transaction is managed by the DMA controller, + * enabling the TXCOMP interrupt in this function may lead to a race + * condition since we don't know whether the TXCOMP interrupt is enabled + * before or after the DMA has started to write into THR. So the TXCOMP + * interrupt is enabled later by at91_twi_write_data_dma_callback(). + * Immediately after in that DMA callback, we still need to send the + * STOP condition manually writing the corresponding bit into the + * Control Register. + */ + dev_dbg(dev->dev, "transfer: %s %d bytes.\n", (dev->msg->flags & I2C_M_RD) ? "read" : "write", dev->buf_len); @@ -398,31 +449,29 @@ * seems to be the best solution. */ if (dev->use_dma && (dev->buf_len > AT91_I2C_DMA_THRESHOLD)) { + at91_twi_write(dev, AT91_TWI_IER, AT91_TWI_NACK); at91_twi_read_data_dma(dev); - /* - * It is important to enable TXCOMP irq here because - * doing it only when transferring the last two bytes - * will mask NACK errors since TXCOMP is set when a - * NACK occurs. - */ - at91_twi_write(dev, AT91_TWI_IER, - AT91_TWI_TXCOMP); - } else + } else { at91_twi_write(dev, AT91_TWI_IER, - AT91_TWI_TXCOMP | AT91_TWI_RXRDY); + AT91_TWI_TXCOMP | + AT91_TWI_NACK | + AT91_TWI_RXRDY); + } } else { if (dev->use_dma && (dev->buf_len > AT91_I2C_DMA_THRESHOLD)) { + at91_twi_write(dev, AT91_TWI_IER, AT91_TWI_NACK); at91_twi_write_data_dma(dev); - at91_twi_write(dev, AT91_TWI_IER, AT91_TWI_TXCOMP); } else { at91_twi_write_next_byte(dev); at91_twi_write(dev, AT91_TWI_IER, - AT91_TWI_TXCOMP | AT91_TWI_TXRDY); + AT91_TWI_TXCOMP | + AT91_TWI_NACK | + AT91_TWI_TXRDY); } } - ret = wait_for_completion_interruptible_timeout(&dev->cmd_complete, - dev->adapter.timeout); + ret = wait_for_completion_timeout(&dev->cmd_complete, + dev->adapter.timeout); if (ret == 0) { dev_err(dev->dev, "controller timed out\n"); at91_init_twi_bus(dev); @@ -444,6 +493,12 @@ ret = -EIO; goto error; } + if (dev->recv_len_abort) { + dev_err(dev->dev, "invalid smbus block length recvd\n"); + ret = -EPROTO; + goto error; + } + dev_dbg(dev->dev, "transfer complete\n"); return 0; @@ -500,6 +555,7 @@ dev->buf_len = m_start->len; dev->buf = m_start->buf; dev->msg = m_start; + dev->recv_len_abort = false; ret = at91_do_twi_transfer(dev); --- linux-3.13.0.orig/drivers/i2c/busses/i2c-cpm.c +++ linux-3.13.0/drivers/i2c/busses/i2c-cpm.c @@ -40,8 +40,12 @@ #include #include #include +#include #include +#include #include +#include +#include #include #include --- linux-3.13.0.orig/drivers/i2c/busses/i2c-davinci.c +++ linux-3.13.0/drivers/i2c/busses/i2c-davinci.c @@ -411,11 +411,9 @@ if (dev->cmd_err & DAVINCI_I2C_STR_NACK) { if (msg->flags & I2C_M_IGNORE_NAK) return msg->len; - if (stop) { - w = davinci_i2c_read_reg(dev, DAVINCI_I2C_MDR_REG); - w |= DAVINCI_I2C_MDR_STP; - davinci_i2c_write_reg(dev, DAVINCI_I2C_MDR_REG, w); - } + w = davinci_i2c_read_reg(dev, DAVINCI_I2C_MDR_REG); + w |= DAVINCI_I2C_MDR_STP; + davinci_i2c_write_reg(dev, DAVINCI_I2C_MDR_REG, w); return -EREMOTEIO; } return -EIO; --- linux-3.13.0.orig/drivers/i2c/busses/i2c-designware-core.c +++ linux-3.13.0/drivers/i2c/busses/i2c-designware-core.c @@ -418,6 +418,9 @@ */ dw_writel(dev, msgs[dev->msg_write_idx].addr | ic_tar, DW_IC_TAR); + /* enforce disabled interrupts (due to HW issues) */ + i2c_dw_disable_int(dev); + /* Enable the adapter */ __i2c_dw_enable(dev, true); --- linux-3.13.0.orig/drivers/i2c/busses/i2c-designware-platdrv.c +++ linux-3.13.0/drivers/i2c/busses/i2c-designware-platdrv.c @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -53,6 +54,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) { @@ -60,6 +77,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; @@ -202,17 +222,18 @@ adap->dev.parent = &pdev->dev; adap->dev.of_node = pdev->dev.of_node; + pm_runtime_set_autosuspend_delay(&pdev->dev, 1000); + pm_runtime_use_autosuspend(&pdev->dev); + pm_runtime_set_active(&pdev->dev); + 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; } - pm_runtime_set_autosuspend_delay(&pdev->dev, 1000); - pm_runtime_use_autosuspend(&pdev->dev); - pm_runtime_set_active(&pdev->dev); - pm_runtime_enable(&pdev->dev); - return 0; } --- linux-3.13.0.orig/drivers/i2c/busses/i2c-mv64xxx.c +++ linux-3.13.0/drivers/i2c/busses/i2c-mv64xxx.c @@ -97,7 +97,6 @@ enum { MV64XXX_I2C_ACTION_INVALID, MV64XXX_I2C_ACTION_CONTINUE, - MV64XXX_I2C_ACTION_OFFLOAD_SEND_START, MV64XXX_I2C_ACTION_SEND_START, MV64XXX_I2C_ACTION_SEND_RESTART, MV64XXX_I2C_ACTION_OFFLOAD_RESTART, @@ -149,6 +148,8 @@ bool offload_enabled; /* 5us delay in order to avoid repeated start timing violation */ bool errata_delay; + /* 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 = { @@ -204,6 +205,9 @@ unsigned long ctrl_reg; struct i2c_msg *msg = drv_data->msgs; + if (!drv_data->offload_enabled) + return -EOPNOTSUPP; + drv_data->msg = msg; drv_data->byte_posn = 0; drv_data->bytes_left = msg->len; @@ -433,8 +437,7 @@ drv_data->msgs++; drv_data->num_msgs--; - if (!(drv_data->offload_enabled && - mv64xxx_i2c_offload_msg(drv_data))) { + if (mv64xxx_i2c_offload_msg(drv_data) < 0) { drv_data->cntl_bits |= MV64XXX_I2C_REG_CONTROL_START; writel(drv_data->cntl_bits, drv_data->reg_base + drv_data->reg_offsets.control); @@ -458,15 +461,14 @@ drv_data->reg_base + drv_data->reg_offsets.control); break; - case MV64XXX_I2C_ACTION_OFFLOAD_SEND_START: - if (!mv64xxx_i2c_offload_msg(drv_data)) - break; - else - drv_data->action = MV64XXX_I2C_ACTION_SEND_START; - /* FALLTHRU */ case MV64XXX_I2C_ACTION_SEND_START: - writel(drv_data->cntl_bits | MV64XXX_I2C_REG_CONTROL_START, - drv_data->reg_base + drv_data->reg_offsets.control); + /* Can we offload this msg ? */ + if (mv64xxx_i2c_offload_msg(drv_data) < 0) { + /* No, switch to standard path */ + mv64xxx_i2c_prepare_for_io(drv_data, drv_data->msgs); + writel(drv_data->cntl_bits | MV64XXX_I2C_REG_CONTROL_START, + drv_data->reg_base + drv_data->reg_offsets.control); + } break; case MV64XXX_I2C_ACTION_SEND_ADDR_1: @@ -625,15 +627,10 @@ unsigned long flags; spin_lock_irqsave(&drv_data->lock, flags); - if (drv_data->offload_enabled) { - drv_data->action = MV64XXX_I2C_ACTION_OFFLOAD_SEND_START; - drv_data->state = MV64XXX_I2C_STATE_WAITING_FOR_START_COND; - } else { - mv64xxx_i2c_prepare_for_io(drv_data, msg); - drv_data->action = MV64XXX_I2C_ACTION_SEND_START; - drv_data->state = MV64XXX_I2C_STATE_WAITING_FOR_START_COND; - } + drv_data->action = MV64XXX_I2C_ACTION_SEND_START; + drv_data->state = MV64XXX_I2C_STATE_WAITING_FOR_START_COND; + drv_data->send_stop = is_last; drv_data->block = 1; mv64xxx_i2c_do_action(drv_data); @@ -692,6 +689,7 @@ { .compatible = "allwinner,sun4i-i2c", .data = &mv64xxx_i2c_regs_sun4i}, { .compatible = "marvell,mv64xxx-i2c", .data = &mv64xxx_i2c_regs_mv64xxx}, { .compatible = "marvell,mv78230-i2c", .data = &mv64xxx_i2c_regs_mv64xxx}, + { .compatible = "marvell,mv78230-a0-i2c", .data = &mv64xxx_i2c_regs_mv64xxx}, {} }; MODULE_DEVICE_TABLE(of, mv64xxx_i2c_of_match_table); @@ -699,25 +697,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) @@ -752,12 +754,14 @@ } tclk = clk_get_rate(drv_data->clk); - rc = of_property_read_u32(np, "clock-frequency", &bus_freq); - if (rc) + 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; } @@ -783,6 +787,10 @@ drv_data->errata_delay = true; } + if (of_device_is_compatible(np, "marvell,mv78230-a0-i2c")) { + drv_data->offload_enabled = false; + drv_data->errata_delay = true; + } out: return rc; #endif --- linux-3.13.0.orig/drivers/i2c/busses/i2c-omap.c +++ linux-3.13.0/drivers/i2c/busses/i2c-omap.c @@ -926,14 +926,12 @@ if (stat & OMAP_I2C_STAT_NACK) { err |= OMAP_I2C_STAT_NACK; omap_i2c_ack_stat(dev, OMAP_I2C_STAT_NACK); - break; } if (stat & OMAP_I2C_STAT_AL) { dev_err(dev->dev, "Arbitration lost\n"); err |= OMAP_I2C_STAT_AL; omap_i2c_ack_stat(dev, OMAP_I2C_STAT_AL); - break; } /* --- linux-3.13.0.orig/drivers/i2c/busses/i2c-piix4.c +++ linux-3.13.0/drivers/i2c/busses/i2c-piix4.c @@ -22,7 +22,7 @@ Intel PIIX4, 440MX Serverworks OSB4, CSB5, CSB6, HT-1000, HT-1100 ATI IXP200, IXP300, IXP400, SB600, SB700/SP5100, SB800 - AMD Hudson-2, CZ + AMD Hudson-2, ML, CZ SMSC Victory66 Note: we assume there can only be one device, with one or more @@ -235,7 +235,8 @@ { unsigned short piix4_smba; unsigned short smba_idx = 0xcd6; - u8 smba_en_lo, smba_en_hi, i2ccfg, i2ccfg_offset = 0x10, smb_en; + u8 smba_en_lo, smba_en_hi, smb_en, smb_en_status; + u8 i2ccfg, i2ccfg_offset = 0x10; /* SB800 and later SMBus does not support forcing address */ if (force || force_addr) { @@ -245,7 +246,15 @@ } /* Determine the address of the SMBus areas */ - smb_en = (aux) ? 0x28 : 0x2c; + if ((PIIX4_dev->vendor == PCI_VENDOR_ID_AMD && + PIIX4_dev->device == PCI_DEVICE_ID_AMD_HUDSON2_SMBUS && + PIIX4_dev->revision >= 0x41) || + (PIIX4_dev->vendor == PCI_VENDOR_ID_AMD && + PIIX4_dev->device == 0x790b && + PIIX4_dev->revision >= 0x49)) + smb_en = 0x00; + else + smb_en = (aux) ? 0x28 : 0x2c; if (!request_region(smba_idx, 2, "smba_idx")) { dev_err(&PIIX4_dev->dev, "SMBus base address index region " @@ -258,13 +267,22 @@ smba_en_hi = inb_p(smba_idx + 1); release_region(smba_idx, 2); - if ((smba_en_lo & 1) == 0) { + if (!smb_en) { + smb_en_status = smba_en_lo & 0x10; + piix4_smba = smba_en_hi << 8; + if (aux) + piix4_smba |= 0x20; + } else { + smb_en_status = smba_en_lo & 0x01; + piix4_smba = ((smba_en_hi << 8) | smba_en_lo) & 0xffe0; + } + + if (!smb_en_status) { dev_err(&PIIX4_dev->dev, "Host SMBus controller not enabled!\n"); return -ENODEV; } - piix4_smba = ((smba_en_hi << 8) | smba_en_lo) & 0xffe0; if (acpi_check_region(piix4_smba, SMBIOSIZE, piix4_driver.name)) return -ENODEV; @@ -277,7 +295,8 @@ /* Aux SMBus does not support IRQ information */ if (aux) { dev_info(&PIIX4_dev->dev, - "SMBus Host Controller at 0x%x\n", piix4_smba); + "Auxiliary SMBus Host Controller at 0x%x\n", + piix4_smba); return piix4_smba; } --- linux-3.13.0.orig/drivers/i2c/busses/i2c-rcar.c +++ linux-3.13.0/drivers/i2c/busses/i2c-rcar.c @@ -488,6 +488,9 @@ msr = rcar_i2c_status_get(priv); + /* Only handle interrupts that are currently enabled */ + msr &= rcar_i2c_read(priv, ICMIER); + /* * Arbitration lost */ @@ -503,15 +506,6 @@ } /* - * Stop - */ - if (msr & MST) { - dev_dbg(dev, "Stop\n"); - rcar_i2c_flags_set(priv, ID_DONE); - goto out; - } - - /* * Nack */ if (msr & MNR) { @@ -524,6 +518,12 @@ goto out; } + /* Stop */ + if (msr & MST) { + rcar_i2c_flags_set(priv, ID_DONE); + goto out; + } + /* * recv/send */ @@ -567,6 +567,12 @@ ret = -EINVAL; for (i = 0; i < num; i++) { + /* This HW can't send STOP after address phase */ + if (msgs[i].len == 0) { + ret = -EOPNOTSUPP; + break; + } + /*-------------- spin lock -----------------*/ spin_lock_irqsave(&priv->lock, flags); @@ -631,7 +637,8 @@ static u32 rcar_i2c_func(struct i2c_adapter *adap) { - return I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL; + /* This HW can't do SMBUS_QUICK and NOSTART */ + return I2C_FUNC_I2C | (I2C_FUNC_SMBUS_EMUL & ~I2C_FUNC_SMBUS_QUICK); } static const struct i2c_algorithm rcar_i2c_algo = { @@ -705,15 +712,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-3.13.0.orig/drivers/i2c/busses/i2c-s3c2410.c +++ linux-3.13.0/drivers/i2c/busses/i2c-s3c2410.c @@ -712,14 +712,16 @@ int ret; pm_runtime_get_sync(&adap->dev); - clk_prepare_enable(i2c->clk); + ret = clk_enable(i2c->clk); + if (ret) + return ret; for (retry = 0; retry < adap->retries; retry++) { ret = s3c24xx_i2c_doxfer(i2c, msgs, num); if (ret != -EAGAIN) { - clk_disable_unprepare(i2c->clk); + clk_disable(i2c->clk); pm_runtime_put(&adap->dev); return ret; } @@ -729,7 +731,7 @@ udelay(100); } - clk_disable_unprepare(i2c->clk); + clk_disable(i2c->clk); pm_runtime_put(&adap->dev); return -EREMOTEIO; } @@ -1109,7 +1111,7 @@ clk_prepare_enable(i2c->clk); ret = s3c24xx_i2c_init(i2c); - clk_disable_unprepare(i2c->clk); + clk_disable(i2c->clk); if (ret != 0) { dev_err(&pdev->dev, "I2C controller init failed\n"); return ret; @@ -1121,6 +1123,7 @@ i2c->irq = ret = platform_get_irq(pdev, 0); if (ret <= 0) { dev_err(&pdev->dev, "cannot find IRQ\n"); + clk_unprepare(i2c->clk); return ret; } @@ -1129,12 +1132,14 @@ if (ret != 0) { dev_err(&pdev->dev, "cannot claim IRQ %d\n", i2c->irq); + clk_unprepare(i2c->clk); return ret; } ret = s3c24xx_i2c_register_cpufreq(i2c); if (ret < 0) { dev_err(&pdev->dev, "failed to register cpufreq notifier\n"); + clk_unprepare(i2c->clk); return ret; } @@ -1147,16 +1152,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)); @@ -1172,6 +1180,8 @@ { struct s3c24xx_i2c *i2c = platform_get_drvdata(pdev); + clk_unprepare(i2c->clk); + pm_runtime_disable(&i2c->adap.dev); pm_runtime_disable(&pdev->dev); @@ -1200,11 +1210,14 @@ { struct platform_device *pdev = to_platform_device(dev); struct s3c24xx_i2c *i2c = platform_get_drvdata(pdev); + int ret; - i2c->suspended = 0; - clk_prepare_enable(i2c->clk); + ret = clk_enable(i2c->clk); + if (ret) + return ret; s3c24xx_i2c_init(i2c); - clk_disable_unprepare(i2c->clk); + clk_disable(i2c->clk); + i2c->suspended = 0; return 0; } --- linux-3.13.0.orig/drivers/i2c/i2c-core.c +++ linux-3.13.0/drivers/i2c/i2c-core.c @@ -212,6 +212,7 @@ adap->bus_recovery_info->set_scl(adap, 1); return i2c_generic_recovery(adap); } +EXPORT_SYMBOL_GPL(i2c_generic_scl_recovery); int i2c_generic_gpio_recovery(struct i2c_adapter *adap) { @@ -226,6 +227,7 @@ return ret; } +EXPORT_SYMBOL_GPL(i2c_generic_gpio_recovery); int i2c_recover_bus(struct i2c_adapter *adap) { @@ -235,6 +237,7 @@ dev_dbg(&adap->dev, "Trying i2c bus recovery\n"); return adap->bus_recovery_info->recover_bus(adap); } +EXPORT_SYMBOL_GPL(i2c_recover_bus); static int i2c_device_probe(struct device *dev) { --- linux-3.13.0.orig/drivers/i2c/i2c-mux.c +++ linux-3.13.0/drivers/i2c/i2c-mux.c @@ -50,7 +50,7 @@ ret = priv->select(parent, priv->mux_priv, priv->chan_id); if (ret >= 0) - ret = parent->algo->master_xfer(parent, msgs, num); + ret = __i2c_transfer(parent, msgs, num); if (priv->deselect) priv->deselect(parent, priv->mux_priv, priv->chan_id); --- linux-3.13.0.orig/drivers/i2c/muxes/i2c-mux-pca9541.c +++ linux-3.13.0/drivers/i2c/muxes/i2c-mux-pca9541.c @@ -105,7 +105,7 @@ buf[0] = command; buf[1] = val; msg.buf = buf; - ret = adap->algo->master_xfer(adap, &msg, 1); + ret = __i2c_transfer(adap, &msg, 1); } else { union i2c_smbus_data data; @@ -145,7 +145,7 @@ .buf = &val } }; - ret = adap->algo->master_xfer(adap, msg, 2); + ret = __i2c_transfer(adap, msg, 2); if (ret == 2) ret = val; else if (ret >= 0) --- linux-3.13.0.orig/drivers/i2c/muxes/i2c-mux-pca954x.c +++ linux-3.13.0/drivers/i2c/muxes/i2c-mux-pca954x.c @@ -133,7 +133,7 @@ msg.len = 1; buf[0] = val; msg.buf = buf; - ret = adap->algo->master_xfer(adap, &msg, 1); + ret = __i2c_transfer(adap, &msg, 1); } else { union i2c_smbus_data data; ret = adap->algo->smbus_xfer(adap, client->addr, --- linux-3.13.0.orig/drivers/iio/accel/bma180.c +++ linux-3.13.0/drivers/iio/accel/bma180.c @@ -68,13 +68,13 @@ /* Defaults values */ #define BMA180_DEF_PMODE 0 #define BMA180_DEF_BW 20 -#define BMA180_DEF_SCALE 250 +#define BMA180_DEF_SCALE 2452 /* Available values for sysfs */ #define BMA180_FLP_FREQ_AVAILABLE \ "10 20 40 75 150 300" #define BMA180_SCALE_AVAILABLE \ - "0.000130 0.000190 0.000250 0.000380 0.000500 0.000990 0.001980" + "0.001275 0.001863 0.002452 0.003727 0.004903 0.009709 0.019417" struct bma180_data { struct i2c_client *client; @@ -94,7 +94,7 @@ }; static int bw_table[] = { 10, 20, 40, 75, 150, 300 }; /* Hz */ -static int scale_table[] = { 130, 190, 250, 380, 500, 990, 1980 }; +static int scale_table[] = { 1275, 1863, 2452, 3727, 4903, 9709, 19417 }; static int bma180_get_acc_reg(struct bma180_data *data, enum bma180_axis axis) { @@ -376,6 +376,8 @@ mutex_unlock(&data->mutex); return ret; case IIO_CHAN_INFO_LOW_PASS_FILTER_3DB_FREQUENCY: + if (val2) + return -EINVAL; mutex_lock(&data->mutex); ret = bma180_set_bw(data, val); mutex_unlock(&data->mutex); @@ -476,7 +478,7 @@ mutex_lock(&data->mutex); - for_each_set_bit(bit, indio_dev->buffer->scan_mask, + for_each_set_bit(bit, indio_dev->active_scan_mask, indio_dev->masklength) { ret = bma180_get_acc_reg(data, bit); if (ret < 0) { @@ -564,7 +566,7 @@ trig->ops = &bma180_trigger_ops; iio_trigger_set_drvdata(trig, indio_dev); data->trig = trig; - indio_dev->trig = trig; + indio_dev->trig = iio_trigger_get(trig); ret = iio_trigger_register(trig); if (ret) --- linux-3.13.0.orig/drivers/iio/adc/ad7793.c +++ linux-3.13.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-3.13.0.orig/drivers/iio/adc/ad_sigma_delta.c +++ linux-3.13.0/drivers/iio/adc/ad_sigma_delta.c @@ -472,7 +472,7 @@ goto error_free_irq; /* select default trigger */ - indio_dev->trig = sigma_delta->trig; + indio_dev->trig = iio_trigger_get(sigma_delta->trig); return 0; --- linux-3.13.0.orig/drivers/iio/adc/at91_adc.c +++ linux-3.13.0/drivers/iio/adc/at91_adc.c @@ -58,7 +58,7 @@ u8 ts_pen_detect_sensitivity; /* startup time calculate function */ - u32 (*calc_startup_ticks)(u8 startup_time, u32 adc_clk_khz); + u32 (*calc_startup_ticks)(u32 startup_time, u32 adc_clk_khz); u8 num_channels; struct at91_adc_reg_desc registers; @@ -78,11 +78,12 @@ bool done; int irq; u16 last_value; + int chnb; struct mutex lock; u8 num_channels; void __iomem *reg_base; struct at91_adc_reg_desc *registers; - u8 startup_time; + u32 startup_time; u8 sample_hold_time; bool sleep_mode; struct iio_trigger **trig; @@ -151,7 +152,7 @@ disable_irq_nosync(irq); iio_trigger_poll(idev->trig, iio_get_time_ns()); } else { - st->last_value = at91_adc_readl(st, AT91_ADC_LCDR); + st->last_value = at91_adc_readl(st, AT91_ADC_CHAN(st, st->chnb)); st->done = true; wake_up_interruptible(&st->wq_data_avail); } @@ -230,7 +231,7 @@ AT91_ADC_IER_YRDY | AT91_ADC_IER_PRDY; - if (status & st->registers->drdy_mask) + if (status & GENMASK(st->num_channels - 1, 0)) handle_adc_eoc_trigger(irq, idev); if (status & AT91_ADC_IER_PEN) { @@ -322,12 +323,11 @@ return idev->num_channels; } -static u8 at91_adc_get_trigger_value_by_name(struct iio_dev *idev, +static int at91_adc_get_trigger_value_by_name(struct iio_dev *idev, struct at91_adc_trigger *triggers, const char *trigger_name) { struct at91_adc_state *st = iio_priv(idev); - u8 value = 0; int i; for (i = 0; i < st->trigger_number; i++) { @@ -340,32 +340,32 @@ return -ENOMEM; if (strcmp(trigger_name, name) == 0) { - value = triggers[i].value; kfree(name); - break; + if (triggers[i].value == 0) + return -EINVAL; + return triggers[i].value; } kfree(name); } - return value; + return -EINVAL; } static int at91_adc_configure_trigger(struct iio_trigger *trig, bool state) { struct iio_dev *idev = iio_trigger_get_drvdata(trig); struct at91_adc_state *st = iio_priv(idev); - struct iio_buffer *buffer = idev->buffer; struct at91_adc_reg_desc *reg = st->registers; u32 status = at91_adc_readl(st, reg->trigger_register); - u8 value; + int value; u8 bit; value = at91_adc_get_trigger_value_by_name(idev, st->trigger_list, idev->trig->name); - if (value == 0) - return -EINVAL; + if (value < 0) + return value; if (state) { st->buffer = kmalloc(idev->scan_bytes, GFP_KERNEL); @@ -375,7 +375,7 @@ at91_adc_writel(st, reg->trigger_register, status | value); - for_each_set_bit(bit, buffer->scan_mask, + for_each_set_bit(bit, idev->active_scan_mask, st->num_channels) { struct iio_chan_spec const *chan = idev->channels + bit; at91_adc_writel(st, AT91_ADC_CHER, @@ -390,7 +390,7 @@ at91_adc_writel(st, reg->trigger_register, status & ~value); - for_each_set_bit(bit, buffer->scan_mask, + for_each_set_bit(bit, idev->active_scan_mask, st->num_channels) { struct iio_chan_spec const *chan = idev->channels + bit; at91_adc_writel(st, AT91_ADC_CHDR, @@ -501,9 +501,10 @@ case IIO_CHAN_INFO_RAW: mutex_lock(&st->lock); + st->chnb = chan->channel; at91_adc_writel(st, AT91_ADC_CHER, AT91_ADC_CH(chan->channel)); - at91_adc_writel(st, AT91_ADC_IER, st->registers->drdy_mask); + at91_adc_writel(st, AT91_ADC_IER, BIT(chan->channel)); at91_adc_writel(st, AT91_ADC_CR, AT91_ADC_START); ret = wait_event_interruptible_timeout(st->wq_data_avail, @@ -520,7 +521,7 @@ at91_adc_writel(st, AT91_ADC_CHDR, AT91_ADC_CH(chan->channel)); - at91_adc_writel(st, AT91_ADC_IDR, st->registers->drdy_mask); + at91_adc_writel(st, AT91_ADC_IDR, BIT(chan->channel)); st->last_value = 0; st->done = false; @@ -590,7 +591,7 @@ return ret; } -static u32 calc_startup_ticks_9260(u8 startup_time, u32 adc_clk_khz) +static u32 calc_startup_ticks_9260(u32 startup_time, u32 adc_clk_khz) { /* * Number of ticks needed to cover the startup time of the ADC @@ -601,7 +602,7 @@ return round_up((startup_time * adc_clk_khz / 1000) - 1, 8) / 8; } -static u32 calc_startup_ticks_9x5(u8 startup_time, u32 adc_clk_khz) +static u32 calc_startup_ticks_9x5(u32 startup_time, u32 adc_clk_khz) { /* * For sama5d3x and at91sam9x5, the formula changes to: @@ -765,14 +766,17 @@ if (!pdata) return -EINVAL; + st->caps = (struct at91_adc_caps *) + platform_get_device_id(pdev)->driver_data; + st->use_external = pdata->use_external_triggers; st->vref_mv = pdata->vref; st->channels_mask = pdata->channels_used; - st->num_channels = pdata->num_channels; + st->num_channels = st->caps->num_channels; st->startup_time = pdata->startup_time; st->trigger_number = pdata->trigger_number; st->trigger_list = pdata->trigger_list; - st->registers = pdata->registers; + st->registers = &st->caps->registers; return 0; } @@ -1101,7 +1105,6 @@ return 0; } -#ifdef CONFIG_OF static struct at91_adc_caps at91sam9260_caps = { .calc_startup_ticks = calc_startup_ticks_9260, .num_channels = 4, @@ -1154,11 +1157,27 @@ {}, }; MODULE_DEVICE_TABLE(of, at91_adc_dt_ids); -#endif + +static const struct platform_device_id at91_adc_ids[] = { + { + .name = "at91sam9260-adc", + .driver_data = (unsigned long)&at91sam9260_caps, + }, { + .name = "at91sam9g45-adc", + .driver_data = (unsigned long)&at91sam9g45_caps, + }, { + .name = "at91sam9x5-adc", + .driver_data = (unsigned long)&at91sam9x5_caps, + }, { + /* terminator */ + } +}; +MODULE_DEVICE_TABLE(platform, at91_adc_ids); static struct platform_driver at91_adc_driver = { .probe = at91_adc_probe, .remove = at91_adc_remove, + .id_table = at91_adc_ids, .driver = { .name = DRIVER_NAME, .of_match_table = of_match_ptr(at91_adc_dt_ids), --- linux-3.13.0.orig/drivers/iio/adc/max1363.c +++ linux-3.13.0/drivers/iio/adc/max1363.c @@ -1258,8 +1258,8 @@ .num_modes = ARRAY_SIZE(max1238_mode_list), .default_mode = s0to11, .info = &max1238_info, - .channels = max1238_channels, - .num_channels = ARRAY_SIZE(max1238_channels), + .channels = max1038_channels, + .num_channels = ARRAY_SIZE(max1038_channels), }, [max11605] = { .bits = 8, @@ -1268,8 +1268,8 @@ .num_modes = ARRAY_SIZE(max1238_mode_list), .default_mode = s0to11, .info = &max1238_info, - .channels = max1238_channels, - .num_channels = ARRAY_SIZE(max1238_channels), + .channels = max1038_channels, + .num_channels = ARRAY_SIZE(max1038_channels), }, [max11606] = { .bits = 10, @@ -1318,8 +1318,8 @@ .num_modes = ARRAY_SIZE(max1238_mode_list), .default_mode = s0to11, .info = &max1238_info, - .channels = max1238_channels, - .num_channels = ARRAY_SIZE(max1238_channels), + .channels = max1138_channels, + .num_channels = ARRAY_SIZE(max1138_channels), }, [max11611] = { .bits = 10, @@ -1328,8 +1328,8 @@ .num_modes = ARRAY_SIZE(max1238_mode_list), .default_mode = s0to11, .info = &max1238_info, - .channels = max1238_channels, - .num_channels = ARRAY_SIZE(max1238_channels), + .channels = max1138_channels, + .num_channels = ARRAY_SIZE(max1138_channels), }, [max11612] = { .bits = 12, @@ -1560,7 +1560,7 @@ st->client = client; st->vref_uv = st->chip_info->int_vref_mv * 1000; - vref = devm_regulator_get(&client->dev, "vref"); + vref = devm_regulator_get_optional(&client->dev, "vref"); if (!IS_ERR(vref)) { int vref_uv; --- linux-3.13.0.orig/drivers/iio/adc/mcp3422.c +++ linux-3.13.0/drivers/iio/adc/mcp3422.c @@ -57,20 +57,11 @@ .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SAMP_FREQ), \ } -/* LSB is in nV to eliminate floating point */ -static const u32 rates_to_lsb[] = {1000000, 250000, 62500, 15625}; - -/* - * scales calculated as: - * rates_to_lsb[sample_rate] / (1 << pga); - * pga is 1 for 0, 2 - */ - static const int mcp3422_scales[4][4] = { - { 1000000, 250000, 62500, 15625 }, - { 500000 , 125000, 31250, 7812 }, - { 250000 , 62500 , 15625, 3906 }, - { 125000 , 31250 , 7812 , 1953 } }; + { 1000000, 500000, 250000, 125000 }, + { 250000 , 125000, 62500 , 31250 }, + { 62500 , 31250 , 15625 , 7812 }, + { 15625 , 7812 , 3906 , 1953 } }; /* Constant msleep times for data acquisitions */ static const int mcp3422_read_times[4] = { --- linux-3.13.0.orig/drivers/iio/adc/ti_am335x_adc.c +++ linux-3.13.0/drivers/iio/adc/ti_am335x_adc.c @@ -172,12 +172,11 @@ static int tiadc_buffer_postenable(struct iio_dev *indio_dev) { struct tiadc_device *adc_dev = iio_priv(indio_dev); - struct iio_buffer *buffer = indio_dev->buffer; unsigned int enb = 0; u8 bit; tiadc_step_config(indio_dev); - for_each_set_bit(bit, buffer->scan_mask, adc_dev->channels) + for_each_set_bit(bit, indio_dev->active_scan_mask, adc_dev->channels) enb |= (get_adc_step_bit(adc_dev, bit) << 1); adc_dev->buffer_en_ch_steps = enb; @@ -342,7 +341,7 @@ if (time_after(jiffies, timeout)) return -EAGAIN; } - map_val = chan->channel + TOTAL_CHANNELS; + map_val = adc_dev->channel_step[chan->scan_index]; /* * When the sub-system is first enabled, --- linux-3.13.0.orig/drivers/iio/adc/twl6030-gpadc.c +++ linux-3.13.0/drivers/iio/adc/twl6030-gpadc.c @@ -1003,7 +1003,7 @@ module_platform_driver(twl6030_gpadc_driver); -MODULE_ALIAS("platform: " DRIVER_NAME); +MODULE_ALIAS("platform:" DRIVER_NAME); MODULE_AUTHOR("Balaji T K "); MODULE_AUTHOR("Graeme Gregory "); MODULE_AUTHOR("Oleksandr Kozaruk dev, "Trigger Register Failed\n"); goto error_free_trig; } - indio_dev->trig = attrb->trigger = trig; + attrb->trigger = trig; + indio_dev->trig = iio_trigger_get(trig); return ret; --- linux-3.13.0.orig/drivers/iio/common/st_sensors/st_sensors_buffer.c +++ linux-3.13.0/drivers/iio/common/st_sensors/st_sensors_buffer.c @@ -71,7 +71,7 @@ goto st_sensors_free_memory; } - for (i = 0; i < n * num_data_channels; i++) { + for (i = 0; i < n * byte_for_channel; i++) { if (i < n) buf[i] = rx_array[i]; else --- linux-3.13.0.orig/drivers/iio/common/st_sensors/st_sensors_trigger.c +++ linux-3.13.0/drivers/iio/common/st_sensors/st_sensors_trigger.c @@ -49,7 +49,7 @@ dev_err(&indio_dev->dev, "failed to register iio trigger.\n"); goto iio_trigger_register_error; } - indio_dev->trig = sdata->trig; + indio_dev->trig = iio_trigger_get(sdata->trig); return 0; --- linux-3.13.0.orig/drivers/iio/dac/ad5064.c +++ linux-3.13.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, \ @@ -299,35 +303,38 @@ .info_mask_separate = BIT(IIO_CHAN_INFO_RAW) | \ BIT(IIO_CHAN_INFO_SCALE), \ .address = addr, \ - .scan_type = IIO_ST('u', (bits), 16, 20 - (bits)), \ + .scan_type = IIO_ST('u', (bits), 16, (_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] = { @@ -377,6 +384,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, @@ -413,6 +432,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) @@ -593,10 +624,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, @@ -612,12 +649,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-3.13.0.orig/drivers/iio/dac/ad5624r_spi.c +++ linux-3.13.0/drivers/iio/dac/ad5624r_spi.c @@ -22,7 +22,7 @@ #include "ad5624r.h" static int ad5624r_spi_write(struct spi_device *spi, - u8 cmd, u8 addr, u16 val, u8 len) + u8 cmd, u8 addr, u16 val, u8 shift) { u32 data; u8 msg[3]; @@ -35,7 +35,7 @@ * 14-, 12-bit input code followed by 0, 2, or 4 don't care bits, * for the AD5664R, AD5644R, and AD5624R, respectively. */ - data = (0 << 22) | (cmd << 19) | (addr << 16) | (val << (16 - len)); + data = (0 << 22) | (cmd << 19) | (addr << 16) | (val << shift); msg[0] = data >> 16; msg[1] = data >> 8; msg[2] = data; --- linux-3.13.0.orig/drivers/iio/dac/ad5686.c +++ linux-3.13.0/drivers/iio/dac/ad5686.c @@ -317,7 +317,7 @@ st = iio_priv(indio_dev); spi_set_drvdata(spi, indio_dev); - st->reg = devm_regulator_get(&spi->dev, "vcc"); + st->reg = devm_regulator_get_optional(&spi->dev, "vcc"); if (!IS_ERR(st->reg)) { ret = regulator_enable(st->reg); if (ret) --- linux-3.13.0.orig/drivers/iio/dac/mcp4725.c +++ linux-3.13.0/drivers/iio/dac/mcp4725.c @@ -302,6 +302,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-3.13.0.orig/drivers/iio/gyro/Kconfig +++ linux-3.13.0/drivers/iio/gyro/Kconfig @@ -70,7 +70,7 @@ select IIO_TRIGGERED_BUFFER if (IIO_BUFFER) help Say yes here to build support for STMicroelectronics gyroscopes: - L3G4200D, LSM330DL, L3GD20, L3GD20H, LSM330DLC, L3G4IS, LSM330. + L3G4200D, LSM330DL, L3GD20, LSM330DLC, L3G4IS, LSM330. This driver can also be built as a module. If so, these modules will be created: --- linux-3.13.0.orig/drivers/iio/gyro/itg3200_buffer.c +++ linux-3.13.0/drivers/iio/gyro/itg3200_buffer.c @@ -132,7 +132,7 @@ goto error_free_irq; /* select default trigger */ - indio_dev->trig = st->trig; + indio_dev->trig = iio_trigger_get(st->trig); return 0; --- linux-3.13.0.orig/drivers/iio/gyro/st_gyro.h +++ linux-3.13.0/drivers/iio/gyro/st_gyro.h @@ -19,7 +19,6 @@ #define LSM330DL_GYRO_DEV_NAME "lsm330dl_gyro" #define LSM330DLC_GYRO_DEV_NAME "lsm330dlc_gyro" #define L3GD20_GYRO_DEV_NAME "l3gd20" -#define L3GD20H_GYRO_DEV_NAME "l3gd20h" #define L3G4IS_GYRO_DEV_NAME "l3g4is_ui" #define LSM330_GYRO_DEV_NAME "lsm330_gyro" --- linux-3.13.0.orig/drivers/iio/gyro/st_gyro_core.c +++ linux-3.13.0/drivers/iio/gyro/st_gyro_core.c @@ -167,11 +167,10 @@ .wai = ST_GYRO_2_WAI_EXP, .sensors_supported = { [0] = L3GD20_GYRO_DEV_NAME, - [1] = L3GD20H_GYRO_DEV_NAME, - [2] = LSM330D_GYRO_DEV_NAME, - [3] = LSM330DLC_GYRO_DEV_NAME, - [4] = L3G4IS_GYRO_DEV_NAME, - [5] = LSM330_GYRO_DEV_NAME, + [1] = LSM330D_GYRO_DEV_NAME, + [2] = LSM330DLC_GYRO_DEV_NAME, + [3] = L3G4IS_GYRO_DEV_NAME, + [4] = LSM330_GYRO_DEV_NAME, }, .ch = (struct iio_chan_spec *)st_gyro_16bit_channels, .odr = { --- linux-3.13.0.orig/drivers/iio/gyro/st_gyro_i2c.c +++ linux-3.13.0/drivers/iio/gyro/st_gyro_i2c.c @@ -55,7 +55,6 @@ { LSM330DL_GYRO_DEV_NAME }, { LSM330DLC_GYRO_DEV_NAME }, { L3GD20_GYRO_DEV_NAME }, - { L3GD20H_GYRO_DEV_NAME }, { L3G4IS_GYRO_DEV_NAME }, { LSM330_GYRO_DEV_NAME }, {}, --- linux-3.13.0.orig/drivers/iio/gyro/st_gyro_spi.c +++ linux-3.13.0/drivers/iio/gyro/st_gyro_spi.c @@ -54,7 +54,6 @@ { LSM330DL_GYRO_DEV_NAME }, { LSM330DLC_GYRO_DEV_NAME }, { L3GD20_GYRO_DEV_NAME }, - { L3GD20H_GYRO_DEV_NAME }, { L3G4IS_GYRO_DEV_NAME }, { LSM330_GYRO_DEV_NAME }, {}, --- linux-3.13.0.orig/drivers/iio/imu/adis16400.h +++ linux-3.13.0/drivers/iio/imu/adis16400.h @@ -165,6 +165,7 @@ int filt_int; struct adis adis; + unsigned long avail_scan_mask[2]; }; /* At the moment triggers are only used for ring buffer @@ -189,6 +190,7 @@ ADIS16300_SCAN_INCLI_X, ADIS16300_SCAN_INCLI_Y, ADIS16400_SCAN_ADC, + ADIS16400_SCAN_TIMESTAMP, }; #ifdef CONFIG_IIO_BUFFER --- linux-3.13.0.orig/drivers/iio/imu/adis16400_buffer.c +++ linux-3.13.0/drivers/iio/imu/adis16400_buffer.c @@ -18,7 +18,8 @@ { struct adis16400_state *st = iio_priv(indio_dev); struct adis *adis = &st->adis; - uint16_t *tx, *rx; + unsigned int burst_length; + u8 *tx; if (st->variant->flags & ADIS16400_NO_BURST) return adis_update_scan_mode(indio_dev, scan_mask); @@ -26,27 +27,27 @@ kfree(adis->xfer); kfree(adis->buffer); + /* All but the timestamp channel */ + burst_length = (indio_dev->num_channels - 1) * sizeof(u16); + adis->xfer = kcalloc(2, sizeof(*adis->xfer), GFP_KERNEL); if (!adis->xfer) return -ENOMEM; - adis->buffer = kzalloc(indio_dev->scan_bytes + sizeof(u16), - GFP_KERNEL); + adis->buffer = kzalloc(burst_length + sizeof(u16), GFP_KERNEL); if (!adis->buffer) return -ENOMEM; - rx = adis->buffer; - tx = adis->buffer + indio_dev->scan_bytes; - + tx = adis->buffer + burst_length; tx[0] = ADIS_READ_REG(ADIS16400_GLOB_CMD); tx[1] = 0; adis->xfer[0].tx_buf = tx; adis->xfer[0].bits_per_word = 8; adis->xfer[0].len = 2; - adis->xfer[1].tx_buf = tx; + adis->xfer[1].rx_buf = adis->buffer; adis->xfer[1].bits_per_word = 8; - adis->xfer[1].len = indio_dev->scan_bytes; + adis->xfer[1].len = burst_length; spi_message_init(&adis->msg); spi_message_add_tail(&adis->xfer[0], &adis->msg); --- linux-3.13.0.orig/drivers/iio/imu/adis16400_core.c +++ linux-3.13.0/drivers/iio/imu/adis16400_core.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include @@ -437,6 +438,11 @@ *val = st->variant->temp_scale_nano / 1000000; *val2 = (st->variant->temp_scale_nano % 1000000); return IIO_VAL_INT_PLUS_MICRO; + case IIO_PRESSURE: + /* 20 uBar = 0.002kPascal */ + *val = 0; + *val2 = 2000; + return IIO_VAL_INT_PLUS_MICRO; default: return -EINVAL; } @@ -447,7 +453,7 @@ mutex_unlock(&indio_dev->mlock); if (ret) return ret; - val16 = ((val16 & 0xFFF) << 4) >> 4; + val16 = sign_extend32(val16, 11); *val = val16; return IIO_VAL_INT; case IIO_CHAN_INFO_OFFSET: @@ -479,10 +485,10 @@ } } -#define ADIS16400_VOLTAGE_CHAN(addr, bits, name, si) { \ +#define ADIS16400_VOLTAGE_CHAN(addr, bits, name, si, chn) { \ .type = IIO_VOLTAGE, \ .indexed = 1, \ - .channel = 0, \ + .channel = chn, \ .extend_name = name, \ .info_mask_separate = BIT(IIO_CHAN_INFO_RAW) | \ BIT(IIO_CHAN_INFO_SCALE), \ @@ -498,10 +504,10 @@ } #define ADIS16400_SUPPLY_CHAN(addr, bits) \ - ADIS16400_VOLTAGE_CHAN(addr, bits, "supply", ADIS16400_SCAN_SUPPLY) + ADIS16400_VOLTAGE_CHAN(addr, bits, "supply", ADIS16400_SCAN_SUPPLY, 0) #define ADIS16400_AUX_ADC_CHAN(addr, bits) \ - ADIS16400_VOLTAGE_CHAN(addr, bits, NULL, ADIS16400_SCAN_ADC) + ADIS16400_VOLTAGE_CHAN(addr, bits, NULL, ADIS16400_SCAN_ADC, 1) #define ADIS16400_GYRO_CHAN(mod, addr, bits) { \ .type = IIO_ANGL_VEL, \ @@ -632,7 +638,7 @@ ADIS16400_MAGN_CHAN(Z, ADIS16400_ZMAGN_OUT, 14), ADIS16400_TEMP_CHAN(ADIS16400_TEMP_OUT, 12), ADIS16400_AUX_ADC_CHAN(ADIS16400_AUX_ADC, 12), - IIO_CHAN_SOFT_TIMESTAMP(12) + IIO_CHAN_SOFT_TIMESTAMP(ADIS16400_SCAN_TIMESTAMP), }; static const struct iio_chan_spec adis16448_channels[] = { @@ -659,7 +665,7 @@ }, }, ADIS16400_TEMP_CHAN(ADIS16448_TEMP_OUT, 12), - IIO_CHAN_SOFT_TIMESTAMP(11) + IIO_CHAN_SOFT_TIMESTAMP(ADIS16400_SCAN_TIMESTAMP), }; static const struct iio_chan_spec adis16350_channels[] = { @@ -677,7 +683,7 @@ ADIS16400_MOD_TEMP_CHAN(X, ADIS16350_XTEMP_OUT, 12), ADIS16400_MOD_TEMP_CHAN(Y, ADIS16350_YTEMP_OUT, 12), ADIS16400_MOD_TEMP_CHAN(Z, ADIS16350_ZTEMP_OUT, 12), - IIO_CHAN_SOFT_TIMESTAMP(11) + IIO_CHAN_SOFT_TIMESTAMP(ADIS16400_SCAN_TIMESTAMP), }; static const struct iio_chan_spec adis16300_channels[] = { @@ -690,7 +696,7 @@ ADIS16400_AUX_ADC_CHAN(ADIS16300_AUX_ADC, 12), ADIS16400_INCLI_CHAN(X, ADIS16300_PITCH_OUT, 13), ADIS16400_INCLI_CHAN(Y, ADIS16300_ROLL_OUT, 13), - IIO_CHAN_SOFT_TIMESTAMP(14) + IIO_CHAN_SOFT_TIMESTAMP(ADIS16400_SCAN_TIMESTAMP), }; static const struct iio_chan_spec adis16334_channels[] = { @@ -701,7 +707,7 @@ ADIS16400_ACCEL_CHAN(Y, ADIS16400_YACCL_OUT, 14), ADIS16400_ACCEL_CHAN(Z, ADIS16400_ZACCL_OUT, 14), ADIS16400_TEMP_CHAN(ADIS16350_XTEMP_OUT, 12), - IIO_CHAN_SOFT_TIMESTAMP(8) + IIO_CHAN_SOFT_TIMESTAMP(ADIS16400_SCAN_TIMESTAMP), }; static struct attribute *adis16400_attributes[] = { @@ -800,7 +806,7 @@ .num_channels = ARRAY_SIZE(adis16448_channels), .flags = ADIS16400_HAS_PROD_ID | ADIS16400_HAS_SERIAL_NUMBER, - .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 */ @@ -818,11 +824,6 @@ .debugfs_reg_access = adis_debugfs_reg_access, }; -static const unsigned long adis16400_burst_scan_mask[] = { - ~0UL, - 0, -}; - static const char * const adis16400_status_error_msgs[] = { [ADIS16400_DIAG_STAT_ZACCL_FAIL] = "Z-axis accelerometer self-test failure", [ADIS16400_DIAG_STAT_YACCL_FAIL] = "Y-axis accelerometer self-test failure", @@ -870,6 +871,20 @@ BIT(ADIS16400_DIAG_STAT_POWER_LOW), }; +static void adis16400_setup_chan_mask(struct adis16400_state *st) +{ + const struct adis16400_chip_info *chip_info = st->variant; + unsigned i; + + for (i = 0; i < chip_info->num_channels; i++) { + const struct iio_chan_spec *ch = &chip_info->channels[i]; + + if (ch->scan_index >= 0 && + ch->scan_index != ADIS16400_SCAN_TIMESTAMP) + st->avail_scan_mask[0] |= BIT(ch->scan_index); + } +} + static int adis16400_probe(struct spi_device *spi) { struct adis16400_state *st; @@ -893,8 +908,10 @@ indio_dev->info = &adis16400_info; indio_dev->modes = INDIO_DIRECT_MODE; - if (!(st->variant->flags & ADIS16400_NO_BURST)) - indio_dev->available_scan_masks = adis16400_burst_scan_mask; + if (!(st->variant->flags & ADIS16400_NO_BURST)) { + adis16400_setup_chan_mask(st); + indio_dev->available_scan_masks = st->avail_scan_mask; + } ret = adis_init(&st->adis, indio_dev, spi, &adis16400_data); if (ret) --- linux-3.13.0.orig/drivers/iio/imu/adis16480.c +++ linux-3.13.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 { @@ -533,19 +537,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 */ @@ -702,18 +708,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-3.13.0.orig/drivers/iio/imu/adis_buffer.c +++ linux-3.13.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-3.13.0.orig/drivers/iio/imu/adis_trigger.c +++ linux-3.13.0/drivers/iio/imu/adis_trigger.c @@ -60,7 +60,7 @@ iio_trigger_set_drvdata(adis->trig, adis); ret = iio_trigger_register(adis->trig); - indio_dev->trig = adis->trig; + indio_dev->trig = iio_trigger_get(adis->trig); if (ret) goto error_free_irq; --- linux-3.13.0.orig/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c +++ linux-3.13.0/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c @@ -322,6 +322,24 @@ } } +static int inv_write_raw_get_fmt(struct iio_dev *indio_dev, + struct iio_chan_spec const *chan, long mask) +{ + switch (mask) { + case IIO_CHAN_INFO_SCALE: + switch (chan->type) { + case IIO_ANGL_VEL: + return IIO_VAL_INT_PLUS_NANO; + default: + return IIO_VAL_INT_PLUS_MICRO; + } + default: + return IIO_VAL_INT_PLUS_MICRO; + } + + return -EINVAL; +} + static int inv_mpu6050_write_fsr(struct inv_mpu6050_state *st, int fsr) { int result; @@ -604,6 +622,7 @@ .driver_module = THIS_MODULE, .read_raw = &inv_mpu6050_read_raw, .write_raw = &inv_mpu6050_write_raw, + .write_raw_get_fmt = &inv_write_raw_get_fmt, .attrs = &inv_attribute_group, .validate_trigger = inv_mpu6050_validate_trigger, }; @@ -661,6 +680,7 @@ { struct inv_mpu6050_state *st; struct iio_dev *indio_dev; + struct inv_mpu6050_platform_data *pdata; int result; if (!i2c_check_functionality(client->adapter, @@ -673,8 +693,10 @@ st = iio_priv(indio_dev); st->client = client; - st->plat_data = *(struct inv_mpu6050_platform_data - *)dev_get_platdata(&client->dev); + pdata = (struct inv_mpu6050_platform_data + *)dev_get_platdata(&client->dev); + if (pdata) + st->plat_data = *pdata; /* power is turned on inside check chip type*/ result = inv_check_and_setup_chip(st, id); if (result) --- linux-3.13.0.orig/drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c +++ linux-3.13.0/drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c @@ -25,6 +25,16 @@ #include #include "inv_mpu_iio.h" +static void inv_clear_kfifo(struct inv_mpu6050_state *st) +{ + unsigned long flags; + + /* take the spin lock sem to avoid interrupt kick in */ + spin_lock_irqsave(&st->time_stamp_lock, flags); + kfifo_reset(&st->timestamps); + spin_unlock_irqrestore(&st->time_stamp_lock, flags); +} + int inv_reset_fifo(struct iio_dev *indio_dev) { int result; @@ -51,6 +61,10 @@ INV_MPU6050_BIT_FIFO_RST); if (result) goto reset_fifo_fail; + + /* clear timestamps fifo */ + inv_clear_kfifo(st); + /* enable interrupt */ if (st->chip_config.accl_fifo_enable || st->chip_config.gyro_fifo_enable) { @@ -84,16 +98,6 @@ return result; } -static void inv_clear_kfifo(struct inv_mpu6050_state *st) -{ - unsigned long flags; - - /* take the spin lock sem to avoid interrupt kick in */ - spin_lock_irqsave(&st->time_stamp_lock, flags); - kfifo_reset(&st->timestamps); - spin_unlock_irqrestore(&st->time_stamp_lock, flags); -} - /** * inv_mpu6050_irq_handler() - Cache a timestamp at each data ready interrupt. */ @@ -185,7 +189,6 @@ flush_fifo: /* Flush HW and SW FIFOs. */ inv_reset_fifo(indio_dev); - inv_clear_kfifo(st); mutex_unlock(&indio_dev->mlock); iio_trigger_notify_done(indio_dev->trig); --- linux-3.13.0.orig/drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c +++ linux-3.13.0/drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c @@ -135,7 +135,7 @@ ret = iio_trigger_register(st->trig); if (ret) goto error_free_irq; - indio_dev->trig = st->trig; + indio_dev->trig = iio_trigger_get(st->trig); return 0; --- linux-3.13.0.orig/drivers/iio/industrialio-buffer.c +++ linux-3.13.0/drivers/iio/industrialio-buffer.c @@ -67,7 +67,7 @@ struct iio_buffer *rb = indio_dev->buffer; if (!indio_dev->info) - return -ENODEV; + return 0; poll_wait(filp, &rb->pollq, wait); if (rb->stufftoread) @@ -136,7 +136,8 @@ int ret; struct iio_dev *indio_dev = dev_to_iio_dev(dev); - ret = test_bit(to_iio_dev_attr(attr)->address, + /* Ensure ret is 0 or 1. */ + ret = !!test_bit(to_iio_dev_attr(attr)->address, indio_dev->buffer->scan_mask); return sprintf(buf, "%d\n", ret); @@ -800,7 +801,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); @@ -837,7 +838,8 @@ if (!buffer->scan_mask) return 0; - return test_bit(bit, buffer->scan_mask); + /* Ensure return value is 0 or 1. */ + return !!test_bit(bit, buffer->scan_mask); }; EXPORT_SYMBOL_GPL(iio_scan_mask_query); @@ -922,7 +924,7 @@ /* Now we have the two masks, work from least sig and build up sizes */ for_each_set_bit(out_ind, - indio_dev->active_scan_mask, + buffer->scan_mask, indio_dev->masklength) { in_ind = find_next_bit(indio_dev->active_scan_mask, indio_dev->masklength, --- linux-3.13.0.orig/drivers/iio/industrialio-core.c +++ linux-3.13.0/drivers/iio/industrialio-core.c @@ -583,7 +583,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; } @@ -812,8 +812,7 @@ * @attr_list: List of IIO device attributes * * This function frees the memory allocated for each of the IIO device - * attributes in the list. Note: if you want to reuse the list after calling - * this function you have to reinitialize it using INIT_LIST_HEAD(). + * attributes in the list. */ void iio_free_chan_devattr_list(struct list_head *attr_list) { @@ -821,6 +820,7 @@ list_for_each_entry_safe(p, n, attr_list, l) { kfree(p->dev_attr.attr.name); + list_del(&p->l); kfree(p); } } @@ -901,6 +901,7 @@ iio_free_chan_devattr_list(&indio_dev->channel_attr_list); kfree(indio_dev->chan_attr_group.attrs); + indio_dev->chan_attr_group.attrs = NULL; } static void iio_dev_release(struct device *device) --- linux-3.13.0.orig/drivers/iio/industrialio-event.c +++ linux-3.13.0/drivers/iio/industrialio-event.c @@ -77,7 +77,7 @@ unsigned int events = 0; if (!indio_dev->info) - return -ENODEV; + return events; poll_wait(filep, &ev_int->wait, wait); @@ -362,6 +362,9 @@ &indio_dev->event_interface->dev_attr_list); kfree(postfix); + if ((ret == -EBUSY) && (shared_by != IIO_SEPARATE)) + continue; + if (ret) return ret; @@ -593,6 +596,7 @@ error_free_setup_event_lines: iio_free_chan_devattr_list(&indio_dev->event_interface->dev_attr_list); kfree(indio_dev->event_interface); + indio_dev->event_interface = NULL; error_ret: return ret; --- linux-3.13.0.orig/drivers/iio/inkern.c +++ linux-3.13.0/drivers/iio/inkern.c @@ -178,12 +178,12 @@ index = of_property_match_string(np, "io-channel-names", name); chan = of_iio_channel_get(np, index); - if (!IS_ERR(chan)) + if (!IS_ERR(chan) || PTR_ERR(chan) == -EPROBE_DEFER) break; else if (name && index >= 0) { pr_err("ERROR: could not get IIO channel %s:%s(%i)\n", np->full_name, name ? name : "", index); - return chan; + return NULL; } /* @@ -193,8 +193,9 @@ */ np = np->parent; if (np && !of_get_property(np, "io-channel-ranges", NULL)) - break; + return NULL; } + return chan; } @@ -317,12 +318,15 @@ if (channel != NULL) return channel; } + return iio_channel_get_sys(name, channel_name); } EXPORT_SYMBOL_GPL(iio_channel_get); void iio_channel_release(struct iio_channel *channel) { + if (!channel) + return; iio_device_put(channel->indio_dev); kfree(channel); } --- linux-3.13.0.orig/drivers/iio/light/cm36651.c +++ linux-3.13.0/drivers/iio/light/cm36651.c @@ -628,7 +628,19 @@ cm36651->client = client; cm36651->ps_client = i2c_new_dummy(client->adapter, CM36651_I2C_ADDR_PS); + if (!cm36651->ps_client) { + dev_err(&client->dev, "%s: new i2c device failed\n", __func__); + ret = -ENODEV; + goto error_disable_reg; + } + cm36651->ara_client = i2c_new_dummy(client->adapter, CM36651_ARA); + if (!cm36651->ara_client) { + dev_err(&client->dev, "%s: new i2c device failed\n", __func__); + ret = -ENODEV; + goto error_i2c_unregister_ps; + } + mutex_init(&cm36651->lock); indio_dev->dev.parent = &client->dev; indio_dev->channels = cm36651_channels; @@ -640,7 +652,7 @@ ret = cm36651_setup_reg(cm36651); if (ret) { dev_err(&client->dev, "%s: register setup failed\n", __func__); - goto error_disable_reg; + goto error_i2c_unregister_ara; } ret = request_threaded_irq(client->irq, NULL, cm36651_irq_handler, @@ -648,7 +660,7 @@ "cm36651", indio_dev); if (ret) { dev_err(&client->dev, "%s: request irq failed\n", __func__); - goto error_disable_reg; + goto error_i2c_unregister_ara; } ret = iio_device_register(indio_dev); @@ -661,6 +673,10 @@ error_free_irq: free_irq(client->irq, indio_dev); +error_i2c_unregister_ara: + i2c_unregister_device(cm36651->ara_client); +error_i2c_unregister_ps: + i2c_unregister_device(cm36651->ps_client); error_disable_reg: regulator_disable(cm36651->vled_reg); return ret; @@ -674,6 +690,8 @@ iio_device_unregister(indio_dev); regulator_disable(cm36651->vled_reg); free_irq(client->irq, indio_dev); + i2c_unregister_device(cm36651->ps_client); + i2c_unregister_device(cm36651->ara_client); return 0; } --- linux-3.13.0.orig/drivers/iio/magnetometer/ak8975.c +++ linux-3.13.0/drivers/iio/magnetometer/ak8975.c @@ -85,6 +85,7 @@ #define AK8975_MAX_CONVERSION_TIMEOUT 500 #define AK8975_CONVERSION_DONE_POLL_TIME 10 #define AK8975_DATA_READY_TIMEOUT ((100*HZ)/1000) +#define RAW_TO_GAUSS(asa) ((((asa) + 128) * 3000) / 256) /* * Per-instance context data for the device. @@ -265,15 +266,15 @@ * * Since 1uT = 0.01 gauss, our final scale factor becomes: * - * Hadj = H * ((ASA + 128) / 256) * 3/10 * 100 - * Hadj = H * ((ASA + 128) * 30 / 256 + * Hadj = H * ((ASA + 128) / 256) * 3/10 * 1/100 + * Hadj = H * ((ASA + 128) * 0.003) / 256 * * Since ASA doesn't change, we cache the resultant scale factor into the * device context in ak8975_setup(). */ - data->raw_to_gauss[0] = ((data->asa[0] + 128) * 30) >> 8; - data->raw_to_gauss[1] = ((data->asa[1] + 128) * 30) >> 8; - data->raw_to_gauss[2] = ((data->asa[2] + 128) * 30) >> 8; + data->raw_to_gauss[0] = RAW_TO_GAUSS(data->asa[0]); + data->raw_to_gauss[1] = RAW_TO_GAUSS(data->asa[1]); + data->raw_to_gauss[2] = RAW_TO_GAUSS(data->asa[2]); return 0; } @@ -351,8 +352,6 @@ { struct ak8975_data *data = iio_priv(indio_dev); struct i2c_client *client = data->client; - u16 meas_reg; - s16 raw; int ret; mutex_lock(&data->lock); @@ -400,16 +399,11 @@ dev_err(&client->dev, "Read axis data fails\n"); goto exit; } - meas_reg = ret; mutex_unlock(&data->lock); - /* Endian conversion of the measured values. */ - raw = (s16) (le16_to_cpu(meas_reg)); - /* Clamp to valid range. */ - raw = clamp_t(s16, raw, -4096, 4095); - *val = raw; + *val = clamp_t(s16, ret, -4096, 4095); return IIO_VAL_INT; exit: @@ -428,8 +422,9 @@ case IIO_CHAN_INFO_RAW: return ak8975_read_axis(indio_dev, chan->address, val); case IIO_CHAN_INFO_SCALE: - *val = data->raw_to_gauss[chan->address]; - return IIO_VAL_INT; + *val = 0; + *val2 = data->raw_to_gauss[chan->address]; + return IIO_VAL_INT_PLUS_MICRO; } return -EINVAL; } --- linux-3.13.0.orig/drivers/iio/magnetometer/st_magn.h +++ linux-3.13.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-3.13.0.orig/drivers/iio/magnetometer/st_magn_core.c +++ linux-3.13.0/drivers/iio/magnetometer/st_magn_core.c @@ -42,7 +42,8 @@ #define ST_MAGN_FS_AVL_5600MG 5600 #define ST_MAGN_FS_AVL_8000MG 8000 #define ST_MAGN_FS_AVL_8100MG 8100 -#define ST_MAGN_FS_AVL_10000MG 10000 +#define ST_MAGN_FS_AVL_12000MG 12000 +#define ST_MAGN_FS_AVL_16000MG 16000 /* CUSTOM VALUES FOR SENSOR 1 */ #define ST_MAGN_1_WAI_EXP 0x3c @@ -69,20 +70,20 @@ #define ST_MAGN_1_FS_AVL_4700_VAL 0x05 #define ST_MAGN_1_FS_AVL_5600_VAL 0x06 #define ST_MAGN_1_FS_AVL_8100_VAL 0x07 -#define ST_MAGN_1_FS_AVL_1300_GAIN_XY 1100 -#define ST_MAGN_1_FS_AVL_1900_GAIN_XY 855 -#define ST_MAGN_1_FS_AVL_2500_GAIN_XY 670 -#define ST_MAGN_1_FS_AVL_4000_GAIN_XY 450 -#define ST_MAGN_1_FS_AVL_4700_GAIN_XY 400 -#define ST_MAGN_1_FS_AVL_5600_GAIN_XY 330 -#define ST_MAGN_1_FS_AVL_8100_GAIN_XY 230 -#define ST_MAGN_1_FS_AVL_1300_GAIN_Z 980 -#define ST_MAGN_1_FS_AVL_1900_GAIN_Z 760 -#define ST_MAGN_1_FS_AVL_2500_GAIN_Z 600 -#define ST_MAGN_1_FS_AVL_4000_GAIN_Z 400 -#define ST_MAGN_1_FS_AVL_4700_GAIN_Z 355 -#define ST_MAGN_1_FS_AVL_5600_GAIN_Z 295 -#define ST_MAGN_1_FS_AVL_8100_GAIN_Z 205 +#define ST_MAGN_1_FS_AVL_1300_GAIN_XY 909 +#define ST_MAGN_1_FS_AVL_1900_GAIN_XY 1169 +#define ST_MAGN_1_FS_AVL_2500_GAIN_XY 1492 +#define ST_MAGN_1_FS_AVL_4000_GAIN_XY 2222 +#define ST_MAGN_1_FS_AVL_4700_GAIN_XY 2500 +#define ST_MAGN_1_FS_AVL_5600_GAIN_XY 3030 +#define ST_MAGN_1_FS_AVL_8100_GAIN_XY 4347 +#define ST_MAGN_1_FS_AVL_1300_GAIN_Z 1020 +#define ST_MAGN_1_FS_AVL_1900_GAIN_Z 1315 +#define ST_MAGN_1_FS_AVL_2500_GAIN_Z 1666 +#define ST_MAGN_1_FS_AVL_4000_GAIN_Z 2500 +#define ST_MAGN_1_FS_AVL_4700_GAIN_Z 2816 +#define ST_MAGN_1_FS_AVL_5600_GAIN_Z 3389 +#define ST_MAGN_1_FS_AVL_8100_GAIN_Z 4878 #define ST_MAGN_1_MULTIREAD_BIT false /* CUSTOM VALUES FOR SENSOR 2 */ @@ -105,10 +106,12 @@ #define ST_MAGN_2_FS_MASK 0x60 #define ST_MAGN_2_FS_AVL_4000_VAL 0x00 #define ST_MAGN_2_FS_AVL_8000_VAL 0x01 -#define ST_MAGN_2_FS_AVL_10000_VAL 0x02 -#define ST_MAGN_2_FS_AVL_4000_GAIN 430 -#define ST_MAGN_2_FS_AVL_8000_GAIN 230 -#define ST_MAGN_2_FS_AVL_10000_GAIN 230 +#define ST_MAGN_2_FS_AVL_12000_VAL 0x02 +#define ST_MAGN_2_FS_AVL_16000_VAL 0x03 +#define ST_MAGN_2_FS_AVL_4000_GAIN 146 +#define ST_MAGN_2_FS_AVL_8000_GAIN 292 +#define ST_MAGN_2_FS_AVL_12000_GAIN 438 +#define ST_MAGN_2_FS_AVL_16000_GAIN 584 #define ST_MAGN_2_MULTIREAD_BIT false #define ST_MAGN_2_OUT_X_L_ADDR 0x28 #define ST_MAGN_2_OUT_Y_L_ADDR 0x2a @@ -266,9 +269,14 @@ .gain = ST_MAGN_2_FS_AVL_8000_GAIN, }, [2] = { - .num = ST_MAGN_FS_AVL_10000MG, - .value = ST_MAGN_2_FS_AVL_10000_VAL, - .gain = ST_MAGN_2_FS_AVL_10000_GAIN, + .num = ST_MAGN_FS_AVL_12000MG, + .value = ST_MAGN_2_FS_AVL_12000_VAL, + .gain = ST_MAGN_2_FS_AVL_12000_GAIN, + }, + [3] = { + .num = ST_MAGN_FS_AVL_16000MG, + .value = ST_MAGN_2_FS_AVL_16000_VAL, + .gain = ST_MAGN_2_FS_AVL_16000_GAIN, }, }, }, --- linux-3.13.0.orig/drivers/iio/temperature/tmp006.c +++ linux-3.13.0/drivers/iio/temperature/tmp006.c @@ -132,6 +132,9 @@ struct tmp006_data *data = iio_priv(indio_dev); int i; + if (mask != IIO_CHAN_INFO_SAMP_FREQ) + return -EINVAL; + for (i = 0; i < ARRAY_SIZE(tmp006_freqs); i++) if ((val == tmp006_freqs[i][0]) && (val2 == tmp006_freqs[i][1])) { --- linux-3.13.0.orig/drivers/infiniband/Kconfig +++ linux-3.13.0/drivers/infiniband/Kconfig @@ -3,6 +3,8 @@ depends on PCI || BROKEN depends on HAS_IOMEM depends on NET + depends on INET + depends on m || IPV6 != m ---help--- Core support for InfiniBand (IB). Make sure to also select any protocols you wish to use as well as drivers for your @@ -38,8 +40,7 @@ config INFINIBAND_ADDR_TRANS bool - depends on INET - depends on !(INFINIBAND = y && IPV6 = m) + depends on INFINIBAND default y source "drivers/infiniband/hw/mthca/Kconfig" @@ -53,6 +54,7 @@ source "drivers/infiniband/hw/mlx5/Kconfig" source "drivers/infiniband/hw/nes/Kconfig" source "drivers/infiniband/hw/ocrdma/Kconfig" +source "drivers/infiniband/hw/usnic/Kconfig" source "drivers/infiniband/ulp/ipoib/Kconfig" --- linux-3.13.0.orig/drivers/infiniband/Makefile +++ linux-3.13.0/drivers/infiniband/Makefile @@ -10,6 +10,7 @@ obj-$(CONFIG_MLX5_INFINIBAND) += hw/mlx5/ obj-$(CONFIG_INFINIBAND_NES) += hw/nes/ obj-$(CONFIG_INFINIBAND_OCRDMA) += hw/ocrdma/ +obj-$(CONFIG_INFINIBAND_USNIC) += hw/usnic/ obj-$(CONFIG_INFINIBAND_IPOIB) += ulp/ipoib/ obj-$(CONFIG_INFINIBAND_SRP) += ulp/srp/ obj-$(CONFIG_INFINIBAND_SRPT) += ulp/srpt/ --- linux-3.13.0.orig/drivers/infiniband/core/Makefile +++ linux-3.13.0/drivers/infiniband/core/Makefile @@ -1,8 +1,9 @@ -infiniband-$(CONFIG_INFINIBAND_ADDR_TRANS) := ib_addr.o rdma_cm.o +infiniband-$(CONFIG_INFINIBAND_ADDR_TRANS) := rdma_cm.o user_access-$(CONFIG_INFINIBAND_ADDR_TRANS) := rdma_ucm.o obj-$(CONFIG_INFINIBAND) += ib_core.o ib_mad.o ib_sa.o \ - ib_cm.o iw_cm.o $(infiniband-y) + ib_cm.o iw_cm.o ib_addr.o \ + $(infiniband-y) obj-$(CONFIG_INFINIBAND_USER_MAD) += ib_umad.o obj-$(CONFIG_INFINIBAND_USER_ACCESS) += ib_uverbs.o ib_ucm.o \ $(user_access-y) --- linux-3.13.0.orig/drivers/infiniband/core/addr.c +++ linux-3.13.0/drivers/infiniband/core/addr.c @@ -86,6 +86,8 @@ } EXPORT_SYMBOL(rdma_addr_size); +static struct rdma_addr_client self; + void rdma_addr_register_client(struct rdma_addr_client *client) { atomic_set(&client->refcount, 1); @@ -119,7 +121,8 @@ } EXPORT_SYMBOL(rdma_copy_addr); -int rdma_translate_ip(struct sockaddr *addr, struct rdma_dev_addr *dev_addr) +int rdma_translate_ip(struct sockaddr *addr, struct rdma_dev_addr *dev_addr, + u16 *vlan_id) { struct net_device *dev; int ret = -EADDRNOTAVAIL; @@ -142,6 +145,8 @@ return ret; ret = rdma_copy_addr(dev_addr, dev, NULL); + if (vlan_id) + *vlan_id = rdma_vlan_dev_vlan_id(dev); dev_put(dev); break; @@ -153,6 +158,8 @@ &((struct sockaddr_in6 *) addr)->sin6_addr, dev, 1)) { ret = rdma_copy_addr(dev_addr, dev, NULL); + if (vlan_id) + *vlan_id = rdma_vlan_dev_vlan_id(dev); break; } } @@ -238,7 +245,7 @@ src_in->sin_addr.s_addr = fl4.saddr; if (rt->dst.dev->flags & IFF_LOOPBACK) { - ret = rdma_translate_ip((struct sockaddr *) dst_in, addr); + ret = rdma_translate_ip((struct sockaddr *)dst_in, addr, NULL); if (!ret) memcpy(addr->dst_dev_addr, addr->src_dev_addr, MAX_ADDR_LEN); goto put; @@ -286,7 +293,7 @@ } if (dst->dev->flags & IFF_LOOPBACK) { - ret = rdma_translate_ip((struct sockaddr *) dst_in, addr); + ret = rdma_translate_ip((struct sockaddr *)dst_in, addr, NULL); if (!ret) memcpy(addr->dst_dev_addr, addr->src_dev_addr, MAX_ADDR_LEN); goto put; @@ -437,6 +444,88 @@ } EXPORT_SYMBOL(rdma_addr_cancel); +struct resolve_cb_context { + struct rdma_dev_addr *addr; + struct completion comp; +}; + +static void resolve_cb(int status, struct sockaddr *src_addr, + struct rdma_dev_addr *addr, void *context) +{ + memcpy(((struct resolve_cb_context *)context)->addr, addr, sizeof(struct + rdma_dev_addr)); + complete(&((struct resolve_cb_context *)context)->comp); +} + +int rdma_addr_find_dmac_by_grh(union ib_gid *sgid, union ib_gid *dgid, u8 *dmac, + u16 *vlan_id) +{ + int ret = 0; + struct rdma_dev_addr dev_addr; + struct resolve_cb_context ctx; + struct net_device *dev; + + union { + struct sockaddr _sockaddr; + struct sockaddr_in _sockaddr_in; + struct sockaddr_in6 _sockaddr_in6; + } sgid_addr, dgid_addr; + + + ret = rdma_gid2ip(&sgid_addr._sockaddr, sgid); + if (ret) + return ret; + + ret = rdma_gid2ip(&dgid_addr._sockaddr, dgid); + if (ret) + return ret; + + memset(&dev_addr, 0, sizeof(dev_addr)); + + ctx.addr = &dev_addr; + init_completion(&ctx.comp); + ret = rdma_resolve_ip(&self, &sgid_addr._sockaddr, &dgid_addr._sockaddr, + &dev_addr, 1000, resolve_cb, &ctx); + if (ret) + return ret; + + wait_for_completion(&ctx.comp); + + memcpy(dmac, dev_addr.dst_dev_addr, ETH_ALEN); + dev = dev_get_by_index(&init_net, dev_addr.bound_dev_if); + if (!dev) + return -ENODEV; + if (vlan_id) + *vlan_id = rdma_vlan_dev_vlan_id(dev); + dev_put(dev); + return ret; +} +EXPORT_SYMBOL(rdma_addr_find_dmac_by_grh); + +int rdma_addr_find_smac_by_sgid(union ib_gid *sgid, u8 *smac, u16 *vlan_id) +{ + int ret = 0; + struct rdma_dev_addr dev_addr; + union { + struct sockaddr _sockaddr; + struct sockaddr_in _sockaddr_in; + struct sockaddr_in6 _sockaddr_in6; + } gid_addr; + + ret = rdma_gid2ip(&gid_addr._sockaddr, sgid); + + if (ret) + return ret; + memset(&dev_addr, 0, sizeof(dev_addr)); + ret = rdma_translate_ip(&gid_addr._sockaddr, &dev_addr, vlan_id); + if (ret) + return ret; + + memcpy(smac, dev_addr.src_dev_addr, ETH_ALEN); + return ret; +} +EXPORT_SYMBOL(rdma_addr_find_smac_by_sgid); + static int netevent_callback(struct notifier_block *self, unsigned long event, void *ctx) { @@ -461,11 +550,13 @@ return -ENOMEM; register_netevent_notifier(&nb); + rdma_addr_register_client(&self); return 0; } static void __exit addr_cleanup(void) { + rdma_addr_unregister_client(&self); unregister_netevent_notifier(&nb); destroy_workqueue(addr_wq); } --- linux-3.13.0.orig/drivers/infiniband/core/cm.c +++ linux-3.13.0/drivers/infiniband/core/cm.c @@ -47,6 +47,7 @@ #include #include #include +#include #include #include @@ -177,6 +178,8 @@ struct ib_ah_attr ah_attr; u16 pkey_index; u8 timeout; + u8 valid; + u8 smac[ETH_ALEN]; }; struct cm_work { @@ -376,6 +379,9 @@ ib_init_ah_from_path(cm_dev->ib_device, port->port_num, path, &av->ah_attr); av->timeout = path->packet_life_time + 1; + memcpy(av->smac, path->smac, sizeof(av->smac)); + + av->valid = 1; return 0; } @@ -854,6 +860,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: ib_cancel_mad(cm_id_priv->av.port->mad_agent, cm_id_priv->msg); @@ -1554,6 +1565,9 @@ cm_process_routed_req(req_msg, work->mad_recv_wc->wc); cm_format_paths_from_req(req_msg, &work->path[0], &work->path[1]); + + memcpy(work->path[0].dmac, cm_id_priv->av.ah_attr.dmac, ETH_ALEN); + work->path[0].vlan_id = cm_id_priv->av.ah_attr.vlan_id; ret = cm_init_av_by_path(&work->path[0], &cm_id_priv->av); if (ret) { ib_get_cached_gid(work->port->cm_dev->ib_device, @@ -3090,7 +3104,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; @@ -3500,6 +3517,32 @@ *qp_attr_mask = IB_QP_STATE | IB_QP_AV | IB_QP_PATH_MTU | IB_QP_DEST_QPN | IB_QP_RQ_PSN; qp_attr->ah_attr = cm_id_priv->av.ah_attr; + if (!cm_id_priv->av.valid) { + spin_unlock_irqrestore(&cm_id_priv->lock, flags); + return -EINVAL; + } + if (cm_id_priv->av.ah_attr.vlan_id != 0xffff) { + qp_attr->vlan_id = cm_id_priv->av.ah_attr.vlan_id; + *qp_attr_mask |= IB_QP_VID; + } + if (!is_zero_ether_addr(cm_id_priv->av.smac)) { + memcpy(qp_attr->smac, cm_id_priv->av.smac, + sizeof(qp_attr->smac)); + *qp_attr_mask |= IB_QP_SMAC; + } + if (cm_id_priv->alt_av.valid) { + if (cm_id_priv->alt_av.ah_attr.vlan_id != 0xffff) { + qp_attr->alt_vlan_id = + cm_id_priv->alt_av.ah_attr.vlan_id; + *qp_attr_mask |= IB_QP_ALT_VID; + } + if (!is_zero_ether_addr(cm_id_priv->alt_av.smac)) { + memcpy(qp_attr->alt_smac, + cm_id_priv->alt_av.smac, + sizeof(qp_attr->alt_smac)); + *qp_attr_mask |= IB_QP_ALT_SMAC; + } + } qp_attr->path_mtu = cm_id_priv->path_mtu; qp_attr->dest_qp_num = be32_to_cpu(cm_id_priv->remote_qpn); qp_attr->rq_psn = be32_to_cpu(cm_id_priv->rq_psn); --- linux-3.13.0.orig/drivers/infiniband/core/cma.c +++ linux-3.13.0/drivers/infiniband/core/cma.c @@ -340,7 +340,7 @@ int ret; if (addr->sa_family != AF_IB) { - ret = rdma_translate_ip(addr, dev_addr); + ret = rdma_translate_ip(addr, dev_addr, NULL); } else { cma_translate_ib((struct sockaddr_ib *) addr, dev_addr); ret = 0; @@ -365,7 +365,9 @@ return -EINVAL; mutex_lock(&lock); - iboe_addr_get_sgid(dev_addr, &iboe_gid); + rdma_ip2gid((struct sockaddr *)&id_priv->id.route.addr.src_addr, + &iboe_gid); + memcpy(&gid, dev_addr->src_dev_addr + rdma_addr_gid_offset(dev_addr), sizeof gid); if (listen_id_priv && @@ -603,6 +605,7 @@ { struct ib_qp_attr qp_attr; int qp_attr_mask, ret; + union ib_gid sgid; mutex_lock(&id_priv->qp_mutex); if (!id_priv->id.qp) { @@ -625,6 +628,20 @@ if (ret) goto out; + ret = ib_query_gid(id_priv->id.device, id_priv->id.port_num, + qp_attr.ah_attr.grh.sgid_index, &sgid); + if (ret) + goto out; + + if (rdma_node_get_transport(id_priv->cma_dev->device->node_type) + == RDMA_TRANSPORT_IB && + rdma_port_get_link_layer(id_priv->id.device, id_priv->id.port_num) + == IB_LINK_LAYER_ETHERNET) { + ret = rdma_addr_find_smac_by_sgid(&sgid, qp_attr.smac, NULL); + + if (ret) + goto out; + } if (conn_param) qp_attr.max_dest_rd_atomic = conn_param->responder_resources; ret = ib_modify_qp(id_priv->id.qp, &qp_attr, qp_attr_mask); @@ -725,6 +742,7 @@ else ret = ib_cm_init_qp_attr(id_priv->cm_id.ib, qp_attr, qp_attr_mask); + if (qp_attr->qp_state == IB_QPS_RTR) qp_attr->rq_psn = id_priv->seq_num; break; @@ -841,19 +859,27 @@ memcpy(&ib->sib_addr, &path->dgid, 16); } +static __be16 ss_get_port(const struct sockaddr_storage *ss) +{ + if (ss->ss_family == AF_INET) + return ((struct sockaddr_in *)ss)->sin_port; + else if (ss->ss_family == AF_INET6) + return ((struct sockaddr_in6 *)ss)->sin6_port; + BUG(); +} + static void cma_save_ip4_info(struct rdma_cm_id *id, struct rdma_cm_id *listen_id, struct cma_hdr *hdr) { - struct sockaddr_in *listen4, *ip4; + struct sockaddr_in *ip4; - listen4 = (struct sockaddr_in *) &listen_id->route.addr.src_addr; ip4 = (struct sockaddr_in *) &id->route.addr.src_addr; - ip4->sin_family = listen4->sin_family; + ip4->sin_family = AF_INET; ip4->sin_addr.s_addr = hdr->dst_addr.ip4.addr; - ip4->sin_port = listen4->sin_port; + ip4->sin_port = ss_get_port(&listen_id->route.addr.src_addr); ip4 = (struct sockaddr_in *) &id->route.addr.dst_addr; - ip4->sin_family = listen4->sin_family; + ip4->sin_family = AF_INET; ip4->sin_addr.s_addr = hdr->src_addr.ip4.addr; ip4->sin_port = hdr->port; } @@ -861,16 +887,15 @@ static void cma_save_ip6_info(struct rdma_cm_id *id, struct rdma_cm_id *listen_id, struct cma_hdr *hdr) { - struct sockaddr_in6 *listen6, *ip6; + struct sockaddr_in6 *ip6; - listen6 = (struct sockaddr_in6 *) &listen_id->route.addr.src_addr; ip6 = (struct sockaddr_in6 *) &id->route.addr.src_addr; - ip6->sin6_family = listen6->sin6_family; + ip6->sin6_family = AF_INET6; ip6->sin6_addr = hdr->dst_addr.ip6; - ip6->sin6_port = listen6->sin6_port; + ip6->sin6_port = ss_get_port(&listen_id->route.addr.src_addr); ip6 = (struct sockaddr_in6 *) &id->route.addr.dst_addr; - ip6->sin6_family = listen6->sin6_family; + ip6->sin6_family = AF_INET6; ip6->sin6_addr = hdr->src_addr.ip6; ip6->sin6_port = hdr->port; } @@ -1309,13 +1334,13 @@ ret = conn_id->id.event_handler(&conn_id->id, &event); if (ret) goto err3; - /* * Acquire mutex to prevent user executing rdma_destroy_id() * while we're accessing the cm_id. */ mutex_lock(&lock); - if (cma_comp(conn_id, RDMA_CM_CONNECT) && (conn_id->id.qp_type != IB_QPT_UD)) + if (cma_comp(conn_id, RDMA_CM_CONNECT) && + (conn_id->id.qp_type != IB_QPT_UD)) ib_send_cm_mra(cm_id, CMA_CM_MRA_SETTING, NULL, 0); mutex_unlock(&lock); mutex_unlock(&conn_id->handler_mutex); @@ -1474,7 +1499,7 @@ mutex_lock_nested(&conn_id->handler_mutex, SINGLE_DEPTH_NESTING); conn_id->state = RDMA_CM_CONNECT; - ret = rdma_translate_ip(laddr, &conn_id->id.route.addr.dev_addr); + ret = rdma_translate_ip(laddr, &conn_id->id.route.addr.dev_addr, NULL); if (ret) { mutex_unlock(&conn_id->handler_mutex); rdma_destroy_id(new_cm_id); @@ -1873,7 +1898,7 @@ struct cma_work *work; int ret; struct net_device *ndev = NULL; - u16 vid; + work = kzalloc(sizeof *work, GFP_KERNEL); if (!work) @@ -1897,10 +1922,14 @@ goto err2; } - vid = rdma_vlan_dev_vlan_id(ndev); - - iboe_mac_vlan_to_ll(&route->path_rec->sgid, addr->dev_addr.src_dev_addr, vid); - iboe_mac_vlan_to_ll(&route->path_rec->dgid, addr->dev_addr.dst_dev_addr, vid); + route->path_rec->vlan_id = rdma_vlan_dev_vlan_id(ndev); + memcpy(route->path_rec->dmac, addr->dev_addr.dst_dev_addr, ETH_ALEN); + memcpy(route->path_rec->smac, ndev->dev_addr, ndev->addr_len); + + rdma_ip2gid((struct sockaddr *)&id_priv->id.route.addr.src_addr, + &route->path_rec->sgid); + rdma_ip2gid((struct sockaddr *)&id_priv->id.route.addr.dst_addr, + &route->path_rec->dgid); route->path_rec->hop_limit = 1; route->path_rec->reversible = 1; @@ -2063,6 +2092,7 @@ RDMA_CM_ADDR_RESOLVED)) goto out; + memcpy(cma_src_addr(id_priv), src_addr, rdma_addr_size(src_addr)); if (!status && !id_priv->cma_dev) status = cma_acquire_dev(id_priv, NULL); @@ -2072,10 +2102,8 @@ goto out; event.event = RDMA_CM_EVENT_ADDR_ERROR; event.status = status; - } else { - memcpy(cma_src_addr(id_priv), src_addr, rdma_addr_size(src_addr)); + } else event.event = RDMA_CM_EVENT_ADDR_RESOLVED; - } if (id_priv->id.event_handler(&id_priv->id, &event)) { cma_exch(id_priv, RDMA_CM_DESTROYING); @@ -2480,8 +2508,11 @@ return 0; sin6 = (struct sockaddr_in6 *) addr; - if ((ipv6_addr_type(&sin6->sin6_addr) & IPV6_ADDR_LINKLOCAL) && - !sin6->sin6_scope_id) + + if (!(ipv6_addr_type(&sin6->sin6_addr) & IPV6_ADDR_LINKLOCAL)) + return 0; + + if (!sin6->sin6_scope_id) return -EINVAL; dev_addr->bound_dev_if = sin6->sin6_scope_id; @@ -2556,6 +2587,7 @@ if (ret) goto err1; + memcpy(cma_src_addr(id_priv), addr, rdma_addr_size(addr)); if (!cma_any_addr(addr)) { ret = cma_translate_addr(addr, &id->route.addr.dev_addr); if (ret) @@ -2566,7 +2598,6 @@ goto err1; } - memcpy(cma_src_addr(id_priv), addr, rdma_addr_size(addr)); if (!(id_priv->options & (1 << CMA_OPTION_AFONLY))) { if (addr->sa_family == AF_INET) id_priv->afonly = 1; @@ -3295,7 +3326,8 @@ err = -EINVAL; goto out2; } - iboe_addr_get_sgid(dev_addr, &mc->multicast.ib->rec.port_gid); + rdma_ip2gid((struct sockaddr *)&id_priv->id.route.addr.src_addr, + &mc->multicast.ib->rec.port_gid); work->id = id_priv; work->mc = mc; INIT_WORK(&work->work, iboe_mcast_work_handler); --- linux-3.13.0.orig/drivers/infiniband/core/core_priv.h +++ linux-3.13.0/drivers/infiniband/core/core_priv.h @@ -49,4 +49,6 @@ int ib_cache_setup(void); void ib_cache_cleanup(void); +int ib_resolve_eth_l2_attrs(struct ib_qp *qp, + struct ib_qp_attr *qp_attr, int *qp_attr_mask); #endif /* _CORE_PRIV_H */ --- linux-3.13.0.orig/drivers/infiniband/core/iwcm.c +++ linux-3.13.0/drivers/infiniband/core/iwcm.c @@ -46,6 +46,7 @@ #include #include #include +#include #include #include @@ -65,6 +66,20 @@ struct list_head free_list; }; +static unsigned int default_backlog = 256; + +static struct ctl_table_header *iwcm_ctl_table_hdr; +static struct ctl_table iwcm_ctl_table[] = { + { + .procname = "default_backlog", + .data = &default_backlog, + .maxlen = sizeof(default_backlog), + .mode = 0644, + .proc_handler = proc_dointvec, + }, + { } +}; + /* * The following services provide a mechanism for pre-allocating iwcm_work * elements. The design pre-allocates them based on the cm_id type: @@ -334,7 +349,6 @@ { struct iwcm_id_private *cm_id_priv; unsigned long flags; - int ret; cm_id_priv = container_of(cm_id, struct iwcm_id_private, id); /* @@ -350,7 +364,7 @@ cm_id_priv->state = IW_CM_STATE_DESTROYING; spin_unlock_irqrestore(&cm_id_priv->lock, flags); /* destroy the listening endpoint */ - ret = cm_id->device->iwcm->destroy_listen(cm_id); + cm_id->device->iwcm->destroy_listen(cm_id); spin_lock_irqsave(&cm_id_priv->lock, flags); break; case IW_CM_STATE_ESTABLISHED: @@ -426,6 +440,9 @@ cm_id_priv = container_of(cm_id, struct iwcm_id_private, id); + if (!backlog) + backlog = default_backlog; + ret = alloc_work_entries(cm_id_priv, backlog); if (ret) return ret; @@ -1031,11 +1048,20 @@ if (!iwcm_wq) return -ENOMEM; + iwcm_ctl_table_hdr = register_net_sysctl(&init_net, "net/iw_cm", + iwcm_ctl_table); + if (!iwcm_ctl_table_hdr) { + pr_err("iw_cm: couldn't register sysctl paths\n"); + destroy_workqueue(iwcm_wq); + return -ENOMEM; + } + return 0; } static void __exit iw_cm_cleanup(void) { + unregister_net_sysctl_table(iwcm_ctl_table_hdr); destroy_workqueue(iwcm_wq); } --- linux-3.13.0.orig/drivers/infiniband/core/sa_query.c +++ linux-3.13.0/drivers/infiniband/core/sa_query.c @@ -42,7 +42,7 @@ #include #include #include - +#include #include #include #include "sa.h" @@ -542,7 +542,7 @@ force_grh = rdma_port_get_link_layer(device, port_num) == IB_LINK_LAYER_ETHERNET; - 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; @@ -556,6 +556,13 @@ ah_attr->grh.hop_limit = rec->hop_limit; ah_attr->grh.traffic_class = rec->traffic_class; } + if (force_grh) { + memcpy(ah_attr->dmac, rec->dmac, ETH_ALEN); + ah_attr->vlan_id = rec->vlan_id; + } else { + ah_attr->vlan_id = 0xffff; + } + return 0; } EXPORT_SYMBOL(ib_init_ah_from_path); @@ -670,6 +677,9 @@ ib_unpack(path_rec_table, ARRAY_SIZE(path_rec_table), mad->data, &rec); + rec.vlan_id = 0xffff; + memset(rec.dmac, 0, ETH_ALEN); + memset(rec.smac, 0, ETH_ALEN); query->callback(status, &rec, query->context); } else query->callback(status, NULL, query->context); --- linux-3.13.0.orig/drivers/infiniband/core/sysfs.c +++ linux-3.13.0/drivers/infiniband/core/sysfs.c @@ -613,6 +613,7 @@ case RDMA_NODE_IB_CA: return sprintf(buf, "%d: CA\n", dev->node_type); case RDMA_NODE_RNIC: return sprintf(buf, "%d: RNIC\n", dev->node_type); case RDMA_NODE_USNIC: return sprintf(buf, "%d: usNIC\n", dev->node_type); + case RDMA_NODE_USNIC_UDP: return sprintf(buf, "%d: usNIC UDP\n", dev->node_type); case RDMA_NODE_IB_SWITCH: return sprintf(buf, "%d: switch\n", dev->node_type); case RDMA_NODE_IB_ROUTER: return sprintf(buf, "%d: router\n", dev->node_type); default: return sprintf(buf, "%d: \n", dev->node_type); --- linux-3.13.0.orig/drivers/infiniband/core/ucm.c +++ linux-3.13.0/drivers/infiniband/core/ucm.c @@ -48,6 +48,7 @@ #include +#include #include #include #include @@ -1104,6 +1105,9 @@ struct ib_ucm_cmd_hdr hdr; ssize_t result; + if (WARN_ON_ONCE(!ib_safe_file_access(filp))) + return -EACCES; + if (len < sizeof(hdr)) return -EINVAL; --- linux-3.13.0.orig/drivers/infiniband/core/ucma.c +++ linux-3.13.0/drivers/infiniband/core/ucma.c @@ -655,24 +655,14 @@ static void ucma_copy_iboe_route(struct rdma_ucm_query_route_resp *resp, struct rdma_route *route) { - struct rdma_dev_addr *dev_addr; - struct net_device *dev; - u16 vid = 0; resp->num_paths = route->num_paths; switch (route->num_paths) { case 0: - dev_addr = &route->addr.dev_addr; - dev = dev_get_by_index(&init_net, dev_addr->bound_dev_if); - if (dev) { - vid = rdma_vlan_dev_vlan_id(dev); - dev_put(dev); - } - - iboe_mac_vlan_to_ll((union ib_gid *) &resp->ib_route[0].dgid, - dev_addr->dst_dev_addr, vid); - iboe_addr_get_sgid(dev_addr, - (union ib_gid *) &resp->ib_route[0].sgid); + rdma_ip2gid((struct sockaddr *)&route->addr.dst_addr, + (union ib_gid *)&resp->ib_route[0].dgid); + rdma_ip2gid((struct sockaddr *)&route->addr.src_addr, + (union ib_gid *)&resp->ib_route[0].sgid); resp->ib_route[0].pkey = cpu_to_be16(0xffff); break; case 2: @@ -1494,6 +1484,9 @@ struct rdma_ucm_cmd_hdr hdr; ssize_t ret; + if (WARN_ON_ONCE(!ib_safe_file_access(filp))) + return -EACCES; + if (len < sizeof(hdr)) return -EINVAL; --- linux-3.13.0.orig/drivers/infiniband/core/umem.c +++ linux-3.13.0/drivers/infiniband/core/umem.c @@ -94,6 +94,17 @@ if (dmasync) dma_set_attr(DMA_ATTR_WRITE_BARRIER, &attrs); + if (!size) + return ERR_PTR(-EINVAL); + + /* + * If the combination of the addr and size requested for this memory + * region causes an integer overflow, return error. + */ + if (((addr + size) < addr) || + PAGE_ALIGN(addr + size) < (addr + size)) + return ERR_PTR(-EINVAL); + if (!can_do_mlock()) return ERR_PTR(-EPERM); --- linux-3.13.0.orig/drivers/infiniband/core/user_mad.c +++ linux-3.13.0/drivers/infiniband/core/user_mad.c @@ -98,7 +98,7 @@ struct ib_umad_device { int start_port, end_port; - struct kref ref; + struct kobject kobj; struct ib_umad_port port[0]; }; @@ -134,14 +134,18 @@ static void ib_umad_add_one(struct ib_device *device); static void ib_umad_remove_one(struct ib_device *device); -static void ib_umad_release_dev(struct kref *ref) +static void ib_umad_release_dev(struct kobject *kobj) { struct ib_umad_device *dev = - container_of(ref, struct ib_umad_device, ref); + container_of(kobj, struct ib_umad_device, kobj); kfree(dev); } +static struct kobj_type ib_umad_dev_ktype = { + .release = ib_umad_release_dev, +}; + static int hdr_size(struct ib_umad_file *file) { return file->use_pkey_index ? sizeof (struct ib_user_mad_hdr) : @@ -780,27 +784,19 @@ { struct ib_umad_port *port; struct ib_umad_file *file; - int ret; + int ret = -ENXIO; port = container_of(inode->i_cdev, struct ib_umad_port, cdev); - if (port) - kref_get(&port->umad_dev->ref); - else - return -ENXIO; mutex_lock(&port->file_mutex); - if (!port->ib_dev) { - ret = -ENXIO; + if (!port->ib_dev) goto out; - } + ret = -ENOMEM; file = kzalloc(sizeof *file, GFP_KERNEL); - if (!file) { - kref_put(&port->umad_dev->ref, ib_umad_release_dev); - ret = -ENOMEM; + if (!file) goto out; - } mutex_init(&file->mutex); spin_lock_init(&file->send_lock); @@ -814,6 +810,13 @@ list_add_tail(&file->port_list, &port->file_list); ret = nonseekable_open(inode, filp); + if (ret) { + list_del(&file->port_list); + kfree(file); + goto out; + } + + kobject_get(&port->umad_dev->kobj); out: mutex_unlock(&port->file_mutex); @@ -852,7 +855,7 @@ mutex_unlock(&file->port->file_mutex); kfree(file); - kref_put(&dev->ref, ib_umad_release_dev); + kobject_put(&dev->kobj); return 0; } @@ -880,10 +883,6 @@ int ret; port = container_of(inode->i_cdev, struct ib_umad_port, sm_cdev); - if (port) - kref_get(&port->umad_dev->ref); - else - return -ENXIO; if (filp->f_flags & O_NONBLOCK) { if (down_trylock(&port->sm_sem)) { @@ -898,17 +897,27 @@ } ret = ib_modify_port(port->ib_dev, port->port_num, 0, &props); - if (ret) { - up(&port->sm_sem); - goto fail; - } + if (ret) + goto err_up_sem; filp->private_data = port; - return nonseekable_open(inode, filp); + ret = nonseekable_open(inode, filp); + if (ret) + goto err_clr_sm_cap; + + kobject_get(&port->umad_dev->kobj); + + return 0; + +err_clr_sm_cap: + swap(props.set_port_cap_mask, props.clr_port_cap_mask); + ib_modify_port(port->ib_dev, port->port_num, 0, &props); + +err_up_sem: + up(&port->sm_sem); fail: - kref_put(&port->umad_dev->ref, ib_umad_release_dev); return ret; } @@ -927,7 +936,7 @@ up(&port->sm_sem); - kref_put(&port->umad_dev->ref, ib_umad_release_dev); + kobject_put(&port->umad_dev->kobj); return ret; } @@ -995,6 +1004,7 @@ } static int ib_umad_init_port(struct ib_device *device, int port_num, + struct ib_umad_device *umad_dev, struct ib_umad_port *port) { int devnum; @@ -1027,6 +1037,7 @@ cdev_init(&port->cdev, &umad_fops); port->cdev.owner = THIS_MODULE; + port->cdev.kobj.parent = &umad_dev->kobj; kobject_set_name(&port->cdev.kobj, "umad%d", port->dev_num); if (cdev_add(&port->cdev, base, 1)) goto err_cdev; @@ -1045,6 +1056,7 @@ base += IB_UMAD_MAX_PORTS; cdev_init(&port->sm_cdev, &umad_sm_fops); port->sm_cdev.owner = THIS_MODULE; + port->sm_cdev.kobj.parent = &umad_dev->kobj; kobject_set_name(&port->sm_cdev.kobj, "issm%d", port->dev_num); if (cdev_add(&port->sm_cdev, base, 1)) goto err_sm_cdev; @@ -1138,7 +1150,7 @@ if (!umad_dev) return; - kref_init(&umad_dev->ref); + kobject_init(&umad_dev->kobj, &ib_umad_dev_ktype); umad_dev->start_port = s; umad_dev->end_port = e; @@ -1146,7 +1158,8 @@ for (i = s; i <= e; ++i) { umad_dev->port[i - s].umad_dev = umad_dev; - if (ib_umad_init_port(device, i, &umad_dev->port[i - s])) + if (ib_umad_init_port(device, i, umad_dev, + &umad_dev->port[i - s])) goto err; } @@ -1158,7 +1171,7 @@ while (--i >= s) ib_umad_kill_port(&umad_dev->port[i - s]); - kref_put(&umad_dev->ref, ib_umad_release_dev); + kobject_put(&umad_dev->kobj); } static void ib_umad_remove_one(struct ib_device *device) @@ -1172,7 +1185,7 @@ for (i = 0; i <= umad_dev->end_port - umad_dev->start_port; ++i) ib_umad_kill_port(&umad_dev->port[i]); - kref_put(&umad_dev->ref, ib_umad_release_dev); + kobject_put(&umad_dev->kobj); } static char *umad_devnode(struct device *dev, umode_t *mode) --- linux-3.13.0.orig/drivers/infiniband/core/uverbs.h +++ linux-3.13.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-3.13.0.orig/drivers/infiniband/core/uverbs_cmd.c +++ linux-3.13.0/drivers/infiniband/core/uverbs_cmd.c @@ -40,6 +40,7 @@ #include #include "uverbs.h" +#include "core_priv.h" struct uverbs_lock_class { struct lock_class_key key; @@ -1961,6 +1962,9 @@ attr->alt_ah_attr.port_num = cmd.alt_dest.port_num; if (qp->real_qp == qp) { + ret = ib_resolve_eth_l2_attrs(qp, attr, &cmd.attr_mask); + if (ret) + goto out; ret = qp->device->modify_qp(qp, attr, modify_qp_mask(qp->qp_type, cmd.attr_mask), &udata); } else { @@ -2106,6 +2110,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) { @@ -2145,9 +2155,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-3.13.0.orig/drivers/infiniband/core/uverbs_main.c +++ linux-3.13.0/drivers/infiniband/core/uverbs_main.c @@ -48,6 +48,8 @@ #include +#include + #include "uverbs.h" MODULE_AUTHOR("Roland Dreier"); @@ -127,14 +129,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 = @@ -298,13 +304,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); } @@ -594,6 +606,9 @@ struct ib_uverbs_cmd_hdr hdr; __u32 flags; + if (WARN_ON_ONCE(!ib_safe_file_access(filp))) + return -EACCES; + if (count < sizeof hdr) return -EINVAL; @@ -733,9 +748,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)) { @@ -756,6 +769,7 @@ mutex_init(&file->mutex); filp->private_data = file; + kobject_get(&dev->kobj); return nonseekable_open(inode, filp); @@ -763,13 +777,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); @@ -777,6 +794,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; } @@ -872,10 +890,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); @@ -902,6 +921,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; @@ -932,9 +952,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; } @@ -954,9 +975,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-3.13.0.orig/drivers/infiniband/core/verbs.c +++ linux-3.13.0/drivers/infiniband/core/verbs.c @@ -44,6 +44,9 @@ #include #include +#include + +#include "core_priv.h" int ib_rate_to_mult(enum ib_rate rate) { @@ -116,6 +119,8 @@ return RDMA_TRANSPORT_IWARP; case RDMA_NODE_USNIC: return RDMA_TRANSPORT_USNIC; + case RDMA_NODE_USNIC_UDP: + return RDMA_TRANSPORT_USNIC_UDP; default: BUG(); return 0; @@ -133,6 +138,7 @@ return IB_LINK_LAYER_INFINIBAND; case RDMA_TRANSPORT_IWARP: case RDMA_TRANSPORT_USNIC: + case RDMA_TRANSPORT_USNIC_UDP: return IB_LINK_LAYER_ETHERNET; default: return IB_LINK_LAYER_UNSPECIFIED; @@ -192,8 +198,28 @@ u32 flow_class; u16 gid_index; int ret; + int is_eth = (rdma_port_get_link_layer(device, port_num) == + IB_LINK_LAYER_ETHERNET); memset(ah_attr, 0, sizeof *ah_attr); + if (is_eth) { + if (!(wc->wc_flags & IB_WC_GRH)) + return -EPROTOTYPE; + + if (wc->wc_flags & IB_WC_WITH_SMAC && + wc->wc_flags & IB_WC_WITH_VLAN) { + memcpy(ah_attr->dmac, wc->smac, ETH_ALEN); + ah_attr->vlan_id = wc->vlan_id; + } else { + ret = rdma_addr_find_dmac_by_grh(&grh->dgid, &grh->sgid, + ah_attr->dmac, &ah_attr->vlan_id); + if (ret) + return ret; + } + } else { + ah_attr->vlan_id = 0xffff; + } + ah_attr->dlid = wc->slid; ah_attr->sl = wc->sl; ah_attr->src_path_bits = wc->dlid_path_bits; @@ -476,7 +502,9 @@ static const struct { int valid; enum ib_qp_attr_mask req_param[IB_QPT_MAX]; + enum ib_qp_attr_mask req_param_add_eth[IB_QPT_MAX]; enum ib_qp_attr_mask opt_param[IB_QPT_MAX]; + enum ib_qp_attr_mask opt_param_add_eth[IB_QPT_MAX]; } qp_state_table[IB_QPS_ERR + 1][IB_QPS_ERR + 1] = { [IB_QPS_RESET] = { [IB_QPS_RESET] = { .valid = 1 }, @@ -557,6 +585,12 @@ IB_QP_MAX_DEST_RD_ATOMIC | IB_QP_MIN_RNR_TIMER), }, + .req_param_add_eth = { + [IB_QPT_RC] = (IB_QP_SMAC), + [IB_QPT_UC] = (IB_QP_SMAC), + [IB_QPT_XRC_INI] = (IB_QP_SMAC), + [IB_QPT_XRC_TGT] = (IB_QP_SMAC) + }, .opt_param = { [IB_QPT_UD] = (IB_QP_PKEY_INDEX | IB_QP_QKEY), @@ -576,7 +610,21 @@ IB_QP_QKEY), [IB_QPT_GSI] = (IB_QP_PKEY_INDEX | IB_QP_QKEY), - } + }, + .opt_param_add_eth = { + [IB_QPT_RC] = (IB_QP_ALT_SMAC | + IB_QP_VID | + IB_QP_ALT_VID), + [IB_QPT_UC] = (IB_QP_ALT_SMAC | + IB_QP_VID | + IB_QP_ALT_VID), + [IB_QPT_XRC_INI] = (IB_QP_ALT_SMAC | + IB_QP_VID | + IB_QP_ALT_VID), + [IB_QPT_XRC_TGT] = (IB_QP_ALT_SMAC | + IB_QP_VID | + IB_QP_ALT_VID) + } } }, [IB_QPS_RTR] = { @@ -779,7 +827,8 @@ }; int ib_modify_qp_is_ok(enum ib_qp_state cur_state, enum ib_qp_state next_state, - enum ib_qp_type type, enum ib_qp_attr_mask mask) + enum ib_qp_type type, enum ib_qp_attr_mask mask, + enum rdma_link_layer ll) { enum ib_qp_attr_mask req_param, opt_param; @@ -798,6 +847,13 @@ req_param = qp_state_table[cur_state][next_state].req_param[type]; opt_param = qp_state_table[cur_state][next_state].opt_param[type]; + if (ll == IB_LINK_LAYER_ETHERNET) { + req_param |= qp_state_table[cur_state][next_state]. + req_param_add_eth[type]; + opt_param |= qp_state_table[cur_state][next_state]. + opt_param_add_eth[type]; + } + if ((mask & req_param) != req_param) return 0; @@ -808,10 +864,51 @@ } EXPORT_SYMBOL(ib_modify_qp_is_ok); +int ib_resolve_eth_l2_attrs(struct ib_qp *qp, + struct ib_qp_attr *qp_attr, int *qp_attr_mask) +{ + int ret = 0; + union ib_gid sgid; + + if ((*qp_attr_mask & IB_QP_AV) && + (rdma_port_get_link_layer(qp->device, qp_attr->ah_attr.port_num) == IB_LINK_LAYER_ETHERNET)) { + ret = ib_query_gid(qp->device, qp_attr->ah_attr.port_num, + qp_attr->ah_attr.grh.sgid_index, &sgid); + if (ret) + goto out; + if (rdma_link_local_addr((struct in6_addr *)qp_attr->ah_attr.grh.dgid.raw)) { + rdma_get_ll_mac((struct in6_addr *)qp_attr->ah_attr.grh.dgid.raw, qp_attr->ah_attr.dmac); + rdma_get_ll_mac((struct in6_addr *)sgid.raw, qp_attr->smac); + qp_attr->vlan_id = rdma_get_vlan_id(&sgid); + } else { + ret = rdma_addr_find_dmac_by_grh(&sgid, &qp_attr->ah_attr.grh.dgid, + qp_attr->ah_attr.dmac, &qp_attr->vlan_id); + if (ret) + goto out; + ret = rdma_addr_find_smac_by_sgid(&sgid, qp_attr->smac, NULL); + if (ret) + goto out; + } + *qp_attr_mask |= IB_QP_SMAC; + if (qp_attr->vlan_id < 0xFFFF) + *qp_attr_mask |= IB_QP_VID; + } +out: + return ret; +} +EXPORT_SYMBOL(ib_resolve_eth_l2_attrs); + + int ib_modify_qp(struct ib_qp *qp, struct ib_qp_attr *qp_attr, int qp_attr_mask) { + int ret; + + ret = ib_resolve_eth_l2_attrs(qp, qp_attr, &qp_attr_mask); + if (ret) + return ret; + return qp->device->modify_qp(qp->real_qp, qp_attr, qp_attr_mask, NULL); } EXPORT_SYMBOL(ib_modify_qp); --- linux-3.13.0.orig/drivers/infiniband/hw/amso1100/c2.c +++ linux-3.13.0/drivers/infiniband/hw/amso1100/c2.c @@ -1082,6 +1082,7 @@ /* Initialize network device */ if ((netdev = c2_devinit(c2dev, mmio_regs)) == NULL) { + ret = -ENOMEM; iounmap(mmio_regs); goto bail4; } @@ -1151,7 +1152,8 @@ goto bail10; } - if (c2_register_device(c2dev)) + ret = c2_register_device(c2dev); + if (ret) goto bail10; return 0; --- linux-3.13.0.orig/drivers/infiniband/hw/amso1100/c2_intr.c +++ linux-3.13.0/drivers/infiniband/hw/amso1100/c2_intr.c @@ -169,7 +169,8 @@ * We should never get here, as the adapter should * never send us a reply that we're not expecting. */ - vq_repbuf_free(c2dev, host_msg); + if (reply_msg != NULL) + vq_repbuf_free(c2dev, host_msg); pr_debug("handle_vq: UNEXPECTEDLY got NULL req\n"); return; } --- linux-3.13.0.orig/drivers/infiniband/hw/amso1100/c2_rnic.c +++ linux-3.13.0/drivers/infiniband/hw/amso1100/c2_rnic.c @@ -576,7 +576,8 @@ goto bail4; /* Initialize cached the adapter limits */ - if (c2_rnic_query(c2dev, &c2dev->props)) + err = c2_rnic_query(c2dev, &c2dev->props); + if (err) goto bail5; /* Initialize the PD pool */ --- linux-3.13.0.orig/drivers/infiniband/hw/cxgb3/iwch_cm.c +++ linux-3.13.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-3.13.0.orig/drivers/infiniband/hw/cxgb4/cm.c +++ linux-3.13.0/drivers/infiniband/hw/cxgb4/cm.c @@ -1647,6 +1647,15 @@ status != CPL_ERR_ARP_MISS; } +/* Returns whether a CPL status conveys negative advice. + */ +static int is_neg_adv(unsigned int status) +{ + return status == CPL_ERR_RTX_NEG_ADVICE || + status == CPL_ERR_PERSIST_NEG_ADVICE || + status == CPL_ERR_KEEPALV_NEG_ADVICE; +} + #define ACT_OPEN_RETRY_COUNT 2 static int import_ep(struct c4iw_ep *ep, int iptype, __u8 *peer_ip, @@ -1835,7 +1844,7 @@ PDBG("%s ep %p atid %u status %u errno %d\n", __func__, ep, atid, status, status2errno(status)); - if (status == CPL_ERR_RTX_NEG_ADVICE) { + if (is_neg_adv(status)) { printk(KERN_WARNING MOD "Connection problems for atid %u\n", atid); return 0; @@ -2265,15 +2274,6 @@ return 0; } -/* - * Returns whether an ABORT_REQ_RSS message is a negative advice. - */ -static int is_neg_adv_abort(unsigned int status) -{ - return status == CPL_ERR_RTX_NEG_ADVICE || - status == CPL_ERR_PERSIST_NEG_ADVICE; -} - static int peer_abort(struct c4iw_dev *dev, struct sk_buff *skb) { struct cpl_abort_req_rss *req = cplhdr(skb); @@ -2287,7 +2287,7 @@ unsigned int tid = GET_TID(req); ep = lookup_tid(t, tid); - if (is_neg_adv_abort(req->status)) { + if (is_neg_adv(req->status)) { PDBG("%s neg_adv_abort ep %p tid %u\n", __func__, ep, ep->hwtid); return 0; @@ -3352,6 +3352,7 @@ goto free_dst; } + neigh_release(neigh); step = dev->rdev.lldi.nrxq / dev->rdev.lldi.nchan; rss_qid = dev->rdev.lldi.rxq_ids[pi->port_id * step]; window = (__force u16) htons((__force u16)tcph->window); @@ -3569,7 +3570,7 @@ kfree_skb(skb); return 0; } - if (is_neg_adv_abort(req->status)) { + if (is_neg_adv(req->status)) { PDBG("%s neg_adv_abort ep %p tid %u\n", __func__, ep, ep->hwtid); kfree_skb(skb); --- linux-3.13.0.orig/drivers/infiniband/hw/cxgb4/cq.c +++ linux-3.13.0/drivers/infiniband/hw/cxgb4/cq.c @@ -940,7 +940,8 @@ uresp.gts_key = ucontext->key; ucontext->key += PAGE_SIZE; spin_unlock(&ucontext->mmap_lock); - ret = ib_copy_to_udata(udata, &uresp, sizeof uresp); + ret = ib_copy_to_udata(udata, &uresp, + sizeof(uresp) - sizeof(uresp.reserved)); if (ret) goto err5; --- linux-3.13.0.orig/drivers/infiniband/hw/cxgb4/device.c +++ linux-3.13.0/drivers/infiniband/hw/cxgb4/device.c @@ -64,6 +64,10 @@ static LIST_HEAD(uld_ctx_list); static DEFINE_MUTEX(dev_mutex); +#define DB_FC_RESUME_SIZE 64 +#define DB_FC_RESUME_DELAY 1 +#define DB_FC_DRAIN_THRESH 0 + static struct dentry *c4iw_debugfs_root; struct c4iw_debugfs_data { @@ -282,7 +286,7 @@ .llseek = default_llseek, }; -static char *db_state_str[] = {"NORMAL", "FLOW_CONTROL", "RECOVERY"}; +static char *db_state_str[] = {"NORMAL", "FLOW_CONTROL", "RECOVERY", "STOPPED"}; static int stats_show(struct seq_file *seq, void *v) { @@ -311,9 +315,10 @@ seq_printf(seq, " DB FULL: %10llu\n", dev->rdev.stats.db_full); seq_printf(seq, " DB EMPTY: %10llu\n", dev->rdev.stats.db_empty); seq_printf(seq, " DB DROP: %10llu\n", dev->rdev.stats.db_drop); - seq_printf(seq, " DB State: %s Transitions %llu\n", + seq_printf(seq, " DB State: %s Transitions %llu FC Interruptions %llu\n", db_state_str[dev->db_state], - dev->rdev.stats.db_state_transitions); + dev->rdev.stats.db_state_transitions, + dev->rdev.stats.db_fc_interruptions); seq_printf(seq, "TCAM_FULL: %10llu\n", dev->rdev.stats.tcam_full); seq_printf(seq, "ACT_OFLD_CONN_FAILS: %10llu\n", dev->rdev.stats.act_ofld_conn_fails); @@ -643,6 +648,12 @@ printk(KERN_ERR MOD "error %d initializing ocqp pool\n", err); goto err4; } + rdev->status_page = (struct t4_dev_status_page *) + __get_free_page(GFP_KERNEL); + if (!rdev->status_page) { + pr_err(MOD "error allocating status page\n"); + goto err4; + } return 0; err4: c4iw_rqtpool_destroy(rdev); @@ -656,6 +667,7 @@ static void c4iw_rdev_close(struct c4iw_rdev *rdev) { + free_page((unsigned long)rdev->status_page); c4iw_pblpool_destroy(rdev); c4iw_rqtpool_destroy(rdev); c4iw_destroy_resource(&rdev->resource); @@ -703,18 +715,6 @@ pr_info("%s: On-Chip Queues not supported on this device.\n", pci_name(infop->pdev)); - if (!is_t4(infop->adapter_type)) { - if (!allow_db_fc_on_t5) { - db_fc_threshold = 100000; - pr_info("DB Flow Control Disabled.\n"); - } - - if (!allow_db_coalescing_on_t5) { - db_coalescing_threshold = -1; - pr_info("DB Coalescing Disabled.\n"); - } - } - devp = (struct c4iw_dev *)ib_alloc_device(sizeof(*devp)); if (!devp) { printk(KERN_ERR MOD "Cannot allocate ib device\n"); @@ -749,6 +749,7 @@ spin_lock_init(&devp->lock); mutex_init(&devp->rdev.stats.lock); mutex_init(&devp->db_mutex); + INIT_LIST_HEAD(&devp->db_fc_list); if (c4iw_debugfs_root) { devp->debugfs_root = debugfs_create_dir( @@ -977,13 +978,16 @@ static void stop_queues(struct uld_ctx *ctx) { - spin_lock_irq(&ctx->dev->lock); - if (ctx->dev->db_state == NORMAL) { - ctx->dev->rdev.stats.db_state_transitions++; - ctx->dev->db_state = FLOW_CONTROL; + unsigned long flags; + + spin_lock_irqsave(&ctx->dev->lock, flags); + ctx->dev->rdev.stats.db_state_transitions++; + ctx->dev->db_state = STOPPED; + if (ctx->dev->rdev.flags & T4_STATUS_PAGE_DISABLED) idr_for_each(&ctx->dev->qpidr, disable_qp_db, NULL); - } - spin_unlock_irq(&ctx->dev->lock); + else + ctx->dev->rdev.status_page->db_off = 1; + spin_unlock_irqrestore(&ctx->dev->lock, flags); } static int enable_qp_db(int id, void *p, void *data) @@ -994,15 +998,70 @@ return 0; } +static void resume_rc_qp(struct c4iw_qp *qp) +{ + spin_lock(&qp->lock); + t4_ring_sq_db(&qp->wq, qp->wq.sq.wq_pidx_inc); + qp->wq.sq.wq_pidx_inc = 0; + t4_ring_rq_db(&qp->wq, qp->wq.rq.wq_pidx_inc); + qp->wq.rq.wq_pidx_inc = 0; + spin_unlock(&qp->lock); +} + +static void resume_a_chunk(struct uld_ctx *ctx) +{ + int i; + struct c4iw_qp *qp; + + for (i = 0; i < DB_FC_RESUME_SIZE; i++) { + qp = list_first_entry(&ctx->dev->db_fc_list, struct c4iw_qp, + db_fc_entry); + list_del_init(&qp->db_fc_entry); + resume_rc_qp(qp); + if (list_empty(&ctx->dev->db_fc_list)) + break; + } +} + static void resume_queues(struct uld_ctx *ctx) { spin_lock_irq(&ctx->dev->lock); - if (ctx->dev->qpcnt <= db_fc_threshold && - ctx->dev->db_state == FLOW_CONTROL) { - ctx->dev->db_state = NORMAL; - ctx->dev->rdev.stats.db_state_transitions++; - idr_for_each(&ctx->dev->qpidr, enable_qp_db, NULL); + if (ctx->dev->db_state != STOPPED) + goto out; + ctx->dev->db_state = FLOW_CONTROL; + while (1) { + if (list_empty(&ctx->dev->db_fc_list)) { + WARN_ON(ctx->dev->db_state != FLOW_CONTROL); + ctx->dev->db_state = NORMAL; + ctx->dev->rdev.stats.db_state_transitions++; + if (ctx->dev->rdev.flags & T4_STATUS_PAGE_DISABLED) { + idr_for_each(&ctx->dev->qpidr, enable_qp_db, + NULL); + } else { + ctx->dev->rdev.status_page->db_off = 0; + } + break; + } else { + if (cxgb4_dbfifo_count(ctx->dev->rdev.lldi.ports[0], 1) + < (ctx->dev->rdev.lldi.dbfifo_int_thresh << + DB_FC_DRAIN_THRESH)) { + resume_a_chunk(ctx); + } + if (!list_empty(&ctx->dev->db_fc_list)) { + spin_unlock_irq(&ctx->dev->lock); + if (DB_FC_RESUME_DELAY) { + set_current_state(TASK_UNINTERRUPTIBLE); + schedule_timeout(DB_FC_RESUME_DELAY); + } + spin_lock_irq(&ctx->dev->lock); + if (ctx->dev->db_state != FLOW_CONTROL) + break; + } + } } +out: + if (ctx->dev->db_state != NORMAL) + ctx->dev->rdev.stats.db_fc_interruptions++; spin_unlock_irq(&ctx->dev->lock); } @@ -1028,12 +1087,12 @@ return 0; } -static void deref_qps(struct qp_list qp_list) +static void deref_qps(struct qp_list *qp_list) { int idx; - for (idx = 0; idx < qp_list.idx; idx++) - c4iw_qp_rem_ref(&qp_list.qps[idx]->ibqp); + for (idx = 0; idx < qp_list->idx; idx++) + c4iw_qp_rem_ref(&qp_list->qps[idx]->ibqp); } static void recover_lost_dbs(struct uld_ctx *ctx, struct qp_list *qp_list) @@ -1044,17 +1103,22 @@ for (idx = 0; idx < qp_list->idx; idx++) { struct c4iw_qp *qp = qp_list->qps[idx]; + spin_lock_irq(&qp->rhp->lock); + spin_lock(&qp->lock); ret = cxgb4_sync_txq_pidx(qp->rhp->rdev.lldi.ports[0], qp->wq.sq.qid, t4_sq_host_wq_pidx(&qp->wq), t4_sq_wq_size(&qp->wq)); if (ret) { - printk(KERN_ERR MOD "%s: Fatal error - " + pr_err(KERN_ERR MOD "%s: Fatal error - " "DB overflow recovery failed - " "error syncing SQ qid %u\n", pci_name(ctx->lldi.pdev), qp->wq.sq.qid); + spin_unlock(&qp->lock); + spin_unlock_irq(&qp->rhp->lock); return; } + qp->wq.sq.wq_pidx_inc = 0; ret = cxgb4_sync_txq_pidx(qp->rhp->rdev.lldi.ports[0], qp->wq.rq.qid, @@ -1062,12 +1126,17 @@ t4_rq_wq_size(&qp->wq)); if (ret) { - printk(KERN_ERR MOD "%s: Fatal error - " + pr_err(KERN_ERR MOD "%s: Fatal error - " "DB overflow recovery failed - " "error syncing RQ qid %u\n", pci_name(ctx->lldi.pdev), qp->wq.rq.qid); + spin_unlock(&qp->lock); + spin_unlock_irq(&qp->rhp->lock); return; } + qp->wq.rq.wq_pidx_inc = 0; + spin_unlock(&qp->lock); + spin_unlock_irq(&qp->rhp->lock); /* Wait for the dbfifo to drain */ while (cxgb4_dbfifo_count(qp->rhp->rdev.lldi.ports[0], 1) > 0) { @@ -1083,36 +1152,22 @@ struct qp_list qp_list; int ret; - /* lock out kernel db ringers */ - mutex_lock(&ctx->dev->db_mutex); - - /* put all queues in to recovery mode */ - spin_lock_irq(&ctx->dev->lock); - ctx->dev->db_state = RECOVERY; - ctx->dev->rdev.stats.db_state_transitions++; - idr_for_each(&ctx->dev->qpidr, disable_qp_db, NULL); - spin_unlock_irq(&ctx->dev->lock); - /* slow everybody down */ set_current_state(TASK_UNINTERRUPTIBLE); schedule_timeout(usecs_to_jiffies(1000)); - /* Wait for the dbfifo to completely drain. */ - while (cxgb4_dbfifo_count(ctx->dev->rdev.lldi.ports[0], 1) > 0) { - set_current_state(TASK_UNINTERRUPTIBLE); - schedule_timeout(usecs_to_jiffies(10)); - } - /* flush the SGE contexts */ ret = cxgb4_flush_eq_cache(ctx->dev->rdev.lldi.ports[0]); if (ret) { printk(KERN_ERR MOD "%s: Fatal error - DB overflow recovery failed\n", pci_name(ctx->lldi.pdev)); - goto out; + return; } /* Count active queues so we can build a list of queues to recover */ spin_lock_irq(&ctx->dev->lock); + WARN_ON(ctx->dev->db_state != STOPPED); + ctx->dev->db_state = RECOVERY; idr_for_each(&ctx->dev->qpidr, count_qps, &count); qp_list.qps = kzalloc(count * sizeof *qp_list.qps, GFP_ATOMIC); @@ -1120,7 +1175,7 @@ printk(KERN_ERR MOD "%s: Fatal error - DB overflow recovery failed\n", pci_name(ctx->lldi.pdev)); spin_unlock_irq(&ctx->dev->lock); - goto out; + return; } qp_list.idx = 0; @@ -1133,29 +1188,13 @@ recover_lost_dbs(ctx, &qp_list); /* we're almost done! deref the qps and clean up */ - deref_qps(qp_list); + deref_qps(&qp_list); kfree(qp_list.qps); - /* Wait for the dbfifo to completely drain again */ - while (cxgb4_dbfifo_count(ctx->dev->rdev.lldi.ports[0], 1) > 0) { - set_current_state(TASK_UNINTERRUPTIBLE); - schedule_timeout(usecs_to_jiffies(10)); - } - - /* resume the queues */ spin_lock_irq(&ctx->dev->lock); - if (ctx->dev->qpcnt > db_fc_threshold) - ctx->dev->db_state = FLOW_CONTROL; - else { - ctx->dev->db_state = NORMAL; - idr_for_each(&ctx->dev->qpidr, enable_qp_db, NULL); - } - ctx->dev->rdev.stats.db_state_transitions++; + WARN_ON(ctx->dev->db_state != RECOVERY); + ctx->dev->db_state = STOPPED; spin_unlock_irq(&ctx->dev->lock); - -out: - /* start up kernel db ringers again */ - mutex_unlock(&ctx->dev->db_mutex); } static int c4iw_uld_control(void *handle, enum cxgb4_control control, ...) @@ -1165,9 +1204,7 @@ switch (control) { case CXGB4_CONTROL_DB_FULL: stop_queues(ctx); - mutex_lock(&ctx->dev->rdev.stats.lock); ctx->dev->rdev.stats.db_full++; - mutex_unlock(&ctx->dev->rdev.stats.lock); break; case CXGB4_CONTROL_DB_EMPTY: resume_queues(ctx); --- linux-3.13.0.orig/drivers/infiniband/hw/cxgb4/iw_cxgb4.h +++ linux-3.13.0/drivers/infiniband/hw/cxgb4/iw_cxgb4.h @@ -109,6 +109,7 @@ enum c4iw_rdev_flags { T4_FATAL_ERROR = (1<<0), + T4_STATUS_PAGE_DISABLED = (1<<1), }; struct c4iw_stat { @@ -130,6 +131,7 @@ u64 db_empty; u64 db_drop; u64 db_state_transitions; + u64 db_fc_interruptions; u64 tcam_full; u64 act_ofld_conn_fails; u64 pas_ofld_conn_fails; @@ -150,6 +152,7 @@ unsigned long oc_mw_pa; void __iomem *oc_mw_kva; struct c4iw_stats stats; + struct t4_dev_status_page *status_page; }; static inline int c4iw_fatal_error(struct c4iw_rdev *rdev) @@ -211,7 +214,8 @@ enum db_state { NORMAL = 0, FLOW_CONTROL = 1, - RECOVERY = 2 + RECOVERY = 2, + STOPPED = 3 }; struct c4iw_dev { @@ -225,10 +229,10 @@ struct mutex db_mutex; struct dentry *debugfs_root; enum db_state db_state; - int qpcnt; struct idr hwtid_idr; struct idr atid_idr; struct idr stid_idr; + struct list_head db_fc_list; }; static inline struct c4iw_dev *to_c4iw_dev(struct ib_device *ibdev) @@ -432,6 +436,7 @@ struct c4iw_qp { struct ib_qp ibqp; + struct list_head db_fc_entry; struct c4iw_dev *rhp; struct c4iw_ep *ep; struct c4iw_qp_attributes attr; --- linux-3.13.0.orig/drivers/infiniband/hw/cxgb4/mem.c +++ linux-3.13.0/drivers/infiniband/hw/cxgb4/mem.c @@ -76,7 +76,7 @@ INIT_ULPTX_WR(req, wr_len, 0, 0); req->wr.wr_hi = cpu_to_be32(FW_WR_OP(FW_ULPTX_WR) | (wait ? FW_WR_COMPL(1) : 0)); - req->wr.wr_lo = wait ? (__force __be64)&wr_wait : 0; + req->wr.wr_lo = wait ? (__force __be64)(unsigned long) &wr_wait : 0L; req->wr.wr_mid = cpu_to_be32(FW_WR_LEN16(DIV_ROUND_UP(wr_len, 16))); req->cmd = cpu_to_be32(ULPTX_CMD(ULP_TX_MEM_WRITE)); req->cmd |= cpu_to_be32(V_T5_ULP_MEMIO_ORDER(1)); --- linux-3.13.0.orig/drivers/infiniband/hw/cxgb4/provider.c +++ linux-3.13.0/drivers/infiniband/hw/cxgb4/provider.c @@ -106,15 +106,56 @@ { struct c4iw_ucontext *context; struct c4iw_dev *rhp = to_c4iw_dev(ibdev); + static int warned; + struct c4iw_alloc_ucontext_resp uresp; + int ret = 0; + struct c4iw_mm_entry *mm = NULL; PDBG("%s ibdev %p\n", __func__, ibdev); context = kzalloc(sizeof(*context), GFP_KERNEL); - if (!context) - return ERR_PTR(-ENOMEM); + if (!context) { + ret = -ENOMEM; + goto err; + } + c4iw_init_dev_ucontext(&rhp->rdev, &context->uctx); INIT_LIST_HEAD(&context->mmaps); spin_lock_init(&context->mmap_lock); + + if (udata->outlen < sizeof(uresp)) { + if (!warned++) + pr_err(MOD "Warning - downlevel libcxgb4 (non-fatal), device status page disabled."); + rhp->rdev.flags |= T4_STATUS_PAGE_DISABLED; + } else { + mm = kmalloc(sizeof(*mm), GFP_KERNEL); + if (!mm) { + ret = -ENOMEM; + goto err_free; + } + + uresp.status_page_size = PAGE_SIZE; + + spin_lock(&context->mmap_lock); + uresp.status_page_key = context->key; + context->key += PAGE_SIZE; + spin_unlock(&context->mmap_lock); + + ret = ib_copy_to_udata(udata, &uresp, sizeof(uresp)); + if (ret) + goto err_mm; + + mm->key = uresp.status_page_key; + mm->addr = virt_to_phys(rhp->rdev.status_page); + mm->len = PAGE_SIZE; + insert_mmap(context, mm); + } return &context->ibucontext; +err_mm: + kfree(mm); +err_free: + kfree(context); +err: + return ERR_PTR(ret); } static int c4iw_mmap(struct ib_ucontext *context, struct vm_area_struct *vma) --- linux-3.13.0.orig/drivers/infiniband/hw/cxgb4/qp.c +++ linux-3.13.0/drivers/infiniband/hw/cxgb4/qp.c @@ -638,6 +638,46 @@ wake_up(&(to_c4iw_qp(qp)->wait)); } +static void add_to_fc_list(struct list_head *head, struct list_head *entry) +{ + if (list_empty(entry)) + list_add_tail(entry, head); +} + +static int ring_kernel_sq_db(struct c4iw_qp *qhp, u16 inc) +{ + unsigned long flags; + + spin_lock_irqsave(&qhp->rhp->lock, flags); + spin_lock(&qhp->lock); + if (qhp->rhp->db_state == NORMAL) { + t4_ring_sq_db(&qhp->wq, inc); + } else { + add_to_fc_list(&qhp->rhp->db_fc_list, &qhp->db_fc_entry); + qhp->wq.sq.wq_pidx_inc += inc; + } + spin_unlock(&qhp->lock); + spin_unlock_irqrestore(&qhp->rhp->lock, flags); + return 0; +} + +static int ring_kernel_rq_db(struct c4iw_qp *qhp, u16 inc) +{ + unsigned long flags; + + spin_lock_irqsave(&qhp->rhp->lock, flags); + spin_lock(&qhp->lock); + if (qhp->rhp->db_state == NORMAL) { + t4_ring_rq_db(&qhp->wq, inc); + } else { + add_to_fc_list(&qhp->rhp->db_fc_list, &qhp->db_fc_entry); + qhp->wq.rq.wq_pidx_inc += inc; + } + spin_unlock(&qhp->lock); + spin_unlock_irqrestore(&qhp->rhp->lock, flags); + return 0; +} + int c4iw_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr, struct ib_send_wr **bad_wr) { @@ -750,9 +790,13 @@ t4_sq_produce(&qhp->wq, len16); idx += DIV_ROUND_UP(len16*16, T4_EQ_ENTRY_SIZE); } - if (t4_wq_db_enabled(&qhp->wq)) + if (!qhp->rhp->rdev.status_page->db_off) { t4_ring_sq_db(&qhp->wq, idx); - spin_unlock_irqrestore(&qhp->lock, flag); + spin_unlock_irqrestore(&qhp->lock, flag); + } else { + spin_unlock_irqrestore(&qhp->lock, flag); + ring_kernel_sq_db(qhp, idx); + } return err; } @@ -812,9 +856,13 @@ wr = wr->next; num_wrs--; } - if (t4_wq_db_enabled(&qhp->wq)) + if (!qhp->rhp->rdev.status_page->db_off) { t4_ring_rq_db(&qhp->wq, idx); - spin_unlock_irqrestore(&qhp->lock, flag); + spin_unlock_irqrestore(&qhp->lock, flag); + } else { + spin_unlock_irqrestore(&qhp->lock, flag); + ring_kernel_rq_db(qhp, idx); + } return err; } @@ -1200,35 +1248,6 @@ return ret; } -/* - * Called by the library when the qp has user dbs disabled due to - * a DB_FULL condition. This function will single-thread all user - * DB rings to avoid overflowing the hw db-fifo. - */ -static int ring_kernel_db(struct c4iw_qp *qhp, u32 qid, u16 inc) -{ - int delay = db_delay_usecs; - - mutex_lock(&qhp->rhp->db_mutex); - do { - - /* - * The interrupt threshold is dbfifo_int_thresh << 6. So - * make sure we don't cross that and generate an interrupt. - */ - if (cxgb4_dbfifo_count(qhp->rhp->rdev.lldi.ports[0], 1) < - (qhp->rhp->rdev.lldi.dbfifo_int_thresh << 5)) { - writel(QID(qid) | PIDX(inc), qhp->wq.db); - break; - } - set_current_state(TASK_UNINTERRUPTIBLE); - schedule_timeout(usecs_to_jiffies(delay)); - delay = min(delay << 1, 2000); - } while (1); - mutex_unlock(&qhp->rhp->db_mutex); - return 0; -} - int c4iw_modify_qp(struct c4iw_dev *rhp, struct c4iw_qp *qhp, enum c4iw_qp_attr_mask mask, struct c4iw_qp_attributes *attrs, @@ -1278,11 +1297,11 @@ } if (mask & C4IW_QP_ATTR_SQ_DB) { - ret = ring_kernel_db(qhp, qhp->wq.sq.qid, attrs->sq_db_inc); + ret = ring_kernel_sq_db(qhp, attrs->sq_db_inc); goto out; } if (mask & C4IW_QP_ATTR_RQ_DB) { - ret = ring_kernel_db(qhp, qhp->wq.rq.qid, attrs->rq_db_inc); + ret = ring_kernel_rq_db(qhp, attrs->rq_db_inc); goto out; } @@ -1465,14 +1484,6 @@ return ret; } -static int enable_qp_db(int id, void *p, void *data) -{ - struct c4iw_qp *qp = p; - - t4_enable_wq_db(&qp->wq); - return 0; -} - int c4iw_destroy_qp(struct ib_qp *ib_qp) { struct c4iw_dev *rhp; @@ -1490,22 +1501,15 @@ c4iw_modify_qp(rhp, qhp, C4IW_QP_ATTR_NEXT_STATE, &attrs, 0); wait_event(qhp->wait, !qhp->ep); - spin_lock_irq(&rhp->lock); - remove_handle_nolock(rhp, &rhp->qpidr, qhp->wq.sq.qid); - rhp->qpcnt--; - BUG_ON(rhp->qpcnt < 0); - if (rhp->qpcnt <= db_fc_threshold && rhp->db_state == FLOW_CONTROL) { - rhp->rdev.stats.db_state_transitions++; - rhp->db_state = NORMAL; - idr_for_each(&rhp->qpidr, enable_qp_db, NULL); - } - if (db_coalescing_threshold >= 0) - if (rhp->qpcnt <= db_coalescing_threshold) - cxgb4_enable_db_coalescing(rhp->rdev.lldi.ports[0]); - spin_unlock_irq(&rhp->lock); + remove_handle(rhp, &rhp->qpidr, qhp->wq.sq.qid); atomic_dec(&qhp->refcnt); wait_event(qhp->wait, !atomic_read(&qhp->refcnt)); + spin_lock_irq(&rhp->lock); + if (!list_empty(&qhp->db_fc_entry)) + list_del_init(&qhp->db_fc_entry); + spin_unlock_irq(&rhp->lock); + ucontext = ib_qp->uobject ? to_c4iw_ucontext(ib_qp->uobject->context) : NULL; destroy_qp(&rhp->rdev, &qhp->wq, @@ -1516,14 +1520,6 @@ return 0; } -static int disable_qp_db(int id, void *p, void *data) -{ - struct c4iw_qp *qp = p; - - t4_disable_wq_db(&qp->wq); - return 0; -} - struct ib_qp *c4iw_create_qp(struct ib_pd *pd, struct ib_qp_init_attr *attrs, struct ib_udata *udata) { @@ -1610,20 +1606,7 @@ init_waitqueue_head(&qhp->wait); atomic_set(&qhp->refcnt, 1); - spin_lock_irq(&rhp->lock); - if (rhp->db_state != NORMAL) - t4_disable_wq_db(&qhp->wq); - rhp->qpcnt++; - if (rhp->qpcnt > db_fc_threshold && rhp->db_state == NORMAL) { - rhp->rdev.stats.db_state_transitions++; - rhp->db_state = FLOW_CONTROL; - idr_for_each(&rhp->qpidr, disable_qp_db, NULL); - } - if (db_coalescing_threshold >= 0) - if (rhp->qpcnt > db_coalescing_threshold) - cxgb4_disable_db_coalescing(rhp->rdev.lldi.ports[0]); - ret = insert_handle_nolock(rhp, &rhp->qpidr, qhp, qhp->wq.sq.qid); - spin_unlock_irq(&rhp->lock); + ret = insert_handle(rhp, &rhp->qpidr, qhp, qhp->wq.sq.qid); if (ret) goto err2; @@ -1709,6 +1692,7 @@ } qhp->ibqp.qp_num = qhp->wq.sq.qid; init_timer(&(qhp->timer)); + INIT_LIST_HEAD(&qhp->db_fc_entry); PDBG("%s qhp %p sq_num_entries %d, rq_num_entries %d qpid 0x%0x\n", __func__, qhp, qhp->attr.sq_num_entries, qhp->attr.rq_num_entries, qhp->wq.sq.qid); --- linux-3.13.0.orig/drivers/infiniband/hw/cxgb4/t4.h +++ linux-3.13.0/drivers/infiniband/hw/cxgb4/t4.h @@ -300,6 +300,7 @@ u16 cidx; u16 pidx; u16 wq_pidx; + u16 wq_pidx_inc; u16 flags; short flush_cidx; }; @@ -324,6 +325,7 @@ u16 cidx; u16 pidx; u16 wq_pidx; + u16 wq_pidx_inc; }; struct t4_wq { @@ -609,3 +611,7 @@ ((struct t4_status_page *)&cq->queue[cq->size])->qp_err = 1; } #endif + +struct t4_dev_status_page { + u8 db_off; +}; --- linux-3.13.0.orig/drivers/infiniband/hw/cxgb4/user.h +++ linux-3.13.0/drivers/infiniband/hw/cxgb4/user.h @@ -48,6 +48,7 @@ __u32 cqid; __u32 size; __u32 qid_mask; + __u32 reserved; /* explicit padding (optional for i386) */ }; @@ -70,4 +71,9 @@ __u32 qid_mask; __u32 flags; }; + +struct c4iw_alloc_ucontext_resp { + __u64 status_page_key; + __u32 status_page_size; +}; #endif --- linux-3.13.0.orig/drivers/infiniband/hw/ehca/ehca_cq.c +++ linux-3.13.0/drivers/infiniband/hw/ehca/ehca_cq.c @@ -283,6 +283,7 @@ (my_cq->galpas.user.fw_handle & (PAGE_SIZE - 1)); if (ib_copy_to_udata(udata, &resp, sizeof(resp))) { ehca_err(device, "Copy to udata failed."); + cq = ERR_PTR(-EFAULT); goto create_cq_exit4; } } --- linux-3.13.0.orig/drivers/infiniband/hw/ehca/ehca_qp.c +++ linux-3.13.0/drivers/infiniband/hw/ehca/ehca_qp.c @@ -1329,7 +1329,7 @@ qp_new_state = attr_mask & IB_QP_STATE ? attr->qp_state : qp_cur_state; if (!smi_reset2init && !ib_modify_qp_is_ok(qp_cur_state, qp_new_state, ibqp->qp_type, - attr_mask)) { + attr_mask, IB_LINK_LAYER_UNSPECIFIED)) { ret = -EINVAL; ehca_err(ibqp->device, "Invalid qp transition new_state=%x cur_state=%x " --- linux-3.13.0.orig/drivers/infiniband/hw/ipath/ipath_diag.c +++ linux-3.13.0/drivers/infiniband/hw/ipath/ipath_diag.c @@ -326,7 +326,7 @@ size_t count, loff_t *off) { u32 __iomem *piobuf; - u32 plen, clen, pbufn; + u32 plen, pbufn, maxlen_reserve; struct ipath_diag_pkt odp; struct ipath_diag_xpkt dp; u32 *tmpbuf = NULL; @@ -335,42 +335,24 @@ u64 val; u32 l_state, lt_state; /* LinkState, LinkTrainingState */ - if (count < sizeof(odp)) { - ret = -EINVAL; - goto bail; - } if (count == sizeof(dp)) { if (copy_from_user(&dp, data, sizeof(dp))) { ret = -EFAULT; goto bail; } - } else if (copy_from_user(&odp, data, sizeof(odp))) { - ret = -EFAULT; - goto bail; - } - - /* - * Due to padding/alignment issues (lessened with new struct) - * the old and new structs are the same length. We need to - * disambiguate them, which we can do because odp.len has never - * been less than the total of LRH+BTH+DETH so far, while - * dp.unit (same offset) unit is unlikely to get that high. - * Similarly, dp.data, the pointer to user at the same offset - * as odp.unit, is almost certainly at least one (512byte)page - * "above" NULL. The if-block below can be omitted if compatibility - * between a new driver and older diagnostic code is unimportant. - * compatibility the other direction (new diags, old driver) is - * handled in the diagnostic code, with a warning. - */ - if (dp.unit >= 20 && dp.data < 512) { - /* very probable version mismatch. Fix it up */ - memcpy(&odp, &dp, sizeof(odp)); - /* We got a legacy dp, copy elements to dp */ + } else if (count == sizeof(odp)) { + if (copy_from_user(&odp, data, sizeof(odp))) { + ret = -EFAULT; + goto bail; + } + dp.len = odp.len; dp.unit = odp.unit; dp.data = odp.data; - dp.len = odp.len; - dp.pbc_wd = 0; /* Indicate we need to compute PBC wd */ + dp.pbc_wd = 0; + } else { + ret = -EINVAL; + goto bail; } /* send count must be an exact number of dwords */ @@ -379,7 +361,7 @@ goto bail; } - clen = dp.len >> 2; + plen = dp.len >> 2; dd = ipath_lookup(dp.unit); if (!dd || !(dd->ipath_flags & IPATH_PRESENT) || @@ -422,16 +404,22 @@ goto bail; } - /* need total length before first word written */ - /* +1 word is for the qword padding */ - plen = sizeof(u32) + dp.len; - - if ((plen + 4) > dd->ipath_ibmaxlen) { + /* + * need total length before first word written, plus 2 Dwords. One Dword + * is for padding so we get the full user data when not aligned on + * a word boundary. The other Dword is to make sure we have room for the + * ICRC which gets tacked on later. + */ + maxlen_reserve = 2 * sizeof(u32); + if (dp.len > dd->ipath_ibmaxlen - maxlen_reserve) { ipath_dbg("Pkt len 0x%x > ibmaxlen %x\n", - plen - 4, dd->ipath_ibmaxlen); + dp.len, dd->ipath_ibmaxlen); ret = -EINVAL; - goto bail; /* before writing pbc */ + goto bail; } + + plen = sizeof(u32) + dp.len; + tmpbuf = vmalloc(plen); if (!tmpbuf) { dev_info(&dd->pcidev->dev, "Unable to allocate tmp buffer, " @@ -473,11 +461,11 @@ */ if (dd->ipath_flags & IPATH_PIO_FLUSH_WC) { ipath_flush_wc(); - __iowrite32_copy(piobuf + 2, tmpbuf, clen - 1); + __iowrite32_copy(piobuf + 2, tmpbuf, plen - 1); ipath_flush_wc(); - __raw_writel(tmpbuf[clen - 1], piobuf + clen + 1); + __raw_writel(tmpbuf[plen - 1], piobuf + plen + 1); } else - __iowrite32_copy(piobuf + 2, tmpbuf, clen); + __iowrite32_copy(piobuf + 2, tmpbuf, plen); ipath_flush_wc(); --- linux-3.13.0.orig/drivers/infiniband/hw/ipath/ipath_file_ops.c +++ linux-3.13.0/drivers/infiniband/hw/ipath/ipath_file_ops.c @@ -45,6 +45,8 @@ #include #include +#include + #include "ipath_kernel.h" #include "ipath_common.h" #include "ipath_user_sdma.h" @@ -2240,6 +2242,9 @@ ssize_t ret = 0; void *dest; + if (WARN_ON_ONCE(!ib_safe_file_access(fp))) + return -EACCES; + if (count < sizeof(cmd.type)) { ret = -EINVAL; goto bail; --- linux-3.13.0.orig/drivers/infiniband/hw/ipath/ipath_qp.c +++ linux-3.13.0/drivers/infiniband/hw/ipath/ipath_qp.c @@ -463,7 +463,7 @@ new_state = attr_mask & IB_QP_STATE ? attr->qp_state : cur_state; if (!ib_modify_qp_is_ok(cur_state, new_state, ibqp->qp_type, - attr_mask)) + attr_mask, IB_LINK_LAYER_UNSPECIFIED)) goto inval; if (attr_mask & IB_QP_AV) { --- linux-3.13.0.orig/drivers/infiniband/hw/mlx4/Kconfig +++ linux-3.13.0/drivers/infiniband/hw/mlx4/Kconfig @@ -1,6 +1,6 @@ config MLX4_INFINIBAND tristate "Mellanox ConnectX HCA support" - depends on NETDEVICES && ETHERNET && PCI + depends on NETDEVICES && ETHERNET && PCI && INET select NET_VENDOR_MELLANOX select MLX4_CORE ---help--- --- linux-3.13.0.orig/drivers/infiniband/hw/mlx4/ah.c +++ linux-3.13.0/drivers/infiniband/hw/mlx4/ah.c @@ -39,25 +39,6 @@ #include "mlx4_ib.h" -int mlx4_ib_resolve_grh(struct mlx4_ib_dev *dev, const struct ib_ah_attr *ah_attr, - u8 *mac, int *is_mcast, u8 port) -{ - struct in6_addr in6; - - *is_mcast = 0; - - memcpy(&in6, ah_attr->grh.dgid.raw, sizeof in6); - if (rdma_link_local_addr(&in6)) - rdma_get_ll_mac(&in6, mac); - else if (rdma_is_multicast_addr(&in6)) { - rdma_get_mcast_mac(&in6, mac); - *is_mcast = 1; - } else - return -EINVAL; - - return 0; -} - static struct ib_ah *create_ib_ah(struct ib_pd *pd, struct ib_ah_attr *ah_attr, struct mlx4_ib_ah *ah) { @@ -92,26 +73,24 @@ { struct mlx4_ib_dev *ibdev = to_mdev(pd->device); struct mlx4_dev *dev = ibdev->dev; - union ib_gid sgid; - u8 mac[6]; - int err; int is_mcast; + struct in6_addr in6; u16 vlan_tag; - err = mlx4_ib_resolve_grh(ibdev, ah_attr, mac, &is_mcast, ah_attr->port_num); - if (err) - return ERR_PTR(err); - - memcpy(ah->av.eth.mac, mac, 6); - err = ib_get_cached_gid(pd->device, ah_attr->port_num, ah_attr->grh.sgid_index, &sgid); - if (err) - return ERR_PTR(err); - vlan_tag = rdma_get_vlan_id(&sgid); + memcpy(&in6, ah_attr->grh.dgid.raw, sizeof(in6)); + if (rdma_is_multicast_addr(&in6)) { + is_mcast = 1; + rdma_get_mcast_mac(&in6, ah->av.eth.mac); + } else { + memcpy(ah->av.eth.mac, ah_attr->dmac, ETH_ALEN); + } + vlan_tag = ah_attr->vlan_id; if (vlan_tag < 0x1000) vlan_tag |= (ah_attr->sl & 7) << 13; 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 && @@ -169,9 +148,13 @@ enum rdma_link_layer ll; memset(ah_attr, 0, sizeof *ah_attr); - ah_attr->sl = be32_to_cpu(ah->av.ib.sl_tclass_flowlabel) >> 28; ah_attr->port_num = be32_to_cpu(ah->av.ib.port_pd) >> 24; ll = rdma_port_get_link_layer(ibah->device, ah_attr->port_num); + if (ll == IB_LINK_LAYER_ETHERNET) + ah_attr->sl = be32_to_cpu(ah->av.eth.sl_tclass_flowlabel) >> 29; + else + ah_attr->sl = be32_to_cpu(ah->av.ib.sl_tclass_flowlabel) >> 28; + ah_attr->dlid = ll == IB_LINK_LAYER_INFINIBAND ? be16_to_cpu(ah->av.ib.dlid) : 0; if (ah->av.ib.stat_rate) ah_attr->static_rate = ah->av.ib.stat_rate - MLX4_STAT_RATE_OFFSET; --- linux-3.13.0.orig/drivers/infiniband/hw/mlx4/alias_GUID.c +++ linux-3.13.0/drivers/infiniband/hw/mlx4/alias_GUID.c @@ -154,7 +154,7 @@ continue; slave_id = (block_num * NUM_ALIAS_GUID_IN_REC) + i ; - if (slave_id >= dev->dev->num_slaves) + if (slave_id >= dev->dev->num_vfs + 1) return; tmp_cur_ag = *(__be64 *)&p_data[i * GUID_REC_SIZE]; form_cache_ag = get_cached_alias_guid(dev, port_num, --- linux-3.13.0.orig/drivers/infiniband/hw/mlx4/cm.c +++ linux-3.13.0/drivers/infiniband/hw/mlx4/cm.c @@ -61,6 +61,11 @@ __be32 remote_comm_id; }; +struct cm_sidr_generic_msg { + struct ib_mad_hdr hdr; + __be32 request_id; +}; + struct cm_req_msg { unsigned char unused[0x60]; union ib_gid primary_path_sgid; @@ -69,28 +74,62 @@ static void set_local_comm_id(struct ib_mad *mad, u32 cm_id) { - struct cm_generic_msg *msg = (struct cm_generic_msg *)mad; - msg->local_comm_id = cpu_to_be32(cm_id); + if (mad->mad_hdr.attr_id == CM_SIDR_REQ_ATTR_ID) { + struct cm_sidr_generic_msg *msg = + (struct cm_sidr_generic_msg *)mad; + msg->request_id = cpu_to_be32(cm_id); + } else if (mad->mad_hdr.attr_id == CM_SIDR_REP_ATTR_ID) { + pr_err("trying to set local_comm_id in SIDR_REP\n"); + return; + } else { + struct cm_generic_msg *msg = (struct cm_generic_msg *)mad; + msg->local_comm_id = cpu_to_be32(cm_id); + } } static u32 get_local_comm_id(struct ib_mad *mad) { - struct cm_generic_msg *msg = (struct cm_generic_msg *)mad; - - return be32_to_cpu(msg->local_comm_id); + if (mad->mad_hdr.attr_id == CM_SIDR_REQ_ATTR_ID) { + struct cm_sidr_generic_msg *msg = + (struct cm_sidr_generic_msg *)mad; + return be32_to_cpu(msg->request_id); + } else if (mad->mad_hdr.attr_id == CM_SIDR_REP_ATTR_ID) { + pr_err("trying to set local_comm_id in SIDR_REP\n"); + return -1; + } else { + struct cm_generic_msg *msg = (struct cm_generic_msg *)mad; + return be32_to_cpu(msg->local_comm_id); + } } static void set_remote_comm_id(struct ib_mad *mad, u32 cm_id) { - struct cm_generic_msg *msg = (struct cm_generic_msg *)mad; - msg->remote_comm_id = cpu_to_be32(cm_id); + if (mad->mad_hdr.attr_id == CM_SIDR_REP_ATTR_ID) { + struct cm_sidr_generic_msg *msg = + (struct cm_sidr_generic_msg *)mad; + msg->request_id = cpu_to_be32(cm_id); + } else if (mad->mad_hdr.attr_id == CM_SIDR_REQ_ATTR_ID) { + pr_err("trying to set remote_comm_id in SIDR_REQ\n"); + return; + } else { + struct cm_generic_msg *msg = (struct cm_generic_msg *)mad; + msg->remote_comm_id = cpu_to_be32(cm_id); + } } static u32 get_remote_comm_id(struct ib_mad *mad) { - struct cm_generic_msg *msg = (struct cm_generic_msg *)mad; - - return be32_to_cpu(msg->remote_comm_id); + if (mad->mad_hdr.attr_id == CM_SIDR_REP_ATTR_ID) { + struct cm_sidr_generic_msg *msg = + (struct cm_sidr_generic_msg *)mad; + return be32_to_cpu(msg->request_id); + } else if (mad->mad_hdr.attr_id == CM_SIDR_REQ_ATTR_ID) { + pr_err("trying to set remote_comm_id in SIDR_REQ\n"); + return -1; + } else { + struct cm_generic_msg *msg = (struct cm_generic_msg *)mad; + return be32_to_cpu(msg->remote_comm_id); + } } static union ib_gid gid_from_req_msg(struct ib_device *ibdev, struct ib_mad *mad) @@ -282,19 +321,21 @@ u32 sl_cm_id; int pv_cm_id = -1; - sl_cm_id = get_local_comm_id(mad); - if (mad->mad_hdr.attr_id == CM_REQ_ATTR_ID || - mad->mad_hdr.attr_id == CM_REP_ATTR_ID) { + mad->mad_hdr.attr_id == CM_REP_ATTR_ID || + mad->mad_hdr.attr_id == CM_SIDR_REQ_ATTR_ID) { + sl_cm_id = get_local_comm_id(mad); id = id_map_alloc(ibdev, slave_id, sl_cm_id); if (IS_ERR(id)) { mlx4_ib_warn(ibdev, "%s: id{slave: %d, sl_cm_id: 0x%x} Failed to id_map_alloc\n", __func__, slave_id, sl_cm_id); return PTR_ERR(id); } - } else if (mad->mad_hdr.attr_id == CM_REJ_ATTR_ID) { + } else if (mad->mad_hdr.attr_id == CM_REJ_ATTR_ID || + mad->mad_hdr.attr_id == CM_SIDR_REP_ATTR_ID) { return 0; } else { + sl_cm_id = get_local_comm_id(mad); id = id_map_get(ibdev, &pv_cm_id, slave_id, sl_cm_id); } @@ -315,14 +356,18 @@ } int mlx4_ib_demux_cm_handler(struct ib_device *ibdev, int port, int *slave, - struct ib_mad *mad) + struct ib_mad *mad) { u32 pv_cm_id; struct id_map_entry *id; - if (mad->mad_hdr.attr_id == CM_REQ_ATTR_ID) { + if (mad->mad_hdr.attr_id == CM_REQ_ATTR_ID || + mad->mad_hdr.attr_id == CM_SIDR_REQ_ATTR_ID) { union ib_gid gid; + if (!slave) + return 0; + gid = gid_from_req_msg(ibdev, mad); *slave = mlx4_ib_find_real_gid(ibdev, port, gid.global.interface_id); if (*slave < 0) { @@ -341,7 +386,8 @@ return -ENOENT; } - *slave = id->slave_id; + if (slave) + *slave = id->slave_id; set_remote_comm_id(mad, id->sl_cm_id); if (mad->mad_hdr.attr_id == CM_DREQ_ATTR_ID) --- linux-3.13.0.orig/drivers/infiniband/hw/mlx4/cq.c +++ linux-3.13.0/drivers/infiniband/hw/mlx4/cq.c @@ -564,7 +564,7 @@ } static int use_tunnel_data(struct mlx4_ib_qp *qp, struct mlx4_ib_cq *cq, struct ib_wc *wc, - unsigned tail, struct mlx4_cqe *cqe) + unsigned tail, struct mlx4_cqe *cqe, int is_eth) { struct mlx4_ib_proxy_sqp_hdr *hdr; @@ -574,12 +574,20 @@ DMA_FROM_DEVICE); hdr = (struct mlx4_ib_proxy_sqp_hdr *) (qp->sqp_proxy_rcv[tail].addr); wc->pkey_index = be16_to_cpu(hdr->tun.pkey_index); - wc->slid = be16_to_cpu(hdr->tun.slid_mac_47_32); - wc->sl = (u8) (be16_to_cpu(hdr->tun.sl_vid) >> 12); wc->src_qp = be32_to_cpu(hdr->tun.flags_src_qp) & 0xFFFFFF; wc->wc_flags |= (hdr->tun.g_ml_path & 0x80) ? (IB_WC_GRH) : 0; wc->dlid_path_bits = 0; + if (is_eth) { + wc->vlan_id = be16_to_cpu(hdr->tun.sl_vid); + memcpy(&(wc->smac[0]), (char *)&hdr->tun.mac_31_0, 4); + memcpy(&(wc->smac[4]), (char *)&hdr->tun.slid_mac_47_32, 2); + wc->wc_flags |= (IB_WC_WITH_VLAN | IB_WC_WITH_SMAC); + } else { + wc->slid = be16_to_cpu(hdr->tun.slid_mac_47_32); + wc->sl = (u8) (be16_to_cpu(hdr->tun.sl_vid) >> 12); + } + return 0; } @@ -594,6 +602,7 @@ struct mlx4_srq *msrq = NULL; int is_send; int is_error; + int is_eth; u32 g_mlpath_rqpn; u16 wqe_ctr; unsigned tail = 0; @@ -778,11 +787,15 @@ break; } + is_eth = (rdma_port_get_link_layer(wc->qp->device, + (*cur_qp)->port) == + IB_LINK_LAYER_ETHERNET); if (mlx4_is_mfunc(to_mdev(cq->ibcq.device)->dev)) { if ((*cur_qp)->mlx4_ib_qp_type & (MLX4_IB_QPT_PROXY_SMI_OWNER | MLX4_IB_QPT_PROXY_SMI | MLX4_IB_QPT_PROXY_GSI)) - return use_tunnel_data(*cur_qp, cq, wc, tail, cqe); + return use_tunnel_data(*cur_qp, cq, wc, tail, + cqe, is_eth); } wc->slid = be16_to_cpu(cqe->rlid); @@ -793,11 +806,21 @@ wc->pkey_index = be32_to_cpu(cqe->immed_rss_invalid) & 0x7f; wc->wc_flags |= mlx4_ib_ipoib_csum_ok(cqe->status, cqe->checksum) ? IB_WC_IP_CSUM_OK : 0; - if (rdma_port_get_link_layer(wc->qp->device, - (*cur_qp)->port) == IB_LINK_LAYER_ETHERNET) + if (is_eth) { wc->sl = be16_to_cpu(cqe->sl_vid) >> 13; - else + if (be32_to_cpu(cqe->vlan_my_qpn) & + MLX4_CQE_VLAN_PRESENT_MASK) { + wc->vlan_id = be16_to_cpu(cqe->sl_vid) & + MLX4_CQE_VID_MASK; + } else { + wc->vlan_id = 0xffff; + } + memcpy(wc->smac, cqe->smac, ETH_ALEN); + wc->wc_flags |= (IB_WC_WITH_VLAN | IB_WC_WITH_SMAC); + } else { wc->sl = be16_to_cpu(cqe->sl_vid) >> 12; + wc->vlan_id = 0xffff; + } } return 0; --- linux-3.13.0.orig/drivers/infiniband/hw/mlx4/mad.c +++ linux-3.13.0/drivers/infiniband/hw/mlx4/mad.c @@ -467,6 +467,7 @@ int ret = 0; u16 tun_pkey_ix; u16 cached_pkey; + u8 is_eth = dev->dev->caps.port_type[port] == MLX4_PORT_TYPE_ETH; if (dest_qpt > IB_QPT_GSI) return -EINVAL; @@ -509,6 +510,10 @@ * The driver will set the force loopback bit in post_send */ memset(&attr, 0, sizeof attr); attr.port_num = port; + if (is_eth) { + memcpy(&attr.grh.dgid.raw[0], &grh->dgid.raw[0], 16); + attr.ah_flags = IB_AH_GRH; + } ah = ib_create_ah(tun_ctx->pd, &attr); if (IS_ERR(ah)) return -ENOMEM; @@ -540,11 +545,36 @@ /* adjust tunnel data */ tun_mad->hdr.pkey_index = cpu_to_be16(tun_pkey_ix); - tun_mad->hdr.sl_vid = cpu_to_be16(((u16)(wc->sl)) << 12); - tun_mad->hdr.slid_mac_47_32 = cpu_to_be16(wc->slid); tun_mad->hdr.flags_src_qp = cpu_to_be32(wc->src_qp & 0xFFFFFF); tun_mad->hdr.g_ml_path = (grh && (wc->wc_flags & IB_WC_GRH)) ? 0x80 : 0; + if (is_eth) { + u16 vlan = 0; + if (mlx4_get_slave_default_vlan(dev->dev, port, slave, &vlan, + NULL)) { + /* VST mode */ + if (vlan != wc->vlan_id) + /* Packet vlan is not the VST-assigned vlan. + * Drop the packet. + */ + goto out; + else + /* Remove the vlan tag before forwarding + * the packet to the VF. + */ + vlan = 0xffff; + } else { + vlan = wc->vlan_id; + } + + tun_mad->hdr.sl_vid = cpu_to_be16(vlan); + memcpy((char *)&tun_mad->hdr.mac_31_0, &(wc->smac[0]), 4); + memcpy((char *)&tun_mad->hdr.slid_mac_47_32, &(wc->smac[4]), 2); + } else { + tun_mad->hdr.sl_vid = cpu_to_be16(((u16)(wc->sl)) << 12); + tun_mad->hdr.slid_mac_47_32 = cpu_to_be16(wc->slid); + } + ib_dma_sync_single_for_device(&dev->ib_dev, tun_qp->tx_ring[tun_tx_ix].buf.map, sizeof (struct mlx4_rcv_tunnel_mad), @@ -580,6 +610,41 @@ int err; int slave; u8 *slave_id; + int is_eth = 0; + + if (rdma_port_get_link_layer(ibdev, port) == IB_LINK_LAYER_INFINIBAND) + is_eth = 0; + else + is_eth = 1; + + if (is_eth) { + if (!(wc->wc_flags & IB_WC_GRH)) { + mlx4_ib_warn(ibdev, "RoCE grh not present.\n"); + return -EINVAL; + } + if (mad->mad_hdr.mgmt_class != IB_MGMT_CLASS_CM) { + mlx4_ib_warn(ibdev, "RoCE mgmt class is not CM\n"); + return -EINVAL; + } + if (mlx4_get_slave_from_roce_gid(dev->dev, port, grh->dgid.raw, &slave)) { + mlx4_ib_warn(ibdev, "failed matching grh\n"); + return -ENOENT; + } + if (slave >= dev->dev->caps.sqp_demux) { + mlx4_ib_warn(ibdev, "slave id: %d is bigger than allowed:%d\n", + slave, dev->dev->caps.sqp_demux); + return -ENOENT; + } + + if (mlx4_ib_demux_cm_handler(ibdev, port, NULL, mad)) + return 0; + + err = mlx4_ib_send_to_slave(dev, slave, port, wc->qp->qp_type, wc, grh, mad); + if (err) + pr_debug("failed sending to slave %d via tunnel qp (%d)\n", + slave, err); + return 0; + } /* Initially assume that this mad is for us */ slave = mlx4_master_func_num(dev->dev); @@ -1076,8 +1141,9 @@ int mlx4_ib_send_to_wire(struct mlx4_ib_dev *dev, int slave, u8 port, - enum ib_qp_type dest_qpt, u16 pkey_index, u32 remote_qpn, - u32 qkey, struct ib_ah_attr *attr, struct ib_mad *mad) + enum ib_qp_type dest_qpt, u16 pkey_index, + u32 remote_qpn, u32 qkey, struct ib_ah_attr *attr, + u8 *s_mac, struct ib_mad *mad) { struct ib_sge list; struct ib_send_wr wr, *bad_wr; @@ -1166,6 +1232,9 @@ wr.num_sge = 1; wr.opcode = IB_WR_SEND; wr.send_flags = IB_SEND_SIGNALED; + if (s_mac) + memcpy(to_mah(ah)->av.eth.s_mac, s_mac, 6); + ret = ib_post_send(send_qp, &wr, &bad_wr); out: @@ -1174,6 +1243,22 @@ return ret; } +static int get_slave_base_gid_ix(struct mlx4_ib_dev *dev, int slave, int port) +{ + if (rdma_port_get_link_layer(&dev->ib_dev, port) == IB_LINK_LAYER_INFINIBAND) + return slave; + return mlx4_get_base_gid_ix(dev->dev, slave, port); +} + +static void fill_in_real_sgid_index(struct mlx4_ib_dev *dev, int slave, int port, + struct ib_ah_attr *ah_attr) +{ + if (rdma_port_get_link_layer(&dev->ib_dev, port) == IB_LINK_LAYER_INFINIBAND) + ah_attr->grh.sgid_index = slave; + else + ah_attr->grh.sgid_index += get_slave_base_gid_ix(dev, slave, port); +} + static void mlx4_ib_multiplex_mad(struct mlx4_ib_demux_pv_ctx *ctx, struct ib_wc *wc) { struct mlx4_ib_dev *dev = to_mdev(ctx->ib_dev); @@ -1184,6 +1269,7 @@ struct ib_ah_attr ah_attr; u8 *slave_id; int slave; + int port; /* Get slave that sent this packet */ if (wc->src_qp < dev->dev->phys_caps.base_proxy_sqpn || @@ -1260,12 +1346,18 @@ memcpy(&ah.av, &tunnel->hdr.av, sizeof (struct mlx4_av)); ah.ibah.device = ctx->ib_dev; mlx4_ib_query_ah(&ah.ibah, &ah_attr); - if ((ah_attr.ah_flags & IB_AH_GRH) && - (ah_attr.grh.sgid_index != slave)) { - mlx4_ib_warn(ctx->ib_dev, "slave:%d accessed invalid sgid_index:%d\n", - slave, ah_attr.grh.sgid_index); + if (ah_attr.ah_flags & IB_AH_GRH) + fill_in_real_sgid_index(dev, slave, ctx->port, &ah_attr); + + port = mlx4_slave_convert_port(dev->dev, slave, ah_attr.port_num); + if (port < 0) return; - } + ah_attr.port_num = port; + memcpy(ah_attr.dmac, tunnel->hdr.mac, 6); + ah_attr.vlan_id = be16_to_cpu(tunnel->hdr.vlan); + /* if slave have default vlan use it */ + mlx4_get_slave_default_vlan(dev->dev, ctx->port, slave, + &ah_attr.vlan_id, &ah_attr.sl); mlx4_ib_send_to_wire(dev, slave, ctx->port, is_proxy_qp0(dev, wc->src_qp, slave) ? @@ -1273,7 +1365,7 @@ be16_to_cpu(tunnel->hdr.pkey_index), be32_to_cpu(tunnel->hdr.remote_qpn), be32_to_cpu(tunnel->hdr.qkey), - &ah_attr, &tunnel->mad); + &ah_attr, wc->smac, &tunnel->mad); } static int mlx4_ib_alloc_pv_bufs(struct mlx4_ib_demux_pv_ctx *ctx, @@ -1850,7 +1942,15 @@ ctx->port = port; ctx->ib_dev = &dev->ib_dev; - for (i = 0; i < dev->dev->caps.sqp_demux; i++) { + for (i = 0; + i < min(dev->dev->caps.sqp_demux, (u16)(dev->dev->num_vfs + 1)); + i++) { + struct mlx4_active_ports actv_ports = + mlx4_get_active_ports(dev->dev, i); + + if (!test_bit(port - 1, actv_ports.ports)) + continue; + ret = alloc_pv_object(dev, i, port, &ctx->tun[i]); if (ret) { ret = -ENOMEM; --- linux-3.13.0.orig/drivers/infiniband/hw/mlx4/main.c +++ linux-3.13.0/drivers/infiniband/hw/mlx4/main.c @@ -39,6 +39,8 @@ #include #include #include +#include +#include #include #include @@ -51,10 +53,11 @@ #include "user.h" #define DRV_NAME MLX4_IB_DRV_NAME -#define DRV_VERSION "1.0" -#define DRV_RELDATE "April 4, 2008" +#define DRV_VERSION "2.2-1" +#define DRV_RELDATE "Feb 2014" #define MLX4_IB_FLOW_MAX_PRIO 0xFFF +#define MLX4_IB_FLOW_QPN_MASK 0xFFFFFF MODULE_AUTHOR("Roland Dreier"); MODULE_DESCRIPTION("Mellanox ConnectX HCA InfiniBand driver"); @@ -92,21 +95,27 @@ static int check_flow_steering_support(struct mlx4_dev *dev) { + int eth_num_ports = 0; int ib_num_ports = 0; - int i; - mlx4_foreach_port(i, dev, MLX4_PORT_TYPE_IB) - ib_num_ports++; + int dmfs = dev->caps.steering_mode == MLX4_STEERING_MODE_DEVICE_MANAGED; - if (dev->caps.steering_mode == MLX4_STEERING_MODE_DEVICE_MANAGED) { - if (ib_num_ports || mlx4_is_mfunc(dev)) { - pr_warn("Device managed flow steering is unavailable " - "for IB ports or in multifunction env.\n"); - return 0; + if (dmfs) { + int i; + mlx4_foreach_port(i, dev, MLX4_PORT_TYPE_ETH) + eth_num_ports++; + mlx4_foreach_port(i, dev, MLX4_PORT_TYPE_IB) + ib_num_ports++; + dmfs &= (!ib_num_ports || + (dev->caps.flags2 & MLX4_DEV_CAP_FLAG2_DMFS_IPOIB)) && + (!eth_num_ports || + (dev->caps.flags2 & MLX4_DEV_CAP_FLAG2_FS_EN)); + if (ib_num_ports && mlx4_is_mfunc(dev)) { + pr_warn("Device managed flow steering is unavailable for IB port in multifunction env.\n"); + dmfs = 0; } - return 1; } - return 0; + return dmfs; } static int mlx4_ib_query_device(struct ib_device *ibdev, @@ -165,7 +174,7 @@ props->device_cap_flags |= IB_DEVICE_MEM_WINDOW_TYPE_2B; else props->device_cap_flags |= IB_DEVICE_MEM_WINDOW_TYPE_2A; - if (check_flow_steering_support(dev->dev)) + if (dev->steering_support == MLX4_STEERING_MODE_DEVICE_MANAGED) props->device_cap_flags |= IB_DEVICE_MANAGED_FLOW_STEERING; } @@ -338,7 +347,7 @@ props->active_width = (((u8 *)mailbox->buf)[5] == 0x40) ? IB_WIDTH_4X : IB_WIDTH_1X; props->active_speed = IB_SPEED_QDR; - props->port_cap_flags = IB_PORT_CM_SUP; + props->port_cap_flags = IB_PORT_CM_SUP | IB_PORT_IP_BASED_GIDS; props->gid_tbl_len = mdev->dev->caps.gid_table_len[port]; props->max_msg_sz = mdev->dev->caps.max_msg_sz; props->pkey_tbl_len = 1; @@ -787,7 +796,6 @@ int mlx4_ib_add_mc(struct mlx4_ib_dev *mdev, struct mlx4_ib_qp *mqp, union ib_gid *gid) { - u8 mac[6]; struct net_device *ndev; int ret = 0; @@ -801,11 +809,7 @@ spin_unlock(&mdev->iboe.lock); if (ndev) { - rdma_get_mcast_mac((struct in6_addr *)gid, mac); - rtnl_lock(); - dev_mc_add(mdev->iboe.netdevs[mqp->port - 1], mac); ret = 1; - rtnl_unlock(); dev_put(ndev); } @@ -819,6 +823,7 @@ }; static int parse_flow_attr(struct mlx4_dev *dev, + u32 qp_num, union ib_flow_spec *ib_spec, struct _rule_hw *mlx4_spec) { @@ -834,6 +839,14 @@ mlx4_spec->eth.vlan_tag = ib_spec->eth.val.vlan_tag; mlx4_spec->eth.vlan_tag_msk = ib_spec->eth.mask.vlan_tag; break; + case IB_FLOW_SPEC_IB: + type = MLX4_NET_TRANS_RULE_ID_IB; + mlx4_spec->ib.l3_qpn = + cpu_to_be32(qp_num); + mlx4_spec->ib.qpn_mask = + cpu_to_be32(MLX4_IB_FLOW_QPN_MASK); + break; + case IB_FLOW_SPEC_IPV4: type = MLX4_NET_TRANS_RULE_ID_IPV4; @@ -865,6 +878,115 @@ return mlx4_hw_rule_sz(dev, type); } +struct default_rules { + __u32 mandatory_fields[IB_FLOW_SPEC_SUPPORT_LAYERS]; + __u32 mandatory_not_fields[IB_FLOW_SPEC_SUPPORT_LAYERS]; + __u32 rules_create_list[IB_FLOW_SPEC_SUPPORT_LAYERS]; + __u8 link_layer; +}; +static const struct default_rules default_table[] = { + { + .mandatory_fields = {IB_FLOW_SPEC_IPV4}, + .mandatory_not_fields = {IB_FLOW_SPEC_ETH}, + .rules_create_list = {IB_FLOW_SPEC_IB}, + .link_layer = IB_LINK_LAYER_INFINIBAND + } +}; + +static int __mlx4_ib_default_rules_match(struct ib_qp *qp, + struct ib_flow_attr *flow_attr) +{ + int i, j, k; + void *ib_flow; + const struct default_rules *pdefault_rules = default_table; + u8 link_layer = rdma_port_get_link_layer(qp->device, flow_attr->port); + + for (i = 0; i < sizeof(default_table)/sizeof(default_table[0]); i++, + pdefault_rules++) { + __u32 field_types[IB_FLOW_SPEC_SUPPORT_LAYERS]; + memset(&field_types, 0, sizeof(field_types)); + + if (link_layer != pdefault_rules->link_layer) + continue; + + ib_flow = flow_attr + 1; + /* we assume the specs are sorted */ + for (j = 0, k = 0; k < IB_FLOW_SPEC_SUPPORT_LAYERS && + j < flow_attr->num_of_specs; k++) { + union ib_flow_spec *current_flow = + (union ib_flow_spec *)ib_flow; + + /* same layer but different type */ + if (((current_flow->type & IB_FLOW_SPEC_LAYER_MASK) == + (pdefault_rules->mandatory_fields[k] & + IB_FLOW_SPEC_LAYER_MASK)) && + (current_flow->type != + pdefault_rules->mandatory_fields[k])) + goto out; + + /* same layer, try match next one */ + if (current_flow->type == + pdefault_rules->mandatory_fields[k]) { + j++; + ib_flow += + ((union ib_flow_spec *)ib_flow)->size; + } + } + + ib_flow = flow_attr + 1; + for (j = 0; j < flow_attr->num_of_specs; + j++, ib_flow += ((union ib_flow_spec *)ib_flow)->size) + for (k = 0; k < IB_FLOW_SPEC_SUPPORT_LAYERS; k++) + /* same layer and same type */ + if (((union ib_flow_spec *)ib_flow)->type == + pdefault_rules->mandatory_not_fields[k]) + goto out; + + return i; + } +out: + return -1; +} + +static int __mlx4_ib_create_default_rules( + struct mlx4_ib_dev *mdev, + struct ib_qp *qp, + const struct default_rules *pdefault_rules, + struct _rule_hw *mlx4_spec) { + int size = 0; + int i; + + for (i = 0; i < sizeof(pdefault_rules->rules_create_list)/ + sizeof(pdefault_rules->rules_create_list[0]); i++) { + int ret; + union ib_flow_spec ib_spec; + switch (pdefault_rules->rules_create_list[i]) { + case 0: + /* no rule */ + continue; + case IB_FLOW_SPEC_IB: + ib_spec.type = IB_FLOW_SPEC_IB; + ib_spec.size = sizeof(struct ib_flow_spec_ib); + + break; + default: + /* invalid rule */ + return -EINVAL; + } + /* We must put empty rule, qpn is being ignored */ + ret = parse_flow_attr(mdev->dev, 0, &ib_spec, + mlx4_spec); + if (ret < 0) { + pr_info("invalid parsing\n"); + return -EINVAL; + } + + mlx4_spec = (void *)mlx4_spec + ret; + size += ret; + } + return size; +} + static int __mlx4_ib_create_flow(struct ib_qp *qp, struct ib_flow_attr *flow_attr, int domain, enum mlx4_net_trans_promisc_mode flow_type, @@ -876,6 +998,7 @@ struct mlx4_ib_dev *mdev = to_mdev(qp->device); struct mlx4_cmd_mailbox *mailbox; struct mlx4_net_trans_rule_hw_ctrl *ctrl; + int default_flow; static const u16 __mlx4_domain[] = { [IB_FLOW_DOMAIN_USER] = MLX4_DOMAIN_UVERBS, @@ -910,8 +1033,21 @@ ib_flow = flow_attr + 1; size += sizeof(struct mlx4_net_trans_rule_hw_ctrl); + /* Add default flows */ + default_flow = __mlx4_ib_default_rules_match(qp, flow_attr); + if (default_flow >= 0) { + ret = __mlx4_ib_create_default_rules( + mdev, qp, default_table + default_flow, + mailbox->buf + size); + if (ret < 0) { + mlx4_free_cmd_mailbox(mdev->dev, mailbox); + return -EINVAL; + } + size += ret; + } for (i = 0; i < flow_attr->num_of_specs; i++) { - ret = parse_flow_attr(mdev->dev, ib_flow, mailbox->buf + size); + ret = parse_flow_attr(mdev->dev, qp->qp_num, ib_flow, + mailbox->buf + size); if (ret < 0) { mlx4_free_cmd_mailbox(mdev->dev, mailbox); return -EINVAL; @@ -1025,6 +1161,8 @@ struct mlx4_ib_qp *mqp = to_mqp(ibqp); u64 reg_id; struct mlx4_ib_steering *ib_steering = NULL; + enum mlx4_protocol prot = (gid->raw[1] == 0x0e) ? + MLX4_PROT_IB_IPV4 : MLX4_PROT_IB_IPV6; if (mdev->dev->caps.steering_mode == MLX4_STEERING_MODE_DEVICE_MANAGED) { @@ -1036,7 +1174,7 @@ err = mlx4_multicast_attach(mdev->dev, &mqp->mqp, gid->raw, mqp->port, !!(mqp->flags & MLX4_IB_QP_BLOCK_MULTICAST_LOOPBACK), - MLX4_PROT_IB_IPV6, ®_id); + prot, ®_id); if (err) goto err_malloc; @@ -1055,7 +1193,7 @@ err_add: mlx4_multicast_detach(mdev->dev, &mqp->mqp, gid->raw, - MLX4_PROT_IB_IPV6, reg_id); + prot, reg_id); err_malloc: kfree(ib_steering); @@ -1083,10 +1221,11 @@ int err; struct mlx4_ib_dev *mdev = to_mdev(ibqp->device); struct mlx4_ib_qp *mqp = to_mqp(ibqp); - u8 mac[6]; struct net_device *ndev; struct mlx4_ib_gid_entry *ge; u64 reg_id = 0; + enum mlx4_protocol prot = (gid->raw[1] == 0x0e) ? + MLX4_PROT_IB_IPV4 : MLX4_PROT_IB_IPV6; if (mdev->dev->caps.steering_mode == MLX4_STEERING_MODE_DEVICE_MANAGED) { @@ -1109,7 +1248,7 @@ } err = mlx4_multicast_detach(mdev->dev, &mqp->mqp, gid->raw, - MLX4_PROT_IB_IPV6, reg_id); + prot, reg_id); if (err) return err; @@ -1121,13 +1260,8 @@ if (ndev) dev_hold(ndev); spin_unlock(&mdev->iboe.lock); - rdma_get_mcast_mac((struct in6_addr *)gid, mac); - if (ndev) { - rtnl_lock(); - dev_mc_del(mdev->iboe.netdevs[ge->port - 1], mac); - rtnl_unlock(); + if (ndev) dev_put(ndev); - } list_del(&ge->list); kfree(ge); } else @@ -1223,7 +1357,8 @@ &dev_attr_board_id }; -static void mlx4_addrconf_ifid_eui48(u8 *eui, u16 vlan_id, struct net_device *dev) +static void mlx4_addrconf_ifid_eui48(u8 *eui, u16 vlan_id, + struct net_device *dev) { memcpy(eui, dev->dev_addr, 3); memcpy(eui + 5, dev->dev_addr + 3, 3); @@ -1259,161 +1394,377 @@ MLX4_CMD_WRAPPED); if (err) pr_warn("set port command failed\n"); - else { - memcpy(gw->dev->iboe.gid_table[gw->port - 1], gw->gids, sizeof gw->gids); + else mlx4_ib_dispatch_event(gw->dev, gw->port, IB_EVENT_GID_CHANGE); + + mlx4_free_cmd_mailbox(dev, mailbox); + kfree(gw); +} + +static void reset_gids_task(struct work_struct *work) +{ + struct update_gid_work *gw = + container_of(work, struct update_gid_work, work); + struct mlx4_cmd_mailbox *mailbox; + union ib_gid *gids; + int err; + struct mlx4_dev *dev = gw->dev->dev; + + mailbox = mlx4_alloc_cmd_mailbox(dev); + if (IS_ERR(mailbox)) { + pr_warn("reset gid table failed\n"); + goto free; + } + + gids = mailbox->buf; + memcpy(gids, gw->gids, sizeof(gw->gids)); + + if (mlx4_ib_port_link_layer(&gw->dev->ib_dev, gw->port) == + IB_LINK_LAYER_ETHERNET) { + err = mlx4_cmd(dev, mailbox->dma, + MLX4_SET_PORT_GID_TABLE << 8 | gw->port, + 1, MLX4_CMD_SET_PORT, + MLX4_CMD_TIME_CLASS_B, + MLX4_CMD_WRAPPED); + if (err) + pr_warn(KERN_WARNING + "set port %d command failed\n", gw->port); } mlx4_free_cmd_mailbox(dev, mailbox); +free: kfree(gw); } -static int update_ipv6_gids(struct mlx4_ib_dev *dev, int port, int clear) +static int update_gid_table(struct mlx4_ib_dev *dev, int port, + union ib_gid *gid, int clear, + int default_gid) { - struct net_device *ndev = dev->iboe.netdevs[port - 1]; struct update_gid_work *work; - struct net_device *tmp; int i; - u8 *hits; - int ret; - union ib_gid gid; - int free; - int found; int need_update = 0; - u16 vid; + int free = -1; + int found = -1; + int max_gids; - work = kzalloc(sizeof *work, GFP_ATOMIC); - if (!work) - return -ENOMEM; - - hits = kzalloc(128, GFP_ATOMIC); - if (!hits) { - ret = -ENOMEM; - goto out; - } - - rcu_read_lock(); - for_each_netdev_rcu(&init_net, tmp) { - if (ndev && (tmp == ndev || rdma_vlan_dev_real_dev(tmp) == ndev)) { - gid.global.subnet_prefix = cpu_to_be64(0xfe80000000000000LL); - vid = rdma_vlan_dev_vlan_id(tmp); - mlx4_addrconf_ifid_eui48(&gid.raw[8], vid, ndev); - found = 0; - free = -1; - for (i = 0; i < 128; ++i) { - if (free < 0 && - !memcmp(&dev->iboe.gid_table[port - 1][i], &zgid, sizeof zgid)) - free = i; - if (!memcmp(&dev->iboe.gid_table[port - 1][i], &gid, sizeof gid)) { - hits[i] = 1; - found = 1; + if (default_gid) { + free = 0; + } else { + max_gids = dev->dev->caps.gid_table_len[port]; + for (i = 1; i < max_gids; ++i) { + if (!memcmp(&dev->iboe.gid_table[port - 1][i], gid, + sizeof(*gid))) + found = i; + + if (clear) { + if (found >= 0) { + need_update = 1; + dev->iboe.gid_table[port - 1][found] = + zgid; break; } - } + } else { + if (found >= 0) + break; - if (!found) { - if (tmp == ndev && - (memcmp(&dev->iboe.gid_table[port - 1][0], - &gid, sizeof gid) || - !memcmp(&dev->iboe.gid_table[port - 1][0], - &zgid, sizeof gid))) { - dev->iboe.gid_table[port - 1][0] = gid; - ++need_update; - hits[0] = 1; - } else if (free >= 0) { - dev->iboe.gid_table[port - 1][free] = gid; - hits[free] = 1; - ++need_update; - } + if (free < 0 && + !memcmp(&dev->iboe.gid_table[port - 1][i], + &zgid, sizeof(*gid))) + free = i; } } } - rcu_read_unlock(); - for (i = 0; i < 128; ++i) - if (!hits[i]) { - if (memcmp(&dev->iboe.gid_table[port - 1][i], &zgid, sizeof zgid)) - ++need_update; - dev->iboe.gid_table[port - 1][i] = zgid; - } + if (found == -1 && !clear && free >= 0) { + dev->iboe.gid_table[port - 1][free] = *gid; + need_update = 1; + } - if (need_update) { - memcpy(work->gids, dev->iboe.gid_table[port - 1], sizeof work->gids); - INIT_WORK(&work->work, update_gids_task); - work->port = port; - work->dev = dev; - queue_work(wq, &work->work); - } else - kfree(work); + if (!need_update) + return 0; + + work = kzalloc(sizeof(*work), GFP_ATOMIC); + if (!work) + return -ENOMEM; + + memcpy(work->gids, dev->iboe.gid_table[port - 1], sizeof(work->gids)); + INIT_WORK(&work->work, update_gids_task); + work->port = port; + work->dev = dev; + queue_work(wq, &work->work); - kfree(hits); return 0; +} -out: - kfree(work); - return ret; +static void mlx4_make_default_gid(struct net_device *dev, union ib_gid *gid) +{ + gid->global.subnet_prefix = cpu_to_be64(0xfe80000000000000LL); + mlx4_addrconf_ifid_eui48(&gid->raw[8], 0xffff, dev); } -static void handle_en_event(struct mlx4_ib_dev *dev, int port, unsigned long event) + +static int reset_gid_table(struct mlx4_ib_dev *dev, u8 port) { - switch (event) { - case NETDEV_UP: - case NETDEV_CHANGEADDR: - update_ipv6_gids(dev, port, 0); - break; + struct update_gid_work *work; - case NETDEV_DOWN: - update_ipv6_gids(dev, port, 1); - dev->iboe.netdevs[port - 1] = NULL; - } + work = kzalloc(sizeof(*work), GFP_ATOMIC); + if (!work) + return -ENOMEM; + + memset(dev->iboe.gid_table[port - 1], 0, sizeof(work->gids)); + memset(work->gids, 0, sizeof(work->gids)); + INIT_WORK(&work->work, reset_gids_task); + work->dev = dev; + work->port = port; + queue_work(wq, &work->work); + return 0; } -static void netdev_added(struct mlx4_ib_dev *dev, int port) +static int mlx4_ib_addr_event(int event, struct net_device *event_netdev, + struct mlx4_ib_dev *ibdev, union ib_gid *gid) { - update_ipv6_gids(dev, port, 0); + struct mlx4_ib_iboe *iboe; + int port = 0; + struct net_device *real_dev = rdma_vlan_dev_real_dev(event_netdev) ? + rdma_vlan_dev_real_dev(event_netdev) : + event_netdev; + union ib_gid default_gid; + + mlx4_make_default_gid(real_dev, &default_gid); + + if (!memcmp(gid, &default_gid, sizeof(*gid))) + return 0; + + if (event != NETDEV_DOWN && event != NETDEV_UP) + return 0; + + if ((real_dev != event_netdev) && + (event == NETDEV_DOWN) && + rdma_link_local_addr((struct in6_addr *)gid)) + return 0; + + iboe = &ibdev->iboe; + spin_lock(&iboe->lock); + + for (port = 1; port <= ibdev->dev->caps.num_ports; ++port) + if ((netif_is_bond_master(real_dev) && + (real_dev == iboe->masters[port - 1])) || + (!netif_is_bond_master(real_dev) && + (real_dev == iboe->netdevs[port - 1]))) + update_gid_table(ibdev, port, gid, + event == NETDEV_DOWN, 0); + + spin_unlock(&iboe->lock); + return 0; + } -static void netdev_removed(struct mlx4_ib_dev *dev, int port) +static u8 mlx4_ib_get_dev_port(struct net_device *dev, + struct mlx4_ib_dev *ibdev) { - update_ipv6_gids(dev, port, 1); + u8 port = 0; + struct mlx4_ib_iboe *iboe; + struct net_device *real_dev = rdma_vlan_dev_real_dev(dev) ? + rdma_vlan_dev_real_dev(dev) : dev; + + iboe = &ibdev->iboe; + + for (port = 1; port <= ibdev->dev->caps.num_ports; ++port) + if ((netif_is_bond_master(real_dev) && + (real_dev == iboe->masters[port - 1])) || + (!netif_is_bond_master(real_dev) && + (real_dev == iboe->netdevs[port - 1]))) + break; + + if ((port == 0) || (port > ibdev->dev->caps.num_ports)) + return 0; + else + return port; } -static int mlx4_ib_netdev_event(struct notifier_block *this, unsigned long event, +static int mlx4_ib_inet_event(struct notifier_block *this, unsigned long event, + void *ptr) +{ + struct mlx4_ib_dev *ibdev; + struct in_ifaddr *ifa = ptr; + union ib_gid gid; + struct net_device *event_netdev = ifa->ifa_dev->dev; + + ipv6_addr_set_v4mapped(ifa->ifa_address, (struct in6_addr *)&gid); + + ibdev = container_of(this, struct mlx4_ib_dev, iboe.nb_inet); + + mlx4_ib_addr_event(event, event_netdev, ibdev, &gid); + return NOTIFY_DONE; +} + +#if IS_ENABLED(CONFIG_IPV6) +static int mlx4_ib_inet6_event(struct notifier_block *this, unsigned long event, void *ptr) { - struct net_device *dev = netdev_notifier_info_to_dev(ptr); struct mlx4_ib_dev *ibdev; - struct net_device *oldnd; + struct inet6_ifaddr *ifa = ptr; + union ib_gid *gid = (union ib_gid *)&ifa->addr; + struct net_device *event_netdev = ifa->idev->dev; + + ibdev = container_of(this, struct mlx4_ib_dev, iboe.nb_inet6); + + mlx4_ib_addr_event(event, event_netdev, ibdev, gid); + return NOTIFY_DONE; +} +#endif + +static void mlx4_ib_get_dev_addr(struct net_device *dev, + struct mlx4_ib_dev *ibdev, u8 port) +{ + struct in_device *in_dev; +#if IS_ENABLED(CONFIG_IPV6) + struct inet6_dev *in6_dev; + union ib_gid *pgid; + struct inet6_ifaddr *ifp; +#endif + union ib_gid gid; + + + if ((port == 0) || (port > ibdev->dev->caps.num_ports)) + return; + + /* IPv4 gids */ + in_dev = in_dev_get(dev); + if (in_dev) { + for_ifa(in_dev) { + /*ifa->ifa_address;*/ + ipv6_addr_set_v4mapped(ifa->ifa_address, + (struct in6_addr *)&gid); + update_gid_table(ibdev, port, &gid, 0, 0); + } + endfor_ifa(in_dev); + in_dev_put(in_dev); + } +#if IS_ENABLED(CONFIG_IPV6) + /* IPv6 gids */ + in6_dev = in6_dev_get(dev); + if (in6_dev) { + read_lock_bh(&in6_dev->lock); + list_for_each_entry(ifp, &in6_dev->addr_list, if_list) { + pgid = (union ib_gid *)&ifp->addr; + update_gid_table(ibdev, port, pgid, 0, 0); + } + read_unlock_bh(&in6_dev->lock); + in6_dev_put(in6_dev); + } +#endif +} + +static void mlx4_ib_set_default_gid(struct mlx4_ib_dev *ibdev, + struct net_device *dev, u8 port) +{ + union ib_gid gid; + mlx4_make_default_gid(dev, &gid); + update_gid_table(ibdev, port, &gid, 0, 1); +} + +static int mlx4_ib_init_gid_table(struct mlx4_ib_dev *ibdev) +{ + struct net_device *dev; + struct mlx4_ib_iboe *iboe = &ibdev->iboe; + int i; + + for (i = 1; i <= ibdev->num_ports; ++i) + if (reset_gid_table(ibdev, i)) + return -1; + + read_lock(&dev_base_lock); + spin_lock(&iboe->lock); + + for_each_netdev(&init_net, dev) { + u8 port = mlx4_ib_get_dev_port(dev, ibdev); + if (port) + mlx4_ib_get_dev_addr(dev, ibdev, port); + } + + spin_unlock(&iboe->lock); + read_unlock(&dev_base_lock); + + return 0; +} + +static void mlx4_ib_scan_netdevs(struct mlx4_ib_dev *ibdev) +{ struct mlx4_ib_iboe *iboe; int port; - if (!net_eq(dev_net(dev), &init_net)) - return NOTIFY_DONE; - - ibdev = container_of(this, struct mlx4_ib_dev, iboe.nb); iboe = &ibdev->iboe; spin_lock(&iboe->lock); mlx4_foreach_ib_transport_port(port, ibdev->dev) { - oldnd = iboe->netdevs[port - 1]; + enum ib_port_state port_state = IB_PORT_NOP; + struct net_device *old_master = iboe->masters[port - 1]; + struct net_device *curr_netdev; + struct net_device *curr_master; + iboe->netdevs[port - 1] = mlx4_get_protocol_dev(ibdev->dev, MLX4_PROT_ETH, port); - if (oldnd != iboe->netdevs[port - 1]) { - if (iboe->netdevs[port - 1]) - netdev_added(ibdev, port); - else - netdev_removed(ibdev, port); + if (iboe->netdevs[port - 1]) + mlx4_ib_set_default_gid(ibdev, + iboe->netdevs[port - 1], port); + curr_netdev = iboe->netdevs[port - 1]; + + if (iboe->netdevs[port - 1] && + netif_is_bond_slave(iboe->netdevs[port - 1])) { + iboe->masters[port - 1] = netdev_master_upper_dev_get( + iboe->netdevs[port - 1]); + } else { + iboe->masters[port - 1] = NULL; } - } + curr_master = iboe->masters[port - 1]; - if (dev == iboe->netdevs[0] || - (iboe->netdevs[0] && rdma_vlan_dev_real_dev(dev) == iboe->netdevs[0])) - handle_en_event(ibdev, 1, event); - else if (dev == iboe->netdevs[1] - || (iboe->netdevs[1] && rdma_vlan_dev_real_dev(dev) == iboe->netdevs[1])) - handle_en_event(ibdev, 2, event); + if (curr_netdev) { + port_state = (netif_running(curr_netdev) && netif_carrier_ok(curr_netdev)) ? + IB_PORT_ACTIVE : IB_PORT_DOWN; + mlx4_ib_set_default_gid(ibdev, curr_netdev, port); + } else { + reset_gid_table(ibdev, port); + } + /* if using bonding/team and a slave port is down, we don't the bond IP + * based gids in the table since flows that select port by gid may get + * the down port. + */ + if (curr_master && (port_state == IB_PORT_DOWN)) { + reset_gid_table(ibdev, port); + mlx4_ib_set_default_gid(ibdev, curr_netdev, port); + } + /* if bonding is used it is possible that we add it to masters + * only after IP address is assigned to the net bonding + * interface. + */ + if (curr_master && (old_master != curr_master)) { + reset_gid_table(ibdev, port); + mlx4_ib_set_default_gid(ibdev, curr_netdev, port); + mlx4_ib_get_dev_addr(curr_master, ibdev, port); + } + + if (!curr_master && (old_master != curr_master)) { + reset_gid_table(ibdev, port); + mlx4_ib_set_default_gid(ibdev, curr_netdev, port); + mlx4_ib_get_dev_addr(curr_netdev, ibdev, port); + } + } spin_unlock(&iboe->lock); +} + +static int mlx4_ib_netdev_event(struct notifier_block *this, + unsigned long event, void *ptr) +{ + struct net_device *dev = netdev_notifier_info_to_dev(ptr); + struct mlx4_ib_dev *ibdev; + + if (!net_eq(dev_net(dev), &init_net)) + return NOTIFY_DONE; + + ibdev = container_of(this, struct mlx4_ib_dev, iboe.nb); + mlx4_ib_scan_netdevs(ibdev); return NOTIFY_DONE; } @@ -1533,17 +1884,10 @@ int i, j; int err; struct mlx4_ib_iboe *iboe; + int ib_num_ports = 0; pr_info_once("%s", mlx4_ib_version); - mlx4_foreach_non_ib_transport_port(i, dev) - num_ports++; - - if (mlx4_is_mfunc(dev) && num_ports) { - dev_err(&dev->pdev->dev, "RoCE is not supported over SRIOV as yet\n"); - return NULL; - } - num_ports = 0; mlx4_foreach_ib_transport_port(i, dev) num_ports++; @@ -1682,6 +2026,7 @@ } if (check_flow_steering_support(dev)) { + ibdev->steering_support = MLX4_STEERING_MODE_DEVICE_MANAGED; ibdev->ib_dev.create_flow = mlx4_ib_create_flow; ibdev->ib_dev.destroy_flow = mlx4_ib_destroy_flow; @@ -1707,11 +2052,42 @@ ibdev->counters[i] = -1; } + mlx4_foreach_port(i, dev, MLX4_PORT_TYPE_IB) + ib_num_ports++; + spin_lock_init(&ibdev->sm_lock); mutex_init(&ibdev->cap_mask_mutex); + if (ibdev->steering_support == MLX4_STEERING_MODE_DEVICE_MANAGED && + ib_num_ports) { + ibdev->steer_qpn_count = MLX4_IB_UC_MAX_NUM_QPS; + err = mlx4_qp_reserve_range(dev, ibdev->steer_qpn_count, + MLX4_IB_UC_STEER_QPN_ALIGN, + &ibdev->steer_qpn_base); + if (err) + goto err_counter; + + ibdev->ib_uc_qpns_bitmap = + kmalloc(BITS_TO_LONGS(ibdev->steer_qpn_count) * + sizeof(long), + GFP_KERNEL); + if (!ibdev->ib_uc_qpns_bitmap) { + dev_err(&dev->pdev->dev, "bit map alloc failed\n"); + goto err_steer_qp_release; + } + + bitmap_zero(ibdev->ib_uc_qpns_bitmap, ibdev->steer_qpn_count); + + err = mlx4_FLOW_STEERING_IB_UC_QP_RANGE( + dev, ibdev->steer_qpn_base, + ibdev->steer_qpn_base + + ibdev->steer_qpn_count - 1); + if (err) + goto err_steer_free_bitmap; + } + if (ib_register_device(&ibdev->ib_dev, NULL)) - goto err_counter; + goto err_steer_free_bitmap; if (mlx4_ib_mad_init(ibdev)) goto err_reg; @@ -1719,11 +2095,39 @@ if (mlx4_ib_init_sriov(ibdev)) goto err_mad; - if (dev->caps.flags & MLX4_DEV_CAP_FLAG_IBOE && !iboe->nb.notifier_call) { - iboe->nb.notifier_call = mlx4_ib_netdev_event; - err = register_netdevice_notifier(&iboe->nb); - if (err) - goto err_sriov; + if (dev->caps.flags & MLX4_DEV_CAP_FLAG_IBOE) { + if (!iboe->nb.notifier_call) { + iboe->nb.notifier_call = mlx4_ib_netdev_event; + err = register_netdevice_notifier(&iboe->nb); + if (err) { + iboe->nb.notifier_call = NULL; + goto err_notif; + } + } + if (!iboe->nb_inet.notifier_call) { + iboe->nb_inet.notifier_call = mlx4_ib_inet_event; + err = register_inetaddr_notifier(&iboe->nb_inet); + if (err) { + iboe->nb_inet.notifier_call = NULL; + goto err_notif; + } + } +#if IS_ENABLED(CONFIG_IPV6) + if (!iboe->nb_inet6.notifier_call) { + iboe->nb_inet6.notifier_call = mlx4_ib_inet6_event; + err = register_inet6addr_notifier(&iboe->nb_inet6); + if (err) { + iboe->nb_inet6.notifier_call = NULL; + goto err_notif; + } + } +#endif + for (i = 1 ; i <= ibdev->num_ports ; ++i) + reset_gid_table(ibdev, i); + rtnl_lock(); + mlx4_ib_scan_netdevs(ibdev); + rtnl_unlock(); + mlx4_ib_init_gid_table(ibdev); } for (j = 0; j < ARRAY_SIZE(mlx4_class_attributes); ++j) { @@ -1749,11 +2153,25 @@ return ibdev; err_notif: - if (unregister_netdevice_notifier(&ibdev->iboe.nb)) - pr_warn("failure unregistering notifier\n"); + if (ibdev->iboe.nb.notifier_call) { + if (unregister_netdevice_notifier(&ibdev->iboe.nb)) + pr_warn("failure unregistering notifier\n"); + ibdev->iboe.nb.notifier_call = NULL; + } + if (ibdev->iboe.nb_inet.notifier_call) { + if (unregister_inetaddr_notifier(&ibdev->iboe.nb_inet)) + pr_warn("failure unregistering notifier\n"); + ibdev->iboe.nb_inet.notifier_call = NULL; + } +#if IS_ENABLED(CONFIG_IPV6) + if (ibdev->iboe.nb_inet6.notifier_call) { + if (unregister_inet6addr_notifier(&ibdev->iboe.nb_inet6)) + pr_warn("failure unregistering notifier\n"); + ibdev->iboe.nb_inet6.notifier_call = NULL; + } +#endif flush_workqueue(wq); -err_sriov: mlx4_ib_close_sriov(ibdev); err_mad: @@ -1762,6 +2180,13 @@ err_reg: ib_unregister_device(&ibdev->ib_dev); +err_steer_free_bitmap: + kfree(ibdev->ib_uc_qpns_bitmap); + +err_steer_qp_release: + if (ibdev->steering_support == MLX4_STEERING_MODE_DEVICE_MANAGED) + mlx4_qp_release_range(dev, ibdev->steer_qpn_base, + ibdev->steer_qpn_count); err_counter: for (; i; --i) if (ibdev->counters[i - 1] != -1) @@ -1782,6 +2207,69 @@ return NULL; } +int mlx4_ib_steer_qp_alloc(struct mlx4_ib_dev *dev, int count, int *qpn) +{ + int offset; + + WARN_ON(!dev->ib_uc_qpns_bitmap); + + offset = bitmap_find_free_region(dev->ib_uc_qpns_bitmap, + dev->steer_qpn_count, + get_count_order(count)); + if (offset < 0) + return offset; + + *qpn = dev->steer_qpn_base + offset; + return 0; +} + +void mlx4_ib_steer_qp_free(struct mlx4_ib_dev *dev, u32 qpn, int count) +{ + if (!qpn || + dev->steering_support != MLX4_STEERING_MODE_DEVICE_MANAGED) + return; + + BUG_ON(qpn < dev->steer_qpn_base); + + bitmap_release_region(dev->ib_uc_qpns_bitmap, + qpn - dev->steer_qpn_base, + get_count_order(count)); +} + +int mlx4_ib_steer_qp_reg(struct mlx4_ib_dev *mdev, struct mlx4_ib_qp *mqp, + int is_attach) +{ + int err; + size_t flow_size; + struct ib_flow_attr *flow = NULL; + struct ib_flow_spec_ib *ib_spec; + + if (is_attach) { + flow_size = sizeof(struct ib_flow_attr) + + sizeof(struct ib_flow_spec_ib); + flow = kzalloc(flow_size, GFP_KERNEL); + if (!flow) + return -ENOMEM; + flow->port = mqp->port; + flow->num_of_specs = 1; + flow->size = flow_size; + ib_spec = (struct ib_flow_spec_ib *)(flow + 1); + ib_spec->type = IB_FLOW_SPEC_IB; + ib_spec->size = sizeof(struct ib_flow_spec_ib); + /* Add an empty rule for IB L2 */ + memset(&ib_spec->mask, 0, sizeof(ib_spec->mask)); + + err = __mlx4_ib_create_flow(&mqp->ibqp, flow, + IB_FLOW_DOMAIN_NIC, + MLX4_FS_REGULAR, + &mqp->reg_id); + } else { + err = __mlx4_ib_destroy_flow(mdev->dev, mqp->reg_id); + } + kfree(flow); + return err; +} + static void mlx4_ib_remove(struct mlx4_dev *dev, void *ibdev_ptr) { struct mlx4_ib_dev *ibdev = ibdev_ptr; @@ -1795,6 +2283,26 @@ pr_warn("failure unregistering notifier\n"); ibdev->iboe.nb.notifier_call = NULL; } + + if (ibdev->steering_support == MLX4_STEERING_MODE_DEVICE_MANAGED) { + mlx4_qp_release_range(dev, ibdev->steer_qpn_base, + ibdev->steer_qpn_count); + kfree(ibdev->ib_uc_qpns_bitmap); + } + + if (ibdev->iboe.nb_inet.notifier_call) { + if (unregister_inetaddr_notifier(&ibdev->iboe.nb_inet)) + pr_warn("failure unregistering notifier\n"); + ibdev->iboe.nb_inet.notifier_call = NULL; + } +#if IS_ENABLED(CONFIG_IPV6) + if (ibdev->iboe.nb_inet6.notifier_call) { + if (unregister_inet6addr_notifier(&ibdev->iboe.nb_inet6)) + pr_warn("failure unregistering notifier\n"); + ibdev->iboe.nb_inet6.notifier_call = NULL; + } +#endif + iounmap(ibdev->uar_map); for (p = 0; p < ibdev->num_ports; ++p) if (ibdev->counters[p] != -1) @@ -1815,17 +2323,24 @@ struct mlx4_dev *dev = ibdev->dev; int i; unsigned long flags; + struct mlx4_active_ports actv_ports; + unsigned int ports; + unsigned int first_port; if (!mlx4_is_master(dev)) return; - dm = kcalloc(dev->caps.num_ports, sizeof *dm, GFP_ATOMIC); + actv_ports = mlx4_get_active_ports(dev, slave); + ports = bitmap_weight(actv_ports.ports, dev->caps.num_ports); + first_port = find_first_bit(actv_ports.ports, dev->caps.num_ports); + + dm = kcalloc(ports, sizeof(*dm), GFP_ATOMIC); if (!dm) { pr_err("failed to allocate memory for tunneling qp update\n"); goto out; } - for (i = 0; i < dev->caps.num_ports; i++) { + for (i = 0; i < ports; i++) { dm[i] = kmalloc(sizeof (struct mlx4_ib_demux_work), GFP_ATOMIC); if (!dm[i]) { pr_err("failed to allocate memory for tunneling qp update work struct\n"); @@ -1837,9 +2352,9 @@ } } /* initialize or tear down tunnel QPs for the slave */ - for (i = 0; i < dev->caps.num_ports; i++) { + for (i = 0; i < ports; i++) { INIT_WORK(&dm[i]->work, mlx4_ib_tunnels_update_work); - dm[i]->port = i + 1; + dm[i]->port = first_port + i + 1; dm[i]->slave = slave; dm[i]->do_init = do_init; dm[i]->dev = ibdev; --- linux-3.13.0.orig/drivers/infiniband/hw/mlx4/mcg.c +++ linux-3.13.0/drivers/infiniband/hw/mlx4/mcg.c @@ -206,17 +206,19 @@ { 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); - 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, mad); + 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); } static int send_mad_to_slave(int slave, struct mlx4_ib_demux_ctx *ctx, --- linux-3.13.0.orig/drivers/infiniband/hw/mlx4/mlx4_ib.h +++ linux-3.13.0/drivers/infiniband/hw/mlx4/mlx4_ib.h @@ -68,6 +68,8 @@ /*module param to indicate if SM assigns the alias_GUID*/ extern int mlx4_ib_sm_guid_assign; +#define MLX4_IB_UC_STEER_QPN_ALIGN 1 +#define MLX4_IB_UC_MAX_NUM_QPS 256 struct mlx4_ib_ucontext { struct ib_ucontext ibucontext; struct mlx4_uar uar; @@ -153,6 +155,7 @@ enum mlx4_ib_qp_flags { MLX4_IB_QP_LSO = IB_QP_CREATE_IPOIB_UD_LSO, MLX4_IB_QP_BLOCK_MULTICAST_LOOPBACK = IB_QP_CREATE_BLOCK_MULTICAST_LOOPBACK, + MLX4_IB_QP_NETIF = IB_QP_CREATE_NETIF_QP, MLX4_IB_SRIOV_TUNNEL_QP = 1 << 30, MLX4_IB_SRIOV_SQP = 1 << 31, }; @@ -238,6 +241,22 @@ struct mlx4_rcv_tunnel_hdr tun; } __packed; +struct mlx4_roce_smac_vlan_info { + u64 smac; + int smac_index; + int smac_port; + u64 candidate_smac; + int candidate_smac_index; + int candidate_smac_port; + u16 vid; + int vlan_index; + int vlan_port; + u16 candidate_vid; + int candidate_vlan_index; + int candidate_vlan_port; + int update_vid; +}; + struct mlx4_ib_qp { struct ib_qp ibqp; struct mlx4_qp mqp; @@ -270,7 +289,9 @@ struct list_head gid_list; struct list_head steering_rules; struct mlx4_ib_buf *sqp_proxy_rcv; - + struct mlx4_roce_smac_vlan_info pri; + struct mlx4_roce_smac_vlan_info alt; + u64 reg_id; }; struct mlx4_ib_srq { @@ -428,7 +449,10 @@ struct mlx4_ib_iboe { spinlock_t lock; struct net_device *netdevs[MLX4_MAX_PORTS]; + struct net_device *masters[MLX4_MAX_PORTS]; struct notifier_block nb; + struct notifier_block nb_inet; + struct notifier_block nb_inet6; union ib_gid gid_table[MLX4_MAX_PORTS][128]; }; @@ -494,6 +518,10 @@ struct kobject *dev_ports_parent[MLX4_MFUNC_MAX]; struct mlx4_ib_iov_port iov_ports[MLX4_MAX_PORTS]; struct pkey_mgt pkeys; + unsigned long *ib_uc_qpns_bitmap; + int steer_qpn_count; + int steer_qpn_base; + int steering_support; }; struct ib_event_work { @@ -675,9 +703,6 @@ int __mlx4_ib_query_gid(struct ib_device *ibdev, u8 port, int index, union ib_gid *gid, int netw_view); -int mlx4_ib_resolve_grh(struct mlx4_ib_dev *dev, const struct ib_ah_attr *ah_attr, - u8 *mac, int *is_mcast, u8 port); - static inline bool mlx4_ib_ah_grh_present(struct mlx4_ib_ah *ah) { u8 port = be32_to_cpu(ah->av.ib.port_pd) >> 24 & 3; @@ -712,9 +737,12 @@ int mlx4_ib_send_to_slave(struct mlx4_ib_dev *dev, int slave, u8 port, enum ib_qp_type qpt, struct ib_wc *wc, struct ib_grh *grh, struct ib_mad *mad); + int mlx4_ib_send_to_wire(struct mlx4_ib_dev *dev, int slave, u8 port, enum ib_qp_type dest_qpt, u16 pkey_index, u32 remote_qpn, - u32 qkey, struct ib_ah_attr *attr, struct ib_mad *mad); + u32 qkey, struct ib_ah_attr *attr, u8 *s_mac, + struct ib_mad *mad); + __be64 mlx4_ib_get_new_demux_tid(struct mlx4_ib_demux_ctx *ctx); int mlx4_ib_demux_cm_handler(struct ib_device *ibdev, int port, int *slave, @@ -752,5 +780,9 @@ __be64 mlx4_ib_gen_node_guid(void); +int mlx4_ib_steer_qp_alloc(struct mlx4_ib_dev *dev, int count, int *qpn); +void mlx4_ib_steer_qp_free(struct mlx4_ib_dev *dev, u32 qpn, int count); +int mlx4_ib_steer_qp_reg(struct mlx4_ib_dev *mdev, struct mlx4_ib_qp *mqp, + int is_attach); #endif /* MLX4_IB_H */ --- linux-3.13.0.orig/drivers/infiniband/hw/mlx4/qp.c +++ linux-3.13.0/drivers/infiniband/hw/mlx4/qp.c @@ -90,6 +90,21 @@ MLX4_RAW_QP_MSGMAX = 31, }; +#ifndef ETH_ALEN +#define ETH_ALEN 6 +#endif +static inline u64 mlx4_mac_to_u64(u8 *addr) +{ + u64 mac = 0; + int i; + + for (i = 0; i < ETH_ALEN; i++) { + mac <<= 8; + mac |= addr[i]; + } + return mac; +} + static const __be32 mlx4_ib_opcode[] = { [IB_WR_SEND] = cpu_to_be32(MLX4_OPCODE_SEND), [IB_WR_LSO] = cpu_to_be32(MLX4_OPCODE_LSO), @@ -647,10 +662,14 @@ if (!sqp) return -ENOMEM; qp = &sqp->qp; + qp->pri.vid = 0xFFFF; + qp->alt.vid = 0xFFFF; } else { qp = kzalloc(sizeof (struct mlx4_ib_qp), GFP_KERNEL); if (!qp) return -ENOMEM; + qp->pri.vid = 0xFFFF; + qp->alt.vid = 0xFFFF; } } else qp = *caller_qp; @@ -716,6 +735,14 @@ if (init_attr->create_flags & IB_QP_CREATE_IPOIB_UD_LSO) qp->flags |= MLX4_IB_QP_LSO; + if (init_attr->create_flags & IB_QP_CREATE_NETIF_QP) { + if (dev->steering_support == + MLX4_STEERING_MODE_DEVICE_MANAGED) + qp->flags |= MLX4_IB_QP_NETIF; + else + goto err; + } + err = set_kernel_sq_size(dev, &init_attr->cap, qp_type, qp); if (err) goto err; @@ -765,7 +792,11 @@ if (init_attr->qp_type == IB_QPT_RAW_PACKET) err = mlx4_qp_reserve_range(dev->dev, 1, 1 << 8, &qpn); else - err = mlx4_qp_reserve_range(dev->dev, 1, 1, &qpn); + if (qp->flags & MLX4_IB_QP_NETIF) + err = mlx4_ib_steer_qp_alloc(dev, 1, &qpn); + else + err = mlx4_qp_reserve_range(dev->dev, 1, 1, + &qpn); if (err) goto err_proxy; } @@ -790,8 +821,12 @@ return 0; err_qpn: - if (!sqpn) - mlx4_qp_release_range(dev->dev, qpn, 1); + if (!sqpn) { + if (qp->flags & MLX4_IB_QP_NETIF) + mlx4_ib_steer_qp_free(dev, qpn, 1); + else + mlx4_qp_release_range(dev->dev, qpn, 1); + } err_proxy: if (qp->mlx4_ib_qp_type == MLX4_IB_QPT_PROXY_GSI) free_proxy_bufs(pd->device, qp); @@ -909,11 +944,32 @@ { struct mlx4_ib_cq *send_cq, *recv_cq; - if (qp->state != IB_QPS_RESET) + if (qp->state != IB_QPS_RESET) { if (mlx4_qp_modify(dev->dev, NULL, to_mlx4_state(qp->state), MLX4_QP_STATE_RST, NULL, 0, 0, &qp->mqp)) pr_warn("modify QP %06x to RESET failed.\n", qp->mqp.qpn); + if (qp->pri.smac) { + mlx4_unregister_mac(dev->dev, qp->pri.smac_port, qp->pri.smac); + qp->pri.smac = 0; + } + if (qp->alt.smac) { + mlx4_unregister_mac(dev->dev, qp->alt.smac_port, qp->alt.smac); + qp->alt.smac = 0; + } + if (qp->pri.vid < 0x1000) { + mlx4_unregister_vlan(dev->dev, qp->pri.vlan_port, qp->pri.vid); + qp->pri.vid = 0xFFFF; + qp->pri.candidate_vid = 0xFFFF; + qp->pri.update_vid = 0; + } + if (qp->alt.vid < 0x1000) { + mlx4_unregister_vlan(dev->dev, qp->alt.vlan_port, qp->alt.vid); + qp->alt.vid = 0xFFFF; + qp->alt.candidate_vid = 0xFFFF; + qp->alt.update_vid = 0; + } + } get_cqs(qp, &send_cq, &recv_cq); @@ -932,8 +988,12 @@ mlx4_qp_free(dev->dev, &qp->mqp); - if (!is_sqp(dev, qp) && !is_tunnel_qp(dev, qp)) - mlx4_qp_release_range(dev->dev, qp->mqp.qpn, 1); + if (!is_sqp(dev, qp) && !is_tunnel_qp(dev, qp)) { + if (qp->flags & MLX4_IB_QP_NETIF) + mlx4_ib_steer_qp_free(dev, qp->mqp.qpn, 1); + else + mlx4_qp_release_range(dev->dev, qp->mqp.qpn, 1); + } mlx4_mtt_cleanup(dev->dev, &qp->mtt); @@ -987,9 +1047,16 @@ */ if (init_attr->create_flags & ~(MLX4_IB_QP_LSO | MLX4_IB_QP_BLOCK_MULTICAST_LOOPBACK | - MLX4_IB_SRIOV_TUNNEL_QP | MLX4_IB_SRIOV_SQP)) + MLX4_IB_SRIOV_TUNNEL_QP | + MLX4_IB_SRIOV_SQP | + MLX4_IB_QP_NETIF)) return ERR_PTR(-EINVAL); + if (init_attr->create_flags & IB_QP_CREATE_NETIF_QP) { + if (init_attr->qp_type != IB_QPT_UD) + return ERR_PTR(-EINVAL); + } + if (init_attr->create_flags && (udata || ((init_attr->create_flags & ~MLX4_IB_SRIOV_SQP) && @@ -1015,6 +1082,8 @@ qp = kzalloc(sizeof *qp, GFP_KERNEL); if (!qp) return ERR_PTR(-ENOMEM); + qp->pri.vid = 0xFFFF; + qp->alt.vid = 0xFFFF; /* fall through */ case IB_QPT_UD: { @@ -1144,16 +1213,16 @@ path->sched_queue = (path->sched_queue & 0xbf) | ((port - 1) << 6); } -static int mlx4_set_path(struct mlx4_ib_dev *dev, const struct ib_ah_attr *ah, - struct mlx4_qp_path *path, u8 port) +static int _mlx4_set_path(struct mlx4_ib_dev *dev, const struct ib_ah_attr *ah, + u64 smac, u16 vlan_tag, struct mlx4_qp_path *path, + struct mlx4_roce_smac_vlan_info *smac_info, u8 port) { - int err; int is_eth = rdma_port_get_link_layer(&dev->ib_dev, port) == IB_LINK_LAYER_ETHERNET; - u8 mac[6]; - int is_mcast; - u16 vlan_tag; int vidx; + int smac_index; + int err; + path->grh_mylmc = ah->src_path_bits & 0x7f; path->rlid = cpu_to_be16(ah->dlid); @@ -1182,36 +1251,105 @@ } if (is_eth) { - path->sched_queue = MLX4_IB_DEFAULT_SCHED_QUEUE | - ((port - 1) << 6) | ((ah->sl & 7) << 3); - if (!(ah->ah_flags & IB_AH_GRH)) return -1; - err = mlx4_ib_resolve_grh(dev, ah, mac, &is_mcast, port); - if (err) - return err; - - memcpy(path->dmac, mac, 6); - path->ackto = MLX4_IB_LINK_TYPE_ETH; - /* use index 0 into MAC table for IBoE */ - path->grh_mylmc &= 0x80; + path->sched_queue = MLX4_IB_DEFAULT_SCHED_QUEUE | + ((port - 1) << 6) | ((ah->sl & 7) << 3); - vlan_tag = rdma_get_vlan_id(&dev->iboe.gid_table[port - 1][ah->grh.sgid_index]); + path->feup |= MLX4_FEUP_FORCE_ETH_UP; if (vlan_tag < 0x1000) { - if (mlx4_find_cached_vlan(dev->dev, port, vlan_tag, &vidx)) - return -ENOENT; - - path->vlan_index = vidx; + if (smac_info->vid < 0x1000) { + /* both valid vlan ids */ + if (smac_info->vid != vlan_tag) { + /* different VIDs. unreg old and reg new */ + err = mlx4_register_vlan(dev->dev, port, vlan_tag, &vidx); + if (err) + return err; + smac_info->candidate_vid = vlan_tag; + smac_info->candidate_vlan_index = vidx; + smac_info->candidate_vlan_port = port; + smac_info->update_vid = 1; + path->vlan_index = vidx; + } else { + path->vlan_index = smac_info->vlan_index; + } + } else { + /* no current vlan tag in qp */ + err = mlx4_register_vlan(dev->dev, port, vlan_tag, &vidx); + if (err) + return err; + smac_info->candidate_vid = vlan_tag; + smac_info->candidate_vlan_index = vidx; + smac_info->candidate_vlan_port = port; + smac_info->update_vid = 1; + path->vlan_index = vidx; + } + path->feup |= MLX4_FVL_FORCE_ETH_VLAN; path->fl = 1 << 6; + } else { + /* have current vlan tag. unregister it at modify-qp success */ + if (smac_info->vid < 0x1000) { + smac_info->candidate_vid = 0xFFFF; + smac_info->update_vid = 1; + } } - } else + + /* get smac_index for RoCE use. + * If no smac was yet assigned, register one. + * If one was already assigned, but the new mac differs, + * unregister the old one and register the new one. + */ + if (!smac_info->smac || smac_info->smac != smac) { + /* register candidate now, unreg if needed, after success */ + smac_index = mlx4_register_mac(dev->dev, port, smac); + if (smac_index >= 0) { + smac_info->candidate_smac_index = smac_index; + smac_info->candidate_smac = smac; + smac_info->candidate_smac_port = port; + } else { + return -EINVAL; + } + } else { + smac_index = smac_info->smac_index; + } + + memcpy(path->dmac, ah->dmac, 6); + path->ackto = MLX4_IB_LINK_TYPE_ETH; + /* put MAC table smac index for IBoE */ + path->grh_mylmc = (u8) (smac_index) | 0x80; + } else { path->sched_queue = MLX4_IB_DEFAULT_SCHED_QUEUE | ((port - 1) << 6) | ((ah->sl & 0xf) << 2); + } return 0; } +static int mlx4_set_path(struct mlx4_ib_dev *dev, const struct ib_qp_attr *qp, + enum ib_qp_attr_mask qp_attr_mask, + struct mlx4_ib_qp *mqp, + struct mlx4_qp_path *path, u8 port) +{ + return _mlx4_set_path(dev, &qp->ah_attr, + mlx4_mac_to_u64((u8 *)qp->smac), + (qp_attr_mask & IB_QP_VID) ? qp->vlan_id : 0xffff, + path, &mqp->pri, port); +} + +static int mlx4_set_alt_path(struct mlx4_ib_dev *dev, + const struct ib_qp_attr *qp, + enum ib_qp_attr_mask qp_attr_mask, + struct mlx4_ib_qp *mqp, + struct mlx4_qp_path *path, u8 port) +{ + return _mlx4_set_path(dev, &qp->alt_ah_attr, + mlx4_mac_to_u64((u8 *)qp->alt_smac), + (qp_attr_mask & IB_QP_ALT_VID) ? + qp->alt_vlan_id : 0xffff, + path, &mqp->alt, port); +} + static void update_mcg_macs(struct mlx4_ib_dev *dev, struct mlx4_ib_qp *qp) { struct mlx4_ib_gid_entry *ge, *tmp; @@ -1224,6 +1362,37 @@ } } +static int handle_eth_ud_smac_index(struct mlx4_ib_dev *dev, struct mlx4_ib_qp *qp, u8 *smac, + struct mlx4_qp_context *context) +{ + struct net_device *ndev; + u64 u64_mac; + int smac_index; + + + ndev = dev->iboe.netdevs[qp->port - 1]; + if (ndev) { + smac = ndev->dev_addr; + u64_mac = mlx4_mac_to_u64(smac); + } else { + u64_mac = dev->dev->caps.def_mac[qp->port]; + } + + context->pri_path.sched_queue = MLX4_IB_DEFAULT_SCHED_QUEUE | ((qp->port - 1) << 6); + if (!qp->pri.smac) { + smac_index = mlx4_register_mac(dev->dev, qp->port, u64_mac); + if (smac_index >= 0) { + qp->pri.candidate_smac_index = smac_index; + qp->pri.candidate_smac = u64_mac; + qp->pri.candidate_smac_port = qp->port; + context->pri_path.grh_mylmc = 0x80 | (u8) smac_index; + } else { + return -ENOENT; + } + } + return 0; +} + static int __mlx4_ib_modify_qp(struct ib_qp *ibqp, const struct ib_qp_attr *attr, int attr_mask, enum ib_qp_state cur_state, enum ib_qp_state new_state) @@ -1235,6 +1404,7 @@ struct mlx4_qp_context *context; enum mlx4_qp_optpar optpar = 0; int sqd_event; + int steer_qp = 0; int err = -EINVAL; context = kzalloc(sizeof *context, GFP_KERNEL); @@ -1319,6 +1489,11 @@ optpar |= MLX4_QP_OPTPAR_COUNTER_INDEX; } else context->pri_path.counter_index = 0xff; + + if (qp->flags & MLX4_IB_QP_NETIF) { + mlx4_ib_steer_qp_reg(dev, qp, 1); + steer_qp = 1; + } } if (attr_mask & IB_QP_PKEY_INDEX) { @@ -1329,7 +1504,7 @@ } if (attr_mask & IB_QP_AV) { - if (mlx4_set_path(dev, &attr->ah_attr, &context->pri_path, + if (mlx4_set_path(dev, attr, attr_mask, qp, &context->pri_path, attr_mask & IB_QP_PORT ? attr->port_num : qp->port)) goto out; @@ -1352,8 +1527,9 @@ dev->dev->caps.pkey_table_len[attr->alt_port_num]) goto out; - if (mlx4_set_path(dev, &attr->alt_ah_attr, &context->alt_path, - attr->alt_port_num)) + if (mlx4_set_alt_path(dev, attr, attr_mask, qp, + &context->alt_path, + attr->alt_port_num)) goto out; context->alt_path.pkey_index = attr->alt_pkey_index; @@ -1458,12 +1634,37 @@ context->pri_path.fl = 0x80; context->pri_path.sched_queue |= MLX4_IB_DEFAULT_SCHED_QUEUE; } + if (rdma_port_get_link_layer(&dev->ib_dev, qp->port) == + IB_LINK_LAYER_ETHERNET) { + if (qp->mlx4_ib_qp_type == MLX4_IB_QPT_TUN_GSI || + qp->mlx4_ib_qp_type == MLX4_IB_QPT_GSI) + context->pri_path.feup = 1 << 7; /* don't fsm */ + /* handle smac_index */ + if (qp->mlx4_ib_qp_type == MLX4_IB_QPT_UD || + qp->mlx4_ib_qp_type == MLX4_IB_QPT_PROXY_GSI || + qp->mlx4_ib_qp_type == MLX4_IB_QPT_TUN_GSI) { + err = handle_eth_ud_smac_index(dev, qp, (u8 *)attr->smac, context); + if (err) + return -EINVAL; + } + } } if (qp->ibqp.qp_type == IB_QPT_RAW_PACKET) context->pri_path.ackto = (context->pri_path.ackto & 0xf8) | MLX4_IB_LINK_TYPE_ETH; + if (ibqp->qp_type == IB_QPT_UD && (new_state == IB_QPS_RTR)) { + int is_eth = rdma_port_get_link_layer( + &dev->ib_dev, qp->port) == + IB_LINK_LAYER_ETHERNET; + if (is_eth) { + context->pri_path.ackto = MLX4_IB_LINK_TYPE_ETH; + optpar |= MLX4_QP_OPTPAR_PRIMARY_ADDR_PATH; + } + } + + if (cur_state == IB_QPS_RTS && new_state == IB_QPS_SQD && attr_mask & IB_QP_EN_SQD_ASYNC_NOTIFY && attr->en_sqd_async_notify) sqd_event = 1; @@ -1534,23 +1735,113 @@ * If we moved a kernel QP to RESET, clean up all old CQ * entries and reinitialize the QP. */ - if (new_state == IB_QPS_RESET && !ibqp->uobject) { - mlx4_ib_cq_clean(recv_cq, qp->mqp.qpn, - ibqp->srq ? to_msrq(ibqp->srq): NULL); - if (send_cq != recv_cq) - mlx4_ib_cq_clean(send_cq, qp->mqp.qpn, NULL); - - qp->rq.head = 0; - qp->rq.tail = 0; - qp->sq.head = 0; - qp->sq.tail = 0; - qp->sq_next_wqe = 0; - if (qp->rq.wqe_cnt) - *qp->db.db = 0; + if (new_state == IB_QPS_RESET) { + if (!ibqp->uobject) { + mlx4_ib_cq_clean(recv_cq, qp->mqp.qpn, + ibqp->srq ? to_msrq(ibqp->srq) : NULL); + if (send_cq != recv_cq) + mlx4_ib_cq_clean(send_cq, qp->mqp.qpn, NULL); + + qp->rq.head = 0; + qp->rq.tail = 0; + qp->sq.head = 0; + qp->sq.tail = 0; + qp->sq_next_wqe = 0; + if (qp->rq.wqe_cnt) + *qp->db.db = 0; + + if (qp->flags & MLX4_IB_QP_NETIF) + mlx4_ib_steer_qp_reg(dev, qp, 0); + } + if (qp->pri.smac) { + mlx4_unregister_mac(dev->dev, qp->pri.smac_port, qp->pri.smac); + qp->pri.smac = 0; + } + if (qp->alt.smac) { + mlx4_unregister_mac(dev->dev, qp->alt.smac_port, qp->alt.smac); + qp->alt.smac = 0; + } + if (qp->pri.vid < 0x1000) { + mlx4_unregister_vlan(dev->dev, qp->pri.vlan_port, qp->pri.vid); + qp->pri.vid = 0xFFFF; + qp->pri.candidate_vid = 0xFFFF; + qp->pri.update_vid = 0; + } + + if (qp->alt.vid < 0x1000) { + mlx4_unregister_vlan(dev->dev, qp->alt.vlan_port, qp->alt.vid); + qp->alt.vid = 0xFFFF; + qp->alt.candidate_vid = 0xFFFF; + qp->alt.update_vid = 0; + } } - out: + if (err && steer_qp) + mlx4_ib_steer_qp_reg(dev, qp, 0); kfree(context); + if (qp->pri.candidate_smac) { + if (err) { + mlx4_unregister_mac(dev->dev, qp->pri.candidate_smac_port, qp->pri.candidate_smac); + } else { + if (qp->pri.smac) + mlx4_unregister_mac(dev->dev, qp->pri.smac_port, qp->pri.smac); + qp->pri.smac = qp->pri.candidate_smac; + qp->pri.smac_index = qp->pri.candidate_smac_index; + qp->pri.smac_port = qp->pri.candidate_smac_port; + } + qp->pri.candidate_smac = 0; + qp->pri.candidate_smac_index = 0; + qp->pri.candidate_smac_port = 0; + } + if (qp->alt.candidate_smac) { + if (err) { + mlx4_unregister_mac(dev->dev, qp->alt.candidate_smac_port, qp->alt.candidate_smac); + } else { + if (qp->alt.smac) + mlx4_unregister_mac(dev->dev, qp->alt.smac_port, qp->alt.smac); + qp->alt.smac = qp->alt.candidate_smac; + qp->alt.smac_index = qp->alt.candidate_smac_index; + qp->alt.smac_port = qp->alt.candidate_smac_port; + } + qp->alt.candidate_smac = 0; + qp->alt.candidate_smac_index = 0; + qp->alt.candidate_smac_port = 0; + } + + if (qp->pri.update_vid) { + if (err) { + if (qp->pri.candidate_vid < 0x1000) + mlx4_unregister_vlan(dev->dev, qp->pri.candidate_vlan_port, + qp->pri.candidate_vid); + } else { + if (qp->pri.vid < 0x1000) + mlx4_unregister_vlan(dev->dev, qp->pri.vlan_port, + qp->pri.vid); + qp->pri.vid = qp->pri.candidate_vid; + qp->pri.vlan_port = qp->pri.candidate_vlan_port; + qp->pri.vlan_index = qp->pri.candidate_vlan_index; + } + qp->pri.candidate_vid = 0xFFFF; + qp->pri.update_vid = 0; + } + + if (qp->alt.update_vid) { + if (err) { + if (qp->alt.candidate_vid < 0x1000) + mlx4_unregister_vlan(dev->dev, qp->alt.candidate_vlan_port, + qp->alt.candidate_vid); + } else { + if (qp->alt.vid < 0x1000) + mlx4_unregister_vlan(dev->dev, qp->alt.vlan_port, + qp->alt.vid); + qp->alt.vid = qp->alt.candidate_vid; + qp->alt.vlan_port = qp->alt.candidate_vlan_port; + qp->alt.vlan_index = qp->alt.candidate_vlan_index; + } + qp->alt.candidate_vid = 0xFFFF; + qp->alt.update_vid = 0; + } + return err; } @@ -1561,13 +1852,21 @@ struct mlx4_ib_qp *qp = to_mqp(ibqp); enum ib_qp_state cur_state, new_state; int err = -EINVAL; - + int ll; mutex_lock(&qp->mutex); cur_state = attr_mask & IB_QP_CUR_STATE ? attr->cur_qp_state : qp->state; new_state = attr_mask & IB_QP_STATE ? attr->qp_state : cur_state; - if (!ib_modify_qp_is_ok(cur_state, new_state, ibqp->qp_type, attr_mask)) { + if (cur_state == new_state && cur_state == IB_QPS_RESET) { + ll = IB_LINK_LAYER_UNSPECIFIED; + } else { + int port = attr_mask & IB_QP_PORT ? attr->port_num : qp->port; + ll = rdma_port_get_link_layer(&dev->ib_dev, port); + } + + if (!ib_modify_qp_is_ok(cur_state, new_state, ibqp->qp_type, + attr_mask, ll)) { pr_debug("qpn 0x%x: invalid attribute mask specified " "for transition %d to %d. qp_type %d," " attr_mask 0x%x\n", @@ -1744,9 +2043,9 @@ { struct ib_device *ib_dev = sqp->qp.ibqp.device; struct mlx4_wqe_mlx_seg *mlx = wqe; + struct mlx4_wqe_ctrl_seg *ctrl = wqe; struct mlx4_wqe_inline_seg *inl = wqe + sizeof *mlx; struct mlx4_ib_ah *ah = to_mah(wr->wr.ud.ah); - struct net_device *ndev; union ib_gid sgid; u16 pkey; int send_size; @@ -1770,12 +2069,11 @@ /* When multi-function is enabled, the ib_core gid * indexes don't necessarily match the hw ones, so * we must use our own cache */ - sgid.global.subnet_prefix = - to_mdev(ib_dev)->sriov.demux[sqp->qp.port - 1]. - subnet_prefix; - sgid.global.interface_id = - to_mdev(ib_dev)->sriov.demux[sqp->qp.port - 1]. - guid_cache[ah->av.ib.gid_index]; + err = mlx4_get_roce_gid_from_slave(to_mdev(ib_dev)->dev, + be32_to_cpu(ah->av.ib.port_pd) >> 24, + ah->av.ib.gid_index, &sgid.raw[0]); + if (err) + return err; } else { err = ib_get_cached_gid(ib_dev, be32_to_cpu(ah->av.ib.port_pd) >> 24, @@ -1784,8 +2082,10 @@ return err; } - vlan = rdma_get_vlan_id(&sgid); - is_vlan = vlan < 0x1000; + if (ah->av.eth.vlan != 0xffff) { + vlan = be16_to_cpu(ah->av.eth.vlan) & 0x0fff; + is_vlan = 1; + } } ib_ud_header_init(send_size, !is_eth, is_eth, is_vlan, is_grh, 0, &sqp->ud_header); @@ -1802,6 +2102,9 @@ sqp->ud_header.grh.flow_label = ah->av.ib.sl_tclass_flowlabel & cpu_to_be32(0xfffff); sqp->ud_header.grh.hop_limit = ah->av.ib.hop_limit; + if (is_eth) + memcpy(sqp->ud_header.grh.source_gid.raw, sgid.raw, 16); + else { if (mlx4_is_mfunc(to_mdev(ib_dev)->dev)) { /* When multi-function is enabled, the ib_core gid * indexes don't necessarily match the hw ones, so @@ -1817,6 +2120,7 @@ be32_to_cpu(ah->av.ib.port_pd) >> 24, ah->av.ib.gid_index, &sqp->ud_header.grh.source_gid); + } memcpy(sqp->ud_header.grh.destination_gid.raw, ah->av.ib.dgid, 16); } @@ -1849,16 +2153,23 @@ if (is_eth) { u8 *smac; + struct in6_addr in6; + u16 pcp = (be32_to_cpu(ah->av.ib.sl_tclass_flowlabel) >> 29) << 13; mlx->sched_prio = cpu_to_be16(pcp); memcpy(sqp->ud_header.eth.dmac_h, ah->av.eth.mac, 6); /* FIXME: cache smac value? */ - ndev = to_mdev(sqp->qp.ibqp.device)->iboe.netdevs[sqp->qp.port - 1]; - if (!ndev) - return -ENODEV; - smac = ndev->dev_addr; + memcpy(&ctrl->srcrb_flags16[0], ah->av.eth.mac, 2); + memcpy(&ctrl->imm, ah->av.eth.mac + 2, 4); + memcpy(&in6, sgid.raw, sizeof(in6)); + + if (!mlx4_is_mfunc(to_mdev(ib_dev)->dev)) + smac = to_mdev(sqp->qp.ibqp.device)-> + iboe.netdevs[sqp->qp.port - 1]->dev_addr; + else /* use the src mac of the tunnel */ + smac = ah->av.eth.s_mac; memcpy(sqp->ud_header.eth.smac_h, smac, 6); if (!memcmp(sqp->ud_header.eth.smac_h, sqp->ud_header.eth.dmac_h, 6)) mlx->flags |= cpu_to_be32(MLX4_WQE_CTRL_FORCE_LOOPBACK); @@ -2090,6 +2401,8 @@ hdr.remote_qpn = cpu_to_be32(wr->wr.ud.remote_qpn); hdr.pkey_index = cpu_to_be16(wr->wr.ud.pkey_index); hdr.qkey = cpu_to_be32(wr->wr.ud.remote_qkey); + memcpy(hdr.mac, ah->av.eth.mac, 6); + hdr.vlan = ah->av.eth.vlan; spc = MLX4_INLINE_ALIGN - ((unsigned long) (inl + 1) & (MLX4_INLINE_ALIGN - 1)); @@ -2174,8 +2487,7 @@ memcpy(wqe->header, wr->wr.ud.header, wr->wr.ud.hlen); - *lso_hdr_sz = cpu_to_be32((wr->wr.ud.mss - wr->wr.ud.hlen) << 16 | - wr->wr.ud.hlen); + *lso_hdr_sz = cpu_to_be32(wr->wr.ud.mss << 16 | wr->wr.ud.hlen); *lso_seg_len = halign; return 0; } @@ -2762,6 +3074,9 @@ if (qp->flags & MLX4_IB_QP_LSO) qp_init_attr->create_flags |= IB_QP_CREATE_IPOIB_UD_LSO; + if (qp->flags & MLX4_IB_QP_NETIF) + qp_init_attr->create_flags |= IB_QP_CREATE_NETIF_QP; + qp_init_attr->sq_sig_type = qp->sq_signal_bits == cpu_to_be32(MLX4_WQE_CTRL_CQ_UPDATE) ? IB_SIGNAL_ALL_WR : IB_SIGNAL_REQ_WR; --- linux-3.13.0.orig/drivers/infiniband/hw/mlx4/sysfs.c +++ linux-3.13.0/drivers/infiniband/hw/mlx4/sysfs.c @@ -563,6 +563,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) @@ -580,10 +582,13 @@ 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) + if (!p->pkey_group.attrs) { + ret = -ENOMEM; goto err_alloc; + } ret = sysfs_create_group(&p->kobj, &p->pkey_group); if (ret) @@ -591,8 +596,10 @@ p->gid_group.name = "gid_idx"; p->gid_group.attrs = alloc_group_attrs(show_port_gid_idx, NULL, 1); - if (!p->gid_group.attrs) + if (!p->gid_group.attrs) { + ret = -ENOMEM; goto err_free_pkey; + } ret = sysfs_create_group(&p->kobj, &p->gid_group); if (ret) @@ -623,6 +630,7 @@ int port; struct kobject *p, *t; struct mlx4_port *mport; + struct mlx4_active_ports actv_ports; get_name(dev, name, slave, sizeof name); @@ -645,7 +653,11 @@ goto err_ports; } + actv_ports = mlx4_get_active_ports(dev->dev, slave); + for (port = 1; port <= dev->dev->caps.num_ports; ++port) { + if (!test_bit(port - 1, actv_ports.ports)) + continue; err = add_port(dev, port, slave); if (err) goto err_add; --- linux-3.13.0.orig/drivers/infiniband/hw/mlx5/Kconfig +++ linux-3.13.0/drivers/infiniband/hw/mlx5/Kconfig @@ -1,6 +1,6 @@ config MLX5_INFINIBAND tristate "Mellanox Connect-IB HCA support" - depends on NETDEVICES && ETHERNET && PCI && X86 + depends on NETDEVICES && ETHERNET && PCI select NET_VENDOR_MELLANOX select MLX5_CORE ---help--- --- linux-3.13.0.orig/drivers/infiniband/hw/mlx5/cq.c +++ linux-3.13.0/drivers/infiniband/hw/mlx5/cq.c @@ -32,6 +32,7 @@ #include #include +#include #include "mlx5_ib.h" #include "user.h" @@ -73,14 +74,24 @@ return get_cqe_from_buf(&cq->buf, n, cq->mcq.cqe_sz); } +static u8 sw_ownership_bit(int n, int nent) +{ + return (n & nent) ? 1 : 0; +} + static void *get_sw_cqe(struct mlx5_ib_cq *cq, int n) { void *cqe = get_cqe(cq, n & cq->ibcq.cqe); struct mlx5_cqe64 *cqe64; cqe64 = (cq->mcq.cqe_sz == 64) ? cqe : cqe + 64; - return ((cqe64->op_own & MLX5_CQE_OWNER_MASK) ^ - !!(n & (cq->ibcq.cqe + 1))) ? NULL : cqe; + + if (likely((cqe64->op_own) >> 4 != MLX5_CQE_INVALID) && + !((cqe64->op_own & MLX5_CQE_OWNER_MASK) ^ !!(n & (cq->ibcq.cqe + 1)))) { + return cqe; + } else { + return NULL; + } } static void *next_cqe_sw(struct mlx5_ib_cq *cq) @@ -351,6 +362,11 @@ qp->sq.last_poll = tail; } +static void free_cq_buf(struct mlx5_ib_dev *dev, struct mlx5_ib_cq_buf *buf) +{ + mlx5_buf_free(&dev->mdev, &buf->buf); +} + static int mlx5_poll_one(struct mlx5_ib_cq *cq, struct mlx5_ib_qp **cur_qp, struct ib_wc *wc) @@ -366,6 +382,7 @@ void *cqe; int idx; +repoll: cqe = next_cqe_sw(cq); if (!cqe) return -EAGAIN; @@ -379,7 +396,18 @@ */ rmb(); - /* TBD: resize CQ */ + opcode = cqe64->op_own >> 4; + if (unlikely(opcode == MLX5_CQE_RESIZE_CQ)) { + if (likely(cq->resize_buf)) { + free_cq_buf(dev, &cq->buf); + cq->buf = *cq->resize_buf; + kfree(cq->resize_buf); + cq->resize_buf = NULL; + goto repoll; + } else { + mlx5_ib_warn(dev, "unexpected resize cqe\n"); + } + } qpn = ntohl(cqe64->sop_drop_qpn) & 0xffffff; if (!*cur_qp || (qpn != (*cur_qp)->ibqp.qp_num)) { @@ -398,7 +426,6 @@ } wc->qp = &(*cur_qp)->ibqp; - opcode = cqe64->op_own >> 4; switch (opcode) { case MLX5_CQE_REQ: wq = &(*cur_qp)->sq; @@ -503,29 +530,35 @@ return err; buf->cqe_size = cqe_size; + buf->nent = nent; return 0; } -static void free_cq_buf(struct mlx5_ib_dev *dev, struct mlx5_ib_cq_buf *buf) -{ - mlx5_buf_free(&dev->mdev, &buf->buf); -} - static int create_cq_user(struct mlx5_ib_dev *dev, struct ib_udata *udata, struct ib_ucontext *context, struct mlx5_ib_cq *cq, int entries, struct mlx5_create_cq_mbox_in **cqb, int *cqe_size, int *index, int *inlen) { struct mlx5_ib_create_cq ucmd; + size_t ucmdlen; int page_shift; int npages; int ncont; int err; - if (ib_copy_from_udata(&ucmd, udata, sizeof(ucmd))) + ucmdlen = + (udata->inlen - sizeof(struct ib_uverbs_cmd_hdr) < + sizeof(ucmd)) ? (sizeof(ucmd) - + sizeof(ucmd.reserved)) : sizeof(ucmd); + + if (ib_copy_from_udata(&ucmd, udata, ucmdlen)) return -EFAULT; + if (ucmdlen == sizeof(ucmd) && + ucmd.reserved != 0) + return -EINVAL; + if (ucmd.cqe_size != 64 && ucmd.cqe_size != 128) return -EINVAL; @@ -576,16 +609,16 @@ ib_umem_release(cq->buf.umem); } -static void init_cq_buf(struct mlx5_ib_cq *cq, int nent) +static void init_cq_buf(struct mlx5_ib_cq *cq, struct mlx5_ib_cq_buf *buf) { int i; void *cqe; struct mlx5_cqe64 *cqe64; - for (i = 0; i < nent; i++) { - cqe = get_cqe(cq, i); - cqe64 = (cq->buf.cqe_size == 64) ? cqe : cqe + 64; - cqe64->op_own = 0xf1; + for (i = 0; i < buf->nent; i++) { + cqe = get_cqe_from_buf(buf, i, buf->cqe_size); + cqe64 = buf->cqe_size == 64 ? cqe : cqe + 64; + cqe64->op_own = MLX5_CQE_INVALID << 4; } } @@ -610,7 +643,7 @@ if (err) goto err_db; - init_cq_buf(cq, entries); + init_cq_buf(cq, &cq->buf); *inlen = sizeof(**cqb) + sizeof(*(*cqb)->pas) * cq->buf.buf.npages; *cqb = mlx5_vzalloc(*inlen); @@ -818,12 +851,266 @@ int mlx5_ib_modify_cq(struct ib_cq *cq, u16 cq_count, u16 cq_period) { - return -ENOSYS; + struct mlx5_modify_cq_mbox_in *in; + struct mlx5_ib_dev *dev = to_mdev(cq->device); + struct mlx5_ib_cq *mcq = to_mcq(cq); + int err; + u32 fsel; + + if (!(dev->mdev.caps.flags & MLX5_DEV_CAP_FLAG_CQ_MODER)) + return -ENOSYS; + + in = kzalloc(sizeof(*in), GFP_KERNEL); + if (!in) + return -ENOMEM; + + in->cqn = cpu_to_be32(mcq->mcq.cqn); + fsel = (MLX5_CQ_MODIFY_PERIOD | MLX5_CQ_MODIFY_COUNT); + in->ctx.cq_period = cpu_to_be16(cq_period); + in->ctx.cq_max_count = cpu_to_be16(cq_count); + in->field_select = cpu_to_be32(fsel); + err = mlx5_core_modify_cq(&dev->mdev, &mcq->mcq, in, sizeof(*in)); + kfree(in); + + if (err) + mlx5_ib_warn(dev, "modify cq 0x%x failed\n", mcq->mcq.cqn); + + return err; +} + +static int resize_user(struct mlx5_ib_dev *dev, struct mlx5_ib_cq *cq, + int entries, struct ib_udata *udata, int *npas, + int *page_shift, int *cqe_size) +{ + struct mlx5_ib_resize_cq ucmd; + struct ib_umem *umem; + int err; + int npages; + struct ib_ucontext *context = cq->buf.umem->context; + + err = ib_copy_from_udata(&ucmd, udata, sizeof(ucmd)); + if (err) + return err; + + if (ucmd.reserved0 || ucmd.reserved1) + return -EINVAL; + + umem = ib_umem_get(context, ucmd.buf_addr, entries * ucmd.cqe_size, + IB_ACCESS_LOCAL_WRITE, 1); + if (IS_ERR(umem)) { + err = PTR_ERR(umem); + return err; + } + + mlx5_ib_cont_pages(umem, ucmd.buf_addr, &npages, page_shift, + npas, NULL); + + cq->resize_umem = umem; + *cqe_size = ucmd.cqe_size; + + return 0; +} + +static void un_resize_user(struct mlx5_ib_cq *cq) +{ + ib_umem_release(cq->resize_umem); +} + +static int resize_kernel(struct mlx5_ib_dev *dev, struct mlx5_ib_cq *cq, + int entries, int cqe_size) +{ + int err; + + cq->resize_buf = kzalloc(sizeof(*cq->resize_buf), GFP_KERNEL); + if (!cq->resize_buf) + return -ENOMEM; + + err = alloc_cq_buf(dev, cq->resize_buf, entries, cqe_size); + if (err) + goto ex; + + init_cq_buf(cq, cq->resize_buf); + + return 0; + +ex: + kfree(cq->resize_buf); + return err; +} + +static void un_resize_kernel(struct mlx5_ib_dev *dev, struct mlx5_ib_cq *cq) +{ + free_cq_buf(dev, cq->resize_buf); + cq->resize_buf = NULL; +} + +static int copy_resize_cqes(struct mlx5_ib_cq *cq) +{ + struct mlx5_ib_dev *dev = to_mdev(cq->ibcq.device); + struct mlx5_cqe64 *scqe64; + struct mlx5_cqe64 *dcqe64; + void *start_cqe; + void *scqe; + void *dcqe; + int ssize; + int dsize; + int i; + u8 sw_own; + + ssize = cq->buf.cqe_size; + dsize = cq->resize_buf->cqe_size; + if (ssize != dsize) { + mlx5_ib_warn(dev, "resize from different cqe size is not supported\n"); + return -EINVAL; + } + + i = cq->mcq.cons_index; + scqe = get_sw_cqe(cq, i); + scqe64 = ssize == 64 ? scqe : scqe + 64; + start_cqe = scqe; + if (!scqe) { + mlx5_ib_warn(dev, "expected cqe in sw ownership\n"); + return -EINVAL; + } + + while ((scqe64->op_own >> 4) != MLX5_CQE_RESIZE_CQ) { + dcqe = get_cqe_from_buf(cq->resize_buf, + (i + 1) & (cq->resize_buf->nent), + dsize); + dcqe64 = dsize == 64 ? dcqe : dcqe + 64; + sw_own = sw_ownership_bit(i + 1, cq->resize_buf->nent); + memcpy(dcqe, scqe, dsize); + dcqe64->op_own = (dcqe64->op_own & ~MLX5_CQE_OWNER_MASK) | sw_own; + + ++i; + scqe = get_sw_cqe(cq, i); + scqe64 = ssize == 64 ? scqe : scqe + 64; + if (!scqe) { + mlx5_ib_warn(dev, "expected cqe in sw ownership\n"); + return -EINVAL; + } + + if (scqe == start_cqe) { + pr_warn("resize CQ failed to get resize CQE, CQN 0x%x\n", + cq->mcq.cqn); + return -ENOMEM; + } + } + ++cq->mcq.cons_index; + return 0; } int mlx5_ib_resize_cq(struct ib_cq *ibcq, int entries, struct ib_udata *udata) { - return -ENOSYS; + struct mlx5_ib_dev *dev = to_mdev(ibcq->device); + struct mlx5_ib_cq *cq = to_mcq(ibcq); + struct mlx5_modify_cq_mbox_in *in; + int err; + int npas; + int page_shift; + int inlen; + int uninitialized_var(cqe_size); + unsigned long flags; + + if (!(dev->mdev.caps.flags & MLX5_DEV_CAP_FLAG_RESIZE_CQ)) { + pr_info("Firmware does not support resize CQ\n"); + return -ENOSYS; + } + + if (entries < 1) + return -EINVAL; + + entries = roundup_pow_of_two(entries + 1); + if (entries > dev->mdev.caps.max_cqes + 1) + return -EINVAL; + + if (entries == ibcq->cqe + 1) + return 0; + + mutex_lock(&cq->resize_mutex); + if (udata) { + err = resize_user(dev, cq, entries, udata, &npas, &page_shift, + &cqe_size); + } else { + cqe_size = 64; + err = resize_kernel(dev, cq, entries, cqe_size); + if (!err) { + npas = cq->resize_buf->buf.npages; + page_shift = cq->resize_buf->buf.page_shift; + } + } + + if (err) + goto ex; + + inlen = sizeof(*in) + npas * sizeof(in->pas[0]); + in = mlx5_vzalloc(inlen); + if (!in) { + err = -ENOMEM; + goto ex_resize; + } + + if (udata) + mlx5_ib_populate_pas(dev, cq->resize_umem, page_shift, + in->pas, 0); + else + mlx5_fill_page_array(&cq->resize_buf->buf, in->pas); + + in->field_select = cpu_to_be32(MLX5_MODIFY_CQ_MASK_LOG_SIZE | + MLX5_MODIFY_CQ_MASK_PG_OFFSET | + MLX5_MODIFY_CQ_MASK_PG_SIZE); + in->ctx.log_pg_sz = page_shift - MLX5_ADAPTER_PAGE_SHIFT; + in->ctx.cqe_sz_flags = cqe_sz_to_mlx_sz(cqe_size) << 5; + in->ctx.page_offset = 0; + in->ctx.log_sz_usr_page = cpu_to_be32(ilog2(entries) << 24); + in->hdr.opmod = cpu_to_be16(MLX5_CQ_OPMOD_RESIZE); + in->cqn = cpu_to_be32(cq->mcq.cqn); + + err = mlx5_core_modify_cq(&dev->mdev, &cq->mcq, in, inlen); + if (err) + goto ex_alloc; + + if (udata) { + cq->ibcq.cqe = entries - 1; + ib_umem_release(cq->buf.umem); + cq->buf.umem = cq->resize_umem; + cq->resize_umem = NULL; + } else { + struct mlx5_ib_cq_buf tbuf; + int resized = 0; + + spin_lock_irqsave(&cq->lock, flags); + if (cq->resize_buf) { + err = copy_resize_cqes(cq); + if (!err) { + tbuf = cq->buf; + cq->buf = *cq->resize_buf; + kfree(cq->resize_buf); + cq->resize_buf = NULL; + resized = 1; + } + } + cq->ibcq.cqe = entries - 1; + spin_unlock_irqrestore(&cq->lock, flags); + if (resized) + free_cq_buf(dev, &tbuf); + } + mutex_unlock(&cq->resize_mutex); + + mlx5_vfree(in); + return 0; + +ex_alloc: + mlx5_vfree(in); + +ex_resize: + if (udata) + un_resize_user(cq); + else + un_resize_kernel(dev, cq); +ex: + mutex_unlock(&cq->resize_mutex); + return err; } int mlx5_ib_get_cqe_size(struct mlx5_ib_dev *dev, struct ib_cq *ibcq) --- linux-3.13.0.orig/drivers/infiniband/hw/mlx5/main.c +++ linux-3.13.0/drivers/infiniband/hw/mlx5/main.c @@ -46,8 +46,8 @@ #include "mlx5_ib.h" #define DRIVER_NAME "mlx5_ib" -#define DRIVER_VERSION "1.0" -#define DRIVER_RELDATE "June 2013" +#define DRIVER_VERSION "2.2-1" +#define DRIVER_RELDATE "Feb 2014" MODULE_AUTHOR("Eli Cohen "); MODULE_DESCRIPTION("Mellanox Connect-IB HCA IB driver"); @@ -261,8 +261,7 @@ props->device_cap_flags = IB_DEVICE_CHANGE_PHY_PORT | IB_DEVICE_PORT_ACTIVE_EVENT | IB_DEVICE_SYS_IMAGE_GUID | - IB_DEVICE_RC_RNR_NAK_GEN | - IB_DEVICE_BLOCK_MULTICAST_LOOPBACK; + IB_DEVICE_RC_RNR_NAK_GEN; flags = dev->mdev.caps.flags; if (flags & MLX5_DEV_CAP_FLAG_BAD_PKEY_CNTR) props->device_cap_flags |= IB_DEVICE_BAD_PKEY_CNTR; @@ -536,34 +535,51 @@ struct ib_udata *udata) { struct mlx5_ib_dev *dev = to_mdev(ibdev); - struct mlx5_ib_alloc_ucontext_req req; + struct mlx5_ib_alloc_ucontext_req_v2 req; struct mlx5_ib_alloc_ucontext_resp resp; struct mlx5_ib_ucontext *context; struct mlx5_uuar_info *uuari; struct mlx5_uar *uars; + int gross_uuars; int num_uars; + int ver; int uuarn; int err; int i; + int reqlen; if (!dev->ib_active) return ERR_PTR(-EAGAIN); - err = ib_copy_from_udata(&req, udata, sizeof(req)); + memset(&req, 0, sizeof(req)); + reqlen = udata->inlen - sizeof(struct ib_uverbs_cmd_hdr); + if (reqlen == sizeof(struct mlx5_ib_alloc_ucontext_req)) + ver = 0; + else if (reqlen == sizeof(struct mlx5_ib_alloc_ucontext_req_v2)) + ver = 2; + else + return ERR_PTR(-EINVAL); + + err = ib_copy_from_udata(&req, udata, reqlen); if (err) return ERR_PTR(err); + if (req.flags || req.reserved) + return ERR_PTR(-EINVAL); + if (req.total_num_uuars > MLX5_MAX_UUARS) return ERR_PTR(-ENOMEM); if (req.total_num_uuars == 0) return ERR_PTR(-EINVAL); - req.total_num_uuars = ALIGN(req.total_num_uuars, MLX5_BF_REGS_PER_PAGE); + req.total_num_uuars = ALIGN(req.total_num_uuars, + MLX5_NON_FP_BF_REGS_PER_PAGE); if (req.num_low_latency_uuars > req.total_num_uuars - 1) return ERR_PTR(-EINVAL); - num_uars = req.total_num_uuars / MLX5_BF_REGS_PER_PAGE; + num_uars = req.total_num_uuars / MLX5_NON_FP_BF_REGS_PER_PAGE; + gross_uuars = num_uars * MLX5_BF_REGS_PER_PAGE; resp.qp_tab_size = 1 << dev->mdev.caps.log_max_qp; resp.bf_reg_size = dev->mdev.caps.bf_reg_size; resp.cache_line_size = L1_CACHE_BYTES; @@ -585,7 +601,7 @@ goto out_ctx; } - uuari->bitmap = kcalloc(BITS_TO_LONGS(req.total_num_uuars), + uuari->bitmap = kcalloc(BITS_TO_LONGS(gross_uuars), sizeof(*uuari->bitmap), GFP_KERNEL); if (!uuari->bitmap) { @@ -595,13 +611,13 @@ /* * clear all fast path uuars */ - for (i = 0; i < req.total_num_uuars; i++) { + for (i = 0; i < gross_uuars; i++) { uuarn = i & 3; if (uuarn == 2 || uuarn == 3) set_bit(i, uuari->bitmap); } - uuari->count = kcalloc(req.total_num_uuars, sizeof(*uuari->count), GFP_KERNEL); + uuari->count = kcalloc(gross_uuars, sizeof(*uuari->count), GFP_KERNEL); if (!uuari->count) { err = -ENOMEM; goto out_bitmap; @@ -623,6 +639,7 @@ if (err) goto out_uars; + uuari->ver = ver; uuari->num_low_latency_uuars = req.num_low_latency_uuars; uuari->uars = uars; uuari->num_uars = num_uars; --- linux-3.13.0.orig/drivers/infiniband/hw/mlx5/mlx5_ib.h +++ linux-3.13.0/drivers/infiniband/hw/mlx5/mlx5_ib.h @@ -195,6 +195,7 @@ struct mlx5_buf buf; struct ib_umem *umem; int cqe_size; + int nent; }; enum mlx5_ib_qp_flags { @@ -220,7 +221,7 @@ /* protect resize cq */ struct mutex resize_mutex; - struct mlx5_ib_cq_resize *resize_buf; + struct mlx5_ib_cq_buf *resize_buf; struct ib_umem *resize_umem; int cqe_size; }; @@ -264,7 +265,6 @@ enum ib_wc_status status; struct mlx5_ib_dev *dev; struct mlx5_create_mkey_mbox_out out; - unsigned long start; }; struct mlx5_ib_fast_reg_page_list { --- linux-3.13.0.orig/drivers/infiniband/hw/mlx5/mr.c +++ linux-3.13.0/drivers/infiniband/hw/mlx5/mr.c @@ -146,7 +146,6 @@ spin_lock_irq(&ent->lock); ent->pending++; spin_unlock_irq(&ent->lock); - mr->start = jiffies; err = mlx5_core_create_mkey(&dev->mdev, &mr->mmr, in, sizeof(*in), reg_mr_callback, mr, &mr->out); --- linux-3.13.0.orig/drivers/infiniband/hw/mlx5/qp.c +++ linux-3.13.0/drivers/infiniband/hw/mlx5/qp.c @@ -216,7 +216,9 @@ case IB_QPT_UC: size += sizeof(struct mlx5_wqe_ctrl_seg) + - sizeof(struct mlx5_wqe_raddr_seg); + sizeof(struct mlx5_wqe_raddr_seg) + + sizeof(struct mlx5_wqe_umr_ctrl_seg) + + sizeof(struct mlx5_mkey_seg); break; case IB_QPT_UD: @@ -340,14 +342,57 @@ return 1; } +static int first_med_uuar(void) +{ + return 1; +} + +static int next_uuar(int n) +{ + n++; + + while (((n % 4) & 2)) + n++; + + return n; +} + +static int num_med_uuar(struct mlx5_uuar_info *uuari) +{ + int n; + + n = uuari->num_uars * MLX5_NON_FP_BF_REGS_PER_PAGE - + uuari->num_low_latency_uuars - 1; + + return n >= 0 ? n : 0; +} + +static int max_uuari(struct mlx5_uuar_info *uuari) +{ + return uuari->num_uars * 4; +} + +static int first_hi_uuar(struct mlx5_uuar_info *uuari) +{ + int med; + int i; + int t; + + med = num_med_uuar(uuari); + for (t = 0, i = first_med_uuar();; i = next_uuar(i)) { + t++; + if (t == med) + return next_uuar(i); + } + + return 0; +} + static int alloc_high_class_uuar(struct mlx5_uuar_info *uuari) { - int nuuars = uuari->num_uars * MLX5_BF_REGS_PER_PAGE; - int start_uuar; int i; - start_uuar = nuuars - uuari->num_low_latency_uuars; - for (i = start_uuar; i < nuuars; i++) { + for (i = first_hi_uuar(uuari); i < max_uuari(uuari); i = next_uuar(i)) { if (!test_bit(i, uuari->bitmap)) { set_bit(i, uuari->bitmap); uuari->count[i]++; @@ -360,19 +405,10 @@ static int alloc_med_class_uuar(struct mlx5_uuar_info *uuari) { - int nuuars = uuari->num_uars * MLX5_BF_REGS_PER_PAGE; - int minidx = 1; - int uuarn; - int end; + int minidx = first_med_uuar(); int i; - end = nuuars - uuari->num_low_latency_uuars; - - for (i = 1; i < end; i++) { - uuarn = i & 3; - if (uuarn == 2 || uuarn == 3) - continue; - + for (i = first_med_uuar(); i < first_hi_uuar(uuari); i = next_uuar(i)) { if (uuari->count[i] < uuari->count[minidx]) minidx = i; } @@ -394,11 +430,17 @@ break; case MLX5_IB_LATENCY_CLASS_MEDIUM: - uuarn = alloc_med_class_uuar(uuari); + if (uuari->ver < 2) + uuarn = -ENOMEM; + else + uuarn = alloc_med_class_uuar(uuari); break; case MLX5_IB_LATENCY_CLASS_HIGH: - uuarn = alloc_high_class_uuar(uuari); + if (uuari->ver < 2) + uuarn = -ENOMEM; + else + uuarn = alloc_high_class_uuar(uuari); break; case MLX5_IB_LATENCY_CLASS_FAST_PATH: @@ -489,12 +531,12 @@ { struct mlx5_ib_ucontext *context; struct mlx5_ib_create_qp ucmd; - int page_shift; + int page_shift = 0; int uar_index; int npages; - u32 offset; + u32 offset = 0; int uuarn; - int ncont; + int ncont = 0; int err; err = ib_copy_from_udata(&ucmd, udata, sizeof(ucmd)); @@ -510,11 +552,16 @@ uuarn = alloc_uuar(&context->uuari, MLX5_IB_LATENCY_CLASS_HIGH); if (uuarn < 0) { mlx5_ib_dbg(dev, "failed to allocate low latency UUAR\n"); - mlx5_ib_dbg(dev, "reverting to high latency\n"); - uuarn = alloc_uuar(&context->uuari, MLX5_IB_LATENCY_CLASS_LOW); + mlx5_ib_dbg(dev, "reverting to medium latency\n"); + uuarn = alloc_uuar(&context->uuari, MLX5_IB_LATENCY_CLASS_MEDIUM); if (uuarn < 0) { - mlx5_ib_dbg(dev, "uuar allocation failed\n"); - return uuarn; + mlx5_ib_dbg(dev, "failed to allocate medium latency UUAR\n"); + mlx5_ib_dbg(dev, "reverting to high latency\n"); + uuarn = alloc_uuar(&context->uuari, MLX5_IB_LATENCY_CLASS_LOW); + if (uuarn < 0) { + mlx5_ib_warn(dev, "uuar allocation failed\n"); + return uuarn; + } } } @@ -525,23 +572,29 @@ if (err) goto err_uuar; - qp->umem = ib_umem_get(pd->uobject->context, ucmd.buf_addr, - qp->buf_size, 0, 0); - if (IS_ERR(qp->umem)) { - mlx5_ib_dbg(dev, "umem_get failed\n"); - err = PTR_ERR(qp->umem); - goto err_uuar; + if (ucmd.buf_addr && qp->buf_size) { + qp->umem = ib_umem_get(pd->uobject->context, ucmd.buf_addr, + qp->buf_size, 0, 0); + if (IS_ERR(qp->umem)) { + mlx5_ib_dbg(dev, "umem_get failed\n"); + err = PTR_ERR(qp->umem); + goto err_uuar; + } + } else { + qp->umem = NULL; } - mlx5_ib_cont_pages(qp->umem, ucmd.buf_addr, &npages, &page_shift, - &ncont, NULL); - err = mlx5_ib_get_buf_offset(ucmd.buf_addr, page_shift, &offset); - if (err) { - mlx5_ib_warn(dev, "bad offset\n"); - goto err_umem; + if (qp->umem) { + mlx5_ib_cont_pages(qp->umem, ucmd.buf_addr, &npages, &page_shift, + &ncont, NULL); + err = mlx5_ib_get_buf_offset(ucmd.buf_addr, page_shift, &offset); + if (err) { + mlx5_ib_warn(dev, "bad offset\n"); + goto err_umem; + } + mlx5_ib_dbg(dev, "addr 0x%llx, size %d, npages %d, page_shift %d, ncont %d, offset %d\n", + ucmd.buf_addr, qp->buf_size, npages, page_shift, ncont, offset); } - mlx5_ib_dbg(dev, "addr 0x%llx, size %d, npages %d, page_shift %d, ncont %d, offset %d\n", - ucmd.buf_addr, qp->buf_size, npages, page_shift, ncont, offset); *inlen = sizeof(**in) + sizeof(*(*in)->pas) * ncont; *in = mlx5_vzalloc(*inlen); @@ -549,7 +602,8 @@ err = -ENOMEM; goto err_umem; } - mlx5_ib_populate_pas(dev, qp->umem, page_shift, (*in)->pas, 0); + if (qp->umem) + mlx5_ib_populate_pas(dev, qp->umem, page_shift, (*in)->pas, 0); (*in)->ctx.log_pg_sz_remote_qpn = cpu_to_be32((page_shift - MLX5_ADAPTER_PAGE_SHIFT) << 24); (*in)->ctx.params2 = cpu_to_be32(offset << 6); @@ -580,7 +634,8 @@ mlx5_vfree(*in); err_umem: - ib_umem_release(qp->umem); + if (qp->umem) + ib_umem_release(qp->umem); err_uuar: free_uuar(&context->uuari, uuarn); @@ -593,7 +648,8 @@ context = to_mucontext(pd->uobject->context); mlx5_ib_db_unmap_user(context, &qp->db); - ib_umem_release(qp->umem); + if (qp->umem) + ib_umem_release(qp->umem); free_uuar(&context->uuari, qp->uuarn); } @@ -609,8 +665,8 @@ int err; uuari = &dev->mdev.priv.uuari; - if (init_attr->create_flags & IB_QP_CREATE_BLOCK_MULTICAST_LOOPBACK) - qp->flags |= MLX5_IB_QP_BLOCK_MULTICAST_LOOPBACK; + if (init_attr->create_flags) + return -EINVAL; if (init_attr->qp_type == MLX5_IB_QPT_REG_UMR) lc = MLX5_IB_LATENCY_CLASS_FAST_PATH; @@ -1616,7 +1672,8 @@ new_state = attr_mask & IB_QP_STATE ? attr->qp_state : cur_state; if (ibqp->qp_type != MLX5_IB_QPT_REG_UMR && - !ib_modify_qp_is_ok(cur_state, new_state, ibqp->qp_type, attr_mask)) + !ib_modify_qp_is_ok(cur_state, new_state, ibqp->qp_type, attr_mask, + IB_LINK_LAYER_UNSPECIFIED)) goto out; if ((attr_mask & IB_QP_PORT) && @@ -2212,6 +2269,10 @@ qp->db.db[MLX5_SND_DBR] = cpu_to_be32(qp->sq.cur_post); + /* Make sure doorbell record is visible to the HCA before + * we hit doorbell */ + wmb(); + if (bf->need_lock) spin_lock(&bf->lock); --- linux-3.13.0.orig/drivers/infiniband/hw/mlx5/srq.c +++ linux-3.13.0/drivers/infiniband/hw/mlx5/srq.c @@ -35,6 +35,7 @@ #include #include #include +#include #include "mlx5_ib.h" #include "user.h" @@ -78,16 +79,27 @@ { struct mlx5_ib_dev *dev = to_mdev(pd->device); struct mlx5_ib_create_srq ucmd; + size_t ucmdlen; int err; int npages; int page_shift; int ncont; u32 offset; - if (ib_copy_from_udata(&ucmd, udata, sizeof(ucmd))) { + ucmdlen = + (udata->inlen - sizeof(struct ib_uverbs_cmd_hdr) < + sizeof(ucmd)) ? (sizeof(ucmd) - + sizeof(ucmd.reserved)) : sizeof(ucmd); + + if (ib_copy_from_udata(&ucmd, udata, ucmdlen)) { mlx5_ib_dbg(dev, "failed copy udata\n"); return -EFAULT; } + + if (ucmdlen == sizeof(ucmd) && + ucmd.reserved != 0) + return -EINVAL; + srq->wq_sig = !!(ucmd.flags & MLX5_SRQ_FLAG_SIGNATURE); srq->umem = ib_umem_get(pd->uobject->context, ucmd.buf_addr, buf_size, --- linux-3.13.0.orig/drivers/infiniband/hw/mlx5/user.h +++ linux-3.13.0/drivers/infiniband/hw/mlx5/user.h @@ -62,6 +62,13 @@ __u32 num_low_latency_uuars; }; +struct mlx5_ib_alloc_ucontext_req_v2 { + __u32 total_num_uuars; + __u32 num_low_latency_uuars; + __u32 flags; + __u32 reserved; +}; + struct mlx5_ib_alloc_ucontext_resp { __u32 qp_tab_size; __u32 bf_reg_size; @@ -84,6 +91,7 @@ __u64 buf_addr; __u64 db_addr; __u32 cqe_size; + __u32 reserved; /* explicit padding (optional on i386) */ }; struct mlx5_ib_create_cq_resp { @@ -93,12 +101,16 @@ struct mlx5_ib_resize_cq { __u64 buf_addr; + __u16 cqe_size; + __u16 reserved0; + __u32 reserved1; }; struct mlx5_ib_create_srq { __u64 buf_addr; __u64 db_addr; __u32 flags; + __u32 reserved; /* explicit padding (optional on i386) */ }; struct mlx5_ib_create_srq_resp { --- linux-3.13.0.orig/drivers/infiniband/hw/mthca/mthca_provider.c +++ linux-3.13.0/drivers/infiniband/hw/mthca/mthca_provider.c @@ -695,6 +695,7 @@ if (context && ib_copy_to_udata(udata, &cq->cqn, sizeof (__u32))) { mthca_free_cq(to_mdev(ibdev), cq); + err = -EFAULT; goto err_free; } --- linux-3.13.0.orig/drivers/infiniband/hw/mthca/mthca_qp.c +++ linux-3.13.0/drivers/infiniband/hw/mthca/mthca_qp.c @@ -860,7 +860,8 @@ new_state = attr_mask & IB_QP_STATE ? attr->qp_state : cur_state; - if (!ib_modify_qp_is_ok(cur_state, new_state, ibqp->qp_type, attr_mask)) { + if (!ib_modify_qp_is_ok(cur_state, new_state, ibqp->qp_type, attr_mask, + IB_LINK_LAYER_UNSPECIFIED)) { mthca_dbg(dev, "Bad QP transition (transport %d) " "%d->%d with attr 0x%08x\n", qp->transport, cur_state, new_state, --- linux-3.13.0.orig/drivers/infiniband/hw/nes/nes.c +++ linux-3.13.0/drivers/infiniband/hw/nes/nes.c @@ -675,8 +675,11 @@ INIT_DELAYED_WORK(&nesdev->work, nes_recheck_link_status); /* Initialize network devices */ - if ((netdev = nes_netdev_init(nesdev, mmio_regs)) == NULL) + netdev = nes_netdev_init(nesdev, mmio_regs); + if (netdev == NULL) { + ret = -ENOMEM; goto bail7; + } /* Register network device */ ret = register_netdev(netdev); --- linux-3.13.0.orig/drivers/infiniband/hw/nes/nes_cm.c +++ linux-3.13.0/drivers/infiniband/hw/nes/nes_cm.c @@ -1354,8 +1354,7 @@ neigh->ha, ntohl(rt->rt_gateway)); if (arpindex >= 0) { - if (!memcmp(nesadapter->arp_table[arpindex].mac_addr, - neigh->ha, ETH_ALEN)) { + if (ether_addr_equal(nesadapter->arp_table[arpindex].mac_addr, neigh->ha)) { /* Mac address same as in nes_arp_table */ goto out; } --- linux-3.13.0.orig/drivers/infiniband/hw/nes/nes_verbs.c +++ linux-3.13.0/drivers/infiniband/hw/nes/nes_verbs.c @@ -1186,7 +1186,7 @@ nes_free_resource(nesadapter, nesadapter->allocated_qps, qp_num); kfree(nesqp->allocated_buffer); nes_debug(NES_DBG_QP, "ib_copy_from_udata() Failed \n"); - return NULL; + return ERR_PTR(-EFAULT); } if (req.user_wqe_buffers) { virt_wqs = 1; --- linux-3.13.0.orig/drivers/infiniband/hw/ocrdma/Kconfig +++ linux-3.13.0/drivers/infiniband/hw/ocrdma/Kconfig @@ -1,6 +1,6 @@ config INFINIBAND_OCRDMA tristate "Emulex One Connect HCA support" - depends on ETHERNET && NETDEVICES && PCI && (IPV6 || IPV6=n) + depends on ETHERNET && NETDEVICES && PCI && INET && (IPV6 || IPV6=n) select NET_VENDOR_EMULEX select BE2NET ---help--- --- linux-3.13.0.orig/drivers/infiniband/hw/ocrdma/ocrdma.h +++ linux-3.13.0/drivers/infiniband/hw/ocrdma/ocrdma.h @@ -423,5 +423,17 @@ OCRDMA_CQE_WRITE_IMM) ? 1 : 0; } +static inline int ocrdma_resolve_dmac(struct ocrdma_dev *dev, + struct ib_ah_attr *ah_attr, u8 *mac_addr) +{ + struct in6_addr in6; + + memcpy(&in6, ah_attr->grh.dgid.raw, sizeof(in6)); + if (rdma_is_multicast_addr(&in6)) + rdma_get_mcast_mac(&in6, mac_addr); + else + memcpy(mac_addr, ah_attr->dmac, ETH_ALEN); + return 0; +} #endif --- linux-3.13.0.orig/drivers/infiniband/hw/ocrdma/ocrdma_ah.c +++ linux-3.13.0/drivers/infiniband/hw/ocrdma/ocrdma_ah.c @@ -49,7 +49,7 @@ ah->sgid_index = attr->grh.sgid_index; - vlan_tag = rdma_get_vlan_id(&attr->grh.dgid); + vlan_tag = attr->vlan_id; if (!vlan_tag || (vlan_tag > 0xFFF)) vlan_tag = dev->pvid; if (vlan_tag && (vlan_tag < 0x1000)) { @@ -64,7 +64,8 @@ eth_sz = sizeof(struct ocrdma_eth_basic); } memcpy(ð.smac[0], &dev->nic_info.mac_addr[0], ETH_ALEN); - status = ocrdma_resolve_dgid(dev, &attr->grh.dgid, ð.dmac[0]); + memcpy(ð.dmac[0], attr->dmac, ETH_ALEN); + status = ocrdma_resolve_dmac(dev, attr, ð.dmac[0]); if (status) return status; status = ocrdma_query_gid(&dev->ibdev, 1, attr->grh.sgid_index, @@ -84,6 +85,7 @@ memcpy((u8 *)ah->av + eth_sz, &grh, sizeof(struct ocrdma_grh)); if (vlan_enabled) ah->av->valid |= OCRDMA_AV_VLAN_VALID; + ah->av->valid = cpu_to_le32(ah->av->valid); return status; } --- linux-3.13.0.orig/drivers/infiniband/hw/ocrdma/ocrdma_hw.c +++ linux-3.13.0/drivers/infiniband/hw/ocrdma/ocrdma_hw.c @@ -2076,23 +2076,6 @@ return status; } -int ocrdma_resolve_dgid(struct ocrdma_dev *dev, union ib_gid *dgid, - u8 *mac_addr) -{ - struct in6_addr in6; - - memcpy(&in6, dgid, sizeof in6); - if (rdma_is_multicast_addr(&in6)) { - rdma_get_mcast_mac(&in6, mac_addr); - } else if (rdma_link_local_addr(&in6)) { - rdma_get_ll_mac(&in6, mac_addr); - } else { - pr_err("%s() fail to resolve mac_addr.\n", __func__); - return -EINVAL; - } - return 0; -} - static int ocrdma_set_av_params(struct ocrdma_qp *qp, struct ocrdma_modify_qp *cmd, struct ib_qp_attr *attrs) @@ -2126,14 +2109,14 @@ qp->sgid_idx = ah_attr->grh.sgid_index; memcpy(&cmd->params.sgid[0], &sgid.raw[0], sizeof(cmd->params.sgid)); - ocrdma_resolve_dgid(qp->dev, &ah_attr->grh.dgid, &mac_addr[0]); + ocrdma_resolve_dmac(qp->dev, ah_attr, &mac_addr[0]); cmd->params.dmac_b0_to_b3 = mac_addr[0] | (mac_addr[1] << 8) | (mac_addr[2] << 16) | (mac_addr[3] << 24); /* convert them to LE format. */ ocrdma_cpu_to_le32(&cmd->params.dgid[0], sizeof(cmd->params.dgid)); ocrdma_cpu_to_le32(&cmd->params.sgid[0], sizeof(cmd->params.sgid)); cmd->params.vlan_dmac_b4_to_b5 = mac_addr[4] | (mac_addr[5] << 8); - vlan_id = rdma_get_vlan_id(&sgid); + vlan_id = ah_attr->vlan_id; if (vlan_id && (vlan_id < 0x1000)) { cmd->params.vlan_dmac_b4_to_b5 |= vlan_id << OCRDMA_QP_PARAMS_VLAN_SHIFT; --- linux-3.13.0.orig/drivers/infiniband/hw/ocrdma/ocrdma_hw.h +++ linux-3.13.0/drivers/infiniband/hw/ocrdma/ocrdma_hw.h @@ -94,7 +94,6 @@ int ocrdma_mbx_get_link_speed(struct ocrdma_dev *dev, u8 *lnk_speed); int ocrdma_query_config(struct ocrdma_dev *, struct ocrdma_mbx_query_config *config); -int ocrdma_resolve_dgid(struct ocrdma_dev *, union ib_gid *dgid, u8 *mac_addr); int ocrdma_mbx_alloc_pd(struct ocrdma_dev *, struct ocrdma_pd *); int ocrdma_mbx_dealloc_pd(struct ocrdma_dev *, struct ocrdma_pd *); --- linux-3.13.0.orig/drivers/infiniband/hw/ocrdma/ocrdma_main.c +++ linux-3.13.0/drivers/infiniband/hw/ocrdma/ocrdma_main.c @@ -67,46 +67,24 @@ guid[7] = mac_addr[5]; } -static void ocrdma_build_sgid_mac(union ib_gid *sgid, unsigned char *mac_addr, - bool is_vlan, u16 vlan_id) -{ - sgid->global.subnet_prefix = cpu_to_be64(0xfe80000000000000LL); - sgid->raw[8] = mac_addr[0] ^ 2; - sgid->raw[9] = mac_addr[1]; - sgid->raw[10] = mac_addr[2]; - if (is_vlan) { - sgid->raw[11] = vlan_id >> 8; - sgid->raw[12] = vlan_id & 0xff; - } else { - sgid->raw[11] = 0xff; - sgid->raw[12] = 0xfe; - } - sgid->raw[13] = mac_addr[3]; - sgid->raw[14] = mac_addr[4]; - sgid->raw[15] = mac_addr[5]; -} - -static bool ocrdma_add_sgid(struct ocrdma_dev *dev, unsigned char *mac_addr, - bool is_vlan, u16 vlan_id) +static bool ocrdma_add_sgid(struct ocrdma_dev *dev, union ib_gid *new_sgid) { int i; - union ib_gid new_sgid; unsigned long flags; memset(&ocrdma_zero_sgid, 0, sizeof(union ib_gid)); - ocrdma_build_sgid_mac(&new_sgid, mac_addr, is_vlan, vlan_id); spin_lock_irqsave(&dev->sgid_lock, flags); for (i = 0; i < OCRDMA_MAX_SGID; i++) { if (!memcmp(&dev->sgid_tbl[i], &ocrdma_zero_sgid, sizeof(union ib_gid))) { /* found free entry */ - memcpy(&dev->sgid_tbl[i], &new_sgid, + memcpy(&dev->sgid_tbl[i], new_sgid, sizeof(union ib_gid)); spin_unlock_irqrestore(&dev->sgid_lock, flags); return true; - } else if (!memcmp(&dev->sgid_tbl[i], &new_sgid, + } else if (!memcmp(&dev->sgid_tbl[i], new_sgid, sizeof(union ib_gid))) { /* entry already present, no addition is required. */ spin_unlock_irqrestore(&dev->sgid_lock, flags); @@ -117,20 +95,17 @@ return false; } -static bool ocrdma_del_sgid(struct ocrdma_dev *dev, unsigned char *mac_addr, - bool is_vlan, u16 vlan_id) +static bool ocrdma_del_sgid(struct ocrdma_dev *dev, union ib_gid *sgid) { int found = false; int i; - union ib_gid sgid; unsigned long flags; - ocrdma_build_sgid_mac(&sgid, mac_addr, is_vlan, vlan_id); spin_lock_irqsave(&dev->sgid_lock, flags); /* first is default sgid, which cannot be deleted. */ for (i = 1; i < OCRDMA_MAX_SGID; i++) { - if (!memcmp(&dev->sgid_tbl[i], &sgid, sizeof(union ib_gid))) { + if (!memcmp(&dev->sgid_tbl[i], sgid, sizeof(union ib_gid))) { /* found matching entry */ memset(&dev->sgid_tbl[i], 0, sizeof(union ib_gid)); found = true; @@ -141,75 +116,18 @@ return found; } -static void ocrdma_add_default_sgid(struct ocrdma_dev *dev) -{ - /* GID Index 0 - Invariant manufacturer-assigned EUI-64 */ - union ib_gid *sgid = &dev->sgid_tbl[0]; - - sgid->global.subnet_prefix = cpu_to_be64(0xfe80000000000000LL); - ocrdma_get_guid(dev, &sgid->raw[8]); -} - -#if IS_ENABLED(CONFIG_VLAN_8021Q) -static void ocrdma_add_vlan_sgids(struct ocrdma_dev *dev) -{ - struct net_device *netdev, *tmp; - u16 vlan_id; - bool is_vlan; - - netdev = dev->nic_info.netdev; - - rcu_read_lock(); - for_each_netdev_rcu(&init_net, tmp) { - if (netdev == tmp || vlan_dev_real_dev(tmp) == netdev) { - if (!netif_running(tmp) || !netif_oper_up(tmp)) - continue; - if (netdev != tmp) { - vlan_id = vlan_dev_vlan_id(tmp); - is_vlan = true; - } else { - is_vlan = false; - vlan_id = 0; - tmp = netdev; - } - ocrdma_add_sgid(dev, tmp->dev_addr, is_vlan, vlan_id); - } - } - rcu_read_unlock(); -} -#else -static void ocrdma_add_vlan_sgids(struct ocrdma_dev *dev) -{ - -} -#endif /* VLAN */ - -static int ocrdma_build_sgid_tbl(struct ocrdma_dev *dev) -{ - ocrdma_add_default_sgid(dev); - ocrdma_add_vlan_sgids(dev); - return 0; -} - -#if IS_ENABLED(CONFIG_IPV6) - -static int ocrdma_inet6addr_event(struct notifier_block *notifier, - unsigned long event, void *ptr) +static int ocrdma_addr_event(unsigned long event, struct net_device *netdev, + union ib_gid *gid) { - struct inet6_ifaddr *ifa = (struct inet6_ifaddr *)ptr; - struct net_device *netdev = ifa->idev->dev; struct ib_event gid_event; struct ocrdma_dev *dev; bool found = false; bool updated = false; bool is_vlan = false; - u16 vid = 0; is_vlan = netdev->priv_flags & IFF_802_1Q_VLAN; - if (is_vlan) { - vid = vlan_dev_vlan_id(netdev); - netdev = vlan_dev_real_dev(netdev); - } + if (is_vlan) + netdev = rdma_vlan_dev_real_dev(netdev); rcu_read_lock(); list_for_each_entry_rcu(dev, &ocrdma_dev_list, entry) { @@ -222,16 +140,14 @@ if (!found) return NOTIFY_DONE; - if (!rdma_link_local_addr((struct in6_addr *)&ifa->addr)) - return NOTIFY_DONE; mutex_lock(&dev->dev_lock); switch (event) { case NETDEV_UP: - updated = ocrdma_add_sgid(dev, netdev->dev_addr, is_vlan, vid); + updated = ocrdma_add_sgid(dev, gid); break; case NETDEV_DOWN: - updated = ocrdma_del_sgid(dev, netdev->dev_addr, is_vlan, vid); + updated = ocrdma_del_sgid(dev, gid); break; default: break; @@ -247,6 +163,32 @@ return NOTIFY_OK; } +static int ocrdma_inetaddr_event(struct notifier_block *notifier, + unsigned long event, void *ptr) +{ + struct in_ifaddr *ifa = ptr; + union ib_gid gid; + struct net_device *netdev = ifa->ifa_dev->dev; + + ipv6_addr_set_v4mapped(ifa->ifa_address, (struct in6_addr *)&gid); + return ocrdma_addr_event(event, netdev, &gid); +} + +static struct notifier_block ocrdma_inetaddr_notifier = { + .notifier_call = ocrdma_inetaddr_event +}; + +#if IS_ENABLED(CONFIG_IPV6) + +static int ocrdma_inet6addr_event(struct notifier_block *notifier, + unsigned long event, void *ptr) +{ + struct inet6_ifaddr *ifa = (struct inet6_ifaddr *)ptr; + union ib_gid *gid = (union ib_gid *)&ifa->addr; + struct net_device *netdev = ifa->idev->dev; + return ocrdma_addr_event(event, netdev, gid); +} + static struct notifier_block ocrdma_inet6addr_notifier = { .notifier_call = ocrdma_inet6addr_event }; @@ -423,10 +365,6 @@ if (status) goto alloc_err; - status = ocrdma_build_sgid_tbl(dev); - if (status) - goto alloc_err; - status = ocrdma_register_device(dev); if (status) goto alloc_err; @@ -553,6 +491,10 @@ { int status; + status = register_inetaddr_notifier(&ocrdma_inetaddr_notifier); + if (status) + return status; + #if IS_ENABLED(CONFIG_IPV6) status = register_inet6addr_notifier(&ocrdma_inet6addr_notifier); if (status) --- linux-3.13.0.orig/drivers/infiniband/hw/ocrdma/ocrdma_sli.h +++ linux-3.13.0/drivers/infiniband/hw/ocrdma/ocrdma_sli.h @@ -31,7 +31,7 @@ #define Bit(_b) (1 << (_b)) #define OCRDMA_GEN1_FAMILY 0xB -#define OCRDMA_GEN2_FAMILY 0x2 +#define OCRDMA_GEN2_FAMILY 0x0F #define OCRDMA_SUBSYS_ROCE 10 enum { @@ -1694,7 +1694,7 @@ u16 rsvd; } __packed; -#define OCRDMA_AV_VALID Bit(0) +#define OCRDMA_AV_VALID Bit(7) #define OCRDMA_AV_VLAN_VALID Bit(1) struct ocrdma_av { --- linux-3.13.0.orig/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c +++ linux-3.13.0/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c @@ -176,7 +176,7 @@ props->port_cap_flags = IB_PORT_CM_SUP | IB_PORT_REINIT_SUP | - IB_PORT_DEVICE_MGMT_SUP | IB_PORT_VENDOR_CLASS_SUP; + IB_PORT_DEVICE_MGMT_SUP | IB_PORT_VENDOR_CLASS_SUP | IB_PORT_IP_BASED_GIDS; props->gid_tbl_len = OCRDMA_MAX_SGID; props->pkey_tbl_len = 1; props->bad_pkey_cntr = 0; @@ -1326,7 +1326,8 @@ new_qps = old_qps; spin_unlock_irqrestore(&qp->q_lock, flags); - if (!ib_modify_qp_is_ok(old_qps, new_qps, ibqp->qp_type, attr_mask)) { + if (!ib_modify_qp_is_ok(old_qps, new_qps, ibqp->qp_type, attr_mask, + IB_LINK_LAYER_ETHERNET)) { pr_err("%s(%d) invalid attribute mask=0x%x specified for\n" "qpn=0x%x of type=0x%x old_qps=0x%x, new_qps=0x%x\n", __func__, dev->id, attr_mask, qp->id, ibqp->qp_type, @@ -1415,7 +1416,7 @@ OCRDMA_QP_PARAMS_HOP_LMT_MASK) >> OCRDMA_QP_PARAMS_HOP_LMT_SHIFT; qp_attr->ah_attr.grh.traffic_class = (params.tclass_sq_psn & - OCRDMA_QP_PARAMS_SQ_PSN_MASK) >> + OCRDMA_QP_PARAMS_TCLASS_MASK) >> OCRDMA_QP_PARAMS_TCLASS_SHIFT; qp_attr->ah_attr.ah_flags = IB_AH_GRH; --- linux-3.13.0.orig/drivers/infiniband/hw/qib/qib.h +++ linux-3.13.0/drivers/infiniband/hw/qib/qib.h @@ -1080,12 +1080,6 @@ /* control high-level access to EEPROM */ struct mutex eep_lock; uint64_t traffic_wds; - /* active time is kept in seconds, but logged in hours */ - atomic_t active_time; - /* Below are nominal shadow of EEPROM, new since last EEPROM update */ - uint8_t eep_st_errs[QIB_EEP_LOG_CNT]; - uint8_t eep_st_new_errs[QIB_EEP_LOG_CNT]; - uint16_t eep_hrs; /* * masks for which bits of errs, hwerrs that cause * each of the counters to increment. @@ -1307,8 +1301,7 @@ int qib_twsi_blk_wr(struct qib_devdata *dd, int dev, int addr, const void *buffer, int len); void qib_get_eeprom_info(struct qib_devdata *); -int qib_update_eeprom_log(struct qib_devdata *dd); -void qib_inc_eeprom_err(struct qib_devdata *dd, u32 eidx, u32 incr); +#define qib_inc_eeprom_err(dd, eidx, incr) void qib_dump_lookup_output_queue(struct qib_devdata *); void qib_force_pio_avail_update(struct qib_devdata *); void qib_clear_symerror_on_linkup(unsigned long opaque); --- linux-3.13.0.orig/drivers/infiniband/hw/qib/qib_debugfs.c +++ linux-3.13.0/drivers/infiniband/hw/qib/qib_debugfs.c @@ -193,6 +193,7 @@ struct qib_qp_iter *iter; loff_t n = *pos; + rcu_read_lock(); iter = qib_qp_iter_init(s->private); if (!iter) return NULL; @@ -224,7 +225,7 @@ static void _qp_stats_seq_stop(struct seq_file *s, void *iter_ptr) { - /* nothing for now */ + rcu_read_unlock(); } static int _qp_stats_seq_show(struct seq_file *s, void *iter_ptr) --- linux-3.13.0.orig/drivers/infiniband/hw/qib/qib_eeprom.c +++ linux-3.13.0/drivers/infiniband/hw/qib/qib_eeprom.c @@ -267,190 +267,9 @@ "Board SN %s did not pass functional test: %s\n", dd->serial, ifp->if_comment); - memcpy(&dd->eep_st_errs, &ifp->if_errcntp, QIB_EEP_LOG_CNT); - /* - * Power-on (actually "active") hours are kept as little-endian value - * in EEPROM, but as seconds in a (possibly as small as 24-bit) - * atomic_t while running. - */ - atomic_set(&dd->active_time, 0); - dd->eep_hrs = ifp->if_powerhour[0] | (ifp->if_powerhour[1] << 8); - done: vfree(buf); bail:; } -/** - * qib_update_eeprom_log - copy active-time and error counters to eeprom - * @dd: the qlogic_ib device - * - * Although the time is kept as seconds in the qib_devdata struct, it is - * rounded to hours for re-write, as we have only 16 bits in EEPROM. - * First-cut code reads whole (expected) struct qib_flash, modifies, - * re-writes. Future direction: read/write only what we need, assuming - * that the EEPROM had to have been "good enough" for driver init, and - * if not, we aren't making it worse. - * - */ -int qib_update_eeprom_log(struct qib_devdata *dd) -{ - void *buf; - struct qib_flash *ifp; - int len, hi_water; - uint32_t new_time, new_hrs; - u8 csum; - int ret, idx; - unsigned long flags; - - /* first, check if we actually need to do anything. */ - ret = 0; - for (idx = 0; idx < QIB_EEP_LOG_CNT; ++idx) { - if (dd->eep_st_new_errs[idx]) { - ret = 1; - break; - } - } - new_time = atomic_read(&dd->active_time); - - if (ret == 0 && new_time < 3600) - goto bail; - - /* - * The quick-check above determined that there is something worthy - * of logging, so get current contents and do a more detailed idea. - * read full flash, not just currently used part, since it may have - * been written with a newer definition - */ - len = sizeof(struct qib_flash); - buf = vmalloc(len); - ret = 1; - if (!buf) { - qib_dev_err(dd, - "Couldn't allocate memory to read %u bytes from eeprom for logging\n", - len); - goto bail; - } - - /* Grab semaphore and read current EEPROM. If we get an - * error, let go, but if not, keep it until we finish write. - */ - ret = mutex_lock_interruptible(&dd->eep_lock); - if (ret) { - qib_dev_err(dd, "Unable to acquire EEPROM for logging\n"); - goto free_bail; - } - ret = qib_twsi_blk_rd(dd, dd->twsi_eeprom_dev, 0, buf, len); - if (ret) { - mutex_unlock(&dd->eep_lock); - qib_dev_err(dd, "Unable read EEPROM for logging\n"); - goto free_bail; - } - ifp = (struct qib_flash *)buf; - - csum = flash_csum(ifp, 0); - if (csum != ifp->if_csum) { - mutex_unlock(&dd->eep_lock); - qib_dev_err(dd, "EEPROM cks err (0x%02X, S/B 0x%02X)\n", - csum, ifp->if_csum); - ret = 1; - goto free_bail; - } - hi_water = 0; - spin_lock_irqsave(&dd->eep_st_lock, flags); - for (idx = 0; idx < QIB_EEP_LOG_CNT; ++idx) { - int new_val = dd->eep_st_new_errs[idx]; - if (new_val) { - /* - * If we have seen any errors, add to EEPROM values - * We need to saturate at 0xFF (255) and we also - * would need to adjust the checksum if we were - * trying to minimize EEPROM traffic - * Note that we add to actual current count in EEPROM, - * in case it was altered while we were running. - */ - new_val += ifp->if_errcntp[idx]; - if (new_val > 0xFF) - new_val = 0xFF; - if (ifp->if_errcntp[idx] != new_val) { - ifp->if_errcntp[idx] = new_val; - hi_water = offsetof(struct qib_flash, - if_errcntp) + idx; - } - /* - * update our shadow (used to minimize EEPROM - * traffic), to match what we are about to write. - */ - dd->eep_st_errs[idx] = new_val; - dd->eep_st_new_errs[idx] = 0; - } - } - /* - * Now update active-time. We would like to round to the nearest hour - * but unless atomic_t are sure to be proper signed ints we cannot, - * because we need to account for what we "transfer" to EEPROM and - * if we log an hour at 31 minutes, then we would need to set - * active_time to -29 to accurately count the _next_ hour. - */ - if (new_time >= 3600) { - new_hrs = new_time / 3600; - atomic_sub((new_hrs * 3600), &dd->active_time); - new_hrs += dd->eep_hrs; - if (new_hrs > 0xFFFF) - new_hrs = 0xFFFF; - dd->eep_hrs = new_hrs; - if ((new_hrs & 0xFF) != ifp->if_powerhour[0]) { - ifp->if_powerhour[0] = new_hrs & 0xFF; - hi_water = offsetof(struct qib_flash, if_powerhour); - } - if ((new_hrs >> 8) != ifp->if_powerhour[1]) { - ifp->if_powerhour[1] = new_hrs >> 8; - hi_water = offsetof(struct qib_flash, if_powerhour) + 1; - } - } - /* - * There is a tiny possibility that we could somehow fail to write - * the EEPROM after updating our shadows, but problems from holding - * the spinlock too long are a much bigger issue. - */ - spin_unlock_irqrestore(&dd->eep_st_lock, flags); - if (hi_water) { - /* we made some change to the data, uopdate cksum and write */ - csum = flash_csum(ifp, 1); - ret = eeprom_write_with_enable(dd, 0, buf, hi_water + 1); - } - mutex_unlock(&dd->eep_lock); - if (ret) - qib_dev_err(dd, "Failed updating EEPROM\n"); - -free_bail: - vfree(buf); -bail: - return ret; -} - -/** - * qib_inc_eeprom_err - increment one of the four error counters - * that are logged to EEPROM. - * @dd: the qlogic_ib device - * @eidx: 0..3, the counter to increment - * @incr: how much to add - * - * Each counter is 8-bits, and saturates at 255 (0xFF). They - * are copied to the EEPROM (aka flash) whenever qib_update_eeprom_log() - * is called, but it can only be called in a context that allows sleep. - * This function can be called even at interrupt level. - */ -void qib_inc_eeprom_err(struct qib_devdata *dd, u32 eidx, u32 incr) -{ - uint new_val; - unsigned long flags; - - spin_lock_irqsave(&dd->eep_st_lock, flags); - new_val = dd->eep_st_new_errs[eidx] + incr; - if (new_val > 255) - new_val = 255; - dd->eep_st_new_errs[eidx] = new_val; - spin_unlock_irqrestore(&dd->eep_st_lock, flags); -} --- linux-3.13.0.orig/drivers/infiniband/hw/qib/qib_file_ops.c +++ linux-3.13.0/drivers/infiniband/hw/qib/qib_file_ops.c @@ -45,6 +45,8 @@ #include #include +#include + #include "qib.h" #include "qib_common.h" #include "qib_user_sdma.h" @@ -1578,7 +1580,7 @@ struct qib_ctxtdata *rcd = fd->rcd; struct qib_devdata *dd = rcd->dd; - if (dd->flags & QIB_HAS_SEND_DMA) + if (dd->flags & QIB_HAS_SEND_DMA) { fd->pq = qib_user_sdma_queue_create(&dd->pcidev->dev, dd->unit, @@ -1586,6 +1588,7 @@ fd->subctxt); if (!fd->pq) return -ENOMEM; + } return 0; } @@ -2057,6 +2060,9 @@ ssize_t ret = 0; void *dest; + if (WARN_ON_ONCE(!ib_safe_file_access(fp))) + return -EACCES; + if (count < sizeof(cmd.type)) { ret = -EINVAL; goto bail; --- linux-3.13.0.orig/drivers/infiniband/hw/qib/qib_iba6120.c +++ linux-3.13.0/drivers/infiniband/hw/qib/qib_iba6120.c @@ -2682,8 +2682,6 @@ spin_lock_irqsave(&dd->eep_st_lock, flags); traffic_wds -= dd->traffic_wds; dd->traffic_wds += traffic_wds; - if (traffic_wds >= QIB_TRAFFIC_ACTIVE_THRESHOLD) - atomic_add(5, &dd->active_time); /* S/B #define */ spin_unlock_irqrestore(&dd->eep_st_lock, flags); qib_chk_6120_errormask(dd); --- linux-3.13.0.orig/drivers/infiniband/hw/qib/qib_iba7220.c +++ linux-3.13.0/drivers/infiniband/hw/qib/qib_iba7220.c @@ -3299,8 +3299,6 @@ spin_lock_irqsave(&dd->eep_st_lock, flags); traffic_wds -= dd->traffic_wds; dd->traffic_wds += traffic_wds; - if (traffic_wds >= QIB_TRAFFIC_ACTIVE_THRESHOLD) - atomic_add(5, &dd->active_time); /* S/B #define */ spin_unlock_irqrestore(&dd->eep_st_lock, flags); done: mod_timer(&dd->stats_timer, jiffies + HZ * ACTIVITY_TIMER); --- linux-3.13.0.orig/drivers/infiniband/hw/qib/qib_iba7322.c +++ linux-3.13.0/drivers/infiniband/hw/qib/qib_iba7322.c @@ -2395,6 +2395,11 @@ qib_write_kreg_port(ppd, krp_ibcctrl_a, ppd->cpspec->ibcctrl_a); qib_write_kreg(dd, kr_scratch, 0ULL); + /* ensure previous Tx parameters are not still forced */ + qib_write_kreg_port(ppd, krp_tx_deemph_override, + SYM_MASK(IBSD_TX_DEEMPHASIS_OVERRIDE_0, + reset_tx_deemphasis_override)); + if (qib_compat_ddr_negotiate) { ppd->cpspec->ibdeltainprog = 1; ppd->cpspec->ibsymsnap = read_7322_creg32_port(ppd, @@ -5186,8 +5191,6 @@ spin_lock_irqsave(&ppd->dd->eep_st_lock, flags); traffic_wds -= ppd->dd->traffic_wds; ppd->dd->traffic_wds += traffic_wds; - if (traffic_wds >= QIB_TRAFFIC_ACTIVE_THRESHOLD) - atomic_add(ACTIVITY_TIMER, &ppd->dd->active_time); spin_unlock_irqrestore(&ppd->dd->eep_st_lock, flags); if (ppd->cpspec->qdr_dfe_on && (ppd->link_speed_active & QIB_IB_QDR) && --- linux-3.13.0.orig/drivers/infiniband/hw/qib/qib_init.c +++ linux-3.13.0/drivers/infiniband/hw/qib/qib_init.c @@ -922,7 +922,6 @@ } } - qib_update_eeprom_log(dd); } /** @@ -1097,14 +1096,10 @@ int ret; dd = (struct qib_devdata *) ib_alloc_device(sizeof(*dd) + extra); - if (!dd) { - dd = ERR_PTR(-ENOMEM); - goto bail; - } + if (!dd) + return ERR_PTR(-ENOMEM); -#ifdef CONFIG_DEBUG_FS - qib_dbg_ibdev_init(&dd->verbs_dev); -#endif + INIT_LIST_HEAD(&dd->list); idr_preload(GFP_KERNEL); spin_lock_irqsave(&qib_devs_lock, flags); @@ -1121,11 +1116,6 @@ if (ret < 0) { qib_early_err(&pdev->dev, "Could not allocate unit ID: error %d\n", -ret); -#ifdef CONFIG_DEBUG_FS - qib_dbg_ibdev_exit(&dd->verbs_dev); -#endif - ib_dealloc_device(&dd->verbs_dev.ibdev); - dd = ERR_PTR(ret); goto bail; } @@ -1139,9 +1129,15 @@ qib_early_err(&pdev->dev, "Could not alloc cpulist info, cpu affinity might be wrong\n"); } - -bail: +#ifdef CONFIG_DEBUG_FS + qib_dbg_ibdev_init(&dd->verbs_dev); +#endif return dd; +bail: + if (!list_empty(&dd->list)) + list_del_init(&dd->list); + ib_dealloc_device(&dd->verbs_dev.ibdev); + return ERR_PTR(ret);; } /* --- linux-3.13.0.orig/drivers/infiniband/hw/qib/qib_keys.c +++ linux-3.13.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-3.13.0.orig/drivers/infiniband/hw/qib/qib_mad.c +++ linux-3.13.0/drivers/infiniband/hw/qib/qib_mad.c @@ -1028,7 +1028,7 @@ event.event = IB_EVENT_PKEY_CHANGE; event.device = &dd->verbs_dev.ibdev; - event.element.port_num = 1; + event.element.port_num = port; ib_dispatch_event(&event); } return 0; --- linux-3.13.0.orig/drivers/infiniband/hw/qib/qib_qp.c +++ linux-3.13.0/drivers/infiniband/hw/qib/qib_qp.c @@ -585,7 +585,7 @@ new_state = attr_mask & IB_QP_STATE ? attr->qp_state : cur_state; if (!ib_modify_qp_is_ok(cur_state, new_state, ibqp->qp_type, - attr_mask)) + attr_mask, IB_LINK_LAYER_UNSPECIFIED)) goto inval; if (attr_mask & IB_QP_AV) { @@ -1324,7 +1324,6 @@ struct qib_qp *pqp = iter->qp; struct qib_qp *qp; - rcu_read_lock(); for (; n < dev->qp_table_size; n++) { if (pqp) qp = rcu_dereference(pqp->next); @@ -1332,18 +1331,11 @@ qp = rcu_dereference(dev->qp_table[n]); pqp = qp; if (qp) { - if (iter->qp) - atomic_dec(&iter->qp->refcount); - atomic_inc(&qp->refcount); - rcu_read_unlock(); iter->qp = qp; iter->n = n; return 0; } } - rcu_read_unlock(); - if (iter->qp) - atomic_dec(&iter->qp->refcount); return ret; } --- linux-3.13.0.orig/drivers/infiniband/hw/qib/qib_sysfs.c +++ linux-3.13.0/drivers/infiniband/hw/qib/qib_sysfs.c @@ -611,28 +611,6 @@ return ret < 0 ? ret : count; } -static ssize_t show_logged_errs(struct device *device, - struct device_attribute *attr, char *buf) -{ - struct qib_ibdev *dev = - container_of(device, struct qib_ibdev, ibdev.dev); - struct qib_devdata *dd = dd_from_dev(dev); - int idx, count; - - /* force consistency with actual EEPROM */ - if (qib_update_eeprom_log(dd) != 0) - return -ENXIO; - - count = 0; - for (idx = 0; idx < QIB_EEP_LOG_CNT; ++idx) { - count += scnprintf(buf + count, PAGE_SIZE - count, "%d%c", - dd->eep_st_errs[idx], - idx == (QIB_EEP_LOG_CNT - 1) ? '\n' : ' '); - } - - return count; -} - /* * Dump tempsense regs. in decimal, to ease shell-scripts. */ @@ -679,7 +657,6 @@ static DEVICE_ATTR(nfreectxts, S_IRUGO, show_nfreectxts, NULL); static DEVICE_ATTR(serial, S_IRUGO, show_serial, NULL); static DEVICE_ATTR(boardversion, S_IRUGO, show_boardversion, NULL); -static DEVICE_ATTR(logged_errors, S_IRUGO, show_logged_errs, NULL); static DEVICE_ATTR(tempsense, S_IRUGO, show_tempsense, NULL); static DEVICE_ATTR(localbus_info, S_IRUGO, show_localbus_info, NULL); static DEVICE_ATTR(chip_reset, S_IWUSR, NULL, store_chip_reset); @@ -693,7 +670,6 @@ &dev_attr_nfreectxts, &dev_attr_serial, &dev_attr_boardversion, - &dev_attr_logged_errors, &dev_attr_tempsense, &dev_attr_localbus_info, &dev_attr_chip_reset, --- linux-3.13.0.orig/drivers/infiniband/hw/qib/qib_ud.c +++ linux-3.13.0/drivers/infiniband/hw/qib/qib_ud.c @@ -57,13 +57,20 @@ struct qib_sge *sge; struct ib_wc wc; u32 length; + enum ib_qp_type sqptype, dqptype; qp = qib_lookup_qpn(ibp, swqe->wr.wr.ud.remote_qpn); if (!qp) { ibp->n_pkt_drops++; return; } - if (qp->ibqp.qp_type != sqp->ibqp.qp_type || + + sqptype = sqp->ibqp.qp_type == IB_QPT_GSI ? + IB_QPT_UD : sqp->ibqp.qp_type; + dqptype = qp->ibqp.qp_type == IB_QPT_GSI ? + IB_QPT_UD : qp->ibqp.qp_type; + + if (dqptype != sqptype || !(ib_qib_state_ops[qp->state] & QIB_PROCESS_RECV_OK)) { ibp->n_pkt_drops++; goto drop; --- linux-3.13.0.orig/drivers/infiniband/hw/qib/qib_verbs.c +++ linux-3.13.0/drivers/infiniband/hw/qib/qib_verbs.c @@ -40,6 +40,7 @@ #include #include #include +#include #include "qib.h" #include "qib_common.h" @@ -2086,10 +2087,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; @@ -2262,7 +2269,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: @@ -2316,8 +2323,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-3.13.0.orig/drivers/infiniband/hw/qib/qib_verbs.h +++ linux-3.13.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-3.13.0.orig/drivers/infiniband/hw/qib/qib_verbs_mcast.c +++ linux-3.13.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-3.13.0.orig/drivers/infiniband/hw/usnic/Kconfig +++ linux-3.13.0/drivers/infiniband/hw/usnic/Kconfig @@ -0,0 +1,10 @@ +config INFINIBAND_USNIC + tristate "Verbs support for Cisco VIC" + depends on NETDEVICES && ETHERNET && INET && PCI && INTEL_IOMMU + select ENIC + select NET_VENDOR_CISCO + select PCI_IOV + select INFINIBAND_USER_ACCESS + ---help--- + This is a low-level driver for Cisco's Virtual Interface + Cards (VICs), including the VIC 1240 and 1280 cards. --- linux-3.13.0.orig/drivers/infiniband/hw/usnic/Makefile +++ linux-3.13.0/drivers/infiniband/hw/usnic/Makefile @@ -0,0 +1,15 @@ +ccflags-y := -Idrivers/net/ethernet/cisco/enic + +obj-$(CONFIG_INFINIBAND_USNIC)+= usnic_verbs.o + +usnic_verbs-y=\ +usnic_fwd.o \ +usnic_transport.o \ +usnic_uiom.o \ +usnic_uiom_interval_tree.o \ +usnic_vnic.o \ +usnic_ib_main.o \ +usnic_ib_qp_grp.o \ +usnic_ib_sysfs.o \ +usnic_ib_verbs.o \ +usnic_debugfs.o \ --- linux-3.13.0.orig/drivers/infiniband/hw/usnic/usnic.h +++ linux-3.13.0/drivers/infiniband/hw/usnic/usnic.h @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2013, Cisco Systems, Inc. All rights reserved. + * + * This program is free software; you may 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. + * + * 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. + * + */ + +#ifndef USNIC_H_ +#define USNIC_H_ + +#define DRV_NAME "usnic_verbs" + +#define PCI_DEVICE_ID_CISCO_VIC_USPACE_NIC 0x00cf /* User space NIC */ + +#define DRV_VERSION "1.0.3" +#define DRV_RELDATE "December 19, 2013" + +#endif /* USNIC_H_ */ --- linux-3.13.0.orig/drivers/infiniband/hw/usnic/usnic_abi.h +++ linux-3.13.0/drivers/infiniband/hw/usnic/usnic_abi.h @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2013, Cisco Systems, Inc. All rights reserved. + * + * This program is free software; you may 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. + * + * 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. + * + */ + + +#ifndef USNIC_ABI_H +#define USNIC_ABI_H + +/* ABI between userspace and kernel */ +#define USNIC_UVERBS_ABI_VERSION 4 + +#define USNIC_QP_GRP_MAX_WQS 8 +#define USNIC_QP_GRP_MAX_RQS 8 +#define USNIC_QP_GRP_MAX_CQS 16 + +enum usnic_transport_type { + USNIC_TRANSPORT_UNKNOWN = 0, + USNIC_TRANSPORT_ROCE_CUSTOM = 1, + USNIC_TRANSPORT_IPV4_UDP = 2, + USNIC_TRANSPORT_MAX = 3, +}; + +struct usnic_transport_spec { + enum usnic_transport_type trans_type; + union { + struct { + uint16_t port_num; + } usnic_roce; + struct { + uint32_t sock_fd; + } udp; + }; +}; + +struct usnic_ib_create_qp_cmd { + struct usnic_transport_spec spec; +}; + +/*TODO: Future - usnic_modify_qp needs to pass in generic filters */ +struct usnic_ib_create_qp_resp { + u32 vfid; + u32 qp_grp_id; + u64 bar_bus_addr; + u32 bar_len; +/* + * WQ, RQ, CQ are explicity specified bc exposing a generic resources inteface + * expands the scope of ABI to many files. + */ + u32 wq_cnt; + u32 rq_cnt; + u32 cq_cnt; + u32 wq_idx[USNIC_QP_GRP_MAX_WQS]; + u32 rq_idx[USNIC_QP_GRP_MAX_RQS]; + u32 cq_idx[USNIC_QP_GRP_MAX_CQS]; + u32 transport; + u32 reserved[9]; +}; + +#endif /* USNIC_ABI_H */ --- linux-3.13.0.orig/drivers/infiniband/hw/usnic/usnic_common_pkt_hdr.h +++ linux-3.13.0/drivers/infiniband/hw/usnic/usnic_common_pkt_hdr.h @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2013, Cisco Systems, Inc. All rights reserved. + * + * This program is free software; you may 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. + * + * 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. + * + */ + +#ifndef USNIC_CMN_PKT_HDR_H +#define USNIC_CMN_PKT_HDR_H + +#define USNIC_ROCE_ETHERTYPE (0x8915) +#define USNIC_ROCE_GRH_VER (8) +#define USNIC_PROTO_VER (1) +#define USNIC_ROCE_GRH_VER_SHIFT (4) + +#endif /* USNIC_COMMON_PKT_HDR_H */ --- linux-3.13.0.orig/drivers/infiniband/hw/usnic/usnic_common_util.h +++ linux-3.13.0/drivers/infiniband/hw/usnic/usnic_common_util.h @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2013, Cisco Systems, Inc. All rights reserved. + * + * This program is free software; you may 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. + * + * 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. + * + */ + +#ifndef USNIC_CMN_UTIL_H +#define USNIC_CMN_UTIL_H + +static inline void +usnic_mac_to_gid(const char *const mac, char *raw_gid) +{ + raw_gid[0] = 0xfe; + raw_gid[1] = 0x80; + memset(&raw_gid[2], 0, 6); + raw_gid[8] = mac[0]^2; + raw_gid[9] = mac[1]; + raw_gid[10] = mac[2]; + raw_gid[11] = 0xff; + raw_gid[12] = 0xfe; + raw_gid[13] = mac[3]; + raw_gid[14] = mac[4]; + raw_gid[15] = mac[5]; +} + +static inline void +usnic_mac_ip_to_gid(const char *const mac, const __be32 inaddr, char *raw_gid) +{ + raw_gid[0] = 0xfe; + raw_gid[1] = 0x80; + memset(&raw_gid[2], 0, 2); + memcpy(&raw_gid[4], &inaddr, 4); + raw_gid[8] = mac[0]^2; + raw_gid[9] = mac[1]; + raw_gid[10] = mac[2]; + raw_gid[11] = 0xff; + raw_gid[12] = 0xfe; + raw_gid[13] = mac[3]; + raw_gid[14] = mac[4]; + raw_gid[15] = mac[5]; +} + +static inline void +usnic_write_gid_if_id_from_mac(char *mac, char *raw_gid) +{ + raw_gid[8] = mac[0]^2; + raw_gid[9] = mac[1]; + raw_gid[10] = mac[2]; + raw_gid[11] = 0xff; + raw_gid[12] = 0xfe; + raw_gid[13] = mac[3]; + raw_gid[14] = mac[4]; + raw_gid[15] = mac[5]; +} + +#endif /* USNIC_COMMON_UTIL_H */ --- linux-3.13.0.orig/drivers/infiniband/hw/usnic/usnic_debugfs.c +++ linux-3.13.0/drivers/infiniband/hw/usnic/usnic_debugfs.c @@ -0,0 +1,154 @@ +/* + * Copyright (c) 2013, Cisco Systems, Inc. All rights reserved. + * + * This program is free software; you may 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. + * + * 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 "usnic.h" +#include "usnic_log.h" +#include "usnic_debugfs.h" +#include "usnic_ib_qp_grp.h" +#include "usnic_transport.h" + +static struct dentry *debugfs_root; +static struct dentry *flows_dentry; + +static ssize_t usnic_debugfs_buildinfo_read(struct file *f, char __user *data, + size_t count, loff_t *ppos) +{ + char buf[500]; + int res; + + if (*ppos > 0) + return 0; + + res = scnprintf(buf, sizeof(buf), + "version: %s\n" + "build date: %s\n", + DRV_VERSION, DRV_RELDATE); + + return simple_read_from_buffer(data, count, ppos, buf, res); +} + +static const struct file_operations usnic_debugfs_buildinfo_ops = { + .owner = THIS_MODULE, + .open = simple_open, + .read = usnic_debugfs_buildinfo_read +}; + +static ssize_t flowinfo_read(struct file *f, char __user *data, + size_t count, loff_t *ppos) +{ + struct usnic_ib_qp_grp_flow *qp_flow; + int n; + int left; + char *ptr; + char buf[512]; + + qp_flow = f->private_data; + ptr = buf; + left = count; + + if (*ppos > 0) + return 0; + + spin_lock(&qp_flow->qp_grp->lock); + n = scnprintf(ptr, left, + "QP Grp ID: %d Transport: %s ", + qp_flow->qp_grp->grp_id, + usnic_transport_to_str(qp_flow->trans_type)); + UPDATE_PTR_LEFT(n, ptr, left); + if (qp_flow->trans_type == USNIC_TRANSPORT_ROCE_CUSTOM) { + n = scnprintf(ptr, left, "Port_Num:%hu\n", + qp_flow->usnic_roce.port_num); + UPDATE_PTR_LEFT(n, ptr, left); + } else if (qp_flow->trans_type == USNIC_TRANSPORT_IPV4_UDP) { + n = usnic_transport_sock_to_str(ptr, left, + qp_flow->udp.sock); + UPDATE_PTR_LEFT(n, ptr, left); + n = scnprintf(ptr, left, "\n"); + UPDATE_PTR_LEFT(n, ptr, left); + } + spin_unlock(&qp_flow->qp_grp->lock); + + return simple_read_from_buffer(data, count, ppos, buf, ptr - buf); +} + +static const struct file_operations flowinfo_ops = { + .owner = THIS_MODULE, + .open = simple_open, + .read = flowinfo_read, +}; + +void usnic_debugfs_init(void) +{ + debugfs_root = debugfs_create_dir(DRV_NAME, NULL); + if (IS_ERR(debugfs_root)) { + usnic_err("Failed to create debugfs root dir, check if debugfs is enabled in kernel configuration\n"); + goto out_clear_root; + } + + flows_dentry = debugfs_create_dir("flows", debugfs_root); + if (IS_ERR_OR_NULL(flows_dentry)) { + usnic_err("Failed to create debugfs flow dir with err %ld\n", + PTR_ERR(flows_dentry)); + goto out_free_root; + } + + debugfs_create_file("build-info", S_IRUGO, debugfs_root, + NULL, &usnic_debugfs_buildinfo_ops); + return; + +out_free_root: + debugfs_remove_recursive(debugfs_root); +out_clear_root: + debugfs_root = NULL; +} + +void usnic_debugfs_exit(void) +{ + if (!debugfs_root) + return; + + debugfs_remove_recursive(debugfs_root); + debugfs_root = NULL; +} + +void usnic_debugfs_flow_add(struct usnic_ib_qp_grp_flow *qp_flow) +{ + if (IS_ERR_OR_NULL(flows_dentry)) + return; + + scnprintf(qp_flow->dentry_name, sizeof(qp_flow->dentry_name), + "%u", qp_flow->flow->flow_id); + qp_flow->dbgfs_dentry = debugfs_create_file(qp_flow->dentry_name, + S_IRUGO, + flows_dentry, + qp_flow, + &flowinfo_ops); + if (IS_ERR_OR_NULL(qp_flow->dbgfs_dentry)) { + usnic_err("Failed to create dbg fs entry for flow %u\n", + qp_flow->flow->flow_id); + } +} + +void usnic_debugfs_flow_remove(struct usnic_ib_qp_grp_flow *qp_flow) +{ + if (!IS_ERR_OR_NULL(qp_flow->dbgfs_dentry)) + debugfs_remove(qp_flow->dbgfs_dentry); +} --- linux-3.13.0.orig/drivers/infiniband/hw/usnic/usnic_debugfs.h +++ linux-3.13.0/drivers/infiniband/hw/usnic/usnic_debugfs.h @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2013, Cisco Systems, Inc. All rights reserved. + * + * This program is free software; you may 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. + * + * 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. + * + */ +#ifndef USNIC_DEBUGFS_H_ +#define USNIC_DEBUGFS_H_ + +#include "usnic_ib_qp_grp.h" + +void usnic_debugfs_init(void); + +void usnic_debugfs_exit(void); +void usnic_debugfs_flow_add(struct usnic_ib_qp_grp_flow *qp_flow); +void usnic_debugfs_flow_remove(struct usnic_ib_qp_grp_flow *qp_flow); + +#endif /*!USNIC_DEBUGFS_H_ */ --- linux-3.13.0.orig/drivers/infiniband/hw/usnic/usnic_fwd.c +++ linux-3.13.0/drivers/infiniband/hw/usnic/usnic_fwd.c @@ -0,0 +1,350 @@ +/* + * Copyright (c) 2013, Cisco Systems, Inc. All rights reserved. + * + * This program is free software; you may 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. + * + * 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 "enic_api.h" +#include "usnic_common_pkt_hdr.h" +#include "usnic_fwd.h" +#include "usnic_log.h" + +static int usnic_fwd_devcmd_locked(struct usnic_fwd_dev *ufdev, int vnic_idx, + enum vnic_devcmd_cmd cmd, u64 *a0, + u64 *a1) +{ + int status; + struct net_device *netdev = ufdev->netdev; + + lockdep_assert_held(&ufdev->lock); + + status = enic_api_devcmd_proxy_by_index(netdev, + vnic_idx, + cmd, + a0, a1, + 1000); + if (status) { + if (status == ERR_EINVAL && cmd == CMD_DEL_FILTER) { + usnic_dbg("Dev %s vnic idx %u cmd %u already deleted", + ufdev->name, vnic_idx, cmd); + } else { + usnic_err("Dev %s vnic idx %u cmd %u failed with status %d\n", + ufdev->name, vnic_idx, cmd, + status); + } + } else { + usnic_dbg("Dev %s vnic idx %u cmd %u success", + ufdev->name, vnic_idx, cmd); + } + + return status; +} + +static int usnic_fwd_devcmd(struct usnic_fwd_dev *ufdev, int vnic_idx, + enum vnic_devcmd_cmd cmd, u64 *a0, u64 *a1) +{ + int status; + + spin_lock(&ufdev->lock); + status = usnic_fwd_devcmd_locked(ufdev, vnic_idx, cmd, a0, a1); + spin_unlock(&ufdev->lock); + + return status; +} + +struct usnic_fwd_dev *usnic_fwd_dev_alloc(struct pci_dev *pdev) +{ + struct usnic_fwd_dev *ufdev; + + ufdev = kzalloc(sizeof(*ufdev), GFP_KERNEL); + if (!ufdev) + return NULL; + + ufdev->pdev = pdev; + ufdev->netdev = pci_get_drvdata(pdev); + spin_lock_init(&ufdev->lock); + strncpy(ufdev->name, netdev_name(ufdev->netdev), + sizeof(ufdev->name) - 1); + + return ufdev; +} + +void usnic_fwd_dev_free(struct usnic_fwd_dev *ufdev) +{ + kfree(ufdev); +} + +void usnic_fwd_set_mac(struct usnic_fwd_dev *ufdev, char mac[ETH_ALEN]) +{ + spin_lock(&ufdev->lock); + memcpy(&ufdev->mac, mac, sizeof(ufdev->mac)); + spin_unlock(&ufdev->lock); +} + +int usnic_fwd_add_ipaddr(struct usnic_fwd_dev *ufdev, __be32 inaddr) +{ + int status; + + spin_lock(&ufdev->lock); + if (ufdev->inaddr == 0) { + ufdev->inaddr = inaddr; + status = 0; + } else { + status = -EFAULT; + } + spin_unlock(&ufdev->lock); + + return status; +} + +void usnic_fwd_del_ipaddr(struct usnic_fwd_dev *ufdev) +{ + spin_lock(&ufdev->lock); + ufdev->inaddr = 0; + spin_unlock(&ufdev->lock); +} + +void usnic_fwd_carrier_up(struct usnic_fwd_dev *ufdev) +{ + spin_lock(&ufdev->lock); + ufdev->link_up = 1; + spin_unlock(&ufdev->lock); +} + +void usnic_fwd_carrier_down(struct usnic_fwd_dev *ufdev) +{ + spin_lock(&ufdev->lock); + ufdev->link_up = 0; + spin_unlock(&ufdev->lock); +} + +void usnic_fwd_set_mtu(struct usnic_fwd_dev *ufdev, unsigned int mtu) +{ + spin_lock(&ufdev->lock); + ufdev->mtu = mtu; + spin_unlock(&ufdev->lock); +} + +static int usnic_fwd_dev_ready_locked(struct usnic_fwd_dev *ufdev) +{ + lockdep_assert_held(&ufdev->lock); + + if (!ufdev->link_up) + return -EPERM; + + return 0; +} + +static int validate_filter_locked(struct usnic_fwd_dev *ufdev, + struct filter *filter) +{ + + lockdep_assert_held(&ufdev->lock); + + if (filter->type == FILTER_IPV4_5TUPLE) { + if (!(filter->u.ipv4.flags & FILTER_FIELD_5TUP_DST_AD)) + return -EACCES; + if (!(filter->u.ipv4.flags & FILTER_FIELD_5TUP_DST_PT)) + return -EBUSY; + else if (ufdev->inaddr == 0) + return -EINVAL; + else if (filter->u.ipv4.dst_port == 0) + return -ERANGE; + else if (ntohl(ufdev->inaddr) != filter->u.ipv4.dst_addr) + return -EFAULT; + else + return 0; + } + + return 0; +} + +static void fill_tlv(struct filter_tlv *tlv, struct filter *filter, + struct filter_action *action) +{ + tlv->type = CLSF_TLV_FILTER; + tlv->length = sizeof(struct filter); + *((struct filter *)&tlv->val) = *filter; + + tlv = (struct filter_tlv *)((char *)tlv + sizeof(struct filter_tlv) + + sizeof(struct filter)); + tlv->type = CLSF_TLV_ACTION; + tlv->length = sizeof(struct filter_action); + *((struct filter_action *)&tlv->val) = *action; +} + +struct usnic_fwd_flow* +usnic_fwd_alloc_flow(struct usnic_fwd_dev *ufdev, struct filter *filter, + struct usnic_filter_action *uaction) +{ + struct filter_tlv *tlv; + struct pci_dev *pdev; + struct usnic_fwd_flow *flow; + uint64_t a0, a1; + uint64_t tlv_size; + dma_addr_t tlv_pa; + int status; + + pdev = ufdev->pdev; + tlv_size = (2*sizeof(struct filter_tlv) + sizeof(struct filter) + + sizeof(struct filter_action)); + + flow = kzalloc(sizeof(*flow), GFP_ATOMIC); + if (!flow) + return ERR_PTR(-ENOMEM); + + tlv = pci_alloc_consistent(pdev, tlv_size, &tlv_pa); + if (!tlv) { + usnic_err("Failed to allocate memory\n"); + status = -ENOMEM; + goto out_free_flow; + } + + fill_tlv(tlv, filter, &uaction->action); + + spin_lock(&ufdev->lock); + status = usnic_fwd_dev_ready_locked(ufdev); + if (status) { + usnic_err("Forwarding dev %s not ready with status %d\n", + ufdev->name, status); + goto out_free_tlv; + } + + status = validate_filter_locked(ufdev, filter); + if (status) { + usnic_err("Failed to validate filter with status %d\n", + status); + goto out_free_tlv; + } + + /* Issue Devcmd */ + a0 = tlv_pa; + a1 = tlv_size; + status = usnic_fwd_devcmd_locked(ufdev, uaction->vnic_idx, + CMD_ADD_FILTER, &a0, &a1); + if (status) { + usnic_err("VF %s Filter add failed with status:%d", + ufdev->name, status); + status = -EFAULT; + goto out_free_tlv; + } else { + usnic_dbg("VF %s FILTER ID:%llu", ufdev->name, a0); + } + + flow->flow_id = (uint32_t) a0; + flow->vnic_idx = uaction->vnic_idx; + flow->ufdev = ufdev; + +out_free_tlv: + spin_unlock(&ufdev->lock); + pci_free_consistent(pdev, tlv_size, tlv, tlv_pa); + if (!status) + return flow; +out_free_flow: + kfree(flow); + return ERR_PTR(status); +} + +int usnic_fwd_dealloc_flow(struct usnic_fwd_flow *flow) +{ + int status; + u64 a0, a1; + + a0 = flow->flow_id; + + status = usnic_fwd_devcmd(flow->ufdev, flow->vnic_idx, + CMD_DEL_FILTER, &a0, &a1); + if (status) { + if (status == ERR_EINVAL) { + usnic_dbg("Filter %u already deleted for VF Idx %u pf: %s status: %d", + flow->flow_id, flow->vnic_idx, + flow->ufdev->name, status); + } else { + usnic_err("PF %s VF Idx %u Filter: %u FILTER DELETE failed with status %d", + flow->ufdev->name, flow->vnic_idx, + flow->flow_id, status); + } + status = 0; + /* + * Log the error and fake success to the caller because if + * a flow fails to be deleted in the firmware, it is an + * unrecoverable error. + */ + } else { + usnic_dbg("PF %s VF Idx %u Filter: %u FILTER DELETED", + flow->ufdev->name, flow->vnic_idx, + flow->flow_id); + } + + kfree(flow); + return status; +} + +int usnic_fwd_enable_qp(struct usnic_fwd_dev *ufdev, int vnic_idx, int qp_idx) +{ + int status; + struct net_device *pf_netdev; + u64 a0, a1; + + pf_netdev = ufdev->netdev; + a0 = qp_idx; + a1 = CMD_QP_RQWQ; + + status = usnic_fwd_devcmd(ufdev, vnic_idx, CMD_QP_ENABLE, + &a0, &a1); + if (status) { + usnic_err("PF %s VNIC Index %u RQ Index: %u ENABLE Failed with status %d", + netdev_name(pf_netdev), + vnic_idx, + qp_idx, + status); + } else { + usnic_dbg("PF %s VNIC Index %u RQ Index: %u ENABLED", + netdev_name(pf_netdev), + vnic_idx, qp_idx); + } + + return status; +} + +int usnic_fwd_disable_qp(struct usnic_fwd_dev *ufdev, int vnic_idx, int qp_idx) +{ + int status; + u64 a0, a1; + struct net_device *pf_netdev; + + pf_netdev = ufdev->netdev; + a0 = qp_idx; + a1 = CMD_QP_RQWQ; + + status = usnic_fwd_devcmd(ufdev, vnic_idx, CMD_QP_DISABLE, + &a0, &a1); + if (status) { + usnic_err("PF %s VNIC Index %u RQ Index: %u DISABLE Failed with status %d", + netdev_name(pf_netdev), + vnic_idx, + qp_idx, + status); + } else { + usnic_dbg("PF %s VNIC Index %u RQ Index: %u DISABLED", + netdev_name(pf_netdev), + vnic_idx, + qp_idx); + } + + return status; +} --- linux-3.13.0.orig/drivers/infiniband/hw/usnic/usnic_fwd.h +++ linux-3.13.0/drivers/infiniband/hw/usnic/usnic_fwd.h @@ -0,0 +1,113 @@ +/* + * Copyright (c) 2013, Cisco Systems, Inc. All rights reserved. + * + * This program is free software; you may 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. + * + * 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. + * + */ + +#ifndef USNIC_FWD_H_ +#define USNIC_FWD_H_ + +#include +#include +#include +#include + +#include "usnic_abi.h" +#include "usnic_common_pkt_hdr.h" +#include "vnic_devcmd.h" + +struct usnic_fwd_dev { + struct pci_dev *pdev; + struct net_device *netdev; + spinlock_t lock; + /* + * The following fields can be read directly off the device. + * However, they should be set by a accessor function, except name, + * which cannot be changed. + */ + bool link_up; + char mac[ETH_ALEN]; + unsigned int mtu; + __be32 inaddr; + char name[IFNAMSIZ+1]; +}; + +struct usnic_fwd_flow { + uint32_t flow_id; + struct usnic_fwd_dev *ufdev; + unsigned int vnic_idx; +}; + +struct usnic_filter_action { + int vnic_idx; + struct filter_action action; +}; + +struct usnic_fwd_dev *usnic_fwd_dev_alloc(struct pci_dev *pdev); +void usnic_fwd_dev_free(struct usnic_fwd_dev *ufdev); + +void usnic_fwd_set_mac(struct usnic_fwd_dev *ufdev, char mac[ETH_ALEN]); +int usnic_fwd_add_ipaddr(struct usnic_fwd_dev *ufdev, __be32 inaddr); +void usnic_fwd_del_ipaddr(struct usnic_fwd_dev *ufdev); +void usnic_fwd_carrier_up(struct usnic_fwd_dev *ufdev); +void usnic_fwd_carrier_down(struct usnic_fwd_dev *ufdev); +void usnic_fwd_set_mtu(struct usnic_fwd_dev *ufdev, unsigned int mtu); + +/* + * Allocate a flow on this forwarding device. Whoever calls this function, + * must monitor netdev events on ufdev's netdevice. If NETDEV_REBOOT or + * NETDEV_DOWN is seen, flow will no longer function and must be + * immediately freed by calling usnic_dealloc_flow. + */ +struct usnic_fwd_flow* +usnic_fwd_alloc_flow(struct usnic_fwd_dev *ufdev, struct filter *filter, + struct usnic_filter_action *action); +int usnic_fwd_dealloc_flow(struct usnic_fwd_flow *flow); +int usnic_fwd_enable_qp(struct usnic_fwd_dev *ufdev, int vnic_idx, int qp_idx); +int usnic_fwd_disable_qp(struct usnic_fwd_dev *ufdev, int vnic_idx, int qp_idx); + +static inline void usnic_fwd_init_usnic_filter(struct filter *filter, + uint32_t usnic_id) +{ + filter->type = FILTER_USNIC_ID; + filter->u.usnic.ethtype = USNIC_ROCE_ETHERTYPE; + filter->u.usnic.flags = FILTER_FIELD_USNIC_ETHTYPE | + FILTER_FIELD_USNIC_ID | + FILTER_FIELD_USNIC_PROTO; + filter->u.usnic.proto_version = (USNIC_ROCE_GRH_VER << + USNIC_ROCE_GRH_VER_SHIFT) | + USNIC_PROTO_VER; + filter->u.usnic.usnic_id = usnic_id; +} + +static inline void usnic_fwd_init_udp_filter(struct filter *filter, + uint32_t daddr, uint16_t dport) +{ + filter->type = FILTER_IPV4_5TUPLE; + filter->u.ipv4.flags = FILTER_FIELD_5TUP_PROTO; + filter->u.ipv4.protocol = PROTO_UDP; + + if (daddr) { + filter->u.ipv4.flags |= FILTER_FIELD_5TUP_DST_AD; + filter->u.ipv4.dst_addr = daddr; + } + + if (dport) { + filter->u.ipv4.flags |= FILTER_FIELD_5TUP_DST_PT; + filter->u.ipv4.dst_port = dport; + } +} + +#endif /* !USNIC_FWD_H_ */ --- linux-3.13.0.orig/drivers/infiniband/hw/usnic/usnic_ib.h +++ linux-3.13.0/drivers/infiniband/hw/usnic/usnic_ib.h @@ -0,0 +1,118 @@ +/* + * Copyright (c) 2013, Cisco Systems, Inc. All rights reserved. + * + * This program is free software; you may 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. + * + * 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. + * + */ + +#ifndef USNIC_IB_H_ +#define USNIC_IB_H_ + +#include +#include + +#include + + +#include "usnic.h" +#include "usnic_abi.h" +#include "usnic_vnic.h" + +#define USNIC_IB_PORT_CNT 1 +#define USNIC_IB_NUM_COMP_VECTORS 1 + +extern unsigned int usnic_ib_share_vf; + +struct usnic_ib_ucontext { + struct ib_ucontext ibucontext; + /* Protected by usnic_ib_dev->usdev_lock */ + struct list_head qp_grp_list; + struct list_head link; +}; + +struct usnic_ib_pd { + struct ib_pd ibpd; + struct usnic_uiom_pd *umem_pd; +}; + +struct usnic_ib_mr { + struct ib_mr ibmr; + struct usnic_uiom_reg *umem; +}; + +struct usnic_ib_dev { + struct ib_device ib_dev; + struct pci_dev *pdev; + struct net_device *netdev; + struct usnic_fwd_dev *ufdev; + struct list_head ib_dev_link; + struct list_head vf_dev_list; + struct list_head ctx_list; + struct mutex usdev_lock; + + /* provisioning information */ + struct kref vf_cnt; + unsigned int vf_res_cnt[USNIC_VNIC_RES_TYPE_MAX]; + + /* sysfs vars for QPN reporting */ + struct kobject *qpn_kobj; +}; + +struct usnic_ib_vf { + struct usnic_ib_dev *pf; + spinlock_t lock; + struct usnic_vnic *vnic; + unsigned int qp_grp_ref_cnt; + struct usnic_ib_pd *pd; + struct list_head link; +}; + +static inline +struct usnic_ib_dev *to_usdev(struct ib_device *ibdev) +{ + return container_of(ibdev, struct usnic_ib_dev, ib_dev); +} + +static inline +struct usnic_ib_ucontext *to_ucontext(struct ib_ucontext *ibucontext) +{ + return container_of(ibucontext, struct usnic_ib_ucontext, ibucontext); +} + +static inline +struct usnic_ib_pd *to_upd(struct ib_pd *ibpd) +{ + return container_of(ibpd, struct usnic_ib_pd, ibpd); +} + +static inline +struct usnic_ib_ucontext *to_uucontext(struct ib_ucontext *ibucontext) +{ + return container_of(ibucontext, struct usnic_ib_ucontext, ibucontext); +} + +static inline +struct usnic_ib_mr *to_umr(struct ib_mr *ibmr) +{ + return container_of(ibmr, struct usnic_ib_mr, ibmr); +} +void usnic_ib_log_vf(struct usnic_ib_vf *vf); + +#define UPDATE_PTR_LEFT(N, P, L) \ +do { \ + L -= (N); \ + P += (N); \ +} while (0) + +#endif /* USNIC_IB_H_ */ --- linux-3.13.0.orig/drivers/infiniband/hw/usnic/usnic_ib_main.c +++ linux-3.13.0/drivers/infiniband/hw/usnic/usnic_ib_main.c @@ -0,0 +1,682 @@ +/* + * Copyright (c) 2013, Cisco Systems, Inc. All rights reserved. + * + * This program is free software; you may 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. + * + * 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. + * + * Author: Upinder Malhi + * Author: Anant Deepak + * Author: Cesare Cantu' + * Author: Jeff Squyres + * Author: Kiran Thirumalai + * Author: Xuyang Wang + * Author: Reese Faucette + * + */ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "usnic_abi.h" +#include "usnic_common_util.h" +#include "usnic_ib.h" +#include "usnic_ib_qp_grp.h" +#include "usnic_log.h" +#include "usnic_fwd.h" +#include "usnic_debugfs.h" +#include "usnic_ib_verbs.h" +#include "usnic_transport.h" +#include "usnic_uiom.h" +#include "usnic_ib_sysfs.h" + +unsigned int usnic_log_lvl = USNIC_LOG_LVL_ERR; +unsigned int usnic_ib_share_vf = 1; + +static const char usnic_version[] = + DRV_NAME ": Cisco VIC (USNIC) Verbs Driver v" + DRV_VERSION " (" DRV_RELDATE ")\n"; + +static DEFINE_MUTEX(usnic_ib_ibdev_list_lock); +static LIST_HEAD(usnic_ib_ibdev_list); + +/* Callback dump funcs */ +static int usnic_ib_dump_vf_hdr(void *obj, char *buf, int buf_sz) +{ + struct usnic_ib_vf *vf = obj; + return scnprintf(buf, buf_sz, "PF: %s ", vf->pf->ib_dev.name); +} +/* End callback dump funcs */ + +static void usnic_ib_dump_vf(struct usnic_ib_vf *vf, char *buf, int buf_sz) +{ + usnic_vnic_dump(vf->vnic, buf, buf_sz, vf, + usnic_ib_dump_vf_hdr, + usnic_ib_qp_grp_dump_hdr, usnic_ib_qp_grp_dump_rows); +} + +void usnic_ib_log_vf(struct usnic_ib_vf *vf) +{ + char buf[1000]; + usnic_ib_dump_vf(vf, buf, sizeof(buf)); + usnic_dbg("%s\n", buf); +} + +/* Start of netdev section */ +static inline const char *usnic_ib_netdev_event_to_string(unsigned long event) +{ + const char *event2str[] = {"NETDEV_NONE", "NETDEV_UP", "NETDEV_DOWN", + "NETDEV_REBOOT", "NETDEV_CHANGE", + "NETDEV_REGISTER", "NETDEV_UNREGISTER", "NETDEV_CHANGEMTU", + "NETDEV_CHANGEADDR", "NETDEV_GOING_DOWN", "NETDEV_FEAT_CHANGE", + "NETDEV_BONDING_FAILOVER", "NETDEV_PRE_UP", + "NETDEV_PRE_TYPE_CHANGE", "NETDEV_POST_TYPE_CHANGE", + "NETDEV_POST_INT", "NETDEV_UNREGISTER_FINAL", "NETDEV_RELEASE", + "NETDEV_NOTIFY_PEERS", "NETDEV_JOIN" + }; + + if (event >= ARRAY_SIZE(event2str)) + return "UNKNOWN_NETDEV_EVENT"; + else + return event2str[event]; +} + +static void usnic_ib_qp_grp_modify_active_to_err(struct usnic_ib_dev *us_ibdev) +{ + struct usnic_ib_ucontext *ctx; + struct usnic_ib_qp_grp *qp_grp; + enum ib_qp_state cur_state; + int status; + + BUG_ON(!mutex_is_locked(&us_ibdev->usdev_lock)); + + list_for_each_entry(ctx, &us_ibdev->ctx_list, link) { + list_for_each_entry(qp_grp, &ctx->qp_grp_list, link) { + cur_state = qp_grp->state; + if (cur_state == IB_QPS_INIT || + cur_state == IB_QPS_RTR || + cur_state == IB_QPS_RTS) { + status = usnic_ib_qp_grp_modify(qp_grp, + IB_QPS_ERR, + NULL); + if (status) { + usnic_err("Failed to transistion qp grp %u from %s to %s\n", + qp_grp->grp_id, + usnic_ib_qp_grp_state_to_string + (cur_state), + usnic_ib_qp_grp_state_to_string + (IB_QPS_ERR)); + } + } + } + } +} + +static void usnic_ib_handle_usdev_event(struct usnic_ib_dev *us_ibdev, + unsigned long event) +{ + struct net_device *netdev; + struct ib_event ib_event; + + memset(&ib_event, 0, sizeof(ib_event)); + + mutex_lock(&us_ibdev->usdev_lock); + netdev = us_ibdev->netdev; + switch (event) { + case NETDEV_REBOOT: + usnic_info("PF Reset on %s\n", us_ibdev->ib_dev.name); + usnic_ib_qp_grp_modify_active_to_err(us_ibdev); + ib_event.event = IB_EVENT_PORT_ERR; + ib_event.device = &us_ibdev->ib_dev; + ib_event.element.port_num = 1; + ib_dispatch_event(&ib_event); + break; + case NETDEV_UP: + case NETDEV_DOWN: + case NETDEV_CHANGE: + if (!us_ibdev->ufdev->link_up && + netif_carrier_ok(netdev)) { + usnic_fwd_carrier_up(us_ibdev->ufdev); + usnic_info("Link UP on %s\n", us_ibdev->ib_dev.name); + ib_event.event = IB_EVENT_PORT_ACTIVE; + ib_event.device = &us_ibdev->ib_dev; + ib_event.element.port_num = 1; + ib_dispatch_event(&ib_event); + } else if (us_ibdev->ufdev->link_up && + !netif_carrier_ok(netdev)) { + usnic_fwd_carrier_down(us_ibdev->ufdev); + usnic_info("Link DOWN on %s\n", us_ibdev->ib_dev.name); + usnic_ib_qp_grp_modify_active_to_err(us_ibdev); + ib_event.event = IB_EVENT_PORT_ERR; + ib_event.device = &us_ibdev->ib_dev; + ib_event.element.port_num = 1; + ib_dispatch_event(&ib_event); + } else { + usnic_dbg("Ignoring %s on %s\n", + usnic_ib_netdev_event_to_string(event), + us_ibdev->ib_dev.name); + } + break; + case NETDEV_CHANGEADDR: + if (!memcmp(us_ibdev->ufdev->mac, netdev->dev_addr, + sizeof(us_ibdev->ufdev->mac))) { + usnic_dbg("Ignoring addr change on %s\n", + us_ibdev->ib_dev.name); + } else { + usnic_info(" %s old mac: %pM new mac: %pM\n", + us_ibdev->ib_dev.name, + us_ibdev->ufdev->mac, + netdev->dev_addr); + usnic_fwd_set_mac(us_ibdev->ufdev, netdev->dev_addr); + usnic_ib_qp_grp_modify_active_to_err(us_ibdev); + ib_event.event = IB_EVENT_GID_CHANGE; + ib_event.device = &us_ibdev->ib_dev; + ib_event.element.port_num = 1; + ib_dispatch_event(&ib_event); + } + + break; + case NETDEV_CHANGEMTU: + if (us_ibdev->ufdev->mtu != netdev->mtu) { + usnic_info("MTU Change on %s old: %u new: %u\n", + us_ibdev->ib_dev.name, + us_ibdev->ufdev->mtu, netdev->mtu); + usnic_fwd_set_mtu(us_ibdev->ufdev, netdev->mtu); + usnic_ib_qp_grp_modify_active_to_err(us_ibdev); + } else { + usnic_dbg("Ignoring MTU change on %s\n", + us_ibdev->ib_dev.name); + } + break; + default: + usnic_dbg("Ignoring event %s on %s", + usnic_ib_netdev_event_to_string(event), + us_ibdev->ib_dev.name); + } + mutex_unlock(&us_ibdev->usdev_lock); +} + +static int usnic_ib_netdevice_event(struct notifier_block *notifier, + unsigned long event, void *ptr) +{ + struct usnic_ib_dev *us_ibdev; + + struct net_device *netdev = netdev_notifier_info_to_dev(ptr); + + mutex_lock(&usnic_ib_ibdev_list_lock); + list_for_each_entry(us_ibdev, &usnic_ib_ibdev_list, ib_dev_link) { + if (us_ibdev->netdev == netdev) { + usnic_ib_handle_usdev_event(us_ibdev, event); + break; + } + } + mutex_unlock(&usnic_ib_ibdev_list_lock); + + return NOTIFY_DONE; +} + +static struct notifier_block usnic_ib_netdevice_notifier = { + .notifier_call = usnic_ib_netdevice_event +}; +/* End of netdev section */ + +/* Start of inet section */ +static int usnic_ib_handle_inet_event(struct usnic_ib_dev *us_ibdev, + unsigned long event, void *ptr) +{ + struct in_ifaddr *ifa = ptr; + struct ib_event ib_event; + + mutex_lock(&us_ibdev->usdev_lock); + + switch (event) { + case NETDEV_DOWN: + usnic_info("%s via ip notifiers", + usnic_ib_netdev_event_to_string(event)); + usnic_fwd_del_ipaddr(us_ibdev->ufdev); + usnic_ib_qp_grp_modify_active_to_err(us_ibdev); + ib_event.event = IB_EVENT_GID_CHANGE; + ib_event.device = &us_ibdev->ib_dev; + ib_event.element.port_num = 1; + ib_dispatch_event(&ib_event); + break; + case NETDEV_UP: + usnic_fwd_add_ipaddr(us_ibdev->ufdev, ifa->ifa_address); + usnic_info("%s via ip notifiers: ip %pI4", + usnic_ib_netdev_event_to_string(event), + &us_ibdev->ufdev->inaddr); + ib_event.event = IB_EVENT_GID_CHANGE; + ib_event.device = &us_ibdev->ib_dev; + ib_event.element.port_num = 1; + ib_dispatch_event(&ib_event); + break; + default: + usnic_info("Ignoring event %s on %s", + usnic_ib_netdev_event_to_string(event), + us_ibdev->ib_dev.name); + } + mutex_unlock(&us_ibdev->usdev_lock); + + return NOTIFY_DONE; +} + +static int usnic_ib_inetaddr_event(struct notifier_block *notifier, + unsigned long event, void *ptr) +{ + struct usnic_ib_dev *us_ibdev; + struct in_ifaddr *ifa = ptr; + struct net_device *netdev = ifa->ifa_dev->dev; + + mutex_lock(&usnic_ib_ibdev_list_lock); + list_for_each_entry(us_ibdev, &usnic_ib_ibdev_list, ib_dev_link) { + if (us_ibdev->netdev == netdev) { + usnic_ib_handle_inet_event(us_ibdev, event, ptr); + break; + } + } + mutex_unlock(&usnic_ib_ibdev_list_lock); + + return NOTIFY_DONE; +} +static struct notifier_block usnic_ib_inetaddr_notifier = { + .notifier_call = usnic_ib_inetaddr_event +}; +/* End of inet section*/ + +/* Start of PF discovery section */ +static void *usnic_ib_device_add(struct pci_dev *dev) +{ + struct usnic_ib_dev *us_ibdev; + union ib_gid gid; + struct in_ifaddr *in; + struct net_device *netdev; + + usnic_dbg("\n"); + netdev = pci_get_drvdata(dev); + + us_ibdev = (struct usnic_ib_dev *)ib_alloc_device(sizeof(*us_ibdev)); + if (IS_ERR_OR_NULL(us_ibdev)) { + usnic_err("Device %s context alloc failed\n", + netdev_name(pci_get_drvdata(dev))); + return ERR_PTR(us_ibdev ? PTR_ERR(us_ibdev) : -EFAULT); + } + + us_ibdev->ufdev = usnic_fwd_dev_alloc(dev); + if (IS_ERR_OR_NULL(us_ibdev->ufdev)) { + usnic_err("Failed to alloc ufdev for %s with err %ld\n", + pci_name(dev), PTR_ERR(us_ibdev->ufdev)); + goto err_dealloc; + } + + mutex_init(&us_ibdev->usdev_lock); + INIT_LIST_HEAD(&us_ibdev->vf_dev_list); + INIT_LIST_HEAD(&us_ibdev->ctx_list); + + us_ibdev->pdev = dev; + us_ibdev->netdev = pci_get_drvdata(dev); + us_ibdev->ib_dev.owner = THIS_MODULE; + us_ibdev->ib_dev.node_type = RDMA_NODE_USNIC_UDP; + us_ibdev->ib_dev.phys_port_cnt = USNIC_IB_PORT_CNT; + us_ibdev->ib_dev.num_comp_vectors = USNIC_IB_NUM_COMP_VECTORS; + us_ibdev->ib_dev.dma_device = &dev->dev; + us_ibdev->ib_dev.uverbs_abi_ver = USNIC_UVERBS_ABI_VERSION; + strlcpy(us_ibdev->ib_dev.name, "usnic_%d", IB_DEVICE_NAME_MAX); + + us_ibdev->ib_dev.uverbs_cmd_mask = + (1ull << IB_USER_VERBS_CMD_GET_CONTEXT) | + (1ull << IB_USER_VERBS_CMD_QUERY_DEVICE) | + (1ull << IB_USER_VERBS_CMD_QUERY_PORT) | + (1ull << IB_USER_VERBS_CMD_ALLOC_PD) | + (1ull << IB_USER_VERBS_CMD_DEALLOC_PD) | + (1ull << IB_USER_VERBS_CMD_REG_MR) | + (1ull << IB_USER_VERBS_CMD_DEREG_MR) | + (1ull << IB_USER_VERBS_CMD_CREATE_COMP_CHANNEL) | + (1ull << IB_USER_VERBS_CMD_CREATE_CQ) | + (1ull << IB_USER_VERBS_CMD_DESTROY_CQ) | + (1ull << IB_USER_VERBS_CMD_CREATE_QP) | + (1ull << IB_USER_VERBS_CMD_MODIFY_QP) | + (1ull << IB_USER_VERBS_CMD_QUERY_QP) | + (1ull << IB_USER_VERBS_CMD_DESTROY_QP) | + (1ull << IB_USER_VERBS_CMD_ATTACH_MCAST) | + (1ull << IB_USER_VERBS_CMD_DETACH_MCAST) | + (1ull << IB_USER_VERBS_CMD_OPEN_QP); + + us_ibdev->ib_dev.query_device = usnic_ib_query_device; + us_ibdev->ib_dev.query_port = usnic_ib_query_port; + us_ibdev->ib_dev.query_pkey = usnic_ib_query_pkey; + us_ibdev->ib_dev.query_gid = usnic_ib_query_gid; + us_ibdev->ib_dev.get_link_layer = usnic_ib_port_link_layer; + us_ibdev->ib_dev.alloc_pd = usnic_ib_alloc_pd; + us_ibdev->ib_dev.dealloc_pd = usnic_ib_dealloc_pd; + us_ibdev->ib_dev.create_qp = usnic_ib_create_qp; + us_ibdev->ib_dev.modify_qp = usnic_ib_modify_qp; + us_ibdev->ib_dev.query_qp = usnic_ib_query_qp; + us_ibdev->ib_dev.destroy_qp = usnic_ib_destroy_qp; + us_ibdev->ib_dev.create_cq = usnic_ib_create_cq; + us_ibdev->ib_dev.destroy_cq = usnic_ib_destroy_cq; + us_ibdev->ib_dev.reg_user_mr = usnic_ib_reg_mr; + us_ibdev->ib_dev.dereg_mr = usnic_ib_dereg_mr; + us_ibdev->ib_dev.alloc_ucontext = usnic_ib_alloc_ucontext; + us_ibdev->ib_dev.dealloc_ucontext = usnic_ib_dealloc_ucontext; + us_ibdev->ib_dev.mmap = usnic_ib_mmap; + us_ibdev->ib_dev.create_ah = usnic_ib_create_ah; + us_ibdev->ib_dev.destroy_ah = usnic_ib_destroy_ah; + us_ibdev->ib_dev.post_send = usnic_ib_post_send; + us_ibdev->ib_dev.post_recv = usnic_ib_post_recv; + us_ibdev->ib_dev.poll_cq = usnic_ib_poll_cq; + us_ibdev->ib_dev.req_notify_cq = usnic_ib_req_notify_cq; + us_ibdev->ib_dev.get_dma_mr = usnic_ib_get_dma_mr; + + + if (ib_register_device(&us_ibdev->ib_dev, NULL)) + goto err_fwd_dealloc; + + usnic_fwd_set_mtu(us_ibdev->ufdev, us_ibdev->netdev->mtu); + usnic_fwd_set_mac(us_ibdev->ufdev, us_ibdev->netdev->dev_addr); + if (netif_carrier_ok(us_ibdev->netdev)) + usnic_fwd_carrier_up(us_ibdev->ufdev); + + in = ((struct in_device *)(netdev->ip_ptr))->ifa_list; + if (in != NULL) + usnic_fwd_add_ipaddr(us_ibdev->ufdev, in->ifa_address); + + usnic_mac_ip_to_gid(us_ibdev->netdev->perm_addr, + us_ibdev->ufdev->inaddr, &gid.raw[0]); + memcpy(&us_ibdev->ib_dev.node_guid, &gid.global.interface_id, + sizeof(gid.global.interface_id)); + kref_init(&us_ibdev->vf_cnt); + + usnic_info("Added ibdev: %s netdev: %s with mac %pM Link: %u MTU: %u\n", + us_ibdev->ib_dev.name, netdev_name(us_ibdev->netdev), + us_ibdev->ufdev->mac, us_ibdev->ufdev->link_up, + us_ibdev->ufdev->mtu); + return us_ibdev; + +err_fwd_dealloc: + usnic_fwd_dev_free(us_ibdev->ufdev); +err_dealloc: + usnic_err("failed -- deallocing device\n"); + ib_dealloc_device(&us_ibdev->ib_dev); + return NULL; +} + +static void usnic_ib_device_remove(struct usnic_ib_dev *us_ibdev) +{ + usnic_info("Unregistering %s\n", us_ibdev->ib_dev.name); + usnic_ib_sysfs_unregister_usdev(us_ibdev); + usnic_fwd_dev_free(us_ibdev->ufdev); + ib_unregister_device(&us_ibdev->ib_dev); + ib_dealloc_device(&us_ibdev->ib_dev); +} + +static void usnic_ib_undiscover_pf(struct kref *kref) +{ + struct usnic_ib_dev *us_ibdev, *tmp; + struct pci_dev *dev; + bool found = false; + + dev = container_of(kref, struct usnic_ib_dev, vf_cnt)->pdev; + mutex_lock(&usnic_ib_ibdev_list_lock); + list_for_each_entry_safe(us_ibdev, tmp, + &usnic_ib_ibdev_list, ib_dev_link) { + if (us_ibdev->pdev == dev) { + list_del(&us_ibdev->ib_dev_link); + usnic_ib_device_remove(us_ibdev); + found = true; + break; + } + } + + WARN(!found, "Failed to remove PF %s\n", pci_name(dev)); + + mutex_unlock(&usnic_ib_ibdev_list_lock); +} + +static struct usnic_ib_dev *usnic_ib_discover_pf(struct usnic_vnic *vnic) +{ + struct usnic_ib_dev *us_ibdev; + struct pci_dev *parent_pci, *vf_pci; + int err; + + vf_pci = usnic_vnic_get_pdev(vnic); + parent_pci = pci_physfn(vf_pci); + + BUG_ON(!parent_pci); + + mutex_lock(&usnic_ib_ibdev_list_lock); + list_for_each_entry(us_ibdev, &usnic_ib_ibdev_list, ib_dev_link) { + if (us_ibdev->pdev == parent_pci) { + kref_get(&us_ibdev->vf_cnt); + goto out; + } + } + + us_ibdev = usnic_ib_device_add(parent_pci); + if (IS_ERR_OR_NULL(us_ibdev)) { + us_ibdev = us_ibdev ? us_ibdev : ERR_PTR(-EFAULT); + goto out; + } + + err = usnic_ib_sysfs_register_usdev(us_ibdev); + if (err) { + usnic_ib_device_remove(us_ibdev); + us_ibdev = ERR_PTR(err); + goto out; + } + + list_add(&us_ibdev->ib_dev_link, &usnic_ib_ibdev_list); +out: + mutex_unlock(&usnic_ib_ibdev_list_lock); + return us_ibdev; +} +/* End of PF discovery section */ + +/* Start of PCI section */ + +static DEFINE_PCI_DEVICE_TABLE(usnic_ib_pci_ids) = { + {PCI_DEVICE(PCI_VENDOR_ID_CISCO, PCI_DEVICE_ID_CISCO_VIC_USPACE_NIC)}, + {0,} +}; + +static int usnic_ib_pci_probe(struct pci_dev *pdev, + const struct pci_device_id *id) +{ + int err; + struct usnic_ib_dev *pf; + struct usnic_ib_vf *vf; + enum usnic_vnic_res_type res_type; + + vf = kzalloc(sizeof(*vf), GFP_KERNEL); + if (!vf) + return -ENOMEM; + + err = pci_enable_device(pdev); + if (err) { + usnic_err("Failed to enable %s with err %d\n", + pci_name(pdev), err); + goto out_clean_vf; + } + + err = pci_request_regions(pdev, DRV_NAME); + if (err) { + usnic_err("Failed to request region for %s with err %d\n", + pci_name(pdev), err); + goto out_disable_device; + } + + pci_set_master(pdev); + pci_set_drvdata(pdev, vf); + + vf->vnic = usnic_vnic_alloc(pdev); + if (IS_ERR_OR_NULL(vf->vnic)) { + err = vf->vnic ? PTR_ERR(vf->vnic) : -ENOMEM; + usnic_err("Failed to alloc vnic for %s with err %d\n", + pci_name(pdev), err); + goto out_release_regions; + } + + pf = usnic_ib_discover_pf(vf->vnic); + if (IS_ERR_OR_NULL(pf)) { + usnic_err("Failed to discover pf of vnic %s with err%ld\n", + pci_name(pdev), PTR_ERR(pf)); + err = pf ? PTR_ERR(pf) : -EFAULT; + goto out_clean_vnic; + } + + vf->pf = pf; + spin_lock_init(&vf->lock); + mutex_lock(&pf->usdev_lock); + list_add_tail(&vf->link, &pf->vf_dev_list); + /* + * Save max settings (will be same for each VF, easier to re-write than + * to say "if (!set) { set_values(); set=1; } + */ + for (res_type = USNIC_VNIC_RES_TYPE_EOL+1; + res_type < USNIC_VNIC_RES_TYPE_MAX; + res_type++) { + pf->vf_res_cnt[res_type] = usnic_vnic_res_cnt(vf->vnic, + res_type); + } + + mutex_unlock(&pf->usdev_lock); + + usnic_info("Registering usnic VF %s into PF %s\n", pci_name(pdev), + pf->ib_dev.name); + usnic_ib_log_vf(vf); + return 0; + +out_clean_vnic: + usnic_vnic_free(vf->vnic); +out_release_regions: + pci_set_drvdata(pdev, NULL); + pci_clear_master(pdev); + pci_release_regions(pdev); +out_disable_device: + pci_disable_device(pdev); +out_clean_vf: + kfree(vf); + return err; +} + +static void usnic_ib_pci_remove(struct pci_dev *pdev) +{ + struct usnic_ib_vf *vf = pci_get_drvdata(pdev); + struct usnic_ib_dev *pf = vf->pf; + + mutex_lock(&pf->usdev_lock); + list_del(&vf->link); + mutex_unlock(&pf->usdev_lock); + + kref_put(&pf->vf_cnt, usnic_ib_undiscover_pf); + usnic_vnic_free(vf->vnic); + pci_set_drvdata(pdev, NULL); + pci_clear_master(pdev); + pci_release_regions(pdev); + pci_disable_device(pdev); + kfree(vf); + + usnic_info("Removed VF %s\n", pci_name(pdev)); +} + +/* PCI driver entry points */ +static struct pci_driver usnic_ib_pci_driver = { + .name = DRV_NAME, + .id_table = usnic_ib_pci_ids, + .probe = usnic_ib_pci_probe, + .remove = usnic_ib_pci_remove, +}; +/* End of PCI section */ + +/* Start of module section */ +static int __init usnic_ib_init(void) +{ + int err; + + printk_once(KERN_INFO "%s", usnic_version); + + err = usnic_uiom_init(DRV_NAME); + if (err) { + usnic_err("Unable to initalize umem with err %d\n", err); + return err; + } + + if (pci_register_driver(&usnic_ib_pci_driver)) { + usnic_err("Unable to register with PCI\n"); + goto out_umem_fini; + } + + err = register_netdevice_notifier(&usnic_ib_netdevice_notifier); + if (err) { + usnic_err("Failed to register netdev notifier\n"); + goto out_pci_unreg; + } + + err = register_inetaddr_notifier(&usnic_ib_inetaddr_notifier); + if (err) { + usnic_err("Failed to register inet addr notifier\n"); + goto out_unreg_netdev_notifier; + } + + err = usnic_transport_init(); + if (err) { + usnic_err("Failed to initialize transport\n"); + goto out_unreg_inetaddr_notifier; + } + + usnic_debugfs_init(); + + return 0; + +out_unreg_inetaddr_notifier: + unregister_inetaddr_notifier(&usnic_ib_inetaddr_notifier); +out_unreg_netdev_notifier: + unregister_netdevice_notifier(&usnic_ib_netdevice_notifier); +out_pci_unreg: + pci_unregister_driver(&usnic_ib_pci_driver); +out_umem_fini: + usnic_uiom_fini(); + + return err; +} + +static void __exit usnic_ib_destroy(void) +{ + usnic_dbg("\n"); + usnic_debugfs_exit(); + usnic_transport_fini(); + unregister_inetaddr_notifier(&usnic_ib_inetaddr_notifier); + unregister_netdevice_notifier(&usnic_ib_netdevice_notifier); + pci_unregister_driver(&usnic_ib_pci_driver); + usnic_uiom_fini(); +} + +MODULE_DESCRIPTION("Cisco VIC (usNIC) Verbs Driver"); +MODULE_AUTHOR("Upinder Malhi "); +MODULE_LICENSE("Dual BSD/GPL"); +MODULE_VERSION(DRV_VERSION); +module_param(usnic_log_lvl, uint, S_IRUGO | S_IWUSR); +module_param(usnic_ib_share_vf, uint, S_IRUGO | S_IWUSR); +MODULE_PARM_DESC(usnic_log_lvl, " Off=0, Err=1, Info=2, Debug=3"); +MODULE_PARM_DESC(usnic_ib_share_vf, "Off=0, On=1 VF sharing amongst QPs"); +MODULE_DEVICE_TABLE(pci, usnic_ib_pci_ids); + +module_init(usnic_ib_init); +module_exit(usnic_ib_destroy); +/* End of module section */ --- linux-3.13.0.orig/drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c +++ linux-3.13.0/drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c @@ -0,0 +1,761 @@ +/* + * Copyright (c) 2013, Cisco Systems, Inc. All rights reserved. + * + * This program is free software; you may 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. + * + * 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 + +#include "usnic_log.h" +#include "usnic_vnic.h" +#include "usnic_fwd.h" +#include "usnic_uiom.h" +#include "usnic_debugfs.h" +#include "usnic_ib_qp_grp.h" +#include "usnic_ib_sysfs.h" +#include "usnic_transport.h" + +#define DFLT_RQ_IDX 0 + +const char *usnic_ib_qp_grp_state_to_string(enum ib_qp_state state) +{ + switch (state) { + case IB_QPS_RESET: + return "Rst"; + case IB_QPS_INIT: + return "Init"; + case IB_QPS_RTR: + return "RTR"; + case IB_QPS_RTS: + return "RTS"; + case IB_QPS_SQD: + return "SQD"; + case IB_QPS_SQE: + return "SQE"; + case IB_QPS_ERR: + return "ERR"; + default: + return "UNKOWN STATE"; + + } +} + +int usnic_ib_qp_grp_dump_hdr(char *buf, int buf_sz) +{ + return scnprintf(buf, buf_sz, "|QPN\t|State\t|PID\t|VF Idx\t|Fil ID"); +} + +int usnic_ib_qp_grp_dump_rows(void *obj, char *buf, int buf_sz) +{ + struct usnic_ib_qp_grp *qp_grp = obj; + struct usnic_ib_qp_grp_flow *default_flow; + if (obj) { + default_flow = list_first_entry(&qp_grp->flows_lst, + struct usnic_ib_qp_grp_flow, link); + return scnprintf(buf, buf_sz, "|%d\t|%s\t|%d\t|%hu\t|%d", + qp_grp->ibqp.qp_num, + usnic_ib_qp_grp_state_to_string( + qp_grp->state), + qp_grp->owner_pid, + usnic_vnic_get_index(qp_grp->vf->vnic), + default_flow->flow->flow_id); + } else { + return scnprintf(buf, buf_sz, "|N/A\t|N/A\t|N/A\t|N/A\t|N/A"); + } +} + +static struct usnic_vnic_res_chunk * +get_qp_res_chunk(struct usnic_ib_qp_grp *qp_grp) +{ + lockdep_assert_held(&qp_grp->lock); + /* + * The QP res chunk, used to derive qp indices, + * are just indices of the RQs + */ + return usnic_ib_qp_grp_get_chunk(qp_grp, USNIC_VNIC_RES_TYPE_RQ); +} + +static int enable_qp_grp(struct usnic_ib_qp_grp *qp_grp) +{ + + int status; + int i, vnic_idx; + struct usnic_vnic_res_chunk *res_chunk; + struct usnic_vnic_res *res; + + lockdep_assert_held(&qp_grp->lock); + + vnic_idx = usnic_vnic_get_index(qp_grp->vf->vnic); + + res_chunk = get_qp_res_chunk(qp_grp); + if (IS_ERR_OR_NULL(res_chunk)) { + usnic_err("Unable to get qp res with err %ld\n", + PTR_ERR(res_chunk)); + return res_chunk ? PTR_ERR(res_chunk) : -ENOMEM; + } + + for (i = 0; i < res_chunk->cnt; i++) { + res = res_chunk->res[i]; + status = usnic_fwd_enable_qp(qp_grp->ufdev, vnic_idx, + res->vnic_idx); + if (status) { + usnic_err("Failed to enable qp %d of %s:%d\n with err %d\n", + res->vnic_idx, qp_grp->ufdev->name, + vnic_idx, status); + goto out_err; + } + } + + return 0; + +out_err: + for (i--; i >= 0; i--) { + res = res_chunk->res[i]; + usnic_fwd_disable_qp(qp_grp->ufdev, vnic_idx, + res->vnic_idx); + } + + return status; +} + +static int disable_qp_grp(struct usnic_ib_qp_grp *qp_grp) +{ + int i, vnic_idx; + struct usnic_vnic_res_chunk *res_chunk; + struct usnic_vnic_res *res; + int status = 0; + + lockdep_assert_held(&qp_grp->lock); + vnic_idx = usnic_vnic_get_index(qp_grp->vf->vnic); + + res_chunk = get_qp_res_chunk(qp_grp); + if (IS_ERR_OR_NULL(res_chunk)) { + usnic_err("Unable to get qp res with err %ld\n", + PTR_ERR(res_chunk)); + return res_chunk ? PTR_ERR(res_chunk) : -ENOMEM; + } + + for (i = 0; i < res_chunk->cnt; i++) { + res = res_chunk->res[i]; + status = usnic_fwd_disable_qp(qp_grp->ufdev, vnic_idx, + res->vnic_idx); + if (status) { + usnic_err("Failed to disable rq %d of %s:%d\n with err %d\n", + res->vnic_idx, + qp_grp->ufdev->name, + vnic_idx, status); + } + } + + return status; + +} + +static int init_filter_action(struct usnic_ib_qp_grp *qp_grp, + struct usnic_filter_action *uaction) +{ + struct usnic_vnic_res_chunk *res_chunk; + + res_chunk = usnic_ib_qp_grp_get_chunk(qp_grp, USNIC_VNIC_RES_TYPE_RQ); + if (IS_ERR_OR_NULL(res_chunk)) { + usnic_err("Unable to get %s with err %ld\n", + usnic_vnic_res_type_to_str(USNIC_VNIC_RES_TYPE_RQ), + PTR_ERR(res_chunk)); + return res_chunk ? PTR_ERR(res_chunk) : -ENOMEM; + } + + uaction->vnic_idx = usnic_vnic_get_index(qp_grp->vf->vnic); + uaction->action.type = FILTER_ACTION_RQ_STEERING; + uaction->action.u.rq_idx = res_chunk->res[DFLT_RQ_IDX]->vnic_idx; + + return 0; +} + +static struct usnic_ib_qp_grp_flow* +create_roce_custom_flow(struct usnic_ib_qp_grp *qp_grp, + struct usnic_transport_spec *trans_spec) +{ + uint16_t port_num; + int err; + struct filter filter; + struct usnic_filter_action uaction; + struct usnic_ib_qp_grp_flow *qp_flow; + struct usnic_fwd_flow *flow; + enum usnic_transport_type trans_type; + + trans_type = trans_spec->trans_type; + port_num = trans_spec->usnic_roce.port_num; + + /* Reserve Port */ + port_num = usnic_transport_rsrv_port(trans_type, port_num); + if (port_num == 0) + return ERR_PTR(-EINVAL); + + /* Create Flow */ + usnic_fwd_init_usnic_filter(&filter, port_num); + err = init_filter_action(qp_grp, &uaction); + if (err) + goto out_unreserve_port; + + flow = usnic_fwd_alloc_flow(qp_grp->ufdev, &filter, &uaction); + if (IS_ERR_OR_NULL(flow)) { + usnic_err("Unable to alloc flow failed with err %ld\n", + PTR_ERR(flow)); + err = flow ? PTR_ERR(flow) : -EFAULT; + goto out_unreserve_port; + } + + /* Create Flow Handle */ + qp_flow = kzalloc(sizeof(*qp_flow), GFP_ATOMIC); + if (IS_ERR_OR_NULL(qp_flow)) { + err = qp_flow ? PTR_ERR(qp_flow) : -ENOMEM; + goto out_dealloc_flow; + } + qp_flow->flow = flow; + qp_flow->trans_type = trans_type; + qp_flow->usnic_roce.port_num = port_num; + qp_flow->qp_grp = qp_grp; + return qp_flow; + +out_dealloc_flow: + usnic_fwd_dealloc_flow(flow); +out_unreserve_port: + usnic_transport_unrsrv_port(trans_type, port_num); + return ERR_PTR(err); +} + +static void release_roce_custom_flow(struct usnic_ib_qp_grp_flow *qp_flow) +{ + usnic_fwd_dealloc_flow(qp_flow->flow); + usnic_transport_unrsrv_port(qp_flow->trans_type, + qp_flow->usnic_roce.port_num); + kfree(qp_flow); +} + +static struct usnic_ib_qp_grp_flow* +create_udp_flow(struct usnic_ib_qp_grp *qp_grp, + struct usnic_transport_spec *trans_spec) +{ + struct socket *sock; + int sock_fd; + int err; + struct filter filter; + struct usnic_filter_action uaction; + struct usnic_ib_qp_grp_flow *qp_flow; + struct usnic_fwd_flow *flow; + enum usnic_transport_type trans_type; + uint32_t addr; + uint16_t port_num; + int proto; + + trans_type = trans_spec->trans_type; + sock_fd = trans_spec->udp.sock_fd; + + /* Get and check socket */ + sock = usnic_transport_get_socket(sock_fd); + if (IS_ERR_OR_NULL(sock)) + return ERR_CAST(sock); + + err = usnic_transport_sock_get_addr(sock, &proto, &addr, &port_num); + if (err) + goto out_put_sock; + + if (proto != IPPROTO_UDP) { + usnic_err("Protocol for fd %d is not UDP", sock_fd); + err = -EPERM; + goto out_put_sock; + } + + /* Create flow */ + usnic_fwd_init_udp_filter(&filter, addr, port_num); + err = init_filter_action(qp_grp, &uaction); + if (err) + goto out_put_sock; + + flow = usnic_fwd_alloc_flow(qp_grp->ufdev, &filter, &uaction); + if (IS_ERR_OR_NULL(flow)) { + usnic_err("Unable to alloc flow failed with err %ld\n", + PTR_ERR(flow)); + err = flow ? PTR_ERR(flow) : -EFAULT; + goto out_put_sock; + } + + /* Create qp_flow */ + qp_flow = kzalloc(sizeof(*qp_flow), GFP_ATOMIC); + if (IS_ERR_OR_NULL(qp_flow)) { + err = qp_flow ? PTR_ERR(qp_flow) : -ENOMEM; + goto out_dealloc_flow; + } + qp_flow->flow = flow; + qp_flow->trans_type = trans_type; + qp_flow->udp.sock = sock; + qp_flow->qp_grp = qp_grp; + return qp_flow; + +out_dealloc_flow: + usnic_fwd_dealloc_flow(flow); +out_put_sock: + usnic_transport_put_socket(sock); + return ERR_PTR(err); +} + +static void release_udp_flow(struct usnic_ib_qp_grp_flow *qp_flow) +{ + usnic_fwd_dealloc_flow(qp_flow->flow); + usnic_transport_put_socket(qp_flow->udp.sock); + kfree(qp_flow); +} + +static struct usnic_ib_qp_grp_flow* +create_and_add_flow(struct usnic_ib_qp_grp *qp_grp, + struct usnic_transport_spec *trans_spec) +{ + struct usnic_ib_qp_grp_flow *qp_flow; + enum usnic_transport_type trans_type; + + trans_type = trans_spec->trans_type; + switch (trans_type) { + case USNIC_TRANSPORT_ROCE_CUSTOM: + qp_flow = create_roce_custom_flow(qp_grp, trans_spec); + break; + case USNIC_TRANSPORT_IPV4_UDP: + qp_flow = create_udp_flow(qp_grp, trans_spec); + break; + default: + usnic_err("Unsupported transport %u\n", + trans_spec->trans_type); + return ERR_PTR(-EINVAL); + } + + if (!IS_ERR_OR_NULL(qp_flow)) { + list_add_tail(&qp_flow->link, &qp_grp->flows_lst); + usnic_debugfs_flow_add(qp_flow); + } + + + return qp_flow; +} + +static void release_and_remove_flow(struct usnic_ib_qp_grp_flow *qp_flow) +{ + usnic_debugfs_flow_remove(qp_flow); + list_del(&qp_flow->link); + + switch (qp_flow->trans_type) { + case USNIC_TRANSPORT_ROCE_CUSTOM: + release_roce_custom_flow(qp_flow); + break; + case USNIC_TRANSPORT_IPV4_UDP: + release_udp_flow(qp_flow); + break; + default: + WARN(1, "Unsupported transport %u\n", + qp_flow->trans_type); + break; + } +} + +static void release_and_remove_all_flows(struct usnic_ib_qp_grp *qp_grp) +{ + struct usnic_ib_qp_grp_flow *qp_flow, *tmp; + list_for_each_entry_safe(qp_flow, tmp, &qp_grp->flows_lst, link) + release_and_remove_flow(qp_flow); +} + +int usnic_ib_qp_grp_modify(struct usnic_ib_qp_grp *qp_grp, + enum ib_qp_state new_state, + void *data) +{ + int status = 0; + int vnic_idx; + struct ib_event ib_event; + enum ib_qp_state old_state; + struct usnic_transport_spec *trans_spec; + struct usnic_ib_qp_grp_flow *qp_flow; + + old_state = qp_grp->state; + vnic_idx = usnic_vnic_get_index(qp_grp->vf->vnic); + trans_spec = (struct usnic_transport_spec *) data; + + spin_lock(&qp_grp->lock); + switch (new_state) { + case IB_QPS_RESET: + switch (old_state) { + case IB_QPS_RESET: + /* NO-OP */ + break; + case IB_QPS_INIT: + release_and_remove_all_flows(qp_grp); + status = 0; + break; + case IB_QPS_RTR: + case IB_QPS_RTS: + case IB_QPS_ERR: + status = disable_qp_grp(qp_grp); + release_and_remove_all_flows(qp_grp); + break; + default: + status = -EINVAL; + } + break; + case IB_QPS_INIT: + switch (old_state) { + case IB_QPS_RESET: + if (trans_spec) { + qp_flow = create_and_add_flow(qp_grp, + trans_spec); + if (IS_ERR_OR_NULL(qp_flow)) { + status = qp_flow ? PTR_ERR(qp_flow) : -EFAULT; + break; + } + } else { + /* + * Optional to specify filters. + */ + status = 0; + } + break; + case IB_QPS_INIT: + if (trans_spec) { + qp_flow = create_and_add_flow(qp_grp, + trans_spec); + if (IS_ERR_OR_NULL(qp_flow)) { + status = qp_flow ? PTR_ERR(qp_flow) : -EFAULT; + break; + } + } else { + /* + * Doesn't make sense to go into INIT state + * from INIT state w/o adding filters. + */ + status = -EINVAL; + } + break; + case IB_QPS_RTR: + status = disable_qp_grp(qp_grp); + break; + case IB_QPS_RTS: + status = disable_qp_grp(qp_grp); + break; + default: + status = -EINVAL; + } + break; + case IB_QPS_RTR: + switch (old_state) { + case IB_QPS_INIT: + status = enable_qp_grp(qp_grp); + break; + default: + status = -EINVAL; + } + break; + case IB_QPS_RTS: + switch (old_state) { + case IB_QPS_RTR: + /* NO-OP FOR NOW */ + break; + default: + status = -EINVAL; + } + break; + case IB_QPS_ERR: + ib_event.device = &qp_grp->vf->pf->ib_dev; + ib_event.element.qp = &qp_grp->ibqp; + ib_event.event = IB_EVENT_QP_FATAL; + + switch (old_state) { + case IB_QPS_RESET: + qp_grp->ibqp.event_handler(&ib_event, + qp_grp->ibqp.qp_context); + break; + case IB_QPS_INIT: + release_and_remove_all_flows(qp_grp); + qp_grp->ibqp.event_handler(&ib_event, + qp_grp->ibqp.qp_context); + break; + case IB_QPS_RTR: + case IB_QPS_RTS: + status = disable_qp_grp(qp_grp); + release_and_remove_all_flows(qp_grp); + qp_grp->ibqp.event_handler(&ib_event, + qp_grp->ibqp.qp_context); + break; + default: + status = -EINVAL; + } + break; + default: + status = -EINVAL; + } + spin_unlock(&qp_grp->lock); + + if (!status) { + qp_grp->state = new_state; + usnic_info("Transistioned %u from %s to %s", + qp_grp->grp_id, + usnic_ib_qp_grp_state_to_string(old_state), + usnic_ib_qp_grp_state_to_string(new_state)); + } else { + usnic_err("Failed to transistion %u from %s to %s", + qp_grp->grp_id, + usnic_ib_qp_grp_state_to_string(old_state), + usnic_ib_qp_grp_state_to_string(new_state)); + } + + return status; +} + +static struct usnic_vnic_res_chunk** +alloc_res_chunk_list(struct usnic_vnic *vnic, + struct usnic_vnic_res_spec *res_spec, void *owner_obj) +{ + enum usnic_vnic_res_type res_type; + struct usnic_vnic_res_chunk **res_chunk_list; + int err, i, res_cnt, res_lst_sz; + + for (res_lst_sz = 0; + res_spec->resources[res_lst_sz].type != USNIC_VNIC_RES_TYPE_EOL; + res_lst_sz++) { + /* Do Nothing */ + } + + res_chunk_list = kzalloc(sizeof(*res_chunk_list)*(res_lst_sz+1), + GFP_ATOMIC); + if (!res_chunk_list) + return ERR_PTR(-ENOMEM); + + for (i = 0; res_spec->resources[i].type != USNIC_VNIC_RES_TYPE_EOL; + i++) { + res_type = res_spec->resources[i].type; + res_cnt = res_spec->resources[i].cnt; + + res_chunk_list[i] = usnic_vnic_get_resources(vnic, res_type, + res_cnt, owner_obj); + if (IS_ERR_OR_NULL(res_chunk_list[i])) { + err = res_chunk_list[i] ? + PTR_ERR(res_chunk_list[i]) : -ENOMEM; + usnic_err("Failed to get %s from %s with err %d\n", + usnic_vnic_res_type_to_str(res_type), + usnic_vnic_pci_name(vnic), + err); + goto out_free_res; + } + } + + return res_chunk_list; + +out_free_res: + for (i--; i > 0; i--) + usnic_vnic_put_resources(res_chunk_list[i]); + kfree(res_chunk_list); + return ERR_PTR(err); +} + +static void free_qp_grp_res(struct usnic_vnic_res_chunk **res_chunk_list) +{ + int i; + for (i = 0; res_chunk_list[i]; i++) + usnic_vnic_put_resources(res_chunk_list[i]); + kfree(res_chunk_list); +} + +static int qp_grp_and_vf_bind(struct usnic_ib_vf *vf, + struct usnic_ib_pd *pd, + struct usnic_ib_qp_grp *qp_grp) +{ + int err; + struct pci_dev *pdev; + + lockdep_assert_held(&vf->lock); + + pdev = usnic_vnic_get_pdev(vf->vnic); + if (vf->qp_grp_ref_cnt == 0) { + err = usnic_uiom_attach_dev_to_pd(pd->umem_pd, &pdev->dev); + if (err) { + usnic_err("Failed to attach %s to domain\n", + pci_name(pdev)); + return err; + } + vf->pd = pd; + } + vf->qp_grp_ref_cnt++; + + WARN_ON(vf->pd != pd); + qp_grp->vf = vf; + + return 0; +} + +static void qp_grp_and_vf_unbind(struct usnic_ib_qp_grp *qp_grp) +{ + struct pci_dev *pdev; + struct usnic_ib_pd *pd; + + lockdep_assert_held(&qp_grp->vf->lock); + + pd = qp_grp->vf->pd; + pdev = usnic_vnic_get_pdev(qp_grp->vf->vnic); + if (--qp_grp->vf->qp_grp_ref_cnt == 0) { + qp_grp->vf->pd = NULL; + usnic_uiom_detach_dev_from_pd(pd->umem_pd, &pdev->dev); + } + qp_grp->vf = NULL; +} + +static void log_spec(struct usnic_vnic_res_spec *res_spec) +{ + char buf[512]; + usnic_vnic_spec_dump(buf, sizeof(buf), res_spec); + usnic_dbg("%s\n", buf); +} + +static int qp_grp_id_from_flow(struct usnic_ib_qp_grp_flow *qp_flow, + uint32_t *id) +{ + enum usnic_transport_type trans_type = qp_flow->trans_type; + int err; + uint16_t port_num = 0; + + switch (trans_type) { + case USNIC_TRANSPORT_ROCE_CUSTOM: + *id = qp_flow->usnic_roce.port_num; + break; + case USNIC_TRANSPORT_IPV4_UDP: + err = usnic_transport_sock_get_addr(qp_flow->udp.sock, + NULL, NULL, + &port_num); + if (err) + return err; + /* + * Copy port_num to stack first and then to *id, + * so that the short to int cast works for little + * and big endian systems. + */ + *id = port_num; + break; + default: + usnic_err("Unsupported transport %u\n", trans_type); + return -EINVAL; + } + + return 0; +} + +struct usnic_ib_qp_grp * +usnic_ib_qp_grp_create(struct usnic_fwd_dev *ufdev, struct usnic_ib_vf *vf, + struct usnic_ib_pd *pd, + struct usnic_vnic_res_spec *res_spec, + struct usnic_transport_spec *transport_spec) +{ + struct usnic_ib_qp_grp *qp_grp; + int err; + enum usnic_transport_type transport = transport_spec->trans_type; + struct usnic_ib_qp_grp_flow *qp_flow; + + lockdep_assert_held(&vf->lock); + + err = usnic_vnic_res_spec_satisfied(&min_transport_spec[transport], + res_spec); + if (err) { + usnic_err("Spec does not meet miniumum req for transport %d\n", + transport); + log_spec(res_spec); + return ERR_PTR(err); + } + + qp_grp = kzalloc(sizeof(*qp_grp), GFP_ATOMIC); + if (!qp_grp) { + usnic_err("Unable to alloc qp_grp - Out of memory\n"); + return NULL; + } + + qp_grp->res_chunk_list = alloc_res_chunk_list(vf->vnic, res_spec, + qp_grp); + if (IS_ERR_OR_NULL(qp_grp->res_chunk_list)) { + err = qp_grp->res_chunk_list ? + PTR_ERR(qp_grp->res_chunk_list) : -ENOMEM; + usnic_err("Unable to alloc res for %d with err %d\n", + qp_grp->grp_id, err); + goto out_free_qp_grp; + } + + err = qp_grp_and_vf_bind(vf, pd, qp_grp); + if (err) + goto out_free_res; + + INIT_LIST_HEAD(&qp_grp->flows_lst); + spin_lock_init(&qp_grp->lock); + qp_grp->ufdev = ufdev; + qp_grp->state = IB_QPS_RESET; + qp_grp->owner_pid = current->pid; + + qp_flow = create_and_add_flow(qp_grp, transport_spec); + if (IS_ERR_OR_NULL(qp_flow)) { + usnic_err("Unable to create and add flow with err %ld\n", + PTR_ERR(qp_flow)); + err = qp_flow ? PTR_ERR(qp_flow) : -EFAULT; + goto out_qp_grp_vf_unbind; + } + + err = qp_grp_id_from_flow(qp_flow, &qp_grp->grp_id); + if (err) + goto out_release_flow; + qp_grp->ibqp.qp_num = qp_grp->grp_id; + + usnic_ib_sysfs_qpn_add(qp_grp); + + return qp_grp; + +out_release_flow: + release_and_remove_flow(qp_flow); +out_qp_grp_vf_unbind: + qp_grp_and_vf_unbind(qp_grp); +out_free_res: + free_qp_grp_res(qp_grp->res_chunk_list); +out_free_qp_grp: + kfree(qp_grp); + + return ERR_PTR(err); +} + +void usnic_ib_qp_grp_destroy(struct usnic_ib_qp_grp *qp_grp) +{ + + WARN_ON(qp_grp->state != IB_QPS_RESET); + lockdep_assert_held(&qp_grp->vf->lock); + + release_and_remove_all_flows(qp_grp); + usnic_ib_sysfs_qpn_remove(qp_grp); + qp_grp_and_vf_unbind(qp_grp); + free_qp_grp_res(qp_grp->res_chunk_list); + kfree(qp_grp); +} + +struct usnic_vnic_res_chunk* +usnic_ib_qp_grp_get_chunk(struct usnic_ib_qp_grp *qp_grp, + enum usnic_vnic_res_type res_type) +{ + int i; + + for (i = 0; qp_grp->res_chunk_list[i]; i++) { + if (qp_grp->res_chunk_list[i]->type == res_type) + return qp_grp->res_chunk_list[i]; + } + + return ERR_PTR(-EINVAL); +} --- linux-3.13.0.orig/drivers/infiniband/hw/usnic/usnic_ib_qp_grp.h +++ linux-3.13.0/drivers/infiniband/hw/usnic/usnic_ib_qp_grp.h @@ -0,0 +1,117 @@ +/* + * Copyright (c) 2013, Cisco Systems, Inc. All rights reserved. + * + * This program is free software; you may 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. + * + * 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. + * + */ + +#ifndef USNIC_IB_QP_GRP_H_ +#define USNIC_IB_QP_GRP_H_ + +#include +#include + +#include "usnic_ib.h" +#include "usnic_abi.h" +#include "usnic_fwd.h" +#include "usnic_vnic.h" + +/* + * The qp group struct represents all the hw resources needed to present a ib_qp + */ +struct usnic_ib_qp_grp { + struct ib_qp ibqp; + enum ib_qp_state state; + int grp_id; + + struct usnic_fwd_dev *ufdev; + struct usnic_ib_ucontext *ctx; + struct list_head flows_lst; + + struct usnic_vnic_res_chunk **res_chunk_list; + + pid_t owner_pid; + struct usnic_ib_vf *vf; + struct list_head link; + + spinlock_t lock; + + struct kobject kobj; +}; + +struct usnic_ib_qp_grp_flow { + struct usnic_fwd_flow *flow; + enum usnic_transport_type trans_type; + union { + struct { + uint16_t port_num; + } usnic_roce; + struct { + struct socket *sock; + } udp; + }; + struct usnic_ib_qp_grp *qp_grp; + struct list_head link; + + /* Debug FS */ + struct dentry *dbgfs_dentry; + char dentry_name[32]; +}; + +static const struct +usnic_vnic_res_spec min_transport_spec[USNIC_TRANSPORT_MAX] = { + { /*USNIC_TRANSPORT_UNKNOWN*/ + .resources = { + {.type = USNIC_VNIC_RES_TYPE_EOL, .cnt = 0,}, + }, + }, + { /*USNIC_TRANSPORT_ROCE_CUSTOM*/ + .resources = { + {.type = USNIC_VNIC_RES_TYPE_WQ, .cnt = 1,}, + {.type = USNIC_VNIC_RES_TYPE_RQ, .cnt = 1,}, + {.type = USNIC_VNIC_RES_TYPE_CQ, .cnt = 1,}, + {.type = USNIC_VNIC_RES_TYPE_EOL, .cnt = 0,}, + }, + }, + { /*USNIC_TRANSPORT_IPV4_UDP*/ + .resources = { + {.type = USNIC_VNIC_RES_TYPE_WQ, .cnt = 1,}, + {.type = USNIC_VNIC_RES_TYPE_RQ, .cnt = 1,}, + {.type = USNIC_VNIC_RES_TYPE_CQ, .cnt = 1,}, + {.type = USNIC_VNIC_RES_TYPE_EOL, .cnt = 0,}, + }, + }, +}; + +const char *usnic_ib_qp_grp_state_to_string(enum ib_qp_state state); +int usnic_ib_qp_grp_dump_hdr(char *buf, int buf_sz); +int usnic_ib_qp_grp_dump_rows(void *obj, char *buf, int buf_sz); +struct usnic_ib_qp_grp * +usnic_ib_qp_grp_create(struct usnic_fwd_dev *ufdev, struct usnic_ib_vf *vf, + struct usnic_ib_pd *pd, + struct usnic_vnic_res_spec *res_spec, + struct usnic_transport_spec *trans_spec); +void usnic_ib_qp_grp_destroy(struct usnic_ib_qp_grp *qp_grp); +int usnic_ib_qp_grp_modify(struct usnic_ib_qp_grp *qp_grp, + enum ib_qp_state new_state, + void *data); +struct usnic_vnic_res_chunk +*usnic_ib_qp_grp_get_chunk(struct usnic_ib_qp_grp *qp_grp, + enum usnic_vnic_res_type type); +static inline +struct usnic_ib_qp_grp *to_uqp_grp(struct ib_qp *ibqp) +{ + return container_of(ibqp, struct usnic_ib_qp_grp, ibqp); +} +#endif /* USNIC_IB_QP_GRP_H_ */ --- linux-3.13.0.orig/drivers/infiniband/hw/usnic/usnic_ib_sysfs.c +++ linux-3.13.0/drivers/infiniband/hw/usnic/usnic_ib_sysfs.c @@ -0,0 +1,341 @@ +/* + * Copyright (c) 2013, Cisco Systems, Inc. All rights reserved. + * + * This program is free software; you may 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. + * + * 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 +#include + +#include "usnic_common_util.h" +#include "usnic_ib.h" +#include "usnic_ib_qp_grp.h" +#include "usnic_vnic.h" +#include "usnic_ib_verbs.h" +#include "usnic_log.h" + +static ssize_t usnic_ib_show_fw_ver(struct device *device, + struct device_attribute *attr, + char *buf) +{ + struct usnic_ib_dev *us_ibdev = + container_of(device, struct usnic_ib_dev, ib_dev.dev); + struct ethtool_drvinfo info; + + mutex_lock(&us_ibdev->usdev_lock); + us_ibdev->netdev->ethtool_ops->get_drvinfo(us_ibdev->netdev, &info); + mutex_unlock(&us_ibdev->usdev_lock); + + return scnprintf(buf, PAGE_SIZE, "%s\n", info.fw_version); +} + +static ssize_t usnic_ib_show_board(struct device *device, + struct device_attribute *attr, + char *buf) +{ + struct usnic_ib_dev *us_ibdev = + container_of(device, struct usnic_ib_dev, ib_dev.dev); + unsigned short subsystem_device_id; + + mutex_lock(&us_ibdev->usdev_lock); + subsystem_device_id = us_ibdev->pdev->subsystem_device; + mutex_unlock(&us_ibdev->usdev_lock); + + return scnprintf(buf, PAGE_SIZE, "%hu\n", subsystem_device_id); +} + +/* + * Report the configuration for this PF + */ +static ssize_t +usnic_ib_show_config(struct device *device, struct device_attribute *attr, + char *buf) +{ + struct usnic_ib_dev *us_ibdev; + char *ptr; + unsigned left; + unsigned n; + enum usnic_vnic_res_type res_type; + + us_ibdev = container_of(device, struct usnic_ib_dev, ib_dev.dev); + + /* Buffer space limit is 1 page */ + ptr = buf; + left = PAGE_SIZE; + + mutex_lock(&us_ibdev->usdev_lock); + if (atomic_read(&us_ibdev->vf_cnt.refcount) > 0) { + char *busname; + + /* + * bus name seems to come with annoying prefix. + * Remove it if it is predictable + */ + busname = us_ibdev->pdev->bus->name; + if (strncmp(busname, "PCI Bus ", 8) == 0) + busname += 8; + + n = scnprintf(ptr, left, + "%s: %s:%d.%d, %s, %pM, %u VFs\n Per VF:", + us_ibdev->ib_dev.name, + busname, + PCI_SLOT(us_ibdev->pdev->devfn), + PCI_FUNC(us_ibdev->pdev->devfn), + netdev_name(us_ibdev->netdev), + us_ibdev->ufdev->mac, + atomic_read(&us_ibdev->vf_cnt.refcount)); + UPDATE_PTR_LEFT(n, ptr, left); + + for (res_type = USNIC_VNIC_RES_TYPE_EOL; + res_type < USNIC_VNIC_RES_TYPE_MAX; + res_type++) { + if (us_ibdev->vf_res_cnt[res_type] == 0) + continue; + n = scnprintf(ptr, left, " %d %s%s", + us_ibdev->vf_res_cnt[res_type], + usnic_vnic_res_type_to_str(res_type), + (res_type < (USNIC_VNIC_RES_TYPE_MAX - 1)) ? + "," : ""); + UPDATE_PTR_LEFT(n, ptr, left); + } + n = scnprintf(ptr, left, "\n"); + UPDATE_PTR_LEFT(n, ptr, left); + } else { + n = scnprintf(ptr, left, "%s: no VFs\n", + us_ibdev->ib_dev.name); + UPDATE_PTR_LEFT(n, ptr, left); + } + mutex_unlock(&us_ibdev->usdev_lock); + + return ptr - buf; +} + +static ssize_t +usnic_ib_show_iface(struct device *device, struct device_attribute *attr, + char *buf) +{ + struct usnic_ib_dev *us_ibdev; + + us_ibdev = container_of(device, struct usnic_ib_dev, ib_dev.dev); + + return scnprintf(buf, PAGE_SIZE, "%s\n", + netdev_name(us_ibdev->netdev)); +} + +static ssize_t +usnic_ib_show_max_vf(struct device *device, struct device_attribute *attr, + char *buf) +{ + struct usnic_ib_dev *us_ibdev; + + us_ibdev = container_of(device, struct usnic_ib_dev, ib_dev.dev); + + return scnprintf(buf, PAGE_SIZE, "%u\n", + atomic_read(&us_ibdev->vf_cnt.refcount)); +} + +static ssize_t +usnic_ib_show_qp_per_vf(struct device *device, struct device_attribute *attr, + char *buf) +{ + struct usnic_ib_dev *us_ibdev; + int qp_per_vf; + + us_ibdev = container_of(device, struct usnic_ib_dev, ib_dev.dev); + qp_per_vf = max(us_ibdev->vf_res_cnt[USNIC_VNIC_RES_TYPE_WQ], + us_ibdev->vf_res_cnt[USNIC_VNIC_RES_TYPE_RQ]); + + return scnprintf(buf, PAGE_SIZE, + "%d\n", qp_per_vf); +} + +static ssize_t +usnic_ib_show_cq_per_vf(struct device *device, struct device_attribute *attr, + char *buf) +{ + struct usnic_ib_dev *us_ibdev; + + us_ibdev = container_of(device, struct usnic_ib_dev, ib_dev.dev); + + return scnprintf(buf, PAGE_SIZE, "%d\n", + us_ibdev->vf_res_cnt[USNIC_VNIC_RES_TYPE_CQ]); +} + +static DEVICE_ATTR(fw_ver, S_IRUGO, usnic_ib_show_fw_ver, NULL); +static DEVICE_ATTR(board_id, S_IRUGO, usnic_ib_show_board, NULL); +static DEVICE_ATTR(config, S_IRUGO, usnic_ib_show_config, NULL); +static DEVICE_ATTR(iface, S_IRUGO, usnic_ib_show_iface, NULL); +static DEVICE_ATTR(max_vf, S_IRUGO, usnic_ib_show_max_vf, NULL); +static DEVICE_ATTR(qp_per_vf, S_IRUGO, usnic_ib_show_qp_per_vf, NULL); +static DEVICE_ATTR(cq_per_vf, S_IRUGO, usnic_ib_show_cq_per_vf, NULL); + +static struct device_attribute *usnic_class_attributes[] = { + &dev_attr_fw_ver, + &dev_attr_board_id, + &dev_attr_config, + &dev_attr_iface, + &dev_attr_max_vf, + &dev_attr_qp_per_vf, + &dev_attr_cq_per_vf, +}; + +struct qpn_attribute { + struct attribute attr; + ssize_t (*show)(struct usnic_ib_qp_grp *, char *buf); +}; + +/* + * Definitions for supporting QPN entries in sysfs + */ +static ssize_t +usnic_ib_qpn_attr_show(struct kobject *kobj, struct attribute *attr, char *buf) +{ + struct usnic_ib_qp_grp *qp_grp; + struct qpn_attribute *qpn_attr; + + qp_grp = container_of(kobj, struct usnic_ib_qp_grp, kobj); + qpn_attr = container_of(attr, struct qpn_attribute, attr); + + return qpn_attr->show(qp_grp, buf); +} + +static const struct sysfs_ops usnic_ib_qpn_sysfs_ops = { + .show = usnic_ib_qpn_attr_show +}; + +#define QPN_ATTR_RO(NAME) \ +struct qpn_attribute qpn_attr_##NAME = __ATTR_RO(NAME) + +static ssize_t context_show(struct usnic_ib_qp_grp *qp_grp, char *buf) +{ + return scnprintf(buf, PAGE_SIZE, "0x%p\n", qp_grp->ctx); +} + +static ssize_t summary_show(struct usnic_ib_qp_grp *qp_grp, char *buf) +{ + int i, j, n; + int left; + char *ptr; + struct usnic_vnic_res_chunk *res_chunk; + struct usnic_vnic_res *vnic_res; + + left = PAGE_SIZE; + ptr = buf; + + n = scnprintf(ptr, left, + "QPN: %d State: (%s) PID: %u VF Idx: %hu ", + qp_grp->ibqp.qp_num, + usnic_ib_qp_grp_state_to_string(qp_grp->state), + qp_grp->owner_pid, + usnic_vnic_get_index(qp_grp->vf->vnic)); + UPDATE_PTR_LEFT(n, ptr, left); + + for (i = 0; qp_grp->res_chunk_list[i]; i++) { + res_chunk = qp_grp->res_chunk_list[i]; + for (j = 0; j < res_chunk->cnt; j++) { + vnic_res = res_chunk->res[j]; + n = scnprintf(ptr, left, "%s[%d] ", + usnic_vnic_res_type_to_str(vnic_res->type), + vnic_res->vnic_idx); + UPDATE_PTR_LEFT(n, ptr, left); + } + } + + n = scnprintf(ptr, left, "\n"); + UPDATE_PTR_LEFT(n, ptr, left); + + return ptr - buf; +} + +static QPN_ATTR_RO(context); +static QPN_ATTR_RO(summary); + +static struct attribute *usnic_ib_qpn_default_attrs[] = { + &qpn_attr_context.attr, + &qpn_attr_summary.attr, + NULL +}; + +static struct kobj_type usnic_ib_qpn_type = { + .sysfs_ops = &usnic_ib_qpn_sysfs_ops, + .default_attrs = usnic_ib_qpn_default_attrs +}; + +int usnic_ib_sysfs_register_usdev(struct usnic_ib_dev *us_ibdev) +{ + int i; + int err; + for (i = 0; i < ARRAY_SIZE(usnic_class_attributes); ++i) { + err = device_create_file(&us_ibdev->ib_dev.dev, + usnic_class_attributes[i]); + if (err) { + usnic_err("Failed to create device file %d for %s eith err %d", + i, us_ibdev->ib_dev.name, err); + return -EINVAL; + } + } + + /* create kernel object for looking at individual QPs */ + kobject_get(&us_ibdev->ib_dev.dev.kobj); + us_ibdev->qpn_kobj = kobject_create_and_add("qpn", + &us_ibdev->ib_dev.dev.kobj); + if (us_ibdev->qpn_kobj == NULL) { + kobject_put(&us_ibdev->ib_dev.dev.kobj); + return -ENOMEM; + } + + return 0; +} + +void usnic_ib_sysfs_unregister_usdev(struct usnic_ib_dev *us_ibdev) +{ + int i; + for (i = 0; i < ARRAY_SIZE(usnic_class_attributes); ++i) { + device_remove_file(&us_ibdev->ib_dev.dev, + usnic_class_attributes[i]); + } + + kobject_put(us_ibdev->qpn_kobj); +} + +void usnic_ib_sysfs_qpn_add(struct usnic_ib_qp_grp *qp_grp) +{ + struct usnic_ib_dev *us_ibdev; + int err; + + us_ibdev = qp_grp->vf->pf; + + err = kobject_init_and_add(&qp_grp->kobj, &usnic_ib_qpn_type, + kobject_get(us_ibdev->qpn_kobj), + "%d", qp_grp->grp_id); + if (err) { + kobject_put(us_ibdev->qpn_kobj); + return; + } +} + +void usnic_ib_sysfs_qpn_remove(struct usnic_ib_qp_grp *qp_grp) +{ + struct usnic_ib_dev *us_ibdev; + + us_ibdev = qp_grp->vf->pf; + + kobject_put(&qp_grp->kobj); + kobject_put(us_ibdev->qpn_kobj); +} --- linux-3.13.0.orig/drivers/infiniband/hw/usnic/usnic_ib_sysfs.h +++ linux-3.13.0/drivers/infiniband/hw/usnic/usnic_ib_sysfs.h @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2013, Cisco Systems, Inc. All rights reserved. + * + * This program is free software; you may 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. + * + * 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. + * + */ + +#ifndef USNIC_IB_SYSFS_H_ +#define USNIC_IB_SYSFS_H_ + +#include "usnic_ib.h" + +int usnic_ib_sysfs_register_usdev(struct usnic_ib_dev *us_ibdev); +void usnic_ib_sysfs_unregister_usdev(struct usnic_ib_dev *us_ibdev); +void usnic_ib_sysfs_qpn_add(struct usnic_ib_qp_grp *qp_grp); +void usnic_ib_sysfs_qpn_remove(struct usnic_ib_qp_grp *qp_grp); + +#endif /* !USNIC_IB_SYSFS_H_ */ --- linux-3.13.0.orig/drivers/infiniband/hw/usnic/usnic_ib_verbs.c +++ linux-3.13.0/drivers/infiniband/hw/usnic/usnic_ib_verbs.c @@ -0,0 +1,765 @@ +/* + * Copyright (c) 2013, Cisco Systems, Inc. All rights reserved. + * + * This program is free software; you may 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. + * + * 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 + +#include +#include + +#include "usnic_abi.h" +#include "usnic_ib.h" +#include "usnic_common_util.h" +#include "usnic_ib_qp_grp.h" +#include "usnic_fwd.h" +#include "usnic_log.h" +#include "usnic_uiom.h" +#include "usnic_transport.h" + +#define USNIC_DEFAULT_TRANSPORT USNIC_TRANSPORT_ROCE_CUSTOM + +static void usnic_ib_fw_string_to_u64(char *fw_ver_str, u64 *fw_ver) +{ + *fw_ver = (u64) *fw_ver_str; +} + +static int usnic_ib_fill_create_qp_resp(struct usnic_ib_qp_grp *qp_grp, + struct ib_udata *udata) +{ + struct usnic_ib_dev *us_ibdev; + struct usnic_ib_create_qp_resp resp; + struct pci_dev *pdev; + struct vnic_dev_bar *bar; + struct usnic_vnic_res_chunk *chunk; + struct usnic_ib_qp_grp_flow *default_flow; + int i, err; + + memset(&resp, 0, sizeof(resp)); + + us_ibdev = qp_grp->vf->pf; + pdev = usnic_vnic_get_pdev(qp_grp->vf->vnic); + if (!pdev) { + usnic_err("Failed to get pdev of qp_grp %d\n", + qp_grp->grp_id); + return -EFAULT; + } + + bar = usnic_vnic_get_bar(qp_grp->vf->vnic, 0); + if (!bar) { + usnic_err("Failed to get bar0 of qp_grp %d vf %s", + qp_grp->grp_id, pci_name(pdev)); + return -EFAULT; + } + + resp.vfid = usnic_vnic_get_index(qp_grp->vf->vnic); + resp.bar_bus_addr = bar->bus_addr; + resp.bar_len = bar->len; + + chunk = usnic_ib_qp_grp_get_chunk(qp_grp, USNIC_VNIC_RES_TYPE_RQ); + if (IS_ERR_OR_NULL(chunk)) { + usnic_err("Failed to get chunk %s for qp_grp %d with err %ld\n", + usnic_vnic_res_type_to_str(USNIC_VNIC_RES_TYPE_RQ), + qp_grp->grp_id, + PTR_ERR(chunk)); + return chunk ? PTR_ERR(chunk) : -ENOMEM; + } + + WARN_ON(chunk->type != USNIC_VNIC_RES_TYPE_RQ); + resp.rq_cnt = chunk->cnt; + for (i = 0; i < chunk->cnt; i++) + resp.rq_idx[i] = chunk->res[i]->vnic_idx; + + chunk = usnic_ib_qp_grp_get_chunk(qp_grp, USNIC_VNIC_RES_TYPE_WQ); + if (IS_ERR_OR_NULL(chunk)) { + usnic_err("Failed to get chunk %s for qp_grp %d with err %ld\n", + usnic_vnic_res_type_to_str(USNIC_VNIC_RES_TYPE_WQ), + qp_grp->grp_id, + PTR_ERR(chunk)); + return chunk ? PTR_ERR(chunk) : -ENOMEM; + } + + WARN_ON(chunk->type != USNIC_VNIC_RES_TYPE_WQ); + resp.wq_cnt = chunk->cnt; + for (i = 0; i < chunk->cnt; i++) + resp.wq_idx[i] = chunk->res[i]->vnic_idx; + + chunk = usnic_ib_qp_grp_get_chunk(qp_grp, USNIC_VNIC_RES_TYPE_CQ); + if (IS_ERR_OR_NULL(chunk)) { + usnic_err("Failed to get chunk %s for qp_grp %d with err %ld\n", + usnic_vnic_res_type_to_str(USNIC_VNIC_RES_TYPE_CQ), + qp_grp->grp_id, + PTR_ERR(chunk)); + return chunk ? PTR_ERR(chunk) : -ENOMEM; + } + + WARN_ON(chunk->type != USNIC_VNIC_RES_TYPE_CQ); + resp.cq_cnt = chunk->cnt; + for (i = 0; i < chunk->cnt; i++) + resp.cq_idx[i] = chunk->res[i]->vnic_idx; + + default_flow = list_first_entry(&qp_grp->flows_lst, + struct usnic_ib_qp_grp_flow, link); + resp.transport = default_flow->trans_type; + + err = ib_copy_to_udata(udata, &resp, sizeof(resp)); + if (err) { + usnic_err("Failed to copy udata for %s", us_ibdev->ib_dev.name); + return err; + } + + return 0; +} + +static struct usnic_ib_qp_grp* +find_free_vf_and_create_qp_grp(struct usnic_ib_dev *us_ibdev, + struct usnic_ib_pd *pd, + struct usnic_transport_spec *trans_spec, + struct usnic_vnic_res_spec *res_spec) +{ + struct usnic_ib_vf *vf; + struct usnic_vnic *vnic; + struct usnic_ib_qp_grp *qp_grp; + struct device *dev, **dev_list; + int i, found = 0; + + BUG_ON(!mutex_is_locked(&us_ibdev->usdev_lock)); + + if (list_empty(&us_ibdev->vf_dev_list)) { + usnic_info("No vfs to allocate\n"); + return NULL; + } + + if (usnic_ib_share_vf) { + /* Try to find resouces on a used vf which is in pd */ + dev_list = usnic_uiom_get_dev_list(pd->umem_pd); + for (i = 0; dev_list[i]; i++) { + dev = dev_list[i]; + vf = pci_get_drvdata(to_pci_dev(dev)); + spin_lock(&vf->lock); + vnic = vf->vnic; + if (!usnic_vnic_check_room(vnic, res_spec)) { + usnic_dbg("Found used vnic %s from %s\n", + us_ibdev->ib_dev.name, + pci_name(usnic_vnic_get_pdev( + vnic))); + found = 1; + break; + } + spin_unlock(&vf->lock); + + } + usnic_uiom_free_dev_list(dev_list); + } + + if (!found) { + /* Try to find resources on an unused vf */ + list_for_each_entry(vf, &us_ibdev->vf_dev_list, link) { + spin_lock(&vf->lock); + vnic = vf->vnic; + if (vf->qp_grp_ref_cnt == 0 && + usnic_vnic_check_room(vnic, res_spec) == 0) { + found = 1; + break; + } + spin_unlock(&vf->lock); + } + } + + if (!found) { + usnic_info("No free qp grp found on %s\n", + us_ibdev->ib_dev.name); + return ERR_PTR(-ENOMEM); + } + + qp_grp = usnic_ib_qp_grp_create(us_ibdev->ufdev, vf, pd, res_spec, + trans_spec); + spin_unlock(&vf->lock); + if (IS_ERR_OR_NULL(qp_grp)) { + usnic_err("Failed to allocate qp_grp\n"); + return ERR_PTR(qp_grp ? PTR_ERR(qp_grp) : -ENOMEM); + } + + return qp_grp; +} + +static void qp_grp_destroy(struct usnic_ib_qp_grp *qp_grp) +{ + struct usnic_ib_vf *vf = qp_grp->vf; + + WARN_ON(qp_grp->state != IB_QPS_RESET); + + spin_lock(&vf->lock); + usnic_ib_qp_grp_destroy(qp_grp); + spin_unlock(&vf->lock); +} + +static void eth_speed_to_ib_speed(int speed, u8 *active_speed, + u8 *active_width) +{ + if (speed <= 10000) { + *active_width = IB_WIDTH_1X; + *active_speed = IB_SPEED_FDR10; + } else if (speed <= 20000) { + *active_width = IB_WIDTH_4X; + *active_speed = IB_SPEED_DDR; + } else if (speed <= 30000) { + *active_width = IB_WIDTH_4X; + *active_speed = IB_SPEED_QDR; + } else if (speed <= 40000) { + *active_width = IB_WIDTH_4X; + *active_speed = IB_SPEED_FDR10; + } else { + *active_width = IB_WIDTH_4X; + *active_speed = IB_SPEED_EDR; + } +} + +static int create_qp_validate_user_data(struct usnic_ib_create_qp_cmd cmd) +{ + if (cmd.spec.trans_type <= USNIC_TRANSPORT_UNKNOWN || + cmd.spec.trans_type >= USNIC_TRANSPORT_MAX) + return -EINVAL; + + return 0; +} + +/* Start of ib callback functions */ + +enum rdma_link_layer usnic_ib_port_link_layer(struct ib_device *device, + u8 port_num) +{ + return IB_LINK_LAYER_ETHERNET; +} + +int usnic_ib_query_device(struct ib_device *ibdev, + struct ib_device_attr *props) +{ + struct usnic_ib_dev *us_ibdev = to_usdev(ibdev); + union ib_gid gid; + struct ethtool_drvinfo info; + struct ethtool_cmd cmd; + int qp_per_vf; + + usnic_dbg("\n"); + mutex_lock(&us_ibdev->usdev_lock); + us_ibdev->netdev->ethtool_ops->get_drvinfo(us_ibdev->netdev, &info); + us_ibdev->netdev->ethtool_ops->get_settings(us_ibdev->netdev, &cmd); + memset(props, 0, sizeof(*props)); + usnic_mac_ip_to_gid(us_ibdev->ufdev->mac, us_ibdev->ufdev->inaddr, + &gid.raw[0]); + memcpy(&props->sys_image_guid, &gid.global.interface_id, + sizeof(gid.global.interface_id)); + usnic_ib_fw_string_to_u64(&info.fw_version[0], &props->fw_ver); + props->max_mr_size = USNIC_UIOM_MAX_MR_SIZE; + props->page_size_cap = USNIC_UIOM_PAGE_SIZE; + props->vendor_id = PCI_VENDOR_ID_CISCO; + props->vendor_part_id = PCI_DEVICE_ID_CISCO_VIC_USPACE_NIC; + props->hw_ver = us_ibdev->pdev->subsystem_device; + qp_per_vf = max(us_ibdev->vf_res_cnt[USNIC_VNIC_RES_TYPE_WQ], + us_ibdev->vf_res_cnt[USNIC_VNIC_RES_TYPE_RQ]); + props->max_qp = qp_per_vf * + atomic_read(&us_ibdev->vf_cnt.refcount); + props->device_cap_flags = IB_DEVICE_PORT_ACTIVE_EVENT | + IB_DEVICE_SYS_IMAGE_GUID | IB_DEVICE_BLOCK_MULTICAST_LOOPBACK; + props->max_cq = us_ibdev->vf_res_cnt[USNIC_VNIC_RES_TYPE_CQ] * + atomic_read(&us_ibdev->vf_cnt.refcount); + props->max_pd = USNIC_UIOM_MAX_PD_CNT; + props->max_mr = USNIC_UIOM_MAX_MR_CNT; + props->local_ca_ack_delay = 0; + props->max_pkeys = 0; + props->atomic_cap = IB_ATOMIC_NONE; + props->masked_atomic_cap = props->atomic_cap; + props->max_qp_rd_atom = 0; + props->max_qp_init_rd_atom = 0; + props->max_res_rd_atom = 0; + props->max_srq = 0; + props->max_srq_wr = 0; + props->max_srq_sge = 0; + props->max_fast_reg_page_list_len = 0; + props->max_mcast_grp = 0; + props->max_mcast_qp_attach = 0; + props->max_total_mcast_qp_attach = 0; + props->max_map_per_fmr = 0; + /* Owned by Userspace + * max_qp_wr, max_sge, max_sge_rd, max_cqe */ + mutex_unlock(&us_ibdev->usdev_lock); + + return 0; +} + +int usnic_ib_query_port(struct ib_device *ibdev, u8 port, + struct ib_port_attr *props) +{ + struct usnic_ib_dev *us_ibdev = to_usdev(ibdev); + struct ethtool_cmd cmd; + + usnic_dbg("\n"); + + mutex_lock(&us_ibdev->usdev_lock); + us_ibdev->netdev->ethtool_ops->get_settings(us_ibdev->netdev, &cmd); + memset(props, 0, sizeof(*props)); + + props->lid = 0; + props->lmc = 1; + props->sm_lid = 0; + props->sm_sl = 0; + + if (!us_ibdev->ufdev->link_up) { + props->state = IB_PORT_DOWN; + props->phys_state = 3; + } else if (!us_ibdev->ufdev->inaddr) { + props->state = IB_PORT_INIT; + props->phys_state = 4; + } else { + props->state = IB_PORT_ACTIVE; + props->phys_state = 5; + } + + props->port_cap_flags = 0; + props->gid_tbl_len = 1; + props->pkey_tbl_len = 1; + props->bad_pkey_cntr = 0; + props->qkey_viol_cntr = 0; + eth_speed_to_ib_speed(cmd.speed, &props->active_speed, + &props->active_width); + props->max_mtu = IB_MTU_4096; + props->active_mtu = iboe_get_mtu(us_ibdev->ufdev->mtu); + /* Userspace will adjust for hdrs */ + props->max_msg_sz = us_ibdev->ufdev->mtu; + props->max_vl_num = 1; + mutex_unlock(&us_ibdev->usdev_lock); + + return 0; +} + +int usnic_ib_query_qp(struct ib_qp *qp, struct ib_qp_attr *qp_attr, + int qp_attr_mask, + struct ib_qp_init_attr *qp_init_attr) +{ + struct usnic_ib_qp_grp *qp_grp; + struct usnic_ib_vf *vf; + int err; + + usnic_dbg("\n"); + + memset(qp_attr, 0, sizeof(*qp_attr)); + memset(qp_init_attr, 0, sizeof(*qp_init_attr)); + + qp_grp = to_uqp_grp(qp); + vf = qp_grp->vf; + mutex_lock(&vf->pf->usdev_lock); + usnic_dbg("\n"); + qp_attr->qp_state = qp_grp->state; + qp_attr->cur_qp_state = qp_grp->state; + + switch (qp_grp->ibqp.qp_type) { + case IB_QPT_UD: + qp_attr->qkey = 0; + break; + default: + usnic_err("Unexpected qp_type %d\n", qp_grp->ibqp.qp_type); + err = -EINVAL; + goto err_out; + } + + mutex_unlock(&vf->pf->usdev_lock); + return 0; + +err_out: + mutex_unlock(&vf->pf->usdev_lock); + return err; +} + +int usnic_ib_query_gid(struct ib_device *ibdev, u8 port, int index, + union ib_gid *gid) +{ + + struct usnic_ib_dev *us_ibdev = to_usdev(ibdev); + usnic_dbg("\n"); + + if (index > 1) + return -EINVAL; + + mutex_lock(&us_ibdev->usdev_lock); + memset(&(gid->raw[0]), 0, sizeof(gid->raw)); + usnic_mac_ip_to_gid(us_ibdev->ufdev->mac, us_ibdev->ufdev->inaddr, + &gid->raw[0]); + mutex_unlock(&us_ibdev->usdev_lock); + + return 0; +} + +int usnic_ib_query_pkey(struct ib_device *ibdev, u8 port, u16 index, + u16 *pkey) +{ + if (index > 1) + return -EINVAL; + + *pkey = 0xffff; + return 0; +} + +struct ib_pd *usnic_ib_alloc_pd(struct ib_device *ibdev, + struct ib_ucontext *context, + struct ib_udata *udata) +{ + struct usnic_ib_pd *pd; + void *umem_pd; + + usnic_dbg("\n"); + + pd = kzalloc(sizeof(*pd), GFP_KERNEL); + if (!pd) + return ERR_PTR(-ENOMEM); + + umem_pd = pd->umem_pd = usnic_uiom_alloc_pd(); + if (IS_ERR_OR_NULL(umem_pd)) { + kfree(pd); + return ERR_PTR(umem_pd ? PTR_ERR(umem_pd) : -ENOMEM); + } + + usnic_info("domain 0x%p allocated for context 0x%p and device %s\n", + pd, context, ibdev->name); + return &pd->ibpd; +} + +int usnic_ib_dealloc_pd(struct ib_pd *pd) +{ + usnic_info("freeing domain 0x%p\n", pd); + + usnic_uiom_dealloc_pd((to_upd(pd))->umem_pd); + kfree(pd); + return 0; +} + +struct ib_qp *usnic_ib_create_qp(struct ib_pd *pd, + struct ib_qp_init_attr *init_attr, + struct ib_udata *udata) +{ + int err; + struct usnic_ib_dev *us_ibdev; + struct usnic_ib_qp_grp *qp_grp; + struct usnic_ib_ucontext *ucontext; + int cq_cnt; + struct usnic_vnic_res_spec res_spec; + struct usnic_ib_create_qp_cmd cmd; + struct usnic_transport_spec trans_spec; + + usnic_dbg("\n"); + + ucontext = to_uucontext(pd->uobject->context); + us_ibdev = to_usdev(pd->device); + + err = ib_copy_from_udata(&cmd, udata, sizeof(cmd)); + if (err) { + usnic_err("%s: cannot copy udata for create_qp\n", + us_ibdev->ib_dev.name); + return ERR_PTR(-EINVAL); + } + + err = create_qp_validate_user_data(cmd); + if (err) { + usnic_err("%s: Failed to validate user data\n", + us_ibdev->ib_dev.name); + return ERR_PTR(-EINVAL); + } + + if (init_attr->qp_type != IB_QPT_UD) { + usnic_err("%s asked to make a non-UD QP: %d\n", + us_ibdev->ib_dev.name, init_attr->qp_type); + return ERR_PTR(-EINVAL); + } + + trans_spec = cmd.spec; + mutex_lock(&us_ibdev->usdev_lock); + cq_cnt = (init_attr->send_cq == init_attr->recv_cq) ? 1 : 2; + res_spec = min_transport_spec[trans_spec.trans_type]; + usnic_vnic_res_spec_update(&res_spec, USNIC_VNIC_RES_TYPE_CQ, cq_cnt); + qp_grp = find_free_vf_and_create_qp_grp(us_ibdev, to_upd(pd), + &trans_spec, + &res_spec); + if (IS_ERR_OR_NULL(qp_grp)) { + err = qp_grp ? PTR_ERR(qp_grp) : -ENOMEM; + goto out_release_mutex; + } + + err = usnic_ib_fill_create_qp_resp(qp_grp, udata); + if (err) { + err = -EBUSY; + goto out_release_qp_grp; + } + + qp_grp->ctx = ucontext; + list_add_tail(&qp_grp->link, &ucontext->qp_grp_list); + usnic_ib_log_vf(qp_grp->vf); + mutex_unlock(&us_ibdev->usdev_lock); + return &qp_grp->ibqp; + +out_release_qp_grp: + qp_grp_destroy(qp_grp); +out_release_mutex: + mutex_unlock(&us_ibdev->usdev_lock); + return ERR_PTR(err); +} + +int usnic_ib_destroy_qp(struct ib_qp *qp) +{ + struct usnic_ib_qp_grp *qp_grp; + struct usnic_ib_vf *vf; + + usnic_dbg("\n"); + + qp_grp = to_uqp_grp(qp); + vf = qp_grp->vf; + mutex_lock(&vf->pf->usdev_lock); + if (usnic_ib_qp_grp_modify(qp_grp, IB_QPS_RESET, NULL)) { + usnic_err("Failed to move qp grp %u to reset\n", + qp_grp->grp_id); + } + + list_del(&qp_grp->link); + qp_grp_destroy(qp_grp); + mutex_unlock(&vf->pf->usdev_lock); + + return 0; +} + +int usnic_ib_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr, + int attr_mask, struct ib_udata *udata) +{ + struct usnic_ib_qp_grp *qp_grp; + int status; + usnic_dbg("\n"); + + qp_grp = to_uqp_grp(ibqp); + + /* TODO: Future Support All States */ + mutex_lock(&qp_grp->vf->pf->usdev_lock); + if ((attr_mask & IB_QP_STATE) && attr->qp_state == IB_QPS_INIT) { + status = usnic_ib_qp_grp_modify(qp_grp, IB_QPS_INIT, NULL); + } else if ((attr_mask & IB_QP_STATE) && attr->qp_state == IB_QPS_RTR) { + status = usnic_ib_qp_grp_modify(qp_grp, IB_QPS_RTR, NULL); + } else if ((attr_mask & IB_QP_STATE) && attr->qp_state == IB_QPS_RTS) { + status = usnic_ib_qp_grp_modify(qp_grp, IB_QPS_RTS, NULL); + } else { + usnic_err("Unexpected combination mask: %u state: %u\n", + attr_mask & IB_QP_STATE, attr->qp_state); + status = -EINVAL; + } + + mutex_unlock(&qp_grp->vf->pf->usdev_lock); + return status; +} + +struct ib_cq *usnic_ib_create_cq(struct ib_device *ibdev, int entries, + int vector, struct ib_ucontext *context, + struct ib_udata *udata) +{ + struct ib_cq *cq; + + usnic_dbg("\n"); + cq = kzalloc(sizeof(*cq), GFP_KERNEL); + if (!cq) + return ERR_PTR(-EBUSY); + + return cq; +} + +int usnic_ib_destroy_cq(struct ib_cq *cq) +{ + usnic_dbg("\n"); + kfree(cq); + return 0; +} + +struct ib_mr *usnic_ib_reg_mr(struct ib_pd *pd, u64 start, u64 length, + u64 virt_addr, int access_flags, + struct ib_udata *udata) +{ + struct usnic_ib_mr *mr; + int err; + + usnic_dbg("start 0x%llx va 0x%llx length 0x%llx\n", start, + virt_addr, length); + + mr = kzalloc(sizeof(*mr), GFP_KERNEL); + if (IS_ERR_OR_NULL(mr)) + return ERR_PTR(mr ? PTR_ERR(mr) : -ENOMEM); + + mr->umem = usnic_uiom_reg_get(to_upd(pd)->umem_pd, start, length, + access_flags, 0); + if (IS_ERR_OR_NULL(mr->umem)) { + err = mr->umem ? PTR_ERR(mr->umem) : -EFAULT; + goto err_free; + } + + mr->ibmr.lkey = mr->ibmr.rkey = 0; + return &mr->ibmr; + +err_free: + kfree(mr); + return ERR_PTR(err); +} + +int usnic_ib_dereg_mr(struct ib_mr *ibmr) +{ + struct usnic_ib_mr *mr = to_umr(ibmr); + + usnic_dbg("va 0x%lx length 0x%zx\n", mr->umem->va, mr->umem->length); + + usnic_uiom_reg_release(mr->umem, ibmr->pd->uobject->context->closing); + kfree(mr); + return 0; +} + +struct ib_ucontext *usnic_ib_alloc_ucontext(struct ib_device *ibdev, + struct ib_udata *udata) +{ + struct usnic_ib_ucontext *context; + struct usnic_ib_dev *us_ibdev = to_usdev(ibdev); + usnic_dbg("\n"); + + context = kmalloc(sizeof(*context), GFP_KERNEL); + if (!context) + return ERR_PTR(-ENOMEM); + + INIT_LIST_HEAD(&context->qp_grp_list); + mutex_lock(&us_ibdev->usdev_lock); + list_add_tail(&context->link, &us_ibdev->ctx_list); + mutex_unlock(&us_ibdev->usdev_lock); + + return &context->ibucontext; +} + +int usnic_ib_dealloc_ucontext(struct ib_ucontext *ibcontext) +{ + struct usnic_ib_ucontext *context = to_uucontext(ibcontext); + struct usnic_ib_dev *us_ibdev = to_usdev(ibcontext->device); + usnic_dbg("\n"); + + mutex_lock(&us_ibdev->usdev_lock); + BUG_ON(!list_empty(&context->qp_grp_list)); + list_del(&context->link); + mutex_unlock(&us_ibdev->usdev_lock); + kfree(context); + return 0; +} + +int usnic_ib_mmap(struct ib_ucontext *context, + struct vm_area_struct *vma) +{ + struct usnic_ib_ucontext *uctx = to_ucontext(context); + struct usnic_ib_dev *us_ibdev; + struct usnic_ib_qp_grp *qp_grp; + struct usnic_ib_vf *vf; + struct vnic_dev_bar *bar; + dma_addr_t bus_addr; + unsigned int len; + unsigned int vfid; + + usnic_dbg("\n"); + + us_ibdev = to_usdev(context->device); + vma->vm_flags |= VM_IO; + vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); + vfid = vma->vm_pgoff; + usnic_dbg("Page Offset %lu PAGE_SHIFT %u VFID %u\n", + vma->vm_pgoff, PAGE_SHIFT, vfid); + + mutex_lock(&us_ibdev->usdev_lock); + list_for_each_entry(qp_grp, &uctx->qp_grp_list, link) { + vf = qp_grp->vf; + if (usnic_vnic_get_index(vf->vnic) == vfid) { + bar = usnic_vnic_get_bar(vf->vnic, 0); + if ((vma->vm_end - vma->vm_start) != bar->len) { + usnic_err("Bar0 Len %lu - Request map %lu\n", + bar->len, + vma->vm_end - vma->vm_start); + mutex_unlock(&us_ibdev->usdev_lock); + return -EINVAL; + } + bus_addr = bar->bus_addr; + len = bar->len; + usnic_dbg("bus: %pa vaddr: %p size: %ld\n", + &bus_addr, bar->vaddr, bar->len); + mutex_unlock(&us_ibdev->usdev_lock); + + return remap_pfn_range(vma, + vma->vm_start, + bus_addr >> PAGE_SHIFT, + len, vma->vm_page_prot); + } + } + + mutex_unlock(&us_ibdev->usdev_lock); + usnic_err("No VF %u found\n", vfid); + return -EINVAL; +} + +/* In ib callbacks section - Start of stub funcs */ +struct ib_ah *usnic_ib_create_ah(struct ib_pd *pd, + struct ib_ah_attr *ah_attr) +{ + usnic_dbg("\n"); + return ERR_PTR(-EPERM); +} + +int usnic_ib_destroy_ah(struct ib_ah *ah) +{ + usnic_dbg("\n"); + return -EINVAL; +} + +int usnic_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr, + struct ib_send_wr **bad_wr) +{ + usnic_dbg("\n"); + return -EINVAL; +} + +int usnic_ib_post_recv(struct ib_qp *ibqp, struct ib_recv_wr *wr, + struct ib_recv_wr **bad_wr) +{ + usnic_dbg("\n"); + return -EINVAL; +} + +int usnic_ib_poll_cq(struct ib_cq *ibcq, int num_entries, + struct ib_wc *wc) +{ + usnic_dbg("\n"); + return -EINVAL; +} + +int usnic_ib_req_notify_cq(struct ib_cq *cq, + enum ib_cq_notify_flags flags) +{ + usnic_dbg("\n"); + return -EINVAL; +} + +struct ib_mr *usnic_ib_get_dma_mr(struct ib_pd *pd, int acc) +{ + usnic_dbg("\n"); + return ERR_PTR(-ENOMEM); +} + + +/* In ib callbacks section - End of stub funcs */ +/* End of ib callbacks section */ --- linux-3.13.0.orig/drivers/infiniband/hw/usnic/usnic_ib_verbs.h +++ linux-3.13.0/drivers/infiniband/hw/usnic/usnic_ib_verbs.h @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2013, Cisco Systems, Inc. All rights reserved. + * + * This program is free software; you may 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. + * + * 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. + * + */ + +#ifndef USNIC_IB_VERBS_H_ +#define USNIC_IB_VERBS_H_ + +#include "usnic_ib.h" + +enum rdma_link_layer usnic_ib_port_link_layer(struct ib_device *device, + u8 port_num); +int usnic_ib_query_device(struct ib_device *ibdev, + struct ib_device_attr *props); +int usnic_ib_query_port(struct ib_device *ibdev, u8 port, + struct ib_port_attr *props); +int usnic_ib_query_qp(struct ib_qp *qp, struct ib_qp_attr *qp_attr, + int qp_attr_mask, + struct ib_qp_init_attr *qp_init_attr); +int usnic_ib_query_gid(struct ib_device *ibdev, u8 port, int index, + union ib_gid *gid); +int usnic_ib_query_pkey(struct ib_device *ibdev, u8 port, u16 index, + u16 *pkey); +struct ib_pd *usnic_ib_alloc_pd(struct ib_device *ibdev, + struct ib_ucontext *context, + struct ib_udata *udata); +int usnic_ib_dealloc_pd(struct ib_pd *pd); +struct ib_qp *usnic_ib_create_qp(struct ib_pd *pd, + struct ib_qp_init_attr *init_attr, + struct ib_udata *udata); +int usnic_ib_destroy_qp(struct ib_qp *qp); +int usnic_ib_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr, + int attr_mask, struct ib_udata *udata); +struct ib_cq *usnic_ib_create_cq(struct ib_device *ibdev, int entries, + int vector, struct ib_ucontext *context, + struct ib_udata *udata); +int usnic_ib_destroy_cq(struct ib_cq *cq); +struct ib_mr *usnic_ib_reg_mr(struct ib_pd *pd, u64 start, u64 length, + u64 virt_addr, int access_flags, + struct ib_udata *udata); +int usnic_ib_dereg_mr(struct ib_mr *ibmr); +struct ib_ucontext *usnic_ib_alloc_ucontext(struct ib_device *ibdev, + struct ib_udata *udata); +int usnic_ib_dealloc_ucontext(struct ib_ucontext *ibcontext); +int usnic_ib_mmap(struct ib_ucontext *context, + struct vm_area_struct *vma); +struct ib_ah *usnic_ib_create_ah(struct ib_pd *pd, + struct ib_ah_attr *ah_attr); +int usnic_ib_destroy_ah(struct ib_ah *ah); +int usnic_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr, + struct ib_send_wr **bad_wr); +int usnic_ib_post_recv(struct ib_qp *ibqp, struct ib_recv_wr *wr, + struct ib_recv_wr **bad_wr); +int usnic_ib_poll_cq(struct ib_cq *ibcq, int num_entries, + struct ib_wc *wc); +int usnic_ib_req_notify_cq(struct ib_cq *cq, + enum ib_cq_notify_flags flags); +struct ib_mr *usnic_ib_get_dma_mr(struct ib_pd *pd, int acc); +#endif /* !USNIC_IB_VERBS_H */ --- linux-3.13.0.orig/drivers/infiniband/hw/usnic/usnic_log.h +++ linux-3.13.0/drivers/infiniband/hw/usnic/usnic_log.h @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2013, Cisco Systems, Inc. All rights reserved. + * + * This program is free software; you may 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. + * + * 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. + * + */ + +#ifndef USNIC_LOG_H_ +#define USNIC_LOG_H_ + +#include "usnic.h" + +extern unsigned int usnic_log_lvl; + +#define USNIC_LOG_LVL_NONE (0) +#define USNIC_LOG_LVL_ERR (1) +#define USNIC_LOG_LVL_INFO (2) +#define USNIC_LOG_LVL_DBG (3) + +#define usnic_printk(lvl, args...) \ + do { \ + printk(lvl "%s:%s:%d: ", DRV_NAME, __func__, \ + __LINE__); \ + printk(args); \ + } while (0) + +#define usnic_dbg(args...) \ + do { \ + if (unlikely(usnic_log_lvl >= USNIC_LOG_LVL_DBG)) { \ + usnic_printk(KERN_INFO, args); \ + } \ +} while (0) + +#define usnic_info(args...) \ +do { \ + if (usnic_log_lvl >= USNIC_LOG_LVL_INFO) { \ + usnic_printk(KERN_INFO, args); \ + } \ +} while (0) + +#define usnic_err(args...) \ + do { \ + if (usnic_log_lvl >= USNIC_LOG_LVL_ERR) { \ + usnic_printk(KERN_ERR, args); \ + } \ + } while (0) +#endif /* !USNIC_LOG_H_ */ --- linux-3.13.0.orig/drivers/infiniband/hw/usnic/usnic_transport.c +++ linux-3.13.0/drivers/infiniband/hw/usnic/usnic_transport.c @@ -0,0 +1,202 @@ +/* + * Copyright (c) 2013, Cisco Systems, Inc. All rights reserved. + * + * This program is free software; you may 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. + * + * 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 +#include + +#include "usnic_transport.h" +#include "usnic_log.h" + +/* ROCE */ +static unsigned long *roce_bitmap; +static u16 roce_next_port = 1; +#define ROCE_BITMAP_SZ ((1 << (8 /*CHAR_BIT*/ * sizeof(u16)))/8 /*CHAR BIT*/) +static DEFINE_SPINLOCK(roce_bitmap_lock); + +const char *usnic_transport_to_str(enum usnic_transport_type type) +{ + switch (type) { + case USNIC_TRANSPORT_UNKNOWN: + return "Unknown"; + case USNIC_TRANSPORT_ROCE_CUSTOM: + return "roce custom"; + case USNIC_TRANSPORT_IPV4_UDP: + return "IPv4 UDP"; + case USNIC_TRANSPORT_MAX: + return "Max?"; + default: + return "Not known"; + } +} + +int usnic_transport_sock_to_str(char *buf, int buf_sz, + struct socket *sock) +{ + int err; + uint32_t addr; + uint16_t port; + int proto; + + memset(buf, 0, buf_sz); + err = usnic_transport_sock_get_addr(sock, &proto, &addr, &port); + if (err) + return 0; + + return scnprintf(buf, buf_sz, "Proto:%u Addr:%pI4h Port:%hu", + proto, &addr, port); +} + +/* + * reserve a port number. if "0" specified, we will try to pick one + * starting at roce_next_port. roce_next_port will take on the values + * 1..4096 + */ +u16 usnic_transport_rsrv_port(enum usnic_transport_type type, u16 port_num) +{ + if (type == USNIC_TRANSPORT_ROCE_CUSTOM) { + spin_lock(&roce_bitmap_lock); + if (!port_num) { + port_num = bitmap_find_next_zero_area(roce_bitmap, + ROCE_BITMAP_SZ, + roce_next_port /* start */, + 1 /* nr */, + 0 /* align */); + roce_next_port = (port_num & 4095) + 1; + } else if (test_bit(port_num, roce_bitmap)) { + usnic_err("Failed to allocate port for %s\n", + usnic_transport_to_str(type)); + spin_unlock(&roce_bitmap_lock); + goto out_fail; + } + bitmap_set(roce_bitmap, port_num, 1); + spin_unlock(&roce_bitmap_lock); + } else { + usnic_err("Failed to allocate port - transport %s unsupported\n", + usnic_transport_to_str(type)); + goto out_fail; + } + + usnic_dbg("Allocating port %hu for %s\n", port_num, + usnic_transport_to_str(type)); + return port_num; + +out_fail: + return 0; +} + +void usnic_transport_unrsrv_port(enum usnic_transport_type type, u16 port_num) +{ + if (type == USNIC_TRANSPORT_ROCE_CUSTOM) { + spin_lock(&roce_bitmap_lock); + if (!port_num) { + usnic_err("Unreserved unvalid port num 0 for %s\n", + usnic_transport_to_str(type)); + goto out_roce_custom; + } + + if (!test_bit(port_num, roce_bitmap)) { + usnic_err("Unreserving invalid %hu for %s\n", + port_num, + usnic_transport_to_str(type)); + goto out_roce_custom; + } + bitmap_clear(roce_bitmap, port_num, 1); + usnic_dbg("Freeing port %hu for %s\n", port_num, + usnic_transport_to_str(type)); +out_roce_custom: + spin_unlock(&roce_bitmap_lock); + } else { + usnic_err("Freeing invalid port %hu for %d\n", port_num, type); + } +} + +struct socket *usnic_transport_get_socket(int sock_fd) +{ + struct socket *sock; + int err; + char buf[25]; + + /* sockfd_lookup will internally do a fget */ + sock = sockfd_lookup(sock_fd, &err); + if (!sock) { + usnic_err("Unable to lookup socket for fd %d with err %d\n", + sock_fd, err); + return ERR_PTR(-ENOENT); + } + + usnic_transport_sock_to_str(buf, sizeof(buf), sock); + usnic_dbg("Get sock %s\n", buf); + + return sock; +} + +void usnic_transport_put_socket(struct socket *sock) +{ + char buf[100]; + + usnic_transport_sock_to_str(buf, sizeof(buf), sock); + usnic_dbg("Put sock %s\n", buf); + sockfd_put(sock); +} + +int usnic_transport_sock_get_addr(struct socket *sock, int *proto, + uint32_t *addr, uint16_t *port) +{ + int len; + int err; + struct sockaddr_in sock_addr; + + err = sock->ops->getname(sock, + (struct sockaddr *)&sock_addr, + &len, 0); + if (err) + return err; + + if (sock_addr.sin_family != AF_INET) + return -EINVAL; + + if (proto) + *proto = sock->sk->sk_protocol; + if (port) + *port = ntohs(((struct sockaddr_in *)&sock_addr)->sin_port); + if (addr) + *addr = ntohl(((struct sockaddr_in *) + &sock_addr)->sin_addr.s_addr); + + return 0; +} + +int usnic_transport_init(void) +{ + roce_bitmap = kzalloc(ROCE_BITMAP_SZ, GFP_KERNEL); + if (!roce_bitmap) { + usnic_err("Failed to allocate bit map"); + return -ENOMEM; + } + + /* Do not ever allocate bit 0, hence set it here */ + bitmap_set(roce_bitmap, 0, 1); + return 0; +} + +void usnic_transport_fini(void) +{ + kfree(roce_bitmap); +} --- linux-3.13.0.orig/drivers/infiniband/hw/usnic/usnic_transport.h +++ linux-3.13.0/drivers/infiniband/hw/usnic/usnic_transport.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2013, Cisco Systems, Inc. All rights reserved. + * + * This program is free software; you may 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. + * + * 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. + * + */ + +#ifndef USNIC_TRANSPORT_H_ +#define USNIC_TRANSPORT_H_ + +#include "usnic_abi.h" + +const char *usnic_transport_to_str(enum usnic_transport_type trans_type); +/* + * Returns number of bytes written, excluding null terminator. If + * nothing was written, the function returns 0. + */ +int usnic_transport_sock_to_str(char *buf, int buf_sz, + struct socket *sock); +/* + * Reserve a port. If "port_num" is set, then the function will try + * to reserve that particular port. + */ +u16 usnic_transport_rsrv_port(enum usnic_transport_type type, u16 port_num); +void usnic_transport_unrsrv_port(enum usnic_transport_type type, u16 port_num); +/* + * Do a fget on the socket refered to by sock_fd and returns the socket. + * Socket will not be destroyed before usnic_transport_put_socket has + * been called. + */ +struct socket *usnic_transport_get_socket(int sock_fd); +void usnic_transport_put_socket(struct socket *sock); +/* + * Call usnic_transport_get_socket before calling *_sock_get_addr + */ +int usnic_transport_sock_get_addr(struct socket *sock, int *proto, + uint32_t *addr, uint16_t *port); +int usnic_transport_init(void); +void usnic_transport_fini(void); +#endif /* !USNIC_TRANSPORT_H */ --- linux-3.13.0.orig/drivers/infiniband/hw/usnic/usnic_uiom.c +++ linux-3.13.0/drivers/infiniband/hw/usnic/usnic_uiom.c @@ -0,0 +1,604 @@ +/* + * Copyright (c) 2005 Topspin Communications. All rights reserved. + * Copyright (c) 2005 Mellanox Technologies. All rights reserved. + * Copyright (c) 2013 Cisco Systems. All rights reserved. + * + * This software is available to you under a choice of one of two + * licenses. You may choose to be licensed under the terms of the GNU + * General Public License (GPL) Version 2, available from the file + * COPYING in the main directory of this source tree, or the + * OpenIB.org BSD license below: + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * - Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * + * - Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "usnic_log.h" +#include "usnic_uiom.h" +#include "usnic_uiom_interval_tree.h" + +static struct workqueue_struct *usnic_uiom_wq; + +#define USNIC_UIOM_PAGE_CHUNK \ + ((PAGE_SIZE - offsetof(struct usnic_uiom_chunk, page_list)) /\ + ((void *) &((struct usnic_uiom_chunk *) 0)->page_list[1] - \ + (void *) &((struct usnic_uiom_chunk *) 0)->page_list[0])) + +static void usnic_uiom_reg_account(struct work_struct *work) +{ + struct usnic_uiom_reg *umem = container_of(work, + struct usnic_uiom_reg, work); + + down_write(&umem->mm->mmap_sem); + umem->mm->locked_vm -= umem->diff; + up_write(&umem->mm->mmap_sem); + mmput(umem->mm); + kfree(umem); +} + +static int usnic_uiom_dma_fault(struct iommu_domain *domain, + struct device *dev, + unsigned long iova, int flags, + void *token) +{ + usnic_err("Device %s iommu fault domain 0x%pK va 0x%lx flags 0x%x\n", + dev_name(dev), + domain, iova, flags); + return -ENOSYS; +} + +static void usnic_uiom_put_pages(struct list_head *chunk_list, int dirty) +{ + struct usnic_uiom_chunk *chunk, *tmp; + struct page *page; + struct scatterlist *sg; + int i; + dma_addr_t pa; + + list_for_each_entry_safe(chunk, tmp, chunk_list, list) { + for_each_sg(chunk->page_list, sg, chunk->nents, i) { + page = sg_page(sg); + pa = sg_phys(sg); + if (dirty) + set_page_dirty_lock(page); + put_page(page); + usnic_dbg("pa: %pa\n", &pa); + } + kfree(chunk); + } +} + +static int usnic_uiom_get_pages(unsigned long addr, size_t size, int writable, + int dmasync, struct list_head *chunk_list) +{ + struct page **page_list; + struct scatterlist *sg; + struct usnic_uiom_chunk *chunk; + unsigned long locked; + unsigned long lock_limit; + unsigned long cur_base; + unsigned long npages; + int ret; + int off; + int i; + int flags; + dma_addr_t pa; + DEFINE_DMA_ATTRS(attrs); + + if (dmasync) + dma_set_attr(DMA_ATTR_WRITE_BARRIER, &attrs); + + if (!can_do_mlock()) + return -EPERM; + + INIT_LIST_HEAD(chunk_list); + + page_list = (struct page **) __get_free_page(GFP_KERNEL); + if (!page_list) + return -ENOMEM; + + npages = PAGE_ALIGN(size + (addr & ~PAGE_MASK)) >> PAGE_SHIFT; + + down_write(¤t->mm->mmap_sem); + + locked = npages + current->mm->locked_vm; + lock_limit = rlimit(RLIMIT_MEMLOCK) >> PAGE_SHIFT; + + if ((locked > lock_limit) && !capable(CAP_IPC_LOCK)) { + ret = -ENOMEM; + goto out; + } + + flags = IOMMU_READ | IOMMU_CACHE; + flags |= (writable) ? IOMMU_WRITE : 0; + cur_base = addr & PAGE_MASK; + ret = 0; + + while (npages) { + ret = get_user_pages(current, current->mm, cur_base, + min_t(unsigned long, npages, + PAGE_SIZE / sizeof(struct page *)), + 1, !writable, page_list, NULL); + + if (ret < 0) + goto out; + + npages -= ret; + off = 0; + + while (ret) { + chunk = kmalloc(sizeof(*chunk) + + sizeof(struct scatterlist) * + min_t(int, ret, USNIC_UIOM_PAGE_CHUNK), + GFP_KERNEL); + if (!chunk) { + ret = -ENOMEM; + goto out; + } + + chunk->nents = min_t(int, ret, USNIC_UIOM_PAGE_CHUNK); + sg_init_table(chunk->page_list, chunk->nents); + for_each_sg(chunk->page_list, sg, chunk->nents, i) { + sg_set_page(sg, page_list[i + off], + PAGE_SIZE, 0); + pa = sg_phys(sg); + usnic_dbg("va: 0x%lx pa: %pa\n", + cur_base + i*PAGE_SIZE, &pa); + } + cur_base += chunk->nents * PAGE_SIZE; + ret -= chunk->nents; + off += chunk->nents; + list_add_tail(&chunk->list, chunk_list); + } + + ret = 0; + } + +out: + if (ret < 0) + usnic_uiom_put_pages(chunk_list, 0); + else + current->mm->locked_vm = locked; + + up_write(¤t->mm->mmap_sem); + free_page((unsigned long) page_list); + return ret; +} + +static void usnic_uiom_unmap_sorted_intervals(struct list_head *intervals, + struct usnic_uiom_pd *pd) +{ + struct usnic_uiom_interval_node *interval, *tmp; + long unsigned va, size; + + list_for_each_entry_safe(interval, tmp, intervals, link) { + va = interval->start << PAGE_SHIFT; + size = ((interval->last - interval->start) + 1) << PAGE_SHIFT; + while (size > 0) { + /* Workaround for RH 970401 */ + usnic_dbg("va 0x%lx size 0x%lx", va, PAGE_SIZE); + iommu_unmap(pd->domain, va, PAGE_SIZE); + va += PAGE_SIZE; + size -= PAGE_SIZE; + } + } +} + +static void __usnic_uiom_reg_release(struct usnic_uiom_pd *pd, + struct usnic_uiom_reg *uiomr, + int dirty) +{ + int npages; + unsigned long vpn_start, vpn_last; + struct usnic_uiom_interval_node *interval, *tmp; + int writable = 0; + LIST_HEAD(rm_intervals); + + npages = PAGE_ALIGN(uiomr->length + uiomr->offset) >> PAGE_SHIFT; + vpn_start = (uiomr->va & PAGE_MASK) >> PAGE_SHIFT; + vpn_last = vpn_start + npages - 1; + + spin_lock(&pd->lock); + usnic_uiom_remove_interval(&pd->rb_root, vpn_start, + vpn_last, &rm_intervals); + usnic_uiom_unmap_sorted_intervals(&rm_intervals, pd); + + list_for_each_entry_safe(interval, tmp, &rm_intervals, link) { + if (interval->flags & IOMMU_WRITE) + writable = 1; + list_del(&interval->link); + kfree(interval); + } + + usnic_uiom_put_pages(&uiomr->chunk_list, dirty & writable); + spin_unlock(&pd->lock); +} + +static int usnic_uiom_map_sorted_intervals(struct list_head *intervals, + struct usnic_uiom_reg *uiomr) +{ + int i, err; + size_t size; + struct usnic_uiom_chunk *chunk; + struct usnic_uiom_interval_node *interval_node; + dma_addr_t pa; + dma_addr_t pa_start = 0; + dma_addr_t pa_end = 0; + long int va_start = -EINVAL; + struct usnic_uiom_pd *pd = uiomr->pd; + long int va = uiomr->va & PAGE_MASK; + int flags = IOMMU_READ | IOMMU_CACHE; + + flags |= (uiomr->writable) ? IOMMU_WRITE : 0; + chunk = list_first_entry(&uiomr->chunk_list, struct usnic_uiom_chunk, + list); + list_for_each_entry(interval_node, intervals, link) { +iter_chunk: + for (i = 0; i < chunk->nents; i++, va += PAGE_SIZE) { + pa = sg_phys(&chunk->page_list[i]); + if ((va >> PAGE_SHIFT) < interval_node->start) + continue; + + if ((va >> PAGE_SHIFT) == interval_node->start) { + /* First page of the interval */ + va_start = va; + pa_start = pa; + pa_end = pa; + } + + WARN_ON(va_start == -EINVAL); + + if ((pa_end + PAGE_SIZE != pa) && + (pa != pa_start)) { + /* PAs are not contiguous */ + size = pa_end - pa_start + PAGE_SIZE; + usnic_dbg("va 0x%lx pa %pa size 0x%zx flags 0x%x", + va_start, &pa_start, size, flags); + err = iommu_map(pd->domain, va_start, pa_start, + size, flags); + if (err) { + usnic_err("Failed to map va 0x%lx pa 0x%pa size 0x%zx with err %d\n", + va_start, &pa_start, size, err); + goto err_out; + } + va_start = va; + pa_start = pa; + pa_end = pa; + } + + if ((va >> PAGE_SHIFT) == interval_node->last) { + /* Last page of the interval */ + size = pa - pa_start + PAGE_SIZE; + usnic_dbg("va 0x%lx pa %pa size 0x%zx flags 0x%x\n", + va_start, &pa_start, size, flags); + err = iommu_map(pd->domain, va_start, pa_start, + size, flags); + if (err) { + usnic_err("Failed to map va 0x%lx pa %pa size 0x%zx with err %d\n", + va_start, &pa_start, size, err); + goto err_out; + } + break; + } + + if (pa != pa_start) + pa_end += PAGE_SIZE; + } + + if (i == chunk->nents) { + /* + * Hit last entry of the chunk, + * hence advance to next chunk + */ + chunk = list_first_entry(&chunk->list, + struct usnic_uiom_chunk, + list); + goto iter_chunk; + } + } + + return 0; + +err_out: + usnic_uiom_unmap_sorted_intervals(intervals, pd); + return err; +} + +struct usnic_uiom_reg *usnic_uiom_reg_get(struct usnic_uiom_pd *pd, + unsigned long addr, size_t size, + int writable, int dmasync) +{ + struct usnic_uiom_reg *uiomr; + unsigned long va_base, vpn_start, vpn_last; + unsigned long npages; + int offset, err; + LIST_HEAD(sorted_diff_intervals); + + /* + * Intel IOMMU map throws an error if a translation entry is + * changed from read to write. This module may not unmap + * and then remap the entry after fixing the permission + * b/c this open up a small windows where hw DMA may page fault + * Hence, make all entries to be writable. + */ + writable = 1; + + va_base = addr & PAGE_MASK; + offset = addr & ~PAGE_MASK; + npages = PAGE_ALIGN(size + offset) >> PAGE_SHIFT; + vpn_start = (addr & PAGE_MASK) >> PAGE_SHIFT; + vpn_last = vpn_start + npages - 1; + + uiomr = kmalloc(sizeof(*uiomr), GFP_KERNEL); + if (!uiomr) + return ERR_PTR(-ENOMEM); + + uiomr->va = va_base; + uiomr->offset = offset; + uiomr->length = size; + uiomr->writable = writable; + uiomr->pd = pd; + + err = usnic_uiom_get_pages(addr, size, writable, dmasync, + &uiomr->chunk_list); + if (err) { + usnic_err("Failed get_pages vpn [0x%lx,0x%lx] err %d\n", + vpn_start, vpn_last, err); + goto out_free_uiomr; + } + + spin_lock(&pd->lock); + err = usnic_uiom_get_intervals_diff(vpn_start, vpn_last, + (writable) ? IOMMU_WRITE : 0, + IOMMU_WRITE, + &pd->rb_root, + &sorted_diff_intervals); + if (err) { + usnic_err("Failed disjoint interval vpn [0x%lx,0x%lx] err %d\n", + vpn_start, vpn_last, err); + goto out_put_pages; + } + + err = usnic_uiom_map_sorted_intervals(&sorted_diff_intervals, uiomr); + if (err) { + usnic_err("Failed map interval vpn [0x%lx,0x%lx] err %d\n", + vpn_start, vpn_last, err); + goto out_put_intervals; + + } + + err = usnic_uiom_insert_interval(&pd->rb_root, vpn_start, vpn_last, + (writable) ? IOMMU_WRITE : 0); + if (err) { + usnic_err("Failed insert interval vpn [0x%lx,0x%lx] err %d\n", + vpn_start, vpn_last, err); + goto out_unmap_intervals; + } + + usnic_uiom_put_interval_set(&sorted_diff_intervals); + spin_unlock(&pd->lock); + + return uiomr; + +out_unmap_intervals: + usnic_uiom_unmap_sorted_intervals(&sorted_diff_intervals, pd); +out_put_intervals: + usnic_uiom_put_interval_set(&sorted_diff_intervals); +out_put_pages: + usnic_uiom_put_pages(&uiomr->chunk_list, 0); + spin_unlock(&pd->lock); +out_free_uiomr: + kfree(uiomr); + return ERR_PTR(err); +} + +void usnic_uiom_reg_release(struct usnic_uiom_reg *uiomr, int closing) +{ + struct mm_struct *mm; + unsigned long diff; + + __usnic_uiom_reg_release(uiomr->pd, uiomr, 1); + + mm = get_task_mm(current); + if (!mm) { + kfree(uiomr); + return; + } + + diff = PAGE_ALIGN(uiomr->length + uiomr->offset) >> PAGE_SHIFT; + + /* + * We may be called with the mm's mmap_sem already held. This + * can happen when a userspace munmap() is the call that drops + * the last reference to our file and calls our release + * method. If there are memory regions to destroy, we'll end + * up here and not be able to take the mmap_sem. In that case + * we defer the vm_locked accounting to the system workqueue. + */ + if (closing) { + if (!down_write_trylock(&mm->mmap_sem)) { + INIT_WORK(&uiomr->work, usnic_uiom_reg_account); + uiomr->mm = mm; + uiomr->diff = diff; + + queue_work(usnic_uiom_wq, &uiomr->work); + return; + } + } else + down_write(&mm->mmap_sem); + + current->mm->locked_vm -= diff; + up_write(&mm->mmap_sem); + mmput(mm); + kfree(uiomr); +} + +struct usnic_uiom_pd *usnic_uiom_alloc_pd(void) +{ + struct usnic_uiom_pd *pd; + void *domain; + + pd = kzalloc(sizeof(*pd), GFP_KERNEL); + if (!pd) + return ERR_PTR(-ENOMEM); + + pd->domain = domain = iommu_domain_alloc(&pci_bus_type); + if (IS_ERR_OR_NULL(domain)) { + usnic_err("Failed to allocate IOMMU domain with err %ld\n", + PTR_ERR(pd->domain)); + kfree(pd); + return ERR_PTR(domain ? PTR_ERR(domain) : -ENOMEM); + } + + iommu_set_fault_handler(pd->domain, usnic_uiom_dma_fault, NULL); + + spin_lock_init(&pd->lock); + INIT_LIST_HEAD(&pd->devs); + + return pd; +} + +void usnic_uiom_dealloc_pd(struct usnic_uiom_pd *pd) +{ + iommu_domain_free(pd->domain); + kfree(pd); +} + +int usnic_uiom_attach_dev_to_pd(struct usnic_uiom_pd *pd, struct device *dev) +{ + struct usnic_uiom_dev *uiom_dev; + int err; + + uiom_dev = kzalloc(sizeof(*uiom_dev), GFP_ATOMIC); + if (!uiom_dev) + return -ENOMEM; + uiom_dev->dev = dev; + + err = iommu_attach_device(pd->domain, dev); + if (err) + goto out_free_dev; + + if (!iommu_domain_has_cap(pd->domain, IOMMU_CAP_CACHE_COHERENCY)) { + usnic_err("IOMMU of %s does not support cache coherency\n", + dev_name(dev)); + err = -EINVAL; + goto out_detach_device; + } + + spin_lock(&pd->lock); + list_add_tail(&uiom_dev->link, &pd->devs); + pd->dev_cnt++; + spin_unlock(&pd->lock); + + return 0; + +out_detach_device: + iommu_detach_device(pd->domain, dev); +out_free_dev: + kfree(uiom_dev); + return err; +} + +void usnic_uiom_detach_dev_from_pd(struct usnic_uiom_pd *pd, struct device *dev) +{ + struct usnic_uiom_dev *uiom_dev; + int found = 0; + + spin_lock(&pd->lock); + list_for_each_entry(uiom_dev, &pd->devs, link) { + if (uiom_dev->dev == dev) { + found = 1; + break; + } + } + + if (!found) { + usnic_err("Unable to free dev %s - not found\n", + dev_name(dev)); + spin_unlock(&pd->lock); + return; + } + + list_del(&uiom_dev->link); + pd->dev_cnt--; + spin_unlock(&pd->lock); + + return iommu_detach_device(pd->domain, dev); +} + +struct device **usnic_uiom_get_dev_list(struct usnic_uiom_pd *pd) +{ + struct usnic_uiom_dev *uiom_dev; + struct device **devs; + int i = 0; + + spin_lock(&pd->lock); + devs = kcalloc(pd->dev_cnt + 1, sizeof(*devs), GFP_ATOMIC); + if (!devs) { + devs = ERR_PTR(-ENOMEM); + goto out; + } + + list_for_each_entry(uiom_dev, &pd->devs, link) { + devs[i++] = uiom_dev->dev; + } +out: + spin_unlock(&pd->lock); + return devs; +} + +void usnic_uiom_free_dev_list(struct device **devs) +{ + kfree(devs); +} + +int usnic_uiom_init(char *drv_name) +{ + if (!iommu_present(&pci_bus_type)) { + usnic_err("IOMMU required but not present or enabled. USNIC QPs will not function w/o enabling IOMMU\n"); + return -EPERM; + } + + usnic_uiom_wq = create_workqueue(drv_name); + if (!usnic_uiom_wq) { + usnic_err("Unable to alloc wq for drv %s\n", drv_name); + return -ENOMEM; + } + + return 0; +} + +void usnic_uiom_fini(void) +{ + flush_workqueue(usnic_uiom_wq); + destroy_workqueue(usnic_uiom_wq); +} --- linux-3.13.0.orig/drivers/infiniband/hw/usnic/usnic_uiom.h +++ linux-3.13.0/drivers/infiniband/hw/usnic/usnic_uiom.h @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2013, Cisco Systems, Inc. All rights reserved. + * + * This program is free software; you may 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. + * + * 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. + * + */ + +#ifndef USNIC_UIOM_H_ +#define USNIC_UIOM_H_ + +#include +#include + +#include "usnic_uiom_interval_tree.h" + +#define USNIC_UIOM_READ (1) +#define USNIC_UIOM_WRITE (2) + +#define USNIC_UIOM_MAX_PD_CNT (1000) +#define USNIC_UIOM_MAX_MR_CNT (1000000) +#define USNIC_UIOM_MAX_MR_SIZE (~0UL) +#define USNIC_UIOM_PAGE_SIZE (PAGE_SIZE) + +struct usnic_uiom_dev { + struct device *dev; + struct list_head link; +}; + +struct usnic_uiom_pd { + struct iommu_domain *domain; + spinlock_t lock; + struct rb_root rb_root; + struct list_head devs; + int dev_cnt; +}; + +struct usnic_uiom_reg { + struct usnic_uiom_pd *pd; + unsigned long va; + size_t length; + int offset; + int page_size; + int writable; + struct list_head chunk_list; + struct work_struct work; + struct mm_struct *mm; + unsigned long diff; +}; + +struct usnic_uiom_chunk { + struct list_head list; + int nents; + struct scatterlist page_list[0]; +}; + +struct usnic_uiom_pd *usnic_uiom_alloc_pd(void); +void usnic_uiom_dealloc_pd(struct usnic_uiom_pd *pd); +int usnic_uiom_attach_dev_to_pd(struct usnic_uiom_pd *pd, struct device *dev); +void usnic_uiom_detach_dev_from_pd(struct usnic_uiom_pd *pd, + struct device *dev); +struct device **usnic_uiom_get_dev_list(struct usnic_uiom_pd *pd); +void usnic_uiom_free_dev_list(struct device **devs); +struct usnic_uiom_reg *usnic_uiom_reg_get(struct usnic_uiom_pd *pd, + unsigned long addr, size_t size, + int access, int dmasync); +void usnic_uiom_reg_release(struct usnic_uiom_reg *uiomr, int closing); +int usnic_uiom_init(char *drv_name); +void usnic_uiom_fini(void); +#endif /* USNIC_UIOM_H_ */ --- linux-3.13.0.orig/drivers/infiniband/hw/usnic/usnic_uiom_interval_tree.c +++ linux-3.13.0/drivers/infiniband/hw/usnic/usnic_uiom_interval_tree.c @@ -0,0 +1,236 @@ +#include +#include +#include +#include + +#include +#include "usnic_uiom_interval_tree.h" + +#define START(node) ((node)->start) +#define LAST(node) ((node)->last) + +#define MAKE_NODE(node, start, end, ref_cnt, flags, err, err_out) \ + do { \ + node = usnic_uiom_interval_node_alloc(start, \ + end, ref_cnt, flags); \ + if (!node) { \ + err = -ENOMEM; \ + goto err_out; \ + } \ + } while (0) + +#define MARK_FOR_ADD(node, list) (list_add_tail(&node->link, list)) + +#define MAKE_NODE_AND_APPEND(node, start, end, ref_cnt, flags, err, \ + err_out, list) \ + do { \ + MAKE_NODE(node, start, end, \ + ref_cnt, flags, err, \ + err_out); \ + MARK_FOR_ADD(node, list); \ + } while (0) + +#define FLAGS_EQUAL(flags1, flags2, mask) \ + (((flags1) & (mask)) == ((flags2) & (mask))) + +static struct usnic_uiom_interval_node* +usnic_uiom_interval_node_alloc(long int start, long int last, int ref_cnt, + int flags) +{ + struct usnic_uiom_interval_node *interval = kzalloc(sizeof(*interval), + GFP_ATOMIC); + if (!interval) + return NULL; + + interval->start = start; + interval->last = last; + interval->flags = flags; + interval->ref_cnt = ref_cnt; + + return interval; +} + +static int interval_cmp(void *priv, struct list_head *a, struct list_head *b) +{ + struct usnic_uiom_interval_node *node_a, *node_b; + + node_a = list_entry(a, struct usnic_uiom_interval_node, link); + node_b = list_entry(b, struct usnic_uiom_interval_node, link); + + /* long to int */ + if (node_a->start < node_b->start) + return -1; + else if (node_a->start > node_b->start) + return 1; + + return 0; +} + +static void +find_intervals_intersection_sorted(struct rb_root *root, unsigned long start, + unsigned long last, + struct list_head *list) +{ + struct usnic_uiom_interval_node *node; + + INIT_LIST_HEAD(list); + + for (node = usnic_uiom_interval_tree_iter_first(root, start, last); + node; + node = usnic_uiom_interval_tree_iter_next(node, start, last)) + list_add_tail(&node->link, list); + + list_sort(NULL, list, interval_cmp); +} + +int usnic_uiom_get_intervals_diff(unsigned long start, unsigned long last, + int flags, int flag_mask, + struct rb_root *root, + struct list_head *diff_set) +{ + struct usnic_uiom_interval_node *interval, *tmp; + int err = 0; + long int pivot = start; + LIST_HEAD(intersection_set); + + INIT_LIST_HEAD(diff_set); + + find_intervals_intersection_sorted(root, start, last, + &intersection_set); + + list_for_each_entry(interval, &intersection_set, link) { + if (pivot < interval->start) { + MAKE_NODE_AND_APPEND(tmp, pivot, interval->start - 1, + 1, flags, err, err_out, + diff_set); + pivot = interval->start; + } + + /* + * Invariant: Set [start, pivot] is either in diff_set or root, + * but not in both. + */ + + if (pivot > interval->last) { + continue; + } else if (pivot <= interval->last && + FLAGS_EQUAL(interval->flags, flags, + flag_mask)) { + pivot = interval->last + 1; + } + } + + if (pivot <= last) + MAKE_NODE_AND_APPEND(tmp, pivot, last, 1, flags, err, err_out, + diff_set); + + return 0; + +err_out: + list_for_each_entry_safe(interval, tmp, diff_set, link) { + list_del(&interval->link); + kfree(interval); + } + + return err; +} + +void usnic_uiom_put_interval_set(struct list_head *intervals) +{ + struct usnic_uiom_interval_node *interval, *tmp; + list_for_each_entry_safe(interval, tmp, intervals, link) + kfree(interval); +} + +int usnic_uiom_insert_interval(struct rb_root *root, unsigned long start, + unsigned long last, int flags) +{ + struct usnic_uiom_interval_node *interval, *tmp; + unsigned long istart, ilast; + int iref_cnt, iflags; + unsigned long lpivot = start; + int err = 0; + LIST_HEAD(to_add); + LIST_HEAD(intersection_set); + + find_intervals_intersection_sorted(root, start, last, + &intersection_set); + + list_for_each_entry(interval, &intersection_set, link) { + /* + * Invariant - lpivot is the left edge of next interval to be + * inserted + */ + istart = interval->start; + ilast = interval->last; + iref_cnt = interval->ref_cnt; + iflags = interval->flags; + + if (istart < lpivot) { + MAKE_NODE_AND_APPEND(tmp, istart, lpivot - 1, iref_cnt, + iflags, err, err_out, &to_add); + } else if (istart > lpivot) { + MAKE_NODE_AND_APPEND(tmp, lpivot, istart - 1, 1, flags, + err, err_out, &to_add); + lpivot = istart; + } else { + lpivot = istart; + } + + if (ilast > last) { + MAKE_NODE_AND_APPEND(tmp, lpivot, last, iref_cnt + 1, + iflags | flags, err, err_out, + &to_add); + MAKE_NODE_AND_APPEND(tmp, last + 1, ilast, iref_cnt, + iflags, err, err_out, &to_add); + } else { + MAKE_NODE_AND_APPEND(tmp, lpivot, ilast, iref_cnt + 1, + iflags | flags, err, err_out, + &to_add); + } + + lpivot = ilast + 1; + } + + if (lpivot <= last) + MAKE_NODE_AND_APPEND(tmp, lpivot, last, 1, flags, err, err_out, + &to_add); + + list_for_each_entry_safe(interval, tmp, &intersection_set, link) { + usnic_uiom_interval_tree_remove(interval, root); + kfree(interval); + } + + list_for_each_entry(interval, &to_add, link) + usnic_uiom_interval_tree_insert(interval, root); + + return 0; + +err_out: + list_for_each_entry_safe(interval, tmp, &to_add, link) + kfree(interval); + + return err; +} + +void usnic_uiom_remove_interval(struct rb_root *root, unsigned long start, + unsigned long last, struct list_head *removed) +{ + struct usnic_uiom_interval_node *interval; + + for (interval = usnic_uiom_interval_tree_iter_first(root, start, last); + interval; + interval = usnic_uiom_interval_tree_iter_next(interval, + start, + last)) { + if (--interval->ref_cnt == 0) + list_add_tail(&interval->link, removed); + } + + list_for_each_entry(interval, removed, link) + usnic_uiom_interval_tree_remove(interval, root); +} + +INTERVAL_TREE_DEFINE(struct usnic_uiom_interval_node, rb, + unsigned long, __subtree_last, + START, LAST, , usnic_uiom_interval_tree) --- linux-3.13.0.orig/drivers/infiniband/hw/usnic/usnic_uiom_interval_tree.h +++ linux-3.13.0/drivers/infiniband/hw/usnic/usnic_uiom_interval_tree.h @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2013, Cisco Systems, Inc. All rights reserved. + * + * This program is free software; you may 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. + * + * 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. + * + */ + +#ifndef USNIC_UIOM_INTERVAL_TREE_H_ +#define USNIC_UIOM_INTERVAL_TREE_H_ + +#include + +struct usnic_uiom_interval_node { + struct rb_node rb; + struct list_head link; + unsigned long start; + unsigned long last; + unsigned long __subtree_last; + unsigned int ref_cnt; + int flags; +}; + +extern void +usnic_uiom_interval_tree_insert(struct usnic_uiom_interval_node *node, + struct rb_root *root); +extern void +usnic_uiom_interval_tree_remove(struct usnic_uiom_interval_node *node, + struct rb_root *root); +extern struct usnic_uiom_interval_node * +usnic_uiom_interval_tree_iter_first(struct rb_root *root, + unsigned long start, + unsigned long last); +extern struct usnic_uiom_interval_node * +usnic_uiom_interval_tree_iter_next(struct usnic_uiom_interval_node *node, + unsigned long start, unsigned long last); +/* + * Inserts {start...last} into {root}. If there are overlaps, + * nodes will be broken up and merged + */ +int usnic_uiom_insert_interval(struct rb_root *root, + unsigned long start, unsigned long last, + int flags); +/* + * Removed {start...last} from {root}. The nodes removed are returned in + * 'removed.' The caller is responsibile for freeing memory of nodes in + * 'removed.' + */ +void usnic_uiom_remove_interval(struct rb_root *root, + unsigned long start, unsigned long last, + struct list_head *removed); +/* + * Returns {start...last} - {root} (relative complement of {start...last} in + * {root}) in diff_set sorted ascendingly + */ +int usnic_uiom_get_intervals_diff(unsigned long start, + unsigned long last, int flags, + int flag_mask, + struct rb_root *root, + struct list_head *diff_set); +/* Call this to free diff_set returned by usnic_uiom_get_intervals_diff */ +void usnic_uiom_put_interval_set(struct list_head *intervals); +#endif /* USNIC_UIOM_INTERVAL_TREE_H_ */ --- linux-3.13.0.orig/drivers/infiniband/hw/usnic/usnic_vnic.c +++ linux-3.13.0/drivers/infiniband/hw/usnic/usnic_vnic.c @@ -0,0 +1,467 @@ +/* + * Copyright (c) 2013, Cisco Systems, Inc. All rights reserved. + * + * This program is free software; you may 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. + * + * 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 "usnic_ib.h" +#include "vnic_resource.h" +#include "usnic_log.h" +#include "usnic_vnic.h" + +struct usnic_vnic { + struct vnic_dev *vdev; + struct vnic_dev_bar bar[PCI_NUM_RESOURCES]; + struct usnic_vnic_res_chunk chunks[USNIC_VNIC_RES_TYPE_MAX]; + spinlock_t res_lock; +}; + +static enum vnic_res_type _to_vnic_res_type(enum usnic_vnic_res_type res_type) +{ +#define DEFINE_USNIC_VNIC_RES_AT(usnic_vnic_res_t, vnic_res_type, desc, val) \ + vnic_res_type, +#define DEFINE_USNIC_VNIC_RES(usnic_vnic_res_t, vnic_res_type, desc) \ + vnic_res_type, + static enum vnic_res_type usnic_vnic_type_2_vnic_type[] = { + USNIC_VNIC_RES_TYPES}; +#undef DEFINE_USNIC_VNIC_RES +#undef DEFINE_USNIC_VNIC_RES_AT + + if (res_type >= USNIC_VNIC_RES_TYPE_MAX) + return RES_TYPE_MAX; + + return usnic_vnic_type_2_vnic_type[res_type]; +} + +const char *usnic_vnic_res_type_to_str(enum usnic_vnic_res_type res_type) +{ +#define DEFINE_USNIC_VNIC_RES_AT(usnic_vnic_res_t, vnic_res_type, desc, val) \ + desc, +#define DEFINE_USNIC_VNIC_RES(usnic_vnic_res_t, vnic_res_type, desc) \ + desc, + static const char * const usnic_vnic_res_type_desc[] = { + USNIC_VNIC_RES_TYPES}; +#undef DEFINE_USNIC_VNIC_RES +#undef DEFINE_USNIC_VNIC_RES_AT + + if (res_type >= USNIC_VNIC_RES_TYPE_MAX) + return "unknown"; + + return usnic_vnic_res_type_desc[res_type]; + +} + +const char *usnic_vnic_pci_name(struct usnic_vnic *vnic) +{ + return pci_name(usnic_vnic_get_pdev(vnic)); +} + +int usnic_vnic_dump(struct usnic_vnic *vnic, char *buf, + int buf_sz, + void *hdr_obj, + int (*printtitle)(void *, char*, int), + int (*printcols)(char *, int), + int (*printrow)(void *, char *, int)) +{ + struct usnic_vnic_res_chunk *chunk; + struct usnic_vnic_res *res; + struct vnic_dev_bar *bar0; + int i, j, offset; + + offset = 0; + bar0 = usnic_vnic_get_bar(vnic, 0); + offset += scnprintf(buf + offset, buf_sz - offset, + "VF:%hu BAR0 bus_addr=%pa vaddr=0x%p size=%ld ", + usnic_vnic_get_index(vnic), + &bar0->bus_addr, + bar0->vaddr, bar0->len); + if (printtitle) + offset += printtitle(hdr_obj, buf + offset, buf_sz - offset); + offset += scnprintf(buf + offset, buf_sz - offset, "\n"); + offset += scnprintf(buf + offset, buf_sz - offset, + "|RES\t|CTRL_PIN\t\t|IN_USE\t"); + if (printcols) + offset += printcols(buf + offset, buf_sz - offset); + offset += scnprintf(buf + offset, buf_sz - offset, "\n"); + + spin_lock(&vnic->res_lock); + for (i = 0; i < ARRAY_SIZE(vnic->chunks); i++) { + chunk = &vnic->chunks[i]; + for (j = 0; j < chunk->cnt; j++) { + res = chunk->res[j]; + offset += scnprintf(buf + offset, buf_sz - offset, + "|%s[%u]\t|0x%p\t|%u\t", + usnic_vnic_res_type_to_str(res->type), + res->vnic_idx, res->ctrl, !!res->owner); + if (printrow) { + offset += printrow(res->owner, buf + offset, + buf_sz - offset); + } + offset += scnprintf(buf + offset, buf_sz - offset, + "\n"); + } + } + spin_unlock(&vnic->res_lock); + return offset; +} + +void usnic_vnic_res_spec_update(struct usnic_vnic_res_spec *spec, + enum usnic_vnic_res_type trgt_type, + u16 cnt) +{ + int i; + + for (i = 0; i < USNIC_VNIC_RES_TYPE_MAX; i++) { + if (spec->resources[i].type == trgt_type) { + spec->resources[i].cnt = cnt; + return; + } + } + + WARN_ON(1); +} + +int usnic_vnic_res_spec_satisfied(const struct usnic_vnic_res_spec *min_spec, + struct usnic_vnic_res_spec *res_spec) +{ + int found, i, j; + + for (i = 0; i < USNIC_VNIC_RES_TYPE_MAX; i++) { + found = 0; + + for (j = 0; j < USNIC_VNIC_RES_TYPE_MAX; j++) { + if (res_spec->resources[i].type != + min_spec->resources[i].type) + continue; + found = 1; + if (min_spec->resources[i].cnt > + res_spec->resources[i].cnt) + return -EINVAL; + break; + } + + if (!found) + return -EINVAL; + } + return 0; +} + +int usnic_vnic_spec_dump(char *buf, int buf_sz, + struct usnic_vnic_res_spec *res_spec) +{ + enum usnic_vnic_res_type res_type; + int res_cnt; + int i; + int offset = 0; + + for (i = 0; i < USNIC_VNIC_RES_TYPE_MAX; i++) { + res_type = res_spec->resources[i].type; + res_cnt = res_spec->resources[i].cnt; + offset += scnprintf(buf + offset, buf_sz - offset, + "Res: %s Cnt: %d ", + usnic_vnic_res_type_to_str(res_type), + res_cnt); + } + + return offset; +} + +int usnic_vnic_check_room(struct usnic_vnic *vnic, + struct usnic_vnic_res_spec *res_spec) +{ + int i; + enum usnic_vnic_res_type res_type; + int res_cnt; + + for (i = 0; i < USNIC_VNIC_RES_TYPE_MAX; i++) { + res_type = res_spec->resources[i].type; + res_cnt = res_spec->resources[i].cnt; + + if (res_type == USNIC_VNIC_RES_TYPE_EOL) + break; + + if (res_cnt > usnic_vnic_res_free_cnt(vnic, res_type)) + return -EBUSY; + } + + return 0; +} + +int usnic_vnic_res_cnt(struct usnic_vnic *vnic, + enum usnic_vnic_res_type type) +{ + return vnic->chunks[type].cnt; +} + +int usnic_vnic_res_free_cnt(struct usnic_vnic *vnic, + enum usnic_vnic_res_type type) +{ + return vnic->chunks[type].free_cnt; +} + +struct usnic_vnic_res_chunk * +usnic_vnic_get_resources(struct usnic_vnic *vnic, enum usnic_vnic_res_type type, + int cnt, void *owner) +{ + struct usnic_vnic_res_chunk *src, *ret; + struct usnic_vnic_res *res; + int i; + + if (usnic_vnic_res_free_cnt(vnic, type) < cnt || cnt < 1 || !owner) + return ERR_PTR(-EINVAL); + + ret = kzalloc(sizeof(*ret), GFP_ATOMIC); + if (!ret) { + usnic_err("Failed to allocate chunk for %s - Out of memory\n", + usnic_vnic_pci_name(vnic)); + return ERR_PTR(-ENOMEM); + } + + ret->res = kzalloc(sizeof(*(ret->res))*cnt, GFP_ATOMIC); + if (!ret->res) { + usnic_err("Failed to allocate resources for %s. Out of memory\n", + usnic_vnic_pci_name(vnic)); + kfree(ret); + return ERR_PTR(-ENOMEM); + } + + spin_lock(&vnic->res_lock); + src = &vnic->chunks[type]; + for (i = 0; i < src->cnt && ret->cnt < cnt; i++) { + res = src->res[i]; + if (!res->owner) { + src->free_cnt--; + res->owner = owner; + ret->res[ret->cnt++] = res; + } + } + + spin_unlock(&vnic->res_lock); + ret->type = type; + ret->vnic = vnic; + WARN_ON(ret->cnt != cnt); + + return ret; +} + +void usnic_vnic_put_resources(struct usnic_vnic_res_chunk *chunk) +{ + + struct usnic_vnic_res *res; + int i; + struct usnic_vnic *vnic = chunk->vnic; + + spin_lock(&vnic->res_lock); + while ((i = --chunk->cnt) >= 0) { + res = chunk->res[i]; + chunk->res[i] = NULL; + res->owner = NULL; + vnic->chunks[res->type].free_cnt++; + } + spin_unlock(&vnic->res_lock); + + kfree(chunk->res); + kfree(chunk); +} + +u16 usnic_vnic_get_index(struct usnic_vnic *vnic) +{ + return usnic_vnic_get_pdev(vnic)->devfn - 1; +} + +static int usnic_vnic_alloc_res_chunk(struct usnic_vnic *vnic, + enum usnic_vnic_res_type type, + struct usnic_vnic_res_chunk *chunk) +{ + int cnt, err, i; + struct usnic_vnic_res *res; + + cnt = vnic_dev_get_res_count(vnic->vdev, _to_vnic_res_type(type)); + if (cnt < 1) + return -EINVAL; + + chunk->cnt = chunk->free_cnt = cnt; + chunk->res = kzalloc(sizeof(*(chunk->res))*cnt, GFP_KERNEL); + if (!chunk->res) + return -ENOMEM; + + for (i = 0; i < cnt; i++) { + res = kzalloc(sizeof(*res), GFP_KERNEL); + if (!res) { + err = -ENOMEM; + goto fail; + } + res->type = type; + res->vnic_idx = i; + res->vnic = vnic; + res->ctrl = vnic_dev_get_res(vnic->vdev, + _to_vnic_res_type(type), i); + chunk->res[i] = res; + } + + chunk->vnic = vnic; + return 0; +fail: + for (i--; i >= 0; i--) + kfree(chunk->res[i]); + kfree(chunk->res); + return err; +} + +static void usnic_vnic_free_res_chunk(struct usnic_vnic_res_chunk *chunk) +{ + int i; + for (i = 0; i < chunk->cnt; i++) + kfree(chunk->res[i]); + kfree(chunk->res); +} + +static int usnic_vnic_discover_resources(struct pci_dev *pdev, + struct usnic_vnic *vnic) +{ + enum usnic_vnic_res_type res_type; + int i; + int err = 0; + + for (i = 0; i < ARRAY_SIZE(vnic->bar); i++) { + if (!(pci_resource_flags(pdev, i) & IORESOURCE_MEM)) + continue; + vnic->bar[i].len = pci_resource_len(pdev, i); + vnic->bar[i].vaddr = pci_iomap(pdev, i, vnic->bar[i].len); + if (!vnic->bar[i].vaddr) { + usnic_err("Cannot memory-map BAR %d, aborting\n", + i); + err = -ENODEV; + goto out_clean_bar; + } + vnic->bar[i].bus_addr = pci_resource_start(pdev, i); + } + + vnic->vdev = vnic_dev_register(NULL, pdev, pdev, vnic->bar, + ARRAY_SIZE(vnic->bar)); + if (!vnic->vdev) { + usnic_err("Failed to register device %s\n", + pci_name(pdev)); + err = -EINVAL; + goto out_clean_bar; + } + + for (res_type = USNIC_VNIC_RES_TYPE_EOL + 1; + res_type < USNIC_VNIC_RES_TYPE_MAX; res_type++) { + err = usnic_vnic_alloc_res_chunk(vnic, res_type, + &vnic->chunks[res_type]); + if (err) { + usnic_err("Failed to alloc res %s with err %d\n", + usnic_vnic_res_type_to_str(res_type), + err); + goto out_clean_chunks; + } + } + + return 0; + +out_clean_chunks: + for (res_type--; res_type > USNIC_VNIC_RES_TYPE_EOL; res_type--) + usnic_vnic_free_res_chunk(&vnic->chunks[res_type]); + vnic_dev_unregister(vnic->vdev); +out_clean_bar: + for (i = 0; i < ARRAY_SIZE(vnic->bar); i++) { + if (!(pci_resource_flags(pdev, i) & IORESOURCE_MEM)) + continue; + if (!vnic->bar[i].vaddr) + break; + + iounmap(vnic->bar[i].vaddr); + } + + return err; +} + +struct pci_dev *usnic_vnic_get_pdev(struct usnic_vnic *vnic) +{ + return vnic_dev_get_pdev(vnic->vdev); +} + +struct vnic_dev_bar *usnic_vnic_get_bar(struct usnic_vnic *vnic, + int bar_num) +{ + return (bar_num < ARRAY_SIZE(vnic->bar)) ? &vnic->bar[bar_num] : NULL; +} + +static void usnic_vnic_release_resources(struct usnic_vnic *vnic) +{ + int i; + struct pci_dev *pdev; + enum usnic_vnic_res_type res_type; + + pdev = usnic_vnic_get_pdev(vnic); + + for (res_type = USNIC_VNIC_RES_TYPE_EOL + 1; + res_type < USNIC_VNIC_RES_TYPE_MAX; res_type++) + usnic_vnic_free_res_chunk(&vnic->chunks[res_type]); + + vnic_dev_unregister(vnic->vdev); + + for (i = 0; i < ARRAY_SIZE(vnic->bar); i++) { + if (!(pci_resource_flags(pdev, i) & IORESOURCE_MEM)) + continue; + iounmap(vnic->bar[i].vaddr); + } +} + +struct usnic_vnic *usnic_vnic_alloc(struct pci_dev *pdev) +{ + struct usnic_vnic *vnic; + int err = 0; + + if (!pci_is_enabled(pdev)) { + usnic_err("PCI dev %s is disabled\n", pci_name(pdev)); + return ERR_PTR(-EINVAL); + } + + vnic = kzalloc(sizeof(*vnic), GFP_KERNEL); + if (!vnic) { + usnic_err("Failed to alloc vnic for %s - out of memory\n", + pci_name(pdev)); + return ERR_PTR(-ENOMEM); + } + + spin_lock_init(&vnic->res_lock); + + err = usnic_vnic_discover_resources(pdev, vnic); + if (err) { + usnic_err("Failed to discover %s resources with err %d\n", + pci_name(pdev), err); + goto out_free_vnic; + } + + usnic_dbg("Allocated vnic for %s\n", usnic_vnic_pci_name(vnic)); + + return vnic; + +out_free_vnic: + kfree(vnic); + + return ERR_PTR(err); +} + +void usnic_vnic_free(struct usnic_vnic *vnic) +{ + usnic_vnic_release_resources(vnic); + kfree(vnic); +} --- linux-3.13.0.orig/drivers/infiniband/hw/usnic/usnic_vnic.h +++ linux-3.13.0/drivers/infiniband/hw/usnic/usnic_vnic.h @@ -0,0 +1,103 @@ +/* + * Copyright (c) 2013, Cisco Systems, Inc. All rights reserved. + * + * This program is free software; you may 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. + * + * 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. + * + */ + +#ifndef USNIC_VNIC_H_ +#define USNIC_VNIC_H_ + +#include + +#include "vnic_dev.h" + +/* =USNIC_VNIC_RES_TYPE= =VNIC_RES= =DESC= */ +#define USNIC_VNIC_RES_TYPES \ + DEFINE_USNIC_VNIC_RES_AT(EOL, RES_TYPE_EOL, "EOL", 0) \ + DEFINE_USNIC_VNIC_RES(WQ, RES_TYPE_WQ, "WQ") \ + DEFINE_USNIC_VNIC_RES(RQ, RES_TYPE_RQ, "RQ") \ + DEFINE_USNIC_VNIC_RES(CQ, RES_TYPE_CQ, "CQ") \ + DEFINE_USNIC_VNIC_RES(INTR, RES_TYPE_INTR_CTRL, "INT") \ + DEFINE_USNIC_VNIC_RES(MAX, RES_TYPE_MAX, "MAX")\ + +#define DEFINE_USNIC_VNIC_RES_AT(usnic_vnic_res_t, vnic_res_type, desc, val) \ + USNIC_VNIC_RES_TYPE_##usnic_vnic_res_t = val, +#define DEFINE_USNIC_VNIC_RES(usnic_vnic_res_t, vnic_res_type, desc) \ + USNIC_VNIC_RES_TYPE_##usnic_vnic_res_t, +enum usnic_vnic_res_type { + USNIC_VNIC_RES_TYPES +}; +#undef DEFINE_USNIC_VNIC_RES +#undef DEFINE_USNIC_VNIC_RES_AT + +struct usnic_vnic_res { + enum usnic_vnic_res_type type; + unsigned int vnic_idx; + struct usnic_vnic *vnic; + void __iomem *ctrl; + void *owner; +}; + +struct usnic_vnic_res_chunk { + enum usnic_vnic_res_type type; + int cnt; + int free_cnt; + struct usnic_vnic_res **res; + struct usnic_vnic *vnic; +}; + +struct usnic_vnic_res_desc { + enum usnic_vnic_res_type type; + uint16_t cnt; +}; + +struct usnic_vnic_res_spec { + struct usnic_vnic_res_desc resources[USNIC_VNIC_RES_TYPE_MAX]; +}; + +const char *usnic_vnic_res_type_to_str(enum usnic_vnic_res_type res_type); +const char *usnic_vnic_pci_name(struct usnic_vnic *vnic); +int usnic_vnic_dump(struct usnic_vnic *vnic, char *buf, int buf_sz, + void *hdr_obj, + int (*printtitle)(void *, char*, int), + int (*printcols)(char *, int), + int (*printrow)(void *, char *, int)); +void usnic_vnic_res_spec_update(struct usnic_vnic_res_spec *spec, + enum usnic_vnic_res_type trgt_type, + u16 cnt); +int usnic_vnic_res_spec_satisfied(const struct usnic_vnic_res_spec *min_spec, + struct usnic_vnic_res_spec *res_spec); +int usnic_vnic_spec_dump(char *buf, int buf_sz, + struct usnic_vnic_res_spec *res_spec); +int usnic_vnic_check_room(struct usnic_vnic *vnic, + struct usnic_vnic_res_spec *res_spec); +int usnic_vnic_res_cnt(struct usnic_vnic *vnic, + enum usnic_vnic_res_type type); +int usnic_vnic_res_free_cnt(struct usnic_vnic *vnic, + enum usnic_vnic_res_type type); +struct usnic_vnic_res_chunk * +usnic_vnic_get_resources(struct usnic_vnic *vnic, + enum usnic_vnic_res_type type, + int cnt, + void *owner); +void usnic_vnic_put_resources(struct usnic_vnic_res_chunk *chunk); +struct pci_dev *usnic_vnic_get_pdev(struct usnic_vnic *vnic); +struct vnic_dev_bar *usnic_vnic_get_bar(struct usnic_vnic *vnic, + int bar_num); +struct usnic_vnic *usnic_vnic_alloc(struct pci_dev *pdev); +void usnic_vnic_free(struct usnic_vnic *vnic); +u16 usnic_vnic_get_index(struct usnic_vnic *vnic); + +#endif /*!USNIC_VNIC_H_*/ --- linux-3.13.0.orig/drivers/infiniband/ulp/ipoib/ipoib_main.c +++ linux-3.13.0/drivers/infiniband/ulp/ipoib/ipoib_main.c @@ -104,6 +104,8 @@ ipoib_dbg(priv, "bringing up interface\n"); + netif_carrier_off(dev); + set_bit(IPOIB_FLAG_ADMIN_UP, &priv->flags); if (ipoib_pkey_dev_delay_open(dev)) @@ -1366,8 +1368,6 @@ memcpy(dev->broadcast, ipv4_bcast_addr, INFINIBAND_ALEN); - netif_carrier_off(dev); - priv->dev = dev; spin_lock_init(&priv->lock); --- linux-3.13.0.orig/drivers/infiniband/ulp/ipoib/ipoib_verbs.c +++ linux-3.13.0/drivers/infiniband/ulp/ipoib/ipoib_verbs.c @@ -192,6 +192,9 @@ if (priv->hca_caps & IB_DEVICE_BLOCK_MULTICAST_LOOPBACK) init_attr.create_flags |= IB_QP_CREATE_BLOCK_MULTICAST_LOOPBACK; + if (priv->hca_caps & IB_DEVICE_MANAGED_FLOW_STEERING) + init_attr.create_flags |= IB_QP_CREATE_NETIF_QP; + if (dev->features & NETIF_F_SG) init_attr.cap.max_send_sge = MAX_SKB_FRAGS + 1; --- linux-3.13.0.orig/drivers/infiniband/ulp/iser/iscsi_iser.c +++ linux-3.13.0/drivers/infiniband/ulp/iser/iscsi_iser.c @@ -91,6 +91,7 @@ module_param_named(debug_level, iser_debug_level, int, 0644); MODULE_PARM_DESC(debug_level, "Enable debug tracing if > 0 (default:disabled)"); +static struct workqueue_struct *release_wq; struct iser_global ig; void @@ -321,25 +322,6 @@ return cls_conn; } -static void -iscsi_iser_conn_destroy(struct iscsi_cls_conn *cls_conn) -{ - struct iscsi_conn *conn = cls_conn->dd_data; - struct iscsi_iser_conn *iser_conn = conn->dd_data; - struct iser_conn *ib_conn = iser_conn->ib_conn; - - iscsi_conn_teardown(cls_conn); - /* - * Userspace will normally call the stop callback and - * already have freed the ib_conn, but if it goofed up then - * we free it here. - */ - if (ib_conn) { - ib_conn->iser_conn = NULL; - iser_conn_put(ib_conn, 1); /* deref iscsi/ib conn unbinding */ - } -} - static int iscsi_iser_conn_bind(struct iscsi_cls_session *cls_session, struct iscsi_cls_conn *cls_conn, uint64_t transport_eph, @@ -378,10 +360,22 @@ iser_conn = conn->dd_data; ib_conn->iser_conn = iser_conn; iser_conn->ib_conn = ib_conn; - iser_conn_get(ib_conn); /* ref iscsi/ib conn binding */ return 0; } +static int +iscsi_iser_conn_start(struct iscsi_cls_conn *cls_conn) +{ + struct iscsi_conn *iscsi_conn; + struct iser_conn *ib_conn; + + iscsi_conn = cls_conn->dd_data; + ib_conn = iscsi_conn->dd_data; + reinit_completion(&ib_conn->stop_completion); + + return iscsi_conn_start(cls_conn); +} + static void iscsi_iser_conn_stop(struct iscsi_cls_conn *cls_conn, int flag) { @@ -389,19 +383,17 @@ struct iscsi_iser_conn *iser_conn = conn->dd_data; struct iser_conn *ib_conn = iser_conn->ib_conn; + iser_dbg("stopping iscsi_conn: %p, ib_conn: %p\n", conn, ib_conn); + iscsi_conn_stop(cls_conn, flag); + /* * Userspace may have goofed up and not bound the connection or * might have only partially setup the connection. */ if (ib_conn) { - iscsi_conn_stop(cls_conn, flag); - /* - * There is no unbind event so the stop callback - * must release the ref from the bind. - */ - iser_conn_put(ib_conn, 1); /* deref iscsi/ib conn unbinding */ + conn->dd_data = NULL; + complete(&ib_conn->stop_completion); } - iser_conn->ib_conn = NULL; } static void iscsi_iser_session_destroy(struct iscsi_cls_session *cls_session) @@ -618,19 +610,19 @@ struct iser_conn *ib_conn; ib_conn = ep->dd_data; - if (ib_conn->iser_conn) - /* - * Must suspend xmit path if the ep is bound to the - * iscsi_conn, so we know we are not accessing the ib_conn - * when we free it. - * - * This may not be bound if the ep poll failed. - */ - iscsi_suspend_tx(ib_conn->iser_conn->iscsi_conn); - - - iser_info("ib conn %p state %d\n", ib_conn, ib_conn->state); + iser_info("ep %p ib conn %p state %d\n", ep, ib_conn, ib_conn->state); iser_conn_terminate(ib_conn); + /* + * if iser_conn and iscsi_conn are bound, we must wait iscsi_conn_stop + * call and ISER_CONN_DOWN state before freeing the iser resources. + * otherwise we are safe to free resources immediately. + */ + if (ib_conn->iser_conn->iscsi_conn) { + INIT_WORK(&ib_conn->release_work, iser_release_work); + queue_work(release_wq, &ib_conn->release_work); + } else { + iser_conn_release(ib_conn); + } } static umode_t iser_attr_is_visible(int param_type, int param) @@ -714,13 +706,13 @@ /* connection management */ .create_conn = iscsi_iser_conn_create, .bind_conn = iscsi_iser_conn_bind, - .destroy_conn = iscsi_iser_conn_destroy, + .destroy_conn = iscsi_conn_teardown, .attr_is_visible = iser_attr_is_visible, .set_param = iscsi_iser_set_param, .get_conn_param = iscsi_conn_get_param, .get_ep_param = iscsi_iser_get_ep_param, .get_session_param = iscsi_session_get_param, - .start_conn = iscsi_conn_start, + .start_conn = iscsi_iser_conn_start, .stop_conn = iscsi_iser_conn_stop, /* iscsi host params */ .get_host_param = iscsi_host_get_param, @@ -766,6 +758,12 @@ mutex_init(&ig.connlist_mutex); INIT_LIST_HEAD(&ig.connlist); + release_wq = alloc_workqueue("release workqueue", 0, 0); + if (!release_wq) { + iser_err("failed to allocate release workqueue\n"); + return -ENOMEM; + } + iscsi_iser_scsi_transport = iscsi_register_transport( &iscsi_iser_transport); if (!iscsi_iser_scsi_transport) { @@ -784,7 +782,24 @@ static void __exit iser_exit(void) { + struct iser_conn *ib_conn, *n; + int connlist_empty; + iser_dbg("Removing iSER datamover...\n"); + destroy_workqueue(release_wq); + + mutex_lock(&ig.connlist_mutex); + connlist_empty = list_empty(&ig.connlist); + mutex_unlock(&ig.connlist_mutex); + + if (!connlist_empty) { + iser_err("Error cleanup stage completed but we still have iser " + "connections, destroying them anyway.\n"); + list_for_each_entry_safe(ib_conn, n, &ig.connlist, conn_list) { + iser_conn_release(ib_conn); + } + } + iscsi_unregister_transport(&iscsi_iser_transport); kmem_cache_destroy(ig.desc_cache); } --- linux-3.13.0.orig/drivers/infiniband/ulp/iser/iscsi_iser.h +++ linux-3.13.0/drivers/infiniband/ulp/iser/iscsi_iser.h @@ -302,6 +302,8 @@ int post_recv_buf_count; /* posted rx count */ atomic_t post_send_buf_count; /* posted tx count */ char name[ISER_OBJECT_NAME_SIZE]; + struct work_struct release_work; + struct completion stop_completion; struct list_head conn_list; /* entry in ig conn list */ char *login_buf; @@ -383,12 +385,12 @@ void iser_conn_init(struct iser_conn *ib_conn); -void iser_conn_get(struct iser_conn *ib_conn); - -int iser_conn_put(struct iser_conn *ib_conn, int destroy_cma_id_allowed); +void iser_conn_release(struct iser_conn *ib_conn); void iser_conn_terminate(struct iser_conn *ib_conn); +void iser_release_work(struct work_struct *work); + void iser_rcv_completion(struct iser_rx_desc *desc, unsigned long dto_xfer_len, struct iser_conn *ib_conn); --- linux-3.13.0.orig/drivers/infiniband/ulp/iser/iser_initiator.c +++ linux-3.13.0/drivers/infiniband/ulp/iser/iser_initiator.c @@ -610,11 +610,12 @@ ib_dma_unmap_single(device->ib_device, tx_desc->dma_addr, ISER_HEADERS_LEN, DMA_TO_DEVICE); kmem_cache_free(ig.desc_cache, tx_desc); + tx_desc = NULL; } atomic_dec(&ib_conn->post_send_buf_count); - if (tx_desc->type == ISCSI_TX_CONTROL) { + if (tx_desc && tx_desc->type == ISCSI_TX_CONTROL) { /* this arithmetic is legal by libiscsi dd_data allocation */ task = (void *) ((long)(void *)tx_desc - sizeof(struct iscsi_task)); --- linux-3.13.0.orig/drivers/infiniband/ulp/iser/iser_verbs.c +++ linux-3.13.0/drivers/infiniband/ulp/iser/iser_verbs.c @@ -502,14 +502,30 @@ return ret; } +void iser_release_work(struct work_struct *work) +{ + struct iser_conn *ib_conn; + + ib_conn = container_of(work, struct iser_conn, release_work); + + /* wait for .conn_stop callback */ + wait_for_completion(&ib_conn->stop_completion); + + /* wait for the qp`s post send and post receive buffers to empty */ + wait_event_interruptible(ib_conn->wait, + ib_conn->state == ISER_CONN_DOWN); + + iser_conn_release(ib_conn); +} + /** * Frees all conn objects and deallocs conn descriptor */ -static void iser_conn_release(struct iser_conn *ib_conn, int can_destroy_id) +void iser_conn_release(struct iser_conn *ib_conn) { struct iser_device *device = ib_conn->device; - BUG_ON(ib_conn->state != ISER_CONN_DOWN); + BUG_ON(ib_conn->state == ISER_CONN_UP); mutex_lock(&ig.connlist_mutex); list_del(&ib_conn->conn_list); @@ -521,27 +537,13 @@ if (device != NULL) iser_device_try_release(device); /* if cma handler context, the caller actually destroy the id */ - if (ib_conn->cma_id != NULL && can_destroy_id) { + if (ib_conn->cma_id != NULL) { rdma_destroy_id(ib_conn->cma_id); ib_conn->cma_id = NULL; } iscsi_destroy_endpoint(ib_conn->ep); } -void iser_conn_get(struct iser_conn *ib_conn) -{ - atomic_inc(&ib_conn->refcount); -} - -int iser_conn_put(struct iser_conn *ib_conn, int can_destroy_id) -{ - if (atomic_dec_and_test(&ib_conn->refcount)) { - iser_conn_release(ib_conn, can_destroy_id); - return 1; - } - return 0; -} - /** * triggers start of the disconnect procedures and wait for them to be done */ @@ -559,24 +561,19 @@ if (err) iser_err("Failed to disconnect, conn: 0x%p err %d\n", ib_conn,err); - - wait_event_interruptible(ib_conn->wait, - ib_conn->state == ISER_CONN_DOWN); - - iser_conn_put(ib_conn, 1); /* deref ib conn deallocate */ } -static int iser_connect_error(struct rdma_cm_id *cma_id) +static void iser_connect_error(struct rdma_cm_id *cma_id) { struct iser_conn *ib_conn; + ib_conn = (struct iser_conn *)cma_id->context; ib_conn->state = ISER_CONN_DOWN; wake_up_interruptible(&ib_conn->wait); - return iser_conn_put(ib_conn, 0); /* deref ib conn's cma id */ } -static int iser_addr_handler(struct rdma_cm_id *cma_id) +static void iser_addr_handler(struct rdma_cm_id *cma_id) { struct iser_device *device; struct iser_conn *ib_conn; @@ -585,7 +582,8 @@ device = iser_device_find_by_ib_device(cma_id); if (!device) { iser_err("device lookup/creation failed\n"); - return iser_connect_error(cma_id); + iser_connect_error(cma_id); + return; } ib_conn = (struct iser_conn *)cma_id->context; @@ -594,13 +592,12 @@ ret = rdma_resolve_route(cma_id, 1000); if (ret) { iser_err("resolve route failed: %d\n", ret); - return iser_connect_error(cma_id); + iser_connect_error(cma_id); + return; } - - return 0; } -static int iser_route_handler(struct rdma_cm_id *cma_id) +static void iser_route_handler(struct rdma_cm_id *cma_id) { struct rdma_conn_param conn_param; int ret; @@ -628,9 +625,9 @@ goto failure; } - return 0; + return; failure: - return iser_connect_error(cma_id); + iser_connect_error(cma_id); } static void iser_connected_handler(struct rdma_cm_id *cma_id) @@ -642,19 +639,22 @@ wake_up_interruptible(&ib_conn->wait); } -static int iser_disconnected_handler(struct rdma_cm_id *cma_id) +static void iser_disconnected_handler(struct rdma_cm_id *cma_id) { struct iser_conn *ib_conn; - int ret; ib_conn = (struct iser_conn *)cma_id->context; /* getting here when the state is UP means that the conn is being * * terminated asynchronously from the iSCSI layer's perspective. */ if (iser_conn_state_comp_exch(ib_conn, ISER_CONN_UP, - ISER_CONN_TERMINATING)) - iscsi_conn_failure(ib_conn->iser_conn->iscsi_conn, - ISCSI_ERR_CONN_FAILED); + ISER_CONN_TERMINATING)){ + if (ib_conn->iser_conn) + iscsi_conn_failure(ib_conn->iser_conn->iscsi_conn, + ISCSI_ERR_CONN_FAILED); + else + iser_err("iscsi_iser connection isn't bound\n"); + } /* Complete the termination process if no posts are pending */ if (ib_conn->post_recv_buf_count == 0 && @@ -662,24 +662,19 @@ ib_conn->state = ISER_CONN_DOWN; wake_up_interruptible(&ib_conn->wait); } - - ret = iser_conn_put(ib_conn, 0); /* deref ib conn's cma id */ - return ret; } static int iser_cma_handler(struct rdma_cm_id *cma_id, struct rdma_cm_event *event) { - int ret = 0; - iser_info("event %d status %d conn %p id %p\n", event->event, event->status, cma_id->context, cma_id); switch (event->event) { case RDMA_CM_EVENT_ADDR_RESOLVED: - ret = iser_addr_handler(cma_id); + iser_addr_handler(cma_id); break; case RDMA_CM_EVENT_ROUTE_RESOLVED: - ret = iser_route_handler(cma_id); + iser_route_handler(cma_id); break; case RDMA_CM_EVENT_ESTABLISHED: iser_connected_handler(cma_id); @@ -689,18 +684,18 @@ case RDMA_CM_EVENT_CONNECT_ERROR: case RDMA_CM_EVENT_UNREACHABLE: case RDMA_CM_EVENT_REJECTED: - ret = iser_connect_error(cma_id); + iser_connect_error(cma_id); break; case RDMA_CM_EVENT_DISCONNECTED: case RDMA_CM_EVENT_DEVICE_REMOVAL: case RDMA_CM_EVENT_ADDR_CHANGE: - ret = iser_disconnected_handler(cma_id); + iser_disconnected_handler(cma_id); break; default: iser_err("Unexpected RDMA CM event (%d)\n", event->event); break; } - return ret; + return 0; } void iser_conn_init(struct iser_conn *ib_conn) @@ -709,7 +704,7 @@ init_waitqueue_head(&ib_conn->wait); ib_conn->post_recv_buf_count = 0; atomic_set(&ib_conn->post_send_buf_count, 0); - atomic_set(&ib_conn->refcount, 1); /* ref ib conn allocation */ + init_completion(&ib_conn->stop_completion); INIT_LIST_HEAD(&ib_conn->conn_list); spin_lock_init(&ib_conn->lock); } @@ -737,7 +732,6 @@ ib_conn->state = ISER_CONN_PENDING; - iser_conn_get(ib_conn); /* ref ib conn's cma id */ ib_conn->cma_id = rdma_create_id(iser_cma_handler, (void *)ib_conn, RDMA_PS_TCP, IB_QPT_RC); @@ -774,9 +768,8 @@ ib_conn->cma_id = NULL; addr_failure: ib_conn->state = ISER_CONN_DOWN; - iser_conn_put(ib_conn, 1); /* deref ib conn's cma id */ connect_failure: - iser_conn_put(ib_conn, 1); /* deref ib conn deallocate */ + iser_conn_release(ib_conn); return err; } --- linux-3.13.0.orig/drivers/infiniband/ulp/isert/ib_isert.c +++ linux-3.13.0/drivers/infiniband/ulp/isert/ib_isert.c @@ -28,6 +28,7 @@ #include #include #include +#include #include "isert_proto.h" #include "ib_isert.h" @@ -40,6 +41,7 @@ static LIST_HEAD(device_list); static struct workqueue_struct *isert_rx_wq; static struct workqueue_struct *isert_comp_wq; +static struct workqueue_struct *isert_release_wq; static void isert_unmap_cmd(struct isert_cmd *isert_cmd, struct isert_conn *isert_conn); @@ -47,10 +49,15 @@ isert_map_rdma(struct iscsi_conn *conn, struct iscsi_cmd *cmd, struct isert_rdma_wr *wr); static void -isert_unreg_rdma_frwr(struct isert_cmd *isert_cmd, struct isert_conn *isert_conn); +isert_unreg_rdma(struct isert_cmd *isert_cmd, struct isert_conn *isert_conn); static int -isert_reg_rdma_frwr(struct iscsi_conn *conn, struct iscsi_cmd *cmd, - struct isert_rdma_wr *wr); +isert_reg_rdma(struct iscsi_conn *conn, struct iscsi_cmd *cmd, + struct isert_rdma_wr *wr); +static int +isert_rdma_post_recvl(struct isert_conn *isert_conn); +static int +isert_rdma_accept(struct isert_conn *isert_conn); +struct rdma_cm_id *isert_setup_id(struct isert_np *isert_np); static void isert_qp_event_callback(struct ib_event *e, void *context) @@ -111,9 +118,12 @@ attr.cap.max_recv_wr = ISERT_QP_MAX_RECV_DTOS; /* * FIXME: Use devattr.max_sge - 2 for max_send_sge as - * work-around for RDMA_READ.. + * work-around for RDMA_READs with ConnectX-2. + * + * Also, still make sure to have at least two SGEs for + * outgoing control PDU responses. */ - attr.cap.max_send_sge = device->dev_attr.max_sge - 2; + attr.cap.max_send_sge = max(2, device->dev_attr.max_sge - 2); isert_conn->max_sge = attr.cap.max_send_sge; attr.cap.max_recv_sge = 1; @@ -128,12 +138,18 @@ ret = rdma_create_qp(cma_id, isert_conn->conn_pd, &attr); if (ret) { pr_err("rdma_create_qp failed for cma_id %d\n", ret); - return ret; + goto err; } isert_conn->conn_qp = cma_id->qp; pr_debug("rdma_create_qp() returned success >>>>>>>>>>>>>>>>>>>>>>>>>.\n"); return 0; +err: + mutex_lock(&device_list_mutex); + device->cq_active_qps[min_index]--; + mutex_unlock(&device_list_mutex); + + return ret; } static void @@ -190,7 +206,7 @@ static void isert_free_rx_descriptors(struct isert_conn *isert_conn) { - struct ib_device *ib_dev = isert_conn->conn_cm_id->device; + struct ib_device *ib_dev = isert_conn->conn_device->ib_device; struct iser_rx_desc *rx_desc; int i; @@ -219,19 +235,23 @@ struct isert_cq_desc *cq_desc; struct ib_device_attr *dev_attr; int ret = 0, i, j; + int max_rx_cqe, max_tx_cqe; dev_attr = &device->dev_attr; ret = isert_query_device(ib_dev, dev_attr); if (ret) return ret; + max_rx_cqe = min(ISER_MAX_RX_CQ_LEN, dev_attr->max_cqe); + max_tx_cqe = min(ISER_MAX_TX_CQ_LEN, dev_attr->max_cqe); + /* asign function handlers */ if (dev_attr->device_cap_flags & IB_DEVICE_MEM_MGT_EXTENSIONS) { - device->use_frwr = 1; - device->reg_rdma_mem = isert_reg_rdma_frwr; - device->unreg_rdma_mem = isert_unreg_rdma_frwr; + device->use_fastreg = 1; + device->reg_rdma_mem = isert_reg_rdma; + device->unreg_rdma_mem = isert_unreg_rdma; } else { - device->use_frwr = 0; + device->use_fastreg = 0; device->reg_rdma_mem = isert_map_rdma; device->unreg_rdma_mem = isert_unmap_cmd; } @@ -239,9 +259,10 @@ device->cqs_used = min_t(int, num_online_cpus(), device->ib_device->num_comp_vectors); device->cqs_used = min(ISERT_MAX_CQ, device->cqs_used); - pr_debug("Using %d CQs, device %s supports %d vectors support FRWR %d\n", + pr_debug("Using %d CQs, device %s supports %d vectors support " + "Fast registration %d\n", device->cqs_used, device->ib_device->name, - device->ib_device->num_comp_vectors, device->use_frwr); + device->ib_device->num_comp_vectors, device->use_fastreg); device->cq_desc = kzalloc(sizeof(struct isert_cq_desc) * device->cqs_used, GFP_KERNEL); if (!device->cq_desc) { @@ -250,13 +271,6 @@ } cq_desc = device->cq_desc; - device->dev_pd = ib_alloc_pd(ib_dev); - if (IS_ERR(device->dev_pd)) { - ret = PTR_ERR(device->dev_pd); - pr_err("ib_alloc_pd failed for dev_pd: %d\n", ret); - goto out_cq_desc; - } - for (i = 0; i < device->cqs_used; i++) { cq_desc[i].device = device; cq_desc[i].cq_index = i; @@ -266,7 +280,7 @@ isert_cq_rx_callback, isert_cq_event_callback, (void *)&cq_desc[i], - ISER_MAX_RX_CQ_LEN, i); + max_rx_cqe, i); if (IS_ERR(device->dev_rx_cq[i])) { ret = PTR_ERR(device->dev_rx_cq[i]); device->dev_rx_cq[i] = NULL; @@ -278,7 +292,7 @@ isert_cq_tx_callback, isert_cq_event_callback, (void *)&cq_desc[i], - ISER_MAX_TX_CQ_LEN, i); + max_tx_cqe, i); if (IS_ERR(device->dev_tx_cq[i])) { ret = PTR_ERR(device->dev_tx_cq[i]); device->dev_tx_cq[i] = NULL; @@ -294,13 +308,6 @@ goto out_cq; } - device->dev_mr = ib_get_dma_mr(device->dev_pd, IB_ACCESS_LOCAL_WRITE); - if (IS_ERR(device->dev_mr)) { - ret = PTR_ERR(device->dev_mr); - pr_err("ib_get_dma_mr failed for dev_mr: %d\n", ret); - goto out_cq; - } - return 0; out_cq: @@ -316,9 +323,6 @@ ib_destroy_cq(device->dev_tx_cq[j]); } } - ib_dealloc_pd(device->dev_pd); - -out_cq_desc: kfree(device->cq_desc); return ret; @@ -341,8 +345,6 @@ device->dev_tx_cq[i] = NULL; } - ib_dereg_mr(device->dev_mr); - ib_dealloc_pd(device->dev_pd); kfree(device->cq_desc); } @@ -398,18 +400,18 @@ } static void -isert_conn_free_frwr_pool(struct isert_conn *isert_conn) +isert_conn_free_fastreg_pool(struct isert_conn *isert_conn) { struct fast_reg_descriptor *fr_desc, *tmp; int i = 0; - if (list_empty(&isert_conn->conn_frwr_pool)) + if (list_empty(&isert_conn->conn_fr_pool)) return; - pr_debug("Freeing conn %p frwr pool", isert_conn); + pr_debug("Freeing conn %p fastreg pool", isert_conn); list_for_each_entry_safe(fr_desc, tmp, - &isert_conn->conn_frwr_pool, list) { + &isert_conn->conn_fr_pool, list) { list_del(&fr_desc->list); ib_free_fast_reg_page_list(fr_desc->data_frpl); ib_dereg_mr(fr_desc->data_mr); @@ -417,20 +419,47 @@ ++i; } - if (i < isert_conn->conn_frwr_pool_size) + if (i < isert_conn->conn_fr_pool_size) pr_warn("Pool still has %d regions registered\n", - isert_conn->conn_frwr_pool_size - i); + isert_conn->conn_fr_pool_size - i); +} + +static int +isert_create_fr_desc(struct ib_device *ib_device, struct ib_pd *pd, + struct fast_reg_descriptor *fr_desc) +{ + fr_desc->data_frpl = ib_alloc_fast_reg_page_list(ib_device, + ISCSI_ISER_SG_TABLESIZE); + if (IS_ERR(fr_desc->data_frpl)) { + pr_err("Failed to allocate data frpl err=%ld\n", + PTR_ERR(fr_desc->data_frpl)); + return PTR_ERR(fr_desc->data_frpl); + } + + fr_desc->data_mr = ib_alloc_fast_reg_mr(pd, ISCSI_ISER_SG_TABLESIZE); + if (IS_ERR(fr_desc->data_mr)) { + pr_err("Failed to allocate data frmr err=%ld\n", + PTR_ERR(fr_desc->data_mr)); + ib_free_fast_reg_page_list(fr_desc->data_frpl); + return PTR_ERR(fr_desc->data_mr); + } + pr_debug("Create fr_desc %p page_list %p\n", + fr_desc, fr_desc->data_frpl->page_list); + + fr_desc->valid = true; + + return 0; } static int -isert_conn_create_frwr_pool(struct isert_conn *isert_conn) +isert_conn_create_fastreg_pool(struct isert_conn *isert_conn) { struct fast_reg_descriptor *fr_desc; struct isert_device *device = isert_conn->conn_device; int i, ret; - INIT_LIST_HEAD(&isert_conn->conn_frwr_pool); - isert_conn->conn_frwr_pool_size = 0; + INIT_LIST_HEAD(&isert_conn->conn_fr_pool); + isert_conn->conn_fr_pool_size = 0; for (i = 0; i < ISCSI_DEF_XMIT_CMDS_MAX; i++) { fr_desc = kzalloc(sizeof(*fr_desc), GFP_KERNEL); if (!fr_desc) { @@ -439,48 +468,34 @@ goto err; } - fr_desc->data_frpl = - ib_alloc_fast_reg_page_list(device->ib_device, - ISCSI_ISER_SG_TABLESIZE); - if (IS_ERR(fr_desc->data_frpl)) { - pr_err("Failed to allocate fr_pg_list err=%ld\n", - PTR_ERR(fr_desc->data_frpl)); - ret = PTR_ERR(fr_desc->data_frpl); - goto err; - } - - fr_desc->data_mr = ib_alloc_fast_reg_mr(device->dev_pd, - ISCSI_ISER_SG_TABLESIZE); - if (IS_ERR(fr_desc->data_mr)) { - pr_err("Failed to allocate frmr err=%ld\n", - PTR_ERR(fr_desc->data_mr)); - ret = PTR_ERR(fr_desc->data_mr); - ib_free_fast_reg_page_list(fr_desc->data_frpl); + ret = isert_create_fr_desc(device->ib_device, + isert_conn->conn_pd, fr_desc); + if (ret) { + pr_err("Failed to create fastreg descriptor err=%d\n", + ret); + kfree(fr_desc); goto err; } - pr_debug("Create fr_desc %p page_list %p\n", - fr_desc, fr_desc->data_frpl->page_list); - fr_desc->valid = true; - list_add_tail(&fr_desc->list, &isert_conn->conn_frwr_pool); - isert_conn->conn_frwr_pool_size++; + list_add_tail(&fr_desc->list, &isert_conn->conn_fr_pool); + isert_conn->conn_fr_pool_size++; } - pr_debug("Creating conn %p frwr pool size=%d", - isert_conn, isert_conn->conn_frwr_pool_size); + pr_debug("Creating conn %p fastreg pool size=%d", + isert_conn, isert_conn->conn_fr_pool_size); return 0; err: - isert_conn_free_frwr_pool(isert_conn); + isert_conn_free_fastreg_pool(isert_conn); return ret; } static int isert_connect_request(struct rdma_cm_id *cma_id, struct rdma_cm_event *event) { - struct iscsi_np *np = cma_id->context; - struct isert_np *isert_np = np->np_context; + struct isert_np *isert_np = cma_id->context; + struct iscsi_np *np = isert_np->np; struct isert_conn *isert_conn; struct isert_device *device; struct ib_device *ib_dev = cma_id->device; @@ -497,15 +512,13 @@ isert_conn->state = ISER_CONN_INIT; INIT_LIST_HEAD(&isert_conn->conn_accept_node); init_completion(&isert_conn->conn_login_comp); - init_waitqueue_head(&isert_conn->conn_wait); - init_waitqueue_head(&isert_conn->conn_wait_comp_err); + init_completion(&isert_conn->login_req_comp); + init_completion(&isert_conn->conn_wait); + init_completion(&isert_conn->conn_wait_comp_err); kref_init(&isert_conn->conn_kref); - kref_get(&isert_conn->conn_kref); mutex_init(&isert_conn->conn_mutex); - mutex_init(&isert_conn->conn_comp_mutex); spin_lock_init(&isert_conn->conn_lock); - cma_id->context = isert_conn; isert_conn->conn_cm_id = cma_id; isert_conn->responder_resources = event->param.conn.responder_resources; isert_conn->initiator_depth = event->param.conn.initiator_depth; @@ -558,14 +571,29 @@ } isert_conn->conn_device = device; - isert_conn->conn_pd = device->dev_pd; - isert_conn->conn_mr = device->dev_mr; + isert_conn->conn_pd = ib_alloc_pd(isert_conn->conn_device->ib_device); + if (IS_ERR(isert_conn->conn_pd)) { + ret = PTR_ERR(isert_conn->conn_pd); + pr_err("ib_alloc_pd failed for conn %p: ret=%d\n", + isert_conn, ret); + goto out_pd; + } + + isert_conn->conn_mr = ib_get_dma_mr(isert_conn->conn_pd, + IB_ACCESS_LOCAL_WRITE); + if (IS_ERR(isert_conn->conn_mr)) { + ret = PTR_ERR(isert_conn->conn_mr); + pr_err("ib_get_dma_mr failed for conn %p: ret=%d\n", + isert_conn, ret); + goto out_mr; + } - if (device->use_frwr) { - ret = isert_conn_create_frwr_pool(isert_conn); + if (device->use_fastreg) { + ret = isert_conn_create_fastreg_pool(isert_conn); if (ret) { - pr_err("Conn: %p failed to create frwr_pool\n", isert_conn); - goto out_frwr; + pr_err("Conn: %p failed to create fastreg pool\n", + isert_conn); + goto out_fastreg; } } @@ -573,18 +601,30 @@ if (ret) goto out_conn_dev; + ret = isert_rdma_post_recvl(isert_conn); + if (ret) + goto out_conn_dev; + + ret = isert_rdma_accept(isert_conn); + if (ret) + goto out_conn_dev; + mutex_lock(&isert_np->np_accept_mutex); - list_add_tail(&isert_np->np_accept_list, &isert_conn->conn_accept_node); + list_add_tail(&isert_conn->conn_accept_node, &isert_np->np_accept_list); mutex_unlock(&isert_np->np_accept_mutex); - pr_debug("isert_connect_request() waking up np_accept_wq: %p\n", np); - wake_up(&isert_np->np_accept_wq); + pr_debug("isert_connect_request() up np_sem np: %p\n", np); + up(&isert_np->np_sem); return 0; out_conn_dev: - if (device->use_frwr) - isert_conn_free_frwr_pool(isert_conn); -out_frwr: + if (device->use_fastreg) + isert_conn_free_fastreg_pool(isert_conn); +out_fastreg: + ib_dereg_mr(isert_conn->conn_mr); +out_mr: + ib_dealloc_pd(isert_conn->conn_pd); +out_pd: isert_device_try_release(device); out_rsp_dma_map: ib_dma_unmap_single(ib_dev, isert_conn->login_rsp_dma, @@ -596,32 +636,39 @@ kfree(isert_conn->login_buf); out: kfree(isert_conn); + rdma_reject(cma_id, NULL, 0); return ret; } static void isert_connect_release(struct isert_conn *isert_conn) { - struct ib_device *ib_dev = isert_conn->conn_cm_id->device; struct isert_device *device = isert_conn->conn_device; + struct ib_device *ib_dev = device->ib_device; int cq_index; pr_debug("Entering isert_connect_release(): >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n"); - if (device && device->use_frwr) - isert_conn_free_frwr_pool(isert_conn); + if (device && device->use_fastreg) + isert_conn_free_fastreg_pool(isert_conn); + + isert_free_rx_descriptors(isert_conn); + if (isert_conn->conn_cm_id) + rdma_destroy_id(isert_conn->conn_cm_id); if (isert_conn->conn_qp) { cq_index = ((struct isert_cq_desc *) isert_conn->conn_qp->recv_cq->cq_context)->cq_index; pr_debug("isert_connect_release: cq_index: %d\n", cq_index); + mutex_lock(&device_list_mutex); isert_conn->conn_device->cq_active_qps[cq_index]--; + mutex_unlock(&device_list_mutex); - rdma_destroy_qp(isert_conn->conn_cm_id); + ib_destroy_qp(isert_conn->conn_qp); } - isert_free_rx_descriptors(isert_conn); - rdma_destroy_id(isert_conn->conn_cm_id); + ib_dereg_mr(isert_conn->conn_mr); + ib_dealloc_pd(isert_conn->conn_pd); if (isert_conn->login_buf) { ib_dma_unmap_single(ib_dev, isert_conn->login_rsp_dma, @@ -642,7 +689,19 @@ static void isert_connected_handler(struct rdma_cm_id *cma_id) { - return; + struct isert_conn *isert_conn = cma_id->qp->qp_context; + + pr_info("conn %p\n", isert_conn); + + if (!kref_get_unless_zero(&isert_conn->conn_kref)) { + pr_warn("conn %p connect_release is running\n", isert_conn); + return; + } + + mutex_lock(&isert_conn->conn_mutex); + if (isert_conn->state != ISER_CONN_FULL_FEATURE) + isert_conn->state = ISER_CONN_UP; + mutex_unlock(&isert_conn->conn_mutex); } static void @@ -663,87 +722,139 @@ kref_put(&isert_conn->conn_kref, isert_release_conn_kref); } +/** + * isert_conn_terminate() - Initiate connection termination + * @isert_conn: isert connection struct + * + * Notes: + * In case the connection state is FULL_FEATURE, move state + * to TEMINATING and start teardown sequence (rdma_disconnect). + * In case the connection state is UP, complete flush as well. + * + * This routine must be called with conn_mutex held. Thus it is + * safe to call multiple times. + */ static void -isert_disconnect_work(struct work_struct *work) +isert_conn_terminate(struct isert_conn *isert_conn) { - struct isert_conn *isert_conn = container_of(work, - struct isert_conn, conn_logout_work); + int err; - pr_debug("isert_disconnect_work(): >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n"); - mutex_lock(&isert_conn->conn_mutex); - isert_conn->state = ISER_CONN_DOWN; - - if (isert_conn->post_recv_buf_count == 0 && - atomic_read(&isert_conn->post_send_buf_count) == 0) { - pr_debug("Calling wake_up(&isert_conn->conn_wait);\n"); - mutex_unlock(&isert_conn->conn_mutex); - goto wake_up; - } - if (!isert_conn->conn_cm_id) { - mutex_unlock(&isert_conn->conn_mutex); - isert_put_conn(isert_conn); - return; + switch (isert_conn->state) { + case ISER_CONN_TERMINATING: + break; + case ISER_CONN_UP: + /* + * No flush completions will occur as we didn't + * get to ISER_CONN_FULL_FEATURE yet, complete + * to allow teardown progress. + */ + complete(&isert_conn->conn_wait_comp_err); + case ISER_CONN_FULL_FEATURE: /* FALLTHRU */ + pr_info("Terminating conn %p state %d\n", + isert_conn, isert_conn->state); + isert_conn->state = ISER_CONN_TERMINATING; + err = rdma_disconnect(isert_conn->conn_cm_id); + if (err) + pr_warn("Failed rdma_disconnect isert_conn %p\n", + isert_conn); + break; + default: + pr_warn("conn %p teminating in state %d\n", + isert_conn, isert_conn->state); } - if (!isert_conn->logout_posted) { - pr_debug("Calling rdma_disconnect for !logout_posted from" - " isert_disconnect_work\n"); - rdma_disconnect(isert_conn->conn_cm_id); - mutex_unlock(&isert_conn->conn_mutex); - iscsit_cause_connection_reinstatement(isert_conn->conn, 0); - goto wake_up; +} + +static int +isert_np_cma_handler(struct isert_np *isert_np, + enum rdma_cm_event_type event) +{ + pr_debug("isert np %p, handling event %d\n", isert_np, event); + + switch (event) { + case RDMA_CM_EVENT_DEVICE_REMOVAL: + isert_np->np_cm_id = NULL; + break; + case RDMA_CM_EVENT_ADDR_CHANGE: + isert_np->np_cm_id = isert_setup_id(isert_np); + if (IS_ERR(isert_np->np_cm_id)) { + pr_err("isert np %p setup id failed: %ld\n", + isert_np, PTR_ERR(isert_np->np_cm_id)); + isert_np->np_cm_id = NULL; + } + break; + default: + pr_err("isert np %p Unexpected event %d\n", + isert_np, event); } + + return -1; +} + +static int +isert_disconnected_handler(struct rdma_cm_id *cma_id, + enum rdma_cm_event_type event) +{ + struct isert_conn *isert_conn = cma_id->qp->qp_context; + + mutex_lock(&isert_conn->conn_mutex); + isert_conn_terminate(isert_conn); mutex_unlock(&isert_conn->conn_mutex); -wake_up: - wake_up(&isert_conn->conn_wait); - isert_put_conn(isert_conn); + pr_info("conn %p completing conn_wait\n", isert_conn); + complete(&isert_conn->conn_wait); + + return 0; } -static void -isert_disconnected_handler(struct rdma_cm_id *cma_id) +static int +isert_connect_error(struct rdma_cm_id *cma_id) { - struct isert_conn *isert_conn = (struct isert_conn *)cma_id->context; + struct isert_conn *isert_conn = cma_id->qp->qp_context; - INIT_WORK(&isert_conn->conn_logout_work, isert_disconnect_work); - schedule_work(&isert_conn->conn_logout_work); + isert_conn->conn_cm_id = NULL; + isert_put_conn(isert_conn); + + return -1; } 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; pr_debug("isert_cma_handler: event %d status %d conn %p id %p\n", event->event, event->status, cma_id->context, cma_id); + 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: - pr_debug("RDMA_CM_EVENT_CONNECT_REQUEST: >>>>>>>>>>>>>>>\n"); ret = isert_connect_request(cma_id, event); + if (ret) + pr_err("isert_cma_handler failed RDMA_CM_EVENT: 0x%08x %d\n", + event->event, ret); break; case RDMA_CM_EVENT_ESTABLISHED: - pr_debug("RDMA_CM_EVENT_ESTABLISHED >>>>>>>>>>>>>>\n"); isert_connected_handler(cma_id); break; - case RDMA_CM_EVENT_DISCONNECTED: - pr_debug("RDMA_CM_EVENT_DISCONNECTED: >>>>>>>>>>>>>>\n"); - isert_disconnected_handler(cma_id); - break; - case RDMA_CM_EVENT_DEVICE_REMOVAL: - case RDMA_CM_EVENT_ADDR_CHANGE: + case RDMA_CM_EVENT_ADDR_CHANGE: /* FALLTHRU */ + case RDMA_CM_EVENT_DISCONNECTED: /* FALLTHRU */ + case RDMA_CM_EVENT_DEVICE_REMOVAL: /* FALLTHRU */ + case RDMA_CM_EVENT_TIMEWAIT_EXIT: /* FALLTHRU */ + ret = isert_disconnected_handler(cma_id, event->event); break; + case RDMA_CM_EVENT_REJECTED: /* FALLTHRU */ + case RDMA_CM_EVENT_UNREACHABLE: /* FALLTHRU */ case RDMA_CM_EVENT_CONNECT_ERROR: + ret = isert_connect_error(cma_id); + break; default: - pr_err("Unknown RDMA CMA event: %d\n", event->event); + pr_err("Unhandled RDMA CMA event: %d\n", event->event); break; } - if (ret != 0) { - pr_err("isert_cma_handler failed RDMA_CM_EVENT: 0x%08x %d\n", - event->event, ret); - dump_stack(); - } - return ret; } @@ -871,16 +982,17 @@ * Coalesce send completion interrupts by only setting IB_SEND_SIGNALED * bit for every ISERT_COMP_BATCH_COUNT number of ib_post_send() calls. */ - mutex_lock(&isert_conn->conn_comp_mutex); - if (coalesce && + mutex_lock(&isert_conn->conn_mutex); + if (coalesce && isert_conn->state == ISER_CONN_FULL_FEATURE && ++isert_conn->conn_comp_batch < ISERT_COMP_BATCH_COUNT) { + tx_desc->llnode_active = true; llist_add(&tx_desc->comp_llnode, &isert_conn->conn_comp_llist); - mutex_unlock(&isert_conn->conn_comp_mutex); + mutex_unlock(&isert_conn->conn_mutex); return; } isert_conn->conn_comp_batch = 0; tx_desc->comp_llnode_batch = llist_del_all(&isert_conn->conn_comp_llist); - mutex_unlock(&isert_conn->conn_comp_mutex); + mutex_unlock(&isert_conn->conn_mutex); send_wr->send_flags = IB_SEND_SIGNALED; } @@ -958,7 +1070,10 @@ if (ret) return ret; - isert_conn->state = ISER_CONN_UP; + /* Now we are in FULL_FEATURE phase */ + mutex_lock(&isert_conn->conn_mutex); + isert_conn->state = ISER_CONN_FULL_FEATURE; + mutex_unlock(&isert_conn->conn_mutex); goto post_send; } @@ -975,18 +1090,17 @@ } static void -isert_rx_login_req(struct iser_rx_desc *rx_desc, int rx_buflen, - struct isert_conn *isert_conn) +isert_rx_login_req(struct isert_conn *isert_conn) { + struct iser_rx_desc *rx_desc = (void *)isert_conn->login_req_buf; + int rx_buflen = isert_conn->login_req_len; struct iscsi_conn *conn = isert_conn->conn; struct iscsi_login *login = conn->conn_login; int size; - if (!login) { - pr_err("conn->conn_login is NULL\n"); - dump_stack(); - return; - } + pr_info("conn %p\n", isert_conn); + + WARN_ON_ONCE(!login); if (login->first_request) { struct iscsi_login_req *login_req = @@ -1024,13 +1138,13 @@ } static struct iscsi_cmd -*isert_allocate_cmd(struct iscsi_conn *conn, gfp_t gfp) +*isert_allocate_cmd(struct iscsi_conn *conn) { struct isert_conn *isert_conn = (struct isert_conn *)conn->context; struct isert_cmd *isert_cmd; struct iscsi_cmd *cmd; - cmd = iscsit_allocate_cmd(conn, gfp); + cmd = iscsit_allocate_cmd(conn, TASK_INTERRUPTIBLE); if (!cmd) { pr_err("Unable to allocate iscsi_cmd + isert_cmd\n"); return NULL; @@ -1094,6 +1208,8 @@ if (!rc && dump_payload == false && unsol_data) iscsit_set_unsoliticed_dataout(cmd); + else if (dump_payload && imm_data) + target_put_sess_cmd(conn->sess->se_sess, &cmd->se_cmd); return 0; } @@ -1219,7 +1335,7 @@ switch (opcode) { case ISCSI_OP_SCSI_CMD: - cmd = isert_allocate_cmd(conn, GFP_KERNEL); + cmd = isert_allocate_cmd(conn); if (!cmd) break; @@ -1233,7 +1349,7 @@ rx_desc, (unsigned char *)hdr); break; case ISCSI_OP_NOOP_OUT: - cmd = isert_allocate_cmd(conn, GFP_KERNEL); + cmd = isert_allocate_cmd(conn); if (!cmd) break; @@ -1246,7 +1362,7 @@ (unsigned char *)hdr); break; case ISCSI_OP_SCSI_TMFUNC: - cmd = isert_allocate_cmd(conn, GFP_KERNEL); + cmd = isert_allocate_cmd(conn); if (!cmd) break; @@ -1254,7 +1370,7 @@ (unsigned char *)hdr); break; case ISCSI_OP_LOGOUT: - cmd = isert_allocate_cmd(conn, GFP_KERNEL); + cmd = isert_allocate_cmd(conn); if (!cmd) break; @@ -1265,7 +1381,7 @@ HZ); break; case ISCSI_OP_TEXT: - cmd = isert_allocate_cmd(conn, GFP_KERNEL); + cmd = isert_allocate_cmd(conn); if (!cmd) break; @@ -1347,11 +1463,20 @@ hdr->opcode, hdr->itt, hdr->flags, (int)(xfer_len - ISER_HEADERS_LEN)); - if ((char *)desc == isert_conn->login_req_buf) - isert_rx_login_req(desc, xfer_len - ISER_HEADERS_LEN, - isert_conn); - else + if ((char *)desc == isert_conn->login_req_buf) { + isert_conn->login_req_len = xfer_len - ISER_HEADERS_LEN; + if (isert_conn->conn) { + struct iscsi_login *login = isert_conn->conn->conn_login; + + if (login && !login->first_request) + isert_rx_login_req(isert_conn); + } + mutex_lock(&isert_conn->conn_mutex); + complete(&isert_conn->login_req_comp); + mutex_unlock(&isert_conn->conn_mutex); + } else { isert_rx_do_work(desc, isert_conn); + } ib_dma_sync_single_for_device(ib_dev, rx_dma, rx_buflen, DMA_FROM_DEVICE); @@ -1404,25 +1529,25 @@ } static void -isert_unreg_rdma_frwr(struct isert_cmd *isert_cmd, struct isert_conn *isert_conn) +isert_unreg_rdma(struct isert_cmd *isert_cmd, struct isert_conn *isert_conn) { struct isert_rdma_wr *wr = &isert_cmd->rdma_wr; struct ib_device *ib_dev = isert_conn->conn_cm_id->device; LIST_HEAD(unmap_list); - pr_debug("unreg_frwr_cmd: %p\n", isert_cmd); + pr_debug("unreg_fastreg_cmd: %p\n", isert_cmd); if (wr->fr_desc) { - pr_debug("unreg_frwr_cmd: %p free fr_desc %p\n", + pr_debug("unreg_fastreg_cmd: %p free fr_desc %p\n", isert_cmd, wr->fr_desc); spin_lock_bh(&isert_conn->conn_lock); - list_add_tail(&wr->fr_desc->list, &isert_conn->conn_frwr_pool); + list_add_tail(&wr->fr_desc->list, &isert_conn->conn_fr_pool); spin_unlock_bh(&isert_conn->conn_lock); wr->fr_desc = NULL; } if (wr->sge) { - pr_debug("unreg_frwr_cmd: %p unmap_sg op\n", isert_cmd); + pr_debug("unreg_fastreg_cmd: %p unmap_sg op\n", isert_cmd); ib_dma_unmap_sg(ib_dev, wr->sge, wr->num_sge, (wr->iser_ib_op == ISER_IB_RDMA_WRITE) ? DMA_TO_DEVICE : DMA_FROM_DEVICE); @@ -1434,7 +1559,7 @@ } static void -isert_put_cmd(struct isert_cmd *isert_cmd) +isert_put_cmd(struct isert_cmd *isert_cmd, bool comp_err) { struct iscsi_cmd *cmd = isert_cmd->iscsi_cmd; struct isert_conn *isert_conn = isert_cmd->conn; @@ -1447,11 +1572,24 @@ case ISCSI_OP_SCSI_CMD: spin_lock_bh(&conn->cmd_lock); if (!list_empty(&cmd->i_conn_node)) - list_del(&cmd->i_conn_node); + list_del_init(&cmd->i_conn_node); spin_unlock_bh(&conn->cmd_lock); - if (cmd->data_direction == DMA_TO_DEVICE) + if (cmd->data_direction == DMA_TO_DEVICE) { iscsit_stop_dataout_timer(cmd); + /* + * Check for special case during comp_err where + * WRITE_PENDING has been handed off from core, + * but requires an extra target_put_sess_cmd() + * before transport_generic_free_cmd() below. + */ + if (comp_err && + cmd->se_cmd.t_state == TRANSPORT_WRITE_PENDING) { + struct se_cmd *se_cmd = &cmd->se_cmd; + + target_put_sess_cmd(se_cmd->se_sess, se_cmd); + } + } device->unreg_rdma_mem(isert_cmd, isert_conn); transport_generic_free_cmd(&cmd->se_cmd, 0); @@ -1459,7 +1597,7 @@ case ISCSI_OP_SCSI_TMFUNC: spin_lock_bh(&conn->cmd_lock); if (!list_empty(&cmd->i_conn_node)) - list_del(&cmd->i_conn_node); + list_del_init(&cmd->i_conn_node); spin_unlock_bh(&conn->cmd_lock); transport_generic_free_cmd(&cmd->se_cmd, 0); @@ -1469,7 +1607,7 @@ case ISCSI_OP_TEXT: spin_lock_bh(&conn->cmd_lock); if (!list_empty(&cmd->i_conn_node)) - list_del(&cmd->i_conn_node); + list_del_init(&cmd->i_conn_node); spin_unlock_bh(&conn->cmd_lock); /* @@ -1506,7 +1644,7 @@ static void isert_completion_put(struct iser_tx_desc *tx_desc, struct isert_cmd *isert_cmd, - struct ib_device *ib_dev) + struct ib_device *ib_dev, bool comp_err) { if (isert_cmd->pdu_buf_dma != 0) { pr_debug("Calling ib_dma_unmap_single for isert_cmd->pdu_buf_dma\n"); @@ -1516,7 +1654,7 @@ } isert_unmap_tx_desc(tx_desc, ib_dev); - isert_put_cmd(isert_cmd); + isert_put_cmd(isert_cmd, comp_err); } static void @@ -1532,6 +1670,7 @@ iscsit_stop_dataout_timer(cmd); device->unreg_rdma_mem(isert_cmd, isert_conn); cmd->write_data_done = wr->cur_rdma_length; + wr->send_wr_num = 0; pr_debug("Cmd: %p RDMA_READ comp calling execute_cmd\n", isert_cmd); spin_lock_bh(&cmd->istate_lock); @@ -1559,28 +1698,25 @@ iscsit_tmr_post_handler(cmd, cmd->conn); cmd->i_state = ISTATE_SENT_STATUS; - isert_completion_put(&isert_cmd->tx_desc, isert_cmd, ib_dev); + isert_completion_put(&isert_cmd->tx_desc, isert_cmd, ib_dev, false); break; case ISTATE_SEND_REJECT: pr_debug("Got isert_do_control_comp ISTATE_SEND_REJECT: >>>\n"); atomic_dec(&isert_conn->post_send_buf_count); cmd->i_state = ISTATE_SENT_STATUS; - isert_completion_put(&isert_cmd->tx_desc, isert_cmd, ib_dev); + isert_completion_put(&isert_cmd->tx_desc, isert_cmd, ib_dev, false); break; case ISTATE_SEND_LOGOUTRSP: pr_debug("Calling iscsit_logout_post_handler >>>>>>>>>>>>>>\n"); - /* - * Call atomic_dec(&isert_conn->post_send_buf_count) - * from isert_free_conn() - */ - isert_conn->logout_posted = true; + + atomic_dec(&isert_conn->post_send_buf_count); iscsit_logout_post_handler(cmd, cmd->conn); break; case ISTATE_SEND_TEXTRSP: atomic_dec(&isert_conn->post_send_buf_count); cmd->i_state = ISTATE_SENT_STATUS; - isert_completion_put(&isert_cmd->tx_desc, isert_cmd, ib_dev); + isert_completion_put(&isert_cmd->tx_desc, isert_cmd, ib_dev, false); break; default: pr_err("Unknown do_control_comp i_state %d\n", cmd->i_state); @@ -1596,6 +1732,7 @@ struct ib_device *ib_dev) { struct iscsi_cmd *cmd = isert_cmd->iscsi_cmd; + struct isert_rdma_wr *wr = &isert_cmd->rdma_wr; if (cmd->i_state == ISTATE_SEND_TASKMGTRSP || cmd->i_state == ISTATE_SEND_LOGOUTRSP || @@ -1607,10 +1744,10 @@ queue_work(isert_comp_wq, &isert_cmd->comp_work); return; } - atomic_dec(&isert_conn->post_send_buf_count); + atomic_sub(wr->send_wr_num + 1, &isert_conn->post_send_buf_count); cmd->i_state = ISTATE_SENT_STATUS; - isert_completion_put(tx_desc, isert_cmd, ib_dev); + isert_completion_put(tx_desc, isert_cmd, ib_dev, false); } static void @@ -1645,7 +1782,7 @@ case ISER_IB_RDMA_READ: pr_debug("isert_send_completion: Got ISER_IB_RDMA_READ:\n"); - atomic_dec(&isert_conn->post_send_buf_count); + atomic_sub(wr->send_wr_num, &isert_conn->post_send_buf_count); isert_completion_rdma_read(tx_desc, isert_cmd); break; default: @@ -1674,31 +1811,80 @@ } static void -isert_cq_comp_err(struct iser_tx_desc *tx_desc, struct isert_conn *isert_conn) +isert_cq_drain_comp_llist(struct isert_conn *isert_conn, struct ib_device *ib_dev) +{ + struct llist_node *llnode; + struct isert_rdma_wr *wr; + struct iser_tx_desc *t; + + mutex_lock(&isert_conn->conn_mutex); + llnode = llist_del_all(&isert_conn->conn_comp_llist); + isert_conn->conn_comp_batch = 0; + mutex_unlock(&isert_conn->conn_mutex); + + while (llnode) { + t = llist_entry(llnode, struct iser_tx_desc, comp_llnode); + llnode = llist_next(llnode); + wr = &t->isert_cmd->rdma_wr; + + atomic_sub(wr->send_wr_num + 1, &isert_conn->post_send_buf_count); + + isert_completion_put(t, t->isert_cmd, ib_dev, true); + } +} + +static void +isert_cq_tx_comp_err(struct iser_tx_desc *tx_desc, struct isert_conn *isert_conn) { struct ib_device *ib_dev = isert_conn->conn_cm_id->device; + struct isert_cmd *isert_cmd = tx_desc->isert_cmd; + struct llist_node *llnode = tx_desc->comp_llnode_batch; + struct isert_rdma_wr *wr; + struct iser_tx_desc *t; + + while (llnode) { + t = llist_entry(llnode, struct iser_tx_desc, comp_llnode); + llnode = llist_next(llnode); + wr = &t->isert_cmd->rdma_wr; - if (tx_desc) { - struct isert_cmd *isert_cmd = tx_desc->isert_cmd; + atomic_sub(wr->send_wr_num + 1, &isert_conn->post_send_buf_count); - if (!isert_cmd) - isert_unmap_tx_desc(tx_desc, ib_dev); - else - isert_completion_put(tx_desc, isert_cmd, ib_dev); + isert_completion_put(t, t->isert_cmd, ib_dev, true); } + tx_desc->comp_llnode_batch = NULL; - if (isert_conn->post_recv_buf_count == 0 && - atomic_read(&isert_conn->post_send_buf_count) == 0) { - pr_debug("isert_cq_comp_err >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n"); - pr_debug("Calling wake_up from isert_cq_comp_err\n"); + if (!isert_cmd) + isert_unmap_tx_desc(tx_desc, ib_dev); + else + isert_completion_put(tx_desc, isert_cmd, ib_dev, true); +} - mutex_lock(&isert_conn->conn_mutex); - if (isert_conn->state != ISER_CONN_DOWN) - isert_conn->state = ISER_CONN_TERMINATING; - mutex_unlock(&isert_conn->conn_mutex); +static void +isert_cq_rx_comp_err(struct isert_conn *isert_conn) +{ + struct ib_device *ib_dev = isert_conn->conn_cm_id->device; + struct iscsi_conn *conn = isert_conn->conn; + + if (isert_conn->post_recv_buf_count) + return; + + isert_cq_drain_comp_llist(isert_conn, ib_dev); - wake_up(&isert_conn->conn_wait_comp_err); + if (conn->sess) { + target_sess_cmd_list_set_waiting(conn->sess->se_sess); + target_wait_for_sess_cmds(conn->sess->se_sess); } + + while (atomic_read(&isert_conn->post_send_buf_count)) + msleep(3000); + + mutex_lock(&isert_conn->conn_mutex); + isert_conn_terminate(isert_conn); + mutex_unlock(&isert_conn->conn_mutex); + + iscsit_cause_connection_reinstatement(isert_conn->conn, 0); + + complete(&isert_conn->conn_wait_comp_err); } static void @@ -1723,8 +1909,14 @@ pr_debug("TX wc.status != IB_WC_SUCCESS >>>>>>>>>>>>>>\n"); pr_debug("TX wc.status: 0x%08x\n", wc.status); pr_debug("TX wc.vendor_err: 0x%08x\n", wc.vendor_err); - atomic_dec(&isert_conn->post_send_buf_count); - isert_cq_comp_err(tx_desc, isert_conn); + + if (wc.wr_id != ISER_FASTREG_LI_WRID) { + if (tx_desc->llnode_active) + continue; + + atomic_dec(&isert_conn->post_send_buf_count); + isert_cq_tx_comp_err(tx_desc, isert_conn); + } } } @@ -1767,7 +1959,7 @@ wc.vendor_err); } isert_conn->post_recv_buf_count--; - isert_cq_comp_err(NULL, isert_conn); + isert_cq_rx_comp_err(isert_conn); } } @@ -1841,13 +2033,31 @@ isert_cmd->tx_desc.num_sge = 2; } - isert_init_send_wr(isert_conn, isert_cmd, send_wr, true); + isert_init_send_wr(isert_conn, isert_cmd, send_wr, false); pr_debug("Posting SCSI Response IB_WR_SEND >>>>>>>>>>>>>>>>>>>>>>\n"); return isert_post_response(isert_conn, isert_cmd); } +static void +isert_aborted_task(struct iscsi_conn *conn, struct iscsi_cmd *cmd) +{ + struct isert_cmd *isert_cmd = iscsit_priv_cmd(cmd); + struct isert_conn *isert_conn = (struct isert_conn *)conn->context; + struct isert_device *device = isert_conn->conn_device; + + spin_lock_bh(&conn->cmd_lock); + if (!list_empty(&cmd->i_conn_node)) + list_del_init(&cmd->i_conn_node); + spin_unlock_bh(&conn->cmd_lock); + + if (cmd->data_direction == DMA_TO_DEVICE) + iscsit_stop_dataout_timer(cmd); + + device->unreg_rdma_mem(isert_cmd, isert_conn); +} + static int isert_put_nopin(struct iscsi_cmd *cmd, struct iscsi_conn *conn, bool nopout_response) @@ -1948,7 +2158,7 @@ int rc; isert_create_send_desc(isert_conn, isert_cmd, &isert_cmd->tx_desc); - rc = iscsit_build_text_rsp(cmd, conn, hdr); + rc = iscsit_build_text_rsp(cmd, conn, hdr, ISCSI_INFINIBAND); if (rc < 0) return rc; @@ -2163,32 +2373,29 @@ static int isert_fast_reg_mr(struct fast_reg_descriptor *fr_desc, - struct isert_cmd *isert_cmd, struct isert_conn *isert_conn, - struct ib_sge *ib_sge, u32 offset, unsigned int data_len) + struct isert_conn *isert_conn, struct scatterlist *sg_start, + struct ib_sge *ib_sge, u32 sg_nents, u32 offset, + unsigned int data_len) { - struct iscsi_cmd *cmd = isert_cmd->iscsi_cmd; struct ib_device *ib_dev = isert_conn->conn_cm_id->device; - struct scatterlist *sg_start; - u32 sg_off, page_off; struct ib_send_wr fr_wr, inv_wr; struct ib_send_wr *bad_wr, *wr = NULL; + int ret, pagelist_len; + u32 page_off; u8 key; - int ret, sg_nents, pagelist_len; - sg_off = offset / PAGE_SIZE; - sg_start = &cmd->se_cmd.t_data_sg[sg_off]; - sg_nents = min_t(unsigned int, cmd->se_cmd.t_data_nents - sg_off, - ISCSI_ISER_SG_TABLESIZE); + sg_nents = min_t(unsigned int, sg_nents, ISCSI_ISER_SG_TABLESIZE); page_off = offset % PAGE_SIZE; - pr_debug("Cmd: %p use fr_desc %p sg_nents %d sg_off %d offset %u\n", - isert_cmd, fr_desc, sg_nents, sg_off, offset); + pr_debug("Use fr_desc %p sg_nents %d offset %u\n", + fr_desc, sg_nents, offset); pagelist_len = isert_map_fr_pagelist(ib_dev, sg_start, sg_nents, &fr_desc->data_frpl->page_list[0]); if (!fr_desc->valid) { memset(&inv_wr, 0, sizeof(inv_wr)); + inv_wr.wr_id = ISER_FASTREG_LI_WRID; inv_wr.opcode = IB_WR_LOCAL_INV; inv_wr.ex.invalidate_rkey = fr_desc->data_mr->rkey; wr = &inv_wr; @@ -2199,6 +2406,7 @@ /* Prepare FASTREG WR */ memset(&fr_wr, 0, sizeof(fr_wr)); + fr_wr.wr_id = ISER_FASTREG_LI_WRID; fr_wr.opcode = IB_WR_FAST_REG_MR; fr_wr.wr.fast_reg.iova_start = fr_desc->data_frpl->page_list[0] + page_off; @@ -2232,8 +2440,8 @@ } static int -isert_reg_rdma_frwr(struct iscsi_conn *conn, struct iscsi_cmd *cmd, - struct isert_rdma_wr *wr) +isert_reg_rdma(struct iscsi_conn *conn, struct iscsi_cmd *cmd, + struct isert_rdma_wr *wr) { struct se_cmd *se_cmd = &cmd->se_cmd; struct isert_cmd *isert_cmd = iscsit_priv_cmd(cmd); @@ -2251,9 +2459,9 @@ if (wr->iser_ib_op == ISER_IB_RDMA_WRITE) { data_left = se_cmd->data_length; } else { - sg_off = cmd->write_data_done / PAGE_SIZE; - data_left = se_cmd->data_length - cmd->write_data_done; offset = cmd->write_data_done; + sg_off = offset / PAGE_SIZE; + data_left = se_cmd->data_length - cmd->write_data_done; isert_cmd->tx_desc.isert_cmd = isert_cmd; } @@ -2311,16 +2519,16 @@ wr->fr_desc = NULL; } else { spin_lock_irqsave(&isert_conn->conn_lock, flags); - fr_desc = list_first_entry(&isert_conn->conn_frwr_pool, + fr_desc = list_first_entry(&isert_conn->conn_fr_pool, struct fast_reg_descriptor, list); list_del(&fr_desc->list); spin_unlock_irqrestore(&isert_conn->conn_lock, flags); wr->fr_desc = fr_desc; - ret = isert_fast_reg_mr(fr_desc, isert_cmd, isert_conn, - ib_sge, offset, data_len); + ret = isert_fast_reg_mr(fr_desc, isert_conn, sg_start, + ib_sge, sg_nents, offset, data_len); if (ret) { - list_add_tail(&fr_desc->list, &isert_conn->conn_frwr_pool); + list_add_tail(&fr_desc->list, &isert_conn->conn_fr_pool); goto unmap_sg; } } @@ -2362,14 +2570,14 @@ &isert_cmd->tx_desc.iscsi_header); isert_init_tx_hdrs(isert_conn, &isert_cmd->tx_desc); isert_init_send_wr(isert_conn, isert_cmd, - &isert_cmd->tx_desc.send_wr, true); + &isert_cmd->tx_desc.send_wr, false); - atomic_inc(&isert_conn->post_send_buf_count); + atomic_add(wr->send_wr_num + 1, &isert_conn->post_send_buf_count); rc = ib_post_send(isert_conn->conn_qp, wr->send_wr, &wr_failed); if (rc) { pr_warn("ib_post_send() failed for IB_WR_RDMA_WRITE\n"); - atomic_dec(&isert_conn->post_send_buf_count); + atomic_sub(wr->send_wr_num + 1, &isert_conn->post_send_buf_count); } pr_debug("Cmd: %p posted RDMA_WRITE + Response for iSER Data READ\n", isert_cmd); @@ -2397,12 +2605,12 @@ return rc; } - atomic_inc(&isert_conn->post_send_buf_count); + atomic_add(wr->send_wr_num, &isert_conn->post_send_buf_count); rc = ib_post_send(isert_conn->conn_qp, wr->send_wr, &wr_failed); if (rc) { pr_warn("ib_post_send() failed for IB_WR_RDMA_READ\n"); - atomic_dec(&isert_conn->post_send_buf_count); + atomic_sub(wr->send_wr_num, &isert_conn->post_send_buf_count); } pr_debug("Cmd: %p posted RDMA_READ memory for ISER Data WRITE\n", isert_cmd); @@ -2413,9 +2621,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; @@ -2469,13 +2684,51 @@ return ret; } +struct rdma_cm_id * +isert_setup_id(struct isert_np *isert_np) +{ + struct iscsi_np *np = isert_np->np; + struct rdma_cm_id *id; + struct sockaddr *sa; + int ret; + + sa = (struct sockaddr *)&np->np_sockaddr; + pr_debug("ksockaddr: %p, sa: %p\n", &np->np_sockaddr, sa); + + id = rdma_create_id(isert_cma_handler, isert_np, + RDMA_PS_TCP, IB_QPT_RC); + if (IS_ERR(id)) { + pr_err("rdma_create_id() failed: %ld\n", PTR_ERR(id)); + ret = PTR_ERR(id); + goto out; + } + pr_debug("id %p context %p\n", id, id->context); + + ret = rdma_bind_addr(id, sa); + if (ret) { + pr_err("rdma_bind_addr() failed: %d\n", ret); + goto out_id; + } + + ret = rdma_listen(id, ISERT_RDMA_LISTEN_BACKLOG); + if (ret) { + pr_err("rdma_listen() failed: %d\n", ret); + goto out_id; + } + + return id; +out_id: + rdma_destroy_id(id); +out: + return ERR_PTR(ret); +} + static int isert_setup_np(struct iscsi_np *np, struct __kernel_sockaddr_storage *ksockaddr) { struct isert_np *isert_np; struct rdma_cm_id *isert_lid; - struct sockaddr *sa; int ret; isert_np = kzalloc(sizeof(struct isert_np), GFP_KERNEL); @@ -2483,13 +2736,12 @@ pr_err("Unable to allocate struct isert_np\n"); return -ENOMEM; } - init_waitqueue_head(&isert_np->np_accept_wq); + sema_init(&isert_np->np_sem, 0); mutex_init(&isert_np->np_accept_mutex); INIT_LIST_HEAD(&isert_np->np_accept_list); init_completion(&isert_np->np_login_comp); + isert_np->np = np; - sa = (struct sockaddr *)ksockaddr; - pr_debug("ksockaddr: %p, sa: %p\n", ksockaddr, sa); /* * Setup the np->np_sockaddr from the passed sockaddr setup * in iscsi_target_configfs.c code.. @@ -2497,50 +2749,21 @@ memcpy(&np->np_sockaddr, ksockaddr, sizeof(struct __kernel_sockaddr_storage)); - isert_lid = rdma_create_id(isert_cma_handler, np, RDMA_PS_TCP, - IB_QPT_RC); + isert_lid = isert_setup_id(isert_np); if (IS_ERR(isert_lid)) { - pr_err("rdma_create_id() for isert_listen_handler failed: %ld\n", - PTR_ERR(isert_lid)); ret = PTR_ERR(isert_lid); goto out; } - ret = rdma_bind_addr(isert_lid, sa); - if (ret) { - pr_err("rdma_bind_addr() for isert_lid failed: %d\n", ret); - goto out_lid; - } - - ret = rdma_listen(isert_lid, ISERT_RDMA_LISTEN_BACKLOG); - if (ret) { - pr_err("rdma_listen() for isert_lid failed: %d\n", ret); - goto out_lid; - } - isert_np->np_cm_id = isert_lid; np->np_context = isert_np; - pr_debug("Setup isert_lid->context: %p\n", isert_lid->context); return 0; -out_lid: - rdma_destroy_id(isert_lid); out: kfree(isert_np); - return ret; -} -static int -isert_check_accept_queue(struct isert_np *isert_np) -{ - int empty; - - mutex_lock(&isert_np->np_accept_mutex); - empty = list_empty(&isert_np->np_accept_list); - mutex_unlock(&isert_np->np_accept_mutex); - - return empty; + return ret; } static int @@ -2575,7 +2798,15 @@ struct isert_conn *isert_conn = (struct isert_conn *)conn->context; int ret; - pr_debug("isert_get_login_rx before conn_login_comp conn: %p\n", conn); + pr_info("before login_req comp conn: %p\n", isert_conn); + ret = wait_for_completion_interruptible(&isert_conn->login_req_comp); + if (ret) { + pr_err("isert_conn %p interrupted before got login req\n", + isert_conn); + return ret; + } + reinit_completion(&isert_conn->login_req_comp); + /* * For login requests after the first PDU, isert_rx_login_req() will * kick schedule_delayed_work(&conn->login_work) as the packet is @@ -2585,11 +2816,15 @@ if (!login->first_request) return 0; + isert_rx_login_req(isert_conn); + + pr_info("before conn_login_comp conn: %p\n", conn); ret = wait_for_completion_interruptible(&isert_conn->conn_login_comp); if (ret) return ret; - pr_debug("isert_get_login_rx processing login->req: %p\n", login->req); + pr_info("processing login->req: %p\n", login->req); + return 0; } @@ -2635,16 +2870,19 @@ int max_accept = 0, ret; accept_wait: - ret = wait_event_interruptible(isert_np->np_accept_wq, - !isert_check_accept_queue(isert_np) || - np->np_thread_state == ISCSI_NP_THREAD_RESET); + ret = down_interruptible(&isert_np->np_sem); if (max_accept > 5) return -ENODEV; spin_lock_bh(&np->np_thread_lock); - if (np->np_thread_state == ISCSI_NP_THREAD_RESET) { + if (np->np_thread_state >= ISCSI_NP_THREAD_RESET) { spin_unlock_bh(&np->np_thread_lock); - pr_err("ISCSI_NP_THREAD_RESET for isert_accept_np\n"); + pr_debug("np_thread_state %d for isert_accept_np\n", + np->np_thread_state); + /** + * No point in stalling here when np_thread + * is in state RESET/SHUTDOWN/EXIT - bail + **/ return -ENODEV; } spin_unlock_bh(&np->np_thread_lock); @@ -2664,17 +2902,10 @@ isert_conn->conn = conn; max_accept = 0; - ret = isert_rdma_post_recvl(isert_conn); - if (ret) - return ret; - - ret = isert_rdma_accept(isert_conn); - if (ret) - return ret; - isert_set_conn_info(np, conn, isert_conn); - pr_debug("Processing isert_accept_np: isert_conn: %p\n", isert_conn); + pr_debug("Processing isert_conn: %p\n", isert_conn); + return 0; } @@ -2683,69 +2914,58 @@ { struct isert_np *isert_np = (struct isert_np *)np->np_context; - rdma_destroy_id(isert_np->np_cm_id); + if (isert_np->np_cm_id) + rdma_destroy_id(isert_np->np_cm_id); np->np_context = NULL; kfree(isert_np); } -static int isert_check_state(struct isert_conn *isert_conn, int state) +static void isert_release_work(struct work_struct *work) { - int ret; + struct isert_conn *isert_conn = container_of(work, + struct isert_conn, + release_work); + + pr_info("Starting release conn %p\n", isert_conn); + + wait_for_completion(&isert_conn->conn_wait); mutex_lock(&isert_conn->conn_mutex); - ret = (isert_conn->state == state); + isert_conn->state = ISER_CONN_DOWN; mutex_unlock(&isert_conn->conn_mutex); - return ret; + pr_info("Destroying conn %p\n", isert_conn); + isert_put_conn(isert_conn); } -static void isert_free_conn(struct iscsi_conn *conn) +static void isert_wait_conn(struct iscsi_conn *conn) { struct isert_conn *isert_conn = conn->context; - pr_debug("isert_free_conn: Starting \n"); - /* - * Decrement post_send_buf_count for special case when called - * from isert_do_control_comp() -> iscsit_logout_post_handler() - */ - mutex_lock(&isert_conn->conn_mutex); - if (isert_conn->logout_posted) - atomic_dec(&isert_conn->post_send_buf_count); + pr_debug("isert_wait_conn: Starting \n"); - if (isert_conn->conn_cm_id && isert_conn->state != ISER_CONN_DOWN) { - pr_debug("Calling rdma_disconnect from isert_free_conn\n"); - rdma_disconnect(isert_conn->conn_cm_id); - } + mutex_lock(&isert_conn->conn_mutex); /* * Only wait for conn_wait_comp_err if the isert_conn made it * into full feature phase.. */ - if (isert_conn->state == ISER_CONN_UP) { - pr_debug("isert_free_conn: Before wait_event comp_err %d\n", - isert_conn->state); - mutex_unlock(&isert_conn->conn_mutex); - - wait_event(isert_conn->conn_wait_comp_err, - (isert_check_state(isert_conn, ISER_CONN_TERMINATING))); - - wait_event(isert_conn->conn_wait, - (isert_check_state(isert_conn, ISER_CONN_DOWN))); - - isert_put_conn(isert_conn); - return; - } if (isert_conn->state == ISER_CONN_INIT) { mutex_unlock(&isert_conn->conn_mutex); - isert_put_conn(isert_conn); return; } - pr_debug("isert_free_conn: wait_event conn_wait %d\n", - isert_conn->state); + isert_conn_terminate(isert_conn); mutex_unlock(&isert_conn->conn_mutex); - wait_event(isert_conn->conn_wait, - (isert_check_state(isert_conn, ISER_CONN_DOWN))); + wait_for_completion(&isert_conn->conn_wait_comp_err); + + INIT_WORK(&isert_conn->release_work, isert_release_work); + queue_work(isert_release_wq, &isert_conn->release_work); +} + +static void isert_free_conn(struct iscsi_conn *conn) +{ + struct isert_conn *isert_conn = conn->context; isert_put_conn(isert_conn); } @@ -2758,6 +2978,7 @@ .iscsit_setup_np = isert_setup_np, .iscsit_accept_np = isert_accept_np, .iscsit_free_np = isert_free_np, + .iscsit_wait_conn = isert_wait_conn, .iscsit_free_conn = isert_free_conn, .iscsit_get_login_rx = isert_get_login_rx, .iscsit_put_login_tx = isert_put_login_tx, @@ -2766,6 +2987,7 @@ .iscsit_get_dataout = isert_get_dataout, .iscsit_queue_data_in = isert_put_datain, .iscsit_queue_status = isert_put_response, + .iscsit_aborted_task = isert_aborted_task, }; static int __init isert_init(void) @@ -2785,10 +3007,21 @@ goto destroy_rx_wq; } + isert_release_wq = alloc_workqueue("isert_release_wq", WQ_UNBOUND, + WQ_UNBOUND_MAX_ACTIVE); + if (!isert_release_wq) { + pr_err("Unable to allocate isert_release_wq\n"); + ret = -ENOMEM; + goto destroy_comp_wq; + } + iscsit_register_transport(&iser_target_transport); - pr_debug("iSER_TARGET[0] - Loaded iser_target_transport\n"); + pr_info("iSER_TARGET[0] - Loaded iser_target_transport\n"); + return 0; +destroy_comp_wq: + destroy_workqueue(isert_comp_wq); destroy_rx_wq: destroy_workqueue(isert_rx_wq); return ret; @@ -2796,6 +3029,8 @@ static void __exit isert_exit(void) { + flush_scheduled_work(); + destroy_workqueue(isert_release_wq); destroy_workqueue(isert_comp_wq); destroy_workqueue(isert_rx_wq); iscsit_unregister_transport(&iser_target_transport); --- linux-3.13.0.orig/drivers/infiniband/ulp/isert/ib_isert.h +++ linux-3.13.0/drivers/infiniband/ulp/isert/ib_isert.h @@ -6,6 +6,7 @@ #define ISERT_RDMA_LISTEN_BACKLOG 10 #define ISCSI_ISER_SG_TABLESIZE 256 +#define ISER_FASTREG_LI_WRID 0xffffffffffffffffULL enum isert_desc_type { ISCSI_TX_CONTROL, @@ -22,6 +23,7 @@ enum iser_conn_state { ISER_CONN_INIT, ISER_CONN_UP, + ISER_CONN_FULL_FEATURE, ISER_CONN_TERMINATING, ISER_CONN_DOWN, }; @@ -45,6 +47,7 @@ struct isert_cmd *isert_cmd; struct llist_node *comp_llnode_batch; struct llist_node comp_llnode; + bool llnode_active; struct ib_send_wr send_wr; } __packed; @@ -91,7 +94,6 @@ struct isert_conn { enum iser_conn_state state; - bool logout_posted; int post_recv_buf_count; atomic_t post_send_buf_count; u32 responder_resources; @@ -101,6 +103,7 @@ char *login_req_buf; char *login_rsp_buf; u64 login_req_dma; + int login_req_len; u64 login_rsp_dma; unsigned int conn_rx_desc_head; struct iser_rx_desc *conn_rx_descs; @@ -108,25 +111,25 @@ struct iscsi_conn *conn; struct list_head conn_accept_node; struct completion conn_login_comp; + struct completion login_req_comp; struct iser_tx_desc conn_login_tx_desc; struct rdma_cm_id *conn_cm_id; struct ib_pd *conn_pd; struct ib_mr *conn_mr; struct ib_qp *conn_qp; struct isert_device *conn_device; - struct work_struct conn_logout_work; struct mutex conn_mutex; - wait_queue_head_t conn_wait; - wait_queue_head_t conn_wait_comp_err; + struct completion conn_wait; + struct completion conn_wait_comp_err; struct kref conn_kref; - struct list_head conn_frwr_pool; - int conn_frwr_pool_size; - /* lock to protect frwr_pool */ + struct list_head conn_fr_pool; + int conn_fr_pool_size; + /* lock to protect fastreg pool */ spinlock_t conn_lock; + struct work_struct release_work; #define ISERT_COMP_BATCH_COUNT 8 int conn_comp_batch; struct llist_head conn_comp_llist; - struct mutex conn_comp_mutex; }; #define ISERT_MAX_CQ 64 @@ -139,13 +142,11 @@ }; struct isert_device { - int use_frwr; + int use_fastreg; int cqs_used; int refcount; int cq_active_qps[ISERT_MAX_CQ]; struct ib_device *ib_device; - struct ib_pd *dev_pd; - struct ib_mr *dev_mr; struct ib_cq *dev_rx_cq[ISERT_MAX_CQ]; struct ib_cq *dev_tx_cq[ISERT_MAX_CQ]; struct isert_cq_desc *cq_desc; @@ -159,7 +160,8 @@ }; struct isert_np { - wait_queue_head_t np_accept_wq; + struct iscsi_np *np; + struct semaphore np_sem; struct rdma_cm_id *np_cm_id; struct mutex np_accept_mutex; struct list_head np_accept_list; --- linux-3.13.0.orig/drivers/infiniband/ulp/srp/ib_srp.c +++ linux-3.13.0/drivers/infiniband/ulp/srp/ib_srp.c @@ -120,6 +120,7 @@ static int srp_cm_handler(struct ib_cm_id *cm_id, struct ib_cm_event *event); static struct scsi_transport_template *ib_srp_transport_template; +static struct workqueue_struct *srp_remove_wq; static struct ib_client srp_client = { .name = "srp", @@ -539,7 +540,7 @@ spin_unlock_irq(&target->lock); if (changed) - queue_work(system_long_wq, &target->remove_work); + queue_work(srp_remove_wq, &target->remove_work); return changed; } @@ -1575,6 +1576,12 @@ err_iu: srp_put_tx_iu(target, iu, SRP_IU_CMD); + /* + * Avoid that the loops that iterate over the request ring can + * encounter a dangling SCSI command pointer. + */ + req->scmnd = NULL; + spin_lock_irqsave(&target->lock, flags); list_add(&req->list, &target->free_reqs); @@ -2879,9 +2886,10 @@ spin_unlock(&host->target_lock); /* - * Wait for target port removal tasks. + * Wait for tl_err and target port removal tasks. */ flush_workqueue(system_long_wq); + flush_workqueue(srp_remove_wq); kfree(host); } @@ -2933,16 +2941,22 @@ indirect_sg_entries = cmd_sg_entries; } + srp_remove_wq = create_workqueue("srp_remove"); + if (IS_ERR(srp_remove_wq)) { + ret = PTR_ERR(srp_remove_wq); + goto out; + } + + ret = -ENOMEM; ib_srp_transport_template = srp_attach_transport(&ib_srp_transport_functions); if (!ib_srp_transport_template) - return -ENOMEM; + goto destroy_wq; ret = class_register(&srp_class); if (ret) { pr_err("couldn't register class infiniband_srp\n"); - srp_release_transport(ib_srp_transport_template); - return ret; + goto release_tr; } ib_sa_register_client(&srp_sa_client); @@ -2950,13 +2964,22 @@ ret = ib_register_client(&srp_client); if (ret) { pr_err("couldn't register IB client\n"); - srp_release_transport(ib_srp_transport_template); - ib_sa_unregister_client(&srp_sa_client); - class_unregister(&srp_class); - return ret; + goto unreg_sa; } - return 0; +out: + return ret; + +unreg_sa: + ib_sa_unregister_client(&srp_sa_client); + class_unregister(&srp_class); + +release_tr: + srp_release_transport(ib_srp_transport_template); + +destroy_wq: + destroy_workqueue(srp_remove_wq); + goto out; } static void __exit srp_cleanup_module(void) @@ -2965,6 +2988,7 @@ ib_sa_unregister_client(&srp_sa_client); class_unregister(&srp_class); srp_release_transport(ib_srp_transport_template); + destroy_workqueue(srp_remove_wq); } module_init(srp_init_module); --- linux-3.13.0.orig/drivers/infiniband/ulp/srpt/ib_srpt.c +++ linux-3.13.0/drivers/infiniband/ulp/srpt/ib_srpt.c @@ -1078,6 +1078,7 @@ static int srpt_map_sg_to_ib_sge(struct srpt_rdma_ch *ch, struct srpt_send_ioctx *ioctx) { + struct ib_device *dev = ch->sport->sdev->device; struct se_cmd *cmd; struct scatterlist *sg, *sg_orig; int sg_cnt; @@ -1124,7 +1125,7 @@ db = ioctx->rbufs; tsize = cmd->data_length; - dma_len = sg_dma_len(&sg[0]); + dma_len = ib_sg_dma_len(dev, &sg[0]); riu = ioctx->rdma_ius; /* @@ -1155,7 +1156,8 @@ ++j; if (j < count) { sg = sg_next(sg); - dma_len = sg_dma_len(sg); + dma_len = ib_sg_dma_len( + dev, sg); } } } else { @@ -1192,8 +1194,8 @@ tsize = cmd->data_length; riu = ioctx->rdma_ius; sg = sg_orig; - dma_len = sg_dma_len(&sg[0]); - dma_addr = sg_dma_address(&sg[0]); + dma_len = ib_sg_dma_len(dev, &sg[0]); + dma_addr = ib_sg_dma_address(dev, &sg[0]); /* this second loop is really mapped sg_addres to rdma_iu->ib_sge */ for (i = 0, j = 0; @@ -1216,8 +1218,10 @@ ++j; if (j < count) { sg = sg_next(sg); - dma_len = sg_dma_len(sg); - dma_addr = sg_dma_address(sg); + dma_len = ib_sg_dma_len( + dev, sg); + dma_addr = ib_sg_dma_address( + dev, sg); } } } else { @@ -1740,47 +1744,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->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) { @@ -1815,7 +1778,6 @@ struct se_cmd *cmd; struct se_session *sess = ch->sess; uint64_t unpacked_lun; - uint32_t tag = 0; int tcm_tmr; int rc; @@ -1831,25 +1793,10 @@ srpt_set_cmd_state(send_ioctx, SRPT_STATE_MGMT); send_ioctx->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; @@ -2087,6 +2034,7 @@ if (!qp_init) goto out; +retry: ch->cq = ib_create_cq(sdev->device, srpt_completion, NULL, ch, ch->rq_size + srp_sq_size, 0); if (IS_ERR(ch->cq)) { @@ -2110,6 +2058,13 @@ ch->qp = ib_create_qp(sdev->pd, qp_init); if (IS_ERR(ch->qp)) { ret = PTR_ERR(ch->qp); + if (ret == -ENOMEM) { + srp_sq_size /= 2; + if (srp_sq_size >= MIN_SRPT_SQ_SIZE) { + ib_destroy_cq(ch->cq); + goto retry; + } + } printk(KERN_ERR "failed to create_qp ret= %d\n", ret); goto err_destroy_cq; } @@ -3081,6 +3036,14 @@ srpt_queue_response(cmd); } +static void srpt_aborted_task(struct se_cmd *cmd) +{ + struct srpt_send_ioctx *ioctx = container_of(cmd, + struct srpt_send_ioctx, cmd); + + srpt_unmap_sg_to_ib_sge(ioctx->ch, ioctx); +} + static int srpt_queue_status(struct se_cmd *cmd) { struct srpt_send_ioctx *ioctx; @@ -3666,9 +3629,9 @@ unsigned long val; int ret; - ret = strict_strtoul(page, 0, &val); + ret = kstrtoul(page, 0, &val); if (ret < 0) { - pr_err("strict_strtoul() failed with ret: %d\n", ret); + pr_err("kstrtoul() failed with ret: %d\n", ret); return -EINVAL; } if (val > MAX_SRPT_RDMA_SIZE) { @@ -3706,9 +3669,9 @@ unsigned long val; int ret; - ret = strict_strtoul(page, 0, &val); + ret = kstrtoul(page, 0, &val); if (ret < 0) { - pr_err("strict_strtoul() failed with ret: %d\n", ret); + pr_err("kstrtoul() failed with ret: %d\n", ret); return -EINVAL; } if (val > MAX_SRPT_RSP_SIZE) { @@ -3746,9 +3709,9 @@ unsigned long val; int ret; - ret = strict_strtoul(page, 0, &val); + ret = kstrtoul(page, 0, &val); if (ret < 0) { - pr_err("strict_strtoul() failed with ret: %d\n", ret); + pr_err("kstrtoul() failed with ret: %d\n", ret); return -EINVAL; } if (val > MAX_SRPT_SRQ_SIZE) { @@ -3793,7 +3756,7 @@ unsigned long tmp; int ret; - ret = strict_strtoul(page, 0, &tmp); + ret = kstrtoul(page, 0, &tmp); if (ret < 0) { printk(KERN_ERR "Unable to extract srpt_tpg_store_enable\n"); return -EINVAL; @@ -3928,6 +3891,7 @@ .queue_data_in = srpt_queue_data_in, .queue_status = srpt_queue_status, .queue_tm_rsp = srpt_queue_tm_rsp, + .aborted_task = srpt_aborted_task, /* * Setup function pointers for generic logic in * target_core_fabric_configfs.c --- linux-3.13.0.orig/drivers/input/evdev.c +++ linux-3.13.0/drivers/input/evdev.c @@ -240,19 +240,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) @@ -422,7 +417,7 @@ err_free_client: evdev_detach_client(evdev, client); - kfree(client); + kvfree(client); return error; } --- linux-3.13.0.orig/drivers/input/input.c +++ linux-3.13.0/drivers/input/input.c @@ -257,9 +257,10 @@ } static int input_get_disposition(struct input_dev *dev, - unsigned int type, unsigned int code, int value) + unsigned int type, unsigned int code, int *pval) { int disposition = INPUT_IGNORE_EVENT; + int value = *pval; switch (type) { @@ -357,6 +358,7 @@ break; } + *pval = value; return disposition; } @@ -365,7 +367,7 @@ { int disposition; - disposition = input_get_disposition(dev, type, code, value); + disposition = input_get_disposition(dev, type, code, &value); if ((disposition & INPUT_PASS_TO_DEVICE) && dev->event) dev->event(dev, type, code, value); --- linux-3.13.0.orig/drivers/input/joystick/xpad.c +++ linux-3.13.0/drivers/input/joystick/xpad.c @@ -1002,9 +1002,19 @@ } ep_irq_in = &intf->cur_altsetting->endpoint[1].desc; - usb_fill_bulk_urb(xpad->bulk_out, udev, - usb_sndbulkpipe(udev, ep_irq_in->bEndpointAddress), - xpad->bdata, XPAD_PKT_LEN, xpad_bulk_out, xpad); + if (usb_endpoint_is_bulk_out(ep_irq_in)) { + usb_fill_bulk_urb(xpad->bulk_out, udev, + usb_sndbulkpipe(udev, + ep_irq_in->bEndpointAddress), + xpad->bdata, XPAD_PKT_LEN, + xpad_bulk_out, xpad); + } else { + usb_fill_int_urb(xpad->bulk_out, udev, + usb_sndintpipe(udev, + ep_irq_in->bEndpointAddress), + xpad->bdata, XPAD_PKT_LEN, + xpad_bulk_out, xpad, 0); + } /* * Submit the int URB immediately rather than waiting for open --- linux-3.13.0.orig/drivers/input/keyboard/atkbd.c +++ linux-3.13.0/drivers/input/keyboard/atkbd.c @@ -243,6 +243,12 @@ static void *atkbd_platform_fixup_data; static unsigned int (*atkbd_platform_scancode_fixup)(struct atkbd *, unsigned int); +/* + * Certain keyboards to not like ATKBD_CMD_RESET_DIS and stop responding + * to many commands until full reset (ATKBD_CMD_RESET_BAT) is performed. + */ +static bool atkbd_skip_deactivate; + static ssize_t atkbd_attr_show_helper(struct device *dev, char *buf, ssize_t (*handler)(struct atkbd *, char *)); static ssize_t atkbd_attr_set_helper(struct device *dev, const char *buf, size_t count, @@ -768,7 +774,8 @@ * Make sure nothing is coming from the keyboard and disturbs our * internal state. */ - atkbd_deactivate(atkbd); + if (!atkbd_skip_deactivate) + atkbd_deactivate(atkbd); return 0; } @@ -1638,6 +1645,12 @@ return 1; } +static int __init atkbd_deactivate_fixup(const struct dmi_system_id *id) +{ + atkbd_skip_deactivate = true; + return 1; +} + static const struct dmi_system_id atkbd_dmi_quirk_table[] __initconst = { { .matches = { @@ -1775,6 +1788,12 @@ .callback = atkbd_setup_scancode_fixup, .driver_data = atkbd_oqo_01plus_scancode_fixup, }, + { + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LG Electronics"), + }, + .callback = atkbd_deactivate_fixup, + }, { } }; --- linux-3.13.0.orig/drivers/input/misc/arizona-haptics.c +++ linux-3.13.0/drivers/input/misc/arizona-haptics.c @@ -77,16 +77,14 @@ return; } + mutex_unlock(dapm_mutex); + ret = snd_soc_dapm_sync(arizona->dapm); if (ret != 0) { dev_err(arizona->dev, "Failed to sync DAPM: %d\n", ret); - mutex_unlock(dapm_mutex); return; } - - mutex_unlock(dapm_mutex); - } else { /* This disable sequence will be a noop if already enabled */ mutex_lock_nested(dapm_mutex, SND_SOC_DAPM_CLASS_RUNTIME); @@ -99,16 +97,15 @@ return; } + mutex_unlock(dapm_mutex); + ret = snd_soc_dapm_sync(arizona->dapm); if (ret != 0) { dev_err(arizona->dev, "Failed to sync DAPM: %d\n", ret); - mutex_unlock(dapm_mutex); return; } - mutex_unlock(dapm_mutex); - ret = regmap_update_bits(arizona->regmap, ARIZONA_HAPTICS_CONTROL_1, ARIZONA_HAP_CTRL_MASK, --- linux-3.13.0.orig/drivers/input/misc/ati_remote2.c +++ linux-3.13.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-3.13.0.orig/drivers/input/misc/ims-pcu.c +++ linux-3.13.0/drivers/input/misc/ims-pcu.c @@ -1433,6 +1433,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; @@ -1440,6 +1442,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-3.13.0.orig/drivers/input/misc/powermate.c +++ linux-3.13.0/drivers/input/misc/powermate.c @@ -308,6 +308,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-3.13.0.orig/drivers/input/misc/xen-kbdfront.c +++ linux-3.13.0/drivers/input/misc/xen-kbdfront.c @@ -29,6 +29,7 @@ #include #include #include +#include struct xenkbd_info { struct input_dev *kbd; @@ -380,6 +381,9 @@ if (xen_initial_domain()) return -ENODEV; + if (!xen_has_pv_devices()) + return -ENODEV; + return xenbus_register_frontend(&xenkbd_driver); } --- linux-3.13.0.orig/drivers/input/mouse/alps.c +++ linux-3.13.0/drivers/input/mouse/alps.c @@ -277,6 +277,57 @@ } /* + * Process bitmap data for V5 protocols. Return value is null. + * + * The bitmaps don't have enough data to track fingers, so this function + * only generates points representing a bounding box of at most two contacts. + * These two points are returned in x1, y1, x2, and y2. + */ +static void alps_process_bitmap_dolphin(struct alps_data *priv, + struct alps_fields *fields, + int *x1, int *y1, int *x2, int *y2) +{ + int box_middle_x, box_middle_y; + unsigned int x_map, y_map; + unsigned char start_bit, end_bit; + unsigned char x_msb, x_lsb, y_msb, y_lsb; + + x_map = fields->x_map; + y_map = fields->y_map; + + if (!x_map || !y_map) + return; + + /* Get Most-significant and Least-significant bit */ + x_msb = fls(x_map); + x_lsb = ffs(x_map); + y_msb = fls(y_map); + y_lsb = ffs(y_map); + + /* Most-significant bit should never exceed max sensor line number */ + if (x_msb > priv->x_bits || y_msb > priv->y_bits) + return; + + *x1 = *y1 = *x2 = *y2 = 0; + + if (fields->fingers > 1) { + start_bit = priv->x_bits - x_msb; + end_bit = priv->x_bits - x_lsb; + box_middle_x = (priv->x_max * (start_bit + end_bit)) / + (2 * (priv->x_bits - 1)); + + start_bit = y_lsb - 1; + end_bit = y_msb - 1; + box_middle_y = (priv->y_max * (start_bit + end_bit)) / + (2 * (priv->y_bits - 1)); + *x1 = fields->x; + *y1 = fields->y; + *x2 = 2 * box_middle_x - *x1; + *y2 = 2 * box_middle_y - *y1; + } +} + +/* * Process bitmap data from v3 and v4 protocols. Returns the number of * fingers detected. A return value of 0 means at least one of the * bitmaps was empty. @@ -481,7 +532,8 @@ f->ts_middle = !!(p[3] & 0x40); } -static void alps_decode_pinnacle(struct alps_fields *f, unsigned char *p) +static void alps_decode_pinnacle(struct alps_fields *f, unsigned char *p, + struct psmouse *psmouse) { f->first_mp = !!(p[4] & 0x40); f->is_mp = !!(p[0] & 0x40); @@ -502,48 +554,61 @@ alps_decode_buttons_v3(f, p); } -static void alps_decode_rushmore(struct alps_fields *f, unsigned char *p) +static void alps_decode_rushmore(struct alps_fields *f, unsigned char *p, + struct psmouse *psmouse) { - alps_decode_pinnacle(f, p); + alps_decode_pinnacle(f, p, psmouse); f->x_map |= (p[5] & 0x10) << 11; f->y_map |= (p[5] & 0x20) << 6; } -static void alps_decode_dolphin(struct alps_fields *f, unsigned char *p) +static void alps_decode_dolphin(struct alps_fields *f, unsigned char *p, + struct psmouse *psmouse) { + u64 palm_data = 0; + struct alps_data *priv = psmouse->private; + f->first_mp = !!(p[0] & 0x02); f->is_mp = !!(p[0] & 0x20); - f->fingers = ((p[0] & 0x6) >> 1 | + if (!f->is_mp) { + f->x = ((p[1] & 0x7f) | ((p[4] & 0x0f) << 7)); + f->y = ((p[2] & 0x7f) | ((p[4] & 0xf0) << 3)); + f->z = (p[0] & 4) ? 0 : p[5] & 0x7f; + alps_decode_buttons_v3(f, p); + } else { + f->fingers = ((p[0] & 0x6) >> 1 | (p[0] & 0x10) >> 2); - f->x_map = ((p[2] & 0x60) >> 5) | - ((p[4] & 0x7f) << 2) | - ((p[5] & 0x7f) << 9) | - ((p[3] & 0x07) << 16) | - ((p[3] & 0x70) << 15) | - ((p[0] & 0x01) << 22); - f->y_map = (p[1] & 0x7f) | - ((p[2] & 0x1f) << 7); - - f->x = ((p[1] & 0x7f) | ((p[4] & 0x0f) << 7)); - f->y = ((p[2] & 0x7f) | ((p[4] & 0xf0) << 3)); - f->z = (p[0] & 4) ? 0 : p[5] & 0x7f; - alps_decode_buttons_v3(f, p); + palm_data = (p[1] & 0x7f) | + ((p[2] & 0x7f) << 7) | + ((p[4] & 0x7f) << 14) | + ((p[5] & 0x7f) << 21) | + ((p[3] & 0x07) << 28) | + (((u64)p[3] & 0x70) << 27) | + (((u64)p[0] & 0x01) << 34); + + /* Y-profile is stored in P(0) to p(n-1), n = y_bits; */ + f->y_map = palm_data & (BIT(priv->y_bits) - 1); + + /* X-profile is stored in p(n) to p(n+m-1), m = x_bits; */ + f->x_map = (palm_data >> priv->y_bits) & + (BIT(priv->x_bits) - 1); + } } -static void alps_process_touchpad_packet_v3(struct psmouse *psmouse) +static void alps_process_touchpad_packet_v3_v5(struct psmouse *psmouse) { struct alps_data *priv = psmouse->private; unsigned char *packet = psmouse->packet; struct input_dev *dev = psmouse->dev; struct input_dev *dev2 = priv->dev2; int x1 = 0, y1 = 0, x2 = 0, y2 = 0; - int fingers = 0, bmap_fingers; - struct alps_fields f; + int fingers = 0, bmap_fn; + struct alps_fields f = {0}; - priv->decode_fields(&f, packet); + priv->decode_fields(&f, packet, psmouse); /* * There's no single feature of touchpad position and bitmap packets @@ -560,19 +625,38 @@ */ if (f.is_mp) { fingers = f.fingers; - bmap_fingers = alps_process_bitmap(priv, - f.x_map, f.y_map, - &x1, &y1, &x2, &y2); - - /* - * We shouldn't report more than one finger if - * we don't have two coordinates. - */ - if (fingers > 1 && bmap_fingers < 2) - fingers = bmap_fingers; - - /* Now process position packet */ - priv->decode_fields(&f, priv->multi_data); + if (priv->proto_version == ALPS_PROTO_V3) { + bmap_fn = alps_process_bitmap(priv, f.x_map, + f.y_map, &x1, &y1, + &x2, &y2); + + /* + * We shouldn't report more than one finger if + * we don't have two coordinates. + */ + if (fingers > 1 && bmap_fn < 2) + fingers = bmap_fn; + + /* Now process position packet */ + priv->decode_fields(&f, priv->multi_data, + psmouse); + } else { + /* + * Because Dolphin uses position packet's + * coordinate data as Pt1 and uses it to + * calculate Pt2, so we need to do position + * packet decode first. + */ + priv->decode_fields(&f, priv->multi_data, + psmouse); + + /* + * Since Dolphin's finger number is reliable, + * there is no need to compare with bmap_fn. + */ + alps_process_bitmap_dolphin(priv, &f, &x1, &y1, + &x2, &y2); + } } else { priv->multi_packet = 0; } @@ -662,7 +746,7 @@ return; } - alps_process_touchpad_packet_v3(psmouse); + alps_process_touchpad_packet_v3_v5(psmouse); } static void alps_process_packet_v6(struct psmouse *psmouse) @@ -963,7 +1047,13 @@ { struct alps_data *priv = psmouse->private; - if ((psmouse->packet[0] & 0xc8) == 0x08) { /* PS/2 packet */ + /* + * Check if we are dealing with a bare PS/2 packet, presumably from + * a device connected to the external PS/2 port. Because bare PS/2 + * protocol does not have enough constant bits to self-synchronize + * properly we only do this if the device is fully synchronized. + */ + if (!psmouse->out_of_sync_cnt && (psmouse->packet[0] & 0xc8) == 0x08) { if (psmouse->pktcnt == 3) { alps_report_bare_ps2_packet(psmouse, psmouse->packet, true); @@ -987,12 +1077,27 @@ } /* Bytes 2 - pktsize should have 0 in the highest bit */ - if ((priv->proto_version < ALPS_PROTO_V5) && + if (priv->proto_version < ALPS_PROTO_V5 && psmouse->pktcnt >= 2 && psmouse->pktcnt <= psmouse->pktsize && (psmouse->packet[psmouse->pktcnt - 1] & 0x80)) { psmouse_dbg(psmouse, "refusing packet[%i] = %x\n", psmouse->pktcnt - 1, psmouse->packet[psmouse->pktcnt - 1]); + + if (priv->proto_version == ALPS_PROTO_V3 && + psmouse->pktcnt == psmouse->pktsize) { + /* + * Some Dell boxes, such as Latitude E6440 or E7440 + * with closed lid, quite often smash last byte of + * otherwise valid packet with 0xff. Given that the + * next packet is very likely to be valid let's + * report PSMOUSE_FULL_PACKET but not process data, + * rather than reporting PSMOUSE_BAD_DATA and + * filling the logs. + */ + return PSMOUSE_FULL_PACKET; + } + return PSMOUSE_BAD_DATA; } @@ -1709,6 +1814,52 @@ return -1; } +static int alps_dolphin_get_device_area(struct psmouse *psmouse, + struct alps_data *priv) +{ + struct ps2dev *ps2dev = &psmouse->ps2dev; + unsigned char param[4] = {0}; + int num_x_electrode, num_y_electrode; + + if (alps_enter_command_mode(psmouse)) + return -1; + + param[0] = 0x0a; + if (ps2_command(ps2dev, NULL, PSMOUSE_CMD_RESET_WRAP) || + ps2_command(ps2dev, NULL, PSMOUSE_CMD_SETPOLL) || + ps2_command(ps2dev, NULL, PSMOUSE_CMD_SETPOLL) || + ps2_command(ps2dev, ¶m[0], PSMOUSE_CMD_SETRATE) || + ps2_command(ps2dev, ¶m[0], PSMOUSE_CMD_SETRATE)) + return -1; + + if (ps2_command(ps2dev, param, PSMOUSE_CMD_GETINFO)) + return -1; + + /* + * Dolphin's sensor line number is not fixed. It can be calculated + * by adding the device's register value with DOLPHIN_PROFILE_X/YOFFSET. + * Further more, we can get device's x_max and y_max by multiplying + * sensor line number with DOLPHIN_COUNT_PER_ELECTRODE. + * + * e.g. When we get register's sensor_x = 11 & sensor_y = 8, + * real sensor line number X = 11 + 8 = 19, and + * real sensor line number Y = 8 + 1 = 9. + * So, x_max = (19 - 1) * 64 = 1152, and + * y_max = (9 - 1) * 64 = 512. + */ + num_x_electrode = DOLPHIN_PROFILE_XOFFSET + (param[2] & 0x0F); + num_y_electrode = DOLPHIN_PROFILE_YOFFSET + ((param[2] >> 4) & 0x0F); + priv->x_bits = num_x_electrode; + priv->y_bits = num_y_electrode; + priv->x_max = (num_x_electrode - 1) * DOLPHIN_COUNT_PER_ELECTRODE; + priv->y_max = (num_y_electrode - 1) * DOLPHIN_COUNT_PER_ELECTRODE; + + if (alps_exit_command_mode(psmouse)) + return -1; + + return 0; +} + static int alps_hw_init_dolphin_v1(struct psmouse *psmouse) { struct ps2dev *ps2dev = &psmouse->ps2dev; @@ -1763,13 +1914,13 @@ break; case ALPS_PROTO_V5: priv->hw_init = alps_hw_init_dolphin_v1; - priv->process_packet = alps_process_packet_v3; + priv->process_packet = alps_process_touchpad_packet_v3_v5; priv->decode_fields = alps_decode_dolphin; priv->set_abs_params = alps_set_abs_params_mt; priv->nibble_commands = alps_v3_nibble_commands; priv->addr_command = PSMOUSE_CMD_RESET_WRAP; priv->byte0 = 0xc8; - priv->mask0 = 0xc8; + priv->mask0 = 0xd8; priv->flags = 0; priv->x_max = 1360; priv->y_max = 660; @@ -1845,11 +1996,13 @@ if (alps_match_table(psmouse, priv, e7, ec) == 0) { return 0; } else if (e7[0] == 0x73 && e7[1] == 0x03 && e7[2] == 0x50 && - ec[0] == 0x73 && ec[1] == 0x01) { + ec[0] == 0x73 && (ec[1] == 0x01 || ec[1] == 0x02)) { priv->proto_version = ALPS_PROTO_V5; alps_set_defaults(priv); - - return 0; + if (alps_dolphin_get_device_area(psmouse, priv)) + return -EIO; + else + return 0; } else if (ec[0] == 0x88 && ec[1] == 0x08) { priv->proto_version = ALPS_PROTO_V3; alps_set_defaults(priv); @@ -2016,6 +2169,9 @@ /* We are having trouble resyncing ALPS touchpads so disable it for now */ psmouse->resync_time = 0; + /* Allow 2 invalid packets without resetting device */ + psmouse->resetafter = psmouse->pktsize * 2; + return 0; init_fail: --- linux-3.13.0.orig/drivers/input/mouse/alps.h +++ linux-3.13.0/drivers/input/mouse/alps.h @@ -19,6 +19,10 @@ #define ALPS_PROTO_V5 5 #define ALPS_PROTO_V6 6 +#define DOLPHIN_COUNT_PER_ELECTRODE 64 +#define DOLPHIN_PROFILE_XOFFSET 8 /* x-electrode offset */ +#define DOLPHIN_PROFILE_YOFFSET 1 /* y-electrode offset */ + /** * struct alps_model_info - touchpad ID table * @signature: E7 response string to match. @@ -146,7 +150,8 @@ int (*hw_init)(struct psmouse *psmouse); void (*process_packet)(struct psmouse *psmouse); - void (*decode_fields)(struct alps_fields *f, unsigned char *p); + void (*decode_fields)(struct alps_fields *f, unsigned char *p, + struct psmouse *psmouse); void (*set_abs_params)(struct alps_data *priv, struct input_dev *dev1); int prev_fin; --- linux-3.13.0.orig/drivers/input/mouse/cypress_ps2.c +++ linux-3.13.0/drivers/input/mouse/cypress_ps2.c @@ -391,7 +391,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); @@ -410,7 +412,6 @@ __clear_bit(REL_X, input->relbit); __clear_bit(REL_Y, input->relbit); - __set_bit(INPUT_PROP_BUTTONPAD, input->propbit); __set_bit(EV_KEY, input->evbit); __set_bit(BTN_LEFT, input->keybit); __set_bit(BTN_RIGHT, input->keybit); @@ -480,6 +481,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-3.13.0.orig/drivers/input/mouse/cypress_ps2.h +++ linux-3.13.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-3.13.0.orig/drivers/input/mouse/elantech.c +++ linux-3.13.0/drivers/input/mouse/elantech.c @@ -11,6 +11,7 @@ */ #include +#include #include #include #include @@ -313,7 +314,7 @@ unsigned int x2, unsigned int y2) { elantech_set_slot(dev, 0, num_fingers != 0, x1, y1); - elantech_set_slot(dev, 1, num_fingers == 2, x2, y2); + elantech_set_slot(dev, 1, num_fingers >= 2, x2, y2); } /* @@ -472,8 +473,15 @@ input_report_key(dev, BTN_TOOL_FINGER, fingers == 1); input_report_key(dev, BTN_TOOL_DOUBLETAP, fingers == 2); input_report_key(dev, BTN_TOOL_TRIPLETAP, fingers == 3); - input_report_key(dev, BTN_LEFT, packet[0] & 0x01); - input_report_key(dev, BTN_RIGHT, packet[0] & 0x02); + + /* For clickpads map both buttons to BTN_LEFT */ + if (etd->fw_version & 0x001000) { + input_report_key(dev, BTN_LEFT, packet[0] & 0x03); + } else { + input_report_key(dev, BTN_LEFT, packet[0] & 0x01); + input_report_key(dev, BTN_RIGHT, packet[0] & 0x02); + } + input_report_abs(dev, ABS_PRESSURE, pres); input_report_abs(dev, ABS_TOOL_WIDTH, width); @@ -483,9 +491,17 @@ static void elantech_input_sync_v4(struct psmouse *psmouse) { struct input_dev *dev = psmouse->dev; + struct elantech_data *etd = psmouse->private; unsigned char *packet = psmouse->packet; - input_report_key(dev, BTN_LEFT, packet[0] & 0x01); + /* For clickpads map both buttons to BTN_LEFT */ + if (etd->fw_version & 0x001000) { + input_report_key(dev, BTN_LEFT, packet[0] & 0x03); + } else { + input_report_key(dev, BTN_LEFT, packet[0] & 0x01); + input_report_key(dev, BTN_RIGHT, packet[0] & 0x02); + } + input_mt_report_pointer_emulation(dev, true); input_sync(dev); } @@ -798,6 +814,21 @@ } /* + * This writes the reg_07 value again to the hardware at the end of every + * set_rate call because the register loses its value. reg_07 allows setting + * absolute mode on v4 hardware + */ +static void elantech_set_rate_restore_reg_07(struct psmouse *psmouse, + unsigned int rate) +{ + struct elantech_data *etd = psmouse->private; + + etd->original_set_rate(psmouse, rate); + if (elantech_write_reg(psmouse, 0x07, etd->reg_07)) + psmouse_err(psmouse, "restoring reg_07 failed\n"); +} + +/* * Put the touchpad into absolute mode */ static int elantech_set_absolute_mode(struct psmouse *psmouse) @@ -830,7 +861,11 @@ break; case 3: - etd->reg_10 = 0x0b; + if (etd->set_hw_resolution) + etd->reg_10 = 0x0b; + else + etd->reg_10 = 0x01; + if (elantech_write_reg(psmouse, 0x10, etd->reg_10)) rc = -1; @@ -984,6 +1019,46 @@ } /* + * Advertise INPUT_PROP_BUTTONPAD for clickpads. The testing of bit 12 in + * fw_version for this is based on the following fw_version & caps table: + * + * Laptop-model: fw_version: caps: buttons: + * Acer S3 0x461f00 10, 13, 0e clickpad + * Acer S7-392 0x581f01 50, 17, 0d clickpad + * Acer V5-131 0x461f02 01, 16, 0c clickpad + * Acer V5-551 0x461f00 ? clickpad + * Asus K53SV 0x450f01 78, 15, 0c 2 hw buttons + * Asus G46VW 0x460f02 00, 18, 0c 2 hw buttons + * Asus G750JX 0x360f00 00, 16, 0c 2 hw buttons + * Asus TP500LN 0x381f17 10, 14, 0e clickpad + * Asus X750JN 0x381f17 10, 14, 0e clickpad + * Asus UX31 0x361f00 20, 15, 0e clickpad + * Asus UX32VD 0x361f02 00, 15, 0e clickpad + * Avatar AVIU-145A2 0x361f00 ? clickpad + * Gigabyte U2442 0x450f01 58, 17, 0c 2 hw buttons + * Lenovo L430 0x350f02 b9, 15, 0c 2 hw buttons (*) + * Samsung NF210 0x150b00 78, 14, 0a 2 hw buttons + * Samsung NP770Z5E 0x575f01 10, 15, 0f clickpad + * Samsung NP700Z5B 0x361f06 21, 15, 0f clickpad + * Samsung NP900X3E-A02 0x575f03 ? clickpad + * Samsung NP-QX410 0x851b00 19, 14, 0c clickpad + * Samsung RC512 0x450f00 08, 15, 0c 2 hw buttons + * Samsung RF710 0x450f00 ? 2 hw buttons + * System76 Pangolin 0x250f01 ? 2 hw buttons + * (*) + 3 trackpoint buttons + */ +static void elantech_set_buttonpad_prop(struct psmouse *psmouse) +{ + struct input_dev *dev = psmouse->dev; + struct elantech_data *etd = psmouse->private; + + if (etd->fw_version & 0x001000) { + __set_bit(INPUT_PROP_BUTTONPAD, dev->propbit); + __clear_bit(BTN_RIGHT, dev->keybit); + } +} + +/* * Set the appropriate event bits for the input subsystem */ static int elantech_set_input_params(struct psmouse *psmouse) @@ -1026,6 +1101,8 @@ __set_bit(INPUT_PROP_SEMI_MT, dev->propbit); /* fall through */ case 3: + if (etd->hw_version == 3) + elantech_set_buttonpad_prop(psmouse); input_set_abs_params(dev, ABS_X, x_min, x_max, 0, 0); input_set_abs_params(dev, ABS_Y, y_min, y_max, 0, 0); if (etd->reports_pressure) { @@ -1034,7 +1111,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; @@ -1047,9 +1124,7 @@ */ psmouse_warn(psmouse, "couldn't query resolution data.\n"); } - /* v4 is clickpad, with only one button. */ - __set_bit(INPUT_PROP_BUTTONPAD, dev->propbit); - __clear_bit(BTN_RIGHT, dev->keybit); + elantech_set_buttonpad_prop(psmouse); __set_bit(BTN_TOOL_QUADTAP, dev->keybit); /* For X to recognize me as touchpad. */ input_set_abs_params(dev, ABS_X, x_min, x_max, 0, 0); @@ -1195,6 +1270,14 @@ if (param[1] == 0) return true; + /* + * Some hw_version >= 4 models have a revision higher then 20. Meaning + * that param[2] may be 10 or 20, skip the rates check for these. + */ + if ((param[0] & 0x0f) >= 0x06 && (param[1] & 0xaf) == 0x0f && + param[2] < 40) + return true; + for (i = 0; i < ARRAY_SIZE(rates); i++) if (param[2] == rates[i]) return false; @@ -1292,6 +1375,23 @@ } /* + * Some hw_version 3 models go into error state when we try to set + * bit 3 and/or bit 1 of r10. + */ +static const struct dmi_system_id no_hw_res_dmi_table[] = { +#if defined(CONFIG_DMI) && defined(CONFIG_X86) + { + /* Gigabyte U2442 */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"), + DMI_MATCH(DMI_PRODUCT_NAME, "U2442"), + }, + }, +#endif + { } +}; + +/* * determine hardware version and set some properties according to it. */ static int elantech_set_properties(struct elantech_data *etd) @@ -1314,6 +1414,10 @@ case 6: case 7: case 8: + case 9: + case 10: + case 13: + case 14: etd->hw_version = 4; break; default: @@ -1350,6 +1454,9 @@ */ etd->crc_enabled = ((etd->fw_version & 0x4000) == 0x4000); + /* Enable real hardware resolution on hw_version 3 ? */ + etd->set_hw_resolution = !dmi_check_system(no_hw_res_dmi_table); + return 0; } @@ -1405,6 +1512,11 @@ goto init_fail; } + if (etd->fw_version == 0x381f17) { + etd->original_set_rate = psmouse->set_rate; + psmouse->set_rate = elantech_set_rate_restore_reg_07; + } + if (elantech_set_input_params(psmouse)) { psmouse_err(psmouse, "failed to query touchpad range.\n"); goto init_fail; --- linux-3.13.0.orig/drivers/input/mouse/elantech.h +++ linux-3.13.0/drivers/input/mouse/elantech.h @@ -130,6 +130,7 @@ bool jumpy_cursor; bool reports_pressure; bool crc_enabled; + bool set_hw_resolution; unsigned char hw_version; unsigned int fw_version; unsigned int single_finger_reports; @@ -138,6 +139,7 @@ struct finger_pos mt[ETP_MAX_FINGERS]; unsigned char parity[256]; int (*send_cmd)(struct psmouse *psmouse, unsigned char c, unsigned char *param); + void (*original_set_rate)(struct psmouse *psmouse, unsigned int rate); }; #ifdef CONFIG_MOUSE_PS2_ELANTECH --- linux-3.13.0.orig/drivers/input/mouse/psmouse-base.c +++ linux-3.13.0/drivers/input/mouse/psmouse-base.c @@ -462,6 +462,20 @@ PSMOUSE_CMD_POLL | (psmouse->pktsize << 8)); } +/* + * psmouse_matches_pnp_id - check if psmouse matches one of the passed in ids. + */ +bool psmouse_matches_pnp_id(struct psmouse *psmouse, const char * const ids[]) +{ + int i; + + if (!strncmp(psmouse->ps2dev.serio->firmware_id, "PNP:", 4)) + for (i = 0; ids[i]; i++) + if (strstr(psmouse->ps2dev.serio->firmware_id, ids[i])) + return true; + + return false; +} /* * Genius NetMouse magic init. --- linux-3.13.0.orig/drivers/input/mouse/psmouse.h +++ linux-3.13.0/drivers/input/mouse/psmouse.h @@ -108,6 +108,7 @@ psmouse_ret_t psmouse_process_byte(struct psmouse *psmouse); int psmouse_activate(struct psmouse *psmouse); int psmouse_deactivate(struct psmouse *psmouse); +bool psmouse_matches_pnp_id(struct psmouse *psmouse, const char * const ids[]); struct psmouse_attribute { struct device_attribute dattr; --- linux-3.13.0.orig/drivers/input/mouse/synaptics.c +++ linux-3.13.0/drivers/input/mouse/synaptics.c @@ -117,6 +117,88 @@ } #ifdef CONFIG_MOUSE_PS2_SYNAPTICS +#define ANY_BOARD_ID 0 +struct min_max_quirk { + const char * const *pnp_ids; + struct { + unsigned long int min, max; + } board_id; + int x_min, x_max, y_min, y_max; +}; + +static const struct min_max_quirk min_max_pnpid_table[] = { + { + (const char * const []){"LEN0033", NULL}, + {ANY_BOARD_ID, ANY_BOARD_ID}, + 1024, 5052, 2258, 4832 + }, + { + (const char * const []){"LEN0042", NULL}, + {ANY_BOARD_ID, ANY_BOARD_ID}, + 1232, 5710, 1156, 4696 + }, + { + (const char * const []){"LEN0034", "LEN0036", "LEN0037", + "LEN0039", "LEN2002", "LEN2004", + NULL}, + {ANY_BOARD_ID, 2961}, + 1024, 5112, 2024, 4832 + }, + { + (const char * const []){"LEN2000", NULL}, + {ANY_BOARD_ID, ANY_BOARD_ID}, + 1024, 5113, 2021, 4832 + }, + { + (const char * const []){"LEN2001", NULL}, + {ANY_BOARD_ID, ANY_BOARD_ID}, + 1024, 5022, 2508, 4832 + }, + { + (const char * const []){"LEN2006", NULL}, + {ANY_BOARD_ID, ANY_BOARD_ID}, + 1264, 5675, 1171, 4688 + }, + { } +}; + +/* This list has been kindly provided by Synaptics. */ +static const char * const topbuttonpad_pnp_ids[] = { + "LEN0017", + "LEN0018", + "LEN0019", + "LEN0023", + "LEN002A", + "LEN002B", + "LEN002C", + "LEN002D", + "LEN002E", + "LEN0033", /* Helix */ + "LEN0034", /* T431s, L440, L540, T540, W540, X1 Carbon 2nd */ + "LEN0035", /* X240 */ + "LEN0036", /* T440 */ + "LEN0037", /* X1 Carbon 2nd */ + "LEN0038", + "LEN0039", /* T440s */ + "LEN0041", + "LEN0042", /* Yoga */ + "LEN0045", + "LEN0047", + "LEN0049", + "LEN2000", /* S540 */ + "LEN2001", /* Edge E431 */ + "LEN2002", /* Edge E531 */ + "LEN2003", + "LEN2004", /* L440 */ + "LEN2005", + "LEN2006", + "LEN2007", + "LEN2008", + "LEN2009", + "LEN200A", + "LEN200B", + NULL +}; /***************************************************************************** * Synaptics communications functions @@ -159,18 +241,39 @@ return 0; } +static int synaptics_more_extended_queries(struct psmouse *psmouse) +{ + struct synaptics_data *priv = psmouse->private; + unsigned char buf[3]; + + if (synaptics_send_cmd(psmouse, SYN_QUE_MEXT_CAPAB_10, buf)) + return -1; + + priv->ext_cap_10 = (buf[0]<<16) | (buf[1]<<8) | buf[2]; + + return 0; +} + /* - * Read the board id from the touchpad + * Read the board id and the "More Extended Queries" from the touchpad * The board id is encoded in the "QUERY MODES" response */ -static int synaptics_board_id(struct psmouse *psmouse) +static int synaptics_query_modes(struct psmouse *psmouse) { struct synaptics_data *priv = psmouse->private; unsigned char bid[3]; + /* firmwares prior 7.5 have no board_id encoded */ + if (SYN_ID_FULL(priv->identity) < 0x705) + return 0; + if (synaptics_send_cmd(psmouse, SYN_QUE_MODES, bid)) return -1; priv->board_id = ((bid[0] & 0xfc) << 6) | bid[1]; + + if (SYN_MEXT_CAP_BIT(bid[0])) + return synaptics_more_extended_queries(psmouse); + return 0; } @@ -265,6 +368,7 @@ * Read touchpad resolution and maximum reported coordinates * Resolution is left zero if touchpad does not support the query */ + static int synaptics_resolution(struct psmouse *psmouse) { struct synaptics_data *priv = psmouse->private; @@ -288,23 +392,69 @@ } else { priv->x_max = (resp[0] << 5) | ((resp[1] & 0x0f) << 1); priv->y_max = (resp[2] << 5) | ((resp[1] & 0xf0) >> 3); + psmouse_info(psmouse, + "queried max coordinates: x [..%d], y [..%d]\n", + priv->x_max, priv->y_max); } } - if (SYN_EXT_CAP_REQUESTS(priv->capabilities) >= 7 && - SYN_CAP_MIN_DIMENSIONS(priv->ext_cap_0c)) { + if (SYN_CAP_MIN_DIMENSIONS(priv->ext_cap_0c) && + (SYN_EXT_CAP_REQUESTS(priv->capabilities) >= 7 || + /* + * Firmware v8.1 does not report proper number of extended + * capabilities, but has been proven to report correct min + * coordinates. + */ + SYN_ID_FULL(priv->identity) == 0x801)) { if (synaptics_send_cmd(psmouse, SYN_QUE_EXT_MIN_COORDS, resp)) { psmouse_warn(psmouse, "device claims to have min coordinates query, but I'm not able to read it.\n"); } else { priv->x_min = (resp[0] << 5) | ((resp[1] & 0x0f) << 1); priv->y_min = (resp[2] << 5) | ((resp[1] & 0xf0) >> 3); + psmouse_info(psmouse, + "queried min coordinates: x [%d..], y [%d..]\n", + priv->x_min, priv->y_min); } } return 0; } +/* + * Apply quirk(s) if the hardware matches + */ + +static void synaptics_apply_quirks(struct psmouse *psmouse) +{ + struct synaptics_data *priv = psmouse->private; + int i; + + for (i = 0; min_max_pnpid_table[i].pnp_ids; i++) { + if (!psmouse_matches_pnp_id(psmouse, + min_max_pnpid_table[i].pnp_ids)) + continue; + + if (min_max_pnpid_table[i].board_id.min != ANY_BOARD_ID && + priv->board_id < min_max_pnpid_table[i].board_id.min) + continue; + + if (min_max_pnpid_table[i].board_id.max != ANY_BOARD_ID && + priv->board_id > min_max_pnpid_table[i].board_id.max) + continue; + + priv->x_min = min_max_pnpid_table[i].x_min; + priv->x_max = min_max_pnpid_table[i].x_max; + priv->y_min = min_max_pnpid_table[i].y_min; + priv->y_max = min_max_pnpid_table[i].y_max; + psmouse_info(psmouse, + "quirked min/max coordinates: x [%d..%d], y [%d..%d]\n", + priv->x_min, priv->x_max, + priv->y_min, priv->y_max); + break; + } +} + static int synaptics_query_hardware(struct psmouse *psmouse) { if (synaptics_identify(psmouse)) @@ -313,13 +463,15 @@ return -1; if (synaptics_firmware_id(psmouse)) return -1; - if (synaptics_board_id(psmouse)) + if (synaptics_query_modes(psmouse)) return -1; if (synaptics_capability(psmouse)) return -1; if (synaptics_resolution(psmouse)) return -1; + synaptics_apply_quirks(psmouse); + return 0; } @@ -427,18 +579,22 @@ return (buf[0] & 0xFC) == 0x84 && (buf[3] & 0xCC) == 0xC4; } -static void synaptics_pass_pt_packet(struct serio *ptport, unsigned char *packet) +static void synaptics_pass_pt_packet(struct psmouse *psmouse, + struct serio *ptport, + unsigned char *packet) { + struct synaptics_data *priv = psmouse->private; struct psmouse *child = serio_get_drvdata(ptport); if (child && child->state == PSMOUSE_ACTIVATED) { - serio_interrupt(ptport, packet[1], 0); + serio_interrupt(ptport, packet[1] | priv->pt_buttons, 0); serio_interrupt(ptport, packet[4], 0); serio_interrupt(ptport, packet[5], 0); if (child->pktsize == 4) serio_interrupt(ptport, packet[2], 0); - } else + } else { serio_interrupt(ptport, packet[1], 0); + } } static void synaptics_pt_activate(struct psmouse *psmouse) @@ -527,6 +683,20 @@ priv->agm_pending = true; } +static void synaptics_parse_ext_buttons(const unsigned char buf[], + struct synaptics_data *priv, + struct synaptics_hw_state *hw) +{ + unsigned int ext_bits = + (SYN_CAP_MULTI_BUTTON_NO(priv->ext_cap) + 1) >> 1; + unsigned int ext_mask = GENMASK(ext_bits - 1, 0); + + hw->ext_buttons = buf[4] & ext_mask; + hw->ext_buttons |= (buf[5] & ext_mask) << ext_bits; +} + +static bool is_forcepad; + static int synaptics_parse_hw_state(const unsigned char buf[], struct synaptics_data *priv, struct synaptics_hw_state *hw) @@ -538,10 +708,61 @@ ((buf[0] & 0x04) >> 1) | ((buf[3] & 0x04) >> 2)); + if ((SYN_CAP_ADV_GESTURE(priv->ext_cap_0c) || + SYN_CAP_IMAGE_SENSOR(priv->ext_cap_0c)) && + hw->w == 2) { + synaptics_parse_agm(buf, priv, hw); + return 1; + } + + hw->x = (((buf[3] & 0x10) << 8) | + ((buf[1] & 0x0f) << 8) | + buf[4]); + hw->y = (((buf[3] & 0x20) << 7) | + ((buf[1] & 0xf0) << 4) | + buf[5]); + hw->z = buf[2]; + hw->left = (buf[0] & 0x01) ? 1 : 0; hw->right = (buf[0] & 0x02) ? 1 : 0; - if (SYN_CAP_CLICKPAD(priv->ext_cap_0c)) { + if (is_forcepad) { + /* + * ForcePads, like Clickpads, use middle button + * bits to report primary button clicks. + * Unfortunately they report primary button not + * only when user presses on the pad above certain + * threshold, but also when there are more than one + * finger on the touchpad, which interferes with + * out multi-finger gestures. + */ + if (hw->z == 0) { + /* No contacts */ + priv->press = priv->report_press = false; + } else if (hw->w >= 4 && ((buf[0] ^ buf[3]) & 0x01)) { + /* + * Single-finger touch with pressure above + * the threshold. If pressure stays long + * enough, we'll start reporting primary + * button. We rely on the device continuing + * sending data even if finger does not + * move. + */ + if (!priv->press) { + priv->press_start = jiffies; + priv->press = true; + } else if (time_after(jiffies, + priv->press_start + + msecs_to_jiffies(50))) { + priv->report_press = true; + } + } else { + priv->press = false; + } + + hw->left = priv->report_press; + + } else if (SYN_CAP_CLICKPAD(priv->ext_cap_0c)) { /* * Clickpad's button is transmitted as middle button, * however, since it is primary button, we will report @@ -560,43 +781,9 @@ hw->down = ((buf[0] ^ buf[3]) & 0x02) ? 1 : 0; } - if ((SYN_CAP_ADV_GESTURE(priv->ext_cap_0c) || - SYN_CAP_IMAGE_SENSOR(priv->ext_cap_0c)) && - hw->w == 2) { - synaptics_parse_agm(buf, priv, hw); - return 1; - } - - hw->x = (((buf[3] & 0x10) << 8) | - ((buf[1] & 0x0f) << 8) | - buf[4]); - hw->y = (((buf[3] & 0x20) << 7) | - ((buf[1] & 0xf0) << 4) | - buf[5]); - hw->z = buf[2]; - - if (SYN_CAP_MULTI_BUTTON_NO(priv->ext_cap) && + if (SYN_CAP_MULTI_BUTTON_NO(priv->ext_cap) > 0 && ((buf[0] ^ buf[3]) & 0x02)) { - switch (SYN_CAP_MULTI_BUTTON_NO(priv->ext_cap) & ~0x01) { - default: - /* - * if nExtBtn is greater than 8 it should be - * considered invalid and treated as 0 - */ - break; - case 8: - hw->ext_buttons |= ((buf[5] & 0x08)) ? 0x80 : 0; - hw->ext_buttons |= ((buf[4] & 0x08)) ? 0x40 : 0; - case 6: - hw->ext_buttons |= ((buf[5] & 0x04)) ? 0x20 : 0; - hw->ext_buttons |= ((buf[4] & 0x04)) ? 0x10 : 0; - case 4: - hw->ext_buttons |= ((buf[5] & 0x02)) ? 0x08 : 0; - hw->ext_buttons |= ((buf[4] & 0x02)) ? 0x04 : 0; - case 2: - hw->ext_buttons |= ((buf[5] & 0x01)) ? 0x02 : 0; - hw->ext_buttons |= ((buf[4] & 0x01)) ? 0x01 : 0; - } + synaptics_parse_ext_buttons(buf, priv, hw); } } else { hw->x = (((buf[1] & 0x1f) << 8) | buf[2]); @@ -658,12 +845,55 @@ } } +static void synaptics_report_ext_buttons(struct psmouse *psmouse, + const struct synaptics_hw_state *hw) +{ + struct input_dev *dev = psmouse->dev; + struct synaptics_data *priv = psmouse->private; + int ext_bits = (SYN_CAP_MULTI_BUTTON_NO(priv->ext_cap) + 1) >> 1; + char buf[6] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + int i; + + if (!SYN_CAP_MULTI_BUTTON_NO(priv->ext_cap)) + return; + + /* Bug in FW 8.1, buttons are reported only when ExtBit is 1 */ + if ((SYN_ID_FULL(priv->identity) == 0x801 || + SYN_ID_FULL(priv->identity) == 0x802) && + !((psmouse->packet[0] ^ psmouse->packet[3]) & 0x02)) + return; + + if (!SYN_CAP_EXT_BUTTONS_STICK(priv->ext_cap_10)) { + for (i = 0; i < ext_bits; i++) { + input_report_key(dev, BTN_0 + 2 * i, + hw->ext_buttons & (1 << i)); + input_report_key(dev, BTN_1 + 2 * i, + hw->ext_buttons & (1 << (i + ext_bits))); + } + return; + } + + /* + * This generation of touchpads has the trackstick buttons + * physically wired to the touchpad. Re-route them through + * the pass-through interface. + */ + if (!priv->pt_port) + return; + + /* The trackstick expects at most 3 buttons */ + priv->pt_buttons = SYN_CAP_EXT_BUTTON_STICK_L(hw->ext_buttons) | + SYN_CAP_EXT_BUTTON_STICK_R(hw->ext_buttons) << 1 | + SYN_CAP_EXT_BUTTON_STICK_M(hw->ext_buttons) << 2; + + synaptics_pass_pt_packet(psmouse, priv->pt_port, buf); +} + static void synaptics_report_buttons(struct psmouse *psmouse, const struct synaptics_hw_state *hw) { struct input_dev *dev = psmouse->dev; struct synaptics_data *priv = psmouse->private; - int i; input_report_key(dev, BTN_LEFT, hw->left); input_report_key(dev, BTN_RIGHT, hw->right); @@ -676,8 +906,7 @@ input_report_key(dev, BTN_BACK, hw->down); } - for (i = 0; i < SYN_CAP_MULTI_BUTTON_NO(priv->ext_cap); i++) - input_report_key(dev, BTN_0 + i, hw->ext_buttons & (1 << i)); + synaptics_report_ext_buttons(psmouse, hw); } static void synaptics_report_slot(struct input_dev *dev, int slot, @@ -1213,7 +1442,8 @@ if (SYN_CAP_PASS_THROUGH(priv->capabilities) && synaptics_is_pt_packet(psmouse->packet)) { if (priv->pt_port) - synaptics_pass_pt_packet(priv->pt_port, psmouse->packet); + synaptics_pass_pt_packet(psmouse, priv->pt_port, + psmouse->packet); } else synaptics_process_packet(psmouse); @@ -1244,8 +1474,10 @@ input_abs_set_res(dev, y_code, priv->y_res); } -static void set_input_params(struct input_dev *dev, struct synaptics_data *priv) +static void set_input_params(struct psmouse *psmouse, + struct synaptics_data *priv) { + struct input_dev *dev = psmouse->dev; int i; /* Things that apply to both modes */ @@ -1305,8 +1537,9 @@ __set_bit(BTN_BACK, dev->keybit); } - for (i = 0; i < SYN_CAP_MULTI_BUTTON_NO(priv->ext_cap); i++) - __set_bit(BTN_0 + i, dev->keybit); + if (!SYN_CAP_EXT_BUTTONS_STICK(priv->ext_cap_10)) + for (i = 0; i < SYN_CAP_MULTI_BUTTON_NO(priv->ext_cap); i++) + __set_bit(BTN_0 + i, dev->keybit); __clear_bit(EV_REL, dev->evbit); __clear_bit(REL_X, dev->relbit); @@ -1314,10 +1547,15 @@ if (SYN_CAP_CLICKPAD(priv->ext_cap_0c)) { __set_bit(INPUT_PROP_BUTTONPAD, dev->propbit); + if (psmouse_matches_pnp_id(psmouse, topbuttonpad_pnp_ids) && + !SYN_CAP_EXT_BUTTONS_STICK(priv->ext_cap_10)) + __set_bit(INPUT_PROP_TOPBUTTONPAD, dev->propbit); /* 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, @@ -1485,10 +1723,28 @@ { } }; +static const struct dmi_system_id forcepad_dmi_table[] __initconst = { +#if defined(CONFIG_DMI) && defined(CONFIG_X86) + { + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), + DMI_MATCH(DMI_PRODUCT_NAME, "HP EliteBook Folio 1040 G1"), + }, + }, +#endif + { } +}; + void __init synaptics_module_init(void) { impaired_toshiba_kbc = dmi_check_system(toshiba_dmi_table); broken_olpc_ec = dmi_check_system(olpc_dmi_table); + + /* + * Unfortunately ForcePad capability is not exported over PS/2, + * so we have to resort to checking DMI. + */ + is_forcepad = dmi_check_system(forcepad_dmi_table); } static int __synaptics_init(struct psmouse *psmouse, bool absolute_mode) @@ -1538,7 +1794,7 @@ priv->capabilities, priv->ext_cap, priv->ext_cap_0c, priv->board_id, priv->firmware_id); - set_input_params(psmouse->dev, priv); + set_input_params(psmouse, priv); /* * Encode touchpad model so that it can be used to set --- linux-3.13.0.orig/drivers/input/mouse/synaptics.h +++ linux-3.13.0/drivers/input/mouse/synaptics.h @@ -22,6 +22,7 @@ #define SYN_QUE_EXT_CAPAB_0C 0x0c #define SYN_QUE_EXT_MAX_COORDS 0x0d #define SYN_QUE_EXT_MIN_COORDS 0x0f +#define SYN_QUE_MEXT_CAPAB_10 0x10 /* synatics modes */ #define SYN_BIT_ABSOLUTE_MODE (1 << 7) @@ -53,6 +54,7 @@ #define SYN_EXT_CAP_REQUESTS(c) (((c) & 0x700000) >> 20) #define SYN_CAP_MULTI_BUTTON_NO(ec) (((ec) & 0x00f000) >> 12) #define SYN_CAP_PRODUCT_ID(ec) (((ec) & 0xff0000) >> 16) +#define SYN_MEXT_CAP_BIT(m) ((m) & (1 << 1)) /* * The following describes response for the 0x0c query. @@ -77,16 +79,43 @@ * for noise. * 2 0x08 image sensor image sensor tracks 5 fingers, but only * reports 2. + * 2 0x01 uniform clickpad whole clickpad moves instead of being + * hinged at the top. * 2 0x20 report min query 0x0f gives min coord reported */ #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) #define SYN_CAP_REDUCED_FILTERING(ex0c) ((ex0c) & 0x000400) #define SYN_CAP_IMAGE_SENSOR(ex0c) ((ex0c) & 0x000800) +/* + * The following descibes response for the 0x10 query. + * + * byte mask name meaning + * ---- ---- ------- ------------ + * 1 0x01 ext buttons are stick buttons exported in the extended + * capability are actually meant to be used + * by the tracktick (pass-through). + * 1 0x02 SecurePad the touchpad is a SecurePad, so it + * contains a built-in fingerprint reader. + * 1 0xe0 more ext count how many more extented queries are + * available after this one. + * 2 0xff SecurePad width the width of the SecurePad fingerprint + * reader. + * 3 0xff SecurePad height the height of the SecurePad fingerprint + * reader. + */ +#define SYN_CAP_EXT_BUTTONS_STICK(ex10) ((ex10) & 0x010000) +#define SYN_CAP_SECUREPAD(ex10) ((ex10) & 0x020000) + +#define SYN_CAP_EXT_BUTTON_STICK_L(eb) (!!((eb) & 0x01)) +#define SYN_CAP_EXT_BUTTON_STICK_M(eb) (!!((eb) & 0x02)) +#define SYN_CAP_EXT_BUTTON_STICK_R(eb) (!!((eb) & 0x04)) + /* synaptics modes query bits */ #define SYN_MODE_ABSOLUTE(m) ((m) & (1 << 7)) #define SYN_MODE_RATE(m) ((m) & (1 << 6)) @@ -154,6 +183,7 @@ unsigned long int capabilities; /* Capabilities */ unsigned long int ext_cap; /* Extended Capabilities */ unsigned long int ext_cap_0c; /* Ext Caps from 0x0c query */ + unsigned long int ext_cap_10; /* Ext Caps from 0x10 query */ unsigned long int identity; /* Identification */ unsigned int x_res, y_res; /* X/Y resolution in units/mm */ unsigned int x_max, y_max; /* Max coordinates (from FW) */ @@ -167,6 +197,7 @@ bool disable_gesture; /* disable gestures */ struct serio *pt_port; /* Pass-through serio port */ + unsigned char pt_buttons; /* Pass-through buttons */ struct synaptics_mt_state mt_state; /* Current mt finger state */ bool mt_state_lost; /* mt_state may be incorrect */ @@ -177,6 +208,11 @@ */ struct synaptics_hw_state agm; bool agm_pending; /* new AGM packet received */ + + /* ForcePad handling */ + unsigned long press_start; + bool press; + bool report_press; }; void synaptics_module_init(void); --- linux-3.13.0.orig/drivers/input/mousedev.c +++ linux-3.13.0/drivers/input/mousedev.c @@ -67,7 +67,6 @@ struct device dev; struct cdev cdev; bool exist; - bool is_mixdev; struct list_head mixdev_node; bool opened_by_mixdev; @@ -77,6 +76,9 @@ int old_x[4], old_y[4]; int frac_dx, frac_dy; unsigned long touch; + + int (*open_device)(struct mousedev *mousedev); + void (*close_device)(struct mousedev *mousedev); }; enum mousedev_emul { @@ -116,9 +118,6 @@ static struct mousedev *mousedev_mix; static LIST_HEAD(mousedev_mix_list); -static void mixdev_open_devices(void); -static void mixdev_close_devices(void); - #define fx(i) (mousedev->old_x[(mousedev->pkt_count - (i)) & 03]) #define fy(i) (mousedev->old_y[(mousedev->pkt_count - (i)) & 03]) @@ -428,9 +427,7 @@ if (retval) return retval; - if (mousedev->is_mixdev) - mixdev_open_devices(); - else if (!mousedev->exist) + if (!mousedev->exist) retval = -ENODEV; else if (!mousedev->open++) { retval = input_open_device(&mousedev->handle); @@ -446,9 +443,7 @@ { mutex_lock(&mousedev->mutex); - if (mousedev->is_mixdev) - mixdev_close_devices(); - else if (mousedev->exist && !--mousedev->open) + if (mousedev->exist && !--mousedev->open) input_close_device(&mousedev->handle); mutex_unlock(&mousedev->mutex); @@ -459,21 +454,29 @@ * stream. Note that this function is called with mousedev_mix->mutex * held. */ -static void mixdev_open_devices(void) +static int mixdev_open_devices(struct mousedev *mixdev) { - struct mousedev *mousedev; + int error; + + error = mutex_lock_interruptible(&mixdev->mutex); + if (error) + return error; - if (mousedev_mix->open++) - return; + if (!mixdev->open++) { + struct mousedev *mousedev; - list_for_each_entry(mousedev, &mousedev_mix_list, mixdev_node) { - if (!mousedev->opened_by_mixdev) { - if (mousedev_open_device(mousedev)) - continue; + list_for_each_entry(mousedev, &mousedev_mix_list, mixdev_node) { + if (!mousedev->opened_by_mixdev) { + if (mousedev_open_device(mousedev)) + continue; - mousedev->opened_by_mixdev = true; + mousedev->opened_by_mixdev = true; + } } } + + mutex_unlock(&mixdev->mutex); + return 0; } /* @@ -481,19 +484,22 @@ * device. Note that this function is called with mousedev_mix->mutex * held. */ -static void mixdev_close_devices(void) +static void mixdev_close_devices(struct mousedev *mixdev) { - struct mousedev *mousedev; + mutex_lock(&mixdev->mutex); - if (--mousedev_mix->open) - return; + if (!--mixdev->open) { + struct mousedev *mousedev; - list_for_each_entry(mousedev, &mousedev_mix_list, mixdev_node) { - if (mousedev->opened_by_mixdev) { - mousedev->opened_by_mixdev = false; - mousedev_close_device(mousedev); + list_for_each_entry(mousedev, &mousedev_mix_list, mixdev_node) { + if (mousedev->opened_by_mixdev) { + mousedev->opened_by_mixdev = false; + mousedev_close_device(mousedev); + } } } + + mutex_unlock(&mixdev->mutex); } @@ -522,7 +528,7 @@ mousedev_detach_client(mousedev, client); kfree(client); - mousedev_close_device(mousedev); + mousedev->close_device(mousedev); return 0; } @@ -550,7 +556,7 @@ client->mousedev = mousedev; mousedev_attach_client(mousedev, client); - error = mousedev_open_device(mousedev); + error = mousedev->open_device(mousedev); if (error) goto err_free_client; @@ -861,16 +867,21 @@ if (mixdev) { dev_set_name(&mousedev->dev, "mice"); + + mousedev->open_device = mixdev_open_devices; + mousedev->close_device = mixdev_close_devices; } else { int dev_no = minor; /* Normalize device number if it falls into legacy range */ if (dev_no < MOUSEDEV_MINOR_BASE + MOUSEDEV_MINORS) dev_no -= MOUSEDEV_MINOR_BASE; dev_set_name(&mousedev->dev, "mouse%d", dev_no); + + mousedev->open_device = mousedev_open_device; + mousedev->close_device = mousedev_close_device; } mousedev->exist = true; - mousedev->is_mixdev = mixdev; mousedev->handle.dev = input_get_device(dev); mousedev->handle.name = dev_name(&mousedev->dev); mousedev->handle.handler = handler; @@ -919,7 +930,7 @@ device_del(&mousedev->dev); mousedev_cleanup(mousedev); input_free_minor(MINOR(mousedev->dev.devt)); - if (!mousedev->is_mixdev) + if (mousedev != mousedev_mix) input_unregister_handle(&mousedev->handle); put_device(&mousedev->dev); } --- linux-3.13.0.orig/drivers/input/serio/hyperv-keyboard.c +++ linux-3.13.0/drivers/input/serio/hyperv-keyboard.c @@ -160,7 +160,9 @@ if (info & IS_E0) serio_interrupt(kbd_dev->hv_serio, XTKBD_EMUL0, 0); - + if (info & IS_E1) + serio_interrupt(kbd_dev->hv_serio, + XTKBD_EMUL1, 0); scan_code = __le16_to_cpu(ks_msg->make_code); if (info & IS_BREAK) scan_code |= XTKBD_RELEASE; --- linux-3.13.0.orig/drivers/input/serio/i8042-x86ia64io.h +++ linux-3.13.0/drivers/input/serio/i8042-x86ia64io.h @@ -101,6 +101,12 @@ }, { .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), + DMI_MATCH(DMI_PRODUCT_NAME, "X750LN"), + }, + }, + { + .matches = { DMI_MATCH(DMI_SYS_VENDOR, "Compaq"), DMI_MATCH(DMI_PRODUCT_NAME , "ProLiant"), DMI_MATCH(DMI_PRODUCT_VERSION, "8500"), @@ -146,6 +152,14 @@ }, }, { + /* Medion Akoya E7225 */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Medion"), + DMI_MATCH(DMI_PRODUCT_NAME, "Akoya E7225"), + DMI_MATCH(DMI_PRODUCT_VERSION, "1.0"), + }, + }, + { /* Blue FB5601 */ .matches = { DMI_MATCH(DMI_SYS_VENDOR, "blue"), @@ -244,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"), @@ -402,6 +423,13 @@ }, }, { + /* Acer Aspire 7738 */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Acer"), + DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 7738"), + }, + }, + { /* Gericom Bellagio */ .matches = { DMI_MATCH(DMI_SYS_VENDOR, "Gericom"), @@ -458,6 +486,13 @@ DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion dv4 Notebook PC"), }, }, + { + /* Avatar AVIU-145A6 */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Intel"), + DMI_MATCH(DMI_PRODUCT_NAME, "IC4I"), + }, + }, { } }; @@ -601,6 +636,30 @@ DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion dv4 Notebook PC"), }, }, + { + /* Fujitsu A544 laptop */ + /* https://bugzilla.redhat.com/show_bug.cgi?id=1111138 */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"), + DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK A544"), + }, + }, + { + /* Fujitsu AH544 laptop */ + /* https://bugzilla.kernel.org/show_bug.cgi?id=69731 */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"), + DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK AH544"), + }, + }, + { + /* Fujitsu U574 laptop */ + /* https://bugzilla.kernel.org/show_bug.cgi?id=69731 */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"), + DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK U574"), + }, + }, { } }; @@ -684,6 +743,35 @@ { } }; +/* + * Some laptops need keyboard reset before probing for the trackpad to get + * it detected, initialised & finally work. + */ +static const struct dmi_system_id __initconst i8042_dmi_kbdreset_table[] = { + { + /* Gigabyte P35 v2 - Elantech touchpad */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"), + DMI_MATCH(DMI_PRODUCT_NAME, "P35V2"), + }, + }, + { + /* Aorus branded Gigabyte X3 Plus - Elantech touchpad */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"), + DMI_MATCH(DMI_PRODUCT_NAME, "X3"), + }, + }, + { + /* Gigabyte P34 - Elantech touchpad */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"), + DMI_MATCH(DMI_PRODUCT_NAME, "P34"), + }, + }, + { } +}; + #endif /* CONFIG_X86 */ #ifdef CONFIG_PNP @@ -702,6 +790,17 @@ static char i8042_pnp_kbd_name[32]; static char i8042_pnp_aux_name[32]; +static void i8042_pnp_id_to_string(struct pnp_id *id, char *dst, int dst_size) +{ + strlcpy(dst, "PNP:", dst_size); + + while (id) { + strlcat(dst, " ", dst_size); + strlcat(dst, id->id, dst_size); + id = id->next; + } +} + static int i8042_pnp_kbd_probe(struct pnp_dev *dev, const struct pnp_device_id *did) { if (pnp_port_valid(dev, 0) && pnp_port_len(dev, 0) == 1) @@ -718,6 +817,8 @@ strlcat(i8042_pnp_kbd_name, ":", sizeof(i8042_pnp_kbd_name)); strlcat(i8042_pnp_kbd_name, pnp_dev_name(dev), sizeof(i8042_pnp_kbd_name)); } + i8042_pnp_id_to_string(dev->id, i8042_kbd_firmware_id, + sizeof(i8042_kbd_firmware_id)); /* Keyboard ports are always supposed to be wakeup-enabled */ device_set_wakeup_enable(&dev->dev, true); @@ -742,6 +843,8 @@ strlcat(i8042_pnp_aux_name, ":", sizeof(i8042_pnp_aux_name)); strlcat(i8042_pnp_aux_name, pnp_dev_name(dev), sizeof(i8042_pnp_aux_name)); } + i8042_pnp_id_to_string(dev->id, i8042_aux_firmware_id, + sizeof(i8042_aux_firmware_id)); i8042_pnp_aux_devices++; return 0; @@ -964,6 +1067,9 @@ if (dmi_check_system(i8042_dmi_dritek_table)) i8042_dritek = true; + if (dmi_check_system(i8042_dmi_kbdreset_table)) + i8042_kbdreset = true; + /* * A20 was already enabled during early kernel init. But some buggy * BIOSes (in MSI Laptops) require A20 to be enabled using 8042 to --- linux-3.13.0.orig/drivers/input/serio/i8042.c +++ linux-3.13.0/drivers/input/serio/i8042.c @@ -67,6 +67,10 @@ module_param_named(notimeout, i8042_notimeout, bool, 0); MODULE_PARM_DESC(notimeout, "Ignore timeouts signalled by i8042"); +static bool i8042_kbdreset; +module_param_named(kbdreset, i8042_kbdreset, bool, 0); +MODULE_PARM_DESC(kbdreset, "Reset device connected to KBD port"); + #ifdef CONFIG_X86 static bool i8042_dritek; module_param_named(dritek, i8042_dritek, bool, 0); @@ -87,6 +91,8 @@ #endif static bool i8042_bypass_aux_irq_test; +static char i8042_kbd_firmware_id[128]; +static char i8042_aux_firmware_id[128]; #include "i8042.h" @@ -788,6 +794,16 @@ return -1; /* + * Reset keyboard (needed on some laptops to successfully detect + * touchpad, e.g., some Gigabyte laptop models with Elantech + * touchpads). + */ + if (i8042_kbdreset) { + pr_warn("Attempting to reset device connected to KBD port\n"); + i8042_kbd_write(NULL, (unsigned char) 0xff); + } + +/* * Test AUX IRQ delivery to make sure BIOS did not grab the IRQ and * used it for a PCI card or somethig else. */ @@ -1218,6 +1234,8 @@ serio->dev.parent = &i8042_platform_device->dev; strlcpy(serio->name, "i8042 KBD port", sizeof(serio->name)); strlcpy(serio->phys, I8042_KBD_PHYS_DESC, sizeof(serio->phys)); + strlcpy(serio->firmware_id, i8042_kbd_firmware_id, + sizeof(serio->firmware_id)); port->serio = serio; port->irq = I8042_KBD_IRQ; @@ -1244,6 +1262,8 @@ if (idx < 0) { strlcpy(serio->name, "i8042 AUX port", sizeof(serio->name)); strlcpy(serio->phys, I8042_AUX_PHYS_DESC, sizeof(serio->phys)); + strlcpy(serio->firmware_id, i8042_aux_firmware_id, + sizeof(serio->firmware_id)); serio->close = i8042_port_close; } else { snprintf(serio->name, sizeof(serio->name), "i8042 AUX%d port", idx); --- linux-3.13.0.orig/drivers/input/serio/serio.c +++ linux-3.13.0/drivers/input/serio/serio.c @@ -451,6 +451,13 @@ return retval; } +static ssize_t firmware_id_show(struct device *dev, struct device_attribute *attr, char *buf) +{ + struct serio *serio = to_serio_port(dev); + + return sprintf(buf, "%s\n", serio->firmware_id); +} + static DEVICE_ATTR_RO(type); static DEVICE_ATTR_RO(proto); static DEVICE_ATTR_RO(id); @@ -473,12 +480,14 @@ static DEVICE_ATTR_WO(drvctl); static DEVICE_ATTR(description, S_IRUGO, serio_show_description, NULL); static DEVICE_ATTR(bind_mode, S_IWUSR | S_IRUGO, serio_show_bind_mode, serio_set_bind_mode); +static DEVICE_ATTR_RO(firmware_id); static struct attribute *serio_device_attrs[] = { &dev_attr_modalias.attr, &dev_attr_description.attr, &dev_attr_drvctl.attr, &dev_attr_bind_mode.attr, + &dev_attr_firmware_id.attr, NULL }; @@ -921,9 +930,14 @@ SERIO_ADD_UEVENT_VAR("SERIO_PROTO=%02x", serio->id.proto); SERIO_ADD_UEVENT_VAR("SERIO_ID=%02x", serio->id.id); SERIO_ADD_UEVENT_VAR("SERIO_EXTRA=%02x", serio->id.extra); + SERIO_ADD_UEVENT_VAR("MODALIAS=serio:ty%02Xpr%02Xid%02Xex%02X", serio->id.type, serio->id.proto, serio->id.id, serio->id.extra); + if (serio->firmware_id[0]) + SERIO_ADD_UEVENT_VAR("SERIO_FIRMWARE_ID=%s", + serio->firmware_id); + return 0; } #undef SERIO_ADD_UEVENT_VAR --- linux-3.13.0.orig/drivers/input/serio/serport.c +++ linux-3.13.0/drivers/input/serio/serport.c @@ -21,6 +21,7 @@ #include #include #include +#include MODULE_AUTHOR("Vojtech Pavlik "); MODULE_DESCRIPTION("Input device TTY line discipline"); @@ -196,28 +197,55 @@ return 0; } +static void serport_set_type(struct tty_struct *tty, unsigned long type) +{ + struct serport *serport = tty->disc_data; + + serport->id.proto = type & 0x000000ff; + serport->id.id = (type & 0x0000ff00) >> 8; + serport->id.extra = (type & 0x00ff0000) >> 16; +} + /* * serport_ldisc_ioctl() allows to set the port protocol, and device ID */ -static int serport_ldisc_ioctl(struct tty_struct * tty, struct file * file, unsigned int cmd, unsigned long arg) +static int serport_ldisc_ioctl(struct tty_struct *tty, struct file *file, + unsigned int cmd, unsigned long arg) { - struct serport *serport = (struct serport*) tty->disc_data; - unsigned long type; - if (cmd == SPIOCSTYPE) { + unsigned long type; + if (get_user(type, (unsigned long __user *) arg)) return -EFAULT; - serport->id.proto = type & 0x000000ff; - serport->id.id = (type & 0x0000ff00) >> 8; - serport->id.extra = (type & 0x00ff0000) >> 16; + serport_set_type(tty, type); + return 0; + } + + return -EINVAL; +} + +#ifdef CONFIG_COMPAT +#define COMPAT_SPIOCSTYPE _IOW('q', 0x01, compat_ulong_t) +static long serport_ldisc_compat_ioctl(struct tty_struct *tty, + struct file *file, + unsigned int cmd, unsigned long arg) +{ + if (cmd == COMPAT_SPIOCSTYPE) { + void __user *uarg = compat_ptr(arg); + compat_ulong_t compat_type; + + if (get_user(compat_type, (compat_ulong_t __user *)uarg)) + return -EFAULT; + serport_set_type(tty, compat_type); return 0; } return -EINVAL; } +#endif static void serport_ldisc_write_wakeup(struct tty_struct * tty) { @@ -241,6 +269,9 @@ .close = serport_ldisc_close, .read = serport_ldisc_read, .ioctl = serport_ldisc_ioctl, +#ifdef CONFIG_COMPAT + .compat_ioctl = serport_ldisc_compat_ioctl, +#endif .receive_buf = serport_ldisc_receive, .write_wakeup = serport_ldisc_write_wakeup }; --- linux-3.13.0.orig/drivers/input/tablet/aiptek.c +++ linux-3.13.0/drivers/input/tablet/aiptek.c @@ -1820,6 +1820,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 @@ -1862,6 +1870,7 @@ if (i == ARRAY_SIZE(speeds)) { dev_info(&intf->dev, "Aiptek tried all speeds, no sane response\n"); + err = -EINVAL; goto fail3; } --- linux-3.13.0.orig/drivers/input/tablet/gtco.c +++ linux-3.13.0/drivers/input/tablet/gtco.c @@ -869,6 +869,14 @@ goto err_free_buf; } + /* Sanity check that a device has an endpoint */ + if (usbinterface->altsetting[0].desc.bNumEndpoints < 1) { + dev_err(&usbinterface->dev, + "Invalid number of endpoints\n"); + error = -EINVAL; + goto err_free_urb; + } + /* * The endpoint is always altsetting 0, we know this since we know * this device only has one interrupt endpoint @@ -890,7 +898,7 @@ * HID report descriptor */ if (usb_get_extra_descriptor(usbinterface->cur_altsetting, - HID_DEVICE_TYPE, &hid_desc) != 0){ + HID_DEVICE_TYPE, &hid_desc) != 0) { dev_err(&usbinterface->dev, "Can't retrieve exta USB descriptor to get hid report descriptor length\n"); error = -EIO; --- linux-3.13.0.orig/drivers/input/tablet/wacom_sys.c +++ linux-3.13.0/drivers/input/tablet/wacom_sys.c @@ -304,7 +304,7 @@ struct usb_device *dev = interface_to_usbdev(intf); char limit = 0; /* result has to be defined as int for some devices */ - int result = 0; + int result = 0, touch_max = 0; int i = 0, usage = WCM_UNDEFINED, finger = 0, pen = 0; unsigned char *report; @@ -351,7 +351,8 @@ if (usage == WCM_DESKTOP) { if (finger) { features->device_type = BTN_TOOL_FINGER; - + /* touch device at least supports one touch point */ + touch_max = 1; switch (features->type) { case TABLETPC2FG: features->pktlen = WACOM_PKGLEN_TPC2FG; @@ -504,6 +505,8 @@ } out: + if (!features->touch_max && touch_max) + features->touch_max = touch_max; result = 0; kfree(report); return result; @@ -1194,12 +1197,15 @@ wacom_wac1->features.device_type = BTN_TOOL_PEN; snprintf(wacom_wac1->name, WACOM_NAME_MAX, "%s (WL) Pen", wacom_wac1->features.name); + wacom_wac1->shared->touch_max = wacom_wac1->features.touch_max; + wacom_wac1->shared->type = wacom_wac1->features.type; error = wacom_register_input(wacom1); if (error) goto fail; /* Touch interface */ - if (wacom_wac1->features.touch_max) { + if (wacom_wac1->features.touch_max || + wacom_wac1->features.type == INTUOSHT) { wacom_wac2->features = *((struct wacom_features *)id->driver_info); wacom_wac2->features.pktlen = WACOM_PKGLEN_BBTOUCH3; @@ -1214,6 +1220,10 @@ error = wacom_register_input(wacom2); if (error) goto fail; + + if (wacom_wac1->features.type == INTUOSHT && + wacom_wac1->features.touch_max) + wacom_wac->shared->touch_input = wacom_wac2->input; } error = wacom_initialize_battery(wacom); @@ -1322,7 +1332,7 @@ * HID descriptor. If this is the touch interface (wMaxPacketSize * of WACOM_PKGLEN_BBTOUCH3), override the table values. */ - if (features->type >= INTUOS5S && features->type <= INTUOSPL) { + if (features->type >= INTUOS5S && features->type <= INTUOSHT) { if (endpoint->wMaxPacketSize == WACOM_PKGLEN_BBTOUCH3) { features->device_type = BTN_TOOL_FINGER; features->pktlen = WACOM_PKGLEN_BBTOUCH3; @@ -1393,6 +1403,11 @@ } } + if (wacom_wac->features.type == INTUOSHT && wacom_wac->features.touch_max) { + if (wacom_wac->features.device_type == BTN_TOOL_FINGER) + wacom_wac->shared->touch_input = wacom_wac->input; + } + return 0; fail5: wacom_destroy_leds(wacom); --- linux-3.13.0.orig/drivers/input/tablet/wacom_wac.c +++ linux-3.13.0/drivers/input/tablet/wacom_wac.c @@ -210,6 +210,62 @@ return 1; } +static int wacom_dtus_irq(struct wacom_wac *wacom) +{ + char *data = wacom->data; + struct input_dev *input = wacom->input; + unsigned short prox, pressure = 0; + + if (data[0] != WACOM_REPORT_DTUS && data[0] != WACOM_REPORT_DTUSPAD) { + dev_dbg(input->dev.parent, + "%s: received unknown report #%d", __func__, data[0]); + return 0; + } else if (data[0] == WACOM_REPORT_DTUSPAD) { + input_report_key(input, BTN_0, (data[1] & 0x01)); + input_report_key(input, BTN_1, (data[1] & 0x02)); + input_report_key(input, BTN_2, (data[1] & 0x04)); + input_report_key(input, BTN_3, (data[1] & 0x08)); + input_report_abs(input, ABS_MISC, + data[1] & 0x0f ? PAD_DEVICE_ID : 0); + /* + * Serial number is required when expresskeys are + * reported through pen interface. + */ + input_event(input, EV_MSC, MSC_SERIAL, 0xf0); + return 1; + } else { + prox = data[1] & 0x80; + if (prox) { + switch ((data[1] >> 3) & 3) { + case 1: /* Rubber */ + wacom->tool[0] = BTN_TOOL_RUBBER; + wacom->id[0] = ERASER_DEVICE_ID; + break; + + case 2: /* Pen */ + wacom->tool[0] = BTN_TOOL_PEN; + wacom->id[0] = STYLUS_DEVICE_ID; + break; + } + } + + input_report_key(input, BTN_STYLUS, data[1] & 0x20); + input_report_key(input, BTN_STYLUS2, data[1] & 0x40); + input_report_abs(input, ABS_X, get_unaligned_be16(&data[3])); + input_report_abs(input, ABS_Y, get_unaligned_be16(&data[5])); + pressure = ((data[1] & 0x03) << 8) | (data[2] & 0xff); + input_report_abs(input, ABS_PRESSURE, pressure); + input_report_key(input, BTN_TOUCH, pressure > 10); + + if (!prox) /* out-prox */ + wacom->id[0] = 0; + input_report_key(input, wacom->tool[0], prox); + input_report_abs(input, ABS_MISC, wacom->id[0]); + input_event(input, EV_MSC, MSC_SERIAL, 1); + return 1; + } +} + static int wacom_graphire_irq(struct wacom_wac *wacom) { struct wacom_features *features = &wacom->features; @@ -331,7 +387,7 @@ /* Enter report */ if ((data[1] & 0xfc) == 0xc0) { - if (features->quirks == WACOM_QUIRK_MULTI_INPUT) + if (features->quirks & WACOM_QUIRK_MULTI_INPUT) wacom->shared->stylus_in_proximity = true; /* serial number of the tool */ @@ -436,7 +492,7 @@ /* Exit report */ if ((data[1] & 0xfe) == 0x80) { - if (features->quirks == WACOM_QUIRK_MULTI_INPUT) + if (features->quirks & WACOM_QUIRK_MULTI_INPUT) wacom->shared->stylus_in_proximity = false; /* @@ -1151,8 +1207,8 @@ int width, height; if (features->type >= INTUOSPS && features->type <= INTUOSPL) { - width = data[5]; - height = data[6]; + width = data[5] * 100; + height = data[6] * 100; } else { /* * "a" is a scaled-down area which we assume is @@ -1176,10 +1232,16 @@ static void wacom_bpt3_button_msg(struct wacom_wac *wacom, unsigned char *data) { struct input_dev *input = wacom->input; + struct wacom_features *features = &wacom->features; - input_report_key(input, BTN_LEFT, (data[1] & 0x08) != 0); + if (features->type == INTUOSHT) { + input_report_key(input, BTN_LEFT, (data[1] & 0x02) != 0); + input_report_key(input, BTN_BACK, (data[1] & 0x08) != 0); + } else { + input_report_key(input, BTN_BACK, (data[1] & 0x02) != 0); + input_report_key(input, BTN_LEFT, (data[1] & 0x08) != 0); + } input_report_key(input, BTN_FORWARD, (data[1] & 0x04) != 0); - input_report_key(input, BTN_BACK, (data[1] & 0x02) != 0); input_report_key(input, BTN_RIGHT, (data[1] & 0x01) != 0); } @@ -1213,13 +1275,25 @@ static int wacom_bpt_pen(struct wacom_wac *wacom) { + struct wacom_features *features = &wacom->features; struct input_dev *input = wacom->input; unsigned char *data = wacom->data; int prox = 0, x = 0, y = 0, p = 0, d = 0, pen = 0, btn1 = 0, btn2 = 0; - if (data[0] != 0x02) + if (data[0] != WACOM_REPORT_PENABLED && data[0] != WACOM_REPORT_USB) return 0; + if (data[0] == WACOM_REPORT_USB) { + if (features->type == INTUOSHT && + wacom->shared->touch_input && + features->touch_max) { + input_report_switch(wacom->shared->touch_input, + SW_MUTE_DEVICE, data[8] & 0x40); + input_sync(wacom->shared->touch_input); + } + return 0; + } + prox = (data[1] & 0x20) == 0x20; /* @@ -1252,8 +1326,8 @@ * touching and applying pressure; do not report negative * distance. */ - if (data[8] <= wacom->features.distance_max) - d = wacom->features.distance_max - data[8]; + if (data[8] <= features->distance_max) + d = features->distance_max - data[8]; pen = data[1] & 0x01; btn1 = data[1] & 0x02; @@ -1297,13 +1371,21 @@ unsigned char *data = wacom->data; int connected; - if (len != WACOM_PKGLEN_WIRELESS || data[0] != 0x80) + if (len != WACOM_PKGLEN_WIRELESS || data[0] != WACOM_REPORT_WL) return 0; connected = data[1] & 0x01; if (connected) { int pid, battery; + if ((wacom->shared->type == INTUOSHT) && + wacom->shared->touch_input && + wacom->shared->touch_max) { + input_report_switch(wacom->shared->touch_input, + SW_MUTE_DEVICE, data[5] & 0x40); + input_sync(wacom->shared->touch_input); + } + pid = get_unaligned_be16(&data[6]); battery = data[5] & 0x3f; if (wacom->pid != pid) { @@ -1348,6 +1430,10 @@ sync = wacom_dtu_irq(wacom_wac); break; + case DTUS: + sync = wacom_dtus_irq(wacom_wac); + break; + case INTUOS: case INTUOS3S: case INTUOS3: @@ -1391,6 +1477,7 @@ break; case BAMBOO_PT: + case INTUOSHT: sync = wacom_bpt_irq(wacom_wac, len); break; @@ -1459,7 +1546,7 @@ /* these device have multiple inputs */ if (features->type >= WIRELESS || - (features->type >= INTUOS5S && features->type <= INTUOSPL) || + (features->type >= INTUOS5S && features->type <= INTUOSHT) || (features->oVid && features->oPid)) features->quirks |= WACOM_QUIRK_MULTI_INPUT; @@ -1538,7 +1625,7 @@ wacom_abs_set_axis(input_dev, wacom_wac); - switch (wacom_wac->features.type) { + switch (features->type) { case WACOM_MO: input_set_abs_params(input_dev, ABS_WHEEL, 0, 71, 0, 0); /* fall through */ @@ -1749,8 +1836,14 @@ /* fall through */ + case DTUS: case PL: case DTU: + if (features->type == DTUS) { + input_set_capability(input_dev, EV_MSC, MSC_SERIAL); + for (i = 0; i < 3; i++) + __set_bit(BTN_0 + i, input_dev->keybit); + } __set_bit(BTN_TOOL_PEN, input_dev->keybit); __set_bit(BTN_TOOL_RUBBER, input_dev->keybit); __set_bit(BTN_STYLUS, input_dev->keybit); @@ -1771,33 +1864,50 @@ __set_bit(INPUT_PROP_POINTER, input_dev->propbit); break; + case INTUOSHT: + if (features->touch_max && + features->device_type == BTN_TOOL_FINGER) { + input_dev->evbit[0] |= BIT_MASK(EV_SW); + __set_bit(SW_MUTE_DEVICE, input_dev->swbit); + } + /* fall through */ + case BAMBOO_PT: __clear_bit(ABS_MISC, input_dev->absbit); - __set_bit(INPUT_PROP_POINTER, input_dev->propbit); - if (features->device_type == BTN_TOOL_FINGER) { - unsigned int flags = INPUT_MT_POINTER; __set_bit(BTN_LEFT, input_dev->keybit); __set_bit(BTN_FORWARD, input_dev->keybit); __set_bit(BTN_BACK, input_dev->keybit); __set_bit(BTN_RIGHT, input_dev->keybit); - if (features->pktlen == WACOM_PKGLEN_BBTOUCH3) { - input_set_abs_params(input_dev, + if (features->touch_max) { + /* touch interface */ + unsigned int flags = INPUT_MT_POINTER; + + __set_bit(INPUT_PROP_POINTER, input_dev->propbit); + if (features->pktlen == WACOM_PKGLEN_BBTOUCH3) { + input_set_abs_params(input_dev, ABS_MT_TOUCH_MAJOR, 0, features->x_max, 0, 0); - input_set_abs_params(input_dev, + input_set_abs_params(input_dev, ABS_MT_TOUCH_MINOR, 0, features->y_max, 0, 0); + } else { + __set_bit(BTN_TOOL_FINGER, input_dev->keybit); + __set_bit(BTN_TOOL_DOUBLETAP, input_dev->keybit); + flags = 0; + } + input_mt_init_slots(input_dev, features->touch_max, flags); } else { - __set_bit(BTN_TOOL_FINGER, input_dev->keybit); - __set_bit(BTN_TOOL_DOUBLETAP, input_dev->keybit); - flags = 0; + /* buttons/keys only interface */ + __clear_bit(ABS_X, input_dev->absbit); + __clear_bit(ABS_Y, input_dev->absbit); + __clear_bit(BTN_TOUCH, input_dev->keybit); } - input_mt_init_slots(input_dev, features->touch_max, flags); } else if (features->device_type == BTN_TOOL_PEN) { + __set_bit(INPUT_PROP_POINTER, input_dev->propbit); __set_bit(BTN_TOOL_RUBBER, input_dev->keybit); __set_bit(BTN_TOOL_PEN, input_dev->keybit); __set_bit(BTN_STYLUS, input_dev->keybit); @@ -2055,6 +2165,9 @@ static const struct wacom_features wacom_features_0xF0 = { "Wacom DTU1631", WACOM_PKGLEN_GRAPHIRE, 34623, 19553, 511, 0, DTU, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; +static const struct wacom_features wacom_features_0xFB = + { "Wacom DTU1031", WACOM_PKGLEN_DTUS, 22096, 13960, 511, + 0, DTUS, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; static const struct wacom_features wacom_features_0x57 = { "Wacom DTK2241", WACOM_PKGLEN_INTUOS, 95840, 54260, 2047, 63, DTK, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES}; @@ -2200,6 +2313,17 @@ static const struct wacom_features wacom_features_0x301 = { "Wacom Bamboo One M", WACOM_PKGLEN_BBPEN, 21648, 13530, 1023, 31, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; +static const struct wacom_features wacom_features_0x302 = + { "Wacom Intuos PT S", WACOM_PKGLEN_BBPEN, 15200, 9500, 1023, + 31, INTUOSHT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, + .touch_max = 16 }; +static const struct wacom_features wacom_features_0x303 = + { "Wacom Intuos PT M", WACOM_PKGLEN_BBPEN, 21600, 13500, 1023, + 31, INTUOSHT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, + .touch_max = 16 }; +static const struct wacom_features wacom_features_0x30E = + { "Wacom Intuos S", WACOM_PKGLEN_BBPEN, 15200, 9500, 1023, + 31, INTUOSHT, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; static const struct wacom_features wacom_features_0x6004 = { "ISD-V4", WACOM_PKGLEN_GRAPHIRE, 12800, 8000, 255, 0, TABLETPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; @@ -2337,6 +2461,9 @@ { USB_DEVICE_WACOM(0x10F) }, { USB_DEVICE_WACOM(0x300) }, { USB_DEVICE_WACOM(0x301) }, + { USB_DEVICE_DETAILED(0x302, USB_CLASS_HID, 0, 0) }, + { USB_DEVICE_DETAILED(0x303, USB_CLASS_HID, 0, 0) }, + { USB_DEVICE_DETAILED(0x30E, USB_CLASS_HID, 0, 0) }, { USB_DEVICE_WACOM(0x304) }, { USB_DEVICE_DETAILED(0x314, USB_CLASS_HID, 0, 0) }, { USB_DEVICE_DETAILED(0x315, USB_CLASS_HID, 0, 0) }, @@ -2347,6 +2474,7 @@ { USB_DEVICE_WACOM(0xF8) }, { USB_DEVICE_DETAILED(0xF6, USB_CLASS_HID, 0, 0) }, { USB_DEVICE_WACOM(0xFA) }, + { USB_DEVICE_WACOM(0xFB) }, { USB_DEVICE_WACOM(0x0307) }, { USB_DEVICE_DETAILED(0x0309, USB_CLASS_HID, 0, 0) }, { USB_DEVICE_LENOVO(0x6004) }, --- linux-3.13.0.orig/drivers/input/tablet/wacom_wac.h +++ linux-3.13.0/drivers/input/tablet/wacom_wac.h @@ -12,7 +12,7 @@ #include /* maximum packet length for USB devices */ -#define WACOM_PKGLEN_MAX 64 +#define WACOM_PKGLEN_MAX 68 #define WACOM_NAME_MAX 64 @@ -29,6 +29,7 @@ #define WACOM_PKGLEN_WIRELESS 32 #define WACOM_PKGLEN_MTOUCH 62 #define WACOM_PKGLEN_MTTPC 40 +#define WACOM_PKGLEN_DTUS 68 /* wacom data size per MT contact */ #define WACOM_BYTES_PER_MT_PACKET 11 @@ -47,13 +48,17 @@ #define WACOM_REPORT_INTUOSWRITE 6 #define WACOM_REPORT_INTUOSPAD 12 #define WACOM_REPORT_INTUOS5PAD 3 +#define WACOM_REPORT_DTUSPAD 21 #define WACOM_REPORT_TPC1FG 6 #define WACOM_REPORT_TPC2FG 13 #define WACOM_REPORT_TPCMT 13 #define WACOM_REPORT_TPCHID 15 #define WACOM_REPORT_TPCST 16 +#define WACOM_REPORT_DTUS 17 #define WACOM_REPORT_TPC1FGE 18 #define WACOM_REPORT_24HDT 1 +#define WACOM_REPORT_WL 128 +#define WACOM_REPORT_USB 192 /* device quirks */ #define WACOM_QUIRK_MULTI_INPUT 0x0001 @@ -68,6 +73,7 @@ PTU, PL, DTU, + DTUS, INTUOS, INTUOS3S, INTUOS3, @@ -81,6 +87,7 @@ INTUOSPS, INTUOSPM, INTUOSPL, + INTUOSHT, WACOM_21UX2, WACOM_22HD, DTK, @@ -129,6 +136,10 @@ struct wacom_shared { bool stylus_in_proximity; bool touch_down; + /* for wireless device to access USB interfaces */ + unsigned touch_max; + int type; + struct input_dev *touch_input; }; struct wacom_wac { --- linux-3.13.0.orig/drivers/input/touchscreen/usbtouchscreen.c +++ linux-3.13.0/drivers/input/touchscreen/usbtouchscreen.c @@ -626,6 +626,9 @@ goto err_out; } + /* TSC-25 data sheet specifies a delay after the RESET command */ + msleep(150); + /* set coordinate output rate */ buf[0] = buf[1] = 0xFF; ret = usb_control_msg(dev, usb_rcvctrlpipe (dev, 0), --- linux-3.13.0.orig/drivers/iommu/amd_iommu.c +++ linux-3.13.0/drivers/iommu/amd_iommu.c @@ -1922,9 +1922,15 @@ pt = (u64 *)__pt; \ \ for (i = 0; i < 512; ++i) { \ + /* PTE present? */ \ if (!IOMMU_PTE_PRESENT(pt[i])) \ continue; \ \ + /* Large PTE? */ \ + if (PM_PTE_LEVEL(pt[i]) == 0 || \ + PM_PTE_LEVEL(pt[i]) == 7) \ + continue; \ + \ p = (unsigned long)IOMMU_PTE_PAGE(pt[i]); \ FN(p); \ } \ @@ -2146,8 +2152,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); } @@ -3227,14 +3233,16 @@ static void cleanup_domain(struct protection_domain *domain) { - struct iommu_dev_data *dev_data, *next; + struct iommu_dev_data *entry; unsigned long flags; write_lock_irqsave(&amd_iommu_devtable_lock, flags); - list_for_each_entry_safe(dev_data, next, &domain->dev_list, list) { - __detach_device(dev_data); - atomic_set(&dev_data->bind, 0); + while (!list_empty(&domain->dev_list)) { + entry = list_first_entry(&domain->dev_list, + struct iommu_dev_data, list); + __detach_device(entry); + atomic_set(&entry->bind, 0); } write_unlock_irqrestore(&amd_iommu_devtable_lock, flags); @@ -3999,7 +4007,7 @@ iommu_flush_dte(iommu, devid); if (devid != alias) { irq_lookup_table[alias] = table; - set_dte_irq_entry(devid, table); + set_dte_irq_entry(alias, table); iommu_flush_dte(iommu, alias); } --- linux-3.13.0.orig/drivers/iommu/amd_iommu_init.c +++ linux-3.13.0/drivers/iommu/amd_iommu_init.c @@ -227,6 +227,10 @@ static int amd_iommu_enable_interrupts(void); static int __init iommu_go_to_state(enum iommu_init_state state); +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) @@ -1183,8 +1187,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; @@ -2315,22 +2319,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); @@ -2354,3 +2351,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-3.13.0.orig/drivers/iommu/amd_iommu_types.h +++ linux-3.13.0/drivers/iommu/amd_iommu_types.h @@ -283,6 +283,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-3.13.0.orig/drivers/iommu/arm-smmu.c +++ linux-3.13.0/drivers/iommu/arm-smmu.c @@ -78,7 +78,6 @@ #define ARM_SMMU_PTE_CONT_SIZE (PAGE_SIZE * ARM_SMMU_PTE_CONT_ENTRIES) #define ARM_SMMU_PTE_CONT_MASK (~(ARM_SMMU_PTE_CONT_SIZE - 1)) -#define ARM_SMMU_PTE_HWTABLE_SIZE (PTRS_PER_PTE * sizeof(pte_t)) /* Stage-1 PTE */ #define ARM_SMMU_PTE_AP_UNPRIV (((pteval_t)1) << 6) @@ -190,6 +189,9 @@ #define ARM_SMMU_GR1_CBAR(n) (0x0 + ((n) << 2)) #define CBAR_VMID_SHIFT 0 #define CBAR_VMID_MASK 0xff +#define CBAR_S1_BPSHCFG_SHIFT 8 +#define CBAR_S1_BPSHCFG_MASK 3 +#define CBAR_S1_BPSHCFG_NSH 3 #define CBAR_S1_MEMATTR_SHIFT 12 #define CBAR_S1_MEMATTR_MASK 0xf #define CBAR_S1_MEMATTR_WB 0xf @@ -392,7 +394,7 @@ struct arm_smmu_cfg root_cfg; phys_addr_t output_mask; - struct mutex lock; + spinlock_t lock; }; static DEFINE_SPINLOCK(arm_smmu_devices_lock); @@ -631,6 +633,28 @@ return IRQ_HANDLED; } +static void arm_smmu_flush_pgtable(struct arm_smmu_device *smmu, void *addr, + size_t size) +{ + unsigned long offset = (unsigned long)addr & ~PAGE_MASK; + + + /* Ensure new page tables are visible to the hardware walker */ + if (smmu->features & ARM_SMMU_FEAT_COHERENT_WALK) { + dsb(); + } else { + /* + * If the SMMU can't walk tables in the CPU caches, treat them + * like non-coherent DMA since we need to flush the new entries + * all the way out to memory. There's no possibility of + * recursion here as the SMMU table walker will not be wired + * through another SMMU. + */ + dma_map_page(smmu->dev, virt_to_page(addr), offset, size, + DMA_TO_DEVICE); + } +} + static void arm_smmu_init_context_bank(struct arm_smmu_domain *smmu_domain) { u32 reg; @@ -649,11 +673,16 @@ if (smmu->version == 1) reg |= root_cfg->irptndx << CBAR_IRPTNDX_SHIFT; - /* Use the weakest memory type, so it is overridden by the pte */ - if (stage1) - reg |= (CBAR_S1_MEMATTR_WB << CBAR_S1_MEMATTR_SHIFT); - else + /* + * Use the weakest shareability/memory types, so they are + * overridden by the ttbcr/pte. + */ + if (stage1) { + reg |= (CBAR_S1_BPSHCFG_NSH << CBAR_S1_BPSHCFG_SHIFT) | + (CBAR_S1_MEMATTR_WB << CBAR_S1_MEMATTR_SHIFT); + } else { reg |= ARM_SMMU_CB_VMID(root_cfg) << CBAR_VMID_SHIFT; + } writel_relaxed(reg, gr1_base + ARM_SMMU_GR1_CBAR(root_cfg->cbndx)); if (smmu->version > 1) { @@ -714,6 +743,8 @@ } /* TTBR0 */ + arm_smmu_flush_pgtable(smmu, root_cfg->pgd, + PTRS_PER_PGD * sizeof(pgd_t)); reg = __pa(root_cfg->pgd); writel_relaxed(reg, cb_base + ARM_SMMU_CB_TTBR0_LO); reg = (phys_addr_t)__pa(root_cfg->pgd) >> 32; @@ -762,8 +793,11 @@ reg |= TTBCR_EAE | (TTBCR_SH_IS << TTBCR_SH0_SHIFT) | (TTBCR_RGN_WBWA << TTBCR_ORGN0_SHIFT) | - (TTBCR_RGN_WBWA << TTBCR_IRGN0_SHIFT) | - (TTBCR_SL0_LVL_1 << TTBCR_SL0_SHIFT); + (TTBCR_RGN_WBWA << TTBCR_IRGN0_SHIFT); + + if (!stage1) + reg |= (TTBCR_SL0_LVL_1 << TTBCR_SL0_SHIFT); + writel_relaxed(reg, cb_base + ARM_SMMU_CB_TTBCR); /* MAIR0 (stage-1 only) */ @@ -900,7 +934,7 @@ goto out_free_domain; smmu_domain->root_cfg.pgd = pgd; - mutex_init(&smmu_domain->lock); + spin_lock_init(&smmu_domain->lock); domain->priv = smmu_domain; return 0; @@ -912,7 +946,6 @@ static void arm_smmu_free_ptes(pmd_t *pmd) { pgtable_t table = pmd_pgtable(*pmd); - pgtable_page_dtor(table); __free_page(table); } @@ -1137,7 +1170,7 @@ * Sanity check the domain. We don't currently support domains * that cross between different SMMU chains. */ - mutex_lock(&smmu_domain->lock); + spin_lock(&smmu_domain->lock); if (!smmu_domain->leaf_smmu) { /* Now that we have a master, we can finalise the domain */ ret = arm_smmu_init_domain_context(domain, dev); @@ -1152,7 +1185,7 @@ dev_name(device_smmu->dev)); goto err_unlock; } - mutex_unlock(&smmu_domain->lock); + spin_unlock(&smmu_domain->lock); /* Looks ok, so add the device to the domain */ master = find_smmu_master(smmu_domain->leaf_smmu, dev->of_node); @@ -1162,7 +1195,7 @@ return arm_smmu_domain_add_master(smmu_domain, master); err_unlock: - mutex_unlock(&smmu_domain->lock); + spin_unlock(&smmu_domain->lock); return ret; } @@ -1176,23 +1209,6 @@ arm_smmu_domain_remove_master(smmu_domain, master); } -static void arm_smmu_flush_pgtable(struct arm_smmu_device *smmu, void *addr, - size_t size) -{ - unsigned long offset = (unsigned long)addr & ~PAGE_MASK; - - /* - * If the SMMU can't walk tables in the CPU caches, treat them - * like non-coherent DMA since we need to flush the new entries - * all the way out to memory. There's no possibility of recursion - * here as the SMMU table walker will not be wired through another - * SMMU. - */ - if (!(smmu->features & ARM_SMMU_FEAT_COHERENT_WALK)) - dma_map_page(smmu->dev, virt_to_page(addr), offset, size, - DMA_TO_DEVICE); -} - static bool arm_smmu_pte_is_contiguous_range(unsigned long addr, unsigned long end) { @@ -1209,16 +1225,11 @@ if (pmd_none(*pmd)) { /* Allocate a new set of tables */ - pgtable_t table = alloc_page(PGALLOC_GFP); + pgtable_t table = alloc_page(GFP_ATOMIC|__GFP_ZERO); if (!table) return -ENOMEM; - arm_smmu_flush_pgtable(smmu, page_address(table), - ARM_SMMU_PTE_HWTABLE_SIZE); - if (!pgtable_page_ctor(table)) { - __free_page(table); - return -ENOMEM; - } + arm_smmu_flush_pgtable(smmu, page_address(table), PAGE_SIZE); pmd_populate(NULL, pmd, table); arm_smmu_flush_pgtable(smmu, pmd, sizeof(*pmd)); } @@ -1314,9 +1325,15 @@ #ifndef __PAGETABLE_PMD_FOLDED if (pud_none(*pud)) { - pmd = pmd_alloc_one(NULL, addr); + pmd = (pmd_t *)get_zeroed_page(GFP_ATOMIC); if (!pmd) return -ENOMEM; + + arm_smmu_flush_pgtable(smmu, pmd, PAGE_SIZE); + pud_populate(NULL, pud, pmd); + arm_smmu_flush_pgtable(smmu, pud, sizeof(*pud)); + + pmd += pmd_index(addr); } else #endif pmd = pmd_offset(pud, addr); @@ -1325,8 +1342,6 @@ next = pmd_addr_end(addr, end); ret = arm_smmu_alloc_init_pte(smmu, pmd, addr, end, pfn, flags, stage); - pud_populate(NULL, pud, pmd); - arm_smmu_flush_pgtable(smmu, pud, sizeof(*pud)); phys += next - addr; } while (pmd++, addr = next, addr < end); @@ -1343,9 +1358,15 @@ #ifndef __PAGETABLE_PUD_FOLDED if (pgd_none(*pgd)) { - pud = pud_alloc_one(NULL, addr); + pud = (pud_t *)get_zeroed_page(GFP_ATOMIC); if (!pud) return -ENOMEM; + + arm_smmu_flush_pgtable(smmu, pud, PAGE_SIZE); + pgd_populate(NULL, pgd, pud); + arm_smmu_flush_pgtable(smmu, pgd, sizeof(*pgd)); + + pud += pud_index(addr); } else #endif pud = pud_offset(pgd, addr); @@ -1354,8 +1375,6 @@ next = pud_addr_end(addr, end); ret = arm_smmu_alloc_init_pmd(smmu, pud, addr, next, phys, flags, stage); - pgd_populate(NULL, pud, pgd); - arm_smmu_flush_pgtable(smmu, pgd, sizeof(*pgd)); phys += next - addr; } while (pud++, addr = next, addr < end); @@ -1394,7 +1413,7 @@ if (paddr & ~output_mask) return -ERANGE; - mutex_lock(&smmu_domain->lock); + spin_lock(&smmu_domain->lock); pgd += pgd_index(iova); end = iova + size; do { @@ -1410,11 +1429,7 @@ } while (pgd++, iova != end); out_unlock: - mutex_unlock(&smmu_domain->lock); - - /* Ensure new page tables are visible to the hardware walker */ - if (smmu->features & ARM_SMMU_FEAT_COHERENT_WALK) - dsb(); + spin_unlock(&smmu_domain->lock); return ret; } --- linux-3.13.0.orig/drivers/iommu/dmar.c +++ linux-3.13.0/drivers/iommu/dmar.c @@ -972,7 +972,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-3.13.0.orig/drivers/iommu/fsl_pamu_domain.c +++ linux-3.13.0/drivers/iommu/fsl_pamu_domain.c @@ -1050,7 +1050,7 @@ struct iommu_group *group = NULL; struct pci_dev *pdev; const u32 *prop; - int ret, len; + int ret = 0, len; /* * For platform devices we allocate a separate group for @@ -1073,7 +1073,13 @@ if (!group || IS_ERR(group)) return PTR_ERR(group); - ret = iommu_group_add_device(group, dev); + /* + * Check if device has already been added to an iommu group. + * Group could have already been created for a PCI device in + * the iommu_group_get_for_dev path. + */ + if (!dev->iommu_group) + ret = iommu_group_add_device(group, dev); iommu_group_put(group); return ret; --- linux-3.13.0.orig/drivers/iommu/intel-iommu.c +++ linux-3.13.0/drivers/iommu/intel-iommu.c @@ -917,7 +917,7 @@ /* If range covers entire pagetable, free it */ if (!(start_pfn > level_pfn || - last_pfn < level_pfn + level_size(level))) { + last_pfn < level_pfn + level_size(level) - 1)) { dma_clear_pte(pte); domain_flush_cache(domain, pte, sizeof(*pte)); free_pgtable_page(level_pte); @@ -1796,7 +1796,7 @@ struct dma_pte *first_pte = NULL, *pte = NULL; phys_addr_t uninitialized_var(pteval); int addr_width = agaw_to_width(domain->agaw) - VTD_PAGE_SHIFT; - unsigned long sg_res; + unsigned long sg_res = 0; unsigned int largepage_lvl = 0; unsigned long lvl_pages = 0; @@ -1807,10 +1807,8 @@ prot &= DMA_PTE_READ | DMA_PTE_WRITE | DMA_PTE_SNP; - if (sg) - sg_res = 0; - else { - sg_res = nr_pages + 1; + if (!sg) { + sg_res = nr_pages; pteval = ((phys_addr_t)phys_pfn << VTD_PAGE_SHIFT) | prot; } @@ -3573,37 +3571,37 @@ { int i; struct pci_bus *bus; + struct pci_dev *bridge = NULL; struct acpi_dmar_atsr *atsr; struct dmar_atsr_unit *atsru; dev = pci_physfn(dev); - - list_for_each_entry(atsru, &dmar_atsr_units, list) { - atsr = container_of(atsru->hdr, struct acpi_dmar_atsr, header); - if (atsr->segment == pci_domain_nr(dev->bus)) - goto found; - } - - return 0; - -found: for (bus = dev->bus; bus; bus = bus->parent) { - struct pci_dev *bridge = bus->self; - - if (!bridge || !pci_is_pcie(bridge) || + bridge = bus->self; + /* 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 (pci_pcie_type(bridge) == PCI_EXP_TYPE_ROOT_PORT) { - for (i = 0; i < atsru->devices_cnt; i++) - if (atsru->devices[i] == bridge) - return 1; + /* If we found the root port, look it up in the ATSR */ + if (pci_pcie_type(bridge) == PCI_EXP_TYPE_ROOT_PORT) break; - } } - if (atsru->include_all) - return 1; + list_for_each_entry_rcu(atsru, &dmar_atsr_units, list) { + atsr = container_of(atsru->hdr, struct acpi_dmar_atsr, header); + if (atsr->segment != pci_domain_nr(dev->bus)) + continue; + + for (i = 0; i < atsru->devices_cnt; i++) + if (atsru->devices[i] == bridge) + return 1; + + if (atsru->include_all) + return 1; + } return 0; } --- linux-3.13.0.orig/drivers/iommu/intel_irq_remapping.c +++ linux-3.13.0/drivers/iommu/intel_irq_remapping.c @@ -495,7 +495,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-3.13.0.orig/drivers/irqchip/irq-armada-370-xp.c +++ linux-3.13.0/drivers/irqchip/irq-armada-370-xp.c @@ -132,8 +132,7 @@ struct msi_desc *desc) { struct msi_msg msg; - irq_hw_number_t hwirq; - int virq; + int virq, hwirq; hwirq = armada_370_xp_alloc_msi(); if (hwirq < 0) @@ -159,8 +158,19 @@ unsigned int irq) { struct irq_data *d = irq_get_irq_data(irq); + unsigned long hwirq = d->hwirq; + irq_dispose_mapping(irq); - armada_370_xp_free_msi(d->hwirq); + armada_370_xp_free_msi(hwirq); +} + +static int armada_370_xp_check_msi_device(struct msi_chip *chip, struct pci_dev *dev, + int nvec, int type) +{ + /* We support MSI, but not MSI-X */ + if (type == PCI_CAP_ID_MSI) + return 0; + return -EINVAL; } static struct irq_chip armada_370_xp_msi_irq_chip = { @@ -201,6 +211,7 @@ msi_chip->setup_irq = armada_370_xp_setup_msi_irq; msi_chip->teardown_irq = armada_370_xp_teardown_msi_irq; + msi_chip->check_device = armada_370_xp_check_msi_device; msi_chip->of_node = node; armada_370_xp_msi_domain = @@ -381,7 +392,7 @@ ARMADA_370_XP_IN_DRBEL_CAUSE_OFFS) & PCI_MSI_DOORBELL_MASK; - writel(~PCI_MSI_DOORBELL_MASK, per_cpu_int_base + + writel(~msimask, per_cpu_int_base + ARMADA_370_XP_IN_DRBEL_CAUSE_OFFS); for (msinr = PCI_MSI_DOORBELL_START; @@ -407,7 +418,7 @@ ARMADA_370_XP_IN_DRBEL_CAUSE_OFFS) & IPI_DOORBELL_MASK; - writel(~IPI_DOORBELL_MASK, per_cpu_int_base + + writel(~ipimask, per_cpu_int_base + ARMADA_370_XP_IN_DRBEL_CAUSE_OFFS); /* Handle all pending doorbells */ --- linux-3.13.0.orig/drivers/irqchip/irq-gic.c +++ linux-3.13.0/drivers/irqchip/irq-gic.c @@ -42,6 +42,7 @@ #include #include +#include #include #include #include @@ -246,10 +247,14 @@ bool force) { void __iomem *reg = gic_dist_base(d) + GIC_DIST_TARGET + (gic_irq(d) & ~3); - unsigned int shift = (gic_irq(d) % 4) * 8; - unsigned int cpu = cpumask_any_and(mask_val, cpu_online_mask); + unsigned int cpu, shift = (gic_irq(d) % 4) * 8; u32 val, mask, bit; + if (!force) + cpu = cpumask_any_and(mask_val, cpu_online_mask); + else + cpu = cpumask_first(mask_val); + if (cpu >= NR_GIC_CPU_IF || cpu >= nr_cpu_ids) return -EINVAL; @@ -418,6 +423,7 @@ void __iomem *dist_base = gic_data_dist_base(gic); void __iomem *base = gic_data_cpu_base(gic); unsigned int cpu_mask, cpu = smp_processor_id(); + unsigned int ctrl_mask; int i; /* @@ -449,13 +455,29 @@ writel_relaxed(0xa0a0a0a0, dist_base + GIC_DIST_PRI + i * 4 / 4); writel_relaxed(0xf0, base + GIC_CPU_PRIMASK); - writel_relaxed(1, base + GIC_CPU_CTRL); + + ctrl_mask = readl(base + GIC_CPU_CTRL); + + /* Mask out the gic v2 bypass bits */ + ctrl_mask &= 0x1e0; + + /* Enable group 0 */ + ctrl_mask |= 0x1; + writel_relaxed(ctrl_mask, base + GIC_CPU_CTRL); } void gic_cpu_if_down(void) { + unsigned int ctrl_mask; void __iomem *cpu_base = gic_data_cpu_base(&gic_data[0]); - writel_relaxed(0, cpu_base + GIC_CPU_CTRL); + + ctrl_mask = readl(cpu_base + GIC_CPU_CTRL); + /* + * Disable grp enable bit, leave the bypass bits alone as changing + * them could leave the system unstable + */ + ctrl_mask &= 0x1e0; + writel_relaxed(ctrl_mask, cpu_base + GIC_CPU_CTRL); } #ifdef CONFIG_CPU_PM @@ -566,6 +588,7 @@ { int i; u32 *ptr; + unsigned int ctrl_mask; void __iomem *dist_base; void __iomem *cpu_base; @@ -590,7 +613,15 @@ writel_relaxed(0xa0a0a0a0, dist_base + GIC_DIST_PRI + i * 4); writel_relaxed(0xf0, cpu_base + GIC_CPU_PRIMASK); - writel_relaxed(1, cpu_base + GIC_CPU_CTRL); + + ctrl_mask = readl(cpu_base + GIC_CPU_CTRL); + + /* Mask out the gic v2 bypass bits */ + ctrl_mask &= 0x1e0; + + /* Enable group 0 */ + ctrl_mask |= 0x1; + writel_relaxed(ctrl_mask, cpu_base + GIC_CPU_CTRL); } static int gic_notifier(struct notifier_block *self, unsigned long cmd, void *v) @@ -899,7 +930,9 @@ } for_each_possible_cpu(cpu) { - unsigned long offset = percpu_offset * cpu_logical_map(cpu); + u32 mpidr = cpu_logical_map(cpu); + u32 core_id = MPIDR_AFFINITY_LEVEL(mpidr, 0); + unsigned long offset = percpu_offset * core_id; *per_cpu_ptr(gic->dist_base.percpu_base, cpu) = dist_base + offset; *per_cpu_ptr(gic->cpu_base.percpu_base, cpu) = cpu_base + offset; } @@ -1006,6 +1039,7 @@ } IRQCHIP_DECLARE(cortex_a15_gic, "arm,cortex-a15-gic", gic_of_init); IRQCHIP_DECLARE(cortex_a9_gic, "arm,cortex-a9-gic", gic_of_init); +IRQCHIP_DECLARE(cortex_a7_gic, "arm,cortex-a7-gic", gic_of_init); IRQCHIP_DECLARE(msm_8660_qgic, "qcom,msm-8660-qgic", gic_of_init); IRQCHIP_DECLARE(msm_qgic2, "qcom,msm-qgic2", gic_of_init); --- linux-3.13.0.orig/drivers/irqchip/irq-metag-ext.c +++ linux-3.13.0/drivers/irqchip/irq-metag-ext.c @@ -515,7 +515,7 @@ * one cpu (the interrupt code doesn't support it), so we just * pick the first cpu we find in 'cpumask'. */ - cpu = cpumask_any(cpumask); + cpu = cpumask_any_and(cpumask, cpu_online_mask); thread = cpu_2_hwthread_id[cpu]; metag_out32(TBI_TRIG_VEC(TBID_SIGNUM_TR2(thread)), vec_addr); --- linux-3.13.0.orig/drivers/irqchip/irq-metag.c +++ linux-3.13.0/drivers/irqchip/irq-metag.c @@ -201,7 +201,7 @@ * one cpu (the interrupt code doesn't support it), so we just * pick the first cpu we find in 'cpumask'. */ - cpu = cpumask_any(cpumask); + cpu = cpumask_any_and(cpumask, cpu_online_mask); thread = cpu_2_hwthread_id[cpu]; metag_out32(TBI_TRIG_VEC(TBID_SIGNUM_TR1(thread)), --- linux-3.13.0.orig/drivers/irqchip/irq-orion.c +++ linux-3.13.0/drivers/irqchip/irq-orion.c @@ -111,7 +111,8 @@ static void orion_bridge_irq_handler(unsigned int irq, struct irq_desc *desc) { struct irq_domain *d = irq_get_handler_data(irq); - struct irq_chip_generic *gc = irq_get_domain_generic_chip(d, irq); + + struct irq_chip_generic *gc = irq_get_domain_generic_chip(d, 0); u32 stat = readl_relaxed(gc->reg_base + ORION_BRIDGE_IRQ_CAUSE) & gc->mask_cache; @@ -123,6 +124,19 @@ } } +/* + * Bridge IRQ_CAUSE is asserted regardless of IRQ_MASK register. + * To avoid interrupt events on stale irqs, we clear them before unmask. + */ +static unsigned int orion_bridge_irq_startup(struct irq_data *d) +{ + struct irq_chip_type *ct = irq_data_get_chip_type(d); + + ct->chip.irq_ack(d); + ct->chip.irq_unmask(d); + return 0; +} + static int __init orion_bridge_irq_init(struct device_node *np, struct device_node *parent) { @@ -143,7 +157,7 @@ } ret = irq_alloc_domain_generic_chips(domain, nrirqs, 1, np->name, - handle_level_irq, clr, 0, IRQ_GC_INIT_MASK_CACHE); + handle_edge_irq, clr, 0, IRQ_GC_INIT_MASK_CACHE); if (ret) { pr_err("%s: unable to alloc irq domain gc\n", np->name); return ret; @@ -176,12 +190,14 @@ gc->chip_types[0].regs.ack = ORION_BRIDGE_IRQ_CAUSE; gc->chip_types[0].regs.mask = ORION_BRIDGE_IRQ_MASK; + gc->chip_types[0].chip.irq_startup = orion_bridge_irq_startup; gc->chip_types[0].chip.irq_ack = irq_gc_ack_clr_bit; gc->chip_types[0].chip.irq_mask = irq_gc_mask_clr_bit; gc->chip_types[0].chip.irq_unmask = irq_gc_mask_set_bit; - /* mask all interrupts */ + /* mask and clear all interrupts */ writel(0, gc->reg_base + ORION_BRIDGE_IRQ_MASK); + writel(0, gc->reg_base + ORION_BRIDGE_IRQ_CAUSE); irq_set_handler_data(irq, domain); irq_set_chained_handler(irq, orion_bridge_irq_handler); --- linux-3.13.0.orig/drivers/irqchip/irq-versatile-fpga.c +++ linux-3.13.0/drivers/irqchip/irq-versatile-fpga.c @@ -193,7 +193,12 @@ if (of_property_read_u32(node, "valid-mask", &valid_mask)) valid_mask = 0; +#ifdef CONFIG_ARCH_VERSATILE + fpga_irq_init(base, node->name, IRQ_SIC_START, -1, valid_mask, + node); +#else fpga_irq_init(base, node->name, 0, -1, valid_mask, node); +#endif writel(clear_mask, base + IRQ_ENABLE_CLEAR); writel(clear_mask, base + FIQ_ENABLE_CLEAR); --- linux-3.13.0.orig/drivers/irqchip/spear-shirq.c +++ linux-3.13.0/drivers/irqchip/spear-shirq.c @@ -125,7 +125,7 @@ }; static struct spear_shirq spear320_shirq_ras3 = { - .irq_nr = 3, + .irq_nr = 7, .irq_bit_off = 0, .invalid_irq = 1, .regs = { --- linux-3.13.0.orig/drivers/isdn/gigaset/ser-gigaset.c +++ linux-3.13.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; } /* @@ -524,9 +528,18 @@ cs->hw.ser->tty = tty; atomic_set(&cs->hw.ser->refcnt, 1); init_completion(&cs->hw.ser->dead_cmp); - tty->disc_data = cs; + /* Set the amount of data we're willing to receive per call + * from the hardware driver to half of the input buffer size + * to leave some reserve. + * Note: We don't do flow control towards the hardware driver. + * If more data is received than will fit into the input buffer, + * it will be dropped and an error will be logged. This should + * never happen as the device is slow and the buffer size ample. + */ + tty->receive_room = RBUFSIZE/2; + /* OK.. Initialization of the datastructures and the HW is done.. Now * startup system and notify the LL that we are ready to run */ --- linux-3.13.0.orig/drivers/isdn/hardware/mISDN/mISDNipac.c +++ linux-3.13.0/drivers/isdn/hardware/mISDN/mISDNipac.c @@ -1164,7 +1164,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); @@ -1176,7 +1176,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); @@ -1194,7 +1194,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) @@ -1205,7 +1205,6 @@ mISDNisac_irq(isac, istad); if (0 == (ista | istad)) break; - cnt--; } } if (cnt > maxloop) /* only for ISAC/HSCX without PCI IRQ test */ --- linux-3.13.0.orig/drivers/isdn/hisax/config.c +++ linux-3.13.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-3.13.0.orig/drivers/isdn/hisax/hfc_pci.c +++ linux-3.13.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-3.13.0.orig/drivers/isdn/hisax/hfc_sx.c +++ linux-3.13.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-3.13.0.orig/drivers/isdn/hisax/q931.c +++ linux-3.13.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-3.13.0.orig/drivers/isdn/i4l/isdn_ppp.c +++ linux-3.13.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; @@ -568,10 +574,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-3.13.0.orig/drivers/isdn/isdnloop/isdnloop.c +++ linux-3.13.0/drivers/isdn/isdnloop/isdnloop.c @@ -518,9 +518,9 @@ static void isdnloop_fake_err(isdnloop_card *card) { - char buf[60]; + char buf[64]; - sprintf(buf, "E%s", card->omsg); + snprintf(buf, sizeof(buf), "E%s", card->omsg); isdnloop_fake(card, buf, -1); isdnloop_fake(card, "NAK", -1); } @@ -903,6 +903,8 @@ case 7: /* 0x;EAZ */ p += 3; + if (strlen(p) >= sizeof(card->eazlist[0])) + break; strcpy(card->eazlist[ch - 1], p); break; case 8: @@ -1070,6 +1072,12 @@ return -EBUSY; if (copy_from_user((char *) &sdef, (char *) sdefp, sizeof(sdef))) return -EFAULT; + + for (i = 0; i < 3; i++) { + if (!memchr(sdef.num[i], 0, sizeof(sdef.num[i]))) + return -EINVAL; + } + spin_lock_irqsave(&card->isdnloop_lock, flags); switch (sdef.ptype) { case ISDN_PTYPE_EURO: @@ -1127,7 +1135,7 @@ { ulong a; int i; - char cbuf[60]; + char cbuf[80]; isdn_ctrl cmd; isdnloop_cdef cdef; @@ -1192,7 +1200,6 @@ break; if ((c->arg & 255) < ISDNLOOP_BCH) { char *p; - char dial[50]; char dcode[4]; a = c->arg; @@ -1204,10 +1211,10 @@ } else /* Normal Dial */ strcpy(dcode, "CAL"); - strcpy(dial, p); - sprintf(cbuf, "%02d;D%s_R%s,%02d,%02d,%s\n", (int) (a + 1), - dcode, dial, c->parm.setup.si1, - c->parm.setup.si2, c->parm.setup.eazmsn); + snprintf(cbuf, sizeof(cbuf), + "%02d;D%s_R%s,%02d,%02d,%s\n", (int) (a + 1), + dcode, p, c->parm.setup.si1, + c->parm.setup.si2, c->parm.setup.eazmsn); i = isdnloop_writecmd(cbuf, strlen(cbuf), 0, card); } break; --- linux-3.13.0.orig/drivers/leds/dell-led.c +++ linux-3.13.0/drivers/leds/dell-led.c @@ -15,12 +15,15 @@ #include #include #include +#include +#include MODULE_AUTHOR("Louis Davis/Jim Dailey"); MODULE_DESCRIPTION("Dell LED Control Driver"); MODULE_LICENSE("GPL"); #define DELL_LED_BIOS_GUID "F6E4FE6E-909D-47cb-8BAB-C9F6F2F8D396" +#define DELL_APP_GUID "A80593CE-A997-11DA-B012-B622A1EF5492" MODULE_ALIAS("wmi:" DELL_LED_BIOS_GUID); /* Error Result Codes: */ @@ -39,6 +42,149 @@ #define CMD_LED_OFF 17 #define CMD_LED_BLINK 18 +struct app_wmi_args { + u16 class; + u16 selector; + u32 arg1; + u32 arg2; + u32 arg3; + u32 arg4; + u32 res1; + u32 res2; + u32 res3; + u32 res4; + char dummy[92]; +}; + +#define GLOBAL_MIC_MUTE_ENABLE 0x364 +#define GLOBAL_MIC_MUTE_DISABLE 0x365 + +struct dell_bios_data_token { + u16 tokenid; + u16 location; + u16 value; +}; + +struct __attribute__ ((__packed__)) dell_bios_calling_interface { + struct dmi_header header; + u16 cmd_io_addr; + u8 cmd_io_code; + u32 supported_cmds; + struct dell_bios_data_token damap[]; +}; + +static struct dell_bios_data_token dell_mic_tokens[2]; + +static int dell_wmi_perform_query(struct app_wmi_args *args) +{ + struct app_wmi_args *bios_return; + union acpi_object *obj; + struct acpi_buffer input; + struct acpi_buffer output = { ACPI_ALLOCATE_BUFFER, NULL }; + acpi_status status; + u32 rc = -EINVAL; + + input.length = 128; + input.pointer = args; + + status = wmi_evaluate_method(DELL_APP_GUID, 0, 1, &input, &output); + if (!ACPI_SUCCESS(status)) + goto err_out0; + + obj = output.pointer; + if (!obj) + goto err_out0; + + if (obj->type != ACPI_TYPE_BUFFER) + goto err_out1; + + bios_return = (struct app_wmi_args *)obj->buffer.pointer; + rc = bios_return->res1; + if (rc) + goto err_out1; + + memcpy(args, bios_return, sizeof(struct app_wmi_args)); + rc = 0; + + err_out1: + kfree(obj); + err_out0: + return rc; +} + +static void __init find_micmute_tokens(const struct dmi_header *dm, void *dummy) +{ + struct dell_bios_calling_interface *calling_interface; + struct dell_bios_data_token *token; + int token_size = sizeof(struct dell_bios_data_token); + int i = 0; + + if (dm->type == 0xda && dm->length > 17) { + calling_interface = container_of(dm, + struct dell_bios_calling_interface, header); + + token = &calling_interface->damap[i]; + while (token->tokenid != 0xffff) { + if (token->tokenid == GLOBAL_MIC_MUTE_DISABLE) + memcpy(&dell_mic_tokens[0], token, token_size); + else if (token->tokenid == GLOBAL_MIC_MUTE_ENABLE) + memcpy(&dell_mic_tokens[1], token, token_size); + + i++; + token = &calling_interface->damap[i]; + } + } +} + +static int dell_micmute_led_set(int state) +{ + struct app_wmi_args args; + struct dell_bios_data_token *token; + + if (!wmi_has_guid(DELL_APP_GUID)) + return -ENODEV; + + if (state == 0 || state == 1) + token = &dell_mic_tokens[state]; + else + return -EINVAL; + + memset(&args, 0, sizeof(struct app_wmi_args)); + + args.class = 1; + args.arg1 = token->location; + args.arg2 = token->value; + + dell_wmi_perform_query(&args); + + return state; +} + +int dell_app_wmi_led_set(int whichled, int on) +{ + int state = 0; + + switch (whichled) { + case DELL_LED_MICMUTE: + state = dell_micmute_led_set(on); + break; + default: + pr_warn("led type %x is not supported\n", whichled); + break; + } + + return state; +} +EXPORT_SYMBOL_GPL(dell_app_wmi_led_set); + +static int __init dell_micmute_led_init(void) +{ + memset(dell_mic_tokens, 0, sizeof(struct dell_bios_data_token) * 2); + dmi_walk(find_micmute_tokens, NULL); + + return 0; +} + struct bios_args { unsigned char length; unsigned char result_code; @@ -181,21 +327,32 @@ { int error = 0; - if (!wmi_has_guid(DELL_LED_BIOS_GUID)) + if (!wmi_has_guid(DELL_LED_BIOS_GUID) && !wmi_has_guid(DELL_APP_GUID)) return -ENODEV; - error = led_off(); - if (error != 0) - return -ENODEV; + if (wmi_has_guid(DELL_APP_GUID)) + error = dell_micmute_led_init(); - return led_classdev_register(NULL, &dell_led); + if (wmi_has_guid(DELL_LED_BIOS_GUID)) { + error = led_off(); + if (error != 0) + return -ENODEV; + + error = led_classdev_register(NULL, &dell_led); + } + + return error; } static void __exit dell_led_exit(void) { - led_classdev_unregister(&dell_led); + int error = 0; - led_off(); + if (wmi_has_guid(DELL_LED_BIOS_GUID)) { + error = led_off(); + if (error == 0) + led_classdev_unregister(&dell_led); + } } module_init(dell_led_init); --- linux-3.13.0.orig/drivers/leds/led-class.c +++ linux-3.13.0/drivers/leds/led-class.c @@ -178,6 +178,7 @@ } EXPORT_SYMBOL_GPL(led_classdev_resume); +#ifdef CONFIG_PM_SLEEP static int led_suspend(struct device *dev) { struct led_classdev *led_cdev = dev_get_drvdata(dev); @@ -197,11 +198,9 @@ return 0; } +#endif -static const struct dev_pm_ops leds_class_dev_pm_ops = { - .suspend = led_suspend, - .resume = led_resume, -}; +static SIMPLE_DEV_PM_OPS(leds_class_dev_pm_ops, led_suspend, led_resume); /** * led_classdev_register - register a new object of led_classdev class. --- linux-3.13.0.orig/drivers/leds/leds-gpio.c +++ linux-3.13.0/drivers/leds/leds-gpio.c @@ -224,6 +224,8 @@ { .compatible = "gpio-leds", }, {}, }; + +MODULE_DEVICE_TABLE(of, of_gpio_leds_match); #else /* CONFIG_OF_GPIO */ static struct gpio_leds_priv *gpio_leds_create_of(struct platform_device *pdev) { --- linux-3.13.0.orig/drivers/lguest/core.c +++ linux-3.13.0/drivers/lguest/core.c @@ -176,7 +176,7 @@ bool lguest_address_ok(const struct lguest *lg, unsigned long addr, unsigned long len) { - return (addr+len) / PAGE_SIZE < lg->pfn_limit && (addr+len >= addr); + return addr+len <= lg->pfn_limit * PAGE_SIZE && (addr+len >= addr); } /* --- linux-3.13.0.orig/drivers/macintosh/windfarm_core.c +++ linux-3.13.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-3.13.0.orig/drivers/md/Kconfig +++ linux-3.13.0/drivers/md/Kconfig @@ -176,8 +176,12 @@ source "drivers/md/bcache/Kconfig" +config BLK_DEV_DM_BUILTIN + boolean + config BLK_DEV_DM tristate "Device mapper support" + select BLK_DEV_DM_BUILTIN ---help--- Device-mapper is a low level volume manager. It works by allowing people to specify mappings for ranges of logical sectors. Various @@ -348,7 +352,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-3.13.0.orig/drivers/md/Makefile +++ linux-3.13.0/drivers/md/Makefile @@ -32,6 +32,7 @@ obj-$(CONFIG_BCACHE) += bcache/ obj-$(CONFIG_BLK_DEV_MD) += md-mod.o obj-$(CONFIG_BLK_DEV_DM) += dm-mod.o +obj-$(CONFIG_BLK_DEV_DM_BUILTIN) += dm-builtin.o obj-$(CONFIG_DM_BUFIO) += dm-bufio.o obj-$(CONFIG_DM_BIO_PRISON) += dm-bio-prison.o obj-$(CONFIG_DM_CRYPT) += dm-crypt.o --- linux-3.13.0.orig/drivers/md/bcache/bcache.h +++ linux-3.13.0/drivers/md/bcache/bcache.h @@ -209,7 +209,9 @@ #define GC_MARK_RECLAIMABLE 0 #define GC_MARK_DIRTY 1 #define GC_MARK_METADATA 2 -BITMASK(GC_SECTORS_USED, struct bucket, gc_mark, 2, 13); +#define GC_SECTORS_USED_SIZE 13 +#define MAX_GC_SECTORS_USED (~(~0ULL << GC_SECTORS_USED_SIZE)) +BITMASK(GC_SECTORS_USED, struct bucket, gc_mark, 2, GC_SECTORS_USED_SIZE); BITMASK(GC_MOVE, struct bucket, gc_mark, 15, 1); #include "journal.h" --- linux-3.13.0.orig/drivers/md/bcache/bset.c +++ linux-3.13.0/drivers/md/bcache/bset.c @@ -955,7 +955,7 @@ *i = iter->data[--iter->used]; } -static void btree_sort_fixup(struct btree_iter *iter) +static struct bkey *btree_sort_fixup(struct btree_iter *iter, struct bkey *tmp) { while (iter->used > 1) { struct btree_iter_set *top = iter->data, *i = top + 1; @@ -983,9 +983,22 @@ } else { /* can't happen because of comparison func */ BUG_ON(!bkey_cmp(&START_KEY(top->k), &START_KEY(i->k))); - bch_cut_back(&START_KEY(i->k), top->k); + + if (bkey_cmp(i->k, top->k) < 0) { + bkey_copy(tmp, top->k); + + bch_cut_back(&START_KEY(i->k), tmp); + bch_cut_front(i->k, top->k); + heap_sift(iter, 0, btree_iter_cmp); + + return tmp; + } else { + bch_cut_back(&START_KEY(i->k), top->k); + } } } + + return NULL; } static void btree_mergesort(struct btree *b, struct bset *out, @@ -993,15 +1006,20 @@ bool fixup, bool remove_stale) { struct bkey *k, *last = NULL; + BKEY_PADDED(k) tmp; bool (*bad)(struct btree *, const struct bkey *) = remove_stale ? bch_ptr_bad : bch_ptr_invalid; while (!btree_iter_end(iter)) { if (fixup && !b->level) - btree_sort_fixup(iter); + k = btree_sort_fixup(iter, &tmp.k); + else + k = NULL; + + if (!k) + k = bch_btree_iter_next(iter); - k = bch_btree_iter_next(iter); if (bad(b, k)) continue; --- linux-3.13.0.orig/drivers/md/bcache/btree.c +++ linux-3.13.0/drivers/md/bcache/btree.c @@ -1163,7 +1163,7 @@ /* guard against overflow */ SET_GC_SECTORS_USED(g, min_t(unsigned, GC_SECTORS_USED(g) + KEY_SIZE(k), - (1 << 14) - 1)); + MAX_GC_SECTORS_USED)); BUG_ON(!GC_SECTORS_USED(g)); } @@ -1632,6 +1632,7 @@ do { ret = btree_root(gc_root, c, &op, &writes, &stats); closure_sync(&writes); + cond_resched(); if (ret && ret != -EAGAIN) pr_warn("gc failed!"); @@ -2213,8 +2214,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-3.13.0.orig/drivers/md/bcache/super.c +++ linux-3.13.0/drivers/md/bcache/super.c @@ -687,6 +687,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) @@ -861,8 +863,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) { @@ -1023,6 +1028,9 @@ */ atomic_set(&dc->count, 1); + if (bch_cached_dev_writeback_start(dc)) + return -ENOMEM; + if (BDEV_STATE(&dc->sb) == BDEV_STATE_DIRTY) { bch_sectors_dirty_init(dc); atomic_set(&dc->has_dirty, 1); @@ -1052,7 +1060,8 @@ struct cached_dev *dc = container_of(cl, struct cached_dev, disk.cl); cancel_delayed_work_sync(&dc->writeback_rate_update); - kthread_stop(dc->writeback_thread); + if (!IS_ERR_OR_NULL(dc->writeback_thread)) + kthread_stop(dc->writeback_thread); mutex_lock(&bch_register_lock); @@ -1356,6 +1365,9 @@ struct btree *b; unsigned i; + if (!c) + closure_return(cl); + bch_cache_accounting_destroy(&c->accounting); kobject_put(&c->internal); @@ -1841,7 +1853,10 @@ if (kobject_add(&ca->kobj, &part_to_dev(bdev->bd_part)->kobj, "bcache")) goto err; + mutex_lock(&bch_register_lock); err = register_cache_set(ca); + mutex_unlock(&bch_register_lock); + if (err) goto err; @@ -1903,8 +1918,6 @@ if (!try_module_get(THIS_MODULE)) return -EBUSY; - mutex_lock(&bch_register_lock); - if (!(path = kstrndup(buffer, size, GFP_KERNEL)) || !(sb = kmalloc(sizeof(struct cache_sb), GFP_KERNEL))) goto err; @@ -1916,10 +1929,14 @@ if (IS_ERR(bdev)) { if (bdev == ERR_PTR(-EBUSY)) { bdev = lookup_bdev(strim(path)); + mutex_lock(&bch_register_lock); if (!IS_ERR(bdev) && bch_is_open(bdev)) err = "device already registered"; else err = "device busy"; + mutex_unlock(&bch_register_lock); + if (attr == &ksysfs_register_quiet) + goto out; } goto err; } @@ -1937,7 +1954,9 @@ if (!dc) goto err_close; + mutex_lock(&bch_register_lock); register_bdev(sb, sb_page, bdev, dc); + mutex_unlock(&bch_register_lock); } else { struct cache *ca = kzalloc(sizeof(*ca), GFP_KERNEL); if (!ca) @@ -1950,15 +1969,13 @@ put_page(sb_page); kfree(sb); kfree(path); - mutex_unlock(&bch_register_lock); module_put(THIS_MODULE); return ret; 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; } @@ -2052,8 +2069,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-3.13.0.orig/drivers/md/bcache/writeback.c +++ linux-3.13.0/drivers/md/bcache/writeback.c @@ -239,7 +239,7 @@ if (KEY_START(&w->key) != dc->last_read || jiffies_to_msecs(delay) > 50) while (!kthread_should_stop() && delay) - delay = schedule_timeout_uninterruptible(delay); + delay = schedule_timeout_interruptible(delay); dc->last_read = KEY_OFFSET(&w->key); @@ -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) @@ -436,7 +459,7 @@ while (delay && !kthread_should_stop() && !test_bit(BCACHE_DEV_DETACHING, &dc->disk.flags)) - delay = schedule_timeout_uninterruptible(delay); + delay = schedule_timeout_interruptible(delay); } } @@ -478,7 +501,7 @@ dc->disk.sectors_dirty_last = bcache_dev_sectors_dirty(&dc->disk); } -int bch_cached_dev_writeback_init(struct cached_dev *dc) +void bch_cached_dev_writeback_init(struct cached_dev *dc) { sema_init(&dc->in_flight, 64); init_rwsem(&dc->writeback_lock); @@ -494,14 +517,20 @@ dc->writeback_rate_d_term = 30; dc->writeback_rate_p_term_inverse = 6000; + INIT_DELAYED_WORK(&dc->writeback_rate_update, update_writeback_rate); +} + +int bch_cached_dev_writeback_start(struct cached_dev *dc) +{ dc->writeback_thread = kthread_create(bch_writeback_thread, dc, "bcache_writeback"); if (IS_ERR(dc->writeback_thread)) return PTR_ERR(dc->writeback_thread); - INIT_DELAYED_WORK(&dc->writeback_rate_update, update_writeback_rate); schedule_delayed_work(&dc->writeback_rate_update, dc->writeback_rate_update_seconds * HZ); + bch_writeback_queue(dc); + return 0; } --- linux-3.13.0.orig/drivers/md/bcache/writeback.h +++ linux-3.13.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) @@ -85,6 +86,7 @@ void bcache_dev_sectors_dirty_add(struct cache_set *, unsigned, uint64_t, int); void bch_sectors_dirty_init(struct cached_dev *dc); -int bch_cached_dev_writeback_init(struct cached_dev *); +void bch_cached_dev_writeback_init(struct cached_dev *); +int bch_cached_dev_writeback_start(struct cached_dev *); #endif --- linux-3.13.0.orig/drivers/md/dm-bufio.c +++ linux-3.13.0/drivers/md/dm-bufio.c @@ -463,6 +463,7 @@ c->n_buffers[dirty]++; b->list_mode = dirty; list_move(&b->lru_list, &c->lru[dirty]); + b->last_accessed = jiffies; } /*---------------------------------------------------------------- @@ -529,6 +530,19 @@ end_io(&b->bio, r); } +static void inline_endio(struct bio *bio, int error) +{ + bio_end_io_t *end_fn = bio->bi_private; + + /* + * Reset the bio to free any attached resources + * (e.g. bio integrity profiles). + */ + bio_reset(bio); + + end_fn(bio, error); +} + static void use_inline_bio(struct dm_buffer *b, int rw, sector_t block, bio_end_io_t *end_io) { @@ -540,7 +554,12 @@ b->bio.bi_max_vecs = DM_BUFIO_INLINE_VECS; b->bio.bi_sector = block << b->c->sectors_per_block_bits; b->bio.bi_bdev = b->c->bdev; - b->bio.bi_end_io = end_io; + b->bio.bi_end_io = inline_endio; + /* + * Use of .bi_private isn't a problem here because + * the dm_buffer's inline bio is local to bufio. + */ + b->bio.bi_private = end_io; /* * We assume that if len >= PAGE_SIZE ptr is page-aligned. @@ -1417,9 +1436,9 @@ /* * Test if the buffer is unused and too old, and commit it. - * At if noio is set, we must not do any I/O because we hold - * dm_bufio_clients_lock and we would risk deadlock if the I/O gets rerouted to - * different bufio client. + * And if GFP_NOFS is used, we must not do any I/O because we hold + * dm_bufio_clients_lock and we would risk deadlock if the I/O gets + * rerouted to different bufio client. */ static int __cleanup_old_buffer(struct dm_buffer *b, gfp_t gfp, unsigned long max_jiffies) @@ -1427,7 +1446,7 @@ if (jiffies - b->last_accessed < max_jiffies) return 0; - if (!(gfp & __GFP_IO)) { + if (!(gfp & __GFP_FS)) { if (test_bit(B_READING, &b->state) || test_bit(B_WRITING, &b->state) || test_bit(B_DIRTY, &b->state)) @@ -1455,9 +1474,9 @@ list_for_each_entry_safe_reverse(b, tmp, &c->lru[l], lru_list) { freed += __cleanup_old_buffer(b, gfp_mask, 0); if (!--nr_to_scan) - break; + return freed; + dm_bufio_cond_resched(); } - dm_bufio_cond_resched(); } return freed; } @@ -1469,7 +1488,7 @@ unsigned long freed; c = container_of(shrink, struct dm_bufio_client, shrinker); - if (sc->gfp_mask & __GFP_IO) + if (sc->gfp_mask & __GFP_FS) dm_bufio_lock(c); else if (!dm_bufio_trylock(c)) return SHRINK_STOP; @@ -1486,7 +1505,7 @@ unsigned long count; c = container_of(shrink, struct dm_bufio_client, shrinker); - if (sc->gfp_mask & __GFP_IO) + if (sc->gfp_mask & __GFP_FS) dm_bufio_lock(c); else if (!dm_bufio_trylock(c)) return 0; @@ -1511,7 +1530,7 @@ BUG_ON(block_size < 1 << SECTOR_SHIFT || (block_size & (block_size - 1))); - c = kmalloc(sizeof(*c), GFP_KERNEL); + c = kzalloc(sizeof(*c), GFP_KERNEL); if (!c) { r = -ENOMEM; goto bad_client; --- linux-3.13.0.orig/drivers/md/dm-builtin.c +++ linux-3.13.0/drivers/md/dm-builtin.c @@ -0,0 +1,48 @@ +#include "dm.h" + +/* + * The kobject release method must not be placed in the module itself, + * otherwise we are subject to module unload races. + * + * The release method is called when the last reference to the kobject is + * dropped. It may be called by any other kernel code that drops the last + * reference. + * + * The release method suffers from module unload race. We may prevent the + * module from being unloaded at the start of the release method (using + * increased module reference count or synchronizing against the release + * method), however there is no way to prevent the module from being + * unloaded at the end of the release method. + * + * If this code were placed in the dm module, the following race may + * happen: + * 1. Some other process takes a reference to dm kobject + * 2. The user issues ioctl function to unload the dm device + * 3. dm_sysfs_exit calls kobject_put, however the object is not released + * because of the other reference taken at step 1 + * 4. dm_sysfs_exit waits on the completion + * 5. The other process that took the reference in step 1 drops it, + * dm_kobject_release is called from this process + * 6. dm_kobject_release calls complete() + * 7. a reschedule happens before dm_kobject_release returns + * 8. dm_sysfs_exit continues, the dm device is unloaded, module reference + * count is decremented + * 9. The user unloads the dm module + * 10. The other process that was rescheduled in step 7 continues to run, + * it is now executing code in unloaded module, so it crashes + * + * Note that if the process that takes the foreign reference to dm kobject + * has a low priority and the system is sufficiently loaded with + * higher-priority processes that prevent the low-priority process from + * being scheduled long enough, this bug may really happen. + * + * In order to fix this module unload race, we place the release method + * into a helper code that is compiled directly into the kernel. + */ + +void dm_kobject_release(struct kobject *kobj) +{ + complete(dm_get_completion_from_kobject(kobj)); +} + +EXPORT_SYMBOL(dm_kobject_release); --- linux-3.13.0.orig/drivers/md/dm-cache-metadata.c +++ linux-3.13.0/drivers/md/dm-cache-metadata.c @@ -94,6 +94,9 @@ } __packed; struct dm_cache_metadata { + atomic_t ref_count; + struct list_head list; + struct block_device *bdev; struct dm_block_manager *bm; struct dm_space_map *metadata_sm; @@ -120,6 +123,12 @@ unsigned policy_version[CACHE_POLICY_VERSION_SIZE]; size_t policy_hint_size; struct dm_cache_statistics stats; + + /* + * Reading the space map root can fail, so we read it into this + * buffer before the superblock is locked and updated. + */ + __u8 metadata_space_map_root[SPACE_MAP_ROOT_SIZE]; }; /*------------------------------------------------------------------- @@ -260,11 +269,31 @@ } } +static int __save_sm_root(struct dm_cache_metadata *cmd) +{ + int r; + size_t metadata_len; + + r = dm_sm_root_size(cmd->metadata_sm, &metadata_len); + if (r < 0) + return r; + + return dm_sm_copy_root(cmd->metadata_sm, &cmd->metadata_space_map_root, + metadata_len); +} + +static void __copy_sm_root(struct dm_cache_metadata *cmd, + struct cache_disk_superblock *disk_super) +{ + memcpy(&disk_super->metadata_space_map_root, + &cmd->metadata_space_map_root, + sizeof(cmd->metadata_space_map_root)); +} + static int __write_initial_superblock(struct dm_cache_metadata *cmd) { int r; struct dm_block *sblock; - size_t metadata_len; struct cache_disk_superblock *disk_super; sector_t bdev_size = i_size_read(cmd->bdev->bd_inode) >> SECTOR_SHIFT; @@ -272,12 +301,16 @@ if (bdev_size > DM_CACHE_METADATA_MAX_SECTORS) bdev_size = DM_CACHE_METADATA_MAX_SECTORS; - r = dm_sm_root_size(cmd->metadata_sm, &metadata_len); + r = dm_tm_pre_commit(cmd->tm); if (r < 0) return r; - r = dm_tm_pre_commit(cmd->tm); - if (r < 0) + /* + * dm_sm_copy_root() can fail. So we need to do it before we start + * updating the superblock. + */ + r = __save_sm_root(cmd); + if (r) return r; r = superblock_lock_zero(cmd, &sblock); @@ -293,10 +326,7 @@ memset(disk_super->policy_version, 0, sizeof(disk_super->policy_version)); disk_super->policy_hint_size = 0; - r = dm_sm_copy_root(cmd->metadata_sm, &disk_super->metadata_space_map_root, - metadata_len); - if (r < 0) - goto bad_locked; + __copy_sm_root(cmd, disk_super); disk_super->mapping_root = cpu_to_le64(cmd->root); disk_super->hint_root = cpu_to_le64(cmd->hint_root); @@ -313,10 +343,6 @@ disk_super->write_misses = cpu_to_le32(0); return dm_tm_commit(cmd->tm, sblock); - -bad_locked: - dm_bm_unlock(sblock); - return r; } static int __format_metadata(struct dm_cache_metadata *cmd) @@ -402,6 +428,15 @@ disk_super = dm_block_data(sblock); + /* Verify the data block size hasn't changed */ + if (le32_to_cpu(disk_super->data_block_size) != cmd->data_block_size) { + DMERR("changing the data block size (from %u to %llu) is not supported", + le32_to_cpu(disk_super->data_block_size), + (unsigned long long)cmd->data_block_size); + r = -EINVAL; + goto bad; + } + r = __check_incompat_features(disk_super, cmd); if (r < 0) goto bad; @@ -530,8 +565,9 @@ disk_super = dm_block_data(sblock); update_flags(disk_super, mutator); read_superblock_fields(cmd, disk_super); + dm_bm_unlock(sblock); - return dm_bm_flush_and_unlock(cmd->bm, sblock); + return dm_bm_flush(cmd->bm); } static int __begin_transaction(struct dm_cache_metadata *cmd) @@ -559,7 +595,6 @@ flags_mutator mutator) { int r; - size_t metadata_len; struct cache_disk_superblock *disk_super; struct dm_block *sblock; @@ -577,8 +612,8 @@ if (r < 0) return r; - r = dm_sm_root_size(cmd->metadata_sm, &metadata_len); - if (r < 0) + r = __save_sm_root(cmd); + if (r) return r; r = superblock_lock(cmd, &sblock); @@ -605,13 +640,7 @@ disk_super->read_misses = cpu_to_le32(cmd->stats.read_misses); disk_super->write_hits = cpu_to_le32(cmd->stats.write_hits); disk_super->write_misses = cpu_to_le32(cmd->stats.write_misses); - - r = dm_sm_copy_root(cmd->metadata_sm, &disk_super->metadata_space_map_root, - metadata_len); - if (r < 0) { - dm_bm_unlock(sblock); - return r; - } + __copy_sm_root(cmd, disk_super); return dm_tm_commit(cmd->tm, sblock); } @@ -643,10 +672,10 @@ /*----------------------------------------------------------------*/ -struct dm_cache_metadata *dm_cache_metadata_open(struct block_device *bdev, - sector_t data_block_size, - bool may_format_device, - size_t policy_hint_size) +static struct dm_cache_metadata *metadata_open(struct block_device *bdev, + sector_t data_block_size, + bool may_format_device, + size_t policy_hint_size) { int r; struct dm_cache_metadata *cmd; @@ -654,9 +683,10 @@ cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); if (!cmd) { DMERR("could not allocate metadata struct"); - return NULL; + return ERR_PTR(-ENOMEM); } + atomic_set(&cmd->ref_count, 1); init_rwsem(&cmd->root_lock); cmd->bdev = bdev; cmd->data_block_size = data_block_size; @@ -679,10 +709,96 @@ return cmd; } +/* + * We keep a little list of ref counted metadata objects to prevent two + * different target instances creating separate bufio instances. This is + * an issue if a table is reloaded before the suspend. + */ +static DEFINE_MUTEX(table_lock); +static LIST_HEAD(table); + +static struct dm_cache_metadata *lookup(struct block_device *bdev) +{ + struct dm_cache_metadata *cmd; + + list_for_each_entry(cmd, &table, list) + if (cmd->bdev == bdev) { + atomic_inc(&cmd->ref_count); + return cmd; + } + + return NULL; +} + +static struct dm_cache_metadata *lookup_or_open(struct block_device *bdev, + sector_t data_block_size, + bool may_format_device, + size_t policy_hint_size) +{ + struct dm_cache_metadata *cmd, *cmd2; + + mutex_lock(&table_lock); + cmd = lookup(bdev); + mutex_unlock(&table_lock); + + if (cmd) + return cmd; + + cmd = metadata_open(bdev, data_block_size, may_format_device, policy_hint_size); + if (!IS_ERR(cmd)) { + mutex_lock(&table_lock); + cmd2 = lookup(bdev); + if (cmd2) { + mutex_unlock(&table_lock); + __destroy_persistent_data_objects(cmd); + kfree(cmd); + return cmd2; + } + list_add(&cmd->list, &table); + mutex_unlock(&table_lock); + } + + return cmd; +} + +static bool same_params(struct dm_cache_metadata *cmd, sector_t data_block_size) +{ + if (cmd->data_block_size != data_block_size) { + DMERR("data_block_size (%llu) different from that in metadata (%llu)\n", + (unsigned long long) data_block_size, + (unsigned long long) cmd->data_block_size); + return false; + } + + return true; +} + +struct dm_cache_metadata *dm_cache_metadata_open(struct block_device *bdev, + sector_t data_block_size, + bool may_format_device, + size_t policy_hint_size) +{ + struct dm_cache_metadata *cmd = lookup_or_open(bdev, data_block_size, + may_format_device, policy_hint_size); + + if (!IS_ERR(cmd) && !same_params(cmd, data_block_size)) { + dm_cache_metadata_close(cmd); + return ERR_PTR(-EINVAL); + } + + return cmd; +} + void dm_cache_metadata_close(struct dm_cache_metadata *cmd) { - __destroy_persistent_data_objects(cmd); - kfree(cmd); + if (atomic_dec_and_test(&cmd->ref_count)) { + mutex_lock(&table_lock); + list_del(&cmd->list); + mutex_unlock(&table_lock); + + __destroy_persistent_data_objects(cmd); + kfree(cmd); + } } /* @@ -1228,22 +1344,12 @@ return 0; } -int dm_cache_begin_hints(struct dm_cache_metadata *cmd, struct dm_cache_policy *policy) +static int save_hint(void *context, dm_cblock_t cblock, dm_oblock_t oblock, uint32_t hint) { + struct dm_cache_metadata *cmd = context; + __le32 value = cpu_to_le32(hint); int r; - down_write(&cmd->root_lock); - r = begin_hints(cmd, policy); - up_write(&cmd->root_lock); - - return r; -} - -static int save_hint(struct dm_cache_metadata *cmd, dm_cblock_t cblock, - uint32_t hint) -{ - int r; - __le32 value = cpu_to_le32(hint); __dm_bless_for_disk(&value); r = dm_array_set_value(&cmd->hint_info, cmd->hint_root, @@ -1253,16 +1359,25 @@ return r; } -int dm_cache_save_hint(struct dm_cache_metadata *cmd, dm_cblock_t cblock, - uint32_t hint) +static int write_hints(struct dm_cache_metadata *cmd, struct dm_cache_policy *policy) { int r; - if (!hints_array_initialized(cmd)) - return 0; + r = begin_hints(cmd, policy); + if (r) { + DMERR("begin_hints failed"); + return r; + } + + return policy_walk_mappings(policy, save_hint, cmd); +} + +int dm_cache_write_hints(struct dm_cache_metadata *cmd, struct dm_cache_policy *policy) +{ + int r; down_write(&cmd->root_lock); - r = save_hint(cmd, cblock, hint); + r = write_hints(cmd, policy); up_write(&cmd->root_lock); return r; --- linux-3.13.0.orig/drivers/md/dm-cache-metadata.h +++ linux-3.13.0/drivers/md/dm-cache-metadata.h @@ -128,14 +128,7 @@ * rather than querying the policy for each cblock, we let it walk its data * structures and fill in the hints in whatever order it wishes. */ - -int dm_cache_begin_hints(struct dm_cache_metadata *cmd, struct dm_cache_policy *p); - -/* - * requests hints for every cblock and stores in the metadata device. - */ -int dm_cache_save_hint(struct dm_cache_metadata *cmd, - dm_cblock_t cblock, uint32_t hint); +int dm_cache_write_hints(struct dm_cache_metadata *cmd, struct dm_cache_policy *p); /* * Query method. Are all the blocks in the cache clean? --- linux-3.13.0.orig/drivers/md/dm-cache-policy-cleaner.c +++ linux-3.13.0/drivers/md/dm-cache-policy-cleaner.c @@ -434,7 +434,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-3.13.0.orig/drivers/md/dm-cache-policy-mq.c +++ linux-3.13.0/drivers/md/dm-cache-policy-mq.c @@ -869,7 +869,7 @@ { struct mq_policy *mq = to_mq_policy(p); - kfree(mq->table); + vfree(mq->table); epool_exit(&mq->cache_pool); epool_exit(&mq->pre_cache_pool); kfree(mq); @@ -1224,7 +1224,7 @@ mq->nr_buckets = next_power(from_cblock(cache_size) / 2, 16); mq->hash_bits = ffs(mq->nr_buckets) - 1; - mq->table = kzalloc(sizeof(*mq->table) * mq->nr_buckets, GFP_KERNEL); + mq->table = vzalloc(sizeof(*mq->table) * mq->nr_buckets); if (!mq->table) goto bad_alloc_table; --- linux-3.13.0.orig/drivers/md/dm-cache-target.c +++ linux-3.13.0/drivers/md/dm-cache-target.c @@ -216,7 +216,13 @@ struct list_head need_commit_migrations; sector_t migration_threshold; wait_queue_head_t migration_wait; - atomic_t nr_migrations; + atomic_t nr_allocated_migrations; + + /* + * The number of in flight migrations that are performing + * background io. eg, promotion, writeback. + */ + atomic_t nr_io_migrations; wait_queue_head_t quiescing_wait; atomic_t quiescing; @@ -225,7 +231,7 @@ /* * cache_size entries, dirty if set */ - dm_cblock_t nr_dirty; + atomic_t nr_dirty; unsigned long *dirty_bitset; /* @@ -233,7 +239,7 @@ */ dm_dblock_t discard_nr_blocks; unsigned long *discard_bitset; - uint32_t discard_block_size; /* a power of 2 times sectors per block */ + uint32_t discard_block_size; /* * Rather than reconstructing the table line for the status we just @@ -253,7 +259,6 @@ struct dm_deferred_set *all_io_ds; mempool_t *migration_pool; - struct dm_cache_migration *next_migration; struct dm_cache_policy *policy; unsigned policy_nr_args; @@ -283,6 +288,7 @@ bool tick:1; unsigned req_nr:2; struct dm_deferred_entry *all_io_entry; + struct dm_hook_info hook_info; /* * writethrough fields. These MUST remain at the end of this @@ -291,7 +297,6 @@ */ struct cache *cache; dm_cblock_t cblock; - struct dm_hook_info hook_info; struct dm_bio_details bio_details; }; @@ -344,10 +349,31 @@ dm_bio_prison_free_cell(cache->prison, cell); } +static struct dm_cache_migration *alloc_migration(struct cache *cache) +{ + struct dm_cache_migration *mg; + + mg = mempool_alloc(cache->migration_pool, GFP_NOWAIT); + if (mg) { + mg->cache = cache; + atomic_inc(&mg->cache->nr_allocated_migrations); + } + + return mg; +} + +static void free_migration(struct dm_cache_migration *mg) +{ + if (atomic_dec_and_test(&mg->cache->nr_allocated_migrations)) + wake_up(&mg->cache->migration_wait); + + mempool_free(mg, mg->cache->migration_pool); +} + static int prealloc_data_structs(struct cache *cache, struct prealloc *p) { if (!p->mg) { - p->mg = mempool_alloc(cache->migration_pool, GFP_NOWAIT); + p->mg = alloc_migration(cache); if (!p->mg) return -ENOMEM; } @@ -376,7 +402,7 @@ free_prison_cell(cache, p->cell1); if (p->mg) - mempool_free(p->mg, cache->migration_pool); + free_migration(p->mg); } static struct dm_cache_migration *prealloc_get_migration(struct prealloc *p) @@ -487,7 +513,7 @@ static void set_dirty(struct cache *cache, dm_oblock_t oblock, dm_cblock_t cblock) { if (!test_and_set_bit(from_cblock(cblock), cache->dirty_bitset)) { - cache->nr_dirty = to_cblock(from_cblock(cache->nr_dirty) + 1); + atomic_inc(&cache->nr_dirty); policy_set_dirty(cache->policy, oblock); } } @@ -496,8 +522,7 @@ { if (test_and_clear_bit(from_cblock(cblock), cache->dirty_bitset)) { policy_clear_dirty(cache->policy, oblock); - cache->nr_dirty = to_cblock(from_cblock(cache->nr_dirty) - 1); - if (!from_cblock(cache->nr_dirty)) + if (atomic_dec_return(&cache->nr_dirty) == 0) dm_table_event(cache->ti->table); } } @@ -804,24 +829,14 @@ * Migration covers moving data from the origin device to the cache, or * vice versa. *--------------------------------------------------------------*/ -static void free_migration(struct dm_cache_migration *mg) +static void inc_io_migrations(struct cache *cache) { - mempool_free(mg, mg->cache->migration_pool); + atomic_inc(&cache->nr_io_migrations); } -static void inc_nr_migrations(struct cache *cache) +static void dec_io_migrations(struct cache *cache) { - atomic_inc(&cache->nr_migrations); -} - -static void dec_nr_migrations(struct cache *cache) -{ - atomic_dec(&cache->nr_migrations); - - /* - * Wake the worker in case we're suspending the target. - */ - wake_up(&cache->migration_wait); + atomic_dec(&cache->nr_io_migrations); } static void __cell_defer(struct cache *cache, struct dm_bio_prison_cell *cell, @@ -844,11 +859,10 @@ wake_worker(cache); } -static void cleanup_migration(struct dm_cache_migration *mg) +static void free_io_migration(struct dm_cache_migration *mg) { - struct cache *cache = mg->cache; + dec_io_migrations(mg->cache); free_migration(mg); - dec_nr_migrations(cache); } static void migration_failure(struct dm_cache_migration *mg) @@ -873,7 +887,7 @@ cell_defer(cache, mg->new_ocell, true); } - cleanup_migration(mg); + free_io_migration(mg); } static void migration_success_pre_commit(struct dm_cache_migration *mg) @@ -882,9 +896,9 @@ struct cache *cache = mg->cache; if (mg->writeback) { - cell_defer(cache, mg->old_ocell, false); clear_dirty(cache, mg->old_oblock, mg->cblock); - cleanup_migration(mg); + cell_defer(cache, mg->old_ocell, false); + free_io_migration(mg); return; } else if (mg->demote) { @@ -894,14 +908,14 @@ mg->old_oblock); if (mg->promote) cell_defer(cache, mg->new_ocell, true); - cleanup_migration(mg); + free_io_migration(mg); return; } } else { if (dm_cache_insert_mapping(cache->cmd, mg->cblock, mg->new_oblock)) { DMWARN_LIMIT("promotion failed; couldn't update on disk metadata"); policy_remove_mapping(cache->policy, mg->new_oblock); - cleanup_migration(mg); + free_io_migration(mg); return; } } @@ -934,18 +948,22 @@ } else { if (mg->invalidate) policy_remove_mapping(cache->policy, mg->old_oblock); - cleanup_migration(mg); + free_io_migration(mg); } } else { - if (mg->requeue_holder) + if (mg->requeue_holder) { + clear_dirty(cache, mg->new_oblock, mg->cblock); cell_defer(cache, mg->new_ocell, true); - else { + } else { + /* + * The block was promoted via an overwrite, so it's dirty. + */ + set_dirty(cache, mg->new_oblock, mg->cblock); bio_endio(mg->new_ocell->holder, 0); cell_defer(cache, mg->new_ocell, false); } - clear_dirty(cache, mg->new_oblock, mg->cblock); - cleanup_migration(mg); + free_io_migration(mg); } } @@ -970,12 +988,13 @@ int r; struct dm_io_region o_region, c_region; struct cache *cache = mg->cache; + sector_t cblock = from_cblock(mg->cblock); o_region.bdev = cache->origin_dev->bdev; o_region.count = cache->sectors_per_block; c_region.bdev = cache->cache_dev->bdev; - c_region.sector = from_cblock(mg->cblock) * cache->sectors_per_block; + c_region.sector = cblock * cache->sectors_per_block; c_region.count = cache->sectors_per_block; if (mg->writeback || mg->demote) { @@ -1049,7 +1068,8 @@ avoid = is_discarded_oblock(cache, mg->new_oblock); - if (!avoid && bio_writes_complete_block(cache, bio)) { + if (writeback_mode(&cache->features) && + !avoid && bio_writes_complete_block(cache, bio)) { issue_overwrite(mg, bio); return; } @@ -1153,7 +1173,7 @@ mg->new_ocell = cell; mg->start_jiffies = jiffies; - inc_nr_migrations(cache); + inc_io_migrations(cache); quiesce_migration(mg); } @@ -1176,7 +1196,7 @@ mg->new_ocell = NULL; mg->start_jiffies = jiffies; - inc_nr_migrations(cache); + inc_io_migrations(cache); quiesce_migration(mg); } @@ -1202,7 +1222,7 @@ mg->new_ocell = new_ocell; mg->start_jiffies = jiffies; - inc_nr_migrations(cache); + inc_io_migrations(cache); quiesce_migration(mg); } @@ -1229,7 +1249,7 @@ mg->new_ocell = NULL; mg->start_jiffies = jiffies; - inc_nr_migrations(cache); + inc_io_migrations(cache); quiesce_migration(mg); } @@ -1290,7 +1310,7 @@ static bool spare_migration_bandwidth(struct cache *cache) { - sector_t current_volume = (atomic_read(&cache->nr_migrations) + 1) * + sector_t current_volume = (atomic_read(&cache->nr_io_migrations) + 1) * cache->sectors_per_block; return current_volume < cache->migration_threshold; } @@ -1645,7 +1665,7 @@ static void wait_for_migrations(struct cache *cache) { - wait_event(cache->migration_wait, !atomic_read(&cache->nr_migrations)); + wait_event(cache->migration_wait, !atomic_read(&cache->nr_allocated_migrations)); } static void stop_worker(struct cache *cache) @@ -1756,9 +1776,6 @@ { unsigned i; - if (cache->next_migration) - mempool_free(cache->next_migration, cache->migration_pool); - if (cache->migration_pool) mempool_destroy(cache->migration_pool); @@ -2159,35 +2176,6 @@ return 0; } -/* - * We want the discard block size to be a power of two, at least the size - * of the cache block size, and have no more than 2^14 discard blocks - * across the origin. - */ -#define MAX_DISCARD_BLOCKS (1 << 14) - -static bool too_many_discard_blocks(sector_t discard_block_size, - sector_t origin_size) -{ - (void) sector_div(origin_size, discard_block_size); - - return origin_size > MAX_DISCARD_BLOCKS; -} - -static sector_t calculate_discard_block_size(sector_t cache_block_size, - sector_t origin_size) -{ - sector_t discard_block_size; - - discard_block_size = roundup_pow_of_two(cache_block_size); - - if (origin_size) - while (too_many_discard_blocks(discard_block_size, origin_size)) - discard_block_size *= 2; - - return discard_block_size; -} - #define DEFAULT_MIGRATION_THRESHOLD 2048 static int cache_create(struct cache_args *ca, struct cache **result) @@ -2212,6 +2200,8 @@ ti->num_discard_bios = 1; ti->discards_supported = true; ti->discard_zeroes_data_unsupported = true; + /* Discard bios must be split on a block boundary */ + ti->split_discard_bios = true; cache->features = ca->features; ti->per_bio_data_size = get_per_bio_data_size(cache); @@ -2293,7 +2283,8 @@ INIT_LIST_HEAD(&cache->quiesced_migrations); INIT_LIST_HEAD(&cache->completed_migrations); INIT_LIST_HEAD(&cache->need_commit_migrations); - atomic_set(&cache->nr_migrations, 0); + atomic_set(&cache->nr_allocated_migrations, 0); + atomic_set(&cache->nr_io_migrations, 0); init_waitqueue_head(&cache->migration_wait); init_waitqueue_head(&cache->quiescing_wait); @@ -2301,7 +2292,7 @@ atomic_set(&cache->quiescing_ack, 0); r = -ENOMEM; - cache->nr_dirty = 0; + atomic_set(&cache->nr_dirty, 0); cache->dirty_bitset = alloc_bitset(from_cblock(cache->cache_size)); if (!cache->dirty_bitset) { *error = "could not allocate dirty bitset"; @@ -2309,9 +2300,7 @@ } clear_bitset(cache->dirty_bitset, from_cblock(cache->cache_size)); - cache->discard_block_size = - calculate_discard_block_size(cache->sectors_per_block, - cache->origin_sectors); + cache->discard_block_size = cache->sectors_per_block; cache->discard_nr_blocks = oblock_to_dblock(cache, cache->origin_blocks); cache->discard_bitset = alloc_bitset(from_dblock(cache->discard_nr_blocks)); if (!cache->discard_bitset) { @@ -2355,8 +2344,6 @@ goto bad; } - cache->next_migration = NULL; - cache->need_tick_bio = true; cache->sized = false; cache->invalidate = false; @@ -2453,20 +2440,18 @@ bool discarded_block; struct dm_bio_prison_cell *cell; struct policy_result lookup_result; - struct per_bio_data *pb; + struct per_bio_data *pb = init_per_bio_data(bio, pb_data_size); - if (from_oblock(block) > from_oblock(cache->origin_blocks)) { + if (unlikely(from_oblock(block) >= from_oblock(cache->origin_blocks))) { /* * This can only occur if the io goes to a partial block at * the end of the origin device. We don't cache these. * Just remap to the origin and carry on. */ - remap_to_origin_clear_discard(cache, bio, block); + remap_to_origin(cache, bio); return DM_MAPIO_REMAPPED; } - pb = init_per_bio_data(bio, pb_data_size); - if (bio->bi_rw & (REQ_FLUSH | REQ_FUA | REQ_DISCARD)) { defer_bio(cache, bio); return DM_MAPIO_SUBMITTED; @@ -2527,6 +2512,7 @@ } else { inc_hit_counter(cache, bio); + pb->all_io_entry = dm_deferred_entry_inc(cache->all_io_ds); if (bio_data_dir(bio) == WRITE && writethrough_mode(&cache->features) && !is_dirty(cache, lookup_result.cblock)) @@ -2621,30 +2607,6 @@ return 0; } -static int save_hint(void *context, dm_cblock_t cblock, dm_oblock_t oblock, - uint32_t hint) -{ - struct cache *cache = context; - return dm_cache_save_hint(cache->cmd, cblock, hint); -} - -static int write_hints(struct cache *cache) -{ - int r; - - r = dm_cache_begin_hints(cache->cmd, cache->policy); - if (r) { - DMERR("dm_cache_begin_hints failed"); - return r; - } - - r = policy_walk_mappings(cache->policy, save_hint, cache); - if (r) - DMERR("policy_walk_mappings failed"); - - return r; -} - /* * returns true on success */ @@ -2662,7 +2624,7 @@ save_stats(cache); - r3 = write_hints(cache); + r3 = dm_cache_write_hints(cache->cmd, cache->policy); if (r3) DMERR("could not write hints"); @@ -2869,7 +2831,7 @@ residency = policy_residency(cache->policy); - DMEMIT("%llu/%llu %u %u %u %u %u %u %llu %u ", + DMEMIT("%llu/%llu %u %u %u %u %u %u %llu %lu ", (unsigned long long)(nr_blocks_metadata - nr_free_blocks_metadata), (unsigned long long)nr_blocks_metadata, (unsigned) atomic_read(&cache->stats.read_hit), @@ -2879,7 +2841,7 @@ (unsigned) atomic_read(&cache->stats.demotion), (unsigned) atomic_read(&cache->stats.promotion), (unsigned long long) from_cblock(residency), - cache->nr_dirty); + (unsigned long) atomic_read(&cache->nr_dirty)); if (writethrough_mode(&cache->features)) DMEMIT("1 writethrough "); @@ -3104,7 +3066,7 @@ /* * FIXME: these limits may be incompatible with the cache device */ - limits->max_discard_sectors = cache->discard_block_size * 1024; + limits->max_discard_sectors = cache->discard_block_size; limits->discard_granularity = cache->discard_block_size << SECTOR_SHIFT; } --- linux-3.13.0.orig/drivers/md/dm-crypt.c +++ linux-3.13.0/drivers/md/dm-crypt.c @@ -19,7 +19,6 @@ #include #include #include -#include #include #include #include @@ -45,6 +44,7 @@ unsigned int idx_out; sector_t cc_sector; atomic_t cc_pending; + struct ablkcipher_request *req; }; /* @@ -113,15 +113,7 @@ enum flags { DM_CRYPT_SUSPENDED, DM_CRYPT_KEY_VALID }; /* - * Duplicated per-CPU state for cipher. - */ -struct crypt_cpu { - struct ablkcipher_request *req; -}; - -/* - * The fields in here must be read only after initialization, - * changing state should be in crypt_cpu. + * The fields in here must be read only after initialization. */ struct crypt_config { struct dm_dev *dev; @@ -152,12 +144,6 @@ sector_t iv_offset; unsigned int iv_size; - /* - * Duplicated per cpu state. Access through - * per_cpu_ptr() only. - */ - struct crypt_cpu __percpu *cpu; - /* ESSIV: struct crypto_cipher *essiv_tfm */ void *iv_private; struct crypto_ablkcipher **tfms; @@ -194,11 +180,6 @@ static void kcryptd_queue_crypt(struct dm_crypt_io *io); static u8 *iv_of_dmreq(struct crypt_config *cc, struct dm_crypt_request *dmreq); -static struct crypt_cpu *this_crypt_config(struct crypt_config *cc) -{ - return this_cpu_ptr(cc->cpu); -} - /* * Use this to access cipher attributes that are the same for each CPU. */ @@ -730,7 +711,7 @@ for (i = 0; i < ((1 << SECTOR_SHIFT) / 8); i++) crypto_xor(data + i * 8, buf, 8); out: - memset(buf, 0, sizeof(buf)); + memzero_explicit(buf, sizeof(buf)); return r; } @@ -914,16 +895,15 @@ static void crypt_alloc_req(struct crypt_config *cc, struct convert_context *ctx) { - struct crypt_cpu *this_cc = this_crypt_config(cc); unsigned key_index = ctx->cc_sector & (cc->tfms_count - 1); - if (!this_cc->req) - this_cc->req = mempool_alloc(cc->req_pool, GFP_NOIO); + if (!ctx->req) + ctx->req = mempool_alloc(cc->req_pool, GFP_NOIO); - ablkcipher_request_set_tfm(this_cc->req, cc->tfms[key_index]); - ablkcipher_request_set_callback(this_cc->req, + ablkcipher_request_set_tfm(ctx->req, cc->tfms[key_index]); + ablkcipher_request_set_callback(ctx->req, CRYPTO_TFM_REQ_MAY_BACKLOG | CRYPTO_TFM_REQ_MAY_SLEEP, - kcryptd_async_done, dmreq_of_req(cc, this_cc->req)); + kcryptd_async_done, dmreq_of_req(cc, ctx->req)); } /* @@ -932,7 +912,6 @@ static int crypt_convert(struct crypt_config *cc, struct convert_context *ctx) { - struct crypt_cpu *this_cc = this_crypt_config(cc); int r; atomic_set(&ctx->cc_pending, 1); @@ -944,7 +923,7 @@ atomic_inc(&ctx->cc_pending); - r = crypt_convert_block(cc, ctx, this_cc->req); + r = crypt_convert_block(cc, ctx, ctx->req); switch (r) { /* async */ @@ -953,7 +932,7 @@ reinit_completion(&ctx->restart); /* fall through*/ case -EINPROGRESS: - this_cc->req = NULL; + ctx->req = NULL; ctx->cc_sector++; continue; @@ -1052,6 +1031,7 @@ io->sector = sector; io->error = 0; io->base_io = NULL; + io->ctx.req = NULL; atomic_set(&io->io_pending, 0); return io; @@ -1077,6 +1057,8 @@ if (!atomic_dec_and_test(&io->io_pending)) return; + if (io->ctx.req) + mempool_free(io->ctx.req, cc->req_pool); mempool_free(io, cc->io_pool); if (likely(!base_io)) @@ -1505,8 +1487,6 @@ static void crypt_dtr(struct dm_target *ti) { struct crypt_config *cc = ti->private; - struct crypt_cpu *cpu_cc; - int cpu; ti->private = NULL; @@ -1518,13 +1498,6 @@ if (cc->crypt_queue) destroy_workqueue(cc->crypt_queue); - if (cc->cpu) - for_each_possible_cpu(cpu) { - cpu_cc = per_cpu_ptr(cc->cpu, cpu); - if (cpu_cc->req) - mempool_free(cpu_cc->req, cc->req_pool); - } - crypt_free_tfms(cc); if (cc->bs) @@ -1543,9 +1516,6 @@ if (cc->dev) dm_put_device(ti, cc->dev); - if (cc->cpu) - free_percpu(cc->cpu); - kzfree(cc->cipher); kzfree(cc->cipher_string); @@ -1601,13 +1571,6 @@ if (tmp) DMWARN("Ignoring unexpected additional cipher options"); - cc->cpu = __alloc_percpu(sizeof(*(cc->cpu)), - __alignof__(struct crypt_cpu)); - if (!cc->cpu) { - ti->error = "Cannot allocate per cpu state"; - goto bad_mem; - } - /* * For compatibility with the original dm-crypt mapping format, if * only the cipher name is supplied, use cbc-plain. @@ -2003,6 +1966,12 @@ return fn(ti, cc->dev, cc->start, ti->len, data); } +static void crypt_io_hints(struct dm_target *ti, + struct queue_limits *limits) +{ + limits->max_write_same_sectors = 0; +} + static struct target_type crypt_target = { .name = "crypt", .version = {1, 13, 0}, @@ -2017,6 +1986,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-3.13.0.orig/drivers/md/dm-exception-store.h +++ linux-3.13.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-3.13.0.orig/drivers/md/dm-io.c +++ linux-3.13.0/drivers/md/dm-io.c @@ -10,6 +10,7 @@ #include #include +#include #include #include #include @@ -32,7 +33,7 @@ struct io { unsigned long error_bits; atomic_t count; - struct task_struct *sleeper; + struct completion *wait; struct dm_io_client *client; io_notify_fn callback; void *context; @@ -121,8 +122,8 @@ invalidate_kernel_vmap_range(io->vma_invalidate_address, io->vma_invalidate_size); - if (io->sleeper) - wake_up_process(io->sleeper); + if (io->wait) + complete(io->wait); else { unsigned long r = io->error_bits; @@ -288,6 +289,19 @@ struct request_queue *q = bdev_get_queue(where->bdev); unsigned short logical_block_size = queue_logical_block_size(q); sector_t num_sectors; + unsigned int uninitialized_var(special_cmd_max_sectors); + + /* + * Reject unsupported discard and write same requests. + */ + if (rw & REQ_DISCARD) + special_cmd_max_sectors = q->limits.max_discard_sectors; + else if (rw & REQ_WRITE_SAME) + special_cmd_max_sectors = q->limits.max_write_same_sectors; + if ((rw & (REQ_DISCARD | REQ_WRITE_SAME)) && special_cmd_max_sectors == 0) { + dec_count(io, region, -EOPNOTSUPP); + return; + } /* * where->count may be zero if rw holds a flush and we need to @@ -310,7 +324,7 @@ store_io_and_region_in_bio(bio, io, region); if (rw & REQ_DISCARD) { - num_sectors = min_t(sector_t, q->limits.max_discard_sectors, remaining); + num_sectors = min_t(sector_t, special_cmd_max_sectors, remaining); bio->bi_size = num_sectors << SECTOR_SHIFT; remaining -= num_sectors; } else if (rw & REQ_WRITE_SAME) { @@ -319,7 +333,7 @@ */ dp->get_page(dp, &page, &len, &offset); bio_add_page(bio, page, logical_block_size, offset); - num_sectors = min_t(sector_t, q->limits.max_write_same_sectors, remaining); + num_sectors = min_t(sector_t, special_cmd_max_sectors, remaining); bio->bi_size = num_sectors << SECTOR_SHIFT; offset = 0; @@ -385,6 +399,7 @@ */ volatile char io_[sizeof(struct io) + __alignof__(struct io) - 1]; struct io *io = (struct io *)PTR_ALIGN(&io_, __alignof__(struct io)); + DECLARE_COMPLETION_ONSTACK(wait); if (num_regions > 1 && (rw & RW_MASK) != WRITE) { WARN_ON(1); @@ -393,7 +408,7 @@ io->error_bits = 0; atomic_set(&io->count, 1); /* see dispatch_io() */ - io->sleeper = current; + io->wait = &wait; io->client = client; io->vma_invalidate_address = dp->vma_invalidate_address; @@ -401,15 +416,7 @@ dispatch_io(rw, num_regions, where, dp, io, 1); - while (1) { - set_current_state(TASK_UNINTERRUPTIBLE); - - if (!atomic_read(&io->count)) - break; - - io_schedule(); - } - set_current_state(TASK_RUNNING); + wait_for_completion_io(&wait); if (error_bits) *error_bits = io->error_bits; @@ -432,7 +439,7 @@ io = mempool_alloc(client->pool, GFP_NOIO); io->error_bits = 0; atomic_set(&io->count, 1); /* see dispatch_io() */ - io->sleeper = NULL; + io->wait = NULL; io->client = client; io->callback = fn; io->context = context; --- linux-3.13.0.orig/drivers/md/dm-log-userspace-transfer.c +++ linux-3.13.0/drivers/md/dm-log-userspace-transfer.c @@ -272,7 +272,7 @@ r = cn_add_callback(&ulog_cn_id, "dmlogusr", cn_ulog_callback); if (r) { - cn_del_callback(&ulog_cn_id); + kfree(prealloced_cn_msg); return r; } --- linux-3.13.0.orig/drivers/md/dm-mpath.c +++ linux-3.13.0/drivers/md/dm-mpath.c @@ -1629,7 +1629,7 @@ 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)) + if (r == -ENOTCONN) queue_work(kmultipathd, &m->process_queued_ios); return r ? : __blkdev_driver_ioctl(bdev, mode, cmd, arg); --- linux-3.13.0.orig/drivers/md/dm-raid.c +++ linux-3.13.0/drivers/md/dm-raid.c @@ -325,8 +325,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 { @@ -785,8 +784,7 @@ __le32 layout; __le32 stripe_sectors; - __u8 pad[452]; /* Round struct to 512 bytes. */ - /* Always set to 0 when writing. */ + /* Remainder of a logical block is zero-filled when writing (see super_sync()). */ } __packed; static int read_disk_sb(struct md_rdev *rdev, int size) @@ -823,7 +821,7 @@ test_bit(Faulty, &(rs->dev[i].rdev.flags))) failed_devices |= (1ULL << i); - memset(sb, 0, sizeof(*sb)); + memset(sb + 1, 0, rdev->sb_size - sizeof(*sb)); sb->magic = cpu_to_le32(DM_RAID_MAGIC); sb->features = cpu_to_le32(0); /* No features yet */ @@ -858,7 +856,11 @@ uint64_t events_sb, events_refsb; rdev->sb_start = 0; - rdev->sb_size = sizeof(*sb); + rdev->sb_size = bdev_logical_block_size(rdev->meta_bdev); + if (rdev->sb_size < sizeof(*sb) || rdev->sb_size > PAGE_SIZE) { + DMERR("superblock size of a logical block is no longer valid"); + return -EINVAL; + } ret = read_disk_sb(rdev, rdev->sb_size); if (ret) --- linux-3.13.0.orig/drivers/md/dm-raid1.c +++ linux-3.13.0/drivers/md/dm-raid1.c @@ -604,6 +604,15 @@ return; } + /* + * If the bio is discard, return an error, but do not + * degrade the array. + */ + if (bio->bi_rw & REQ_DISCARD) { + bio_endio(bio, -EOPNOTSUPP); + return; + } + for (i = 0; i < ms->nr_mirrors; i++) if (test_bit(i, &error)) fail_mirror(ms->mirror + i, DM_RAID1_WRITE_ERROR); --- linux-3.13.0.orig/drivers/md/dm-snap-persistent.c +++ linux-3.13.0/drivers/md/dm-snap-persistent.c @@ -646,7 +646,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) { @@ -655,6 +655,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-3.13.0.orig/drivers/md/dm-snap-transient.c +++ linux-3.13.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-3.13.0.orig/drivers/md/dm-snap.c +++ linux-3.13.0/drivers/md/dm-snap.c @@ -1388,8 +1388,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; @@ -1439,8 +1440,6 @@ full_bio->bi_end_io = pe->full_bio_end_io; full_bio->bi_private = pe->full_bio_private; } - free_pending_exception(pe); - increment_pending_exceptions_done_count(); up_write(&s->lock); @@ -1457,26 +1456,17 @@ } retry_origin_bios(s, origin_bios); -} -static void commit_callback(void *context, int success) -{ - struct dm_snap_pending_exception *pe = context; - - pending_complete(pe, success); + free_pending_exception(pe); } 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-3.13.0.orig/drivers/md/dm-stats.c +++ linux-3.13.0/drivers/md/dm-stats.c @@ -795,6 +795,8 @@ return -EINVAL; if (sscanf(argv[2], "/%u%c", &divisor, &dummy) == 1) { + if (!divisor) + return -EINVAL; step = end - start; if (do_div(step, divisor)) step++; --- linux-3.13.0.orig/drivers/md/dm-sysfs.c +++ linux-3.13.0/drivers/md/dm-sysfs.c @@ -86,6 +86,7 @@ static struct kobj_type dm_ktype = { .sysfs_ops = &dm_sysfs_ops, .default_attrs = dm_attrs, + .release = dm_kobject_release, }; /* @@ -104,5 +105,7 @@ */ void dm_sysfs_exit(struct mapped_device *md) { - kobject_put(dm_kobject(md)); + struct kobject *kobj = dm_kobject(md); + kobject_put(kobj); + wait_for_completion(dm_get_completion_from_kobject(kobj)); } --- linux-3.13.0.orig/drivers/md/dm-thin-metadata.c +++ linux-3.13.0/drivers/md/dm-thin-metadata.c @@ -192,6 +192,13 @@ * operation possible in this state is the closing of the device. */ bool fail_io:1; + + /* + * Reading the space map roots can fail, so we read it into these + * buffers before the superblock is locked and updated. + */ + __u8 data_space_map_root[SPACE_MAP_ROOT_SIZE]; + __u8 metadata_space_map_root[SPACE_MAP_ROOT_SIZE]; }; struct dm_thin_device { @@ -431,26 +438,53 @@ pmd->details_info.value_type.equal = NULL; } +static int save_sm_roots(struct dm_pool_metadata *pmd) +{ + int r; + size_t len; + + r = dm_sm_root_size(pmd->metadata_sm, &len); + if (r < 0) + return r; + + r = dm_sm_copy_root(pmd->metadata_sm, &pmd->metadata_space_map_root, len); + if (r < 0) + return r; + + r = dm_sm_root_size(pmd->data_sm, &len); + if (r < 0) + return r; + + return dm_sm_copy_root(pmd->data_sm, &pmd->data_space_map_root, len); +} + +static void copy_sm_roots(struct dm_pool_metadata *pmd, + struct thin_disk_superblock *disk) +{ + memcpy(&disk->metadata_space_map_root, + &pmd->metadata_space_map_root, + sizeof(pmd->metadata_space_map_root)); + + memcpy(&disk->data_space_map_root, + &pmd->data_space_map_root, + sizeof(pmd->data_space_map_root)); +} + static int __write_initial_superblock(struct dm_pool_metadata *pmd) { int r; struct dm_block *sblock; - size_t metadata_len, data_len; struct thin_disk_superblock *disk_super; sector_t bdev_size = i_size_read(pmd->bdev->bd_inode) >> SECTOR_SHIFT; if (bdev_size > THIN_METADATA_MAX_SECTORS) bdev_size = THIN_METADATA_MAX_SECTORS; - r = dm_sm_root_size(pmd->metadata_sm, &metadata_len); - if (r < 0) - return r; - - r = dm_sm_root_size(pmd->data_sm, &data_len); + r = dm_sm_commit(pmd->data_sm); if (r < 0) return r; - r = dm_sm_commit(pmd->data_sm); + r = save_sm_roots(pmd); if (r < 0) return r; @@ -471,15 +505,7 @@ disk_super->trans_id = 0; disk_super->held_root = 0; - r = dm_sm_copy_root(pmd->metadata_sm, &disk_super->metadata_space_map_root, - metadata_len); - if (r < 0) - goto bad_locked; - - r = dm_sm_copy_root(pmd->data_sm, &disk_super->data_space_map_root, - data_len); - if (r < 0) - goto bad_locked; + copy_sm_roots(pmd, disk_super); disk_super->data_mapping_root = cpu_to_le64(pmd->root); disk_super->device_details_root = cpu_to_le64(pmd->details_root); @@ -488,10 +514,6 @@ disk_super->data_block_size = cpu_to_le32(pmd->data_block_size); return dm_tm_commit(pmd->tm, sblock); - -bad_locked: - dm_bm_unlock(sblock); - return r; } static int __format_metadata(struct dm_pool_metadata *pmd) @@ -591,6 +613,15 @@ disk_super = dm_block_data(sblock); + /* Verify the data block size hasn't changed */ + if (le32_to_cpu(disk_super->data_block_size) != pmd->data_block_size) { + DMERR("changing the data block size (from %u to %llu) is not supported", + le32_to_cpu(disk_super->data_block_size), + (unsigned long long)pmd->data_block_size); + r = -EINVAL; + goto bad_unlock_sblock; + } + r = __check_incompat_features(disk_super, pmd); if (r < 0) goto bad_unlock_sblock; @@ -769,6 +800,10 @@ if (r < 0) return r; + r = save_sm_roots(pmd); + if (r < 0) + return r; + r = superblock_lock(pmd, &sblock); if (r) return r; @@ -780,21 +815,9 @@ disk_super->trans_id = cpu_to_le64(pmd->trans_id); disk_super->flags = cpu_to_le32(pmd->flags); - r = dm_sm_copy_root(pmd->metadata_sm, &disk_super->metadata_space_map_root, - metadata_len); - if (r < 0) - goto out_locked; - - r = dm_sm_copy_root(pmd->data_sm, &disk_super->data_space_map_root, - data_len); - if (r < 0) - goto out_locked; + copy_sm_roots(pmd, disk_super); return dm_tm_commit(pmd->tm, sblock); - -out_locked: - dm_bm_unlock(sblock); - return r; } struct dm_pool_metadata *dm_pool_metadata_open(struct block_device *bdev, @@ -1182,6 +1205,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); @@ -1272,8 +1301,8 @@ return r; disk_super = dm_block_data(copy); - dm_sm_dec_block(pmd->metadata_sm, le64_to_cpu(disk_super->data_mapping_root)); - dm_sm_dec_block(pmd->metadata_sm, le64_to_cpu(disk_super->device_details_root)); + dm_btree_del(&pmd->info, le64_to_cpu(disk_super->data_mapping_root)); + dm_btree_del(&pmd->details_info, le64_to_cpu(disk_super->device_details_root)); dm_sm_dec_block(pmd->metadata_sm, held_root); return dm_tm_unlock(pmd->tm, copy); @@ -1349,6 +1378,12 @@ return td->id; } +/* + * Check whether @time (of block creation) is older than @td's last snapshot. + * If so then the associated block is shared with the last snapshot device. + * Any block on a device created *after* the device last got snapshotted is + * necessarily not shared. + */ static bool __snapshotted_since(struct dm_thin_device *td, uint32_t time) { return td->snapshotted_time > time; @@ -1458,6 +1493,20 @@ return r; } +int dm_pool_block_is_used(struct dm_pool_metadata *pmd, dm_block_t b, bool *result) +{ + int r; + uint32_t ref_count; + + down_read(&pmd->root_lock); + r = dm_sm_get_count(pmd->data_sm, b, &ref_count); + if (!r) + *result = (ref_count != 0); + up_read(&pmd->root_lock); + + return r; +} + bool dm_thin_changed_this_transaction(struct dm_thin_device *td) { int r; @@ -1468,6 +1517,23 @@ return r; } + +bool dm_pool_changed_this_transaction(struct dm_pool_metadata *pmd) +{ + bool r = false; + struct dm_thin_device *td, *tmp; + + down_read(&pmd->root_lock); + list_for_each_entry_safe(td, tmp, &pmd->thin_devices, list) { + if (td->changed) { + r = td->changed; + break; + } + } + up_read(&pmd->root_lock); + + return r; +} bool dm_thin_aborted_changes(struct dm_thin_device *td) { --- linux-3.13.0.orig/drivers/md/dm-thin-metadata.h +++ linux-3.13.0/drivers/md/dm-thin-metadata.h @@ -161,6 +161,8 @@ */ bool dm_thin_changed_this_transaction(struct dm_thin_device *td); +bool dm_pool_changed_this_transaction(struct dm_pool_metadata *pmd); + bool dm_thin_aborted_changes(struct dm_thin_device *td); int dm_thin_get_highest_mapped_block(struct dm_thin_device *td, @@ -181,6 +183,8 @@ int dm_pool_get_data_dev_size(struct dm_pool_metadata *pmd, dm_block_t *result); +int dm_pool_block_is_used(struct dm_pool_metadata *pmd, dm_block_t b, bool *result); + /* * Returns -ENOSPC if the new size is too small and already allocated * blocks would be lost. --- linux-3.13.0.orig/drivers/md/dm-thin.c +++ linux-3.13.0/drivers/md/dm-thin.c @@ -512,6 +512,7 @@ unsigned quiesced:1; unsigned prepared:1; unsigned pass_discard:1; + unsigned definitely_not_shared:1; struct thin_c *tc; dm_block_t virt_block; @@ -683,7 +684,15 @@ cell_defer_no_holder(tc, m->cell2); if (m->pass_discard) - remap_and_issue(tc, m->bio, m->data_block); + if (m->definitely_not_shared) + remap_and_issue(tc, m->bio, m->data_block); + else { + bool used = false; + if (dm_pool_block_is_used(tc->pool->pmd, m->data_block, &used) || used) + bio_endio(m->bio, 0); + else + remap_and_issue(tc, m->bio, m->data_block); + } else bio_endio(m->bio, 0); @@ -751,13 +760,17 @@ static struct dm_thin_new_mapping *get_next_mapping(struct pool *pool) { - struct dm_thin_new_mapping *r = pool->next_mapping; + struct dm_thin_new_mapping *m = pool->next_mapping; BUG_ON(!pool->next_mapping); + memset(m, 0, sizeof(struct dm_thin_new_mapping)); + INIT_LIST_HEAD(&m->list); + m->bio = NULL; + pool->next_mapping = NULL; - return r; + return m; } static void schedule_copy(struct thin_c *tc, dm_block_t virt_block, @@ -769,15 +782,10 @@ struct pool *pool = tc->pool; struct dm_thin_new_mapping *m = get_next_mapping(pool); - INIT_LIST_HEAD(&m->list); - m->quiesced = 0; - m->prepared = 0; m->tc = tc; m->virt_block = virt_block; m->data_block = data_dest; m->cell = cell; - m->err = 0; - m->bio = NULL; if (!dm_deferred_set_add_work(pool->shared_read_ds, &m->list)) m->quiesced = 1; @@ -840,15 +848,12 @@ struct pool *pool = tc->pool; struct dm_thin_new_mapping *m = get_next_mapping(pool); - INIT_LIST_HEAD(&m->list); m->quiesced = 1; m->prepared = 0; m->tc = tc; m->virt_block = virt_block; m->data_block = data_block; m->cell = cell; - m->err = 0; - m->bio = NULL; /* * If the whole block of data is being overwritten or we are not @@ -1040,12 +1045,12 @@ */ m = get_next_mapping(pool); m->tc = tc; - m->pass_discard = (!lookup_result.shared) && pool->pf.discard_passdown; + m->pass_discard = pool->pf.discard_passdown; + m->definitely_not_shared = !lookup_result.shared; m->virt_block = block; m->data_block = lookup_result.block; m->cell = cell; m->cell2 = cell2; - m->err = 0; m->bio = bio; if (!dm_deferred_set_add_work(pool->all_io_ds, &m->list)) { @@ -1327,9 +1332,9 @@ */ if (ensure_next_mapping(pool)) { spin_lock_irqsave(&pool->lock, flags); + bio_list_add(&pool->deferred_bios, bio); bio_list_merge(&pool->deferred_bios, &bios); spin_unlock_irqrestore(&pool->lock, flags); - break; } @@ -1349,7 +1354,8 @@ bio_list_init(&pool->deferred_flush_bios); spin_unlock_irqrestore(&pool->lock, flags); - if (bio_list_empty(&bios) && !need_commit_due_to_time(pool)) + if (bio_list_empty(&bios) && + !(dm_pool_changed_this_transaction(pool->pmd) && need_commit_due_to_time(pool))) return; if (commit(pool)) { @@ -1390,16 +1396,16 @@ return pool->pf.mode; } -static void set_pool_mode(struct pool *pool, enum pool_mode mode) +static void set_pool_mode(struct pool *pool, enum pool_mode new_mode) { int r; + enum pool_mode old_mode = pool->pf.mode; - pool->pf.mode = mode; - - switch (mode) { + switch (new_mode) { case PM_FAIL: - DMERR("%s: switching pool to failure mode", - dm_device_name(pool->pool_md)); + if (old_mode != new_mode) + DMERR("%s: switching pool to failure mode", + dm_device_name(pool->pool_md)); dm_pool_metadata_read_only(pool->pmd); pool->process_bio = process_bio_fail; pool->process_discard = process_bio_fail; @@ -1408,13 +1414,15 @@ break; case PM_READ_ONLY: - DMERR("%s: switching pool to read-only mode", - dm_device_name(pool->pool_md)); + if (old_mode != new_mode) + DMERR("%s: switching pool to read-only mode", + dm_device_name(pool->pool_md)); r = dm_pool_abort_metadata(pool->pmd); if (r) { DMERR("%s: aborting transaction failed", dm_device_name(pool->pool_md)); - set_pool_mode(pool, PM_FAIL); + new_mode = PM_FAIL; + set_pool_mode(pool, new_mode); } else { dm_pool_metadata_read_only(pool->pmd); pool->process_bio = process_bio_read_only; @@ -1425,6 +1433,9 @@ break; case PM_WRITE: + if (old_mode != new_mode) + DMINFO("%s: switching pool to write mode", + dm_device_name(pool->pool_md)); dm_pool_metadata_read_write(pool->pmd); pool->process_bio = process_bio; pool->process_discard = process_discard; @@ -1432,6 +1443,8 @@ pool->process_prepared_discard = process_prepared_discard; break; } + + pool->pf.mode = new_mode; } /*----------------------------------------------------------------*/ @@ -1491,6 +1504,14 @@ return DM_MAPIO_SUBMITTED; } + /* + * We must hold the virtual cell before doing the lookup, otherwise + * there's a race with discard. + */ + build_virtual_key(tc->td, block, &key); + if (dm_bio_detain(tc->pool->prison, &key, bio, &cell1, &cell_result)) + return DM_MAPIO_SUBMITTED; + r = dm_thin_find_block(td, block, 0, &result); /* @@ -1514,13 +1535,10 @@ * shared flag will be set in their case. */ thin_defer_bio(tc, bio); + cell_defer_no_holder_no_free(tc, &cell1); return DM_MAPIO_SUBMITTED; } - build_virtual_key(tc->td, block, &key); - if (dm_bio_detain(tc->pool->prison, &key, bio, &cell1, &cell_result)) - return DM_MAPIO_SUBMITTED; - build_data_key(tc->td, result.block, &key); if (dm_bio_detain(tc->pool->prison, &key, bio, &cell2, &cell_result)) { cell_defer_no_holder_no_free(tc, &cell1); @@ -1535,22 +1553,13 @@ return DM_MAPIO_REMAPPED; case -ENODATA: - if (get_pool_mode(tc->pool) == PM_READ_ONLY) { - /* - * This block isn't provisioned, and we have no way - * of doing so. Just error it. - */ - bio_io_error(bio); - return DM_MAPIO_SUBMITTED; - } - /* fall through */ - case -EWOULDBLOCK: /* * In future, the failed dm_thin_find_block above could * provide the hint to load the metadata into cache. */ thin_defer_bio(tc, bio); + cell_defer_no_holder_no_free(tc, &cell1); return DM_MAPIO_SUBMITTED; default: @@ -1560,6 +1569,7 @@ * pool is switched to fail-io mode. */ bio_io_error(bio); + cell_defer_no_holder_no_free(tc, &cell1); return DM_MAPIO_SUBMITTED; } } @@ -1648,6 +1658,17 @@ enum pool_mode new_mode = pt->adjusted_pf.mode; /* + * Don't change the pool's mode until set_pool_mode() below. + * Otherwise the pool's process_* function pointers may + * not match the desired pool mode. + */ + pt->adjusted_pf.mode = old_mode; + + pool->ti = ti; + pool->pf = pt->adjusted_pf; + pool->low_water_blocks = pt->low_water_blocks; + + /* * If we were in PM_FAIL mode, rollback of metadata failed. We're * not going to recover without a thin_repair. So we never let the * pool move out of the old mode. On the other hand a PM_READ_ONLY @@ -1657,10 +1678,6 @@ if (old_mode == PM_FAIL) new_mode = old_mode; - pool->ti = ti; - pool->low_water_blocks = pt->low_water_blocks; - pool->pf = pt->adjusted_pf; - set_pool_mode(pool, new_mode); return 0; @@ -2125,7 +2142,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); @@ -2303,7 +2320,7 @@ struct pool_c *pt = ti->private; struct pool *pool = pt->pool; - cancel_delayed_work(&pool->waker); + cancel_delayed_work_sync(&pool->waker); flush_workqueue(pool->wq); (void) commit(pool); } @@ -2479,6 +2496,12 @@ struct pool_c *pt = ti->private; struct pool *pool = pt->pool; + if (get_pool_mode(pool) >= PM_READ_ONLY) { + DMERR("%s: unable to service pool target messages in READ_ONLY or FAIL mode", + dm_device_name(pool->pool_md)); + return -EINVAL; + } + if (!strcasecmp(argv[0], "create_thin")) r = process_create_thin_mesg(argc, argv, pool); @@ -2675,7 +2698,8 @@ */ if (pt->adjusted_pf.discard_passdown) { data_limits = &bdev_get_queue(pt->data_dev->bdev)->limits; - limits->discard_granularity = data_limits->discard_granularity; + limits->discard_granularity = max(data_limits->discard_granularity, + pool->sectors_per_block << SECTOR_SHIFT); } else limits->discard_granularity = pool->sectors_per_block << SECTOR_SHIFT; } @@ -2828,6 +2852,7 @@ if (get_pool_mode(tc->pool) == PM_FAIL) { ti->error = "Couldn't open thin device, Pool is in fail mode"; + r = -EINVAL; goto bad_thin_open; } @@ -2839,7 +2864,7 @@ r = dm_set_target_max_io_len(ti, tc->pool->sectors_per_block); if (r) - goto bad_thin_open; + goto bad_target_max_io_len; ti->num_flush_bios = 1; ti->flush_supported = true; @@ -2860,6 +2885,8 @@ return 0; +bad_target_max_io_len: + dm_pool_close_thin_device(tc->td); bad_thin_open: __pool_dec(tc->pool); bad_pool_lookup: --- linux-3.13.0.orig/drivers/md/dm.c +++ linux-3.13.0/drivers/md/dm.c @@ -54,6 +54,8 @@ static DECLARE_WORK(deferred_remove_work, do_deferred_remove); +static struct workqueue_struct *deferred_remove_workqueue; + /* * For bio-based dm. * One of these is allocated per bio. @@ -200,8 +202,8 @@ /* forced geometry settings */ struct hd_geometry geometry; - /* sysfs handle */ - struct kobject kobj; + /* kobject and completion */ + struct dm_kobject_holder kobj_holder; /* zero-length flush that will be cloned and submitted to targets */ struct bio flush_bio; @@ -283,16 +285,24 @@ if (r) goto out_free_rq_tio_cache; + deferred_remove_workqueue = alloc_workqueue("kdmremove", WQ_UNBOUND, 1); + if (!deferred_remove_workqueue) { + r = -ENOMEM; + goto out_uevent_exit; + } + _major = major; r = register_blkdev(_major, _name); if (r < 0) - goto out_uevent_exit; + goto out_free_workqueue; if (!_major) _major = r; return 0; +out_free_workqueue: + destroy_workqueue(deferred_remove_workqueue); out_uevent_exit: dm_uevent_exit(); out_free_rq_tio_cache: @@ -306,6 +316,7 @@ static void local_exit(void) { flush_scheduled_work(); + destroy_workqueue(deferred_remove_workqueue); kmem_cache_destroy(_rq_tio_cache); kmem_cache_destroy(_io_cache); @@ -414,7 +425,7 @@ if (atomic_dec_and_test(&md->open_count) && (test_bit(DMF_DEFERRED_REMOVE, &md->flags))) - schedule_work(&deferred_remove_work); + queue_work(deferred_remove_workqueue, &deferred_remove_work); dm_put(md); @@ -519,7 +530,7 @@ out: dm_put_live_table(md, srcu_idx); - if (r == -ENOTCONN) { + if (r == -ENOTCONN && !fatal_signal_pending(current)) { msleep(10); goto retry; } @@ -2041,6 +2052,7 @@ init_waitqueue_head(&md->wait); INIT_WORK(&md->work, dm_wq_work); init_waitqueue_head(&md->eventq); + init_completion(&md->kobj_holder.completion); md->disk->major = _major; md->disk->first_minor = minor; @@ -2409,7 +2421,7 @@ return 0; } -static struct mapped_device *dm_find_md(dev_t dev) +struct mapped_device *dm_get_md(dev_t dev) { struct mapped_device *md; unsigned minor = MINOR(dev); @@ -2420,12 +2432,15 @@ spin_lock(&_minor_lock); md = idr_find(&_minor_idr, minor); - if (md && (md == MINOR_ALLOCED || - (MINOR(disk_devt(dm_disk(md))) != minor) || - dm_deleting_md(md) || - test_bit(DMF_FREEING, &md->flags))) { - md = NULL; - goto out; + if (md) { + if ((md == MINOR_ALLOCED || + (MINOR(disk_devt(dm_disk(md))) != minor) || + dm_deleting_md(md) || + test_bit(DMF_FREEING, &md->flags))) { + md = NULL; + goto out; + } + dm_get(md); } out: @@ -2433,16 +2448,6 @@ return md; } - -struct mapped_device *dm_get_md(dev_t dev) -{ - struct mapped_device *md = dm_find_md(dev); - - if (md) - dm_get(md); - - return md; -} EXPORT_SYMBOL_GPL(dm_get_md); void *dm_get_mdptr(struct mapped_device *md) @@ -2475,18 +2480,23 @@ might_sleep(); spin_lock(&_minor_lock); - map = dm_get_live_table(md, &srcu_idx); idr_replace(&_minor_idr, MINOR_ALLOCED, MINOR(disk_devt(dm_disk(md)))); set_bit(DMF_FREEING, &md->flags); spin_unlock(&_minor_lock); + /* + * Take suspend_lock so that presuspend and postsuspend methods + * 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); } - /* 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, @@ -2899,23 +2909,18 @@ { return md->disk; } +EXPORT_SYMBOL_GPL(dm_disk); struct kobject *dm_kobject(struct mapped_device *md) { - return &md->kobj; + return &md->kobj_holder.kobj; } -/* - * struct mapped_device should not be exported outside of dm.c - * so use this check to verify that kobj is part of md structure - */ struct mapped_device *dm_get_from_kobject(struct kobject *kobj) { struct mapped_device *md; - md = container_of(kobj, struct mapped_device, kobj); - if (&md->kobj != kobj) - return NULL; + md = container_of(kobj, struct mapped_device, kobj_holder.kobj); if (test_bit(DMF_FREEING, &md->flags) || dm_deleting_md(md)) --- linux-3.13.0.orig/drivers/md/dm.h +++ linux-3.13.0/drivers/md/dm.h @@ -15,6 +15,8 @@ #include #include #include +#include +#include #include "dm-stats.h" @@ -148,12 +150,27 @@ /* * sysfs interface */ +struct dm_kobject_holder { + struct kobject kobj; + struct completion completion; +}; + +static inline struct completion *dm_get_completion_from_kobject(struct kobject *kobj) +{ + return &container_of(kobj, struct dm_kobject_holder, kobj)->completion; +} + int dm_sysfs_init(struct mapped_device *md); void dm_sysfs_exit(struct mapped_device *md); struct kobject *dm_kobject(struct mapped_device *md); struct mapped_device *dm_get_from_kobject(struct kobject *kobj); /* + * The kobject helper + */ +void dm_kobject_release(struct kobject *kobj); + +/* * Targets for linear and striped mappings */ int dm_linear_init(void); --- linux-3.13.0.orig/drivers/md/md.c +++ linux-3.13.0/drivers/md/md.c @@ -5272,6 +5272,8 @@ static void __md_stop(struct mddev *mddev) { + /* Ensure ->event_work is done */ + flush_workqueue(md_misc_wq); mddev->ready = 0; mddev->pers->stop(mddev); if (mddev->pers->sync_request && mddev->to_remove == NULL) @@ -5321,6 +5323,7 @@ printk("md: %s still in use.\n",mdname(mddev)); if (did_freeze) { clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery); + set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); md_wakeup_thread(mddev->thread); } err = -EBUSY; @@ -5335,6 +5338,8 @@ mddev->ro = 1; set_disk_ro(mddev->gendisk, 1); clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery); + set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); + md_wakeup_thread(mddev->thread); sysfs_notify_dirent_safe(mddev->sysfs_state); err = 0; } @@ -5378,6 +5383,7 @@ mutex_unlock(&mddev->open_mutex); if (did_freeze) { clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery); + set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); md_wakeup_thread(mddev->thread); } return -EBUSY; @@ -5629,7 +5635,7 @@ char *ptr, *buf = NULL; int err = -ENOMEM; - file = kmalloc(sizeof(*file), GFP_NOIO); + file = kzalloc(sizeof(*file), GFP_NOIO); if (!file) goto out; @@ -7358,8 +7364,10 @@ /* just incase thread restarts... */ if (test_bit(MD_RECOVERY_DONE, &mddev->recovery)) return; - if (mddev->ro) /* never try to sync a read-only array */ + if (mddev->ro) {/* never try to sync a read-only array */ + set_bit(MD_RECOVERY_INTR, &mddev->recovery); return; + } if (test_bit(MD_RECOVERY_SYNC, &mddev->recovery)) { if (test_bit(MD_RECOVERY_CHECK, &mddev->recovery)) { @@ -7466,6 +7474,19 @@ rdev->recovery_offset < j) j = rdev->recovery_offset; rcu_read_unlock(); + + /* If there is a bitmap, we need to make sure all + * writes that started before we added a spare + * complete before we start doing a recovery. + * Otherwise the write might complete and (via + * bitmap_endwrite) set a bit in the bitmap after the + * recovery has checked that bit and skipped that + * region. + */ + if (mddev->bitmap) { + mddev->pers->quiesce(mddev, 1); + mddev->pers->quiesce(mddev, 0); + } } printk(KERN_INFO "md: %s of RAID array %s\n", desc, mdname(mddev)); @@ -7800,6 +7821,7 @@ /* There is no thread, but we need to call * ->spare_active and clear saved_raid_disk */ + set_bit(MD_RECOVERY_INTR, &mddev->recovery); md_reap_sync_thread(mddev); clear_bit(MD_RECOVERY_NEEDED, &mddev->recovery); goto unlock; @@ -8496,7 +8518,8 @@ if (mddev_trylock(mddev)) { if (mddev->pers) __md_stop_writes(mddev); - mddev->safemode = 2; + if (mddev->persistent) + mddev->safemode = 2; mddev_unlock(mddev); } need_delay = 1; --- linux-3.13.0.orig/drivers/md/persistent-data/dm-block-manager.c +++ linux-3.13.0/drivers/md/persistent-data/dm-block-manager.c @@ -595,25 +595,14 @@ } EXPORT_SYMBOL_GPL(dm_bm_unlock); -int dm_bm_flush_and_unlock(struct dm_block_manager *bm, - struct dm_block *superblock) +int dm_bm_flush(struct dm_block_manager *bm) { - int r; - if (bm->read_only) return -EPERM; - r = dm_bufio_write_dirty_buffers(bm->bufio); - if (unlikely(r)) { - dm_bm_unlock(superblock); - return r; - } - - dm_bm_unlock(superblock); - return dm_bufio_write_dirty_buffers(bm->bufio); } -EXPORT_SYMBOL_GPL(dm_bm_flush_and_unlock); +EXPORT_SYMBOL_GPL(dm_bm_flush); void dm_bm_prefetch(struct dm_block_manager *bm, dm_block_t b) { --- linux-3.13.0.orig/drivers/md/persistent-data/dm-block-manager.h +++ linux-3.13.0/drivers/md/persistent-data/dm-block-manager.h @@ -105,8 +105,7 @@ * * This method always blocks. */ -int dm_bm_flush_and_unlock(struct dm_block_manager *bm, - struct dm_block *superblock); +int dm_bm_flush(struct dm_block_manager *bm); /* * Request data is prefetched into the cache. --- linux-3.13.0.orig/drivers/md/persistent-data/dm-btree-internal.h +++ linux-3.13.0/drivers/md/persistent-data/dm-btree-internal.h @@ -42,6 +42,12 @@ } __packed; +/* + * Locks a block using the btree node validator. + */ +int bn_read_lock(struct dm_btree_info *info, dm_block_t b, + struct dm_block **result); + void inc_children(struct dm_transaction_manager *tm, struct btree_node *n, struct dm_btree_value_type *vt); @@ -132,4 +138,10 @@ extern struct dm_block_validator btree_node_validator; +/* + * Value type for upper levels of multi-level btrees. + */ +extern void init_le64_type(struct dm_transaction_manager *tm, + struct dm_btree_value_type *vt); + #endif /* DM_BTREE_INTERNAL_H */ --- linux-3.13.0.orig/drivers/md/persistent-data/dm-btree-remove.c +++ linux-3.13.0/drivers/md/persistent-data/dm-btree-remove.c @@ -301,35 +301,40 @@ { 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 */ - shift(left, center, nr_center); - s = nr_center - target; + shift(left, center, -nr_center); + s += nr_center; shift(left, right, s); nr_right += s; } 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); - s = target - nr_center; + s -= nr_center; shift(left, right, s); nr_left -= s; } 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]; @@ -544,14 +549,6 @@ return r; } -static struct dm_btree_value_type le64_type = { - .context = NULL, - .size = sizeof(__le64), - .inc = NULL, - .dec = NULL, - .equal = NULL -}; - int dm_btree_remove(struct dm_btree_info *info, dm_block_t root, uint64_t *keys, dm_block_t *new_root) { @@ -559,12 +556,14 @@ int index = 0, r = 0; struct shadow_spine spine; struct btree_node *n; + struct dm_btree_value_type le64_vt; + init_le64_type(info->tm, &le64_vt); init_shadow_spine(&spine, info); for (level = 0; level < info->levels; level++) { r = remove_raw(&spine, info, (level == last_level ? - &info->value_type : &le64_type), + &info->value_type : &le64_vt), root, keys[level], (unsigned *)&index); if (r < 0) break; --- linux-3.13.0.orig/drivers/md/persistent-data/dm-btree-spine.c +++ linux-3.13.0/drivers/md/persistent-data/dm-btree-spine.c @@ -92,7 +92,7 @@ /*----------------------------------------------------------------*/ -static int bn_read_lock(struct dm_btree_info *info, dm_block_t b, +int bn_read_lock(struct dm_btree_info *info, dm_block_t b, struct dm_block **result) { return dm_tm_read_lock(info->tm, b, &btree_node_validator, result); @@ -249,3 +249,40 @@ { return s->root; } + +static void le64_inc(void *context, const void *value_le) +{ + struct dm_transaction_manager *tm = context; + __le64 v_le; + + memcpy(&v_le, value_le, sizeof(v_le)); + dm_tm_inc(tm, le64_to_cpu(v_le)); +} + +static void le64_dec(void *context, const void *value_le) +{ + struct dm_transaction_manager *tm = context; + __le64 v_le; + + memcpy(&v_le, value_le, sizeof(v_le)); + dm_tm_dec(tm, le64_to_cpu(v_le)); +} + +static int le64_equal(void *context, const void *value1_le, const void *value2_le) +{ + __le64 v1_le, v2_le; + + memcpy(&v1_le, value1_le, sizeof(v1_le)); + memcpy(&v2_le, value2_le, sizeof(v2_le)); + return v1_le == v2_le; +} + +void init_le64_type(struct dm_transaction_manager *tm, + struct dm_btree_value_type *vt) +{ + vt->context = tm; + vt->size = sizeof(__le64); + vt->inc = le64_inc; + vt->dec = le64_dec; + vt->equal = le64_equal; +} --- linux-3.13.0.orig/drivers/md/persistent-data/dm-btree.c +++ linux-3.13.0/drivers/md/persistent-data/dm-btree.c @@ -250,12 +250,22 @@ 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; struct del_stack *s; - s = kmalloc(sizeof(*s), GFP_KERNEL); + s = kmalloc(sizeof(*s), GFP_NOIO); if (!s) return -ENOMEM; s->info = info; @@ -306,9 +316,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); @@ -471,8 +485,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 +539,7 @@ r = new_block(s->info, &right); if (r < 0) { - /* FIXME: put left */ + unlock_block(s->info, left); return r; } @@ -667,12 +683,7 @@ struct btree_node *n; struct dm_btree_value_type le64_type; - le64_type.context = NULL; - le64_type.size = sizeof(__le64); - le64_type.inc = NULL; - le64_type.dec = NULL; - le64_type.equal = NULL; - + init_le64_type(info->tm, &le64_type); init_shadow_spine(&spine, info); for (level = 0; level < (info->levels - 1); level++) { @@ -828,22 +839,26 @@ * FIXME: We shouldn't use a recursive algorithm when we have limited stack * space. Also this only works for single level trees. */ -static int walk_node(struct ro_spine *s, dm_block_t block, +static int walk_node(struct dm_btree_info *info, dm_block_t block, int (*fn)(void *context, uint64_t *keys, void *leaf), void *context) { int r; unsigned i, nr; + struct dm_block *node; struct btree_node *n; uint64_t keys; - r = ro_step(s, block); - n = ro_node(s); + r = bn_read_lock(info, block, &node); + if (r) + return r; + + n = dm_block_data(node); nr = le32_to_cpu(n->header.nr_entries); for (i = 0; i < nr; i++) { if (le32_to_cpu(n->header.flags) & INTERNAL_NODE) { - r = walk_node(s, value64(n, i), fn, context); + r = walk_node(info, value64(n, i), fn, context); if (r) goto out; } else { @@ -855,7 +870,7 @@ } out: - ro_pop(s); + dm_tm_unlock(info->tm, node); return r; } @@ -863,15 +878,7 @@ int (*fn)(void *context, uint64_t *keys, void *leaf), void *context) { - int r; - struct ro_spine spine; - BUG_ON(info->levels > 1); - - init_ro_spine(&spine, info); - r = walk_node(&spine, root, fn, context); - exit_ro_spine(&spine); - - return r; + return walk_node(info, root, fn, context); } EXPORT_SYMBOL_GPL(dm_btree_walk); --- linux-3.13.0.orig/drivers/md/persistent-data/dm-space-map-common.c +++ linux-3.13.0/drivers/md/persistent-data/dm-space-map-common.c @@ -245,6 +245,10 @@ return -EINVAL; } + /* + * We need to set this before the dm_tm_new_block() call below. + */ + ll->nr_blocks = nr_blocks; for (i = old_blocks; i < blocks; i++) { struct dm_block *b; struct disk_index_entry idx; @@ -252,6 +256,7 @@ r = dm_tm_new_block(ll->tm, &dm_sm_bitmap_validator, &b); if (r < 0) return r; + idx.blocknr = cpu_to_le64(dm_block_location(b)); r = dm_tm_unlock(ll->tm, b); @@ -266,7 +271,6 @@ return r; } - ll->nr_blocks = nr_blocks; return 0; } --- linux-3.13.0.orig/drivers/md/persistent-data/dm-space-map-metadata.c +++ linux-3.13.0/drivers/md/persistent-data/dm-space-map-metadata.c @@ -91,6 +91,77 @@ dm_block_t block; }; +struct bop_ring_buffer { + unsigned begin; + unsigned end; + struct block_op bops[MAX_RECURSIVE_ALLOCATIONS + 1]; +}; + +static void brb_init(struct bop_ring_buffer *brb) +{ + brb->begin = 0; + brb->end = 0; +} + +static bool brb_empty(struct bop_ring_buffer *brb) +{ + return brb->begin == brb->end; +} + +static unsigned brb_next(struct bop_ring_buffer *brb, unsigned old) +{ + unsigned r = old + 1; + return (r >= (sizeof(brb->bops) / sizeof(*brb->bops))) ? 0 : r; +} + +static int brb_push(struct bop_ring_buffer *brb, + enum block_op_type type, dm_block_t b) +{ + struct block_op *bop; + unsigned next = brb_next(brb, brb->end); + + /* + * We don't allow the last bop to be filled, this way we can + * differentiate between full and empty. + */ + if (next == brb->begin) + return -ENOMEM; + + bop = brb->bops + brb->end; + bop->type = type; + bop->block = b; + + brb->end = next; + + return 0; +} + +static int brb_peek(struct bop_ring_buffer *brb, struct block_op *result) +{ + struct block_op *bop; + + if (brb_empty(brb)) + return -ENODATA; + + bop = brb->bops + brb->begin; + 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; +} + +/*----------------------------------------------------------------*/ + struct sm_metadata { struct dm_space_map sm; @@ -101,25 +172,20 @@ unsigned recursion_count; unsigned allocated_this_transaction; - unsigned nr_uncommitted; - struct block_op uncommitted[MAX_RECURSIVE_ALLOCATIONS]; + struct bop_ring_buffer uncommitted; struct threshold threshold; }; static int add_bop(struct sm_metadata *smm, enum block_op_type type, dm_block_t b) { - struct block_op *op; + int r = brb_push(&smm->uncommitted, type, b); - if (smm->nr_uncommitted == MAX_RECURSIVE_ALLOCATIONS) { + if (r) { DMERR("too many recursive allocations"); return -ENOMEM; } - op = smm->uncommitted + smm->nr_uncommitted++; - op->type = type; - op->block = b; - return 0; } @@ -146,6 +212,29 @@ smm->recursion_count++; } +static int apply_bops(struct sm_metadata *smm) +{ + int r = 0; + + while (!brb_empty(&smm->uncommitted)) { + struct block_op bop; + + r = brb_peek(&smm->uncommitted, &bop); + if (r) { + DMERR("bug in bop ring buffer"); + break; + } + + r = commit_bop(smm, &bop); + if (r) + break; + + brb_pop(&smm->uncommitted); + } + + return r; +} + static int out(struct sm_metadata *smm) { int r = 0; @@ -158,15 +247,8 @@ return -ENOMEM; } - if (smm->recursion_count == 1 && smm->nr_uncommitted) { - while (smm->nr_uncommitted && !r) { - smm->nr_uncommitted--; - r = commit_bop(smm, smm->uncommitted + - smm->nr_uncommitted); - if (r) - break; - } - } + if (smm->recursion_count == 1) + apply_bops(smm); smm->recursion_count--; @@ -217,7 +299,8 @@ static int sm_metadata_get_count(struct dm_space_map *sm, dm_block_t b, uint32_t *result) { - int r, i; + int r; + unsigned i; struct sm_metadata *smm = container_of(sm, struct sm_metadata, sm); unsigned adjustment = 0; @@ -225,8 +308,10 @@ * We may have some uncommitted adjustments to add. This list * should always be really short. */ - for (i = 0; i < smm->nr_uncommitted; i++) { - struct block_op *op = smm->uncommitted + i; + for (i = smm->uncommitted.begin; + i != smm->uncommitted.end; + i = brb_next(&smm->uncommitted, i)) { + struct block_op *op = smm->uncommitted.bops + i; if (op->block != b) continue; @@ -254,7 +339,8 @@ static int sm_metadata_count_is_more_than_one(struct dm_space_map *sm, dm_block_t b, int *result) { - int r, i, adjustment = 0; + int r, adjustment = 0; + unsigned i; struct sm_metadata *smm = container_of(sm, struct sm_metadata, sm); uint32_t rc; @@ -262,8 +348,11 @@ * We may have some uncommitted adjustments to add. This list * should always be really short. */ - for (i = 0; i < smm->nr_uncommitted; i++) { - struct block_op *op = smm->uncommitted + i; + for (i = smm->uncommitted.begin; + i != smm->uncommitted.end; + i = brb_next(&smm->uncommitted, i)) { + + struct block_op *op = smm->uncommitted.bops + i; if (op->block != b) continue; @@ -600,7 +689,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; @@ -608,20 +696,45 @@ * Flick into a mode where all blocks get allocated in the new area. */ smm->begin = old_len; - memcpy(&smm->sm, &bootstrap_ops, sizeof(smm->sm)); + memcpy(sm, &bootstrap_ops, sizeof(*sm)); /* * Extend. */ r = sm_ll_extend(&smm->ll, extra_blocks); + if (r) + goto out; /* - * Switch back to normal behaviour. + * We repeatedly increment then commit until the commit doesn't + * allocate any new blocks. */ - memcpy(&smm->sm, &ops, sizeof(smm->sm)); - for (i = old_len; !r && i < smm->begin; i++) - r = sm_ll_inc(&smm->ll, i, &ev); + do { + 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); + if (r) { + DMERR("%s: apply_bops failed", __func__); + goto out; + } + + r = sm_ll_commit(&smm->ll); + if (r) + goto out; + } while (old_len != smm->begin); + +out: + /* + * Switch back to normal behaviour. + */ + memcpy(sm, &ops, sizeof(*sm)); return r; } @@ -647,13 +760,12 @@ { 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; smm->recursion_count = 0; smm->allocated_this_transaction = 0; - smm->nr_uncommitted = 0; + brb_init(&smm->uncommitted); threshold_init(&smm->threshold); memcpy(&smm->sm, &bootstrap_ops, sizeof(smm->sm)); @@ -673,11 +785,17 @@ * 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; + r = apply_bops(smm); + if (r) { + DMERR("%s: apply_bops failed", __func__); + return r; + } + return sm_metadata_commit(sm); } @@ -695,7 +813,7 @@ smm->begin = 0; smm->recursion_count = 0; smm->allocated_this_transaction = 0; - smm->nr_uncommitted = 0; + brb_init(&smm->uncommitted); threshold_init(&smm->threshold); memcpy(&smm->old_ll, &smm->ll, sizeof(smm->old_ll)); --- linux-3.13.0.orig/drivers/md/persistent-data/dm-transaction-manager.c +++ linux-3.13.0/drivers/md/persistent-data/dm-transaction-manager.c @@ -154,7 +154,7 @@ if (r < 0) return r; - return 0; + return dm_bm_flush(tm->bm); } EXPORT_SYMBOL_GPL(dm_tm_pre_commit); @@ -164,8 +164,9 @@ return -EWOULDBLOCK; wipe_shadow_table(tm); + dm_bm_unlock(root); - return dm_bm_flush_and_unlock(tm->bm, root); + return dm_bm_flush(tm->bm); } EXPORT_SYMBOL_GPL(dm_tm_commit); --- linux-3.13.0.orig/drivers/md/persistent-data/dm-transaction-manager.h +++ linux-3.13.0/drivers/md/persistent-data/dm-transaction-manager.h @@ -38,18 +38,17 @@ /* * We use a 2-phase commit here. * - * i) In the first phase the block manager is told to start flushing, and - * the changes to the space map are written to disk. You should interrogate - * your particular space map to get detail of its root node etc. to be - * included in your superblock. + * i) Make all changes for the transaction *except* for the superblock. + * Then call dm_tm_pre_commit() to flush them to disk. * - * ii) @root will be committed last. You shouldn't use more than the - * first 512 bytes of @root if you wish the transaction to survive a power - * failure. You *must* have a write lock held on @root for both stage (i) - * and (ii). The commit will drop the write lock. + * ii) Lock your superblock. Update. Then call dm_tm_commit() which will + * unlock the superblock and flush it. No other blocks should be updated + * during this period. Care should be taken to never unlock a partially + * updated superblock; perform any operations that could fail *before* you + * take the superblock lock. */ int dm_tm_pre_commit(struct dm_transaction_manager *tm); -int dm_tm_commit(struct dm_transaction_manager *tm, struct dm_block *root); +int dm_tm_commit(struct dm_transaction_manager *tm, struct dm_block *superblock); /* * These methods are the only way to get hold of a writeable block. --- linux-3.13.0.orig/drivers/md/raid1.c +++ linux-3.13.0/drivers/md/raid1.c @@ -97,6 +97,7 @@ struct pool_info *pi = data; struct r1bio *r1_bio; struct bio *bio; + int need_pages; int i, j; r1_bio = r1bio_pool_alloc(gfp_flags, pi); @@ -119,15 +120,15 @@ * RESYNC_PAGES for each bio. */ if (test_bit(MD_RECOVERY_REQUESTED, &pi->mddev->recovery)) - j = pi->raid_disks; + need_pages = pi->raid_disks; else - j = 1; - while(j--) { + need_pages = 1; + for (j = 0; j < need_pages; j++) { bio = r1_bio->bios[j]; bio->bi_vcnt = RESYNC_PAGES; if (bio_alloc_pages(bio, gfp_flags)) - goto out_free_bio; + goto out_free_pages; } /* If not user-requests, copy the page pointers to all bios */ if (!test_bit(MD_RECOVERY_REQUESTED, &pi->mddev->recovery)) { @@ -141,6 +142,14 @@ return r1_bio; +out_free_pages: + while (--j >= 0) { + struct bio_vec *bv; + + bio_for_each_segment_all(bv, r1_bio->bios[j], i) + __free_page(bv->bv_page); + } + out_free_bio: while (++j < pi->raid_disks) bio_put(r1_bio->bios[j]); @@ -328,7 +337,7 @@ spin_lock_irqsave(&conf->device_lock, flags); if (r1_bio->mddev->degraded == conf->raid_disks || (r1_bio->mddev->degraded == conf->raid_disks-1 && - !test_bit(Faulty, &conf->mirrors[mirror].rdev->flags))) + test_bit(In_sync, &conf->mirrors[mirror].rdev->flags))) uptodate = 1; spin_unlock_irqrestore(&conf->device_lock, flags); } @@ -533,11 +542,7 @@ has_nonrot_disk = 0; choose_next_idle = 0; - if (conf->mddev->recovery_cp < MaxSector && - (this_sector + sectors >= conf->next_resync)) - choose_first = 1; - else - choose_first = 0; + choose_first = (conf->mddev->recovery_cp < this_sector + sectors); for (disk = 0 ; disk < conf->raid_disks * 2 ; disk++) { sector_t dist; @@ -558,7 +563,7 @@ if (test_bit(WriteMostly, &rdev->flags)) { /* Don't balance among write-mostly, just * use the first as a last resort */ - if (best_disk < 0) { + if (best_dist_disk < 0) { if (is_badblock(rdev, this_sector, sectors, &first_bad, &bad_sectors)) { if (first_bad < this_sector) @@ -567,7 +572,8 @@ best_good_sectors = first_bad - this_sector; } else best_good_sectors = sectors; - best_disk = disk; + best_dist_disk = disk; + best_pending_disk = disk; } continue; } @@ -824,7 +830,7 @@ * there is no normal IO happeing. It must arrange to call * lower_barrier when the particular background IO completes. */ -static void raise_barrier(struct r1conf *conf) +static void raise_barrier(struct r1conf *conf, sector_t sector_nr) { spin_lock_irq(&conf->resync_lock); @@ -834,6 +840,7 @@ /* block any new IO from starting */ conf->barrier++; + conf->next_resync = sector_nr; /* For these conditions we must wait: * A: while the array is in frozen state @@ -842,14 +849,17 @@ * C: next_resync + RESYNC_SECTORS > start_next_window, meaning * next resync will reach to the window which normal bios are * handling. + * D: while there are any active requests in the current window. */ wait_event_lock_irq(conf->wait_barrier, !conf->array_frozen && conf->barrier < RESYNC_DEPTH && + conf->current_window_requests == 0 && (conf->start_next_window >= conf->next_resync + RESYNC_SECTORS), conf->resync_lock); + conf->nr_pending++; spin_unlock_irq(&conf->resync_lock); } @@ -859,6 +869,7 @@ BUG_ON(conf->barrier <= 0); spin_lock_irqsave(&conf->resync_lock, flags); conf->barrier--; + conf->nr_pending--; spin_unlock_irqrestore(&conf->resync_lock, flags); wake_up(&conf->wait_barrier); } @@ -870,12 +881,10 @@ if (conf->array_frozen || !bio) wait = true; else if (conf->barrier && bio_data_dir(bio) == WRITE) { - if (conf->next_resync < RESYNC_WINDOW_SECTORS) - wait = true; - else if ((conf->next_resync - RESYNC_WINDOW_SECTORS - >= bio_end_sector(bio)) || - (conf->next_resync + NEXT_NORMALIO_DISTANCE - <= bio->bi_sector)) + if ((conf->mddev->curr_resync_completed + >= bio_end_sector(bio)) || + (conf->next_resync + NEXT_NORMALIO_DISTANCE + <= bio->bi_sector)) wait = false; else wait = true; @@ -912,8 +921,8 @@ } if (bio && bio_data_dir(bio) == WRITE) { - if (conf->next_resync + NEXT_NORMALIO_DISTANCE - <= bio->bi_sector) { + if (bio->bi_sector >= + conf->mddev->curr_resync_completed) { if (conf->start_next_window == MaxSector) conf->start_next_window = conf->next_resync + @@ -1178,6 +1187,7 @@ atomic_read(&bitmap->behind_writes) == 0); } r1_bio->read_disk = rdisk; + r1_bio->start_next_window = 0; read_bio = bio_clone_mddev(bio, GFP_NOIO, mddev); bio_trim(read_bio, r1_bio->sector - bio->bi_sector, @@ -1466,6 +1476,7 @@ { char b[BDEVNAME_SIZE]; struct r1conf *conf = mddev->private; + unsigned long flags; /* * If it is not operational, then we have already marked it as dead @@ -1485,18 +1496,17 @@ return; } set_bit(Blocked, &rdev->flags); + spin_lock_irqsave(&conf->device_lock, flags); if (test_and_clear_bit(In_sync, &rdev->flags)) { - unsigned long flags; - spin_lock_irqsave(&conf->device_lock, flags); mddev->degraded++; set_bit(Faulty, &rdev->flags); - spin_unlock_irqrestore(&conf->device_lock, flags); - /* - * if recovery is running, make sure it aborts. - */ - set_bit(MD_RECOVERY_INTR, &mddev->recovery); } else set_bit(Faulty, &rdev->flags); + spin_unlock_irqrestore(&conf->device_lock, flags); + /* + * if recovery is running, make sure it aborts. + */ + set_bit(MD_RECOVERY_INTR, &mddev->recovery); set_bit(MD_CHANGE_DEVS, &mddev->flags); printk(KERN_ALERT "md/raid1:%s: Disk failure on %s, disabling device.\n" @@ -1538,8 +1548,13 @@ mempool_destroy(conf->r1buf_pool); conf->r1buf_pool = NULL; + spin_lock_irq(&conf->resync_lock); conf->next_resync = 0; conf->start_next_window = MaxSector; + conf->current_window_requests += + conf->next_window_requests; + conf->next_window_requests = 0; + spin_unlock_irq(&conf->resync_lock); } static int raid1_spare_active(struct mddev *mddev) @@ -1553,7 +1568,10 @@ * Find all failed disks within the RAID1 configuration * and mark them readable. * Called under mddev lock, so rcu protection not needed. + * device_lock used to avoid races with raid1_end_read_request + * which expects 'In_sync' flags and ->degraded to be consistent. */ + spin_lock_irqsave(&conf->device_lock, flags); for (i = 0; i < conf->raid_disks; i++) { struct md_rdev *rdev = conf->mirrors[i].rdev; struct md_rdev *repl = conf->mirrors[conf->raid_disks + i].rdev; @@ -1583,7 +1601,6 @@ sysfs_notify_dirent_safe(rdev->sysfs_state); } } - spin_lock_irqsave(&conf->device_lock, flags); mddev->degraded -= count; spin_unlock_irqrestore(&conf->device_lock, flags); @@ -1952,11 +1969,15 @@ for (i = 0; i < conf->raid_disks * 2; i++) { int j; int size; + int uptodate; struct bio *b = r1_bio->bios[i]; if (b->bi_end_io != end_sync_read) continue; - /* fixup the bio for reuse */ + /* fixup the bio for reuse, but preserve BIO_UPTODATE */ + uptodate = test_bit(BIO_UPTODATE, &b->bi_flags); bio_reset(b); + if (!uptodate) + clear_bit(BIO_UPTODATE, &b->bi_flags); b->bi_vcnt = vcnt; b->bi_size = r1_bio->sectors << 9; b->bi_sector = r1_bio->sector + @@ -1989,11 +2010,14 @@ int j; struct bio *pbio = r1_bio->bios[primary]; struct bio *sbio = r1_bio->bios[i]; + int uptodate = test_bit(BIO_UPTODATE, &sbio->bi_flags); if (sbio->bi_end_io != end_sync_read) continue; + /* Now we can 'fixup' the BIO_UPTODATE flag */ + set_bit(BIO_UPTODATE, &sbio->bi_flags); - if (test_bit(BIO_UPTODATE, &sbio->bi_flags)) { + if (uptodate) { for (j = vcnt; j-- ; ) { struct page *p, *s; p = pbio->bi_io_vec[j].bv_page; @@ -2008,7 +2032,7 @@ if (j >= 0) atomic64_add(r1_bio->sectors, &mddev->resync_mismatches); if (j < 0 || (test_bit(MD_RECOVERY_CHECK, &mddev->recovery) - && test_bit(BIO_UPTODATE, &sbio->bi_flags))) { + && uptodate)) { /* No need to write to this device. */ sbio->bi_end_io = NULL; rdev_dec_pending(conf->mirrors[i].rdev, mddev); @@ -2133,7 +2157,7 @@ d--; rdev = conf->mirrors[d].rdev; if (rdev && - test_bit(In_sync, &rdev->flags)) + !test_bit(Faulty, &rdev->flags)) r1_sync_page_io(rdev, sect, s, conf->tmppage, WRITE); } @@ -2145,7 +2169,7 @@ d--; rdev = conf->mirrors[d].rdev; if (rdev && - test_bit(In_sync, &rdev->flags)) { + !test_bit(Faulty, &rdev->flags)) { if (r1_sync_page_io(rdev, sect, s, conf->tmppage, READ)) { atomic_add(s, &rdev->corrected_errors); @@ -2226,7 +2250,7 @@ bio_trim(wbio, sector - r1_bio->sector, sectors); wbio->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) @@ -2522,9 +2546,8 @@ bitmap_cond_end_sync(mddev->bitmap, sector_nr); r1_bio = mempool_alloc(conf->r1buf_pool, GFP_NOIO); - raise_barrier(conf); - conf->next_resync = sector_nr; + raise_barrier(conf, sector_nr); rcu_read_lock(); /* --- linux-3.13.0.orig/drivers/md/raid10.c +++ linux-3.13.0/drivers/md/raid10.c @@ -1698,13 +1698,12 @@ spin_unlock_irqrestore(&conf->device_lock, flags); return; } - if (test_and_clear_bit(In_sync, &rdev->flags)) { + if (test_and_clear_bit(In_sync, &rdev->flags)) mddev->degraded++; - /* - * if recovery is running, make sure it aborts. - */ - set_bit(MD_RECOVERY_INTR, &mddev->recovery); - } + /* + * If recovery is running, make sure it aborts. + */ + set_bit(MD_RECOVERY_INTR, &mddev->recovery); set_bit(Blocked, &rdev->flags); set_bit(Faulty, &rdev->flags); set_bit(MD_CHANGE_DEVS, &mddev->flags); @@ -2619,7 +2618,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) @@ -2968,6 +2967,7 @@ */ if (test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery)) { end_reshape(conf); + close_sync(conf); return 0; } @@ -3597,6 +3597,7 @@ /* far_copies must be 1 */ conf->prev.stride = conf->dev_sectors; } + conf->reshape_safe = conf->reshape_progress; spin_lock_init(&conf->device_lock); INIT_LIST_HEAD(&conf->retry_list); @@ -3804,7 +3805,6 @@ } conf->offset_diff = min_offset_diff; - conf->reshape_safe = conf->reshape_progress; clear_bit(MD_RECOVERY_SYNC, &mddev->recovery); clear_bit(MD_RECOVERY_CHECK, &mddev->recovery); set_bit(MD_RECOVERY_RESHAPE, &mddev->recovery); @@ -4149,6 +4149,7 @@ conf->reshape_progress = size; } else conf->reshape_progress = 0; + conf->reshape_safe = conf->reshape_progress; spin_unlock_irq(&conf->device_lock); if (mddev->delta_disks && mddev->bitmap) { @@ -4215,6 +4216,7 @@ rdev->new_data_offset = rdev->data_offset; smp_wmb(); conf->reshape_progress = MaxSector; + conf->reshape_safe = MaxSector; mddev->reshape_position = MaxSector; spin_unlock_irq(&conf->device_lock); return ret; @@ -4422,7 +4424,7 @@ read_bio->bi_private = r10_bio; read_bio->bi_end_io = end_sync_read; read_bio->bi_rw = READ; - read_bio->bi_flags &= ~(BIO_POOL_MASK - 1); + read_bio->bi_flags &= (~0UL << BIO_RESET_BITS); read_bio->bi_flags |= 1 << BIO_UPTODATE; read_bio->bi_vcnt = 0; read_bio->bi_size = 0; @@ -4566,6 +4568,7 @@ md_finish_reshape(conf->mddev); smp_wmb(); conf->reshape_progress = MaxSector; + conf->reshape_safe = MaxSector; spin_unlock_irq(&conf->device_lock); /* read-ahead size must cover two whole stripes, which is --- linux-3.13.0.orig/drivers/md/raid5.c +++ linux-3.13.0/drivers/md/raid5.c @@ -64,6 +64,10 @@ #define cpu_to_group(cpu) cpu_to_node(cpu) #define ANY_GROUP NUMA_NO_NODE +static bool devices_handle_discard_safely = false; +module_param(devices_handle_discard_safely, bool, 0644); +MODULE_PARM_DESC(devices_handle_discard_safely, + "Set to Y if all devices in each array reliably return zeroes on reads from discarded regions"); static struct workqueue_struct *raid5_wq; /* * Stripe cache @@ -292,9 +296,12 @@ BUG_ON(atomic_read(&conf->active_stripes)==0); if (test_bit(STRIPE_HANDLE, &sh->state)) { if (test_bit(STRIPE_DELAYED, &sh->state) && - !test_bit(STRIPE_PREREAD_ACTIVE, &sh->state)) + !test_bit(STRIPE_PREREAD_ACTIVE, &sh->state)) { list_add_tail(&sh->lru, &conf->delayed_list); - else if (test_bit(STRIPE_BIT_DELAY, &sh->state) && + if (atomic_read(&conf->preread_active_stripes) + < IO_THRESHOLD) + md_wakeup_thread(conf->mddev->thread); + } else if (test_bit(STRIPE_BIT_DELAY, &sh->state) && sh->bm_seq - conf->seq_write > 0) list_add_tail(&sh->lru, &conf->bitmap_list); else { @@ -675,8 +682,10 @@ || !conf->inactive_blocked), *(conf->hash_locks + hash)); conf->inactive_blocked = 0; - } else + } else { init_stripe(sh, sector, previous); + atomic_inc(&sh->count); + } } else { spin_lock(&conf->device_lock); if (atomic_read(&sh->count)) { @@ -695,13 +704,11 @@ sh->group = NULL; } } + atomic_inc(&sh->count); spin_unlock(&conf->device_lock); } } while (sh == NULL); - if (sh) - atomic_inc(&sh->count); - spin_unlock_irq(conf->hash_locks + hash); return sh; } @@ -1910,7 +1917,8 @@ conf->slab_cache = sc; conf->active_name = 1-conf->active_name; - conf->pool_size = newsize; + if (!err) + conf->pool_size = newsize; return err; } @@ -2111,6 +2119,7 @@ set_bit(R5_MadeGoodRepl, &sh->dev[i].flags); } else { if (!uptodate) { + set_bit(STRIPE_DEGRADED, &sh->state); set_bit(WriteErrorSeen, &rdev->flags); set_bit(R5_WriteError, &sh->dev[i].flags); if (!test_and_set_bit(WantReplacement, &rdev->flags)) @@ -2890,8 +2899,14 @@ (s->failed >= 1 && fdev[0]->toread) || (s->failed >= 2 && fdev[1]->toread) || (sh->raid_conf->level <= 5 && s->failed && fdev[0]->towrite && + (!test_bit(R5_Insync, &dev->flags) || test_bit(STRIPE_PREREAD_ACTIVE, &sh->state)) && !test_bit(R5_OVERWRITE, &fdev[0]->flags)) || - (sh->raid_conf->level == 6 && s->failed && s->to_write))) { + ((sh->raid_conf->level == 6 || + sh->sector >= sh->raid_conf->mddev->recovery_cp) + && s->failed && s->to_write && + (s->to_write - s->non_overwrite < + sh->raid_conf->raid_disks - sh->raid_conf->max_degraded) && + (!test_bit(R5_Insync, &dev->flags) || test_bit(STRIPE_PREREAD_ACTIVE, &sh->state))))) { /* we would like to get this block, possibly by computing it, * otherwise read it if the backing disk is insync */ @@ -3022,6 +3037,8 @@ } if (!discard_pending && test_bit(R5_Discard, &sh->dev[sh->pd_idx].flags)) { + int hash = sh->hash_lock_index; + 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) { @@ -3035,9 +3052,9 @@ * no updated data, so remove it from hash list and the stripe * will be reinitialized */ - spin_lock_irq(&conf->device_lock); + spin_lock_irq(conf->hash_locks + hash); remove_hash(sh); - spin_unlock_irq(&conf->device_lock); + spin_unlock_irq(conf->hash_locks + hash); if (test_bit(STRIPE_SYNC_REQUESTED, &sh->state)) set_bit(STRIPE_HANDLE, &sh->state); @@ -3065,7 +3082,8 @@ * generate correct data from the parity. */ if (conf->max_degraded == 2 || - (recovery_cp < MaxSector && sh->sector >= recovery_cp)) { + (recovery_cp < MaxSector && sh->sector >= recovery_cp && + s->failed == 0)) { /* Calculate the real rcw later - for now make it * look like rcw is cheaper */ @@ -3090,7 +3108,8 @@ !test_bit(R5_LOCKED, &dev->flags) && !(test_bit(R5_UPTODATE, &dev->flags) || test_bit(R5_Wantcompute, &dev->flags))) { - if (test_bit(R5_Insync, &dev->flags)) rcw++; + if (test_bit(R5_Insync, &dev->flags)) + rcw++; else rcw += 2*disks; } @@ -3111,10 +3130,10 @@ !(test_bit(R5_UPTODATE, &dev->flags) || test_bit(R5_Wantcompute, &dev->flags)) && test_bit(R5_Insync, &dev->flags)) { - if ( - test_bit(STRIPE_PREREAD_ACTIVE, &sh->state)) { - pr_debug("Read_old block " - "%d for r-m-w\n", i); + if (test_bit(STRIPE_PREREAD_ACTIVE, + &sh->state)) { + pr_debug("Read_old block %d for r-m-w\n", + i); set_bit(R5_LOCKED, &dev->flags); set_bit(R5_Wantread, &dev->flags); s->locked++; @@ -3137,10 +3156,9 @@ !(test_bit(R5_UPTODATE, &dev->flags) || test_bit(R5_Wantcompute, &dev->flags))) { rcw++; - if (!test_bit(R5_Insync, &dev->flags)) - continue; /* it's a failed drive */ - if ( - test_bit(STRIPE_PREREAD_ACTIVE, &sh->state)) { + if (test_bit(R5_Insync, &dev->flags) && + test_bit(STRIPE_PREREAD_ACTIVE, + &sh->state)) { pr_debug("Read_old block " "%d for Reconstruct\n", i); set_bit(R5_LOCKED, &dev->flags); @@ -3778,6 +3796,8 @@ set_bit(R5_Wantwrite, &dev->flags); if (prexor) continue; + if (s.failed > 1) + continue; if (!test_bit(R5_Insync, &dev->flags) || ((i == sh->pd_idx || i == sh->qd_idx) && s.failed == 0)) @@ -5511,23 +5531,43 @@ return sectors * (raid_disks - conf->max_degraded); } +static void free_scratch_buffer(struct r5conf *conf, struct raid5_percpu *percpu) +{ + safe_put_page(percpu->spare_page); + kfree(percpu->scribble); + percpu->spare_page = NULL; + percpu->scribble = NULL; +} + +static int alloc_scratch_buffer(struct r5conf *conf, struct raid5_percpu *percpu) +{ + if (conf->level == 6 && !percpu->spare_page) + percpu->spare_page = alloc_page(GFP_KERNEL); + if (!percpu->scribble) + percpu->scribble = kmalloc(conf->scribble_len, GFP_KERNEL); + + if (!percpu->scribble || (conf->level == 6 && !percpu->spare_page)) { + free_scratch_buffer(conf, percpu); + return -ENOMEM; + } + + return 0; +} + static void raid5_free_percpu(struct r5conf *conf) { - struct raid5_percpu *percpu; unsigned long cpu; if (!conf->percpu) return; - get_online_cpus(); - for_each_possible_cpu(cpu) { - percpu = per_cpu_ptr(conf->percpu, cpu); - safe_put_page(percpu->spare_page); - kfree(percpu->scribble); - } #ifdef CONFIG_HOTPLUG_CPU unregister_cpu_notifier(&conf->cpu_notify); #endif + + get_online_cpus(); + for_each_possible_cpu(cpu) + free_scratch_buffer(conf, per_cpu_ptr(conf->percpu, cpu)); put_online_cpus(); free_percpu(conf->percpu); @@ -5554,15 +5594,7 @@ switch (action) { case CPU_UP_PREPARE: case CPU_UP_PREPARE_FROZEN: - if (conf->level == 6 && !percpu->spare_page) - percpu->spare_page = alloc_page(GFP_KERNEL); - if (!percpu->scribble) - percpu->scribble = kmalloc(conf->scribble_len, GFP_KERNEL); - - if (!percpu->scribble || - (conf->level == 6 && !percpu->spare_page)) { - safe_put_page(percpu->spare_page); - kfree(percpu->scribble); + if (alloc_scratch_buffer(conf, percpu)) { pr_err("%s: failed memory allocation for cpu%ld\n", __func__, cpu); return notifier_from_errno(-ENOMEM); @@ -5570,10 +5602,7 @@ break; case CPU_DEAD: case CPU_DEAD_FROZEN: - safe_put_page(percpu->spare_page); - kfree(percpu->scribble); - percpu->spare_page = NULL; - percpu->scribble = NULL; + free_scratch_buffer(conf, per_cpu_ptr(conf->percpu, cpu)); break; default: break; @@ -5585,40 +5614,29 @@ static int raid5_alloc_percpu(struct r5conf *conf) { unsigned long cpu; - struct page *spare_page; - struct raid5_percpu __percpu *allcpus; - void *scribble; - int err; + int err = 0; - allcpus = alloc_percpu(struct raid5_percpu); - if (!allcpus) + conf->percpu = alloc_percpu(struct raid5_percpu); + if (!conf->percpu) return -ENOMEM; - conf->percpu = allcpus; + +#ifdef CONFIG_HOTPLUG_CPU + conf->cpu_notify.notifier_call = raid456_cpu_notify; + conf->cpu_notify.priority = 0; + err = register_cpu_notifier(&conf->cpu_notify); + if (err) + return err; +#endif get_online_cpus(); - err = 0; for_each_present_cpu(cpu) { - if (conf->level == 6) { - spare_page = alloc_page(GFP_KERNEL); - if (!spare_page) { - err = -ENOMEM; - break; - } - per_cpu_ptr(conf->percpu, cpu)->spare_page = spare_page; - } - scribble = kmalloc(conf->scribble_len, GFP_KERNEL); - if (!scribble) { - err = -ENOMEM; + err = alloc_scratch_buffer(conf, per_cpu_ptr(conf->percpu, cpu)); + if (err) { + pr_err("%s: failed memory allocation for cpu%ld\n", + __func__, cpu); break; } - per_cpu_ptr(conf->percpu, cpu)->scribble = scribble; } -#ifdef CONFIG_HOTPLUG_CPU - conf->cpu_notify.notifier_call = raid456_cpu_notify; - conf->cpu_notify.priority = 0; - if (err == 0) - err = register_cpu_notifier(&conf->cpu_notify); -#endif put_online_cpus(); return err; @@ -6113,7 +6131,7 @@ mddev->queue->limits.discard_granularity = stripe; /* * unaligned part of discard request will be ignored, so can't - * guarantee discard_zerors_data + * guarantee discard_zeroes_data */ mddev->queue->limits.discard_zeroes_data = 0; @@ -6138,11 +6156,23 @@ !bdev_get_queue(rdev->bdev)-> limits.discard_zeroes_data) discard_supported = false; + /* Unfortunately, discard_zeroes_data is not currently + * a guarantee - just a hint. So we only allow DISCARD + * if the sysadmin has confirmed that only safe devices + * are in use by setting a module parameter. + */ + if (!devices_handle_discard_safely) { + if (discard_supported) { + pr_info("md/raid456: discard support disabled due to uncertainty.\n"); + pr_info("Set raid456.devices_handle_discard_safely=Y to override.\n"); + } + discard_supported = false; + } } 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-3.13.0.orig/drivers/media/common/siano/sms-cards.c +++ linux-3.13.0/drivers/media/common/siano/sms-cards.c @@ -157,6 +157,12 @@ .type = SMS_DENVER_2160, .default_mode = DEVICE_MODE_DAB_TDMB, }, + [SMS1XXX_BOARD_PCTV_77E] = { + .name = "Hauppauge microStick 77e", + .type = SMS_NOVA_B0, + .fw[DEVICE_MODE_DVBT_BDA] = SMS_FW_DVB_NOVA_12MHZ_B0, + .default_mode = DEVICE_MODE_DVBT_BDA, + }, }; struct sms_board *sms_get_board(unsigned id) --- linux-3.13.0.orig/drivers/media/common/siano/sms-cards.h +++ linux-3.13.0/drivers/media/common/siano/sms-cards.h @@ -45,6 +45,7 @@ #define SMS1XXX_BOARD_SIANO_RIO 18 #define SMS1XXX_BOARD_SIANO_DENVER_1530 19 #define SMS1XXX_BOARD_SIANO_DENVER_2160 20 +#define SMS1XXX_BOARD_PCTV_77E 21 struct sms_board_gpio_cfg { int lna_vhf_exist; --- linux-3.13.0.orig/drivers/media/dvb-core/dvb-usb-ids.h +++ linux-3.13.0/drivers/media/dvb-core/dvb-usb-ids.h @@ -239,6 +239,7 @@ #define USB_PID_AVERMEDIA_A835B_4835 0x4835 #define USB_PID_AVERMEDIA_1867 0x1867 #define USB_PID_AVERMEDIA_A867 0xa867 +#define USB_PID_AVERMEDIA_H335 0x0335 #define USB_PID_AVERMEDIA_TWINSTAR 0x0825 #define USB_PID_TECHNOTREND_CONNECT_S2400 0x3006 #define USB_PID_TECHNOTREND_CONNECT_S2400_8KEEPROM 0x3009 @@ -358,6 +359,7 @@ #define USB_PID_FRIIO_WHITE 0x0001 #define USB_PID_TVWAY_PLUS 0x0002 #define USB_PID_SVEON_STV20 0xe39d +#define USB_PID_SVEON_STV20_RTL2832U 0xd39d #define USB_PID_SVEON_STV22 0xe401 #define USB_PID_SVEON_STV22_IT9137 0xe411 #define USB_PID_AZUREWAVE_AZ6027 0x3275 @@ -371,4 +373,5 @@ #define USB_PID_CTVDIGDUAL_V2 0xe410 #define USB_PID_PCTV_2002E 0x025c #define USB_PID_PCTV_2002E_SE 0x025d +#define USB_PID_SVEON_STV27 0xd3af #endif --- linux-3.13.0.orig/drivers/media/dvb-core/dvb_frontend.c +++ linux-3.13.0/drivers/media/dvb-core/dvb_frontend.c @@ -2195,9 +2195,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-3.13.0.orig/drivers/media/dvb-frontends/af9013.c +++ linux-3.13.0/drivers/media/dvb-frontends/af9013.c @@ -606,6 +606,10 @@ } } + /* Return an error if can't find bandwidth or the right clock */ + if (i == ARRAY_SIZE(coeff_lut)) + return -EINVAL; + ret = af9013_wr_regs(state, 0xae00, coeff_lut[i].val, sizeof(coeff_lut[i].val)); } --- linux-3.13.0.orig/drivers/media/dvb-frontends/cx24116.c +++ linux-3.13.0/drivers/media/dvb-frontends/cx24116.c @@ -963,6 +963,10 @@ struct cx24116_state *state = fe->demodulator_priv; int i, ret; + /* Validate length */ + if (d->msg_len > sizeof(d->msg)) + return -EINVAL; + /* Dump DiSEqC message */ if (debug) { printk(KERN_INFO "cx24116: %s(", __func__); @@ -974,10 +978,6 @@ printk(") toneburst=%d\n", toneburst); } - /* Validate length */ - if (d->msg_len > (CX24116_ARGLEN - CX24116_DISEQC_MSGOFS)) - return -EINVAL; - /* DiSEqC message */ for (i = 0; i < d->msg_len; i++) state->dsec_cmd.args[CX24116_DISEQC_MSGOFS + i] = d->msg[i]; --- linux-3.13.0.orig/drivers/media/dvb-frontends/cx24117.c +++ linux-3.13.0/drivers/media/dvb-frontends/cx24117.c @@ -1033,7 +1033,7 @@ dev_dbg(&state->priv->i2c->dev, ")\n"); /* Validate length */ - if (d->msg_len > 15) + if (d->msg_len > sizeof(d->msg)) return -EINVAL; /* DiSEqC message */ @@ -1166,7 +1166,7 @@ switch (demod) { case 0: - dev_err(&state->priv->i2c->dev, + dev_err(&i2c->dev, "%s: Error attaching frontend %d\n", KBUILD_MODNAME, demod); goto error1; --- linux-3.13.0.orig/drivers/media/dvb-frontends/dib8000.c +++ linux-3.13.0/drivers/media/dvb-frontends/dib8000.c @@ -157,15 +157,10 @@ return ret; } -static u16 dib8000_read_word(struct dib8000_state *state, u16 reg) +static u16 __dib8000_read_word(struct dib8000_state *state, u16 reg) { u16 ret; - if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) { - dprintk("could not acquire lock"); - return 0; - } - state->i2c_write_buffer[0] = reg >> 8; state->i2c_write_buffer[1] = reg & 0xff; @@ -183,6 +178,21 @@ dprintk("i2c read error on %d", reg); ret = (state->i2c_read_buffer[0] << 8) | state->i2c_read_buffer[1]; + + return ret; +} + +static u16 dib8000_read_word(struct dib8000_state *state, u16 reg) +{ + u16 ret; + + if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) { + dprintk("could not acquire lock"); + return 0; + } + + ret = __dib8000_read_word(state, reg); + mutex_unlock(&state->i2c_buffer_lock); return ret; @@ -192,8 +202,15 @@ { u16 rw[2]; - rw[0] = dib8000_read_word(state, reg + 0); - rw[1] = dib8000_read_word(state, reg + 1); + if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) { + dprintk("could not acquire lock"); + return 0; + } + + rw[0] = __dib8000_read_word(state, reg + 0); + rw[1] = __dib8000_read_word(state, reg + 1); + + mutex_unlock(&state->i2c_buffer_lock); return ((rw[0] << 16) | (rw[1])); } @@ -2445,7 +2462,8 @@ if (state->revision == 0x8090) internal = dib8000_read32(state, 23) / 1000; - if (state->autosearch_state == AS_SEARCHING_FFT) { + if ((state->revision >= 0x8002) && + (state->autosearch_state == AS_SEARCHING_FFT)) { dib8000_write_word(state, 37, 0x0065); /* P_ctrl_pha_off_max default values */ dib8000_write_word(state, 116, 0x0000); /* P_ana_gain to 0 */ @@ -2481,7 +2499,8 @@ dib8000_write_word(state, 770, (dib8000_read_word(state, 770) & 0xdfff) | (1 << 13)); /* P_restart_ccg = 1 */ dib8000_write_word(state, 770, (dib8000_read_word(state, 770) & 0xdfff) | (0 << 13)); /* P_restart_ccg = 0 */ dib8000_write_word(state, 0, (dib8000_read_word(state, 0) & 0x7ff) | (0 << 15) | (1 << 13)); /* P_restart_search = 0; */ - } else if (state->autosearch_state == AS_SEARCHING_GUARD) { + } else if ((state->revision >= 0x8002) && + (state->autosearch_state == AS_SEARCHING_GUARD)) { c->transmission_mode = TRANSMISSION_MODE_8K; c->guard_interval = GUARD_INTERVAL_1_8; c->inversion = 0; @@ -2583,7 +2602,8 @@ struct dib8000_state *state = fe->demodulator_priv; u16 irq_pending = dib8000_read_word(state, 1284); - if (state->autosearch_state == AS_SEARCHING_FFT) { + if ((state->revision >= 0x8002) && + (state->autosearch_state == AS_SEARCHING_FFT)) { if (irq_pending & 0x1) { dprintk("dib8000_autosearch_irq: max correlation result available"); return 3; --- linux-3.13.0.orig/drivers/media/dvb-frontends/ds3000.c +++ linux-3.13.0/drivers/media/dvb-frontends/ds3000.c @@ -864,6 +864,13 @@ memcpy(&state->frontend.ops, &ds3000_ops, sizeof(struct dvb_frontend_ops)); state->frontend.demodulator_priv = state; + + /* + * Some devices like T480 starts with voltage on. Be sure + * to turn voltage off during init, as this can otherwise + * interfere with Unicable SCR systems. + */ + ds3000_set_voltage(&state->frontend, SEC_VOLTAGE_OFF); return &state->frontend; error3: --- linux-3.13.0.orig/drivers/media/dvb-frontends/m88rs2000.c +++ linux-3.13.0/drivers/media/dvb-frontends/m88rs2000.c @@ -110,28 +110,94 @@ return b1[0]; } +static u32 m88rs2000_get_mclk(struct dvb_frontend *fe) +{ + struct m88rs2000_state *state = fe->demodulator_priv; + u32 mclk; + u8 reg; + /* Must not be 0x00 or 0xff */ + reg = m88rs2000_readreg(state, 0x86); + if (!reg || reg == 0xff) + return 0; + + reg /= 2; + reg += 1; + + mclk = (u32)(reg * RS2000_FE_CRYSTAL_KHZ + 28 / 2) / 28; + + return mclk; +} + +static int m88rs2000_set_carrieroffset(struct dvb_frontend *fe, s16 offset) +{ + struct m88rs2000_state *state = fe->demodulator_priv; + u32 mclk; + s32 tmp; + u8 reg; + int ret; + + mclk = m88rs2000_get_mclk(fe); + if (!mclk) + return -EINVAL; + + tmp = (offset * 4096 + (s32)mclk / 2) / (s32)mclk; + if (tmp < 0) + tmp += 4096; + + /* Carrier Offset */ + ret = m88rs2000_writereg(state, 0x9c, (u8)(tmp >> 4)); + + reg = m88rs2000_readreg(state, 0x9d); + reg &= 0xf; + reg |= (u8)(tmp & 0xf) << 4; + + ret |= m88rs2000_writereg(state, 0x9d, reg); + + return ret; +} + static int m88rs2000_set_symbolrate(struct dvb_frontend *fe, u32 srate) { struct m88rs2000_state *state = fe->demodulator_priv; int ret; - u32 temp; + u64 temp; + u32 mclk; u8 b[3]; if ((srate < 1000000) || (srate > 45000000)) return -EINVAL; + mclk = m88rs2000_get_mclk(fe); + if (!mclk) + return -EINVAL; + temp = srate / 1000; - temp *= 11831; - temp /= 68; - temp -= 3; + temp *= 1 << 24; + + do_div(temp, mclk); b[0] = (u8) (temp >> 16) & 0xff; b[1] = (u8) (temp >> 8) & 0xff; b[2] = (u8) temp & 0xff; + ret = m88rs2000_writereg(state, 0x93, b[2]); ret |= m88rs2000_writereg(state, 0x94, b[1]); ret |= m88rs2000_writereg(state, 0x95, b[0]); + if (srate > 10000000) + ret |= m88rs2000_writereg(state, 0xa0, 0x20); + else + ret |= m88rs2000_writereg(state, 0xa0, 0x60); + + ret |= m88rs2000_writereg(state, 0xa1, 0xe0); + + if (srate > 12000000) + ret |= m88rs2000_writereg(state, 0xa3, 0x20); + else if (srate > 2800000) + ret |= m88rs2000_writereg(state, 0xa3, 0x98); + else + ret |= m88rs2000_writereg(state, 0xa3, 0x90); + deb_info("m88rs2000: m88rs2000_set_symbolrate\n"); return ret; } @@ -261,8 +327,6 @@ struct inittab fe_reset[] = { {DEMOD_WRITE, 0x00, 0x01}, - {DEMOD_WRITE, 0xf1, 0xbf}, - {DEMOD_WRITE, 0x00, 0x01}, {DEMOD_WRITE, 0x20, 0x81}, {DEMOD_WRITE, 0x21, 0x80}, {DEMOD_WRITE, 0x10, 0x33}, @@ -305,9 +369,6 @@ {DEMOD_WRITE, 0x9b, 0x64}, {DEMOD_WRITE, 0x9e, 0x00}, {DEMOD_WRITE, 0x9f, 0xf8}, - {DEMOD_WRITE, 0xa0, 0x20}, - {DEMOD_WRITE, 0xa1, 0xe0}, - {DEMOD_WRITE, 0xa3, 0x38}, {DEMOD_WRITE, 0x98, 0xff}, {DEMOD_WRITE, 0xc0, 0x0f}, {DEMOD_WRITE, 0x89, 0x01}, @@ -540,9 +601,8 @@ struct dtv_frontend_properties *c = &fe->dtv_property_cache; fe_status_t status; int i, ret = 0; - s32 tmp; u32 tuner_freq; - u16 offset = 0; + s16 offset = 0; u8 reg; state->no_lock_count = 0; @@ -567,29 +627,26 @@ if (ret < 0) return -ENODEV; - offset = tuner_freq - c->frequency; - - /* calculate offset assuming 96000kHz*/ - tmp = offset; - tmp *= 65536; + offset = (s16)((s32)tuner_freq - c->frequency); - tmp = (2 * tmp + 96000) / (2 * 96000); - if (tmp < 0) - tmp += 65536; - - offset = tmp & 0xffff; + /* default mclk value 96.4285 * 2 * 1000 = 192857 */ + if (((c->frequency % 192857) >= (192857 - 3000)) || + (c->frequency % 192857) <= 3000) + ret = m88rs2000_writereg(state, 0x86, 0xc2); + else + ret = m88rs2000_writereg(state, 0x86, 0xc6); - ret = m88rs2000_writereg(state, 0x9a, 0x30); - /* Unknown usually 0xc6 sometimes 0xc1 */ - reg = m88rs2000_readreg(state, 0x86); - ret |= m88rs2000_writereg(state, 0x86, reg); - /* Offset lower nibble always 0 */ - ret |= m88rs2000_writereg(state, 0x9c, (offset >> 8)); - ret |= m88rs2000_writereg(state, 0x9d, offset & 0xf0); + ret |= m88rs2000_set_carrieroffset(fe, offset); + if (ret < 0) + return -ENODEV; + /* Reset demod by symbol rate */ + if (c->symbol_rate > 27500000) + ret = m88rs2000_writereg(state, 0xf1, 0xa4); + else + ret = m88rs2000_writereg(state, 0xf1, 0xbf); - /* Reset Demod */ - ret = m88rs2000_tab_set(state, fe_reset); + ret |= m88rs2000_tab_set(state, fe_reset); if (ret < 0) return -ENODEV; @@ -655,6 +712,22 @@ return 0; } +static int m88rs2000_get_tune_settings(struct dvb_frontend *fe, + struct dvb_frontend_tune_settings *tune) +{ + struct dtv_frontend_properties *c = &fe->dtv_property_cache; + + if (c->symbol_rate > 3000000) + tune->min_delay_ms = 2000; + else + tune->min_delay_ms = 3000; + + tune->step_size = c->symbol_rate / 16000; + tune->max_drift = c->symbol_rate / 2000; + + return 0; +} + static int m88rs2000_i2c_gate_ctrl(struct dvb_frontend *fe, int enable) { struct m88rs2000_state *state = fe->demodulator_priv; @@ -686,7 +759,7 @@ .symbol_rate_tolerance = 500, /* ppm */ .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | - FE_CAN_QPSK | + FE_CAN_QPSK | FE_CAN_INVERSION_AUTO | FE_CAN_FEC_AUTO }, @@ -706,6 +779,7 @@ .set_frontend = m88rs2000_set_frontend, .get_frontend = m88rs2000_get_frontend, + .get_tune_settings = m88rs2000_get_tune_settings, }; struct dvb_frontend *m88rs2000_attach(const struct m88rs2000_config *config, --- linux-3.13.0.orig/drivers/media/dvb-frontends/m88rs2000.h +++ linux-3.13.0/drivers/media/dvb-frontends/m88rs2000.h @@ -53,6 +53,8 @@ } #endif /* CONFIG_DVB_M88RS2000 */ +#define RS2000_FE_CRYSTAL_KHZ 27000 + enum { DEMOD_WRITE = 0x1, WRITE_DELAY = 0x10, --- linux-3.13.0.orig/drivers/media/dvb-frontends/nxt200x.c +++ linux-3.13.0/drivers/media/dvb-frontends/nxt200x.c @@ -40,7 +40,7 @@ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt /* Max transfer size done by I2C transfer functions */ -#define MAX_XFER_SIZE 64 +#define MAX_XFER_SIZE 256 #define NXT2002_DEFAULT_FIRMWARE "dvb-fe-nxt2002.fw" #define NXT2004_DEFAULT_FIRMWARE "dvb-fe-nxt2004.fw" --- linux-3.13.0.orig/drivers/media/dvb-frontends/s5h1420.c +++ linux-3.13.0/drivers/media/dvb-frontends/s5h1420.c @@ -180,7 +180,7 @@ int result = 0; dprintk("enter %s\n", __func__); - if (cmd->msg_len > 8) + if (cmd->msg_len > sizeof(cmd->msg)) return -EINVAL; /* setup for DISEQC */ --- linux-3.13.0.orig/drivers/media/dvb-frontends/tda1004x.c +++ linux-3.13.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-3.13.0.orig/drivers/media/dvb-frontends/tda10071.c +++ linux-3.13.0/drivers/media/dvb-frontends/tda10071.c @@ -667,6 +667,7 @@ struct dtv_frontend_properties *c = &fe->dtv_property_cache; int ret, i; u8 mode, rolloff, pilot, inversion, div; + fe_modulation_t modulation; dev_dbg(&priv->i2c->dev, "%s: delivery_system=%d modulation=%d " \ "frequency=%d symbol_rate=%d inversion=%d pilot=%d " \ @@ -701,10 +702,13 @@ switch (c->delivery_system) { case SYS_DVBS: + modulation = QPSK; rolloff = 0; pilot = 2; break; case SYS_DVBS2: + modulation = c->modulation; + switch (c->rolloff) { case ROLLOFF_20: rolloff = 2; @@ -749,7 +753,7 @@ for (i = 0, mode = 0xff; i < ARRAY_SIZE(TDA10071_MODCOD); i++) { if (c->delivery_system == TDA10071_MODCOD[i].delivery_system && - c->modulation == TDA10071_MODCOD[i].modulation && + modulation == TDA10071_MODCOD[i].modulation && c->fec_inner == TDA10071_MODCOD[i].fec) { mode = TDA10071_MODCOD[i].val; dev_dbg(&priv->i2c->dev, "%s: mode found=%02x\n", --- linux-3.13.0.orig/drivers/media/i2c/adv7511.c +++ linux-3.13.0/drivers/media/i2c/adv7511.c @@ -804,12 +804,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__); @@ -834,9 +845,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__); } @@ -907,7 +916,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__); @@ -937,6 +945,7 @@ } adv7511_s_power(sd, false); memset(&state->edid, 0, sizeof(struct adv7511_state_edid)); + adv7511_notify_no_edid(sd); } } @@ -1000,6 +1009,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); @@ -1019,7 +1029,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-3.13.0.orig/drivers/media/i2c/adv7604.c +++ linux-3.13.0/drivers/media/i2c/adv7604.c @@ -1752,7 +1752,7 @@ v4l2_info(sd, "HDCP keys read: %s%s\n", (hdmi_read(sd, 0x04) & 0x20) ? "yes" : "no", (hdmi_read(sd, 0x04) & 0x10) ? "ERROR" : ""); - if (!is_hdmi(sd)) { + if (is_hdmi(sd)) { bool audio_pll_locked = hdmi_read(sd, 0x04) & 0x01; bool audio_sample_packet_detect = hdmi_read(sd, 0x18) & 0x01; bool audio_mute = io_read(sd, 0x65) & 0x40; --- linux-3.13.0.orig/drivers/media/i2c/ov7670.c +++ linux-3.13.0/drivers/media/i2c/ov7670.c @@ -1109,7 +1109,7 @@ * windows that fall outside that. */ for (i = 0; i < n_win_sizes; i++) { - struct ov7670_win_size *win = &info->devtype->win_sizes[index]; + struct ov7670_win_size *win = &info->devtype->win_sizes[i]; if (info->min_width && win->width < info->min_width) continue; if (info->min_height && win->height < info->min_height) --- linux-3.13.0.orig/drivers/media/i2c/smiapp-pll.c +++ linux-3.13.0/drivers/media/i2c/smiapp-pll.c @@ -67,7 +67,7 @@ { dev_dbg(dev, "pre_pll_clk_div\t%d\n", pll->pre_pll_clk_div); dev_dbg(dev, "pll_multiplier \t%d\n", pll->pll_multiplier); - if (pll->flags != SMIAPP_PLL_FLAG_NO_OP_CLOCKS) { + if (!(pll->flags & SMIAPP_PLL_FLAG_NO_OP_CLOCKS)) { dev_dbg(dev, "op_sys_clk_div \t%d\n", pll->op_sys_clk_div); dev_dbg(dev, "op_pix_clk_div \t%d\n", pll->op_pix_clk_div); } @@ -77,7 +77,7 @@ dev_dbg(dev, "ext_clk_freq_hz \t%d\n", pll->ext_clk_freq_hz); dev_dbg(dev, "pll_ip_clk_freq_hz \t%d\n", pll->pll_ip_clk_freq_hz); dev_dbg(dev, "pll_op_clk_freq_hz \t%d\n", pll->pll_op_clk_freq_hz); - if (pll->flags & SMIAPP_PLL_FLAG_NO_OP_CLOCKS) { + if (!(pll->flags & SMIAPP_PLL_FLAG_NO_OP_CLOCKS)) { dev_dbg(dev, "op_sys_clk_freq_hz \t%d\n", pll->op_sys_clk_freq_hz); dev_dbg(dev, "op_pix_clk_freq_hz \t%d\n", --- linux-3.13.0.orig/drivers/media/i2c/smiapp/smiapp-core.c +++ linux-3.13.0/drivers/media/i2c/smiapp/smiapp-core.c @@ -2139,7 +2139,7 @@ ret = smiapp_set_compose(subdev, fh, sel); break; default: - BUG(); + ret = -EINVAL; } mutex_unlock(&sensor->mutex); @@ -2625,7 +2625,9 @@ pll->flags |= SMIAPP_PLL_FLAG_OP_PIX_CLOCK_PER_LANE; pll->scale_n = sensor->limits[SMIAPP_LIMIT_SCALER_N_MIN]; + mutex_lock(&sensor->mutex); rval = smiapp_update_mode(sensor); + mutex_unlock(&sensor->mutex); if (rval) { dev_err(&client->dev, "update mode failed\n"); goto out_nvm_release; --- linux-3.13.0.orig/drivers/media/media-device.c +++ linux-3.13.0/drivers/media/media-device.c @@ -93,6 +93,7 @@ struct media_entity *ent; struct media_entity_desc u_ent; + memset(&u_ent, 0, sizeof(u_ent)); if (copy_from_user(&u_ent.id, &uent->id, sizeof(u_ent.id))) return -EFAULT; @@ -105,8 +106,6 @@ if (ent->name) { strncpy(u_ent.name, ent->name, sizeof(u_ent.name)); u_ent.name[sizeof(u_ent.name) - 1] = '\0'; - } else { - memset(u_ent.name, 0, sizeof(u_ent.name)); } u_ent.type = ent->type; u_ent.revision = ent->revision; --- linux-3.13.0.orig/drivers/media/pci/bt8xx/bttv-driver.c +++ linux-3.13.0/drivers/media/pci/bt8xx/bttv-driver.c @@ -2333,6 +2333,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) { @@ -2342,6 +2355,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); @@ -2374,9 +2388,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) @@ -2409,6 +2423,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); @@ -2423,9 +2438,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) @@ -2433,8 +2449,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-3.13.0.orig/drivers/media/pci/cx18/cx18-driver.c +++ linux-3.13.0/drivers/media/pci/cx18/cx18-driver.c @@ -327,13 +327,16 @@ struct i2c_client *c; u8 eedata[256]; + memset(tv, 0, sizeof(*tv)); + c = kzalloc(sizeof(*c), GFP_KERNEL); + if (!c) + return; strlcpy(c->name, "cx18 tveeprom tmp", sizeof(c->name)); c->adapter = &cx->i2c_adap[0]; c->addr = 0xa0 >> 1; - memset(tv, 0, sizeof(*tv)); if (tveeprom_read(c, eedata, sizeof(eedata))) goto ret; @@ -1088,6 +1091,7 @@ setup.addr = ADDR_UNSET; setup.type = cx->options.tuner; setup.mode_mask = T_ANALOG_TV; /* matches TV tuners */ + setup.config = NULL; if (cx->options.radio > 0) setup.mode_mask |= T_RADIO; setup.tuner_callback = (setup.type == TUNER_XC2028) ? --- linux-3.13.0.orig/drivers/media/pci/ivtv/ivtv-alsa-pcm.c +++ linux-3.13.0/drivers/media/pci/ivtv/ivtv-alsa-pcm.c @@ -159,6 +159,12 @@ /* Instruct the CX2341[56] to start sending packets */ snd_ivtv_lock(itvsc); + + if (ivtv_init_on_first_open(itv)) { + snd_ivtv_unlock(itvsc); + return -ENXIO; + } + s = &itv->streams[IVTV_ENC_STREAM_TYPE_PCM]; v4l2_fh_init(&item.fh, s->vdev); --- linux-3.13.0.orig/drivers/media/pci/saa7134/saa7134-alsa.c +++ linux-3.13.0/drivers/media/pci/saa7134/saa7134-alsa.c @@ -1145,6 +1145,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; @@ -1194,7 +1196,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-3.13.0.orig/drivers/media/pci/saa7134/saa7134-video.c +++ linux-3.13.0/drivers/media/pci/saa7134/saa7134-video.c @@ -1562,10 +1562,13 @@ f->fmt.pix.height = dev->height; f->fmt.pix.field = fh->cap.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; f->fmt.pix.priv = 0; return 0; @@ -1646,10 +1649,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; f->fmt.pix.priv = 0; --- linux-3.13.0.orig/drivers/media/platform/omap3isp/isp.c +++ linux-3.13.0/drivers/media/platform/omap3isp/isp.c @@ -814,14 +814,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); --- linux-3.13.0.orig/drivers/media/platform/omap3isp/isppreview.c +++ linux-3.13.0/drivers/media/platform/omap3isp/isppreview.c @@ -1079,6 +1079,7 @@ */ static void preview_config_input_size(struct isp_prev_device *prev, u32 active) { + const struct v4l2_mbus_framefmt *format = &prev->formats[PREV_PAD_SINK]; struct isp_device *isp = to_isp_device(prev); unsigned int sph = prev->crop.left; unsigned int eph = prev->crop.left + prev->crop.width - 1; @@ -1086,6 +1087,14 @@ unsigned int elv = prev->crop.top + prev->crop.height - 1; u32 features; + if (format->code != V4L2_MBUS_FMT_Y8_1X8 && + format->code != V4L2_MBUS_FMT_Y10_1X10) { + sph -= 2; + eph += 2; + slv -= 2; + elv += 2; + } + features = (prev->params.params[0].features & active) | (prev->params.params[1].features & ~active); --- linux-3.13.0.orig/drivers/media/platform/s5p-mfc/s5p_mfc.c +++ linux-3.13.0/drivers/media/platform/s5p-mfc/s5p_mfc.c @@ -177,21 +177,6 @@ mutex_unlock(&dev->mfc_mutex); } -static enum s5p_mfc_node_type s5p_mfc_get_node_type(struct file *file) -{ - struct video_device *vdev = video_devdata(file); - - if (!vdev) { - mfc_err("failed to get video_device"); - return MFCNODE_INVALID; - } - if (vdev->index == 0) - return MFCNODE_DECODER; - else if (vdev->index == 1) - return MFCNODE_ENCODER; - return MFCNODE_INVALID; -} - static void s5p_mfc_clear_int_flags(struct s5p_mfc_dev *dev) { mfc_write(dev, 0, S5P_FIMV_RISC_HOST_INT); @@ -705,6 +690,7 @@ /* Open an MFC node */ static int s5p_mfc_open(struct file *file) { + struct video_device *vdev = video_devdata(file); struct s5p_mfc_dev *dev = video_drvdata(file); struct s5p_mfc_ctx *ctx = NULL; struct vb2_queue *q; @@ -742,7 +728,7 @@ /* Mark context as idle */ clear_work_bit_irqsave(ctx); dev->ctx[ctx->num] = ctx; - if (s5p_mfc_get_node_type(file) == MFCNODE_DECODER) { + if (vdev == dev->vfd_dec) { ctx->type = MFCINST_DECODER; ctx->c_ops = get_dec_codec_ops(); s5p_mfc_dec_init(ctx); @@ -752,7 +738,7 @@ mfc_err("Failed to setup mfc controls\n"); goto err_ctrls_setup; } - } else if (s5p_mfc_get_node_type(file) == MFCNODE_ENCODER) { + } else if (vdev == dev->vfd_enc) { ctx->type = MFCINST_ENCODER; ctx->c_ops = get_enc_codec_ops(); /* only for encoder */ @@ -797,10 +783,10 @@ q = &ctx->vq_dst; q->type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE; q->drv_priv = &ctx->fh; - if (s5p_mfc_get_node_type(file) == MFCNODE_DECODER) { + if (vdev == dev->vfd_dec) { q->io_modes = VB2_MMAP; q->ops = get_dec_queue_ops(); - } else if (s5p_mfc_get_node_type(file) == MFCNODE_ENCODER) { + } else if (vdev == dev->vfd_enc) { q->io_modes = VB2_MMAP | VB2_USERPTR; q->ops = get_enc_queue_ops(); } else { @@ -819,10 +805,10 @@ q->type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE; q->io_modes = VB2_MMAP; q->drv_priv = &ctx->fh; - if (s5p_mfc_get_node_type(file) == MFCNODE_DECODER) { + if (vdev == dev->vfd_dec) { q->io_modes = VB2_MMAP; q->ops = get_dec_queue_ops(); - } else if (s5p_mfc_get_node_type(file) == MFCNODE_ENCODER) { + } else if (vdev == dev->vfd_enc) { q->io_modes = VB2_MMAP | VB2_USERPTR; q->ops = get_enc_queue_ops(); } else { --- linux-3.13.0.orig/drivers/media/platform/s5p-mfc/s5p_mfc_common.h +++ linux-3.13.0/drivers/media/platform/s5p-mfc/s5p_mfc_common.h @@ -30,7 +30,7 @@ /* Offset base used to differentiate between CAPTURE and OUTPUT * while mmaping */ -#define DST_QUEUE_OFF_BASE (TASK_SIZE / 2) +#define DST_QUEUE_OFF_BASE (1 << 30) #define MFC_BANK1_ALLOC_CTX 0 #define MFC_BANK2_ALLOC_CTX 1 @@ -115,15 +115,6 @@ }; /** - * enum s5p_mfc_node_type - The type of an MFC device node. - */ -enum s5p_mfc_node_type { - MFCNODE_INVALID = -1, - MFCNODE_DECODER = 0, - MFCNODE_ENCODER = 1, -}; - -/** * enum s5p_mfc_inst_type - The type of an MFC instance. */ enum s5p_mfc_inst_type { --- linux-3.13.0.orig/drivers/media/platform/sh_veu.c +++ linux-3.13.0/drivers/media/platform/sh_veu.c @@ -1183,6 +1183,7 @@ } *vdev = sh_veu_videodev; + vdev->v4l2_dev = &veu->v4l2_dev; spin_lock_init(&veu->lock); mutex_init(&veu->fop_lock); vdev->lock = &veu->fop_lock; --- linux-3.13.0.orig/drivers/media/platform/vsp1/vsp1_video.c +++ linux-3.13.0/drivers/media/platform/vsp1/vsp1_video.c @@ -622,8 +622,6 @@ if (vb->num_planes < format->num_planes) return -EINVAL; - buf->video = video; - for (i = 0; i < vb->num_planes; ++i) { buf->addr[i] = vb2_dma_contig_plane_dma_addr(vb, i); buf->length[i] = vb2_plane_size(vb, i); --- linux-3.13.0.orig/drivers/media/platform/vsp1/vsp1_video.h +++ linux-3.13.0/drivers/media/platform/vsp1/vsp1_video.h @@ -89,7 +89,6 @@ } struct vsp1_video_buffer { - struct vsp1_video *video; struct vb2_buffer buf; struct list_head queue; --- linux-3.13.0.orig/drivers/media/rc/rc-main.c +++ linux-3.13.0/drivers/media/rc/rc-main.c @@ -56,7 +56,7 @@ struct rc_map_list *map; map = seek_rc_map(name); -#ifdef MODULE +#ifdef CONFIG_MODULES if (!map) { int rc = request_module(name); if (rc < 0) { @@ -978,9 +978,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-3.13.0.orig/drivers/media/tuners/fc2580.c +++ linux-3.13.0/drivers/media/tuners/fc2580.c @@ -195,7 +195,7 @@ f_ref = 2UL * priv->cfg->clock / r_val; n_val = div_u64_rem(f_vco, f_ref, &k_val); - k_val_reg = 1UL * k_val * (1 << 20) / f_ref; + k_val_reg = div_u64(1ULL * k_val * (1 << 20), f_ref); ret = fc2580_wr_reg(priv, 0x18, r18_val | ((k_val_reg >> 16) & 0xff)); if (ret < 0) @@ -348,8 +348,8 @@ if (ret < 0) goto err; - ret = fc2580_wr_reg(priv, 0x37, 1UL * priv->cfg->clock * \ - fc2580_if_filter_lut[i].mul / 1000000000); + ret = fc2580_wr_reg(priv, 0x37, div_u64(1ULL * priv->cfg->clock * + fc2580_if_filter_lut[i].mul, 1000000000)); if (ret < 0) goto err; --- linux-3.13.0.orig/drivers/media/tuners/fc2580_priv.h +++ linux-3.13.0/drivers/media/tuners/fc2580_priv.h @@ -22,6 +22,7 @@ #define FC2580_PRIV_H #include "fc2580.h" +#include struct fc2580_reg_val { u8 reg; --- linux-3.13.0.orig/drivers/media/tuners/xc4000.c +++ linux-3.13.0/drivers/media/tuners/xc4000.c @@ -93,7 +93,7 @@ struct firmware_description *firm; int firm_size; u32 if_khz; - u32 freq_hz; + u32 freq_hz, freq_offset; u32 bandwidth; u8 video_standard; u8 rf_mode; @@ -1157,14 +1157,14 @@ case SYS_ATSC: dprintk(1, "%s() VSB modulation\n", __func__); priv->rf_mode = XC_RF_MODE_AIR; - priv->freq_hz = c->frequency - 1750000; + priv->freq_offset = 1750000; priv->video_standard = XC4000_DTV6; type = DTV6; break; case SYS_DVBC_ANNEX_B: dprintk(1, "%s() QAM modulation\n", __func__); priv->rf_mode = XC_RF_MODE_CABLE; - priv->freq_hz = c->frequency - 1750000; + priv->freq_offset = 1750000; priv->video_standard = XC4000_DTV6; type = DTV6; break; @@ -1173,23 +1173,23 @@ dprintk(1, "%s() OFDM\n", __func__); if (bw == 0) { if (c->frequency < 400000000) { - priv->freq_hz = c->frequency - 2250000; + priv->freq_offset = 2250000; } else { - priv->freq_hz = c->frequency - 2750000; + priv->freq_offset = 2750000; } priv->video_standard = XC4000_DTV7_8; type = DTV78; } else if (bw <= 6000000) { priv->video_standard = XC4000_DTV6; - priv->freq_hz = c->frequency - 1750000; + priv->freq_offset = 1750000; type = DTV6; } else if (bw <= 7000000) { priv->video_standard = XC4000_DTV7; - priv->freq_hz = c->frequency - 2250000; + priv->freq_offset = 2250000; type = DTV7; } else { priv->video_standard = XC4000_DTV8; - priv->freq_hz = c->frequency - 2750000; + priv->freq_offset = 2750000; type = DTV8; } priv->rf_mode = XC_RF_MODE_AIR; @@ -1200,6 +1200,8 @@ goto fail; } + priv->freq_hz = c->frequency - priv->freq_offset; + dprintk(1, "%s() frequency=%d (compensated)\n", __func__, priv->freq_hz); @@ -1520,7 +1522,7 @@ { struct xc4000_priv *priv = fe->tuner_priv; - *freq = priv->freq_hz; + *freq = priv->freq_hz + priv->freq_offset; if (debug) { mutex_lock(&priv->lock); --- linux-3.13.0.orig/drivers/media/tuners/xc5000.c +++ linux-3.13.0/drivers/media/tuners/xc5000.c @@ -55,7 +55,7 @@ u32 if_khz; u16 xtal_khz; - u32 freq_hz; + u32 freq_hz, freq_offset; u32 bandwidth; u8 video_standard; u8 rf_mode; @@ -755,13 +755,13 @@ case SYS_ATSC: dprintk(1, "%s() VSB modulation\n", __func__); priv->rf_mode = XC_RF_MODE_AIR; - priv->freq_hz = freq - 1750000; + priv->freq_offset = 1750000; priv->video_standard = DTV6; break; case SYS_DVBC_ANNEX_B: dprintk(1, "%s() QAM modulation\n", __func__); priv->rf_mode = XC_RF_MODE_CABLE; - priv->freq_hz = freq - 1750000; + priv->freq_offset = 1750000; priv->video_standard = DTV6; break; case SYS_ISDBT: @@ -776,15 +776,15 @@ switch (bw) { case 6000000: priv->video_standard = DTV6; - priv->freq_hz = freq - 1750000; + priv->freq_offset = 1750000; break; case 7000000: priv->video_standard = DTV7; - priv->freq_hz = freq - 2250000; + priv->freq_offset = 2250000; break; case 8000000: priv->video_standard = DTV8; - priv->freq_hz = freq - 2750000; + priv->freq_offset = 2750000; break; default: printk(KERN_ERR "xc5000 bandwidth not set!\n"); @@ -798,15 +798,15 @@ priv->rf_mode = XC_RF_MODE_CABLE; if (bw <= 6000000) { priv->video_standard = DTV6; - priv->freq_hz = freq - 1750000; + priv->freq_offset = 1750000; b = 6; } else if (bw <= 7000000) { priv->video_standard = DTV7; - priv->freq_hz = freq - 2250000; + priv->freq_offset = 2250000; b = 7; } else { priv->video_standard = DTV7_8; - priv->freq_hz = freq - 2750000; + priv->freq_offset = 2750000; b = 8; } dprintk(1, "%s() Bandwidth %dMHz (%d)\n", __func__, @@ -817,6 +817,8 @@ return -EINVAL; } + priv->freq_hz = freq - priv->freq_offset; + dprintk(1, "%s() frequency=%d (compensated to %d)\n", __func__, freq, priv->freq_hz); @@ -1067,7 +1069,7 @@ { struct xc5000_priv *priv = fe->tuner_priv; dprintk(1, "%s()\n", __func__); - *freq = priv->freq_hz; + *freq = priv->freq_hz + priv->freq_offset; return 0; } --- linux-3.13.0.orig/drivers/media/usb/au0828/au0828-cards.c +++ linux-3.13.0/drivers/media/usb/au0828/au0828-cards.c @@ -36,6 +36,11 @@ au0828_clear(dev, REG_000, 0x10); } +/* + * WARNING: There's a quirks table at sound/usb/quirks-table.h + * that should also be updated every time a new device with V4L2 support + * is added here. + */ struct au0828_board au0828_boards[] = { [AU0828_BOARD_UNKNOWN] = { .name = "Unknown board", --- linux-3.13.0.orig/drivers/media/usb/au0828/au0828-video.c +++ linux-3.13.0/drivers/media/usb/au0828/au0828-video.c @@ -787,11 +787,27 @@ /* * Auvitek au0828 analog stream enable - * Please set interface0 to AS5 before enable the stream */ static int au0828_analog_stream_enable(struct au0828_dev *d) { + struct usb_interface *iface; + int ret; + dprintk(1, "au0828_analog_stream_enable called\n"); + + iface = usb_ifnum_to_if(d->usbdev, 0); + if (iface && iface->cur_altsetting->desc.bAlternateSetting != 5) { + dprintk(1, "Changing intf#0 to alt 5\n"); + /* set au0828 interface0 to AS5 here again */ + ret = usb_set_interface(d->usbdev, 0, 5); + if (ret < 0) { + printk(KERN_INFO "Au0828 can't set alt setting to 5!\n"); + return -EBUSY; + } + } + + /* FIXME: size should be calculated using d->width, d->height */ + au0828_writereg(d, AU0828_SENSORCTRL_VBI_103, 0x00); au0828_writereg(d, 0x106, 0x00); /* set x position */ @@ -1002,15 +1018,6 @@ return -ERESTARTSYS; } if (dev->users == 0) { - /* set au0828 interface0 to AS5 here again */ - ret = usb_set_interface(dev->usbdev, 0, 5); - if (ret < 0) { - mutex_unlock(&dev->lock); - printk(KERN_INFO "Au0828 can't set alternate to 5!\n"); - kfree(fh); - return -EBUSY; - } - au0828_analog_stream_enable(dev); au0828_analog_stream_reset(dev); @@ -1252,13 +1259,6 @@ } } - /* set au0828 interface0 to AS5 here again */ - ret = usb_set_interface(dev->usbdev, 0, 5); - if (ret < 0) { - printk(KERN_INFO "Au0828 can't set alt setting to 5!\n"); - return -EBUSY; - } - au0828_analog_stream_enable(dev); return 0; --- linux-3.13.0.orig/drivers/media/usb/dvb-usb-v2/af9035.c +++ linux-3.13.0/drivers/media/usb/dvb-usb-v2/af9035.c @@ -1539,6 +1539,8 @@ &af9035_props, "TerraTec Cinergy T Stick Dual RC (rev. 2)", NULL) }, { DVB_USB_DEVICE(USB_VID_LEADTEK, 0x6a05, &af9035_props, "Leadtek WinFast DTV Dongle Dual", NULL) }, + { DVB_USB_DEVICE(USB_VID_HAUPPAUGE, 0xf900, + &af9035_props, "Hauppauge WinTV-MiniStick 2", NULL) }, { } }; MODULE_DEVICE_TABLE(usb, af9035_id_table); --- linux-3.13.0.orig/drivers/media/usb/dvb-usb-v2/anysee.c +++ linux-3.13.0/drivers/media/usb/dvb-usb-v2/anysee.c @@ -442,6 +442,7 @@ * IOD[0] ZL10353 1=enabled * IOE[0] tuner 0=enabled * tuner is behind ZL10353 I2C-gate + * tuner is behind TDA10023 I2C-gate * * E7 TC VID=1c73 PID=861f HW=18 FW=0.7 AMTCI=0.5 "anysee-E7TC(LP)" * PCB: 508TC (rev0.6) @@ -956,7 +957,7 @@ if (fe && adap->fe[1]) { /* attach tuner for 2nd FE */ - fe = dvb_attach(dvb_pll_attach, adap->fe[0], + fe = dvb_attach(dvb_pll_attach, adap->fe[1], (0xc0 >> 1), &d->i2c_adap, DVB_PLL_SAMSUNG_DTOS403IH102A); } --- linux-3.13.0.orig/drivers/media/usb/dvb-usb-v2/it913x.c +++ linux-3.13.0/drivers/media/usb/dvb-usb-v2/it913x.c @@ -799,6 +799,9 @@ { DVB_USB_DEVICE(USB_VID_KWORLD_2, USB_PID_CTVDIGDUAL_V2, &it913x_properties, "Digital Dual TV Receiver CTVDIGDUAL_V2", RC_MAP_IT913X_V1) }, + { DVB_USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_H335, + &it913x_properties, "Avermedia H335", + RC_MAP_IT913X_V2) }, {} /* Terminating entry */ }; --- linux-3.13.0.orig/drivers/media/usb/dvb-usb-v2/lmedm04.c +++ linux-3.13.0/drivers/media/usb/dvb-usb-v2/lmedm04.c @@ -350,6 +350,7 @@ { struct dvb_usb_device *d = adap_to_d(adap); struct lme2510_state *lme_int = adap_to_priv(adap); + struct usb_host_endpoint *ep; lme_int->lme_urb = usb_alloc_urb(0, GFP_ATOMIC); @@ -371,6 +372,12 @@ adap, 8); + /* Quirk of pipe reporting PIPE_BULK but behaves as interrupt */ + ep = usb_pipe_endpoint(d->udev, lme_int->lme_urb->pipe); + + if (usb_endpoint_type(&ep->desc) == USB_ENDPOINT_XFER_BULK) + lme_int->lme_urb->pipe = usb_rcvbulkpipe(d->udev, 0xa), + lme_int->lme_urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; usb_submit_urb(lme_int->lme_urb, GFP_ATOMIC); --- linux-3.13.0.orig/drivers/media/usb/dvb-usb-v2/mxl111sf-tuner.h +++ linux-3.13.0/drivers/media/usb/dvb-usb-v2/mxl111sf-tuner.h @@ -68,7 +68,7 @@ #else static inline struct dvb_frontend *mxl111sf_tuner_attach(struct dvb_frontend *fe, - struct mxl111sf_state *mxl_state + struct mxl111sf_state *mxl_state, struct mxl111sf_tuner_config *cfg) { printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); --- linux-3.13.0.orig/drivers/media/usb/dvb-usb-v2/mxl111sf.c +++ linux-3.13.0/drivers/media/usb/dvb-usb-v2/mxl111sf.c @@ -105,7 +105,7 @@ ret = -EINVAL; } - pr_debug("R: (0x%02x, 0x%02x)\n", addr, *data); + pr_debug("R: (0x%02x, 0x%02x)\n", addr, buf[1]); fail: return ret; } --- linux-3.13.0.orig/drivers/media/usb/dvb-usb-v2/rtl28xxu.c +++ linux-3.13.0/drivers/media/usb/dvb-usb-v2/rtl28xxu.c @@ -1427,6 +1427,14 @@ &rtl2832u_props, "Leadtek WinFast DTV Dongle mini", NULL) }, { DVB_USB_DEVICE(USB_VID_GTEK, USB_PID_CPYTO_REDI_PC50A, &rtl2832u_props, "Crypto ReDi PC 50 A", NULL) }, + { DVB_USB_DEVICE(USB_VID_KYE, 0x707f, + &rtl2832u_props, "Genius TVGo DVB-T03", NULL) }, + { DVB_USB_DEVICE(USB_VID_KWORLD_2, 0xd395, + &rtl2832u_props, "Peak DVB-T USB", NULL) }, + { DVB_USB_DEVICE(USB_VID_KWORLD_2, USB_PID_SVEON_STV20_RTL2832U, + &rtl2832u_props, "Sveon STV20", NULL) }, + { DVB_USB_DEVICE(USB_VID_KWORLD_2, USB_PID_SVEON_STV27, + &rtl2832u_props, "Sveon STV27", NULL) }, { DVB_USB_DEVICE(USB_VID_HANFTEK, 0x0131, &rtl2832u_props, "Astrometa DVB-T2", NULL) }, --- linux-3.13.0.orig/drivers/media/usb/dvb-usb/af9005.c +++ linux-3.13.0/drivers/media/usb/dvb-usb/af9005.c @@ -1081,9 +1081,12 @@ err("usb_register failed. (%d)", result); return result; } +#if IS_MODULE(CONFIG_DVB_USB_AF9005) || defined(CONFIG_DVB_USB_AF9005_REMOTE) + /* FIXME: convert to todays kernel IR infrastructure */ rc_decode = symbol_request(af9005_rc_decode); rc_keys = symbol_request(rc_map_af9005_table); rc_keys_size = symbol_request(rc_map_af9005_table_size); +#endif if (rc_decode == NULL || rc_keys == NULL || rc_keys_size == NULL) { err("af9005_rc_decode function not found, disabling remote"); af9005_properties.rc.legacy.rc_query = NULL; --- linux-3.13.0.orig/drivers/media/usb/dvb-usb/cxusb.c +++ linux-3.13.0/drivers/media/usb/dvb-usb/cxusb.c @@ -149,6 +149,7 @@ int num) { struct dvb_usb_device *d = i2c_get_adapdata(adap); + int ret; int i; if (mutex_lock_interruptible(&d->i2c_mutex) < 0) @@ -173,7 +174,8 @@ if (1 + msg[i].len > sizeof(ibuf)) { warn("i2c rd: len=%d is too big!\n", msg[i].len); - return -EOPNOTSUPP; + ret = -EOPNOTSUPP; + goto unlock; } obuf[0] = 0; obuf[1] = msg[i].len; @@ -193,12 +195,14 @@ if (3 + msg[i].len > sizeof(obuf)) { warn("i2c wr: len=%d is too big!\n", msg[i].len); - return -EOPNOTSUPP; + ret = -EOPNOTSUPP; + goto unlock; } if (1 + msg[i + 1].len > sizeof(ibuf)) { warn("i2c rd: len=%d is too big!\n", msg[i + 1].len); - return -EOPNOTSUPP; + ret = -EOPNOTSUPP; + goto unlock; } obuf[0] = msg[i].len; obuf[1] = msg[i+1].len; @@ -223,7 +227,8 @@ if (2 + msg[i].len > sizeof(obuf)) { warn("i2c wr: len=%d is too big!\n", msg[i].len); - return -EOPNOTSUPP; + ret = -EOPNOTSUPP; + goto unlock; } obuf[0] = msg[i].addr; obuf[1] = msg[i].len; @@ -237,8 +242,14 @@ } } + if (i == num) + ret = num; + else + ret = -EREMOTEIO; + +unlock: mutex_unlock(&d->i2c_mutex); - return i == num ? num : -EREMOTEIO; + return ret; } static u32 cxusb_i2c_func(struct i2c_adapter *adapter) --- linux-3.13.0.orig/drivers/media/usb/dvb-usb/dw2102.c +++ linux-3.13.0/drivers/media/usb/dvb-usb/dw2102.c @@ -301,6 +301,7 @@ static int dw2102_earda_i2c_transfer(struct i2c_adapter *adap, struct i2c_msg msg[], int num) { struct dvb_usb_device *d = i2c_get_adapdata(adap); + int ret; if (!d) return -ENODEV; @@ -316,7 +317,8 @@ if (2 + msg[1].len > sizeof(ibuf)) { warn("i2c rd: len=%d is too big!\n", msg[1].len); - return -EOPNOTSUPP; + ret = -EOPNOTSUPP; + goto unlock; } obuf[0] = msg[0].addr << 1; @@ -340,7 +342,8 @@ if (2 + msg[0].len > sizeof(obuf)) { warn("i2c wr: len=%d is too big!\n", msg[1].len); - return -EOPNOTSUPP; + ret = -EOPNOTSUPP; + goto unlock; } obuf[0] = msg[0].addr << 1; @@ -357,7 +360,8 @@ if (2 + msg[0].len > sizeof(obuf)) { warn("i2c wr: len=%d is too big!\n", msg[1].len); - return -EOPNOTSUPP; + ret = -EOPNOTSUPP; + goto unlock; } obuf[0] = msg[0].addr << 1; @@ -386,15 +390,17 @@ break; } + ret = num; +unlock: mutex_unlock(&d->i2c_mutex); - return num; + return ret; } static int dw2104_i2c_transfer(struct i2c_adapter *adap, struct i2c_msg msg[], int num) { struct dvb_usb_device *d = i2c_get_adapdata(adap); - int len, i, j; + int len, i, j, ret; if (!d) return -ENODEV; @@ -430,7 +436,8 @@ if (2 + msg[j].len > sizeof(ibuf)) { warn("i2c rd: len=%d is too big!\n", msg[j].len); - return -EOPNOTSUPP; + ret = -EOPNOTSUPP; + goto unlock; } dw210x_op_rw(d->udev, 0xc3, @@ -466,7 +473,8 @@ if (2 + msg[j].len > sizeof(obuf)) { warn("i2c wr: len=%d is too big!\n", msg[j].len); - return -EOPNOTSUPP; + ret = -EOPNOTSUPP; + goto unlock; } obuf[0] = msg[j].addr << 1; @@ -481,15 +489,18 @@ } } + ret = num; +unlock: mutex_unlock(&d->i2c_mutex); - return num; + return ret; } static int dw3101_i2c_transfer(struct i2c_adapter *adap, struct i2c_msg msg[], int num) { struct dvb_usb_device *d = i2c_get_adapdata(adap); + int ret; int i; if (!d) @@ -506,7 +517,8 @@ if (2 + msg[1].len > sizeof(ibuf)) { warn("i2c rd: len=%d is too big!\n", msg[1].len); - return -EOPNOTSUPP; + ret = -EOPNOTSUPP; + goto unlock; } obuf[0] = msg[0].addr << 1; obuf[1] = msg[0].len; @@ -530,7 +542,8 @@ if (2 + msg[0].len > sizeof(obuf)) { warn("i2c wr: len=%d is too big!\n", msg[0].len); - return -EOPNOTSUPP; + ret = -EOPNOTSUPP; + goto unlock; } obuf[0] = msg[0].addr << 1; obuf[1] = msg[0].len; @@ -556,9 +569,11 @@ msg[i].flags == 0 ? ">>>" : "<<<"); debug_dump(msg[i].buf, msg[i].len, deb_xfer); } + ret = num; +unlock: mutex_unlock(&d->i2c_mutex); - return num; + return ret; } static int s6x0_i2c_transfer(struct i2c_adapter *adap, struct i2c_msg msg[], @@ -566,7 +581,7 @@ { struct dvb_usb_device *d = i2c_get_adapdata(adap); struct usb_device *udev; - int len, i, j; + int len, i, j, ret; if (!d) return -ENODEV; @@ -618,7 +633,8 @@ if (msg[j].len > sizeof(ibuf)) { warn("i2c rd: len=%d is too big!\n", msg[j].len); - return -EOPNOTSUPP; + ret = -EOPNOTSUPP; + goto unlock; } dw210x_op_rw(d->udev, 0x91, 0, 0, @@ -652,7 +668,8 @@ if (2 + msg[j].len > sizeof(obuf)) { warn("i2c wr: len=%d is too big!\n", msg[j].len); - return -EOPNOTSUPP; + ret = -EOPNOTSUPP; + goto unlock; } obuf[0] = msg[j + 1].len; @@ -671,7 +688,8 @@ if (2 + msg[j].len > sizeof(obuf)) { warn("i2c wr: len=%d is too big!\n", msg[j].len); - return -EOPNOTSUPP; + ret = -EOPNOTSUPP; + goto unlock; } obuf[0] = msg[j].len + 1; obuf[1] = (msg[j].addr << 1); @@ -685,9 +703,11 @@ } } } + ret = num; +unlock: mutex_unlock(&d->i2c_mutex); - return num; + return ret; } static int su3000_i2c_transfer(struct i2c_adapter *adap, struct i2c_msg msg[], --- linux-3.13.0.orig/drivers/media/usb/em28xx/em28xx-dvb.c +++ linux-3.13.0/drivers/media/usb/em28xx/em28xx-dvb.c @@ -693,7 +693,8 @@ static int em28xx_pctv_290e_set_lna(struct dvb_frontend *fe) { struct dtv_frontend_properties *c = &fe->dtv_property_cache; - struct em28xx *dev = fe->dvb->priv; + struct em28xx_i2c_bus *i2c_bus = fe->dvb->priv; + struct em28xx *dev = i2c_bus->dev; #ifdef CONFIG_GPIOLIB struct em28xx_dvb *dvb = dev->dvb; int ret; --- linux-3.13.0.orig/drivers/media/usb/em28xx/em28xx-video.c +++ linux-3.13.0/drivers/media/usb/em28xx/em28xx-video.c @@ -148,7 +148,10 @@ em28xx_isocdbg("[%p/%d] wakeup\n", buf, buf->top_field); buf->vb.v4l2_buf.sequence = dev->field_count++; - buf->vb.v4l2_buf.field = V4L2_FIELD_INTERLACED; + if (dev->progressive) + buf->vb.v4l2_buf.field = V4L2_FIELD_NONE; + else + buf->vb.v4l2_buf.field = V4L2_FIELD_INTERLACED; v4l2_get_timestamp(&buf->vb.v4l2_buf.timestamp); vb2_buffer_done(&buf->vb, VB2_BUF_STATE_DONE); @@ -696,13 +699,16 @@ } spin_lock_irqsave(&dev->slock, flags); + if (dev->usb_ctl.vid_buf != NULL) { + vb2_buffer_done(&dev->usb_ctl.vid_buf->vb, VB2_BUF_STATE_ERROR); + dev->usb_ctl.vid_buf = NULL; + } while (!list_empty(&vidq->active)) { struct em28xx_buffer *buf; buf = list_entry(vidq->active.next, struct em28xx_buffer, list); list_del(&buf->list); vb2_buffer_done(&buf->vb, VB2_BUF_STATE_ERROR); } - dev->usb_ctl.vid_buf = NULL; spin_unlock_irqrestore(&dev->slock, flags); return 0; @@ -724,13 +730,16 @@ } spin_lock_irqsave(&dev->slock, flags); + if (dev->usb_ctl.vbi_buf != NULL) { + vb2_buffer_done(&dev->usb_ctl.vbi_buf->vb, VB2_BUF_STATE_ERROR); + dev->usb_ctl.vbi_buf = NULL; + } while (!list_empty(&vbiq->active)) { struct em28xx_buffer *buf; buf = list_entry(vbiq->active.next, struct em28xx_buffer, list); list_del(&buf->list); vb2_buffer_done(&buf->vb, VB2_BUF_STATE_ERROR); } - dev->usb_ctl.vbi_buf = NULL; spin_unlock_irqrestore(&dev->slock, flags); return 0; --- linux-3.13.0.orig/drivers/media/usb/gspca/ov534.c +++ linux-3.13.0/drivers/media/usb/gspca/ov534.c @@ -1490,8 +1490,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-3.13.0.orig/drivers/media/usb/gspca/pac7302.c +++ linux-3.13.0/drivers/media/usb/gspca/pac7302.c @@ -928,6 +928,7 @@ {USB_DEVICE(0x093a, 0x2620)}, {USB_DEVICE(0x093a, 0x2621)}, {USB_DEVICE(0x093a, 0x2622), .driver_info = FL_VFLIP}, + {USB_DEVICE(0x093a, 0x2623), .driver_info = FL_VFLIP}, {USB_DEVICE(0x093a, 0x2624), .driver_info = FL_VFLIP}, {USB_DEVICE(0x093a, 0x2625)}, {USB_DEVICE(0x093a, 0x2626)}, --- linux-3.13.0.orig/drivers/media/usb/gspca/sn9c20x.c +++ linux-3.13.0/drivers/media/usb/gspca/sn9c20x.c @@ -2359,6 +2359,7 @@ {USB_DEVICE(0x045e, 0x00f4), SN9C20X(OV9650, 0x30, 0)}, {USB_DEVICE(0x145f, 0x013d), SN9C20X(OV7660, 0x21, 0)}, {USB_DEVICE(0x0458, 0x7029), SN9C20X(HV7131R, 0x11, 0)}, + {USB_DEVICE(0x0458, 0x7045), SN9C20X(MT9M112, 0x5d, LED_REVERSE)}, {USB_DEVICE(0x0458, 0x704a), SN9C20X(MT9M112, 0x5d, 0)}, {USB_DEVICE(0x0458, 0x704c), SN9C20X(MT9M112, 0x5d, 0)}, {USB_DEVICE(0xa168, 0x0610), SN9C20X(HV7131R, 0x11, 0)}, --- linux-3.13.0.orig/drivers/media/usb/gspca/topro.c +++ linux-3.13.0/drivers/media/usb/gspca/topro.c @@ -4792,7 +4792,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-3.13.0.orig/drivers/media/usb/hdpvr/hdpvr-video.c +++ linux-3.13.0/drivers/media/usb/hdpvr/hdpvr-video.c @@ -82,7 +82,7 @@ } /*=========================================================================*/ -/* bufffer bits */ +/* buffer bits */ /* function expects dev->io_mutex to be hold by caller */ int hdpvr_cancel_queue(struct hdpvr_device *dev) @@ -926,7 +926,7 @@ case V4L2_CID_MPEG_AUDIO_ENCODING: if (dev->flags & HDPVR_FLAG_AC3_CAP) { opt->audio_codec = ctrl->val; - return hdpvr_set_audio(dev, opt->audio_input, + return hdpvr_set_audio(dev, opt->audio_input + 1, opt->audio_codec); } return 0; @@ -1198,7 +1198,7 @@ v4l2_ctrl_new_std_menu(hdl, &hdpvr_ctrl_ops, V4L2_CID_MPEG_AUDIO_ENCODING, ac3 ? V4L2_MPEG_AUDIO_ENCODING_AC3 : V4L2_MPEG_AUDIO_ENCODING_AAC, - 0x7, V4L2_MPEG_AUDIO_ENCODING_AAC); + 0x7, ac3 ? dev->options.audio_codec : V4L2_MPEG_AUDIO_ENCODING_AAC); v4l2_ctrl_new_std_menu(hdl, &hdpvr_ctrl_ops, V4L2_CID_MPEG_VIDEO_ENCODING, V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC, 0x3, --- linux-3.13.0.orig/drivers/media/usb/pwc/pwc-if.c +++ linux-3.13.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 */ @@ -799,6 +800,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-3.13.0.orig/drivers/media/usb/siano/smsusb.c +++ linux-3.13.0/drivers/media/usb/siano/smsusb.c @@ -653,6 +653,8 @@ .driver_info = SMS1XXX_BOARD_ZTE_DVB_DATA_CARD }, { USB_DEVICE(0x19D2, 0x0078), .driver_info = SMS1XXX_BOARD_ONDA_MDTV_DATA_CARD }, + { USB_DEVICE(0x2013, 0x0257), + .driver_info = SMS1XXX_BOARD_PCTV_77E }, { } /* Terminating entry */ }; --- linux-3.13.0.orig/drivers/media/usb/stk1160/stk1160-v4l.c +++ linux-3.13.0/drivers/media/usb/stk1160/stk1160-v4l.c @@ -244,6 +244,11 @@ if (mutex_lock_interruptible(&dev->v4l_lock)) return -ERESTARTSYS; + /* + * Once URBs are cancelled, the URB complete handler + * won't be running. This is required to safely release the + * current buffer (dev->isoc_ctl.buf). + */ stk1160_cancel_isoc(dev); /* @@ -624,8 +629,16 @@ stk1160_info("buffer [%p/%d] aborted\n", buf, buf->vb.v4l2_buf.index); } - /* It's important to clear current buffer */ - dev->isoc_ctl.buf = NULL; + + /* It's important to release the current buffer */ + if (dev->isoc_ctl.buf) { + buf = dev->isoc_ctl.buf; + dev->isoc_ctl.buf = NULL; + + vb2_buffer_done(&buf->vb, VB2_BUF_STATE_ERROR); + stk1160_info("buffer [%p/%d] aborted\n", + buf, buf->vb.v4l2_buf.index); + } spin_unlock_irqrestore(&dev->buf_lock, flags); } --- linux-3.13.0.orig/drivers/media/usb/ttusb-dec/ttusbdecfe.c +++ linux-3.13.0/drivers/media/usb/ttusb-dec/ttusbdecfe.c @@ -156,6 +156,9 @@ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + if (cmd->msg_len > sizeof(b) - 4) + return -EINVAL; + memcpy(&b[4], cmd->msg, cmd->msg_len); state->config->send_command(fe, 0x72, --- linux-3.13.0.orig/drivers/media/usb/usbvision/usbvision-video.c +++ linux-3.13.0/drivers/media/usb/usbvision/usbvision-video.c @@ -1522,7 +1522,7 @@ const struct usb_host_interface *interface; struct usb_usbvision *usbvision = NULL; const struct usb_endpoint_descriptor *endpoint; - int model, i; + int model, i, ret; PDEBUG(DBG_PROBE, "VID=%#04x, PID=%#04x, ifnum=%u", dev->descriptor.idVendor, @@ -1531,33 +1531,58 @@ model = devid->driver_info; if (model < 0 || model >= usbvision_device_data_size) { PDEBUG(DBG_PROBE, "model out of bounds %d", model); - return -ENODEV; + ret = -ENODEV; + goto err_usb; } 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); dev_err(&intf->dev, "%s: Endpoint attributes %d", __func__, endpoint->bmAttributes); - return -ENODEV; + ret = -ENODEV; + goto err_usb; } if (usb_endpoint_dir_out(endpoint)) { dev_err(&intf->dev, "%s: interface %d. has ISO OUT endpoint!\n", __func__, ifnum); - return -ENODEV; + ret = -ENODEV; + goto err_usb; } usbvision = usbvision_alloc(dev, intf); if (usbvision == NULL) { dev_err(&intf->dev, "%s: couldn't allocate USBVision struct\n", __func__); - return -ENOMEM; + ret = -ENOMEM; + goto err_usb; } if (dev->descriptor.bNumConfigurations > 1) @@ -1576,8 +1601,8 @@ usbvision->alt_max_pkt_size = kmalloc(32 * usbvision->num_alt, GFP_KERNEL); if (usbvision->alt_max_pkt_size == NULL) { dev_err(&intf->dev, "usbvision: out of memory!\n"); - usbvision_release(usbvision); - return -ENOMEM; + ret = -ENOMEM; + goto err_pkt; } for (i = 0; i < usbvision->num_alt; i++) { @@ -1612,6 +1637,12 @@ PDEBUG(DBG_PROBE, "success"); return 0; + +err_pkt: + usbvision_release(usbvision); +err_usb: + usb_put_dev(dev); + return ret; } --- linux-3.13.0.orig/drivers/media/usb/uvc/uvc_driver.c +++ linux-3.13.0/drivers/media/usb/uvc/uvc_driver.c @@ -1603,12 +1603,12 @@ { struct list_head *p, *n; - usb_put_intf(dev->intf); - usb_put_dev(dev->udev); - uvc_status_cleanup(dev); uvc_ctrl_cleanup_device(dev); + usb_put_intf(dev->intf); + usb_put_dev(dev->udev); + if (dev->vdev.dev) v4l2_device_unregister(&dev->vdev); #ifdef CONFIG_MEDIA_CONTROLLER @@ -2209,6 +2209,24 @@ .bInterfaceClass = USB_CLASS_VIDEO, .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 }, + /* Dell XPS M1330 (OmniVision OV7670 webcam) */ + { .match_flags = USB_DEVICE_ID_MATCH_DEVICE + | USB_DEVICE_ID_MATCH_INT_INFO, + .idVendor = 0x05a9, + .idProduct = 0x7670, + .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 --- linux-3.13.0.orig/drivers/media/usb/uvc/uvc_video.c +++ linux-3.13.0/drivers/media/usb/uvc/uvc_video.c @@ -361,6 +361,14 @@ * Clocks and timestamps */ +static inline void uvc_video_get_ts(struct timespec *ts) +{ + if (uvc_clock_param == CLOCK_MONOTONIC) + ktime_get_ts(ts); + else + ktime_get_real_ts(ts); +} + static void uvc_video_clock_decode(struct uvc_streaming *stream, struct uvc_buffer *buf, const __u8 *data, int len) @@ -420,7 +428,7 @@ stream->clock.last_sof = dev_sof; host_sof = usb_get_current_frame_number(stream->dev->udev); - ktime_get_ts(&ts); + uvc_video_get_ts(&ts); /* The UVC specification allows device implementations that can't obtain * the USB frame number to keep their own frame counters as long as they @@ -1011,10 +1019,7 @@ return -ENODATA; } - if (uvc_clock_param == CLOCK_MONOTONIC) - ktime_get_ts(&ts); - else - ktime_get_real_ts(&ts); + uvc_video_get_ts(&ts); buf->buf.v4l2_buf.sequence = stream->sequence; buf->buf.v4l2_buf.timestamp.tv_sec = ts.tv_sec; @@ -1847,7 +1852,25 @@ if (!enable) { uvc_uninit_video(stream, 1); - usb_set_interface(stream->dev->udev, stream->intfnum, 0); + if (stream->intf->num_altsetting > 1) { + usb_set_interface(stream->dev->udev, + stream->intfnum, 0); + } else { + /* UVC doesn't specify how to inform a bulk-based device + * when the video stream is stopped. Windows sends a + * CLEAR_FEATURE(HALT) request to the video streaming + * bulk endpoint, mimic the same behaviour. + */ + unsigned int epnum = stream->header.bEndpointAddress + & USB_ENDPOINT_NUMBER_MASK; + unsigned int dir = stream->header.bEndpointAddress + & USB_ENDPOINT_DIR_MASK; + unsigned int pipe; + + pipe = usb_sndbulkpipe(stream->dev->udev, epnum) | dir; + usb_clear_halt(stream->dev->udev, pipe); + } + uvc_queue_enable(&stream->queue, 0); uvc_video_clock_cleanup(stream); return 0; --- linux-3.13.0.orig/drivers/media/v4l2-core/v4l2-common.c +++ linux-3.13.0/drivers/media/v4l2-core/v4l2-common.c @@ -431,16 +431,13 @@ /* Bits that must be zero to be aligned */ unsigned int mask = ~((1 << align) - 1); + /* Clamp to aligned min and max */ + x = clamp(x, (min + ~mask) & mask, max & mask); + /* Round to nearest aligned value */ if (align) x = (x + (1 << (align - 1))) & mask; - /* Clamp to aligned value of min and max */ - if (x < min) - x = (min + ~mask) & mask; - else if (x > max) - x = max & mask; - return x; } --- linux-3.13.0.orig/drivers/media/v4l2-core/v4l2-compat-ioctl32.c +++ linux-3.13.0/drivers/media/v4l2-core/v4l2-compat-ioctl32.c @@ -178,6 +178,9 @@ static int __get_v4l2_format32(struct v4l2_format *kp, struct v4l2_format32 __user *up) { + if (get_user(kp->type, &up->type)) + return -EFAULT; + switch (kp->type) { case V4L2_BUF_TYPE_VIDEO_CAPTURE: case V4L2_BUF_TYPE_VIDEO_OUTPUT: @@ -204,17 +207,16 @@ static int get_v4l2_format32(struct v4l2_format *kp, struct v4l2_format32 __user *up) { - if (!access_ok(VERIFY_READ, up, sizeof(struct v4l2_format32)) || - get_user(kp->type, &up->type)) - return -EFAULT; + if (!access_ok(VERIFY_READ, up, sizeof(struct v4l2_format32))) + return -EFAULT; return __get_v4l2_format32(kp, up); } static int get_v4l2_create32(struct v4l2_create_buffers *kp, struct v4l2_create_buffers32 __user *up) { if (!access_ok(VERIFY_READ, up, sizeof(struct v4l2_create_buffers32)) || - copy_from_user(kp, up, offsetof(struct v4l2_create_buffers32, format.fmt))) - return -EFAULT; + copy_from_user(kp, up, offsetof(struct v4l2_create_buffers32, format))) + return -EFAULT; return __get_v4l2_format32(&kp->format, &up->format); } @@ -262,7 +264,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; @@ -282,7 +284,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) || @@ -390,7 +392,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)) @@ -402,9 +405,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; @@ -437,16 +437,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); @@ -488,7 +486,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)) { @@ -511,13 +510,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: @@ -574,10 +571,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. */ @@ -717,6 +714,7 @@ struct v4l2_event32 { __u32 type; union { + compat_s64 value64; __u8 data[64]; } u; __u32 pending; --- linux-3.13.0.orig/drivers/media/v4l2-core/v4l2-dev.c +++ linux-3.13.0/drivers/media/v4l2-core/v4l2-dev.c @@ -872,8 +872,8 @@ /* Should not happen since we thought this minor was free */ WARN_ON(video_device[vdev->minor] != NULL); - video_device[vdev->minor] = vdev; vdev->index = get_index(vdev); + video_device[vdev->minor] = vdev; mutex_unlock(&videodev_lock); if (vdev->ioctl_ops) --- linux-3.13.0.orig/drivers/media/v4l2-core/v4l2-dv-timings.c +++ linux-3.13.0/drivers/media/v4l2-core/v4l2-dv-timings.c @@ -590,10 +590,10 @@ aspect.denominator = 9; } else if (ratio == 34) { aspect.numerator = 4; - aspect.numerator = 3; + aspect.denominator = 3; } else if (ratio == 68) { aspect.numerator = 15; - aspect.numerator = 9; + aspect.denominator = 9; } else { aspect.numerator = hor_landscape + 99; aspect.denominator = 100; --- linux-3.13.0.orig/drivers/media/v4l2-core/videobuf-dma-contig.c +++ linux-3.13.0/drivers/media/v4l2-core/videobuf-dma-contig.c @@ -66,14 +66,11 @@ static void videobuf_vm_open(struct vm_area_struct *vma) { struct videobuf_mapping *map = vma->vm_private_data; - struct videobuf_queue *q = map->q; - dev_dbg(q->dev, "vm_open %p [count=%u,vma=%08lx-%08lx]\n", + dev_dbg(map->q->dev, "vm_open %p [count=%u,vma=%08lx-%08lx]\n", map, map->count, vma->vm_start, vma->vm_end); - videobuf_queue_lock(q); map->count++; - videobuf_queue_unlock(q); } static void videobuf_vm_close(struct vm_area_struct *vma) @@ -85,11 +82,12 @@ dev_dbg(q->dev, "vm_close %p [count=%u,vma=%08lx-%08lx]\n", map, map->count, vma->vm_start, vma->vm_end); - videobuf_queue_lock(q); - if (!--map->count) { + map->count--; + if (0 == map->count) { struct videobuf_dma_contig_memory *mem; dev_dbg(q->dev, "munmap %p q=%p\n", map, q); + videobuf_queue_lock(q); /* We need first to cancel streams, before unmapping */ if (q->streaming) @@ -128,8 +126,8 @@ kfree(map); + videobuf_queue_unlock(q); } - videobuf_queue_unlock(q); } static const struct vm_operations_struct videobuf_vm_ops = { --- linux-3.13.0.orig/drivers/media/v4l2-core/videobuf-dma-sg.c +++ linux-3.13.0/drivers/media/v4l2-core/videobuf-dma-sg.c @@ -338,14 +338,11 @@ static void videobuf_vm_open(struct vm_area_struct *vma) { struct videobuf_mapping *map = vma->vm_private_data; - struct videobuf_queue *q = map->q; dprintk(2, "vm_open %p [count=%d,vma=%08lx-%08lx]\n", map, map->count, vma->vm_start, vma->vm_end); - videobuf_queue_lock(q); map->count++; - videobuf_queue_unlock(q); } static void videobuf_vm_close(struct vm_area_struct *vma) @@ -358,9 +355,10 @@ dprintk(2, "vm_close %p [count=%d,vma=%08lx-%08lx]\n", map, map->count, vma->vm_start, vma->vm_end); - videobuf_queue_lock(q); - if (!--map->count) { + map->count--; + if (0 == map->count) { dprintk(1, "munmap %p q=%p\n", map, q); + videobuf_queue_lock(q); for (i = 0; i < VIDEO_MAX_FRAME; i++) { if (NULL == q->bufs[i]) continue; @@ -376,9 +374,9 @@ q->bufs[i]->baddr = 0; q->ops->buf_release(q, q->bufs[i]); } + videobuf_queue_unlock(q); kfree(map); } - videobuf_queue_unlock(q); return; } --- linux-3.13.0.orig/drivers/media/v4l2-core/videobuf-vmalloc.c +++ linux-3.13.0/drivers/media/v4l2-core/videobuf-vmalloc.c @@ -54,14 +54,11 @@ static void videobuf_vm_open(struct vm_area_struct *vma) { struct videobuf_mapping *map = vma->vm_private_data; - struct videobuf_queue *q = map->q; dprintk(2, "vm_open %p [count=%u,vma=%08lx-%08lx]\n", map, map->count, vma->vm_start, vma->vm_end); - videobuf_queue_lock(q); map->count++; - videobuf_queue_unlock(q); } static void videobuf_vm_close(struct vm_area_struct *vma) @@ -73,11 +70,12 @@ dprintk(2, "vm_close %p [count=%u,vma=%08lx-%08lx]\n", map, map->count, vma->vm_start, vma->vm_end); - videobuf_queue_lock(q); - if (!--map->count) { + map->count--; + if (0 == map->count) { struct videobuf_vmalloc_memory *mem; dprintk(1, "munmap %p q=%p\n", map, q); + videobuf_queue_lock(q); /* We need first to cancel streams, before unmapping */ if (q->streaming) @@ -116,8 +114,8 @@ kfree(map); + videobuf_queue_unlock(q); } - videobuf_queue_unlock(q); return; } --- linux-3.13.0.orig/drivers/media/v4l2-core/videobuf2-core.c +++ linux-3.13.0/drivers/media/v4l2-core/videobuf2-core.c @@ -885,7 +885,7 @@ { struct vb2_queue *q = vb->vb2_queue; - if (plane_no > vb->num_planes || !vb->planes[plane_no].mem_priv) + if (plane_no >= vb->num_planes || !vb->planes[plane_no].mem_priv) return NULL; return call_memop(q, cookie, vb->planes[plane_no].mem_priv); --- linux-3.13.0.orig/drivers/media/v4l2-core/videobuf2-dma-contig.c +++ linux-3.13.0/drivers/media/v4l2-core/videobuf2-dma-contig.c @@ -117,7 +117,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) @@ -129,7 +130,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-3.13.0.orig/drivers/media/v4l2-core/videobuf2-dma-sg.c +++ linux-3.13.0/drivers/media/v4l2-core/videobuf2-dma-sg.c @@ -112,7 +112,7 @@ goto fail_pages_alloc; ret = sg_alloc_table_from_pages(&buf->sg_table, buf->pages, - buf->num_pages, 0, size, gfp_flags); + buf->num_pages, 0, size, GFP_KERNEL); if (ret) goto fail_table_alloc; --- linux-3.13.0.orig/drivers/memory/mvebu-devbus.c +++ linux-3.13.0/drivers/memory/mvebu-devbus.c @@ -108,8 +108,19 @@ node->full_name); return err; } - /* Convert bit width to byte width */ - r.bus_width /= 8; + + /* + * The bus width is encoded into the register as 0 for 8 bits, + * and 1 for 16 bits, so we do the necessary conversion here. + */ + if (r.bus_width == 8) + r.bus_width = 0; + else if (r.bus_width == 16) + r.bus_width = 1; + else { + dev_err(devbus->dev, "invalid bus width %d\n", r.bus_width); + return -EINVAL; + } err = get_timing_param_ps(devbus, node, "devbus,badr-skew-ps", &r.badr_skew); --- linux-3.13.0.orig/drivers/memstick/core/mspro_block.c +++ linux-3.13.0/drivers/memstick/core/mspro_block.c @@ -758,7 +758,7 @@ if (error || (card->current_mrq.tpc == MSPRO_CMD_STOP)) { if (msb->data_dir == READ) { - for (cnt = 0; cnt < msb->current_seg; cnt++) + for (cnt = 0; cnt < msb->current_seg; cnt++) { t_len += msb->req_sg[cnt].length / msb->page_size; @@ -766,6 +766,7 @@ t_len += msb->current_page - 1; t_len *= msb->page_size; + } } } else t_len = blk_rq_bytes(msb->block_req); --- linux-3.13.0.orig/drivers/message/fusion/mptspi.c +++ linux-3.13.0/drivers/message/fusion/mptspi.c @@ -1422,6 +1422,11 @@ goto out_mptspi_probe; } + /* VMWare emulation doesn't properly implement WRITE_SAME + */ + if (pdev->subsystem_vendor == 0x15AD) + sh->no_write_same = 1; + spin_lock_irqsave(&ioc->FreeQlock, flags); /* Attach the SCSI Host to the IOC structure --- linux-3.13.0.orig/drivers/mfd/88pm800.c +++ linux-3.13.0/drivers/mfd/88pm800.c @@ -571,7 +571,7 @@ ret = pm800_pages_init(chip); if (ret) { dev_err(&client->dev, "pm800_pages_init failed!\n"); - goto err_page_init; + goto err_device_init; } ret = device_800_init(chip, pdata); @@ -587,7 +587,6 @@ err_device_init: pm800_pages_exit(chip); -err_page_init: err_subchip_alloc: pm80x_deinit(); out_init: --- linux-3.13.0.orig/drivers/mfd/88pm860x-core.c +++ linux-3.13.0/drivers/mfd/88pm860x-core.c @@ -1179,12 +1179,18 @@ chip->companion_addr = pdata->companion_addr; chip->companion = i2c_new_dummy(chip->client->adapter, chip->companion_addr); + if (!chip->companion) { + dev_err(&client->dev, + "Failed to allocate I2C companion device\n"); + return -ENODEV; + } chip->regmap_companion = regmap_init_i2c(chip->companion, &pm860x_regmap_config); if (IS_ERR(chip->regmap_companion)) { ret = PTR_ERR(chip->regmap_companion); dev_err(&chip->companion->dev, "Failed to allocate register map: %d\n", ret); + i2c_unregister_device(chip->companion); return ret; } i2c_set_clientdata(chip->companion, chip); --- linux-3.13.0.orig/drivers/mfd/Kconfig +++ linux-3.13.0/drivers/mfd/Kconfig @@ -1173,9 +1173,6 @@ in various ST Microelectronics and ST-Ericsson embedded Nomadik series. -endmenu -endif - menu "Multimedia Capabilities Port drivers" depends on ARCH_SA1100 @@ -1206,3 +1203,6 @@ help Platform configuration infrastructure for the ARM Ltd. Versatile Express. + +endmenu +endif --- linux-3.13.0.orig/drivers/mfd/Makefile +++ linux-3.13.0/drivers/mfd/Makefile @@ -12,7 +12,7 @@ obj-$(CONFIG_MFD_CROS_EC_I2C) += cros_ec_i2c.o obj-$(CONFIG_MFD_CROS_EC_SPI) += cros_ec_spi.o -rtsx_pci-objs := rtsx_pcr.o rts5209.o rts5229.o rtl8411.o rts5227.o rts5249.o +rtsx_pci-objs := rtsx_pcr.o rtsx_gops.o rts5209.o rts5229.o rtl8411.o rts5227.o rts5249.o obj-$(CONFIG_MFD_RTSX_PCI) += rtsx_pci.o obj-$(CONFIG_HTC_EGPIO) += htc-egpio.o --- linux-3.13.0.orig/drivers/mfd/da9055-i2c.c +++ linux-3.13.0/drivers/mfd/da9055-i2c.c @@ -53,17 +53,25 @@ return 0; } +/* + * DO NOT change the device Ids. The naming is intentionally specific as both + * the PMIC and CODEC parts of this chip are instantiated separately as I2C + * devices (both have configurable I2C addresses, and are to all intents and + * purposes separate). As a result there are specific DA9055 ids for PMIC + * and CODEC, which must be different to operate together. + */ static struct i2c_device_id da9055_i2c_id[] = { - {"da9055", 0}, + {"da9055-pmic", 0}, { } }; +MODULE_DEVICE_TABLE(i2c, da9055_i2c_id); static struct i2c_driver da9055_i2c_driver = { .probe = da9055_i2c_probe, .remove = da9055_i2c_remove, .id_table = da9055_i2c_id, .driver = { - .name = "da9055", + .name = "da9055-pmic", .owner = THIS_MODULE, }, }; --- linux-3.13.0.orig/drivers/mfd/kempld-core.c +++ linux-3.13.0/drivers/mfd/kempld-core.c @@ -322,9 +322,12 @@ return -ENODEV; } - /* Release hardware mutex if aquired */ - if (!(index_reg & KEMPLD_MUTEX_KEY)) + /* Release hardware mutex if acquired */ + if (!(index_reg & KEMPLD_MUTEX_KEY)) { iowrite8(KEMPLD_MUTEX_KEY, pld->io_index); + /* PXT and COMe-cPC2 boards may require a second release */ + iowrite8(KEMPLD_MUTEX_KEY, pld->io_index); + } mutex_unlock(&pld->lock); @@ -626,7 +629,7 @@ if (force_device_id[0]) { for (id = kempld_dmi_table; id->matches[0].slot != DMI_NONE; id++) if (strstr(id->ident, force_device_id)) - if (id->callback && id->callback(id)) + if (id->callback && !id->callback(id)) break; if (id->matches[0].slot == DMI_NONE) return -ENODEV; --- linux-3.13.0.orig/drivers/mfd/max77686.c +++ linux-3.13.0/drivers/mfd/max77686.c @@ -104,7 +104,7 @@ max77686->irq_gpio = pdata->irq_gpio; max77686->irq = i2c->irq; - max77686->regmap = regmap_init_i2c(i2c, &max77686_regmap_config); + max77686->regmap = devm_regmap_init_i2c(i2c, &max77686_regmap_config); if (IS_ERR(max77686->regmap)) { ret = PTR_ERR(max77686->regmap); dev_err(max77686->dev, "Failed to allocate register map: %d\n", @@ -121,6 +121,10 @@ dev_info(max77686->dev, "device found\n"); max77686->rtc = i2c_new_dummy(i2c->adapter, I2C_ADDR_RTC); + if (!max77686->rtc) { + dev_err(max77686->dev, "Failed to allocate I2C device for RTC\n"); + return -ENODEV; + } i2c_set_clientdata(max77686->rtc, max77686); max77686_irq_init(max77686); --- linux-3.13.0.orig/drivers/mfd/max77693.c +++ linux-3.13.0/drivers/mfd/max77693.c @@ -142,9 +142,18 @@ dev_info(max77693->dev, "device ID: 0x%x\n", reg_data); max77693->muic = i2c_new_dummy(i2c->adapter, I2C_ADDR_MUIC); + if (!max77693->muic) { + dev_err(max77693->dev, "Failed to allocate I2C device for MUIC\n"); + return -ENODEV; + } i2c_set_clientdata(max77693->muic, max77693); max77693->haptic = i2c_new_dummy(i2c->adapter, I2C_ADDR_HAPTIC); + if (!max77693->haptic) { + dev_err(max77693->dev, "Failed to allocate I2C device for Haptic\n"); + ret = -ENODEV; + goto err_i2c_haptic; + } i2c_set_clientdata(max77693->haptic, max77693); /* @@ -178,8 +187,9 @@ max77693_irq_exit(max77693); err_irq: err_regmap_muic: - i2c_unregister_device(max77693->muic); i2c_unregister_device(max77693->haptic); +err_i2c_haptic: + i2c_unregister_device(max77693->muic); return ret; } --- linux-3.13.0.orig/drivers/mfd/max8925-i2c.c +++ linux-3.13.0/drivers/mfd/max8925-i2c.c @@ -181,9 +181,18 @@ mutex_init(&chip->io_lock); chip->rtc = i2c_new_dummy(chip->i2c->adapter, RTC_I2C_ADDR); + if (!chip->rtc) { + dev_err(chip->dev, "Failed to allocate I2C device for RTC\n"); + return -ENODEV; + } i2c_set_clientdata(chip->rtc, chip); chip->adc = i2c_new_dummy(chip->i2c->adapter, ADC_I2C_ADDR); + if (!chip->adc) { + dev_err(chip->dev, "Failed to allocate I2C device for ADC\n"); + i2c_unregister_device(chip->rtc); + return -ENODEV; + } i2c_set_clientdata(chip->adc, chip); device_init_wakeup(&client->dev, 1); --- linux-3.13.0.orig/drivers/mfd/max8997.c +++ linux-3.13.0/drivers/mfd/max8997.c @@ -218,10 +218,26 @@ mutex_init(&max8997->iolock); max8997->rtc = i2c_new_dummy(i2c->adapter, I2C_ADDR_RTC); + if (!max8997->rtc) { + dev_err(max8997->dev, "Failed to allocate I2C device for RTC\n"); + return -ENODEV; + } i2c_set_clientdata(max8997->rtc, max8997); + max8997->haptic = i2c_new_dummy(i2c->adapter, I2C_ADDR_HAPTIC); + if (!max8997->haptic) { + dev_err(max8997->dev, "Failed to allocate I2C device for Haptic\n"); + ret = -ENODEV; + goto err_i2c_haptic; + } i2c_set_clientdata(max8997->haptic, max8997); + max8997->muic = i2c_new_dummy(i2c->adapter, I2C_ADDR_MUIC); + if (!max8997->muic) { + dev_err(max8997->dev, "Failed to allocate I2C device for MUIC\n"); + ret = -ENODEV; + goto err_i2c_muic; + } i2c_set_clientdata(max8997->muic, max8997); pm_runtime_set_active(max8997->dev); @@ -248,7 +264,9 @@ err_mfd: mfd_remove_devices(max8997->dev); i2c_unregister_device(max8997->muic); +err_i2c_muic: i2c_unregister_device(max8997->haptic); +err_i2c_haptic: i2c_unregister_device(max8997->rtc); return ret; } --- linux-3.13.0.orig/drivers/mfd/max8998.c +++ linux-3.13.0/drivers/mfd/max8998.c @@ -215,6 +215,10 @@ mutex_init(&max8998->iolock); max8998->rtc = i2c_new_dummy(i2c->adapter, RTC_I2C_ADDR); + if (!max8998->rtc) { + dev_err(&i2c->dev, "Failed to allocate I2C device for RTC\n"); + return -ENODEV; + } i2c_set_clientdata(max8998->rtc, max8998); max8998_irq_init(max8998); --- linux-3.13.0.orig/drivers/mfd/omap-usb-host.c +++ linux-3.13.0/drivers/mfd/omap-usb-host.c @@ -445,7 +445,7 @@ for (i = 0; i < omap->nports; i++) { if (is_ehci_phy_mode(pdata->port_mode[i])) { - reg &= OMAP_UHH_HOSTCONFIG_ULPI_BYPASS; + reg &= ~OMAP_UHH_HOSTCONFIG_ULPI_BYPASS; break; } } --- linux-3.13.0.orig/drivers/mfd/rtl8411.c +++ linux-3.13.0/drivers/mfd/rtl8411.c @@ -191,24 +191,25 @@ BPP_LDO_POWB, BPP_LDO_SUSPEND); } -static int rtl8411_switch_output_voltage(struct rtsx_pcr *pcr, u8 voltage) +static int rtl8411_do_switch_output_voltage(struct rtsx_pcr *pcr, u8 voltage, + int bpp_tuned18_shift, int bpp_asic_1v8) { u8 mask, val; int err; - mask = (BPP_REG_TUNED18 << BPP_TUNED18_SHIFT_8411) | BPP_PAD_MASK; + mask = (BPP_REG_TUNED18 << bpp_tuned18_shift) | BPP_PAD_MASK; if (voltage == OUTPUT_3V3) { err = rtsx_pci_write_register(pcr, SD30_DRIVE_SEL, 0x07, pcr->sd30_drive_sel_3v3); if (err < 0) return err; - val = (BPP_ASIC_3V3 << BPP_TUNED18_SHIFT_8411) | BPP_PAD_3V3; + val = (BPP_ASIC_3V3 << bpp_tuned18_shift) | BPP_PAD_3V3; } else if (voltage == OUTPUT_1V8) { err = rtsx_pci_write_register(pcr, SD30_DRIVE_SEL, 0x07, pcr->sd30_drive_sel_1v8); if (err < 0) return err; - val = (BPP_ASIC_1V8 << BPP_TUNED18_SHIFT_8411) | BPP_PAD_1V8; + val = (bpp_asic_1v8 << bpp_tuned18_shift) | BPP_PAD_1V8; } else { return -EINVAL; } @@ -216,6 +217,18 @@ return rtsx_pci_write_register(pcr, LDO_CTL, mask, val); } +static int rtl8411_switch_output_voltage(struct rtsx_pcr *pcr, u8 voltage) +{ + return rtl8411_do_switch_output_voltage(pcr, voltage, + BPP_TUNED18_SHIFT_8411, BPP_ASIC_1V8); +} + +static int rtl8402_switch_output_voltage(struct rtsx_pcr *pcr, u8 voltage) +{ + return rtl8411_do_switch_output_voltage(pcr, voltage, + BPP_TUNED18_SHIFT_8402, BPP_ASIC_2V0); +} + static unsigned int rtl8411_cd_deglitch(struct rtsx_pcr *pcr) { unsigned int card_exist; @@ -295,6 +308,22 @@ .force_power_down = rtl8411_force_power_down, }; +static const struct pcr_ops rtl8402_pcr_ops = { + .fetch_vendor_settings = rtl8411_fetch_vendor_settings, + .extra_init_hw = rtl8411_extra_init_hw, + .optimize_phy = NULL, + .turn_on_led = rtl8411_turn_on_led, + .turn_off_led = rtl8411_turn_off_led, + .enable_auto_blink = rtl8411_enable_auto_blink, + .disable_auto_blink = rtl8411_disable_auto_blink, + .card_power_on = rtl8411_card_power_on, + .card_power_off = rtl8411_card_power_off, + .switch_output_voltage = rtl8402_switch_output_voltage, + .cd_deglitch = rtl8411_cd_deglitch, + .conv_clk_and_div_n = rtl8411_conv_clk_and_div_n, + .force_power_down = rtl8411_force_power_down, +}; + static const struct pcr_ops rtl8411b_pcr_ops = { .fetch_vendor_settings = rtl8411b_fetch_vendor_settings, .extra_init_hw = rtl8411b_extra_init_hw, @@ -441,12 +470,10 @@ 0, }; -void rtl8411_init_params(struct rtsx_pcr *pcr) +void rtl8411_init_common_params(struct rtsx_pcr *pcr) { pcr->extra_caps = EXTRA_CAPS_SD_SDR50 | EXTRA_CAPS_SD_SDR104; pcr->num_slots = 2; - pcr->ops = &rtl8411_pcr_ops; - pcr->flags = 0; pcr->card_drive_sel = RTL8411_CARD_DRIVE_DEFAULT; pcr->sd30_drive_sel_1v8 = DRIVER_TYPE_B; @@ -454,47 +481,29 @@ pcr->aspm_en = ASPM_L1_EN; pcr->tx_initial_phase = SET_CLOCK_PHASE(23, 7, 14); pcr->rx_initial_phase = SET_CLOCK_PHASE(4, 3, 10); - pcr->ic_version = rtl8411_get_ic_version(pcr); - pcr->sd_pull_ctl_enable_tbl = rtl8411_sd_pull_ctl_enable_tbl; - pcr->sd_pull_ctl_disable_tbl = rtl8411_sd_pull_ctl_disable_tbl; - pcr->ms_pull_ctl_enable_tbl = rtl8411_ms_pull_ctl_enable_tbl; - pcr->ms_pull_ctl_disable_tbl = rtl8411_ms_pull_ctl_disable_tbl; +} + +void rtl8411_init_params(struct rtsx_pcr *pcr) +{ + rtl8411_init_common_params(pcr); + pcr->ops = &rtl8411_pcr_ops; + set_pull_ctrl_tables(pcr, rtl8411); } void rtl8411b_init_params(struct rtsx_pcr *pcr) { - pcr->extra_caps = EXTRA_CAPS_SD_SDR50 | EXTRA_CAPS_SD_SDR104; - pcr->num_slots = 2; + rtl8411_init_common_params(pcr); pcr->ops = &rtl8411b_pcr_ops; + if (rtl8411b_is_qfn48(pcr)) + set_pull_ctrl_tables(pcr, rtl8411b_qfn48); + else + set_pull_ctrl_tables(pcr, rtl8411b_qfn64); +} - pcr->flags = 0; - pcr->card_drive_sel = RTL8411_CARD_DRIVE_DEFAULT; - pcr->sd30_drive_sel_1v8 = DRIVER_TYPE_B; - pcr->sd30_drive_sel_3v3 = DRIVER_TYPE_D; - pcr->aspm_en = ASPM_L1_EN; - pcr->tx_initial_phase = SET_CLOCK_PHASE(23, 7, 14); - pcr->rx_initial_phase = SET_CLOCK_PHASE(4, 3, 10); - - pcr->ic_version = rtl8411_get_ic_version(pcr); - - if (rtl8411b_is_qfn48(pcr)) { - pcr->sd_pull_ctl_enable_tbl = - rtl8411b_qfn48_sd_pull_ctl_enable_tbl; - pcr->sd_pull_ctl_disable_tbl = - rtl8411b_qfn48_sd_pull_ctl_disable_tbl; - pcr->ms_pull_ctl_enable_tbl = - rtl8411b_qfn48_ms_pull_ctl_enable_tbl; - pcr->ms_pull_ctl_disable_tbl = - rtl8411b_qfn48_ms_pull_ctl_disable_tbl; - } else { - pcr->sd_pull_ctl_enable_tbl = - rtl8411b_qfn64_sd_pull_ctl_enable_tbl; - pcr->sd_pull_ctl_disable_tbl = - rtl8411b_qfn64_sd_pull_ctl_disable_tbl; - pcr->ms_pull_ctl_enable_tbl = - rtl8411b_qfn64_ms_pull_ctl_enable_tbl; - pcr->ms_pull_ctl_disable_tbl = - rtl8411b_qfn64_ms_pull_ctl_disable_tbl; - } +void rtl8402_init_params(struct rtsx_pcr *pcr) +{ + rtl8411_init_common_params(pcr); + pcr->ops = &rtl8402_pcr_ops; + set_pull_ctrl_tables(pcr, rtl8411); } --- linux-3.13.0.orig/drivers/mfd/rts5227.c +++ linux-3.13.0/drivers/mfd/rts5227.c @@ -130,6 +130,12 @@ static int rts5227_optimize_phy(struct rtsx_pcr *pcr) { + int err; + + err = rtsx_gops_pm_reset(pcr); + if (err < 0) + return err; + /* Optimize RX sensitivity */ return rtsx_pci_write_phy_register(pcr, 0x00, 0xBA42); } --- linux-3.13.0.orig/drivers/mfd/rts5249.c +++ linux-3.13.0/drivers/mfd/rts5249.c @@ -130,6 +130,10 @@ { int err; + err = rtsx_gops_pm_reset(pcr); + if (err < 0) + return err; + err = rtsx_pci_write_phy_register(pcr, PHY_REG_REV, PHY_REG_REV_RESV | PHY_REG_REV_RXIDLE_LATCHED | PHY_REG_REV_P1_EN | PHY_REG_REV_RXIDLE_EN | --- linux-3.13.0.orig/drivers/mfd/rtsx_gops.c +++ linux-3.13.0/drivers/mfd/rtsx_gops.c @@ -0,0 +1,37 @@ +/* Driver for Realtek PCI-Express card reader + * + * Copyright(c) 2009-2013 Realtek Semiconductor Corp. All rights reserved. + * + * 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, or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * 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 . + * + * Author: + * Micky Ching + */ + +#include +#include "rtsx_pcr.h" + +int rtsx_gops_pm_reset(struct rtsx_pcr *pcr) +{ + int err; + + /* init aspm */ + rtsx_pci_write_register(pcr, ASPM_FORCE_CTL, 0xFF, 0x00); + err = rtsx_pci_update_cfg_byte(pcr, LCTLR, ~LCTLR_ASPM_CTL_MASK, 0x00); + if (err < 0) + return err; + + /* reset PM_CTRL3 before send buffer cmd */ + return rtsx_pci_write_register(pcr, PM_CTRL3, D3_DELINK_MODE_EN, 0x00); +} --- linux-3.13.0.orig/drivers/mfd/rtsx_pcr.c +++ linux-3.13.0/drivers/mfd/rtsx_pcr.c @@ -57,6 +57,7 @@ { PCI_DEVICE(0x10EC, 0x5227), PCI_CLASS_OTHERS << 16, 0xFF0000 }, { PCI_DEVICE(0x10EC, 0x5249), PCI_CLASS_OTHERS << 16, 0xFF0000 }, { PCI_DEVICE(0x10EC, 0x5287), PCI_CLASS_OTHERS << 16, 0xFF0000 }, + { PCI_DEVICE(0x10EC, 0x5286), PCI_CLASS_OTHERS << 16, 0xFF0000 }, { 0, } }; @@ -1061,6 +1062,10 @@ case 0x5287: rtl8411b_init_params(pcr); break; + + case 0x5286: + rtl8402_init_params(pcr); + break; } dev_dbg(&(pcr->pci->dev), "PID: 0x%04x, IC version: 0x%02x\n", @@ -1172,7 +1177,7 @@ pcr->msi_en = msi_en; if (pcr->msi_en) { ret = pci_enable_msi(pcidev); - if (ret < 0) + if (ret) pcr->msi_en = false; } --- linux-3.13.0.orig/drivers/mfd/rtsx_pcr.h +++ linux-3.13.0/drivers/mfd/rtsx_pcr.h @@ -30,6 +30,7 @@ void rts5209_init_params(struct rtsx_pcr *pcr); void rts5229_init_params(struct rtsx_pcr *pcr); void rtl8411_init_params(struct rtsx_pcr *pcr); +void rtl8402_init_params(struct rtsx_pcr *pcr); void rts5227_init_params(struct rtsx_pcr *pcr); void rts5249_init_params(struct rtsx_pcr *pcr); void rtl8411b_init_params(struct rtsx_pcr *pcr); @@ -63,4 +64,15 @@ #define rtl8411_reg_to_sd30_drive_sel_3v3(reg) (((reg) >> 5) & 0x07) #define rtl8411b_reg_to_sd30_drive_sel_3v3(reg) ((reg) & 0x03) +#define set_pull_ctrl_tables(pcr, __device) \ +do { \ + pcr->sd_pull_ctl_enable_tbl = __device##_sd_pull_ctl_enable_tbl; \ + pcr->sd_pull_ctl_disable_tbl = __device##_sd_pull_ctl_disable_tbl; \ + pcr->ms_pull_ctl_enable_tbl = __device##_ms_pull_ctl_enable_tbl; \ + pcr->ms_pull_ctl_disable_tbl = __device##_ms_pull_ctl_disable_tbl; \ +} while (0) + +/* generic operations */ +int rtsx_gops_pm_reset(struct rtsx_pcr *pcr); + #endif --- linux-3.13.0.orig/drivers/mfd/sec-core.c +++ linux-3.13.0/drivers/mfd/sec-core.c @@ -280,6 +280,10 @@ } sec_pmic->rtc = i2c_new_dummy(i2c->adapter, RTC_I2C_ADDR); + if (!sec_pmic->rtc) { + dev_err(&i2c->dev, "Failed to allocate I2C for RTC\n"); + return -ENODEV; + } i2c_set_clientdata(sec_pmic->rtc, sec_pmic); sec_pmic->regmap_rtc = devm_regmap_init_i2c(sec_pmic->rtc, --- linux-3.13.0.orig/drivers/mfd/tc6393xb.c +++ linux-3.13.0/drivers/mfd/tc6393xb.c @@ -263,6 +263,17 @@ return 0; } +static int tc6393xb_ohci_suspend(struct platform_device *dev) +{ + struct tc6393xb_platform_data *tcpd = dev_get_platdata(dev->dev.parent); + + /* We can't properly store/restore OHCI state, so fail here */ + if (tcpd->resume_restore) + return -EBUSY; + + return tc6393xb_ohci_disable(dev); +} + static int tc6393xb_fb_enable(struct platform_device *dev) { struct tc6393xb *tc6393xb = dev_get_drvdata(dev->dev.parent); @@ -403,7 +414,7 @@ .num_resources = ARRAY_SIZE(tc6393xb_ohci_resources), .resources = tc6393xb_ohci_resources, .enable = tc6393xb_ohci_enable, - .suspend = tc6393xb_ohci_disable, + .suspend = tc6393xb_ohci_suspend, .resume = tc6393xb_ohci_enable, .disable = tc6393xb_ohci_disable, }, --- linux-3.13.0.orig/drivers/mfd/tps65910.c +++ linux-3.13.0/drivers/mfd/tps65910.c @@ -255,8 +255,10 @@ ret = regmap_add_irq_chip(tps65910->regmap, tps65910->chip_irq, IRQF_ONESHOT, pdata->irq_base, tps6591x_irqs_chip, &tps65910->irq_data); - if (ret < 0) + if (ret < 0) { dev_warn(tps65910->dev, "Failed to add irq_chip %d\n", ret); + tps65910->chip_irq = 0; + } return ret; } --- linux-3.13.0.orig/drivers/misc/Kconfig +++ linux-3.13.0/drivers/misc/Kconfig @@ -438,7 +438,7 @@ still useful. config BMP085 - bool + tristate depends on SYSFS config BMP085_I2C --- linux-3.13.0.orig/drivers/misc/ad525x_dpot.c +++ linux-3.13.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-3.13.0.orig/drivers/misc/mei/amthif.c +++ linux-3.13.0/drivers/misc/mei/amthif.c @@ -177,7 +177,7 @@ unsigned long timeout; int i; - /* Only Posible if we are in timeout */ + /* Only possible if we are in timeout */ if (!cl || cl != &dev->iamthif_cl) { dev_dbg(&dev->pdev->dev, "bad file ext.\n"); return -ETIMEDOUT; @@ -249,7 +249,7 @@ cb->response_buffer.size); dev_dbg(&dev->pdev->dev, "amthif cb->buf_idx - %lu\n", cb->buf_idx); - /* length is being turncated to PAGE_SIZE, however, + /* length is being truncated to PAGE_SIZE, however, * the buf_idx may point beyond */ length = min_t(size_t, length, (cb->buf_idx - *offset)); @@ -316,6 +316,7 @@ mei_hdr.host_addr = dev->iamthif_cl.host_client_id; mei_hdr.me_addr = dev->iamthif_cl.me_client_id; mei_hdr.reserved = 0; + mei_hdr.internal = 0; dev->iamthif_msg_buf_index += mei_hdr.length; ret = mei_write_message(dev, &mei_hdr, dev->iamthif_msg_buf); if (ret) @@ -477,6 +478,7 @@ mei_hdr.host_addr = cl->host_client_id; mei_hdr.me_addr = cl->me_client_id; mei_hdr.reserved = 0; + mei_hdr.internal = 0; if (*slots >= msg_slots) { mei_hdr.length = len; --- linux-3.13.0.orig/drivers/misc/mei/bus.c +++ linux-3.13.0/drivers/misc/mei/bus.c @@ -71,7 +71,7 @@ dev_dbg(dev, "Device probe\n"); - strncpy(id.name, dev_name(dev), sizeof(id.name)); + strlcpy(id.name, dev_name(dev), sizeof(id.name)); return driver->probe(device, &id); } --- linux-3.13.0.orig/drivers/misc/mei/client.c +++ linux-3.13.0/drivers/misc/mei/client.c @@ -74,23 +74,69 @@ /** - * mei_io_list_flush - removes list entry belonging to cl. + * mei_cl_cmp_id - tells if the clients are the same * - * @list: An instance of our list structure - * @cl: host client + * @cl1: host client 1 + * @cl2: host client 2 + * + * returns true - if the clients has same host and me ids + * false - otherwise */ -void mei_io_list_flush(struct mei_cl_cb *list, struct mei_cl *cl) +static inline bool mei_cl_cmp_id(const struct mei_cl *cl1, + const struct mei_cl *cl2) +{ + return cl1 && cl2 && + (cl1->host_client_id == cl2->host_client_id) && + (cl1->me_client_id == cl2->me_client_id); +} + +/** + * mei_io_list_flush - removes cbs belonging to cl. + * + * @list: an instance of our list structure + * @cl: host client, can be NULL for flushing the whole list + * @free: whether to free the cbs + */ +static void __mei_io_list_flush(struct mei_cl_cb *list, + struct mei_cl *cl, bool free) { struct mei_cl_cb *cb; struct mei_cl_cb *next; + /* enable removing everything if no cl is specified */ list_for_each_entry_safe(cb, next, &list->list, list) { - if (cb->cl && mei_cl_cmp_id(cl, cb->cl)) + if (!cl || (cb->cl && mei_cl_cmp_id(cl, cb->cl))) { list_del(&cb->list); + if (free) + mei_io_cb_free(cb); + } } } /** + * mei_io_list_flush - removes list entry belonging to cl. + * + * @list: An instance of our list structure + * @cl: host client + */ +static inline void mei_io_list_flush(struct mei_cl_cb *list, struct mei_cl *cl) +{ + __mei_io_list_flush(list, cl, false); +} + + +/** + * mei_io_list_free - removes cb belonging to cl and free them + * + * @list: An instance of our list structure + * @cl: host client + */ +static inline void mei_io_list_free(struct mei_cl_cb *list, struct mei_cl *cl) +{ + __mei_io_list_flush(list, cl, true); +} + +/** * mei_io_cb_free - free mei_cb_private related memory * * @cb: mei callback struct @@ -154,7 +200,7 @@ return 0; } /** - * mei_io_cb_alloc_resp_buf - allocate respose buffer + * mei_io_cb_alloc_resp_buf - allocate response buffer * * @cb: io callback structure * @length: size of the buffer @@ -196,8 +242,8 @@ cl_dbg(dev, cl, "remove list entry belonging to cl\n"); mei_io_list_flush(&cl->dev->read_list, cl); - mei_io_list_flush(&cl->dev->write_list, cl); - mei_io_list_flush(&cl->dev->write_waiting_list, cl); + mei_io_list_free(&cl->dev->write_list, cl); + mei_io_list_free(&cl->dev->write_waiting_list, cl); mei_io_list_flush(&cl->dev->ctrl_wr_list, cl); mei_io_list_flush(&cl->dev->ctrl_rd_list, cl); mei_io_list_flush(&cl->dev->amthif_cmd_list, cl); @@ -207,7 +253,7 @@ /** - * mei_cl_init - initializes intialize cl. + * mei_cl_init - initializes cl. * * @cl: host client to be initialized * @dev: mei device @@ -263,10 +309,10 @@ return NULL; } -/** mei_cl_link: allocte host id in the host map +/** mei_cl_link: allocate host id in the host map * * @cl - host client - * @id - fixed host id or -1 for genereting one + * @id - fixed host id or -1 for generic one * * returns 0 on success * -EINVAL on incorrect values @@ -282,19 +328,19 @@ dev = cl->dev; - /* If Id is not asigned get one*/ + /* If Id is not assigned get one*/ if (id == MEI_HOST_CLIENT_ID_ANY) id = find_first_zero_bit(dev->host_clients_map, MEI_CLIENTS_MAX); if (id >= MEI_CLIENTS_MAX) { - dev_err(&dev->pdev->dev, "id exceded %d", MEI_CLIENTS_MAX) ; + dev_err(&dev->pdev->dev, "id exceeded %d", MEI_CLIENTS_MAX); return -EMFILE; } open_handle_count = dev->open_handle_count + dev->iamthif_open_count; if (open_handle_count >= MEI_MAX_OPEN_HANDLE_COUNT) { - dev_err(&dev->pdev->dev, "open_handle_count exceded %d", + dev_err(&dev->pdev->dev, "open_handle_count exceeded %d", MEI_MAX_OPEN_HANDLE_COUNT); return -EMFILE; } @@ -344,8 +390,6 @@ cl->state = MEI_FILE_INITIALIZING; - list_del_init(&cl->link); - return 0; } @@ -372,13 +416,14 @@ } dev->dev_state = MEI_DEV_ENABLED; + dev->reset_count = 0; mutex_unlock(&dev->device_lock); } /** - * mei_cl_disconnect - disconnect host clinet form the me one + * mei_cl_disconnect - disconnect host client from the me one * * @cl: host client * @@ -390,7 +435,7 @@ { struct mei_device *dev; struct mei_cl_cb *cb; - int rets, err; + int rets; if (WARN_ON(!cl || !cl->dev)) return -ENODEV; @@ -414,6 +459,7 @@ cl_err(dev, cl, "failed to disconnect.\n"); goto free; } + cl->timer_count = MEI_CONNECT_TIMEOUT; mdelay(10); /* Wait for hardware disconnection ready */ list_add_tail(&cb->list, &dev->ctrl_rd_list.list); } else { @@ -423,24 +469,18 @@ } mutex_unlock(&dev->device_lock); - err = wait_event_timeout(dev->wait_recvd_msg, + wait_event_timeout(dev->wait_recvd_msg, MEI_FILE_DISCONNECTED == cl->state, mei_secs_to_jiffies(MEI_CL_CONNECT_TIMEOUT)); mutex_lock(&dev->device_lock); + if (MEI_FILE_DISCONNECTED == cl->state) { rets = 0; cl_dbg(dev, cl, "successfully disconnected from FW client.\n"); } else { - rets = -ENODEV; - if (MEI_FILE_DISCONNECTED != cl->state) - cl_err(dev, cl, "wrong status client disconnect.\n"); - - if (err) - cl_dbg(dev, cl, "wait failed disconnect err=%08x\n", - err); - - cl_err(dev, cl, "failed to disconnect from FW client.\n"); + cl_dbg(dev, cl, "timeout on disconnect from FW client.\n"); + rets = -ETIME; } mei_io_list_flush(&dev->ctrl_rd_list, cl); @@ -457,7 +497,7 @@ * * @cl: private data of the file object * - * returns ture if other client is connected, 0 - otherwise. + * returns true if other client is connected, false - otherwise. */ bool mei_cl_is_other_connecting(struct mei_cl *cl) { @@ -481,7 +521,7 @@ } /** - * mei_cl_connect - connect host clinet to the me one + * mei_cl_connect - connect host client to the me one * * @cl: host client * @@ -667,7 +707,6 @@ goto err; cb->fop_type = MEI_FOP_READ; - cl->read_cb = cb; if (dev->hbuf_is_ready) { dev->hbuf_is_ready = false; if (mei_hbm_cl_flow_control_req(dev, cl)) { @@ -679,6 +718,9 @@ } else { list_add_tail(&cb->list, &dev->ctrl_wr_list.list); } + + cl->read_cb = cb; + return rets; err: mei_io_cb_free(cb); @@ -729,6 +771,7 @@ mei_hdr.host_addr = cl->host_client_id; mei_hdr.me_addr = cl->me_client_id; mei_hdr.reserved = 0; + mei_hdr.internal = cb->internal; if (*slots >= msg_slots) { mei_hdr.length = len; @@ -775,7 +818,7 @@ * @cl: host client * @cl: write callback with filled data * - * returns numbe of bytes sent on success, <0 on failure. + * returns number of bytes sent on success, <0 on failure. */ int mei_cl_write(struct mei_cl *cl, struct mei_cl_cb *cb, bool blocking) { @@ -828,6 +871,7 @@ mei_hdr.host_addr = cl->host_client_id; mei_hdr.me_addr = cl->me_client_id; mei_hdr.reserved = 0; + mei_hdr.internal = cb->internal; rets = mei_write_message(dev, &mei_hdr, buf->data); @@ -907,7 +951,6 @@ list_for_each_entry_safe(cl, next, &dev->file_list, link) { cl->state = MEI_FILE_DISCONNECTED; cl->mei_flow_ctrl_creds = 0; - cl->read_cb = NULL; cl->timer_count = 0; } } @@ -940,12 +983,8 @@ */ void mei_cl_all_write_clear(struct mei_device *dev) { - struct mei_cl_cb *cb, *next; - - list_for_each_entry_safe(cb, next, &dev->write_list.list, list) { - list_del(&cb->list); - mei_io_cb_free(cb); - } + mei_io_list_free(&dev->write_list, NULL); + mei_io_list_free(&dev->write_waiting_list, NULL); } --- linux-3.13.0.orig/drivers/misc/mei/client.h +++ linux-3.13.0/drivers/misc/mei/client.h @@ -45,8 +45,6 @@ { INIT_LIST_HEAD(&list->list); } -void mei_io_list_flush(struct mei_cl_cb *list, struct mei_cl *cl); - /* * MEI Host Client Functions */ @@ -61,22 +59,6 @@ int mei_cl_flush_queues(struct mei_cl *cl); struct mei_cl_cb *mei_cl_find_read_cb(struct mei_cl *cl); -/** - * mei_cl_cmp_id - tells if file private data have same id - * - * @fe1: private data of 1. file object - * @fe2: private data of 2. file object - * - * returns true - if ids are the same and not NULL - */ -static inline bool mei_cl_cmp_id(const struct mei_cl *cl1, - const struct mei_cl *cl2) -{ - return cl1 && cl2 && - (cl1->host_client_id == cl2->host_client_id) && - (cl1->me_client_id == cl2->me_client_id); -} - int mei_cl_flow_ctrl_creds(struct mei_cl *cl); --- linux-3.13.0.orig/drivers/misc/mei/debugfs.c +++ linux-3.13.0/drivers/misc/mei/debugfs.c @@ -43,7 +43,7 @@ mutex_lock(&dev->device_lock); - /* if the driver is not enabled the list won't b consitent */ + /* if the driver is not enabled the list won't be consistent */ if (dev->dev_state != MEI_DEV_ENABLED) goto out; @@ -101,7 +101,7 @@ /** * mei_dbgfs_deregister - Remove the debugfs files and directories - * @mei - pointer to mei device private dat + * @mei - pointer to mei device private data */ void mei_dbgfs_deregister(struct mei_device *dev) { --- linux-3.13.0.orig/drivers/misc/mei/hbm.c +++ linux-3.13.0/drivers/misc/mei/hbm.c @@ -28,9 +28,9 @@ * * @dev: the device structure * - * returns none. + * returns 0 on success -ENOMEM on allocation failure */ -static void mei_hbm_me_cl_allocate(struct mei_device *dev) +static int mei_hbm_me_cl_allocate(struct mei_device *dev) { struct mei_me_client *clients; int b; @@ -44,7 +44,7 @@ dev->me_clients_num++; if (dev->me_clients_num == 0) - return; + return 0; kfree(dev->me_clients); dev->me_clients = NULL; @@ -56,12 +56,10 @@ sizeof(struct mei_me_client), GFP_KERNEL); if (!clients) { dev_err(&dev->pdev->dev, "memory allocation for ME clients failed.\n"); - dev->dev_state = MEI_DEV_RESETTING; - mei_reset(dev, 1); - return; + return -ENOMEM; } dev->me_clients = clients; - return; + return 0; } /** @@ -85,12 +83,12 @@ } /** - * same_disconn_addr - tells if they have the same address + * mei_hbm_cl_addr_equal - tells if they have the same address * - * @file: private data of the file object. - * @disconn: disconnection request. + * @cl: - client + * @buf: buffer with cl header * - * returns true if addres are same + * returns true if addresses are the same */ static inline bool mei_hbm_cl_addr_equal(struct mei_cl *cl, void *buf) @@ -128,6 +126,17 @@ return false; } +/** + * mei_hbm_idle - set hbm to idle state + * + * @dev: the device structure + */ +void mei_hbm_idle(struct mei_device *dev) +{ + dev->init_clients_timer = 0; + dev->hbm_state = MEI_HBM_IDLE; +} + int mei_hbm_start_wait(struct mei_device *dev) { int ret; @@ -137,7 +146,7 @@ mutex_unlock(&dev->device_lock); ret = wait_event_interruptible_timeout(dev->wait_recvd_msg, dev->hbm_state == MEI_HBM_IDLE || - dev->hbm_state > MEI_HBM_START, + dev->hbm_state >= MEI_HBM_STARTED, mei_secs_to_jiffies(MEI_INTEROP_TIMEOUT)); mutex_lock(&dev->device_lock); @@ -153,12 +162,15 @@ * mei_hbm_start_req - sends start request message. * * @dev: the device structure + * + * returns 0 on success and < 0 on failure */ int mei_hbm_start_req(struct mei_device *dev) { struct mei_msg_hdr *mei_hdr = &dev->wr_msg.hdr; struct hbm_host_version_request *start_req; const size_t len = sizeof(struct hbm_host_version_request); + int ret; mei_hbm_hdr(mei_hdr, len); @@ -170,12 +182,13 @@ start_req->host_version.minor_version = HBM_MINOR_VERSION; dev->hbm_state = MEI_HBM_IDLE; - if (mei_write_message(dev, mei_hdr, dev->wr_msg.data)) { - dev_err(&dev->pdev->dev, "version message write failed\n"); - dev->dev_state = MEI_DEV_RESETTING; - mei_reset(dev, 1); - return -EIO; + ret = mei_write_message(dev, mei_hdr, dev->wr_msg.data); + if (ret) { + dev_err(&dev->pdev->dev, "version message write failed: ret = %d\n", + ret); + return ret; } + dev->hbm_state = MEI_HBM_START; dev->init_clients_timer = MEI_CLIENTS_INIT_TIMEOUT; return 0; @@ -186,13 +199,15 @@ * * @dev: the device structure * - * returns none. + * returns 0 on success and < 0 on failure */ -static void mei_hbm_enum_clients_req(struct mei_device *dev) +static int mei_hbm_enum_clients_req(struct mei_device *dev) { struct mei_msg_hdr *mei_hdr = &dev->wr_msg.hdr; struct hbm_host_enum_request *enum_req; const size_t len = sizeof(struct hbm_host_enum_request); + int ret; + /* enumerate clients */ mei_hbm_hdr(mei_hdr, len); @@ -200,14 +215,15 @@ memset(enum_req, 0, len); enum_req->hbm_cmd = HOST_ENUM_REQ_CMD; - if (mei_write_message(dev, mei_hdr, dev->wr_msg.data)) { - dev->dev_state = MEI_DEV_RESETTING; - dev_err(&dev->pdev->dev, "enumeration request write failed.\n"); - mei_reset(dev, 1); + ret = mei_write_message(dev, mei_hdr, dev->wr_msg.data); + if (ret) { + dev_err(&dev->pdev->dev, "enumeration request write failed: ret = %d.\n", + ret); + return ret; } dev->hbm_state = MEI_HBM_ENUM_CLIENTS; dev->init_clients_timer = MEI_CLIENTS_INIT_TIMEOUT; - return; + return 0; } /** @@ -215,7 +231,7 @@ * * @dev: the device structure * - * returns none. + * returns 0 on success and < 0 on failure */ static int mei_hbm_prop_req(struct mei_device *dev) @@ -226,7 +242,7 @@ const size_t len = sizeof(struct hbm_props_request); unsigned long next_client_index; unsigned long client_num; - + int ret; client_num = dev->me_client_presentation_num; @@ -253,12 +269,11 @@ prop_req->hbm_cmd = HOST_CLIENT_PROPERTIES_REQ_CMD; prop_req->address = next_client_index; - if (mei_write_message(dev, mei_hdr, dev->wr_msg.data)) { - dev->dev_state = MEI_DEV_RESETTING; - dev_err(&dev->pdev->dev, "properties request write failed\n"); - mei_reset(dev, 1); - - return -EIO; + ret = mei_write_message(dev, mei_hdr, dev->wr_msg.data); + if (ret) { + dev_err(&dev->pdev->dev, "properties request write failed: ret = %d\n", + ret); + return ret; } dev->init_clients_timer = MEI_CLIENTS_INIT_TIMEOUT; @@ -268,7 +283,7 @@ } /** - * mei_hbm_stop_req_prepare - perpare stop request message + * mei_hbm_stop_req_prepare - prepare stop request message * * @dev - mei device * @mei_hdr - mei message header @@ -289,7 +304,7 @@ } /** - * mei_hbm_cl_flow_control_req - sends flow control requst. + * mei_hbm_cl_flow_control_req - sends flow control request. * * @dev: the device structure * @cl: client info @@ -451,7 +466,7 @@ } /** - * mei_hbm_cl_connect_res - connect resposne from the ME + * mei_hbm_cl_connect_res - connect response from the ME * * @dev: the device structure * @rs: connect response bus message @@ -505,8 +520,8 @@ /** - * mei_hbm_fw_disconnect_req - disconnect request initiated by me - * host sends disoconnect response + * mei_hbm_fw_disconnect_req - disconnect request initiated by ME firmware + * host sends disconnect response * * @dev: the device structure. * @disconnect_req: disconnect request bus message from the me @@ -559,8 +574,10 @@ * * @dev: the device structure * @mei_hdr: header of bus message + * + * returns 0 on success and < 0 on failure */ -void mei_hbm_dispatch(struct mei_device *dev, struct mei_msg_hdr *hdr) +int mei_hbm_dispatch(struct mei_device *dev, struct mei_msg_hdr *hdr) { struct mei_bus_message *mei_msg; struct mei_me_client *me_client; @@ -577,8 +594,20 @@ mei_read_slots(dev, dev->rd_msg_buf, hdr->length); mei_msg = (struct mei_bus_message *)dev->rd_msg_buf; + /* ignore spurious message and prevent reset nesting + * hbm is put to idle during system reset + */ + if (dev->hbm_state == MEI_HBM_IDLE) { + dev_dbg(&dev->pdev->dev, "hbm: state is idle ignore spurious messages\n"); + return 0; + } + switch (mei_msg->hbm_cmd) { case HOST_START_RES_CMD: + dev_dbg(&dev->pdev->dev, "hbm: start: response message received.\n"); + + dev->init_clients_timer = 0; + version_res = (struct hbm_host_version_response *)mei_msg; dev_dbg(&dev->pdev->dev, "HBM VERSION: DRIVER=%02d:%02d DEVICE=%02d:%02d\n", @@ -597,73 +626,89 @@ } if (!mei_hbm_version_is_supported(dev)) { - dev_warn(&dev->pdev->dev, "hbm version mismatch: stopping the driver.\n"); + dev_warn(&dev->pdev->dev, "hbm: start: version mismatch - stopping the driver.\n"); - dev->hbm_state = MEI_HBM_STOP; + dev->hbm_state = MEI_HBM_STOPPED; mei_hbm_stop_req_prepare(dev, &dev->wr_msg.hdr, dev->wr_msg.data); - mei_write_message(dev, &dev->wr_msg.hdr, - dev->wr_msg.data); + if (mei_write_message(dev, &dev->wr_msg.hdr, + dev->wr_msg.data)) { + dev_err(&dev->pdev->dev, "hbm: start: failed to send stop request\n"); + return -EIO; + } + break; + } - return; + if (dev->dev_state != MEI_DEV_INIT_CLIENTS || + dev->hbm_state != MEI_HBM_START) { + dev_err(&dev->pdev->dev, "hbm: start: state mismatch, [%d, %d]\n", + dev->dev_state, dev->hbm_state); + return -EPROTO; } - if (dev->dev_state == MEI_DEV_INIT_CLIENTS && - dev->hbm_state == MEI_HBM_START) { - dev->init_clients_timer = 0; - mei_hbm_enum_clients_req(dev); - } else { - dev_err(&dev->pdev->dev, "reset: wrong host start response\n"); - mei_reset(dev, 1); - return; + dev->hbm_state = MEI_HBM_STARTED; + + if (mei_hbm_enum_clients_req(dev)) { + dev_err(&dev->pdev->dev, "hbm: start: failed to send enumeration request\n"); + return -EIO; } wake_up_interruptible(&dev->wait_recvd_msg); - dev_dbg(&dev->pdev->dev, "host start response message received.\n"); break; case CLIENT_CONNECT_RES_CMD: + dev_dbg(&dev->pdev->dev, "hbm: client connect response: message received.\n"); + connect_res = (struct hbm_client_connect_response *) mei_msg; mei_hbm_cl_connect_res(dev, connect_res); - dev_dbg(&dev->pdev->dev, "client connect response message received.\n"); wake_up(&dev->wait_recvd_msg); break; case CLIENT_DISCONNECT_RES_CMD: + dev_dbg(&dev->pdev->dev, "hbm: client disconnect response: message received.\n"); + disconnect_res = (struct hbm_client_connect_response *) mei_msg; mei_hbm_cl_disconnect_res(dev, disconnect_res); - dev_dbg(&dev->pdev->dev, "client disconnect response message received.\n"); wake_up(&dev->wait_recvd_msg); break; case MEI_FLOW_CONTROL_CMD: + dev_dbg(&dev->pdev->dev, "hbm: client flow control response: message received.\n"); + flow_control = (struct hbm_flow_control *) mei_msg; mei_hbm_cl_flow_control_res(dev, flow_control); - dev_dbg(&dev->pdev->dev, "client flow control response message received.\n"); break; case HOST_CLIENT_PROPERTIES_RES_CMD: + dev_dbg(&dev->pdev->dev, "hbm: properties response: message received.\n"); + + dev->init_clients_timer = 0; + + if (dev->me_clients == NULL) { + dev_err(&dev->pdev->dev, "hbm: properties response: mei_clients not allocated\n"); + return -EPROTO; + } + props_res = (struct hbm_props_response *)mei_msg; me_client = &dev->me_clients[dev->me_client_presentation_num]; - if (props_res->status || !dev->me_clients) { - dev_err(&dev->pdev->dev, "reset: properties response hbm wrong status.\n"); - mei_reset(dev, 1); - return; + if (props_res->status) { + dev_err(&dev->pdev->dev, "hbm: properties response: wrong status = %d\n", + props_res->status); + return -EPROTO; } if (me_client->client_id != props_res->address) { - dev_err(&dev->pdev->dev, "reset: host properties response address mismatch\n"); - mei_reset(dev, 1); - return; + dev_err(&dev->pdev->dev, "hbm: properties response: address mismatch %d ?= %d\n", + me_client->client_id, props_res->address); + return -EPROTO; } if (dev->dev_state != MEI_DEV_INIT_CLIENTS || dev->hbm_state != MEI_HBM_CLIENT_PROPERTIES) { - dev_err(&dev->pdev->dev, "reset: unexpected properties response\n"); - mei_reset(dev, 1); - - return; + dev_err(&dev->pdev->dev, "hbm: properties response: state mismatch, [%d, %d]\n", + dev->dev_state, dev->hbm_state); + return -EPROTO; } me_client->props = props_res->client_properties; @@ -671,49 +716,70 @@ dev->me_client_presentation_num++; /* request property for the next client */ - mei_hbm_prop_req(dev); + if (mei_hbm_prop_req(dev)) + return -EIO; break; case HOST_ENUM_RES_CMD: + dev_dbg(&dev->pdev->dev, "hbm: enumeration response: message received\n"); + + dev->init_clients_timer = 0; + enum_res = (struct hbm_host_enum_response *) mei_msg; BUILD_BUG_ON(sizeof(dev->me_clients_map) < sizeof(enum_res->valid_addresses)); memcpy(dev->me_clients_map, enum_res->valid_addresses, sizeof(enum_res->valid_addresses)); - if (dev->dev_state == MEI_DEV_INIT_CLIENTS && - dev->hbm_state == MEI_HBM_ENUM_CLIENTS) { - dev->init_clients_timer = 0; - mei_hbm_me_cl_allocate(dev); - dev->hbm_state = MEI_HBM_CLIENT_PROPERTIES; - /* first property reqeust */ - mei_hbm_prop_req(dev); - } else { - dev_err(&dev->pdev->dev, "reset: unexpected enumeration response hbm.\n"); - mei_reset(dev, 1); - return; + if (dev->dev_state != MEI_DEV_INIT_CLIENTS || + dev->hbm_state != MEI_HBM_ENUM_CLIENTS) { + dev_err(&dev->pdev->dev, "hbm: enumeration response: state mismatch, [%d, %d]\n", + dev->dev_state, dev->hbm_state); + return -EPROTO; + } + + if (mei_hbm_me_cl_allocate(dev)) { + dev_err(&dev->pdev->dev, "hbm: enumeration response: cannot allocate clients array\n"); + return -ENOMEM; } + + dev->hbm_state = MEI_HBM_CLIENT_PROPERTIES; + + /* first property request */ + if (mei_hbm_prop_req(dev)) + return -EIO; + break; case HOST_STOP_RES_CMD: + dev_dbg(&dev->pdev->dev, "hbm: stop response: message received\n"); - if (dev->hbm_state != MEI_HBM_STOP) - dev_err(&dev->pdev->dev, "unexpected stop response hbm.\n"); - dev->dev_state = MEI_DEV_DISABLED; - dev_info(&dev->pdev->dev, "reset: FW stop response.\n"); - mei_reset(dev, 1); + dev->init_clients_timer = 0; + + if (dev->hbm_state != MEI_HBM_STOPPED) { + dev_err(&dev->pdev->dev, "hbm: stop response: state mismatch, [%d, %d]\n", + dev->dev_state, dev->hbm_state); + return -EPROTO; + } + + dev->dev_state = MEI_DEV_POWER_DOWN; + dev_info(&dev->pdev->dev, "hbm: stop response: resetting.\n"); + /* force the reset */ + return -EPROTO; break; case CLIENT_DISCONNECT_REQ_CMD: - /* search for client */ + dev_dbg(&dev->pdev->dev, "hbm: disconnect request: message received\n"); + disconnect_req = (struct hbm_client_connect_request *)mei_msg; mei_hbm_fw_disconnect_req(dev, disconnect_req); break; case ME_STOP_REQ_CMD: + dev_dbg(&dev->pdev->dev, "hbm: stop request: message received\n"); - dev->hbm_state = MEI_HBM_STOP; + dev->hbm_state = MEI_HBM_STOPPED; mei_hbm_stop_req_prepare(dev, &dev->wr_ext_msg.hdr, dev->wr_ext_msg.data); break; @@ -722,5 +788,6 @@ break; } + return 0; } --- linux-3.13.0.orig/drivers/misc/mei/hbm.h +++ linux-3.13.0/drivers/misc/mei/hbm.h @@ -32,13 +32,13 @@ enum mei_hbm_state { MEI_HBM_IDLE = 0, MEI_HBM_START, + MEI_HBM_STARTED, MEI_HBM_ENUM_CLIENTS, MEI_HBM_CLIENT_PROPERTIES, - MEI_HBM_STARTED, - MEI_HBM_STOP, + MEI_HBM_STOPPED, }; -void mei_hbm_dispatch(struct mei_device *dev, struct mei_msg_hdr *hdr); +int mei_hbm_dispatch(struct mei_device *dev, struct mei_msg_hdr *hdr); static inline void mei_hbm_hdr(struct mei_msg_hdr *hdr, size_t length) { @@ -49,6 +49,7 @@ hdr->reserved = 0; } +void mei_hbm_idle(struct mei_device *dev); int mei_hbm_start_req(struct mei_device *dev); int mei_hbm_start_wait(struct mei_device *dev); int mei_hbm_cl_flow_control_req(struct mei_device *dev, struct mei_cl *cl); --- linux-3.13.0.orig/drivers/misc/mei/hw-me-regs.h +++ linux-3.13.0/drivers/misc/mei/hw-me-regs.h @@ -115,6 +115,11 @@ #define MEI_DEV_ID_LPT_HR 0x8CBA /* Lynx Point H Refresh */ #define MEI_DEV_ID_WPT_LP 0x9CBA /* Wildcat Point LP */ + +/* Host Firmware Status Registers in PCI Config Space */ +#define PCI_CFG_HFS_1 0x40 +#define PCI_CFG_HFS_2 0x48 + /* * MEI HW Section */ --- linux-3.13.0.orig/drivers/misc/mei/hw-me.c +++ linux-3.13.0/drivers/misc/mei/hw-me.c @@ -164,6 +164,9 @@ hcsr |= H_IG; hcsr &= ~H_RST; mei_hcsr_set(hw, hcsr); + + /* complete this write before we set host ready on another CPU */ + mmiowb(); } /** * mei_me_hw_reset - resets fw via mei csr register. @@ -176,6 +179,18 @@ struct mei_me_hw *hw = to_me_hw(dev); u32 hcsr = mei_hcsr_read(hw); + /* 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->pdev->dev, "H_RST is set = 0x%08X", hcsr); + hcsr &= ~H_RST; + mei_hcsr_set(hw, hcsr); + hcsr = mei_hcsr_read(hw); + } + hcsr |= H_RST | H_IG | H_IS; if (intr_enable) @@ -183,9 +198,22 @@ else hcsr &= ~H_IE; + dev->recvd_hw_ready = false; mei_me_reg_write(hw, H_CSR, hcsr); - if (dev->dev_state == MEI_DEV_POWER_DOWN) + /* + * Host reads the H_CSR once to ensure that the + * posted write to H_CSR completes. + */ + hcsr = mei_hcsr_read(hw); + + if ((hcsr & H_RST) == 0) + dev_warn(&dev->pdev->dev, "H_RST is not set = 0x%08X", hcsr); + + if ((hcsr & H_RDY) == H_RDY) + dev_warn(&dev->pdev->dev, "H_RDY is not cleared 0x%08X", hcsr); + + if (intr_enable == false) mei_me_hw_reset_release(dev); return 0; @@ -201,6 +229,7 @@ static void mei_me_host_set_ready(struct mei_device *dev) { struct mei_me_hw *hw = to_me_hw(dev); + hw->host_hw_state = mei_hcsr_read(hw); hw->host_hw_state |= H_IE | H_IG | H_RDY; mei_hcsr_set(hw, hw->host_hw_state); } @@ -233,10 +262,6 @@ static int mei_me_hw_ready_wait(struct mei_device *dev) { int err; - if (mei_me_hw_is_ready(dev)) - return 0; - - dev->recvd_hw_ready = false; mutex_unlock(&dev->device_lock); err = wait_event_interruptible_timeout(dev->wait_hw_ready, dev->recvd_hw_ready, @@ -250,6 +275,7 @@ return err; } + mei_me_hw_reset_release(dev); dev->recvd_hw_ready = false; return 0; } @@ -469,7 +495,7 @@ struct mei_device *dev = (struct mei_device *) dev_id; struct mei_cl_cb complete_list; s32 slots; - int rets; + int rets = 0; dev_dbg(&dev->pdev->dev, "function called after ISR to handle the interrupt processing.\n"); /* initialize our complete list */ @@ -482,33 +508,22 @@ mei_clear_interrupts(dev); /* check if ME wants a reset */ - if (!mei_hw_is_ready(dev) && - dev->dev_state != MEI_DEV_RESETTING && - dev->dev_state != MEI_DEV_INITIALIZING && - dev->dev_state != MEI_DEV_POWER_DOWN && - dev->dev_state != MEI_DEV_POWER_UP) { - dev_dbg(&dev->pdev->dev, "FW not ready.\n"); - mei_reset(dev, 1); - mutex_unlock(&dev->device_lock); - return IRQ_HANDLED; + if (!mei_hw_is_ready(dev) && dev->dev_state != MEI_DEV_RESETTING) { + dev_warn(&dev->pdev->dev, "FW not ready: resetting.\n"); + schedule_work(&dev->reset_work); + goto end; } /* check if we need to start the dev */ if (!mei_host_is_ready(dev)) { if (mei_hw_is_ready(dev)) { dev_dbg(&dev->pdev->dev, "we need to start the dev.\n"); - dev->recvd_hw_ready = true; wake_up_interruptible(&dev->wait_hw_ready); - - mutex_unlock(&dev->device_lock); - return IRQ_HANDLED; } else { - dev_dbg(&dev->pdev->dev, "Reset Completed.\n"); - mei_me_hw_reset_release(dev); - mutex_unlock(&dev->device_lock); - return IRQ_HANDLED; + dev_dbg(&dev->pdev->dev, "Spurious Interrupt\n"); } + goto end; } /* check slots available for reading */ slots = mei_count_full_read_slots(dev); @@ -516,21 +531,23 @@ /* we have urgent data to send so break the read */ if (dev->wr_ext_msg.hdr.length) break; - dev_dbg(&dev->pdev->dev, "slots =%08x\n", slots); - dev_dbg(&dev->pdev->dev, "call mei_irq_read_handler.\n"); + dev_dbg(&dev->pdev->dev, "slots to read = %08x\n", slots); rets = mei_irq_read_handler(dev, &complete_list, &slots); - if (rets) + if (rets && dev->dev_state != MEI_DEV_RESETTING) { + schedule_work(&dev->reset_work); goto end; + } } + rets = mei_irq_write_handler(dev, &complete_list); -end: - dev_dbg(&dev->pdev->dev, "end of bottom half function.\n"); - dev->hbuf_is_ready = mei_hbuf_is_ready(dev); - mutex_unlock(&dev->device_lock); + dev->hbuf_is_ready = mei_hbuf_is_ready(dev); mei_irq_compl_handler(dev, &complete_list); +end: + dev_dbg(&dev->pdev->dev, "interrupt thread end ret = %d\n", rets); + mutex_unlock(&dev->device_lock); return IRQ_HANDLED; } static const struct mei_hw_ops mei_me_hw_ops = { --- linux-3.13.0.orig/drivers/misc/mei/hw.h +++ linux-3.13.0/drivers/misc/mei/hw.h @@ -111,7 +111,8 @@ u32 me_addr:8; u32 host_addr:8; u32 length:9; - u32 reserved:6; + u32 reserved:5; + u32 internal:1; u32 msg_complete:1; } __packed; --- linux-3.13.0.orig/drivers/misc/mei/init.c +++ linux-3.13.0/drivers/misc/mei/init.c @@ -43,41 +43,119 @@ #undef MEI_DEV_STATE } -void mei_device_init(struct mei_device *dev) -{ - /* setup our list array */ - INIT_LIST_HEAD(&dev->file_list); - INIT_LIST_HEAD(&dev->device_list); - mutex_init(&dev->device_lock); - init_waitqueue_head(&dev->wait_hw_ready); - init_waitqueue_head(&dev->wait_recvd_msg); - init_waitqueue_head(&dev->wait_stop_wd); - dev->dev_state = MEI_DEV_INITIALIZING; - mei_io_list_init(&dev->read_list); - mei_io_list_init(&dev->write_list); - mei_io_list_init(&dev->write_waiting_list); - mei_io_list_init(&dev->ctrl_wr_list); - mei_io_list_init(&dev->ctrl_rd_list); +/** + * mei_cancel_work. Cancel mei background jobs + * + * @dev: the device structure + * + * returns 0 on success or < 0 if the reset hasn't succeeded + */ +void mei_cancel_work(struct mei_device *dev) +{ + cancel_work_sync(&dev->init_work); + cancel_work_sync(&dev->reset_work); - INIT_DELAYED_WORK(&dev->timer_work, mei_timer); - INIT_WORK(&dev->init_work, mei_host_client_init); + cancel_delayed_work(&dev->timer_work); +} +EXPORT_SYMBOL_GPL(mei_cancel_work); - INIT_LIST_HEAD(&dev->wd_cl.link); - INIT_LIST_HEAD(&dev->iamthif_cl.link); - mei_io_list_init(&dev->amthif_cmd_list); - mei_io_list_init(&dev->amthif_rd_complete_list); +/** + * mei_reset - resets host and fw. + * + * @dev: the device structure + */ +int mei_reset(struct mei_device *dev) +{ + enum mei_dev_state state = dev->dev_state; + bool interrupts_enabled; + int ret; - bitmap_zero(dev->host_clients_map, MEI_CLIENTS_MAX); - dev->open_handle_count = 0; + if (state != MEI_DEV_INITIALIZING && + state != MEI_DEV_DISABLED && + state != MEI_DEV_POWER_DOWN && + state != MEI_DEV_POWER_UP) + dev_warn(&dev->pdev->dev, "unexpected reset: dev_state = %s\n", + mei_dev_state_str(state)); - /* - * Reserving the first client ID - * 0: Reserved for MEI Bus Message communications + /* we're already in reset, cancel the init timer + * if the reset was called due the hbm protocol error + * we need to call it before hw start + * so the hbm watchdog won't kick in */ - bitmap_set(dev->host_clients_map, 0, 1); + mei_hbm_idle(dev); + + /* enter reset flow */ + interrupts_enabled = state != MEI_DEV_POWER_DOWN; + dev->dev_state = MEI_DEV_RESETTING; + + dev->reset_count++; + if (dev->reset_count > MEI_MAX_CONSEC_RESET) { + dev_err(&dev->pdev->dev, "reset: reached maximal consecutive resets: disabling the device\n"); + dev->dev_state = MEI_DEV_DISABLED; + return -ENODEV; + } + + ret = mei_hw_reset(dev, interrupts_enabled); + /* fall through and remove the sw state even if hw reset has failed */ + + /* no need to clean up software state in case of power up */ + if (state != MEI_DEV_INITIALIZING && + state != MEI_DEV_POWER_UP) { + + /* remove all waiting requests */ + mei_cl_all_write_clear(dev); + + mei_cl_all_disconnect(dev); + + /* wake up all readers and writers so they can be interrupted */ + mei_cl_all_wakeup(dev); + + /* remove entry if already in list */ + dev_dbg(&dev->pdev->dev, "remove iamthif and wd from the file list.\n"); + mei_cl_unlink(&dev->wd_cl); + mei_cl_unlink(&dev->iamthif_cl); + mei_amthif_reset_params(dev); + memset(&dev->wr_ext_msg, 0, sizeof(dev->wr_ext_msg)); + } + + + dev->me_clients_num = 0; + dev->rd_msg_hdr = 0; + dev->wd_pending = false; + + if (ret) { + dev_err(&dev->pdev->dev, "hw_reset failed ret = %d\n", ret); + dev->dev_state = MEI_DEV_DISABLED; + return ret; + } + + if (state == MEI_DEV_POWER_DOWN) { + dev_dbg(&dev->pdev->dev, "powering down: end of reset\n"); + dev->dev_state = MEI_DEV_DISABLED; + return 0; + } + + ret = mei_hw_start(dev); + if (ret) { + dev_err(&dev->pdev->dev, "hw_start failed ret = %d\n", ret); + dev->dev_state = MEI_DEV_DISABLED; + return ret; + } + + dev_dbg(&dev->pdev->dev, "link is established start sending messages.\n"); + + dev->dev_state = MEI_DEV_INIT_CLIENTS; + ret = mei_hbm_start_req(dev); + if (ret) { + dev_err(&dev->pdev->dev, "hbm_start failed ret = %d\n", ret); + dev->dev_state = MEI_DEV_DISABLED; + return ret; + } + + return 0; } -EXPORT_SYMBOL_GPL(mei_device_init); +EXPORT_SYMBOL_GPL(mei_reset); /** * mei_start - initializes host and fw to start work. @@ -90,14 +168,21 @@ { mutex_lock(&dev->device_lock); - /* acknowledge interrupt and stop interupts */ + /* acknowledge interrupt and stop interrupts */ mei_clear_interrupts(dev); mei_hw_config(dev); dev_dbg(&dev->pdev->dev, "reset in start the mei device.\n"); - mei_reset(dev, 1); + dev->dev_state = MEI_DEV_INITIALIZING; + dev->reset_count = 0; + mei_reset(dev); + + if (dev->dev_state == MEI_DEV_DISABLED) { + dev_err(&dev->pdev->dev, "reset failed"); + goto err; + } if (mei_hbm_start_wait(dev)) { dev_err(&dev->pdev->dev, "HBM haven't started"); @@ -132,101 +217,66 @@ EXPORT_SYMBOL_GPL(mei_start); /** - * mei_reset - resets host and fw. + * mei_restart - restart device after suspend * * @dev: the device structure - * @interrupts_enabled: if interrupt should be enabled after reset. + * + * returns 0 on success or -ENODEV if the restart hasn't succeeded */ -void mei_reset(struct mei_device *dev, int interrupts_enabled) +int mei_restart(struct mei_device *dev) { - bool unexpected; - int ret; - - unexpected = (dev->dev_state != MEI_DEV_INITIALIZING && - dev->dev_state != MEI_DEV_DISABLED && - dev->dev_state != MEI_DEV_POWER_DOWN && - dev->dev_state != MEI_DEV_POWER_UP); - - if (unexpected) - dev_warn(&dev->pdev->dev, "unexpected reset: dev_state = %s\n", - mei_dev_state_str(dev->dev_state)); + int err; - ret = mei_hw_reset(dev, interrupts_enabled); - if (ret) { - dev_err(&dev->pdev->dev, "hw reset failed disabling the device\n"); - interrupts_enabled = false; - dev->dev_state = MEI_DEV_DISABLED; - } - - dev->hbm_state = MEI_HBM_IDLE; + mutex_lock(&dev->device_lock); - if (dev->dev_state != MEI_DEV_INITIALIZING && - dev->dev_state != MEI_DEV_POWER_UP) { - if (dev->dev_state != MEI_DEV_DISABLED && - dev->dev_state != MEI_DEV_POWER_DOWN) - dev->dev_state = MEI_DEV_RESETTING; + mei_clear_interrupts(dev); - /* remove all waiting requests */ - mei_cl_all_write_clear(dev); + dev->dev_state = MEI_DEV_POWER_UP; + dev->reset_count = 0; - mei_cl_all_disconnect(dev); + err = mei_reset(dev); - /* wake up all readings so they can be interrupted */ - mei_cl_all_wakeup(dev); + mutex_unlock(&dev->device_lock); - /* remove entry if already in list */ - dev_dbg(&dev->pdev->dev, "remove iamthif and wd from the file list.\n"); - mei_cl_unlink(&dev->wd_cl); - mei_cl_unlink(&dev->iamthif_cl); - mei_amthif_reset_params(dev); - memset(&dev->wr_ext_msg, 0, sizeof(dev->wr_ext_msg)); - } + if (err || dev->dev_state == MEI_DEV_DISABLED) + return -ENODEV; - /* we're already in reset, cancel the init timer */ - dev->init_clients_timer = 0; + return 0; +} +EXPORT_SYMBOL_GPL(mei_restart); - dev->me_clients_num = 0; - dev->rd_msg_hdr = 0; - dev->wd_pending = false; - if (!interrupts_enabled) { - dev_dbg(&dev->pdev->dev, "intr not enabled end of reset\n"); - return; - } +static void mei_reset_work(struct work_struct *work) +{ + struct mei_device *dev = + container_of(work, struct mei_device, reset_work); - ret = mei_hw_start(dev); - if (ret) { - dev_err(&dev->pdev->dev, "hw_start failed disabling the device\n"); - dev->dev_state = MEI_DEV_DISABLED; - return; - } + mutex_lock(&dev->device_lock); - dev_dbg(&dev->pdev->dev, "link is established start sending messages.\n"); - /* link is established * start sending messages. */ + mei_reset(dev); - dev->dev_state = MEI_DEV_INIT_CLIENTS; - - mei_hbm_start_req(dev); + mutex_unlock(&dev->device_lock); + if (dev->dev_state == MEI_DEV_DISABLED) + dev_err(&dev->pdev->dev, "reset failed"); } -EXPORT_SYMBOL_GPL(mei_reset); void mei_stop(struct mei_device *dev) { dev_dbg(&dev->pdev->dev, "stopping the device.\n"); - flush_scheduled_work(); + mei_cancel_work(dev); - mutex_lock(&dev->device_lock); + mei_nfc_host_exit(dev); - cancel_delayed_work(&dev->timer_work); + mutex_lock(&dev->device_lock); mei_wd_stop(dev); - mei_nfc_host_exit(); - dev->dev_state = MEI_DEV_POWER_DOWN; - mei_reset(dev, 0); + mei_reset(dev); + /* move device to disabled state unconditionally */ + dev->dev_state = MEI_DEV_DISABLED; mutex_unlock(&dev->device_lock); @@ -236,3 +286,41 @@ +void mei_device_init(struct mei_device *dev) +{ + /* setup our list array */ + INIT_LIST_HEAD(&dev->file_list); + INIT_LIST_HEAD(&dev->device_list); + mutex_init(&dev->device_lock); + init_waitqueue_head(&dev->wait_hw_ready); + init_waitqueue_head(&dev->wait_recvd_msg); + init_waitqueue_head(&dev->wait_stop_wd); + dev->dev_state = MEI_DEV_INITIALIZING; + dev->reset_count = 0; + + mei_io_list_init(&dev->read_list); + mei_io_list_init(&dev->write_list); + mei_io_list_init(&dev->write_waiting_list); + mei_io_list_init(&dev->ctrl_wr_list); + mei_io_list_init(&dev->ctrl_rd_list); + + INIT_DELAYED_WORK(&dev->timer_work, mei_timer); + INIT_WORK(&dev->init_work, mei_host_client_init); + INIT_WORK(&dev->reset_work, mei_reset_work); + + INIT_LIST_HEAD(&dev->wd_cl.link); + INIT_LIST_HEAD(&dev->iamthif_cl.link); + mei_io_list_init(&dev->amthif_cmd_list); + mei_io_list_init(&dev->amthif_rd_complete_list); + + bitmap_zero(dev->host_clients_map, MEI_CLIENTS_MAX); + dev->open_handle_count = 0; + + /* + * Reserving the first client ID + * 0: Reserved for MEI Bus Message communications + */ + bitmap_set(dev->host_clients_map, 0, 1); +} +EXPORT_SYMBOL_GPL(mei_device_init); + --- linux-3.13.0.orig/drivers/misc/mei/interrupt.c +++ linux-3.13.0/drivers/misc/mei/interrupt.c @@ -31,7 +31,7 @@ /** - * mei_irq_compl_handler - dispatch complete handelers + * mei_irq_compl_handler - dispatch complete handlers * for the completed callbacks * * @dev - mei device @@ -301,13 +301,11 @@ struct mei_cl_cb *cmpl_list, s32 *slots) { struct mei_msg_hdr *mei_hdr; - struct mei_cl *cl_pos = NULL; - struct mei_cl *cl_next = NULL; - int ret = 0; + struct mei_cl *cl; + int ret; if (!dev->rd_msg_hdr) { dev->rd_msg_hdr = mei_read_hdr(dev); - dev_dbg(&dev->pdev->dev, "slots =%08x.\n", *slots); (*slots)--; dev_dbg(&dev->pdev->dev, "slots =%08x.\n", *slots); } @@ -315,61 +313,67 @@ dev_dbg(&dev->pdev->dev, MEI_HDR_FMT, MEI_HDR_PRM(mei_hdr)); if (mei_hdr->reserved || !dev->rd_msg_hdr) { - dev_dbg(&dev->pdev->dev, "corrupted message header.\n"); + dev_err(&dev->pdev->dev, "corrupted message header 0x%08X\n", + dev->rd_msg_hdr); ret = -EBADMSG; goto end; } - if (mei_hdr->host_addr || mei_hdr->me_addr) { - list_for_each_entry_safe(cl_pos, cl_next, - &dev->file_list, link) { - dev_dbg(&dev->pdev->dev, - "list_for_each_entry_safe read host" - " client = %d, ME client = %d\n", - cl_pos->host_client_id, - cl_pos->me_client_id); - if (mei_cl_hbm_equal(cl_pos, mei_hdr)) - break; - } - - if (&cl_pos->link == &dev->file_list) { - dev_dbg(&dev->pdev->dev, "corrupted message header\n"); - ret = -EBADMSG; - goto end; - } - } - if (((*slots) * sizeof(u32)) < mei_hdr->length) { - dev_err(&dev->pdev->dev, - "we can't read the message slots =%08x.\n", + if (mei_slots2data(*slots) < mei_hdr->length) { + dev_err(&dev->pdev->dev, "less data available than length=%08x.\n", *slots); /* we can't read the message */ ret = -ERANGE; goto end; } - /* decide where to read the message too */ - if (!mei_hdr->host_addr) { - dev_dbg(&dev->pdev->dev, "call mei_hbm_dispatch.\n"); - mei_hbm_dispatch(dev, mei_hdr); - dev_dbg(&dev->pdev->dev, "end mei_hbm_dispatch.\n"); - } else if (mei_hdr->host_addr == dev->iamthif_cl.host_client_id && - (MEI_FILE_CONNECTED == dev->iamthif_cl.state) && - (dev->iamthif_state == MEI_IAMTHIF_READING)) { + /* HBM message */ + if (mei_hdr->host_addr == 0 && mei_hdr->me_addr == 0) { + ret = mei_hbm_dispatch(dev, mei_hdr); + if (ret) { + dev_dbg(&dev->pdev->dev, "mei_hbm_dispatch failed ret = %d\n", + ret); + goto end; + } + goto reset_slots; + } - dev_dbg(&dev->pdev->dev, "call mei_amthif_irq_read_msg.\n"); - dev_dbg(&dev->pdev->dev, MEI_HDR_FMT, MEI_HDR_PRM(mei_hdr)); + /* find recipient cl */ + list_for_each_entry(cl, &dev->file_list, link) { + if (mei_cl_hbm_equal(cl, mei_hdr)) { + cl_dbg(dev, cl, "got a message\n"); + break; + } + } + + /* if no recipient cl was found we assume corrupted header */ + if (&cl->link == &dev->file_list) { + dev_err(&dev->pdev->dev, "no destination client found 0x%08X\n", + dev->rd_msg_hdr); + ret = -EBADMSG; + goto end; + } + + if (mei_hdr->host_addr == dev->iamthif_cl.host_client_id && + MEI_FILE_CONNECTED == dev->iamthif_cl.state && + dev->iamthif_state == MEI_IAMTHIF_READING) { ret = mei_amthif_irq_read_msg(dev, mei_hdr, cmpl_list); - if (ret) + if (ret) { + dev_err(&dev->pdev->dev, "mei_amthif_irq_read_msg failed = %d\n", + ret); goto end; + } } else { - dev_dbg(&dev->pdev->dev, "call mei_cl_irq_read_msg.\n"); - dev_dbg(&dev->pdev->dev, MEI_HDR_FMT, MEI_HDR_PRM(mei_hdr)); ret = mei_cl_irq_read_msg(dev, mei_hdr, cmpl_list); - if (ret) + if (ret) { + dev_err(&dev->pdev->dev, "mei_cl_irq_read_msg failed = %d\n", + ret); goto end; + } } +reset_slots: /* reset the number of slots and header */ *slots = mei_count_full_read_slots(dev); dev->rd_msg_hdr = 0; @@ -424,8 +428,7 @@ cl->status = 0; list_del(&cb->list); - if (MEI_WRITING == cl->writing_state && - cb->fop_type == MEI_FOP_WRITE && + if (cb->fop_type == MEI_FOP_WRITE && cl != &dev->iamthif_cl) { cl_dbg(dev, cl, "MEI WRITE COMPLETE\n"); cl->writing_state = MEI_WRITE_COMPLETE; @@ -533,7 +536,6 @@ * * @work: pointer to the work_struct structure * - * NOTE: This function is called by timer interrupt work */ void mei_timer(struct work_struct *work) { @@ -548,24 +550,30 @@ mutex_lock(&dev->device_lock); - if (dev->dev_state != MEI_DEV_ENABLED) { - if (dev->dev_state == MEI_DEV_INIT_CLIENTS) { - if (dev->init_clients_timer) { - if (--dev->init_clients_timer == 0) { - dev_err(&dev->pdev->dev, "reset: init clients timeout hbm_state = %d.\n", - dev->hbm_state); - mei_reset(dev, 1); - } + + /* Catch interrupt stalls during HBM init handshake */ + if (dev->dev_state == MEI_DEV_INIT_CLIENTS && + dev->hbm_state != MEI_HBM_IDLE) { + + if (dev->init_clients_timer) { + if (--dev->init_clients_timer == 0) { + dev_err(&dev->pdev->dev, "timer: init clients timeout hbm_state = %d.\n", + dev->hbm_state); + mei_reset(dev); + goto out; } } - goto out; } + + if (dev->dev_state != MEI_DEV_ENABLED) + goto out; + /*** connect/disconnect timeouts ***/ list_for_each_entry_safe(cl_pos, cl_next, &dev->file_list, link) { if (cl_pos->timer_count) { if (--cl_pos->timer_count == 0) { - dev_err(&dev->pdev->dev, "reset: connect/disconnect timeout.\n"); - mei_reset(dev, 1); + dev_err(&dev->pdev->dev, "timer: connect/disconnect timeout.\n"); + mei_reset(dev); goto out; } } @@ -573,8 +581,8 @@ if (dev->iamthif_stall_timer) { if (--dev->iamthif_stall_timer == 0) { - dev_err(&dev->pdev->dev, "reset: amthif hanged.\n"); - mei_reset(dev, 1); + dev_err(&dev->pdev->dev, "timer: amthif hanged.\n"); + mei_reset(dev); dev->iamthif_msg_buf_size = 0; dev->iamthif_msg_buf_index = 0; dev->iamthif_canceled = false; @@ -627,7 +635,8 @@ } } out: - schedule_delayed_work(&dev->timer_work, 2 * HZ); + if (dev->dev_state != MEI_DEV_DISABLED) + schedule_delayed_work(&dev->timer_work, 2 * HZ); mutex_unlock(&dev->device_lock); } --- linux-3.13.0.orig/drivers/misc/mei/main.c +++ linux-3.13.0/drivers/misc/mei/main.c @@ -48,7 +48,7 @@ * * @inode: pointer to inode structure * @file: pointer to file structure - e + * * returns 0 on success, <0 on error */ static int mei_open(struct inode *inode, struct file *file) @@ -653,8 +653,7 @@ goto out; } - if (MEI_WRITE_COMPLETE == cl->writing_state) - mask |= (POLLIN | POLLRDNORM); + mask |= (POLLIN | POLLRDNORM); out: mutex_unlock(&dev->device_lock); --- linux-3.13.0.orig/drivers/misc/mei/mei_dev.h +++ linux-3.13.0/drivers/misc/mei/mei_dev.h @@ -61,11 +61,16 @@ #define MEI_CLIENTS_MAX 256 /* + * maximum number of consecutive resets + */ +#define MEI_MAX_CONSEC_RESET 3 + +/* * Number of File descriptors/handles * that can be opened to the driver. * * Limit to 255: 256 Total Clients - * minus internal client for MEI Bus Messags + * minus internal client for MEI Bus Messages */ #define MEI_MAX_OPEN_HANDLE_COUNT (MEI_CLIENTS_MAX - 1) @@ -178,9 +183,10 @@ unsigned long buf_idx; unsigned long read_time; struct file *file_object; + u32 internal:1; }; -/* MEI client instance carried as file->pirvate_data*/ +/* MEI client instance carried as file->private_data*/ struct mei_cl { struct list_head link; struct mei_device *dev; @@ -326,6 +332,7 @@ /** * struct mei_device - MEI private device struct + * @reset_count - limits the number of consecutive resets * @hbm_state - state of host bus message protocol * @mem_addr - mem mapped base register address @@ -369,6 +376,7 @@ /* * mei device states */ + unsigned long reset_count; enum mei_dev_state dev_state; enum mei_hbm_state hbm_state; u16 init_clients_timer; @@ -427,6 +435,7 @@ bool iamthif_canceled; struct work_struct init_work; + struct work_struct reset_work; /* List of bus devices */ struct list_head device_list; @@ -456,13 +465,25 @@ return DIV_ROUND_UP(sizeof(struct mei_msg_hdr) + length, 4); } +/** + * mei_slots2data- get data in slots - bytes from slots + * @slots - number of available slots + * returns - number of bytes in slots + */ +static inline u32 mei_slots2data(int slots) +{ + return slots * 4; +} + /* * mei init function prototypes */ void mei_device_init(struct mei_device *dev); -void mei_reset(struct mei_device *dev, int interrupts); +int mei_reset(struct mei_device *dev); int mei_start(struct mei_device *dev); +int mei_restart(struct mei_device *dev); void mei_stop(struct mei_device *dev); +void mei_cancel_work(struct mei_device *dev); /* * MEI interrupt functions prototype @@ -510,7 +531,7 @@ * NFC functions */ int mei_nfc_host_init(struct mei_device *dev); -void mei_nfc_host_exit(void); +void mei_nfc_host_exit(struct mei_device *dev); /* * NFC Client UUID @@ -626,9 +647,9 @@ int mei_register(struct mei_device *dev); void mei_deregister(struct mei_device *dev); -#define MEI_HDR_FMT "hdr:host=%02d me=%02d len=%d comp=%1d" +#define MEI_HDR_FMT "hdr:host=%02d me=%02d len=%d internal=%1d comp=%1d" #define MEI_HDR_PRM(hdr) \ (hdr)->host_addr, (hdr)->me_addr, \ - (hdr)->length, (hdr)->msg_complete + (hdr)->length, (hdr)->internal, (hdr)->msg_complete #endif --- linux-3.13.0.orig/drivers/misc/mei/nfc.c +++ linux-3.13.0/drivers/misc/mei/nfc.c @@ -92,7 +92,7 @@ * @cl: NFC host client * @cl_info: NFC info host client * @init_work: perform connection to the info client - * @fw_ivn: NFC Intervace Version Number + * @fw_ivn: NFC Interface Version Number * @vendor_id: NFC manufacturer ID * @radio_type: NFC radio type */ @@ -163,7 +163,7 @@ return 0; default: - dev_err(&dev->pdev->dev, "Unknow radio type 0x%x\n", + dev_err(&dev->pdev->dev, "Unknown radio type 0x%x\n", ndev->radio_type); return -EINVAL; @@ -175,14 +175,14 @@ ndev->bus_name = "pn544"; return 0; default: - dev_err(&dev->pdev->dev, "Unknow radio type 0x%x\n", + dev_err(&dev->pdev->dev, "Unknown radio type 0x%x\n", ndev->radio_type); return -EINVAL; } default: - dev_err(&dev->pdev->dev, "Unknow vendor ID 0x%x\n", + dev_err(&dev->pdev->dev, "Unknown vendor ID 0x%x\n", ndev->vendor_id); return -EINVAL; @@ -428,7 +428,7 @@ mutex_unlock(&dev->device_lock); if (mei_nfc_if_version(ndev) < 0) { - dev_err(&dev->pdev->dev, "Could not get the NFC interfave version"); + dev_err(&dev->pdev->dev, "Could not get the NFC interface version"); goto err; } @@ -469,7 +469,9 @@ return; err: + mutex_lock(&dev->device_lock); mei_nfc_free(ndev); + mutex_unlock(&dev->device_lock); return; } @@ -481,7 +483,7 @@ struct mei_cl *cl_info, *cl = NULL; int i, ret; - /* already initialzed */ + /* already initialized */ if (ndev->cl_info) return 0; @@ -547,12 +549,16 @@ return ret; } -void mei_nfc_host_exit(void) +void mei_nfc_host_exit(struct mei_device *dev) { struct mei_nfc_dev *ndev = &nfc_dev; + cancel_work_sync(&ndev->init_work); + + mutex_lock(&dev->device_lock); if (ndev->cl && ndev->cl->device) mei_cl_remove_device(ndev->cl->device); mei_nfc_free(ndev); + mutex_unlock(&dev->device_lock); } --- linux-3.13.0.orig/drivers/misc/mei/pci-me.c +++ linux-3.13.0/drivers/misc/mei/pci-me.c @@ -43,6 +43,9 @@ #include "hw-me.h" #include "client.h" +static bool disable_msi; +module_param(disable_msi, bool, 0); + /* mei_pci_tbl - PCI Device ID Table */ static DEFINE_PCI_DEVICE_TABLE(mei_me_pci_tbl) = { {PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_82946GZ)}, @@ -100,15 +103,31 @@ const struct pci_device_id *ent) { u32 reg; - if (ent->device == MEI_DEV_ID_PBG_1) { - pci_read_config_dword(pdev, 0x48, ®); - /* make sure that bit 9 is up and bit 10 is down */ - if ((reg & 0x600) == 0x200) { - dev_info(&pdev->dev, "Device doesn't have valid ME Interface\n"); - return false; - } + /* Cougar Point || Patsburg */ + if (ent->device == MEI_DEV_ID_CPT_1 || + ent->device == MEI_DEV_ID_PBG_1) { + pci_read_config_dword(pdev, PCI_CFG_HFS_2, ®); + /* make sure that bit 9 (NM) is up and bit 10 (DM) is down */ + if ((reg & 0x600) == 0x200) + goto no_mei; + } + + /* Lynx Point */ + if (ent->device == MEI_DEV_ID_LPT_H || + ent->device == MEI_DEV_ID_LPT_W || + ent->device == MEI_DEV_ID_LPT_HR) { + /* Read ME FW Status check for SPS Firmware */ + pci_read_config_dword(pdev, PCI_CFG_HFS_1, ®); + /* if bits [19:16] = 15, running SPS Firmware */ + if ((reg & 0xf0000) == 0xf0000) + goto no_mei; } + return true; + +no_mei: + dev_info(&pdev->dev, "Device doesn't have valid ME Interface\n"); + return false; } /** * mei_probe - Device Initialization Routine @@ -144,6 +163,21 @@ dev_err(&pdev->dev, "failed to get pci regions.\n"); goto disable_device; } + + if (dma_set_mask(&pdev->dev, DMA_BIT_MASK(64)) || + dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(64))) { + + err = dma_set_mask(&pdev->dev, DMA_BIT_MASK(32)); + if (err) + err = dma_set_coherent_mask(&pdev->dev, + DMA_BIT_MASK(32)); + } + if (err) { + dev_err(&pdev->dev, "No usable DMA configuration, aborting\n"); + goto release_regions; + } + + /* allocates and initializes the mei dev structure */ dev = mei_me_dev_init(pdev); if (!dev) { @@ -158,7 +192,8 @@ 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)) @@ -197,8 +232,8 @@ return 0; release_irq: + mei_cancel_work(dev); mei_disable_interrupts(dev); - flush_scheduled_work(); free_irq(pdev->irq, dev); disable_msi: pci_disable_msi(pdev); @@ -306,16 +341,14 @@ return err; } - mutex_lock(&dev->device_lock); - dev->dev_state = MEI_DEV_POWER_UP; - mei_clear_interrupts(dev); - mei_reset(dev, 1); - mutex_unlock(&dev->device_lock); + err = mei_restart(dev); + if (err) + return err; /* Start timer if stopped in suspend */ schedule_delayed_work(&dev->timer_work, HZ); - return err; + return 0; } static SIMPLE_DEV_PM_OPS(mei_me_pm_ops, mei_me_pci_suspend, mei_me_pci_resume); #define MEI_ME_PM_OPS (&mei_me_pm_ops) --- linux-3.13.0.orig/drivers/misc/mei/wd.c +++ linux-3.13.0/drivers/misc/mei/wd.c @@ -115,6 +115,7 @@ hdr.me_addr = dev->wd_cl.me_client_id; hdr.msg_complete = 1; hdr.reserved = 0; + hdr.internal = 0; if (!memcmp(dev->wd_data, mei_start_wd_params, MEI_WD_HDR_SIZE)) hdr.length = MEI_WD_START_MSG_SIZE; --- linux-3.13.0.orig/drivers/misc/mic/host/mic_device.h +++ linux-3.13.0/drivers/misc/mic/host/mic_device.h @@ -134,6 +134,8 @@ * @send_intr: Send an interrupt for a particular doorbell on the card. * @ack_interrupt: Hardware specific operations to ack the h/w on * receipt of an interrupt. + * @intr_workarounds: Hardware specific workarounds needed after + * handling an interrupt. * @reset: Reset the remote processor. * @reset_fw_ready: Reset firmware ready field. * @is_fw_ready: Check if firmware is ready for OS download. @@ -149,6 +151,7 @@ void (*write_spad)(struct mic_device *mdev, unsigned int idx, u32 val); void (*send_intr)(struct mic_device *mdev, int doorbell); u32 (*ack_interrupt)(struct mic_device *mdev); + void (*intr_workarounds)(struct mic_device *mdev); void (*reset)(struct mic_device *mdev); void (*reset_fw_ready)(struct mic_device *mdev); bool (*is_fw_ready)(struct mic_device *mdev); --- linux-3.13.0.orig/drivers/misc/mic/host/mic_main.c +++ linux-3.13.0/drivers/misc/mic/host/mic_main.c @@ -115,7 +115,7 @@ struct mic_device *mdev = data; struct mic_bootparam *bootparam = mdev->dp; - mdev->ops->ack_interrupt(mdev); + mdev->ops->intr_workarounds(mdev); switch (bootparam->shutdown_status) { case MIC_HALTED: --- linux-3.13.0.orig/drivers/misc/mic/host/mic_virtio.c +++ linux-3.13.0/drivers/misc/mic/host/mic_virtio.c @@ -156,7 +156,8 @@ static int _mic_virtio_copy(struct mic_vdev *mvdev, struct mic_copy_desc *copy) { - int ret = 0, iovcnt = copy->iovcnt; + int ret = 0; + u32 iovcnt = copy->iovcnt; struct iovec iov; struct iovec __user *u_iov = copy->iov; void __user *ubuf = NULL; @@ -369,7 +370,7 @@ struct mic_vdev *mvdev = data; struct mic_device *mdev = mvdev->mdev; - mdev->ops->ack_interrupt(mdev); + mdev->ops->intr_workarounds(mdev); schedule_work(&mvdev->virtio_bh_work); return IRQ_HANDLED; } @@ -456,6 +457,12 @@ goto exit; } + /* Ensure desc has not changed between the two reads */ + if (memcmp(&dd, dd_config, sizeof(dd))) { + ret = -EINVAL; + goto exit; + } + vqconfig = mic_vq_config(dd_config); for (i = 0; i < dd.num_vq; i++) { if (le16_to_cpu(vqconfig[i].num) > MIC_MAX_VRING_ENTRIES) { --- linux-3.13.0.orig/drivers/misc/mic/host/mic_x100.c +++ linux-3.13.0/drivers/misc/mic/host/mic_x100.c @@ -174,35 +174,38 @@ } /** - * mic_ack_interrupt - Device specific interrupt handling. - * @mdev: pointer to mic_device instance + * mic_x100_ack_interrupt - Read the interrupt sources register and + * clear it. This function will be called in the MSI/INTx case. + * @mdev: Pointer to mic_device instance. * - * Returns: bitmask of doorbell events triggered. + * Returns: bitmask of interrupt sources triggered. */ static u32 mic_x100_ack_interrupt(struct mic_device *mdev) { - u32 reg = 0; - struct mic_mw *mw = &mdev->mmio; u32 sicr0 = MIC_X100_SBOX_BASE_ADDRESS + MIC_X100_SBOX_SICR0; + u32 reg = mic_mmio_read(&mdev->mmio, sicr0); + mic_mmio_write(&mdev->mmio, reg, sicr0); + return reg; +} + +/** + * mic_x100_intr_workarounds - These hardware specific workarounds are + * to be invoked everytime an interrupt is handled. + * @mdev: Pointer to mic_device instance. + * + * Returns: none + */ +static void mic_x100_intr_workarounds(struct mic_device *mdev) +{ + struct mic_mw *mw = &mdev->mmio; /* Clear pending bit array. */ if (MIC_A0_STEP == mdev->stepping) mic_mmio_write(mw, 1, MIC_X100_SBOX_BASE_ADDRESS + MIC_X100_SBOX_MSIXPBACR); - if (mdev->irq_info.num_vectors <= 1) { - reg = mic_mmio_read(mw, sicr0); - - if (unlikely(!reg)) - goto done; - - mic_mmio_write(mw, reg, sicr0); - } - if (mdev->stepping >= MIC_B0_STEP) mdev->intr_ops->enable_interrupts(mdev); -done: - return reg; } /** @@ -553,6 +556,7 @@ .write_spad = mic_x100_write_spad, .send_intr = mic_x100_send_intr, .ack_interrupt = mic_x100_ack_interrupt, + .intr_workarounds = mic_x100_intr_workarounds, .reset = mic_x100_hw_reset, .reset_fw_ready = mic_x100_reset_fw_ready, .is_fw_ready = mic_x100_is_fw_ready, --- linux-3.13.0.orig/drivers/mmc/card/block.c +++ linux-3.13.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 @@ -205,6 +204,8 @@ ret = snprintf(buf, PAGE_SIZE, "%d\n", locked); + mmc_blk_put(md); + return ret; } @@ -951,6 +952,18 @@ md->reset_done &= ~type; } +int mmc_access_rpmb(struct mmc_queue *mq) +{ + struct mmc_blk_data *md = mq->data; + /* + * If this is a RPMB partition access, return ture + */ + if (md && md->part_type == EXT_CSD_PART_CONFIG_ACC_RPMB) + return true; + + return false; +} + static int mmc_blk_issue_discard_rq(struct mmc_queue *mq, struct request *req) { struct mmc_blk_data *md = mq->data; @@ -1314,13 +1327,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); @@ -1849,9 +1858,11 @@ break; case MMC_BLK_CMD_ERR: ret = mmc_blk_cmd_err(md, card, brq, req, ret); - if (!mmc_blk_reset(md, card->host, type)) - break; - goto cmd_abort; + if (mmc_blk_reset(md, card->host, type)) + goto cmd_abort; + if (!ret) + goto start_new_req; + break; case MMC_BLK_RETRY: if (retry++ < 5) break; @@ -1959,6 +1970,7 @@ struct mmc_card *card = md->queue.card; struct mmc_host *host = card->host; unsigned long flags; + unsigned int cmd_flags = req ? req->cmd_flags : 0; if (req && !mq->mqrq_prev->req) /* claim host only for the first request */ @@ -1974,7 +1986,7 @@ } mq->flags &= ~MMC_QUEUE_NEW_REQUEST; - if (req && req->cmd_flags & REQ_DISCARD) { + if (cmd_flags & REQ_DISCARD) { /* complete ongoing async transfer before issuing discard */ if (card->host->areq) mmc_blk_issue_rw_rq(mq, NULL); @@ -1983,7 +1995,7 @@ ret = mmc_blk_issue_secdiscard_rq(mq, req); else ret = mmc_blk_issue_discard_rq(mq, req); - } else if (req && req->cmd_flags & REQ_FLUSH) { + } else if (cmd_flags & REQ_FLUSH) { /* complete ongoing async transfer before issuing flush */ if (card->host->areq) mmc_blk_issue_rw_rq(mq, NULL); @@ -1999,7 +2011,7 @@ out: if ((!req && !(mq->flags & MMC_QUEUE_NEW_REQUEST)) || - (req && (req->cmd_flags & MMC_REQ_SPECIAL_MASK))) + (cmd_flags & MMC_REQ_SPECIAL_MASK)) /* * Release host when there are no more requests * and after special request(discard, flush) is done. --- linux-3.13.0.orig/drivers/mmc/card/queue.c +++ linux-3.13.0/drivers/mmc/card/queue.c @@ -38,7 +38,7 @@ return BLKPREP_KILL; } - if (mq && mmc_card_removed(mq->card)) + if (mq && (mmc_card_removed(mq->card) || mmc_access_rpmb(mq))) return BLKPREP_KILL; req->cmd_flags |= REQ_DONTPREP; @@ -197,7 +197,7 @@ struct mmc_queue_req *mqrq_prev = &mq->mqrq[1]; if (mmc_dev(host)->dma_mask && *mmc_dev(host)->dma_mask) - limit = dma_max_pfn(mmc_dev(host)) << PAGE_SHIFT; + limit = (u64)dma_max_pfn(mmc_dev(host)) << PAGE_SHIFT; mq->card = card; mq->queue = blk_init_queue(mmc_request_fn, lock); --- linux-3.13.0.orig/drivers/mmc/card/queue.h +++ linux-3.13.0/drivers/mmc/card/queue.h @@ -73,4 +73,6 @@ extern int mmc_packed_init(struct mmc_queue *, struct mmc_card *); extern void mmc_packed_clean(struct mmc_queue *); +extern int mmc_access_rpmb(struct mmc_queue *); + #endif --- linux-3.13.0.orig/drivers/mmc/core/core.c +++ linux-3.13.0/drivers/mmc/core/core.c @@ -329,8 +329,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) @@ -2656,6 +2658,7 @@ switch (mode) { case PM_HIBERNATION_PREPARE: case PM_SUSPEND_PREPARE: + case PM_RESTORE_PREPARE: spin_lock_irqsave(&host->lock, flags); host->rescan_disable = 1; spin_unlock_irqrestore(&host->lock, flags); --- linux-3.13.0.orig/drivers/mmc/core/debugfs.c +++ linux-3.13.0/drivers/mmc/core/debugfs.c @@ -158,7 +158,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-3.13.0.orig/drivers/mmc/core/sd.c +++ linux-3.13.0/drivers/mmc/core/sd.c @@ -11,6 +11,7 @@ */ #include +#include #include #include #include @@ -45,6 +46,13 @@ 35, 40, 45, 50, 55, 60, 70, 80, }; +static const unsigned int sd_au_size[] = { + 0, SZ_16K / 512, SZ_32K / 512, SZ_64K / 512, + SZ_128K / 512, SZ_256K / 512, SZ_512K / 512, SZ_1M / 512, + SZ_2M / 512, SZ_4M / 512, SZ_8M / 512, (SZ_8M + SZ_4M) / 512, + SZ_16M / 512, (SZ_16M + SZ_8M) / 512, SZ_32M / 512, SZ_64M / 512, +}; + #define UNSTUFF_BITS(resp,start,size) \ ({ \ const int __size = size; \ @@ -216,7 +224,7 @@ static int mmc_read_ssr(struct mmc_card *card) { unsigned int au, es, et, eo; - int err, i, max_au; + int err, i; u32 *ssr; if (!(card->csd.cmdclass & CCC_APP_SPEC)) { @@ -240,26 +248,25 @@ for (i = 0; i < 16; i++) ssr[i] = be32_to_cpu(ssr[i]); - /* SD3.0 increases max AU size to 64MB (0xF) from 4MB (0x9) */ - max_au = card->scr.sda_spec3 ? 0xF : 0x9; - /* * UNSTUFF_BITS only works with four u32s so we have to offset the * bitfield positions accordingly. */ au = UNSTUFF_BITS(ssr, 428 - 384, 4); - if (au > 0 && au <= max_au) { - card->ssr.au = 1 << (au + 4); - es = UNSTUFF_BITS(ssr, 408 - 384, 16); - et = UNSTUFF_BITS(ssr, 402 - 384, 6); - eo = UNSTUFF_BITS(ssr, 400 - 384, 2); - if (es && et) { - card->ssr.erase_timeout = (et * 1000) / es; - card->ssr.erase_offset = eo * 1000; + if (au) { + if (au <= 9 || card->scr.sda_spec3) { + card->ssr.au = sd_au_size[au]; + es = UNSTUFF_BITS(ssr, 408 - 384, 16); + et = UNSTUFF_BITS(ssr, 402 - 384, 6); + if (es && et) { + eo = UNSTUFF_BITS(ssr, 400 - 384, 2); + card->ssr.erase_timeout = (et * 1000) / es; + card->ssr.erase_offset = eo * 1000; + } + } else { + pr_warning("%s: SD Status: Invalid Allocation Unit size.\n", + mmc_hostname(card->host)); } - } else { - pr_warning("%s: SD Status: Invalid Allocation Unit " - "size.\n", mmc_hostname(card->host)); } out: kfree(ssr); @@ -322,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: @@ -574,14 +582,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-3.13.0.orig/drivers/mmc/core/sdio.c +++ linux-3.13.0/drivers/mmc/core/sdio.c @@ -670,7 +670,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-3.13.0.orig/drivers/mmc/host/Makefile +++ linux-3.13.0/drivers/mmc/host/Makefile @@ -9,6 +9,7 @@ obj-$(CONFIG_MMC_SDHCI) += sdhci.o obj-$(CONFIG_MMC_SDHCI_PCI) += sdhci-pci.o obj-$(subst m,y,$(CONFIG_MMC_SDHCI_PCI)) += sdhci-pci-data.o +obj-$(subst m,y,$(CONFIG_MMC_SDHCI_PCI)) += sdhci-pci-o2micro.o obj-$(CONFIG_MMC_SDHCI_ACPI) += sdhci-acpi.o obj-$(CONFIG_MMC_SDHCI_PXAV3) += sdhci-pxav3.o obj-$(CONFIG_MMC_SDHCI_PXAV2) += sdhci-pxav2.o --- linux-3.13.0.orig/drivers/mmc/host/atmel-mci.c +++ linux-3.13.0/drivers/mmc/host/atmel-mci.c @@ -1192,11 +1192,22 @@ iflags |= ATMCI_CMDRDY; cmd = mrq->cmd; cmdflags = atmci_prepare_command(slot->mmc, cmd); - atmci_send_command(host, cmd, cmdflags); + + /* + * DMA transfer should be started before sending the command to avoid + * unexpected errors especially for read operations in SDIO mode. + * Unfortunately, in PDC mode, command has to be sent before starting + * the transfer. + */ + if (host->submit_data != &atmci_submit_data_dma) + atmci_send_command(host, cmd, cmdflags); if (data) host->submit_data(host, data); + if (host->submit_data == &atmci_submit_data_dma) + atmci_send_command(host, cmd, cmdflags); + if (mrq->stop) { host->stop_cmdr = atmci_prepare_command(slot->mmc, mrq->stop); host->stop_cmdr |= ATMCI_CMDR_STOP_XFER; @@ -1289,7 +1300,7 @@ if (ios->clock) { unsigned int clock_min = ~0U; - u32 clkdiv; + int clkdiv; clk_prepare(host->mck); unprepare_clk = true; @@ -1318,7 +1329,12 @@ /* Calculate clock divider */ if (host->caps.has_odd_clk_div) { clkdiv = DIV_ROUND_UP(host->bus_hz, clock_min) - 2; - if (clkdiv > 511) { + if (clkdiv < 0) { + dev_warn(&mmc->class_dev, + "clock %u too fast; using %lu\n", + clock_min, host->bus_hz / 2); + clkdiv = 0; + } else if (clkdiv > 511) { dev_warn(&mmc->class_dev, "clock %u too slow; using %lu\n", clock_min, host->bus_hz / (511 + 2)); --- linux-3.13.0.orig/drivers/mmc/host/dw_mmc.c +++ linux-3.13.0/drivers/mmc/host/dw_mmc.c @@ -631,6 +631,13 @@ WARN_ON(!(data->flags & MMC_DATA_READ)); + /* + * CDTHRCTL doesn't exist prior to 240A (in fact that register offset is + * in the FIFO region, so we really shouldn't access it). + */ + if (host->verid < DW_MMC_240A) + return; + if (host->timing != MMC_TIMING_MMC_HS200 && host->timing != MMC_TIMING_UHS_SDR104) goto disable; --- linux-3.13.0.orig/drivers/mmc/host/mmci.c +++ linux-3.13.0/drivers/mmc/host/mmci.c @@ -1862,7 +1862,7 @@ { .id = 0x00280180, .mask = 0x00ffffff, - .data = &variant_u300, + .data = &variant_nomadik, }, { .id = 0x00480180, --- linux-3.13.0.orig/drivers/mmc/host/omap_hsmmc.c +++ linux-3.13.0/drivers/mmc/host/omap_hsmmc.c @@ -1024,15 +1024,15 @@ if (status & (CTO_EN | CCRC_EN)) end_cmd = 1; + if (host->data || host->response_busy) { + end_trans = !end_cmd; + host->response_busy = 0; + } if (status & (CTO_EN | DTO_EN)) hsmmc_command_incomplete(host, -ETIMEDOUT, end_cmd); else if (status & (CCRC_EN | DCRC_EN)) hsmmc_command_incomplete(host, -EILSEQ, end_cmd); - if (host->data || host->response_busy) { - end_trans = !end_cmd; - host->response_busy = 0; - } } OMAP_HSMMC_WRITE(host->base, STAT, status); @@ -1812,7 +1812,7 @@ host->slot_id = 0; host->mapbase = res->start + pdata->reg_offset; host->base = ioremap(host->mapbase, SZ_4K); - host->power_mode = MMC_POWER_OFF; + host->power_mode = -1; host->next_data.cookie = 1; platform_set_drvdata(pdev, host); --- linux-3.13.0.orig/drivers/mmc/host/rtsx_pci_sdmmc.c +++ linux-3.13.0/drivers/mmc/host/rtsx_pci_sdmmc.c @@ -246,6 +246,9 @@ case MMC_RSP_R1: rsp_type = SD_RSP_TYPE_R1; break; + case MMC_RSP_R1 & ~MMC_RSP_CRC: + rsp_type = SD_RSP_TYPE_R1 | SD_NO_CHECK_CRC7; + break; case MMC_RSP_R1B: rsp_type = SD_RSP_TYPE_R1b; break; @@ -339,6 +342,13 @@ } if (rsp_type == SD_RSP_TYPE_R2) { + /* + * The controller offloads the last byte {CRC-7, end bit 1'b1} + * of response type R2. Assign dummy CRC, 0, and end bit to the + * byte(ptr[16], goes into the LSB of resp[3] later). + */ + ptr[16] = 1; + for (i = 0; i < 4; i++) { cmd->resp[i] = get_unaligned_be32(ptr + 1 + i * 4); dev_dbg(sdmmc_dev(host), "cmd->resp[%d] = 0x%08x\n", --- linux-3.13.0.orig/drivers/mmc/host/sdhci-bcm-kona.c +++ linux-3.13.0/drivers/mmc/host/sdhci-bcm-kona.c @@ -314,7 +314,7 @@ return ret; } -static int __exit sdhci_bcm_kona_remove(struct platform_device *pdev) +static int sdhci_bcm_kona_remove(struct platform_device *pdev) { return sdhci_pltfm_unregister(pdev); } --- linux-3.13.0.orig/drivers/mmc/host/sdhci-esdhc-imx.c +++ linux-3.13.0/drivers/mmc/host/sdhci-esdhc-imx.c @@ -558,19 +558,17 @@ struct pltfm_imx_data *imx_data = pltfm_host->priv; struct esdhc_platform_data *boarddata = &imx_data->boarddata; - u32 f_host = clk_get_rate(pltfm_host->clk); - - if (boarddata->f_max && (boarddata->f_max < f_host)) + if (boarddata->f_max && (boarddata->f_max < pltfm_host->clock)) return boarddata->f_max; else - return f_host; + return pltfm_host->clock; } static unsigned int esdhc_pltfm_get_min_clock(struct sdhci_host *host) { struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); - return clk_get_rate(pltfm_host->clk) / 256 / 16; + return pltfm_host->clock / 256 / 16; } static inline void esdhc_pltfm_set_clock(struct sdhci_host *host, @@ -578,7 +576,7 @@ { struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); struct pltfm_imx_data *imx_data = pltfm_host->priv; - unsigned int host_clock = clk_get_rate(pltfm_host->clk); + unsigned int host_clock = pltfm_host->clock; int pre_div = 2; int div = 1; u32 temp, val; @@ -976,7 +974,7 @@ } pltfm_host->clk = imx_data->clk_per; - + pltfm_host->clock = clk_get_rate(pltfm_host->clk); clk_prepare_enable(imx_data->clk_per); clk_prepare_enable(imx_data->clk_ipg); clk_prepare_enable(imx_data->clk_ahb); --- linux-3.13.0.orig/drivers/mmc/host/sdhci-esdhc.h +++ linux-3.13.0/drivers/mmc/host/sdhci-esdhc.h @@ -47,6 +47,6 @@ #define ESDHC_DMA_SYSCTL 0x40c #define ESDHC_DMA_SNOOP 0x00000040 -#define ESDHC_HOST_CONTROL_RES 0x05 +#define ESDHC_HOST_CONTROL_RES 0x01 #endif /* _DRIVERS_MMC_SDHCI_ESDHC_H */ --- linux-3.13.0.orig/drivers/mmc/host/sdhci-pci-o2micro.c +++ linux-3.13.0/drivers/mmc/host/sdhci-pci-o2micro.c @@ -0,0 +1,319 @@ +/* + * Copyright (C) 2013 BayHub Technology Ltd. + * + * Authors: Peter Guo + * Adam Lee + * + * This software is licensed under the terms of the GNU General Public + * License version 2, as published by the Free Software Foundation, and + * may be copied, distributed, and modified under those terms. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + */ + +#include + +#include "sdhci.h" +#include "sdhci-pci.h" +#include "sdhci-pci-o2micro.h" + +void sdhci_pci_o2_fujin2_pci_init(struct sdhci_pci_chip *chip) +{ + u32 scratch_32; + int ret; + /* Improve write performance for SD3.0 */ + ret = pci_read_config_dword(chip->pdev, O2_SD_DEV_CTRL, &scratch_32); + if (ret) + return; + scratch_32 &= ~((1 << 12) | (1 << 13) | (1 << 14)); + pci_write_config_dword(chip->pdev, O2_SD_DEV_CTRL, scratch_32); + + /* Enable Link abnormal reset generating Reset */ + ret = pci_read_config_dword(chip->pdev, O2_SD_MISC_REG5, &scratch_32); + if (ret) + return; + scratch_32 &= ~((1 << 19) | (1 << 11)); + scratch_32 |= (1 << 10); + pci_write_config_dword(chip->pdev, O2_SD_MISC_REG5, scratch_32); + + /* set card power over current protection */ + ret = pci_read_config_dword(chip->pdev, O2_SD_TEST_REG, &scratch_32); + if (ret) + return; + scratch_32 |= (1 << 4); + pci_write_config_dword(chip->pdev, O2_SD_TEST_REG, scratch_32); + + /* adjust the output delay for SD mode */ + pci_write_config_dword(chip->pdev, O2_SD_DELAY_CTRL, 0x00002492); + + /* Set the output voltage setting of Aux 1.2v LDO */ + ret = pci_read_config_dword(chip->pdev, O2_SD_LD0_CTRL, &scratch_32); + if (ret) + return; + scratch_32 &= ~(3 << 12); + pci_write_config_dword(chip->pdev, O2_SD_LD0_CTRL, scratch_32); + + /* Set Max power supply capability of SD host */ + ret = pci_read_config_dword(chip->pdev, O2_SD_CAP_REG0, &scratch_32); + if (ret) + return; + scratch_32 &= ~(0x01FE); + scratch_32 |= 0x00CC; + pci_write_config_dword(chip->pdev, O2_SD_CAP_REG0, scratch_32); + /* Set DLL Tuning Window */ + ret = pci_read_config_dword(chip->pdev, + O2_SD_TUNING_CTRL, &scratch_32); + if (ret) + return; + scratch_32 &= ~(0x000000FF); + scratch_32 |= 0x00000066; + pci_write_config_dword(chip->pdev, O2_SD_TUNING_CTRL, scratch_32); + + /* Set UHS2 T_EIDLE */ + ret = pci_read_config_dword(chip->pdev, + O2_SD_UHS2_L1_CTRL, &scratch_32); + if (ret) + return; + scratch_32 &= ~(0x000000FC); + scratch_32 |= 0x00000084; + pci_write_config_dword(chip->pdev, O2_SD_UHS2_L1_CTRL, scratch_32); + + /* Set UHS2 Termination */ + ret = pci_read_config_dword(chip->pdev, O2_SD_FUNC_REG3, &scratch_32); + if (ret) + return; + scratch_32 &= ~((1 << 21) | (1 << 30)); + + pci_write_config_dword(chip->pdev, O2_SD_FUNC_REG3, scratch_32); + + /* Set L1 Entrance Timer */ + ret = pci_read_config_dword(chip->pdev, O2_SD_CAPS, &scratch_32); + if (ret) + return; + scratch_32 &= ~(0xf0000000); + scratch_32 |= 0x30000000; + pci_write_config_dword(chip->pdev, O2_SD_CAPS, scratch_32); + + ret = pci_read_config_dword(chip->pdev, + O2_SD_MISC_CTRL4, &scratch_32); + if (ret) + return; + scratch_32 &= ~(0x000f0000); + scratch_32 |= 0x00080000; + pci_write_config_dword(chip->pdev, O2_SD_MISC_CTRL4, scratch_32); +} +EXPORT_SYMBOL_GPL(sdhci_pci_o2_fujin2_pci_init); + +int sdhci_pci_o2_probe_slot(struct sdhci_pci_slot *slot) +{ + struct sdhci_pci_chip *chip; + struct sdhci_host *host; + u32 reg; + + chip = slot->chip; + host = slot->host; + switch (chip->pdev->device) { + case PCI_DEVICE_ID_O2_SDS0: + case PCI_DEVICE_ID_O2_SEABIRD0: + case PCI_DEVICE_ID_O2_SEABIRD1: + case PCI_DEVICE_ID_O2_SDS1: + case PCI_DEVICE_ID_O2_FUJIN2: + reg = sdhci_readl(host, O2_SD_VENDOR_SETTING); + if (reg & 0x1) + host->quirks |= SDHCI_QUIRK_MULTIBLOCK_READ_ACMD12; + + if (chip->pdev->device != PCI_DEVICE_ID_O2_FUJIN2) + break; + /* set dll watch dog timer */ + reg = sdhci_readl(host, O2_SD_VENDOR_SETTING2); + reg |= (1 << 12); + sdhci_writel(host, reg, O2_SD_VENDOR_SETTING2); + + break; + default: + break; + } + + return 0; +} +EXPORT_SYMBOL_GPL(sdhci_pci_o2_probe_slot); + +int sdhci_pci_o2_probe(struct sdhci_pci_chip *chip) +{ + int ret; + u8 scratch; + u32 scratch_32; + + switch (chip->pdev->device) { + case PCI_DEVICE_ID_O2_8220: + case PCI_DEVICE_ID_O2_8221: + case PCI_DEVICE_ID_O2_8320: + case PCI_DEVICE_ID_O2_8321: + /* This extra setup is required due to broken ADMA. */ + ret = pci_read_config_byte(chip->pdev, + O2_SD_LOCK_WP, &scratch); + if (ret) + return ret; + scratch &= 0x7f; + pci_write_config_byte(chip->pdev, O2_SD_LOCK_WP, scratch); + + /* Set Multi 3 to VCC3V# */ + pci_write_config_byte(chip->pdev, O2_SD_MULTI_VCC3V, 0x08); + + /* Disable CLK_REQ# support after media DET */ + ret = pci_read_config_byte(chip->pdev, + O2_SD_CLKREQ, &scratch); + if (ret) + return ret; + scratch |= 0x20; + pci_write_config_byte(chip->pdev, O2_SD_CLKREQ, scratch); + + /* Choose capabilities, enable SDMA. We have to write 0x01 + * to the capabilities register first to unlock it. + */ + ret = pci_read_config_byte(chip->pdev, O2_SD_CAPS, &scratch); + if (ret) + return ret; + scratch |= 0x01; + pci_write_config_byte(chip->pdev, O2_SD_CAPS, scratch); + pci_write_config_byte(chip->pdev, O2_SD_CAPS, 0x73); + + /* Disable ADMA1/2 */ + pci_write_config_byte(chip->pdev, O2_SD_ADMA1, 0x39); + pci_write_config_byte(chip->pdev, O2_SD_ADMA2, 0x08); + + /* Disable the infinite transfer mode */ + ret = pci_read_config_byte(chip->pdev, + O2_SD_INF_MOD, &scratch); + if (ret) + return ret; + scratch |= 0x08; + pci_write_config_byte(chip->pdev, O2_SD_INF_MOD, scratch); + + /* Lock WP */ + ret = pci_read_config_byte(chip->pdev, + O2_SD_LOCK_WP, &scratch); + if (ret) + return ret; + scratch |= 0x80; + pci_write_config_byte(chip->pdev, O2_SD_LOCK_WP, scratch); + break; + case PCI_DEVICE_ID_O2_SDS0: + case PCI_DEVICE_ID_O2_SDS1: + case PCI_DEVICE_ID_O2_FUJIN2: + /* UnLock WP */ + ret = pci_read_config_byte(chip->pdev, + O2_SD_LOCK_WP, &scratch); + if (ret) + return ret; + + scratch &= 0x7f; + pci_write_config_byte(chip->pdev, O2_SD_LOCK_WP, scratch); + + /* Set timeout CLK */ + ret = pci_read_config_dword(chip->pdev, + O2_SD_CLK_SETTING, &scratch_32); + if (ret) + return ret; + + scratch_32 &= ~(0xFF00); + scratch_32 |= 0x07E0C800; + pci_write_config_dword(chip->pdev, + O2_SD_CLK_SETTING, scratch_32); + + ret = pci_read_config_dword(chip->pdev, + O2_SD_CLKREQ, &scratch_32); + if (ret) + return ret; + scratch_32 |= 0x3; + pci_write_config_dword(chip->pdev, O2_SD_CLKREQ, scratch_32); + + ret = pci_read_config_dword(chip->pdev, + O2_SD_PLL_SETTING, &scratch_32); + if (ret) + return ret; + + scratch_32 &= ~(0x1F3F070E); + scratch_32 |= 0x18270106; + pci_write_config_dword(chip->pdev, + O2_SD_PLL_SETTING, scratch_32); + + /* Disable UHS1 funciton */ + ret = pci_read_config_dword(chip->pdev, + O2_SD_CAP_REG2, &scratch_32); + if (ret) + return ret; + scratch_32 &= ~(0xE0); + pci_write_config_dword(chip->pdev, + O2_SD_CAP_REG2, scratch_32); + + if (chip->pdev->device == PCI_DEVICE_ID_O2_FUJIN2) + sdhci_pci_o2_fujin2_pci_init(chip); + + /* Lock WP */ + ret = pci_read_config_byte(chip->pdev, + O2_SD_LOCK_WP, &scratch); + if (ret) + return ret; + scratch |= 0x80; + pci_write_config_byte(chip->pdev, O2_SD_LOCK_WP, scratch); + break; + case PCI_DEVICE_ID_O2_SEABIRD0: + case PCI_DEVICE_ID_O2_SEABIRD1: + /* UnLock WP */ + ret = pci_read_config_byte(chip->pdev, + O2_SD_LOCK_WP, &scratch); + if (ret) + return ret; + + scratch &= 0x7f; + pci_write_config_byte(chip->pdev, O2_SD_LOCK_WP, scratch); + + ret = pci_read_config_dword(chip->pdev, + O2_SD_FUNC_REG0, &scratch_32); + + if ((scratch_32 & 0xff000000) == 0x01000000) { + scratch_32 &= 0x0000FFFF; + scratch_32 |= 0x1F340000; + + pci_write_config_dword(chip->pdev, + O2_SD_PLL_SETTING, scratch_32); + } else { + scratch_32 &= 0x0000FFFF; + scratch_32 |= 0x2c280000; + + pci_write_config_dword(chip->pdev, + O2_SD_PLL_SETTING, scratch_32); + + ret = pci_read_config_dword(chip->pdev, + O2_SD_FUNC_REG4, + &scratch_32); + scratch_32 |= (1 << 22); + pci_write_config_dword(chip->pdev, + O2_SD_FUNC_REG4, scratch_32); + } + + /* Lock WP */ + ret = pci_read_config_byte(chip->pdev, + O2_SD_LOCK_WP, &scratch); + if (ret) + return ret; + scratch |= 0x80; + pci_write_config_byte(chip->pdev, O2_SD_LOCK_WP, scratch); + break; + } + + return 0; +} +EXPORT_SYMBOL_GPL(sdhci_pci_o2_probe); + +int sdhci_pci_o2_resume(struct sdhci_pci_chip *chip) +{ + sdhci_pci_o2_probe(chip); + return 0; +} +EXPORT_SYMBOL_GPL(sdhci_pci_o2_resume); --- linux-3.13.0.orig/drivers/mmc/host/sdhci-pci-o2micro.h +++ linux-3.13.0/drivers/mmc/host/sdhci-pci-o2micro.h @@ -0,0 +1,72 @@ +/* + * Copyright (C) 2013 BayHub Technology Ltd. + * + * Authors: Peter Guo + * Adam Lee + * + * This software is licensed under the terms of the GNU General Public + * License version 2, as published by the Free Software Foundation, and + * may be copied, distributed, and modified under those terms. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + */ + +#ifndef __SDHCI_PCI_O2MICRO_H +#define __SDHCI_PCI_O2MICRO_H + +#include "sdhci-pci.h" + +/* + * O2Micro device IDs + */ + +#define PCI_DEVICE_ID_O2_SDS0 0x8420 +#define PCI_DEVICE_ID_O2_SDS1 0x8421 +#define PCI_DEVICE_ID_O2_FUJIN2 0x8520 +#define PCI_DEVICE_ID_O2_SEABIRD0 0x8620 +#define PCI_DEVICE_ID_O2_SEABIRD1 0x8621 + +/* + * O2Micro device registers + */ + +#define O2_SD_MISC_REG5 0x64 +#define O2_SD_LD0_CTRL 0x68 +#define O2_SD_DEV_CTRL 0x88 +#define O2_SD_LOCK_WP 0xD3 +#define O2_SD_TEST_REG 0xD4 +#define O2_SD_FUNC_REG0 0xDC +#define O2_SD_MULTI_VCC3V 0xEE +#define O2_SD_CLKREQ 0xEC +#define O2_SD_CAPS 0xE0 +#define O2_SD_ADMA1 0xE2 +#define O2_SD_ADMA2 0xE7 +#define O2_SD_INF_MOD 0xF1 +#define O2_SD_MISC_CTRL4 0xFC +#define O2_SD_TUNING_CTRL 0x300 +#define O2_SD_PLL_SETTING 0x304 +#define O2_SD_CLK_SETTING 0x328 +#define O2_SD_CAP_REG2 0x330 +#define O2_SD_CAP_REG0 0x334 +#define O2_SD_UHS1_CAP_SETTING 0x33C +#define O2_SD_DELAY_CTRL 0x350 +#define O2_SD_UHS2_L1_CTRL 0x35C +#define O2_SD_FUNC_REG3 0x3E0 +#define O2_SD_FUNC_REG4 0x3E4 + +#define O2_SD_VENDOR_SETTING 0x110 +#define O2_SD_VENDOR_SETTING2 0x1C8 + +extern void sdhci_pci_o2_fujin2_pci_init(struct sdhci_pci_chip *chip); + +extern int sdhci_pci_o2_probe_slot(struct sdhci_pci_slot *slot); + +extern int sdhci_pci_o2_probe(struct sdhci_pci_chip *chip); + +extern int sdhci_pci_o2_resume(struct sdhci_pci_chip *chip); + +#endif /* __SDHCI_PCI_O2MICRO_H */ --- linux-3.13.0.orig/drivers/mmc/host/sdhci-pci.c +++ linux-3.13.0/drivers/mmc/host/sdhci-pci.c @@ -27,79 +27,8 @@ #include #include "sdhci.h" - -/* - * PCI device IDs - */ -#define PCI_DEVICE_ID_INTEL_PCH_SDIO0 0x8809 -#define PCI_DEVICE_ID_INTEL_PCH_SDIO1 0x880a -#define PCI_DEVICE_ID_INTEL_BYT_EMMC 0x0f14 -#define PCI_DEVICE_ID_INTEL_BYT_SDIO 0x0f15 -#define PCI_DEVICE_ID_INTEL_BYT_SD 0x0f16 -#define PCI_DEVICE_ID_INTEL_BYT_EMMC2 0x0f50 -#define PCI_DEVICE_ID_INTEL_MRFL_MMC 0x1190 -#define PCI_DEVICE_ID_INTEL_CLV_SDIO0 0x08f9 -#define PCI_DEVICE_ID_INTEL_CLV_SDIO1 0x08fa -#define PCI_DEVICE_ID_INTEL_CLV_SDIO2 0x08fb -#define PCI_DEVICE_ID_INTEL_CLV_EMMC0 0x08e5 -#define PCI_DEVICE_ID_INTEL_CLV_EMMC1 0x08e6 - -/* - * PCI registers - */ - -#define PCI_SDHCI_IFPIO 0x00 -#define PCI_SDHCI_IFDMA 0x01 -#define PCI_SDHCI_IFVENDOR 0x02 - -#define PCI_SLOT_INFO 0x40 /* 8 bits */ -#define PCI_SLOT_INFO_SLOTS(x) ((x >> 4) & 7) -#define PCI_SLOT_INFO_FIRST_BAR_MASK 0x07 - -#define MAX_SLOTS 8 - -struct sdhci_pci_chip; -struct sdhci_pci_slot; - -struct sdhci_pci_fixes { - unsigned int quirks; - unsigned int quirks2; - bool allow_runtime_pm; - - int (*probe) (struct sdhci_pci_chip *); - - int (*probe_slot) (struct sdhci_pci_slot *); - void (*remove_slot) (struct sdhci_pci_slot *, int); - - int (*suspend) (struct sdhci_pci_chip *); - int (*resume) (struct sdhci_pci_chip *); -}; - -struct sdhci_pci_slot { - struct sdhci_pci_chip *chip; - struct sdhci_host *host; - struct sdhci_pci_data *data; - - int pci_bar; - int rst_n_gpio; - int cd_gpio; - int cd_irq; - - void (*hw_reset)(struct sdhci_host *host); -}; - -struct sdhci_pci_chip { - struct pci_dev *pdev; - - unsigned int quirks; - unsigned int quirks2; - bool allow_runtime_pm; - const struct sdhci_pci_fixes *fixes; - - int num_slots; /* Slots on controller */ - struct sdhci_pci_slot *slots[MAX_SLOTS]; /* Pointers to host slots */ -}; - +#include "sdhci-pci.h" +#include "sdhci-pci-o2micro.h" /*****************************************************************************\ * * @@ -296,6 +225,7 @@ static const struct sdhci_pci_fixes sdhci_intel_mfd_sd = { .quirks = SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC, .allow_runtime_pm = true, + .own_cd_for_runtime_pm = true, }; static const struct sdhci_pci_fixes sdhci_intel_mfd_sdio = { @@ -360,6 +290,7 @@ static const struct sdhci_pci_fixes sdhci_intel_byt_sd = { .quirks2 = SDHCI_QUIRK2_CARD_ON_NEEDS_BUS_ON, .allow_runtime_pm = true, + .own_cd_for_runtime_pm = true, }; /* Define Host controllers for Intel Merrifield platform */ @@ -381,6 +312,7 @@ static const struct sdhci_pci_fixes sdhci_intel_mrfl_mmc = { .quirks = SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC, + .quirks2 = SDHCI_QUIRK2_BROKEN_HS200, .probe_slot = intel_mrfl_mmc_probe_slot, }; @@ -393,65 +325,6 @@ #define O2_SD_ADMA2 0xE7 #define O2_SD_INF_MOD 0xF1 -static int o2_probe(struct sdhci_pci_chip *chip) -{ - int ret; - u8 scratch; - - switch (chip->pdev->device) { - case PCI_DEVICE_ID_O2_8220: - case PCI_DEVICE_ID_O2_8221: - case PCI_DEVICE_ID_O2_8320: - case PCI_DEVICE_ID_O2_8321: - /* This extra setup is required due to broken ADMA. */ - ret = pci_read_config_byte(chip->pdev, O2_SD_LOCK_WP, &scratch); - if (ret) - return ret; - scratch &= 0x7f; - pci_write_config_byte(chip->pdev, O2_SD_LOCK_WP, scratch); - - /* Set Multi 3 to VCC3V# */ - pci_write_config_byte(chip->pdev, O2_SD_MULTI_VCC3V, 0x08); - - /* Disable CLK_REQ# support after media DET */ - ret = pci_read_config_byte(chip->pdev, O2_SD_CLKREQ, &scratch); - if (ret) - return ret; - scratch |= 0x20; - pci_write_config_byte(chip->pdev, O2_SD_CLKREQ, scratch); - - /* Choose capabilities, enable SDMA. We have to write 0x01 - * to the capabilities register first to unlock it. - */ - ret = pci_read_config_byte(chip->pdev, O2_SD_CAPS, &scratch); - if (ret) - return ret; - scratch |= 0x01; - pci_write_config_byte(chip->pdev, O2_SD_CAPS, scratch); - pci_write_config_byte(chip->pdev, O2_SD_CAPS, 0x73); - - /* Disable ADMA1/2 */ - pci_write_config_byte(chip->pdev, O2_SD_ADMA1, 0x39); - pci_write_config_byte(chip->pdev, O2_SD_ADMA2, 0x08); - - /* Disable the infinite transfer mode */ - ret = pci_read_config_byte(chip->pdev, O2_SD_INF_MOD, &scratch); - if (ret) - return ret; - scratch |= 0x08; - pci_write_config_byte(chip->pdev, O2_SD_INF_MOD, scratch); - - /* Lock WP */ - ret = pci_read_config_byte(chip->pdev, O2_SD_LOCK_WP, &scratch); - if (ret) - return ret; - scratch |= 0x80; - pci_write_config_byte(chip->pdev, O2_SD_LOCK_WP, scratch); - } - - return 0; -} - static int jmicron_pmos(struct sdhci_pci_chip *chip, int on) { u8 scratch; @@ -642,7 +515,11 @@ } static const struct sdhci_pci_fixes sdhci_o2 = { - .probe = o2_probe, + .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, }; static const struct sdhci_pci_fixes sdhci_jmicron = { @@ -1055,6 +932,46 @@ .driver_data = (kernel_ulong_t)&sdhci_o2, }, + { + .vendor = PCI_VENDOR_ID_O2, + .device = PCI_DEVICE_ID_O2_FUJIN2, + .subvendor = PCI_ANY_ID, + .subdevice = PCI_ANY_ID, + .driver_data = (kernel_ulong_t)&sdhci_o2, + }, + + { + .vendor = PCI_VENDOR_ID_O2, + .device = PCI_DEVICE_ID_O2_SDS0, + .subvendor = PCI_ANY_ID, + .subdevice = PCI_ANY_ID, + .driver_data = (kernel_ulong_t)&sdhci_o2, + }, + + { + .vendor = PCI_VENDOR_ID_O2, + .device = PCI_DEVICE_ID_O2_SDS1, + .subvendor = PCI_ANY_ID, + .subdevice = PCI_ANY_ID, + .driver_data = (kernel_ulong_t)&sdhci_o2, + }, + + { + .vendor = PCI_VENDOR_ID_O2, + .device = PCI_DEVICE_ID_O2_SEABIRD0, + .subvendor = PCI_ANY_ID, + .subdevice = PCI_ANY_ID, + .driver_data = (kernel_ulong_t)&sdhci_o2, + }, + + { + .vendor = PCI_VENDOR_ID_O2, + .device = PCI_DEVICE_ID_O2_SEABIRD1, + .subvendor = PCI_ANY_ID, + .subdevice = PCI_ANY_ID, + .driver_data = (kernel_ulong_t)&sdhci_o2, + }, + { /* Generic SD host controller */ PCI_DEVICE_CLASS((PCI_CLASS_SYSTEM_SDHCI << 8), 0xFFFF00) }, @@ -1457,6 +1374,15 @@ sdhci_pci_add_own_cd(slot); + /* + * Check if the chip needs a separate GPIO for card detect to wake up + * from runtime suspend. If it is not there, don't allow runtime PM. + * Note sdhci_pci_add_own_cd() sets slot->cd_gpio to -EINVAL on failure. + */ + if (chip->fixes && chip->fixes->own_cd_for_runtime_pm && + !gpio_is_valid(slot->cd_gpio)) + chip->allow_runtime_pm = false; + return slot; remove: --- linux-3.13.0.orig/drivers/mmc/host/sdhci-pci.h +++ linux-3.13.0/drivers/mmc/host/sdhci-pci.h @@ -0,0 +1,78 @@ +#ifndef __SDHCI_PCI_H +#define __SDHCI_PCI_H + +/* + * PCI device IDs + */ + +#define PCI_DEVICE_ID_INTEL_PCH_SDIO0 0x8809 +#define PCI_DEVICE_ID_INTEL_PCH_SDIO1 0x880a +#define PCI_DEVICE_ID_INTEL_BYT_EMMC 0x0f14 +#define PCI_DEVICE_ID_INTEL_BYT_SDIO 0x0f15 +#define PCI_DEVICE_ID_INTEL_BYT_SD 0x0f16 +#define PCI_DEVICE_ID_INTEL_BYT_EMMC2 0x0f50 +#define PCI_DEVICE_ID_INTEL_MRFL_MMC 0x1190 +#define PCI_DEVICE_ID_INTEL_CLV_SDIO0 0x08f9 +#define PCI_DEVICE_ID_INTEL_CLV_SDIO1 0x08fa +#define PCI_DEVICE_ID_INTEL_CLV_SDIO2 0x08fb +#define PCI_DEVICE_ID_INTEL_CLV_EMMC0 0x08e5 +#define PCI_DEVICE_ID_INTEL_CLV_EMMC1 0x08e6 + +/* + * PCI registers + */ + +#define PCI_SDHCI_IFPIO 0x00 +#define PCI_SDHCI_IFDMA 0x01 +#define PCI_SDHCI_IFVENDOR 0x02 + +#define PCI_SLOT_INFO 0x40 /* 8 bits */ +#define PCI_SLOT_INFO_SLOTS(x) ((x >> 4) & 7) +#define PCI_SLOT_INFO_FIRST_BAR_MASK 0x07 + +#define MAX_SLOTS 8 + +struct sdhci_pci_chip; +struct sdhci_pci_slot; + +struct sdhci_pci_fixes { + unsigned int quirks; + unsigned int quirks2; + bool allow_runtime_pm; + bool own_cd_for_runtime_pm; + + int (*probe) (struct sdhci_pci_chip *); + + int (*probe_slot) (struct sdhci_pci_slot *); + void (*remove_slot) (struct sdhci_pci_slot *, int); + + int (*suspend) (struct sdhci_pci_chip *); + int (*resume) (struct sdhci_pci_chip *); +}; + +struct sdhci_pci_slot { + struct sdhci_pci_chip *chip; + struct sdhci_host *host; + struct sdhci_pci_data *data; + + int pci_bar; + int rst_n_gpio; + int cd_gpio; + int cd_irq; + + void (*hw_reset)(struct sdhci_host *host); +}; + +struct sdhci_pci_chip { + struct pci_dev *pdev; + + unsigned int quirks; + unsigned int quirks2; + bool allow_runtime_pm; + const struct sdhci_pci_fixes *fixes; + + int num_slots; /* Slots on controller */ + struct sdhci_pci_slot *slots[MAX_SLOTS]; /* Pointers to host slots */ +}; + +#endif /* __SDHCI_PCI_H */ --- linux-3.13.0.orig/drivers/mmc/host/sdhci-pxav3.c +++ linux-3.13.0/drivers/mmc/host/sdhci-pxav3.c @@ -201,8 +201,8 @@ if (!pdata) return NULL; - of_property_read_u32(np, "mrvl,clk-delay-cycles", &clk_delay_cycles); - if (clk_delay_cycles > 0) + if (!of_property_read_u32(np, "mrvl,clk-delay-cycles", + &clk_delay_cycles)) pdata->clk_delay_cycles = clk_delay_cycles; return pdata; @@ -257,6 +257,7 @@ goto err_of_parse; sdhci_get_of_property(pdev); pdata = pxav3_get_mmc_pdata(dev); + pdev->dev.platform_data = pdata; } else if (pdata) { /* on-chip device */ if (pdata->flags & PXA_FLAG_CARD_PERMANENT) @@ -288,10 +289,11 @@ } } - pm_runtime_enable(&pdev->dev); - pm_runtime_get_sync(&pdev->dev); + pm_runtime_get_noresume(&pdev->dev); + pm_runtime_set_active(&pdev->dev); pm_runtime_set_autosuspend_delay(&pdev->dev, PXAV3_RPM_DELAY_MS); pm_runtime_use_autosuspend(&pdev->dev); + pm_runtime_enable(&pdev->dev); pm_suspend_ignore_children(&pdev->dev, 1); ret = sdhci_add_host(host); @@ -316,8 +318,8 @@ err_of_parse: err_cd_req: err_add_host: - pm_runtime_put_sync(&pdev->dev); pm_runtime_disable(&pdev->dev); + pm_runtime_put_noidle(&pdev->dev); clk_disable_unprepare(clk); clk_put(clk); err_clk_get: @@ -378,15 +380,13 @@ { struct sdhci_host *host = dev_get_drvdata(dev); struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); - unsigned long flags; + int ret; - if (pltfm_host->clk) { - spin_lock_irqsave(&host->lock, flags); - host->runtime_suspended = true; - spin_unlock_irqrestore(&host->lock, flags); + ret = sdhci_runtime_suspend_host(host); + if (ret) + return ret; - clk_disable_unprepare(pltfm_host->clk); - } + clk_disable_unprepare(pltfm_host->clk); return 0; } @@ -395,17 +395,10 @@ { struct sdhci_host *host = dev_get_drvdata(dev); struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); - unsigned long flags; - - if (pltfm_host->clk) { - clk_prepare_enable(pltfm_host->clk); - spin_lock_irqsave(&host->lock, flags); - host->runtime_suspended = false; - spin_unlock_irqrestore(&host->lock, flags); - } + clk_prepare_enable(pltfm_host->clk); - return 0; + return sdhci_runtime_resume_host(host); } #endif --- linux-3.13.0.orig/drivers/mmc/host/sdhci.c +++ linux-3.13.0/drivers/mmc/host/sdhci.c @@ -898,8 +898,13 @@ u16 mode; struct mmc_data *data = cmd->data; - if (data == NULL) + if (data == NULL) { + if (host->quirks2 & + SDHCI_QUIRK2_CLEAR_TRANSFERMODE_REG_BEFORE_CMD) { + sdhci_writew(host, 0x0, SDHCI_TRANSFER_MODE); + } return; + } WARN_ON(!host->data); @@ -1333,6 +1338,8 @@ sdhci_runtime_pm_get(host); + present = mmc_gpio_get_cd(host->mmc); + spin_lock_irqsave(&host->lock, flags); WARN_ON(host->mrq != NULL); @@ -1361,7 +1368,6 @@ * zero: cd-gpio is used, and card is removed * one: cd-gpio is used, and card is present */ - present = mmc_gpio_get_cd(host->mmc); if (present < 0) { /* If polling, assume that the card is always present. */ if (host->quirks & SDHCI_QUIRK_BROKEN_CARD_DETECTION) @@ -1845,12 +1851,12 @@ unsigned long timeout; int err = 0; bool requires_tuning_nonuhs = false; + unsigned long flags; host = mmc_priv(mmc); sdhci_runtime_pm_get(host); - disable_irq(host->irq); - spin_lock(&host->lock); + spin_lock_irqsave(&host->lock, flags); ctrl = sdhci_readw(host, SDHCI_HOST_CONTROL2); @@ -1870,15 +1876,13 @@ requires_tuning_nonuhs) ctrl |= SDHCI_CTRL_EXEC_TUNING; else { - spin_unlock(&host->lock); - enable_irq(host->irq); + spin_unlock_irqrestore(&host->lock, flags); sdhci_runtime_pm_put(host); return 0; } if (host->ops->platform_execute_tuning) { - spin_unlock(&host->lock); - enable_irq(host->irq); + spin_unlock_irqrestore(&host->lock, flags); err = host->ops->platform_execute_tuning(host, opcode); sdhci_runtime_pm_put(host); return err; @@ -1951,15 +1955,12 @@ host->cmd = NULL; host->mrq = NULL; - spin_unlock(&host->lock); - enable_irq(host->irq); - + spin_unlock_irqrestore(&host->lock, flags); /* Wait for Buffer Read Ready interrupt */ wait_event_interruptible_timeout(host->buf_ready_int, (host->tuning_done == 1), msecs_to_jiffies(50)); - disable_irq(host->irq); - spin_lock(&host->lock); + spin_lock_irqsave(&host->lock, flags); if (!host->tuning_done) { pr_info(DRIVER_NAME ": Timeout waiting for " @@ -2034,8 +2035,7 @@ err = 0; sdhci_clear_set_irqs(host, SDHCI_INT_DATA_AVAIL, ier); - spin_unlock(&host->lock); - enable_irq(host->irq); + spin_unlock_irqrestore(&host->lock, flags); sdhci_runtime_pm_put(host); return err; @@ -2071,15 +2071,18 @@ { struct sdhci_host *host = mmc_priv(mmc); unsigned long flags; + int present; /* First check if client has provided their own card event */ if (host->ops->card_event) host->ops->card_event(host); + present = sdhci_do_get_cd(host); + spin_lock_irqsave(&host->lock, flags); /* Check host->mrq first in case we are runtime suspended */ - if (host->mrq && !sdhci_do_get_cd(host)) { + if (host->mrq && !present) { pr_err("%s: Card removed during transfer!\n", mmc_hostname(host->mmc)); pr_err("%s: Resetting controller.\n", @@ -2648,7 +2651,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); @@ -2656,7 +2659,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); @@ -3004,7 +3007,8 @@ /* SD3.0: SDR104 is supported so (for eMMC) the caps2 * field can be promoted to support HS200. */ - mmc->caps2 |= MMC_CAP2_HS200; + if (!(host->quirks2 & SDHCI_QUIRK2_BROKEN_HS200)) + mmc->caps2 |= MMC_CAP2_HS200; } else if (caps[1] & SDHCI_SUPPORT_SDR50) mmc->caps |= MMC_CAP_UHS_SDR50; --- linux-3.13.0.orig/drivers/mmc/host/sh_mmcif.c +++ linux-3.13.0/drivers/mmc/host/sh_mmcif.c @@ -1399,7 +1399,7 @@ host = mmc_priv(mmc); host->mmc = mmc; host->addr = reg; - host->timeout = msecs_to_jiffies(1000); + host->timeout = msecs_to_jiffies(10000); host->ccs_enable = !pd || !pd->ccs_unsupported; host->clk_ctrl2_enable = pd && pd->clk_ctrl2_present; --- linux-3.13.0.orig/drivers/mmc/host/tmio_mmc_pio.c +++ linux-3.13.0/drivers/mmc/host/tmio_mmc_pio.c @@ -1042,6 +1042,15 @@ } /* + * Check the sanity of mmc->f_min to prevent tmio_mmc_set_clock() from + * looping forever... + */ + if (mmc->f_min == 0) { + ret = -EINVAL; + goto host_free; + } + + /* * There are 4 different scenarios for the card detection: * 1) an external gpio irq handles the cd (best for power savings) * 2) internal sdhi irq handles the cd --- linux-3.13.0.orig/drivers/mtd/devices/elm.c +++ linux-3.13.0/drivers/mtd/devices/elm.c @@ -428,6 +428,7 @@ ELM_SYNDROME_FRAGMENT_1 + offset); regs->elm_syndrome_fragment_0[i] = elm_read_reg(info, ELM_SYNDROME_FRAGMENT_0 + offset); + break; default: return -EINVAL; } @@ -466,6 +467,7 @@ regs->elm_syndrome_fragment_1[i]); elm_write_reg(info, ELM_SYNDROME_FRAGMENT_0 + offset, regs->elm_syndrome_fragment_0[i]); + break; default: return -EINVAL; } --- linux-3.13.0.orig/drivers/mtd/ftl.c +++ linux-3.13.0/drivers/mtd/ftl.c @@ -1075,7 +1075,6 @@ return; } - ftl_freepart(partition); kfree(partition); } --- linux-3.13.0.orig/drivers/mtd/maps/dc21285.c +++ linux-3.13.0/drivers/mtd/maps/dc21285.c @@ -38,9 +38,9 @@ * we want to write a bit pattern XXX1 to Xilinx to enable * the write gate, which will be open for about the next 2ms. */ - spin_lock_irqsave(&nw_gpio_lock, flags); + raw_spin_lock_irqsave(&nw_gpio_lock, flags); nw_cpld_modify(CPLD_FLASH_WR_ENABLE, CPLD_FLASH_WR_ENABLE); - spin_unlock_irqrestore(&nw_gpio_lock, flags); + raw_spin_unlock_irqrestore(&nw_gpio_lock, flags); /* * let the ISA bus to catch on... --- linux-3.13.0.orig/drivers/mtd/mtd_blkdevs.c +++ linux-3.13.0/drivers/mtd/mtd_blkdevs.c @@ -198,6 +198,7 @@ if (!dev) return -ERESTARTSYS; /* FIXME: busy loop! -arnd*/ + mutex_lock(&mtd_table_mutex); mutex_lock(&dev->lock); if (dev->open) @@ -223,6 +224,7 @@ unlock: dev->open++; mutex_unlock(&dev->lock); + mutex_unlock(&mtd_table_mutex); blktrans_dev_put(dev); return ret; @@ -233,6 +235,7 @@ module_put(dev->tr->owner); kref_put(&dev->ref, blktrans_dev_release); mutex_unlock(&dev->lock); + mutex_unlock(&mtd_table_mutex); blktrans_dev_put(dev); return ret; } @@ -244,6 +247,7 @@ if (!dev) return; + mutex_lock(&mtd_table_mutex); mutex_lock(&dev->lock); if (--dev->open) @@ -259,6 +263,7 @@ } unlock: mutex_unlock(&dev->lock); + mutex_unlock(&mtd_table_mutex); blktrans_dev_put(dev); } --- linux-3.13.0.orig/drivers/mtd/mtdpart.c +++ linux-3.13.0/drivers/mtd/mtdpart.c @@ -635,8 +635,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-3.13.0.orig/drivers/mtd/nand/atmel_nand.c +++ linux-3.13.0/drivers/mtd/nand/atmel_nand.c @@ -1220,6 +1220,7 @@ goto err; } + nand_chip->options |= NAND_NO_SUBPAGE_WRITE; nand_chip->ecc.read_page = atmel_nand_pmecc_read_page; nand_chip->ecc.write_page = atmel_nand_pmecc_write_page; --- linux-3.13.0.orig/drivers/mtd/nand/fsl_elbc_nand.c +++ linux-3.13.0/drivers/mtd/nand/fsl_elbc_nand.c @@ -724,6 +724,19 @@ return 0; } +/* ECC will be calculated automatically, and errors will be detected in + * waitfunc. + */ +static int fsl_elbc_write_subpage(struct mtd_info *mtd, struct nand_chip *chip, + uint32_t offset, uint32_t data_len, + const uint8_t *buf, int oob_required) +{ + fsl_elbc_write_buf(mtd, buf, mtd->writesize); + fsl_elbc_write_buf(mtd, chip->oob_poi, mtd->oobsize); + + return 0; +} + static int fsl_elbc_chip_init(struct fsl_elbc_mtd *priv) { struct fsl_lbc_ctrl *ctrl = priv->ctrl; @@ -762,6 +775,7 @@ chip->ecc.read_page = fsl_elbc_read_page; chip->ecc.write_page = fsl_elbc_write_page; + chip->ecc.write_subpage = fsl_elbc_write_subpage; /* If CS Base Register selects full hardware ECC then use it */ if ((in_be32(&lbc->bank[priv->bank].br) & BR_DECC) == --- linux-3.13.0.orig/drivers/mtd/nand/mxc_nand.c +++ linux-3.13.0/drivers/mtd/nand/mxc_nand.c @@ -677,7 +677,6 @@ ecc_stat >>= 4; } while (--no_subpages); - mtd->ecc_stats.corrected += ret; pr_debug("%d Symbol Correctable RS-ECC Error\n", ret); return ret; --- linux-3.13.0.orig/drivers/mtd/nand/omap2.c +++ linux-3.13.0/drivers/mtd/nand/omap2.c @@ -933,7 +933,7 @@ u32 val; val = readl(info->reg.gpmc_ecc_config); - if (((val >> ECC_CONFIG_CS_SHIFT) & ~CS_MASK) != info->gpmc_cs) + if (((val >> ECC_CONFIG_CS_SHIFT) & CS_MASK) != info->gpmc_cs) return -EINVAL; /* read ecc result */ @@ -1451,7 +1451,7 @@ /* Check if any error reported */ if (!is_error_reported) - return 0; + return stat; /* Decode BCH error using ELM module */ elm_decode_bch_error_page(info->elm_dev, ecc_vec, err_vec); @@ -1633,6 +1633,7 @@ int i; dma_cap_mask_t mask; unsigned sig; + unsigned oob_index; struct resource *res; struct mtd_part_parser_data ppdata = {}; @@ -1832,11 +1833,14 @@ (mtd->writesize / nand_chip->ecc.size); if (nand_chip->options & NAND_BUSWIDTH_16) - ecclayout->eccpos[0] = BADBLOCK_MARKER_LENGTH; + oob_index = BADBLOCK_MARKER_LENGTH; else - ecclayout->eccpos[0] = 1; - ecclayout->oobfree->offset = ecclayout->eccpos[0] + - ecclayout->eccbytes; + oob_index = 1; + for (i = 0; i < ecclayout->eccbytes; i++, oob_index++) + ecclayout->eccpos[i] = oob_index; + /* no reserved-marker in ecclayout for this ecc-scheme */ + ecclayout->oobfree->offset = + ecclayout->eccpos[ecclayout->eccbytes - 1] + 1; break; case OMAP_ECC_BCH4_CODE_HW_DETECTION_SW: @@ -1853,9 +1857,15 @@ ecclayout->eccbytes = nand_chip->ecc.bytes * (mtd->writesize / nand_chip->ecc.size); - ecclayout->eccpos[0] = BADBLOCK_MARKER_LENGTH; - ecclayout->oobfree->offset = ecclayout->eccpos[0] + - ecclayout->eccbytes; + oob_index = BADBLOCK_MARKER_LENGTH; + for (i = 0; i < ecclayout->eccbytes; i++, oob_index++) { + ecclayout->eccpos[i] = oob_index; + if (((i + 1) % nand_chip->ecc.bytes) == 0) + oob_index++; + } + /* include reserved-marker in ecclayout->oobfree calculation */ + ecclayout->oobfree->offset = 1 + + ecclayout->eccpos[ecclayout->eccbytes - 1] + 1; /* software bch library is used for locating errors */ nand_chip->ecc.priv = nand_bch_init(mtd, nand_chip->ecc.size, @@ -1889,9 +1899,12 @@ ecclayout->eccbytes = nand_chip->ecc.bytes * (mtd->writesize / nand_chip->ecc.size); - ecclayout->eccpos[0] = BADBLOCK_MARKER_LENGTH; - ecclayout->oobfree->offset = ecclayout->eccpos[0] + - ecclayout->eccbytes; + oob_index = BADBLOCK_MARKER_LENGTH; + for (i = 0; i < ecclayout->eccbytes; i++, oob_index++) + ecclayout->eccpos[i] = oob_index; + /* reserved marker already included in ecclayout->eccbytes */ + ecclayout->oobfree->offset = + ecclayout->eccpos[ecclayout->eccbytes - 1] + 1; /* This ECC scheme requires ELM H/W block */ if (is_elm_present(info, pdata->elm_of_node, BCH4_ECC) < 0) { pr_err("nand: error: could not initialize ELM\n"); @@ -1919,9 +1932,15 @@ ecclayout->eccbytes = nand_chip->ecc.bytes * (mtd->writesize / nand_chip->ecc.size); - ecclayout->eccpos[0] = BADBLOCK_MARKER_LENGTH; - ecclayout->oobfree->offset = ecclayout->eccpos[0] + - ecclayout->eccbytes; + oob_index = BADBLOCK_MARKER_LENGTH; + for (i = 0; i < ecclayout->eccbytes; i++, oob_index++) { + ecclayout->eccpos[i] = oob_index; + if (((i + 1) % nand_chip->ecc.bytes) == 0) + oob_index++; + } + /* include reserved-marker in ecclayout->oobfree calculation */ + ecclayout->oobfree->offset = 1 + + ecclayout->eccpos[ecclayout->eccbytes - 1] + 1; /* software bch library is used for locating errors */ nand_chip->ecc.priv = nand_bch_init(mtd, nand_chip->ecc.size, @@ -1962,9 +1981,12 @@ ecclayout->eccbytes = nand_chip->ecc.bytes * (mtd->writesize / nand_chip->ecc.size); - ecclayout->eccpos[0] = BADBLOCK_MARKER_LENGTH; - ecclayout->oobfree->offset = ecclayout->eccpos[0] + - ecclayout->eccbytes; + oob_index = BADBLOCK_MARKER_LENGTH; + for (i = 0; i < ecclayout->eccbytes; i++, oob_index++) + ecclayout->eccpos[i] = oob_index; + /* reserved marker already included in ecclayout->eccbytes */ + ecclayout->oobfree->offset = + ecclayout->eccpos[ecclayout->eccbytes - 1] + 1; break; #else pr_err("nand: error: CONFIG_MTD_NAND_OMAP_BCH not enabled\n"); @@ -1978,11 +2000,8 @@ goto return_error; } - /* populate remaining ECC layout data */ - ecclayout->oobfree->length = mtd->oobsize - (BADBLOCK_MARKER_LENGTH + - ecclayout->eccbytes); - for (i = 1; i < ecclayout->eccbytes; i++) - ecclayout->eccpos[i] = ecclayout->eccpos[0] + i; + /* all OOB bytes from oobfree->offset till end off OOB are free */ + ecclayout->oobfree->length = mtd->oobsize - ecclayout->oobfree->offset; /* check if NAND device's OOB is enough to store ECC signatures */ if (mtd->oobsize < (ecclayout->eccbytes + BADBLOCK_MARKER_LENGTH)) { pr_err("not enough OOB bytes required = %d, available=%d\n", --- linux-3.13.0.orig/drivers/mtd/nand/pxa3xx_nand.c +++ linux-3.13.0/drivers/mtd/nand/pxa3xx_nand.c @@ -110,10 +110,10 @@ /* macros for registers read/write */ #define nand_writel(info, off, val) \ - __raw_writel((val), (info)->mmio_base + (off)) + writel_relaxed((val), (info)->mmio_base + (off)) #define nand_readl(info, off) \ - __raw_readl((info)->mmio_base + (off)) + readl_relaxed((info)->mmio_base + (off)) /* error code and state */ enum { --- linux-3.13.0.orig/drivers/mtd/onenand/onenand_base.c +++ linux-3.13.0/drivers/mtd/onenand/onenand_base.c @@ -2606,6 +2606,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); @@ -2617,7 +2618,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-3.13.0.orig/drivers/mtd/tests/torturetest.c +++ linux-3.13.0/drivers/mtd/tests/torturetest.c @@ -264,7 +264,9 @@ int i; void *patt; - mtdtest_erase_good_eraseblocks(mtd, bad_ebs, eb, ebcnt); + err = mtdtest_erase_good_eraseblocks(mtd, bad_ebs, eb, ebcnt); + if (err) + goto out; /* Check if the eraseblocks contain only 0xFF bytes */ if (check) { --- linux-3.13.0.orig/drivers/mtd/ubi/attach.c +++ linux-3.13.0/drivers/mtd/ubi/attach.c @@ -408,7 +408,7 @@ second_is_newer = !second_is_newer; } else { dbg_bld("PEB %d CRC is OK", pnum); - bitflips = !!err; + bitflips |= !!err; } mutex_unlock(&ubi->buf_mutex); --- linux-3.13.0.orig/drivers/mtd/ubi/cdev.c +++ linux-3.13.0/drivers/mtd/ubi/cdev.c @@ -451,7 +451,7 @@ /* Validate the request */ err = -EINVAL; if (req.lnum < 0 || req.lnum >= vol->reserved_pebs || - req.bytes < 0 || req.lnum >= vol->usable_leb_size) + req.bytes < 0 || req.bytes > vol->usable_leb_size) break; err = get_exclusive(desc); --- linux-3.13.0.orig/drivers/mtd/ubi/eba.c +++ linux-3.13.0/drivers/mtd/ubi/eba.c @@ -1362,7 +1362,8 @@ * during re-size. */ ubi_move_aeb_to_list(av, aeb, &ai->erase); - vol->eba_tbl[aeb->lnum] = aeb->pnum; + else + vol->eba_tbl[aeb->lnum] = aeb->pnum; } } --- linux-3.13.0.orig/drivers/mtd/ubi/fastmap.c +++ linux-3.13.0/drivers/mtd/ubi/fastmap.c @@ -330,6 +330,7 @@ av = tmp_av; else { ubi_err("orphaned volume in fastmap pool!"); + kmem_cache_free(ai->aeb_slab_cache, new_aeb); return UBI_BAD_FASTMAP; } --- linux-3.13.0.orig/drivers/mtd/ubi/upd.c +++ linux-3.13.0/drivers/mtd/ubi/upd.c @@ -133,6 +133,10 @@ ubi_assert(!vol->updating && !vol->changing_leb); vol->updating = 1; + vol->upd_buf = vmalloc(ubi->leb_size); + if (!vol->upd_buf) + return -ENOMEM; + err = set_update_marker(ubi, vol); if (err) return err; @@ -152,14 +156,12 @@ err = clear_update_marker(ubi, vol, 0); if (err) return err; + + vfree(vol->upd_buf); vol->updating = 0; return 0; } - vol->upd_buf = vmalloc(ubi->leb_size); - if (!vol->upd_buf) - return -ENOMEM; - vol->upd_ebs = div_u64(bytes + vol->usable_leb_size - 1, vol->usable_leb_size); vol->upd_bytes = bytes; @@ -191,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-3.13.0.orig/drivers/mtd/ubi/vtbl.c +++ linux-3.13.0/drivers/mtd/ubi/vtbl.c @@ -651,6 +651,7 @@ if (ubi->corr_peb_count) ubi_err("%d PEBs are corrupted and not used", ubi->corr_peb_count); + return -ENOSPC; } ubi->rsvd_pebs += reserved_pebs; ubi->avail_pebs -= reserved_pebs; --- linux-3.13.0.orig/drivers/mtd/ubi/wl.c +++ linux-3.13.0/drivers/mtd/ubi/wl.c @@ -995,7 +995,7 @@ int cancel) { int err, scrubbing = 0, torture = 0, protect = 0, erroneous = 0; - int vol_id = -1, uninitialized_var(lnum); + int vol_id = -1, lnum = -1; #ifdef CONFIG_MTD_UBI_FASTMAP int anchor = wrk->anchor; #endif @@ -1205,7 +1205,6 @@ err = do_sync_erase(ubi, e1, vol_id, lnum, 0); if (err) { - kmem_cache_free(ubi_wl_entry_slab, e1); if (e2) kmem_cache_free(ubi_wl_entry_slab, e2); goto out_ro; @@ -1219,10 +1218,8 @@ dbg_wl("PEB %d (LEB %d:%d) was put meanwhile, erase", e2->pnum, vol_id, lnum); err = do_sync_erase(ubi, e2, vol_id, lnum, 0); - if (err) { - kmem_cache_free(ubi_wl_entry_slab, e2); + if (err) goto out_ro; - } } dbg_wl("done"); @@ -1258,10 +1255,9 @@ ubi_free_vid_hdr(ubi, vid_hdr); err = do_sync_erase(ubi, e2, vol_id, lnum, torture); - if (err) { - kmem_cache_free(ubi_wl_entry_slab, e2); + if (err) goto out_ro; - } + mutex_unlock(&ubi->move_mutex); return 0; @@ -1978,6 +1974,7 @@ if (ubi->corr_peb_count) ubi_err("%d PEBs are corrupted and not used", ubi->corr_peb_count); + err = -ENOSPC; goto out_free; } ubi->avail_pebs -= reserved_pebs; --- linux-3.13.0.orig/drivers/net/Kconfig +++ linux-3.13.0/drivers/net/Kconfig @@ -135,6 +135,7 @@ config MACVTAP tristate "MAC-VLAN based tap driver" depends on MACVLAN + depends on INET help This adds a specialized tap character device driver that is based on the MAC-VLAN network interface, called macvtap. A macvtap device @@ -205,6 +206,7 @@ config TUN tristate "Universal TUN/TAP device driver support" + depends on INET select CRC32 ---help--- TUN/TAP provides packet reception and transmission for user space @@ -341,7 +343,6 @@ The corresponding Linux frontend driver is enabled by the CONFIG_XEN_NETDEV_FRONTEND configuration option. - The backend driver presents a standard network device endpoint for each paravirtual network device to the driver domain network stack. These can then be bridged or routed @@ -353,12 +354,63 @@ will be called xen-netback. config VMXNET3 - tristate "VMware VMXNET3 ethernet driver" - depends on PCI && INET + tristate "VMware VMXNET3 ethernet driver" + depends on PCI && INET + help + This driver supports VMware's vmxnet3 virtual ethernet NIC. + To compile this driver as a module, choose M here: the + module will be called vmxnet3. + +config DPA + bool "Freescale Data Path Frame Manager Ethernet" + depends on FSL_SOC && FSL_BMAN_PORTAL && FSL_QMAN_PORTAL && FSL_FMAN + select PHYLIB + +config DPA_OFFLINE_PORTS + bool "Offline Ports support" + depends on DPA + default y + help + The Offline Parsing / Host Command ports (short: OH ports, of Offline ports) provide + most of the functionality of the regular, online ports, except they receive their + frames from a core or an accelerator on the SoC, via QMan frame queues, + rather than directly from the network. + Offline ports are configured via PCD (Parse-Classify-Distribute) schemes, just like + any online FMan port. They deliver the processed frames to frame queues, according + to the applied PCD configurations. + + Choosing this feature will not impact the functionality and/or performance of the system, + so it is safe to have it. + +config DPA_MAX_FRM_SIZE + int "Maximum L2 frame size" + depends on DPA + range 64 9600 + default "1522" help - This driver supports VMware's vmxnet3 virtual ethernet NIC. - To compile this driver as a module, choose M here: the - module will be called vmxnet3. + Configure this in relation to the maximum possible MTU of your network configuration. In particular, + one would need to increase this value in order to use jumbo frames. DPA_MAX_FRM_SIZE must accomodate + the Ethernet FCS (4 bytes) and one ETH+VLAN header (18 bytes), to a total of 22 bytes in excess of + the desired L3 MTU. + + Note that having too large a DPA_MAX_FRM_SIZE (much larger than the actual MTU) may lead to buffer + exhaustion, especially in the case of badly fragmented datagrams on the Rx path. Conversely, + having a DPA_MAX_FRM_SIZE smaller than the actual MTU will lead to frames being dropped. + + This can be overridden by specifying "fsl_fman_phy_max_frm" in the kernel bootargs: + * in Hypervisor-based scenarios, by adding a "chosen" node with the "bootargs" property specifying + "fsl_fman_phy_max_frm="; + * in non-Hypervisor-based scenarios, via u-boot's env, by modifying the "bootargs" env variable. + +config FSL_DPA_1588 + tristate "IEEE 1588-compliant timestamping" + depends on DPA + default n + +config DPAA_ETH_UNIT_TESTS + bool "Run Unit Tests for DPAA Ethernet" + depends on DPA + default y source "drivers/net/hyperv/Kconfig" --- linux-3.13.0.orig/drivers/net/Makefile +++ linux-3.13.0/drivers/net/Makefile @@ -56,6 +56,7 @@ obj-$(CONFIG_WLAN) += wireless/ obj-$(CONFIG_WIMAX) += wimax/ obj-$(CONFIG_IEEE802154) += ieee802154/ +obj-$(if $(CONFIG_DPA),y) += dpa/ obj-$(CONFIG_VMXNET3) += vmxnet3/ obj-$(CONFIG_XEN_NETDEV_FRONTEND) += xen-netfront.o --- linux-3.13.0.orig/drivers/net/bonding/bond_3ad.c +++ linux-3.13.0/drivers/net/bonding/bond_3ad.c @@ -1806,8 +1806,6 @@ BOND_AD_INFO(bond).agg_select_timer = timeout; } -static u16 aggregator_identifier; - /** * bond_3ad_initialize - initialize a bond's 802.3ad parameters and structures * @bond: bonding struct to work on @@ -1821,7 +1819,7 @@ if (MAC_ADDRESS_COMPARE(&(BOND_AD_INFO(bond).system.sys_mac_addr), bond->dev->dev_addr)) { - aggregator_identifier = 0; + BOND_AD_INFO(bond).aggregator_identifier = 0; BOND_AD_INFO(bond).system.sys_priority = 0xFFFF; BOND_AD_INFO(bond).system.sys_mac_addr = *((struct mac_addr *)bond->dev->dev_addr); @@ -1892,7 +1890,7 @@ ad_initialize_agg(aggregator); aggregator->aggregator_mac_address = *((struct mac_addr *)bond->dev->dev_addr); - aggregator->aggregator_identifier = (++aggregator_identifier); + aggregator->aggregator_identifier = ++BOND_AD_INFO(bond).aggregator_identifier; aggregator->slave = slave; aggregator->is_active = 0; aggregator->num_of_ports = 0; @@ -2458,7 +2456,7 @@ out: if (res) { /* no suitable interface, frame not sent */ - kfree_skb(skb); + dev_kfree_skb_any(skb); } return NETDEV_TX_OK; --- linux-3.13.0.orig/drivers/net/bonding/bond_3ad.h +++ linux-3.13.0/drivers/net/bonding/bond_3ad.h @@ -253,6 +253,7 @@ struct ad_bond_info { struct ad_system system; /* 802.3ad system structure */ u32 agg_select_timer; // Timer to select aggregator after all adapter's hand shakes + u16 aggregator_identifier; }; struct ad_slave_info { --- linux-3.13.0.orig/drivers/net/bonding/bond_alb.c +++ linux-3.13.0/drivers/net/bonding/bond_alb.c @@ -731,7 +731,7 @@ client_info->ntt = 0; } - if (!vlan_get_tag(skb, &client_info->vlan_id)) + if (vlan_get_tag(skb, &client_info->vlan_id)) client_info->vlan_id = 0; if (!client_info->assigned) { @@ -1481,7 +1481,7 @@ if (res) { /* no suitable interface, frame not sent */ - kfree_skb(skb); + dev_kfree_skb_any(skb); } return NETDEV_TX_OK; --- linux-3.13.0.orig/drivers/net/bonding/bond_main.c +++ linux-3.13.0/drivers/net/bonding/bond_main.c @@ -269,6 +269,8 @@ static int bond_init(struct net_device *bond_dev); static void bond_uninit(struct net_device *bond_dev); +static bool bond_time_in_interval(struct bonding *bond, unsigned long last_act, + int mod); /*---------------------------- General routines -----------------------------*/ @@ -1090,10 +1092,14 @@ NETIF_F_FRAGLIST | NETIF_F_ALL_TSO | \ NETIF_F_HIGHDMA | NETIF_F_LRO) +#define BOND_ENC_FEATURES (NETIF_F_ALL_CSUM | NETIF_F_SG | NETIF_F_RXCSUM |\ + NETIF_F_TSO | NETIF_F_GSO_UDP_TUNNEL) + static void bond_compute_features(struct bonding *bond) { unsigned int flags, dst_release_flag = IFF_XMIT_DST_RELEASE; netdev_features_t vlan_features = BOND_VLAN_FEATURES; + netdev_features_t enc_features = BOND_ENC_FEATURES; struct net_device *bond_dev = bond->dev; struct list_head *iter; struct slave *slave; @@ -1108,6 +1114,9 @@ vlan_features = netdev_increment_features(vlan_features, slave->dev->vlan_features, BOND_VLAN_FEATURES); + enc_features = netdev_increment_features(enc_features, + slave->dev->hw_enc_features, + BOND_ENC_FEATURES); dst_release_flag &= slave->dev->priv_flags; if (slave->dev->hard_header_len > max_hard_header_len) max_hard_header_len = slave->dev->hard_header_len; @@ -1118,6 +1127,7 @@ done: bond_dev->vlan_features = vlan_features; + bond_dev->hw_enc_features = enc_features; bond_dev->hard_header_len = max_hard_header_len; bond_dev->gso_max_segs = gso_max_segs; netif_set_gso_max_size(bond_dev, gso_max_size); @@ -1218,7 +1228,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; } @@ -1390,6 +1399,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) { @@ -1576,6 +1588,9 @@ } #endif + if (!(bond_dev->features & NETIF_F_LRO)) + dev_disable_lro(slave_dev); + res = netdev_rx_handler_register(slave_dev, bond_handle_frame, new_slave); if (res) { @@ -1639,6 +1654,7 @@ dev_close(slave_dev); err_restore_mac: + slave_dev->flags &= ~IFF_SLAVE; if (!bond->params.fail_over_mac) { /* XXX TODO - fom follow mode needs to change master's * MAC if this slave's MAC is in use by the bond, or at @@ -1657,9 +1673,17 @@ err_undo_flags: /* Enslave of first slave has failed and we need to fix master's mac */ - if (!bond_has_slaves(bond) && - ether_addr_equal(bond_dev->dev_addr, slave_dev->dev_addr)) - eth_hw_addr_random(bond_dev); + if (!bond_has_slaves(bond)) { + if (ether_addr_equal(bond_dev->dev_addr, + 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; + } + } return res; } @@ -1874,6 +1898,7 @@ bond_dev->priv_flags |= IFF_DISABLE_NETPOLL; pr_info("%s: destroying bond %s.\n", bond_dev->name, bond_dev->name); + bond_remove_proc_entry(bond); unregister_netdevice(bond_dev); } return ret; @@ -2322,6 +2347,7 @@ struct slave *slave) { struct arphdr *arp = (struct arphdr *)skb->data; + struct slave *curr_arp_slave; unsigned char *arp_ptr; __be32 sip, tip; int alen; @@ -2366,17 +2392,29 @@ bond->params.arp_validate, slave_do_arp_validate(bond, slave), &sip, &tip); - /* - * 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. + curr_arp_slave = rcu_dereference(bond->current_arp_slave); + + /* 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 + * + * (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. * - * 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 + * 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)) @@ -2385,6 +2423,10 @@ time_after(slave_last_rx(bond, bond->curr_active_slave), bond->curr_active_slave->jiffies)) 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: read_unlock(&bond->lock); @@ -3577,7 +3619,7 @@ } } /* no slave that can tx has been found */ - kfree_skb(skb); + dev_kfree_skb_any(skb); } /** @@ -3630,8 +3672,14 @@ else bond_xmit_slave_id(bond, skb, 0); } else { - slave_id = bond_rr_gen_slave_id(bond); - bond_xmit_slave_id(bond, skb, slave_id % bond->slave_cnt); + int slave_cnt = ACCESS_ONCE(bond->slave_cnt); + + if (likely(slave_cnt)) { + slave_id = bond_rr_gen_slave_id(bond); + bond_xmit_slave_id(bond, skb, slave_id % slave_cnt); + } else { + dev_kfree_skb_any(skb); + } } return NETDEV_TX_OK; @@ -3650,7 +3698,7 @@ if (slave) bond_dev_queue_xmit(bond, skb, slave->dev); else - kfree_skb(skb); + dev_kfree_skb_any(skb); return NETDEV_TX_OK; } @@ -3662,8 +3710,13 @@ static int bond_xmit_xor(struct sk_buff *skb, struct net_device *bond_dev) { struct bonding *bond = netdev_priv(bond_dev); + int slave_cnt = ACCESS_ONCE(bond->slave_cnt); - bond_xmit_slave_id(bond, skb, bond_xmit_hash(bond, skb, bond->slave_cnt)); + if (likely(slave_cnt)) + bond_xmit_slave_id(bond, skb, + bond_xmit_hash(bond, skb, bond->slave_cnt)); + else + dev_kfree_skb_any(skb); return NETDEV_TX_OK; } @@ -3693,7 +3746,7 @@ if (slave && IS_UP(slave->dev) && slave->link == BOND_LINK_UP) bond_dev_queue_xmit(bond, skb, slave->dev); else - kfree_skb(skb); + dev_kfree_skb_any(skb); return NETDEV_TX_OK; } @@ -3733,7 +3786,7 @@ static u16 bond_select_queue(struct net_device *dev, struct sk_buff *skb, - void *accel_priv) + void *accel_priv, select_queue_fallback_t fallback) { /* * This helper function exists to help dev_pick_tx get the correct @@ -3784,7 +3837,7 @@ pr_err("%s: Error: Unknown bonding mode %d\n", dev->name, bond->params.mode); WARN_ON_ONCE(1); - kfree_skb(skb); + dev_kfree_skb_any(skb); return NETDEV_TX_OK; } } @@ -3805,7 +3858,7 @@ if (bond_has_slaves(bond)) ret = __bond_start_xmit(skb, dev); else - kfree_skb(skb); + dev_kfree_skb_any(skb); rcu_read_unlock(); return ret; @@ -3947,6 +4000,7 @@ NETIF_F_HW_VLAN_CTAG_FILTER; bond_dev->hw_features &= ~(NETIF_F_ALL_CSUM & ~NETIF_F_HW_CSUM); + bond_dev->hw_features |= NETIF_F_GSO_UDP_TUNNEL; bond_dev->features |= bond_dev->hw_features; } @@ -4512,6 +4566,7 @@ out: return res; err: + bond_destroy_debugfs(); bond_netlink_fini(); err_link: unregister_pernet_subsys(&bond_net_ops); --- linux-3.13.0.orig/drivers/net/caif/caif_hsi.c +++ linux-3.13.0/drivers/net/caif/caif_hsi.c @@ -1415,7 +1415,6 @@ cfhsi = netdev_priv(dev); cfhsi_netlink_parms(data, cfhsi); - dev_net_set(cfhsi->ndev, src_net); get_ops = symbol_get(cfhsi_get_ops); if (!get_ops) { --- linux-3.13.0.orig/drivers/net/can/at91_can.c +++ linux-3.13.0/drivers/net/can/at91_can.c @@ -1120,7 +1120,9 @@ struct at91_priv *priv = netdev_priv(dev); int err; - clk_enable(priv->clk); + err = clk_prepare_enable(priv->clk); + if (err) + return err; /* check or determine and set bittime */ err = open_candev(dev); @@ -1146,7 +1148,7 @@ out_close: close_candev(dev); out: - clk_disable(priv->clk); + clk_disable_unprepare(priv->clk); return err; } @@ -1163,7 +1165,7 @@ at91_chip_stop(dev, CAN_STATE_STOPPED); free_irq(dev->irq, dev); - clk_disable(priv->clk); + clk_disable_unprepare(priv->clk); close_candev(dev); --- linux-3.13.0.orig/drivers/net/can/c_can/c_can.c +++ linux-3.13.0/drivers/net/can/c_can/c_can.c @@ -694,6 +694,9 @@ /* disable all interrupts */ c_can_enable_all_interrupts(priv, DISABLE_ALL_INTERRUPTS); + /* put ctrl to init on stop to end ongoing transmission */ + priv->write_reg(priv, C_CAN_CTRL_REG, CONTROL_INIT); + /* set the state as STOPPED */ priv->can.state = CAN_STATE_STOPPED; } --- linux-3.13.0.orig/drivers/net/can/c_can/c_can_platform.c +++ linux-3.13.0/drivers/net/can/c_can/c_can_platform.c @@ -194,8 +194,9 @@ priv->instance = pdev->id; res = platform_get_resource(pdev, IORESOURCE_MEM, 1); - priv->raminit_ctrlreg = devm_ioremap_resource(&pdev->dev, res); - if (IS_ERR(priv->raminit_ctrlreg) || (int)priv->instance < 0) + priv->raminit_ctrlreg = devm_ioremap(&pdev->dev, res->start, + resource_size(res)); + if (!priv->raminit_ctrlreg || priv->instance < 0) dev_info(&pdev->dev, "control memory is not used for raminit\n"); else priv->raminit = c_can_hw_raminit; --- linux-3.13.0.orig/drivers/net/can/dev.c +++ linux-3.13.0/drivers/net/can/dev.c @@ -324,19 +324,10 @@ } if (!priv->echo_skb[idx]) { - struct sock *srcsk = skb->sk; - if (atomic_read(&skb->users) != 1) { - struct sk_buff *old_skb = skb; - - skb = skb_clone(old_skb, GFP_ATOMIC); - kfree_skb(old_skb); - if (!skb) - return; - } else - skb_orphan(skb); - - skb->sk = srcsk; + skb = can_create_echo_skb(skb); + if (!skb) + return; /* make settings for echo to reduce code in irq context */ skb->protocol = htons(ETH_P_CAN); @@ -394,7 +385,7 @@ BUG_ON(idx >= priv->echo_skb_max); if (priv->echo_skb[idx]) { - kfree_skb(priv->echo_skb[idx]); + dev_kfree_skb_any(priv->echo_skb[idx]); priv->echo_skb[idx] = NULL; } } @@ -512,6 +503,10 @@ skb->pkt_type = PACKET_BROADCAST; skb->ip_summed = CHECKSUM_UNNECESSARY; + skb_reset_mac_header(skb); + skb_reset_network_header(skb); + skb_reset_transport_header(skb); + can_skb_reserve(skb); can_skb_prv(skb)->ifindex = dev->ifindex; @@ -674,10 +669,14 @@ if (dev->flags & IFF_UP) return -EBUSY; cm = nla_data(data[IFLA_CAN_CTRLMODE]); - if (cm->flags & ~priv->ctrlmode_supported) + + /* check whether changed bits are allowed to be modified */ + if (cm->mask & ~priv->ctrlmode_supported) return -EOPNOTSUPP; + + /* clear bits to be modified and copy the flag values */ priv->ctrlmode &= ~cm->mask; - priv->ctrlmode |= cm->flags; + priv->ctrlmode |= (cm->flags & cm->mask); } if (data[IFLA_CAN_RESTART_MS]) { @@ -731,7 +730,7 @@ (priv->bittiming_const && 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-3.13.0.orig/drivers/net/can/flexcan.c +++ linux-3.13.0/drivers/net/can/flexcan.c @@ -125,7 +125,9 @@ FLEXCAN_ESR_BOFF_INT | FLEXCAN_ESR_ERR_INT) /* FLEXCAN interrupt flag register (IFLAG) bits */ -#define FLEXCAN_TX_BUF_ID 8 +/* Errata ERR005829 step7: Reserve first valid MB */ +#define FLEXCAN_TX_BUF_RESERVED 8 +#define FLEXCAN_TX_BUF_ID 9 #define FLEXCAN_IFLAG_BUF(x) BIT(x) #define FLEXCAN_IFLAG_RX_FIFO_OVERFLOW BIT(7) #define FLEXCAN_IFLAG_RX_FIFO_WARN BIT(6) @@ -136,6 +138,17 @@ /* FLEXCAN message buffers */ #define FLEXCAN_MB_CNT_CODE(x) (((x) & 0xf) << 24) +#define FLEXCAN_MB_CODE_RX_INACTIVE (0x0 << 24) +#define FLEXCAN_MB_CODE_RX_EMPTY (0x4 << 24) +#define FLEXCAN_MB_CODE_RX_FULL (0x2 << 24) +#define FLEXCAN_MB_CODE_RX_OVERRRUN (0x6 << 24) +#define FLEXCAN_MB_CODE_RX_RANSWER (0xa << 24) + +#define FLEXCAN_MB_CODE_TX_INACTIVE (0x8 << 24) +#define FLEXCAN_MB_CODE_TX_ABORT (0x9 << 24) +#define FLEXCAN_MB_CODE_TX_DATA (0xc << 24) +#define FLEXCAN_MB_CODE_TX_TANSWER (0xe << 24) + #define FLEXCAN_MB_CNT_SRR BIT(22) #define FLEXCAN_MB_CNT_IDE BIT(21) #define FLEXCAN_MB_CNT_RTR BIT(20) @@ -144,6 +157,8 @@ #define FLEXCAN_MB_CODE_MASK (0xf0ffffff) +#define FLEXCAN_TIMEOUT_US (50) + /* * FLEXCAN hardware feature flags * @@ -259,6 +274,22 @@ } #endif +static inline int flexcan_transceiver_enable(const struct flexcan_priv *priv) +{ + if (!priv->reg_xceiver) + return 0; + + return regulator_enable(priv->reg_xceiver); +} + +static inline int flexcan_transceiver_disable(const struct flexcan_priv *priv) +{ + if (!priv->reg_xceiver) + return 0; + + return regulator_disable(priv->reg_xceiver); +} + static inline int flexcan_has_and_handle_berr(const struct flexcan_priv *priv, u32 reg_esr) { @@ -266,26 +297,42 @@ (reg_esr & FLEXCAN_ESR_ERR_BUS); } -static inline void flexcan_chip_enable(struct flexcan_priv *priv) +static int flexcan_chip_enable(struct flexcan_priv *priv) { struct flexcan_regs __iomem *regs = priv->base; + unsigned int timeout = FLEXCAN_TIMEOUT_US / 10; u32 reg; reg = flexcan_read(®s->mcr); reg &= ~FLEXCAN_MCR_MDIS; flexcan_write(reg, ®s->mcr); - udelay(10); + while (timeout-- && (flexcan_read(®s->mcr) & FLEXCAN_MCR_LPM_ACK)) + usleep_range(10, 20); + + if (flexcan_read(®s->mcr) & FLEXCAN_MCR_LPM_ACK) + return -ETIMEDOUT; + + return 0; } -static inline void flexcan_chip_disable(struct flexcan_priv *priv) +static int flexcan_chip_disable(struct flexcan_priv *priv) { struct flexcan_regs __iomem *regs = priv->base; + unsigned int timeout = FLEXCAN_TIMEOUT_US / 10; u32 reg; reg = flexcan_read(®s->mcr); reg |= FLEXCAN_MCR_MDIS; flexcan_write(reg, ®s->mcr); + + while (timeout-- && !(flexcan_read(®s->mcr) & FLEXCAN_MCR_LPM_ACK)) + usleep_range(10, 20); + + if (!(flexcan_read(®s->mcr) & FLEXCAN_MCR_LPM_ACK)) + return -ETIMEDOUT; + + return 0; } static int flexcan_get_berr_counter(const struct net_device *dev, @@ -338,6 +385,14 @@ flexcan_write(can_id, ®s->cantxfg[FLEXCAN_TX_BUF_ID].can_id); flexcan_write(ctrl, ®s->cantxfg[FLEXCAN_TX_BUF_ID].can_ctrl); + /* Errata ERR005829 step8: + * Write twice INACTIVE(0x8) code to first MB. + */ + flexcan_write(FLEXCAN_MB_CODE_TX_INACTIVE, + ®s->cantxfg[FLEXCAN_TX_BUF_RESERVED].can_ctrl); + flexcan_write(FLEXCAN_MB_CODE_TX_INACTIVE, + ®s->cantxfg[FLEXCAN_TX_BUF_RESERVED].can_ctrl); + return NETDEV_TX_OK; } @@ -647,6 +702,9 @@ stats->tx_bytes += can_get_echo_skb(dev, 0); stats->tx_packets++; can_led_event(dev, CAN_LED_EVENT_TX); + /* after sending a RTR frame mailbox is in RX mode */ + flexcan_write(FLEXCAN_MB_CODE_TX_INACTIVE, + ®s->cantxfg[FLEXCAN_TX_BUF_ID].can_ctrl); flexcan_write((1 << FLEXCAN_TX_BUF_ID), ®s->iflag1); netif_wake_queue(dev); } @@ -704,9 +762,12 @@ struct flexcan_regs __iomem *regs = priv->base; int err; u32 reg_mcr, reg_ctrl; + int i; /* enable module */ - flexcan_chip_enable(priv); + err = flexcan_chip_enable(priv); + if (err) + return err; /* soft reset */ flexcan_write(FLEXCAN_MCR_SOFTRST, ®s->mcr); @@ -773,8 +834,18 @@ netdev_dbg(dev, "%s: writing ctrl=0x%08x", __func__, reg_ctrl); flexcan_write(reg_ctrl, ®s->ctrl); - /* Abort any pending TX, mark Mailbox as INACTIVE */ - flexcan_write(FLEXCAN_MB_CNT_CODE(0x4), + /* clear and invalidate all mailboxes first */ + for (i = FLEXCAN_TX_BUF_ID; i < ARRAY_SIZE(regs->cantxfg); i++) { + flexcan_write(FLEXCAN_MB_CODE_RX_INACTIVE, + ®s->cantxfg[i].can_ctrl); + } + + /* Errata ERR005829: mark first TX mailbox as INACTIVE */ + flexcan_write(FLEXCAN_MB_CODE_TX_INACTIVE, + ®s->cantxfg[FLEXCAN_TX_BUF_RESERVED].can_ctrl); + + /* mark TX mailbox as INACTIVE */ + flexcan_write(FLEXCAN_MB_CODE_TX_INACTIVE, ®s->cantxfg[FLEXCAN_TX_BUF_ID].can_ctrl); /* acceptance mask/acceptance code (accept everything) */ @@ -785,11 +856,9 @@ if (priv->devtype_data->features & FLEXCAN_HAS_V10_FEATURES) flexcan_write(0x0, ®s->rxfgmask); - if (priv->reg_xceiver) { - err = regulator_enable(priv->reg_xceiver); - if (err) - goto out; - } + err = flexcan_transceiver_enable(priv); + if (err) + goto out; /* synchronize with the can bus */ reg_mcr = flexcan_read(®s->mcr); @@ -824,16 +893,17 @@ struct flexcan_regs __iomem *regs = priv->base; u32 reg; - /* Disable all interrupts */ - flexcan_write(0, ®s->imask1); - /* Disable + halt module */ reg = flexcan_read(®s->mcr); reg |= FLEXCAN_MCR_MDIS | FLEXCAN_MCR_HALT; flexcan_write(reg, ®s->mcr); - if (priv->reg_xceiver) - regulator_disable(priv->reg_xceiver); + /* Disable all interrupts */ + flexcan_write(0, ®s->imask1); + flexcan_write(priv->reg_ctrl_default & ~FLEXCAN_CTRL_ERR_ALL, + ®s->ctrl); + + flexcan_transceiver_disable(priv); priv->can.state = CAN_STATE_STOPPED; return; @@ -863,7 +933,7 @@ /* start chip and queuing */ err = flexcan_chip_start(dev); if (err) - goto out_close; + goto out_free_irq; can_led_event(dev, CAN_LED_EVENT_OPEN); @@ -872,6 +942,8 @@ return 0; + out_free_irq: + free_irq(dev->irq, dev); out_close: close_candev(dev); out_disable_per: @@ -942,12 +1014,16 @@ goto out_disable_ipg; /* select "bus clock", chip must be disabled */ - flexcan_chip_disable(priv); + err = flexcan_chip_disable(priv); + if (err) + goto out_disable_per; reg = flexcan_read(®s->ctrl); reg |= FLEXCAN_CTRL_CLK_SRC; flexcan_write(reg, ®s->ctrl); - flexcan_chip_enable(priv); + err = flexcan_chip_enable(priv); + if (err) + goto out_chip_disable; /* set freeze, halt and activate FIFO, restrict register access */ reg = flexcan_read(®s->mcr); @@ -964,14 +1040,15 @@ if (!(reg & FLEXCAN_MCR_FEN)) { netdev_err(dev, "Could not enable RX FIFO, unsupported core\n"); err = -ENODEV; - goto out_disable_per; + goto out_chip_disable; } err = register_candev(dev); - out_disable_per: /* disable core and turn off clocks */ + out_chip_disable: flexcan_chip_disable(priv); + out_disable_per: clk_disable_unprepare(priv->clk_per); out_disable_ipg: clk_disable_unprepare(priv->clk_ipg); @@ -1004,12 +1081,19 @@ const struct flexcan_devtype_data *devtype_data; struct net_device *dev; struct flexcan_priv *priv; + struct regulator *reg_xceiver; struct resource *mem; struct clk *clk_ipg = NULL, *clk_per = NULL; void __iomem *base; int err, irq; u32 clock_freq = 0; + reg_xceiver = devm_regulator_get(&pdev->dev, "xceiver"); + if (PTR_ERR(reg_xceiver) == -EPROBE_DEFER) + return -EPROBE_DEFER; + else if (IS_ERR(reg_xceiver)) + reg_xceiver = NULL; + if (pdev->dev.of_node) of_property_read_u32(pdev->dev.of_node, "clock-frequency", &clock_freq); @@ -1071,9 +1155,7 @@ priv->pdata = dev_get_platdata(&pdev->dev); priv->devtype_data = devtype_data; - priv->reg_xceiver = devm_regulator_get(&pdev->dev, "xceiver"); - if (IS_ERR(priv->reg_xceiver)) - priv->reg_xceiver = NULL; + priv->reg_xceiver = reg_xceiver; netif_napi_add(dev, &priv->napi, flexcan_poll, FLEXCAN_NAPI_WEIGHT); @@ -1101,9 +1183,10 @@ static int flexcan_remove(struct platform_device *pdev) { struct net_device *dev = platform_get_drvdata(pdev); + struct flexcan_priv *priv = netdev_priv(dev); unregister_flexcandev(dev); - + netif_napi_del(&priv->napi); free_candev(dev); return 0; @@ -1114,8 +1197,11 @@ { struct net_device *dev = dev_get_drvdata(device); struct flexcan_priv *priv = netdev_priv(dev); + int err; - flexcan_chip_disable(priv); + err = flexcan_chip_disable(priv); + if (err) + return err; if (netif_running(dev)) { netif_stop_queue(dev); @@ -1136,9 +1222,7 @@ netif_device_attach(dev); netif_start_queue(dev); } - flexcan_chip_enable(priv); - - return 0; + return flexcan_chip_enable(priv); } #endif /* CONFIG_PM_SLEEP */ --- linux-3.13.0.orig/drivers/net/can/janz-ican3.c +++ linux-3.13.0/drivers/net/can/janz-ican3.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include @@ -1134,20 +1135,9 @@ */ static void ican3_put_echo_skb(struct ican3_dev *mod, struct sk_buff *skb) { - struct sock *srcsk = skb->sk; - - if (atomic_read(&skb->users) != 1) { - struct sk_buff *old_skb = skb; - - skb = skb_clone(old_skb, GFP_ATOMIC); - kfree_skb(old_skb); - if (!skb) - return; - } else { - skb_orphan(skb); - } - - skb->sk = srcsk; + skb = can_create_echo_skb(skb); + if (!skb) + return; /* save this skb for tx interrupt echo handling */ skb_queue_tail(&mod->echoq, skb); --- linux-3.13.0.orig/drivers/net/can/led.c +++ linux-3.13.0/drivers/net/can/led.c @@ -97,6 +97,9 @@ if (!priv) return NOTIFY_DONE; + if (!priv->tx_led_trig || !priv->rx_led_trig) + return NOTIFY_DONE; + if (msg == NETDEV_CHANGENAME) { snprintf(name, sizeof(name), "%s-tx", netdev->name); led_trigger_rename_static(name, priv->tx_led_trig); --- linux-3.13.0.orig/drivers/net/can/sja1000/peak_pci.c +++ linux-3.13.0/drivers/net/can/sja1000/peak_pci.c @@ -551,7 +551,7 @@ { struct sja1000_priv *priv; struct peak_pci_chan *chan; - struct net_device *dev; + struct net_device *dev, *prev_dev; void __iomem *cfg_base, *reg_base; u16 sub_sys_id, icr; int i, err, channels; @@ -687,11 +687,13 @@ writew(0x0, cfg_base + PITA_ICR + 2); chan = NULL; - for (dev = pci_get_drvdata(pdev); dev; dev = chan->prev_dev) { - unregister_sja1000dev(dev); - free_sja1000dev(dev); + for (dev = pci_get_drvdata(pdev); dev; dev = prev_dev) { priv = netdev_priv(dev); chan = priv->priv; + prev_dev = chan->prev_dev; + + unregister_sja1000dev(dev); + free_sja1000dev(dev); } /* free any PCIeC resources too */ @@ -725,10 +727,12 @@ /* Loop over all registered devices */ while (1) { + struct net_device *prev_dev = chan->prev_dev; + dev_info(&pdev->dev, "removing device %s\n", dev->name); unregister_sja1000dev(dev); free_sja1000dev(dev); - dev = chan->prev_dev; + dev = prev_dev; if (!dev) { /* do that only for first channel */ --- linux-3.13.0.orig/drivers/net/can/sja1000/sja1000.c +++ linux-3.13.0/drivers/net/can/sja1000/sja1000.c @@ -184,6 +184,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-3.13.0.orig/drivers/net/can/slcan.c +++ linux-3.13.0/drivers/net/can/slcan.c @@ -54,6 +54,7 @@ #include #include #include +#include #include #include @@ -87,6 +88,7 @@ struct tty_struct *tty; /* ptr to TTY structure */ struct net_device *dev; /* easy for intr handling */ spinlock_t lock; + struct work_struct tx_work; /* Flushes transmit buffer */ /* These are pointers to the malloc()ed frame buffers. */ unsigned char rbuff[SLC_MTU]; /* receiver buffer */ @@ -311,34 +313,44 @@ sl->dev->stats.tx_bytes += cf->can_dlc; } -/* - * Called by the driver when there's room for more data. If we have - * more packets to send, we send them here. - */ -static void slcan_write_wakeup(struct tty_struct *tty) +/* Write out any remaining transmit buffer. Scheduled when tty is writable */ +static void slcan_transmit(struct work_struct *work) { + struct slcan *sl = container_of(work, struct slcan, tx_work); int actual; - struct slcan *sl = (struct slcan *) tty->disc_data; + spin_lock_bh(&sl->lock); /* First make sure we're connected. */ - if (!sl || sl->magic != SLCAN_MAGIC || !netif_running(sl->dev)) + if (!sl->tty || sl->magic != SLCAN_MAGIC || !netif_running(sl->dev)) { + spin_unlock_bh(&sl->lock); return; + } - spin_lock(&sl->lock); if (sl->xleft <= 0) { /* Now serial buffer is almost free & we can start * transmission of another packet */ sl->dev->stats.tx_packets++; - clear_bit(TTY_DO_WRITE_WAKEUP, &tty->flags); - spin_unlock(&sl->lock); + clear_bit(TTY_DO_WRITE_WAKEUP, &sl->tty->flags); + spin_unlock_bh(&sl->lock); netif_wake_queue(sl->dev); return; } - actual = tty->ops->write(tty, sl->xhead, sl->xleft); + actual = sl->tty->ops->write(sl->tty, sl->xhead, sl->xleft); sl->xleft -= actual; sl->xhead += actual; - spin_unlock(&sl->lock); + spin_unlock_bh(&sl->lock); +} + +/* + * Called by the driver when there's room for more data. + * Schedule the transmit. + */ +static void slcan_write_wakeup(struct tty_struct *tty) +{ + struct slcan *sl = tty->disc_data; + + schedule_work(&sl->tx_work); } /* Send a can_frame to a TTY queue. */ @@ -524,6 +536,7 @@ sl->magic = SLCAN_MAGIC; sl->dev = dev; spin_lock_init(&sl->lock); + INIT_WORK(&sl->tx_work, slcan_transmit); slcan_devs[i] = dev; return sl; @@ -622,8 +635,12 @@ if (!sl || sl->magic != SLCAN_MAGIC || sl->tty != tty) return; + spin_lock_bh(&sl->lock); tty->disc_data = NULL; sl->tty = NULL; + spin_unlock_bh(&sl->lock); + + flush_work(&sl->tx_work); /* Flush network side */ unregister_netdev(sl->dev); --- linux-3.13.0.orig/drivers/net/can/usb/ems_usb.c +++ linux-3.13.0/drivers/net/can/usb/ems_usb.c @@ -118,6 +118,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 @@ -279,6 +282,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 */ @@ -530,8 +538,6 @@ /* Release context */ context->echo_index = MAX_TX_URBS; - if (netif_queue_stopped(netdev)) - netif_wake_queue(netdev); } /* @@ -591,7 +597,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; @@ -842,7 +848,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-3.13.0.orig/drivers/net/can/usb/esd_usb2.c +++ linux-3.13.0/drivers/net/can/usb/esd_usb2.c @@ -1142,6 +1142,7 @@ } } unlink_all_urbs(dev); + kfree(dev); } } --- linux-3.13.0.orig/drivers/net/can/usb/kvaser_usb.c +++ linux-3.13.0/drivers/net/can/usb/kvaser_usb.c @@ -12,6 +12,8 @@ * Copyright (C) 2012 Olivier Sobrie */ +#include +#include #include #include #include @@ -296,10 +298,11 @@ struct kvaser_usb_net_priv { struct can_priv can; - atomic_t active_tx_urbs; - struct usb_anchor tx_submitted; + spinlock_t tx_contexts_lock; + int active_tx_contexts; struct kvaser_usb_tx_urb_context tx_contexts[MAX_TX_URBS]; + struct usb_anchor tx_submitted; struct completion start_comp, stop_comp; struct kvaser_usb *dev; @@ -397,8 +400,15 @@ while (pos <= actual_len - MSG_HEADER_LEN) { tmp = buf + pos; - if (!tmp->len) - break; + /* Handle messages crossing the USB endpoint max packet + * size boundary. Check kvaser_usb_read_bulk_callback() + * for further details. + */ + if (tmp->len == 0) { + pos = round_up(pos, + dev->bulk_in->wMaxPacketSize); + continue; + } if (pos + tmp->len > actual_len) { dev_err(dev->udev->dev.parent, "Format error\n"); @@ -474,6 +484,8 @@ return err; dev->nchannels = msg.u.cardinfo.nchannels; + if (dev->nchannels > MAX_NET_DEVICES) + return -EINVAL; return 0; } @@ -488,6 +500,7 @@ struct can_frame *cf; u8 channel = msg->u.tx_acknowledge.channel; u8 tid = msg->u.tx_acknowledge.tid; + unsigned long flags; if (channel >= dev->nchannels) { dev_err(dev->udev->dev.parent, @@ -527,12 +540,15 @@ stats->tx_packets++; stats->tx_bytes += context->dlc; - can_get_echo_skb(priv->netdev, context->echo_index); - context->echo_index = MAX_TX_URBS; - atomic_dec(&priv->active_tx_urbs); + spin_lock_irqsave(&priv->tx_contexts_lock, flags); + can_get_echo_skb(priv->netdev, context->echo_index); + context->echo_index = MAX_TX_URBS; + --priv->active_tx_contexts; netif_wake_queue(priv->netdev); + + spin_unlock_irqrestore(&priv->tx_contexts_lock, flags); } static void kvaser_usb_simple_msg_callback(struct urb *urb) @@ -577,7 +593,7 @@ usb_sndbulkpipe(dev->udev, dev->bulk_out->bEndpointAddress), buf, msg->len, - kvaser_usb_simple_msg_callback, priv); + kvaser_usb_simple_msg_callback, netdev); usb_anchor_urb(urb, &priv->tx_submitted); err = usb_submit_urb(urb, GFP_ATOMIC); @@ -585,7 +601,6 @@ netdev_err(netdev, "Error transmitting URB\n"); usb_unanchor_urb(urb); usb_free_urb(urb); - kfree(buf); return err; } @@ -594,17 +609,6 @@ return 0; } -static void kvaser_usb_unlink_tx_urbs(struct kvaser_usb_net_priv *priv) -{ - int i; - - usb_kill_anchored_urbs(&priv->tx_submitted); - atomic_set(&priv->active_tx_urbs, 0); - - for (i = 0; i < MAX_TX_URBS; i++) - priv->tx_contexts[i].echo_index = MAX_TX_URBS; -} - static void kvaser_usb_rx_error(const struct kvaser_usb *dev, const struct kvaser_msg *msg) { @@ -652,11 +656,6 @@ priv = dev->nets[channel]; stats = &priv->netdev->stats; - if (status & M16C_STATE_BUS_RESET) { - kvaser_usb_unlink_tx_urbs(priv); - return; - } - skb = alloc_can_err_skb(priv->netdev, &cf); if (!skb) { stats->rx_dropped++; @@ -667,7 +666,7 @@ netdev_dbg(priv->netdev, "Error status: 0x%02x\n", status); - if (status & M16C_STATE_BUS_OFF) { + if (status & (M16C_STATE_BUS_OFF | M16C_STATE_BUS_RESET)) { cf->can_id |= CAN_ERR_BUSOFF; priv->can.can_stats.bus_off++; @@ -693,9 +692,7 @@ } new_state = CAN_STATE_ERROR_PASSIVE; - } - - if (status == M16C_STATE_BUS_ERROR) { + } else if (status & M16C_STATE_BUS_ERROR) { if ((priv->can.state < CAN_STATE_ERROR_WARNING) && ((txerr >= 96) || (rxerr >= 96))) { cf->can_id |= CAN_ERR_CRTL; @@ -705,7 +702,8 @@ priv->can.can_stats.error_warning++; new_state = CAN_STATE_ERROR_WARNING; - } else if (priv->can.state > CAN_STATE_ERROR_ACTIVE) { + } else if ((priv->can.state > CAN_STATE_ERROR_ACTIVE) && + ((txerr < 96) && (rxerr < 96))) { cf->can_id |= CAN_ERR_PROT; cf->data[2] = CAN_ERR_PROT_ACTIVE; @@ -979,8 +977,19 @@ while (pos <= urb->actual_length - MSG_HEADER_LEN) { msg = urb->transfer_buffer + pos; - if (!msg->len) - break; + /* The Kvaser firmware can only read and write messages that + * does not cross the USB's endpoint wMaxPacketSize boundary. + * If a follow-up command crosses such boundary, firmware puts + * a placeholder zero-length command in its place then aligns + * the real command to the next max packet size. + * + * Handle such cases or we're going to miss a significant + * number of events in case of a heavy rx load on the bus. + */ + if (msg->len == 0) { + pos = round_up(pos, dev->bulk_in->wMaxPacketSize); + continue; + } if (pos + msg->len > urb->actual_length) { dev_err(dev->udev->dev.parent, "Format error\n"); @@ -988,7 +997,6 @@ } kvaser_usb_handle_message(dev, msg); - pos += msg->len; } @@ -1160,6 +1168,24 @@ return err; } +static void kvaser_usb_reset_tx_urb_contexts(struct kvaser_usb_net_priv *priv) +{ + int i; + + priv->active_tx_contexts = 0; + for (i = 0; i < MAX_TX_URBS; i++) + priv->tx_contexts[i].echo_index = MAX_TX_URBS; +} + +/* This method might sleep. Do not call it in the atomic context + * of URB completions. + */ +static void kvaser_usb_unlink_tx_urbs(struct kvaser_usb_net_priv *priv) +{ + usb_kill_anchored_urbs(&priv->tx_submitted); + kvaser_usb_reset_tx_urb_contexts(priv); +} + static void kvaser_usb_unlink_all_urbs(struct kvaser_usb *dev) { int i; @@ -1236,6 +1262,9 @@ if (err) netdev_warn(netdev, "Cannot stop device, error %d\n", err); + /* reset tx contexts */ + kvaser_usb_unlink_tx_urbs(priv); + priv->can.state = CAN_STATE_STOPPED; close_candev(priv->netdev); @@ -1274,8 +1303,8 @@ struct urb *urb; void *buf; struct kvaser_msg *msg; - int i, err; - int ret = NETDEV_TX_OK; + int i, err, ret = NETDEV_TX_OK; + unsigned long flags; if (can_dropped_invalid_skb(netdev, skb)) return NETDEV_TX_OK; @@ -1284,13 +1313,15 @@ if (!urb) { netdev_err(netdev, "No memory left for URBs\n"); stats->tx_dropped++; - goto nourbmem; + dev_kfree_skb(skb); + return NETDEV_TX_OK; } buf = kmalloc(sizeof(struct kvaser_msg), GFP_ATOMIC); if (!buf) { stats->tx_dropped++; - goto nobufmem; + dev_kfree_skb(skb); + goto freeurb; } msg = buf; @@ -1317,21 +1348,32 @@ if (cf->can_id & CAN_RTR_FLAG) msg->u.tx_can.flags |= MSG_FLAG_REMOTE_FRAME; + spin_lock_irqsave(&priv->tx_contexts_lock, flags); for (i = 0; i < ARRAY_SIZE(priv->tx_contexts); i++) { if (priv->tx_contexts[i].echo_index == MAX_TX_URBS) { context = &priv->tx_contexts[i]; + + context->echo_index = i; + can_put_echo_skb(skb, netdev, context->echo_index); + ++priv->active_tx_contexts; + if (priv->active_tx_contexts >= MAX_TX_URBS) + netif_stop_queue(netdev); + break; } } + spin_unlock_irqrestore(&priv->tx_contexts_lock, flags); + /* This should never happen; it implies a flow control bug */ if (!context) { netdev_warn(netdev, "cannot find free context\n"); + + kfree(buf); ret = NETDEV_TX_BUSY; - goto releasebuf; + goto freeurb; } context->priv = priv; - context->echo_index = i; context->dlc = cf->can_dlc; msg->u.tx_can.tid = context->echo_index; @@ -1343,21 +1385,17 @@ kvaser_usb_write_bulk_callback, context); usb_anchor_urb(urb, &priv->tx_submitted); - can_put_echo_skb(skb, netdev, context->echo_index); - - atomic_inc(&priv->active_tx_urbs); - - if (atomic_read(&priv->active_tx_urbs) >= MAX_TX_URBS) - netif_stop_queue(netdev); - err = usb_submit_urb(urb, GFP_ATOMIC); if (unlikely(err)) { + spin_lock_irqsave(&priv->tx_contexts_lock, flags); + can_free_echo_skb(netdev, context->echo_index); + context->echo_index = MAX_TX_URBS; + --priv->active_tx_contexts; + netif_wake_queue(netdev); - skb = NULL; /* set to NULL to avoid double free in - * dev_kfree_skb(skb) */ + spin_unlock_irqrestore(&priv->tx_contexts_lock, flags); - atomic_dec(&priv->active_tx_urbs); usb_unanchor_urb(urb); stats->tx_dropped++; @@ -1367,19 +1405,13 @@ else netdev_warn(netdev, "Failed tx_urb %d\n", err); - goto releasebuf; + goto freeurb; } - usb_free_urb(urb); - - return NETDEV_TX_OK; + ret = NETDEV_TX_OK; -releasebuf: - kfree(buf); -nobufmem: +freeurb: usb_free_urb(urb); -nourbmem: - dev_kfree_skb(skb); return ret; } @@ -1489,7 +1521,11 @@ struct kvaser_usb *dev = usb_get_intfdata(intf); struct net_device *netdev; struct kvaser_usb_net_priv *priv; - int i, err; + int err; + + err = kvaser_usb_send_simple_msg(dev, CMD_RESET_CHIP, channel); + if (err) + return err; netdev = alloc_candev(sizeof(*priv), MAX_TX_URBS); if (!netdev) { @@ -1499,19 +1535,17 @@ priv = netdev_priv(netdev); + init_usb_anchor(&priv->tx_submitted); init_completion(&priv->start_comp); init_completion(&priv->stop_comp); - init_usb_anchor(&priv->tx_submitted); - atomic_set(&priv->active_tx_urbs, 0); - - for (i = 0; i < ARRAY_SIZE(priv->tx_contexts); i++) - priv->tx_contexts[i].echo_index = MAX_TX_URBS; - priv->dev = dev; priv->netdev = netdev; priv->channel = channel; + spin_lock_init(&priv->tx_contexts_lock); + kvaser_usb_reset_tx_urb_contexts(priv); + priv->can.state = CAN_STATE_STOPPED; priv->can.clock.freq = CAN_USB_CLOCK; priv->can.bittiming_const = &kvaser_usb_bittiming_const; @@ -1576,7 +1610,7 @@ { struct kvaser_usb *dev; int err = -ENOMEM; - int i; + int i, retry = 3; dev = devm_kzalloc(&intf->dev, sizeof(*dev), GFP_KERNEL); if (!dev) @@ -1594,10 +1628,15 @@ usb_set_intfdata(intf, dev); - for (i = 0; i < MAX_NET_DEVICES; i++) - kvaser_usb_send_simple_msg(dev, CMD_RESET_CHIP, i); + /* On some x86 laptops, plugging a Kvaser device again after + * an unplug makes the firmware always ignore the very first + * command. For such a case, provide some room for retries + * instead of completely exiting the driver. + */ + do { + err = kvaser_usb_get_software_info(dev); + } while (--retry && err == -ETIMEDOUT); - err = kvaser_usb_get_software_info(dev); if (err) { dev_err(&intf->dev, "Cannot get software infos, error %d\n", err); --- linux-3.13.0.orig/drivers/net/can/usb/peak_usb/pcan_usb_core.c +++ linux-3.13.0/drivers/net/can/usb/peak_usb/pcan_usb_core.c @@ -734,7 +734,7 @@ dev->cmd_buf = kmalloc(PCAN_USB_MAX_CMD_LEN, GFP_KERNEL); if (!dev->cmd_buf) { err = -ENOMEM; - goto lbl_set_intf_data; + goto lbl_free_candev; } dev->udev = usb_dev; @@ -773,7 +773,7 @@ err = register_candev(netdev); if (err) { dev_err(&intf->dev, "couldn't register CAN device: %d\n", err); - goto lbl_free_cmd_buf; + goto lbl_restore_intf_data; } if (dev->prev_siblings) @@ -786,14 +786,14 @@ if (dev->adapter->dev_init) { err = dev->adapter->dev_init(dev); if (err) - goto lbl_free_cmd_buf; + goto lbl_unregister_candev; } /* set bus off */ if (dev->adapter->dev_set_bus) { err = dev->adapter->dev_set_bus(dev, 0); if (err) - goto lbl_free_cmd_buf; + goto lbl_unregister_candev; } /* get device number early */ @@ -805,11 +805,14 @@ return 0; -lbl_free_cmd_buf: - kfree(dev->cmd_buf); +lbl_unregister_candev: + unregister_candev(netdev); -lbl_set_intf_data: +lbl_restore_intf_data: usb_set_intfdata(intf, dev->prev_siblings); + kfree(dev->cmd_buf); + +lbl_free_candev: free_candev(netdev); return err; --- linux-3.13.0.orig/drivers/net/can/usb/peak_usb/pcan_usb_pro.c +++ linux-3.13.0/drivers/net/can/usb/peak_usb/pcan_usb_pro.c @@ -333,8 +333,6 @@ if (!(dev->state & PCAN_USB_STATE_CONNECTED)) return 0; - memset(req_addr, '\0', req_size); - req_type = USB_TYPE_VENDOR | USB_RECIP_OTHER; switch (req_id) { @@ -345,6 +343,7 @@ default: p = usb_rcvctrlpipe(dev->udev, 0); req_type |= USB_DIR_IN; + memset(req_addr, '\0', req_size); break; } --- linux-3.13.0.orig/drivers/net/can/vcan.c +++ linux-3.13.0/drivers/net/can/vcan.c @@ -46,6 +46,7 @@ #include #include #include +#include #include #include @@ -109,25 +110,23 @@ stats->rx_packets++; stats->rx_bytes += cfd->len; } - kfree_skb(skb); + consume_skb(skb); return NETDEV_TX_OK; } /* perform standard echo handling for CAN network interfaces */ if (loop) { - struct sock *srcsk = skb->sk; - skb = skb_share_check(skb, GFP_ATOMIC); + skb = can_create_echo_skb(skb); if (!skb) return NETDEV_TX_OK; /* receive with packet counting */ - skb->sk = srcsk; vcan_rx(skb, dev); } else { /* no looped packets => no counting */ - kfree_skb(skb); + consume_skb(skb); } return NETDEV_TX_OK; } --- linux-3.13.0.orig/drivers/net/dpa/Makefile +++ linux-3.13.0/drivers/net/dpa/Makefile @@ -0,0 +1,19 @@ +# +# Makefile for the Freescale Ethernet controllers +# +EXTRA_CFLAGS += -DVERSION=\"\" +# +#Include netcomm SW specific definitions +include $(srctree)/drivers/net/dpa/NetCommSw/ncsw_config.mk + +EXTRA_CFLAGS += -I$(NET_DPA) + +#Netcomm SW tree +obj-$(CONFIG_FSL_FMAN) += NetCommSw/ +obj-$(CONFIG_FSL_DPA_1588) += dpaa_1588.o +obj-$(CONFIG_DPA) += fsl-mac.o fsl-dpa.o +obj-$(CONFIG_DPA_OFFLINE_PORTS) += fsl-oh.o + +fsl-dpa-objs := dpa-ethtool.o dpaa_eth.o +fsl-mac-objs := mac.o mac-api.o +fsl-oh-objs := offline_port.o --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/Kconfig +++ linux-3.13.0/drivers/net/dpa/NetCommSw/Kconfig @@ -0,0 +1,57 @@ +menu "Frame Manager support" + +menuconfig FSL_FMAN + bool "Freescale Frame Manager (datapath) support" + # depends on PPC_E500MC + default y + ---help--- + If unsure, say Y. + +if FSL_FMAN + +config FSL_FMAN_TEST + bool "FMan test module" + default n + ---help--- + This option compiles test code for FMan. + +menu "FMAN Processor support" +choice + depends on FSL_FMAN + prompt "Processor Type" + +config FMAN_P3040_P4080_P5020 + bool "P3040 P4080 5020" + +config FMAN_P1023 + bool "P1023" + +endchoice +endmenu + +config FMAN_RESOURCE_ALLOCATION_ALGORITHM + bool "Enable FMan dynamic resource allocation algorithm" + default n + ---help--- + Enables algorithm for dynamic resource allocation + +config FMAN_DISABLE_OH_TO_REUSE_RESOURCES + depends on FMAN_RESOURCE_ALLOCATION_ALGORITHM + bool "Disable offline parsing ports to reuse resources" + default n + ---help--- + Redistributes FMan OH's resources to all other ports, + thus enabling other configurations. + +config FMAN_MIB_CNT_OVF_IRQ_EN + bool "Enable the dTSEC MIB counters overflow interrupt" + default n + ---help--- + Enable the dTSEC MIB counters overflow interrupt to get + accurate MIB counters values. Enabled it compensates + for the counters overflow but reduces performance and + triggers error messages in HV setups. + +endif # FSL_FMAN + +endmenu --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/Makefile +++ linux-3.13.0/drivers/net/dpa/NetCommSw/Makefile @@ -0,0 +1,13 @@ +# +# Makefile for the Freescale Ethernet controllers +# +EXTRA_CFLAGS += -DVERSION=\"\" +# +#Include netcomm SW specific definitions +include $(srctree)/drivers/net/dpa/NetCommSw/ncsw_config.mk +# +obj-y += etc/ +obj-${CONFIG_FMAN_P3040_P4080_P5020} += integrations/P3040_P4080_P5020/ +obj-${CONFIG_FMAN_P1023} += integrations/P1023/ +obj-y += Peripherals/FM/ +obj-y += src/ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/HC/Makefile +++ linux-3.13.0/drivers/net/dpa/NetCommSw/Peripherals/FM/HC/Makefile @@ -0,0 +1,15 @@ +# +# Makefile for the Freescale Ethernet controllers +# +EXTRA_CFLAGS += -DVERSION=\"\" +# +#Include netcomm SW specific definitions +include $(srctree)/drivers/net/dpa/NetCommSw/ncsw_config.mk + +NCSW_FM_INC = $(srctree)/drivers/net/dpa/NetCommSw/Peripherals/FM/inc + +EXTRA_CFLAGS += -I$(NCSW_FM_INC) + +obj-y += fsl-ncsw-Hc.o + +fsl-ncsw-Hc-objs := hc.o --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/HC/hc.c +++ linux-3.13.0/drivers/net/dpa/NetCommSw/Peripherals/FM/HC/hc.c @@ -0,0 +1,1584 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 "std_ext.h" +#include "error_ext.h" +#include "sprint_ext.h" +#include "string_ext.h" + +#include "fm_common.h" +#include "fm_hc.h" + + +#define HC_HCOR_OPCODE_PLCR_PRFL 0x0 +#define HC_HCOR_OPCODE_KG_SCM 0x1 +#define HC_HCOR_OPCODE_SYNC 0x2 +#define HC_HCOR_OPCODE_CC 0x3 +#define HC_HCOR_OPCODE_CC_CAPWAP_REASSM_TIMEOUT 0x5 + +#define HC_HCOR_GBL 0x20000000 + +#define SIZE_OF_HC_FRAME_PORT_REGS (sizeof(t_HcFrame)-sizeof(t_FmPcdKgInterModuleSchemeRegs)+sizeof(t_FmPcdKgPortRegs)) +#define SIZE_OF_HC_FRAME_SCHEME_REGS sizeof(t_HcFrame) +#define SIZE_OF_HC_FRAME_PROFILES_REGS (sizeof(t_HcFrame)-sizeof(t_FmPcdKgInterModuleSchemeRegs)+sizeof(t_FmPcdPlcrInterModuleProfileRegs)) +#define SIZE_OF_HC_FRAME_PROFILE_CNT (sizeof(t_HcFrame)-sizeof(t_FmPcdPlcrInterModuleProfileRegs)+sizeof(uint32_t)) +#define SIZE_OF_HC_FRAME_READ_OR_CC_DYNAMIC 16 + +#define BUILD_FD(len) \ +do { \ + memset(&fmFd, 0, sizeof(t_DpaaFD)); \ + DPAA_FD_SET_ADDR(&fmFd, p_HcFrame); \ + DPAA_FD_SET_OFFSET(&fmFd, 0); \ + DPAA_FD_SET_LENGTH(&fmFd, len); \ +} while (0) + + +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(push,1) +#endif /* defined(__MWERKS__) && ... */ +#define MEM_MAP_START + +/**************************************************************************//** + @Description PCD KG scheme registers +*//***************************************************************************/ +typedef _Packed struct t_FmPcdKgSchemeRegsWithoutCounter { + volatile uint32_t kgse_mode; /**< MODE */ + volatile uint32_t kgse_ekfc; /**< Extract Known Fields Command */ + volatile uint32_t kgse_ekdv; /**< Extract Known Default Value */ + volatile uint32_t kgse_bmch; /**< Bit Mask Command High */ + volatile uint32_t kgse_bmcl; /**< Bit Mask Command Low */ + volatile uint32_t kgse_fqb; /**< Frame Queue Base */ + volatile uint32_t kgse_hc; /**< Hash Command */ + volatile uint32_t kgse_ppc; /**< Policer Profile Command */ + volatile uint32_t kgse_gec[FM_PCD_KG_NUM_OF_GENERIC_REGS]; + /**< Generic Extract Command */ + volatile uint32_t kgse_dv0; /**< KeyGen Scheme Entry Default Value 0 */ + volatile uint32_t kgse_dv1; /**< KeyGen Scheme Entry Default Value 1 */ + volatile uint32_t kgse_ccbs; /**< KeyGen Scheme Entry Coarse Classification Bit*/ + volatile uint32_t kgse_mv; /**< KeyGen Scheme Entry Match vector */ +} _PackedType t_FmPcdKgSchemeRegsWithoutCounter; + +typedef _Packed struct t_FmPcdKgPortRegs { + volatile uint32_t spReg; + volatile uint32_t cppReg; +} _PackedType t_FmPcdKgPortRegs; + +typedef _Packed struct t_HcFrame { + volatile uint32_t opcode; + volatile uint32_t actionReg; + volatile uint32_t extraReg; + volatile uint32_t commandSequence; + union { + t_FmPcdKgInterModuleSchemeRegs schemeRegs; + t_FmPcdKgInterModuleSchemeRegs schemeRegsWithoutCounter; + t_FmPcdPlcrInterModuleProfileRegs profileRegs; + volatile uint32_t singleRegForWrite; /* for writing SP, CPP, profile counter */ + t_FmPcdKgPortRegs portRegsForRead; + volatile uint32_t clsPlanEntries[CLS_PLAN_NUM_PER_GRP]; + t_FmPcdCcCapwapReassmTimeoutParams ccCapwapReassmTimeout; + } hcSpecificData; +} _PackedType t_HcFrame; + +#define MEM_MAP_END +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(pop) +#endif /* defined(__MWERKS__) && ... */ + + +typedef struct t_FmHc { + t_Handle h_FmPcd; + t_Handle h_HcPortDev; + t_FmPcdQmEnqueueCallback *f_QmEnqueue; /**< A callback for enqueuing frames to the QM */ + t_Handle h_QmArg; /**< A handle to the QM module */ + uint8_t padTill16; + + uint32_t seqNum; + volatile bool wait[32]; +} t_FmHc; + + +static __inline__ t_Error EnQFrm(t_FmHc *p_FmHc, t_DpaaFD *p_FmFd, volatile uint32_t *p_SeqNum) +{ + t_Error err = E_OK; + uint32_t savedSeqNum; + uint32_t intFlags; + uint32_t timeout=100; + + intFlags = FmPcdLock(p_FmHc->h_FmPcd); + *p_SeqNum = p_FmHc->seqNum; + savedSeqNum = p_FmHc->seqNum; + p_FmHc->seqNum = (uint32_t)((p_FmHc->seqNum+1)%32); + ASSERT_COND(!p_FmHc->wait[savedSeqNum]); + p_FmHc->wait[savedSeqNum] = TRUE; + FmPcdUnlock(p_FmHc->h_FmPcd, intFlags); + DBG(TRACE, ("Send Hc, SeqNum %d, FD@0x%x, fd offset 0x%x", + savedSeqNum,DPAA_FD_GET_ADDR(p_FmFd),DPAA_FD_GET_OFFSET(p_FmFd))); + err = p_FmHc->f_QmEnqueue(p_FmHc->h_QmArg, (void *)p_FmFd); + if(err) + RETURN_ERROR(MINOR, err, ("HC enqueue failed")); + + while (p_FmHc->wait[savedSeqNum] && --timeout) + XX_UDelay(100); + + if (!timeout) + RETURN_ERROR(MINOR, E_TIMEOUT, ("HC Callback, timeout exceeded")); + + return err; +} + +static t_Error CcHcDoDynamicChange(t_FmHc *p_FmHc, t_Handle p_OldPointer, t_Handle p_NewPointer) +{ + t_HcFrame *p_HcFrame; + t_DpaaFD fmFd; + t_Error err = E_OK; + + ASSERT_COND(p_FmHc); + + p_HcFrame = (t_HcFrame *)XX_MallocSmart((sizeof(t_HcFrame) + p_FmHc->padTill16), 0, 16); + if (!p_HcFrame) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("HC Frame obj")); + + memset(p_HcFrame, 0, sizeof(t_HcFrame)); + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_CC); + p_HcFrame->actionReg = FmPcdCcGetNodeAddrOffsetFromNodeInfo(p_FmHc->h_FmPcd, p_NewPointer); + if(p_HcFrame->actionReg == (uint32_t)ILLEGAL_BASE) + { + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Something wrong with base address")); + } + + p_HcFrame->actionReg |= 0xc0000000; + p_HcFrame->extraReg = FmPcdCcGetNodeAddrOffsetFromNodeInfo(p_FmHc->h_FmPcd, p_OldPointer); + if(p_HcFrame->extraReg == (uint32_t)ILLEGAL_BASE) + { + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Something wrong with base address")); + } + + BUILD_FD(SIZE_OF_HC_FRAME_READ_OR_CC_DYNAMIC); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + XX_FreeSmart(p_HcFrame); + + return E_OK; +} + +static t_Error HcDynamicChange(t_FmHc *p_FmHc,t_List *h_OldPointersLst, t_List *h_NewPointersLst, t_Handle *h_Params) +{ + + t_List *p_PosOld, *p_PosNew; + uint16_t i = 0; + t_Error err = E_OK; + uint8_t numOfModifiedPtr; + + SANITY_CHECK_RETURN_ERROR((LIST_NumOfObjs(h_NewPointersLst) == LIST_NumOfObjs(h_OldPointersLst)),E_INVALID_STATE); + + numOfModifiedPtr = (uint8_t)LIST_NumOfObjs(h_NewPointersLst); + p_PosNew = LIST_FIRST(h_NewPointersLst); + p_PosOld = LIST_FIRST(h_OldPointersLst); + for(i = 0; i < numOfModifiedPtr; i++) + { + err = CcHcDoDynamicChange(p_FmHc, p_PosOld, p_PosNew); + if(err) + { + FmPcdCcReleaseModifiedDataStructure(p_FmHc->h_FmPcd, h_OldPointersLst, h_NewPointersLst, i, h_Params); + RETURN_ERROR(MAJOR, err, ("For part of nodes changes are done - situation is danger")); + } + p_PosNew = LIST_NEXT(p_PosNew); + p_PosOld = LIST_NEXT(p_PosOld); + } + + err = FmPcdCcReleaseModifiedDataStructure(p_FmHc->h_FmPcd, h_OldPointersLst, h_NewPointersLst, i, h_Params); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + + return E_OK; +} + + +t_Handle FmHcConfigAndInit(t_FmHcParams *p_FmHcParams) +{ + t_FmHc *p_FmHc; + t_FmPortParams fmPortParam; + t_Error err = E_OK; + + p_FmHc = (t_FmHc *)XX_Malloc(sizeof(t_FmHc)); + if (!p_FmHc) + { + REPORT_ERROR(MINOR, E_NO_MEMORY, ("HC obj")); + return NULL; + } + memset(p_FmHc,0,sizeof(t_FmHc)); + + p_FmHc->h_FmPcd = p_FmHcParams->h_FmPcd; + p_FmHc->f_QmEnqueue = p_FmHcParams->params.f_QmEnqueue; + p_FmHc->h_QmArg = p_FmHcParams->params.h_QmArg; + + if (!FmIsMaster(p_FmHcParams->h_Fm)) + return (t_Handle)p_FmHc; + +/* +TKT056919 - axi12axi0 can hang if read request follows the single byte write on the very next cycle +TKT038900 - FM dma lockup occur due to AXI slave protocol violation +*/ +#ifdef FM_LOCKUP_ALIGNMENT_ERRATA_FMAN_SW004 + p_FmHc->padTill16 = 16 - (sizeof(t_FmHc) % 16); +#endif /* FM_LOCKUP_ALIGNMENT_ERRATA_FMAN_SW004 */ + memset(&fmPortParam, 0, sizeof(fmPortParam)); + fmPortParam.baseAddr = p_FmHcParams->params.portBaseAddr; + fmPortParam.portType = e_FM_PORT_TYPE_OH_HOST_COMMAND; + fmPortParam.portId = p_FmHcParams->params.portId; + fmPortParam.liodnBase = p_FmHcParams->params.liodnBase; + fmPortParam.h_Fm = p_FmHcParams->h_Fm; + + fmPortParam.specificParams.nonRxParams.errFqid = p_FmHcParams->params.errFqid; + fmPortParam.specificParams.nonRxParams.dfltFqid = p_FmHcParams->params.confFqid; + fmPortParam.specificParams.nonRxParams.qmChannel = p_FmHcParams->params.qmChannel; + + p_FmHc->h_HcPortDev = FM_PORT_Config(&fmPortParam); + if(!p_FmHc->h_HcPortDev) + { + REPORT_ERROR(MAJOR, E_INVALID_HANDLE, ("FM HC port!")); + XX_Free(p_FmHc); + return NULL; + } + + /* final init */ + if ((err = FM_PORT_Init(p_FmHc->h_HcPortDev)) != E_OK) + { + REPORT_ERROR(MAJOR, err, ("FM HC port!")); + FmHcFree(p_FmHc); + return NULL; + } + + if ((err = FM_PORT_Enable(p_FmHc->h_HcPortDev)) != E_OK) + { + REPORT_ERROR(MAJOR, err, ("FM HC port!")); + FmHcFree(p_FmHc); + return NULL; + } + + return (t_Handle)p_FmHc; +} + +void FmHcFree(t_Handle h_FmHc) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + + if (!p_FmHc) + return; + + if (p_FmHc->h_HcPortDev) + FM_PORT_Free(p_FmHc->h_HcPortDev); + + XX_Free(p_FmHc); +} + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) +t_Error FmHcDumpRegs(t_Handle h_FmHc) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + + SANITY_CHECK_RETURN_ERROR(p_FmHc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmHc->h_HcPortDev, E_INVALID_HANDLE); + + return FM_PORT_DumpRegs(p_FmHc->h_HcPortDev); + +} +#endif /* (defined(DEBUG_ERRORS) && ... */ + +void FmHcTxConf(t_Handle h_FmHc, t_DpaaFD *p_Fd) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_HcFrame *p_HcFrame; + uint32_t intFlags; + + ASSERT_COND(p_FmHc); + + intFlags = FmPcdLock(p_FmHc->h_FmPcd); + p_HcFrame = (t_HcFrame *)PTR_MOVE(DPAA_FD_GET_ADDR(p_Fd), DPAA_FD_GET_OFFSET(p_Fd)); + + DBG(TRACE, ("Hc Conf, SeqNum %d, FD@0x%x, fd offset 0x%x", + p_HcFrame->commandSequence, DPAA_FD_GET_ADDR(p_Fd), DPAA_FD_GET_OFFSET(p_Fd))); + + if (!(p_FmHc->wait[p_HcFrame->commandSequence])) + REPORT_ERROR(MINOR, E_INVALID_FRAME, ("Not an Host-Command frame received!")); + else + p_FmHc->wait[p_HcFrame->commandSequence] = FALSE; + FmPcdUnlock(p_FmHc->h_FmPcd, intFlags); +} + +t_Handle FmHcPcdKgSetScheme(t_Handle h_FmHc, t_FmPcdKgSchemeParams *p_Scheme) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_Error err = E_OK; + t_FmPcdKgInterModuleSchemeRegs schemeRegs; + t_HcFrame *p_HcFrame; + t_DpaaFD fmFd; + uint32_t intFlags; + uint8_t physicalSchemeId, relativeSchemeId; + + p_HcFrame = (t_HcFrame *)XX_MallocSmart((sizeof(t_HcFrame) + p_FmHc->padTill16), 0, 16); + if (!p_HcFrame) + { + REPORT_ERROR(MINOR, E_NO_MEMORY, ("HC Frame obj")); + return NULL; + } + + if(!p_Scheme->modify) + { + /* check that schemeId is in range */ + if(p_Scheme->id.relativeSchemeId >= FmPcdKgGetNumOfPartitionSchemes(p_FmHc->h_FmPcd)) + { + REPORT_ERROR(MAJOR, E_NOT_IN_RANGE, ("Scheme is out of range")); + XX_FreeSmart(p_HcFrame); + return NULL; + } + + relativeSchemeId = p_Scheme->id.relativeSchemeId; + + if (FmPcdKgSchemeTryLock(p_FmHc->h_FmPcd, relativeSchemeId, FALSE)) + { + XX_FreeSmart(p_HcFrame); + return NULL; + } + + physicalSchemeId = FmPcdKgGetPhysicalSchemeId(p_FmHc->h_FmPcd, relativeSchemeId); + + memset(p_HcFrame, 0, sizeof(t_HcFrame)); + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_KG_SCM); + p_HcFrame->actionReg = FmPcdKgBuildReadSchemeActionReg(physicalSchemeId); + p_HcFrame->extraReg = 0xFFFFF800; + + BUILD_FD(SIZE_OF_HC_FRAME_READ_OR_CC_DYNAMIC); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + REPORT_ERROR(MINOR, err, NO_MSG); + XX_FreeSmart(p_HcFrame); + return NULL; + } + + /* check if this scheme is already used */ + if (FmPcdKgHwSchemeIsValid(p_HcFrame->hcSpecificData.schemeRegs.kgse_mode)) + { + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + REPORT_ERROR(MAJOR, E_ALREADY_EXISTS, ("Scheme is already used")); + XX_FreeSmart(p_HcFrame); + return NULL; + } + } + else + { + intFlags = FmPcdLock(p_FmHc->h_FmPcd); + physicalSchemeId = (uint8_t)(PTR_TO_UINT(p_Scheme->id.h_Scheme)-1); + relativeSchemeId = FmPcdKgGetRelativeSchemeId(p_FmHc->h_FmPcd, physicalSchemeId); + if( relativeSchemeId == FM_PCD_KG_NUM_OF_SCHEMES) + { + FmPcdUnlock(p_FmHc->h_FmPcd, intFlags); + REPORT_ERROR(MAJOR, E_NOT_IN_RANGE, NO_MSG); + XX_FreeSmart(p_HcFrame); + return NULL; + } + err = FmPcdKgSchemeTryLock(p_FmHc->h_FmPcd, relativeSchemeId, TRUE); + FmPcdUnlock(p_FmHc->h_FmPcd, intFlags); + if (err) + { + XX_FreeSmart(p_HcFrame); + return NULL; + } + } + + err = FmPcdKgBuildScheme(p_FmHc->h_FmPcd, p_Scheme, &schemeRegs); + if(err) + { + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + REPORT_ERROR(MAJOR, err, NO_MSG); + XX_FreeSmart(p_HcFrame); + return NULL; + } + + memset(p_HcFrame, 0, sizeof(t_HcFrame)); + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_KG_SCM); + p_HcFrame->actionReg = FmPcdKgBuildWriteSchemeActionReg(physicalSchemeId, p_Scheme->schemeCounter.update); + p_HcFrame->extraReg = 0xFFFFF800; + memcpy(&p_HcFrame->hcSpecificData.schemeRegs, &schemeRegs, sizeof(t_FmPcdKgInterModuleSchemeRegs)); + if(!p_Scheme->schemeCounter.update) + { + p_HcFrame->hcSpecificData.schemeRegs.kgse_dv0 = schemeRegs.kgse_dv0; + p_HcFrame->hcSpecificData.schemeRegs.kgse_dv1 = schemeRegs.kgse_dv1; + p_HcFrame->hcSpecificData.schemeRegs.kgse_ccbs = schemeRegs.kgse_ccbs; + p_HcFrame->hcSpecificData.schemeRegs.kgse_mv = schemeRegs.kgse_mv; + } + + BUILD_FD(sizeof(t_HcFrame)); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + REPORT_ERROR(MINOR, err, NO_MSG); + XX_FreeSmart(p_HcFrame); + return NULL; + } + + FmPcdKgValidateSchemeSw(p_FmHc->h_FmPcd, relativeSchemeId); + + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + + XX_FreeSmart(p_HcFrame); + + return (t_Handle)(UINT_TO_PTR(physicalSchemeId + 1)); +} + +t_Error FmHcPcdKgDeleteScheme(t_Handle h_FmHc, t_Handle h_Scheme) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_Error err = E_OK; + t_HcFrame *p_HcFrame; + t_DpaaFD fmFd; + uint8_t relativeSchemeId; + uint8_t physicalSchemeId = (uint8_t)(PTR_TO_UINT(h_Scheme)-1); + + relativeSchemeId = FmPcdKgGetRelativeSchemeId(p_FmHc->h_FmPcd, physicalSchemeId); + + if ((err = FmPcdKgSchemeTryLock(p_FmHc->h_FmPcd, relativeSchemeId, FALSE)) != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + + if(relativeSchemeId == FM_PCD_KG_NUM_OF_SCHEMES) + { + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + RETURN_ERROR(MAJOR, E_NOT_IN_RANGE, NO_MSG); + } + + err = FmPcdKgCheckInvalidateSchemeSw(p_FmHc->h_FmPcd, relativeSchemeId); + if (err) + { + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + p_HcFrame = (t_HcFrame *)XX_MallocSmart((sizeof(t_HcFrame) + p_FmHc->padTill16), 0, 16); + if (!p_HcFrame) + { + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("HC Frame obj")); + } + memset(p_HcFrame, 0, sizeof(t_HcFrame)); + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_KG_SCM); + p_HcFrame->actionReg = FmPcdKgBuildWriteSchemeActionReg(physicalSchemeId, TRUE); + p_HcFrame->extraReg = 0xFFFFF800; + memset(&p_HcFrame->hcSpecificData.schemeRegs, 0, sizeof(t_FmPcdKgInterModuleSchemeRegs)); + + BUILD_FD(sizeof(t_HcFrame)); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + FmPcdKgInvalidateSchemeSw(p_FmHc->h_FmPcd, relativeSchemeId); + + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + + XX_FreeSmart(p_HcFrame); + + return E_OK; +} + +t_Error FmHcPcdKgCcGetSetParams(t_Handle h_FmHc, t_Handle h_Scheme, uint32_t requiredAction) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_Error err = E_OK; + t_HcFrame *p_HcFrame; + t_DpaaFD fmFd; + uint8_t relativeSchemeId; + uint8_t physicalSchemeId = (uint8_t)(PTR_TO_UINT(h_Scheme)-1); + uint32_t tmpReg32 = 0; + + relativeSchemeId = FmPcdKgGetRelativeSchemeId(p_FmHc->h_FmPcd, physicalSchemeId); + if( relativeSchemeId == FM_PCD_KG_NUM_OF_SCHEMES) + RETURN_ERROR(MAJOR, E_NOT_IN_RANGE, NO_MSG); + + if (FmPcdKgSchemeTryLock(p_FmHc->h_FmPcd, relativeSchemeId, FALSE)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Lock of the scheme FAILED")); + + if(!FmPcdKgGetPointedOwners(p_FmHc->h_FmPcd, relativeSchemeId) || + !(FmPcdKgGetRequiredAction(p_FmHc->h_FmPcd, relativeSchemeId) & requiredAction)) + { + + if(requiredAction & UPDATE_NIA_ENQ_WITHOUT_DMA) + { + if((FmPcdKgGetNextEngine(p_FmHc->h_FmPcd, relativeSchemeId) == e_FM_PCD_DONE) && (FmPcdKgGetDoneAction(p_FmHc->h_FmPcd, relativeSchemeId) == e_FM_PCD_ENQ_FRAME)) + + { + p_HcFrame = (t_HcFrame *)XX_MallocSmart((sizeof(t_HcFrame) + p_FmHc->padTill16), 0, 16); + if (!p_HcFrame) + { + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("HC Frame obj")); + } + memset(p_HcFrame, 0, sizeof(t_HcFrame)); + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_KG_SCM); + p_HcFrame->actionReg = FmPcdKgBuildReadSchemeActionReg(physicalSchemeId); + p_HcFrame->extraReg = 0xFFFFF800; + BUILD_FD(SIZE_OF_HC_FRAME_READ_OR_CC_DYNAMIC); + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + /* check if this scheme is already used */ + if (!FmPcdKgHwSchemeIsValid(p_HcFrame->hcSpecificData.schemeRegs.kgse_mode)) + { + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MAJOR, E_ALREADY_EXISTS, ("Scheme is already used")); + } + tmpReg32 = p_HcFrame->hcSpecificData.schemeRegs.kgse_mode; + + ASSERT_COND(tmpReg32 & (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME)); + + p_HcFrame->hcSpecificData.schemeRegs.kgse_mode = tmpReg32 | NIA_BMI_AC_ENQ_FRAME_WITHOUT_DMA; + + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_KG_SCM); + p_HcFrame->actionReg = FmPcdKgBuildWriteSchemeActionReg(physicalSchemeId, FALSE); + p_HcFrame->extraReg = 0x80000000; + + BUILD_FD(sizeof(t_HcFrame)); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + XX_FreeSmart(p_HcFrame); + } + else if (FmPcdKgGetNextEngine(p_FmHc->h_FmPcd, relativeSchemeId) == e_FM_PCD_PLCR) + { + + if((FmPcdKgIsDirectPlcr(p_FmHc->h_FmPcd, relativeSchemeId) == FALSE) || + (FmPcdKgIsDistrOnPlcrProfile(p_FmHc->h_FmPcd, relativeSchemeId) == TRUE)) + { + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("In this situation PP can not be with distribution and has to be shared")); + } + err = FmPcdPlcrCcGetSetParams(p_FmHc->h_FmPcd, FmPcdKgGetRelativeProfileId(p_FmHc->h_FmPcd, relativeSchemeId), requiredAction); + if(err) + { + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + } + } + } + + FmPcdKgUpatePointedOwner(p_FmHc->h_FmPcd, relativeSchemeId,TRUE); + FmPcdKgUpdateRequiredAction(p_FmHc->h_FmPcd, relativeSchemeId,requiredAction); + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + + return E_OK; +} + +uint32_t FmHcPcdKgGetSchemeCounter(t_Handle h_FmHc, t_Handle h_Scheme) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_Error err = E_OK; + t_HcFrame *p_HcFrame; + t_DpaaFD fmFd; + uint32_t retVal; + uint8_t relativeSchemeId; + uint8_t physicalSchemeId = (uint8_t)(PTR_TO_UINT(h_Scheme)-1); + + relativeSchemeId = FmPcdKgGetRelativeSchemeId(p_FmHc->h_FmPcd, physicalSchemeId); + if( relativeSchemeId == FM_PCD_KG_NUM_OF_SCHEMES) + { + REPORT_ERROR(MAJOR, E_NOT_IN_RANGE, NO_MSG); + return 0; + } + + if ((err = FmPcdKgSchemeTryLock(p_FmHc->h_FmPcd, relativeSchemeId, FALSE)) != E_OK) + { + REPORT_ERROR(MAJOR, err, ("Scheme lock")); + return 0; + } + + /* first read scheme and check that it is valid */ + p_HcFrame = (t_HcFrame *)XX_MallocSmart((sizeof(t_HcFrame) + p_FmHc->padTill16), 0, 16); + if (!p_HcFrame) + { + REPORT_ERROR(MINOR, E_NO_MEMORY, ("HC Frame obj")); + return 0; + } + memset(p_HcFrame, 0, sizeof(t_HcFrame)); + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_KG_SCM); + p_HcFrame->actionReg = FmPcdKgBuildReadSchemeActionReg(physicalSchemeId); + p_HcFrame->extraReg = 0xFFFFF800; + + BUILD_FD(SIZE_OF_HC_FRAME_READ_OR_CC_DYNAMIC); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + REPORT_ERROR(MINOR, err, NO_MSG); + XX_FreeSmart(p_HcFrame); + return 0; + } + + if (!FmPcdKgHwSchemeIsValid(p_HcFrame->hcSpecificData.schemeRegs.kgse_mode)) + { + REPORT_ERROR(MAJOR, E_ALREADY_EXISTS, ("Scheme is invalid")); + XX_FreeSmart(p_HcFrame); + return 0; + } + + retVal = p_HcFrame->hcSpecificData.schemeRegs.kgse_spc; + + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + + XX_FreeSmart(p_HcFrame); + + return retVal; +} + +t_Error FmHcPcdKgSetSchemeCounter(t_Handle h_FmHc, t_Handle h_Scheme, uint32_t value) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_Error err = E_OK; + t_HcFrame *p_HcFrame; + t_DpaaFD fmFd; + uint8_t relativeSchemeId, physicalSchemeId = (uint8_t)(PTR_TO_UINT(h_Scheme)-1); + + relativeSchemeId = FmPcdKgGetRelativeSchemeId(p_FmHc->h_FmPcd, physicalSchemeId); + if( relativeSchemeId == FM_PCD_KG_NUM_OF_SCHEMES) + RETURN_ERROR(MAJOR, E_NOT_IN_RANGE, NO_MSG); + + if ((err = FmPcdKgSchemeTryLock(p_FmHc->h_FmPcd, relativeSchemeId, FALSE)) != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + + /* first read scheme and check that it is valid */ + p_HcFrame = (t_HcFrame *)XX_MallocSmart((sizeof(t_HcFrame) + p_FmHc->padTill16), 0, 16); + if (!p_HcFrame) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("HC Frame obj")); + memset(p_HcFrame, 0, sizeof(t_HcFrame)); + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_KG_SCM); + p_HcFrame->actionReg = FmPcdKgBuildReadSchemeActionReg(physicalSchemeId); + p_HcFrame->extraReg = 0xFFFFF800; + + BUILD_FD(SIZE_OF_HC_FRAME_READ_OR_CC_DYNAMIC); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + /* check that scheme is valid */ + if (!FmPcdKgHwSchemeIsValid(p_HcFrame->hcSpecificData.schemeRegs.kgse_mode)) + { + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MAJOR, E_ALREADY_EXISTS, ("Scheme is invalid")); + } + + /* Write scheme back, with modified counter */ + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_KG_SCM); + p_HcFrame->actionReg = FmPcdKgBuildWriteSchemeActionReg(physicalSchemeId, TRUE); + p_HcFrame->extraReg = 0xFFFFF800; + /* write counter */ + p_HcFrame->hcSpecificData.schemeRegs.kgse_spc = value; + + BUILD_FD(sizeof(t_HcFrame)); + + err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence); + + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + XX_FreeSmart(p_HcFrame); + + return err; +} + +t_Error FmHcPcdKgSetClsPlan(t_Handle h_FmHc, t_FmPcdKgInterModuleClsPlanSet *p_Set) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_HcFrame *p_HcFrame; + t_DpaaFD fmFd; + uint32_t i; + t_Error err = E_OK; + + ASSERT_COND(p_FmHc); + + p_HcFrame = (t_HcFrame *)XX_MallocSmart((sizeof(t_HcFrame) + p_FmHc->padTill16), 0, 16); + if (!p_HcFrame) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("HC Frame obj")); + + for(i=p_Set->baseEntry;ibaseEntry+p_Set->numOfClsPlanEntries;i+=8) + { + memset(p_HcFrame, 0, sizeof(t_HcFrame)); + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_KG_SCM); + p_HcFrame->actionReg = FmPcdKgBuildWriteClsPlanBlockActionReg((uint8_t)(i / CLS_PLAN_NUM_PER_GRP)); + p_HcFrame->extraReg = 0xFFFFF800; + memcpy((void*)&p_HcFrame->hcSpecificData.clsPlanEntries, (void *)&p_Set->vectors[i-p_Set->baseEntry], CLS_PLAN_NUM_PER_GRP*sizeof(uint32_t)); + + BUILD_FD(sizeof(t_HcFrame)); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MINOR, err, NO_MSG); + } + } + XX_FreeSmart(p_HcFrame); + + return err; +} + +t_Error FmHcPcdKgDeleteClsPlan(t_Handle h_FmHc, uint8_t grpId) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_FmPcdKgInterModuleClsPlanSet *p_ClsPlanSet; + + /* clear clsPlan entries in memory */ + p_ClsPlanSet = (t_FmPcdKgInterModuleClsPlanSet *)XX_Malloc(sizeof(t_FmPcdKgInterModuleClsPlanSet)); + if (!p_ClsPlanSet) + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("memory allocation failed for p_ClsPlanSetd")); + memset(p_ClsPlanSet, 0, sizeof(t_FmPcdKgInterModuleClsPlanSet)); + + p_ClsPlanSet->baseEntry = FmPcdKgGetClsPlanGrpBase(p_FmHc->h_FmPcd, grpId); + p_ClsPlanSet->numOfClsPlanEntries = FmPcdKgGetClsPlanGrpSize(p_FmHc->h_FmPcd, grpId); + ASSERT_COND(p_ClsPlanSet->numOfClsPlanEntries <= FM_PCD_MAX_NUM_OF_CLS_PLANS); + + if (FmHcPcdKgSetClsPlan(p_FmHc, p_ClsPlanSet) != E_OK) + RETURN_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); + XX_Free(p_ClsPlanSet); + + FmPcdKgDestroyClsPlanGrp(p_FmHc->h_FmPcd, grpId); + + return E_OK; +} + +t_Error FmHcPcdCcCapwapTimeoutReassm(t_Handle h_FmHc, t_FmPcdCcCapwapReassmTimeoutParams *p_CcCapwapReassmTimeoutParams ) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_HcFrame *p_HcFrame; + uint32_t intFlags; + t_DpaaFD fmFd; + t_Error err; + + SANITY_CHECK_RETURN_VALUE(h_FmHc, E_INVALID_HANDLE,0); + + intFlags = FmPcdLock(p_FmHc->h_FmPcd); + p_HcFrame = (t_HcFrame *)XX_MallocSmart((sizeof(t_HcFrame) + p_FmHc->padTill16), 0, 16); + if (!p_HcFrame) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("HC Frame obj")); + memset(p_HcFrame, 0, sizeof(t_HcFrame)); + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_CC_CAPWAP_REASSM_TIMEOUT); + memcpy(&p_HcFrame->hcSpecificData.ccCapwapReassmTimeout, p_CcCapwapReassmTimeoutParams, sizeof(t_FmPcdCcCapwapReassmTimeoutParams)); + BUILD_FD(sizeof(t_HcFrame)); + + err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence); + + XX_FreeSmart(p_HcFrame); + FmPcdUnlock(p_FmHc->h_FmPcd, intFlags); + return err; +} + + +t_Error FmHcPcdPlcrCcGetSetParams(t_Handle h_FmHc,uint16_t absoluteProfileId, uint32_t requiredAction) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_HcFrame *p_HcFrame; + t_DpaaFD fmFd; + t_Error err; + uint32_t tmpReg32 = 0; + uint32_t requiredActionTmp, pointedOwnersTmp; + + SANITY_CHECK_RETURN_VALUE(h_FmHc, E_INVALID_HANDLE,0); + + if (absoluteProfileId >= FM_PCD_PLCR_NUM_ENTRIES) + RETURN_ERROR(MAJOR, E_INVALID_VALUE,("Policer profile out of range")); + + if (FmPcdPlcrProfileTryLock(p_FmHc->h_FmPcd, absoluteProfileId, FALSE)) + return ERROR_CODE(E_BUSY); + + + requiredActionTmp = FmPcdPlcrGetRequiredAction(p_FmHc->h_FmPcd, absoluteProfileId); + pointedOwnersTmp = FmPcdPlcrGetPointedOwners(p_FmHc->h_FmPcd, absoluteProfileId); + + if(!pointedOwnersTmp || !(requiredActionTmp & requiredAction)) + { + + if(requiredAction & UPDATE_NIA_ENQ_WITHOUT_DMA) + { + + p_HcFrame = (t_HcFrame *)XX_MallocSmart((sizeof(t_HcFrame) + p_FmHc->padTill16), 0, 16); + if (!p_HcFrame) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("HC Frame obj")); + /* first read scheme and check that it is valid */ + memset(p_HcFrame, 0, sizeof(t_HcFrame)); + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_PLCR_PRFL); + p_HcFrame->actionReg = FmPcdPlcrBuildReadPlcrActionReg(absoluteProfileId); + p_HcFrame->extraReg = 0x00008000; + + BUILD_FD(SIZE_OF_HC_FRAME_READ_OR_CC_DYNAMIC); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, absoluteProfileId); + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + /* check that profile is valid */ + if (!FmPcdPlcrHwProfileIsValid(p_HcFrame->hcSpecificData.profileRegs.fmpl_pemode)) + { + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, absoluteProfileId); + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MAJOR, E_ALREADY_EXISTS, ("Policer is already used")); + } + + tmpReg32 = p_HcFrame->hcSpecificData.profileRegs.fmpl_pegnia; + if(!(tmpReg32 & (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME))) + { + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Next engine of this policer profile has to be assigned to FM_PCD_DONE")); + } + tmpReg32 |= NIA_BMI_AC_ENQ_FRAME_WITHOUT_DMA; + + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_PLCR_PRFL); + p_HcFrame->actionReg = FmPcdPlcrBuildWritePlcrActionReg(absoluteProfileId); + p_HcFrame->actionReg |= FmPcdPlcrBuildNiaProfileReg(TRUE, FALSE, FALSE); + p_HcFrame->extraReg = 0x00008000; + p_HcFrame->hcSpecificData.singleRegForWrite = tmpReg32; + + BUILD_FD(SIZE_OF_HC_FRAME_PROFILE_CNT); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, absoluteProfileId); + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + tmpReg32 = p_HcFrame->hcSpecificData.profileRegs.fmpl_peynia; + if(!(tmpReg32 & (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME))) + { + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Next engine of this policer profile has to be assigned to FM_PCD_DONE")); + } + tmpReg32 |= NIA_BMI_AC_ENQ_FRAME_WITHOUT_DMA; + + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_PLCR_PRFL); + p_HcFrame->actionReg = FmPcdPlcrBuildWritePlcrActionReg(absoluteProfileId); + p_HcFrame->actionReg |= FmPcdPlcrBuildNiaProfileReg(FALSE, TRUE, FALSE); + p_HcFrame->extraReg = 0x00008000; + p_HcFrame->hcSpecificData.singleRegForWrite = tmpReg32; + + BUILD_FD(SIZE_OF_HC_FRAME_PROFILE_CNT); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, absoluteProfileId); + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + tmpReg32 = p_HcFrame->hcSpecificData.profileRegs.fmpl_pernia; + if(!(tmpReg32 & (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME))) + { + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Next engine of this policer profile has to be assigned to FM_PCD_DONE")); + } + tmpReg32 |= NIA_BMI_AC_ENQ_FRAME_WITHOUT_DMA; + + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_PLCR_PRFL); + p_HcFrame->actionReg = FmPcdPlcrBuildWritePlcrActionReg(absoluteProfileId); + p_HcFrame->actionReg |= FmPcdPlcrBuildNiaProfileReg(FALSE, FALSE, TRUE); + p_HcFrame->extraReg = 0x00008000; + p_HcFrame->hcSpecificData.singleRegForWrite = tmpReg32; + + BUILD_FD(SIZE_OF_HC_FRAME_PROFILE_CNT); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, absoluteProfileId); + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MINOR, err, NO_MSG); + } + XX_FreeSmart(p_HcFrame); + } + } + + FmPcdPlcrUpatePointedOwner(p_FmHc->h_FmPcd, absoluteProfileId, TRUE); + FmPcdPlcrUpdateRequiredAction(p_FmHc->h_FmPcd, absoluteProfileId, requiredAction); + + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, absoluteProfileId); + + return E_OK; +} + +t_Handle FmHcPcdPlcrSetProfile(t_Handle h_FmHc,t_FmPcdPlcrProfileParams *p_Profile) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_FmPcdPlcrInterModuleProfileRegs profileRegs; + t_Error err = E_OK; + uint32_t intFlags; + uint16_t profileIndx; + t_HcFrame *p_HcFrame; + t_DpaaFD fmFd; + + if (p_Profile->modify) + { + profileIndx = (uint16_t)(PTR_TO_UINT(p_Profile->id.h_Profile)-1); + if (FmPcdPlcrProfileTryLock(p_FmHc->h_FmPcd, profileIndx, FALSE)) + return NULL; + } + else + { + intFlags = FmPcdLock(p_FmHc->h_FmPcd); + err = FmPcdPlcrGetAbsoluteProfileId(p_FmHc->h_FmPcd, + p_Profile->id.newParams.profileType, + p_Profile->id.newParams.h_FmPort, + p_Profile->id.newParams.relativeProfileId, + &profileIndx); + if (err) + { + REPORT_ERROR(MAJOR, err, NO_MSG); + return NULL; + } + err = FmPcdPlcrProfileTryLock(p_FmHc->h_FmPcd, profileIndx, TRUE); + FmPcdUnlock(p_FmHc->h_FmPcd, intFlags); + if (err) + return NULL; + } + + p_HcFrame = (t_HcFrame *)XX_MallocSmart((sizeof(t_HcFrame) + p_FmHc->padTill16), 0, 16); + if (!p_HcFrame) + { + REPORT_ERROR(MINOR, E_NO_MEMORY, ("HC Frame obj")); + return NULL; + } + + if(!p_Profile->modify) + { + memset(p_HcFrame, 0, sizeof(t_HcFrame)); + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_PLCR_PRFL); + p_HcFrame->actionReg = FmPcdPlcrBuildReadPlcrActionReg(profileIndx); + p_HcFrame->extraReg = 0x00008000; + + BUILD_FD(SIZE_OF_HC_FRAME_READ_OR_CC_DYNAMIC); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, profileIndx); + REPORT_ERROR(MINOR, err, NO_MSG); + XX_FreeSmart(p_HcFrame); + return NULL; + } + + /* check if this scheme is already used */ + if (FmPcdPlcrHwProfileIsValid(p_HcFrame->hcSpecificData.profileRegs.fmpl_pemode)) + { + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, profileIndx); + REPORT_ERROR(MAJOR, E_ALREADY_EXISTS, ("Policer is already used")); + XX_FreeSmart(p_HcFrame); + return NULL; + } + } + + memset(&profileRegs, 0, sizeof(t_FmPcdPlcrInterModuleProfileRegs)); + err = FmPcdPlcrBuildProfile(p_FmHc->h_FmPcd, p_Profile, &profileRegs); + if(err) + { + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, profileIndx); + REPORT_ERROR(MAJOR, err, NO_MSG); + XX_FreeSmart(p_HcFrame); + return NULL; + } + + memset(p_HcFrame, 0, sizeof(t_HcFrame)); + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_PLCR_PRFL); + p_HcFrame->actionReg = FmPcdPlcrBuildWritePlcrActionRegs(profileIndx); + p_HcFrame->extraReg = 0x00008000; + memcpy(&p_HcFrame->hcSpecificData.profileRegs, &profileRegs, sizeof(t_FmPcdPlcrInterModuleProfileRegs)); + + BUILD_FD(sizeof(t_HcFrame)); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, profileIndx); + REPORT_ERROR(MINOR, err, NO_MSG); + XX_FreeSmart(p_HcFrame); + return NULL; + } + + FmPcdPlcrValidateProfileSw(p_FmHc->h_FmPcd, profileIndx); + + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, profileIndx); + + XX_FreeSmart(p_HcFrame); + + return UINT_TO_PTR((uint64_t)profileIndx+1); +} + +t_Error FmHcPcdPlcrDeleteProfile(t_Handle h_FmHc, t_Handle h_Profile) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + uint16_t absoluteProfileId = (uint16_t)(PTR_TO_UINT(h_Profile)-1); + t_Error err = E_OK; + t_HcFrame *p_HcFrame; + t_DpaaFD fmFd; + + if (FmPcdPlcrProfileTryLock(p_FmHc->h_FmPcd, absoluteProfileId, FALSE)) + return ERROR_CODE(E_BUSY); + + FmPcdPlcrInvalidateProfileSw(p_FmHc->h_FmPcd, absoluteProfileId); + + p_HcFrame = (t_HcFrame *)XX_MallocSmart((sizeof(t_HcFrame) + p_FmHc->padTill16), 0, 16); + if (!p_HcFrame) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("HC Frame obj")); + memset(p_HcFrame, 0, sizeof(t_HcFrame)); + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_PLCR_PRFL); + p_HcFrame->actionReg = FmPcdPlcrBuildWritePlcrActionReg(absoluteProfileId); + p_HcFrame->actionReg |= 0x00008000; + p_HcFrame->extraReg = 0x00008000; + memset(&p_HcFrame->hcSpecificData.profileRegs, 0, sizeof(t_FmPcdPlcrInterModuleProfileRegs)); + + BUILD_FD(sizeof(t_HcFrame)); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, absoluteProfileId); + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, absoluteProfileId); + + XX_FreeSmart(p_HcFrame); + + return E_OK; +} + +t_Error FmHcPcdPlcrSetProfileCounter(t_Handle h_FmHc, t_Handle h_Profile, e_FmPcdPlcrProfileCounters counter, uint32_t value) +{ + + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + uint16_t absoluteProfileId = (uint16_t)(PTR_TO_UINT(h_Profile)-1); + t_Error err = E_OK; + t_HcFrame *p_HcFrame; + t_DpaaFD fmFd; + + if (FmPcdPlcrProfileTryLock(p_FmHc->h_FmPcd, absoluteProfileId, FALSE)) + return ERROR_CODE(E_BUSY); + + /* first read scheme and check that it is valid */ + p_HcFrame = (t_HcFrame *)XX_MallocSmart((sizeof(t_HcFrame) + p_FmHc->padTill16), 0, 16); + if (!p_HcFrame) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("HC Frame obj")); + memset(p_HcFrame, 0, sizeof(t_HcFrame)); + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_PLCR_PRFL); + p_HcFrame->actionReg = FmPcdPlcrBuildReadPlcrActionReg(absoluteProfileId); + p_HcFrame->extraReg = 0x00008000; + + BUILD_FD(SIZE_OF_HC_FRAME_READ_OR_CC_DYNAMIC); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, absoluteProfileId); + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + /* check that profile is valid */ + if (!FmPcdPlcrHwProfileIsValid(p_HcFrame->hcSpecificData.profileRegs.fmpl_pemode)) + { + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, absoluteProfileId); + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MAJOR, E_ALREADY_EXISTS, ("Policer is already used")); + } + + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_PLCR_PRFL); + p_HcFrame->actionReg = FmPcdPlcrBuildWritePlcrActionReg(absoluteProfileId); + p_HcFrame->actionReg |= FmPcdPlcrBuildCounterProfileReg(counter); + p_HcFrame->extraReg = 0x00008000; + p_HcFrame->hcSpecificData.singleRegForWrite = value; + + BUILD_FD(SIZE_OF_HC_FRAME_PROFILE_CNT); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, absoluteProfileId); + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, absoluteProfileId); + + XX_FreeSmart(p_HcFrame); + + return E_OK; +} + +uint32_t FmHcPcdPlcrGetProfileCounter(t_Handle h_FmHc, t_Handle h_Profile, e_FmPcdPlcrProfileCounters counter) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + uint16_t absoluteProfileId = (uint16_t)(PTR_TO_UINT(h_Profile)-1); + t_Error err = E_OK; + t_HcFrame *p_HcFrame; + t_DpaaFD fmFd; + uint32_t retVal = 0; + + SANITY_CHECK_RETURN_VALUE(h_FmHc, E_INVALID_HANDLE,0); + + if (FmPcdPlcrProfileTryLock(p_FmHc->h_FmPcd, absoluteProfileId, FALSE)) + return 0; + + /* first read scheme and check that it is valid */ + p_HcFrame = (t_HcFrame *)XX_MallocSmart((sizeof(t_HcFrame) + p_FmHc->padTill16), 0, 16); + if (!p_HcFrame) + { + REPORT_ERROR(MINOR, E_NO_MEMORY, ("HC Frame obj")); + return 0; + } + memset(p_HcFrame, 0, sizeof(t_HcFrame)); + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_PLCR_PRFL); + p_HcFrame->actionReg = FmPcdPlcrBuildReadPlcrActionReg(absoluteProfileId); + p_HcFrame->extraReg = 0x00008000; + + BUILD_FD(SIZE_OF_HC_FRAME_READ_OR_CC_DYNAMIC); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, absoluteProfileId); + REPORT_ERROR(MINOR, err, NO_MSG); + XX_FreeSmart(p_HcFrame); + return 0; + } + + /* check that profile is valid */ + if (!FmPcdPlcrHwProfileIsValid(p_HcFrame->hcSpecificData.profileRegs.fmpl_pemode)) + { + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, absoluteProfileId); + XX_FreeSmart(p_HcFrame); + REPORT_ERROR(MAJOR, E_ALREADY_EXISTS, ("invalid Policer profile")); + return 0; + } + + switch (counter) + { + case e_FM_PCD_PLCR_PROFILE_GREEN_PACKET_TOTAL_COUNTER: + retVal = p_HcFrame->hcSpecificData.profileRegs.fmpl_pegpc; + break; + case e_FM_PCD_PLCR_PROFILE_YELLOW_PACKET_TOTAL_COUNTER: + retVal = p_HcFrame->hcSpecificData.profileRegs.fmpl_peypc; + break; + case e_FM_PCD_PLCR_PROFILE_RED_PACKET_TOTAL_COUNTER: + retVal = p_HcFrame->hcSpecificData.profileRegs.fmpl_perpc; + break; + case e_FM_PCD_PLCR_PROFILE_RECOLOURED_YELLOW_PACKET_TOTAL_COUNTER: + retVal = p_HcFrame->hcSpecificData.profileRegs.fmpl_perypc; + break; + case e_FM_PCD_PLCR_PROFILE_RECOLOURED_RED_PACKET_TOTAL_COUNTER: + retVal = p_HcFrame->hcSpecificData.profileRegs.fmpl_perrpc; + break; + default: + REPORT_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + } + + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, absoluteProfileId); + + XX_FreeSmart(p_HcFrame); + + return retVal; +} + +t_Error FmHcPcdCcModifyTreeNextEngine(t_Handle h_FmHc, t_Handle h_CcTree, uint8_t grpId, uint8_t index, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_Error err = E_OK; + uint32_t intFlags; + t_List h_OldPointersLst, h_NewPointersLst; + t_Handle h_Params; + + intFlags = FmPcdLock(p_FmHc->h_FmPcd); + err = FmPcdCcTreeTryLock(h_CcTree); + FmPcdUnlock(p_FmHc->h_FmPcd, intFlags); + if (err) + return err; + + INIT_LIST(&h_OldPointersLst); + INIT_LIST(&h_NewPointersLst); + + err = FmPcdCcModifyNextEngineParamTree(p_FmHc->h_FmPcd, h_CcTree, grpId, index, p_FmPcdCcNextEngineParams, + &h_OldPointersLst, &h_NewPointersLst, &h_Params); + if(err) + { + FmPcdCcTreeReleaseLock(h_CcTree); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + err = HcDynamicChange(p_FmHc, &h_OldPointersLst, &h_NewPointersLst, &h_Params); + + FmPcdCcTreeReleaseLock(h_CcTree); + + return err; +} + + +t_Error FmHcPcdCcModifyNodeMissNextEngine(t_Handle h_FmHc, t_Handle h_CcNode, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_Handle h_Params; + t_List h_OldPointersLst, h_NewPointersLst; + t_Error err = E_OK; + t_List h_List; + uint32_t intFlags; + + INIT_LIST(&h_List); + + intFlags = FmPcdLock(p_FmHc->h_FmPcd); + + if ((err = FmPcdCcNodeTreeTryLock(p_FmHc->h_FmPcd, h_CcNode, &h_List)) != E_OK) + { + FmPcdUnlock(p_FmHc->h_FmPcd, intFlags); + return err; + } + + FmPcdUnlock(p_FmHc->h_FmPcd, intFlags); + + INIT_LIST(&h_OldPointersLst); + INIT_LIST(&h_NewPointersLst); + + err = FmPcdCcModifyMissNextEngineParamNode(p_FmHc->h_FmPcd, h_CcNode, p_FmPcdCcNextEngineParams, &h_OldPointersLst, &h_NewPointersLst, &h_Params); + if(err) + { + FmPcdCcNodeTreeReleaseLock(&h_List); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + err = HcDynamicChange(p_FmHc, &h_OldPointersLst, &h_NewPointersLst, &h_Params); + + FmPcdCcNodeTreeReleaseLock(&h_List); + + + return E_OK; +} + +t_Error FmHcPcdCcRemoveKey(t_Handle h_FmHc, t_Handle h_CcNode, uint8_t keyIndex) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_Handle h_Params; + t_List h_OldPointersLst, h_NewPointersLst; + t_Error err = E_OK; + t_List h_List; + uint32_t intFlags; + + INIT_LIST(&h_List); + + intFlags = FmPcdLock(p_FmHc->h_FmPcd); + + if ((err = FmPcdCcNodeTreeTryLock(p_FmHc->h_FmPcd, h_CcNode, &h_List)) != E_OK) + { + FmPcdUnlock(p_FmHc->h_FmPcd, intFlags); + return err; + } + + FmPcdUnlock(p_FmHc->h_FmPcd, intFlags); + + INIT_LIST(&h_OldPointersLst); + INIT_LIST(&h_NewPointersLst); + + + err = FmPcdCcRemoveKey(p_FmHc->h_FmPcd,h_CcNode,keyIndex, &h_OldPointersLst, &h_NewPointersLst, &h_Params); + if(err) + { + FmPcdCcNodeTreeReleaseLock(&h_List); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + err = HcDynamicChange(p_FmHc, &h_OldPointersLst, &h_NewPointersLst, &h_Params); + + FmPcdCcNodeTreeReleaseLock(&h_List); + + return err; + +} + +t_Error FmHcPcdCcAddKey(t_Handle h_FmHc, t_Handle h_CcNode, uint8_t keyIndex, uint8_t keySize, t_FmPcdCcKeyParams *p_KeyParams) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_Handle h_Params; + t_List h_OldPointersLst, h_NewPointersLst; + t_Error err = E_OK; + t_List h_List; + uint32_t intFlags; + + INIT_LIST(&h_List); + + intFlags = FmPcdLock(p_FmHc->h_FmPcd); + + if ((err = FmPcdCcNodeTreeTryLock(p_FmHc->h_FmPcd, h_CcNode, &h_List)) != E_OK) + { + FmPcdUnlock(p_FmHc->h_FmPcd, intFlags); + return err; + } + + FmPcdUnlock(p_FmHc->h_FmPcd, intFlags); + + INIT_LIST(&h_OldPointersLst); + INIT_LIST(&h_NewPointersLst); + + + err = FmPcdCcAddKey(p_FmHc->h_FmPcd,h_CcNode,keyIndex,keySize, p_KeyParams, &h_OldPointersLst,&h_NewPointersLst, &h_Params); + if(err) + { + FmPcdCcNodeTreeReleaseLock(&h_List); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + err = HcDynamicChange(p_FmHc, &h_OldPointersLst, &h_NewPointersLst, &h_Params); + + FmPcdCcNodeTreeReleaseLock(&h_List); + + return err; +} + + +t_Error FmHcPcdCcModifyKey(t_Handle h_FmHc, t_Handle h_CcNode, uint8_t keyIndex, uint8_t keySize, uint8_t *p_Key, uint8_t *p_Mask) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_List h_OldPointersLst, h_NewPointersLst; + t_Error err = E_OK; + t_List h_List; + uint32_t intFlags; + t_Handle h_Params; + + UNUSED(keySize); + + INIT_LIST(&h_List); + + intFlags = FmPcdLock(p_FmHc->h_FmPcd); + + if ((err = FmPcdCcNodeTreeTryLock(p_FmHc->h_FmPcd, h_CcNode, &h_List)) != E_OK) + { + FmPcdUnlock(p_FmHc->h_FmPcd, intFlags); + return err; + } + + FmPcdUnlock(p_FmHc->h_FmPcd, intFlags); + + INIT_LIST(&h_OldPointersLst); + INIT_LIST(&h_NewPointersLst); + + err = FmPcdCcModifyKey(p_FmHc->h_FmPcd, h_CcNode, keyIndex, keySize, p_Key, p_Mask, &h_OldPointersLst,&h_NewPointersLst, &h_Params); + if(err) + { + FmPcdCcNodeTreeReleaseLock(&h_List); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + err = HcDynamicChange(p_FmHc, &h_OldPointersLst, &h_NewPointersLst, &h_Params); + + FmPcdCcNodeTreeReleaseLock(&h_List); + + return err; +} + +t_Error FmHcPcdCcModifyNodeNextEngine(t_Handle h_FmHc, t_Handle h_CcNode, uint8_t keyIndex, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_Error err = E_OK; + t_List h_OldPointersLst, h_NewPointersLst; + t_List h_List; + uint32_t intFlags; + t_Handle h_Params; + + INIT_LIST(&h_List); + + intFlags = FmPcdLock(p_FmHc->h_FmPcd); + + if ((err = FmPcdCcNodeTreeTryLock(p_FmHc->h_FmPcd, h_CcNode, &h_List)) != E_OK) + { + FmPcdUnlock(p_FmHc->h_FmPcd, intFlags); + return err; + } + + FmPcdUnlock(p_FmHc->h_FmPcd, intFlags); + + INIT_LIST(&h_OldPointersLst); + INIT_LIST(&h_NewPointersLst); + + err = FmPcdCcModiyNextEngineParamNode(p_FmHc->h_FmPcd, h_CcNode, keyIndex, p_FmPcdCcNextEngineParams, &h_OldPointersLst, &h_NewPointersLst, &h_Params); + if(err) + { + FmPcdCcNodeTreeReleaseLock(&h_List); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + err = HcDynamicChange(p_FmHc, &h_OldPointersLst, &h_NewPointersLst, &h_Params); + FmPcdCcNodeTreeReleaseLock(&h_List); + return err; +} + + +t_Error FmHcPcdCcModifyKeyAndNextEngine(t_Handle h_FmHc, t_Handle h_CcNode, uint8_t keyIndex, uint8_t keySize, t_FmPcdCcKeyParams *p_KeyParams) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_List h_OldPointersLst, h_NewPointersLst; + t_Error err = E_OK; + t_List h_List; + uint32_t intFlags; + t_Handle h_Params; + + INIT_LIST(&h_OldPointersLst); + INIT_LIST(&h_NewPointersLst); + INIT_LIST(&h_List); + + intFlags = FmPcdLock(p_FmHc->h_FmPcd); + + if ((err = FmPcdCcNodeTreeTryLock(p_FmHc->h_FmPcd, h_CcNode, &h_List)) != E_OK) + { + FmPcdUnlock(p_FmHc->h_FmPcd, intFlags); + return err; + } + + FmPcdUnlock(p_FmHc->h_FmPcd, intFlags); + + + err = FmPcdCcModifyKeyAndNextEngine(p_FmHc->h_FmPcd,h_CcNode,keyIndex,keySize, p_KeyParams, &h_OldPointersLst,&h_NewPointersLst, &h_Params); + if(err) + { + FmPcdCcNodeTreeReleaseLock(&h_List); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + err = HcDynamicChange(p_FmHc, &h_OldPointersLst, &h_NewPointersLst, &h_Params); + + FmPcdCcNodeTreeReleaseLock(&h_List); + + + return err; +} + + +t_Error FmHcKgWriteSp(t_Handle h_FmHc, uint8_t hardwarePortId, uint32_t spReg, bool add) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_HcFrame *p_HcFrame; + t_DpaaFD fmFd; + t_Error err = E_OK; + + ASSERT_COND(p_FmHc); + + p_HcFrame = (t_HcFrame *)XX_MallocSmart((sizeof(t_HcFrame) + p_FmHc->padTill16), 0, 16); + if (!p_HcFrame) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("HC Frame obj")); + memset(p_HcFrame, 0, sizeof(t_HcFrame)); + /* first read SP register */ + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_KG_SCM); + p_HcFrame->actionReg = FmPcdKgBuildReadPortSchemeBindActionReg(hardwarePortId); + p_HcFrame->extraReg = 0xFFFFF800; + + BUILD_FD(SIZE_OF_HC_FRAME_PORT_REGS); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + /* spReg is the first reg, so we can use it both for read and for write */ + if(add) + p_HcFrame->hcSpecificData.portRegsForRead.spReg |= spReg; + else + p_HcFrame->hcSpecificData.portRegsForRead.spReg &= ~spReg; + + p_HcFrame->actionReg = FmPcdKgBuildWritePortSchemeBindActionReg(hardwarePortId); + + BUILD_FD(sizeof(t_HcFrame)); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + XX_FreeSmart(p_HcFrame); + + return E_OK; +} + +t_Error FmHcKgWriteCpp(t_Handle h_FmHc, uint8_t hardwarePortId, uint32_t cppReg) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_HcFrame *p_HcFrame; + t_DpaaFD fmFd; + t_Error err = E_OK; + + ASSERT_COND(p_FmHc); + + p_HcFrame = (t_HcFrame *)XX_MallocSmart((sizeof(t_HcFrame) + p_FmHc->padTill16), 0, 16); + if (!p_HcFrame) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("HC Frame obj")); + memset(p_HcFrame, 0, sizeof(t_HcFrame)); + /* first read SP register */ + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_KG_SCM); + p_HcFrame->actionReg = FmPcdKgBuildWritePortClsPlanBindActionReg(hardwarePortId); + p_HcFrame->extraReg = 0xFFFFF800; + p_HcFrame->hcSpecificData.singleRegForWrite = cppReg; + + BUILD_FD(sizeof(t_HcFrame)); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + XX_FreeSmart(p_HcFrame); + + return E_OK; +} + --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/Makefile +++ linux-3.13.0/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/Makefile @@ -0,0 +1,14 @@ +# +# Makefile for the Freescale Ethernet controllers +# +EXTRA_CFLAGS += -DVERSION=\"\" +# +#Include netcomm SW specific definitions +include $(srctree)/drivers/net/dpa/NetCommSw/ncsw_config.mk +NCSW_FM_INC = $(srctree)/drivers/net/dpa/NetCommSw/Peripherals/FM/inc + +EXTRA_CFLAGS += -I$(NCSW_FM_INC) + +obj-y += fsl-ncsw-MAC.o + +fsl-ncsw-MAC-objs := dtsec.o dtsec_mii_acc.o fm_mac.o tgec.o tgec_mii_acc.o --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/dtsec.c +++ linux-3.13.0/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/dtsec.c @@ -0,0 +1,1943 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 dtsec.c + + @Description FM dTSEC ... +*//***************************************************************************/ + +#include "std_ext.h" +#include "error_ext.h" +#include "string_ext.h" +#include "xx_ext.h" +#include "endian_ext.h" +#include "crc_mac_addr_ext.h" +#include "debug_ext.h" + +#include "fm_common.h" +#include "dtsec.h" + + +/*****************************************************************************/ +/* Internal routines */ +/*****************************************************************************/ + +static t_Error CheckInitParameters(t_Dtsec *p_Dtsec) +{ + if(ENET_SPEED_FROM_MODE(p_Dtsec->enetMode) >= e_ENET_SPEED_10000) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Ethernet 1G MAC driver only supports 1G or lower speeds")); + if(p_Dtsec->macId >= FM_MAX_NUM_OF_1G_MACS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("macId can not be greater than the number of 1G MACs")); + if(p_Dtsec->addr == 0) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Ethernet MAC Must have a valid MAC Address")); + if(((p_Dtsec->enetMode == e_ENET_MODE_SGMII_1000) || + (p_Dtsec->enetMode == e_ENET_MODE_RGMII_1000) || + (p_Dtsec->enetMode == e_ENET_MODE_QSGMII_1000)) && + p_Dtsec->p_DtsecDriverParam->halfDuplex) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Ethernet MAC 1G can't work in half duplex")); + if(p_Dtsec->p_DtsecDriverParam->halfDuplex && (p_Dtsec->p_DtsecDriverParam)->loopback) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("LoopBack is not supported in halfDuplex mode")); +#ifdef FM_NO_RX_PREAM_ERRATA_DTSECx1 + if(p_Dtsec->p_DtsecDriverParam->preambleRxEn) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("preambleRxEn")); +#endif /* FM_NO_RX_PREAM_ERRATA_DTSECx1 */ + if(((p_Dtsec->p_DtsecDriverParam)->preambleTxEn || (p_Dtsec->p_DtsecDriverParam)->preambleRxEn) &&( (p_Dtsec->p_DtsecDriverParam)->preambleLength != 0x7)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Preamble length should be 0x7 bytes")); + if((p_Dtsec->p_DtsecDriverParam)->fifoTxWatermarkH<((p_Dtsec->p_DtsecDriverParam)->fifoTxThr+8)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("fifoTxWatermarkH has to be at least 8 larger than fifoTxThr")); + if((p_Dtsec->p_DtsecDriverParam)->halfDuplex && + (p_Dtsec->p_DtsecDriverParam->txTimeStampEn || p_Dtsec->p_DtsecDriverParam->rxTimeStampEn)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("dTSEC in half duplex mode has to be with 1588 timeStamping diable")); + if((p_Dtsec->p_DtsecDriverParam)->actOnRxPauseFrame && (p_Dtsec->p_DtsecDriverParam)->controlFrameAccept ) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Receive control frame are not passed to the system memory so it can not be accept ")); + if((p_Dtsec->p_DtsecDriverParam)->packetAlignmentPadding > MAX_PACKET_ALIGNMENT) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("packetAlignmentPadding can't be greater than %d ",MAX_PACKET_ALIGNMENT )); + if(((p_Dtsec->p_DtsecDriverParam)->nonBackToBackIpg1 > MAX_INTER_PACKET_GAP) || + ((p_Dtsec->p_DtsecDriverParam)->nonBackToBackIpg2 > MAX_INTER_PACKET_GAP) || + ((p_Dtsec->p_DtsecDriverParam)->backToBackIpg > MAX_INTER_PACKET_GAP)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Inter packet gap can't be greater than %d ",MAX_INTER_PACKET_GAP )); + if((p_Dtsec->p_DtsecDriverParam)->alternateBackoffVal > MAX_INTER_PALTERNATE_BEB) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("alternateBackoffVal can't be greater than %d ",MAX_INTER_PALTERNATE_BEB )); + if((p_Dtsec->p_DtsecDriverParam)->maxRetransmission > MAX_RETRANSMISSION) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("maxRetransmission can't be greater than %d ",MAX_RETRANSMISSION )); + if((p_Dtsec->p_DtsecDriverParam)->collisionWindow > MAX_COLLISION_WINDOW) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("collisionWindow can't be greater than %d ",MAX_COLLISION_WINDOW )); + + /* If Auto negotiation process is disabled, need to */ + /* Set up the PHY using the MII Management Interface */ + if (p_Dtsec->p_DtsecDriverParam->tbiPhyAddr > MAX_PHYS) + RETURN_ERROR(MAJOR, E_NOT_IN_RANGE, ("PHY address (should be 0-%d)", MAX_PHYS)); + if(!p_Dtsec->f_Exception) + RETURN_ERROR(MAJOR, E_INVALID_HANDLE, ("uninitialized f_Exception")); + if(!p_Dtsec->f_Event) + RETURN_ERROR(MAJOR, E_INVALID_HANDLE, ("uninitialized f_Event")); + return E_OK; +} + +static uint8_t GetMiiDiv(int32_t refClk) +{ + uint32_t div,tmpClk; + int minRange; + + div = 1; + minRange = (int)(refClk/40 - 1); + + tmpClk = (uint32_t)ABS(refClk/60 - 1); + if (tmpClk < minRange) + { + div = 2; + minRange = (int)tmpClk; + } + tmpClk = (uint32_t)ABS(refClk/60 - 1); + if (tmpClk < minRange) + { + div = 3; + minRange = (int)tmpClk; + } + tmpClk = (uint32_t)ABS(refClk/80 - 1); + if (tmpClk < minRange) + { + div = 4; + minRange = (int)tmpClk; + } + tmpClk = (uint32_t)ABS(refClk/100 - 1); + if (tmpClk < minRange) + { + div = 5; + minRange = (int)tmpClk; + } + tmpClk = (uint32_t)ABS(refClk/140 - 1); + if (tmpClk < minRange) + { + div = 6; + minRange = (int)tmpClk; + } + tmpClk = (uint32_t)ABS(refClk/280 - 1); + if (tmpClk < minRange) + { + div = 7; + minRange = (int)tmpClk; + } + + return (uint8_t)div; +} + +/* ........................................................................... */ + +static void SetDefaultParam(t_DtsecDriverParam *p_DtsecDriverParam) +{ + p_DtsecDriverParam->errorDisabled = DEFAULT_errorDisabled; + + p_DtsecDriverParam->promiscuousEnable = DEFAULT_promiscuousEnable; + + p_DtsecDriverParam->pauseExtended = DEFAULT_pauseExtended; + p_DtsecDriverParam->pauseTime = DEFAULT_pauseTime; + + p_DtsecDriverParam->halfDuplex = DEFAULT_halfDuplex; + p_DtsecDriverParam->halfDulexFlowControlEn = DEFAULT_halfDulexFlowControlEn; + p_DtsecDriverParam->txTimeStampEn = DEFAULT_txTimeStampEn; + p_DtsecDriverParam->rxTimeStampEn = DEFAULT_rxTimeStampEn; + + p_DtsecDriverParam->packetAlignmentPadding = DEFAULT_packetAlignment; + p_DtsecDriverParam->controlFrameAccept = DEFAULT_controlFrameAccept; + p_DtsecDriverParam->groupHashExtend = DEFAULT_groupHashExtend; + p_DtsecDriverParam->broadcReject = DEFAULT_broadcReject; + p_DtsecDriverParam->rxShortFrame = DEFAULT_rxShortFrame; + p_DtsecDriverParam->exactMatch = DEFAULT_exactMatch; + p_DtsecDriverParam->debugMode = DEFAULT_debugMode; + + p_DtsecDriverParam->loopback = DEFAULT_loopback; + p_DtsecDriverParam->tbiPhyAddr = DEFAULT_tbiPhyAddr; + p_DtsecDriverParam->actOnRxPauseFrame = DEFAULT_actOnRxPauseFrame; + p_DtsecDriverParam->actOnTxPauseFrame = DEFAULT_actOnTxPauseFrame; + + p_DtsecDriverParam->preambleLength = DEFAULT_PreAmLength; + p_DtsecDriverParam->preambleRxEn = DEFAULT_PreAmRxEn; + p_DtsecDriverParam->preambleTxEn = DEFAULT_PreAmTxEn; + p_DtsecDriverParam->lengthCheckEnable = DEFAULT_lengthCheckEnable; + p_DtsecDriverParam->padAndCrcEnable = DEFAULT_padAndCrcEnable; + p_DtsecDriverParam->crcEnable = DEFAULT_crcEnable; + + p_DtsecDriverParam->nonBackToBackIpg1 = DEFAULT_nonBackToBackIpg1; + p_DtsecDriverParam->nonBackToBackIpg2 = DEFAULT_nonBackToBackIpg2; + p_DtsecDriverParam->minIfgEnforcement = DEFAULT_minIfgEnforcement; + p_DtsecDriverParam->backToBackIpg = DEFAULT_backToBackIpg; + + p_DtsecDriverParam->alternateBackoffVal = DEFAULT_altBackoffVal; + p_DtsecDriverParam->alternateBackoffEnable = DEFAULT_altBackoffEnable; + p_DtsecDriverParam->backPressureNoBackoff = DEFAULT_backPressureNoBackoff; + p_DtsecDriverParam->noBackoff = DEFAULT_noBackoff; + p_DtsecDriverParam->excessDefer = DEFAULT_excessDefer; + p_DtsecDriverParam->maxRetransmission = DEFAULT_maxRetransmission; + p_DtsecDriverParam->collisionWindow = DEFAULT_collisionWindow; + + p_DtsecDriverParam->maxFrameLength = DEFAULT_maxFrameLength; + + p_DtsecDriverParam->fifoTxThr = DEFAULT_fifoTxThr; + p_DtsecDriverParam->fifoTxWatermarkH = DEFAULT_fifoTxWatermarkH; + + p_DtsecDriverParam->fifoRxWatermarkL = DEFAULT_fifoRxWatermarkL; +} + +static void DtsecException(t_Handle h_Dtsec) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + uint32_t event; + t_DtsecMemMap *p_DtsecMemMap; + + ASSERT_COND(p_Dtsec); + p_DtsecMemMap = p_Dtsec->p_MemMap; + ASSERT_COND(p_DtsecMemMap); + + event = GET_UINT32(p_DtsecMemMap->ievent); + /* handle only MDIO events */ + event &= (IMASK_MMRDEN | IMASK_MMWREN); + if(event) + { + event &= GET_UINT32(p_DtsecMemMap->imask); + + WRITE_UINT32(p_DtsecMemMap->ievent, event); + + if(event & IMASK_MMRDEN) + p_Dtsec->f_Event(p_Dtsec->h_App, e_FM_MAC_EX_1G_MII_MNG_RD_COMPLET); + if(event & IMASK_MMWREN) + p_Dtsec->f_Event(p_Dtsec->h_App, e_FM_MAC_EX_1G_MII_MNG_WR_COMPLET); + } +} + +static void UpdateStatistics(t_Dtsec *p_Dtsec) +{ + t_DtsecMemMap *p_DtsecMemMap = p_Dtsec->p_MemMap; + uint32_t car1 = GET_UINT32(p_DtsecMemMap->car1); + uint32_t car2 = GET_UINT32(p_DtsecMemMap->car2); + + if(car1) + { + WRITE_UINT32(p_DtsecMemMap->car1, car1); + if(car1 & CAR1_TR64) + p_Dtsec->internalStatistics.tr64 += VAL22BIT; + if(car1 & CAR1_TR127) + p_Dtsec->internalStatistics.tr127 += VAL22BIT; + if(car1 & CAR1_TR255) + p_Dtsec->internalStatistics.tr255 += VAL22BIT; + if(car1 & CAR1_TR511) + p_Dtsec->internalStatistics.tr511 += VAL22BIT; + if(car1 & CAR1_TRK1) + p_Dtsec->internalStatistics.tr1k += VAL22BIT; + if(car1 & CAR1_TRMAX) + p_Dtsec->internalStatistics.trmax += VAL22BIT; + if(car1 & CAR1_TRMGV) + p_Dtsec->internalStatistics.trmgv += VAL22BIT; + if(car1 & CAR1_RBYT) + p_Dtsec->internalStatistics.rbyt += (uint64_t)VAL32BIT; + if(car1 & CAR1_RPKT) + p_Dtsec->internalStatistics.rpkt += VAL22BIT; + if(car1 & CAR1_RMCA) + p_Dtsec->internalStatistics.rmca += VAL22BIT; + if(car1 & CAR1_RBCA) + p_Dtsec->internalStatistics.rbca += VAL22BIT; + if(car1 & CAR1_RXPF) + p_Dtsec->internalStatistics.rxpf += VAL16BIT; + if(car1 & CAR1_RALN) + p_Dtsec->internalStatistics.raln += VAL16BIT; + if(car1 & CAR1_RFLR) + p_Dtsec->internalStatistics.rflr += VAL16BIT; + if(car1 & CAR1_RCDE) + p_Dtsec->internalStatistics.rcde += VAL16BIT; + if(car1 & CAR1_RCSE) + p_Dtsec->internalStatistics.rcse += VAL16BIT; + if(car1 & CAR1_RUND) + p_Dtsec->internalStatistics.rund += VAL16BIT; + if(car1 & CAR1_ROVR) + p_Dtsec->internalStatistics.rovr += VAL16BIT; + if(car1 & CAR1_RFRG) + p_Dtsec->internalStatistics.rfrg += VAL16BIT; + if(car1 & CAR1_RJBR) + p_Dtsec->internalStatistics.rjbr += VAL16BIT; + if(car1 & CAR1_RDRP) + p_Dtsec->internalStatistics.rdrp += VAL16BIT; + } + if(car2) + { + WRITE_UINT32(p_DtsecMemMap->car2, car2); + if(car2 & CAR2_TFCS) + p_Dtsec->internalStatistics.tfcs += VAL12BIT; + if(car2 & CAR2_TBYT) + p_Dtsec->internalStatistics.tbyt += (uint64_t)VAL32BIT; + if(car2 & CAR2_TPKT) + p_Dtsec->internalStatistics.tpkt += VAL22BIT; + if(car2 & CAR2_TMCA) + p_Dtsec->internalStatistics.tmca += VAL22BIT; + if(car2 & CAR2_TBCA) + p_Dtsec->internalStatistics.tbca += VAL22BIT; + if(car2 & CAR2_TXPF) + p_Dtsec->internalStatistics.txpf += VAL16BIT; + if(car2 & CAR2_TDRP) + p_Dtsec->internalStatistics.tdrp += VAL16BIT; + } +} + +/* .............................................................................. */ + +static uint16_t DtsecGetMaxFrameLength(t_Handle h_Dtsec) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + + SANITY_CHECK_RETURN_VALUE(p_Dtsec, E_INVALID_HANDLE, 0); + + return (uint16_t)GET_UINT32(p_Dtsec->p_MemMap->maxfrm); +} + +static void DtsecErrException(t_Handle h_Dtsec) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + uint32_t event; + t_DtsecMemMap *p_DtsecMemMap = p_Dtsec->p_MemMap; + + event = GET_UINT32(p_DtsecMemMap->ievent); + /* do not handle MDIO events */ + event &= ~(IMASK_MMRDEN | IMASK_MMWREN); + + event &= GET_UINT32(p_DtsecMemMap->imask); + + WRITE_UINT32(p_DtsecMemMap->ievent, event); + + if(event & IMASK_BREN) + p_Dtsec->f_Exception(p_Dtsec->h_App, e_FM_MAC_EX_1G_BAB_RX); + if(event & IMASK_RXCEN) + p_Dtsec->f_Exception(p_Dtsec->h_App, e_FM_MAC_EX_1G_RX_CTL); + if(event & IMASK_MSROEN) + UpdateStatistics(p_Dtsec); + if(event & IMASK_GTSCEN) + p_Dtsec->f_Exception(p_Dtsec->h_App, e_FM_MAC_EX_1G_GRATEFUL_TX_STP_COMPLET); + if(event & IMASK_BTEN) + p_Dtsec->f_Exception(p_Dtsec->h_App, e_FM_MAC_EX_1G_BAB_TX); + if(event & IMASK_TXCEN) + p_Dtsec->f_Exception(p_Dtsec->h_App, e_FM_MAC_EX_1G_TX_CTL); + if(event & IMASK_TXEEN) + p_Dtsec->f_Exception(p_Dtsec->h_App, e_FM_MAC_EX_1G_TX_ERR); + if(event & IMASK_LCEN) + p_Dtsec->f_Exception(p_Dtsec->h_App, e_FM_MAC_EX_1G_LATE_COL); + if(event & IMASK_CRLEN) + p_Dtsec->f_Exception(p_Dtsec->h_App, e_FM_MAC_EX_1G_COL_RET_LMT); + if(event & IMASK_XFUNEN) + { +#ifdef FM_TX_LOCKUP_ERRATA_DTSEC6 + uint32_t tpkt1, tmpReg1, tpkt2, tmpReg2, i; + /* a. Write 0x00E0_0C00 to DTSEC_ID */ + /* This is a read only regidter */ + + /* b. Read and save the value of TPKT */ + tpkt1 = GET_UINT32(p_DtsecMemMap->tpkt); + + /* c. Read the register at dTSEC address offset 0x32C */ + tmpReg1 = GET_UINT32(*(uint32_t*)((uint8_t*)p_DtsecMemMap + 0x32c)); + + /* d. Compare bits [9:15] to bits [25:31] of the register at address offset 0x32C. */ + if((tmpReg1 & 0x007F0000) != (tmpReg1 & 0x0000007F)) + { + /* If they are not equal, save the value of this register and wait for at least + * MAXFRM*16 ns */ + XX_UDelay((uint32_t)(MIN(DtsecGetMaxFrameLength(p_Dtsec)*16/1000, 1))); + } + + /* e. Read and save TPKT again and read the register at dTSEC address offset + 0x32C again*/ + tpkt2 = GET_UINT32(p_DtsecMemMap->tpkt); + tmpReg2 = GET_UINT32(*(uint32_t*)((uint8_t*)p_DtsecMemMap + 0x32c)); + + /* f. Compare the value of TPKT saved in step b to value read in step e. Also + compare bits [9:15] of the register at offset 0x32C saved in step d to the value + of bits [9:15] saved in step e. If the two registers values are unchanged, then + the transmit portion of the dTSEC controller is locked up and the user should + proceed to the recover sequence. */ + if((tpkt1 == tpkt2) && ((tmpReg1 & 0x007F0000) == (tmpReg2 & 0x007F0000))) + { + /* recover sequence */ + + /* a.Write a 1 to RCTRL[GRS]*/ + + WRITE_UINT32(p_DtsecMemMap->rctrl, GET_UINT32(p_DtsecMemMap->rctrl) | RCTRL_GRS); + + /* b.Wait until IEVENT[GRSC]=1, or at least 100 us has elapsed. */ + for(i = 0 ; i < 100 ; i++ ) + { + if(GET_UINT32(p_DtsecMemMap->ievent) & IMASK_GRSCEN) + break; + XX_UDelay(1); + } + if(GET_UINT32(p_DtsecMemMap->ievent) & IMASK_GRSCEN) + WRITE_UINT32(p_DtsecMemMap->ievent, IMASK_GRSCEN); + else + DBG(INFO,("Rx lockup due to dTSEC Tx lockup")); + + + /* c.Write a 1 to bit n of FM_RSTC (offset 0x0CC of FPM)*/ + FmResetMac(p_Dtsec->fmMacControllerDriver.h_Fm, e_FM_MAC_1G, p_Dtsec->fmMacControllerDriver.macId); + + /* d.Wait 4 Tx clocks (32 ns) */ + XX_UDelay(1); + + /* e.Write a 0 to bit n of FM_RSTC. */ + /* cleared by FMAN */ + } + else + { + /* If either value has changed, the dTSEC controller is not locked up and the + controller should be allowed to proceed normally by writing the reset value + of 0x0824_0101 to DTSEC_ID. */ + /* Register is read only */ + } +#endif /* FM_TX_LOCKUP_ERRATA_DTSEC6 */ + + p_Dtsec->f_Exception(p_Dtsec->h_App, e_FM_MAC_EX_1G_TX_FIFO_UNDRN); + } + if(event & IMASK_MAGEN) + p_Dtsec->f_Exception(p_Dtsec->h_App, e_FM_MAC_EX_1G_MAG_PCKT); + if(event & IMASK_GRSCEN) + p_Dtsec->f_Exception(p_Dtsec->h_App, e_FM_MAC_EX_1G_GRATEFUL_RX_STP_COMPLET); + if(event & IMASK_TDPEEN) + p_Dtsec->f_Exception(p_Dtsec->h_App, e_FM_MAC_EX_1G_TX_DATA_ERR); + if(event & IMASK_RDPEEN) + p_Dtsec->f_Exception(p_Dtsec->h_App, e_FM_MAC_EX_1G_RX_DATA_ERR); + + /* - masked interrupts */ + ASSERT_COND(!(event & IMASK_ABRTEN)); + ASSERT_COND(!(event & IMASK_IFERREN)); +} + +static void Dtsec1588Exception(t_Handle h_Dtsec) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + uint32_t event; + t_DtsecMemMap *p_DtsecMemMap = p_Dtsec->p_MemMap; + + if (p_Dtsec->ptpTsuEnabled) + { + event = GET_UINT32(p_DtsecMemMap->tmr_pevent); + event &= GET_UINT32(p_DtsecMemMap->tmr_pemask); + if(event) + { + WRITE_UINT32(p_DtsecMemMap->tmr_pevent, event); + ASSERT_COND(event & PEMASK_TSRE); + p_Dtsec->f_Exception(p_Dtsec->h_App, e_FM_MAC_EX_1G_1588_TS_RX_ERR); + } + } +} + +/* ........................................................................... */ + +static void FreeInitResources(t_Dtsec *p_Dtsec) +{ + /*TODO - need to ask why with mdioIrq != 0*/ + if ((p_Dtsec->mdioIrq != 0) && (p_Dtsec->mdioIrq != NO_IRQ)) + { + XX_DisableIntr(p_Dtsec->mdioIrq); + XX_FreeIntr(p_Dtsec->mdioIrq); + } + else if (p_Dtsec->mdioIrq == 0) + FmUnregisterIntr(p_Dtsec->fmMacControllerDriver.h_Fm, e_FM_MOD_1G_MAC, p_Dtsec->macId, e_FM_INTR_TYPE_NORMAL); + FmUnregisterIntr(p_Dtsec->fmMacControllerDriver.h_Fm, e_FM_MOD_1G_MAC, p_Dtsec->macId, e_FM_INTR_TYPE_ERR); + FmUnregisterIntr(p_Dtsec->fmMacControllerDriver.h_Fm, e_FM_MOD_1G_MAC_TMR, p_Dtsec->macId, e_FM_INTR_TYPE_NORMAL); + + /* release the driver's group hash table */ + FreeHashTable(p_Dtsec->p_MulticastAddrHash); + p_Dtsec->p_MulticastAddrHash = NULL; + + /* release the driver's individual hash table */ + FreeHashTable(p_Dtsec->p_UnicastAddrHash); + p_Dtsec->p_UnicastAddrHash = NULL; +} + +/* ........................................................................... */ + +static void HardwareClearAddrInPaddr(t_Dtsec *p_Dtsec, uint8_t paddrNum) +{ + WRITE_UINT32(((t_DtsecMemMap*)p_Dtsec->p_MemMap)->macaddr[paddrNum].exact_match1, 0x0); + WRITE_UINT32(((t_DtsecMemMap*)p_Dtsec->p_MemMap)->macaddr[paddrNum].exact_match2, 0x0); +} + +/* ........................................................................... */ + +static void HardwareAddAddrInPaddr(t_Dtsec *p_Dtsec, uint64_t *p_Addr, uint8_t paddrNum) +{ + uint32_t tmpReg32 = 0; + uint64_t addr = *p_Addr; + t_DtsecMemMap *p_DtsecMemMap = (t_DtsecMemMap*)p_Dtsec->p_MemMap; + + tmpReg32 = (uint32_t)(addr); + SwapUint32P(&tmpReg32); + WRITE_UINT32(p_DtsecMemMap->macaddr[paddrNum].exact_match1, tmpReg32); + + tmpReg32 = (uint32_t)(addr>>32); + SwapUint32P(&tmpReg32); + WRITE_UINT32(p_DtsecMemMap->macaddr[paddrNum].exact_match2, tmpReg32); +} + +/* ........................................................................... */ + +static t_Error GracefulStop(t_Dtsec *p_Dtsec, e_CommMode mode) +{ + t_DtsecMemMap *p_MemMap; + + ASSERT_COND(p_Dtsec); + + p_MemMap= (t_DtsecMemMap*)(p_Dtsec->p_MemMap); + ASSERT_COND(p_MemMap); + + /* Assert the graceful transmit stop bit */ + if (mode & e_COMM_MODE_RX) + WRITE_UINT32(p_MemMap->rctrl, + GET_UINT32(p_MemMap->rctrl) | RCTRL_GRS); + +#ifdef FM_GRS_ERRATA_DTSEC_A002 + XX_UDelay(100); +#endif /* FM_GRS_ERRATA_DTSEC_A002 */ + +#ifdef FM_GTS_ERRATA_DTSEC_A004 + DBG(INFO, ("GTS not supported due to DTSEC_A004 errata.")); +#else /* not FM_GTS_ERRATA_DTSEC_A004 */ + if (mode & e_COMM_MODE_TX) + WRITE_UINT32(p_MemMap->tctrl, + GET_UINT32(p_MemMap->tctrl) | TCTRL_GTS); +#endif /* not FM_GTS_ERRATA_DTSEC_A004 */ + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error GracefulRestart(t_Dtsec *p_Dtsec, e_CommMode mode) +{ + t_DtsecMemMap *p_MemMap; + + ASSERT_COND(p_Dtsec); + + p_MemMap= (t_DtsecMemMap*)(p_Dtsec->p_MemMap); + ASSERT_COND(p_MemMap); + + /* clear the graceful receive stop bit */ + if(mode & e_COMM_MODE_TX) + WRITE_UINT32(p_MemMap->tctrl, + GET_UINT32(p_MemMap->tctrl) & ~TCTRL_GTS); + + if(mode & e_COMM_MODE_RX) + WRITE_UINT32(p_MemMap->rctrl, + GET_UINT32(p_MemMap->rctrl) & ~RCTRL_GRS); + + return E_OK; +} + + +/*****************************************************************************/ +/* dTSEC Configs modification functions */ +/*****************************************************************************/ + + +/* .............................................................................. */ + +static t_Error DtsecConfigLoopback(t_Handle h_Dtsec, bool newVal) +{ + + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_DtsecDriverParam, E_INVALID_STATE); + + p_Dtsec->p_DtsecDriverParam->loopback = newVal; + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error DtsecConfigMaxFrameLength(t_Handle h_Dtsec, uint16_t newVal) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_DtsecDriverParam, E_INVALID_STATE); + + p_Dtsec->p_DtsecDriverParam->maxFrameLength = newVal; + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error DtsecConfigPadAndCrc(t_Handle h_Dtsec, bool newVal) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_DtsecDriverParam, E_INVALID_STATE); + + p_Dtsec->p_DtsecDriverParam->padAndCrcEnable = newVal; + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error DtsecConfigHalfDuplex(t_Handle h_Dtsec, bool newVal) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_DtsecDriverParam, E_INVALID_STATE); + + p_Dtsec->p_DtsecDriverParam->halfDuplex = newVal; + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error DtsecConfigLengthCheck(t_Handle h_Dtsec, bool newVal) +{ +#ifdef FM_LEN_CHECK_ERRATA_FMAN_SW002 +UNUSED(h_Dtsec); + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("LengthCheck!")); + +#else + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_DtsecDriverParam, E_INVALID_STATE); + + p_Dtsec->p_DtsecDriverParam->lengthCheckEnable = newVal; + + return E_OK; +#endif /* FM_LEN_CHECK_ERRATA_FMAN_SW002 */ +} + +static t_Error DtsecConfigException(t_Handle h_Dtsec, e_FmMacExceptions exception, bool enable) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + uint32_t bitMask = 0; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_DtsecDriverParam, E_INVALID_STATE); + + if(exception != e_FM_MAC_EX_1G_1588_TS_RX_ERR) + { + GET_EXCEPTION_FLAG(bitMask, exception); + if(bitMask) + { + if (enable) + p_Dtsec->exceptions |= bitMask; + else + p_Dtsec->exceptions &= ~bitMask; + } + else + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Undefined exception")); + } + else + { + if(!p_Dtsec->ptpTsuEnabled) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Exception valid for 1588 only")); + switch(exception){ + case(e_FM_MAC_EX_1G_1588_TS_RX_ERR): + if(enable) + p_Dtsec->enTsuErrExeption = TRUE; + else + p_Dtsec->enTsuErrExeption = FALSE; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Undefined exception")); + } + } + return E_OK; +} +/*****************************************************************************/ +/* dTSEC Run Time API functions */ +/*****************************************************************************/ + +/* .............................................................................. */ + +static t_Error DtsecEnable(t_Handle h_Dtsec, e_CommMode mode) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + t_DtsecMemMap *p_MemMap ; + uint32_t tmpReg32 = 0; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_MemMap, E_INVALID_HANDLE); + + p_MemMap= (t_DtsecMemMap*)(p_Dtsec->p_MemMap); + + tmpReg32 = GET_UINT32(p_MemMap->maccfg1); + if (mode & e_COMM_MODE_RX) + tmpReg32 |= MACCFG1_RX_EN; + if (mode & e_COMM_MODE_TX) + tmpReg32 |= MACCFG1_TX_EN; + WRITE_UINT32(p_MemMap->maccfg1, tmpReg32); + + GracefulRestart(p_Dtsec, mode); + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error DtsecDisable (t_Handle h_Dtsec, e_CommMode mode) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + t_DtsecMemMap *p_MemMap ; + uint32_t tmpReg32 = 0; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_MemMap, E_INVALID_HANDLE); + + p_MemMap = (t_DtsecMemMap*)(p_Dtsec->p_MemMap); + + GracefulStop(p_Dtsec, mode); + + tmpReg32 = GET_UINT32(p_MemMap->maccfg1); + if (mode & e_COMM_MODE_RX) + tmpReg32 &= ~MACCFG1_RX_EN; + if (mode & e_COMM_MODE_TX) + tmpReg32 &= ~MACCFG1_TX_EN; + WRITE_UINT32(p_MemMap->maccfg1, tmpReg32); + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error DtsecTxMacPause(t_Handle h_Dtsec, uint16_t pauseTime) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + uint32_t ptv = 0; + t_DtsecMemMap *p_MemMap; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(!p_Dtsec->p_DtsecDriverParam, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_MemMap, E_INVALID_STATE); + + p_MemMap = (t_DtsecMemMap*)(p_Dtsec->p_MemMap); + + if (pauseTime) + { +#ifdef FM_BAD_TX_TS_IN_B_2_B_ERRATA_DTSEC_A003 + { + if (pauseTime <= 320) + RETURN_ERROR(MINOR, E_INVALID_VALUE, + ("This pause-time value of %d is illegal due to errata dTSEC-A003!" + " value should be greater than 320.")); + } +#endif /* FM_BAD_TX_TS_IN_B_2_B_ERRATA_DTSEC_A003 */ + +#ifdef FM_SHORT_PAUSE_TIME_ERRATA_DTSEC1 + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_Dtsec->fmMacControllerDriver.h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + pauseTime += 2; + } +#endif /* FM_SHORT_PAUSE_TIME_ERRATA_DTSEC1 */ + + ptv = GET_UINT32(p_MemMap->ptv); + ptv |= pauseTime; + WRITE_UINT32(p_MemMap->ptv, ptv); + + /* trigger the transmission of a flow-control pause frame */ + WRITE_UINT32(p_MemMap->maccfg1, + GET_UINT32(p_MemMap->maccfg1) | MACCFG1_TX_FLOW); + } + else + { + WRITE_UINT32(p_MemMap->maccfg1, + GET_UINT32(p_MemMap->maccfg1) & ~MACCFG1_TX_FLOW); + } + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error DtsecRxIgnoreMacPause(t_Handle h_Dtsec, bool en) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + t_DtsecMemMap *p_MemMap; + uint32_t tmpReg32; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(!p_Dtsec->p_DtsecDriverParam, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_MemMap, E_INVALID_STATE); + + p_MemMap = (t_DtsecMemMap*)(p_Dtsec->p_MemMap); + + tmpReg32 = GET_UINT32(p_MemMap->maccfg1); + if (en) + tmpReg32 &= ~MACCFG1_RX_FLOW; + else + tmpReg32 |= MACCFG1_RX_FLOW; + WRITE_UINT32(p_MemMap->maccfg1, tmpReg32); + + return E_OK; +} + + +/* .............................................................................. */ + +static t_Error DtsecEnable1588TimeStamp(t_Handle h_Dtsec) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Dtsec->p_DtsecDriverParam, E_INVALID_STATE); +#ifdef FM_10_100_SGMII_NO_TS_ERRATA_DTSEC3 + if((p_Dtsec->enetMode == e_ENET_MODE_SGMII_10) || (p_Dtsec->enetMode == e_ENET_MODE_SGMII_100)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("1588TimeStamp in 10/100 SGMII")); +#endif /* FM_10_100_SGMII_NO_TS_ERRATA_DTSEC3 */ + p_Dtsec->ptpTsuEnabled = TRUE; + WRITE_UINT32(p_Dtsec->p_MemMap->rctrl, GET_UINT32(p_Dtsec->p_MemMap->rctrl) | RCTRL_RTSE); + WRITE_UINT32(p_Dtsec->p_MemMap->tctrl, GET_UINT32(p_Dtsec->p_MemMap->tctrl) | TCTRL_TTSE); + + return E_OK; +} + +static t_Error DtsecDisable1588TimeStamp(t_Handle h_Dtsec) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Dtsec->p_DtsecDriverParam, E_INVALID_STATE); + + p_Dtsec->ptpTsuEnabled = FALSE; + WRITE_UINT32(p_Dtsec->p_MemMap->rctrl, GET_UINT32(p_Dtsec->p_MemMap->rctrl) & ~RCTRL_RTSE); + WRITE_UINT32(p_Dtsec->p_MemMap->tctrl, GET_UINT32(p_Dtsec->p_MemMap->tctrl) & ~TCTRL_TTSE); + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error DtsecGetStatistics(t_Handle h_Dtsec, t_FmMacStatistics *p_Statistics) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + t_DtsecMemMap *p_DtsecMemMap; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_MemMap, E_NULL_POINTER); + SANITY_CHECK_RETURN_ERROR(p_Statistics, E_NULL_POINTER); + + if (p_Dtsec->statisticsLevel == e_FM_MAC_NONE_STATISTICS) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Statistics disabled")); + + p_DtsecMemMap = p_Dtsec->p_MemMap; + memset(p_Statistics, 0xff, sizeof(t_FmMacStatistics)); + + if (p_Dtsec->statisticsLevel == e_FM_MAC_FULL_STATISTICS) + { + p_Statistics->eStatPkts64 = (MASK22BIT & GET_UINT32(p_DtsecMemMap->tr64)) + + p_Dtsec->internalStatistics.tr64; /**< r-10G tr-DT 64 byte frame counter */ + p_Statistics->eStatPkts65to127 = (MASK22BIT & GET_UINT32(p_DtsecMemMap->tr127)) + + p_Dtsec->internalStatistics.tr127; /**< r-10G 65 to 127 byte frame counter */ + p_Statistics->eStatPkts128to255 = (MASK22BIT & GET_UINT32(p_DtsecMemMap->tr255)) + + p_Dtsec->internalStatistics.tr255; /**< r-10G 128 to 255 byte frame counter */ + p_Statistics->eStatPkts256to511 = (MASK22BIT & GET_UINT32(p_DtsecMemMap->tr511)) + + p_Dtsec->internalStatistics.tr511; /**< r-10G 256 to 511 byte frame counter */ + p_Statistics->eStatPkts512to1023 = (MASK22BIT & GET_UINT32(p_DtsecMemMap->tr1k)) + + p_Dtsec->internalStatistics.tr1k; /**< r-10G 512 to 1023 byte frame counter */ + p_Statistics->eStatPkts1024to1518 = (MASK22BIT & GET_UINT32(p_DtsecMemMap->trmax)) + + p_Dtsec->internalStatistics.trmax; /**< r-10G 1024 to 1518 byte frame counter */ + p_Statistics->eStatPkts1519to1522 = (MASK22BIT & GET_UINT32(p_DtsecMemMap->trmgv)) + + p_Dtsec->internalStatistics.trmgv; /**< r-10G 1519 to 1522 byte good frame count */ + /* MIB II */ + p_Statistics->ifInOctets = GET_UINT32(p_DtsecMemMap->rbyt) + + p_Dtsec->internalStatistics.rbyt; /**< Total number of byte received. */ + p_Statistics->ifInPkts = (MASK22BIT & GET_UINT32(p_DtsecMemMap->rpkt)) + + p_Dtsec->internalStatistics.rpkt; /**< Total number of packets received.*/ + p_Statistics->ifInMcastPkts = (MASK22BIT & GET_UINT32(p_DtsecMemMap->rmca)) + + p_Dtsec->internalStatistics.rmca; /**< Total number of multicast frame received*/ + p_Statistics->ifInBcastPkts = (MASK22BIT & GET_UINT32(p_DtsecMemMap->rbca)) + + p_Dtsec->internalStatistics.rbca; /**< Total number of broadcast frame received */ + p_Statistics->ifOutOctets = GET_UINT32(p_DtsecMemMap->tbyt) + + p_Dtsec->internalStatistics.tbyt; /**< Total number of byte sent. */ + p_Statistics->ifOutPkts = (MASK22BIT & GET_UINT32(p_DtsecMemMap->tpkt)) + + p_Dtsec->internalStatistics.tpkt; /**< Total number of packets sent .*/ + p_Statistics->ifOutMcastPkts = (MASK22BIT & GET_UINT32(p_DtsecMemMap->tmca)) + + p_Dtsec->internalStatistics.tmca; /**< Total number of multicast frame sent */ + p_Statistics->ifOutBcastPkts = (MASK22BIT & GET_UINT32(p_DtsecMemMap->tbca)) + + p_Dtsec->internalStatistics.tbca; /**< Total number of multicast frame sent */ + } +/* */ + p_Statistics->eStatFragments = (MASK16BIT & GET_UINT32(p_DtsecMemMap->rfrg)) + + p_Dtsec->internalStatistics.rfrg; /**< Total number of packets that were less than 64 octets long with a wrong CRC.*/ + p_Statistics->eStatJabbers = (MASK16BIT & GET_UINT32(p_DtsecMemMap->rjbr)) + + p_Dtsec->internalStatistics.rjbr; /**< Total number of packets longer than valid maximum length octets */ + + p_Statistics->eStatsDropEvents = (MASK16BIT & GET_UINT32(p_DtsecMemMap->rdrp)) + + p_Dtsec->internalStatistics.rdrp; /**< number of dropped packets due to internal errors of the MAC Client. */ + p_Statistics->eStatCRCAlignErrors = (MASK16BIT & GET_UINT32(p_DtsecMemMap->raln)) + + p_Dtsec->internalStatistics.raln; /**< Incremented when frames of correct length but with CRC error are received.*/ + + p_Statistics->eStatUndersizePkts = (MASK16BIT & GET_UINT32(p_DtsecMemMap->rund)) + + p_Dtsec->internalStatistics.rund; /**< Total number of packets that were less than 64 octets long with a good CRC.*/ + p_Statistics->eStatOversizePkts = (MASK16BIT & GET_UINT32(p_DtsecMemMap->rovr)) + + p_Dtsec->internalStatistics.rovr; /**< T,B.D*/ +/* Pause */ + p_Statistics->reStatPause = (MASK16BIT & GET_UINT32(p_DtsecMemMap->rxpf)) + + p_Dtsec->internalStatistics.rxpf; /**< Pause MAC Control received */ + p_Statistics->teStatPause = (MASK16BIT & GET_UINT32(p_DtsecMemMap->txpf)) + + p_Dtsec->internalStatistics.txpf; /**< Pause MAC Control sent */ + + p_Statistics->ifInDiscards = p_Statistics->eStatsDropEvents; /**< Frames received, but discarded due to problems within the MAC RX. */ + + p_Statistics->ifInErrors = p_Statistics->eStatsDropEvents + + p_Statistics->eStatCRCAlignErrors + + (MASK16BIT & GET_UINT32(p_DtsecMemMap->rflr)) + + p_Dtsec->internalStatistics.rflr + + (MASK16BIT & GET_UINT32(p_DtsecMemMap->rcde)) + + p_Dtsec->internalStatistics.rcde + + (MASK16BIT & GET_UINT32(p_DtsecMemMap->rcse)) + + p_Dtsec->internalStatistics.rcse; + + p_Statistics->ifOutDiscards = (MASK16BIT & GET_UINT32(p_DtsecMemMap->tdrp)) + + p_Dtsec->internalStatistics.tdrp; /**< Frames received, but discarded due to problems within the MAC TX N/A!.*/ + p_Statistics->ifOutErrors = p_Statistics->ifOutDiscards /**< Number of frames transmitted with error: */ + + (MASK12BIT & GET_UINT32(p_DtsecMemMap->tfcs)) + + p_Dtsec->internalStatistics.tfcs; + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error DtsecModifyMacAddress (t_Handle h_Dtsec, t_EnetAddr *p_EnetAddr) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + t_DtsecMemMap *p_DtsecMemMap; + uint32_t tmpReg32 = 0; + uint64_t addr; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_MemMap, E_NULL_POINTER); + + p_DtsecMemMap = p_Dtsec->p_MemMap; + /* Initialize MAC Station Address registers (1 & 2) */ + /* Station address have to be swapped (big endian to little endian */ + addr = ((*(uint64_t *)p_EnetAddr) >> 16); + p_Dtsec->addr = addr; + + tmpReg32 = (uint32_t)(addr); + SwapUint32P(&tmpReg32); + WRITE_UINT32(p_DtsecMemMap->macstnaddr1, tmpReg32); + + tmpReg32 = (uint32_t)(addr>>32); + SwapUint32P(&tmpReg32); + WRITE_UINT32(p_DtsecMemMap->macstnaddr2, tmpReg32); + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error DtsecResetCounters (t_Handle h_Dtsec) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + + /* clear HW counters */ + WRITE_UINT32(p_Dtsec->p_MemMap->ecntrl, GET_UINT32(p_Dtsec->p_MemMap->ecntrl) | ECNTRL_CLRCNT); + + /* clear SW counters holding carries */ + memset((char *)&p_Dtsec->internalStatistics, (char)0x0, sizeof(t_InternalStatistics)); + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error DtsecAddExactMatchMacAddress(t_Handle h_Dtsec, t_EnetAddr *p_EthAddr) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *) h_Dtsec; + uint64_t ethAddr; + uint8_t paddrNum; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + + ethAddr = ((*(uint64_t *)p_EthAddr) >> 16); + + if (ethAddr & GROUP_ADDRESS) + /* Multicast address has no effect in PADDR */ + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Multicast address")); + + /* Make sure no PADDR contains this address */ + for (paddrNum = 0; paddrNum < DTSEC_NUM_OF_PADDRS; paddrNum++) + if (p_Dtsec->indAddrRegUsed[paddrNum]) + if (p_Dtsec->paddr[paddrNum] == ethAddr) + RETURN_ERROR(MAJOR, E_ALREADY_EXISTS, NO_MSG); + + /* Find first unused PADDR */ + for (paddrNum = 0; paddrNum < DTSEC_NUM_OF_PADDRS; paddrNum++) + if (!(p_Dtsec->indAddrRegUsed[paddrNum])) + { + /* mark this PADDR as used */ + p_Dtsec->indAddrRegUsed[paddrNum] = TRUE; + /* store address */ + p_Dtsec->paddr[paddrNum] = ethAddr; + + /* put in hardware */ + HardwareAddAddrInPaddr(p_Dtsec, ðAddr, paddrNum); + p_Dtsec->numOfIndAddrInRegs++; + + return E_OK; + } + + /* No free PADDR */ + RETURN_ERROR(MAJOR, E_FULL, NO_MSG); +} + +/* .............................................................................. */ + +static t_Error DtsecDelExactMatchMacAddress(t_Handle h_Dtsec, t_EnetAddr *p_EthAddr) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *) h_Dtsec; + uint64_t ethAddr; + uint8_t paddrNum; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + + ethAddr = ((*(uint64_t *)p_EthAddr) >> 16); + + /* Find used PADDR containing this address */ + for (paddrNum = 0; paddrNum < DTSEC_NUM_OF_PADDRS; paddrNum++) + { + if ((p_Dtsec->indAddrRegUsed[paddrNum]) && + (p_Dtsec->paddr[paddrNum] == ethAddr)) + { + /* mark this PADDR as not used */ + p_Dtsec->indAddrRegUsed[paddrNum] = FALSE; + /* clear in hardware */ + HardwareClearAddrInPaddr(p_Dtsec, paddrNum); + p_Dtsec->numOfIndAddrInRegs--; + + return E_OK; + } + } + + RETURN_ERROR(MAJOR, E_NOT_FOUND, NO_MSG); +} + +/* .............................................................................. */ + +static t_Error DtsecAddHashMacAddress(t_Handle h_Dtsec, t_EnetAddr *p_EthAddr) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + t_DtsecMemMap *p_DtsecMemMap; + uint32_t crc; + uint8_t crcMirror, reg; + uint32_t bitMask; + t_EthHashEntry *p_HashEntry; + uint64_t ethAddr; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_MemMap, E_NULL_POINTER); + + p_DtsecMemMap = p_Dtsec->p_MemMap; + + ethAddr = ((*(uint64_t *)p_EthAddr) >> 16); + + /* CRC calculation */ + GET_MAC_ADDR_CRC(ethAddr, crc); + + /* calculate the "crc mirror" */ + crcMirror = MIRROR((uint8_t)crc); + + /* 3 MSB bits define the register */ + reg = (uint8_t)(crcMirror >> 5); + /* 5 LSB bits define the bit within the register */ + bitMask = 0x80000000 >> (crcMirror & 0x1f); + + /* Create element to be added to the driver hash table */ + p_HashEntry = (t_EthHashEntry *)XX_Malloc(sizeof(t_EthHashEntry)); + p_HashEntry->addr = ethAddr; + INIT_LIST(&p_HashEntry->node); + + if (ethAddr & GROUP_ADDRESS) + { + /* Group Address */ + LIST_AddToTail(&(p_HashEntry->node), &(p_Dtsec->p_MulticastAddrHash->p_Lsts[crcMirror])); + /* Set the appropriate bit in GADDR0-7 */ + WRITE_UINT32(p_DtsecMemMap->gaddr[reg], + GET_UINT32(p_DtsecMemMap->gaddr[reg]) | bitMask); + } + else + { + LIST_AddToTail(&(p_HashEntry->node), &(p_Dtsec->p_UnicastAddrHash->p_Lsts[crcMirror])); + /* Set the appropriate bit in IADDR0-7 */ + WRITE_UINT32(p_DtsecMemMap->igaddr[reg], + GET_UINT32(p_DtsecMemMap->igaddr[reg]) | bitMask); + } + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error DtsecDelHashMacAddress(t_Handle h_Dtsec, t_EnetAddr *p_EthAddr) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + t_DtsecMemMap *p_DtsecMemMap; + t_List *p_Pos; + uint32_t crc; + uint8_t crcMirror, reg; + uint32_t bitMask; + t_EthHashEntry *p_HashEntry = NULL; + uint64_t ethAddr; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_MemMap, E_NULL_POINTER); + + p_DtsecMemMap = p_Dtsec->p_MemMap; + + ethAddr = ((*(uint64_t *)p_EthAddr) >> 16); + + /* CRC calculation */ + GET_MAC_ADDR_CRC(ethAddr, crc); + + /* calculate the "crc mirror" */ + crcMirror = MIRROR((uint8_t)crc); + + /* 3 MSB bits define the register */ + reg =(uint8_t)( crcMirror >> 5); + /* 5 LSB bits define the bit within the register */ + bitMask = 0x80000000 >> (crcMirror & 0x1f); + + if (ethAddr & GROUP_ADDRESS) + { + /* Group Address */ + LIST_FOR_EACH(p_Pos, &(p_Dtsec->p_MulticastAddrHash->p_Lsts[crcMirror])) + { + p_HashEntry = ETH_HASH_ENTRY_OBJ(p_Pos); + if(p_HashEntry->addr == ethAddr) + { + LIST_DelAndInit(&p_HashEntry->node); + XX_Free(p_HashEntry); + break; + } + } + if(LIST_IsEmpty(&p_Dtsec->p_MulticastAddrHash->p_Lsts[crcMirror])) + WRITE_UINT32(p_DtsecMemMap->gaddr[reg], + GET_UINT32(p_DtsecMemMap->gaddr[reg]) & ~bitMask); + } + else + { + /* Individual Address */ + LIST_FOR_EACH(p_Pos, &(p_Dtsec->p_UnicastAddrHash->p_Lsts[crcMirror])) + { + p_HashEntry = ETH_HASH_ENTRY_OBJ(p_Pos); + if(p_HashEntry->addr == ethAddr) + { + LIST_DelAndInit(&p_HashEntry->node); + XX_Free(p_HashEntry); + break; + } + } + if(LIST_IsEmpty(&p_Dtsec->p_UnicastAddrHash->p_Lsts[crcMirror])) + WRITE_UINT32(p_DtsecMemMap->igaddr[reg], + GET_UINT32(p_DtsecMemMap->igaddr[reg]) & ~bitMask); + } + + /* address does not exist */ + ASSERT_COND(p_HashEntry != NULL); + + return E_OK; +} + + +/* .............................................................................. */ + +static t_Error DtsecSetPromiscuous(t_Handle h_Dtsec, bool newVal) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + t_DtsecMemMap *p_DtsecMemMap; + uint32_t tmpReg32; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Dtsec->p_DtsecDriverParam, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_MemMap, E_NULL_POINTER); + + p_DtsecMemMap = p_Dtsec->p_MemMap; + + tmpReg32 = GET_UINT32(p_DtsecMemMap->rctrl); + + if (newVal) + tmpReg32 |= RCTRL_PROM; + else + tmpReg32 &= ~RCTRL_PROM; + + WRITE_UINT32(p_DtsecMemMap->rctrl, tmpReg32); + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error DtsecSetStatistics(t_Handle h_Dtsec, e_FmMacStatisticsLevel statisticsLevel) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + t_DtsecMemMap *p_DtsecMemMap; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_MemMap, E_NULL_POINTER); + + p_DtsecMemMap = p_Dtsec->p_MemMap; + + p_Dtsec->statisticsLevel = statisticsLevel; + + switch (p_Dtsec->statisticsLevel) + { + case(e_FM_MAC_NONE_STATISTICS): + WRITE_UINT32(p_DtsecMemMap->cam1,0xffffffff); + WRITE_UINT32(p_DtsecMemMap->cam2,0xffffffff); + WRITE_UINT32(p_DtsecMemMap->ecntrl, GET_UINT32(p_DtsecMemMap->ecntrl) & ~ECNTRL_STEN); + WRITE_UINT32(p_DtsecMemMap->imask, GET_UINT32(p_DtsecMemMap->imask) & ~IMASK_MSROEN); + p_Dtsec->exceptions &= ~IMASK_MSROEN; + break; + case(e_FM_MAC_PARTIAL_STATISTICS): + WRITE_UINT32(p_DtsecMemMap->cam1, CAM1_ERRORS_ONLY); + WRITE_UINT32(p_DtsecMemMap->cam2, CAM2_ERRORS_ONLY); + WRITE_UINT32(p_DtsecMemMap->ecntrl, GET_UINT32(p_DtsecMemMap->ecntrl) | ECNTRL_STEN); + WRITE_UINT32(p_DtsecMemMap->imask, GET_UINT32(p_DtsecMemMap->imask) | IMASK_MSROEN); + p_Dtsec->exceptions |= IMASK_MSROEN; + break; + case(e_FM_MAC_FULL_STATISTICS): + WRITE_UINT32(p_DtsecMemMap->cam1,0); + WRITE_UINT32(p_DtsecMemMap->cam2,0); + WRITE_UINT32(p_DtsecMemMap->ecntrl, GET_UINT32(p_DtsecMemMap->ecntrl) | ECNTRL_STEN); + WRITE_UINT32(p_DtsecMemMap->imask, GET_UINT32(p_DtsecMemMap->imask) | IMASK_MSROEN); + p_Dtsec->exceptions |= IMASK_MSROEN; + break; + default: + RETURN_ERROR(MINOR, E_INVALID_SELECTION, NO_MSG); + } + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error DtsecAdjustLink(t_Handle h_Dtsec, e_EnetSpeed speed, bool fullDuplex) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + t_DtsecMemMap *p_DtsecMemMap; + uint32_t tmpReg32; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Dtsec->p_DtsecDriverParam, E_INVALID_HANDLE); + p_DtsecMemMap = p_Dtsec->p_MemMap; + SANITY_CHECK_RETURN_ERROR(p_DtsecMemMap, E_INVALID_HANDLE); + + if (!fullDuplex && + ((speed >= e_ENET_SPEED_1000) || + (ENET_INTERFACE_FROM_MODE(p_Dtsec->enetMode) == e_ENET_IF_SGMII))) + RETURN_ERROR(MAJOR, E_CONFLICT, ("Ethernet interface does not support Half Duplex mode")); + + p_Dtsec->enetMode = MAKE_ENET_MODE(ENET_INTERFACE_FROM_MODE(p_Dtsec->enetMode), speed); + p_Dtsec->halfDuplex = !fullDuplex; + + tmpReg32 = GET_UINT32(p_DtsecMemMap->maccfg2); + if(p_Dtsec->halfDuplex) + tmpReg32 &= ~MACCFG2_FULL_DUPLEX; + else + tmpReg32 |= MACCFG2_FULL_DUPLEX; + + tmpReg32 &= ~(MACCFG2_NIBBLE_MODE | MACCFG2_BYTE_MODE); + if((p_Dtsec->enetMode == e_ENET_MODE_RGMII_10) || + (p_Dtsec->enetMode == e_ENET_MODE_RGMII_100)|| + (p_Dtsec->enetMode == e_ENET_MODE_SGMII_10) || + (p_Dtsec->enetMode == e_ENET_MODE_SGMII_100)) + tmpReg32 |= MACCFG2_NIBBLE_MODE; + else if((p_Dtsec->enetMode == e_ENET_MODE_RGMII_1000) || + (p_Dtsec->enetMode == e_ENET_MODE_SGMII_1000)|| + (p_Dtsec->enetMode == e_ENET_MODE_GMII_1000)) + tmpReg32 |= MACCFG2_BYTE_MODE; + WRITE_UINT32(p_DtsecMemMap->maccfg2, tmpReg32); + + tmpReg32 = GET_UINT32(p_DtsecMemMap->ecntrl); + if (!(tmpReg32 & ECNTRL_CFG_RO)) + { + if ((p_Dtsec->enetMode == e_ENET_MODE_RGMII_100) || + (p_Dtsec->enetMode == e_ENET_MODE_SGMII_100)) + tmpReg32 |= ECNTRL_R100M; + else + tmpReg32 &= ~ECNTRL_R100M; + WRITE_UINT32(p_DtsecMemMap->ecntrl, tmpReg32); + } + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error DtsecGetId(t_Handle h_Dtsec, uint32_t *macId) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Dtsec->p_DtsecDriverParam, E_INVALID_HANDLE); + + *macId = p_Dtsec->macId; + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error DtsecGetVersion(t_Handle h_Dtsec, uint32_t *macVersion) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + t_DtsecMemMap *p_DtsecMemMap; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Dtsec->p_DtsecDriverParam, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_MemMap, E_NULL_POINTER); + + p_DtsecMemMap = p_Dtsec->p_MemMap; + *macVersion = GET_UINT32(p_DtsecMemMap->tsec_id1); + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error DtsecSetException(t_Handle h_Dtsec, e_FmMacExceptions exception, bool enable) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + uint32_t tmpReg, bitMask = 0; + t_DtsecMemMap *p_DtsecMemMap; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Dtsec->p_DtsecDriverParam, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_MemMap, E_NULL_POINTER); + + p_DtsecMemMap = p_Dtsec->p_MemMap; + + if(exception != e_FM_MAC_EX_1G_1588_TS_RX_ERR) + { + GET_EXCEPTION_FLAG(bitMask, exception); + if(bitMask) + { + if (enable) + p_Dtsec->exceptions |= bitMask; + else + p_Dtsec->exceptions &= ~bitMask; + } + else + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Undefined exception")); + + tmpReg = GET_UINT32(p_DtsecMemMap->imask); + if(enable) + tmpReg |= bitMask; + else + tmpReg &= ~bitMask; + WRITE_UINT32(p_DtsecMemMap->imask, tmpReg); + + /* warn if MIB OVFL is disabled and statistic gathering is enabled */ + if((exception == e_FM_MAC_EX_1G_RX_MIB_CNT_OVFL) && + !enable && + (p_Dtsec->statisticsLevel != e_FM_MAC_NONE_STATISTICS)) + DBG(WARNING, ("Disabled MIB counters overflow exceptions. Counters value may be inaccurate due to unregistered overflow")); + + } + else + { + if(!p_Dtsec->ptpTsuEnabled) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Exception valid for 1588 only")); + tmpReg = GET_UINT32(p_DtsecMemMap->tmr_pemask); + switch(exception){ + case(e_FM_MAC_EX_1G_1588_TS_RX_ERR): + if(enable) + { + p_Dtsec->enTsuErrExeption = TRUE; + WRITE_UINT32(p_DtsecMemMap->tmr_pemask, tmpReg | PEMASK_TSRE); + } + else + { + p_Dtsec->enTsuErrExeption = FALSE; + WRITE_UINT32(p_DtsecMemMap->tmr_pemask, tmpReg & ~PEMASK_TSRE); + } + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Undefined exception")); + } + } + + return E_OK; +} + +/* ........................................................................... */ + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) +static t_Error DtsecDumpRegs(t_Handle h_Dtsec) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + int i = 0; + + DECLARE_DUMP; + + if (p_Dtsec->p_MemMap) + { + + DUMP_TITLE(p_Dtsec->p_MemMap, ("MAC %d: ", p_Dtsec->macId)); + DUMP_VAR(p_Dtsec->p_MemMap, tsec_id1); + DUMP_VAR(p_Dtsec->p_MemMap, tsec_id2); + DUMP_VAR(p_Dtsec->p_MemMap, ievent); + DUMP_VAR(p_Dtsec->p_MemMap, imask); + DUMP_VAR(p_Dtsec->p_MemMap, edis); + DUMP_VAR(p_Dtsec->p_MemMap, ecntrl); + DUMP_VAR(p_Dtsec->p_MemMap, ptv); + DUMP_VAR(p_Dtsec->p_MemMap, tmr_ctrl); + DUMP_VAR(p_Dtsec->p_MemMap, tmr_pevent); + DUMP_VAR(p_Dtsec->p_MemMap, tmr_pemask); + DUMP_VAR(p_Dtsec->p_MemMap, tctrl); + DUMP_VAR(p_Dtsec->p_MemMap, rctrl); + DUMP_VAR(p_Dtsec->p_MemMap, maccfg1); + DUMP_VAR(p_Dtsec->p_MemMap, maccfg2); + DUMP_VAR(p_Dtsec->p_MemMap, ipgifg); + DUMP_VAR(p_Dtsec->p_MemMap, hafdup); + DUMP_VAR(p_Dtsec->p_MemMap, maxfrm); + + DUMP_VAR(p_Dtsec->p_MemMap, macstnaddr1); + DUMP_VAR(p_Dtsec->p_MemMap, macstnaddr2); + + DUMP_SUBSTRUCT_ARRAY(i, 8) + { + DUMP_VAR(p_Dtsec->p_MemMap, macaddr[i].exact_match1); + DUMP_VAR(p_Dtsec->p_MemMap, macaddr[i].exact_match2); + } + } + + return E_OK; +} +#endif /* (defined(DEBUG_ERRORS) && ... */ + + +/*****************************************************************************/ +/* FM Init & Free API */ +/*****************************************************************************/ + +/* .............................................................................. */ + +static t_Error DtsecInit(t_Handle h_Dtsec) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + t_DtsecDriverParam *p_DtsecDriverParam; + t_DtsecMemMap *p_DtsecMemMap; + int i; + uint32_t tmpReg32; + uint64_t addr; + t_Error err; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_DtsecDriverParam, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_MemMap, E_INVALID_STATE); + + CHECK_INIT_PARAMETERS(p_Dtsec, CheckInitParameters); + + p_DtsecDriverParam = p_Dtsec->p_DtsecDriverParam; + p_Dtsec->halfDuplex = p_DtsecDriverParam->halfDuplex; + p_Dtsec->debugMode = p_DtsecDriverParam->debugMode; + p_DtsecMemMap = p_Dtsec->p_MemMap; + + /*************dtsec_id2******************/ + tmpReg32 = GET_UINT32(p_DtsecMemMap->tsec_id2); + + if ((p_Dtsec->enetMode == e_ENET_MODE_RGMII_10) || + (p_Dtsec->enetMode == e_ENET_MODE_RGMII_100) || + (p_Dtsec->enetMode == e_ENET_MODE_RGMII_1000) || + (p_Dtsec->enetMode == e_ENET_MODE_RMII_10) || + (p_Dtsec->enetMode == e_ENET_MODE_RMII_100)) + if(tmpReg32 & ID2_INT_REDUCED_OFF) + { + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("no support for reduced interface in current DTSEC version")); + } + + if ((p_Dtsec->enetMode == e_ENET_MODE_SGMII_10) || + (p_Dtsec->enetMode == e_ENET_MODE_SGMII_100) || + (p_Dtsec->enetMode == e_ENET_MODE_SGMII_1000)|| + (p_Dtsec->enetMode == e_ENET_MODE_MII_10) || + (p_Dtsec->enetMode == e_ENET_MODE_MII_100)) + if(tmpReg32 & ID2_INT_NORMAL_OFF) + { + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("no support for normal interface in current DTSEC version")); + } + /*************dtsec_id2******************/ + + /***************EDIS************************/ + WRITE_UINT32(p_DtsecMemMap->edis, p_DtsecDriverParam->errorDisabled); + /***************EDIS************************/ + + /***************ECNTRL************************/ + tmpReg32 = 0; + if ((p_Dtsec->enetMode == e_ENET_MODE_RGMII_10) || + (p_Dtsec->enetMode == e_ENET_MODE_RGMII_100) || + (p_Dtsec->enetMode == e_ENET_MODE_RGMII_1000) || + (p_Dtsec->enetMode == e_ENET_MODE_GMII_1000)) + tmpReg32 |= ECNTRL_GMIIM; + if ((p_Dtsec->enetMode == e_ENET_MODE_SGMII_10) || + (p_Dtsec->enetMode == e_ENET_MODE_SGMII_100) || + (p_Dtsec->enetMode == e_ENET_MODE_SGMII_1000)) + tmpReg32 |= (ECNTRL_SGMIIM | ECNTRL_TBIM); + if (p_Dtsec->enetMode == e_ENET_MODE_QSGMII_1000) + tmpReg32 |= (ECNTRL_SGMIIM | ECNTRL_TBIM | ECNTRL_QSGMIIM); + if ((p_Dtsec->enetMode == e_ENET_MODE_RGMII_1000) || + (p_Dtsec->enetMode == e_ENET_MODE_RGMII_10)|| + (p_Dtsec->enetMode == e_ENET_MODE_RGMII_100)) + tmpReg32 |= ECNTRL_RPM; + if ((p_Dtsec->enetMode == e_ENET_MODE_RGMII_100) || + (p_Dtsec->enetMode == e_ENET_MODE_SGMII_100) || + (p_Dtsec->enetMode == e_ENET_MODE_RMII_100)) + tmpReg32 |= ECNTRL_R100M; + if ((p_Dtsec->enetMode == e_ENET_MODE_RMII_10) || (p_Dtsec->enetMode == e_ENET_MODE_RMII_100)) + tmpReg32 |= ECNTRL_RMM; + WRITE_UINT32(p_DtsecMemMap->ecntrl, tmpReg32); + /***************ECNTRL************************/ + + /***************PTV************************/ + tmpReg32 = 0; +#ifdef FM_SHORT_PAUSE_TIME_ERRATA_DTSEC1 + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_Dtsec->fmMacControllerDriver.h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + p_DtsecDriverParam->pauseTime += 2; + } +#endif /* FM_SHORT_PAUSE_TIME_ERRATA_DTSEC1 */ + if (p_DtsecDriverParam->pauseTime) + tmpReg32 |= (uint32_t)p_DtsecDriverParam->pauseTime; + + if (p_DtsecDriverParam->pauseExtended) + tmpReg32 |= ((uint32_t)p_DtsecDriverParam->pauseExtended) << PTV_PTE_OFST; + WRITE_UINT32(p_DtsecMemMap->ptv, tmpReg32); + /***************PTV************************/ + + /***************TCTRL************************/ + tmpReg32 = 0; + if(p_DtsecDriverParam->halfDuplex) + { + if(p_DtsecDriverParam->halfDulexFlowControlEn) + tmpReg32 |= TCTRL_THDF; + } + else + { + if(p_DtsecDriverParam->txTimeStampEn) + tmpReg32 |= TCTRL_TTSE; + } + WRITE_UINT32(p_DtsecMemMap->tctrl, tmpReg32); + /***************TCTRL************************/ + + /***************RCTRL************************/ + tmpReg32 = 0; + if (p_DtsecDriverParam->packetAlignmentPadding) + tmpReg32 |= ((uint32_t)(0x0000001f & p_DtsecDriverParam->packetAlignmentPadding)) << 16; + if (p_DtsecDriverParam->controlFrameAccept) + tmpReg32 |= RCTRL_CFA; + if (p_DtsecDriverParam->groupHashExtend) + tmpReg32 |= RCTRL_GHTX; + if(p_DtsecDriverParam->rxTimeStampEn) + tmpReg32 |= RCTRL_RTSE; + if (p_DtsecDriverParam->broadcReject) + tmpReg32 |= RCTRL_BC_REJ; + if (p_DtsecDriverParam->rxShortFrame) + tmpReg32 |= RCTRL_RSF; + if (p_DtsecDriverParam->promiscuousEnable) + tmpReg32 |= RCTRL_PROM; + if (p_DtsecDriverParam->exactMatch) + tmpReg32 |= RCTRL_EMEN; + + WRITE_UINT32(p_DtsecMemMap->rctrl, tmpReg32); + /***************RCTRL************************/ + + /* Assign a Phy Address to the TBI (TBIPA). */ + /* Done also in case that TBI is not selected to avoid */ + /* conflict with the external PHYs Physical address */ + WRITE_UINT32(p_DtsecMemMap->tbipa, p_DtsecDriverParam->tbiPhyAddr); + + /* Reset the management interface */ + WRITE_UINT32(p_Dtsec->p_MiiMemMap->miimcfg, MIIMCFG_RESET_MGMT); + WRITE_UINT32(p_Dtsec->p_MiiMemMap->miimcfg, ~MIIMCFG_RESET_MGMT); + /* Setup the MII Mgmt clock speed */ + WRITE_UINT32(p_Dtsec->p_MiiMemMap->miimcfg, + (uint32_t)GetMiiDiv((int32_t)(((p_Dtsec->fmMacControllerDriver.clkFreq*10)/2)/8))); + + if(p_Dtsec->enetMode == e_ENET_MODE_SGMII_1000) + { + uint16_t tmpReg16; + + /* Configure the TBI PHY Control Register */ + tmpReg16 = PHY_TBICON_SPEED2 | PHY_TBICON_SRESET; + + DTSEC_MII_WritePhyReg(p_Dtsec, p_DtsecDriverParam->tbiPhyAddr, 17, tmpReg16); + + tmpReg16 = PHY_TBICON_SPEED2; + + DTSEC_MII_WritePhyReg(p_Dtsec, p_DtsecDriverParam->tbiPhyAddr, 17, tmpReg16); + + if(!p_DtsecDriverParam->halfDuplex) + tmpReg16 |= PHY_CR_FULLDUPLEX | 0x8000 | PHY_CR_ANE; + + DTSEC_MII_WritePhyReg(p_Dtsec, p_DtsecDriverParam->tbiPhyAddr, 0, tmpReg16); + + tmpReg16 = 0x01a0; + DTSEC_MII_WritePhyReg(p_Dtsec, p_DtsecDriverParam->tbiPhyAddr, 4, tmpReg16); + + tmpReg16 = 0x1340; + DTSEC_MII_WritePhyReg(p_Dtsec, p_DtsecDriverParam->tbiPhyAddr, 0, tmpReg16); + } + + /***************TMR_CTL************************/ + WRITE_UINT32(p_DtsecMemMap->tmr_ctrl, 0); + + if(p_Dtsec->ptpTsuEnabled) + { + tmpReg32 = 0; + if (p_Dtsec->enTsuErrExeption) + tmpReg32 |= PEMASK_TSRE; + WRITE_UINT32(p_DtsecMemMap->tmr_pemask, tmpReg32); + WRITE_UINT32(p_DtsecMemMap->tmr_pevent, tmpReg32); + } + + /***************DEBUG************************/ + tmpReg32 = 0; + if(p_DtsecDriverParam->debugMode) + WRITE_UINT32(p_DtsecMemMap->tsec_id1, TSEC_ID1_DEBUG); + /***************DEBUG************************/ + + /***************MACCFG1***********************/ + WRITE_UINT32(p_DtsecMemMap->maccfg1, MACCFG1_SOFT_RESET); + WRITE_UINT32(p_DtsecMemMap->maccfg1, 0); + tmpReg32 = 0; + if(p_DtsecDriverParam->loopback) + tmpReg32 |= MACCFG1_LOOPBACK; + if(p_DtsecDriverParam->actOnRxPauseFrame) + tmpReg32 |= MACCFG1_RX_FLOW; + if(p_DtsecDriverParam->actOnTxPauseFrame) + tmpReg32 |= MACCFG1_TX_FLOW; + WRITE_UINT32(p_DtsecMemMap->maccfg1, tmpReg32); + /***************MACCFG1***********************/ + + /***************MACCFG2***********************/ + tmpReg32 = 0; + if( (p_Dtsec->enetMode == e_ENET_MODE_RMII_10) || + (p_Dtsec->enetMode == e_ENET_MODE_RMII_100) || + (p_Dtsec->enetMode == e_ENET_MODE_MII_10) || + (p_Dtsec->enetMode == e_ENET_MODE_MII_100) || + (p_Dtsec->enetMode == e_ENET_MODE_RGMII_10) || + (p_Dtsec->enetMode == e_ENET_MODE_RGMII_100)|| + (p_Dtsec->enetMode == e_ENET_MODE_SGMII_10) || + (p_Dtsec->enetMode == e_ENET_MODE_SGMII_100)) + tmpReg32 |= MACCFG2_NIBBLE_MODE; + else if((p_Dtsec->enetMode == e_ENET_MODE_RGMII_1000) || + (p_Dtsec->enetMode == e_ENET_MODE_SGMII_1000)|| + (p_Dtsec->enetMode == e_ENET_MODE_GMII_1000)|| + (p_Dtsec->enetMode == e_ENET_MODE_QSGMII_1000)) + tmpReg32 |= MACCFG2_BYTE_MODE; + + tmpReg32 |= (((uint32_t)p_DtsecDriverParam->preambleLength) & 0x0000000f)<< PREAMBLE_LENGTH_SHIFT; + + if(p_DtsecDriverParam->preambleRxEn) + tmpReg32 |= MACCFG2_PRE_AM_Rx_EN; + if(p_DtsecDriverParam->preambleTxEn) + tmpReg32 |= MACCFG2_PRE_AM_Tx_EN; + if(p_DtsecDriverParam->lengthCheckEnable) + tmpReg32 |= MACCFG2_LENGTH_CHECK; + if(p_DtsecDriverParam->padAndCrcEnable) + tmpReg32 |= MACCFG2_PAD_CRC_EN; + if(p_DtsecDriverParam->crcEnable) + tmpReg32 |= MACCFG2_CRC_EN; + if(!p_DtsecDriverParam->halfDuplex) + tmpReg32 |= MACCFG2_FULL_DUPLEX; + WRITE_UINT32(p_DtsecMemMap->maccfg2, tmpReg32); + /***************MACCFG2***********************/ + + /***************IPGIFG************************/ + tmpReg32 = 0; + ASSERT_COND(p_DtsecDriverParam->nonBackToBackIpg1 <= p_DtsecDriverParam->nonBackToBackIpg2); + tmpReg32 = (uint32_t)((((uint32_t)p_DtsecDriverParam->nonBackToBackIpg1 << + IPGIFG_NON_BACK_TO_BACK_IPG_1_SHIFT) & IPGIFG_NON_BACK_TO_BACK_IPG_1) | + (((uint32_t)p_DtsecDriverParam->nonBackToBackIpg2 << + IPGIFG_NON_BACK_TO_BACK_IPG_2_SHIFT) & IPGIFG_NON_BACK_TO_BACK_IPG_2) | + (((uint32_t)p_DtsecDriverParam->minIfgEnforcement << + IPGIFG_MIN_IFG_ENFORCEMENT_SHIFT) & IPGIFG_MIN_IFG_ENFORCEMENT) | + ((uint32_t)p_DtsecDriverParam->backToBackIpg & IPGIFG_BACK_TO_BACK_IPG)); + WRITE_UINT32(p_DtsecMemMap->ipgifg, tmpReg32); + /***************IPGIFG************************/ + + /***************HAFDUP************************/ + tmpReg32 = 0; + if(p_DtsecDriverParam->alternateBackoffEnable) + { + tmpReg32 = (uint32_t) (HAFDUP_ALT_BEB | (((uint32_t)p_DtsecDriverParam->alternateBackoffVal & 0x0000000f) << + HAFDUP_ALTERNATE_BEB_TRUNCATION_SHIFT)); + } + + if(p_DtsecDriverParam->backPressureNoBackoff) + tmpReg32 |= HAFDUP_BP_NO_BACKOFF; + if(p_DtsecDriverParam->noBackoff) + tmpReg32 |= HAFDUP_NO_BACKOFF; + if(p_DtsecDriverParam->excessDefer) + tmpReg32 |= HAFDUP_EXCESS_DEFER; + tmpReg32 |= (((uint32_t)p_DtsecDriverParam->maxRetransmission << + HAFDUP_RETRANSMISSION_MAX_SHIFT )& HAFDUP_RETRANSMISSION_MAX); + tmpReg32|= ((uint32_t)p_DtsecDriverParam->collisionWindow & HAFDUP_COLLISION_WINDOW); + + WRITE_UINT32(p_DtsecMemMap->hafdup, tmpReg32); + /***************HAFDUP************************/ + + /***************MAXFRM************************/ + /* Initialize MAXFRM */ + WRITE_UINT32(p_DtsecMemMap->maxfrm, + p_DtsecDriverParam->maxFrameLength); + err = FmSetMacMaxFrame(p_Dtsec->fmMacControllerDriver.h_Fm, + e_FM_MAC_1G, + p_Dtsec->fmMacControllerDriver.macId, + p_DtsecDriverParam->maxFrameLength); + if (err) + RETURN_ERROR(MAJOR, err, NO_MSG); + /***************MAXFRM************************/ + + /***************CAM1************************/ + WRITE_UINT32(p_DtsecMemMap->cam1,0xffffffff); + WRITE_UINT32(p_DtsecMemMap->cam2,0xffffffff); + + /***************IMASK************************/ + WRITE_UINT32(p_DtsecMemMap->imask, p_Dtsec->exceptions); + /***************IMASK************************/ + + /***************IEVENT************************/ + WRITE_UINT32(p_DtsecMemMap->ievent, EVENTS_MASK); + + /***************MACSTNADDR1/2*****************/ + /* Initialize MAC Station Address registers (1 & 2) */ + /* Station address have to be swapped (big endian to little endian */ + addr = p_Dtsec->addr; + + tmpReg32 = (uint32_t)(addr); + SwapUint32P(&tmpReg32); + WRITE_UINT32(p_DtsecMemMap->macstnaddr1, tmpReg32); + + tmpReg32 = (uint32_t)(addr>>32); + SwapUint32P(&tmpReg32); + WRITE_UINT32(p_DtsecMemMap->macstnaddr2, tmpReg32); + /***************MACSTNADDR1/2*****************/ + + /***************DEBUG*****************/ + WRITE_UINT32(p_DtsecMemMap->tx_threshold, (uint32_t)(p_DtsecDriverParam->fifoTxThr & 0x7f)); + WRITE_UINT32(p_DtsecMemMap->tx_watermark_high, (uint32_t)(p_DtsecDriverParam->fifoTxWatermarkH & 0x7f)); + WRITE_UINT32(p_DtsecMemMap->rx_watermark_low, (uint32_t)(p_DtsecDriverParam->fifoRxWatermarkL & 0x7f)); + /***************DEBUG*****************/ + + /*****************HASH************************/ + for(i=0 ; iigaddr[i], 0); + /* Initialize GADDRx */ + WRITE_UINT32(p_DtsecMemMap->gaddr[i], 0); + } + + p_Dtsec->p_MulticastAddrHash = AllocHashTable(HASH_TABLE_SIZE); + if(!p_Dtsec->p_MulticastAddrHash) + { + FreeInitResources(p_Dtsec); + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("MC hash table is FAILED")); + } + + p_Dtsec->p_UnicastAddrHash = AllocHashTable(HASH_TABLE_SIZE); + if(!p_Dtsec->p_UnicastAddrHash) + { + FreeInitResources(p_Dtsec); + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("UC hash table is FAILED")); + } + + /* register err intr handler for dtsec to FPM (err)*/ + FmRegisterIntr(p_Dtsec->fmMacControllerDriver.h_Fm, e_FM_MOD_1G_MAC, p_Dtsec->macId, e_FM_INTR_TYPE_ERR, DtsecErrException , p_Dtsec); + /* register 1588 intr handler for TMR to FPM (normal)*/ + FmRegisterIntr(p_Dtsec->fmMacControllerDriver.h_Fm, e_FM_MOD_1G_MAC_TMR, p_Dtsec->macId, e_FM_INTR_TYPE_NORMAL, Dtsec1588Exception , p_Dtsec); + /* register normal intr handler for dtsec to main interrupt controller. */ + if (p_Dtsec->mdioIrq != NO_IRQ) + { + XX_SetIntr(p_Dtsec->mdioIrq, DtsecException, p_Dtsec); + XX_EnableIntr(p_Dtsec->mdioIrq); + } + + XX_Free(p_DtsecDriverParam); + p_Dtsec->p_DtsecDriverParam = NULL; + + err = DtsecSetStatistics(p_Dtsec, e_FM_MAC_FULL_STATISTICS); + if(err) + { + FreeInitResources(p_Dtsec); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + return E_OK; +} + +/* ........................................................................... */ + +static t_Error DtsecFree(t_Handle h_Dtsec) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + + FreeInitResources(p_Dtsec); + + if (p_Dtsec->p_DtsecDriverParam) + { + XX_Free(p_Dtsec->p_DtsecDriverParam); + p_Dtsec->p_DtsecDriverParam = NULL; + } + XX_Free (h_Dtsec); + + return E_OK; +} + +/* .............................................................................. */ + +static void InitFmMacControllerDriver(t_FmMacControllerDriver *p_FmMacControllerDriver) +{ + p_FmMacControllerDriver->f_FM_MAC_Init = DtsecInit; + p_FmMacControllerDriver->f_FM_MAC_Free = DtsecFree; + + p_FmMacControllerDriver->f_FM_MAC_SetStatistics = DtsecSetStatistics; + p_FmMacControllerDriver->f_FM_MAC_ConfigLoopback = DtsecConfigLoopback; + p_FmMacControllerDriver->f_FM_MAC_ConfigMaxFrameLength = DtsecConfigMaxFrameLength; + + p_FmMacControllerDriver->f_FM_MAC_ConfigWan = NULL; /* Not supported on dTSEC */ + + p_FmMacControllerDriver->f_FM_MAC_ConfigPadAndCrc = DtsecConfigPadAndCrc; + p_FmMacControllerDriver->f_FM_MAC_ConfigHalfDuplex = DtsecConfigHalfDuplex; + p_FmMacControllerDriver->f_FM_MAC_ConfigLengthCheck = DtsecConfigLengthCheck; + p_FmMacControllerDriver->f_FM_MAC_ConfigException = DtsecConfigException; + + p_FmMacControllerDriver->f_FM_MAC_Enable = DtsecEnable; + p_FmMacControllerDriver->f_FM_MAC_Disable = DtsecDisable; + + p_FmMacControllerDriver->f_FM_MAC_SetException = DtsecSetException; + + p_FmMacControllerDriver->f_FM_MAC_SetPromiscuous = DtsecSetPromiscuous; + p_FmMacControllerDriver->f_FM_MAC_AdjustLink = DtsecAdjustLink; + + p_FmMacControllerDriver->f_FM_MAC_Enable1588TimeStamp = DtsecEnable1588TimeStamp; + p_FmMacControllerDriver->f_FM_MAC_Disable1588TimeStamp = DtsecDisable1588TimeStamp; + + p_FmMacControllerDriver->f_FM_MAC_SetTxAutoPauseFrames = DtsecTxMacPause; + p_FmMacControllerDriver->f_FM_MAC_SetRxIgnorePauseFrames = DtsecRxIgnoreMacPause; + + p_FmMacControllerDriver->f_FM_MAC_ResetCounters = DtsecResetCounters; + p_FmMacControllerDriver->f_FM_MAC_GetStatistics = DtsecGetStatistics; + + p_FmMacControllerDriver->f_FM_MAC_ModifyMacAddr = DtsecModifyMacAddress; + p_FmMacControllerDriver->f_FM_MAC_AddHashMacAddr = DtsecAddHashMacAddress; + p_FmMacControllerDriver->f_FM_MAC_RemoveHashMacAddr = DtsecDelHashMacAddress; + p_FmMacControllerDriver->f_FM_MAC_AddExactMatchMacAddr = DtsecAddExactMatchMacAddress; + p_FmMacControllerDriver->f_FM_MAC_RemovelExactMatchMacAddr = DtsecDelExactMatchMacAddress; + p_FmMacControllerDriver->f_FM_MAC_GetId = DtsecGetId; + p_FmMacControllerDriver->f_FM_MAC_GetVersion = DtsecGetVersion; + p_FmMacControllerDriver->f_FM_MAC_GetMaxFrameLength = DtsecGetMaxFrameLength; + + p_FmMacControllerDriver->f_FM_MAC_MII_WritePhyReg = DTSEC_MII_WritePhyReg; + p_FmMacControllerDriver->f_FM_MAC_MII_ReadPhyReg = DTSEC_MII_ReadPhyReg; + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) + p_FmMacControllerDriver->f_FM_MAC_DumpRegs = DtsecDumpRegs; +#endif /* (defined(DEBUG_ERRORS) && ... */ +} + + +/*****************************************************************************/ +/* dTSEC Config Main Entry */ +/*****************************************************************************/ + +/* .............................................................................. */ + +t_Handle DTSEC_Config(t_FmMacParams *p_FmMacParam) +{ + t_Dtsec *p_Dtsec; + t_DtsecDriverParam *p_DtsecDriverParam; + uintptr_t baseAddr; + uint8_t i; + + SANITY_CHECK_RETURN_VALUE(p_FmMacParam, E_NULL_POINTER, NULL); + + baseAddr = p_FmMacParam->baseAddr; + /* allocate memory for the UCC GETH data structure. */ + p_Dtsec = (t_Dtsec *) XX_Malloc(sizeof(t_Dtsec)); + if (!p_Dtsec) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("dTSEC driver structure")); + return NULL; + } + /* Zero out * p_Dtsec */ + memset(p_Dtsec, 0, sizeof(t_Dtsec)); + InitFmMacControllerDriver(&p_Dtsec->fmMacControllerDriver); + + /* allocate memory for the dTSEC driver parameters data structure. */ + p_DtsecDriverParam = (t_DtsecDriverParam *) XX_Malloc(sizeof(t_DtsecDriverParam)); + if (!p_DtsecDriverParam) + { + XX_Free(p_Dtsec); + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("dTSEC driver parameters")); + return NULL; + } + /* Zero out */ + memset(p_DtsecDriverParam, 0, sizeof(t_DtsecDriverParam)); + + /* Plant parameter structure pointer */ + p_Dtsec->p_DtsecDriverParam = p_DtsecDriverParam; + + SetDefaultParam(p_DtsecDriverParam); + + for (i=0; i < sizeof(p_FmMacParam->addr); i++) + p_Dtsec->addr |= ((uint64_t)p_FmMacParam->addr[i] << ((5-i) * 8)); + + p_Dtsec->p_MemMap = (t_DtsecMemMap *)UINT_TO_PTR(baseAddr); + p_Dtsec->p_MiiMemMap = (t_MiiAccessMemMap *)UINT_TO_PTR(baseAddr + DTSEC_TO_MII_OFFSET); + p_Dtsec->enetMode = p_FmMacParam->enetMode; + p_Dtsec->macId = p_FmMacParam->macId; + p_Dtsec->exceptions = DEFAULT_exceptions; + p_Dtsec->mdioIrq = p_FmMacParam->mdioIrq; + p_Dtsec->f_Exception = p_FmMacParam->f_Exception; + p_Dtsec->f_Event = p_FmMacParam->f_Event; + p_Dtsec->h_App = p_FmMacParam->h_App; + + return p_Dtsec; +} --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/dtsec.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/dtsec.h @@ -0,0 +1,634 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 dtsec.h + + @Description FM dTSEC ... +*//***************************************************************************/ +#ifndef __DTSEC_H +#define __DTSEC_H + +#include "std_ext.h" +#include "error_ext.h" +#include "list_ext.h" +#include "dtsec_mii_acc.h" +#include "fm_mac.h" + + +#define PEMASK_TSRE 0x00010000 + +#define IMASK_BREN 0x80000000 +#define IMASK_RXCEN 0x40000000 +#define IMASK_MSROEN 0x04000000 +#define IMASK_GTSCEN 0x02000000 +#define IMASK_BTEN 0x01000000 +#define IMASK_TXCEN 0x00800000 +#define IMASK_TXEEN 0x00400000 +#define IMASK_LCEN 0x00040000 +#define IMASK_CRLEN 0x00020000 +#define IMASK_XFUNEN 0x00010000 +#define IMASK_ABRTEN 0x00008000 +#define IMASK_IFERREN 0x00004000 +#define IMASK_MAGEN 0x00000800 +#define IMASK_MMRDEN 0x00000400 +#define IMASK_MMWREN 0x00000200 +#define IMASK_GRSCEN 0x00000100 +#define IMASK_TDPEEN 0x00000002 +#define IMASK_RDPEEN 0x00000001 + +#define EVENTS_MASK ((uint32_t)(IMASK_BREN | \ + IMASK_RXCEN | \ + IMASK_MSROEN | \ + IMASK_GTSCEN | \ + IMASK_BTEN | \ + IMASK_TXCEN | \ + IMASK_TXEEN | \ + IMASK_ABRTEN | \ + IMASK_LCEN | \ + IMASK_CRLEN | \ + IMASK_XFUNEN | \ + IMASK_IFERREN | \ + IMASK_MAGEN | \ + IMASK_MMRDEN | \ + IMASK_MMWREN | \ + IMASK_GRSCEN | \ + IMASK_TDPEEN | \ + IMASK_RDPEEN)) + +#define GET_EXCEPTION_FLAG(bitMask, exception) switch(exception){ \ + case e_FM_MAC_EX_1G_BAB_RX: \ + bitMask = IMASK_BREN; break; \ + case e_FM_MAC_EX_1G_RX_CTL: \ + bitMask = IMASK_RXCEN; break; \ + case e_FM_MAC_EX_1G_GRATEFUL_TX_STP_COMPLET: \ + bitMask = IMASK_GTSCEN ; break; \ + case e_FM_MAC_EX_1G_BAB_TX: \ + bitMask = IMASK_BTEN ; break; \ + case e_FM_MAC_EX_1G_TX_CTL: \ + bitMask = IMASK_TXCEN ; break; \ + case e_FM_MAC_EX_1G_TX_ERR: \ + bitMask = IMASK_TXEEN ; break; \ + case e_FM_MAC_EX_1G_LATE_COL: \ + bitMask = IMASK_LCEN ; break; \ + case e_FM_MAC_EX_1G_COL_RET_LMT: \ + bitMask = IMASK_CRLEN ; break; \ + case e_FM_MAC_EX_1G_TX_FIFO_UNDRN: \ + bitMask = IMASK_XFUNEN ; break; \ + case e_FM_MAC_EX_1G_MAG_PCKT: \ + bitMask = IMASK_MAGEN ; break; \ + case e_FM_MAC_EX_1G_MII_MNG_RD_COMPLET: \ + bitMask = IMASK_MMRDEN; break; \ + case e_FM_MAC_EX_1G_MII_MNG_WR_COMPLET: \ + bitMask = IMASK_MMWREN ; break; \ + case e_FM_MAC_EX_1G_GRATEFUL_RX_STP_COMPLET: \ + bitMask = IMASK_GRSCEN; break; \ + case e_FM_MAC_EX_1G_TX_DATA_ERR: \ + bitMask = IMASK_TDPEEN; break; \ + case e_FM_MAC_EX_1G_RX_MIB_CNT_OVFL: \ + bitMask = IMASK_MSROEN ; break; \ + default: bitMask = 0;break;} + + +#define MAX_PACKET_ALIGNMENT 31 +#define MAX_INTER_PACKET_GAP 0x7f +#define MAX_INTER_PALTERNATE_BEB 0x0f +#define MAX_RETRANSMISSION 0x0f +#define MAX_COLLISION_WINDOW 0x03ff + + +/********************* From mac ext ******************************************/ +typedef uint32_t t_ErrorDisable; + +#define ERROR_DISABLE_TRANSMIT 0x00400000 +#define ERROR_DISABLE_LATE_COLLISION 0x00040000 +#define ERROR_DISABLE_COLLISION_RETRY_LIMIT 0x00020000 +#define ERROR_DISABLE_TxFIFO_UNDERRUN 0x00010000 +#define ERROR_DISABLE_TxABORT 0x00008000 +#define ERROR_DISABLE_INTERFACE 0x00004000 +#define ERROR_DISABLE_TxDATA_PARITY 0x00000002 +#define ERROR_DISABLE_RxDATA_PARITY 0x00000001 + +/*****************************************************************************/ +#define DTSEC_NUM_OF_PADDRS 15 /* number of pattern match registers (entries) */ + +#define GROUP_ADDRESS 0x0000010000000000LL /* Group address bit indication */ + +#define HASH_TABLE_SIZE 256 /* Hash table size (= 32 bits * 8 regs) */ + +#define DTSEC_TO_MII_OFFSET 0x1120 /* number of pattern match registers (entries) */ + +#define DEFAULT_errorDisabled 0 +#define DEFAULT_promiscuousEnable FALSE +#define DEFAULT_pauseExtended 0x0 +#define DEFAULT_pauseTime 0xf000 +#define DEFAULT_halfDuplex FALSE +#define DEFAULT_halfDulexFlowControlEn FALSE +#define DEFAULT_txTimeStampEn FALSE +#define DEFAULT_rxTimeStampEn FALSE +#define DEFAULT_packetAlignment 0 +#define DEFAULT_controlFrameAccept FALSE +#define DEFAULT_groupHashExtend FALSE +#define DEFAULT_broadcReject FALSE +#define DEFAULT_rxShortFrame TRUE +#define DEFAULT_exactMatch FALSE +#define DEFAULT_debugMode FALSE +#define DEFAULT_loopback FALSE +#define DEFAULT_actOnRxPauseFrame TRUE +#define DEFAULT_actOnTxPauseFrame TRUE + +#define DEFAULT_PreAmLength 0x7 +#define DEFAULT_PreAmRxEn FALSE +#define DEFAULT_PreAmTxEn FALSE +#define DEFAULT_lengthCheckEnable FALSE +#define DEFAULT_padAndCrcEnable TRUE +#define DEFAULT_crcEnable FALSE + +#define DEFAULT_nonBackToBackIpg1 0x40 +#define DEFAULT_nonBackToBackIpg2 0x60 +#define DEFAULT_minIfgEnforcement 0x50 +#define DEFAULT_backToBackIpg 0x60 + +#define DEFAULT_altBackoffVal 0x0A +#define DEFAULT_altBackoffEnable FALSE +#define DEFAULT_backPressureNoBackoff FALSE +#define DEFAULT_noBackoff FALSE +#define DEFAULT_excessDefer TRUE +#define DEFAULT_maxRetransmission 0x0F +#define DEFAULT_collisionWindow 0x37 + +#define DEFAULT_maxFrameLength 0x600 + +#define DEFAULT_collisionWindow 0x37 + +#define DEFAULT_fifoTxThr 0x10 +#define DEFAULT_fifoTxWatermarkH 0x7e +#define DEFAULT_fifoRxWatermarkL 0x08 +#define DEFAULT_tbiPhyAddr 5 + +#define DEFAULT_exceptions ((uint32_t)(IMASK_BREN | \ + IMASK_RXCEN | \ + IMASK_BTEN | \ + IMASK_TXCEN | \ + IMASK_TXEEN | \ + IMASK_ABRTEN | \ + IMASK_LCEN | \ + IMASK_CRLEN | \ + IMASK_XFUNEN | \ + IMASK_IFERREN | \ + IMASK_MAGEN | \ + IMASK_TDPEEN | \ + IMASK_RDPEEN)) + + +#define MAX_PHYS 32 /* maximum number of phys */ + +#define DTSEC_ID1_ID 0xffff0000 +#define DTSEC_ID1_REV_MJ 0x0000FF00 +#define DTSEC_ID1_REV_MN 0x000000ff + +#define ID2_INT_REDUCED_OFF 0x00010000 +#define ID2_INT_NORMAL_OFF 0x00020000 + +#define ECNTRL_CLRCNT 0x00004000 +#define ECNTRL_AUTOZ 0x00002000 +#define ECNTRL_STEN 0x00001000 +#define ECNTRL_CFG_RO 0x80000000 +#define ECNTRL_GMIIM 0x00000040 +#define ECNTRL_TBIM 0x00000020 +#define ECNTRL_SGMIIM 0x00000002 +#define ECNTRL_RPM 0x00000010 +#define ECNTRL_R100M 0x00000008 +#define ECNTRL_RMM 0x00000004 +#define ECNTRL_QSGMIIM 0x00000001 + +#define TCTRL_THDF 0x00000800 +#define TCTRL_TTSE 0x00000040 +#define TCTRL_GTS 0x00000020 +#define TCTRL_TFC_PAUSE 0x00000010 + +/* PTV offsets */ +#define PTV_PTE_OFST 16 + +#define RCTRL_CFA 0x00008000 +#define RCTRL_GHTX 0x00000400 +#define RCTRL_RTSE 0x00000040 +#define RCTRL_GRS 0x00000020 +#define RCTRL_BC_REJ 0x00000010 +#define RCTRL_MPROM 0x00000008 +#define RCTRL_RSF 0x00000004 +#define RCTRL_EMEN 0x00000002 +#define RCTRL_UPROM 0x00000001 +#define RCTRL_PROM (RCTRL_UPROM | RCTRL_MPROM) + +#define TMR_CTL_ESFDP 0x00000800 +#define TMR_CTL_ESFDE 0x00000400 + +#define TSEC_ID1_DEBUG 0x00e00c00 +#define DEBUG_ENABLE 0x80000000 +#define DPERROR_Tx_ERROR_ON_SEC 0x00400000 +#define DPERROR_Tx_ERROR_ON_WRITE 0x10000000 +#define DPERROR_Rx_ERROR_ON_SEC 0x00000040 +#define DPERROR_Rx_ERROR_ON_WRITE 0x00001000 +#define DPERROR_STT 0x80000000 +#define DPERROR_STR 0x00008000 + +#define MACCFG1_SOFT_RESET 0x80000000 +#define MACCFG1_LOOPBACK 0x00000100 +#define MACCFG1_RX_FLOW 0x00000020 +#define MACCFG1_TX_FLOW 0x00000010 +#define MACCFG1_TX_EN 0x00000001 +#define MACCFG1_RX_EN 0x00000004 +#define MACCFG1_RESET_RxMC 0x00080000 +#define MACCFG1_RESET_TxMC 0x00040000 +#define MACCFG1_RESET_RxFUN 0x00020000 +#define MACCFG1_RESET_TxFUN 0x00010000 + +#define MACCFG2_NIBBLE_MODE 0x00000100 +#define MACCFG2_BYTE_MODE 0x00000200 +#define MACCFG2_PRE_AM_Rx_EN 0x00000080 +#define MACCFG2_PRE_AM_Tx_EN 0x00000040 +#define MACCFG2_LENGTH_CHECK 0x00000010 +#define MACCFG2_MAGIC_PACKET_EN 0x00000008 +#define MACCFG2_PAD_CRC_EN 0x00000004 +#define MACCFG2_CRC_EN 0x00000002 +#define MACCFG2_FULL_DUPLEX 0x00000001 + +#define PREAMBLE_LENGTH_SHIFT 12 + +#define IPGIFG_NON_BACK_TO_BACK_IPG_1_SHIFT 24 +#define IPGIFG_NON_BACK_TO_BACK_IPG_2_SHIFT 16 +#define IPGIFG_MIN_IFG_ENFORCEMENT_SHIFT 8 + +#define IPGIFG_NON_BACK_TO_BACK_IPG_1 0x7F000000 +#define IPGIFG_NON_BACK_TO_BACK_IPG_2 0x007F0000 +#define IPGIFG_MIN_IFG_ENFORCEMENT 0x0000FF00 +#define IPGIFG_BACK_TO_BACK_IPG 0x0000007F + +#define HAFDUP_ALT_BEB 0x00080000 +#define HAFDUP_BP_NO_BACKOFF 0x00040000 +#define HAFDUP_NO_BACKOFF 0x00020000 +#define HAFDUP_EXCESS_DEFER 0x00010000 +#define HAFDUP_COLLISION_WINDOW 0x000003ff + +#define HAFDUP_ALTERNATE_BEB_TRUNCATION_SHIFT 20 +#define HAFDUP_RETRANSMISSION_MAX_SHIFT 12 +#define HAFDUP_RETRANSMISSION_MAX 0x0000f000 + +#define NUM_OF_HASH_REGS 8 /* Number of hash table registers */ + +#define DEBUG_GET_FIFO_READ_INDEX 0x007f0000 +#define DEBUG_GET_FIFO_WRITE_INDEX 0x0000007f +/* Pause Time Value Register */ +#define PTV_PTE_SHIFT 16 + +#define MASK22BIT 0x003FFFFF +#define MASK16BIT 0x0000FFFF +#define MASK12BIT 0x00000FFF +#define MASK8BIT 0x000000FF + +#define VAL32BIT 0x100000000LL +#define VAL22BIT 0x00400000 +#define VAL16BIT 0x00010000 +#define VAL12BIT 0x00001000 + +/* PHY Control Register */ +#define PHY_CR_LOOPBACK 0x4000 +#define PHY_CR_SPEED0 0x2000 +#define PHY_CR_ANE 0x1000 +#define PHY_CR_FULLDUPLEX 0x0100 +#define PHY_CR_SPEED1 0x0040 + +#define PHY_TBICON_SRESET 0x8000 +#define PHY_TBICON_SPEED2 0x0020 + +/* CAR1/2 bits */ +#define CAR1_TR64 0x80000000 +#define CAR1_TR127 0x40000000 +#define CAR1_TR255 0x20000000 +#define CAR1_TR511 0x10000000 +#define CAR1_TRK1 0x08000000 +#define CAR1_TRMAX 0x04000000 +#define CAR1_TRMGV 0x02000000 + +#define CAR1_RBYT 0x00010000 +#define CAR1_RPKT 0x00008000 +#define CAR1_RMCA 0x00002000 +#define CAR1_RBCA 0x00001000 +#define CAR1_RXPF 0x00000400 +#define CAR1_RALN 0x00000100 +#define CAR1_RFLR 0x00000080 +#define CAR1_RCDE 0x00000040 +#define CAR1_RCSE 0x00000020 +#define CAR1_RUND 0x00000010 +#define CAR1_ROVR 0x00000008 +#define CAR1_RFRG 0x00000004 +#define CAR1_RJBR 0x00000002 +#define CAR1_RDRP 0x00000001 + +#define CAR2_TFCS 0x00040000 +#define CAR2_TBYT 0x00002000 +#define CAR2_TPKT 0x00001000 +#define CAR2_TMCA 0x00000800 +#define CAR2_TBCA 0x00000400 +#define CAR2_TXPF 0x00000200 +#define CAR2_TDRP 0x00000001 + +#define CAM1_ERRORS_ONLY (CAR1_RXPF | \ + CAR1_RALN | \ + CAR1_RFLR | \ + CAR1_RCDE | \ + CAR1_RCSE | \ + CAR1_RUND | \ + CAR1_ROVR | \ + CAR1_RFRG | \ + CAR1_RJBR | \ + CAR1_RDRP) + +#define CAM2_ERRORS_ONLY (CAR2_TFCS | CAR2_TXPF | CAR2_TDRP) + +typedef struct t_InternalStatistics +{ + uint64_t tr64; + uint64_t tr127; + uint64_t tr255; + uint64_t tr511; + uint64_t tr1k; + uint64_t trmax; + uint64_t trmgv; + uint64_t rfrg; + uint64_t rjbr; + uint64_t rdrp; + uint64_t raln; + uint64_t rund; + uint64_t rovr; + uint64_t rxpf; + uint64_t txpf; + uint64_t rbyt; + uint64_t rpkt; + uint64_t rmca; + uint64_t rbca; + uint64_t rflr; + uint64_t rcde; + uint64_t rcse; + uint64_t tbyt; + uint64_t tpkt; + uint64_t tmca; + uint64_t tbca; + uint64_t tdrp; + uint64_t tfcs; +} t_InternalStatistics; + +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(push,1) +#endif /* defined(__MWERKS__) && ... */ +#define MEM_MAP_START + +typedef _Packed struct +{ + uint32_t exact_match1; /* octets 1-4 */ + uint32_t exact_match2; /* octets 5-6 */ +} _PackedType macRegs; + +typedef _Packed struct +{ + volatile uint32_t tsec_id1; /* 0x000 ETSEC_ID register */ + volatile uint32_t tsec_id2; /* 0x004 ETSEC_ID2 register */ + volatile uint32_t ievent; /* 0x008 Interrupt event register */ + volatile uint32_t imask; /* 0x00C Interrupt mask register */ + volatile uint32_t edis; /* 0x010 Error disabled register */ + volatile uint32_t ecntrl; /* 0x014 E control register */ + volatile uint32_t ptv; /* 0x018 Pause time value register */ + volatile uint32_t tbipa; /* 0x01C TBI PHY address register */ + volatile uint32_t tmr_ctrl; /* 0x020 Time-stamp Control register */ + volatile uint32_t tmr_pevent; /* 0x024 Time-stamp event register */ + volatile uint32_t tmr_pemask; /* 0x028 Timer event mask register */ + volatile uint32_t DTSEC_RESERVED2; /* 0x02C */ + volatile uint32_t iobistctl; /* 0x030 IO BIST Control register */ + volatile uint32_t DTSEC_RESERVED3[3]; /* 0x034 */ + + volatile uint32_t tctrl; /* 0x040 Transmit control register */ + volatile uint32_t DTSEC_RESERVED4[3]; /* 0x044-0x04C */ + volatile uint32_t rctrl; /* 0x050 Receive control register */ + volatile uint32_t DTSEC_RESERVED5[11]; /* 0x054- 0x07C */ + + volatile uint32_t igaddr[8]; /* 0x080-0x09C Individual/group address registers 0-7 */ + volatile uint32_t gaddr[8]; /* 0x0A0-0x0BC Group address registers 0-7 */ + volatile uint32_t ETSEC_RESERVED6[16]; /* 0x0C0-0x0FC */ + + volatile uint32_t maccfg1; /* 0x100 MAC configuration #1 */ + volatile uint32_t maccfg2; /* 0x104 MAC configuration #2 */ + volatile uint32_t ipgifg; /* 0x108 IPG/IFG */ + volatile uint32_t hafdup; /* 0x10C Half-duplex */ + volatile uint32_t maxfrm; /* 0x110 Maximum frame */ + volatile uint32_t DTSEC_RESERVED7[3]; /* 0x114-0x11C register */ + t_MiiAccessMemMap miiMemMap; + volatile uint32_t ifctrl; /* 0x138 MII Mgmt:interface control */ + volatile uint32_t ifstat; /* 0x13C Interface status */ + volatile uint32_t macstnaddr1; /* 0x140 Station Address,part 1 */ + volatile uint32_t macstnaddr2; /* 0x144 Station Address,part 2 */ + volatile macRegs macaddr[DTSEC_NUM_OF_PADDRS]; /* 0x148-0x1BC mac exact match addresses 1-15, parts 1-2 */ + volatile uint32_t DTSEC_RESERVED8[16]; /* 0x1C0-0x1FC register */ + + /* RMON MIB REGISTERS */ + /* TRANSMIT and RECEIVE COUNTERS */ + + volatile uint32_t tr64; /* 0x200 transmit and receive 64 byte frame counter */ + volatile uint32_t tr127; /* 0x204 transmit and receive 65 to 127 byte frame counter */ + volatile uint32_t tr255; /* 0x208 transmit and receive 128 to 255 byte frame counter */ + volatile uint32_t tr511; /* 0x20C transmit and receive 256 to 511 byte frame counter */ + volatile uint32_t tr1k; /* 0x210 transmit and receive 512 to 1023 byte frame counter */ + volatile uint32_t trmax; /* 0x214 transmit and receive 1024 to 1518 byte frame counter */ + volatile uint32_t trmgv; /* 0x218 transmit and receive 1519 to 1522 byte good VLAN frame count */ + + /* RECEIVE COUNTERS */ + volatile uint32_t rbyt; /* 0x21C receive byte counter */ + volatile uint32_t rpkt; /* 0x220 receive packet counter */ + volatile uint32_t rfcs; /* 0x224 receive FCS error counter */ + volatile uint32_t rmca; /* 0x228 RMCA receive multicast packet counter */ + volatile uint32_t rbca; /* 0x22C receive broadcast packet counter */ + volatile uint32_t rxcf; /* 0x230 receive control frame packet counter */ + volatile uint32_t rxpf; /* 0x234 receive PAUSE frame packet counter */ + volatile uint32_t rxuo; /* 0x238 receive unknown OP code counter */ + volatile uint32_t raln; /* 0x23C receive alignment error counter */ + volatile uint32_t rflr; /* 0x240 receive frame length error counter */ + volatile uint32_t rcde; /* 0x244 receive code error counter */ + volatile uint32_t rcse; /* 0x248 receive carrier sense error counter */ + volatile uint32_t rund; /* 0x24C receive undersize packet counter */ + volatile uint32_t rovr; /* 0x250 receive oversize packet counter */ + volatile uint32_t rfrg; /* 0x254 receive fragments counter */ + volatile uint32_t rjbr; /* 0x258 receive jabber counter */ + volatile uint32_t rdrp; /* 0x25C receive drop */ + + /* TRANSMIT COUNTERS */ + volatile uint32_t tbyt; /* 0x260 transmit byte counter */ + volatile uint32_t tpkt; /* 0x264 transmit packet counter */ + volatile uint32_t tmca; /* 0x268 transmit multicast packet counter */ + volatile uint32_t tbca; /* 0x26C transmit broadcast packet counter */ + volatile uint32_t txpf; /* 0x270 transmit PAUSE control frame counter */ + volatile uint32_t tdfr; /* 0x274 transmit deferral packet counter */ + volatile uint32_t tedf; /* 0x278 transmit excessive deferral packet counter */ + volatile uint32_t tscl; /* 0x27C transmit single collision packet counter */ + volatile uint32_t tmcl; /* 0x280 transmit multiple collision packet counter */ + volatile uint32_t tlcl; /* 0x284 transmit late collision packet counter */ + volatile uint32_t txcl; /* 0x288 transmit excessive collision packet counter */ + volatile uint32_t tncl; /* 0x28C transmit total collision counter */ + volatile uint32_t DTSEC_RESERVED9; /* 0x290 */ + volatile uint32_t tdrp; /* 0x294 transmit drop frame counter */ + volatile uint32_t tjbr; /* 0x298 transmit jabber frame counter */ + volatile uint32_t tfcs; /* 0x29C transmit FCS error counter */ + volatile uint32_t txcf; /* 0x2A0 transmit control frame counter */ + volatile uint32_t tovr; /* 0x2A4 transmit oversize frame counter */ + volatile uint32_t tund; /* 0x2A8 transmit undersize frame counter */ + volatile uint32_t tfrg; /* 0x2AC transmit fragments frame counter */ + + /* GENERAL REGISTERS */ + volatile uint32_t car1; /* 0x2B0 carry register one register* */ + volatile uint32_t car2; /* 0x2B4 carry register two register* */ + volatile uint32_t cam1; /* 0x2B8 carry register one mask register */ + volatile uint32_t cam2; /* 0x2BC carry register two mask register */ + volatile uint32_t DTSEC_RESERVED10[16]; /* 0x2C0-0x2FC */ + + /* Debug and Factory Test Registers */ + volatile uint32_t debug; /* 0x300 DEBUG - Debug Register */ + volatile uint32_t dperror; /* 0x304 DPERROR - Parity Error Register */ + volatile uint32_t hwassert; /* 0x308 HWASSERT */ + volatile uint32_t RESERVED11; /* 0x30C Reserved */ + volatile uint32_t rx_fifo_ptr; /* 0x310 RXFIFOPTR - Rx FIFO R/W Pointer Register */ + volatile uint32_t rx_fifo_dath; /* 0x314 RXFIFODATH - Rx FIFO Data Register */ + volatile uint32_t rx_fifo_datl; /* 0x318 RXFIFODATL - Rx FIFO Data Register */ + volatile uint32_t rx_fifo_stat; /* 0x31C RXFIFOSTAT - Rx FIFO Status Register */ + volatile uint32_t tx_fifo_ptr; /* 0x320 TXFIFOPTR - Tx FIFO R/W Pointer Register */ + volatile uint32_t tx_fifo_dath; /* 0x324 TXFIFODATH - Rx FIFO Data Register */ + volatile uint32_t tx_fifo_datl; /* 0x328 TXFIFODATL - Rx FIFO Data Register */ + volatile uint32_t tx_fifo_stat; /* 0x32C TXFIFOSTAT - Tx FIFO Status Register */ + volatile uint32_t pkt_rcv_cnt; /* 0x330 PKTRCVCNT - Number of packets accepted and written to Rx FIFO */ + volatile uint32_t RESERVED12[3]; /* 0x334-0x33C Reserved */ + volatile uint32_t tx_threshold; /* 0x340 Transmit threshold; Number of entries (4 bytes units) before starting to transmit to the MAC */ + volatile uint32_t tx_watermark_high;/* 0x344 Transmit watermark high; Number of entries (4 byte units) before de-asserting Ready to packet Interface */ + volatile uint32_t rx_watermark_low; /* 0x348 Receive watermark low; Number of entries (4 byte units) before unloading to packet Interface */ +} _PackedType t_DtsecMemMap; + +#define MEM_MAP_END +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(pop) +#endif /* defined(__MWERKS__) && ... */ + + +typedef struct { + uint32_t errorDisabled; + bool halfDuplex; + uint16_t pauseTime; + uint16_t pauseExtended; + uint8_t tbiPhyAddr; /**< TBI Physical address (1-31) [DEFAULT_tbiPhyAddr] */ + + bool autoZeroCounters; + bool promiscuousEnable; + + bool halfDulexFlowControlEn; + bool txTimeStampEn; + bool rxTimeStampEn; + + uint8_t packetAlignmentPadding; + bool controlFrameAccept; + bool groupHashExtend; + bool broadcReject; + bool rxShortFrame; + bool exactMatch; + + bool debugMode; + + bool loopback; + bool actOnRxPauseFrame; + bool actOnTxPauseFrame; + + uint8_t nonBackToBackIpg1; + uint8_t nonBackToBackIpg2; + uint8_t minIfgEnforcement; + uint8_t backToBackIpg; + + uint8_t preambleLength; + bool preambleRxEn; + bool preambleTxEn; + bool lengthCheckEnable; + bool magicPacketEnable; + bool padAndCrcEnable; + bool crcEnable; + + bool alternateBackoffEnable; + uint8_t alternateBackoffVal; + bool backPressureNoBackoff; + bool noBackoff; + bool excessDefer; + uint8_t maxRetransmission; + uint16_t collisionWindow; + + uint16_t maxFrameLength; + + uint8_t fifoTxThr; + uint8_t fifoTxWatermarkH; + uint8_t fifoRxWatermarkL; +} t_DtsecDriverParam; + +typedef struct { + t_FmMacControllerDriver fmMacControllerDriver; + t_Handle h_App; /**< Handle to the upper layer application */ + t_DtsecMemMap *p_MemMap; /**< pointer to dTSEC memory mapped registers. */ + t_MiiAccessMemMap *p_MiiMemMap; /**< pointer to dTSEC MII memory mapped registers. */ + uint64_t addr; /**< MAC address of device; */ + e_EnetMode enetMode; /**< Ethernet physical interface */ + t_FmMacExceptionCallback *f_Exception; + int mdioIrq; + t_FmMacExceptionCallback *f_Event; + bool indAddrRegUsed[DTSEC_NUM_OF_PADDRS]; /**< Whether a particular individual address recognition register is being used */ + uint64_t paddr[DTSEC_NUM_OF_PADDRS]; /**< MAC address for particular individual address recognition register */ + uint8_t numOfIndAddrInRegs; /**< Number of individual addresses in registers for this station. */ + bool debugMode; + bool halfDuplex; + t_InternalStatistics internalStatistics; + t_EthHash *p_MulticastAddrHash; /* pointer to driver's global address hash table */ + t_EthHash *p_UnicastAddrHash; /* pointer to driver's individual address hash table */ + uint8_t macId; + uint32_t exceptions; + bool ptpTsuEnabled; + bool enTsuErrExeption; + e_FmMacStatisticsLevel statisticsLevel; + + t_DtsecDriverParam *p_DtsecDriverParam; +} t_Dtsec; + + +t_Error DTSEC_MII_WritePhyReg(t_Handle h_Dtsec, uint8_t phyAddr, uint8_t reg, uint16_t data); +t_Error DTSEC_MII_ReadPhyReg(t_Handle h_Dtsec, uint8_t phyAddr, uint8_t reg, uint16_t *p_Data); + + +#endif /* __DTSEC_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/dtsec_mii_acc.c +++ linux-3.13.0/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/dtsec_mii_acc.c @@ -0,0 +1,120 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 dtsec_mii_acc.c + + @Description FM dtsec MII register access MAC ... +*//***************************************************************************/ + +#include "error_ext.h" +#include "std_ext.h" +#include "fm_mac.h" +#include "dtsec.h" + + +/*****************************************************************************/ +t_Error DTSEC_MII_WritePhyReg(t_Handle h_Dtsec, + uint8_t phyAddr, + uint8_t reg, + uint16_t data) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + t_MiiAccessMemMap *p_MiiAccess; + uint32_t tmpReg; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_MiiMemMap, E_INVALID_HANDLE); + + p_MiiAccess = p_Dtsec->p_MiiMemMap; + + /* Stop the MII management read cycle */ + WRITE_UINT32(p_MiiAccess->miimcom, 0); + /* Dummy read to make sure MIIMCOM is written */ + tmpReg = GET_UINT32(p_MiiAccess->miimcom); + + /* Setting up MII Management Address Register */ + tmpReg = (uint32_t)((phyAddr << MIIMADD_PHY_ADDR_SHIFT) | reg); + WRITE_UINT32(p_MiiAccess->miimadd, tmpReg); + + /* Setting up MII Management Control Register with data */ + WRITE_UINT32(p_MiiAccess->miimcon, (uint32_t)data); + /* Dummy read to make sure MIIMCON is written */ + tmpReg = GET_UINT32(p_MiiAccess->miimcon); + + /* Wait till MII management write is complete */ + while ((GET_UINT32(p_MiiAccess->miimind)) & MIIMIND_BUSY) ; + + return E_OK; +} + +/*****************************************************************************/ +t_Error DTSEC_MII_ReadPhyReg(t_Handle h_Dtsec, + uint8_t phyAddr, + uint8_t reg, + uint16_t *p_Data) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + t_MiiAccessMemMap *p_MiiAccess; + uint32_t tmpReg; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_MiiMemMap, E_INVALID_HANDLE); + + p_MiiAccess = p_Dtsec->p_MiiMemMap; + + /* Setting up the MII Management Address Register */ + tmpReg = (uint32_t)((phyAddr << MIIMADD_PHY_ADDR_SHIFT) | reg); + WRITE_UINT32(p_MiiAccess->miimadd, tmpReg); + + /* Perform an MII management read cycle */ + WRITE_UINT32(p_MiiAccess->miimcom, MIIMCOM_READ_CYCLE); + /* Dummy read to make sure MIIMCOM is written */ + tmpReg = GET_UINT32(p_MiiAccess->miimcom); + + /* Wait till MII management read is complete */ + while ((GET_UINT32(p_MiiAccess->miimind)) & MIIMIND_BUSY) ; + + /* Read MII management status */ + *p_Data = (uint16_t)GET_UINT32(p_MiiAccess->miimstat); + + WRITE_UINT32(p_MiiAccess->miimcom, 0); + /* Dummy read to make sure MIIMCOM is written */ + tmpReg = GET_UINT32(p_MiiAccess->miimcom); + + if (*p_Data == 0xffff) + RETURN_ERROR(MINOR, E_NO_DEVICE, + ("Read wrong data (0xffff): phyAddr 0x%x, reg 0x%x", + phyAddr, reg)); + + return E_OK; +} --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/dtsec_mii_acc.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/dtsec_mii_acc.h @@ -0,0 +1,78 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 __DTSEC_MII_ACC_H +#define __DTSEC_MII_ACC_H + +#include "std_ext.h" + + +/* MII Management Configuration Register */ +#define MIIMCFG_RESET_MGMT 0x80000000 +#define MIIMCFG_MGMT_CLOCK_SELECT 0x00000007 + +/* MII Management Command Register */ +#define MIIMCOM_READ_CYCLE 0x00000001 +#define MIIMCOM_SCAN_CYCLE 0x00000002 + +/* MII Management Address Register */ +#define MIIMADD_PHY_ADDR_SHIFT 8 + +/* MII Management Indicator Register */ +#define MIIMIND_BUSY 0x00000001 + + +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(push,1) +#endif /* defined(__MWERKS__) && ... */ +#define MEM_MAP_START + +/*----------------------------------------------------*/ +/* MII Configuration Control Memory Map Registers */ +/*----------------------------------------------------*/ +typedef _Packed struct t_MiiAccessMemMap +{ + volatile uint32_t miimcfg; /* MII Mgmt:configuration */ + volatile uint32_t miimcom; /* MII Mgmt:command */ + volatile uint32_t miimadd; /* MII Mgmt:address */ + volatile uint32_t miimcon; /* MII Mgmt:control 3 */ + volatile uint32_t miimstat; /* MII Mgmt:status */ + volatile uint32_t miimind; /* MII Mgmt:indicators */ +} _PackedType t_MiiAccessMemMap ; + +#define MEM_MAP_END +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(pop) +#endif /* defined(__MWERKS__) && ... */ + + +#endif /* __DTSEC_MII_ACC_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/fm_mac.c +++ linux-3.13.0/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/fm_mac.c @@ -0,0 +1,560 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 fm_mac.c + + @Description FM MAC ... +*//***************************************************************************/ +#include "std_ext.h" +#include "string_ext.h" +#include "sprint_ext.h" +#include "error_ext.h" +#include "fm_ext.h" + +#include "fm_common.h" +#include "fm_mac.h" + + +/* ........................................................................... */ + +t_Handle FM_MAC_Config (t_FmMacParams *p_FmMacParam) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver; + + SANITY_CHECK_RETURN_VALUE(p_FmMacParam, E_INVALID_HANDLE, NULL); + + if(ENET_SPEED_FROM_MODE(p_FmMacParam->enetMode) < e_ENET_SPEED_10000) + p_FmMacControllerDriver = (t_FmMacControllerDriver *)DTSEC_Config(p_FmMacParam); + else + p_FmMacControllerDriver = (t_FmMacControllerDriver *)TGEC_Config(p_FmMacParam); + + if (!p_FmMacControllerDriver) + return NULL; + + p_FmMacControllerDriver->h_Fm = p_FmMacParam->h_Fm; + p_FmMacControllerDriver->enetMode = p_FmMacParam->enetMode; + p_FmMacControllerDriver->macId = p_FmMacParam->macId; + p_FmMacControllerDriver->resetOnInit = DEFAULT_resetOnInit; + + return (t_Handle)p_FmMacControllerDriver; +} + +/* ........................................................................... */ + +t_Error FM_MAC_Init (t_Handle h_FmMac) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->resetOnInit && + (FmResetMac(p_FmMacControllerDriver->h_Fm, + ((ENET_INTERFACE_FROM_MODE(p_FmMacControllerDriver->enetMode) == e_ENET_IF_XGMII) ? e_FM_MAC_10G : e_FM_MAC_1G), + p_FmMacControllerDriver->macId) != E_OK)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Can't reset MAC!")); + + if ((p_FmMacControllerDriver->clkFreq = FmGetClockFreq(p_FmMacControllerDriver->h_Fm)) == 0) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Can't get clock for MAC!")); + + if (p_FmMacControllerDriver->f_FM_MAC_Init) + return p_FmMacControllerDriver->f_FM_MAC_Init(h_FmMac); + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_Free (t_Handle h_FmMac) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_Free) + return p_FmMacControllerDriver->f_FM_MAC_Free(h_FmMac); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_ConfigResetOnInit (t_Handle h_FmMac, bool enable) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + p_FmMacControllerDriver->resetOnInit = enable; + + return E_OK; +} + +/* ........................................................................... */ + +t_Error FM_MAC_ConfigLoopback (t_Handle h_FmMac, bool newVal) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_ConfigLoopback) + return p_FmMacControllerDriver->f_FM_MAC_ConfigLoopback(h_FmMac, newVal); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_ConfigMaxFrameLength (t_Handle h_FmMac, uint16_t newVal) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_ConfigMaxFrameLength) + return p_FmMacControllerDriver->f_FM_MAC_ConfigMaxFrameLength(h_FmMac, newVal); + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_ConfigWan (t_Handle h_FmMac, bool flag) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_ConfigWan) + return p_FmMacControllerDriver->f_FM_MAC_ConfigWan(h_FmMac, flag); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_ConfigPadAndCrc (t_Handle h_FmMac, bool newVal) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_ConfigPadAndCrc) + return p_FmMacControllerDriver->f_FM_MAC_ConfigPadAndCrc(h_FmMac, newVal); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_ConfigHalfDuplex (t_Handle h_FmMac, bool newVal) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_ConfigHalfDuplex) + return p_FmMacControllerDriver->f_FM_MAC_ConfigHalfDuplex(h_FmMac,newVal); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_ConfigLengthCheck (t_Handle h_FmMac, bool newVal) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_ConfigLengthCheck) + return p_FmMacControllerDriver->f_FM_MAC_ConfigLengthCheck(h_FmMac,newVal); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_ConfigException (t_Handle h_FmMac, e_FmMacExceptions ex, bool enable) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_ConfigException) + return p_FmMacControllerDriver->f_FM_MAC_ConfigException(h_FmMac, ex, enable); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +#ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 +/* ........................................................................... */ + +t_Error FM_MAC_ConfigSkipFman11Workaround (t_Handle h_FmMac) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_ConfigSkipFman11Workaround) + return p_FmMacControllerDriver->f_FM_MAC_ConfigSkipFman11Workaround(h_FmMac); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} +#endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */ + + +/*****************************************************************************/ +/* Run Time Control */ +/*****************************************************************************/ + +/* ........................................................................... */ + +t_Error FM_MAC_Enable (t_Handle h_FmMac, e_CommMode mode) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_Enable) + return p_FmMacControllerDriver->f_FM_MAC_Enable(h_FmMac, mode); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_Disable (t_Handle h_FmMac, e_CommMode mode) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_Disable) + return p_FmMacControllerDriver->f_FM_MAC_Disable(h_FmMac, mode); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_Enable1588TimeStamp (t_Handle h_FmMac) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_Enable1588TimeStamp) + return p_FmMacControllerDriver->f_FM_MAC_Enable1588TimeStamp(h_FmMac); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_Disable1588TimeStamp (t_Handle h_FmMac) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_Disable1588TimeStamp) + return p_FmMacControllerDriver->f_FM_MAC_Disable1588TimeStamp(h_FmMac); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_SetTxAutoPauseFrames (t_Handle h_FmMac, uint16_t pauseTime) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_SetTxAutoPauseFrames) + return p_FmMacControllerDriver->f_FM_MAC_SetTxAutoPauseFrames(h_FmMac, pauseTime); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_SetRxIgnorePauseFrames (t_Handle h_FmMac, bool en) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_SetRxIgnorePauseFrames) + return p_FmMacControllerDriver->f_FM_MAC_SetRxIgnorePauseFrames(h_FmMac, en); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_ResetCounters (t_Handle h_FmMac) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_ResetCounters) + return p_FmMacControllerDriver->f_FM_MAC_ResetCounters(h_FmMac); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_SetException(t_Handle h_FmMac, e_FmMacExceptions ex, bool enable) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_SetException) + return p_FmMacControllerDriver->f_FM_MAC_SetException(h_FmMac, ex, enable); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_SetStatistics (t_Handle h_FmMac, e_FmMacStatisticsLevel statisticsLevel) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_SetStatistics) + return p_FmMacControllerDriver->f_FM_MAC_SetStatistics(h_FmMac, statisticsLevel); + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_GetStatistics (t_Handle h_FmMac, t_FmMacStatistics *p_Statistics) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_GetStatistics) + return p_FmMacControllerDriver->f_FM_MAC_GetStatistics(h_FmMac, p_Statistics); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_ModifyMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_ModifyMacAddr) + return p_FmMacControllerDriver->f_FM_MAC_ModifyMacAddr(h_FmMac, p_EnetAddr); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_AddHashMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_AddHashMacAddr) + return p_FmMacControllerDriver->f_FM_MAC_AddHashMacAddr(h_FmMac, p_EnetAddr); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_RemoveHashMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_RemoveHashMacAddr) + return p_FmMacControllerDriver->f_FM_MAC_RemoveHashMacAddr(h_FmMac, p_EnetAddr); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_AddExactMatchMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_AddExactMatchMacAddr) + return p_FmMacControllerDriver->f_FM_MAC_AddExactMatchMacAddr(h_FmMac, p_EnetAddr); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_RemovelExactMatchMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_RemovelExactMatchMacAddr) + return p_FmMacControllerDriver->f_FM_MAC_RemovelExactMatchMacAddr(h_FmMac, p_EnetAddr); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_GetVesrion (t_Handle h_FmMac, uint32_t *macVresion) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_GetVersion) + return p_FmMacControllerDriver->f_FM_MAC_GetVersion(h_FmMac, macVresion); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); + +} + +/* ........................................................................... */ + +t_Error FM_MAC_GetId (t_Handle h_FmMac, uint32_t *macId) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_GetId) + return p_FmMacControllerDriver->f_FM_MAC_GetId(h_FmMac, macId); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_SetPromiscuous (t_Handle h_FmMac, bool newVal) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_SetPromiscuous) + return p_FmMacControllerDriver->f_FM_MAC_SetPromiscuous(h_FmMac, newVal); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_AdjustLink(t_Handle h_FmMac, e_EnetSpeed speed, bool fullDuplex) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_AdjustLink) + return p_FmMacControllerDriver->f_FM_MAC_AdjustLink(h_FmMac, speed, fullDuplex); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_MII_WritePhyReg (t_Handle h_FmMac, uint8_t phyAddr, uint8_t reg, uint16_t data) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_MII_WritePhyReg) + return p_FmMacControllerDriver->f_FM_MAC_MII_WritePhyReg(h_FmMac, phyAddr, reg, data); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_MII_ReadPhyReg(t_Handle h_FmMac, uint8_t phyAddr, uint8_t reg, uint16_t *p_Data) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_MII_ReadPhyReg) + return p_FmMacControllerDriver->f_FM_MAC_MII_ReadPhyReg(h_FmMac, phyAddr, reg, p_Data); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +uint16_t FM_MAC_GetMaxFrameLength(t_Handle h_FmMac) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_VALUE(p_FmMacControllerDriver, E_INVALID_HANDLE, 0); + + if (p_FmMacControllerDriver->f_FM_MAC_GetMaxFrameLength) + return p_FmMacControllerDriver->f_FM_MAC_GetMaxFrameLength(h_FmMac); + + REPORT_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); + return 0; +} + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) +/*****************************************************************************/ +t_Error FM_MAC_DumpRegs(t_Handle h_FmMac) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_DumpRegs) + return p_FmMacControllerDriver->f_FM_MAC_DumpRegs(h_FmMac); + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} +#endif /* (defined(DEBUG_ERRORS) && ... */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/fm_mac.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/fm_mac.h @@ -0,0 +1,197 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 fm_mac.h + + @Description FM MAC ... +*//***************************************************************************/ +#ifndef __FM_MAC_H +#define __FM_MAC_H + +#include "std_ext.h" +#include "error_ext.h" +#include "list_ext.h" +#include "fm_mac_ext.h" + + +#define __ERR_MODULE__ MODULE_FM_MAC + + +#define DEFAULT_resetOnInit FALSE + + +typedef struct { + uint64_t addr; /* Ethernet Address */ + t_List node; +} t_EthHashEntry; +#define ETH_HASH_ENTRY_OBJ(ptr) LIST_OBJECT(ptr, t_EthHashEntry, node) + +typedef struct { + uint16_t size; + t_List *p_Lsts; +} t_EthHash; + +typedef struct { + t_Error (*f_FM_MAC_Init) (t_Handle h_FmMac); + t_Error (*f_FM_MAC_Free) (t_Handle h_FmMac); + + t_Error (*f_FM_MAC_SetStatistics) (t_Handle h_FmMac, e_FmMacStatisticsLevel statisticsLevel); + t_Error (*f_FM_MAC_ConfigLoopback) (t_Handle h_FmMac, bool newVal); + t_Error (*f_FM_MAC_ConfigMaxFrameLength) (t_Handle h_FmMac, uint16_t newVal); + t_Error (*f_FM_MAC_ConfigWan) (t_Handle h_FmMac, bool flag); + t_Error (*f_FM_MAC_ConfigPadAndCrc) (t_Handle h_FmMac, bool newVal); + t_Error (*f_FM_MAC_ConfigHalfDuplex) (t_Handle h_FmMac, bool newVal); + t_Error (*f_FM_MAC_ConfigLengthCheck) (t_Handle h_FmMac, bool newVal); + t_Error (*f_FM_MAC_ConfigException) (t_Handle h_FmMac, e_FmMacExceptions, bool enable); +#ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 + t_Error (*f_FM_MAC_ConfigSkipFman11Workaround) (t_Handle h_FmMac); +#endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */ + + t_Error (*f_FM_MAC_SetException) (t_Handle h_FmMac, e_FmMacExceptions ex, bool enable); + + t_Error (*f_FM_MAC_Enable) (t_Handle h_FmMac, e_CommMode mode); + t_Error (*f_FM_MAC_Disable) (t_Handle h_FmMac, e_CommMode mode); + t_Error (*f_FM_MAC_Enable1588TimeStamp) (t_Handle h_FmMac); + t_Error (*f_FM_MAC_Disable1588TimeStamp) (t_Handle h_FmMac); + t_Error (*f_FM_MAC_Reset) (t_Handle h_FmMac, bool wait); + + t_Error (*f_FM_MAC_SetTxAutoPauseFrames) (t_Handle h_FmMac, uint16_t pauseTime); + t_Error (*f_FM_MAC_SetRxIgnorePauseFrames) (t_Handle h_FmMac, bool en); + + t_Error (*f_FM_MAC_ResetCounters) (t_Handle h_FmMac); + t_Error (*f_FM_MAC_GetStatistics) (t_Handle h_FmMac, t_FmMacStatistics *p_Statistics); + + t_Error (*f_FM_MAC_ModifyMacAddr) (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr); + t_Error (*f_FM_MAC_AddHashMacAddr) (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr); + t_Error (*f_FM_MAC_RemoveHashMacAddr) (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr); + t_Error (*f_FM_MAC_AddExactMatchMacAddr) (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr); + t_Error (*f_FM_MAC_RemovelExactMatchMacAddr) (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr); + + t_Error (*f_FM_MAC_SetPromiscuous) (t_Handle h_FmMac, bool newVal); + t_Error (*f_FM_MAC_AdjustLink) (t_Handle h_FmMac, e_EnetSpeed speed, bool fullDuplex); + + t_Error (*f_FM_MAC_GetId) (t_Handle h_FmMac, uint32_t *macId); + + t_Error (*f_FM_MAC_GetVersion) (t_Handle h_FmMac, uint32_t *macVersion); + + uint16_t (*f_FM_MAC_GetMaxFrameLength) (t_Handle h_FmMac); + + t_Error (*f_FM_MAC_MII_WritePhyReg)(t_Handle h_FmMac, uint8_t phyAddr, uint8_t reg, uint16_t data); + t_Error (*f_FM_MAC_MII_ReadPhyReg)(t_Handle h_FmMac, uint8_t phyAddr, uint8_t reg, uint16_t *p_Data); + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) + t_Error (*f_FM_MAC_DumpRegs) (t_Handle h_FmMac); +#endif /* (defined(DEBUG_ERRORS) && ... */ + + t_Handle h_Fm; + e_EnetMode enetMode; + uint8_t macId; + bool resetOnInit; + uint16_t clkFreq; +} t_FmMacControllerDriver; + + +t_Handle DTSEC_Config(t_FmMacParams *p_FmMacParam); +t_Handle TGEC_Config(t_FmMacParams *p_FmMacParams); +uint16_t FM_MAC_GetMaxFrameLength(t_Handle FmMac); + + +/* ........................................................................... */ + +static __inline__ t_EthHashEntry *DequeueAddrFromHashEntry(t_List *p_AddrLst) +{ + t_EthHashEntry *p_HashEntry = NULL; + if (!LIST_IsEmpty(p_AddrLst)) + { + p_HashEntry = ETH_HASH_ENTRY_OBJ(p_AddrLst->p_Next); + LIST_DelAndInit(&p_HashEntry->node); + } + return p_HashEntry; +} + +/* ........................................................................... */ + +static __inline__ void FreeHashTable(t_EthHash *p_Hash) +{ + t_EthHashEntry *p_HashEntry; + int i = 0; + + if (!p_Hash || !p_Hash->p_Lsts) + return; + + for(i=0; isize; i++) + { + p_HashEntry = DequeueAddrFromHashEntry(&p_Hash->p_Lsts[i]); + while (p_HashEntry) + { + XX_Free(p_HashEntry); + p_HashEntry = DequeueAddrFromHashEntry(&p_Hash->p_Lsts[i]); + } + } + + XX_Free(p_Hash->p_Lsts); + XX_Free(p_Hash); +} + +/* ........................................................................... */ + +static __inline__ t_EthHash * AllocHashTable(uint16_t size) +{ + uint32_t i; + t_EthHash *p_Hash; + + /* Allocate address hash table */ + p_Hash = (t_EthHash *)XX_Malloc(size*sizeof(t_EthHash *)); + if (!p_Hash) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("Address hash table")); + return NULL; + } + p_Hash->size = size; + + p_Hash->p_Lsts = (t_List *)XX_Malloc(p_Hash->size*sizeof(t_List)); + if (!p_Hash->p_Lsts) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("Address hash table")); + XX_Free(p_Hash); + return NULL; + } + + for(i=0 ; isize; i++) + INIT_LIST(&p_Hash->p_Lsts[i]); + + return p_Hash; +} + + +#endif /* __FM_MAC_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/tgec.c +++ linux-3.13.0/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/tgec.c @@ -0,0 +1,1268 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 tgec.c + + @Description FM 10G MAC ... +*//***************************************************************************/ + +#include "std_ext.h" +#include "string_ext.h" +#include "error_ext.h" +#include "xx_ext.h" +#include "endian_ext.h" +#include "crc_mac_addr_ext.h" +#include "debug_ext.h" + +#include "fm_common.h" +#include "tgec.h" + + +/*****************************************************************************/ +/* Internal routines */ +/*****************************************************************************/ + +static t_Error CheckInitParameters(t_Tgec *p_Tgec) +{ + if(ENET_SPEED_FROM_MODE(p_Tgec->enetMode) < e_ENET_SPEED_10000) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Ethernet 10G MAC driver only support 10G speed")); +#if (FM_MAX_NUM_OF_10G_MACS > 0) + if(p_Tgec->macId >= FM_MAX_NUM_OF_10G_MACS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("macId of 10G can not be greater than 0")); +#endif + if(p_Tgec->addr == 0) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Ethernet 10G MAC Must have a valid MAC Address")); + if(!p_Tgec->f_Exception) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("uninitialized f_Exception")); + if(!p_Tgec->f_Event) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("uninitialized f_Event")); + return E_OK; +} + +/* .............................................................................. */ + +static void SetDefaultParam(t_TgecDriverParam *p_TgecDriverParam) +{ + p_TgecDriverParam->wanModeEnable = DEFAULT_wanModeEnable; + p_TgecDriverParam->promiscuousModeEnable = DEFAULT_promiscuousModeEnable; + p_TgecDriverParam->pauseForwardEnable = DEFAULT_pauseForwardEnable; + p_TgecDriverParam->pauseIgnore = DEFAULT_pauseIgnore; + p_TgecDriverParam->txAddrInsEnable = DEFAULT_txAddrInsEnable; + + p_TgecDriverParam->loopbackEnable = DEFAULT_loopbackEnable; + p_TgecDriverParam->cmdFrameEnable = DEFAULT_cmdFrameEnable; + p_TgecDriverParam->rxErrorDiscard = DEFAULT_rxErrorDiscard; + p_TgecDriverParam->phyTxenaOn = DEFAULT_phyTxenaOn; + p_TgecDriverParam->sendIdleEnable = DEFAULT_sendIdleEnable; + p_TgecDriverParam->noLengthCheckEnable = DEFAULT_noLengthCheckEnable; + p_TgecDriverParam->lgthCheckNostdr = DEFAULT_lgthCheckNostdr; + p_TgecDriverParam->timeStampEnable = DEFAULT_timeStampEnable; + p_TgecDriverParam->rxSfdAny = DEFAULT_rxSfdAny; + p_TgecDriverParam->rxPblFwd = DEFAULT_rxPblFwd; + p_TgecDriverParam->txPblFwd = DEFAULT_txPblFwd; + + p_TgecDriverParam->txIpgLength = DEFAULT_txIpgLength; + p_TgecDriverParam->maxFrameLength = DEFAULT_maxFrameLength; + + p_TgecDriverParam->debugMode = DEFAULT_debugMode; + + p_TgecDriverParam->pauseTime = DEFAULT_pauseTime; + +#ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 + p_TgecDriverParam->skipFman11Workaround = DEFAULT_skipFman11Workaround; +#endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */ +} + +/* ........................................................................... */ + +static void TgecErrException(t_Handle h_Tgec) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + uint32_t event; + t_TgecMemMap *p_TgecMemMap = p_Tgec->p_MemMap; + + event = GET_UINT32(p_TgecMemMap->ievent); + /* do not handle MDIO events */ + event &= ~(IMASK_MDIO_SCAN_EVENTMDIO | IMASK_MDIO_CMD_CMPL); + + event &= GET_UINT32(p_TgecMemMap->imask); + + WRITE_UINT32(p_TgecMemMap->ievent, event); + + if (event & IMASK_REM_FAULT) + p_Tgec->f_Exception(p_Tgec->h_App, e_FM_MAC_EX_10G_REM_FAULT); + if (event & IMASK_LOC_FAULT) + p_Tgec->f_Exception(p_Tgec->h_App, e_FM_MAC_EX_10G_LOC_FAULT); + if (event & IMASK_1TX_ECC_ER) + p_Tgec->f_Exception(p_Tgec->h_App, e_FM_MAC_EX_10G_1TX_ECC_ER); + if (event & IMASK_TX_FIFO_UNFL) + p_Tgec->f_Exception(p_Tgec->h_App, e_FM_MAC_EX_10G_TX_FIFO_UNFL); + if (event & IMASK_TX_FIFO_OVFL) + p_Tgec->f_Exception(p_Tgec->h_App, e_FM_MAC_EX_10G_TX_FIFO_OVFL); + if (event & IMASK_TX_ER) + p_Tgec->f_Exception(p_Tgec->h_App, e_FM_MAC_EX_10G_TX_ER); + if (event & IMASK_RX_FIFO_OVFL) + p_Tgec->f_Exception(p_Tgec->h_App, e_FM_MAC_EX_10G_RX_FIFO_OVFL); + if (event & IMASK_RX_ECC_ER) + p_Tgec->f_Exception(p_Tgec->h_App, e_FM_MAC_EX_10G_RX_ECC_ER); + if (event & IMASK_RX_JAB_FRM) + p_Tgec->f_Exception(p_Tgec->h_App, e_FM_MAC_EX_10G_RX_JAB_FRM); + if (event & IMASK_RX_OVRSZ_FRM) + p_Tgec->f_Exception(p_Tgec->h_App, e_FM_MAC_EX_10G_RX_OVRSZ_FRM); + if (event & IMASK_RX_RUNT_FRM) + p_Tgec->f_Exception(p_Tgec->h_App, e_FM_MAC_EX_10G_RX_RUNT_FRM); + if (event & IMASK_RX_FRAG_FRM) + p_Tgec->f_Exception(p_Tgec->h_App, e_FM_MAC_EX_10G_RX_FRAG_FRM); + if (event & IMASK_RX_LEN_ER) + p_Tgec->f_Exception(p_Tgec->h_App, e_FM_MAC_EX_10G_RX_LEN_ER); + if (event & IMASK_RX_CRC_ER) + p_Tgec->f_Exception(p_Tgec->h_App, e_FM_MAC_EX_10G_RX_CRC_ER); + if (event & IMASK_RX_ALIGN_ER) + p_Tgec->f_Exception(p_Tgec->h_App, e_FM_MAC_EX_10G_RX_ALIGN_ER); +} + +static void TgecException(t_Handle h_Tgec) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + uint32_t event; + t_TgecMemMap *p_TgecMemMap = p_Tgec->p_MemMap; + + event = GET_UINT32(p_TgecMemMap->ievent); + /* handle only MDIO events */ + event &= (IMASK_MDIO_SCAN_EVENTMDIO | IMASK_MDIO_CMD_CMPL); + event &= GET_UINT32(p_TgecMemMap->imask); + + WRITE_UINT32(p_TgecMemMap->ievent, event); + + if(event & IMASK_MDIO_SCAN_EVENTMDIO) + p_Tgec->f_Event(p_Tgec->h_App, e_FM_MAC_EX_10G_MDIO_SCAN_EVENTMDIO); + if(event & IMASK_MDIO_CMD_CMPL) + p_Tgec->f_Event(p_Tgec->h_App, e_FM_MAC_EX_10G_MDIO_CMD_CMPL); +} + +static void FreeInitResources(t_Tgec *p_Tgec) +{ + if ((p_Tgec->mdioIrq != 0) && (p_Tgec->mdioIrq != NO_IRQ)) + { + XX_DisableIntr(p_Tgec->mdioIrq); + XX_FreeIntr(p_Tgec->mdioIrq); + } + else if (p_Tgec->mdioIrq == 0) + REPORT_ERROR(MINOR, E_NOT_SUPPORTED, (NO_MSG)); + FmUnregisterIntr(p_Tgec->fmMacControllerDriver.h_Fm, e_FM_MOD_10G_MAC, p_Tgec->macId, e_FM_INTR_TYPE_ERR); + + /* release the driver's group hash table */ + FreeHashTable(p_Tgec->p_MulticastAddrHash); + p_Tgec->p_MulticastAddrHash = NULL; + + /* release the driver's individual hash table */ + FreeHashTable(p_Tgec->p_UnicastAddrHash); + p_Tgec->p_UnicastAddrHash = NULL; +} + +/* .............................................................................. */ + +static void HardwareClearAddrInPaddr(t_Tgec *p_Tgec, uint8_t paddrNum) +{ + if (paddrNum != 0) + return; /* At this time MAC has only one address */ + + WRITE_UINT32(p_Tgec->p_MemMap->mac_addr_2, 0x0); + WRITE_UINT32(p_Tgec->p_MemMap->mac_addr_3, 0x0); +} + +/* ........................................................................... */ + +static void HardwareAddAddrInPaddr(t_Tgec *p_Tgec, uint64_t *p_Addr, uint8_t paddrNum) +{ + uint32_t tmpReg32 = 0; + uint64_t addr = *p_Addr; + t_TgecMemMap *p_TgecMemMap = p_Tgec->p_MemMap; + + if (paddrNum != 0) + return; /* At this time MAC has only one address */ + + tmpReg32 = (uint32_t)(addr>>16); + SwapUint32P(&tmpReg32); + WRITE_UINT32(p_TgecMemMap->mac_addr_2, tmpReg32); + + tmpReg32 = (uint32_t)(addr); + SwapUint32P(&tmpReg32); + tmpReg32 >>= 16; + WRITE_UINT32(p_TgecMemMap->mac_addr_3, tmpReg32); +} + +/*****************************************************************************/ +/* 10G MAC API routines */ +/*****************************************************************************/ + +/* .............................................................................. */ + +static t_Error TgecEnable(t_Handle h_Tgec, e_CommMode mode) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + t_TgecMemMap *p_MemMap ; + uint32_t tmpReg32 = 0; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_MemMap, E_INVALID_HANDLE); + + p_MemMap= (t_TgecMemMap*)(p_Tgec->p_MemMap); + + tmpReg32 = GET_UINT32(p_MemMap->cmd_conf_ctrl); + + switch (mode) + { + case e_COMM_MODE_NONE: + tmpReg32 &= ~(CMD_CFG_TX_EN | CMD_CFG_RX_EN); + break; + case e_COMM_MODE_RX : + tmpReg32 |= CMD_CFG_RX_EN ; + break; + case e_COMM_MODE_TX : + tmpReg32 |= CMD_CFG_TX_EN ; + break; + case e_COMM_MODE_RX_AND_TX: + tmpReg32 |= (CMD_CFG_TX_EN | CMD_CFG_RX_EN); + break; + } + + WRITE_UINT32(p_MemMap->cmd_conf_ctrl, tmpReg32); + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error TgecDisable (t_Handle h_Tgec, e_CommMode mode) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + t_TgecMemMap *p_MemMap ; + uint32_t tmpReg32 = 0; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_MemMap, E_INVALID_HANDLE); + + p_MemMap= (t_TgecMemMap*)(p_Tgec->p_MemMap); + + tmpReg32 = GET_UINT32(p_MemMap->cmd_conf_ctrl); + switch (mode) + { + case e_COMM_MODE_RX: + tmpReg32 &= ~CMD_CFG_RX_EN; + break; + case e_COMM_MODE_TX: + tmpReg32 &= ~CMD_CFG_TX_EN; + break; + case e_COMM_MODE_RX_AND_TX: + tmpReg32 &= ~(CMD_CFG_TX_EN | CMD_CFG_RX_EN); + break; + default: + RETURN_ERROR(MINOR, E_INVALID_SELECTION, NO_MSG); + } + WRITE_UINT32(p_MemMap->cmd_conf_ctrl, tmpReg32); + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error TgecSetPromiscuous(t_Handle h_Tgec, bool newVal) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + t_TgecMemMap *p_TgecMemMap; + uint32_t tmpReg32; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Tgec->p_TgecDriverParam, E_NULL_POINTER); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_MemMap, E_NULL_POINTER); + + p_TgecMemMap = p_Tgec->p_MemMap; + + tmpReg32 = GET_UINT32(p_TgecMemMap->cmd_conf_ctrl); + + if (newVal) + tmpReg32 |= CMD_CFG_PROMIS_EN; + else + tmpReg32 &= ~CMD_CFG_PROMIS_EN; + + WRITE_UINT32(p_TgecMemMap->cmd_conf_ctrl, tmpReg32); + + return E_OK; +} + + +/*****************************************************************************/ +/* Tgec Configs modification functions */ +/*****************************************************************************/ + +/* .............................................................................. */ + +static t_Error TgecConfigLoopback(t_Handle h_Tgec, bool newVal) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_TgecDriverParam, E_INVALID_STATE); + +#ifdef FM_NO_TGEC_LOOPBACK + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_Tgec->fmMacControllerDriver.h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("no loopback in this chip rev!")); + } +#endif /* FM_NO_TGEC_LOOPBACK */ + + p_Tgec->p_TgecDriverParam->loopbackEnable = newVal; + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error TgecConfigWan(t_Handle h_Tgec, bool newVal) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_TgecDriverParam, E_INVALID_STATE); + + p_Tgec->p_TgecDriverParam->wanModeEnable = newVal; + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error TgecConfigMaxFrameLength(t_Handle h_Tgec, uint16_t newVal) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_TgecDriverParam, E_INVALID_STATE); + + p_Tgec->p_TgecDriverParam->maxFrameLength = newVal; + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error TgecConfigLengthCheck(t_Handle h_Tgec, bool newVal) +{ +#ifdef FM_LEN_CHECK_ERRATA_FMAN_SW002 +UNUSED(h_Tgec); + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("LengthCheck!")); + +#else + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + + UNUSED(newVal); + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_TgecDriverParam, E_INVALID_STATE); + + p_Tgec->p_TgecDriverParam->noLengthCheckEnable = !newVal; + + return E_OK; +#endif /* FM_LEN_CHECK_ERRATA_FMAN_SW002 */ +} + +/* .............................................................................. */ + +static t_Error TgecConfigException(t_Handle h_Tgec, e_FmMacExceptions exception, bool enable) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + uint32_t bitMask = 0; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_TgecDriverParam, E_INVALID_STATE); +#ifdef FM_10G_REM_N_LCL_FLT_EX_ERRATA_10GMAC001 + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_Tgec->fmMacControllerDriver.h_Fm, &revInfo); + if((revInfo.majorRev <=2) && + enable && + ((exception == e_FM_MAC_EX_10G_LOC_FAULT) || (exception == e_FM_MAC_EX_10G_REM_FAULT))) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("e_FM_MAC_EX_10G_LOC_FAULT and e_FM_MAC_EX_10G_REM_FAULT !")); + } +#endif /* FM_10G_REM_N_LCL_FLT_EX_ERRATA_10GMAC001 */ + + GET_EXCEPTION_FLAG(bitMask, exception); + if(bitMask) + { + if (enable) + p_Tgec->exceptions |= bitMask; + else + p_Tgec->exceptions &= ~bitMask; + } + else + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Undefined exception")); + + return E_OK; +} + +#ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 +/* .............................................................................. */ + +static t_Error TgecConfigSkipFman11Workaround(t_Handle h_Tgec) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_TgecDriverParam, E_INVALID_STATE); + + p_Tgec->p_TgecDriverParam->skipFman11Workaround = TRUE; + + return E_OK; +} +#endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */ + + +/*****************************************************************************/ +/* Tgec Run Time API functions */ +/*****************************************************************************/ + +/* .............................................................................. */ + +static t_Error TgecTxMacPause(t_Handle h_Tgec, uint16_t pauseTime) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + uint32_t ptv = 0; + t_TgecMemMap *p_MemMap; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(!p_Tgec->p_TgecDriverParam, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_MemMap, E_INVALID_STATE); + + p_MemMap = (t_TgecMemMap*)(p_Tgec->p_MemMap); + + ptv = (uint32_t)pauseTime; + + WRITE_UINT32(p_MemMap->pause_quant, ptv); + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error TgecRxIgnoreMacPause(t_Handle h_Tgec, bool en) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + t_TgecMemMap *p_MemMap; + uint32_t tmpReg32; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(!p_Tgec->p_TgecDriverParam, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_MemMap, E_INVALID_STATE); + + p_MemMap = (t_TgecMemMap*)(p_Tgec->p_MemMap); + tmpReg32 = GET_UINT32(p_MemMap->cmd_conf_ctrl); + if (en) + tmpReg32 |= CMD_CFG_PAUSE_IGNORE; + else + tmpReg32 &= ~CMD_CFG_PAUSE_IGNORE; + WRITE_UINT32(p_MemMap->cmd_conf_ctrl, tmpReg32); + + return E_OK; +} + +/* Counters handling */ +/* .............................................................................. */ + +static t_Error TgecGetStatistics(t_Handle h_Tgec, t_FmMacStatistics *p_Statistics) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + t_TgecMemMap *p_TgecMemMap; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_NULL_POINTER); + SANITY_CHECK_RETURN_ERROR(p_Statistics, E_NULL_POINTER); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_MemMap, E_NULL_POINTER); + + p_TgecMemMap = p_Tgec->p_MemMap; + + p_Statistics->eStatPkts64 = GET_UINT64(p_TgecMemMap->R64); + p_Statistics->eStatPkts65to127 = GET_UINT64(p_TgecMemMap->R127); + p_Statistics->eStatPkts128to255 = GET_UINT64(p_TgecMemMap->R255); + p_Statistics->eStatPkts256to511 = GET_UINT64(p_TgecMemMap->R511); + p_Statistics->eStatPkts512to1023 = GET_UINT64(p_TgecMemMap->R1023); + p_Statistics->eStatPkts1024to1518 = GET_UINT64(p_TgecMemMap->R1518); + p_Statistics->eStatPkts1519to1522 = GET_UINT64(p_TgecMemMap->R1519X); +/* */ + p_Statistics->eStatFragments = GET_UINT64(p_TgecMemMap->TRFRG); + p_Statistics->eStatJabbers = GET_UINT64(p_TgecMemMap->TRJBR); + + p_Statistics->eStatsDropEvents = GET_UINT64(p_TgecMemMap->RDRP); + p_Statistics->eStatCRCAlignErrors = GET_UINT64(p_TgecMemMap->RALN); + + p_Statistics->eStatUndersizePkts = GET_UINT64(p_TgecMemMap->TRUND); + p_Statistics->eStatOversizePkts = GET_UINT64(p_TgecMemMap->TROVR); +/* Pause */ + p_Statistics->reStatPause = GET_UINT64(p_TgecMemMap->RXPF); + p_Statistics->teStatPause = GET_UINT64(p_TgecMemMap->TXPF); + + +/* MIB II */ + p_Statistics->ifInOctets = GET_UINT64(p_TgecMemMap->ROCT); + p_Statistics->ifInMcastPkts = GET_UINT64(p_TgecMemMap->RMCA); + p_Statistics->ifInBcastPkts = GET_UINT64(p_TgecMemMap->RBCA); + p_Statistics->ifInPkts = GET_UINT64(p_TgecMemMap->RUCA) + + p_Statistics->ifInMcastPkts + + p_Statistics->ifInBcastPkts; + p_Statistics->ifInDiscards = 0; + p_Statistics->ifInErrors = GET_UINT64(p_TgecMemMap->RERR); + + p_Statistics->ifOutOctets = GET_UINT64(p_TgecMemMap->TOCT); + p_Statistics->ifOutMcastPkts = GET_UINT64(p_TgecMemMap->TMCA); + p_Statistics->ifOutBcastPkts = GET_UINT64(p_TgecMemMap->TBCA); + p_Statistics->ifOutPkts = GET_UINT64(p_TgecMemMap->TUCA); + p_Statistics->ifOutDiscards = 0; + p_Statistics->ifOutErrors = GET_UINT64(p_TgecMemMap->TERR); + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error TgecEnable1588TimeStamp(t_Handle h_Tgec) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + t_TgecMemMap *p_TgecMemMap; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Tgec->p_TgecDriverParam, E_INVALID_STATE); + + p_TgecMemMap = p_Tgec->p_MemMap; + SANITY_CHECK_RETURN_ERROR(p_TgecMemMap, E_INVALID_HANDLE); + + WRITE_UINT32(p_TgecMemMap->cmd_conf_ctrl, GET_UINT32(p_TgecMemMap->cmd_conf_ctrl) | CMD_CFG_EN_TIMESTAMP); + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error TgecDisable1588TimeStamp(t_Handle h_Tgec) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + t_TgecMemMap *p_TgecMemMap; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Tgec->p_TgecDriverParam, E_INVALID_STATE); + + p_TgecMemMap = p_Tgec->p_MemMap; + SANITY_CHECK_RETURN_ERROR(p_TgecMemMap, E_INVALID_HANDLE); + + WRITE_UINT32(p_TgecMemMap->cmd_conf_ctrl, GET_UINT32(p_TgecMemMap->cmd_conf_ctrl) & ~CMD_CFG_EN_TIMESTAMP); + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error TgecModifyMacAddress (t_Handle h_Tgec, t_EnetAddr *p_EnetAddr) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + t_TgecMemMap *p_TgecMemMap; + uint32_t tmpReg32 = 0; + uint64_t addr; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_NULL_POINTER); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_MemMap, E_NULL_POINTER); + + p_TgecMemMap = p_Tgec->p_MemMap; + + /* Initialize MAC Station Address registers (1 & 2) */ + /* Station address have to be swapped (big endian to little endian */ + + addr = ((*(uint64_t *)p_EnetAddr) >> 16); + p_Tgec->addr = addr; + + tmpReg32 = (uint32_t)(addr>>16); + SwapUint32P(&tmpReg32); + WRITE_UINT32(p_TgecMemMap->mac_addr_0, tmpReg32); + + tmpReg32 = (uint32_t)(addr); + SwapUint32P(&tmpReg32); + tmpReg32 >>= 16; + WRITE_UINT32(p_TgecMemMap->mac_addr_1, tmpReg32); + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error TgecResetCounters (t_Handle h_Tgec) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + t_TgecMemMap *p_MemMap ; + uint32_t tmpReg32, cmdConfCtrl; + int i; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_MemMap, E_INVALID_HANDLE); + + p_MemMap= (t_TgecMemMap*)(p_Tgec->p_MemMap); + + cmdConfCtrl = GET_UINT32(p_MemMap->cmd_conf_ctrl); + + cmdConfCtrl |= CMD_CFG_STAT_CLR; + + WRITE_UINT32(p_MemMap->cmd_conf_ctrl, cmdConfCtrl); + + for (i=0; i<1000; i++) + { + tmpReg32 = GET_UINT32(p_MemMap->cmd_conf_ctrl); + if (!(tmpReg32 & CMD_CFG_STAT_CLR)) + break; + } + + cmdConfCtrl &= ~CMD_CFG_STAT_CLR; + WRITE_UINT32(p_MemMap->cmd_conf_ctrl, cmdConfCtrl); + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error TgecAddExactMatchMacAddress(t_Handle h_Tgec, t_EnetAddr *p_EthAddr) +{ + t_Tgec *p_Tgec = (t_Tgec *) h_Tgec; + uint64_t ethAddr; + uint8_t paddrNum; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + + ethAddr = ((*(uint64_t *)p_EthAddr) >> 16); + + if (ethAddr & GROUP_ADDRESS) + /* Multicast address has no effect in PADDR */ + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Multicast address")); + + /* Make sure no PADDR contains this address */ + for (paddrNum = 0; paddrNum < TGEC_NUM_OF_PADDRS; paddrNum++) + { + if (p_Tgec->indAddrRegUsed[paddrNum]) + { + if (p_Tgec->paddr[paddrNum] == ethAddr) + { + RETURN_ERROR(MAJOR, E_ALREADY_EXISTS, NO_MSG); + } + } + } + + /* Find first unused PADDR */ + for (paddrNum = 0; paddrNum < TGEC_NUM_OF_PADDRS; paddrNum++) + { + if (!(p_Tgec->indAddrRegUsed[paddrNum])) + { + /* mark this PADDR as used */ + p_Tgec->indAddrRegUsed[paddrNum] = TRUE; + /* store address */ + p_Tgec->paddr[paddrNum] = ethAddr; + + /* put in hardware */ + HardwareAddAddrInPaddr(p_Tgec, ðAddr, paddrNum); + p_Tgec->numOfIndAddrInRegs++; + + return E_OK; + } + } + + /* No free PADDR */ + RETURN_ERROR(MAJOR, E_FULL, NO_MSG); +} + +/* .............................................................................. */ + +static t_Error TgecDelExactMatchMacAddress(t_Handle h_Tgec, t_EnetAddr *p_EthAddr) +{ + t_Tgec *p_Tgec = (t_Tgec *) h_Tgec; + uint64_t ethAddr; + uint8_t paddrNum; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_MemMap, E_INVALID_HANDLE); + + ethAddr = ((*(uint64_t *)p_EthAddr) >> 16); + + /* Find used PADDR containing this address */ + for (paddrNum = 0; paddrNum < TGEC_NUM_OF_PADDRS; paddrNum++) + { + if ((p_Tgec->indAddrRegUsed[paddrNum]) && + (p_Tgec->paddr[paddrNum] == ethAddr)) + { + /* mark this PADDR as not used */ + p_Tgec->indAddrRegUsed[paddrNum] = FALSE; + /* clear in hardware */ + HardwareClearAddrInPaddr(p_Tgec, paddrNum); + p_Tgec->numOfIndAddrInRegs--; + + return E_OK; + } + } + + RETURN_ERROR(MAJOR, E_NOT_FOUND, NO_MSG); +} + +/* .............................................................................. */ + +static t_Error TgecAddHashMacAddress(t_Handle h_Tgec, t_EnetAddr *p_EthAddr) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + t_TgecMemMap *p_TgecMemMap; + t_EthHashEntry *p_HashEntry; + uint32_t crc; + uint32_t hash; + uint64_t ethAddr; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_NULL_POINTER); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_MemMap, E_NULL_POINTER); + + p_TgecMemMap = p_Tgec->p_MemMap; + ethAddr = ((*(uint64_t *)p_EthAddr) >> 16); + + if (!(ethAddr & GROUP_ADDRESS)) + /* Unicast addresses not supported in hash */ + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("Unicast Address")); + + /* CRC calculation */ + GET_MAC_ADDR_CRC(ethAddr, crc); + crc = MIRROR_32(crc); + + hash = (crc >> HASH_CTRL_MCAST_SHIFT) & HASH_ADDR_MASK; /* Take 9 MSB bits */ + + /* Create element to be added to the driver hash table */ + p_HashEntry = (t_EthHashEntry *)XX_Malloc(sizeof(t_EthHashEntry)); + p_HashEntry->addr = ethAddr; + INIT_LIST(&p_HashEntry->node); + + LIST_AddToTail(&(p_HashEntry->node), &(p_Tgec->p_MulticastAddrHash->p_Lsts[hash])); + WRITE_UINT32(p_TgecMemMap->hashtable_ctrl, (hash | HASH_CTRL_MCAST_EN)); + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error TgecDelHashMacAddress(t_Handle h_Tgec, t_EnetAddr *p_EthAddr) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + t_TgecMemMap *p_TgecMemMap; + t_EthHashEntry *p_HashEntry = NULL; + t_List *p_Pos; + uint32_t crc; + uint32_t hash; + uint64_t ethAddr; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_NULL_POINTER); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_MemMap, E_NULL_POINTER); + + p_TgecMemMap = p_Tgec->p_MemMap; + ethAddr = ((*(uint64_t *)p_EthAddr) >> 16); + + /* CRC calculation */ + GET_MAC_ADDR_CRC(ethAddr, crc); + crc = MIRROR_32(crc); + + hash = (crc >> HASH_CTRL_MCAST_SHIFT) & HASH_ADDR_MASK; /* Take 9 MSB bits */ + + LIST_FOR_EACH(p_Pos, &(p_Tgec->p_MulticastAddrHash->p_Lsts[hash])) + { + + p_HashEntry = ETH_HASH_ENTRY_OBJ(p_Pos); + if(p_HashEntry->addr == ethAddr) + { + LIST_DelAndInit(&p_HashEntry->node); + XX_Free(p_HashEntry); + break; + } + } + if(LIST_IsEmpty(&p_Tgec->p_MulticastAddrHash->p_Lsts[hash])) + WRITE_UINT32(p_TgecMemMap->hashtable_ctrl, (hash & ~HASH_CTRL_MCAST_EN)); + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error TgecGetId(t_Handle h_Tgec, uint32_t *macId) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Tgec->p_TgecDriverParam, E_NULL_POINTER); + + UNUSED(p_Tgec); + UNUSED(macId); + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("TgecGetId Not Supported")); +} + +/* .............................................................................. */ + +static t_Error TgecGetVersion(t_Handle h_Tgec, uint32_t *macVersion) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + t_TgecMemMap *p_TgecMemMap; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Tgec->p_TgecDriverParam, E_NULL_POINTER); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_MemMap, E_NULL_POINTER); + + p_TgecMemMap = p_Tgec->p_MemMap; + *macVersion = GET_UINT32(p_TgecMemMap->tgec_id); + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error TgecSetExcpetion(t_Handle h_Tgec, e_FmMacExceptions exception, bool enable) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + uint32_t bitMask = 0, tmpReg; + t_TgecMemMap *p_TgecMemMap; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Tgec->p_TgecDriverParam, E_NULL_POINTER); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_MemMap, E_NULL_POINTER); + + p_TgecMemMap = p_Tgec->p_MemMap; +#ifdef FM_10G_REM_N_LCL_FLT_EX_ERRATA_10GMAC001 + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_Tgec->fmMacControllerDriver.h_Fm, &revInfo); + if((revInfo.majorRev <=2) && + enable && + ((exception == e_FM_MAC_EX_10G_LOC_FAULT) || (exception == e_FM_MAC_EX_10G_REM_FAULT))) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("e_FM_MAC_EX_10G_LOC_FAULT and e_FM_MAC_EX_10G_REM_FAULT !")); + } +#endif /* FM_10G_REM_N_LCL_FLT_EX_ERRATA_10GMAC001 */ + + GET_EXCEPTION_FLAG(bitMask, exception); + if(bitMask) + { + if (enable) + p_Tgec->exceptions |= bitMask; + else + p_Tgec->exceptions &= ~bitMask; + } + else + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Undefined exception")); + + tmpReg = GET_UINT32(p_TgecMemMap->imask); + if(enable) + tmpReg |= bitMask; + else + tmpReg &= ~bitMask; + WRITE_UINT32(p_TgecMemMap->imask, tmpReg); + return E_OK; +} + +/* .............................................................................. */ + +static uint16_t TgecGetMaxFrameLength(t_Handle h_Tgec) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + + SANITY_CHECK_RETURN_VALUE(p_Tgec, E_INVALID_HANDLE, 0); + + return (uint16_t)GET_UINT32(p_Tgec->p_MemMap->maxfrm); +} + +/* .............................................................................. */ + +#ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 +static t_Error TgecTxEccWorkaround(t_Tgec *p_Tgec) +{ + t_Error err; + + XX_Print("Applying 10G tx-ecc error workaround (10GMAC-A004) ..."); + /* enable and set promiscuous */ + WRITE_UINT32(p_Tgec->p_MemMap->cmd_conf_ctrl, CMD_CFG_PROMIS_EN | CMD_CFG_TX_EN | CMD_CFG_RX_EN); + err = Fm10GTxEccWorkaround(p_Tgec->fmMacControllerDriver.h_Fm, p_Tgec->macId); + /* disable */ + WRITE_UINT32(p_Tgec->p_MemMap->cmd_conf_ctrl, 0); + if (err) + XX_Print("FAILED!\n"); + else + XX_Print("done.\n"); + TgecResetCounters (p_Tgec); + + return err; +} +#endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */ + +/* .............................................................................. */ + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) +static t_Error TgecDumpRegs(t_Handle h_Tgec) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + + DECLARE_DUMP; + + if (p_Tgec->p_MemMap) + { + DUMP_TITLE(p_Tgec->p_MemMap, ("10G MAC %d: ", p_Tgec->macId)); + DUMP_VAR(p_Tgec->p_MemMap, tgec_id); + DUMP_VAR(p_Tgec->p_MemMap, scratch); + DUMP_VAR(p_Tgec->p_MemMap, cmd_conf_ctrl); + DUMP_VAR(p_Tgec->p_MemMap, mac_addr_0); + DUMP_VAR(p_Tgec->p_MemMap, mac_addr_1); + DUMP_VAR(p_Tgec->p_MemMap, maxfrm); + DUMP_VAR(p_Tgec->p_MemMap, pause_quant); + DUMP_VAR(p_Tgec->p_MemMap, rx_fifo_sections); + DUMP_VAR(p_Tgec->p_MemMap, tx_fifo_sections); + DUMP_VAR(p_Tgec->p_MemMap, rx_fifo_almost_f_e); + DUMP_VAR(p_Tgec->p_MemMap, tx_fifo_almost_f_e); + DUMP_VAR(p_Tgec->p_MemMap, hashtable_ctrl); + DUMP_VAR(p_Tgec->p_MemMap, mdio_cfg_status); + DUMP_VAR(p_Tgec->p_MemMap, mdio_command); + DUMP_VAR(p_Tgec->p_MemMap, mdio_data); + DUMP_VAR(p_Tgec->p_MemMap, mdio_regaddr); + DUMP_VAR(p_Tgec->p_MemMap, status); + DUMP_VAR(p_Tgec->p_MemMap, tx_ipg_len); + DUMP_VAR(p_Tgec->p_MemMap, mac_addr_2); + DUMP_VAR(p_Tgec->p_MemMap, mac_addr_3); + DUMP_VAR(p_Tgec->p_MemMap, rx_fifo_ptr_rd); + DUMP_VAR(p_Tgec->p_MemMap, rx_fifo_ptr_wr); + DUMP_VAR(p_Tgec->p_MemMap, tx_fifo_ptr_rd); + DUMP_VAR(p_Tgec->p_MemMap, tx_fifo_ptr_wr); + DUMP_VAR(p_Tgec->p_MemMap, imask); + DUMP_VAR(p_Tgec->p_MemMap, ievent); + DUMP_VAR(p_Tgec->p_MemMap, udp_port); + DUMP_VAR(p_Tgec->p_MemMap, type_1588v2); + } + + return E_OK; +} +#endif /* (defined(DEBUG_ERRORS) && ... */ + + +/*****************************************************************************/ +/* FM Init & Free API */ +/*****************************************************************************/ + +/* .............................................................................. */ + +static t_Error TgecInit(t_Handle h_Tgec) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + t_TgecDriverParam *p_TgecDriverParam; + t_TgecMemMap *p_MemMap; + uint64_t addr; + uint32_t tmpReg32; + t_Error err; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_TgecDriverParam, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_MemMap, E_INVALID_HANDLE); + +#ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 + if (!p_Tgec->p_TgecDriverParam->skipFman11Workaround && + ((err = TgecTxEccWorkaround(p_Tgec)) != E_OK)) +#ifdef NCSW_LINUX + { + /* the workaround fails in simics, just report and continue initialization */ + REPORT_ERROR(MAJOR, err, ("TgecTxEccWorkaround FAILED, skipping workaround")); + } +#else + { + FreeInitResources(p_Tgec); + RETURN_ERROR(MAJOR, err, ("TgecTxEccWorkaround FAILED")); + } +#endif +#endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */ + + CHECK_INIT_PARAMETERS(p_Tgec, CheckInitParameters); + + p_TgecDriverParam = p_Tgec->p_TgecDriverParam; + p_MemMap = p_Tgec->p_MemMap; + + /* MAC Address */ + addr = p_Tgec->addr; + tmpReg32 = (uint32_t)(addr>>16); + SwapUint32P(&tmpReg32); + WRITE_UINT32(p_MemMap->mac_addr_0, tmpReg32); + + tmpReg32 = (uint32_t)(addr); + SwapUint32P(&tmpReg32); + tmpReg32 >>= 16; + WRITE_UINT32(p_MemMap->mac_addr_1, tmpReg32); + + /* Config */ + tmpReg32 = 0; + if (p_TgecDriverParam->wanModeEnable) + tmpReg32 |= CMD_CFG_WAN_MODE; + if (p_TgecDriverParam->promiscuousModeEnable) + tmpReg32 |= CMD_CFG_PROMIS_EN; + if (p_TgecDriverParam->pauseForwardEnable) + tmpReg32 |= CMD_CFG_PAUSE_FWD; + if (p_TgecDriverParam->pauseIgnore) + tmpReg32 |= CMD_CFG_PAUSE_IGNORE; + if (p_TgecDriverParam->txAddrInsEnable) + tmpReg32 |= CMD_CFG_TX_ADDR_INS; + if (p_TgecDriverParam->loopbackEnable) + tmpReg32 |= CMD_CFG_LOOPBACK_EN; + if (p_TgecDriverParam->cmdFrameEnable) + tmpReg32 |= CMD_CFG_CMD_FRM_EN; + if (p_TgecDriverParam->rxErrorDiscard) + tmpReg32 |= CMD_CFG_RX_ER_DISC; + if (p_TgecDriverParam->phyTxenaOn) + tmpReg32 |= CMD_CFG_PHY_TX_EN; + if (p_TgecDriverParam->sendIdleEnable) + tmpReg32 |= CMD_CFG_SEND_IDLE; + if (p_TgecDriverParam->noLengthCheckEnable) + tmpReg32 |= CMD_CFG_NO_LEN_CHK; + if (p_TgecDriverParam->lgthCheckNostdr) + tmpReg32 |= CMD_CFG_LEN_CHK_NOSTDR; + if (p_TgecDriverParam->timeStampEnable) + tmpReg32 |= CMD_CFG_EN_TIMESTAMP; + if (p_TgecDriverParam->rxSfdAny) + tmpReg32 |= RX_SFD_ANY; + if (p_TgecDriverParam->rxPblFwd) + tmpReg32 |= CMD_CFG_RX_PBL_FWD; + if (p_TgecDriverParam->txPblFwd) + tmpReg32 |= CMD_CFG_TX_PBL_FWD; + tmpReg32 |= 0x40; + WRITE_UINT32(p_MemMap->cmd_conf_ctrl, tmpReg32); + + /* Max Frame Length */ + WRITE_UINT32(p_MemMap->maxfrm, (uint32_t)p_TgecDriverParam->maxFrameLength); + err = FmSetMacMaxFrame(p_Tgec->fmMacControllerDriver.h_Fm, e_FM_MAC_10G, p_Tgec->fmMacControllerDriver.macId, p_TgecDriverParam->maxFrameLength); + if(err) + { + FreeInitResources(p_Tgec); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + /* Pause Time */ + WRITE_UINT32(p_MemMap->pause_quant, p_TgecDriverParam->pauseTime); + +#ifdef FM_TX_FIFO_CORRUPTION_ERRATA_10GMAC_A007 + WRITE_UINT32(p_Tgec->p_MemMap->tx_ipg_len, + (GET_UINT32(p_Tgec->p_MemMap->tx_ipg_len) & ~TX_IPG_LENGTH_MASK) | DEFAULT_txIpgLength); +#endif /* FM_TX_FIFO_CORRUPTION_ERRATA_10GMAC_A007 */ + + /* Configure MII */ + tmpReg32 = GET_UINT32(p_Tgec->p_MiiMemMap->mdio_cfg_status); +#ifdef FM_10G_MDIO_HOLD_ERRATA_XAUI3 + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_Tgec->fmMacControllerDriver.h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + tmpReg32 |= (MIIMCOM_MDIO_HOLD_4_REG_CLK << 2); + } +#endif /* FM_10G_MDIO_HOLD_ERRATA_XAUI3 */ + tmpReg32 &= ~MIIMCOM_DIV_MASK; + /* (one half of fm clock => 2.5Mhz) */ + tmpReg32 |=((((p_Tgec->fmMacControllerDriver.clkFreq*10)/2)/25) << MIIMCOM_DIV_SHIFT); + WRITE_UINT32(p_Tgec->p_MiiMemMap->mdio_cfg_status, tmpReg32); + + p_Tgec->p_MulticastAddrHash = AllocHashTable(HASH_TABLE_SIZE); + if(!p_Tgec->p_MulticastAddrHash) + { + FreeInitResources(p_Tgec); + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("allocation hash table is FAILED")); + } + + p_Tgec->p_UnicastAddrHash = AllocHashTable(HASH_TABLE_SIZE); + if(!p_Tgec->p_UnicastAddrHash) + { + FreeInitResources(p_Tgec); + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("allocation hash table is FAILED")); + } + + /* interrupts */ +#ifdef FM_10G_REM_N_LCL_FLT_EX_ERRATA_10GMAC001 + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_Tgec->fmMacControllerDriver.h_Fm, &revInfo); + if (revInfo.majorRev <=2) + p_Tgec->exceptions &= ~(IMASK_REM_FAULT | IMASK_LOC_FAULT); + } +#endif /* FM_10G_REM_N_LCL_FLT_EX_ERRATA_10GMAC001 */ + WRITE_UINT32(p_MemMap->ievent, EVENTS_MASK); + WRITE_UINT32(p_MemMap->imask, p_Tgec->exceptions); + + FmRegisterIntr(p_Tgec->fmMacControllerDriver.h_Fm, e_FM_MOD_10G_MAC, p_Tgec->macId, e_FM_INTR_TYPE_ERR, TgecErrException , p_Tgec); + if ((p_Tgec->mdioIrq != 0) && (p_Tgec->mdioIrq != NO_IRQ)) + { + XX_SetIntr(p_Tgec->mdioIrq, TgecException, p_Tgec); + XX_EnableIntr(p_Tgec->mdioIrq); + } + else if (p_Tgec->mdioIrq == 0) + REPORT_ERROR(MINOR, E_NOT_SUPPORTED, (NO_MSG)); + + XX_Free(p_TgecDriverParam); + p_Tgec->p_TgecDriverParam = NULL; + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error TgecFree(t_Handle h_Tgec) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + + FreeInitResources(p_Tgec); + + if (p_Tgec->p_TgecDriverParam) + { + XX_Free(p_Tgec->p_TgecDriverParam); + p_Tgec->p_TgecDriverParam = NULL; + } + XX_Free (p_Tgec); + + return E_OK; +} + +/* .............................................................................. */ + +static void InitFmMacControllerDriver(t_FmMacControllerDriver *p_FmMacControllerDriver) +{ + p_FmMacControllerDriver->f_FM_MAC_Init = TgecInit; + p_FmMacControllerDriver->f_FM_MAC_Free = TgecFree; + + p_FmMacControllerDriver->f_FM_MAC_ConfigLoopback = TgecConfigLoopback; + p_FmMacControllerDriver->f_FM_MAC_ConfigMaxFrameLength = TgecConfigMaxFrameLength; + + p_FmMacControllerDriver->f_FM_MAC_ConfigWan = TgecConfigWan; + + p_FmMacControllerDriver->f_FM_MAC_ConfigPadAndCrc = NULL; /* TGEC always works with pad+crc */ + p_FmMacControllerDriver->f_FM_MAC_ConfigHalfDuplex = NULL; /* half-duplex is not supported in xgec */ + p_FmMacControllerDriver->f_FM_MAC_ConfigLengthCheck = TgecConfigLengthCheck; + p_FmMacControllerDriver->f_FM_MAC_ConfigException = TgecConfigException; + +#ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 + p_FmMacControllerDriver->f_FM_MAC_ConfigSkipFman11Workaround= TgecConfigSkipFman11Workaround; +#endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */ + + p_FmMacControllerDriver->f_FM_MAC_SetException = TgecSetExcpetion; + + p_FmMacControllerDriver->f_FM_MAC_Enable1588TimeStamp = TgecEnable1588TimeStamp; + p_FmMacControllerDriver->f_FM_MAC_Disable1588TimeStamp = TgecDisable1588TimeStamp; + + p_FmMacControllerDriver->f_FM_MAC_SetPromiscuous = TgecSetPromiscuous; + p_FmMacControllerDriver->f_FM_MAC_AdjustLink = NULL; + + p_FmMacControllerDriver->f_FM_MAC_Enable = TgecEnable; + p_FmMacControllerDriver->f_FM_MAC_Disable = TgecDisable; + + p_FmMacControllerDriver->f_FM_MAC_SetTxAutoPauseFrames = TgecTxMacPause; + p_FmMacControllerDriver->f_FM_MAC_SetRxIgnorePauseFrames = TgecRxIgnoreMacPause; + + p_FmMacControllerDriver->f_FM_MAC_ResetCounters = TgecResetCounters; + p_FmMacControllerDriver->f_FM_MAC_GetStatistics = TgecGetStatistics; + + p_FmMacControllerDriver->f_FM_MAC_ModifyMacAddr = TgecModifyMacAddress; + p_FmMacControllerDriver->f_FM_MAC_AddHashMacAddr = TgecAddHashMacAddress; + p_FmMacControllerDriver->f_FM_MAC_RemoveHashMacAddr = TgecDelHashMacAddress; + p_FmMacControllerDriver->f_FM_MAC_AddExactMatchMacAddr = TgecAddExactMatchMacAddress; + p_FmMacControllerDriver->f_FM_MAC_RemovelExactMatchMacAddr = TgecDelExactMatchMacAddress; + p_FmMacControllerDriver->f_FM_MAC_GetId = TgecGetId; + p_FmMacControllerDriver->f_FM_MAC_GetVersion = TgecGetVersion; + p_FmMacControllerDriver->f_FM_MAC_GetMaxFrameLength = TgecGetMaxFrameLength; + + p_FmMacControllerDriver->f_FM_MAC_MII_WritePhyReg = TGEC_MII_WritePhyReg; + p_FmMacControllerDriver->f_FM_MAC_MII_ReadPhyReg = TGEC_MII_ReadPhyReg; + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) + p_FmMacControllerDriver->f_FM_MAC_DumpRegs = TgecDumpRegs; +#endif /* (defined(DEBUG_ERRORS) && ... */ +} + + +/*****************************************************************************/ +/* Tgec Config Main Entry */ +/*****************************************************************************/ + +/* .............................................................................. */ + +t_Handle TGEC_Config(t_FmMacParams *p_FmMacParam) +{ + t_Tgec *p_Tgec; + t_TgecDriverParam *p_TgecDriverParam; + uintptr_t baseAddr; + uint8_t i; + + SANITY_CHECK_RETURN_VALUE(p_FmMacParam, E_NULL_POINTER, NULL); + + baseAddr = p_FmMacParam->baseAddr; + /* allocate memory for the UCC GETH data structure. */ + p_Tgec = (t_Tgec *) XX_Malloc(sizeof(t_Tgec)); + if (!p_Tgec) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("10G MAC driver structure")); + return NULL; + } + /* Zero out * p_Tgec */ + memset(p_Tgec, 0, sizeof(t_Tgec)); + InitFmMacControllerDriver(&p_Tgec->fmMacControllerDriver); + + /* allocate memory for the 10G MAC driver parameters data structure. */ + p_TgecDriverParam = (t_TgecDriverParam *) XX_Malloc(sizeof(t_TgecDriverParam)); + if (!p_TgecDriverParam) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("10G MAC driver parameters")); + TgecFree(p_Tgec); + return NULL; + } + /* Zero out */ + memset(p_TgecDriverParam, 0, sizeof(t_TgecDriverParam)); + + /* Plant parameter structure pointer */ + p_Tgec->p_TgecDriverParam = p_TgecDriverParam; + + SetDefaultParam(p_TgecDriverParam); + + for (i=0; i < sizeof(p_FmMacParam->addr); i++) + p_Tgec->addr |= ((uint64_t)p_FmMacParam->addr[i] << ((5-i) * 8)); + + p_Tgec->p_MemMap = (t_TgecMemMap *)UINT_TO_PTR(baseAddr); + p_Tgec->p_MiiMemMap = (t_TgecMiiAccessMemMap *)UINT_TO_PTR(baseAddr + TGEC_TO_MII_OFFSET); + p_Tgec->enetMode = p_FmMacParam->enetMode; + p_Tgec->macId = p_FmMacParam->macId; + p_Tgec->exceptions = DEFAULT_exceptions; + p_Tgec->mdioIrq = p_FmMacParam->mdioIrq; + p_Tgec->f_Exception = p_FmMacParam->f_Exception; + p_Tgec->f_Event = p_FmMacParam->f_Event; + p_Tgec->h_App = p_FmMacParam->h_App; + + return p_Tgec; +} --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/tgec.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/tgec.h @@ -0,0 +1,482 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 tgec.h + + @Description FM 10G MAC ... +*//***************************************************************************/ +#ifndef __TGEC_H +#define __TGEC_H + +#include "std_ext.h" +#include "error_ext.h" +#include "list_ext.h" +#include "tgec_mii_acc.h" +#include "fm_mac.h" + + +/* Interrupt Mask Register (IMASK) */ +#define IMASK_MDIO_SCAN_EVENTMDIO 0x00010000 /* MDIO_SCAN_EVENTMDIO scan event interrupt mask. + * 0 masked + * 1 enabled + */ +#define IMASK_MDIO_CMD_CMPL 0x00008000 /* 16 MDIO_CMD_CMPL MDIO command completion interrupt mask. + * 0 masked + * 1 enabled + */ +#define IMASK_REM_FAULT 0x00004000 /* 17 REM_FAULT Remote fault interrupt mask. + * 0 masked + * 1 enabled + */ +#define IMASK_LOC_FAULT 0x00002000 /* 18 LOC_FAULT Local fault interrupt mask. + * 0 masked + * 1 enabled + */ +#define IMASK_1TX_ECC_ER 0x00001000 /* 19 TX_ECC_ER Transmit frame ECC error interrupt mask. + * 0 masked + * 1 enabled + */ +#define IMASK_TX_FIFO_UNFL 0x00000800 /* 20 TX_FIFO_UNFL Transmit FIFO underflow interrupt mask. + * 0 masked + * 1 enabled + */ +#define IMASK_TX_FIFO_OVFL 0x00000400 /* 21 TX_FIFO_OVFL Transmit FIFO overflow interrupt mask. + * 0 masked + * 1 enabled + */ +#define IMASK_TX_ER 0x00000200 /* 22 TX_ER Transmit frame error interrupt mask. + * 0 masked + * 1 enabled + */ +#define IMASK_RX_FIFO_OVFL 0x00000100 /* 23 RX_FIFO_OVFL Receive FIFO overflow interrupt mask. + * 0 masked + * 1 enabled + */ +#define IMASK_RX_ECC_ER 0x00000080 /* 24 RX_ECC_ER Receive frame ECC error interrupt mask. + * 0 masked + * 1 enabled + */ +#define IMASK_RX_JAB_FRM 0x00000040 /* 25 RX_JAB_FRM Receive jabber frame interrupt mask. + * 0 masked + * 1 enabled + */ +#define IMASK_RX_OVRSZ_FRM 0x00000020 /* 26 RX_OVRSZ_FRM Receive oversized frame interrupt mask. + * 0 masked + * 1 enabled + */ +#define IMASK_RX_RUNT_FRM 0x00000010 /* 27 RX_RUNT_FRM Receive runt frame interrupt mask. + * 0 masked + * 1 enabled + */ +#define IMASK_RX_FRAG_FRM 0x00000008 /* 28 RX_FRAG_FRM Receive fragment frame interrupt mask. + * 0 masked + * 1 enabled + */ +#define IMASK_RX_LEN_ER 0x00000004 /* 29 RX_LEN_ER Receive payload length error interrupt mask. + * 0 masked + * 1 enabled + */ +#define IMASK_RX_CRC_ER 0x00000002 /* 30 RX_CRC_ER Receive CRC error interrupt mask. + * 0 masked + * 1 enabled + */ +#define IMASK_RX_ALIGN_ER 0x00000001 /* 31 RX_ALIGN_ER Receive alignment error interrupt mask. + * 0 masked + * 1 enabled + */ + +#define EVENTS_MASK ((uint32_t)(IMASK_MDIO_SCAN_EVENTMDIO | \ + IMASK_MDIO_CMD_CMPL | \ + IMASK_REM_FAULT | \ + IMASK_LOC_FAULT | \ + IMASK_1TX_ECC_ER | \ + IMASK_TX_FIFO_UNFL | \ + IMASK_TX_FIFO_OVFL | \ + IMASK_TX_ER | \ + IMASK_RX_FIFO_OVFL | \ + IMASK_RX_ECC_ER | \ + IMASK_RX_JAB_FRM | \ + IMASK_RX_OVRSZ_FRM | \ + IMASK_RX_RUNT_FRM | \ + IMASK_RX_FRAG_FRM | \ + IMASK_RX_LEN_ER | \ + IMASK_RX_CRC_ER | \ + IMASK_RX_ALIGN_ER)) + +#define GET_EXCEPTION_FLAG(bitMask, exception) switch(exception){ \ + case e_FM_MAC_EX_10G_MDIO_SCAN_EVENTMDIO: \ + bitMask = IMASK_MDIO_SCAN_EVENTMDIO; break; \ + case e_FM_MAC_EX_10G_MDIO_CMD_CMPL: \ + bitMask = IMASK_MDIO_CMD_CMPL ; break; \ + case e_FM_MAC_EX_10G_REM_FAULT: \ + bitMask = IMASK_REM_FAULT ; break; \ + case e_FM_MAC_EX_10G_LOC_FAULT: \ + bitMask = IMASK_LOC_FAULT ; break; \ + case e_FM_MAC_EX_10G_1TX_ECC_ER: \ + bitMask = IMASK_1TX_ECC_ER ; break; \ + case e_FM_MAC_EX_10G_TX_FIFO_UNFL: \ + bitMask = IMASK_TX_FIFO_UNFL ; break; \ + case e_FM_MAC_EX_10G_TX_FIFO_OVFL: \ + bitMask = IMASK_TX_FIFO_OVFL ; break; \ + case e_FM_MAC_EX_10G_TX_ER: \ + bitMask = IMASK_TX_ER ; break; \ + case e_FM_MAC_EX_10G_RX_FIFO_OVFL: \ + bitMask = IMASK_RX_FIFO_OVFL ; break; \ + case e_FM_MAC_EX_10G_RX_ECC_ER: \ + bitMask = IMASK_RX_ECC_ER ; break; \ + case e_FM_MAC_EX_10G_RX_JAB_FRM: \ + bitMask = IMASK_RX_JAB_FRM ; break; \ + case e_FM_MAC_EX_10G_RX_OVRSZ_FRM: \ + bitMask = IMASK_RX_OVRSZ_FRM ; break; \ + case e_FM_MAC_EX_10G_RX_RUNT_FRM: \ + bitMask = IMASK_RX_RUNT_FRM ; break; \ + case e_FM_MAC_EX_10G_RX_FRAG_FRM: \ + bitMask = IMASK_RX_FRAG_FRM ; break; \ + case e_FM_MAC_EX_10G_RX_LEN_ER: \ + bitMask = IMASK_RX_LEN_ER ; break; \ + case e_FM_MAC_EX_10G_RX_CRC_ER: \ + bitMask = IMASK_RX_CRC_ER ; break; \ + case e_FM_MAC_EX_10G_RX_ALIGN_ER: \ + bitMask = IMASK_RX_ALIGN_ER ; break; \ + default: bitMask = 0;break;} + + +/* Default Config Params */ +#define DEFAULT_wanModeEnable FALSE +#define DEFAULT_promiscuousModeEnable FALSE + + +#define DEFAULT_pauseForwardEnable FALSE +#define DEFAULT_pauseIgnore FALSE +#define DEFAULT_txAddrInsEnable FALSE + +#define DEFAULT_loopbackEnable FALSE +#define DEFAULT_cmdFrameEnable FALSE +#define DEFAULT_rxErrorDiscard FALSE +#define DEFAULT_phyTxenaOn FALSE +#define DEFAULT_sendIdleEnable FALSE +#define DEFAULT_noLengthCheckEnable TRUE +#define DEFAULT_lgthCheckNostdr FALSE +#define DEFAULT_timeStampEnable FALSE +#define DEFAULT_rxSfdAny FALSE +#define DEFAULT_rxPblFwd FALSE +#define DEFAULT_txPblFwd FALSE +#define DEFAULT_txIpgLength 12 + +#define DEFAULT_maxFrameLength 0x600 + +#define DEFAULT_debugMode FALSE +#define DEFAULT_pauseTime 0xf000 +#define DEFAULT_imask 0xf000 +#ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 +#define DEFAULT_skipFman11Workaround FALSE +#endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */ + +#define DEFAULT_exceptions ((uint32_t)(IMASK_MDIO_SCAN_EVENTMDIO | \ + IMASK_REM_FAULT | \ + IMASK_LOC_FAULT | \ + IMASK_1TX_ECC_ER | \ + IMASK_TX_FIFO_UNFL | \ + IMASK_TX_FIFO_OVFL | \ + IMASK_TX_ER | \ + IMASK_RX_FIFO_OVFL | \ + IMASK_RX_ECC_ER | \ + IMASK_RX_JAB_FRM | \ + IMASK_RX_OVRSZ_FRM | \ + IMASK_RX_RUNT_FRM | \ + IMASK_RX_FRAG_FRM | \ + IMASK_RX_CRC_ER | \ + IMASK_RX_ALIGN_ER)) + +#define MAX_PACKET_ALIGNMENT 31 +#define MAX_INTER_PACKET_GAP 0x7f +#define MAX_INTER_PALTERNATE_BEB 0x0f +#define MAX_RETRANSMISSION 0x0f +#define MAX_COLLISION_WINDOW 0x03ff + + +#define TGEC_NUM_OF_PADDRS 1 /* number of pattern match registers (entries) */ + +#define GROUP_ADDRESS 0x0000010000000000LL /* Group address bit indication */ + +#define HASH_TABLE_SIZE 512 /* Hash table size (= 32 bits * 8 regs) */ + +#define TGEC_TO_MII_OFFSET 0x1030 /* Offset from the MEM map to the MDIO mem map */ + +/* 10-gigabit Ethernet MAC Controller ID (10GEC_ID) */ +#define TGEC_ID_ID 0xffff0000 +#define TGEC_ID_MAC_VERSION 0x0000FF00 +#define TGEC_ID_MAC_REV 0x000000ff + +/* Command and Configuration Register (COMMAND_CONFIG) */ +#define CMD_CFG_TX_PBL_FWD 0x00800000 /* 08 Transmit Preamble Forwarding (custom preamble). + */ +#define CMD_CFG_RX_PBL_FWD 0x00400000 /* 09 Receive Preamble Forwarding (custom preamble). + */ +#define RX_SFD_ANY 0x00200000 /* 10 Enables, when set, that any character is allowed at the SFD position of the preamble and the frame will be accepted. + */ +#define CMD_CFG_EN_TIMESTAMP 0x00100000 /* 11 EN_TIMESTAMP IEEE 1588 timeStamp functionality control. + * 0 disabled + * 1 enabled + */ +#define CMD_CFG_TX_ADDR_INS_SEL 0x00080000 /* 12 TX_ADDR_INS_SEL Transmit MAC address select + * 0 insert using first MAC address + * 1 insert using second MAC address + */ +#define CMD_CFG_LEN_CHK_NOSTDR 0x00040000 /* 13 LEN_CHK_NOSTDR + */ +#define CMD_CFG_NO_LEN_CHK 0x00020000 /* 14 NO_LEN_CHK Payload length check disable + * 0 MAC compares the frame payload length with the frame length/type field. + * 1 Payload length check is disabled. + */ +#define CMD_CFG_SEND_IDLE 0x00010000 /* 15 SEND_IDLE Force idle generation + * 0 Normal operation. + * 1 MAC permanently sends XGMII idle sequences even when faults are received. + */ +#define CMD_CFG_PHY_TX_EN 0x00008000 /* 16 PHY_TX_EN PHY transmit enable + * 0 PHY transmit is disabled. + * 1 PHY transmit is enabled. + */ +#define CMD_CFG_RX_ER_DISC 0x00004000 /* 17 RX_ER_DISC Receive error frame discard enable + * 0 Received error frames are processed. + * 1 Any frame received with an error is discarded. + */ +#define CMD_CFG_CMD_FRM_EN 0x00002000 /* 18 CMD_FRM_EN Command frame reception enable + * 0 Only Pause frames are accepted (all other command frames are rejected). + * 1 All command frames are accepted. + */ +#define CMD_CFG_STAT_CLR 0x00001000 /* 19 STAT_CLR Clear statistics + * 0 Normal operations. + * 1 All statistics counters are cleared. + */ +#define CMD_CFG_LOOPBACK_EN 0x00000400 /* 21 LOOPBAC_EN PHY interface loopback enable + * 0 Configure PHY for normal operation. + * 1 Configure PHY for loopback mode. + */ +#define CMD_CFG_TX_ADDR_INS 0x00000200 /* 22 TX_ADDR_INS Transmit source MAC address insertion + * 0 MAC transmits the source MAC address unmodified. + * 1 MAC overwrites the source MAC address with address specified by COMMAND_CONFIG[TX_ADDR_INS_SEL]. + */ +#define CMD_CFG_PAUSE_IGNORE 0x00000100 /* 23 PAUSE_IGNORE Ignore Pause frame quanta + * 0 MAC stops transmit process for the duration specified in the Pause frame quanta of a received Pause frame. + * 1 MAC ignores received Pause frames. + */ +#define CMD_CFG_PAUSE_FWD 0x00000080 /* 24 PAUSE_FWD Terminate/forward received Pause frames + * 0 MAC terminates and discards received Pause frames. + * 1 MAC forwards Pause frames to the user application. + */ +#define CMD_CFG_PROMIS_EN 0x00000010 /* 27 PROMIS_EN Promiscuous operation enable + * 0 Unicast frames with a destination address not matching the core MAC address (defined by registers, MAC_ADDR_0 and MAC_ADDR_1) are rejected. + * 1 All frames are received without any MAC address filtering. + */ +#define CMD_CFG_WAN_MODE 0x00000008 /* 28 WAN_MODE WAN mode enable + * 0 Configure MAC for LAN mode. + * 1 Configure MAC for WAN mode. + */ +#define CMD_CFG_RX_EN 0x00000002 /* 30 RX_EN MAC receive path enable + * 0 MAC receive path is disabled + * 1 MAC receive path is enabled. + */ +#define CMD_CFG_TX_EN 0x00000001 /* 31 TX_EN MAC transmit path enable + * 0 MAC transmit path is disabled + * 1 MAC transmit path is enabled. + */ + +/* Hashtable Control Register (HASHTABLE_CTRL) */ +#define HASH_CTRL_MCAST_SHIFT 23 + +#define HASH_CTRL_MCAST_RD 0x00000400 /* 22 MCAST_READ Entry Multicast frame reception for the hash entry. + * 0 disabled + * 1 enabled + */ +#define HASH_CTRL_MCAST_EN 0x00000200 /* 22 MCAST_EN Multicast frame reception for the hash entry. + * 0 disabled + * 1 enabled + */ +#define HASH_ADDR_MASK 0x000001ff /* 23-31 HASH_ADDR Hash table address code. + */ + +/* Transmit Inter-Packet Gap Length Register (TX_IPG_LENGTH) */ +#define TX_IPG_LENGTH_MASK 0x000003ff + + + +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(push,1) +#endif /* defined(__MWERKS__) && ... */ +#define MEM_MAP_START + +/* + * 10G memory map + */ +typedef _Packed struct { +/* 10Ge General Control and Status */ + volatile uint32_t tgec_id; /* 0x000 10GEC_ID - Controller ID register */ + volatile uint32_t scratch; /* 0x004 */ + volatile uint32_t cmd_conf_ctrl; /* 0x008 COMMAND_CONFIG - Control and configuration register */ + volatile uint32_t mac_addr_0; /* 0x00C MAC_ADDR_0 - Lower 32 bits of the first 48-bit MAC address */ + volatile uint32_t mac_addr_1; /* 0x010 MAC_ADDR_1 - Upper 16 bits of the first 48-bit MAC address */ + volatile uint32_t maxfrm; /* 0x014 MAXFRM - Maximum frame length register */ + volatile uint32_t pause_quant; /* 0x018 PAUSE_QUANT - Pause quanta register */ + volatile uint32_t rx_fifo_sections; /* 0x01c */ + volatile uint32_t tx_fifo_sections; /* 0x020 */ + volatile uint32_t rx_fifo_almost_f_e; /* 0x024 */ + volatile uint32_t tx_fifo_almost_f_e; /* 0x028 */ + volatile uint32_t hashtable_ctrl; /* 0x02C HASHTABLE_CTRL - Hash table control register */ + volatile uint32_t mdio_cfg_status; /* 0x030 */ + volatile uint32_t mdio_command; /* 0x034 */ + volatile uint32_t mdio_data; /* 0x038 */ + volatile uint32_t mdio_regaddr; /* 0x03c */ + volatile uint32_t status; /* 0x040 */ + volatile uint32_t tx_ipg_len; /* 0x044 TX_IPG_LENGTH - Transmitter inter-packet-gap register */ + volatile uint32_t mac_addr_2; /* 0x048 MAC_ADDR_2 - Lower 32 bits of the second 48-bit MAC address */ + volatile uint32_t mac_addr_3; /* 0x04C MAC_ADDR_3 - Upper 16 bits of the second 48-bit MAC address */ + volatile uint32_t rx_fifo_ptr_rd; /* 0x050 */ + volatile uint32_t rx_fifo_ptr_wr; /* 0x054 */ + volatile uint32_t tx_fifo_ptr_rd; /* 0x058 */ + volatile uint32_t tx_fifo_ptr_wr; /* 0x05c */ + volatile uint32_t imask; /* 0x060 IMASK - Interrupt mask register */ + volatile uint32_t ievent; /* 0x064 IEVENT - Interrupt event register */ + volatile uint32_t udp_port; /* 0x068 Defines a UDP Port number. When an UDP/IP frame is received with a matching UDP destination port, the receive status indication pin ff_rx_ts_frm will be asserted.*/ + volatile uint32_t type_1588v2; /* 0x06c Type field for 1588v2 layer 2 frames. IEEE1588 defines the type 0x88f7 for 1588 frames. */ + volatile uint32_t TENGEC_RESERVED4[4]; +/*10Ge Statistics Counter */ + volatile uint64_t TFRM; /* 80 aFramesTransmittedOK */ + volatile uint64_t RFRM; /* 88 aFramesReceivedOK */ + volatile uint64_t RFCS; /* 90 aFrameCheckSequenceErrors */ + volatile uint64_t RALN; /* 98 aAlignmentErrors */ + volatile uint64_t TXPF; /* A0 aPAUSEMACCtrlFramesTransmitted */ + volatile uint64_t RXPF; /* A8 aPAUSEMACCtrlFramesReceived */ + volatile uint64_t RLONG; /* B0 aFrameTooLongErrors */ + volatile uint64_t RFLR; /* B8 aInRangeLengthErrors */ + volatile uint64_t TVLAN; /* C0 VLANTransmittedOK */ + volatile uint64_t RVLAN; /* C8 VLANReceivedOK */ + volatile uint64_t TOCT; /* D0 ifOutOctets */ + volatile uint64_t ROCT; /* D8 ifInOctets */ + volatile uint64_t RUCA; /* E0 ifInUcastPkts */ + volatile uint64_t RMCA; /* E8 ifInMulticastPkts */ + volatile uint64_t RBCA; /* F0 ifInBroadcastPkts */ + volatile uint64_t TERR; /* F8 ifOutErrors */ + volatile uint32_t TENGEC_RESERVED6[2]; + volatile uint64_t TUCA; /* 108 ifOutUcastPkts */ + volatile uint64_t TMCA; /* 110 ifOutMulticastPkts */ + volatile uint64_t TBCA; /* 118 ifOutBroadcastPkts */ + volatile uint64_t RDRP; /* 120 etherStatsDropEvents */ + volatile uint64_t REOCT; /* 128 etherStatsOctets */ + volatile uint64_t RPKT; /* 130 etherStatsPkts */ + volatile uint64_t TRUND; /* 138 etherStatsUndersizePkts */ + volatile uint64_t R64; /* 140 etherStatsPkts64Octets */ + volatile uint64_t R127; /* 148 etherStatsPkts65to127Octets */ + volatile uint64_t R255; /* 150 etherStatsPkts128to255Octets */ + volatile uint64_t R511; /* 158 etherStatsPkts256to511Octets */ + volatile uint64_t R1023; /* 160 etherStatsPkts512to1023Octets */ + volatile uint64_t R1518; /* 168 etherStatsPkts1024to1518Octets */ + volatile uint64_t R1519X; /* 170 etherStatsPkts1519toX */ + volatile uint64_t TROVR; /* 178 etherStatsOversizePkts */ + volatile uint64_t TRJBR; /* 180 etherStatsJabbers */ + volatile uint64_t TRFRG; /* 188 etherStatsFragments */ + volatile uint64_t RERR; /* 190 ifInErrors */ +} _PackedType t_TgecMemMap; + +#define MEM_MAP_END +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(pop) +#endif /* defined(__MWERKS__) && ... */ + + +typedef struct { + bool wanModeEnable; /* WAN Mode Enable. Sets WAN mode (1) or LAN mode (0, default) of operation. */ + bool promiscuousModeEnable; /* Enables MAC promiscuous operation. When set to '1', all frames are received without any MAC address filtering, when set to '0' (Reset value) Unicast Frames with a destination address not matching the Core MAC Address (MAC Address programmed in Registers MAC_ADDR_0 and MAC_ADDR_1 or the MAC address programmed in Registers MAC_ADDR_2 and MAC_ADDR_3 ) are rejected. */ + bool pauseForwardEnable; /* Terminate / Forward Pause Frames. If set to '1' pause frames are forwarded to the user application. When set to '0' (Reset value) pause frames are terminated and discarded within the MAC. */ + bool pauseIgnore; /* Ignore Pause Frame Quanta. If set to '1' received pause frames are ignored by the MAC. When set to '0' (Reset value) the transmit process is stopped for the amount of time specified in the pause quanta received within a pause frame. */ + bool txAddrInsEnable; /* Set Source MAC Address on Transmit. + If set to '1' the MAC overwrites the source MAC address received from the Client Interface with one of the MAC addresses (Refer to section 10.4) + If set to '0' (Reset value), the source MAC address from the Client Interface is transmitted unmodified to the line. */ + bool loopbackEnable; /* PHY Interface Loopback. When set to '1', the signal loop_ena is set to '1', when set to '0' (Reset value) the signal loop_ena is set to '0'. */ + bool cmdFrameEnable; /* Enables reception of all command frames. When set to '1' all Command Frames are accepted, when set to '0' (Reset Value) only Pause Frames are accepted and all other Command Frames are rejected. */ + bool rxErrorDiscard; /* Receive Errored Frame Discard Enable. When set to 1, any frame received with an error is discarded in the Core and not forwarded to the Client interface. When set to 0 (Reset value), errored Frames are forwarded to the Client interface with ff_rx_err asserted. */ + bool phyTxenaOn; /* PHY Transmit Enable. When set to '1', the signal phy_txena is set to '1', when set to '0' (Reset value) the signal phy_txena is set to '0' */ + bool sendIdleEnable; /* Force Idle Generation. When set to '1', the MAC permanently sends XGMII Idle sequences even when faults are received. */ + bool noLengthCheckEnable; /* Payload Length Check Disable. When set to 0 (Reset value), the Core checks the frame's payload length with the Frame Length/Type field, when set to 1, the payload length check is disabled. */ + bool lgthCheckNostdr; /* The Core interprets the Length/Type field differently depending on the value of this Bit */ + bool timeStampEnable; /* This bit selects between enabling and disabling the IEEE 1588 functionality. + 1: IEEE 1588 is enabled. + 0: IEEE 1588 is disabled. */ + bool rxSfdAny; /* Enables, when set, that any character is allowed at the SFD position of the preamble and the frame will be accepted. + If cleared (default) the frame is accepted only if the 8th byte of the preamble contains the SFD value 0xd5. If another value is received, the frame is discarded and the alignment error counter increments. */ + bool rxPblFwd; /* Receive Preamble Forwarding (custom preamble). + If set, the first word (ff_rx_sop) of every received frame contains the preamble of the frame. The frame data starts with the 2nd word from the FIFO. + If the bit is cleared (default) the preamble is removed from the frame before it is written into the receive FIFO. */ + bool txPblFwd; /* Transmit Preamble Forwarding (custom preamble). + If set, the first word written into the TX FIFO is considered as frame preamble. The MAC will not add a preamble in front of the frame. Note that bits 7:0 of the preamble word will still be overwritten with the XGMII start character upon transmission. + If cleared (default) the MAC */ + uint32_t txIpgLength; /*Transmit Inter-Packet-Gap (IPG) value. + A 6-bit value: Depending on LAN or WAN mode of operation (see COMMAND_CONFIG, 19.2.1 page 91) the value has the following meaning: + - LAN Mode: Number of octets in steps of 4. Valid values are 8, 12, 16, ... 100. DIC is fully supported (see 10.6.1 page 49) for any setting. A default of 12 (reset value) must be set to conform to IEEE802.3ae. Warning: When set to 8, PCS layers may not be able to perform clock rate compensation. + - WAN Mode: Stretch factor. Valid values are 4..15. The stretch factor is calculated as (value+1)*8. A default of 12 (reset value) must be set to conform to IEEE 802.3ae (i.e. 13*8=104). A larger value shrinks the IPG (increasing bandwidth). */ +/*.. */ + uint16_t maxFrameLength; + bool debugMode; + uint16_t pauseTime; +#ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 + bool skipFman11Workaround; +#endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */ +} t_TgecDriverParam; + +typedef struct { + t_FmMacControllerDriver fmMacControllerDriver; /**< Upper Mac control block */ + t_Handle h_App; /**< Handle to the upper layer application */ + t_TgecMemMap *p_MemMap; /**< pointer to 10G memory mapped registers. */ + t_TgecMiiAccessMemMap *p_MiiMemMap; /**< pointer to MII memory mapped registers. */ + uint64_t addr; /**< MAC address of device; */ + e_EnetMode enetMode; /**< Ethernet physical interface */ + t_FmMacExceptionCallback *f_Exception; + int mdioIrq; + t_FmMacExceptionCallback *f_Event; + bool indAddrRegUsed[TGEC_NUM_OF_PADDRS]; /**< Whether a particular individual address recognition register is being used */ + uint64_t paddr[TGEC_NUM_OF_PADDRS]; /**< MAC address for particular individual address recognition register */ + uint8_t numOfIndAddrInRegs; /**< Number of individual addresses in registers for this station. */ + t_EthHash *p_MulticastAddrHash; /**< pointer to driver's global address hash table */ + t_EthHash *p_UnicastAddrHash; /**< pointer to driver's individual address hash table */ + bool debugMode; + uint8_t macId; + uint32_t exceptions; + t_TgecDriverParam *p_TgecDriverParam; +} t_Tgec; + + +t_Error TGEC_MII_WritePhyReg(t_Handle h_Tgec, uint8_t phyAddr, uint8_t reg, uint16_t data); +t_Error TGEC_MII_ReadPhyReg(t_Handle h_Tgec, uint8_t phyAddr, uint8_t reg, uint16_t *p_Data); + + +#endif /* __TGEC_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/tgec_mii_acc.c +++ linux-3.13.0/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/tgec_mii_acc.c @@ -0,0 +1,121 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 "error_ext.h" +#include "std_ext.h" +#include "fm_mac.h" +#include "tgec.h" +#include "xx_ext.h" + + +/*****************************************************************************/ +t_Error TGEC_MII_WritePhyReg(t_Handle h_Tgec, + uint8_t phyAddr, + uint8_t reg, + uint16_t data) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + t_TgecMiiAccessMemMap *p_MiiAccess; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_MiiMemMap, E_INVALID_HANDLE); + + p_MiiAccess = p_Tgec->p_MiiMemMap; + + while ((GET_UINT32(p_MiiAccess->mdio_cfg_status)) & MIIMIND_BUSY) + XX_UDelay (1); + + WRITE_UINT32(p_MiiAccess->mdio_command, phyAddr); + + WRITE_UINT32(p_MiiAccess->mdio_regaddr, reg); + + CORE_MemoryBarrier(); + + while ((GET_UINT32(p_MiiAccess->mdio_cfg_status)) & MIIMIND_BUSY) + XX_UDelay (1); + + WRITE_UINT32(p_MiiAccess->mdio_data, data); + + CORE_MemoryBarrier(); + + while ((GET_UINT32(p_MiiAccess->mdio_data)) & MIIDATA_BUSY) + XX_UDelay (1); + + return E_OK; +} + +/*****************************************************************************/ +t_Error TGEC_MII_ReadPhyReg(t_Handle h_Tgec, + uint8_t phyAddr, + uint8_t reg, + uint16_t *p_Data) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + t_TgecMiiAccessMemMap *p_MiiAccess; + uint32_t cfg_status; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_MiiMemMap, E_INVALID_HANDLE); + + p_MiiAccess = p_Tgec->p_MiiMemMap; + + while ((GET_UINT32(p_MiiAccess->mdio_cfg_status)) & MIIMIND_BUSY) + XX_UDelay (1); + + WRITE_UINT32(p_MiiAccess->mdio_command, phyAddr); + + WRITE_UINT32(p_MiiAccess->mdio_regaddr, reg); + + CORE_MemoryBarrier(); + + while ((GET_UINT32(p_MiiAccess->mdio_cfg_status)) & MIIMIND_BUSY) + XX_UDelay (1); + + WRITE_UINT32(p_MiiAccess->mdio_command, (uint32_t)(phyAddr | MIIMCOM_READ_CYCLE)); + + CORE_MemoryBarrier(); + + while ((GET_UINT32(p_MiiAccess->mdio_data)) & MIIDATA_BUSY) + XX_UDelay (1); + + *p_Data = (uint16_t)GET_UINT32(p_MiiAccess->mdio_data); + + cfg_status = GET_UINT32(p_MiiAccess->mdio_cfg_status); + + if (cfg_status & MIIMIND_READ_ERROR) + RETURN_ERROR(MINOR, E_INVALID_VALUE, + ("Read Error: phyAddr 0x%x, dev 0x%x, reg 0x%x, cfg_status 0x%x", + ((phyAddr & 0xe0)>>5), (phyAddr & 0x1f), reg, cfg_status)); + + return E_OK; +} --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/tgec_mii_acc.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/tgec_mii_acc.h @@ -0,0 +1,81 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 __TGEC_MII_ACC_H +#define __TGEC_MII_ACC_H + +#include "std_ext.h" + + +/* MII Management Command Register */ +#define MIIMCOM_READ_POST_INCREMENT 0x00004000 +#define MIIMCOM_READ_CYCLE 0x00008000 +#define MIIMCOM_SCAN_CYCLE 0x00000800 +#define MIIMCOM_PREAMBLE_DISABLE 0x00000400 + +#define MIIMCOM_MDIO_HOLD_1_REG_CLK 0 +#define MIIMCOM_MDIO_HOLD_2_REG_CLK 1 +#define MIIMCOM_MDIO_HOLD_3_REG_CLK 2 +#define MIIMCOM_MDIO_HOLD_4_REG_CLK 3 + +#define MIIMCOM_DIV_MASK 0x0000ff00 +#define MIIMCOM_DIV_SHIFT 8 + +/* MII Management Indicator Register */ +#define MIIMIND_BUSY 0x00000001 +#define MIIMIND_READ_ERROR 0x00000002 + +#define MIIDATA_BUSY 0x80000000 + +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(push,1) +#endif /* defined(__MWERKS__) && ... */ +#define MEM_MAP_START + +/*----------------------------------------------------*/ +/* MII Configuration Control Memory Map Registers */ +/*----------------------------------------------------*/ +typedef _Packed struct t_TgecMiiAccessMemMap +{ + volatile uint32_t mdio_cfg_status; /* 0x030 */ + volatile uint32_t mdio_command; /* 0x034 */ + volatile uint32_t mdio_data; /* 0x038 */ + volatile uint32_t mdio_regaddr; /* 0x03c */ +} _PackedType t_TgecMiiAccessMemMap ; + +#define MEM_MAP_END +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(pop) +#endif /* defined(__MWERKS__) && ... */ + + +#endif /* __TGEC_MII_ACC_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/Makefile +++ linux-3.13.0/drivers/net/dpa/NetCommSw/Peripherals/FM/Makefile @@ -0,0 +1,21 @@ +# +# Makefile for the Freescale Ethernet controllers +# +EXTRA_CFLAGS += -DVERSION=\"\" +# +#Include netcomm SW specific definitions +include $(srctree)/drivers/net/dpa/NetCommSw/ncsw_config.mk +NCSW_FM_INC = $(srctree)/drivers/net/dpa/NetCommSw/Peripherals/FM/inc + +EXTRA_CFLAGS += -I$(NCSW_FM_INC) + + +obj-y += fsl-ncsw-PFM1.o + +fsl-ncsw-PFM1-objs := fm.o fm_muram.o + +obj-y += MAC/ +obj-y += Pcd/ +obj-y += Port/ +obj-y += HC/ +obj-y += Rtc/ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/Pcd/Makefile +++ linux-3.13.0/drivers/net/dpa/NetCommSw/Peripherals/FM/Pcd/Makefile @@ -0,0 +1,19 @@ +# +# Makefile for the Freescale Ethernet controllers +# +EXTRA_CFLAGS += -DVERSION=\"\" +# +#Include netcomm SW specific definitions +include $(srctree)/drivers/net/dpa/NetCommSw/ncsw_config.mk + +NCSW_FM_INC = $(srctree)/drivers/net/dpa/NetCommSw/Peripherals/FM/inc + +EXTRA_CFLAGS += -I$(NCSW_FM_INC) + +obj-y += fsl-ncsw-Pcd.o + +fsl-ncsw-Pcd-objs := fm_cc.o fm_kg.o fm_pcd.o fm_plcr.o fm_prs.o + + + + --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/Pcd/fm_cc.c +++ linux-3.13.0/drivers/net/dpa/NetCommSw/Peripherals/FM/Pcd/fm_cc.c @@ -0,0 +1,3467 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 fm_cc.c + + @Description FM CC ... +*//***************************************************************************/ +#include "std_ext.h" +#include "error_ext.h" +#include "string_ext.h" +#include "debug_ext.h" +#include "fm_pcd_ext.h" +#include "fm_muram_ext.h" + +#include "fm_common.h" +#include "fm_hc.h" +#include "fm_cc.h" + + +#if defined(FM_CAPWAP_SUPPORT) +#define FM_PCD_CC_MANIP +#endif /* defined(FM_CAPWAP_SUPPORT) || ... */ + + +t_Handle FmPcdCcTreeGetSavedManipParams(t_Handle h_FmTree, uint8_t manipIndx) +{ + t_FmPcdCcTree *p_FmPcdCcTree = (t_FmPcdCcTree *)h_FmTree; + + ASSERT_COND(p_FmPcdCcTree); + + return p_FmPcdCcTree->fmPcdCcSavedManipParams[manipIndx]; +} + +void FmPcdCcTreeSetSavedManipParams(t_Handle h_FmTree, t_Handle h_SavedManipParams, uint8_t manipIndx) +{ + t_FmPcdCcTree *p_FmPcdCcTree = (t_FmPcdCcTree *)h_FmTree; + + ASSERT_COND(p_FmPcdCcTree); + + p_FmPcdCcTree->fmPcdCcSavedManipParams[manipIndx] = h_SavedManipParams; +} + +uint8_t FmPcdCcGetParseCode(t_Handle h_CcNode) +{ + t_FmPcdCcNode *p_FmPcdCcNode = (t_FmPcdCcNode *)h_CcNode; + + ASSERT_COND(p_FmPcdCcNode); + return p_FmPcdCcNode->parseCode; +} + +uint8_t FmPcdCcGetOffset(t_Handle h_CcNode) +{ + t_FmPcdCcNode *p_FmPcdCcNode = (t_FmPcdCcNode *)h_CcNode; + + ASSERT_COND(p_FmPcdCcNode); + return p_FmPcdCcNode->offset; +} + +uint16_t FmPcdCcGetNumOfKeys(t_Handle h_CcNode) +{ + t_FmPcdCcNode *p_FmPcdCcNode = (t_FmPcdCcNode *)h_CcNode; + + ASSERT_COND(p_FmPcdCcNode); + return p_FmPcdCcNode->numOfKeys; +} +static void EnqueueNodeInfoToRelevantLst(t_List *p_List, t_CcNodeInformation *p_CcInfo) +{ + t_CcNodeInformation *p_CcInformation; + uint32_t intFlags; + + p_CcInformation = (t_CcNodeInformation *)XX_Malloc(sizeof(t_CcNodeInformation)); + if (p_CcInformation) + { + memset(p_CcInformation, 0, sizeof(t_CcNodeInformation)); + memcpy(p_CcInformation, p_CcInfo, sizeof(t_CcNodeInformation)); + INIT_LIST(&p_CcInformation->node); + + intFlags = XX_DisableAllIntr(); + LIST_AddToTail(&p_CcInformation->node, p_List); + XX_RestoreAllIntr(intFlags); + } + else + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("CC Node Information")); +} + + +static t_CcNodeInformation* FindNodeInfoInReleventLst(t_List *p_List, t_Handle h_Info) +{ + t_CcNodeInformation *p_CcInformation; + t_List *p_Pos; + uint32_t intFlags; + + intFlags = XX_DisableAllIntr(); + for (p_Pos = LIST_FIRST(p_List); p_Pos != (p_List); p_Pos = LIST_NEXT(p_Pos)) + { + p_CcInformation = CC_NODE_F_OBJECT(p_Pos); + ASSERT_COND(p_CcInformation->h_CcNode); + if(p_CcInformation->h_CcNode == h_Info) + { + XX_RestoreAllIntr(intFlags); + return p_CcInformation; + } + } + XX_RestoreAllIntr(intFlags); + return NULL; +} + +static void DequeueNodeInfoFromRelevantLst(t_List *p_List, t_Handle h_Info) +{ + t_CcNodeInformation *p_CcInformation = NULL; + uint32_t intFlags; + t_List *p_Pos; + + intFlags = XX_DisableAllIntr(); + if (LIST_IsEmpty(p_List)) + { + XX_RestoreAllIntr(intFlags); + return; + } + + for (p_Pos = LIST_FIRST(p_List); p_Pos != (p_List); p_Pos = LIST_NEXT(p_Pos)) + { + p_CcInformation = CC_NODE_F_OBJECT(p_Pos); + ASSERT_COND(p_CcInformation->h_CcNode); + if (p_CcInformation->h_CcNode == h_Info) + break; + } + if (p_CcInformation) + LIST_DelAndInit(&p_CcInformation->node); + XX_RestoreAllIntr(intFlags); +} + +static t_Error FmPcdCcSetRequiredAction(t_Handle h_FmPcd, uint32_t requiredAction, t_FmPcdCcNextEngineAndRequiredActionParams *p_CcNextEngineParamsTmp, + t_Handle h_AdTmp, uint16_t numOfEntries, t_Handle h_Tree) +{ + + t_AdOfTypeResult *p_AdTmp = (t_AdOfTypeResult *)h_AdTmp; + uint32_t tmpReg32; + t_Error err; + t_FmPcdCcNode *p_FmPcdCcNode; + int i = 0; + uint16_t tmp = 0; + uint16_t profileId; + uint8_t relativeSchemeId, physicalSchemeId; + t_CcNodeInformation ccNodeInfo; + + for(i = 0; i < numOfEntries; i++) + { + if(i == 0) + h_AdTmp = PTR_MOVE(h_AdTmp, i*FM_PCD_CC_AD_ENTRY_SIZE); + else + h_AdTmp = PTR_MOVE(h_AdTmp, FM_PCD_CC_AD_ENTRY_SIZE); + + if(p_CcNextEngineParamsTmp[i].shadowAction & requiredAction) + continue; + switch(p_CcNextEngineParamsTmp[i].nextEngineParams.nextEngine) + { + case(e_FM_PCD_CC): + if(requiredAction) + { + p_FmPcdCcNode = p_CcNextEngineParamsTmp[i].nextEngineParams.params.ccParams.h_CcNode; + ASSERT_COND(p_FmPcdCcNode); + if(p_FmPcdCcNode->shadowAction == requiredAction) + break; + if((requiredAction & UPDATE_CC_WITH_TREE) && !(p_FmPcdCcNode->shadowAction & UPDATE_CC_WITH_TREE)) + { + + ASSERT_COND(LIST_NumOfObjs(&p_FmPcdCcNode->ccTreesLst) == 0); + if(p_FmPcdCcNode->shadowAction & UPDATE_CC_WITH_DELETE_TREE) + p_FmPcdCcNode->shadowAction &= ~UPDATE_CC_WITH_DELETE_TREE; + memset(&ccNodeInfo, 0, sizeof(t_CcNodeInformation)); + ccNodeInfo.h_CcNode = h_Tree; + EnqueueNodeInfoToRelevantLst(&p_FmPcdCcNode->ccTreesLst, &ccNodeInfo); + p_CcNextEngineParamsTmp[i].shadowAction |= UPDATE_CC_WITH_TREE; + } + if((requiredAction & UPDATE_CC_WITH_DELETE_TREE) && !(p_FmPcdCcNode->shadowAction & UPDATE_CC_WITH_DELETE_TREE)) + { + ASSERT_COND(LIST_NumOfObjs(&p_FmPcdCcNode->ccTreesLst) == 1); + if(p_FmPcdCcNode->shadowAction & UPDATE_CC_WITH_TREE) + p_FmPcdCcNode->shadowAction &= ~UPDATE_CC_WITH_TREE; + DequeueNodeInfoFromRelevantLst(&p_FmPcdCcNode->ccTreesLst, h_Tree); + p_CcNextEngineParamsTmp[i].shadowAction |= UPDATE_CC_WITH_DELETE_TREE; + } + if(p_FmPcdCcNode->nextEngineAndRequiredAction[p_FmPcdCcNode->numOfKeys].nextEngineParams.nextEngine != e_FM_PCD_INVALID) + tmp = (uint8_t)(p_FmPcdCcNode->numOfKeys + 1); + else + tmp = p_FmPcdCcNode->numOfKeys; + err = FmPcdCcSetRequiredAction(h_FmPcd, requiredAction, p_FmPcdCcNode->nextEngineAndRequiredAction, p_FmPcdCcNode->h_AdTable, tmp, h_Tree); + if(err != E_OK) + return err; + p_FmPcdCcNode->shadowAction |= requiredAction; + } + break; + + case(e_FM_PCD_KG): + if((requiredAction & UPDATE_NIA_ENQ_WITHOUT_DMA) && !(p_CcNextEngineParamsTmp[i].shadowAction & UPDATE_NIA_ENQ_WITHOUT_DMA)) + { + physicalSchemeId = (uint8_t)(PTR_TO_UINT(p_CcNextEngineParamsTmp[i].nextEngineParams.params.kgParams.h_DirectScheme)-1); + relativeSchemeId = FmPcdKgGetRelativeSchemeId(h_FmPcd, physicalSchemeId); + if(relativeSchemeId == FM_PCD_KG_NUM_OF_SCHEMES) + RETURN_ERROR(MAJOR, E_NOT_IN_RANGE, NO_MSG); + if (!FmPcdKgIsSchemeValidSw(h_FmPcd, relativeSchemeId)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid direct scheme.")); + if(!KgIsSchemeAlwaysDirect(h_FmPcd, relativeSchemeId)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("For this action scheme has to be direct.")); + err = FmPcdKgCcGetSetParams(h_FmPcd, p_CcNextEngineParamsTmp[i].nextEngineParams.params.kgParams.h_DirectScheme, requiredAction); + if(err != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + p_CcNextEngineParamsTmp[i].shadowAction |= requiredAction; + } + break; + + case(e_FM_PCD_PLCR): + if((requiredAction & UPDATE_NIA_ENQ_WITHOUT_DMA) && !(p_CcNextEngineParamsTmp[i].shadowAction & UPDATE_NIA_ENQ_WITHOUT_DMA)) + { + if(!p_CcNextEngineParamsTmp[i].nextEngineParams.params.plcrParams.overrideParams) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("In this intialization only overrideFqid can be intiizliaes")); + if(!p_CcNextEngineParamsTmp[i].nextEngineParams.params.plcrParams.sharedProfile) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("In this intialization only overrideFqid can be intiizliaes")); + err = FmPcdPlcrGetAbsoluteProfileId(h_FmPcd, e_FM_PCD_PLCR_SHARED, NULL, p_CcNextEngineParamsTmp[i].nextEngineParams.params.plcrParams.newRelativeProfileId, &profileId); + if(err!= E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + err = FmPcdPlcrCcGetSetParams(h_FmPcd, profileId, requiredAction); + if(err != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + p_CcNextEngineParamsTmp[i].shadowAction |= requiredAction; + } + break; + + case(e_FM_PCD_DONE): + if((requiredAction & UPDATE_NIA_ENQ_WITHOUT_DMA) && !(p_CcNextEngineParamsTmp[i].shadowAction & UPDATE_NIA_ENQ_WITHOUT_DMA)) + { + tmpReg32 = GET_UINT32(p_AdTmp->nia); + if((tmpReg32 & (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME)) != (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Next engine was previosely assigned not as PCD_DONE")); + tmpReg32 |= NIA_BMI_AC_ENQ_FRAME_WITHOUT_DMA; + WRITE_UINT32(p_AdTmp->nia, tmpReg32); + p_CcNextEngineParamsTmp[i].shadowAction |= requiredAction; + } + break; + + default: + break; + } + } + + return E_OK; +} + +static t_Error CcUpdateParam(t_Handle h_FmPcd, + t_Handle h_FmPort, + t_FmPcdCcNextEngineAndRequiredActionParams *p_CcNextEngineParams, + uint16_t numOfEntries, + t_Handle h_Ad, + bool validate, + uint16_t level, + t_Handle h_FmTree, + bool modify) +{ + t_CcNodeInformation *p_CcNodeInfo; + t_FmPcdCcNode *p_FmPcdCcNode; + t_Error err; + uint16_t tmp = 0; + int i = 0; + + level++; + + if(numOfEntries) + { + for(i = 0; i < numOfEntries; i++) + { + if(i == 0) + h_Ad = PTR_MOVE(h_Ad, i*FM_PCD_CC_AD_ENTRY_SIZE); + else + h_Ad = PTR_MOVE(h_Ad, FM_PCD_CC_AD_ENTRY_SIZE); + + if(p_CcNextEngineParams[i].nextEngineParams.nextEngine == e_FM_PCD_CC) + { + p_FmPcdCcNode = p_CcNextEngineParams[i].nextEngineParams.params.ccParams.h_CcNode; + ASSERT_COND(p_FmPcdCcNode); + p_CcNodeInfo = FindNodeInfoInReleventLst(&p_FmPcdCcNode->ccTreesLst,h_FmTree); + ASSERT_COND(p_CcNodeInfo); + p_CcNodeInfo->index = level; +#ifdef FM_PCD_CC_MANIP + if(p_CcNextEngineParams[i].nextEngineParams.h_Manip) + { + err = FmPcdManipUpdate(h_FmPcd, h_FmPort, p_CcNextEngineParams[i].nextEngineParams.h_Manip, h_Ad, validate, p_CcNodeInfo->index, h_FmTree, modify); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + } +#endif /* FM_PCD_CC_MANIP */ + + if(p_FmPcdCcNode->nextEngineAndRequiredAction[p_FmPcdCcNode->numOfKeys].nextEngineParams.nextEngine != e_FM_PCD_INVALID) + tmp = (uint8_t)(p_FmPcdCcNode->numOfKeys + 1); + else + tmp = p_FmPcdCcNode->numOfKeys; + + err = CcUpdateParam(h_FmPcd, h_FmPort, p_FmPcdCcNode->nextEngineAndRequiredAction, tmp, p_FmPcdCcNode->h_AdTable, validate,level, h_FmTree, modify); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + } +#ifdef FM_PCD_CC_MANIP + else + { + if(p_CcNextEngineParams[i].nextEngineParams.h_Manip) + { + err = FmPcdManipUpdate(h_FmPcd, h_FmPort, p_CcNextEngineParams[i].nextEngineParams.h_Manip, h_Ad, validate, level,h_FmTree, modify); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + } + } +#endif /* FM_PCD_CC_MANIP */ + } + } + + return E_OK; +} +static bool IsNodeInModifiedState(t_Handle h_CcNode) +{ + t_FmPcdCcNode *p_CcNode = (t_FmPcdCcNode *)h_CcNode; + + ASSERT_COND(p_CcNode); + + return p_CcNode->modifiedState; +} + +static void UpdateNodeWithModifiedState(t_Handle h_CcNode, bool modifiedState) +{ + t_FmPcdCcNode *p_FmPcdCcNode = (t_FmPcdCcNode *)h_CcNode; + + ASSERT_COND(p_FmPcdCcNode); + + p_FmPcdCcNode->modifiedState = modifiedState; +} + +static ccPrivateInfo_t IcDefineCode(t_FmPcdCcNodeParams *p_CcNodeParam) +{ + switch (p_CcNodeParam->extractCcParams.extractNonHdr.action) + { + case(e_FM_PCD_ACTION_EXACT_MATCH): + switch(p_CcNodeParam->extractCcParams.extractNonHdr.src) + { + case(e_FM_PCD_EXTRACT_FROM_KEY): + return CC_PRIVATE_INFO_IC_KEY_EXACT_MATCH; + case(e_FM_PCD_EXTRACT_FROM_HASH): + return CC_PRIVATE_INFO_IC_HASH_EXACT_MATCH; + default: + return CC_PRIVATE_INFO_NONE; + } + case(e_FM_PCD_ACTION_INDEXED_LOOKUP): + switch(p_CcNodeParam->extractCcParams.extractNonHdr.src) + { + case(e_FM_PCD_EXTRACT_FROM_HASH): + return CC_PRIVATE_INFO_IC_HASH_INDEX_LOOKUP; + case(e_FM_PCD_EXTRACT_FROM_FLOW_ID): + return CC_PRIVATE_INFO_IC_DEQ_FQID_INDEX_LOOKUP; + default: + return CC_PRIVATE_INFO_NONE; + } + default: + break; + } + return CC_PRIVATE_INFO_NONE; +} + +static t_CcNodeInformation * DequeueAdditionalInfoFromRelevantLst(t_List *p_List) +{ + t_CcNodeInformation *p_CcNodeInfo = NULL; + uint32_t intFlags; + + intFlags = XX_DisableAllIntr(); + if (!LIST_IsEmpty(p_List)) + { + p_CcNodeInfo = CC_NODE_F_OBJECT(p_List->p_Next); + LIST_DelAndInit(&p_CcNodeInfo->node); + } + XX_RestoreAllIntr(intFlags); + return p_CcNodeInfo; +} + +static void ReleaseLst(t_List *p_List) +{ + t_CcNodeInformation *p_CcNodeInfo = NULL; + + if(!LIST_IsEmpty(p_List)) + { + p_CcNodeInfo = DequeueAdditionalInfoFromRelevantLst(p_List); + while (p_CcNodeInfo) + { + XX_Free(p_CcNodeInfo); + p_CcNodeInfo = DequeueAdditionalInfoFromRelevantLst(p_List); + } + } + LIST_DelAndInit(p_List); +} + +void FmPcdCcTreeReleaseLock(t_Handle h_FmPcdCcTree) +{ + RELEASE_LOCK(((t_FmPcdCcTree *)h_FmPcdCcTree)->lock); +} + +void FmPcdCcNodeTreeReleaseLock(t_List *p_List) +{ + t_List *p_Pos; + t_CcNodeInformation *p_CcNodeInfo; + t_Handle h_FmPcdCcTree; + + LIST_FOR_EACH(p_Pos, p_List) + { + p_CcNodeInfo = CC_NODE_F_OBJECT(p_Pos); + h_FmPcdCcTree = p_CcNodeInfo->h_CcNode; + FmPcdCcTreeReleaseLock(h_FmPcdCcTree); + } + ReleaseLst(p_List); +} + +static void DeleteNode(t_FmPcdCcNode *p_FmPcdCcNode) +{ + if(p_FmPcdCcNode) + { + if(p_FmPcdCcNode->p_GlblMask) + { + XX_Free(p_FmPcdCcNode->p_GlblMask); + p_FmPcdCcNode->p_GlblMask = NULL; + } + if(p_FmPcdCcNode->h_KeysMatchTable) + { + FM_MURAM_FreeMem(FmPcdGetMuramHandle(p_FmPcdCcNode->h_FmPcd), p_FmPcdCcNode->h_KeysMatchTable); + p_FmPcdCcNode->h_KeysMatchTable = NULL; + } + if(p_FmPcdCcNode->h_AdTable) + { + FM_MURAM_FreeMem(FmPcdGetMuramHandle(p_FmPcdCcNode->h_FmPcd), p_FmPcdCcNode->h_AdTable); + p_FmPcdCcNode->h_AdTable = NULL; + } + + ReleaseLst(&p_FmPcdCcNode->ccPrevNodesLst); + ReleaseLst(&p_FmPcdCcNode->ccTreeIdLst); + ReleaseLst(&p_FmPcdCcNode->ccTreesLst); + + XX_Free(p_FmPcdCcNode); + } +} + +static void DeleteTree(t_FmPcdCcTree *p_FmPcdTree, t_FmPcd *p_FmPcd) +{ + if(p_FmPcdTree) + { + if(p_FmPcdTree->ccTreeBaseAddr) + { + FM_MURAM_FreeMem(FmPcdGetMuramHandle(p_FmPcd), UINT_TO_PTR(p_FmPcdTree->ccTreeBaseAddr)); + p_FmPcdTree->ccTreeBaseAddr = 0; + } + + ReleaseLst(&p_FmPcdTree->fmPortsLst); + + XX_Free(p_FmPcdTree); + } +} + +static void UpdateNodeOwner(t_FmPcdCcNode *p_FmPcdCcNode, bool add) +{ + ASSERT_COND(p_FmPcdCcNode); + + if(add) + p_FmPcdCcNode->owners++; + else + { + ASSERT_COND(p_FmPcdCcNode->owners); + p_FmPcdCcNode->owners--; + } +} + +static void GetCcExtractKeySize(uint8_t parseCodeRealSize, uint8_t *parseCodeCcSize) +{ + if((parseCodeRealSize > 0) && (parseCodeRealSize < 2)) + *parseCodeCcSize = 1; + else if(parseCodeRealSize == 2) + *parseCodeCcSize = 2; + else if((parseCodeRealSize > 2) && (parseCodeRealSize <= 4)) + *parseCodeCcSize = 4; + else if((parseCodeRealSize > 4) && (parseCodeRealSize <= 8)) + *parseCodeCcSize = 8; + else if((parseCodeRealSize > 8) && (parseCodeRealSize <= 16)) + *parseCodeCcSize = 16; + else if((parseCodeRealSize > 16) && (parseCodeRealSize <= 24)) + *parseCodeCcSize = 24; + else if((parseCodeRealSize > 24) && (parseCodeRealSize <= 32)) + *parseCodeCcSize = 32; + else if((parseCodeRealSize > 32) && (parseCodeRealSize <= 40)) + *parseCodeCcSize = 40; + else if((parseCodeRealSize > 40) && (parseCodeRealSize <= 48)) + *parseCodeCcSize = 48; + else if((parseCodeRealSize > 48) && (parseCodeRealSize <= 56)) + *parseCodeCcSize = 56; + else + *parseCodeCcSize = 0; +} + +static void GetSizeHeaderField(e_NetHeaderType hdr,t_FmPcdFields field,uint8_t *parseCodeRealSize) +{ + switch(hdr) + { + case (HEADER_TYPE_ETH): + switch(field.eth) + { + case(NET_HEADER_FIELD_ETH_DA): + *parseCodeRealSize = 6; + break; + case(NET_HEADER_FIELD_ETH_SA): + *parseCodeRealSize = 6; + break; + case(NET_HEADER_FIELD_ETH_TYPE): + *parseCodeRealSize = 2; + break; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported1")); + *parseCodeRealSize = CC_SIZE_ILLEGAL; + break; + } + break; + case(HEADER_TYPE_PPPoE): + switch(field.pppoe) + { + case(NET_HEADER_FIELD_PPPoE_PID): + *parseCodeRealSize = 2; + break; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported1")); + *parseCodeRealSize = CC_SIZE_ILLEGAL; + break; + } + break; + case (HEADER_TYPE_VLAN): + switch(field.vlan) + { + case(NET_HEADER_FIELD_VLAN_TCI): + *parseCodeRealSize = 2; + break; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported2")); + *parseCodeRealSize = CC_SIZE_ILLEGAL; + break; + } + break; + case (HEADER_TYPE_MPLS): + switch(field.mpls) + { + case(NET_HEADER_FIELD_MPLS_LABEL_STACK): + *parseCodeRealSize = 4; + break; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported3")); + *parseCodeRealSize = CC_SIZE_ILLEGAL; + break; + } + break; + case (HEADER_TYPE_IPv4): + switch(field.ipv4) + { + case(NET_HEADER_FIELD_IPv4_DST_IP): + case(NET_HEADER_FIELD_IPv4_SRC_IP): + *parseCodeRealSize = 4; + break; + case(NET_HEADER_FIELD_IPv4_TOS): + case(NET_HEADER_FIELD_IPv4_PROTO): + *parseCodeRealSize = 1; + break; + case(NET_HEADER_FIELD_IPv4_DST_IP | NET_HEADER_FIELD_IPv4_SRC_IP): + *parseCodeRealSize = 8; + break; + case(NET_HEADER_FIELD_IPv4_TTL): + *parseCodeRealSize = 1; + break; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported4")); + *parseCodeRealSize = CC_SIZE_ILLEGAL; + break; + } + break; + case (HEADER_TYPE_IPv6): + switch(field.ipv6) + { + case(NET_HEADER_FIELD_IPv6_VER | NET_HEADER_FIELD_IPv6_FL | NET_HEADER_FIELD_IPv6_TC): + *parseCodeRealSize = 4; + break; + case(NET_HEADER_FIELD_IPv6_NEXT_HDR): + case(NET_HEADER_FIELD_IPv6_HOP_LIMIT): + *parseCodeRealSize = 1; + break; + case(NET_HEADER_FIELD_IPv6_DST_IP): + case(NET_HEADER_FIELD_IPv6_SRC_IP): + *parseCodeRealSize = 16; + break; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported5")); + *parseCodeRealSize = CC_SIZE_ILLEGAL; + break; + } + break; + case (HEADER_TYPE_GRE): + switch(field.gre) + { + case(NET_HEADER_FIELD_GRE_TYPE): + *parseCodeRealSize = 2; + break; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported6")); + *parseCodeRealSize = CC_SIZE_ILLEGAL; + break; + } + break; + case (HEADER_TYPE_MINENCAP): + switch(field.minencap) + { + case(NET_HEADER_FIELD_MINENCAP_TYPE): + *parseCodeRealSize = 1; + break; + case(NET_HEADER_FIELD_MINENCAP_DST_IP): + case(NET_HEADER_FIELD_MINENCAP_SRC_IP): + *parseCodeRealSize = 4; + break; + case(NET_HEADER_FIELD_MINENCAP_SRC_IP | NET_HEADER_FIELD_MINENCAP_DST_IP): + *parseCodeRealSize = 8; + break; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported7")); + *parseCodeRealSize = CC_SIZE_ILLEGAL; + break; + } + break; + case (HEADER_TYPE_TCP): + switch(field.tcp) + { + case(NET_HEADER_FIELD_TCP_PORT_SRC): + case(NET_HEADER_FIELD_TCP_PORT_DST): + *parseCodeRealSize = 2; + break; + case(NET_HEADER_FIELD_TCP_PORT_SRC | NET_HEADER_FIELD_TCP_PORT_DST): + *parseCodeRealSize = 4; + break; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported8")); + *parseCodeRealSize = CC_SIZE_ILLEGAL; + break; + } + break; + case (HEADER_TYPE_UDP): + switch(field.udp) + { + case(NET_HEADER_FIELD_UDP_PORT_SRC): + case(NET_HEADER_FIELD_UDP_PORT_DST): + *parseCodeRealSize = 2; + break; + case(NET_HEADER_FIELD_UDP_PORT_SRC | NET_HEADER_FIELD_UDP_PORT_DST): + *parseCodeRealSize = 4; + break; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported9")); + *parseCodeRealSize = CC_SIZE_ILLEGAL; + break; + } + break; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported10")); + *parseCodeRealSize = CC_SIZE_ILLEGAL; + break; + } +} + +static t_Error ValidateNextEngineParams(t_Handle h_FmPcd, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams) +{ + uint16_t absoluteProfileId; + t_Error err = E_OK; + uint8_t relativeSchemeId; + + switch(p_FmPcdCcNextEngineParams->nextEngine) + { + case(e_FM_PCD_INVALID): + err = E_NOT_SUPPORTED; + break; + case(e_FM_PCD_DONE): + if(p_FmPcdCcNextEngineParams->params.enqueueParams.action == e_FM_PCD_ENQ_FRAME) + { + if(p_FmPcdCcNextEngineParams->params.enqueueParams.overrideFqid && + !p_FmPcdCcNextEngineParams->params.enqueueParams.newFqid) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("not defined fqid for control flow for BMI next engine ")); + if(p_FmPcdCcNextEngineParams->params.enqueueParams.newFqid & ~0x00FFFFFF) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("fqidForCtrlFlow must be between 1 and 2^24-1")); + } + break; + case(e_FM_PCD_KG): + relativeSchemeId = FmPcdKgGetRelativeSchemeId(h_FmPcd, (uint8_t)(PTR_TO_UINT(p_FmPcdCcNextEngineParams->params.kgParams.h_DirectScheme)-1)); + if(relativeSchemeId == FM_PCD_KG_NUM_OF_SCHEMES) + RETURN_ERROR(MAJOR, E_NOT_IN_RANGE, NO_MSG); + + if(!FmPcdKgIsSchemeValidSw(h_FmPcd, relativeSchemeId)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("not valid schemeIndex in KG next engine param")); + if(!KgIsSchemeAlwaysDirect(h_FmPcd, relativeSchemeId)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("CC Node may point only to a scheme that is always direct.")); + break; + case(e_FM_PCD_PLCR): + if(p_FmPcdCcNextEngineParams->params.plcrParams.overrideParams) + { + /* if private policer profile, it may be uninitialized yet, therefor no checks are done at this stage */ + if(p_FmPcdCcNextEngineParams->params.plcrParams.sharedProfile) + { + err = FmPcdPlcrGetAbsoluteProfileId(h_FmPcd,e_FM_PCD_PLCR_SHARED,NULL,p_FmPcdCcNextEngineParams->params.plcrParams.newRelativeProfileId, &absoluteProfileId); + if(err) + RETURN_ERROR(MAJOR, err, ("Shared profile offset is out of range")); + if(!FmPcdPlcrIsProfileValid(h_FmPcd, absoluteProfileId)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid profile")); + } + else + { + } + /* TODO - add check according to the revision of the chip. + if(!p_FmPcdCcNextEngineParams->params.plcrParams.newFqid || + (p_FmPcdCcNextEngineParams->params.plcrParams.newFqid & ~0x00FFFFFF)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("newFqid must be between 1 and 2^24-1")); + */ + } + break; + case(e_FM_PCD_CC): + if(!p_FmPcdCcNextEngineParams->params.ccParams.h_CcNode) + RETURN_ERROR(MAJOR, E_NULL_POINTER, ("handler to next Node is NULL")); + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Next engine is not correct")); + } + return err; +} + +static uint8_t GetGenParseCode(e_FmPcdExtractFrom src, uint32_t offset, bool glblMask, uint8_t *parseArrayOffset, bool fromIc, ccPrivateInfo_t icCode) +{ + if(!fromIc) + { + switch(src) + { + case(e_FM_PCD_EXTRACT_FROM_FRAME_START): + if(glblMask) + return CC_PC_GENERIC_WITH_MASK ; + else + return CC_PC_GENERIC_WITHOUT_MASK; + case(e_FM_PCD_EXTRACT_FROM_CURR_END_OF_PARSE): + *parseArrayOffset = CC_PC_PR_NEXT_HEADER_OFFSET; + if(offset) + return CC_PR_OFFSET; + else + return CC_PR_WITHOUT_OFFSET; + default: + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal 'extract from' src")); + return CC_PC_ILLEGAL; + } + } + else + { + switch (icCode) + { + case(CC_PRIVATE_INFO_IC_KEY_EXACT_MATCH): + *parseArrayOffset = 0x50; + return CC_PC_GENERIC_IC_GMASK; + case(CC_PRIVATE_INFO_IC_HASH_EXACT_MATCH): + *parseArrayOffset = 0x48; + return CC_PC_GENERIC_IC_GMASK; + case(CC_PRIVATE_INFO_IC_HASH_INDEX_LOOKUP): + *parseArrayOffset = 0x48; + return CC_PC_GENERIC_IC_HASH_INDEXED; + case(CC_PRIVATE_INFO_IC_DEQ_FQID_INDEX_LOOKUP): + *parseArrayOffset = 0x16; + return CC_PC_GENERIC_IC_HASH_INDEXED; + default: + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal 'extract from' src")); + break; + } + } + return CC_PC_ILLEGAL; +} + +static uint8_t GetFullFieldParseCode(e_NetHeaderType hdr, e_FmPcdHdrIndex index, t_FmPcdFields field) +{ + + switch(hdr) + { + case(HEADER_TYPE_NONE): + ASSERT_COND(FALSE); + return CC_PC_ILLEGAL; + + case(HEADER_TYPE_ETH): + switch(field.eth) + { + case(NET_HEADER_FIELD_ETH_DA): + return CC_PC_FF_MACDST; + case(NET_HEADER_FIELD_ETH_SA): + return CC_PC_FF_MACSRC; + case(NET_HEADER_FIELD_ETH_TYPE): + return CC_PC_FF_ETYPE; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported")); + return CC_PC_ILLEGAL; + } + + case(HEADER_TYPE_VLAN): + switch(field.vlan) + { + case(NET_HEADER_FIELD_VLAN_TCI): + if((index == e_FM_PCD_HDR_INDEX_NONE) || (index == e_FM_PCD_HDR_INDEX_1)) + return CC_PC_FF_TCI1; + if(index == e_FM_PCD_HDR_INDEX_LAST) + return CC_PC_FF_TCI2; + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported")); + return CC_PC_ILLEGAL; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported")); + return CC_PC_ILLEGAL; + } + + case(HEADER_TYPE_MPLS): + switch(field.mpls) + { + case(NET_HEADER_FIELD_MPLS_LABEL_STACK): + if((index == e_FM_PCD_HDR_INDEX_NONE) || (index == e_FM_PCD_HDR_INDEX_1)) + return CC_PC_FF_MPLS1; + if(index == e_FM_PCD_HDR_INDEX_LAST) + return CC_PC_FF_MPLS_LAST; + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Illegal MPLS index")); + return CC_PC_ILLEGAL; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported")); + return CC_PC_ILLEGAL; + } + + case(HEADER_TYPE_IPv4): + switch(field.ipv4) + { + case(NET_HEADER_FIELD_IPv4_DST_IP): + if((index == e_FM_PCD_HDR_INDEX_NONE) || (index == e_FM_PCD_HDR_INDEX_1)) + return CC_PC_FF_IPV4DST1; + if(index == e_FM_PCD_HDR_INDEX_2) + return CC_PC_FF_IPV4DST2; + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Illegal IPv4 index")); + return CC_PC_ILLEGAL; + case(NET_HEADER_FIELD_IPv4_TOS): + if((index == e_FM_PCD_HDR_INDEX_NONE) || (index == e_FM_PCD_HDR_INDEX_1)) + return CC_PC_FF_IPV4IPTOS_TC1; + if(index == e_FM_PCD_HDR_INDEX_2) + return CC_PC_FF_IPV4IPTOS_TC2; + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Illegal IPv4 index")); + return CC_PC_ILLEGAL; + case(NET_HEADER_FIELD_IPv4_PROTO): + if((index == e_FM_PCD_HDR_INDEX_NONE) || (index == e_FM_PCD_HDR_INDEX_1)) + return CC_PC_FF_IPV4PTYPE1; + if(index == e_FM_PCD_HDR_INDEX_2) + return CC_PC_FF_IPV4PTYPE2; + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Illegal IPv4 index")); + return CC_PC_ILLEGAL; + case(NET_HEADER_FIELD_IPv4_SRC_IP): + if((index == e_FM_PCD_HDR_INDEX_NONE) || (index == e_FM_PCD_HDR_INDEX_1)) + return CC_PC_FF_IPV4SRC1; + if(index == e_FM_PCD_HDR_INDEX_2) + return CC_PC_FF_IPV4SRC2; + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Illegal IPv4 index")); + return CC_PC_ILLEGAL; + case(NET_HEADER_FIELD_IPv4_SRC_IP | NET_HEADER_FIELD_IPv4_DST_IP): + if((index == e_FM_PCD_HDR_INDEX_NONE) || (index == e_FM_PCD_HDR_INDEX_1)) + return CC_PC_FF_IPV4SRC1_IPV4DST1; + if(index == e_FM_PCD_HDR_INDEX_2) + return CC_PC_FF_IPV4SRC2_IPV4DST2; + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Illegal IPv4 index")); + return CC_PC_ILLEGAL; + case(NET_HEADER_FIELD_IPv4_TTL): + return CC_PC_FF_IPV4TTL; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported")); + return CC_PC_ILLEGAL; + } + + case(HEADER_TYPE_IPv6): + switch(field.ipv6) + { + case(NET_HEADER_FIELD_IPv6_VER | NET_HEADER_FIELD_IPv6_FL | NET_HEADER_FIELD_IPv6_TC): + if((index == e_FM_PCD_HDR_INDEX_NONE) || (index == e_FM_PCD_HDR_INDEX_1)) + return CC_PC_FF_IPTOS_IPV6TC1_IPV6FLOW1; + if(index == e_FM_PCD_HDR_INDEX_2) + return CC_PC_FF_IPTOS_IPV6TC2_IPV6FLOW2; + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Illegal IPv6 index")); + return CC_PC_ILLEGAL; + case(NET_HEADER_FIELD_IPv6_NEXT_HDR): + if((index == e_FM_PCD_HDR_INDEX_NONE) || (index == e_FM_PCD_HDR_INDEX_1)) + return CC_PC_FF_IPV6PTYPE1; + if(index == e_FM_PCD_HDR_INDEX_2) + return CC_PC_FF_IPV6PTYPE2; + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Illegal IPv6 index")); + return CC_PC_ILLEGAL; + case(NET_HEADER_FIELD_IPv6_DST_IP): + if((index == e_FM_PCD_HDR_INDEX_NONE) || (index == e_FM_PCD_HDR_INDEX_1)) + return CC_PC_FF_IPV6DST1; + if(index == e_FM_PCD_HDR_INDEX_2) + return CC_PC_FF_IPV6DST2; + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Illegal IPv6 index")); + return CC_PC_ILLEGAL; + case(NET_HEADER_FIELD_IPv6_SRC_IP): + if((index == e_FM_PCD_HDR_INDEX_NONE) || (index == e_FM_PCD_HDR_INDEX_1)) + return CC_PC_FF_IPV6SRC1; + if(index == e_FM_PCD_HDR_INDEX_2) + return CC_PC_FF_IPV6SRC2; + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Illegal IPv6 index")); + return CC_PC_ILLEGAL; + case(NET_HEADER_FIELD_IPv6_HOP_LIMIT): + return CC_PC_FF_IPV6HOP_LIMIT; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported")); + return CC_PC_ILLEGAL; + } + + case(HEADER_TYPE_GRE): + switch(field.gre) + { + case(NET_HEADER_FIELD_GRE_TYPE): + return CC_PC_FF_GREPTYPE; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported")); + return CC_PC_ILLEGAL; + } + case(HEADER_TYPE_MINENCAP): + switch(field.minencap) + { + case(NET_HEADER_FIELD_MINENCAP_TYPE): + return CC_PC_FF_MINENCAP_PTYPE; + case(NET_HEADER_FIELD_MINENCAP_DST_IP): + return CC_PC_FF_MINENCAP_IPDST; + case(NET_HEADER_FIELD_MINENCAP_SRC_IP): + return CC_PC_FF_MINENCAP_IPSRC; + case(NET_HEADER_FIELD_MINENCAP_SRC_IP | NET_HEADER_FIELD_MINENCAP_DST_IP): + return CC_PC_FF_MINENCAP_IPSRC_IPDST; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported")); + return CC_PC_ILLEGAL; + } + + case(HEADER_TYPE_TCP): + switch(field.tcp) + { + case(NET_HEADER_FIELD_TCP_PORT_SRC): + return CC_PC_FF_L4PSRC; + case(NET_HEADER_FIELD_TCP_PORT_DST): + return CC_PC_FF_L4PDST; + case(NET_HEADER_FIELD_TCP_PORT_DST | NET_HEADER_FIELD_TCP_PORT_SRC): + return CC_PC_FF_L4PSRC_L4PDST; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported")); + return CC_PC_ILLEGAL; + } + + case(HEADER_TYPE_PPPoE): + switch(field.pppoe) + { + case(NET_HEADER_FIELD_PPPoE_PID): + return CC_PC_FF_PPPPID; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported")); + return CC_PC_ILLEGAL; + } + + case(HEADER_TYPE_UDP): + switch(field.udp) + { + case(NET_HEADER_FIELD_UDP_PORT_SRC): + return CC_PC_FF_L4PSRC; + case(NET_HEADER_FIELD_UDP_PORT_DST): + return CC_PC_FF_L4PDST; + case(NET_HEADER_FIELD_UDP_PORT_DST | NET_HEADER_FIELD_UDP_PORT_SRC): + return CC_PC_FF_L4PSRC_L4PDST; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported")); + return CC_PC_ILLEGAL; + } + + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported")); + return CC_PC_ILLEGAL; + } +} + +static uint8_t GetPrParseCode(e_NetHeaderType hdr, e_FmPcdHdrIndex hdrIndex, uint32_t offset, bool glblMask, uint8_t *parseArrayOffset) +{ + bool offsetRelevant = FALSE; + + if(offset) + offsetRelevant = TRUE; + + switch(hdr){ + case(HEADER_TYPE_NONE): + ASSERT_COND(FALSE); + return CC_PC_ILLEGAL; + case(HEADER_TYPE_ETH): + *parseArrayOffset = (uint8_t)CC_PC_PR_ETH_OFFSET; + break; + case(HEADER_TYPE_USER_DEFINED_SHIM1): + if(offset || glblMask) + *parseArrayOffset = (uint8_t)CC_PC_PR_USER_DEFINED_SHIM1_OFFSET; + else + return CC_PC_PR_SHIM1; + break; + case(HEADER_TYPE_USER_DEFINED_SHIM2): + if(offset || glblMask) + *parseArrayOffset = (uint8_t)CC_PC_PR_USER_DEFINED_SHIM2_OFFSET; + else + return CC_PC_PR_SHIM2; + break; + case(HEADER_TYPE_LLC_SNAP): + *parseArrayOffset = CC_PC_PR_USER_LLC_SNAP_OFFSET; + break; + case(HEADER_TYPE_PPPoE): + *parseArrayOffset = CC_PC_PR_PPPOE_OFFSET; + break; + case(HEADER_TYPE_MPLS): + if((hdrIndex == e_FM_PCD_HDR_INDEX_NONE) || (hdrIndex == e_FM_PCD_HDR_INDEX_1)) + *parseArrayOffset = CC_PC_PR_MPLS1_OFFSET; + else if(hdrIndex == e_FM_PCD_HDR_INDEX_LAST) + *parseArrayOffset = CC_PC_PR_MPLS_LAST_OFFSET; + else + { + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Illegal MPLS header index")); + return CC_PC_ILLEGAL; + } + break; + case(HEADER_TYPE_IPv4): + case(HEADER_TYPE_IPv6): + if((hdrIndex == e_FM_PCD_HDR_INDEX_NONE) || (hdrIndex == e_FM_PCD_HDR_INDEX_1)) + *parseArrayOffset = CC_PC_PR_IP1_OFFSET; + else if(hdrIndex == e_FM_PCD_HDR_INDEX_2) + *parseArrayOffset = CC_PC_PR_IP_LAST_OFFSET; + else + { + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Illegal IP header index")); + return CC_PC_ILLEGAL; + + } + break; + case(HEADER_TYPE_MINENCAP): + *parseArrayOffset = CC_PC_PR_MINENC_OFFSET; + break; + case(HEADER_TYPE_GRE): + *parseArrayOffset = CC_PC_PR_GRE_OFFSET; + break; + case(HEADER_TYPE_TCP): + case(HEADER_TYPE_UDP): + case(HEADER_TYPE_IPSEC_AH): + case(HEADER_TYPE_IPSEC_ESP): + case(HEADER_TYPE_DCCP): + case(HEADER_TYPE_SCTP): + *parseArrayOffset = CC_PC_PR_L4_OFFSET; + break; + + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Illegal IP header for this type of operation")); + return CC_PC_ILLEGAL; + } + + if(offsetRelevant) + return CC_PR_OFFSET; + else + return CC_PR_WITHOUT_OFFSET; +} + +static uint8_t GetFieldParseCode(e_NetHeaderType hdr, t_FmPcdFields field, uint32_t offset, uint8_t *parseArrayOffset, e_FmPcdHdrIndex hdrIndex) +{ + bool offsetRelevant = FALSE; + + if(offset) + offsetRelevant = TRUE; + + switch(hdr) + { + case(HEADER_TYPE_NONE): + ASSERT_COND(FALSE); + case(HEADER_TYPE_ETH): + switch(field.eth) + { + case(NET_HEADER_FIELD_ETH_TYPE): + *parseArrayOffset = CC_PC_PR_ETYPE_LAST_OFFSET; + break; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported")); + return CC_PC_ILLEGAL; + } + break; + case(HEADER_TYPE_VLAN): + switch(field.vlan) + { + case(NET_HEADER_FIELD_VLAN_TCI): + if((hdrIndex == e_FM_PCD_HDR_INDEX_NONE) || (hdrIndex == e_FM_PCD_HDR_INDEX_1)) + *parseArrayOffset = CC_PC_PR_VLAN1_OFFSET; + else if(hdrIndex == e_FM_PCD_HDR_INDEX_LAST) + *parseArrayOffset = CC_PC_PR_VLAN2_OFFSET; + break; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported")); + return CC_PC_ILLEGAL; + } + break; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Illegal header ")); + return CC_PC_ILLEGAL; + } + if(offsetRelevant) + return CC_PR_OFFSET; + else + return CC_PR_WITHOUT_OFFSET; +} + +static void FillAdOfTypeResult(t_Handle p_Ad, t_FmPcd *p_FmPcd, t_FmPcdCcNextEngineParams *p_CcNextEngineParams) +{ + t_AdOfTypeResult *p_AdResult = (t_AdOfTypeResult*)p_Ad; + uint32_t tmp = 0, tmpNia = 0; + uint16_t profileId; + t_Handle p_AdNewPtr = NULL; + + p_AdNewPtr = p_AdResult; + +#ifdef FM_PCD_CC_MANIP + if (p_CcNextEngineParams->h_Manip) + FmPcdManipUpdateAdResultForCc(p_CcNextEngineParams->h_Manip, p_Ad, &p_AdNewPtr); +#endif /* FM_PCD_CC_MANIP */ + + if(p_AdNewPtr) + { + switch(p_CcNextEngineParams->nextEngine) + { + case(e_FM_PCD_DONE): + if(p_CcNextEngineParams->params.enqueueParams.action == e_FM_PCD_ENQ_FRAME) + { + if(p_CcNextEngineParams->params.enqueueParams.overrideFqid) + { + tmp = FM_PCD_AD_RESULT_CONTRL_FLOW_TYPE; + tmp |= p_CcNextEngineParams->params.enqueueParams.newFqid; + } + else + { + tmp = FM_PCD_AD_RESULT_DATA_FLOW_TYPE; + tmp |= FM_PCD_AD_RESULT_PLCR_DIS; + } + } + if(p_CcNextEngineParams->params.enqueueParams.action == e_FM_PCD_DROP_FRAME) + tmpNia |= (NIA_ENG_BMI |NIA_BMI_AC_DISCARD); + else + tmpNia |= (NIA_ENG_BMI |NIA_BMI_AC_ENQ_FRAME); + if(p_CcNextEngineParams->params.enqueueParams.statisticsEn) + tmpNia |= FM_PCD_AD_RESULT_EXTENDED_MODE | FM_PCD_AD_RESULT_STATISTICS_EN; + break; + case(e_FM_PCD_KG): + if(p_CcNextEngineParams->params.kgParams.overrideFqid) + { + tmp = FM_PCD_AD_RESULT_CONTRL_FLOW_TYPE; + tmp |= p_CcNextEngineParams->params.kgParams.newFqid; + } + else + { + tmp = FM_PCD_AD_RESULT_DATA_FLOW_TYPE; + tmp |= FM_PCD_AD_RESULT_PLCR_DIS; + } + tmpNia = NIA_KG_DIRECT; + tmpNia |= NIA_ENG_KG; + tmpNia |= (uint8_t)(PTR_TO_UINT(p_CcNextEngineParams->params.kgParams.h_DirectScheme)-1); + if(p_CcNextEngineParams->params.kgParams.statisticsEn) + tmpNia |= FM_PCD_AD_RESULT_EXTENDED_MODE | FM_PCD_AD_RESULT_STATISTICS_EN; + break; + case(e_FM_PCD_PLCR): + tmp = 0; + if(p_CcNextEngineParams->params.plcrParams.overrideParams) + { + tmp = FM_PCD_AD_RESULT_CONTRL_FLOW_TYPE; + + /* if private policer profile, it may be uninitialized yet, therefor no checks are done at this stage */ + if(p_CcNextEngineParams->params.plcrParams.sharedProfile) + { + tmpNia |= NIA_PLCR_ABSOLUTE; + FmPcdPlcrGetAbsoluteProfileId((t_Handle)p_FmPcd,e_FM_PCD_PLCR_SHARED,NULL,p_CcNextEngineParams->params.plcrParams.newRelativeProfileId, &profileId); + } + else + profileId = p_CcNextEngineParams->params.plcrParams.newRelativeProfileId; + + tmp |= p_CcNextEngineParams->params.plcrParams.newFqid; + WRITE_UINT32(p_AdResult->plcrProfile,(uint32_t)((uint32_t)profileId << FM_PCD_AD_PROFILEID_FOR_CNTRL_SHIFT)); + } + else + tmp = FM_PCD_AD_RESULT_DATA_FLOW_TYPE; + tmpNia |= NIA_ENG_PLCR | p_CcNextEngineParams->params.plcrParams.newRelativeProfileId; + if(p_CcNextEngineParams->params.kgParams.statisticsEn) + tmpNia |= FM_PCD_AD_RESULT_EXTENDED_MODE | FM_PCD_AD_RESULT_STATISTICS_EN; + break; + default: + return; + } + WRITE_UINT32(p_AdResult->fqid, tmp); + +#ifdef FM_PCD_CC_MANIP + if(p_CcNextEngineParams->h_Manip) + { + tmp = GET_UINT32(p_AdResult->plcrProfile); + tmp |= (uint32_t)(XX_VirtToPhys(p_AdNewPtr) - (p_FmPcd->physicalMuramBase)) >> 4; + WRITE_UINT32(p_AdResult->plcrProfile, tmp); + + tmpNia |= FM_PCD_AD_RESULT_EXTENDED_MODE; + tmpNia |= FM_PCD_AD_RESULT_NADEN; + } +#endif /* FM_PCD_CC_MANIP */ + + WRITE_UINT32(p_AdResult->nia, tmpNia); + } +} + +static void FillAdOfTypeContLookup(t_Handle p_Ad, t_Handle h_FmPcd, t_Handle p_FmPcdCcNode, t_Handle h_Manip) +{ + t_FmPcdCcNode *p_Node = (t_FmPcdCcNode *)p_FmPcdCcNode; + t_AdOfTypeContLookup *p_AdContLookup = (t_AdOfTypeContLookup *)p_Ad; + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint32_t tmpReg32; + t_Handle p_AdNewPtr = NULL; + + p_AdNewPtr = p_AdContLookup; + +#ifdef FM_PCD_CC_MANIP + if (h_Manip) + FmPcdManipUpdateAdContLookupForCc(h_Manip, p_Ad, &p_AdNewPtr, (uint32_t)((XX_VirtToPhys(p_Node->h_AdTable) - p_FmPcd->physicalMuramBase))); +#else + UNUSED(h_Manip); +#endif /* FM_PCD_CC_MANIP */ + + if(p_AdNewPtr) + { + tmpReg32 = 0; + tmpReg32 |= FM_PCD_AD_CONT_LOOKUP_TYPE; + tmpReg32 |= p_Node->sizeOfExtraction ? ((p_Node->sizeOfExtraction - 1) << 24) : 0; + tmpReg32 |= (uint32_t)(XX_VirtToPhys(p_Node->h_AdTable) - p_FmPcd->physicalMuramBase); + WRITE_UINT32(p_AdContLookup->ccAdBase, tmpReg32); + + tmpReg32 = 0; + tmpReg32 |= p_Node->numOfKeys << 24; + tmpReg32 |= (p_Node->lclMask ? FM_PCD_AD_CONT_LOOKUP_LCL_MASK : 0); + tmpReg32 |= p_Node->h_KeysMatchTable ? + (uint32_t)(XX_VirtToPhys(p_Node->h_KeysMatchTable) - p_FmPcd->physicalMuramBase) : 0; + WRITE_UINT32(p_AdContLookup->matchTblPtr, tmpReg32); + + tmpReg32 = 0; + tmpReg32 |= p_Node->prsArrayOffset << 24; + tmpReg32 |= p_Node->offset << 16; + tmpReg32 |= p_Node->parseCode; + WRITE_UINT32(p_AdContLookup->pcAndOffsets, tmpReg32); + + Mem2IOCpy32((void*)&p_AdContLookup->gmask, p_Node->p_GlblMask, CC_GLBL_MASK_SIZE); + } +} + +static void NextStepAd(t_Handle p_Ad, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams, t_FmPcd *p_FmPcd) +{ + switch(p_FmPcdCcNextEngineParams->nextEngine) + { + case(e_FM_PCD_KG): + case(e_FM_PCD_PLCR): + case(e_FM_PCD_DONE): + FillAdOfTypeResult(p_Ad, p_FmPcd, p_FmPcdCcNextEngineParams); + break; + case(e_FM_PCD_CC): + FillAdOfTypeContLookup(p_Ad, + p_FmPcd, + p_FmPcdCcNextEngineParams->params.ccParams.h_CcNode, +#ifdef FM_PCD_CC_MANIP + p_FmPcdCcNextEngineParams->h_Manip +#else + NULL +#endif /* FM_PCD_CC_MANIP */ + ); + UpdateNodeOwner (p_FmPcdCcNextEngineParams->params.ccParams.h_CcNode, + TRUE); + break; + default: + return; + } +} + + +static void ReleaseNewNodeCommonPart(t_FmPcdModifyCcKeyAdditionalParams *p_AdditionalInfo) +{ + if(p_AdditionalInfo->p_AdTableNew) + FM_MURAM_FreeMem(FmPcdGetMuramHandle(((t_FmPcdCcNode *)(p_AdditionalInfo->h_CurrentNode))->h_FmPcd), p_AdditionalInfo->p_AdTableNew); + if(p_AdditionalInfo->p_KeysMatchTableNew) + FM_MURAM_FreeMem(FmPcdGetMuramHandle(((t_FmPcdCcNode *)(p_AdditionalInfo->h_CurrentNode))->h_FmPcd), p_AdditionalInfo->p_KeysMatchTableNew); +} + +static t_Error UpdateGblMask(t_FmPcdCcNode *p_FmPcdCcNode, uint8_t keySize, uint8_t *p_Mask) +{ + if (p_Mask && + !p_FmPcdCcNode->glblMaskUpdated && + (keySize <= 4) && + !p_FmPcdCcNode->lclMask ) + { + memcpy(p_FmPcdCcNode->p_GlblMask, p_Mask, (sizeof(uint8_t))*keySize); + p_FmPcdCcNode->glblMaskUpdated = TRUE; + p_FmPcdCcNode->glblMaskSize = 4; + } + else if (p_Mask && + (keySize <= 4) && + !p_FmPcdCcNode->lclMask) + { + if (memcmp(p_FmPcdCcNode->p_GlblMask, p_Mask, keySize) != 0) + { + p_FmPcdCcNode->lclMask = TRUE; + p_FmPcdCcNode->glblMaskSize = 0; + } + } + else if (!p_Mask && (p_FmPcdCcNode->glblMaskUpdated) && (keySize <= 4)) + { + uint32_t tmpMask = 0xffffffff; + if (memcmp(p_FmPcdCcNode->p_GlblMask, &tmpMask, 4) != 0) + { + p_FmPcdCcNode->lclMask = TRUE; + p_FmPcdCcNode->glblMaskSize = 0; + } + } + else if (p_Mask) + { + p_FmPcdCcNode->lclMask = TRUE; + p_FmPcdCcNode->glblMaskSize = 0; + } + + return E_OK; +} + +static t_Error BuildNewNodeCommonPart(t_FmPcdCcNode *p_FmPcdCcNode, + int *size, + t_FmPcdModifyCcKeyAdditionalParams *p_AdditionalInfo) +{ + + p_AdditionalInfo->p_AdTableNew = (t_Handle)FM_MURAM_AllocMem(FmPcdGetMuramHandle(p_FmPcdCcNode->h_FmPcd), + (uint32_t)( (p_AdditionalInfo->numOfKeys+1) * FM_PCD_CC_AD_ENTRY_SIZE), + FM_PCD_CC_AD_TABLE_ALIGN); + if(!p_AdditionalInfo->p_AdTableNew) + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("No memory in MURAM for AD table ")); + + IOMemSet32((uint8_t*)p_AdditionalInfo->p_AdTableNew, 0, (uint32_t)((p_AdditionalInfo->numOfKeys+1) * FM_PCD_CC_AD_ENTRY_SIZE)); + + if(p_FmPcdCcNode->lclMask) + *size = 2 * p_FmPcdCcNode->ccKeySizeAccExtraction; + else + *size = p_FmPcdCcNode->ccKeySizeAccExtraction; + + p_AdditionalInfo->p_KeysMatchTableNew = + (t_Handle)FM_MURAM_AllocMem(FmPcdGetMuramHandle(p_FmPcdCcNode->h_FmPcd), + (uint32_t)(*size * sizeof(uint8_t) * (p_AdditionalInfo->numOfKeys + 1)), + FM_PCD_CC_KEYS_MATCH_TABLE_ALIGN); + if(!p_AdditionalInfo->p_KeysMatchTableNew) + { + FM_MURAM_FreeMem(FmPcdGetMuramHandle(p_FmPcdCcNode->h_FmPcd), p_AdditionalInfo->p_AdTableNew); + p_AdditionalInfo->p_AdTableNew = NULL; + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("No memory in MURAM for KEY MATCH table")); + } + IOMemSet32((uint8_t*)p_AdditionalInfo->p_KeysMatchTableNew, 0, *size * sizeof(uint8_t) * (p_AdditionalInfo->numOfKeys + 1)); + + p_AdditionalInfo->p_AdTableOld = p_FmPcdCcNode->h_AdTable; + p_AdditionalInfo->p_KeysMatchTableOld = p_FmPcdCcNode->h_KeysMatchTable; + + return E_OK; +} + +static t_Error BuildNewNodeAddOrMdfyKeyAndNextEngine(t_Handle h_FmPcd ,t_FmPcdCcNode *p_FmPcdCcNode, uint8_t keyIndex, t_FmPcdCcKeyParams *p_KeyParams,t_FmPcdModifyCcKeyAdditionalParams *p_AdditionalInfo, bool add) +{ + t_Error err = E_OK; + t_Handle p_AdTableNewTmp, p_KeysMatchTableNewTmp; + t_Handle p_KeysMatchTableOldTmp, p_AdTableOldTmp; + int size; + int i = 0, j = 0; + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint32_t requiredAction = 0; + bool prvLclMask; + t_CcNodeInformation *p_CcNodeInformation; + t_List *p_Pos; + + /*check that new NIA is legal*/ + err = ValidateNextEngineParams(h_FmPcd, &p_KeyParams->ccNextEngineParams); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + + prvLclMask = p_FmPcdCcNode->lclMask; + + /*check that new key is not require update of localMask*/ + err = UpdateGblMask(p_FmPcdCcNode, + p_FmPcdCcNode->ccKeySizeAccExtraction, + p_KeyParams->p_Mask); + if (err != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + + /*update internal data structure for next engine per index (index - key)*/ + memcpy(&p_AdditionalInfo->nextEngineAndRequiredAction[keyIndex].nextEngineParams,&p_KeyParams->ccNextEngineParams, sizeof(t_FmPcdCcNextEngineParams)); + + /*update numOfKeys*/ + if(add) + p_AdditionalInfo->numOfKeys = (uint8_t)(p_FmPcdCcNode->numOfKeys + 1); + else + p_AdditionalInfo->numOfKeys = (uint8_t)p_FmPcdCcNode->numOfKeys; + /*function which build in the memory new KeyTbl, AdTbl*/ + err = BuildNewNodeCommonPart(p_FmPcdCcNode, &size, p_AdditionalInfo); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + +#ifdef FM_PCD_CC_MANIP + /*check that manip is legal and what requiredAction is necessary for this manip*/ + if(p_KeyParams->ccNextEngineParams.h_Manip) + { + err = FmPcdManipCheckParamsForCcNextEgine(&p_KeyParams->ccNextEngineParams,&requiredAction); + if(err) + RETURN_ERROR(MAJOR, err, (NO_MSG)); + + } +#endif /* FM_PCD_CC_MANIP */ + + p_AdditionalInfo->nextEngineAndRequiredAction[keyIndex].requiredAction = requiredAction; + + p_AdditionalInfo->nextEngineAndRequiredAction[keyIndex].requiredAction |= UPDATE_CC_WITH_TREE; + + + /*update new Ad and new Key Table according to new requirement*/ + i = 0; + for(j = 0; j < p_AdditionalInfo->numOfKeys; j++) + { + p_AdTableNewTmp = PTR_MOVE(p_AdditionalInfo->p_AdTableNew, j*FM_PCD_CC_AD_ENTRY_SIZE); + if(j == keyIndex) + { + NextStepAd(p_AdTableNewTmp,&p_KeyParams->ccNextEngineParams, p_FmPcd); + p_KeysMatchTableNewTmp = PTR_MOVE(p_AdditionalInfo->p_KeysMatchTableNew, j*size * sizeof(uint8_t)); + Mem2IOCpy32((void*)p_KeysMatchTableNewTmp, p_KeyParams->p_Key, p_FmPcdCcNode->userSizeOfExtraction); + if(p_FmPcdCcNode->lclMask) + { + if(p_KeyParams->p_Mask) + Mem2IOCpy32(PTR_MOVE(p_KeysMatchTableNewTmp, p_FmPcdCcNode->ccKeySizeAccExtraction), p_KeyParams->p_Mask, p_FmPcdCcNode->userSizeOfExtraction); + else if (p_FmPcdCcNode->ccKeySizeAccExtraction > 4) + IOMemSet32(PTR_MOVE(p_KeysMatchTableNewTmp, p_FmPcdCcNode->ccKeySizeAccExtraction), 0xff, p_FmPcdCcNode->userSizeOfExtraction); + else + Mem2IOCpy32(PTR_MOVE(p_KeysMatchTableNewTmp, p_FmPcdCcNode->ccKeySizeAccExtraction),p_FmPcdCcNode->p_GlblMask, p_FmPcdCcNode->userSizeOfExtraction); + } + if(!add) + i++; + } + else + { + p_AdTableOldTmp = PTR_MOVE(p_AdditionalInfo->p_AdTableOld, i*FM_PCD_CC_AD_ENTRY_SIZE); + IO2IOCpy32(p_AdTableNewTmp, p_AdTableOldTmp, FM_PCD_CC_AD_ENTRY_SIZE); + p_KeysMatchTableNewTmp = PTR_MOVE(p_AdditionalInfo->p_KeysMatchTableNew, j*size * sizeof(uint8_t)); + p_KeysMatchTableOldTmp = PTR_MOVE(p_AdditionalInfo->p_KeysMatchTableOld, i*size * sizeof(uint8_t)); + + if(p_FmPcdCcNode->lclMask) + { + if(prvLclMask) + IO2IOCpy32(PTR_MOVE(p_KeysMatchTableNewTmp, p_FmPcdCcNode->ccKeySizeAccExtraction), + PTR_MOVE(p_KeysMatchTableOldTmp, p_FmPcdCcNode->ccKeySizeAccExtraction), + p_FmPcdCcNode->ccKeySizeAccExtraction); + else + { + p_KeysMatchTableOldTmp = PTR_MOVE(p_FmPcdCcNode->h_KeysMatchTable, i*p_FmPcdCcNode->ccKeySizeAccExtraction*sizeof(uint8_t)); + + if (p_FmPcdCcNode->ccKeySizeAccExtraction > 4) + IOMemSet32(PTR_MOVE(p_KeysMatchTableNewTmp, p_FmPcdCcNode->ccKeySizeAccExtraction), 0xff, p_FmPcdCcNode->userSizeOfExtraction); + else + IO2IOCpy32(PTR_MOVE(p_KeysMatchTableNewTmp, p_FmPcdCcNode->ccKeySizeAccExtraction), p_FmPcdCcNode->p_GlblMask, p_FmPcdCcNode->userSizeOfExtraction); + } + } + IO2IOCpy32(p_KeysMatchTableNewTmp, p_KeysMatchTableOldTmp, p_FmPcdCcNode->ccKeySizeAccExtraction); + i++; + } + } + + p_AdTableNewTmp = PTR_MOVE(p_AdditionalInfo->p_AdTableNew, j*FM_PCD_CC_AD_ENTRY_SIZE); + p_AdTableOldTmp = PTR_MOVE(p_AdditionalInfo->p_AdTableOld, i*FM_PCD_CC_AD_ENTRY_SIZE); + IO2IOCpy32(p_AdTableNewTmp, p_AdTableOldTmp, FM_PCD_CC_AD_ENTRY_SIZE); + + + if(!LIST_IsEmpty(&p_FmPcdCcNode->ccTreesLst)) + { + LIST_FOR_EACH(p_Pos, &p_FmPcdCcNode->ccTreesLst) + { + p_CcNodeInformation = CC_NODE_F_OBJECT(p_Pos); + ASSERT_COND(p_CcNodeInformation->h_CcNode); + /*update the manipulation which has to be updated from parameters of the port*/ + /*it's has to be updated with restrictions defined in the function*/ + err = FmPcdCcSetRequiredAction(p_FmPcdCcNode->h_FmPcd, + p_FmPcdCcNode->shadowAction | p_AdditionalInfo->nextEngineAndRequiredAction[keyIndex].requiredAction, + &p_AdditionalInfo->nextEngineAndRequiredAction[keyIndex], + PTR_MOVE(p_AdditionalInfo->p_AdTableNew, keyIndex*FM_PCD_CC_AD_ENTRY_SIZE), + 1, + p_CcNodeInformation->h_CcNode); + if (err) + RETURN_ERROR(MAJOR, err, (NO_MSG)); + + err = CcUpdateParam(p_FmPcdCcNode->h_FmPcd, + NULL, + &p_AdditionalInfo->nextEngineAndRequiredAction[keyIndex], + 1, + PTR_MOVE(p_AdditionalInfo->p_AdTableNew, keyIndex*FM_PCD_CC_AD_ENTRY_SIZE), + TRUE, + p_CcNodeInformation->index, + p_CcNodeInformation->h_CcNode, + TRUE); + if (err) + RETURN_ERROR(MAJOR, err, (NO_MSG)); + } + } + + if(p_FmPcdCcNode->lclMask) + memset(p_FmPcdCcNode->p_GlblMask, 0xff, CC_GLBL_MASK_SIZE * sizeof(uint8_t)); + + + if(p_KeyParams->ccNextEngineParams.nextEngine == e_FM_PCD_CC) + p_AdditionalInfo->h_NodeForAdd = p_KeyParams->ccNextEngineParams.params.ccParams.h_CcNode; + + if(!add) + { + if(p_FmPcdCcNode->nextEngineAndRequiredAction[keyIndex].nextEngineParams.nextEngine == e_FM_PCD_CC) + p_AdditionalInfo->h_NodeForRmv = p_FmPcdCcNode->nextEngineAndRequiredAction[keyIndex].nextEngineParams.params.ccParams.h_CcNode; +#ifdef FM_PCD_CC_MANIP + if(p_FmPcdCcNode->nextEngineAndRequiredAction[keyIndex].nextEngineParams.h_Manip) + p_AdditionalInfo->h_ManipForRmv = p_FmPcdCcNode->nextEngineAndRequiredAction[keyIndex].nextEngineParams.h_Manip; +#endif /* FM_PCD_CC_MANIP */ + } + + return E_OK; +} + +static t_Error BuildNewNodeRemoveKey(t_FmPcdCcNode *p_FmPcdCcNode, uint8_t keyIndex, t_FmPcdModifyCcKeyAdditionalParams *p_AdditionalInfo) +{ + int i = 0, j = 0; + t_Handle p_AdTableNewTmp,p_KeysMatchTableNewTmp; + t_Handle p_KeysMatchTableOldTmp, p_AdTableOldTmp; + int size; + t_Error err = E_OK; + + /*save new numOfKeys*/ + p_AdditionalInfo->numOfKeys = (uint16_t)(p_FmPcdCcNode->numOfKeys - 1); + + /*function which allocates in the memory new KeyTbl, AdTbl*/ + err = BuildNewNodeCommonPart(p_FmPcdCcNode, &size, p_AdditionalInfo); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + + /*update new Ad and new Key Table according to new requirement*/ + for(i = 0, j = 0; j < p_FmPcdCcNode->numOfKeys; i++, j++) + { + if(j == keyIndex) + { + p_AdTableOldTmp = PTR_MOVE(p_AdditionalInfo->p_AdTableOld, j*FM_PCD_CC_AD_ENTRY_SIZE); + j++; + } + if(j == p_FmPcdCcNode->numOfKeys) + break; + p_AdTableNewTmp = PTR_MOVE(p_AdditionalInfo->p_AdTableNew, i*FM_PCD_CC_AD_ENTRY_SIZE); + p_AdTableOldTmp = PTR_MOVE(p_AdditionalInfo->p_AdTableOld, j*FM_PCD_CC_AD_ENTRY_SIZE); + IO2IOCpy32(p_AdTableNewTmp,p_AdTableOldTmp, FM_PCD_CC_AD_ENTRY_SIZE); + p_KeysMatchTableOldTmp = PTR_MOVE(p_AdditionalInfo->p_KeysMatchTableOld, j*size * sizeof(uint8_t)); + p_KeysMatchTableNewTmp = PTR_MOVE(p_AdditionalInfo->p_KeysMatchTableNew, i*size * sizeof(uint8_t)); + IO2IOCpy32(p_KeysMatchTableNewTmp,p_KeysMatchTableOldTmp, size * sizeof(uint8_t)); + } + + p_AdTableNewTmp = PTR_MOVE(p_AdditionalInfo->p_AdTableNew, i*FM_PCD_CC_AD_ENTRY_SIZE); + p_AdTableOldTmp = PTR_MOVE(p_AdditionalInfo->p_AdTableOld, j*FM_PCD_CC_AD_ENTRY_SIZE); + IO2IOCpy32(p_AdTableNewTmp, p_AdTableOldTmp, FM_PCD_CC_AD_ENTRY_SIZE); + + if(p_FmPcdCcNode->nextEngineAndRequiredAction[keyIndex].nextEngineParams.nextEngine == e_FM_PCD_CC) + p_AdditionalInfo->h_NodeForRmv = p_FmPcdCcNode->nextEngineAndRequiredAction[keyIndex].nextEngineParams.params.ccParams.h_CcNode; +#ifdef FM_PCD_CC_MANIP + if(p_FmPcdCcNode->nextEngineAndRequiredAction[keyIndex].nextEngineParams.h_Manip) + p_AdditionalInfo->h_ManipForRmv = p_FmPcdCcNode->nextEngineAndRequiredAction[keyIndex].nextEngineParams.h_Manip; +#endif /* FM_PCD_CC_MANIP */ + + return E_OK; +} + +static t_Error BuildNewNodeModifyKey(t_FmPcdCcNode *p_FmPcdCcNode, uint8_t keyIndex, uint8_t *p_Key, uint8_t *p_Mask,t_FmPcdModifyCcKeyAdditionalParams *p_AdditionalInfo) +{ + t_Error err = E_OK; + t_Handle p_AdTableNewTmp, p_KeysMatchTableNewTmp; + t_Handle p_KeysMatchTableOldTmp, p_AdTableOldTmp; + int size; + int i = 0, j = 0; + bool prvLclMask; + + p_AdditionalInfo->numOfKeys = p_FmPcdCcNode->numOfKeys; + + prvLclMask = p_FmPcdCcNode->lclMask; + + /*check that new key is not require update of localMask*/ + err = UpdateGblMask(p_FmPcdCcNode, + p_FmPcdCcNode->sizeOfExtraction, + p_Mask); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + + /*function which build in the memory new KeyTbl, AdTbl*/ + err = BuildNewNodeCommonPart(p_FmPcdCcNode, &size, p_AdditionalInfo); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + + /*fill the New AdTable and New KeyTable*/ + for(j = 0, i = 0; j < p_AdditionalInfo->numOfKeys; j++, i++) + { + p_AdTableNewTmp = PTR_MOVE(p_AdditionalInfo->p_AdTableNew, j*FM_PCD_CC_AD_ENTRY_SIZE); + p_AdTableOldTmp = PTR_MOVE(p_AdditionalInfo->p_AdTableOld, i*FM_PCD_CC_AD_ENTRY_SIZE); + IO2IOCpy32(p_AdTableNewTmp, p_AdTableOldTmp, FM_PCD_CC_AD_ENTRY_SIZE); + if(j == keyIndex) + { + p_KeysMatchTableNewTmp = PTR_MOVE(p_AdditionalInfo->p_KeysMatchTableNew, j*size * sizeof(uint8_t)); + Mem2IOCpy32(p_KeysMatchTableNewTmp, p_Key, p_FmPcdCcNode->userSizeOfExtraction); + if(p_FmPcdCcNode->lclMask) + { + if(p_Mask) + Mem2IOCpy32(PTR_MOVE(p_KeysMatchTableNewTmp, p_FmPcdCcNode->ccKeySizeAccExtraction), p_Mask, p_FmPcdCcNode->userSizeOfExtraction); + else if (p_FmPcdCcNode->ccKeySizeAccExtraction > 4) + IOMemSet32(PTR_MOVE(p_KeysMatchTableNewTmp, p_FmPcdCcNode->ccKeySizeAccExtraction), 0xff, p_FmPcdCcNode->userSizeOfExtraction); + else + Mem2IOCpy32(PTR_MOVE(p_KeysMatchTableNewTmp, p_FmPcdCcNode->ccKeySizeAccExtraction),p_FmPcdCcNode->p_GlblMask, p_FmPcdCcNode->userSizeOfExtraction); + } + } + else + { + p_KeysMatchTableNewTmp = PTR_MOVE(p_AdditionalInfo->p_KeysMatchTableNew, j*size * sizeof(uint8_t)); + p_KeysMatchTableOldTmp = PTR_MOVE(p_FmPcdCcNode->h_KeysMatchTable, i*size * sizeof(uint8_t)); + if (p_FmPcdCcNode->lclMask) + { + if(prvLclMask) + IO2IOCpy32(PTR_MOVE(p_KeysMatchTableNewTmp, p_FmPcdCcNode->ccKeySizeAccExtraction), + PTR_MOVE(p_KeysMatchTableOldTmp, p_FmPcdCcNode->ccKeySizeAccExtraction), + p_FmPcdCcNode->userSizeOfExtraction); + else + { + p_KeysMatchTableOldTmp = PTR_MOVE(p_FmPcdCcNode->h_KeysMatchTable, i*p_FmPcdCcNode->ccKeySizeAccExtraction * sizeof(uint8_t)); + + if (p_FmPcdCcNode->ccKeySizeAccExtraction > 4) + IOMemSet32(PTR_MOVE(p_KeysMatchTableNewTmp, p_FmPcdCcNode->ccKeySizeAccExtraction), 0xff, p_FmPcdCcNode->userSizeOfExtraction); + else + IO2IOCpy32(PTR_MOVE(p_KeysMatchTableNewTmp, p_FmPcdCcNode->ccKeySizeAccExtraction), p_FmPcdCcNode->p_GlblMask, p_FmPcdCcNode->userSizeOfExtraction); + } + } + IO2IOCpy32((void*)p_KeysMatchTableNewTmp, p_KeysMatchTableOldTmp, p_FmPcdCcNode->ccKeySizeAccExtraction); + } + } + + p_AdTableNewTmp = PTR_MOVE(p_AdditionalInfo->p_AdTableNew, j*FM_PCD_CC_AD_ENTRY_SIZE); + p_AdTableOldTmp = PTR_MOVE(p_FmPcdCcNode->h_AdTable, i*FM_PCD_CC_AD_ENTRY_SIZE); + IO2IOCpy32(p_AdTableNewTmp, p_AdTableOldTmp, FM_PCD_CC_AD_ENTRY_SIZE); + + return E_OK; +} + +static t_Error BuildNewNodeModifyNextEngine(t_Handle h_FmPcd ,t_Handle h_FmPcdCcNodeOrTree, uint16_t keyIndex,t_FmPcdCcNextEngineParams *p_CcNextEngineParams, t_List *h_OldLst, t_List *h_NewLst,t_FmPcdModifyCcKeyAdditionalParams *p_AdditionalInfo) +{ + + t_Error err = E_OK; + uint32_t requiredAction = 0; + t_List *p_Pos; + t_CcNodeInformation *p_CcNodeInformation, ccNodeInfo; + t_Handle p_Ad; + t_FmPcdCcNode *p_FmPcdCcNode1 = NULL; + t_FmPcdCcTree *p_FmPcdCcTree = NULL; + + ASSERT_COND(p_CcNextEngineParams); + /*check that new NIA is legal*/ + err = ValidateNextEngineParams(h_FmPcd, p_CcNextEngineParams); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + + /*update internal data structure for next engine per index (index - key)*/ + memcpy(&p_AdditionalInfo->nextEngineAndRequiredAction[keyIndex].nextEngineParams,p_CcNextEngineParams, sizeof(t_FmPcdCcNextEngineParams)); + +#ifdef FM_PCD_CC_MANIP + /*check that manip is legal and what requiredAction is necessary for this manip*/ + if(p_CcNextEngineParams->h_Manip) + { + err = FmPcdManipCheckParamsForCcNextEgine(p_CcNextEngineParams,&requiredAction); + if(err) + RETURN_ERROR(MAJOR, err, (NO_MSG)); + + } +#endif /* FM_PCD_CC_MANIP */ + + if(!p_AdditionalInfo->tree) + { + p_FmPcdCcNode1 = (t_FmPcdCcNode *)h_FmPcdCcNodeOrTree; + p_Ad = p_FmPcdCcNode1->h_AdTable; + if(p_FmPcdCcNode1->nextEngineAndRequiredAction[keyIndex].nextEngineParams.nextEngine == e_FM_PCD_CC) + p_AdditionalInfo->h_NodeForRmv = p_FmPcdCcNode1->nextEngineAndRequiredAction[keyIndex].nextEngineParams.params.ccParams.h_CcNode; +#ifdef FM_PCD_CC_MANIP + if(p_FmPcdCcNode1->nextEngineAndRequiredAction[keyIndex].nextEngineParams.h_Manip) + p_AdditionalInfo->h_ManipForRmv = p_FmPcdCcNode1->nextEngineAndRequiredAction[keyIndex].nextEngineParams.h_Manip; +#endif /* FM_PCD_CC_MANIP */ + } + else + { + p_FmPcdCcTree = (t_FmPcdCcTree *)h_FmPcdCcNodeOrTree; + p_Ad = UINT_TO_PTR(p_FmPcdCcTree->ccTreeBaseAddr); + if(p_FmPcdCcTree->nextEngineAndRequiredAction[keyIndex].nextEngineParams.nextEngine == e_FM_PCD_CC) + p_AdditionalInfo->h_NodeForRmv = p_FmPcdCcTree->nextEngineAndRequiredAction[keyIndex].nextEngineParams.params.ccParams.h_CcNode; +#ifdef FM_PCD_CC_MANIP + if(p_FmPcdCcTree->nextEngineAndRequiredAction[keyIndex].nextEngineParams.h_Manip) + p_AdditionalInfo->h_ManipForRmv = p_FmPcdCcTree->nextEngineAndRequiredAction[keyIndex].nextEngineParams.h_Manip; +#endif /* FM_PCD_CC_MANIP */ + } + ASSERT_COND(p_Ad); + memset(&ccNodeInfo, 0, sizeof(t_CcNodeInformation)); + ccNodeInfo.h_CcNode = PTR_MOVE(p_Ad, keyIndex * FM_PCD_CC_AD_ENTRY_SIZE); + EnqueueNodeInfoToRelevantLst(h_OldLst, &ccNodeInfo); + + memset(&ccNodeInfo, 0, sizeof(t_CcNodeInformation)); + p_Ad = (t_Handle)FM_MURAM_AllocMem(FmPcdGetMuramHandle(h_FmPcd), + FM_PCD_CC_AD_ENTRY_SIZE, + FM_PCD_CC_AD_TABLE_ALIGN); + + if(!p_Ad) + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("Memory allocation in MURAM FAILED")); + + IOMemSet32((uint8_t *)p_Ad, 0, FM_PCD_CC_AD_ENTRY_SIZE); + if(p_CcNextEngineParams) + NextStepAd(p_Ad,p_CcNextEngineParams, h_FmPcd); + ccNodeInfo.h_CcNode = p_Ad; + EnqueueNodeInfoToRelevantLst(h_NewLst, &ccNodeInfo); + + p_AdditionalInfo->nextEngineAndRequiredAction[keyIndex].requiredAction = requiredAction; + + p_AdditionalInfo->nextEngineAndRequiredAction[keyIndex].requiredAction |= UPDATE_CC_WITH_TREE; + + if(!p_AdditionalInfo->tree) + { + ASSERT_COND(p_FmPcdCcNode1); + if(!LIST_IsEmpty(&p_FmPcdCcNode1->ccTreesLst)) + { + LIST_FOR_EACH(p_Pos, &p_FmPcdCcNode1->ccTreesLst) + { + p_CcNodeInformation = CC_NODE_F_OBJECT(p_Pos); + ASSERT_COND(p_CcNodeInformation->h_CcNode); + /*update the manipulation which has to be updated from parameters of the port*/ + /*it's has to be updated with restrictions defined in the function*/ + err = FmPcdCcSetRequiredAction(p_FmPcdCcNode1->h_FmPcd, p_FmPcdCcNode1->shadowAction | p_AdditionalInfo->nextEngineAndRequiredAction[keyIndex].requiredAction, &p_AdditionalInfo->nextEngineAndRequiredAction[keyIndex], + p_Ad, 1, p_CcNodeInformation->h_CcNode); + if(err) + RETURN_ERROR(MAJOR, err, (NO_MSG)); + err = CcUpdateParam(p_FmPcdCcNode1->h_FmPcd, NULL, &p_AdditionalInfo->nextEngineAndRequiredAction[keyIndex],1, p_Ad, TRUE, p_CcNodeInformation->index, p_CcNodeInformation->h_CcNode, TRUE); + if(err) + RETURN_ERROR(MAJOR, err, (NO_MSG)); + } + } + } + else + { + ASSERT_COND(p_FmPcdCcTree); + err = FmPcdCcSetRequiredAction(h_FmPcd, p_FmPcdCcTree->requiredAction | p_AdditionalInfo->nextEngineAndRequiredAction[keyIndex].requiredAction, &p_AdditionalInfo->nextEngineAndRequiredAction[keyIndex], + p_Ad, 1, (t_Handle)p_FmPcdCcTree); + if(err) + RETURN_ERROR(MAJOR, err, (NO_MSG)); + err = CcUpdateParam(h_FmPcd, NULL, &p_AdditionalInfo->nextEngineAndRequiredAction[keyIndex],1, p_Ad, TRUE, 0, (t_Handle)p_FmPcdCcTree, TRUE); + if(err) + RETURN_ERROR(MAJOR, err, (NO_MSG)); + } + + if(p_CcNextEngineParams->nextEngine == e_FM_PCD_CC) + p_AdditionalInfo->h_NodeForAdd = p_CcNextEngineParams->params.ccParams.h_CcNode; + return E_OK; +} + +static t_Handle BuildNewAd(t_FmPcdModifyCcKeyAdditionalParams *p_FmPcdModifyCcKeyAdditionalParams, + t_FmPcdCcNode *p_FmPcdCcNode, + t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams) +{ + + t_Handle p_Ad; + t_FmPcdCcNode *p_FmPcdCcNodeTmp; + + p_Ad = (t_Handle)FM_MURAM_AllocMem(((t_FmPcd *)(p_FmPcdCcNode->h_FmPcd))->h_FmMuram, + FM_PCD_CC_AD_ENTRY_SIZE, + FM_PCD_CC_AD_TABLE_ALIGN); + if(!p_Ad) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("MURAM for AD")); + return NULL; + } + IOMemSet32(p_Ad, 0, FM_PCD_CC_AD_ENTRY_SIZE); + + p_FmPcdCcNodeTmp = (t_FmPcdCcNode*)XX_Malloc(sizeof(t_FmPcdCcNode)); + if(!p_FmPcdCcNodeTmp) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("p_FmPcdCcNodeTmp")); + return NULL; + } + memset(p_FmPcdCcNodeTmp, 0, sizeof(t_FmPcdCcNode)); + + p_FmPcdCcNodeTmp->numOfKeys = p_FmPcdModifyCcKeyAdditionalParams->numOfKeys; + p_FmPcdCcNodeTmp->h_KeysMatchTable = p_FmPcdModifyCcKeyAdditionalParams->p_KeysMatchTableNew; + p_FmPcdCcNodeTmp->h_AdTable = p_FmPcdModifyCcKeyAdditionalParams->p_AdTableNew; + + p_FmPcdCcNodeTmp->lclMask = p_FmPcdCcNode->lclMask; + p_FmPcdCcNodeTmp->parseCode = p_FmPcdCcNode->parseCode; + p_FmPcdCcNodeTmp->offset = p_FmPcdCcNode->offset; + p_FmPcdCcNodeTmp->prsArrayOffset = p_FmPcdCcNode->prsArrayOffset; + p_FmPcdCcNodeTmp->ctrlFlow = p_FmPcdCcNode->ctrlFlow; + p_FmPcdCcNodeTmp->ccKeySizeAccExtraction = p_FmPcdCcNode->ccKeySizeAccExtraction; + p_FmPcdCcNodeTmp->sizeOfExtraction = p_FmPcdCcNode->sizeOfExtraction; + p_FmPcdCcNodeTmp->glblMaskSize = p_FmPcdCcNode->glblMaskSize; + p_FmPcdCcNodeTmp->p_GlblMask = p_FmPcdCcNode->p_GlblMask; + + if (p_FmPcdCcNextEngineParams->nextEngine == e_FM_PCD_CC) + FillAdOfTypeContLookup(p_Ad, + p_FmPcdCcNode->h_FmPcd, + p_FmPcdCcNodeTmp, +#ifdef FM_PCD_CC_MANIP + p_FmPcdCcNextEngineParams->h_Manip +#else + NULL +#endif /* FM_PCD_CC_MANIP */ + ); + + XX_Free(p_FmPcdCcNodeTmp); + + return p_Ad; +} + +static void UpdateAdPtrOfNodesWhichPointsOnCrntMdfNode(t_FmPcdCcNode *p_CrntMdfNode ,t_FmPcdModifyCcKeyAdditionalParams *p_FmPcdModifyCcKeyAdditionalParams, t_List *h_OldLst, t_List *h_NewLst) +{ + t_CcNodeInformation *p_CcNodeInformation; + t_FmPcdCcNode *p_NodePtrOnCurrentMdfNode = NULL; + t_List *p_Pos; + int i = 0; + t_Handle p_AdTablePtOnCrntCurrentMdfNode, p_AdTableNewModified; + t_CcNodeInformation ccNodeInfo; + + LIST_FOR_EACH(p_Pos, &p_CrntMdfNode->ccPrevNodesLst) + { + p_CcNodeInformation = CC_NODE_F_OBJECT(p_Pos); + p_NodePtrOnCurrentMdfNode = (t_FmPcdCcNode *)p_CcNodeInformation->h_CcNode; + ASSERT_COND(p_NodePtrOnCurrentMdfNode); + /*search in the prev node which exact index points on this current modified node for getting AD */ + for(i = 0; i < p_NodePtrOnCurrentMdfNode->numOfKeys + 1; i++) + { + if(p_NodePtrOnCurrentMdfNode->nextEngineAndRequiredAction[i].nextEngineParams.nextEngine == e_FM_PCD_CC) + { + if(p_NodePtrOnCurrentMdfNode->nextEngineAndRequiredAction[i].nextEngineParams.params.ccParams.h_CcNode == (t_Handle)p_CrntMdfNode) + { + p_AdTablePtOnCrntCurrentMdfNode = PTR_MOVE(p_NodePtrOnCurrentMdfNode->h_AdTable, i*FM_PCD_CC_AD_ENTRY_SIZE); + memset(&ccNodeInfo, 0, sizeof(t_CcNodeInformation)); + ccNodeInfo.h_CcNode = p_AdTablePtOnCrntCurrentMdfNode; + EnqueueNodeInfoToRelevantLst(h_OldLst, &ccNodeInfo); + + p_AdTableNewModified = BuildNewAd(p_FmPcdModifyCcKeyAdditionalParams, p_CrntMdfNode, &p_NodePtrOnCurrentMdfNode->nextEngineAndRequiredAction[i].nextEngineParams); + memset(&ccNodeInfo, 0, sizeof(t_CcNodeInformation)); + ccNodeInfo.h_CcNode = p_AdTableNewModified; + EnqueueNodeInfoToRelevantLst(h_NewLst, &ccNodeInfo); + } + } + } + ASSERT_COND(i != p_NodePtrOnCurrentMdfNode->numOfKeys); + } +} + +static void UpdateAdPtrOfTreesWhichPointsOnCrntMdfNode(t_FmPcdCcNode *p_CrntMdfNode ,t_FmPcdModifyCcKeyAdditionalParams *p_FmPcdModifyCcKeyAdditionalParams, t_List *h_OldLst, t_List *h_NewLst) +{ + t_CcNodeInformation *p_CcNodeInformation; + t_FmPcdCcTree *p_TreePtrOnCurrentMdfNode = NULL; + t_List *p_Pos; + int i = 0; + t_Handle p_AdTableTmp, p_AdTableTmp1; + t_CcNodeInformation ccNodeInfo; + + LIST_FOR_EACH(p_Pos, &p_CrntMdfNode->ccTreeIdLst) + { + p_CcNodeInformation = CC_NODE_F_OBJECT(p_Pos); + p_TreePtrOnCurrentMdfNode = (t_FmPcdCcTree *)p_CcNodeInformation->h_CcNode; + + ASSERT_COND(p_TreePtrOnCurrentMdfNode); + /*search in the trees which exact index points on this current modified node for getting AD + */ + for(i = 0; i < p_TreePtrOnCurrentMdfNode->numOfEntries; i++) + { + if(p_TreePtrOnCurrentMdfNode->nextEngineAndRequiredAction[i].nextEngineParams.nextEngine == e_FM_PCD_CC) + { + if(p_TreePtrOnCurrentMdfNode->nextEngineAndRequiredAction[i].nextEngineParams.params.ccParams.h_CcNode == (t_Handle)p_CrntMdfNode) + { + p_AdTableTmp = UINT_TO_PTR(p_TreePtrOnCurrentMdfNode->ccTreeBaseAddr + i*FM_PCD_CC_AD_ENTRY_SIZE); + memset(&ccNodeInfo, 0, sizeof(t_CcNodeInformation)); + ccNodeInfo.h_CcNode = p_AdTableTmp; + EnqueueNodeInfoToRelevantLst(h_OldLst, &ccNodeInfo); + + p_AdTableTmp1 = BuildNewAd(p_FmPcdModifyCcKeyAdditionalParams, p_CrntMdfNode, &p_TreePtrOnCurrentMdfNode->nextEngineAndRequiredAction[i].nextEngineParams); + memset(&ccNodeInfo, 0, sizeof(t_CcNodeInformation)); + ccNodeInfo.h_CcNode = p_AdTableTmp1; + EnqueueNodeInfoToRelevantLst(h_NewLst, &ccNodeInfo); + } + } + } + ASSERT_COND(i == p_TreePtrOnCurrentMdfNode->numOfEntries); + } +} + +static t_Error ModifyKeyCommonPart1(t_Handle h_FmPcdCcNodeOrTree, uint16_t keyIndex, t_Handle *h_Params, e_ModifyState modifyState, bool check, bool tree) +{ + t_FmPcdModifyCcKeyAdditionalParams *p_FmPcdModifyCcKeyAdditionalParams; + int i = 0, j = 0; + bool wasUpdate = FALSE; + t_FmPcdCcNode *p_FmPcdCcNode = NULL; + t_FmPcdCcTree *p_FmPcdCcTree; + uint16_t numOfKeys; + t_FmPcdCcNextEngineAndRequiredActionParams *p_nextEngineAndRequiredAction = NULL; + + SANITY_CHECK_RETURN_ERROR(h_FmPcdCcNodeOrTree,E_INVALID_HANDLE); + + p_nextEngineAndRequiredAction = XX_Malloc(FM_PCD_MAX_NUM_OF_KEYS * sizeof(*p_nextEngineAndRequiredAction)); + if(!p_nextEngineAndRequiredAction) + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("failed to allocate memory for p_nextEngineAndRequiredAction")); + + memset(p_nextEngineAndRequiredAction, 0, FM_PCD_MAX_NUM_OF_KEYS * sizeof(*p_nextEngineAndRequiredAction)); + + if(!tree) + { + p_FmPcdCcNode = (t_FmPcdCcNode *)h_FmPcdCcNodeOrTree; + numOfKeys = p_FmPcdCcNode->numOfKeys; + + /*node has to be pointed by another node or tree*/ + if (!LIST_NumOfObjs(&p_FmPcdCcNode->ccPrevNodesLst) && + !LIST_NumOfObjs(&p_FmPcdCcNode->ccTreeIdLst)) + { + XX_Free(p_nextEngineAndRequiredAction); + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("node has to be pointed by node or tree")); + } + + if(!LIST_NumOfObjs(&p_FmPcdCcNode->ccTreesLst) || + (LIST_NumOfObjs(&p_FmPcdCcNode->ccTreesLst) != 1)) + { + XX_Free(p_nextEngineAndRequiredAction); + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("node has to be belonging to some tree and only to one tree")); + } + + memcpy(p_nextEngineAndRequiredAction, + p_FmPcdCcNode->nextEngineAndRequiredAction, + FM_PCD_MAX_NUM_OF_KEYS * sizeof(t_FmPcdCcNextEngineAndRequiredActionParams)); + + if(check) + { + if((p_FmPcdCcNode->parseCode == CC_PC_FF_IPV4TTL) || + (p_FmPcdCcNode->parseCode == CC_PC_FF_IPV6HOP_LIMIT) || + (p_FmPcdCcNode->parseCode == CC_PC_GENERIC_IC_HASH_INDEXED)) + { + XX_Free(p_nextEngineAndRequiredAction); + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("nodeId of CC_PC_FF_IPV4TTL or CC_PC_FF_IPV6HOP_LIMIT can not be used for addKey, removeKey, modifyKey")); + } + } + } + else + { + p_FmPcdCcTree = (t_FmPcdCcTree *)h_FmPcdCcNodeOrTree; + numOfKeys = p_FmPcdCcTree->numOfEntries; + memcpy(p_nextEngineAndRequiredAction, + p_FmPcdCcTree->nextEngineAndRequiredAction, + FM_PCD_MAX_NUM_OF_KEYS * sizeof(t_FmPcdCcNextEngineAndRequiredActionParams)); + } + + p_FmPcdModifyCcKeyAdditionalParams = + (t_FmPcdModifyCcKeyAdditionalParams *)XX_Malloc(sizeof(t_FmPcdModifyCcKeyAdditionalParams)); + if(!p_FmPcdModifyCcKeyAdditionalParams) + { + XX_Free(p_nextEngineAndRequiredAction); + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("Allocation of internal data structure FAILED")); + } + memset(p_FmPcdModifyCcKeyAdditionalParams, 0, sizeof(t_FmPcdModifyCcKeyAdditionalParams)); + + p_FmPcdModifyCcKeyAdditionalParams->h_CurrentNode = h_FmPcdCcNodeOrTree; + p_FmPcdModifyCcKeyAdditionalParams->keyIndex = keyIndex; + + while(i < numOfKeys) + { + if((j == keyIndex) && !wasUpdate) + { + if(modifyState == e_MODIFY_STATE_ADD) + j++; + else if(modifyState == e_MODIFY_STATE_REMOVE) + i++; + wasUpdate = TRUE; + } + else + { + memcpy(&p_FmPcdModifyCcKeyAdditionalParams->nextEngineAndRequiredAction[j], &p_nextEngineAndRequiredAction[i], sizeof(t_FmPcdCcNextEngineAndRequiredActionParams)); + i++; + j++; + } + } + + if (keyIndex == numOfKeys) + { + if (modifyState == e_MODIFY_STATE_ADD) + j++; + else if(modifyState == e_MODIFY_STATE_REMOVE) + i++; + } + + memcpy(&p_FmPcdModifyCcKeyAdditionalParams->nextEngineAndRequiredAction[j], &p_nextEngineAndRequiredAction[numOfKeys], sizeof(t_FmPcdCcNextEngineAndRequiredActionParams)); + + XX_Free(p_nextEngineAndRequiredAction); + *h_Params = p_FmPcdModifyCcKeyAdditionalParams; + + return E_OK; +} + +static t_Error UpdatePtrWhichPointOnCrntMdfNode(t_FmPcdCcNode *p_FmPcdCcNode, t_FmPcdModifyCcKeyAdditionalParams *p_FmPcdModifyCcKeyAdditionalParams ,t_List *h_OldLst, t_List *h_NewLst) +{ + if(!LIST_IsEmpty(&p_FmPcdCcNode->ccPrevNodesLst)) + UpdateAdPtrOfNodesWhichPointsOnCrntMdfNode(p_FmPcdCcNode, p_FmPcdModifyCcKeyAdditionalParams, h_OldLst, h_NewLst); + + if(!LIST_IsEmpty(&p_FmPcdCcNode->ccTreeIdLst)) + UpdateAdPtrOfTreesWhichPointsOnCrntMdfNode(p_FmPcdCcNode, p_FmPcdModifyCcKeyAdditionalParams, h_OldLst, h_NewLst); + + return E_OK; +} + +static void FmPcdCcUpdateTreeOwner(t_FmPcdCcTree *p_FmPcdCcTree, bool add) +{ + ASSERT_COND(p_FmPcdCcTree); + + if(add) + p_FmPcdCcTree->owners++; + else + { + ASSERT_COND(p_FmPcdCcTree->owners); + p_FmPcdCcTree->owners--; + } +} + +#ifdef FM_PCD_CC_MANIP +static t_Error CheckAndSetManipParamsWithCcNodeParams(t_FmPcdCcNode *p_FmPcdCcNode) +{ + t_Error err = E_OK; + int i = 0; + + for(i = 0; i < p_FmPcdCcNode->numOfKeys; i++) + { + if(p_FmPcdCcNode->nextEngineAndRequiredAction[i].nextEngineParams.h_Manip) + { + err = FmPcdManipCheckParamsWithCcNodeParams(p_FmPcdCcNode->nextEngineAndRequiredAction[i].nextEngineParams.h_Manip, (t_Handle)p_FmPcdCcNode); + if(err) + return err; + } + } + + return err; +} +#endif /* FM_PCD_CC_MANIP */ + +static t_Error CcUpdateParams(t_Handle h_FmPcd, + t_Handle h_FmPort, + t_Handle h_FmTree, + bool validate) +{ + t_FmPcdCcTree *p_CcTree = (t_FmPcdCcTree *) h_FmTree; + + return CcUpdateParam(h_FmPcd, + h_FmPort, + p_CcTree->nextEngineAndRequiredAction, + p_CcTree->numOfEntries, + UINT_TO_PTR(p_CcTree->ccTreeBaseAddr), + validate, + 0, + h_FmTree, + FALSE); +} + +static t_Error CheckParams(t_Handle h_FmPcd, + t_FmPcdCcNodeParams *p_CcNodeParam, + t_FmPcdCcNode *p_FmPcdCcNode, + bool *isKeyTblAlloc) +{ + int tmp = 0; + t_FmPcdCcKeyParams *p_KeyParams; + t_Error err; + uint32_t requiredAction = 0; + + err = ValidateNextEngineParams(h_FmPcd, &p_CcNodeParam->keysParams.ccNextEngineParamsForMiss); + if(err) + RETURN_ERROR(MAJOR, err, ("For this node MissNextEngineParams are not valid")); + +#ifdef FM_PCD_CC_MANIP + if(p_CcNodeParam->keysParams.ccNextEngineParamsForMiss.h_Manip) + { + err = FmPcdManipCheckParamsForCcNextEgine(&p_CcNodeParam->keysParams.ccNextEngineParamsForMiss, &requiredAction); + if(err) + RETURN_ERROR(MAJOR, err, (NO_MSG)); + } +#endif /* FM_PCD_CC_MANIP */ + + memcpy(&p_FmPcdCcNode->nextEngineAndRequiredAction[p_FmPcdCcNode->numOfKeys].nextEngineParams,&p_CcNodeParam->keysParams.ccNextEngineParamsForMiss, sizeof(t_FmPcdCcNextEngineParams)); + p_FmPcdCcNode->nextEngineAndRequiredAction[p_FmPcdCcNode->numOfKeys].requiredAction = requiredAction; + + for(tmp = 0 ; tmp < p_FmPcdCcNode->numOfKeys; tmp++) + { + p_KeyParams = &p_CcNodeParam->keysParams.keyParams[tmp]; + + if(!p_KeyParams->p_Key) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("p_Key is not initialized")); + + + err = ValidateNextEngineParams(h_FmPcd, &p_KeyParams->ccNextEngineParams); + if(err) + RETURN_ERROR(MAJOR, err, (NO_MSG)); + + err = UpdateGblMask(p_FmPcdCcNode, + p_CcNodeParam->keysParams.keySize, + p_KeyParams->p_Mask); + +#ifdef FM_PCD_CC_MANIP + if(p_KeyParams->ccNextEngineParams.h_Manip) + { + err = FmPcdManipCheckParamsForCcNextEgine(&p_KeyParams->ccNextEngineParams, &requiredAction); + if(err) + RETURN_ERROR(MAJOR, err, (NO_MSG)); + } +#endif /* FM_PCD_CC_MANIP */ + + memcpy(&p_FmPcdCcNode->nextEngineAndRequiredAction[tmp],&p_KeyParams->ccNextEngineParams, sizeof(t_FmPcdCcNextEngineParams)); + p_FmPcdCcNode->nextEngineAndRequiredAction[tmp].requiredAction = requiredAction; + } + + *isKeyTblAlloc = TRUE; + return E_OK; +} + +static t_Error Ipv4TtlOrIpv6HopLimiCheckParams( t_Handle h_FmPcd, + t_FmPcdCcNodeParams *p_CcNodeParam, t_FmPcdCcNode *p_FmPcdCcNode, + bool *isKeyTblAlloc) +{ + int tmp = 0; + t_FmPcdCcKeyParams *p_KeyParams; + t_Error err; + uint8_t key = 0x01; + uint32_t requiredAction = 0; + + if(p_FmPcdCcNode->numOfKeys != 1 ) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("for IPV4TTL and IPV6_HOP_LIMIT has to be only 1 key - TTL = 1, otherwise it's Miss")); + + err = ValidateNextEngineParams(h_FmPcd, &p_CcNodeParam->keysParams.ccNextEngineParamsForMiss); + if(err) + RETURN_ERROR(MAJOR, err, ("For this node MissNextEngineParams are not valid")); + +#ifdef FM_PCD_CC_MANIP + if(p_CcNodeParam->keysParams.ccNextEngineParamsForMiss.h_Manip) + { + err = FmPcdManipCheckParamsForCcNextEgine(&p_CcNodeParam->keysParams.ccNextEngineParamsForMiss, &requiredAction); + if(err) + RETURN_ERROR(MAJOR, err, (NO_MSG)); + } +#endif /* FM_PCD_CC_MANIP */ + + memcpy(&p_FmPcdCcNode->nextEngineAndRequiredAction[p_FmPcdCcNode->numOfKeys].nextEngineParams, &p_CcNodeParam->keysParams.ccNextEngineParamsForMiss, sizeof(t_FmPcdCcNextEngineParams)); + p_FmPcdCcNode->nextEngineAndRequiredAction[p_FmPcdCcNode->numOfKeys].requiredAction = requiredAction; + + for(tmp = 0 ; tmp < p_FmPcdCcNode->numOfKeys; tmp++) + { + p_KeyParams = &p_CcNodeParam->keysParams.keyParams[tmp]; + if(p_KeyParams->p_Mask) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("If node of the type IPV4_TTL or IPV6_HOP_LIMIT p_Mask can not be initialized")); + if(memcmp(p_KeyParams->p_Key, &key, 1) != 0) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("If node of the type IPV4_TTL or IPV6_HOP_LIMIT p_Key has to be 1")); + err = ValidateNextEngineParams(h_FmPcd, &p_KeyParams->ccNextEngineParams); + if(err) + RETURN_ERROR(MAJOR, err, (NO_MSG)); + +#ifdef FM_PCD_CC_MANIP + if(p_KeyParams->ccNextEngineParams.h_Manip) + { + err = FmPcdManipCheckParamsForCcNextEgine(&p_KeyParams->ccNextEngineParams, &requiredAction); + if(err) + RETURN_ERROR(MAJOR, err, (NO_MSG)); + } +#endif /* FM_PCD_CC_MANIP */ + + memcpy(&p_FmPcdCcNode->nextEngineAndRequiredAction[tmp].nextEngineParams, &p_KeyParams->ccNextEngineParams, sizeof(t_FmPcdCcNextEngineParams)); + p_FmPcdCcNode->nextEngineAndRequiredAction[tmp].requiredAction = requiredAction; + } + + *isKeyTblAlloc = FALSE; + return E_OK; +} + +static t_Error IcHashIndexedCheckParams(t_Handle h_FmPcd, + t_FmPcdCcNodeParams *p_CcNodeParam, + t_FmPcdCcNode *p_FmPcdCcNode, + /*uint16_t *ccInfo,*/ + /*t_List *ccNextDifferentNodesLst,*/ + bool *isKeyTblAlloc) +{ + int tmp = 0, countOnes = 0; + t_FmPcdCcKeyParams *p_KeyParams; + t_Error err; + uint16_t glblMask = p_CcNodeParam->extractCcParams.extractNonHdr.icIndxMask; + uint16_t countMask = (uint16_t)(glblMask >> 4); +#ifdef FM_PCD_CC_MANIP + uint32_t requiredAction; +#endif /* FM_PCD_CC_MANIP */ + + if (glblMask & 0x000f) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("icIndxMask has to be with last nibble 0")); + + while (countMask) + { + countOnes++; + countMask=(uint16_t)(countMask>>1); + } + + if (!POWER_OF_2(p_FmPcdCcNode->numOfKeys)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("For Node of the type INDEXED numOfKeys has to be powerOfTwo")); + if (p_FmPcdCcNode->numOfKeys != ((uint32_t)1<keysParams.ccNextEngineParamsForMiss); + if(GET_ERROR_TYPE(err)!= E_NOT_SUPPORTED) + RETURN_ERROR(MAJOR, err, ("MissNextEngineParams for the node of the type IC_INDEX_HASH has to be UnInitialized")); + + for(tmp = 0 ; tmp < p_FmPcdCcNode->numOfKeys; tmp++) + { + p_KeyParams = &p_CcNodeParam->keysParams.keyParams[tmp]; + if(p_KeyParams->p_Mask || p_KeyParams->p_Key) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("For Node of the type IC_HASH_INDEXED p_Key or p_Mask has to be NULL")); + + if((glblMask & (tmp * 16)) == (tmp * 16)) + { + err = ValidateNextEngineParams(h_FmPcd, &p_KeyParams->ccNextEngineParams); + if(err) + RETURN_ERROR(MAJOR, err, ("This index has to be initialized for the node of the type IC_INDEX_HASH according to settings of GlobalMask ")); + +#ifdef FM_PCD_CC_MANIP + if(p_KeyParams->ccNextEngineParams.h_Manip) + { + err = FmPcdManipCheckParamsForCcNextEgine(&p_KeyParams->ccNextEngineParams, &requiredAction); + if(err) + RETURN_ERROR(MAJOR, err, (NO_MSG)); + } + p_FmPcdCcNode->nextEngineAndRequiredAction[tmp].requiredAction = requiredAction; +#endif /* FM_PCD_CC_MANIP */ + + memcpy(&p_FmPcdCcNode->nextEngineAndRequiredAction[tmp].nextEngineParams,&p_KeyParams->ccNextEngineParams, sizeof(t_FmPcdCcNextEngineParams)); + } + else + { + err = ValidateNextEngineParams(h_FmPcd, &p_KeyParams->ccNextEngineParams); + if(GET_ERROR_TYPE(err)!= E_NOT_SUPPORTED) + RETURN_ERROR(MAJOR, err, ("This index has to be UnInitialized for the node of the type IC_INDEX_HASH according to settings of GlobalMask")); + } + } + *isKeyTblAlloc = FALSE; + memcpy(PTR_MOVE(p_FmPcdCcNode->p_GlblMask, 2), &glblMask, 2); + + return E_OK; +} + +t_Error FmPcdCcModifyNextEngineParamTree(t_Handle h_FmPcd, t_Handle h_FmPcdCcTree, uint8_t grpId, uint8_t index, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams, t_List *h_OldLst, t_List *h_NewLst, t_Handle *h_AdditionalParams) +{ + t_FmPcdCcTree *p_FmPcdCcTree = (t_FmPcdCcTree *)h_FmPcdCcTree; + t_Error err = E_OK; + uint16_t keyIndex; + t_FmPcdModifyCcKeyAdditionalParams *p_ModifyKeyParams; + + SANITY_CHECK_RETURN_ERROR((grpId <= 7),E_INVALID_VALUE); + SANITY_CHECK_RETURN_ERROR(h_FmPcdCcTree,E_INVALID_VALUE); + + if(grpId >= p_FmPcdCcTree->numOfGrps) + RETURN_ERROR(MAJOR, E_INVALID_HANDLE, ("grpId you asked > numOfGroup of relevant tree")); + + if(index >= p_FmPcdCcTree->fmPcdGroupParam[grpId].numOfEntriesInGroup) + RETURN_ERROR(MAJOR, E_INVALID_HANDLE, ("index > numOfEntriesInGroup")); + + keyIndex = (uint16_t)(p_FmPcdCcTree->fmPcdGroupParam[grpId].baseGroupEntry + index); + + err = ModifyKeyCommonPart1(h_FmPcdCcTree, keyIndex, h_AdditionalParams, e_MODIFY_STATE_CHANGE, TRUE, TRUE); + if(err) + RETURN_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); + + p_ModifyKeyParams = (t_FmPcdModifyCcKeyAdditionalParams *)*h_AdditionalParams; + p_ModifyKeyParams->tree = TRUE; + + err = BuildNewNodeModifyNextEngine (h_FmPcd, h_FmPcdCcTree, keyIndex,p_FmPcdCcNextEngineParams, h_OldLst, h_NewLst, p_ModifyKeyParams); + if(err) + { + XX_Free(p_ModifyKeyParams); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + return E_OK; + +} + +t_Error FmPcdCcRemoveKey(t_Handle h_FmPcd, t_Handle h_FmPcdCcNode, uint8_t keyIndex, t_List *h_OldLst, t_List *h_NewLst, t_Handle *h_AdditionalParams) +{ + + t_FmPcdCcNode *p_FmPcdCcNode = (t_FmPcdCcNode *) h_FmPcdCcNode; + t_Error err = E_OK; + t_FmPcdModifyCcKeyAdditionalParams *p_ModifyKeyParams; + + if(keyIndex >= p_FmPcdCcNode->numOfKeys) + RETURN_ERROR(MAJOR, E_INVALID_HANDLE, ("impossible to remove key when numOfKeys <= keyIndex")); + + if(!p_FmPcdCcNode->numOfKeys) + RETURN_ERROR(MAJOR, E_INVALID_HANDLE, ("keyIndex you asked > numOfKeys of relevant node that was initialized")); + + if(p_FmPcdCcNode->h_FmPcd != h_FmPcd) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("handler to FmPcd is diferent from one which was assigned to the node in the Init time")); + + err = ModifyKeyCommonPart1(p_FmPcdCcNode, keyIndex, h_AdditionalParams, e_MODIFY_STATE_REMOVE, TRUE, FALSE); + if(err) + RETURN_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); + + p_ModifyKeyParams = (t_FmPcdModifyCcKeyAdditionalParams *)*h_AdditionalParams; + err = BuildNewNodeRemoveKey (p_FmPcdCcNode, keyIndex, p_ModifyKeyParams); + if(err) + { + XX_Free(p_ModifyKeyParams); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + err = UpdatePtrWhichPointOnCrntMdfNode(p_FmPcdCcNode, p_ModifyKeyParams, h_OldLst, h_NewLst); + if(err) + { + ReleaseNewNodeCommonPart(p_ModifyKeyParams); + XX_Free(p_ModifyKeyParams); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + return E_OK; + +} + +t_Error FmPcdCcModifyKey(t_Handle h_FmPcd, t_Handle h_FmPcdCcNode, uint8_t keyIndex, uint8_t keySize, uint8_t *p_Key, uint8_t *p_Mask, t_List *h_OldLst, t_List *h_NewLst,t_Handle *h_AdditionalParams) +{ + t_FmPcdCcNode *p_FmPcdCcNode = (t_FmPcdCcNode *)h_FmPcdCcNode; + t_Error err = E_OK; + t_FmPcdModifyCcKeyAdditionalParams *p_ModifyKeyParams; + + if(keyIndex >= p_FmPcdCcNode->numOfKeys) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("keyIndex > previousely cleared last index + 1")); + + if((p_FmPcdCcNode->numOfKeys + 1) > FM_PCD_MAX_NUM_OF_CC_NODES) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("numOfKeys with new key can not be larger than 255")); + + if(keySize != p_FmPcdCcNode->userSizeOfExtraction) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("size for ModifyKey has to be the same as defined in SetNode")); + + if(p_FmPcdCcNode->h_FmPcd != h_FmPcd) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("handler to FmPcd is diferent from one which was assigned to the node in the Init time")); + + err = ModifyKeyCommonPart1(p_FmPcdCcNode, keyIndex, h_AdditionalParams, e_MODIFY_STATE_CHANGE, TRUE, FALSE); + if(err) + RETURN_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); + + p_ModifyKeyParams = (t_FmPcdModifyCcKeyAdditionalParams *)*h_AdditionalParams; + + err = BuildNewNodeModifyKey (p_FmPcdCcNode, keyIndex, p_Key, p_Mask, p_ModifyKeyParams); + if(err) + { + XX_Free(p_ModifyKeyParams); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + err = UpdatePtrWhichPointOnCrntMdfNode(p_FmPcdCcNode, p_ModifyKeyParams, h_OldLst, h_NewLst); + if(err) + { + ReleaseNewNodeCommonPart(p_ModifyKeyParams); + XX_Free(p_ModifyKeyParams); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + return E_OK; +} + + +t_Error FmPcdCcModiyNextEngineParamNode(t_Handle h_FmPcd,t_Handle h_FmPcdCcNode, uint8_t keyIndex,t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams,t_List *h_OldPointer, t_List *h_NewPointer,t_Handle *h_AdditionalParams) +{ + t_FmPcdCcNode *p_FmPcdCcNode = (t_FmPcdCcNode *)h_FmPcdCcNode; + t_Error err = E_OK; + t_FmPcdModifyCcKeyAdditionalParams *p_ModifyKeyParams; + + SANITY_CHECK_RETURN_ERROR(h_FmPcd,E_INVALID_VALUE); + SANITY_CHECK_RETURN_ERROR(p_FmPcdCcNode,E_INVALID_HANDLE); + + if(keyIndex >= p_FmPcdCcNode->numOfKeys) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("keyIndex > previousely cleared last index + 1")); + + if((p_FmPcdCcNode->numOfKeys + 1) > FM_PCD_MAX_NUM_OF_CC_NODES) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("numOfKeys with new key can not be larger than 255")); + + err = ModifyKeyCommonPart1(p_FmPcdCcNode, keyIndex, h_AdditionalParams, e_MODIFY_STATE_CHANGE, FALSE, FALSE); + if(err) + RETURN_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); + + p_ModifyKeyParams = (t_FmPcdModifyCcKeyAdditionalParams *)*h_AdditionalParams; + + err = BuildNewNodeModifyNextEngine (h_FmPcd, p_FmPcdCcNode, keyIndex,p_FmPcdCcNextEngineParams, h_OldPointer, h_NewPointer, p_ModifyKeyParams); + if(err) + { + XX_Free(p_ModifyKeyParams); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + return E_OK; +} + +t_Error FmPcdCcModifyMissNextEngineParamNode(t_Handle h_FmPcd,t_Handle h_FmPcdCcNode, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams,t_List *h_OldPointer, t_List *h_NewPointer,t_Handle *h_AdditionalParams) +{ + t_FmPcdCcNode *p_FmPcdCcNode = (t_FmPcdCcNode *)h_FmPcdCcNode; + t_Error err = E_OK; + uint16_t keyIndex; + t_FmPcdModifyCcKeyAdditionalParams *p_ModifyKeyParams; + + SANITY_CHECK_RETURN_ERROR(p_FmPcdCcNode,E_INVALID_VALUE); + + keyIndex = p_FmPcdCcNode->numOfKeys; + + err = ModifyKeyCommonPart1(p_FmPcdCcNode, keyIndex, h_AdditionalParams, e_MODIFY_STATE_CHANGE, TRUE, FALSE); + if(err) + RETURN_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); + + p_ModifyKeyParams = (t_FmPcdModifyCcKeyAdditionalParams *)*h_AdditionalParams; + + err = BuildNewNodeModifyNextEngine (h_FmPcd, p_FmPcdCcNode, keyIndex,p_FmPcdCcNextEngineParams, h_OldPointer, h_NewPointer, p_ModifyKeyParams); + if(err) + { + XX_Free(p_ModifyKeyParams); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + return E_OK; +} + +t_Error FmPcdCcAddKey(t_Handle h_FmPcd, t_Handle h_FmPcdCcNode, uint8_t keyIndex, uint8_t keySize, t_FmPcdCcKeyParams *p_FmPcdCcKeyParams, t_List *h_OldLst, t_List *h_NewLst, t_Handle *h_AdditionalParams) +{ + t_FmPcdCcNode *p_FmPcdCcNode = (t_FmPcdCcNode *)h_FmPcdCcNode; + t_FmPcdModifyCcKeyAdditionalParams *p_ModifyKeyParams; + t_Error err = E_OK; + + if(keyIndex > p_FmPcdCcNode->numOfKeys) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("keyIndex > previousely cleared last index + 1")); + + if((p_FmPcdCcNode->numOfKeys + 1) > FM_PCD_MAX_NUM_OF_CC_NODES) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("numOfKeys with new key can not be larger than 255")); + + if(keySize != p_FmPcdCcNode->userSizeOfExtraction) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("keySize has to be defined as it was defined in initialization step.")); + + if(p_FmPcdCcNode->h_FmPcd != h_FmPcd) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("handler to FmPcd is diferent from one which was assigned to the node in the Init time")); + + err = ModifyKeyCommonPart1(p_FmPcdCcNode, keyIndex, h_AdditionalParams, e_MODIFY_STATE_ADD, TRUE, FALSE); + if(err) + RETURN_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); + + p_ModifyKeyParams = (t_FmPcdModifyCcKeyAdditionalParams *)*h_AdditionalParams; + err = BuildNewNodeAddOrMdfyKeyAndNextEngine (h_FmPcd, p_FmPcdCcNode, keyIndex, p_FmPcdCcKeyParams, p_ModifyKeyParams, TRUE); + if(err) + { + XX_Free(p_ModifyKeyParams); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + err = UpdatePtrWhichPointOnCrntMdfNode(p_FmPcdCcNode, p_ModifyKeyParams, h_OldLst, h_NewLst); + if(err) + { + ReleaseNewNodeCommonPart(p_ModifyKeyParams); + XX_Free(p_ModifyKeyParams); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + return E_OK; +} + +t_Error FmPcdCcModifyKeyAndNextEngine(t_Handle h_FmPcd, t_Handle h_FmPcdCcNode, uint8_t keyIndex, uint8_t keySize, t_FmPcdCcKeyParams *p_FmPcdCcKeyParams, t_List *h_OldLst, t_List *h_NewLst, t_Handle *h_AdditionalParams) +{ + t_FmPcdCcNode *p_FmPcdCcNode = (t_FmPcdCcNode *)h_FmPcdCcNode; + t_FmPcdModifyCcKeyAdditionalParams *p_ModifyKeyParams; + t_Error err = E_OK; + + if(keyIndex > p_FmPcdCcNode->numOfKeys) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("keyIndex > previousely cleared last index + 1")); + + if((p_FmPcdCcNode->numOfKeys + 1) > FM_PCD_MAX_NUM_OF_CC_NODES) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("numOfKeys with new key can not be larger than 255")); + + if(keySize != p_FmPcdCcNode->userSizeOfExtraction) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("keySize has to be defined as it was defined in initialization step")); + + if(p_FmPcdCcNode->h_FmPcd != h_FmPcd) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("handler to FmPcd is diferent from one which was assigned to the node in the Init time")); + + err = ModifyKeyCommonPart1(p_FmPcdCcNode, keyIndex, h_AdditionalParams, e_MODIFY_STATE_CHANGE, TRUE, FALSE); + if(err) + RETURN_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); + + p_ModifyKeyParams = (t_FmPcdModifyCcKeyAdditionalParams *)*h_AdditionalParams; + + err = BuildNewNodeAddOrMdfyKeyAndNextEngine (h_FmPcd, p_FmPcdCcNode, keyIndex, p_FmPcdCcKeyParams, p_ModifyKeyParams, FALSE); + if(err) + { + ReleaseNewNodeCommonPart(p_ModifyKeyParams); + XX_Free(p_ModifyKeyParams); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + err = UpdatePtrWhichPointOnCrntMdfNode(p_FmPcdCcNode, p_ModifyKeyParams, h_OldLst, h_NewLst); + if(err) + { + ReleaseNewNodeCommonPart(p_ModifyKeyParams); + XX_Free(p_ModifyKeyParams); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + return E_OK; +} + +t_Error FmPcdCcReleaseModifiedDataStructure(t_Handle h_FmPcd, t_List *h_FmPcdOldPointersLst, t_List *h_FmPcdNewPointersLst, uint16_t numOfGoodChanges, t_Handle *h_Params) +{ + t_FmPcdModifyCcKeyAdditionalParams *p_CcNewModifyAdditionalParams = (t_FmPcdModifyCcKeyAdditionalParams *)*h_Params; + t_List *p_Pos; + t_Error err = E_OK; + t_CcNodeInformation ccNodeInfo, *p_CcNodeInformation; + t_Handle h_Muram; + t_FmPcdCcNode *p_FmPcdCcNextNode; + t_List *p_UpdateLst; + + UNUSED(numOfGoodChanges); + + SANITY_CHECK_RETURN_ERROR(h_FmPcd,E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_CcNewModifyAdditionalParams->h_CurrentNode,E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(h_FmPcdOldPointersLst,E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(h_FmPcdNewPointersLst,E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR((numOfGoodChanges == LIST_NumOfObjs(h_FmPcdOldPointersLst)),E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR((numOfGoodChanges == LIST_NumOfObjs(h_FmPcdNewPointersLst)),E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR((LIST_NumOfObjs(h_FmPcdOldPointersLst) == LIST_NumOfObjs(h_FmPcdNewPointersLst)),E_INVALID_STATE); + + /*we don't update subtree of the new node with new tree because it was done in the previose stage*/ + if(p_CcNewModifyAdditionalParams->h_NodeForAdd) + { + p_FmPcdCcNextNode = (t_FmPcdCcNode*)p_CcNewModifyAdditionalParams->h_NodeForAdd; + if(!p_CcNewModifyAdditionalParams->tree) + p_UpdateLst = &p_FmPcdCcNextNode->ccPrevNodesLst; + else + p_UpdateLst = &p_FmPcdCcNextNode->ccTreeIdLst; + p_CcNodeInformation = FindNodeInfoInReleventLst(p_UpdateLst, p_CcNewModifyAdditionalParams->h_CurrentNode); + if(p_CcNodeInformation) + p_CcNodeInformation->index++; + else + { + memset(&ccNodeInfo, 0, sizeof(t_CcNodeInformation)); + ccNodeInfo.h_CcNode = (t_Handle)p_CcNewModifyAdditionalParams->h_CurrentNode; + ccNodeInfo.index = 1; + EnqueueNodeInfoToRelevantLst(p_UpdateLst, &ccNodeInfo); + } + } + + if(p_CcNewModifyAdditionalParams->h_NodeForRmv) + { + + p_FmPcdCcNextNode = (t_FmPcdCcNode*)p_CcNewModifyAdditionalParams->h_NodeForRmv; + if(!p_CcNewModifyAdditionalParams->tree) + { + p_UpdateLst = &p_FmPcdCcNextNode->ccPrevNodesLst; + LIST_FOR_EACH(p_Pos, &p_FmPcdCcNextNode->ccTreesLst) + { + p_CcNodeInformation = CC_NODE_F_OBJECT(p_Pos); + ASSERT_COND(p_CcNodeInformation->h_CcNode); + err = FmPcdCcSetRequiredAction(h_FmPcd, + UPDATE_CC_WITH_DELETE_TREE, + &((t_FmPcdCcNode *)(p_CcNewModifyAdditionalParams->h_CurrentNode))->nextEngineAndRequiredAction[p_CcNewModifyAdditionalParams->keyIndex], + PTR_MOVE(((t_FmPcdCcNode *)(p_CcNewModifyAdditionalParams->h_CurrentNode))->h_AdTable, p_CcNewModifyAdditionalParams->keyIndex*FM_PCD_CC_AD_ENTRY_SIZE), + 1, + p_CcNodeInformation->h_CcNode); + } + } + else + { + p_UpdateLst = &p_FmPcdCcNextNode->ccTreeIdLst; + err = FmPcdCcSetRequiredAction(h_FmPcd, + UPDATE_CC_WITH_DELETE_TREE, + &((t_FmPcdCcTree *)(p_CcNewModifyAdditionalParams->h_CurrentNode))->nextEngineAndRequiredAction[p_CcNewModifyAdditionalParams->keyIndex], + UINT_TO_PTR(((t_FmPcdCcTree *)(p_CcNewModifyAdditionalParams->h_CurrentNode))->ccTreeBaseAddr + p_CcNewModifyAdditionalParams->keyIndex*FM_PCD_CC_AD_ENTRY_SIZE), + 1, + p_CcNewModifyAdditionalParams->h_CurrentNode); + } + if(err) + return err; + + /*we remove from the subtree of the removed node tree because it wasn't done in the previose stage*/ + /*update ccPrevNodesLst or ccTreeIdLst of the removed node*/ + /*update of the nodeOwner*/ + p_CcNodeInformation = FindNodeInfoInReleventLst(p_UpdateLst, p_CcNewModifyAdditionalParams->h_CurrentNode); + ASSERT_COND(p_CcNodeInformation); + ASSERT_COND(p_CcNodeInformation->index); + p_CcNodeInformation->index--; + if(p_CcNodeInformation->index == 0) + DequeueNodeInfoFromRelevantLst(p_UpdateLst,p_CcNewModifyAdditionalParams->h_CurrentNode); + ASSERT_COND(LIST_NumOfObjs(&p_FmPcdCcNextNode->ccTreesLst) == 1); + UpdateNodeOwner(p_FmPcdCcNextNode, FALSE); + } + +#ifdef FM_PCD_CC_MANIP + if(p_CcNewModifyAdditionalParams->h_ManipForRmv) + FmPcdManipUpdateOwner(p_CcNewModifyAdditionalParams->h_ManipForRmv, FALSE); +#endif /* FM_PCD_CC_MANIP */ + + h_Muram = FmPcdGetMuramHandle(h_FmPcd); + ASSERT_COND(h_Muram); + + /*we release new AD which was allocated and updated for copy from to actual AD*/ + LIST_FOR_EACH(p_Pos, h_FmPcdNewPointersLst) + { + p_CcNodeInformation = CC_NODE_F_OBJECT(p_Pos); + ASSERT_COND(p_CcNodeInformation->h_CcNode); + FM_MURAM_FreeMem(h_Muram, p_CcNodeInformation->h_CcNode); + + } + + /*free Old data structure if it has to be freed - new data structure was allocated*/ + if(p_CcNewModifyAdditionalParams->p_AdTableOld) + FM_MURAM_FreeMem(h_Muram,p_CcNewModifyAdditionalParams->p_AdTableOld); + if(p_CcNewModifyAdditionalParams->p_KeysMatchTableOld) + FM_MURAM_FreeMem(h_Muram,p_CcNewModifyAdditionalParams->p_KeysMatchTableOld); + + /*update current modified node with changed fields if it's required*/ + if(!p_CcNewModifyAdditionalParams->tree) + { + if(p_CcNewModifyAdditionalParams->p_AdTableNew) + ((t_FmPcdCcNode *)(p_CcNewModifyAdditionalParams->h_CurrentNode))->h_AdTable = p_CcNewModifyAdditionalParams->p_AdTableNew; + if(p_CcNewModifyAdditionalParams->numOfKeys) + ((t_FmPcdCcNode *)(p_CcNewModifyAdditionalParams->h_CurrentNode))->numOfKeys = p_CcNewModifyAdditionalParams->numOfKeys; + if(p_CcNewModifyAdditionalParams->p_KeysMatchTableNew) + ((t_FmPcdCcNode *)(p_CcNewModifyAdditionalParams->h_CurrentNode))->h_KeysMatchTable = p_CcNewModifyAdditionalParams->p_KeysMatchTableNew; + memcpy(((t_FmPcdCcNode *)(p_CcNewModifyAdditionalParams->h_CurrentNode))->nextEngineAndRequiredAction, &p_CcNewModifyAdditionalParams->nextEngineAndRequiredAction, sizeof(t_FmPcdCcNextEngineAndRequiredActionParams) * (FM_PCD_MAX_NUM_OF_KEYS)); + } + else + memcpy(&((t_FmPcdCcTree *)(p_CcNewModifyAdditionalParams->h_CurrentNode))->nextEngineAndRequiredAction, &p_CcNewModifyAdditionalParams->nextEngineAndRequiredAction, sizeof(t_FmPcdCcNextEngineAndRequiredActionParams) * (((t_FmPcdCcTree *)(p_CcNewModifyAdditionalParams->h_CurrentNode))->numOfEntries)); + + ReleaseLst(h_FmPcdOldPointersLst); + ReleaseLst(h_FmPcdNewPointersLst); + XX_Free(p_CcNewModifyAdditionalParams); + + return E_OK; +} + +uint32_t FmPcdCcGetNodeAddrOffsetFromNodeInfo(t_Handle h_FmPcd, t_Handle h_Pointer) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + t_CcNodeInformation *p_CcNodeInfo; + + SANITY_CHECK_RETURN_VALUE(h_FmPcd,E_INVALID_HANDLE, (uint32_t)ILLEGAL_BASE); + + p_CcNodeInfo = CC_NODE_F_OBJECT(h_Pointer); + return (uint32_t)(XX_VirtToPhys(p_CcNodeInfo->h_CcNode) - p_FmPcd->physicalMuramBase); +} + +t_Error FmPcdCcGetGrpParams(t_Handle h_FmPcdCcTree, uint8_t grpId, uint32_t *p_GrpBits, uint8_t *p_GrpBase) +{ + t_FmPcdCcTree *p_FmPcdCcTree = (t_FmPcdCcTree *) h_FmPcdCcTree; + + SANITY_CHECK_RETURN_ERROR(h_FmPcdCcTree, E_INVALID_HANDLE); + + if(grpId >= p_FmPcdCcTree->numOfGrps) + RETURN_ERROR(MAJOR, E_INVALID_HANDLE, ("grpId you asked > numOfGroup of relevant tree")); + *p_GrpBits = p_FmPcdCcTree->fmPcdGroupParam[grpId].totalBitsMask; + *p_GrpBase = p_FmPcdCcTree->fmPcdGroupParam[grpId].baseGroupEntry; + return E_OK; +} + +t_Error FmPcdCcBindTree(t_Handle h_FmPcd, t_Handle h_FmPcdCcTree, uint32_t *p_Offset, t_Handle h_FmPort) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + t_FmPcdCcTree *p_FmPcdCcTree = (t_FmPcdCcTree *)h_FmPcdCcTree; + t_Error err = E_OK; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd,E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcdCcTree,E_INVALID_STATE); + + FmPcdCcUpdateTreeOwner(p_FmPcdCcTree, TRUE); + + *p_Offset = (uint32_t)(XX_VirtToPhys(UINT_TO_PTR(p_FmPcdCcTree->ccTreeBaseAddr)) - + p_FmPcd->physicalMuramBase); + + err = CcUpdateParams(h_FmPcd, h_FmPort, h_FmPcdCcTree, TRUE); + + return err; +} + +t_Error FmPcdCcUnbindTree(t_Handle h_FmPcd, t_Handle h_FmPcdCcTree) +{ + t_FmPcdCcTree *p_FmPcdCcTree = (t_FmPcdCcTree *)h_FmPcdCcTree; + + UNUSED(h_FmPcd); + + SANITY_CHECK_RETURN_ERROR(p_FmPcdCcTree,E_INVALID_HANDLE); + + FmPcdCcUpdateTreeOwner(p_FmPcdCcTree, FALSE); + + return E_OK; +} + +t_Error FmPcdCcTreeTryLock(t_Handle h_FmPcdCcTree) +{ + if (TRY_LOCK(NULL, &((t_FmPcdCcTree *)h_FmPcdCcTree)->lock)) + return E_OK; + return ERROR_CODE(E_BUSY); +} + +t_Error FmPcdCcNodeTreeTryLock(t_Handle h_FmPcd,t_Handle h_FmPcdCcNode, t_List *p_List) +{ + t_FmPcdCcNode *p_FmPcdCcNode = (t_FmPcdCcNode *)h_FmPcdCcNode; + t_List *p_Pos; + t_CcNodeInformation *p_CcNodeInfo, nodeInfo; + t_Error err = E_OK; + + UNUSED(h_FmPcd); + + if(LIST_IsEmpty(&p_FmPcdCcNode->ccTreesLst)) + RETURN_ERROR(MAJOR, E_NOT_AVAILABLE, ("asked for more nodes in CC than MAX")) ; + LIST_FOR_EACH(p_Pos, &p_FmPcdCcNode->ccTreesLst) + { + p_CcNodeInfo = CC_NODE_F_OBJECT(p_Pos); + ASSERT_COND(p_CcNodeInfo->h_CcNode); + err = FmPcdCcTreeTryLock(p_CcNodeInfo->h_CcNode); + if(err == E_OK) + { + memset(&nodeInfo, 0, sizeof(t_CcNodeInformation)); + nodeInfo.h_CcNode = p_CcNodeInfo->h_CcNode; + EnqueueNodeInfoToRelevantLst(p_List, &nodeInfo); + } + else + FmPcdCcNodeTreeReleaseLock(p_List); + } + + return err; +} + +t_Handle FM_PCD_CcBuildTree(t_Handle h_FmPcd, t_FmPcdCcTreeParams *p_PcdGroupsParam) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + t_Error err = E_OK; + int i = 0, j = 0, k = 0; + t_FmPcdCcTree *p_FmPcdCcTree; + uint8_t numOfEntries; + t_Handle p_CcTreeTmp; + t_FmPcdCcGrpParams *p_FmPcdCcGroupParams; + t_FmPcdCcNextEngineAndRequiredActionParams params[16]; + t_NetEnvParams netEnvParams; + uint8_t lastOne = 0; + uint32_t requiredAction = 0; + t_FmPcdCcNode *p_FmPcdCcNextNode; + t_CcNodeInformation ccNodeInfo, *p_CcInformation; + + SANITY_CHECK_RETURN_VALUE(h_FmPcd,E_INVALID_HANDLE, NULL); + SANITY_CHECK_RETURN_VALUE(p_PcdGroupsParam,E_INVALID_HANDLE, NULL); + + if (p_PcdGroupsParam->numOfGrps > FM_PCD_MAX_NUM_OF_CC_GROUPS) + { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("numOfGrps should not exceed %d", FM_PCD_MAX_NUM_OF_CC_GROUPS)); + return NULL; + } + + p_FmPcdCcTree = (t_FmPcdCcTree*)XX_Malloc(sizeof(t_FmPcdCcTree)); + if(!p_FmPcdCcTree) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("PCD tree structure")); + return NULL; + } + memset(p_FmPcdCcTree, 0, sizeof(t_FmPcdCcTree)) ; + memset(params, 0, 16 * sizeof(t_FmPcdCcNextEngineParams)); + + INIT_LIST(&p_FmPcdCcTree->fmPortsLst); + + numOfEntries = 0; + p_FmPcdCcTree->netEnvId = (uint8_t)(PTR_TO_UINT(p_PcdGroupsParam->h_NetEnv)-1); + for(i = 0; i < p_PcdGroupsParam->numOfGrps; i++) + { + p_FmPcdCcGroupParams = &p_PcdGroupsParam->ccGrpParams[i]; + + if (p_FmPcdCcGroupParams->numOfDistinctionUnits > FM_PCD_MAX_NUM_OF_CC_UNITS) + { + DeleteTree(p_FmPcdCcTree,p_FmPcd); + REPORT_ERROR(MAJOR, E_INVALID_VALUE, + ("numOfDistinctionUnits (group %d) should not exceed %d", i, FM_PCD_MAX_NUM_OF_CC_UNITS)); + return NULL; + } + + p_FmPcdCcTree->fmPcdGroupParam[i].baseGroupEntry = numOfEntries; + p_FmPcdCcTree->fmPcdGroupParam[i].numOfEntriesInGroup =(uint8_t)( 0x01 << p_FmPcdCcGroupParams->numOfDistinctionUnits); + numOfEntries += p_FmPcdCcTree->fmPcdGroupParam[i].numOfEntriesInGroup; + if(numOfEntries > 16) + { + DeleteTree(p_FmPcdCcTree,p_FmPcd); + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("numOfEntries can not be larger than 16")); + return NULL; + } + if(lastOne) + { + if(p_FmPcdCcTree->fmPcdGroupParam[i].numOfEntriesInGroup > lastOne) + { + DeleteTree(p_FmPcdCcTree,p_FmPcd); + REPORT_ERROR(MAJOR, E_CONFLICT, ("numOfEntries per group must be set in descending order")); + return NULL; + } + } + + lastOne = p_FmPcdCcTree->fmPcdGroupParam[i].numOfEntriesInGroup; + + netEnvParams.netEnvId = p_FmPcdCcTree->netEnvId; + netEnvParams.numOfDistinctionUnits = p_FmPcdCcGroupParams->numOfDistinctionUnits; + memcpy(netEnvParams.unitIds, &p_FmPcdCcGroupParams->unitIds, (sizeof(uint8_t)) * p_FmPcdCcGroupParams->numOfDistinctionUnits); + err = PcdGetUnitsVector(p_FmPcd, &netEnvParams); + if(err) + { + DeleteTree(p_FmPcdCcTree,p_FmPcd); + REPORT_ERROR(MAJOR, err, NO_MSG); + return NULL; + } + + p_FmPcdCcTree->fmPcdGroupParam[i].totalBitsMask = netEnvParams.vector; + for(j = 0; j < p_FmPcdCcTree->fmPcdGroupParam[i].numOfEntriesInGroup; j++) + { + err = ValidateNextEngineParams(h_FmPcd,&p_FmPcdCcGroupParams->nextEnginePerEntriesInGrp[j]); + if(err) + { + DeleteTree(p_FmPcdCcTree,p_FmPcd); + REPORT_ERROR(MAJOR, err, (NO_MSG)); + return NULL; + } + +#ifdef FM_PCD_CC_MANIP + if(p_FmPcdCcGroupParams->nextEnginePerEntriesInGrp[j].h_Manip) + { + err = FmPcdManipCheckParamsForCcNextEgine(&p_FmPcdCcGroupParams->nextEnginePerEntriesInGrp[j], &requiredAction); + if(err) + { + DeleteTree(p_FmPcdCcTree,p_FmPcd); + REPORT_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); + return NULL; + } + } +#endif /* FM_PCD_CC_MANIP */ + + memcpy(¶ms[k].nextEngineParams, &p_FmPcdCcGroupParams->nextEnginePerEntriesInGrp[j], sizeof(t_FmPcdCcNextEngineParams)); + requiredAction |= UPDATE_CC_WITH_TREE; + params[k].requiredAction = requiredAction; + k++; + } + } + + p_FmPcdCcTree->numOfEntries = (uint8_t)k; + p_FmPcdCcTree->numOfGrps = p_PcdGroupsParam->numOfGrps; + p_FmPcdCcTree->ccTreeBaseAddr = + PTR_TO_UINT(FM_MURAM_AllocMem(FmPcdGetMuramHandle(h_FmPcd), + (uint32_t)( k * FM_PCD_CC_AD_ENTRY_SIZE), + FM_PCD_CC_AD_TABLE_ALIGN)); + + if(!p_FmPcdCcTree->ccTreeBaseAddr) + { + DeleteTree(p_FmPcdCcTree,p_FmPcd); + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("No memory")); + return NULL; + } + IOMemSet32(UINT_TO_PTR(p_FmPcdCcTree->ccTreeBaseAddr), 0, (uint32_t)(k * FM_PCD_CC_AD_ENTRY_SIZE)); + + p_CcTreeTmp = UINT_TO_PTR(p_FmPcdCcTree->ccTreeBaseAddr); + + j = 0; + for(i = 0; i < numOfEntries; i++) + { + NextStepAd(p_CcTreeTmp,¶ms[i].nextEngineParams,p_FmPcd); + p_CcTreeTmp = PTR_MOVE(p_CcTreeTmp, FM_PCD_CC_AD_ENTRY_SIZE); + memcpy(&p_FmPcdCcTree->nextEngineAndRequiredAction[i], ¶ms[i], sizeof(t_FmPcdCcNextEngineAndRequiredActionParams)); + if(p_FmPcdCcTree->nextEngineAndRequiredAction[i].nextEngineParams.nextEngine== e_FM_PCD_CC) + { + p_FmPcdCcNextNode = (t_FmPcdCcNode*)p_FmPcdCcTree->nextEngineAndRequiredAction[i].nextEngineParams.params.ccParams.h_CcNode; + if(!IsNodeInModifiedState((t_Handle)p_FmPcdCcNextNode)) + { + memset(&ccNodeInfo, 0, sizeof(t_CcNodeInformation)); + ccNodeInfo.h_CcNode = (t_Handle)p_FmPcdCcTree; + ccNodeInfo.index = 1; + EnqueueNodeInfoToRelevantLst(&p_FmPcdCcNextNode->ccTreeIdLst, &ccNodeInfo); + UpdateNodeWithModifiedState((t_Handle)p_FmPcdCcNextNode, TRUE); + } + else + { + p_CcInformation = FindNodeInfoInReleventLst(&p_FmPcdCcNextNode->ccTreeIdLst,(t_Handle)p_FmPcdCcTree); + ASSERT_COND(p_CcInformation); + p_CcInformation->index++; + } + } + } + + FmPcdIncNetEnvOwners(h_FmPcd, p_FmPcdCcTree->netEnvId); + p_CcTreeTmp = UINT_TO_PTR(p_FmPcdCcTree->ccTreeBaseAddr); + + for(i = 0; i < p_FmPcdCcTree->numOfEntries ; i++) + { + if(p_FmPcdCcTree->nextEngineAndRequiredAction[i].nextEngineParams.nextEngine == e_FM_PCD_CC) + { + p_FmPcdCcNextNode = (t_FmPcdCcNode*)p_FmPcdCcTree->nextEngineAndRequiredAction[i].nextEngineParams.params.ccParams.h_CcNode; + + if(IsNodeInModifiedState((t_Handle)p_FmPcdCcNextNode)) + UpdateNodeWithModifiedState((t_Handle)p_FmPcdCcNextNode, FALSE); + } + } + + for(i = 0; i < numOfEntries; i++) + { + if(p_FmPcdCcTree->nextEngineAndRequiredAction[i].requiredAction) + { + err = FmPcdCcSetRequiredAction(h_FmPcd, p_FmPcdCcTree->nextEngineAndRequiredAction[i].requiredAction, &p_FmPcdCcTree->nextEngineAndRequiredAction[i], p_CcTreeTmp,1, p_FmPcdCcTree); + if(err) + { + DeleteTree(p_FmPcdCcTree,p_FmPcd); + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("No memory")); + return NULL; + } + p_CcTreeTmp = PTR_MOVE(p_CcTreeTmp, FM_PCD_CC_AD_ENTRY_SIZE); + } + } + + return p_FmPcdCcTree; +} + +t_Error FM_PCD_CcDeleteTree(t_Handle h_FmPcd, t_Handle h_CcTree) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + t_FmPcdCcTree *p_CcTree = (t_FmPcdCcTree *)h_CcTree; + int i= 0; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_CcTree,E_INVALID_STATE); + + FmPcdDecNetEnvOwners(h_FmPcd, p_CcTree->netEnvId); + + if(p_CcTree->owners) + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("the tree with this ID can not be removed because this tree is occupied, first - unbind this tree")); + + for(i = 0; i numOfEntries; i++) + { + if(p_CcTree->nextEngineAndRequiredAction[i].nextEngineParams.nextEngine == e_FM_PCD_CC) + UpdateNodeOwner(p_CcTree->nextEngineAndRequiredAction[i].nextEngineParams.params.ccParams.h_CcNode, FALSE); + } + +#ifdef FM_PCD_CC_MANIP + for(i = 0; i < p_CcTree->numOfEntries; i++) + { + if(p_CcTree->nextEngineAndRequiredAction[i].nextEngineParams.h_Manip) + FmPcdManipUpdateOwner(p_CcTree->nextEngineAndRequiredAction[i].nextEngineParams.h_Manip, FALSE); + } +#endif /* FM_PCD_CC_MANIP */ + + DeleteTree(p_CcTree, p_FmPcd); + return E_OK; +} + +t_Handle FM_PCD_CcSetNode(t_Handle h_FmPcd, t_FmPcdCcNodeParams *p_CcNodeParam) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *) h_FmPcd; + t_FmPcdCcNode *p_FmPcdCcNode, *p_FmPcdCcNextNode; + t_Error err = E_OK; + int tmp, size; + bool glblMask = FALSE; + t_FmPcdCcKeyParams *p_KeyParams; + t_Handle p_KeysMatchTblTmp; + t_Handle p_AdTableTmp; + bool fullField = FALSE; + ccPrivateInfo_t icCode = CC_PRIVATE_INFO_NONE; + bool isKeyTblAlloc, fromIc = FALSE; + t_CcNodeInformation ccNodeInfo, *p_CcInformation; + + SANITY_CHECK_RETURN_VALUE(h_FmPcd,E_INVALID_HANDLE,NULL); + + /* + if (!p_CcNodeParam->keysParams.keySize || + !p_CcNodeParam->keysParams.numOfKeys) + { + REPORT_ERROR(MAJOR, E_INVALID_STATE, ("At least one key of keySize > 0 must be defined.")); + return NULL; + } + */ + p_FmPcdCcNode = (t_FmPcdCcNode*)XX_Malloc(sizeof(t_FmPcdCcNode)); + if(!p_FmPcdCcNode) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("No memory")); + return NULL; + } + memset(p_FmPcdCcNode, 0, sizeof(t_FmPcdCcNode)); + + p_FmPcdCcNode->p_GlblMask = (t_Handle)XX_Malloc(CC_GLBL_MASK_SIZE * sizeof(uint8_t)); + memset(p_FmPcdCcNode->p_GlblMask, 0, CC_GLBL_MASK_SIZE * sizeof(uint8_t)); + + p_FmPcdCcNode->numOfKeys = p_CcNodeParam->keysParams.numOfKeys; + + p_FmPcdCcNode->h_FmPcd = h_FmPcd; + + INIT_LIST(&p_FmPcdCcNode->ccPrevNodesLst); + INIT_LIST(&p_FmPcdCcNode->ccTreeIdLst); + INIT_LIST(&p_FmPcdCcNode->ccTreesLst); + + if((p_CcNodeParam->extractCcParams.type == e_FM_PCD_EXTRACT_BY_HDR) && + ((p_CcNodeParam->extractCcParams.extractByHdr.hdr == HEADER_TYPE_IPv4) || + (p_CcNodeParam->extractCcParams.extractByHdr.hdr == HEADER_TYPE_IPv6)) && + (p_CcNodeParam->extractCcParams.extractByHdr.type == e_FM_PCD_EXTRACT_FULL_FIELD) && + ((p_CcNodeParam->extractCcParams.extractByHdr.extractByHdrType.fullField.ipv6 == NET_HEADER_FIELD_IPv6_HOP_LIMIT) || + (p_CcNodeParam->extractCcParams.extractByHdr.extractByHdrType.fullField.ipv4 == NET_HEADER_FIELD_IPv4_TTL))) + { + err = Ipv4TtlOrIpv6HopLimiCheckParams(h_FmPcd, p_CcNodeParam, p_FmPcdCcNode, &isKeyTblAlloc); + glblMask = FALSE; + + } + else if((p_CcNodeParam->extractCcParams.type == e_FM_PCD_EXTRACT_NON_HDR) && + ((p_CcNodeParam->extractCcParams.extractNonHdr.src == e_FM_PCD_EXTRACT_FROM_KEY) || + (p_CcNodeParam->extractCcParams.extractNonHdr.src == e_FM_PCD_EXTRACT_FROM_HASH) || + (p_CcNodeParam->extractCcParams.extractNonHdr.src == e_FM_PCD_EXTRACT_FROM_FLOW_ID))) + { + if((p_CcNodeParam->extractCcParams.extractNonHdr.src == e_FM_PCD_EXTRACT_FROM_FLOW_ID) && + (p_CcNodeParam->extractCcParams.extractNonHdr.offset != 0)) + { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("In the case of the extraction from e_FM_PCD_EXTRACT_FROM_FLOW_ID offset has to be 0")); + return NULL; + } + + icCode = IcDefineCode(p_CcNodeParam); + fromIc = TRUE; + if(icCode == CC_PRIVATE_INFO_NONE) + { + REPORT_ERROR(MAJOR, E_INVALID_STATE, ("user asked extraction from IC and field in internal context or action wasn't initialized in the right way")); + return NULL; + } + + if((icCode == CC_PRIVATE_INFO_IC_DEQ_FQID_INDEX_LOOKUP) || (icCode == CC_PRIVATE_INFO_IC_HASH_INDEX_LOOKUP)) + { + err = IcHashIndexedCheckParams(h_FmPcd, p_CcNodeParam, p_FmPcdCcNode, &isKeyTblAlloc); + + glblMask = TRUE; + } + else + { + err = CheckParams(h_FmPcd, p_CcNodeParam,p_FmPcdCcNode, &isKeyTblAlloc); + if(p_FmPcdCcNode->glblMaskSize) + glblMask = TRUE; + } + } + else + { + err = CheckParams(h_FmPcd, p_CcNodeParam,p_FmPcdCcNode, &isKeyTblAlloc); + if(p_FmPcdCcNode->glblMaskSize) + glblMask = TRUE; + } + + if(err) + { + DeleteNode(p_FmPcdCcNode); + REPORT_ERROR(MAJOR, err, NO_MSG); + return NULL; + } + + switch(p_CcNodeParam->extractCcParams.type) + { + case(e_FM_PCD_EXTRACT_BY_HDR): + switch(p_CcNodeParam->extractCcParams.extractByHdr.type) + { + case(e_FM_PCD_EXTRACT_FULL_FIELD): + p_FmPcdCcNode->parseCode = GetFullFieldParseCode(p_CcNodeParam->extractCcParams.extractByHdr.hdr, p_CcNodeParam->extractCcParams.extractByHdr.hdrIndex, + p_CcNodeParam->extractCcParams.extractByHdr.extractByHdrType.fullField); + GetSizeHeaderField(p_CcNodeParam->extractCcParams.extractByHdr.hdr, p_CcNodeParam->extractCcParams.extractByHdr.extractByHdrType.fullField, &p_FmPcdCcNode->sizeOfExtraction); + fullField = TRUE; + if((p_FmPcdCcNode->parseCode != CC_PC_FF_TCI1) && (p_FmPcdCcNode->parseCode != CC_PC_FF_TCI2) && + (p_FmPcdCcNode->parseCode != CC_PC_FF_MPLS1) && (p_FmPcdCcNode->parseCode != CC_PC_FF_MPLS1) && + (p_FmPcdCcNode->parseCode != CC_PC_FF_IPV4IPTOS_TC1) && (p_FmPcdCcNode->parseCode != CC_PC_FF_IPV4IPTOS_TC2) && + (p_FmPcdCcNode->parseCode != CC_PC_FF_IPTOS_IPV6TC1_IPV6FLOW1) && (p_FmPcdCcNode->parseCode != CC_PC_FF_IPTOS_IPV6TC2_IPV6FLOW2) && + glblMask) + { + glblMask = FALSE; + p_FmPcdCcNode->glblMaskSize = 4; + p_FmPcdCcNode->lclMask = TRUE; + } + break; + case(e_FM_PCD_EXTRACT_FROM_HDR): + p_FmPcdCcNode->sizeOfExtraction = p_CcNodeParam->extractCcParams.extractByHdr.extractByHdrType.fromHdr.size; + p_FmPcdCcNode->offset = p_CcNodeParam->extractCcParams.extractByHdr.extractByHdrType.fromHdr.offset; + p_FmPcdCcNode->parseCode = GetPrParseCode(p_CcNodeParam->extractCcParams.extractByHdr.hdr, p_CcNodeParam->extractCcParams.extractByHdr.hdrIndex, + p_FmPcdCcNode->offset,glblMask, &p_FmPcdCcNode->prsArrayOffset); + break; + case(e_FM_PCD_EXTRACT_FROM_FIELD): + p_FmPcdCcNode->offset = p_CcNodeParam->extractCcParams.extractByHdr.extractByHdrType.fromField.offset; + p_FmPcdCcNode->sizeOfExtraction = p_CcNodeParam->extractCcParams.extractByHdr.extractByHdrType.fromField.size; + p_FmPcdCcNode->parseCode = GetFieldParseCode(p_CcNodeParam->extractCcParams.extractByHdr.hdr, p_CcNodeParam->extractCcParams.extractByHdr.extractByHdrType.fromField.field, + p_FmPcdCcNode->offset,&p_FmPcdCcNode->prsArrayOffset, + p_CcNodeParam->extractCcParams.extractByHdr.hdrIndex); + break; + default: + DeleteNode(p_FmPcdCcNode); + REPORT_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + return NULL; + } + break; + case(e_FM_PCD_EXTRACT_NON_HDR): + /* get the field code for the generic extract */ + p_FmPcdCcNode->sizeOfExtraction = p_CcNodeParam->extractCcParams.extractNonHdr.size; + p_FmPcdCcNode->offset = p_CcNodeParam->extractCcParams.extractNonHdr.offset; + p_FmPcdCcNode->parseCode = GetGenParseCode(p_CcNodeParam->extractCcParams.extractNonHdr.src, p_FmPcdCcNode->offset, glblMask, &p_FmPcdCcNode->prsArrayOffset, fromIc,icCode); + + if(p_FmPcdCcNode->parseCode == CC_PC_GENERIC_IC_HASH_INDEXED) + { + if((p_FmPcdCcNode->offset + p_FmPcdCcNode->sizeOfExtraction) > 64) + { + DeleteNode(p_FmPcdCcNode); + REPORT_ERROR(MAJOR, E_INVALID_SELECTION,("when node of the type CC_PC_GENERIC_IC_HASH_INDEXED offset + size can not be bigger then size of HASH 64 bits (8 bytes)")); + return NULL; + } + } + if((p_FmPcdCcNode->parseCode == CC_PC_GENERIC_IC_GMASK) || (p_FmPcdCcNode->parseCode == CC_PC_GENERIC_IC_HASH_INDEXED)) + { + p_FmPcdCcNode->offset += p_FmPcdCcNode->prsArrayOffset; + p_FmPcdCcNode->prsArrayOffset = 0; + } + break; + + default: + DeleteNode(p_FmPcdCcNode); + REPORT_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + return NULL; + } + + if(p_FmPcdCcNode->parseCode == CC_PC_ILLEGAL) + { + DeleteNode(p_FmPcdCcNode); + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("illeagl extraction type")); + return NULL; + } + + if((p_FmPcdCcNode->sizeOfExtraction > FM_PCD_MAX_SIZE_OF_KEY) || !p_FmPcdCcNode->sizeOfExtraction) + { + DeleteNode(p_FmPcdCcNode); + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("sizeOfExatrction can not be greater than 56 and not 0")); + return NULL; + } + + if(p_CcNodeParam->keysParams.keySize != p_FmPcdCcNode->sizeOfExtraction) + { + DeleteNode(p_FmPcdCcNode); + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("keySize has to be equal to sizeOfExtraction")); + return NULL; + } + + + p_FmPcdCcNode->userSizeOfExtraction = p_FmPcdCcNode->sizeOfExtraction; + + if(!glblMask) + memset(p_FmPcdCcNode->p_GlblMask, 0xff, CC_GLBL_MASK_SIZE * sizeof(uint8_t)); + +#ifdef FM_PCD_CC_MANIP + err = CheckAndSetManipParamsWithCcNodeParams(p_FmPcdCcNode); + if(err != E_OK) + { + DeleteNode(p_FmPcdCcNode); + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("keySize has to be equal to sizeOfExtraction")); + return NULL; + } +#endif /* FM_PCD_CC_MANIP */ + + GetCcExtractKeySize(p_FmPcdCcNode->sizeOfExtraction, &p_FmPcdCcNode->ccKeySizeAccExtraction); + + if(p_FmPcdCcNode->lclMask) + size = 2 * p_FmPcdCcNode->ccKeySizeAccExtraction; + else + size = p_FmPcdCcNode->ccKeySizeAccExtraction; + + if(isKeyTblAlloc) + { + p_FmPcdCcNode->h_KeysMatchTable =(t_Handle)FM_MURAM_AllocMem(FmPcdGetMuramHandle(p_FmPcdCcNode->h_FmPcd), + (uint32_t)(size * sizeof(uint8_t) * (p_FmPcdCcNode->numOfKeys + 1)), + FM_PCD_CC_KEYS_MATCH_TABLE_ALIGN); + if(!p_FmPcdCcNode->h_KeysMatchTable) + { + DeleteNode(p_FmPcdCcNode); + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("No memory in MURAM for KEY MATCH table")); + return NULL; + } + IOMemSet32((uint8_t *)p_FmPcdCcNode->h_KeysMatchTable, 0, size * sizeof(uint8_t) * (p_FmPcdCcNode->numOfKeys + 1)); + } + + p_FmPcdCcNode->h_AdTable = (t_Handle)FM_MURAM_AllocMem(FmPcdGetMuramHandle(p_FmPcdCcNode->h_FmPcd), + (uint32_t)( (p_FmPcdCcNode->numOfKeys+1) * FM_PCD_CC_AD_ENTRY_SIZE), + FM_PCD_CC_AD_TABLE_ALIGN); + if(!p_FmPcdCcNode->h_AdTable) + { + DeleteNode(p_FmPcdCcNode); + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("No memory in MURAM for AD table ")); + return NULL; + } + IOMemSet32((uint8_t *)p_FmPcdCcNode->h_AdTable, 0, (uint32_t)((p_FmPcdCcNode->numOfKeys+1) * FM_PCD_CC_AD_ENTRY_SIZE)); + + p_KeysMatchTblTmp = p_FmPcdCcNode->h_KeysMatchTable; + p_AdTableTmp = p_FmPcdCcNode->h_AdTable; + for(tmp = 0 ; tmp < p_FmPcdCcNode->numOfKeys; tmp++) + { + p_KeyParams = &p_CcNodeParam->keysParams.keyParams[tmp]; + + if(p_KeysMatchTblTmp) + { + Mem2IOCpy32((void*)p_KeysMatchTblTmp, p_KeyParams->p_Key, p_FmPcdCcNode->sizeOfExtraction); + + if(p_FmPcdCcNode->lclMask && p_KeyParams->p_Mask) + Mem2IOCpy32(PTR_MOVE(p_KeysMatchTblTmp, p_FmPcdCcNode->ccKeySizeAccExtraction), p_KeyParams->p_Mask, p_FmPcdCcNode->sizeOfExtraction); + else if(p_FmPcdCcNode->lclMask) + IOMemSet32(PTR_MOVE(p_KeysMatchTblTmp, p_FmPcdCcNode->ccKeySizeAccExtraction), 0xff, p_FmPcdCcNode->sizeOfExtraction); + p_KeysMatchTblTmp = PTR_MOVE(p_KeysMatchTblTmp, size * sizeof(uint8_t)); + } + NextStepAd(p_AdTableTmp,&p_KeyParams->ccNextEngineParams, p_FmPcd); + + p_AdTableTmp = PTR_MOVE(p_AdTableTmp, FM_PCD_CC_AD_ENTRY_SIZE); + + } + NextStepAd(p_AdTableTmp,&p_CcNodeParam->keysParams.ccNextEngineParamsForMiss, p_FmPcd); + + if(fullField == TRUE) + p_FmPcdCcNode->sizeOfExtraction = 0; + + + for(tmp = 0; tmp < p_FmPcdCcNode->numOfKeys + 1; tmp++) + { + if(p_FmPcdCcNode->nextEngineAndRequiredAction[tmp].nextEngineParams.nextEngine == e_FM_PCD_CC) + { + p_FmPcdCcNextNode = (t_FmPcdCcNode*)p_FmPcdCcNode->nextEngineAndRequiredAction[tmp].nextEngineParams.params.ccParams.h_CcNode; + + if(!IsNodeInModifiedState((t_Handle)p_FmPcdCcNextNode)) + { + memset(&ccNodeInfo, 0, sizeof(t_CcNodeInformation)); + ccNodeInfo.h_CcNode = (t_Handle)p_FmPcdCcNode; + ccNodeInfo.index = 1; + EnqueueNodeInfoToRelevantLst(&p_FmPcdCcNextNode->ccPrevNodesLst, &ccNodeInfo); + UpdateNodeWithModifiedState((t_Handle)p_FmPcdCcNextNode, TRUE); + } + else + { + p_CcInformation = FindNodeInfoInReleventLst(&p_FmPcdCcNextNode->ccPrevNodesLst,(t_Handle)p_FmPcdCcNode); + ASSERT_COND(p_CcInformation); + p_CcInformation->index++; + } + } + + } + + for(tmp = 0; tmp < p_FmPcdCcNode->numOfKeys + 1; tmp++) + { + if(p_FmPcdCcNode->nextEngineAndRequiredAction[tmp].nextEngineParams.nextEngine == e_FM_PCD_CC) + { + p_FmPcdCcNextNode = (t_FmPcdCcNode*)p_FmPcdCcNode->nextEngineAndRequiredAction[tmp].nextEngineParams.params.ccParams.h_CcNode; + + if(IsNodeInModifiedState((t_Handle)p_FmPcdCcNextNode)) + UpdateNodeWithModifiedState((t_Handle)p_FmPcdCcNextNode, FALSE); + } + } + + p_AdTableTmp = p_FmPcdCcNode->h_AdTable; + for(tmp = 0; tmp < p_FmPcdCcNode->numOfKeys; tmp++) + { + if(p_FmPcdCcNode->nextEngineAndRequiredAction[tmp].requiredAction) + { + + err = FmPcdCcSetRequiredAction(h_FmPcd, p_FmPcdCcNode->nextEngineAndRequiredAction[tmp].requiredAction, &p_FmPcdCcNode->nextEngineAndRequiredAction[tmp], p_AdTableTmp,1, NULL); + if(err) + { + FM_PCD_CcDeleteNode(h_FmPcd, (t_Handle)p_FmPcdCcNode); + REPORT_ERROR(MAJOR, err, NO_MSG); + return NULL; + } + p_AdTableTmp = PTR_MOVE(p_AdTableTmp, FM_PCD_CC_AD_ENTRY_SIZE); + } + } + if(p_FmPcdCcNode->nextEngineAndRequiredAction[tmp].requiredAction) + { + err = FmPcdCcSetRequiredAction(h_FmPcd, p_FmPcdCcNode->nextEngineAndRequiredAction[tmp].requiredAction, &p_FmPcdCcNode->nextEngineAndRequiredAction[tmp], p_AdTableTmp,1, NULL); + if(err) + { + FM_PCD_CcDeleteNode(h_FmPcd, (t_Handle)p_FmPcdCcNode); + REPORT_ERROR(MAJOR, err, NO_MSG); + return NULL; + } + + } + + + return p_FmPcdCcNode; +} + +t_Error FM_PCD_CcDeleteNode(t_Handle h_FmPcd, t_Handle h_CcNode) +{ + t_FmPcdCcNode *p_CcNode = (t_FmPcdCcNode *)h_CcNode; + int i = 0; + + SANITY_CHECK_RETURN_ERROR(h_FmPcd, E_INVALID_HANDLE); + + UNUSED(h_FmPcd); + if(!p_CcNode) + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("the node with this ID is not initialized")); + + if(p_CcNode->owners) + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("the node with this ID can not be removed because this node is occupied, first - unbind this node")); + + for(i = 0; i < p_CcNode->numOfKeys; i++) + { + if(p_CcNode->nextEngineAndRequiredAction[i].nextEngineParams.nextEngine == e_FM_PCD_CC) + UpdateNodeOwner(p_CcNode->nextEngineAndRequiredAction[i].nextEngineParams.params.ccParams.h_CcNode, FALSE); + + } + if(p_CcNode->nextEngineAndRequiredAction[i].nextEngineParams.nextEngine == e_FM_PCD_CC) + UpdateNodeOwner(p_CcNode->nextEngineAndRequiredAction[i].nextEngineParams.params.ccParams.h_CcNode, FALSE); + +#ifdef FM_PCD_CC_MANIP + for(i = 0; i < p_CcNode->numOfKeys; i++) + { + if(p_CcNode->nextEngineAndRequiredAction[i].nextEngineParams.h_Manip) + FmPcdManipUpdateOwner(p_CcNode->nextEngineAndRequiredAction[i].nextEngineParams.h_Manip, FALSE); + } + if(p_CcNode->nextEngineAndRequiredAction[i].nextEngineParams.h_Manip) + FmPcdManipUpdateOwner(p_CcNode->nextEngineAndRequiredAction[i].nextEngineParams.h_Manip, FALSE); +#endif /* FM_PCD_CC_MANIP */ + + DeleteNode(p_CcNode); + + return E_OK; +} + +t_Error FM_PCD_CcNodeAddKey(t_Handle h_FmPcd, t_Handle h_CcNode, uint8_t keyIndex, uint8_t keySize, t_FmPcdCcKeyParams *p_KeyParams) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + + SANITY_CHECK_RETURN_ERROR(h_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->h_Hc, E_INVALID_HANDLE); + + return FmHcPcdCcAddKey(p_FmPcd->h_Hc, h_CcNode, keyIndex, keySize, p_KeyParams); +} + +t_Error FM_PCD_CcNodeRemoveKey(t_Handle h_FmPcd, t_Handle h_CcNode, uint8_t keyIndex) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + + SANITY_CHECK_RETURN_ERROR(h_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->h_Hc, E_INVALID_HANDLE); + + return FmHcPcdCcRemoveKey(p_FmPcd->h_Hc, h_CcNode, keyIndex); +} + +t_Error FM_PCD_CcNodeModifyKey(t_Handle h_FmPcd, t_Handle h_CcNode, uint8_t keyIndex, uint8_t keySize, uint8_t *p_Key, uint8_t *p_Mask) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + + SANITY_CHECK_RETURN_ERROR(h_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->h_Hc, E_INVALID_HANDLE); + + return FmHcPcdCcModifyKey(p_FmPcd->h_Hc, h_CcNode, keyIndex, keySize, p_Key, p_Mask); +} + +t_Error FM_PCD_CcNodeModifyNextEngine(t_Handle h_FmPcd, t_Handle h_CcNode, uint8_t keyIndex, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + + SANITY_CHECK_RETURN_ERROR(h_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->h_Hc, E_INVALID_HANDLE); + + return FmHcPcdCcModifyNodeNextEngine(p_FmPcd->h_Hc, h_CcNode, keyIndex, p_FmPcdCcNextEngineParams); +} + +t_Error FM_PCD_CcNodeModifyMissNextEngine(t_Handle h_FmPcd, t_Handle h_CcNode, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + + SANITY_CHECK_RETURN_ERROR(h_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->h_Hc, E_INVALID_HANDLE); + + return FmHcPcdCcModifyNodeMissNextEngine(p_FmPcd->h_Hc, h_CcNode, p_FmPcdCcNextEngineParams); +} + +t_Error FM_PCD_CcTreeModifyNextEngine(t_Handle h_FmPcd, t_Handle h_CcTree, uint8_t grpId, uint8_t index, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + + SANITY_CHECK_RETURN_ERROR(h_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->h_Hc, E_INVALID_HANDLE); + + return FmHcPcdCcModifyTreeNextEngine(p_FmPcd->h_Hc, h_CcTree, grpId, index, p_FmPcdCcNextEngineParams); +} + +t_Error FM_PCD_CcNodeModifyKeyAndNextEngine(t_Handle h_FmPcd, t_Handle h_CcNode, uint8_t keyIndex, uint8_t keySize, t_FmPcdCcKeyParams *p_KeyParams) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + + SANITY_CHECK_RETURN_ERROR(h_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->h_Hc, E_INVALID_HANDLE); + + return FmHcPcdCcModifyKeyAndNextEngine(p_FmPcd->h_Hc, h_CcNode, keyIndex, keySize, p_KeyParams); +} + +uint32_t FM_PCD_CcNodeGetKeyCounter(t_Handle h_FmPcd, t_Handle h_CcNode, uint8_t keyIndex) +{ + t_FmPcdCcNode *p_FmPcdCcNode = (t_FmPcdCcNode *)h_CcNode; + t_AdOfTypeResult *p_AdResult = NULL; + + SANITY_CHECK_RETURN_ERROR(h_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_VALUE(h_CcNode, E_INVALID_HANDLE, 0); +#ifdef DISABLE_SANITY_CHECKS +UNUSED(h_FmPcd); +#endif /* DISABLE_SANITY_CHECKS */ + + if (keyIndex >= p_FmPcdCcNode->numOfKeys) + { + REPORT_ERROR(MINOR, E_INVALID_STATE, + ("keyIndex > numOfKeys defined for this node")); + return 0; + } + + p_AdResult = PTR_MOVE(p_FmPcdCcNode->h_AdTable, keyIndex*FM_PCD_CC_AD_ENTRY_SIZE); + ASSERT_COND(p_AdResult); + + if (p_FmPcdCcNode->nextEngineAndRequiredAction[keyIndex].nextEngineParams.nextEngine == e_FM_PCD_CC) + { + REPORT_ERROR(MINOR, E_INVALID_STATE, + ("statistics updated only for entries where next engine not CC")); + return 0; + } + + if(((p_FmPcdCcNode->nextEngineAndRequiredAction[keyIndex].nextEngineParams.nextEngine == e_FM_PCD_DONE) && + !p_FmPcdCcNode->nextEngineAndRequiredAction[keyIndex].nextEngineParams.params.enqueueParams.statisticsEn) || + ((p_FmPcdCcNode->nextEngineAndRequiredAction[keyIndex].nextEngineParams.nextEngine == e_FM_PCD_KG) && + !p_FmPcdCcNode->nextEngineAndRequiredAction[keyIndex].nextEngineParams.params.kgParams.statisticsEn) || + ((p_FmPcdCcNode->nextEngineAndRequiredAction[keyIndex].nextEngineParams.nextEngine == e_FM_PCD_PLCR) && + !p_FmPcdCcNode->nextEngineAndRequiredAction[keyIndex].nextEngineParams.params.plcrParams.statisticsEn)) + { + REPORT_ERROR(MINOR, E_INVALID_STATE, + ("statistics wasn't enable")); + return 0; + } + + return GET_UINT32(p_AdResult->res); +} --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/Pcd/fm_cc.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/Peripherals/FM/Pcd/fm_cc.h @@ -0,0 +1,312 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 fm_cc.h + + @Description FM PCD CC ... +*//***************************************************************************/ +#ifndef __FM_CC_H +#define __FM_CC_H + +#include "std_ext.h" +#include "error_ext.h" +#include "list_ext.h" + +#include "fm_pcd.h" + + +/***********************************************************************/ +/* Coarse classification defines */ +/***********************************************************************/ + +#define CC_PC_FF_MACDST 0x00 +#define CC_PC_FF_MACSRC 0x01 +#define CC_PC_FF_ETYPE 0x02 + +#define CC_PC_FF_TCI1 0x03 +#define CC_PC_FF_TCI2 0x04 + +#define CC_PC_FF_MPLS1 0x06 +#define CC_PC_FF_MPLS_LAST 0x07 + +#define CC_PC_FF_IPV4DST1 0x08 +#define CC_PC_FF_IPV4DST2 0x16 +#define CC_PC_FF_IPV4IPTOS_TC1 0x09 +#define CC_PC_FF_IPV4IPTOS_TC2 0x17 +#define CC_PC_FF_IPV4PTYPE1 0x0A +#define CC_PC_FF_IPV4PTYPE2 0x18 +#define CC_PC_FF_IPV4SRC1 0x0b +#define CC_PC_FF_IPV4SRC2 0x19 +#define CC_PC_FF_IPV4SRC1_IPV4DST1 0x0c +#define CC_PC_FF_IPV4SRC2_IPV4DST2 0x1a +#define CC_PC_FF_IPV4TTL 0x29 + + +#define CC_PC_FF_IPTOS_IPV6TC1_IPV6FLOW1 0x0d /*TODO - CLASS - what is it? TOS*/ +#define CC_PC_FF_IPTOS_IPV6TC2_IPV6FLOW2 0x1b +#define CC_PC_FF_IPV6PTYPE1 0x0e +#define CC_PC_FF_IPV6PTYPE2 0x1c +#define CC_PC_FF_IPV6DST1 0x0f +#define CC_PC_FF_IPV6DST2 0x1d +#define CC_PC_FF_IPV6SRC1 0x10 +#define CC_PC_FF_IPV6SRC2 0x1e +#define CC_PC_FF_IPV6HOP_LIMIT 0x2a +#define CC_PC_FF_GREPTYPE 0x11 + +#define CC_PC_FF_MINENCAP_PTYPE 0x12 +#define CC_PC_FF_MINENCAP_IPDST 0x13 +#define CC_PC_FF_MINENCAP_IPSRC 0x14 +#define CC_PC_FF_MINENCAP_IPSRC_IPDST 0x15 + +#define CC_PC_FF_L4PSRC 0x1f +#define CC_PC_FF_L4PDST 0x20 +#define CC_PC_FF_L4PSRC_L4PDST 0x21 + +#define CC_PC_FF_PPPPID 0x05 + +#define CC_PC_PR_SHIM1 0x22 +#define CC_PC_PR_SHIM2 0x23 + +#define CC_PC_GENERIC_WITHOUT_MASK 0x27 +#define CC_PC_GENERIC_WITH_MASK 0x28 +#define CC_PC_GENERIC_IC_GMASK 0x2B +#define CC_PC_GENERIC_IC_HASH_INDEXED 0x2C + +#define CC_PR_OFFSET 0x25 +#define CC_PR_WITHOUT_OFFSET 0x26 + +#define CC_PC_PR_ETH_OFFSET 19 +#define CC_PC_PR_USER_DEFINED_SHIM1_OFFSET 16 +#define CC_PC_PR_USER_DEFINED_SHIM2_OFFSET 17 +#define CC_PC_PR_USER_LLC_SNAP_OFFSET 20 +#define CC_PC_PR_VLAN1_OFFSET 21 +#define CC_PC_PR_VLAN2_OFFSET 22 +#define CC_PC_PR_PPPOE_OFFSET 24 +#define CC_PC_PR_MPLS1_OFFSET 25 +#define CC_PC_PR_MPLS_LAST_OFFSET 26 +#define CC_PC_PR_IP1_OFFSET 27 +#define CC_PC_PR_IP_LAST_OFFSET 28 +#define CC_PC_PR_MINENC_OFFSET 28 +#define CC_PC_PR_L4_OFFSET 30 +#define CC_PC_PR_GRE_OFFSET 29 +#define CC_PC_PR_ETYPE_LAST_OFFSET 23 +#define CC_PC_PR_NEXT_HEADER_OFFSET 31 + +#define CC_PC_ILLEGAL 0xff +#define CC_SIZE_ILLEGAL 0 + +#define FM_PCD_CC_KEYS_MATCH_TABLE_ALIGN 16 +#define FM_PCD_CC_AD_TABLE_ALIGN 256 +#define FM_PCD_CC_AD_ENTRY_SIZE 16 +#define FM_PCD_CC_NUM_OF_KEYS 255 + +#define FM_PCD_AD_RESULT_CONTRL_FLOW_TYPE 0x00000000 +#define FM_PCD_AD_RESULT_DATA_FLOW_TYPE 0x80000000 +#define FM_PCD_AD_RESULT_PLCR_DIS 0x20000000 +#define FM_PCD_AD_RESULT_EXTENDED_MODE 0x80000000 +#define FM_PCD_AD_RESULT_NADEN 0x20000000 +#define FM_PCD_AD_RESULT_STATISTICS_EN 0x40000000 + + +#define FM_PCD_AD_CONT_LOOKUP_TYPE 0x40000000 +#define FM_PCD_AD_CONT_LOOKUP_LCL_MASK 0x00800000 + +#define FM_PCD_AD_TYPE_MASK 0xc0000000 +#define FM_PCD_AD_OPCODE_MASK 0x0000000f + +#define FM_PCD_AD_PROFILEID_FOR_CNTRL_SHIFT 16 + +#define GLBL_MASK_FOR_HASH_INDEXED 0xfff00000 +#define CC_GLBL_MASK_SIZE 4 + +typedef uint32_t ccPrivateInfo_t; /**< private info of CC: */ + +#define CC_PRIVATE_INFO_NONE 0 +#define CC_PRIVATE_INFO_IC_HASH_INDEX_LOOKUP 0x80000000 +#define CC_PRIVATE_INFO_IC_HASH_EXACT_MATCH 0x40000000 +#define CC_PRIVATE_INFO_IC_KEY_EXACT_MATCH 0x20000000 +#define CC_PRIVATE_INFO_IC_DEQ_FQID_INDEX_LOOKUP 0x10000000 + +/***********************************************************************/ +/* Memory map */ +/***********************************************************************/ +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(push,1) +#endif /* defined(__MWERKS__) && ... */ +#define MEM_MAP_START + +typedef _Packed struct { + volatile uint32_t fqid; + volatile uint32_t plcrProfile; + volatile uint32_t nia; + volatile uint32_t res; +} _PackedType t_AdOfTypeResult; + +typedef _Packed struct { + volatile uint32_t ccAdBase; + volatile uint32_t matchTblPtr; + volatile uint32_t pcAndOffsets; + volatile uint32_t gmask; +} _PackedType t_AdOfTypeContLookup; + +typedef _Packed union { + volatile t_AdOfTypeResult adResult; + volatile t_AdOfTypeContLookup adContLookup; +} _PackedType t_Ad; + +#define MEM_MAP_END +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(pop) +#endif /* defined(__MWERKS__) && ... */ + + +/***********************************************************************/ +/* Driver's internal structures */ +/***********************************************************************/ + +typedef enum e_ModifyState { + e_MODIFY_STATE_ADD = 0, + e_MODIFY_STATE_REMOVE, + e_MODIFY_STATE_CHANGE +} e_ModifyState; + +typedef struct { + t_FmPcdCcNextEngineParams nextEngineParams; + uint32_t requiredAction; + uint32_t shadowAction; +} t_FmPcdCcNextEngineAndRequiredActionParams; + +typedef struct { + t_Handle p_Ad; + e_FmPcdEngine fmPcdEngine; + bool adAllocated; + bool isTree; + + uint32_t myInfo; + t_List *h_CcNextNodesLst; + t_Handle h_AdditionalInfo; + t_Handle h_Node; +} t_FmPcdModifyCcAdditionalParams; + +typedef struct { + t_Handle p_AdTableNew; + t_Handle p_KeysMatchTableNew; + t_Handle p_AdTableOld; + t_Handle p_KeysMatchTableOld; + uint16_t numOfKeys; + t_Handle h_CurrentNode; + uint16_t keyIndex; + t_Handle h_NodeForAdd; + t_Handle h_NodeForRmv; + t_Handle h_ManipForRmv; + bool tree; + + t_FmPcdCcNextEngineAndRequiredActionParams nextEngineAndRequiredAction[256]; +} t_FmPcdModifyCcKeyAdditionalParams; + +typedef struct { + t_Handle h_Manip; + t_Handle h_CcNode; +} t_CcNextEngineInfo; + +typedef struct { + uint16_t numOfKeys; + bool glblMaskUpdated; + t_Handle p_GlblMask; + bool lclMask; + uint8_t parseCode; + uint8_t offset; + uint8_t prsArrayOffset; + bool ctrlFlow; + uint8_t owners; + + uint8_t ccKeySizeAccExtraction; + uint8_t sizeOfExtraction; + uint8_t glblMaskSize; + + t_Handle h_KeysMatchTable; + t_Handle h_AdTable; + + t_List ccPrevNodesLst; + + t_List ccTreeIdLst; + t_List ccTreesLst; + + t_Handle h_FmPcd; + uint32_t shadowAction; + bool modifiedState; + uint8_t userSizeOfExtraction; + + t_FmPcdCcNextEngineAndRequiredActionParams nextEngineAndRequiredAction[256]; +} t_FmPcdCcNode; + +typedef struct { + t_FmPcdCcNode *p_FmPcdCcNode; + bool occupied; + uint8_t owners; + volatile bool lock; +} t_FmPcdCcNodeArray; + +typedef struct { + uint8_t numOfEntriesInGroup; + uint32_t totalBitsMask; + uint8_t baseGroupEntry; +} t_FmPcdCcGroupParam; + +typedef struct { + uint8_t netEnvId; + uintptr_t ccTreeBaseAddr; + uint8_t numOfGrps; + t_FmPcdCcGroupParam fmPcdGroupParam[FM_PCD_MAX_NUM_OF_CC_GROUPS]; + t_List fmPortsLst; + volatile bool lock; + uint8_t numOfEntries; + uint8_t owners; + t_Handle *fmPcdCcSavedManipParams[256]; + bool modifiedState; + uint32_t requiredAction; + t_FmPcdCcNextEngineAndRequiredActionParams nextEngineAndRequiredAction[FM_PCD_MAX_NUM_OF_KEYS]; +} t_FmPcdCcTree; + +typedef struct { + t_FmPcdCcTree *p_FmPcdCcTree; + bool occupied; + uint8_t owners; + volatile bool lock; +} t_FmPcdCcTreeArray; + + +bool FmPcdManipIsManipNode(t_Handle h_Ad); + + +#endif /* __FM_CC_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/Pcd/fm_kg.c +++ linux-3.13.0/drivers/net/dpa/NetCommSw/Peripherals/FM/Pcd/fm_kg.c @@ -0,0 +1,3189 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 fm_kg.c + + @Description FM PCD ... +*//***************************************************************************/ +#include "std_ext.h" +#include "error_ext.h" +#include "string_ext.h" +#include "debug_ext.h" +#include "net_ext.h" +#include "fm_port_ext.h" + +#include "fm_common.h" +#include "fm_pcd.h" +#include "fm_hc.h" + +#include "fm_pcd_ipc.h" + + +static t_Error WriteKgarWait(t_FmPcd *p_FmPcd, uint32_t kgar) +{ + WRITE_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgar, kgar); + /* Wait for GO to be idle and read error */ + while ((kgar = GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgar)) & FM_PCD_KG_KGAR_GO) ; + if (kgar & FM_PCD_KG_KGAR_ERR) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Keygen scheme access violation")); + return E_OK; +} + +static e_FmPcdKgExtractDfltSelect GetGenericSwDefault(t_FmPcdKgExtractDflt swDefaults[], uint8_t numOfSwDefaults, uint8_t code) +{ + int i; + + switch(code) + { + case( KG_SCH_GEN_PARSE_RESULT_N_FQID): + case( KG_SCH_GEN_DEFAULT): + case( KG_SCH_GEN_NEXTHDR): + for(i=0 ; i mask 0x1-0x7F */ + if(bitOffset<8) + { + mask = 0; + for(i = 0 ; i < bitOffset ; i++, walking1Mask <<= 1) + mask |= walking1Mask; + } + else + { + mask = 0xFF; + numOfOnesToClear = 0; + if(fqid && bitOffset>24) + /* bitOffset 25-31 --> mask 0xFE-0x80 */ + numOfOnesToClear = (uint8_t)(bitOffset-24); + else + /* bitOffset 9-15 --> mask 0xFE-0x80 */ + if(!fqid && bitOffset>8) + numOfOnesToClear = (uint8_t)(bitOffset-8); + for(i = 0 ; i < numOfOnesToClear ; i++, walking1Mask <<= 1) + mask &= ~walking1Mask; + /* bitOffset 8-24 for FQID, 8 for PP --> no mask (0xFF)*/ + } + return mask; +} + + +t_Error FmPcdKgBuildClsPlanGrp(t_Handle h_FmPcd, t_FmPcdKgInterModuleClsPlanGrpParams *p_Grp, t_FmPcdKgInterModuleClsPlanSet *p_ClsPlanSet) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + t_FmPcdKgClsPlanGrp *p_ClsPlanGrp; + t_FmPcdIpcKgClsPlanParams kgAlloc; + t_Error err = E_OK; + uint32_t oredVectors = 0; + uint32_t intFlags; + int i, j; + + if (p_Grp->numOfOptions >= FM_PCD_MAX_NUM_OF_OPTIONS(FM_PCD_MAX_NUM_OF_CLS_PLANS)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE,("Too many classification plan basic options selected.")); + + intFlags = FmPcdLock(p_FmPcd); + + /* find a new clsPlan group */ + for(i = 0;ip_FmPcdKg->clsPlanGrps[i].used) + break; + if(i== FM_MAX_NUM_OF_PORTS) + { + FmPcdUnlock(p_FmPcd, intFlags); + RETURN_ERROR(MAJOR, E_FULL,("No classification plan groups available.")); + } + p_FmPcd->p_FmPcdKg->clsPlanGrps[i].used = TRUE; + p_Grp->clsPlanGrpId = (uint8_t)i; + + if(p_Grp->numOfOptions == 0) + p_FmPcd->p_FmPcdKg->emptyClsPlanGrpId = (uint8_t)i; + + if (!TRY_LOCK(NULL, &p_FmPcd->p_FmPcdKg->clsPlanGrps[p_Grp->clsPlanGrpId].lock)) + { + FmPcdUnlock(p_FmPcd, intFlags); + return ERROR_CODE(E_BUSY); + } + FmPcdUnlock(p_FmPcd, intFlags); + + p_ClsPlanGrp = &p_FmPcd->p_FmPcdKg->clsPlanGrps[i]; + p_ClsPlanGrp->netEnvId = p_Grp->netEnvId; + p_ClsPlanGrp->owners = 0; + FmPcdSetClsPlanGrpId(p_FmPcd, p_Grp->netEnvId, p_Grp->clsPlanGrpId); + FmPcdIncNetEnvOwners(p_FmPcd, p_Grp->netEnvId); + + p_ClsPlanGrp->sizeOfGrp = (uint16_t)(1<numOfOptions); + /* a minimal group of 8 is required */ + if(p_ClsPlanGrp->sizeOfGrp < CLS_PLAN_NUM_PER_GRP) + p_ClsPlanGrp->sizeOfGrp = CLS_PLAN_NUM_PER_GRP; + if(p_FmPcd->guestId == NCSW_MASTER_ID) + { + err = KgAllocClsPlanEntries(h_FmPcd, p_ClsPlanGrp->sizeOfGrp, p_FmPcd->guestId, &p_ClsPlanGrp->baseEntry); + + if(err) + { + RELEASE_LOCK(p_FmPcd->p_FmPcdKg->clsPlanGrps[p_Grp->clsPlanGrpId].lock); + RETURN_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + } + + } + else + { + t_FmPcdIpcMsg msg; + uint32_t replyLength; + t_FmPcdIpcReply reply; + + /* in GUEST_PARTITION, we use the IPC, to also set a private driver group if required */ + memset(&reply, 0, sizeof(reply)); + memset(&msg, 0, sizeof(msg)); + memset(&kgAlloc, 0, sizeof(kgAlloc)); + kgAlloc.guestId = p_FmPcd->guestId; + kgAlloc.numOfClsPlanEntries = p_ClsPlanGrp->sizeOfGrp; + msg.msgId = FM_PCD_ALLOC_KG_CLSPLAN; + memcpy(msg.msgBody, &kgAlloc, sizeof(kgAlloc)); + replyLength = (sizeof(uint32_t) + sizeof(p_ClsPlanGrp->baseEntry)); + if ((err = XX_IpcSendMessage(p_FmPcd->h_IpcSession, + (uint8_t*)&msg, + sizeof(msg.msgId) + sizeof(kgAlloc), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + { + RELEASE_LOCK(p_FmPcd->p_FmPcdKg->clsPlanGrps[p_Grp->clsPlanGrpId].lock); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + if (replyLength != (sizeof(uint32_t) + sizeof(p_ClsPlanGrp->baseEntry))) + { + RELEASE_LOCK(p_FmPcd->p_FmPcdKg->clsPlanGrps[p_Grp->clsPlanGrpId].lock); + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + } + if ((t_Error)reply.error != E_OK) + { + RELEASE_LOCK(p_FmPcd->p_FmPcdKg->clsPlanGrps[p_Grp->clsPlanGrpId].lock); + RETURN_ERROR(MINOR, (t_Error)reply.error, NO_MSG); + } + + p_ClsPlanGrp->baseEntry = *(uint8_t*)(reply.replyBody); + } + + /* build classification plan entries parameters */ + p_ClsPlanSet->baseEntry = p_ClsPlanGrp->baseEntry; + p_ClsPlanSet->numOfClsPlanEntries = p_ClsPlanGrp->sizeOfGrp; + + oredVectors = 0; + for(i = 0; inumOfOptions; i++) + { + oredVectors |= p_Grp->optVectors[i]; + /* save an array of used options - the indexes represent the power of 2 index */ + p_ClsPlanGrp->optArray[i] = p_Grp->options[i]; + } + /* set the classification plan relevant entries so that all bits + * relevant to the list of options is cleared + */ + for(j = 0; jsizeOfGrp; j++) + p_ClsPlanSet->vectors[j] = ~oredVectors; + + for(i = 0; inumOfOptions; i++) + { + /* option i got the place 2^i in the clsPlan array. all entries that + * have bit i set, should have the vector bit cleared. So each option + * has one location that it is exclusive (1,2,4,8...) and represent the + * presence of that option only, and other locations that represent a + * combination of options. + * e.g: + * If ethernet-BC is option 1 it gets entry 2 in the table. Entry 2 + * now represents a frame with ethernet-BC header - so the bit + * representing ethernet-BC should be set and all other option bits + * should be cleared. + * Entries 2,3,6,7,10... also have ethernet-BC and therefore have bit + * vector[1] set, but they also have other bits set: + * 3=1+2, options 0 and 1 + * 6=2+4, options 1 and 2 + * 7=1+2+4, options 0,1,and 2 + * 10=2+8, options 1 and 3 + * etc. + * */ + + /* now for each option (i), we set their bits in all entries (j) + * that contain bit 2^i. + */ + for(j = 0; jsizeOfGrp; j++) + { + if(j & (1<vectors[j] |= p_Grp->optVectors[i]; + } + } + + RELEASE_LOCK(p_FmPcd->p_FmPcdKg->clsPlanGrps[p_Grp->clsPlanGrpId].lock); + + return E_OK; +} + +void FmPcdKgDestroyClsPlanGrp(t_Handle h_FmPcd, uint8_t grpId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + t_FmPcdIpcKgClsPlanParams kgAlloc; + t_Error err; + t_FmPcdIpcMsg msg; + uint32_t replyLength; + t_FmPcdIpcReply reply; + + /* check that no port is bound to this clsPlan */ + if(p_FmPcd->p_FmPcdKg->clsPlanGrps[grpId].owners) + { + REPORT_ERROR(MINOR, E_INVALID_STATE, ("Trying to delete a clsPlan grp that has ports bound to")); + return; + } + + FmPcdDecNetEnvOwners(p_FmPcd, p_FmPcd->p_FmPcdKg->clsPlanGrps[grpId].netEnvId); + + /* free blocks */ + if(p_FmPcd->guestId == NCSW_MASTER_ID) + { + KgFreeClsPlanEntries(h_FmPcd, + p_FmPcd->p_FmPcdKg->clsPlanGrps[grpId].sizeOfGrp, + p_FmPcd->guestId, + p_FmPcd->p_FmPcdKg->clsPlanGrps[grpId].baseEntry); + } + else /* in GUEST_PARTITION, we use the IPC, to also set a private driver group if required */ + { + memset(&reply, 0, sizeof(reply)); + memset(&msg, 0, sizeof(msg)); + kgAlloc.guestId = p_FmPcd->guestId; + kgAlloc.numOfClsPlanEntries = p_FmPcd->p_FmPcdKg->clsPlanGrps[grpId].sizeOfGrp; + kgAlloc.clsPlanBase = p_FmPcd->p_FmPcdKg->clsPlanGrps[grpId].baseEntry; + msg.msgId = FM_PCD_FREE_KG_CLSPLAN; + memcpy(msg.msgBody, &kgAlloc, sizeof(kgAlloc)); + replyLength = sizeof(uint32_t); + if ((err = XX_IpcSendMessage(p_FmPcd->h_IpcSession, + (uint8_t*)&msg, + sizeof(msg.msgId) + sizeof(kgAlloc), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + { + REPORT_ERROR(MINOR, err, NO_MSG); + return; + } + if (replyLength != sizeof(uint32_t)) + { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + return; + } + if((t_Error)reply.error != E_OK) + { + REPORT_ERROR(MAJOR, E_INVALID_STATE, ("Free KG clsPlan failed")); + return; + } + } + + if(grpId == p_FmPcd->p_FmPcdKg->emptyClsPlanGrpId) + p_FmPcd->p_FmPcdKg->emptyClsPlanGrpId = ILLEGAL_CLS_PLAN; + /* clear clsPlan driver structure */ + memset(&p_FmPcd->p_FmPcdKg->clsPlanGrps[grpId], 0, sizeof(t_FmPcdKgClsPlanGrp)); +} + +t_Error FmPcdKgBuildBindPortToSchemes(t_Handle h_FmPcd , t_FmPcdKgInterModuleBindPortToSchemes *p_BindPort, uint32_t *p_SpReg, bool add) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint32_t j, schemesPerPortVector = 0; + t_FmPcdKgScheme *p_Scheme; + uint8_t i, relativeSchemeId; + uint32_t tmp, walking1Mask; + uint8_t swPortIndex = 0; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdKg, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE); + + /* for each scheme */ + for(i = 0; inumOfSchemes; i++) + { + relativeSchemeId = FmPcdKgGetRelativeSchemeId(p_FmPcd, p_BindPort->schemesIds[i]); + if(relativeSchemeId >= FM_PCD_KG_NUM_OF_SCHEMES) + RETURN_ERROR(MAJOR, E_NOT_IN_RANGE, NO_MSG); + + if(add) + { + if (!FmPcdKgIsSchemeValidSw(h_FmPcd, relativeSchemeId)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Requested scheme is invalid.")); + + p_Scheme = &p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId]; + /* check netEnvId of the port against the scheme netEnvId */ + if((p_Scheme->netEnvId != p_BindPort->netEnvId) && (p_Scheme->netEnvId != ILLEGAL_NETENV)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Port may not be bound to requested scheme - differ in netEnvId")); + + /* if next engine is private port policer profile, we need to check that it is valid */ + HW_PORT_ID_TO_SW_PORT_INDX(swPortIndex, p_BindPort->hardwarePortId); + if(p_Scheme->nextRelativePlcrProfile) + { + for(j = 0;jnumOfProfiles;j++) + { + ASSERT_COND(p_FmPcd->p_FmPcdPlcr->portsMapping[swPortIndex].h_FmPort); + if(p_Scheme->relativeProfileId+j >= p_FmPcd->p_FmPcdPlcr->portsMapping[swPortIndex].numOfProfiles) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Relative profile not in range")); + if(!FmPcdPlcrIsProfileValid(p_FmPcd, (uint16_t)(p_FmPcd->p_FmPcdPlcr->portsMapping[swPortIndex].profilesBase + p_Scheme->relativeProfileId + j))) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Relative profile not valid.")); + } + } + if(!p_BindPort->useClsPlan) + { + /* if this port does not use clsPlan, it may not be bound to schemes with units that contain + cls plan options. Schemes that are used only directly, should not be checked. + it also may not be bound to schemes that go to CC with units that are options - so we OR + the match vector and the grpBits (= ccUnits) */ + if ((p_Scheme->matchVector != SCHEME_ALWAYS_DIRECT) || p_Scheme->ccUnits) + { + walking1Mask = 0x80000000; + tmp = (p_Scheme->matchVector == SCHEME_ALWAYS_DIRECT)? 0:p_Scheme->matchVector; + tmp |= p_Scheme->ccUnits; + while (tmp) + { + if(tmp & walking1Mask) + { + tmp &= ~walking1Mask; + if(!PcdNetEnvIsUnitWithoutOpts(p_FmPcd, p_Scheme->netEnvId, walking1Mask)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Port (without clsPlan) may not be bound to requested scheme - uses clsPlan options")); + } + walking1Mask >>= 1; + } + } + } + } + /* build vector */ + schemesPerPortVector |= 1 << (31 - p_BindPort->schemesIds[i]); + } + + *p_SpReg = schemesPerPortVector; + + return E_OK; +} + +void FmPcdKgIncSchemeOwners(t_Handle h_FmPcd , t_FmPcdKgInterModuleBindPortToSchemes *p_BindPort) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + int i; + t_FmPcdKgScheme *p_Scheme; + + /* for each scheme - update owners counters */ + for(i = 0; inumOfSchemes; i++) + { + p_Scheme = &p_FmPcd->p_FmPcdKg->schemes[p_BindPort->schemesIds[i]]; + + /* increment owners number */ + p_Scheme->owners++; + } +} + +void FmPcdKgDecSchemeOwners(t_Handle h_FmPcd , t_FmPcdKgInterModuleBindPortToSchemes *p_BindPort) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + int i; + t_FmPcdKgScheme *p_Scheme; + + /* for each scheme - update owners counters */ + for(i = 0; inumOfSchemes; i++) + { + p_Scheme = &p_FmPcd->p_FmPcdKg->schemes[p_BindPort->schemesIds[i]]; + + /* increment owners number */ + ASSERT_COND(p_Scheme->owners); + p_Scheme->owners--; + } +} + +static t_Error KgWriteSp(t_FmPcd *p_FmPcd, uint8_t hardwarePortId, uint32_t spReg, bool add) +{ + t_FmPcdKgPortConfigRegs *p_FmPcdKgPortRegs; + uint32_t tmpKgarReg = 0, tmpKgpeSp, intFlags; + t_Error err = E_OK; + + if (p_FmPcd->h_Hc) + return FmHcKgWriteSp(p_FmPcd->h_Hc, hardwarePortId, spReg, add); + + p_FmPcdKgPortRegs = &p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.portRegs; + + tmpKgarReg = FmPcdKgBuildReadPortSchemeBindActionReg(hardwarePortId); + intFlags = FmPcdLock(p_FmPcd); + err = WriteKgarWait(p_FmPcd, tmpKgarReg); + if(err) + { + FmPcdUnlock(p_FmPcd, intFlags); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + tmpKgpeSp = GET_UINT32(p_FmPcdKgPortRegs->kgoe_sp); + + if(add) + tmpKgpeSp |= spReg; + else /* clear */ + tmpKgpeSp &= ~spReg; + + WRITE_UINT32(p_FmPcdKgPortRegs->kgoe_sp, tmpKgpeSp); + + tmpKgarReg = FmPcdKgBuildWritePortSchemeBindActionReg(hardwarePortId); + + err = WriteKgarWait(p_FmPcd, tmpKgarReg); + FmPcdUnlock(p_FmPcd, intFlags); + return err; +} + +static t_Error KgWriteCpp(t_FmPcd *p_FmPcd, uint8_t hardwarePortId, uint32_t cppReg) +{ + t_FmPcdKgPortConfigRegs *p_FmPcdKgPortRegs; + uint32_t tmpKgarReg, intFlags; + t_Error err; + + if (p_FmPcd->h_Hc) + return FmHcKgWriteCpp(p_FmPcd->h_Hc, hardwarePortId, cppReg); + + p_FmPcdKgPortRegs = &p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.portRegs; + intFlags = FmPcdLock(p_FmPcd); + WRITE_UINT32(p_FmPcdKgPortRegs->kgoe_cpp, cppReg); + + tmpKgarReg = FmPcdKgBuildWritePortClsPlanBindActionReg(hardwarePortId); + err = WriteKgarWait(p_FmPcd, tmpKgarReg); + FmPcdUnlock(p_FmPcd, intFlags); + + return err; +} + +static void FmPcdKgUnbindPortToClsPlanGrp(t_FmPcd *p_FmPcd, uint8_t hardwarePortId) +{ + KgWriteCpp(p_FmPcd, hardwarePortId, 0); +} + +static t_Error KgBindPortToClsPlanGrp(t_FmPcd *p_FmPcd, uint8_t hardwarePortId, uint8_t clsPlanGrpId) +{ + uint32_t tmpKgpeCpp = 0; + + tmpKgpeCpp = FmPcdKgBuildCppReg(p_FmPcd, clsPlanGrpId); + return KgWriteCpp(p_FmPcd, hardwarePortId, tmpKgpeCpp); +} + +t_Error FmPcdKgBindPortToSchemes(t_Handle h_FmPcd , t_FmPcdKgInterModuleBindPortToSchemes *p_SchemeBind) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint32_t spReg; + t_Error err = E_OK; + + err = FmPcdKgBuildBindPortToSchemes(h_FmPcd, p_SchemeBind, &spReg, TRUE); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + + err = KgWriteSp(p_FmPcd, p_SchemeBind->hardwarePortId, spReg, TRUE); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + + FmPcdKgIncSchemeOwners(h_FmPcd, p_SchemeBind); + + return E_OK; +} + +t_Error FmPcdKgUnbindPortToSchemes(t_Handle h_FmPcd , t_FmPcdKgInterModuleBindPortToSchemes *p_SchemeBind) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint32_t spReg; + t_Error err = E_OK; + + err = FmPcdKgBuildBindPortToSchemes(h_FmPcd, p_SchemeBind, &spReg, FALSE); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + + err = KgWriteSp(p_FmPcd, p_SchemeBind->hardwarePortId, spReg, FALSE); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + + FmPcdKgDecSchemeOwners(h_FmPcd, p_SchemeBind); + + return E_OK; +} + +bool FmPcdKgIsSchemeValidSw(t_Handle h_FmPcd, uint8_t schemeId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + return p_FmPcd->p_FmPcdKg->schemes[schemeId].valid; +} + +bool KgIsSchemeAlwaysDirect(t_Handle h_FmPcd, uint8_t schemeId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + if(p_FmPcd->p_FmPcdKg->schemes[schemeId].matchVector == SCHEME_ALWAYS_DIRECT) + return TRUE; + else + return FALSE; +} + +t_Error FmPcdKgAllocSchemes(t_Handle h_FmPcd, uint8_t numOfSchemes, uint8_t guestId, uint8_t *p_SchemesIds) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint32_t intFlags; + uint8_t i,j; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdKg, E_INVALID_HANDLE); + + intFlags = FmPcdLock(p_FmPcd); + for(j=0,i=0;ip_FmPcdKg->schemesMng[i].allocated) + { + p_FmPcd->p_FmPcdKg->schemesMng[i].allocated = TRUE; + p_FmPcd->p_FmPcdKg->schemesMng[i].ownerId = guestId; + p_SchemesIds[j] = i; + j++; + } + } + + if (j != numOfSchemes) + { + /* roll back */ + for(j--; j; j--) + { + p_FmPcd->p_FmPcdKg->schemesMng[p_SchemesIds[j]].allocated = FALSE; + p_FmPcd->p_FmPcdKg->schemesMng[p_SchemesIds[j]].ownerId = 0; + p_SchemesIds[j] = 0; + } + FmPcdUnlock(p_FmPcd, intFlags); + RETURN_ERROR(MAJOR, E_NOT_AVAILABLE, ("No schemes found")); + } + FmPcdUnlock(p_FmPcd, intFlags); + + return E_OK; +} + +t_Error FmPcdKgFreeSchemes(t_Handle h_FmPcd, uint8_t numOfSchemes, uint8_t guestId, uint8_t *p_SchemesIds) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint32_t intFlags; + uint8_t i; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdKg, E_INVALID_HANDLE); + + intFlags = FmPcdLock(p_FmPcd); + + for(i=0;ip_FmPcdKg->schemesMng[p_SchemesIds[i]].allocated) + { + FmPcdUnlock(p_FmPcd, intFlags); + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Scheme was not previously allocated")); + } + if(p_FmPcd->p_FmPcdKg->schemesMng[p_SchemesIds[i]].ownerId != guestId) + { + FmPcdUnlock(p_FmPcd, intFlags); + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Scheme is not owned by caller. ")); + } + p_FmPcd->p_FmPcdKg->schemesMng[p_SchemesIds[i]].allocated = FALSE; + p_FmPcd->p_FmPcdKg->schemesMng[p_SchemesIds[i]].ownerId = 0; + } + + FmPcdUnlock(p_FmPcd, intFlags); + return E_OK; +} + +t_Error KgAllocClsPlanEntries(t_Handle h_FmPcd, uint16_t numOfClsPlanEntries, uint8_t guestId, uint8_t *p_First) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint32_t intFlags; + uint8_t numOfBlocks, blocksFound=0, first=0; + uint8_t i, j; + + intFlags = FmPcdLock(p_FmPcd); + + if(!numOfClsPlanEntries) + { + FmPcdUnlock(p_FmPcd, intFlags); + return E_OK; + } + + if ((numOfClsPlanEntries % CLS_PLAN_NUM_PER_GRP) || (!POWER_OF_2(numOfClsPlanEntries))) + { + FmPcdUnlock(p_FmPcd, intFlags); + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("numOfClsPlanEntries must be a power of 2 and divisible by 8")); + } + + numOfBlocks = (uint8_t)(numOfClsPlanEntries/CLS_PLAN_NUM_PER_GRP); + + /* try to find consequent blocks */ + first = 0; + for(i=0;ip_FmPcdKg->clsPlanBlocksMng[i].allocated) + { + blocksFound++; + i++; + if(blocksFound == numOfBlocks) + break; + } + else + { + blocksFound = 0; + /* advance i to the next aligned address */ + first = i = (uint8_t)(first + numOfBlocks); + } + } + + if(blocksFound == numOfBlocks) + { + *p_First = (uint8_t)(first*CLS_PLAN_NUM_PER_GRP); + for(j = first; jp_FmPcdKg->clsPlanBlocksMng[j].allocated = TRUE; + p_FmPcd->p_FmPcdKg->clsPlanBlocksMng[j].ownerId = guestId; + } + FmPcdUnlock(p_FmPcd, intFlags); + + return E_OK; + } + else + { + FmPcdUnlock(p_FmPcd, intFlags); + RETURN_ERROR(MINOR, E_FULL, ("No recources for clsPlan")); + } +} + +void KgFreeClsPlanEntries(t_Handle h_FmPcd, uint16_t numOfClsPlanEntries, uint8_t guestId, uint8_t base) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint32_t intFlags; + uint8_t numOfBlocks; + uint8_t i, baseBlock; + + UNUSED( guestId); + + intFlags = FmPcdLock(p_FmPcd); + + numOfBlocks = (uint8_t)(numOfClsPlanEntries/CLS_PLAN_NUM_PER_GRP); + ASSERT_COND(!(base%CLS_PLAN_NUM_PER_GRP)); + + baseBlock = (uint8_t)(base/CLS_PLAN_NUM_PER_GRP); + for(i=baseBlock;ip_FmPcdKg->clsPlanBlocksMng[i].allocated); + ASSERT_COND(guestId == p_FmPcd->p_FmPcdKg->clsPlanBlocksMng[i].ownerId); + p_FmPcd->p_FmPcdKg->clsPlanBlocksMng[i].allocated = FALSE; + p_FmPcd->p_FmPcdKg->clsPlanBlocksMng[i].ownerId = 0; + } + FmPcdUnlock(p_FmPcd, intFlags); +} + +void KgEnable(t_FmPcd *p_FmPcd) +{ + t_FmPcdKgRegs *p_Regs = p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs; + + ASSERT_COND(FmIsMaster(p_FmPcd->h_Fm)); + WRITE_UINT32(p_Regs->kggcr,GET_UINT32(p_Regs->kggcr) | FM_PCD_KG_KGGCR_EN); +} + +void KgDisable(t_FmPcd *p_FmPcd) +{ + t_FmPcdKgRegs *p_Regs = p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs; + + ASSERT_COND(FmIsMaster(p_FmPcd->h_Fm)); + WRITE_UINT32(p_Regs->kggcr,GET_UINT32(p_Regs->kggcr) & ~FM_PCD_KG_KGGCR_EN); +} + +void KgSetClsPlan(t_Handle h_FmPcd, t_FmPcdKgInterModuleClsPlanSet *p_Set) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + t_FmPcdKgClsPlanRegs *p_FmPcdKgPortRegs; + uint32_t tmpKgarReg=0, intFlags; + uint16_t i, j; + + SANITY_CHECK_RETURN(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN(p_FmPcd->p_FmPcdKg, E_INVALID_HANDLE); + + ASSERT_COND(FmIsMaster(p_FmPcd->h_Fm)); + p_FmPcdKgPortRegs = &p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.clsPlanRegs; + + intFlags = FmPcdLock(p_FmPcd); + for(i=p_Set->baseEntry;ibaseEntry+p_Set->numOfClsPlanEntries;i+=8) + { + tmpKgarReg = FmPcdKgBuildWriteClsPlanBlockActionReg((uint8_t)(i / CLS_PLAN_NUM_PER_GRP)); + + for (j = i; j < i+8; j++) + { + ASSERT_COND(IN_RANGE(0, (j - p_Set->baseEntry), FM_PCD_MAX_NUM_OF_CLS_PLANS-1)); + WRITE_UINT32(p_FmPcdKgPortRegs->kgcpe[j % CLS_PLAN_NUM_PER_GRP],p_Set->vectors[j - p_Set->baseEntry]); + } + + if(WriteKgarWait(p_FmPcd, tmpKgarReg) != E_OK) + { + REPORT_ERROR(MAJOR, E_INVALID_STATE, ("WriteKgarWait FAILED")); + return; + } + } + FmPcdUnlock(p_FmPcd, intFlags); +} + +static void PcdKgErrorException(t_Handle h_FmPcd) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + uint32_t event, force, schemeIndexes = 0,index = 0, mask = 0; + + ASSERT_COND(FmIsMaster(p_FmPcd->h_Fm)); + event = GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgeer); + mask = GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgeeer); + + schemeIndexes = GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgseer); + schemeIndexes &= GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgseeer); + + event &= mask; + + /* clear the forced events */ + force = GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgfeer); + if(force & event) + WRITE_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgfeer, force & ~event); + + WRITE_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgeer, event); + WRITE_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgseer, schemeIndexes); + + if(event & FM_PCD_KG_DOUBLE_ECC) + p_FmPcd->f_Exception(p_FmPcd->h_App,e_FM_PCD_KG_EXCEPTION_DOUBLE_ECC); + if(event & FM_PCD_KG_KEYSIZE_OVERFLOW) + { + if(schemeIndexes) + { + while(schemeIndexes) + { + if(schemeIndexes & 0x1) + p_FmPcd->f_FmPcdIndexedException(p_FmPcd->h_App,e_FM_PCD_KG_EXCEPTION_KEYSIZE_OVERFLOW, (uint16_t)(31 - index)); + schemeIndexes >>= 1; + index+=1; + } + } + else /* this should happen only when interrupt is forced. */ + p_FmPcd->f_Exception(p_FmPcd->h_App,e_FM_PCD_KG_EXCEPTION_KEYSIZE_OVERFLOW); + } +} + +static t_Error KgInitGuest(t_FmPcd *p_FmPcd) +{ + t_Error err = E_OK; + t_FmPcdIpcKgSchemesParams kgAlloc; + uint32_t replyLength; + t_FmPcdIpcReply reply; + t_FmPcdIpcMsg msg; + + ASSERT_COND(p_FmPcd->guestId != NCSW_MASTER_ID); + + /* in GUEST_PARTITION, we use the IPC */ + memset(&reply, 0, sizeof(reply)); + memset(&msg, 0, sizeof(msg)); + memset(&kgAlloc, 0, sizeof(t_FmPcdIpcKgSchemesParams)); + kgAlloc.numOfSchemes = p_FmPcd->p_FmPcdKg->numOfSchemes; + kgAlloc.guestId = p_FmPcd->guestId; + msg.msgId = FM_PCD_ALLOC_KG_SCHEMES; + memcpy(msg.msgBody, &kgAlloc, sizeof(kgAlloc)); + replyLength = sizeof(uint32_t) + p_FmPcd->p_FmPcdKg->numOfSchemes*sizeof(uint8_t); + if ((err = XX_IpcSendMessage(p_FmPcd->h_IpcSession, + (uint8_t*)&msg, + sizeof(msg.msgId) + sizeof(kgAlloc), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + if(replyLength != (sizeof(uint32_t) + p_FmPcd->p_FmPcdKg->numOfSchemes*sizeof(uint8_t))) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + memcpy(p_FmPcd->p_FmPcdKg->schemesIds, (uint8_t*)(reply.replyBody),p_FmPcd->p_FmPcdKg->numOfSchemes*sizeof(uint8_t)); + + return (t_Error)reply.error; +} + +static t_Error KgInitMaster(t_FmPcd *p_FmPcd) +{ + t_Error err = E_OK; + t_FmPcdKgRegs *p_Regs = p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs; + int i; + uint8_t hardwarePortId = 0; + uint32_t tmpReg; + + ASSERT_COND(p_FmPcd->guestId == NCSW_MASTER_ID); + + /**********************KGEER******************/ + WRITE_UINT32(p_Regs->kgeer, (FM_PCD_KG_DOUBLE_ECC | FM_PCD_KG_KEYSIZE_OVERFLOW)); + /**********************KGEER******************/ + + /**********************KGEEER******************/ + tmpReg = 0; + if(p_FmPcd->exceptions & FM_PCD_EX_KG_DOUBLE_ECC) + { + FmEnableRamsEcc(p_FmPcd->h_Fm); + tmpReg |= FM_PCD_KG_DOUBLE_ECC; + } + if(p_FmPcd->exceptions & FM_PCD_EX_KG_KEYSIZE_OVERFLOW) + tmpReg |= FM_PCD_KG_KEYSIZE_OVERFLOW; + WRITE_UINT32(p_Regs->kgeeer,tmpReg); + /**********************KGEEER******************/ + + /**********************KGFDOR******************/ + WRITE_UINT32(p_Regs->kgfdor,0); + /**********************KGFDOR******************/ + + /**********************KGGDV0R******************/ + WRITE_UINT32(p_Regs->kggdv0r,0); + /**********************KGGDV0R******************/ + + /**********************KGGDV1R******************/ + WRITE_UINT32(p_Regs->kggdv1r,0); + /**********************KGGDV1R******************/ + + /**********************KGGCR******************/ + WRITE_UINT32(p_Regs->kggcr, NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME); + /**********************KGGCR******************/ + + /* register even if no interrupts enabled, to allow future enablement */ + FmRegisterIntr(p_FmPcd->h_Fm, e_FM_MOD_KG, 0, e_FM_INTR_TYPE_ERR, PcdKgErrorException, p_FmPcd); + + /* clear binding between ports to schemes so that all ports are not bound to any schemes */ + for (i=0;ikgseer, 0xFFFFFFFF); + WRITE_UINT32(p_Regs->kgseeer, 0xFFFFFFFF); + + if(p_FmPcd->p_FmPcdKg->numOfSchemes) + { + err = FmPcdKgAllocSchemes(p_FmPcd, + p_FmPcd->p_FmPcdKg->numOfSchemes, + p_FmPcd->guestId, + p_FmPcd->p_FmPcdKg->schemesIds); + if(err) + RETURN_ERROR(MINOR, err, NO_MSG); + } + + return E_OK; +} + + +/****************************************/ +/* API routines */ +/****************************************/ +t_Error FM_PCD_KgSetAdditionalDataAfterParsing(t_Handle h_FmPcd, uint8_t payloadOffset) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + t_FmPcdKgRegs *p_Regs; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_NULL_POINTER); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdKg, E_NULL_POINTER); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs, E_NULL_POINTER); + + p_Regs = p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs; + if(!FmIsMaster(p_FmPcd->h_Fm)) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("FM_PCD_KgSetAdditionalDataAfterParsing - guest mode!")); + +/* not needed + if(payloadOffset > 256) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("data exatraction offset from parseing end can not be more than 256")); +*/ + + WRITE_UINT32(p_Regs->kgfdor,payloadOffset); + + return E_OK; +} + +t_Error FM_PCD_KgSetDfltValue(t_Handle h_FmPcd, uint8_t valueId, uint32_t value) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + t_FmPcdKgRegs *p_Regs; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(((valueId == 0) || (valueId == 1)), E_INVALID_VALUE); + SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_NULL_POINTER); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdKg, E_NULL_POINTER); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs, E_NULL_POINTER); + + p_Regs = p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs; + + if(!FmIsMaster(p_FmPcd->h_Fm)) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("FM_PCD_KgSetDfltValue - guest mode!")); + + if(valueId == 0) + WRITE_UINT32(p_Regs->kggdv0r,value); + else + WRITE_UINT32(p_Regs->kggdv1r,value); + return E_OK; +} + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) +t_Error FM_PCD_KgDumpRegs(t_Handle h_FmPcd) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + int i = 0, j = 0; + uint8_t hardwarePortId = 0; + uint32_t tmpKgarReg, intFlags; + t_Error err = E_OK; + t_FmPcdIpcMsg msg; + + DECLARE_DUMP; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdKg, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE); + + if(p_FmPcd->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + msg.msgId = FM_PCD_KG_DUMP_REGS; + return XX_IpcSendMessage(p_FmPcd->h_IpcSession, + (uint8_t*)&msg, + sizeof(msg.msgId), + NULL, + NULL, + NULL, + NULL); + } + DUMP_SUBTITLE(("\n")); + DUMP_TITLE(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs, ("FmPcdKgRegs Regs")); + + DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kggcr); + DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kgeer); + DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kgeeer); + DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kgseer); + DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kgseeer); + DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kggsr); + DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kgtpc); + DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kgserc); + DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kgfdor); + DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kggdv0r); + DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kggdv1r); + DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kgfer); + DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kgfeer); + DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kgar); + + DUMP_SUBTITLE(("\n")); + intFlags = FmPcdLock(p_FmPcd); + for(j = 0;jp_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs, ("FmPcdKgIndirectAccessSchemeRegs Scheme %d Regs", j)); + + DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs,kgse_mode); + DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs,kgse_ekfc); + DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs,kgse_ekdv); + DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs,kgse_bmch); + DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs,kgse_bmcl); + DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs,kgse_fqb); + DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs,kgse_hc); + DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs,kgse_ppc); + + DUMP_TITLE(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs.kgse_gec, ("kgse_gec")); + DUMP_SUBSTRUCT_ARRAY(i, FM_PCD_KG_NUM_OF_GENERIC_REGS) + { + DUMP_MEMORY(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs.kgse_gec[i], sizeof(uint32_t)); + } + + DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs,kgse_spc); + DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs,kgse_dv0); + DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs,kgse_dv1); + DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs,kgse_ccbs); + DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs,kgse_mv); + } + DUMP_SUBTITLE(("\n")); + + for (i=0;ip_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.portRegs, ("FmPcdKgIndirectAccessPortRegs PCD Port %d regs", hardwarePortId)); + + DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.portRegs, kgoe_sp); + DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.portRegs, kgoe_cpp); + } + + DUMP_SUBTITLE(("\n")); + for(j=0;jp_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.clsPlanRegs, ("FmPcdKgIndirectAccessClsPlanRegs Regs group %d", j)); + DUMP_TITLE(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.clsPlanRegs.kgcpe, ("kgcpe")); + + tmpKgarReg = FmPcdKgBuildReadClsPlanBlockActionReg((uint8_t)j); + err = WriteKgarWait(p_FmPcd, tmpKgarReg); + if(err) + RETURN_ERROR(MINOR, err, NO_MSG); + DUMP_SUBSTRUCT_ARRAY(i, 8) + DUMP_MEMORY(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.clsPlanRegs.kgcpe[i], sizeof(uint32_t)); + } + FmPcdUnlock(p_FmPcd, intFlags); + + return E_OK; +} +#endif /* (defined(DEBUG_ERRORS) && ... */ + +t_Handle KgConfig( t_FmPcd *p_FmPcd, t_FmPcdParams *p_FmPcdParams) +{ + t_FmPcdKg *p_FmPcdKg; + + UNUSED(p_FmPcd); + + if (p_FmPcdParams->numOfSchemes > FM_PCD_KG_NUM_OF_SCHEMES) + { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, + ("numOfSchemes should not exceed %d", FM_PCD_KG_NUM_OF_SCHEMES)); + return NULL; + } + + p_FmPcdKg = (t_FmPcdKg *)XX_Malloc(sizeof(t_FmPcdKg)); + if (!p_FmPcdKg) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FM Keygen allocation FAILED")); + return NULL; + } + memset(p_FmPcdKg, 0, sizeof(t_FmPcdKg)); + + if(FmIsMaster(p_FmPcd->h_Fm)) + { + p_FmPcdKg->p_FmPcdKgRegs = (t_FmPcdKgRegs *)UINT_TO_PTR(FmGetPcdKgBaseAddr(p_FmPcdParams->h_Fm)); + p_FmPcd->exceptions |= DEFAULT_fmPcdKgErrorExceptions; + } + + p_FmPcdKg->numOfSchemes = p_FmPcdParams->numOfSchemes; + if((p_FmPcd->guestId == NCSW_MASTER_ID) && !p_FmPcdKg->numOfSchemes) + { + p_FmPcdKg->numOfSchemes = FM_PCD_KG_NUM_OF_SCHEMES; + DBG(WARNING, ("numOfSchemes was defined 0 by user, re-defined by driver to FM_PCD_KG_NUM_OF_SCHEMES")); + } + + p_FmPcdKg->emptyClsPlanGrpId = ILLEGAL_CLS_PLAN; + + return p_FmPcdKg; +} + +t_Error KgInit(t_FmPcd *p_FmPcd) +{ + if (p_FmPcd->guestId == NCSW_MASTER_ID) + return KgInitMaster(p_FmPcd); + else + return KgInitGuest(p_FmPcd); +} + +t_Error KgFree(t_FmPcd *p_FmPcd) +{ + t_FmPcdIpcKgSchemesParams kgAlloc; + t_Error err = E_OK; + t_FmPcdIpcMsg msg; + uint32_t replyLength; + t_FmPcdIpcReply reply; + + FmUnregisterIntr(p_FmPcd->h_Fm, e_FM_MOD_KG, 0, e_FM_INTR_TYPE_ERR); + + if(p_FmPcd->guestId == NCSW_MASTER_ID) + return FmPcdKgFreeSchemes(p_FmPcd, + p_FmPcd->p_FmPcdKg->numOfSchemes, + p_FmPcd->guestId, + p_FmPcd->p_FmPcdKg->schemesIds); + + /* guest */ + memset(&reply, 0, sizeof(reply)); + memset(&msg, 0, sizeof(msg)); + kgAlloc.numOfSchemes = p_FmPcd->p_FmPcdKg->numOfSchemes; + kgAlloc.guestId = p_FmPcd->guestId; + ASSERT_COND(kgAlloc.numOfSchemes < FM_PCD_KG_NUM_OF_SCHEMES); + memcpy(kgAlloc.schemesIds, p_FmPcd->p_FmPcdKg->schemesIds , (sizeof(uint8_t))*kgAlloc.numOfSchemes); + msg.msgId = FM_PCD_FREE_KG_SCHEMES; + memcpy(msg.msgBody, &kgAlloc, sizeof(kgAlloc)); + replyLength = sizeof(uint32_t); + if ((err = XX_IpcSendMessage(p_FmPcd->h_IpcSession, + (uint8_t*)&msg, + sizeof(msg.msgId) + sizeof(kgAlloc), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + if (replyLength != sizeof(uint32_t)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + + return (t_Error)reply.error; +} + +t_Error FmPcdKgSetOrBindToClsPlanGrp(t_Handle h_FmPcd, uint8_t hardwarePortId, uint8_t netEnvId, protocolOpt_t *p_OptArray, uint8_t *p_ClsPlanGrpId, bool *p_IsEmptyClsPlanGrp) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + t_FmPcdKgInterModuleClsPlanGrpParams grpParams, *p_GrpParams; + t_FmPcdKgClsPlanGrp *p_ClsPlanGrp; + t_FmPcdKgInterModuleClsPlanSet *p_ClsPlanSet; + t_Error err; + + memset(&grpParams, 0, sizeof(grpParams)); + grpParams.clsPlanGrpId = ILLEGAL_CLS_PLAN; + p_GrpParams = &grpParams; + + p_GrpParams->netEnvId = netEnvId; + err = PcdGetClsPlanGrpParams(h_FmPcd, p_GrpParams); + if(err) + RETURN_ERROR(MINOR,err,NO_MSG); + if(p_GrpParams->grpExists) + *p_ClsPlanGrpId = p_GrpParams->clsPlanGrpId; + else + { + p_ClsPlanSet = (t_FmPcdKgInterModuleClsPlanSet *)XX_Malloc(sizeof(t_FmPcdKgInterModuleClsPlanSet)); + if (!p_ClsPlanSet) + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("memory allocation failed for p_ClsPlanSet")); + memset(p_ClsPlanSet, 0, sizeof(t_FmPcdKgInterModuleClsPlanSet)); + err = FmPcdKgBuildClsPlanGrp(h_FmPcd, p_GrpParams, p_ClsPlanSet); + if (err) + { + XX_Free(p_ClsPlanSet); + RETURN_ERROR(MINOR,err,NO_MSG); + } + *p_ClsPlanGrpId = p_GrpParams->clsPlanGrpId; + + if (p_FmPcd->h_Hc) + { + /* write clsPlan entries to memory */ + err = FmHcPcdKgSetClsPlan(p_FmPcd->h_Hc, p_ClsPlanSet); + if (err) + { + XX_Free(p_ClsPlanSet); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + } + else + /* write clsPlan entries to memory */ + KgSetClsPlan(p_FmPcd, p_ClsPlanSet); + + XX_Free(p_ClsPlanSet); + } + + /* mark if this is an empty classification group */ + if(*p_ClsPlanGrpId == p_FmPcd->p_FmPcdKg->emptyClsPlanGrpId) + *p_IsEmptyClsPlanGrp = TRUE; + else + *p_IsEmptyClsPlanGrp = FALSE; + + p_ClsPlanGrp = &p_FmPcd->p_FmPcdKg->clsPlanGrps[*p_ClsPlanGrpId]; + + /* increment owners number */ + p_ClsPlanGrp->owners++; + + /* copy options array for port */ + memcpy(p_OptArray, &p_FmPcd->p_FmPcdKg->clsPlanGrps[*p_ClsPlanGrpId].optArray, FM_PCD_MAX_NUM_OF_OPTIONS(FM_PCD_MAX_NUM_OF_CLS_PLANS)*sizeof(protocolOpt_t)); + + /* bind port to the new or existing group */ + err = KgBindPortToClsPlanGrp(p_FmPcd, hardwarePortId, p_GrpParams->clsPlanGrpId); + if(err) + RETURN_ERROR(MINOR, err, NO_MSG); + + return E_OK; +} + +t_Error FmPcdKgDeleteOrUnbindPortToClsPlanGrp(t_Handle h_FmPcd, uint8_t hardwarePortId, uint8_t clsPlanGrpId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + t_FmPcdKgClsPlanGrp *p_ClsPlanGrp = &p_FmPcd->p_FmPcdKg->clsPlanGrps[clsPlanGrpId]; + t_FmPcdKgInterModuleClsPlanSet *p_ClsPlanSet; + + FmPcdKgUnbindPortToClsPlanGrp(p_FmPcd, hardwarePortId); + + /* decrement owners number */ + ASSERT_COND(p_ClsPlanGrp->owners); + p_ClsPlanGrp->owners--; + + if(!p_ClsPlanGrp->owners) + { + if (p_FmPcd->h_Hc) + return FmHcPcdKgDeleteClsPlan(p_FmPcd->h_Hc, clsPlanGrpId); + else + { + /* clear clsPlan entries in memory */ + p_ClsPlanSet = (t_FmPcdKgInterModuleClsPlanSet *)XX_Malloc(sizeof(t_FmPcdKgInterModuleClsPlanSet)); + if (!p_ClsPlanSet) + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("memory allocation failed for p_ClsPlanSet")); + memset(p_ClsPlanSet, 0, sizeof(t_FmPcdKgInterModuleClsPlanSet)); + p_ClsPlanSet->baseEntry = p_FmPcd->p_FmPcdKg->clsPlanGrps[clsPlanGrpId].baseEntry; + p_ClsPlanSet->numOfClsPlanEntries = p_FmPcd->p_FmPcdKg->clsPlanGrps[clsPlanGrpId].sizeOfGrp; + KgSetClsPlan(p_FmPcd, p_ClsPlanSet); + XX_Free(p_ClsPlanSet); + FmPcdKgDestroyClsPlanGrp(h_FmPcd, clsPlanGrpId); + } + } + return E_OK; +} + +t_Error FmPcdKgBuildScheme(t_Handle h_FmPcd, t_FmPcdKgSchemeParams *p_Scheme, t_FmPcdKgInterModuleSchemeRegs *p_SchemeRegs) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + uint32_t grpBits = 0; + uint8_t grpBase; + bool direct=TRUE, absolute=FALSE; + uint16_t profileId=0, numOfProfiles=0, relativeProfileId; + t_Error err = E_OK; + int i = 0; + t_NetEnvParams netEnvParams; + uint32_t tmpReg, fqbTmp = 0, ppcTmp = 0, selectTmp, maskTmp, knownTmp, genTmp; + t_FmPcdKgKeyExtractAndHashParams *p_KeyAndHash = NULL; + uint8_t j, curr, idx; + uint8_t id, shift=0, code=0, offset=0, size=0; + t_FmPcdExtractEntry *p_Extract = NULL; + t_FmPcdKgExtractedOrParams *p_ExtractOr; + bool generic = FALSE; + t_KnownFieldsMasks bitMask; + e_FmPcdKgExtractDfltSelect swDefault = (e_FmPcdKgExtractDfltSelect)0; + t_FmPcdKgSchemesExtracts *p_LocalExtractsArray; + uint8_t numOfSwDefaults = 0; + t_FmPcdKgExtractDflt swDefaults[NUM_OF_SW_DEFAULTS]; + uint8_t currGenId = 0, relativeSchemeId; + + if(!p_Scheme->modify) + relativeSchemeId = p_Scheme->id.relativeSchemeId; + else + relativeSchemeId = FmPcdKgGetRelativeSchemeId(p_FmPcd, (uint8_t)(PTR_TO_UINT(p_Scheme->id.h_Scheme)-1)); + + memset(&p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId], 0, sizeof(t_FmPcdKgScheme)); + memset(swDefaults, 0, NUM_OF_SW_DEFAULTS*sizeof(t_FmPcdKgExtractDflt)); + memset(p_SchemeRegs, 0, sizeof(t_FmPcdKgInterModuleSchemeRegs)); + + if (p_Scheme->netEnvParams.numOfDistinctionUnits > FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, + ("numOfDistinctionUnits should not exceed %d", FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS)); + + /* by netEnv parameters, get match vector */ + if(!p_Scheme->alwaysDirect) + { + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].netEnvId = + (uint8_t)(PTR_TO_UINT(p_Scheme->netEnvParams.h_NetEnv)-1); + netEnvParams.netEnvId = p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].netEnvId; + netEnvParams.numOfDistinctionUnits = p_Scheme->netEnvParams.numOfDistinctionUnits; + memcpy(netEnvParams.unitIds, p_Scheme->netEnvParams.unitIds, (sizeof(uint8_t))*p_Scheme->netEnvParams.numOfDistinctionUnits); + err = PcdGetUnitsVector(p_FmPcd, &netEnvParams); + if(err) + RETURN_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].matchVector = netEnvParams.vector; + } + else + { + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].matchVector = SCHEME_ALWAYS_DIRECT; + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].netEnvId = ILLEGAL_NETENV; + } + + if(p_Scheme->nextEngine == e_FM_PCD_INVALID) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Next Engine of the scheme is not Valid")); + + if(p_Scheme->bypassFqidGeneration) + { +#ifdef FM_KG_NO_BYPASS_FQID_GEN + { + t_FmRevisionInfo revInfo; + + FM_GetRevision(p_FmPcd->h_Fm, &revInfo); + if (revInfo.majorRev != 4) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("bypassFqidGeneration.")); + } +#endif /* FM_KG_NO_BYPASS_FQID_GEN */ + if(p_Scheme->baseFqid) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("baseFqid set for a scheme that does not generate an FQID")); + } + else + if(!p_Scheme->baseFqid) + DBG(WARNING, ("baseFqid is 0.")); + + if(p_Scheme->nextEngine == e_FM_PCD_PLCR) + { + direct = p_Scheme->kgNextEngineParams.plcrProfile.direct; + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].directPlcr = direct; + absolute = (bool)(p_Scheme->kgNextEngineParams.plcrProfile.sharedProfile ? TRUE : FALSE); + if(!direct && absolute) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Indirect policing is not available when profile is shared.")); + + if(direct) + { + profileId = p_Scheme->kgNextEngineParams.plcrProfile.profileSelect.directRelativeProfileId; + numOfProfiles = 1; + } + else + { + profileId = p_Scheme->kgNextEngineParams.plcrProfile.profileSelect.indirectProfile.fqidOffsetRelativeProfileIdBase; + shift = p_Scheme->kgNextEngineParams.plcrProfile.profileSelect.indirectProfile.fqidOffsetShift; + numOfProfiles = p_Scheme->kgNextEngineParams.plcrProfile.profileSelect.indirectProfile.numOfProfiles; + } + } + + if(p_Scheme->nextEngine == e_FM_PCD_CC) + { +#ifdef FM_KG_NO_BYPASS_PLCR_PROFILE_GEN + if((p_Scheme->kgNextEngineParams.cc.plcrNext) && (p_Scheme->kgNextEngineParams.cc.bypassPlcrProfileGeneration)) + { + t_FmRevisionInfo revInfo; + + FM_GetRevision(p_FmPcd->h_Fm, &revInfo); + if (revInfo.majorRev != 4) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("bypassPlcrProfileGeneration.")); + } +#endif /* FM_KG_NO_BYPASS_PLCR_PROFILE_GEN */ + + err = FmPcdCcGetGrpParams(p_Scheme->kgNextEngineParams.cc.h_CcTree, + p_Scheme->kgNextEngineParams.cc.grpId, + &grpBits, + &grpBase); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].ccUnits = grpBits; + + if((p_Scheme->kgNextEngineParams.cc.plcrNext) && + (!p_Scheme->kgNextEngineParams.cc.bypassPlcrProfileGeneration)) + { + if(p_Scheme->kgNextEngineParams.cc.plcrProfile.sharedProfile) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Shared profile may not be used after Coarse classification.")); + absolute = FALSE; + direct = p_Scheme->kgNextEngineParams.cc.plcrProfile.direct; + if(direct) + { + profileId = p_Scheme->kgNextEngineParams.cc.plcrProfile.profileSelect.directRelativeProfileId; + numOfProfiles = 1; + } + else + { + profileId = p_Scheme->kgNextEngineParams.cc.plcrProfile.profileSelect.indirectProfile.fqidOffsetRelativeProfileIdBase; + shift = p_Scheme->kgNextEngineParams.cc.plcrProfile.profileSelect.indirectProfile.fqidOffsetShift; + numOfProfiles = p_Scheme->kgNextEngineParams.cc.plcrProfile.profileSelect.indirectProfile.numOfProfiles; + } + } + } + + /* if policer is used directly after KG, or after CC */ + if((p_Scheme->nextEngine == e_FM_PCD_PLCR) || + ((p_Scheme->nextEngine == e_FM_PCD_CC) && + (p_Scheme->kgNextEngineParams.cc.plcrNext) && + (!p_Scheme->kgNextEngineParams.cc.bypassPlcrProfileGeneration))) + { + /* if private policer profile, it may be uninitialized yet, therefore no checks are done at this stage */ + if(absolute) + { + /* for absolute direct policy only, */ + relativeProfileId = profileId; + err = FmPcdPlcrGetAbsoluteProfileId(h_FmPcd,e_FM_PCD_PLCR_SHARED,NULL, relativeProfileId, &profileId); + if(err) + RETURN_ERROR(MAJOR, err, ("Shared profile not valid offset")); + if(!FmPcdPlcrIsProfileValid(p_FmPcd, profileId)) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Shared profile not valid.")); + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].relativeProfileId = profileId; + } + else + { + /* save relative profile id's for later check */ + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].nextRelativePlcrProfile = TRUE; + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].relativeProfileId = profileId; + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].numOfProfiles = numOfProfiles; + } + } + else + { + /* if policer is NOT going to be used after KG at all than if bypassFqidGeneration + is set, we do not need numOfUsedExtractedOrs and hashDistributionNumOfFqids */ + if(p_Scheme->bypassFqidGeneration && p_Scheme->numOfUsedExtractedOrs) + RETURN_ERROR(MAJOR, E_INVALID_STATE, + ("numOfUsedExtractedOrs is set in a scheme that does not generate FQID or policer profile ID")); + if(p_Scheme->bypassFqidGeneration && + p_Scheme->useHash && + p_Scheme->keyExtractAndHashParams.hashDistributionNumOfFqids) + RETURN_ERROR(MAJOR, E_INVALID_STATE, + ("hashDistributionNumOfFqids is set in a scheme that does not generate FQID or policer profile ID")); + } + + /* configure all 21 scheme registers */ + tmpReg = KG_SCH_MODE_EN; + switch(p_Scheme->nextEngine) + { + case(e_FM_PCD_PLCR): + /* add to mode register - NIA */ + tmpReg |= KG_SCH_MODE_NIA_PLCR; + tmpReg |= NIA_ENG_PLCR; + tmpReg |= (uint32_t)(p_Scheme->kgNextEngineParams.plcrProfile.sharedProfile ? NIA_PLCR_ABSOLUTE:0); + /* initialize policer profile command - */ + /* configure kgse_ppc */ + if(direct) + /* use profileId as base, other fields are 0 */ + p_SchemeRegs->kgse_ppc = (uint32_t)profileId; + else + { + if(shift > MAX_PP_SHIFT) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("fqidOffsetShift may not be larger than %d", MAX_PP_SHIFT)); + + if(!numOfProfiles || !POWER_OF_2(numOfProfiles)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("numOfProfiles must not be 0 and must be a power of 2")); + + ppcTmp = ((uint32_t)shift << KG_SCH_PP_SHIFT_HIGH_SHIFT) & KG_SCH_PP_SHIFT_HIGH; + ppcTmp |= ((uint32_t)shift << KG_SCH_PP_SHIFT_LOW_SHIFT) & KG_SCH_PP_SHIFT_LOW; + ppcTmp |= ((uint32_t)(numOfProfiles-1) << KG_SCH_PP_MASK_SHIFT); + ppcTmp |= (uint32_t)profileId; + + p_SchemeRegs->kgse_ppc = ppcTmp; + } + break; + case(e_FM_PCD_CC): + /* mode reg - define NIA */ + tmpReg |= (NIA_ENG_FM_CTL | NIA_FM_CTL_AC_CC); + + p_SchemeRegs->kgse_ccbs = grpBits; + tmpReg |= (uint32_t)(grpBase << KG_SCH_MODE_CCOBASE_SHIFT); + + if(p_Scheme->kgNextEngineParams.cc.plcrNext) + { + if(!p_Scheme->kgNextEngineParams.cc.bypassPlcrProfileGeneration) + { + /* find out if absolute or relative */ + if(absolute) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("It is illegal to request a shared profile in a scheme that is in a KG->CC->PLCR flow")); + if(direct) + { + /* mask = 0, base = directProfileId */ + p_SchemeRegs->kgse_ppc = (uint32_t)profileId; + } + else + { + if(shift > MAX_PP_SHIFT) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("fqidOffsetShift may not be larger than %d", MAX_PP_SHIFT)); + if(!numOfProfiles || !POWER_OF_2(numOfProfiles)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("numOfProfiles must not be 0 and must be a power of 2")); + + ppcTmp = ((uint32_t)shift << KG_SCH_PP_SHIFT_HIGH_SHIFT) & KG_SCH_PP_SHIFT_HIGH; + ppcTmp |= ((uint32_t)shift << KG_SCH_PP_SHIFT_LOW_SHIFT) & KG_SCH_PP_SHIFT_LOW; + ppcTmp |= ((uint32_t)(numOfProfiles-1) << KG_SCH_PP_MASK_SHIFT); + ppcTmp |= (uint32_t)profileId; + + p_SchemeRegs->kgse_ppc = ppcTmp; + } + } + else + ppcTmp = KG_SCH_PP_NO_GEN; + } + break; + case(e_FM_PCD_DONE): + if(p_Scheme->kgNextEngineParams.doneAction == e_FM_PCD_DROP_FRAME) + tmpReg |= (NIA_ENG_BMI | NIA_BMI_AC_DISCARD); + else + tmpReg |= (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME); + break; + default: + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("Next engine not supported")); + } + p_SchemeRegs->kgse_mode = tmpReg; + + p_SchemeRegs->kgse_mv = p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].matchVector; + + if(p_Scheme->useHash) + { + p_KeyAndHash = &p_Scheme->keyExtractAndHashParams; + + if (p_KeyAndHash->numOfUsedExtracts >= FM_PCD_KG_MAX_NUM_OF_EXTRACTS_PER_KEY) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("numOfUsedExtracts out of range")); + + /* configure kgse_dv0 */ + p_SchemeRegs->kgse_dv0 = p_KeyAndHash->privateDflt0; + + /* configure kgse_dv1 */ + p_SchemeRegs->kgse_dv1 = p_KeyAndHash->privateDflt1; + + if(!p_Scheme->bypassFqidGeneration) + { + if(!p_KeyAndHash->hashDistributionNumOfFqids || !POWER_OF_2(p_KeyAndHash->hashDistributionNumOfFqids)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("hashDistributionNumOfFqids must not be 0 and must be a power of 2")); + if((p_KeyAndHash->hashDistributionNumOfFqids-1) & p_Scheme->baseFqid) + DBG(WARNING, ("baseFqid unaligned. Distribution may result in less than hashDistributionNumOfFqids queues.")); + } + + /* configure kgse_ekdv */ + tmpReg = 0; + for( i=0 ;inumOfUsedDflts ; i++) + { + switch(p_KeyAndHash->dflts[i].type) + { + case(e_FM_PCD_KG_MAC_ADDR): + tmpReg |= (p_KeyAndHash->dflts[i].dfltSelect << KG_SCH_DEF_MAC_ADDR_SHIFT); + break; + case(e_FM_PCD_KG_TCI): + tmpReg |= (p_KeyAndHash->dflts[i].dfltSelect << KG_SCH_DEF_TCI_SHIFT); + break; + case(e_FM_PCD_KG_ENET_TYPE): + tmpReg |= (p_KeyAndHash->dflts[i].dfltSelect << KG_SCH_DEF_ENET_TYPE_SHIFT); + break; + case(e_FM_PCD_KG_PPP_SESSION_ID): + tmpReg |= (p_KeyAndHash->dflts[i].dfltSelect << KG_SCH_DEF_PPP_SESSION_ID_SHIFT); + break; + case(e_FM_PCD_KG_PPP_PROTOCOL_ID): + tmpReg |= (p_KeyAndHash->dflts[i].dfltSelect << KG_SCH_DEF_PPP_PROTOCOL_ID_SHIFT); + break; + case(e_FM_PCD_KG_MPLS_LABEL): + tmpReg |= (p_KeyAndHash->dflts[i].dfltSelect << KG_SCH_DEF_MPLS_LABEL_SHIFT); + break; + case(e_FM_PCD_KG_IP_ADDR): + tmpReg |= (p_KeyAndHash->dflts[i].dfltSelect << KG_SCH_DEF_IP_ADDR_SHIFT); + break; + case(e_FM_PCD_KG_PROTOCOL_TYPE): + tmpReg |= (p_KeyAndHash->dflts[i].dfltSelect << KG_SCH_DEF_PROTOCOL_TYPE_SHIFT); + break; + case(e_FM_PCD_KG_IP_TOS_TC): + tmpReg |= (p_KeyAndHash->dflts[i].dfltSelect << KG_SCH_DEF_IP_TOS_TC_SHIFT); + break; + case(e_FM_PCD_KG_IPV6_FLOW_LABEL): + tmpReg |= (p_KeyAndHash->dflts[i].dfltSelect << KG_SCH_DEF_L4_PORT_SHIFT); + break; + case(e_FM_PCD_KG_IPSEC_SPI): + tmpReg |= (p_KeyAndHash->dflts[i].dfltSelect << KG_SCH_DEF_IPSEC_SPI_SHIFT); + break; + case(e_FM_PCD_KG_L4_PORT): + tmpReg |= (p_KeyAndHash->dflts[i].dfltSelect << KG_SCH_DEF_L4_PORT_SHIFT); + break; + case(e_FM_PCD_KG_TCP_FLAG): + tmpReg |= (p_KeyAndHash->dflts[i].dfltSelect << KG_SCH_DEF_TCP_FLAG_SHIFT); + break; + case(e_FM_PCD_KG_GENERIC_FROM_DATA): + swDefaults[numOfSwDefaults].type = e_FM_PCD_KG_GENERIC_FROM_DATA; + swDefaults[numOfSwDefaults].dfltSelect = p_KeyAndHash->dflts[i].dfltSelect; + numOfSwDefaults ++; + break; + case(e_FM_PCD_KG_GENERIC_FROM_DATA_NO_V): + swDefaults[numOfSwDefaults].type = e_FM_PCD_KG_GENERIC_FROM_DATA_NO_V; + swDefaults[numOfSwDefaults].dfltSelect = p_KeyAndHash->dflts[i].dfltSelect; + numOfSwDefaults ++; + break; + case(e_FM_PCD_KG_GENERIC_NOT_FROM_DATA): + swDefaults[numOfSwDefaults].type = e_FM_PCD_KG_GENERIC_NOT_FROM_DATA; + swDefaults[numOfSwDefaults].dfltSelect = p_KeyAndHash->dflts[i].dfltSelect; + numOfSwDefaults ++; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + } + } + p_SchemeRegs->kgse_ekdv = tmpReg; + + p_LocalExtractsArray = (t_FmPcdKgSchemesExtracts *)XX_Malloc(sizeof(t_FmPcdKgSchemesExtracts)); + if(!p_LocalExtractsArray) + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("No memory")); + + /* configure kgse_ekfc and kgse_gec */ + knownTmp = 0; + for( i=0 ;inumOfUsedExtracts ; i++) + { + p_Extract = &p_KeyAndHash->extractArray[i]; + switch(p_Extract->type) + { + case(e_FM_PCD_KG_EXTRACT_PORT_PRIVATE_INFO): + knownTmp |= KG_SCH_KN_PORT_ID; + /* save in driver structure */ + p_LocalExtractsArray->extractsArray[i].id = GetKnownFieldId(KG_SCH_KN_PORT_ID); + p_LocalExtractsArray->extractsArray[i].known = TRUE; + break; + case(e_FM_PCD_EXTRACT_BY_HDR): + switch(p_Extract->extractByHdr.hdr) + { + case(HEADER_TYPE_UDP_ENCAP_ESP): + switch(p_Extract->extractByHdr.type) + { + case(e_FM_PCD_EXTRACT_FROM_HDR): + /* case where extraction from ESP only */ + if (p_Extract->extractByHdr.extractByHdrType.fromHdr.offset >= UDP_HEADER_SIZE) + { + p_Extract->extractByHdr.hdr = FmPcdGetAliasHdr(p_FmPcd, p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].netEnvId, HEADER_TYPE_UDP_ENCAP_ESP); + p_Extract->extractByHdr.extractByHdrType.fromHdr.offset -= UDP_HEADER_SIZE; + p_Extract->extractByHdr.ignoreProtocolValidation = TRUE; + } + else + { + p_Extract->extractByHdr.hdr = HEADER_TYPE_UDP; + p_Extract->extractByHdr.ignoreProtocolValidation = FALSE; + } + break; + case(e_FM_PCD_EXTRACT_FROM_FIELD): + switch(p_Extract->extractByHdr.extractByHdrType.fromField.field.udpEncapEsp) + { + case(NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_SRC): + case(NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_DST): + case(NET_HEADER_FIELD_UDP_ENCAP_ESP_LEN): + case(NET_HEADER_FIELD_UDP_ENCAP_ESP_CKSUM): + p_Extract->extractByHdr.hdr = HEADER_TYPE_UDP; + break; + case(NET_HEADER_FIELD_UDP_ENCAP_ESP_SPI): + p_Extract->extractByHdr.type = e_FM_PCD_EXTRACT_FROM_HDR; + p_Extract->extractByHdr.hdr = FmPcdGetAliasHdr(p_FmPcd, p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].netEnvId, HEADER_TYPE_UDP_ENCAP_ESP); + p_Extract->extractByHdr.extractByHdrType.fromField.size = p_Extract->extractByHdr.extractByHdrType.fromField.size; + /*p_Extract->extractByHdr.extractByHdrType.fromField.offset += ESP_SPI_OFFSET;*/ + p_Extract->extractByHdr.ignoreProtocolValidation = TRUE; + break; + case(NET_HEADER_FIELD_UDP_ENCAP_ESP_SEQUENCE_NUM): + p_Extract->extractByHdr.type = e_FM_PCD_EXTRACT_FROM_HDR; + p_Extract->extractByHdr.hdr = FmPcdGetAliasHdr(p_FmPcd, p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].netEnvId, HEADER_TYPE_UDP_ENCAP_ESP); + p_Extract->extractByHdr.extractByHdrType.fromField.size = p_Extract->extractByHdr.extractByHdrType.fromField.size; + p_Extract->extractByHdr.extractByHdrType.fromField.offset += ESP_SEQ_NUM_OFFSET; + p_Extract->extractByHdr.ignoreProtocolValidation = TRUE; + break; + } + break; + case(e_FM_PCD_EXTRACT_FULL_FIELD): + switch(p_Extract->extractByHdr.extractByHdrType.fullField.udpEncapEsp) + { + case(NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_SRC): + case(NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_DST): + case(NET_HEADER_FIELD_UDP_ENCAP_ESP_LEN): + case(NET_HEADER_FIELD_UDP_ENCAP_ESP_CKSUM): + p_Extract->extractByHdr.hdr = HEADER_TYPE_UDP; + break; + case(NET_HEADER_FIELD_UDP_ENCAP_ESP_SPI): + p_Extract->extractByHdr.type = e_FM_PCD_EXTRACT_FROM_HDR; + p_Extract->extractByHdr.hdr = FmPcdGetAliasHdr(p_FmPcd, p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].netEnvId, HEADER_TYPE_UDP_ENCAP_ESP); + p_Extract->extractByHdr.extractByHdrType.fromHdr.size = ESP_SPI_SIZE; + p_Extract->extractByHdr.extractByHdrType.fromHdr.offset = ESP_SPI_OFFSET; + p_Extract->extractByHdr.ignoreProtocolValidation = TRUE; + break; + case(NET_HEADER_FIELD_UDP_ENCAP_ESP_SEQUENCE_NUM): + p_Extract->extractByHdr.type = e_FM_PCD_EXTRACT_FROM_HDR; + p_Extract->extractByHdr.hdr = FmPcdGetAliasHdr(p_FmPcd, p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].netEnvId, HEADER_TYPE_UDP_ENCAP_ESP); + p_Extract->extractByHdr.extractByHdrType.fromHdr.size = ESP_SEQ_NUM_SIZE; + p_Extract->extractByHdr.extractByHdrType.fromHdr.offset = ESP_SEQ_NUM_OFFSET; + p_Extract->extractByHdr.ignoreProtocolValidation = TRUE; + break; + } + break; + } + break; + default: + break; + } + switch(p_Extract->extractByHdr.type) + { + case(e_FM_PCD_EXTRACT_FROM_HDR): + generic = TRUE; + /* get the header code for the generic extract */ + code = GetGenHdrCode(p_Extract->extractByHdr.hdr, p_Extract->extractByHdr.hdrIndex, p_Extract->extractByHdr.ignoreProtocolValidation); + /* set generic register fields */ + offset = p_Extract->extractByHdr.extractByHdrType.fromHdr.offset; + size = p_Extract->extractByHdr.extractByHdrType.fromHdr.size; + break; + case(e_FM_PCD_EXTRACT_FROM_FIELD): + generic = TRUE; + /* get the field code for the generic extract */ + code = GetGenFieldCode(p_Extract->extractByHdr.hdr, + p_Extract->extractByHdr.extractByHdrType.fromField.field, p_Extract->extractByHdr.ignoreProtocolValidation,p_Extract->extractByHdr.hdrIndex); + offset = p_Extract->extractByHdr.extractByHdrType.fromField.offset; + size = p_Extract->extractByHdr.extractByHdrType.fromField.size; + break; + case(e_FM_PCD_EXTRACT_FULL_FIELD): + if(!p_Extract->extractByHdr.ignoreProtocolValidation) + { + /* if we have a known field for it - use it, otherwise use generic */ + bitMask = GetKnownProtMask(p_Extract->extractByHdr.hdr, p_Extract->extractByHdr.hdrIndex, + p_Extract->extractByHdr.extractByHdrType.fullField); + if(bitMask) + { + knownTmp |= bitMask; + /* save in driver structure */ + p_LocalExtractsArray->extractsArray[i].id = GetKnownFieldId(bitMask); + p_LocalExtractsArray->extractsArray[i].known = TRUE; + } + else + generic = TRUE; + + } + else + generic = TRUE; + if(generic) + { + /* tmp - till we cover more headers under generic */ + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("Full header selection not supported")); + } + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + } + break; + case(e_FM_PCD_EXTRACT_NON_HDR): + /* use generic */ + generic = TRUE; + offset = 0; + /* get the field code for the generic extract */ + code = GetGenCode(p_Extract->extractNonHdr.src, &offset); + offset += p_Extract->extractNonHdr.offset; + size = p_Extract->extractNonHdr.size; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + } + + if(generic) + { + /* set generic register fields */ + if(currGenId >= FM_PCD_KG_NUM_OF_GENERIC_REGS) + RETURN_ERROR(MAJOR, E_FULL, ("Generic registers are fully used")); + if(!code) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, NO_MSG); + + genTmp = KG_SCH_GEN_VALID; + genTmp |= (uint32_t)(code << KG_SCH_GEN_HT_SHIFT); + genTmp |= offset; + if((size > MAX_KG_SCH_SIZE) || (size < 1)) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("Illegal extraction (size out of range)")); + genTmp |= (uint32_t)((size - 1) << KG_SCH_GEN_SIZE_SHIFT); + swDefault = GetGenericSwDefault(swDefaults, numOfSwDefaults, code); + if(swDefault == e_FM_PCD_KG_DFLT_ILLEGAL) + DBG(WARNING, ("No sw default configured")); + + genTmp |= swDefault << KG_SCH_GEN_DEF_SHIFT; + genTmp |= KG_SCH_GEN_MASK; + p_SchemeRegs->kgse_gec[currGenId] = genTmp; + /* save in driver structure */ + p_LocalExtractsArray->extractsArray[i].id = currGenId++; + p_LocalExtractsArray->extractsArray[i].known = FALSE; + generic = FALSE; + } + } + p_SchemeRegs->kgse_ekfc = knownTmp; + + selectTmp = 0; + maskTmp = 0xFFFFFFFF; + /* configure kgse_bmch, kgse_bmcl and kgse_fqb */ + + if(p_KeyAndHash->numOfUsedMasks >= FM_PCD_KG_NUM_OF_EXTRACT_MASKS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Only %d masks supported", FM_PCD_KG_NUM_OF_EXTRACT_MASKS)); + for( i=0 ;inumOfUsedMasks ; i++) + { + /* Get the relative id of the extract (for known 0-0x1f, for generic 0-7) */ + id = p_LocalExtractsArray->extractsArray[p_KeyAndHash->masks[i].extractArrayIndex].id; + /* Get the shift of the select field (depending on i) */ + GET_MASK_SEL_SHIFT(shift,i); + if (p_LocalExtractsArray->extractsArray[p_KeyAndHash->masks[i].extractArrayIndex].known) + selectTmp |= id << shift; + else + selectTmp |= (id + MASK_FOR_GENERIC_BASE_ID) << shift; + + /* Get the shift of the offset field (depending on i) - may + be in kgse_bmch or in kgse_fqb (depending on i) */ + GET_MASK_OFFSET_SHIFT(shift,i); + if (i<=1) + selectTmp |= p_KeyAndHash->masks[i].offset << shift; + else + fqbTmp |= p_KeyAndHash->masks[i].offset << shift; + + /* Get the shift of the mask field (depending on i) */ + GET_MASK_SHIFT(shift,i); + /* pass all bits */ + maskTmp |= KG_SCH_BITMASK_MASK << shift; + /* clear bits that need masking */ + maskTmp &= ~(0xFF << shift) ; + /* set mask bits */ + maskTmp |= (p_KeyAndHash->masks[i].mask << shift) ; + } + p_SchemeRegs->kgse_bmch = selectTmp; + p_SchemeRegs->kgse_bmcl = maskTmp; + /* kgse_fqb will be written t the end of the routine */ + + /* configure kgse_hc */ + if(p_KeyAndHash->hashShift > MAX_HASH_SHIFT) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("hashShift must not be larger than %d", MAX_HASH_SHIFT)); + if(p_KeyAndHash->hashDistributionFqidsShift > MAX_DIST_FQID_SHIFT) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("hashDistributionFqidsShift must not be larger than %d", MAX_DIST_FQID_SHIFT)); + + tmpReg = 0; + + tmpReg |= ((p_KeyAndHash->hashDistributionNumOfFqids - 1) << p_KeyAndHash->hashDistributionFqidsShift); + tmpReg |= p_KeyAndHash->hashShift << KG_SCH_HASH_CONFIG_SHIFT_SHIFT; + + if(p_KeyAndHash->symmetricHash) + { + if((!!(p_SchemeRegs->kgse_ekfc & KG_SCH_KN_MACSRC) != !!(p_SchemeRegs->kgse_ekfc & KG_SCH_KN_MACDST)) || + (!!(p_SchemeRegs->kgse_ekfc & KG_SCH_KN_IPSRC1) != !!(p_SchemeRegs->kgse_ekfc & KG_SCH_KN_IPDST1)) || + (!!(p_SchemeRegs->kgse_ekfc & KG_SCH_KN_IPSRC2) != !!(p_SchemeRegs->kgse_ekfc & KG_SCH_KN_IPDST2)) || + (!!(p_SchemeRegs->kgse_ekfc & KG_SCH_KN_L4PSRC) != !!(p_SchemeRegs->kgse_ekfc & KG_SCH_KN_L4PDST))) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("symmetricHash set but src/dest extractions missing")); + tmpReg |= KG_SCH_HASH_CONFIG_SYM; + } + p_SchemeRegs->kgse_hc = tmpReg; + + /* build the return array describing the order of the extractions */ + + /* the last currGenId places of the array + are for generic extracts that are always last. + We now sort for the calculation of the order of the known + extractions we sort the known extracts between orderedArray[0] and + orderedArray[p_KeyAndHash->numOfUsedExtracts - currGenId - 1]. + for the calculation of the order of the generic extractions we use: + num_of_generic - currGenId + num_of_known - p_KeyAndHash->numOfUsedExtracts - currGenId + first_generic_index = num_of_known */ + curr = 0; + for (i=0;inumOfUsedExtracts ; i++) + { + if(p_LocalExtractsArray->extractsArray[i].known) + { + ASSERT_COND(curr<(p_KeyAndHash->numOfUsedExtracts - currGenId)); + j = curr; + /* id is the extract id (port id = 0, mac src = 1 etc.). the value in the array is the original + index in the user's extractions array */ + /* we compare the id of the current extract with the id of the extract in the orderedArray[j-1] + location */ + while((j > 0) && (p_LocalExtractsArray->extractsArray[i].id < + p_LocalExtractsArray->extractsArray[p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].orderedArray[j-1]].id)) + { + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].orderedArray[j] = + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].orderedArray[j-1]; + j--; + } + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].orderedArray[j] = (uint8_t)i; + curr++; + } + else + { + /* index is first_generic_index + generic index (id) */ + idx = (uint8_t)(p_KeyAndHash->numOfUsedExtracts - currGenId + p_LocalExtractsArray->extractsArray[i].id); + ASSERT_COND(idx < FM_PCD_KG_MAX_NUM_OF_EXTRACTS_PER_KEY); + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].orderedArray[idx]= (uint8_t)i; + } + } + XX_Free(p_LocalExtractsArray); + p_LocalExtractsArray = NULL; + + } + else + { + /* clear all unused registers: */ + p_SchemeRegs->kgse_ekfc = 0; + p_SchemeRegs->kgse_ekdv = 0; + p_SchemeRegs->kgse_bmch = 0; + p_SchemeRegs->kgse_bmcl = 0; + p_SchemeRegs->kgse_hc = 0; + p_SchemeRegs->kgse_dv0 = 0; + p_SchemeRegs->kgse_dv1 = 0; + } + + if(p_Scheme->bypassFqidGeneration) + p_SchemeRegs->kgse_hc |= KG_SCH_HASH_CONFIG_NO_FQID; + + /* configure kgse_spc */ + if( p_Scheme->schemeCounter.update) + p_SchemeRegs->kgse_spc = p_Scheme->schemeCounter.value; + + + /* check that are enough generic registers */ + if(p_Scheme->numOfUsedExtractedOrs + currGenId > FM_PCD_KG_NUM_OF_GENERIC_REGS) + RETURN_ERROR(MAJOR, E_FULL, ("Generic registers are fully used")); + + /* extracted OR mask on Qid */ + for( i=0 ;inumOfUsedExtractedOrs ; i++) + { + + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].extractedOrs = TRUE; + /* configure kgse_gec[i] */ + p_ExtractOr = &p_Scheme->extractedOrs[i]; + switch(p_ExtractOr->type) + { + case(e_FM_PCD_KG_EXTRACT_PORT_PRIVATE_INFO): + code = KG_SCH_GEN_PARSE_RESULT_N_FQID; + offset = 0; + break; + case(e_FM_PCD_EXTRACT_BY_HDR): + /* get the header code for the generic extract */ + code = GetGenHdrCode(p_ExtractOr->extractByHdr.hdr, p_ExtractOr->extractByHdr.hdrIndex, p_ExtractOr->extractByHdr.ignoreProtocolValidation); + /* set generic register fields */ + offset = p_ExtractOr->extractionOffset; + break; + case(e_FM_PCD_EXTRACT_NON_HDR): + /* get the field code for the generic extract */ + offset = 0; + code = GetGenCode(p_ExtractOr->src, &offset); + offset += p_ExtractOr->extractionOffset; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + } + + /* set generic register fields */ + if(!code) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, NO_MSG); + genTmp = KG_SCH_GEN_EXTRACT_TYPE | KG_SCH_GEN_VALID; + genTmp |= (uint32_t)(code << KG_SCH_GEN_HT_SHIFT); + genTmp |= offset; + if(!!p_ExtractOr->bitOffsetInFqid == !!p_ExtractOr->bitOffsetInPlcrProfile) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, (" extracted byte must effect either FQID or Policer profile")); + + /************************************************************************************ + bitOffsetInFqid and bitOffsetInPolicerProfile are translated to rotate parameter + in the following way: + + Driver API and implementation: + ============================== + FQID: extracted OR byte may be shifted right 1-31 bits to effect parts of the FQID. + if shifted less than 8 bits, or more than 24 bits a mask is set on the bits that + are not overlapping FQID. + ------------------------ + | FQID (24) | + ------------------------ + -------- + | | extracted OR byte + -------- + + Policer Profile: extracted OR byte may be shifted right 1-15 bits to effect parts of the + PP id. Unless shifted exactly 8 bits to overlap the PP id, a mask is set on the bits that + are not overlapping PP id. + + -------- + | PP (8) | + -------- + -------- + | | extracted OR byte + -------- + + HW implementation + ================= + FQID and PP construct a 32 bit word in the way describe below. Extracted byte is located + as the highest byte of that word and may be rotated to effect any part os the FQID or + the PP. + ------------------------ -------- + | FQID (24) || PP (8) | + ------------------------ -------- + -------- + | | extracted OR byte + -------- + + ************************************************************************************/ + + if(p_ExtractOr->bitOffsetInFqid) + { + if(p_ExtractOr->bitOffsetInFqid > MAX_KG_SCH_FQID_BIT_OFFSET ) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal extraction (bitOffsetInFqid out of range)")); + if(p_ExtractOr->bitOffsetInFqid<8) + genTmp |= (uint32_t)((p_ExtractOr->bitOffsetInFqid+24) << KG_SCH_GEN_SIZE_SHIFT); + else + genTmp |= (uint32_t)((p_ExtractOr->bitOffsetInFqid-8) << KG_SCH_GEN_SIZE_SHIFT); + p_ExtractOr->mask &= GetExtractedOrMask(p_ExtractOr->bitOffsetInFqid, TRUE); + } + else /* effect policer profile */ + { + if(p_ExtractOr->bitOffsetInPlcrProfile > MAX_KG_SCH_PP_BIT_OFFSET ) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal extraction (bitOffsetInPlcrProfile out of range)")); + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].bitOffsetInPlcrProfile = p_ExtractOr->bitOffsetInPlcrProfile; + genTmp |= (uint32_t)((p_ExtractOr->bitOffsetInPlcrProfile+16) << KG_SCH_GEN_SIZE_SHIFT); + p_ExtractOr->mask &= GetExtractedOrMask(p_ExtractOr->bitOffsetInPlcrProfile, FALSE); + } + + genTmp |= (uint32_t)(p_ExtractOr->extractionOffset << KG_SCH_GEN_DEF_SHIFT); + /* clear bits that need masking */ + genTmp &= ~KG_SCH_GEN_MASK ; + /* set mask bits */ + genTmp |= (uint32_t)(p_ExtractOr->mask << KG_SCH_GEN_MASK_SHIFT); + p_SchemeRegs->kgse_gec[currGenId++] = genTmp; + + } + /* clear all unused GEC registers */ + for( i=currGenId ;ikgse_gec[i] = 0; + + /* add base Qid for this scheme */ + /* add configuration for kgse_fqb */ + if(p_Scheme->baseFqid & ~0x00FFFFFF) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("baseFqid must be between 1 and 2^24-1")); + + fqbTmp |= p_Scheme->baseFqid; + p_SchemeRegs->kgse_fqb = fqbTmp; + + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].nextEngine = p_Scheme->nextEngine; + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].doneAction = p_Scheme->kgNextEngineParams.doneAction; + return E_OK; +} + +void FmPcdKgValidateSchemeSw(t_Handle h_FmPcd, uint8_t schemeId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + ASSERT_COND(!p_FmPcd->p_FmPcdKg->schemes[schemeId].valid); + + if(p_FmPcd->p_FmPcdKg->schemes[schemeId].netEnvId != ILLEGAL_NETENV) + FmPcdIncNetEnvOwners(p_FmPcd, p_FmPcd->p_FmPcdKg->schemes[schemeId].netEnvId); + p_FmPcd->p_FmPcdKg->schemes[schemeId].valid = TRUE; +} + +void FmPcdKgInvalidateSchemeSw(t_Handle h_FmPcd, uint8_t schemeId) +{ + + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + if(p_FmPcd->p_FmPcdKg->schemes[schemeId].netEnvId != ILLEGAL_NETENV) + FmPcdDecNetEnvOwners(h_FmPcd, p_FmPcd->p_FmPcdKg->schemes[schemeId].netEnvId); + p_FmPcd->p_FmPcdKg->schemes[schemeId].valid = FALSE; +} + +uint32_t FmPcdKgGetRequiredAction(t_Handle h_FmPcd, uint8_t schemeId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + ASSERT_COND(p_FmPcd->p_FmPcdKg->schemes[schemeId].valid); + + return p_FmPcd->p_FmPcdKg->schemes[schemeId].requiredAction; +} + +uint32_t FmPcdKgGetPointedOwners(t_Handle h_FmPcd, uint8_t schemeId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + ASSERT_COND(p_FmPcd->p_FmPcdKg->schemes[schemeId].valid); + + return p_FmPcd->p_FmPcdKg->schemes[schemeId].pointedOwners; +} + +bool FmPcdKgIsDirectPlcr(t_Handle h_FmPcd, uint8_t schemeId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + ASSERT_COND(p_FmPcd->p_FmPcdKg->schemes[schemeId].valid); + + return p_FmPcd->p_FmPcdKg->schemes[schemeId].directPlcr; +} + + +uint16_t FmPcdKgGetRelativeProfileId(t_Handle h_FmPcd, uint8_t schemeId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + ASSERT_COND(p_FmPcd->p_FmPcdKg->schemes[schemeId].valid); + + return p_FmPcd->p_FmPcdKg->schemes[schemeId].relativeProfileId; +} + + +bool FmPcdKgIsDistrOnPlcrProfile(t_Handle h_FmPcd, uint8_t schemeId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + ASSERT_COND(p_FmPcd->p_FmPcdKg->schemes[schemeId].valid); + + if((p_FmPcd->p_FmPcdKg->schemes[schemeId].extractedOrs && + p_FmPcd->p_FmPcdKg->schemes[schemeId].bitOffsetInPlcrProfile) || + p_FmPcd->p_FmPcdKg->schemes[schemeId].nextRelativePlcrProfile) + return TRUE; + else + return FALSE; + +} +void FmPcdKgUpatePointedOwner(t_Handle h_FmPcd, uint8_t schemeId, bool add) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + ASSERT_COND(p_FmPcd->p_FmPcdKg->schemes[schemeId].valid); + + if(add) + p_FmPcd->p_FmPcdKg->schemes[schemeId].pointedOwners++; + else + p_FmPcd->p_FmPcdKg->schemes[schemeId].pointedOwners--; +} + +e_FmPcdEngine FmPcdKgGetNextEngine(t_Handle h_FmPcd, uint8_t schemeId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + ASSERT_COND(p_FmPcd->p_FmPcdKg->schemes[schemeId].valid); + + return p_FmPcd->p_FmPcdKg->schemes[schemeId].nextEngine; +} + +e_FmPcdDoneAction FmPcdKgGetDoneAction(t_Handle h_FmPcd, uint8_t schemeId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + ASSERT_COND(p_FmPcd->p_FmPcdKg->schemes[schemeId].valid); + + return p_FmPcd->p_FmPcdKg->schemes[schemeId].doneAction; +} + +void FmPcdKgUpdateRequiredAction(t_Handle h_FmPcd, uint8_t schemeId, uint32_t requiredAction) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + ASSERT_COND(p_FmPcd->p_FmPcdKg->schemes[schemeId].valid); + + p_FmPcd->p_FmPcdKg->schemes[schemeId].requiredAction = requiredAction; +} + +t_Error FmPcdKgCheckInvalidateSchemeSw(t_Handle h_FmPcd, uint8_t schemeId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + if(schemeId >= FM_PCD_KG_NUM_OF_SCHEMES) + REPORT_ERROR(MAJOR, E_NOT_IN_RANGE, NO_MSG); + + /* check that no port is bound to this scheme */ + if(p_FmPcd->p_FmPcdKg->schemes[schemeId].owners) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Trying to delete a scheme that has ports bound to")); + if(!p_FmPcd->p_FmPcdKg->schemes[schemeId].valid) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Trying to delete an invalid scheme")); + return E_OK; +} + +uint32_t FmPcdKgBuildCppReg(t_Handle h_FmPcd, uint8_t clsPlanGrpId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint32_t tmpKgpeCpp; + + tmpKgpeCpp = (uint32_t)(p_FmPcd->p_FmPcdKg->clsPlanGrps[clsPlanGrpId].baseEntry / 8); + tmpKgpeCpp |= (uint32_t)(((p_FmPcd->p_FmPcdKg->clsPlanGrps[clsPlanGrpId].sizeOfGrp / 8) - 1) << FM_PCD_KG_PE_CPP_MASK_SHIFT); + return tmpKgpeCpp; +} + +bool FmPcdKgHwSchemeIsValid(uint32_t schemeModeReg) +{ + + if(schemeModeReg & KG_SCH_MODE_EN) + return TRUE; + else + return FALSE; +} + +uint32_t FmPcdKgBuildWriteSchemeActionReg(uint8_t schemeId, bool updateCounter) +{ + return (uint32_t)(((uint32_t)schemeId << FM_PCD_KG_KGAR_NUM_SHIFT)| + FM_PCD_KG_KGAR_GO | + FM_PCD_KG_KGAR_WRITE | + FM_PCD_KG_KGAR_SEL_SCHEME_ENTRY | + DUMMY_PORT_ID | + (updateCounter ? FM_PCD_KG_KGAR_SCHEME_WSEL_UPDATE_CNT:0)); + +} + +uint32_t FmPcdKgBuildReadSchemeActionReg(uint8_t schemeId) +{ + return (uint32_t)(((uint32_t)schemeId << FM_PCD_KG_KGAR_NUM_SHIFT)| + FM_PCD_KG_KGAR_GO | + FM_PCD_KG_KGAR_READ | + FM_PCD_KG_KGAR_SEL_SCHEME_ENTRY | + DUMMY_PORT_ID | + FM_PCD_KG_KGAR_SCHEME_WSEL_UPDATE_CNT); + +} + + +uint32_t FmPcdKgBuildWriteClsPlanBlockActionReg(uint8_t grpId) +{ + return (uint32_t)(FM_PCD_KG_KGAR_GO | + FM_PCD_KG_KGAR_WRITE | + FM_PCD_KG_KGAR_SEL_CLS_PLAN_ENTRY | + DUMMY_PORT_ID | + ((uint32_t)grpId << FM_PCD_KG_KGAR_NUM_SHIFT) | + FM_PCD_KG_KGAR_WSEL_MASK); + + + /* if we ever want to write 1 by 1, use: + sel = (uint8_t)(0x01 << (7- (entryId % CLS_PLAN_NUM_PER_GRP)));*/ +} + +uint32_t FmPcdKgBuildReadClsPlanBlockActionReg(uint8_t grpId) +{ + return (uint32_t)(FM_PCD_KG_KGAR_GO | + FM_PCD_KG_KGAR_READ | + FM_PCD_KG_KGAR_SEL_CLS_PLAN_ENTRY | + DUMMY_PORT_ID | + ((uint32_t)grpId << FM_PCD_KG_KGAR_NUM_SHIFT) | + FM_PCD_KG_KGAR_WSEL_MASK); + + + /* if we ever want to write 1 by 1, use: + sel = (uint8_t)(0x01 << (7- (entryId % CLS_PLAN_NUM_PER_GRP)));*/ +} + +uint32_t FmPcdKgBuildWritePortSchemeBindActionReg(uint8_t hardwarePortId) +{ + + return (uint32_t)(FM_PCD_KG_KGAR_GO | + FM_PCD_KG_KGAR_WRITE | + FM_PCD_KG_KGAR_SEL_PORT_ENTRY | + hardwarePortId | + FM_PCD_KG_KGAR_SEL_PORT_WSEL_SP); +} + +uint32_t FmPcdKgBuildReadPortSchemeBindActionReg(uint8_t hardwarePortId) +{ + + return (uint32_t)(FM_PCD_KG_KGAR_GO | + FM_PCD_KG_KGAR_READ | + FM_PCD_KG_KGAR_SEL_PORT_ENTRY | + hardwarePortId | + FM_PCD_KG_KGAR_SEL_PORT_WSEL_SP); +} +uint32_t FmPcdKgBuildWritePortClsPlanBindActionReg(uint8_t hardwarePortId) +{ + + return (uint32_t)(FM_PCD_KG_KGAR_GO | + FM_PCD_KG_KGAR_WRITE | + FM_PCD_KG_KGAR_SEL_PORT_ENTRY | + hardwarePortId | + FM_PCD_KG_KGAR_SEL_PORT_WSEL_CPP); +} + +uint8_t FmPcdKgGetClsPlanGrpBase(t_Handle h_FmPcd, uint8_t clsPlanGrp) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + return p_FmPcd->p_FmPcdKg->clsPlanGrps[clsPlanGrp].baseEntry; +} + +uint16_t FmPcdKgGetClsPlanGrpSize(t_Handle h_FmPcd, uint8_t clsPlanGrp) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + return p_FmPcd->p_FmPcdKg->clsPlanGrps[clsPlanGrp].sizeOfGrp; +} + +uint8_t FmPcdKgGetSchemeSwId(t_Handle h_FmPcd, uint8_t schemeHwId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint8_t i; + + for(i=0;ip_FmPcdKg->numOfSchemes;i++) + if(p_FmPcd->p_FmPcdKg->schemesIds[i] == schemeHwId) + return i; + ASSERT_COND(i!=p_FmPcd->p_FmPcdKg->numOfSchemes); + return FM_PCD_KG_NUM_OF_SCHEMES; +} + +uint8_t FmPcdKgGetNumOfPartitionSchemes(t_Handle h_FmPcd) +{ + return ((t_FmPcd*)h_FmPcd)->p_FmPcdKg->numOfSchemes; +} + +uint8_t FmPcdKgGetPhysicalSchemeId(t_Handle h_FmPcd, uint8_t relativeSchemeId) +{ + return ((t_FmPcd*)h_FmPcd)->p_FmPcdKg->schemesIds[relativeSchemeId]; +} + +uint8_t FmPcdKgGetRelativeSchemeId(t_Handle h_FmPcd, uint8_t schemeId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint8_t i; + + for(i = 0;ip_FmPcdKg->numOfSchemes;i++) + if(p_FmPcd->p_FmPcdKg->schemesIds[i] == schemeId) + return i; + + if(i == p_FmPcd->p_FmPcdKg->numOfSchemes) + REPORT_ERROR(MAJOR, E_NOT_IN_RANGE, ("Scheme is out of partition range")); + + return FM_PCD_KG_NUM_OF_SCHEMES; +} + +t_Error FmPcdKgCcGetSetParams(t_Handle h_FmPcd, t_Handle h_Scheme, uint32_t requiredAction) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint8_t relativeSchemeId, physicalSchemeId; + uint32_t tmpKgarReg, tmpReg32 = 0, intFlags; + t_Error err; + + SANITY_CHECK_RETURN_VALUE(h_FmPcd, E_INVALID_HANDLE, 0); + SANITY_CHECK_RETURN_VALUE(p_FmPcd->p_FmPcdKg, E_INVALID_HANDLE, 0); + SANITY_CHECK_RETURN_VALUE(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE, 0); + + if (p_FmPcd->h_Hc) + return FmHcPcdKgCcGetSetParams(p_FmPcd->h_Hc, h_Scheme, requiredAction); + + physicalSchemeId = (uint8_t)(PTR_TO_UINT(h_Scheme)-1); + + relativeSchemeId = FmPcdKgGetRelativeSchemeId(p_FmPcd, physicalSchemeId); + if(relativeSchemeId >= FM_PCD_KG_NUM_OF_SCHEMES) + RETURN_ERROR(MAJOR, E_NOT_IN_RANGE, NO_MSG); + + if (FmPcdKgSchemeTryLock(p_FmPcd, relativeSchemeId, FALSE)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Lock of the scheme FAILED")); + + if(!p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].pointedOwners || + !(p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].requiredAction & requiredAction)) + { + if(requiredAction & UPDATE_NIA_ENQ_WITHOUT_DMA) + { + switch(p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].nextEngine) + { + case(e_FM_PCD_DONE): + if(p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].doneAction == e_FM_PCD_ENQ_FRAME) + { + tmpKgarReg = FmPcdKgBuildReadSchemeActionReg(physicalSchemeId); + intFlags = FmPcdLock(p_FmPcd); + WriteKgarWait(p_FmPcd, tmpKgarReg); + if (!(GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs.kgse_mode) & KG_SCH_MODE_EN)) + { + RELEASE_LOCK(p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].lock); + RETURN_ERROR(MAJOR, E_ALREADY_EXISTS, ("Scheme is Invalid")); + } + tmpReg32 = GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs.kgse_mode); + ASSERT_COND(tmpReg32 & (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME)); + WRITE_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs.kgse_mode, tmpReg32 | NIA_BMI_AC_ENQ_FRAME_WITHOUT_DMA); + /* call indirect command for scheme write */ + tmpKgarReg = FmPcdKgBuildWriteSchemeActionReg(physicalSchemeId, FALSE); + WriteKgarWait(p_FmPcd, tmpKgarReg); + FmPcdUnlock(p_FmPcd, intFlags); + } + break; + case(e_FM_PCD_PLCR): + if(!p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].directPlcr || + (p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].extractedOrs && + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].bitOffsetInPlcrProfile) || + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].nextRelativePlcrProfile) + { + RELEASE_LOCK(p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].lock); + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("In this situation PP can not be with distribution and has to be shared")); + } + err = FmPcdPlcrCcGetSetParams(h_FmPcd, p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].relativeProfileId, requiredAction); + if(err) + { + RELEASE_LOCK(p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].lock); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_VALUE,("in this situation the next engine after scheme can be or PLCR or ENQ_FRAME")); + } + } + } + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].pointedOwners += 1; + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].requiredAction |= requiredAction; + + RELEASE_LOCK(p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].lock); + return E_OK; +} + +t_Error FmPcdKgSchemeTryLock(t_Handle h_FmPcd, uint8_t schemeId, bool intr) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + bool ans; + + if (intr) + ans = TRY_LOCK(NULL, &p_FmPcd->p_FmPcdKg->schemes[schemeId].lock); + else + ans = TRY_LOCK(p_FmPcd->h_Spinlock, &p_FmPcd->p_FmPcdKg->schemes[schemeId].lock); + if (ans) + return E_OK; + return ERROR_CODE(E_BUSY); +} + +void FmPcdKgReleaseSchemeLock(t_Handle h_FmPcd, uint8_t schemeId) +{ + RELEASE_LOCK(((t_FmPcd*)h_FmPcd)->p_FmPcdKg->schemes[schemeId].lock); +} + +t_Handle FM_PCD_KgSetScheme(t_Handle h_FmPcd, t_FmPcdKgSchemeParams *p_Scheme) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint32_t tmpReg; + t_FmPcdKgInterModuleSchemeRegs schemeRegs; + t_FmPcdKgInterModuleSchemeRegs *p_MemRegs; + uint8_t i; + t_Error err = E_OK; + uint32_t tmpKgarReg; + uint32_t intFlags; + uint8_t physicalSchemeId, relativeSchemeId; + + SANITY_CHECK_RETURN_VALUE(p_FmPcd, E_INVALID_HANDLE, NULL); + SANITY_CHECK_RETURN_VALUE(p_FmPcd->p_FmPcdKg, E_INVALID_HANDLE, NULL); + SANITY_CHECK_RETURN_VALUE(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE, NULL); + + if (p_FmPcd->h_Hc) + return FmHcPcdKgSetScheme(p_FmPcd->h_Hc, p_Scheme); + + /* if not called for modification, check first that this scheme is unused */ + if(!p_Scheme->modify) + { + /* check that schemeId is in range */ + if(p_Scheme->id.relativeSchemeId >= p_FmPcd->p_FmPcdKg->numOfSchemes) + { + REPORT_ERROR(MAJOR, E_NOT_IN_RANGE, ("Scheme is out of range")); + return NULL; + } + relativeSchemeId = p_Scheme->id.relativeSchemeId; + + if (FmPcdKgSchemeTryLock(p_FmPcd, relativeSchemeId, FALSE)) + return NULL; + + physicalSchemeId = p_FmPcd->p_FmPcdKg->schemesIds[relativeSchemeId]; + + /* read specified scheme into scheme registers */ + tmpKgarReg = FmPcdKgBuildReadSchemeActionReg(physicalSchemeId); + intFlags = FmPcdLock(p_FmPcd); + WriteKgarWait(p_FmPcd, tmpKgarReg); + tmpReg = GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs.kgse_mode); + FmPcdUnlock(p_FmPcd, intFlags); + + if (tmpReg & KG_SCH_MODE_EN) + { + REPORT_ERROR(MAJOR, E_ALREADY_EXISTS, + ("Scheme %d(phys %d) is already used", relativeSchemeId, physicalSchemeId)); + RELEASE_LOCK(p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].lock); + return NULL; + } + } + else + { + SANITY_CHECK_RETURN_VALUE(p_Scheme->id.h_Scheme, E_INVALID_HANDLE, NULL); + + intFlags = FmPcdLock(p_FmPcd); + physicalSchemeId = (uint8_t)(PTR_TO_UINT(p_Scheme->id.h_Scheme)-1); + relativeSchemeId = FmPcdKgGetRelativeSchemeId(p_FmPcd, physicalSchemeId); + + /* check that schemeId is in range */ + if(relativeSchemeId >= FM_PCD_KG_NUM_OF_SCHEMES) + { + REPORT_ERROR(MAJOR, E_NOT_IN_RANGE, NO_MSG); + FmPcdUnlock(p_FmPcd, intFlags); + return NULL; + } + + err = FmPcdKgSchemeTryLock(p_FmPcd, relativeSchemeId, TRUE); + FmPcdUnlock(p_FmPcd, intFlags); + if (err) + return NULL; + } + + err = FmPcdKgBuildScheme(h_FmPcd, p_Scheme, &schemeRegs); + if(err) + { + REPORT_ERROR(MAJOR, err, NO_MSG); + FmPcdKgInvalidateSchemeSw(h_FmPcd, relativeSchemeId); + RELEASE_LOCK(p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].lock); + return NULL; + } + + /* configure all 21 scheme registers */ + p_MemRegs = &p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs; + intFlags = FmPcdLock(p_FmPcd); + WRITE_UINT32(p_MemRegs->kgse_ppc, schemeRegs.kgse_ppc); + WRITE_UINT32(p_MemRegs->kgse_ccbs, schemeRegs.kgse_ccbs); + WRITE_UINT32(p_MemRegs->kgse_mode, schemeRegs.kgse_mode); + WRITE_UINT32(p_MemRegs->kgse_mv, schemeRegs.kgse_mv); + WRITE_UINT32(p_MemRegs->kgse_dv0, schemeRegs.kgse_dv0); + WRITE_UINT32(p_MemRegs->kgse_dv1, schemeRegs.kgse_dv1); + WRITE_UINT32(p_MemRegs->kgse_ekdv, schemeRegs.kgse_ekdv); + WRITE_UINT32(p_MemRegs->kgse_ekfc, schemeRegs.kgse_ekfc); + WRITE_UINT32(p_MemRegs->kgse_bmch, schemeRegs.kgse_bmch); + WRITE_UINT32(p_MemRegs->kgse_bmcl, schemeRegs.kgse_bmcl); + WRITE_UINT32(p_MemRegs->kgse_hc, schemeRegs.kgse_hc); + WRITE_UINT32(p_MemRegs->kgse_spc, schemeRegs.kgse_spc); + WRITE_UINT32(p_MemRegs->kgse_fqb, schemeRegs.kgse_fqb); + for(i=0 ; ikgse_gec[i], schemeRegs.kgse_gec[i]); + + /* call indirect command for scheme write */ + tmpKgarReg = FmPcdKgBuildWriteSchemeActionReg(physicalSchemeId, p_Scheme->schemeCounter.update); + + WriteKgarWait(p_FmPcd, tmpKgarReg); + FmPcdUnlock(p_FmPcd, intFlags); + + FmPcdKgValidateSchemeSw(h_FmPcd, relativeSchemeId); + + RELEASE_LOCK(p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].lock); + + return UINT_TO_PTR((uint64_t)physicalSchemeId+1); +} + +t_Error FM_PCD_KgDeleteScheme(t_Handle h_FmPcd, t_Handle h_Scheme) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint8_t physicalSchemeId; + uint32_t tmpKgarReg, intFlags; + t_Error err = E_OK; + uint8_t relativeSchemeId; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdKg, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE); + + if (p_FmPcd->h_Hc) + return FmHcPcdKgDeleteScheme(p_FmPcd->h_Hc, h_Scheme); + + physicalSchemeId = (uint8_t)(PTR_TO_UINT(h_Scheme)-1); + relativeSchemeId = FmPcdKgGetRelativeSchemeId(p_FmPcd, physicalSchemeId); + + if(relativeSchemeId >= FM_PCD_KG_NUM_OF_SCHEMES) + RETURN_ERROR(MAJOR, E_NOT_IN_RANGE, NO_MSG); + + if ((err = FmPcdKgSchemeTryLock(p_FmPcd, relativeSchemeId, FALSE)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + + /* check that no port is bound to this scheme */ + err = FmPcdKgCheckInvalidateSchemeSw(h_FmPcd, relativeSchemeId); + if(err) + RETURN_ERROR(MINOR, err, NO_MSG); + + intFlags = FmPcdLock(p_FmPcd); + /* clear mode register, including enable bit */ + WRITE_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs.kgse_mode, 0); + + /* call indirect command for scheme write */ + tmpKgarReg = FmPcdKgBuildWriteSchemeActionReg(physicalSchemeId, FALSE); + + WriteKgarWait(p_FmPcd, tmpKgarReg); + FmPcdUnlock(p_FmPcd, intFlags); + + FmPcdKgInvalidateSchemeSw(h_FmPcd, relativeSchemeId); + + RELEASE_LOCK(p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].lock); + + return E_OK; +} + +uint32_t FM_PCD_KgGetSchemeCounter(t_Handle h_FmPcd, t_Handle h_Scheme) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint32_t tmpKgarReg, spc, intFlags; + uint8_t physicalSchemeId; + + SANITY_CHECK_RETURN_VALUE(h_FmPcd, E_INVALID_HANDLE, 0); + SANITY_CHECK_RETURN_VALUE(p_FmPcd->p_FmPcdKg, E_INVALID_HANDLE, 0); + SANITY_CHECK_RETURN_VALUE(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE, 0); + + if (p_FmPcd->h_Hc) + return FmHcPcdKgGetSchemeCounter(p_FmPcd->h_Hc, h_Scheme); + + physicalSchemeId = (uint8_t)(PTR_TO_UINT(h_Scheme)-1); + + if(FmPcdKgGetRelativeSchemeId(p_FmPcd, physicalSchemeId) == FM_PCD_KG_NUM_OF_SCHEMES) + REPORT_ERROR(MAJOR, E_NOT_IN_RANGE, NO_MSG); + + tmpKgarReg = FmPcdKgBuildReadSchemeActionReg(physicalSchemeId); + intFlags = FmPcdLock(p_FmPcd); + WriteKgarWait(p_FmPcd, tmpKgarReg); + if (!(GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs.kgse_mode) & KG_SCH_MODE_EN)) + REPORT_ERROR(MAJOR, E_ALREADY_EXISTS, ("Scheme is Invalid")); + spc = GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs.kgse_spc); + FmPcdUnlock(p_FmPcd, intFlags); + + return spc; +} + +t_Error FM_PCD_KgSetSchemeCounter(t_Handle h_FmPcd, t_Handle h_Scheme, uint32_t value) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint32_t tmpKgarReg, intFlags; + uint8_t physicalSchemeId; + + SANITY_CHECK_RETURN_VALUE(h_FmPcd, E_INVALID_HANDLE, 0); + SANITY_CHECK_RETURN_VALUE(p_FmPcd->p_FmPcdKg, E_INVALID_HANDLE, 0); + SANITY_CHECK_RETURN_VALUE(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE, 0); + + if (p_FmPcd->h_Hc) + return FmHcPcdKgSetSchemeCounter(p_FmPcd->h_Hc, h_Scheme, value); + + physicalSchemeId = (uint8_t)(PTR_TO_UINT(h_Scheme)-1); + /* check that schemeId is in range */ + if(FmPcdKgGetRelativeSchemeId(p_FmPcd, physicalSchemeId) == FM_PCD_KG_NUM_OF_SCHEMES) + REPORT_ERROR(MAJOR, E_NOT_IN_RANGE, NO_MSG); + + /* read specified scheme into scheme registers */ + tmpKgarReg = FmPcdKgBuildReadSchemeActionReg(physicalSchemeId); + intFlags = FmPcdLock(p_FmPcd); + WriteKgarWait(p_FmPcd, tmpKgarReg); + if (!(GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs.kgse_mode) & KG_SCH_MODE_EN)) + { + FmPcdUnlock(p_FmPcd, intFlags); + RETURN_ERROR(MAJOR, E_ALREADY_EXISTS, ("Scheme is Invalid")); + } + + /* change counter value */ + WRITE_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs.kgse_spc, value); + + /* call indirect command for scheme write */ + tmpKgarReg = FmPcdKgBuildWriteSchemeActionReg(physicalSchemeId, TRUE); + + WriteKgarWait(p_FmPcd, tmpKgarReg); + FmPcdUnlock(p_FmPcd, intFlags); + + return E_OK; +} + --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/Pcd/fm_pcd.c +++ linux-3.13.0/drivers/net/dpa/NetCommSw/Peripherals/FM/Pcd/fm_pcd.c @@ -0,0 +1,1693 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 fm_pcd.c + + @Description FM PCD ... +*//***************************************************************************/ +#include "std_ext.h" +#include "error_ext.h" +#include "string_ext.h" +#include "xx_ext.h" +#include "sprint_ext.h" +#include "debug_ext.h" +#include "net_ext.h" +#include "fm_ext.h" +#include "fm_pcd_ext.h" + +#include "fm_common.h" +#include "fm_pcd.h" +#include "fm_pcd_ipc.h" +#include "fm_hc.h" + + +static t_Error CheckFmPcdParameters(t_FmPcd *p_FmPcd) +{ + if(!p_FmPcd->h_Fm) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("h_Fm has to be initialized")); + + if(p_FmPcd->guestId == NCSW_MASTER_ID) + { + if(p_FmPcd->p_FmPcdKg && !p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Something WRONG")); + + if(p_FmPcd->p_FmPcdPlcr && !p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Something WRONG")); + + if(!p_FmPcd->f_Exception) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("f_FmPcdExceptions has to be initialized")); + + if((!p_FmPcd->f_FmPcdIndexedException) && (p_FmPcd->p_FmPcdPlcr || p_FmPcd->p_FmPcdKg)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("f_FmPcdIndexedException has to be initialized")); + + if(p_FmPcd->p_FmPcdDriverParam->prsMaxParseCycleLimit > PRS_MAX_CYCLE_LIMIT) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("prsMaxParseCycleLimit has to be less than 8191")); + } + + return E_OK; +} + +static volatile bool blockingFlag = FALSE; +static void FmPcdIpcMsgCompletionCB(t_Handle h_FmPcd, + uint8_t *p_Msg, + uint8_t *p_Reply, + uint32_t replyLength, + t_Error status) +{ + UNUSED(h_FmPcd);UNUSED(p_Msg);UNUSED(p_Reply);UNUSED(replyLength);UNUSED(status); + blockingFlag = FALSE; +} + +static t_Error FmPcdHandleIpcMsgCB(t_Handle h_FmPcd, + uint8_t *p_Msg, + uint32_t msgLength, + uint8_t *p_Reply, + uint32_t *p_ReplyLength) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + t_Error err = E_OK; + t_FmPcdIpcMsg *p_IpcMsg = (t_FmPcdIpcMsg*)p_Msg; + t_FmPcdIpcReply *p_IpcReply = (t_FmPcdIpcReply*)p_Reply; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR((msgLength >= sizeof(uint32_t)), E_INVALID_VALUE); + +#ifdef DISABLE_SANITY_CHECKS + UNUSED(msgLength); +#endif /* DISABLE_SANITY_CHECKS */ + + ASSERT_COND(p_Msg); + + memset(p_IpcReply, 0, (sizeof(uint8_t) * FM_PCD_MAX_REPLY_SIZE)); + *p_ReplyLength = 0; + + switch(p_IpcMsg->msgId) + { + case (FM_PCD_MASTER_IS_ALIVE): + *(uint8_t*)(p_IpcReply->replyBody) = 1; + p_IpcReply->error = E_OK; + *p_ReplyLength = sizeof(uint32_t) + sizeof(uint8_t); + break; + case (FM_PCD_MASTER_IS_ENABLED): + /* count partitions registrations */ + if(p_FmPcd->enabled) + p_FmPcd->numOfEnabledGuestPartitionsPcds++; + *(uint8_t*)(p_IpcReply->replyBody) = (uint8_t)p_FmPcd->enabled; + p_IpcReply->error = E_OK; + *p_ReplyLength = sizeof(uint32_t) + sizeof(uint8_t); + break; + case (FM_PCD_GUEST_DISABLE): + if(p_FmPcd->numOfEnabledGuestPartitionsPcds) + { + p_FmPcd->numOfEnabledGuestPartitionsPcds--; + p_IpcReply->error = E_OK; + } + else + { + REPORT_ERROR(MINOR, E_INVALID_STATE,("Trying to disable an unregistered partition")); + p_IpcReply->error = E_INVALID_STATE; + } + *p_ReplyLength = sizeof(uint32_t); + break; + case(FM_PCD_GET_COUNTER): + { + e_FmPcdCounters inCounter; + uint32_t outCounter; + + memcpy((uint8_t*)&inCounter, p_IpcMsg->msgBody, sizeof(uint32_t)); + outCounter = FM_PCD_GetCounter(h_FmPcd, inCounter); + memcpy(p_IpcReply->replyBody, (uint8_t*)&outCounter, sizeof(uint32_t)); + p_IpcReply->error = E_OK; + *p_ReplyLength = sizeof(uint32_t) + sizeof(uint32_t); + break; + } + case (FM_PCD_ALLOC_KG_SCHEMES): + { + t_FmPcdIpcKgSchemesParams ipcSchemesParams; + + memcpy((uint8_t*)&ipcSchemesParams, p_IpcMsg->msgBody, sizeof(t_FmPcdIpcKgSchemesParams)); + err = FmPcdKgAllocSchemes(h_FmPcd, + ipcSchemesParams.numOfSchemes, + ipcSchemesParams.guestId, + p_IpcReply->replyBody); + p_IpcReply->error = err; + *p_ReplyLength = sizeof(uint32_t) + ipcSchemesParams.numOfSchemes*sizeof(uint8_t); + break; + } + case (FM_PCD_FREE_KG_SCHEMES): + { + t_FmPcdIpcKgSchemesParams ipcSchemesParams; + + memcpy((uint8_t*)&ipcSchemesParams, p_IpcMsg->msgBody, sizeof(t_FmPcdIpcKgSchemesParams)); + err = FmPcdKgFreeSchemes(h_FmPcd, + ipcSchemesParams.numOfSchemes, + ipcSchemesParams.guestId, + ipcSchemesParams.schemesIds); + p_IpcReply->error = err; + *p_ReplyLength = sizeof(uint32_t); + break; + } + case (FM_PCD_ALLOC_KG_CLSPLAN): + { + t_FmPcdIpcKgClsPlanParams ipcKgClsPlanParams; + + memcpy((uint8_t*)&ipcKgClsPlanParams, p_IpcMsg->msgBody, sizeof(t_FmPcdIpcKgClsPlanParams)); + err = KgAllocClsPlanEntries(h_FmPcd, + ipcKgClsPlanParams.numOfClsPlanEntries, + ipcKgClsPlanParams.guestId, + p_IpcReply->replyBody); + p_IpcReply->error = err; + *p_ReplyLength = sizeof(uint32_t) + sizeof(uint8_t); + break; + } + case (FM_PCD_FREE_KG_CLSPLAN): + { + t_FmPcdIpcKgClsPlanParams ipcKgClsPlanParams; + + memcpy((uint8_t*)&ipcKgClsPlanParams, p_IpcMsg->msgBody, sizeof(t_FmPcdIpcKgClsPlanParams)); + KgFreeClsPlanEntries(h_FmPcd, + ipcKgClsPlanParams.numOfClsPlanEntries, + ipcKgClsPlanParams.guestId, + ipcKgClsPlanParams.clsPlanBase); + *p_ReplyLength = sizeof(uint32_t); + break; + } + case (FM_PCD_ALLOC_PROFILES): + { + t_FmPcdIpcPlcrAllocParams ipcPlcrAllocParams; + uint16_t profilesBase; + + memcpy((uint8_t*)&ipcPlcrAllocParams, p_IpcMsg->msgBody, sizeof(t_FmPcdIpcPlcrAllocParams)); + err = PlcrAllocProfiles(h_FmPcd, + ipcPlcrAllocParams.hardwarePortId, + ipcPlcrAllocParams.num, + &profilesBase); + memcpy(p_IpcReply->replyBody, (uint8_t*)&profilesBase, sizeof(uint16_t)); + p_IpcReply->error = err; + *p_ReplyLength = sizeof(uint32_t) + sizeof(uint16_t); + break; + } + case (FM_PCD_FREE_PROFILES): + { + t_FmPcdIpcPlcrAllocParams ipcPlcrAllocParams; + + memcpy((uint8_t*)&ipcPlcrAllocParams, p_IpcMsg->msgBody, sizeof(t_FmPcdIpcPlcrAllocParams)); + err = PlcrFreeProfiles(h_FmPcd, + ipcPlcrAllocParams.hardwarePortId, + ipcPlcrAllocParams.num, + ipcPlcrAllocParams.plcrProfilesBase); + p_IpcReply->error = err; + *p_ReplyLength = sizeof(uint32_t); + break; + } + case (FM_PCD_ALLOC_SHARED_PROFILES): + { + uint16_t numOfProfiles; + uint16_t profilesIds[FM_PCD_PLCR_NUM_ENTRIES]; + uint32_t profilesMask[FM_PCD_PLCR_NUM_ENTRIES/32]; + int i; + + memset(profilesMask, 0, FM_PCD_PLCR_NUM_ENTRIES/32 * sizeof(uint32_t)); + memcpy((uint8_t*)&numOfProfiles, p_IpcMsg->msgBody, sizeof(uint16_t)); + err = PlcrAllocSharedProfiles(h_FmPcd, + numOfProfiles, + profilesIds); + p_IpcReply->error = err; + + /* translate the allocated profile id's to a 32bit * 8regs mask */ + for(i = 0;i> (profilesIds[i] % 32)); + + memcpy(p_IpcReply->replyBody, (uint8_t*)&profilesMask, sizeof(profilesMask)); + *p_ReplyLength = sizeof(uint32_t) + sizeof(profilesMask); /* num-of-shared-profiles */ + break; + } + case (FM_PCD_FREE_SHARED_PROFILES): + { + t_FmPcdIpcSharedPlcrAllocParams ipcSharedPlcrAllocParams; + uint16_t profilesIds[FM_PCD_PLCR_NUM_ENTRIES]; + int i,j, index = 0; + uint32_t walking1Mask = 0x80000000; + + memset(profilesIds, 0, FM_PCD_PLCR_NUM_ENTRIES*sizeof(uint16_t)); + memcpy((uint8_t*)&ipcSharedPlcrAllocParams, p_IpcMsg->msgBody, sizeof(t_FmPcdIpcSharedPlcrAllocParams)); + for(i = 0; i>= 1; + } + walking1Mask = 0x80000000; + } + } + + PlcrFreeSharedProfiles(h_FmPcd, + ipcSharedPlcrAllocParams.num, + profilesIds); + break; + } + case(FM_PCD_GET_SW_PRS_OFFSET): + { + t_FmPcdIpcSwPrsLable ipcSwPrsLable; + uint32_t swPrsOffset; + + memcpy((uint8_t*)&ipcSwPrsLable, p_IpcMsg->msgBody, sizeof(t_FmPcdIpcSwPrsLable)); + swPrsOffset = + FmPcdGetSwPrsOffset(h_FmPcd, + (e_NetHeaderType)ipcSwPrsLable.enumHdr, + ipcSwPrsLable.indexPerHdr); + memcpy(p_IpcReply->replyBody, (uint8_t*)&swPrsOffset, sizeof(uint32_t)); + *p_ReplyLength = sizeof(uint32_t) + sizeof(uint32_t); + break; + } + case(FM_PCD_PRS_INC_PORT_STATS): + { + t_FmPcdIpcPrsIncludePort ipcPrsIncludePort; + + memcpy((uint8_t*)&ipcPrsIncludePort, p_IpcMsg->msgBody, sizeof(t_FmPcdIpcPrsIncludePort)); + PrsIncludePortInStatistics(h_FmPcd, + ipcPrsIncludePort.hardwarePortId, + ipcPrsIncludePort.include); + break; + } +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) + case(FM_PCD_DUMP_REGS): + if((err = FM_PCD_DumpRegs(h_FmPcd)) != E_OK) + REPORT_ERROR(MINOR, err, NO_MSG); + break; + case(FM_PCD_KG_DUMP_REGS): + if((err = FM_PCD_KgDumpRegs(h_FmPcd)) != E_OK) + REPORT_ERROR(MINOR, err, NO_MSG); + break; + case(FM_PCD_PLCR_DUMP_REGS): + if((err = FM_PCD_PlcrDumpRegs(h_FmPcd)) != E_OK) + REPORT_ERROR(MINOR, err, NO_MSG); + break; + case(FM_PCD_PLCR_PROFILE_DUMP_REGS): + { + t_Handle h_Profile; + memcpy((uint8_t*)&h_Profile, p_IpcMsg->msgBody, sizeof(t_Handle)); + if((err = FM_PCD_PlcrProfileDumpRegs(h_FmPcd, h_Profile)) != E_OK) + REPORT_ERROR(MINOR, err, NO_MSG); + break; + + } + case(FM_PCD_PRS_DUMP_REGS): + if((err = FM_PCD_PrsDumpRegs(h_FmPcd)) != E_OK) + REPORT_ERROR(MINOR, err, NO_MSG); + break; +#endif /* (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) */ + default: + *p_ReplyLength = 0; + RETURN_ERROR(MINOR, E_INVALID_SELECTION, ("command not found!!!")); + } + return E_OK; +} + +void FmPcdSetClsPlanGrpId(t_FmPcd *p_FmPcd, uint8_t netEnvId, uint8_t clsPlanGrpId) +{ + p_FmPcd->netEnvs[netEnvId].clsPlanGrpId = clsPlanGrpId; +} + +t_Error PcdGetClsPlanGrpParams(t_FmPcd *p_FmPcd, t_FmPcdKgInterModuleClsPlanGrpParams *p_GrpParams) +{ + uint8_t netEnvId = p_GrpParams->netEnvId; + int i, k, j; + + if(p_FmPcd->netEnvs[netEnvId].clsPlanGrpId != ILLEGAL_CLS_PLAN) + { + p_GrpParams->grpExists = TRUE; + p_GrpParams->clsPlanGrpId = p_FmPcd->netEnvs[netEnvId].clsPlanGrpId; + return E_OK; + } + + for (i=0; ((i < FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS) && + (p_FmPcd->netEnvs[netEnvId].units[i].hdrs[0].hdr != HEADER_TYPE_NONE)); i++) + { + for (k=0; ((k < FM_PCD_MAX_NUM_OF_INTERCHANGEABLE_HDRS) && + (p_FmPcd->netEnvs[netEnvId].units[i].hdrs[k].hdr != HEADER_TYPE_NONE)); k++) + { + /* if an option exists, add it to the opts list */ + if(p_FmPcd->netEnvs[netEnvId].units[i].hdrs[k].opt) + { + /* check if this option already exists, add if it doesn't */ + for(j = 0;jnumOfOptions;j++) + { + if(p_GrpParams->options[j] == p_FmPcd->netEnvs[netEnvId].units[i].hdrs[k].opt) + break; + } + p_GrpParams->optVectors[j] |= p_FmPcd->netEnvs[netEnvId].unitsVectors[i]; + if(j == p_GrpParams->numOfOptions) + { + p_GrpParams->options[p_GrpParams->numOfOptions] = p_FmPcd->netEnvs[netEnvId].units[i].hdrs[k].opt; + p_GrpParams->numOfOptions++; + } + } + } + } + + if(p_GrpParams->numOfOptions == 0) + { + if(p_FmPcd->p_FmPcdKg->emptyClsPlanGrpId != ILLEGAL_CLS_PLAN) + { + p_GrpParams->grpExists = TRUE; + p_GrpParams->clsPlanGrpId = p_FmPcd->p_FmPcdKg->emptyClsPlanGrpId; + } + } + + return E_OK; + +} + +t_Error PcdGetVectorForOpt(t_FmPcd *p_FmPcd, uint8_t netEnvId, protocolOpt_t opt, uint32_t *p_Vector) +{ + uint8_t j,k; + + *p_Vector = 0; + + for (j=0; ((j < FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS) && + (p_FmPcd->netEnvs[netEnvId].units[j].hdrs[0].hdr != HEADER_TYPE_NONE)); j++) + { + for (k=0; ((k < FM_PCD_MAX_NUM_OF_INTERCHANGEABLE_HDRS) && + (p_FmPcd->netEnvs[netEnvId].units[j].hdrs[k].hdr != HEADER_TYPE_NONE)); k++) + { + if (p_FmPcd->netEnvs[netEnvId].units[j].hdrs[k].opt == opt) + *p_Vector |= p_FmPcd->netEnvs[netEnvId].unitsVectors[j]; + } + } + + if (!*p_Vector) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Requested option was not defined for this Network Environment Characteristics module")); + else + return E_OK; +} + +t_Error PcdGetUnitsVector(t_FmPcd *p_FmPcd, t_NetEnvParams *p_Params) +{ + int i; + + p_Params->vector = 0; + for(i=0; inumOfDistinctionUnits ;i++) + { + if(p_FmPcd->netEnvs[p_Params->netEnvId].units[p_Params->unitIds[i]].hdrs[0].hdr == HEADER_TYPE_NONE) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Requested unit was not defined for this Network Environment Characteristics module")); + ASSERT_COND(p_FmPcd->netEnvs[p_Params->netEnvId].unitsVectors[p_Params->unitIds[i]]); + p_Params->vector |= p_FmPcd->netEnvs[p_Params->netEnvId].unitsVectors[p_Params->unitIds[i]]; + } + + return E_OK; +} + +bool PcdNetEnvIsUnitWithoutOpts(t_FmPcd *p_FmPcd, uint8_t netEnvId, uint32_t unitVector) +{ + int i=0, k; + /* check whether a given unit may be used by non-clsPlan users. */ + /* first, recognize the unit by its vector */ + while (p_FmPcd->netEnvs[netEnvId].units[i].hdrs[0].hdr != HEADER_TYPE_NONE) + { + if (p_FmPcd->netEnvs[netEnvId].unitsVectors[i] == unitVector) + { + for (k=0; + ((k < FM_PCD_MAX_NUM_OF_INTERCHANGEABLE_HDRS) && + (p_FmPcd->netEnvs[netEnvId].units[i].hdrs[k].hdr != HEADER_TYPE_NONE)); + k++) + /* check that no option exists */ + if((protocolOpt_t)p_FmPcd->netEnvs[netEnvId].units[i].hdrs[k].opt) + return FALSE; + break; + } + i++; + } + /* assert that a unit was found to mach the vector */ + ASSERT_COND(p_FmPcd->netEnvs[netEnvId].units[i].hdrs[0].hdr != HEADER_TYPE_NONE); + + return TRUE; +} +bool FmPcdNetEnvIsHdrExist(t_Handle h_FmPcd, uint8_t netEnvId, e_NetHeaderType hdr) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + int i, k; + + ASSERT_COND(p_FmPcd); + + for (i=0; ((i < FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS) && + (p_FmPcd->netEnvs[netEnvId].units[i].hdrs[0].hdr != HEADER_TYPE_NONE)); i++) + { + for (k=0; ((k < FM_PCD_MAX_NUM_OF_INTERCHANGEABLE_HDRS) && + (p_FmPcd->netEnvs[netEnvId].units[i].hdrs[k].hdr != HEADER_TYPE_NONE)); k++) + if (p_FmPcd->netEnvs[netEnvId].units[i].hdrs[k].hdr == hdr) + return TRUE; + } + for (i=0; ((i < FM_PCD_MAX_NUM_OF_PRIVATE_HDRS) && + (p_FmPcd->netEnvs[netEnvId].aliasHdrs[i].hdr != HEADER_TYPE_NONE)); i++) + { + if (p_FmPcd->netEnvs[netEnvId].aliasHdrs[i].hdr == hdr) + return TRUE; + } + + return FALSE; +} + +e_NetHeaderType FmPcdGetAliasHdr(t_FmPcd *p_FmPcd, uint8_t netEnvId, e_NetHeaderType hdr) +{ + int i; + + ASSERT_COND(p_FmPcd); + + for (i=0; (i < FM_PCD_MAX_NUM_OF_PRIVATE_HDRS) + && (p_FmPcd->netEnvs[netEnvId].aliasHdrs[i].hdr != HEADER_TYPE_NONE); i++) + { + if (p_FmPcd->netEnvs[netEnvId].aliasHdrs[i].hdr == hdr) + return p_FmPcd->netEnvs[netEnvId].aliasHdrs[i].aliasHdr; + } + + return HEADER_TYPE_NONE; +} + +void FmPcdPortRegister(t_Handle h_FmPcd, t_Handle h_FmPort, uint8_t hardwarePortId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint16_t swPortIndex = 0; + + HW_PORT_ID_TO_SW_PORT_INDX(swPortIndex, hardwarePortId); + + p_FmPcd->p_FmPcdPlcr->portsMapping[swPortIndex].h_FmPort = h_FmPort; +} + +uint32_t FmPcdGetLcv(t_Handle h_FmPcd, uint32_t netEnvId, uint8_t hdrNum) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + return p_FmPcd->netEnvs[netEnvId].lcvs[hdrNum]; +} + +uint32_t FmPcdGetMacsecLcv(t_Handle h_FmPcd, uint32_t netEnvId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + return p_FmPcd->netEnvs[netEnvId].macsecVector; +} + +void FmPcdIncNetEnvOwners(t_Handle h_FmPcd, uint8_t netEnvId) +{ + ((t_FmPcd*)h_FmPcd)->netEnvs[netEnvId].owners++; +} + +void FmPcdDecNetEnvOwners(t_Handle h_FmPcd, uint8_t netEnvId) +{ + ASSERT_COND(((t_FmPcd*)h_FmPcd)->netEnvs[netEnvId].owners); + ((t_FmPcd*)h_FmPcd)->netEnvs[netEnvId].owners--; +} + +uint32_t FmPcdLock(t_Handle h_FmPcd) +{ + return XX_LockIntrSpinlock(((t_FmPcd*)h_FmPcd)->h_Spinlock); +} + +void FmPcdUnlock(t_Handle h_FmPcd, uint32_t intFlags) +{ + XX_UnlockIntrSpinlock(((t_FmPcd*)h_FmPcd)->h_Spinlock, intFlags); +} + +t_Handle FmPcdGetHcHandle(t_Handle h_FmPcd) +{ + ASSERT_COND(h_FmPcd); + SANITY_CHECK_RETURN_VALUE(((t_FmPcd*)h_FmPcd)->h_Hc, E_INVALID_HANDLE, NULL); + return ((t_FmPcd*)h_FmPcd)->h_Hc; +} + +/**********************************************************************************************************/ +/* API */ +/**********************************************************************************************************/ + +t_Handle FM_PCD_Config(t_FmPcdParams *p_FmPcdParams) +{ + t_FmPcd *p_FmPcd = NULL; + t_FmPhysAddr physicalMuramBase; + uint8_t i; + + SANITY_CHECK_RETURN_VALUE(p_FmPcdParams, E_INVALID_HANDLE,NULL); + + p_FmPcd = (t_FmPcd *) XX_Malloc(sizeof(t_FmPcd)); + if (!p_FmPcd) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FM Pcd")); + return NULL; + } + memset(p_FmPcd, 0, sizeof(t_FmPcd)); + + p_FmPcd->p_FmPcdDriverParam = (t_FmPcdDriverParam *) XX_Malloc(sizeof(t_FmPcdDriverParam)); + if (!p_FmPcd->p_FmPcdDriverParam) + { + XX_Free(p_FmPcd); + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FM Pcd Driver Param")); + return NULL; + } + memset(p_FmPcd->p_FmPcdDriverParam, 0, sizeof(t_FmPcdDriverParam)); + + p_FmPcd->h_Fm = p_FmPcdParams->h_Fm; + p_FmPcd->guestId = FmGetGuestId(p_FmPcd->h_Fm); + p_FmPcd->h_FmMuram = FmGetMuramHandle(p_FmPcd->h_Fm); + FmGetPhysicalMuramBase(p_FmPcdParams->h_Fm, &physicalMuramBase); + p_FmPcd->physicalMuramBase = (uint64_t)((uint64_t)(&physicalMuramBase)->low | ((uint64_t)(&physicalMuramBase)->high << 32)); + + for(i = 0; inetEnvs[i].clsPlanGrpId = ILLEGAL_CLS_PLAN; + + if (p_FmPcdParams->useHostCommand) + { + t_FmHcParams hcParams; + + memset(&hcParams, 0, sizeof(hcParams)); + hcParams.h_Fm = p_FmPcd->h_Fm; + hcParams.h_FmPcd = (t_Handle)p_FmPcd; + memcpy((uint8_t*)&hcParams.params, (uint8_t*)&p_FmPcdParams->hc, sizeof(t_FmPcdHcParams)); + p_FmPcd->h_Hc = FmHcConfigAndInit(&hcParams); + if (!p_FmPcd->h_Hc) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FM Pcd HC")); + FM_PCD_Free(p_FmPcd); + return NULL; + } + } + else if(p_FmPcd->guestId != NCSW_MASTER_ID) + REPORT_ERROR(MAJOR, E_INVALID_STATE, ("No Host Command defined for a guest partition.")); + + if(p_FmPcdParams->kgSupport) + { + p_FmPcd->p_FmPcdKg = (t_FmPcdKg *)KgConfig(p_FmPcd, p_FmPcdParams); + if(!p_FmPcd->p_FmPcdKg) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FM Pcd Keygen")); + FM_PCD_Free(p_FmPcd); + return NULL; + } + } + + if(p_FmPcdParams->plcrSupport) + { + p_FmPcd->p_FmPcdPlcr = (t_FmPcdPlcr *)PlcrConfig(p_FmPcd, p_FmPcdParams); + if(!p_FmPcd->p_FmPcdPlcr) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FM Pcd Policer")); + FM_PCD_Free(p_FmPcd); + return NULL; + } + } + + if(p_FmPcdParams->prsSupport) + { + p_FmPcd->p_FmPcdPrs = (t_FmPcdPrs *)PrsConfig(p_FmPcd, p_FmPcdParams); + if(!p_FmPcd->p_FmPcdPrs) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FM Pcd Parser")); + FM_PCD_Free(p_FmPcd); + return NULL; + } + } + + p_FmPcd->h_Spinlock = XX_InitSpinlock(); + if (!p_FmPcd->h_Spinlock) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FM Pcd spinlock")); + FM_PCD_Free(p_FmPcd); + return NULL; + } + + p_FmPcd->numOfEnabledGuestPartitionsPcds = 0; + + p_FmPcd->f_Exception = p_FmPcdParams->f_Exception; + p_FmPcd->f_FmPcdIndexedException = p_FmPcdParams->f_ExceptionId; + p_FmPcd->h_App = p_FmPcdParams->h_App; + + return p_FmPcd; +} + +t_Error FM_PCD_Init(t_Handle h_FmPcd) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + t_Error err = E_OK; + t_FmPcdIpcMsg msg; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdDriverParam, E_INVALID_HANDLE); + + if(p_FmPcd->guestId != NCSW_MASTER_ID) + { + uint8_t isMasterAlive = 0; + t_FmPcdIpcReply reply; + uint32_t replyLength; + + memset(p_FmPcd->fmPcdIpcHandlerModuleName, 0, (sizeof(char)) * MODULE_NAME_SIZE); + if(Sprint (p_FmPcd->fmPcdIpcHandlerModuleName, "FM_PCD_%d_%d", FmGetId(p_FmPcd->h_Fm), NCSW_MASTER_ID) != 10) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Sprint failed")); + memset(p_FmPcd->fmPcdModuleName, 0, (sizeof(char)) * MODULE_NAME_SIZE); + if(Sprint (p_FmPcd->fmPcdModuleName, "FM_PCD_%d_%d",FmGetId(p_FmPcd->h_Fm), p_FmPcd->guestId) != (p_FmPcd->guestId<10 ? 10:11)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Sprint failed")); + + p_FmPcd->h_IpcSession = XX_IpcInitSession(p_FmPcd->fmPcdIpcHandlerModuleName, p_FmPcd->fmPcdModuleName); + if (p_FmPcd->h_IpcSession == NULL) + RETURN_ERROR(MAJOR, E_NOT_AVAILABLE, ("FM PCD Guest %d IPC session", p_FmPcd->guestId)); + + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + msg.msgId = FM_PCD_MASTER_IS_ALIVE; + msg.msgBody[0] = p_FmPcd->guestId; + blockingFlag = TRUE; + + do + { + replyLength = sizeof(uint32_t) + sizeof(isMasterAlive); + if ((err = XX_IpcSendMessage(p_FmPcd->h_IpcSession, + (uint8_t*)&msg, + sizeof(msg.msgId)+sizeof(p_FmPcd->guestId), + (uint8_t*)&reply, + &replyLength, + FmPcdIpcMsgCompletionCB, + h_FmPcd)) != E_OK) + REPORT_ERROR(MAJOR, err, NO_MSG); + while(blockingFlag) ; + if(replyLength != (sizeof(uint32_t) + sizeof(isMasterAlive))) + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + isMasterAlive = *(uint8_t*)(reply.replyBody); + } while (!isMasterAlive); + } + + CHECK_INIT_PARAMETERS(p_FmPcd, CheckFmPcdParameters); + + if(p_FmPcd->p_FmPcdKg) + { + err = KgInit(p_FmPcd); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + if(p_FmPcd->p_FmPcdPlcr) + { + err = PlcrInit(p_FmPcd); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + if(p_FmPcd->p_FmPcdPrs) + { + err = PrsInit(p_FmPcd); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + if(p_FmPcd->guestId == NCSW_MASTER_ID) + { + /* register to inter-core messaging mechanism */ + memset(p_FmPcd->fmPcdModuleName, 0, (sizeof(char)) * MODULE_NAME_SIZE); + if(Sprint (p_FmPcd->fmPcdModuleName, "FM_PCD_%d_%d",FmGetId(p_FmPcd->h_Fm),NCSW_MASTER_ID) != 10) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Sprint failed")); + err = XX_IpcRegisterMsgHandler(p_FmPcd->fmPcdModuleName, FmPcdHandleIpcMsgCB, p_FmPcd, FM_PCD_MAX_REPLY_SIZE); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + XX_Free(p_FmPcd->p_FmPcdDriverParam); + p_FmPcd->p_FmPcdDriverParam = NULL; + + FmRegisterPcd(p_FmPcd->h_Fm, p_FmPcd); + + return E_OK; +} + +t_Error FM_PCD_Free(t_Handle h_FmPcd) +{ + t_FmPcd *p_FmPcd =(t_FmPcd *)h_FmPcd; + t_Error err = E_OK; + + if(p_FmPcd->enabled) + FM_PCD_Disable(p_FmPcd); + + if (p_FmPcd->h_Spinlock) + XX_FreeSpinlock(p_FmPcd->h_Spinlock); + + if(p_FmPcd->p_FmPcdDriverParam) + { + XX_Free(p_FmPcd->p_FmPcdDriverParam); + p_FmPcd->p_FmPcdDriverParam = NULL; + } + if(p_FmPcd->p_FmPcdKg) + { + if((err = KgFree(p_FmPcd)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + XX_Free(p_FmPcd->p_FmPcdKg); + p_FmPcd->p_FmPcdKg = NULL; + } + + if(p_FmPcd->p_FmPcdPlcr) + { + if((err = PlcrFree(p_FmPcd)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + XX_Free(p_FmPcd->p_FmPcdPlcr); + p_FmPcd->p_FmPcdPlcr = NULL; + } + + if(p_FmPcd->p_FmPcdPrs) + { + if(p_FmPcd->guestId == NCSW_MASTER_ID) + PrsFree(p_FmPcd); + XX_Free(p_FmPcd->p_FmPcdPrs); + p_FmPcd->p_FmPcdPrs = NULL; + } + + if (p_FmPcd->h_Hc) + { + FmHcFree(p_FmPcd->h_Hc); + p_FmPcd->h_Hc = NULL; + } + + XX_IpcUnregisterMsgHandler(p_FmPcd->fmPcdModuleName); + + FmUnregisterPcd(p_FmPcd->h_Fm); + + XX_Free(p_FmPcd); + return E_OK; +} + +t_Error FM_PCD_Enable(t_Handle h_FmPcd) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + t_Error err = E_OK; + + SANITY_CHECK_RETURN_ERROR(h_FmPcd, E_INVALID_HANDLE); + + if(p_FmPcd->guestId == NCSW_MASTER_ID) + { + if(p_FmPcd->p_FmPcdKg) + KgEnable(p_FmPcd); + + if(p_FmPcd->p_FmPcdPlcr) + PlcrEnable(p_FmPcd); + + if(p_FmPcd->p_FmPcdPrs) + PrsEnable(p_FmPcd); + + p_FmPcd->enabled = TRUE; + } + else + { + uint8_t enabled; + t_FmPcdIpcMsg msg; + t_FmPcdIpcReply reply; + uint32_t replyLength; + + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + msg.msgId = FM_PCD_MASTER_IS_ENABLED; + replyLength = sizeof(uint32_t) + sizeof(enabled); + if ((err = XX_IpcSendMessage(p_FmPcd->h_IpcSession, + (uint8_t*)&msg, + sizeof(msg.msgId), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + if (replyLength != sizeof(uint32_t) + sizeof(enabled)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + p_FmPcd->enabled = (bool)!!(*(uint8_t*)(reply.replyBody)); + if (!p_FmPcd->enabled) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("FM-PCD master should be enabled first!")); + } + + return E_OK; +} + +t_Error FM_PCD_Disable(t_Handle h_FmPcd) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + t_Error err = E_OK; + t_FmPcdIpcMsg msg; + t_FmPcdIpcReply reply; + uint32_t replyLength; + + SANITY_CHECK_RETURN_ERROR(h_FmPcd, E_INVALID_HANDLE); + + if(p_FmPcd->guestId == NCSW_MASTER_ID) + { + if(p_FmPcd->numOfEnabledGuestPartitionsPcds != 0) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Trying to disable a master partition PCD while guest partitions are still enabled.")); + + if(p_FmPcd->p_FmPcdKg) + KgDisable(p_FmPcd); + + if(p_FmPcd->p_FmPcdPlcr) + PlcrDisable(p_FmPcd); + + if(p_FmPcd->p_FmPcdPrs) + PrsDisable(p_FmPcd); + + p_FmPcd->enabled = FALSE; + + return E_OK; + } + + memset(&msg, 0, sizeof(msg)); + msg.msgId = FM_PCD_GUEST_DISABLE; + memset(&reply, 0, sizeof(reply)); + replyLength = sizeof(uint32_t); + if ((err = XX_IpcSendMessage(p_FmPcd->h_IpcSession, + (uint8_t*)&msg, + sizeof(msg.msgId), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + if (replyLength != sizeof(uint32_t)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + + return (t_Error)(reply.error); +} + +t_Handle FM_PCD_SetNetEnvCharacteristics(t_Handle h_FmPcd, t_FmPcdNetEnvParams *p_NetEnvParams) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint32_t intFlags, specialUnits = 0; + uint8_t bitId = 0; + uint8_t i, j, k; + uint8_t netEnvCurrId; + uint8_t ipsecAhUnit = 0,ipsecEspUnit = 0; + bool ipsecAhExists = FALSE, ipsecEspExists = FALSE, shim1Selected = FALSE; + uint8_t hdrNum; + + SANITY_CHECK_RETURN_VALUE(h_FmPcd, E_INVALID_STATE, NULL); + SANITY_CHECK_RETURN_VALUE(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE, NULL); + + intFlags = FmPcdLock(p_FmPcd); + + /* find a new netEnv */ + for(i = 0;inetEnvs[i].used) + break; + + if(i== FM_MAX_NUM_OF_PORTS) + { + REPORT_ERROR(MAJOR, E_FULL,("No more than %d netEnv's allowed.", FM_MAX_NUM_OF_PORTS)); + FmPcdUnlock(p_FmPcd, intFlags); + return NULL; + } + + p_FmPcd->netEnvs[i].used = TRUE; + + if (!TRY_LOCK(NULL, &p_FmPcd->netEnvs[i].lock)) + { + FmPcdUnlock(p_FmPcd, intFlags); + return NULL; + } + FmPcdUnlock(p_FmPcd, intFlags); + + netEnvCurrId = (uint8_t)i; + + /* clear from previous use */ + memset(&p_FmPcd->netEnvs[netEnvCurrId].units, 0, FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS * sizeof(t_FmPcdIntDistinctionUnit)); + memset(&p_FmPcd->netEnvs[netEnvCurrId].aliasHdrs, 0, FM_PCD_MAX_NUM_OF_PRIVATE_HDRS * sizeof(t_FmPcdNetEnvAliases)); + memcpy(&p_FmPcd->netEnvs[netEnvCurrId].units, p_NetEnvParams->units, p_NetEnvParams->numOfDistinctionUnits*sizeof(t_FmPcdIntDistinctionUnit)); + p_FmPcd->netEnvs[netEnvCurrId].clsPlanGrpId = ILLEGAL_CLS_PLAN; + + /* check that header with opt is not interchanged with the same header */ + for (i=0; (i < FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS) + && (p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[0].hdr != HEADER_TYPE_NONE); i++) + { + for (k=0; (k < FM_PCD_MAX_NUM_OF_INTERCHANGEABLE_HDRS) + && (p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[k].hdr != HEADER_TYPE_NONE); k++) + { + /* if an option exists, check that other headers are not the same header + without option */ + if(p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[k].opt) + { + for (j=0; (j < FM_PCD_MAX_NUM_OF_INTERCHANGEABLE_HDRS) + && (p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[j].hdr != HEADER_TYPE_NONE); j++) + if((p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[j].hdr == p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[k].hdr) && + !p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[j].opt) + { + REPORT_ERROR(MINOR, E_FULL, ("Illegal unit - header with opt may not be interchangeable with the same header without opt")); + RELEASE_LOCK(p_FmPcd->netEnvs[netEnvCurrId].lock); + return NULL; + } + } + } + } + + /* IPSEC_AH and IPSEC_SPI can't be 2 units, */ + /* check that header with opt is not interchanged with the same header */ + for(i=0; (i < FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS) + && (p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[0].hdr != HEADER_TYPE_NONE); i++) + { + for(k=0; (k < FM_PCD_MAX_NUM_OF_INTERCHANGEABLE_HDRS) + && (p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[k].hdr != HEADER_TYPE_NONE); k++) + { + /* Some headers pairs may not be defined on different units as the parser + doesn't distinguish */ + if(p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[k].hdr == HEADER_TYPE_IPSEC_AH) + { + if (ipsecEspExists && (ipsecEspUnit != i)) + { + REPORT_ERROR(MINOR, E_INVALID_STATE, ("HEADER_TYPE_IPSEC_AH and HEADER_TYPE_IPSEC_ESP may not be defined in separate units")); + RELEASE_LOCK(p_FmPcd->netEnvs[netEnvCurrId].lock); + return NULL; + } + else + { + ipsecAhUnit = i; + ipsecAhExists = TRUE; + } + } + if(p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[k].hdr == HEADER_TYPE_IPSEC_ESP) + { + if (ipsecAhExists && (ipsecAhUnit != i)) + { + REPORT_ERROR(MINOR, E_INVALID_STATE, ("HEADER_TYPE_IPSEC_AH and HEADER_TYPE_IPSEC_ESP may not be defined in separate units")); + RELEASE_LOCK(p_FmPcd->netEnvs[netEnvCurrId].lock); + return NULL; + } + else + { + ipsecEspUnit = i; + ipsecEspExists = TRUE; + } + } + if(p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[k].hdr == HEADER_TYPE_UDP_ENCAP_ESP) + { + /* TODO - general coding. choose the free shim header */ + p_FmPcd->netEnvs[netEnvCurrId].aliasHdrs[specialUnits].hdr = HEADER_TYPE_UDP_ENCAP_ESP; + p_FmPcd->netEnvs[netEnvCurrId].aliasHdrs[specialUnits++].aliasHdr = HEADER_TYPE_USER_DEFINED_SHIM1; + p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[k].hdr = HEADER_TYPE_USER_DEFINED_SHIM1; + p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[k].opt = 0; + } + } + } + + /* if private header (shim), check that no other headers specified */ + for (i=0; (i < FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS) + && (p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[0].hdr != HEADER_TYPE_NONE); i++) + { + if(IS_PRIVATE_HEADER(p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[0].hdr)) + if(p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[1].hdr != HEADER_TYPE_NONE) + { + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("SHIM header may not be interchanged with other headers")); + RELEASE_LOCK(p_FmPcd->netEnvs[netEnvCurrId].lock); + return NULL; + } + } + + for(i=0; inumOfDistinctionUnits;i++) + { + if (IS_PRIVATE_HEADER(p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[0].hdr)) + switch(p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[0].hdr) + { + case(HEADER_TYPE_USER_DEFINED_SHIM1): + if (shim1Selected) + { + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("SHIM header cannot be selected with UDP_IPSEC_ESP")); + RELEASE_LOCK(p_FmPcd->netEnvs[netEnvCurrId].lock); + return NULL; + } + shim1Selected = TRUE; + p_FmPcd->netEnvs[netEnvCurrId].unitsVectors[i] = 0x00000001; + break; + case(HEADER_TYPE_USER_DEFINED_SHIM2): + p_FmPcd->netEnvs[netEnvCurrId].unitsVectors[i] = 0x00000002; + break; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Requested SHIM not supported")); + } + else + { + p_FmPcd->netEnvs[netEnvCurrId].unitsVectors[i] = (uint32_t)(0x80000000 >> bitId++); + + if(IS_SPECIAL_HEADER(p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[0].hdr)) + p_FmPcd->netEnvs[netEnvCurrId].macsecVector = p_FmPcd->netEnvs[netEnvCurrId].unitsVectors[i]; + } + } + + /* define a set of hardware parser LCV's according to the defined netenv */ + + /* set an array of LCV's for each header in the netEnv */ + for (i=0; (i < FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS) + && (p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[0].hdr != HEADER_TYPE_NONE); i++) + { + /* private headers have no LCV in the hard parser */ + if (!IS_PRIVATE_HEADER(p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[0].hdr)) + { + for (k=0; (k < FM_PCD_MAX_NUM_OF_INTERCHANGEABLE_HDRS) + && (p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[k].hdr != HEADER_TYPE_NONE); k++) + { + GET_PRS_HDR_NUM(hdrNum, p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[k].hdr); + if ((hdrNum == ILLEGAL_HDR_NUM) || (hdrNum == NO_HDR_NUM)) + { + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, NO_MSG); + RELEASE_LOCK(p_FmPcd->netEnvs[netEnvCurrId].lock); + return NULL; + } + p_FmPcd->netEnvs[netEnvCurrId].lcvs[hdrNum] |= p_FmPcd->netEnvs[netEnvCurrId].unitsVectors[i]; + } + } + } + + RELEASE_LOCK(p_FmPcd->netEnvs[netEnvCurrId].lock); + + return UINT_TO_PTR((uint64_t)netEnvCurrId+1); +} + +t_Error FM_PCD_DeleteNetEnvCharacteristics(t_Handle h_FmPcd, t_Handle h_NetEnv) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint8_t netEnvId = (uint8_t)(PTR_TO_UINT(h_NetEnv)-1); + + SANITY_CHECK_RETURN_ERROR(h_FmPcd, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE); + + if (!TRY_LOCK(p_FmPcd->h_Spinlock, &p_FmPcd->netEnvs[netEnvId].lock)) + return ERROR_CODE(E_BUSY); + /* check that no port is bound to this netEnv */ + if(p_FmPcd->netEnvs[netEnvId].owners) + { + RELEASE_LOCK(p_FmPcd->netEnvs[netEnvId].lock); + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Trying to delete a netEnv that has ports/schemes/trees/clsPlanGrps bound to")); + } + p_FmPcd->netEnvs[netEnvId].used= FALSE; + p_FmPcd->netEnvs[netEnvId].clsPlanGrpId = ILLEGAL_CLS_PLAN; + + memset(p_FmPcd->netEnvs[netEnvId].units, 0, sizeof(t_FmPcdIntDistinctionUnit)*FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS); + memset(p_FmPcd->netEnvs[netEnvId].unitsVectors, 0, sizeof(uint32_t)*FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS); + memset(p_FmPcd->netEnvs[netEnvId].lcvs, 0, sizeof(uint32_t)*FM_PCD_PRS_NUM_OF_HDRS); + + RELEASE_LOCK(p_FmPcd->netEnvs[netEnvId].lock); + + return E_OK; +} + +void FM_PCD_HcTxConf(t_Handle h_FmPcd, t_DpaaFD *p_Fd) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + SANITY_CHECK_RETURN(h_FmPcd, E_INVALID_STATE); + + FmHcTxConf(p_FmPcd->h_Hc, p_Fd); +} + +uint32_t FM_PCD_GetCounter(t_Handle h_FmPcd, e_FmPcdCounters counter) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint32_t replyLength, outCounter = 0; + t_FmPcdIpcMsg msg; + t_Error err; + t_FmPcdIpcReply reply; + + SANITY_CHECK_RETURN_VALUE(h_FmPcd, E_INVALID_HANDLE, 0); + SANITY_CHECK_RETURN_VALUE(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE, 0); + + if(p_FmPcd->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + msg.msgId = FM_PCD_GET_COUNTER; + memcpy(msg.msgBody, (uint8_t *)&counter, sizeof(uint32_t)); + replyLength = sizeof(uint32_t) + sizeof(uint32_t); + if ((err = XX_IpcSendMessage(p_FmPcd->h_IpcSession, + (uint8_t*)&msg, + sizeof(msg.msgId) +sizeof(uint32_t), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + if (replyLength != sizeof(uint32_t) + sizeof(uint32_t)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + + memcpy((uint8_t*)&outCounter, reply.replyBody, sizeof(uint32_t)); + return outCounter; + } + + switch(counter) + { + case(e_FM_PCD_KG_COUNTERS_TOTAL): + if(!p_FmPcd->p_FmPcdKg) + { + REPORT_ERROR(MINOR, E_INVALID_STATE, ("Can't ask for this counters")); + return 0; + } + break; + case(e_FM_PCD_PLCR_COUNTERS_YELLOW): + case(e_FM_PCD_PLCR_COUNTERS_RED): + case(e_FM_PCD_PLCR_COUNTERS_RECOLORED_TO_RED): + case(e_FM_PCD_PLCR_COUNTERS_RECOLORED_TO_YELLOW): + case(e_FM_PCD_PLCR_COUNTERS_TOTAL): + case(e_FM_PCD_PLCR_COUNTERS_LENGTH_MISMATCH): + if(!p_FmPcd->p_FmPcdPlcr) + { + REPORT_ERROR(MINOR, E_INVALID_STATE, ("Can't ask for this counters")); + return 0; + } + /* check that counters are enabled */ + if(!(GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_gcr) & FM_PCD_PLCR_GCR_STEN)) + { + REPORT_ERROR(MINOR, E_INVALID_STATE, ("Requested counter was not enabled")); + return 0; + } + break; + case(e_FM_PCD_PRS_COUNTERS_PARSE_DISPATCH): + case(e_FM_PCD_PRS_COUNTERS_L2_PARSE_RESULT_RETURNED): + case(e_FM_PCD_PRS_COUNTERS_L3_PARSE_RESULT_RETURNED): + case(e_FM_PCD_PRS_COUNTERS_L4_PARSE_RESULT_RETURNED): + case(e_FM_PCD_PRS_COUNTERS_SHIM_PARSE_RESULT_RETURNED): + case(e_FM_PCD_PRS_COUNTERS_L2_PARSE_RESULT_RETURNED_WITH_ERR): + case(e_FM_PCD_PRS_COUNTERS_L3_PARSE_RESULT_RETURNED_WITH_ERR): + case(e_FM_PCD_PRS_COUNTERS_L4_PARSE_RESULT_RETURNED_WITH_ERR): + case(e_FM_PCD_PRS_COUNTERS_SHIM_PARSE_RESULT_RETURNED_WITH_ERR): + case(e_FM_PCD_PRS_COUNTERS_SOFT_PRS_CYCLES): + case(e_FM_PCD_PRS_COUNTERS_SOFT_PRS_STALL_CYCLES): + case(e_FM_PCD_PRS_COUNTERS_HARD_PRS_CYCLE_INCL_STALL_CYCLES): + case(e_FM_PCD_PRS_COUNTERS_MURAM_READ_CYCLES): + case(e_FM_PCD_PRS_COUNTERS_MURAM_READ_STALL_CYCLES): + case(e_FM_PCD_PRS_COUNTERS_MURAM_WRITE_CYCLES): + case(e_FM_PCD_PRS_COUNTERS_MURAM_WRITE_STALL_CYCLES): + case(e_FM_PCD_PRS_COUNTERS_FPM_COMMAND_STALL_CYCLES): + if(!p_FmPcd->p_FmPcdPrs) + { + REPORT_ERROR(MINOR, E_INVALID_STATE, ("Can't ask for this counters")); + return 0; + } + break; + default: + REPORT_ERROR(MINOR, E_INVALID_STATE, ("Unsupported type of counter")); + return 0; + } + switch(counter) + { + case(e_FM_PCD_PRS_COUNTERS_PARSE_DISPATCH): + return GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->pds); + case(e_FM_PCD_PRS_COUNTERS_L2_PARSE_RESULT_RETURNED): + return GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->l2rrs); + case(e_FM_PCD_PRS_COUNTERS_L3_PARSE_RESULT_RETURNED): + return GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->l3rrs); + case(e_FM_PCD_PRS_COUNTERS_L4_PARSE_RESULT_RETURNED): + return GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->l4rrs); + case(e_FM_PCD_PRS_COUNTERS_SHIM_PARSE_RESULT_RETURNED): + return GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->srrs); + case(e_FM_PCD_PRS_COUNTERS_L2_PARSE_RESULT_RETURNED_WITH_ERR): + return GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->l2rres); + case(e_FM_PCD_PRS_COUNTERS_L3_PARSE_RESULT_RETURNED_WITH_ERR): + return GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->l3rres); + case(e_FM_PCD_PRS_COUNTERS_L4_PARSE_RESULT_RETURNED_WITH_ERR): + return GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->l4rres); + case(e_FM_PCD_PRS_COUNTERS_SHIM_PARSE_RESULT_RETURNED_WITH_ERR): + return GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->srres); + case(e_FM_PCD_PRS_COUNTERS_SOFT_PRS_CYCLES): + return GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->spcs); + case(e_FM_PCD_PRS_COUNTERS_SOFT_PRS_STALL_CYCLES): + return GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->spscs); + case(e_FM_PCD_PRS_COUNTERS_HARD_PRS_CYCLE_INCL_STALL_CYCLES): + return GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->hxscs); + case(e_FM_PCD_PRS_COUNTERS_MURAM_READ_CYCLES): + return GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->mrcs); + case(e_FM_PCD_PRS_COUNTERS_MURAM_READ_STALL_CYCLES): + return GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->mrscs); + case(e_FM_PCD_PRS_COUNTERS_MURAM_WRITE_CYCLES): + return GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->mwcs); + case(e_FM_PCD_PRS_COUNTERS_MURAM_WRITE_STALL_CYCLES): + return GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->mwscs); + case(e_FM_PCD_PRS_COUNTERS_FPM_COMMAND_STALL_CYCLES): + return GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->fcscs); + case(e_FM_PCD_KG_COUNTERS_TOTAL): + return GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgtpc); + + /*Policer statictics*/ + case(e_FM_PCD_PLCR_COUNTERS_YELLOW): + return GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_ypcnt); + case(e_FM_PCD_PLCR_COUNTERS_RED): + return GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_rpcnt); + case(e_FM_PCD_PLCR_COUNTERS_RECOLORED_TO_RED): + return GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_rrpcnt); + case(e_FM_PCD_PLCR_COUNTERS_RECOLORED_TO_YELLOW): + return GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_rypcnt); + case(e_FM_PCD_PLCR_COUNTERS_TOTAL): + return GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_tpcnt); + case(e_FM_PCD_PLCR_COUNTERS_LENGTH_MISMATCH): + return GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_flmcnt); + + default: + REPORT_ERROR(MINOR, E_INVALID_STATE, ("Unsupported type of counter")); + return 0; + } +} + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) +t_Error FM_PCD_DumpRegs(t_Handle h_FmPcd) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + t_FmPcdIpcMsg msg; + + DECLARE_DUMP; + + SANITY_CHECK_RETURN_ERROR(h_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE); + + if(p_FmPcd->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + msg.msgId = FM_PCD_DUMP_REGS; + return XX_IpcSendMessage(p_FmPcd->h_IpcSession, + (uint8_t*)&msg, + sizeof(msg.msgId), + NULL, + NULL, + NULL, + NULL); + } + if (p_FmPcd->p_FmPcdKg) + return FM_PCD_KgDumpRegs(h_FmPcd); + if (p_FmPcd->p_FmPcdPlcr) + return FM_PCD_PlcrDumpRegs(h_FmPcd); + if (p_FmPcd->p_FmPcdPrs) + return FM_PCD_PrsDumpRegs(h_FmPcd); + return E_OK; +} + +t_Error FM_PCD_HcDumpRegs(t_Handle h_FmPcd) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + DECLARE_DUMP; + + SANITY_CHECK_RETURN_ERROR(h_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->h_Hc, E_INVALID_STATE); + + return FmHcDumpRegs(p_FmPcd->h_Hc); +} + +#endif /* (defined(DEBUG_ERRORS) && ... */ + +t_Error FM_PCD_ConfigException(t_Handle h_FmPcd, e_FmPcdExceptions exception, bool enable) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint32_t bitMask = 0; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + + if(p_FmPcd->guestId != NCSW_MASTER_ID) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("FM_PCD_ConfigException - guest mode!")); + + GET_FM_PCD_EXCEPTION_FLAG(bitMask, exception); + if(bitMask) + { + if (enable) + p_FmPcd->exceptions |= bitMask; + else + p_FmPcd->exceptions &= ~bitMask; + } + else + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Undefined exception")); + + return E_OK; +} + +t_Error FM_PCD_SetException(t_Handle h_FmPcd, e_FmPcdExceptions exception, bool enable) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint32_t bitMask = 0, tmpReg; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE); + + if(p_FmPcd->guestId != NCSW_MASTER_ID) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("FM_PCD_SetException - guest mode!")); + + GET_FM_PCD_EXCEPTION_FLAG(bitMask, exception); + + if(bitMask) + { + if (enable) + p_FmPcd->exceptions |= bitMask; + else + p_FmPcd->exceptions &= ~bitMask; + + switch(exception) + { + case(e_FM_PCD_KG_EXCEPTION_DOUBLE_ECC): + case(e_FM_PCD_KG_EXCEPTION_KEYSIZE_OVERFLOW): + if(!p_FmPcd->p_FmPcdKg) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Can't ask for this interrupt - keygen is not working")); + break; + case(e_FM_PCD_PLCR_EXCEPTION_DOUBLE_ECC): + case(e_FM_PCD_PLCR_EXCEPTION_INIT_ENTRY_ERROR): + case(e_FM_PCD_PLCR_EXCEPTION_PRAM_SELF_INIT_COMPLETE): + case(e_FM_PCD_PLCR_EXCEPTION_ATOMIC_ACTION_COMPLETE): + if(!p_FmPcd->p_FmPcdPlcr) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Can't ask for this interrupt - policer is not working")); + break; + case(e_FM_PCD_PRS_EXCEPTION_DOUBLE_ECC): + case(e_FM_PCD_PRS_EXCEPTION_SINGLE_ECC): + if(!p_FmPcd->p_FmPcdPrs) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Can't ask for this interrupt - parser is not working")); + break; + default: + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Unsupported exception")); + + } + + switch(exception) + { + case(e_FM_PCD_KG_EXCEPTION_DOUBLE_ECC): + tmpReg = GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgeeer); + if(enable) + tmpReg |= FM_PCD_KG_DOUBLE_ECC; + else + tmpReg &= ~FM_PCD_KG_DOUBLE_ECC; + WRITE_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgeeer, tmpReg); + break; + case(e_FM_PCD_KG_EXCEPTION_KEYSIZE_OVERFLOW): + tmpReg = GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgeeer); + if(enable) + tmpReg |= FM_PCD_KG_KEYSIZE_OVERFLOW; + else + tmpReg &= ~FM_PCD_KG_KEYSIZE_OVERFLOW; + WRITE_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgeeer, tmpReg); + break; + case(e_FM_PCD_PRS_EXCEPTION_DOUBLE_ECC): + tmpReg = GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->perer); + if(enable) + tmpReg |= FM_PCD_PRS_DOUBLE_ECC; + else + tmpReg &= ~FM_PCD_PRS_DOUBLE_ECC; + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->perer, tmpReg); + break; + case(e_FM_PCD_PRS_EXCEPTION_SINGLE_ECC): + tmpReg = GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->pever); + if(enable) + tmpReg |= FM_PCD_PRS_SINGLE_ECC; + else + tmpReg &= ~FM_PCD_PRS_SINGLE_ECC; + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->pever, tmpReg); + break; + case(e_FM_PCD_PLCR_EXCEPTION_DOUBLE_ECC): + tmpReg = GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_eier); + if(enable) + tmpReg |= FM_PCD_PLCR_DOUBLE_ECC; + else + tmpReg &= ~FM_PCD_PLCR_DOUBLE_ECC; + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_eier, tmpReg); + break; + case(e_FM_PCD_PLCR_EXCEPTION_INIT_ENTRY_ERROR): + tmpReg = GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_eier); + if(enable) + tmpReg |= FM_PCD_PLCR_INIT_ENTRY_ERROR; + else + tmpReg &= ~FM_PCD_PLCR_INIT_ENTRY_ERROR; + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_eier, tmpReg); + break; + case(e_FM_PCD_PLCR_EXCEPTION_PRAM_SELF_INIT_COMPLETE): + tmpReg = GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_ier); + if(enable) + tmpReg |= FM_PCD_PLCR_PRAM_SELF_INIT_COMPLETE; + else + tmpReg &= ~FM_PCD_PLCR_PRAM_SELF_INIT_COMPLETE; + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_ier, tmpReg); + break; + case(e_FM_PCD_PLCR_EXCEPTION_ATOMIC_ACTION_COMPLETE): + tmpReg = GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_ier); + if(enable) + tmpReg |= FM_PCD_PLCR_ATOMIC_ACTION_COMPLETE; + else + tmpReg &= ~FM_PCD_PLCR_ATOMIC_ACTION_COMPLETE; + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_ier, tmpReg); + break; + default: + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Unsupported exception")); + } + /* for ECC exceptions driver automatically enables ECC mechanism, if disabled. + Driver may disable them automatically, depending on driver's status */ + if(enable && ( (exception == e_FM_PCD_KG_EXCEPTION_DOUBLE_ECC) | + (exception == e_FM_PCD_PLCR_EXCEPTION_DOUBLE_ECC) | + (exception == e_FM_PCD_PRS_EXCEPTION_DOUBLE_ECC) | + (exception == e_FM_PCD_PRS_EXCEPTION_SINGLE_ECC))) + FmEnableRamsEcc(p_FmPcd->h_Fm); + if(!enable && ( (exception == e_FM_PCD_KG_EXCEPTION_DOUBLE_ECC) | + (exception == e_FM_PCD_PLCR_EXCEPTION_DOUBLE_ECC) | + (exception == e_FM_PCD_PRS_EXCEPTION_DOUBLE_ECC) | + (exception == e_FM_PCD_PRS_EXCEPTION_SINGLE_ECC))) + FmDisableRamsEcc(p_FmPcd->h_Fm); + } + else + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Undefined exception")); + + return E_OK; +} + +t_Error FM_PCD_ForceIntr (t_Handle h_FmPcd, e_FmPcdExceptions exception) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + SANITY_CHECK_RETURN_ERROR(h_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE); + + if(p_FmPcd->guestId != NCSW_MASTER_ID) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("FM_PCD_ForceIntr - guest mode!")); + + switch(exception) + { + case(e_FM_PCD_KG_EXCEPTION_DOUBLE_ECC): + case(e_FM_PCD_KG_EXCEPTION_KEYSIZE_OVERFLOW): + if(!p_FmPcd->p_FmPcdKg) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Can't ask for this interrupt - keygen is not working")); + break; + case(e_FM_PCD_PLCR_EXCEPTION_DOUBLE_ECC): + case(e_FM_PCD_PLCR_EXCEPTION_INIT_ENTRY_ERROR): + case(e_FM_PCD_PLCR_EXCEPTION_PRAM_SELF_INIT_COMPLETE): + case(e_FM_PCD_PLCR_EXCEPTION_ATOMIC_ACTION_COMPLETE): + if(!p_FmPcd->p_FmPcdPlcr) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Can't ask for this interrupt - policer is not working")); + break; + case(e_FM_PCD_PRS_EXCEPTION_DOUBLE_ECC): + case(e_FM_PCD_PRS_EXCEPTION_SINGLE_ECC): + if(!p_FmPcd->p_FmPcdPrs) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Can't ask for this interrupt -parsrer is not working")); + break; + default: + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Invalid interrupt requested")); + + } + switch(exception) + { + case e_FM_PCD_PRS_EXCEPTION_DOUBLE_ECC: + if (!(p_FmPcd->exceptions & FM_PCD_EX_PRS_DOUBLE_ECC)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("The selected exception is masked")); + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->perfr, FM_PCD_PRS_DOUBLE_ECC); + break; + case e_FM_PCD_PRS_EXCEPTION_SINGLE_ECC: + if (!(p_FmPcd->exceptions & FM_PCD_EX_PRS_SINGLE_ECC)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("The selected exception is masked")); + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->pevfr, FM_PCD_PRS_SINGLE_ECC); + break; + case e_FM_PCD_KG_EXCEPTION_DOUBLE_ECC: + if (!(p_FmPcd->exceptions & FM_PCD_EX_KG_DOUBLE_ECC)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("The selected exception is masked")); + WRITE_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgfeer, FM_PCD_KG_DOUBLE_ECC); + break; + case e_FM_PCD_KG_EXCEPTION_KEYSIZE_OVERFLOW: + if (!(p_FmPcd->exceptions & FM_PCD_EX_KG_KEYSIZE_OVERFLOW)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("The selected exception is masked")); + WRITE_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgfeer, FM_PCD_KG_KEYSIZE_OVERFLOW); + break; + case e_FM_PCD_PLCR_EXCEPTION_DOUBLE_ECC: + if (!(p_FmPcd->exceptions & FM_PCD_EX_PLCR_DOUBLE_ECC)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("The selected exception is masked")); + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_eifr, FM_PCD_PLCR_DOUBLE_ECC); + break; + case e_FM_PCD_PLCR_EXCEPTION_INIT_ENTRY_ERROR: + if (!(p_FmPcd->exceptions & FM_PCD_EX_PLCR_INIT_ENTRY_ERROR)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("The selected exception is masked")); + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_eifr, FM_PCD_PLCR_INIT_ENTRY_ERROR); + break; + case e_FM_PCD_PLCR_EXCEPTION_PRAM_SELF_INIT_COMPLETE: + if (!(p_FmPcd->exceptions & FM_PCD_EX_PLCR_PRAM_SELF_INIT_COMPLETE)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("The selected exception is masked")); + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_ifr, FM_PCD_PLCR_PRAM_SELF_INIT_COMPLETE); + break; + case e_FM_PCD_PLCR_EXCEPTION_ATOMIC_ACTION_COMPLETE: + if (!(p_FmPcd->exceptions & FM_PCD_EX_PLCR_ATOMIC_ACTION_COMPLETE)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("The selected exception is masked")); + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_ifr, FM_PCD_PLCR_ATOMIC_ACTION_COMPLETE); + break; + default: + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("The selected exception may not be forced")); + } + + return E_OK; +} + + +t_Error FM_PCD_ModifyCounter(t_Handle h_FmPcd, e_FmPcdCounters counter, uint32_t value) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + SANITY_CHECK_RETURN_ERROR(h_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE); + + if(p_FmPcd->guestId != NCSW_MASTER_ID) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("FM_PCD_ModifyCounter - guest mode!")); + + switch(counter) + { + case(e_FM_PCD_KG_COUNTERS_TOTAL): + if(!p_FmPcd->p_FmPcdKg) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Can't ask for this counters - keygen is not working")); + break; + case(e_FM_PCD_PLCR_COUNTERS_YELLOW): + case(e_FM_PCD_PLCR_COUNTERS_RED): + case(e_FM_PCD_PLCR_COUNTERS_RECOLORED_TO_RED): + case(e_FM_PCD_PLCR_COUNTERS_RECOLORED_TO_YELLOW): + case(e_FM_PCD_PLCR_COUNTERS_TOTAL): + case(e_FM_PCD_PLCR_COUNTERS_LENGTH_MISMATCH): + if(!p_FmPcd->p_FmPcdPlcr) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Can't ask for this counters - Policer is not working")); + if(!(GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_gcr) & FM_PCD_PLCR_GCR_STEN)) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Requested counter was not enabled")); + break; + case(e_FM_PCD_PRS_COUNTERS_PARSE_DISPATCH): + case(e_FM_PCD_PRS_COUNTERS_L2_PARSE_RESULT_RETURNED): + case(e_FM_PCD_PRS_COUNTERS_L3_PARSE_RESULT_RETURNED): + case(e_FM_PCD_PRS_COUNTERS_L4_PARSE_RESULT_RETURNED): + case(e_FM_PCD_PRS_COUNTERS_SHIM_PARSE_RESULT_RETURNED): + case(e_FM_PCD_PRS_COUNTERS_L2_PARSE_RESULT_RETURNED_WITH_ERR): + case(e_FM_PCD_PRS_COUNTERS_L3_PARSE_RESULT_RETURNED_WITH_ERR): + case(e_FM_PCD_PRS_COUNTERS_L4_PARSE_RESULT_RETURNED_WITH_ERR): + case(e_FM_PCD_PRS_COUNTERS_SHIM_PARSE_RESULT_RETURNED_WITH_ERR): + case(e_FM_PCD_PRS_COUNTERS_SOFT_PRS_CYCLES): + case(e_FM_PCD_PRS_COUNTERS_SOFT_PRS_STALL_CYCLES): + case(e_FM_PCD_PRS_COUNTERS_HARD_PRS_CYCLE_INCL_STALL_CYCLES): + case(e_FM_PCD_PRS_COUNTERS_MURAM_READ_CYCLES): + case(e_FM_PCD_PRS_COUNTERS_MURAM_READ_STALL_CYCLES): + case(e_FM_PCD_PRS_COUNTERS_MURAM_WRITE_CYCLES): + case(e_FM_PCD_PRS_COUNTERS_MURAM_WRITE_STALL_CYCLES): + case(e_FM_PCD_PRS_COUNTERS_FPM_COMMAND_STALL_CYCLES): + if(!p_FmPcd->p_FmPcdPrs) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Unsupported type of counter")); + break; + default: + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Unsupported type of counter")); + } + switch(counter) + { + case(e_FM_PCD_PRS_COUNTERS_PARSE_DISPATCH): + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->pds, value); + break; + case(e_FM_PCD_PRS_COUNTERS_L2_PARSE_RESULT_RETURNED): + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->l2rrs, value); + break; + case(e_FM_PCD_PRS_COUNTERS_L3_PARSE_RESULT_RETURNED): + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->l3rrs, value); + break; + case(e_FM_PCD_PRS_COUNTERS_L4_PARSE_RESULT_RETURNED): + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->l4rrs, value); + break; + case(e_FM_PCD_PRS_COUNTERS_SHIM_PARSE_RESULT_RETURNED): + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->srrs, value); + break; + case(e_FM_PCD_PRS_COUNTERS_L2_PARSE_RESULT_RETURNED_WITH_ERR): + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->l2rres, value); + break; + case(e_FM_PCD_PRS_COUNTERS_L3_PARSE_RESULT_RETURNED_WITH_ERR): + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->l3rres, value); + break; + case(e_FM_PCD_PRS_COUNTERS_L4_PARSE_RESULT_RETURNED_WITH_ERR): + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->l4rres, value); + break; + case(e_FM_PCD_PRS_COUNTERS_SHIM_PARSE_RESULT_RETURNED_WITH_ERR): + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->srres, value); + break; + case(e_FM_PCD_PRS_COUNTERS_SOFT_PRS_CYCLES): + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->spcs, value); + break; + case(e_FM_PCD_PRS_COUNTERS_SOFT_PRS_STALL_CYCLES): + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->spscs, value); + break; + case(e_FM_PCD_PRS_COUNTERS_HARD_PRS_CYCLE_INCL_STALL_CYCLES): + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->hxscs, value); + break; + case(e_FM_PCD_PRS_COUNTERS_MURAM_READ_CYCLES): + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->mrcs, value); + break; + case(e_FM_PCD_PRS_COUNTERS_MURAM_READ_STALL_CYCLES): + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->mrscs, value); + break; + case(e_FM_PCD_PRS_COUNTERS_MURAM_WRITE_CYCLES): + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->mwcs, value); + break; + case(e_FM_PCD_PRS_COUNTERS_MURAM_WRITE_STALL_CYCLES): + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->mwscs, value); + break; + case(e_FM_PCD_PRS_COUNTERS_FPM_COMMAND_STALL_CYCLES): + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->fcscs, value); + break; + case(e_FM_PCD_KG_COUNTERS_TOTAL): + WRITE_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgtpc,value); + break; + + /*Policer counters*/ + case(e_FM_PCD_PLCR_COUNTERS_YELLOW): + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_ypcnt, value); + break; + case(e_FM_PCD_PLCR_COUNTERS_RED): + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_rpcnt, value); + break; + case(e_FM_PCD_PLCR_COUNTERS_RECOLORED_TO_RED): + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_rrpcnt, value); + break; + case(e_FM_PCD_PLCR_COUNTERS_RECOLORED_TO_YELLOW): + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_rypcnt, value); + break; + case(e_FM_PCD_PLCR_COUNTERS_TOTAL): + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_tpcnt, value); + break; + case(e_FM_PCD_PLCR_COUNTERS_LENGTH_MISMATCH): + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_flmcnt, value); + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Unsupported type of counter")); + } + +return E_OK; +} + --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/Pcd/fm_pcd.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/Peripherals/FM/Pcd/fm_pcd.h @@ -0,0 +1,715 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 fm_pcd.h + + @Description FM PCD ... +*//***************************************************************************/ +#ifndef __FM_PCD_H +#define __FM_PCD_H + +#include "std_ext.h" +#include "error_ext.h" +#include "list_ext.h" +#include "fm_pcd_ext.h" + + +#define __ERR_MODULE__ MODULE_FM_PCD + + +/**************************************************************************//** + @Group FM_PCD_Runtime_grp FM PCD Runtime Unit + @{ +*//***************************************************************************/ + +/****************************/ +/* Network defines */ +/****************************/ +#define UDP_HEADER_SIZE 8 + +#define ESP_SPI_OFFSET 0 +#define ESP_SPI_SIZE 4 +#define ESP_SEQ_NUM_OFFSET ESP_SPI_SIZE +#define ESP_SEQ_NUM_SIZE 4 + +/****************************/ +/* General defines */ +/****************************/ +#define ILLEGAL_CLS_PLAN 0xff +#define ILLEGAL_NETENV 0xff +/****************************/ +/* Error defines */ +/****************************/ +#define FM_PCD_EX_KG_DOUBLE_ECC 0x80000000 +#define FM_PCD_EX_KG_KEYSIZE_OVERFLOW 0x40000000 + +#define FM_PCD_EX_PLCR_DOUBLE_ECC 0x20000000 +#define FM_PCD_EX_PLCR_INIT_ENTRY_ERROR 0x10000000 +#define FM_PCD_EX_PLCR_PRAM_SELF_INIT_COMPLETE 0x08000000 +#define FM_PCD_EX_PLCR_ATOMIC_ACTION_COMPLETE 0x04000000 + +#define FM_PCD_EX_PRS_DOUBLE_ECC 0x02000000 +#define FM_PCD_EX_PRS_SINGLE_ECC 0x01000000 + +#define GET_FM_PCD_EXCEPTION_FLAG(bitMask, exception) \ +switch(exception){ \ + case e_FM_PCD_KG_EXCEPTION_DOUBLE_ECC: \ + bitMask = FM_PCD_EX_KG_DOUBLE_ECC; break; \ + case e_FM_PCD_PLCR_EXCEPTION_DOUBLE_ECC: \ + bitMask = FM_PCD_EX_PLCR_DOUBLE_ECC; break; \ + case e_FM_PCD_KG_EXCEPTION_KEYSIZE_OVERFLOW: \ + bitMask = FM_PCD_EX_KG_KEYSIZE_OVERFLOW; break; \ + case e_FM_PCD_PLCR_EXCEPTION_INIT_ENTRY_ERROR: \ + bitMask = FM_PCD_EX_PLCR_INIT_ENTRY_ERROR; break; \ + case e_FM_PCD_PLCR_EXCEPTION_PRAM_SELF_INIT_COMPLETE: \ + bitMask = FM_PCD_EX_PLCR_PRAM_SELF_INIT_COMPLETE; break; \ + case e_FM_PCD_PLCR_EXCEPTION_ATOMIC_ACTION_COMPLETE: \ + bitMask = FM_PCD_EX_PLCR_ATOMIC_ACTION_COMPLETE; break; \ + case e_FM_PCD_PRS_EXCEPTION_DOUBLE_ECC: \ + bitMask = FM_PCD_EX_PRS_DOUBLE_ECC; break; \ + case e_FM_PCD_PRS_EXCEPTION_SINGLE_ECC: \ + bitMask = FM_PCD_EX_PRS_SINGLE_ECC; break; \ + default: bitMask = 0;break;} + +/***********************************************************************/ +/* SW parser L4 shells patch */ +/***********************************************************************/ +#ifdef FM_PRS_L4_SHELL_ERRATA_FMANb +#define SW_PRS_L4_PATCH \ +{ 0x31,0x92,0x02,0x1f,0x00,0x32,0x00,0x78, \ + 0x00,0x34,0x32,0xf0,0x00,0x50,0x00,0x0c, \ + 0x28,0x5e,0x83,0x8e,0x29,0x32,0xaf,0x8e, \ + 0x31,0xb2,0x9f,0xff,0x00,0x06,0xaf,0xbf, \ + 0x00,0x06,0x29,0x36,0x00,0x01,0x1b,0xff, \ + 0x32,0xf0,0x00,0x50,0x00,0x08,0x28,0x5e, \ + 0x08,0x99,0x00,0x00,0x9f,0x8e,0x31,0xb2, \ + 0x9f,0xff,0x00,0x06,0x29,0x36,0x00,0x01, \ + 0x1b,0xff,0x32,0xf0,0x00,0x50,0x00,0x04, \ + 0x28,0x5e,0x8f,0x9e,0x29,0x32,0x31,0xb2, \ + 0x8f,0xbf,0x00,0x06,0x29,0x36,0x00,0x01, \ + 0x1b,0xff,0x32,0xf0,0x00,0x50,0x00,0x04, \ + 0x28,0x5e,0x8f,0x9e,0x29,0x32,0x31,0xb2, \ + 0x8f,0xbf,0x00,0x06,0x29,0x36,0x00,0x01, \ + 0x1b,0xff,0x00,0x00,0x00,0x00,0x00,0x00}; + +#define SW_PRS_L4_PATCH_SIZE 120 +#endif /* FM_PRS_L4_SHELL_ERRATA_FMANb */ + +/****************************/ +/* Parser defines */ +/****************************/ +/* masks */ +#define PRS_ERR_CAP 0x80000000 +#define PRS_ERR_TYPE_DOUBLE 0x40000000 +#define PRS_ERR_SINGLE_ECC_CNT_MASK 0x00FF0000 +#define PRS_ERR_ADDR_MASK 0x000001FF +#define FM_PCD_PRS_RPIMAC_EN 0x00000001 +#define FM_PCD_PRS_SINGLE_ECC 0x00004000 +#define FM_PCD_PRS_PORT_IDLE_STS 0xffff0000 +#define FM_PCD_PRS_DOUBLE_ECC 0x00004000 +#define FM_PCD_PRS_PPSC_ALL_PORTS 0xffff0000 + +/* others */ +#define PRS_MAX_CYCLE_LIMIT 8191 +#define PRS_SW_DATA 0x00000800 +#define PRS_REGS_OFFSET 0x00000840 + +#define GET_FM_PCD_PRS_PORT_ID(prsPortId,hardwarePortId) \ + prsPortId = (uint8_t)(hardwarePortId & 0x0f) + +#define GET_FM_PCD_INDEX_FLAG(bitMask, prsPortId) \ + bitMask = 0x80000000>>prsPortId + +/***********************************************************************/ +/* Keygen defines */ +/***********************************************************************/ +/* Masks */ +#define FM_PCD_KG_KGGCR_EN 0x80000000 +#define KG_SCH_GEN_VALID 0x80000000 +#define KG_SCH_GEN_EXTRACT_TYPE 0x00008000 +#define KG_ERR_CAP 0x80000000 +#define KG_ERR_TYPE_DOUBLE 0x40000000 +#define KG_ERR_ADDR_MASK 0x00000FFF +#define FM_PCD_KG_DOUBLE_ECC 0x80000000 +#define FM_PCD_KG_KEYSIZE_OVERFLOW 0x40000000 +#define KG_SCH_MODE_EN 0x80000000 + +/* shifts */ +#define FM_PCD_KG_PE_CPP_MASK_SHIFT 16 +#define FM_PCD_KG_KGAR_WSEL_SHIFT 8 + +/* others */ +#define KG_DOUBLE_MEANING_REGS_OFFSET 0x100 +#define NO_VALIDATION 0x70 +#define KG_ACTION_REG_TO 1024 +#define KG_MAX_PROFILE 255 +#define SCHEME_ALWAYS_DIRECT 0xFFFFFFFF + +typedef struct { + bool known; + uint8_t id; +} t_FmPcdKgSchemesExtractsEntry; + +typedef struct { + t_FmPcdKgSchemesExtractsEntry extractsArray[FM_PCD_KG_MAX_NUM_OF_EXTRACTS_PER_KEY]; +} t_FmPcdKgSchemesExtracts; + +/***********************************************************************/ +/* Policer defines */ +/***********************************************************************/ + +/* masks */ +#define FM_PCD_PLCR_PEMODE_PI 0x80000000 +#define FM_PCD_PLCR_PEMODE_CBLND 0x40000000 +#define FM_PCD_PLCR_PEMODE_ALG_MASK 0x30000000 +#define FM_PCD_PLCR_PEMODE_ALG_RFC2698 0x10000000 +#define FM_PCD_PLCR_PEMODE_ALG_RFC4115 0x20000000 +#define FM_PCD_PLCR_PEMODE_DEFC_MASK 0x0C000000 +#define FM_PCD_PLCR_PEMODE_DEFC_Y 0x04000000 +#define FM_PCD_PLCR_PEMODE_DEFC_R 0x08000000 +#define FM_PCD_PLCR_PEMODE_DEFC_OVERRIDE 0x0C000000 +#define FM_PCD_PLCR_PEMODE_OVCLR_MASK 0x03000000 +#define FM_PCD_PLCR_PEMODE_OVCLR_Y 0x01000000 +#define FM_PCD_PLCR_PEMODE_OVCLR_R 0x02000000 +#define FM_PCD_PLCR_PEMODE_OVCLR_G_NC 0x03000000 +#define FM_PCD_PLCR_PEMODE_PKT 0x00800000 +#define FM_PCD_PLCR_PEMODE_FPP_MASK 0x001F0000 +#define FM_PCD_PLCR_PEMODE_FPP_SHIFT 16 +#define FM_PCD_PLCR_PEMODE_FLS_MASK 0x0000F000 +#define FM_PCD_PLCR_PEMODE_FLS_L2 0x00003000 +#define FM_PCD_PLCR_PEMODE_FLS_L3 0x0000B000 +#define FM_PCD_PLCR_PEMODE_FLS_L4 0x0000E000 +#define FM_PCD_PLCR_PEMODE_FLS_FULL 0x0000F000 +#define FM_PCD_PLCR_PEMODE_RBFLS 0x00000800 +#define FM_PCD_PLCR_PEMODE_TRA 0x00000004 +#define FM_PCD_PLCR_PEMODE_TRB 0x00000002 +#define FM_PCD_PLCR_PEMODE_TRC 0x00000001 +#define FM_PCD_PLCR_DOUBLE_ECC 0x80000000 +#define FM_PCD_PLCR_INIT_ENTRY_ERROR 0x40000000 +#define FM_PCD_PLCR_PRAM_SELF_INIT_COMPLETE 0x80000000 +#define FM_PCD_PLCR_ATOMIC_ACTION_COMPLETE 0x40000000 + +#define FM_PCD_PLCR_NIA_VALID 0x80000000 + +#define FM_PCD_PLCR_GCR_EN 0x80000000 +#define FM_PCD_PLCR_GCR_STEN 0x40000000 +#define FM_PCD_PLCR_GCR_DAR 0x20000000 +#define FM_PCD_PLCR_GCR_DEFNIA 0x00FFFFFF +#define FM_PCD_PLCR_NIA_ABS 0x00000100 + +#define FM_PCD_PLCR_GSR_BSY 0x80000000 +#define FM_PCD_PLCR_GSR_DQS 0x60000000 +#define FM_PCD_PLCR_GSR_RPB 0x20000000 +#define FM_PCD_PLCR_GSR_FQS 0x0C000000 +#define FM_PCD_PLCR_GSR_LPALG 0x0000C000 +#define FM_PCD_PLCR_GSR_LPCA 0x00003000 +#define FM_PCD_PLCR_GSR_LPNUM 0x000000FF + +#define FM_PCD_PLCR_EVR_PSIC 0x80000000 +#define FM_PCD_PLCR_EVR_AAC 0x40000000 + +#define FM_PCD_PLCR_PAR_PSI 0x20000000 +#define FM_PCD_PLCR_PAR_PNUM 0x00FF0000 +/* PWSEL Selctive select options */ +#define FM_PCD_PLCR_PAR_PWSEL_PEMODE 0x00008000 /* 0 */ +#define FM_PCD_PLCR_PAR_PWSEL_PEGNIA 0x00004000 /* 1 */ +#define FM_PCD_PLCR_PAR_PWSEL_PEYNIA 0x00002000 /* 2 */ +#define FM_PCD_PLCR_PAR_PWSEL_PERNIA 0x00001000 /* 3 */ +#define FM_PCD_PLCR_PAR_PWSEL_PECIR 0x00000800 /* 4 */ +#define FM_PCD_PLCR_PAR_PWSEL_PECBS 0x00000400 /* 5 */ +#define FM_PCD_PLCR_PAR_PWSEL_PEPIR_EIR 0x00000200 /* 6 */ +#define FM_PCD_PLCR_PAR_PWSEL_PEPBS_EBS 0x00000100 /* 7 */ +#define FM_PCD_PLCR_PAR_PWSEL_PELTS 0x00000080 /* 8 */ +#define FM_PCD_PLCR_PAR_PWSEL_PECTS 0x00000040 /* 9 */ +#define FM_PCD_PLCR_PAR_PWSEL_PEPTS_ETS 0x00000020 /* 10 */ +#define FM_PCD_PLCR_PAR_PWSEL_PEGPC 0x00000010 /* 11 */ +#define FM_PCD_PLCR_PAR_PWSEL_PEYPC 0x00000008 /* 12 */ +#define FM_PCD_PLCR_PAR_PWSEL_PERPC 0x00000004 /* 13 */ +#define FM_PCD_PLCR_PAR_PWSEL_PERYPC 0x00000002 /* 14 */ +#define FM_PCD_PLCR_PAR_PWSEL_PERRPC 0x00000001 /* 15 */ + +#define FM_PCD_PLCR_PAR_PMR_BRN_1TO1 0x0000 /* - Full bit replacement. {PBNUM[0:N-1] + 1-> 2^N specific locations. */ +#define FM_PCD_PLCR_PAR_PMR_BRN_2TO2 0x1 /* - {PBNUM[0:N-2],PNUM[N-1]}. + 2-> 2^(N-1) base locations. */ +#define FM_PCD_PLCR_PAR_PMR_BRN_4TO4 0x2 /* - {PBNUM[0:N-3],PNUM[N-2:N-1]}. + 4-> 2^(N-2) base locations. */ +#define FM_PCD_PLCR_PAR_PMR_BRN_8TO8 0x3 /* - {PBNUM[0:N-4],PNUM[N-3:N-1]}. + 8->2^(N-3) base locations. */ +#define FM_PCD_PLCR_PAR_PMR_BRN_16TO16 0x4 /* - {PBNUM[0:N-5],PNUM[N-4:N-1]}. + 16-> 2^(N-4) base locations. */ +#define FM_PCD_PLCR_PAR_PMR_BRN_32TO32 0x5 /* {PBNUM[0:N-6],PNUM[N-5:N-1]}. + 32-> 2^(N-5) base locations. */ +#define FM_PCD_PLCR_PAR_PMR_BRN_64TO64 0x6 /* {PBNUM[0:N-7],PNUM[N-6:N-1]}. + 64-> 2^(N-6) base locations. */ +#define FM_PCD_PLCR_PAR_PMR_BRN_128TO128 0x7 /* {PBNUM[0:N-8],PNUM[N-7:N-1]}. + 128-> 2^(N-7) base locations. */ +#define FM_PCD_PLCR_PAR_PMR_BRN_256TO256 0x8 /* - No bit replacement for N=8. {PNUM[N-8:N-1]}. + When N=8 this option maps all 256 profiles by the DISPATCH bus into one group. */ + +#define FM_PCD_PLCR_PMR_V 0x80000000 +#define PLCR_ERR_ECC_CAP 0x80000000 +#define PLCR_ERR_ECC_TYPE_DOUBLE 0x40000000 +#define PLCR_ERR_ECC_PNUM_MASK 0x00000FF0 +#define PLCR_ERR_ECC_OFFSET_MASK 0x0000000F + +#define PLCR_ERR_UNINIT_CAP 0x80000000 +#define PLCR_ERR_UNINIT_NUM_MASK 0x000000FF +#define PLCR_ERR_UNINIT_PID_MASK 0x003f0000 +#define PLCR_ERR_UNINIT_ABSOLUTE_MASK 0x00008000 + +/* shifts */ +#define PLCR_ERR_ECC_PNUM_SHIFT 4 +#define PLCR_ERR_UNINIT_PID_SHIFT 16 + +#define FM_PCD_PLCR_PMR_BRN_SHIFT 16 + +/* others */ +#define WAIT_FOR_PLCR_EVR_AAC \ +{\ + uint32_t count = 0; \ + uint32_t tmpReg32; \ + while (count < FM_PCD_PLCR_POLL) \ + { \ + tmpReg32 = GET_UINT32(p_FmPcdPlcrRegs->fmpl_evr);\ + if (!( tmpReg32 & FM_PCD_PLCR_EVR_AAC)) break;\ + count++;\ + }\ +} + +#define WAIT_FOR_PLCR_PAR_GO \ +{\ + uint32_t count = 0; \ + uint32_t tmpReg32; \ + while (count < FM_PCD_PLCR_POLL) \ + { \ + tmpReg32 = GET_UINT32(p_FmPcdPlcrRegs->fmpl_par);\ + if (!( tmpReg32 & FM_PCD_PLCR_PAR_GO)) break;\ + count++; \ + }\ +} + +#define PLCR_PORT_WINDOW_SIZE(hardwarePortId) + +/****************************/ +/* Defaults */ +/****************************/ +#define DEFAULT_plcrAutoRefresh FALSE +#define DEFAULT_prsMaxParseCycleLimit 0 +#define DEFAULT_fmPcdKgErrorExceptions (FM_PCD_EX_KG_DOUBLE_ECC | FM_PCD_EX_KG_KEYSIZE_OVERFLOW) +#define DEFAULT_fmPcdPlcrErrorExceptions (FM_PCD_EX_PLCR_DOUBLE_ECC | FM_PCD_EX_PLCR_INIT_ENTRY_ERROR) +#define DEFAULT_fmPcdPlcrExceptions 0 +#define DEFAULT_fmPcdPrsErrorExceptions (FM_PCD_EX_PRS_DOUBLE_ECC) + +#define DEFAULT_fmPcdPrsExceptions FM_PCD_EX_PRS_SINGLE_ECC +#define DEFAULT_numOfUsedProfilesPerWindow 16 +#define DEFAULT_numOfSharedPlcrProfiles 4 + +/***********************************************************************/ +/* Memory map */ +/***********************************************************************/ +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(push,1) +#endif /* defined(__MWERKS__) && ... */ +#define MEM_MAP_START + +typedef _Packed struct { + volatile uint32_t kgoe_sp; + volatile uint32_t kgoe_cpp; +} _PackedType t_FmPcdKgPortConfigRegs; + +typedef _Packed struct { + volatile uint32_t kgcpe[8]; +} _PackedType t_FmPcdKgClsPlanRegs; + +typedef _Packed union { + t_FmPcdKgInterModuleSchemeRegs schemeRegs; + t_FmPcdKgPortConfigRegs portRegs; + t_FmPcdKgClsPlanRegs clsPlanRegs; +} _PackedType u_FmPcdKgIndirectAccessRegs; + +typedef _Packed struct { + volatile uint32_t kggcr; + volatile uint32_t res0; + volatile uint32_t res1; + volatile uint32_t kgeer; + volatile uint32_t kgeeer; + volatile uint32_t res2; + volatile uint32_t res3; + volatile uint32_t kgseer; + volatile uint32_t kgseeer; + volatile uint32_t kggsr; + volatile uint32_t kgtpc; + volatile uint32_t kgserc; + volatile uint32_t res4[4]; + volatile uint32_t kgfdor; + volatile uint32_t kggdv0r; + volatile uint32_t kggdv1r; + volatile uint32_t res5[5]; + volatile uint32_t kgfer; + volatile uint32_t kgfeer; + volatile uint32_t res6[38]; + u_FmPcdKgIndirectAccessRegs indirectAccessRegs; + volatile uint32_t res[42]; /*(0xfc-sizeof(u_FmPcdKgIndirectAccessRegs))/4 */ + volatile uint32_t kgar; +} _PackedType t_FmPcdKgRegs; + +typedef _Packed struct { +/* General Configuration and Status Registers */ + volatile uint32_t fmpl_gcr; /* 0x000 FMPL_GCR - FM Policer General Configuration */ + volatile uint32_t fmpl_gsr; /* 0x004 FMPL_GSR - FM Policer Global Status Register */ + volatile uint32_t fmpl_evr; /* 0x008 FMPL_EVR - FM Policer Event Register */ + volatile uint32_t fmpl_ier; /* 0x00C FMPL_IER - FM Policer Interrupt Enable Register */ + volatile uint32_t fmpl_ifr; /* 0x010 FMPL_IFR - FM Policer Interrupt Force Register */ + volatile uint32_t fmpl_eevr; /* 0x014 FMPL_EEVR - FM Policer Error Event Register */ + volatile uint32_t fmpl_eier; /* 0x018 FMPL_EIER - FM Policer Error Interrupt Enable Register */ + volatile uint32_t fmpl_eifr; /* 0x01C FMPL_EIFR - FM Policer Error Interrupt Force Register */ +/* Global Statistic Counters */ + volatile uint32_t fmpl_rpcnt; /* 0x020 FMPL_RPC - FM Policer RED Packets Counter */ + volatile uint32_t fmpl_ypcnt; /* 0x024 FMPL_YPC - FM Policer YELLOW Packets Counter */ + volatile uint32_t fmpl_rrpcnt; /* 0x028 FMPL_RRPC - FM Policer Recolored RED Packet Counter */ + volatile uint32_t fmpl_rypcnt; /* 0x02C FMPL_RYPC - FM Policer Recolored YELLOW Packet Counter */ + volatile uint32_t fmpl_tpcnt; /* 0x030 FMPL_TPC - FM Policer Total Packet Counter */ + volatile uint32_t fmpl_flmcnt; /* 0x034 FMPL_FLMC - FM Policer Frame Length Mismatch Counter */ + volatile uint32_t fmpl_res0[21]; /* 0x038 - 0x08B Reserved */ +/* Profile RAM Access Registers */ + volatile uint32_t fmpl_par; /* 0x08C FMPL_PAR - FM Policer Profile Action Register*/ + t_FmPcdPlcrInterModuleProfileRegs profileRegs; +/* Error Capture Registers */ + volatile uint32_t fmpl_serc; /* 0x100 FMPL_SERC - FM Policer Soft Error Capture */ + volatile uint32_t fmpl_upcr; /* 0x104 FMPL_UPCR - FM Policer Uninitialized Profile Capture Register */ + volatile uint32_t fmpl_res2; /* 0x108 Reserved */ +/* Debug Registers */ + volatile uint32_t fmpl_res3[61]; /* 0x10C-0x200 Reserved Debug*/ +/* Profile Selection Mapping Registers Per Port-ID (n=1-11, 16) */ + volatile uint32_t fmpl_dpmr; /* 0x200 FMPL_DPMR - FM Policer Default Mapping Register */ + volatile uint32_t fmpl_pmr[63]; /*+default 0x204-0x2FF FMPL_PMR1 - FMPL_PMR63, - FM Policer Profile Mapping Registers. + (for port-ID 1-11, only for supported Port-ID registers) */ +} _PackedType t_FmPcdPlcrRegs; + +typedef _Packed struct { + volatile uint32_t rpclim; + volatile uint32_t rpimac; + volatile uint32_t pmeec; + volatile uint32_t res1[5]; + volatile uint32_t pevr; + volatile uint32_t pever; + volatile uint32_t pevfr; + volatile uint32_t perr; + volatile uint32_t perer; + volatile uint32_t perfr; + volatile uint32_t res2[0xA]; + volatile uint32_t ppsc; + volatile uint32_t res3; + volatile uint32_t pds; + volatile uint32_t l2rrs; + volatile uint32_t l3rrs; + volatile uint32_t l4rrs; + volatile uint32_t srrs; + volatile uint32_t l2rres; + volatile uint32_t l3rres; + volatile uint32_t l4rres; + volatile uint32_t srres; + volatile uint32_t spcs; + volatile uint32_t spscs; + volatile uint32_t hxscs; + volatile uint32_t mrcs; + volatile uint32_t mwcs; + volatile uint32_t mrscs; + volatile uint32_t mwscs; + volatile uint32_t fcscs; +} _PackedType t_FmPcdPrsRegs; + +#define MEM_MAP_END +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(pop) +#endif /* defined(__MWERKS__) && ... */ + + +/***********************************************************************/ +/* Driver's internal structures */ +/***********************************************************************/ + +typedef struct { + t_Handle h_Manip; + bool keepRes; + e_FmPcdEngine nextEngine; + uint8_t parseCode; +} t_FmPcdInfoForManip; + +/**************************************************************************//** + @Description A structure of parameters to communicate + between the port and PCD regarding the KG scheme. +*//***************************************************************************/ +typedef struct { + uint8_t netEnvId; /* in */ + uint8_t numOfDistinctionUnits; /* in */ + uint8_t unitIds[FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS]; /* in */ + uint32_t vector; /* out */ +} t_NetEnvParams; + +typedef struct { + volatile bool lock; + bool used; + uint8_t owners; + uint8_t netEnvId; + uint8_t guestId; + uint8_t baseEntry; + uint16_t sizeOfGrp; + protocolOpt_t optArray[FM_PCD_MAX_NUM_OF_OPTIONS(FM_PCD_MAX_NUM_OF_CLS_PLANS)]; +} t_FmPcdKgClsPlanGrp; + +typedef struct { + volatile bool lock; + bool valid; + uint8_t netEnvId; + uint8_t owners; + uint32_t matchVector; + uint32_t ccUnits; + bool nextRelativePlcrProfile; + uint16_t relativeProfileId; + uint16_t numOfProfiles; + t_FmPcdKgKeyOrder orderedArray; + e_FmPcdEngine nextEngine; + e_FmPcdDoneAction doneAction; + uint8_t pointedOwners; + uint32_t requiredAction; + bool extractedOrs; + uint8_t bitOffsetInPlcrProfile; + bool directPlcr; +} t_FmPcdKgScheme; + +typedef struct { + bool allocated; + uint8_t ownerId; /* guestId for KG in multi-partition only, + portId for PLCR in any environment */ +} t_FmPcdAllocMng; + +typedef struct { + t_FmPcdKgRegs *p_FmPcdKgRegs; + uint32_t schemeExceptionsBitMask; + uint8_t numOfSchemes; + uint8_t schemesIds[FM_PCD_KG_NUM_OF_SCHEMES]; + t_FmPcdKgScheme schemes[FM_PCD_KG_NUM_OF_SCHEMES]; + t_FmPcdKgClsPlanGrp clsPlanGrps[FM_MAX_NUM_OF_PORTS]; + uint8_t emptyClsPlanGrpId; + t_FmPcdAllocMng schemesMng[FM_PCD_KG_NUM_OF_SCHEMES]; /* only for MASTER ! */ + t_FmPcdAllocMng clsPlanBlocksMng[FM_PCD_MAX_NUM_OF_CLS_PLANS/CLS_PLAN_NUM_PER_GRP]; +} t_FmPcdKg; + +typedef struct { + uint16_t profilesBase; + uint16_t numOfProfiles; + t_Handle h_FmPort; +} t_FmPcdPlcrMapParam; + +typedef struct { + bool valid; + volatile bool lock; + t_FmPcdAllocMng profilesMng; + uint8_t pointedOwners; + uint32_t requiredAction; + e_FmPcdEngine nextEngineOnGreen; /**< Green next engine type */ + u_FmPcdPlcrNextEngineParams paramsOnGreen; /**< Green next engine params */ + + e_FmPcdEngine nextEngineOnYellow; /**< Yellow next engine type */ + u_FmPcdPlcrNextEngineParams paramsOnYellow; /**< Yellow next engine params */ + + e_FmPcdEngine nextEngineOnRed; /**< Red next engine type */ + u_FmPcdPlcrNextEngineParams paramsOnRed; /**< Red next engine params */ +} t_FmPcdPlcrProfile; + +typedef struct { + t_FmPcdPlcrRegs *p_FmPcdPlcrRegs; + t_FmPcdPlcrProfile profiles[FM_PCD_PLCR_NUM_ENTRIES]; + uint16_t numOfSharedProfiles; + uint16_t sharedProfilesIds[FM_PCD_PLCR_NUM_ENTRIES]; + t_FmPcdPlcrMapParam portsMapping[FM_MAX_NUM_OF_PORTS]; +} t_FmPcdPlcr; + +typedef struct { + uint32_t *p_SwPrsCode; + uint32_t *p_CurrSwPrs; + uint8_t currLabel; + t_FmPcdPrsRegs *p_FmPcdPrsRegs; + t_FmPcdPrsLabelParams labelsTable[FM_PCD_PRS_NUM_OF_LABELS]; + uint32_t fmPcdPrsPortIdStatistics; +} t_FmPcdPrs; + +typedef struct { + struct { + e_NetHeaderType hdr; + protocolOpt_t opt; /* only one option !! */ + } hdrs[FM_PCD_MAX_NUM_OF_INTERCHANGEABLE_HDRS]; +} t_FmPcdIntDistinctionUnit; + +typedef struct { + e_NetHeaderType hdr; + e_NetHeaderType aliasHdr; +} t_FmPcdNetEnvAliases; + +typedef struct { + volatile bool lock; + bool used; + uint8_t owners; + uint8_t clsPlanGrpId; + t_FmPcdIntDistinctionUnit units[FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS]; + uint32_t unitsVectors[FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS]; + uint32_t lcvs[FM_PCD_PRS_NUM_OF_HDRS]; + uint32_t macsecVector; + t_FmPcdNetEnvAliases aliasHdrs[FM_PCD_MAX_NUM_OF_PRIVATE_HDRS]; +} t_FmPcdNetEnv; + +typedef struct { + bool plcrAutoRefresh; + + uint16_t prsMaxParseCycleLimit; +} t_FmPcdDriverParam; + +typedef struct { + t_Handle h_Fm; + t_Handle h_FmMuram; + uint64_t physicalMuramBase; + volatile bool lock; + t_Handle h_Spinlock; + t_Handle h_IpcSession; /* relevant for guest only */ + bool enabled; + uint8_t guestId; /**< Guest Partition Id */ + uint8_t numOfEnabledGuestPartitionsPcds; + char fmPcdModuleName[MODULE_NAME_SIZE]; + char fmPcdIpcHandlerModuleName[MODULE_NAME_SIZE]; /* relevant for guest only - this is the master's name */ + t_FmPcdNetEnv netEnvs[FM_MAX_NUM_OF_PORTS]; + t_FmPcdKg *p_FmPcdKg; + t_FmPcdPlcr *p_FmPcdPlcr; + t_FmPcdPrs *p_FmPcdPrs; + + t_Handle h_Hc; + + uint32_t exceptions; + t_FmPcdExceptionCallback *f_Exception; + t_FmPcdIdExceptionCallback *f_FmPcdIndexedException; + t_Handle h_App; + + t_FmPcdDriverParam *p_FmPcdDriverParam; +} t_FmPcd; + + +/***********************************************************************/ +/* PCD internal routines */ +/***********************************************************************/ + +/**************************************************************************//** + + @Group FM_PCD_InterModule_grp FM PCD Inter-Module Unit + + @Description FM PCD Inter Module functions - + These are not User API routines but routines that may be called + from other modules. This will be the case in a single core environment, + where instead of useing the XX messeging mechanism, the routines may be + called from other modules. In a multicore environment, the other modules may + be run by other cores and therefor these routines may not be called directly. + + @{ +*//***************************************************************************/ + +t_Error PcdGetVectorForOpt(t_FmPcd *p_FmPcd, uint8_t netEnvId, protocolOpt_t opt, uint32_t *p_Vector); +t_Error PcdGetUnitsVector(t_FmPcd *p_FmPcd, t_NetEnvParams *p_Params); +bool PcdNetEnvIsUnitWithoutOpts(t_FmPcd *p_FmPcd, uint8_t netEnvId, uint32_t unitVector); +t_Error PcdGetClsPlanGrpParams(t_FmPcd *p_FmPcd, t_FmPcdKgInterModuleClsPlanGrpParams *p_GrpParams); +void FmPcdSetClsPlanGrpId(t_FmPcd *p_FmPcd, uint8_t netEnvId, uint8_t clsPlanGrpId); +e_NetHeaderType FmPcdGetAliasHdr(t_FmPcd *p_FmPcd, uint8_t netEnvId, e_NetHeaderType hdr); +uint8_t FmPcdNetEnvGetUnitIdForSingleHdr(t_Handle h_FmPcd, uint8_t netEnvId, e_NetHeaderType hdr); + +t_Handle KgConfig( t_FmPcd *p_FmPcd, t_FmPcdParams *p_FmPcdParams); +t_Error KgInit(t_FmPcd *p_FmPcd); +t_Error KgFree(t_FmPcd *p_FmPcd); +void KgSetClsPlan(t_Handle h_FmPcd, t_FmPcdKgInterModuleClsPlanSet *p_Set); +bool KgIsSchemeAlwaysDirect(t_Handle h_FmPcd, uint8_t schemeId); +void KgEnable(t_FmPcd *p_FmPcd); +void KgDisable(t_FmPcd *p_FmPcd); +t_Error KgAllocClsPlanEntries(t_Handle h_FmPcd, uint16_t numOfClsPlanEntries, uint8_t guestId, uint8_t *p_First); +void KgFreeClsPlanEntries(t_Handle h_FmPcd, uint16_t numOfClsPlanEntries, uint8_t guestId, uint8_t base); + +/* only for MULTI partittion */ +t_Error FmPcdKgAllocSchemes(t_Handle h_FmPcd, uint8_t numOfSchemes, uint8_t guestId, uint8_t *p_SchemesIds); +t_Error FmPcdKgFreeSchemes(t_Handle h_FmPcd, uint8_t numOfSchemes, uint8_t guestId, uint8_t *p_SchemesIds); +/* only for SINGLE partittion */ +t_Error KgBindPortToSchemes(t_Handle h_FmPcd , uint8_t hardwarePortId, uint32_t spReg); + +t_Handle PlcrConfig(t_FmPcd *p_FmPcd, t_FmPcdParams *p_FmPcdParams); +t_Error PlcrInit(t_FmPcd *p_FmPcd); +t_Error PlcrFree(t_FmPcd *p_FmPcd); +void PlcrEnable(t_FmPcd *p_FmPcd); +void PlcrDisable(t_FmPcd *p_FmPcd); +t_Error PlcrFreeProfiles(t_FmPcd *p_FmPcd, uint8_t hardwarePortId, uint16_t num, uint16_t base); +t_Error PlcrAllocProfiles(t_FmPcd *p_FmPcd, uint8_t hardwarePortId, uint16_t numOfProfiles, uint16_t *p_Base); +t_Error PlcrAllocSharedProfiles(t_FmPcd *p_FmPcd, uint16_t numOfProfiles, uint16_t *profilesIds); +void PlcrFreeSharedProfiles(t_FmPcd *p_FmPcd, uint16_t numOfProfiles, uint16_t *profilesIds); + +t_Handle PrsConfig(t_FmPcd *p_FmPcd,t_FmPcdParams *p_FmPcdParams); +t_Error PrsInit(t_FmPcd *p_FmPcd); +void PrsEnable(t_FmPcd *p_FmPcd); +void PrsDisable(t_FmPcd *p_FmPcd); +void PrsFree(t_FmPcd *p_FmPcd ); +t_Error PrsIncludePortInStatistics(t_FmPcd *p_FmPcd, uint8_t hardwarePortId, bool include); + +t_Handle FmPcdCcConfig(t_Handle h_FmPcd, t_FmPcdParams *p_FmPcdParams); +t_Error FmPcdCcGetGrpParams(t_Handle treeId, uint8_t grpId, uint32_t *p_GrpBits, uint8_t *p_GrpBase); +uint8_t FmPcdCcGetOffset(t_Handle h_CcNode); +uint8_t FmPcdCcGetParseCode(t_Handle h_CcNode); +uint16_t FmPcdCcGetNumOfKeys(t_Handle h_CcNode); + +void FmPcdManipUpdateOwner(t_Handle h_Manip, bool add); +t_Error FmPcdManipCheckParamsForCcNextEgine(t_FmPcdCcNextEngineParams *p_InfoForManip, uint32_t *requiredAction); +void FmPcdManipUpdateAdResultForCc(t_Handle h_Manip, t_Handle p_Ad, t_Handle *p_AdNew); +void FmPcdManipUpdateAdContLookupForCc(t_Handle h_Manip, t_Handle p_Ad, t_Handle *p_AdNew, uint32_t adTableOffset); +uint32_t FmPcdManipCheckNia(t_Handle h_FmPcd, t_Handle h_Ad); +void FmPcdManipUpdateOwner(t_Handle h_Manip, bool add); +t_Error FmPcdManipCheckParamsWithCcNodeParams(t_Handle h_Manip, t_Handle h_FmPcdCcNode); + +static __inline__ t_Handle FmPcdGetMuramHandle(t_Handle h_FmPcd) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + ASSERT_COND(p_FmPcd); + return p_FmPcd->h_FmMuram; +} + +static __inline__ uint64_t FmPcdGetMuramPhysBase(t_Handle h_FmPcd) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + ASSERT_COND(p_FmPcd); + return p_FmPcd->physicalMuramBase; +} + + +#endif /* __FM_PCD_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/Pcd/fm_pcd_ipc.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/Peripherals/FM/Pcd/fm_pcd_ipc.h @@ -0,0 +1,326 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 fm_pcd_ipc.h + + @Description FM PCD Inter-Partition prototypes, structures and definitions. +*//***************************************************************************/ +#ifndef __FM_PCD_IPC_H +#define __FM_PCD_IPC_H + +#include "std_ext.h" + + +/**************************************************************************//** + @Group FM_grp Frame Manager API + + @Description FM API functions, definitions and enums + + @{ +*//***************************************************************************/ + + +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(push,1) +#endif /* defined(__MWERKS__) && ... */ +#define MEM_MAP_START + +/**************************************************************************//** + @Description Structure for getting a sw parser address according to a label + Fields commented 'IN' are passed by the port module to be used + by the FM module. + Fields commented 'OUT' will be filled by FM before returning to port. +*//***************************************************************************/ +typedef _Packed struct t_FmPcdIpcSwPrsLable +{ + uint32_t enumHdr; /**< IN. The existance of this header will envoke + the sw parser code. */ + uint8_t indexPerHdr; /**< IN. Normally 0, if more than one sw parser + attachments for the same header, use this + + index to distinguish between them. */ +} _PackedType t_FmPcdIpcSwPrsLable; + +/**************************************************************************//** + @Description Structure for port-PCD communication. + Fields commented 'IN' are passed by the port module to be used + by the FM module. + Fields commented 'OUT' will be filled by FM before returning to port. + Some fields are optional (depending on configuration) and + will be analized by the port and FM modules accordingly. +*//***************************************************************************/ +typedef struct t_FmPcdIpcKgSchemesParams +{ + uint8_t guestId; /**< IN */ + uint8_t numOfSchemes; /**< IN */ + uint8_t schemesIds[FM_PCD_KG_NUM_OF_SCHEMES]; /**< OUT */ +} _PackedType t_FmPcdIpcKgSchemesParams; + +typedef struct t_FmPcdIpcKgClsPlanParams +{ + uint8_t guestId; /**< IN */ + uint16_t numOfClsPlanEntries; /**< IN */ + uint8_t clsPlanBase; /**< IN in alloc only */ +} _PackedType t_FmPcdIpcKgClsPlanParams; + +typedef _Packed struct t_FmPcdIpcPlcrAllocParams +{ + uint16_t num; + uint8_t hardwarePortId; + uint16_t plcrProfilesBase; +} _PackedType t_FmPcdIpcPlcrAllocParams; + +typedef _Packed struct t_FmPcdIpcSharedPlcrAllocParams +{ + uint16_t num; /**< IN */ + //uint16_t profilesIds[FM_PCD_PLCR_NUM_ENTRIES]; /**< OUT */ + uint32_t sharedProfilesMask[8]; +} _PackedType t_FmPcdIpcSharedPlcrAllocParams; + +typedef _Packed struct t_FmPcdIpcPrsIncludePort +{ + uint8_t hardwarePortId; /* IN */ + bool include; /* IN */ +} _PackedType t_FmPcdIpcPrsIncludePort; + + +#define FM_PCD_MAX_REPLY_SIZE 16 +#define FM_PCD_MAX_MSG_SIZE 36 +#define FM_PCD_MAX_REPLY_BODY_SIZE 36 + +typedef _Packed struct +{ + uint32_t msgId; + uint8_t msgBody[FM_PCD_MAX_MSG_SIZE]; +} _PackedType t_FmPcdIpcMsg; + +typedef _Packed struct t_FmPcdIpcReply +{ + uint32_t error; + uint8_t replyBody[FM_PCD_MAX_REPLY_BODY_SIZE]; +} _PackedType t_FmPcdIpcReply; + +#define MEM_MAP_END +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(pop) +#endif /* defined(__MWERKS__) && ... */ + + + +/**************************************************************************//** + @Function FM_PCD_ALLOC_KG_SCHEMES + + @Description Used by FM PCD front-end in order to allocate KG resources + + @Param[in/out] t_FmPcdIpcKgAllocParams Pointer +*//***************************************************************************/ +#define FM_PCD_ALLOC_KG_SCHEMES 3 + +/**************************************************************************//** + @Function FM_PCD_FREE_KG_SCHEMES + + @Description Used by FM PCD front-end in order to Free KG resources + + @Param[in/out] t_FmPcdIpcKgSchemesParams Pointer +*//***************************************************************************/ +#define FM_PCD_FREE_KG_SCHEMES 4 + +/**************************************************************************//** + @Function FM_PCD_ALLOC_PROFILES + + @Description Used by FM PCD front-end in order to allocate Policer profiles + + @Param[in/out] t_FmPcdIpcKgSchemesParams Pointer +*//***************************************************************************/ +#define FM_PCD_ALLOC_PROFILES 5 + +/**************************************************************************//** + @Function FM_PCD_FREE_PROFILES + + @Description Used by FM PCD front-end in order to Free Policer profiles + + @Param[in/out] t_FmPcdIpcPlcrAllocParams Pointer +*//***************************************************************************/ +#define FM_PCD_FREE_PROFILES 6 + +/**************************************************************************//** + @Function FM_PCD_GET_PHYS_MURAM_BASE + + @Description Used by FM PCD front-end in order to get MURAM base address + + @Param[in/out] t_FmPcdIcPhysAddr Pointer +*//***************************************************************************/ +#define FM_PCD_GET_PHYS_MURAM_BASE 7 + +/**************************************************************************//** + @Function FM_PCD_GET_SW_PRS_OFFSET + + @Description Used by FM front-end to get the SW parser offset of the start of + code relevant to a given label. + + @Param[in/out] t_FmPcdIpcSwPrsLable Pointer +*//***************************************************************************/ +#define FM_PCD_GET_SW_PRS_OFFSET 8 + +/**************************************************************************//** + @Function FM_PCD_ALLOC_SHARED_PROFILES + + @Description Used by FM PCD front-end in order to allocate shared profiles + + @Param[in/out] t_FmPcdIpcSharedPlcrAllocParams Pointer +*//***************************************************************************/ +#define FM_PCD_ALLOC_SHARED_PROFILES 9 + +/**************************************************************************//** + @Function FM_PCD_FREE_SHARED_PROFILES + + @Description Used by FM PCD front-end in order to free shared profiles + + @Param[in/out] t_FmPcdIpcSharedPlcrAllocParams Pointer +*//***************************************************************************/ +#define FM_PCD_FREE_SHARED_PROFILES 10 + +/**************************************************************************//** + @Function FM_PCD_MASTER_IS_ENABLED + + @Description Used by FM front-end in order to verify + PCD enablement. + + @Param[in] bool Pointer +*//***************************************************************************/ +#define FM_PCD_MASTER_IS_ENABLED 15 + +/**************************************************************************//** + @Function FM_PCD_GUEST_DISABLE + + @Description Used by FM front-end to inform back-end when + front-end PCD is disabled + + @Param[in] None +*//***************************************************************************/ +#define FM_PCD_GUEST_DISABLE 16 + +/**************************************************************************//** + @Function FM_PCD_DUMP_REGS + + @Description Used by FM front-end to dump all PCD registers + + @Param[in] None +*//***************************************************************************/ +#define FM_PCD_DUMP_REGS 17 + +/**************************************************************************//** + @Function FM_PCD_KG_DUMP_REGS + + @Description Used by FM front-end to dump KG registers + + @Param[in] None +*//***************************************************************************/ +#define FM_PCD_KG_DUMP_REGS 18 + +/**************************************************************************//** + @Function FM_PCD_PLCR_DUMP_REGS + + @Description Used by FM front-end to dump PLCR registers + + @Param[in] None +*//***************************************************************************/ +#define FM_PCD_PLCR_DUMP_REGS 19 + +/**************************************************************************//** + @Function FM_PCD_PLCR_PROFILE_DUMP_REGS + + @Description Used by FM front-end to dump PLCR specified profile registers + + @Param[in] t_Handle Pointer +*//***************************************************************************/ +#define FM_PCD_PLCR_PROFILE_DUMP_REGS 20 + +/**************************************************************************//** + @Function FM_PCD_PRS_DUMP_REGS + + @Description Used by FM front-end to dump PRS registers + + @Param[in] None +*//***************************************************************************/ +#define FM_PCD_PRS_DUMP_REGS 21 + +/**************************************************************************//** + @Function FM_PCD_FREE_KG_CLSPLAN + + @Description Used by FM PCD front-end in order to Free KG classification plan entries + + @Param[in/out] t_FmPcdIpcKgClsPlanParams Pointer +*//***************************************************************************/ +#define FM_PCD_FREE_KG_CLSPLAN 22 + +/**************************************************************************//** + @Function FM_PCD_ALLOC_KG_CLSPLAN + + @Description Used by FM PCD front-end in order to allocate KG classification plan entries + + @Param[in/out] t_FmPcdIpcKgClsPlanParams Pointer +*//***************************************************************************/ +#define FM_PCD_ALLOC_KG_CLSPLAN 23 + +/**************************************************************************//** + @Function FM_PCD_MASTER_IS_ALIVE + + @Description Used by FM front-end to check that back-end exists + + @Param[in] None +*//***************************************************************************/ +#define FM_PCD_MASTER_IS_ALIVE 24 + +/**************************************************************************//** + @Function FM_PCD_GET_COUNTER + + @Description Used by FM front-end to read PCD counters + + @Param[in/out] t_FmPcdIpcGetCounter Pointer +*//***************************************************************************/ +#define FM_PCD_GET_COUNTER 25 + +/**************************************************************************//** + @Function FM_PCD_PRS_INC_PORT_STATS + + @Description Used by FM front-end to set/clear statistics for port + + @Param[in/out] t_FmPcdIpcPrsIncludePort Pointer +*//***************************************************************************/ +#define FM_PCD_PRS_INC_PORT_STATS 26 +/** @} */ /* end of FM_PCD_IPC_grp group */ +/** @} */ /* end of FM_grp group */ + + +#endif /* __FM_PCD_IPC_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/Pcd/fm_plcr.c +++ linux-3.13.0/drivers/net/dpa/NetCommSw/Peripherals/FM/Pcd/fm_plcr.c @@ -0,0 +1,1702 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 fm_plcr.c + + @Description FM PCD POLICER... +*//***************************************************************************/ +#include "std_ext.h" +#include "error_ext.h" +#include "string_ext.h" +#include "debug_ext.h" +#include "net_ext.h" +#include "fm_ext.h" + +#include "fm_common.h" +#include "fm_pcd.h" +#include "fm_hc.h" +#include "fm_pcd_ipc.h" + + +static bool FmPcdPlcrIsProfileShared(t_Handle h_FmPcd, uint16_t absoluteProfileId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint16_t i; + + SANITY_CHECK_RETURN_VALUE(p_FmPcd, E_INVALID_HANDLE, FALSE); + + for(i=0;ip_FmPcdPlcr->numOfSharedProfiles;i++) + if(p_FmPcd->p_FmPcdPlcr->sharedProfilesIds[i] == absoluteProfileId) + return TRUE; + return FALSE; +} + +static t_Error SetProfileNia(t_FmPcd *p_FmPcd, e_FmPcdEngine nextEngine, u_FmPcdPlcrNextEngineParams *p_NextEngineParams, uint32_t *nextAction) +{ + uint32_t nia; + uint16_t absoluteProfileId = (uint16_t)(PTR_TO_UINT(p_NextEngineParams->h_Profile)-1); + uint8_t relativeSchemeId, physicatSchemeId; + + nia = FM_PCD_PLCR_NIA_VALID; + + switch (nextEngine) + { + case e_FM_PCD_DONE : + switch (p_NextEngineParams->action) + { + case e_FM_PCD_DROP_FRAME : + nia |= (NIA_ENG_BMI | NIA_BMI_AC_DISCARD); + break; + case e_FM_PCD_ENQ_FRAME: + nia |= (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME); + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + } + break; + case e_FM_PCD_KG: + physicatSchemeId = (uint8_t)(PTR_TO_UINT(p_NextEngineParams->h_DirectScheme)-1); + relativeSchemeId = FmPcdKgGetRelativeSchemeId(p_FmPcd, physicatSchemeId); + if(relativeSchemeId == FM_PCD_KG_NUM_OF_SCHEMES) + RETURN_ERROR(MAJOR, E_NOT_IN_RANGE, NO_MSG); + if (!FmPcdKgIsSchemeValidSw(p_FmPcd, relativeSchemeId)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid direct scheme.")); + if(!KgIsSchemeAlwaysDirect(p_FmPcd, relativeSchemeId)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Policer Profile may point only to a scheme that is always direct.")); + nia |= NIA_ENG_KG | NIA_KG_DIRECT | physicatSchemeId; + break; + case e_FM_PCD_PLCR: + if(!FmPcdPlcrIsProfileShared(p_FmPcd, absoluteProfileId)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Next profile must be a shared profile")); + if(!FmPcdPlcrIsProfileValid(p_FmPcd, absoluteProfileId)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid profile ")); + nia |= NIA_ENG_PLCR | NIA_PLCR_ABSOLUTE | absoluteProfileId; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + } + + *nextAction = nia; + + return E_OK; +} + +static uint32_t FPP_Function(uint32_t fpp) +{ + if(fpp > 15) + return 15 - (0x1f - fpp); + else + return 16 + fpp; +} + +static void GetInfoRateReg(e_FmPcdPlcrRateMode rateMode, + uint32_t rate, + uint64_t tsuInTenthNano, + uint32_t fppShift, + uint64_t *p_Integer, + uint64_t *p_Fraction) +{ + uint64_t tmp, div; + + if(rateMode == e_FM_PCD_PLCR_BYTE_MODE) + { + /* now we calculate the initial integer for the bigger rate */ + /* from Kbps to Bytes/TSU */ + tmp = (uint64_t)rate; + tmp *= 1000; /* kb --> b */ + tmp *= tsuInTenthNano; /* bps --> bpTsu(in 10nano) */ + + div = 1000000000; /* nano */ + div *= 10; /* 10 nano */ + div *= 8; /* bit to byte */ + } + else + { + /* now we calculate the initial integer for the bigger rate */ + /* from Kbps to Bytes/TSU */ + tmp = (uint64_t)rate; + tmp *= tsuInTenthNano; /* bps --> bpTsu(in 10nano) */ + + div = 1000000000; /* nano */ + div *= 10; /* 10 nano */ + } + *p_Integer = (tmp<h_Fm); /* TimeStamp per nano seconds units */ + /* we want the tsu to count 10 nano for better precision normally tsu is 3.9 nano, now we will get 39 */ + tsuInTenthNanos = (uint32_t)(1000*10/(1<comittedInfoRate > p_NonPassthroughAlgParam->peakOrAccessiveInfoRate) + GetInfoRateReg(p_NonPassthroughAlgParam->rateMode, p_NonPassthroughAlgParam->comittedInfoRate, tsuInTenthNanos, 0, &integer, &fraction); + else + GetInfoRateReg(p_NonPassthroughAlgParam->rateMode, p_NonPassthroughAlgParam->peakOrAccessiveInfoRate, tsuInTenthNanos, 0, &integer, &fraction); + + + /* we shift integer, as in cir/pir it is represented by the MSB 16 bits, and + * the LSB bits are for the fraction */ + temp = (uint32_t)((integer<<16) & 0x00000000FFFFFFFF); + /* temp is effected by the rate. For low rates it may be as low as 0, and then we'll + * take max fpp=31. + * For high rates it will never exceed the 32 bit reg (after the 16 shift), as it is + * limited by the 10G physical port. + */ + if(temp != 0) + { + /* count zeroes left of the higher used bit (in order to shift the value such that + * unused bits may be used for fraction). + */ + while ((temp & 0x80000000) == 0) + { + temp = temp << 1; + fppShift++; + } + if(fppShift > 15) + { + REPORT_ERROR(MAJOR, E_INVALID_SELECTION, ("timeStampPeriod to Information rate ratio is too small")); + return; + } + } + else + { + temp = (uint32_t)fraction; /* fraction will alyas be smaller than 2^16 */ + if(!temp) + /* integer and fraction are 0, we set fpp to its max val */ + fppShift = 31; + else + { + /* integer was 0 but fraction is not. fpp is 16 for the integer, + * + all left zeroes of the fraction. */ + fppShift=16; + /* count zeroes left of the higher used bit (in order to shift the value such that + * unused bits may be used for fraction). + */ + while ((temp & 0x8000) == 0) + { + temp = temp << 1; + fppShift++; + } + } + } + + /* + * This means that the FM TS register will now be used so that 'count' bits are for + * fraction and the rest for integer */ + /* now we re-calculate cir */ + GetInfoRateReg(p_NonPassthroughAlgParam->rateMode, p_NonPassthroughAlgParam->comittedInfoRate, tsuInTenthNanos, fppShift, &integer, &fraction); + *cir = (uint32_t)(integer << 16 | (fraction & 0xFFFF)); + GetInfoRateReg(p_NonPassthroughAlgParam->rateMode, p_NonPassthroughAlgParam->peakOrAccessiveInfoRate, tsuInTenthNanos, fppShift, &integer, &fraction); + *pir_eir = (uint32_t)(integer << 16 | (fraction & 0xFFFF)); + + *cbs = p_NonPassthroughAlgParam->comittedBurstSize; + *pbs_ebs = p_NonPassthroughAlgParam->peakOrAccessiveBurstSize; + + /* get fpp as it should be written to reg.*/ + *fpp = FPP_Function(fppShift); + +} + +static void WritePar(t_FmPcd *p_FmPcd, uint32_t par) +{ + t_FmPcdPlcrRegs *p_FmPcdPlcrRegs = p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs; + + ASSERT_COND(FmIsMaster(p_FmPcd->h_Fm)); + WRITE_UINT32(p_FmPcdPlcrRegs->fmpl_par, par); + + while(GET_UINT32(p_FmPcdPlcrRegs->fmpl_par) & FM_PCD_PLCR_PAR_GO) ; + +} + +/*********************************************/ +/*............Policer Exception..............*/ +/*********************************************/ +static void PcdPlcrException(t_Handle h_FmPcd) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + uint32_t event, mask, force; + + ASSERT_COND(FmIsMaster(p_FmPcd->h_Fm)); + event = GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_evr); + mask = GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_ier); + + event &= mask; + + /* clear the forced events */ + force = GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_ifr); + if(force & event) + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_ifr, force & ~event); + + + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_evr, event); + + if(event & FM_PCD_PLCR_PRAM_SELF_INIT_COMPLETE) + p_FmPcd->f_Exception(p_FmPcd->h_App,e_FM_PCD_PLCR_EXCEPTION_PRAM_SELF_INIT_COMPLETE); + if(event & FM_PCD_PLCR_ATOMIC_ACTION_COMPLETE) + p_FmPcd->f_Exception(p_FmPcd->h_App,e_FM_PCD_PLCR_EXCEPTION_ATOMIC_ACTION_COMPLETE); + +} + +/* ..... */ + +static void PcdPlcrErrorException(t_Handle h_FmPcd) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + uint32_t event, force, captureReg, mask; + + ASSERT_COND(FmIsMaster(p_FmPcd->h_Fm)); + event = GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_eevr); + mask = GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_eier); + + event &= mask; + + /* clear the forced events */ + force = GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_eifr); + if(force & event) + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_eifr, force & ~event); + + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_eevr, event); + + if(event & FM_PCD_PLCR_DOUBLE_ECC) + p_FmPcd->f_Exception(p_FmPcd->h_App,e_FM_PCD_PLCR_EXCEPTION_DOUBLE_ECC); + if(event & FM_PCD_PLCR_INIT_ENTRY_ERROR) + { + captureReg = GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_upcr); + /*ASSERT_COND(captureReg & PLCR_ERR_UNINIT_CAP); + p_UnInitCapt->profileNum = (uint8_t)(captureReg & PLCR_ERR_UNINIT_NUM_MASK); + p_UnInitCapt->portId = (uint8_t)((captureReg & PLCR_ERR_UNINIT_PID_MASK) >>PLCR_ERR_UNINIT_PID_SHIFT) ; + p_UnInitCapt->absolute = (bool)(captureReg & PLCR_ERR_UNINIT_ABSOLUTE_MASK);*/ + p_FmPcd->f_FmPcdIndexedException(p_FmPcd->h_App,e_FM_PCD_PLCR_EXCEPTION_INIT_ENTRY_ERROR,(uint16_t)(captureReg & PLCR_ERR_UNINIT_NUM_MASK)); + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_upcr, PLCR_ERR_UNINIT_CAP); + } +} + +void FmPcdPlcrUpatePointedOwner(t_Handle h_FmPcd, uint16_t absoluteProfileId, bool add) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + ASSERT_COND(p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].valid); + + if(add) + p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].pointedOwners++; + else + p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].pointedOwners--; +} + +uint32_t FmPcdPlcrGetPointedOwners(t_Handle h_FmPcd, uint16_t absoluteProfileId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + ASSERT_COND(p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].valid); + + return p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].pointedOwners; +} +uint32_t FmPcdPlcrGetRequiredAction(t_Handle h_FmPcd, uint16_t absoluteProfileId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + ASSERT_COND(p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].valid); + + return p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].requiredAction; +} + +t_Error FmPcdPlcrAllocProfiles(t_Handle h_FmPcd, uint8_t hardwarePortId, uint16_t numOfProfiles) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + t_FmPcdIpcPlcrAllocParams ipcPlcrParams; + t_Error err = E_OK; + uint16_t base; + uint16_t swPortIndex = 0; + t_FmPcdIpcMsg msg; + uint32_t replyLength; + t_FmPcdIpcReply reply; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + + if(!numOfProfiles) + return E_OK; + + memset(&ipcPlcrParams, 0, sizeof(ipcPlcrParams)); + + if(p_FmPcd->guestId != NCSW_MASTER_ID) + { + /* Alloc resources using IPC messaging */ + memset(&reply, 0, sizeof(reply)); + memset(&msg, 0, sizeof(msg)); + ipcPlcrParams.num = numOfProfiles; + ipcPlcrParams.hardwarePortId = hardwarePortId; + msg.msgId = FM_PCD_ALLOC_PROFILES; + memcpy(msg.msgBody, &ipcPlcrParams, sizeof(ipcPlcrParams)); + replyLength = sizeof(uint32_t) + sizeof(uint16_t); + if ((err = XX_IpcSendMessage(p_FmPcd->h_IpcSession, + (uint8_t*)&msg, + sizeof(msg.msgId) +sizeof(ipcPlcrParams), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MAJOR, err,NO_MSG); + if (replyLength != sizeof(uint32_t) + sizeof(uint16_t)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + if((t_Error)reply.error != E_OK) + RETURN_ERROR(MAJOR, (t_Error)reply.error, ("PLCR profiles allocation failed")); + + memcpy((uint8_t*)&base, reply.replyBody, sizeof(uint16_t)); + } + else /* master */ + { + err = PlcrAllocProfiles(p_FmPcd, hardwarePortId, numOfProfiles, &base); + if(err) + RETURN_ERROR(MAJOR, err,NO_MSG); + } + HW_PORT_ID_TO_SW_PORT_INDX(swPortIndex, hardwarePortId); + + p_FmPcd->p_FmPcdPlcr->portsMapping[swPortIndex].numOfProfiles = numOfProfiles; + p_FmPcd->p_FmPcdPlcr->portsMapping[swPortIndex].profilesBase = base; + + return E_OK; +} + +t_Error FmPcdPlcrFreeProfiles(t_Handle h_FmPcd, uint8_t hardwarePortId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + t_FmPcdIpcPlcrAllocParams ipcPlcrParams; + t_Error err = E_OK; + uint16_t swPortIndex = 0; + t_FmPcdIpcMsg msg; + uint32_t replyLength; + t_FmPcdIpcReply reply; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + + HW_PORT_ID_TO_SW_PORT_INDX(swPortIndex, hardwarePortId); + + if(p_FmPcd->guestId != NCSW_MASTER_ID) + { + /* Alloc resources using IPC messaging */ + memset(&reply, 0, sizeof(reply)); + memset(&msg, 0, sizeof(msg)); + ipcPlcrParams.num = p_FmPcd->p_FmPcdPlcr->portsMapping[swPortIndex].numOfProfiles; + ipcPlcrParams.hardwarePortId = hardwarePortId; + ipcPlcrParams.plcrProfilesBase = p_FmPcd->p_FmPcdPlcr->portsMapping[swPortIndex].profilesBase; + msg.msgId = FM_PCD_FREE_PROFILES; + memcpy(msg.msgBody, &ipcPlcrParams, sizeof(ipcPlcrParams)); + replyLength = sizeof(uint32_t); + if ((err = XX_IpcSendMessage(p_FmPcd->h_IpcSession, + (uint8_t*)&msg, + sizeof(msg.msgId) +sizeof(ipcPlcrParams), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MAJOR, err,NO_MSG); + if (replyLength != sizeof(uint32_t)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + if ((t_Error)reply.error != E_OK) + RETURN_ERROR(MINOR, (t_Error)reply.error, ("PLCR Free Profiles failed")); + } + else /* master */ + { + err = PlcrFreeProfiles(p_FmPcd, hardwarePortId, p_FmPcd->p_FmPcdPlcr->portsMapping[swPortIndex].numOfProfiles, p_FmPcd->p_FmPcdPlcr->portsMapping[swPortIndex].profilesBase); + if(err) + RETURN_ERROR(MAJOR, err,NO_MSG); + } + p_FmPcd->p_FmPcdPlcr->portsMapping[swPortIndex].numOfProfiles = 0; + p_FmPcd->p_FmPcdPlcr->portsMapping[swPortIndex].profilesBase = 0; + + return E_OK; +} + +bool FmPcdPlcrIsProfileValid(t_Handle h_FmPcd, uint16_t absoluteProfileId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + t_FmPcdPlcr *p_FmPcdPlcr = p_FmPcd->p_FmPcdPlcr; + + return p_FmPcdPlcr->profiles[absoluteProfileId].valid; +} + +t_Error PlcrAllocProfiles(t_FmPcd *p_FmPcd, uint8_t hardwarePortId, uint16_t numOfProfiles, uint16_t *p_Base) +{ + t_FmPcdPlcrRegs *p_Regs = p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs; + uint32_t profilesFound, log2Num, tmpReg32; + uint32_t intFlags; + uint16_t first, i; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + + ASSERT_COND(FmIsMaster(p_FmPcd->h_Fm)); + if(!numOfProfiles) + return E_OK; + + ASSERT_COND(hardwarePortId); + + if (numOfProfiles>FM_PCD_PLCR_NUM_ENTRIES) + RETURN_ERROR(MINOR, E_INVALID_VALUE, ("numProfiles is too big.")); + + if (!POWER_OF_2(numOfProfiles)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("numProfiles must be a power of 2.")); + + intFlags = FmPcdLock(p_FmPcd); + + if(GET_UINT32(p_Regs->fmpl_pmr[hardwarePortId-1]) & FM_PCD_PLCR_PMR_V) + { + FmPcdUnlock(p_FmPcd, intFlags); + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("The requesting port has already an allocated profiles window.")); + } + + first = 0; + profilesFound = 0; + for(i=0;ip_FmPcdPlcr->profiles[i].profilesMng.allocated) + { + profilesFound++; + i++; + if(profilesFound == numOfProfiles) + break; + } + else + { + profilesFound = 0; + /* advance i to the next aligned address */ + first = i = (uint8_t)(first + numOfProfiles); + } + } + if(profilesFound == numOfProfiles) + { + for(i = first; ip_FmPcdPlcr->profiles[i].profilesMng.allocated = TRUE; + p_FmPcd->p_FmPcdPlcr->profiles[i].profilesMng.ownerId = hardwarePortId; + } + } + else + { + FmPcdUnlock(p_FmPcd, intFlags); + RETURN_ERROR(MINOR, E_FULL, ("No profiles.")); + } + + /**********************FMPL_PMRx******************/ + LOG2((uint64_t)numOfProfiles, log2Num); + tmpReg32 = first; + tmpReg32 |= log2Num << 16; + tmpReg32 |= FM_PCD_PLCR_PMR_V; + WRITE_UINT32(p_Regs->fmpl_pmr[hardwarePortId-1], tmpReg32); + + *p_Base = first; + + FmPcdUnlock(p_FmPcd, intFlags); + + return E_OK; +} + +t_Error PlcrAllocSharedProfiles(t_FmPcd *p_FmPcd, uint16_t numOfProfiles, uint16_t *profilesIds) +{ + uint32_t profilesFound; + uint16_t i, k=0; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + + ASSERT_COND(FmIsMaster(p_FmPcd->h_Fm)); + if(!numOfProfiles) + return E_OK; + + if (numOfProfiles>FM_PCD_PLCR_NUM_ENTRIES) + RETURN_ERROR(MINOR, E_INVALID_VALUE, ("numProfiles is too big.")); + + profilesFound = 0; + for(i=0;ip_FmPcdPlcr->profiles[i].profilesMng.allocated) + { + profilesFound++; + profilesIds[k] = i; + k++; + if(profilesFound == numOfProfiles) + break; + } + } + if(profilesFound != numOfProfiles) + RETURN_ERROR(MAJOR, E_INVALID_STATE,NO_MSG); + for(i = 0;ip_FmPcdPlcr->profiles[profilesIds[i]].profilesMng.allocated = TRUE; + p_FmPcd->p_FmPcdPlcr->profiles[profilesIds[i]].profilesMng.ownerId = 0; + } + + return E_OK; +} + +t_Error PlcrFreeProfiles(t_FmPcd *p_FmPcd, uint8_t hardwarePortId, uint16_t numOfProfiles, uint16_t base) +{ + t_FmPcdPlcrRegs *p_Regs = p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs; + uint16_t i; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_HANDLE); + + ASSERT_COND(FmIsMaster(p_FmPcd->h_Fm)); + ASSERT_COND(IN_RANGE(1, hardwarePortId, 63)); + WRITE_UINT32(p_Regs->fmpl_pmr[hardwarePortId-1], 0); + + for(i = base; ip_FmPcdPlcr->profiles[i].profilesMng.ownerId == hardwarePortId); + ASSERT_COND(p_FmPcd->p_FmPcdPlcr->profiles[i].profilesMng.allocated); + + p_FmPcd->p_FmPcdPlcr->profiles[i].profilesMng.allocated = FALSE; + p_FmPcd->p_FmPcdPlcr->profiles[i].profilesMng.ownerId = 0; + } + + return E_OK; +} + +void PlcrFreeSharedProfiles(t_FmPcd *p_FmPcd, uint16_t numOfProfiles, uint16_t *profilesIds) +{ + uint16_t i; + + SANITY_CHECK_RETURN(p_FmPcd, E_INVALID_HANDLE); + + ASSERT_COND(FmIsMaster(p_FmPcd->h_Fm)); + for(i=0;ip_FmPcdPlcr->profiles[profilesIds[i]].profilesMng.allocated); + p_FmPcd->p_FmPcdPlcr->profiles[profilesIds[i]].profilesMng.allocated = FALSE; + } +} + +void PlcrEnable(t_FmPcd *p_FmPcd) +{ + t_FmPcdPlcrRegs *p_Regs = p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs; + + WRITE_UINT32(p_Regs->fmpl_gcr, GET_UINT32(p_Regs->fmpl_gcr) | FM_PCD_PLCR_GCR_EN); +} + +void PlcrDisable(t_FmPcd *p_FmPcd) +{ + t_FmPcdPlcrRegs *p_Regs = p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs; + + WRITE_UINT32(p_Regs->fmpl_gcr, GET_UINT32(p_Regs->fmpl_gcr) & ~FM_PCD_PLCR_GCR_EN); +} + +t_Error FM_PCD_SetPlcrStatistics(t_Handle h_FmPcd, bool enable) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint32_t tmpReg32; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdPlcr, E_INVALID_HANDLE); + + if(!FmIsMaster(p_FmPcd->h_Fm)) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("FM_PCD_SetPlcrStatistics - guest mode!")); + + tmpReg32 = GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_gcr); + if(enable) + tmpReg32 |= FM_PCD_PLCR_GCR_STEN; + else + tmpReg32 &= ~FM_PCD_PLCR_GCR_STEN; + + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_gcr, tmpReg32); + return E_OK; +} + +t_Error FM_PCD_ConfigPlcrAutoRefreshMode(t_Handle h_FmPcd, bool enable) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdDriverParam, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdPlcr, E_INVALID_HANDLE); + + if(!FmIsMaster(p_FmPcd->h_Fm)) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("FM_PCD_ConfigPlcrAutoRefreshMode - guest mode!")); + + p_FmPcd->p_FmPcdDriverParam->plcrAutoRefresh = enable; + + return E_OK; +} + + +t_Error FmPcdPlcrBuildProfile(t_Handle h_FmPcd, t_FmPcdPlcrProfileParams *p_Profile, t_FmPcdPlcrInterModuleProfileRegs *p_PlcrRegs) +{ + + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + t_Error err = E_OK; + uint32_t pemode, gnia, ynia, rnia; + +/* Set G, Y, R Nia */ + err = SetProfileNia(p_FmPcd, p_Profile->nextEngineOnGreen, &(p_Profile->paramsOnGreen), &gnia); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + err = SetProfileNia(p_FmPcd, p_Profile->nextEngineOnYellow, &(p_Profile->paramsOnYellow), &ynia); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + err = SetProfileNia(p_FmPcd, p_Profile->nextEngineOnRed, &(p_Profile->paramsOnRed), &rnia); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + + +/* Mode fmpl_pemode */ + pemode = FM_PCD_PLCR_PEMODE_PI; + + switch (p_Profile->algSelection) + { + case e_FM_PCD_PLCR_PASS_THROUGH: + p_PlcrRegs->fmpl_pecir = 0; + p_PlcrRegs->fmpl_pecbs = 0; + p_PlcrRegs->fmpl_pepepir_eir = 0; + p_PlcrRegs->fmpl_pepbs_ebs = 0; + p_PlcrRegs->fmpl_pelts = 0; + p_PlcrRegs->fmpl_pects = 0; + p_PlcrRegs->fmpl_pepts_ets = 0; + pemode &= ~FM_PCD_PLCR_PEMODE_ALG_MASK; + switch (p_Profile->colorMode) + { + case e_FM_PCD_PLCR_COLOR_BLIND: + pemode |= FM_PCD_PLCR_PEMODE_CBLND; + switch (p_Profile->color.dfltColor) + { + case e_FM_PCD_PLCR_GREEN: + pemode &= ~FM_PCD_PLCR_PEMODE_DEFC_MASK; + break; + case e_FM_PCD_PLCR_YELLOW: + pemode |= FM_PCD_PLCR_PEMODE_DEFC_Y; + break; + case e_FM_PCD_PLCR_RED: + pemode |= FM_PCD_PLCR_PEMODE_DEFC_R; + break; + case e_FM_PCD_PLCR_OVERRIDE: + pemode |= FM_PCD_PLCR_PEMODE_DEFC_OVERRIDE; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + } + + break; + case e_FM_PCD_PLCR_COLOR_AWARE: + pemode &= ~FM_PCD_PLCR_PEMODE_CBLND; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + } + break; + + case e_FM_PCD_PLCR_RFC_2698: + /* Select algorithm MODE[ALG] = "01" */ + pemode |= FM_PCD_PLCR_PEMODE_ALG_RFC2698; + if (p_Profile->nonPassthroughAlgParams.comittedInfoRate > p_Profile->nonPassthroughAlgParams.peakOrAccessiveInfoRate) + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("in RFC2698 Peak rate must be equal or larger than comittedInfoRate.")); + goto cont_rfc; + case e_FM_PCD_PLCR_RFC_4115: + /* Select algorithm MODE[ALG] = "10" */ + pemode |= FM_PCD_PLCR_PEMODE_ALG_RFC4115; +cont_rfc: + /* Select Color-Blind / Color-Aware operation (MODE[CBLND]) */ + switch (p_Profile->colorMode) + { + case e_FM_PCD_PLCR_COLOR_BLIND: + pemode |= FM_PCD_PLCR_PEMODE_CBLND; + break; + case e_FM_PCD_PLCR_COLOR_AWARE: + pemode &= ~FM_PCD_PLCR_PEMODE_CBLND; + /*In color aware more select override color interpretation (MODE[OVCLR]) */ + switch (p_Profile->color.override) + { + case e_FM_PCD_PLCR_GREEN: + pemode &= ~FM_PCD_PLCR_PEMODE_OVCLR_MASK; + break; + case e_FM_PCD_PLCR_YELLOW: + pemode |= FM_PCD_PLCR_PEMODE_OVCLR_Y; + break; + case e_FM_PCD_PLCR_RED: + pemode |= FM_PCD_PLCR_PEMODE_OVCLR_R; + break; + case e_FM_PCD_PLCR_OVERRIDE: + pemode |= FM_PCD_PLCR_PEMODE_OVCLR_G_NC; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + } + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + } + /* Select Measurement Unit Mode to BYTE or PACKET (MODE[PKT]) */ + switch (p_Profile->nonPassthroughAlgParams.rateMode) + { + case e_FM_PCD_PLCR_BYTE_MODE : + pemode &= ~FM_PCD_PLCR_PEMODE_PKT; + switch (p_Profile->nonPassthroughAlgParams.byteModeParams.frameLengthSelection) + { + case e_FM_PCD_PLCR_L2_FRM_LEN: + pemode |= FM_PCD_PLCR_PEMODE_FLS_L2; + break; + case e_FM_PCD_PLCR_L3_FRM_LEN: + pemode |= FM_PCD_PLCR_PEMODE_FLS_L3; + break; + case e_FM_PCD_PLCR_L4_FRM_LEN: + pemode |= FM_PCD_PLCR_PEMODE_FLS_L4; + break; + case e_FM_PCD_PLCR_FULL_FRM_LEN: + pemode |= FM_PCD_PLCR_PEMODE_FLS_FULL; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + } + switch (p_Profile->nonPassthroughAlgParams.byteModeParams.rollBackFrameSelection) + { + case e_FM_PCD_PLCR_ROLLBACK_L2_FRM_LEN: + pemode &= ~FM_PCD_PLCR_PEMODE_RBFLS; + break; + case e_FM_PCD_PLCR_ROLLBACK_FULL_FRM_LEN: + pemode |= FM_PCD_PLCR_PEMODE_RBFLS; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + } + break; + case e_FM_PCD_PLCR_PACKET_MODE : + pemode |= FM_PCD_PLCR_PEMODE_PKT; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + } + /* Select timeStamp floating point position (MODE[FPP]) to fit the actual traffic rates. For PACKET + mode with low traffic rates move the fixed point to the left to increase fraction accuracy. For BYTE + mode with high traffic rates move the fixed point to the right to increase integer accuracy. */ + + /* Configure Traffic Parameters*/ + { + uint32_t cir=0, cbs=0, pir_eir=0, pbs_ebs=0, fpp=0; + + calcRates(h_FmPcd, &p_Profile->nonPassthroughAlgParams, &cir, &cbs, &pir_eir, &pbs_ebs, &fpp); + + /* Set Committed Information Rate (CIR) */ + p_PlcrRegs->fmpl_pecir = cir; + /* Set Committed Burst Size (CBS). */ + p_PlcrRegs->fmpl_pecbs = cbs; + /* Set Peak Information Rate (PIR_EIR used as PIR) */ + p_PlcrRegs->fmpl_pepepir_eir = pir_eir; + /* Set Peak Burst Size (PBS_EBS used as PBS) */ + p_PlcrRegs->fmpl_pepbs_ebs = pbs_ebs; + + /* Initialize the Metering Buckets to be full (write them with 0xFFFFFFFF. */ + /* Peak Rate Token Bucket Size (PTS_ETS used as PTS) */ + p_PlcrRegs->fmpl_pepts_ets = 0xFFFFFFFF; + /* Committed Rate Token Bucket Size (CTS) */ + p_PlcrRegs->fmpl_pects = 0xFFFFFFFF; + + /* Set the FPP based on calculation */ + pemode |= (fpp << FM_PCD_PLCR_PEMODE_FPP_SHIFT); + } + break; /* FM_PCD_PLCR_PEMODE_ALG_RFC2698 , FM_PCD_PLCR_PEMODE_ALG_RFC4115 */ + default: + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + } + + p_PlcrRegs->fmpl_pemode = pemode; + + p_PlcrRegs->fmpl_pegnia = gnia; + p_PlcrRegs->fmpl_peynia = ynia; + p_PlcrRegs->fmpl_pernia = rnia; + + /* Zero Counters */ + p_PlcrRegs->fmpl_pegpc = 0; + p_PlcrRegs->fmpl_peypc = 0; + p_PlcrRegs->fmpl_perpc = 0; + p_PlcrRegs->fmpl_perypc = 0; + p_PlcrRegs->fmpl_perrpc = 0; + + return E_OK; +} + +void FmPcdPlcrValidateProfileSw(t_Handle h_FmPcd, uint16_t absoluteProfileId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + ASSERT_COND(!p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].valid); + p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].valid = TRUE; +} + +void FmPcdPlcrInvalidateProfileSw(t_Handle h_FmPcd, uint16_t absoluteProfileId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + ASSERT_COND(p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].valid); + p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].valid = FALSE; +} + +t_Handle PlcrConfig(t_FmPcd *p_FmPcd, t_FmPcdParams *p_FmPcdParams) +{ + t_FmPcdPlcr *p_FmPcdPlcr; + /*uint8_t i=0;*/ + + UNUSED(p_FmPcd); + UNUSED(p_FmPcdParams); + + p_FmPcdPlcr = (t_FmPcdPlcr *) XX_Malloc(sizeof(t_FmPcdPlcr)); + if (!p_FmPcdPlcr) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FM Policer structure allocation FAILED")); + return NULL; + } + memset(p_FmPcdPlcr, 0, sizeof(t_FmPcdPlcr)); + if(p_FmPcd->guestId == NCSW_MASTER_ID) + { + p_FmPcdPlcr->p_FmPcdPlcrRegs = (t_FmPcdPlcrRegs *)UINT_TO_PTR(FmGetPcdPlcrBaseAddr(p_FmPcdParams->h_Fm)); + p_FmPcd->p_FmPcdDriverParam->plcrAutoRefresh = DEFAULT_plcrAutoRefresh; + p_FmPcd->exceptions |= (DEFAULT_fmPcdPlcrExceptions | DEFAULT_fmPcdPlcrErrorExceptions); + } + + p_FmPcdPlcr->numOfSharedProfiles = DEFAULT_numOfSharedPlcrProfiles; + + return p_FmPcdPlcr; +} + +t_Error PlcrInit(t_FmPcd *p_FmPcd) +{ + t_FmPcdDriverParam *p_Param = p_FmPcd->p_FmPcdDriverParam; + t_FmPcdPlcr *p_FmPcdPlcr = p_FmPcd->p_FmPcdPlcr; + uint32_t tmpReg32 = 0; + t_Error err = E_OK; + t_FmPcdPlcrRegs *p_Regs = p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs; + t_FmPcdIpcMsg msg; + uint32_t replyLength; + t_FmPcdIpcReply reply; + + if ((p_FmPcd->guestId != NCSW_MASTER_ID) && + (p_FmPcdPlcr->numOfSharedProfiles)) + { + int i, j, index = 0; + uint32_t walking1Mask = 0x80000000; + uint32_t sharedProfilesMask[FM_PCD_PLCR_NUM_ENTRIES/32]; + + memset(sharedProfilesMask, 0, FM_PCD_PLCR_NUM_ENTRIES/32 * sizeof(uint32_t)); + memset(&reply, 0, sizeof(reply)); + memset(&msg, 0, sizeof(msg)); + msg.msgId = FM_PCD_ALLOC_SHARED_PROFILES; + memcpy(msg.msgBody, (uint8_t *)&p_FmPcdPlcr->numOfSharedProfiles, sizeof(uint16_t)); + replyLength = sizeof(uint32_t) + sizeof(sharedProfilesMask); + if ((err = XX_IpcSendMessage(p_FmPcd->h_IpcSession, + (uint8_t*)&msg, + sizeof(msg.msgId)+ sizeof(p_FmPcdPlcr->numOfSharedProfiles), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MAJOR, err,NO_MSG); + if (replyLength != (sizeof(uint32_t) + sizeof(sharedProfilesMask))) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + + memcpy(sharedProfilesMask, reply.replyBody, sizeof(sharedProfilesMask)); + /* translate 8 regs of 32 bits masks into an array of up to 256 indexes. */ + for(i = 0; ip_FmPcdPlcr->sharedProfilesIds[index++] = (uint16_t)(i*32+j); + walking1Mask >>= 1; + } + walking1Mask = 0x80000000; + } + } + return (t_Error)reply.error; + } + + if(p_FmPcdPlcr->numOfSharedProfiles) + { + err = PlcrAllocSharedProfiles(p_FmPcd, p_FmPcdPlcr->numOfSharedProfiles, p_FmPcd->p_FmPcdPlcr->sharedProfilesIds); + if(err) + RETURN_ERROR(MAJOR, err,NO_MSG); + } + + /**********************FMPL_GCR******************/ + tmpReg32 = 0; + tmpReg32 |= FM_PCD_PLCR_GCR_STEN; + if(p_Param->plcrAutoRefresh) + tmpReg32 |= FM_PCD_PLCR_GCR_DAR; + tmpReg32 |= NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME; + + WRITE_UINT32(p_Regs->fmpl_gcr, tmpReg32); + /**********************FMPL_GCR******************/ + + /**********************FMPL_EEVR******************/ + WRITE_UINT32(p_Regs->fmpl_eevr, (FM_PCD_PLCR_DOUBLE_ECC | FM_PCD_PLCR_INIT_ENTRY_ERROR)); + /**********************FMPL_EEVR******************/ + /**********************FMPL_EIER******************/ + tmpReg32 = 0; + if(p_FmPcd->exceptions & FM_PCD_EX_PLCR_DOUBLE_ECC) + { + FmEnableRamsEcc(p_FmPcd->h_Fm); + tmpReg32 |= FM_PCD_PLCR_DOUBLE_ECC; + } + if(p_FmPcd->exceptions & FM_PCD_EX_PLCR_INIT_ENTRY_ERROR) + tmpReg32 |= FM_PCD_PLCR_INIT_ENTRY_ERROR; + WRITE_UINT32(p_Regs->fmpl_eier, tmpReg32); + /**********************FMPL_EIER******************/ + + /**********************FMPL_EVR******************/ + WRITE_UINT32(p_Regs->fmpl_evr, (FM_PCD_PLCR_PRAM_SELF_INIT_COMPLETE | FM_PCD_PLCR_ATOMIC_ACTION_COMPLETE)); + /**********************FMPL_EVR******************/ + /**********************FMPL_IER******************/ + tmpReg32 = 0; + if(p_FmPcd->exceptions & FM_PCD_EX_PLCR_PRAM_SELF_INIT_COMPLETE) + tmpReg32 |= FM_PCD_PLCR_PRAM_SELF_INIT_COMPLETE; + if(p_FmPcd->exceptions & FM_PCD_EX_PLCR_ATOMIC_ACTION_COMPLETE ) + tmpReg32 |= FM_PCD_PLCR_ATOMIC_ACTION_COMPLETE; + WRITE_UINT32(p_Regs->fmpl_ier, tmpReg32); + /**********************FMPL_IER******************/ + + /* register even if no interrupts enabled, to allow future enablement */ + FmRegisterIntr(p_FmPcd->h_Fm, e_FM_MOD_PLCR, 0, e_FM_INTR_TYPE_ERR, PcdPlcrErrorException, p_FmPcd); + FmRegisterIntr(p_FmPcd->h_Fm, e_FM_MOD_PLCR, 0, e_FM_INTR_TYPE_NORMAL, PcdPlcrException, p_FmPcd); + + /* driver initializes one DFLT profile at the last entry*/ + /**********************FMPL_DPMR******************/ + tmpReg32 = 0; + WRITE_UINT32(p_Regs->fmpl_dpmr, tmpReg32); + p_FmPcd->p_FmPcdPlcr->profiles[0].profilesMng.allocated = TRUE; + + return E_OK; +} + +t_Error PlcrFree(t_FmPcd *p_FmPcd) +{ + t_Error err; + t_FmPcdIpcSharedPlcrAllocParams ipcSharedPlcrParams; + t_FmPcdIpcMsg msg; + + FmUnregisterIntr(p_FmPcd->h_Fm, e_FM_MOD_PLCR, 0, e_FM_INTR_TYPE_ERR); + FmUnregisterIntr(p_FmPcd->h_Fm, e_FM_MOD_PLCR, 0, e_FM_INTR_TYPE_NORMAL); + + if(p_FmPcd->p_FmPcdPlcr->numOfSharedProfiles) + { + if(p_FmPcd->guestId != NCSW_MASTER_ID) + { + int i; + memset(ipcSharedPlcrParams.sharedProfilesMask, 0, sizeof(ipcSharedPlcrParams.sharedProfilesMask)); + /* Free resources using IPC messaging */ + ipcSharedPlcrParams.num = p_FmPcd->p_FmPcdPlcr->numOfSharedProfiles; + + /* translate the allocated profile id's to a 32bit * 8regs mask */ + for(i = 0;ip_FmPcdPlcr->numOfSharedProfiles;i++) + ipcSharedPlcrParams.sharedProfilesMask[p_FmPcd->p_FmPcdPlcr->sharedProfilesIds[i]/32] |= (0x80000000 >> (p_FmPcd->p_FmPcdPlcr->sharedProfilesIds[i] % 32)); + + memset(&msg, 0, sizeof(msg)); + msg.msgId = FM_PCD_FREE_SHARED_PROFILES; + memcpy(msg.msgBody, &ipcSharedPlcrParams, sizeof(ipcSharedPlcrParams)); + if ((err = XX_IpcSendMessage(p_FmPcd->h_IpcSession, + (uint8_t*)&msg, + sizeof(msg.msgId)+sizeof(ipcSharedPlcrParams), + NULL, + NULL, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MAJOR, err,NO_MSG); + } + /* else + PlcrFreeSharedProfiles(p_FmPcd, p_FmPcd->p_FmPcdPlcr->numOfSharedProfiles, p_FmPcd->p_FmPcdPlcr->sharedProfilesIds);*/ + } + return E_OK; +} + +t_Error FmPcdPlcrGetAbsoluteProfileId(t_Handle h_FmPcd, + e_FmPcdProfileTypeSelection profileType, + t_Handle h_FmPort, + uint16_t relativeProfile, + uint16_t *p_AbsoluteId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + t_FmPcdPlcr *p_FmPcdPlcr = p_FmPcd->p_FmPcdPlcr; + uint8_t i; + + switch (profileType) + { + case e_FM_PCD_PLCR_PORT_PRIVATE: + /* get port PCD id from port handle */ + for(i=0;ip_FmPcdPlcr->portsMapping[i].h_FmPort == h_FmPort) + break; + if (i == FM_MAX_NUM_OF_PORTS) + RETURN_ERROR(MAJOR, E_INVALID_STATE , ("Invalid port handle.")); + + if(!p_FmPcd->p_FmPcdPlcr->portsMapping[i].numOfProfiles) + RETURN_ERROR(MAJOR, E_INVALID_SELECTION , ("Port has no allocated profiles")); + if(relativeProfile >= p_FmPcd->p_FmPcdPlcr->portsMapping[i].numOfProfiles) + RETURN_ERROR(MAJOR, E_INVALID_SELECTION , ("Profile id is out of range")); + *p_AbsoluteId = (uint16_t)(p_FmPcd->p_FmPcdPlcr->portsMapping[i].profilesBase + relativeProfile); + break; + case e_FM_PCD_PLCR_SHARED: + if(relativeProfile >= p_FmPcdPlcr->numOfSharedProfiles) + RETURN_ERROR(MAJOR, E_INVALID_SELECTION , ("Profile id is out of range")); + *p_AbsoluteId = (uint16_t)(p_FmPcdPlcr->sharedProfilesIds[relativeProfile]); + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("Invalid policer profile type")); + } + return E_OK; +} + +uint16_t FmPcdPlcrGetPortProfilesBase(t_Handle h_FmPcd, uint8_t hardwarePortId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + uint16_t swPortIndex = 0; + + HW_PORT_ID_TO_SW_PORT_INDX(swPortIndex, hardwarePortId); + + return p_FmPcd->p_FmPcdPlcr->portsMapping[swPortIndex].profilesBase; +} + +uint16_t FmPcdPlcrGetPortNumOfProfiles(t_Handle h_FmPcd, uint8_t hardwarePortId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + uint16_t swPortIndex = 0; + + HW_PORT_ID_TO_SW_PORT_INDX(swPortIndex, hardwarePortId); + + return p_FmPcd->p_FmPcdPlcr->portsMapping[swPortIndex].numOfProfiles; + +} +uint32_t FmPcdPlcrBuildWritePlcrActionReg(uint16_t absoluteProfileId) +{ + return (uint32_t)(FM_PCD_PLCR_PAR_GO | + ((uint32_t)absoluteProfileId << FM_PCD_PLCR_PAR_PNUM_SHIFT)); +} + +uint32_t FmPcdPlcrBuildWritePlcrActionRegs(uint16_t absoluteProfileId) +{ + return (uint32_t)(FM_PCD_PLCR_PAR_GO | + ((uint32_t)absoluteProfileId << FM_PCD_PLCR_PAR_PNUM_SHIFT) | + FM_PCD_PLCR_PAR_PWSEL_MASK); +} + +bool FmPcdPlcrHwProfileIsValid(uint32_t profileModeReg) +{ + + if(profileModeReg & FM_PCD_PLCR_PEMODE_PI) + return TRUE; + else + return FALSE; +} + +uint32_t FmPcdPlcrBuildReadPlcrActionReg(uint16_t absoluteProfileId) +{ + return (uint32_t)(FM_PCD_PLCR_PAR_GO | + FM_PCD_PLCR_PAR_R | + ((uint32_t)absoluteProfileId << FM_PCD_PLCR_PAR_PNUM_SHIFT) | + FM_PCD_PLCR_PAR_PWSEL_MASK); +} + +uint32_t FmPcdPlcrBuildCounterProfileReg(e_FmPcdPlcrProfileCounters counter) +{ + switch(counter) + { + case(e_FM_PCD_PLCR_PROFILE_GREEN_PACKET_TOTAL_COUNTER): + return FM_PCD_PLCR_PAR_PWSEL_PEGPC; + case(e_FM_PCD_PLCR_PROFILE_YELLOW_PACKET_TOTAL_COUNTER): + return FM_PCD_PLCR_PAR_PWSEL_PEYPC; + case(e_FM_PCD_PLCR_PROFILE_RED_PACKET_TOTAL_COUNTER) : + return FM_PCD_PLCR_PAR_PWSEL_PERPC; + case(e_FM_PCD_PLCR_PROFILE_RECOLOURED_YELLOW_PACKET_TOTAL_COUNTER) : + return FM_PCD_PLCR_PAR_PWSEL_PERYPC; + case(e_FM_PCD_PLCR_PROFILE_RECOLOURED_RED_PACKET_TOTAL_COUNTER) : + return FM_PCD_PLCR_PAR_PWSEL_PERRPC; + default: + REPORT_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + return 0; + } +} + +uint32_t FmPcdPlcrBuildNiaProfileReg(bool green, bool yellow, bool red) +{ + + uint32_t tmpReg32 = 0; + + if(green) + tmpReg32 |= FM_PCD_PLCR_PAR_PWSEL_PEGNIA; + if(yellow) + tmpReg32 |= FM_PCD_PLCR_PAR_PWSEL_PEYNIA; + if(red) + tmpReg32 |= FM_PCD_PLCR_PAR_PWSEL_PERNIA; + + return tmpReg32; +} + +void FmPcdPlcrUpdateRequiredAction(t_Handle h_FmPcd, uint16_t absoluteProfileId, uint32_t requiredAction) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + ASSERT_COND(p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].valid); + + p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].requiredAction = requiredAction; +} + +t_Error FmPcdPlcrProfileTryLock(t_Handle h_FmPcd, uint16_t profileId, bool intr) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + bool ans; + if (intr) + ans = TRY_LOCK(NULL, &p_FmPcd->p_FmPcdPlcr->profiles[profileId].lock); + else + ans = TRY_LOCK(p_FmPcd->h_Spinlock, &p_FmPcd->p_FmPcdPlcr->profiles[profileId].lock); + if (ans) + return E_OK; + return ERROR_CODE(E_BUSY); +} + +void FmPcdPlcrReleaseProfileLock(t_Handle h_FmPcd, uint16_t profileId) +{ + RELEASE_LOCK(((t_FmPcd*)h_FmPcd)->p_FmPcdPlcr->profiles[profileId].lock); +} + +/**************************************************/ +/*............Policer API.........................*/ +/**************************************************/ + +t_Handle FM_PCD_PlcrSetProfile(t_Handle h_FmPcd, + t_FmPcdPlcrProfileParams *p_Profile) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + t_FmPcdPlcrRegs *p_FmPcdPlcrRegs; + t_FmPcdPlcrInterModuleProfileRegs plcrProfileReg; + uint32_t intFlags; + uint16_t absoluteProfileId; + t_Error err = E_OK; + uint32_t tmpReg32; + + SANITY_CHECK_RETURN_VALUE(p_FmPcd, E_INVALID_HANDLE, NULL); + SANITY_CHECK_RETURN_VALUE(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE, NULL); + SANITY_CHECK_RETURN_VALUE(p_FmPcd->p_FmPcdPlcr, E_INVALID_HANDLE, NULL); + + if (p_FmPcd->h_Hc) + return FmHcPcdPlcrSetProfile(p_FmPcd->h_Hc, p_Profile); + + p_FmPcdPlcrRegs = p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs; + SANITY_CHECK_RETURN_VALUE(p_FmPcdPlcrRegs, E_INVALID_HANDLE, NULL); + + if (p_Profile->modify) + { + absoluteProfileId = (uint16_t)(PTR_TO_UINT(p_Profile->id.h_Profile)-1); + if (absoluteProfileId >= FM_PCD_PLCR_NUM_ENTRIES) + { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("profileId too Big ")); + return NULL; + } + if (FmPcdPlcrProfileTryLock(p_FmPcd, absoluteProfileId, FALSE)) + return NULL; + } + else + { + intFlags = FmPcdLock(p_FmPcd); + err = FmPcdPlcrGetAbsoluteProfileId(h_FmPcd, + p_Profile->id.newParams.profileType, + p_Profile->id.newParams.h_FmPort, + p_Profile->id.newParams.relativeProfileId, + &absoluteProfileId); + if (absoluteProfileId >= FM_PCD_PLCR_NUM_ENTRIES) + { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("profileId too Big ")); + return NULL; + } + if(err) + { + FmPcdUnlock(p_FmPcd, intFlags); + REPORT_ERROR(MAJOR, err, NO_MSG); + return NULL; + } + err = FmPcdPlcrProfileTryLock(p_FmPcd, absoluteProfileId, TRUE); + FmPcdUnlock(p_FmPcd, intFlags); + if (err) + return NULL; + } + + /* if no override, check first that this profile is unused */ + if(!p_Profile->modify) + { + /* read specified profile into profile registers */ + tmpReg32 = FmPcdPlcrBuildReadPlcrActionReg(absoluteProfileId); + intFlags = FmPcdLock(p_FmPcd); + WritePar(p_FmPcd, tmpReg32); + tmpReg32 = GET_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pemode); + FmPcdUnlock(p_FmPcd, intFlags); + if (tmpReg32 & FM_PCD_PLCR_PEMODE_PI) + { + RELEASE_LOCK(p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].lock); + REPORT_ERROR(MAJOR, E_ALREADY_EXISTS, ("Policer Profile is already used")); + return NULL; + } + } + + memset(&plcrProfileReg, 0, sizeof(t_FmPcdPlcrInterModuleProfileRegs)); + + err = FmPcdPlcrBuildProfile(h_FmPcd, p_Profile, &plcrProfileReg); + if(err) + { + RELEASE_LOCK(p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].lock); + REPORT_ERROR(MAJOR, err, NO_MSG); + return NULL; + } + + p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].nextEngineOnGreen = p_Profile->nextEngineOnGreen; + memcpy(&p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].paramsOnGreen, &(p_Profile->paramsOnGreen), sizeof(u_FmPcdPlcrNextEngineParams)); + + p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].nextEngineOnYellow = p_Profile->nextEngineOnYellow; + memcpy(&p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].paramsOnYellow, &(p_Profile->paramsOnYellow), sizeof(u_FmPcdPlcrNextEngineParams)); + + p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].nextEngineOnRed = p_Profile->nextEngineOnRed; + memcpy(&p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].paramsOnRed, &(p_Profile->paramsOnRed), sizeof(u_FmPcdPlcrNextEngineParams)); + + intFlags = FmPcdLock(p_FmPcd); + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pemode , plcrProfileReg.fmpl_pemode); + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pegnia , plcrProfileReg.fmpl_pegnia); + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_peynia , plcrProfileReg.fmpl_peynia); + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pernia , plcrProfileReg.fmpl_pernia); + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pecir , plcrProfileReg.fmpl_pecir); + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pecbs , plcrProfileReg.fmpl_pecbs); + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pepepir_eir,plcrProfileReg.fmpl_pepepir_eir); + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pepbs_ebs,plcrProfileReg.fmpl_pepbs_ebs); + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pelts , plcrProfileReg.fmpl_pelts); + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pects , plcrProfileReg.fmpl_pects); + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pepts_ets,plcrProfileReg.fmpl_pepts_ets); + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pegpc , plcrProfileReg.fmpl_pegpc); + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_peypc , plcrProfileReg.fmpl_peypc); + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_perpc , plcrProfileReg.fmpl_perpc); + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_perypc , plcrProfileReg.fmpl_perypc); + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_perrpc , plcrProfileReg.fmpl_perrpc); + + tmpReg32 = FmPcdPlcrBuildWritePlcrActionRegs(absoluteProfileId); + WritePar(p_FmPcd, tmpReg32); + + FmPcdUnlock(p_FmPcd, intFlags); + + if (!p_Profile->modify) + FmPcdPlcrValidateProfileSw(p_FmPcd,absoluteProfileId); + + RELEASE_LOCK(p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].lock); + + return UINT_TO_PTR((uint64_t)absoluteProfileId+1); +} + +t_Error FM_PCD_PlcrDeleteProfile(t_Handle h_FmPcd, t_Handle h_Profile) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint16_t profileIndx = (uint16_t)(PTR_TO_UINT(h_Profile)-1); + uint32_t tmpReg32, intFlags; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdPlcr, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR((profileIndx < FM_PCD_PLCR_NUM_ENTRIES), E_INVALID_SELECTION); + + if (p_FmPcd->h_Hc) + return FmHcPcdPlcrDeleteProfile(p_FmPcd->h_Hc, h_Profile); + + FmPcdPlcrInvalidateProfileSw(p_FmPcd,profileIndx); + + intFlags = FmPcdLock(p_FmPcd); + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->profileRegs.fmpl_pemode, ~FM_PCD_PLCR_PEMODE_PI); + + tmpReg32 = FmPcdPlcrBuildWritePlcrActionRegs(profileIndx); + WritePar(p_FmPcd, tmpReg32); + FmPcdUnlock(p_FmPcd, intFlags); + + return E_OK; +} + +/* ......... */ +/***************************************************/ +/*............Policer Profile Counter..............*/ +/***************************************************/ +uint32_t FM_PCD_PlcrGetProfileCounter(t_Handle h_FmPcd, t_Handle h_Profile, e_FmPcdPlcrProfileCounters counter) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint16_t profileIndx = (uint16_t)(PTR_TO_UINT(h_Profile)-1); + t_FmPcdPlcrRegs *p_FmPcdPlcrRegs; + uint32_t intFlags, counterVal = 0; + + SANITY_CHECK_RETURN_VALUE(p_FmPcd, E_INVALID_HANDLE, 0); + SANITY_CHECK_RETURN_VALUE(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE, 0); + SANITY_CHECK_RETURN_VALUE(p_FmPcd->p_FmPcdPlcr, E_INVALID_HANDLE, 0); + + if (p_FmPcd->h_Hc) + return FmHcPcdPlcrGetProfileCounter(p_FmPcd->h_Hc, h_Profile, counter); + + p_FmPcdPlcrRegs = p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs; + SANITY_CHECK_RETURN_VALUE(p_FmPcdPlcrRegs, E_INVALID_HANDLE, 0); + + if (profileIndx >= FM_PCD_PLCR_NUM_ENTRIES) + { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("profileId too Big ")); + return 0; + } + intFlags = FmPcdLock(p_FmPcd); + WritePar(p_FmPcd, FmPcdPlcrBuildReadPlcrActionReg(profileIndx)); + + if(!FmPcdPlcrHwProfileIsValid(GET_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pemode))) + { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Uninitialized profile")); + FmPcdUnlock(p_FmPcd, intFlags); + return 0; + } + + switch (counter) + { + case e_FM_PCD_PLCR_PROFILE_GREEN_PACKET_TOTAL_COUNTER: + counterVal = (GET_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pegpc)); + break; + case e_FM_PCD_PLCR_PROFILE_YELLOW_PACKET_TOTAL_COUNTER: + counterVal = GET_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_peypc); + break; + case e_FM_PCD_PLCR_PROFILE_RED_PACKET_TOTAL_COUNTER: + counterVal = GET_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_perpc); + break; + case e_FM_PCD_PLCR_PROFILE_RECOLOURED_YELLOW_PACKET_TOTAL_COUNTER: + counterVal = GET_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_perypc); + break; + case e_FM_PCD_PLCR_PROFILE_RECOLOURED_RED_PACKET_TOTAL_COUNTER: + counterVal = GET_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_perrpc); + break; + default: + REPORT_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + break; + } + FmPcdUnlock(p_FmPcd, intFlags); + + return counterVal; +} + + +t_Error FmPcdPlcrCcGetSetParams(t_Handle h_FmPcd, uint16_t profileIndx ,uint32_t requiredAction) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + t_FmPcdPlcr *p_FmPcdPlcr = p_FmPcd->p_FmPcdPlcr; + t_FmPcdPlcrRegs *p_FmPcdPlcrRegs = p_FmPcdPlcr->p_FmPcdPlcrRegs; + uint32_t tmpReg32, intFlags; + + if (p_FmPcd->h_Hc) + return FmHcPcdPlcrCcGetSetParams(p_FmPcd->h_Hc, profileIndx, requiredAction); + + if (profileIndx >= FM_PCD_PLCR_NUM_ENTRIES) + RETURN_ERROR(MAJOR, E_INVALID_VALUE,("Policer profile out of range")); + + if (FmPcdPlcrProfileTryLock(p_FmPcd, profileIndx, FALSE)) + RETURN_ERROR(MAJOR, E_INVALID_STATE,("Lock on PP FAILED")); + + intFlags = FmPcdLock(p_FmPcd); + WritePar(p_FmPcd, FmPcdPlcrBuildReadPlcrActionReg(profileIndx)); + + if(!FmPcdPlcrHwProfileIsValid(GET_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pemode))) + { + FmPcdUnlock(p_FmPcd, intFlags); + RELEASE_LOCK(p_FmPcd->p_FmPcdPlcr->profiles[profileIndx].lock); + RETURN_ERROR(MAJOR, E_INVALID_VALUE,("Policer profile is not valid")); + } + + ASSERT_COND(p_FmPcd->p_FmPcdPlcr->profiles[profileIndx].valid); + + if(!p_FmPcd->p_FmPcdPlcr->profiles[profileIndx].pointedOwners || + !(p_FmPcd->p_FmPcdPlcr->profiles[profileIndx].requiredAction & requiredAction)) + { + if(requiredAction & UPDATE_NIA_ENQ_WITHOUT_DMA) + { + if((p_FmPcd->p_FmPcdPlcr->profiles[profileIndx].nextEngineOnGreen!= e_FM_PCD_DONE) || + (p_FmPcd->p_FmPcdPlcr->profiles[profileIndx].nextEngineOnYellow!= e_FM_PCD_DONE) || + (p_FmPcd->p_FmPcdPlcr->profiles[profileIndx].nextEngineOnRed!= e_FM_PCD_DONE)) + { + FmPcdUnlock(p_FmPcd, intFlags); + RETURN_ERROR (MAJOR, E_OK, ("In this case the next engine can be e_FM_PCD_DONE")); + } + + if(p_FmPcd->p_FmPcdPlcr->profiles[profileIndx].paramsOnGreen.action == e_FM_PCD_ENQ_FRAME) + { + tmpReg32 = GET_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pegnia); + if(!(tmpReg32 & (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME))) + { + FmPcdUnlock(p_FmPcd, intFlags); + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Next engine of this policer profile has to be assigned to FM_PCD_DONE")); + } + tmpReg32 |= NIA_BMI_AC_ENQ_FRAME_WITHOUT_DMA; + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pegnia, tmpReg32); + tmpReg32 = FmPcdPlcrBuildWritePlcrActionReg(profileIndx); + tmpReg32 |= FM_PCD_PLCR_PAR_PWSEL_PEGNIA; + WritePar(p_FmPcd, tmpReg32); + } + + if(p_FmPcd->p_FmPcdPlcr->profiles[profileIndx].paramsOnYellow.action == e_FM_PCD_ENQ_FRAME) + { + tmpReg32 = GET_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_peynia); + if(!(tmpReg32 & (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME))) + { + FmPcdUnlock(p_FmPcd, intFlags); + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Next engine of this policer profile has to be assigned to FM_PCD_DONE")); + } + tmpReg32 |= NIA_BMI_AC_ENQ_FRAME_WITHOUT_DMA; + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_peynia, tmpReg32); + tmpReg32 = FmPcdPlcrBuildWritePlcrActionReg(profileIndx); + tmpReg32 |= FM_PCD_PLCR_PAR_PWSEL_PEYNIA; + WritePar(p_FmPcd, tmpReg32); + } + + if(p_FmPcd->p_FmPcdPlcr->profiles[profileIndx].paramsOnRed.action == e_FM_PCD_ENQ_FRAME) + { + tmpReg32 = GET_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pernia); + if(!(tmpReg32 & (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME))) + { + FmPcdUnlock(p_FmPcd, intFlags); + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Next engine of this policer profile has to be assigned to FM_PCD_DONE")); + } + tmpReg32 |= NIA_BMI_AC_ENQ_FRAME_WITHOUT_DMA; + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pernia, tmpReg32); + tmpReg32 = FmPcdPlcrBuildWritePlcrActionReg(profileIndx); + tmpReg32 |= FM_PCD_PLCR_PAR_PWSEL_PERNIA; + WritePar(p_FmPcd, tmpReg32); + } + } + } + FmPcdUnlock(p_FmPcd, intFlags); + + p_FmPcd->p_FmPcdPlcr->profiles[profileIndx].pointedOwners += 1; + p_FmPcd->p_FmPcdPlcr->profiles[profileIndx].requiredAction |= requiredAction; + + RELEASE_LOCK(p_FmPcd->p_FmPcdPlcr->profiles[profileIndx].lock); + + return E_OK; +} + +t_Error FM_PCD_PlcrSetProfileCounter(t_Handle h_FmPcd, t_Handle h_Profile, e_FmPcdPlcrProfileCounters counter, uint32_t value) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint16_t profileIndx = (uint16_t)(PTR_TO_UINT(h_Profile)-1); + t_FmPcdPlcrRegs *p_FmPcdPlcrRegs; + uint32_t tmpReg32, intFlags; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdPlcr, E_INVALID_HANDLE); + + if (p_FmPcd->h_Hc) + return FmHcPcdPlcrSetProfileCounter(p_FmPcd->h_Hc, h_Profile, counter, value); + + p_FmPcdPlcrRegs = p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs; + SANITY_CHECK_RETURN_ERROR(p_FmPcdPlcrRegs, E_INVALID_HANDLE); + + intFlags = FmPcdLock(p_FmPcd); + switch (counter) + { + case e_FM_PCD_PLCR_PROFILE_GREEN_PACKET_TOTAL_COUNTER: + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pegpc, value); + break; + case e_FM_PCD_PLCR_PROFILE_YELLOW_PACKET_TOTAL_COUNTER: + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_peypc, value); + break; + case e_FM_PCD_PLCR_PROFILE_RED_PACKET_TOTAL_COUNTER: + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_perpc, value); + break; + case e_FM_PCD_PLCR_PROFILE_RECOLOURED_YELLOW_PACKET_TOTAL_COUNTER: + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_perypc ,value); + break; + case e_FM_PCD_PLCR_PROFILE_RECOLOURED_RED_PACKET_TOTAL_COUNTER: + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_perrpc ,value); + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + } + + /* Activate the atomic write action by writing FMPL_PAR with: GO=1, RW=1, PSI=0, PNUM = + * Profile Number, PWSEL=0xFFFF (select all words). + */ + tmpReg32 = FmPcdPlcrBuildWritePlcrActionReg(profileIndx); + tmpReg32 |= FmPcdPlcrBuildCounterProfileReg(counter); + WritePar(p_FmPcd, tmpReg32); + FmPcdUnlock(p_FmPcd, intFlags); + + return E_OK; +} + +t_Error FM_PCD_ConfigPlcrNumOfSharedProfiles(t_Handle h_FmPcd, uint16_t numOfSharedPlcrProfiles) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdDriverParam, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdPlcr, E_INVALID_HANDLE); + + p_FmPcd->p_FmPcdPlcr->numOfSharedProfiles = numOfSharedPlcrProfiles; + + return E_OK; +} + + +/* ... */ + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) +t_Error FM_PCD_PlcrDumpRegs(t_Handle h_FmPcd) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + int i = 0; + t_FmPcdIpcMsg msg; + + DECLARE_DUMP; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdPlcr, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE); + + if(p_FmPcd->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + msg.msgId = FM_PCD_PLCR_DUMP_REGS; + return XX_IpcSendMessage(p_FmPcd->h_IpcSession, + (uint8_t*)&msg, + sizeof(msg.msgId), + NULL, + NULL, + NULL, + NULL); + } + else + { + DUMP_SUBTITLE(("\n")); + DUMP_TITLE(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs, ("FmPcdPlcrRegs Regs")); + + DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_gcr); + DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_gsr); + DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_evr); + DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_ier); + DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_ifr); + DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_eevr); + DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_eier); + DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_eifr); + DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_rpcnt); + DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_ypcnt); + DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_rrpcnt); + DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_rypcnt); + DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_tpcnt); + DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_flmcnt); + + DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_serc); + DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_upcr); + DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_dpmr); + + + DUMP_TITLE(&p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_pmr, ("fmpl_pmr")); + DUMP_SUBSTRUCT_ARRAY(i, 63) + { + DUMP_MEMORY(&p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_pmr[i], sizeof(uint32_t)); + } + + return E_OK; + } +} + +t_Error FM_PCD_PlcrProfileDumpRegs(t_Handle h_FmPcd, t_Handle h_Profile) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + t_FmPcdPlcrInterModuleProfileRegs *p_ProfilesRegs; + uint32_t tmpReg, intFlags; + uint16_t profileIndx = (uint16_t)(PTR_TO_UINT(h_Profile)-1); + t_FmPcdIpcMsg msg; + + DECLARE_DUMP; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdPlcr, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE); + + if(p_FmPcd->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + msg.msgId = FM_PCD_PLCR_PROFILE_DUMP_REGS; + memcpy(msg.msgBody, (uint8_t *)&h_Profile, sizeof(uint32_t)); + return XX_IpcSendMessage(p_FmPcd->h_IpcSession, + (uint8_t*)&msg, + sizeof(msg.msgId) + sizeof(uint32_t), + NULL, + NULL, + NULL, + NULL); + } + else + { + DUMP_SUBTITLE(("\n")); + DUMP_TITLE(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs, ("FmPcdPlcrRegs Profile Regs")); + + p_ProfilesRegs = &p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->profileRegs; + + tmpReg = FmPcdPlcrBuildReadPlcrActionReg((uint16_t)profileIndx); + intFlags = FmPcdLock(p_FmPcd); + WritePar(p_FmPcd, tmpReg); + + DUMP_TITLE(p_ProfilesRegs, ("Profile %d regs", profileIndx)); + + DUMP_VAR(p_ProfilesRegs, fmpl_pemode); + DUMP_VAR(p_ProfilesRegs, fmpl_pegnia); + DUMP_VAR(p_ProfilesRegs, fmpl_peynia); + DUMP_VAR(p_ProfilesRegs, fmpl_pernia); + DUMP_VAR(p_ProfilesRegs, fmpl_pecir); + DUMP_VAR(p_ProfilesRegs, fmpl_pecbs); + DUMP_VAR(p_ProfilesRegs, fmpl_pepepir_eir); + DUMP_VAR(p_ProfilesRegs, fmpl_pepbs_ebs); + DUMP_VAR(p_ProfilesRegs, fmpl_pelts); + DUMP_VAR(p_ProfilesRegs, fmpl_pects); + DUMP_VAR(p_ProfilesRegs, fmpl_pepts_ets); + DUMP_VAR(p_ProfilesRegs, fmpl_pegpc); + DUMP_VAR(p_ProfilesRegs, fmpl_peypc); + DUMP_VAR(p_ProfilesRegs, fmpl_perpc); + DUMP_VAR(p_ProfilesRegs, fmpl_perypc); + DUMP_VAR(p_ProfilesRegs, fmpl_perrpc); + FmPcdUnlock(p_FmPcd, intFlags); + + return E_OK; + } +} +#endif /* (defined(DEBUG_ERRORS) && ... */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/Pcd/fm_prs.c +++ linux-3.13.0/drivers/net/dpa/NetCommSw/Peripherals/FM/Pcd/fm_prs.c @@ -0,0 +1,517 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 fm_pcd.c + + @Description FM PCD ... +*//***************************************************************************/ +#include "std_ext.h" +#include "error_ext.h" +#include "string_ext.h" +#include "debug_ext.h" +#include "net_ext.h" + +#include "fm_common.h" +#include "fm_pcd.h" +#include "fm_pcd_ipc.h" + + +t_Handle PrsConfig(t_FmPcd *p_FmPcd,t_FmPcdParams *p_FmPcdParams) +{ + t_FmPcdPrs *p_FmPcdPrs; + uintptr_t baseAddr; + + UNUSED(p_FmPcd); + UNUSED(p_FmPcdParams); + + p_FmPcdPrs = (t_FmPcdPrs *) XX_Malloc(sizeof(t_FmPcdPrs)); + if (!p_FmPcdPrs) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FM Parser structure allocation FAILED")); + return NULL; + } + memset(p_FmPcdPrs, 0, sizeof(t_FmPcdPrs)); + + if (p_FmPcd->guestId == NCSW_MASTER_ID) + { + baseAddr = FmGetPcdPrsBaseAddr(p_FmPcdParams->h_Fm); + p_FmPcdPrs->p_SwPrsCode = (uint32_t *)UINT_TO_PTR(baseAddr); + p_FmPcdPrs->p_FmPcdPrsRegs = (t_FmPcdPrsRegs *)UINT_TO_PTR(baseAddr + PRS_REGS_OFFSET); + } + + p_FmPcdPrs->fmPcdPrsPortIdStatistics = 0; + p_FmPcd->p_FmPcdDriverParam->prsMaxParseCycleLimit = DEFAULT_prsMaxParseCycleLimit; + p_FmPcd->exceptions |= (DEFAULT_fmPcdPrsErrorExceptions | DEFAULT_fmPcdPrsExceptions); + + return p_FmPcdPrs; +} + +static void PcdPrsErrorException(t_Handle h_FmPcd) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + uint32_t event, mask, force; + + ASSERT_COND(p_FmPcd->guestId == NCSW_MASTER_ID); + event = GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->perr); + mask = GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->perer); + + event &= mask; + + /* clear the forced events */ + force = GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->perfr); + if(force & event) + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->perfr, force & ~event); + + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->perr, event); + + DBG(TRACE, ("parser error - 0x%08x\n",event)); + + if(event & FM_PCD_PRS_DOUBLE_ECC) + p_FmPcd->f_Exception(p_FmPcd->h_App,e_FM_PCD_PRS_EXCEPTION_DOUBLE_ECC); +} + +static void PcdPrsException(t_Handle h_FmPcd) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + uint32_t event, force; + + ASSERT_COND(p_FmPcd->guestId == NCSW_MASTER_ID); + event = GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->pevr); + event &= GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->pever); + + ASSERT_COND(event & FM_PCD_PRS_SINGLE_ECC); + + DBG(TRACE, ("parser event - 0x%08x\n",event)); + + /* clear the forced events */ + force = GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->pevfr); + if(force & event) + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->pevfr, force & ~event); + + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->pevr, event); + + p_FmPcd->f_Exception(p_FmPcd->h_App,e_FM_PCD_PRS_EXCEPTION_SINGLE_ECC); +} + +static uint32_t GetSwPrsOffset(t_Handle h_FmPcd, e_NetHeaderType hdr, uint8_t indexPerHdr) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + int i; + t_FmPcdPrsLabelParams *p_Label; + + SANITY_CHECK_RETURN_VALUE(p_FmPcd, E_INVALID_HANDLE, 0); + SANITY_CHECK_RETURN_VALUE(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_HANDLE, 0); + + ASSERT_COND(p_FmPcd->guestId == NCSW_MASTER_ID); + ASSERT_COND(p_FmPcd->p_FmPcdPrs->currLabel < FM_PCD_PRS_NUM_OF_LABELS); + + for (i=0; i < p_FmPcd->p_FmPcdPrs->currLabel; i++) + { + p_Label = &p_FmPcd->p_FmPcdPrs->labelsTable[i]; + + if ((hdr == p_Label->hdr) && (indexPerHdr == p_Label->indexPerHdr)) + return p_Label->instructionOffset; + } + + REPORT_ERROR(MAJOR, E_NOT_FOUND, ("Sw Parser attachment Not found")); + return (uint32_t)ILLEGAL_BASE; +} + +t_Error PrsInit(t_FmPcd *p_FmPcd) +{ + t_FmPcdDriverParam *p_Param = p_FmPcd->p_FmPcdDriverParam; + t_FmPcdPrsRegs *p_Regs = p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs; + uint32_t tmpReg; + + if(p_FmPcd->guestId != NCSW_MASTER_ID) + return E_OK; + + ASSERT_COND(p_FmPcd->guestId == NCSW_MASTER_ID); + +#ifdef FM_PRS_MEM_ERRATA_FMAN_SW003 + { + uint32_t i; + uint32_t regsToGlobalOffset = 0x840; + uint32_t firstPortToGlobalOffset = 0x45800; + uint64_t globalAddr = PTR_TO_UINT(p_Regs) - regsToGlobalOffset; + uint32_t firstPortAddr = (uint32_t)(globalAddr - (uint64_t)firstPortToGlobalOffset); + uint32_t portSize = 0x1000; + t_FmRevisionInfo revInfo; + + FM_GetRevision(p_FmPcd->h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + { + /* clear all parser memory */ + IOMemSet32(UINT_TO_PTR(globalAddr), 0x00000000, 0x800); + for(i = 0;i<16;i++) + IOMemSet32(UINT_TO_PTR(firstPortAddr+i*portSize), (uint8_t)0x00000000, (uint32_t)0x80); + } + } +#endif /* FM_PRS_MEM_ERRATA_FMAN_SW003 */ + + /**********************RPCLIM******************/ + WRITE_UINT32(p_Regs->rpclim, (uint32_t)p_Param->prsMaxParseCycleLimit); + /**********************FMPL_RPCLIM******************/ + + /* register even if no interrupts enabled, to allow future enablement */ + FmRegisterIntr(p_FmPcd->h_Fm, e_FM_MOD_PRS, 0, e_FM_INTR_TYPE_ERR, PcdPrsErrorException, p_FmPcd); + + /* register even if no interrupts enabled, to allow future enablement */ + FmRegisterIntr(p_FmPcd->h_Fm, e_FM_MOD_PRS, 0, e_FM_INTR_TYPE_NORMAL, PcdPrsException, p_FmPcd); + + /**********************PEVR******************/ + WRITE_UINT32(p_Regs->pevr, (FM_PCD_PRS_SINGLE_ECC | FM_PCD_PRS_PORT_IDLE_STS) ); + /**********************PEVR******************/ + + /**********************PEVER******************/ + if(p_FmPcd->exceptions & FM_PCD_EX_PRS_SINGLE_ECC) + { + FmEnableRamsEcc(p_FmPcd->h_Fm); + WRITE_UINT32(p_Regs->pever, FM_PCD_PRS_SINGLE_ECC); + } + else + WRITE_UINT32(p_Regs->pever, 0); + /**********************PEVER******************/ + + /**********************PERR******************/ + WRITE_UINT32(p_Regs->perr, FM_PCD_PRS_DOUBLE_ECC); + + /**********************PERR******************/ + + /**********************PERER******************/ + tmpReg = 0; + if(p_FmPcd->exceptions & FM_PCD_EX_PRS_DOUBLE_ECC) + { + FmEnableRamsEcc(p_FmPcd->h_Fm); + tmpReg |= FM_PCD_PRS_DOUBLE_ECC; + } + WRITE_UINT32(p_Regs->perer, tmpReg); + /**********************PERER******************/ + + /**********************PPCS******************/ + WRITE_UINT32(p_Regs->ppsc, p_FmPcd->p_FmPcdPrs->fmPcdPrsPortIdStatistics); + /**********************PPCS******************/ + +#ifdef FM_PRS_L4_SHELL_ERRATA_FMANb + { + uint32_t i, j; + t_FmRevisionInfo revInfo; + uint8_t swPrsL4Patch[] = SW_PRS_L4_PATCH; + + FM_GetRevision(p_FmPcd->h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + { + /* load sw parser L4 patch */ + for(i=0;ip_FmPcdPrs->p_SwPrsCode+ FM_PCD_PRS_SW_OFFSET/4 + i), tmpReg); + } + p_FmPcd->p_FmPcdPrs->p_CurrSwPrs = FM_PCD_PRS_SW_OFFSET/4 + p_FmPcd->p_FmPcdPrs->p_SwPrsCode+sizeof(swPrsL4Patch)/4; + } + } +#endif /* FM_PRS_L4_SHELL_ERRATA_FMANb */ + + return E_OK; +} + +void PrsFree(t_FmPcd *p_FmPcd ) +{ + ASSERT_COND(p_FmPcd->guestId == NCSW_MASTER_ID); + FmUnregisterIntr(p_FmPcd->h_Fm, e_FM_MOD_PRS, 0, e_FM_INTR_TYPE_ERR); + /* register even if no interrupts enabled, to allow future enablement */ + FmUnregisterIntr(p_FmPcd->h_Fm, e_FM_MOD_PRS, 0, e_FM_INTR_TYPE_NORMAL); +} + +void PrsEnable(t_FmPcd *p_FmPcd ) +{ + t_FmPcdPrsRegs *p_Regs = p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs; + + ASSERT_COND(p_FmPcd->guestId == NCSW_MASTER_ID); + WRITE_UINT32(p_Regs->rpimac, GET_UINT32(p_Regs->rpimac) | FM_PCD_PRS_RPIMAC_EN); +} + +void PrsDisable(t_FmPcd *p_FmPcd ) +{ + t_FmPcdPrsRegs *p_Regs = p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs; + + ASSERT_COND(p_FmPcd->guestId == NCSW_MASTER_ID); + WRITE_UINT32(p_Regs->rpimac, GET_UINT32(p_Regs->rpimac) & ~FM_PCD_PRS_RPIMAC_EN); +} + +t_Error PrsIncludePortInStatistics(t_FmPcd *p_FmPcd, uint8_t hardwarePortId, bool include) +{ + uint32_t bitMask = 0; + uint8_t prsPortId; + + SANITY_CHECK_RETURN_ERROR((hardwarePortId >=1 && hardwarePortId <= 16), E_INVALID_VALUE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdPrs, E_INVALID_HANDLE); + + GET_FM_PCD_PRS_PORT_ID(prsPortId, hardwarePortId); + GET_FM_PCD_INDEX_FLAG(bitMask, prsPortId); + + if(include) + p_FmPcd->p_FmPcdPrs->fmPcdPrsPortIdStatistics |= bitMask; + else + p_FmPcd->p_FmPcdPrs->fmPcdPrsPortIdStatistics &= ~bitMask; + + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->ppsc, p_FmPcd->p_FmPcdPrs->fmPcdPrsPortIdStatistics); + + return E_OK; +} + +t_Error FmPcdPrsIncludePortInStatistics(t_Handle h_FmPcd, uint8_t hardwarePortId, bool include) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + t_FmPcdIpcPrsIncludePort prsIncludePortParams; + t_FmPcdIpcMsg msg; + t_Error err; + + SANITY_CHECK_RETURN_ERROR((hardwarePortId >=1 && hardwarePortId <= 16), E_INVALID_VALUE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdPrs, E_INVALID_HANDLE); + + if(p_FmPcd->guestId != NCSW_MASTER_ID) + { + prsIncludePortParams.hardwarePortId = hardwarePortId; + prsIncludePortParams.include = include; + memset(&msg, 0, sizeof(msg)); + msg.msgId = FM_PCD_PRS_INC_PORT_STATS; + memcpy(msg.msgBody, &prsIncludePortParams, sizeof(prsIncludePortParams)); + if ((err = XX_IpcSendMessage(p_FmPcd->h_IpcSession, + (uint8_t*)&msg, + sizeof(msg.msgId) +sizeof(prsIncludePortParams), + NULL, + NULL, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + return E_OK; + } + return PrsIncludePortInStatistics(p_FmPcd, hardwarePortId, include); +} + +uint32_t FmPcdGetSwPrsOffset(t_Handle h_FmPcd, e_NetHeaderType hdr, uint8_t indexPerHdr) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + t_Error err = E_OK; + t_FmPcdIpcSwPrsLable labelParams; + t_FmPcdIpcMsg msg; + uint32_t prsOffset = 0; + t_FmPcdIpcReply reply; + uint32_t replyLength; + + if(p_FmPcd->guestId != NCSW_MASTER_ID) + { + memset(&reply, 0, sizeof(reply)); + memset(&msg, 0, sizeof(msg)); + labelParams.enumHdr = (uint32_t)hdr; + labelParams.indexPerHdr = indexPerHdr; + msg.msgId = FM_PCD_GET_SW_PRS_OFFSET; + memcpy(msg.msgBody, &labelParams, sizeof(labelParams)); + replyLength = sizeof(uint32_t) + sizeof(uint32_t); + if ((err = XX_IpcSendMessage(p_FmPcd->h_IpcSession, + (uint8_t*)&msg, + sizeof(msg.msgId) +sizeof(labelParams), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + if(replyLength != sizeof(uint32_t) + sizeof(uint32_t)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + + memcpy((uint8_t*)&prsOffset, reply.replyBody, sizeof(uint32_t)); + return prsOffset; + } + + return GetSwPrsOffset(h_FmPcd, hdr, indexPerHdr); +} + +void FM_PCD_SetPrsStatistics(t_Handle h_FmPcd, bool enable) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + SANITY_CHECK_RETURN(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN(p_FmPcd->p_FmPcdPrs, E_INVALID_HANDLE); + + if(p_FmPcd->guestId != NCSW_MASTER_ID) + { + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("FM_PCD_SetPrsStatistics - guest mode!")); + return; + } + if(enable) + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->ppsc, FM_PCD_PRS_PPSC_ALL_PORTS); + else + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->ppsc, 0); + +} + +t_Error FM_PCD_PrsLoadSw(t_Handle h_FmPcd, t_FmPcdPrsSwParams *p_SwPrs) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint32_t *p_LoadTarget, tmpReg; + int i, j; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdPrs, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_SwPrs, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPcd->enabled, E_INVALID_HANDLE); + + if(p_FmPcd->guestId != NCSW_MASTER_ID) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("FM_PCD_PrsLoadSw - guest mode!")); + + if(!p_SwPrs->override) + { + if(p_FmPcd->p_FmPcdPrs->p_CurrSwPrs > p_FmPcd->p_FmPcdPrs->p_SwPrsCode + p_SwPrs->base*2/4) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("SW parser base must be larger than current loaded code")); + } + if(p_SwPrs->size > FM_PCD_SW_PRS_SIZE - FM_PCD_PRS_SW_TAIL_SIZE - p_SwPrs->base*2) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("p_SwPrs->size may not be larger than MAX_SW_PRS_CODE_SIZE")); + if(p_SwPrs->size % 4) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("p_SwPrs->size must be divisible by 4")); + + /* save sw parser labels */ + if(p_SwPrs->override) + p_FmPcd->p_FmPcdPrs->currLabel = 0; + if(p_FmPcd->p_FmPcdPrs->currLabel+ p_SwPrs->numOfLabels > FM_PCD_PRS_NUM_OF_LABELS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Exceeded number of labels allowed ")); + memcpy(&p_FmPcd->p_FmPcdPrs->labelsTable[p_FmPcd->p_FmPcdPrs->currLabel], p_SwPrs->labelsTable, p_SwPrs->numOfLabels*sizeof(t_FmPcdPrsLabelParams)); + p_FmPcd->p_FmPcdPrs->currLabel += p_SwPrs->numOfLabels; + /* load sw parser code */ + p_LoadTarget = p_FmPcd->p_FmPcdPrs->p_SwPrsCode + p_SwPrs->base*2/4; + for(i=0;isize/4;i++) + { + tmpReg = 0; + for(j =0;j<4;j++) + { + tmpReg <<= 8; + tmpReg |= *(p_SwPrs->p_Code+i*4+j); + } + WRITE_UINT32(*(p_LoadTarget + i), tmpReg); + } + p_FmPcd->p_FmPcdPrs->p_CurrSwPrs = p_FmPcd->p_FmPcdPrs->p_SwPrsCode + p_SwPrs->base*2/4 + p_SwPrs->size/4; + + /* copy data parameters */ + for(i=0;ip_FmPcdPrs->p_SwPrsCode+PRS_SW_DATA/4+i), p_SwPrs->swPrsDataParams[i]); + + + /* Clear last 4 bytes */ + WRITE_UINT32(*(p_FmPcd->p_FmPcdPrs->p_SwPrsCode+(PRS_SW_DATA-FM_PCD_PRS_SW_TAIL_SIZE)/4), 0); + + return E_OK; +} + +t_Error FM_PCD_ConfigPrsMaxCycleLimit(t_Handle h_FmPcd,uint16_t value) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdDriverParam, E_INVALID_HANDLE); + + if(p_FmPcd->guestId != NCSW_MASTER_ID) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("FM_PCD_ConfigPrsMaxCycleLimit - guest mode!")); + + p_FmPcd->p_FmPcdDriverParam->prsMaxParseCycleLimit = value; + + return E_OK; +} + + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) +t_Error FM_PCD_PrsDumpRegs(t_Handle h_FmPcd) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + t_FmPcdIpcMsg msg; + + DECLARE_DUMP; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdPrs, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE); + + if(p_FmPcd->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + msg.msgId = FM_PCD_PRS_DUMP_REGS; + return XX_IpcSendMessage(p_FmPcd->h_IpcSession, + (uint8_t*)&msg, + sizeof(msg.msgId), + NULL, + NULL, + NULL, + NULL); + } + DUMP_SUBTITLE(("\n")); + DUMP_TITLE(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs, ("FmPcdPrsRegs Regs")); + + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,rpclim); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,rpimac); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,pmeec); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,pevr); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,pever); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,pevfr); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,perr); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,perer); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,perfr); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,ppsc); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,pds); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,l2rrs); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,l3rrs); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,l4rrs); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,srrs); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,l2rres); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,l3rres); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,l4rres); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,srres); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,spcs); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,spscs); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,hxscs); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,mrcs); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,mwcs); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,mrscs); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,mwscs); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,fcscs); + + return E_OK; +} +#endif /* (defined(DEBUG_ERRORS) && ... */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/Port/Makefile +++ linux-3.13.0/drivers/net/dpa/NetCommSw/Peripherals/FM/Port/Makefile @@ -0,0 +1,19 @@ +# +# Makefile for the Freescale Ethernet controllers +# +EXTRA_CFLAGS += -DVERSION=\"\" +# +#Include netcomm SW specific definitions +include $(srctree)/drivers/net/dpa/NetCommSw/ncsw_config.mk + +NCSW_FM_INC = $(srctree)/drivers/net/dpa/NetCommSw/Peripherals/FM/inc + +EXTRA_CFLAGS += -I$(NCSW_FM_INC) + +obj-y += fsl-ncsw-Pcd.o + +fsl-ncsw-Pcd-objs := fm_port.o fm_port_im.o + + + + --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/Port/fm_port.c +++ linux-3.13.0/drivers/net/dpa/NetCommSw/Peripherals/FM/Port/fm_port.c @@ -0,0 +1,5060 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 fm_port.c + + @Description FM driver routines implementation. +*//***************************************************************************/ +#include "error_ext.h" +#include "std_ext.h" +#include "string_ext.h" +#include "sprint_ext.h" +#include "debug_ext.h" +#include "fm_pcd_ext.h" + +#include "fm_port.h" + + +/****************************************/ +/* static functions */ +/****************************************/ + +static t_Error CheckInitParameters(t_FmPort *p_FmPort) +{ + t_FmPortDriverParam *p_Params = p_FmPort->p_FmPortDriverParam; + t_Error ans = E_OK; + uint32_t unusedMask; + uint8_t i; + uint8_t j; + bool found; + + if (p_FmPort->imEn) + { + if ((ans = FmPortImCheckInitParameters(p_FmPort)) != E_OK) + return ERROR_CODE(ans); + } + else + { + /****************************************/ + /* Rx only */ + /****************************************/ + if((p_FmPort->portType == e_FM_PORT_TYPE_RX) || (p_FmPort->portType == e_FM_PORT_TYPE_RX_10G)) + { + /* external buffer pools */ + if(!p_Params->extBufPools.numOfPoolsUsed) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("extBufPools.numOfPoolsUsed=0. At least one buffer pool must be defined")); + + if(p_Params->extBufPools.numOfPoolsUsed > FM_PORT_MAX_NUM_OF_EXT_POOLS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("numOfPoolsUsed can't be larger than %d", FM_PORT_MAX_NUM_OF_EXT_POOLS)); + + for(i=0;iextBufPools.numOfPoolsUsed;i++) + { + if(p_Params->extBufPools.extBufPool[i].id >= BM_MAX_NUM_OF_POOLS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("extBufPools.extBufPool[%d].id can't be larger than %d", i, BM_MAX_NUM_OF_POOLS)); + if(!p_Params->extBufPools.extBufPool[i].size) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("extBufPools.extBufPool[%d].size is 0", i)); + } + + /* backup BM pools indication is valid only for some chip deriviatives + (limited by the config routine) */ + if(p_Params->p_BackupBmPools) + { + if(p_Params->p_BackupBmPools->numOfBackupPools >= p_Params->extBufPools.numOfPoolsUsed) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("p_BackupBmPools must be smaller than extBufPools.numOfPoolsUsed")); + found = FALSE; + for(i = 0;ip_BackupBmPools->numOfBackupPools;i++) + for(j=0;jextBufPools.numOfPoolsUsed;j++) + if(p_Params->p_BackupBmPools->poolIds[i] == p_Params->extBufPools.extBufPool[j].id) + found = TRUE; + if (!found) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("All p_BackupBmPools.poolIds must be included in extBufPools.extBufPool[n].id")); + } + + /* up to extBufPools.numOfPoolsUsed pools may be defined */ + if(p_Params->bufPoolDepletion.numberOfPoolsModeEnable) + { + if((p_Params->bufPoolDepletion.numOfPools > p_Params->extBufPools.numOfPoolsUsed)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("bufPoolDepletion.numOfPools can't be larger than %d and can't be larger than numOfPoolsUsed", FM_PORT_MAX_NUM_OF_EXT_POOLS)); + + if(!p_Params->bufPoolDepletion.numOfPools) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("bufPoolDepletion.numOfPoolsToConsider can not be 0 when numberOfPoolsModeEnable=TRUE")); + } + /* Check that part of IC that needs copying is small enough to enter start margin */ + if(p_Params->intContext.size + p_Params->intContext.extBufOffset > p_Params->bufMargins.startMargins) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("intContext.size is larger than start margins")); + + if(p_Params->liodnOffset & ~FM_LIODN_OFFSET_MASK) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("liodnOffset is larger than %d", FM_LIODN_OFFSET_MASK+1)); +#ifdef FM_PARTITION_ARRAY + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + { + if(p_Params->liodnOffset >= MAX_LIODN_OFFSET) + { + p_Params->liodnOffset = (uint16_t)(p_Params->liodnOffset & (MAX_LIODN_OFFSET-1)); + DBG(WARNING, ("liodnOffset number is out of rev1 range - MSB bits cleard.")); + } + } + } +#endif /* FM_PARTITION_ARRAY */ + } + + /****************************************/ + /* Non Rx ports */ + /****************************************/ + else + { + if(p_Params->deqSubPortal >= MAX_QMI_DEQ_SUBPORTAL) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, (" deqSubPortal has to be in the range of 0 - %d", MAX_QMI_DEQ_SUBPORTAL)); + + /* to protect HW internal-context from overwrite */ + if((p_Params->intContext.size) && (p_Params->intContext.intContextOffset < MIN_TX_INT_OFFSET)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("non-Rx intContext.intContextOffset can't be smaller than %d", MIN_TX_INT_OFFSET)); + } + + /****************************************/ + /* Rx Or Offline Parsing */ + /****************************************/ + if((p_FmPort->portType == e_FM_PORT_TYPE_RX) || (p_FmPort->portType == e_FM_PORT_TYPE_RX_10G) || (p_FmPort->portType == e_FM_PORT_TYPE_OH_OFFLINE_PARSING)) + { + + if(!p_Params->dfltFqid) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("dfltFqid must be between 1 and 2^24-1")); +#if defined(FM_CAPWAP_SUPPORT) && defined(FM_LOCKUP_ALIGNMENT_ERRATA_FMAN_SW004) + if(p_FmPort->p_FmPortDriverParam->bufferPrefixContent.manipExtraSpace % 16) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("bufferPrefixContent.manipExtraSpace has to be devidable by 16")); +#endif /* defined(FM_CAPWAP_SUPPORT) && ... */ + } + + /****************************************/ + /* All ports */ + /****************************************/ + /* common BMI registers values */ + /* Check that Queue Id is not larger than 2^24, and is not 0 */ + if((p_Params->errFqid & ~0x00FFFFFF) || !p_Params->errFqid) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("errFqid must be between 1 and 2^24-1")); + if(p_Params->dfltFqid & ~0x00FFFFFF) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("dfltFqid must be between 1 and 2^24-1")); + } + + /****************************************/ + /* Rx only */ + /****************************************/ + if((p_FmPort->portType == e_FM_PORT_TYPE_RX) || (p_FmPort->portType == e_FM_PORT_TYPE_RX_10G)) + { + /* Check that divisible by 256 and not larger than 256 */ + if(p_Params->rxFifoPriElevationLevel % BMI_FIFO_UNITS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("rxFifoPriElevationLevel has to be divisible by %d", BMI_FIFO_UNITS)); + if(!p_Params->rxFifoPriElevationLevel || (p_Params->rxFifoPriElevationLevel > BMI_MAX_FIFO_SIZE)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("rxFifoPriElevationLevel has to be in the range of 256 - %d", BMI_MAX_FIFO_SIZE)); + if(p_Params->rxFifoThreshold % BMI_FIFO_UNITS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("rxFifoThreshold has to be divisible by %d", BMI_FIFO_UNITS)); + if(!p_Params->rxFifoThreshold ||(p_Params->rxFifoThreshold > BMI_MAX_FIFO_SIZE)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("rxFifoThreshold has to be in the range of 256 - %d", BMI_MAX_FIFO_SIZE)); + + /* Check that not larger than 16 */ + if(p_Params->cutBytesFromEnd > FRAME_END_DATA_SIZE) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("cutBytesFromEnd can't be larger than %d", FRAME_END_DATA_SIZE)); + + /* Check the margin definition */ + if(p_Params->bufMargins.startMargins > MAX_EXT_BUFFER_OFFSET) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("bufMargins.startMargins can't be larger than %d", MAX_EXT_BUFFER_OFFSET)); + if(p_Params->bufMargins.endMargins > MAX_EXT_BUFFER_OFFSET) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("bufMargins.endMargins can't be larger than %d", MAX_EXT_BUFFER_OFFSET)); + + /* extra FIFO size (allowed only to Rx ports) */ + if(p_FmPort->fifoBufs.extra % BMI_FIFO_UNITS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("fifoBufs.extra has to be divisible by %d", BMI_FIFO_UNITS)); + + if(p_Params->bufPoolDepletion.numberOfPoolsModeEnable && + !p_Params->bufPoolDepletion.numOfPools) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("bufPoolDepletion.numOfPoolsToConsider can not be 0 when numberOfPoolsModeEnable=TRUE")); +#ifdef FM_CSI_CFED_LIMIT + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + + if (revInfo.majorRev == 4) + { + /* Check that not larger than 16 */ + if(p_Params->cutBytesFromEnd + p_Params->cheksumLastBytesIgnore > FRAME_END_DATA_SIZE) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("cheksumLastBytesIgnore + cutBytesFromEnd can't be larger than %d", FRAME_END_DATA_SIZE)); + } + } +#endif /* FM_CSI_CFED_LIMIT */ + + } + + /****************************************/ + /* Non Rx ports */ + /****************************************/ + else + /* extra FIFO size (allowed only to Rx ports) */ + if(p_FmPort->fifoBufs.extra) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, (" No fifoBufs.extra for non Rx ports")); + + /****************************************/ + /* Rx & Tx */ + /****************************************/ + if((p_FmPort->portType == e_FM_PORT_TYPE_TX) || (p_FmPort->portType == e_FM_PORT_TYPE_TX_10G) || + (p_FmPort->portType == e_FM_PORT_TYPE_RX) || (p_FmPort->portType == e_FM_PORT_TYPE_RX_10G)) + { + /* Check that not larger than 16 */ + if(p_Params->cheksumLastBytesIgnore > FRAME_END_DATA_SIZE) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("cheksumLastBytesIgnore can't be larger than %d", FRAME_END_DATA_SIZE)); + } + + /****************************************/ + /* Tx only */ + /****************************************/ + if((p_FmPort->portType == e_FM_PORT_TYPE_TX) || (p_FmPort->portType == e_FM_PORT_TYPE_TX_10G)) + { + /* Check that divisible by 256 and not larger than 256 */ + if(p_Params->txFifoMinFillLevel % BMI_FIFO_UNITS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("txFifoMinFillLevel has to be divisible by %d", BMI_FIFO_UNITS)); + if(p_Params->txFifoMinFillLevel > (BMI_MAX_FIFO_SIZE - 256)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("txFifoMinFillLevel has to be in the range of 0 - %d", BMI_MAX_FIFO_SIZE)); + if(p_Params->txFifoLowComfLevel % BMI_FIFO_UNITS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("txFifoLowComfLevel has to be divisible by %d", BMI_FIFO_UNITS)); + if(!p_Params->txFifoLowComfLevel || (p_Params->txFifoLowComfLevel > BMI_MAX_FIFO_SIZE)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("txFifoLowComfLevel has to be in the range of 256 - %d", BMI_MAX_FIFO_SIZE)); + + /* Check that not larger than 8 */ + if((!p_FmPort->txFifoDeqPipelineDepth) ||( p_FmPort->txFifoDeqPipelineDepth > MAX_FIFO_PIPELINE_DEPTH)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("txFifoDeqPipelineDepth can't be larger than %d", MAX_FIFO_PIPELINE_DEPTH)); + if(p_FmPort->portType == e_FM_PORT_TYPE_TX) + if(p_FmPort->txFifoDeqPipelineDepth > 2) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("txFifoDeqPipelineDepth for !G can't be larger than 2")); + } + else + /****************************************/ + /* Non Tx Ports */ + /****************************************/ + { + /* If discard override was selected , no frames may be discarded. */ + if(p_Params->frmDiscardOverride && p_Params->errorsToDiscard) + RETURN_ERROR(MAJOR, E_CONFLICT, ("errorsToDiscard is not empty, but frmDiscardOverride selected (all discarded frames to be enqueued to error queue).")); + } + + /****************************************/ + /* Rx and Offline parsing */ + /****************************************/ + if((p_FmPort->portType == e_FM_PORT_TYPE_RX) || (p_FmPort->portType == e_FM_PORT_TYPE_RX_10G) + || (p_FmPort->portType == e_FM_PORT_TYPE_OH_OFFLINE_PARSING)) + { + if(p_FmPort->portType == e_FM_PORT_TYPE_OH_OFFLINE_PARSING) + unusedMask = BMI_STATUS_OP_MASK_UNUSED; + else + unusedMask = BMI_STATUS_RX_MASK_UNUSED; + + /* Check that no common bits with BMI_STATUS_MASK_UNUSED */ + if(p_Params->errorsToDiscard & unusedMask) + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("errorsToDiscard contains undefined bits")); + } + + /****************************************/ + /* All ports */ + /****************************************/ + + /* Check that divisible by 16 and not larger than 240 */ + if(p_Params->intContext.intContextOffset >MAX_INT_OFFSET) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("intContext.intContextOffset can't be larger than %d", MAX_INT_OFFSET)); + if(p_Params->intContext.intContextOffset % OFFSET_UNITS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("intContext.intContextOffset has to be divisible by %d", OFFSET_UNITS)); + + /* check that ic size+ic internal offset, does not exceed ic block size */ + if(p_Params->intContext.size + p_Params->intContext.intContextOffset > MAX_IC_SIZE) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("intContext.size + intContext.intContextOffset has to be smaller than %d", MAX_IC_SIZE)); + /* Check that divisible by 16 and not larger than 256 */ + if(p_Params->intContext.size % OFFSET_UNITS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("intContext.size has to be divisible by %d", OFFSET_UNITS)); + + /* Check that divisible by 16 and not larger than 4K */ + if(p_Params->intContext.extBufOffset > MAX_EXT_OFFSET) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("intContext.extBufOffset can't be larger than %d", MAX_EXT_OFFSET)); + if(p_Params->intContext.extBufOffset % OFFSET_UNITS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("intContext.extBufOffset has to be divisible by %d", OFFSET_UNITS)); + + /* common BMI registers values */ + if((!p_FmPort->tasks.num) || (p_FmPort->tasks.num > MAX_NUM_OF_TASKS)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("tasks.num can't be larger than %d", MAX_NUM_OF_TASKS)); + if(p_FmPort->tasks.extra > MAX_NUM_OF_EXTRA_TASKS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("tasks.extra can't be larger than %d", MAX_NUM_OF_EXTRA_TASKS)); + if((!p_FmPort->openDmas.num) || (p_FmPort->openDmas.num > MAX_NUM_OF_DMAS)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("openDmas.num can't be larger than %d", MAX_NUM_OF_DMAS)); + if(p_FmPort->openDmas.extra > MAX_NUM_OF_EXTRA_DMAS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("openDmas.extra can't be larger than %d", MAX_NUM_OF_EXTRA_DMAS)); + if(!p_FmPort->fifoBufs.num || (p_FmPort->fifoBufs.num > BMI_MAX_FIFO_SIZE)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("fifoBufs.num has to be in the range of 256 - %d", BMI_MAX_FIFO_SIZE)); + if(p_FmPort->fifoBufs.num % BMI_FIFO_UNITS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("fifoBufs.num has to be divisible by %d", BMI_FIFO_UNITS)); + + return E_OK; +} + +static void FmPortDriverParamFree(t_FmPort *p_FmPort) +{ + if(p_FmPort->p_FmPortDriverParam) + { + XX_Free(p_FmPort->p_FmPortDriverParam); + p_FmPort->p_FmPortDriverParam = NULL; + } +} + +static t_Error SetExtBufferPools(t_FmPort *p_FmPort) +{ + t_FmPortExtPools *p_ExtBufPools = &p_FmPort->p_FmPortDriverParam->extBufPools; + t_FmPortBufPoolDepletion *p_BufPoolDepletion = &p_FmPort->p_FmPortDriverParam->bufPoolDepletion; + volatile uint32_t *p_ExtBufRegs; + volatile uint32_t *p_BufPoolDepletionReg; + bool rxPort; + bool found; + uint8_t orderedArray[FM_PORT_MAX_NUM_OF_EXT_POOLS]; + uint16_t sizesArray[BM_MAX_NUM_OF_POOLS]; + uint8_t count = 0; + uint8_t numOfPools; + uint16_t bufSize = 0, largestBufSize = 0; + int i=0, j=0, k=0; + uint32_t tmpReg, vector, minFifoSizeRequired=0; + + memset(&orderedArray, 0, sizeof(uint8_t) * FM_PORT_MAX_NUM_OF_EXT_POOLS); + memset(&sizesArray, 0, sizeof(uint16_t) * BM_MAX_NUM_OF_POOLS); + memcpy(&p_FmPort->extBufPools, p_ExtBufPools, sizeof(t_FmPortExtPools)); + + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + p_ExtBufRegs = p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_ebmpi; + p_BufPoolDepletionReg = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_mpd; + rxPort = TRUE; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + p_ExtBufRegs = p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_oebmpi; + p_BufPoolDepletionReg = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_ompd; + rxPort = FALSE; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("Not available for port type")); + } + + /* First we copy the external buffers pools information to an ordered local array */ + for(i=0;inumOfPoolsUsed;i++) + { + /* get pool size */ + bufSize = p_ExtBufPools->extBufPool[i].size; + + /* keep sizes in an array according to poolId for direct access */ + sizesArray[p_ExtBufPools->extBufPool[i].id] = bufSize; + + /* save poolId in an ordered array according to size */ + for (j=0;j<=i;j++) + { + /* this is the next free place in the array */ + if (j==i) + orderedArray[i] = p_ExtBufPools->extBufPool[i].id; + else + { + /* find the right place for this poolId */ + if(bufSize < sizesArray[orderedArray[j]]) + { + /* move the poolIds one place ahead to make room for this poolId */ + for(k=i;k>j;k--) + orderedArray[k] = orderedArray[k-1]; + + /* now k==j, this is the place for the new size */ + orderedArray[k] = p_ExtBufPools->extBufPool[i].id; + break; + } + } + } + } + + /* build the register value */ + + for(i=0;inumOfPoolsUsed;i++) + { + tmpReg = BMI_EXT_BUF_POOL_VALID | BMI_EXT_BUF_POOL_EN_COUNTER; + tmpReg |= ((uint32_t)orderedArray[i] << BMI_EXT_BUF_POOL_ID_SHIFT); + tmpReg |= sizesArray[orderedArray[i]]; + /* functionality available only for some deriviatives (limited by config) */ + if(p_FmPort->p_FmPortDriverParam->p_BackupBmPools) + for(j=0;jp_FmPortDriverParam->p_BackupBmPools->numOfBackupPools;j++) + if(orderedArray[i] == p_FmPort->p_FmPortDriverParam->p_BackupBmPools->poolIds[j]) + { + tmpReg |= BMI_EXT_BUF_POOL_BACKUP; + break; + } + WRITE_UINT32(*(p_ExtBufRegs+i), tmpReg); + } + + if(p_FmPort->p_FmPortDriverParam->p_BackupBmPools) + XX_Free(p_FmPort->p_FmPortDriverParam->p_BackupBmPools); + + numOfPools = (uint8_t)(rxPort ? FM_PORT_MAX_NUM_OF_EXT_POOLS:FM_PORT_MAX_NUM_OF_OBSERVED_EXT_POOLS); + + /* clear unused pools */ + for(i=p_ExtBufPools->numOfPoolsUsed;irxPoolsParams.largestBufSize = largestBufSize = sizesArray[orderedArray[p_ExtBufPools->numOfPoolsUsed-1]]; + if((p_FmPort->portType == e_FM_PORT_TYPE_RX) || (p_FmPort->portType == e_FM_PORT_TYPE_RX_10G)) + { +#ifdef FM_FIFO_ALLOCATION_OLD_ALG + t_FmRevisionInfo revInfo; + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + + if(revInfo.majorRev != 4) + { + minFifoSizeRequired = (uint32_t)(((largestBufSize % BMI_FIFO_UNITS) ? + ((largestBufSize/BMI_FIFO_UNITS + 1) * BMI_FIFO_UNITS) : + largestBufSize) + + (7*BMI_FIFO_UNITS)); + } + else +#endif /* FM_FIFO_ALLOCATION_OLD_ALG */ + { + p_FmPort->rxPoolsParams.numOfPools = p_ExtBufPools->numOfPoolsUsed; + if(p_ExtBufPools->numOfPoolsUsed == 1) + minFifoSizeRequired = 8*BMI_FIFO_UNITS; + else + { + uint16_t secondLargestBufSize = sizesArray[orderedArray[p_ExtBufPools->numOfPoolsUsed-2]]; + p_FmPort->rxPoolsParams.secondLargestBufSize = secondLargestBufSize; + minFifoSizeRequired = (uint32_t)(((secondLargestBufSize % BMI_FIFO_UNITS) ? + ((secondLargestBufSize/BMI_FIFO_UNITS + 1) * BMI_FIFO_UNITS) : + secondLargestBufSize) + + (7*BMI_FIFO_UNITS)); + } + } + if(p_FmPort->fifoBufs.num < minFifoSizeRequired) + { + p_FmPort->fifoBufs.num = minFifoSizeRequired; + DBG(INFO, ("FIFO size for Rx port enlarged to %d",minFifoSizeRequired)); + } + } + + /* check if pool size is not too big */ + /* This is a definition problem in which if the fifo for the RX port + is lower than the largest pool size the hardware will allocate scatter gather + buffers even though the frame size can fit in a single buffer. */ + if (largestBufSize > p_FmPort->fifoBufs.num) + DBG(WARNING, ("Frame larger than port Fifo size (%u) will be split to more than a single buffer (S/G) even if shorter than largest buffer size (%u)", + p_FmPort->fifoBufs.num, largestBufSize)); + + /* pool depletion */ + tmpReg = 0; + if(p_BufPoolDepletion->numberOfPoolsModeEnable) + { + /* calculate vector for number of pools depletion */ + found = FALSE; + vector = 0; + count = 0; + for(i=0;ipoolsToConsider[i]) + { + for(j=0;jnumOfPoolsUsed;j++) + { + if (i == orderedArray[j]) + { + vector |= 0x80000000 >> j; + found = TRUE; + count++; + break; + } + } + if (!found) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Pools selected for depletion are not used.")); + else + found = FALSE; + } + } + if (count < p_BufPoolDepletion->numOfPools) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("bufPoolDepletion.numOfPools is larger than the number of pools defined.")); + + /* configure num of pools and vector for number of pools mode */ + tmpReg |= (((uint32_t)p_BufPoolDepletion->numOfPools - 1) << BMI_POOL_DEP_NUM_OF_POOLS_SHIFT); + tmpReg |= vector; + } + + if(p_BufPoolDepletion->singlePoolModeEnable) + { + /* calculate vector for number of pools depletion */ + found = FALSE; + vector = 0; + count = 0; + for(i=0;ipoolsToConsiderForSingleMode[i]) + { + for(j=0;jnumOfPoolsUsed;j++) + { + if (i == orderedArray[j]) + { + vector |= 0x00000080 >> j; + found = TRUE; + count++; + break; + } + } + if (!found) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Pools selected for depletion are not used.")); + else + found = FALSE; + } + } + if (!count) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("No pools defined for single buffer mode pool depletion.")); + + /* configure num of pools and vector for number of pools mode */ + tmpReg |= vector; + } + + WRITE_UINT32(*p_BufPoolDepletionReg, tmpReg); + + return E_OK; +} + +static t_Error ClearPerfCnts(t_FmPort *p_FmPort) +{ + FM_PORT_ModifyCounter(p_FmPort, e_FM_PORT_COUNTERS_TASK_UTIL, 0); + FM_PORT_ModifyCounter(p_FmPort, e_FM_PORT_COUNTERS_QUEUE_UTIL, 0); + FM_PORT_ModifyCounter(p_FmPort, e_FM_PORT_COUNTERS_DMA_UTIL, 0); + FM_PORT_ModifyCounter(p_FmPort, e_FM_PORT_COUNTERS_FIFO_UTIL, 0); + return E_OK; +} + +static t_Error BmiRxPortInit(t_FmPort *p_FmPort) +{ + t_FmPortRxBmiRegs *p_Regs = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs; + uint32_t tmpReg; + t_FmPortDriverParam *p_Params = p_FmPort->p_FmPortDriverParam; + uint32_t errorsToEnq = 0; + t_FmPortPerformanceCnt performanceContersParams; + t_Error err; + + /* check that port is not busy */ + if (GET_UINT32(p_Regs->fmbm_rcfg) & BMI_PORT_CFG_EN) + RETURN_ERROR(MAJOR, E_INVALID_STATE, + ("Port(%d,%d) is already enabled",p_FmPort->portType, p_FmPort->portId)); + + /* Set Config register */ + tmpReg = 0; + if (p_FmPort->imEn) + tmpReg |= BMI_PORT_CFG_IM; + /* No discard - all error frames go to error queue */ + else if (p_Params->frmDiscardOverride) + tmpReg |= BMI_PORT_CFG_FDOVR; + + WRITE_UINT32(p_Regs->fmbm_rcfg, tmpReg); + + /* Configure dma attributes */ + tmpReg = 0; + tmpReg |= (uint32_t)p_Params->dmaSwapData << BMI_DMA_ATTR_SWP_SHIFT; + tmpReg |= (uint32_t)p_Params->dmaIntContextCacheAttr << BMI_DMA_ATTR_IC_CACHE_SHIFT; + tmpReg |= (uint32_t)p_Params->dmaHeaderCacheAttr << BMI_DMA_ATTR_HDR_CACHE_SHIFT; + tmpReg |= (uint32_t)p_Params->dmaScatterGatherCacheAttr << BMI_DMA_ATTR_SG_CACHE_SHIFT; + if(p_Params->dmaWriteOptimize) + tmpReg |= BMI_DMA_ATTR_WRITE_OPTIMIZE; + + WRITE_UINT32(p_Regs->fmbm_rda, tmpReg); + + /* Configure Rx Fifo params */ + tmpReg = 0; + tmpReg |= ((p_Params->rxFifoPriElevationLevel/BMI_FIFO_UNITS - 1) << BMI_RX_FIFO_PRI_ELEVATION_SHIFT); + tmpReg |= ((p_Params->rxFifoThreshold/BMI_FIFO_UNITS - 1) << BMI_RX_FIFO_THRESHOLD_SHIFT); + + WRITE_UINT32(p_Regs->fmbm_rfp, tmpReg); + + { +#ifdef FM_NO_THRESHOLD_REG + t_FmRevisionInfo revInfo; + + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if (revInfo.majorRev > 1) +#endif /* FM_NO_THRESHOLD_REG */ + /* always allow access to the extra resources */ + WRITE_UINT32(p_Regs->fmbm_reth, BMI_RX_FIFO_THRESHOLD_BC); + } + + /* frame end parameters */ + tmpReg = 0; + tmpReg |= ((uint32_t)p_Params->cheksumLastBytesIgnore << BMI_RX_FRAME_END_CS_IGNORE_SHIFT); + tmpReg |= ((uint32_t)p_Params->cutBytesFromEnd<< BMI_RX_FRAME_END_CUT_SHIFT); + + WRITE_UINT32(p_Regs->fmbm_rfed, tmpReg); + + /* IC parameters */ + tmpReg = 0; + tmpReg |= (((uint32_t)p_Params->intContext.extBufOffset/OFFSET_UNITS) << BMI_IC_TO_EXT_SHIFT); + tmpReg |= (((uint32_t)p_Params->intContext.intContextOffset/OFFSET_UNITS) << BMI_IC_FROM_INT_SHIFT); + tmpReg |= (((uint32_t)p_Params->intContext.size/OFFSET_UNITS) << BMI_IC_SIZE_SHIFT); + + WRITE_UINT32(p_Regs->fmbm_ricp, tmpReg); + + if (!p_FmPort->imEn) + { + /* check if the largest external buffer pool is large enough */ + if(p_Params->bufMargins.startMargins + MIN_EXT_BUF_SIZE + p_Params->bufMargins.endMargins > p_FmPort->rxPoolsParams.largestBufSize) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("bufMargins.startMargins (%d) + minimum buf size (64) + bufMargins.endMargins (%d) is larger than maximum external buffer size (%d)", + p_Params->bufMargins.startMargins, p_Params->bufMargins.endMargins, p_FmPort->rxPoolsParams.largestBufSize)); + + /* buffer margins */ + tmpReg = 0; + tmpReg |= (((uint32_t)p_Params->bufMargins.startMargins) << BMI_EXT_BUF_MARG_START_SHIFT); + tmpReg |= (((uint32_t)p_Params->bufMargins.endMargins) << BMI_EXT_BUF_MARG_END_SHIFT); + + WRITE_UINT32(p_Regs->fmbm_rebm, tmpReg); + } + + + if(p_FmPort->internalBufferOffset) + { + tmpReg = (uint32_t)((p_FmPort->internalBufferOffset % OFFSET_UNITS) ? + (p_FmPort->internalBufferOffset/OFFSET_UNITS + 1): + (p_FmPort->internalBufferOffset/OFFSET_UNITS)); + p_FmPort->internalBufferOffset = (uint8_t)(tmpReg * OFFSET_UNITS); + WRITE_UINT32(p_Regs->fmbm_rim, tmpReg << BMI_IM_FOF_SHIFT); + } + + /* NIA */ + if (p_FmPort->imEn) + WRITE_UINT32(p_Regs->fmbm_rfne, NIA_ENG_FM_CTL | NIA_FM_CTL_AC_IND_MODE_RX); + else + { + tmpReg = 0; + if (p_Params->forwardReuseIntContext) + tmpReg |= BMI_PORT_RFNE_FRWD_RPD; + /* L3/L4 checksum verify is enabled by default. */ + /*tmpReg |= BMI_PORT_RFNE_FRWD_DCL4C;*/ + WRITE_UINT32(p_Regs->fmbm_rfne, tmpReg | NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME); + } + WRITE_UINT32(p_Regs->fmbm_rfene, NIA_ENG_QMI_ENQ | NIA_ORDER_RESTOR); + + /* command attribute */ + tmpReg = BMI_CMD_RX_MR_DEF; + if (!p_FmPort->imEn) + { + tmpReg |= BMI_CMD_ATTR_ORDER; + if(p_Params->syncReq) + tmpReg |= BMI_CMD_ATTR_SYNC; + tmpReg |= ((uint32_t)p_Params->color << BMI_CMD_ATTR_COLOR_SHIFT); + } + + WRITE_UINT32(p_Regs->fmbm_rfca, tmpReg); + + /* default queues */ + if (!p_FmPort->imEn) + { + WRITE_UINT32(p_Regs->fmbm_rfqid, p_Params->dfltFqid); + WRITE_UINT32(p_Regs->fmbm_refqid, p_Params->errFqid); + } + + /* set counters */ + WRITE_UINT32(p_Regs->fmbm_rstc, BMI_COUNTERS_EN); + + performanceContersParams.taskCompVal = (uint8_t)p_FmPort->tasks.num; + performanceContersParams.queueCompVal = 1; + performanceContersParams.dmaCompVal =(uint8_t) p_FmPort->openDmas.num; + performanceContersParams.fifoCompVal = p_FmPort->fifoBufs.num; + if((err = FM_PORT_SetPerformanceCountersParams(p_FmPort, &performanceContersParams)) != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + + WRITE_UINT32(p_Regs->fmbm_rpc, BMI_COUNTERS_EN); + + /* error/status mask - check that if discard OV is set, no + discard is required for specific errors.*/ + WRITE_UINT32(p_Regs->fmbm_rfsdm, p_Params->errorsToDiscard); + + errorsToEnq = (RX_ERRS_TO_ENQ & ~p_Params->errorsToDiscard); + WRITE_UINT32(p_Regs->fmbm_rfsem, errorsToEnq); + +#ifdef FM_BMI_TO_RISC_ENQ_ERRATA_FMANc + if((GET_UINT32(p_Regs->fmbm_rfene) && NIA_ENG_MASK)== NIA_ENG_FM_CTL) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("NIA not supported at this stage")); +#endif /* FM_BMI_TO_RISC_ENQ_ERRATA_FMANc */ + + return E_OK; +} + +static t_Error BmiTxPortInit(t_FmPort *p_FmPort) +{ + t_FmPortTxBmiRegs *p_Regs = &p_FmPort->p_FmPortBmiRegs->txPortBmiRegs; + uint32_t tmpReg; + t_FmPortDriverParam *p_Params = p_FmPort->p_FmPortDriverParam; + /*uint32_t rateCountUnit;*/ + t_FmPortPerformanceCnt performanceContersParams; + + /* check that port is not busy */ + if (GET_UINT32(p_Regs->fmbm_tcfg) & BMI_PORT_CFG_EN) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Port is already enabled")); + + tmpReg = 0; + if (p_FmPort->imEn) + tmpReg |= BMI_PORT_CFG_IM; + + WRITE_UINT32(p_Regs->fmbm_tcfg, tmpReg); + + /* Configure dma attributes */ + tmpReg = 0; + tmpReg |= (uint32_t)p_Params->dmaSwapData << BMI_DMA_ATTR_SWP_SHIFT; + tmpReg |= (uint32_t)p_Params->dmaIntContextCacheAttr << BMI_DMA_ATTR_IC_CACHE_SHIFT; + tmpReg |= (uint32_t)p_Params->dmaHeaderCacheAttr << BMI_DMA_ATTR_HDR_CACHE_SHIFT; + tmpReg |= (uint32_t)p_Params->dmaScatterGatherCacheAttr << BMI_DMA_ATTR_SG_CACHE_SHIFT; + + WRITE_UINT32(p_Regs->fmbm_tda, tmpReg); + + /* Configure Tx Fifo params */ + tmpReg = 0; + tmpReg |= ((p_Params->txFifoMinFillLevel/BMI_FIFO_UNITS) << BMI_TX_FIFO_MIN_FILL_SHIFT); + tmpReg |= (((uint32_t)p_FmPort->txFifoDeqPipelineDepth - 1) << BMI_TX_FIFO_PIPELINE_DEPTH_SHIFT); + tmpReg |= ((p_Params->txFifoLowComfLevel/BMI_FIFO_UNITS - 1) << BMI_TX_LOW_COMF_SHIFT); + + WRITE_UINT32(p_Regs->fmbm_tfp, tmpReg); + + /* frame end parameters */ + tmpReg = 0; + tmpReg |= ((uint32_t)p_Params->cheksumLastBytesIgnore << BMI_TX_FRAME_END_CS_IGNORE_SHIFT); + + WRITE_UINT32(p_Regs->fmbm_tfed, tmpReg); + + if (!p_FmPort->imEn) + { + /* IC parameters */ + tmpReg = 0; + tmpReg |= (((uint32_t)p_Params->intContext.extBufOffset/OFFSET_UNITS) << BMI_IC_TO_EXT_SHIFT); + tmpReg |= (((uint32_t)p_Params->intContext.intContextOffset/OFFSET_UNITS) << BMI_IC_FROM_INT_SHIFT); + tmpReg |= (((uint32_t)p_Params->intContext.size/OFFSET_UNITS) << BMI_IC_SIZE_SHIFT); + + WRITE_UINT32(p_Regs->fmbm_ticp, tmpReg); + } + + /* NIA */ + if (p_FmPort->imEn) + { + WRITE_UINT32(p_Regs->fmbm_tfne, NIA_ENG_FM_CTL | NIA_FM_CTL_AC_IND_MODE_TX); + WRITE_UINT32(p_Regs->fmbm_tfene, NIA_ENG_FM_CTL | NIA_FM_CTL_AC_IND_MODE_TX); + } + else + { + WRITE_UINT32(p_Regs->fmbm_tfne, NIA_ENG_QMI_DEQ); + WRITE_UINT32(p_Regs->fmbm_tfene, NIA_ENG_QMI_ENQ | NIA_ORDER_RESTOR); + /* The line bellow is a trick so the FM will not release the buffer + to BM nor will try to enq the frame to QM */ + if(!p_Params->dfltFqid && p_Params->dontReleaseBuf) + { + /* override fmbm_tcfqid 0 with a false non-0 value. This will force FM to + * act acording to tfene. Otherwise, if fmbm_tcfqid is 0 the FM will release + * buffers to BM regardless of fmbm_tfene + */ + WRITE_UINT32(p_Regs->fmbm_tcfqid, 0xFFFFFF); + WRITE_UINT32(p_Regs->fmbm_tfene, NIA_ENG_BMI | NIA_BMI_AC_TX_RELEASE); + } + } + + /* command attribute */ + tmpReg = BMI_CMD_TX_MR_DEF; + if (p_FmPort->imEn) + tmpReg |= BMI_CMD_MR_DEAS; + else + { + tmpReg |= BMI_CMD_ATTR_ORDER; + /* if we set syncReq, we may get stuck when HC command is running */ + /*if(p_Params->syncReq) + tmpReg |= BMI_CMD_ATTR_SYNC;*/ + tmpReg |= ((uint32_t)p_Params->color << BMI_CMD_ATTR_COLOR_SHIFT); + } + + WRITE_UINT32(p_Regs->fmbm_tfca, tmpReg); + + /* default queues */ + if (!p_FmPort->imEn) + { + if(p_Params->dfltFqid || !p_Params->dontReleaseBuf) + WRITE_UINT32(p_Regs->fmbm_tcfqid, p_Params->dfltFqid); + WRITE_UINT32(p_Regs->fmbm_tfeqid, p_Params->errFqid); + } + + /* statistics & performance counters */ + WRITE_UINT32(p_Regs->fmbm_tstc, BMI_COUNTERS_EN); + + performanceContersParams.taskCompVal = (uint8_t)p_FmPort->tasks.num; + performanceContersParams.queueCompVal = 1; + performanceContersParams.dmaCompVal = (uint8_t)p_FmPort->openDmas.num; + performanceContersParams.fifoCompVal = p_FmPort->fifoBufs.num; + FM_PORT_SetPerformanceCountersParams(p_FmPort, &performanceContersParams); + + WRITE_UINT32(p_Regs->fmbm_tpc, BMI_COUNTERS_EN); + + return E_OK; +} + +static t_Error BmiOhPortInit(t_FmPort *p_FmPort) +{ + t_FmPortOhBmiRegs *p_Regs = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs; + uint32_t tmpReg, errorsToEnq = 0; + t_FmPortDriverParam *p_Params = p_FmPort->p_FmPortDriverParam; + t_FmPortPerformanceCnt performanceContersParams; + t_Error err; + + /* check that port is not busy */ + if (GET_UINT32(p_Regs->fmbm_ocfg) & BMI_PORT_CFG_EN) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Port is already enabled")); + + /* Configure dma attributes */ + tmpReg = 0; + tmpReg |= (uint32_t)p_Params->dmaSwapData << BMI_DMA_ATTR_SWP_SHIFT; + tmpReg |= (uint32_t)p_Params->dmaIntContextCacheAttr << BMI_DMA_ATTR_IC_CACHE_SHIFT; + tmpReg |= (uint32_t)p_Params->dmaHeaderCacheAttr << BMI_DMA_ATTR_HDR_CACHE_SHIFT; + tmpReg |= (uint32_t)p_Params->dmaScatterGatherCacheAttr << BMI_DMA_ATTR_SG_CACHE_SHIFT; + if(p_Params->dmaWriteOptimize) + tmpReg |= BMI_DMA_ATTR_WRITE_OPTIMIZE; + + WRITE_UINT32(p_Regs->fmbm_oda, tmpReg); + + /* IC parameters */ + tmpReg = 0; + tmpReg |= (((uint32_t)p_Params->intContext.extBufOffset/OFFSET_UNITS) << BMI_IC_TO_EXT_SHIFT); + tmpReg |= (((uint32_t)p_Params->intContext.intContextOffset/OFFSET_UNITS) << BMI_IC_FROM_INT_SHIFT); + tmpReg |= (((uint32_t)p_Params->intContext.size/OFFSET_UNITS) << BMI_IC_SIZE_SHIFT); + + WRITE_UINT32(p_Regs->fmbm_oicp, tmpReg); + + /* NIA */ + WRITE_UINT32(p_Regs->fmbm_ofdne, NIA_ENG_QMI_DEQ); + + if (p_FmPort->portType==e_FM_PORT_TYPE_OH_HOST_COMMAND) + WRITE_UINT32(p_Regs->fmbm_ofene, NIA_ENG_QMI_ENQ); + else + WRITE_UINT32(p_Regs->fmbm_ofene, NIA_ENG_QMI_ENQ | NIA_ORDER_RESTOR); + + /* command attribute */ + if (p_FmPort->portType==e_FM_PORT_TYPE_OH_HOST_COMMAND) + tmpReg = BMI_CMD_MR_DEAS | BMI_CMD_MR_MA; + else + tmpReg = BMI_CMD_ATTR_ORDER | BMI_CMD_MR_DEAS | BMI_CMD_MR_MA; + + if(p_Params->syncReq) + tmpReg |= BMI_CMD_ATTR_SYNC; + tmpReg |= ((uint32_t)p_Params->color << BMI_CMD_ATTR_COLOR_SHIFT); + WRITE_UINT32(p_Regs->fmbm_ofca, tmpReg); + + /* No discard - all error frames go to error queue */ + if (p_Params->frmDiscardOverride) + tmpReg = BMI_PORT_CFG_FDOVR; + else + tmpReg = 0; + WRITE_UINT32(p_Regs->fmbm_ocfg, tmpReg); + + if(p_FmPort->portType == e_FM_PORT_TYPE_OH_OFFLINE_PARSING) + { + WRITE_UINT32(p_Regs->fmbm_ofsdm, p_Params->errorsToDiscard); + + errorsToEnq = (OP_ERRS_TO_ENQ & ~p_Params->errorsToDiscard); + WRITE_UINT32(p_Regs->fmbm_ofsem, errorsToEnq); + + /* NIA */ + WRITE_UINT32(p_Regs->fmbm_ofne, NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME); + { +#ifdef FM_NO_OP_OBSERVED_POOLS + t_FmRevisionInfo revInfo; + + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if ((revInfo.majorRev == 4) && (p_Params->enBufPoolDepletion)) +#endif /* FM_NO_OP_OBSERVED_POOLS */ + { + /* define external buffer pools */ + err = SetExtBufferPools(p_FmPort); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + } + } + } + else + /* NIA */ + WRITE_UINT32(p_Regs->fmbm_ofne, NIA_ENG_FM_CTL | NIA_FM_CTL_AC_HC); + + /* default queues */ + WRITE_UINT32(p_Regs->fmbm_ofqid, p_Params->dfltFqid); + WRITE_UINT32(p_Regs->fmbm_oefqid, p_Params->errFqid); + + if(p_FmPort->internalBufferOffset) + { + tmpReg = (uint32_t)((p_FmPort->internalBufferOffset % OFFSET_UNITS) ? + (p_FmPort->internalBufferOffset/OFFSET_UNITS + 1): + (p_FmPort->internalBufferOffset/OFFSET_UNITS)); + p_FmPort->internalBufferOffset = (uint8_t)(tmpReg * OFFSET_UNITS); + WRITE_UINT32(p_Regs->fmbm_oim, tmpReg << BMI_IM_FOF_SHIFT); + } + /* statistics & performance counters */ + WRITE_UINT32(p_Regs->fmbm_ostc, BMI_COUNTERS_EN); + + performanceContersParams.taskCompVal = (uint8_t)p_FmPort->tasks.num; + performanceContersParams.queueCompVal = 0; + performanceContersParams.dmaCompVal = (uint8_t)p_FmPort->openDmas.num; + performanceContersParams.fifoCompVal = p_FmPort->fifoBufs.num; + FM_PORT_SetPerformanceCountersParams(p_FmPort, &performanceContersParams); + + WRITE_UINT32(p_Regs->fmbm_opc, BMI_COUNTERS_EN); + + return E_OK; +} + +static t_Error QmiInit(t_FmPort *p_FmPort) +{ + t_FmPortDriverParam *p_Params = NULL; + uint32_t tmpReg; + + p_Params = p_FmPort->p_FmPortDriverParam; + + /* check that port is not busy */ + if(((p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && + (p_FmPort->portType != e_FM_PORT_TYPE_RX)) && + (GET_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnc) & QMI_PORT_CFG_EN)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Port is already enabled")); + + /* enable & clear counters */ + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnc, QMI_PORT_CFG_EN_COUNTERS); + + /* The following is done for non-Rx ports only */ + if((p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && + (p_FmPort->portType != e_FM_PORT_TYPE_RX)) + { + if((p_FmPort->portType == e_FM_PORT_TYPE_TX_10G) || + (p_FmPort->portType == e_FM_PORT_TYPE_TX)) + { + /* define dequeue NIA */ + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs.fmqm_pndn, NIA_ENG_BMI | NIA_BMI_AC_TX); + /* define enqueue NIA */ + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnen, NIA_ENG_BMI | NIA_BMI_AC_TX_RELEASE); + } + else /* for HC & OP */ + { + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs.fmqm_pndn, NIA_ENG_BMI | NIA_BMI_AC_FETCH); + /* define enqueue NIA */ + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnen, NIA_ENG_BMI | NIA_BMI_AC_RELEASE); + } + + /* configure dequeue */ + tmpReg = 0; + if(p_Params->deqHighPriority) + tmpReg |= QMI_DEQ_CFG_PRI; + + switch(p_Params->deqType) + { + case(e_FM_PORT_DEQ_TYPE1): + tmpReg |= QMI_DEQ_CFG_TYPE1; + break; + case(e_FM_PORT_DEQ_TYPE2): + tmpReg |= QMI_DEQ_CFG_TYPE2; + break; + case(e_FM_PORT_DEQ_TYPE3): + tmpReg |= QMI_DEQ_CFG_TYPE3; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid dequeue type")); + } + +#ifdef FM_QMI_DEQ_OPTIONS_SUPPORT + switch(p_Params->deqPrefetchOption) + { + case(e_FM_PORT_DEQ_NO_PREFETCH): + /* Do nothing - QMI_DEQ_CFG_PREFETCH_WAITING_TNUM | QMI_DEQ_CFG_PREFETCH_1_FRAME = 0 */ + break; + case(e_FM_PORT_DEQ_PARTIAL_PREFETCH): + tmpReg |= QMI_DEQ_CFG_PREFETCH_WAITING_TNUM | QMI_DEQ_CFG_PREFETCH_3_FRAMES; + break; + case(e_FM_PORT_DEQ_FULL_PREFETCH): + tmpReg |= QMI_DEQ_CFG_PREFETCH_NO_TNUM | QMI_DEQ_CFG_PREFETCH_3_FRAMES; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid dequeue prefetch option")); + } +#endif /* FM_QMI_DEQ_OPTIONS_SUPPORT */ + + tmpReg |= p_Params->deqByteCnt; + tmpReg |= (uint32_t)p_Params->deqSubPortal << QMI_DEQ_CFG_SUBPORTAL_SHIFT; + + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs.fmqm_pndc, tmpReg); + } + else /* rx port */ + /* define enqueue NIA */ + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnen, NIA_ENG_BMI | NIA_BMI_AC_RELEASE); + + return E_OK; +} + +static t_Error BmiRxPortCheckAndGetCounterPtr(t_FmPort *p_FmPort, e_FmPortCounters counter, volatile uint32_t **p_Ptr) +{ + t_FmPortRxBmiRegs *p_BmiRegs = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs; + + /* check that counters are enabled */ + switch(counter) + { + case(e_FM_PORT_COUNTERS_CYCLE): + case(e_FM_PORT_COUNTERS_TASK_UTIL): + case(e_FM_PORT_COUNTERS_QUEUE_UTIL): + case(e_FM_PORT_COUNTERS_DMA_UTIL): + case(e_FM_PORT_COUNTERS_FIFO_UTIL): + case(e_FM_PORT_COUNTERS_RX_PAUSE_ACTIVATION): + /* performance counters - may be read when disabled */ + break; + case(e_FM_PORT_COUNTERS_FRAME): + case(e_FM_PORT_COUNTERS_DISCARD_FRAME): + case(e_FM_PORT_COUNTERS_RX_BAD_FRAME): + case(e_FM_PORT_COUNTERS_RX_LARGE_FRAME): + case(e_FM_PORT_COUNTERS_RX_FILTER_FRAME): + case(e_FM_PORT_COUNTERS_RX_LIST_DMA_ERR): + case(e_FM_PORT_COUNTERS_RX_OUT_OF_BUFFERS_DISCARD): + case(e_FM_PORT_COUNTERS_DEALLOC_BUF): + if(!(GET_UINT32(p_BmiRegs->fmbm_rstc) & BMI_COUNTERS_EN)) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Requested counter was not enabled")); + break; + default: + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Requested counter is not available for Rx ports")); + } + + /* Set counter */ + switch(counter) + { + case(e_FM_PORT_COUNTERS_CYCLE): + *p_Ptr = &p_BmiRegs->fmbm_rccn; + break; + case(e_FM_PORT_COUNTERS_TASK_UTIL): + *p_Ptr = &p_BmiRegs->fmbm_rtuc; + break; + case(e_FM_PORT_COUNTERS_QUEUE_UTIL): + *p_Ptr = &p_BmiRegs->fmbm_rrquc; + break; + case(e_FM_PORT_COUNTERS_DMA_UTIL): + *p_Ptr = &p_BmiRegs->fmbm_rduc; + break; + case(e_FM_PORT_COUNTERS_FIFO_UTIL): + *p_Ptr = &p_BmiRegs->fmbm_rfuc; + break; + case(e_FM_PORT_COUNTERS_RX_PAUSE_ACTIVATION): + *p_Ptr = &p_BmiRegs->fmbm_rpac; + break; + case(e_FM_PORT_COUNTERS_FRAME): + *p_Ptr = &p_BmiRegs->fmbm_rfrc; + break; + case(e_FM_PORT_COUNTERS_DISCARD_FRAME): + *p_Ptr = &p_BmiRegs->fmbm_rfcd; + break; + case(e_FM_PORT_COUNTERS_RX_BAD_FRAME): + *p_Ptr = &p_BmiRegs->fmbm_rfbc; + break; + case(e_FM_PORT_COUNTERS_RX_LARGE_FRAME): + *p_Ptr = &p_BmiRegs->fmbm_rlfc; + break; + case(e_FM_PORT_COUNTERS_RX_FILTER_FRAME): + *p_Ptr = &p_BmiRegs->fmbm_rffc; + break; + case(e_FM_PORT_COUNTERS_RX_LIST_DMA_ERR): +#ifdef FM_PORT_COUNTERS_ERRATA_FMANg + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("Requested counter is not available in rev1")); + } +#endif /* FM_PORT_COUNTERS_ERRATA_FMANg */ + *p_Ptr = &p_BmiRegs->fmbm_rfldec; + break; + case(e_FM_PORT_COUNTERS_RX_OUT_OF_BUFFERS_DISCARD): + *p_Ptr = &p_BmiRegs->fmbm_rodc; + break; + case(e_FM_PORT_COUNTERS_DEALLOC_BUF): + *p_Ptr = &p_BmiRegs->fmbm_rbdc; + break; + default: + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Requested counter is not available for Rx ports")); + } + + return E_OK; +} + +static t_Error BmiTxPortCheckAndGetCounterPtr(t_FmPort *p_FmPort, e_FmPortCounters counter, volatile uint32_t **p_Ptr) +{ + t_FmPortTxBmiRegs *p_BmiRegs = &p_FmPort->p_FmPortBmiRegs->txPortBmiRegs; + + /* check that counters are enabled */ + switch(counter) + { + case(e_FM_PORT_COUNTERS_CYCLE): + case(e_FM_PORT_COUNTERS_TASK_UTIL): + case(e_FM_PORT_COUNTERS_QUEUE_UTIL): + case(e_FM_PORT_COUNTERS_DMA_UTIL): + case(e_FM_PORT_COUNTERS_FIFO_UTIL): + /* performance counters - may be read when disabled */ + break; + case(e_FM_PORT_COUNTERS_FRAME): + case(e_FM_PORT_COUNTERS_DISCARD_FRAME): + case(e_FM_PORT_COUNTERS_LENGTH_ERR): + case(e_FM_PORT_COUNTERS_UNSUPPRTED_FORMAT): + case(e_FM_PORT_COUNTERS_DEALLOC_BUF): + if(!(GET_UINT32(p_BmiRegs->fmbm_tstc) & BMI_COUNTERS_EN)) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Requested counter was not enabled")); + break; + default: + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Requested counter is not available for Tx ports")); + } + + /* Set counter */ + switch(counter) + { + case(e_FM_PORT_COUNTERS_CYCLE): + *p_Ptr = &p_BmiRegs->fmbm_tccn; + break; + case(e_FM_PORT_COUNTERS_TASK_UTIL): + *p_Ptr = &p_BmiRegs->fmbm_ttuc; + break; + case(e_FM_PORT_COUNTERS_QUEUE_UTIL): + *p_Ptr = &p_BmiRegs->fmbm_ttcquc; + break; + case(e_FM_PORT_COUNTERS_DMA_UTIL): + *p_Ptr = &p_BmiRegs->fmbm_tduc; + break; + case(e_FM_PORT_COUNTERS_FIFO_UTIL): + *p_Ptr = &p_BmiRegs->fmbm_tfuc; + break; + case(e_FM_PORT_COUNTERS_FRAME): + *p_Ptr = &p_BmiRegs->fmbm_tfrc; + break; + case(e_FM_PORT_COUNTERS_DISCARD_FRAME): + *p_Ptr = &p_BmiRegs->fmbm_tfdc; + break; + case(e_FM_PORT_COUNTERS_LENGTH_ERR): + *p_Ptr = &p_BmiRegs->fmbm_tfledc; + break; + case(e_FM_PORT_COUNTERS_UNSUPPRTED_FORMAT): + *p_Ptr = &p_BmiRegs->fmbm_tfufdc; + break; + case(e_FM_PORT_COUNTERS_DEALLOC_BUF): + *p_Ptr = &p_BmiRegs->fmbm_tbdc; + break; + default: + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Requested counter is not available for Tx ports")); + } + + return E_OK; +} + +static t_Error BmiOhPortCheckAndGetCounterPtr(t_FmPort *p_FmPort, e_FmPortCounters counter, volatile uint32_t **p_Ptr) +{ + t_FmPortOhBmiRegs *p_BmiRegs = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs; + + /* check that counters are enabled */ + switch(counter) + { + case(e_FM_PORT_COUNTERS_CYCLE): + case(e_FM_PORT_COUNTERS_TASK_UTIL): + case(e_FM_PORT_COUNTERS_DMA_UTIL): + case(e_FM_PORT_COUNTERS_FIFO_UTIL): + /* performance counters - may be read when disabled */ + break; + case(e_FM_PORT_COUNTERS_FRAME): + case(e_FM_PORT_COUNTERS_DISCARD_FRAME): + case(e_FM_PORT_COUNTERS_RX_LIST_DMA_ERR): + case(e_FM_PORT_COUNTERS_WRED_DISCARD): + case(e_FM_PORT_COUNTERS_LENGTH_ERR): + case(e_FM_PORT_COUNTERS_UNSUPPRTED_FORMAT): + case(e_FM_PORT_COUNTERS_DEALLOC_BUF): + if(!(GET_UINT32(p_BmiRegs->fmbm_ostc) & BMI_COUNTERS_EN)) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Requested counter was not enabled")); + break; + case(e_FM_PORT_COUNTERS_RX_FILTER_FRAME): /* only valid for offline parsing */ + if(p_FmPort->portType == e_FM_PORT_TYPE_OH_HOST_COMMAND) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Requested counter is not available for Host Command ports")); + if(!(GET_UINT32(p_BmiRegs->fmbm_ostc) & BMI_COUNTERS_EN)) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Requested counter was not enabled")); + break; + default: + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Requested counter is not available for O/H ports")); + } + + /* Set counter */ + switch(counter) + { + case(e_FM_PORT_COUNTERS_CYCLE): + *p_Ptr = &p_BmiRegs->fmbm_occn; + break; + case(e_FM_PORT_COUNTERS_TASK_UTIL): + *p_Ptr = &p_BmiRegs->fmbm_otuc; + break; + case(e_FM_PORT_COUNTERS_DMA_UTIL): + *p_Ptr = &p_BmiRegs->fmbm_oduc; + break; + case(e_FM_PORT_COUNTERS_FIFO_UTIL): + *p_Ptr = &p_BmiRegs->fmbm_ofuc; + break; + case(e_FM_PORT_COUNTERS_FRAME): + *p_Ptr = &p_BmiRegs->fmbm_ofrc; + break; + case(e_FM_PORT_COUNTERS_DISCARD_FRAME): + *p_Ptr = &p_BmiRegs->fmbm_ofdc; + break; + case(e_FM_PORT_COUNTERS_RX_FILTER_FRAME): + *p_Ptr = &p_BmiRegs->fmbm_offc; + break; + case(e_FM_PORT_COUNTERS_RX_LIST_DMA_ERR): +#ifdef FM_PORT_COUNTERS_ERRATA_FMANg + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("Requested counter is not available in rev1")); + } +#endif /* FM_PORT_COUNTERS_ERRATA_FMANg */ + *p_Ptr = &p_BmiRegs->fmbm_ofldec; + break; + case(e_FM_PORT_COUNTERS_WRED_DISCARD): + *p_Ptr = &p_BmiRegs->fmbm_ofwdc; + break; + case(e_FM_PORT_COUNTERS_LENGTH_ERR): + *p_Ptr = &p_BmiRegs->fmbm_ofledc; + break; + case(e_FM_PORT_COUNTERS_UNSUPPRTED_FORMAT): + *p_Ptr = &p_BmiRegs->fmbm_ofufdc; + break; + case(e_FM_PORT_COUNTERS_DEALLOC_BUF): + *p_Ptr = &p_BmiRegs->fmbm_obdc; + break; + default: + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Requested counter is not available for O/H ports")); + } + + return E_OK; +} + +static t_Error AdditionalPrsParams(t_FmPort *p_FmPort, t_FmPcdPrsAdditionalHdrParams *p_HdrParams, uint32_t *p_SoftSeqAttachReg) +{ + uint8_t hdrNum, Ipv4HdrNum; + u_FmPcdHdrPrsOpts *p_prsOpts; + uint32_t tmpReg = 0, tmpPrsOffset; + + if(IS_PRIVATE_HEADER(p_HdrParams->hdr) || IS_SPECIAL_HEADER(p_HdrParams->hdr)) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("No additional parameters for private or special headers.")); + + if(p_HdrParams->errDisable) + tmpReg |= PRS_HDR_ERROR_DIS; + + /* Set parser options */ + if(p_HdrParams->usePrsOpts) + { + p_prsOpts = &p_HdrParams->prsOpts; + switch(p_HdrParams->hdr) + { + case(HEADER_TYPE_MPLS): + if(p_prsOpts->mplsPrsOptions.labelInterpretationEnable) + tmpReg |= PRS_HDR_MPLS_LBL_INTER_EN; + GET_PRS_HDR_NUM(hdrNum, p_prsOpts->mplsPrsOptions.nextParse); + if(hdrNum == ILLEGAL_HDR_NUM) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, NO_MSG); + GET_PRS_HDR_NUM(Ipv4HdrNum, HEADER_TYPE_IPv4); + if(hdrNum < Ipv4HdrNum) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, + ("Header must be equal or higher than IPv4")); + tmpReg |= ((uint32_t)hdrNum * PRS_HDR_ENTRY_SIZE) << PRS_HDR_MPLS_NEXT_HDR_SHIFT; + break; + case(HEADER_TYPE_PPPoE): + if(p_prsOpts->pppoePrsOptions.enableMTUCheck) + { +#ifdef FM_PPPOE_NO_MTU_CHECK + t_FmRevisionInfo revInfo; + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("Invalid parser option")); + else +#endif /* FM_PPPOE_NO_MTU_CHECK */ + tmpReg |= PRS_HDR_PPPOE_MTU_CHECK_EN; + } + break; + case(HEADER_TYPE_IPv6): + if(p_prsOpts->ipv6PrsOptions.routingHdrDisable) + tmpReg |= PRS_HDR_IPV6_ROUTE_HDR_DIS; + break; + case(HEADER_TYPE_TCP): + if(p_prsOpts->tcpPrsOptions.padIgnoreChecksum) + tmpReg |= PRS_HDR_TCP_PAD_REMOVAL; + break; + case(HEADER_TYPE_UDP): + if(p_prsOpts->udpPrsOptions.padIgnoreChecksum) + tmpReg |= PRS_HDR_TCP_PAD_REMOVAL; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid header")); + } + } + + /* set software parsing (address is devided in 2 since parser uses 2 byte access. */ + if(p_HdrParams->swPrsEnable) + { + tmpPrsOffset = FmPcdGetSwPrsOffset(p_FmPort->h_FmPcd, p_HdrParams->hdr, p_HdrParams->indexPerHdr); + if(tmpPrsOffset == ILLEGAL_BASE) + RETURN_ERROR(MINOR, E_INVALID_VALUE, NO_MSG); + tmpReg |= (PRS_HDR_SW_PRS_EN | tmpPrsOffset); + } + *p_SoftSeqAttachReg = tmpReg; + + return E_OK; +} + +static uint32_t GetPortSchemeBindParams(t_Handle h_FmPort, t_FmPcdKgInterModuleBindPortToSchemes *p_SchemeBind) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + uint32_t walking1Mask = 0x80000000, tmp; + uint8_t idx = 0; + + p_SchemeBind->netEnvId = p_FmPort->netEnvId; + p_SchemeBind->hardwarePortId = p_FmPort->hardwarePortId; + p_SchemeBind->useClsPlan = p_FmPort->useClsPlan; + p_SchemeBind->numOfSchemes = 0; + tmp = p_FmPort->schemesPerPortVector; + if(tmp) + { + while (tmp) + { + if(tmp & walking1Mask) + { + p_SchemeBind->schemesIds[p_SchemeBind->numOfSchemes] = FmPcdKgGetSchemeSwId(p_FmPort->h_FmPcd, idx); + p_SchemeBind->numOfSchemes++; + tmp &= ~walking1Mask; + } + walking1Mask >>= 1; + idx++; + } + } + + return tmp; +} + +static t_Error BuildBufferStructure(t_FmPort *p_FmPort) +{ + uint32_t tmp; + + ASSERT_COND(p_FmPort); + + /* Align start of internal context data to 16 byte */ + p_FmPort->p_FmPortDriverParam->intContext.extBufOffset = + (uint16_t)((p_FmPort->p_FmPortDriverParam->bufferPrefixContent.privDataSize & (OFFSET_UNITS-1)) ? + ((p_FmPort->p_FmPortDriverParam->bufferPrefixContent.privDataSize + OFFSET_UNITS) & ~(uint16_t)(OFFSET_UNITS-1)) : + p_FmPort->p_FmPortDriverParam->bufferPrefixContent.privDataSize); + + /* Translate margin and intContext params to FM parameters */ +#ifdef FM_INCORRECT_CS_ERRATA_FMAN18 + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + { + uint8_t mod = p_FmPort->p_FmPortDriverParam->bufferPrefixContent.dataAlign % 256; + if(mod) + { + p_FmPort->p_FmPortDriverParam->bufferPrefixContent.dataAlign += (256-mod); + DBG(WARNING,("dataAlign modified to next 256 to conform with FMAN18 errata\n")); + } + } + } +#endif /* FM_INCORRECT_CS_ERRATA_FMAN18 */ + + /* Initialize with illegal value. Later we'll set legal values. */ + p_FmPort->bufferOffsets.prsResultOffset = (uint32_t)ILLEGAL_BASE; + p_FmPort->bufferOffsets.timeStampOffset = (uint32_t)ILLEGAL_BASE; + p_FmPort->bufferOffsets.hashResultOffset= (uint32_t)ILLEGAL_BASE; + p_FmPort->bufferOffsets.pcdInfoOffset = (uint32_t)ILLEGAL_BASE; +#ifdef DEBUG + p_FmPort->bufferOffsets.debugOffset = (uint32_t)ILLEGAL_BASE; +#endif /* DEBUG */ + + /* Internally the driver supports 4 options + 1. prsResult/timestamp/hashResult selection (in fact 8 options, but for simplicity we'll + relate to it as 1). + 2. All IC context (from AD) except debug. + 3. Debug information only. + 4. All IC context (from AD) including debug. + Note, that if user asks for prsResult/timestamp/hashResult and Debug, we give them (4) */ + + /* This 'if' covers options 2 & 4. We copy from beginning of context with or without debug. */ + /* If passAllOtherPCDInfo explicitly requested, or passDebugInfo+prs/ts --> we also take passAllOtherPCDInfo */ + if ((p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passAllOtherPCDInfo) +#ifdef DEBUG + || (p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passDebugInfo && + (p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passPrsResult || + p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passTimeStamp || + p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passHashResult)) +#endif /* DEBUG */ + ) + { +#ifdef DEBUG + if(p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passDebugInfo) + { + p_FmPort->p_FmPortDriverParam->intContext.size = 240; + p_FmPort->bufferOffsets.debugOffset = + (uint32_t)(p_FmPort->p_FmPortDriverParam->intContext.extBufOffset + 128); + } + else +#endif /* DEBUG */ + p_FmPort->p_FmPortDriverParam->intContext.size = 128; /* must be aligned to 16 */ + /* Start copying data after 16 bytes (FD) from the beginning of the internal context */ + p_FmPort->p_FmPortDriverParam->intContext.intContextOffset = 16; + + if (p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passAllOtherPCDInfo) + p_FmPort->bufferOffsets.pcdInfoOffset = p_FmPort->p_FmPortDriverParam->intContext.extBufOffset; + if (p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passPrsResult) + p_FmPort->bufferOffsets.prsResultOffset = + (uint32_t)(p_FmPort->p_FmPortDriverParam->intContext.extBufOffset + 16); + if (p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passTimeStamp) + p_FmPort->bufferOffsets.timeStampOffset = + (uint32_t)(p_FmPort->p_FmPortDriverParam->intContext.extBufOffset + 48); + if (p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passHashResult) + p_FmPort->bufferOffsets.hashResultOffset = + (uint32_t)(p_FmPort->p_FmPortDriverParam->intContext.extBufOffset + 56); + } + else + { +#ifdef DEBUG + if (p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passDebugInfo) + { + /* This case covers option 3 */ + p_FmPort->p_FmPortDriverParam->intContext.size = 112; + p_FmPort->p_FmPortDriverParam->intContext.intContextOffset = 144; + p_FmPort->bufferOffsets.debugOffset = p_FmPort->p_FmPortDriverParam->intContext.extBufOffset; + } + else +#endif /* DEBUG */ + { + /* This case covers the options under 1 */ + /* Copy size must be in 16-byte granularity. */ + p_FmPort->p_FmPortDriverParam->intContext.size = + (uint16_t)((p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passPrsResult ? 32 : 0) + + ((p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passTimeStamp || + p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passHashResult) ? 16 : 0)); + + /* Align start of internal context data to 16 byte */ + p_FmPort->p_FmPortDriverParam->intContext.intContextOffset = + (uint8_t)(p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passPrsResult ? 32 : + ((p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passTimeStamp || + p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passHashResult) ? 64 : 0)); + + if(p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passPrsResult) + p_FmPort->bufferOffsets.prsResultOffset = p_FmPort->p_FmPortDriverParam->intContext.extBufOffset; + if(p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passTimeStamp) + p_FmPort->bufferOffsets.timeStampOffset = p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passPrsResult ? + (p_FmPort->p_FmPortDriverParam->intContext.extBufOffset + sizeof(t_FmPrsResult)) : + p_FmPort->p_FmPortDriverParam->intContext.extBufOffset; + if(p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passHashResult) + /* If PR is not requested, whether TS is requested or not, IC will be copied from TS */ + p_FmPort->bufferOffsets.hashResultOffset = p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passPrsResult ? + (p_FmPort->p_FmPortDriverParam->intContext.extBufOffset + sizeof(t_FmPrsResult) + 8) : + p_FmPort->p_FmPortDriverParam->intContext.extBufOffset + 8; + } + } + + p_FmPort->p_FmPortDriverParam->bufMargins.startMargins = + (uint16_t)(p_FmPort->p_FmPortDriverParam->intContext.extBufOffset + + p_FmPort->p_FmPortDriverParam->intContext.size); +#ifdef FM_CAPWAP_SUPPORT + /* save extra space for manip in both external and internal buffers */ + if(p_FmPort->p_FmPortDriverParam->bufferPrefixContent.manipExtraSpace) + { + if((p_FmPort->p_FmPortDriverParam->bufferPrefixContent.manipExtraSpace + FRAG_EXTRA_SPACE) >= 256) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("p_FmPort->p_FmPortDriverParam->bufferPrefixContent.manipExtraSpace + 32 can not be equal or larger to 256")); + p_FmPort->bufferOffsets.manipOffset = p_FmPort->p_FmPortDriverParam->bufMargins.startMargins; + p_FmPort->p_FmPortDriverParam->bufMargins.startMargins += (p_FmPort->p_FmPortDriverParam->bufferPrefixContent.manipExtraSpace + FRAG_EXTRA_SPACE); + p_FmPort->p_FmPortDriverParam->internalBufferOffset = + (uint8_t)(p_FmPort->p_FmPortDriverParam->bufferPrefixContent.manipExtraSpace + FRAG_EXTRA_SPACE); + } +#endif /* FM_CAPWAP_SUPPORT */ + + /* align data start */ + tmp = (uint32_t)(p_FmPort->p_FmPortDriverParam->bufMargins.startMargins % + p_FmPort->p_FmPortDriverParam->bufferPrefixContent.dataAlign); + if (tmp) + p_FmPort->p_FmPortDriverParam->bufMargins.startMargins += (p_FmPort->p_FmPortDriverParam->bufferPrefixContent.dataAlign-tmp); + p_FmPort->bufferOffsets.dataOffset = p_FmPort->p_FmPortDriverParam->bufMargins.startMargins; + p_FmPort->internalBufferOffset = p_FmPort->p_FmPortDriverParam->internalBufferOffset; + + return E_OK; +} + +static t_Error SetPcd(t_Handle h_FmPort, t_FmPortPcdParams *p_PcdParams) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + t_Error err = E_OK; + uint32_t tmpReg; + volatile uint32_t *p_BmiNia=NULL; + volatile uint32_t *p_BmiPrsNia=NULL; + volatile uint32_t *p_BmiPrsStartOffset=NULL; + volatile uint32_t *p_BmiInitPrsResult=NULL; + volatile uint32_t *p_BmiCcBase=NULL; + uint8_t hdrNum, L3HdrNum, greHdrNum; + int i; + bool isEmptyClsPlanGrp; + uint32_t tmpHxs[FM_PCD_PRS_NUM_OF_HDRS]; + uint16_t absoluteProfileId; + uint8_t physicalSchemeId; + uint32_t ccTreePhysOffset; + SANITY_CHECK_RETURN_ERROR(h_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + + if (p_FmPort->imEn) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for non-independant mode ports only")); + + if ((p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && + (p_FmPort->portType != e_FM_PORT_TYPE_RX) && + (p_FmPort->portType != e_FM_PORT_TYPE_OH_OFFLINE_PARSING)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Rx and offline parsing ports only")); + + p_FmPort->netEnvId = (uint8_t)(PTR_TO_UINT(p_PcdParams->h_NetEnv)-1); + + p_FmPort->pcdEngines = 0; + + /* initialize p_FmPort->pcdEngines field in port's structure */ + switch(p_PcdParams->pcdSupport) + { + case(e_FM_PORT_PCD_SUPPORT_NONE): + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("No PCD configuration required if e_FM_PORT_PCD_SUPPORT_NONE selected")); + case(e_FM_PORT_PCD_SUPPORT_PRS_ONLY): + p_FmPort->pcdEngines |= FM_PCD_PRS; + break; + case(e_FM_PORT_PCD_SUPPORT_PLCR_ONLY): + if (CHECK_FM_CTL_AC_POST_FETCH_PCD(p_FmPort->savedBmiNia)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("parser support is required")); + p_FmPort->pcdEngines |= FM_PCD_PLCR; + break; + case(e_FM_PORT_PCD_SUPPORT_PRS_AND_PLCR): + p_FmPort->pcdEngines |= FM_PCD_PRS; + p_FmPort->pcdEngines |= FM_PCD_PLCR; + break; + case(e_FM_PORT_PCD_SUPPORT_PRS_AND_KG): + p_FmPort->pcdEngines |= FM_PCD_PRS; + p_FmPort->pcdEngines |= FM_PCD_KG; + break; + case(e_FM_PORT_PCD_SUPPORT_PRS_AND_KG_AND_CC): + p_FmPort->pcdEngines |= FM_PCD_PRS; + p_FmPort->pcdEngines |= FM_PCD_CC; + p_FmPort->pcdEngines |= FM_PCD_KG; + break; + case(e_FM_PORT_PCD_SUPPORT_PRS_AND_KG_AND_CC_AND_PLCR): + p_FmPort->pcdEngines |= FM_PCD_PRS; + p_FmPort->pcdEngines |= FM_PCD_KG; + p_FmPort->pcdEngines |= FM_PCD_CC; + p_FmPort->pcdEngines |= FM_PCD_PLCR; + break; + case(e_FM_PORT_PCD_SUPPORT_PRS_AND_KG_AND_PLCR): + p_FmPort->pcdEngines |= FM_PCD_PRS; + p_FmPort->pcdEngines |= FM_PCD_KG; + p_FmPort->pcdEngines |= FM_PCD_PLCR; + break; + +#ifdef FM_CAPWAP_SUPPORT + case(e_FM_PORT_PCD_SUPPORT_CC_ONLY): + if (CHECK_FM_CTL_AC_POST_FETCH_PCD(p_FmPort->savedBmiNia)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("parser support is required")); + p_FmPort->pcdEngines |= FM_PCD_CC; + break; + case(e_FM_PORT_PCD_SUPPORT_CC_AND_KG): + if (CHECK_FM_CTL_AC_POST_FETCH_PCD(p_FmPort->savedBmiNia)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("parser support is required")); + p_FmPort->pcdEngines |= FM_PCD_CC; + p_FmPort->pcdEngines |= FM_PCD_KG; + break; + case(e_FM_PORT_PCD_SUPPORT_CC_AND_KG_AND_PLCR): + if (CHECK_FM_CTL_AC_POST_FETCH_PCD(p_FmPort->savedBmiNia)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("parser support is required")); + p_FmPort->pcdEngines |= FM_PCD_CC; + p_FmPort->pcdEngines |= FM_PCD_KG; + p_FmPort->pcdEngines |= FM_PCD_PLCR; + break; +#endif /* FM_CAPWAP_SUPPORT */ + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("invalid pcdSupport")); + } + + if((p_FmPort->pcdEngines & FM_PCD_PRS) && (p_PcdParams->p_PrsParams->numOfHdrsWithAdditionalParams > FM_PCD_PRS_NUM_OF_HDRS)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Port parser numOfHdrsWithAdditionalParams may not exceed %d", FM_PCD_PRS_NUM_OF_HDRS)); + + /* check that parameters exist for each and only each defined engine */ + if((!!(p_FmPort->pcdEngines & FM_PCD_PRS) != !!p_PcdParams->p_PrsParams) || + (!!(p_FmPort->pcdEngines & FM_PCD_KG) != !!p_PcdParams->p_KgParams) || + (!!(p_FmPort->pcdEngines & FM_PCD_CC) != !!p_PcdParams->p_CcParams)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("PCD initialization structure is not consistant with pcdSupport")); + + /* get PCD registers pointers */ + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + p_BmiNia = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rfne; + p_BmiPrsNia = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rfpne; + p_BmiPrsStartOffset = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rpso; + p_BmiInitPrsResult = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rprai[0]; + p_BmiCcBase = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rccb; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + p_BmiNia = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_ofne; + p_BmiPrsNia = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_ofpne; + p_BmiPrsStartOffset = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_opso; + p_BmiInitPrsResult = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_oprai[0]; + p_BmiCcBase = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_occb; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid port type")); + } + + if(p_FmPort->pcdEngines & FM_PCD_KG) + { + + if(p_PcdParams->p_KgParams->numOfSchemes == 0) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("For ports using Keygen, at lease one scheme must be bound. ")); + /* for each scheme */ + for(i = 0; ip_KgParams->numOfSchemes; i++) + { + physicalSchemeId = (uint8_t)(PTR_TO_UINT(p_PcdParams->p_KgParams->h_Schemes[i])-1); + /* build vector */ + p_FmPort->schemesPerPortVector |= 1 << (31 - (uint32_t)physicalSchemeId); + } + + err = FmPcdKgSetOrBindToClsPlanGrp(p_FmPort->h_FmPcd, + p_FmPort->hardwarePortId, + p_FmPort->netEnvId, + p_FmPort->optArray, + &p_FmPort->clsPlanGrpId, + &isEmptyClsPlanGrp); + if(err) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("FmPcdKgSetOrBindToClsPlanGrp failed. ")); + + p_FmPort->useClsPlan = !isEmptyClsPlanGrp; + } + + /* set PCD port parameter */ + if(p_FmPort->pcdEngines & FM_PCD_CC) + { + err = FmPcdCcBindTree(p_FmPort->h_FmPcd, p_PcdParams->p_CcParams->h_CcTree, &ccTreePhysOffset, h_FmPort); + if(err) + RETURN_ERROR(MINOR, err, NO_MSG); + + WRITE_UINT32(*p_BmiCcBase, ccTreePhysOffset); + p_FmPort->ccTreeId = p_PcdParams->p_CcParams->h_CcTree; + } + + /***************************/ + /* configure NIA after BMI */ + /***************************/ + if (!CHECK_FM_CTL_AC_POST_FETCH_PCD(p_FmPort->savedBmiNia)) + /* rfne may contain FDCS bits, so first we read them. */ + p_FmPort->savedBmiNia = GET_UINT32(*p_BmiNia) & BMI_RFNE_FDCS_MASK; + + /* If policer is used directly after BMI or PRS */ + if((p_FmPort->pcdEngines & FM_PCD_PLCR) && + ((p_PcdParams->pcdSupport == e_FM_PORT_PCD_SUPPORT_PLCR_ONLY) || + (p_PcdParams->pcdSupport == e_FM_PORT_PCD_SUPPORT_PRS_AND_PLCR))) + { + absoluteProfileId = (uint16_t)(PTR_TO_UINT(p_PcdParams->p_PlcrParams->h_Profile)-1); + + if(!FmPcdPlcrIsProfileValid(p_FmPort->h_FmPcd, absoluteProfileId)) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Private port profile not valid.")); + + tmpReg = (uint32_t)(absoluteProfileId | NIA_PLCR_ABSOLUTE); + + if(p_FmPort->pcdEngines & FM_PCD_PRS) /* e_FM_PCD_SUPPORT_PRS_AND_PLCR */ + { + /* update BMI HPNIA */ + WRITE_UINT32(*p_BmiPrsNia, (uint32_t)(NIA_ENG_PLCR | tmpReg)); + } + else /* e_FM_PCD_SUPPORT_PLCR_ONLY */ + /* update BMI NIA */ + p_FmPort->savedBmiNia |= (uint32_t)(NIA_ENG_PLCR); + } + +#ifdef FM_CAPWAP_SUPPORT + /* if CC is used directly after BMI */ + if((p_PcdParams->pcdSupport == e_FM_PORT_PCD_SUPPORT_CC_ONLY) || + (p_PcdParams->pcdSupport == e_FM_PORT_PCD_SUPPORT_CC_AND_KG) || + (p_PcdParams->pcdSupport == e_FM_PORT_PCD_SUPPORT_CC_AND_KG_AND_PLCR)) + { + if (p_FmPort->portType != e_FM_PORT_TYPE_OH_OFFLINE_PARSING) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("e_FM_PORT_PCD_SUPPORT_CC_xx available for offline parsing ports only")); + p_FmPort->savedBmiNia |= (uint32_t)(NIA_ENG_FM_CTL | NIA_FM_CTL_AC_CC); + /* check that prs start offset == RIM[FOF] */ + } +#endif /* FM_CAPWAP_SUPPORT */ + + if (p_FmPort->pcdEngines & FM_PCD_PRS) + { + ASSERT_COND(p_PcdParams->p_PrsParams); + /* if PRS is used it is always first */ + GET_PRS_HDR_NUM(hdrNum, p_PcdParams->p_PrsParams->firstPrsHdr); + if (hdrNum == ILLEGAL_HDR_NUM) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("Unsupported header.")); + if (!CHECK_FM_CTL_AC_POST_FETCH_PCD(p_FmPort->savedBmiNia)) + p_FmPort->savedBmiNia |= (uint32_t)(NIA_ENG_PRS | (uint32_t)(hdrNum)); + /* set after parser NIA */ + tmpReg = 0; + switch(p_PcdParams->pcdSupport) + { + case(e_FM_PORT_PCD_SUPPORT_PRS_ONLY): + WRITE_UINT32(*p_BmiPrsNia, NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME); + break; + case(e_FM_PORT_PCD_SUPPORT_PRS_AND_KG_AND_CC): + case(e_FM_PORT_PCD_SUPPORT_PRS_AND_KG_AND_CC_AND_PLCR): + tmpReg = NIA_KG_CC_EN; + case(e_FM_PORT_PCD_SUPPORT_PRS_AND_KG): + case(e_FM_PORT_PCD_SUPPORT_PRS_AND_KG_AND_PLCR): + if(p_PcdParams->p_KgParams->directScheme) + { + physicalSchemeId = (uint8_t)(PTR_TO_UINT(p_PcdParams->p_KgParams->h_DirectScheme)-1); + /* check that this scheme was bound to this port */ + for(i=0 ; ip_KgParams->numOfSchemes; i++) + if(p_PcdParams->p_KgParams->h_DirectScheme == p_PcdParams->p_KgParams->h_Schemes[i]) + break; + if(i == p_PcdParams->p_KgParams->numOfSchemes) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Direct scheme is not one of the port selected schemes.")); + tmpReg |= (uint32_t)(NIA_KG_DIRECT | physicalSchemeId); + } + WRITE_UINT32(*p_BmiPrsNia, NIA_ENG_KG | tmpReg); + break; + case(e_FM_PORT_PCD_SUPPORT_PRS_AND_PLCR): + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid PCD support")); + } + + /* set start parsing offset */ + /* WRITE_UINT32(*p_BmiPrsStartOffset, p_PcdParams->p_PrsParams->parsingOffset); */ + + /************************************/ + /* Parser port parameters */ + /************************************/ + /* stop before configuring */ + WRITE_UINT32(p_FmPort->p_FmPortPrsRegs->pcac, PRS_CAC_STOP); + /* wait for parser to be in idle state */ + while(GET_UINT32(p_FmPort->p_FmPortPrsRegs->pcac) & PRS_CAC_ACTIVE) ; + + /* set soft seq attachment register */ + memset(tmpHxs, 0, FM_PCD_PRS_NUM_OF_HDRS*sizeof(uint32_t)); + + /* set protocol options */ + for(i=0;p_FmPort->optArray[i];i++) + switch(p_FmPort->optArray[i]) + { + case(ETH_BROADCAST): + GET_PRS_HDR_NUM(hdrNum, HEADER_TYPE_ETH) + tmpHxs[hdrNum] |= (i+1) << PRS_HDR_ETH_BC_SHIFT; + break; + case(ETH_MULTICAST): + GET_PRS_HDR_NUM(hdrNum, HEADER_TYPE_ETH) + tmpHxs[hdrNum] |= (i+1) << PRS_HDR_ETH_MC_SHIFT; + break; + case(VLAN_STACKED): + GET_PRS_HDR_NUM(hdrNum, HEADER_TYPE_VLAN) + tmpHxs[hdrNum] |= (i+1)<< PRS_HDR_VLAN_STACKED_SHIFT; + break; + case(MPLS_STACKED): + GET_PRS_HDR_NUM(hdrNum, HEADER_TYPE_MPLS) + tmpHxs[hdrNum] |= (i+1) << PRS_HDR_MPLS_STACKED_SHIFT; + break; + case(IPV4_BROADCAST_1): + GET_PRS_HDR_NUM(hdrNum, HEADER_TYPE_IPv4) + tmpHxs[hdrNum] |= (i+1) << PRS_HDR_IPV4_1_BC_SHIFT; + break; + case(IPV4_MULTICAST_1): + GET_PRS_HDR_NUM(hdrNum, HEADER_TYPE_IPv4) + tmpHxs[hdrNum] |= (i+1) << PRS_HDR_IPV4_1_MC_SHIFT; + break; + case(IPV4_UNICAST_2): + GET_PRS_HDR_NUM(hdrNum, HEADER_TYPE_IPv4) + tmpHxs[hdrNum] |= (i+1) << PRS_HDR_IPV4_2_UC_SHIFT; + break; + case(IPV4_MULTICAST_BROADCAST_2): + GET_PRS_HDR_NUM(hdrNum, HEADER_TYPE_IPv4) + tmpHxs[hdrNum] |= (i+1) << PRS_HDR_IPV4_2_MC_BC_SHIFT; + break; + case(IPV6_MULTICAST_1): + GET_PRS_HDR_NUM(hdrNum, HEADER_TYPE_IPv6) + tmpHxs[hdrNum] |= (i+1) << PRS_HDR_IPV6_1_MC_SHIFT; + break; + case(IPV6_UNICAST_2): + GET_PRS_HDR_NUM(hdrNum, HEADER_TYPE_IPv6) + tmpHxs[hdrNum] |= (i+1) << PRS_HDR_IPV6_2_UC_SHIFT; + break; + case(IPV6_MULTICAST_2): + GET_PRS_HDR_NUM(hdrNum, HEADER_TYPE_IPv6) + tmpHxs[hdrNum] |= (i+1) << PRS_HDR_IPV6_2_MC_SHIFT; + break; + } + + if (FmPcdNetEnvIsHdrExist(p_FmPort->h_FmPcd, p_FmPort->netEnvId, HEADER_TYPE_UDP_ENCAP_ESP)) + { + p_PcdParams->p_PrsParams->additionalParams + [p_PcdParams->p_PrsParams->numOfHdrsWithAdditionalParams].hdr = HEADER_TYPE_UDP; + p_PcdParams->p_PrsParams->additionalParams + [p_PcdParams->p_PrsParams->numOfHdrsWithAdditionalParams].swPrsEnable = TRUE; + p_PcdParams->p_PrsParams->numOfHdrsWithAdditionalParams++; + } + + /* set MPLS default next header - HW reset workaround */ + GET_PRS_HDR_NUM(hdrNum, HEADER_TYPE_MPLS) + tmpHxs[hdrNum] |= PRS_HDR_MPLS_LBL_INTER_EN; + GET_PRS_HDR_NUM(L3HdrNum, HEADER_TYPE_USER_DEFINED_L3); + tmpHxs[hdrNum] |= (uint32_t)L3HdrNum << PRS_HDR_MPLS_NEXT_HDR_SHIFT; + + /* for GRE, disable errors */ + GET_PRS_HDR_NUM(greHdrNum, HEADER_TYPE_GRE); + tmpHxs[greHdrNum] |= PRS_HDR_ERROR_DIS; + + /* config additional params for specific headers */ + for(i=0 ; ip_PrsParams->numOfHdrsWithAdditionalParams ; i++) + { + GET_PRS_HDR_NUM(hdrNum, p_PcdParams->p_PrsParams->additionalParams[i].hdr); + if(hdrNum== ILLEGAL_HDR_NUM) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, NO_MSG); + if(hdrNum==NO_HDR_NUM) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Private headers may not use additional parameters")); + + err = AdditionalPrsParams(p_FmPort, &p_PcdParams->p_PrsParams->additionalParams[i], &tmpReg); + if(err) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, NO_MSG); + + tmpHxs[hdrNum] |= tmpReg; + } +#ifdef FM_PRS_L4_SHELL_ERRATA_FMANb + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + { + /* link to sw parser code for L4 shells - only if no other code is applied. */ + GET_PRS_HDR_NUM(hdrNum, HEADER_TYPE_SCTP) + if(!(tmpHxs[hdrNum] & PRS_HDR_SW_PRS_EN)) + tmpHxs[hdrNum] |= (PRS_HDR_SW_PRS_EN | SCTP_SW_PATCH_START); + GET_PRS_HDR_NUM(hdrNum, HEADER_TYPE_DCCP) + if(!(tmpHxs[hdrNum] & PRS_HDR_SW_PRS_EN)) + tmpHxs[hdrNum] |= (PRS_HDR_SW_PRS_EN | DCCP_SW_PATCH_START); + GET_PRS_HDR_NUM(hdrNum, HEADER_TYPE_IPSEC_AH) + if(!(tmpHxs[hdrNum] & PRS_HDR_SW_PRS_EN)) + tmpHxs[hdrNum] |= (PRS_HDR_SW_PRS_EN | IPSEC_SW_PATCH_START); + } + } +#endif /* FM_PRS_L4_SHELL_ERRATA_FMANb */ + + for(i=0 ; ip_FmPortPrsRegs->hdrs[i].lcv, FmPcdGetLcv(p_FmPort->h_FmPcd, p_FmPort->netEnvId, (uint8_t)i)); + /* set HXS register according to default+Additional params+protocol options */ + WRITE_UINT32(p_FmPort->p_FmPortPrsRegs->hdrs[i].softSeqAttach, tmpHxs[i]); + } + + /* set tpid. */ + tmpReg = PRS_TPID_DFLT; + if(p_PcdParams->p_PrsParams->setVlanTpid1) + { + tmpReg &= PRS_TPID2_MASK; + tmpReg |= (uint32_t)p_PcdParams->p_PrsParams->vlanTpid1 << PRS_PCTPID_SHIFT; + } + if(p_PcdParams->p_PrsParams->setVlanTpid2) + { + tmpReg &= PRS_TPID1_MASK; + tmpReg |= (uint32_t)p_PcdParams->p_PrsParams->vlanTpid2; + } + WRITE_UINT32(p_FmPort->p_FmPortPrsRegs->pctpid, tmpReg); + + /* enable parser */ + WRITE_UINT32(p_FmPort->p_FmPortPrsRegs->pcac, 0); + + if(p_PcdParams->p_PrsParams->prsResultPrivateInfo) + p_FmPort->privateInfo = p_PcdParams->p_PrsParams->prsResultPrivateInfo; + + } /* end parser */ + else + p_FmPort->privateInfo = 0; + + WRITE_UINT32(*p_BmiPrsStartOffset, GET_UINT32(*p_BmiPrsStartOffset) + p_FmPort->internalBufferOffset); + + /* set initial parser result - used for all engines */ + for (i=0;iprivateInfo << BMI_PR_PORTID_SHIFT) + | BMI_PRS_RESULT_HIGH)); + else + if (i< FM_PORT_PRS_RESULT_NUM_OF_WORDS/2) + WRITE_UINT32(*(p_BmiInitPrsResult+i), BMI_PRS_RESULT_HIGH); + else + WRITE_UINT32(*(p_BmiInitPrsResult+i), BMI_PRS_RESULT_LOW); + } + + return E_OK; +} + +static t_Error DeletePcd(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + t_Error err = E_OK; + volatile uint32_t *p_BmiNia=NULL; + + SANITY_CHECK_RETURN_ERROR(h_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + + if (p_FmPort->imEn) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for non-independant mode ports only")); + + if ((p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && + (p_FmPort->portType != e_FM_PORT_TYPE_RX) && + (p_FmPort->portType != e_FM_PORT_TYPE_OH_OFFLINE_PARSING)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Rx and offline parsing ports only")); + + if(!p_FmPort->pcdEngines) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("called for non PCD port")); + + /* get PCD registers pointers */ + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + p_BmiNia = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rfne; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + p_BmiNia = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_ofne; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid port type")); + } + + if((GET_UINT32(*p_BmiNia) & (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME)) != (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("port has to be detached previousely")); + + /* "cut" PCD out of the port's flow - go to BMI */ + /* WRITE_UINT32(*p_BmiNia, (p_FmPort->savedBmiNia & BMI_RFNE_FDCS_MASK) | (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME)); */ + + if(p_FmPort->pcdEngines | FM_PCD_PRS) + { + /* stop parser */ + WRITE_UINT32(p_FmPort->p_FmPortPrsRegs->pcac, PRS_CAC_STOP); + /* wait for parser to be in idle state */ + while(GET_UINT32(p_FmPort->p_FmPortPrsRegs->pcac) & PRS_CAC_ACTIVE) ; + } + + if(p_FmPort->pcdEngines & FM_PCD_KG) + { + err = FmPcdKgDeleteOrUnbindPortToClsPlanGrp(p_FmPort->h_FmPcd, p_FmPort->hardwarePortId, p_FmPort->clsPlanGrpId); + if(err) + RETURN_ERROR(MINOR, err, NO_MSG); + p_FmPort->useClsPlan = FALSE; + } + + if(p_FmPort->pcdEngines & FM_PCD_CC) + { + /* unbind - we need to get the treeId too */ + err = FmPcdCcUnbindTree(p_FmPort->h_FmPcd, p_FmPort->ccTreeId); + if(err) + RETURN_ERROR(MINOR, err, NO_MSG); + } + + p_FmPort->pcdEngines = 0; + + return E_OK; +} + + +/********************************************/ +/* Inter-module API */ +/********************************************/ +void FmPortSetMacsecLcv(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + volatile uint32_t *p_BmiCfgReg = NULL; + uint32_t macsecEn = BMI_PORT_CFG_EN_MACSEC; + uint32_t lcv, walking1Mask = 0x80000000; + uint8_t cnt = 0; + + SANITY_CHECK_RETURN(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + + if((p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && (p_FmPort->portType != e_FM_PORT_TYPE_RX)) + { + REPORT_ERROR(MAJOR, E_INVALID_OPERATION, ("The routine is relevant for Rx ports only")); + return; + } + + p_BmiCfgReg = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rcfg; + /* get LCV for MACSEC */ + if ((p_FmPort->h_FmPcd) && ((lcv = FmPcdGetMacsecLcv(p_FmPort->h_FmPcd, p_FmPort->netEnvId))!= 0)) + { + while(!(lcv & walking1Mask)) + { + cnt++; + walking1Mask >>= 1; + } + + macsecEn |= (uint32_t)cnt << BMI_PORT_CFG_MS_SEL_SHIFT; + } + + WRITE_UINT32(*p_BmiCfgReg, GET_UINT32(*p_BmiCfgReg) | macsecEn); +} + +void FmPortSetMacsecCmd(t_Handle h_FmPort, uint8_t dfltSci) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + volatile uint32_t *p_BmiCfgReg = NULL; + uint32_t tmpReg; + + SANITY_CHECK_RETURN(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN(p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + + if ((p_FmPort->portType != e_FM_PORT_TYPE_TX_10G) && (p_FmPort->portType != e_FM_PORT_TYPE_TX)) + { + REPORT_ERROR(MAJOR, E_INVALID_OPERATION, ("The routine is relevant for Tx ports only")); + return; + } + + p_BmiCfgReg = &p_FmPort->p_FmPortBmiRegs->txPortBmiRegs.fmbm_tfca; + tmpReg = GET_UINT32(*p_BmiCfgReg) & ~BMI_CMD_ATTR_MACCMD_MASK; + tmpReg |= BMI_CMD_ATTR_MACCMD_SECURED; + tmpReg |= (((uint32_t)dfltSci << BMI_CMD_ATTR_MACCMD_SC_SHIFT) & BMI_CMD_ATTR_MACCMD_SC_MASK); + + WRITE_UINT32(*p_BmiCfgReg, tmpReg); +} + +uint8_t FmPortGetNetEnvId(t_Handle h_FmPort) +{ + return ((t_FmPort*)h_FmPort)->netEnvId; +} + +uint8_t FmPortGetHardwarePortId(t_Handle h_FmPort) +{ + return ((t_FmPort*)h_FmPort)->hardwarePortId; +} + +uint32_t FmPortGetPcdEngines(t_Handle h_FmPort) +{ + return ((t_FmPort*)h_FmPort)->pcdEngines; +} + +t_Error FmPortAttachPCD(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + volatile uint32_t *p_BmiNia=NULL; + +/*TODO - to take care about the chnges that were made in the port because of the previously assigned tree. +pndn, pnen ... maybe were changed because of the Tree requirement*/ + + /* get PCD registers pointers */ + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + p_BmiNia = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rfne; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + p_BmiNia = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_ofne; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Rx and offline parsing ports only")); + } + + if(p_FmPort->requiredAction & UPDATE_FMFP_PRC_WITH_ONE_RISC_ONLY) + if(FmSetNumOfRiscsPerPort(p_FmPort->h_Fm, p_FmPort->hardwarePortId, 1)!= E_OK) + RETURN_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); + + /* check that current NIA is BMI to BMI */ + if((GET_UINT32(*p_BmiNia) & ~BMI_RFNE_FDCS_MASK) != (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("may be called only for ports in BMI-to-BMI state.")); + + WRITE_UINT32(*p_BmiNia, p_FmPort->savedBmiNia); + + if(p_FmPort->requiredAction & UPDATE_NIA_PNEN) + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnen, p_FmPort->savedQmiPnen); + + if(p_FmPort->requiredAction & UPDATE_NIA_PNDN) + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs.fmqm_pndn, p_FmPort->savedNonRxQmiRegsPndn); + + + return E_OK; +} + +t_Error FmPortGetSetCcParams(t_Handle h_FmPort, t_FmPortGetSetCcParams *p_CcParams) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + int tmpInt; + volatile uint32_t *p_BmiPrsStartOffset = NULL; + + /* this function called from Cc for pass and receive parameters port params between CC and PORT*/ + + if((p_CcParams->getCcParams.type & OFFSET_OF_PR) && (p_FmPort->bufferOffsets.prsResultOffset != ILLEGAL_BASE)) + { + p_CcParams->getCcParams.prOffset = (uint8_t)p_FmPort->bufferOffsets.prsResultOffset; + p_CcParams->getCcParams.type &= ~OFFSET_OF_PR; + } + if(p_CcParams->getCcParams.type & HW_PORT_ID) + { + p_CcParams->getCcParams.hardwarePortId = (uint8_t)p_FmPort->hardwarePortId; + p_CcParams->getCcParams.type &= ~HW_PORT_ID; + } + if((p_CcParams->getCcParams.type & OFFSET_OF_DATA) && (p_FmPort->bufferOffsets.dataOffset != ILLEGAL_BASE)) + { + p_CcParams->getCcParams.dataOffset = (uint16_t)p_FmPort->bufferOffsets.dataOffset; + p_CcParams->getCcParams.type &= ~OFFSET_OF_DATA; + } + if(p_CcParams->getCcParams.type & NUM_OF_TASKS) + { + p_CcParams->getCcParams.numOfTasks = p_FmPort->numOfTasks; + p_CcParams->getCcParams.type &= ~NUM_OF_TASKS; + } + if(p_CcParams->getCcParams.type & BUFFER_POOL_ID_FOR_MANIP) + { + if(p_CcParams->getCcParams.poolIndex < p_FmPort->extBufPools.numOfPoolsUsed) + { + p_CcParams->getCcParams.poolIdForManip = p_FmPort->extBufPools.extBufPool[p_CcParams->getCcParams.poolIndex].id; + p_CcParams->getCcParams.type &= ~BUFFER_POOL_ID_FOR_MANIP; + } + } + + if((p_CcParams->setCcParams.type & UPDATE_FMFP_PRC_WITH_ONE_RISC_ONLY) && !(p_FmPort->requiredAction & UPDATE_FMFP_PRC_WITH_ONE_RISC_ONLY)) + { + p_FmPort->requiredAction |= UPDATE_FMFP_PRC_WITH_ONE_RISC_ONLY; + } + + if((p_CcParams->setCcParams.type & UPDATE_NIA_PNEN) && !(p_FmPort->requiredAction & UPDATE_NIA_PNEN)) + { + p_FmPort->savedQmiPnen = p_CcParams->setCcParams.nia; + p_FmPort->requiredAction |= UPDATE_NIA_PNEN; + } + else if (p_CcParams->setCcParams.type & UPDATE_NIA_PNEN) + { + if(p_FmPort->savedQmiPnen != p_CcParams->setCcParams.nia) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("pnen was defined previously different")); + } + + if((p_CcParams->setCcParams.type & UPDATE_NIA_PNDN) && !(p_FmPort->requiredAction & UPDATE_NIA_PNDN)) + { + p_FmPort->savedNonRxQmiRegsPndn = p_CcParams->setCcParams.nia; + p_FmPort->requiredAction |= UPDATE_NIA_PNDN; + } + else if(p_CcParams->setCcParams.type & UPDATE_NIA_PNDN) + { + if(p_FmPort->savedNonRxQmiRegsPndn != p_CcParams->setCcParams.nia) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("pndn was defined previously different")); + } + + + if((p_CcParams->setCcParams.type & UPDATE_PSO) && !(p_FmPort->requiredAction & UPDATE_PSO)) + { + /* get PCD registers pointers */ + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + p_BmiPrsStartOffset = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rpso; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + p_BmiPrsStartOffset = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_opso; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid port type")); + } + /* set start parsing offset */ + tmpInt = (int)GET_UINT32(*p_BmiPrsStartOffset)+ p_CcParams->setCcParams.psoSize; + if(tmpInt>0) + WRITE_UINT32(*p_BmiPrsStartOffset, (uint32_t)tmpInt); + + p_FmPort->requiredAction |= UPDATE_PSO; + p_FmPort->savedPrsStartOffset = p_CcParams->setCcParams.psoSize; + + } + else if (p_CcParams->setCcParams.type & UPDATE_PSO) + { + if(p_FmPort->savedPrsStartOffset != p_CcParams->setCcParams.psoSize) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("parser start offset was defoned previousley different")); + } + return E_OK; +} +/********************************** End of inter-module routines ********************************/ + +/****************************************/ +/* API Init unit functions */ +/****************************************/ +t_Handle FM_PORT_Config(t_FmPortParams *p_FmPortParams) +{ + t_FmPort *p_FmPort; + uintptr_t baseAddr = p_FmPortParams->baseAddr; + + /* Allocate FM structure */ + p_FmPort = (t_FmPort *) XX_Malloc(sizeof(t_FmPort)); + if (!p_FmPort) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FM Port driver structure")); + return NULL; + } + memset(p_FmPort, 0, sizeof(t_FmPort)); + + /* Allocate the FM driver's parameters structure */ + p_FmPort->p_FmPortDriverParam = (t_FmPortDriverParam *)XX_Malloc(sizeof(t_FmPortDriverParam)); + if (!p_FmPort->p_FmPortDriverParam) + { + XX_Free(p_FmPort); + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FM Port driver parameters")); + return NULL; + } + memset(p_FmPort->p_FmPortDriverParam, 0, sizeof(t_FmPortDriverParam)); + + /* Initialize FM port parameters which will be kept by the driver */ + p_FmPort->portType = p_FmPortParams->portType; + p_FmPort->portId = p_FmPortParams->portId; + p_FmPort->pcdEngines = FM_PCD_NONE; + p_FmPort->f_Exception = p_FmPortParams->f_Exception; + p_FmPort->h_App = p_FmPortParams->h_App; + p_FmPort->h_Fm = p_FmPortParams->h_Fm; + + /* calculate global portId number */ + SW_PORT_ID_TO_HW_PORT_ID(p_FmPort->hardwarePortId, p_FmPort->portType, p_FmPortParams->portId); + + /* Initialize FM port parameters for initialization phase only */ + p_FmPort->p_FmPortDriverParam->baseAddr = baseAddr; + p_FmPort->p_FmPortDriverParam->bufferPrefixContent.privDataSize = DEFAULT_PORT_bufferPrefixContent_privDataSize; + p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passPrsResult= DEFAULT_PORT_bufferPrefixContent_passPrsResult; + p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passTimeStamp= DEFAULT_PORT_bufferPrefixContent_passTimeStamp; + p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passAllOtherPCDInfo + = DEFAULT_PORT_bufferPrefixContent_passTimeStamp; +#ifdef DEBUG + p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passDebugInfo= DEFAULT_PORT_bufferPrefixContent_debugInfo; +#endif /* DEBUG */ + p_FmPort->p_FmPortDriverParam->bufferPrefixContent.dataAlign = DEFAULT_PORT_bufferPrefixContent_dataAlign; + p_FmPort->p_FmPortDriverParam->dmaSwapData = DEFAULT_PORT_dmaSwapData; + p_FmPort->p_FmPortDriverParam->dmaIntContextCacheAttr = DEFAULT_PORT_dmaIntContextCacheAttr; + p_FmPort->p_FmPortDriverParam->dmaHeaderCacheAttr = DEFAULT_PORT_dmaHeaderCacheAttr; + p_FmPort->p_FmPortDriverParam->dmaScatterGatherCacheAttr = DEFAULT_PORT_dmaScatterGatherCacheAttr; + p_FmPort->p_FmPortDriverParam->dmaWriteOptimize = DEFAULT_PORT_dmaWriteOptimize; + p_FmPort->p_FmPortDriverParam->liodnBase = p_FmPortParams->liodnBase; + + /* resource distribution. */ + p_FmPort->fifoBufs.num = DEFAULT_PORT_sizeOfFifo(p_FmPort->portType); + p_FmPort->fifoBufs.extra = DEFAULT_PORT_extraSizeOfFifo(p_FmPort->portType); + p_FmPort->openDmas.num = DEFAULT_PORT_numOfOpenDmas(p_FmPort->portType); + p_FmPort->openDmas.extra = DEFAULT_PORT_extraNumOfOpenDmas(p_FmPort->portType); + p_FmPort->tasks.num = DEFAULT_PORT_numOfTasks(p_FmPort->portType); + p_FmPort->tasks.extra = DEFAULT_PORT_extraNumOfTasks(p_FmPort->portType); + p_FmPort->numOfTasks = (uint8_t)p_FmPort->tasks.num; +#ifdef FM_PORT_EXCESSIVE_BUDGET_ERRATA_FMANx16 + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + { + p_FmPort->fifoBufs.extra = 0; + p_FmPort->openDmas.extra = 0; + p_FmPort->tasks.extra = 0; + } + } +#endif /* FM_PORT_EXCESSIVE_BUDGET_ERRATA_FMANx16 */ + + p_FmPort->p_FmPortDriverParam->color = DEFAULT_PORT_color; +#ifdef FM_OP_PORT_QMAN_REJECT_ERRATA_FMAN21 + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0) && + (p_FmPort->portType == e_FM_PORT_TYPE_OH_OFFLINE_PARSING)) + p_FmPort->p_FmPortDriverParam->color = e_FM_PORT_COLOR_OVERRIDE; + } +#endif /* FM_OP_PORT_QMAN_REJECT_ERRATA_FMAN21 */ + + if (p_FmPort->portType == e_FM_PORT_TYPE_OH_HOST_COMMAND) + p_FmPort->p_FmPortDriverParam->syncReq = DEFAULT_PORT_syncReqForHc; + else + p_FmPort->p_FmPortDriverParam->syncReq = DEFAULT_PORT_syncReq; + +#ifdef FM_PORT_SYNC_ERRATA_FMAN6 + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0) && + (p_FmPort->portType != e_FM_PORT_TYPE_OH_OFFLINE_PARSING)) + p_FmPort->p_FmPortDriverParam->syncReq = FALSE; + } +#endif /* FM_PORT_SYNC_ERRATA_FMAN6 */ + + /* Port type specific initialization: */ + if ((p_FmPort->portType != e_FM_PORT_TYPE_TX) && + (p_FmPort->portType != e_FM_PORT_TYPE_TX_10G)) + p_FmPort->p_FmPortDriverParam->frmDiscardOverride = DEFAULT_PORT_frmDiscardOverride; + + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX): + case(e_FM_PORT_TYPE_RX_10G): + /* Initialize FM port parameters for initialization phase only */ + p_FmPort->p_FmPortDriverParam->cutBytesFromEnd = DEFAULT_PORT_cutBytesFromEnd; + p_FmPort->p_FmPortDriverParam->enBufPoolDepletion = FALSE; + p_FmPort->p_FmPortDriverParam->frmDiscardOverride = DEFAULT_PORT_frmDiscardOverride; + p_FmPort->p_FmPortDriverParam->rxFifoPriElevationLevel = DEFAULT_PORT_rxFifoPriElevationLevel; + p_FmPort->p_FmPortDriverParam->rxFifoThreshold = DEFAULT_PORT_rxFifoThreshold; + p_FmPort->p_FmPortDriverParam->bufMargins.endMargins = DEFAULT_PORT_BufMargins_endMargins; + p_FmPort->p_FmPortDriverParam->errorsToDiscard = DEFAULT_PORT_errorsToDiscard; + p_FmPort->p_FmPortDriverParam->cheksumLastBytesIgnore = DEFAULT_PORT_cheksumLastBytesIgnore; + p_FmPort->p_FmPortDriverParam->forwardReuseIntContext = DEFAULT_PORT_forwardIntContextReuse; + break; + + case(e_FM_PORT_TYPE_TX): + p_FmPort->txFifoDeqPipelineDepth = DEFAULT_PORT_txFifoDeqPipelineDepth_1G; + p_FmPort->p_FmPortDriverParam->dontReleaseBuf = FALSE; + case(e_FM_PORT_TYPE_TX_10G): + if(p_FmPort->portType == e_FM_PORT_TYPE_TX_10G) + p_FmPort->txFifoDeqPipelineDepth = DEFAULT_PORT_txFifoDeqPipelineDepth_10G; + p_FmPort->p_FmPortDriverParam->cheksumLastBytesIgnore = DEFAULT_PORT_cheksumLastBytesIgnore; + p_FmPort->p_FmPortDriverParam->txFifoMinFillLevel = DEFAULT_PORT_txFifoMinFillLevel; + p_FmPort->p_FmPortDriverParam->txFifoLowComfLevel = DEFAULT_PORT_txFifoLowComfLevel; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + case(e_FM_PORT_TYPE_OH_HOST_COMMAND): + p_FmPort->p_FmPortDriverParam->deqHighPriority = DEFAULT_PORT_deqHighPriority; + p_FmPort->p_FmPortDriverParam->deqType = DEFAULT_PORT_deqType; +#ifdef FM_QMI_DEQ_OPTIONS_SUPPORT + p_FmPort->p_FmPortDriverParam->deqPrefetchOption = DEFAULT_PORT_deqPrefetchOption; +#endif /* FM_QMI_DEQ_OPTIONS_SUPPORT */ + p_FmPort->p_FmPortDriverParam->deqByteCnt = DEFAULT_PORT_deqByteCnt; + + if (p_FmPort->portType == e_FM_PORT_TYPE_OH_OFFLINE_PARSING) + p_FmPort->p_FmPortDriverParam->errorsToDiscard = DEFAULT_PORT_errorsToDiscard; + break; + + default: + XX_Free(p_FmPort->p_FmPortDriverParam); + XX_Free(p_FmPort); + REPORT_ERROR(MAJOR, E_INVALID_STATE, ("Invalid port type")); + return NULL; + } +#ifdef FM_QMI_DEQ_OPTIONS_SUPPORT + if (p_FmPort->portType == e_FM_PORT_TYPE_OH_HOST_COMMAND) + p_FmPort->p_FmPortDriverParam->deqPrefetchOption = DEFAULT_PORT_deqPrefetchOption_HC; +#endif /* FM_QMI_DEQ_OPTIONS_SUPPORT */ + + if ((p_FmPort->portType == e_FM_PORT_TYPE_OH_OFFLINE_PARSING) || + (p_FmPort->portType == e_FM_PORT_TYPE_OH_HOST_COMMAND)) + p_FmPort->txFifoDeqPipelineDepth = OH_PIPELINE_DEPTH; + + p_FmPort->imEn = p_FmPortParams->independentModeEnable; + + if (p_FmPort->imEn) + { + if ((p_FmPort->portType == e_FM_PORT_TYPE_TX) || + (p_FmPort->portType == e_FM_PORT_TYPE_TX_10G)) + p_FmPort->txFifoDeqPipelineDepth = DEFAULT_PORT_txFifoDeqPipelineDepth_IM; + FmPortConfigIM(p_FmPort, p_FmPortParams); + } + else + { + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX): + case(e_FM_PORT_TYPE_RX_10G): + /* Initialize FM port parameters for initialization phase only */ + memcpy(&p_FmPort->p_FmPortDriverParam->extBufPools, + &p_FmPortParams->specificParams.rxParams.extBufPools, + sizeof(t_FmPortExtPools)); + p_FmPort->p_FmPortDriverParam->errFqid = p_FmPortParams->specificParams.rxParams.errFqid; + p_FmPort->p_FmPortDriverParam->dfltFqid = p_FmPortParams->specificParams.rxParams.dfltFqid; + p_FmPort->p_FmPortDriverParam->liodnOffset = p_FmPortParams->specificParams.rxParams.liodnOffset; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): +#ifdef FM_OP_PARTITION_ERRATA_FMANx8 + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + p_FmPort->p_FmPortDriverParam->liodnOffset = p_FmPortParams->specificParams.nonRxParams.opLiodnOffset; + } +#endif /* FM_OP_PARTITION_ERRATA_FMANx8 */ + case(e_FM_PORT_TYPE_TX): + case(e_FM_PORT_TYPE_TX_10G): + case(e_FM_PORT_TYPE_OH_HOST_COMMAND): + p_FmPort->p_FmPortDriverParam->errFqid = p_FmPortParams->specificParams.nonRxParams.errFqid; + p_FmPort->p_FmPortDriverParam->deqSubPortal = + (uint8_t)(p_FmPortParams->specificParams.nonRxParams.qmChannel & QMI_DEQ_CFG_SUBPORTAL_MASK); + p_FmPort->p_FmPortDriverParam->dfltFqid = p_FmPortParams->specificParams.nonRxParams.dfltFqid; + break; + default: + XX_Free(p_FmPort->p_FmPortDriverParam); + XX_Free(p_FmPort); + REPORT_ERROR(MAJOR, E_INVALID_STATE, ("Invalid port type")); + return NULL; + } + } + + memset(p_FmPort->name, 0, (sizeof(char)) * MODULE_NAME_SIZE); + if(Sprint (p_FmPort->name, "FM-%d-port-%s-%d", + FmGetId(p_FmPort->h_Fm), + ((p_FmPort->portType == e_FM_PORT_TYPE_OH_OFFLINE_PARSING || + (p_FmPort->portType == e_FM_PORT_TYPE_OH_HOST_COMMAND)) ? + "OH" : (p_FmPort->portType == e_FM_PORT_TYPE_RX ? + "1g-RX" : (p_FmPort->portType == e_FM_PORT_TYPE_TX ? + "1g-TX" : (p_FmPort->portType == e_FM_PORT_TYPE_RX_10G ? + "10g-RX" : "10g-TX")))), + p_FmPort->portId) == 0) + { + XX_Free(p_FmPort->p_FmPortDriverParam); + XX_Free(p_FmPort); + REPORT_ERROR(MAJOR, E_INVALID_STATE, ("Sprint failed")); + return NULL; + } + + p_FmPort->h_Spinlock = XX_InitSpinlock(); + if (!p_FmPort->h_Spinlock) + { + XX_Free(p_FmPort->p_FmPortDriverParam); + XX_Free(p_FmPort); + REPORT_ERROR(MAJOR, E_INVALID_STATE, ("Sprint failed")); + return NULL; + } + + return p_FmPort; +} + +/**************************************************************************//** + @Function FM_PORT_Init + + @Description Initializes the FM module + + @Param[in] h_FmPort - FM module descriptor + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error FM_PORT_Init(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + t_FmPortDriverParam *p_Params; + t_Error err = E_OK; + t_FmInterModulePortInitParams fmParams; + uint32_t minFifoSizeRequired = 0; + + SANITY_CHECK_RETURN_ERROR(h_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + if ((err = BuildBufferStructure(p_FmPort)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + + CHECK_INIT_PARAMETERS(p_FmPort, CheckInitParameters); + + p_Params = p_FmPort->p_FmPortDriverParam; + + /* set memory map pointers */ + p_FmPort->p_FmPortQmiRegs = (t_FmPortQmiRegs *)UINT_TO_PTR(p_Params->baseAddr + QMI_PORT_REGS_OFFSET); + p_FmPort->p_FmPortBmiRegs = (u_FmPortBmiRegs *)UINT_TO_PTR(p_Params->baseAddr + BMI_PORT_REGS_OFFSET); + p_FmPort->p_FmPortPrsRegs = (t_FmPortPrsRegs *)UINT_TO_PTR(p_Params->baseAddr + PRS_PORT_REGS_OFFSET); + + /* For O/H ports, check fifo size and update if necessary */ + if ((p_FmPort->portType == e_FM_PORT_TYPE_OH_OFFLINE_PARSING) || (p_FmPort->portType == e_FM_PORT_TYPE_OH_HOST_COMMAND)) + { + minFifoSizeRequired = (uint32_t)((p_FmPort->txFifoDeqPipelineDepth+4)*BMI_FIFO_UNITS); + if (p_FmPort->fifoBufs.num < minFifoSizeRequired) + { + p_FmPort->fifoBufs.num = minFifoSizeRequired; + DBG(WARNING, ("FIFO size enlarged to %d due to txFifoDeqPipelineDepth size", minFifoSizeRequired)); + } + } + + /* For Rx Ports, call the external Buffer routine which also checks fifo + size and updates it if necessary */ + if(((p_FmPort->portType == e_FM_PORT_TYPE_RX) || (p_FmPort->portType == e_FM_PORT_TYPE_RX_10G)) + && !p_FmPort->imEn) + { + /* define external buffer pools and pool depletion*/ + err = SetExtBufferPools(p_FmPort); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + /************************************************************/ + /* Call FM module routine for communicating parameters */ + /************************************************************/ + memset(&fmParams, 0, sizeof(fmParams)); + fmParams.hardwarePortId = p_FmPort->hardwarePortId; + fmParams.portType = (e_FmPortType)p_FmPort->portType; + fmParams.numOfTasks = (uint8_t)p_FmPort->tasks.num; + fmParams.numOfExtraTasks = (uint8_t)p_FmPort->tasks.extra; + fmParams.numOfOpenDmas = (uint8_t)p_FmPort->openDmas.num; + fmParams.numOfExtraOpenDmas = (uint8_t)p_FmPort->openDmas.extra; + fmParams.sizeOfFifo = p_FmPort->fifoBufs.num; + fmParams.extraSizeOfFifo = p_FmPort->fifoBufs.extra; + fmParams.independentMode = p_FmPort->imEn; + fmParams.liodnOffset = p_Params->liodnOffset; + fmParams.liodnBase = p_Params->liodnBase; + + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + break; + case(e_FM_PORT_TYPE_TX_10G): + case(e_FM_PORT_TYPE_TX): + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + case(e_FM_PORT_TYPE_OH_HOST_COMMAND): + fmParams.deqPipelineDepth = p_FmPort->txFifoDeqPipelineDepth; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); + } + + err = FmGetSetPortParams(p_FmPort->h_Fm, &fmParams); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + + p_FmPort->tasks.num = fmParams.numOfTasks; + p_FmPort->tasks.extra = fmParams.numOfExtraTasks; + p_FmPort->openDmas.num = fmParams.numOfOpenDmas; + p_FmPort->openDmas.extra = fmParams.numOfExtraOpenDmas; + p_FmPort->fifoBufs.num = fmParams.sizeOfFifo; + p_FmPort->fifoBufs.extra = fmParams.extraSizeOfFifo; + + /* get params for use in init */ + p_Params->fmMuramPhysBaseAddr = + (uint64_t)((uint64_t)(fmParams.fmMuramPhysBaseAddr.low) | + ((uint64_t)(fmParams.fmMuramPhysBaseAddr.high) << 32)); + + /**********************/ + /* Init BMI Registers */ + /**********************/ + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + err = BmiRxPortInit(p_FmPort); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + break; + case(e_FM_PORT_TYPE_TX_10G): + case(e_FM_PORT_TYPE_TX): + err = BmiTxPortInit(p_FmPort); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + case(e_FM_PORT_TYPE_OH_HOST_COMMAND): + err = BmiOhPortInit(p_FmPort); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); + } + + /**********************/ + /* Init QMI Registers */ + /**********************/ + if (!p_FmPort->imEn && ((err = QmiInit(p_FmPort)) != E_OK)) + RETURN_ERROR(MAJOR, err, NO_MSG); + + if (p_FmPort->imEn && ((err = FmPortImInit(p_FmPort)) != E_OK)) + RETURN_ERROR(MAJOR, err, NO_MSG); + + FmPortDriverParamFree(p_FmPort); + + return E_OK; +} + +/**************************************************************************//** + @Function FM_PORT_Free + + @Description Frees all resources that were assigned to FM module. + + Calling this routine invalidates the descriptor. + + @Param[in] h_FmPort - FM module descriptor + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error FM_PORT_Free(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + t_FmInterModulePortFreeParams fmParams; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + + if(p_FmPort->pcdEngines) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Trying to free a port with PCD. FM_PORT_DeletePCD must be called first.")); + + if (p_FmPort->enabled) + { + if (FM_PORT_Disable(p_FmPort) != E_OK) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("FM_PORT_Disable FAILED")); + } + + if (p_FmPort->h_Spinlock) + XX_FreeSpinlock(p_FmPort->h_Spinlock); + + FmPortDriverParamFree(p_FmPort); + + if (p_FmPort->imEn) + FmPortImFree(p_FmPort); + + fmParams.hardwarePortId = p_FmPort->hardwarePortId; + fmParams.portType = (e_FmPortType)p_FmPort->portType; +#ifdef FM_QMI_DEQ_OPTIONS_SUPPORT + fmParams.deqPipelineDepth = p_FmPort->txFifoDeqPipelineDepth; +#endif /* FM_QMI_DEQ_OPTIONS_SUPPORT */ + + FmFreePortParams(p_FmPort->h_Fm, &fmParams); + + XX_Free(p_FmPort); + + return E_OK; +} + + +/*************************************************/ +/* API Advanced Init unit functions */ +/*************************************************/ + +t_Error FM_PORT_ConfigDeqHighPriority(t_Handle h_FmPort, bool highPri) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + if((p_FmPort->portType == e_FM_PORT_TYPE_RX_10G) || (p_FmPort->portType == e_FM_PORT_TYPE_RX)) + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("not available for Rx ports")); + + p_FmPort->p_FmPortDriverParam->deqHighPriority = highPri; + + return E_OK; +} + +t_Error FM_PORT_ConfigDeqType(t_Handle h_FmPort, e_FmPortDeqType deqType) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + if((p_FmPort->portType == e_FM_PORT_TYPE_RX_10G) || (p_FmPort->portType == e_FM_PORT_TYPE_RX)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("not available for Rx ports")); + + p_FmPort->p_FmPortDriverParam->deqType = deqType; + + return E_OK; +} + +#ifdef FM_QMI_DEQ_OPTIONS_SUPPORT +t_Error FM_PORT_ConfigDeqPrefetchOption(t_Handle h_FmPort, e_FmPortDeqPrefetchOption deqPrefetchOption) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + if((p_FmPort->portType == e_FM_PORT_TYPE_RX_10G) || (p_FmPort->portType == e_FM_PORT_TYPE_RX)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("not available for Rx ports")); + p_FmPort->p_FmPortDriverParam->deqPrefetchOption = deqPrefetchOption; + return E_OK; +} +#endif /* FM_QMI_DEQ_OPTIONS_SUPPORT */ + +t_Error FM_PORT_ConfigBackupPools(t_Handle h_FmPort, t_FmPortBackupBmPools *p_BackupBmPools) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; +#ifdef FM_NO_BACKUP_POOLS + t_FmRevisionInfo revInfo; +#endif /* FM_NO_BACKUP_POOLS */ + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + if((p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && (p_FmPort->portType != e_FM_PORT_TYPE_RX)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Rx ports only")); + +#ifdef FM_NO_BACKUP_POOLS + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if (revInfo.majorRev != 4) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("FM_PORT_ConfigBackupPools")); +#endif /* FM_NO_BACKUP_POOLS */ + + p_FmPort->p_FmPortDriverParam->p_BackupBmPools = (t_FmPortBackupBmPools *)XX_Malloc(sizeof(t_FmPortBackupBmPools)); + if(!p_FmPort->p_FmPortDriverParam->p_BackupBmPools) + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("p_BackupBmPools allocation failed")); + memcpy(p_FmPort->p_FmPortDriverParam->p_BackupBmPools, p_BackupBmPools, sizeof(t_FmPortBackupBmPools)); + + return E_OK; +} + +t_Error FM_PORT_ConfigDeqByteCnt(t_Handle h_FmPort, uint16_t deqByteCnt) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + if((p_FmPort->portType == e_FM_PORT_TYPE_RX_10G) || (p_FmPort->portType == e_FM_PORT_TYPE_RX)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("not available for Rx ports")); + + p_FmPort->p_FmPortDriverParam->deqByteCnt = deqByteCnt; + + return E_OK; +} + +t_Error FM_PORT_ConfigBufferPrefixContent(t_Handle h_FmPort, t_FmPortBufferPrefixContent *p_FmPortBufferPrefixContent) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + memcpy(&p_FmPort->p_FmPortDriverParam->bufferPrefixContent, p_FmPortBufferPrefixContent, sizeof(t_FmPortBufferPrefixContent)); + /* if dataAlign was not initialized by user, we return to driver's deafult */ + if (!p_FmPort->p_FmPortDriverParam->bufferPrefixContent.dataAlign) + p_FmPort->p_FmPortDriverParam->bufferPrefixContent.dataAlign = DEFAULT_PORT_bufferPrefixContent_dataAlign; + + return E_OK; +} + +t_Error FM_PORT_ConfigCheksumLastBytesIgnore(t_Handle h_FmPort, uint8_t cheksumLastBytesIgnore) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + if((p_FmPort->portType == e_FM_PORT_TYPE_OH_OFFLINE_PARSING) || (p_FmPort->portType == e_FM_PORT_TYPE_OH_HOST_COMMAND)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Rx & Tx ports only")); + + p_FmPort->p_FmPortDriverParam->cheksumLastBytesIgnore = cheksumLastBytesIgnore; + + return E_OK; +} + +t_Error FM_PORT_ConfigCutBytesFromEnd(t_Handle h_FmPort, uint8_t cutBytesFromEnd) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + if((p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && (p_FmPort->portType != e_FM_PORT_TYPE_RX)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Rx ports only")); + + p_FmPort->p_FmPortDriverParam->cutBytesFromEnd = cutBytesFromEnd; + + return E_OK; +} + +t_Error FM_PORT_ConfigPoolDepletion(t_Handle h_FmPort, t_FmPortBufPoolDepletion *p_BufPoolDepletion) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + if((p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && (p_FmPort->portType != e_FM_PORT_TYPE_RX)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Rx ports only")); + + p_FmPort->p_FmPortDriverParam->enBufPoolDepletion = TRUE; + memcpy(&p_FmPort->p_FmPortDriverParam->bufPoolDepletion, p_BufPoolDepletion, sizeof(t_FmPortBufPoolDepletion)); + + return E_OK; +} + +t_Error FM_PORT_ConfigObservedPoolDepletion(t_Handle h_FmPort, t_FmPortObservedBufPoolDepletion *p_FmPortObservedBufPoolDepletion) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + if(p_FmPort->portType != e_FM_PORT_TYPE_OH_OFFLINE_PARSING) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for OP ports only")); + + p_FmPort->p_FmPortDriverParam->enBufPoolDepletion = TRUE; + memcpy(&p_FmPort->p_FmPortDriverParam->bufPoolDepletion, &p_FmPortObservedBufPoolDepletion->poolDepletionParams, sizeof(t_FmPortBufPoolDepletion)); + memcpy(&p_FmPort->p_FmPortDriverParam->extBufPools, &p_FmPortObservedBufPoolDepletion->poolsParams, sizeof(t_FmPortExtPools)); + + return E_OK; +} + +t_Error FM_PORT_ConfigExtBufPools(t_Handle h_FmPort, t_FmPortExtPools *p_FmPortExtPools) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + if(p_FmPort->portType != e_FM_PORT_TYPE_OH_OFFLINE_PARSING) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for OP ports only")); + + memcpy(&p_FmPort->p_FmPortDriverParam->extBufPools, p_FmPortExtPools, sizeof(t_FmPortExtPools)); + + return E_OK; +} + +t_Error FM_PORT_ConfigRxFifoThreshold(t_Handle h_FmPort, uint32_t fifoThreshold) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + if((p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && (p_FmPort->portType != e_FM_PORT_TYPE_RX)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Rx ports only")); + + p_FmPort->p_FmPortDriverParam->rxFifoThreshold = fifoThreshold; + + return E_OK; +} + +t_Error FM_PORT_ConfigRxFifoPriElevationLevel(t_Handle h_FmPort, uint32_t priElevationLevel) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + if((p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && (p_FmPort->portType != e_FM_PORT_TYPE_RX)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Rx ports only")); + + p_FmPort->p_FmPortDriverParam->rxFifoPriElevationLevel = priElevationLevel; + + return E_OK; +} + +t_Error FM_PORT_ConfigTxFifoMinFillLevel(t_Handle h_FmPort, uint32_t minFillLevel) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + if((p_FmPort->portType != e_FM_PORT_TYPE_TX_10G) && (p_FmPort->portType != e_FM_PORT_TYPE_TX)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Tx ports only")); + + p_FmPort->p_FmPortDriverParam->txFifoMinFillLevel = minFillLevel; + + return E_OK; +} + +t_Error FM_PORT_ConfigTxFifoDeqPipelineDepth(t_Handle h_FmPort, uint8_t deqPipelineDepth) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + if ((p_FmPort->portType != e_FM_PORT_TYPE_TX_10G) && + (p_FmPort->portType != e_FM_PORT_TYPE_TX)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Tx ports only")); + if (p_FmPort->imEn) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("Not available for IM ports!")); + + p_FmPort->txFifoDeqPipelineDepth = deqPipelineDepth; + + return E_OK; +} + +t_Error FM_PORT_ConfigTxFifoLowComfLevel(t_Handle h_FmPort, uint32_t fifoLowComfLevel) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + if((p_FmPort->portType != e_FM_PORT_TYPE_TX_10G) && (p_FmPort->portType != e_FM_PORT_TYPE_TX)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Tx ports only")); + + p_FmPort->p_FmPortDriverParam->txFifoLowComfLevel = fifoLowComfLevel; + + return E_OK; +} + +t_Error FM_PORT_ConfigDontReleaseTxBufToBM(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + if((p_FmPort->portType != e_FM_PORT_TYPE_TX_10G) && (p_FmPort->portType != e_FM_PORT_TYPE_TX)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Tx ports only")); + + p_FmPort->p_FmPortDriverParam->dontReleaseBuf = TRUE; + + return E_OK; +} + +t_Error FM_PORT_ConfigDfltColor(t_Handle h_FmPort, e_FmPortColor color) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); +#ifdef FM_OP_PORT_QMAN_REJECT_ERRATA_FMAN21 + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("FM_PORT_ConfigDfltColor!")); + } +#endif /* FM_OP_PORT_QMAN_REJECT_ERRATA_FMAN21 */ + p_FmPort->p_FmPortDriverParam->color = color; + + return E_OK; +} + +t_Error FM_PORT_ConfigSyncReq(t_Handle h_FmPort, bool syncReq) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); +#ifdef FM_PORT_SYNC_ERRATA_FMAN6 + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("port-sync!")); + } +#endif /* FM_PORT_SYNC_ERRATA_FMAN6 */ + + p_FmPort->p_FmPortDriverParam->syncReq = syncReq; + + return E_OK; +} + + +t_Error FM_PORT_ConfigFrmDiscardOverride(t_Handle h_FmPort, bool override) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + if((p_FmPort->portType == e_FM_PORT_TYPE_TX_10G) && (p_FmPort->portType == e_FM_PORT_TYPE_TX)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("not available for Tx ports")); + + p_FmPort->p_FmPortDriverParam->frmDiscardOverride = override; + + return E_OK; +} + +t_Error FM_PORT_ConfigErrorsToDiscard(t_Handle h_FmPort, fmPortFrameErrSelect_t errs) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + if((p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && (p_FmPort->portType != e_FM_PORT_TYPE_RX) && + (p_FmPort->portType != e_FM_PORT_TYPE_OH_OFFLINE_PARSING)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Rx and offline parsing ports only")); + + p_FmPort->p_FmPortDriverParam->errorsToDiscard = errs; + + return E_OK; +} + +t_Error FM_PORT_ConfigDmaSwapData(t_Handle h_FmPort, e_FmPortDmaSwap swapData) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + p_FmPort->p_FmPortDriverParam->dmaSwapData = swapData; + + return E_OK; +} + +t_Error FM_PORT_ConfigDmaIcCacheAttr(t_Handle h_FmPort, e_FmPortDmaCache intContextCacheAttr) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + p_FmPort->p_FmPortDriverParam->dmaIntContextCacheAttr = intContextCacheAttr; + + return E_OK; +} + +t_Error FM_PORT_ConfigDmaHdrAttr(t_Handle h_FmPort, e_FmPortDmaCache headerCacheAttr) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + p_FmPort->p_FmPortDriverParam->dmaHeaderCacheAttr = headerCacheAttr; + + return E_OK; +} + +t_Error FM_PORT_ConfigDmaScatterGatherAttr(t_Handle h_FmPort, e_FmPortDmaCache scatterGatherCacheAttr) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + p_FmPort->p_FmPortDriverParam->dmaScatterGatherCacheAttr = scatterGatherCacheAttr; + + return E_OK; +} + +t_Error FM_PORT_ConfigDmaWriteOptimize(t_Handle h_FmPort, bool optimize) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + if((p_FmPort->portType == e_FM_PORT_TYPE_TX_10G) || (p_FmPort->portType == e_FM_PORT_TYPE_TX)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("Not available for Tx ports")); + + p_FmPort->p_FmPortDriverParam->dmaWriteOptimize = optimize; + + return E_OK; +} + +t_Error FM_PORT_ConfigForwardReuseIntContext(t_Handle h_FmPort, bool forwardReuse) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + if((p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && (p_FmPort->portType != e_FM_PORT_TYPE_RX)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Rx ports only")); + + p_FmPort->p_FmPortDriverParam->forwardReuseIntContext = forwardReuse; + + return E_OK; +} + + +/****************************************************/ +/* PCD Advaced config API */ +/****************************************************/ + +/****************************************************/ +/* API Run-time Control unit functions */ +/****************************************************/ + +t_Error FM_PORT_SetNumOfOpenDmas(t_Handle h_FmPort, t_FmPortRsrc *p_NumOfOpenDmas) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + t_Error err; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + +#ifdef FM_PORT_EXCESSIVE_BUDGET_ERRATA_FMANx16 + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0) && + (p_NumOfOpenDmas->extra)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("excessive resources")); + } +#endif /* FM_PORT_EXCESSIVE_BUDGET_ERRATA_FMANx16 */ + + if((!p_NumOfOpenDmas->num) || (p_NumOfOpenDmas->num > MAX_NUM_OF_DMAS)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("openDmas-num can't be larger than %d", MAX_NUM_OF_DMAS)); + if(p_NumOfOpenDmas->extra > MAX_NUM_OF_EXTRA_DMAS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("openDmas-extra can't be larger than %d", MAX_NUM_OF_EXTRA_DMAS)); + err = FmSetNumOfOpenDmas(p_FmPort->h_Fm, p_FmPort->hardwarePortId, (uint8_t)p_NumOfOpenDmas->num, (uint8_t)p_NumOfOpenDmas->extra, FALSE); + if(err) + RETURN_ERROR(MINOR, err, NO_MSG); + + memcpy(&p_FmPort->openDmas, p_NumOfOpenDmas, sizeof(t_FmPortRsrc)); + + return E_OK; +} + +t_Error FM_PORT_SetNumOfTasks(t_Handle h_FmPort, t_FmPortRsrc *p_NumOfTasks) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + t_Error err; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + if (p_FmPort->portType == e_FM_PORT_TYPE_OH_HOST_COMMAND) + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("not available for host command port where number is always 1")); + +#ifdef FM_PORT_EXCESSIVE_BUDGET_ERRATA_FMANx16 + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0) && + (p_NumOfTasks->extra)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("excessive resources")); + } +#endif /* FM_PORT_EXCESSIVE_BUDGET_ERRATA_FMANx16 */ + + if((!p_NumOfTasks->num) || (p_NumOfTasks->num > MAX_NUM_OF_TASKS)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("NumOfTasks-num can't be larger than %d", MAX_NUM_OF_TASKS)); + if(p_NumOfTasks->extra > MAX_NUM_OF_EXTRA_TASKS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("NumOfTasks-extra can't be larger than %d", MAX_NUM_OF_EXTRA_TASKS)); + + err = FmSetNumOfTasks(p_FmPort->h_Fm, p_FmPort->hardwarePortId, (uint8_t)p_NumOfTasks->num, (uint8_t)p_NumOfTasks->extra, FALSE); + if(err) + RETURN_ERROR(MINOR, err, NO_MSG); + + /* update driver's struct */ + memcpy(&p_FmPort->tasks, p_NumOfTasks, sizeof(t_FmPortRsrc)); + return E_OK; +} + +t_Error FM_PORT_SetSizeOfFifo(t_Handle h_FmPort, t_FmPortRsrc *p_SizeOfFifo) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + t_Error err; + t_FmInterModulePortRxPoolsParams rxPoolsParams; + uint32_t minFifoSizeRequired; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + +#ifdef FM_PORT_EXCESSIVE_BUDGET_ERRATA_FMANx16 + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0) && + (p_SizeOfFifo->extra)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("excessive resources")); + } +#endif /* FM_PORT_EXCESSIVE_BUDGET_ERRATA_FMANx16 */ + if(!p_SizeOfFifo->num || (p_SizeOfFifo->num > BMI_MAX_FIFO_SIZE)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("SizeOfFifo-num has to be in the range of 256 - %d", BMI_MAX_FIFO_SIZE)); + if(p_SizeOfFifo->num % BMI_FIFO_UNITS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("SizeOfFifo-num has to be divisible by %d", BMI_FIFO_UNITS)); + if((p_FmPort->portType == e_FM_PORT_TYPE_RX) || (p_FmPort->portType == e_FM_PORT_TYPE_RX_10G)) + { + /* extra FIFO size (allowed only to Rx ports) */ + if(p_SizeOfFifo->extra % BMI_FIFO_UNITS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("SizeOfFifo-extra has to be divisible by %d", BMI_FIFO_UNITS)); + } + else + if(p_SizeOfFifo->extra) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, (" No SizeOfFifo-extra for non Rx ports")); + + /* For O/H ports, check fifo size and update if necessary */ + if((p_FmPort->portType == e_FM_PORT_TYPE_OH_OFFLINE_PARSING) || (p_FmPort->portType == e_FM_PORT_TYPE_OH_HOST_COMMAND)) + { + minFifoSizeRequired = (uint32_t)((p_FmPort->txFifoDeqPipelineDepth+4)*BMI_FIFO_UNITS); + if (p_FmPort->fifoBufs.num < minFifoSizeRequired) + { + p_FmPort->fifoBufs.num = minFifoSizeRequired; + DBG(INFO, ("FIFO size enlarged to %d", minFifoSizeRequired)); + } + } + memcpy(&rxPoolsParams, &p_FmPort->rxPoolsParams, sizeof(rxPoolsParams)); + err = FmSetSizeOfFifo(p_FmPort->h_Fm, + p_FmPort->hardwarePortId, + p_FmPort->portType, + p_FmPort->imEn, + &p_SizeOfFifo->num, + p_SizeOfFifo->extra, + p_FmPort->txFifoDeqPipelineDepth, + &rxPoolsParams, + FALSE); + if(err) + RETURN_ERROR(MINOR, err, NO_MSG); + + /* update driver's structure AFTER the FM routine, as it may change by the FM. */ + memcpy(&p_FmPort->fifoBufs, p_SizeOfFifo, sizeof(t_FmPortRsrc)); + + return E_OK; +} + +uint32_t FM_PORT_GetBufferDataOffset(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_VALUE(p_FmPort, E_INVALID_HANDLE, 0); + SANITY_CHECK_RETURN_VALUE(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE, 0); + + return p_FmPort->bufferOffsets.dataOffset; +} + +uint8_t * FM_PORT_GetBufferICInfo(t_Handle h_FmPort, char *p_Data) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_VALUE(p_FmPort, E_INVALID_HANDLE, 0); + SANITY_CHECK_RETURN_VALUE(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE, 0); + + if(p_FmPort->bufferOffsets.pcdInfoOffset == ILLEGAL_BASE) + return NULL; + + return (uint8_t *)PTR_MOVE(p_Data, p_FmPort->bufferOffsets.pcdInfoOffset); +} + +#ifdef DEBUG +uint8_t * FM_PORT_GetBufferDebugInfo(t_Handle h_FmPort, char *p_Data) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_VALUE(p_FmPort, E_INVALID_HANDLE, 0); + SANITY_CHECK_RETURN_VALUE(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE, 0); + + if(p_FmPort->bufferOffsets.debugOffset == ILLEGAL_BASE) + return NULL; + + return (uint8_t *)PTR_MOVE(p_Data, p_FmPort->bufferOffsets.debugOffset); +} +#endif /* DEBUG */ + +t_FmPrsResult * FM_PORT_GetBufferPrsResult(t_Handle h_FmPort, char *p_Data) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_VALUE(p_FmPort, E_INVALID_HANDLE, NULL); + SANITY_CHECK_RETURN_VALUE(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE, NULL); + + if(p_FmPort->bufferOffsets.prsResultOffset == ILLEGAL_BASE) + return NULL; + + return (t_FmPrsResult *)PTR_MOVE(p_Data, p_FmPort->bufferOffsets.prsResultOffset); +} + +uint64_t * FM_PORT_GetBufferTimeStamp(t_Handle h_FmPort, char *p_Data) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_VALUE(p_FmPort, E_INVALID_HANDLE, NULL); + SANITY_CHECK_RETURN_VALUE(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE, NULL); + + if(p_FmPort->bufferOffsets.timeStampOffset == ILLEGAL_BASE) + return NULL; + + return (uint64_t *)PTR_MOVE(p_Data, p_FmPort->bufferOffsets.timeStampOffset); +} + +uint8_t * FM_PORT_GetBufferHashResult(t_Handle h_FmPort, char *p_Data) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_VALUE(p_FmPort, E_INVALID_HANDLE, 0); + SANITY_CHECK_RETURN_VALUE(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE, 0); + + if(p_FmPort->bufferOffsets.hashResultOffset == ILLEGAL_BASE) + return NULL; + + return (uint8_t *)PTR_MOVE(p_Data, p_FmPort->bufferOffsets.hashResultOffset); +} + +t_Error FM_PORT_Disable(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + volatile uint32_t *p_BmiCfgReg = NULL; + volatile uint32_t *p_BmiStatusReg = NULL; + bool rxPort = FALSE; + int tries; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + p_BmiCfgReg = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rcfg; + p_BmiStatusReg = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rst; + rxPort = TRUE; + break; + case(e_FM_PORT_TYPE_TX_10G): + case(e_FM_PORT_TYPE_TX): + p_BmiCfgReg = &p_FmPort->p_FmPortBmiRegs->txPortBmiRegs.fmbm_tcfg; + p_BmiStatusReg = &p_FmPort->p_FmPortBmiRegs->txPortBmiRegs.fmbm_tst; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + case(e_FM_PORT_TYPE_OH_HOST_COMMAND): + p_BmiCfgReg = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_ocfg; + p_BmiStatusReg = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_ost; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid port type")); + } + /* check if port is already disabled */ + if(!(GET_UINT32(*p_BmiCfgReg) & BMI_PORT_CFG_EN)) + { + if (!rxPort && !p_FmPort->imEn) + { + if(!(GET_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnc)& QMI_PORT_CFG_EN)) + /* port is disabled */ + return E_OK; + else + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Inconsistency: Port's QMI is enabled but BMI disabled")); + } + /* port is disabled */ + return E_OK; + } + + /* Disable QMI */ + if (!rxPort && !p_FmPort->imEn) + { + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnc, + GET_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnc) & ~QMI_PORT_CFG_EN); + /* wait for QMI to finish Handling dequeue tnums */ + tries=1000; + while ((GET_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pns) & QMI_PORT_STATUS_DEQ_FD_BSY) && + --tries) + XX_UDelay(1); + if (!tries) + RETURN_ERROR(MINOR, E_BUSY, ("%s: can't disable!", p_FmPort->name)); + } + + /* Disable BMI */ + WRITE_UINT32(*p_BmiCfgReg, GET_UINT32(*p_BmiCfgReg) & ~BMI_PORT_CFG_EN); + + if (p_FmPort->imEn) + FmPortImDisable(p_FmPort); + + tries=5000; + while ((GET_UINT32(*p_BmiStatusReg) & BMI_PORT_STATUS_BSY) && + --tries) + XX_UDelay(1); + + if (!tries) + RETURN_ERROR(MINOR, E_BUSY, ("%s: can't disable!", p_FmPort->name)); + + p_FmPort->enabled = 0; + + return E_OK; +} + +t_Error FM_PORT_Enable(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + volatile uint32_t *p_BmiCfgReg = NULL; + bool rxPort = FALSE; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + p_BmiCfgReg = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rcfg; + rxPort = TRUE; + break; + case(e_FM_PORT_TYPE_TX_10G): + case(e_FM_PORT_TYPE_TX): + p_BmiCfgReg = &p_FmPort->p_FmPortBmiRegs->txPortBmiRegs.fmbm_tcfg; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + case(e_FM_PORT_TYPE_OH_HOST_COMMAND): + p_BmiCfgReg = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_ocfg; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid port type")); + } + + /* check if port is already enabled */ + if(GET_UINT32(*p_BmiCfgReg) & BMI_PORT_CFG_EN) + { + if (!rxPort && !p_FmPort->imEn) + { + if(GET_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnc)& QMI_PORT_CFG_EN) + /* port is enabled */ + return E_OK; + else + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Inconsistency: Port's BMI is enabled but QMI disabled")); + } + /* port is enabled */ + return E_OK; + } + + if (p_FmPort->imEn) + FmPortImEnable(p_FmPort); + + /* Enable QMI */ + if (!rxPort && !p_FmPort->imEn) + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnc, + GET_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnc) | QMI_PORT_CFG_EN); + + /* Enable BMI */ + WRITE_UINT32(*p_BmiCfgReg, GET_UINT32(*p_BmiCfgReg) | BMI_PORT_CFG_EN); + + p_FmPort->enabled = 1; + + return E_OK; +} + +t_Error FM_PORT_SetRateLimit(t_Handle h_FmPort, t_FmPortRateLimit *p_RateLimit) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + uint32_t tmpRateLimit, tmpRateLimitScale; + volatile uint32_t *p_RateLimitReg, *p_RateLimitScaleReg; + uint8_t factor, countUnitBit; + uint16_t baseGran; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + if((p_FmPort->portType == e_FM_PORT_TYPE_RX_10G) || (p_FmPort->portType == e_FM_PORT_TYPE_RX) || + (p_FmPort->portType == e_FM_PORT_TYPE_OH_HOST_COMMAND)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Tx and Offline parsing ports only")); + + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_TX_10G): + case(e_FM_PORT_TYPE_TX): + p_RateLimitReg = &p_FmPort->p_FmPortBmiRegs->txPortBmiRegs.fmbm_trlmt; + p_RateLimitScaleReg = &p_FmPort->p_FmPortBmiRegs->txPortBmiRegs.fmbm_trlmts; + baseGran = 16000; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + p_RateLimitReg = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_orlmt; + p_RateLimitScaleReg = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_orlmts; + baseGran = 10000; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid port type")); + } + + countUnitBit = (uint8_t)FmGetTimeStampScale(p_FmPort->h_Fm); /* TimeStamp per nano seconds units */ + /* normally, we use 1 usec as the reference count */ + factor = 1; + /* if ratelimit is too small for a 1usec factor, multiply the factor */ + while (p_RateLimit->rateLimit < baseGran/factor) + { + if (countUnitBit==31) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Rate limit is too small")); + + countUnitBit++; + factor <<= 1; + } + /* if ratelimit is too large for a 1usec factor, it is also larger than max rate*/ + if (p_RateLimit->rateLimit > ((uint32_t)baseGran * (1<<10) * (uint32_t)factor)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Rate limit is too large")); + + tmpRateLimit = (uint32_t)(p_RateLimit->rateLimit*factor/baseGran - 1); + + if(!p_RateLimit->maxBurstSize || (p_RateLimit->maxBurstSize > MAX_BURST_SIZE)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("maxBurstSize must be between 1K and %dk", MAX_BURST_SIZE)); + + tmpRateLimitScale = ((31 - (uint32_t)countUnitBit) << BMI_COUNT_RATE_UNIT_SHIFT) | BMI_RATE_LIMIT_EN; + + if(p_FmPort->portType != e_FM_PORT_TYPE_OH_OFFLINE_PARSING) + tmpRateLimit |= (uint32_t)(p_RateLimit->maxBurstSize - 1) << BMI_MAX_BURST_SHIFT; + else + { +#ifndef FM_NO_ADVANCED_RATE_LIMITER + t_FmRevisionInfo revInfo; + + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if (revInfo.majorRev == 4) + { + switch(p_RateLimit->rateLimitDivider) + { + case(e_FM_PORT_DUAL_RATE_LIMITER_NONE): + break; + case(e_FM_PORT_DUAL_RATE_LIMITER_SCALE_DOWN_BY_2): + tmpRateLimitScale |= BMI_RATE_LIMIT_SCALE_BY_2; + break; + case(e_FM_PORT_DUAL_RATE_LIMITER_SCALE_DOWN_BY_4): + tmpRateLimitScale |= BMI_RATE_LIMIT_SCALE_BY_4; + break; + case(e_FM_PORT_DUAL_RATE_LIMITER_SCALE_DOWN_BY_8): + tmpRateLimitScale |= BMI_RATE_LIMIT_SCALE_BY_8; + break; + default: + break; + } + tmpRateLimit |= BMI_RATE_LIMIT_BURST_SIZE_GRAN; + } + else +#endif /* ! FM_NO_ADVANCED_RATE_LIMITER */ + { + if(p_RateLimit->rateLimitDivider != e_FM_PORT_DUAL_RATE_LIMITER_NONE) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("FM_PORT_ConfigDualRateLimitScaleDown")); + + if(p_RateLimit->maxBurstSize % 1000) + { + p_RateLimit->maxBurstSize = (uint16_t)((p_RateLimit->maxBurstSize/1000)+1); + DBG(WARNING, ("rateLimit.maxBurstSize rounded up to %d", (p_RateLimit->maxBurstSize/1000+1)*1000)); + } + else + p_RateLimit->maxBurstSize = (uint16_t)(p_RateLimit->maxBurstSize/1000); + } + tmpRateLimit |= (uint32_t)(p_RateLimit->maxBurstSize - 1) << BMI_MAX_BURST_SHIFT; + + } + WRITE_UINT32(*p_RateLimitScaleReg, tmpRateLimitScale); + WRITE_UINT32(*p_RateLimitReg, tmpRateLimit); + + return E_OK; +} + +t_Error FM_PORT_DeleteRateLimit(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + volatile uint32_t *p_RateLimitReg, *p_RateLimitScaleReg; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + if((p_FmPort->portType == e_FM_PORT_TYPE_RX_10G) || (p_FmPort->portType == e_FM_PORT_TYPE_RX) || + (p_FmPort->portType == e_FM_PORT_TYPE_OH_HOST_COMMAND)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Tx and Offline parsing ports only")); + + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_TX_10G): + case(e_FM_PORT_TYPE_TX): + p_RateLimitReg = &p_FmPort->p_FmPortBmiRegs->txPortBmiRegs.fmbm_trlmt; + p_RateLimitScaleReg = &p_FmPort->p_FmPortBmiRegs->txPortBmiRegs.fmbm_trlmts; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + p_RateLimitReg = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_orlmt; + p_RateLimitScaleReg = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_orlmts; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid port type")); + } + + WRITE_UINT32(*p_RateLimitScaleReg, 0); + WRITE_UINT32(*p_RateLimitReg, 0); + + return E_OK; +} + + +t_Error FM_PORT_SetFrameQueueCounters(t_Handle h_FmPort, bool enable) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + uint32_t tmpReg; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + + tmpReg = GET_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnc); + if(enable) + tmpReg |= QMI_PORT_CFG_EN_COUNTERS ; + else + tmpReg &= ~QMI_PORT_CFG_EN_COUNTERS; + + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnc, tmpReg); + + return E_OK; +} + +t_Error FM_PORT_SetPerformanceCounters(t_Handle h_FmPort, bool enable) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + volatile uint32_t *p_BmiPcReg = NULL; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + p_BmiPcReg = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rpc; + break; + case(e_FM_PORT_TYPE_TX_10G): + case(e_FM_PORT_TYPE_TX): + p_BmiPcReg = &p_FmPort->p_FmPortBmiRegs->txPortBmiRegs.fmbm_tpc; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + case(e_FM_PORT_TYPE_OH_HOST_COMMAND): + p_BmiPcReg = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_opc; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid port type")); + } + + if(enable) + WRITE_UINT32(*p_BmiPcReg, BMI_COUNTERS_EN); + else + WRITE_UINT32(*p_BmiPcReg, 0); + + return E_OK; +} + +t_Error FM_PORT_SetPerformanceCountersParams(t_Handle h_FmPort, t_FmPortPerformanceCnt *p_FmPortPerformanceCnt) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + uint32_t tmpReg; + volatile uint32_t *p_BmiPcpReg = NULL; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + p_BmiPcpReg = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rpcp; + break; + case(e_FM_PORT_TYPE_TX_10G): + case(e_FM_PORT_TYPE_TX): + p_BmiPcpReg = &p_FmPort->p_FmPortBmiRegs->txPortBmiRegs.fmbm_tpcp; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + case(e_FM_PORT_TYPE_OH_HOST_COMMAND): + p_BmiPcpReg = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_opcp; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid port type")); + } + + /* check parameters */ + if (!p_FmPortPerformanceCnt->taskCompVal || + (p_FmPortPerformanceCnt->taskCompVal > p_FmPort->tasks.num)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, + ("performanceCnt.taskCompVal has to be in the range of 1 - %d (current value)!", + p_FmPort->tasks.num)); + if (!p_FmPortPerformanceCnt->dmaCompVal || + (p_FmPortPerformanceCnt->dmaCompVal > p_FmPort->openDmas.num)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, + ("performanceCnt.dmaCompVal has to be in the range of 1 - %d (current value)!", + p_FmPort->openDmas.num)); + if (!p_FmPortPerformanceCnt->fifoCompVal || + (p_FmPortPerformanceCnt->fifoCompVal > p_FmPort->fifoBufs.num)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, + ("performanceCnt.fifoCompVal has to be in the range of 256 - %d (current value)!", + p_FmPort->fifoBufs.num)); + if (p_FmPortPerformanceCnt->fifoCompVal % BMI_FIFO_UNITS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, + ("performanceCnt.fifoCompVal has to be divisible by %d", + BMI_FIFO_UNITS)); + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + if (!p_FmPortPerformanceCnt->queueCompVal || + (p_FmPortPerformanceCnt->queueCompVal > MAX_PERFORMANCE_RX_QUEUE_COMP)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, + ("performanceCnt.queueCompVal for Rx has to be in the range of 1 - %d", + MAX_PERFORMANCE_RX_QUEUE_COMP)); + break; + case(e_FM_PORT_TYPE_TX_10G): + case(e_FM_PORT_TYPE_TX): + if (!p_FmPortPerformanceCnt->queueCompVal || + (p_FmPortPerformanceCnt->queueCompVal > MAX_PERFORMANCE_TX_QUEUE_COMP)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, + ("performanceCnt.queueCompVal for Tx has to be in the range of 1 - %d", + MAX_PERFORMANCE_TX_QUEUE_COMP)); + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + case(e_FM_PORT_TYPE_OH_HOST_COMMAND): + if (p_FmPortPerformanceCnt->queueCompVal) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("performanceCnt.queueCompVal is not relevant for H/O ports.")); + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid port type")); + } + + tmpReg = 0; + tmpReg |= ((uint32_t)(p_FmPortPerformanceCnt->queueCompVal - 1) << BMI_PERFORMANCE_PORT_COMP_SHIFT); + tmpReg |= ((uint32_t)(p_FmPortPerformanceCnt->dmaCompVal- 1) << BMI_PERFORMANCE_DMA_COMP_SHIFT); + tmpReg |= ((uint32_t)(p_FmPortPerformanceCnt->fifoCompVal/BMI_FIFO_UNITS - 1) << BMI_PERFORMANCE_FIFO_COMP_SHIFT); + if ((p_FmPort->portType != e_FM_PORT_TYPE_OH_OFFLINE_PARSING) && (p_FmPort->portType != e_FM_PORT_TYPE_OH_HOST_COMMAND)) + tmpReg |= ((uint32_t)(p_FmPortPerformanceCnt->taskCompVal - 1) << BMI_PERFORMANCE_TASK_COMP_SHIFT); + + WRITE_UINT32(*p_BmiPcpReg, tmpReg); + + return E_OK; +} + +t_Error FM_PORT_AnalyzePerformanceParams(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + t_FmPortPerformanceCnt currParams, savedParams; + t_Error err; + bool underTest, failed = FALSE; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + + XX_Print("Analyzing Performance parameters for port (type %d, id%d)\n", + p_FmPort->portType, p_FmPort->portId); + + currParams.taskCompVal = (uint8_t)p_FmPort->tasks.num; + if ((p_FmPort->portType == e_FM_PORT_TYPE_OH_OFFLINE_PARSING) || + (p_FmPort->portType == e_FM_PORT_TYPE_OH_HOST_COMMAND)) + currParams.queueCompVal = 0; + else + currParams.queueCompVal = 1; + currParams.dmaCompVal =(uint8_t) p_FmPort->openDmas.num; + currParams.fifoCompVal = p_FmPort->fifoBufs.num; + + FM_PORT_SetPerformanceCounters(p_FmPort, FALSE); + ClearPerfCnts(p_FmPort); + if ((err = FM_PORT_SetPerformanceCountersParams(p_FmPort, &currParams)) != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + FM_PORT_SetPerformanceCounters(p_FmPort, TRUE); + XX_UDelay(1000000); + FM_PORT_SetPerformanceCounters(p_FmPort, FALSE); + if (FM_PORT_GetCounter(p_FmPort, e_FM_PORT_COUNTERS_TASK_UTIL)) + { + XX_Print ("Max num of defined port tasks (%d) utilized - Please enlarge\n",p_FmPort->tasks.num); + failed = TRUE; + } + if (FM_PORT_GetCounter(p_FmPort, e_FM_PORT_COUNTERS_DMA_UTIL)) + { + XX_Print ("Max num of defined port openDmas (%d) utilized - Please enlarge\n",p_FmPort->openDmas.num); + failed = TRUE; + } + if (FM_PORT_GetCounter(p_FmPort, e_FM_PORT_COUNTERS_FIFO_UTIL)) + { + XX_Print ("Max size of defined port fifo (%d) utilized - Please enlarge\n",p_FmPort->fifoBufs.num*BMI_FIFO_UNITS); + failed = TRUE; + } + if (failed) + RETURN_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + + memset(&savedParams, 0, sizeof(savedParams)); + while (TRUE) + { + underTest = FALSE; + if ((currParams.taskCompVal != 1) && !savedParams.taskCompVal) + { + currParams.taskCompVal--; + underTest = TRUE; + } + if ((currParams.dmaCompVal != 1) && !savedParams.dmaCompVal) + { + currParams.dmaCompVal--; + underTest = TRUE; + } + if ((currParams.fifoCompVal != BMI_FIFO_UNITS) && !savedParams.fifoCompVal) + { + currParams.fifoCompVal -= BMI_FIFO_UNITS; + underTest = TRUE; + } + if (!underTest) + break; + + ClearPerfCnts(p_FmPort); + if ((err = FM_PORT_SetPerformanceCountersParams(p_FmPort, &currParams)) != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + FM_PORT_SetPerformanceCounters(p_FmPort, TRUE); + XX_UDelay(1000000); + FM_PORT_SetPerformanceCounters(p_FmPort, FALSE); + + if (!savedParams.taskCompVal && FM_PORT_GetCounter(p_FmPort, e_FM_PORT_COUNTERS_TASK_UTIL)) + savedParams.taskCompVal = (uint8_t)(currParams.taskCompVal+2); + if (!savedParams.dmaCompVal && FM_PORT_GetCounter(p_FmPort, e_FM_PORT_COUNTERS_DMA_UTIL)) + savedParams.dmaCompVal = (uint8_t)(currParams.dmaCompVal+2); + if (!savedParams.fifoCompVal && FM_PORT_GetCounter(p_FmPort, e_FM_PORT_COUNTERS_FIFO_UTIL)) + savedParams.fifoCompVal = currParams.fifoCompVal+2; + } + + XX_Print("best vals: tasks %d, dmas %d, fifos %d\n", + savedParams.taskCompVal, savedParams.dmaCompVal, savedParams.fifoCompVal); + return E_OK; +} + +t_Error FM_PORT_SetStatisticsCounters(t_Handle h_FmPort, bool enable) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + uint32_t tmpReg; + volatile uint32_t *p_BmiStcReg = NULL; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + p_BmiStcReg = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rstc; + break; + case(e_FM_PORT_TYPE_TX_10G): + case(e_FM_PORT_TYPE_TX): + p_BmiStcReg = &p_FmPort->p_FmPortBmiRegs->txPortBmiRegs.fmbm_tstc; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + case(e_FM_PORT_TYPE_OH_HOST_COMMAND): + p_BmiStcReg = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_ostc; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid port type")); + } + + tmpReg = GET_UINT32(*p_BmiStcReg); + + if(enable) + tmpReg |= BMI_COUNTERS_EN; + else + tmpReg &= ~BMI_COUNTERS_EN; + + WRITE_UINT32(*p_BmiStcReg, tmpReg); + + return E_OK; +} + +t_Error FM_PORT_SetErrorsRoute(t_Handle h_FmPort, fmPortFrameErrSelect_t errs) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + volatile uint32_t *p_ErrQReg, *p_ErrDiscard; + + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + p_ErrQReg = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rfsem; + p_ErrDiscard = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rfsdm; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + p_ErrQReg = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_ofsem; + p_ErrDiscard = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_ofsdm; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Rx and offline parsing ports only")); + } + + if (GET_UINT32(*p_ErrDiscard) & errs) + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("Selectd Errors that were configured to cause frame discard.")); + + WRITE_UINT32(*p_ErrQReg, errs); + + return E_OK; +} + +t_Error FM_PORT_SetAllocBufCounter(t_Handle h_FmPort, uint8_t poolId, bool enable) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + uint32_t tmpReg; + int i; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(poolIdp_FmPortDriverParam, E_INVALID_STATE); + + if((p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && (p_FmPort->portType != e_FM_PORT_TYPE_RX)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Rx ports only")); + + for(i=0 ; i< FM_PORT_MAX_NUM_OF_EXT_POOLS ; i++) + { + tmpReg = GET_UINT32(p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_ebmpi[i]); + if ((uint8_t)((tmpReg & BMI_EXT_BUF_POOL_ID_MASK) >> BMI_EXT_BUF_POOL_ID_SHIFT) == poolId) + { + if(enable) + tmpReg |= BMI_EXT_BUF_POOL_EN_COUNTER; + else + tmpReg &= ~BMI_EXT_BUF_POOL_EN_COUNTER; + WRITE_UINT32(p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_ebmpi[i], tmpReg); + break; + } + } + if (i == FM_PORT_MAX_NUM_OF_EXT_POOLS) + RETURN_ERROR(MINOR, E_INVALID_VALUE,("poolId %d is not included in this ports pools", poolId)); + + return E_OK; +} + +uint32_t FM_PORT_GetCounter(t_Handle h_FmPort, e_FmPortCounters counter) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + bool bmiCounter = FALSE; + volatile uint32_t *p_Reg; + + SANITY_CHECK_RETURN_VALUE(p_FmPort, E_INVALID_HANDLE, 0); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + + switch(counter) + { + case(e_FM_PORT_COUNTERS_DEQ_TOTAL): + case(e_FM_PORT_COUNTERS_DEQ_FROM_DEFAULT): + case(e_FM_PORT_COUNTERS_DEQ_CONFIRM ): + /* check that counter is available for the port type */ + if((p_FmPort->portType == e_FM_PORT_TYPE_RX) || (p_FmPort->portType == e_FM_PORT_TYPE_RX_10G)) + { + REPORT_ERROR(MINOR, E_INVALID_STATE, ("Requested counter is not available for Rx ports")); + return 0; + } + bmiCounter = FALSE; + case(e_FM_PORT_COUNTERS_ENQ_TOTAL): + bmiCounter = FALSE; + break; + default: /* BMI counters (or error - will be checked in BMI routine )*/ + bmiCounter = TRUE; + break; + } + + if(bmiCounter) + { + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + if(BmiRxPortCheckAndGetCounterPtr(p_FmPort, counter, &p_Reg)) + { + REPORT_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + return 0; + } + break; + case(e_FM_PORT_TYPE_TX_10G): + case(e_FM_PORT_TYPE_TX): + if(BmiTxPortCheckAndGetCounterPtr(p_FmPort, counter, &p_Reg)) + { + REPORT_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + return 0; + } + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + case(e_FM_PORT_TYPE_OH_HOST_COMMAND): + if(BmiOhPortCheckAndGetCounterPtr(p_FmPort, counter, &p_Reg)) + { + REPORT_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + return 0; + } + break; + default: + REPORT_ERROR(MINOR, E_INVALID_STATE, ("Unsupported port type")); + return 0; + } + return GET_UINT32(*p_Reg); + } + else /* QMI counter */ + { + + /* check that counters are enabled */ + if(!(GET_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnc) & QMI_PORT_CFG_EN_COUNTERS)) + { + REPORT_ERROR(MINOR, E_INVALID_STATE, ("Requested counter was not enabled")); + return 0; + } + + /* Set counter */ + switch(counter) + { + case(e_FM_PORT_COUNTERS_ENQ_TOTAL): + return GET_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnetfc); + case(e_FM_PORT_COUNTERS_DEQ_TOTAL): + return GET_UINT32(p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs.fmqm_pndtfc); + case(e_FM_PORT_COUNTERS_DEQ_FROM_DEFAULT): + return GET_UINT32(p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs.fmqm_pndfdc); + case(e_FM_PORT_COUNTERS_DEQ_CONFIRM): + return GET_UINT32(p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs.fmqm_pndcc); + default: + REPORT_ERROR(MINOR, E_INVALID_STATE, ("Requested counter is not available")); + return 0; + } + } + + return 0; +} + +t_Error FM_PORT_ModifyCounter(t_Handle h_FmPort, e_FmPortCounters counter, uint32_t value) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + bool bmiCounter = FALSE; + volatile uint32_t *p_Reg; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + + switch(counter) + { + case(e_FM_PORT_COUNTERS_DEQ_TOTAL): + case(e_FM_PORT_COUNTERS_DEQ_FROM_DEFAULT): + case(e_FM_PORT_COUNTERS_DEQ_CONFIRM ): + /* check that counter is available for the port type */ + if((p_FmPort->portType == e_FM_PORT_TYPE_RX) || (p_FmPort->portType == e_FM_PORT_TYPE_RX_10G)) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Requested counter is not available for Rx ports")); + case(e_FM_PORT_COUNTERS_ENQ_TOTAL): + bmiCounter = FALSE; + break; + default: /* BMI counters (or error - will be checked in BMI routine )*/ + bmiCounter = TRUE; + break; + } + + if(bmiCounter) + { + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + if(BmiRxPortCheckAndGetCounterPtr(p_FmPort, counter, &p_Reg)) + RETURN_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + break; + case(e_FM_PORT_TYPE_TX_10G): + case(e_FM_PORT_TYPE_TX): + if(BmiTxPortCheckAndGetCounterPtr(p_FmPort, counter, &p_Reg)) + RETURN_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + case(e_FM_PORT_TYPE_OH_HOST_COMMAND): + if(BmiOhPortCheckAndGetCounterPtr(p_FmPort, counter, &p_Reg)) + RETURN_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + break; + default: + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Unsupported port type")); + } + WRITE_UINT32(*p_Reg, value); + } + else /* QMI counter */ + { + + /* check that counters are enabled */ + if(!(GET_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnc) & QMI_PORT_CFG_EN_COUNTERS)) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Requested counter was not enabled")); + + /* Set counter */ + switch(counter) + { + case(e_FM_PORT_COUNTERS_ENQ_TOTAL): + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnetfc, value); + break; + case(e_FM_PORT_COUNTERS_DEQ_TOTAL): + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs.fmqm_pndtfc, value); + break; + case(e_FM_PORT_COUNTERS_DEQ_FROM_DEFAULT): + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs.fmqm_pndfdc, value); + break; + case(e_FM_PORT_COUNTERS_DEQ_CONFIRM): + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs.fmqm_pndcc, value); + break; + default: + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Requested counter is not available")); + } + } + + return E_OK; +} + +uint32_t FM_PORT_GetAllocBufCounter(t_Handle h_FmPort, uint8_t poolId) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + uint32_t extPoolReg; + uint8_t tmpPool; + uint8_t i; + + SANITY_CHECK_RETURN_VALUE(p_FmPort, E_INVALID_HANDLE, 0); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + + if((p_FmPort->portType != e_FM_PORT_TYPE_RX) && (p_FmPort->portType == e_FM_PORT_TYPE_RX_10G)) + { + REPORT_ERROR(MINOR, E_INVALID_STATE, ("Requested counter is not available for non-Rx ports")); + return 0; + } + + for(i=0;ip_FmPortBmiRegs->rxPortBmiRegs.fmbm_ebmpi[i]); + if (extPoolReg & BMI_EXT_BUF_POOL_VALID) + { + tmpPool = (uint8_t)((extPoolReg & BMI_EXT_BUF_POOL_ID_MASK) >> BMI_EXT_BUF_POOL_ID_SHIFT); + if(tmpPool == poolId) + { + if(extPoolReg & BMI_EXT_BUF_POOL_EN_COUNTER) + return GET_UINT32(p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_acnt[i]); + else + { + REPORT_ERROR(MINOR, E_INVALID_STATE, ("Requested counter is not enabled")); + return 0; + } + } + } + } + REPORT_ERROR(MINOR, E_INVALID_STATE, ("Pool %d is not used", poolId)); + return 0; +} + +t_Error FM_PORT_ModifyAllocBufCounter(t_Handle h_FmPort, uint8_t poolId, uint32_t value) +{ + t_FmPort *p_FmPort = (t_FmPort *)h_FmPort; + uint32_t extPoolReg; + uint8_t tmpPool; + uint8_t i; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + + if((p_FmPort->portType != e_FM_PORT_TYPE_RX) && (p_FmPort->portType == e_FM_PORT_TYPE_RX_10G)) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Requested counter is not available for non-Rx ports")); + + + for(i=0;ip_FmPortBmiRegs->rxPortBmiRegs.fmbm_ebmpi[i]); + if (extPoolReg & BMI_EXT_BUF_POOL_VALID) + { + tmpPool = (uint8_t)((extPoolReg & BMI_EXT_BUF_POOL_ID_MASK) >> BMI_EXT_BUF_POOL_ID_SHIFT); + if(tmpPool == poolId) + { + if(extPoolReg & BMI_EXT_BUF_POOL_EN_COUNTER) + { + WRITE_UINT32(p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_acnt[i], value); + return E_OK; + } + else + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Requested counter is not enabled")); + } + } + } + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Pool %d is not used", poolId)); +} + +bool FM_PORT_IsStalled(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + t_Error err; + bool isStalled; + + SANITY_CHECK_RETURN_VALUE(p_FmPort, E_INVALID_HANDLE, FALSE); + SANITY_CHECK_RETURN_VALUE(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE, FALSE); + + err = FmIsPortStalled(p_FmPort->h_Fm, p_FmPort->hardwarePortId, &isStalled); + if(err != E_OK) + { + REPORT_ERROR(MINOR, err, NO_MSG); + return TRUE; + } + return isStalled; +} + +t_Error FM_PORT_ReleaseStalled(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + + return FmResumeStalledPort(p_FmPort->h_Fm, p_FmPort->hardwarePortId); +} + +t_Error FM_PORT_SetRxL4ChecksumVerify(t_Handle h_FmPort, bool l4Checksum) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + uint32_t tmpReg; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + + if ((p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && + (p_FmPort->portType != e_FM_PORT_TYPE_RX)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Rx ports only")); + + tmpReg = GET_UINT32(p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rfne); + if (l4Checksum) + tmpReg &= ~BMI_PORT_RFNE_FRWD_DCL4C; + else + tmpReg |= BMI_PORT_RFNE_FRWD_DCL4C; + WRITE_UINT32(p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rfne, tmpReg); + + return E_OK; +} + + +/* API Run-time PCD Control unit functions */ + +t_Error FM_PORT_PcdPlcrAllocProfiles(t_Handle h_FmPort, uint16_t numOfProfiles) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + t_Error err = E_OK; + + p_FmPort->h_FmPcd = FmGetPcdHandle(p_FmPort->h_Fm); + ASSERT_COND(p_FmPort->h_FmPcd); + + if(numOfProfiles) + { + err = FmPcdPlcrAllocProfiles(p_FmPort->h_FmPcd, p_FmPort->hardwarePortId, numOfProfiles); + if(err) + RETURN_ERROR(MAJOR, err,NO_MSG); + } + FmPcdPortRegister(p_FmPort->h_FmPcd, h_FmPort, p_FmPort->hardwarePortId); + + return E_OK; +} + +t_Error FM_PORT_PcdPlcrFreeProfiles(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + t_Error err = E_OK; + + err = FmPcdPlcrFreeProfiles(p_FmPort->h_FmPcd, p_FmPort->hardwarePortId); + if(err) + RETURN_ERROR(MAJOR, err,NO_MSG); + return E_OK; +} + +t_Error FM_PORT_PcdKgModifyInitialScheme (t_Handle h_FmPort, t_FmPcdKgSchemeSelect *p_FmPcdKgScheme) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + volatile uint32_t *p_BmiHpnia = NULL; + uint32_t tmpReg; + uint8_t relativeSchemeId; + uint8_t physicalSchemeId; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->pcdEngines & FM_PCD_KG , E_INVALID_STATE); + + tmpReg = (uint32_t)((p_FmPort->pcdEngines & FM_PCD_CC)? NIA_KG_CC_EN:0); + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + p_BmiHpnia = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rfpne; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + p_BmiHpnia = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_ofpne; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Rx and offline parsing ports only")); + } + + if (!TRY_LOCK(p_FmPort->h_Spinlock, &p_FmPort->lock)) + return ERROR_CODE(E_BUSY); + /* if we want to change to direct scheme, we need to check that this scheme is valid */ + if(p_FmPcdKgScheme->direct) + { + physicalSchemeId = (uint8_t)(PTR_TO_UINT(p_FmPcdKgScheme->h_DirectScheme)-1); + /* check that this scheme is bound to this port */ + if(!(p_FmPort->schemesPerPortVector & (uint32_t)(1 << (31 - (uint32_t)physicalSchemeId)))) + { + RELEASE_LOCK(p_FmPort->lock); + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("called with a scheme that is not bound to this port")); + } + + relativeSchemeId = FmPcdKgGetRelativeSchemeId(p_FmPort->h_FmPcd, physicalSchemeId); + if(relativeSchemeId >= FM_PCD_KG_NUM_OF_SCHEMES) + { + RELEASE_LOCK(p_FmPort->lock); + RETURN_ERROR(MAJOR, E_NOT_IN_RANGE, ("called with invalid Scheme ")); + } + + if(!FmPcdKgIsSchemeValidSw(p_FmPort->h_FmPcd, relativeSchemeId)) + { + RELEASE_LOCK(p_FmPort->lock); + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("called with uninitialized Scheme ")); + } + + WRITE_UINT32(*p_BmiHpnia, NIA_ENG_KG | tmpReg | NIA_KG_DIRECT | (uint32_t)physicalSchemeId); + } + else /* change to indirect scheme */ + WRITE_UINT32(*p_BmiHpnia, NIA_ENG_KG | tmpReg); + RELEASE_LOCK(p_FmPort->lock); + + return E_OK; +} + +t_Error FM_PORT_PcdPlcrModifyInitialProfile (t_Handle h_FmPort, t_Handle h_Profile) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + volatile uint32_t *p_BmiNia; + volatile uint32_t *p_BmiHpnia; + uint32_t tmpReg; + uint16_t absoluteProfileId = (uint16_t)(PTR_TO_UINT(h_Profile)-1); + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->pcdEngines & FM_PCD_PLCR , E_INVALID_STATE); + + /* check relevancy of this routine - only when policer is used + directly after BMI or Parser */ + if((p_FmPort->pcdEngines & FM_PCD_KG) || (p_FmPort->pcdEngines & FM_PCD_CC)) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("relevant only when PCD support mode is e_FM_PCD_SUPPORT_PLCR_ONLY or e_FM_PCD_SUPPORT_PRS_AND_PLCR")); + + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + p_BmiNia = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rfne; + p_BmiHpnia = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rfpne; + tmpReg = GET_UINT32(*p_BmiNia) & BMI_RFNE_FDCS_MASK; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + p_BmiNia = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_ofne; + p_BmiHpnia = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_ofpne; + tmpReg = 0; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Rx and offline parsing ports only")); + } + + if (!TRY_LOCK(p_FmPort->h_Spinlock, &p_FmPort->lock)) + return ERROR_CODE(E_BUSY); + if(!FmPcdPlcrIsProfileValid(p_FmPort->h_FmPcd, absoluteProfileId)) + { + RELEASE_LOCK(p_FmPort->lock); + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("Invalid profile")); + } + + tmpReg = (uint32_t)(NIA_ENG_PLCR | NIA_PLCR_ABSOLUTE | absoluteProfileId); + + if(p_FmPort->pcdEngines & FM_PCD_PRS) /* e_FM_PCD_SUPPORT_PRS_AND_PLCR */ + { + /* update BMI HPNIA */ + WRITE_UINT32(*p_BmiHpnia, tmpReg); + } + else /* e_FM_PCD_SUPPORT_PLCR_ONLY */ + { + /* rfne may contain FDCS bits, so first we read them. */ + tmpReg |= (GET_UINT32(*p_BmiNia) & BMI_RFNE_FDCS_MASK); + /* update BMI NIA */ + WRITE_UINT32(*p_BmiNia, tmpReg); + } + RELEASE_LOCK(p_FmPort->lock); + + return E_OK; +} + + +t_Error FM_PORT_PcdCcModifyTree (t_Handle h_FmPort, t_Handle h_CcTree) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + t_Error err = E_OK; + volatile uint32_t *p_BmiCcBase=NULL; + volatile uint32_t *p_BmiNia=NULL; + uint32_t ccTreePhysOffset; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_VALUE); + + if (p_FmPort->imEn) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for non-independant mode ports only")); + + /* get PCD registers pointers */ + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + p_BmiNia = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rfne; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + p_BmiNia = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_ofne; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Rx and offline parsing ports only")); + } + + /* check that current NIA is BMI to BMI */ + if((GET_UINT32(*p_BmiNia) & ~BMI_RFNE_FDCS_MASK) != (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("may be called only for ports in BMI-to-BMI state.")); + +/*TODO - to take care of changes due to previous tree. Maybe in the previous tree where chnged pndn, pnen ... + it has to be returned to the default state - initially*/ + + p_FmPort->requiredAction = 0; + + if(p_FmPort->pcdEngines & FM_PCD_CC) + { + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + p_BmiCcBase = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rccb; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + p_BmiCcBase = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_occb; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid port type")); + } + + if (!TRY_LOCK(p_FmPort->h_Spinlock, &p_FmPort->lock)) + return ERROR_CODE(E_BUSY); + err = FmPcdCcBindTree(p_FmPort->h_FmPcd, h_CcTree, &ccTreePhysOffset, h_FmPort); + if(err) + { + RELEASE_LOCK(p_FmPort->lock); + RETURN_ERROR(MINOR, err, NO_MSG); + } + WRITE_UINT32(*p_BmiCcBase, ccTreePhysOffset); + + p_FmPort->ccTreeId = h_CcTree; + RELEASE_LOCK(p_FmPort->lock); + } + else + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Coarse CLassification not defined for this port.")); + + return E_OK; +} + +t_Error FM_PORT_AttachPCD(t_Handle h_FmPort) +{ + + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + t_Error err = E_OK; + + SANITY_CHECK_RETURN_ERROR(h_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + + if (p_FmPort->imEn) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for non-independant mode ports only")); + + /* TODO - may add here checks for: + SP (or in sw: schemes) + CPP (or in sw clsPlan) + Parser enabled and configured(?) + Tree(?) + Profile - only if direct. + Scheme - only if direct + */ + + if (!TRY_LOCK(p_FmPort->h_Spinlock, &p_FmPort->lock)) + return ERROR_CODE(E_BUSY); + err = FmPortAttachPCD(h_FmPort); + RELEASE_LOCK(p_FmPort->lock); + + return err; +} + +t_Error FM_PORT_DetachPCD(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + volatile uint32_t *p_BmiNia=NULL; + + SANITY_CHECK_RETURN_ERROR(h_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + + if (p_FmPort->imEn) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for non-independant mode ports only")); + + /* get PCD registers pointers */ + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + p_BmiNia = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rfne; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + p_BmiNia = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_ofne; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Rx and offline parsing ports only")); + } + + WRITE_UINT32(*p_BmiNia, (p_FmPort->savedBmiNia & BMI_RFNE_FDCS_MASK) | (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME)); + +/*TODO - not atomic - it seems that port has to be disabled*/ + if(p_FmPort->requiredAction & UPDATE_NIA_PNEN) + { + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_TX_10G): + case(e_FM_PORT_TYPE_TX): + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnen, NIA_ENG_BMI | NIA_BMI_AC_TX_RELEASE); + break; + case(e_FM_PORT_TYPE_OH_HOST_COMMAND): + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + case(e_FM_PORT_TYPE_RX): + case(e_FM_PORT_TYPE_RX_10G): + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnen, NIA_ENG_BMI | NIA_BMI_AC_RELEASE); + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Can not reach this stage")); + } + } + + if(p_FmPort->requiredAction & UPDATE_NIA_PNDN) + { + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_TX_10G): + case(e_FM_PORT_TYPE_TX): + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs.fmqm_pndn, NIA_ENG_BMI | NIA_BMI_AC_TX); + break; + case(e_FM_PORT_TYPE_OH_HOST_COMMAND): + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs.fmqm_pndn, NIA_ENG_BMI | NIA_BMI_AC_FETCH); + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Can not reach this stage")); + } + } + + + if(p_FmPort->requiredAction & UPDATE_FMFP_PRC_WITH_ONE_RISC_ONLY) + if(FmSetNumOfRiscsPerPort(p_FmPort->h_Fm, p_FmPort->hardwarePortId, 2)!= E_OK) + RETURN_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); + return E_OK; +} + +t_Error FM_PORT_SetPCD(t_Handle h_FmPort, t_FmPortPcdParams *p_PcdParams) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + t_FmPcdKgInterModuleBindPortToSchemes schemeBind; + t_Error err = E_OK; + uint8_t i; + + SANITY_CHECK_RETURN_ERROR(h_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + + if (p_FmPort->imEn) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for non-independent mode ports only")); + + if (!TRY_LOCK(p_FmPort->h_Spinlock, &p_FmPort->lock)) + return ERROR_CODE(E_BUSY); + p_FmPort->h_FmPcd = FmGetPcdHandle(p_FmPort->h_Fm); + ASSERT_COND(p_FmPort->h_FmPcd); + + err = SetPcd( h_FmPort, p_PcdParams); + if(err) + { + RELEASE_LOCK(p_FmPort->lock); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + if(p_FmPort->pcdEngines & FM_PCD_KG) + { + schemeBind.netEnvId = p_FmPort->netEnvId; + schemeBind.hardwarePortId = p_FmPort->hardwarePortId; + schemeBind.numOfSchemes = p_PcdParams->p_KgParams->numOfSchemes; + schemeBind.useClsPlan = p_FmPort->useClsPlan; + for(i = 0;ip_KgParams->h_Schemes[i])-1); + + err = FmPcdKgBindPortToSchemes(p_FmPort->h_FmPcd, &schemeBind); + if(err) + { + DeletePcd(p_FmPort); + RELEASE_LOCK(p_FmPort->lock); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + } + + if ((p_FmPort->pcdEngines & FM_PCD_PRS) && (p_PcdParams->p_PrsParams->includeInPrsStatistics)) + FmPcdPrsIncludePortInStatistics(p_FmPort->h_FmPcd, p_FmPort->hardwarePortId, TRUE); + + FmPcdIncNetEnvOwners(p_FmPort->h_FmPcd, p_FmPort->netEnvId); + + err = FmPortAttachPCD(h_FmPort); + RELEASE_LOCK(p_FmPort->lock); + + return err; +} + +t_Error FM_PORT_DeletePCD(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + t_FmPcdKgInterModuleBindPortToSchemes schemeBind; + t_Error err = E_OK; + + SANITY_CHECK_RETURN_ERROR(h_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + + if (p_FmPort->imEn) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for non-independant mode ports only")); + + if (!TRY_LOCK(p_FmPort->h_Spinlock, &p_FmPort->lock)) + return ERROR_CODE(E_BUSY); + + err = FM_PORT_DetachPCD(h_FmPort); + if(err) + { + RELEASE_LOCK(p_FmPort->lock); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + FmPcdDecNetEnvOwners(p_FmPort->h_FmPcd, p_FmPort->netEnvId); + + /* we do it anyway, instead of checking if included */ + if (FmIsMaster(p_FmPort->h_Fm) && + (p_FmPort->pcdEngines & FM_PCD_PRS)) + FmPcdPrsIncludePortInStatistics(p_FmPort->h_FmPcd, p_FmPort->hardwarePortId, FALSE); + + if(p_FmPort->pcdEngines & FM_PCD_KG) + { + /* unbind all schemes */ + p_FmPort->schemesPerPortVector = GetPortSchemeBindParams(p_FmPort, &schemeBind); + + err = FmPcdKgUnbindPortToSchemes(p_FmPort->h_FmPcd, &schemeBind); + if(err) + { + RELEASE_LOCK(p_FmPort->lock); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + } + + err = DeletePcd(h_FmPort); + RELEASE_LOCK(p_FmPort->lock); + + return err; +} + +t_Error FM_PORT_PcdKgBindSchemes (t_Handle h_FmPort, t_FmPcdPortSchemesParams *p_PortScheme) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + t_FmPcdKgInterModuleBindPortToSchemes schemeBind; + t_Error err = E_OK; + uint32_t tmpScmVec=0; + int i; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->pcdEngines & FM_PCD_KG , E_INVALID_STATE); + + schemeBind.netEnvId = p_FmPort->netEnvId; + schemeBind.hardwarePortId = p_FmPort->hardwarePortId; + schemeBind.numOfSchemes = p_PortScheme->numOfSchemes; + schemeBind.useClsPlan = p_FmPort->useClsPlan; + for (i=0; ih_Schemes[i])-1); + /* build vector */ + tmpScmVec |= 1 << (31 - (uint32_t)schemeBind.schemesIds[i]); + } + + if (!TRY_LOCK(p_FmPort->h_Spinlock, &p_FmPort->lock)) + return ERROR_CODE(E_BUSY); + err = FmPcdKgBindPortToSchemes(p_FmPort->h_FmPcd, &schemeBind); + if (err == E_OK) + p_FmPort->schemesPerPortVector |= tmpScmVec; + RELEASE_LOCK(p_FmPort->lock); + + return err; +} + +t_Error FM_PORT_PcdKgUnbindSchemes (t_Handle h_FmPort, t_FmPcdPortSchemesParams *p_PortScheme) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + t_FmPcdKgInterModuleBindPortToSchemes schemeBind; + t_Error err = E_OK; + uint32_t tmpScmVec=0; + int i; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->pcdEngines & FM_PCD_KG , E_INVALID_STATE); + + schemeBind.netEnvId = p_FmPort->netEnvId; + schemeBind.hardwarePortId = p_FmPort->hardwarePortId; + schemeBind.numOfSchemes = p_PortScheme->numOfSchemes; + for (i=0; ih_Schemes[i])-1); + /* build vector */ + tmpScmVec |= 1 << (31 - (uint32_t)schemeBind.schemesIds[i]); + } + + if (!TRY_LOCK(p_FmPort->h_Spinlock, &p_FmPort->lock)) + return ERROR_CODE(E_BUSY); + err = FmPcdKgUnbindPortToSchemes(p_FmPort->h_FmPcd, &schemeBind); + if (err == E_OK) + p_FmPort->schemesPerPortVector &= ~tmpScmVec; + RELEASE_LOCK(p_FmPort->lock); + + return err; +} + +t_Error FM_PORT_PcdPrsModifyStartOffset (t_Handle h_FmPort, t_FmPcdPrsStart *p_FmPcdPrsStart) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + volatile uint32_t *p_BmiPrsStartOffset = NULL; + volatile uint32_t *p_BmiNia = NULL; + uint32_t tmpReg; + uint8_t hdrNum; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->pcdEngines & FM_PCD_PRS , E_INVALID_STATE); + + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + p_BmiPrsStartOffset = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rpso; + p_BmiNia = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rfne; + tmpReg = GET_UINT32(*p_BmiNia) & BMI_RFNE_FDCS_MASK; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + p_BmiPrsStartOffset = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_opso; + p_BmiNia = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_ofne; + tmpReg = 0; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Rx and offline parsing ports only")); + } + + /* check that current NIA is BMI to BMI */ + if((GET_UINT32(*p_BmiNia) & ~BMI_RFNE_FDCS_MASK) != (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("may be called only for ports in BMI-to-BMI state.")); + + if (!TRY_LOCK(p_FmPort->h_Spinlock, &p_FmPort->lock)) + return ERROR_CODE(E_BUSY); + /* set the first header */ + GET_PRS_HDR_NUM(hdrNum, p_FmPcdPrsStart->firstPrsHdr); + if ((hdrNum == ILLEGAL_HDR_NUM) || (hdrNum == NO_HDR_NUM)) + { + RELEASE_LOCK(p_FmPort->lock); + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("Unsupported header.")); + } + WRITE_UINT32(*p_BmiNia, (uint32_t)(NIA_ENG_PRS | (uint32_t)hdrNum | tmpReg)); + + /* set start parsing offset */ + WRITE_UINT32(*p_BmiPrsStartOffset, (uint32_t)(p_FmPcdPrsStart->parsingOffset + p_FmPort->internalBufferOffset)); + RELEASE_LOCK(p_FmPort->lock); + + return E_OK; +} + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) +t_Error FM_PORT_DumpRegs(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + t_Error err = E_OK; + char arr[30]; + uint8_t flag; + int i=0; + + DECLARE_DUMP; + + SANITY_CHECK_RETURN_ERROR(h_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortQmiRegs, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortBmiRegs, E_INVALID_HANDLE); + + switch (p_FmPort->portType) + { + case (e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + strcpy(arr, "PORT_TYPE_OFFLINE_PARSING"); + flag = 0; + break; + case (e_FM_PORT_TYPE_OH_HOST_COMMAND): + strcpy(arr, "PORT_TYPE_HOST_COMMAND"); + flag = 0; + break; + case (e_FM_PORT_TYPE_RX): + strcpy(arr, "PORT_TYPE_RX"); + flag = 1; + break; + case (e_FM_PORT_TYPE_RX_10G): + strcpy(arr, "PORT_TYPE_RX_10G"); + flag = 1; + break; + case (e_FM_PORT_TYPE_TX): + strcpy(arr, "PORT_TYPE_TX"); + flag = 2; + break; + case (e_FM_PORT_TYPE_TX_10G): + strcpy(arr, "PORT_TYPE_TX_10G"); + flag = 2; + break; + default: + return ERROR_CODE(E_INVALID_VALUE); + } + + DUMP_TITLE(UINT_TO_PTR(p_FmPort->hardwarePortId), ("PortId for %s %d", arr, p_FmPort->portId )); + DUMP_TITLE(p_FmPort->p_FmPortBmiRegs, ("Bmi Port Regs")); + + err = FmDumpPortRegs(p_FmPort->h_Fm, p_FmPort->hardwarePortId); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + + switch(flag) + { + case(0): + + DUMP_SUBTITLE(("\n")); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ocfg); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ost); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_oda); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofdne); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofne); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofca); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofpne); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_opso); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_opp); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_occb); + + DUMP_TITLE(&(p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_oprai), ("fmbm_oprai")); + DUMP_SUBSTRUCT_ARRAY(i, FM_PORT_PRS_RESULT_NUM_OF_WORDS) + { + DUMP_MEMORY(&(p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_oprai[i]), sizeof(uint32_t)); + } + DUMP_SUBTITLE(("\n")); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofqid ); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_oefqid); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofsdm ); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofsem ); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofene ); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_orlmts); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_orlmt); + + { +#ifndef FM_NO_OP_OBSERVED_POOLS + t_FmRevisionInfo revInfo; + + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if (revInfo.majorRev == 4) +#endif /* !FM_NO_OP_OBSERVED_POOLS */ + { + DUMP_TITLE(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_oebmpi, ("fmbm_oebmpi")); + + DUMP_SUBSTRUCT_ARRAY(i, FM_PORT_MAX_NUM_OF_OBSERVED_EXT_POOLS) + { + DUMP_MEMORY(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_oebmpi[i], sizeof(uint32_t)); + } + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ocgm); + } + } + + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ostc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofrc ); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofdc ); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofledc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofufdc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_offc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofwdc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofldec); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_opc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_opcp); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_occn); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_otuc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_oduc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofuc); + break; + case(1): + DUMP_SUBTITLE(("\n")); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rcfg); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rst); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rda); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfp); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_reth); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfed); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_ricp); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rebm); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfne); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfca); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfpne); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rpso); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rpp); + + DUMP_TITLE(&(p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rprai), ("fmbm_rprai")); + DUMP_SUBSTRUCT_ARRAY(i, FM_PORT_PRS_RESULT_NUM_OF_WORDS) + { + DUMP_MEMORY(&(p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rprai[i]), sizeof(uint32_t)); + } + DUMP_SUBTITLE(("\n")); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfqid); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_refqid); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfsdm); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfsem); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfene); + DUMP_TITLE(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_ebmpi, ("fmbm_ebmpi")); + DUMP_SUBSTRUCT_ARRAY(i, FM_PORT_MAX_NUM_OF_EXT_POOLS) + { + DUMP_MEMORY(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_ebmpi[i], sizeof(uint32_t)); + } + DUMP_TITLE(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_acnt, ("fmbm_acnt")); + DUMP_SUBSTRUCT_ARRAY(i, FM_PORT_MAX_NUM_OF_EXT_POOLS) + { + DUMP_MEMORY(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_acnt[i], sizeof(uint32_t)); + } + DUMP_TITLE(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_cgm, ("fmbm_cgm")); + DUMP_SUBSTRUCT_ARRAY(i, FM_PORT_NUM_OF_CONGESTION_GRPS/32) + { + DUMP_MEMORY(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_cgm[i], sizeof(uint32_t)); + } + DUMP_SUBTITLE(("\n")); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_mpd); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rstc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfrc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfbc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rlfc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rffc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfcd); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfldec); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rodc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rpc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rpcp); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rccn); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rtuc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rrquc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rduc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfuc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rpac); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rdbg); + break; + case(2): + + DUMP_SUBTITLE(("\n")); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tcfg); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tst); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tda); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tfp); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tfed); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_ticp); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tfne); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tfca); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tcfqid); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tfeqid); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tfene); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_trlmts); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_trlmt); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tstc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tfrc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tfdc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tfledc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tfufdc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tpc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tpcp); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tccn); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_ttuc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_ttcquc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tduc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tfuc); + break; + + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid flag")); + } + + DUMP_TITLE(p_FmPort->p_FmPortQmiRegs, ("Qmi Port Regs")); + + DUMP_VAR(p_FmPort->p_FmPortQmiRegs,fmqm_pnc); + DUMP_VAR(p_FmPort->p_FmPortQmiRegs,fmqm_pns); + DUMP_VAR(p_FmPort->p_FmPortQmiRegs,fmqm_pnts); + DUMP_VAR(p_FmPort->p_FmPortQmiRegs,fmqm_pnen); + DUMP_VAR(p_FmPort->p_FmPortQmiRegs,fmqm_pnetfc); + + if(flag !=1) + { + DUMP_VAR(&p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs,fmqm_pndn); + DUMP_VAR(&p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs,fmqm_pndc); + DUMP_VAR(&p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs,fmqm_pndtfc); + DUMP_VAR(&p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs,fmqm_pndfdc); + DUMP_VAR(&p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs,fmqm_pndcc); + } + + return E_OK; +} +#endif /* (defined(DEBUG_ERRORS) && ... */ + +t_Error FM_PORT_AddCongestionGrps(t_Handle h_FmPort, t_FmPortCongestionGrps *p_CongestionGrps) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + bool tmpArray[FM_PORT_NUM_OF_CONGESTION_GRPS], opPort; + int i; + uint8_t mod; + uint32_t tmpReg = 0; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + + { +#ifdef FM_NO_OP_OBSERVED_CGS + t_FmRevisionInfo revInfo; + + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if (revInfo.majorRev != 4) + { + if((p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && + (p_FmPort->portType != e_FM_PORT_TYPE_RX)) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("Available for Rx ports only")); + } + else +#endif /* FM_NO_OP_OBSERVED_CGS */ + if((p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && + (p_FmPort->portType != e_FM_PORT_TYPE_RX) && + (p_FmPort->portType != e_FM_PORT_TYPE_OH_OFFLINE_PARSING)) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("Available for Rx & OP ports only")); + } + + opPort = (bool)((p_FmPort->portType == e_FM_PORT_TYPE_OH_OFFLINE_PARSING) ? TRUE:FALSE); + + /* to minimize memory access (groups may belong to the same regsiter, and may + be out of order), we first collect all information into a 256 booleans array, + representing each possible group. */ + + memset(&tmpArray, 0, FM_PORT_NUM_OF_CONGESTION_GRPS*sizeof(bool)); + for(i=0;inumOfCongestionGrpsToConsider;i++) + tmpArray[p_CongestionGrps->congestionGrpsToConsider[i]] = TRUE; + + for(i=0;ip_FmPortBmiRegs->ohPortBmiRegs.fmbm_ocgm): + GET_UINT32(p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_cgm[7-i/32]); + + /* set in the register, the bit representing the relevant congestion group. */ + if(tmpArray[i]) + tmpReg |= (0x00000001 << (uint32_t)mod); + + if (mod == 31) /* last in a 32 bunch of congestion groups - write the corresponding register */ + { + if(opPort) + WRITE_UINT32(p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_ocgm, tmpReg); + else + WRITE_UINT32(p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_cgm[7-i/32], tmpReg); + } + } + + return E_OK; +} + +t_Error FM_PORT_RemoveCongestionGrps(t_Handle h_FmPort, t_FmPortCongestionGrps *p_CongestionGrps) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + bool tmpArray[FM_PORT_NUM_OF_CONGESTION_GRPS], opPort; + int i; + uint8_t mod; + uint32_t tmpReg = 0; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + + { +#ifdef FM_NO_OP_OBSERVED_CGS + t_FmRevisionInfo revInfo; + + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if (revInfo.majorRev != 4) + { + if((p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && + (p_FmPort->portType != e_FM_PORT_TYPE_RX)) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("Available for Rx ports only")); + } + else +#endif /* FM_NO_OP_OBSERVED_CGS */ + if((p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && + (p_FmPort->portType != e_FM_PORT_TYPE_RX) && + (p_FmPort->portType != e_FM_PORT_TYPE_OH_OFFLINE_PARSING)) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("Available for Rx & OP ports only")); + } + + opPort = (bool)((p_FmPort->portType == e_FM_PORT_TYPE_OH_OFFLINE_PARSING) ? TRUE:FALSE); + + /* to minimize memory access (groups may belong to the same regsiter, and may + be out of order), we first collect all information into a 256 booleans array, + representing each possible group. */ + memset(&tmpArray, 0, FM_PORT_NUM_OF_CONGESTION_GRPS*sizeof(bool)); + for(i=0;inumOfCongestionGrpsToConsider;i++) + tmpArray[p_CongestionGrps->congestionGrpsToConsider[i]] = TRUE; + + for(i=0;ip_FmPortBmiRegs->ohPortBmiRegs.fmbm_ocgm): + GET_UINT32(p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_cgm[7-i/32]); + + /* set in the register, the bit representing the relevant congestion group. */ + if(tmpArray[i]) + tmpReg &= ~(0x00000001 << (uint32_t)mod); + + if (mod == 31) /* last in a 32 bunch of congestion groups - write the corresponding register */ + { + if(opPort) + WRITE_UINT32(p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_ocgm, tmpReg); + else + WRITE_UINT32(p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_cgm[7-i/32], tmpReg); + } + } + + return E_OK; +} + --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/Port/fm_port.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/Peripherals/FM/Port/fm_port.h @@ -0,0 +1,894 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 fm_port.h + + @Description FM Port internal structures and definitions. +*//***************************************************************************/ +#ifndef __FM_PORT_H +#define __FM_PORT_H + +#include "error_ext.h" +#include "std_ext.h" +#include "fm_port_ext.h" + +#include "fm_common.h" + + +#define __ERR_MODULE__ MODULE_FM_PORT + + +#define MIN_EXT_BUF_SIZE 64 +#define DATA_ALIGNMENT 64 +#define MAX_LIODN_OFFSET 64 + +/**************************************************************************//** + @Description Memory Map defines +*//***************************************************************************/ +#define BMI_PORT_REGS_OFFSET 0 +#define QMI_PORT_REGS_OFFSET 0x400 +#define PRS_PORT_REGS_OFFSET 0x800 + +/**************************************************************************//** + @Description defaults +*//***************************************************************************/ +#define DEFAULT_PORT_deqHighPriority TRUE +#define DEFAULT_PORT_deqType e_FM_PORT_DEQ_TYPE1 +#ifdef FM_QMI_DEQ_OPTIONS_SUPPORT +#define DEFAULT_PORT_deqPrefetchOption e_FM_PORT_DEQ_FULL_PREFETCH +#define DEFAULT_PORT_deqPrefetchOption_HC e_FM_PORT_DEQ_NO_PREFETCH +#endif /* FM_QMI_DEQ_OPTIONS_SUPPORT */ +#define DEFAULT_PORT_deqByteCnt 2000 +#define DEFAULT_PORT_bufferPrefixContent_privDataSize 0 +#define DEFAULT_PORT_bufferPrefixContent_passPrsResult FALSE +#define DEFAULT_PORT_bufferPrefixContent_passTimeStamp FALSE +#define DEFAULT_PORT_bufferPrefixContent_allOtherPCDInfo FALSE +#ifdef DEBUG +#define DEFAULT_PORT_bufferPrefixContent_debugInfo FALSE +#endif /* DEBUG */ +#define DEFAULT_PORT_bufferPrefixContent_dataAlign DATA_ALIGNMENT +#define DEFAULT_PORT_cheksumLastBytesIgnore 0 +#define DEFAULT_PORT_cutBytesFromEnd 4 +#define DEFAULT_PORT_txFifoMinFillLevel 0 +#define DEFAULT_PORT_txFifoDeqPipelineDepth_IM 2 +#define DEFAULT_PORT_txFifoDeqPipelineDepth_1G 2 +#define DEFAULT_PORT_txFifoDeqPipelineDepth_10G 8 +#define DEFAULT_PORT_txFifoLowComfLevel (5*KILOBYTE) +#define DEFAULT_PORT_rxFifoPriElevationLevel BMI_MAX_FIFO_SIZE +#define DEFAULT_PORT_rxFifoThreshold (BMI_MAX_FIFO_SIZE*3/4) +#define DEFAULT_PORT_frmDiscardOverride FALSE +#define DEFAULT_PORT_dmaSwapData e_FM_PORT_DMA_NO_SWP +#define DEFAULT_PORT_dmaIntContextCacheAttr e_FM_PORT_DMA_NO_STASH +#define DEFAULT_PORT_dmaHeaderCacheAttr e_FM_PORT_DMA_NO_STASH +#define DEFAULT_PORT_dmaScatterGatherCacheAttr e_FM_PORT_DMA_NO_STASH +#define DEFAULT_PORT_dmaWriteOptimize TRUE +#define DEFAULT_PORT_forwardIntContextReuse FALSE +#define DEFAULT_PORT_BufMargins_startMargins 32 +#define DEFAULT_PORT_BufMargins_endMargins 0 +#define DEFAULT_PORT_syncReq TRUE +#define DEFAULT_PORT_syncReqForHc FALSE +#define DEFAULT_PORT_color e_FM_PORT_COLOR_GREEN +#define DEFAULT_PORT_errorsToDiscard FM_PORT_FRM_ERR_CLS_DISCARD +#define DEFAULT_dualRateLimitScaleDown e_FM_PORT_DUAL_RATE_LIMITER_NONE +#define DEFAULT_rateLimitBurstSizeHighGranularity FALSE +#define DEFAULT_exception IM_EV_BSY + +/* Host command port MUST NOT be changed to more than 1 !!! */ +#define DEFAULT_PORT_numOfTasks(type) \ + (uint32_t)((((type) == e_FM_PORT_TYPE_RX_10G) || \ + ((type) == e_FM_PORT_TYPE_TX_10G)) ? 16 : \ + ((((type) == e_FM_PORT_TYPE_RX) || \ + ((type) == e_FM_PORT_TYPE_TX) || \ + ((type) == e_FM_PORT_TYPE_OH_OFFLINE_PARSING)) ? 3 : 1)) + +#define DEFAULT_PORT_extraNumOfTasks(type) \ + (uint32_t)((((type) == e_FM_PORT_TYPE_RX_10G) || \ + ((type) == e_FM_PORT_TYPE_TX_10G)) ? 8 : \ + ((((type) == e_FM_PORT_TYPE_RX) || \ + ((type) == e_FM_PORT_TYPE_TX) || \ + ((type) == e_FM_PORT_TYPE_OH_OFFLINE_PARSING)) ? 2 : 0)) + +#define DEFAULT_PORT_numOfOpenDmas(type) \ + (uint32_t)(((type) == e_FM_PORT_TYPE_TX_10G) ? 8 : \ + (((type) == e_FM_PORT_TYPE_RX_10G) ? 4 : 1)) + +#define DEFAULT_PORT_extraNumOfOpenDmas(type) \ + (uint32_t)((((type) == e_FM_PORT_TYPE_RX_10G) || \ + ((type) == e_FM_PORT_TYPE_TX_10G)) ? 8 : \ + ((((type) == e_FM_PORT_TYPE_RX) || \ + ((type) == e_FM_PORT_TYPE_TX) || \ + ((type) == e_FM_PORT_TYPE_OH_OFFLINE_PARSING)) ? 1 : 0)) + +#if defined(CONFIG_FMAN_RESOURCE_ALLOCATION_ALGORITHM) +/* Let LLD to set minimum fifosize, otherwise fifosize settings will not work */ +#define DEFAULT_PORT_sizeOfFifo(type) \ + (uint32_t)(KILOBYTE) +#else +#define DEFAULT_PORT_sizeOfFifo(type) \ + (uint32_t)((((type) == e_FM_PORT_TYPE_RX_10G) || \ + ((type) == e_FM_PORT_TYPE_TX_10G)) ? (16*KILOBYTE) : \ + ((((type) == e_FM_PORT_TYPE_RX) || \ + ((type) == e_FM_PORT_TYPE_TX) || \ + ((type) == e_FM_PORT_TYPE_OH_OFFLINE_PARSING)) ? (4*KILOBYTE) : (1536))) +#endif + +#define DEFAULT_PORT_extraSizeOfFifo(type) \ + (uint32_t)(((type) == e_FM_PORT_TYPE_RX_10G) ? (8*KILOBYTE) : \ + (((type) == e_FM_PORT_TYPE_RX) ? (4*KILOBYTE) : (0))) + +#define DEFAULT_PORT_txBdRingLength 16 +#define DEFAULT_PORT_rxBdRingLength 128 +#define DEFAULT_PORT_ImfwExtStructsMemId 0 +#define DEFAULT_PORT_ImfwExtStructsMemAttr MEMORY_ATTR_CACHEABLE + +#define OH_PIPELINE_DEPTH 2 + +/**************************************************************************//** + @Description Memory Mapped Registers +*//***************************************************************************/ + +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(push,1) +#endif /* defined(__MWERKS__) && ... */ +#define MEM_MAP_START + +#define FM_PORT_MAX_NUM_OF_EXT_POOLS_ALL_INTEGRATIONS 8 +#define FM_PORT_NUM_OF_CONGESTION_GRPS_ALL_INTEGRATIONS 256 + +typedef _Packed struct +{ + volatile uint32_t fmbm_rcfg; /**< Rx Configuration */ + volatile uint32_t fmbm_rst; /**< Rx Status */ + volatile uint32_t fmbm_rda; /**< Rx DMA attributes*/ + volatile uint32_t fmbm_rfp; /**< Rx FIFO Parameters*/ + volatile uint32_t fmbm_rfed; /**< Rx Frame End Data*/ + volatile uint32_t fmbm_ricp; /**< Rx Internal Context Parameters*/ + volatile uint32_t fmbm_rim; /**< Rx Internal Buffer Margins*/ + volatile uint32_t fmbm_rebm; /**< Rx External Buffer Margins*/ + volatile uint32_t fmbm_rfne; /**< Rx Frame Next Engine*/ + volatile uint32_t fmbm_rfca; /**< Rx Frame Command Attributes.*/ + volatile uint32_t fmbm_rfpne; /**< Rx Frame Parser Next Engine*/ + volatile uint32_t fmbm_rpso; /**< Rx Parse Start Offset*/ + volatile uint32_t fmbm_rpp; /**< Rx Policer Profile */ + volatile uint32_t fmbm_rccb; /**< Rx Coarse Classification Base */ + volatile uint32_t fmbm_reth; /**< Rx Excessive Threshold */ + volatile uint32_t reserved1[1]; /**< (0x03C 0x03F) */ + volatile uint32_t fmbm_rprai[FM_PORT_PRS_RESULT_NUM_OF_WORDS]; + /**< Rx Parse Results Array Initialization*/ + volatile uint32_t fmbm_rfqid; /**< Rx Frame Queue ID*/ + volatile uint32_t fmbm_refqid; /**< Rx Error Frame Queue ID*/ + volatile uint32_t fmbm_rfsdm; /**< Rx Frame Status Discard Mask*/ + volatile uint32_t fmbm_rfsem; /**< Rx Frame Status Error Mask*/ + volatile uint32_t fmbm_rfene; /**< Rx Frame Enqueue Next Engine */ + volatile uint32_t reserved2[0x23];/**< (0x074 0x0FF) */ + volatile uint32_t fmbm_ebmpi[FM_PORT_MAX_NUM_OF_EXT_POOLS_ALL_INTEGRATIONS]; + /**< Buffer Manager pool Information-*/ + volatile uint32_t fmbm_acnt[FM_PORT_MAX_NUM_OF_EXT_POOLS_ALL_INTEGRATIONS]; + /**< Allocate Counter-*/ + volatile uint32_t reserved3[8]; + /**< 0x130/0x140 - 0x15F reserved -*/ + volatile uint32_t fmbm_cgm[FM_PORT_NUM_OF_CONGESTION_GRPS_ALL_INTEGRATIONS/32]; + /**< Congestion Group Map*/ + volatile uint32_t fmbm_mpd; /**< BM Pool Depletion */ + volatile uint32_t reserved4[0x1F];/**< (0x184 0x1FF) */ + volatile uint32_t fmbm_rstc; /**< Rx Statistics Counters*/ + volatile uint32_t fmbm_rfrc; /**< Rx Frame Counter*/ + volatile uint32_t fmbm_rfbc; /**< Rx Bad Frames Counter*/ + volatile uint32_t fmbm_rlfc; /**< Rx Large Frames Counter*/ + volatile uint32_t fmbm_rffc; /**< Rx Filter Frames Counter*/ + volatile uint32_t fmbm_rfcd; /**< Rx Frame Discard Counter*/ + volatile uint32_t fmbm_rfldec; /**< Rx Frames List DMA Error Counter*/ + volatile uint32_t fmbm_rodc; /**< Rx Out of Buffers Discard Counter-*/ + volatile uint32_t fmbm_rbdc; /**< Rx Buffers Deallocate Counter-*/ + volatile uint32_t reserved5[0x17];/**< (0x224 0x27F) */ + volatile uint32_t fmbm_rpc; /**< Rx Performance Counters*/ + volatile uint32_t fmbm_rpcp; /**< Rx Performance Count Parameters*/ + volatile uint32_t fmbm_rccn; /**< Rx Cycle Counter*/ + volatile uint32_t fmbm_rtuc; /**< Rx Tasks Utilization Counter*/ + volatile uint32_t fmbm_rrquc; /**< Rx Receive Queue Utilization Counter*/ + volatile uint32_t fmbm_rduc; /**< Rx DMA Utilization Counter*/ + volatile uint32_t fmbm_rfuc; /**< Rx FIFO Utilization Counter*/ + volatile uint32_t fmbm_rpac; /**< Rx Pause Activation Counter*/ + volatile uint32_t reserved6[0x18];/**< (0x2A0 0x2FF) */ + volatile uint32_t fmbm_rdbg; /**< Rx Debug-*/ +} _PackedType t_FmPortRxBmiRegs; + +typedef _Packed struct +{ + volatile uint32_t fmbm_tcfg; /**< Tx Configuration */ + volatile uint32_t fmbm_tst; /**< Tx Status */ + volatile uint32_t fmbm_tda; /**< Tx DMA attributes */ + volatile uint32_t fmbm_tfp; /**< Tx FIFO Parameters */ + volatile uint32_t fmbm_tfed; /**< Tx Frame End Data */ + volatile uint32_t fmbm_ticp; /**< Tx Internal Context Parameters */ + volatile uint32_t fmbm_tfne; /**< Tx Frame Next Engine. */ + volatile uint32_t fmbm_tfca; /**< Tx Frame Command attribute. */ + volatile uint32_t fmbm_tcfqid; /**< Tx Confirmation Frame Queue ID. */ + volatile uint32_t fmbm_tfeqid; /**< Tx Frame Error Queue ID */ + volatile uint32_t fmbm_tfene; /**< Tx Frame Enqueue Next Engine */ + volatile uint32_t fmbm_trlmts; /**< Tx Rate Limiter Scale */ + volatile uint32_t fmbm_trlmt; /**< Tx Rate Limiter */ + volatile uint32_t reserved0[0x73];/**< (0x038-0x200) */ + volatile uint32_t fmbm_tstc; /**< Tx Statistics Counters */ + volatile uint32_t fmbm_tfrc; /**< Tx Frame Counter */ + volatile uint32_t fmbm_tfdc; /**< Tx Frames Discard Counter */ + volatile uint32_t fmbm_tfledc; /**< Tx Frame Length error discard counter */ + volatile uint32_t fmbm_tfufdc; /**< Tx Frame unsupported format discard Counter */ + volatile uint32_t fmbm_tbdc; /**< Tx Buffers Deallocate Counter */ + volatile uint32_t reserved1[0x1A];/**< (0x218-0x280) */ + volatile uint32_t fmbm_tpc; /**< Tx Performance Counters*/ + volatile uint32_t fmbm_tpcp; /**< Tx Performance Count Parameters*/ + volatile uint32_t fmbm_tccn; /**< Tx Cycle Counter*/ + volatile uint32_t fmbm_ttuc; /**< Tx Tasks Utilization Counter*/ + volatile uint32_t fmbm_ttcquc; /**< Tx Transmit Confirm Queue Utilization Counter*/ + volatile uint32_t fmbm_tduc; /**< Tx DMA Utilization Counter*/ + volatile uint32_t fmbm_tfuc; /**< Tx FIFO Utilization Counter*/ +} _PackedType t_FmPortTxBmiRegs; + +typedef _Packed struct +{ + volatile uint32_t fmbm_ocfg; /**< O/H Configuration */ + volatile uint32_t fmbm_ost; /**< O/H Status */ + volatile uint32_t fmbm_oda; /**< O/H DMA attributes */ + volatile uint32_t fmbm_oicp; /**< O/H Internal Context Parameters */ + volatile uint32_t fmbm_ofdne; /**< O/H Frame Dequeue Next Engine */ + volatile uint32_t fmbm_ofne; /**< O/H Frame Next Engine */ + volatile uint32_t fmbm_ofca; /**< O/H Frame Command Attributes. */ + volatile uint32_t fmbm_ofpne; /**< O/H Frame Parser Next Engine */ + volatile uint32_t fmbm_opso; /**< O/H Parse Start Offset */ + volatile uint32_t fmbm_opp; /**< O/H Policer Profile */ + volatile uint32_t fmbm_occb; /**< O/H Coarse Classification base */ + volatile uint32_t fmbm_oim; /**< O/H Internal margins*/ + volatile uint32_t reserved0[4]; /**< (0x030 - 0x03F) */ + volatile uint32_t fmbm_oprai[FM_PORT_PRS_RESULT_NUM_OF_WORDS]; + /**< O/H Parse Results Array Initialization */ + volatile uint32_t fmbm_ofqid; /**< O/H Frame Queue ID */ + volatile uint32_t fmbm_oefqid; /**< O/H Error Frame Queue ID */ + volatile uint32_t fmbm_ofsdm; /**< O/H Frame Status Discard Mask */ + volatile uint32_t fmbm_ofsem; /**< O/H Frame Status Error Mask */ + volatile uint32_t fmbm_ofene; /**< O/H Frame Enqueue Next Engine */ + volatile uint32_t fmbm_orlmts; /**< O/H Rate Limiter Scale */ + volatile uint32_t fmbm_orlmt; /**< O/H Rate Limiter */ + volatile uint32_t reserved0a[0x21]; + /**< 0x07C - 0x0FF Reserved */ + union + { + volatile uint32_t fmbm_oebmpi[FM_PORT_MAX_NUM_OF_OBSERVED_EXT_POOLS]; + /**< Buffer Manager Observed Pool Information */ + volatile uint32_t reserved0b[0x18]; + }; /**< 0x100 - 0x15F Reserved */ + volatile uint32_t fmbm_ocgm; /**< Observed Congestion Group Map */ + volatile uint32_t reserved0c[0x7];/**< 0x164 - 0x17F Reserved */ + volatile uint32_t fmbm_ompd; /**< Observed BMan Pool Depletion */ + volatile uint32_t reserved0d[0x1F]; + /**< 0x184 - 0x1FF Reserved */ + volatile uint32_t fmbm_ostc; /**< O/H Statistics Counters */ + volatile uint32_t fmbm_ofrc; /**< O/H Frame Counter */ + volatile uint32_t fmbm_ofdc; /**< O/H Frames Discard Counter */ + volatile uint32_t fmbm_ofledc; /**< O/H Frames Length Error Discard Counter */ + volatile uint32_t fmbm_ofufdc; /**< O/H Frames Unsupported Format Discard Counter */ + volatile uint32_t fmbm_offc; /**< O/H Filter Frames Counter */ + volatile uint32_t fmbm_ofwdc; /**< - Rx Frames WRED Discard Counter */ + volatile uint32_t fmbm_ofldec; /**< O/H Frames List DMA Error Counter */ + volatile uint32_t fmbm_obdc; /**< O/H Buffers Deallocate Counter */ + volatile uint32_t reserved2[0x17];/**< (0x218 - 0x27F) */ + volatile uint32_t fmbm_opc; /**< O/H Performance Counters */ + volatile uint32_t fmbm_opcp; /**< O/H Performance Count Parameters */ + volatile uint32_t fmbm_occn; /**< O/H Cycle Counter */ + volatile uint32_t fmbm_otuc; /**< O/H Tasks Utilization Counter */ + volatile uint32_t fmbm_oduc; /**< O/H DMA Utilization Counter */ + volatile uint32_t fmbm_ofuc; /**< O/H FIFO Utilization Counter */ +} _PackedType t_FmPortOhBmiRegs; + +typedef _Packed union +{ + t_FmPortRxBmiRegs rxPortBmiRegs; + t_FmPortTxBmiRegs txPortBmiRegs; + t_FmPortOhBmiRegs ohPortBmiRegs; +} _PackedType u_FmPortBmiRegs; + +typedef _Packed struct +{ + volatile uint32_t reserved1[2]; /**< 0xn024 - 0x02B */ + volatile uint32_t fmqm_pndn; /**< PortID n Dequeue NIA Register */ + volatile uint32_t fmqm_pndc; /**< PortID n Dequeue Config Register */ + volatile uint32_t fmqm_pndtfc; /**< PortID n Dequeue Total Frame Counter */ + volatile uint32_t fmqm_pndfdc; /**< PortID n Dequeue FQID from Default Counter */ + volatile uint32_t fmqm_pndcc; /**< PortID n Dequeue Confirm Counter */ +} _PackedType t_FmPortNonRxQmiRegs; + +typedef _Packed struct +{ + volatile uint32_t fmqm_pnc; /**< PortID n Configuration Register */ + volatile uint32_t fmqm_pns; /**< PortID n Status Register */ + volatile uint32_t fmqm_pnts; /**< PortID n Task Status Register */ + volatile uint32_t reserved0[4]; /**< 0xn00C - 0xn01B */ + volatile uint32_t fmqm_pnen; /**< PortID n Enqueue NIA Register */ + volatile uint32_t fmqm_pnetfc; /**< PortID n Enqueue Total Frame Counter */ + t_FmPortNonRxQmiRegs nonRxQmiRegs; /**< Registers for Tx Hc & Op ports */ +} _PackedType t_FmPortQmiRegs; + +typedef _Packed struct +{ + _Packed struct + { + volatile uint32_t softSeqAttach; /**< Soft Sequence Attachment */ + volatile uint32_t lcv; /**< Line-up Enable Confirmation Mask */ + } _PackedType hdrs[FM_PCD_PRS_NUM_OF_HDRS]; + volatile uint8_t reserved0[0x378]; + volatile uint32_t pcac; /**< Parse Internal Memory Configuration Access Control Register */ + volatile uint32_t pctpid; /**< Parse Internal Memory Configured TPID Register */ +} _PackedType t_FmPortPrsRegs; + +/**************************************************************************//* + @Description Basic buffer descriptor (BD) structure +*//***************************************************************************/ +typedef _Packed struct +{ + volatile uint16_t status; + volatile uint16_t length; + volatile uint8_t reserved0[0x6]; + volatile uint8_t reserved1[0x1]; + volatile t_FmPhysAddr buff; +} _PackedType t_FmImBd; + +typedef _Packed struct +{ + volatile uint16_t gen; /**< tbd */ + volatile uint8_t reserved0[0x1]; + volatile t_FmPhysAddr bdRingBase; /**< tbd */ + volatile uint16_t bdRingSize; /**< tbd */ + volatile uint16_t offsetIn; /**< tbd */ + volatile uint16_t offsetOut; /**< tbd */ + volatile uint8_t reserved1[0x12]; /**< 0x0e - 0x1f */ +} _PackedType t_FmPortImQd; + +typedef _Packed struct +{ + volatile uint32_t mode; /**< Mode register */ + volatile uint32_t rxQdPtr; /**< tbd */ + volatile uint32_t txQdPtr; /**< tbd */ + volatile uint16_t mrblr; /**< tbd */ + volatile uint16_t rxQdBsyCnt; /**< tbd */ + volatile uint8_t reserved0[0x10]; /**< 0x10 - 0x1f */ + t_FmPortImQd rxQd; + t_FmPortImQd txQd; + volatile uint8_t reserved1[0xa0]; /**< 0x60 - 0xff */ +} _PackedType t_FmPortImPram; + +#define MEM_MAP_END +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(pop) +#endif /* defined(__MWERKS__) && ... */ + + +/**************************************************************************//** + @Description Registers bit fields +*//***************************************************************************/ + +/**************************************************************************//** + @Description BMI defines +*//***************************************************************************/ +#define BMI_PORT_CFG_EN 0x80000000 +#define BMI_PORT_CFG_EN_MACSEC 0x00800000 +#define BMI_PORT_CFG_FDOVR 0x02000000 +#define BMI_PORT_CFG_IM 0x01000000 +#define BMI_PORT_STATUS_BSY 0x80000000 +#define BMI_COUNTERS_EN 0x80000000 +#define BMI_DMA_ATTR_WRITE_OPTIMIZE 0x00100000 +#define BMI_PORT_RFNE_FRWD_DCL4C 0x10000000 +#define BMI_PORT_RFNE_FRWD_RPD 0x40000000 +#define BMI_RFNE_FDCS_MASK 0xFF000000 + +#define BMI_CMD_MR_LEAC 0x00200000 +#define BMI_CMD_MR_SLEAC 0x00100000 +#define BMI_CMD_MR_MA 0x00080000 +#define BMI_CMD_MR_DEAS 0x00040000 +#define BMI_CMD_TX_MR_DEF (0) +#define BMI_CMD_RX_MR_DEF (BMI_CMD_MR_LEAC | \ + BMI_CMD_MR_SLEAC | \ + BMI_CMD_MR_MA | \ + BMI_CMD_MR_DEAS) +#define BMI_CMD_ATTR_ORDER 0x80000000 +#define BMI_CMD_ATTR_SYNC 0x02000000 +#define BMI_CMD_ATTR_MACCMD_MASK 0x0000ff00 +#define BMI_CMD_ATTR_MACCMD_OVERRIDE 0x00008000 +#define BMI_CMD_ATTR_MACCMD_SECURED 0x00001000 +#define BMI_CMD_ATTR_MACCMD_SC_MASK 0x00000f00 + +#define BMI_EXT_BUF_POOL_VALID 0x80000000 +#define BMI_EXT_BUF_POOL_EN_COUNTER 0x40000000 +#define BMI_EXT_BUF_POOL_BACKUP 0x20000000 +#define BMI_EXT_BUF_POOL_ID_MASK 0x003F0000 +#define BMI_STATUS_RX_MASK_UNUSED (uint32_t)(~(FM_PORT_FRM_ERR_DMA | \ + FM_PORT_FRM_ERR_PHYSICAL | \ + FM_PORT_FRM_ERR_SIZE | \ + FM_PORT_FRM_ERR_CLS_DISCARD | \ + FM_PORT_FRM_ERR_EXTRACTION | \ + FM_PORT_FRM_ERR_NO_SCHEME | \ + FM_PORT_FRM_ERR_COLOR_RED | \ + FM_PORT_FRM_ERR_COLOR_YELLOW | \ + FM_PORT_FRM_ERR_ILL_PLCR | \ + FM_PORT_FRM_ERR_PLCR_FRAME_LEN | \ + FM_PORT_FRM_ERR_PRS_TIMEOUT | \ + FM_PORT_FRM_ERR_PRS_ILL_INSTRUCT | \ + FM_PORT_FRM_ERR_BLOCK_LIMIT_EXCEEDED | \ + FM_PORT_FRM_ERR_PRS_HDR_ERR | \ + FM_PORT_FRM_ERR_PROCESS_TIMEOUT | \ + FM_PORT_FRM_ERR_KEYSIZE_OVERFLOW)) + +#define BMI_STATUS_OP_MASK_UNUSED (uint32_t)(BMI_STATUS_RX_MASK_UNUSED & \ + ~(FM_PORT_FRM_ERR_LENGTH | \ + FM_PORT_FRM_ERR_UNSUPPORTED_FORMAT)) + +#define BMI_RATE_LIMIT_EN 0x80000000 +#define BMI_RATE_LIMIT_BURST_SIZE_GRAN 0x80000000 +#define BMI_RATE_LIMIT_SCALE_BY_2 0x00000001 +#define BMI_RATE_LIMIT_SCALE_BY_4 0x00000002 +#define BMI_RATE_LIMIT_SCALE_BY_8 0x00000003 + +#define BMI_RX_FIFO_THRESHOLD_BC 0x80000000 + +#define BMI_PRS_RESULT_HIGH 0x00000000 +#define BMI_PRS_RESULT_LOW 0xFFFFFFFF + +#define RX_ERRS_TO_ENQ (FM_PORT_FRM_ERR_DMA | \ + FM_PORT_FRM_ERR_PHYSICAL | \ + FM_PORT_FRM_ERR_SIZE | \ + FM_PORT_FRM_ERR_EXTRACTION | \ + FM_PORT_FRM_ERR_NO_SCHEME | \ + FM_PORT_FRM_ERR_ILL_PLCR | \ + FM_PORT_FRM_ERR_PLCR_FRAME_LEN | \ + FM_PORT_FRM_ERR_PRS_TIMEOUT | \ + FM_PORT_FRM_ERR_PRS_ILL_INSTRUCT | \ + FM_PORT_FRM_ERR_BLOCK_LIMIT_EXCEEDED | \ + FM_PORT_FRM_ERR_PRS_HDR_ERR | \ + FM_PORT_FRM_ERR_PROCESS_TIMEOUT | \ + FM_PORT_FRM_ERR_KEYSIZE_OVERFLOW) + +#ifdef FM_CAPWAP_SUPPORT +#define OP_ERRS_TO_ENQ (RX_ERRS_TO_ENQ | \ + FM_PORT_FRM_ERR_LENGTH | \ + FM_PORT_FRM_ERR_NON_FM | \ + FM_PORT_FRM_ERR_UNSUPPORTED_FORMAT) + +#else +#define OP_ERRS_TO_ENQ (RX_ERRS_TO_ENQ | \ + FM_PORT_FRM_ERR_LENGTH | \ + FM_PORT_FRM_ERR_UNSUPPORTED_FORMAT) +#endif /* FM_CAPWAP_SUPPORT */ + +/* shifts */ +#define BMI_PORT_CFG_MS_SEL_SHIFT 16 +#define BMI_DMA_ATTR_SWP_SHIFT 30 +#define BMI_DMA_ATTR_IC_CACHE_SHIFT 28 +#define BMI_DMA_ATTR_HDR_CACHE_SHIFT 26 +#define BMI_DMA_ATTR_SG_CACHE_SHIFT 24 + +#define BMI_IM_FOF_SHIFT 28 +#define BMI_PR_PORTID_SHIFT 24 + +#define BMI_RX_FIFO_PRI_ELEVATION_SHIFT 16 +#define BMI_RX_FIFO_THRESHOLD_SHIFT 0 + +#define BMI_RX_FRAME_END_CS_IGNORE_SHIFT 24 +#define BMI_RX_FRAME_END_CUT_SHIFT 16 + +#define BMI_IC_TO_EXT_SHIFT 16 +#define BMI_IC_FROM_INT_SHIFT 8 +#define BMI_IC_SIZE_SHIFT 0 + +#define BMI_INT_BUF_MARG_SHIFT 28 + +#define BMI_EXT_BUF_MARG_START_SHIFT 16 +#define BMI_EXT_BUF_MARG_END_SHIFT 0 + +#define BMI_CMD_ATTR_COLOR_SHIFT 26 +#define BMI_CMD_ATTR_COM_MODE_SHIFT 16 +#define BMI_CMD_ATTR_MACCMD_SHIFT 8 +#define BMI_CMD_ATTR_MACCMD_OVERRIDE_SHIFT 15 +#define BMI_CMD_ATTR_MACCMD_SECURED_SHIFT 12 +#define BMI_CMD_ATTR_MACCMD_SC_SHIFT 8 + +#define BMI_POOL_DEP_NUM_OF_POOLS_SHIFT 16 +#define BMI_POOL_DEP_NUM_OF_POOLS_VECTOR_SHIFT 24 + +#define BMI_EXT_BUF_POOL_ID_SHIFT 16 + +#define BMI_TX_FIFO_MIN_FILL_SHIFT 16 +#define BMI_TX_FIFO_PIPELINE_DEPTH_SHIFT 12 +#define BMI_TX_LOW_COMF_SHIFT 0 + +#define BMI_TX_FRAME_END_CS_IGNORE_SHIFT 24 + +#define BMI_PERFORMANCE_TASK_COMP_SHIFT 24 +#define BMI_PERFORMANCE_PORT_COMP_SHIFT 16 +#define BMI_PERFORMANCE_DMA_COMP_SHIFT 12 +#define BMI_PERFORMANCE_FIFO_COMP_SHIFT 0 + +#define BMI_MAX_BURST_SHIFT 16 +#define BMI_COUNT_RATE_UNIT_SHIFT 16 + +/* sizes */ +#define FRAME_END_DATA_SIZE 16 +#define OFFSET_UNITS 16 +#define FRAME_OFFSET_UNITS 16 +#define MAX_EXT_OFFSET 496 +#define MAX_EXT_BUFFER_OFFSET 511 +#define MAX_INT_OFFSET 240 +#define MIN_TX_INT_OFFSET 16 +#define MAX_IC_SIZE 256 +#define MAX_FRAME_OFFSET 64 +#define MAX_FIFO_PIPELINE_DEPTH 8 +#define MAX_PERFORMANCE_TASK_COMP 64 +#define MAX_PERFORMANCE_TX_QUEUE_COMP 8 +#define MAX_PERFORMANCE_RX_QUEUE_COMP 64 +#define MAX_PERFORMANCE_DMA_COMP 16 +#define MAX_NUM_OF_TASKS 64 +#define MAX_NUM_OF_EXTRA_TASKS 8 +#define MAX_NUM_OF_DMAS 16 +#define MAX_NUM_OF_EXTRA_DMAS 8 +#define MAX_BURST_SIZE 1024 +#define FRAG_EXTRA_SPACE 32 + +/**************************************************************************//** + @Description QMI defines +*//***************************************************************************/ +/* masks */ +#define QMI_PORT_CFG_EN 0x80000000 +#define QMI_PORT_CFG_EN_COUNTERS 0x10000000 +#define QMI_PORT_STATUS_DEQ_TNUM_BSY 0x80000000 +#define QMI_PORT_STATUS_DEQ_FD_BSY 0x20000000 + +#define QMI_DEQ_CFG_PREFETCH_NO_TNUM 0x02000000 +#define QMI_DEQ_CFG_PREFETCH_WAITING_TNUM 0 +#define QMI_DEQ_CFG_PREFETCH_1_FRAME 0 +#define QMI_DEQ_CFG_PREFETCH_3_FRAMES 0x01000000 + +#define QMI_DEQ_CFG_PRI 0x80000000 +#define QMI_DEQ_CFG_TYPE1 0x10000000 +#define QMI_DEQ_CFG_TYPE2 0x20000000 +#define QMI_DEQ_CFG_TYPE3 0x30000000 + +#define QMI_DEQ_CFG_SUBPORTAL_MASK 0x1f +#define QMI_DEQ_CFG_SUBPORTAL_SHIFT 20 + +/**************************************************************************//** + @Description PARSER defines +*//***************************************************************************/ +/* masks */ +#define PRS_HDR_ERROR_DIS 0x00000800 +#define PRS_HDR_SW_PRS_EN 0x00000400 +#define PRS_CP_OFFSET_MASK 0x0000000F +#define PRS_TPID1_MASK 0xFFFF0000 +#define PRS_TPID2_MASK 0x0000FFFF +#define PRS_TPID_DFLT 0x91009100 + +#define PRS_HDR_MPLS_LBL_INTER_EN 0x00200000 +#define PRS_HDR_IPV6_ROUTE_HDR_DIS 0x00008000 +#define PRS_HDR_PPPOE_MTU_CHECK_EN 0x80000000 +#define PRS_HDR_UDP_PAD_REMOVAL 0x80000000 +#define PRS_HDR_TCP_PAD_REMOVAL 0x80000000 +#define PRS_CAC_STOP 0x00000001 +#define PRS_CAC_ACTIVE 0x00000100 + +/* shifts */ +#define PRS_PCTPID_SHIFT 16 +#define PRS_HDR_MPLS_NEXT_HDR_SHIFT 22 +#define PRS_HDR_ETH_BC_SHIFT 28 +#define PRS_HDR_ETH_MC_SHIFT 24 +#define PRS_HDR_VLAN_STACKED_SHIFT 16 +#define PRS_HDR_MPLS_STACKED_SHIFT 16 +#define PRS_HDR_IPV4_1_BC_SHIFT 28 +#define PRS_HDR_IPV4_1_MC_SHIFT 24 +#define PRS_HDR_IPV4_2_UC_SHIFT 20 +#define PRS_HDR_IPV4_2_MC_BC_SHIFT 16 +#define PRS_HDR_IPV6_1_MC_SHIFT 24 +#define PRS_HDR_IPV6_2_UC_SHIFT 20 +#define PRS_HDR_IPV6_2_MC_SHIFT 16 + +#define PRS_HDR_ETH_BC_MASK 0x0fffffff +#define PRS_HDR_ETH_MC_MASK 0xf0ffffff +#define PRS_HDR_VLAN_STACKED_MASK 0xfff0ffff +#define PRS_HDR_MPLS_STACKED_MASK 0xfff0ffff +#define PRS_HDR_IPV4_1_BC_MASK 0x0fffffff +#define PRS_HDR_IPV4_1_MC_MASK 0xf0ffffff +#define PRS_HDR_IPV4_2_UC_MASK 0xff0fffff +#define PRS_HDR_IPV4_2_MC_BC_MASK 0xfff0ffff +#define PRS_HDR_IPV6_1_MC_MASK 0xf0ffffff +#define PRS_HDR_IPV6_2_UC_MASK 0xff0fffff +#define PRS_HDR_IPV6_2_MC_MASK 0xfff0ffff + +/* others */ +#define PRS_HDR_ENTRY_SIZE 8 +#define DEFAULT_CLS_PLAN_VECTOR 0xFFFFFFFF + +#define IPSEC_SW_PATCH_START 0x20 +#define SCTP_SW_PATCH_START 0x4D +#define DCCP_SW_PATCH_START 0x41 + +#define IP_FRAG_SW_PATCH_IPv4 0x300 +#define IP_FRAG_SW_PATCH_IPv6_0 0x320 +#define IP_FRAG_SW_PATCH_IPv6_1 0x372 + +/**************************************************************************//** + @Description IM defines +*//***************************************************************************/ +#define BD_R_E 0x80000000 +#define BD_L 0x08000000 + +#define BD_RX_CRE 0x00080000 +#define BD_RX_FTL 0x00040000 +#define BD_RX_FTS 0x00020000 +#define BD_RX_OV 0x00010000 + +#define BD_RX_ERRORS (BD_RX_CRE | BD_RX_FTL | BD_RX_FTS | BD_RX_OV) +#define BD_ERROR_PASS_FRAME BD_RX_ERRORS + +#define FM_IM_SIZEOF_BD sizeof(t_FmImBd) + +#define BD_STATUS_MASK 0xffff0000 +#define BD_LENGTH_MASK 0x0000ffff + +#define BD_STATUS_AND_LENGTH_SET(bd, val) WRITE_UINT32(*(volatile uint32_t*)(bd), (val)) + +#define BD_STATUS_AND_LENGTH(bd) GET_UINT32(*(volatile uint32_t*)(bd)) + +#define BD_GET(id) &p_FmPort->im.p_BdRing[id] + +#define IM_ILEGAL_BD_ID 0xffff + +/* others */ +#define IM_PRAM_ALIGN 0x100 + +/* masks */ +#define IM_MODE_GBL 0x20000000 +#define IM_MODE_BO_MASK 0x18000000 +#define IM_MODE_BO_SHIFT 3 +#define IM_MODE_GRC_STP 0x00800000 + +#define IM_MODE_SET_BO(val) (uint32_t)((val << (31-IM_MODE_BO_SHIFT)) & IM_MODE_BO_MASK) + +#define IM_RXQD_BSYINTM 0x0008 +#define IM_RXQD_RXFINTM 0x0010 +#define IM_RXQD_FPMEVT_SEL_MASK 0x0003 + +#define IM_EV_BSY 0x40000000 +#define IM_EV_RX 0x80000000 + +typedef struct { + t_Handle h_FmMuram; + t_FmPortImPram *p_FmPortImPram; + uint8_t fwExtStructsMemId; + uint32_t fwExtStructsMemAttr; + uint16_t bdRingSize; + t_FmImBd *p_BdRing; + t_Handle *p_BdShadow; + uint16_t currBdId; + uint16_t firstBdOfFrameId; + + /* Rx port parameters */ + uint8_t dataMemId; /**< Memory partition ID for data buffers */ + uint32_t dataMemAttributes; /**< Memory attributes for data buffers */ + t_BufferPoolInfo rxPool; + uint16_t mrblr; + uint16_t rxFrameAccumLength; + t_FmPortImRxStoreCallback *f_RxStore; + + /* Tx port parameters */ + uint32_t txFirstBdStatus; + t_FmPortImTxConfCallback *f_TxConf; +} t_FmMacIm; + +/**************************************************************************//** + @Description structure for defining internal context copying +*//***************************************************************************/ +typedef struct +{ + uint16_t extBufOffset; /**< Offset in External buffer to which internal + context is copied to (Rx) or taken from (Tx, Op). */ + uint8_t intContextOffset; /**< Offset within internal context to copy from + (Rx) or to copy to (Tx, Op). */ + uint16_t size; /**< Internal offset size to be copied */ +} t_FmPortIntContextDataCopy; + +/**************************************************************************//** + @Description struct for defining external buffer margins +*//***************************************************************************/ +typedef struct { + uint16_t startMargins; /**< Number of bytes to be left at the beginning + of the external buffer (must be divisible by 16) */ + uint16_t endMargins; /**< number of bytes to be left at the end + of the external buffer(must be divisible by 16) */ +} t_FmPortBufMargins; + +typedef struct { + uint32_t dataOffset; + uint32_t prsResultOffset; + uint32_t timeStampOffset; + uint32_t hashResultOffset; + uint32_t pcdInfoOffset; + uint32_t manipOffset; +#ifdef DEBUG + uint32_t debugOffset; +#endif /* DEBUG */ +} t_FmPortBufferOffsets; + +typedef struct { + uint32_t dfltFqid; + uint32_t confFqid; + uint32_t errFqid; + uintptr_t baseAddr; + uint8_t deqSubPortal; + bool deqHighPriority; + e_FmPortDeqType deqType; +#ifdef FM_QMI_DEQ_OPTIONS_SUPPORT + e_FmPortDeqPrefetchOption deqPrefetchOption; +#endif /* FM_QMI_DEQ_OPTIONS_SUPPORT */ + uint16_t deqByteCnt; + uint8_t cheksumLastBytesIgnore; + uint8_t cutBytesFromEnd; + t_FmPortBufPoolDepletion bufPoolDepletion; + uint8_t pipelineDepth; + uint16_t fifoLowComfLevel; + bool frmDiscardOverride; + bool enRateLimit; + t_FmPortRateLimit rateLimit; + e_FmPortDualRateLimiterScaleDown rateLimitDivider; + bool enBufPoolDepletion; + uint16_t liodnOffset; + uint16_t liodnBase; + t_FmPortExtPools extBufPools; + e_FmPortDmaSwap dmaSwapData; + e_FmPortDmaCache dmaIntContextCacheAttr; + e_FmPortDmaCache dmaHeaderCacheAttr; + e_FmPortDmaCache dmaScatterGatherCacheAttr; + bool dmaReadOptimize; + bool dmaWriteOptimize; + uint32_t txFifoMinFillLevel; + uint32_t txFifoLowComfLevel; + uint32_t rxFifoPriElevationLevel; + uint32_t rxFifoThreshold; + t_FmPortBufMargins bufMargins; + t_FmPortIntContextDataCopy intContext; + bool syncReq; + e_FmPortColor color; + fmPortFrameErrSelect_t errorsToDiscard; + fmPortFrameErrSelect_t errorsToEnq; + uint64_t fmMuramPhysBaseAddr; + bool forwardReuseIntContext; + t_FmPortBufferPrefixContent bufferPrefixContent; + uint8_t internalBufferOffset; + t_FmPortBackupBmPools *p_BackupBmPools; + bool dontReleaseBuf; +} t_FmPortDriverParam; + +typedef struct { + t_Handle h_Fm; + t_Handle h_FmPcd; + uint8_t portId; + e_FmPortType portType; + int enabled; + char name[MODULE_NAME_SIZE]; + uint8_t hardwarePortId; + uint16_t fmClkFreq; + t_FmPortQmiRegs *p_FmPortQmiRegs; + u_FmPortBmiRegs *p_FmPortBmiRegs; + t_FmPortPrsRegs *p_FmPortPrsRegs; + fmPcdEngines_t pcdEngines; + uint32_t savedBmiNia; + uint8_t netEnvId; + uint32_t optArray[FM_PCD_MAX_NUM_OF_OPTIONS(FM_PCD_MAX_NUM_OF_CLS_PLANS)]; + uint32_t lcvs[FM_PCD_PRS_NUM_OF_HDRS]; + uint8_t privateInfo; + uint32_t schemesPerPortVector; + bool useClsPlan; + uint8_t clsPlanGrpId; + t_Handle ccTreeId; + t_Handle completeArg; + void (*f_Complete)(t_Handle arg); + t_FmPortBufferOffsets bufferOffsets; + /* Independent-Mode parameters support */ + bool imEn; + t_FmMacIm im; + uint8_t txFifoDeqPipelineDepth; + volatile bool lock; + t_Handle h_Spinlock; + t_FmPortExceptionCallback *f_Exception; + t_Handle h_App; + uint8_t internalBufferOffset; + uint8_t fmanCtrlEventId; + uint32_t exceptions; + bool polling; + uint8_t numOfTasks; + t_FmPortExtPools extBufPools; + uint32_t requiredAction; + uint32_t savedQmiPnen; + uint32_t savedNonRxQmiRegsPndn; + int savedPrsStartOffset; + t_FmPortRsrc openDmas; + t_FmPortRsrc tasks; + t_FmPortRsrc fifoBufs; + t_FmInterModulePortRxPoolsParams rxPoolsParams; + t_FmPortDriverParam *p_FmPortDriverParam; +} t_FmPort; + +#define CHECK_FM_CTL_AC_POST_FETCH_PCD(savedBmiNia) \ + ((((savedBmiNia) & NIA_ENG_MASK) == NIA_ENG_FM_CTL) && \ + ((((savedBmiNia) & NIA_FM_CTL_AC_MASK) == NIA_FM_CTL_AC_POST_FETCH_PCD) || \ + (((savedBmiNia) & NIA_FM_CTL_AC_MASK) == NIA_FM_CTL_AC_POST_FETCH_PCD_UDP_LEN))) + +void FmPortConfigIM (t_FmPort *p_FmPort, t_FmPortParams *p_FmPortParams); +t_Error FmPortImCheckInitParameters(t_FmPort *p_FmPort); + +t_Error FmPortImInit(t_FmPort *p_FmPort); +void FmPortImFree(t_FmPort *p_FmPort); + +t_Error FmPortImEnable (t_FmPort *p_FmPort); +t_Error FmPortImDisable (t_FmPort *p_FmPort); +t_Error FmPortImRx (t_FmPort *p_FmPort); + +void FmPortSetMacsecLcv(t_Handle h_FmPort); +void FmPortSetMacsecCmd(t_Handle h_FmPort, uint8_t dfltSci); + + +static __inline__ uint8_t * BdBufferGet (t_PhysToVirt *f_PhysToVirt, t_FmImBd *p_Bd) +{ + uint64_t physAddr = (uint64_t)((uint64_t)GET_UINT8(p_Bd->buff.high) << 32); + physAddr |= GET_UINT32(p_Bd->buff.low); + + return (uint8_t *)f_PhysToVirt((physAddress_t)(physAddr)); +} + +static __inline__ void SET_ADDR(volatile t_FmPhysAddr *fmPhysAddr, uint64_t value) +{ + WRITE_UINT8(fmPhysAddr->high,(uint8_t)((value & 0x000000ff00000000LL) >> 32)); + WRITE_UINT32(fmPhysAddr->low,(uint32_t)value); +} + +static __inline__ void BdBufferSet(t_VirtToPhys *f_VirtToPhys, t_FmImBd *p_Bd, uint8_t *p_Buffer) +{ + uint64_t physAddr = (uint64_t)(f_VirtToPhys(p_Buffer)); + SET_ADDR(&p_Bd->buff, physAddr); +} + +static __inline__ uint16_t GetNextBdId(t_FmPort *p_FmPort, uint16_t id) +{ + if (id < p_FmPort->im.bdRingSize-1) + return (uint16_t)(id+1); + else + return 0; +} + + +#endif /* __FM_PORT_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/Port/fm_port_im.c +++ linux-3.13.0/drivers/net/dpa/NetCommSw/Peripherals/FM/Port/fm_port_im.c @@ -0,0 +1,789 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 fm_port_im.c + + @Description FM Port Independent-Mode ... +*//***************************************************************************/ +#include "std_ext.h" +#include "string_ext.h" +#include "error_ext.h" +#include "fm_muram_ext.h" + +#include "fm_port.h" + + +#define TX_CONF_STATUS_UNSENT 0x1 + +#ifdef CORE_8BIT_ACCESS_ERRATA +#undef WRITE_UINT16 +#undef GET_UINT16 + +#define WRITE_UINT16(addr, val) \ + do{ \ + if((int)&(addr) % 4) \ + WRITE_UINT32(*(uint32_t*)(uint32_t)((uint32_t)&addr & ~0x3L), \ + ((GET_UINT32(*(uint32_t*)(uint32_t)((uint32_t)&addr & ~0x3L)) & 0xffff0000) | (uint32_t)val)); \ + else \ + WRITE_UINT32(*(uint32_t*)&addr, \ + ((GET_UINT32(*(uint32_t*)&addr) & 0x0000ffff) | (uint32_t)val<<16)); \ + }while(0); + +#define GET_UINT16(addr) (((uint32_t)&addr%4) ? \ + ((uint16_t)GET_UINT32(*(uint32_t*)(uint32_t)((uint32_t)&addr & ~0x3L))): \ + ((uint16_t)(GET_UINT32(*(uint32_t*)(uint32_t)&addr) >> 16))) +#endif /* CORE_8BIT_ACCESS_ERRATA */ + + +typedef enum e_TxConfType +{ + e_TX_CONF_TYPE_CHECK = 0 /**< check if all the buffers were touched by the muxator, no confirmation callback */ + ,e_TX_CONF_TYPE_CALLBACK = 1 /**< confirm to user all the available sent buffers */ + ,e_TX_CONF_TYPE_FLUSH = 3 /**< confirm all buffers plus the unsent one with an appropriate status */ +} e_TxConfType; + + +static void ImException(t_Handle h_FmPort, uint32_t event) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + ASSERT_COND(((event & IM_EV_RX) && FmIsMaster(p_FmPort->h_Fm)) || + !FmIsMaster(p_FmPort->h_Fm)); + + if (event & IM_EV_RX) + FmPortImRx(p_FmPort); + if ((event & IM_EV_BSY) && p_FmPort->f_Exception) + p_FmPort->f_Exception(p_FmPort->h_App, e_FM_PORT_EXCEPTION_IM_BUSY); +} + + +static t_Error TxConf(t_FmPort *p_FmPort, e_TxConfType confType) +{ + t_Error retVal = E_BUSY; + uint32_t bdStatus; + uint16_t savedStartBdId, confBdId; + + ASSERT_COND(p_FmPort); + + /* + if (confType==e_TX_CONF_TYPE_CHECK) + return (WfqEntryIsQueueEmpty(p_FmPort->im.h_WfqEntry) ? E_OK : E_BUSY); + */ + + confBdId = savedStartBdId = p_FmPort->im.currBdId; + bdStatus = BD_STATUS_AND_LENGTH(BD_GET(confBdId)); + + /* If R bit is set, we don't enter, or we break. + we run till we get to R, or complete the loop */ + while ((!(bdStatus & BD_R_E) || (confType == e_TX_CONF_TYPE_FLUSH)) && (retVal != E_OK)) + { + if (confType & e_TX_CONF_TYPE_CALLBACK) /* if it is confirmation with user callbacks */ + BD_STATUS_AND_LENGTH_SET(BD_GET(confBdId), 0); + + /* case 1: R bit is 0 and Length is set -> confirm! */ + if ((confType & e_TX_CONF_TYPE_CALLBACK) && (bdStatus & BD_LENGTH_MASK)) + { + if (p_FmPort->im.f_TxConf) + { + if ((confType == e_TX_CONF_TYPE_FLUSH) && (bdStatus & BD_R_E)) + p_FmPort->im.f_TxConf(p_FmPort->h_App, + BdBufferGet(XX_PhysToVirt, BD_GET(confBdId)), + TX_CONF_STATUS_UNSENT, + p_FmPort->im.p_BdShadow[confBdId]); + else + p_FmPort->im.f_TxConf(p_FmPort->h_App, + BdBufferGet(XX_PhysToVirt, BD_GET(confBdId)), + 0, + p_FmPort->im.p_BdShadow[confBdId]); + } + } + /* case 2: R bit is 0 and Length is 0 -> not used yet, nop! */ + + confBdId = GetNextBdId(p_FmPort, confBdId); + if (confBdId == savedStartBdId) + retVal = E_OK; + bdStatus = BD_STATUS_AND_LENGTH(BD_GET(confBdId)); + } + + return retVal; +} + +t_Error FmPortImEnable(t_FmPort *p_FmPort) +{ + uint32_t tmpReg = GET_UINT32(p_FmPort->im.p_FmPortImPram->mode); + WRITE_UINT32(p_FmPort->im.p_FmPortImPram->mode, (uint32_t)(tmpReg & ~IM_MODE_GRC_STP)); + return E_OK; +} + +t_Error FmPortImDisable(t_FmPort *p_FmPort) +{ + uint32_t tmpReg = GET_UINT32(p_FmPort->im.p_FmPortImPram->mode); + WRITE_UINT32(p_FmPort->im.p_FmPortImPram->mode, (uint32_t)(tmpReg | IM_MODE_GRC_STP)); + return E_OK; +} + +t_Error FmPortImRx(t_FmPort *p_FmPort) +{ + t_Handle h_CurrUserPriv, h_NewUserPriv; + uint32_t bdStatus; + volatile uint8_t buffPos; + uint16_t length; + uint16_t errors/*, reportErrors*/; + uint8_t *p_CurData, *p_Data; + uint32_t flags; + + ASSERT_COND(p_FmPort); + + flags = XX_LockIntrSpinlock(p_FmPort->h_Spinlock); + if (p_FmPort->lock) + { + XX_UnlockIntrSpinlock(p_FmPort->h_Spinlock, flags); + return E_OK; + } + p_FmPort->lock = TRUE; + XX_UnlockIntrSpinlock(p_FmPort->h_Spinlock, flags); + + bdStatus = BD_STATUS_AND_LENGTH(BD_GET(p_FmPort->im.currBdId)); + + while (!(bdStatus & BD_R_E)) /* while there is data in the Rx BD */ + { + if ((p_Data = p_FmPort->im.rxPool.f_GetBuf(p_FmPort->im.rxPool.h_BufferPool, &h_NewUserPriv)) == NULL) + { + p_FmPort->lock = FALSE; + RETURN_ERROR(MAJOR, E_NOT_AVAILABLE, ("Data buffer")); + } + + if (p_FmPort->im.firstBdOfFrameId == IM_ILEGAL_BD_ID) + p_FmPort->im.firstBdOfFrameId = p_FmPort->im.currBdId; + + errors = 0; + p_CurData = BdBufferGet(p_FmPort->im.rxPool.f_PhysToVirt, BD_GET(p_FmPort->im.currBdId)); + h_CurrUserPriv = p_FmPort->im.p_BdShadow[p_FmPort->im.currBdId]; + length = (uint16_t)((bdStatus & BD_L) ? + ((bdStatus & BD_LENGTH_MASK) - p_FmPort->im.rxFrameAccumLength): + (bdStatus & BD_LENGTH_MASK)); + p_FmPort->im.rxFrameAccumLength += length; + + /* determine whether buffer is first, last, first and last (single */ + /* buffer frame) or middle (not first and not last) */ + buffPos = (uint8_t)((p_FmPort->im.currBdId == p_FmPort->im.firstBdOfFrameId) ? + ((bdStatus & BD_L) ? SINGLE_BUF : FIRST_BUF) : + ((bdStatus & BD_L) ? LAST_BUF : MIDDLE_BUF)); + + if (bdStatus & BD_L) + { + p_FmPort->im.rxFrameAccumLength = 0; + p_FmPort->im.firstBdOfFrameId = IM_ILEGAL_BD_ID; + } + + BdBufferSet(p_FmPort->im.rxPool.f_VirtToPhys, BD_GET(p_FmPort->im.currBdId), p_Data); + + BD_STATUS_AND_LENGTH_SET(BD_GET(p_FmPort->im.currBdId), BD_R_E); + + errors = (uint16_t)((bdStatus & BD_RX_ERRORS) >> 16); + p_FmPort->im.p_BdShadow[p_FmPort->im.currBdId] = h_NewUserPriv; + + p_FmPort->im.currBdId = GetNextBdId(p_FmPort, p_FmPort->im.currBdId); + WRITE_UINT16(p_FmPort->im.p_FmPortImPram->rxQd.offsetOut, (uint16_t)(p_FmPort->im.currBdId<<4)); + /* Pass the buffer if one of the conditions is true: + - There are no errors + - This is a part of a larger frame ( the application has already received some buffers ) + - There is an error, but it was defined to be passed anyway. */ + if ((buffPos != SINGLE_BUF) || !errors || (errors & (uint16_t)(BD_ERROR_PASS_FRAME>>16))) + { + if (p_FmPort->im.f_RxStore(p_FmPort->h_App, + p_CurData, + length, + errors, + buffPos, + h_CurrUserPriv) == e_RX_STORE_RESPONSE_PAUSE) + break; + } + else if (p_FmPort->im.rxPool.f_PutBuf(p_FmPort->im.rxPool.h_BufferPool, + p_CurData, + h_CurrUserPriv)) + { + p_FmPort->lock = FALSE; + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Failed freeing data buffer")); + } + + bdStatus = BD_STATUS_AND_LENGTH(BD_GET(p_FmPort->im.currBdId)); + } + p_FmPort->lock = FALSE; + return E_OK; +} + +void FmPortConfigIM (t_FmPort *p_FmPort, t_FmPortParams *p_FmPortParams) +{ + ASSERT_COND(p_FmPort); + + SANITY_CHECK_RETURN(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + p_FmPort->im.h_FmMuram = p_FmPortParams->specificParams.imRxTxParams.h_FmMuram; + p_FmPort->p_FmPortDriverParam->liodnOffset = p_FmPortParams->specificParams.imRxTxParams.liodnOffset; + p_FmPort->im.dataMemId = p_FmPortParams->specificParams.imRxTxParams.dataMemId; + p_FmPort->im.dataMemAttributes = p_FmPortParams->specificParams.imRxTxParams.dataMemAttributes; + + p_FmPort->im.fwExtStructsMemId = DEFAULT_PORT_ImfwExtStructsMemId; + p_FmPort->im.fwExtStructsMemAttr = DEFAULT_PORT_ImfwExtStructsMemAttr; + + if ((p_FmPort->portType == e_FM_PORT_TYPE_RX) || + (p_FmPort->portType == e_FM_PORT_TYPE_RX_10G)) + { + p_FmPort->im.rxPool.h_BufferPool = p_FmPortParams->specificParams.imRxTxParams.rxPoolParams.h_BufferPool; + p_FmPort->im.rxPool.f_GetBuf = p_FmPortParams->specificParams.imRxTxParams.rxPoolParams.f_GetBuf; + p_FmPort->im.rxPool.f_PutBuf = p_FmPortParams->specificParams.imRxTxParams.rxPoolParams.f_PutBuf; + p_FmPort->im.rxPool.bufferSize = p_FmPortParams->specificParams.imRxTxParams.rxPoolParams.bufferSize; + p_FmPort->im.rxPool.f_PhysToVirt = p_FmPortParams->specificParams.imRxTxParams.rxPoolParams.f_PhysToVirt; + if (!p_FmPort->im.rxPool.f_PhysToVirt) + p_FmPort->im.rxPool.f_PhysToVirt = XX_PhysToVirt; + p_FmPort->im.rxPool.f_VirtToPhys = p_FmPortParams->specificParams.imRxTxParams.rxPoolParams.f_VirtToPhys; + if (!p_FmPort->im.rxPool.f_VirtToPhys) + p_FmPort->im.rxPool.f_VirtToPhys = XX_VirtToPhys; + p_FmPort->im.f_RxStore = p_FmPortParams->specificParams.imRxTxParams.f_RxStore; + + p_FmPort->im.mrblr = 0x8000; + while (p_FmPort->im.mrblr) + { + if (p_FmPort->im.rxPool.bufferSize & p_FmPort->im.mrblr) + break; + p_FmPort->im.mrblr >>= 1; + } + if (p_FmPort->im.mrblr != p_FmPort->im.rxPool.bufferSize) + DBG(WARNING, ("Max-Rx-Buffer-Length set to %d", p_FmPort->im.mrblr)); + p_FmPort->im.bdRingSize = DEFAULT_PORT_rxBdRingLength; + p_FmPort->exceptions = DEFAULT_exception; + if (FmIsMaster(p_FmPort->h_Fm)) + p_FmPort->polling = FALSE; + else + p_FmPort->polling = TRUE; + p_FmPort->fmanCtrlEventId = (uint8_t)NO_IRQ; + } + else + { + p_FmPort->im.f_TxConf = p_FmPortParams->specificParams.imRxTxParams.f_TxConf; + + p_FmPort->im.bdRingSize = DEFAULT_PORT_txBdRingLength; + } +} + +t_Error FmPortImCheckInitParameters(t_FmPort *p_FmPort) +{ + if ((p_FmPort->portType != e_FM_PORT_TYPE_RX) && + (p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && + (p_FmPort->portType != e_FM_PORT_TYPE_TX) && + (p_FmPort->portType != e_FM_PORT_TYPE_TX_10G)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, NO_MSG); + + if ((p_FmPort->portType == e_FM_PORT_TYPE_RX) || + (p_FmPort->portType == e_FM_PORT_TYPE_RX_10G)) + { + if (!POWER_OF_2(p_FmPort->im.mrblr)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("max Rx buffer length must be power of 2!!!")); + if (p_FmPort->im.mrblr < 256) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("max Rx buffer length must at least 256!!!")); + if(p_FmPort->p_FmPortDriverParam->liodnOffset & ~FM_LIODN_OFFSET_MASK) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("liodnOffset is larger than %d", FM_LIODN_OFFSET_MASK+1)); +#ifdef FM_PARTITION_ARRAY + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + { + if(p_FmPort->p_FmPortDriverParam->liodnOffset >= MAX_LIODN_OFFSET) + { + p_FmPort->p_FmPortDriverParam->liodnOffset = + (uint16_t)(p_FmPort->p_FmPortDriverParam->liodnOffset & (MAX_LIODN_OFFSET-1)); + DBG(WARNING, ("liodnOffset number is out of rev1 range - MSB bits cleard.")); + } + } + } +#endif /* FM_PARTITION_ARRAY */ +/* TODO - add checks */ + } + else + { +/* TODO - add checks */ + } + + return E_OK; +} + +t_Error FmPortImInit(t_FmPort *p_FmPort) +{ + t_FmImBd *p_Bd=NULL; + t_Handle h_BufContext; + uint64_t tmpPhysBase; + uint16_t log2Num; + uint8_t *p_Data/*, *p_Tmp*/; + int i; + t_Error err; + uint16_t tmpReg16; + uint32_t tmpReg32; + + ASSERT_COND(p_FmPort); + + p_FmPort->im.p_FmPortImPram = + (t_FmPortImPram *)FM_MURAM_AllocMem(p_FmPort->im.h_FmMuram, sizeof(t_FmPortImPram), IM_PRAM_ALIGN); + if (!p_FmPort->im.p_FmPortImPram) + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("Independent-Mode Parameter-RAM!!!")); + WRITE_BLOCK(p_FmPort->im.p_FmPortImPram, 0, sizeof(t_FmPortImPram)); + + if ((p_FmPort->portType == e_FM_PORT_TYPE_RX) || + (p_FmPort->portType == e_FM_PORT_TYPE_RX_10G)) + { + p_FmPort->im.p_BdRing = (t_FmImBd *)XX_MallocSmart((uint32_t)(sizeof(t_FmImBd)*p_FmPort->im.bdRingSize), p_FmPort->im.fwExtStructsMemId, 4); + if (!p_FmPort->im.p_BdRing) + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("Independent-Mode Rx BD ring!!!")); + IOMemSet32(p_FmPort->im.p_BdRing, 0, (uint32_t)(sizeof(t_FmImBd)*p_FmPort->im.bdRingSize)); + + p_FmPort->im.p_BdShadow = (t_Handle *)XX_Malloc((uint32_t)(sizeof(t_Handle)*p_FmPort->im.bdRingSize)); + if (!p_FmPort->im.p_BdShadow) + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("Independent-Mode Rx BD shadow!!!")); + memset(p_FmPort->im.p_BdShadow, 0, (uint32_t)(sizeof(t_Handle)*p_FmPort->im.bdRingSize)); + + /* Initialize the Rx-BD ring */ + for (i=0; iim.bdRingSize; i++) + { + p_Bd = BD_GET(i); + BD_STATUS_AND_LENGTH_SET (p_Bd, BD_R_E); + + if ((p_Data = p_FmPort->im.rxPool.f_GetBuf(p_FmPort->im.rxPool.h_BufferPool, &h_BufContext)) == NULL) + RETURN_ERROR(MAJOR, E_NOT_AVAILABLE, ("Data buffer")); + BdBufferSet(p_FmPort->im.rxPool.f_VirtToPhys, p_Bd, p_Data); + p_FmPort->im.p_BdShadow[i] = h_BufContext; + } + + if ((p_FmPort->im.dataMemAttributes & MEMORY_ATTR_CACHEABLE) || + (p_FmPort->im.fwExtStructsMemAttr & MEMORY_ATTR_CACHEABLE)) + WRITE_UINT32(p_FmPort->im.p_FmPortImPram->mode, IM_MODE_GBL | IM_MODE_SET_BO(2)); + else + WRITE_UINT32(p_FmPort->im.p_FmPortImPram->mode, IM_MODE_SET_BO(2)); + + WRITE_UINT32(p_FmPort->im.p_FmPortImPram->rxQdPtr, + (uint32_t)((uint64_t)(XX_VirtToPhys(p_FmPort->im.p_FmPortImPram)) - + p_FmPort->p_FmPortDriverParam->fmMuramPhysBaseAddr + 0x20)); + + LOG2((uint64_t)p_FmPort->im.mrblr, log2Num); + WRITE_UINT16(p_FmPort->im.p_FmPortImPram->mrblr, log2Num); + + /* Initialize Rx QD */ + tmpPhysBase = (uint64_t)(XX_VirtToPhys(p_FmPort->im.p_BdRing)); + SET_ADDR(&p_FmPort->im.p_FmPortImPram->rxQd.bdRingBase, tmpPhysBase); + WRITE_UINT16(p_FmPort->im.p_FmPortImPram->rxQd.bdRingSize, (uint16_t)(sizeof(t_FmImBd)*p_FmPort->im.bdRingSize)); + + /* Update the IM PRAM address in the BMI */ + WRITE_UINT32(p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rfqid, + (uint32_t)((uint64_t)(XX_VirtToPhys(p_FmPort->im.p_FmPortImPram)) - + p_FmPort->p_FmPortDriverParam->fmMuramPhysBaseAddr)); + if (!p_FmPort->polling || p_FmPort->exceptions) + { + /* Allocate, configure and register interrupts */ + err = FmAllocFmanCtrlEventReg(p_FmPort->h_Fm, &p_FmPort->fmanCtrlEventId); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + + ASSERT_COND(!(p_FmPort->fmanCtrlEventId & ~IM_RXQD_FPMEVT_SEL_MASK)); + tmpReg16 = (uint16_t)(p_FmPort->fmanCtrlEventId & IM_RXQD_FPMEVT_SEL_MASK); + tmpReg32 = 0; + + if(p_FmPort->exceptions & IM_EV_BSY) + { + tmpReg16 |= IM_RXQD_BSYINTM; + tmpReg32 |= IM_EV_BSY; + } + if(!p_FmPort->polling) + { + tmpReg16 |= IM_RXQD_RXFINTM; + tmpReg32 |= IM_EV_RX; + } + WRITE_UINT16(p_FmPort->im.p_FmPortImPram->rxQd.gen, tmpReg16); + + FmRegisterFmanCtrlIntr(p_FmPort->h_Fm, p_FmPort->fmanCtrlEventId, ImException , (t_Handle)p_FmPort); + + FmSetFmanCtrlIntr(p_FmPort->h_Fm, p_FmPort->fmanCtrlEventId, tmpReg32); + } + else + p_FmPort->fmanCtrlEventId = (uint8_t)NO_IRQ; + } + else + { + p_FmPort->im.p_BdRing = (t_FmImBd *)XX_MallocSmart((uint32_t)(sizeof(t_FmImBd)*p_FmPort->im.bdRingSize), p_FmPort->im.fwExtStructsMemId, 4); + if (!p_FmPort->im.p_BdRing) + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("Independent-Mode Tx BD ring!!!")); + IOMemSet32(p_FmPort->im.p_BdRing, 0, (uint32_t)(sizeof(t_FmImBd)*p_FmPort->im.bdRingSize)); + + p_FmPort->im.p_BdShadow = (t_Handle *)XX_Malloc((uint32_t)(sizeof(t_Handle)*p_FmPort->im.bdRingSize)); + if (!p_FmPort->im.p_BdShadow) + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("Independent-Mode Rx BD shadow!!!")); + memset(p_FmPort->im.p_BdShadow, 0, (uint32_t)(sizeof(t_Handle)*p_FmPort->im.bdRingSize)); + p_FmPort->im.firstBdOfFrameId = IM_ILEGAL_BD_ID; + + if ((p_FmPort->im.dataMemAttributes & MEMORY_ATTR_CACHEABLE) || + (p_FmPort->im.fwExtStructsMemAttr & MEMORY_ATTR_CACHEABLE)) + WRITE_UINT32(p_FmPort->im.p_FmPortImPram->mode, IM_MODE_GBL | IM_MODE_SET_BO(2)); + else + WRITE_UINT32(p_FmPort->im.p_FmPortImPram->mode, IM_MODE_SET_BO(2)); + + WRITE_UINT32(p_FmPort->im.p_FmPortImPram->txQdPtr, + (uint32_t)((uint64_t)(XX_VirtToPhys(p_FmPort->im.p_FmPortImPram)) - + p_FmPort->p_FmPortDriverParam->fmMuramPhysBaseAddr + 0x40)); + + /* Initialize Tx QD */ + tmpPhysBase = (uint64_t)(XX_VirtToPhys(p_FmPort->im.p_BdRing)); + SET_ADDR(&p_FmPort->im.p_FmPortImPram->txQd.bdRingBase, tmpPhysBase); + WRITE_UINT16(p_FmPort->im.p_FmPortImPram->txQd.bdRingSize, (uint16_t)(sizeof(t_FmImBd)*p_FmPort->im.bdRingSize)); + + /* Update the IM PRAM address in the BMI */ + WRITE_UINT32(p_FmPort->p_FmPortBmiRegs->txPortBmiRegs.fmbm_tcfqid, + (uint32_t)((uint64_t)(XX_VirtToPhys(p_FmPort->im.p_FmPortImPram)) - + p_FmPort->p_FmPortDriverParam->fmMuramPhysBaseAddr)); + } + + + return E_OK; +} + +void FmPortImFree(t_FmPort *p_FmPort) +{ + uint32_t bdStatus; + uint8_t *p_CurData; + + ASSERT_COND(p_FmPort); + ASSERT_COND(p_FmPort->im.p_FmPortImPram); + + if ((p_FmPort->portType == e_FM_PORT_TYPE_RX) || + (p_FmPort->portType == e_FM_PORT_TYPE_RX_10G)) + { + if (!p_FmPort->polling || p_FmPort->exceptions) + { + /* Deallocate and unregister interrupts */ + FmSetFmanCtrlIntr(p_FmPort->h_Fm, p_FmPort->fmanCtrlEventId, 0); + + FmFreeFmanCtrlEventReg(p_FmPort->h_Fm, p_FmPort->fmanCtrlEventId); + + WRITE_UINT16(p_FmPort->im.p_FmPortImPram->rxQd.gen, 0); + + FmUnregisterFmanCtrlIntr(p_FmPort->h_Fm, p_FmPort->fmanCtrlEventId); + } + /* Try first clean what has received */ + FmPortImRx(p_FmPort); + + /* Now, get rid of the the empty buffer! */ + bdStatus = BD_STATUS_AND_LENGTH(BD_GET(p_FmPort->im.currBdId)); + + while (bdStatus & BD_R_E) /* while there is data in the Rx BD */ + { + p_CurData = BdBufferGet(p_FmPort->im.rxPool.f_PhysToVirt, BD_GET(p_FmPort->im.currBdId)); + + BdBufferSet(p_FmPort->im.rxPool.f_VirtToPhys, BD_GET(p_FmPort->im.currBdId), NULL); + BD_STATUS_AND_LENGTH_SET(BD_GET(p_FmPort->im.currBdId), 0); + + p_FmPort->im.rxPool.f_PutBuf(p_FmPort->im.rxPool.h_BufferPool, + p_CurData, + p_FmPort->im.p_BdShadow[p_FmPort->im.currBdId]); + + p_FmPort->im.currBdId = GetNextBdId(p_FmPort, p_FmPort->im.currBdId); + bdStatus = BD_STATUS_AND_LENGTH(BD_GET(p_FmPort->im.currBdId)); + } + } + else + TxConf(p_FmPort, e_TX_CONF_TYPE_FLUSH); + + FM_MURAM_FreeMem(p_FmPort->im.h_FmMuram, p_FmPort->im.p_FmPortImPram); + + if (p_FmPort->im.p_BdShadow) + XX_Free(p_FmPort->im.p_BdShadow); + + if (p_FmPort->im.p_BdRing) + XX_FreeSmart(p_FmPort->im.p_BdRing); +} + + +t_Error FM_PORT_ConfigIMMaxRxBufLength(t_Handle h_FmPort, uint16_t newVal) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->imEn, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + p_FmPort->im.mrblr = newVal; + + return E_OK; +} + +t_Error FM_PORT_ConfigIMRxBdRingLength(t_Handle h_FmPort, uint16_t newVal) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->imEn, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + p_FmPort->im.bdRingSize = newVal; + + return E_OK; +} + +t_Error FM_PORT_ConfigIMTxBdRingLength(t_Handle h_FmPort, uint16_t newVal) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->imEn, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + p_FmPort->im.bdRingSize = newVal; + + return E_OK; +} + +t_Error FM_PORT_ConfigIMFmanCtrlExternalStructsMemory(t_Handle h_FmPort, + uint8_t memId, + uint32_t memAttributes) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->imEn, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + p_FmPort->im.fwExtStructsMemId = memId; + p_FmPort->im.fwExtStructsMemAttr = memAttributes; + + return E_OK; +} + +t_Error FM_PORT_ConfigIMPolling(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->imEn, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + if((p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && (p_FmPort->portType != e_FM_PORT_TYPE_RX)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("Available for Rx ports only")); + + if (!FmIsMaster(p_FmPort->h_Fm)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("Available on master-partition only;" + "in guest-partitions, IM is always in polling!")); + + p_FmPort->polling = TRUE; + + return E_OK; +} + +t_Error FM_PORT_SetIMExceptions(t_Handle h_FmPort, e_FmPortExceptions exception, bool enable) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + t_Error err; + uint16_t tmpReg16; + uint32_t tmpReg32; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->imEn, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + if(exception == e_FM_PORT_EXCEPTION_IM_BUSY) + { + if(enable) + { + p_FmPort->exceptions |= IM_EV_BSY; + if(p_FmPort->fmanCtrlEventId == (uint8_t)NO_IRQ) + { + /* Allocate, configure and register interrupts */ + err = FmAllocFmanCtrlEventReg(p_FmPort->h_Fm, &p_FmPort->fmanCtrlEventId); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + ASSERT_COND(!(p_FmPort->fmanCtrlEventId & ~IM_RXQD_FPMEVT_SEL_MASK)); + + FmRegisterFmanCtrlIntr(p_FmPort->h_Fm, p_FmPort->fmanCtrlEventId, ImException, (t_Handle)p_FmPort); + tmpReg16 = (uint16_t)((p_FmPort->fmanCtrlEventId & IM_RXQD_FPMEVT_SEL_MASK) | IM_RXQD_BSYINTM); + tmpReg32 = IM_EV_BSY; + } + else + { + tmpReg16 = (uint16_t)(GET_UINT16(p_FmPort->im.p_FmPortImPram->rxQd.gen) | IM_RXQD_BSYINTM); + tmpReg32 = FmGetFmanCtrlIntr(p_FmPort->h_Fm, p_FmPort->fmanCtrlEventId) | IM_EV_BSY; + } + + WRITE_UINT16(p_FmPort->im.p_FmPortImPram->rxQd.gen, tmpReg16); + FmSetFmanCtrlIntr(p_FmPort->h_Fm, p_FmPort->fmanCtrlEventId, tmpReg32); + } + else + { + p_FmPort->exceptions &= ~IM_EV_BSY; + if (!p_FmPort->exceptions && p_FmPort->polling) + { + FmFreeFmanCtrlEventReg(p_FmPort->h_Fm, p_FmPort->fmanCtrlEventId); + FmUnregisterFmanCtrlIntr(p_FmPort->h_Fm, p_FmPort->fmanCtrlEventId); + FmSetFmanCtrlIntr(p_FmPort->h_Fm, p_FmPort->fmanCtrlEventId, 0); + WRITE_UINT16(p_FmPort->im.p_FmPortImPram->rxQd.gen, 0); + p_FmPort->fmanCtrlEventId = (uint8_t)NO_IRQ; + } + else + { + tmpReg16 = (uint16_t)(GET_UINT16(p_FmPort->im.p_FmPortImPram->rxQd.gen) & ~IM_RXQD_BSYINTM); + WRITE_UINT16(p_FmPort->im.p_FmPortImPram->rxQd.gen, tmpReg16); + tmpReg32 = FmGetFmanCtrlIntr(p_FmPort->h_Fm, p_FmPort->fmanCtrlEventId) & ~IM_EV_BSY; + FmSetFmanCtrlIntr(p_FmPort->h_Fm, p_FmPort->fmanCtrlEventId, tmpReg32); + } + } + } + else + RETURN_ERROR(MINOR, E_INVALID_SELECTION, ("Invalid exception.")); + + return E_OK; +} + +t_Error FM_PORT_ImTx( t_Handle h_FmPort, + uint8_t *p_Data, + uint16_t length, + bool lastBuffer, + t_Handle h_BufContext) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + uint16_t nextBdId; + uint32_t bdStatus, nextBdStatus; + bool firstBuffer; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->imEn, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + bdStatus = BD_STATUS_AND_LENGTH(BD_GET(p_FmPort->im.currBdId)); + nextBdId = GetNextBdId(p_FmPort, p_FmPort->im.currBdId); + nextBdStatus = BD_STATUS_AND_LENGTH(BD_GET(nextBdId)); + + if (!(bdStatus & BD_R_E) && !(nextBdStatus & BD_R_E)) + { + /* Confirm the current BD - BD is available */ + if ((bdStatus & BD_LENGTH_MASK) && (p_FmPort->im.f_TxConf)) + p_FmPort->im.f_TxConf (p_FmPort->h_App, + BdBufferGet(XX_PhysToVirt, BD_GET(p_FmPort->im.currBdId)), + 0, + p_FmPort->im.p_BdShadow[p_FmPort->im.currBdId]); + + bdStatus = length; + + /* if this is the first BD of a frame */ + if (p_FmPort->im.firstBdOfFrameId == IM_ILEGAL_BD_ID) + { + firstBuffer = TRUE; + p_FmPort->im.txFirstBdStatus = (bdStatus | BD_R_E); + + if (!lastBuffer) + p_FmPort->im.firstBdOfFrameId = p_FmPort->im.currBdId; + } + else + firstBuffer = FALSE; + + BdBufferSet(XX_VirtToPhys, BD_GET(p_FmPort->im.currBdId), p_Data); + p_FmPort->im.p_BdShadow[p_FmPort->im.currBdId] = h_BufContext; + + /* deal with last */ + if (lastBuffer) + { + /* if single buffer frame */ + if (firstBuffer) + BD_STATUS_AND_LENGTH_SET(BD_GET(p_FmPort->im.currBdId), p_FmPort->im.txFirstBdStatus | BD_L); + else + { + /* Set the last BD of the frame */ + BD_STATUS_AND_LENGTH_SET (BD_GET(p_FmPort->im.currBdId), (bdStatus | BD_R_E | BD_L)); + /* Set the first BD of the frame */ + BD_STATUS_AND_LENGTH_SET(BD_GET(p_FmPort->im.firstBdOfFrameId), p_FmPort->im.txFirstBdStatus); + p_FmPort->im.firstBdOfFrameId = IM_ILEGAL_BD_ID; + } + WRITE_UINT16(p_FmPort->im.p_FmPortImPram->txQd.offsetIn, (uint16_t)(GetNextBdId(p_FmPort, p_FmPort->im.currBdId)<<4)); + } + else if (!firstBuffer) /* mid frame buffer */ + BD_STATUS_AND_LENGTH_SET (BD_GET(p_FmPort->im.currBdId), bdStatus | BD_R_E); + + p_FmPort->im.currBdId = GetNextBdId(p_FmPort, p_FmPort->im.currBdId); + } + else + { + /* Discard current frame. Return error. */ + if (p_FmPort->im.firstBdOfFrameId != IM_ILEGAL_BD_ID) + { + /* Error: No free BD */ + /* Response: Discard current frame. Return error. */ + uint16_t cleanBdId = p_FmPort->im.firstBdOfFrameId; + + ASSERT_COND(p_FmPort->im.firstBdOfFrameId != p_FmPort->im.currBdId); + + /* Since firstInFrame is not NULL, one buffer at least has already been + inserted into the BD ring. Using do-while covers the situation of a + frame spanned throughout the whole Tx BD ring (p_CleanBd is incremented + prior to testing whether or not it's equal to TxBd). */ + do + { + BD_STATUS_AND_LENGTH_SET(BD_GET(cleanBdId), 0); + /* Advance BD pointer */ + cleanBdId = GetNextBdId(p_FmPort, cleanBdId); + } while (cleanBdId != p_FmPort->im.currBdId); + + p_FmPort->im.currBdId = cleanBdId; + p_FmPort->im.firstBdOfFrameId = IM_ILEGAL_BD_ID; + } + + return ERROR_CODE(E_FULL); + } + + return E_OK; +} + +void FM_PORT_ImTxConf(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN(p_FmPort->imEn, E_INVALID_STATE); + SANITY_CHECK_RETURN(!p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + TxConf(p_FmPort, e_TX_CONF_TYPE_CALLBACK); +} + +t_Error FM_PORT_ImRx(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->imEn, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + return FmPortImRx(p_FmPort); +} --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/Rtc/Makefile +++ linux-3.13.0/drivers/net/dpa/NetCommSw/Peripherals/FM/Rtc/Makefile @@ -0,0 +1,15 @@ +# +# Makefile for the Freescale Ethernet controllers +# +EXTRA_CFLAGS += -DVERSION=\"\" +# +#Include netcomm SW specific definitions +include $(srctree)/drivers/net/dpa/NetCommSw/ncsw_config.mk + +NCSW_FM_INC = $(srctree)/drivers/net/dpa/NetCommSw/Peripherals/FM/inc + +EXTRA_CFLAGS += -I$(NCSW_FM_INC) + +obj-y += fsl-ncsw-RTC.o + +fsl-ncsw-RTC-objs := fm_rtc.o --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/Rtc/fm_rtc.c +++ linux-3.13.0/drivers/net/dpa/NetCommSw/Peripherals/FM/Rtc/fm_rtc.c @@ -0,0 +1,891 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 fm_rtc.c + + @Description FM RTC driver implementation. + + @Cautions None +*//***************************************************************************/ + +#include "error_ext.h" +#include "debug_ext.h" +#include "string_ext.h" +#include "part_ext.h" +#include "xx_ext.h" +#include "ncsw_ext.h" + +#include "fm_rtc.h" +#include "fm_common.h" + + +/*****************************************************************************/ +static void SetDefaultParam(t_FmRtc *p_Rtc) +{ + t_FmRtcDriverParam *p_RtcDriverParam = p_Rtc->p_RtcDriverParam; + int i; + + p_Rtc->outputClockDivisor = DEFAULT_outputClockDivisor; + p_Rtc->p_RtcDriverParam->bypass = DEFAULT_bypass; + p_RtcDriverParam->srcClk = DEFAULT_srcClock; + p_RtcDriverParam->invertInputClkPhase = DEFAULT_invertInputClkPhase; + p_RtcDriverParam->invertOutputClkPhase = DEFAULT_invertOutputClkPhase; + p_RtcDriverParam->pulseRealign = DEFAULT_pulseRealign; + for (i=0; i < FM_RTC_NUM_OF_ALARMS; i++) + { + p_RtcDriverParam->alarmPolarity[i] = DEFAULT_alarmPolarity; + } + for (i=0; i < FM_RTC_NUM_OF_EXT_TRIGGERS; i++) + { + p_RtcDriverParam->triggerPolarity[i] = DEFAULT_triggerPolarity; + } + p_Rtc->clockPeriodNanoSec = DEFAULT_clockPeriod; /* 1 usec */ +} + +/*****************************************************************************/ +static t_Error CheckInitParameters(t_FmRtc *p_Rtc) +{ + t_FmRtcDriverParam *p_RtcDriverParam = p_Rtc->p_RtcDriverParam; + int i; + + if ((p_RtcDriverParam->srcClk != e_FM_RTC_SOURCE_CLOCK_EXTERNAL) && + (p_RtcDriverParam->srcClk != e_FM_RTC_SOURCE_CLOCK_SYSTEM) && + (p_RtcDriverParam->srcClk != e_FM_RTC_SOURCE_CLOCK_OSCILATOR)) + RETURN_ERROR(MAJOR, E_INVALID_CLOCK, ("Source clock undefined")); + + if (p_Rtc->outputClockDivisor == 0) + { + RETURN_ERROR(MAJOR, E_INVALID_VALUE, + ("Divisor for output clock (should be positive)")); + } + + for (i=0; i < FM_RTC_NUM_OF_ALARMS; i++) + { + if ((p_RtcDriverParam->alarmPolarity[i] != e_FM_RTC_ALARM_POLARITY_ACTIVE_LOW) && + (p_RtcDriverParam->alarmPolarity[i] != e_FM_RTC_ALARM_POLARITY_ACTIVE_HIGH)) + { + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("Alarm %d signal polarity", i)); + } + } + for (i=0; i < FM_RTC_NUM_OF_EXT_TRIGGERS; i++) + { + if ((p_RtcDriverParam->triggerPolarity[i] != e_FM_RTC_TRIGGER_ON_FALLING_EDGE) && + (p_RtcDriverParam->triggerPolarity[i] != e_FM_RTC_TRIGGER_ON_RISING_EDGE)) + { + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("Trigger %d signal polarity", i)); + } + } + +#ifdef FM_1588_SRC_CLK_ERRATA_FMAN1 + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_Rtc->h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)&& + ((p_RtcDriverParam->srcClk==e_FM_RTC_SOURCE_CLOCK_SYSTEM) && p_RtcDriverParam->invertInputClkPhase)) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("Can not use invertInputClkPhase when source clock is e_FM_RTC_SOURCE_CLOCK_SYSTEM")); + } +#endif /* FM_1588_SRC_CLK_ERRATA_FMAN1 */ + + return E_OK; +} + +/*****************************************************************************/ +static void RtcExceptions(t_Handle h_FmRtc) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + t_FmRtcMemMap *p_MemMap; + register uint32_t events; + + ASSERT_COND(p_Rtc); + p_MemMap = p_Rtc->p_MemMap; + + /* Get valid events */ + events = GET_UINT32(p_MemMap->tmr_tevent); + events &= GET_UINT32(p_MemMap->tmr_temask); + + /* Clear event bits */ + WRITE_UINT32(p_MemMap->tmr_tevent, events); + + if (events & TMR_TEVENT_ALM1) + { + if(p_Rtc->alarmParams[0].clearOnExpiration) + { + WRITE_UINT32(p_MemMap->tmr_alarm[0].tmr_alarm_l, 0); + WRITE_UINT32(p_MemMap->tmr_temask, GET_UINT32(p_MemMap->tmr_temask) & ~TMR_TEVENT_ALM1); + } + ASSERT_COND(p_Rtc->alarmParams[0].f_AlarmCallback); + p_Rtc->alarmParams[0].f_AlarmCallback(p_Rtc->h_App, 0); + } + if (events & TMR_TEVENT_ALM2) + { + if(p_Rtc->alarmParams[1].clearOnExpiration) + { + WRITE_UINT32(p_MemMap->tmr_alarm[1].tmr_alarm_l, 0); + WRITE_UINT32(p_MemMap->tmr_temask, GET_UINT32(p_MemMap->tmr_temask) & ~TMR_TEVENT_ALM2); + } + ASSERT_COND(p_Rtc->alarmParams[1].f_AlarmCallback); + p_Rtc->alarmParams[1].f_AlarmCallback(p_Rtc->h_App, 1); + } + if (events & TMR_TEVENT_PP1) + { + ASSERT_COND(p_Rtc->periodicPulseParams[0].f_PeriodicPulseCallback); + p_Rtc->periodicPulseParams[0].f_PeriodicPulseCallback(p_Rtc->h_App, 0); + } + if (events & TMR_TEVENT_PP2) + { + ASSERT_COND(p_Rtc->periodicPulseParams[1].f_PeriodicPulseCallback); + p_Rtc->periodicPulseParams[1].f_PeriodicPulseCallback(p_Rtc->h_App, 1); + } + if (events & TMR_TEVENT_ETS1) + { + ASSERT_COND(p_Rtc->externalTriggerParams[0].f_ExternalTriggerCallback); + p_Rtc->externalTriggerParams[0].f_ExternalTriggerCallback(p_Rtc->h_App, 0); + } + if (events & TMR_TEVENT_ETS2) + { + ASSERT_COND(p_Rtc->externalTriggerParams[1].f_ExternalTriggerCallback); + p_Rtc->externalTriggerParams[1].f_ExternalTriggerCallback(p_Rtc->h_App, 1); + } +} + + +/*****************************************************************************/ +t_Handle FM_RTC_Config(t_FmRtcParams *p_FmRtcParam) +{ + t_FmRtc *p_Rtc; + + SANITY_CHECK_RETURN_VALUE(p_FmRtcParam, E_NULL_POINTER, NULL); + + /* Allocate memory for the FM RTC driver parameters */ + p_Rtc = (t_FmRtc *)XX_Malloc(sizeof(t_FmRtc)); + if (!p_Rtc) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FM RTC driver structure")); + return NULL; + } + + memset(p_Rtc, 0, sizeof(t_FmRtc)); + + /* Allocate memory for the FM RTC driver parameters */ + p_Rtc->p_RtcDriverParam = (t_FmRtcDriverParam *)XX_Malloc(sizeof(t_FmRtcDriverParam)); + if (!p_Rtc->p_RtcDriverParam) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FM RTC driver parameters")); + XX_Free(p_Rtc); + return NULL; + } + + memset(p_Rtc->p_RtcDriverParam, 0, sizeof(t_FmRtcDriverParam)); + + /* Store RTC configuration parameters */ + p_Rtc->h_Fm = p_FmRtcParam->h_Fm; + + /* Set default RTC configuration parameters */ + SetDefaultParam(p_Rtc); + + /* Store RTC parameters in the RTC control structure */ + p_Rtc->p_MemMap = (t_FmRtcMemMap *)UINT_TO_PTR(p_FmRtcParam->baseAddress); + p_Rtc->h_App = p_FmRtcParam->h_App; + + return p_Rtc; +} + +/*****************************************************************************/ +t_Error FM_RTC_Init(t_Handle h_FmRtc) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + t_FmRtcDriverParam *p_RtcDriverParam; + t_FmRtcMemMap *p_MemMap; + uint32_t freqCompensation; + uint32_t tmrCtrl; + int i; + uint64_t tmpDouble; + + p_RtcDriverParam = p_Rtc->p_RtcDriverParam; + p_MemMap = p_Rtc->p_MemMap; + + if(CheckInitParameters(p_Rtc)!=E_OK) + RETURN_ERROR(MAJOR, E_CONFLICT, + ("Init Parameters are not Valid")); + + /* TODO A check must be added here, that no timestamping MAC's + * are working in this stage. */ + WRITE_UINT32(p_MemMap->tmr_ctrl, TMR_CTRL_TMSR); + XX_UDelay(10); + WRITE_UINT32(p_MemMap->tmr_ctrl, 0); + + /* Set the source clock */ + switch (p_RtcDriverParam->srcClk) + { + case e_FM_RTC_SOURCE_CLOCK_SYSTEM: + tmrCtrl = TMR_CTRL_CKSEL_MAC_CLK; + break; + case e_FM_RTC_SOURCE_CLOCK_OSCILATOR: + tmrCtrl = TMR_CTRL_CKSEL_OSC_CLK; + break; + default: + /* Use a clock from the External TMR reference clock.*/ + tmrCtrl = TMR_CTRL_CKSEL_EXT_CLK; + break; + } + + /* whatever period the user picked, the timestamp will advance in '1' every time + * the period passed. */ + tmrCtrl |= ((1 << TMR_CTRL_TCLK_PERIOD_SHIFT) & TMR_CTRL_TCLK_PERIOD_MASK); + + if (p_RtcDriverParam->invertInputClkPhase) + tmrCtrl |= TMR_CTRL_CIPH; + if (p_RtcDriverParam->invertOutputClkPhase) + tmrCtrl |= TMR_CTRL_COPH; + + for (i=0; i < FM_RTC_NUM_OF_ALARMS; i++) + { + if (p_RtcDriverParam->alarmPolarity[i] == e_FM_RTC_ALARM_POLARITY_ACTIVE_LOW) + tmrCtrl |= (TMR_CTRL_ALMP1 >> i); + } + + for (i=0; i < FM_RTC_NUM_OF_EXT_TRIGGERS; i++) + if (p_RtcDriverParam->triggerPolarity[i] == e_FM_RTC_TRIGGER_ON_FALLING_EDGE) + tmrCtrl |= (TMR_CTRL_ETEP1 << i); + + if (!p_RtcDriverParam->timerSlaveMode && p_Rtc->p_RtcDriverParam->bypass) + tmrCtrl |= TMR_CTRL_BYP; + + WRITE_UINT32(p_MemMap->tmr_ctrl, tmrCtrl); + + for (i=0; i < FM_RTC_NUM_OF_ALARMS; i++) + { + /* Clear TMR_ALARM registers */ + WRITE_UINT32(p_MemMap->tmr_alarm[i].tmr_alarm_l, 0xFFFFFFFF); + WRITE_UINT32(p_MemMap->tmr_alarm[i].tmr_alarm_h, 0xFFFFFFFF); + } + + /* Clear TMR_TEVENT */ + WRITE_UINT32(p_MemMap->tmr_tevent, TMR_TEVENT_ALL); + + /* Initialize TMR_TEMASK */ + WRITE_UINT32(p_MemMap->tmr_temask, 0); + + + /* find source clock frequency in Mhz */ + if (p_Rtc->p_RtcDriverParam->srcClk != e_FM_RTC_SOURCE_CLOCK_SYSTEM) + p_Rtc->srcClkFreqMhz = p_Rtc->p_RtcDriverParam->extSrcClkFreq; + else + p_Rtc->srcClkFreqMhz = (uint32_t)(FmGetClockFreq(p_Rtc->h_Fm)/2); + + /* if timer in Master mode Initialize TMR_CTRL */ + /* We want the counter (TMR_CNT) to count in nano-seconds */ + if (!p_RtcDriverParam->timerSlaveMode && p_Rtc->p_RtcDriverParam->bypass) + { + p_Rtc->clockPeriodNanoSec = (1000 / p_Rtc->srcClkFreqMhz); + } + else + { + /* Initialize TMR_ADD with the initial frequency compensation value: + freqCompensation = (2^32 / frequency ratio) */ + /* frequency ratio = sorce clock/rtc clock = + * (p_Rtc->srcClkFreqMhz*1000000))/ 1/(p_Rtc->clockPeriodNanoSec * 1000000000) */ + freqCompensation = (uint32_t)DIV_CEIL(ACCUMULATOR_OVERFLOW * 1000, + p_Rtc->clockPeriodNanoSec * p_Rtc->srcClkFreqMhz); + WRITE_UINT32(p_MemMap->tmr_add, freqCompensation); + } + /* check the legality of the relation between source and destination clocks */ + /* should be larger than 1.0001 */ + tmpDouble = 10000 * (uint64_t)p_Rtc->clockPeriodNanoSec * (uint64_t)p_Rtc->srcClkFreqMhz; + if((tmpDouble) <= 10001) + RETURN_ERROR(MAJOR, E_CONFLICT, + ("Invalid relation between source and destination clocks. Should be larger than 1.0001")); + + + for (i=0; i < 2; i++) + /* Clear TMR_FIPER registers */ + WRITE_UINT32(p_MemMap->tmr_fiper[i], 0xFFFFFFFF); + + /* Initialize TMR_PRSC */ + WRITE_UINT32(p_MemMap->tmr_prsc, p_Rtc->outputClockDivisor); + + /* Clear TMR_OFF */ + WRITE_UINT32(p_MemMap->tmr_off_l, 0); + WRITE_UINT32(p_MemMap->tmr_off_h, 0); + + /* Register the FM RTC interrupt */ + FmRegisterIntr(p_Rtc->h_Fm, e_FM_MOD_TMR, 0, e_FM_INTR_TYPE_NORMAL, RtcExceptions , p_Rtc); + + /* Free parameters structures */ + XX_Free(p_Rtc->p_RtcDriverParam); + p_Rtc->p_RtcDriverParam = NULL; + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_Free(t_Handle h_FmRtc) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + + if (p_Rtc->p_RtcDriverParam) + { + XX_Free(p_Rtc->p_RtcDriverParam); + } + else + { + FM_RTC_Disable(h_FmRtc); + } + + /* Unregister FM RTC interrupt */ + FmUnregisterIntr(p_Rtc->h_Fm, e_FM_MOD_TMR, 0, e_FM_INTR_TYPE_NORMAL); + XX_Free(p_Rtc); + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_ConfigSourceClock(t_Handle h_FmRtc, + e_FmSrcClk srcClk, + uint32_t freqInMhz) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + p_Rtc->p_RtcDriverParam->srcClk = srcClk; + if(srcClk != e_FM_RTC_SOURCE_CLOCK_SYSTEM) + p_Rtc->p_RtcDriverParam->extSrcClkFreq = freqInMhz; + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_ConfigPeriod(t_Handle h_FmRtc, uint32_t period) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + p_Rtc->clockPeriodNanoSec = period; + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_ConfigFrequencyBypass(t_Handle h_FmRtc, bool enabled) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + p_Rtc->p_RtcDriverParam->bypass = enabled; + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_ConfigInvertedInputClockPhase(t_Handle h_FmRtc, bool inverted) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + p_Rtc->p_RtcDriverParam->invertInputClkPhase = inverted; + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_ConfigInvertedOutputClockPhase(t_Handle h_FmRtc, bool inverted) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + p_Rtc->p_RtcDriverParam->invertOutputClkPhase = inverted; + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_ConfigOutputClockDivisor(t_Handle h_FmRtc, uint16_t divisor) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + p_Rtc->outputClockDivisor = divisor; + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_ConfigPulseRealignment(t_Handle h_FmRtc, bool enable) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + p_Rtc->p_RtcDriverParam->pulseRealign = enable; + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_ConfigAlarmPolarity(t_Handle h_FmRtc, + uint8_t alarmId, + e_FmRtcAlarmPolarity alarmPolarity) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + if (alarmId >= FM_RTC_NUM_OF_ALARMS) + { + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("Alarm ID")); + } + + p_Rtc->p_RtcDriverParam->alarmPolarity[alarmId] = alarmPolarity; + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_ConfigExternalTriggerPolarity(t_Handle h_FmRtc, + uint8_t triggerId, + e_FmRtcTriggerPolarity triggerPolarity) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + if (triggerId >= FM_RTC_NUM_OF_EXT_TRIGGERS) + { + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("External trigger ID")); + } + + p_Rtc->p_RtcDriverParam->triggerPolarity[triggerId] = triggerPolarity; + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_Enable(t_Handle h_FmRtc, bool resetClock) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + uint32_t tmrCtrl; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + tmrCtrl = GET_UINT32(p_Rtc->p_MemMap->tmr_ctrl); + + /* TODO A check must be added here, that no timestamping MAC's + * are working in this stage. */ + if (resetClock) + { + WRITE_UINT32(p_Rtc->p_MemMap->tmr_ctrl, (tmrCtrl | TMR_CTRL_TMSR)); + + XX_UDelay(10); + /* Clear TMR_OFF */ + WRITE_UINT32(p_Rtc->p_MemMap->tmr_off_l, 0); + WRITE_UINT32(p_Rtc->p_MemMap->tmr_off_h, 0); + } + + WRITE_UINT32(p_Rtc->p_MemMap->tmr_ctrl, (tmrCtrl | TMR_CTRL_TE)); + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_Disable(t_Handle h_FmRtc) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + uint32_t tmrCtrl; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + /* TODO A check must be added here, that no timestamping MAC's + * are working in this stage. */ + tmrCtrl = GET_UINT32(p_Rtc->p_MemMap->tmr_ctrl); + WRITE_UINT32(p_Rtc->p_MemMap->tmr_ctrl, (tmrCtrl & ~(TMR_CTRL_TE))); + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_SetClockOffset(t_Handle h_FmRtc, int64_t offset) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + /* TMR_OFF_L must be written first */ + WRITE_UINT32(p_Rtc->p_MemMap->tmr_off_l, (uint32_t)offset); + WRITE_UINT32(p_Rtc->p_MemMap->tmr_off_h, (uint32_t)(offset >> 32)); + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_SetAlarm(t_Handle h_FmRtc, t_FmRtcAlarmParams *p_FmRtcAlarmParams) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + t_FmRtcMemMap *p_MemMap; + uint32_t tmpReg; + uint64_t tmpAlarm; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + p_MemMap = p_Rtc->p_MemMap; + + if (p_FmRtcAlarmParams->alarmId >= FM_RTC_NUM_OF_ALARMS) + { + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("Alarm ID")); + } + + if(p_FmRtcAlarmParams->alarmTime < p_Rtc->clockPeriodNanoSec) + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("Alarm time must be equal or larger than RTC period - %d nanoseconds", p_Rtc->clockPeriodNanoSec)); + if(p_FmRtcAlarmParams->alarmTime % (uint64_t)p_Rtc->clockPeriodNanoSec) + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("Alarm time must be a multiple of RTC period - %d nanoseconds", p_Rtc->clockPeriodNanoSec)); + tmpAlarm = p_FmRtcAlarmParams->alarmTime/(uint64_t)p_Rtc->clockPeriodNanoSec; + + /* TMR_ALARM_L must be written first */ + WRITE_UINT32(p_MemMap->tmr_alarm[p_FmRtcAlarmParams->alarmId].tmr_alarm_l, (uint32_t)tmpAlarm); + WRITE_UINT32(p_MemMap->tmr_alarm[p_FmRtcAlarmParams->alarmId].tmr_alarm_h, + (uint32_t)(tmpAlarm >> 32)); + + if (p_FmRtcAlarmParams->f_AlarmCallback) + { + p_Rtc->alarmParams[p_FmRtcAlarmParams->alarmId].f_AlarmCallback = p_FmRtcAlarmParams->f_AlarmCallback; + p_Rtc->alarmParams[p_FmRtcAlarmParams->alarmId].clearOnExpiration = p_FmRtcAlarmParams->clearOnExpiration; + + if(p_FmRtcAlarmParams->alarmId == 0) + tmpReg = TMR_TEVENT_ALM1; + else + tmpReg = TMR_TEVENT_ALM2; + WRITE_UINT32(p_MemMap->tmr_temask, GET_UINT32(p_MemMap->tmr_temask) | tmpReg); + } + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_SetPeriodicPulse(t_Handle h_FmRtc, t_FmRtcPeriodicPulseParams *p_FmRtcPeriodicPulseParams) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + t_FmRtcMemMap *p_MemMap; + uint32_t tmpReg; + uint64_t tmpFiper; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + p_MemMap = p_Rtc->p_MemMap; + + if (p_FmRtcPeriodicPulseParams->periodicPulseId >= FM_RTC_NUM_OF_PERIODIC_PULSES) + { + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("Periodic pulse ID")); + } + if(GET_UINT32(p_MemMap->tmr_ctrl) & TMR_CTRL_TE) + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("Can't set Periodic pulse when RTC is enabled.")); + if(p_FmRtcPeriodicPulseParams->periodicPulsePeriod < p_Rtc->clockPeriodNanoSec) + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("Periodic pulse must be equal or larger than RTC period - %d nanoseconds", p_Rtc->clockPeriodNanoSec)); + if(p_FmRtcPeriodicPulseParams->periodicPulsePeriod % (uint64_t)p_Rtc->clockPeriodNanoSec) + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("Periodic pulse must be a multiple of RTC period - %d nanoseconds", p_Rtc->clockPeriodNanoSec)); + tmpFiper = p_FmRtcPeriodicPulseParams->periodicPulsePeriod/(uint64_t)p_Rtc->clockPeriodNanoSec; + if(tmpFiper & 0xffffffff00000000LL) + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("Periodic pulse/RTC Period must be smaller than 4294967296", p_Rtc->clockPeriodNanoSec)); + + WRITE_UINT32(p_MemMap->tmr_fiper[p_FmRtcPeriodicPulseParams->periodicPulseId], (uint32_t)tmpFiper); + + if (p_FmRtcPeriodicPulseParams->f_PeriodicPulseCallback) + { + p_Rtc->periodicPulseParams[p_FmRtcPeriodicPulseParams->periodicPulseId].f_PeriodicPulseCallback = + p_FmRtcPeriodicPulseParams->f_PeriodicPulseCallback; + + if(p_FmRtcPeriodicPulseParams->periodicPulseId == 0) + tmpReg = TMR_TEVENT_PP1; + else + tmpReg = TMR_TEVENT_PP2; + WRITE_UINT32(p_MemMap->tmr_temask, GET_UINT32(p_MemMap->tmr_temask) | tmpReg); + } + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_ClearPeriodicPulse(t_Handle h_FmRtc, uint8_t periodicPulseId) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + uint32_t tmpReg; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + if (periodicPulseId >= FM_RTC_NUM_OF_PERIODIC_PULSES) + { + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("Periodic pulse ID")); + } + + p_Rtc->periodicPulseParams[periodicPulseId].f_PeriodicPulseCallback = NULL; + + if(periodicPulseId == 0) + tmpReg = TMR_TEVENT_PP1; + else + tmpReg = TMR_TEVENT_PP2; + WRITE_UINT32(p_Rtc->p_MemMap->tmr_temask, GET_UINT32(p_Rtc->p_MemMap->tmr_temask) & ~tmpReg); + + if (GET_UINT32(p_Rtc->p_MemMap->tmr_ctrl) & TMR_CTRL_FS) + WRITE_UINT32(p_Rtc->p_MemMap->tmr_ctrl, GET_UINT32(p_Rtc->p_MemMap->tmr_ctrl) & ~TMR_CTRL_FS); + + WRITE_UINT32(p_Rtc->p_MemMap->tmr_fiper[periodicPulseId], 0xFFFFFFFF); + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_SetExternalTrigger(t_Handle h_FmRtc, t_FmRtcExternalTriggerParams *p_FmRtcExternalTriggerParams) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + uint32_t tmpReg; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + if (p_FmRtcExternalTriggerParams->externalTriggerId >= FM_RTC_NUM_OF_EXT_TRIGGERS) + { + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("External Trigger ID")); + } + + if (p_FmRtcExternalTriggerParams->f_ExternalTriggerCallback) + { + p_Rtc->externalTriggerParams[p_FmRtcExternalTriggerParams->externalTriggerId].f_ExternalTriggerCallback = p_FmRtcExternalTriggerParams->f_ExternalTriggerCallback; + if(p_FmRtcExternalTriggerParams->externalTriggerId == 0) + tmpReg = TMR_TEVENT_ETS1; + else + tmpReg = TMR_TEVENT_ETS2; + WRITE_UINT32(p_Rtc->p_MemMap->tmr_temask, GET_UINT32(p_Rtc->p_MemMap->tmr_temask) | tmpReg); + } + + if(p_FmRtcExternalTriggerParams->usePulseAsInput) + { + if(p_FmRtcExternalTriggerParams->externalTriggerId == 0) + tmpReg = TMR_CTRL_PP1L; + else + tmpReg = TMR_CTRL_PP2L; + WRITE_UINT32(p_Rtc->p_MemMap->tmr_ctrl, GET_UINT32(p_Rtc->p_MemMap->tmr_ctrl) | tmpReg); + } + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_ClearExternalTrigger(t_Handle h_FmRtc, uint8_t externalTriggerId) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + uint32_t tmpReg; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + if (externalTriggerId >= FM_RTC_NUM_OF_EXT_TRIGGERS) + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("External Trigger ID")); + + p_Rtc->externalTriggerParams[externalTriggerId].f_ExternalTriggerCallback = NULL; + + if(externalTriggerId == 0) + tmpReg = TMR_TEVENT_ETS1; + else + tmpReg = TMR_TEVENT_ETS2; + WRITE_UINT32(p_Rtc->p_MemMap->tmr_temask, GET_UINT32(p_Rtc->p_MemMap->tmr_temask) & ~tmpReg); + + if(externalTriggerId == 0) + tmpReg = TMR_CTRL_PP1L; + else + tmpReg = TMR_CTRL_PP2L; + + if (GET_UINT32(p_Rtc->p_MemMap->tmr_ctrl) & tmpReg) + WRITE_UINT32(p_Rtc->p_MemMap->tmr_ctrl, GET_UINT32(p_Rtc->p_MemMap->tmr_ctrl) & ~tmpReg); + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_GetExternalTriggerTimeStamp(t_Handle h_FmRtc, + uint8_t triggerId, + uint64_t *p_TimeStamp) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + uint64_t timeStamp; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + if (triggerId >= FM_RTC_NUM_OF_EXT_TRIGGERS) + { + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("External trigger ID")); + } + + timeStamp = (uint64_t)GET_UINT32(p_Rtc->p_MemMap->tmr_etts[triggerId].tmr_etts_l); + timeStamp |= ((uint64_t)GET_UINT32(p_Rtc->p_MemMap->tmr_etts[triggerId].tmr_etts_h) << 32); + + timeStamp = timeStamp*p_Rtc->clockPeriodNanoSec; + *p_TimeStamp = timeStamp; + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_GetCurrentTime(t_Handle h_FmRtc, uint64_t *p_Ts) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + uint64_t time; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + /* TMR_CNT_L must be read first to get an accurate value */ + time = (uint64_t)GET_UINT32(p_Rtc->p_MemMap->tmr_cnt_l); + time |= ((uint64_t)GET_UINT32(p_Rtc->p_MemMap->tmr_cnt_h) << 32); + + time = time*p_Rtc->clockPeriodNanoSec; + + *p_Ts = time; + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_SetCurrentTime(t_Handle h_FmRtc, uint64_t ts) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + ts = ts/p_Rtc->clockPeriodNanoSec; + /* TMR_CNT_L must be written first to get an accurate value */ + WRITE_UINT32(p_Rtc->p_MemMap->tmr_cnt_l, (uint32_t)ts); + WRITE_UINT32(p_Rtc->p_MemMap->tmr_cnt_h, (uint32_t)(ts >> 32)); + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_GetFreqCompensation(t_Handle h_FmRtc, uint32_t *p_Compensation) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + *p_Compensation = (uint32_t) + DIV_CEIL(ACCUMULATOR_OVERFLOW * 1000, + p_Rtc->clockPeriodNanoSec * p_Rtc->srcClkFreqMhz); + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_SetFreqCompensation(t_Handle h_FmRtc, uint32_t freqCompensation) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + /* set the new freqCompensation */ + WRITE_UINT32(p_Rtc->p_MemMap->tmr_add, freqCompensation); + + return E_OK; +} + +/*****************************************************************************/ +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) +t_Error FM_RTC_DumpRegs(t_Handle h_FmRtc) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + t_FmRtcMemMap *p_MemMap = p_Rtc->p_MemMap; + int i = 0; + + DECLARE_DUMP; + + if (p_MemMap) + { + + DUMP_TITLE(p_MemMap, ("RTC:")); + DUMP_VAR(p_MemMap, tmr_id); + DUMP_VAR(p_MemMap, tmr_id2); + DUMP_VAR(p_MemMap, tmr_ctrl); + DUMP_VAR(p_MemMap, tmr_tevent); + DUMP_VAR(p_MemMap, tmr_temask); + DUMP_VAR(p_MemMap, tmr_cnt_h); + DUMP_VAR(p_MemMap, tmr_cnt_l); + DUMP_VAR(p_MemMap, tmr_ctrl); + DUMP_VAR(p_MemMap, tmr_add); + DUMP_VAR(p_MemMap, tmr_acc); + DUMP_VAR(p_MemMap, tmr_prsc); + DUMP_VAR(p_MemMap, tmr_off_h); + DUMP_VAR(p_MemMap, tmr_off_l); + + DUMP_SUBSTRUCT_ARRAY(i, 2) + { + DUMP_VAR(p_MemMap, tmr_alarm[i].tmr_alarm_h); + DUMP_VAR(p_MemMap, tmr_alarm[i].tmr_alarm_l); + } + DUMP_SUBSTRUCT_ARRAY(i, 2) + { + DUMP_VAR(p_MemMap, tmr_fiper[i]); + DUMP_VAR(p_MemMap, tmr_fiper[i]); + } + DUMP_SUBSTRUCT_ARRAY(i, 2) + { + DUMP_VAR(p_MemMap, tmr_etts[i].tmr_etts_l); + DUMP_VAR(p_MemMap, tmr_etts[i].tmr_etts_l); + } + } + + return E_OK; +} +#endif /* (defined(DEBUG_ERRORS) && ... */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/Rtc/fm_rtc.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/Peripherals/FM/Rtc/fm_rtc.h @@ -0,0 +1,217 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 fm_rtc.h + + @Description Memory map and internal definitions for FM RTC IEEE1588 Timer driver. + + @Cautions None +*//***************************************************************************/ + +#ifndef __FM_RTC_H__ +#define __FM_RTC_H__ + +#include "std_ext.h" +#include "fm_rtc_ext.h" + + +#define __ERR_MODULE__ MODULE_FM_RTC + +/* General definitions */ + +#define NANOSEC_PER_ONE_HZ_TICK 1000000000 +#define MIN_RTC_CLK_FREQ_HZ 1000 +#define MHz 1000000 + +#define ACCUMULATOR_OVERFLOW ((uint64_t)(1LL << 32)) + +/* RTC default values */ +#define DEFAULT_srcClock e_FM_RTC_SOURCE_CLOCK_SYSTEM +#define DEFAULT_bypass FALSE +#define DEFAULT_invertInputClkPhase FALSE +#define DEFAULT_invertOutputClkPhase FALSE +#define DEFAULT_outputClockDivisor 0x00000002 +#define DEFAULT_alarmPolarity e_FM_RTC_ALARM_POLARITY_ACTIVE_HIGH +#define DEFAULT_triggerPolarity e_FM_RTC_TRIGGER_ON_FALLING_EDGE +#define DEFAULT_pulseRealign FALSE +#define DEFAULT_clockPeriod 1000 + +/* FM RTC Registers definitions */ +#define TMR_CTRL_ALMP1 0x80000000 +#define TMR_CTRL_ALMP2 0x40000000 +#define TMR_CTRL_FS 0x10000000 +#define TMR_CTRL_PP1L 0x08000000 +#define TMR_CTRL_PP2L 0x04000000 +#define TMR_CTRL_TCLK_PERIOD_MASK 0x03FF0000 +#define TMR_CTRL_FRD 0x00004000 +#define TMR_CTRL_SLV 0x00002000 +#define TMR_CTRL_ETEP1 0x00000100 +#define TMR_CTRL_COPH 0x00000080 +#define TMR_CTRL_CIPH 0x00000040 +#define TMR_CTRL_TMSR 0x00000020 +#define TMR_CTRL_DBG 0x00000010 +#define TMR_CTRL_BYP 0x00000008 +#define TMR_CTRL_TE 0x00000004 +#define TMR_CTRL_CKSEL_OSC_CLK 0x00000003 +#define TMR_CTRL_CKSEL_MAC_CLK 0x00000001 +#define TMR_CTRL_CKSEL_EXT_CLK 0x00000000 +#define TMR_CTRL_TCLK_PERIOD_SHIFT 16 + +#define TMR_TEVENT_ETS2 0x02000000 +#define TMR_TEVENT_ETS1 0x01000000 +#define TMR_TEVENT_ALM2 0x00020000 +#define TMR_TEVENT_ALM1 0x00010000 +#define TMR_TEVENT_PP1 0x00000080 +#define TMR_TEVENT_PP2 0x00000040 +#define TMR_TEVENT_PP3 0x00000020 +#define TMR_TEVENT_ALL (TMR_TEVENT_ETS2 | TMR_TEVENT_ETS1 | \ + TMR_TEVENT_ALM2 | TMR_TEVENT_ALM1 | \ + TMR_TEVENT_PP1 | TMR_TEVENT_PP2 | TMR_TEVENT_PP3) + +#define TMR_PRSC_OCK_MASK 0x0000FFFF + + +/**************************************************************************//** + @Description Memory Mapped Registers +*//***************************************************************************/ + +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(push,1) +#endif /* defined(__MWERKS__) && ... */ +#define MEM_MAP_START + +/**************************************************************************//** + @Description FM RTC timer alarm +*//***************************************************************************/ +typedef _Packed struct t_TmrAlaram +{ + volatile uint32_t tmr_alarm_h; /**< */ + volatile uint32_t tmr_alarm_l; /**< */ +} _PackedType t_TmrAlaram; + +/**************************************************************************//** + @Description FM RTC timer Ex trigger +*//***************************************************************************/ +typedef _Packed struct t_TmrExtTrigger +{ + volatile uint32_t tmr_etts_h; /**< */ + volatile uint32_t tmr_etts_l; /**< */ +} _PackedType t_TmrExtTrigger; + +typedef _Packed struct +{ + volatile uint32_t tmr_id; /* Module ID and version register */ + volatile uint32_t tmr_id2; /* Module ID and configuration register */ + volatile uint32_t PTP_RESERVED1[30]; + volatile uint32_t tmr_ctrl; /* timer control register */ + volatile uint32_t tmr_tevent; /* timer event register */ + volatile uint32_t tmr_temask; /* timer event mask register */ + volatile uint32_t PTP_RESERVED2[3]; + volatile uint32_t tmr_cnt_h; /* timer counter high register */ + volatile uint32_t tmr_cnt_l; /* timer counter low register */ + volatile uint32_t tmr_add; /* timer drift compensation addend register */ + volatile uint32_t tmr_acc; /* timer accumulator register */ + volatile uint32_t tmr_prsc; /* timer prescale */ + volatile uint32_t PTP_RESERVED3; + volatile uint32_t tmr_off_h; /* timer offset high */ + volatile uint32_t tmr_off_l; /* timer offset low */ + volatile t_TmrAlaram tmr_alarm[FM_RTC_NUM_OF_ALARMS]; /* timer alarm */ + volatile uint32_t PTP_RESERVED4[2]; + volatile uint32_t tmr_fiper[FM_RTC_NUM_OF_PERIODIC_PULSES]; /* timer fixed period interval */ + volatile uint32_t PTP_RESERVED5[2]; + volatile t_TmrExtTrigger tmr_etts[FM_RTC_NUM_OF_EXT_TRIGGERS]; /*time stamp general purpose external */ + volatile uint32_t PTP_RESERVED6[3]; +} _PackedType t_FmRtcMemMap; + +#define MEM_MAP_END +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(pop) +#endif /* defined(__MWERKS__) && ... */ + + +/**************************************************************************//** + @Description RTC FM driver parameters structure. +*//***************************************************************************/ +typedef struct t_FmRtcDriverParam +{ + t_Handle h_Fm; /**< */ + e_FmSrcClk srcClk; /**< */ + uint32_t extSrcClkFreq; /**< */ + uint32_t rtcFreqHz; /**< */ + bool timerSlaveMode; /*Slave/Master Mode*/ + bool invertInputClkPhase; + bool invertOutputClkPhase; + uint32_t eventsMask; + bool bypass; /**< Indicates if frequency compensation is bypassed */ + bool pulseRealign; + e_FmRtcAlarmPolarity alarmPolarity[FM_RTC_NUM_OF_ALARMS]; + e_FmRtcTriggerPolarity triggerPolarity[FM_RTC_NUM_OF_EXT_TRIGGERS]; +} t_FmRtcDriverParam; + +typedef struct t_FmRtcAlarm +{ + t_FmRtcExceptionsCallback *f_AlarmCallback; + bool clearOnExpiration; +} t_FmRtcAlarm; + +typedef struct t_FmRtcPeriodicPulse +{ + t_FmRtcExceptionsCallback *f_PeriodicPulseCallback; +} t_FmRtcPeriodicPulse; + +typedef struct t_FmRtcExternalTrigger +{ + t_FmRtcExceptionsCallback *f_ExternalTriggerCallback; +} t_FmRtcExternalTrigger; + + +/**************************************************************************//** + @Description RTC FM driver control structure. +*//***************************************************************************/ +typedef struct t_FmRtc +{ + t_Part *p_Part; /**< Pointer to the integration device */ + t_Handle h_Fm; + t_Handle h_App; /**< Application handle */ + t_FmRtcMemMap *p_MemMap; /**< Pointer to RTC memory map */ + uint32_t clockPeriodNanoSec; /**< RTC clock period in nano-seconds (for FS mode) */ + uint32_t srcClkFreqMhz; + uint16_t outputClockDivisor; /**< Output clock divisor (for FS mode) */ + t_FmRtcAlarm alarmParams[FM_RTC_NUM_OF_ALARMS]; + t_FmRtcPeriodicPulse periodicPulseParams[FM_RTC_NUM_OF_PERIODIC_PULSES]; + t_FmRtcExternalTrigger externalTriggerParams[FM_RTC_NUM_OF_EXT_TRIGGERS]; + t_FmRtcDriverParam *p_RtcDriverParam; /**< RTC Driver parameters (for Init phase) */ +} t_FmRtc; + + +#endif /* __FM_RTC_H__ */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/fm.c +++ linux-3.13.0/drivers/net/dpa/NetCommSw/Peripherals/FM/fm.c @@ -0,0 +1,4605 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 fm.c + + @Description FM driver routines implementation. +*//***************************************************************************/ +#include "std_ext.h" +#include "error_ext.h" +#include "xx_ext.h" +#include "string_ext.h" +#include "sprint_ext.h" +#include "debug_ext.h" +#include "fm_muram_ext.h" + +#include "fm_common.h" +#include "fm_ipc.h" +#include "fm.h" + + +/****************************************/ +/* static functions */ +/****************************************/ + +static volatile bool blockingFlag = FALSE; +static void IpcMsgCompletionCB(t_Handle h_Fm, + uint8_t *p_Msg, + uint8_t *p_Reply, + uint32_t replyLength, + t_Error status) +{ + UNUSED(h_Fm);UNUSED(p_Msg);UNUSED(p_Reply);UNUSED(replyLength);UNUSED(status); + blockingFlag = FALSE; +} + +static bool IsFmanCtrlCodeLoaded(t_Fm *p_Fm) +{ + t_FMIramRegs *p_Iram; + + ASSERT_COND(p_Fm); + p_Iram = (t_FMIramRegs *)UINT_TO_PTR(p_Fm->baseAddr + FM_MM_IMEM); + + return (bool)!!(GET_UINT32(p_Iram->iready) & IRAM_READY); +} + +static t_Error CheckFmParameters(t_Fm *p_Fm) +{ + if (IsFmanCtrlCodeLoaded(p_Fm) && !p_Fm->p_FmDriverParam->resetOnInit) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Old FMan CTRL code is loaded; FM must be reset!")); + if(!p_Fm->p_FmDriverParam->dmaAxiDbgNumOfBeats || (p_Fm->p_FmDriverParam->dmaAxiDbgNumOfBeats > DMA_MODE_MAX_AXI_DBG_NUM_OF_BEATS)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("axiDbgNumOfBeats has to be in the range 1 - %d", DMA_MODE_MAX_AXI_DBG_NUM_OF_BEATS)); + if(p_Fm->p_FmDriverParam->dmaCamNumOfEntries % DMA_CAM_UNITS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("dmaCamNumOfEntries has to be divisble by %d", DMA_CAM_UNITS)); + if(!p_Fm->p_FmDriverParam->dmaCamNumOfEntries || (p_Fm->p_FmDriverParam->dmaCamNumOfEntries > DMA_MODE_MAX_CAM_NUM_OF_ENTRIES)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("dmaCamNumOfEntries has to be in the range 1 - %d", DMA_MODE_MAX_CAM_NUM_OF_ENTRIES)); + if(p_Fm->p_FmDriverParam->dmaCommQThresholds.assertEmergency > DMA_THRESH_MAX_COMMQ) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("dmaCommQThresholds.assertEmergency can not be larger than %d", DMA_THRESH_MAX_COMMQ)); + if(p_Fm->p_FmDriverParam->dmaCommQThresholds.clearEmergency > DMA_THRESH_MAX_COMMQ) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("dmaCommQThresholds.clearEmergency can not be larger than %d", DMA_THRESH_MAX_COMMQ)); + if(p_Fm->p_FmDriverParam->dmaCommQThresholds.clearEmergency >= p_Fm->p_FmDriverParam->dmaCommQThresholds.assertEmergency) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("dmaCommQThresholds.clearEmergency must be smaller than dmaCommQThresholds.assertEmergency")); + if(p_Fm->p_FmDriverParam->dmaReadBufThresholds.assertEmergency > DMA_THRESH_MAX_BUF) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("dmaReadBufThresholds.assertEmergency can not be larger than %d", DMA_THRESH_MAX_BUF)); + if(p_Fm->p_FmDriverParam->dmaReadBufThresholds.clearEmergency > DMA_THRESH_MAX_BUF) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("dmaReadBufThresholds.clearEmergency can not be larger than %d", DMA_THRESH_MAX_BUF)); + if(p_Fm->p_FmDriverParam->dmaReadBufThresholds.clearEmergency >= p_Fm->p_FmDriverParam->dmaReadBufThresholds.assertEmergency) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("dmaReadBufThresholds.clearEmergency must be smaller than dmaReadBufThresholds.assertEmergency")); + if(p_Fm->p_FmDriverParam->dmaWriteBufThresholds.assertEmergency > DMA_THRESH_MAX_BUF) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("dmaWriteBufThresholds.assertEmergency can not be larger than %d", DMA_THRESH_MAX_BUF)); + if(p_Fm->p_FmDriverParam->dmaWriteBufThresholds.clearEmergency > DMA_THRESH_MAX_BUF) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("dmaWriteBufThresholds.clearEmergency can not be larger than %d", DMA_THRESH_MAX_BUF)); + if(p_Fm->p_FmDriverParam->dmaWriteBufThresholds.clearEmergency >= p_Fm->p_FmDriverParam->dmaWriteBufThresholds.assertEmergency) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("dmaWriteBufThresholds.clearEmergency must be smaller than dmaWriteBufThresholds.assertEmergency")); + + if(!p_Fm->p_FmStateStruct->fmClkFreq) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("fmClkFreq must be set.")); + if (USEC_TO_CLK(p_Fm->p_FmDriverParam->dmaWatchdog, p_Fm->p_FmStateStruct->fmClkFreq) > DMA_MAX_WATCHDOG) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, + ("dmaWatchdog depends on FM clock. dmaWatchdog(in microseconds) * clk (in Mhz), may not exceed 0x08x", DMA_MAX_WATCHDOG)); + +#ifdef FM_PARTITION_ARRAY + { + t_FmRevisionInfo revInfo; + uint8_t i; + + FM_GetRevision(p_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + for (i=0; ip_FmDriverParam->liodnBasePerPort[i] & ~FM_LIODN_BASE_MASK) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("liodn number is out of range")); + } +#endif /* FM_PARTITION_ARRAY */ + + if(p_Fm->p_FmStateStruct->totalFifoSize % BMI_FIFO_UNITS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("totalFifoSize number has to be divisible by %d", BMI_FIFO_UNITS)); + if(!p_Fm->p_FmStateStruct->totalFifoSize || (p_Fm->p_FmStateStruct->totalFifoSize > BMI_MAX_FIFO_SIZE)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("totalFifoSize number has to be in the range 256 - %d", BMI_MAX_FIFO_SIZE)); + if(!p_Fm->p_FmStateStruct->totalNumOfTasks || (p_Fm->p_FmStateStruct->totalNumOfTasks > BMI_MAX_NUM_OF_TASKS)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("totalNumOfTasks number has to be in the range 1 - %d", BMI_MAX_NUM_OF_TASKS)); + if(!p_Fm->p_FmStateStruct->maxNumOfOpenDmas || (p_Fm->p_FmStateStruct->maxNumOfOpenDmas > BMI_MAX_NUM_OF_DMAS)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("maxNumOfOpenDmas number has to be in the range 1 - %d", BMI_MAX_NUM_OF_DMAS)); + + if(p_Fm->p_FmDriverParam->thresholds.dispLimit > FPM_MAX_DISP_LIMIT) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("thresholds.dispLimit can't be greater than %d", FPM_MAX_DISP_LIMIT)); + + if(!p_Fm->f_Exception) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Exceptions callback not provided")); + if(!p_Fm->f_BusError) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Exceptions callback not provided")); + + return E_OK; +} + +static void SendIpcIsr(t_Fm *p_Fm, uint32_t macEvent, uint32_t pendingReg) +{ + t_Error err; + t_FmIpcIsr fmIpcIsr; + t_FmIpcMsg msg; + + ASSERT_COND(p_Fm->guestId == NCSW_MASTER_ID); + ASSERT_COND(p_Fm->h_IpcSessions[p_Fm->intrMng[macEvent].guestId]); + if (p_Fm->intrMng[macEvent].guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + msg.msgId = FM_GUEST_ISR; + fmIpcIsr.pendingReg = pendingReg; + fmIpcIsr.boolErr = FALSE; + memcpy(msg.msgBody, &fmIpcIsr, sizeof(fmIpcIsr)); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[p_Fm->intrMng[macEvent].guestId], + (uint8_t*)&msg, + sizeof(msg.msgId) + sizeof(fmIpcIsr), + NULL, + NULL, + NULL, + NULL)) != E_OK) + REPORT_ERROR(MINOR, err, NO_MSG); + return; + } + else + p_Fm->intrMng[macEvent].f_Isr(p_Fm->intrMng[macEvent].h_SrcHandle); +} + +static void BmiErrEvent(t_Fm *p_Fm) +{ + uint32_t event, mask, force; + + event = GET_UINT32(p_Fm->p_FmBmiRegs->fmbm_ievr); + mask = GET_UINT32(p_Fm->p_FmBmiRegs->fmbm_ier); + event &= mask; + + /* clear the forced events */ + force = GET_UINT32(p_Fm->p_FmBmiRegs->fmbm_ifr); + if(force & event) + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_ifr, force & ~event); + + + /* clear the acknowledged events */ + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_ievr, event); + + if(event & BMI_ERR_INTR_EN_PIPELINE_ECC) + p_Fm->f_Exception(p_Fm->h_App,e_FM_EX_BMI_PIPELINE_ECC); + if(event & BMI_ERR_INTR_EN_LIST_RAM_ECC) + p_Fm->f_Exception(p_Fm->h_App,e_FM_EX_BMI_LIST_RAM_ECC); + if(event & BMI_ERR_INTR_EN_STATISTICS_RAM_ECC) + p_Fm->f_Exception(p_Fm->h_App,e_FM_EX_BMI_STATISTICS_RAM_ECC); + if(event & BMI_ERR_INTR_EN_DISPATCH_RAM_ECC) + p_Fm->f_Exception(p_Fm->h_App,e_FM_EX_BMI_DISPATCH_RAM_ECC); +} + +static void QmiErrEvent(t_Fm *p_Fm) +{ + uint32_t event, mask, force; + + event = GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_eie); + mask = GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_eien); + + event &= mask; + + /* clear the forced events */ + force = GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_eif); + if(force & event) + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_eif, force & ~event); + + /* clear the acknowledged events */ + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_eie, event); + + if(event & QMI_ERR_INTR_EN_DOUBLE_ECC) + p_Fm->f_Exception(p_Fm->h_App,e_FM_EX_QMI_DOUBLE_ECC); + if(event & QMI_ERR_INTR_EN_DEQ_FROM_DEF) + p_Fm->f_Exception(p_Fm->h_App,e_FM_EX_QMI_DEQ_FROM_UNKNOWN_PORTID); +} + +static void DmaErrEvent(t_Fm *p_Fm) +{ + uint64_t addr=0; + uint32_t status, mask, tmpReg=0; + uint8_t tnum; + uint8_t hardwarePortId; + uint8_t relativePortId; + uint16_t liodn; + + status = GET_UINT32(p_Fm->p_FmDmaRegs->fmdmsr); + mask = GET_UINT32(p_Fm->p_FmDmaRegs->fmdmmr); + + /* get bus error regs befor clearing BER */ + if ((status & DMA_STATUS_BUS_ERR) && (mask & DMA_MODE_BER)) + { + addr = (uint64_t)GET_UINT32(p_Fm->p_FmDmaRegs->fmdmtal); + addr |= ((uint64_t)(GET_UINT32(p_Fm->p_FmDmaRegs->fmdmtah)) << 32); + + /* get information about the owner of that bus error */ + tmpReg = GET_UINT32(p_Fm->p_FmDmaRegs->fmdmtcid); + } + + /* clear set events */ + WRITE_UINT32(p_Fm->p_FmDmaRegs->fmdmsr, status); + + if ((status & DMA_STATUS_BUS_ERR) && (mask & DMA_MODE_BER)) + { + hardwarePortId = (uint8_t)(((tmpReg & DMA_TRANSFER_PORTID_MASK) >> DMA_TRANSFER_PORTID_SHIFT)); + HW_PORT_ID_TO_SW_PORT_ID(relativePortId, hardwarePortId); + tnum = (uint8_t)((tmpReg & DMA_TRANSFER_TNUM_MASK) >> DMA_TRANSFER_TNUM_SHIFT); + liodn = (uint16_t)(tmpReg & DMA_TRANSFER_LIODN_MASK); + ASSERT_COND(p_Fm->p_FmStateStruct->portsTypes[hardwarePortId] != e_FM_PORT_TYPE_DUMMY); + p_Fm->f_BusError(p_Fm->h_App, p_Fm->p_FmStateStruct->portsTypes[hardwarePortId], relativePortId, addr, tnum, liodn); + } + if(mask & DMA_MODE_ECC) + { + if (status & DMA_STATUS_READ_ECC) + p_Fm->f_Exception(p_Fm->h_App, e_FM_EX_DMA_READ_ECC); + if (status & DMA_STATUS_SYSTEM_WRITE_ECC) + p_Fm->f_Exception(p_Fm->h_App, e_FM_EX_DMA_SYSTEM_WRITE_ECC); + if (status & DMA_STATUS_FM_WRITE_ECC) + p_Fm->f_Exception(p_Fm->h_App, e_FM_EX_DMA_FM_WRITE_ECC); + } +} + +static void FpmErrEvent(t_Fm *p_Fm) +{ + uint32_t event; + + event = GET_UINT32(p_Fm->p_FmFpmRegs->fpmem); + + /* clear the all occurred events */ + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmem, event); + + if((event & FPM_EV_MASK_DOUBLE_ECC) && (event & FPM_EV_MASK_DOUBLE_ECC_EN)) + p_Fm->f_Exception(p_Fm->h_App,e_FM_EX_FPM_DOUBLE_ECC); + if((event & FPM_EV_MASK_STALL) && (event & FPM_EV_MASK_STALL_EN)) + p_Fm->f_Exception(p_Fm->h_App,e_FM_EX_FPM_STALL_ON_TASKS); + if((event & FPM_EV_MASK_SINGLE_ECC) && (event & FPM_EV_MASK_SINGLE_ECC_EN)) + p_Fm->f_Exception(p_Fm->h_App,e_FM_EX_FPM_SINGLE_ECC); +} + +static void MuramErrIntr(t_Fm *p_Fm) +{ + uint32_t event, mask; + + event = GET_UINT32(p_Fm->p_FmFpmRegs->fmrcr); + mask = GET_UINT32(p_Fm->p_FmFpmRegs->fmrie); + + /* clear MURAM event bit */ + WRITE_UINT32(p_Fm->p_FmFpmRegs->fmrcr, event & ~FPM_RAM_CTL_IRAM_ECC); + + ASSERT_COND(event & FPM_RAM_CTL_MURAM_ECC); + ASSERT_COND(event & FPM_RAM_CTL_RAMS_ECC_EN); + + if ((mask & FPM_MURAM_ECC_ERR_EX_EN)) + p_Fm->f_Exception(p_Fm->h_App, e_FM_EX_MURAM_ECC); +} + +static void IramErrIntr(t_Fm *p_Fm) +{ + uint32_t event, mask; + + event = GET_UINT32(p_Fm->p_FmFpmRegs->fmrcr) ; + mask = GET_UINT32(p_Fm->p_FmFpmRegs->fmrie); + /* clear the acknowledged events (do not clear IRAM event) */ + WRITE_UINT32(p_Fm->p_FmFpmRegs->fmrcr, event & ~FPM_RAM_CTL_MURAM_ECC); + + ASSERT_COND(event & FPM_RAM_CTL_IRAM_ECC); + ASSERT_COND(event & FPM_RAM_CTL_IRAM_ECC_EN); + + if ((mask & FPM_IRAM_ECC_ERR_EX_EN)) + p_Fm->f_Exception(p_Fm->h_App, e_FM_EX_IRAM_ECC); +} + +static void QmiEvent(t_Fm *p_Fm) +{ + uint32_t event, mask, force; + + event = GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_ie); + mask = GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_ien); + + event &= mask; + + /* clear the forced events */ + force = GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_if); + if(force & event) + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_if, force & ~event); + + /* clear the acknowledged events */ + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_ie, event); + + if(event & QMI_INTR_EN_SINGLE_ECC) + p_Fm->f_Exception(p_Fm->h_App,e_FM_EX_QMI_SINGLE_ECC); +} + +static void UnimplementedIsr(t_Handle h_Arg) +{ + UNUSED(h_Arg); + + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Unimplemented Isr!")); +} + +static void UnimplementedFmanCtrlIsr(t_Handle h_Arg, uint32_t event) +{ + UNUSED(h_Arg); UNUSED(event); + + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Unimplemented FmCtl Isr!")); +} + +static void FmEnableTimeStamp(t_Fm *p_Fm) +{ + uint32_t tmpReg; + uint64_t fraction; + uint32_t integer; + uint8_t count1MicroBit = 8; + uint32_t tsFrequency = (uint32_t)(1<p_FmStateStruct->fmClkFreq; + /* we multiply by 2^16 to keep the fraction of the division */ + /* we do not divid back, since we write this value as fraction - see spec */ + fraction = ((tsFrequency << 16) - (integer << 16)*p_Fm->p_FmStateStruct->fmClkFreq)/p_Fm->p_FmStateStruct->fmClkFreq; + /* we check remainder of the division in order to round up if not integer */ + if(((tsFrequency << 16) - (integer << 16)*p_Fm->p_FmStateStruct->fmClkFreq) % p_Fm->p_FmStateStruct->fmClkFreq) + fraction++; + + tmpReg = (integer << FPM_TS_INT_SHIFT) | (uint16_t)fraction; + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmtsc2, tmpReg); + + /* enable timestamp with original clock */ + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmtsc1, FPM_TS_CTL_EN); + + p_Fm->p_FmStateStruct->count1MicroBit = count1MicroBit; + p_Fm->p_FmStateStruct->enabledTimeStamp = TRUE; +} + +static void FreeInitResources(t_Fm *p_Fm) +{ + if (p_Fm->camBaseAddr) + FM_MURAM_FreeMem(p_Fm->h_FmMuram, UINT_TO_PTR(p_Fm->camBaseAddr)); + if (p_Fm->fifoBaseAddr) + FM_MURAM_FreeMem(p_Fm->h_FmMuram, UINT_TO_PTR(p_Fm->fifoBaseAddr)); + if (p_Fm->resAddr) + FM_MURAM_FreeMem(p_Fm->h_FmMuram, UINT_TO_PTR(p_Fm->resAddr)); +} + +static t_Error ClearIRam(t_Fm *p_Fm) +{ + t_FMIramRegs *p_Iram; + int i; + + ASSERT_COND(p_Fm); + p_Iram = (t_FMIramRegs *)UINT_TO_PTR(p_Fm->baseAddr + FM_MM_IMEM); + + /* Enable the auto-increment */ + WRITE_UINT32(p_Iram->iadd, IRAM_IADD_AIE); + while (GET_UINT32(p_Iram->iadd) != IRAM_IADD_AIE) ; + + for (i=0; i < (FM_IRAM_SIZE/4); i++) + WRITE_UINT32(p_Iram->idata, 0xffffffff); + + WRITE_UINT32(p_Iram->iadd, FM_IRAM_SIZE - 4); + CORE_MemoryBarrier(); + while (GET_UINT32(p_Iram->idata) != 0xffffffff) ; + + return E_OK; +} + +static t_Error LoadFmanCtrlCode(t_Fm *p_Fm) +{ + t_FMIramRegs *p_Iram; + int i; + uint32_t tmp; + uint8_t compTo16; + + ASSERT_COND(p_Fm); + p_Iram = (t_FMIramRegs *)UINT_TO_PTR(p_Fm->baseAddr + FM_MM_IMEM); + + /* Enable the auto-increment */ + WRITE_UINT32(p_Iram->iadd, IRAM_IADD_AIE); + while (GET_UINT32(p_Iram->iadd) != IRAM_IADD_AIE) ; + + for (i=0; i < (p_Fm->p_FmDriverParam->firmware.size / 4); i++) + WRITE_UINT32(p_Iram->idata, p_Fm->p_FmDriverParam->firmware.p_Code[i]); + + compTo16 = (uint8_t)(p_Fm->p_FmDriverParam->firmware.size % 16); + if(compTo16) + for (i=0; i < ((16-compTo16) / 4); i++) + WRITE_UINT32(p_Iram->idata, 0xffffffff); + + WRITE_UINT32(p_Iram->iadd,p_Fm->p_FmDriverParam->firmware.size-4); + while(GET_UINT32(p_Iram->iadd) != (p_Fm->p_FmDriverParam->firmware.size-4)) ; + + /* verify that writing has completed */ + while (GET_UINT32(p_Iram->idata) != p_Fm->p_FmDriverParam->firmware.p_Code[(p_Fm->p_FmDriverParam->firmware.size / 4)-1]) ; + + if (p_Fm->p_FmDriverParam->fwVerify) + { + WRITE_UINT32(p_Iram->iadd, IRAM_IADD_AIE); + while (GET_UINT32(p_Iram->iadd) != IRAM_IADD_AIE) ; + for (i=0; i < (p_Fm->p_FmDriverParam->firmware.size / 4); i++) + if ((tmp=GET_UINT32(p_Iram->idata)) != p_Fm->p_FmDriverParam->firmware.p_Code[i]) + RETURN_ERROR(MAJOR, E_WRITE_FAILED, + ("UCode write error : write 0x%x, read 0x%x", + p_Fm->p_FmDriverParam->firmware.p_Code[i],tmp)); + WRITE_UINT32(p_Iram->iadd, 0x0); + } + + /* Enable patch from IRAM */ + WRITE_UINT32(p_Iram->iready, IRAM_READY); + XX_UDelay(1000); + + DBG(INFO, ("FMan-Controller code (ver %d.%d) loaded to IRAM.", + ((uint8_t *)p_Fm->p_FmDriverParam->firmware.p_Code)[5], + ((uint8_t *)p_Fm->p_FmDriverParam->firmware.p_Code)[7])); + + return E_OK; +} + +static void GuestErrorIsr(t_Fm *p_Fm, uint32_t pending) +{ +#define FM_G_CALL_1G_MAC_ERR_ISR(_id) \ +do { \ + p_Fm->intrMng[(e_FmInterModuleEvent)(e_FM_EV_ERR_1G_MAC0+_id)].f_Isr(p_Fm->intrMng[(e_FmInterModuleEvent)(e_FM_EV_ERR_1G_MAC0+_id)].h_SrcHandle);\ +} while (0) +#define FM_G_CALL_10G_MAC_ERR_ISR(_id) \ +do { \ + p_Fm->intrMng[(e_FmInterModuleEvent)(e_FM_EV_ERR_10G_MAC0+_id)].f_Isr(p_Fm->intrMng[(e_FmInterModuleEvent)(e_FM_EV_ERR_10G_MAC0+_id)].h_SrcHandle);\ +} while (0) + + /* error interrupts */ + if (pending & ERR_INTR_EN_1G_MAC0) + FM_G_CALL_1G_MAC_ERR_ISR(0); + if (pending & ERR_INTR_EN_1G_MAC1) + FM_G_CALL_1G_MAC_ERR_ISR(1); + if (pending & ERR_INTR_EN_1G_MAC2) + FM_G_CALL_1G_MAC_ERR_ISR(2); + if (pending & ERR_INTR_EN_1G_MAC3) + FM_G_CALL_1G_MAC_ERR_ISR(3); + if (pending & ERR_INTR_EN_1G_MAC4) + FM_G_CALL_1G_MAC_ERR_ISR(4); + if (pending & ERR_INTR_EN_10G_MAC0) + FM_G_CALL_10G_MAC_ERR_ISR(0); +} + +static void GuestEventIsr(t_Fm *p_Fm, uint32_t pending) +{ +#define FM_G_CALL_1G_MAC_TMR_ISR(_id) \ +do { \ + p_Fm->intrMng[(e_FmInterModuleEvent)(e_FM_EV_1G_MAC0_TMR+_id)].f_Isr(p_Fm->intrMng[(e_FmInterModuleEvent)(e_FM_EV_1G_MAC0_TMR+_id)].h_SrcHandle);\ +} while (0) + + if (pending & INTR_EN_1G_MAC0_TMR) + FM_G_CALL_1G_MAC_TMR_ISR(0); + if (pending & INTR_EN_1G_MAC1_TMR) + FM_G_CALL_1G_MAC_TMR_ISR(1); + if (pending & INTR_EN_1G_MAC2_TMR) + FM_G_CALL_1G_MAC_TMR_ISR(2); + if (pending & INTR_EN_1G_MAC3_TMR) + FM_G_CALL_1G_MAC_TMR_ISR(3); + if (pending & INTR_EN_1G_MAC4_TMR) + FM_G_CALL_1G_MAC_TMR_ISR(4); + if(pending & INTR_EN_TMR) + p_Fm->intrMng[e_FM_EV_TMR].f_Isr(p_Fm->intrMng[e_FM_EV_TMR].h_SrcHandle); +} + + +/****************************************/ +/* Inter-Module functions */ +/****************************************/ +static t_Error FmGuestHandleIpcMsgCB(t_Handle h_Fm, + uint8_t *p_Msg, + uint32_t msgLength, + uint8_t *p_Reply, + uint32_t *p_ReplyLength) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + t_FmIpcMsg *p_IpcMsg = (t_FmIpcMsg*)p_Msg; + + UNUSED(p_Reply); + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR((msgLength > sizeof(uint32_t)), E_INVALID_VALUE); + +#ifdef DISABLE_SANITY_CHECKS + UNUSED(msgLength); +#endif /* DISABLE_SANITY_CHECKS */ + + ASSERT_COND(p_Msg); + + *p_ReplyLength = 0; + + switch(p_IpcMsg->msgId) + { + case (FM_GUEST_ISR): + { + t_FmIpcIsr ipcIsr; + + memcpy((uint8_t*)&ipcIsr, p_IpcMsg->msgBody, sizeof(t_FmIpcIsr)); + if(ipcIsr.boolErr) + GuestErrorIsr(p_Fm, ipcIsr.pendingReg); + else + GuestEventIsr(p_Fm, ipcIsr.pendingReg); + break; + } + default: + *p_ReplyLength = 0; + RETURN_ERROR(MINOR, E_INVALID_SELECTION, ("command not found!!!")); + } + return E_OK; +} + +static t_Error FmHandleIpcMsgCB(t_Handle h_Fm, + uint8_t *p_Msg, + uint32_t msgLength, + uint8_t *p_Reply, + uint32_t *p_ReplyLength) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + t_FmIpcMsg *p_IpcMsg = (t_FmIpcMsg*)p_Msg; + t_FmIpcReply *p_IpcReply = (t_FmIpcReply*)p_Reply; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR((msgLength >= sizeof(uint32_t)), E_INVALID_VALUE); + +#ifdef DISABLE_SANITY_CHECKS + UNUSED(msgLength); +#endif /* DISABLE_SANITY_CHECKS */ + + ASSERT_COND(p_IpcMsg); + + memset(p_IpcReply, 0, (sizeof(uint8_t) * FM_IPC_MAX_REPLY_SIZE)); + *p_ReplyLength = 0; + + switch(p_IpcMsg->msgId) + { + case (FM_GET_SET_PORT_PARAMS): + { + t_FmIpcPortInInitParams ipcInitParams; + t_FmInterModulePortInitParams initParams; + t_FmIpcPhysAddr ipcPhysAddr; + + memcpy((uint8_t*)&ipcInitParams, p_IpcMsg->msgBody, sizeof(t_FmIpcPortInInitParams)); + initParams.hardwarePortId = ipcInitParams.hardwarePortId; + initParams.portType = (e_FmPortType)ipcInitParams.enumPortType; + initParams.independentMode = (bool)(ipcInitParams.boolIndependentMode); + initParams.liodnOffset = ipcInitParams.liodnOffset; + initParams.numOfTasks = ipcInitParams.numOfTasks; + initParams.numOfExtraTasks = ipcInitParams.numOfExtraTasks; + initParams.numOfOpenDmas = ipcInitParams.numOfOpenDmas; + initParams.numOfExtraOpenDmas = ipcInitParams.numOfExtraOpenDmas; + initParams.sizeOfFifo = ipcInitParams.sizeOfFifo; + initParams.extraSizeOfFifo = ipcInitParams.extraSizeOfFifo; + initParams.deqPipelineDepth = ipcInitParams.deqPipelineDepth; + initParams.liodnBase = ipcInitParams.liodnBase; + + p_IpcReply->error = (uint32_t)FmGetSetPortParams(h_Fm, &initParams); + ipcPhysAddr.high = initParams.fmMuramPhysBaseAddr.high; + ipcPhysAddr.low = initParams.fmMuramPhysBaseAddr.low; + memcpy(p_IpcReply->replyBody, (uint8_t*)&ipcPhysAddr, sizeof(t_FmIpcPhysAddr)); + *p_ReplyLength = sizeof(uint32_t) + sizeof(t_FmIpcPhysAddr); + break; + } + case (FM_SET_SIZE_OF_FIFO): + { + t_FmIpcPortFifoParams ipcPortFifoParams; + t_FmInterModulePortRxPoolsParams rxPoolsParams; + + memcpy((uint8_t*)&ipcPortFifoParams, p_IpcMsg->msgBody, sizeof(t_FmIpcPortFifoParams)); + rxPoolsParams.numOfPools = ipcPortFifoParams.numOfPools; + rxPoolsParams.secondLargestBufSize = ipcPortFifoParams.secondLargestBufSize; + rxPoolsParams.largestBufSize = ipcPortFifoParams.largestBufSize; + + p_IpcReply->error = (uint32_t)FmSetSizeOfFifo(h_Fm, ipcPortFifoParams.rsrcParams.hardwarePortId, + (e_FmPortType)ipcPortFifoParams.enumPortType, + (bool)ipcPortFifoParams.boolIndependentMode, + &ipcPortFifoParams.rsrcParams.val, + ipcPortFifoParams.rsrcParams.extra, + ipcPortFifoParams.deqPipelineDepth, + &rxPoolsParams, + (bool)ipcPortFifoParams.boolInitialConfig); + memcpy(p_IpcReply->replyBody, (uint8_t*)&ipcPortFifoParams.rsrcParams.val, sizeof(uint32_t)); + *p_ReplyLength = sizeof(uint32_t) + sizeof(uint32_t); + break; + } + case (FM_SET_NUM_OF_TASKS): + { + t_FmIpcPortRsrcParams ipcPortRsrcParams; + + memcpy((uint8_t*)&ipcPortRsrcParams, p_IpcMsg->msgBody, sizeof(t_FmIpcPortRsrcParams)); + p_IpcReply->error = (uint32_t)FmSetNumOfTasks(h_Fm, ipcPortRsrcParams.hardwarePortId, + (uint8_t)ipcPortRsrcParams.val, + (uint8_t)ipcPortRsrcParams.extra, + (bool)ipcPortRsrcParams.boolInitialConfig); + *p_ReplyLength = sizeof(uint32_t); + break; + } + case (FM_SET_NUM_OF_OPEN_DMAS): + { + t_FmIpcPortRsrcParams ipcPortRsrcParams; + + memcpy((uint8_t*)&ipcPortRsrcParams, p_IpcMsg->msgBody, sizeof(t_FmIpcPortRsrcParams)); + p_IpcReply->error = (uint32_t)FmSetNumOfOpenDmas(h_Fm, ipcPortRsrcParams.hardwarePortId, + (uint8_t)ipcPortRsrcParams.val, + (uint8_t)ipcPortRsrcParams.extra, + (bool)ipcPortRsrcParams.boolInitialConfig); + *p_ReplyLength = sizeof(uint32_t); + break; + } + case (FM_RESUME_STALLED_PORT): + *p_ReplyLength = sizeof(uint32_t); + p_IpcReply->error = (uint32_t)FmResumeStalledPort(h_Fm, p_IpcMsg->msgBody[0]); + break; + case (FM_MASTER_IS_ALIVE): + { + uint8_t guestId = p_IpcMsg->msgBody[0]; + /* build the FM master partition IPC address */ + memset(p_Fm->fmIpcHandlerModuleName[guestId], 0, (sizeof(char)) * MODULE_NAME_SIZE); + if(Sprint (p_Fm->fmIpcHandlerModuleName[guestId], "FM_%d_%d",p_Fm->p_FmStateStruct->fmId, guestId) != (guestId<10 ? 6:7)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Sprint failed")); + p_Fm->h_IpcSessions[guestId] = XX_IpcInitSession(p_Fm->fmIpcHandlerModuleName[guestId], p_Fm->fmModuleName); + if (p_Fm->h_IpcSessions[guestId] == NULL) + RETURN_ERROR(MAJOR, E_NOT_AVAILABLE, ("FM Master IPC session for guest %d", guestId)); + *(uint8_t*)(p_IpcReply->replyBody) = 1; + *p_ReplyLength = sizeof(uint32_t) + sizeof(uint8_t); + break; + } + case (FM_IS_PORT_STALLED): + { + bool tmp; + + p_IpcReply->error = (uint32_t)FmIsPortStalled(h_Fm, p_IpcMsg->msgBody[0], &tmp); + *(uint8_t*)(p_IpcReply->replyBody) = (uint8_t)tmp; + *p_ReplyLength = sizeof(uint32_t) + sizeof(uint8_t); + break; + } + case (FM_RESET_MAC): + { + t_FmIpcMacParams ipcMacParams; + + memcpy((uint8_t*)&ipcMacParams, p_IpcMsg->msgBody, sizeof(t_FmIpcMacParams)); + p_IpcReply->error = (uint32_t)FmResetMac(p_Fm, + (e_FmMacType)(ipcMacParams.enumType), + ipcMacParams.id); + *p_ReplyLength = sizeof(uint32_t); + break; + } + case (FM_SET_MAC_MAX_FRAME): + { + t_Error err; + t_FmIpcMacMaxFrameParams ipcMacMaxFrameParams; + + memcpy((uint8_t*)&ipcMacMaxFrameParams, p_IpcMsg->msgBody, sizeof(t_FmIpcMacMaxFrameParams)); + if ((err = FmSetMacMaxFrame(p_Fm, + (e_FmMacType)(ipcMacMaxFrameParams.macParams.enumType), + ipcMacMaxFrameParams.macParams.id, + ipcMacMaxFrameParams.maxFrameLength)) != E_OK) + REPORT_ERROR(MINOR, err, NO_MSG); + break; + } + case (FM_GET_CLK_FREQ): + memcpy(p_IpcReply->replyBody, (uint8_t*)&p_Fm->p_FmStateStruct->fmClkFreq, sizeof(uint16_t)); + *p_ReplyLength = sizeof(uint32_t) + sizeof(uint16_t); + break; + case (FM_FREE_PORT): + { + t_FmInterModulePortFreeParams portParams; + t_FmIpcPortFreeParams ipcPortParams; + + memcpy((uint8_t*)&ipcPortParams, p_IpcMsg->msgBody, sizeof(t_FmIpcPortFreeParams)); + portParams.hardwarePortId = ipcPortParams.hardwarePortId; + portParams.portType = (e_FmPortType)(ipcPortParams.enumPortType); +#ifdef FM_QMI_DEQ_OPTIONS_SUPPORT + portParams.deqPipelineDepth = ipcPortParams.deqPipelineDepth; +#endif /* FM_QMI_DEQ_OPTIONS_SUPPORT */ + FmFreePortParams(h_Fm, &portParams); + break; + } + case (FM_REGISTER_INTR): + { + t_FmIpcRegisterIntr ipcRegIntr; + + memcpy((uint8_t*)&ipcRegIntr, p_IpcMsg->msgBody, sizeof(ipcRegIntr)); + p_Fm->intrMng[ipcRegIntr.event].guestId = ipcRegIntr.guestId; + break; + } +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) + case (FM_DUMP_REGS): + { + t_Error err; + if ((err = FM_DumpRegs(h_Fm)) != E_OK) + REPORT_ERROR(MINOR, err, NO_MSG); + break; + } + case (FM_DUMP_PORT_REGS): + { + t_Error err; + + if ((err = FmDumpPortRegs(h_Fm, p_IpcMsg->msgBody[0])) != E_OK) + REPORT_ERROR(MINOR, err, NO_MSG); + break; + } +#endif /* (defined(DEBUG_ERRORS) && ... */ + case (FM_GET_REV): + { + t_FmRevisionInfo revInfo; + t_FmIpcRevisionInfo ipcRevInfo; + + p_IpcReply->error = (uint32_t)FM_GetRevision(h_Fm, &revInfo); + ipcRevInfo.majorRev = revInfo.majorRev; + ipcRevInfo.minorRev = revInfo.minorRev; + memcpy(p_IpcReply->replyBody, (uint8_t*)&ipcRevInfo, sizeof(t_FmIpcRevisionInfo)); + *p_ReplyLength = sizeof(uint32_t) + sizeof(t_FmIpcRevisionInfo); + break; + } + case (FM_DMA_STAT): + { + t_FmDmaStatus dmaStatus; + t_FmIpcDmaStatus ipcDmaStatus; + + FM_GetDmaStatus(h_Fm, &dmaStatus); + ipcDmaStatus.boolCmqNotEmpty = (uint8_t)dmaStatus.cmqNotEmpty; + ipcDmaStatus.boolBusError = (uint8_t)dmaStatus.busError; + ipcDmaStatus.boolReadBufEccError = (uint8_t)dmaStatus.readBufEccError; + ipcDmaStatus.boolWriteBufEccSysError = (uint8_t)dmaStatus.writeBufEccSysError; + ipcDmaStatus.boolWriteBufEccFmError = (uint8_t)dmaStatus.writeBufEccFmError; + memcpy(p_IpcReply->replyBody, (uint8_t*)&ipcDmaStatus, sizeof(t_FmIpcDmaStatus)); + *p_ReplyLength = sizeof(uint32_t) + sizeof(t_FmIpcDmaStatus); + break; + } + case (FM_ALLOC_FMAN_CTRL_EVENT_REG): + p_IpcReply->error = (uint32_t)FmAllocFmanCtrlEventReg(h_Fm, (uint8_t*)p_IpcReply->replyBody); + *p_ReplyLength = sizeof(uint32_t) + sizeof(uint8_t); + break; + case (FM_FREE_FMAN_CTRL_EVENT_REG): + FmFreeFmanCtrlEventReg(h_Fm, p_IpcMsg->msgBody[0]); + break; + case (FM_GET_TIMESTAMP_SCALE): + { + uint32_t timeStamp = FmGetTimeStampScale(h_Fm); + + memcpy(p_IpcReply->replyBody, (uint8_t*)&timeStamp, sizeof(uint32_t)); + *p_ReplyLength = sizeof(uint32_t) + sizeof(uint32_t); + break; + } + case (FM_GET_COUNTER): + { + e_FmCounters inCounter; + uint32_t outCounter; + + memcpy((uint8_t*)&inCounter, p_IpcMsg->msgBody, sizeof(uint32_t)); + outCounter = FM_GetCounter(h_Fm, inCounter); + memcpy(p_IpcReply->replyBody, (uint8_t*)&outCounter, sizeof(uint32_t)); + *p_ReplyLength = sizeof(uint32_t) + sizeof(uint32_t); + break; + } + case (FM_SET_FMAN_CTRL_EVENTS_ENABLE): + { + t_FmIpcFmanEvents ipcFmanEvents; + + memcpy((uint8_t*)&ipcFmanEvents, p_IpcMsg->msgBody, sizeof(t_FmIpcFmanEvents)); + FmSetFmanCtrlIntr(h_Fm, + ipcFmanEvents.eventRegId, + ipcFmanEvents.enableEvents); + break; + } + case (FM_GET_FMAN_CTRL_EVENTS_ENABLE): + { + uint32_t tmp = FmGetFmanCtrlIntr(h_Fm, p_IpcMsg->msgBody[0]); + + memcpy(p_IpcReply->replyBody, (uint8_t*)&tmp, sizeof(uint32_t)); + *p_ReplyLength = sizeof(uint32_t) + sizeof(uint32_t); + break; + } + case (FM_GET_PHYS_MURAM_BASE): + { + t_FmPhysAddr physAddr; + t_FmIpcPhysAddr ipcPhysAddr; + + FmGetPhysicalMuramBase(h_Fm, &physAddr); + ipcPhysAddr.high = physAddr.high; + ipcPhysAddr.low = physAddr.low; + memcpy(p_IpcReply->replyBody, (uint8_t*)&ipcPhysAddr, sizeof(t_FmIpcPhysAddr)); + *p_ReplyLength = sizeof(uint32_t) + sizeof(t_FmIpcPhysAddr); + break; + } + case (FM_ENABLE_RAM_ECC): + { + t_Error err; + + if (((err = FM_EnableRamsEcc(h_Fm)) != E_OK) || + ((err = FM_SetException(h_Fm, e_FM_EX_IRAM_ECC, TRUE)) != E_OK) || + ((err = FM_SetException(h_Fm, e_FM_EX_MURAM_ECC, TRUE)) != E_OK)) + REPORT_ERROR(MINOR, err, NO_MSG); + break; + } + case (FM_DISABLE_RAM_ECC): + { + t_Error err; + + if (((err = FM_SetException(h_Fm, e_FM_EX_IRAM_ECC, FALSE)) != E_OK) || + ((err = FM_SetException(h_Fm, e_FM_EX_MURAM_ECC, FALSE)) != E_OK) || + ((err = FM_DisableRamsEcc(h_Fm)) != E_OK)) + REPORT_ERROR(MINOR, err, NO_MSG); + break; + } + case (FM_SET_NUM_OF_FMAN_CTRL): + { + t_Error err; + t_FmIpcPortNumOfFmanCtrls ipcPortNumOfFmanCtrls; + + memcpy((uint8_t*)&ipcPortNumOfFmanCtrls, p_IpcMsg->msgBody, sizeof(t_FmIpcPortNumOfFmanCtrls)); + if ((err = FmSetNumOfRiscsPerPort(h_Fm, + ipcPortNumOfFmanCtrls.hardwarePortId, + ipcPortNumOfFmanCtrls.numOfFmanCtrls)) != E_OK) + REPORT_ERROR(MINOR, err, NO_MSG); + break; + } +#ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 + case (FM_10G_TX_ECC_WA): + p_IpcReply->error = (uint32_t)Fm10GTxEccWorkaround(h_Fm, p_IpcMsg->msgBody[0]); + *p_ReplyLength = sizeof(uint32_t); + break; +#endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */ + default: + *p_ReplyLength = 0; + RETURN_ERROR(MINOR, E_INVALID_SELECTION, ("command not found!!!")); + } + return E_OK; +} + +static void ErrorIsrCB(t_Handle h_Fm) +{ +#define FM_M_CALL_1G_MAC_ERR_ISR(_id) \ + { \ + if (p_Fm->guestId != p_Fm->intrMng[(e_FmInterModuleEvent)(e_FM_EV_ERR_1G_MAC0+_id)].guestId) \ + SendIpcIsr(p_Fm, (e_FmInterModuleEvent)(e_FM_EV_ERR_1G_MAC0+_id), pending); \ + else \ + p_Fm->intrMng[(e_FmInterModuleEvent)(e_FM_EV_ERR_1G_MAC0+_id)].f_Isr(p_Fm->intrMng[(e_FmInterModuleEvent)(e_FM_EV_ERR_1G_MAC0+_id)].h_SrcHandle);\ + } + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint32_t pending; + + SANITY_CHECK_RETURN(h_Fm, E_INVALID_HANDLE); + + /* error interrupts */ + pending = GET_UINT32(p_Fm->p_FmFpmRegs->fmepi); + if (!pending) + return; + + if(pending & ERR_INTR_EN_BMI) + BmiErrEvent(p_Fm); + if(pending & ERR_INTR_EN_QMI) + QmiErrEvent(p_Fm); + if(pending & ERR_INTR_EN_FPM) + FpmErrEvent(p_Fm); + if(pending & ERR_INTR_EN_DMA) + DmaErrEvent(p_Fm); + if(pending & ERR_INTR_EN_IRAM) + IramErrIntr(p_Fm); + if(pending & ERR_INTR_EN_MURAM) + MuramErrIntr(p_Fm); + if(pending & ERR_INTR_EN_PRS) + p_Fm->intrMng[e_FM_EV_ERR_PRS].f_Isr(p_Fm->intrMng[e_FM_EV_ERR_PRS].h_SrcHandle); + if(pending & ERR_INTR_EN_PLCR) + p_Fm->intrMng[e_FM_EV_ERR_PLCR].f_Isr(p_Fm->intrMng[e_FM_EV_ERR_PLCR].h_SrcHandle); + if(pending & ERR_INTR_EN_KG) + p_Fm->intrMng[e_FM_EV_ERR_KG].f_Isr(p_Fm->intrMng[e_FM_EV_ERR_KG].h_SrcHandle); + + /* MAC events may belong to different partitions */ + if(pending & ERR_INTR_EN_1G_MAC0) + FM_M_CALL_1G_MAC_ERR_ISR(0); + if(pending & ERR_INTR_EN_1G_MAC1) + FM_M_CALL_1G_MAC_ERR_ISR(1); + if(pending & ERR_INTR_EN_1G_MAC2) + FM_M_CALL_1G_MAC_ERR_ISR(2); + if(pending & ERR_INTR_EN_1G_MAC3) + FM_M_CALL_1G_MAC_ERR_ISR(3); + if(pending & ERR_INTR_EN_1G_MAC4) + FM_M_CALL_1G_MAC_ERR_ISR(4); + if(pending & ERR_INTR_EN_10G_MAC0) + { + if (p_Fm->guestId != p_Fm->intrMng[e_FM_EV_ERR_10G_MAC0].guestId) + SendIpcIsr(p_Fm, e_FM_EV_ERR_10G_MAC0, pending); + else + p_Fm->intrMng[e_FM_EV_ERR_10G_MAC0].f_Isr(p_Fm->intrMng[e_FM_EV_ERR_10G_MAC0].h_SrcHandle); + } +} + + +#ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 +t_Error Fm10GTxEccWorkaround(t_Handle h_Fm, uint8_t macId) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + int timeout = 1000; + t_Error err = E_OK; + t_FmIpcMsg msg; + t_FmIpcReply reply; + uint32_t replyLength; + uint8_t rxHardwarePortId, txHardwarePortId; + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + msg.msgId = FM_10G_TX_ECC_WA; + msg.msgBody[0] = macId; + replyLength = sizeof(uint32_t); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId)+sizeof(macId), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + if (replyLength != sizeof(uint32_t)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + return (t_Error)(reply.error); + } + + SANITY_CHECK_RETURN_ERROR((macId == 0), E_NOT_SUPPORTED); + SANITY_CHECK_RETURN_ERROR(IsFmanCtrlCodeLoaded(p_Fm), E_INVALID_STATE); + + SW_PORT_ID_TO_HW_PORT_ID(rxHardwarePortId, e_FM_PORT_TYPE_RX_10G, macId); + SW_PORT_ID_TO_HW_PORT_ID(txHardwarePortId, e_FM_PORT_TYPE_TX_10G, macId); + if ((p_Fm->p_FmStateStruct->portsTypes[rxHardwarePortId] != e_FM_PORT_TYPE_DUMMY) || + (p_Fm->p_FmStateStruct->portsTypes[txHardwarePortId] != e_FM_PORT_TYPE_DUMMY)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, + ("MAC should be initialized prior to rx and tx ports!")); + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmextc, 0x40000000); + CORE_MemoryBarrier(); + while ((GET_UINT32(p_Fm->p_FmFpmRegs->fpmextc) & 0x40000000) && + --timeout) ; + if (!timeout) + return ERROR_CODE(E_TIMEOUT); + return E_OK; +} +#endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */ + +uintptr_t FmGetPcdPrsBaseAddr(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_VALUE(p_Fm, E_INVALID_HANDLE, 0); + + if(p_Fm->guestId != NCSW_MASTER_ID) + REPORT_ERROR(MAJOR, E_INVALID_STATE, ("Guset")); + + return (p_Fm->baseAddr + FM_MM_PRS); +} + +uintptr_t FmGetPcdKgBaseAddr(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_VALUE(p_Fm, E_INVALID_HANDLE, 0); + + if(p_Fm->guestId != NCSW_MASTER_ID) + REPORT_ERROR(MAJOR, E_INVALID_STATE, ("Guset")); + + return (p_Fm->baseAddr + FM_MM_KG); +} + +uintptr_t FmGetPcdPlcrBaseAddr(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_VALUE(p_Fm, E_INVALID_HANDLE, 0); + + if(p_Fm->guestId != NCSW_MASTER_ID) + REPORT_ERROR(MAJOR, E_INVALID_STATE, ("Guset")); + + return (p_Fm->baseAddr + FM_MM_PLCR); +} + +t_Handle FmGetMuramHandle(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_VALUE(p_Fm, E_INVALID_HANDLE, NULL); + + return (p_Fm->h_FmMuram); +} + +void FmGetPhysicalMuramBase(t_Handle h_Fm, t_FmPhysAddr *p_FmPhysAddr) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + t_Error err; + t_FmIpcMsg msg; + t_FmIpcReply reply; + uint32_t replyLength; + t_FmIpcPhysAddr ipcPhysAddr; + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + msg.msgId = FM_GET_PHYS_MURAM_BASE; + replyLength = sizeof(uint32_t) + sizeof(t_FmPhysAddr); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + { + REPORT_ERROR(MINOR, err, NO_MSG); + return; + } + if (replyLength != (sizeof(uint32_t) + sizeof(t_FmPhysAddr))) + { + REPORT_ERROR(MINOR, E_INVALID_VALUE,("IPC reply length mismatch")); + return; + } + memcpy((uint8_t*)&ipcPhysAddr, reply.replyBody, sizeof(t_FmIpcPhysAddr)); + p_FmPhysAddr->high = ipcPhysAddr.high; + p_FmPhysAddr->low = ipcPhysAddr.low; + return ; + } + + /* General FM driver initialization */ + p_FmPhysAddr->low = (uint32_t)p_Fm->fmMuramPhysBaseAddr; + p_FmPhysAddr->high = (uint8_t)((p_Fm->fmMuramPhysBaseAddr & 0x000000ff00000000LL) >> 32); +} + +t_Error FmAllocFmanCtrlEventReg(t_Handle h_Fm, uint8_t *p_EventId) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint8_t i; + t_Error err; + t_FmIpcMsg msg; + t_FmIpcReply reply; + uint32_t replyLength; + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + msg.msgId = FM_ALLOC_FMAN_CTRL_EVENT_REG; + replyLength = sizeof(uint32_t) + sizeof(uint8_t); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + if (replyLength != (sizeof(uint32_t) + sizeof(uint8_t))) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + + *p_EventId = *(uint8_t*)(reply.replyBody); + + return (t_Error)(reply.error); + } + + for(i=0;iusedEventRegs[i]) + { + p_Fm->usedEventRegs[i] = TRUE; + *p_EventId = i; + break; + } + + if (i==FM_NUM_OF_FMAN_CTRL_EVENT_REGS) + RETURN_ERROR(MAJOR, E_BUSY, ("No resource - Fman controller event register.")); + + return E_OK; +} + +void FmFreeFmanCtrlEventReg(t_Handle h_Fm, uint8_t eventId) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + t_Error err; + t_FmIpcMsg msg; + + if(((t_Fm *)h_Fm)->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + msg.msgId = FM_FREE_FMAN_CTRL_EVENT_REG; + msg.msgBody[0] = eventId; + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId)+sizeof(eventId), + NULL, + NULL, + NULL, + NULL)) != E_OK) + REPORT_ERROR(MINOR, err, NO_MSG); + return; + } + + ((t_Fm*)h_Fm)->usedEventRegs[eventId] = FALSE; +} + +void FmRegisterIntr(t_Handle h_Fm, + e_FmEventModules module, + uint8_t modId, + e_FmIntrType intrType, + void (*f_Isr) (t_Handle h_Arg), + t_Handle h_Arg) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint8_t event= 0; + t_FmIpcRegisterIntr fmIpcRegisterIntr; + t_Error err; + t_FmIpcMsg msg; + + ASSERT_COND(h_Fm); + + GET_FM_MODULE_EVENT(module, modId,intrType, event); + + /* register in local FM structure */ + ASSERT_COND(event != e_FM_EV_DUMMY_LAST); + p_Fm->intrMng[event].f_Isr = f_Isr; + p_Fm->intrMng[event].h_SrcHandle = h_Arg; + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + if(p_Fm->h_IpcSessions[0]) + { + /* register in Master FM structure */ + fmIpcRegisterIntr.event = event; + fmIpcRegisterIntr.guestId = p_Fm->guestId; + memset(&msg, 0, sizeof(msg)); + msg.msgId = FM_REGISTER_INTR; + memcpy(msg.msgBody, &fmIpcRegisterIntr, sizeof(fmIpcRegisterIntr)); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId) + sizeof(fmIpcRegisterIntr), + NULL, + NULL, + NULL, + NULL)) != E_OK) + REPORT_ERROR(MINOR, err, NO_MSG); + } + else + DBG(WARNING,("'Register interrupt' - unavailable - No IPC")); + } + +} + +void FmUnregisterIntr(t_Handle h_Fm, + e_FmEventModules module, + uint8_t modId, + e_FmIntrType intrType) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint8_t event= 0; + + ASSERT_COND(h_Fm); + + GET_FM_MODULE_EVENT(module, modId,intrType, event); + + ASSERT_COND(event != e_FM_EV_DUMMY_LAST); + p_Fm->intrMng[event].f_Isr = UnimplementedIsr; + p_Fm->intrMng[event].h_SrcHandle = NULL; +} + +void FmSetFmanCtrlIntr(t_Handle h_Fm, uint8_t eventRegId, uint32_t enableEvents) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + t_FmIpcFmanEvents fmanCtrl; + t_Error err; + t_FmIpcMsg msg; + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + fmanCtrl.eventRegId = eventRegId; + fmanCtrl.enableEvents = enableEvents; + memset(&msg, 0, sizeof(msg)); + msg.msgId = FM_SET_FMAN_CTRL_EVENTS_ENABLE; + memcpy(msg.msgBody, &fmanCtrl, sizeof(fmanCtrl)); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId)+sizeof(fmanCtrl), + NULL, + NULL, + NULL, + NULL)) != E_OK) + REPORT_ERROR(MINOR, err, NO_MSG); + return; + } + + ASSERT_COND(eventRegId < FM_NUM_OF_FMAN_CTRL_EVENT_REGS); + WRITE_UINT32(p_Fm->p_FmFpmRegs->fmfpfcee[eventRegId], enableEvents); +} + +uint32_t FmGetFmanCtrlIntr(t_Handle h_Fm, uint8_t eventRegId) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + t_Error err; + t_FmIpcMsg msg; + t_FmIpcReply reply; + uint32_t replyLength, ctrlIntr; + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + msg.msgId = FM_GET_FMAN_CTRL_EVENTS_ENABLE; + msg.msgBody[0] = eventRegId; + replyLength = sizeof(uint32_t) + sizeof(uint32_t); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId)+sizeof(eventRegId), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + { + REPORT_ERROR(MINOR, err, NO_MSG); + return 0; + } + if (replyLength != (sizeof(uint32_t) + sizeof(uint32_t))) + { + REPORT_ERROR(MINOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + return 0; + } + memcpy((uint8_t*)&ctrlIntr, reply.replyBody, sizeof(uint32_t)); + return ctrlIntr; + } + + return GET_UINT32(p_Fm->p_FmFpmRegs->fmfpfcee[eventRegId]); +} + +void FmRegisterFmanCtrlIntr(t_Handle h_Fm, uint8_t eventRegId, void (*f_Isr) (t_Handle h_Arg, uint32_t event), t_Handle h_Arg) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + ASSERT_COND(eventRegIdguestId != NCSW_MASTER_ID) + { + ASSERT_COND(0); + /* TODO */ + } + + p_Fm->fmanCtrlIntr[eventRegId].f_Isr = f_Isr; + p_Fm->fmanCtrlIntr[eventRegId].h_SrcHandle = h_Arg; +} + +void FmUnregisterFmanCtrlIntr(t_Handle h_Fm, uint8_t eventRegId) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + ASSERT_COND(eventRegIdguestId != NCSW_MASTER_ID) + { + ASSERT_COND(0); + /* TODO */ + } + + p_Fm->fmanCtrlIntr[eventRegId].f_Isr = UnimplementedFmanCtrlIsr; + p_Fm->fmanCtrlIntr[eventRegId].h_SrcHandle = NULL; +} + +void FmRegisterPcd(t_Handle h_Fm, t_Handle h_FmPcd) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + if(p_Fm->h_Pcd) + REPORT_ERROR(MAJOR, E_ALREADY_EXISTS, ("PCD already set")); + + p_Fm->h_Pcd = h_FmPcd; + +} + +void FmUnregisterPcd(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + if(!p_Fm->h_Pcd) + REPORT_ERROR(MAJOR, E_ALREADY_EXISTS, ("No PCD")); + + p_Fm->h_Pcd = NULL; + +} + +t_Handle FmGetPcdHandle(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + return p_Fm->h_Pcd; +} + +uint8_t FmGetId(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_VALUE(p_Fm, E_INVALID_HANDLE, 0xff); + + return p_Fm->p_FmStateStruct->fmId; +} + +t_Error FmSetNumOfRiscsPerPort(t_Handle h_Fm, uint8_t hardwarePortId, uint8_t numOfFmanCtrls) +{ + + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint32_t tmpReg = 0; + t_Error err; + t_FmIpcPortNumOfFmanCtrls params; + t_FmIpcMsg msg; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(((numOfFmanCtrls > 0) && (numOfFmanCtrls < 3)) , E_INVALID_HANDLE); + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + params.hardwarePortId = hardwarePortId; + params.numOfFmanCtrls = numOfFmanCtrls; + msg.msgId = FM_SET_NUM_OF_FMAN_CTRL; + memcpy(msg.msgBody, ¶ms, sizeof(params)); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId) +sizeof(params), + NULL, + NULL, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + + return E_OK; + } + + XX_LockSpinlock(p_Fm->h_Spinlock); + + tmpReg = (uint32_t)(hardwarePortId << FPM_PORT_FM_CTL_PORTID_SHIFT); + + /*TODO - maybe to put CTL# according to another criteria*/ + + if(numOfFmanCtrls == 2) + tmpReg = FPM_PORT_FM_CTL2 | FPM_PORT_FM_CTL1; + + /* order restoration */ + if(hardwarePortId%2) + tmpReg |= (FPM_PORT_FM_CTL1 << FPM_PRC_ORA_FM_CTL_SEL_SHIFT) | FPM_PORT_FM_CTL1; + else + tmpReg |= (FPM_PORT_FM_CTL2 << FPM_PRC_ORA_FM_CTL_SEL_SHIFT) | FPM_PORT_FM_CTL2; + + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmpr, tmpReg); + XX_UnlockSpinlock(p_Fm->h_Spinlock); + + return E_OK; +} + +t_Error FmGetSetPortParams(t_Handle h_Fm,t_FmInterModulePortInitParams *p_PortParams) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint32_t tmpReg; + uint8_t hardwarePortId = p_PortParams->hardwarePortId; + t_FmIpcPortInInitParams portInParams; + t_FmIpcPhysAddr ipcPhysAddr; + t_Error err; + t_FmIpcMsg msg; + t_FmIpcReply reply; + uint32_t replyLength; + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + portInParams.hardwarePortId = p_PortParams->hardwarePortId; + portInParams.enumPortType = (uint32_t)p_PortParams->portType; + portInParams.boolIndependentMode = (uint8_t)p_PortParams->independentMode; + portInParams.liodnOffset = p_PortParams->liodnOffset; + portInParams.numOfTasks = p_PortParams->numOfTasks; + portInParams.numOfExtraTasks = p_PortParams->numOfExtraTasks; + portInParams.numOfOpenDmas = p_PortParams->numOfOpenDmas; + portInParams.numOfExtraOpenDmas = p_PortParams->numOfExtraOpenDmas; + portInParams.sizeOfFifo = p_PortParams->sizeOfFifo; + portInParams.extraSizeOfFifo = p_PortParams->extraSizeOfFifo; + portInParams.deqPipelineDepth = p_PortParams->deqPipelineDepth; + portInParams.liodnBase = p_PortParams->liodnBase; + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + msg.msgId = FM_GET_SET_PORT_PARAMS; + memcpy(msg.msgBody, &portInParams, sizeof(portInParams)); + replyLength = (sizeof(uint32_t) + sizeof(p_PortParams->fmMuramPhysBaseAddr)); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId) +sizeof(portInParams), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + if (replyLength != (sizeof(uint32_t) + sizeof(p_PortParams->fmMuramPhysBaseAddr))) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + memcpy((uint8_t*)&ipcPhysAddr, reply.replyBody, sizeof(t_FmIpcPhysAddr)); + p_PortParams->fmMuramPhysBaseAddr.high = ipcPhysAddr.high; + p_PortParams->fmMuramPhysBaseAddr.low = ipcPhysAddr.low; + + return (t_Error)(reply.error); + } + + ASSERT_COND(IN_RANGE(1, hardwarePortId, 63)); + XX_LockSpinlock(p_Fm->h_Spinlock); + + if(p_PortParams->independentMode) + { + /* set port parameters */ + p_Fm->independentMode = p_PortParams->independentMode; + /* disable dispatch limit */ + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmflc, 0); + } + + if(p_PortParams->portType == e_FM_PORT_TYPE_OH_HOST_COMMAND) + { + if(p_Fm->hcPortInitialized) + { + XX_UnlockSpinlock(p_Fm->h_Spinlock); + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Only one host command port is allowed.")); + } + else + p_Fm->hcPortInitialized = TRUE; + } + p_Fm->p_FmStateStruct->portsTypes[hardwarePortId] = p_PortParams->portType; + + err = FmSetNumOfTasks(p_Fm, p_PortParams->hardwarePortId, p_PortParams->numOfTasks, p_PortParams->numOfExtraTasks, TRUE); + if(err) + { + XX_UnlockSpinlock(p_Fm->h_Spinlock); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + +#ifdef FM_QMI_DEQ_OPTIONS_SUPPORT + if((p_PortParams->portType != e_FM_PORT_TYPE_RX) && (p_PortParams->portType != e_FM_PORT_TYPE_RX_10G)) + /* for transmit & O/H ports */ + { + uint8_t enqTh; + uint8_t deqTh; + bool update = FALSE; + + /* update qmi ENQ/DEQ threshold */ + p_Fm->p_FmStateStruct->accumulatedNumOfDeqTnums += p_PortParams->deqPipelineDepth; + tmpReg = GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_gc); + enqTh = (uint8_t)(tmpReg>>8); + /* if enqTh is too big, we reduce it to the max value that is still OK */ + if(enqTh >= (QMI_MAX_NUM_OF_TNUMS - p_Fm->p_FmStateStruct->accumulatedNumOfDeqTnums)) + { + enqTh = (uint8_t)(QMI_MAX_NUM_OF_TNUMS - p_Fm->p_FmStateStruct->accumulatedNumOfDeqTnums - 1); + tmpReg &= ~QMI_CFG_ENQ_MASK; + tmpReg |= ((uint32_t)enqTh << 8); + update = TRUE; + } + + deqTh = (uint8_t)tmpReg; + /* if deqTh is too small, we enlarge it to the min value that is still OK. + deqTh may not be larger than 63 (QMI_MAX_NUM_OF_TNUMS-1). */ + if((deqTh <= p_Fm->p_FmStateStruct->accumulatedNumOfDeqTnums) && (deqTh < QMI_MAX_NUM_OF_TNUMS-1)) + { + deqTh = (uint8_t)(p_Fm->p_FmStateStruct->accumulatedNumOfDeqTnums + 1); + tmpReg &= ~QMI_CFG_DEQ_MASK; + tmpReg |= (uint32_t)deqTh; + update = TRUE; + } + if(update) + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_gc, tmpReg); + } +#endif /* FM_QMI_DEQ_OPTIONS_SUPPORT */ + +#ifdef FM_LOW_END_RESTRICTION + if((hardwarePortId==0x1) || (hardwarePortId==0x29)) + { + if(p_Fm->p_FmStateStruct->lowEndRestriction) + { + XX_UnlockSpinlock(p_Fm->h_Spinlock); + RETURN_ERROR(MAJOR, E_NOT_AVAILABLE, ("OP #0 cannot work with Tx Port #1.")); + } + else + p_Fm->p_FmStateStruct->lowEndRestriction = TRUE; + } +#endif /* FM_LOW_END_RESTRICTION */ + + err = FmSetSizeOfFifo(p_Fm, + p_PortParams->hardwarePortId, + p_PortParams->portType, + p_PortParams->independentMode, + &p_PortParams->sizeOfFifo, + p_PortParams->extraSizeOfFifo, + p_PortParams->deqPipelineDepth, + NULL, + TRUE); + if(err) + { + XX_UnlockSpinlock(p_Fm->h_Spinlock); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + err = FmSetNumOfOpenDmas(p_Fm, p_PortParams->hardwarePortId, p_PortParams->numOfOpenDmas, p_PortParams->numOfExtraOpenDmas, TRUE); + if(err) + { + XX_UnlockSpinlock(p_Fm->h_Spinlock); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_ppid[hardwarePortId-1], (uint32_t)p_PortParams->liodnOffset); + + tmpReg = (uint32_t)(hardwarePortId << FPM_PORT_FM_CTL_PORTID_SHIFT); + if(p_PortParams->independentMode) + { + if((p_PortParams->portType==e_FM_PORT_TYPE_RX) || (p_PortParams->portType==e_FM_PORT_TYPE_RX_10G)) + tmpReg |= (FPM_PORT_FM_CTL1 << FPM_PRC_ORA_FM_CTL_SEL_SHIFT) |FPM_PORT_FM_CTL1; + else + tmpReg |= (FPM_PORT_FM_CTL2 << FPM_PRC_ORA_FM_CTL_SEL_SHIFT) |FPM_PORT_FM_CTL2; + } + else + { + tmpReg |= (FPM_PORT_FM_CTL2|FPM_PORT_FM_CTL1); + + /* order restoration */ + if(hardwarePortId%2) + tmpReg |= (FPM_PORT_FM_CTL1 << FPM_PRC_ORA_FM_CTL_SEL_SHIFT); + else + tmpReg |= (FPM_PORT_FM_CTL2 << FPM_PRC_ORA_FM_CTL_SEL_SHIFT); + } + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmpr, tmpReg); + + { +#ifdef FM_PARTITION_ARRAY + t_FmRevisionInfo revInfo; + + FM_GetRevision(p_Fm, &revInfo); + if (revInfo.majorRev >= 2) +#endif /* FM_PARTITION_ARRAY */ + { + /* set LIODN base for this port */ + tmpReg = GET_UINT32(p_Fm->p_FmDmaRegs->fmdmplr[hardwarePortId/2]); + if(hardwarePortId%2) + { + tmpReg &= ~FM_LIODN_BASE_MASK; + tmpReg |= (uint32_t)p_PortParams->liodnBase; + } + else + { + tmpReg &= ~(FM_LIODN_BASE_MASK<< DMA_LIODN_SHIFT); + tmpReg |= (uint32_t)p_PortParams->liodnBase << DMA_LIODN_SHIFT; + } + WRITE_UINT32(p_Fm->p_FmDmaRegs->fmdmplr[hardwarePortId/2], tmpReg); + } + } + + FmGetPhysicalMuramBase(p_Fm, &p_PortParams->fmMuramPhysBaseAddr); + XX_UnlockSpinlock(p_Fm->h_Spinlock); + + return E_OK; +} + +void FmFreePortParams(t_Handle h_Fm,t_FmInterModulePortFreeParams *p_PortParams) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint32_t tmpReg; + uint8_t hardwarePortId = p_PortParams->hardwarePortId; + uint8_t numOfTasks; + t_Error err; + t_FmIpcPortFreeParams portParams; + t_FmIpcMsg msg; + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + portParams.hardwarePortId = p_PortParams->hardwarePortId; + portParams.enumPortType = (uint32_t)p_PortParams->portType; +#ifdef FM_QMI_DEQ_OPTIONS_SUPPORT + portParams.deqPipelineDepth = p_PortParams->deqPipelineDepth; +#endif /* FM_QMI_DEQ_OPTIONS_SUPPORT */ + memset(&msg, 0, sizeof(msg)); + msg.msgId = FM_FREE_PORT; + memcpy(msg.msgBody, &portParams, sizeof(portParams)); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId)+sizeof(portParams), + NULL, + NULL, + NULL, + NULL)) != E_OK) + REPORT_ERROR(MINOR, err, NO_MSG); + return; + } + + ASSERT_COND(IN_RANGE(1, hardwarePortId, 63)); + XX_LockSpinlock(p_Fm->h_Spinlock); + + + if(p_PortParams->portType == e_FM_PORT_TYPE_OH_HOST_COMMAND) + { + ASSERT_COND(p_Fm->hcPortInitialized); + p_Fm->hcPortInitialized = FALSE; + } + + p_Fm->p_FmStateStruct->portsTypes[hardwarePortId] = e_FM_PORT_TYPE_DUMMY; + + tmpReg = GET_UINT32(p_Fm->p_FmBmiRegs->fmbm_pp[hardwarePortId-1]); + /* free numOfTasks */ + numOfTasks = (uint8_t)(((tmpReg & BMI_NUM_OF_TASKS_MASK) >> BMI_NUM_OF_TASKS_SHIFT) + 1); + ASSERT_COND(p_Fm->p_FmStateStruct->accumulatedNumOfTasks >= numOfTasks); + p_Fm->p_FmStateStruct->accumulatedNumOfTasks -= numOfTasks; + + /* free numOfOpenDmas */ + ASSERT_COND(p_Fm->p_FmStateStruct->accumulatedNumOfOpenDmas >= ((tmpReg & BMI_NUM_OF_DMAS_MASK) >> BMI_NUM_OF_DMAS_SHIFT) + 1); + p_Fm->p_FmStateStruct->accumulatedNumOfOpenDmas -= (((tmpReg & BMI_NUM_OF_DMAS_MASK) >> BMI_NUM_OF_DMAS_SHIFT) + 1); + + /* update total num of DMA's with committed number of open DMAS, and max uncommitted pool. */ + tmpReg = GET_UINT32(p_Fm->p_FmBmiRegs->fmbm_cfg2) & ~BMI_CFG2_DMAS_MASK; + tmpReg |= (uint32_t)(p_Fm->p_FmStateStruct->accumulatedNumOfOpenDmas + p_Fm->p_FmStateStruct->extraOpenDmasPoolSize - 1) << BMI_CFG2_DMAS_SHIFT; + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_cfg2, tmpReg); + + /* free sizeOfFifo */ + tmpReg = GET_UINT32(p_Fm->p_FmBmiRegs->fmbm_pfs[hardwarePortId-1]); + ASSERT_COND(p_Fm->p_FmStateStruct->accumulatedFifoSize >= + (((tmpReg & BMI_FIFO_SIZE_MASK) + 1) * BMI_FIFO_UNITS)); + p_Fm->p_FmStateStruct->accumulatedFifoSize -= + (((tmpReg & BMI_FIFO_SIZE_MASK) + 1) * BMI_FIFO_UNITS); + + /* clear registers */ + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_pp[hardwarePortId-1], 0); + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_pfs[hardwarePortId-1], 0); + /* WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_ppid[hardwarePortId-1], 0); */ + +#ifdef FM_PORT_DISABLED_ERRATA_FMANx9 + /* this errata means that when a port is taken down, other port may not use its + * resources for a while as it may still be using it (in case of reject). + */ + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + XX_UDelay(100000); + } +#endif /* FM_PORT_DISABLED_ERRATA_FMANx9 */ + +#ifdef FM_QMI_DEQ_OPTIONS_SUPPORT + if((p_PortParams->portType != e_FM_PORT_TYPE_RX) && (p_PortParams->portType != e_FM_PORT_TYPE_RX_10G)) + /* for transmit & O/H ports */ + { + uint8_t enqTh; + uint8_t deqTh; + + tmpReg = GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_gc); + /* update qmi ENQ/DEQ threshold */ + p_Fm->p_FmStateStruct->accumulatedNumOfDeqTnums -= p_PortParams->deqPipelineDepth; + + /* p_Fm->p_FmStateStruct->accumulatedNumOfDeqTnums is now smaller, + so we can enlarge enqTh */ + enqTh = (uint8_t)(QMI_MAX_NUM_OF_TNUMS - p_Fm->p_FmStateStruct->accumulatedNumOfDeqTnums - 1); + tmpReg &= ~QMI_CFG_ENQ_MASK; + tmpReg |= ((uint32_t)enqTh << QMI_CFG_ENQ_SHIFT); + + /* p_Fm->p_FmStateStruct->accumulatedNumOfDeqTnums is now smaller, + so we can reduce deqTh */ + deqTh = (uint8_t)(p_Fm->p_FmStateStruct->accumulatedNumOfDeqTnums + 1); + tmpReg &= ~QMI_CFG_DEQ_MASK; + tmpReg |= (uint32_t)deqTh; + + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_gc, tmpReg); + } +#endif /* FM_QMI_DEQ_OPTIONS_SUPPORT */ + +#ifdef FM_LOW_END_RESTRICTION + if((hardwarePortId==0x1) || (hardwarePortId==0x29)) + p_Fm->p_FmStateStruct->lowEndRestriction = FALSE; +#endif /* FM_LOW_END_RESTRICTION */ + XX_UnlockSpinlock(p_Fm->h_Spinlock); +} + +t_Error FmIsPortStalled(t_Handle h_Fm, uint8_t hardwarePortId, bool *p_IsStalled) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint32_t tmpReg; + t_Error err; + t_FmIpcMsg msg; + t_FmIpcReply reply; + uint32_t replyLength; + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + msg.msgId = FM_IS_PORT_STALLED; + msg.msgBody[0] = hardwarePortId; + replyLength = sizeof(uint32_t) + sizeof(uint8_t); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId)+sizeof(hardwarePortId), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + if (replyLength != (sizeof(uint32_t) + sizeof(uint8_t))) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + + *p_IsStalled = (bool)!!(*(uint8_t*)(reply.replyBody)); + + return (t_Error)(reply.error); + } + + tmpReg = GET_UINT32(p_Fm->p_FmFpmRegs->fmfp_ps[hardwarePortId]); + *p_IsStalled = (bool)!!(tmpReg & FPM_PS_STALLED); + + return E_OK; +} + +t_Error FmResumeStalledPort(t_Handle h_Fm, uint8_t hardwarePortId) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint32_t tmpReg; + t_Error err; + bool isStalled; + t_FmIpcMsg msg; + t_FmIpcReply reply; + uint32_t replyLength; + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + msg.msgId = FM_RESUME_STALLED_PORT; + msg.msgBody[0] = hardwarePortId; + replyLength = sizeof(uint32_t); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId) + sizeof(hardwarePortId), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + if (replyLength != sizeof(uint32_t)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + return (t_Error)(reply.error); + } + + /* Get port status */ + err = FmIsPortStalled(h_Fm, hardwarePortId, &isStalled); + if(err) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Can't get port status")); + if (!isStalled) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Port is not stalled")); + + tmpReg = (uint32_t)((hardwarePortId << FPM_PORT_FM_CTL_PORTID_SHIFT) | FPM_PRC_REALSE_STALLED); + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmpr, tmpReg); + + return E_OK; +} + +t_Error FmResetMac(t_Handle h_Fm, e_FmMacType type, uint8_t macId) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint32_t bitMask, timeout = 1000; + t_FmIpcMacParams macParams; + t_Error err; + t_FmIpcMsg msg; + t_FmIpcReply reply; + uint32_t replyLength; + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + if(p_Fm->h_IpcSessions[0]) + { + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + macParams.id = macId; + macParams.enumType = (uint32_t)type; + msg.msgId = FM_RESET_MAC; + memcpy(msg.msgBody, &macParams, sizeof(macParams)); + replyLength = sizeof(uint32_t); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId)+sizeof(macParams), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + if (replyLength != sizeof(uint32_t)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + return (t_Error)(reply.error); + } + else + if(!p_Fm->p_FmFpmRegs) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("No IPC and no registers address")); + } + + /* Get the relevant bit mask */ + if (type == e_FM_MAC_10G) + { + switch(macId) + { + case(0): + bitMask = FPM_RSTC_10G0_RESET; + break; + default: + RETURN_ERROR(MINOR, E_INVALID_VALUE, ("Illegal MAC Id")); + } + } + else + { + switch(macId) + { + case(0): + bitMask = FPM_RSTC_1G0_RESET; + break; + case(1): + bitMask = FPM_RSTC_1G1_RESET; + break; + case(2): + bitMask = FPM_RSTC_1G2_RESET; + break; + case(3): + bitMask = FPM_RSTC_1G3_RESET; + break; + case(4): + bitMask = FPM_RSTC_1G4_RESET; + break; + default: + RETURN_ERROR(MINOR, E_INVALID_VALUE, ("Illegal MAC Id")); + } + } + + /* reset */ + WRITE_UINT32(p_Fm->p_FmFpmRegs->fmrstc, bitMask); + while ((GET_UINT32(p_Fm->p_FmFpmRegs->fmrstc) & bitMask) && + --timeout) ; + if (!timeout) + return ERROR_CODE(E_TIMEOUT); + return E_OK; +} + +t_Error FmSetMacMaxFrame(t_Handle h_Fm, e_FmMacType type, uint8_t macId, uint16_t mtu) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + t_FmIpcMacMaxFrameParams macMaxFrameLengthParams; + t_Error err; + t_FmIpcMsg msg; + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + macMaxFrameLengthParams.macParams.id = macId; + macMaxFrameLengthParams.macParams.enumType = (uint32_t)type; + macMaxFrameLengthParams.maxFrameLength = (uint16_t)mtu; + msg.msgId = FM_SET_MAC_MAX_FRAME; + memcpy(msg.msgBody, &macMaxFrameLengthParams, sizeof(macMaxFrameLengthParams)); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId)+sizeof(macMaxFrameLengthParams), + NULL, + NULL, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + return E_OK; + } + +#if (defined(FM_MAX_NUM_OF_10G_MACS) && (FM_MAX_NUM_OF_10G_MACS)) + if (type == e_FM_MAC_10G) + p_Fm->p_FmStateStruct->macMaxFrameLengths10G[macId] = mtu; + else +#else + UNUSED(type); +#endif /* (defined(FM_MAX_NUM_OF_10G_MACS) && ... */ + p_Fm->p_FmStateStruct->macMaxFrameLengths1G[macId] = mtu; + + return E_OK; +} + +uint16_t FmGetClockFreq(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + /* for MC environment: this depends on the + * fact that fmClkFreq was properly initialized at "init". */ + return p_Fm->p_FmStateStruct->fmClkFreq; +} + +uint32_t FmGetTimeStampScale(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + t_Error err; + t_FmIpcMsg msg; + t_FmIpcReply reply; + uint32_t replyLength, timeStamp; + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + msg.msgId = FM_GET_TIMESTAMP_SCALE; + replyLength = sizeof(uint32_t) + sizeof(uint32_t); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + if(replyLength != (sizeof(uint32_t) + sizeof(uint32_t))) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + + memcpy((uint8_t*)&timeStamp, reply.replyBody, sizeof(uint32_t)); + return timeStamp; + } + + if(!p_Fm->p_FmStateStruct->enabledTimeStamp) + FmEnableTimeStamp(p_Fm); + + return p_Fm->p_FmStateStruct->count1MicroBit; +} + +bool FmRamsEccIsExternalCtl(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint32_t tmpReg; + + tmpReg = GET_UINT32(p_Fm->p_FmFpmRegs->fmrcr); + if(tmpReg & FPM_RAM_CTL_RAMS_ECC_EN_SRC_SEL) + return TRUE; + else + return FALSE; +} + +t_Error FmEnableRamsEcc(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + + p_Fm->p_FmStateStruct->ramsEccOwners++; + p_Fm->p_FmStateStruct->internalCall = TRUE; + + return FM_EnableRamsEcc(p_Fm); +} + +t_Error FmDisableRamsEcc(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + + ASSERT_COND(p_Fm->p_FmStateStruct->ramsEccOwners); + p_Fm->p_FmStateStruct->ramsEccOwners--; + + if(p_Fm->p_FmStateStruct->ramsEccOwners==0) + { + p_Fm->p_FmStateStruct->internalCall = TRUE; + return FM_DisableRamsEcc(p_Fm); + } + return E_OK; +} + +uint8_t FmGetGuestId(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + return p_Fm->guestId; +} + +bool FmIsMaster(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + return (p_Fm->guestId == NCSW_MASTER_ID); +} + +t_Error FmSetSizeOfFifo(t_Handle h_Fm, + uint8_t hardwarePortId, + e_FmPortType portType, + bool independentMode, + uint32_t *p_SizeOfFifo, + uint32_t extraSizeOfFifo, + uint8_t deqPipelineDepth, + t_FmInterModulePortRxPoolsParams *p_RxPoolsParams, + bool initialConfig) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint8_t relativePortId; + uint16_t macMaxFrameLength = 0, oldVal; + uint32_t minFifoSizeRequired = 0, sizeOfFifo, tmpReg = 0; + t_FmIpcPortFifoParams fifoParams; + t_Error err; + + ASSERT_COND(IN_RANGE(1, hardwarePortId, 63)); + ASSERT_COND(initialConfig || p_RxPoolsParams); + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + t_FmIpcMsg msg; + t_FmIpcReply reply; + uint32_t replyLength; + + ASSERT_COND(p_RxPoolsParams); + + memset(&fifoParams, 0, sizeof(fifoParams)); + fifoParams.rsrcParams.hardwarePortId = hardwarePortId; + fifoParams.rsrcParams.val = *p_SizeOfFifo; + fifoParams.rsrcParams.extra = extraSizeOfFifo; + fifoParams.enumPortType = (uint32_t)portType; + fifoParams.boolIndependentMode = (uint8_t)independentMode; + fifoParams.deqPipelineDepth = deqPipelineDepth; + fifoParams.numOfPools = p_RxPoolsParams->numOfPools; + fifoParams.secondLargestBufSize = p_RxPoolsParams->secondLargestBufSize; + fifoParams.largestBufSize = p_RxPoolsParams->largestBufSize; + fifoParams.boolInitialConfig = (uint8_t)initialConfig; + + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + msg.msgId = FM_SET_SIZE_OF_FIFO; + memcpy(msg.msgBody, &fifoParams, sizeof(fifoParams)); + replyLength = sizeof(uint32_t) + sizeof(uint32_t); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId) + sizeof(fifoParams), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + if (replyLength != (sizeof(uint32_t) + sizeof(uint32_t))) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + memcpy((uint8_t*)p_SizeOfFifo, reply.replyBody, sizeof(uint32_t)); + + return (t_Error)(reply.error); + } + sizeOfFifo = *p_SizeOfFifo; + /* if neseccary (cases where frame length is relevant), update sizeOfFifo field. */ + if((portType == e_FM_PORT_TYPE_TX) || ((portType == e_FM_PORT_TYPE_RX) && independentMode)) + { + HW_PORT_ID_TO_SW_PORT_ID(relativePortId, hardwarePortId); + ASSERT_COND(relativePortId < FM_MAX_NUM_OF_1G_MACS); + macMaxFrameLength = p_Fm->p_FmStateStruct->macMaxFrameLengths1G[relativePortId]; + } + +#if (defined(FM_MAX_NUM_OF_10G_MACS) && (FM_MAX_NUM_OF_10G_MACS)) + if((portType == e_FM_PORT_TYPE_TX_10G) || ((portType == e_FM_PORT_TYPE_RX_10G) && independentMode)) + { + HW_PORT_ID_TO_SW_PORT_ID(relativePortId, hardwarePortId); + ASSERT_COND(relativePortId < FM_MAX_NUM_OF_10G_MACS); + macMaxFrameLength = p_Fm->p_FmStateStruct->macMaxFrameLengths10G[relativePortId]; + } +#endif /* (defined(FM_MAX_NUM_OF_10G_MACS) && ... */ + + /*************************/ + /* TX PORTS */ + /*************************/ + if((portType == e_FM_PORT_TYPE_TX) || (portType == e_FM_PORT_TYPE_TX_10G)) + { + if(independentMode) + minFifoSizeRequired = (uint32_t)((macMaxFrameLength % BMI_FIFO_UNITS ? + (macMaxFrameLength/BMI_FIFO_UNITS + 1) * BMI_FIFO_UNITS : + macMaxFrameLength) + + (3*BMI_FIFO_UNITS)); + else + minFifoSizeRequired = (uint32_t)((macMaxFrameLength % BMI_FIFO_UNITS ? + (macMaxFrameLength/BMI_FIFO_UNITS + 1) * BMI_FIFO_UNITS : + macMaxFrameLength) + + (deqPipelineDepth+3)*BMI_FIFO_UNITS); + } + /*************************/ + /* RX IM PORTS */ + /*************************/ + else if(((portType == e_FM_PORT_TYPE_RX) || (portType == e_FM_PORT_TYPE_RX_10G)) && independentMode) + minFifoSizeRequired = (uint32_t)(((macMaxFrameLength % BMI_FIFO_UNITS) ? + ((macMaxFrameLength/BMI_FIFO_UNITS + 1) * BMI_FIFO_UNITS) : + macMaxFrameLength) + + (4*BMI_FIFO_UNITS)); + + /* for Rx (non-Im) ports or OP, buffer pools are relevant for fifo size. + If this routine is called as part of the "GetSet" routine, initialConfig is TRUE + and these checks where done in the port routine. + If it is called by an explicit user request ("SetSizeOfFifo"), than these parameters + should be checked/updated */ + if(!initialConfig && + ((portType == e_FM_PORT_TYPE_OH_OFFLINE_PARSING) || + (((portType == e_FM_PORT_TYPE_RX) || (portType == e_FM_PORT_TYPE_RX_10G)) && !independentMode))) + { + if((portType == e_FM_PORT_TYPE_RX) || (portType == e_FM_PORT_TYPE_RX_10G)) + { + /*************************/ + /* RX non-IM PORTS */ + /*************************/ +#ifdef FM_FIFO_ALLOCATION_OLD_ALG + t_FmRevisionInfo revInfo; + + FM_GetRevision(p_Fm, &revInfo); + if(revInfo.majorRev != 4) + minFifoSizeRequired = (uint32_t)(((p_RxPoolsParams->largestBufSize % BMI_FIFO_UNITS) ? + ((p_RxPoolsParams->largestBufSize/BMI_FIFO_UNITS + 1) * BMI_FIFO_UNITS) : + p_RxPoolsParams->largestBufSize) + + (7*BMI_FIFO_UNITS)); + else +#endif /* FM_FIFO_ALLOCATION_OLD_ALG */ + { + if(p_RxPoolsParams->numOfPools == 1) + minFifoSizeRequired = 8*BMI_FIFO_UNITS; + else + { + minFifoSizeRequired = (uint32_t)(((p_RxPoolsParams->secondLargestBufSize % BMI_FIFO_UNITS) ? + ((p_RxPoolsParams->secondLargestBufSize/BMI_FIFO_UNITS + 1) * BMI_FIFO_UNITS) : + p_RxPoolsParams->secondLargestBufSize) + + (7*BMI_FIFO_UNITS)); + if((sizeOfFifo < minFifoSizeRequired)) + { + DBG(WARNING, ("User set FIFO size for Rx port is not optimized. (not modified by driver)")); + minFifoSizeRequired = 8*BMI_FIFO_UNITS; + } + } + } + } + else + { + /*************************/ + /* OP PORTS */ + /*************************/ + /* check if pool size is not too big */ + if(p_RxPoolsParams->largestBufSize > sizeOfFifo ) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Largest pool size is bigger than ports committed fifo size")); + } + } + + + if (minFifoSizeRequired && (sizeOfFifo < minFifoSizeRequired)) + { + sizeOfFifo = minFifoSizeRequired; + DBG(WARNING, ("FIFO size enlarged to %d for port %#x", minFifoSizeRequired, hardwarePortId)); + } + + if(initialConfig) + oldVal = 0; + else + { + tmpReg = GET_UINT32(p_Fm->p_FmBmiRegs->fmbm_pfs[hardwarePortId-1]); + /* read into oldVal the current extra fifo size */ + oldVal = (uint16_t)((((tmpReg & BMI_EXTRA_FIFO_SIZE_MASK) + 1)*BMI_FIFO_UNITS) >> BMI_EXTRA_FIFO_SIZE_SHIFT); + } + + if(extraSizeOfFifo > oldVal) + p_Fm->p_FmStateStruct->extraFifoPoolSize = MAX(p_Fm->p_FmStateStruct->extraFifoPoolSize, extraSizeOfFifo); + + if(!initialConfig) + /* read into oldVal the current num of tasks */ + oldVal = (uint16_t)(((tmpReg & BMI_FIFO_SIZE_MASK) + 1)*BMI_FIFO_UNITS); + + /* check that there are enough uncommitted fifo size */ + if((p_Fm->p_FmStateStruct->accumulatedFifoSize - oldVal + sizeOfFifo) > + (p_Fm->p_FmStateStruct->totalFifoSize - p_Fm->p_FmStateStruct->extraFifoPoolSize)) + RETURN_ERROR(MAJOR, E_NOT_AVAILABLE, ("Requested fifo size and extra size exceed total FIFO size.")); + else + { + /* update acummulated */ + ASSERT_COND(p_Fm->p_FmStateStruct->accumulatedFifoSize >= oldVal); + p_Fm->p_FmStateStruct->accumulatedFifoSize -= oldVal; + p_Fm->p_FmStateStruct->accumulatedFifoSize += sizeOfFifo; + /* calculate reg */ + tmpReg = (uint32_t)((sizeOfFifo/BMI_FIFO_UNITS - 1) | + ((extraSizeOfFifo/BMI_FIFO_UNITS) << BMI_EXTRA_FIFO_SIZE_SHIFT)); + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_pfs[hardwarePortId-1], tmpReg); + } + *p_SizeOfFifo = sizeOfFifo; + + return E_OK; +} + +t_Error FmSetNumOfTasks(t_Handle h_Fm, + uint8_t hardwarePortId, + uint8_t numOfTasks, + uint8_t numOfExtraTasks, + bool initialConfig) +{ + t_Fm *p_Fm = (t_Fm *)h_Fm; + uint8_t oldVal; + uint32_t tmpReg = 0; + t_FmIpcPortRsrcParams rsrcParams; + t_Error err; + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + t_FmIpcMsg msg; + t_FmIpcReply reply; + uint32_t replyLength; + + rsrcParams.hardwarePortId = hardwarePortId; + rsrcParams.val = numOfTasks; + rsrcParams.extra = numOfExtraTasks; + rsrcParams.boolInitialConfig = (uint8_t)initialConfig; + + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + msg.msgId = FM_SET_NUM_OF_TASKS; + memcpy(msg.msgBody, &rsrcParams, sizeof(rsrcParams)); + replyLength = sizeof(uint32_t); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId) + sizeof(rsrcParams), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + if (replyLength != sizeof(uint32_t)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + return (t_Error)(reply.error); + } + + ASSERT_COND(IN_RANGE(1, hardwarePortId, 63)); + + if(initialConfig) + oldVal = 0; + else + { + tmpReg = GET_UINT32(p_Fm->p_FmBmiRegs->fmbm_pp[hardwarePortId-1]); + /* read into oldVal the current extra tasks */ + oldVal = (uint8_t)((tmpReg & BMI_NUM_OF_EXTRA_TASKS_MASK) >> BMI_EXTRA_NUM_OF_TASKS_SHIFT); + } + + if(numOfExtraTasks > oldVal) + p_Fm->p_FmStateStruct->extraTasksPoolSize = (uint8_t)MAX(p_Fm->p_FmStateStruct->extraTasksPoolSize, numOfExtraTasks); + + if(!initialConfig) + /* read into oldVal the current num of tasks */ + oldVal = (uint8_t)(((tmpReg & BMI_NUM_OF_TASKS_MASK) >> BMI_NUM_OF_TASKS_SHIFT) + 1); + + /* check that there are enough uncommitted tasks */ + if((p_Fm->p_FmStateStruct->accumulatedNumOfTasks - oldVal + numOfTasks) > + (p_Fm->p_FmStateStruct->totalNumOfTasks - p_Fm->p_FmStateStruct->extraTasksPoolSize)) + RETURN_ERROR(MAJOR, E_NOT_AVAILABLE, + ("Requested numOfTasks and extra tasks pool for fm%d exceed total numOfTasks.", + p_Fm->p_FmStateStruct->fmId)); + else + { + ASSERT_COND(p_Fm->p_FmStateStruct->accumulatedNumOfTasks >= oldVal); + /* update acummulated */ + p_Fm->p_FmStateStruct->accumulatedNumOfTasks -= oldVal; + p_Fm->p_FmStateStruct->accumulatedNumOfTasks += numOfTasks; + /* calculate reg */ + tmpReg = GET_UINT32(p_Fm->p_FmBmiRegs->fmbm_pp[hardwarePortId-1]) & ~(BMI_NUM_OF_TASKS_MASK | BMI_NUM_OF_EXTRA_TASKS_MASK); + tmpReg |= (uint32_t)(((numOfTasks-1) << BMI_NUM_OF_TASKS_SHIFT) | + (numOfExtraTasks << BMI_EXTRA_NUM_OF_TASKS_SHIFT)); + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_pp[hardwarePortId-1],tmpReg); + } + + return E_OK; +} + +t_Error FmSetNumOfOpenDmas(t_Handle h_Fm, + uint8_t hardwarePortId, + uint8_t numOfOpenDmas, + uint8_t numOfExtraOpenDmas, + bool initialConfig) + +{ + t_Fm *p_Fm = (t_Fm *)h_Fm; + uint8_t oldVal; + uint32_t tmpReg = 0; + t_FmIpcPortRsrcParams rsrcParams; + t_Error err; + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + t_FmIpcMsg msg; + t_FmIpcReply reply; + uint32_t replyLength; + + rsrcParams.hardwarePortId = hardwarePortId; + rsrcParams.val = numOfOpenDmas; + rsrcParams.extra = numOfExtraOpenDmas; + rsrcParams.boolInitialConfig = (uint8_t)initialConfig; + + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + msg.msgId = FM_SET_NUM_OF_OPEN_DMAS; + memcpy(msg.msgBody, &rsrcParams, sizeof(rsrcParams)); + replyLength = sizeof(uint32_t); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId) + sizeof(rsrcParams), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + if (replyLength != sizeof(uint32_t)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + return (t_Error)(reply.error); + } + + ASSERT_COND(IN_RANGE(1, hardwarePortId, 63)); + + if(initialConfig) + oldVal = 0; + else + { + tmpReg = GET_UINT32(p_Fm->p_FmBmiRegs->fmbm_pp[hardwarePortId-1]); + /* read into oldVal the current extra tasks */ + oldVal = (uint8_t)((tmpReg & BMI_NUM_OF_EXTRA_DMAS_MASK) >> BMI_EXTRA_NUM_OF_DMAS_SHIFT); + } + + if(numOfExtraOpenDmas > oldVal) + p_Fm->p_FmStateStruct->extraOpenDmasPoolSize = (uint8_t)MAX(p_Fm->p_FmStateStruct->extraOpenDmasPoolSize, numOfExtraOpenDmas); + + if(!initialConfig) + /* read into oldVal the current num of tasks */ + oldVal = (uint8_t)(((tmpReg & BMI_NUM_OF_DMAS_MASK) >> BMI_NUM_OF_DMAS_SHIFT) + 1); + + /* check that there are enough uncommitted open DMA's */ + ASSERT_COND(p_Fm->p_FmStateStruct->accumulatedNumOfOpenDmas >= oldVal); + if((p_Fm->p_FmStateStruct->accumulatedNumOfOpenDmas - oldVal + numOfOpenDmas) > + p_Fm->p_FmStateStruct->maxNumOfOpenDmas) + RETURN_ERROR(MAJOR, E_NOT_AVAILABLE, + ("Requested numOfOpenDmas for fm%d exceeds total numOfOpenDmas.", + p_Fm->p_FmStateStruct->fmId)); + else + { + /* update acummulated */ + p_Fm->p_FmStateStruct->accumulatedNumOfOpenDmas -= oldVal; + p_Fm->p_FmStateStruct->accumulatedNumOfOpenDmas += numOfOpenDmas; + /* calculate reg */ + tmpReg = GET_UINT32(p_Fm->p_FmBmiRegs->fmbm_pp[hardwarePortId-1]) & ~(BMI_NUM_OF_DMAS_MASK | BMI_NUM_OF_EXTRA_DMAS_MASK); + tmpReg |= (uint32_t)(((numOfOpenDmas-1) << BMI_NUM_OF_DMAS_SHIFT) | + (numOfExtraOpenDmas << BMI_EXTRA_NUM_OF_DMAS_SHIFT)); + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_pp[hardwarePortId-1], tmpReg); + + /* update total num of DMA's with committed number of open DMAS, and max uncommitted pool. */ + tmpReg = GET_UINT32(p_Fm->p_FmBmiRegs->fmbm_cfg2) & ~BMI_CFG2_DMAS_MASK; + tmpReg |= (uint32_t)(p_Fm->p_FmStateStruct->accumulatedNumOfOpenDmas + p_Fm->p_FmStateStruct->extraOpenDmasPoolSize - 1) << BMI_CFG2_DMAS_SHIFT; + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_cfg2, tmpReg); + } + + return E_OK; +} + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) +t_Error FmDumpPortRegs (t_Handle h_Fm,uint8_t hardwarePortId) +{ + t_Fm *p_Fm = (t_Fm *)h_Fm; + t_FmIpcMsg msg; + t_Error err; + + DECLARE_DUMP; + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + msg.msgId = FM_DUMP_PORT_REGS; + msg.msgBody[0] = hardwarePortId; + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId)+sizeof(hardwarePortId), + NULL, + NULL, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + return E_OK; + } + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + + DUMP_TITLE(&p_Fm->p_FmBmiRegs->fmbm_pp[hardwarePortId-1], ("fmbm_pp for port %u", (hardwarePortId))); + DUMP_MEMORY(&p_Fm->p_FmBmiRegs->fmbm_pp[hardwarePortId-1], sizeof(uint32_t)); + + DUMP_TITLE(&p_Fm->p_FmBmiRegs->fmbm_pfs[hardwarePortId-1], ("fmbm_pfs for port %u", (hardwarePortId ))); + DUMP_MEMORY(&p_Fm->p_FmBmiRegs->fmbm_pfs[hardwarePortId-1], sizeof(uint32_t)); + + DUMP_TITLE(&p_Fm->p_FmBmiRegs->fmbm_ppid[hardwarePortId-1], ("bm_ppid for port %u", (hardwarePortId))); + DUMP_MEMORY(&p_Fm->p_FmBmiRegs->fmbm_ppid[hardwarePortId-1], sizeof(uint32_t)); + + return E_OK; +} +#endif /* (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) */ + + +/*****************************************************************************/ +/* API Init unit functions */ +/*****************************************************************************/ +t_Handle FM_Config(t_FmParams *p_FmParam) +{ + t_Fm *p_Fm; + uint8_t i; + uintptr_t baseAddr; + + SANITY_CHECK_RETURN_VALUE(p_FmParam, E_NULL_POINTER, NULL); + SANITY_CHECK_RETURN_VALUE(((p_FmParam->firmware.p_Code && p_FmParam->firmware.size) || + (!p_FmParam->firmware.p_Code && !p_FmParam->firmware.size)), + E_INVALID_VALUE, NULL); + + baseAddr = p_FmParam->baseAddr; + + /* Allocate FM structure */ + p_Fm = (t_Fm *) XX_Malloc(sizeof(t_Fm)); + if (!p_Fm) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FM driver structure")); + return NULL; + } + memset(p_Fm, 0, sizeof(t_Fm)); + + p_Fm->p_FmStateStruct = (t_FmStateStruct *) XX_Malloc(sizeof(t_FmStateStruct)); + if (!p_Fm->p_FmStateStruct) + { + XX_Free(p_Fm); + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FM Status structure")); + return NULL; + } + memset(p_Fm->p_FmStateStruct, 0, sizeof(t_FmStateStruct)); + + /* Initialize FM parameters which will be kept by the driver */ + p_Fm->p_FmStateStruct->fmId = p_FmParam->fmId; + p_Fm->guestId = p_FmParam->guestId; + + for(i=0; ip_FmStateStruct->portsTypes[i] = e_FM_PORT_TYPE_DUMMY; + + /* Allocate the FM driver's parameters structure */ + p_Fm->p_FmDriverParam = (t_FmDriverParam *)XX_Malloc(sizeof(t_FmDriverParam)); + if (!p_Fm->p_FmDriverParam) + { + XX_Free(p_Fm->p_FmStateStruct); + XX_Free(p_Fm); + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FM driver parameters")); + return NULL; + } + memset(p_Fm->p_FmDriverParam, 0, sizeof(t_FmDriverParam)); + + /* Initialize FM parameters which will be kept by the driver */ + p_Fm->p_FmStateStruct->fmId = p_FmParam->fmId; + p_Fm->h_FmMuram = p_FmParam->h_FmMuram; + p_Fm->h_App = p_FmParam->h_App; + p_Fm->p_FmStateStruct->fmClkFreq = p_FmParam->fmClkFreq; + p_Fm->f_Exception = p_FmParam->f_Exception; + p_Fm->f_BusError = p_FmParam->f_BusError; + p_Fm->p_FmFpmRegs = (t_FmFpmRegs *)UINT_TO_PTR(baseAddr + FM_MM_FPM); + p_Fm->p_FmBmiRegs = (t_FmBmiRegs *)UINT_TO_PTR(baseAddr + FM_MM_BMI); + p_Fm->p_FmQmiRegs = (t_FmQmiRegs *)UINT_TO_PTR(baseAddr + FM_MM_QMI); + p_Fm->p_FmDmaRegs = (t_FmDmaRegs *)UINT_TO_PTR(baseAddr + FM_MM_DMA); + p_Fm->baseAddr = baseAddr; + p_Fm->p_FmStateStruct->irq = p_FmParam->irq; + p_Fm->p_FmStateStruct->errIrq = p_FmParam->errIrq; + p_Fm->hcPortInitialized = FALSE; + p_Fm->independentMode = FALSE; + p_Fm->p_FmStateStruct->ramsEccEnable = FALSE; + p_Fm->p_FmStateStruct->totalNumOfTasks = DEFAULT_totalNumOfTasks; + p_Fm->p_FmStateStruct->totalFifoSize = DEFAULT_totalFifoSize; + p_Fm->p_FmStateStruct->maxNumOfOpenDmas = DEFAULT_maxNumOfOpenDmas; + p_Fm->p_FmStateStruct->extraFifoPoolSize = FM_MAX_NUM_OF_RX_PORTS*BMI_FIFO_UNITS; + p_Fm->p_FmStateStruct->exceptions = DEFAULT_exceptions; + for(i = 0;ip_FmStateStruct->macMaxFrameLengths1G[i] = DEFAULT_mtu; +#if defined(FM_MAX_NUM_OF_10G_MACS) && (FM_MAX_NUM_OF_10G_MACS) + for(i = 0;ip_FmStateStruct->macMaxFrameLengths10G[i] = DEFAULT_mtu; +#endif /*defined(FM_MAX_NUM_OF_10G_MACS) && (FM_MAX_NUM_OF_10G_MACS)*/ + + p_Fm->h_Spinlock = XX_InitSpinlock(); + if (!p_Fm->h_Spinlock) + { + XX_Free(p_Fm->p_FmDriverParam); + XX_Free(p_Fm->p_FmStateStruct); + XX_Free(p_Fm); + REPORT_ERROR(MAJOR, E_INVALID_STATE, ("cant allocate spinlock!")); + return NULL; + } + +#ifdef FM_PARTITION_ARRAY + /* Initialize FM driver parameters parameters (for initialization phase only) */ + memcpy(p_Fm->p_FmDriverParam->liodnBasePerPort, p_FmParam->liodnBasePerPort, FM_SIZE_OF_LIODN_TABLE*sizeof(uint16_t)); +#endif /* FM_PARTITION_ARRAY */ + + /*p_Fm->p_FmDriverParam->numOfPartitions = p_FmParam->numOfPartitions; */ + p_Fm->p_FmDriverParam->enCounters = FALSE; + + p_Fm->p_FmDriverParam->resetOnInit = DEFAULT_resetOnInit; + + p_Fm->p_FmDriverParam->thresholds.dispLimit = DEFAULT_dispLimit; + p_Fm->p_FmDriverParam->thresholds.prsDispTh = DEFAULT_prsDispTh; + p_Fm->p_FmDriverParam->thresholds.plcrDispTh = DEFAULT_plcrDispTh; + p_Fm->p_FmDriverParam->thresholds.kgDispTh = DEFAULT_kgDispTh; + p_Fm->p_FmDriverParam->thresholds.bmiDispTh = DEFAULT_bmiDispTh; + p_Fm->p_FmDriverParam->thresholds.qmiEnqDispTh = DEFAULT_qmiEnqDispTh; + p_Fm->p_FmDriverParam->thresholds.qmiDeqDispTh = DEFAULT_qmiDeqDispTh; + p_Fm->p_FmDriverParam->thresholds.fmCtl1DispTh = DEFAULT_fmCtl1DispTh; + p_Fm->p_FmDriverParam->thresholds.fmCtl2DispTh = DEFAULT_fmCtl2DispTh; + + p_Fm->p_FmDriverParam->dmaStopOnBusError = DEFAULT_dmaStopOnBusError; + + p_Fm->p_FmDriverParam->dmaCacheOverride = DEFAULT_cacheOverride; + p_Fm->p_FmDriverParam->dmaAidMode = DEFAULT_aidMode; + p_Fm->p_FmDriverParam->dmaAidOverride = DEFAULT_aidOverride; + p_Fm->p_FmDriverParam->dmaAxiDbgNumOfBeats = DEFAULT_axiDbgNumOfBeats; + p_Fm->p_FmDriverParam->dmaCamNumOfEntries = DEFAULT_dmaCamNumOfEntries; + p_Fm->p_FmDriverParam->dmaWatchdog = DEFAULT_dmaWatchdog; + + p_Fm->p_FmDriverParam->dmaCommQThresholds.clearEmergency = DEFAULT_dmaCommQLow; + p_Fm->p_FmDriverParam->dmaCommQThresholds.assertEmergency = DEFAULT_dmaCommQHigh; + p_Fm->p_FmDriverParam->dmaReadBufThresholds.clearEmergency = DEFAULT_dmaReadIntBufLow; + p_Fm->p_FmDriverParam->dmaReadBufThresholds.assertEmergency = DEFAULT_dmaReadIntBufHigh; + p_Fm->p_FmDriverParam->dmaWriteBufThresholds.clearEmergency = DEFAULT_dmaWriteIntBufLow; + p_Fm->p_FmDriverParam->dmaWriteBufThresholds.assertEmergency = DEFAULT_dmaWriteIntBufHigh; + p_Fm->p_FmDriverParam->dmaSosEmergency = DEFAULT_dmaSosEmergency; + + p_Fm->p_FmDriverParam->dmaDbgCntMode = DEFAULT_dmaDbgCntMode; + + p_Fm->p_FmDriverParam->dmaEnEmergency = FALSE; + p_Fm->p_FmDriverParam->dmaEnEmergencySmoother = FALSE; + p_Fm->p_FmDriverParam->catastrophicErr = DEFAULT_catastrophicErr; + p_Fm->p_FmDriverParam->dmaErr = DEFAULT_dmaErr; + p_Fm->p_FmDriverParam->haltOnExternalActivation = DEFAULT_haltOnExternalActivation; + p_Fm->p_FmDriverParam->haltOnUnrecoverableEccError = DEFAULT_haltOnUnrecoverableEccError; + p_Fm->p_FmDriverParam->enIramTestMode = FALSE; + p_Fm->p_FmDriverParam->enMuramTestMode = FALSE; + p_Fm->p_FmDriverParam->externalEccRamsEnable = DEFAULT_externalEccRamsEnable; + + p_Fm->p_FmDriverParam->fwVerify = DEFAULT_VerifyUcode; + p_Fm->p_FmDriverParam->firmware.size = p_FmParam->firmware.size; + if (p_Fm->p_FmDriverParam->firmware.size) + { + p_Fm->p_FmDriverParam->firmware.p_Code = (uint32_t *)XX_Malloc(p_Fm->p_FmDriverParam->firmware.size); + if (!p_Fm->p_FmDriverParam->firmware.p_Code) + { + XX_FreeSpinlock(p_Fm->h_Spinlock); + XX_Free(p_Fm->p_FmStateStruct); + XX_Free(p_Fm->p_FmDriverParam); + XX_Free(p_Fm); + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FM firmware code")); + return NULL; + } + memcpy(p_Fm->p_FmDriverParam->firmware.p_Code, p_FmParam->firmware.p_Code, p_Fm->p_FmDriverParam->firmware.size); + } + + return p_Fm; +} + +/**************************************************************************//** + @Function FM_Init + + @Description Initializes the FM module + + @Param[in] h_Fm - FM module descriptor + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error FM_Init(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + t_FmDriverParam *p_FmDriverParam = NULL; + t_Error err = E_OK; + uint32_t tmpReg, cfgReg = 0; + int i; + uint16_t periodInFmClocks; + uint8_t remainder; + t_FmRevisionInfo revInfo; + + SANITY_CHECK_RETURN_ERROR(h_Fm, E_INVALID_HANDLE); + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + uint8_t isMasterAlive; + t_FmIpcMsg msg; + t_FmIpcReply reply; + uint32_t replyLength; + + /* build the FM guest partition IPC address */ + if(Sprint (p_Fm->fmModuleName, "FM_%d_%d",p_Fm->p_FmStateStruct->fmId, p_Fm->guestId) != (p_Fm->guestId<10 ? 6:7)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Sprint failed")); + + /* build the FM master partition IPC address */ + memset(p_Fm->fmIpcHandlerModuleName, 0, (sizeof(char)) * MODULE_NAME_SIZE); + if(Sprint (p_Fm->fmIpcHandlerModuleName[0], "FM_%d_%d",p_Fm->p_FmStateStruct->fmId, NCSW_MASTER_ID) != 6) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Sprint failed")); + + for(i=0;iintrMng[i].f_Isr = UnimplementedIsr; + + p_Fm->h_IpcSessions[0] = XX_IpcInitSession(p_Fm->fmIpcHandlerModuleName[0], p_Fm->fmModuleName); + if (p_Fm->h_IpcSessions[0]) + { + err = XX_IpcRegisterMsgHandler(p_Fm->fmModuleName, FmGuestHandleIpcMsgCB, p_Fm, FM_IPC_MAX_REPLY_SIZE); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + msg.msgId = FM_MASTER_IS_ALIVE; + msg.msgBody[0] = p_Fm->guestId; + replyLength = sizeof(uint32_t) + sizeof(uint8_t); + do + { + blockingFlag = TRUE; + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId)+sizeof(p_Fm->guestId), + (uint8_t*)&reply, + &replyLength, + IpcMsgCompletionCB, + h_Fm)) != E_OK) + REPORT_ERROR(MINOR, err, NO_MSG); + while(blockingFlag) ; + if(replyLength != (sizeof(uint32_t) + sizeof(uint8_t))) + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + isMasterAlive = *(uint8_t*)(reply.replyBody); + } while (!isMasterAlive); + + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + msg.msgId = FM_GET_CLK_FREQ; + replyLength = sizeof(uint32_t) + sizeof(p_Fm->p_FmStateStruct->fmClkFreq); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + if(replyLength != (sizeof(uint32_t) + sizeof(p_Fm->p_FmStateStruct->fmClkFreq))) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + memcpy((uint8_t*)&p_Fm->p_FmStateStruct->fmClkFreq, reply.replyBody, sizeof(uint16_t)); + } + else + { + DBG(WARNING, ("FM Guest mode - without IPC")); + if(!p_Fm->p_FmStateStruct->fmClkFreq ) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("No fmClkFreq configured for guest without IPC")); + if(!p_Fm->baseAddr) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("No baseAddr configured for guest without IPC")); + } + + XX_Free(p_Fm->p_FmDriverParam); + p_Fm->p_FmDriverParam = NULL; + + if ((p_Fm->guestId == NCSW_MASTER_ID) || + (p_Fm->h_IpcSessions[0])) + { + FM_DisableRamsEcc(p_Fm); + FmMuramClear(p_Fm->h_FmMuram); + FM_EnableRamsEcc(p_Fm); + } + + return E_OK; + } + + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + FM_GetRevision(p_Fm, &revInfo); + +#ifdef FM_NO_DISPATCH_RAM_ECC + if (revInfo.majorRev != 4) + p_Fm->p_FmStateStruct->exceptions &= ~FM_EX_BMI_DISPATCH_RAM_ECC; +#endif /* FM_NO_DISPATCH_RAM_ECC */ + +#ifdef FM_RAM_LIST_ERR_IRQ_ERRATA_FMAN8 + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + p_Fm->p_FmStateStruct->exceptions &= ~FM_EX_BMI_LIST_RAM_ECC; +#endif /* FM_RAM_LIST_ERR_IRQ_ERRATA_FMAN8 */ + +#ifdef FM_BMI_PIPELINE_ERR_IRQ_ERRATA_FMAN9 + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + p_Fm->p_FmStateStruct->exceptions &= ~FM_EX_BMI_PIPELINE_ECC; +#endif /* FM_BMI_PIPELINE_ERR_IRQ_ERRATA_FMAN9 */ + +#ifdef FM_QMI_NO_ECC_EXCEPTIONS + if (revInfo.majorRev == 4) + p_Fm->p_FmStateStruct->exceptions &= ~(FM_EX_QMI_SINGLE_ECC | FM_EX_QMI_DOUBLE_ECC); +#endif /* FM_QMI_NO_ECC_EXCEPTIONS */ + + CHECK_INIT_PARAMETERS(p_Fm, CheckFmParameters); + + p_FmDriverParam = p_Fm->p_FmDriverParam; + + FmMuramClear(p_Fm->h_FmMuram); + +#ifdef FM_UCODE_NOT_RESET_ERRATA_BUGZILLA6173 + if (p_FmDriverParam->resetOnInit) + { + t_FMIramRegs *p_Iram = (t_FMIramRegs *)UINT_TO_PTR(p_Fm->baseAddr + FM_MM_IMEM); + uint32_t debug_reg; + + /* write to IRAM first location the debug instruction */ + WRITE_UINT32(p_Iram->iadd, 0); + while (GET_UINT32(p_Iram->iadd) != 0) ; + WRITE_UINT32(p_Iram->idata, FM_UCODE_DEBUG_INSTRUCTION); + + WRITE_UINT32(p_Iram->iadd, 0); + while (GET_UINT32(p_Iram->iadd) != 0) ; + while (GET_UINT32(p_Iram->idata) != FM_UCODE_DEBUG_INSTRUCTION) ; + + /* Enable patch from IRAM */ + WRITE_UINT32(p_Iram->iready, IRAM_READY); + XX_UDelay(100); + + /* reset FMAN */ + WRITE_UINT32(p_Fm->p_FmFpmRegs->fmrstc, FPM_RSTC_FM_RESET); + XX_UDelay(100); + + /* verify breakpoint debug status register */ + debug_reg = GET_UINT32(*(uint32_t *)UINT_TO_PTR(p_Fm->baseAddr + FM_DEBUG_STATUS_REGISTER_OFFSET)); +#ifndef NCSW_LINUX + if(!debug_reg) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Invalid debug status register value = 0")); +#else + if(!debug_reg) + DBG(INFO,("Invalid debug status register value = 0")); +#endif + /*************************************/ + /* Load FMan-Controller code to Iram */ + /*************************************/ + if (ClearIRam(p_Fm) != E_OK) + RETURN_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); + if (p_Fm->p_FmDriverParam->firmware.p_Code && + (LoadFmanCtrlCode(p_Fm) != E_OK)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); + XX_UDelay(100); + + /* reset FMAN again to start the microcode */ + WRITE_UINT32(p_Fm->p_FmFpmRegs->fmrstc, FPM_RSTC_FM_RESET); + XX_UDelay(1000); + } + else + { +#endif /* FM_UCODE_NOT_RESET_ERRATA_BUGZILLA6173 */ + if(p_FmDriverParam->resetOnInit) + { + WRITE_UINT32(p_Fm->p_FmFpmRegs->fmrstc, FPM_RSTC_FM_RESET); + XX_UDelay(100); + } + + /*************************************/ + /* Load FMan-Controller code to Iram */ + /*************************************/ + if (ClearIRam(p_Fm) != E_OK) + RETURN_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); + if (p_Fm->p_FmDriverParam->firmware.p_Code && + (LoadFmanCtrlCode(p_Fm) != E_OK)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); +#ifdef FM_UCODE_NOT_RESET_ERRATA_BUGZILLA6173 + } +#endif /* FM_UCODE_NOT_RESET_ERRATA_BUGZILLA6173 */ + +#ifdef FM_CAPWAP_SUPPORT + /* save first 256 byte in MURAM */ + p_Fm->resAddr = PTR_TO_UINT(FM_MURAM_AllocMem(p_Fm->h_FmMuram, 256, 0)); + if (!p_Fm->resAddr) + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("MURAM alloc for reserved Area failed")); + + WRITE_BLOCK(UINT_TO_PTR(p_Fm->resAddr), 0, 256); +#endif /* FM_CAPWAP_SUPPORT */ + + /* General FM driver initialization */ + p_Fm->fmMuramPhysBaseAddr = (uint64_t)(XX_VirtToPhys(UINT_TO_PTR(p_Fm->baseAddr + FM_MM_MURAM))); + for(i=0;iintrMng[i].f_Isr = UnimplementedIsr; + for(i=0;ifmanCtrlIntr[i].f_Isr = UnimplementedFmanCtrlIsr; + + /**********************/ + /* Init DMA Registers */ + /**********************/ + /* clear status reg events */ + tmpReg = (DMA_STATUS_BUS_ERR | DMA_STATUS_READ_ECC | DMA_STATUS_SYSTEM_WRITE_ECC | DMA_STATUS_FM_WRITE_ECC); + /*tmpReg |= (DMA_STATUS_SYSTEM_DPEXT_ECC | DMA_STATUS_FM_DPEXT_ECC | DMA_STATUS_SYSTEM_DPDAT_ECC | DMA_STATUS_FM_DPDAT_ECC | DMA_STATUS_FM_SPDAT_ECC);*/ + WRITE_UINT32(p_Fm->p_FmDmaRegs->fmdmsr, GET_UINT32(p_Fm->p_FmDmaRegs->fmdmsr) | tmpReg); + + /* configure mode register */ + tmpReg = 0; + tmpReg |= p_FmDriverParam->dmaCacheOverride << DMA_MODE_CACHE_OR_SHIFT; + if(p_FmDriverParam->dmaAidOverride) + tmpReg |= DMA_MODE_AID_OR; + if (p_Fm->p_FmStateStruct->exceptions & FM_EX_DMA_BUS_ERROR) + tmpReg |= DMA_MODE_BER; + if ((p_Fm->p_FmStateStruct->exceptions & FM_EX_DMA_SYSTEM_WRITE_ECC) | (p_Fm->p_FmStateStruct->exceptions & FM_EX_DMA_READ_ECC) | (p_Fm->p_FmStateStruct->exceptions & FM_EX_DMA_FM_WRITE_ECC)) + tmpReg |= DMA_MODE_ECC; + if(p_FmDriverParam->dmaStopOnBusError) + tmpReg |= DMA_MODE_SBER; + tmpReg |= (uint32_t)(p_FmDriverParam->dmaAxiDbgNumOfBeats - 1) << DMA_MODE_AXI_DBG_SHIFT; + if (p_FmDriverParam->dmaEnEmergency) + { + tmpReg |= p_FmDriverParam->dmaEmergency.emergencyBusSelect; + tmpReg |= p_FmDriverParam->dmaEmergency.emergencyLevel << DMA_MODE_EMERGENCY_LEVEL_SHIFT; + if(p_FmDriverParam->dmaEnEmergencySmoother) + WRITE_UINT32(p_Fm->p_FmDmaRegs->fmdmemsr, p_FmDriverParam->dmaEmergencySwitchCounter); + } + tmpReg |= ((p_FmDriverParam->dmaCamNumOfEntries/DMA_CAM_UNITS) - 1) << DMA_MODE_CEN_SHIFT; + + tmpReg |= DMA_MODE_SECURE_PROT; + tmpReg |= p_FmDriverParam->dmaDbgCntMode << DMA_MODE_DBG_SHIFT; + tmpReg |= p_FmDriverParam->dmaAidMode << DMA_MODE_AID_MODE_SHIFT; + +#ifdef FM_PEDANTIC_DMA + tmpReg |= DMA_MODE_EMERGENCY_READ; +#endif /* FM_PEDANTIC_DMA */ + + WRITE_UINT32(p_Fm->p_FmDmaRegs->fmdmmr, tmpReg); + + /* configure thresholds register */ + tmpReg = ((uint32_t)p_FmDriverParam->dmaCommQThresholds.assertEmergency << DMA_THRESH_COMMQ_SHIFT) | + ((uint32_t)p_FmDriverParam->dmaReadBufThresholds.assertEmergency << DMA_THRESH_READ_INT_BUF_SHIFT) | + ((uint32_t)p_FmDriverParam->dmaWriteBufThresholds.assertEmergency); + WRITE_UINT32(p_Fm->p_FmDmaRegs->fmdmtr, tmpReg); + + /* configure hysteresis register */ + tmpReg = ((uint32_t)p_FmDriverParam->dmaCommQThresholds.clearEmergency << DMA_THRESH_COMMQ_SHIFT) | + ((uint32_t)p_FmDriverParam->dmaReadBufThresholds.clearEmergency << DMA_THRESH_READ_INT_BUF_SHIFT) | + ((uint32_t)p_FmDriverParam->dmaWriteBufThresholds.clearEmergency); + WRITE_UINT32(p_Fm->p_FmDmaRegs->fmdmhy, tmpReg); + + /* configure emergency threshold */ + WRITE_UINT32(p_Fm->p_FmDmaRegs->fmdmsetr, p_FmDriverParam->dmaSosEmergency); + + /* configure Watchdog */ + WRITE_UINT32(p_Fm->p_FmDmaRegs->fmdmwcr, USEC_TO_CLK(p_FmDriverParam->dmaWatchdog, p_Fm->p_FmStateStruct->fmClkFreq)); + + /* Allocate MURAM for CAM */ + p_Fm->camBaseAddr = PTR_TO_UINT(FM_MURAM_AllocMem(p_Fm->h_FmMuram, + (uint32_t)(p_FmDriverParam->dmaCamNumOfEntries*DMA_CAM_SIZEOF_ENTRY), + DMA_CAM_ALIGN)); + if (!p_Fm->camBaseAddr ) + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("MURAM alloc for DMA CAM failed")); + + WRITE_BLOCK(UINT_TO_PTR(p_Fm->camBaseAddr), 0, (uint32_t)(p_FmDriverParam->dmaCamNumOfEntries*DMA_CAM_SIZEOF_ENTRY)); + + /* VirtToPhys */ + WRITE_UINT32(p_Fm->p_FmDmaRegs->fmdmebcr, + (uint32_t)(XX_VirtToPhys(UINT_TO_PTR(p_Fm->camBaseAddr)) - p_Fm->fmMuramPhysBaseAddr)); + +#ifdef FM_PARTITION_ARRAY + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + /* liodn-partitions */ + for (i=0 ; iliodnBasePerPort[i] << DMA_LIODN_SHIFT) | + (uint32_t)p_FmDriverParam->liodnBasePerPort[i+1]); + WRITE_UINT32(p_Fm->p_FmDmaRegs->fmdmplr[i/2], tmpReg); + } + } +#endif /* FM_PARTITION_ARRAY */ + + /**********************/ + /* Init FPM Registers */ + /**********************/ + tmpReg = (uint32_t)(p_FmDriverParam->thresholds.dispLimit << FPM_DISP_LIMIT_SHIFT); + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmflc, tmpReg); + + tmpReg = (((uint32_t)p_FmDriverParam->thresholds.prsDispTh << FPM_THR1_PRS_SHIFT) | + ((uint32_t)p_FmDriverParam->thresholds.kgDispTh << FPM_THR1_KG_SHIFT) | + ((uint32_t)p_FmDriverParam->thresholds.plcrDispTh << FPM_THR1_PLCR_SHIFT) | + ((uint32_t)p_FmDriverParam->thresholds.bmiDispTh << FPM_THR1_BMI_SHIFT)); + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmdis1, tmpReg); + + tmpReg = (((uint32_t)p_FmDriverParam->thresholds.qmiEnqDispTh << FPM_THR2_QMI_ENQ_SHIFT) | + ((uint32_t)p_FmDriverParam->thresholds.qmiDeqDispTh << FPM_THR2_QMI_DEQ_SHIFT) | + ((uint32_t)p_FmDriverParam->thresholds.fmCtl1DispTh << FPM_THR2_FM_CTL1_SHIFT) | + ((uint32_t)p_FmDriverParam->thresholds.fmCtl2DispTh << FPM_THR2_FM_CTL2_SHIFT)); + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmdis2, tmpReg); + + /* define exceptions and error behavior */ + tmpReg = 0; + /* Clear events */ + tmpReg |= (FPM_EV_MASK_STALL | FPM_EV_MASK_DOUBLE_ECC | FPM_EV_MASK_SINGLE_ECC); + /* enable interrupts */ + if(p_Fm->p_FmStateStruct->exceptions & FM_EX_FPM_STALL_ON_TASKS) + tmpReg |= FPM_EV_MASK_STALL_EN; + if(p_Fm->p_FmStateStruct->exceptions & FM_EX_FPM_SINGLE_ECC) + tmpReg |= FPM_EV_MASK_SINGLE_ECC_EN; + if(p_Fm->p_FmStateStruct->exceptions & FM_EX_FPM_DOUBLE_ECC) + tmpReg |= FPM_EV_MASK_DOUBLE_ECC_EN; + tmpReg |= (p_Fm->p_FmDriverParam->catastrophicErr << FPM_EV_MASK_CAT_ERR_SHIFT); + tmpReg |= (p_Fm->p_FmDriverParam->dmaErr << FPM_EV_MASK_DMA_ERR_SHIFT); + if(!p_Fm->p_FmDriverParam->haltOnExternalActivation) + tmpReg |= FPM_EV_MASK_EXTERNAL_HALT; + if(!p_Fm->p_FmDriverParam->haltOnUnrecoverableEccError) + tmpReg |= FPM_EV_MASK_ECC_ERR_HALT; + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmem, tmpReg); + + /* clear all fmCtls event registers */ + for(i=0;ip_FmFpmRegs->fpmcev[i], 0xFFFFFFFF); + + /* RAM ECC - enable and clear events*/ + /* first we need to clear all parser memory, as it is uninitialized and + may cause ECC errors */ + tmpReg = 0; + /* event bits */ + tmpReg = (FPM_RAM_CTL_MURAM_ECC | FPM_RAM_CTL_IRAM_ECC); + /* Rams enable is not effected by the RCR bit, but by a COP configuration */ + if(p_Fm->p_FmDriverParam->externalEccRamsEnable) + tmpReg |= FPM_RAM_CTL_RAMS_ECC_EN_SRC_SEL; + + /* enable test mode */ + if(p_FmDriverParam->enMuramTestMode) + tmpReg |= FPM_RAM_CTL_MURAM_TEST_ECC; + if(p_FmDriverParam->enIramTestMode) + tmpReg |= FPM_RAM_CTL_IRAM_TEST_ECC; + WRITE_UINT32(p_Fm->p_FmFpmRegs->fmrcr, tmpReg); + + tmpReg = 0; + if(p_Fm->p_FmStateStruct->exceptions & FM_EX_IRAM_ECC) + { + tmpReg |= FPM_IRAM_ECC_ERR_EX_EN; + FmEnableRamsEcc(p_Fm); + } + if(p_Fm->p_FmStateStruct->exceptions & FM_EX_NURAM_ECC) + { + tmpReg |= FPM_MURAM_ECC_ERR_EX_EN; + FmEnableRamsEcc(p_Fm); + } + WRITE_UINT32(p_Fm->p_FmFpmRegs->fmrie, tmpReg); + + /**********************/ + /* Init BMI Registers */ + /**********************/ + + /* define common resources */ + /* allocate MURAM for FIFO according to total size */ + p_Fm->fifoBaseAddr = PTR_TO_UINT(FM_MURAM_AllocMem(p_Fm->h_FmMuram, + p_Fm->p_FmStateStruct->totalFifoSize, + BMI_FIFO_ALIGN)); + if (!p_Fm->fifoBaseAddr) + { + FreeInitResources(p_Fm); + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("MURAM alloc for FIFO failed")); + } + + tmpReg = (uint32_t)(XX_VirtToPhys(UINT_TO_PTR(p_Fm->fifoBaseAddr)) - p_Fm->fmMuramPhysBaseAddr); + tmpReg = tmpReg / BMI_FIFO_ALIGN; + + tmpReg |= ((p_Fm->p_FmStateStruct->totalFifoSize/BMI_FIFO_UNITS - 1) << BMI_CFG1_FIFO_SIZE_SHIFT); + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_cfg1, tmpReg); + + tmpReg = ((uint32_t)(p_Fm->p_FmStateStruct->totalNumOfTasks - 1) << BMI_CFG2_TASKS_SHIFT ); + /* num of DMA's will be dynamically updated when each port is set */ + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_cfg2, tmpReg); + + /* define unmaskable exceptions, enable and clear events */ + tmpReg = 0; + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_ievr, (BMI_ERR_INTR_EN_LIST_RAM_ECC | + BMI_ERR_INTR_EN_PIPELINE_ECC | + BMI_ERR_INTR_EN_STATISTICS_RAM_ECC | + BMI_ERR_INTR_EN_DISPATCH_RAM_ECC)); + if(p_Fm->p_FmStateStruct->exceptions & FM_EX_BMI_LIST_RAM_ECC) + tmpReg |= BMI_ERR_INTR_EN_LIST_RAM_ECC; + if(p_Fm->p_FmStateStruct->exceptions & FM_EX_BMI_PIPELINE_ECC) + tmpReg |= BMI_ERR_INTR_EN_PIPELINE_ECC; + if(p_Fm->p_FmStateStruct->exceptions & FM_EX_BMI_STATISTICS_RAM_ECC) + tmpReg |= BMI_ERR_INTR_EN_STATISTICS_RAM_ECC; + if(p_Fm->p_FmStateStruct->exceptions & FM_EX_BMI_DISPATCH_RAM_ECC) + tmpReg |= BMI_ERR_INTR_EN_DISPATCH_RAM_ECC; + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_ier, tmpReg); + + /**********************/ + /* Init QMI Registers */ + /**********************/ + /* Clear error interrupt events */ + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_eie, (QMI_ERR_INTR_EN_DOUBLE_ECC | QMI_ERR_INTR_EN_DEQ_FROM_DEF)); + tmpReg = 0; + if(p_Fm->p_FmStateStruct->exceptions & FM_EX_QMI_DEQ_FROM_UNKNOWN_PORTID) + tmpReg |= QMI_ERR_INTR_EN_DEQ_FROM_DEF; + if(p_Fm->p_FmStateStruct->exceptions & FM_EX_QMI_DOUBLE_ECC) + tmpReg |= QMI_ERR_INTR_EN_DOUBLE_ECC; + /* enable events */ + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_eien, tmpReg); + + if(p_Fm->p_FmDriverParam->tnumAgingPeriod) + { + /* tnumAgingPeriod is in units of microseconds, p_FmClockFreq is in Mhz */ + periodInFmClocks = (uint16_t)(p_Fm->p_FmDriverParam->tnumAgingPeriod*p_Fm->p_FmStateStruct->fmClkFreq); + /* periodInFmClocks must be a 64 multiply */ + remainder = (uint8_t)(periodInFmClocks % 64); + if (remainder > 64) + tmpReg = (uint32_t)((periodInFmClocks/64) + 1); + else + { + tmpReg = (uint32_t)(periodInFmClocks/64); + if(!tmpReg) + tmpReg = 1; + } + tmpReg <<= QMI_TAPC_TAP; + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_tapc, tmpReg); + + } + tmpReg = 0; + /* Clear interrupt events */ + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_ie, QMI_INTR_EN_SINGLE_ECC); + if(p_Fm->p_FmStateStruct->exceptions & FM_EX_QMI_SINGLE_ECC) + tmpReg |= QMI_INTR_EN_SINGLE_ECC; + /* enable events */ + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_ien, tmpReg); + + /* clear & enable global counters - calculate reg and save for later, + because it's the same reg for QMI enable */ + if(p_Fm->p_FmDriverParam->enCounters) + cfgReg = QMI_CFG_EN_COUNTERS; +#ifdef FM_QMI_DEQ_OPTIONS_SUPPORT + cfgReg |= (uint32_t)(((QMI_DEF_TNUMS_THRESH) << 8) | (uint32_t)QMI_DEF_TNUMS_THRESH); +#endif /* FM_QMI_DEQ_OPTIONS_SUPPORT */ + + if (p_Fm->p_FmStateStruct->irq != NO_IRQ) + { + XX_SetIntr(p_Fm->p_FmStateStruct->irq, FM_EventIsr, p_Fm); + XX_EnableIntr(p_Fm->p_FmStateStruct->irq); + } + + if (p_Fm->p_FmStateStruct->errIrq != NO_IRQ) + { + XX_SetIntr(p_Fm->p_FmStateStruct->errIrq, ErrorIsrCB, p_Fm); + XX_EnableIntr(p_Fm->p_FmStateStruct->errIrq); + } + + /* build the FM master partition IPC address */ + if (Sprint (p_Fm->fmModuleName, "FM_%d_%d",p_Fm->p_FmStateStruct->fmId, NCSW_MASTER_ID) != 6) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Sprint failed")); + + err = XX_IpcRegisterMsgHandler(p_Fm->fmModuleName, FmHandleIpcMsgCB, p_Fm, FM_IPC_MAX_REPLY_SIZE); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + + /**********************/ + /* Enable all modules */ + /**********************/ + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_init, BMI_INIT_START); + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_gc, cfgReg | QMI_CFG_ENQ_EN | QMI_CFG_DEQ_EN); + + if (p_Fm->p_FmDriverParam->firmware.p_Code) + { + XX_Free(p_Fm->p_FmDriverParam->firmware.p_Code); + p_Fm->p_FmDriverParam->firmware.p_Code = NULL; + } + + XX_Free(p_Fm->p_FmDriverParam); + p_Fm->p_FmDriverParam = NULL; + + return E_OK; +} + +/**************************************************************************//** + @Function FM_Free + + @Description Frees all resources that were assigned to FM module. + + Calling this routine invalidates the descriptor. + + @Param[in] h_Fm - FM module descriptor + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error FM_Free(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + + if (p_Fm->guestId != NCSW_MASTER_ID) + { + XX_IpcUnregisterMsgHandler(p_Fm->fmModuleName); + + if(!p_Fm->recoveryMode) + XX_Free(p_Fm->p_FmStateStruct); + + XX_Free(p_Fm); + + return E_OK; + } + + /* disable BMI and QMI */ + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_init, 0); + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_gc, 0); + + /* release BMI resources */ + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_cfg2, 0); + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_cfg1, 0); + + /* disable ECC */ + WRITE_UINT32(p_Fm->p_FmFpmRegs->fmrcr, 0); + + if ((p_Fm->guestId == NCSW_MASTER_ID) && (p_Fm->fmModuleName[0] != 0)) + XX_IpcUnregisterMsgHandler(p_Fm->fmModuleName); + + if (p_Fm->p_FmStateStruct) + { + if (p_Fm->p_FmStateStruct->irq != NO_IRQ) + { + XX_DisableIntr(p_Fm->p_FmStateStruct->irq); + XX_FreeIntr(p_Fm->p_FmStateStruct->irq); + } + if (p_Fm->p_FmStateStruct->errIrq != NO_IRQ) + { + XX_DisableIntr(p_Fm->p_FmStateStruct->errIrq); + XX_FreeIntr(p_Fm->p_FmStateStruct->errIrq); + } + } + + if (p_Fm->h_Spinlock) + XX_FreeSpinlock(p_Fm->h_Spinlock); + + if (p_Fm->p_FmDriverParam) + { + if (p_Fm->p_FmDriverParam->firmware.p_Code) + XX_Free(p_Fm->p_FmDriverParam->firmware.p_Code); + XX_Free(p_Fm->p_FmDriverParam); + p_Fm->p_FmDriverParam = NULL; + } + + FreeInitResources(p_Fm); + + if (!p_Fm->recoveryMode && p_Fm->p_FmStateStruct) + XX_Free(p_Fm->p_FmStateStruct); + + XX_Free(p_Fm); + + return E_OK; +} + +/*************************************************/ +/* API Advanced Init unit functions */ +/*************************************************/ + +t_Error FM_ConfigResetOnInit(t_Handle h_Fm, bool enable) +{ + + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + p_Fm->p_FmDriverParam->resetOnInit = enable; + + return E_OK; +} + + +t_Error FM_ConfigTotalNumOfTasks(t_Handle h_Fm, uint8_t totalNumOfTasks) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + p_Fm->p_FmStateStruct->totalNumOfTasks = totalNumOfTasks; + + return E_OK; +} + +t_Error FM_ConfigTotalFifoSize(t_Handle h_Fm, uint32_t totalFifoSize) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + p_Fm->p_FmStateStruct->totalFifoSize = totalFifoSize; + + return E_OK; +} + +t_Error FM_ConfigMaxNumOfOpenDmas(t_Handle h_Fm, uint8_t maxNumOfOpenDmas) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + p_Fm->p_FmStateStruct->maxNumOfOpenDmas = maxNumOfOpenDmas; + + return E_OK; +} + +t_Error FM_ConfigThresholds(t_Handle h_Fm, t_FmThresholds *p_FmThresholds) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + memcpy(&p_Fm->p_FmDriverParam->thresholds, p_FmThresholds, sizeof(t_FmThresholds)); + + return E_OK; +} + +t_Error FM_ConfigDmaCacheOverride(t_Handle h_Fm, e_FmDmaCacheOverride cacheOverride) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + p_Fm->p_FmDriverParam->dmaCacheOverride = cacheOverride; + + return E_OK; +} + +t_Error FM_ConfigDmaAidOverride(t_Handle h_Fm, bool aidOverride) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + p_Fm->p_FmDriverParam->dmaAidOverride = aidOverride; + + return E_OK; +} + +t_Error FM_ConfigDmaAidMode(t_Handle h_Fm, e_FmDmaAidMode aidMode) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + p_Fm->p_FmDriverParam->dmaAidMode = aidMode; + + return E_OK; +} + +t_Error FM_ConfigDmaAxiDbgNumOfBeats(t_Handle h_Fm, uint8_t axiDbgNumOfBeats) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + p_Fm->p_FmDriverParam->dmaAxiDbgNumOfBeats = axiDbgNumOfBeats; + + return E_OK; +} + +t_Error FM_ConfigDmaCamNumOfEntries(t_Handle h_Fm, uint8_t numOfEntries) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + p_Fm->p_FmDriverParam->dmaCamNumOfEntries = numOfEntries; + + return E_OK; +} + +t_Error FM_ConfigDmaWatchdog(t_Handle h_Fm, uint32_t watchdogValue) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + +#ifdef FM_NO_WATCHDOG + { + t_FmRevisionInfo revInfo; + FM_GetRevision(h_Fm, &revInfo); + if (revInfo.majorRev != 4) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("watchdog!")); + } +#endif /* FM_NO_WATCHDOG */ + + p_Fm->p_FmDriverParam->dmaWatchdog = watchdogValue; + + return E_OK; +} + +t_Error FM_ConfigDmaWriteBufThresholds(t_Handle h_Fm, t_FmDmaThresholds *p_FmDmaThresholds) + +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + memcpy(&p_Fm->p_FmDriverParam->dmaWriteBufThresholds, p_FmDmaThresholds, sizeof(t_FmDmaThresholds)); + + return E_OK; +} + +t_Error FM_ConfigDmaCommQThresholds(t_Handle h_Fm, t_FmDmaThresholds *p_FmDmaThresholds) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + memcpy(&p_Fm->p_FmDriverParam->dmaCommQThresholds, p_FmDmaThresholds, sizeof(t_FmDmaThresholds)); + + return E_OK; +} + +t_Error FM_ConfigDmaReadBufThresholds(t_Handle h_Fm, t_FmDmaThresholds *p_FmDmaThresholds) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + memcpy(&p_Fm->p_FmDriverParam->dmaReadBufThresholds, p_FmDmaThresholds, sizeof(t_FmDmaThresholds)); + + return E_OK; +} + +t_Error FM_ConfigDmaEmergency(t_Handle h_Fm, t_FmDmaEmergency *p_Emergency) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + p_Fm->p_FmDriverParam->dmaEnEmergency = TRUE; + memcpy(&p_Fm->p_FmDriverParam->dmaEmergency, p_Emergency, sizeof(t_FmDmaEmergency)); + + return E_OK; +} + +t_Error FM_ConfigDmaEmergencySmoother(t_Handle h_Fm, uint32_t emergencyCnt) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + if(!p_Fm->p_FmDriverParam->dmaEnEmergency) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("FM_ConfigEnDmaEmergencySmoother may be called only after FM_ConfigEnDmaEmergency")); + + p_Fm->p_FmDriverParam->dmaEnEmergencySmoother = TRUE; + p_Fm->p_FmDriverParam->dmaEmergencySwitchCounter = emergencyCnt; + + return E_OK; +} + +t_Error FM_ConfigDmaDbgCounter(t_Handle h_Fm, e_FmDmaDbgCntMode fmDmaDbgCntMode) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + p_Fm->p_FmDriverParam->dmaDbgCntMode = fmDmaDbgCntMode; + + return E_OK; +} + +t_Error FM_ConfigDmaStopOnBusErr(t_Handle h_Fm, bool stop) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + p_Fm->p_FmDriverParam->dmaStopOnBusError = stop; + + return E_OK; +} + +t_Error FM_ConfigDmaSosEmergencyThreshold(t_Handle h_Fm, uint32_t dmaSosEmergency) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + p_Fm->p_FmDriverParam->dmaSosEmergency = dmaSosEmergency; + + return E_OK; +} + +t_Error FM_ConfigEnableCounters(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + p_Fm->p_FmDriverParam->enCounters = TRUE; + + return E_OK; +} + +t_Error FM_ConfigDmaErr(t_Handle h_Fm, e_FmDmaErr dmaErr) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + p_Fm->p_FmDriverParam->dmaErr = dmaErr; + + return E_OK; +} + +t_Error FM_ConfigCatastrophicErr(t_Handle h_Fm, e_FmCatastrophicErr catastrophicErr) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + p_Fm->p_FmDriverParam->catastrophicErr = catastrophicErr; + + return E_OK; +} + +t_Error FM_ConfigEnableMuramTestMode(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + p_Fm->p_FmDriverParam->enMuramTestMode = TRUE; + + return E_OK; +} + +t_Error FM_ConfigEnableIramTestMode(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + p_Fm->p_FmDriverParam->enIramTestMode = TRUE; + + return E_OK; +} + +t_Error FM_ConfigHaltOnExternalActivation(t_Handle h_Fm, bool enable) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + +#ifdef FM_HALT_SIG_ERRATA_GEN12 + { + t_FmRevisionInfo revInfo; + FM_GetRevision(h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("HaltOnExternalActivation!")); + } +#endif /* FM_HALT_SIG_ERRATA_GEN12 */ + + p_Fm->p_FmDriverParam->haltOnExternalActivation = enable; + + return E_OK; +} + +t_Error FM_ConfigHaltOnUnrecoverableEccError(t_Handle h_Fm, bool enable) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + +#ifdef FM_ECC_HALT_NO_SYNC_ERRATA_10GMAC_A008 + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("HaltOnEccError!")); +#endif /* FM_ECC_HALT_NO_SYNC_ERRATA_10GMAC_A008 */ + + p_Fm->p_FmDriverParam->haltOnUnrecoverableEccError = enable; + + return E_OK; +} + +t_Error FM_ConfigException(t_Handle h_Fm, e_FmExceptions exception, bool enable) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint32_t bitMask = 0; + t_FmRevisionInfo revInfo; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + + FM_GetRevision(p_Fm, &revInfo); +#ifdef FM_BMI_PIPELINE_ERR_IRQ_ERRATA_FMAN9 + if((exception == e_FM_EX_BMI_PIPELINE_ECC) && (enable)) + { + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + { + REPORT_ERROR(MINOR, E_NOT_SUPPORTED, ("e_FM_EX_BMI_PIPELINE_ECC!")); + return E_OK; + } + } +#endif /* FM_BMI_PIPELINE_ERR_IRQ_ERRATA_FMAN9 */ +#ifdef FM_RAM_LIST_ERR_IRQ_ERRATA_FMAN8 + if((exception == e_FM_EX_BMI_LIST_RAM_ECC) && (enable)) + { + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + { + REPORT_ERROR(MINOR, E_NOT_SUPPORTED, ("e_FM_EX_BMI_LIST_RAM_ECC!")); + return E_OK; + } + } +#endif /* FM_RAM_LIST_ERR_IRQ_ERRATA_FMAN8 */ +#ifdef FM_QMI_NO_ECC_EXCEPTIONS + if(((exception == e_FM_EX_QMI_SINGLE_ECC) || (exception == e_FM_EX_QMI_DOUBLE_ECC)) && + enable) + { + if (revInfo.majorRev == 4) + { + REPORT_ERROR(MINOR, E_NOT_SUPPORTED, ("QMI ECC exception!")); + return E_OK; + } + } +#endif /* FM_QMI_NO_ECC_EXCEPTIONS */ +#ifdef FM_NO_DISPATCH_RAM_ECC + if((exception == e_FM_EX_BMI_DISPATCH_RAM_ECC) && (enable)) + { + if (revInfo.majorRev != 4) + { + REPORT_ERROR(MINOR, E_NOT_SUPPORTED, ("e_FM_EX_BMI_DISPATCH_RAM_ECC!")); + return E_OK; + } + } +#endif /* FM_NO_DISPATCH_RAM_ECC */ + + GET_EXCEPTION_FLAG(bitMask, exception); + if(bitMask) + { + if (enable) + p_Fm->p_FmStateStruct->exceptions |= bitMask; + else + p_Fm->p_FmStateStruct->exceptions &= ~bitMask; + } + else + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Undefined exception")); + + return E_OK; +} + +t_Error FM_ConfigExternalEccRamsEnable(t_Handle h_Fm, bool enable) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + + p_Fm->p_FmDriverParam->externalEccRamsEnable = enable; + + return E_OK; +} + +t_Error FM_ConfigTnumAgingPeriod(t_Handle h_Fm, uint16_t tnumAgingPeriod) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; +#ifdef FM_NO_TNUM_AGING + t_FmRevisionInfo revInfo; +#endif /* FM_NO_TNUM_AGING */ + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + +#ifdef FM_NO_TNUM_AGING + FM_GetRevision(h_Fm, &revInfo); + if (revInfo.majorRev != 4) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("FM_ConfigTnumAgingPeriod!")); +#endif /* FM_NO_TNUM_AGING */ + + p_Fm->p_FmDriverParam->tnumAgingPeriod = tnumAgingPeriod; + + return E_OK; + +} + +/****************************************************/ +/* API Run-time Control uint functions */ +/****************************************************/ +t_Handle FM_GetPcdHandle(t_Handle h_Fm) +{ + SANITY_CHECK_RETURN_VALUE(h_Fm, E_INVALID_HANDLE, NULL); + SANITY_CHECK_RETURN_VALUE(!((t_Fm*)h_Fm)->p_FmDriverParam, E_INVALID_STATE, NULL); + + return ((t_Fm*)h_Fm)->h_Pcd; +} + +void FM_EventIsr(t_Handle h_Fm) +{ +#define FM_M_CALL_1G_MAC_TMR_ISR(_id) \ + { \ + if (p_Fm->guestId != p_Fm->intrMng[(e_FmInterModuleEvent)(e_FM_EV_1G_MAC0_TMR+_id)].guestId) \ + SendIpcIsr(p_Fm, (e_FmInterModuleEvent)(e_FM_EV_1G_MAC0_TMR+_id), pending); \ + else \ + p_Fm->intrMng[(e_FmInterModuleEvent)(e_FM_EV_1G_MAC0_TMR+_id)].f_Isr(p_Fm->intrMng[(e_FmInterModuleEvent)(e_FM_EV_1G_MAC0_TMR+_id)].h_SrcHandle);\ + } + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint32_t pending, event; + + SANITY_CHECK_RETURN(h_Fm, E_INVALID_HANDLE); + + /* normal interrupts */ + pending = GET_UINT32(p_Fm->p_FmFpmRegs->fmnpi); + ASSERT_COND(pending); + if (pending & INTR_EN_BMI) + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("BMI Event - undefined!")); + if (pending & INTR_EN_QMI) + QmiEvent(p_Fm); + if (pending & INTR_EN_PRS) + p_Fm->intrMng[e_FM_EV_PRS].f_Isr(p_Fm->intrMng[e_FM_EV_PRS].h_SrcHandle); + if (pending & INTR_EN_PLCR) + p_Fm->intrMng[e_FM_EV_PLCR].f_Isr(p_Fm->intrMng[e_FM_EV_PLCR].h_SrcHandle); + if (pending & INTR_EN_KG) + p_Fm->intrMng[e_FM_EV_KG].f_Isr(p_Fm->intrMng[e_FM_EV_KG].h_SrcHandle); + if (pending & INTR_EN_TMR) + p_Fm->intrMng[e_FM_EV_TMR].f_Isr(p_Fm->intrMng[e_FM_EV_TMR].h_SrcHandle); + + /* MAC events may belong to different partitions */ + if (pending & INTR_EN_1G_MAC0_TMR) + FM_M_CALL_1G_MAC_TMR_ISR(0); + if (pending & INTR_EN_1G_MAC1_TMR) + FM_M_CALL_1G_MAC_TMR_ISR(1); + if (pending & INTR_EN_1G_MAC2_TMR) + FM_M_CALL_1G_MAC_TMR_ISR(2); + if (pending & INTR_EN_1G_MAC3_TMR) + FM_M_CALL_1G_MAC_TMR_ISR(3); + if (pending & INTR_EN_1G_MAC4_TMR) + FM_M_CALL_1G_MAC_TMR_ISR(4); + + /* IM port events may belong to different partitions */ + if (pending & INTR_EN_REV0) + { + event = GET_UINT32(p_Fm->p_FmFpmRegs->fmfpfcev[0]) & GET_UINT32(p_Fm->p_FmFpmRegs->fmfpfcee[0]); + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmcev[0], event); + if (p_Fm->guestId != p_Fm->intrMng[e_FM_EV_FMAN_CTRL_0].guestId) + /*TODO IPC ISR For Fman Ctrl */ + ASSERT_COND(0); + /* SendIpcIsr(p_Fm, e_FM_EV_FMAN_CTRL_0, pending); */ + else + p_Fm->fmanCtrlIntr[0].f_Isr(p_Fm->fmanCtrlIntr[0].h_SrcHandle, event); + + } + if (pending & INTR_EN_REV1) + { + event = GET_UINT32(p_Fm->p_FmFpmRegs->fmfpfcev[1]) & GET_UINT32(p_Fm->p_FmFpmRegs->fmfpfcee[1]); + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmcev[1], event); + if (p_Fm->guestId != p_Fm->intrMng[e_FM_EV_FMAN_CTRL_1].guestId) + /*TODO IPC ISR For Fman Ctrl */ + ASSERT_COND(0); + /* SendIpcIsr(p_Fm, e_FM_EV_FMAN_CTRL_1, pending); */ + else + p_Fm->fmanCtrlIntr[1].f_Isr(p_Fm->fmanCtrlIntr[1].h_SrcHandle, event); + + } + if (pending & INTR_EN_REV2) + { + event = GET_UINT32(p_Fm->p_FmFpmRegs->fmfpfcev[2]) & GET_UINT32(p_Fm->p_FmFpmRegs->fmfpfcee[2]); + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmcev[2], event); + if (p_Fm->guestId != p_Fm->intrMng[e_FM_EV_FMAN_CTRL_2].guestId) + /*TODO IPC ISR For Fman Ctrl */ + ASSERT_COND(0); + /* SendIpcIsr(p_Fm, e_FM_EV_FMAN_CTRL_2, pending); */ + else + p_Fm->fmanCtrlIntr[2].f_Isr(p_Fm->fmanCtrlIntr[2].h_SrcHandle, event); + } + if (pending & INTR_EN_REV3) + { + event = GET_UINT32(p_Fm->p_FmFpmRegs->fmfpfcev[3]) & GET_UINT32(p_Fm->p_FmFpmRegs->fmfpfcee[3]); + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmcev[3], event); + if (p_Fm->guestId != p_Fm->intrMng[e_FM_EV_FMAN_CTRL_3].guestId) + /*TODO IPC ISR For Fman Ctrl */ + ASSERT_COND(0); + /* SendIpcIsr(p_Fm, e_FM_EV_FMAN_CTRL_2, pendin3); */ + else + p_Fm->fmanCtrlIntr[3].f_Isr(p_Fm->fmanCtrlIntr[3].h_SrcHandle, event); + } +} + +t_Error FM_ErrorIsr(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(h_Fm, E_INVALID_HANDLE); + + /* error interrupts */ + if (GET_UINT32(p_Fm->p_FmFpmRegs->fmepi) == 0) + return ERROR_CODE(E_EMPTY); + + ErrorIsrCB(p_Fm); + return E_OK; +} + +t_Error FM_SetPortsBandwidth(t_Handle h_Fm, t_FmPortsBandwidthParams *p_PortsBandwidth) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + int i; + uint8_t sum; + uint8_t hardwarePortId; + uint32_t tmpRegs[8] = {0,0,0,0,0,0,0,0}; + uint8_t relativePortId, shift, weight, maxPercent = 0; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Fm->p_FmDriverParam, E_INVALID_STATE); + + /* check that all ports add up to 100% */ + sum = 0; + for (i=0;inumOfPorts;i++) + sum +=p_PortsBandwidth->portsBandwidths[i].bandwidth; + if (sum != 100) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Sum of ports bandwidth differ from 100%")); + + /* find highest precent */ + for (i=0;inumOfPorts;i++) + { + if (p_PortsBandwidth->portsBandwidths[i].bandwidth > maxPercent) + maxPercent = p_PortsBandwidth->portsBandwidths[i].bandwidth; + } + + /* calculate weight for each port */ + for (i=0;inumOfPorts;i++) + { + weight = (uint8_t)((p_PortsBandwidth->portsBandwidths[i].bandwidth * PORT_MAX_WEIGHT )/maxPercent); + /* we want even division between 1-to-PORT_MAX_WEIGHT. so if exect division + is not reached, we round up so that: + 0 until maxPercent/PORT_MAX_WEIGHT get "1" + maxPercent/PORT_MAX_WEIGHT+1 until (maxPercent/PORT_MAX_WEIGHT)*2 get "2" + ... + maxPercent - maxPercent/PORT_MAX_WEIGHT until maxPercent get "PORT_MAX_WEIGHT: */ + if ((uint8_t)((p_PortsBandwidth->portsBandwidths[i].bandwidth * PORT_MAX_WEIGHT ) % maxPercent)) + weight++; + + /* find the location of this port within the register */ + SW_PORT_ID_TO_HW_PORT_ID(hardwarePortId, + p_PortsBandwidth->portsBandwidths[i].type, + p_PortsBandwidth->portsBandwidths[i].relativePortId); + relativePortId = (uint8_t)(hardwarePortId % 8); + shift = (uint8_t)(32-4*(relativePortId+1)); + + + if(weight > 1) + /* Add this port to tmpReg */ + /* (each 8 ports result in one register)*/ + tmpRegs[hardwarePortId/8] |= ((weight-1) << shift); + } + + for(i=0;i<8;i++) + if(tmpRegs[i]) + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_arb[i], tmpRegs[i]); + + return E_OK; +} + +t_Error FM_EnableRamsEcc(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint32_t tmpReg; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + t_FmIpcMsg msg; + t_Error err; + + memset(&msg, 0, sizeof(msg)); + msg.msgId = FM_ENABLE_RAM_ECC; + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId), + NULL, + NULL, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + return E_OK; + } + + if(!p_Fm->p_FmStateStruct->internalCall) + p_Fm->p_FmStateStruct->explicitEnable = TRUE; + p_Fm->p_FmStateStruct->internalCall = FALSE; + + if(p_Fm->p_FmStateStruct->ramsEccEnable) + return E_OK; + else + { + tmpReg = GET_UINT32(p_Fm->p_FmFpmRegs->fmrcr); + if(tmpReg & FPM_RAM_CTL_RAMS_ECC_EN_SRC_SEL) + { + DBG(WARNING, ("Rams ECC is configured to be controlled through JTAG")); + WRITE_UINT32(p_Fm->p_FmFpmRegs->fmrcr, tmpReg | FPM_RAM_CTL_IRAM_ECC_EN); + } + else + WRITE_UINT32(p_Fm->p_FmFpmRegs->fmrcr, tmpReg | (FPM_RAM_CTL_RAMS_ECC_EN | FPM_RAM_CTL_IRAM_ECC_EN)); + p_Fm->p_FmStateStruct->ramsEccEnable = TRUE; + } + + return E_OK; +} + +t_Error FM_DisableRamsEcc(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint32_t tmpReg; + bool explicitDisable = FALSE; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + t_Error err; + t_FmIpcMsg msg; + + memset(&msg, 0, sizeof(msg)); + msg.msgId = FM_DISABLE_RAM_ECC; + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId), + NULL, + NULL, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + return E_OK; + } + + if(!p_Fm->p_FmStateStruct->internalCall) + explicitDisable = TRUE; + p_Fm->p_FmStateStruct->internalCall = FALSE; + + /* if rams are already disabled, or if rams were explicitly enabled and are + currently called indirectly (not explicitly), ignore this call. */ + if(!p_Fm->p_FmStateStruct->ramsEccEnable || (p_Fm->p_FmStateStruct->explicitEnable && !explicitDisable)) + return E_OK; + else + { + if(p_Fm->p_FmStateStruct->explicitEnable) + /* This is the case were both explicit are TRUE. + Turn off this flag for cases were following ramsEnable + routines are called */ + p_Fm->p_FmStateStruct->explicitEnable = FALSE; + + tmpReg = GET_UINT32(p_Fm->p_FmFpmRegs->fmrcr); + if(tmpReg & FPM_RAM_CTL_RAMS_ECC_EN_SRC_SEL) + { + DBG(WARNING, ("Rams ECC is configured to be controlled through JTAG")); + WRITE_UINT32(p_Fm->p_FmFpmRegs->fmrcr, tmpReg & ~FPM_RAM_CTL_IRAM_ECC_EN); + } + else + WRITE_UINT32(p_Fm->p_FmFpmRegs->fmrcr, tmpReg & ~(FPM_RAM_CTL_RAMS_ECC_EN | FPM_RAM_CTL_IRAM_ECC_EN)); + p_Fm->p_FmStateStruct->ramsEccEnable = FALSE; + } + + return E_OK; +} + +t_Error FM_SetException(t_Handle h_Fm, e_FmExceptions exception, bool enable) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint32_t bitMask = 0; + uint32_t tmpReg; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Fm->p_FmDriverParam, E_INVALID_STATE); + + GET_EXCEPTION_FLAG(bitMask, exception); + if(bitMask) + { + if (enable) + p_Fm->p_FmStateStruct->exceptions |= bitMask; + else + p_Fm->p_FmStateStruct->exceptions &= ~bitMask; + + switch(exception) + { + case(e_FM_EX_DMA_BUS_ERROR): + tmpReg = GET_UINT32(p_Fm->p_FmDmaRegs->fmdmmr); + if(enable) + tmpReg |= DMA_MODE_BER; + else + tmpReg &= ~DMA_MODE_BER; + /* disable bus error */ + WRITE_UINT32(p_Fm->p_FmDmaRegs->fmdmmr, tmpReg); + break; + case(e_FM_EX_DMA_READ_ECC): + case(e_FM_EX_DMA_SYSTEM_WRITE_ECC): + case(e_FM_EX_DMA_FM_WRITE_ECC): + tmpReg = GET_UINT32(p_Fm->p_FmDmaRegs->fmdmmr); + if(enable) + tmpReg |= DMA_MODE_ECC; + else + tmpReg &= ~DMA_MODE_ECC; + WRITE_UINT32(p_Fm->p_FmDmaRegs->fmdmmr, tmpReg); + break; + case(e_FM_EX_FPM_STALL_ON_TASKS): + tmpReg = GET_UINT32(p_Fm->p_FmFpmRegs->fpmem); + if(enable) + tmpReg |= FPM_EV_MASK_STALL_EN; + else + tmpReg &= ~FPM_EV_MASK_STALL_EN; + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmem, tmpReg); + break; + case(e_FM_EX_FPM_SINGLE_ECC): + tmpReg = GET_UINT32(p_Fm->p_FmFpmRegs->fpmem); + if(enable) + tmpReg |= FPM_EV_MASK_SINGLE_ECC_EN; + else + tmpReg &= ~FPM_EV_MASK_SINGLE_ECC_EN; + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmem, tmpReg); + break; + case( e_FM_EX_FPM_DOUBLE_ECC): + tmpReg = GET_UINT32(p_Fm->p_FmFpmRegs->fpmem); + if(enable) + tmpReg |= FPM_EV_MASK_DOUBLE_ECC_EN; + else + tmpReg &= ~FPM_EV_MASK_DOUBLE_ECC_EN; + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmem, tmpReg); + break; + case( e_FM_EX_QMI_SINGLE_ECC): + tmpReg = GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_ien); + if(enable) + { +#ifdef FM_QMI_NO_ECC_EXCEPTIONS + t_FmRevisionInfo revInfo; + FM_GetRevision(p_Fm, &revInfo); + if (revInfo.majorRev == 4) + { + REPORT_ERROR(MINOR, E_NOT_SUPPORTED, ("e_FM_EX_QMI_SINGLE_ECC")); + return E_OK; + } +#endif /* FM_QMI_NO_ECC_EXCEPTIONS */ + tmpReg |= QMI_INTR_EN_SINGLE_ECC; + } + else + tmpReg &= ~QMI_INTR_EN_SINGLE_ECC; + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_ien, tmpReg); + break; + case(e_FM_EX_QMI_DOUBLE_ECC): + tmpReg = GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_eien); + if(enable) + { +#ifdef FM_QMI_NO_ECC_EXCEPTIONS + t_FmRevisionInfo revInfo; + FM_GetRevision(p_Fm, &revInfo); + if (revInfo.majorRev == 4) + { + REPORT_ERROR(MINOR, E_NOT_SUPPORTED, ("e_FM_EX_QMI_DOUBLE_ECC")); + return E_OK; + } +#endif /* FM_QMI_NO_ECC_EXCEPTIONS */ + tmpReg |= QMI_ERR_INTR_EN_DOUBLE_ECC; + } + else + tmpReg &= ~QMI_ERR_INTR_EN_DOUBLE_ECC; + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_eien, tmpReg); + break; + case(e_FM_EX_QMI_DEQ_FROM_UNKNOWN_PORTID): + tmpReg = GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_eien); + if(enable) + tmpReg |= QMI_ERR_INTR_EN_DEQ_FROM_DEF; + else + tmpReg &= ~QMI_ERR_INTR_EN_DEQ_FROM_DEF; + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_eien, tmpReg); + break; + case(e_FM_EX_BMI_LIST_RAM_ECC): + tmpReg = GET_UINT32(p_Fm->p_FmBmiRegs->fmbm_ier); + if(enable) + { +#ifdef FM_RAM_LIST_ERR_IRQ_ERRATA_FMAN8 + t_FmRevisionInfo revInfo; + FM_GetRevision(p_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + { + REPORT_ERROR(MINOR, E_NOT_SUPPORTED, ("e_FM_EX_BMI_LIST_RAM_ECC")); + return E_OK; + } +#endif /* FM_RAM_LIST_ERR_IRQ_ERRATA_FMAN8 */ + tmpReg |= BMI_ERR_INTR_EN_LIST_RAM_ECC; + } + else + tmpReg &= ~BMI_ERR_INTR_EN_LIST_RAM_ECC; + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_ier, tmpReg); + break; + case(e_FM_EX_BMI_PIPELINE_ECC): + tmpReg = GET_UINT32(p_Fm->p_FmBmiRegs->fmbm_ier); + if(enable) + { +#ifdef FM_BMI_PIPELINE_ERR_IRQ_ERRATA_FMAN9 + t_FmRevisionInfo revInfo; + FM_GetRevision(p_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + { + REPORT_ERROR(MINOR, E_NOT_SUPPORTED, ("e_FM_EX_BMI_PIPELINE_ECCBMI_LIST_RAM_ECC")); + return E_OK; + } +#endif /* FM_BMI_PIPELINE_ERR_IRQ_ERRATA_FMAN9 */ + tmpReg |= BMI_ERR_INTR_EN_PIPELINE_ECC; + } + else + tmpReg &= ~BMI_ERR_INTR_EN_PIPELINE_ECC; + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_ier, tmpReg); + break; + case(e_FM_EX_BMI_STATISTICS_RAM_ECC): + tmpReg = GET_UINT32(p_Fm->p_FmBmiRegs->fmbm_ier); + if(enable) + tmpReg |= BMI_ERR_INTR_EN_STATISTICS_RAM_ECC; + else + tmpReg &= ~BMI_ERR_INTR_EN_STATISTICS_RAM_ECC; + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_ier, tmpReg); + break; + case(e_FM_EX_BMI_DISPATCH_RAM_ECC): + tmpReg = GET_UINT32(p_Fm->p_FmBmiRegs->fmbm_ier); + if(enable) + { +#ifdef FM_NO_DISPATCH_RAM_ECC + t_FmRevisionInfo revInfo; + FM_GetRevision(p_Fm, &revInfo); + if (revInfo.majorRev != 4) + { + REPORT_ERROR(MINOR, E_NOT_SUPPORTED, ("e_FM_EX_BMI_DISPATCH_RAM_ECC")); + return E_OK; + } +#endif /* FM_NO_DISPATCH_RAM_ECC */ + tmpReg |= BMI_ERR_INTR_EN_DISPATCH_RAM_ECC; + } + else + tmpReg &= ~BMI_ERR_INTR_EN_DISPATCH_RAM_ECC; + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_ier, tmpReg); + break; + case(e_FM_EX_IRAM_ECC): + tmpReg = GET_UINT32(p_Fm->p_FmFpmRegs->fmrie); + if(enable) + { + /* enable ECC if not enabled */ + FmEnableRamsEcc(p_Fm); + /* enable ECC interrupts */ + tmpReg |= FPM_IRAM_ECC_ERR_EX_EN; + } + else + { + /* ECC mechanism may be disabled, depending on driver status */ + FmDisableRamsEcc(p_Fm); + tmpReg &= ~FPM_IRAM_ECC_ERR_EX_EN; + } + WRITE_UINT32(p_Fm->p_FmFpmRegs->fmrie, tmpReg); + break; + + case(e_FM_EX_MURAM_ECC): + tmpReg = GET_UINT32(p_Fm->p_FmFpmRegs->fmrie); + if(enable) + { + /* enable ECC if not enabled */ + FmEnableRamsEcc(p_Fm); + /* enable ECC interrupts */ + tmpReg |= FPM_MURAM_ECC_ERR_EX_EN; + } + else + { + /* ECC mechanism may be disabled, depending on driver status */ + FmDisableRamsEcc(p_Fm); + tmpReg &= ~FPM_MURAM_ECC_ERR_EX_EN; + } + + WRITE_UINT32(p_Fm->p_FmFpmRegs->fmrie, tmpReg); + break; + default: + RETURN_ERROR(MINOR, E_INVALID_SELECTION, NO_MSG); + } + } + else + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Undefined exception")); + + return E_OK; +} + +t_Error FM_GetRevision(t_Handle h_Fm, t_FmRevisionInfo *p_FmRevisionInfo) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint32_t tmpReg; + t_Error err; + t_FmIpcMsg msg; + t_FmIpcReply reply; + uint32_t replyLength; + t_FmIpcRevisionInfo ipcRevInfo; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + + if (p_Fm->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + msg.msgId = FM_GET_REV; + replyLength = sizeof(uint32_t) + sizeof(t_FmRevisionInfo); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + if (replyLength != (sizeof(uint32_t) + sizeof(t_FmRevisionInfo))) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + memcpy((uint8_t*)&ipcRevInfo, reply.replyBody, sizeof(t_FmRevisionInfo)); + p_FmRevisionInfo->majorRev = ipcRevInfo.majorRev; + p_FmRevisionInfo->minorRev = ipcRevInfo.minorRev; + return (t_Error)(reply.error); + } + + /* read revision register 1 */ + tmpReg = GET_UINT32(p_Fm->p_FmFpmRegs->fm_ip_rev_1); + p_FmRevisionInfo->majorRev = (uint8_t)((tmpReg & FPM_REV1_MAJOR_MASK) >> FPM_REV1_MAJOR_SHIFT); + p_FmRevisionInfo->minorRev = (uint8_t)((tmpReg & FPM_REV1_MINOR_MASK) >> FPM_REV1_MINOR_SHIFT); + + return E_OK; +} + +uint32_t FM_GetCounter(t_Handle h_Fm, e_FmCounters counter) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + t_Error err; + uint32_t counterValue; + t_FmIpcMsg msg; + t_FmIpcReply reply; + uint32_t replyLength, outCounter; + + SANITY_CHECK_RETURN_VALUE(p_Fm, E_INVALID_HANDLE, 0); + SANITY_CHECK_RETURN_VALUE(!p_Fm->p_FmDriverParam, E_INVALID_STATE, 0); + + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + msg.msgId = FM_GET_COUNTER; + memcpy(msg.msgBody, (uint8_t *)&counter, sizeof(uint32_t)); + replyLength = sizeof(uint32_t) + sizeof(uint32_t); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId) +sizeof(counterValue), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + if(replyLength != (sizeof(uint32_t) + sizeof(uint32_t))) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + memcpy((uint8_t*)&outCounter, reply.replyBody, sizeof(uint32_t)); + + return outCounter; + } + + switch(counter) + { + case(e_FM_COUNTERS_ENQ_TOTAL_FRAME): + return GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_etfc); + case(e_FM_COUNTERS_DEQ_TOTAL_FRAME): + return GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_dtfc); + case(e_FM_COUNTERS_DEQ_0): + return GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_dc0); + case(e_FM_COUNTERS_DEQ_1): + return GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_dc1); + case(e_FM_COUNTERS_DEQ_2): + return GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_dc2); + case(e_FM_COUNTERS_DEQ_3): + return GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_dc3); + case(e_FM_COUNTERS_DEQ_FROM_DEFAULT): + return GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_dfdc); + case(e_FM_COUNTERS_DEQ_FROM_CONTEXT): + return GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_dfcc); + case(e_FM_COUNTERS_DEQ_FROM_FD): + return GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_dffc); + case(e_FM_COUNTERS_DEQ_CONFIRM): + return GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_dcc); + case(e_FM_COUNTERS_SEMAPHOR_ENTRY_FULL_REJECT): + return GET_UINT32(p_Fm->p_FmDmaRegs->fmdmsefrc); + case(e_FM_COUNTERS_SEMAPHOR_QUEUE_FULL_REJECT): + return GET_UINT32(p_Fm->p_FmDmaRegs->fmdmsqfrc); + case(e_FM_COUNTERS_SEMAPHOR_SYNC_REJECT): + return GET_UINT32(p_Fm->p_FmDmaRegs->fmdmssrc); + default: + break; + } + /* should never get here */ + ASSERT_COND(FALSE); + + return 0; +} + +t_Error FM_ModifyCounter(t_Handle h_Fm, e_FmCounters counter, uint32_t val) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Fm->p_FmDriverParam, E_INVALID_STATE); + + /* When applicable (when there is an 'enable counters' bit, + check that counters are enabled */ + switch(counter) + { + case(e_FM_COUNTERS_ENQ_TOTAL_FRAME): + case(e_FM_COUNTERS_DEQ_TOTAL_FRAME): + case(e_FM_COUNTERS_DEQ_0): + case(e_FM_COUNTERS_DEQ_1): + case(e_FM_COUNTERS_DEQ_2): + case(e_FM_COUNTERS_DEQ_3): + case(e_FM_COUNTERS_DEQ_FROM_DEFAULT): + case(e_FM_COUNTERS_DEQ_FROM_CONTEXT): + case(e_FM_COUNTERS_DEQ_FROM_FD): + case(e_FM_COUNTERS_DEQ_CONFIRM): + if(!(GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_gc) & QMI_CFG_EN_COUNTERS)) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Requested counter was not enabled")); + break; + default: + break; + } + + /* Set counter */ + switch(counter) + { + case(e_FM_COUNTERS_ENQ_TOTAL_FRAME): + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_etfc, val); + break; + case(e_FM_COUNTERS_DEQ_TOTAL_FRAME): + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_dtfc, val); + break; + case(e_FM_COUNTERS_DEQ_0): + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_dc0, val); + break; + case(e_FM_COUNTERS_DEQ_1): + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_dc1, val); + break; + case(e_FM_COUNTERS_DEQ_2): + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_dc2, val); + break; + case(e_FM_COUNTERS_DEQ_3): + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_dc3, val); + break; + case(e_FM_COUNTERS_DEQ_FROM_DEFAULT): + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_dfdc, val); + break; + case(e_FM_COUNTERS_DEQ_FROM_CONTEXT): + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_dfcc, val); + break; + case(e_FM_COUNTERS_DEQ_FROM_FD): + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_dffc, val); + break; + case(e_FM_COUNTERS_DEQ_CONFIRM): + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_dcc, val); + break; + case(e_FM_COUNTERS_SEMAPHOR_ENTRY_FULL_REJECT): + WRITE_UINT32(p_Fm->p_FmDmaRegs->fmdmsefrc, val); + break; + case(e_FM_COUNTERS_SEMAPHOR_QUEUE_FULL_REJECT): + WRITE_UINT32(p_Fm->p_FmDmaRegs->fmdmsqfrc, val); + break; + case(e_FM_COUNTERS_SEMAPHOR_SYNC_REJECT): + WRITE_UINT32(p_Fm->p_FmDmaRegs->fmdmssrc, val); + break; + default: + break; + } + + return E_OK; +} + +void FM_SetDmaEmergency(t_Handle h_Fm, e_FmDmaMuramPort muramPort, bool enable) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint32_t bitMask; + + SANITY_CHECK_RETURN(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN(!p_Fm->p_FmDriverParam, E_INVALID_STATE); + + bitMask = (uint32_t)((muramPort==e_FM_DMA_MURAM_PORT_WRITE) ? DMA_MODE_EMERGENCY_WRITE : DMA_MODE_EMERGENCY_READ); + + if(enable) + WRITE_UINT32(p_Fm->p_FmDmaRegs->fmdmmr, GET_UINT32(p_Fm->p_FmDmaRegs->fmdmmr) | bitMask); + else /* disable */ + WRITE_UINT32(p_Fm->p_FmDmaRegs->fmdmmr, GET_UINT32(p_Fm->p_FmDmaRegs->fmdmmr) & ~bitMask); + + return; +} + +void FM_SetDmaExtBusPri(t_Handle h_Fm, e_FmDmaExtBusPri pri) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN(!p_Fm->p_FmDriverParam, E_INVALID_STATE); + + WRITE_UINT32(p_Fm->p_FmDmaRegs->fmdmmr, GET_UINT32(p_Fm->p_FmDmaRegs->fmdmmr) | ((uint32_t)pri << DMA_MODE_BUS_PRI_SHIFT) ); + + return; +} + +void FM_GetDmaStatus(t_Handle h_Fm, t_FmDmaStatus *p_FmDmaStatus) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint32_t tmpReg; + t_Error err; + t_FmIpcMsg msg; + t_FmIpcReply reply; + uint32_t replyLength; + t_FmIpcDmaStatus ipcDmaStatus; + + SANITY_CHECK_RETURN(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN(!p_Fm->p_FmDriverParam, E_INVALID_STATE); + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + msg.msgId = FM_DMA_STAT; + replyLength = sizeof(uint32_t) + sizeof(t_FmIpcDmaStatus); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + { + REPORT_ERROR(MINOR, err, NO_MSG); + return; + } + if (replyLength != (sizeof(uint32_t) + sizeof(t_FmIpcDmaStatus))) + { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + return; + } + memcpy((uint8_t*)&ipcDmaStatus, reply.replyBody, sizeof(t_FmIpcDmaStatus)); + + p_FmDmaStatus->cmqNotEmpty = (bool)ipcDmaStatus.boolCmqNotEmpty; /**< Command queue is not empty */ + p_FmDmaStatus->busError = (bool)ipcDmaStatus.boolBusError; /**< Bus error occurred */ + p_FmDmaStatus->readBufEccError = (bool)ipcDmaStatus.boolReadBufEccError; /**< Double ECC error on buffer Read */ + p_FmDmaStatus->writeBufEccSysError =(bool)ipcDmaStatus.boolWriteBufEccSysError; /**< Double ECC error on buffer write from system side */ + p_FmDmaStatus->writeBufEccFmError = (bool)ipcDmaStatus.boolWriteBufEccFmError; /**< Double ECC error on buffer write from FM side */ + return; + } + + tmpReg = GET_UINT32(p_Fm->p_FmDmaRegs->fmdmsr); + + p_FmDmaStatus->cmqNotEmpty = (bool)(tmpReg & DMA_STATUS_CMD_QUEUE_NOT_EMPTY); + p_FmDmaStatus->busError = (bool)(tmpReg & DMA_STATUS_BUS_ERR); + p_FmDmaStatus->readBufEccError = (bool)(tmpReg & DMA_STATUS_READ_ECC); + p_FmDmaStatus->writeBufEccSysError = (bool)(tmpReg & DMA_STATUS_SYSTEM_WRITE_ECC); + p_FmDmaStatus->writeBufEccFmError = (bool)(tmpReg & DMA_STATUS_FM_WRITE_ECC); + return; +} + +t_Error FM_ForceIntr (t_Handle h_Fm, e_FmExceptions exception) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Fm->p_FmDriverParam, E_INVALID_STATE); + + switch(exception) + { + case e_FM_EX_QMI_DEQ_FROM_UNKNOWN_PORTID: + if (!(p_Fm->p_FmStateStruct->exceptions & FM_EX_QMI_DEQ_FROM_UNKNOWN_PORTID)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("The selected exception is masked")); + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_eif, QMI_ERR_INTR_EN_DEQ_FROM_DEF); + break; + case e_FM_EX_QMI_SINGLE_ECC: + if (!(p_Fm->p_FmStateStruct->exceptions & FM_EX_QMI_SINGLE_ECC)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("The selected exception is masked")); + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_if, QMI_INTR_EN_SINGLE_ECC); + break; + case e_FM_EX_QMI_DOUBLE_ECC: + if (!(p_Fm->p_FmStateStruct->exceptions & FM_EX_QMI_DOUBLE_ECC)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("The selected exception is masked")); + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_eif, QMI_ERR_INTR_EN_DOUBLE_ECC); + break; + case e_FM_EX_BMI_LIST_RAM_ECC: + if (!(p_Fm->p_FmStateStruct->exceptions & FM_EX_BMI_LIST_RAM_ECC)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("The selected exception is masked")); + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_ifr, BMI_ERR_INTR_EN_LIST_RAM_ECC); + break; + case e_FM_EX_BMI_PIPELINE_ECC: + if (!(p_Fm->p_FmStateStruct->exceptions & FM_EX_BMI_PIPELINE_ECC)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("The selected exception is masked")); + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_ifr, BMI_ERR_INTR_EN_PIPELINE_ECC); + break; + case e_FM_EX_BMI_STATISTICS_RAM_ECC: + if (!(p_Fm->p_FmStateStruct->exceptions & FM_EX_BMI_STATISTICS_RAM_ECC)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("The selected exception is masked")); + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_ifr, BMI_ERR_INTR_EN_STATISTICS_RAM_ECC); + break; + case e_FM_EX_BMI_DISPATCH_RAM_ECC: + if (!(p_Fm->p_FmStateStruct->exceptions & FM_EX_BMI_DISPATCH_RAM_ECC)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("The selected exception is masked")); + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_ifr, BMI_ERR_INTR_EN_DISPATCH_RAM_ECC); + break; + default: + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("The selected exception may not be forced")); + } + + return E_OK; +} + +void FM_Resume(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint32_t tmpReg; + + SANITY_CHECK_RETURN(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN(!p_Fm->p_FmDriverParam, E_INVALID_STATE); + + if (p_Fm->guestId == NCSW_MASTER_ID) + { + tmpReg = GET_UINT32(p_Fm->p_FmFpmRegs->fpmem); + /* clear tmpReg event bits in order not to clear standing events */ + tmpReg &= ~(FPM_EV_MASK_DOUBLE_ECC | FPM_EV_MASK_STALL | FPM_EV_MASK_SINGLE_ECC); + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmem, tmpReg | FPM_EV_MASK_RELEASE_FM); + } + else + ASSERT_COND(0); /* TODO */ +} + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) +t_Error FM_DumpRegs(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm *)h_Fm; + uint8_t i = 0; + t_Error err; + t_FmIpcMsg msg; + + DECLARE_DUMP; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Fm->p_FmDriverParam, E_INVALID_STATE); + + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + msg.msgId = FM_DUMP_REGS; + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId), + NULL, + NULL, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + return E_OK; + } + + + DUMP_SUBTITLE(("\n")); + + DUMP_TITLE(p_Fm->p_FmFpmRegs, ("FmFpmRegs Regs")); + + DUMP_VAR(p_Fm->p_FmFpmRegs,fpmtnc); + DUMP_VAR(p_Fm->p_FmFpmRegs,fpmpr); + DUMP_VAR(p_Fm->p_FmFpmRegs,brkc); + DUMP_VAR(p_Fm->p_FmFpmRegs,fpmflc); + DUMP_VAR(p_Fm->p_FmFpmRegs,fpmdis1); + DUMP_VAR(p_Fm->p_FmFpmRegs,fpmdis2); + DUMP_VAR(p_Fm->p_FmFpmRegs,fmepi); + DUMP_VAR(p_Fm->p_FmFpmRegs,fmrie); + + DUMP_TITLE(&p_Fm->p_FmFpmRegs->fmfpfcev, ("fmfpfcev")); + DUMP_SUBSTRUCT_ARRAY(i, 4) + { + DUMP_MEMORY(&p_Fm->p_FmFpmRegs->fmfpfcev[i], sizeof(uint32_t)); + } + + DUMP_TITLE(&p_Fm->p_FmFpmRegs->fmfpfcee, ("fmfpfcee")); + DUMP_SUBSTRUCT_ARRAY(i, 4) + { + DUMP_MEMORY(&p_Fm->p_FmFpmRegs->fmfpfcee[i], sizeof(uint32_t)); + } + + DUMP_SUBTITLE(("\n")); + DUMP_VAR(p_Fm->p_FmFpmRegs,fpmtsc1); + DUMP_VAR(p_Fm->p_FmFpmRegs,fpmtsc2); + DUMP_VAR(p_Fm->p_FmFpmRegs,fpmtsp); + DUMP_VAR(p_Fm->p_FmFpmRegs,fpmtsf); + DUMP_VAR(p_Fm->p_FmFpmRegs,fmrcr); + DUMP_VAR(p_Fm->p_FmFpmRegs,fpmextc); + DUMP_VAR(p_Fm->p_FmFpmRegs,fpmext1); + DUMP_VAR(p_Fm->p_FmFpmRegs,fpmext2); + + DUMP_TITLE(&p_Fm->p_FmFpmRegs->fpmdrd, ("fpmdrd")); + DUMP_SUBSTRUCT_ARRAY(i, 16) + { + DUMP_MEMORY(&p_Fm->p_FmFpmRegs->fpmdrd[i], sizeof(uint32_t)); + } + + DUMP_SUBTITLE(("\n")); + DUMP_VAR(p_Fm->p_FmFpmRegs,fpmdra); + DUMP_VAR(p_Fm->p_FmFpmRegs,fm_ip_rev_1); + DUMP_VAR(p_Fm->p_FmFpmRegs,fm_ip_rev_2); + DUMP_VAR(p_Fm->p_FmFpmRegs,fmrstc); + DUMP_VAR(p_Fm->p_FmFpmRegs,fmcld); + DUMP_VAR(p_Fm->p_FmFpmRegs,fmnpi); + DUMP_VAR(p_Fm->p_FmFpmRegs,fpmem); + + DUMP_TITLE(&p_Fm->p_FmFpmRegs->fpmcev, ("fpmcev")); + DUMP_SUBSTRUCT_ARRAY(i, 4) + { + DUMP_MEMORY(&p_Fm->p_FmFpmRegs->fpmcev[i], sizeof(uint32_t)); + } + + DUMP_TITLE(&p_Fm->p_FmFpmRegs->fmfp_ps, ("fmfp_ps")); + DUMP_SUBSTRUCT_ARRAY(i, 64) + { + DUMP_MEMORY(&p_Fm->p_FmFpmRegs->fmfp_ps[i], sizeof(uint32_t)); + } + + + DUMP_TITLE(p_Fm->p_FmDmaRegs, ("p_FmDmaRegs Regs")); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmsr); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmmr); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmtr); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmhy); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmsetr); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmtah); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmtal); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmtcid); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmra); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmrd); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmwcr); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmebcr); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmccqdr); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmccqvr1); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmccqvr2); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmcqvr3); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmcqvr4); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmcqvr5); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmsefrc); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmsqfrc); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmssrc); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmdcr); + + DUMP_TITLE(&p_Fm->p_FmDmaRegs->fmdmplr, ("fmdmplr")); + + DUMP_SUBSTRUCT_ARRAY(i, FM_SIZE_OF_LIODN_TABLE/2) + { + DUMP_MEMORY(&p_Fm->p_FmDmaRegs->fmdmplr[i], sizeof(uint32_t)); + } + + DUMP_TITLE(p_Fm->p_FmBmiRegs, ("p_FmBmiRegs COMMON Regs")); + DUMP_VAR(p_Fm->p_FmBmiRegs,fmbm_init); + DUMP_VAR(p_Fm->p_FmBmiRegs,fmbm_cfg1); + DUMP_VAR(p_Fm->p_FmBmiRegs,fmbm_cfg2); + DUMP_VAR(p_Fm->p_FmBmiRegs,fmbm_ievr); + DUMP_VAR(p_Fm->p_FmBmiRegs,fmbm_ier); + + DUMP_TITLE(&p_Fm->p_FmBmiRegs->fmbm_arb, ("fmbm_arb")); + DUMP_SUBSTRUCT_ARRAY(i, 8) + { + DUMP_MEMORY(&p_Fm->p_FmBmiRegs->fmbm_arb[i], sizeof(uint32_t)); + } + + + DUMP_TITLE(p_Fm->p_FmQmiRegs, ("p_FmQmiRegs COMMON Regs")); + DUMP_VAR(p_Fm->p_FmQmiRegs,fmqm_gc); + DUMP_VAR(p_Fm->p_FmQmiRegs,fmqm_eie); + DUMP_VAR(p_Fm->p_FmQmiRegs,fmqm_eien); + DUMP_VAR(p_Fm->p_FmQmiRegs,fmqm_eif); + DUMP_VAR(p_Fm->p_FmQmiRegs,fmqm_ie); + DUMP_VAR(p_Fm->p_FmQmiRegs,fmqm_ien); + DUMP_VAR(p_Fm->p_FmQmiRegs,fmqm_if); + DUMP_VAR(p_Fm->p_FmQmiRegs,fmqm_gs); + DUMP_VAR(p_Fm->p_FmQmiRegs,fmqm_ts); + DUMP_VAR(p_Fm->p_FmQmiRegs,fmqm_etfc); + + return E_OK; +} +#endif /* (defined(DEBUG_ERRORS) && ... */ + --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/fm.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/Peripherals/FM/fm.h @@ -0,0 +1,699 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 fm.h + + @Description FM internal structures and definitions. +*//***************************************************************************/ +#ifndef __FM_H +#define __FM_H + +#include "error_ext.h" +#include "std_ext.h" +#include "fm_ext.h" +#include "fm_ipc.h" + + +#define __ERR_MODULE__ MODULE_FM + +#define FM_MAX_NUM_OF_HW_PORT_IDS 64 +#define FM_MAX_NUM_OF_GUESTS 100 + +/**************************************************************************//** + @Description Exceptions +*//***************************************************************************/ +#define FM_EX_DMA_BUS_ERROR 0x80000000 /**< DMA bus error. */ +#define FM_EX_DMA_READ_ECC 0x40000000 +#define FM_EX_DMA_SYSTEM_WRITE_ECC 0x20000000 +#define FM_EX_DMA_FM_WRITE_ECC 0x10000000 +#define FM_EX_FPM_STALL_ON_TASKS 0x08000000 /**< Stall of tasks on FPM */ +#define FM_EX_FPM_SINGLE_ECC 0x04000000 /**< Single ECC on FPM */ +#define FM_EX_FPM_DOUBLE_ECC 0x02000000 +#define FM_EX_QMI_SINGLE_ECC 0x01000000 /**< Single ECC on FPM */ +#define FM_EX_QMI_DEQ_FROM_UNKNOWN_PORTID 0x00800000 /**< Dequeu from default queue id */ +#define FM_EX_QMI_DOUBLE_ECC 0x00400000 +#define FM_EX_BMI_LIST_RAM_ECC 0x00200000 +#define FM_EX_BMI_PIPELINE_ECC 0x00100000 +#define FM_EX_BMI_STATISTICS_RAM_ECC 0x00080000 +#define FM_EX_IRAM_ECC 0x00040000 +#define FM_EX_NURAM_ECC 0x00020000 +#define FM_EX_BMI_DISPATCH_RAM_ECC 0x00010000 + +#define GET_EXCEPTION_FLAG(bitMask, exception) switch(exception){ \ + case e_FM_EX_DMA_BUS_ERROR: \ + bitMask = FM_EX_DMA_BUS_ERROR; break; \ + case e_FM_EX_DMA_READ_ECC: \ + bitMask = FM_EX_DMA_READ_ECC; break; \ + case e_FM_EX_DMA_SYSTEM_WRITE_ECC: \ + bitMask = FM_EX_DMA_SYSTEM_WRITE_ECC; break; \ + case e_FM_EX_DMA_FM_WRITE_ECC: \ + bitMask = FM_EX_DMA_FM_WRITE_ECC; break; \ + case e_FM_EX_FPM_STALL_ON_TASKS: \ + bitMask = FM_EX_FPM_STALL_ON_TASKS; break; \ + case e_FM_EX_FPM_SINGLE_ECC: \ + bitMask = FM_EX_FPM_SINGLE_ECC; break; \ + case e_FM_EX_FPM_DOUBLE_ECC: \ + bitMask = FM_EX_FPM_DOUBLE_ECC; break; \ + case e_FM_EX_QMI_SINGLE_ECC: \ + bitMask = FM_EX_QMI_SINGLE_ECC; break; \ + case e_FM_EX_QMI_DOUBLE_ECC: \ + bitMask = FM_EX_QMI_DOUBLE_ECC; break; \ + case e_FM_EX_QMI_DEQ_FROM_UNKNOWN_PORTID: \ + bitMask = FM_EX_QMI_DEQ_FROM_UNKNOWN_PORTID; break; \ + case e_FM_EX_BMI_LIST_RAM_ECC: \ + bitMask = FM_EX_BMI_LIST_RAM_ECC; break; \ + case e_FM_EX_BMI_PIPELINE_ECC: \ + bitMask = FM_EX_BMI_PIPELINE_ECC; break; \ + case e_FM_EX_BMI_STATISTICS_RAM_ECC: \ + bitMask = FM_EX_BMI_STATISTICS_RAM_ECC; break; \ + case e_FM_EX_BMI_DISPATCH_RAM_ECC: \ + bitMask = FM_EX_BMI_DISPATCH_RAM_ECC; break; \ + case e_FM_EX_IRAM_ECC: \ + bitMask = FM_EX_IRAM_ECC; break; \ + case e_FM_EX_MURAM_ECC: \ + bitMask = FM_EX_NURAM_ECC; break; \ + default: bitMask = 0;break;} + +/**************************************************************************//** + @Description defaults +*//***************************************************************************/ +#define DEFAULT_exceptions (FM_EX_DMA_BUS_ERROR |\ + FM_EX_DMA_READ_ECC |\ + FM_EX_DMA_SYSTEM_WRITE_ECC |\ + FM_EX_DMA_FM_WRITE_ECC |\ + FM_EX_FPM_STALL_ON_TASKS |\ + FM_EX_FPM_SINGLE_ECC |\ + FM_EX_FPM_DOUBLE_ECC |\ + FM_EX_QMI_SINGLE_ECC |\ + FM_EX_QMI_DEQ_FROM_UNKNOWN_PORTID|\ + FM_EX_QMI_DOUBLE_ECC |\ + FM_EX_BMI_LIST_RAM_ECC |\ + FM_EX_BMI_PIPELINE_ECC |\ + FM_EX_BMI_STATISTICS_RAM_ECC |\ + FM_EX_BMI_DISPATCH_RAM_ECC |\ + FM_EX_IRAM_ECC |\ + FM_EX_NURAM_ECC ) +#define DEFAULT_totalNumOfTasks (BMI_MAX_NUM_OF_TASKS*3/4) +#define DEFAULT_totalFifoSize (BMI_MAX_FIFO_SIZE*3/4) +#define DEFAULT_maxNumOfOpenDmas (BMI_MAX_NUM_OF_DMAS*3/4) +#define DEFAULT_eccEnable FALSE +#define DEFAULT_dispLimit 0 +#define DEFAULT_prsDispTh 16 +#define DEFAULT_plcrDispTh 16 +#define DEFAULT_kgDispTh 16 +#define DEFAULT_bmiDispTh 16 +#define DEFAULT_qmiEnqDispTh 16 +#define DEFAULT_qmiDeqDispTh 16 +#define DEFAULT_fmCtl1DispTh 16 +#define DEFAULT_fmCtl2DispTh 16 +#define DEFAULT_cacheOverride e_FM_DMA_NO_CACHE_OR +#ifdef FM_PEDANTIC_DMA +#define DEFAULT_aidOverride TRUE +#else +#define DEFAULT_aidOverride FALSE +#endif /* FM_PEDANTIC_DMA */ +#define DEFAULT_aidMode e_FM_DMA_AID_OUT_TNUM +#define DEFAULT_dmaStopOnBusError FALSE +#define DEFAULT_stopAtBusError FALSE +#define DEFAULT_axiDbgNumOfBeats 1 +#define DEFAULT_dmaCamNumOfEntries 32 +#define DEFAULT_dmaCommQLow ((DMA_THRESH_MAX_COMMQ+1)/2) +#define DEFAULT_dmaCommQHigh ((DMA_THRESH_MAX_COMMQ+1)*3/4) +#define DEFAULT_dmaReadIntBufLow ((DMA_THRESH_MAX_BUF+1)/2) +#define DEFAULT_dmaReadIntBufHigh ((DMA_THRESH_MAX_BUF+1)*3/4) +#define DEFAULT_dmaWriteIntBufLow ((DMA_THRESH_MAX_BUF+1)/2) +#define DEFAULT_dmaWriteIntBufHigh ((DMA_THRESH_MAX_BUF+1)*3/4) +#define DEFAULT_dmaSosEmergency 0 +#define DEFAULT_dmaDbgCntMode e_FM_DMA_DBG_NO_CNT +#define DEFAULT_catastrophicErr e_FM_CATASTROPHIC_ERR_STALL_PORT +#define DEFAULT_dmaErr e_FM_DMA_ERR_CATASTROPHIC +#define DEFAULT_resetOnInit FALSE +#define DEFAULT_haltOnExternalActivation FALSE /* do not change! if changed, must be disabled for rev1 ! */ +#define DEFAULT_haltOnUnrecoverableEccError FALSE /* do not change! if changed, must be disabled for rev1 ! */ +#define DEFAULT_externalEccRamsEnable FALSE +#define DEFAULT_VerifyUcode FALSE +#define DEFAULT_tnumAgingPeriod 0 +#define DEFAULT_dmaWatchdog 0 /* disabled */ +#define DEFAULT_mtu 9600 + +/**************************************************************************//** + @Description Modules registers offsets +*//***************************************************************************/ +#define FM_MM_MURAM 0x00000000 +#define FM_MM_BMI 0x00080000 +#define FM_MM_QMI 0x00080400 +#define FM_MM_PRS 0x000c7000 +#define FM_MM_KG 0x000C1000 +#define FM_MM_DMA 0x000C2000 +#define FM_MM_FPM 0x000C3000 +#define FM_MM_PLCR 0x000C0000 +#define FM_MM_IMEM 0x000C4000 + +/**************************************************************************//** + @Description Interrupt Enable/Mask +*//***************************************************************************/ + +/**************************************************************************//** + @Description Memory Mapped Registers +*//***************************************************************************/ + +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(push,1) +#endif /* defined(__MWERKS__) && ... */ +#define MEM_MAP_START + +typedef _Packed struct +{ + volatile uint32_t fpmtnc; /**< FPM TNUM Control */ + volatile uint32_t fpmpr; /**< FPM Port_ID FmCtl Association */ + volatile uint32_t brkc; /**< FPM Breakpoint Control */ + volatile uint32_t fpmflc; /**< FPM Flush Control */ + volatile uint32_t fpmdis1; /**< FPM Dispatch Thresholds1 */ + volatile uint32_t fpmdis2; /**< FPM Dispatch Thresholds2 */ + volatile uint32_t fmepi; /**< FM Error Pending Interrupts */ + volatile uint32_t fmrie; /**< FM Error Interrupt Enable */ + volatile uint32_t fmfpfcev[4]; /**< FPM FMan-Controller Event 1-4 */ + volatile uint8_t res1[16]; /**< reserved */ + volatile uint32_t fmfpfcee[4]; /**< PM FMan-Controller Event 1-4 */ + volatile uint8_t res2[16]; /**< reserved */ + volatile uint32_t fpmtsc1; /**< FPM TimeStamp Control1 */ + volatile uint32_t fpmtsc2; /**< FPM TimeStamp Control2 */ + volatile uint32_t fpmtsp; /**< FPM Time Stamp */ + volatile uint32_t fpmtsf; /**< FPM Time Stamp Fraction */ + volatile uint32_t fmrcr; /**< FM Rams Control */ + volatile uint32_t fpmextc; /**< FPM External Requests Control */ + volatile uint32_t fpmext1; /**< FPM External Requests Config1 */ + volatile uint32_t fpmext2; /**< FPM External Requests Config2 */ + volatile uint32_t fpmdrd[16]; /**< FPM Data_Ram Data 0-15 */ + volatile uint32_t fpmdra; /**< FPM Data Ram Access */ + volatile uint32_t fm_ip_rev_1; /**< FM IP Block Revision 1 */ + volatile uint32_t fm_ip_rev_2; /**< FM IP Block Revision 2 */ + volatile uint32_t fmrstc; /**< FM Reset Command */ + volatile uint32_t fmcld; /**< FM Classifier Debug */ + volatile uint32_t fmnpi; /**< FM Normal Pending Interrupts */ + volatile uint32_t fmfp_exte; /**< FPM External Requests Enable */ + volatile uint32_t fpmem; /**< FPM Event & Mask */ + volatile uint32_t fpmcev[4]; /**< FPM CPU Event 1-4 */ + volatile uint8_t res4[16]; /**< reserved */ + volatile uint32_t fmfp_ps[0x40]; /**< FPM Port Status */ + volatile uint8_t reserved1[0x260]; + volatile uint32_t fpmts[128]; /**< 0x400: FPM Task Status */ +} _PackedType t_FmFpmRegs; + +#define NUM_OF_DBG_TRAPS 3 + +typedef _Packed struct +{ + volatile uint32_t fmbm_init; /**< BMI Initialization */ + volatile uint32_t fmbm_cfg1; /**< BMI Configuration 1 */ + volatile uint32_t fmbm_cfg2; /**< BMI Configuration 2 */ + volatile uint32_t reserved[5]; + volatile uint32_t fmbm_ievr; /**< Interrupt Event Register */ + volatile uint32_t fmbm_ier; /**< Interrupt Enable Register */ + volatile uint32_t fmbm_ifr; /**< Interrupt Force Register */ + volatile uint32_t reserved1[5]; + volatile uint32_t fmbm_arb[8]; /**< BMI Arbitration */ + volatile uint32_t reserved2[12]; + volatile uint32_t fmbm_dtc[NUM_OF_DBG_TRAPS]; /**< BMI Debug Trap Counter */ + volatile uint32_t reserved3; + volatile uint32_t fmbm_dcv[NUM_OF_DBG_TRAPS][4]; /**< BMI Debug Compare Value */ + volatile uint32_t fmbm_dcm[NUM_OF_DBG_TRAPS][4]; /**< BMI Debug Compare Mask */ + volatile uint32_t fmbm_gde; /**< BMI Global Debug Enable */ + volatile uint32_t fmbm_pp[63]; /**< BMI Port Parameters */ + volatile uint32_t reserved4; + volatile uint32_t fmbm_pfs[63]; /**< BMI Port FIFO Size */ + volatile uint32_t reserved5; + volatile uint32_t fmbm_ppid[63]; /**< Port Partition ID */ +} _PackedType t_FmBmiRegs; + +typedef _Packed struct +{ + volatile uint32_t fmqm_gc; /**< General Configuration Register */ + volatile uint32_t Reserved0; + volatile uint32_t fmqm_eie; /**< Error Interrupt Event Register */ + volatile uint32_t fmqm_eien; /**< Error Interrupt Enable Register */ + volatile uint32_t fmqm_eif; /**< Error Interrupt Force Register */ + volatile uint32_t fmqm_ie; /**< Interrupt Event Register */ + volatile uint32_t fmqm_ien; /**< Interrupt Enable Register */ + volatile uint32_t fmqm_if; /**< Interrupt Force Register */ + volatile uint32_t fmqm_gs; /**< Global Status Register */ + volatile uint32_t fmqm_ts; /**< Task Status Register */ + volatile uint32_t fmqm_etfc; /**< Enqueue Total Frame Counter */ + volatile uint32_t fmqm_dtfc; /**< Dequeue Total Frame Counter */ + volatile uint32_t fmqm_dc0; /**< Dequeue Counter 0 */ + volatile uint32_t fmqm_dc1; /**< Dequeue Counter 1 */ + volatile uint32_t fmqm_dc2; /**< Dequeue Counter 2 */ + volatile uint32_t fmqm_dc3; /**< Dequeue Counter 3 */ + volatile uint32_t fmqm_dfdc; /**< Dequeue FQID from Default Counter */ + volatile uint32_t fmqm_dfcc; /**< Dequeue FQID from Context Counter */ + volatile uint32_t fmqm_dffc; /**< Dequeue FQID from FD Counter */ + volatile uint32_t fmqm_dcc; /**< Dequeue Confirm Counter */ + volatile uint32_t Reserved1a[7]; + volatile uint32_t fmqm_tapc; /**< Tnum Aging Period Control */ + volatile uint32_t fmqm_dmcvc; /**< Dequeue MAC Command Valid Counter */ + volatile uint32_t fmqm_difdcc; /**< Dequeue Invalid FD Command Counter */ + volatile uint32_t fmqm_da1v; /**< Dequeue A1 Valid Counter */ + volatile uint32_t Reserved1b; + volatile uint32_t fmqm_dtc; /**< 0x0080 Debug Trap Counter */ + volatile uint32_t fmqm_efddd; /**< 0x0084 Enqueue Frame Descriptor Dynamic Debug */ + volatile uint32_t Reserved3[2]; + _Packed struct { + volatile uint32_t fmqm_dtcfg1; /**< 0x0090 Debug Trap Configuration 1 Register */ + volatile uint32_t fmqm_dtval1; /**< Debug Trap Value 1 Register */ + volatile uint32_t fmqm_dtm1; /**< Debug Trap Mask 1 Register */ + volatile uint32_t fmqm_dtc1; /**< Debug Trap Counter 1 Register */ + volatile uint32_t fmqm_dtcfg2; /**< Debug Trap Configuration 2 Register */ + volatile uint32_t fmqm_dtval2; /**< Debug Trap Value 2 Register */ + volatile uint32_t fmqm_dtm2; /**< Debug Trap Mask 2 Register */ + volatile uint32_t Reserved1; + } _PackedType dbgTraps[NUM_OF_DBG_TRAPS]; +} _PackedType t_FmQmiRegs; + +typedef _Packed struct +{ + volatile uint32_t fmdmsr; /**< FM DMA status register 0x04 */ + volatile uint32_t fmdmmr; /**< FM DMA mode register 0x08 */ + volatile uint32_t fmdmtr; /**< FM DMA bus threshold register 0x0c */ + volatile uint32_t fmdmhy; /**< FM DMA bus hysteresis register 0x10 */ + volatile uint32_t fmdmsetr; /**< FM DMA SOS emergency Threshold Register 0x14 */ + volatile uint32_t fmdmtah; /**< FM DMA transfer bus address high register 0x18 */ + volatile uint32_t fmdmtal; /**< FM DMA transfer bus address low register 0x1C */ + volatile uint32_t fmdmtcid; /**< FM DMA transfer bus communication ID register 0x20 */ + volatile uint32_t fmdmra; /**< FM DMA bus internal ram address register 0x24 */ + volatile uint32_t fmdmrd; /**< FM DMA bus internal ram data register 0x28 */ + volatile uint32_t fmdmwcr; /**< FM DMA CAM watchdog counter value 0x2C */ + volatile uint32_t fmdmebcr; /**< FM DMA CAM base in MURAM register 0x30 */ + volatile uint32_t fmdmccqdr; /**< FM DMA CAM and CMD Queue Debug register 0x34 */ + volatile uint32_t fmdmccqvr1; /**< FM DMA CAM and CMD Queue Value register #1 0x38 */ + volatile uint32_t fmdmccqvr2; /**< FM DMA CAM and CMD Queue Value register #2 0x3C */ + volatile uint32_t fmdmcqvr3; /**< FM DMA CMD Queue Value register #3 0x40 */ + volatile uint32_t fmdmcqvr4; /**< FM DMA CMD Queue Value register #4 0x44 */ + volatile uint32_t fmdmcqvr5; /**< FM DMA CMD Queue Value register #5 0x48 */ + volatile uint32_t fmdmsefrc; /**< FM DMA Semaphore Entry Full Reject Counter 0x50 */ + volatile uint32_t fmdmsqfrc; /**< FM DMA Semaphore Queue Full Reject Counter 0x54 */ + volatile uint32_t fmdmssrc; /**< FM DMA Semaphore SYNC Reject Counter 0x54 */ + volatile uint32_t fmdmdcr; /**< FM DMA Debug Counter */ + volatile uint32_t fmdmemsr; /**< FM DMA Emrgency Smoother Register */ + volatile uint32_t reserved; + volatile uint32_t fmdmplr[FM_SIZE_OF_LIODN_TABLE/2]; + /**< FM DMA PID-LIODN # register */ +} _PackedType t_FmDmaRegs; + +typedef _Packed struct +{ + volatile uint32_t iadd; /**< FM IRAM instruction address register */ + volatile uint32_t idata; /**< FM IRAM instruction data register */ + volatile uint32_t itcfg; /**< FM IRAM timing config register */ + volatile uint32_t iready; /**< FM IRAM ready register */ + volatile uint8_t res[0x80000-0x10]; +} _PackedType t_FMIramRegs; + +#define MEM_MAP_END +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(pop) +#endif /* defined(__MWERKS__) && ... */ + + +/**************************************************************************//** + @Description General defines +*//***************************************************************************/ + +#define FM_DEBUG_STATUS_REGISTER_OFFSET 0x000d1084UL +#define FM_UCODE_DEBUG_INSTRUCTION 0x6ffff805UL + + +/**************************************************************************//** + @Description DMA definitions +*//***************************************************************************/ + +/* masks */ +#define DMA_MODE_AID_OR 0x20000000 +#define DMA_MODE_SBER 0x10000000 +#define DMA_MODE_BER 0x00200000 +#define DMA_MODE_ECC 0x00000020 +#define DMA_MODE_PRIVILEGE_PROT 0x00001000 +#define DMA_MODE_SECURE_PROT 0x00000800 +#define DMA_MODE_EMERGENCY_READ 0x00080000 +#define DMA_MODE_EMERGENCY_WRITE 0x00040000 + +#define DMA_TRANSFER_PORTID_MASK 0xFF000000 +#define DMA_TRANSFER_TNUM_MASK 0x00FF0000 +#define DMA_TRANSFER_LIODN_MASK 0x00000FFF + +#define DMA_HIGH_LIODN_MASK 0x0FFF0000 +#define DMA_LOW_LIODN_MASK 0x00000FFF + +#define DMA_STATUS_CMD_QUEUE_NOT_EMPTY 0x10000000 +#define DMA_STATUS_BUS_ERR 0x08000000 +#define DMA_STATUS_READ_ECC 0x04000000 +#define DMA_STATUS_SYSTEM_WRITE_ECC 0x02000000 +#define DMA_STATUS_FM_WRITE_ECC 0x01000000 +#define DMA_STATUS_SYSTEM_DPEXT_ECC 0x00800000 +#define DMA_STATUS_FM_DPEXT_ECC 0x00400000 +#define DMA_STATUS_SYSTEM_DPDAT_ECC 0x00200000 +#define DMA_STATUS_FM_DPDAT_ECC 0x00100000 +#define DMA_STATUS_FM_SPDAT_ECC 0x00080000 + +#define FM_LIODN_BASE_MASK 0x00000FFF + +/* shifts */ +#define DMA_MODE_CACHE_OR_SHIFT 30 +#define DMA_MODE_BUS_PRI_SHIFT 16 +#define DMA_MODE_AXI_DBG_SHIFT 24 +#define DMA_MODE_CEN_SHIFT 13 +#define DMA_MODE_BUS_PROT_SHIFT 10 +#define DMA_MODE_DBG_SHIFT 7 +#define DMA_MODE_EMERGENCY_LEVEL_SHIFT 6 +#define DMA_MODE_AID_MODE_SHIFT 4 +#define DMA_MODE_MAX_AXI_DBG_NUM_OF_BEATS 16 +#define DMA_MODE_MAX_CAM_NUM_OF_ENTRIES 32 + +#define DMA_THRESH_COMMQ_SHIFT 24 +#define DMA_THRESH_READ_INT_BUF_SHIFT 16 + +#define DMA_LIODN_SHIFT 16 + +#define DMA_TRANSFER_PORTID_SHIFT 24 +#define DMA_TRANSFER_TNUM_SHIFT 16 + +/* sizes */ +#define DMA_MAX_WATCHDOG 0xffffffff + +/* others */ +#define DMA_CAM_SIZEOF_ENTRY 0x40 +#define DMA_CAM_ALIGN 0x1000 +#define DMA_CAM_UNITS 8 + + +/**************************************************************************//** + @Description FPM defines +*//***************************************************************************/ + +/* masks */ +#define FPM_EV_MASK_DOUBLE_ECC 0x80000000 +#define FPM_EV_MASK_STALL 0x40000000 +#define FPM_EV_MASK_SINGLE_ECC 0x20000000 +#define FPM_EV_MASK_RELEASE_FM 0x00010000 +#define FPM_EV_MASK_DOUBLE_ECC_EN 0x00008000 +#define FPM_EV_MASK_STALL_EN 0x00004000 +#define FPM_EV_MASK_SINGLE_ECC_EN 0x00002000 +#define FPM_EV_MASK_EXTERNAL_HALT 0x00000008 +#define FPM_EV_MASK_ECC_ERR_HALT 0x00000004 + +#define FPM_RAM_CTL_RAMS_ECC_EN 0x80000000 +#define FPM_RAM_CTL_IRAM_ECC_EN 0x40000000 +#define FPM_RAM_CTL_MURAM_ECC 0x00008000 +#define FPM_RAM_CTL_IRAM_ECC 0x00004000 +#define FPM_RAM_CTL_MURAM_TEST_ECC 0x20000000 +#define FPM_RAM_CTL_IRAM_TEST_ECC 0x10000000 +#define FPM_RAM_CTL_RAMS_ECC_EN_SRC_SEL 0x08000000 + +#define FPM_IRAM_ECC_ERR_EX_EN 0x00020000 +#define FPM_MURAM_ECC_ERR_EX_EN 0x00040000 + +#define FPM_REV1_MAJOR_MASK 0x0000FF00 +#define FPM_REV1_MINOR_MASK 0x000000FF + +#define FPM_REV2_INTEG_MASK 0x00FF0000 +#define FPM_REV2_ERR_MASK 0x0000FF00 +#define FPM_REV2_CFG_MASK 0x000000FF + +#define FPM_TS_FRACTION_MASK 0x0000FFFF +#define FPM_TS_CTL_EN 0x80000000 + +#define FPM_PORT_FM_CTL1 0x00000001 +#define FPM_PORT_FM_CTL2 0x00000002 +#define FPM_PRC_REALSE_STALLED 0x00800000 + +#define FPM_PS_STALLED 0x00800000 +#define FPM_PS_FM_CTL1_SEL 0x80000000 +#define FPM_PS_FM_CTL2_SEL 0x40000000 +#define FPM_PS_FM_CTL_SEL_MASK (FPM_PS_FM_CTL1_SEL | FPM_PS_FM_CTL2_SEL) + +#define FPM_RSTC_FM_RESET 0x80000000 +#define FPM_RSTC_10G0_RESET 0x04000000 +#define FPM_RSTC_1G0_RESET 0x40000000 +#define FPM_RSTC_1G1_RESET 0x20000000 +#define FPM_RSTC_1G2_RESET 0x10000000 +#define FPM_RSTC_1G3_RESET 0x08000000 +#define FPM_RSTC_1G4_RESET 0x02000000 + + +/* shifts */ +#define FPM_DISP_LIMIT_SHIFT 24 + +#define FPM_THR1_PRS_SHIFT 24 +#define FPM_THR1_KG_SHIFT 16 +#define FPM_THR1_PLCR_SHIFT 8 +#define FPM_THR1_BMI_SHIFT 0 + +#define FPM_THR2_QMI_ENQ_SHIFT 24 +#define FPM_THR2_QMI_DEQ_SHIFT 0 +#define FPM_THR2_FM_CTL1_SHIFT 16 +#define FPM_THR2_FM_CTL2_SHIFT 8 + +#define FPM_EV_MASK_CAT_ERR_SHIFT 1 +#define FPM_EV_MASK_DMA_ERR_SHIFT 0 + +#define FPM_REV1_MAJOR_SHIFT 8 +#define FPM_REV1_MINOR_SHIFT 0 + +#define FPM_REV2_INTEG_SHIFT 16 +#define FPM_REV2_ERR_SHIFT 8 +#define FPM_REV2_CFG_SHIFT 0 + +#define FPM_TS_INT_SHIFT 16 + +#define FPM_PORT_FM_CTL_PORTID_SHIFT 24 + +#define FPM_PS_FM_CTL_SEL_SHIFT 30 +#define FPM_PRC_ORA_FM_CTL_SEL_SHIFT 16 + +/* Interrupts defines */ +#define FPM_EVENT_FM_CTL_0 0x00008000 +#define FPM_EVENT_FM_CTL 0x0000FF00 +#define FPM_EVENT_FM_CTL_BRK 0x00000080 + +/* others */ +#define FPM_MAX_DISP_LIMIT 31 + +/**************************************************************************//** + @Description BMI defines +*//***************************************************************************/ +/* masks */ +#define BMI_INIT_START 0x80000000 +#define BMI_ERR_INTR_EN_PIPELINE_ECC 0x80000000 +#define BMI_ERR_INTR_EN_LIST_RAM_ECC 0x40000000 +#define BMI_ERR_INTR_EN_STATISTICS_RAM_ECC 0x20000000 +#define BMI_ERR_INTR_EN_DISPATCH_RAM_ECC 0x10000000 +#define BMI_NUM_OF_TASKS_MASK 0x3F000000 +#define BMI_NUM_OF_EXTRA_TASKS_MASK 0x000F0000 +#define BMI_NUM_OF_DMAS_MASK 0x00000F00 +#define BMI_NUM_OF_EXTRA_DMAS_MASK 0x0000000F +#define BMI_FIFO_SIZE_MASK 0x000003FF +#define BMI_EXTRA_FIFO_SIZE_MASK 0x03FF0000 +#define BMI_CFG2_DMAS_MASK 0x0000003F + +/* shifts */ +#define BMI_CFG2_TASKS_SHIFT 16 +#define BMI_CFG2_DMAS_SHIFT 0 +#define BMI_CFG1_FIFO_SIZE_SHIFT 16 +#define BMI_FIFO_SIZE_SHIFT 0 +#define BMI_EXTRA_FIFO_SIZE_SHIFT 16 +#define BMI_NUM_OF_TASKS_SHIFT 24 +#define BMI_EXTRA_NUM_OF_TASKS_SHIFT 16 +#define BMI_NUM_OF_DMAS_SHIFT 8 +#define BMI_EXTRA_NUM_OF_DMAS_SHIFT 0 + +/* others */ +#define BMI_FIFO_ALIGN 0x100 + + +/**************************************************************************//** + @Description QMI defines +*//***************************************************************************/ +/* masks */ +#define QMI_CFG_ENQ_EN 0x80000000 +#define QMI_CFG_DEQ_EN 0x40000000 +#define QMI_CFG_EN_COUNTERS 0x10000000 +#define QMI_CFG_SOFT_RESET 0x01000000 +#define QMI_CFG_DEQ_MASK 0x0000003F +#define QMI_CFG_ENQ_MASK 0x00003F00 + +#define QMI_ERR_INTR_EN_DOUBLE_ECC 0x80000000 +#define QMI_ERR_INTR_EN_DEQ_FROM_DEF 0x40000000 +#define QMI_INTR_EN_SINGLE_ECC 0x80000000 + +/* shifts */ +#define QMI_CFG_ENQ_SHIFT 8 +#define QMI_TAPC_TAP 22 + + +/**************************************************************************//** + @Description IRAM defines +*//***************************************************************************/ +/* masks */ +#define IRAM_IADD_AIE 0x80000000 +#define IRAM_READY 0x80000000 + +typedef struct { + void (*f_Isr) (t_Handle h_Arg, uint32_t event); + t_Handle h_SrcHandle; +} t_FmanCtrlIntrSrc; + + +typedef struct +{ + /* uint8_t numOfPartitions; */ + bool resetOnInit; +#ifdef FM_PARTITION_ARRAY + uint16_t liodnBasePerPort[FM_SIZE_OF_LIODN_TABLE]; +#endif + bool enCounters; + t_FmThresholds thresholds; + e_FmDmaCacheOverride dmaCacheOverride; + e_FmDmaAidMode dmaAidMode; + bool dmaAidOverride; + uint8_t dmaAxiDbgNumOfBeats; + uint8_t dmaCamNumOfEntries; + uint32_t dmaWatchdog; + t_FmDmaThresholds dmaCommQThresholds; + t_FmDmaThresholds dmaWriteBufThresholds; + t_FmDmaThresholds dmaReadBufThresholds; + uint32_t dmaSosEmergency; + e_FmDmaDbgCntMode dmaDbgCntMode; + bool dmaStopOnBusError; + bool dmaEnEmergency; + t_FmDmaEmergency dmaEmergency; + bool dmaEnEmergencySmoother; + uint32_t dmaEmergencySwitchCounter; + bool haltOnExternalActivation; + bool haltOnUnrecoverableEccError; + e_FmCatastrophicErr catastrophicErr; + e_FmDmaErr dmaErr; + bool enMuramTestMode; + bool enIramTestMode; + bool externalEccRamsEnable; + uint16_t tnumAgingPeriod; + t_FmPcdFirmwareParams firmware; + bool fwVerify; +} t_FmDriverParam; + +typedef void (t_FmanCtrlIsr)( t_Handle h_Fm, uint32_t event); + +typedef struct +{ +/***************************/ +/* Master/Guest parameters */ +/***************************/ + uint8_t fmId; + e_FmPortType portsTypes[FM_MAX_NUM_OF_HW_PORT_IDS]; + uint16_t fmClkFreq; +/**************************/ +/* Master Only parameters */ +/**************************/ + bool enabledTimeStamp; + uint8_t count1MicroBit; + uint8_t totalNumOfTasks; + uint32_t totalFifoSize; + uint8_t maxNumOfOpenDmas; + uint8_t accumulatedNumOfTasks; + uint32_t accumulatedFifoSize; + uint8_t accumulatedNumOfOpenDmas; +#ifdef FM_QMI_DEQ_OPTIONS_SUPPORT + uint8_t accumulatedNumOfDeqTnums; +#endif /* FM_QMI_DEQ_OPTIONS_SUPPORT */ +#ifdef FM_LOW_END_RESTRICTION + bool lowEndRestriction; +#endif /* FM_LOW_END_RESTRICTION */ + uint32_t exceptions; + int irq; + int errIrq; + bool ramsEccEnable; + bool explicitEnable; + bool internalCall; + uint8_t ramsEccOwners; + uint32_t extraFifoPoolSize; + uint8_t extraTasksPoolSize; + uint8_t extraOpenDmasPoolSize; +#if defined(FM_MAX_NUM_OF_10G_MACS) && (FM_MAX_NUM_OF_10G_MACS) + uint16_t macMaxFrameLengths10G[FM_MAX_NUM_OF_10G_MACS]; +#endif /* defined(FM_MAX_NUM_OF_10G_MACS) && (FM_MAX_NUM_OF_10G_MACS) */ + uint16_t macMaxFrameLengths1G[FM_MAX_NUM_OF_1G_MACS]; +} t_FmStateStruct; + +typedef struct +{ +/***************************/ +/* Master/Guest parameters */ +/***************************/ +/* locals for recovery */ + uintptr_t baseAddr; + +/* un-needed for recovery */ + t_Handle h_Pcd; + char fmModuleName[MODULE_NAME_SIZE]; + char fmIpcHandlerModuleName[FM_MAX_NUM_OF_GUESTS][MODULE_NAME_SIZE]; + t_Handle h_IpcSessions[FM_MAX_NUM_OF_GUESTS]; + t_FmIntrSrc intrMng[e_FM_EV_DUMMY_LAST]; /* FM exceptions user callback */ + uint8_t guestId; +/**************************/ +/* Master Only parameters */ +/**************************/ +/* locals for recovery */ + t_FmFpmRegs *p_FmFpmRegs; + t_FmBmiRegs *p_FmBmiRegs; + t_FmQmiRegs *p_FmQmiRegs; + t_FmDmaRegs *p_FmDmaRegs; + t_FmExceptionsCallback *f_Exception; + t_FmBusErrorCallback *f_BusError; + t_Handle h_App; /* Application handle */ + t_Handle h_Spinlock; + bool recoveryMode; + t_FmStateStruct *p_FmStateStruct; + +/* un-needed for recovery */ + t_FmDriverParam *p_FmDriverParam; + t_Handle h_FmMuram; + uint64_t fmMuramPhysBaseAddr; + bool independentMode; + bool hcPortInitialized; + uintptr_t camBaseAddr; /* save for freeing */ + uintptr_t resAddr; + uintptr_t fifoBaseAddr; /* save for freeing */ + t_FmanCtrlIntrSrc fmanCtrlIntr[FM_NUM_OF_FMAN_CTRL_EVENT_REGS]; /* FM exceptions user callback */ + bool usedEventRegs[FM_NUM_OF_FMAN_CTRL_EVENT_REGS]; +} t_Fm; + + +#endif /* __FM_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/fm_ipc.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/Peripherals/FM/fm_ipc.h @@ -0,0 +1,449 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 fm_ipc.h + + @Description FM Inter-Partition prototypes, structures and definitions. +*//***************************************************************************/ +#ifndef __FM_IPC_H +#define __FM_IPC_H + +#include "error_ext.h" +#include "std_ext.h" + + +/**************************************************************************//** + @Group FM_grp Frame Manager API + + @Description FM API functions, definitions and enums + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group FM_IPC_grp FM Inter-Partition messaging Unit + + @Description FM Inter-Partition messaging unit API definitions and enums. + + @{ +*//***************************************************************************/ + +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(push,1) +#endif /* defined(__MWERKS__) && ... */ +#define MEM_MAP_START + +/**************************************************************************//** + @Description enum for defining MAC types +*//***************************************************************************/ + +/**************************************************************************//** + @Description A structure of parameters for specifying a MAC. +*//***************************************************************************/ +typedef _Packed struct +{ + uint8_t id; + uint32_t enumType; +} _PackedType t_FmIpcMacParams; + +/**************************************************************************//** + @Description A structure of parameters for specifying a MAC. +*//***************************************************************************/ +typedef _Packed struct +{ + t_FmIpcMacParams macParams; + uint16_t maxFrameLength; +} _PackedType t_FmIpcMacMaxFrameParams; + +/**************************************************************************//** + @Description FM physical Address +*//***************************************************************************/ +typedef _Packed struct t_FmIpcPhysAddr +{ + volatile uint8_t high; + volatile uint32_t low; +} _PackedType t_FmIpcPhysAddr; + +/**************************************************************************//** + @Description Structure for IPC communication during FM_PORT_Init. +*//***************************************************************************/ +typedef _Packed struct t_FmIpcPortInInitParams { + uint8_t hardwarePortId; /**< IN. port Id */ + uint32_t enumPortType; /**< IN. Port type */ + uint8_t boolIndependentMode;/**< IN. TRUE if FM Port operates in independent mode */ + uint16_t liodnOffset; /**< IN. Port's requested resource */ + uint8_t numOfTasks; /**< IN. Port's requested resource */ + uint8_t numOfExtraTasks; /**< IN. Port's requested resource */ + uint8_t numOfOpenDmas; /**< IN. Port's requested resource */ + uint8_t numOfExtraOpenDmas; /**< IN. Port's requested resource */ + uint32_t sizeOfFifo; /**< IN. Port's requested resource */ + uint32_t extraSizeOfFifo; /**< IN. Port's requested resource */ + uint8_t deqPipelineDepth; /**< IN. Port's requested resource */ + uint16_t liodnBase; /**< IN. Irrelevant for P4080 rev 1. + LIODN base for this port, to be + used together with LIODN offset. */ +} _PackedType t_FmIpcPortInInitParams; + + +/**************************************************************************//** + @Description Structure for IPC communication between port and FM + regarding tasks and open DMA resources management. +*//***************************************************************************/ +typedef _Packed struct t_FmIpcPortRsrcParams { + uint8_t hardwarePortId; /**< IN. port Id */ + uint32_t val; /**< IN. Port's requested resource */ + uint32_t extra; /**< IN. Port's requested resource */ + uint8_t boolInitialConfig; +} _PackedType t_FmIpcPortRsrcParams; + + +/**************************************************************************//** + @Description Structure for IPC communication between port and FM + regarding tasks and open DMA resources management. +*//***************************************************************************/ +typedef _Packed struct t_FmIpcPortFifoParams { + t_FmIpcPortRsrcParams rsrcParams; + uint32_t enumPortType; + uint8_t boolIndependentMode; + uint8_t deqPipelineDepth; + uint8_t numOfPools; + uint16_t secondLargestBufSize; + uint16_t largestBufSize; + uint8_t boolInitialConfig; +} _PackedType t_FmIpcPortFifoParams; + +/**************************************************************************//** + @Description Structure for port-FM communication during FM_PORT_Free. +*//***************************************************************************/ +typedef _Packed struct t_FmIpcPortFreeParams { + uint8_t hardwarePortId; /**< IN. port Id */ + uint32_t enumPortType; /**< IN. Port type */ +#ifdef FM_QMI_DEQ_OPTIONS_SUPPORT + uint8_t deqPipelineDepth; /**< IN. Port's requested resource */ +#endif /* FM_QMI_DEQ_OPTIONS_SUPPORT */ +} _PackedType t_FmIpcPortFreeParams; + +/**************************************************************************//** + @Description Structure for defining DMA status +*//***************************************************************************/ +typedef _Packed struct t_FmIpcDmaStatus { + uint8_t boolCmqNotEmpty; /**< Command queue is not empty */ + uint8_t boolBusError; /**< Bus error occurred */ + uint8_t boolReadBufEccError; /**< Double ECC error on buffer Read */ + uint8_t boolWriteBufEccSysError; /**< Double ECC error on buffer write from system side */ + uint8_t boolWriteBufEccFmError; /**< Double ECC error on buffer write from FM side */ +} _PackedType t_FmIpcDmaStatus; + +typedef _Packed struct t_FmIpcRegisterIntr +{ + uint8_t guestId; /* IN */ + uint32_t event; /* IN */ +} _PackedType t_FmIpcRegisterIntr; + +typedef _Packed struct t_FmIpcIsr +{ + uint8_t boolErr; /* IN */ + uint32_t pendingReg; /* IN */ +} _PackedType t_FmIpcIsr; + +/**************************************************************************//** + @Description structure for returning revision information +*//***************************************************************************/ +typedef _Packed struct t_FmIpcRevisionInfo { + uint8_t majorRev; /**< OUT: Major revision */ + uint8_t minorRev; /**< OUT: Minor revision */ +} _PackedType t_FmIpcRevisionInfo; + +/**************************************************************************//** + @Description Structure for defining Fm number of Fman controlers +*//***************************************************************************/ +typedef _Packed struct t_FmIpcPortNumOfFmanCtrls { + uint8_t hardwarePortId; /**< IN. port Id */ + uint8_t numOfFmanCtrls; /**< IN. Port type */ +} t_FmIpcPortNumOfFmanCtrls; + +/**************************************************************************//** + @Description structure for setting Fman contriller events +*//***************************************************************************/ +typedef _Packed struct t_FmIpcFmanEvents { + uint8_t eventRegId; /**< IN: Fman controller event register id */ + uint32_t enableEvents; /**< IN/OUT: required enabled events mask */ +} _PackedType t_FmIpcFmanEvents; + +#define FM_IPC_MAX_REPLY_BODY_SIZE 16 +#define FM_IPC_MAX_REPLY_SIZE (FM_IPC_MAX_REPLY_BODY_SIZE + sizeof(uint32_t)) +#define FM_IPC_MAX_MSG_SIZE 30 +typedef _Packed struct t_FmIpcMsg +{ + uint32_t msgId; + uint8_t msgBody[FM_IPC_MAX_MSG_SIZE]; +} _PackedType t_FmIpcMsg; + +typedef _Packed struct t_FmIpcReply +{ + uint32_t error; + uint8_t replyBody[FM_IPC_MAX_REPLY_BODY_SIZE]; +} _PackedType t_FmIpcReply; + +#define MEM_MAP_END +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(pop) +#endif /* defined(__MWERKS__) && ... */ + + +/***************************************************************************/ +/************************ FRONT-END-TO-BACK-END*****************************/ +/***************************************************************************/ + +/**************************************************************************//** + @Function FM_GET_TIMESTAMP_SCALE + + @Description Used by FM front-end. + + @Param[out] uint32_t Pointer +*//***************************************************************************/ +#define FM_GET_TIMESTAMP_SCALE 1 + +/**************************************************************************//** + @Function FM_GET_COUNTER + + @Description Used by FM front-end. + + @Param[in/out] t_FmIpcGetCounter Pointer +*//***************************************************************************/ +#define FM_GET_COUNTER 2 + +/**************************************************************************//** + @Function FM_DUMP_REGS + + @Description Used by FM front-end for the PORT module in order to set and get + parameters in/from master FM module on FM PORT initialization time. + + @Param None +*//***************************************************************************/ +#define FM_DUMP_REGS 3 + +/**************************************************************************//** + @Function FM_GET_SET_PORT_PARAMS + + @Description Used by FM front-end for the PORT module in order to set and get + parameters in/from master FM module on FM PORT initialization time. + + @Param[in/out] t_FmIcPortInitParams Pointer +*//***************************************************************************/ +#define FM_GET_SET_PORT_PARAMS 4 + +/**************************************************************************//** + @Function FM_FREE_PORT + + @Description Used by FM front-end for the PORT module when a port is freed + to free all FM PORT resources. + + @Param[in] uint8_t Pointer +*//***************************************************************************/ +#define FM_FREE_PORT 5 + +/**************************************************************************//** + @Function FM_RESET_MAC + + @Description Used by front-end for the MAC module to reset the MAC registers + + @Param[in] t_FmIpcMacParams Pointer . +*//***************************************************************************/ +#define FM_RESET_MAC 6 + +/**************************************************************************//** + @Function FM_RESUME_STALLED_PORT + + @Description Used by FM front-end for the PORT module in order to + release a stalled FM Port. + + @Param[in] uint8_t Pointer +*//***************************************************************************/ +#define FM_RESUME_STALLED_PORT 7 + +/**************************************************************************//** + @Function FM_IS_PORT_STALLED + + @Description Used by FM front-end for the PORT module in order to check whether + an FM port is stalled. + + @Param[in/out] t_FmIcPortIsStalled Pointer +*//***************************************************************************/ +#define FM_IS_PORT_STALLED 8 + +/**************************************************************************//** + @Function FM_DUMP_PORT_REGS + + @Description Used by FM front-end for the PORT module in order to dump + all port registers. + + @Param[in] uint8_t Pointer +*//***************************************************************************/ +#define FM_DUMP_PORT_REGS 9 + +/**************************************************************************//** + @Function FM_GET_REV + + @Description Used by FM front-end for the PORT module in order to dump + all port registers. + + @Param[in] uint8_t Pointer +*//***************************************************************************/ +#define FM_GET_REV 10 + +/**************************************************************************//** + @Function FM_REGISTER_INTR + + @Description Used by FM front-end to register an interrupt handler to + be called upon interrupt for guest. + + @Param[out] t_FmIpcRegisterIntr Pointer +*//***************************************************************************/ +#define FM_REGISTER_INTR 11 + +/**************************************************************************//** + @Function FM_GET_CLK_FREQ + + @Description Used by FM Front-end to read the FM clock frequency. + + @Param[out] uint32_t Pointer +*//***************************************************************************/ +#define FM_GET_CLK_FREQ 12 + +/**************************************************************************//** + @Function FM_DMA_STAT + + @Description Used by FM front-end to read the FM DMA status. + + @Param[out] t_FmIpcDmaStatus Pointer +*//***************************************************************************/ +#define FM_DMA_STAT 13 + +/**************************************************************************//** + @Function FM_ALLOC_FMAN_CTRL_EVENT_REG + + @Description Used by FM front-end to allocate event register. + + @Param[out] Event register id Pointer +*//***************************************************************************/ +#define FM_ALLOC_FMAN_CTRL_EVENT_REG 14 + +/**************************************************************************//** + @Function FM_FREE_FMAN_CTRL_EVENT_REG + + @Description Used by FM front-end to free locate event register. + + @Param[in] uint8_t Pointer - Event register id +*//***************************************************************************/ +#define FM_FREE_FMAN_CTRL_EVENT_REG 15 + +/**************************************************************************//** + @Function FM_SET_FMAN_CTRL_EVENTS_ENABLE + + @Description Used by FM front-end to enable events in the FPM + Fman controller event register. + + @Param[in] t_FmIpcFmanEvents Pointer +*//***************************************************************************/ +#define FM_SET_FMAN_CTRL_EVENTS_ENABLE 16 + +/**************************************************************************//** + @Function FM_SET_FMAN_CTRL_EVENTS_ENABLE + + @Description Used by FM front-end to enable events in the FPM + Fman controller event register. + + @Param[in/out] t_FmIpcFmanEvents Pointer +*//***************************************************************************/ +#define FM_GET_FMAN_CTRL_EVENTS_ENABLE 17 + +/**************************************************************************//** + @Function FM_SET_MAC_MAX_FRAME + + @Description Used by FM front-end to set MAC's MTU/RTU's in + back-end. + + @Param[in/out] t_FmIpcMacMaxFrameParams Pointer +*//***************************************************************************/ +#define FM_SET_MAC_MAX_FRAME 18 + +/**************************************************************************//** + @Function FM_GET_PHYS_MURAM_BASE + + @Description Used by FM front-end in order to get MURAM base address + + @Param[in/out] t_FmIpcPhysAddr Pointer +*//***************************************************************************/ +#define FM_GET_PHYS_MURAM_BASE 19 + +/**************************************************************************//** + @Function FM_MASTER_IS_ALIVE + + @Description Used by FM front-end in order to verify Master is up + + @Param[in/out] bool +*//***************************************************************************/ +#define FM_MASTER_IS_ALIVE 20 + +#define FM_ENABLE_RAM_ECC 21 +#define FM_DISABLE_RAM_ECC 22 +#define FM_SET_NUM_OF_FMAN_CTRL 23 +#define FM_SET_SIZE_OF_FIFO 24 +#define FM_SET_NUM_OF_TASKS 25 +#define FM_SET_NUM_OF_OPEN_DMAS 26 + +#ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 +#define FM_10G_TX_ECC_WA 100 +#endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */ + +/***************************************************************************/ +/************************ BACK-END-TO-FRONT-END*****************************/ +/***************************************************************************/ + +/**************************************************************************//** + @Function FM_GUEST_ISR + + @Description Used by FM back-end to report an interrupt to the front-end. + + @Param[out] t_FmIpcIsr Pointer +*//***************************************************************************/ +#define FM_GUEST_ISR 1 + + + +/** @} */ /* end of FM_IPC_grp group */ +/** @} */ /* end of FM_grp group */ + + +#endif /* __FM_IPC_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/fm_muram.c +++ linux-3.13.0/drivers/net/dpa/NetCommSw/Peripherals/FM/fm_muram.c @@ -0,0 +1,164 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 FM_muram.c + + @Description FM MURAM ... +*//***************************************************************************/ +#include "error_ext.h" +#include "std_ext.h" +#include "mm_ext.h" +#include "string_ext.h" +#include "sprint_ext.h" +#include "fm_muram_ext.h" +#include "fm_common.h" + + +#define __ERR_MODULE__ MODULE_FM_MURAM + + +typedef struct +{ + t_Handle h_Mem; + uintptr_t baseAddr; + uint32_t size; +} t_FmMuram; + + +void FmMuramClear(t_Handle h_FmMuram) +{ + t_FmMuram *p_FmMuram = ( t_FmMuram *)h_FmMuram; + + SANITY_CHECK_RETURN(h_FmMuram, E_INVALID_HANDLE); + IOMemSet32(UINT_TO_PTR(p_FmMuram->baseAddr), 0, p_FmMuram->size); +} + + +t_Handle FM_MURAM_ConfigAndInit(uintptr_t baseAddress, uint32_t size) +{ + t_Handle h_Mem; + t_FmMuram *p_FmMuram; + + if (!baseAddress) + { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("baseAddress 0 is not supported")); + return NULL; + } + + if (baseAddress%4) + { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("baseAddress not 4 bytes aligned!")); + return NULL; + } + + /* Allocate FM MURAM structure */ + p_FmMuram = (t_FmMuram *) XX_Malloc(sizeof(t_FmMuram)); + if (!p_FmMuram) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FM MURAM driver structure")); + return NULL; + } + memset(p_FmMuram, 0, sizeof(t_FmMuram)); + + + if ((MM_Init(&h_Mem, baseAddress, size) != E_OK) || (!h_Mem)) + { + XX_Free(p_FmMuram); + REPORT_ERROR(MAJOR, E_INVALID_HANDLE, ("FM-MURAM partition!!!")); + return NULL; + } + + /* Initialize FM MURAM parameters which will be kept by the driver */ + p_FmMuram->baseAddr = baseAddress; + p_FmMuram->size = size; + p_FmMuram->h_Mem = h_Mem; + + return p_FmMuram; +} + +t_Error FM_MURAM_Free(t_Handle h_FmMuram) +{ + t_FmMuram *p_FmMuram = ( t_FmMuram *)h_FmMuram; + + if (p_FmMuram->h_Mem) + MM_Free(p_FmMuram->h_Mem); + + XX_Free(h_FmMuram); + + return E_OK; +} + +void * FM_MURAM_AllocMem(t_Handle h_FmMuram, uint32_t size, uint32_t align) +{ + t_FmMuram *p_FmMuram = ( t_FmMuram *)h_FmMuram; + uintptr_t addr; + + SANITY_CHECK_RETURN_VALUE(h_FmMuram, E_INVALID_HANDLE, NULL); + SANITY_CHECK_RETURN_VALUE(p_FmMuram->h_Mem, E_INVALID_HANDLE, NULL); + + addr = (uintptr_t)MM_Get(p_FmMuram->h_Mem, size, align ,"FM MURAM"); + + if (addr == ILLEGAL_BASE) + return NULL; + + return UINT_TO_PTR(addr); +} + +void * FM_MURAM_AllocMemForce(t_Handle h_FmMuram, uint64_t base, uint32_t size) +{ + t_FmMuram *p_FmMuram = ( t_FmMuram *)h_FmMuram; + uintptr_t addr; + + SANITY_CHECK_RETURN_VALUE(h_FmMuram, E_INVALID_HANDLE, NULL); + SANITY_CHECK_RETURN_VALUE(p_FmMuram->h_Mem, E_INVALID_HANDLE, NULL); + + addr = (uintptr_t)MM_GetForce(p_FmMuram->h_Mem, base, size, "FM MURAM"); + + if (addr == ILLEGAL_BASE) + return NULL; + + return UINT_TO_PTR(addr); +} + +t_Error FM_MURAM_FreeMem(t_Handle h_FmMuram, void *ptr) +{ + t_FmMuram *p_FmMuram = ( t_FmMuram *)h_FmMuram; + + SANITY_CHECK_RETURN_ERROR(h_FmMuram, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmMuram->h_Mem, E_INVALID_HANDLE); + + if (MM_Put(p_FmMuram->h_Mem, PTR_TO_UINT(ptr)) == 0) + RETURN_ERROR(MINOR, E_INVALID_HANDLE, ("memory pointer!!!")); + + return E_OK; +} --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/inc/fm_common.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/Peripherals/FM/inc/fm_common.h @@ -0,0 +1,1173 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 fm_common.h + + @Description FM internal structures and definitions. +*//***************************************************************************/ +#ifndef __FM_COMMON_H +#define __FM_COMMON_H + +#include "error_ext.h" +#include "std_ext.h" +#include "fm_pcd_ext.h" +#include "fm_port_ext.h" + +#define CLS_PLAN_NUM_PER_GRP 8 + + +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(push,1) +#endif /* defined(__MWERKS__) && ... */ +#define MEM_MAP_START + +/**************************************************************************//** + @Description PCD KG scheme registers +*//***************************************************************************/ +typedef _Packed struct t_FmPcdPlcrInterModuleProfileRegs { + volatile uint32_t fmpl_pemode; /* 0x090 FMPL_PEMODE - FM Policer Profile Entry Mode*/ + volatile uint32_t fmpl_pegnia; /* 0x094 FMPL_PEGNIA - FM Policer Profile Entry GREEN Next Invoked Action*/ + volatile uint32_t fmpl_peynia; /* 0x098 FMPL_PEYNIA - FM Policer Profile Entry YELLOW Next Invoked Action*/ + volatile uint32_t fmpl_pernia; /* 0x09C FMPL_PERNIA - FM Policer Profile Entry RED Next Invoked Action*/ + volatile uint32_t fmpl_pecir; /* 0x0A0 FMPL_PECIR - FM Policer Profile Entry Committed Information Rate*/ + volatile uint32_t fmpl_pecbs; /* 0x0A4 FMPL_PECBS - FM Policer Profile Entry Committed Burst Size*/ + volatile uint32_t fmpl_pepepir_eir; /* 0x0A8 FMPL_PEPIR_EIR - FM Policer Profile Entry Peak/Excess Information Rate*/ + volatile uint32_t fmpl_pepbs_ebs; /* 0x0AC FMPL_PEPBS_EBS - FM Policer Profile Entry Peak/Excess Information Rate*/ + volatile uint32_t fmpl_pelts; /* 0x0B0 FMPL_PELTS - FM Policer Profile Entry Last TimeStamp*/ + volatile uint32_t fmpl_pects; /* 0x0B4 FMPL_PECTS - FM Policer Profile Entry Committed Token Status*/ + volatile uint32_t fmpl_pepts_ets; /* 0x0B8 FMPL_PEPTS_ETS - FM Policer Profile Entry Peak/Excess Token Status*/ + volatile uint32_t fmpl_pegpc; /* 0x0BC FMPL_PEGPC - FM Policer Profile Entry GREEN Packet Counter*/ + volatile uint32_t fmpl_peypc; /* 0x0C0 FMPL_PEYPC - FM Policer Profile Entry YELLOW Packet Counter*/ + volatile uint32_t fmpl_perpc; /* 0x0C4 FMPL_PERPC - FM Policer Profile Entry RED Packet Counter */ + volatile uint32_t fmpl_perypc; /* 0x0C8 FMPL_PERYPC - FM Policer Profile Entry Recolored YELLOW Packet Counter*/ + volatile uint32_t fmpl_perrpc; /* 0x0CC FMPL_PERRPC - FM Policer Profile Entry Recolored RED Packet Counter*/ + volatile uint32_t fmpl_res1[12]; /* 0x0D0-0x0FF Reserved */ +} _PackedType t_FmPcdPlcrInterModuleProfileRegs; + +/**************************************************************************//** + @Description PCD KG scheme registers +*//***************************************************************************/ +typedef _Packed struct t_FmPcdKgInterModuleSchemeRegs { + volatile uint32_t kgse_mode; /**< MODE */ + volatile uint32_t kgse_ekfc; /**< Extract Known Fields Command */ + volatile uint32_t kgse_ekdv; /**< Extract Known Default Value */ + volatile uint32_t kgse_bmch; /**< Bit Mask Command High */ + volatile uint32_t kgse_bmcl; /**< Bit Mask Command Low */ + volatile uint32_t kgse_fqb; /**< Frame Queue Base */ + volatile uint32_t kgse_hc; /**< Hash Command */ + volatile uint32_t kgse_ppc; /**< Policer Profile Command */ + volatile uint32_t kgse_gec[FM_PCD_KG_NUM_OF_GENERIC_REGS]; + /**< Generic Extract Command */ + volatile uint32_t kgse_spc; /**< KeyGen Scheme Entry Statistic Packet Counter */ + volatile uint32_t kgse_dv0; /**< KeyGen Scheme Entry Default Value 0 */ + volatile uint32_t kgse_dv1; /**< KeyGen Scheme Entry Default Value 1 */ + volatile uint32_t kgse_ccbs; /**< KeyGen Scheme Entry Coarse Classification Bit*/ + volatile uint32_t kgse_mv; /**< KeyGen Scheme Entry Match vector */ +} _PackedType t_FmPcdKgInterModuleSchemeRegs; + +typedef _Packed struct t_FmPcdCcCapwapReassmTimeoutParams { + volatile uint32_t portIdAndCapwapReassmTbl; + volatile uint32_t fqidForTimeOutFrames; + volatile uint32_t timeoutRequestTime; +}_PackedType t_FmPcdCcCapwapReassmTimeoutParams; + + + +#define MEM_MAP_END +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(pop) +#endif /* defined(__MWERKS__) && ... */ + + +typedef struct { + uint8_t baseEntry; + uint16_t numOfClsPlanEntries; + uint32_t vectors[FM_PCD_MAX_NUM_OF_CLS_PLANS]; +} t_FmPcdKgInterModuleClsPlanSet; + +/**************************************************************************//** + @Description Structure for binding a port to keygen schemes. +*//***************************************************************************/ +typedef struct t_FmPcdKgInterModuleBindPortToSchemes { + uint8_t hardwarePortId; + uint8_t netEnvId; + bool useClsPlan; /**< TRUE if this port uses the clsPlan mechanism */ + uint8_t numOfSchemes; + uint8_t schemesIds[FM_PCD_KG_NUM_OF_SCHEMES]; +} t_FmPcdKgInterModuleBindPortToSchemes; + +typedef struct { + uint32_t nextCcNodeInfo; + t_List node; +} t_CcNodeInfo; + +typedef struct +{ + t_Handle h_CcNode; + uint16_t index; + t_List node; +}t_CcNodeInformation; +#define CC_NODE_F_OBJECT(ptr) LIST_OBJECT(ptr, t_CcNodeInformation, node) + +typedef struct +{ + t_Handle h_Manip; + t_List node; +}t_ManipInfo; +#define CC_NEXT_NODE_F_OBJECT(ptr) LIST_OBJECT(ptr, t_CcNodeInfo, node) + +typedef struct { + uint32_t type; + uint8_t prOffset; + + uint16_t dataOffset; + uint8_t poolIndex; + + uint8_t poolIdForManip; + uint8_t numOfTasks; + + uint8_t hardwarePortId; + +} t_GetCcParams; + +typedef struct { + uint32_t type; + int psoSize; + uint32_t nia; + +} t_SetCcParams; + +typedef struct { + t_GetCcParams getCcParams; + t_SetCcParams setCcParams; +} t_FmPortGetSetCcParams; + + +static __inline__ bool TRY_LOCK(t_Handle h_Spinlock, volatile bool *p_Flag) +{ + uint32_t intFlags; + if (h_Spinlock) + intFlags = XX_LockIntrSpinlock(h_Spinlock); + else + intFlags = XX_DisableAllIntr(); + if (*p_Flag) + { + if (h_Spinlock) + XX_UnlockIntrSpinlock(h_Spinlock, intFlags); + else + XX_RestoreAllIntr(intFlags); + return FALSE; + } + *p_Flag = TRUE; + if (h_Spinlock) + XX_UnlockIntrSpinlock(h_Spinlock, intFlags); + else + XX_RestoreAllIntr(intFlags); + return TRUE; +} + +#define RELEASE_LOCK(_flag) _flag = FALSE; + +/**************************************************************************//** + @Collection Defines used for manipulation CC and BMI + @{ +*//***************************************************************************/ +#define INTERNAL_CONTEXT_OFFSET 0x80000000 +#define OFFSET_OF_PR 0x40000000 +#define BUFFER_POOL_ID_FOR_MANIP 0x20000000 +#define NUM_OF_TASKS 0x10000000 +#define OFFSET_OF_DATA 0x08000000 +#define HW_PORT_ID 0x04000000 + + +#define UPDATE_NIA_PNEN 0x80000000 +#define UPDATE_PSO 0x40000000 +#define UPDATE_NIA_PNDN 0x20000000 +#define UPDATE_FMFP_PRC_WITH_ONE_RISC_ONLY 0x10000000 +/* @} */ + +/**************************************************************************//** + @Collection Defines used for manipulation CC and CC + @{ +*//***************************************************************************/ +#define UPDATE_NIA_ENQ_WITHOUT_DMA 0x80000000 +#define UPDATE_CC_WITH_TREE 0x40000000 +#define UPDATE_CC_WITH_DELETE_TREE 0x20000000 +/* @} */ + +/**************************************************************************//** + @Collection Defines used for enabling/disabling FM interrupts + @{ +*//***************************************************************************/ +typedef uint32_t t_FmBlockErrIntrEnable; + +#define ERR_INTR_EN_DMA 0x00010000 +#define ERR_INTR_EN_FPM 0x80000000 +#define ERR_INTR_EN_BMI 0x00800000 +#define ERR_INTR_EN_QMI 0x00400000 +#define ERR_INTR_EN_PRS 0x00200000 +#define ERR_INTR_EN_KG 0x00100000 +#define ERR_INTR_EN_PLCR 0x00080000 +#define ERR_INTR_EN_MURAM 0x00040000 +#define ERR_INTR_EN_IRAM 0x00020000 +#define ERR_INTR_EN_10G_MAC0 0x00008000 +#define ERR_INTR_EN_1G_MAC0 0x00004000 +#define ERR_INTR_EN_1G_MAC1 0x00002000 +#define ERR_INTR_EN_1G_MAC2 0x00001000 +#define ERR_INTR_EN_1G_MAC3 0x00000800 +#define ERR_INTR_EN_1G_MAC4 0x00000400 +#define ERR_INTR_EN_MACSEC_MAC0 0x00000200 + + +typedef uint32_t t_FmBlockIntrEnable; + +#define INTR_EN_BMI 0x80000000 +#define INTR_EN_QMI 0x40000000 +#define INTR_EN_PRS 0x20000000 +#define INTR_EN_KG 0x10000000 +#define INTR_EN_PLCR 0x08000000 +#define INTR_EN_1G_MAC0_TMR 0x00080000 +#define INTR_EN_1G_MAC1_TMR 0x00040000 +#define INTR_EN_1G_MAC2_TMR 0x00020000 +#define INTR_EN_1G_MAC3_TMR 0x00010000 +#define INTR_EN_1G_MAC4_TMR 0x00000040 +#define INTR_EN_REV0 0x00008000 +#define INTR_EN_REV1 0x00004000 +#define INTR_EN_REV2 0x00002000 +#define INTR_EN_REV3 0x00001000 +#define INTR_EN_BRK 0x00000080 +#define INTR_EN_TMR 0x01000000 +#define INTR_EN_MACSEC_MAC0 0x00000001 +/* @} */ + +#define FM_MAX_NUM_OF_PORTS (FM_MAX_NUM_OF_OH_PORTS + \ + FM_MAX_NUM_OF_1G_RX_PORTS + \ + FM_MAX_NUM_OF_10G_RX_PORTS + \ + FM_MAX_NUM_OF_1G_TX_PORTS + \ + FM_MAX_NUM_OF_10G_TX_PORTS) + +#define MODULE_NAME_SIZE 30 +#define DUMMY_PORT_ID 0 + +#define FM_LIODN_OFFSET_MASK 0x3FF + +/**************************************************************************//** + @Description NIA Description +*//***************************************************************************/ +#define NIA_ORDER_RESTOR 0x00800000 +#define NIA_ENG_FM_CTL 0x00000000 +#define NIA_ENG_PRS 0x00440000 +#define NIA_ENG_KG 0x00480000 +#define NIA_ENG_PLCR 0x004C0000 +#define NIA_ENG_BMI 0x00500000 +#define NIA_ENG_QMI_ENQ 0x00540000 +#define NIA_ENG_QMI_DEQ 0x00580000 +#define NIA_ENG_MASK 0x007C0000 + +#define NIA_FM_CTL_AC_CC 0x00000006 +#define NIA_FM_CTL_AC_HC 0x0000000C +#define NIA_FM_CTL_AC_IND_MODE_TX 0x00000008 +#define NIA_FM_CTL_AC_IND_MODE_RX 0x0000000A +#define NIA_FM_CTL_AC_FRAG 0x0000000e +#define NIA_FM_CTL_AC_PRE_FETCH 0x00000010 +#define NIA_FM_CTL_AC_POST_FETCH_PCD 0x00000012 +#define NIA_FM_CTL_AC_POST_FETCH_PCD_UDP_LEN 0x00000018 +#define NIA_FM_CTL_AC_POST_FETCH_NO_PCD 0x00000012 +#define NIA_FM_CTL_AC_FRAG_CHECK 0x00000014 +#define NIA_FM_CTL_AC_MASK 0x0000001f + +#define NIA_BMI_AC_ENQ_FRAME 0x00000002 +#define NIA_BMI_AC_TX_RELEASE 0x000002C0 +#define NIA_BMI_AC_RELEASE 0x000000C0 +#define NIA_BMI_AC_DISCARD 0x000000C1 +#define NIA_BMI_AC_TX 0x00000274 +#define NIA_BMI_AC_FETCH 0x00000208 +#define NIA_BMI_AC_MASK 0x000003FF + +#define NIA_KG_DIRECT 0x00000100 +#define NIA_KG_CC_EN 0x00000200 +#define NIA_PLCR_ABSOLUTE 0x00008000 + +#define NIA_BMI_AC_ENQ_FRAME_WITHOUT_DMA 0x00000202 + +/**************************************************************************//** + @Description Port Id defines +*//***************************************************************************/ +#define BASE_OH_PORTID 1 +#define BASE_1G_RX_PORTID 8 +#define BASE_10G_RX_PORTID 0x10 +#define BASE_1G_TX_PORTID 0x28 +#define BASE_10G_TX_PORTID 0x30 + +#define FM_PCD_PORT_OH_BASE_INDX 0 +#define FM_PCD_PORT_1G_RX_BASE_INDX (FM_PCD_PORT_OH_BASE_INDX+FM_MAX_NUM_OF_OH_PORTS) +#define FM_PCD_PORT_10G_RX_BASE_INDX (FM_PCD_PORT_1G_RX_BASE_INDX+FM_MAX_NUM_OF_1G_RX_PORTS) +#define FM_PCD_PORT_1G_TX_BASE_INDX (FM_PCD_PORT_10G_RX_BASE_INDX+FM_MAX_NUM_OF_10G_RX_PORTS) +#define FM_PCD_PORT_10G_TX_BASE_INDX (FM_PCD_PORT_1G_TX_BASE_INDX+FM_MAX_NUM_OF_1G_TX_PORTS) + +#if (FM_MAX_NUM_OF_OH_PORTS > 0) +#define CHECK_PORT_ID_OH_PORTS(_relativePortId) \ + if ((_relativePortId) >= FM_MAX_NUM_OF_OH_PORTS) \ + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal OH_PORT port id")) +#else +#define CHECK_PORT_ID_OH_PORTS(_relativePortId) \ + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal OH_PORT port id")) +#endif +#if (FM_MAX_NUM_OF_1G_RX_PORTS > 0) +#define CHECK_PORT_ID_1G_RX_PORTS(_relativePortId) \ + if ((_relativePortId) >= FM_MAX_NUM_OF_1G_RX_PORTS) \ + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal 1G_RX_PORT port id")) +#else +#define CHECK_PORT_ID_1G_RX_PORTS(_relativePortId) \ + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal 1G_RX_PORT port id")) +#endif +#if (FM_MAX_NUM_OF_10G_RX_PORTS > 0) +#define CHECK_PORT_ID_10G_RX_PORTS(_relativePortId) \ + if ((_relativePortId) >= FM_MAX_NUM_OF_10G_RX_PORTS) \ + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal 10G_RX_PORT port id")) +#else +#define CHECK_PORT_ID_10G_RX_PORTS(_relativePortId) \ + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal 10G_RX_PORT port id")) +#endif +#if (FM_MAX_NUM_OF_1G_TX_PORTS > 0) +#define CHECK_PORT_ID_1G_TX_PORTS(_relativePortId) \ + if ((_relativePortId) >= FM_MAX_NUM_OF_1G_TX_PORTS) \ + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal 1G_TX_PORT port id")) +#else +#define CHECK_PORT_ID_1G_TX_PORTS(_relativePortId) \ + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal 1G_TX_PORT port id")) +#endif +#if (FM_MAX_NUM_OF_10G_TX_PORTS > 0) +#define CHECK_PORT_ID_10G_TX_PORTS(_relativePortId) \ + if ((_relativePortId) >= FM_MAX_NUM_OF_10G_TX_PORTS) \ + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal 10G_TX_PORT port id")) +#else +#define CHECK_PORT_ID_10G_TX_PORTS(_relativePortId) \ + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal 10G_TX_PORT port id")) +#endif + + +#define SW_PORT_ID_TO_HW_PORT_ID(_port, _type, _relativePortId) \ +switch(_type) { \ + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): \ + case(e_FM_PORT_TYPE_OH_HOST_COMMAND): \ + CHECK_PORT_ID_OH_PORTS(_relativePortId); \ + _port = (uint8_t)(BASE_OH_PORTID + (_relativePortId)); \ + break; \ + case(e_FM_PORT_TYPE_RX): \ + CHECK_PORT_ID_1G_RX_PORTS(_relativePortId); \ + _port = (uint8_t)(BASE_1G_RX_PORTID + (_relativePortId)); \ + break; \ + case(e_FM_PORT_TYPE_RX_10G): \ + CHECK_PORT_ID_10G_RX_PORTS(_relativePortId); \ + _port = (uint8_t)(BASE_10G_RX_PORTID + (_relativePortId)); \ + break; \ + case(e_FM_PORT_TYPE_TX): \ + CHECK_PORT_ID_1G_TX_PORTS(_relativePortId); \ + _port = (uint8_t)(BASE_1G_TX_PORTID + (_relativePortId)); \ + break; \ + case(e_FM_PORT_TYPE_TX_10G): \ + CHECK_PORT_ID_10G_TX_PORTS(_relativePortId); \ + _port = (uint8_t)(BASE_10G_TX_PORTID + (_relativePortId)); \ + break; \ + default: \ + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal port type")); \ + _port = 0; \ + break; \ +} + +#define HW_PORT_ID_TO_SW_PORT_ID(_relativePortId, hardwarePortId) \ +{ if (((hardwarePortId) >= BASE_OH_PORTID) && \ + ((hardwarePortId) < BASE_OH_PORTID+FM_MAX_NUM_OF_OH_PORTS)) \ + _relativePortId = (uint8_t)((hardwarePortId)-BASE_OH_PORTID); \ + else if (((hardwarePortId) >= BASE_10G_TX_PORTID) && \ + ((hardwarePortId) < BASE_10G_TX_PORTID+FM_MAX_NUM_OF_10G_TX_PORTS)) \ + _relativePortId = (uint8_t)((hardwarePortId)-BASE_10G_TX_PORTID); \ + else if (((hardwarePortId) >= BASE_1G_TX_PORTID) && \ + ((hardwarePortId) < BASE_1G_TX_PORTID+FM_MAX_NUM_OF_1G_TX_PORTS)) \ + _relativePortId = (uint8_t)((hardwarePortId)-BASE_1G_TX_PORTID); \ + else if (((hardwarePortId) >= BASE_10G_RX_PORTID) && \ + ((hardwarePortId) < BASE_10G_RX_PORTID+FM_MAX_NUM_OF_10G_RX_PORTS)) \ + _relativePortId = (uint8_t)((hardwarePortId)-BASE_10G_RX_PORTID); \ + else if (((hardwarePortId) >= BASE_1G_RX_PORTID) && \ + ((hardwarePortId) < BASE_1G_RX_PORTID+FM_MAX_NUM_OF_1G_RX_PORTS)) \ + _relativePortId = (uint8_t)((hardwarePortId)-BASE_1G_RX_PORTID); \ + else { \ + _relativePortId = (uint8_t)DUMMY_PORT_ID; \ + ASSERT_COND(TRUE); \ + } \ +} + +#define HW_PORT_ID_TO_SW_PORT_INDX(swPortIndex, hardwarePortId) \ +do { \ + if (((hardwarePortId) >= BASE_OH_PORTID) && ((hardwarePortId) < BASE_OH_PORTID+FM_MAX_NUM_OF_OH_PORTS)) \ + swPortIndex = (uint8_t)((hardwarePortId)-BASE_OH_PORTID+FM_PCD_PORT_OH_BASE_INDX); \ + else if (((hardwarePortId) >= BASE_1G_RX_PORTID) && \ + ((hardwarePortId) < BASE_1G_RX_PORTID+FM_MAX_NUM_OF_1G_RX_PORTS)) \ + swPortIndex = (uint8_t)((hardwarePortId)-BASE_1G_RX_PORTID+FM_PCD_PORT_1G_RX_BASE_INDX); \ + else if (((hardwarePortId) >= BASE_10G_RX_PORTID) && \ + ((hardwarePortId) < BASE_10G_RX_PORTID+FM_MAX_NUM_OF_10G_RX_PORTS)) \ + swPortIndex = (uint8_t)((hardwarePortId)-BASE_10G_RX_PORTID+FM_PCD_PORT_10G_RX_BASE_INDX); \ + else if (((hardwarePortId) >= BASE_1G_TX_PORTID) && \ + ((hardwarePortId) < BASE_1G_TX_PORTID+FM_MAX_NUM_OF_1G_TX_PORTS)) \ + swPortIndex = (uint8_t)((hardwarePortId)-BASE_1G_TX_PORTID+FM_PCD_PORT_1G_TX_BASE_INDX); \ + else if (((hardwarePortId) >= BASE_10G_TX_PORTID) && \ + ((hardwarePortId) < BASE_10G_TX_PORTID+FM_MAX_NUM_OF_10G_TX_PORTS)) \ + swPortIndex = (uint8_t)((hardwarePortId)-BASE_10G_TX_PORTID+FM_PCD_PORT_10G_TX_BASE_INDX); \ + else ASSERT_COND(FALSE); \ +} while (0) + +#define SW_PORT_INDX_TO_HW_PORT_ID(hardwarePortId, swPortIndex) \ +do { \ + if (((swPortIndex) >= FM_PCD_PORT_OH_BASE_INDX) && ((swPortIndex) < FM_PCD_PORT_1G_RX_BASE_INDX)) \ + hardwarePortId = (uint8_t)((swPortIndex)-FM_PCD_PORT_OH_BASE_INDX+BASE_OH_PORTID); \ + else if (((swPortIndex) >= FM_PCD_PORT_1G_RX_BASE_INDX) && ((swPortIndex) < FM_PCD_PORT_10G_RX_BASE_INDX)) \ + hardwarePortId = (uint8_t)((swPortIndex)-FM_PCD_PORT_1G_RX_BASE_INDX+BASE_1G_RX_PORTID); \ + else if (((swPortIndex) >= FM_PCD_PORT_10G_RX_BASE_INDX) && ((swPortIndex) < FM_MAX_NUM_OF_PORTS)) \ + hardwarePortId = (uint8_t)((swPortIndex)-FM_PCD_PORT_10G_RX_BASE_INDX+BASE_10G_RX_PORTID); \ + else if (((swPortIndex) >= FM_PCD_PORT_1G_TX_BASE_INDX) && ((swPortIndex) < FM_PCD_PORT_10G_TX_BASE_INDX)) \ + hardwarePortId = (uint8_t)((swPortIndex)-FM_PCD_PORT_1G_TX_BASE_INDX+BASE_1G_TX_PORTID); \ + else if (((swPortIndex) >= FM_PCD_PORT_10G_TX_BASE_INDX) && ((swPortIndex) < FM_MAX_NUM_OF_PORTS)) \ + hardwarePortId = (uint8_t)((swPortIndex)-FM_PCD_PORT_10G_TX_BASE_INDX+BASE_10G_TX_PORTID); \ + else ASSERT_COND(FALSE); \ +} while (0) + +#define BMI_FIFO_UNITS 0x100 + +typedef struct { + void (*f_Isr) (t_Handle h_Arg); + t_Handle h_SrcHandle; + uint8_t guestId; +} t_FmIntrSrc; + +#define ILLEGAL_HDR_NUM 0xFF +#define NO_HDR_NUM FM_PCD_PRS_NUM_OF_HDRS + +#define IS_PRIVATE_HEADER(hdr) (((hdr) == HEADER_TYPE_USER_DEFINED_SHIM1) || \ + ((hdr) == HEADER_TYPE_USER_DEFINED_SHIM2)) +#define IS_SPECIAL_HEADER(hdr) ((hdr) == HEADER_TYPE_MACSEC) + +#define GET_PRS_HDR_NUM(num, hdr) \ +switch(hdr) \ +{ case(HEADER_TYPE_ETH): num = 0; break; \ + case(HEADER_TYPE_LLC_SNAP): num = 1; break; \ + case(HEADER_TYPE_VLAN): num = 2; break; \ + case(HEADER_TYPE_PPPoE): num = 3; break; \ + case(HEADER_TYPE_MPLS): num = 4; break; \ + case(HEADER_TYPE_IPv4): num = 5; break; \ + case(HEADER_TYPE_IPv6): num = 6; break; \ + case(HEADER_TYPE_GRE): num = 7; break; \ + case(HEADER_TYPE_MINENCAP): num = 8; break; \ + case(HEADER_TYPE_USER_DEFINED_L3): num = 9; break; \ + case(HEADER_TYPE_TCP): num = 10; break; \ + case(HEADER_TYPE_UDP): num = 11; break; \ + case(HEADER_TYPE_IPSEC_AH): \ + case(HEADER_TYPE_IPSEC_ESP): num = 12; break; \ + case(HEADER_TYPE_SCTP): num = 13; break; \ + case(HEADER_TYPE_DCCP): num = 14; break; \ + case(HEADER_TYPE_USER_DEFINED_L4): num = 15; break; \ + case(HEADER_TYPE_USER_DEFINED_SHIM1): \ + case(HEADER_TYPE_USER_DEFINED_SHIM2): \ + case(HEADER_TYPE_MACSEC): \ + num = NO_HDR_NUM; break; \ + default: \ + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Unsupported header for parser"));\ + num = ILLEGAL_HDR_NUM; break; \ +} + +/***********************************************************************/ +/* Policer defines */ +/***********************************************************************/ +#define FM_PCD_PLCR_PAR_GO 0x80000000 +#define FM_PCD_PLCR_PAR_PWSEL_MASK 0x0000FFFF +#define FM_PCD_PLCR_PAR_R 0x40000000 + +/* shifts */ +#define FM_PCD_PLCR_PAR_PNUM_SHIFT 16 + + +/***********************************************************************/ +/* Keygen defines */ +/***********************************************************************/ +/* maskes */ +#define KG_SCH_PP_SHIFT_HIGH 0x80000000 +#define KG_SCH_PP_NO_GEN 0x10000000 +#define KG_SCH_PP_SHIFT_LOW 0x0000F000 +#define KG_SCH_MODE_NIA_PLCR 0x40000000 +#define KG_SCH_GEN_EXTRACT_TYPE 0x00008000 +#define KG_SCH_BITMASK_MASK 0x000000FF +#define KG_SCH_GEN_VALID 0x80000000 +#define KG_SCH_GEN_MASK 0x00FF0000 +#define FM_PCD_KG_KGAR_ERR 0x20000000 +#define FM_PCD_KG_KGAR_SEL_CLS_PLAN_ENTRY 0x01000000 +#define FM_PCD_KG_KGAR_SEL_PORT_ENTRY 0x02000000 +#define FM_PCD_KG_KGAR_SEL_PORT_WSEL_SP 0x00008000 +#define FM_PCD_KG_KGAR_SEL_PORT_WSEL_CPP 0x00004000 +#define FM_PCD_KG_KGAR_WSEL_MASK 0x0000FF00 +#define KG_SCH_HASH_CONFIG_NO_FQID 0x80000000 +#define KG_SCH_HASH_CONFIG_SYM 0x40000000 + +#define FM_PCD_KG_KGAR_GO 0x80000000 +#define FM_PCD_KG_KGAR_READ 0x40000000 +#define FM_PCD_KG_KGAR_WRITE 0x00000000 +#define FM_PCD_KG_KGAR_SEL_SCHEME_ENTRY 0x00000000 +#define FM_PCD_KG_KGAR_SCHEME_WSEL_UPDATE_CNT 0x00008000 + + +typedef uint32_t t_KnownFieldsMasks; + +#define KG_SCH_KN_PORT_ID 0x80000000 +#define KG_SCH_KN_MACDST 0x40000000 +#define KG_SCH_KN_MACSRC 0x20000000 +#define KG_SCH_KN_TCI1 0x10000000 +#define KG_SCH_KN_TCI2 0x08000000 +#define KG_SCH_KN_ETYPE 0x04000000 +#define KG_SCH_KN_PPPSID 0x02000000 +#define KG_SCH_KN_PPPID 0x01000000 +#define KG_SCH_KN_MPLS1 0x00800000 +#define KG_SCH_KN_MPLS2 0x00400000 +#define KG_SCH_KN_MPLS_LAST 0x00200000 +#define KG_SCH_KN_IPSRC1 0x00100000 +#define KG_SCH_KN_IPDST1 0x00080000 +#define KG_SCH_KN_PTYPE1 0x00040000 +#define KG_SCH_KN_IPTOS_TC1 0x00020000 +#define KG_SCH_KN_IPV6FL1 0x00010000 +#define KG_SCH_KN_IPSRC2 0x00008000 +#define KG_SCH_KN_IPDST2 0x00004000 +#define KG_SCH_KN_PTYPE2 0x00002000 +#define KG_SCH_KN_IPTOS_TC2 0x00001000 +#define KG_SCH_KN_IPV6FL2 0x00000800 +#define KG_SCH_KN_GREPTYPE 0x00000400 +#define KG_SCH_KN_IPSEC_SPI 0x00000200 +#define KG_SCH_KN_IPSEC_NH 0x00000100 +#define KG_SCH_KN_L4PSRC 0x00000004 +#define KG_SCH_KN_L4PDST 0x00000002 +#define KG_SCH_KN_TFLG 0x00000001 + +typedef uint8_t t_GenericCodes; + +#define KG_SCH_GEN_SHIM1 0x70 +#define KG_SCH_GEN_DEFAULT 0x10 +#define KG_SCH_GEN_PARSE_RESULT_N_FQID 0x20 +#define KG_SCH_GEN_START_OF_FRM 0x40 +#define KG_SCH_GEN_SHIM2 0x71 +#define KG_SCH_GEN_IP_PID_NO_V 0x72 +#define KG_SCH_GEN_ETH 0x03 +#define KG_SCH_GEN_ETH_NO_V 0x73 +#define KG_SCH_GEN_SNAP 0x04 +#define KG_SCH_GEN_SNAP_NO_V 0x74 +#define KG_SCH_GEN_VLAN1 0x05 +#define KG_SCH_GEN_VLAN1_NO_V 0x75 +#define KG_SCH_GEN_VLAN2 0x06 +#define KG_SCH_GEN_VLAN2_NO_V 0x76 +#define KG_SCH_GEN_ETH_TYPE 0x07 +#define KG_SCH_GEN_ETH_TYPE_NO_V 0x77 +#define KG_SCH_GEN_PPP 0x08 +#define KG_SCH_GEN_PPP_NO_V 0x78 +#define KG_SCH_GEN_MPLS1 0x09 +#define KG_SCH_GEN_MPLS2 0x19 +#define KG_SCH_GEN_MPLS3 0x29 +#define KG_SCH_GEN_MPLS1_NO_V 0x79 +#define KG_SCH_GEN_MPLS_LAST 0x0a +#define KG_SCH_GEN_MPLS_LAST_NO_V 0x7a +#define KG_SCH_GEN_IPV4 0x0b +#define KG_SCH_GEN_IPV6 0x1b +#define KG_SCH_GEN_L3_NO_V 0x7b +#define KG_SCH_GEN_IPV4_TUNNELED 0x0c +#define KG_SCH_GEN_IPV6_TUNNELED 0x1c +#define KG_SCH_GEN_MIN_ENCAP 0x2c +#define KG_SCH_GEN_IP2_NO_V 0x7c +#define KG_SCH_GEN_GRE 0x0d +#define KG_SCH_GEN_GRE_NO_V 0x7d +#define KG_SCH_GEN_TCP 0x0e +#define KG_SCH_GEN_UDP 0x1e +#define KG_SCH_GEN_IPSEC_AH 0x2e +#define KG_SCH_GEN_SCTP 0x3e +#define KG_SCH_GEN_DCCP 0x4e +#define KG_SCH_GEN_IPSEC_ESP 0x6e +#define KG_SCH_GEN_L4_NO_V 0x7e +#define KG_SCH_GEN_NEXTHDR 0x7f + +/* shifts */ +#define KG_SCH_PP_SHIFT_HIGH_SHIFT 27 +#define KG_SCH_PP_SHIFT_LOW_SHIFT 12 +#define KG_SCH_PP_MASK_SHIFT 16 +#define KG_SCH_MODE_CCOBASE_SHIFT 24 +#define KG_SCH_DEF_MAC_ADDR_SHIFT 30 +#define KG_SCH_DEF_TCI_SHIFT 28 +#define KG_SCH_DEF_ENET_TYPE_SHIFT 26 +#define KG_SCH_DEF_PPP_SESSION_ID_SHIFT 24 +#define KG_SCH_DEF_PPP_PROTOCOL_ID_SHIFT 22 +#define KG_SCH_DEF_MPLS_LABEL_SHIFT 20 +#define KG_SCH_DEF_IP_ADDR_SHIFT 18 +#define KG_SCH_DEF_PROTOCOL_TYPE_SHIFT 16 +#define KG_SCH_DEF_IP_TOS_TC_SHIFT 14 +#define KG_SCH_DEF_IPV6_FLOW_LABEL_SHIFT 12 +#define KG_SCH_DEF_IPSEC_SPI_SHIFT 10 +#define KG_SCH_DEF_L4_PORT_SHIFT 8 +#define KG_SCH_DEF_TCP_FLAG_SHIFT 6 +#define KG_SCH_HASH_CONFIG_SHIFT_SHIFT 24 +#define KG_SCH_GEN_MASK_SHIFT 16 +#define KG_SCH_GEN_HT_SHIFT 8 +#define KG_SCH_GEN_SIZE_SHIFT 24 +#define KG_SCH_GEN_DEF_SHIFT 29 +#define FM_PCD_KG_KGAR_NUM_SHIFT 16 + + +/* others */ +#define NUM_OF_SW_DEFAULTS 3 +#define MAX_PP_SHIFT 15 +#define MAX_KG_SCH_SIZE 16 +#define MASK_FOR_GENERIC_BASE_ID 0x20 +#define MAX_HASH_SHIFT 40 +#define MAX_KG_SCH_FQID_BIT_OFFSET 31 +#define MAX_KG_SCH_PP_BIT_OFFSET 15 +#define MAX_DIST_FQID_SHIFT 23 + +#define GET_MASK_SEL_SHIFT(shift,i) \ +switch(i) { \ + case(0):shift = 26;break; \ + case(1):shift = 20;break; \ + case(2):shift = 10;break; \ + case(3):shift = 4;break; \ + default: \ + RETURN_ERROR(MAJOR, E_INVALID_VALUE, NO_MSG);\ +} + +#define GET_MASK_OFFSET_SHIFT(shift,i) \ +switch(i) { \ + case(0):shift = 16;break; \ + case(1):shift = 0;break; \ + case(2):shift = 28;break; \ + case(3):shift = 24;break; \ + default: \ + RETURN_ERROR(MAJOR, E_INVALID_VALUE, NO_MSG);\ +} + +#define GET_MASK_SHIFT(shift,i) \ +switch(i) { \ + case(0):shift = 24;break; \ + case(1):shift = 16;break; \ + case(2):shift = 8;break; \ + case(3):shift = 0;break; \ + default: \ + RETURN_ERROR(MAJOR, E_INVALID_VALUE, NO_MSG);\ +} + +#define FM_PCD_MAX_NUM_OF_OPTIONS(clsPlanEntries) ((clsPlanEntries==256)? 8:((clsPlanEntries==128)? 7: ((clsPlanEntries==64)? 6: ((clsPlanEntries==32)? 5:0)))) + +typedef struct { + uint16_t num; + uint8_t hardwarePortId; + uint16_t plcrProfilesBase; +} t_FmPortPcdInterModulePlcrParams; + +/**************************************************************************//** + @Description A structure for initializing a keygen classification plan group +*//***************************************************************************/ +typedef struct t_FmPcdKgInterModuleClsPlanGrpParams { + uint8_t netEnvId; /* IN */ + bool grpExists; /* OUT (unused in FmPcdKgBuildClsPlanGrp)*/ + uint8_t clsPlanGrpId; /* OUT */ + bool emptyClsPlanGrp; /* OUT */ + uint8_t numOfOptions; /* OUT in FmPcdGetSetClsPlanGrpParams IN in FmPcdKgBuildClsPlanGrp*/ + protocolOpt_t options[FM_PCD_MAX_NUM_OF_OPTIONS(FM_PCD_MAX_NUM_OF_CLS_PLANS)]; + /* OUT in FmPcdGetSetClsPlanGrpParams IN in FmPcdKgBuildClsPlanGrp*/ + uint32_t optVectors[FM_PCD_MAX_NUM_OF_OPTIONS(FM_PCD_MAX_NUM_OF_CLS_PLANS)]; + /* OUT in FmPcdGetSetClsPlanGrpParams IN in FmPcdKgBuildClsPlanGrp*/ +} t_FmPcdKgInterModuleClsPlanGrpParams; + +typedef struct t_FmInterModulePortRxPoolsParams +{ + uint8_t numOfPools; + uint16_t secondLargestBufSize; + uint16_t largestBufSize; +} t_FmInterModulePortRxPoolsParams; + + +typedef t_Error (t_FmPortGetSetCcParamsCallback) (t_Handle h_FmPort, + t_FmPortGetSetCcParams *p_FmPortGetSetCcParams); + + +t_Handle FmPcdGetHcHandle(t_Handle h_FmPcd); +uint32_t FmPcdGetSwPrsOffset(t_Handle h_FmPcd, e_NetHeaderType hdr, uint8_t indexPerHdr); +uint32_t FmPcdGetLcv(t_Handle h_FmPcd, uint32_t netEnvId, uint8_t hdrNum); +uint32_t FmPcdGetMacsecLcv(t_Handle h_FmPcd, uint32_t netEnvId); +void FmPcdIncNetEnvOwners(t_Handle h_FmPcd, uint8_t netEnvId); +void FmPcdDecNetEnvOwners(t_Handle h_FmPcd, uint8_t netEnvId); +void FmPcdPortRegister(t_Handle h_FmPcd, t_Handle h_FmPort, uint8_t hardwarePortId); +uint32_t FmPcdLock(t_Handle h_FmPcd); +void FmPcdUnlock(t_Handle h_FmPcd, uint32_t intFlags); +bool FmPcdNetEnvIsHdrExist(t_Handle h_FmPcd, uint8_t netEnvId, e_NetHeaderType hdr); +bool FmPcdIsIpFrag(t_Handle h_FmPcd, uint8_t netEnvId); + +t_Error FmPcdCcReleaseModifiedDataStructure(t_Handle h_FmPcd, t_List *h_FmPcdOldPointersLst, t_List *h_FmPcdNewPointersLst, uint16_t numOfGoodChanges, t_Handle *h_Params); +uint32_t FmPcdCcGetNodeAddrOffset(t_Handle h_FmPcd, t_Handle h_Pointer); +t_Error FmPcdCcRemoveKey(t_Handle h_FmPcd, t_Handle h_FmPcdCcNode, uint8_t keyIndex, t_List *h_OldLst, t_List *h_NewLst, t_Handle *h_AdditionalParams); +t_Error FmPcdCcAddKey(t_Handle h_FmPcd, t_Handle h_CcNode, uint8_t keyIndex, uint8_t keySize, t_FmPcdCcKeyParams *p_FmPCdCcKeyParams, t_List *h_OldLst, t_List *h_NewLst, t_Handle *h_Params); +t_Error FmPcdCcModifyKey(t_Handle h_FmPcd, t_Handle h_CcNode, uint8_t keyIndex, uint8_t keySize, uint8_t *p_Key, uint8_t *p_Mask, t_List *h_OldLst, t_List *h_NewLst, t_Handle *h_AdditionalParams); +t_Error FmPcdCcModifyKeyAndNextEngine(t_Handle h_FmPcd, t_Handle h_FmPcdCcNode, uint8_t keyIndex, uint8_t keySize, t_FmPcdCcKeyParams *p_FmPcdCcKeyParams, t_List *h_OldLst, t_List *h_NewLst, t_Handle *h_AdditionalParams); +t_Error FmPcdCcModifyMissNextEngineParamNode(t_Handle h_FmPcd,t_Handle h_FmPcdCcNode, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams,t_List *h_OldPointer, t_List *h_NewPointer,t_Handle *h_AdditionalParams); +t_Error FmPcdCcModifyNextEngineParamTree(t_Handle h_FmPcd, t_Handle h_FmPcdCcTree, uint8_t grpId, uint8_t index, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams, t_List *h_OldLst, t_List *h_NewLst, t_Handle *h_AdditionalParams); +t_Error FmPcdCcModiyNextEngineParamNode(t_Handle h_FmPcd,t_Handle h_FmPcdCcNode, uint8_t keyIndex,t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams,t_List *h_OldPointer, t_List *h_NewPointer,t_Handle *h_AdditionalParams); +uint32_t FmPcdCcGetNodeAddrOffsetFromNodeInfo(t_Handle h_FmPcd, t_Handle h_Pointer); +t_Error FmPcdCcTreeTryLock(t_Handle h_FmPcdCcTree); +t_Error FmPcdCcNodeTreeTryLock(t_Handle h_FmPcd,t_Handle h_FmPcdCcNode, t_List *p_List); +void FmPcdCcTreeReleaseLock(t_Handle h_FmPcdCcTree); +void FmPcdCcNodeTreeReleaseLock(t_List *p_List); +t_Handle FmPcdCcTreeGetSavedManipParams(t_Handle h_FmTree, uint8_t manipIndx); +void FmPcdCcTreeSetSavedManipParams(t_Handle h_FmTree, t_Handle h_SavedManipParams, uint8_t manipIndx); + +bool FmPcdKgIsSchemeValidSw(t_Handle h_FmPcd, uint8_t schemeId); +uint8_t FmPcdKgGetClsPlanGrpBase(t_Handle h_FmPcd, uint8_t clsPlanGrp); +uint16_t FmPcdKgGetClsPlanGrpSize(t_Handle h_FmPcd, uint8_t clsPlanGrp); + +t_Error FmPcdKgBuildScheme(t_Handle h_FmPcd, t_FmPcdKgSchemeParams *p_Scheme, t_FmPcdKgInterModuleSchemeRegs *p_SchemeRegs); +t_Error FmPcdKgBuildClsPlanGrp(t_Handle h_FmPcd, t_FmPcdKgInterModuleClsPlanGrpParams *p_Grp, t_FmPcdKgInterModuleClsPlanSet *p_ClsPlanSet); +uint8_t FmPcdKgGetNumOfPartitionSchemes(t_Handle h_FmPcd); +uint8_t FmPcdKgGetPhysicalSchemeId(t_Handle h_FmPcd, uint8_t schemeId); +uint8_t FmPcdKgGetRelativeSchemeId(t_Handle h_FmPcd, uint8_t schemeId); +void FmPcdKgDestroyClsPlanGrp(t_Handle h_FmPcd, uint8_t grpId); +void FmPcdKgValidateSchemeSw(t_Handle h_FmPcd, uint8_t schemeId); +void FmPcdKgInvalidateSchemeSw(t_Handle h_FmPcd, uint8_t schemeId); +t_Error FmPcdKgCheckInvalidateSchemeSw(t_Handle h_FmPcd, uint8_t schemeId); +t_Error FmPcdKgBuildBindPortToSchemes(t_Handle h_FmPcd , t_FmPcdKgInterModuleBindPortToSchemes *p_BindPortToSchemes, uint32_t *p_SpReg, bool add); +void FmPcdKgIncSchemeOwners(t_Handle h_FmPcd , t_FmPcdKgInterModuleBindPortToSchemes *p_BindPort); +void FmPcdKgDecSchemeOwners(t_Handle h_FmPcd , t_FmPcdKgInterModuleBindPortToSchemes *p_BindPort); +bool FmPcdKgIsDriverClsPlan(t_Handle h_FmPcd); +bool FmPcdKgHwSchemeIsValid(uint32_t schemeModeReg); +uint32_t FmPcdKgBuildCppReg(t_Handle h_FmPcd, uint8_t clsPlanGrpId); +uint32_t FmPcdKgBuildWriteSchemeActionReg(uint8_t schemeId, bool updateCounter); +uint32_t FmPcdKgBuildReadSchemeActionReg(uint8_t schemeId); +uint32_t FmPcdKgBuildWriteClsPlanBlockActionReg(uint8_t grpId); +uint32_t FmPcdKgBuildReadClsPlanBlockActionReg(uint8_t grpId); +uint32_t FmPcdKgBuildWritePortSchemeBindActionReg(uint8_t hardwarePortId); +uint32_t FmPcdKgBuildReadPortSchemeBindActionReg(uint8_t hardwarePortId); +uint32_t FmPcdKgBuildWritePortClsPlanBindActionReg(uint8_t hardwarePortId); +uint8_t FmPcdKgGetSchemeSwId(t_Handle h_FmPcd, uint8_t schemeHwId); +t_Error FmPcdKgSchemeTryLock(t_Handle h_FmPcd, uint8_t schemeId, bool intr); +void FmPcdKgReleaseSchemeLock(t_Handle h_FmPcd, uint8_t schemeId); +void FmPcdKgUpatePointedOwner(t_Handle h_FmPcd, uint8_t schemeId, bool add); + +t_Error FmPcdKgBindPortToSchemes(t_Handle h_FmPcd , t_FmPcdKgInterModuleBindPortToSchemes *p_SchemeBind); +t_Error FmPcdKgUnbindPortToSchemes(t_Handle h_FmPcd , t_FmPcdKgInterModuleBindPortToSchemes *p_SchemeBind); +uint32_t FmPcdKgGetRequiredAction(t_Handle h_FmPcd, uint8_t schemeId); +uint32_t FmPcdKgGetPointedOwners(t_Handle h_FmPcd, uint8_t schemeId); +e_FmPcdDoneAction FmPcdKgGetDoneAction(t_Handle h_FmPcd, uint8_t schemeId); +e_FmPcdEngine FmPcdKgGetNextEngine(t_Handle h_FmPcd, uint8_t schemeId); +void FmPcdKgUpdateRequiredAction(t_Handle h_FmPcd, uint8_t schemeId, uint32_t requiredAction); +bool FmPcdKgIsDirectPlcr(t_Handle h_FmPcd, uint8_t schemeId); +bool FmPcdKgIsDistrOnPlcrProfile(t_Handle h_FmPcd, uint8_t schemeId); +uint16_t FmPcdKgGetRelativeProfileId(t_Handle h_FmPcd, uint8_t schemeId); + +/* FM-PCD parser API routines */ +t_Error FmPcdPrsIncludePortInStatistics(t_Handle p_FmPcd, uint8_t hardwarePortId, bool include); + +/* FM-PCD policer API routines */ +t_Error FmPcdPlcrAllocProfiles(t_Handle h_FmPcd, uint8_t hardwarePortId, uint16_t numOfProfiles); +t_Error FmPcdPlcrFreeProfiles(t_Handle h_FmPcd, uint8_t hardwarePortId); +bool FmPcdPlcrIsProfileValid(t_Handle h_FmPcd, uint16_t absoluteProfileId); +uint16_t FmPcdPlcrGetPortProfilesBase(t_Handle h_FmPcd, uint8_t hardwarePortId); +uint16_t FmPcdPlcrGetPortNumOfProfiles(t_Handle h_FmPcd, uint8_t hardwarePortId); +uint32_t FmPcdPlcrBuildWritePlcrActionRegs(uint16_t absoluteProfileId); +uint32_t FmPcdPlcrBuildCounterProfileReg(e_FmPcdPlcrProfileCounters counter); +uint32_t FmPcdPlcrBuildWritePlcrActionReg(uint16_t absoluteProfileId); +uint32_t FmPcdPlcrBuildReadPlcrActionReg(uint16_t absoluteProfileId); +t_Error FmPcdPlcrBuildProfile(t_Handle h_FmPcd, t_FmPcdPlcrProfileParams *p_Profile, t_FmPcdPlcrInterModuleProfileRegs *p_PlcrRegs); +t_Error FmPcdPlcrGetAbsoluteProfileId(t_Handle h_FmPcd, + e_FmPcdProfileTypeSelection profileType, + t_Handle h_FmPort, + uint16_t relativeProfile, + uint16_t *p_AbsoluteId); +void FmPcdPlcrInvalidateProfileSw(t_Handle h_FmPcd, uint16_t absoluteProfileId); +void FmPcdPlcrValidateProfileSw(t_Handle h_FmPcd, uint16_t absoluteProfileId); +bool FmPcdPlcrHwProfileIsValid(uint32_t profileModeReg); +t_Error FmPcdPlcrProfileTryLock(t_Handle h_FmPcd, uint16_t profileId, bool intr); +void FmPcdPlcrReleaseProfileLock(t_Handle h_FmPcd, uint16_t profileId); +uint32_t FmPcdPlcrGetRequiredAction(t_Handle h_FmPcd, uint16_t absoluteProfileId); +uint32_t FmPcdPlcrGetPointedOwners(t_Handle h_FmPcd, uint16_t absoluteProfileId); +void FmPcdPlcrUpatePointedOwner(t_Handle h_FmPcd, uint16_t absoluteProfileId, bool add); +uint32_t FmPcdPlcrBuildNiaProfileReg(bool green, bool yellow, bool red); +void FmPcdPlcrUpdateRequiredAction(t_Handle h_FmPcd, uint16_t absoluteProfileId, uint32_t requiredAction); + +/* FM-PCD Coarse-Classification API routines */ +uint8_t FmPcdCcGetParseCode(t_Handle h_CcNode); +uint8_t FmPcdCcGetOffset(t_Handle h_CcNode); + +t_Error FmPcdManipUpdate(t_Handle h_FmPcd, t_Handle h_FmPort, t_Handle h_Manip, t_Handle h_Ad, bool validate, int level, t_Handle h_FmTree, bool modify); +t_Error FmPortGetSetCcParams(t_Handle h_FmPort, t_FmPortGetSetCcParams *p_FmPortGetSetCcParams); +uint32_t FmPcdManipGetRequiredAction (t_Handle h_Manip); +t_Error FmPcdCcBindTree(t_Handle h_FmPcd, t_Handle h_CcTree, uint32_t *p_Offset,t_Handle h_FmPort); +t_Error FmPcdCcUnbindTree(t_Handle h_FmPcd, t_Handle h_CcTree); + +t_Error FmPcdPlcrCcGetSetParams(t_Handle h_FmPcd, uint16_t profileIndx,uint32_t requiredAction); +t_Error FmPcdKgCcGetSetParams(t_Handle h_FmPcd, t_Handle h_Scheme, uint32_t requiredAction); + +uint8_t FmPortGetNetEnvId(t_Handle h_FmPort); +uint8_t FmPortGetHardwarePortId(t_Handle h_FmPort); +uint32_t FmPortGetPcdEngines(t_Handle h_FmPort); +void FmPortPcdKgSwUnbindClsPlanGrp (t_Handle h_FmPort); +t_Error FmPortAttachPCD(t_Handle h_FmPort); +t_Error FmPcdKgSetOrBindToClsPlanGrp(t_Handle h_FmPcd, uint8_t hardwarePortId, uint8_t netEnvId, protocolOpt_t *p_OptArray, uint8_t *p_ClsPlanGrpId, bool *p_IsEmptyClsPlanGrp); +t_Error FmPcdKgDeleteOrUnbindPortToClsPlanGrp(t_Handle h_FmPcd, uint8_t hardwarePortId, uint8_t clsPlanGrpId); + + +/**************************************************************************//** + @Function FmRegisterIntr + + @Description Used to register an inter-module event handler to be processed by FM + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] mod The module that causes the event + @Param[in] modId Module id - if more than 1 instansiation of this + mode exists,0 otherwise. + @Param[in] intrType Interrupt type (error/normal) selection. + @Param[in] f_Isr The interrupt service routine. + @Param[in] h_Arg Argument to be passed to f_Isr. + + @Return None. +*//***************************************************************************/ +void FmRegisterIntr(t_Handle h_Fm, + e_FmEventModules mod, + uint8_t modId, + e_FmIntrType intrType, + void (*f_Isr) (t_Handle h_Arg), + t_Handle h_Arg); + +/**************************************************************************//** + @Function FmUnregisterIntr + + @Description Used to un-register an inter-module event handler that was processed by FM + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] mod The module that causes the event + @Param[in] modId Module id - if more than 1 instansiation of this + mode exists,0 otherwise. + @Param[in] intrType Interrupt type (error/normal) selection. + + @Return None. +*//***************************************************************************/ +void FmUnregisterIntr(t_Handle h_Fm, + e_FmEventModules mod, + uint8_t modId, + e_FmIntrType intrType); + +/**************************************************************************//** + @Function FmRegisterFmCtlIntr + + @Description Used to register to one of the fmCtl events in the FM module + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] eventRegId FmCtl event id (0-7). + @Param[in] f_Isr The interrupt service routine. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +void FmRegisterFmCtlIntr(t_Handle h_Fm, uint8_t eventRegId, void (*f_Isr) (t_Handle h_Fm, uint32_t event)); + + +/**************************************************************************//** + @Description enum for defining MAC types +*//***************************************************************************/ +typedef enum e_FmMacType { + e_FM_MAC_10G = 0, /**< 10G MAC */ + e_FM_MAC_1G /**< 1G MAC */ +} e_FmMacType; + +/**************************************************************************//** + @Description Structure for port-FM communication during FM_PORT_Init. + Fields commented 'IN' are passed by the port module to be used + by the FM module. + Fields commented 'OUT' will be filled by FM before returning to port. + Some fields are optional (depending on configuration) and + will be analized by the port and FM modules accordingly. +*//***************************************************************************/ +typedef struct t_FmInterModulePortInitParams { + uint8_t hardwarePortId; /**< IN. port Id */ + e_FmPortType portType; /**< IN. Port type */ + bool independentMode; /**< IN. TRUE if FM Port operates in independent mode */ + uint16_t liodnOffset; /**< IN. Port's requested resource */ + uint8_t numOfTasks; /**< IN. Port's requested resource */ + uint8_t numOfExtraTasks; /**< IN. Port's requested resource */ + uint8_t numOfOpenDmas; /**< IN. Port's requested resource */ + uint8_t numOfExtraOpenDmas; /**< IN. Port's requested resource */ + uint32_t sizeOfFifo; /**< IN. Port's requested resource */ + uint32_t extraSizeOfFifo; /**< IN. Port's requested resource */ + uint8_t deqPipelineDepth; /**< IN. Port's requested resource */ + uint16_t liodnBase; /**< IN. Irrelevant for P4080 rev 1. + LIODN base for this port, to be + used together with LIODN offset. */ + t_FmPhysAddr fmMuramPhysBaseAddr;/**< OUT. FM-MURAM physical address*/ +} t_FmInterModulePortInitParams; + +/**************************************************************************//** + @Description Structure for port-FM communication during FM_PORT_Free. +*//***************************************************************************/ +typedef struct t_FmInterModulePortFreeParams { + uint8_t hardwarePortId; /**< IN. port Id */ + e_FmPortType portType; /**< IN. Port type */ +#ifdef FM_QMI_DEQ_OPTIONS_SUPPORT + uint8_t deqPipelineDepth; /**< IN. Port's requested resource */ +#endif /* FM_QMI_DEQ_OPTIONS_SUPPORT */ +} t_FmInterModulePortFreeParams; + +/**************************************************************************//** + @Function FmGetPcdPrsBaseAddr + + @Description Get the base address of the Parser from the FM module + + @Param[in] h_Fm A handle to an FM Module. + + @Return Base address. +*//***************************************************************************/ +uintptr_t FmGetPcdPrsBaseAddr(t_Handle h_Fm); + +/**************************************************************************//** + @Function FmGetPcdKgBaseAddr + + @Description Get the base address of the Keygen from the FM module + + @Param[in] h_Fm A handle to an FM Module. + + @Return Base address. +*//***************************************************************************/ +uintptr_t FmGetPcdKgBaseAddr(t_Handle h_Fm); + +/**************************************************************************//** + @Function FmGetPcdPlcrBaseAddr + + @Description Get the base address of the Policer from the FM module + + @Param[in] h_Fm A handle to an FM Module. + + @Return Base address. +*//***************************************************************************/ +uintptr_t FmGetPcdPlcrBaseAddr(t_Handle h_Fm); + +/**************************************************************************//** + @Function FmGetMuramHandle + + @Description Get the handle of the MURAM from the FM module + + @Param[in] h_Fm A handle to an FM Module. + + @Return MURAM module handle. +*//***************************************************************************/ +t_Handle FmGetMuramHandle(t_Handle h_Fm); + +/**************************************************************************//** + @Function FmGetPhysicalMuramBase + + @Description Get the physical base address of the MURAM from the FM module + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] fmPhysAddr Physical MURAM base + + @Return Physical base address. +*//***************************************************************************/ +void FmGetPhysicalMuramBase(t_Handle h_Fm, t_FmPhysAddr *fmPhysAddr); + +/**************************************************************************//** + @Function FmGetTimeStampScale + + @Description Used internally by other modules in order to get the timeStamp + period as requested by the application. + + @Param[in] h_Fm A handle to an FM Module. + + @Return TimeStamp period in nanoseconds. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +uint32_t FmGetTimeStampScale(t_Handle h_Fm); + +/**************************************************************************//** + @Function FmResumeStalledPort + + @Description Used internally by FM port to release a stalled port. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] hardwarePortId HW port id. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +t_Error FmResumeStalledPort(t_Handle h_Fm, uint8_t hardwarePortId); + +/**************************************************************************//** + @Function FmIsPortStalled + + @Description Used internally by FM port to read the port's status. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] hardwarePortId HW port id. + @Param[in] p_IsStalled A pointer to the boolean port stalled state + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +t_Error FmIsPortStalled(t_Handle h_Fm, uint8_t hardwarePortId, bool *p_IsStalled); + +/**************************************************************************//** + @Function FmResetMac + + @Description Used by MAC driver to reset the MAC registers + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] type MAC type. + @Param[in] macId MAC id - according to type. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +t_Error FmResetMac(t_Handle h_Fm, e_FmMacType type, uint8_t macId); + +/**************************************************************************//** + @Function FmGetClockFreq + + @Description Used by MAC driver to get the FM clock frequency + + @Param[in] h_Fm A handle to an FM Module. + + @Return clock-freq on success; 0 otherwise. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +uint16_t FmGetClockFreq(t_Handle h_Fm); + +/**************************************************************************//** + @Function FmGetId + + @Description Used by PCD driver to read rhe FM id + + @Param[in] h_Fm A handle to an FM Module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +uint8_t FmGetId(t_Handle h_Fm); + +/**************************************************************************//** + @Function FmGetSetPortParams + + @Description Used by FM-PORT driver to pass and receive parameters between + PORT and FM modules. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in,out] p_PortParams A structure of FM Port parameters. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +t_Error FmGetSetPortParams(t_Handle h_Fm,t_FmInterModulePortInitParams *p_PortParams); + +/**************************************************************************//** + @Function FmFreePortParams + + @Description Used by FM-PORT driver to free port's resources within the FM. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in,out] p_PortParams A structure of FM Port parameters. + + @Return None. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +void FmFreePortParams(t_Handle h_Fm,t_FmInterModulePortFreeParams *p_PortParams); + +/**************************************************************************//** + @Function FmSetPortToWorkWithOneRiscOnly + + @Description Used by FM-PORT driver to pass parameter between + PORT and FM modules for working with number of RISC.. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in,out] p_PortParams A structure of FM Port parameters. + + @Return None. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +t_Error FmSetNumOfRiscsPerPort(t_Handle h_Fm, uint8_t hardwarePortId, uint8_t numOfFmanCtrls); + + +void FmRegisterPcd(t_Handle h_Fm, t_Handle h_FmPcd); +void FmUnregisterPcd(t_Handle h_Fm); +t_Handle FmGetPcdHandle(t_Handle h_Fm); +bool FmRamsEccIsExternalCtl(t_Handle h_Fm); +t_Error FmEnableRamsEcc(t_Handle h_Fm); +t_Error FmDisableRamsEcc(t_Handle h_Fm); +void FmGetRevision(t_Handle h_Fm, t_FmRevisionInfo *p_FmRevisionInfo); +t_Error FmAllocFmanCtrlEventReg(t_Handle h_Fm, uint8_t *p_EventId); +void FmFreeFmanCtrlEventReg(t_Handle h_Fm, uint8_t eventId); +void FmSetFmanCtrlIntr(t_Handle h_Fm, uint8_t eventRegId, uint32_t enableEvents); +uint32_t FmGetFmanCtrlIntr(t_Handle h_Fm, uint8_t eventRegId); +void FmRegisterFmanCtrlIntr(t_Handle h_Fm, uint8_t eventRegId, void (*f_Isr) (t_Handle h_Fm, uint32_t event), t_Handle h_Arg); +void FmUnregisterFmanCtrlIntr(t_Handle h_Fm, uint8_t eventRegId); +t_Error FmSetMacMaxFrame(t_Handle h_Fm, e_FmMacType type, uint8_t macId, uint16_t mtu); +bool FmIsMaster(t_Handle h_Fm); +uint8_t FmGetGuestId(t_Handle h_Fm); +#ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 +t_Error Fm10GTxEccWorkaround(t_Handle h_Fm, uint8_t macId); +#endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */ + +void FmMuramClear(t_Handle h_FmMuram); +t_Error FmSetNumOfOpenDmas(t_Handle h_Fm, + uint8_t hardwarePortId, + uint8_t numOfOpenDmas, + uint8_t numOfExtraOpenDmas, + bool initialConfig); +t_Error FmSetNumOfTasks(t_Handle h_Fm, + uint8_t hardwarePortId, + uint8_t numOfTasks, + uint8_t numOfExtraTasks, + bool initialConfig); +t_Error FmSetSizeOfFifo(t_Handle h_Fm, + uint8_t hardwarePortId, + e_FmPortType portType, + bool independentMode, + uint32_t *p_SizeOfFifo, + uint32_t extraSizeOfFifo, + uint8_t deqPipelineDepth, + t_FmInterModulePortRxPoolsParams *p_RxPoolsParams, + bool initialConfig); + + +#endif /* __FM_COMMON_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/inc/fm_hc.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/Peripherals/FM/inc/fm_hc.h @@ -0,0 +1,86 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 __FM_HC_H +#define __FM_HC_H + +#include "std_ext.h" +#include "error_ext.h" + + +#define __ERR_MODULE__ MODULE_FM_PCD + + +typedef struct t_FmHcParams { + t_Handle h_Fm; + t_Handle h_FmPcd; + t_FmPcdHcParams params; +} t_FmHcParams; + + +t_Handle FmHcConfigAndInit(t_FmHcParams *p_FmHcParams); +void FmHcFree(t_Handle h_FmHc); +t_Error FmHcDumpRegs(t_Handle h_FmHc); + +void FmHcTxConf(t_Handle h_FmHc, t_DpaaFD *p_Fd); + +t_Handle FmHcPcdKgSetScheme(t_Handle h_FmHc, t_FmPcdKgSchemeParams *p_Scheme); +t_Error FmHcPcdKgDeleteScheme(t_Handle h_FmHc, t_Handle h_Scheme); +t_Error FmHcPcdCcCapwapTimeoutReassm(t_Handle h_FmHc, t_FmPcdCcCapwapReassmTimeoutParams *p_CcCapwapReassmTimeoutParams ); +t_Error FmHcPcdKgSetClsPlan(t_Handle h_FmHc, t_FmPcdKgInterModuleClsPlanSet *p_Set); +t_Error FmHcPcdKgDeleteClsPlan(t_Handle h_FmHc, uint8_t clsPlanGrpId); + +t_Error FmHcPcdKgSetSchemeCounter(t_Handle h_FmHc, t_Handle h_Scheme, uint32_t value); +uint32_t FmHcPcdKgGetSchemeCounter(t_Handle h_FmHc, t_Handle h_Scheme); + +t_Error FmHcPcdCcModifyTreeNextEngine(t_Handle h_FmHc, t_Handle h_CcTree, uint8_t grpId, uint8_t index, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams); +t_Error FmHcPcdCcModifyNodeNextEngine(t_Handle h_FmHc, t_Handle h_CcNode, uint8_t keyIndex, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams); +t_Error FmHcPcdCcModifyNodeMissNextEngine(t_Handle h_FmHc, t_Handle h_CcNode, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams); +t_Error FmHcPcdCcRemoveKey(t_Handle h_FmHc, t_Handle h_CcNode, uint8_t keyIndex); +t_Error FmHcPcdCcAddKey(t_Handle h_FmHc, t_Handle h_CcNode, uint8_t keyIndex, uint8_t keySize, t_FmPcdCcKeyParams *p_KeyParams); +t_Error FmHcPcdCcModifyKeyAndNextEngine(t_Handle h_FmHc, t_Handle h_CcNode, uint8_t keyIndex, uint8_t keySize, t_FmPcdCcKeyParams *p_KeyParams); +t_Error FmHcPcdCcModifyKey(t_Handle h_FmHc, t_Handle h_CcNode, uint8_t keyIndex, uint8_t keySize, uint8_t *p_Key, uint8_t *p_Mask); + +t_Handle FmHcPcdPlcrSetProfile(t_Handle h_FmHc,t_FmPcdPlcrProfileParams *p_Profile); +t_Error FmHcPcdPlcrDeleteProfile(t_Handle h_FmHc, t_Handle h_Profile); + +t_Error FmHcPcdPlcrSetProfileCounter(t_Handle h_FmHc, t_Handle h_Profile, e_FmPcdPlcrProfileCounters counter, uint32_t value); +uint32_t FmHcPcdPlcrGetProfileCounter(t_Handle h_FmHc, t_Handle h_Profile, e_FmPcdPlcrProfileCounters counter); + +t_Error FmHcKgWriteSp(t_Handle h_FmHc, uint8_t hardwarePortId, uint32_t spReg, bool add); +t_Error FmHcKgWriteCpp(t_Handle h_FmHc, uint8_t hardwarePortId, uint32_t cppReg); + +t_Error FmHcPcdKgCcGetSetParams(t_Handle h_FmHc, t_Handle h_Scheme, uint32_t requiredAction); +t_Error FmHcPcdPlcrCcGetSetParams(t_Handle h_FmHc,uint16_t absoluteProfileId, uint32_t requiredAction); + + +#endif /* __FM_HC_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/etc/Makefile +++ linux-3.13.0/drivers/net/dpa/NetCommSw/etc/Makefile @@ -0,0 +1,11 @@ +# +# Makefile for the Freescale Ethernet controllers +# +EXTRA_CFLAGS += -DVERSION=\"\" +# +#Include netcomm SW specific definitions +include $(srctree)/drivers/net/dpa/NetCommSw/ncsw_config.mk + +obj-y += fsl-ncsw-etc.o + +fsl-ncsw-etc-objs := mm.o memcpy.o sprint.o list.o error.o --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/etc/error.c +++ linux-3.13.0/drivers/net/dpa/NetCommSw/etc/error.c @@ -0,0 +1,118 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 error.c + + @Description General errors and events reporting utilities. +*//***************************************************************************/ + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) + +const char *dbgLevelStrings[] = +{ + "CRITICAL" + ,"MAJOR" + ,"MINOR" + ,"WARNING" + ,"INFO" + ,"TRACE" +}; + +const char *errTypeStrings[] = +{ + "Invalid State" /* E_INVALID_STATE */ + ,"Invalid Operation" /* E_INVALID_OPERATION */ + ,"Unsupported Operation" /* E_NOT_SUPPORTED */ + ,"No Device" /* E_NO_DEVICE */ + ,"Invalid Handle" /* E_INVALID_HANDLE */ + ,"Invalid ID" /* E_INVALID_ID */ + ,"Unexpected NULL Pointer" /* E_NULL_POINTER */ + ,"Invalid Value" /* E_INVALID_VALUE */ + ,"Invalid Selection" /* E_INVALID_SELECTION */ + ,"Invalid Communication Mode" /* E_INVALID_COMM_MODE */ + ,"Invalid Byte Order" /* E_INVALID_BYTE_ORDER */ + ,"Invalid Memory Type" /* E_INVALID_MEMORY_TYPE */ + ,"Invalid Interrupt Queue" /* E_INVALID_INTR_QUEUE */ + ,"Invalid Priority" /* E_INVALID_PRIORITY */ + ,"Invalid Clock" /* E_INVALID_CLOCK */ + ,"Invalid Rate" /* E_INVALID_RATE */ + ,"Invalid Address" /* E_INVALID_ADDRESS */ + ,"Invalid Bus" /* E_INVALID_BUS */ + ,"Conflict In Bus Selection" /* E_BUS_CONFLICT */ + ,"Conflict In Settings" /* E_CONFLICT */ + ,"Incorrect Alignment" /* E_NOT_ALIGNED */ + ,"Value Out Of Range" /* E_NOT_IN_RANGE */ + ,"Invalid Frame" /* E_INVALID_FRAME */ + ,"Frame Is Empty" /* E_EMPTY_FRAME */ + ,"Buffer Is Empty" /* E_EMPTY_BUFFER */ + ,"Memory Allocation Failed" /* E_NO_MEMORY */ + ,"Resource Not Found" /* E_NOT_FOUND */ + ,"Resource Is Unavailable" /* E_NOT_AVAILABLE */ + ,"Resource Already Exists" /* E_ALREADY_EXISTS */ + ,"Resource Is Full" /* E_FULL */ + ,"Resource Is Empty" /* E_EMPTY */ + ,"Resource Is Busy" /* E_BUSY */ + ,"Resource Already Free" /* E_ALREADY_FREE */ + ,"Read Access Failed" /* E_READ_FAILED */ + ,"Write Access Failed" /* E_WRITE_FAILED */ + ,"Send Operation Failed" /* E_SEND_FAILED */ + ,"Receive Operation Failed" /* E_RECEIVE_FAILED */ + ,"Operation Timed Out" /* E_TIMEOUT */ +}; + + +#if (defined(REPORT_EVENTS) && (REPORT_EVENTS > 0)) + +const char *eventStrings[] = +{ + "Rx Discard" /* EV_RX_DISCARD */ + ,"Rx Error" /* EV_RX_ERROR */ + ,"Tx Error" /* EV_TX_ERROR */ + ,"No Buffer Objects" /* EV_NO_BUFFERS */ + ,"No MB-Frame Objects" /* EV_NO_MB_FRAMES */ + ,"No SB-Frame Objects" /* EV_NO_SB_FRAMES */ + ,"Tx Queue Is Full" /* EV_TX_QUEUE_FULL */ + ,"Rx Queue Is Full" /* EV_RX_QUEUE_FULL */ + ,"Interrupts Queue Is Full" /* EV_INTR_QUEUE_FULL */ + ,"Data Buffer Is Unavailable" /* EV_NO_DATA_BUFFER */ + ,"Objects Pool Is Empty" /* EV_OBJ_POOL_EMPTY */ + ,"Illegal bus access" /* EV_BUS_ERROR */ + ,"PTP Tx Timestamps Queue Is Full" /* EV_PTP_TXTS_QUEUE_FULL */ + ,"PTP Rx Timestamps Queue Is Full" /* EV_PTP_RXTS_QUEUE_FULL */ +}; + +#endif /* (defined(REPORT_EVENTS) && (REPORT_EVENTS > 0)) */ + +#endif /* (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) */ + --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/etc/list.c +++ linux-3.13.0/drivers/net/dpa/NetCommSw/etc/list.c @@ -0,0 +1,70 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 list.c + + @Description Implementation of list. +*//***************************************************************************/ +#include "std_ext.h" +#include "list_ext.h" + + +void LIST_Append(t_List *p_NewList, t_List *p_Head) +{ + t_List *p_First = LIST_FIRST(p_NewList); + + if (p_First != p_NewList) + { + t_List *p_Last = LIST_LAST(p_NewList); + t_List *p_Cur = LIST_NEXT(p_Head); + + LIST_PREV(p_First) = p_Head; + LIST_FIRST(p_Head) = p_First; + LIST_NEXT(p_Last) = p_Cur; + LIST_LAST(p_Cur) = p_Last; + } +} + + +int LIST_NumOfObjs(t_List *p_List) +{ + t_List *p_Tmp; + int numOfObjs = 0; + + if (!LIST_IsEmpty(p_List)) + LIST_FOR_EACH(p_Tmp, p_List) + numOfObjs++; + + return numOfObjs; +} --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/etc/memcpy.c +++ linux-3.13.0/drivers/net/dpa/NetCommSw/etc/memcpy.c @@ -0,0 +1,665 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 "std_ext.h" +#include "xx_ext.h" +#include "memcpy_ext.h" + + +#ifdef CORE_8BIT_ACCESS_ERRATA +static void MY_MY_WRITE_UINT8(uint8_t *addr, uint8_t val) +{ + uint32_t newAddr, newVal; + newAddr = (uint32_t)addr & ~0x3L; + switch ((uint32_t)addr%4) + { + case (0): + newVal = GET_UINT32(*(uint32_t*)newAddr); + newVal = (newVal & 0x00ffffff) | (((uint32_t)val)<<24); + WRITE_UINT32(*(uint32_t*)newAddr, newVal); + break; + case (1): + newVal = GET_UINT32(*(uint32_t*)newAddr); + newVal = (newVal & 0xff00ffff) | (((uint32_t)val)<<16); + WRITE_UINT32(*(uint32_t*)newAddr, newVal); + break; + case (2): + newVal = GET_UINT32(*(uint32_t*)newAddr); + newVal = (newVal & 0xffff00ff) | (((uint32_t)val)<<8); + WRITE_UINT32(*(uint32_t*)newAddr, newVal); + break; + case (3): + newVal = GET_UINT32(*(uint32_t*)newAddr); + newVal = (newVal & 0xffffff00) | val; + WRITE_UINT32(*(uint32_t*)newAddr, newVal); + break; + } +} + +static uint8_t MY_MY_GET_UINT8(uint8_t *addr) +{ + uint32_t newAddr, newVal=0; + newAddr = (uint32_t)addr & ~0x3L; + switch ((uint32_t)addr%4) + { + case (0): + newVal = GET_UINT32(*(uint32_t*)newAddr); + newVal = (newVal & 0xff000000)>>24; + break; + case (1): + newVal = GET_UINT32(*(uint32_t*)newAddr); + newVal = (newVal & 0x00ff0000)>>16; + break; + case (2): + newVal = GET_UINT32(*(uint32_t*)newAddr); + newVal = (newVal & 0x0000ff00)>>8; + break; + case (3): + newVal = GET_UINT32(*(uint32_t*)newAddr); + newVal = (newVal & 0x000000ff); + break; + } + + return (uint8_t)newVal; +} + +#define MY_WRITE_UINT8(addr,val) MY_MY_WRITE_UINT8(&addr,val) +#define MY_GET_UINT8(addr) MY_MY_GET_UINT8(&addr) +#else +#define MY_WRITE_UINT8 WRITE_UINT8 +#define MY_GET_UINT8 GET_UINT8 +#endif /* CORE_8BIT_ACCESS_ERRATA */ + + +void * MemCpy32(void* pDst,void* pSrc, uint32_t size) +{ + uint32_t leftAlign; + uint32_t rightAlign; + uint32_t lastWord; + uint32_t currWord; + uint32_t *p_Src32; + uint32_t *p_Dst32; + uint8_t *p_Src8; + uint8_t *p_Dst8; + + p_Src8 = (uint8_t*)(pSrc); + p_Dst8 = (uint8_t*)(pDst); + /* first copy byte by byte till the source first alignment + * this step is necessary to ensure we do not even try to access + * data which is before the source buffer, hence it is not ours. + */ + while((PTR_TO_UINT(p_Src8) & 3) && size) /* (pSrc mod 4) > 0 and size > 0 */ + { + *p_Dst8++ = *p_Src8++; + size--; + } + + /* align destination (possibly disaligning source)*/ + while((PTR_TO_UINT(p_Dst8) & 3) && size) /* (pDst mod 4) > 0 and size > 0 */ + { + *p_Dst8++ = *p_Src8++; + size--; + } + + /* dest is aligned and source is not necessarily aligned */ + leftAlign = (uint32_t)((PTR_TO_UINT(p_Src8) & 3) << 3); /* leftAlign = (pSrc mod 4)*8 */ + rightAlign = 32 - leftAlign; + + + if (leftAlign == 0) + { + /* source is also aligned */ + p_Src32 = (uint32_t*)(p_Src8); + p_Dst32 = (uint32_t*)(p_Dst8); + while (size >> 2) /* size >= 4 */ + { + *p_Dst32++ = *p_Src32++; + size -= 4; + } + p_Src8 = (uint8_t*)(p_Src32); + p_Dst8 = (uint8_t*)(p_Dst32); + } + else + { + /* source is not aligned (destination is aligned)*/ + p_Src32 = (uint32_t*)(p_Src8 - (leftAlign >> 3)); + p_Dst32 = (uint32_t*)(p_Dst8); + lastWord = *p_Src32++; + while(size >> 3) /* size >= 8 */ + { + currWord = *p_Src32; + *p_Dst32 = (lastWord << leftAlign) | (currWord >> rightAlign); + lastWord = currWord; + p_Src32++; + p_Dst32++; + size -= 4; + } + p_Dst8 = (uint8_t*)(p_Dst32); + p_Src8 = (uint8_t*)(p_Src32) - 4 + (leftAlign >> 3); + } + + /* complete the left overs */ + while (size--) + *p_Dst8++ = *p_Src8++; + + return pDst; +} + +void * IO2IOCpy32(void* pDst,void* pSrc, uint32_t size) +{ + uint32_t leftAlign; + uint32_t rightAlign; + uint32_t lastWord; + uint32_t currWord; + uint32_t *p_Src32; + uint32_t *p_Dst32; + uint8_t *p_Src8; + uint8_t *p_Dst8; + + p_Src8 = (uint8_t*)(pSrc); + p_Dst8 = (uint8_t*)(pDst); + /* first copy byte by byte till the source first alignment + * this step is necessary to ensure we do not even try to access + * data which is before the source buffer, hence it is not ours. + */ + while((PTR_TO_UINT(p_Src8) & 3) && size) /* (pSrc mod 4) > 0 and size > 0 */ + { + MY_WRITE_UINT8(*p_Dst8, MY_GET_UINT8(*p_Src8)); + p_Dst8++;p_Src8++; + size--; + } + + /* align destination (possibly disaligning source)*/ + while((PTR_TO_UINT(p_Dst8) & 3) && size) /* (pDst mod 4) > 0 and size > 0 */ + { + MY_WRITE_UINT8(*p_Dst8, MY_GET_UINT8(*p_Src8)); + p_Dst8++;p_Src8++; + size--; + } + + /* dest is aligned and source is not necessarily aligned */ + leftAlign = (uint32_t)((PTR_TO_UINT(p_Src8) & 3) << 3); /* leftAlign = (pSrc mod 4)*8 */ + rightAlign = 32 - leftAlign; + + if (leftAlign == 0) + { + /* source is also aligned */ + p_Src32 = (uint32_t*)(p_Src8); + p_Dst32 = (uint32_t*)(p_Dst8); + while (size >> 2) /* size >= 4 */ + { + WRITE_UINT32(*p_Dst32, GET_UINT32(*p_Src32)); + p_Dst32++;p_Src32++; + size -= 4; + } + p_Src8 = (uint8_t*)(p_Src32); + p_Dst8 = (uint8_t*)(p_Dst32); + } + else + { + /* source is not aligned (destination is aligned)*/ + p_Src32 = (uint32_t*)(p_Src8 - (leftAlign >> 3)); + p_Dst32 = (uint32_t*)(p_Dst8); + lastWord = GET_UINT32(*p_Src32); + p_Src32++; + while(size >> 3) /* size >= 8 */ + { + currWord = GET_UINT32(*p_Src32); + WRITE_UINT32(*p_Dst32, (lastWord << leftAlign) | (currWord >> rightAlign)); + lastWord = currWord; + p_Src32++;p_Dst32++; + size -= 4; + } + p_Dst8 = (uint8_t*)(p_Dst32); + p_Src8 = (uint8_t*)(p_Src32) - 4 + (leftAlign >> 3); + } + + /* complete the left overs */ + while (size--) + { + MY_WRITE_UINT8(*p_Dst8, MY_GET_UINT8(*p_Src8)); + p_Dst8++;p_Src8++; + } + + return pDst; +} + +void * Mem2IOCpy32(void* pDst,void* pSrc, uint32_t size) +{ + uint32_t leftAlign; + uint32_t rightAlign; + uint32_t lastWord; + uint32_t currWord; + uint32_t *p_Src32; + uint32_t *p_Dst32; + uint8_t *p_Src8; + uint8_t *p_Dst8; + + p_Src8 = (uint8_t*)(pSrc); + p_Dst8 = (uint8_t*)(pDst); + /* first copy byte by byte till the source first alignment + * this step is necessary to ensure we do not even try to access + * data which is before the source buffer, hence it is not ours. + */ + while((PTR_TO_UINT(p_Src8) & 3) && size) /* (pSrc mod 4) > 0 and size > 0 */ + { + MY_WRITE_UINT8(*p_Dst8, *p_Src8); + p_Dst8++;p_Src8++; + size--; + } + + /* align destination (possibly disaligning source)*/ + while((PTR_TO_UINT(p_Dst8) & 3) && size) /* (pDst mod 4) > 0 and size > 0 */ + { + MY_WRITE_UINT8(*p_Dst8, *p_Src8); + p_Dst8++;p_Src8++; + size--; + } + + /* dest is aligned and source is not necessarily aligned */ + leftAlign = (uint32_t)((PTR_TO_UINT(p_Src8) & 3) << 3); /* leftAlign = (pSrc mod 4)*8 */ + rightAlign = 32 - leftAlign; + + if (leftAlign == 0) + { + /* source is also aligned */ + p_Src32 = (uint32_t*)(p_Src8); + p_Dst32 = (uint32_t*)(p_Dst8); + while (size >> 2) /* size >= 4 */ + { + WRITE_UINT32(*p_Dst32, *p_Src32); + p_Dst32++;p_Src32++; + size -= 4; + } + p_Src8 = (uint8_t*)(p_Src32); + p_Dst8 = (uint8_t*)(p_Dst32); + } + else + { + /* source is not aligned (destination is aligned)*/ + p_Src32 = (uint32_t*)(p_Src8 - (leftAlign >> 3)); + p_Dst32 = (uint32_t*)(p_Dst8); + lastWord = *p_Src32++; + while(size >> 3) /* size >= 8 */ + { + currWord = *p_Src32; + WRITE_UINT32(*p_Dst32, (lastWord << leftAlign) | (currWord >> rightAlign)); + lastWord = currWord; + p_Src32++;p_Dst32++; + size -= 4; + } + p_Dst8 = (uint8_t*)(p_Dst32); + p_Src8 = (uint8_t*)(p_Src32) - 4 + (leftAlign >> 3); + } + + /* complete the left overs */ + while (size--) + { + MY_WRITE_UINT8(*p_Dst8, *p_Src8); + p_Dst8++;p_Src8++; + } + + return pDst; +} + +void * IO2MemCpy32(void* pDst,void* pSrc, uint32_t size) +{ + uint32_t leftAlign; + uint32_t rightAlign; + uint32_t lastWord; + uint32_t currWord; + uint32_t *p_Src32; + uint32_t *p_Dst32; + uint8_t *p_Src8; + uint8_t *p_Dst8; + + p_Src8 = (uint8_t*)(pSrc); + p_Dst8 = (uint8_t*)(pDst); + /* first copy byte by byte till the source first alignment + * this step is necessary to ensure we do not even try to access + * data which is before the source buffer, hence it is not ours. + */ + while((PTR_TO_UINT(p_Src8) & 3) && size) /* (pSrc mod 4) > 0 and size > 0 */ + { + *p_Dst8 = MY_GET_UINT8(*p_Src8); + p_Dst8++;p_Src8++; + size--; + } + + /* align destination (possibly disaligning source)*/ + while((PTR_TO_UINT(p_Dst8) & 3) && size) /* (pDst mod 4) > 0 and size > 0 */ + { + *p_Dst8 = MY_GET_UINT8(*p_Src8); + p_Dst8++;p_Src8++; + size--; + } + + /* dest is aligned and source is not necessarily aligned */ + leftAlign = (uint32_t)((PTR_TO_UINT(p_Src8) & 3) << 3); /* leftAlign = (pSrc mod 4)*8 */ + rightAlign = 32 - leftAlign; + + if (leftAlign == 0) + { + /* source is also aligned */ + p_Src32 = (uint32_t*)(p_Src8); + p_Dst32 = (uint32_t*)(p_Dst8); + while (size >> 2) /* size >= 4 */ + { + *p_Dst32 = GET_UINT32(*p_Src32); + p_Dst32++;p_Src32++; + size -= 4; + } + p_Src8 = (uint8_t*)(p_Src32); + p_Dst8 = (uint8_t*)(p_Dst32); + } + else + { + /* source is not aligned (destination is aligned)*/ + p_Src32 = (uint32_t*)(p_Src8 - (leftAlign >> 3)); + p_Dst32 = (uint32_t*)(p_Dst8); + lastWord = GET_UINT32(*p_Src32); + p_Src32++; + while(size >> 3) /* size >= 8 */ + { + currWord = GET_UINT32(*p_Src32); + *p_Dst32 = (lastWord << leftAlign) | (currWord >> rightAlign); + lastWord = currWord; + p_Src32++;p_Dst32++; + size -= 4; + } + p_Dst8 = (uint8_t*)(p_Dst32); + p_Src8 = (uint8_t*)(p_Src32) - 4 + (leftAlign >> 3); + } + + /* complete the left overs */ + while (size--) + { + *p_Dst8 = MY_GET_UINT8(*p_Src8); + p_Dst8++;p_Src8++; + } + + return pDst; +} + +void * MemCpy64(void* pDst,void* pSrc, uint32_t size) +{ + uint32_t leftAlign; + uint32_t rightAlign; + uint64_t lastWord; + uint64_t currWord; + uint64_t *pSrc64; + uint64_t *pDst64; + uint8_t *p_Src8; + uint8_t *p_Dst8; + + p_Src8 = (uint8_t*)(pSrc); + p_Dst8 = (uint8_t*)(pDst); + /* first copy byte by byte till the source first alignment + * this step is necessarily to ensure we do not even try to access + * data which is before the source buffer, hence it is not ours. + */ + while((PTR_TO_UINT(p_Src8) & 7) && size) /* (pSrc mod 8) > 0 and size > 0 */ + { + *p_Dst8++ = *p_Src8++; + size--; + } + + /* align destination (possibly disaligning source)*/ + while((PTR_TO_UINT(p_Dst8) & 7) && size) /* (pDst mod 8) > 0 and size > 0 */ + { + *p_Dst8++ = *p_Src8++; + size--; + } + + /* dest is aligned and source is not necessarily aligned */ + leftAlign = (uint32_t)((PTR_TO_UINT(p_Src8) & 7) << 3); /* leftAlign = (pSrc mod 8)*8 */ + rightAlign = 64 - leftAlign; + + + if (leftAlign == 0) + { + /* source is also aligned */ + pSrc64 = (uint64_t*)(p_Src8); + pDst64 = (uint64_t*)(p_Dst8); + while (size >> 3) /* size >= 8 */ + { + *pDst64++ = *pSrc64++; + size -= 8; + } + p_Src8 = (uint8_t*)(pSrc64); + p_Dst8 = (uint8_t*)(pDst64); + } + else + { + /* source is not aligned (destination is aligned)*/ + pSrc64 = (uint64_t*)(p_Src8 - (leftAlign >> 3)); + pDst64 = (uint64_t*)(p_Dst8); + lastWord = *pSrc64++; + while(size >> 4) /* size >= 16 */ + { + currWord = *pSrc64; + *pDst64 = (lastWord << leftAlign) | (currWord >> rightAlign); + lastWord = currWord; + pSrc64++; + pDst64++; + size -= 8; + } + p_Dst8 = (uint8_t*)(pDst64); + p_Src8 = (uint8_t*)(pSrc64) - 8 + (leftAlign >> 3); + } + + /* complete the left overs */ + while (size--) + *p_Dst8++ = *p_Src8++; + + return pDst; +} + +void * MemSet32(void* pDst, uint8_t val, uint32_t size) +{ + uint32_t val32; + uint32_t *p_Dst32; + uint8_t *p_Dst8; + + p_Dst8 = (uint8_t*)(pDst); + + /* generate four 8-bit val's in 32-bit container */ + val32 = (uint32_t) val; + val32 |= (val32 << 8); + val32 |= (val32 << 16); + + /* align destination to 32 */ + while((PTR_TO_UINT(p_Dst8) & 3) && size) /* (pDst mod 4) > 0 and size > 0 */ + { + *p_Dst8++ = val; + size--; + } + + /* 32-bit chunks */ + p_Dst32 = (uint32_t*)(p_Dst8); + while (size >> 2) /* size >= 4 */ + { + *p_Dst32++ = val32; + size -= 4; + } + + /* complete the leftovers */ + p_Dst8 = (uint8_t*)(p_Dst32); + while (size--) + *p_Dst8++ = val; + + return pDst; +} + +void * IOMemSet32(void* pDst, uint8_t val, uint32_t size) +{ + uint32_t val32; + uint32_t *p_Dst32; + uint8_t *p_Dst8; + + p_Dst8 = (uint8_t*)(pDst); + + /* generate four 8-bit val's in 32-bit container */ + val32 = (uint32_t) val; + val32 |= (val32 << 8); + val32 |= (val32 << 16); + + /* align destination to 32 */ + while((PTR_TO_UINT(p_Dst8) & 3) && size) /* (pDst mod 4) > 0 and size > 0 */ + { + MY_WRITE_UINT8(*p_Dst8, val); + p_Dst8++; + size--; + } + + /* 32-bit chunks */ + p_Dst32 = (uint32_t*)(p_Dst8); + while (size >> 2) /* size >= 4 */ + { + WRITE_UINT32(*p_Dst32, val32); + p_Dst32++; + size -= 4; + } + + /* complete the leftovers */ + p_Dst8 = (uint8_t*)(p_Dst32); + while (size--) + { + MY_WRITE_UINT8(*p_Dst8, val); + p_Dst8++; + } + + return pDst; +} + +void * MemSet64(void* pDst, uint8_t val, uint32_t size) +{ + uint64_t val64; + uint64_t *pDst64; + uint8_t *p_Dst8; + + p_Dst8 = (uint8_t*)(pDst); + + /* generate four 8-bit val's in 32-bit container */ + val64 = (uint64_t) val; + val64 |= (val64 << 8); + val64 |= (val64 << 16); + val64 |= (val64 << 24); + val64 |= (val64 << 32); + + /* align destination to 64 */ + while((PTR_TO_UINT(p_Dst8) & 7) && size) /* (pDst mod 8) > 0 and size > 0 */ + { + *p_Dst8++ = val; + size--; + } + + /* 64-bit chunks */ + pDst64 = (uint64_t*)(p_Dst8); + while (size >> 4) /* size >= 8 */ + { + *pDst64++ = val64; + size -= 8; + } + + /* complete the leftovers */ + p_Dst8 = (uint8_t*)(pDst64); + while (size--) + *p_Dst8++ = val; + + return pDst; +} + +void MemDisp(uint8_t *p, int size) +{ + uint32_t space = (uint32_t)(PTR_TO_UINT(p) & 0x3); + uint8_t *p_Limit; + + if (space) + { + p_Limit = (p - space + 4); + + XX_Print("0x%08X: ", (p - space)); + + while (space--) + { + XX_Print("--"); + } + while (size && (p < p_Limit)) + { + XX_Print("%02x", *(uint8_t*)p); + size--; + p++; + } + + XX_Print(" "); + p_Limit += 12; + + while ((size > 3) && (p < p_Limit)) + { + XX_Print("%08x ", *(uint32_t*)p); + size -= 4; + p += 4; + } + XX_Print("\r\n"); + } + + while (size > 15) + { + XX_Print("0x%08X: %08x %08x %08x %08x\r\n", + p, *(uint32_t *)p, *(uint32_t *)(p + 4), + *(uint32_t *)(p + 8), *(uint32_t *)(p + 12)); + size -= 16; + p += 16; + } + + if (size) + { + XX_Print("0x%08X: ", p); + + while (size > 3) + { + XX_Print("%08x ", *(uint32_t *)p); + size -= 4; + p += 4; + } + while (size) + { + XX_Print("%02x", *(uint8_t *)p); + size--; + p++; + } + + XX_Print("\r\n"); + } +} --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/etc/mm.c +++ linux-3.13.0/drivers/net/dpa/NetCommSw/etc/mm.c @@ -0,0 +1,1109 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 "string_ext.h" +#include "error_ext.h" +#include "std_ext.h" +#include "sprint_ext.h" +#include "part_ext.h" +#include "xx_ext.h" + +#include "mm.h" + + + + +/********************************************************************** + * MM internal routines set * + **********************************************************************/ + +/**************************************************************** + * Routine: CreateBusyBlock + * + * Description: + * Initializes a new busy block of "size" bytes and started + * rom "base" address. Each busy block has a name that + * specified the purpose of the memory allocation. + * + * Arguments: + * base - base address of the busy block + * size - size of the busy block + * name - name that specified the busy block + * + * Return value: + * A pointer to new created structure returned on success; + * Otherwise, NULL. + ****************************************************************/ +static t_BusyBlock * CreateBusyBlock(uint64_t base, uint64_t size, char *name) +{ + t_BusyBlock *p_BusyBlock; + uint32_t n; + + p_BusyBlock = (t_BusyBlock *)XX_Malloc(sizeof(t_BusyBlock)); + if ( !p_BusyBlock ) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, NO_MSG); + return NULL; + } + + p_BusyBlock->base = base; + p_BusyBlock->end = base + size; + + n = strlen(name); + if (n >= MM_MAX_NAME_LEN) + n = MM_MAX_NAME_LEN - 1; + strncpy(p_BusyBlock->name, name, MM_MAX_NAME_LEN-1); + p_BusyBlock->name[n] = '\0'; + p_BusyBlock->p_Next = 0; + + return p_BusyBlock; +} + +/**************************************************************** + * Routine: CreateNewBlock + * + * Description: + * Initializes a new memory block of "size" bytes and started + * from "base" address. + * + * Arguments: + * base - base address of the memory block + * size - size of the memory block + * + * Return value: + * A pointer to new created structure returned on success; + * Otherwise, NULL. + ****************************************************************/ +static t_MemBlock * CreateNewBlock(uint64_t base, uint64_t size) +{ + t_MemBlock *p_MemBlock; + + p_MemBlock = (t_MemBlock *)XX_Malloc(sizeof(t_MemBlock)); + if ( !p_MemBlock ) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, NO_MSG); + return NULL; + } + + p_MemBlock->base = base; + p_MemBlock->end = base+size; + p_MemBlock->p_Next = 0; + + return p_MemBlock; +} + +/**************************************************************** + * Routine: CreateFreeBlock + * + * Description: + * Initializes a new free block of of "size" bytes and + * started from "base" address. + * + * Arguments: + * base - base address of the free block + * size - size of the free block + * + * Return value: + * A pointer to new created structure returned on success; + * Otherwise, NULL. + ****************************************************************/ +static t_FreeBlock * CreateFreeBlock(uint64_t base, uint64_t size) +{ + t_FreeBlock *p_FreeBlock; + + p_FreeBlock = (t_FreeBlock *)XX_Malloc(sizeof(t_FreeBlock)); + if ( !p_FreeBlock ) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, NO_MSG); + return NULL; + } + + p_FreeBlock->base = base; + p_FreeBlock->end = base + size; + p_FreeBlock->p_Next = 0; + + return p_FreeBlock; +} + +/**************************************************************** + * Routine: AddFree + * + * Description: + * Adds a new free block to the free lists. It updates each + * free list to include a new free block. + * Note, that all free block in each free list are ordered + * by their base address. + * + * Arguments: + * p_MM - pointer to the MM object + * base - base address of a given free block + * end - end address of a given free block + * + * Return value: + * + * + ****************************************************************/ +static t_Error AddFree(t_MM *p_MM, uint64_t base, uint64_t end) +{ + t_FreeBlock *p_PrevB, *p_CurrB, *p_NewB; + uint64_t alignment; + uint64_t alignBase; + int i; + + /* Updates free lists to include a just released block */ + for (i=0; i <= MM_MAX_ALIGNMENT; i++) + { + p_PrevB = p_NewB = 0; + p_CurrB = p_MM->freeBlocks[i]; + + alignment = (uint64_t)(0x1 << i); + alignBase = MAKE_ALIGNED(base, alignment); + + /* Goes to the next free list if there is no block to free */ + if (alignBase >= end) + continue; + + /* Looks for a free block that should be updated */ + while ( p_CurrB ) + { + if ( alignBase <= p_CurrB->end ) + { + if ( end > p_CurrB->end ) + { + t_FreeBlock *p_NextB; + while ( p_CurrB->p_Next && end > p_CurrB->p_Next->end ) + { + p_NextB = p_CurrB->p_Next; + p_CurrB->p_Next = p_CurrB->p_Next->p_Next; + XX_Free(p_NextB); + } + + p_NextB = p_CurrB->p_Next; + if ( !p_NextB || (p_NextB && end < p_NextB->base) ) + { + p_CurrB->end = end; + } + else + { + p_CurrB->end = p_NextB->end; + p_CurrB->p_Next = p_NextB->p_Next; + XX_Free(p_NextB); + } + } + else if ( (end < p_CurrB->base) && ((end-alignBase) >= alignment) ) + { + if ((p_NewB = CreateFreeBlock(alignBase, end-alignBase)) == NULL) + RETURN_ERROR(MAJOR, E_NO_MEMORY, NO_MSG); + + p_NewB->p_Next = p_CurrB; + if (p_PrevB) + p_PrevB->p_Next = p_NewB; + else + p_MM->freeBlocks[i] = p_NewB; + break; + } + + if ((alignBase < p_CurrB->base) && (end >= p_CurrB->base)) + { + p_CurrB->base = alignBase; + } + + /* if size of the free block is less then alignment + * deletes that free block from the free list. */ + if ( (p_CurrB->end - p_CurrB->base) < alignment) + { + if ( p_PrevB ) + p_PrevB->p_Next = p_CurrB->p_Next; + else + p_MM->freeBlocks[i] = p_CurrB->p_Next; + XX_Free(p_CurrB); + } + break; + } + else + { + p_PrevB = p_CurrB; + p_CurrB = p_CurrB->p_Next; + } + } + + /* If no free block found to be updated, insert a new free block + * to the end of the free list. + */ + if ( !p_CurrB && ((((uint64_t)(end-base)) & ((uint64_t)(alignment-1))) == 0) ) + { + if ((p_NewB = CreateFreeBlock(alignBase, end-base)) == NULL) + RETURN_ERROR(MAJOR, E_NO_MEMORY, NO_MSG); + + if (p_PrevB) + p_PrevB->p_Next = p_NewB; + else + p_MM->freeBlocks[i] = p_NewB; + } + + /* Update boundaries of the new free block */ + if ((alignment == 1) && !p_NewB) + { + if ( p_CurrB && base > p_CurrB->base ) + base = p_CurrB->base; + if ( p_CurrB && end < p_CurrB->end ) + end = p_CurrB->end; + } + } + + return (E_OK); +} + +/**************************************************************** + * Routine: CutFree + * + * Description: + * Cuts a free block from holdBase to holdEnd from the free lists. + * That is, it updates all free lists of the MM object do + * not include a block of memory from holdBase to holdEnd. + * For each free lists it seek for a free block that holds + * either holdBase or holdEnd. If such block is found it updates it. + * + * Arguments: + * p_MM - pointer to the MM object + * holdBase - base address of the allocated block + * holdEnd - end address of the allocated block + * + * Return value: + * E_OK is returned on success, + * otherwise returns an error code. + * + ****************************************************************/ +static t_Error CutFree(t_MM *p_MM, uint64_t holdBase, uint64_t holdEnd) +{ + t_FreeBlock *p_PrevB, *p_CurrB, *p_NewB; + uint64_t alignBase, base, end; + uint64_t alignment; + int i; + + for (i=0; i <= MM_MAX_ALIGNMENT; i++) + { + p_PrevB = p_NewB = 0; + p_CurrB = p_MM->freeBlocks[i]; + + alignment = (uint64_t)(0x1 << i); + alignBase = MAKE_ALIGNED(holdEnd, alignment); + + while ( p_CurrB ) + { + base = p_CurrB->base; + end = p_CurrB->end; + + if ( (holdBase <= base) && (holdEnd <= end) && (holdEnd > base) ) + { + if ( alignBase >= end || + (alignBase < end && ((end-alignBase) < alignment)) ) + { + if (p_PrevB) + p_PrevB->p_Next = p_CurrB->p_Next; + else + p_MM->freeBlocks[i] = p_CurrB->p_Next; + XX_Free(p_CurrB); + } + else + { + p_CurrB->base = alignBase; + } + break; + } + else if ( (holdBase > base) && (holdEnd <= end) ) + { + if ( (holdBase-base) >= alignment ) + { + if ( (alignBase < end) && ((end-alignBase) >= alignment) ) + { + if ((p_NewB = CreateFreeBlock(alignBase, end-alignBase)) == NULL) + RETURN_ERROR(MAJOR, E_NO_MEMORY, NO_MSG); + p_NewB->p_Next = p_CurrB->p_Next; + p_CurrB->p_Next = p_NewB; + } + p_CurrB->end = holdBase; + } + else if ( (alignBase < end) && ((end-alignBase) >= alignment) ) + { + p_CurrB->base = alignBase; + } + else + { + if (p_PrevB) + p_PrevB->p_Next = p_CurrB->p_Next; + else + p_MM->freeBlocks[i] = p_CurrB->p_Next; + XX_Free(p_CurrB); + } + break; + } + else + { + p_PrevB = p_CurrB; + p_CurrB = p_CurrB->p_Next; + } + } + } + + return (E_OK); +} + +/**************************************************************** + * Routine: AddBusy + * + * Description: + * Adds a new busy block to the list of busy blocks. Note, + * that all busy blocks are ordered by their base address in + * the busy list. + * + * Arguments: + * MM - handler to the MM object + * p_NewBusyB - pointer to the a busy block + * + * Return value: + * None. + * + ****************************************************************/ +static void AddBusy(t_MM *p_MM, t_BusyBlock *p_NewBusyB) +{ + t_BusyBlock *p_CurrBusyB, *p_PrevBusyB; + + /* finds a place of a new busy block in the list of busy blocks */ + p_PrevBusyB = 0; + p_CurrBusyB = p_MM->busyBlocks; + + while ( p_CurrBusyB && p_NewBusyB->base > p_CurrBusyB->base ) + { + p_PrevBusyB = p_CurrBusyB; + p_CurrBusyB = p_CurrBusyB->p_Next; + } + + /* insert the new busy block into the list of busy blocks */ + if ( p_CurrBusyB ) + p_NewBusyB->p_Next = p_CurrBusyB; + if ( p_PrevBusyB ) + p_PrevBusyB->p_Next = p_NewBusyB; + else + p_MM->busyBlocks = p_NewBusyB; +} + +/**************************************************************** + * Routine: CutBusy + * + * Description: + * Cuts a block from base to end from the list of busy blocks. + * This is done by updating the list of busy blocks do not + * include a given block, that block is going to be free. If a + * given block is a part of some other busy block, so that + * busy block is updated. If there are number of busy blocks + * included in the given block, so all that blocks are removed + * from the busy list and the end blocks are updated. + * If the given block devides some block into two parts, a new + * busy block is added to the busy list. + * + * Arguments: + * p_MM - pointer to the MM object + * base - base address of a given busy block + * end - end address of a given busy block + * + * Return value: + * E_OK on success, E_NOMEMORY otherwise. + * + ****************************************************************/ +static t_Error CutBusy(t_MM *p_MM, uint64_t base, uint64_t end) +{ + t_BusyBlock *p_CurrB, *p_PrevB, *p_NewB; + + p_CurrB = p_MM->busyBlocks; + p_PrevB = p_NewB = 0; + + while ( p_CurrB ) + { + if ( base < p_CurrB->end ) + { + if ( end > p_CurrB->end ) + { + t_BusyBlock *p_NextB; + while ( p_CurrB->p_Next && end >= p_CurrB->p_Next->end ) + { + p_NextB = p_CurrB->p_Next; + p_CurrB->p_Next = p_CurrB->p_Next->p_Next; + XX_Free(p_NextB); + } + + p_NextB = p_CurrB->p_Next; + if ( p_NextB && end > p_NextB->base ) + { + p_NextB->base = end; + } + } + + if ( base <= p_CurrB->base ) + { + if ( end < p_CurrB->end && end > p_CurrB->base ) + { + p_CurrB->base = end; + } + else if ( end >= p_CurrB->end ) + { + if ( p_PrevB ) + p_PrevB->p_Next = p_CurrB->p_Next; + else + p_MM->busyBlocks = p_CurrB->p_Next; + XX_Free(p_CurrB); + } + } + else + { + if ( end < p_CurrB->end && end > p_CurrB->base ) + { + if ((p_NewB = CreateBusyBlock(end, + p_CurrB->end-end, + p_CurrB->name)) == NULL) + RETURN_ERROR(MAJOR, E_NO_MEMORY, NO_MSG); + p_NewB->p_Next = p_CurrB->p_Next; + p_CurrB->p_Next = p_NewB; + } + p_CurrB->end = base; + } + break; + } + else + { + p_PrevB = p_CurrB; + p_CurrB = p_CurrB->p_Next; + } + } + + return (E_OK); +} + +/**************************************************************** + * Routine: MmGetGreaterAlignment + * + * Description: + * Allocates a block of memory according to the given size + * and the alignment. That routine is called from the MM_Get + * routine if the required alignment is greater then MM_MAX_ALIGNMENT. + * In that case, it goes over free blocks of 64 byte align list + * and checks if it has the required size of bytes of the required + * alignment. If no blocks found returns ILLEGAL_BASE. + * After the block is found and data is allocated, it calls + * the internal CutFree routine to update all free lists + * do not include a just allocated block. Of course, each + * free list contains a free blocks with the same alignment. + * It is also creates a busy block that holds + * information about an allocated block. + * + * Arguments: + * MM - handle to the MM object + * size - size of the MM + * alignment - index as a power of two defines + * a required alignment that is greater then 64. + * name - the name that specifies an allocated block. + * + * Return value: + * base address of an allocated block. + * ILLEGAL_BASE if can't allocate a block + * + ****************************************************************/ +static uint64_t MmGetGreaterAlignment(t_MM *p_MM, uint64_t size, uint64_t alignment, char* name) +{ + t_FreeBlock *p_FreeB; + t_BusyBlock *p_NewBusyB; + uint64_t holdBase, holdEnd, alignBase = 0; + + /* goes over free blocks of the 64 byte alignment list + and look for a block of the suitable size and + base address according to the alignment. */ + p_FreeB = p_MM->freeBlocks[MM_MAX_ALIGNMENT]; + + while ( p_FreeB ) + { + alignBase = MAKE_ALIGNED(p_FreeB->base, alignment); + + /* the block is found if the aligned base inside the block + * and has the anough size. */ + if ( alignBase >= p_FreeB->base && + alignBase < p_FreeB->end && + size <= (p_FreeB->end - alignBase) ) + break; + else + p_FreeB = p_FreeB->p_Next; + } + + /* If such block isn't found */ + if ( !p_FreeB ) + return (uint64_t)(ILLEGAL_BASE); + + holdBase = alignBase; + holdEnd = alignBase + size; + + /* init a new busy block */ + if ((p_NewBusyB = CreateBusyBlock(holdBase, size, name)) == NULL) + return (uint64_t)(ILLEGAL_BASE); + + /* calls Update routine to update a lists of free blocks */ + if ( CutFree ( p_MM, holdBase, holdEnd ) != E_OK ) + return (uint64_t)(ILLEGAL_BASE); + + /* insert the new busy block into the list of busy blocks */ + AddBusy ( p_MM, p_NewBusyB ); + + return (holdBase); +} + + +/********************************************************************** + * MM API routines set * + **********************************************************************/ + +/*****************************************************************************/ +t_Error MM_Init(t_Handle *h_MM, uint64_t base, uint64_t size) +{ + t_MM *p_MM; + uint64_t newBase, newSize; + int i; + + if (!size) + { + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Size (should be positive)")); + } + + /* Initializes a new MM object */ + p_MM = (t_MM *)XX_Malloc(sizeof(t_MM)); + if (!p_MM) + { + RETURN_ERROR(MAJOR, E_NO_MEMORY, NO_MSG); + } + + p_MM->h_Spinlock = XX_InitSpinlock(); + if (!p_MM->h_Spinlock) + { + XX_Free(p_MM); + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("MM spinlock!")); + } + + /* initializes a new memory block */ + if ((p_MM->memBlocks = CreateNewBlock(base, size)) == NULL) + RETURN_ERROR(MAJOR, E_NO_MEMORY, NO_MSG); + + /* A busy list is empty */ + p_MM->busyBlocks = 0; + + /*Initializes a new free block for each free list*/ + for (i=0; i <= MM_MAX_ALIGNMENT; i++) + { + newBase = MAKE_ALIGNED( base, (0x1 << i) ); + newSize = size - (newBase - base); + + if ((p_MM->freeBlocks[i] = CreateFreeBlock(newBase, newSize)) == NULL) + RETURN_ERROR(MAJOR, E_NO_MEMORY, NO_MSG); + } + + *h_MM = p_MM; + + return (E_OK); +} + +/*****************************************************************************/ +void MM_Free(t_Handle h_MM) +{ + t_MM *p_MM = (t_MM *)h_MM; + t_MemBlock *p_MemBlock; + t_BusyBlock *p_BusyBlock; + t_FreeBlock *p_FreeBlock; + void *p_Block; + int i; + + ASSERT_COND(p_MM); + + /* release memory allocated for busy blocks */ + p_BusyBlock = p_MM->busyBlocks; + while ( p_BusyBlock ) + { + p_Block = p_BusyBlock; + p_BusyBlock = p_BusyBlock->p_Next; + XX_Free(p_Block); + } + + /* release memory allocated for free blocks */ + for (i=0; i <= MM_MAX_ALIGNMENT; i++) + { + p_FreeBlock = p_MM->freeBlocks[i]; + while ( p_FreeBlock ) + { + p_Block = p_FreeBlock; + p_FreeBlock = p_FreeBlock->p_Next; + XX_Free(p_Block); + } + } + + /* release memory allocated for memory blocks */ + p_MemBlock = p_MM->memBlocks; + while ( p_MemBlock ) + { + p_Block = p_MemBlock; + p_MemBlock = p_MemBlock->p_Next; + XX_Free(p_Block); + } + + if (p_MM->h_Spinlock) + XX_FreeSpinlock(p_MM->h_Spinlock); + + /* release memory allocated for MM object itself */ + XX_Free(p_MM); +} + +/*****************************************************************************/ +uint64_t MM_Get(t_Handle h_MM, uint64_t size, uint64_t alignment, char* name) +{ + t_MM *p_MM = (t_MM *)h_MM; + t_FreeBlock *p_FreeB; + t_BusyBlock *p_NewBusyB; + uint64_t holdBase, holdEnd, j, i = 0; + uint32_t intFlags; + + SANITY_CHECK_RETURN_VALUE(p_MM, E_INVALID_HANDLE, (uint64_t)ILLEGAL_BASE); + + /* checks that alignment value is greater then zero */ + if (alignment == 0) + { + alignment = 1; + } + + j = alignment; + + /* checks if alignment is a power of two, if it correct and if the + required size is multiple of the given alignment. */ + while ((j & 0x1) == 0) + { + i++; + j = j >> 1; + } + + /* if the given alignment isn't power of two, returns an error */ + if (j != 1) + { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("alignment (should be power of 2)")); + return (uint64_t)ILLEGAL_BASE; + } + + if (i > MM_MAX_ALIGNMENT) + { + return (MmGetGreaterAlignment(p_MM, size, alignment, name)); + } + + intFlags = XX_LockIntrSpinlock(p_MM->h_Spinlock); + /* look for a block of the size greater or equal to the required size. */ + p_FreeB = p_MM->freeBlocks[i]; + while ( p_FreeB && (p_FreeB->end - p_FreeB->base) < size ) + p_FreeB = p_FreeB->p_Next; + + /* If such block is found */ + if ( !p_FreeB ) + { + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + return (uint64_t)(ILLEGAL_BASE); + } + + holdBase = p_FreeB->base; + holdEnd = holdBase + size; + + /* init a new busy block */ + if ((p_NewBusyB = CreateBusyBlock(holdBase, size, name)) == NULL) + { + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + return (uint64_t)(ILLEGAL_BASE); + } + + /* calls Update routine to update a lists of free blocks */ + if ( CutFree ( p_MM, holdBase, holdEnd ) != E_OK ) + { + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + return (uint64_t)(ILLEGAL_BASE); + } + + /* insert the new busy block into the list of busy blocks */ + AddBusy ( p_MM, p_NewBusyB ); + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + + return (holdBase); +} + +/*****************************************************************************/ +uint64_t MM_GetForce(t_Handle h_MM, uint64_t base, uint64_t size, char* name) +{ + t_MM *p_MM = (t_MM *)h_MM; + t_FreeBlock *p_FreeB; + t_BusyBlock *p_NewBusyB; + uint32_t intFlags; + bool blockIsFree = FALSE; + + ASSERT_COND(p_MM); + + intFlags = XX_LockIntrSpinlock(p_MM->h_Spinlock); + p_FreeB = p_MM->freeBlocks[0]; /* The biggest free blocks are in the + free list with alignment 1 */ + + while ( p_FreeB ) + { + if ( base >= p_FreeB->base && (base+size) <= p_FreeB->end ) + { + blockIsFree = TRUE; + break; + } + else + p_FreeB = p_FreeB->p_Next; + } + + if ( !blockIsFree ) + { + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + return (uint64_t)(ILLEGAL_BASE); + } + + /* init a new busy block */ + if ((p_NewBusyB = CreateBusyBlock(base, size, name)) == NULL) + { + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + return (uint64_t)(ILLEGAL_BASE); + } + + /* calls Update routine to update a lists of free blocks */ + if ( CutFree ( p_MM, base, base+size ) != E_OK ) + { + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + return (uint64_t)(ILLEGAL_BASE); + } + + /* insert the new busy block into the list of busy blocks */ + AddBusy ( p_MM, p_NewBusyB ); + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + + return (base); +} + +/*****************************************************************************/ +uint64_t MM_GetForceMin(t_Handle h_MM, uint64_t size, uint64_t alignment, uint64_t min, char* name) +{ + t_MM *p_MM = (t_MM *)h_MM; + t_FreeBlock *p_FreeB; + t_BusyBlock *p_NewBusyB; + uint64_t holdBase, holdEnd, j = alignment, i=0; + uint32_t intFlags; + + ASSERT_COND(p_MM); + + /* checks if alignment is a power of two, if it correct and if the + required size is multiple of the given alignment. */ + while ((j & 0x1) == 0) + { + i++; + j = j >> 1; + } + + if ( (j != 1) || (i > MM_MAX_ALIGNMENT) ) + { + return (uint64_t)(ILLEGAL_BASE); + } + + intFlags = XX_LockIntrSpinlock(p_MM->h_Spinlock); + p_FreeB = p_MM->freeBlocks[i]; + + /* look for the first block that contains the minimum + base address. If the whole required size may be fit + into it, use that block, otherwise look for the next + block of size greater or equal to the required size. */ + while ( p_FreeB && (min >= p_FreeB->end)) + p_FreeB = p_FreeB->p_Next; + + /* If such block is found */ + if ( !p_FreeB ) + { + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + return (uint64_t)(ILLEGAL_BASE); + } + + /* if this block is large enough, use this block */ + holdBase = ( min <= p_FreeB->base ) ? p_FreeB->base : min; + if ((holdBase + size) <= p_FreeB->end ) + { + holdEnd = holdBase + size; + } + else + { + p_FreeB = p_FreeB->p_Next; + while ( p_FreeB && ((p_FreeB->end - p_FreeB->base) < size) ) + p_FreeB = p_FreeB->p_Next; + + /* If such block is found */ + if ( !p_FreeB ) + { + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + return (uint64_t)(ILLEGAL_BASE); + } + + holdBase = p_FreeB->base; + holdEnd = holdBase + size; + } + + /* init a new busy block */ + if ((p_NewBusyB = CreateBusyBlock(holdBase, size, name)) == NULL) + { + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + return (uint64_t)(ILLEGAL_BASE); + } + + /* calls Update routine to update a lists of free blocks */ + if ( CutFree( p_MM, holdBase, holdEnd ) != E_OK ) + { + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + return (uint64_t)(ILLEGAL_BASE); + } + + /* insert the new busy block into the list of busy blocks */ + AddBusy( p_MM, p_NewBusyB ); + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + + return (holdBase); +} + +/*****************************************************************************/ +uint64_t MM_Put(t_Handle h_MM, uint64_t base) +{ + t_MM *p_MM = (t_MM *)h_MM; + t_BusyBlock *p_BusyB, *p_PrevBusyB; + uint64_t size; + uint32_t intFlags; + + ASSERT_COND(p_MM); + + /* Look for a busy block that have the given base value. + * That block will be returned back to the memory. + */ + p_PrevBusyB = 0; + + intFlags = XX_LockIntrSpinlock(p_MM->h_Spinlock); + p_BusyB = p_MM->busyBlocks; + while ( p_BusyB && base != p_BusyB->base ) + { + p_PrevBusyB = p_BusyB; + p_BusyB = p_BusyB->p_Next; + } + + if ( !p_BusyB ) + { + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + return (uint64_t)(0); + } + + if ( AddFree( p_MM, p_BusyB->base, p_BusyB->end ) != E_OK ) + { + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + return (uint64_t)(0); + } + + /* removes a busy block form the list of busy blocks */ + if ( p_PrevBusyB ) + p_PrevBusyB->p_Next = p_BusyB->p_Next; + else + p_MM->busyBlocks = p_BusyB->p_Next; + + size = p_BusyB->end - p_BusyB->base; + + XX_Free(p_BusyB); + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + + return (size); +} + +/*****************************************************************************/ +uint64_t MM_PutForce(t_Handle h_MM, uint64_t base, uint64_t size) +{ + t_MM *p_MM = (t_MM *)h_MM; + uint64_t end = base + size; + uint32_t intFlags; + + ASSERT_COND(p_MM); + + intFlags = XX_LockIntrSpinlock(p_MM->h_Spinlock); + if ( CutBusy( p_MM, base, end ) != E_OK ) + { + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + return (uint64_t)(0); + } + + if ( AddFree ( p_MM, base, end ) != E_OK ) + { + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + return (uint64_t)(0); + } + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + + return (size); +} + +/*****************************************************************************/ +t_Error MM_Add(t_Handle h_MM, uint64_t base, uint64_t size) +{ + t_MM *p_MM = (t_MM *)h_MM; + t_MemBlock *p_MemB, *p_NewMemB; + t_Error errCode; + uint32_t intFlags; + + ASSERT_COND(p_MM); + + /* find a last block in the list of memory blocks to insert a new + * memory block + */ + intFlags = XX_LockIntrSpinlock(p_MM->h_Spinlock); + p_MemB = p_MM->memBlocks; + while ( p_MemB->p_Next ) + { + if ( base >= p_MemB->base && base < p_MemB->end ) + { + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + RETURN_ERROR(MAJOR, E_ALREADY_EXISTS, NO_MSG); + } + p_MemB = p_MemB->p_Next; + } + /* check for a last memory block */ + if ( base >= p_MemB->base && base < p_MemB->end ) + { + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + RETURN_ERROR(MAJOR, E_ALREADY_EXISTS, NO_MSG); + } + + /* create a new memory block */ + if ((p_NewMemB = CreateNewBlock(base, size)) == NULL) + { + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + RETURN_ERROR(MAJOR, E_NO_MEMORY, NO_MSG); + } + + /* append a new memory block to the end of the list of memory blocks */ + p_MemB->p_Next = p_NewMemB; + + /* add a new free block to the free lists */ + errCode = AddFree(p_MM, base, base+size); + if (errCode) + { + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + p_MemB->p_Next = 0; + XX_Free(p_NewMemB); + return ((t_Error)errCode); + } + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + + return (E_OK); +} + +/*****************************************************************************/ +uint64_t MM_GetMemBlock(t_Handle h_MM, int index) +{ + t_MM *p_MM = (t_MM*)h_MM; + t_MemBlock *p_MemBlock; + int i; + + ASSERT_COND(p_MM); + + p_MemBlock = p_MM->memBlocks; + for (i=0; i < index; i++) + p_MemBlock = p_MemBlock->p_Next; + + if ( p_MemBlock ) + return (p_MemBlock->base); + else + return (uint64_t)ILLEGAL_BASE; +} + +/*****************************************************************************/ +uint64_t MM_GetBase(t_Handle h_MM) +{ + t_MM *p_MM = (t_MM*)h_MM; + t_MemBlock *p_MemBlock; + + ASSERT_COND(p_MM); + + p_MemBlock = p_MM->memBlocks; + return p_MemBlock->base; +} + +/*****************************************************************************/ +bool MM_InRange(t_Handle h_MM, uint64_t addr) +{ + t_MM *p_MM = (t_MM*)h_MM; + t_MemBlock *p_MemBlock; + + ASSERT_COND(p_MM); + + p_MemBlock = p_MM->memBlocks; + + if ((addr >= p_MemBlock->base) && (addr < p_MemBlock->end)) + return TRUE; + else + return FALSE; +} + +/*****************************************************************************/ +void MM_Dump(t_Handle h_MM, void *buff) +{ + t_MM *p_MM = (t_MM *)h_MM; + t_FreeBlock *p_FreeB; + t_BusyBlock *p_BusyB; + int i; + + p_BusyB = p_MM->busyBlocks; + Sprint(buff, "List of busy blocks:\n"); + while (p_BusyB) + { + Sprint(buff, "\t0x%p: (%s: b=0x%lx, e=0x%lx)\n", + p_BusyB, p_BusyB->name, p_BusyB->base, p_BusyB->end ); + p_BusyB = p_BusyB->p_Next; + } + + Sprint(buff, "\nLists of free blocks according to alignment:\n"); + for (i=0; i <= MM_MAX_ALIGNMENT; i++) + { + Sprint(buff, "%d alignment:\n", (0x1 << i)); + p_FreeB = p_MM->freeBlocks[i]; + while (p_FreeB) + { + Sprint(buff, "\t0x%p: (b=0x%lx, e=0x%lx)\n", + p_FreeB, p_FreeB->base, p_FreeB->end); + p_FreeB = p_FreeB->p_Next; + } + Sprint(buff, "\n"); + } +} --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/etc/mm.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/etc/mm.h @@ -0,0 +1,101 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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: mm.h + * + * + * Description: + * MM (Memory Management) object definitions. + * It also includes definitions of the Free Block, Busy Block + * and Memory Block structures used by the MM object. + * + ****************************************************************/ + +#ifndef __MM_H +#define __MM_H + + +#include "mm_ext.h" + +#define __ERR_MODULE__ MODULE_MM + + +#define MAKE_ALIGNED(addr, align) \ + (((uint64_t)(addr) + ((align) - 1)) & (~(((uint64_t)align) - 1))) + + +/* t_MemBlock data stucutre defines parameters of the Memory Block */ +typedef struct t_MemBlock +{ + struct t_MemBlock *p_Next; /* Pointer to the next memory block */ + + uint64_t base; /* Base address of the memory block */ + uint64_t end; /* End address of the memory block */ +} t_MemBlock; + + +/* t_FreeBlock data stucutre defines parameters of the Free Block */ +typedef struct t_FreeBlock +{ + struct t_FreeBlock *p_Next; /* Pointer to the next free block */ + + uint64_t base; /* Base address of the block */ + uint64_t end; /* End address of the block */ +} t_FreeBlock; + + +/* t_BusyBlock data stucutre defines parameters of the Busy Block */ +typedef struct t_BusyBlock +{ + struct t_BusyBlock *p_Next; /* Pointer to the next free block */ + + uint64_t base; /* Base address of the block */ + uint64_t end; /* End address of the block */ + char name[MM_MAX_NAME_LEN]; /* That block of memory was allocated for + something specified by the Name */ +} t_BusyBlock; + + +/* t_MM data structure defines parameters of the MM object */ +typedef struct t_MM +{ + t_MemBlock *memBlocks; /* List of memory blocks (Memory list) */ + t_BusyBlock *busyBlocks; /* List of busy blocks (Busy list) */ + t_FreeBlock *freeBlocks[MM_MAX_ALIGNMENT + 1]; + /* Alignment lists of free blocks (Free lists) */ + t_Handle h_Spinlock; +} t_MM; + + +#endif /* __MM_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/etc/sprint.c +++ linux-3.13.0/drivers/net/dpa/NetCommSw/etc/sprint.c @@ -0,0 +1,81 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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: sprint.c */ +/* */ +/* Description: */ +/* Debug routines (externals) */ +/*------------------------------------------------------*/ +#include "string_ext.h" +#include "stdlib_ext.h" +#include "ctype_ext.h" +#include "stdarg_ext.h" +#include "sprint_ext.h" +#include "std_ext.h" +#include "xx_ext.h" + + +int Sprint(char * buf, const char *fmt, ...) +{ + va_list args; + int i; + + va_start(args, fmt); + i=vsprintf(buf,fmt,args); + va_end(args); + return i; +} + +int Snprint(char * buf, uint32_t size, const char *fmt, ...) +{ + va_list args; + int i; + + va_start(args, fmt); + i=vsnprintf(buf,size,fmt,args); + va_end(args); + return i; +} + +#ifndef NCSW_VXWORKS +int Sscan(const char * buf, const char * fmt, ...) +{ + va_list args; + int i; + + va_start(args,fmt); + i = vsscanf(buf,fmt,args); + va_end(args); + return i; +} +#endif /* NCSW_VXWORKS */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/inc/Peripherals/crc_mac_addr_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/inc/Peripherals/crc_mac_addr_ext.h @@ -0,0 +1,363 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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: crc_mac_addr_ext.h */ +/* */ +/* Description: */ +/* Define a macro that calculate the crc value of */ +/* an Ethernet MAC address (48 bitd address */ +/*------------------------------------------------------*/ + +#ifndef __crc_mac_addr_ext_h +#define __crc_mac_addr_ext_h + +#include "std_ext.h" + + +static uint32_t crc_table[256] = +{ + 0x00000000, + 0x77073096, + 0xee0e612c, + 0x990951ba, + 0x076dc419, + 0x706af48f, + 0xe963a535, + 0x9e6495a3, + 0x0edb8832, + 0x79dcb8a4, + 0xe0d5e91e, + 0x97d2d988, + 0x09b64c2b, + 0x7eb17cbd, + 0xe7b82d07, + 0x90bf1d91, + 0x1db71064, + 0x6ab020f2, + 0xf3b97148, + 0x84be41de, + 0x1adad47d, + 0x6ddde4eb, + 0xf4d4b551, + 0x83d385c7, + 0x136c9856, + 0x646ba8c0, + 0xfd62f97a, + 0x8a65c9ec, + 0x14015c4f, + 0x63066cd9, + 0xfa0f3d63, + 0x8d080df5, + 0x3b6e20c8, + 0x4c69105e, + 0xd56041e4, + 0xa2677172, + 0x3c03e4d1, + 0x4b04d447, + 0xd20d85fd, + 0xa50ab56b, + 0x35b5a8fa, + 0x42b2986c, + 0xdbbbc9d6, + 0xacbcf940, + 0x32d86ce3, + 0x45df5c75, + 0xdcd60dcf, + 0xabd13d59, + 0x26d930ac, + 0x51de003a, + 0xc8d75180, + 0xbfd06116, + 0x21b4f4b5, + 0x56b3c423, + 0xcfba9599, + 0xb8bda50f, + 0x2802b89e, + 0x5f058808, + 0xc60cd9b2, + 0xb10be924, + 0x2f6f7c87, + 0x58684c11, + 0xc1611dab, + 0xb6662d3d, + 0x76dc4190, + 0x01db7106, + 0x98d220bc, + 0xefd5102a, + 0x71b18589, + 0x06b6b51f, + 0x9fbfe4a5, + 0xe8b8d433, + 0x7807c9a2, + 0x0f00f934, + 0x9609a88e, + 0xe10e9818, + 0x7f6a0dbb, + 0x086d3d2d, + 0x91646c97, + 0xe6635c01, + 0x6b6b51f4, + 0x1c6c6162, + 0x856530d8, + 0xf262004e, + 0x6c0695ed, + 0x1b01a57b, + 0x8208f4c1, + 0xf50fc457, + 0x65b0d9c6, + 0x12b7e950, + 0x8bbeb8ea, + 0xfcb9887c, + 0x62dd1ddf, + 0x15da2d49, + 0x8cd37cf3, + 0xfbd44c65, + 0x4db26158, + 0x3ab551ce, + 0xa3bc0074, + 0xd4bb30e2, + 0x4adfa541, + 0x3dd895d7, + 0xa4d1c46d, + 0xd3d6f4fb, + 0x4369e96a, + 0x346ed9fc, + 0xad678846, + 0xda60b8d0, + 0x44042d73, + 0x33031de5, + 0xaa0a4c5f, + 0xdd0d7cc9, + 0x5005713c, + 0x270241aa, + 0xbe0b1010, + 0xc90c2086, + 0x5768b525, + 0x206f85b3, + 0xb966d409, + 0xce61e49f, + 0x5edef90e, + 0x29d9c998, + 0xb0d09822, + 0xc7d7a8b4, + 0x59b33d17, + 0x2eb40d81, + 0xb7bd5c3b, + 0xc0ba6cad, + 0xedb88320, + 0x9abfb3b6, + 0x03b6e20c, + 0x74b1d29a, + 0xead54739, + 0x9dd277af, + 0x04db2615, + 0x73dc1683, + 0xe3630b12, + 0x94643b84, + 0x0d6d6a3e, + 0x7a6a5aa8, + 0xe40ecf0b, + 0x9309ff9d, + 0x0a00ae27, + 0x7d079eb1, + 0xf00f9344, + 0x8708a3d2, + 0x1e01f268, + 0x6906c2fe, + 0xf762575d, + 0x806567cb, + 0x196c3671, + 0x6e6b06e7, + 0xfed41b76, + 0x89d32be0, + 0x10da7a5a, + 0x67dd4acc, + 0xf9b9df6f, + 0x8ebeeff9, + 0x17b7be43, + 0x60b08ed5, + 0xd6d6a3e8, + 0xa1d1937e, + 0x38d8c2c4, + 0x4fdff252, + 0xd1bb67f1, + 0xa6bc5767, + 0x3fb506dd, + 0x48b2364b, + 0xd80d2bda, + 0xaf0a1b4c, + 0x36034af6, + 0x41047a60, + 0xdf60efc3, + 0xa867df55, + 0x316e8eef, + 0x4669be79, + 0xcb61b38c, + 0xbc66831a, + 0x256fd2a0, + 0x5268e236, + 0xcc0c7795, + 0xbb0b4703, + 0x220216b9, + 0x5505262f, + 0xc5ba3bbe, + 0xb2bd0b28, + 0x2bb45a92, + 0x5cb36a04, + 0xc2d7ffa7, + 0xb5d0cf31, + 0x2cd99e8b, + 0x5bdeae1d, + 0x9b64c2b0, + 0xec63f226, + 0x756aa39c, + 0x026d930a, + 0x9c0906a9, + 0xeb0e363f, + 0x72076785, + 0x05005713, + 0x95bf4a82, + 0xe2b87a14, + 0x7bb12bae, + 0x0cb61b38, + 0x92d28e9b, + 0xe5d5be0d, + 0x7cdcefb7, + 0x0bdbdf21, + 0x86d3d2d4, + 0xf1d4e242, + 0x68ddb3f8, + 0x1fda836e, + 0x81be16cd, + 0xf6b9265b, + 0x6fb077e1, + 0x18b74777, + 0x88085ae6, + 0xff0f6a70, + 0x66063bca, + 0x11010b5c, + 0x8f659eff, + 0xf862ae69, + 0x616bffd3, + 0x166ccf45, + 0xa00ae278, + 0xd70dd2ee, + 0x4e048354, + 0x3903b3c2, + 0xa7672661, + 0xd06016f7, + 0x4969474d, + 0x3e6e77db, + 0xaed16a4a, + 0xd9d65adc, + 0x40df0b66, + 0x37d83bf0, + 0xa9bcae53, + 0xdebb9ec5, + 0x47b2cf7f, + 0x30b5ffe9, + 0xbdbdf21c, + 0xcabac28a, + 0x53b39330, + 0x24b4a3a6, + 0xbad03605, + 0xcdd70693, + 0x54de5729, + 0x23d967bf, + 0xb3667a2e, + 0xc4614ab8, + 0x5d681b02, + 0x2a6f2b94, + 0xb40bbe37, + 0xc30c8ea1, + 0x5a05df1b, + 0x2d02ef8d +}; + + +#define GET_MAC_ADDR_CRC(addr, crc) \ +{ \ + uint32_t i; \ + uint8_t data; \ + \ + /* CRC calculation */ \ + crc = 0xffffffff; \ + for (i=0; i < 6; i++) \ + { \ + data = (uint8_t)(addr >> ((5-i)*8)); \ + crc = crc^data; \ + crc = crc_table[crc&0xff] ^ (crc>>8); \ + } \ +} \ + +/* Define a macro for getting the mirrored value of */ +/* a byte size number. (0x11010011 --> 0x11001011) */ +/* Sometimes the mirrored value of the CRC is required */ +static __inline__ uint8_t GetMirror(uint8_t n) +{ + uint8_t mirror[16] = + { + 0x00, + 0x08, + 0x04, + 0x0c, + 0x02, + 0x0a, + 0x06, + 0x0e, + 0x01, + 0x09, + 0x05, + 0x0d, + 0x03, + 0x0b, + 0x07, + 0x0f + }; + return ((uint8_t)(((mirror[n & 0x0f] << 4) | (mirror[n >> 4])))); +} + +static __inline__ uint32_t GetMirror32(uint32_t n) +{ + return (((uint32_t)GetMirror((uint8_t)(n))<<24) | + ((uint32_t)GetMirror((uint8_t)(n>>8))<<16) | + ((uint32_t)GetMirror((uint8_t)(n>>16))<<8) | + ((uint32_t)GetMirror((uint8_t)(n>>24)))); +} + +#define MIRROR GetMirror +#define MIRROR_32 GetMirror32 + + +#endif /* __crc_mac_addr_ext_h */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/inc/Peripherals/dpaa_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/inc/Peripherals/dpaa_ext.h @@ -0,0 +1,206 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 dpaa_ext.h + + @Description DPAA Application Programming Interface. +*//***************************************************************************/ +#ifndef __DPAA_EXT_H +#define __DPAA_EXT_H + +#include "std_ext.h" +#include "error_ext.h" + + +/**************************************************************************//** + @Group DPAA_grp Data Path Acceleration Architecture API + + @Description DPAA API functions, definitions and enums. + + @{ +*//***************************************************************************/ + +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(push,1) +#endif /* defined(__MWERKS__) && ... */ +#define MEM_MAP_START + +/**************************************************************************//** + @Description Frame descriptor +*//***************************************************************************/ +typedef _Packed struct t_DpaaFD { + volatile uint32_t id; /**< FD id */ + volatile uint32_t addrl; /**< Data Address */ + volatile uint32_t length; /**< Frame length */ + volatile uint32_t status; /**< FD status */ +} _PackedType t_DpaaFD; + +/**************************************************************************//** + @Description enum for defining frame format +*//***************************************************************************/ +typedef enum e_DpaaFDFormatType { + e_DPAA_FD_FORMAT_TYPE_SHORT_SBSF = 0x0, /**< Simple frame Single buffer; Offset and + small length (9b OFFSET, 20b LENGTH) */ + e_DPAA_FD_FORMAT_TYPE_LONG_SBSF = 0x2, /**< Simple frame, single buffer; big length + (29b LENGTH ,No OFFSET) */ + e_DPAA_FD_FORMAT_TYPE_SHORT_MBSF = 0x4, /**< Simple frame, Scatter Gather table; Offset + and small length (9b OFFSET, 20b LENGTH) */ + e_DPAA_FD_FORMAT_TYPE_LONG_MBSF = 0x6, /**< Simple frame, Scatter Gather table; + big length (29b LENGTH ,No OFFSET) */ + e_DPAA_FD_FORMAT_TYPE_COMPOUND = 0x1, /**< Compound Frame (29b CONGESTION-WEIGHT + No LENGTH or OFFSET) */ + e_DPAA_FD_FORMAT_TYPE_DUMMY +} e_DpaaFDFormatType; + +/**************************************************************************//** + @Collection Frame descriptor macros +*//***************************************************************************/ +#define DPAA_FD_DD_MASK 0xc0000000 /**< FD DD field mask */ +#define DPAA_FD_PID_MASK 0x3f000000 /**< FD PID field mask */ +#define DPAA_FD_ELIODN_MASK 0x0000f000 /**< FD ELIODN field mask */ +#define DPAA_FD_BPID_MASK 0x00ff0000 /**< FD BPID field mask */ +#define DPAA_FD_ADDRH_MASK 0x000000ff /**< FD ADDRH field mask */ +#define DPAA_FD_ADDRL_MASK 0xffffffff /**< FD ADDRL field mask */ +#define DPAA_FD_FORMAT_MASK 0xe0000000 /**< FD FORMAT field mask */ +#define DPAA_FD_OFFSET_MASK 0x1ff00000 /**< FD OFFSET field mask */ +#define DPAA_FD_LENGTH_MASK 0x000fffff /**< FD LENGTH field mask */ + +#define DPAA_FD_GET_DD(fd) ((((t_DpaaFD *)fd)->id & DPAA_FD_DD_MASK) >> (31-1)) /**< Macro to get FD DD field */ +#define DPAA_FD_GET_PID(fd) (((((t_DpaaFD *)fd)->id & DPAA_FD_PID_MASK) >> (31-7)) | \ + ((((t_DpaaFD *)fd)->id & DPAA_FD_ELIODN_MASK) >> (31-19-6))) /**< Macro to get FD PID field */ +#define DPAA_FD_GET_BPID(fd) ((((t_DpaaFD *)fd)->id & DPAA_FD_BPID_MASK) >> (31-15)) /**< Macro to get FD BPID field */ +#define DPAA_FD_GET_ADDRH(fd) (((t_DpaaFD *)fd)->id & DPAA_FD_ADDRH_MASK) /**< Macro to get FD ADDRH field */ +#define DPAA_FD_GET_ADDRL(fd) ((t_DpaaFD *)fd)->addrl /**< Macro to get FD ADDRL field */ +#define DPAA_FD_GET_PHYS_ADDR(fd) ((physAddress_t)(((uint64_t)DPAA_FD_GET_ADDRH(fd) << 32) | (uint64_t)DPAA_FD_GET_ADDRL(fd))) /**< Macro to get FD ADDR field */ +#define DPAA_FD_GET_FORMAT(fd) ((((t_DpaaFD *)fd)->length & DPAA_FD_FORMAT_MASK) >> (31-2)) /**< Macro to get FD FORMAT field */ +#define DPAA_FD_GET_OFFSET(fd) ((((t_DpaaFD *)fd)->length & DPAA_FD_OFFSET_MASK) >> (31-11)) /**< Macro to get FD OFFSET field */ +#define DPAA_FD_GET_LENGTH(fd) (((t_DpaaFD *)fd)->length & DPAA_FD_LENGTH_MASK) /**< Macro to get FD LENGTH field */ +#define DPAA_FD_GET_STATUS(fd) ((t_DpaaFD *)fd)->status /**< Macro to get FD STATUS field */ +#define DPAA_FD_GET_ADDR(fd) XX_PhysToVirt(DPAA_FD_GET_PHYS_ADDR(fd)) + +#define DPAA_FD_SET_DD(fd,val) (((t_DpaaFD *)fd)->id = ((((t_DpaaFD *)fd)->id & ~DPAA_FD_DD_MASK) | (((val) << (31-1)) & DPAA_FD_DD_MASK ))) /**< Macro to set FD DD field */ + /**< Macro to set FD PID field or LIODN offset*/ +#define DPAA_FD_SET_PID(fd,val) (((t_DpaaFD *)fd)->id = ((((t_DpaaFD *)fd)->id & ~(DPAA_FD_PID_MASK|DPAA_FD_ELIODN_MASK)) | ((((val) << (31-7)) & DPAA_FD_PID_MASK) | ((((val)>>6) << (31-19)) & DPAA_FD_ELIODN_MASK)))) +#define DPAA_FD_SET_BPID(fd,val) (((t_DpaaFD *)fd)->id = ((((t_DpaaFD *)fd)->id & ~DPAA_FD_BPID_MASK) | (((val) << (31-15)) & DPAA_FD_BPID_MASK))) /**< Macro to set FD BPID field */ +#define DPAA_FD_SET_ADDRH(fd,val) (((t_DpaaFD *)fd)->id = ((((t_DpaaFD *)fd)->id & ~DPAA_FD_ADDRH_MASK) | ((val) & DPAA_FD_ADDRH_MASK))) /**< Macro to set FD ADDRH field */ +#define DPAA_FD_SET_ADDRL(fd,val) ((t_DpaaFD *)fd)->addrl = (val) /**< Macro to set FD ADDRL field */ +#define DPAA_FD_SET_ADDR(fd,val) \ +do { \ + uint64_t physAddr = (uint64_t)(XX_VirtToPhys(val)); \ + DPAA_FD_SET_ADDRH(fd, ((uint32_t)(physAddr >> 32))); \ + DPAA_FD_SET_ADDRL(fd, (uint32_t)physAddr); \ +} while (0) /**< Macro to set FD ADDR field */ +#define DPAA_FD_SET_FORMAT(fd,val) (((t_DpaaFD *)fd)->length = ((((t_DpaaFD *)fd)->length & ~DPAA_FD_FORMAT_MASK) | (((val) << (31-2))& DPAA_FD_FORMAT_MASK))) /**< Macro to set FD FORMAT field */ +#define DPAA_FD_SET_OFFSET(fd,val) (((t_DpaaFD *)fd)->length = ((((t_DpaaFD *)fd)->length & ~DPAA_FD_OFFSET_MASK) | (((val) << (31-11))& DPAA_FD_OFFSET_MASK) )) /**< Macro to set FD OFFSET field */ +#define DPAA_FD_SET_LENGTH(fd,val) (((t_DpaaFD *)fd)->length = (((t_DpaaFD *)fd)->length & ~DPAA_FD_LENGTH_MASK) | ((val) & DPAA_FD_LENGTH_MASK)) /**< Macro to set FD LENGTH field */ +#define DPAA_FD_SET_STATUS(fd,val) ((t_DpaaFD *)fd)->status = (val) /**< Macro to set FD STATUS field */ +/* @} */ + +/**************************************************************************//** + @Description Frame Scatter/Gather Table Entry +*//***************************************************************************/ +typedef _Packed struct t_DpaaSGTE { + volatile uint32_t addrh; /**< Buffer Address high */ + volatile uint32_t addrl; /**< Buffer Address low */ + volatile uint32_t length; /**< Buffer length */ + volatile uint32_t offset; /**< SGTE offset */ +} _PackedType t_DpaaSGTE; + +#define DPAA_NUM_OF_SG_TABLE_ENTRY 16 + +/**************************************************************************//** + @Description Frame Scatter/Gather Table +*//***************************************************************************/ +typedef _Packed struct t_DpaaSGT { + t_DpaaSGTE tableEntry[DPAA_NUM_OF_SG_TABLE_ENTRY]; + /**< structure that hold the information about + a single S/G entry. */ +} _PackedType t_DpaaSGT; + +/**************************************************************************//** + @Description Compound Frame Table +*//***************************************************************************/ +typedef _Packed struct t_DpaaCompTbl { + t_DpaaSGTE outputBuffInfo; /**< structure that holds the information about + the compound-frame output buffer; + NOTE: this may point to a S/G table */ + t_DpaaSGTE inputBuffInfo; /**< structure that holds the information about + the compound-frame input buffer; + NOTE: this may point to a S/G table */ +} _PackedType t_DpaaCompTbl; + +/**************************************************************************//** + @Collection Frame Scatter/Gather Table Entry macros +*//***************************************************************************/ +#define DPAA_SGTE_ADDRH_MASK 0x000000ff /**< SGTE ADDRH field mask */ +#define DPAA_SGTE_ADDRL_MASK 0xffffffff /**< SGTE ADDRL field mask */ +#define DPAA_SGTE_E_MASK 0x80000000 /**< SGTE Extension field mask */ +#define DPAA_SGTE_F_MASK 0x40000000 /**< SGTE Final field mask */ +#define DPAA_SGTE_LENGTH_MASK 0x3fffffff /**< SGTE LENGTH field mask */ +#define DPAA_SGTE_BPID_MASK 0x00ff0000 /**< SGTE BPID field mask */ +#define DPAA_SGTE_OFFSET_MASK 0x00001fff /**< SGTE OFFSET field mask */ + +#define DPAA_SGTE_GET_ADDRH(sgte) (((t_DpaaSGTE *)sgte)->addrh & DPAA_SGTE_ADDRH_MASK) /**< Macro to get SGTE ADDRH field */ +#define DPAA_SGTE_GET_ADDRL(sgte) ((t_DpaaSGTE *)sgte)->addrl /**< Macro to get SGTE ADDRL field */ +#define DPAA_SGTE_GET_PHYS_ADDR(sgte) ((physAddress_t)(((uint64_t)DPAA_SGTE_GET_ADDRH(sgte) << 32) | (uint64_t)DPAA_SGTE_GET_ADDRL(sgte))) /**< Macro to get FD ADDR field */ +#define DPAA_SGTE_GET_EXTENSION(sgte) ((((t_DpaaSGTE *)sgte)->length & DPAA_SGTE_E_MASK) >> (31-0)) /**< Macro to get SGTE EXTENSION field */ +#define DPAA_SGTE_GET_FINAL(sgte) ((((t_DpaaSGTE *)sgte)->length & DPAA_SGTE_F_MASK) >> (31-1)) /**< Macro to get SGTE FINAL field */ +#define DPAA_SGTE_GET_LENGTH(sgte) (((t_DpaaSGTE *)sgte)->length & DPAA_SGTE_LENGTH_MASK) /**< Macro to get SGTE LENGTH field */ +#define DPAA_SGTE_GET_BPID(sgte) ((((t_DpaaSGTE *)sgte)->offset & DPAA_SGTE_BPID_MASK) >> (31-15)) /**< Macro to get SGTE BPID field */ +#define DPAA_SGTE_GET_OFFSET(sgte) (((t_DpaaSGTE *)sgte)->offset & DPAA_SGTE_OFFSET_MASK) /**< Macro to get SGTE OFFSET field */ +#define DPAA_SGTE_GET_ADDR(sgte) XX_PhysToVirt(DPAA_SGTE_GET_PHYS_ADDR(sgte)) + +#define DPAA_SGTE_SET_ADDRH(sgte,val) (((t_DpaaSGTE *)sgte)->addrh = ((((t_DpaaSGTE *)sgte)->addrh & ~DPAA_SGTE_ADDRH_MASK) | ((val) & DPAA_SGTE_ADDRH_MASK))) /**< Macro to set SGTE ADDRH field */ +#define DPAA_SGTE_SET_ADDRL(sgte,val) ((t_DpaaSGTE *)sgte)->addrl = (val) /**< Macro to set SGTE ADDRL field */ +#define DPAA_SGTE_SET_ADDR(sgte,val) \ +do { \ + uint64_t physAddr = (uint64_t)(XX_VirtToPhys(val)); \ + DPAA_SGTE_SET_ADDRH(sgte, ((uint32_t)(physAddr >> 32))); \ + DPAA_SGTE_SET_ADDRL(sgte, (uint32_t)physAddr); \ +} while (0) /**< Macro to set SGTE ADDR field */ +#define DPAA_SGTE_SET_EXTENSION(sgte,val) (((t_DpaaSGTE *)sgte)->length = ((((t_DpaaSGTE *)sgte)->length & ~DPAA_SGTE_E_MASK) | (((val) << (31-0))& DPAA_SGTE_E_MASK))) /**< Macro to set SGTE EXTENSION field */ +#define DPAA_SGTE_SET_FINAL(sgte,val) (((t_DpaaSGTE *)sgte)->length = ((((t_DpaaSGTE *)sgte)->length & ~DPAA_SGTE_F_MASK) | (((val) << (31-1))& DPAA_SGTE_F_MASK))) /**< Macro to set SGTE FINAL field */ +#define DPAA_SGTE_SET_LENGTH(sgte,val) (((t_DpaaSGTE *)sgte)->length = (((t_DpaaSGTE *)sgte)->length & ~DPAA_SGTE_LENGTH_MASK) | ((val) & DPAA_SGTE_LENGTH_MASK)) /**< Macro to set SGTE LENGTH field */ +#define DPAA_SGTE_SET_BPID(sgte,val) (((t_DpaaSGTE *)sgte)->offset = ((((t_DpaaSGTE *)sgte)->offset & ~DPAA_SGTE_BPID_MASK) | (((val) << (31-15))& DPAA_SGTE_BPID_MASK))) /**< Macro to set SGTE BPID field */ +#define DPAA_SGTE_SET_OFFSET(sgte,val) (((t_DpaaSGTE *)sgte)->offset = ((((t_DpaaSGTE *)sgte)->offset & ~DPAA_SGTE_OFFSET_MASK) | (((val) << (31-31))& DPAA_SGTE_OFFSET_MASK) )) /**< Macro to set SGTE OFFSET field */ +/* @} */ + +#define MEM_MAP_END +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(pop) +#endif /* defined(__MWERKS__) && ... */ + +/** @} */ /* end of DPAA_grp group */ + + +#endif /* __DPAA_EXT_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/inc/Peripherals/fm_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/inc/Peripherals/fm_ext.h @@ -0,0 +1,1347 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 fm_ext.h + + @Description FM Application Programming Interface. +*//***************************************************************************/ +#ifndef __FM_EXT +#define __FM_EXT + +#include "error_ext.h" +#include "std_ext.h" +#include "dpaa_ext.h" + + +/**************************************************************************//** + @Group FM_grp Frame Manager API + + @Description FM API functions, definitions and enums. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group FM_lib_grp FM library + + @Description FM API functions, definitions and enums + The FM module is the main driver module and is a mandatory module + for FM driver users. Before any further module initialization, + this module must be initialized. + The FM is a "singletone" module. It is responsible of the common + HW modules: FPM, DMA, common QMI, common BMI initializations and + run-time control routines. This module must be initialized always + when working with any of the FM modules. + NOTE - We assumes that the FML will be initialize only by core No. 0! + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Description enum for defining port types +*//***************************************************************************/ +typedef enum e_FmPortType { + e_FM_PORT_TYPE_OH_OFFLINE_PARSING = 0, /**< Offline parsing port (id's: 0-6, share id's with + host command, so must have exclusive id) */ + e_FM_PORT_TYPE_OH_HOST_COMMAND, /**< Host command port (id's: 0-6, share id's with + offline parsing ports, so must have exclusive id) */ + e_FM_PORT_TYPE_RX, /**< 1G Rx port (id's: 0-3) */ + e_FM_PORT_TYPE_RX_10G, /**< 10G Rx port (id's: 0) */ + e_FM_PORT_TYPE_TX, /**< 1G Tx port (id's: 0-3) */ + e_FM_PORT_TYPE_TX_10G, /**< 10G Tx port (id's: 0) */ + e_FM_PORT_TYPE_DUMMY +} e_FmPortType; + +/**************************************************************************//** + @Collection General FM defines +*//***************************************************************************/ +#define FM_MAX_NUM_OF_PARTITIONS 64 /**< Maximum number of partitions */ +#define FM_PHYS_ADDRESS_SIZE 6 /**< FM Physical address size */ +/* @} */ + + +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(push,1) +#endif /* defined(__MWERKS__) && ... */ +#define MEM_MAP_START + +/**************************************************************************//** + @Description FM physical Address +*//***************************************************************************/ +typedef _Packed struct t_FmPhysAddr { + volatile uint8_t high; /**< High part of the physical address */ + volatile uint32_t low; /**< Low part of the physical address */ +} _PackedType t_FmPhysAddr; + +/**************************************************************************//** + @Description Parse results memory layout +*//***************************************************************************/ +typedef _Packed struct t_FmPrsResult { + volatile uint8_t lpid; /**< Logical port id */ + volatile uint8_t shimr; /**< Shim header result */ + volatile uint16_t l2r; /**< Layer 2 result */ + volatile uint16_t l3r; /**< Layer 3 result */ + volatile uint8_t l4r; /**< Layer 4 result */ + volatile uint8_t cplan; /**< Classification plan id */ + volatile uint16_t nxthdr; /**< Next Header */ + volatile uint16_t cksum; /**< Checksum */ + volatile uint32_t lcv; /**< LCV */ + volatile uint8_t shim_off[3]; /**< Shim offset */ + volatile uint8_t eth_off; /**< ETH offset */ + volatile uint8_t llc_snap_off; /**< LLC_SNAP offset */ + volatile uint8_t vlan_off[2]; /**< VLAN offset */ + volatile uint8_t etype_off; /**< ETYPE offset */ + volatile uint8_t pppoe_off; /**< PPP offset */ + volatile uint8_t mpls_off[2]; /**< MPLS offset */ + volatile uint8_t ip_off[2]; /**< IP offset */ + volatile uint8_t gre_off; /**< GRE offset */ + volatile uint8_t l4_off; /**< Layer 4 offset */ + volatile uint8_t nxthdr_off; /**< Parser end point */ +} _PackedType t_FmPrsResult; + +/**************************************************************************//** + @Collection FM Parser results +*//***************************************************************************/ +#define FM_PR_L2_VLAN_STACK 0x00000100 /**< Parse Result: VLAN stack */ +#define FM_PR_L2_ETHERNET 0x00008000 /**< Parse Result: Ethernet*/ +#define FM_PR_L2_VLAN 0x00004000 /**< Parse Result: VLAN */ +#define FM_PR_L2_LLC_SNAP 0x00002000 /**< Parse Result: LLC_SNAP */ +#define FM_PR_L2_MPLS 0x00001000 /**< Parse Result: MPLS */ +#define FM_PR_L2_PPPoE 0x00000800 /**< Parse Result: PPPoE */ +/* @} */ + +/**************************************************************************//** + @Collection FM Frame descriptor macros +*//***************************************************************************/ +#define FM_FD_CMD_FCO 0x80000000 /**< Frame queue Context Override */ +#define FM_FD_CMD_RPD 0x40000000 /**< Read Prepended Data */ +#define FM_FD_CMD_UPD 0x20000000 /**< Update Prepended Data */ +#define FM_FD_CMD_DTC 0x10000000 /**< Do L4 Checksum */ +#define FM_FD_CMD_DCL4C 0x10000000 /**< Didn't calculate L4 Checksum */ +#define FM_FD_CMD_CFQ 0x00ffffff /**< Confirmation Frame Queue */ + +#define FM_FD_TX_STATUS_ERR_MASK 0x07000000 /**< TX Error FD bits */ +#define FM_FD_RX_STATUS_ERR_MASK 0x070ee3f8 /**< RX Error FD bits */ +/* @} */ + +/**************************************************************************//** + @Description Context A +*//***************************************************************************/ +typedef _Packed struct t_FmContextA { + volatile uint32_t command; /**< ContextA Command */ + volatile uint8_t res0[4]; /**< ContextA Reserved bits */ +} _PackedType t_FmContextA; + +/**************************************************************************//** + @Description Context B +*//***************************************************************************/ +typedef uint32_t t_FmContextB; + +/**************************************************************************//** + @Collection Context A macros +*//***************************************************************************/ +#define FM_CONTEXTA_OVERRIDE_MASK 0x80000000 +#define FM_CONTEXTA_ICMD_MASK 0x40000000 +#define FM_CONTEXTA_A1_VALID_MASK 0x20000000 +#define FM_CONTEXTA_MACCMD_MASK 0x00ff0000 +#define FM_CONTEXTA_MACCMD_VALID_MASK 0x00800000 +#define FM_CONTEXTA_MACCMD_SECURED_MASK 0x00100000 +#define FM_CONTEXTA_MACCMD_SC_MASK 0x000f0000 +#define FM_CONTEXTA_A1_MASK 0x0000ffff + +#define FM_CONTEXTA_GET_OVERRIDE(contextA) ((((t_FmContextA *)contextA)->command & FM_CONTEXTA_OVERRIDE_MASK) >> (31-0)) +#define FM_CONTEXTA_GET_ICMD(contextA) ((((t_FmContextA *)contextA)->command & FM_CONTEXTA_ICMD_MASK) >> (31-1)) +#define FM_CONTEXTA_GET_A1_VALID(contextA) ((((t_FmContextA *)contextA)->command & FM_CONTEXTA_A1_VALID_MASK) >> (31-2)) +#define FM_CONTEXTA_GET_A1(contextA) ((((t_FmContextA *)contextA)->command & FM_CONTEXTA_A1_MASK) >> (31-31)) +#define FM_CONTEXTA_GET_MACCMD(contextA) ((((t_FmContextA *)contextA)->command & FM_CONTEXTA_MACCMD_MASK) >> (31-15)) +#define FM_CONTEXTA_GET_MACCMD_VALID(contextA) ((((t_FmContextA *)contextA)->command & FM_CONTEXTA_MACCMD_VALID_MASK) >> (31-8)) +#define FM_CONTEXTA_GET_MACCMD_SECURED(contextA) ((((t_FmContextA *)contextA)->command & FM_CONTEXTA_MACCMD_SECURED_MASK) >> (31-11)) +#define FM_CONTEXTA_GET_MACCMD_SECURE_CHANNEL(contextA) ((((t_FmContextA *)contextA)->command & FM_CONTEXTA_MACCMD_SC_MASK) >> (31-15)) + +#define FM_CONTEXTA_SET_OVERRIDE(contextA,val) (((t_FmContextA *)contextA)->command = (uint32_t)((((t_FmContextA *)contextA)->command & ~FM_CONTEXTA_OVERRIDE_MASK) | (((uint32_t)(val) << (31-0)) & FM_CONTEXTA_OVERRIDE_MASK) )) +#define FM_CONTEXTA_SET_ICMD(contextA,val) (((t_FmContextA *)contextA)->command = (uint32_t)((((t_FmContextA *)contextA)->command & ~FM_CONTEXTA_ICMD_MASK) | (((val) << (31-1)) & FM_CONTEXTA_ICMD_MASK) )) +#define FM_CONTEXTA_SET_A1_VALID(contextA,val) (((t_FmContextA *)contextA)->command = (uint32_t)((((t_FmContextA *)contextA)->command & ~FM_CONTEXTA_A1_VALID_MASK) | (((val) << (31-2)) & FM_CONTEXTA_A1_VALID_MASK) )) +#define FM_CONTEXTA_SET_A1(contextA,val) (((t_FmContextA *)contextA)->command = (uint32_t)((((t_FmContextA *)contextA)->command & ~FM_CONTEXTA_A1_MASK) | (((val) << (31-31)) & FM_CONTEXTA_A1_MASK) )) +#define FM_CONTEXTA_SET_MACCMD(contextA,val) (((t_FmContextA *)contextA)->command = (uint32_t)((((t_FmContextA *)contextA)->command & ~FM_CONTEXTA_MACCMD_MASK) | (((val) << (31-15)) & FM_CONTEXTA_MACCMD_MASK) )) +#define FM_CONTEXTA_SET_MACCMD_VALID(contextA,val) (((t_FmContextA *)contextA)->command = (uint32_t)((((t_FmContextA *)contextA)->command & ~FM_CONTEXTA_MACCMD_VALID_MASK) | (((val) << (31-8)) & FM_CONTEXTA_MACCMD_VALID_MASK) )) +#define FM_CONTEXTA_SET_MACCMD_SECURED(contextA,val) (((t_FmContextA *)contextA)->command = (uint32_t)((((t_FmContextA *)contextA)->command & ~FM_CONTEXTA_MACCMD_SECURED_MASK) | (((val) << (31-11)) & FM_CONTEXTA_MACCMD_SECURED_MASK) )) +#define FM_CONTEXTA_SET_MACCMD_SECURE_CHANNEL(contextA,val) (((t_FmContextA *)contextA)->command = (uint32_t)((((t_FmContextA *)contextA)->command & ~FM_CONTEXTA_MACCMD_SC_MASK) | (((val) << (31-15)) & FM_CONTEXTA_MACCMD_SC_MASK) )) +/* @} */ + +/**************************************************************************//** + @Collection Context B macros +*//***************************************************************************/ +#define FM_CONTEXTB_FQID_MASK 0x00ffffff + +#define FM_CONTEXTB_GET_FQID(contextB) (*((t_FmContextB *)contextB) & FM_CONTEXTB_FQID_MASK) +#define FM_CONTEXTB_SET_FQID(contextB,val) (*((t_FmContextB *)contextB) = ((*((t_FmContextB *)contextB) & ~FM_CONTEXTB_FQID_MASK) | ((val) & FM_CONTEXTB_FQID_MASK))) +/* @} */ + +#define MEM_MAP_END +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(pop) +#endif /* defined(__MWERKS__) && ... */ + + +/**************************************************************************//** + @Description FM Exceptions +*//***************************************************************************/ +typedef enum e_FmExceptions { + e_FM_EX_DMA_BUS_ERROR, /**< DMA bus error. */ + e_FM_EX_DMA_READ_ECC, /**< Read Buffer ECC error */ + e_FM_EX_DMA_SYSTEM_WRITE_ECC, /**< Write Buffer ECC error on system side */ + e_FM_EX_DMA_FM_WRITE_ECC, /**< Write Buffer ECC error on FM side */ + e_FM_EX_FPM_STALL_ON_TASKS, /**< Stall of tasks on FPM */ + e_FM_EX_FPM_SINGLE_ECC, /**< Single ECC on FPM. */ + e_FM_EX_FPM_DOUBLE_ECC, /**< Double ECC error on FPM ram access */ + e_FM_EX_QMI_SINGLE_ECC, /**< Single ECC on QMI. */ + e_FM_EX_QMI_DOUBLE_ECC, /**< Double bit ECC occurred on QMI */ + e_FM_EX_QMI_DEQ_FROM_UNKNOWN_PORTID,/**< Dequeu from unknown port id */ + e_FM_EX_BMI_LIST_RAM_ECC, /**< Linked List RAM ECC error */ + e_FM_EX_BMI_PIPELINE_ECC, /**< Pipeline Table ECC Error */ + e_FM_EX_BMI_STATISTICS_RAM_ECC, /**< Statistics Count RAM ECC Error Enable */ + e_FM_EX_BMI_DISPATCH_RAM_ECC, /**< Dispatch RAM ECC Error Enable */ + e_FM_EX_IRAM_ECC, /**< Double bit ECC occurred on IRAM*/ + e_FM_EX_MURAM_ECC /**< Double bit ECC occurred on MURAM*/ +} e_FmExceptions; + +/**************************************************************************//** + @Group FM_init_grp FM Initialization Unit + + @Description FM Initialization Unit + + Initialization Flow + Initialization of the FM Module will be carried out by the application + according to the following sequence: + a. Calling the configuration routine with basic parameters. + b. Calling the advance initialization routines to change driver's defaults. + c. Calling the initialization routine. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Function t_FmExceptionsCallback + + @Description Exceptions user callback routine, will be called upon an + exception passing the exception identification. + + @Param[in] h_App - User's application descriptor. + @Param[in] exception - The exception. +*//***************************************************************************/ +typedef void (t_FmExceptionsCallback) (t_Handle h_App, + e_FmExceptions exception); + +/**************************************************************************//** + @Function t_FmBusErrorCallback + + @Description Bus error user callback routine, will be called upon a + bus error, passing parameters describing the errors and the owner. + + @Param[in] h_App - User's application descriptor. + @Param[in] portType - Port type (e_FmPortType) + @Param[in] portId - Port id - relative to type. + @Param[in] addr - Address that caused the error + @Param[in] tnum - Owner of error + @Param[in] liodn - Logical IO device number +*//***************************************************************************/ +typedef void (t_FmBusErrorCallback) (t_Handle h_App, + e_FmPortType portType, + uint8_t portId, + uint64_t addr, + uint8_t tnum, + uint16_t liodn); + +/**************************************************************************//** + @Description structure for defining Ucode patch for loading. +*//***************************************************************************/ +typedef struct t_FmPcdFirmwareParams { + uint32_t size; /**< Size of uCode */ + uint32_t *p_Code; /**< A pointer to the uCode */ +} t_FmPcdFirmwareParams; + +/**************************************************************************//** + @Description structure representing FM initialization parameters +*//***************************************************************************/ +#define FM_SIZE_OF_LIODN_TABLE 64 +typedef struct t_FmParams { + uint8_t fmId; /**< Index of the FM */ + + uint8_t guestId; /**< FM Partition Id */ + + uintptr_t baseAddr; /**< Relevant when guestId = NCSW_MASSTER_ID only. + A pointer to base of memory mapped FM registers (virtual); + NOTE that this should include ALL common regs of the FM including + the PCD regs area. */ + t_Handle h_FmMuram; /**< Relevant when guestId = NCSW_MASSTER_ID only. + A handle of an initialized MURAM object, + to be used by the FM */ + uint16_t fmClkFreq; /**< Relevant when guestId = NCSW_MASSTER_ID only. + In Mhz */ +#ifdef FM_PARTITION_ARRAY + uint16_t liodnBasePerPort[FM_SIZE_OF_LIODN_TABLE]; + /**< Relevant when guestId = NCSW_MASSTER_ID only. + For each partition, LIODN should be configured here. */ +#endif /* FM_PARTITION_ARRAY */ + t_FmExceptionsCallback *f_Exception; /**< Relevant when guestId = NCSW_MASSTER_ID only. + An application callback routine to + handle exceptions.*/ + t_FmBusErrorCallback *f_BusError; /**< Relevant when guestId = NCSW_MASSTER_ID only. + An application callback routine to + handle exceptions.*/ + t_Handle h_App; /**< Relevant when guestId = NCSW_MASSTER_ID only. + A handle to an application layer object; This handle will + be passed by the driver upon calling the above callbacks */ + int irq; /**< Relevant when guestId = NCSW_MASSTER_ID only. + FM interrupt source for normal events */ + int errIrq; /**< Relevant when guestId = NCSW_MASSTER_ID only. + FM interrupt source for errors */ + t_FmPcdFirmwareParams firmware; /**< Relevant when guestId = NCSW_MASSTER_ID only. + Ucode */ +} t_FmParams; + + +/**************************************************************************//** + @Function FM_Config + + @Description Creates descriptor for the FM module. + + The routine returns a handle (descriptor) to the FM object. + This descriptor must be passed as first parameter to all other + FM function calls. + + No actual initialization or configuration of FM hardware is + done by this routine. + + @Param[in] p_FmParams - A pointer to data structure of parameters + + @Return Handle to FM object, or NULL for Failure. +*//***************************************************************************/ +t_Handle FM_Config(t_FmParams *p_FmParams); + +/**************************************************************************//** + @Function FM_Init + + @Description Initializes the FM module + + @Param[in] h_Fm - FM module descriptor + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error FM_Init(t_Handle h_Fm); + +/**************************************************************************//** + @Function FM_Free + + @Description Frees all resources that were assigned to FM module. + + Calling this routine invalidates the descriptor. + + @Param[in] h_Fm - FM module descriptor + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error FM_Free(t_Handle h_Fm); + + +/**************************************************************************//** + @Group FM_advanced_init_grp FM Advanced Configuration Unit + + @Description Configuration functions used to change default values; + Note: Advanced init routines are not available for guest partition. + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Description DMA debug mode +*//***************************************************************************/ +typedef enum e_FmDmaDbgCntMode { + e_FM_DMA_DBG_NO_CNT = 0, /**< No counting */ + e_FM_DMA_DBG_CNT_DONE, /**< Count DONE commands */ + e_FM_DMA_DBG_CNT_COMM_Q_EM, /**< count command queue emergency signals */ + e_FM_DMA_DBG_CNT_INT_READ_EM, /**< Count Internal Read buffer emergency signal */ + e_FM_DMA_DBG_CNT_INT_WRITE_EM, /**< Count Internal Write buffer emergency signal */ + e_FM_DMA_DBG_CNT_FPM_WAIT, /**< Count FPM WAIT signal */ + e_FM_DMA_DBG_CNT_SIGLE_BIT_ECC, /**< Single bit ECC errors. */ + e_FM_DMA_DBG_CNT_RAW_WAR_PROT /**< Number of times there was a need for RAW & WAR protection. */ +} e_FmDmaDbgCntMode; + +/**************************************************************************//** + @Description DMA Cache Override +*//***************************************************************************/ +typedef enum e_FmDmaCacheOverride { + e_FM_DMA_NO_CACHE_OR = 0, /**< No override of the Cache field */ + e_FM_DMA_NO_STASH_DATA, /**< Data should not be stashed in system level cache */ + e_FM_DMA_MAY_STASH_DATA, /**< Data may be stashed in system level cache */ + e_FM_DMA_STASH_DATA /**< Data should be stashed in system level cache */ +} e_FmDmaCacheOverride; + +/**************************************************************************//** + @Description DMA External Bus Priority +*//***************************************************************************/ +typedef enum e_FmDmaExtBusPri { + e_FM_DMA_EXT_BUS_NORMAL = 0, /**< Normal priority */ + e_FM_DMA_EXT_BUS_EBS, /**< AXI extended bus service priority */ + e_FM_DMA_EXT_BUS_SOS, /**< AXI sos priority */ + e_FM_DMA_EXT_BUS_EBS_AND_SOS /**< AXI ebs + sos priority */ +} e_FmDmaExtBusPri; + +/**************************************************************************//** + @Description enum for choosing the field that will be output on AID +*//***************************************************************************/ +typedef enum e_FmDmaAidMode { + e_FM_DMA_AID_OUT_PORT_ID = 0, /**< 4 LSB of PORT_ID */ + e_FM_DMA_AID_OUT_TNUM /**< 4 LSB of TNUM */ +} e_FmDmaAidMode; + +/**************************************************************************//** + @Description FPM Catasrophic error behaviour +*//***************************************************************************/ +typedef enum e_FmCatastrophicErr { + e_FM_CATASTROPHIC_ERR_STALL_PORT = 0, /**< Port_ID is stalled (only reset can release it) */ + e_FM_CATASTROPHIC_ERR_STALL_TASK /**< Only errornous task is stalled */ +} e_FmCatastrophicErr; + +/**************************************************************************//** + @Description FPM DMA error behaviour +*//***************************************************************************/ +typedef enum e_FmDmaErr { + e_FM_DMA_ERR_CATASTROPHIC = 0, /**< Dma error is treated as a catastrophic error */ + e_FM_DMA_ERR_REPORT /**< Dma error is just reported */ +} e_FmDmaErr; + +/**************************************************************************//** + @Description DMA Emergency level by BMI emergency signal +*//***************************************************************************/ +typedef enum e_FmDmaEmergencyLevel { + e_FM_DMA_EM_EBS = 0, /**< EBS emergency */ + e_FM_DMA_EM_SOS /**< SOS emergency */ +} e_FmDmaEmergencyLevel; + +/**************************************************************************//** + @Collection DMA emergency options +*//***************************************************************************/ +typedef uint32_t fmEmergencyBus_t; /**< DMA emergency options */ + +#define FM_DMA_MURAM_READ_EMERGENCY 0x00800000 /**< Enable emergency for MURAM1 */ +#define FM_DMA_MURAM_WRITE_EMERGENCY 0x00400000 /**< Enable emergency for MURAM2 */ +#define FM_DMA_EXT_BUS_EMERGENCY 0x00100000 /**< Enable emergency for external bus */ +/* @} */ + +/**************************************************************************//** + @Description A structure for defining DMA emergency level +*//***************************************************************************/ +typedef struct t_FmDmaEmergency { + fmEmergencyBus_t emergencyBusSelect; /**< An OR of the busses where emergency + should be enabled */ + e_FmDmaEmergencyLevel emergencyLevel; /**< EBS/SOS */ +} t_FmDmaEmergency; + +/**************************************************************************//** + @Description structure for defining FM threshold +*//***************************************************************************/ +typedef struct t_FmThresholds { + uint8_t dispLimit; /**< The number of times a frames may + be passed in the FM before assumed to + be looping. */ + uint8_t prsDispTh; /**< This is the number pf packets that may be + queued in the parser dispatch queue*/ + uint8_t plcrDispTh; /**< This is the number pf packets that may be + queued in the policer dispatch queue*/ + uint8_t kgDispTh; /**< This is the number pf packets that may be + queued in the keygen dispatch queue*/ + uint8_t bmiDispTh; /**< This is the number pf packets that may be + queued in the BMI dispatch queue*/ + uint8_t qmiEnqDispTh; /**< This is the number pf packets that may be + queued in the QMI enqueue dispatch queue*/ + uint8_t qmiDeqDispTh; /**< This is the number pf packets that may be + queued in the QMI dequeue dispatch queue*/ + uint8_t fmCtl1DispTh; /**< This is the number pf packets that may be + queued in fmCtl1 dispatch queue*/ + uint8_t fmCtl2DispTh; /**< This is the number pf packets that may be + queued in fmCtl2 dispatch queue*/ +} t_FmThresholds; + + +/**************************************************************************//** + @Description structure for defining DMA thresholds +*//***************************************************************************/ +typedef struct t_FmDmaThresholds { + uint8_t assertEmergency; /**< When this value is reached, + assert emergency (Threshold)*/ + uint8_t clearEmergency; /**< After emergency is asserted, it is held + until this value is reached (Hystheresis) */ +} t_FmDmaThresholds; + + +/**************************************************************************//** + @Function FM_ConfigResetOnInit + + @Description Tell the driver whether to reset the FM before initialization or + not. It changes the default configuration [FALSE]. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] enable When TRUE, FM will be reset before any initialization. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigResetOnInit(t_Handle h_Fm, bool enable); + +/**************************************************************************//** + @Function FM_ConfigTotalNumOfTasks + + @Description Change the total number of tasks from its default + configuration [BMI_MAX_NUM_OF_TASKS] + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] totalNumOfTasks The selected new value. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigTotalNumOfTasks(t_Handle h_Fm, uint8_t totalNumOfTasks); + +/**************************************************************************//** + @Function FM_ConfigTotalFifoSize + + @Description Change the total Fifo size from its default + configuration [BMI_MAX_FIFO_SIZE] + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] totalFifoSize The selected new value. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigTotalFifoSize(t_Handle h_Fm, uint32_t totalFifoSize); + +/**************************************************************************//** + @Function FM_ConfigMaxNumOfOpenDmas + + @Description Change the maximum allowed open DMA's for this FM from its default + configuration [BMI_MAX_NUM_OF_DMAS] + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] maxNumOfOpenDmas The selected new value. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigMaxNumOfOpenDmas(t_Handle h_Fm, uint8_t maxNumOfOpenDmas); + +/**************************************************************************//** + @Function FM_ConfigThresholds + + @Description Calling this routine changes the internal driver data base + from its default FM threshold configuration: + dispLimit: [0] + prsDispTh: [16] + plcrDispTh: [16] + kgDispTh: [16] + bmiDispTh: [16] + qmiEnqDispTh: [16] + qmiDeqDispTh: [16] + fmCtl1DispTh: [16] + fmCtl2DispTh: [16] + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] p_FmThresholds A structure of threshold parameters. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigThresholds(t_Handle h_Fm, t_FmThresholds *p_FmThresholds); + + /**************************************************************************//** + @Function FM_ConfigDmaCacheOverride + + @Description Calling this routine changes the internal driver data base + from its default configuration of cache override mode [e_FM_DMA_NO_CACHE_OR] + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] cacheOverride The selected new value. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigDmaCacheOverride(t_Handle h_Fm, e_FmDmaCacheOverride cacheOverride); + +/**************************************************************************//** + @Function FM_ConfigDmaAidOverride + + @Description Calling this routine changes the internal driver data base + from its default configuration of aid override mode [TRUE] + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] aidOverride The selected new value. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigDmaAidOverride(t_Handle h_Fm, bool aidOverride); + +/**************************************************************************//** + @Function FM_ConfigDmaAidMode + + @Description Calling this routine changes the internal driver data base + from its default configuration of aid mode [e_FM_DMA_AID_OUT_TNUM] + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] aidMode The selected new value. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigDmaAidMode(t_Handle h_Fm, e_FmDmaAidMode aidMode); + +/**************************************************************************//** + @Function FM_ConfigDmaAxiDbgNumOfBeats + + @Description Calling this routine changes the internal driver data base + from its default configuration of axi debug [1] + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] axiDbgNumOfBeats The selected new value. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigDmaAxiDbgNumOfBeats(t_Handle h_Fm, uint8_t axiDbgNumOfBeats); + +/**************************************************************************//** + @Function FM_ConfigDmaCamNumOfEntries + + @Description Calling this routine changes the internal driver data base + from its default configuration of number of CAM entries [32] + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] numOfEntries The selected new value. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigDmaCamNumOfEntries(t_Handle h_Fm, uint8_t numOfEntries); + +/**************************************************************************//** + @Function FM_ConfigDmaWatchdog + + @Description Calling this routine changes the internal driver data base + from its default watchdog configuration, which is disabled + [0]. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] watchDogValue The selected new value - in microseconds. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigDmaWatchdog(t_Handle h_Fm, uint32_t watchDogValue); + +/**************************************************************************//** + @Function FM_ConfigDmaWriteBufThresholds + + @Description Calling this routine changes the internal driver data base + from its default configuration of DMA write buffer threshold + assertEmergency: [DMA_THRESH_MAX_BUF] + clearEmergency: [DMA_THRESH_MAX_BUF] + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] p_FmDmaThresholds A structure of thresholds to define emergency behavior - + When 'assertEmergency' value is reached, emergency is asserted, + then it is held until 'clearEmergency' value is reached. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigDmaWriteBufThresholds(t_Handle h_Fm, t_FmDmaThresholds *p_FmDmaThresholds); + + /**************************************************************************//** + @Function FM_ConfigDmaCommQThresholds + + @Description Calling this routine changes the internal driver data base + from its default configuration of DMA command queue threshold + assertEmergency: [DMA_THRESH_MAX_COMMQ] + clearEmergency: [DMA_THRESH_MAX_COMMQ] + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] p_FmDmaThresholds A structure of thresholds to define emergency behavior - + When 'assertEmergency' value is reached, emergency is asserted, + then it is held until 'clearEmergency' value is reached.. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigDmaCommQThresholds(t_Handle h_Fm, t_FmDmaThresholds *p_FmDmaThresholds); + +/**************************************************************************//** + @Function FM_ConfigDmaReadBufThresholds + + @Description Calling this routine changes the internal driver data base + from its default configuration of DMA read buffer threshold + assertEmergency: [DMA_THRESH_MAX_BUF] + clearEmergency: [DMA_THRESH_MAX_BUF] + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] p_FmDmaThresholds A structure of thresholds to define emergency behavior - + When 'assertEmergency' value is reached, emergency is asserted, + then it is held until 'clearEmergency' value is reached.. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigDmaReadBufThresholds(t_Handle h_Fm, t_FmDmaThresholds *p_FmDmaThresholds); + +/**************************************************************************//** + @Function FM_ConfigDmaSosEmergencyThreshold + + @Description Calling this routine changes the internal driver data base + from its default dma SOS emergency configuration [0] + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] dmaSosEmergency The selected new value. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigDmaSosEmergencyThreshold(t_Handle h_Fm, uint32_t dmaSosEmergency); + +/**************************************************************************//** + @Function FM_ConfigEnableCounters + + @Description Calling this routine changes the internal driver data base + from its default counters configuration where counters are disabled. + + @Param[in] h_Fm A handle to an FM Module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigEnableCounters(t_Handle h_Fm); + +/**************************************************************************//** + @Function FM_ConfigDmaDbgCounter + + @Description Calling this routine changes the internal driver data base + from its default DMA debug counters configuration [e_FM_DMA_DBG_NO_CNT] + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] fmDmaDbgCntMode An enum selecting the debug counter mode. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigDmaDbgCounter(t_Handle h_Fm, e_FmDmaDbgCntMode fmDmaDbgCntMode); + +/**************************************************************************//** + @Function FM_ConfigDmaStopOnBusErr + + @Description Calling this routine changes the internal driver data base + from its default selection of bus error behavior [FALSE] + + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] stop TRUE to stop on bus error, FALSE to continue. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). + Only if bus error is enabled. +*//***************************************************************************/ +t_Error FM_ConfigDmaStopOnBusErr(t_Handle h_Fm, bool stop); + +/**************************************************************************//** + @Function FM_ConfigDmaEmergency + + @Description Calling this routine changes the internal driver data base + from its default selection of DMA emergency where's it's disabled. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] p_Emergency An OR mask of all required options. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigDmaEmergency(t_Handle h_Fm, t_FmDmaEmergency *p_Emergency); + +/**************************************************************************//** + @Function FM_ConfigDmaEmergencySmoother + + @Description sets the minimum amount of DATA beats transferred on the AXI + READ and WRITE ports before lowering the emergency level. + By default smother is disabled. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] emergencyCnt emergency switching counter. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigDmaEmergencySmoother(t_Handle h_Fm, uint32_t emergencyCnt); + +/**************************************************************************//** + @Function FM_ConfigDmaErr + + @Description Calling this routine changes the internal driver data base + from its default DMA error treatment [e_FM_DMA_ERR_CATASTROPHIC] + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] dmaErr The selected new choice. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigDmaErr(t_Handle h_Fm, e_FmDmaErr dmaErr); + +/**************************************************************************//** + @Function FM_ConfigCatastrophicErr + + @Description Calling this routine changes the internal driver data base + from its default behavior on catastrophic error [e_FM_CATASTROPHIC_ERR_STALL_PORT] + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] catastrophicErr The selected new choice. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigCatastrophicErr(t_Handle h_Fm, e_FmCatastrophicErr catastrophicErr); + +/**************************************************************************//** + @Function FM_ConfigEnableMuramTestMode + + @Description Calling this routine changes the internal driver data base + from its default selection of test mode where it's disabled. + + @Param[in] h_Fm A handle to an FM Module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigEnableMuramTestMode(t_Handle h_Fm); + +/**************************************************************************//** + @Function FM_ConfigEnableIramTestMode + + @Description Calling this routine changes the internal driver data base + from its default selection of test mode where it's disabled. + + @Param[in] h_Fm A handle to an FM Module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigEnableIramTestMode(t_Handle h_Fm); + +/**************************************************************************//** + @Function FM_ConfigHaltOnExternalActivation + + @Description Calling this routine changes the internal driver data base + from its default selection of FM behaviour on external halt + activation [FALSE]. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] enable TRUE to enable halt on external halt + activation. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigHaltOnExternalActivation(t_Handle h_Fm, bool enable); + +/**************************************************************************//** + @Function FM_ConfigHaltOnUnrecoverableEccError + + @Description Calling this routine changes the internal driver data base + from its default selection of FM behaviour on unrecoverable + Ecc error [FALSE]. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] enable TRUE to enable halt on unrecoverable Ecc error + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigHaltOnUnrecoverableEccError(t_Handle h_Fm, bool enable); + +/**************************************************************************//** + @Function FM_ConfigException + + @Description Calling this routine changes the internal driver data base + from its default selection of exceptions enablement. + By default all exceptions are enabled. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] exception The exception to be selected. + @Param[in] enable TRUE to enable interrupt, FALSE to mask it. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigException(t_Handle h_Fm, e_FmExceptions exception, bool enable); + +/**************************************************************************//** + @Function FM_ConfigExternalEccRamsEnable + + @Description Calling this routine changes the internal driver data base + from its default [FALSE]. + When this option is enabled Rams ECC enable is not effected + by the FPM RCR bit, but by a JTAG. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] enable TRUE to enable this option. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigExternalEccRamsEnable(t_Handle h_Fm, bool enable); + +/**************************************************************************//** + @Function FM_ConfigTnumAgingPeriod + + @Description Calling this routine changes the internal driver data base + from its default configuration for aging of dequeue TNUM's + in the QMI.[0] + Note that this functionality is not available in all chips. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] tnumAgingPeriod Tnum Aging Period in microseconds. + Note that period is recalculated in units of + 64 FM clocks. Driver will pick the closest + possible period. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigTnumAgingPeriod(t_Handle h_Fm, uint16_t tnumAgingPeriod); + +/** @} */ /* end of FM_advanced_init_grp group */ +/** @} */ /* end of FM_init_grp group */ + + +/**************************************************************************//** + @Group FM_runtime_control_grp FM Runtime Control Unit + + @Description FM Runtime control unit API functions, definitions and enums. + The FM driver provides a set of control routines for each module. + These routines may only be called after the module was fully + initialized (both configuration and initialization routines were + called). They are typically used to get information from hardware + (status, counters/statistics, revision etc.), to modify a current + state or to force/enable a required action. Run-time control may + be called whenever necessary and as many times as needed. + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Collection General FM defines. +*//***************************************************************************/ +#define FM_MAX_NUM_OF_VALID_PORTS (FM_MAX_NUM_OF_OH_PORTS + \ + FM_MAX_NUM_OF_1G_RX_PORTS + \ + FM_MAX_NUM_OF_10G_RX_PORTS + \ + FM_MAX_NUM_OF_1G_TX_PORTS + \ + FM_MAX_NUM_OF_10G_TX_PORTS) +/* @} */ + +/**************************************************************************//** + @Description Structure for Port bandwidth requirement. Port is identified + by type and relative id. +*//***************************************************************************/ +typedef struct t_FmPortBandwidth { + e_FmPortType type; /**< FM port type */ + uint8_t relativePortId; /**< Type relative port id */ + uint8_t bandwidth; /**< bandwidth - (in term of percents) */ +} t_FmPortBandwidth; + +/**************************************************************************//** + @Description A Structure containing an array of Port bandwidth requirements. + The user should state the ports requiring bandwidth in terms of + percentage - i.e. all port's bandwidths in the array must add + up to 100. +*//***************************************************************************/ +typedef struct t_FmPortsBandwidthParams { + uint8_t numOfPorts; /**< num of ports listed in the array below */ + t_FmPortBandwidth portsBandwidths[FM_MAX_NUM_OF_VALID_PORTS]; + /**< for each port, it's bandwidth (all port's + bandwidths must add up to 100.*/ +} t_FmPortsBandwidthParams; + +/**************************************************************************//** + @Description DMA Emergency control on MURAM +*//***************************************************************************/ +typedef enum e_FmDmaMuramPort { + e_FM_DMA_MURAM_PORT_WRITE, /**< MURAM write port */ + e_FM_DMA_MURAM_PORT_READ /**< MURAM read port */ +} e_FmDmaMuramPort; + +/**************************************************************************//** + @Description enum for defining FM counters +*//***************************************************************************/ +typedef enum e_FmCounters { + e_FM_COUNTERS_ENQ_TOTAL_FRAME = 0, /**< QMI total enqueued frames counter */ + e_FM_COUNTERS_DEQ_TOTAL_FRAME, /**< QMI total dequeued frames counter */ + e_FM_COUNTERS_DEQ_0, /**< QMI 0 frames from QMan counter */ + e_FM_COUNTERS_DEQ_1, /**< QMI 1 frames from QMan counter */ + e_FM_COUNTERS_DEQ_2, /**< QMI 2 frames from QMan counter */ + e_FM_COUNTERS_DEQ_3, /**< QMI 3 frames from QMan counter */ + e_FM_COUNTERS_DEQ_FROM_DEFAULT, /**< QMI dequeue from default queue counter */ + e_FM_COUNTERS_DEQ_FROM_CONTEXT, /**< QMI dequeue from FQ context counter */ + e_FM_COUNTERS_DEQ_FROM_FD, /**< QMI dequeue from FD command field counter */ + e_FM_COUNTERS_DEQ_CONFIRM, /**< QMI dequeue confirm counter */ + e_FM_COUNTERS_SEMAPHOR_ENTRY_FULL_REJECT, /**< DMA semaphor reject due to full entry counter */ + e_FM_COUNTERS_SEMAPHOR_QUEUE_FULL_REJECT, /**< DMA semaphor reject due to full CAM queue counter */ + e_FM_COUNTERS_SEMAPHOR_SYNC_REJECT /**< DMA semaphor reject due to sync counter */ +} e_FmCounters; + +/**************************************************************************//** + @Description structure for returning revision information +*//***************************************************************************/ +typedef struct t_FmRevisionInfo { + uint8_t majorRev; /**< Major revision */ + uint8_t minorRev; /**< Minor revision */ +} t_FmRevisionInfo; + +/**************************************************************************//** + @Description struct for defining DMA status +*//***************************************************************************/ +typedef struct t_FmDmaStatus { + bool cmqNotEmpty; /**< Command queue is not empty */ + bool busError; /**< Bus error occurred */ + bool readBufEccError; /**< Double ECC error on buffer Read */ + bool writeBufEccSysError; /**< Double ECC error on buffer write from system side */ + bool writeBufEccFmError; /**< Double ECC error on buffer write from FM side */ +} t_FmDmaStatus; + + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) +/**************************************************************************//** + @Function FM_DumpRegs + + @Description Dumps all FM registers + + @Param[in] h_Fm A handle to an FM Module. + + @Return E_OK on success; + + @Cautions Allowed only FM_Init(). +*//***************************************************************************/ +t_Error FM_DumpRegs(t_Handle h_Fm); +#endif /* (defined(DEBUG_ERRORS) && ... */ + +/**************************************************************************//** + @Function FM_SetException + + @Description Calling this routine enables/disables the specified exception. + Note: Not available for guest partition. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] exception The exception to be selected. + @Param[in] enable TRUE to enable interrupt, FALSE to mask it. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +t_Error FM_SetException(t_Handle h_Fm, e_FmExceptions exception, bool enable); + +/**************************************************************************//** + @Function FM_SetPortsBandwidth + + @Description Sets relative weights between ports when accessing common resources. + Note: Not available for guest partition. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] p_PortsBandwidth A structure of ports bandwidths in percentage, i.e. + total must equal 100. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +t_Error FM_SetPortsBandwidth(t_Handle h_Fm, t_FmPortsBandwidthParams *p_PortsBandwidth); + +/**************************************************************************//** + @Function FM_EnableRamsEcc + + @Description Enables ECC mechanism for all the different FM RAM's; E.g. IRAM, + MURAM, Parser, Keygen, Policer, etc. + Note: + If FM_ConfigExternalEccRamsEnable was called to enable external + setting of ECC, this routine effects IRAM ECC only. + This routine is also called by the driver if an ECC exception is + enabled. + Note: Not available for guest partition. + + @Param[in] h_Fm A handle to an FM Module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_EnableRamsEcc(t_Handle h_Fm); + +/**************************************************************************//** + @Function FM_DisableRamsEcc + + @Description Disables ECC mechanism for all the different FM RAM's; E.g. IRAM, + MURAM, Parser, Keygen, Policer, etc. + Note: + If FM_ConfigExternalEccRamsEnable was called to enable external + setting of ECC, this routine effects IRAM ECC only. + In opposed to FM_EnableRamsEcc, this routine must be called + explicitly to disable all Rams ECC. + Note: Not available for guest partition. + + + @Param[in] h_Fm A handle to an FM Module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_DisableRamsEcc(t_Handle h_Fm); + +/**************************************************************************//** + @Function FM_GetRevision + + @Description Returns the FM revision + + @Param[in] h_Fm A handle to an FM Module. + @Param[out] p_FmRevisionInfo A structure of revision information parameters. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +t_Error FM_GetRevision(t_Handle h_Fm, t_FmRevisionInfo *p_FmRevisionInfo); + +/**************************************************************************//** + @Function FM_GetCounter + + @Description Reads one of the FM counters. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] counter The requested counter. + + @Return Counter's current value. + + @Cautions Allowed only following FM_Init(). + Note that it is user's responsibility to call this routine only + for enabled counters, and there will be no indication if a + disabled counter is accessed. +*//***************************************************************************/ +uint32_t FM_GetCounter(t_Handle h_Fm, e_FmCounters counter); + +/**************************************************************************//** + @Function FM_ModifyCounter + + @Description Sets a value to an enabled counter. Use "0" to reset the counter. + Note: Not available for guest partition. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] counter The requested counter. + @Param[in] val The requested value to be written into the counter. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +t_Error FM_ModifyCounter(t_Handle h_Fm, e_FmCounters counter, uint32_t val); + +/**************************************************************************//** + @Function FM_Resume + + @Description Release FM after halt FM command or after unrecoverable ECC error. + Note: Not available for guest partition. + + @Param[in] h_Fm A handle to an FM Module. + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +void FM_Resume(t_Handle h_Fm); + +/**************************************************************************//** + @Function FM_SetDmaEmergency + + @Description Manual emergency set + Note: Not available for guest partition. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] muramPort MURAM direction select. + @Param[in] enable TRUE to manually enable emergency, FALSE to disable. + + @Return None. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +void FM_SetDmaEmergency(t_Handle h_Fm, e_FmDmaMuramPort muramPort, bool enable); + +/**************************************************************************//** + @Function FM_SetDmaExtBusPri + + @Description Manual emergency set + Note: Not available for guest partition. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] pri External bus priority select + + @Return None. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +void FM_SetDmaExtBusPri(t_Handle h_Fm, e_FmDmaExtBusPri pri); + +/**************************************************************************//** + @Function FM_ForceIntr + + @Description Causes an interrupt event on the requested source. + Note: Not available for guest partition. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] exception An exception to be forced. + + @Return E_OK on success; Error code if the exception is not enabled, + or is not able to create interrupt. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +t_Error FM_ForceIntr (t_Handle h_Fm, e_FmExceptions exception); + +/**************************************************************************//** + @Function FM_GetDmaStatus + + @Description Reads the DMA current status + + @Param[in] h_Fm A handle to an FM Module. + @Param[out] p_FmDmaStatus A structure of DMA status parameters. + + @Return None + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +void FM_GetDmaStatus(t_Handle h_Fm, t_FmDmaStatus *p_FmDmaStatus); + +/**************************************************************************//** + @Function FM_GetPcdHandle + + @Description Used by FMC in order to get PCD handle + + @Param[in] h_Fm A handle to an FM Module. + + @Return A handle to the PCD module, NULL if uninitialized. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +t_Handle FM_GetPcdHandle(t_Handle h_Fm); + +/**************************************************************************//** + @Function FM_ErrorIsr + Note: Not available for guest partition. + + @Description FM interrupt-service-routine for errors. + + @Param[in] h_Fm A handle to an FM Module. + + @Return E_OK on success; E_EMPTY if no errors found in register, other + error code otherwise. + + @Cautions Allowed only following FM_Init(). + This routine should NOT be called from guest-partition + (i.e. guestId != NCSW_MASTER_ID) +*//***************************************************************************/ +t_Error FM_ErrorIsr(t_Handle h_Fm); + +/**************************************************************************//** + @Function FM_EventIsr + Note: Not available for guest partition. + + @Description FM interrupt-service-routine for normal events. + + @Param[in] h_Fm A handle to an FM Module. + + @Cautions Allowed only following FM_Init(). + This routine should NOT be called from guest-partition + (i.e. guestId != NCSW_MASTER_ID) +*//***************************************************************************/ +void FM_EventIsr(t_Handle h_Fm); + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) +/**************************************************************************//** + @Function FmDumpPortRegs + + @Description Dumps FM port registers which are part of FM common registers + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] hardwarePortId HW port id. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only FM_Init(). +*//***************************************************************************/ +t_Error FmDumpPortRegs(t_Handle h_Fm,uint8_t hardwarePortId); +#endif /* (defined(DEBUG_ERRORS) && ... */ + + +/** @} */ /* end of FM_runtime_control_grp group */ +/** @} */ /* end of FM_lib_grp group */ +/** @} */ /* end of FM_grp group */ + +#endif /* __FM_EXT */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/inc/Peripherals/fm_mac_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/inc/Peripherals/fm_mac_ext.h @@ -0,0 +1,713 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 fm_mac_ext.h + + @Description FM MAC ... +*//***************************************************************************/ +#ifndef __FM_MAC_EXT_H +#define __FM_MAC_EXT_H + +#include "std_ext.h" +#include "enet_ext.h" + + +/**************************************************************************//** + + @Group FM_grp Frame Manager API + + @Description FM API functions, definitions and enums + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group FM_mac_grp FM MAC + + @Description FM MAC API functions, definitions and enums + + @{ +*//***************************************************************************/ + + +/**************************************************************************//** + @Description FM MAC Exceptions +*//***************************************************************************/ +typedef enum e_FmMacExceptions { + e_FM_MAC_EX_10G_MDIO_SCAN_EVENTMDIO = 0 + ,e_FM_MAC_EX_10G_MDIO_CMD_CMPL + ,e_FM_MAC_EX_10G_REM_FAULT + ,e_FM_MAC_EX_10G_LOC_FAULT + ,e_FM_MAC_EX_10G_1TX_ECC_ER + ,e_FM_MAC_EX_10G_TX_FIFO_UNFL + ,e_FM_MAC_EX_10G_TX_FIFO_OVFL + ,e_FM_MAC_EX_10G_TX_ER + ,e_FM_MAC_EX_10G_RX_FIFO_OVFL + ,e_FM_MAC_EX_10G_RX_ECC_ER + ,e_FM_MAC_EX_10G_RX_JAB_FRM + ,e_FM_MAC_EX_10G_RX_OVRSZ_FRM + ,e_FM_MAC_EX_10G_RX_RUNT_FRM + ,e_FM_MAC_EX_10G_RX_FRAG_FRM + ,e_FM_MAC_EX_10G_RX_LEN_ER + ,e_FM_MAC_EX_10G_RX_CRC_ER + ,e_FM_MAC_EX_10G_RX_ALIGN_ER + ,e_FM_MAC_EX_1G_BAB_RX + ,e_FM_MAC_EX_1G_RX_CTL + ,e_FM_MAC_EX_1G_GRATEFUL_TX_STP_COMPLET + ,e_FM_MAC_EX_1G_BAB_TX + ,e_FM_MAC_EX_1G_TX_CTL + ,e_FM_MAC_EX_1G_TX_ERR + ,e_FM_MAC_EX_1G_LATE_COL + ,e_FM_MAC_EX_1G_COL_RET_LMT + ,e_FM_MAC_EX_1G_TX_FIFO_UNDRN + ,e_FM_MAC_EX_1G_MAG_PCKT + ,e_FM_MAC_EX_1G_MII_MNG_RD_COMPLET + ,e_FM_MAC_EX_1G_MII_MNG_WR_COMPLET + ,e_FM_MAC_EX_1G_GRATEFUL_RX_STP_COMPLET + ,e_FM_MAC_EX_1G_TX_DATA_ERR + ,e_FM_MAC_EX_1G_RX_DATA_ERR + ,e_FM_MAC_EX_1G_1588_TS_RX_ERR + ,e_FM_MAC_EX_1G_RX_MIB_CNT_OVFL +} e_FmMacExceptions; + +/**************************************************************************//** + @Description TM MAC statistics level +*//***************************************************************************/ +typedef enum e_FmMacStatisticsLevel { + e_FM_MAC_NONE_STATISTICS = 0, /**< No statistics */ + e_FM_MAC_PARTIAL_STATISTICS, /**< Only error counters are available. Optimized for performance */ + e_FM_MAC_FULL_STATISTICS /**< All counters available. Not optimized for performance */ +} e_FmMacStatisticsLevel; + + +/**************************************************************************//** + @Function t_FmMacExceptionCallback + + @Description Fm Mac Exception Callback from FM MAC to the user + + @Param[in] h_App - Handle to the upper layer handler + + @Param[in] exceptions - The exception that occurred + + + @Return void. +*//***************************************************************************/ +typedef void (t_FmMacExceptionCallback)(t_Handle h_App, e_FmMacExceptions exceptions); + + +/**************************************************************************//** + @Description TM MAC statistics rfc3635 +*//***************************************************************************/ +typedef struct t_FmMacStatistics { +/* RMON */ + uint64_t eStatPkts64; /**< r-10G tr-DT 64 byte frame counter */ + uint64_t eStatPkts65to127; /**< r-10G 65 to 127 byte frame counter */ + uint64_t eStatPkts128to255; /**< r-10G 128 to 255 byte frame counter */ + uint64_t eStatPkts256to511; /**< r-10G 256 to 511 byte frame counter */ + uint64_t eStatPkts512to1023; /**< r-10G 512 to 1023 byte frame counter */ + uint64_t eStatPkts1024to1518; /**< r-10G 1024 to 1518 byte frame counter */ + uint64_t eStatPkts1519to1522; /**< r-10G 1519 to 1522 byte good frame count */ +/* */ + uint64_t eStatFragments; /**< Total number of packets that were less than 64 octets long with a wrong CRC.*/ + uint64_t eStatJabbers; /**< Total number of packets longer than valid maximum length octets */ + uint64_t eStatsDropEvents; /**< number of dropped packets due to internal errors of the MAC Client. */ + uint64_t eStatCRCAlignErrors; /**< Incremented when frames of correct length but with CRC error are received.*/ + uint64_t eStatUndersizePkts; /**< Total number of packets that were less than 64 octets long with a good CRC.*/ + uint64_t eStatOversizePkts; /**< T,B.D*/ +/* Pause */ + uint64_t teStatPause; /**< Pause MAC Control received */ + uint64_t reStatPause; /**< Pause MAC Control sent */ + +/* MIB II */ + uint64_t ifInOctets; /**< Total number of byte received. */ + uint64_t ifInPkts; /**< Total number of packets received.*/ + uint64_t ifInMcastPkts; /**< Total number of multicast frame received*/ + uint64_t ifInBcastPkts; /**< Total number of broadcast frame received */ + uint64_t ifInDiscards; /**< Frames received, but discarded due to problems within the MAC RX. */ + uint64_t ifInErrors; /**< Number of frames received with error: + - FIFO Overflow Error + - CRC Error + - Frame Too Long Error + - Alignment Error + - The dedicated Error Code (0xfe, not a code error) was received */ + uint64_t ifOutOctets; /**< Total number of byte sent. */ + uint64_t ifOutPkts; /**< Total number of packets sent .*/ + uint64_t ifOutMcastPkts; /**< Total number of multicast frame sent */ + uint64_t ifOutBcastPkts; /**< Total number of multicast frame sent */ + uint64_t ifOutDiscards; /**< Frames received, but discarded due to problems within the MAC TX N/A!.*/ + uint64_t ifOutErrors; /**< Number of frames transmitted with error: + - FIFO Overflow Error + - FIFO Underflow Error + - Other */ +} t_FmMacStatistics; + + +/**************************************************************************//** + @Group FM_mac_init_grp Initialization Unit + + @Description FM MAC Initialization Unit + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Description FM MAC config input +*//***************************************************************************/ +typedef struct t_FmMacParams { + uintptr_t baseAddr; /**< Base of memory mapped FM MAC registers */ + t_EnetAddr addr; /**< MAC address of device; First octet is sent first */ + uint8_t macId; /**< MAC ID <10G 0> */ + e_EnetMode enetMode; /**< Ethernet operation mode (MAC-PHY interface and speed) */ + t_Handle h_Fm; /**< A handle to the FM object this port related to */ + int mdioIrq; /**< MDIO exceptions interrupt source - not valid for all + MACs; MUST be set to 'NO_IRQ' for MACs that don't have + mdio-irq, or for polling */ + t_FmMacExceptionCallback *f_Event; /**< MDIO Events Callback Routine */ + t_FmMacExceptionCallback *f_Exception; /**< Exception Callback Routine */ + t_Handle h_App; /**< A handle to an application layer object; This handle will + be passed by the driver upon calling the above callbacks */ +} t_FmMacParams; + + +/**************************************************************************//** + @Function FM_MAC_Config + + @Description Creates descriptor for the FM MAC module. + + The routine returns a handle (descriptor) to the FM MAC object. + This descriptor must be passed as first parameter to all other + FM MAC function calls. + + No actual initialization or configuration of FM MAC hardware is + done by this routine. + + @Param[in] p_FmMacParam - Pointer to data structure of parameters + + @Retval Handle to FM MAC object, or NULL for Failure. +*//***************************************************************************/ +t_Handle FM_MAC_Config (t_FmMacParams *p_FmMacParam); + +/**************************************************************************//** + @Function FM_MAC_Init + + @Description Initializes the FM MAC module + + @Param[in] h_FmMac - FM module descriptor + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error FM_MAC_Init (t_Handle h_FmMac); + +/**************************************************************************//** + @Function FM_Free + + @Description Frees all resources that were assigned to FM MAC module. + + Calling this routine invalidates the descriptor. + + @Param[in] h_FmMac - FM module descriptor + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error FM_MAC_Free (t_Handle h_FmMac); + + +/**************************************************************************//** + @Group FM_mac_advanced_init_grp Advanced Configuration Unit + + @Description Configuration functions used to change default values. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Function FM_MAC_ConfigResetOnInit + + @Description Tell the driver whether to reset the FM MAC before initialization or + not. It changes the default configuration [FALSE]. + + @Param[in] h_FmMac A handle to a FM MAC Module. + @Param[in] enable When TRUE, FM will be reset before any initialization. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_MAC_Config() and before FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_ConfigResetOnInit (t_Handle h_FmMac, bool enable); + +/**************************************************************************//** + @Function FM_MAC_ConfigLoopback + + @Description Enable/Disable internal loopback mode + + @Param[in] h_FmMac A handle to a FM MAC Module. + @Param[in] enable TRUE to enable or FALSE to disable. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_MAC_Config() and before FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_ConfigLoopback (t_Handle h_FmMac, bool enable); + +/**************************************************************************//** + @Function FM_MAC_ConfigMaxFrameLength + + @Description Setup maximum Frame Length + + @Param[in] h_FmMac A handle to a FM MAC Module. + @Param[in] newVal MAX Frame length + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_MAC_Config() and before FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_ConfigMaxFrameLength (t_Handle h_FmMac, uint16_t newVal); + +/**************************************************************************//** + @Function FM_MAC_ConfigWan + + @Description ENABLE WAN mode in 10G MAC + + @Param[in] h_FmMac A handle to a FM MAC Module. + @Param[in] enable TRUE to enable or FALSE to disable. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_MAC_Config() and before FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_ConfigWan (t_Handle h_FmMac, bool enable); + +/**************************************************************************//** + @Function FM_MAC_ConfigPadAndCrc + + @Description Config PAD and CRC mode + + @Param[in] h_FmMac A handle to a FM MAC Module. + @Param[in] enable TRUE to enable or FALSE to disable. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_MAC_Config() and before FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_ConfigPadAndCrc (t_Handle h_FmMac, bool enable); + +/**************************************************************************//** + @Function FM_MAC_ConfigHalfDuplex + + @Description Config Half Duplex Mode + + @Param[in] h_FmMac A handle to a FM MAC Module. + @Param[in] enable TRUE to enable or FALSE to disable. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_MAC_Config() and before FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_ConfigHalfDuplex (t_Handle h_FmMac, bool enable); + +/**************************************************************************//** + @Function FM_MAC_ConfigLengthCheck + + @Description Configure thef frame length checking. + + @Param[in] h_FmMac A handle to a FM MAC Module. + @Param[in] enable TRUE to enable or FALSE to disable. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_MAC_Config() and before FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_ConfigLengthCheck (t_Handle h_FmMac, bool enable); + +/**************************************************************************//** + @Function FM_MAC_ConfigException + + @Description Change Exception selection from default + + @Param[in] h_FmMac A handle to a FM MAC Module. + @Param[in] ex Type of the desired exceptions + @Param[in] enable TRUE to enable the specified exception, FALSE to disable it. + + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_MAC_Config() and before FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_ConfigException(t_Handle h_FmMac, e_FmMacExceptions ex, bool enable); + +#ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 +t_Error FM_MAC_ConfigSkipFman11Workaround (t_Handle h_FmMac); +#endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */ +/** @} */ /* end of FM_mac_advanced_init_grp group */ +/** @} */ /* end of FM_mac_init_grp group */ + + +/**************************************************************************//** + @Group FM_mac_runtime_control_grp Runtime Control Unit + + @Description FM MAC Runtime control unit API functions, definitions and enums. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Function FM_MAC_Enable + + @Description Enable the MAC + + @Param[in] h_FmMac A handle to a FM MAC Module. + @Param[in] mode Mode of operation (RX, TX, Both) + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_Enable (t_Handle h_FmMac, e_CommMode mode); + +/**************************************************************************//** + @Function FM_MAC_Disable + + @Description DISABLE the MAC + + @Param[in] h_FmMac A handle to a FM MAC Module. + @Param[in] mode Define what part to Disable (RX, TX or BOTH) + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_Disable (t_Handle h_FmMac, e_CommMode mode); + +/**************************************************************************//** + @Function FM_MAC_Enable1588TimeStamp + + @Description Enables the TSU operation. + + @Param[in] h_Fm - Handle to the PTP as returned from the FM_MAC_PtpConfig. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_Enable1588TimeStamp(t_Handle h_Fm); + +/**************************************************************************//** + @Function FM_MAC_Disable1588TimeStamp + + @Description Disables the TSU operation. + + @Param[in] h_Fm - Handle to the PTP as returned from the FM_MAC_PtpConfig. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_Disable1588TimeStamp(t_Handle h_Fm); + +/**************************************************************************//** + @Function FM_MAC_SetTxAutoPauseFrames + + @Description Enable/Disable transmition of Pause-Frames. + + @Param[in] h_FmMac A handle to a FM MAC Module. + @Param[in] pauseTime Pause quanta value used with transmitted pause frames. + Each quanta represents a 512 bit-times; Note that '0' + as an input here will be used as disabling the + transmission of the pause-frames. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_SetTxAutoPauseFrames (t_Handle h_FmMac, uint16_t pauseTime); + +/**************************************************************************//** + @Function FM_MAC_SetRxIgnorePauseFrames + + @Description Enable/Disable ignoring of Pause-Frames. + + @Param[in] h_FmMac A handle to a FM MAC Module. + @Param[in] en boolean indicates whether to ignore the incoming pause + frames or not. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_SetRxIgnorePauseFrames (t_Handle h_FmMac, bool en); + +/**************************************************************************//** + @Function FM_MAC_ResetCounters + + @Description reset all statistics counters + + @Param[in] h_FmMac A handle to a FM MAC Module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_ResetCounters (t_Handle h_FmMac); + +/**************************************************************************//** + @Function FM_MAC_SetException + + @Description Enable/Disable a specific Exception + + @Param[in] h_FmMac A handle to a FM MAC Module. + @Param[in] ex Type of the desired exceptions + @Param[in] enable TRUE to enable the specified exception, FALSE to disable it. + + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_SetException(t_Handle h_FmMac, e_FmMacExceptions ex, bool enable); + +/**************************************************************************//** + @Function FM_MAC_SetStatistics + + @Description Define Statistics level. + Where applicable, the routine also enables the MIB counters + overflow interrupt in order to keep counters accurate + and account for overflows. + + @Param[in] h_FmMac A handle to a FM MAC Module. + @Param[in] statisticsLevel Full statistics level provides all standard counters but may + reduce performance. Partial statistics provides only special + event counters (errors etc.). If selected, regular counters (such as + byte/packet) will be invalid and will return -1. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_SetStatistics (t_Handle h_FmMac, e_FmMacStatisticsLevel statisticsLevel); + +/**************************************************************************//** + @Function FM_MAC_GetStatistics + + @Description get all statistics counters + + @Param[in] h_FmMac A handle to a FM MAC Module. + @Param[in] p_Statistics Staructure with statistics + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +t_Error FM_MAC_GetStatistics (t_Handle h_FmMac, t_FmMacStatistics *p_Statistics); + +/**************************************************************************//** + @Function FM_MAC_ModifyMacAddr + + @Description Replace the main MAC Address + + @Param[in] h_FmMac - A handle to a FM Module. + @Param[in] p_EnetAddr - Ethernet Mac address + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only after FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_ModifyMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr); + +/**************************************************************************//** + @Function FM_MAC_AddHashMacAddr + + @Description Add an Address to the hash table. This is for filter purpose only. + + @Param[in] h_FmMac - A handle to a FM Module. + @Param[in] p_EnetAddr - Ethernet Mac address + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_MAC_Init(). It is a filter only address. + @Cautions Some address need to be filterd out in upper FM blocks. +*//***************************************************************************/ +t_Error FM_MAC_AddHashMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr); + +/**************************************************************************//** + @Function FM_MAC_RemoveHashMacAddr + + @Description Delete an Address to the hash table. This is for filter purpose only. + + @Param[in] h_FmMac - A handle to a FM Module. + @Param[in] p_EnetAddr - Ethernet Mac address + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_RemoveHashMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr); + +/**************************************************************************//** + @Function FM_MAC_AddExactMatchMacAddr + + @Description Add a unicast or multicast mac address for exact-match filtering + (8 on dTSEC, 2 for 10G-MAC) + + @Param[in] h_FmMac - A handle to a FM Module. + @Param[in] p_EnetAddr - MAC Address to ADD + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only after FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_AddExactMatchMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr); + +/**************************************************************************//** + @Function FM_MAC_RemovelExactMatchMacAddr + + @Description Remove a uni cast or multi cast mac address. + + @Param[in] h_FmMac - A handle to a FM Module. + @Param[in] p_EnetAddr - MAC Address to remove + + @Return E_OK on success; Error code otherwise.. + + @Cautions Allowed only after FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_RemovelExactMatchMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr); + +/**************************************************************************//** + @Function FM_MAC_SetPromiscuous + + @Description Enable/Disable MAC Promiscuous mode for ALL mac addresses. + + @Param[in] h_FmMac - A handle to a FM MAC Module. + @Param[in] enable - TRUE to enable or FALSE to disable. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only after FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_SetPromiscuous (t_Handle h_FmMac, bool enable); + +/**************************************************************************//** + @Function FM_MAC_AdjustLink + + @Description Adjusts the Ethernet link with new speed/duplex setup. + + @Param[in] h_FmMac - A handle to a FM Module. + @Param[in] speed - Ethernet speed. + @Param[in] fullDuplex - TRUE for Full-Duplex mode; + FALSE for Half-Duplex mode. + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error FM_MAC_AdjustLink(t_Handle h_FmMac, e_EnetSpeed speed, bool fullDuplex); + +/**************************************************************************//** + @Function FM_MAC_GetId + + @Description Return the MAC ID + + @Param[in] h_FmMac - A handle to a FM Module. + @Param[out] p_MacId - MAC ID of device + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only after FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_GetId (t_Handle h_FmMac, uint32_t *p_MacId); + +/**************************************************************************//** + @Function FM_MAC_GetVesrion + + @Description Return Mac HW chip version + + @Param[in] h_FmMac - A handle to a FM Module. + @Param[out] p_MacVresion - Mac version as defined by the chip + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only after FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_GetVesrion (t_Handle h_FmMac, uint32_t *p_MacVresion); + +/**************************************************************************//** + @Function FM_MAC_MII_WritePhyReg + + @Description Write data into Phy Register + + @Param[in] h_FmMac - A handle to a FM Module. + @Param[in] phyAddr - Phy Address on the MII bus + @Param[in] reg - Register Number. + @Param[in] data - Data to write. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only after FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_MII_WritePhyReg (t_Handle h_FmMac, uint8_t phyAddr, uint8_t reg, uint16_t data); + +/**************************************************************************//** + @Function FM_MAC_MII_ReadPhyReg + + @Description Read data from Phy Register + + @Param[in] h_FmMac - A handle to a FM Module. + @Param[in] phyAddr - Phy Address on the MII bus + @Param[in] reg - Register Number. + @Param[out] p_Data - Data from PHY. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only after FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_MII_ReadPhyReg(t_Handle h_FmMac, uint8_t phyAddr, uint8_t reg, uint16_t *p_Data); + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) +/**************************************************************************//** + @Function FM_MAC_DumpRegs + + @Description Dump internal registers + + @Param[in] h_FmMac - A handle to a FM Module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only after FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_DumpRegs(t_Handle h_FmMac); +#endif /* (defined(DEBUG_ERRORS) && ... */ + +/** @} */ /* end of FM_mac_runtime_control_grp group */ +/** @} */ /* end of FM_mac_grp group */ +/** @} */ /* end of FM_grp group */ + + + +#endif /* __FM_MAC_EXT_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/inc/Peripherals/fm_muram_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/inc/Peripherals/fm_muram_ext.h @@ -0,0 +1,158 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 fm_muram_ext.h + + @Description FM MURAM Application Programming Interface. +*//***************************************************************************/ +#ifndef __FM_MURAM_EXT +#define __FM_MURAM_EXT + +#include "error_ext.h" +#include "std_ext.h" + + +/**************************************************************************//** + + @Group FM_grp Frame Manager API + + @Description FM API functions, definitions and enums + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group FM_muram_grp FM MURAM + + @Description FM MURAM API functions, definitions and enums + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group FM_muram_init_grp FM MURAM Initialization + + @Description FM MURAM initialization API functions, definitions and enums + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Function FM_MURAM_ConfigAndInit + + @Description Creates partition in the MURAM. + + The routine returns a handle (descriptor) to the MURAM partition. + This descriptor must be passed as first parameter to all other + FM-MURAM function calls. + + No actual initialization or configuration of FM_MURAM hardware is + done by this routine. + + @Param[in] baseAddress - Pointer to base of memory mapped FM-MURAM. + @Param[in] size - Size of the FM-MURAM partition. + + @Return Handle to FM-MURAM object, or NULL for Failure. +*//***************************************************************************/ +t_Handle FM_MURAM_ConfigAndInit(uintptr_t baseAddress, uint32_t size); + +/**************************************************************************//** + @Function FM_MURAM_Free + + @Description Frees all resources that were assigned to FM-MURAM module. + + Calling this routine invalidates the descriptor. + + @Param[in] h_FmMuram - FM-MURAM module descriptor. + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error FM_MURAM_Free(t_Handle h_FmMuram); + +/** @} */ /* end of FM_muram_init_grp group */ + + +/**************************************************************************//** + @Group FM_muram_ctrl_grp FM MURAM Control + + @Description FM MURAM control API functions, definitions and enums + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Function FM_MURAM_AllocMem + + @Description Allocate some memory from FM-MURAM partition. + + @Param[in] h_FmMuram - FM-MURAM module descriptor. + @Param[in] size - size of the memory to be allocated. + @Param[in] align - Alignment of the memory. + + @Return address of the allocated memory; NULL otherwise. +*//***************************************************************************/ +void * FM_MURAM_AllocMem(t_Handle h_FmMuram, uint32_t size, uint32_t align); + +/**************************************************************************//** + @Function FM_MURAM_AllocMemForce + + @Description Allocate some specific memory from FM-MURAM partition (according + to base). + + @Param[in] h_FmMuram - FM-MURAM module descriptor. + @Param[in] base - the desired base-address to be allocated. + @Param[in] size - size of the memory to be allocated. + + @Return address of the allocated memory; NULL otherwise. +*//***************************************************************************/ +void * FM_MURAM_AllocMemForce(t_Handle h_FmMuram, uint64_t base, uint32_t size); + +/**************************************************************************//** + @Function FM_MURAM_FreeMem + + @Description Free an allocated memory from FM-MURAM partition. + + @Param[in] h_FmMuram - FM-MURAM module descriptor. + @Param[in] ptr - A pointer to an allocated memory. + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error FM_MURAM_FreeMem(t_Handle h_FmMuram, void *ptr); + +/** @} */ /* end of FM_muram_ctrl_grp group */ +/** @} */ /* end of FM_muram_grp group */ +/** @} */ /* end of FM_grp group */ + + + +#endif /* __FM_MURAM_EXT */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/inc/Peripherals/fm_pcd_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/inc/Peripherals/fm_pcd_ext.h @@ -0,0 +1,2160 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 fm_pcd_ext.h + + @Description FM PCD ... +*//***************************************************************************/ +#ifndef __FM_PCD_EXT +#define __FM_PCD_EXT + +#include "std_ext.h" +#include "net_ext.h" +#include "list_ext.h" +#include "fm_ext.h" + + +/**************************************************************************//** + + @Group FM_grp Frame Manager API + + @Description FM API functions, definitions and enums + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group FM_PCD_grp FM PCD + + @Description FM PCD API functions, definitions and enums + + The FM PCD module is responsible for the initialization of all + global classifying FM modules. This includes the parser general and + common registers, the key generator global and common registers, + and the Policer global and common registers. + In addition, the FM PCD SW module will initialize all required + key generator schemes, coarse classification flows, and Policer + profiles. When An FM module is configured to work with one of these + entities, it will register to it using the FM PORT API. The PCD + module will manage the PCD resources - i.e. resource management of + Keygen schemes, etc. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Collection General PCD defines +*//***************************************************************************/ +typedef uint32_t fmPcdEngines_t; /**< options as defined below: */ + +#define FM_PCD_NONE 0 /**< No PCD Engine indicated */ +#define FM_PCD_PRS 0x80000000 /**< Parser indicated */ +#define FM_PCD_KG 0x40000000 /**< Keygen indicated */ +#define FM_PCD_CC 0x20000000 /**< Coarse classification indicated */ +#define FM_PCD_PLCR 0x10000000 /**< Policer indicated */ +#define FM_PCD_MANIP 0x08000000 /**< Manipulation indicated */ + +#define FM_PCD_MAX_NUM_OF_PRIVATE_HDRS 2 /**< Number of units/headers saved for user */ + +#define FM_PCD_PRS_NUM_OF_HDRS 16 /**< Number of headers supported by HW parser */ +#define FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS (32 - FM_PCD_MAX_NUM_OF_PRIVATE_HDRS) + /**< number of distinction units is limited by + register size (32), - reserved bits for + private headers. */ + +#define FM_PCD_MAX_NUM_OF_INTERCHANGEABLE_HDRS 4 /**< Maximum number of interchangeable headers in a distinction unit */ +#define FM_PCD_KG_NUM_OF_GENERIC_REGS 8 /**< Total number of generic KG registers */ +#define FM_PCD_KG_MAX_NUM_OF_EXTRACTS_PER_KEY 35 /**< Max number allowed on any configuration. + For reason of HW implementation, in most + cases less than this will be allowed. The + driver will return error in initialization + time if resource is overused. */ +#define FM_PCD_KG_NUM_OF_EXTRACT_MASKS 4 /**< Total number of masks allowed on KG extractions. */ +#define FM_PCD_KG_NUM_OF_DEFAULT_GROUPS 16 /**< Number of default value logical groups */ + +#define FM_PCD_PRS_NUM_OF_LABELS 32 /**< Max number of SW parser label */ +#define FM_PCD_SW_PRS_SIZE 0x00000800 /**< Total size of sw parser area */ +#define FM_PCD_PRS_SW_OFFSET 0x00000040 /**< Size of illegal addresses at the beginning + of the SW parser area */ +#define FM_PCD_PRS_SW_PATCHES_SIZE 0x00000200 /**< Number of bytes saved for patches */ +#define FM_PCD_PRS_SW_TAIL_SIZE 4 /**< Number of bytes that must be cleared at + the end of the SW parser area */ +#define FM_SW_PRS_MAX_IMAGE_SIZE (FM_PCD_SW_PRS_SIZE-FM_PCD_PRS_SW_OFFSET-FM_PCD_PRS_SW_TAIL_SIZE-FM_PCD_PRS_SW_PATCHES_SIZE) + /**< Max possible size of SW parser code */ + +#define FM_PCD_MAX_MANIP_INSRT_TEMPLATE_SIZE 128 /**< Max possible size of insertion template for + insert manipulation*/ +/* @} */ + + +/**************************************************************************//** + @Group FM_PCD_init_grp FM PCD Initialization Unit + + @Description FM PCD Initialization Unit + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Description PCD counters +*//***************************************************************************/ +typedef enum e_FmPcdCounters { + e_FM_PCD_KG_COUNTERS_TOTAL, /**< Policer counter */ + e_FM_PCD_PLCR_COUNTERS_YELLOW, /**< Policer counter */ + e_FM_PCD_PLCR_COUNTERS_RED, /**< Policer counter */ + e_FM_PCD_PLCR_COUNTERS_RECOLORED_TO_RED, /**< Policer counter */ + e_FM_PCD_PLCR_COUNTERS_RECOLORED_TO_YELLOW, /**< Policer counter */ + e_FM_PCD_PLCR_COUNTERS_TOTAL, /**< Policer counter */ + e_FM_PCD_PLCR_COUNTERS_LENGTH_MISMATCH, /**< Policer counter */ + e_FM_PCD_PRS_COUNTERS_PARSE_DISPATCH, /**< Parser counter */ + e_FM_PCD_PRS_COUNTERS_L2_PARSE_RESULT_RETURNED, /**< Parser counter */ + e_FM_PCD_PRS_COUNTERS_L3_PARSE_RESULT_RETURNED, /**< Parser counter */ + e_FM_PCD_PRS_COUNTERS_L4_PARSE_RESULT_RETURNED, /**< Parser counter */ + e_FM_PCD_PRS_COUNTERS_SHIM_PARSE_RESULT_RETURNED, /**< Parser counter */ + e_FM_PCD_PRS_COUNTERS_L2_PARSE_RESULT_RETURNED_WITH_ERR, /**< Parser counter */ + e_FM_PCD_PRS_COUNTERS_L3_PARSE_RESULT_RETURNED_WITH_ERR, /**< Parser counter */ + e_FM_PCD_PRS_COUNTERS_L4_PARSE_RESULT_RETURNED_WITH_ERR, /**< Parser counter */ + e_FM_PCD_PRS_COUNTERS_SHIM_PARSE_RESULT_RETURNED_WITH_ERR, /**< Parser counter */ + e_FM_PCD_PRS_COUNTERS_SOFT_PRS_CYCLES, /**< Parser counter */ + e_FM_PCD_PRS_COUNTERS_SOFT_PRS_STALL_CYCLES, /**< Parser counter */ + e_FM_PCD_PRS_COUNTERS_HARD_PRS_CYCLE_INCL_STALL_CYCLES, /**< Parser counter */ + e_FM_PCD_PRS_COUNTERS_MURAM_READ_CYCLES, /**< MURAM counter */ + e_FM_PCD_PRS_COUNTERS_MURAM_READ_STALL_CYCLES, /**< MURAM counter */ + e_FM_PCD_PRS_COUNTERS_MURAM_WRITE_CYCLES, /**< MURAM counter */ + e_FM_PCD_PRS_COUNTERS_MURAM_WRITE_STALL_CYCLES, /**< MURAM counter */ + e_FM_PCD_PRS_COUNTERS_FPM_COMMAND_STALL_CYCLES /**< FPM counter */ +} e_FmPcdCounters; + +/**************************************************************************//** + @Description PCD interrupts +*//***************************************************************************/ +typedef enum e_FmPcdExceptions { + e_FM_PCD_KG_EXCEPTION_DOUBLE_ECC, /**< Keygen ECC error */ + e_FM_PCD_PLCR_EXCEPTION_DOUBLE_ECC, /**< Read Buffer ECC error */ + e_FM_PCD_KG_EXCEPTION_KEYSIZE_OVERFLOW, /**< Write Buffer ECC error on system side */ + e_FM_PCD_PLCR_EXCEPTION_INIT_ENTRY_ERROR, /**< Write Buffer ECC error on FM side */ + e_FM_PCD_PLCR_EXCEPTION_PRAM_SELF_INIT_COMPLETE, /**< Self init complete */ + e_FM_PCD_PLCR_EXCEPTION_ATOMIC_ACTION_COMPLETE, /**< Atomic action complete */ + e_FM_PCD_PRS_EXCEPTION_DOUBLE_ECC, /**< Parser ECC error */ + e_FM_PCD_PRS_EXCEPTION_SINGLE_ECC /**< Parser single ECC */ +} e_FmPcdExceptions; + + +/**************************************************************************//** + @Description Exceptions user callback routine, will be called upon an + exception passing the exception identification. + + @Param[in] h_App - User's application descriptor. + @Param[in] exception - The exception. + *//***************************************************************************/ +typedef void (t_FmPcdExceptionCallback) (t_Handle h_App, e_FmPcdExceptions exception); + +/**************************************************************************//** + @Description Exceptions user callback routine, will be called upon an exception + passing the exception identification. + + @Param[in] h_App - User's application descriptor. + @Param[in] exception - The exception. + @Param[in] index - id of the relevant source (may be scheme or profile id). + *//***************************************************************************/ +typedef void (t_FmPcdIdExceptionCallback) ( t_Handle h_App, + e_FmPcdExceptions exception, + uint16_t index); + +/**************************************************************************//** + @Description A callback for enqueuing frame onto a QM queue. + + @Param[in] h_App - User's application descriptor. + @Param[in] p_Fd - Frame descriptor for the frame. + + @Return E_OK on success; Error code otherwise. + *//***************************************************************************/ +typedef t_Error (t_FmPcdQmEnqueueCallback) (t_Handle h_QmArg, void *p_Fd); + +/**************************************************************************//** + @Description A structure for Host-Command + When using Host command for PCD functionalities, a dedicated port + must be used. If this routine is called for a PCD in a single partition + environment, or it is the Master partition in a Multi partition + environment, The port will be initialized by the PCD driver + initialization routine. + *//***************************************************************************/ +typedef struct t_FmPcdHcParams { + uintptr_t portBaseAddr; /**< Host-Command Port Virtual Address of + memory mapped registers.*/ + uint8_t portId; /**< Host-Command Port Id (0-6 relative + to Host-Command/Offline parsing ports) */ + uint16_t liodnBase; /**< Irrelevant for P4080 rev 1. LIODN base for this port, to be + used together with LIODN offset. */ + uint32_t errFqid; /**< Host-Command Port Error Queue Id. */ + uint32_t confFqid; /**< Host-Command Port Confirmation queue Id. */ + uint32_t qmChannel; /**< Host-Command port - QM-channel dedicated to + this port will be used by the FM for dequeue. */ + t_FmPcdQmEnqueueCallback *f_QmEnqueue; /**< Call back routine for enqueuing a frame to the QM */ + t_Handle h_QmArg; /**< A handle of the QM module */ +} t_FmPcdHcParams; + +/**************************************************************************//** + @Description The main structure for PCD initialization + *//***************************************************************************/ +typedef struct t_FmPcdParams { + bool prsSupport; /**< TRUE if Parser will be used for any + of the FM ports */ + bool ccSupport; /**< TRUE if Coarse Classification will be used for any + of the FM ports */ + bool kgSupport; /**< TRUE if Keygen will be used for any + of the FM ports */ + bool plcrSupport; /**< TRUE if Policer will be used for any + of the FM ports */ + t_Handle h_Fm; /**< A handle to the FM module */ + uint8_t numOfSchemes; /**< Number of schemes dedicated to this partition. */ + bool useHostCommand; /**< Optional for single partition, Mandatory for Multi partition */ + t_FmPcdHcParams hc; /**< Relevant only if useHostCommand=TRUE. + Host Command parameters. */ + + t_FmPcdExceptionCallback *f_Exception; /**< Relevant for master (or single) partition only: Callback routine + to be called of PCD exception */ + t_FmPcdIdExceptionCallback *f_ExceptionId; /**< Relevant for master (or single) partition only: Callback routine + to be used for a single scheme and + profile exceptions */ + t_Handle h_App; /**< Relevant for master (or single) partition only: A handle to an + application layer object; This handle will + be passed by the driver upon calling the above callbacks */ +} t_FmPcdParams; + + +/**************************************************************************//** + @Function FM_PCD_Config + + @Description Basic configuration of the PCD module. + Creates descriptor for the FM PCD module. + + @Param[in] p_FmPcdParams A structure of parameters for the initialization of PCD. + + @Return A handle to the initialized module. +*//***************************************************************************/ +t_Handle FM_PCD_Config(t_FmPcdParams *p_FmPcdParams); + +/**************************************************************************//** + @Function FM_PCD_Init + + @Description Initialization of the PCD module. + + @Param[in] h_FmPcd - FM PCD module descriptor. + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error FM_PCD_Init(t_Handle h_FmPcd); + +/**************************************************************************//** + @Function FM_PCD_Free + + @Description Frees all resources that were assigned to FM module. + + Calling this routine invalidates the descriptor. + + @Param[in] h_FmPcd - FM PCD module descriptor. + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error FM_PCD_Free(t_Handle h_FmPcd); + +/**************************************************************************//** + @Group FM_PCD_advanced_init_grp FM PCD Advanced Configuration Unit + + @Description Configuration functions used to change default values. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Function FM_PCD_ConfigPlcrNumOfSharedProfiles + + @Description Calling this routine changes the internal driver data base + from its default selection of exceptions enablement. + [4]. + + @Param[in] h_FmPcd FM PCD module descriptor. + @Param[in] numOfSharedPlcrProfiles Number of profiles to + be shared between ports on this partition + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error FM_PCD_ConfigPlcrNumOfSharedProfiles(t_Handle h_FmPcd, uint16_t numOfSharedPlcrProfiles); + +/**************************************************************************//** + @Function FM_PCD_ConfigException + + @Description Calling this routine changes the internal driver data base + from its default selection of exceptions enablement. + By default all exceptions are enabled. + + @Param[in] h_FmPcd FM PCD module descriptor. + @Param[in] exception The exception to be selected. + @Param[in] enable TRUE to enable interrupt, FALSE to mask it. + + @Return E_OK on success; Error code otherwise. + + @Cautions Not available for guest partition. +*//***************************************************************************/ +t_Error FM_PCD_ConfigException(t_Handle h_FmPcd, e_FmPcdExceptions exception, bool enable); + +/**************************************************************************//** + @Function FM_PCD_ConfigPlcrAutoRefreshMode + + @Description Calling this routine changes the internal driver data base + from its default selection of exceptions enablement. + By default autorefresh is enabled. + + @Param[in] h_FmPcd FM PCD module descriptor. + @Param[in] enable TRUE to enable, FALSE to disable + + @Return E_OK on success; Error code otherwise. + + @Cautions Not available for guest partition. +*//***************************************************************************/ +t_Error FM_PCD_ConfigPlcrAutoRefreshMode(t_Handle h_FmPcd, bool enable); + +/**************************************************************************//** + @Function FM_PCD_ConfigPrsMaxCycleLimit + + @Description Calling this routine changes the internal data structure for + the maximum parsing time from its default value + [0]. + + @Param[in] h_FmPcd FM PCD module descriptor. + @Param[in] value 0 to disable the mechanism, or new + maximum parsing time. + + @Return E_OK on success; Error code otherwise. + + @Cautions Not available for guest partition. +*//***************************************************************************/ +t_Error FM_PCD_ConfigPrsMaxCycleLimit(t_Handle h_FmPcd,uint16_t value); + +/** @} */ /* end of FM_PCD_advanced_init_grp group */ +/** @} */ /* end of FM_PCD_init_grp group */ + + +/**************************************************************************//** + @Group FM_PCD_Runtime_grp FM PCD Runtime Unit + + @Description FM PCD Runtime Unit + + The runtime control allows creation of PCD infrastructure modules + such as Network Environment Characteristics, Classification Plan + Groups and Coarse Classification Trees. + It also allows on-the-fly initialization, modification and removal + of PCD modules such as Keygen schemes, coarse classification nodes + and Policer profiles. + + + In order to explain the programming model of the PCD driver interface + a few terms should be explained, and will be used below. + * Distinction Header - One of the 16 protocols supported by the FM parser, + or one of the shim headers (1 or 2). May be a header with a special + option (see below). + * Interchangeable Headers Group- This is a group of Headers recognized + by either one of them. For example, if in a specific context the user + chooses to treat IPv4 and IPV6 in the same way, they may create an + interchangeable Headers Unit consisting of these 2 headers. + * A Distinction Unit - a Distinction Header or an Interchangeable Headers + Group. + * Header with special option - applies to ethernet, mpls, vlan, ipv4 and + ipv6, includes multicast, broadcast and other protocol specific options. + In terms of hardware it relates to the options available in the classification + plan. + * Network Environment Characteristics - a set of Distinction Units that define + the total recognizable header selection for a certain environment. This is + NOT the list of all headers that will ever appear in a flow, but rather + everything that needs distinction in a flow, where distinction is made by keygen + schemes and coarse classification action descriptors. + + The PCD runtime modules initialization is done in stages. The first stage after + initializing the PCD module itself is to establish a Network Flows Environment + Definition. The application may choose to establish one or more such environments. + Later, when needed, the application will have to state, for some of its modules, + to which single environment it belongs. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Description A structure for sw parser labels + *//***************************************************************************/ +typedef struct t_FmPcdPrsLabelParams { + uint32_t instructionOffset; /**< SW parser label instruction offset (2 bytes + resolution), relative to Parser RAM. */ + e_NetHeaderType hdr; /**< The existance of this header will envoke + the sw parser code. */ + uint8_t indexPerHdr; /**< Normally 0, if more than one sw parser + attachments for the same header, use this + index to distinguish between them. */ +} t_FmPcdPrsLabelParams; + +/**************************************************************************//** + @Description A structure for sw parser + *//***************************************************************************/ +typedef struct t_FmPcdPrsSwParams { + bool override; /**< FALSE to invoke a check that nothing else + was loaded to this address, including + internal patches. + TRUE to override any existing code.*/ + uint32_t size; /**< SW parser code size */ + uint16_t base; /**< SW parser base (in instruction counts! + must be larger than 0x20)*/ + uint8_t *p_Code; /**< SW parser code */ + uint32_t swPrsDataParams[FM_PCD_PRS_NUM_OF_HDRS]; + /**< SW parser data (parameters) */ + uint8_t numOfLabels; /**< Number of labels for SW parser. */ + t_FmPcdPrsLabelParams labelsTable[FM_PCD_PRS_NUM_OF_LABELS]; + /**< SW parser labels table, containing + numOfLabels entries */ +} t_FmPcdPrsSwParams; + + +/**************************************************************************//** + @Function FM_PCD_Enable + + @Description This routine should be called after PCD is initialized for enabling all + PCD engines according to their existing configuration. + + @Param[in] h_FmPcd FM PCD module descriptor. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_Init() and when PCD is disabled. +*//***************************************************************************/ +t_Error FM_PCD_Enable(t_Handle h_FmPcd); + +/**************************************************************************//** + @Function FM_PCD_Disable + + @Description This routine may be called when PCD is enabled in order to + disable all PCD engines. It may be called + only when none of the ports in the system are using the PCD. + + @Param[in] h_FmPcd FM PCD module descriptor. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_Init() and when PCD is enabled. +*//***************************************************************************/ +t_Error FM_PCD_Disable(t_Handle h_FmPcd); + + +/**************************************************************************//** + @Function FM_PCD_GetCounter + + @Description Reads one of the FM PCD counters. + + @Param[in] h_FmPcd FM PCD module descriptor. + @Param[in] counter The requested counter. + + @Return Counter's current value. + + @Cautions Allowed only following FM_PCD_Init(). + Note that it is user's responsibility to call this routine only + for enabled counters, and there will be no indication if a + disabled counter is accessed. +*//***************************************************************************/ +uint32_t FM_PCD_GetCounter(t_Handle h_FmPcd, e_FmPcdCounters counter); + +/**************************************************************************//** +@Function FM_PCD_PrsLoadSw + +@Description This routine may be called in order to load software parsing code. + + +@Param[in] h_FmPcd FM PCD module descriptor. +@Param[in] p_SwPrs A pointer to a structure of software + parser parameters, including the software + parser image. + +@Return E_OK on success; Error code otherwise. + +@Cautions Allowed only following FM_PCD_Init() and when PCD is disabled. + Not available for guest partition. +*//***************************************************************************/ +t_Error FM_PCD_PrsLoadSw(t_Handle h_FmPcd, t_FmPcdPrsSwParams *p_SwPrs); + +/**************************************************************************//** + @Function FM_PCD_KgSetDfltValue + + @Description Calling this routine sets a global default value to be used + by the keygen when parser does not recognize a required + field/header. + By default default values are 0. + + @Param[in] h_FmPcd FM PCD module descriptor. + @Param[in] valueId 0,1 - one of 2 global default values. + @Param[in] value The requested default value. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_Init() and when PCD is disabled. + Not available for guest partition. +*//***************************************************************************/ +t_Error FM_PCD_KgSetDfltValue(t_Handle h_FmPcd, uint8_t valueId, uint32_t value); + +/**************************************************************************//** + @Function FM_PCD_KgSetAdditionalDataAfterParsing + + @Description Calling this routine allows the keygen to access data past + the parser finishing point. + + @Param[in] h_FmPcd FM PCD module descriptor. + @Param[in] payloadOffset the number of bytes beyond the parser location. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_Init() and when PCD is disabled. + Not available for guest partition. +*//***************************************************************************/ +t_Error FM_PCD_KgSetAdditionalDataAfterParsing(t_Handle h_FmPcd, uint8_t payloadOffset); + +/**************************************************************************//** + @Function FM_PCD_SetException + + @Description Calling this routine enables/disables PCD interrupts. + + @Param[in] h_FmPcd FM PCD module descriptor. + @Param[in] exception The exception to be selected. + @Param[in] enable TRUE to enable interrupt, FALSE to mask it. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). + Not available for guest partition. +*//***************************************************************************/ +t_Error FM_PCD_SetException(t_Handle h_FmPcd, e_FmPcdExceptions exception, bool enable); + +/**************************************************************************//** + @Function FM_PCD_ModifyCounter + + @Description Sets a value to an enabled counter. Use "0" to reset the counter. + + @Param[in] h_FmPcd FM PCD module descriptor. + @Param[in] counter The requested counter. + @Param[in] value The requested value to be written into the counter. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). + Not available for guest partition. +*//***************************************************************************/ +t_Error FM_PCD_ModifyCounter(t_Handle h_FmPcd, e_FmPcdCounters counter, uint32_t value); + +/**************************************************************************//** + @Function FM_PCD_SetPlcrStatistics + + @Description This routine may be used to enable/disable policer statistics + counter. By default the statistics is enabled. + + @Param[in] h_FmPcd FM PCD module descriptor + @Param[in] enable TRUE to enable, FALSE to disable. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). + Not available for guest partition. +*//***************************************************************************/ +t_Error FM_PCD_SetPlcrStatistics(t_Handle h_FmPcd, bool enable); + +/**************************************************************************//** + @Function FM_PCD_SetPrsStatistics + + @Description Defines whether to gather parser statistics including all ports. + + @Param[in] h_FmPcd FM PCD module descriptor. + @Param[in] enable TRUE to enable, FALSE to disable. + + @Return None + + @Cautions Allowed only following FM_PCD_Init(). + Not available for guest partition. +*//***************************************************************************/ +void FM_PCD_SetPrsStatistics(t_Handle h_FmPcd, bool enable); + +/**************************************************************************//** + @Function FM_PCD_ForceIntr + + @Description Causes an interrupt event on the requested source. + + @Param[in] h_FmPcd FM PCD module descriptor. + @Param[in] exception An exception to be forced. + + @Return E_OK on success; Error code if the exception is not enabled, + or is not able to create interrupt. + + @Cautions Allowed only following FM_PCD_Init(). + Not available for guest partition. +*//***************************************************************************/ +t_Error FM_PCD_ForceIntr (t_Handle h_FmPcd, e_FmPcdExceptions exception); + +/**************************************************************************//** + @Function FM_PCD_HcTxConf + + @Description This routine should be called to confirm frames that were + received on the HC confirmation queue. + + @Param[in] h_FmPcd A handle to an FM PCD Module. + @Param[in] p_Fd Frame descriptor of the received frame. + + @Cautions Allowed only following FM_PCD_Init(). Allowed only if 'useHostCommand' + option was selected in the initialization. +*//***************************************************************************/ +void FM_PCD_HcTxConf(t_Handle h_FmPcd, t_DpaaFD *p_Fd); + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) +/**************************************************************************//** + @Function FM_PCD_DumpRegs + + @Description Dumps all PCD registers + + @Param[in] h_FmPcd A handle to an FM PCD Module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Error FM_PCD_DumpRegs(t_Handle h_FmPcd); + +/**************************************************************************//** + @Function FM_PCD_KgDumpRegs + + @Description Dumps all PCD KG registers + + @Param[in] h_FmPcd A handle to an FM PCD Module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Error FM_PCD_KgDumpRegs(t_Handle h_FmPcd); + +/**************************************************************************//** + @Function FM_PCD_PlcrDumpRegs + + @Description Dumps all PCD Plcr registers + + @Param[in] h_FmPcd A handle to an FM PCD Module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Error FM_PCD_PlcrDumpRegs(t_Handle h_FmPcd); + +/**************************************************************************//** + @Function FM_PCD_PlcrProfileDumpRegs + + @Description Dumps all PCD Plcr registers + + @Param[in] h_FmPcd A handle to an FM PCD Module. + @Param[in] h_Profile A handle to a profile. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Error FM_PCD_PlcrProfileDumpRegs(t_Handle h_FmPcd, t_Handle h_Profile); + +/**************************************************************************//** + @Function FM_PCD_PrsDumpRegs + + @Description Dumps all PCD Prs registers + + @Param[in] h_FmPcd A handle to an FM PCD Module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Error FM_PCD_PrsDumpRegs(t_Handle h_FmPcd); + +/**************************************************************************//** + @Function FM_PCD_HcDumpRegs + + @Description Dumps HC Port registers + + @Param[in] h_FmPcd A handle to an FM PCD Module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Error FM_PCD_HcDumpRegs(t_Handle h_FmPcd); +#endif /* (defined(DEBUG_ERRORS) && ... */ + + + +/**************************************************************************//** + @Group FM_PCD_Runtime_tree_buildgrp FM PCD Tree building Unit + + @Description FM PCD Runtime Unit + + This group contains routines for setting, deleting and modifying + PCD resources, for defining the total PCD tree. + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Collection Definitions of coarse classification + parameters as required by keygen (when coarse classification + is the next engine after this scheme). +*//***************************************************************************/ +#define FM_PCD_MAX_NUM_OF_CC_NODES 255 +#define FM_PCD_MAX_NUM_OF_CC_TREES 8 +#define FM_PCD_MAX_NUM_OF_CC_GROUPS 16 +#define FM_PCD_MAX_NUM_OF_CC_UNITS 4 +#define FM_PCD_MAX_NUM_OF_KEYS 256 +#define FM_PCD_MAX_SIZE_OF_KEY 56 +#define FM_PCD_MAX_NUM_OF_CC_ENTRIES_IN_GRP 16 +/* @} */ + +/**************************************************************************//** + @Collection A set of definitions to allow protocol + special option description. +*//***************************************************************************/ +typedef uint32_t protocolOpt_t; /**< A general type to define a protocol option. */ + +typedef protocolOpt_t ethProtocolOpt_t; /**< Ethernet protocol options. */ +#define ETH_BROADCAST 0x80000000 /**< Ethernet Broadcast. */ +#define ETH_MULTICAST 0x40000000 /**< Ethernet Multicast. */ + +typedef protocolOpt_t vlanProtocolOpt_t; /**< Vlan protocol options. */ +#define VLAN_STACKED 0x20000000 /**< Vlan Stacked. */ + +typedef protocolOpt_t mplsProtocolOpt_t; /**< MPLS protocol options. */ +#define MPLS_STACKED 0x10000000 /**< MPLS Stacked. */ + +typedef protocolOpt_t ipv4ProtocolOpt_t; /**< IPv4 protocol options. */ +#define IPV4_BROADCAST_1 0x08000000 /**< IPv4 Broadcast. */ +#define IPV4_MULTICAST_1 0x04000000 /**< IPv4 Multicast. */ +#define IPV4_UNICAST_2 0x02000000 /**< Tunneled IPv4 - Unicast. */ +#define IPV4_MULTICAST_BROADCAST_2 0x01000000 /**< Tunneled IPv4 - Broadcast/Multicast. */ + +typedef protocolOpt_t ipv6ProtocolOpt_t; /**< IPv6 protocol options. */ +#define IPV6_MULTICAST_1 0x00800000 /**< IPv6 Multicast. */ +#define IPV6_UNICAST_2 0x00400000 /**< Tunneled IPv6 - Unicast. */ +#define IPV6_MULTICAST_2 0x00200000 /**< Tunneled IPv6 - Multicast. */ +/* @} */ + +/**************************************************************************//** + @Description A type used for returning the order of the key extraction. + each value in this array represents the index of the extraction + command as defined by the user in the initialization extraction array. + The valid size of this array is the user define number of extractions + required (also marked by the second '0' in this array). +*//***************************************************************************/ +typedef uint8_t t_FmPcdKgKeyOrder [FM_PCD_KG_MAX_NUM_OF_EXTRACTS_PER_KEY]; + +/**************************************************************************//** + @Description All PCD engines +*//***************************************************************************/ +typedef enum e_FmPcdEngine { + e_FM_PCD_INVALID = 0, /**< Invalid PCD engine indicated*/ + e_FM_PCD_DONE, /**< No PCD Engine indicated */ + e_FM_PCD_KG, /**< Keygen indicated */ + e_FM_PCD_CC, /**< Coarse classification indicated */ + e_FM_PCD_PLCR, /**< Policer indicated */ + e_FM_PCD_PRS /**< Parser indicated */ +} e_FmPcdEngine; + +/**************************************************************************//** + @Description An enum for selecting extraction by header types +*//***************************************************************************/ +typedef enum e_FmPcdExtractByHdrType { + e_FM_PCD_EXTRACT_FROM_HDR, /**< Extract bytes from header */ + e_FM_PCD_EXTRACT_FROM_FIELD, /**< Extract bytes from header field */ + e_FM_PCD_EXTRACT_FULL_FIELD /**< Extract a full field */ +} e_FmPcdExtractByHdrType; + +/**************************************************************************//** + @Description An enum for selecting extraction source + (when it is not the header) +*//***************************************************************************/ +typedef enum e_FmPcdExtractFrom { + e_FM_PCD_EXTRACT_FROM_FRAME_START, /**< KG & CC: Extract from beginning of frame */ + e_FM_PCD_EXTRACT_FROM_DFLT_VALUE, /**< KG only: Extract from a default value */ + e_FM_PCD_EXTRACT_FROM_CURR_END_OF_PARSE, /**< KG only: Extract from the point where parsing had finished */ + e_FM_PCD_EXTRACT_FROM_KEY, /**< CC only: Field where saved KEY */ + e_FM_PCD_EXTRACT_FROM_HASH, /**< CC only: Field where saved HASH */ + e_FM_PCD_EXTRACT_FROM_PARSE_RESULT, /**< KG & CC: Extract from the parser result */ + e_FM_PCD_EXTRACT_FROM_ENQ_FQID, /**< KG & CC: Extract from enqueue FQID */ + e_FM_PCD_EXTRACT_FROM_FLOW_ID /**< CC only: Field where saved Dequeue FQID */ +} e_FmPcdExtractFrom; + +/**************************************************************************//** + @Description An enum for selecting extraction type +*//***************************************************************************/ +typedef enum e_FmPcdExtractType { + e_FM_PCD_EXTRACT_BY_HDR, /**< Extract according to header */ + e_FM_PCD_EXTRACT_NON_HDR, /**< Extract from data that is not the header */ + e_FM_PCD_KG_EXTRACT_PORT_PRIVATE_INFO /**< Extract private info as specified by user */ +} e_FmPcdExtractType; + +/**************************************************************************//** + @Description An enum for selecting a default +*//***************************************************************************/ +typedef enum e_FmPcdKgExtractDfltSelect { + e_FM_PCD_KG_DFLT_GBL_0, /**< Default selection is KG register 0 */ + e_FM_PCD_KG_DFLT_GBL_1, /**< Default selection is KG register 1 */ + e_FM_PCD_KG_DFLT_PRIVATE_0, /**< Default selection is a per scheme register 0 */ + e_FM_PCD_KG_DFLT_PRIVATE_1, /**< Default selection is a per scheme register 1 */ + e_FM_PCD_KG_DFLT_ILLEGAL /**< Illegal selection */ +} e_FmPcdKgExtractDfltSelect; + +/**************************************************************************//** + @Description An enum defining all default groups - + each group shares a default value, one of 4 user + initialized values. +*//***************************************************************************/ +typedef enum e_FmPcdKgKnownFieldsDfltTypes { + e_FM_PCD_KG_MAC_ADDR, /**< MAC Address */ + e_FM_PCD_KG_TCI, /**< TCI field */ + e_FM_PCD_KG_ENET_TYPE, /**< ENET Type */ + e_FM_PCD_KG_PPP_SESSION_ID, /**< PPP Session id */ + e_FM_PCD_KG_PPP_PROTOCOL_ID, /**< PPP Protocol id */ + e_FM_PCD_KG_MPLS_LABEL, /**< MPLS label */ + e_FM_PCD_KG_IP_ADDR, /**< IP addr */ + e_FM_PCD_KG_PROTOCOL_TYPE, /**< Protocol type */ + e_FM_PCD_KG_IP_TOS_TC, /**< TOS or TC */ + e_FM_PCD_KG_IPV6_FLOW_LABEL, /**< IPV6 flow label */ + e_FM_PCD_KG_IPSEC_SPI, /**< IPSEC SPI */ + e_FM_PCD_KG_L4_PORT, /**< L4 Port */ + e_FM_PCD_KG_TCP_FLAG, /**< TCP Flag */ + e_FM_PCD_KG_GENERIC_FROM_DATA, /**< grouping implemented by sw, + any data extraction that is not the full + field described above */ + e_FM_PCD_KG_GENERIC_FROM_DATA_NO_V, /**< grouping implemented by sw, + any data extraction without validation */ + e_FM_PCD_KG_GENERIC_NOT_FROM_DATA /**< grouping implemented by sw, + extraction from parser result or + direct use of default value */ +} e_FmPcdKgKnownFieldsDfltTypes; + +/**************************************************************************//** + @Description enum for defining header index when headers may repeat +*//***************************************************************************/ +typedef enum e_FmPcdHdrIndex { + e_FM_PCD_HDR_INDEX_NONE = 0, /**< used when multiple headers not used, also + to specify regular IP (not tunneled). */ + e_FM_PCD_HDR_INDEX_1, /**< may be used for VLAN, MPLS, tunneled IP */ + e_FM_PCD_HDR_INDEX_2, /**< may be used for MPLS, tunneled IP */ + e_FM_PCD_HDR_INDEX_3, /**< may be used for MPLS */ + e_FM_PCD_HDR_INDEX_LAST = 0xFF /**< may be used for VLAN, MPLS */ +} e_FmPcdHdrIndex; + +/**************************************************************************//** + @Description A structure for selcting the policer profile functional type +*//***************************************************************************/ +typedef enum e_FmPcdProfileTypeSelection { + e_FM_PCD_PLCR_PORT_PRIVATE, /**< Port dedicated profile */ + e_FM_PCD_PLCR_SHARED /**< Shared profile (shared within partition) */ +} e_FmPcdProfileTypeSelection; + +/**************************************************************************//** + @Description A structure for selcting the policer profile algorithem +*//***************************************************************************/ +typedef enum e_FmPcdPlcrAlgorithmSelection { + e_FM_PCD_PLCR_PASS_THROUGH, /**< Policer pass through */ + e_FM_PCD_PLCR_RFC_2698, /**< Policer algorythm RFC 2698 */ + e_FM_PCD_PLCR_RFC_4115 /**< Policer algorythm RFC 4115 */ +} e_FmPcdPlcrAlgorithmSelection; + +/**************************************************************************//** + @Description A structure for selcting the policer profile color mode +*//***************************************************************************/ +typedef enum e_FmPcdPlcrColorMode { + e_FM_PCD_PLCR_COLOR_BLIND, /**< Color blind */ + e_FM_PCD_PLCR_COLOR_AWARE /**< Color aware */ +} e_FmPcdPlcrColorMode; + +/**************************************************************************//** + @Description A structure for selcting the policer profile color functional mode +*//***************************************************************************/ +typedef enum e_FmPcdPlcrColor { + e_FM_PCD_PLCR_GREEN, /**< Green */ + e_FM_PCD_PLCR_YELLOW, /**< Yellow */ + e_FM_PCD_PLCR_RED, /**< Red */ + e_FM_PCD_PLCR_OVERRIDE /**< Color override */ +} e_FmPcdPlcrColor; + +/**************************************************************************//** + @Description A structure for selcting the policer profile packet frame length selector +*//***************************************************************************/ +typedef enum e_FmPcdPlcrFrameLengthSelect { + e_FM_PCD_PLCR_L2_FRM_LEN, /**< L2 frame length */ + e_FM_PCD_PLCR_L3_FRM_LEN, /**< L3 frame length */ + e_FM_PCD_PLCR_L4_FRM_LEN, /**< L4 frame length */ + e_FM_PCD_PLCR_FULL_FRM_LEN /**< Full frame length */ +} e_FmPcdPlcrFrameLengthSelect; + +/**************************************************************************//** + @Description An enum for selecting rollback frame +*//***************************************************************************/ +typedef enum e_FmPcdPlcrRollBackFrameSelect { + e_FM_PCD_PLCR_ROLLBACK_L2_FRM_LEN, /**< Rollback L2 frame length */ + e_FM_PCD_PLCR_ROLLBACK_FULL_FRM_LEN /**< Rollback Full frame length */ +} e_FmPcdPlcrRollBackFrameSelect; + +/**************************************************************************//** + @Description A structure for selcting the policer profile packet or byte mode +*//***************************************************************************/ +typedef enum e_FmPcdPlcrRateMode { + e_FM_PCD_PLCR_BYTE_MODE, /**< Byte mode */ + e_FM_PCD_PLCR_PACKET_MODE /**< Packet mode */ +} e_FmPcdPlcrRateMode; + +/**************************************************************************//** + @Description An enum for defining action of frame +*//***************************************************************************/ +typedef enum e_FmPcdDoneAction { + e_FM_PCD_ENQ_FRAME = 0, /**< Enqueue frame */ + e_FM_PCD_DROP_FRAME /**< Drop frame */ +} e_FmPcdDoneAction; + +/**************************************************************************//** + @Description A structure for selecting the policer counter +*//***************************************************************************/ +typedef enum e_FmPcdPlcrProfileCounters { + e_FM_PCD_PLCR_PROFILE_GREEN_PACKET_TOTAL_COUNTER, /**< Green packets counter */ + e_FM_PCD_PLCR_PROFILE_YELLOW_PACKET_TOTAL_COUNTER, /**< Yellow packets counter */ + e_FM_PCD_PLCR_PROFILE_RED_PACKET_TOTAL_COUNTER, /**< Red packets counter */ + e_FM_PCD_PLCR_PROFILE_RECOLOURED_YELLOW_PACKET_TOTAL_COUNTER, /**< Recolored yellow packets counter */ + e_FM_PCD_PLCR_PROFILE_RECOLOURED_RED_PACKET_TOTAL_COUNTER /**< Recolored red packets counter */ +} e_FmPcdPlcrProfileCounters; + +/**************************************************************************//** + @Description A structure for selecting action +*//***************************************************************************/ +typedef enum e_FmPcdAction { + e_FM_PCD_ACTION_NONE, /**< NONE */ + e_FM_PCD_ACTION_EXACT_MATCH, /**< Exact match on the selected extraction*/ + e_FM_PCD_ACTION_INDEXED_LOOKUP /**< Indexed lookup on the selected extraction*/ +} e_FmPcdAction; + +#if defined(FM_CAPWAP_SUPPORT) +/**************************************************************************//** + @Description An enum for selecting type of insert manipulation +*//***************************************************************************/ +typedef enum e_FmPcdManipInsrtType { + e_FM_PCD_MANIP_INSRT_NONE = 0, /**< No insertion */ + e_FM_PCD_MANIP_INSRT_TO_START_OF_FRAME_INT_FRAME_HDR, /**< Insert internal frame header to start of frame */ + e_FM_PCD_MANIP_INSRT_TO_START_OF_FRAME_TEMPLATE /**< Insert template to start of frame*/ +} e_FmPcdManipInsrtType; + +/**************************************************************************//** + @Description An enum for selecting type of remove manipulation +*//***************************************************************************/ +typedef enum e_FmPcdManipRmvParamsType { + e_FM_PCD_MANIP_RMV_NONE = 0, /**< No remove */ + e_FM_PCD_MANIP_RMV_FROM_START_OF_FRAME_TILL_SPECIFIC_LOCATION, /**< Remove from start of frame till (excluding) specified indication */ + e_FM_PCD_MANIP_RMV_FROM_START_OF_FRAME_INCLUDE_SPECIFIC_LOCATION, /**< Remove from start of frame till (including) specified indication */ + e_FM_PCD_MANIP_RMV_INT_FRAME_HDR /**< Remove internal frame header to start of frame */ +} e_FmPcdManipRmvParamsType; + +/**************************************************************************//** + @Description An enum for selecting type of location +*//***************************************************************************/ +typedef enum e_FmPcdManipLocateType { + e_FM_PCD_MANIP_LOC_BY_HDR = 0, /**< Locate according to header */ + e_FM_PCD_MANIP_LOC_NON_HDR /**< Locate from data that is not the header */ +} e_FmPcdManipLocateType; + +/**************************************************************************//** + @Description An enum for selecting type of Timeout mode +*//***************************************************************************/ +typedef enum e_FmPcdManipReassemTimeOutMode { + e_FM_PCD_MANIP_TIME_OUT_BETWEEN_FRAMES, /**< limits the time of the reassm process from the first frag to the last */ + e_FM_PCD_MANIP_TIME_OUT_BETWEEN_FRAG /**< limits the time of receiving the fragment */ +} e_FmPcdManipReassemTimeOutMode; + +/**************************************************************************//** + @Description An enum for selecting type of WaysNumber mode +*//***************************************************************************/ +typedef enum e_FmPcdManipReassemWaysNumber { + e_FM_PCD_MANIP_ONE_WAY_HASH = 1, /**< -------------- */ + e_FM_PCD_MANIP_TWO_WAYS_HASH, /**< -------------- */ + e_FM_PCD_MANIP_THREE_WAYS_HASH, /**< -------------- */ + e_FM_PCD_MANIP_FOUR_WAYS_HASH, /**< four ways hash */ + e_FM_PCD_MANIP_FIVE_WAYS_HASH, /**< -------------- */ + e_FM_PCD_MANIP_SIX_WAYS_HASH, /**< -------------- */ + e_FM_PCD_MANIP_SEVEN_WAYS_HASH, /**< -------------- */ + e_FM_PCD_MANIP_EIGHT_WAYS_HASH /**< eight ways hash*/ +} e_FmPcdManipReassemWaysNumber; + +/**************************************************************************//** + @Description An enum for selecting type of statistics mode +*//***************************************************************************/ +typedef enum e_FmPcdStatsType { + e_FM_PCD_STATS_PER_FLOWID = 0 /**< type where flowId used as index for getting statistics */ +} e_FmPcdStatsType; + +#endif /* FM_CAPWAP_SUPPORT */ + + +/**************************************************************************//** + @Description A Union of protocol dependent special options +*//***************************************************************************/ +typedef union u_FmPcdHdrProtocolOpt { + ethProtocolOpt_t ethOpt; /**< Ethernet options */ + vlanProtocolOpt_t vlanOpt; /**< Vlan options */ + mplsProtocolOpt_t mplsOpt; /**< MPLS options */ + ipv4ProtocolOpt_t ipv4Opt; /**< IPv4 options */ + ipv6ProtocolOpt_t ipv6Opt; /**< IPv6 options */ +} u_FmPcdHdrProtocolOpt; + +/**************************************************************************//** + @Description A union holding all known protocol fields +*//***************************************************************************/ +typedef union t_FmPcdFields { + headerFieldEth_t eth; /**< eth */ + headerFieldVlan_t vlan; /**< vlan */ + headerFieldLlcSnap_t llcSnap; /**< llcSnap */ + headerFieldPppoe_t pppoe; /**< pppoe */ + headerFieldMpls_t mpls; /**< mpls */ + headerFieldIpv4_t ipv4; /**< ipv4 */ + headerFieldIpv6_t ipv6; /**< ipv6 */ + headerFieldUdp_t udp; /**< udp */ + headerFieldTcp_t tcp; /**< tcp */ + headerFieldSctp_t sctp; /**< sctp */ + headerFieldDccp_t dccp; /**< dccp */ + headerFieldGre_t gre; /**< gre */ + headerFieldMinencap_t minencap; /**< minencap */ + headerFieldIpsecAh_t ipsecAh; /**< ipsecAh */ + headerFieldIpsecEsp_t ipsecEsp; /**< ipsecEsp */ + headerFieldUdpEncapEsp_t udpEncapEsp; /**< udpEncapEsp */ +} t_FmPcdFields; + +/**************************************************************************//** + @Description structure for defining header extraction for key generation +*//***************************************************************************/ +typedef struct t_FmPcdFromHdr { + uint8_t size; /**< Size in byte */ + uint8_t offset; /**< Byte offset */ +} t_FmPcdFromHdr; + +/**************************************************************************//** + @Description structure for defining field extraction for key generation +*//***************************************************************************/ +typedef struct t_FmPcdFromField { + t_FmPcdFields field; /**< Field selection */ + uint8_t size; /**< Size in byte */ + uint8_t offset; /**< Byte offset */ +} t_FmPcdFromField; + +/**************************************************************************//** + @Description A structure of parameters used to define a single network + environment unit. + A unit should be defined if it will later be used by one or + more PCD engines to distinguich between flows. +*//***************************************************************************/ +typedef struct t_FmPcdDistinctionUnit { + struct { + e_NetHeaderType hdr; /**< One of the headers supported by the FM */ + u_FmPcdHdrProtocolOpt opt; /**< only one option !! */ + } hdrs[FM_PCD_MAX_NUM_OF_INTERCHANGEABLE_HDRS]; +} t_FmPcdDistinctionUnit; + +/**************************************************************************//** + @Description A structure of parameters used to define the different + units supported by a specific PCD Network Environment + Characteristics module. Each unit represent + a protocol or a group of protocols that may be used later + by the different PCD engined to distinguich between flows. +*//***************************************************************************/ +typedef struct t_FmPcdNetEnvParams { + uint8_t numOfDistinctionUnits; /**< Number of different units to be identified */ + t_FmPcdDistinctionUnit units[FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS]; /**< An array of numOfDistinctionUnits of the + different units to be identified */ +} t_FmPcdNetEnvParams; + +/**************************************************************************//** + @Description structure for defining a single extraction action + when creating a key +*//***************************************************************************/ +typedef struct t_FmPcdExtractEntry { + e_FmPcdExtractType type; /**< Extraction type select */ + union { + struct { + e_NetHeaderType hdr; /**< Header selection */ + bool ignoreProtocolValidation; + /**< Ignore protocol validation */ + e_FmPcdHdrIndex hdrIndex; /**< Relevant only for MPLS, VLAN and tunneled + IP. Otherwise should be cleared.*/ + e_FmPcdExtractByHdrType type; /**< Header extraction type select */ + union { + t_FmPcdFromHdr fromHdr; /**< Extract bytes from header parameters */ + t_FmPcdFromField fromField; /**< Extract bytes from field parameters*/ + t_FmPcdFields fullField; /**< Extract full filed parameters*/ + } extractByHdrType; + } extractByHdr; /**< used when type = e_FM_PCD_KG_EXTRACT_BY_HDR */ + struct { + e_FmPcdExtractFrom src; /**< Non-header extraction source */ + e_FmPcdAction action; /**< Relevant for CC Only */ + uint16_t icIndxMask; /**< Relevant only for CC where + action=e_FM_PCD_ACTION_INDEXED_LOOKUP */ + uint8_t offset; /**< Byte offset */ + uint8_t size; /**< Size in byte */ + } extractNonHdr; /**< used when type = e_FM_PCD_KG_EXTRACT_NON_HDR */ + }; +} t_FmPcdExtractEntry; + +/**************************************************************************//** + @Description A structure for defining masks for each extracted + field in the key. +*//***************************************************************************/ +typedef struct t_FmPcdKgExtractMask { + uint8_t extractArrayIndex; /**< Index in the extraction array, as initialized by user */ + uint8_t offset; /**< Byte offset */ + uint8_t mask; /**< A byte mask (selected bits will be used) */ +} t_FmPcdKgExtractMask; + +/**************************************************************************//** + @Description A structure for defining default selection per groups + of fields +*//***************************************************************************/ +typedef struct t_FmPcdKgExtractDflt { + e_FmPcdKgKnownFieldsDfltTypes type; /**< Default type select*/ + e_FmPcdKgExtractDfltSelect dfltSelect; /**< Default register select */ +} t_FmPcdKgExtractDflt; + +/**************************************************************************//** + @Description A structure for defining all parameters needed for + generation a key and using a hash function +*//***************************************************************************/ +typedef struct t_FmPcdKgKeyExtractAndHashParams { + uint32_t privateDflt0; /**< Scheme default register 0 */ + uint32_t privateDflt1; /**< Scheme default register 1 */ + uint8_t numOfUsedExtracts; /**< defines the valid size of the following array */ + t_FmPcdExtractEntry extractArray [FM_PCD_KG_MAX_NUM_OF_EXTRACTS_PER_KEY]; /**< An array of extractions definition. */ + uint8_t numOfUsedDflts; /**< defines the valid size of the following array */ + t_FmPcdKgExtractDflt dflts[FM_PCD_KG_NUM_OF_DEFAULT_GROUPS]; + /**< For each extraction used in this scheme, specify the required + default register to be used when header is not found. + types not specified in this array will get undefined value. */ + uint8_t numOfUsedMasks; /**< defines the valid size of the following array */ + t_FmPcdKgExtractMask masks[FM_PCD_KG_NUM_OF_EXTRACT_MASKS]; + uint8_t hashShift; /**< hash result right shift. Select the 24 bits out of the 64 hash + result. 0 means using the 24 LSB's, otherwise use the + 24 LSB's after shifting right.*/ + uint32_t hashDistributionNumOfFqids; /**< must be > 1 and a power of 2. Represents the range + of queues for the key and hash functionality */ + uint8_t hashDistributionFqidsShift; /**< selects the FQID bits that will be effected by the hash */ + bool symmetricHash; /**< TRUE to generate the same hash for frames with swapped source and + destination fields on all layers; If TRUE, driver will check that for + all layers, if SRC extraction is selected, DST extraction must also be + selected, and vice versa. */ +} t_FmPcdKgKeyExtractAndHashParams; + +/**************************************************************************//** + @Description A structure of parameters for defining a single + Fqid mask (extracted OR). +*//***************************************************************************/ +typedef struct t_FmPcdKgExtractedOrParams { + e_FmPcdExtractType type; /**< Extraction type select */ + union { + struct { /**< used when type = e_FM_PCD_KG_EXTRACT_BY_HDR */ + e_NetHeaderType hdr; + e_FmPcdHdrIndex hdrIndex; /**< Relevant only for MPLS, VLAN and tunneled + IP. Otherwise should be cleared.*/ + bool ignoreProtocolValidation; + /**< continue extraction even if protocol is not recognized */ + } extractByHdr; + e_FmPcdExtractFrom src; /**< used when type = e_FM_PCD_KG_EXTRACT_NON_HDR */ + }; + uint8_t extractionOffset; /**< Offset for extraction (in bytes). */ + e_FmPcdKgExtractDfltSelect dfltValue; /**< Select register from which extraction is taken if + field not found */ + uint8_t mask; /**< Extraction mask (specified bits are used) */ + uint8_t bitOffsetInFqid; /**< 0-31, Selects which bits of the 24 FQID bits to effect using + the extracted byte; Assume byte is placed as the 8 MSB's in + a 32 bit word where the lower bits + are the FQID; i.e if bitOffsetInFqid=1 than its LSB + will effect the FQID MSB, if bitOffsetInFqid=24 than the + extracted byte will effect the 8 LSB's of the FQID, + if bitOffsetInFqid=31 than the byte's MSB will effect + the FQID's LSB; 0 means - no effect on FQID; + Note that one, and only one of + bitOffsetInFqid or bitOffsetInPlcrProfile must be set (i.e, + extracted byte must effect either FQID or Policer profile).*/ + uint8_t bitOffsetInPlcrProfile; + /**< 0-15, Selects which bits of the 8 policer profile id bits to + effect using the extracted byte; Assume byte is placed + as the 8 MSB's in a 16 bit word where the lower bits + are the policer profile id; i.e if bitOffsetInPlcrProfile=1 + than its LSB will effect the profile MSB, if bitOffsetInFqid=8 + than the extracted byte will effect the whole policer profile id, + if bitOffsetInFqid=15 than the byte's MSB will effect + the Policer Profile id's LSB; + 0 means - no effect on policer profile; Note that one, and only one of + bitOffsetInFqid or bitOffsetInPlcrProfile must be set (i.e, + extracted byte must effect either FQID or Policer profile).*/ +} t_FmPcdKgExtractedOrParams; + +/**************************************************************************//** + @Description A structure for configuring scheme counter +*//***************************************************************************/ +typedef struct t_FmPcdKgSchemeCounter { + bool update; /**< FALSE to keep the current counter state + and continue from that point, TRUE to update/reset + the counter when the scheme is written. */ + uint32_t value; /**< If update=TRUE, this value will be written into the + counter. clear this field to reset the counter. */ +} t_FmPcdKgSchemeCounter; + +/**************************************************************************//** + @Description A structure for defining policer profile + parameters as required by keygen (when policer + is the next engine after this scheme). +*//***************************************************************************/ +typedef struct t_FmPcdKgPlcrProfile { + bool sharedProfile; /**< TRUE if this profile is shared between ports + (i.e. managed by master partition) May not be TRUE + if profile is after Coarse Classification*/ + bool direct; /**< if TRUE, directRelativeProfileId only selects the profile + id, if FALSE fqidOffsetRelativeProfileIdBase is used + together with fqidOffsetShift and numOfProfiles + parameters, to define a range of profiles from + which the keygen result will determine the + destination policer profile. */ + union { + uint16_t directRelativeProfileId; /**< Used if 'direct' is TRUE, to select policer profile. + This parameter should + indicate the policer profile offset within the port's + policer profiles or SHARED window. */ + struct { + uint8_t fqidOffsetShift; /**< shift of KG results without the qid base */ + uint8_t fqidOffsetRelativeProfileIdBase; + /**< OR of KG results without the qid base + This parameter should indicate the policer profile + offset within the port's policer profiles window or + SHARED window depends on sharedProfile */ + uint8_t numOfProfiles; /**< Range of profiles starting at base */ + } indirectProfile; + } profileSelect; +} t_FmPcdKgPlcrProfile; + +/**************************************************************************//** + @Description A structure for CC parameters if CC is the next engine after KG +*//***************************************************************************/ +typedef struct t_FmPcdKgCc { + t_Handle h_CcTree; /**< A handle to a CC Tree */ + uint8_t grpId; /**< CC group id within the CC tree */ + bool plcrNext; /**< TRUE if after CC, in case of data frame, + policing is required. */ + bool bypassPlcrProfileGeneration; + /**< TRUE to bypass keygen policer profile + generation (profile selected is the one selected at + port initialization). */ + t_FmPcdKgPlcrProfile plcrProfile; /**< only if plcrNext=TRUE and bypassPlcrProfileGeneration=FALSE */ +} t_FmPcdKgCc; + +/**************************************************************************//** + @Description A structure for initializing a keygen single scheme +*//***************************************************************************/ +typedef struct t_FmPcdKgSchemeParams { + bool modify; /**< TRUE to change an existing scheme */ + union + { + uint8_t relativeSchemeId; /**< if modify=FALSE:Partition relative scheme id */ + t_Handle h_Scheme; /**< if modify=TRUE: a handle of the existing scheme */ + }id; + bool alwaysDirect; /**< This scheme is reached only directly, i.e. no need for match vector. Keygen will ignore + it when matching */ + struct { /**< HL Relevant only if alwaysDirect = FALSE */ + t_Handle h_NetEnv; /**< A handle to the Network environment as returned + by FM_PCD_SetNetEnvCharacteristics() */ + uint8_t numOfDistinctionUnits; /**< Number of netenv units listed in unitIds array */ + uint8_t unitIds[FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS]; + /**< Indexes as passed to SetNetEnvCharacteristics array*/ + } netEnvParams; + bool useHash; /**< use the KG Hash functionality */ + t_FmPcdKgKeyExtractAndHashParams keyExtractAndHashParams; + /**< used only if useHash = TRUE */ + bool bypassFqidGeneration; /**< Normally - FALSE, TRUE to avoid FQID update in the IC; + In such a case FQID after KG will be the default FQID + defined for the relevant port, or the FQID defined by CC + in cases where CC was the previous engine. */ + uint32_t baseFqid; /**< Base FQID; Relevant only if bypassFqidGeneration = FALSE; + If hash is used and an even distribution is expected + according to hashDistributionNumOfFqids, baseFqid must be aligned to + hashDistributionNumOfFqids. */ + uint8_t numOfUsedExtractedOrs; /**< Number of Fqid masks listed in extractedOrs array*/ + t_FmPcdKgExtractedOrParams extractedOrs[FM_PCD_KG_NUM_OF_GENERIC_REGS]; + /**< IN: FM_PCD_KG_NUM_OF_GENERIC_REGS + registers are shared between qidMasks + functionality and some of the extraction + actions; Normally only some will be used + for qidMask. Driver will return error if + resource is full at initialization time. */ + e_FmPcdEngine nextEngine; /**< may be BMI, PLCR or CC */ + union { /**< depends on nextEngine */ + e_FmPcdDoneAction doneAction; /**< Used when next engine is BMI (done) */ + t_FmPcdKgPlcrProfile plcrProfile; /**< Used when next engine is PLCR */ + t_FmPcdKgCc cc; /**< Used when next engine is CC */ + } kgNextEngineParams; + t_FmPcdKgSchemeCounter schemeCounter; /**< A structure of parameters for updating + the scheme counter */ +} t_FmPcdKgSchemeParams; + +/**************************************************************************//** + @Description A structure for defining CC params when CC is the + next engine after a CC node. +*//***************************************************************************/ +typedef struct t_FmPcdCcNextCcParams { + t_Handle h_CcNode; /**< A handle of the next CC node */ +} t_FmPcdCcNextCcParams; + +/**************************************************************************//** + @Description A structure for defining PLCR params when PLCR is the + next engine after a CC node. +*//***************************************************************************/ +typedef struct t_FmPcdCcNextPlcrParams { + bool overrideParams; /**< TRUE if CC override previously decided parameters*/ + bool sharedProfile; /**< Relevant only if overrideParams=TRUE: + TRUE if this profile is shared between ports */ + uint16_t newRelativeProfileId; /**< Relevant only if overrideParams=TRUE: + (otherwise profile id is taken from keygen); + This parameter should indicate the policer + profile offset within the port's + policer profiles or from SHARED window.*/ + uint32_t newFqid; /**< Relevant only if overrideParams=TRUE: + FQID for enqueuing the frame; + In earlier chips if policer next engine is KEYGEN, + this parameter can be 0, because the KEYGEN + always decides the enqueue FQID.*/ + bool statisticsEn; /**< In the case of TRUE Statistic counter is + incremented for each received frame passed through + this Coarse Classification entry.*/ +} t_FmPcdCcNextPlcrParams; + +/**************************************************************************//** + @Description A structure for defining enqueue params when BMI is the + next engine after a CC node. +*//***************************************************************************/ +typedef struct t_FmPcdCcNextEnqueueParams { + + e_FmPcdDoneAction action; /**< Action - when next engine is BMI (done) */ + bool overrideFqid; /**< TRUE if CC override previously decided Fqid(by Keygen), + relevant if action = e_FM_PCD_ENQ_FRAME */ + uint32_t newFqid; /**< Valid if overrideFqid=TRUE, FQID for enqueuing the frame + (otherwise FQID is taken from keygen), + relevant if action = e_FM_PCD_ENQ_FRAME*/ + bool statisticsEn; /**< In the case of TRUE Statistic counter is + incremented for each received frame passed through + this Coarse Classification entry.*/ +} t_FmPcdCcNextEnqueueParams; + +/**************************************************************************//** + @Description A structure for defining KG params when KG is the + next engine after a CC node. +*//***************************************************************************/ +typedef struct t_FmPcdCcNextKgParams { + bool overrideFqid; /**< TRUE if CC override previously decided Fqid (by keygen), + Note - this parameters irrelevant for earlier chips*/ + uint32_t newFqid; /**< Valid if overrideFqid=TRUE, FQID for enqueuing the frame + (otherwise FQID is taken from keygen), + Note - this parameters irrelevant for earlier chips*/ + t_Handle h_DirectScheme; /**< Direct scheme handle to go to. */ + bool statisticsEn; /**< In the case of TRUE Statistic counter is + incremented for each received frame passed through + this Coarse Classification entry.*/ +} t_FmPcdCcNextKgParams; + +/**************************************************************************//** + @Description A structure for defining next engine params after a CC node. +*//***************************************************************************/ +typedef struct t_FmPcdCcNextEngineParams { + e_FmPcdEngine nextEngine; /**< User has to initialize parameters + according to nextEngine definition */ + union { + t_FmPcdCcNextCcParams ccParams; /**< Parameters in case next engine is CC */ + t_FmPcdCcNextPlcrParams plcrParams; /**< Parameters in case next engine is PLCR */ + t_FmPcdCcNextEnqueueParams enqueueParams; /**< Parameters in case next engine is BMI */ + t_FmPcdCcNextKgParams kgParams; /**< Parameters in case next engine is KG */ + } params; +#if defined(FM_CAPWAP_SUPPORT) + t_Handle h_Manip; /**< Handler to headerManip. + Relevant if next engine of the type result + (e_FM_PCD_PLCR, e_FM_PCD_KG, e_FM_PCD_DONE) */ +#endif /* defined(FM_CAPWAP_SUPPORT) || ... */ +} t_FmPcdCcNextEngineParams; + +/**************************************************************************//** + @Description A structure for defining a single CC Key parameters +*//***************************************************************************/ +typedef struct t_FmPcdCcKeyParams { + uint8_t *p_Key; /**< pointer to the key of the size defined in keySize*/ + uint8_t *p_Mask; /**< pointer to the Mask per key of the size defined + in keySize. p_Key and p_Mask (if defined) has to be + of the same size defined in the keySize */ + t_FmPcdCcNextEngineParams ccNextEngineParams; + /**< parameters for the next for the defined Key in + the p_Key */ +} t_FmPcdCcKeyParams; + +/**************************************************************************//** + @Description A structure for defining CC Keys parameters +*//***************************************************************************/ +typedef struct t_KeysParams { + uint8_t numOfKeys; /**< Number Of relevant Keys */ + uint8_t keySize; /**< size of the key - in the case of the extraction of + the type FULL_FIELD keySize has to be as standard size of the relevant + key. In the another type of extraction keySize has to be as size of extraction. + In the case of action = e_FM_PCD_ACTION_INDEXED_LOOKUP the size of keySize has to be 2*/ + t_FmPcdCcKeyParams keyParams[FM_PCD_MAX_NUM_OF_KEYS]; + /**< it's array with numOfKeys entries each entry in + the array of the type t_FmPcdCcKeyParams */ + t_FmPcdCcNextEngineParams ccNextEngineParamsForMiss; + /**< parameters for the next step of + unfound (or undefined) key . Not relevant in the case + of action = e_FM_PCD_ACTION_INDEXED_LOOKUP*/ +} t_KeysParams; + +/**************************************************************************//** + @Description A structure for defining the CC node params +*//***************************************************************************/ +typedef struct t_FmPcdCcNodeParams { + t_FmPcdExtractEntry extractCcParams; /**< params which defines extraction parameters */ + t_KeysParams keysParams; /**< params which defines Keys parameters of the + extraction defined in extractCcParams */ +} t_FmPcdCcNodeParams; + +/**************************************************************************//** + @Description A structure for defining each CC tree group in term of + NetEnv units and the action to be taken in each case. + the unitIds list must be in order from lower to higher indexes. + + t_FmPcdCcNextEngineParams is a list of 2^numOfDistinctionUnits + structures where each defines the next action to be taken for + each units combination. for example: + numOfDistinctionUnits = 2 + unitIds = {1,3} + p_NextEnginePerEntriesInGrp[0] = t_FmPcdCcNextEngineParams for the case that + unit 1 - not found; unit 3 - not found; + p_NextEnginePerEntriesInGrp[1] = t_FmPcdCcNextEngineParams for the case that + unit 1 - not found; unit 3 - found; + p_NextEnginePerEntriesInGrp[2] = t_FmPcdCcNextEngineParams for the case that + unit 1 - found; unit 3 - not found; + p_NextEnginePerEntriesInGrp[3] = t_FmPcdCcNextEngineParams for the case that + unit 1 - found; unit 3 - found; +*//***************************************************************************/ +typedef struct t_FmPcdCcGrpParams { + uint8_t numOfDistinctionUnits; /**< up to 4 */ + uint8_t unitIds[FM_PCD_MAX_NUM_OF_CC_UNITS]; + /**< Indexes of the units as defined in + FM_PCD_SetNetEnvCharacteristics() */ + t_FmPcdCcNextEngineParams nextEnginePerEntriesInGrp[FM_PCD_MAX_NUM_OF_CC_ENTRIES_IN_GRP]; + /**< Max size is 16 - if only one group used */ +} t_FmPcdCcGrpParams; + +/**************************************************************************//** + @Description A structure for defining the CC tree groups +*//***************************************************************************/ +typedef struct t_FmPcdCcTreeParams { + t_Handle h_NetEnv; /**< A handle to the Network environment as returned + by FM_PCD_SetNetEnvCharacteristics() */ + uint8_t numOfGrps; /**< Number of CC groups within the CC tree */ + t_FmPcdCcGrpParams ccGrpParams[FM_PCD_MAX_NUM_OF_CC_GROUPS]; /**< Parameters for each group. */ +} t_FmPcdCcTreeParams; + +/**************************************************************************//** + @Description A structure for defining parameters for byte rate +*//***************************************************************************/ +typedef struct t_FmPcdPlcrByteRateModeParams { + e_FmPcdPlcrFrameLengthSelect frameLengthSelection; /**< Frame length selection */ + e_FmPcdPlcrRollBackFrameSelect rollBackFrameSelection; /**< relevant option only e_FM_PCD_PLCR_L2_FRM_LEN, + e_FM_PCD_PLCR_FULL_FRM_LEN */ +} t_FmPcdPlcrByteRateModeParams; + +/**************************************************************************//** + @Description A structure for selcting the policer profile RFC-2698 or + RFC-4115 parameters +*//***************************************************************************/ +typedef struct t_FmPcdPlcrNonPassthroughAlgParams { + e_FmPcdPlcrRateMode rateMode; /**< Byte / Packet */ + t_FmPcdPlcrByteRateModeParams byteModeParams; /**< Valid for Byte NULL for Packet */ + uint32_t comittedInfoRate; /**< KBits/Sec or Packets/Sec */ + uint32_t comittedBurstSize; /**< Bytes/Packets */ + uint32_t peakOrAccessiveInfoRate; /**< KBits/Sec or Packets/Sec */ + uint32_t peakOrAccessiveBurstSize; /**< Bytes/Packets */ +} t_FmPcdPlcrNonPassthroughAlgParams; + +/**************************************************************************//** + @Description A union for defining Policer next engine parameters +*//***************************************************************************/ +typedef union u_FmPcdPlcrNextEngineParams { + e_FmPcdDoneAction action; /**< Action - when next engine is BMI (done) */ + t_Handle h_Profile; /**< Policer profile handle - used when next engine + is PLCR, must be a SHARED profile */ + t_Handle h_DirectScheme; /**< Direct scheme select - when next engine is Keygen */ +} u_FmPcdPlcrNextEngineParams; + +/**************************************************************************//** + @Description A structure for selecting the policer profile entry parameters +*//***************************************************************************/ +typedef struct t_FmPcdPlcrProfileParams { + bool modify; /**< TRUE to change an existing profile */ + union { + struct { + e_FmPcdProfileTypeSelection profileType; /**< Type of policer profile */ + t_Handle h_FmPort; /**< Relevant for per-port profiles only */ + uint16_t relativeProfileId; /**< Profile id - relative to shared group or to port */ + } newParams; /**< use it when modify=FALSE */ + t_Handle h_Profile; /**< A handle to a profile - use it when modify=TRUE */ + } id; + e_FmPcdPlcrAlgorithmSelection algSelection; /**< Profile Algorithm PASS_THROUGH, RFC_2698, RFC_4115 */ + e_FmPcdPlcrColorMode colorMode; /**< COLOR_BLIND, COLOR_AWARE */ + + union { + e_FmPcdPlcrColor dfltColor; /**< For Color-Blind Pass-Through mode. the policer will re-color + any incoming packet with the default value. */ + e_FmPcdPlcrColor override; /**< For Color-Aware modes. The profile response to a + pre-color value of 2'b11. */ + } color; + + t_FmPcdPlcrNonPassthroughAlgParams nonPassthroughAlgParams; /**< RFC2698 or RFC4115 params */ + + e_FmPcdEngine nextEngineOnGreen; /**< Green next engine type */ + u_FmPcdPlcrNextEngineParams paramsOnGreen; /**< Green next engine params */ + + e_FmPcdEngine nextEngineOnYellow; /**< Yellow next engine type */ + u_FmPcdPlcrNextEngineParams paramsOnYellow; /**< Yellow next engine params */ + + e_FmPcdEngine nextEngineOnRed; /**< Red next engine type */ + u_FmPcdPlcrNextEngineParams paramsOnRed; /**< Red next engine params */ + + bool trapProfileOnFlowA; /**< Trap on flow A */ + bool trapProfileOnFlowB; /**< Trap on flow B */ + bool trapProfileOnFlowC; /**< Trap on flow C */ +} t_FmPcdPlcrProfileParams; + +#if defined(FM_CAPWAP_SUPPORT) +/**************************************************************************//** + @Description A structure for selecting the location of manipulation +*//***************************************************************************/ +typedef struct t_FmPcdManipLocationParams { + e_FmPcdManipLocateType type; /**< location of manipulation type select */ + struct { /**< used when type = e_FM_PCD_MANIP_BY_HDR */ + e_NetHeaderType hdr; /**< Header selection */ + e_FmPcdHdrIndex hdrIndex; /**< Relevant only for MPLS, VLAN and tunneled + IP. Otherwise should be cleared. */ + bool byField; /**< TRUE if the location of manipulation is according to some field in the specific header*/ + t_FmPcdFields fullField; /**< Relevant only when byField = TRUE: Extract field */ + } manipByHdr; +} t_FmPcdManipLocationParams; + +/**************************************************************************//** + @Description structure for defining insert manipulation + of the type e_FM_PCD_MANIP_INSRT_TO_START_OF_FRAME_TEMPLATE +*//***************************************************************************/ +typedef struct t_FmPcdManipInsrtByTemplateParams { + uint8_t size; /**< size of insert template to the start of the frame. */ + uint8_t hdrTemplate[FM_PCD_MAX_MANIP_INSRT_TEMPLATE_SIZE]; + /**< array of the insertion template. */ + + bool modifyOuterIp; /**< TRUE if user want to modify some fields in outer IP. */ + struct { + uint16_t ipOuterOffset; /**< offset of outer IP in the insert template, relevant if modifyOuterIp = TRUE.*/ + uint16_t dscpEcn; /**< value of dscpEcn in IP outer, relevant if modifyOuterIp = TRUE. + in IPV4 dscpEcn only byte - it has to be adjusted to the right*/ + bool udpPresent; /**< TRUE if UDP is present in the insert template, relevant if modifyOuterIp = TRUE.*/ + uint8_t udpOffset; /**< offset in the insert template of UDP, relevant if modifyOuterIp = TRUE and udpPresent=TRUE.*/ + uint8_t ipIdentGenId; /**< Used by FMan-CTRL to calculate IP-identification field,relevant if modifyOuterIp = TRUE.*/ + bool recalculateLength; /**< TRUE if recalculate length has to be performed due to the engines in the path which can change the frame later, relevant if modifyOuterIp = TRUE.*/ + struct { + uint8_t blockSize; /**< The CAAM block-size; Used by FMan-CTRL to calculate the IP-total-len field.*/ + uint8_t extraBytesAddedAlignedToBlockSize; /**< Used by FMan-CTRL to calculate the IP-total-len field and UDP length*/ + uint8_t extraBytesAddedNotAlignedToBlockSize;/**< Used by FMan-CTRL to calculate the IP-total-len field and UDP length.*/ + } recalculateLengthParams; /**< recalculate length parameters - relevant if modifyOuterIp = TRUE and recalculateLength = TRUE */ + } modifyOuterIpParams; /**< Outer IP modification parameters - ignored if modifyOuterIp is FALSE */ + + bool modifyOuterVlan; /**< TRUE if user wants to modify vpri field in the outer VLAN header*/ + struct { + uint8_t vpri; /**< value of vpri, relevant if modifyOuterVlan = TRUE + vpri only 3 bits, it has to be adjusted to the right*/ + } modifyOuterVlanParams; +} t_FmPcdManipInsrtByTemplateParams; +#endif /* defined(FM_CAPWAP_SUPPORT) || ... */ + + +#ifdef FM_CAPWAP_SUPPORT +/**************************************************************************//** + @Description structure for defining CAPWAP fragmentation +*//***************************************************************************/ +typedef struct t_CapwapFragmentationParams { + uint16_t sizeForFragmentation; /**< if length of the frame is greater than this value, CAPWAP fragmentation will be executed.*/ + bool headerOptionsCompr; /**< TRUE - first fragment include the CAPWAP header options field, + and all other fragments exclude the CAPWAP options field, + FALSE - all fragments include CAPWAP header options field. */ +} t_CapwapFragmentationParams; + +/**************************************************************************//** + @Description structure for defining CAPWAP Re-assembly +*//***************************************************************************/ +typedef struct t_CapwapReassemblyParams { + uint16_t maxNumFramesInProcess; /**< Number of frames which can be processed by Reassembly in the same time. + It has to be power of 2. + In the case numOfFramesPerHashEntry == e_FM_PCD_MANIP_FOUR_WAYS_HASH, + maxNumFramesInProcess has to be in the range of 4 - 512, + In the case numOfFramesPerHashEntry == e_FM_PCD_MANIP_EIGHT_WAYS_HASH, + maxNumFramesInProcess has to be in the range of 8 - 2048 */ + bool haltOnDuplicationFrag; /**< In the case of TRUE, Reassembly process halted due to duplicated fragment, + and all processed fragments passed for enqueue with error indication. + In the case of FALSE, only duplicated fragment passed for enqueue with error indication */ + + e_FmPcdManipReassemTimeOutMode timeOutMode; /**< Expiration delay initialized by Reassembly process */ + uint32_t fqidForTimeOutFrames; /**< Fqid in which time out frames will enqueue during Time Out Process */ + uint32_t timeoutRoutineRequestTime; + /**< Represents the time interval in microseconds between consecutive + timeout routine requests It has to be power of 2. */ + uint32_t timeoutThresholdForReassmProcess; + /**< Represents the time interval in microseconds which defines + if opened frame (at least one fragment was processed but not all the fragments)is found as too old*/ + + e_FmPcdManipReassemWaysNumber numOfFramesPerHashEntry;/**< Number of frames per hash entry needed for reassembly process */ +} t_CapwapReassemblyParams; +#endif /* FM_CAPWAP_SUPPORT */ + + +#if defined(FM_CAPWAP_SUPPORT) +/**************************************************************************//** + @Description structure for defining fragmentation/reassembly +*//***************************************************************************/ +typedef struct t_FmPcdManipFragOrReasmParams { + bool frag; /**< TRUE if using the structure for fragmentation, + otherwise this structure is used for reassembly */ + uint8_t extBufPoolIndx; /**< Index of the buffer pool ID which was configured for port + and can be used for manipulation; + NOTE: This field is relevant only for CAPWAP fragmentation + and reassembly */ + e_NetHeaderType hdr; /**< Header selection */ + union { +#ifdef FM_CAPWAP_SUPPORT + t_CapwapFragmentationParams capwapFragParams; /**< Structure for CAPWAP fragmentation, relevant if frag = TRUE, hdr = HEADER_TYPE_CAPWAP */ + t_CapwapReassemblyParams capwapReasmParams; /**< Structure for CAPWAP reassembly, relevant if frag = FALSE, hdr = HEADER_TYPE_CAPWAP */ +#endif /* FM_CAPWAP_SUPPORT */ + }; +} t_FmPcdManipFragOrReasmParams; + +/**************************************************************************//** + @Description structure for defining insert manipulation +*//***************************************************************************/ +typedef struct t_FmPcdManipInsrtParams { + e_FmPcdManipInsrtType type; /**< Type of insert manipulation */ + union { + t_FmPcdManipInsrtByTemplateParams insrtByTemplateParams; + /**< parameters for insert manipulation, relevant if + type = e_FM_PCD_MANIP_INSRT_TO_START_OF_FRAME_TEMPLATE */ + }; +} t_FmPcdManipInsrtParams; + +/**************************************************************************//** + @Description structure for defining remove manipulation +*//***************************************************************************/ +typedef struct t_FmPcdManipRmvParams { + e_FmPcdManipRmvParamsType type; /**< Type of remove manipulation */ + t_FmPcdManipLocationParams rmvSpecificLocationParams; + /**< Specified location of remove manipulation; + This params should be initialized in cases: + - e_FM_PCD_MANIP_RMV_FROM_START_OF_FRAME_TILL_SPECIFIC_LOCATION + - e_FM_PCD_MANIP_RMV_FROM_START_OF_FRAME_INCLUDE_SPECIFIC_LOCATION */ +} t_FmPcdManipRmvParams; + +/**************************************************************************//** + @Description structure for defining manipulation +*//***************************************************************************/ +typedef struct t_FmPcdManipParams { + bool rmv; /**< TRUE, if defined remove manipulation */ + t_FmPcdManipRmvParams rmvParams; /**< Parameters for remove manipulation, relevant if rmv = TRUE */ + + bool insrt; /**< TRUE, if defined insert manipulation */ + t_FmPcdManipInsrtParams insrtParams; /**< Parameters for insert manipulation, relevant if insrt = TRUE */ + + bool fragOrReasm; /**< TRUE, if defined fragmentation/reassembly manipulation */ + t_FmPcdManipFragOrReasmParams fragOrReasmParams; /**< Parameters for fragmentation/reassembly manipulation, relevant if fragOrReasm = TRUE */ + + /**< General parameters */ + bool treatFdStatusFieldsAsErrors; + /**< Set to TRUE when the port that is using this manip is chained + to SEC (i.e. the traffic was forwarded from SEC) */ +} t_FmPcdManipParams; + +/**************************************************************************//** + @Description structure for defining statistics node +*//***************************************************************************/ +typedef struct t_FmPcdStatsParams { + e_FmPcdStatsType type; /**< type of statistics node */ +} t_FmPcdStatsParams; +#endif /* defined(FM_CAPWAP_SUPPORT) || ... */ + + +/**************************************************************************//** + @Function FM_PCD_SetNetEnvCharacteristics + + @Description Define a set of Network Environment Characteristics. + When setting an environment it is important to understand its + application. It is not meant to describe the flows that will run + on the ports using this environment, but what the user means TO DO + with the PCD mechanisms in order to parse-classify-distribute those + frames. + By specifying a distinction unit, the user means it would use that option + for distinction between frames at either a keygen scheme keygen or a coarse + classification action descriptor. Using interchangeable headers to define a + unit means that the user is indifferent to which of the interchangeable + headers is present in the frame, and they want the distinction to be based + on the presence of either one of them. + Depending on context, there are limitations to the use of environments. A + port using the PCD functionality is bound to an environment. Some or even + all ports may share an environment but also an environment per port is + possible. When initializing a scheme, a classification plan group (see below), + or a coarse classification tree, one of the initialized environments must be + stated and related to. When a port is bound to a scheme, a classification + plan group, or a coarse classification tree, it MUST be bound to the same + environment. + The different PCD modules, may relate (for flows definition) ONLY on + distinction units as defined by their environment. When initializing a + scheme for example, it may not choose to select IPV4 as a match for + recognizing flows unless it was defined in the relating environment. In + fact, to guide the user through the configuration of the PCD, each module's + characterization in terms of flows is not done using protocol names, but using + environment indexes. + In terms of HW implementation, the list of distinction units sets the LCV vectors + and later used for match vector, classification plan vectors and coarse classification + indexing. + + @Param[in] h_FmPcd FM PCD module descriptor. + @Param[in] p_NetEnvParams A structure of parameters for the initialization of + the network environment. + + @Return A handle to the initialized object on success; NULL code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Handle FM_PCD_SetNetEnvCharacteristics(t_Handle h_FmPcd, t_FmPcdNetEnvParams *p_NetEnvParams); + +/**************************************************************************//** + @Function FM_PCD_DeleteNetEnvCharacteristics + + @Description Deletes a set of Network Environment Characteristics. + + @Param[in] h_FmPcd FM PCD module descriptor. + @Param[in] h_NetEnv A handle to the Network environment. + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error FM_PCD_DeleteNetEnvCharacteristics(t_Handle h_FmPcd, t_Handle h_NetEnv); + +/**************************************************************************//** + @Function FM_PCD_KgSetScheme + + @Description Initializing or modifying and enabling a scheme for the keygen. + This routine should be called for adding or modifying a scheme. + When a scheme needs modifying, the API requires that it will be + rewritten. In such a case 'modify' should be TRUE. If the + routine is called for a valid scheme and 'modify' is FALSE, + it will return error. + + @Param[in] h_FmPcd A handle to an FM PCD Module. + @Param[in,out] p_Scheme A structure of parameters for defining the scheme + + @Return A handle to the initialized scheme on success; NULL code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Handle FM_PCD_KgSetScheme (t_Handle h_FmPcd, + t_FmPcdKgSchemeParams *p_Scheme); + +/**************************************************************************//** + @Function FM_PCD_KgDeleteScheme + + @Description Deleting an initialized scheme. + + @Param[in] h_FmPcd A handle to an FM PCD Module. + @Param[in] h_Scheme scheme handle as returned by FM_PCD_KgSetScheme + + @Return E_OK on success; Error code otherwise. + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Error FM_PCD_KgDeleteScheme(t_Handle h_FmPcd, t_Handle h_Scheme); + +/**************************************************************************//** + @Function FM_PCD_KgGetSchemeCounter + + @Description Reads scheme packet counter. + + @Param[in] h_FmPcd FM PCD module descriptor. + @Param[in] h_Scheme scheme handle as returned by FM_PCD_KgSetScheme. + + @Return Counter's current value. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +uint32_t FM_PCD_KgGetSchemeCounter(t_Handle h_FmPcd, t_Handle h_Scheme); + +/**************************************************************************//** + @Function FM_PCD_KgSetSchemeCounter + + @Description Writes scheme packet counter. + + @Param[in] h_FmPcd FM PCD module descriptor. + @Param[in] h_Scheme scheme handle as returned by FM_PCD_KgSetScheme. + @Param[in] value New scheme counter value - typically '0' for + resetting the counter. + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Error FM_PCD_KgSetSchemeCounter(t_Handle h_FmPcd, t_Handle h_Scheme, uint32_t value); + +/**************************************************************************//** + @Function FM_PCD_CcBuildTree + + @Description This routine must be called to define a complete coarse + classification tree. This is the way to define coarse + classification to a certain flow - the keygen schemes + may point only to trees defined in this way. + + @Param[in] h_FmPcd FM PCD module descriptor. + @Param[in] p_FmPcdCcTreeParams A structure of parameters to define the tree. + + @Return A handle to the initialized object on success; NULL code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Handle FM_PCD_CcBuildTree (t_Handle h_FmPcd, + t_FmPcdCcTreeParams *p_FmPcdCcTreeParams); + +/**************************************************************************//** + @Function FM_PCD_CcDeleteTree + + @Description Deleting an built tree. + + @Param[in] h_FmPcd A handle to an FM PCD Module. + @Param[in] h_CcTree A handle to a CC tree. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Error FM_PCD_CcDeleteTree(t_Handle h_FmPcd, t_Handle h_CcTree); + +/**************************************************************************//** + @Function FM_PCD_CcSetNode + + @Description This routine should be called for each CC (coarse classification) + node. The whole CC tree should be built bottom up so that each + node points to already defined nodes. + + @Param[in] h_FmPcd FM PCD module descriptor. + @Param[in] p_CcNodeParam A structure of parameters defining the CC node + + @Return A handle to the initialized object on success; NULL code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Handle FM_PCD_CcSetNode(t_Handle h_FmPcd, + t_FmPcdCcNodeParams *p_CcNodeParam); + +/**************************************************************************//** + @Function FM_PCD_CcDeleteNode + + @Description Deleting an built node. + + @Param[in] h_FmPcd A handle to an FM PCD Module. + @Param[in] h_CcNode A handle to a CC node. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Error FM_PCD_CcDeleteNode(t_Handle h_FmPcd, t_Handle h_CcNode); + +/**************************************************************************//** + @Function FM_PCD_CcTreeModifyNextEngine + + @Description Modify the Next Engine Parameters in the entry of the tree. + + @Param[in] h_FmPcd A handle to an FM PCD Module. + @Param[in] h_CcTree A handle to the tree + @Param[in] grpId A Group index in the tree + @Param[in] index Entry index in the group defined by grpId + @Param[in] p_FmPcdCcNextEngineParams A structure for defining new next engine params + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_CcBuildTree(). +*//***************************************************************************/ +t_Error FM_PCD_CcTreeModifyNextEngine(t_Handle h_FmPcd, t_Handle h_CcTree, uint8_t grpId, uint8_t index, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams); + +/**************************************************************************//** + @Function FM_PCD_CcNodeModifyNextEngine + + @Description Modify the Next Engine Parameters in the relevant key entry of the node. + + @Param[in] h_FmPcd A handle to an FM PCD Module. + @Param[in] h_CcNode A handle to the node + @Param[in] keyIndex Key index for Next Engine Params modifications + @Param[in] p_FmPcdCcNextEngineParams A structure for defining new next engine params + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_CcSetNode(). +*//***************************************************************************/ +t_Error FM_PCD_CcNodeModifyNextEngine(t_Handle h_FmPcd, t_Handle h_CcNode, uint8_t keyIndex, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams); + +/**************************************************************************//** + @Function FM_PCD_CcNodeModifyMissNextEngine + + @Description Modify the Next Engine Parameters of the Miss key case of the node. + + @Param[in] h_FmPcd A handle to an FM PCD Module. + @Param[in] h_CcNode A handle to the node + @Param[in] p_FmPcdCcNextEngineParams A structure for defining new next engine params + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_CcSetNode(). +*//***************************************************************************/ +t_Error FM_PCD_CcNodeModifyMissNextEngine(t_Handle h_FmPcd, t_Handle h_CcNode, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams); + +/**************************************************************************//** + @Function FM_PCD_CcNodeRemoveKey + + @Description Remove the key (include Next Engine Parameters of this key) defined by the index of the relevant node . + + @Param[in] h_FmPcd A handle to an FM PCD Module. + @Param[in] h_CcNode A handle to the node + @Param[in] keyIndex Key index for removing + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_CcSetNode() not only of the relevant node but also + the node that points to this node +*//***************************************************************************/ +t_Error FM_PCD_CcNodeRemoveKey(t_Handle h_FmPcd, t_Handle h_CcNode, uint8_t keyIndex); + +/**************************************************************************//** + @Function FM_PCD_CcNodeAddKey + + @Description Add the key(include Next Engine Parameters of this key)in the index defined by the keyIndex . + + @Param[in] h_FmPcd A handle to an FM PCD Module. + @Param[in] h_CcNode A handle to the node + @Param[in] keyIndex Key index for adding + @Param[in] keySize Key size of added key + @Param[in] p_KeyParams A pointer to the parameters includes new key with Next Engine Parameters + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_CcSetNode() not only of the relevant node but also + the node that points to this node +*//***************************************************************************/ +t_Error FM_PCD_CcNodeAddKey(t_Handle h_FmPcd, t_Handle h_CcNode, uint8_t keyIndex, uint8_t keySize, t_FmPcdCcKeyParams *p_KeyParams); + +/**************************************************************************//** + @Function FM_PCD_CcNodeModifyKeyAndNextEngine + + @Description Modify the key and Next Engine Parameters of this key in the index defined by the keyIndex . + + @Param[in] h_FmPcd A handle to an FM PCD Module. + @Param[in] h_CcNode A handle to the node + @Param[in] keyIndex Key index for adding + @Param[in] keySize Key size of added key + @Param[in] p_KeyParams A pointer to the parameters includes modified key and modified Next Engine Parameters + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_CcSetNode() not only of the relevant node but also + the node that points to this node +*//***************************************************************************/ +t_Error FM_PCD_CcNodeModifyKeyAndNextEngine(t_Handle h_FmPcd, t_Handle h_CcNode, uint8_t keyIndex, uint8_t keySize, t_FmPcdCcKeyParams *p_KeyParams); + +/**************************************************************************//** + @Function FM_PCD_CcNodeModifyKey + + @Description Modify the key in the index defined by the keyIndex . + + @Param[in] h_FmPcd A handle to an FM PCD Module. + @Param[in] h_CcNode A handle to the node + @Param[in] keyIndex Key index for adding + @Param[in] keySize Key size of added key + @Param[in] p_Key A pointer to the new key + @Param[in] p_Mask A pointer to the new mask if relevant, otherwise pointer to NULL + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_CcSetNode() not only of the relevant node but also + the node that points to this node +*//***************************************************************************/ +t_Error FM_PCD_CcNodeModifyKey(t_Handle h_FmPcd, t_Handle h_CcNode, uint8_t keyIndex, uint8_t keySize, uint8_t *p_Key, uint8_t *p_Mask); + +/**************************************************************************//** + @Function FM_PCD_CcNodeGetKeyCounter + + @Description This routine may be used to get a counter of specific key in a CC + Node; This counter reflects how many frames passed that were matched + this key. + + @Param[in] h_FmPcd A handle to an FM PCD Module. + @Param[in] h_CcNode A handle to the node + @Param[in] keyIndex Key index for adding + + @Return The specific key counter. + + @Cautions Allowed only following FM_PCD_CcSetNode() not only of the relevant node but also + the node that points to this node +*//***************************************************************************/ +uint32_t FM_PCD_CcNodeGetKeyCounter(t_Handle h_FmPcd, t_Handle h_CcNode, uint8_t keyIndex); + +/**************************************************************************//** + @Function FM_PCD_PlcrSetProfile + + @Description Sets a profile entry in the policer profile table. + The routine overrides any existing value. + + @Param[in] h_FmPcd A handle to an FM PCD Module. + @Param[in] p_Profile A structure of parameters for defining a + policer profile entry. + + @Return A handle to the initialized object on success; NULL code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Handle FM_PCD_PlcrSetProfile(t_Handle h_FmPcd, + t_FmPcdPlcrProfileParams *p_Profile); + +/**************************************************************************//** + @Function FM_PCD_PlcrDeleteProfile + + @Description Delete a profile entry in the policer profile table. + The routine set entry to invalid. + + @Param[in] h_FmPcd A handle to an FM PCD Module. + @Param[in] h_Profile A handle to the profile. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Error FM_PCD_PlcrDeleteProfile(t_Handle h_FmPcd, t_Handle h_Profile); + +/**************************************************************************//** + @Function FM_PCD_PlcrGetProfileCounter + + @Description Sets an entry in the classification plan. + The routine overrides any existing value. + + @Param[in] h_FmPcd A handle to an FM PCD Module. + @Param[in] h_Profile A handle to the profile. + @Param[in] counter Counter selector. + + @Return specific counter value. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +uint32_t FM_PCD_PlcrGetProfileCounter(t_Handle h_FmPcd, t_Handle h_Profile, e_FmPcdPlcrProfileCounters counter); + +/**************************************************************************//** + @Function FM_PCD_PlcrSetProfileCounter + + @Description Sets an entry in the classification plan. + The routine overrides any existing value. + + @Param[in] h_FmPcd A handle to an FM PCD Module. + @Param[in] h_Profile A handle to the profile. + @Param[in] counter Counter selector. + @Param[in] value value to set counter with. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Error FM_PCD_PlcrSetProfileCounter(t_Handle h_FmPcd, t_Handle h_Profile, e_FmPcdPlcrProfileCounters counter, uint32_t value); + +#if defined(FM_CAPWAP_SUPPORT) +/**************************************************************************//** + @Function FM_PCD_ManipSetNode + + @Description This routine should be called for defining a manipulation + node. A manipulation node must be defined before the CC node + that precedes it. + + @Param[in] h_FmPcd FM PCD module descriptor. + @Param[in] p_FmPcdManipParams A structure of parameters defining the manipulation + + @Return A handle to the initialized object on success; NULL code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Handle FM_PCD_ManipSetNode(t_Handle h_FmPcd, t_FmPcdManipParams *p_FmPcdManipParams); + +/**************************************************************************//** + @Function FM_PCD_ManipDeleteNode + + @Description Delete an existing manip node. + + @Param[in] h_FmPcd A handle to an FM PCD Module. + @Param[in] h_HdrManipNode A handle to a Manip node. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Error FM_PCD_ManipDeleteNode(t_Handle h_FmPcd, t_Handle h_HdrManipNode); +#endif /* defined(FM_CAPWAP_SUPPORT) || ... */ + + +#ifdef FM_CAPWAP_SUPPORT +/**************************************************************************//** + @Function FM_PCD_StatisticsSetNode + + @Description This routine should be called for defining a statistics + node. + + @Param[in] h_FmPcd FM PCD module descriptor. + @Param[in] p_FmPcdstatsParams A structure of parameters defining the statistics + + @Return A handle to the initialized object on success; NULL code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Handle FM_PCD_StatisticsSetNode(t_Handle h_FmPcd, t_FmPcdStatsParams *p_FmPcdstatsParams); +#endif /* FM_CAPWAP_SUPPORT */ + +/** @} */ /* end of FM_PCD_Runtime_tree_buildgrp group */ +/** @} */ /* end of FM_PCD_Runtime_grp group */ +/** @} */ /* end of FM_PCD_grp group */ +/** @} */ /* end of FM_grp group */ + + + +#endif /* __FM_PCD_EXT */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/inc/Peripherals/fm_port_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/inc/Peripherals/fm_port_ext.h @@ -0,0 +1,2196 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 fm_port_ext.h + + @Description FM-Port Application Programming Interface. +*//***************************************************************************/ +#ifndef __FM_PORT_EXT +#define __FM_PORT_EXT + +#include "error_ext.h" +#include "std_ext.h" +#include "fm_pcd_ext.h" +#include "fm_ext.h" +#include "net_ext.h" + + +/**************************************************************************//** + + @Group FM_grp Frame Manager API + + @Description FM API functions, definitions and enums + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group FM_PORT_grp FM Port + + @Description FM Port API + + The FM uses a general module called "port" to represent a Tx port + (MAC), an Rx port (MAC), offline parsing flow or host command + flow. There may be up to 17 (may change) ports in an FM - 5 Tx + ports (4 for the 1G MACs, 1 for the 10G MAC), 5 Rx Ports, and 7 + Host command/Offline parsing ports. The SW driver manages these + ports as sub-modules of the FM, i.e. after an FM is initialized, + its ports may be initialized and operated upon. + + The port is initialized aware of its type, but other functions on + a port may be indifferent to its type. When necessary, the driver + verifies coherency and returns error if applicable. + + On initialization, user specifies the port type and it's index + (relative to the port's type). Host command and Offline parsing + ports share the same id range, I.e user may not initialized host + command port 0 and offline parsing port 0. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Description An enum for defining port PCD modes. + This enum defines the superset of PCD engines support - i.e. not + all engines have to be used, but all have to be enabled. The real + flow of a specific frame depends on the PCD configuration and the + frame headers and payload. +*//***************************************************************************/ +typedef enum e_FmPortPcdSupport { + e_FM_PORT_PCD_SUPPORT_NONE = 0, /**< BMI to BMI, PCD is not used */ + e_FM_PORT_PCD_SUPPORT_PRS_ONLY, /**< Use only Parser */ + e_FM_PORT_PCD_SUPPORT_PLCR_ONLY, /**< Use only Policer */ + e_FM_PORT_PCD_SUPPORT_PRS_AND_PLCR, /**< Use Parser and Policer */ + e_FM_PORT_PCD_SUPPORT_PRS_AND_KG, /**< Use Parser and Keygen */ + e_FM_PORT_PCD_SUPPORT_PRS_AND_KG_AND_CC, /**< Use Parser, Keygen and Coarse Classification */ + e_FM_PORT_PCD_SUPPORT_PRS_AND_KG_AND_CC_AND_PLCR, + /**< Use all PCD engines */ + e_FM_PORT_PCD_SUPPORT_PRS_AND_KG_AND_PLCR /**< Use Parser, Keygen and Policer */ +#ifdef FM_CAPWAP_SUPPORT + , + e_FM_PORT_PCD_SUPPORT_CC_ONLY, /**< Use only Coarse Classification */ + e_FM_PORT_PCD_SUPPORT_CC_AND_KG, /**< Use Coarse Classification,and Keygen */ + e_FM_PORT_PCD_SUPPORT_CC_AND_KG_AND_PLCR /**< Use Coarse Classification, Keygen and Policer */ +#endif /* FM_CAPWAP_SUPPORT */ +} e_FmPortPcdSupport; + +/**************************************************************************//** + @Description Port interrupts +*//***************************************************************************/ +typedef enum e_FmPortExceptions { + e_FM_PORT_EXCEPTION_IM_BUSY /**< Independent-Mode Rx-BUSY */ +} e_FmPortExceptions; + + +/**************************************************************************//** + @Collection General FM Port defines +*//***************************************************************************/ +#define FM_PORT_PRS_RESULT_NUM_OF_WORDS 8 /**< Number of 4 bytes words in parser result */ +/* @} */ + +/**************************************************************************//** + @Collection FM Frame error +*//***************************************************************************/ +typedef uint32_t fmPortFrameErrSelect_t; /**< typedef for defining Frame Descriptor errors */ + +#define FM_PORT_FRM_ERR_UNSUPPORTED_FORMAT 0x04000000 /**< Offline parsing only! Unsupported Format */ +#define FM_PORT_FRM_ERR_LENGTH 0x02000000 /**< Offline parsing only! Length Error */ +#define FM_PORT_FRM_ERR_DMA 0x01000000 /**< DMA Data error */ +#ifdef FM_CAPWAP_SUPPORT +#define FM_PORT_FRM_ERR_NON_FM 0x00400000 /**< non Frame-Manager error; probably come from SEC that + was chained to FM */ +#endif /* FM_CAPWAP_SUPPORT */ +#define FM_PORT_FRM_ERR_PHYSICAL 0x00080000 /**< Rx FIFO overflow, FCS error, code error, running disparity + error (SGMII and TBI modes), FIFO parity error. PHY + Sequence error, PHY error control character detected. */ +#define FM_PORT_FRM_ERR_SIZE 0x00040000 /**< Frame too long OR Frame size exceeds max_length_frame */ +#define FM_PORT_FRM_ERR_CLS_DISCARD 0x00020000 /**< classification discard */ +#define FM_PORT_FRM_ERR_EXTRACTION 0x00008000 /**< Extract Out of Frame */ +#define FM_PORT_FRM_ERR_NO_SCHEME 0x00004000 /**< No Scheme Selected */ +#define FM_PORT_FRM_ERR_KEYSIZE_OVERFLOW 0x00002000 /**< Keysize Overflow */ +#define FM_PORT_FRM_ERR_COLOR_YELLOW 0x00000400 /**< Frame color is yellow */ +#define FM_PORT_FRM_ERR_COLOR_RED 0x00000800 /**< Frame color is red */ +#define FM_PORT_FRM_ERR_ILL_PLCR 0x00000200 /**< Illegal Policer Profile selected */ +#define FM_PORT_FRM_ERR_PLCR_FRAME_LEN 0x00000100 /**< Policer frame length error */ +#define FM_PORT_FRM_ERR_PRS_TIMEOUT 0x00000080 /**< Parser Time out Exceed */ +#define FM_PORT_FRM_ERR_PRS_ILL_INSTRUCT 0x00000040 /**< Invalid Soft Parser instruction */ +#define FM_PORT_FRM_ERR_PRS_HDR_ERR 0x00000020 /**< Header error was identified during parsing */ +#define FM_PORT_FRM_ERR_BLOCK_LIMIT_EXCEEDED 0x00000008 /**< Frame parsed beyind 256 first bytes */ +#define FM_PORT_FRM_ERR_PROCESS_TIMEOUT 0x00000001 /**< FPM Frame Processing Timeout Exceeded */ +/* @} */ + + + +/**************************************************************************//** + @Group FM_PORT_init_grp FM Port Initialization Unit + + @Description FM Port Initialization Unit + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Description Exceptions user callback routine, will be called upon an + exception passing the exception identification. + + @Param[in] h_App - User's application descriptor. + @Param[in] exception - The exception. + *//***************************************************************************/ +typedef void (t_FmPortExceptionCallback) (t_Handle h_App, e_FmPortExceptions exception); + +/**************************************************************************//** + @Description User callback function called by driver with received data. + + User provides this function. Driver invokes it. + + @Param[in] h_App Application's handle originally specified to + the API Config function + @Param[in] p_Data A pointer to data received + @Param[in] length length of received data + @Param[in] status receive status and errors + @Param[in] position position of buffer in frame + @Param[in] h_BufContext A handle of the user acossiated with this buffer + + @Retval e_RX_STORE_RESPONSE_CONTINUE - order the driver to continue Rx + operation for all ready data. + @Retval e_RX_STORE_RESPONSE_PAUSE - order the driver to stop Rx operation. +*//***************************************************************************/ +typedef e_RxStoreResponse (t_FmPortImRxStoreCallback) (t_Handle h_App, + uint8_t *p_Data, + uint16_t length, + uint16_t status, + uint8_t position, + t_Handle h_BufContext); + +/**************************************************************************//** + @Description User callback function called by driver when transmit completed. + + User provides this function. Driver invokes it. + + @Param[in] h_App Application's handle originally specified to + the API Config function + @Param[in] p_Data A pointer to data received + @Param[in] status transmit status and errors + @Param[in] lastBuffer is last buffer in frame + @Param[in] h_BufContext A handle of the user acossiated with this buffer + *//***************************************************************************/ +typedef void (t_FmPortImTxConfCallback) (t_Handle h_App, + uint8_t *p_Data, + uint16_t status, + t_Handle h_BufContext); + +/**************************************************************************//** + @Description A structure of information about each of the external + buffer pools used by the port, +*//***************************************************************************/ +typedef struct t_FmPortExtPoolParams { + uint8_t id; /**< External buffer pool id */ + uint16_t size; /**< External buffer pool buffer size */ +} t_FmPortExtPoolParams; + +/**************************************************************************//** + @Description A structure for informing the driver about the external + buffer pools allocated in the BM and used by this port. +*//***************************************************************************/ +typedef struct t_FmPortExtPools { + uint8_t numOfPoolsUsed; /**< Number of pools use by this port */ + t_FmPortExtPoolParams extBufPool[FM_PORT_MAX_NUM_OF_EXT_POOLS]; + /**< Parameters for each port */ +} t_FmPortExtPools; + +/**************************************************************************//** + @Description structure for additional Rx port parameters +*//***************************************************************************/ +typedef struct t_FmPortRxParams { + uint32_t errFqid; /**< Error Queue Id. */ + uint32_t dfltFqid; /**< Default Queue Id. */ + uint16_t liodnOffset; /**< Port's LIODN offset. */ + t_FmPortExtPools extBufPools; /**< Which external buffer pools are used + (up to FM_PORT_MAX_NUM_OF_EXT_POOLS), and their sizes. */ +} t_FmPortRxParams; + +/**************************************************************************//** + @Description structure for additional non-Rx port parameters +*//***************************************************************************/ +typedef struct t_FmPortNonRxParams { + uint32_t errFqid; /**< Error Queue Id. */ + uint32_t dfltFqid; /**< For Tx and HC - Default Confirmation queue, + 0 means no Tx confirmation for processed + frames. For OP - default Rx queue. */ + uint32_t qmChannel; /**< QM-channel dedicated to this port; will be used + by the FM for dequeue. */ +#ifdef FM_OP_PARTITION_ERRATA_FMANx8 + uint16_t opLiodnOffset; /**< For Offline Parsing ports only. Port's LIODN offset. */ +#endif /* FM_OP_PARTITION_ERRATA_FMANx8 */ +} t_FmPortNonRxParams; + +/**************************************************************************//** + @Description structure for additional Rx port parameters +*//***************************************************************************/ +typedef struct t_FmPortImRxTxParams { + t_Handle h_FmMuram; /**< A handle of the FM-MURAM partition */ + uint16_t liodnOffset; /**< For Rx ports only. Port's LIODN Offset. */ + uint8_t dataMemId; /**< Memory partition ID for data buffers */ + uint32_t dataMemAttributes; /**< Memory attributes for data buffers */ + t_BufferPoolInfo rxPoolParams; /**< For Rx ports only. */ + t_FmPortImRxStoreCallback *f_RxStore; /**< For Rx ports only. */ + t_FmPortImTxConfCallback *f_TxConf; /**< For Tx ports only. */ +} t_FmPortImRxTxParams; + +/**************************************************************************//** + @Description Union for additional parameters depending on port type +*//***************************************************************************/ +typedef union u_FmPortSpecificParams { + t_FmPortImRxTxParams imRxTxParams; /**< Rx/Tx Independent-Mode port parameter structure */ + t_FmPortRxParams rxParams; /**< Rx port parameters structure */ + t_FmPortNonRxParams nonRxParams; /**< Non-Rx port parameters structure */ +} u_FmPortSpecificParams; + +/**************************************************************************//** + @Description structure representing FM initialization parameters +*//***************************************************************************/ +typedef struct t_FmPortParams { + uintptr_t baseAddr; /**< Virtual Address of memory mapped FM Port registers.*/ + t_Handle h_Fm; /**< A handle to the FM object this port related to */ + e_FmPortType portType; /**< Port type */ + uint8_t portId; /**< Port Id - relative to type */ + bool independentModeEnable; + /**< This port is Independent-Mode - Used for Rx/Tx ports only! */ + uint16_t liodnBase; /**< Irrelevant for P4080 rev 1. LIODN base for this port, to be + used together with LIODN offset. */ + u_FmPortSpecificParams specificParams; /**< Additional parameters depending on port + type. */ + + t_FmPortExceptionCallback *f_Exception; /**< Callback routine to be called of PCD exception */ + t_Handle h_App; /**< A handle to an application layer object; This handle will + be passed by the driver upon calling the above callbacks */ +} t_FmPortParams; + + +/**************************************************************************//** + @Function FM_PORT_Config + + @Description Creates descriptor for the FM PORT module. + + The routine returns a handle (descriptor) to the FM PORT object. + This descriptor must be passed as first parameter to all other + FM PORT function calls. + + No actual initialization or configuration of FM hardware is + done by this routine. + + @Param[in] p_FmPortParams - Pointer to data structure of parameters + + @Retval Handle to FM object, or NULL for Failure. +*//***************************************************************************/ +t_Handle FM_PORT_Config(t_FmPortParams *p_FmPortParams); + +/**************************************************************************//** + @Function FM_PORT_Init + + @Description Initializes the FM PORT module + + @Param[in] h_FmPort - FM PORT module descriptor + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error FM_PORT_Init(t_Handle h_FmPort); + +/**************************************************************************//** + @Function FM_PORT_Free + + @Description Frees all resources that were assigned to FM PORT module. + + Calling this routine invalidates the descriptor. + + @Param[in] h_FmPort - FM PORT module descriptor + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error FM_PORT_Free(t_Handle h_FmPort); + + +/**************************************************************************//** + @Group FM_PORT_advanced_init_grp FM Port Advanced Configuration Unit + + @Description Configuration functions used to change default values. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Description enum for defining QM frame dequeue +*//***************************************************************************/ +typedef enum e_FmPortDeqType { + e_FM_PORT_DEQ_TYPE1, /**< Dequeue from the SP channel - with priority precedence, + and Intra-Class Scheduling respected. */ + e_FM_PORT_DEQ_TYPE2, /**< Dequeue from the SP channel - with active FQ precedence, + and Intra-Class Scheduling respected. */ + e_FM_PORT_DEQ_TYPE3 /**< Dequeue from the SP channel - with active FQ precedence, + and override Intra-Class Scheduling */ +} e_FmPortDeqType; + +#ifdef FM_QMI_DEQ_OPTIONS_SUPPORT +/**************************************************************************//** + @Description enum for defining QM frame dequeue +*//***************************************************************************/ +typedef enum e_FmPortDeqPrefetchOption { + e_FM_PORT_DEQ_NO_PREFETCH, /**< QMI preforms a dequeue action for a single frame + only when a dedicated portID Tnum is waiting. */ + e_FM_PORT_DEQ_PARTIAL_PREFETCH, /**< QMI preforms a dequeue action for 3 frames when + one dedicated portId tnum is waiting. */ + e_FM_PORT_DEQ_FULL_PREFETCH /**< QMI preforms a dequeue action for 3 frames when + no dedicated portId tnums are waiting. */ + +} e_FmPortDeqPrefetchOption; +#endif /* FM_QMI_DEQ_OPTIONS_SUPPORT */ + +/**************************************************************************//** + @Description enum for defining port DMA swap mode +*//***************************************************************************/ +typedef enum e_FmPortDmaSwap { + e_FM_PORT_DMA_NO_SWP, /**< No swap, transfer data as is.*/ + e_FM_PORT_DMA_SWP_PPC_LE, /**< The transferred data should be swapped + in PowerPc Little Endian mode. */ + e_FM_PORT_DMA_SWP_BE /**< The transferred data should be swapped + in Big Endian mode */ +} e_FmPortDmaSwap; + +/**************************************************************************//** + @Description enum for defining port DMA cache attributes +*//***************************************************************************/ +typedef enum e_FmPortDmaCache { + e_FM_PORT_DMA_NO_STASH = 0, /**< Cacheable, no Allocate (No Stashing) */ + e_FM_PORT_DMA_STASH = 1 /**< Cacheable and Allocate (Stashing on) */ +} e_FmPortDmaCache; + +/**************************************************************************//** + @Description enum for defining port default color +*//***************************************************************************/ +typedef enum e_FmPortColor { + e_FM_PORT_COLOR_GREEN, /**< Default port color is green */ + e_FM_PORT_COLOR_YELLOW, /**< Default port color is yellow */ + e_FM_PORT_COLOR_RED, /**< Default port color is red */ + e_FM_PORT_COLOR_OVERRIDE /**< Ignore color */ +} e_FmPortColor; + +/**************************************************************************//** + @Description struct for defining Dual Tx rate limiting scale +*//***************************************************************************/ +typedef enum e_FmPortDualRateLimiterScaleDown { + e_FM_PORT_DUAL_RATE_LIMITER_NONE = 0, /**< Use only single rate limiter */ + e_FM_PORT_DUAL_RATE_LIMITER_SCALE_DOWN_BY_2, /**< Divide high rate limiter by 2 */ + e_FM_PORT_DUAL_RATE_LIMITER_SCALE_DOWN_BY_4, /**< Divide high rate limiter by 4 */ + e_FM_PORT_DUAL_RATE_LIMITER_SCALE_DOWN_BY_8 /**< Divide high rate limiter by 8 */ +} e_FmPortDualRateLimiterScaleDown; + + +/**************************************************************************//** + @Description struct for defining FM port resources +*//***************************************************************************/ +typedef struct t_FmPortRsrc { + uint32_t num; /**< Committed required resource */ + uint32_t extra; /**< Extra (not committed) required resource */ +} t_FmPortRsrc; + +/**************************************************************************//** + @Description struct for defining pool depletion criteria +*//***************************************************************************/ +typedef struct t_FmPortBufPoolDepletion { + bool numberOfPoolsModeEnable; /**< select mode in which pause frames will be sent after + a number of pools are depleted */ + uint8_t numOfPools; /**< the minimum number of depleted pools that will + invoke pause frames transmission. */ + bool poolsToConsider[BM_MAX_NUM_OF_POOLS]; + /**< For each pool, TRUE if it should be considered for + depletion (Note - this pool must be used by this port!) */ + bool singlePoolModeEnable; /**< select mode in which pause frames will be sent after + a single of pools are depleted */ + bool poolsToConsiderForSingleMode[BM_MAX_NUM_OF_POOLS]; + /**< For each pool, TRUE if it should be considered for + depletion (Note - this pool must be used by this port!) */ +} t_FmPortBufPoolDepletion; + +/**************************************************************************//** + @Description struct for defining observed pool depletion +*//***************************************************************************/ +typedef struct t_FmPortObservedBufPoolDepletion { + t_FmPortBufPoolDepletion poolDepletionParams;/**< parameters to define pool depletion */ + t_FmPortExtPools poolsParams; /**< Which external buffer pools are observed + (up to FM_PORT_MAX_NUM_OF_OBSERVED_EXT_POOLS), + and their sizes. */ +} t_FmPortObservedBufPoolDepletion; + +/**************************************************************************//** + @Description struct for defining Tx rate limiting +*//***************************************************************************/ +typedef struct t_FmPortRateLimit { + uint16_t maxBurstSize; /**< in kBytes for Tx ports, in frames + for offline parsing ports. (note that + for early chips burst size is + rounded up to a multiply of 1000 frames).*/ + uint32_t rateLimit; /**< in Kb/sec for Tx ports, in frame/sec for + offline parsing ports. Rate limit refers to + data rate (rather than line rate). */ + e_FmPortDualRateLimiterScaleDown rateLimitDivider; /**< For offline parsing ports only. Not-valid + for some earlier chip revisions */ +} t_FmPortRateLimit; + +/**************************************************************************//** + @Description struct for defining define the parameters of + the Rx port performance counters +*//***************************************************************************/ +typedef struct t_FmPortPerformanceCnt { + uint8_t taskCompVal; /**< Task compare value */ + uint8_t queueCompVal; /**< Rx queue/Tx confirm queue compare + value (unused for H/O) */ + uint8_t dmaCompVal; /**< Dma compare value */ + uint32_t fifoCompVal; /**< Fifo compare value (in bytes) */ +} t_FmPortPerformanceCnt; + +/**************************************************************************//** + @Description struct for defining buffer content. +*//***************************************************************************/ +typedef struct t_FmPortBufferPrefixContent { + uint16_t privDataSize; /**< Number of bytes to be left at the beginning + of the external buffer */ + bool passPrsResult; /**< TRUE to pass the parse result to/from the FM */ + bool passTimeStamp; /**< TRUE to pass the timeStamp to/from the FM */ + bool passHashResult; /**< TRUE to pass the KG hash result to/from the FM */ + bool passAllOtherPCDInfo;/**< Add all other Internal-Context information: + AD, hash-result, key, etc. */ + uint16_t dataAlign; /**< 0 to use driver's default alignment, other value + for selecting a data alignment (must be a + power of 2) */ +#ifdef DEBUG + bool passDebugInfo; /**< Debug-information */ +#endif /* DEBUG */ +#ifdef FM_CAPWAP_SUPPORT + uint8_t manipExtraSpace; /**< Maximum extra size needed (insertion-size minus removal-size) */ +#endif /* FM_CAPWAP_SUPPORT */ +} t_FmPortBufferPrefixContent; + +/**************************************************************************//** + @Description struct for defining backup Bm Pools. +*//***************************************************************************/ +typedef struct t_FmPortBackupBmPools { + uint8_t numOfBackupPools; /**< Number of BM backup pools - + must be smaller than the total number of + pools defined for the specified port.*/ + uint8_t poolIds[FM_PORT_MAX_NUM_OF_EXT_POOLS]; + /**< numOfBackupPools pool id's, specifying which + pools should be used only as backup. Pool + id's specified here must be a subset of the + pools used by the specified port.*/ +} t_FmPortBackupBmPools; + + +/**************************************************************************//** + @Function FM_PORT_ConfigDeqHighPriority + + @Description Calling this routine changes the dequeue priority in the + internal driver data base from its default configuration + [TRUE] + + May be used for Non-Rx ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] highPri TRUE to select high priority, FALSE for normal operation. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigDeqHighPriority(t_Handle h_FmPort, bool highPri); + +/**************************************************************************//** + @Function FM_PORT_ConfigDeqType + + @Description Calling this routine changes the dequeue type parameter in the + internal driver data base from its default configuration + [e_FM_PORT_DEQ_TYPE1]. + + May be used for Non-Rx ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] deqType According to QM definition. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigDeqType(t_Handle h_FmPort, e_FmPortDeqType deqType); + +#ifdef FM_QMI_DEQ_OPTIONS_SUPPORT +/**************************************************************************//** + @Function FM_PORT_ConfigDeqPrefetchOption + + @Description Calling this routine changes the dequeue prefetch option parameter in the + internal driver data base from its default configuration + [e_FM_PORT_DEQ_FULL_PREFETCH] + Note: Available for some chips only + + May be used for Non-Rx ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] deqPrefetchOption New option + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigDeqPrefetchOption(t_Handle h_FmPort, e_FmPortDeqPrefetchOption deqPrefetchOption); +#endif /* FM_QMI_DEQ_OPTIONS_SUPPORT */ + +/**************************************************************************//** + @Function FM_PORT_ConfigDeqByteCnt + + @Description Calling this routine changes the dequeue byte count parameter in + the internal driver data base from its default configuration [2000]. + + May be used for Non-Rx ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] deqByteCnt New byte count + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigDeqByteCnt(t_Handle h_FmPort, uint16_t deqByteCnt); + +/**************************************************************************//** + @Function FM_PORT_ConfigTxFifoMinFillLevel + + @Description Calling this routine changes the fifo minimum + fill level parameter in the internal driver data base + from its default configuration [0] + + May be used for Tx ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] minFillLevel New value + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigTxFifoMinFillLevel(t_Handle h_FmPort, uint32_t minFillLevel); + +/**************************************************************************//** + @Function FM_PORT_ConfigTxFifoDeqPipelineDepth + + @Description Calling this routine changes the fifo dequeue + pipeline depth parameter in the internal driver data base + + from its default configuration: 1G ports: [2], + 10G port: [8] + + May be used for Tx ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] deqPipelineDepth New value + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigTxFifoDeqPipelineDepth(t_Handle h_FmPort, uint8_t deqPipelineDepth); + +/**************************************************************************//** + @Function FM_PORT_ConfigTxFifoLowComfLevel + + @Description Calling this routine changes the fifo low comfort level + parameter in internal driver data base + from its default configuration [5] + + May be used for Tx ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] fifoLowComfLevel New value + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigTxFifoLowComfLevel(t_Handle h_FmPort, uint32_t fifoLowComfLevel); + +/**************************************************************************//** + @Function FM_PORT_ConfigRxFifoThreshold + + @Description Calling this routine changes the threshold of the FIFO + fill level parameter in the internal driver data base + from its default configuration [BMI_MAX_FIFO_SIZE] + + If the total number of buffers which are + currently in use and associated with the + specific RX port exceed this threshold, the + BMI will signal the MAC to send a pause frame + over the link. + + May be used for Rx ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] fifoThreshold New value + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigRxFifoThreshold(t_Handle h_FmPort, uint32_t fifoThreshold); + +/**************************************************************************//** + @Function FM_PORT_ConfigRxFifoPriElevationLevel + + @Description Calling this routine changes the priority elevation level + parameter in the internal driver data base from its default + configuration [BMI_MAX_FIFO_SIZE] + + If the total number of buffers which are currently in use and + associated with the specific RX port exceed the amount specified + in priElevationLevel, BMI will signal the main FM's DMA to + elevate the FM priority on the system bus. + + May be used for Rx ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] priElevationLevel New value + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigRxFifoPriElevationLevel(t_Handle h_FmPort, uint32_t priElevationLevel); + +/**************************************************************************//** + @Function FM_PORT_ConfigBufferPrefixContent + + @Description Defines the structure, size and content of the application buffer. + The prefix will + In Tx ports, if 'passPrsResult', the application + should set a value to their offsets in the prefix of + the FM will save the first 'privDataSize', than, + depending on 'passPrsResult' and 'passTimeStamp', copy parse result + and timeStamp, and the packet itself (in this order), to the + application buffer, and to offset. + Calling this routine changes the buffer margins definitions + in the internal driver data base from its default + configuration: Data size: [0] + Pass Parser result: [FALSE]. + Pass timestamp: [FALSE]. + + May be used for all ports + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in,out] p_FmPortBufferPrefixContent A structure of parameters describing the + structure of the buffer. + Out parameter: Start margin - offset + of data from start of external buffer. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigBufferPrefixContent(t_Handle h_FmPort, t_FmPortBufferPrefixContent *p_FmPortBufferPrefixContent); + + +/**************************************************************************//** + @Function FM_PORT_ConfigCheksumLastBytesIgnore + + @Description Calling this routine changes the number of checksum bytes to ignore + parameter in the internal driver data base from its default configuration + [0] + + May be used by Tx & Rx ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] cheksumLastBytesIgnore New value + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigCheksumLastBytesIgnore(t_Handle h_FmPort, uint8_t cheksumLastBytesIgnore); + +/**************************************************************************//** + @Function FM_PORT_ConfigCutBytesFromEnd + + @Description Calling this routine changes the number of bytes to cut from a + frame's end parameter in the internal driver data base + from its default configuration [4] + Note that if the result of (frame length before chop - cutBytesFromEnd) is + less than 14 bytes, the chop operation is not executed. + + May be used for Rx ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] cutBytesFromEnd New value + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigCutBytesFromEnd(t_Handle h_FmPort, uint8_t cutBytesFromEnd); + +/**************************************************************************//** + @Function FM_PORT_ConfigPoolDepletion + + @Description Calling this routine enables pause frame generation depending on the + depletion status of BM pools. It also defines the conditions to activate + this functionality. By default, this functionality is disabled. + + May be used for Rx ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] p_BufPoolDepletion A structure of pool depletion parameters + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigPoolDepletion(t_Handle h_FmPort, t_FmPortBufPoolDepletion *p_BufPoolDepletion); + +/**************************************************************************//** + @Function FM_PORT_ConfigObservedPoolDepletion + + @Description Calling this routine enables a mechanism to stop port enqueue + depending on the depletion status of selected BM pools. + It also defines the conditions to activate + this functionality. By default, this functionality is disabled. + + Note: Available for some chips only + + May be used for Offline Parsing ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] p_FmPortObservedBufPoolDepletion A structure of parameters for pool depletion. + + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigObservedPoolDepletion(t_Handle h_FmPort, t_FmPortObservedBufPoolDepletion *p_FmPortObservedBufPoolDepletion); + +/**************************************************************************//** + @Function FM_PORT_ConfigExtBufPools + + @Description This routine should be called for offline parsing ports + that internally use BM buffer pools. In such cases, e.g. for fragmentation and + re-assembly, the FM needs new BM buffers. By calling this routine the user + specifies the BM buffer pools that should be used. + + Note: Available for some chips only + + May be used for Offline Parsing ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] p_FmPortExtPools A structure of parameters for the external pools. + + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigExtBufPools(t_Handle h_FmPort, t_FmPortExtPools *p_FmPortExtPools); + +/**************************************************************************//** + @Function FM_PORT_ConfigBackupPools + + @Description Calling this routine allows the configuration of some of the BM pools + defined for this port as backup pools. + A pool configured to be a backup pool will be used only if all other + enabled non-backup pools are depleted. + + May be used for Rx ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] p_FmPortBackupBmPools An array of pool id's. All pools specified here will + be defined as backup pools. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigBackupPools(t_Handle h_FmPort, t_FmPortBackupBmPools *p_FmPortBackupBmPools); + +/**************************************************************************//** + @Function FM_PORT_ConfigFrmDiscardOverride + + @Description Calling this routine changes the error frames destination parameter + in the internal driver data base from its default configuration: + override = [FALSE] + + May be used for Rx and offline parsing ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] override TRUE to override dicarding of error frames and + enqueueing them to error queue. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigFrmDiscardOverride(t_Handle h_FmPort, bool override); + +/**************************************************************************//** + @Function FM_PORT_ConfigErrorsToDiscard + + @Description Calling this routine changes the behaviour on error parameter + in the internal driver data base from its default configuration: + [FM_PORT_FRM_ERR_CLS_DISCARD]. + If a requested error was previously defined as "ErrorsToEnqueue" it's + definition will change and the frame will be discarded. + Errors that were not defined either as "ErrorsToEnqueue" nor as + "ErrorsToDiscard", will be forwarded to CPU. + + + May be used for Rx and offline parsing ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] errs A list of errors to discard + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigErrorsToDiscard(t_Handle h_FmPort, fmPortFrameErrSelect_t errs); + +/**************************************************************************//** + @Function FM_PORT_ConfigDmaSwapData + + @Description Calling this routine changes the DMA swap data aparameter + in the internal driver data base from its default + configuration [e_FM_PORT_DMA_NO_SWP] + + May be used for all port types + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] swapData New selection + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigDmaSwapData(t_Handle h_FmPort, e_FmPortDmaSwap swapData); + +/**************************************************************************//** + @Function FM_PORT_ConfigDmaIcCacheAttr + + @Description Calling this routine changes the internal context cache + attribute parameter in the internal driver data base + from its default configuration [e_FM_PORT_DMA_NO_STASH] + + May be used for all port types + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] intContextCacheAttr New selection + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigDmaIcCacheAttr(t_Handle h_FmPort, e_FmPortDmaCache intContextCacheAttr); + +/**************************************************************************//** + @Function FM_PORT_ConfigDmaHdrAttr + + @Description Calling this routine changes the header cache + attribute parameter in the internal driver data base + from its default configuration [e_FM_PORT_DMA_NO_STASH] + + May be used for all port types + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] headerCacheAttr New selection + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigDmaHdrAttr(t_Handle h_FmPort, e_FmPortDmaCache headerCacheAttr); + +/**************************************************************************//** + @Function FM_PORT_ConfigDmaScatterGatherAttr + + @Description Calling this routine changes the scatter gather cache + attribute parameter in the internal driver data base + from its default configuration [e_FM_PORT_DMA_NO_STASH] + + May be used for all port types + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] scatterGatherCacheAttr New selection + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigDmaScatterGatherAttr(t_Handle h_FmPort, e_FmPortDmaCache scatterGatherCacheAttr); + +/**************************************************************************//** + @Function FM_PORT_ConfigDmaWriteOptimize + + @Description Calling this routine changes the write optimization + parameter in the internal driver data base + from its default configuration: optimize = [TRUE] + + May be used for non-Tx port types + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] optimize TRUE to enable optimization, FALSE for normal operation + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigDmaWriteOptimize(t_Handle h_FmPort, bool optimize); + +/**************************************************************************//** + @Function FM_PORT_ConfigDfltColor + + @Description Calling this routine changes the internal default color parameter + in the internal driver data base + from its default configuration [e_FM_PORT_COLOR_GREEN] + + May be used for all port types + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] color New selection + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigDfltColor(t_Handle h_FmPort, e_FmPortColor color); + +/**************************************************************************//** + @Function FM_PORT_ConfigSyncReq + + @Description Calling this routine changes the synchronization attribute parameter + in the internal driver data base from its default configuration: + syncReq = [TRUE] + + May be used for all port types + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] syncReq TRUE to request synchronization, FALSE otherwize. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigSyncReq(t_Handle h_FmPort, bool syncReq); + +/**************************************************************************//** + @Function FM_PORT_ConfigForwardReuseIntContext + + @Description This routine is relevant for Rx ports that are routed to offline + parsing. It changes the internal context reuse option + in the internal driver data base from its default configuration: + reuse = [FALSE] + + May be used for Rx ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] reuse TRUE to reuse internal context on frames + forwarded to offline parsing. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigForwardReuseIntContext(t_Handle h_FmPort, bool reuse); + +/**************************************************************************//** + @Function FM_PORT_ConfigDontReleaseTxBufToBM + + @Description This routine should be called if no Tx confirmation + is done, and yet buffers should not be released to the BM. + Normally, buffers are returned using the Tx confirmation + process. When Tx confirmation is not used (defFqid=0), + buffers are typically released to the BM. This routine + may be called to avoid this behavior and not release the + buffers. + + May be used for Tx ports only + + @Param[in] h_FmPort A handle to a FM Port module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigDontReleaseTxBufToBM(t_Handle h_FmPort); + +/**************************************************************************//** + @Function FM_PORT_ConfigIMMaxRxBufLength + + @Description Changes the maximum receive buffer length from its default + configuration: Closest rounded down power of 2 value of the + data buffer size. + + The maximum receive buffer length directly affects the structure + of received frames (single- or multi-buffered) and the performance + of both the FM and the driver. + + The selection between single- or multi-buffered frames should be + done according to the characteristics of the specific application. + The recommended mode is to use a single data buffer per packet, + as this mode provides the best performance. However, the user can + select to use multiple data buffers per packet. + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] newVal Maximum receive buffer length (in bytes). + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). + This routine is to be used only if Independent-Mode is enabled. +*//***************************************************************************/ +t_Error FM_PORT_ConfigIMMaxRxBufLength(t_Handle h_FmPort, uint16_t newVal); + +/**************************************************************************//** + @Function FM_PORT_ConfigIMRxBdRingLength + + @Description Changes the receive BD ring length from its default + configuration:[128] + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] newVal The desired BD ring length. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). + This routine is to be used only if Independent-Mode is enabled. +*//***************************************************************************/ +t_Error FM_PORT_ConfigIMRxBdRingLength(t_Handle h_FmPort, uint16_t newVal); + +/**************************************************************************//** + @Function FM_PORT_ConfigIMTxBdRingLength + + @Description Changes the transmit BD ring length from its default + configuration:[16] + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] newVal The desired BD ring length. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). + This routine is to be used only if Independent-Mode is enabled. +*//***************************************************************************/ +t_Error FM_PORT_ConfigIMTxBdRingLength(t_Handle h_FmPort, uint16_t newVal); + +/**************************************************************************//** + @Function FM_PORT_ConfigIMFmanCtrlExternalStructsMemory + + @Description Configures memory partition and attributes for FMan-Controller + data structures (e.g. BD rings). + Calling this routine changes the internal driver data base + from its default configuration + [0 , MEMORY_ATTR_CACHEABLE]. + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] memId Memory partition ID. + @Param[in] memAttributes Memory attributes mask (a combination of MEMORY_ATTR_x flags). + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error FM_PORT_ConfigIMFmanCtrlExternalStructsMemory(t_Handle h_FmPort, + uint8_t memId, + uint32_t memAttributes); + +/**************************************************************************//** + @Function FM_PORT_ConfigIMPolling + + @Description Changes the Rx flow from interrupt driven (default) to polling. + + @Param[in] h_FmPort A handle to a FM Port module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). + This routine is to be used only if Independent-Mode is enabled. +*//***************************************************************************/ +t_Error FM_PORT_ConfigIMPolling(t_Handle h_FmPort); + +/** @} */ /* end of FM_PORT_advanced_init_grp group */ +/** @} */ /* end of FM_PORT_init_grp group */ + + +/**************************************************************************//** + @Group FM_PORT_runtime_control_grp FM Port Runtime Control Unit + + @Description FM Port Runtime control unit API functions, definitions and enums. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Description enum for defining FM Port counters +*//***************************************************************************/ +typedef enum e_FmPortCounters { + e_FM_PORT_COUNTERS_CYCLE, /**< BMI performance counter */ + e_FM_PORT_COUNTERS_TASK_UTIL, /**< BMI performance counter */ + e_FM_PORT_COUNTERS_QUEUE_UTIL, /**< BMI performance counter */ + e_FM_PORT_COUNTERS_DMA_UTIL, /**< BMI performance counter */ + e_FM_PORT_COUNTERS_FIFO_UTIL, /**< BMI performance counter */ + e_FM_PORT_COUNTERS_RX_PAUSE_ACTIVATION, /**< BMI Rx only performance counter */ + e_FM_PORT_COUNTERS_FRAME, /**< BMI statistics counter */ + e_FM_PORT_COUNTERS_DISCARD_FRAME, /**< BMI statistics counter */ + e_FM_PORT_COUNTERS_DEALLOC_BUF, /**< BMI deallocate buffer statistics counter */ + e_FM_PORT_COUNTERS_RX_BAD_FRAME, /**< BMI Rx only statistics counter */ + e_FM_PORT_COUNTERS_RX_LARGE_FRAME, /**< BMI Rx only statistics counter */ + e_FM_PORT_COUNTERS_RX_OUT_OF_BUFFERS_DISCARD, /**< BMI Rx only statistics counter */ + e_FM_PORT_COUNTERS_RX_FILTER_FRAME, /**< BMI Rx & OP only statistics counter */ + e_FM_PORT_COUNTERS_RX_LIST_DMA_ERR, /**< BMI Rx, OP & HC only statistics counter */ + e_FM_PORT_COUNTERS_WRED_DISCARD, /**< BMI OP & HC only statistics counter */ + e_FM_PORT_COUNTERS_LENGTH_ERR, /**< BMI non-Rx statistics counter */ + e_FM_PORT_COUNTERS_UNSUPPRTED_FORMAT, /**< BMI non-Rx statistics counter */ + e_FM_PORT_COUNTERS_DEQ_TOTAL, /**< QMI counter */ + e_FM_PORT_COUNTERS_ENQ_TOTAL, /**< QMI counter */ + e_FM_PORT_COUNTERS_DEQ_FROM_DEFAULT, /**< QMI counter */ + e_FM_PORT_COUNTERS_DEQ_CONFIRM /**< QMI counter */ +} e_FmPortCounters; + +/**************************************************************************//** + @Description Structure for Port id parameters. + Fields commented 'IN' are passed by the port module to be used + by the FM module. + Fields commented 'OUT' will be filled by FM before returning to port. +*//***************************************************************************/ +typedef struct t_FmPortCongestionGrps { + uint16_t numOfCongestionGrpsToConsider; /**< The number of required congestion groups + to define the size of the following array */ + uint8_t congestionGrpsToConsider[FM_PORT_NUM_OF_CONGESTION_GRPS]; + /**< An array of 'numOfCongestionGrpsToConsider' + describing the groups */ +} t_FmPortCongestionGrps; + + + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) +/**************************************************************************//** + @Function FM_PORT_DumpRegs + + @Description Dump all regs. + + Calling this routine invalidates the descriptor. + + @Param[in] h_FmPort - FM PORT module descriptor + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_DumpRegs(t_Handle h_FmPort); +#endif /* (defined(DEBUG_ERRORS) && ... */ + +/**************************************************************************//** + @Function FM_PORT_GetBufferDataOffset + + @Description Relevant for Rx ports. + Returns the data offset from the beginning of the data buffer + + @Param[in] h_FmPort - FM PORT module descriptor + + @Return data offset. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +uint32_t FM_PORT_GetBufferDataOffset(t_Handle h_FmPort); + +/**************************************************************************//** + @Function FM_PORT_GetBufferICInfo + + @Description Returns the Internal Context offset from the beginning of the data buffer + + @Param[in] h_FmPort - FM PORT module descriptor + @Param[in] p_Data - A pointer to the data buffer. + + @Return Internal context info pointer on success, NULL if 'allOtherInfo' was not + configured for this port. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +uint8_t * FM_PORT_GetBufferICInfo(t_Handle h_FmPort, char *p_Data); + +#ifdef DEBUG +/**************************************************************************//** + @Function FM_PORT_GetBufferDebugInfo + + @Description Returns the debug info offset from the beginning of the data buffer + + @Param[in] h_FmPort - FM PORT module descriptor + @Param[in] p_Data - A pointer to the data buffer. + + @Return Debug info pointer on success, NULL if 'passDebugInfo' was not + configured for this port. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +uint8_t * FM_PORT_GetBufferDebugInfo(t_Handle h_FmPort, char *p_Data); +#endif /* DEBUG */ + +/**************************************************************************//** + @Function FM_PORT_GetBufferPrsResult + + @Description Returns the pointer to the parse result in the data buffer. + In Rx ports this is relevant after reception, if parse + result is configured to be part of the data passed to the + application. For non Rx ports it may be used to get the pointer + of the area in the buffer where parse result should be + initialized - if so configured. + See FM_PORT_ConfigBufferPrefixContent for data buffer prefix + configuration. + + @Param[in] h_FmPort - FM PORT module descriptor + @Param[in] p_Data - A pointer to the data buffer. + + @Return Parse result pointer on success, NULL if parse result was not + configured for this port. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_FmPrsResult * FM_PORT_GetBufferPrsResult(t_Handle h_FmPort, char *p_Data); + +/**************************************************************************//** + @Function FM_PORT_GetBufferTimeStamp + + @Description Returns the time stamp in the data buffer. + Relevant for Rx ports for getting the buffer time stamp. + See FM_PORT_ConfigBufferPrefixContent for data buffer prefix + configuration. + + @Param[in] h_FmPort - FM PORT module descriptor + @Param[in] p_Data - A pointer to the data buffer. + + @Return A pointer to the hash result on success, NULL otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +uint64_t * FM_PORT_GetBufferTimeStamp(t_Handle h_FmPort, char *p_Data); + +/**************************************************************************//** + @Function FM_PORT_GetBufferHashResult + + @Description Given a data buffer, on the condition that hash result was defined + as a part of the buffer content (see FM_PORT_ConfigBufferPrefixContent) + this routine will return the pointer to the hash result location in the + buffer prefix. + + @Param[in] h_FmPort - FM PORT module descriptor + @Param[in] p_Data - A pointer to the data buffer. + + @Return A pointer to the hash result on success, NULL otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +uint8_t * FM_PORT_GetBufferHashResult(t_Handle h_FmPort, char *p_Data); + +/**************************************************************************//** + @Function FM_PORT_Disable + + @Description Gracefully disable an FM port. The port will not start new tasks after all + tasks associated with the port are terminated. + + @Param[in] h_FmPort A handle to a FM Port module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). + This is a blocking routine, it returns after port is + gracefully stopped, i.e. the port will not except new frames, + but it will finish all frames or tasks which were already began +*//***************************************************************************/ +t_Error FM_PORT_Disable(t_Handle h_FmPort); + +/**************************************************************************//** + @Function FM_PORT_Enable + + @Description A runtime routine provided to allow disable/enable of port. + + @Param[in] h_FmPort A handle to a FM Port module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_Enable(t_Handle h_FmPort); + +/**************************************************************************//** + @Function FM_PORT_SetRateLimit + + @Description Calling this routine enables rate limit algorithm. + By default, this functionality is disabled. + Note that rate-limit mechanism uses the FM time stamp. + The selected rate limit specified here would be + rounded DOWN to the nearest 16M. + + May be used for Tx and offline parsing ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] p_RateLimit A structure of rate limit parameters + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_SetRateLimit(t_Handle h_FmPort, t_FmPortRateLimit *p_RateLimit); + +/**************************************************************************//** + @Function FM_PORT_DeleteRateLimit + + @Description Calling this routine disables and clears rate limit + initialization. + + May be used for Tx and offline parsing ports only + + @Param[in] h_FmPort A handle to a FM Port module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_DeleteRateLimit(t_Handle h_FmPort); + +/**************************************************************************//** + @Function FM_PORT_SetStatisticsCounters + + @Description Calling this routine enables/disables port's statistics counters. + By default, counters are enabled. + + May be used for all port types + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] enable TRUE to enable, FALSE to disable. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_SetStatisticsCounters(t_Handle h_FmPort, bool enable); + +/**************************************************************************//** + @Function FM_PORT_SetFrameQueueCounters + + @Description Calling this routine enables/disables port's enqueue/dequeue counters. + By default, counters are enabled. + + May be used for all ports + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] enable TRUE to enable, FALSE to disable. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_SetFrameQueueCounters(t_Handle h_FmPort, bool enable); + +/**************************************************************************//** + @Function FM_PORT_SetPerformanceCounters + + @Description Calling this routine enables/disables port's performance counters. + By default, counters are enabled. + + May be used for all port types + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] enable TRUE to enable, FALSE to disable. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_SetPerformanceCounters(t_Handle h_FmPort, bool enable); + +/**************************************************************************//** + @Function FM_PORT_SetPerformanceCounters + + @Description Calling this routine defines port's performance + counters parameters. + + May be used for all port types + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] p_FmPortPerformanceCnt A pointer to a structure of performance + counters parameters. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_SetPerformanceCountersParams(t_Handle h_FmPort, t_FmPortPerformanceCnt *p_FmPortPerformanceCnt); + +/**************************************************************************//** + @Function FM_PORT_AnalyzePerformanceParams + + @Description User may call this routine to so the driver will analyze if the + basic performance parameters are correct and also the driver may + suggest of improvments; The basic parameters are FIFO sizes, number + of DMAs and number of TNUMs for the port. + + May be used for all port types + + @Param[in] h_FmPort A handle to a FM Port module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_AnalyzePerformanceParams(t_Handle h_FmPort); + +/**************************************************************************//** + @Function FM_PORT_SetNumOfOpenDmas + + @Description Calling this routine updates the number of open DMA requested for + this port. + + + May be used for all port types. + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] p_NumOfOpenDmas A structure of resource requested parameters + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_SetNumOfOpenDmas(t_Handle h_FmPort, t_FmPortRsrc *p_NumOfOpenDmas); + +/**************************************************************************//** + @Function FM_PORT_SetNumOfTasks + + @Description Calling this routine updates the number of tasks requested for + this port. + + May be used for all port types. + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] p_NumOfTasks A structure of resource requested parameters + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_SetNumOfTasks(t_Handle h_FmPort, t_FmPortRsrc *p_NumOfTasks); + +/**************************************************************************//** + @Function FM_PORT_SetSizeOfFifo + + @Description Calling this routine updates the Fifo size resource requested for + this port. + + May be used for all port types - note that only Rx has 'extra' + fifo size. For other ports 'extra' field must be disabled. + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] p_SizeOfFifo A structure of resource requested parameters + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_SetSizeOfFifo(t_Handle h_FmPort, t_FmPortRsrc *p_SizeOfFifo); + +/**************************************************************************//** + @Function FM_PORT_SetAllocBufCounter + + @Description Calling this routine enables/disables BM pool allocate + buffer counters. + By default, counters are enabled. + + May be used for Rx ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] poolId BM pool id. + @Param[in] enable TRUE to enable, FALSE to disable. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_SetAllocBufCounter(t_Handle h_FmPort, uint8_t poolId, bool enable); + +/**************************************************************************//** + @Function FM_PORT_GetCounter + + @Description Reads one of the FM PORT counters. + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] fmPortCounter The requested counter. + + @Return Counter's current value. + + @Cautions Allowed only following FM_PORT_Init(). + Note that it is user's responsibility to call this routine only + for enabled counters, and there will be no indication if a + disabled counter is accessed. +*//***************************************************************************/ +uint32_t FM_PORT_GetCounter(t_Handle h_FmPort, e_FmPortCounters fmPortCounter); + +/**************************************************************************//** + @Function FM_PORT_ModifyCounter + + @Description Sets a value to an enabled counter. Use "0" to reset the counter. + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] fmPortCounter The requested counter. + @Param[in] value The requested value to be written into the counter. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ModifyCounter(t_Handle h_FmPort, e_FmPortCounters fmPortCounter, uint32_t value); + +/**************************************************************************//** + @Function FM_PORT_GetAllocBufCounter + + @Description Reads one of the FM PORT buffer counters. + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] poolId The requested pool. + + @Return Counter's current value. + + @Cautions Allowed only following FM_PORT_Init(). + Note that it is user's responsibility to call this routine only + for enabled counters, and there will be no indication if a + disabled counter is accessed. +*//***************************************************************************/ +uint32_t FM_PORT_GetAllocBufCounter(t_Handle h_FmPort, uint8_t poolId); + +/**************************************************************************//** + @Function FM_PORT_ModifyAllocBufCounter + + @Description Sets a value to an enabled counter. Use "0" to reset the counter. + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] poolId The requested pool. + @Param[in] value The requested value to be written into the counter. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ModifyAllocBufCounter(t_Handle h_FmPort, uint8_t poolId, uint32_t value); + +/**************************************************************************//** + @Function FM_PORT_AddCongestionGrps + + @Description This routine effects the corresponding Tx port. + It should be called in order to enable pause + frame transmission in case of congestion in one or more + of the congestion groups relevant to this port. + Each call to this routine may add one or more congestion + groups to be considered relevant to this port. + + May be used for Rx, or RX+OP ports only (depending on chip) + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] p_CongestionGrps A pointer to an array of congestion groups + id's to consider. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_AddCongestionGrps(t_Handle h_FmPort, t_FmPortCongestionGrps *p_CongestionGrps); + +/**************************************************************************//** + @Function FM_PORT_RemoveCongestionGrps + + @Description This routine effects the corresponding Tx port. It should be + called when congestion groups were + defined for this port and are no longer relevant, or pause + frames transmitting is not required on their behalf. + Each call to this routine may remove one or more congestion + groups to be considered relevant to this port. + + May be used for Rx, or RX+OP ports only (depending on chip) + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] p_CongestionGrps A pointer to an array of congestion groups + id's to consider. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_RemoveCongestionGrps(t_Handle h_FmPort, t_FmPortCongestionGrps *p_CongestionGrps); + +/**************************************************************************//** + @Function FM_PORT_IsStalled + + @Description A routine for checking whether the specified port is stalled. + + @Param[in] h_FmPort A handle to a FM Port module. + + @Return TRUE if port is stalled, FALSE otherwize + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +bool FM_PORT_IsStalled(t_Handle h_FmPort); + +/**************************************************************************//** + @Function FM_PORT_ReleaseStalled + + @Description This routine may be called in case the port was stalled and may + now be released. + + @Param[in] h_FmPort A handle to a FM Port module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ReleaseStalled(t_Handle h_FmPort); + +/**************************************************************************//** + @Function FM_PORT_SetRxL4ChecksumVerify + + @Description This routine is relevant for Rx ports (1G and 10G). The routine + set/clear the L3/L4 checksum verification (on RX side). + Note that this takes affect only if hw-parser is enabled! + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] l4Checksum boolean indicates whether to do L3/L4 checksum + on frames or not. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_SetRxL4ChecksumVerify(t_Handle h_FmPort, bool l4Checksum); + +/**************************************************************************//** + @Function FM_PORT_SetErrorsRoute + + @Description Errors selected for this routine will cause a frame with that error + to be enqueued to error queue. + Errors not selected for this routine will cause a frame with that error + to be enqueued to the one of the other port queues. + By default all errors are defined to be enqueued to error queue. + Errors that were configured to be discarded (at initialization) + may not be selected here. + + May be used for Rx and offline parsing ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] errs A list of errors to enqueue to error queue + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_SetErrorsRoute(t_Handle h_FmPort, fmPortFrameErrSelect_t errs); + +/**************************************************************************//** + @Function FM_PORT_SetIMExceptions + + @Description Calling this routine enables/disables FM PORT interrupts. + Note: Not available for guest partition. + + @Param[in] h_FmPort FM PORT module descriptor. + @Param[in] exception The exception to be selected. + @Param[in] enable TRUE to enable interrupt, FALSE to mask it. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_SetIMExceptions(t_Handle h_FmPort, e_FmPortExceptions exception, bool enable); + + + +/**************************************************************************//** + @Group FM_PORT_pcd_runtime_control_grp FM Port PCD Runtime Control Unit + + @Description FM Port PCD Runtime control unit API functions, definitions and enums. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Description A structure defining the KG scheme after the parser. + This is relevant only to change scheme selection mode - from + direct to indirect and vice versa, or when the scheme is selected directly, + to select the scheme id. + +*//***************************************************************************/ +typedef struct t_FmPcdKgSchemeSelect { + bool direct; /**< TRUE to use 'h_Scheme' directly, FALSE to use LCV.*/ + t_Handle h_DirectScheme; /**< Relevant for 'direct'=TRUE only. + 'h_DirectScheme' selects the scheme after parser. */ +} t_FmPcdKgSchemeSelect; + +/**************************************************************************//** + @Description A structure of scheme parameters +*//***************************************************************************/ +typedef struct t_FmPcdPortSchemesParams { + uint8_t numOfSchemes; /**< Number of schemes for port to be bound to. */ + t_Handle h_Schemes[FM_PCD_KG_NUM_OF_SCHEMES]; /**< Array of 'numOfSchemes' schemes for the + port to be bound to */ +} t_FmPcdPortSchemesParams; + +/**************************************************************************//** + @Description Union for defining port protocol parameters for parser +*//***************************************************************************/ +typedef union u_FmPcdHdrPrsOpts { + /* MPLS */ + struct { + bool labelInterpretationEnable; /**< When this bit is set, the last MPLS label will be + interpreted as described in HW spec table. When the bit + is cleared, the parser will advance to MPLS next parse */ + e_NetHeaderType nextParse; /**< must be equal or higher than IPv4 */ + } mplsPrsOptions; + /* VLAN */ + struct { + uint16_t tagProtocolId1; /**< User defined Tag Protocol Identifier, to be recognized + on VLAN TAG on top of 0x8100 and 0x88A8 */ + uint16_t tagProtocolId2; /**< User defined Tag Protocol Identifier, to be recognized + on VLAN TAG on top of 0x8100 and 0x88A8 */ + } vlanPrsOptions; + /* PPP */ + struct{ + bool enableMTUCheck; /**< Check validity of MTU according to RFC2516 */ + } pppoePrsOptions; + + /* IPV6 */ + struct{ + bool routingHdrDisable; /**< Disable routing header */ + } ipv6PrsOptions; + + /* UDP */ + struct{ + bool padIgnoreChecksum; /**< TRUE to ignore pad in checksum */ + } udpPrsOptions; + + /* TCP */ + struct { + bool padIgnoreChecksum; /**< TRUE to ignore pad in checksum */ + } tcpPrsOptions; +} u_FmPcdHdrPrsOpts; + +/**************************************************************************//** + @Description A structure for defining each header for the parser +*//***************************************************************************/ +typedef struct t_FmPcdPrsAdditionalHdrParams { + e_NetHeaderType hdr; /**< Selected header */ + bool errDisable; /**< TRUE to disable error indication */ + bool swPrsEnable; /**< Enable jump to SW parser when this + header is recognized by the HW parser. */ + uint8_t indexPerHdr; /**< Normally 0, if more than one sw parser + attachments exists for the same header, + (in the main sw parser code) use this + index to distinguish between them. */ + bool usePrsOpts; /**< TRUE to use parser options. */ + u_FmPcdHdrPrsOpts prsOpts; /**< A union according to header type, + defining the parser options selected.*/ +} t_FmPcdPrsAdditionalHdrParams; + +/**************************************************************************//** + @Description struct for defining port PCD parameters +*//***************************************************************************/ +typedef struct t_FmPortPcdPrsParams { + uint8_t prsResultPrivateInfo; /**< The private info provides a method of inserting + port information into the parser result. This information + may be extracted by Keygen and be used for frames + distribution when a per-port distinction is required, + it may also be used as a port logical id for analyzing + incoming frames. */ + uint8_t parsingOffset; /**< Number of bytes from beginning of packet to start parsing */ + e_NetHeaderType firstPrsHdr; /**< The type of the first header expected at 'parsingOffset' */ + bool includeInPrsStatistics; /**< TRUE to include this port in the parser statistics; + NOTE: this field is not valid when the FN is in "guest" mode. */ + uint8_t numOfHdrsWithAdditionalParams; /**< Normally 0, some headers may get + special parameters */ + t_FmPcdPrsAdditionalHdrParams additionalParams[FM_PCD_PRS_NUM_OF_HDRS]; + /**< 'numOfHdrsWithAdditionalParams' structures + of additional parameters + for each header that requires them */ + bool setVlanTpid1; /**< TRUE to configure user selection of Ethertype to + indicate a VLAN tag (in addition to the TPID values + 0x8100 and 0x88A8). */ + uint16_t vlanTpid1; /**< extra tag to use if setVlanTpid1=TRUE. */ + bool setVlanTpid2; /**< TRUE to configure user selection of Ethertype to + indicate a VLAN tag (in addition to the TPID values + 0x8100 and 0x88A8). */ + uint16_t vlanTpid2; /**< extra tag to use if setVlanTpid1=TRUE. */ +} t_FmPortPcdPrsParams; + +/**************************************************************************//** + @Description struct for defining coarse alassification parameters +*//***************************************************************************/ +typedef struct t_FmPortPcdCcParams { + t_Handle h_CcTree; /**< A handle to a CC tree */ +} t_FmPortPcdCcParams; + +/**************************************************************************//** + @Description struct for defining keygen parameters +*//***************************************************************************/ +typedef struct t_FmPortPcdKgParams { + uint8_t numOfSchemes; /**< Number of schemes for port to be bound to. */ + t_Handle h_Schemes[FM_PCD_KG_NUM_OF_SCHEMES]; + /**< Array of 'numOfSchemes' schemes handles for the + port to be bound to */ + bool directScheme; /**< TRUE for going from parser to a specific scheme, + regardless of parser result */ + t_Handle h_DirectScheme; /**< relevant only if direct == TRUE, Scheme handle, + as returned by FM_PCD_KgSetScheme */ +} t_FmPortPcdKgParams; + +/**************************************************************************//** + @Description struct for defining policer parameters +*//***************************************************************************/ +typedef struct t_FmPortPcdPlcrParams { + t_Handle h_Profile; /**< Selected profile handle; Relevant for one of + following cases: + e_FM_PORT_PCD_SUPPORT_PLCR_ONLY or + e_FM_PORT_PCD_SUPPORT_PRS_AND_PLCR were selected, + or if any flow uses a KG scheme were policer + profile is not generated + (bypassPlcrProfileGeneration selected) */ +} t_FmPortPcdPlcrParams; + +/**************************************************************************//** + @Description struct for defining port PCD parameters +*//***************************************************************************/ +typedef struct t_FmPortPcdParams { + e_FmPortPcdSupport pcdSupport; /**< Relevant for Rx and offline ports only. + Describes the active PCD engines for this port. */ + t_Handle h_NetEnv; /**< HL Unused in PLCR only mode */ + t_FmPortPcdPrsParams *p_PrsParams; /**< Parser parameters for this port */ + t_FmPortPcdCcParams *p_CcParams; /**< Coarse classification parameters for this port */ + t_FmPortPcdKgParams *p_KgParams; /**< Keygen parameters for this port */ + t_FmPortPcdPlcrParams *p_PlcrParams; /**< Policer parameters for this port */ +} t_FmPortPcdParams; + +/**************************************************************************//** + @Description A structure for defining the Parser starting point +*//***************************************************************************/ +typedef struct t_FmPcdPrsStart { + uint8_t parsingOffset; /**< Number of bytes from beginning of packet to + start parsing */ + e_NetHeaderType firstPrsHdr; /**< The type of the first header axpected at + 'parsingOffset' */ +} t_FmPcdPrsStart; + + +/**************************************************************************//** + @Function FM_PORT_SetPCD + + @Description Calling this routine defines the port's PCD configuration. + It changes it from its default configuration which is PCD + disabled (BMI to BMI) and configures it according to the passed + parameters. + + May be used for Rx and offline parsing ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] p_FmPortPcd A Structure of parameters defining the port's PCD + configuration. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_SetPCD(t_Handle h_FmPort, t_FmPortPcdParams *p_FmPortPcd); + +/**************************************************************************//** + @Function FM_PORT_DeletePCD + + @Description Calling this routine releases the port's PCD configuration. + The port returns to its default configuration which is PCD + disabled (BMI to BMI) and all PCD configuration is removed. + + May be used for Rx and offline parsing ports which are + in PCD mode only + + @Param[in] h_FmPort A handle to a FM Port module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_DeletePCD(t_Handle h_FmPort); + +/**************************************************************************//** + @Function FM_PORT_AttachPCD + + @Description This routine may be called after FM_PORT_DetachPCD was called, + to return to the originally configured PCD support flow. + The couple of routines are used to allow PCD configuration changes + that demand that PCD will not be used while changes take place. + + May be used for Rx and offline parsing ports which are + in PCD mode only + + @Param[in] h_FmPort A handle to a FM Port module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_AttachPCD(t_Handle h_FmPort); + +/**************************************************************************//** + @Function FM_PORT_DetachPCD + + @Description Calling this routine detaches the port from its PCD functionality. + The port returns to its default flow which is BMI to BMI. + + May be used for Rx and offline parsing ports which are + in PCD mode only + + @Param[in] h_FmPort A handle to a FM Port module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_AttachPCD(). +*//***************************************************************************/ +t_Error FM_PORT_DetachPCD(t_Handle h_FmPort); + +/**************************************************************************//** + @Function FM_PORT_PcdPlcrAllocProfiles + + @Description This routine may be called only for ports that use the Policer in + order to allocate private policer profiles. + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] numOfProfiles The number of required policer profiles + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init() and FM_PCD_Init(), and before FM_PORT_SetPCD(). +*//***************************************************************************/ +t_Error FM_PORT_PcdPlcrAllocProfiles(t_Handle h_FmPort, uint16_t numOfProfiles); + +/**************************************************************************//** + @Function FM_PORT_PcdPlcrFreeProfiles + + @Description This routine should be called for freeing private policer profiles. + + @Param[in] h_FmPort A handle to a FM Port module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init() and FM_PCD_Init(), and before FM_PORT_SetPCD(). +*//***************************************************************************/ +t_Error FM_PORT_PcdPlcrFreeProfiles(t_Handle h_FmPort); + +/**************************************************************************//** + @Function FM_PORT_PcdKgModifyInitialScheme + + @Description This routine may be called only for ports that use the keygen in + order to change the initial scheme frame should be routed to. + The change may be of a scheme id (in case of direct mode), + from direct to indirect, or from indirect to direct - specifying the scheme id. + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] p_FmPcdKgScheme A structure of parameters for defining whether + a scheme is direct/indirect, and if direct - scheme id. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init() and FM_PORT_SetPCD(). +*//***************************************************************************/ +t_Error FM_PORT_PcdKgModifyInitialScheme (t_Handle h_FmPort, t_FmPcdKgSchemeSelect *p_FmPcdKgScheme); + +/**************************************************************************//** + @Function FM_PORT_PcdPlcrModifyInitialProfile + + @Description This routine may be called for ports with flows + e_FM_PORT_PCD_SUPPORT_PLCR_ONLY or e_FM_PORT_PCD_SUPPORT_PRS_AND_PLCR + only, to change the initial Policer profile frame should be + routed to. The change may be of a profile and/or absolute/direct + mode selection. + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] h_Profile Policer profile handle + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init() and FM_PORT_SetPCD(). +*//***************************************************************************/ +t_Error FM_PORT_PcdPlcrModifyInitialProfile (t_Handle h_FmPort, t_Handle h_Profile); + +/**************************************************************************//** + @Function FM_PORT_PcdCcModifyTree + + @Description This routine may be called for ports that use coarse classification tree + if the user wishes to replace the tree. The routine may not be called while port + receives packets using the PCD functionalities, therefor port must be first detached + from the PCD, only than the routine may be called, and than port be attached to PCD again. + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] h_CcTree A CC tree that was already built. The tree id as returned from + the BuildTree routine. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(), FM_PORT_SetPCD() and FM_PORT_DetachPCD() +*//***************************************************************************/ +t_Error FM_PORT_PcdCcModifyTree (t_Handle h_FmPort, t_Handle h_CcTree); + +/**************************************************************************//** + @Function FM_PORT_PcdKgBindSchemes + + @Description These routines may be called for adding more schemes for the + port to be bound to. The selected schemes are not added, + just this specific port starts using them. + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] p_PortScheme A structure defining the list of schemes to be added. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init() and FM_PORT_SetPCD(). +*//***************************************************************************/ +t_Error FM_PORT_PcdKgBindSchemes (t_Handle h_FmPort, t_FmPcdPortSchemesParams *p_PortScheme); + +/**************************************************************************//** + @Function FM_PORT_PcdKgUnbindSchemes + + @Description These routines may be called for adding more schemes for the + port to be bound to. The selected schemes are not removed or invalidated, + just this specific port stops using them. + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] p_PortScheme A structure defining the list of schemes to be added. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init() and FM_PORT_SetPCD(). +*//***************************************************************************/ +t_Error FM_PORT_PcdKgUnbindSchemes (t_Handle h_FmPort, t_FmPcdPortSchemesParams *p_PortScheme); + +/**************************************************************************//** + @Function FM_PORT_PcdPrsModifyStartOffset + + @Description Runtime change of the parser start offset within the header. + The routine may not be called while port + receives packets using the PCD functionalities, therefore port must be first detached + from the PCD, only than the routine may be called, and than port be attached to PCD again. + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] p_FmPcdPrsStart A structure of parameters for defining the + start point for the parser. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(), FM_PORT_SetPCD() and FM_PORT_DetatchPCD(). +*//***************************************************************************/ +t_Error FM_PORT_PcdPrsModifyStartOffset (t_Handle h_FmPort, t_FmPcdPrsStart *p_FmPcdPrsStart); + +/** @} */ /* end of FM_PORT_pcd_runtime_control_grp group */ +/** @} */ /* end of FM_PORT_runtime_control_grp group */ + + +/**************************************************************************//** + @Group FM_PORT_runtime_data_grp FM Port Runtime Data-path Unit + + @Description FM Port Runtime data unit API functions, definitions and enums. + This API is valid only if working in Independent-Mode. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Function FM_PORT_ImTx + + @Description Tx function, called to transmit a data buffer on the port. + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] p_Data A pointer to an LCP data buffer. + @Param[in] length Size of data for transmission. + @Param[in] lastBuffer Buffer position - TRUE for the last buffer + of a frame, including a single buffer frame + @Param[in] h_BufContext A handle of the user acossiated with this buffer + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). + NOTE - This routine can be used only when working in + Independent-Mode mode. +*//***************************************************************************/ +t_Error FM_PORT_ImTx( t_Handle h_FmPort, + uint8_t *p_Data, + uint16_t length, + bool lastBuffer, + t_Handle h_BufContext); + +/**************************************************************************//** + @Function FM_PORT_ImTxConf + + @Description Tx port confirmation routine, optional, may be called to verify + transmission of all frames. The procedure performed by this + routine will be performed automatically on next buffer transmission, + but if desired, calling this routine will invoke this action on + demand. + + @Param[in] h_FmPort A handle to a FM Port module. + + @Cautions Allowed only following FM_PORT_Init(). + NOTE - This routine can be used only when working in + Independent-Mode mode. +*//***************************************************************************/ +void FM_PORT_ImTxConf(t_Handle h_FmPort); + +/**************************************************************************//** + @Function FM_PORT_ImRx + + @Description Rx function, may be called to poll for received buffers. + Normally, Rx process is invoked by the driver on Rx interrupt. + Alternatively, this routine may be called on demand. + + @Param[in] h_FmPort A handle to a FM Port module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). + NOTE - This routine can be used only when working in + Independent-Mode mode. +*//***************************************************************************/ +t_Error FM_PORT_ImRx(t_Handle h_FmPort); + +/** @} */ /* end of FM_PORT_runtime_data_grp group */ +/** @} */ /* end of FM_PORT_grp group */ +/** @} */ /* end of FM_grp group */ + + + + +#endif /* __FM_PORT_EXT */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/inc/Peripherals/fm_rtc_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/inc/Peripherals/fm_rtc_ext.h @@ -0,0 +1,592 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 fm_rtc_ext.h + + @Description External definitions and API for FM RTC IEEE1588 Timer Module. + + @Cautions None. +*//***************************************************************************/ + +#ifndef __FM_RTC_EXT_H__ +#define __FM_RTC_EXT_H__ + + +#include "error_ext.h" +#include "std_ext.h" + + +/**************************************************************************//** + + @Group FM_grp Frame Manager API + + @Description FM API functions, definitions and enums + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group fm_rtc_grp FM RTC + + @Description FM RTC functions, definitions and enums. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group fm_rtc_init_grp FM RTC Initialization Unit + + @Description FM RTC initialization API. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Description FM RTC Alarm Polarity Options. +*//***************************************************************************/ +typedef enum e_FmRtcAlarmPolarity +{ + e_FM_RTC_ALARM_POLARITY_ACTIVE_HIGH, /**< Active-high output polarity */ + e_FM_RTC_ALARM_POLARITY_ACTIVE_LOW /**< Active-low output polarity */ +} e_FmRtcAlarmPolarity; + +/**************************************************************************//** + @Description FM RTC Trigger Polarity Options. +*//***************************************************************************/ +typedef enum e_FmRtcTriggerPolarity +{ + e_FM_RTC_TRIGGER_ON_RISING_EDGE, /**< Trigger on rising edge */ + e_FM_RTC_TRIGGER_ON_FALLING_EDGE /**< Trigger on falling edge */ +} e_FmRtcTriggerPolarity; + +/**************************************************************************//** + @Description IEEE1588 Timer Module FM RTC Optional Clock Sources. +*//***************************************************************************/ +typedef enum e_FmSrcClock +{ + e_FM_RTC_SOURCE_CLOCK_EXTERNAL, /**< external high precision timer reference clock */ + e_FM_RTC_SOURCE_CLOCK_SYSTEM, /**< MAC system clock */ + e_FM_RTC_SOURCE_CLOCK_OSCILATOR /**< RTC clock oscilator */ +}e_FmSrcClk; + +/**************************************************************************//** + @Description FM RTC configuration parameters structure. + + This structure should be passed to FM_RTC_Config(). +*//***************************************************************************/ +typedef struct t_FmRtcParams +{ + t_Handle h_Fm; /**< FM Handle*/ + uintptr_t baseAddress; /**< Base address of FM RTC registers */ + t_Handle h_App; /**< A handle to an application layer object; This handle will + be passed by the driver upon calling the above callbacks */ +} t_FmRtcParams; + + +/**************************************************************************//** + @Function FM_RTC_Config + + @Description Configures the FM RTC module according to user's parameters. + + The driver assigns default values to some FM RTC parameters. + These parameters can be overwritten using the advanced + configuration routines. + + @Param[in] p_FmRtcParam - FM RTC configuration parameters. + + @Return Handle to the new FM RTC object; NULL pointer on failure. + + @Cautions None +*//***************************************************************************/ +t_Handle FM_RTC_Config(t_FmRtcParams *p_FmRtcParam); + +/**************************************************************************//** + @Function FM_RTC_Init + + @Description Initializes the FM RTC driver and hardware. + + @Param[in] h_FmRtc - Handle to FM RTC object. + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously created using FM_RTC_Config(). +*//***************************************************************************/ +t_Error FM_RTC_Init(t_Handle h_FmRtc); + +/**************************************************************************//** + @Function FM_RTC_Free + + @Description Frees the FM RTC object and all allocated resources. + + @Param[in] h_FmRtc - Handle to FM RTC object. + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously created using FM_RTC_Config(). +*//***************************************************************************/ +t_Error FM_RTC_Free(t_Handle h_FmRtc); + + +/**************************************************************************//** + @Group fm_rtc_adv_config_grp FM RTC Advanced Configuration Unit + + @Description FM RTC advanced configuration functions. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Function FM_RTC_ConfigPeriod + + @Description Configures the period of the timestamp if different than + default [1000]. + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[in] period - Period in nano-seconds. + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously created using FM_RTC_Config(). +*//***************************************************************************/ +t_Error FM_RTC_ConfigPeriod(t_Handle h_FmRtc, uint32_t period); + +/**************************************************************************//** + @Function FM_RTC_ConfigSourceClock + + @Description Configures the source clock of the RTC. + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[in] srcClk - Source clock selection. + @Param[in] freqInMhz - the source-clock frequency (in MHz). + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously created using FM_RTC_Config(). +*//***************************************************************************/ +t_Error FM_RTC_ConfigSourceClock(t_Handle h_FmRtc, + e_FmSrcClk srcClk, + uint32_t freqInMhz); + +/**************************************************************************//** + @Function FM_RTC_ConfigPulseRealignment + + @Description Configures the RTC to automatic FIPER pulse realignment in + response to timer adjustments [FALSE] + + In this mode, the RTC clock is identical to the source clock. + This feature can be useful when the system contains an external + RTC with inherent frequency compensation. + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[in] enable - TRUE to enable automatic realignment. + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously created using FM_RTC_Config(). +*//***************************************************************************/ +t_Error FM_RTC_ConfigPulseRealignment(t_Handle h_FmRtc, bool enable); + +/**************************************************************************//** + @Function FM_RTC_ConfigFrequencyBypass + + @Description Configures the RTC to bypass the frequency compensation + mechanism. [FALSE] + + In this mode, the RTC clock is identical to the source clock. + This feature can be useful when the system contains an external + RTC with inherent frequency compensation. + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[in] enabled - TRUE to bypass frequency compensation; + FALSE otherwise. + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously created using FM_RTC_Config(). +*//***************************************************************************/ +t_Error FM_RTC_ConfigFrequencyBypass(t_Handle h_FmRtc, bool enabled); + +/**************************************************************************//** + @Function FM_RTC_ConfigInvertedInputClockPhase + + @Description Configures the RTC to invert the source clock phase on input. + [FALSE] + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[in] inverted - TRUE to invert the source clock phase on input. + FALSE otherwise. + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously created using FM_RTC_Config(). +*//***************************************************************************/ +t_Error FM_RTC_ConfigInvertedInputClockPhase(t_Handle h_FmRtc, bool inverted); + +/**************************************************************************//** + @Function FM_RTC_ConfigInvertedOutputClockPhase + + @Description Configures the RTC to invert the output clock phase. + [FALSE] + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[in] inverted - TRUE to invert the output clock phase. + FALSE otherwise. + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously created using FM_RTC_Config(). +*//***************************************************************************/ +t_Error FM_RTC_ConfigInvertedOutputClockPhase(t_Handle h_FmRtc, bool inverted); + +/**************************************************************************//** + @Function FM_RTC_ConfigOutputClockDivisor + + @Description Configures the divisor for generating the output clock from + the RTC clock. [0x00000002] + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[in] divisor - Divisor for generation of the output clock. + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously created using FM_RTC_Config(). +*//***************************************************************************/ +t_Error FM_RTC_ConfigOutputClockDivisor(t_Handle h_FmRtc, uint16_t divisor); + +/**************************************************************************//** + @Function FM_RTC_ConfigAlarmPolarity + + @Description Configures the polarity (active-high/active-low) of a specific + alarm signal. [e_FM_RTC_ALARM_POLARITY_ACTIVE_HIGH] + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[in] alarmId - Alarm ID. + @Param[in] alarmPolarity - Alarm polarity. + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously created using FM_RTC_Config(). +*//***************************************************************************/ +t_Error FM_RTC_ConfigAlarmPolarity(t_Handle h_FmRtc, + uint8_t alarmId, + e_FmRtcAlarmPolarity alarmPolarity); + +/**************************************************************************//** + @Function FM_RTC_ConfigExternalTriggerPolarity + + @Description Configures the polarity (rising/falling edge) of a specific + external trigger signal. [e_FM_RTC_TRIGGER_ON_FALLING_EDGE] + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[in] triggerId - Trigger ID. + @Param[in] triggerPolarity - Trigger polarity. + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously created using FM_RTC_Config(). +*//***************************************************************************/ +t_Error FM_RTC_ConfigExternalTriggerPolarity(t_Handle h_FmRtc, + uint8_t triggerId, + e_FmRtcTriggerPolarity triggerPolarity); + +/** @} */ /* end of fm_rtc_adv_config_grp */ +/** @} */ /* end of fm_rtc_init_grp */ + + +/**************************************************************************//** + @Group fm_rtc_control_grp FM RTC Control Unit + + @Description FM RTC runtime control API. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Function t_FmRtcExceptionsCallback + + @Description Exceptions user callback routine, used for RTC different mechanisms. + + @Param[in] h_App - User's application descriptor. + @Param[in] id - source id. +*//***************************************************************************/ +typedef void (t_FmRtcExceptionsCallback) ( t_Handle h_App, uint8_t id); + +/**************************************************************************//** + @Description FM RTC alarm parameters. +*//***************************************************************************/ +typedef struct t_FmRtcAlarmParams { + uint8_t alarmId; /**< 0 or 1 */ + uint64_t alarmTime; /**< In nanoseconds, the time when the alarm + should go off - must be a multiple of + the RTC period */ + t_FmRtcExceptionsCallback *f_AlarmCallback; /**< This routine will be called when RTC + reaches alarmTime */ + bool clearOnExpiration; /**< TRUE to turn off the alarm once expired. */ +} t_FmRtcAlarmParams; + +/**************************************************************************//** + @Description FM RTC Periodic Pulse parameters. +*//***************************************************************************/ +typedef struct t_FmRtcPeriodicPulseParams { + uint8_t periodicPulseId; /**< 0 or 1 */ + uint64_t periodicPulsePeriod; /**< In Nanoseconds. Must be + a multiple of the RTC period */ + t_FmRtcExceptionsCallback *f_PeriodicPulseCallback; /**< This routine will be called every + periodicPulsePeriod. */ +} t_FmRtcPeriodicPulseParams; + +/**************************************************************************//** + @Description FM RTC Periodic Pulse parameters. +*//***************************************************************************/ +typedef struct t_FmRtcExternalTriggerParams { + uint8_t externalTriggerId; /**< 0 or 1 */ + bool usePulseAsInput; /**< Use the pulse interrupt instead of + an external signal */ + t_FmRtcExceptionsCallback *f_ExternalTriggerCallback; /**< This routine will be called every + periodicPulsePeriod. */ +} t_FmRtcExternalTriggerParams; + + +/**************************************************************************//** + @Function FM_RTC_Enable + + @Description Enable the RTC (time count is started). + + The user can select to resume the time count from previous + point, or to restart the time count. + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[in] resetClock - Restart the time count from zero. + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously initialized using FM_RTC_Init(). +*//***************************************************************************/ +t_Error FM_RTC_Enable(t_Handle h_FmRtc, bool resetClock); + +/**************************************************************************//** + @Function FM_RTC_Disable + + @Description Disables the RTC (time count is stopped). + + @Param[in] h_FmRtc - Handle to FM RTC object. + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously initialized using FM_RTC_Init(). +*//***************************************************************************/ +t_Error FM_RTC_Disable(t_Handle h_FmRtc); + +/**************************************************************************//** + @Function FM_RTC_SetClockOffset + + @Description Sets the clock offset (usually relative to another clock). + + The user can pass a negative offset value. + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[in] offset - New clock offset (in nanoseconds). + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously initialized using FM_RTC_Init(). +*//***************************************************************************/ +t_Error FM_RTC_SetClockOffset(t_Handle h_FmRtc, int64_t offset); + +/**************************************************************************//** + @Function FM_RTC_SetAlarm + + @Description Schedules an alarm event to a given RTC time. + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[in] p_FmRtcAlarmParams - Alarm parameters. + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously initialized using FM_RTC_Init(). + Must be called only prior to FM_RTC_Enable(). +*//***************************************************************************/ +t_Error FM_RTC_SetAlarm(t_Handle h_FmRtc, t_FmRtcAlarmParams *p_FmRtcAlarmParams); + +/**************************************************************************//** + @Function FM_RTC_SetPeriodicPulse + + @Description Sets a periodic pulse. + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[in] p_FmRtcPeriodicPulseParams - Periodic pulse parameters. + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously initialized using FM_RTC_Init(). + Must be called only prior to FM_RTC_Enable(). +*//***************************************************************************/ +t_Error FM_RTC_SetPeriodicPulse(t_Handle h_FmRtc, t_FmRtcPeriodicPulseParams *p_FmRtcPeriodicPulseParams); + +/**************************************************************************//** + @Function FM_RTC_ClearPeriodicPulse + + @Description Clears a periodic pulse. + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[in] periodicPulseId - Periodic pulse id. + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously initialized using FM_RTC_Init(). +*//***************************************************************************/ +t_Error FM_RTC_ClearPeriodicPulse(t_Handle h_FmRtc, uint8_t periodicPulseId); + +/**************************************************************************//** + @Function FM_RTC_SetExternalTrigger + + @Description Sets an external trigger indication and define a callback + routine to be called on such event. + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[in] p_FmRtcExternalTriggerParams - External Trigger parameters. + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously initialized using FM_RTC_Init(). +*//***************************************************************************/ +t_Error FM_RTC_SetExternalTrigger(t_Handle h_FmRtc, t_FmRtcExternalTriggerParams *p_FmRtcExternalTriggerParams); + +/**************************************************************************//** + @Function FM_RTC_ClearExternalTrigger + + @Description Clears external trigger indication. + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[in] id - External Trigger id. + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously initialized using FM_RTC_Init(). +*//***************************************************************************/ +t_Error FM_RTC_ClearExternalTrigger(t_Handle h_FmRtc, uint8_t id); + +/**************************************************************************//** + @Function FM_RTC_GetExternalTriggerTimeStamp + + @Description Reads the External Trigger TimeStamp. + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[in] triggerId - External Trigger id. + @Param[out] p_TimeStamp - External Trigger timestamp (in nanoseconds). + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously initialized using FM_RTC_Init(). +*//***************************************************************************/ +t_Error FM_RTC_GetExternalTriggerTimeStamp(t_Handle h_FmRtc, + uint8_t triggerId, + uint64_t *p_TimeStamp); + +/**************************************************************************//** + @Function FM_RTC_GetCurrentTime + + @Description Returns the current RTC time. + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[out] p_Ts - returned time stamp (in nanoseconds). + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously initialized using FM_RTC_Init(). +*//***************************************************************************/ +t_Error FM_RTC_GetCurrentTime(t_Handle h_FmRtc, uint64_t *p_Ts); + +/**************************************************************************//** + @Function FM_RTC_SetCurrentTime + + @Description Sets the current RTC time. + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[in] ts - The new time stamp (in nanoseconds). + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously initialized using FM_RTC_Init(). +*//***************************************************************************/ +t_Error FM_RTC_SetCurrentTime(t_Handle h_FmRtc, uint64_t ts); + +/**************************************************************************//** + @Function FM_RTC_GetFreqCompensation + + @Description TODO + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[out] p_Compensation - A pointer to the returned value of compensation. + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously initialized using FM_RTC_Init(). +*//***************************************************************************/ +t_Error FM_RTC_GetFreqCompensation(t_Handle h_FmRtc, uint32_t *p_Compensation); + +/**************************************************************************//** + @Function FM_RTC_SetFreqCompensation + + @Description TODO + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[in] freqCompensation - the new desired compensation value to be set. + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously initialized using FM_RTC_Init(). +*//***************************************************************************/ +t_Error FM_RTC_SetFreqCompensation(t_Handle h_FmRtc, uint32_t freqCompensation); + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) +/**************************************************************************//** + @Function FM_RTC_DumpRegs + + @Description Dumps all FM registers + + @Param[in] h_FmRtc A handle to an FM RTC Module. + + @Return E_OK on success; + + @Cautions Allowed only FM_Init(). +*//***************************************************************************/ +t_Error FM_RTC_DumpRegs(t_Handle h_FmRtc); +#endif /* (defined(DEBUG_ERRORS) && ... */ + +/** @} */ /* end of fm_rtc_control_grp */ +/** @} */ /* end of fm_rtc_grp */ +/** @} */ /* end of FM_grp group */ + + +#endif /* __FM_RTC_EXT_H__ */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/inc/Peripherals/mii_acc_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/inc/Peripherals/mii_acc_ext.h @@ -0,0 +1,75 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 __MII_ACC_EXT_H +#define __MII_ACC_EXT_H + + +/**************************************************************************//** + @Function MII_ReadPhyReg + + @Description This routine is called to read a specified PHY + register value. + + @Param[in] h_MiiAccess - Handle to MII configuration access registers + @Param[in] phyAddr - PHY address (0-31). + @Param[in] reg - PHY register to read + @Param[out] p_Data - Gets the register value. + + @Return Always zero (success). +*//***************************************************************************/ +int MII_ReadPhyReg(t_Handle h_MiiAccess, + uint8_t phyAddr, + uint8_t reg, + uint16_t *p_Data); + +/**************************************************************************//** + @Function MII_WritePhyReg + + @Description This routine is called to write data to a specified PHY + register. + + @Param[in] h_MiiAccess - Handle to MII configuration access registers + @Param[in] phyAddr - PHY address (0-31). + @Param[in] reg - PHY register to write + @Param[in] data - Data to write in register. + + @Return Always zero (success). +*//***************************************************************************/ +int MII_WritePhyReg(t_Handle h_MiiAccess, + uint8_t phyAddr, + uint8_t reg, + uint16_t data); + + +#endif /* __MII_ACC_EXT_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/inc/core_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/inc/core_ext.h @@ -0,0 +1,81 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 core_ext.h + + @Description Generic interface to basic core operations. + + The system integrator must ensure that this interface is + mapped to a specific core implementation, by including the + appropriate header file. +*//***************************************************************************/ +#ifndef __CORE_EXT_H +#define __CORE_EXT_H + + +#ifdef NCSW_PPC_CORE +#include "ppc_ext.h" +#elif defined(NCSW_VXWORKS) +#include "core_vxw_ext.h" +#else +#error "Core is not defined!" +#endif /* NCSW_CORE */ + +#if (!defined(CORE_IS_LITTLE_ENDIAN) && !defined(CORE_IS_BIG_ENDIAN)) +#error "Must define core as little-endian or big-endian!" +#endif /* (!defined(CORE_IS_LITTLE_ENDIAN) && ... */ + + +/**************************************************************************//** + @Function CORE_GetId + + @Description Returns the core ID in the system. + + @Return Core ID. +*//***************************************************************************/ +uint32_t CORE_GetId(void); + +/**************************************************************************//** + @Function CORE_MemoryBarrier + + @Description This routine will cause the core to stop executing any commands + until all previous memory read/write commands are completely out + of the core's pipeline. + + @Return None. +*//***************************************************************************/ +void CORE_MemoryBarrier(void); + + +#endif /* __CORE_EXT_H */ + --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/inc/cores/e500v2_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/inc/cores/e500v2_ext.h @@ -0,0 +1,413 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 e500v2_ext.h + + @Description E500 external definitions prototypes + This file is not included by the E500 + source file as it is an assembly file. It is used + only for prototypes exposure, for inclusion + by user and other modules. +*//***************************************************************************/ + +#ifndef __E500V2_EXT_H +#define __E500V2_EXT_H + +#include "std_ext.h" + + +/* Layer 1 Cache Manipulations + *============================== + * Should not be called directly by the user. + */ +void L1DCache_Invalidate (void); +void L1ICache_Invalidate(void); +void L1DCache_Enable(void); +void L1ICache_Enable(void); +void L1DCache_Disable(void); +void L1ICache_Disable(void); +void L1DCache_Flush(void); +void L1ICache_Flush(void); +/* + * + */ +uint32_t L1DCache_LineLock(uint32_t addr); +uint32_t L1ICache_LineLock(uint32_t addr); +void L1Cache_BroadCastEnable(void); +void L1Cache_BroadCastDisable(void); + + +#define CORE_DCacheEnable E500_DCacheEnable +#define CORE_ICacheEnable E500_ICacheEnable +#define CORE_DCacheDisable E500_DCacheDisable +#define CORE_ICacheDisable E500_ICacheDisable +#define CORE_GetId E500_GetId +#define CORE_TestAndSet E500_TestAndSet +#define CORE_MemoryBarrier E500_MemoryBarrier +#define CORE_InstructionSync E500_InstructionSync + +#define CORE_SetDozeMode E500_SetDozeMode +#define CORE_SetNapMode E500_SetNapMode +#define CORE_SetSleepMode E500_SetSleepMode +#define CORE_SetJogMode E500_SetJogMode +#define CORE_SetDeepSleepMode E500_SetDeepSleepMode + +#define CORE_RecoverDozeMode E500_RecoverDozeMode +#define CORE_RecoverNapMode E500_RecoverNapMode +#define CORE_RecoverSleepMode E500_RecoverSleepMode +#define CORE_RecoverJogMode E500_RecoverJogMode + +void E500_SetDozeMode(void); +void E500_SetNapMode(void); +void E500_SetSleepMode(void); +void E500_SetJogMode(void); +t_Error E500_SetDeepSleepMode(uint32_t bptrAddress); + +void E500_RecoverDozeMode(void); +void E500_RecoverNapMode(void); +void E500_RecoverSleepMode(void); +void E500_RecoverJogMode(void); + + +/**************************************************************************//** + @Group E500_id E500 Application Programming Interface + + @Description E500 API functions, definitions and enums + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group E500_init_grp E500 Initialization Unit + + @Description E500 initialization unit API functions, definitions and enums + + @{ +*//***************************************************************************/ + + +/**************************************************************************//** + @Function E500_DCacheEnable + + @Description Enables the data cache for memory pages that are + not cache inhibited. + + @Return None. +*//***************************************************************************/ +void E500_DCacheEnable(void); + +/**************************************************************************//** + @Function E500_ICacheEnable + + @Description Enables the instruction cache for memory pages that are + not cache inhibited. + + @Return None. +*//***************************************************************************/ +void E500_ICacheEnable(void); + +/**************************************************************************//** + @Function E500_DCacheDisable + + @Description Disables the data cache. + + @Return None. +*//***************************************************************************/ +void E500_DCacheDisable(void); + +/**************************************************************************//** + @Function E500_ICacheDisable + + @Description Disables the instruction cache. + + @Return None. +*//***************************************************************************/ +void E500_ICacheDisable(void); + +/**************************************************************************//** + @Function E500_DCacheFlush + + @Description Flushes the data cache + + @Return None. +*//***************************************************************************/ +void E500_DCacheFlush(void); + +/**************************************************************************//** + @Function E500_ICacheFlush + + @Description Flushes the instruction cache. + + @Return None. +*//***************************************************************************/ +void E500_ICacheFlush(void); + +/**************************************************************************//** + @Function E500_DCacheSetStashId + + @Description Set Stash Id for data cache + + @Param[in] stashId the stash id to be set. + + @Return None. +*//***************************************************************************/ +void E500_DCacheSetStashId(uint8_t stashId); + +/**************************************************************************//** + @Description E500mc L2 Cache Operation Mode +*//***************************************************************************/ +typedef enum e_E500mcL2CacheMode +{ + e_L2_CACHE_MODE_DATA_ONLY = 0x00000001, /**< Cache data only */ + e_L2_CACHE_MODE_INST_ONLY = 0x00000002, /**< Cache instructions only */ + e_L2_CACHE_MODE_DATA_AND_INST = 0x00000003 /**< Cache data and instructions */ +} e_E500mcL2CacheMode; + +/**************************************************************************//** + @Function E500_L2CacheEnable + + @Description Enables the cache for memory pages that are not cache inhibited. + + @param[in] mode - L2 cache mode: data only, instruction only or instruction and data. + + @Return None. + + @Cautions This routine must be call only ONCE for both caches. I.e. it is + not possible to call this routine for i-cache and than to call + again for d-cache; The second call will override the first one. +*//***************************************************************************/ +void E500_L2CacheEnable(e_E500mcL2CacheMode mode); + +/**************************************************************************//** + @Function E500_L2CacheDisable + + @Description Disables the cache (data instruction or both). + + @Return None. + +*//***************************************************************************/ +void E500_L2CacheDisable(void); + +/**************************************************************************//** + @Function E500_L2CacheFlush + + @Description Flushes the cache. + + @Return None. +*//***************************************************************************/ +void E500_L2CacheFlush(void); + +/**************************************************************************//** + @Function E500_L2SetStashId + + @Description Set Stash Id + + @Param[in] stashId the stash id to be set. + + @Return None. +*//***************************************************************************/ +void E500_L2SetStashId(uint8_t stashId); + +/**************************************************************************//** + @Function E500_AddressBusStreamingEnable + + @Description Enables address bus streaming on the CCB. + + This setting, along with the ECM streaming configuration + parameters, enables address bus streaming on the CCB. + + @Return None. +*//***************************************************************************/ +void E500_AddressBusStreamingEnable(void); + +/**************************************************************************//** + @Function E500_AddressBusStreamingDisable + + @Description Disables address bus streaming on the CCB. + + @Return None. +*//***************************************************************************/ +void E500_AddressBusStreamingDisable(void); + +/**************************************************************************//** + @Function E500_AddressBroadcastEnable + + @Description Enables address broadcast. + + The e500 broadcasts cache management instructions (dcbst, dcblc + (CT = 1), icblc (CT = 1), dcbf, dcbi, mbar, msync, tlbsync, icbi) + based on ABE. ABE must be set to allow management of external + L2 caches. + + @Return None. +*//***************************************************************************/ +void E500_AddressBroadcastEnable(void); + +/**************************************************************************//** + @Function E500_AddressBroadcastDisable + + @Description Disables address broadcast. + + The e500 broadcasts cache management instructions (dcbst, dcblc + (CT = 1), icblc (CT = 1), dcbf, dcbi, mbar, msync, tlbsync, icbi) + based on ABE. ABE must be set to allow management of external + L2 caches. + + @Return None. +*//***************************************************************************/ +void E500_AddressBroadcastDisable(void); + +/**************************************************************************//** + @Function E500_IsTaskletSupported + + @Description Checks if tasklets are supported by the e500 interrupt handler. + + @Retval TRUE - Tasklets are supported. + @Retval FALSE - Tasklets are not supported. +*//***************************************************************************/ +bool E500_IsTaskletSupported(void); + +void E500_EnableTimeBase(void); +void E500_DisableTimeBase(void); + +uint64_t E500_GetTimeBaseTime(void); + +void E500_GenericIntrInit(void); + +t_Error E500_SetIntr(int ppcIntrSrc, + void (* Isr)(t_Handle handle), + t_Handle handle); + +t_Error E500_ClearIntr(int ppcIntrSrc); + +/**************************************************************************//** + @Function E500_GenericIntrHandler + + @Description This is the general e500 interrupt handler. + + It is called by the main assembly interrupt handler + when an exception occurs and no other function has been + assigned to this exception. + + @Param intrEntry - (In) The exception interrupt vector entry. +*//***************************************************************************/ +void E500_GenericIntrHandler(uint32_t intrEntry); + +/**************************************************************************//** + @Function CriticalIntr + + @Description This is the specific critical e500 interrupt handler. + + It is called by the main assembly interrupt handler + when an critical interrupt. + + @Param intrEntry - (In) The exception interrupt vector entry. +*//***************************************************************************/ +void CriticalIntr(uint32_t intrEntry); + + +/**************************************************************************//** + @Function E500_GetId + + @Description Returns the core ID in the system. + + @Return Core ID. +*//***************************************************************************/ +uint32_t E500_GetId(void); + +/**************************************************************************//** + @Function E500_TestAndSet + + @Description This routine tries to atomically test-and-set an integer + in memory to a non-zero value. + + The memory will be set only if it is tested as zero, in which + case the routine returns the new non-zero value; otherwise the + routine returns zero. + + @Param[in] p - pointer to a volatile int in memory, on which test-and-set + operation should be made. + + @Retval Zero - Operation failed - memory was already set. + @Retval Non-zero - Operation succeeded - memory has been set. +*//***************************************************************************/ +int E500_TestAndSet(volatile int *p); + +/**************************************************************************//** + @Function E500_MemoryBarrier + + @Description This routine will cause the core to stop executing any commands + until all previous memory read/write commands are completely out + of the core's pipeline. + + @Return None. +*//***************************************************************************/ +static __inline__ void E500_MemoryBarrier(void) +{ +#ifdef CORE_E500MC + __asm__ ("mbar 1"); +#else + /**** ERRATA WORK AROUND START ****/ + /* ERRATA num: CPU1 */ + /* Description: "mbar MO = 1" instruction fails to order caching-inhibited + guarded loads and stores. */ + + /* "msync" instruction is used instead */ + + __asm__ ("msync"); + + /**** ERRATA WORK AROUND END ****/ +#endif +} + +/**************************************************************************//** + @Function E500_InstructionSync + + @Description This routine will cause the core to wait for previous instructions + (including any interrupts they generate) to complete before the + synchronization command executes, which purges all instructions + from the processor's pipeline and refetches the next instruction. + + @Return None. +*//***************************************************************************/ +static __inline__ void E500_InstructionSync(void) +{ + __asm__ ("isync"); +} + + +/** @} */ /* end of E500_init_grp group */ +/** @} */ /* end of E500_grp group */ + + +#endif /* __E500V2_EXT_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/inc/cores/ppc_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/inc/cores/ppc_ext.h @@ -0,0 +1,130 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 ppc_ext.h + + @Description Core API for PowerPC cores + + These routines must be implemented by each specific PowerPC + core driver. +*//***************************************************************************/ +#ifndef __PPC_EXT_H +#define __PPC_EXT_H + +#include "part_ext.h" + + +#define CORE_IS_BIG_ENDIAN + + +/**************************************************************************//** + @Function CORE_TestAndSet + + @Description This routine tries to atomically test-and-set an integer + in memory to a non-zero value. + + The memory will be set only if it is tested as zero, in which + case the routine returns the new non-zero value; otherwise the + routine returns zero. + + @Param[in] p - pointer to a volatile int in memory, on which test-and-set + operation should be made. + + @Retval Zero - Operation failed - memory was already set. + @Retval Non-zero - Operation succeeded - memory has been set. +*//***************************************************************************/ +int CORE_TestAndSet(volatile int *p); + +/**************************************************************************//** + @Function CORE_InstructionSync + + @Description This routine will cause the core to wait for previous instructions + (including any interrupts they generate) to complete before the + synchronization command executes, which purges all instructions + from the processor's pipeline and refetches the next instruction. + + @Return None. +*//***************************************************************************/ +void CORE_InstructionSync(void); + +/**************************************************************************//** + @Function CORE_DCacheEnable + + @Description Enables the data cache for memory pages that are + not cache inhibited. + + @Return None. +*//***************************************************************************/ +void CORE_DCacheEnable(void); + +/**************************************************************************//** + @Function CORE_ICacheEnable + + @Description Enables the instruction cache for memory pages that are + not cache inhibited. + + @Return None. +*//***************************************************************************/ +void CORE_ICacheEnable(void); + +/**************************************************************************//** + @Function CORE_DCacheDisable + + @Description Disables the data cache. + + @Return None. +*//***************************************************************************/ +void CORE_DCacheDisable(void); + +/**************************************************************************//** + @Function CORE_ICacheDisable + + @Description Disables the instruction cache. + + @Return None. +*//***************************************************************************/ +void CORE_ICacheDisable(void); + + + + +#if defined(CORE_E300) +#include "e300_ext.h" +#elif defined(CORE_E500V2) || defined(CORE_E500MC) +#include "e500v2_ext.h" +#else +#error "Core not defined!" +#endif + + +#endif /* __PPC_EXT_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/inc/ctype_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/inc/ctype_ext.h @@ -0,0 +1,93 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 __CTYPE_EXT_H +#define __CTYPE_EXT_H + + +#if defined(NCSW_LINUX) && defined(__KERNEL__) +/* + * NOTE! This ctype does not handle EOF like the standard C + * library is required to. + */ + +#define _U 0x01 /* upper */ +#define _L 0x02 /* lower */ +#define _D 0x04 /* digit */ +#define _C 0x08 /* cntrl */ +#define _P 0x10 /* punct */ +#define _S 0x20 /* white space (space/lf/tab) */ +#define _X 0x40 /* hex digit */ +#define _SP 0x80 /* hard space (0x20) */ + +extern unsigned char _ctype[]; + +#define __ismask(x) (_ctype[(int)(unsigned char)(x)]) + +#define isalnum(c) ((__ismask(c)&(_U|_L|_D)) != 0) +#define isalpha(c) ((__ismask(c)&(_U|_L)) != 0) +#define iscntrl(c) ((__ismask(c)&(_C)) != 0) +#define isdigit(c) ((__ismask(c)&(_D)) != 0) +#define isgraph(c) ((__ismask(c)&(_P|_U|_L|_D)) != 0) +#define islower(c) ((__ismask(c)&(_L)) != 0) +#define isprint(c) ((__ismask(c)&(_P|_U|_L|_D|_SP)) != 0) +#define ispunct(c) ((__ismask(c)&(_P)) != 0) +#define isspace(c) ((__ismask(c)&(_S)) != 0) +#define isupper(c) ((__ismask(c)&(_U)) != 0) +#define isxdigit(c) ((__ismask(c)&(_D|_X)) != 0) + +#define isascii(c) (((unsigned char)(c))<=0x7f) +#define toascii(c) (((unsigned char)(c))&0x7f) + +static __inline__ unsigned char __tolower(unsigned char c) +{ + if (isupper(c)) + c -= 'A'-'a'; + return c; +} + +static __inline__ unsigned char __toupper(unsigned char c) +{ + if (islower(c)) + c -= 'a'-'A'; + return c; +} + +#define tolower(c) __tolower(c) +#define toupper(c) __toupper(c) + +#else +#include +#endif /* defined(NCSW_LINUX) && defined(__KERNEL__) */ + + +#endif /* __CTYPE_EXT_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/inc/debug_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/inc/debug_ext.h @@ -0,0 +1,259 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 debug_ext.h + + @Description Debug mode definitions. +*//***************************************************************************/ + +#ifndef __DEBUG_EXT_H +#define __DEBUG_EXT_H + +#include "std_ext.h" +#include "xx_ext.h" +#include "memcpy_ext.h" +#if (DEBUG_ERRORS > 0) +#include "sprint_ext.h" +#include "string_ext.h" +#endif /* DEBUG_ERRORS > 0 */ + + +#if (DEBUG_ERRORS > 0) + +/* Internally used macros */ + +#define DUMP_Print XX_Print +#define DUMP_MAX_LEVELS 6 +#define DUMP_MAX_STR 64 + + +#define _CREATE_DUMP_SUBSTR(phrase) \ + dumpTmpLevel = 0; dumpSubStr[0] = '\0'; \ + sprintf(dumpTmpStr, "%s", #phrase); \ + p_DumpToken = strtok(dumpTmpStr, (dumpIsArr[0] ? "[" : ".")); \ + while (p_DumpToken != NULL) \ + { \ + strcat(dumpSubStr, p_DumpToken); \ + if (dumpIsArr[dumpTmpLevel]) \ + { \ + strcat(dumpSubStr, dumpIdxStr[dumpTmpLevel]); \ + p_DumpToken = strtok(NULL, "."); \ + } \ + if ((p_DumpToken = strtok(NULL, (dumpIsArr[++dumpTmpLevel] ? "[" : "."))) != 0) \ + strcat(dumpSubStr, "."); \ + }\ + + +/**************************************************************************//** + @Group gen_id General Drivers Utilities + + @Description External routines. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group dump_id Memory and Registers Dump Mechanism + + @Description Macros for dumping memory mapped structures. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Description Declaration of dump mechanism variables. + + This macro must be declared at the beginning of each routine + which uses the dump mechanism macros, before the routine's code + starts. +*//***************************************************************************/ +#define DECLARE_DUMP \ + char dumpIdxStr[DUMP_MAX_LEVELS + 1][6] = { "", }; \ + char dumpSubStr[DUMP_MAX_STR] = ""; \ + char dumpTmpStr[DUMP_MAX_STR] = ""; \ + char *p_DumpToken = NULL; \ + int dumpArrIdx = 0, dumpArrSize = 0, dumpVarSize = 0, dumpLevel = 0, dumpTmpLevel = 0; \ + uint8_t dumpIsArr[DUMP_MAX_LEVELS + 1] = { 0 }; \ + /* Prevent warnings if not all used */ \ + UNUSED(dumpIdxStr[0][0]); \ + UNUSED(dumpSubStr[0]); \ + UNUSED(dumpTmpStr[0]); \ + UNUSED(p_DumpToken); \ + UNUSED(dumpArrIdx); \ + UNUSED(dumpArrSize); \ + UNUSED(dumpVarSize); \ + UNUSED(dumpLevel); \ + UNUSED(dumpTmpLevel); \ + UNUSED(dumpIsArr[0]); + + +/**************************************************************************//** + @Description Prints a title for a subsequent dumped structure or memory. + + The inputs for this macro are the structure/memory title and + its base addresses. +*//***************************************************************************/ +#define DUMP_TITLE(addr, msg) \ + DUMP_Print("\r\n"); DUMP_Print msg; \ + DUMP_Print(" (0x%p)\r\n" \ + "---------------------------------------------------------\r\n", \ + (addr)) + +/**************************************************************************//** + @Description Prints a subtitle for a subsequent dumped sub-structure (optional). + + The inputs for this macro are the sub-structure subtitle. + A separating line with this subtitle will be printed. +*//***************************************************************************/ +#define DUMP_SUBTITLE(subtitle) \ + DUMP_Print("----------- "); DUMP_Print subtitle; DUMP_Print("\r\n") + + +/**************************************************************************//** + @Description Dumps a memory region in 4-bytes aligned format. + + The inputs for this macro are the base addresses and size + (in bytes) of the memory region. +*//***************************************************************************/ +#define DUMP_MEMORY(addr, size) \ + MemDisp((uint8_t *)(addr), (int)(size)) + + +/**************************************************************************//** + @Description Declares a dump loop, for dumping a sub-structure array. + + The inputs for this macro are: + - idx: an index variable, for indexing the sub-structure items + inside the loop. This variable must be declared separately + in the beginning of the routine. + - cnt: the number of times to repeat the loop. This number should + equal the number of items in the sub-structures array. + + Note, that the body of the loop must be written inside brackets. +*//***************************************************************************/ +#define DUMP_SUBSTRUCT_ARRAY(idx, cnt) \ + for (idx=0, dumpIsArr[dumpLevel++] = 1; \ + (idx < cnt) && sprintf(dumpIdxStr[dumpLevel-1], "[%d]", idx); \ + idx++, ((idx < cnt) || ((dumpIsArr[--dumpLevel] = 0) == 0))) + + +/**************************************************************************//** + @Description Dumps a structure's member variable. + + The input for this macro is the full reference for the member + variable, where the structure is referenced using a pointer. + + Note, that a members array must be dumped using DUMP_ARR macro, + rather than using this macro. + + If the member variable is part of a sub-structure hierarchy, + the full hierarchy (including array indexing) must be specified. + + Examples: p_Struct->member + p_Struct->sub.member + p_Struct->sub[i].member +*//***************************************************************************/ +#define DUMP_VAR(st, phrase) \ + do { \ + void *addr = (void *)&((st)->phrase); \ + _CREATE_DUMP_SUBSTR(phrase); \ + dumpVarSize = sizeof((st)->phrase); \ + switch (dumpVarSize) \ + { \ + case 1: DUMP_Print("0x%08X: 0x%02x%14s\t%s\r\n", \ + addr, GET_UINT8(*(uint8_t*)addr), "", dumpSubStr); break; \ + case 2: DUMP_Print("0x%08X: 0x%04x%12s\t%s\r\n", \ + addr, GET_UINT16(*(uint16_t*)addr), "", dumpSubStr); break; \ + case 4: DUMP_Print("0x%08X: 0x%08x%8s\t%s\r\n", \ + addr, GET_UINT32(*(uint32_t*)addr), "", dumpSubStr); break; \ + case 8: DUMP_Print("0x%08X: 0x%016llx\t%s\r\n", \ + addr, GET_UINT64(*(uint64_t*)addr), dumpSubStr); break; \ + default: DUMP_Print("Bad size %d (" #st "->" #phrase ")\r\n", dumpVarSize); \ + } \ + } while (0) + + +/**************************************************************************//** + @Description Dumps a structure's members array. + + The input for this macro is the full reference for the members + array, where the structure is referenced using a pointer. + + If the members array is part of a sub-structure hierarchy, + the full hierarchy (including array indexing) must be specified. + + Examples: p_Struct->array + p_Struct->sub.array + p_Struct->sub[i].array +*//***************************************************************************/ +#define DUMP_ARR(st, phrase) \ + do { \ + _CREATE_DUMP_SUBSTR(phrase); \ + dumpArrSize = ARRAY_SIZE((st)->phrase); \ + dumpVarSize = sizeof((st)->phrase[0]); \ + switch (dumpVarSize) \ + { \ + case 1: \ + for (dumpArrIdx=0; dumpArrIdx < dumpArrSize; dumpArrIdx++) { \ + DUMP_Print("0x%08X: 0x%02x%14s\t%s[%d]\r\n", \ + &((st)->phrase[dumpArrIdx]), GET_UINT8((st)->phrase[dumpArrIdx]), "", dumpSubStr, dumpArrIdx); \ + } break; \ + case 2: \ + for (dumpArrIdx=0; dumpArrIdx < dumpArrSize; dumpArrIdx++) { \ + DUMP_Print("0x%08X: 0x%04x%12s\t%s[%d]\r\n", \ + &((st)->phrase[dumpArrIdx]), GET_UINT16((st)->phrase[dumpArrIdx]), "", dumpSubStr, dumpArrIdx); \ + } break; \ + case 4: \ + for (dumpArrIdx=0; dumpArrIdx < dumpArrSize; dumpArrIdx++) { \ + DUMP_Print("0x%08X: 0x%08x%8s\t%s[%d]\r\n", \ + &((st)->phrase[dumpArrIdx]), GET_UINT32((st)->phrase[dumpArrIdx]), "", dumpSubStr, dumpArrIdx); \ + } break; \ + case 8: \ + for (dumpArrIdx=0; dumpArrIdx < dumpArrSize; dumpArrIdx++) { \ + DUMP_Print("0x%08X: 0x%016llx\t%s[%d]\r\n", \ + &((st)->phrase[dumpArrIdx]), GET_UINT64((st)->phrase[dumpArrIdx]), dumpSubStr, dumpArrIdx); \ + } break; \ + default: DUMP_Print("Bad size %d (" #st "->" #phrase "[0])\r\n", dumpVarSize); \ + } \ + } while (0) + + +#endif /* DEBUG_ERRORS > 0 */ + + +/** @} */ /* end of dump_id group */ +/** @} */ /* end of gen_id group */ + + +#endif /* __DEBUG_EXT_H */ + --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/inc/endian_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/inc/endian_ext.h @@ -0,0 +1,446 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 endian_ext.h + + @Description Big/little endian swapping routines. +*//***************************************************************************/ + +#ifndef __ENDIAN_EXT_H +#define __ENDIAN_EXT_H + +#include "std_ext.h" + + +/**************************************************************************//** + @Group gen_id General Drivers Utilities + + @Description General usage API. This API is intended for usage by both the + internal modules and the user's application. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group endian_id Big/Little-Endian Conversion + + @Description Routines and macros for Big/Little-Endian conversion and + general byte swapping. + + All routines and macros are expecting unsigned values as + parameters, but will generate the correct result also for + signed values. Therefore, signed/unsigned casting is allowed. + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Collection Byte-Swap Macros + + Macros for swapping byte order. + + @Cautions The parameters of these macros are evaluated multiple times. + For calculated expressions or expressions that contain function + calls it is recommended to use the byte-swap routines. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Description Swaps the byte order of a given 16-bit value. + + @Param[in] val - The 16-bit value to swap. + + @Return The byte-swapped value.. + + @Cautions The given value is evaluated multiple times by this macro. + For calculated expressions or expressions that contain function + calls it is recommended to use the SwapUint16() routine. + + @hideinitializer +*//***************************************************************************/ +#define SWAP_UINT16(val) \ + ((uint16_t)((((val) & 0x00FF) << 8) | (((val) & 0xFF00) >> 8))) + +/**************************************************************************//** + @Description Swaps the byte order of a given 32-bit value. + + @Param[in] val - The 32-bit value to swap. + + @Return The byte-swapped value.. + + @Cautions The given value is evaluated multiple times by this macro. + For calculated expressions or expressions that contain function + calls it is recommended to use the SwapUint32() routine. + + @hideinitializer +*//***************************************************************************/ +#define SWAP_UINT32(val) \ + ((uint32_t)((((val) & 0x000000FF) << 24) | \ + (((val) & 0x0000FF00) << 8) | \ + (((val) & 0x00FF0000) >> 8) | \ + (((val) & 0xFF000000) >> 24))) + +/**************************************************************************//** + @Description Swaps the byte order of a given 64-bit value. + + @Param[in] val - The 64-bit value to swap. + + @Return The byte-swapped value.. + + @Cautions The given value is evaluated multiple times by this macro. + For calculated expressions or expressions that contain function + calls it is recommended to use the SwapUint64() routine. + + @hideinitializer +*//***************************************************************************/ +#define SWAP_UINT64(val) \ + ((uint64_t)((((val) & 0x00000000000000FFULL) << 56) | \ + (((val) & 0x000000000000FF00ULL) << 40) | \ + (((val) & 0x0000000000FF0000ULL) << 24) | \ + (((val) & 0x00000000FF000000ULL) << 8) | \ + (((val) & 0x000000FF00000000ULL) >> 8) | \ + (((val) & 0x0000FF0000000000ULL) >> 24) | \ + (((val) & 0x00FF000000000000ULL) >> 40) | \ + (((val) & 0xFF00000000000000ULL) >> 56))) + +/* @} */ + +/**************************************************************************//** + @Collection Byte-Swap Routines + + Routines for swapping the byte order of a given parameter and + returning the swapped value. + + These inline routines are safer than the byte-swap macros, + because they evaluate the parameter expression only once. + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Function SwapUint16 + + @Description Returns the byte-swapped value of a given 16-bit value. + + @Param[in] val - The 16-bit value. + + @Return The byte-swapped value of the parameter. +*//***************************************************************************/ +static __inline__ uint16_t SwapUint16(uint16_t val) +{ + return (uint16_t)(((val & 0x00FF) << 8) | + ((val & 0xFF00) >> 8)); +} + +/**************************************************************************//** + @Function SwapUint32 + + @Description Returns the byte-swapped value of a given 32-bit value. + + @Param[in] val - The 32-bit value. + + @Return The byte-swapped value of the parameter. +*//***************************************************************************/ +static __inline__ uint32_t SwapUint32(uint32_t val) +{ + return (uint32_t)(((val & 0x000000FF) << 24) | + ((val & 0x0000FF00) << 8) | + ((val & 0x00FF0000) >> 8) | + ((val & 0xFF000000) >> 24)); +} + +/**************************************************************************//** + @Function SwapUint64 + + @Description Returns the byte-swapped value of a given 64-bit value. + + @Param[in] val - The 64-bit value. + + @Return The byte-swapped value of the parameter. +*//***************************************************************************/ +static __inline__ uint64_t SwapUint64(uint64_t val) +{ + return (uint64_t)(((val & 0x00000000000000FFULL) << 56) | + ((val & 0x000000000000FF00ULL) << 40) | + ((val & 0x0000000000FF0000ULL) << 24) | + ((val & 0x00000000FF000000ULL) << 8) | + ((val & 0x000000FF00000000ULL) >> 8) | + ((val & 0x0000FF0000000000ULL) >> 24) | + ((val & 0x00FF000000000000ULL) >> 40) | + ((val & 0xFF00000000000000ULL) >> 56)); +} + +/* @} */ + +/**************************************************************************//** + @Collection In-place Byte-Swap-And-Set Routines + + Routines for swapping the byte order of a given variable and + setting the swapped value back to the same variable. + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Function SwapUint16P + + @Description Swaps the byte order of a given 16-bit variable. + + @Param[in] p_Val - Pointer to the 16-bit variable. + + @Return None. +*//***************************************************************************/ +static __inline__ void SwapUint16P(uint16_t *p_Val) +{ + *p_Val = SwapUint16(*p_Val); +} + +/**************************************************************************//** + @Function SwapUint32P + + @Description Swaps the byte order of a given 32-bit variable. + + @Param[in] p_Val - Pointer to the 32-bit variable. + + @Return None. +*//***************************************************************************/ +static __inline__ void SwapUint32P(uint32_t *p_Val) +{ + *p_Val = SwapUint32(*p_Val); +} + +/**************************************************************************//** + @Function SwapUint64P + + @Description Swaps the byte order of a given 64-bit variable. + + @Param[in] p_Val - Pointer to the 64-bit variable. + + @Return None. +*//***************************************************************************/ +static __inline__ void SwapUint64P(uint64_t *p_Val) +{ + *p_Val = SwapUint64(*p_Val); +} + +/* @} */ + + +/**************************************************************************//** + @Collection Little-Endian Conversion Macros + + These macros convert given parameters to or from Little-Endian + format. Use these macros when you want to read or write a specific + Little-Endian value in memory, without a-priori knowing the CPU + byte order. + + These macros use the byte-swap routines. For conversion of + constants in initialization structures, you may use the CONST + versions of these macros (see below), which are using the + byte-swap macros instead. + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Description Converts a given 16-bit value from CPU byte order to + Little-Endian byte order. + + @Param[in] val - The 16-bit value to convert. + + @Return The converted value. + + @hideinitializer +*//***************************************************************************/ +#define CPU_TO_LE16(val) SwapUint16(val) + +/**************************************************************************//** + @Description Converts a given 32-bit value from CPU byte order to + Little-Endian byte order. + + @Param[in] val - The 32-bit value to convert. + + @Return The converted value. + + @hideinitializer +*//***************************************************************************/ +#define CPU_TO_LE32(val) SwapUint32(val) + +/**************************************************************************//** + @Description Converts a given 64-bit value from CPU byte order to + Little-Endian byte order. + + @Param[in] val - The 64-bit value to convert. + + @Return The converted value. + + @hideinitializer +*//***************************************************************************/ +#define CPU_TO_LE64(val) SwapUint64(val) + + +/**************************************************************************//** + @Description Converts a given 16-bit value from Little-Endian byte order to + CPU byte order. + + @Param[in] val - The 16-bit value to convert. + + @Return The converted value. + + @hideinitializer +*//***************************************************************************/ +#define LE16_TO_CPU(val) CPU_TO_LE16(val) + +/**************************************************************************//** + @Description Converts a given 32-bit value from Little-Endian byte order to + CPU byte order. + + @Param[in] val - The 32-bit value to convert. + + @Return The converted value. + + @hideinitializer +*//***************************************************************************/ +#define LE32_TO_CPU(val) CPU_TO_LE32(val) + +/**************************************************************************//** + @Description Converts a given 64-bit value from Little-Endian byte order to + CPU byte order. + + @Param[in] val - The 64-bit value to convert. + + @Return The converted value. + + @hideinitializer +*//***************************************************************************/ +#define LE64_TO_CPU(val) CPU_TO_LE64(val) + +/* @} */ + +/**************************************************************************//** + @Collection Little-Endian Constant Conversion Macros + + These macros convert given constants to or from Little-Endian + format. Use these macros when you want to read or write a specific + Little-Endian constant in memory, without a-priori knowing the + CPU byte order. + + These macros use the byte-swap macros, therefore can be used for + conversion of constants in initialization structures. + + @Cautions The parameters of these macros are evaluated multiple times. + For non-constant expressions, use the non-CONST macro versions. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Description Converts a given 16-bit constant from CPU byte order to + Little-Endian byte order. + + @Param[in] val - The 16-bit value to convert. + + @Return The converted value. + + @hideinitializer +*//***************************************************************************/ +#define CONST_CPU_TO_LE16(val) SWAP_UINT16(val) + +/**************************************************************************//** + @Description Converts a given 32-bit constant from CPU byte order to + Little-Endian byte order. + + @Param[in] val - The 32-bit value to convert. + + @Return The converted value. + + @hideinitializer +*//***************************************************************************/ +#define CONST_CPU_TO_LE32(val) SWAP_UINT32(val) + +/**************************************************************************//** + @Description Converts a given 64-bit constant from CPU byte order to + Little-Endian byte order. + + @Param[in] val - The 64-bit value to convert. + + @Return The converted value. + + @hideinitializer +*//***************************************************************************/ +#define CONST_CPU_TO_LE64(val) SWAP_UINT64(val) + + +/**************************************************************************//** + @Description Converts a given 16-bit constant from Little-Endian byte order + to CPU byte order. + + @Param[in] val - The 16-bit value to convert. + + @Return The converted value. + + @hideinitializer +*//***************************************************************************/ +#define CONST_LE16_TO_CPU(val) CONST_CPU_TO_LE16(val) + +/**************************************************************************//** + @Description Converts a given 32-bit constant from Little-Endian byte order + to CPU byte order. + + @Param[in] val - The 32-bit value to convert. + + @Return The converted value. + + @hideinitializer +*//***************************************************************************/ +#define CONST_LE32_TO_CPU(val) CONST_CPU_TO_LE32(val) + +/**************************************************************************//** + @Description Converts a given 64-bit constant from Little-Endian byte order + to CPU byte order. + + @Param[in] val - The 64-bit value to convert. + + @Return The converted value. + + @hideinitializer +*//***************************************************************************/ +#define CONST_LE64_TO_CPU(val) CONST_CPU_TO_LE64(val) + +/* @} */ + + +/** @} */ /* end of endian_id group */ +/** @} */ /* end of gen_id group */ + + +#endif /* __ENDIAN_EXT_H */ + --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/inc/enet_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/inc/enet_ext.h @@ -0,0 +1,154 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 enet_ext.h + + @Description Ethernet generic definitions and enums. +*//***************************************************************************/ + +#ifndef __ENET_EXT_H +#define __ENET_EXT_H + + +#define ENET_NUM_OCTETS_PER_ADDRESS 6 /**< Number of octets (8-bit bytes) in an ethernet address */ +#define ENET_GROUP_ADDR 0x01 /**< Group address mask for ethernet addresses */ + + +/**************************************************************************//** + @Description Ethernet Address +*//***************************************************************************/ +typedef uint8_t t_EnetAddr[ENET_NUM_OCTETS_PER_ADDRESS]; + +/**************************************************************************//** + @Description Ethernet Address Type. +*//***************************************************************************/ +typedef enum e_EnetAddrType +{ + e_ENET_ADDR_TYPE_INDIVIDUAL, /**< Individual (unicast) address */ + e_ENET_ADDR_TYPE_GROUP, /**< Group (multicast) address */ + e_ENET_ADDR_TYPE_BROADCAST /**< Broadcast address */ +} e_EnetAddrType; + + +/**************************************************************************//** + @Description Ethernet MAC-PHY Interface +*//***************************************************************************/ +typedef enum e_EnetInterface +{ + e_ENET_IF_MII = 0x00010000, /**< MII interface */ + e_ENET_IF_RMII = 0x00020000, /**< RMII interface */ + e_ENET_IF_SMII = 0x00030000, /**< SMII interface */ + e_ENET_IF_GMII = 0x00040000, /**< GMII interface */ + e_ENET_IF_RGMII = 0x00050000, /**< RGMII interface */ + e_ENET_IF_TBI = 0x00060000, /**< TBI interface */ + e_ENET_IF_RTBI = 0x00070000, /**< RTBI interface */ + e_ENET_IF_SGMII = 0x00080000, /**< SGMII interface */ + e_ENET_IF_XGMII = 0x00090000, /**< XGMII interface */ + e_ENET_IF_QSGMII= 0x000a0000 /**< QSGMII interface */ +} e_EnetInterface; + +/**************************************************************************//** + @Description Ethernet Duplex Mode +*//***************************************************************************/ +typedef enum e_EnetDuplexMode +{ + e_ENET_HALF_DUPLEX, /**< Half-Duplex mode */ + e_ENET_FULL_DUPLEX /**< Full-Duplex mode */ +} e_EnetDuplexMode; + +/**************************************************************************//** + @Description Ethernet Speed (nominal data rate) +*//***************************************************************************/ +typedef enum e_EnetSpeed +{ + e_ENET_SPEED_10 = 10, /**< 10 Mbps */ + e_ENET_SPEED_100 = 100, /**< 100 Mbps */ + e_ENET_SPEED_1000 = 1000, /**< 1000 Mbps = 1 Gbps */ + e_ENET_SPEED_10000 = 10000 /**< 10000 Mbps = 10 Gbps */ +} e_EnetSpeed; + +/**************************************************************************//** + @Description Ethernet mode (combination of MAC-PHY interface and speed) +*//***************************************************************************/ +typedef enum e_EnetMode +{ + e_ENET_MODE_INVALID = 0, /**< Invalid Ethernet mode */ + e_ENET_MODE_MII_10 = (e_ENET_IF_MII | e_ENET_SPEED_10), /**< 10 Mbps MII */ + e_ENET_MODE_MII_100 = (e_ENET_IF_MII | e_ENET_SPEED_100), /**< 100 Mbps MII */ + e_ENET_MODE_RMII_10 = (e_ENET_IF_RMII | e_ENET_SPEED_10), /**< 10 Mbps RMII */ + e_ENET_MODE_RMII_100 = (e_ENET_IF_RMII | e_ENET_SPEED_100), /**< 100 Mbps RMII */ + e_ENET_MODE_SMII_10 = (e_ENET_IF_SMII | e_ENET_SPEED_10), /**< 10 Mbps SMII */ + e_ENET_MODE_SMII_100 = (e_ENET_IF_SMII | e_ENET_SPEED_100), /**< 100 Mbps SMII */ + e_ENET_MODE_GMII_1000 = (e_ENET_IF_GMII | e_ENET_SPEED_1000), /**< 1000 Mbps GMII */ + e_ENET_MODE_RGMII_10 = (e_ENET_IF_RGMII | e_ENET_SPEED_10), /**< 10 Mbps RGMII */ + e_ENET_MODE_RGMII_100 = (e_ENET_IF_RGMII | e_ENET_SPEED_100), /**< 100 Mbps RGMII */ + e_ENET_MODE_RGMII_1000 = (e_ENET_IF_RGMII | e_ENET_SPEED_1000), /**< 1000 Mbps RGMII */ + e_ENET_MODE_TBI_1000 = (e_ENET_IF_TBI | e_ENET_SPEED_1000), /**< 1000 Mbps TBI */ + e_ENET_MODE_RTBI_1000 = (e_ENET_IF_RTBI | e_ENET_SPEED_1000), /**< 1000 Mbps RTBI */ + e_ENET_MODE_SGMII_10 = (e_ENET_IF_SGMII | e_ENET_SPEED_10), /**< 10 Mbps SGMII */ + e_ENET_MODE_SGMII_100 = (e_ENET_IF_SGMII | e_ENET_SPEED_100), /**< 100 Mbps SGMII */ + e_ENET_MODE_SGMII_1000 = (e_ENET_IF_SGMII | e_ENET_SPEED_1000), /**< 1000 Mbps SGMII */ + e_ENET_MODE_XGMII_10000 = (e_ENET_IF_XGMII | e_ENET_SPEED_10000), /**< 10000 Mbps XGMII */ + e_ENET_MODE_QSGMII_1000 = (e_ENET_IF_QSGMII| e_ENET_SPEED_1000) /**< 1000 Mbps QSGMII */ +} e_EnetMode; + + +#define IS_ENET_MODE_VALID(mode) \ + (((mode) == e_ENET_MODE_MII_10 ) || \ + ((mode) == e_ENET_MODE_MII_100 ) || \ + ((mode) == e_ENET_MODE_RMII_10 ) || \ + ((mode) == e_ENET_MODE_RMII_100 ) || \ + ((mode) == e_ENET_MODE_SMII_10 ) || \ + ((mode) == e_ENET_MODE_SMII_100 ) || \ + ((mode) == e_ENET_MODE_GMII_1000 ) || \ + ((mode) == e_ENET_MODE_RGMII_10 ) || \ + ((mode) == e_ENET_MODE_RGMII_100 ) || \ + ((mode) == e_ENET_MODE_RGMII_1000 ) || \ + ((mode) == e_ENET_MODE_TBI_1000 ) || \ + ((mode) == e_ENET_MODE_RTBI_1000 ) || \ + ((mode) == e_ENET_MODE_SGMII_10 ) || \ + ((mode) == e_ENET_MODE_SGMII_100 ) || \ + ((mode) == e_ENET_MODE_SGMII_1000 ) || \ + ((mode) == e_ENET_MODE_XGMII_10000) || \ + ((mode) == e_ENET_MODE_QSGMII_1000)) + + +#define MAKE_ENET_MODE(_interface, _speed) (e_EnetMode)((_interface) | (_speed)) + +#define ENET_INTERFACE_FROM_MODE(mode) (e_EnetInterface)((mode) & 0xFFFF0000) +#define ENET_SPEED_FROM_MODE(mode) (e_EnetSpeed)((mode) & 0x0000FFFF) + + + +#endif /* __ENET_EXT_H */ + --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/inc/error_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/inc/error_ext.h @@ -0,0 +1,553 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 error_ext.h + + @Description Error definitions. +*//***************************************************************************/ + +#ifndef __ERROR_EXT_H +#define __ERROR_EXT_H + +#include "std_ext.h" +#include "xx_ext.h" +#include "core_ext.h" + +/**************************************************************************//** + @Group gen_id General Drivers Utilities + + @Description External routines. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group gen_error_id Errors, Events and Debug + + @Description External routines. + + @{ +*//***************************************************************************/ + +/****************************************************************************** +The scheme below provides the bits description for error codes: + + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 +| Reserved (should be zero) | Module ID | + + 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 +| Error Type | +******************************************************************************/ + +#define ERROR_CODE(_err) ((((uint32_t)_err) & 0x0000FFFF) | __ERR_MODULE__) + +#define GET_ERROR_TYPE(_errcode) ((_errcode) & 0x0000FFFF) + /**< Extract module code from error code (#t_Error) */ + +#define GET_ERROR_MODULE(_errcode) ((_errcode) & 0x00FF0000) + /**< Extract error type (#e_ErrorType) from + error code (#t_Error) */ + + +/**************************************************************************//** + @Description Error Type Enumeration +*//***************************************************************************/ +typedef enum e_ErrorType /* Comments / Associated Message Strings */ +{ /* ------------------------------------------------------------ */ + E_OK = 0 /* Never use "RETURN_ERROR" with E_OK; Use "return E_OK;" */ + + /* Invalid Function Calls */ + ,E_INVALID_STATE /**< The operation is not allowed in current module state. */ + /* String: none. */ + ,E_INVALID_OPERATION /**< The operation/command is invalid (unrecognized). */ + /* String: none. */ + ,E_NOT_SUPPORTED /**< The function is not supported or not implemented. */ + /* String: none. */ + ,E_NO_DEVICE /**< The associated device is not initialized. */ + /* String: none. */ + + /* Invalid Parameters */ + ,E_INVALID_HANDLE /**< Invalid handle of module or object. */ + /* String: none, unless the function takes in more than one + handle (in this case add the handle description) */ + ,E_INVALID_ID /**< Invalid module ID (usually enumeration or index). */ + /* String: none, unless the function takes in more than one + ID (in this case add the ID description) */ + ,E_NULL_POINTER /**< Unexpected NULL pointer. */ + /* String: pointer description. */ + ,E_INVALID_VALUE /**< Invalid value. */ + /* Use for non-enumeration parameters, and + only when other error types are not suitable. + String: parameter description + "(should be )", + e.g: "Maximum Rx buffer length (should be divisible by 8)", + "Channel number (should be even)". */ + ,E_INVALID_SELECTION /**< Invalid selection or mode. */ + /* Use for enumeration values, only when other error types + are not suitable. + String: parameter description. */ + ,E_INVALID_COMM_MODE /**< Invalid communication mode. */ + /* String: none, unless the function takes in more than one + communication mode indications (in this case add + parameter description). */ + ,E_INVALID_BYTE_ORDER /**< Invalid byte order. */ + /* String: none, unless the function takes in more than one + byte order indications (in this case add parameter + description). */ + ,E_INVALID_MEMORY_TYPE /**< Invalid memory type. */ + /* String: none, unless the function takes in more than one + memory types (in this case add memory description, + e.g: "Data memory", "Buffer descriptors memory"). */ + ,E_INVALID_INTR_QUEUE /**< Invalid interrupt queue. */ + /* String: none, unless the function takes in more than one + interrupt queues (in this case add queue description, + e.g: "Rx interrupt queue", "Tx interrupt queue"). */ + ,E_INVALID_PRIORITY /**< Invalid priority. */ + /* String: none, unless the function takes in more than one + priority (in this case add priority description). */ + ,E_INVALID_CLOCK /**< Invalid clock. */ + /* String: none, unless the function takes in more than one + clocks (in this case add clock description, + e.g: "Rx clock", "Tx clock"). */ + ,E_INVALID_RATE /**< Invalid rate value. */ + /* String: none, unless the function takes in more than one + rate values (in this case add rate description). */ + ,E_INVALID_ADDRESS /**< Invalid address. */ + /* String: description of the specific violation. */ + ,E_INVALID_BUS /**< Invalid bus type. */ + /* String: none, unless the function takes in more than one + bus parameters (in this case add bus description). */ + ,E_BUS_CONFLICT /**< Bus (or memory) type conflicts with another setting. */ + /* String: description of the conflicting buses/memories. */ + ,E_CONFLICT /**< Some setting conflicts with another setting. */ + /* String: description of the conflicting settings. */ + ,E_NOT_ALIGNED /**< Non-aligned address. */ + /* String: parameter description + "(should be %d-bytes aligned)", + e.g: "Rx data buffer (should be 32-bytes aligned)". */ + ,E_NOT_IN_RANGE /**< Parameter value is out of range. */ + /* Don't use this error for enumeration parameters. + String: parameter description + "(should be %d-%d)", + e.g: "Number of pad characters (should be 0-15)". */ + + /* Frame/Buffer Errors */ + ,E_INVALID_FRAME /**< Invalid frame object (NULL handle or missing buffers). */ + /* String: none. */ + ,E_EMPTY_FRAME /**< Frame object is empty (has no buffers). */ + /* String: none. */ + ,E_EMPTY_BUFFER /**< Buffer object is empty (no data, or zero data length). */ + /* String: none. */ + + /* Resource Errors */ + ,E_NO_MEMORY /**< External memory allocation failed. */ + /* String: description of item for which allocation failed. */ + ,E_NOT_FOUND /**< Requested resource or item was not found. */ + /* Use only when the resource/item is uniquely identified. + String: none, unless the operation is not the main goal + of the function (in this case add item description). */ + ,E_NOT_AVAILABLE /**< Resource is unavailable. */ + /* String: none, unless the operation is not the main goal + of the function (in this case add resource description). */ + ,E_ALREADY_EXISTS /**< Requested resource or item already exists. */ + /* Use when resource duplication or sharing are not allowed. + String: none, unless the operation is not the main goal + of the function (in this case add item description). */ + ,E_FULL /**< Resource is full. */ + /* String: none, unless the operation is not the main goal + of the function (in this case add resource description). */ + ,E_EMPTY /**< Resource is empty. */ + /* String: none, unless the operation is not the main goal + of the function (in this case add resource description). */ + ,E_BUSY /**< Resource or module is busy. */ + /* String: none, unless the operation is not the main goal + of the function (in this case add resource description). */ + ,E_ALREADY_FREE /**< Specified resource or item is already free or deleted. */ + /* String: none, unless the operation is not the main goal + of the function (in this case add item description). */ + + /* Read/Write Access Errors */ + ,E_READ_FAILED /**< Read access failed on memory/device. */ + /* String: none, or device name. */ + ,E_WRITE_FAILED /**< Write access failed on memory/device. */ + /* String: none, or device name. */ + + /* Send/Receive Failures */ + ,E_SEND_FAILED /**< Send operation failed on device. */ + /* String: none, or device name. */ + ,E_RECEIVE_FAILED /**< Receive operation failed on device. */ + /* String: none, or device name. */ + + /* Operation time-out */ + ,E_TIMEOUT /**< The operation timed out. */ + /* String: none. */ + + ,E_DUMMY_LAST /* NEVER USED */ + +} e_ErrorType; + + +/**************************************************************************//** + @Description Event Type Enumeration +*//***************************************************************************/ +typedef enum e_Event /* Comments / Associated Flags and Message Strings */ +{ /* ------------------------------------------------------------ */ + EV_NO_EVENT = 0 /**< No event; Never used. */ + + ,EV_RX_DISCARD /**< Received packet discarded (by the driver, and only for + complete packets); + Flags: error flags in case of error, zero otherwise. */ + /* String: reason for discard, e.g: "Error in frame", + "Disordered frame", "Incomplete frame", "No frame object". */ + ,EV_RX_ERROR /**< Receive error (by hardware/firmware); + Flags: usually status flags from the buffer descriptor. */ + /* String: none. */ + ,EV_TX_ERROR /**< Transmit error (by hardware/firmware); + Flags: usually status flags from the buffer descriptor. */ + /* String: none. */ + ,EV_NO_BUFFERS /**< System ran out of buffer objects; + Flags: zero. */ + /* String: none. */ + ,EV_NO_MB_FRAMES /**< System ran out of multi-buffer frame objects; + Flags: zero. */ + /* String: none. */ + ,EV_NO_SB_FRAMES /**< System ran out of single-buffer frame objects; + Flags: zero. */ + /* String: none. */ + ,EV_TX_QUEUE_FULL /**< Transmit queue is full; + Flags: zero. */ + /* String: none. */ + ,EV_RX_QUEUE_FULL /**< Receive queue is full; + Flags: zero. */ + /* String: none. */ + ,EV_INTR_QUEUE_FULL /**< Interrupt queue overflow; + Flags: zero. */ + /* String: none. */ + ,EV_NO_DATA_BUFFER /**< Data buffer allocation (from higher layer) failed; + Flags: zero. */ + /* String: none. */ + ,EV_OBJ_POOL_EMPTY /**< Objects pool is empty; + Flags: zero. */ + /* String: object description (name). */ + ,EV_BUS_ERROR /**< Illegal access on bus; + Flags: the address (if available) or bus identifier */ + /* String: bus/address/module description. */ + ,EV_PTP_TXTS_QUEUE_FULL /**< PTP Tx timestamps queue is full; + Flags: zero. */ + /* String: none. */ + ,EV_PTP_RXTS_QUEUE_FULL /**< PTP Rx timestamps queue is full; + Flags: zero. */ + /* String: none. */ + ,EV_DUMMY_LAST + +} e_Event; + + +/**************************************************************************//** + @Collection Debug Levels for Errors and Events + + The level description refers to errors only. + For events, classification is done by the user. + + The TRACE, INFO and WARNING levels are allowed only when using + the DBG macro, and are not allowed when using the error macros + (RETURN_ERROR or REPORT_ERROR). + @{ +*//***************************************************************************/ +#define REPORT_LEVEL_CRITICAL 1 /**< Crasher: Incorrect flow, NULL pointers/handles. */ +#define REPORT_LEVEL_MAJOR 2 /**< Cannot proceed: Invalid operation, parameters or + configuration. */ +#define REPORT_LEVEL_MINOR 3 /**< Recoverable problem: a repeating call with the same + parameters may be successful. */ +#define REPORT_LEVEL_WARNING 4 /**< Something is not exactly right, yet it is not an error. */ +#define REPORT_LEVEL_INFO 5 /**< Messages which may be of interest to user/programmer. */ +#define REPORT_LEVEL_TRACE 6 /**< Program flow messages. */ + +#define EVENT_DISABLED 0xFF /**< Disabled event (not reported at all) */ + +/* @} */ + + + +#define NO_MSG ("") + +#ifndef DEBUG_GLOBAL_LEVEL +#define DEBUG_GLOBAL_LEVEL REPORT_LEVEL_WARNING +#endif /* DEBUG_GLOBAL_LEVEL */ + +#ifndef ERROR_GLOBAL_LEVEL +#define ERROR_GLOBAL_LEVEL DEBUG_GLOBAL_LEVEL +#endif /* ERROR_GLOBAL_LEVEL */ + +#ifndef EVENT_GLOBAL_LEVEL +#define EVENT_GLOBAL_LEVEL REPORT_LEVEL_MINOR +#endif /* EVENT_GLOBAL_LEVEL */ + +#ifdef EVENT_LOCAL_LEVEL +#define EVENT_DYNAMIC_LEVEL EVENT_LOCAL_LEVEL +#else +#define EVENT_DYNAMIC_LEVEL EVENT_GLOBAL_LEVEL +#endif /* EVENT_LOCAL_LEVEL */ + + +#ifndef DEBUG_DYNAMIC_LEVEL +#define DEBUG_USING_STATIC_LEVEL + +#ifdef DEBUG_STATIC_LEVEL +#define DEBUG_DYNAMIC_LEVEL DEBUG_STATIC_LEVEL +#else +#define DEBUG_DYNAMIC_LEVEL DEBUG_GLOBAL_LEVEL +#endif /* DEBUG_STATIC_LEVEL */ + +#else /* DEBUG_DYNAMIC_LEVEL */ +#ifdef DEBUG_STATIC_LEVEL +#error "Please use either DEBUG_STATIC_LEVEL or DEBUG_DYNAMIC_LEVEL (not both)" +#else +int DEBUG_DYNAMIC_LEVEL = DEBUG_GLOBAL_LEVEL; +#endif /* DEBUG_STATIC_LEVEL */ +#endif /* !DEBUG_DYNAMIC_LEVEL */ + + +#ifndef ERROR_DYNAMIC_LEVEL + +#ifdef ERROR_STATIC_LEVEL +#define ERROR_DYNAMIC_LEVEL ERROR_STATIC_LEVEL +#else +#define ERROR_DYNAMIC_LEVEL ERROR_GLOBAL_LEVEL +#endif /* ERROR_STATIC_LEVEL */ + +#else /* ERROR_DYNAMIC_LEVEL */ +#ifdef ERROR_STATIC_LEVEL +#error "Please use either ERROR_STATIC_LEVEL or ERROR_DYNAMIC_LEVEL (not both)" +#else +int ERROR_DYNAMIC_LEVEL = ERROR_GLOBAL_LEVEL; +#endif /* ERROR_STATIC_LEVEL */ +#endif /* !ERROR_DYNAMIC_LEVEL */ + +#define PRINT_FORMAT "[CPU%02d, %s:%d %s]" +#define PRINT_FMT_PARAMS CORE_GetId(), __FILE__, __LINE__, __FUNCTION__ + +#if (!(defined(DEBUG_ERRORS)) || (DEBUG_ERRORS == 0)) +/* No debug/error/event messages at all */ +#define DBG(_level, _vmsg) + +#define REPORT_ERROR(_level, _err, _vmsg) + +#define RETURN_ERROR(_level, _err, _vmsg) \ + return ERROR_CODE(_err) + +#if (REPORT_EVENTS > 0) + +#define REPORT_EVENT(_ev, _appId, _flg, _vmsg) \ + do { \ + if (_ev##_LEVEL <= EVENT_DYNAMIC_LEVEL) { \ + XX_EventById((uint32_t)(_ev), (t_Handle)(_appId), (uint16_t)(_flg), NO_MSG); \ + } \ + } while (0) + +#else + +#define REPORT_EVENT(_ev, _appId, _flg, _vmsg) + +#endif /* (REPORT_EVENTS > 0) */ + + +#else /* DEBUG_ERRORS > 0 */ + +extern const char *dbgLevelStrings[]; +extern const char *errTypeStrings[]; +extern const char *moduleStrings[]; +#if (REPORT_EVENTS > 0) +extern const char *eventStrings[]; +#endif /* (REPORT_EVENTS > 0) */ + + +#if ((defined(DEBUG_USING_STATIC_LEVEL)) && (DEBUG_DYNAMIC_LEVEL < REPORT_LEVEL_WARNING)) +/* No need for DBG macro - debug level is higher anyway */ +#define DBG(_level, _vmsg) +#else +#define DBG(_level, _vmsg) \ + do { \ + if (REPORT_LEVEL_##_level <= DEBUG_DYNAMIC_LEVEL) { \ + XX_Print("> %s (%s) " PRINT_FORMAT ": ", \ + dbgLevelStrings[REPORT_LEVEL_##_level - 1], \ + moduleStrings[__ERR_MODULE__ >> 16], \ + PRINT_FMT_PARAMS); \ + XX_Print _vmsg; \ + XX_Print("\r\n"); \ + } \ + } while (0) +#endif /* (defined(DEBUG_USING_STATIC_LEVEL) && (DEBUG_DYNAMIC_LEVEL < WARNING)) */ + + +#define REPORT_ERROR(_level, _err, _vmsg) \ + do { \ + if (REPORT_LEVEL_##_level <= ERROR_DYNAMIC_LEVEL) { \ + XX_Print("! %s %s Error " PRINT_FORMAT ": %s; ", \ + dbgLevelStrings[REPORT_LEVEL_##_level - 1], \ + moduleStrings[__ERR_MODULE__ >> 16], \ + PRINT_FMT_PARAMS, \ + errTypeStrings[(GET_ERROR_TYPE(_err) - E_OK - 1)]); \ + XX_Print _vmsg; \ + XX_Print("\r\n"); \ + } \ + } while (0) + + +#define RETURN_ERROR(_level, _err, _vmsg) \ + do { \ + REPORT_ERROR(_level, (_err), _vmsg); \ + return ERROR_CODE(_err); \ + } while (0) + + +#if (REPORT_EVENTS > 0) + +#define REPORT_EVENT(_ev, _appId, _flg, _vmsg) \ + do { \ + if (_ev##_LEVEL <= EVENT_DYNAMIC_LEVEL) { \ + XX_Print("~ %s %s Event " PRINT_FORMAT ": %s (flags: 0x%04x); ", \ + dbgLevelStrings[_ev##_LEVEL - 1], \ + moduleStrings[__ERR_MODULE__ >> 16], \ + PRINT_FMT_PARAMS, \ + eventStrings[((_ev) - EV_NO_EVENT - 1)], \ + (uint16_t)(_flg)); \ + XX_Print _vmsg; \ + XX_Print("\r\n"); \ + XX_EventById((uint32_t)(_ev), (t_Handle)(_appId), (uint16_t)(_flg), NO_MSG); \ + } \ + } while (0) + +#else /* not REPORT_EVENTS */ + +#define REPORT_EVENT(_ev, _appId, _flg, _vmsg) + +#endif /* (REPORT_EVENTS > 0) */ + +#endif /* (DEBUG_ERRORS > 0) */ + + +/**************************************************************************//** + @Function ASSERT_COND + + @Description Assertion macro. + + @Param[in] _cond - The condition being checked, in positive form; + Failure of the condition triggers the assert. +*//***************************************************************************/ +#ifdef DISABLE_ASSERTIONS +#define ASSERT_COND(_cond) +#else +#define ASSERT_COND(_cond) \ + do { \ + if (!(_cond)) { \ + XX_Print("*** ASSERT_COND failed " PRINT_FORMAT "\r\n", \ + PRINT_FMT_PARAMS); \ + XX_Exit(1); \ + } \ + } while (0) +#endif /* DISABLE_ASSERTIONS */ + + +#ifdef DISABLE_INIT_PARAMETERS_CHECK + +#define CHECK_INIT_PARAMETERS(handle, f_check) +#define CHECK_INIT_PARAMETERS_RETURN_VALUE(handle, f_check, retval) + +#else + +#define CHECK_INIT_PARAMETERS(handle, f_check) \ + do { \ + t_Error err = f_check(handle); \ + if (err != E_OK) { \ + RETURN_ERROR(MAJOR, err, NO_MSG); \ + } \ + } while (0) + +#define CHECK_INIT_PARAMETERS_RETURN_VALUE(handle, f_check, retval) \ + do { \ + t_Error err = f_check(handle); \ + if (err != E_OK) { \ + REPORT_ERROR(MAJOR, err, NO_MSG); \ + return (retval); \ + } \ + } while (0) + +#endif /* DISABLE_INIT_PARAMETERS_CHECK */ + +#ifdef DISABLE_SANITY_CHECKS + +#define SANITY_CHECK_RETURN_ERROR(_cond, _err) +#define SANITY_CHECK_RETURN_VALUE(_cond, _err, retval) +#define SANITY_CHECK_RETURN(_cond, _err) +#define SANITY_CHECK_EXIT(_cond, _err) + +#else /* DISABLE_SANITY_CHECKS */ + +#define SANITY_CHECK_RETURN_ERROR(_cond, _err) \ + do { \ + if (!(_cond)) { \ + RETURN_ERROR(CRITICAL, (_err), NO_MSG); \ + } \ + } while (0) + +#define SANITY_CHECK_RETURN_VALUE(_cond, _err, retval) \ + do { \ + if (!(_cond)) { \ + REPORT_ERROR(CRITICAL, (_err), NO_MSG); \ + return (retval); \ + } \ + } while (0) + +#define SANITY_CHECK_RETURN(_cond, _err) \ + do { \ + if (!(_cond)) { \ + REPORT_ERROR(CRITICAL, (_err), NO_MSG); \ + return; \ + } \ + } while (0) + +#define SANITY_CHECK_EXIT(_cond, _err) \ + do { \ + if (!(_cond)) { \ + REPORT_ERROR(CRITICAL, (_err), NO_MSG); \ + XX_Exit(1); \ + } \ + } while (0) + +#endif /* DISABLE_SANITY_CHECKS */ + +/** @} */ /* end of Debug/error Utils group */ + +/** @} */ /* end of General Utils group */ + +#endif /* __ERROR_EXT_H */ + + --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/inc/etc/list_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/inc/etc/list_ext.h @@ -0,0 +1,357 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 list_ext.h + + @Description External prototypes for list.c +*//***************************************************************************/ + +#ifndef __LIST_EXT_H +#define __LIST_EXT_H + + +#include "std_ext.h" + + +/**************************************************************************//** + @Group etc_id Utility Library Application Programming Interface + + @Description External routines. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group list_id List + + @Description List module functions,definitions and enums. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Description List structure. +*//***************************************************************************/ +typedef struct List +{ + struct List *p_Next; /**< A pointer to the next list object */ + struct List *p_Prev; /**< A pointer to the previous list object */ +} t_List; + + +/**************************************************************************//** + @Function LIST_FIRST/LIST_LAST/LIST_NEXT/LIST_PREV + + @Description Macro to get first/last/next/previous entry in a list. + + @Param[in] p_List - A pointer to a list. +*//***************************************************************************/ +#define LIST_FIRST(p_List) (p_List)->p_Next +#define LIST_LAST(p_List) (p_List)->p_Prev +#define LIST_NEXT LIST_FIRST +#define LIST_PREV LIST_LAST + + +/**************************************************************************//** + @Function LIST_INIT + + @Description Macro for initialization of a list struct. + + @Param[in] lst - The t_List object to initialize. +*//***************************************************************************/ +#define LIST_INIT(lst) {&(lst), &(lst)} + + +/**************************************************************************//** + @Function LIST + + @Description Macro to declare of a list. + + @Param[in] listName - The list object name. +*//***************************************************************************/ +#define LIST(listName) t_List listName = LIST_INIT(listName) + + +/**************************************************************************//** + @Function INIT_LIST + + @Description Macro to initialize a list pointer. + + @Param[in] p_List - The list pointer. +*//***************************************************************************/ +#define INIT_LIST(p_List) LIST_FIRST(p_List) = LIST_LAST(p_List) = (p_List) + + +/**************************************************************************//** + @Function LIST_OBJECT + + @Description Macro to get the struct (object) for this entry. + + @Param[in] type - The type of the struct (object) this list is embedded in. + @Param[in] member - The name of the t_List object within the struct. + + @Return The structure pointer for this entry. +*//***************************************************************************/ +#define MEMBER_OFFSET(type, member) (PTR_TO_UINT(&((type *)0)->member)) +#define LIST_OBJECT(p_List, type, member) \ + ((type *)((char *)(p_List)-MEMBER_OFFSET(type, member))) + + +/**************************************************************************//** + @Function LIST_FOR_EACH + + @Description Macro to iterate over a list. + + @Param[in] p_Pos - A pointer to a list to use as a loop counter. + @Param[in] p_Head - A pointer to the head for your list pointer. + + @Cautions You can't delete items with this routine. + For deletion use LIST_FOR_EACH_SAFE(). +*//***************************************************************************/ +#define LIST_FOR_EACH(p_Pos, p_Head) \ + for (p_Pos = LIST_FIRST(p_Head); p_Pos != (p_Head); p_Pos = LIST_NEXT(p_Pos)) + + +/**************************************************************************//** + @Function LIST_FOR_EACH_SAFE + + @Description Macro to iterate over a list safe against removal of list entry. + + @Param[in] p_Pos - A pointer to a list to use as a loop counter. + @Param[in] p_Tmp - Another pointer to a list to use as temporary storage. + @Param[in] p_Head - A pointer to the head for your list pointer. +*//***************************************************************************/ +#define LIST_FOR_EACH_SAFE(p_Pos, p_Tmp, p_Head) \ + for (p_Pos = LIST_FIRST(p_Head), p_Tmp = LIST_FIRST(p_Pos); \ + p_Pos != (p_Head); \ + p_Pos = p_Tmp, p_Tmp = LIST_NEXT(p_Pos)) + + +/**************************************************************************//** + @Function LIST_FOR_EACH_OBJECT_SAFE + + @Description Macro to iterate over list of given type safely. + + @Param[in] p_Pos - A pointer to a list to use as a loop counter. + @Param[in] p_Tmp - Another pointer to a list to use as temporary storage. + @Param[in] type - The type of the struct this is embedded in. + @Param[in] p_Head - A pointer to the head for your list pointer. + @Param[in] member - The name of the list_struct within the struct. + + @Cautions You can't delete items with this routine. + For deletion use LIST_FOR_EACH_SAFE(). +*//***************************************************************************/ +#define LIST_FOR_EACH_OBJECT_SAFE(p_Pos, p_Tmp, p_Head, type, member) \ + for (p_Pos = LIST_OBJECT(LIST_FIRST(p_Head), type, member), \ + p_Tmp = LIST_OBJECT(LIST_FIRST(&p_Pos->member), type, member); \ + &p_Pos->member != (p_Head); \ + p_Pos = p_Tmp, \ + p_Tmp = LIST_OBJECT(LIST_FIRST(&p_Pos->member), type, member)) + +/**************************************************************************//** + @Function LIST_FOR_EACH_OBJECT + + @Description Macro to iterate over list of given type. + + @Param[in] p_Pos - A pointer to a list to use as a loop counter. + @Param[in] type - The type of the struct this is embedded in. + @Param[in] p_Head - A pointer to the head for your list pointer. + @Param[in] member - The name of the list_struct within the struct. + + @Cautions You can't delete items with this routine. + For deletion use LIST_FOR_EACH_SAFE(). +*//***************************************************************************/ +#define LIST_FOR_EACH_OBJECT(p_Pos, type, p_Head, member) \ + for (p_Pos = LIST_OBJECT(LIST_FIRST(p_Head), type, member); \ + &p_Pos->member != (p_Head); \ + p_Pos = LIST_OBJECT(LIST_FIRST(&(p_Pos->member)), type, member)) + + +/**************************************************************************//** + @Function LIST_Add + + @Description Add a new entry to a list. + + Insert a new entry after the specified head. + This is good for implementing stacks. + + @Param[in] p_New - A pointer to a new list entry to be added. + @Param[in] p_Head - A pointer to a list head to add it after. + + @Return none. +*//***************************************************************************/ +static __inline__ void LIST_Add(t_List *p_New, t_List *p_Head) +{ + LIST_PREV(LIST_NEXT(p_Head)) = p_New; + LIST_NEXT(p_New) = LIST_NEXT(p_Head); + LIST_PREV(p_New) = p_Head; + LIST_NEXT(p_Head) = p_New; +} + + +/**************************************************************************//** + @Function LIST_AddToTail + + @Description Add a new entry to a list. + + Insert a new entry before the specified head. + This is useful for implementing queues. + + @Param[in] p_New - A pointer to a new list entry to be added. + @Param[in] p_Head - A pointer to a list head to add it after. + + @Return none. +*//***************************************************************************/ +static __inline__ void LIST_AddToTail(t_List *p_New, t_List *p_Head) +{ + LIST_NEXT(LIST_PREV(p_Head)) = p_New; + LIST_PREV(p_New) = LIST_PREV(p_Head); + LIST_NEXT(p_New) = p_Head; + LIST_PREV(p_Head) = p_New; +} + + +/**************************************************************************//** + @Function LIST_Del + + @Description Deletes entry from a list. + + @Param[in] p_Entry - A pointer to the element to delete from the list. + + @Return none. + + @Cautions LIST_IsEmpty() on entry does not return true after this, + the entry is in an undefined state. +*//***************************************************************************/ +static __inline__ void LIST_Del(t_List *p_Entry) +{ + LIST_PREV(LIST_NEXT(p_Entry)) = LIST_PREV(p_Entry); + LIST_NEXT(LIST_PREV(p_Entry)) = LIST_NEXT(p_Entry); +} + + +/**************************************************************************//** + @Function LIST_DelAndInit + + @Description Deletes entry from list and reinitialize it. + + @Param[in] p_Entry - A pointer to the element to delete from the list. + + @Return none. +*//***************************************************************************/ +static __inline__ void LIST_DelAndInit(t_List *p_Entry) +{ + LIST_Del(p_Entry); + INIT_LIST(p_Entry); +} + + +/**************************************************************************//** + @Function LIST_Move + + @Description Delete from one list and add as another's head. + + @Param[in] p_Entry - A pointer to the list entry to move. + @Param[in] p_Head - A pointer to the list head that will precede our entry. + + @Return none. +*//***************************************************************************/ +static __inline__ void LIST_Move(t_List *p_Entry, t_List *p_Head) +{ + LIST_Del(p_Entry); + LIST_Add(p_Entry, p_Head); +} + + +/**************************************************************************//** + @Function LIST_MoveToTail + + @Description Delete from one list and add as another's tail. + + @Param[in] p_Entry - A pointer to the entry to move. + @Param[in] p_Head - A pointer to the list head that will follow our entry. + + @Return none. +*//***************************************************************************/ +static __inline__ void LIST_MoveToTail(t_List *p_Entry, t_List *p_Head) +{ + LIST_Del(p_Entry); + LIST_AddToTail(p_Entry, p_Head); +} + + +/**************************************************************************//** + @Function LIST_IsEmpty + + @Description Tests whether a list is empty. + + @Param[in] p_List - A pointer to the list to test. + + @Return 1 if the list is empty, 0 otherwise. +*//***************************************************************************/ +static __inline__ int LIST_IsEmpty(t_List *p_List) +{ + return (LIST_FIRST(p_List) == p_List); +} + + +/**************************************************************************//** + @Function LIST_Append + + @Description Join two lists. + + @Param[in] p_NewList - A pointer to the new list to add. + @Param[in] p_Head - A pointer to the place to add it in the first list. + + @Return none. +*//***************************************************************************/ +void LIST_Append(t_List *p_NewList, t_List *p_Head); + + +/**************************************************************************//** + @Function LIST_NumOfObjs + + @Description Counts number of objects in the list + + @Param[in] p_List - A pointer to the list which objects are to be counted. + + @Return Number of objects in the list. +*//***************************************************************************/ +int LIST_NumOfObjs(t_List *p_List); + +/** @} */ /* end of list_id group */ +/** @} */ /* end of etc_id group */ + + +#endif /* __LIST_EXT_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/inc/etc/mem_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/inc/etc/mem_ext.h @@ -0,0 +1,317 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 mem_ext.h + + @Description External prototypes for the memory manager object +*//***************************************************************************/ + +#ifndef __MEM_EXT_H +#define __MEM_EXT_H + +#include "std_ext.h" +#include "part_ext.h" + + +/**************************************************************************//** + @Group etc_id Utility Library Application Programming Interface + + @Description External routines. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group mem_id Slab Memory Manager + + @Description Slab Memory Manager module functions, definitions and enums. + + @{ +*//***************************************************************************/ + +/* Each block is of the following structure: + * + * + * +-----------+----------+---------------------------+-----------+-----------+ + * | Alignment | Prefix | Data | Postfix | Alignment | + * | field | field | field | field | Padding | + * | | | | | | + * +-----------+----------+---------------------------+-----------+-----------+ + * and at the beginning of all bytes, an additional optional padding might reside + * to ensure that the first blocks data field is aligned as requested. + */ + + +#define MEM_MAX_NAME_LENGTH 8 + +/**************************************************************************//* + @Description Memory Segment structure +*//***************************************************************************/ + +typedef struct +{ + char name[MEM_MAX_NAME_LENGTH]; + /* The segment's name */ + uint8_t **p_Bases; /* Base addresses of the segments */ + uint8_t **p_BlocksStack; /* Array of pointers to blocks */ + t_Handle h_Spinlock; + uint16_t dataSize; /* Size of each data block */ + uint16_t prefixSize; /* How many bytes to reserve before the data */ + uint16_t postfixSize; /* How many bytes to reserve after the data */ + uint16_t alignment; /* Requested alignment for the data field */ + int allocOwner; /* Memory allocation owner */ + uint32_t getFailures; /* Number of times get failed */ + uint32_t num; /* Number of blocks in segment */ + uint32_t current; /* Current block */ + bool consecutiveMem; /* Allocate consecutive data blocks memory */ +#ifdef DEBUG_MEM_LEAKS + void *p_MemDbg; /* MEM debug database (MEM leaks detection) */ + uint32_t blockOffset; + uint32_t blockSize; +#endif /* DEBUG_MEM_LEAKS */ +} t_MemorySegment; + + + +/**************************************************************************//** + @Function MEM_Init + + @Description Create a new memory segment. + + @Param[in] name - Name of memory partition. + @Param[in] p_Handle - Handle to new segment is returned through here. + @Param[in] num - Number of blocks in new segment. + @Param[in] dataSize - Size of blocks in segment. + @Param[in] prefixSize - How many bytes to allocate before the data. + @Param[in] postfixSize - How many bytes to allocate after the data. + @Param[in] alignment - Requested alignment for data field (in bytes). + + @Return E_OK - success, E_NO_MEMORY - out of memory. +*//***************************************************************************/ +t_Error MEM_Init(char name[], + t_Handle *p_Handle, + uint32_t num, + uint16_t dataSize, + uint16_t prefixSize, + uint16_t postfixSize, + uint16_t alignment); + +/**************************************************************************//** + @Function MEM_InitSmart + + @Description Create a new memory segment. + + @Param[in] name - Name of memory partition. + @Param[in] p_Handle - Handle to new segment is returned through here. + @Param[in] num - Number of blocks in new segment. + @Param[in] dataSize - Size of blocks in segment. + @Param[in] prefixSize - How many bytes to allocate before the data. + @Param[in] postfixSize - How many bytes to allocate after the data. + @Param[in] alignment - Requested alignment for data field (in bytes). + @Param[in] memPartitionId - Memory partition ID for allocation. + @Param[in] consecutiveMem - Whether to allocate the memory blocks + continuously or not. + + @Return E_OK - success, E_NO_MEMORY - out of memory. +*//***************************************************************************/ +t_Error MEM_InitSmart(char name[], + t_Handle *p_Handle, + uint32_t num, + uint16_t dataSize, + uint16_t prefixSize, + uint16_t postfixSize, + uint16_t alignment, + uint8_t memPartitionId, + bool consecutiveMem); + +/**************************************************************************//** + @Function MEM_InitByAddress + + @Description Create a new memory segment with a specified base address. + + @Param[in] name - Name of memory partition. + @Param[in] p_Handle - Handle to new segment is returned through here. + @Param[in] num - Number of blocks in new segment. + @Param[in] dataSize - Size of blocks in segment. + @Param[in] prefixSize - How many bytes to allocate before the data. + @Param[in] postfixSize - How many bytes to allocate after the data. + @Param[in] alignment - Requested alignment for data field (in bytes). + @Param[in] address - The required base address. + + @Return E_OK - success, E_NO_MEMORY - out of memory. + *//***************************************************************************/ +t_Error MEM_InitByAddress(char name[], + t_Handle *p_Handle, + uint32_t num, + uint16_t dataSize, + uint16_t prefixSize, + uint16_t postfixSize, + uint16_t alignment, + uint8_t *address); + +/**************************************************************************//** + @Function MEM_Free + + @Description Free a specific memory segment. + + @Param[in] h_Mem - Handle to memory segment. + + @Return None. +*//***************************************************************************/ +void MEM_Free(t_Handle h_Mem); + +/**************************************************************************//** + @Function MEM_Get + + @Description Get a block of memory from a segment. + + @Param[in] h_Mem - Handle to memory segment. + + @Return Pointer to new memory block on success,0 otherwise. +*//***************************************************************************/ +void * MEM_Get(t_Handle h_Mem); + +/**************************************************************************//** + @Function MEM_GetN + + @Description Get up to N blocks of memory from a segment. + + The blocks are assumed to be of a fixed size (one size per segment). + + @Param[in] h_Mem - Handle to memory segment. + @Param[in] num - Number of blocks to allocate. + @Param[out] array - Array of at least num pointers to which the addresses + of the allocated blocks are written. + + @Return The number of blocks actually allocated. + + @Cautions Interrupts are disabled for all of the allocation loop. + Although this loop is very short for each block (several machine + instructions), you should not allocate a very large number + of blocks via this routine. +*//***************************************************************************/ +uint16_t MEM_GetN(t_Handle h_Mem, uint32_t num, void *array[]); + +/**************************************************************************//** + @Function MEM_Put + + @Description Put a block of memory back to a segment. + + @Param[in] h_Mem - Handle to memory segment. + @Param[in] p_Block - The block to return. + + @Return Pointer to new memory block on success,0 otherwise. +*//***************************************************************************/ +t_Error MEM_Put(t_Handle h_Mem, void *p_Block); + +/**************************************************************************//** + @Function MEM_ComputePartitionSize + + @Description calculate a tight upper boundary of the size of a partition with + given attributes. + + The returned value is suitable if one wants to use MEM_InitByAddress(). + + @Param[in] num - The number of blocks in the segment. + @Param[in] dataSize - Size of block to get. + @Param[in] prefixSize - The prefix size + @Param postfixSize - The postfix size + @Param[in] alignment - The requested alignment value (in bytes) + + @Return The memory block size a segment with the given attributes needs. +*//***************************************************************************/ +uint32_t MEM_ComputePartitionSize(uint32_t num, + uint16_t dataSize, + uint16_t prefixSize, + uint16_t postfixSize, + uint16_t alignment); + +#ifdef DEBUG_MEM_LEAKS +#if !(defined(__MWERKS__) && (__dest_os == __ppc_eabi)) +#error "Memory-Leaks-Debug option is supported only for freescale CodeWarrior" +#endif /* !(defined(__MWERKS__) && ... */ + +/**************************************************************************//** + @Function MEM_CheckLeaks + + @Description Report MEM object leaks. + + This routine is automatically called by the MEM_Free() routine, + but it can also be invoked while the MEM object is alive. + + @Param[in] h_Mem - Handle to memory segment. + + @Return None. +*//***************************************************************************/ +void MEM_CheckLeaks(t_Handle h_Mem); + +#else /* not DEBUG_MEM_LEAKS */ +#define MEM_CheckLeaks(h_Mem) +#endif /* not DEBUG_MEM_LEAKS */ + +/**************************************************************************//** + @Description Get base of MEM +*//***************************************************************************/ +#define MEM_GetBase(h_Mem) ((t_MemorySegment *)(h_Mem))->p_Bases[0] + +/**************************************************************************//** + @Description Get size of MEM block +*//***************************************************************************/ +#define MEM_GetSize(h_Mem) ((t_MemorySegment *)(h_Mem))->dataSize + +/**************************************************************************//** + @Description Get prefix size of MEM block +*//***************************************************************************/ +#define MEM_GetPrefixSize(h_Mem) ((t_MemorySegment *)(h_Mem))->prefixSize + +/**************************************************************************//** + @Description Get postfix size of MEM block +*//***************************************************************************/ +#define MEM_GetPostfixSize(h_Mem) ((t_MemorySegment *)(h_Mem))->postfixSize + +/**************************************************************************//** + @Description Get alignment of MEM block (in bytes) +*//***************************************************************************/ +#define MEM_GetAlignment(h_Mem) ((t_MemorySegment *)(h_Mem))->alignment + +/**************************************************************************//** + @Description Get the number of blocks in the segment +*//***************************************************************************/ +#define MEM_GetNumOfBlocks(h_Mem) ((t_MemorySegment *)(h_Mem))->num + +/** @} */ /* end of MEM group */ +/** @} */ /* end of etc_id group */ + + +#endif /* __MEM_EXT_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/inc/etc/memcpy_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/inc/etc/memcpy_ext.h @@ -0,0 +1,173 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 memcpy_ext.h + + @Description Efficient functions for copying and setting blocks of memory. +*//***************************************************************************/ + +#ifndef __MEMCPY_EXT_H +#define __MEMCPY_EXT_H + +#include "std_ext.h" + + +/**************************************************************************//** + @Group etc_id Utility Library Application Programming Interface + + @Description External routines. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group mem_cpy Memory Copy + + @Description Memory Copy module functions,definitions and enums. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Function MemCpy32 + + @Description Copies one memory buffer into another one in 4-byte chunks! + Which should be more efficient than byte by byte. + + For large buffers (over 60 bytes) this function is about 4 times + more efficient than the trivial memory copy. For short buffers + it is reduced to the trivial copy and may be a bit worse. + + @Param[in] pDst - The address of the destination buffer. + @Param[in] pSrc - The address of the source buffer. + @Param[in] size - The number of bytes that will be copied from pSrc to pDst. + + @Return pDst (the address of the destination buffer). + + @Cautions There is no parameter or boundary checking! It is up to the user + to supply non-null parameters as source & destination and size + that actually fits into the destination buffer. +*//***************************************************************************/ +void * MemCpy32(void* pDst,void* pSrc, uint32_t size); +void * IO2IOCpy32(void* pDst,void* pSrc, uint32_t size); +void * IO2MemCpy32(void* pDst,void* pSrc, uint32_t size); +void * Mem2IOCpy32(void* pDst,void* pSrc, uint32_t size); + +/**************************************************************************//** + @Function MemCpy64 + + @Description Copies one memory buffer into another one in 8-byte chunks! + Which should be more efficient than byte by byte. + + For large buffers (over 60 bytes) this function is about 8 times + more efficient than the trivial memory copy. For short buffers + it is reduced to the trivial copy and may be a bit worse. + + Some testing suggests that MemCpy32() preforms better than + MemCpy64() over small buffers. On average they break even at + 100 byte buffers. For buffers larger than that MemCpy64 is + superior. + + @Param[in] pDst - The address of the destination buffer. + @Param[in] pSrc - The address of the source buffer. + @Param[in] size - The number of bytes that will be copied from pSrc to pDst. + + @Return pDst (the address of the destination buffer). + + @Cautions There is no parameter or boundary checking! It is up to the user + to supply non null parameters as source & destination and size + that actually fits into their buffer. + + Do not use under Linux. +*//***************************************************************************/ +void * MemCpy64(void* pDst,void* pSrc, uint32_t size); + +/**************************************************************************//** + @Function MemSet32 + + @Description Sets all bytes of a memory buffer to a specific value, in + 4-byte chunks. + + @Param[in] pDst - The address of the destination buffer. + @Param[in] val - Value to set destination bytes to. + @Param[in] size - The number of bytes that will be set to val. + + @Return pDst (the address of the destination buffer). + + @Cautions There is no parameter or boundary checking! It is up to the user + to supply non null parameter as destination and size + that actually fits into the destination buffer. +*//***************************************************************************/ +void * MemSet32(void* pDst, uint8_t val, uint32_t size); +void * IOMemSet32(void* pDst, uint8_t val, uint32_t size); + +/**************************************************************************//** + @Function MemSet64 + + @Description Sets all bytes of a memory buffer to a specific value, in + 8-byte chunks. + + @Param[in] pDst - The address of the destination buffer. + @Param[in] val - Value to set destination bytes to. + @Param[in] size - The number of bytes that will be set to val. + + @Return pDst (the address of the destination buffer). + + @Cautions There is no parameter or boundary checking! It is up to the user + to supply non null parameter as destination and size + that actually fits into the destination buffer. +*//***************************************************************************/ +void * MemSet64(void* pDst, uint8_t val, uint32_t size); + +/**************************************************************************//** + @Function MemDisp + + @Description Displays a block of memory in chunks of 32 bits. + + @Param[in] addr - The address of the memory to display. + @Param[in] size - The number of bytes that will be displayed. + + @Return None. + + @Cautions There is no parameter or boundary checking! It is up to the user + to supply non null parameter as destination and size + that actually fits into the destination buffer. +*//***************************************************************************/ +void MemDisp(uint8_t *addr, int size); + +/** @} */ /* end of mem_cpy group */ +/** @} */ /* end of etc_id group */ + + +#endif /* __MEMCPY_EXT_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/inc/etc/mm_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/inc/etc/mm_ext.h @@ -0,0 +1,300 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 mm_ext.h + + @Description Memory Manager Application Programming Interface +*//***************************************************************************/ +#ifndef __MM_EXT +#define __MM_EXT + +#include "std_ext.h" + +#define MM_MAX_ALIGNMENT 20 /* Alignments from 2 to 128 are available + where maximum alignment defined as + MM_MAX_ALIGNMENT power of 2 */ + +#define MM_MAX_NAME_LEN 32 + +/**************************************************************************//** + @Group etc_id Utility Library Application Programming Interface + + @Description External routines. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group mm_grp Flexible Memory Manager + + @Description Flexible Memory Manager module functions,definitions and enums. + (All of the following functions,definitions and enums can be found in mm_ext.h) + + @{ +*//***************************************************************************/ + + +/**************************************************************************//** + @Function MM_Init + + @Description Initializes a new MM object. + + It initializes a new memory block consisting of base address + and size of the available memory by calling to MemBlock_Init + routine. It is also initializes a new free block for each + by calling FreeBlock_Init routine, which is pointed to + the almost all memory started from the required alignment + from the base address and to the end of the memory. + The handle to the new MM object is returned via "MM" + argument (passed by reference). + + @Param[in] h_MM - Handle to the MM object. + @Param[in] base - Base address of the MM. + @Param[in] size - Size of the MM. + + @Return E_OK is returned on success. E_NOMEMORY is returned if the new MM object or a new free block can not be initialized. +*//***************************************************************************/ +t_Error MM_Init(t_Handle *h_MM, uint64_t base, uint64_t size); + +/**************************************************************************//** + @Function MM_Get + + @Description Allocates a block of memory according to the given size and the alignment. + + The Alignment argument tells from which + free list allocate a block of memory. 2^alignment indicates + the alignment that the base address of the allocated block + should have. So, the only values 1, 2, 4, 8, 16, 32 and 64 + are available for the alignment argument. + The routine passes through the specific free list of free + blocks and seeks for a first block that have anough memory + that is required (best fit). + After the block is found and data is allocated, it calls + the internal MM_CutFree routine to update all free lists + do not include a just allocated block. Of course, each + free list contains a free blocks with the same alignment. + It is also creates a busy block that holds + information about an allocated block. + + @Param[in] h_MM - Handle to the MM object. + @Param[in] size - Size of the MM. + @Param[in] alignment - Index as a power of two defines a required + alignment (in bytes); Should be 1, 2, 4, 8, 16, 32 or 64 + @Param[in] name - The name that specifies an allocated block. + + @Return base address of an allocated block ILLEGAL_BASE if can't allocate a block +*//***************************************************************************/ +uint64_t MM_Get(t_Handle h_MM, uint64_t size, uint64_t alignment, char *name); + +/**************************************************************************//** + @Function MM_GetBase + + @Description Gets the base address of the required MM objects. + + @Param[in] h_MM - Handle to the MM object. + + @Return base address of the block. +*//***************************************************************************/ +uint64_t MM_GetBase(t_Handle h_MM); + +/**************************************************************************//** + @Function MM_GetForce + + @Description Force memory allocation. + + It means to allocate a block of memory of the given + size from the given base address. + The routine checks if the required block can be allocated + (that is it is free) and then, calls the internal MM_CutFree + routine to update all free lists do not include that block. + + @Param[in] h_MM - Handle to the MM object. + @Param[in] base - Base address of the MM. + @Param[in] size - Size of the MM. + @Param[in] name - Name that specifies an allocated block. + + @Return base address of an allocated block, ILLEGAL_BASE if can't allocate a block. +*//***************************************************************************/ +uint64_t MM_GetForce(t_Handle h_MM, uint64_t base, uint64_t size, char *name); + +/**************************************************************************//** + @Function MM_GetForceMin + + @Description Allocates a block of memory according to the given size, the alignment and minimum base address. + + The Alignment argument tells from which + free list allocate a block of memory. 2^alignment indicates + the alignment that the base address of the allocated block + should have. So, the only values 1, 2, 4, 8, 16, 32 and 64 + are available for the alignment argument. + The minimum baser address forces the location of the block + to be from a given address onward. + The routine passes through the specific free list of free + blocks and seeks for the first base address equal or smaller + than the required minimum address and end address larger than + than the required base + its size - i.e. that may contain + the required block. + After the block is found and data is allocated, it calls + the internal MM_CutFree routine to update all free lists + do not include a just allocated block. Of course, each + free list contains a free blocks with the same alignment. + It is also creates a busy block that holds + information about an allocated block. + + @Param[in] h_MM - Handle to the MM object. + @Param[in] size - Size of the MM. + @Param[in] alignment - Index as a power of two defines a required + alignment (in bytes); Should be 1, 2, 4, 8, 16, 32 or 64 + @Param[in] min - The minimum base address of the block. + @Param[in] name - Name that specifies an allocated block. + + @Return base address of an allocated block,ILLEGAL_BASE if can't allocate a block. +*//***************************************************************************/ +uint64_t MM_GetForceMin(t_Handle h_MM, + uint64_t size, + uint64_t alignment, + uint64_t min, + char *name); + +/**************************************************************************//** + @Function MM_Put + + @Description Puts a block of memory of the given base address back to the memory. + + It checks if there is a busy block with the + given base address. If not, it returns 0, that + means can't free a block. Otherwise, it gets parameters of + the busy block and after it updates lists of free blocks, + removes that busy block from the list by calling to MM_CutBusy + routine. + After that it calls to MM_AddFree routine to add a new free + block to the free lists. + + @Param[in] h_MM - Handle to the MM object. + @Param[in] base - Base address of the MM. + + @Return The size of bytes released, 0 if failed. +*//***************************************************************************/ +uint64_t MM_Put(t_Handle h_MM, uint64_t base); + +/**************************************************************************//** + @Function MM_PutForce + + @Description Releases a block of memory of the required size from the required base address. + + First, it calls to MM_CutBusy routine + to cut a free block from the busy list. And then, calls to + MM_AddFree routine to add the free block to the free lists. + + @Param[in] h_MM - Handle to the MM object. + @Param[in] base - Base address of of a block to free. + @Param[in] size - Size of a block to free. + + @Return The number of bytes released, 0 on failure. +*//***************************************************************************/ +uint64_t MM_PutForce(t_Handle h_MM, uint64_t base, uint64_t size); + +/**************************************************************************//** + @Function MM_Add + + @Description Adds a new memory block for memory allocation. + + When a new memory block is initialized and added to the + memory list, it calls to MM_AddFree routine to add the + new free block to the free lists. + + @Param[in] h_MM - Handle to the MM object. + @Param[in] base - Base address of the memory block. + @Param[in] size - Size of the memory block. + + @Return E_OK on success, otherwise returns an error code. +*//***************************************************************************/ +t_Error MM_Add(t_Handle h_MM, uint64_t base, uint64_t size); + +/**************************************************************************//** + @Function MM_Dump + + @Description Prints results of free and busy lists into the file. + + @Param[in] h_MM - Handle to the MM object. + @Param[in] buff - A pointer to a buffer +*//***************************************************************************/ +void MM_Dump(t_Handle h_MM, void *buff); + +/**************************************************************************//** + @Function MM_Free + + @Description Releases memory allocated for MM object. + + @Param[in] h_MM - Handle of the MM object. +*//***************************************************************************/ +void MM_Free(t_Handle h_MM); + +/**************************************************************************//** + @Function MM_GetMemBlock + + @Description Returns base address of the memory block specified by the index. + + If index is 0, returns base address + of the first memory block, 1 - returns base address + of the second memory block, etc. + Note, those memory blocks are allocated by the + application before MM_Init or MM_Add and have to + be released by the application before or after invoking + the MM_Free routine. + + @Param[in] h_MM - Handle to the MM object. + @Param[in] index - Index of the memory block. + + @Return valid base address or ILLEGAL_BASE if no memory block specified by the index. +*//***************************************************************************/ +uint64_t MM_GetMemBlock(t_Handle h_MM, int index); + +/**************************************************************************//** + @Function MM_InRange + + @Description Checks if a specific address is in the memory range of the passed MM object. + + @Param[in] h_MM - Handle to the MM object. + @Param[in] addr - The address to be checked. + + @Return TRUE if the address is in the address range of the block, FALSE otherwise. +*//***************************************************************************/ +bool MM_InRange(t_Handle h_MM, uint64_t addr); + + +/** @} */ /* end of mm_grp group */ +/** @} */ /* end of etc_id group */ + +#endif /* __MM_EXT_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/inc/etc/sprint_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/inc/etc/sprint_ext.h @@ -0,0 +1,125 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 sprint_ext.h + + @Description Debug routines (externals). + +*//***************************************************************************/ + +#ifndef __SPRINT_EXT_H +#define __SPRINT_EXT_H + + +#if defined(NCSW_LINUX) && defined(__KERNEL__) +#include + +#elif defined(NCSW_LINUX_USD) +#include +#include "stdarg_ext.h" +#include "std_ext.h" + +extern int vsscanf(const char *, const char *, va_list); + +#elif defined(NCSW_VXWORKS) +#include "private/stdioP.h" + +#else +#include +#endif /* defined(NCSW_LINUX) && defined(__KERNEL__) */ + +#include "std_ext.h" + + +/**************************************************************************//** + @Group etc_id Utility Library Application Programming Interface + + @Description External routines. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group sprint_id Sprint + + @Description Sprint & Sscan module functions,definitions and enums. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Function Sprint + + @Description Format a string and place it in a buffer. + + @Param[in] buff - The buffer to place the result into. + @Param[in] str - The format string to use. + @Param[in] ... - Arguments for the format string. + + @Return Number of bytes formatted. +*//***************************************************************************/ +int Sprint(char *buff, const char *str, ...); + +/**************************************************************************//** + @Function Snprint + + @Description Format a string and place it in a buffer. + + @Param[in] buf - The buffer to place the result into. + @Param[in] size - The size of the buffer, including the trailing null space. + @Param[in] fmt - The format string to use. + @Param[in] ... - Arguments for the format string. + + @Return Number of bytes formatted. +*//***************************************************************************/ +int Snprint(char * buf, uint32_t size, const char *fmt, ...); + +/**************************************************************************//** + @Function Sscan + + @Description Unformat a buffer into a list of arguments. + + @Param[in] buf - input buffer. + @Param[in] fmt - formatting of buffer. + @Param[out] ... - resulting arguments. + + @Return Number of bytes unformatted. +*//***************************************************************************/ +int Sscan(const char * buf, const char * fmt, ...); + +/** @} */ /* end of sprint_id group */ +/** @} */ /* end of etc_id group */ + + +#endif /* __SPRINT_EXT_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/inc/integrations/P1023/dpaa_integration_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/inc/integrations/P1023/dpaa_integration_ext.h @@ -0,0 +1,328 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 dpaa_integration_ext.h + + @Description P1023 FM external definitions and structures. +*//***************************************************************************/ +#ifndef __DPAA_INTEGRATION_EXT_H +#define __DPAA_INTEGRATION_EXT_H + +#include "std_ext.h" + + +typedef enum e_DpaaSwPortal { + e_DPAA_SWPORTAL0 = 0, + e_DPAA_SWPORTAL1, + e_DPAA_SWPORTAL2 +} e_DpaaSwPortal; + +typedef enum { + e_DPAA_DCPORTAL0 = 0, + e_DPAA_DCPORTAL1, + e_DPAA_DCPORTAL2, + e_DPAA_DCPORTAL3 +} e_DpaaDcPortal; + +#define DPAA_MAX_NUM_OF_SW_PORTALS 3 +#define DPAA_MAX_NUM_OF_DC_PORTALS 3 + +/***************************************************************************** + QMAN INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ +#define QM_MAX_NUM_OF_POOL_CHANNELS 3 +#define QM_MAX_NUM_OF_WQ 8 +#define QM_MAX_NUM_OF_SWP_AS 2 +#define QM_MAX_NUM_OF_CGS 64 +#define QM_MAX_NUM_OF_FQIDS (16*MEGABYTE) + +typedef enum { + e_QM_FQ_CHANNEL_SWPORTAL0 = 0, + e_QM_FQ_CHANNEL_SWPORTAL1, + e_QM_FQ_CHANNEL_SWPORTAL2, + + e_QM_FQ_CHANNEL_POOL1 = 0x21, + e_QM_FQ_CHANNEL_POOL2, + e_QM_FQ_CHANNEL_POOL3, + + e_QM_FQ_CHANNEL_FMAN0_SP0 = 0x40, + e_QM_FQ_CHANNEL_FMAN0_SP1, + e_QM_FQ_CHANNEL_FMAN0_SP2, + e_QM_FQ_CHANNEL_FMAN0_SP3, + e_QM_FQ_CHANNEL_FMAN0_SP4, + e_QM_FQ_CHANNEL_FMAN0_SP5, + e_QM_FQ_CHANNEL_FMAN0_SP6, + + + e_QM_FQ_CHANNEL_CAAM = 0x80 +} e_QmFQChannel; + +/***************************************************************************** + BMAN INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ +#define BM_MAX_NUM_OF_POOLS 8 + +/***************************************************************************** + FM INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ +#define INTG_MAX_NUM_OF_FM 1 + +/* Ports defines */ +#define FM_MAX_NUM_OF_1G_RX_PORTS 2 +#define FM_MAX_NUM_OF_10G_RX_PORTS 0 +#define FM_MAX_NUM_OF_RX_PORTS (FM_MAX_NUM_OF_10G_RX_PORTS+FM_MAX_NUM_OF_1G_RX_PORTS) +#define FM_MAX_NUM_OF_1G_TX_PORTS 2 +#define FM_MAX_NUM_OF_10G_TX_PORTS 0 +#define FM_MAX_NUM_OF_TX_PORTS (FM_MAX_NUM_OF_10G_TX_PORTS+FM_MAX_NUM_OF_1G_TX_PORTS) +#define FM_MAX_NUM_OF_OH_PORTS 5 +#define FM_MAX_NUM_OF_1G_MACS (FM_MAX_NUM_OF_1G_RX_PORTS) +#define FM_MAX_NUM_OF_10G_MACS (FM_MAX_NUM_OF_10G_RX_PORTS) +#define FM_MAX_NUM_OF_MACS (FM_MAX_NUM_OF_1G_MACS+FM_MAX_NUM_OF_10G_MACS) +#define FM_MAX_NUM_OF_MACSECS 1 + +#if 0 +#define FM_MACSEC_SUPPORT +#define FM_CAPWAP_SUPPORT +#endif + +#define FM_LOW_END_RESTRICTION /* prevents the use of TX port 1 with OP port 0 */ + +#define FM_PORT_MAX_NUM_OF_EXT_POOLS 4 /**< Number of external BM pools per Rx port */ +#define FM_PORT_MAX_NUM_OF_OBSERVED_EXT_POOLS 2 /**< Number of Offline parsing port external BM pools per Rx port */ +#define FM_PORT_NUM_OF_CONGESTION_GRPS 32 /**< Total number of congestion groups in QM */ +#define FM_MAX_NUM_OF_SUB_PORTALS 7 + +/* Rams defines */ +#define FM_MURAM_SIZE (64*KILOBYTE) +#define FM_IRAM_SIZE (32*KILOBYTE) + +/* PCD defines */ +#define FM_PCD_PLCR_NUM_ENTRIES 32 /**< Total number of policer profiles */ +#define FM_PCD_KG_NUM_OF_SCHEMES 16 /**< Total number of KG schemes */ +#define FM_PCD_MAX_NUM_OF_CLS_PLANS 128 /**< Number of classification plan entries. */ + +/* RTC defines */ +#define FM_RTC_NUM_OF_ALARMS 2 +#define FM_RTC_NUM_OF_PERIODIC_PULSES 2 +#define FM_RTC_NUM_OF_EXT_TRIGGERS 2 + +/* QMI defines */ +#define QMI_MAX_NUM_OF_TNUMS 15 +#define MAX_QMI_DEQ_SUBPORTAL 7 + +/* FPM defines */ +#define FM_NUM_OF_FMAN_CTRL_EVENT_REGS 4 + +/* DMA defines */ +#define DMA_THRESH_MAX_COMMQ 15 +#define DMA_THRESH_MAX_BUF 7 + +/* BMI defines */ +#define BMI_MAX_NUM_OF_TASKS 64 +#define BMI_MAX_NUM_OF_DMAS 16 +#define BMI_MAX_FIFO_SIZE (FM_MURAM_SIZE) +#define PORT_MAX_WEIGHT 4 + +/**************************************************************************//** + @Description Enum for inter-module interrupts registration +*//***************************************************************************/ +typedef enum e_FmEventModules{ + e_FM_MOD_PRS, /**< Parser event */ + e_FM_MOD_KG, /**< Keygen event */ + e_FM_MOD_PLCR, /**< Policer event */ + e_FM_MOD_10G_MAC, /**< 10G MAC error event */ + e_FM_MOD_1G_MAC, /**< 1G MAC error event */ + e_FM_MOD_TMR, /**< Timer event */ + e_FM_MOD_1G_MAC_TMR, /**< 1G MAC Timer event */ + e_FM_MOD_FMAN_CTRL, /**< FMAN Controller Timer event */ + e_FM_MOD_MACSEC, + e_FM_MOD_DUMMY_LAST +} e_FmEventModules; + +/**************************************************************************//** + @Description Enum for interrupts types +*//***************************************************************************/ +typedef enum e_FmIntrType { + e_FM_INTR_TYPE_ERR, + e_FM_INTR_TYPE_NORMAL +} e_FmIntrType; + +/**************************************************************************//** + @Description Enum for inter-module interrupts registration +*//***************************************************************************/ +typedef enum e_FmInterModuleEvent { + e_FM_EV_PRS, /**< Parser event */ + e_FM_EV_ERR_PRS, /**< Parser error event */ + e_FM_EV_KG, /**< Keygen event */ + e_FM_EV_ERR_KG, /**< Keygen error event */ + e_FM_EV_PLCR, /**< Policer event */ + e_FM_EV_ERR_PLCR, /**< Policer error event */ + e_FM_EV_ERR_10G_MAC0, /**< 10G MAC 0 error event */ + e_FM_EV_ERR_1G_MAC0, /**< 1G MAC 0 error event */ + e_FM_EV_ERR_1G_MAC1, /**< 1G MAC 1 error event */ + e_FM_EV_ERR_1G_MAC2, /**< 1G MAC 2 error event */ + e_FM_EV_ERR_1G_MAC3, /**< 1G MAC 3 error event */ + e_FM_EV_ERR_MACSEC_MAC0, /**< MACSEC MAC 0 error event */ + e_FM_EV_TMR, /**< Timer event */ + e_FM_EV_1G_MAC0_TMR, /**< 1G MAC 0 Timer event */ + e_FM_EV_1G_MAC1_TMR, /**< 1G MAC 1 Timer event */ + e_FM_EV_1G_MAC2_TMR, /**< 1G MAC 2 Timer event */ + e_FM_EV_1G_MAC3_TMR, /**< 1G MAC 3 Timer event */ + e_FM_EV_MACSEC_MAC0, /**< MACSEC MAC 0 event */ + e_FM_EV_FMAN_CTRL_0, /**< Fman controller event 0 */ + e_FM_EV_FMAN_CTRL_1, /**< Fman controller event 1 */ + e_FM_EV_FMAN_CTRL_2, /**< Fman controller event 2 */ + e_FM_EV_FMAN_CTRL_3, /**< Fman controller event 3 */ + e_FM_EV_DUMMY_LAST +} e_FmInterModuleEvent; + +#define GET_FM_MODULE_EVENT(mod, id, intrType, event) \ + switch(mod){ \ + case e_FM_MOD_PRS: \ + if (id) event = e_FM_EV_DUMMY_LAST; \ + else event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_ERR_PRS:e_FM_EV_PRS; \ + break; \ + case e_FM_MOD_KG: \ + if (id) event = e_FM_EV_DUMMY_LAST; \ + else event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_ERR_KG:e_FM_EV_DUMMY_LAST; \ + break; \ + case e_FM_MOD_PLCR: \ + if (id) event = e_FM_EV_DUMMY_LAST; \ + else event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_ERR_PLCR:e_FM_EV_PLCR; \ + break; \ + case e_FM_MOD_1G_MAC: \ + switch(id){ \ + case(0): event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_ERR_1G_MAC0:e_FM_EV_DUMMY_LAST; break; \ + case(1): event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_ERR_1G_MAC1:e_FM_EV_DUMMY_LAST; break; \ + case(2): event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_ERR_1G_MAC2:e_FM_EV_DUMMY_LAST; break; \ + case(3): event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_ERR_1G_MAC3:e_FM_EV_DUMMY_LAST; break; \ + } \ + break; \ + case e_FM_MOD_TMR: \ + if (id) event = e_FM_EV_DUMMY_LAST; \ + else event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_DUMMY_LAST:e_FM_EV_TMR; \ + break; \ + case e_FM_MOD_1G_MAC_TMR: \ + switch(id){ \ + case(0): event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_DUMMY_LAST:e_FM_EV_1G_MAC0_TMR; break; \ + case(1): event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_DUMMY_LAST:e_FM_EV_1G_MAC1_TMR; break; \ + case(2): event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_DUMMY_LAST:e_FM_EV_1G_MAC2_TMR; break; \ + case(3): event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_DUMMY_LAST:e_FM_EV_1G_MAC3_TMR; break; \ + } \ + break; \ + case e_FM_MOD_MACSEC: \ + switch(id){ \ + case(0): event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_ERR_MACSEC_MAC0:e_FM_EV_MACSEC_MAC0; break; \ + } \ + break; \ + case e_FM_MOD_FMAN_CTRL: \ + if (intrType == e_FM_INTR_TYPE_ERR) event = e_FM_EV_DUMMY_LAST; \ + else switch(id){ \ + case(0): event = e_FM_EV_FMAN_CTRL_0; break; \ + case(1): event = e_FM_EV_FMAN_CTRL_1; break; \ + case(2): event = e_FM_EV_FMAN_CTRL_2; break; \ + case(3): event = e_FM_EV_FMAN_CTRL_3; break; \ + } \ + break; \ + default:event = e_FM_EV_DUMMY_LAST; \ + break;} + +/***************************************************************************** + FM MACSEC INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ +#define NUM_OF_RX_SC 16 +#define NUM_OF_TX_SC 16 + +#define NUM_OF_SA_PER_RX_SC 2 +#define NUM_OF_SA_PER_TX_SC 2 + +/**************************************************************************//** + @Description Enum for inter-module interrupts registration +*//***************************************************************************/ + +typedef enum e_FmMacsecEventModules{ + e_FM_MACSEC_MOD_SC_TX, + e_FM_MACSEC_MOD_DUMMY_LAST +} e_FmMacsecEventModules; + +typedef enum e_FmMacsecInterModuleEvent { + e_FM_MACSEC_EV_SC_TX, + e_FM_MACSEC_EV_ERR_SC_TX, + e_FM_MACSEC_EV_DUMMY_LAST +} e_FmMacsecInterModuleEvent; + +#define NUM_OF_INTER_MODULE_EVENTS (NUM_OF_TX_SC * 2) + +#define GET_MACSEC_MODULE_EVENT(mod, id, intrType, event) \ + switch(mod){ \ + case e_FM_MACSEC_MOD_SC_TX: \ + event = (intrType == e_FM_INTR_TYPE_ERR) ? \ + e_FM_MACSEC_EV_ERR_SC_TX: \ + e_FM_MACSEC_EV_SC_TX; \ + event += (uint8_t)(2 * id);break; \ + break; \ + default:event = e_FM_MACSEC_EV_DUMMY_LAST; \ + break;} + + +/* 1023 unique features */ +#define FM_QMI_NO_ECC_EXCEPTIONS +#define FM_CSI_CFED_LIMIT +#define FM_PEDANTIC_DMA + +/* FM erratas */ +#define FM_NO_RX_PREAM_ERRATA_DTSECx1 +#define FM_RX_PREAM_4_ERRATA_DTSEC_A001 FM_NO_RX_PREAM_ERRATA_DTSECx1 +#define FM_MAGIC_PACKET_UNRECOGNIZED_ERRATA_DTSEC2 /* No implementation, Out of LLD scope */ + +#define FM_IM_TX_SYNC_SKIP_TNUM_ERRATA_FMAN_A001 /* Implemented by ucode */ +#define FM_HC_DEF_FQID_ONLY_ERRATA_FMAN_A003 /* Implemented by ucode */ +#define FM_IM_TX_SHARED_TNUM_ERRATA_FMAN4 /* Implemented by ucode */ +#define FM_IM_GS_DEADLOCK_ERRATA_FMAN5 /* Implemented by ucode */ +#define FM_IM_DEQ_PIPELINE_DEPTH_ERRATA_FMAN10 /* Implemented by ucode */ +#define FM_CC_GEN6_MISSMATCH_ERRATA_FMAN12 /* Implemented by ucode */ +#define FM_CC_CHANGE_SHARED_TNUM_ERRATA_FMAN13 /* Implemented by ucode */ +#define FM_IM_LARGE_MRBLR_ERRATA_FMAN15 /* Implemented by ucode */ + +/* #define FM_UCODE_NOT_RESET_ERRATA_BUGZILLA6173 */ + +/* ??? */ +#define FM_GRS_ERRATA_DTSEC_A002 +#define FM_BAD_TX_TS_IN_B_2_B_ERRATA_DTSEC_A003 +#define FM_GTS_ERRATA_DTSEC_A004 +#define FM_TX_LOCKUP_ERRATA_DTSEC6 + +#define FM_LOCKUP_ALIGNMENT_ERRATA_FMAN_SW004 + +#endif /* __FM_INTEGRATION_EXT_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/inc/integrations/P1023/part_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/inc/integrations/P1023/part_ext.h @@ -0,0 +1,81 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 part_ext.h + + @Description Definitions for the part (integration) module. +*//***************************************************************************/ + +#ifndef __PART_EXT_H +#define __PART_EXT_H + +#include "std_ext.h" +#include "part_integration_ext.h" + + +#if !(defined(MPC8306) || \ + defined(MPC8309) || \ + defined(MPC834x) || \ + defined(MPC836x) || \ + defined(MPC832x) || \ + defined(MPC837x) || \ + defined(MPC8568) || \ + defined(MPC8569) || \ + defined(P1020) || \ + defined(P1021) || \ + defined(P1022) || \ + defined(P1023) || \ + defined(P2020) || \ + defined(P3041) || \ + defined(P4080) || \ + defined(P5020) || \ + defined(MSC814x)) +#error "unable to proceed without chip-definition" +#endif + + +/**************************************************************************//* + @Description Part data structure - must be contained in any integration + data structure. +*//***************************************************************************/ +typedef struct t_Part +{ + uint64_t (* f_GetModuleBase)(t_Handle h_Part, e_ModuleId moduleId); + /**< Returns the address of the module's memory map base. */ + e_ModuleId (* f_GetModuleIdByBase)(t_Handle h_Part, uint64_t baseAddress); + /**< Returns the module's ID according to its memory map base. */ +} t_Part; + + +#endif /* __PART_EXT_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/inc/integrations/P1023/part_integration_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/inc/integrations/P1023/part_integration_ext.h @@ -0,0 +1,659 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 part_integration_ext.h + + @Description P1023 external definitions and structures. +*//***************************************************************************/ +#ifndef __PART_INTEGRATION_EXT_H +#define __PART_INTEGRATION_EXT_H + +#include "std_ext.h" +#ifndef NCSW_LINUX +#include "ddr_std_ext.h" +#endif +#include "dpaa_integration_ext.h" + + +/**************************************************************************//** + @Group 1023_chip_id P1023 Application Programming Interface + + @Description P1023 Chip functions,definitions and enums. + + @{ +*//***************************************************************************/ + +#define INTG_MAX_NUM_OF_CORES 1 + + +/**************************************************************************//** + @Description Module types. +*//***************************************************************************/ +typedef enum e_ModuleId +{ + e_MODULE_ID_LAW, /**< Local Access module */ + e_MODULE_ID_ECM, /**< e500 Coherency Module */ + e_MODULE_ID_DDR, /**< DDR memory controller */ + e_MODULE_ID_I2C_1, /**< I2C 1 */ + e_MODULE_ID_I2C_2, /**< I2C 1 */ + e_MODULE_ID_DUART_1, /**< DUART module 1 */ + e_MODULE_ID_DUART_2, /**< DUART module 2 */ + e_MODULE_ID_LBC, /**< Local bus memory controller module */ + e_MODULE_ID_PCIE_1, /**< PCI Express 1 controller module */ + e_MODULE_ID_PCIE_ATMU_1, /**< PCI 1 ATMU Window */ + e_MODULE_ID_PCIE_2, /**< PCI Express 2 controller module */ + e_MODULE_ID_PCIE_ATMU_2, /**< PCI 2 ATMU Window */ + e_MODULE_ID_PCIE_3, /**< PCI Express 3 controller module */ + e_MODULE_ID_PCIE_ATMU_3, /**< PCI 3 ATMU Window */ + e_MODULE_ID_MSI, /**< MSI registers */ + e_MODULE_ID_L2_SRAM, /**< L2/SRAM Memory-Mapped controller module */ + e_MODULE_ID_DMA_1, /**< DMA controller 1 */ + e_MODULE_ID_DMA_2, /**< DMA controller 2 */ + e_MODULE_ID_EPIC, /**< Programmable interrupt controller */ + e_MODULE_ID_ESPI, /**< ESPI module */ + e_MODULE_ID_GPIO, /**< General Purpose I/O */ + e_MODULE_ID_SEC_GEN, /**< SEC 4.0 General registers */ + e_MODULE_ID_SEC_QI, /**< SEC 4.0 QI registers */ + e_MODULE_ID_SEC_JQ0, /**< SEC 4.0 JQ-0 registers */ + e_MODULE_ID_SEC_JQ1, /**< SEC 4.0 JQ-1 registers */ + e_MODULE_ID_SEC_JQ2, /**< SEC 4.0 JQ-2 registers */ + e_MODULE_ID_SEC_JQ3, /**< SEC 4.0 JQ-3 registers */ + e_MODULE_ID_SEC_RTIC, /**< SEC 4.0 RTIC registers */ + e_MODULE_ID_SEC_DECO0_CCB0, /**< SEC 4.0 DECO-0/CCB-0 registers */ + e_MODULE_ID_SEC_DECO1_CCB1, /**< SEC 4.0 DECO-1/CCB-1 registers */ + e_MODULE_ID_SEC_DECO2_CCB2, /**< SEC 4.0 DECO-2/CCB-2 registers */ + e_MODULE_ID_SEC_DECO3_CCB3, /**< SEC 4.0 DECO-3/CCB-3 registers */ + e_MODULE_ID_SEC_DECO4_CCB4, /**< SEC 4.0 DECO-4/CCB-4 registers */ + e_MODULE_ID_USB_DR_1, /**< USB 2.0 module 1 */ + e_MODULE_ID_USB_DR_2, /**< USB 2.0 module 2 */ + e_MODULE_ID_ETSEC_MII_MNG, /**< MII MNG registers */ + e_MODULE_ID_ETSEC_1, /**< ETSEC module 1 */ + e_MODULE_ID_ETSEC_2, /**< ETSEC module 2 */ + e_MODULE_ID_GUTS, /**< Serial DMA */ + e_MODULE_ID_PM, /**< Performance Monitor module */ + e_MODULE_ID_QM, /**< Queue manager module */ + e_MODULE_ID_BM, /**< Buffer manager module */ + e_MODULE_ID_QM_CE_PORTAL, + e_MODULE_ID_QM_CI_PORTAL, + e_MODULE_ID_BM_CE_PORTAL, + e_MODULE_ID_BM_CI_PORTAL, + e_MODULE_ID_FM, /**< Frame manager #1 module */ + e_MODULE_ID_FM_RTC, /**< FM Real-Time-Clock */ + e_MODULE_ID_FM_MURAM, /**< FM Multi-User-RAM */ + e_MODULE_ID_FM_BMI, /**< FM BMI block */ + e_MODULE_ID_FM_QMI, /**< FM QMI block */ + e_MODULE_ID_FM_PRS, /**< FM parser block */ + e_MODULE_ID_FM_PORT_HO0, /**< FM Host-command/offline-parsing port block */ + e_MODULE_ID_FM_PORT_HO1, /**< FM Host-command/offline-parsing port block */ + e_MODULE_ID_FM_PORT_HO2, /**< FM Host-command/offline-parsing port block */ + e_MODULE_ID_FM_PORT_HO3, /**< FM Host-command/offline-parsing port block */ + e_MODULE_ID_FM_PORT_HO4, /**< FM Host-command/offline-parsing port block */ + e_MODULE_ID_FM_PORT_1GRx0, /**< FM Rx 1G MAC port block */ + e_MODULE_ID_FM_PORT_1GRx1, /**< FM Rx 1G MAC port block */ + e_MODULE_ID_FM_PORT_1GTx0, /**< FM Tx 1G MAC port block */ + e_MODULE_ID_FM_PORT_1GTx1, /**< FM Tx 1G MAC port block */ + e_MODULE_ID_FM_PLCR, /**< FM Policer */ + e_MODULE_ID_FM_KG, /**< FM Keygen */ + e_MODULE_ID_FM_DMA, /**< FM DMA */ + e_MODULE_ID_FM_FPM, /**< FM FPM */ + e_MODULE_ID_FM_IRAM, /**< FM Instruction-RAM */ + e_MODULE_ID_FM_1GMDIO0, /**< FM 1G MDIO MAC 0*/ + e_MODULE_ID_FM_1GMDIO1, /**< FM 1G MDIO MAC 1*/ + e_MODULE_ID_FM_PRS_IRAM, /**< FM SW-parser Instruction-RAM */ + e_MODULE_ID_FM_RISC0, /**< FM risc #0 */ + e_MODULE_ID_FM_RISC1, /**< FM risc #1 */ + e_MODULE_ID_FM_1GMAC0, /**< FM 1G MAC #0 */ + e_MODULE_ID_FM_1GMAC1, /**< FM 1G MAC #1 */ + e_MODULE_ID_FM_MACSEC, /**< FM MACSEC */ + + e_MODULE_ID_DUMMY_LAST +} e_ModuleId; + +#define NUM_OF_MODULES e_MODULE_ID_DUMMY_LAST + + +#define P1023_OFFSET_LAW 0x00000C08 +#define P1023_OFFSET_ECM 0x00001000 +#define P1023_OFFSET_DDR 0x00002000 +#define P1023_OFFSET_I2C1 0x00003000 +#define P1023_OFFSET_I2C2 0x00003100 +#define P1023_OFFSET_DUART1 0x00004500 +#define P1023_OFFSET_DUART2 0x00004600 +#define P1023_OFFSET_LBC 0x00005000 +#define P1023_OFFSET_ESPI 0x00007000 +#define P1023_OFFSET_PCIE2 0x00009000 +#define P1023_OFFSET_PCIE2_ATMU 0x00009C00 +#define P1023_OFFSET_PCIE1 0x0000A000 +#define P1023_OFFSET_PCIE1_ATMU 0x0000AC00 +#define P1023_OFFSET_PCIE3 0x0000B000 +#define P1023_OFFSET_PCIE3_ATMU 0x0000BC00 +#define P1023_OFFSET_DMA2 0x0000C100 +#define P1023_OFFSET_GPIO 0x0000F000 +#define P1023_OFFSET_L2_SRAM 0x00020000 +#define P1023_OFFSET_DMA1 0x00021100 +#define P1023_OFFSET_USB1 0x00022000 +#define P1023_OFFSET_SEC_GEN 0x00030000 +#define P1023_OFFSET_SEC_JQ0 0x00031000 +#define P1023_OFFSET_SEC_JQ1 0x00032000 +#define P1023_OFFSET_SEC_JQ2 0x00033000 +#define P1023_OFFSET_SEC_JQ3 0x00034000 +#define P1023_OFFSET_SEC_RTIC 0x00036000 +#define P1023_OFFSET_SEC_QI 0x00037000 +#define P1023_OFFSET_SEC_DECO0_CCB0 0x00038000 +#define P1023_OFFSET_SEC_DECO1_CCB1 0x00039000 +#define P1023_OFFSET_SEC_DECO2_CCB2 0x0003a000 +#define P1023_OFFSET_SEC_DECO3_CCB3 0x0003b000 +#define P1023_OFFSET_SEC_DECO4_CCB4 0x0003c000 +#define P1023_OFFSET_PIC 0x00040000 +#define P1023_OFFSET_MSI 0x00041600 +#define P1023_OFFSET_AXI 0x00081000 +#define P1023_OFFSET_QM 0x00088000 +#define P1023_OFFSET_BM 0x0008A000 +#define P1022_OFFSET_PM 0x000E1000 + +#define P1023_OFFSET_GUTIL 0x000E0000 +#define P1023_OFFSET_PM 0x000E1000 +#define P1023_OFFSET_DEBUG 0x000E2000 +#define P1023_OFFSET_SERDES 0x000E3000 +#define P1023_OFFSET_ROM 0x000F0000 +#define P1023_OFFSET_FM 0x00100000 + +#define P1023_OFFSET_FM_MURAM (P1023_OFFSET_FM + 0x00000000) +#define P1023_OFFSET_FM_BMI (P1023_OFFSET_FM + 0x00080000) +#define P1023_OFFSET_FM_QMI (P1023_OFFSET_FM + 0x00080400) +#define P1023_OFFSET_FM_PRS (P1023_OFFSET_FM + 0x00080800) +#define P1023_OFFSET_FM_PORT_HO0 (P1023_OFFSET_FM + 0x00081000) +#define P1023_OFFSET_FM_PORT_HO1 (P1023_OFFSET_FM + 0x00082000) +#define P1023_OFFSET_FM_PORT_HO2 (P1023_OFFSET_FM + 0x00083000) +#define P1023_OFFSET_FM_PORT_HO3 (P1023_OFFSET_FM + 0x00084000) +#define P1023_OFFSET_FM_PORT_HO4 (P1023_OFFSET_FM + 0x00085000) +#define P1023_OFFSET_FM_PORT_1GRX0 (P1023_OFFSET_FM + 0x00088000) +#define P1023_OFFSET_FM_PORT_1GRX1 (P1023_OFFSET_FM + 0x00089000) +#define P1023_OFFSET_FM_PORT_1GTX0 (P1023_OFFSET_FM + 0x000A8000) +#define P1023_OFFSET_FM_PORT_1GTX1 (P1023_OFFSET_FM + 0x000A9000) +#define P1023_OFFSET_FM_PLCR (P1023_OFFSET_FM + 0x000C0000) +#define P1023_OFFSET_FM_KG (P1023_OFFSET_FM + 0x000C1000) +#define P1023_OFFSET_FM_DMA (P1023_OFFSET_FM + 0x000C2000) +#define P1023_OFFSET_FM_FPM (P1023_OFFSET_FM + 0x000C3000) +#define P1023_OFFSET_FM_IRAM (P1023_OFFSET_FM + 0x000C4000) +#define P1023_OFFSET_FM_PRS_IRAM (P1023_OFFSET_FM + 0x000C7000) +#define P1023_OFFSET_FM_RISC0 (P1023_OFFSET_FM + 0x000D0000) +#define P1023_OFFSET_FM_RISC1 (P1023_OFFSET_FM + 0x000D0400) +#define P1023_OFFSET_FM_MACSEC (P1023_OFFSET_FM + 0x000D8000) +#define P1023_OFFSET_FM_1GMAC0 (P1023_OFFSET_FM + 0x000E0000) +#define P1023_OFFSET_FM_1GMDIO0 (P1023_OFFSET_FM + 0x000E1120) +#define P1023_OFFSET_FM_1GMAC1 (P1023_OFFSET_FM + 0x000E2000) +#define P1023_OFFSET_FM_1GMDIO1 (P1023_OFFSET_FM + 0x000E3000) +#define P1023_OFFSET_FM_RTC (P1023_OFFSET_FM + 0x000FE000) + +/* Offsets relative to QM or BM portals base */ +#define P1023_OFFSET_PORTALS_CE_AREA 0x00000000 /* cache enabled area */ +#define P1023_OFFSET_PORTALS_CI_AREA 0x00100000 /* cache inhibited area */ + +#define P1023_OFFSET_PORTALS_CE(portal) (P1023_OFFSET_PORTALS_CE_AREA + 0x4000 * (portal)) +#define P1023_OFFSET_PORTALS_CI(portal) (P1023_OFFSET_PORTALS_CI_AREA + 0x1000 * (portal)) + +/**************************************************************************//** + @Description Transaction source ID (for memory controllers error reporting). +*//***************************************************************************/ +typedef enum e_TransSrc +{ + e_TRANS_SRC_PCIE_2 = 0x01, /**< PCIe port 2 */ + e_TRANS_SRC_PCIE_1 = 0x02, /**< PCIe port 1 */ + e_TRANS_SRC_PCIE_3 = 0x03, /**< PCIe port 3 */ + e_TRANS_SRC_LBC = 0x04, /**< Enhanced local bus */ + e_TRANS_SRC_DPAA_SW_PORTALS = 0x0E, /**< DPAA software portals or SRAM */ + e_TRANS_SRC_DDR = 0x0F, /**< DDR controller */ + e_TRANS_SRC_CORE_INS_FETCH = 0x10, /**< Processor (instruction) */ + e_TRANS_SRC_CORE_DATA = 0x11, /**< Processor (data) */ + e_TRANS_SRC_DMA = 0x15 /**< DMA */ +} e_TransSrc; + +/**************************************************************************//** + @Description Local Access Window Target interface ID +*//***************************************************************************/ +typedef enum e_P1023LawTargetId +{ + e_P1023_LAW_TARGET_PCIE_2 = 0x01, /**< PCI Express 2 target interface */ + e_P1023_LAW_TARGET_PCIE_1 = 0x02, /**< PCI Express 1 target interface */ + e_P1023_LAW_TARGET_PCIE_3 = 0x03, /**< PCI Express 3 target interface */ + e_P1023_LAW_TARGET_LBC = 0x04, /**< Local bus target interface */ + e_P1023_LAW_TARGET_QM_PORTALS = 0x0E, /**< Queue Manager Portals */ + e_P1023_LAW_TARGET_BM_PORTALS = 0x0E, /**< Buffer Manager Portals */ + e_P1023_LAW_TARGET_SRAM = 0x0E, /**< SRAM scratchpad */ + e_P1023_LAW_TARGET_DDR = 0x0F, /**< DDR target interface */ + e_P1023_LAW_TARGET_NONE = 0xFF /**< Invalid target interface */ +} e_P1023LawTargetId; + + +/**************************************************************************//** + @Group 1023_init_grp P1023 Initialization Unit + + @Description P1023 initialization unit API functions, definitions and enums + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Description Part ID and revision number +*//***************************************************************************/ +typedef enum e_P1023DeviceName +{ + e_P1023_REV_INVALID = 0x00000000, /**< Invalid revision */ + e_SC1023_REV_1_0 = (int)0x80FC0010, /**< SC1023 rev 1.0 */ + e_SC1023_REV_1_1 = (int)0x80FC0011, /**< SC1023 rev 1.1 */ + e_P1023_REV_1_0 = (int)0x80FE0010, /**< P1023 rev 1.0 with security */ + e_P1023_REV_1_1 = (int)0x80FE0011, /**< P1023 rev 1.1 with security */ + e_P1023_REV_1_0_NO_SEC = (int)0x80F60010, /**< P1023 rev 1.0 without security */ + e_P1023_REV_1_1_NO_SEC = (int)0x80F60011 /**< P1023 rev 1.1 without security */ +} e_P1023DeviceName; + +/**************************************************************************//** + @Description structure representing P1023 initialization parameters +*//***************************************************************************/ +typedef struct t_P1023Params +{ + uintptr_t ccsrBaseAddress; /**< CCSR base address (virtual) */ + uintptr_t bmPortalsBaseAddress; /**< Portals base address (virtual) */ + uintptr_t qmPortalsBaseAddress; /**< Portals base address (virtual) */ +} t_P1023Params; + +/**************************************************************************//** + @Function P1023_ConfigAndInit + + @Description General initiation of the chip registers. + + @Param[in] p_P1023Params - A pointer to data structure of parameters + + @Return A handle to the P1023 data structure. +*//***************************************************************************/ +t_Handle P1023_ConfigAndInit(t_P1023Params *p_P1023Params); + +/**************************************************************************//** + @Function P1023_Free + + @Description Free all resources. + + @Param h_P1023 - (In) The handle of the initialized P1023 object. + + @Return E_OK on success; Other value otherwise. +*//***************************************************************************/ +t_Error P1023_Free(t_Handle h_P1023); + +/**************************************************************************//** + @Function P1023_GetRevInfo + + @Description This routine enables access to chip and revision information. + + @Param[in] gutilBase - Base address of P1023 GUTIL registers. + + @Return Part ID and revision. +*//***************************************************************************/ +e_P1023DeviceName P1023_GetRevInfo(uintptr_t gutilBase); + +/**************************************************************************//** + @Function P1023_GetE500Factor + + @Description Returns E500 core clock multiplication factor. + + @Param[in] gutilBase - Base address of P1023 GUTIL registers. + @Param[in] coreId - Id of the requested core. + @Param[out] p_E500MulFactor - Returns E500 to CCB multification factor. + @Param[out] p_E500DivFactor - Returns E500 to CCB division factor. + + @Return E_OK on success; Other value otherwise. +* +*//***************************************************************************/ +t_Error P1023_GetE500Factor(uintptr_t gutilBase, + uint32_t coreId, + uint32_t *p_E500MulFactor, + uint32_t *p_E500DivFactor); + +/**************************************************************************//** + @Function P1023_GetFmFactor + + @Description returns FM multiplication factors. (This value is returned using + two parameters to avoid using float parameter). + + @Param[in] gutilBase - Base address of P1023 GUTIL registers. + @Param[out] p_FmMulFactor - returns E500 to CCB multification factor. + @Param[out] p_FmDivFactor - returns E500 to CCB division factor. + + @Return E_OK on success; Other value otherwise. +*//***************************************************************************/ +t_Error P1023_GetFmFactor(uintptr_t gutilBase, uint32_t *p_FmMulFactor, uint32_t *p_FmDivFactor); + +/**************************************************************************//** + @Function P1023_GetCcbFactor + + @Description returns system multiplication factor. + + @Param[in] gutilBase - Base address of P1023 GUTIL registers. + + @Return System multiplication factor. +*//***************************************************************************/ +uint32_t P1023_GetCcbFactor(uintptr_t gutilBase); + +/**************************************************************************//** + @Function P1023_GetDdrFactor + + @Description returns the multiplication factor of the clock in for the DDR clock . + Note: assumes the ddr_in_clk is identical to the sys_in_clk + + @Param[in] gutilBase - Base address of P1023 GUTIL registers. + @Param p_DdrMulFactor - returns DDR in clk multification factor. + @Param p_DdrDivFactor - returns DDR division factor. + + @Return E_OK on success; Other value otherwise.. +*//***************************************************************************/ +t_Error P1023_GetDdrFactor( uintptr_t gutilBase, + uint32_t *p_DdrMulFactor, + uint32_t *p_DdrDivFactor); + + +/**************************************************************************//** + @Function P1023_GetDdrType + + @Description returns the multiplication factor of the clock in for the DDR clock . + + @Param[in] gutilBase - Base address of P1023 GUTIL registers. + @Param p_DdrType - (Out) returns DDR type DDR1/DDR2/DDR3. + + @Return E_OK on success; Other value otherwise. +*//***************************************************************************/ +#ifndef NCSW_LINUX +t_Error P1023_GetDdrType(uintptr_t gutilBase, e_DdrType *p_DdrType ); +#endif + + +/** @} */ /* end of 1023_init_grp group */ +/** @} */ /* end of 1023_grp group */ + +#define CORE_E500V2 + +/***************************************************************************** + INTEGRATION-SPECIFIC MODULE CODES +******************************************************************************/ +#define MODULE_UNKNOWN 0x00000000 +#define MODULE_MEM 0x00010000 +#define MODULE_MM 0x00020000 +#define MODULE_CORE 0x00030000 +#define MODULE_P1023 0x00040000 +#define MODULE_MII 0x00050000 +#define MODULE_PM 0x00060000 +#define MODULE_MMU 0x00070000 +#define MODULE_PIC 0x00080000 +#define MODULE_L2_CACHE 0x00090000 +#define MODULE_DUART 0x000a0000 +#define MODULE_SERDES 0x000b0000 +#define MODULE_PIO 0x000c0000 +#define MODULE_QM 0x000d0000 +#define MODULE_BM 0x000e0000 +#define MODULE_SEC 0x000f0000 +#define MODULE_FM 0x00100000 +#define MODULE_FM_MURAM 0x00110000 +#define MODULE_FM_PCD 0x00120000 +#define MODULE_FM_RTC 0x00130000 +#define MODULE_FM_MAC 0x00140000 +#define MODULE_FM_PORT 0x00150000 +#define MODULE_FM_MACSEC 0x00160000 +#define MODULE_FM_MACSEC_SECY 0x00170000 +#define MODULE_ECM 0x00180000 +#define MODULE_DMA 0x00190000 +#define MODULE_DDR 0x001a0000 +#define MODULE_LAW 0x001b0000 +#define MODULE_LBC 0x001c0000 +#define MODULE_I2C 0x001d0000 +#define MODULE_ESPI 0x001e0000 +#define MODULE_PCI 0x001f0000 +#define MODULE_DPA 0x00200000 +#define MODULE_USB 0x00210000 + +/***************************************************************************** + LBC INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ +/**************************************************************************//** + @Group lbc_exception_grp LBC Exception Unit + + @Description LBC Exception unit API functions, definitions and enums + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Anchor lbc_exbm + + @Collection LBC Errors Bit Mask + + These errors are reported through the exceptions callback.. + The values can be or'ed in any combination in the errors mask + parameter of the errors report structure. + + These errors can also be passed as a bit-mask to + LBC_EnableErrorChecking() or LBC_DisableErrorChecking(), + for enabling or disabling error checking. + @{ +*//***************************************************************************/ +#define LBC_ERR_BUS_MONITOR 0x80000000 /**< Bus monitor error */ +#define LBC_ERR_PARITY_ECC 0x20000000 /**< Parity error for GPCM/UPM */ +#define LBC_ERR_WRITE_PROTECT 0x04000000 /**< Write protection error */ +#define LBC_ERR_CHIP_SELECT 0x00080000 /**< Unrecognized chip select */ + +#define LBC_ERR_ALL (LBC_ERR_BUS_MONITOR | LBC_ERR_PARITY_ECC | \ + LBC_ERR_WRITE_PROTECT | LBC_ERR_CHIP_SELECT) + /**< All possible errors */ +/* @} */ +/** @} */ /* end of lbc_exception_grp group */ + +#define LBC_NUM_OF_BANKS 2 +#define LBC_MAX_CS_SIZE 0x0000000100000000LL +#define LBC_ATOMIC_OPERATION_SUPPORT +#define LBC_PARITY_SUPPORT +#define LBC_ADDRESS_SHIFT_SUPPORT +#define LBC_ADDRESS_HOLD_TIME_CTRL +#define LBC_HIGH_CLK_DIVIDERS +#define LBC_FCM_AVAILABLE + + +/***************************************************************************** + LAW INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ +#define LAW_ARCH_CCB +#define LAW_NUM_OF_WINDOWS 12 +#define LAW_MIN_WINDOW_SIZE 0x0000000000001000LL /**< 4KB */ +#define LAW_MAX_WINDOW_SIZE 0x0000001000000000LL /**< 32GB */ + + +/***************************************************************************** + SPI INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ +#define SPI_NUM_OF_CONTROLLERS 1 + +/***************************************************************************** + PCI/PCIe INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ + +#define PCI_MAX_INBOUND_WINDOWS_NUM 4 +#define PCI_MAX_OUTBOUND_WINDOWS_NUM 5 + +/**************************************************************************//** + @Description Target interface of an inbound window +*//***************************************************************************/ +typedef enum e_PciTargetInterface +{ + e_PCI_TARGET_PCIE_2 = 0x1, /**< PCI Express target interface 2 */ + e_PCI_TARGET_PCIE_1 = 0x2, /**< PCI Express target interface 1 */ + e_PCI_TARGET_PCIE_3 = 0x3, /**< PCI Express target interface 3 */ + e_PCI_TARGET_LOCAL_MEMORY = 0xF /**< Local Memory (DDR SDRAM, Local Bus, SRAM) target interface */ + +} e_PciTargetInterface; + +/***************************************************************************** + DDR INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ +#define DDR_NUM_OF_VALID_CS 2 + +/***************************************************************************** + SEC INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ +#define SEC_ERRATA_STAT_REGS_UNUSABLE + +/***************************************************************************** + DMA INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ +#define DMA_NUM_OF_CONTROLLERS 1 + + + + +/***************************************************************************** + 1588 INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ +#define PTP_V2 + +/**************************************************************************//** + @Function P1023_GetMuxControlReg + + @Description Returns the value of PMUXCR (Alternate Function Signal Multiplex + Control Register) + + @Param[in] gutilBase - Base address of P1023 GUTIL registers. + + @Return Value of PMUXCR +*//***************************************************************************/ +uint32_t P1023_GetMuxControlReg(uintptr_t gutilBase); + +/**************************************************************************//** + @Function P1023_SetMuxControlReg + + @Description Sets the value of PMUXCR (Alternate Function Signal Multiplex + Control Register) + + @Param[in] gutilBase - Base address of P1023 GUTIL registers. + @Param[in] val - the new value for PMUXCR. + + @Return None +*//***************************************************************************/ +void P1023_SetMuxControlReg(uintptr_t gutilBase, uint32_t val); + +/**************************************************************************//** + @Function P1023_GetPowerMngClkDisableReg + + @Description Returns the value of PMCDR (Power Management Clock Disable Register) + + @Param[in] gutilBase - Base address of P1023 GUTIL registers. + + @Return Value of PMCDR +*//***************************************************************************/ +uint32_t P1023_GetPowerMngClkDisableReg(uintptr_t gutilBase); + +/**************************************************************************//** + @Function P1023_SetPowerMngClkDisableReg + + @Description Sets the value of PMCDR ((Power Management Clock Disable Register)) + + @Param[in] gutilBase - Base address of P1023 GUTIL registers. + @Param[in] val - the new value for PMCDR. + + @Return None +*//***************************************************************************/ +void P1023_SetPowerMngClkDisableReg(uintptr_t gutilBase, uint32_t val); + +/**************************************************************************//** + @Function P1023_GetDeviceDisableStatusRegister + + @Description Returns the value of DEVDISR (Device Disable Register) + + @Param[in] gutilBase - Base address of P1023 GUTIL registers. + + @Return Value of DEVDISR +*//***************************************************************************/ +uint32_t P1023_GetDeviceDisableStatusRegister(uintptr_t gutilBase); + +/**************************************************************************//** + @Function P1023_GetPorDeviceStatusRegister + + @Description Returns the value of POR Device Status Register + + @Param[in] gutilBase - Base address of P1023 GUTIL registers. + + @Return POR Device Status Register +*//***************************************************************************/ +uint32_t P1023_GetPorDeviceStatusRegister(uintptr_t gutilBase); + +/**************************************************************************//** + @Function P1023_GetPorBootModeStatusRegister + + @Description Returns the value of POR Boot Mode Status Register + + @Param[in] gutilBase - Base address of P1023 GUTIL registers. + + @Return POR Boot Mode Status Register value +*//***************************************************************************/ +uint32_t P1023_GetPorBootModeStatusRegister(uintptr_t gutilBase); + + +#define PORDEVSR_SGMII1_DIS 0x10000000 +#define PORDEVSR_SGMII2_DIS 0x08000000 +#define PORDEVSR_ECP1 0x02000000 +#define PORDEVSR_IO_SEL 0x00780000 +#define PORDEVSR_IO_SEL_SHIFT 19 +#define PORBMSR_HA 0x00070000 +#define PORBMSR_HA_SHIFT 16 + +#define DEVDISR_QM_BM 0x80000000 +#define DEVDISR_FM 0x40000000 +#define DEVDISR_PCIE1 0x20000000 +#define DEVDISR_MAC_SEC 0x10000000 +#define DEVDISR_ELBC 0x08000000 +#define DEVDISR_PCIE2 0x04000000 +#define DEVDISR_PCIE3 0x02000000 +#define DEVDISR_CAAM 0x01000000 +#define DEVDISR_USB0 0x00800000 +#define DEVDISR_1588 0x00020000 +#define DEVDISR_CORE0 0x00008000 +#define DEVDISR_TB0 0x00004000 +#define DEVDISR_CORE1 0x00002000 +#define DEVDISR_TB1 0x00001000 +#define DEVDISR_DMA1 0x00000400 +#define DEVDISR_DMA2 0x00000200 +#define DEVDISR_DDR 0x00000010 +#define DEVDISR_TSEC1 0x00000080 +#define DEVDISR_TSEC2 0x00000040 +#define DEVDISR_SPI 0x00000008 +#define DEVDISR_I2C 0x00000004 +#define DEVDISR_DUART 0x00000002 + + +#endif /* __PART_INTEGRATION_EXT_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/inc/integrations/P3040_P4080_P5020/dpaa_integration_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/inc/integrations/P3040_P4080_P5020/dpaa_integration_ext.h @@ -0,0 +1,452 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 dpaa_integration_ext.h + + @Description P4080 FM external definitions and structures. +*//***************************************************************************/ +#ifndef __DPAA_INTEGRATION_EXT_H +#define __DPAA_INTEGRATION_EXT_H + +#include "std_ext.h" + + +typedef enum { + e_DPAA_SWPORTAL0 = 0, + e_DPAA_SWPORTAL1, + e_DPAA_SWPORTAL2, + e_DPAA_SWPORTAL3, + e_DPAA_SWPORTAL4, + e_DPAA_SWPORTAL5, + e_DPAA_SWPORTAL6, + e_DPAA_SWPORTAL7, + e_DPAA_SWPORTAL8, + e_DPAA_SWPORTAL9, + e_DPAA_SWPORTAL_DUMMY_LAST +} e_DpaaSwPortal; + +typedef enum { + e_DPAA_DCPORTAL0 = 0, + e_DPAA_DCPORTAL1, + e_DPAA_DCPORTAL2, + e_DPAA_DCPORTAL3, + e_DPAA_DCPORTAL4, + e_DPAA_DCPORTAL_DUMMY_LAST +} e_DpaaDcPortal; + +#define DPAA_MAX_NUM_OF_SW_PORTALS e_DPAA_SWPORTAL_DUMMY_LAST +#define DPAA_MAX_NUM_OF_DC_PORTALS e_DPAA_DCPORTAL_DUMMY_LAST + +/***************************************************************************** + QMan INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ +#define QMAN_PM_DCP_COUNTERS_ERRATA_QMAN1 +#define QMAN_FQD_AVOID_BLK_ERRATA_QMAN2 +#define QMAN_DBG_TRC_EV_ERRATA_QMAN3 +#define QMAN_WQ_CS_CFG_ERRATA_QMAN4 +#define QMAN_SFDR_LEAK_ERRATA_QMAN5 +#define QMAN_FQ_TD_THRESH_ERRATA_QMAN6 +#define QMAN_FQ_INIT_ON_PARKED_ERRATA_QMAN7 +#define QMAN_NESN_ORR_ERRATA_QMAN8 +#define QMAN_ERN_REJ_CODE6_ERRATA_QMAN9 +#define QMAN_ERN_MOULTI_CORE_ERRATA_QMAN10 +#define QMAN_PERFMON_FOR_DCP_FQD_ERRATA_QMAN11 + +#define QM_MAX_NUM_OF_POOL_CHANNELS 15 +#define QM_MAX_NUM_OF_WQ 8 +#define QM_MAX_NUM_OF_SWP_AS 4 +#define QM_MAX_NUM_OF_CGS 256 +#define QM_MAX_NUM_OF_FQIDS (16*MEGABYTE) + +/**************************************************************************//** + @Description Work Queue Channel assignments in QMan. +*//***************************************************************************/ +typedef enum +{ + e_QM_FQ_CHANNEL_SWPORTAL0 = 0, /**< Dedicated channels serviced by software portals 0 to 9 */ + e_QM_FQ_CHANNEL_SWPORTAL1, + e_QM_FQ_CHANNEL_SWPORTAL2, + e_QM_FQ_CHANNEL_SWPORTAL3, + e_QM_FQ_CHANNEL_SWPORTAL4, + e_QM_FQ_CHANNEL_SWPORTAL5, + e_QM_FQ_CHANNEL_SWPORTAL6, + e_QM_FQ_CHANNEL_SWPORTAL7, + e_QM_FQ_CHANNEL_SWPORTAL8, + e_QM_FQ_CHANNEL_SWPORTAL9, + + e_QM_FQ_CHANNEL_POOL1 = 0x21, /**< Pool channels that can be serviced by any of the software portals */ + e_QM_FQ_CHANNEL_POOL2, + e_QM_FQ_CHANNEL_POOL3, + e_QM_FQ_CHANNEL_POOL4, + e_QM_FQ_CHANNEL_POOL5, + e_QM_FQ_CHANNEL_POOL6, + e_QM_FQ_CHANNEL_POOL7, + e_QM_FQ_CHANNEL_POOL8, + e_QM_FQ_CHANNEL_POOL9, + e_QM_FQ_CHANNEL_POOL10, + e_QM_FQ_CHANNEL_POOL11, + e_QM_FQ_CHANNEL_POOL12, + e_QM_FQ_CHANNEL_POOL13, + e_QM_FQ_CHANNEL_POOL14, + e_QM_FQ_CHANNEL_POOL15, + + e_QM_FQ_CHANNEL_FMAN0_SP0 = 0x40, /**< Dedicated channels serviced by Direct Connect Portal 0: + connected to FMan 0; assigned in incrementing order to + each sub-portal (SP) in the portal */ + e_QM_FQ_CHANNEL_FMAN0_SP1, + e_QM_FQ_CHANNEL_FMAN0_SP2, + e_QM_FQ_CHANNEL_FMAN0_SP3, + e_QM_FQ_CHANNEL_FMAN0_SP4, + e_QM_FQ_CHANNEL_FMAN0_SP5, + e_QM_FQ_CHANNEL_FMAN0_SP6, + e_QM_FQ_CHANNEL_FMAN0_SP7, + e_QM_FQ_CHANNEL_FMAN0_SP8, + e_QM_FQ_CHANNEL_FMAN0_SP9, + e_QM_FQ_CHANNEL_FMAN0_SP10, + e_QM_FQ_CHANNEL_FMAN0_SP11, + + e_QM_FQ_CHANNEL_FMAN1_SP0 = 0x60, + e_QM_FQ_CHANNEL_FMAN1_SP1, + e_QM_FQ_CHANNEL_FMAN1_SP2, + e_QM_FQ_CHANNEL_FMAN1_SP3, + e_QM_FQ_CHANNEL_FMAN1_SP4, + e_QM_FQ_CHANNEL_FMAN1_SP5, + e_QM_FQ_CHANNEL_FMAN1_SP6, + e_QM_FQ_CHANNEL_FMAN1_SP7, + e_QM_FQ_CHANNEL_FMAN1_SP8, + e_QM_FQ_CHANNEL_FMAN1_SP9, + e_QM_FQ_CHANNEL_FMAN1_SP10, + e_QM_FQ_CHANNEL_FMAN1_SP11, + + e_QM_FQ_CHANNEL_CAAM = 0x80, /**< Dedicated channel serviced by Direct Connect Portal 2: + connected to SEC 4.x */ + + e_QM_FQ_CHANNEL_PME = 0xA0, /**< Dedicated channel serviced by Direct Connect Portal 3: + connected to PME */ +} e_QmFQChannel; + +/* p4080-rev1 unique features */ +#define QM_CGS_NO_FRAME_MODE + +/***************************************************************************** + BMan INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ +#define BM_MAX_NUM_OF_POOLS 64 + +/***************************************************************************** + SEC INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ +/* SEC erratas */ +#ifdef UNDER_CONSTRUCTION_IPSEC +#define SEC_IPV6_UDP_CHECKSUM_UPDATE +#define SEC_UDP_LENGTH_UPDATE +#endif /* UNDER_CONSTRUCTION_IPSEC */ + +/***************************************************************************** + FM INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ +#define INTG_MAX_NUM_OF_FM 2 + +/* Ports defines */ +#define FM_MAX_NUM_OF_1G_RX_PORTS 5 +#define FM_MAX_NUM_OF_10G_RX_PORTS 1 +#define FM_MAX_NUM_OF_RX_PORTS (FM_MAX_NUM_OF_10G_RX_PORTS+FM_MAX_NUM_OF_1G_RX_PORTS) +#define FM_MAX_NUM_OF_1G_TX_PORTS 5 +#define FM_MAX_NUM_OF_10G_TX_PORTS 1 +#define FM_MAX_NUM_OF_TX_PORTS (FM_MAX_NUM_OF_10G_TX_PORTS+FM_MAX_NUM_OF_1G_TX_PORTS) +#define FM_MAX_NUM_OF_OH_PORTS 7 +#define FM_MAX_NUM_OF_1G_MACS (FM_MAX_NUM_OF_1G_RX_PORTS) +#define FM_MAX_NUM_OF_10G_MACS (FM_MAX_NUM_OF_10G_RX_PORTS) +#define FM_MAX_NUM_OF_MACS (FM_MAX_NUM_OF_1G_MACS+FM_MAX_NUM_OF_10G_MACS) + + +#define FM_PORT_MAX_NUM_OF_EXT_POOLS 8 /**< Number of external BM pools per Rx port */ +#define FM_PORT_NUM_OF_CONGESTION_GRPS 256 /**< Total number of congestion groups in QM */ +#define FM_MAX_NUM_OF_SUB_PORTALS 12 +#define FM_PORT_MAX_NUM_OF_OBSERVED_EXT_POOLS 0 + +/* RAMs defines */ +#define FM_MURAM_SIZE (160 * KILOBYTE) +#define FM_IRAM_SIZE ( 64 * KILOBYTE) + +/* PCD defines */ +#define FM_PCD_PLCR_NUM_ENTRIES 256 /**< Total number of policer profiles */ +#define FM_PCD_KG_NUM_OF_SCHEMES 32 /**< Total number of KG schemes */ +#define FM_PCD_MAX_NUM_OF_CLS_PLANS 256 /**< Number of classification plan entries. */ + +/* RTC defines */ +#define FM_RTC_NUM_OF_ALARMS 2 /**< RTC number of alarms */ +#define FM_RTC_NUM_OF_PERIODIC_PULSES 2 /**< RTC number of periodic pulses */ +#define FM_RTC_NUM_OF_EXT_TRIGGERS 2 /**< RTC number of external triggers */ + +/* QMI defines */ +#define QMI_MAX_NUM_OF_TNUMS 64 +#define MAX_QMI_DEQ_SUBPORTAL 12 +#define QMI_DEF_TNUMS_THRESH 48 + +/* FPM defines */ +#define FM_NUM_OF_FMAN_CTRL_EVENT_REGS 4 + +/* DMA defines */ +#define DMA_THRESH_MAX_COMMQ 31 +#define DMA_THRESH_MAX_BUF 127 + +/* BMI defines */ +#define BMI_MAX_NUM_OF_TASKS 128 +#define BMI_MAX_NUM_OF_DMAS 32 +#define BMI_MAX_FIFO_SIZE (FM_MURAM_SIZE) +#define PORT_MAX_WEIGHT 16 + +#ifdef UNDER_CONSTRUCTION_FRAG_REASSEMBLY +/* Reassembly defines */ +#define FM_MAX_NUM_OF_REASSEMBLY_PORTS 4 +#endif /* UNDER_CONSTRUCTION_FRAG_REASSEMBLY */ + + +/**************************************************************************//** + @Description Enum for inter-module interrupts registration +*//***************************************************************************/ +typedef enum e_FmEventModules{ + e_FM_MOD_PRS, /**< Parser event */ + e_FM_MOD_KG, /**< Keygen event */ + e_FM_MOD_PLCR, /**< Policer event */ + e_FM_MOD_10G_MAC, /**< 10G MAC error event */ + e_FM_MOD_1G_MAC, /**< 1G MAC error event */ + e_FM_MOD_TMR, /**< Timer event */ + e_FM_MOD_1G_MAC_TMR, /**< 1G MAC timer event */ + e_FM_MOD_FMAN_CTRL, /**< FMAN Controller timer event */ + e_FM_MOD_DUMMY_LAST +} e_FmEventModules; + +/**************************************************************************//** + @Description Enum for interrupts types +*//***************************************************************************/ +typedef enum e_FmIntrType { + e_FM_INTR_TYPE_ERR, + e_FM_INTR_TYPE_NORMAL +} e_FmIntrType; + +/**************************************************************************//** + @Description Enum for inter-module interrupts registration +*//***************************************************************************/ +typedef enum e_FmInterModuleEvent { + e_FM_EV_PRS, /**< Parser event */ + e_FM_EV_ERR_PRS, /**< Parser error event */ + e_FM_EV_KG, /**< Keygen event */ + e_FM_EV_ERR_KG, /**< Keygen error event */ + e_FM_EV_PLCR, /**< Policer event */ + e_FM_EV_ERR_PLCR, /**< Policer error event */ + e_FM_EV_ERR_10G_MAC0, /**< 10G MAC 0 error event */ + e_FM_EV_ERR_1G_MAC0, /**< 1G MAC 0 error event */ + e_FM_EV_ERR_1G_MAC1, /**< 1G MAC 1 error event */ + e_FM_EV_ERR_1G_MAC2, /**< 1G MAC 2 error event */ + e_FM_EV_ERR_1G_MAC3, /**< 1G MAC 3 error event */ + e_FM_EV_ERR_1G_MAC4, /**< 1G MAC 4 error event */ + e_FM_EV_TMR, /**< Timer event */ + e_FM_EV_1G_MAC1, /**< 1G MAC 1 event */ + e_FM_EV_1G_MAC2, /**< 1G MAC 2 event */ + e_FM_EV_1G_MAC3, /**< 1G MAC 3 event */ + e_FM_EV_1G_MAC4, /**< 1G MAC 3 event */ + e_FM_EV_1G_MAC0_TMR, /**< 1G MAC 0 Timer event */ + e_FM_EV_1G_MAC1_TMR, /**< 1G MAC 1 Timer event */ + e_FM_EV_1G_MAC2_TMR, /**< 1G MAC 2 Timer event */ + e_FM_EV_1G_MAC3_TMR, /**< 1G MAC 3 Timer event */ + e_FM_EV_1G_MAC4_TMR, /**< 1G MAC 4 Timer event */ + e_FM_EV_FMAN_CTRL_0, /**< Fman controller event 0 */ + e_FM_EV_FMAN_CTRL_1, /**< Fman controller event 1 */ + e_FM_EV_FMAN_CTRL_2, /**< Fman controller event 2 */ + e_FM_EV_FMAN_CTRL_3, /**< Fman controller event 3 */ + e_FM_EV_DUMMY_LAST +} e_FmInterModuleEvent; + +#define GET_FM_MODULE_EVENT(mod, id, intrType, event) \ + switch(mod){ \ + case e_FM_MOD_PRS: \ + if (id) event = e_FM_EV_DUMMY_LAST; \ + else event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_ERR_PRS : e_FM_EV_PRS; \ + break; \ + case e_FM_MOD_KG: \ + if (id) event = e_FM_EV_DUMMY_LAST; \ + else event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_ERR_KG : e_FM_EV_DUMMY_LAST; \ + break; \ + case e_FM_MOD_PLCR: \ + if (id) event = e_FM_EV_DUMMY_LAST; \ + else event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_ERR_PLCR : e_FM_EV_PLCR; \ + break; \ + case e_FM_MOD_10G_MAC: \ + if (id) event = e_FM_EV_DUMMY_LAST; \ + else event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_ERR_10G_MAC0 : e_FM_EV_DUMMY_LAST;\ + break; \ + case e_FM_MOD_1G_MAC: \ + switch(id){ \ + case(0): event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_ERR_1G_MAC0 : e_FM_EV_DUMMY_LAST; break; \ + case(1): event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_ERR_1G_MAC1 : e_FM_EV_DUMMY_LAST; break; \ + case(2): event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_ERR_1G_MAC2 : e_FM_EV_DUMMY_LAST; break; \ + case(3): event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_ERR_1G_MAC3 : e_FM_EV_DUMMY_LAST; break; \ + case(4): event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_ERR_1G_MAC4 : e_FM_EV_DUMMY_LAST; break; \ + } \ + break; \ + case e_FM_MOD_TMR: \ + if (id) event = e_FM_EV_DUMMY_LAST; \ + else event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_DUMMY_LAST : e_FM_EV_TMR; \ + break; \ + case e_FM_MOD_1G_MAC_TMR: \ + switch(id){ \ + case(0): event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_DUMMY_LAST : e_FM_EV_1G_MAC0_TMR; break;\ + case(1): event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_DUMMY_LAST : e_FM_EV_1G_MAC1_TMR; break;\ + case(2): event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_DUMMY_LAST : e_FM_EV_1G_MAC2_TMR; break;\ + case(3): event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_DUMMY_LAST : e_FM_EV_1G_MAC3_TMR; break;\ + case(4): event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_DUMMY_LAST : e_FM_EV_1G_MAC4_TMR; break;\ + } \ + break; \ + case e_FM_MOD_FMAN_CTRL: \ + if (intrType == e_FM_INTR_TYPE_ERR) event = e_FM_EV_DUMMY_LAST; \ + else switch(id){ \ + case(0): event = e_FM_EV_FMAN_CTRL_0; break; \ + case(1): event = e_FM_EV_FMAN_CTRL_1; break; \ + case(2): event = e_FM_EV_FMAN_CTRL_2; break; \ + case(3): event = e_FM_EV_FMAN_CTRL_3; break; \ + } \ + break; \ + default: event = e_FM_EV_DUMMY_LAST; \ + break;} + +#define FM_CHECK_PORT_RESTRICTIONS(__validPorts, __newPortIndx) TRUE + +/* p4080-rev1 unique features */ +#define FM_PARTITION_ARRAY +#define FM_PPPOE_NO_MTU_CHECK + +/* p4080 unique features */ +#ifdef UNDER_CONSTRUCTION_IPSEC +#define FM_ETH_TYPE_FIX +#define FM_DISABLE_SEC_ERRORS +#endif /* UNDER_CONSTRUCTION_IPSEC */ +#define FM_QMI_DEQ_OPTIONS_SUPPORT +#define FM_NO_DISPATCH_RAM_ECC +#define FM_FIFO_ALLOCATION_OLD_ALG +#define FM_NO_WATCHDOG +#define FM_NO_TNUM_AGING +#define FM_NO_TGEC_LOOPBACK +#define FM_KG_NO_BYPASS_FQID_GEN +#define FM_KG_NO_BYPASS_PLCR_PROFILE_GEN +#define FM_NO_BACKUP_POOLS +#define FM_NO_OP_OBSERVED_POOLS +#define FM_NO_ADVANCED_RATE_LIMITER +#define FM_NO_OP_OBSERVED_CGS + +/* FM erratas */ +#define FM_SINGLE_MDIO_ERRATA_GEN8 /* implemented in platform */ +#define FM_HALT_SIG_ERRATA_GEN12 + +#define FM_10G_MDIO_HOLD_ERRATA_XAUI3 /* implemented in platform */ +#define FM_10G_PCS_ALIGNMENT_ERRATA_XAUI4 /* implemented in platform */ + +#define FM_IEEE_BAD_TS_ERRATA_IEEE1588_A001 /* No implementation, Out of LLD scope */ + +#define FM_FALSE_RDRP_ERRATA_10GMAC_A001 /* No implementation, Out of LLD scope */ +#define FM_RX_EXTRA_BYTES_ERRATA_10GMAC_A002 /* No implementation, Out of LLD scope */ +#define FM_TX_PAUSE_ON_ENABLE_ERRATA_10GMAC_A003 /* No implementation, Out of LLD scope */ +#define FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 +#define FM_TX_SHORT_FRAME_BAD_TS_ERRATA_10GMAC_A006 /* No implementation, Out of LLD scope */ +#define FM_TX_FIFO_CORRUPTION_ERRATA_10GMAC_A007 +#define FM_ECC_HALT_NO_SYNC_ERRATA_10GMAC_A008 + +#define FM_TX_INVALID_ECC_ERRATA_10GMAC_A009 + +#define FM_NO_RX_PREAM_ERRATA_DTSECx1 +#define FM_RX_PREAM_4_ERRATA_DTSEC_A001 FM_NO_RX_PREAM_ERRATA_DTSECx1 +#define FM_GRS_ERRATA_DTSEC_A002 +#define FM_BAD_TX_TS_IN_B_2_B_ERRATA_DTSEC_A003 +#define FM_GTS_ERRATA_DTSEC_A004 +#define FM_PAUSE_BLOCK_ERRATA_DTSEC_A006 /* do nothing */ +#define FM_RESERVED_ACCESS_TO_DISABLED_DEV_ERRATA_DTSEC_A0011 /* do nothing */ +#define FM_GTS_AFTER_MAC_ABORTED_FRAME_ERRATA_DTSEC_A0012 FM_GTS_ERRATA_DTSEC_A004 + +#define FM_SHORT_PAUSE_TIME_ERRATA_DTSEC1 +#define FM_MAGIC_PACKET_UNRECOGNIZED_ERRATA_DTSEC2 /* No implementation, Out of LLD scope */ +#define FM_10_100_SGMII_NO_TS_ERRATA_DTSEC3 +#define FM_TX_LOCKUP_ERRATA_DTSEC6 + +#define FM_IM_TX_SYNC_SKIP_TNUM_ERRATA_FMAN_A001 /* Implemented by ucode */ +#define FM_RX_PIPELINE_OF_DATA_CORRUPTION_ERRATA_FMAN_A002 /* No implementation, Out of LLD scope */ +#define FM_HC_DEF_FQID_ONLY_ERRATA_FMAN_A003 /* Implemented by ucode */ + +#define FM_1588_SRC_CLK_ERRATA_FMAN1 +#define FM_NO_RUNNING_SUM_FOR_DBG_N_SWPRS_ERRATA_FMAN2 /* No implementation, Out of LLD scope */ +#define FM_IM_TX_SHARED_TNUM_ERRATA_FMAN4 /* Implemented by ucode */ +#define FM_IM_GS_DEADLOCK_ERRATA_FMAN5 /* Implemented by ucode */ +#define FM_PORT_SYNC_ERRATA_FMAN6 +#define FM_RAM_LIST_ERR_IRQ_ERRATA_FMAN8 +#define FM_BMI_PIPELINE_ERR_IRQ_ERRATA_FMAN9 +#define FM_IM_DEQ_PIPELINE_DEPTH_ERRATA_FMAN10 /* Implemented by ucode */ +#define FM_CC_GEN6_MISSMATCH_ERRATA_FMAN12 /* Implemented by ucode */ +#define FM_CC_CHANGE_SHARED_TNUM_ERRATA_FMAN13 /* Implemented by ucode */ +#define FM_IM_LARGE_MRBLR_ERRATA_FMAN15 /* Implemented by ucode */ +#define FM_RESET_ERRATA_FMAN16 /* No implementation, Out of LLD scope */ +#define FM_IPV4_HDRLEN0_ERRATA_FMAN17 /* No implementation, Out of LLD scope */ +#define FM_INCORRECT_CS_ERRATA_FMAN18 +#define FM_ILLEGAL_FRM_LEN_ERRATA_FMAN20 /* No implementation, Out of LLD scope */ +#define FM_OP_PORT_QMAN_REJECT_ERRATA_FMAN21 + +#define FM_PRS_L4_SHELL_ERRATA_FMANb +#define FM_BMI_TO_RISC_ENQ_ERRATA_FMANc +#define FM_INVALID_SWPRS_DATA_ERRATA_FMANd /* No implementation, Out of LLD scope */ +//#define FM_PRS_L4_NO_CLEAR_ERRATA_FMANe /* No implementation, No patch yet */ +//#define FM_PRS_MPLS_ERROR_ERRATA_FMANf /* No implementation, No patch yet */ +#define FM_PORT_COUNTERS_ERRATA_FMANg +#define FM_BAD_RX_FD_ERRATA_FMANh /* No implementation, Out of LLD scope */ +//#define FM_PRS_MPLS_SSA_ERRATA_FMANj /* No implementation, No patch yet */ +//#define FM_PRS_INITIAL_PLANID_ERRATA_FMANk /* No implementation, No patch yet */ + + +#define FM_OP_PARTITION_ERRATA_FMANx8 +#define FM_PORT_DISABLED_ERRATA_FMANx9 +#define FM_TX_PORT_IM_OR_ERRATA_FMANx11 /* Implemented by ucode */ +#define FM_PORT_EXCESSIVE_BUDGET_ERRATA_FMANx16 +#define FM_PORT_OTF_CHANGES_ERRATA_FMANx12 FM_PORT_EXCESSIVE_BUDGET_ERRATA_FMANx16 +#define FM_SOFT_RESET_ERRATA_FMANx15 /* No implementation, Out of LLD scope */ + +#define FM_UCODE_NOT_RESET_ERRATA_BUGZILLA6173 + +#define FM_PRS_MEM_ERRATA_FMAN_SW003 +#define FM_LEN_CHECK_ERRATA_FMAN_SW002 +#define FM_10G_REM_N_LCL_FLT_EX_ERRATA_10GMAC001 + +#ifdef UNDER_CONSTRUCTION_IPSEC +#define FM_NO_COPY_CTXA_CTXB_ERRATA_FMAN_SW001 +#endif /* UNDER_CONSTRUCTION_IPSEC */ + + +#endif /* __DPAA_INTEGRATION_EXT_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/inc/integrations/P3040_P4080_P5020/part_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/inc/integrations/P3040_P4080_P5020/part_ext.h @@ -0,0 +1,83 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 part_ext.h + + @Description Definitions for the part (integration) module. +*//***************************************************************************/ + +#ifndef __PART_EXT_H +#define __PART_EXT_H + +#include "std_ext.h" +#include "part_integration_ext.h" + + +#if !(defined(MPC8306) || \ + defined(MPC8309) || \ + defined(MPC834x) || \ + defined(MPC836x) || \ + defined(MPC832x) || \ + defined(MPC837x) || \ + defined(MPC8568) || \ + defined(MPC8569) || \ + defined(P1020) || \ + defined(P1021) || \ + defined(P1022) || \ + defined(P1023) || \ + defined(P2020) || \ + defined(P2040) || \ + defined(P3041) || \ + defined(P4080) || \ + defined(SC4080) || \ + defined(P5020) || \ + defined(MSC814x)) +#error "unable to proceed without chip-definition" +#endif /* !(defined(MPC834x) || ... */ + + +/**************************************************************************//* + @Description Part data structure - must be contained in any integration + data structure. +*//***************************************************************************/ +typedef struct t_Part +{ + uintptr_t (* f_GetModuleBase)(t_Handle h_Part, e_ModuleId moduleId); + /**< Returns the address of the module's memory map base. */ + e_ModuleId (* f_GetModuleIdByBase)(t_Handle h_Part, uintptr_t baseAddress); + /**< Returns the module's ID according to its memory map base. */ +} t_Part; + + +#endif /* __PART_EXT_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/inc/integrations/P3040_P4080_P5020/part_integration_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/inc/integrations/P3040_P4080_P5020/part_integration_ext.h @@ -0,0 +1,331 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 part_integration_ext.h + + @Description P3040/P4080/P5020 external definitions and structures. +*//***************************************************************************/ +#ifndef __PART_INTEGRATION_EXT_H +#define __PART_INTEGRATION_EXT_H + +#include "std_ext.h" +#include "dpaa_integration_ext.h" + + +/**************************************************************************//** + @Group P3040/P4080/P5020_chip_id P5020 Application Programming Interface + + @Description P3040/P4080/P5020 Chip functions,definitions and enums. + + @{ +*//***************************************************************************/ + +#define CORE_E500MC + +#define INTG_MAX_NUM_OF_CORES 1 + + +/**************************************************************************//** + @Description Module types. +*//***************************************************************************/ +typedef enum e_ModuleId +{ + e_MODULE_ID_DUART_1 = 0, + e_MODULE_ID_DUART_2, + e_MODULE_ID_DUART_3, + e_MODULE_ID_DUART_4, + e_MODULE_ID_LAW, + e_MODULE_ID_LBC, + e_MODULE_ID_PAMU, + e_MODULE_ID_QM, /**< Queue manager module */ + e_MODULE_ID_BM, /**< Buffer manager module */ + e_MODULE_ID_QM_CE_PORTAL_0, + e_MODULE_ID_QM_CI_PORTAL_0, + e_MODULE_ID_QM_CE_PORTAL_1, + e_MODULE_ID_QM_CI_PORTAL_1, + e_MODULE_ID_QM_CE_PORTAL_2, + e_MODULE_ID_QM_CI_PORTAL_2, + e_MODULE_ID_QM_CE_PORTAL_3, + e_MODULE_ID_QM_CI_PORTAL_3, + e_MODULE_ID_QM_CE_PORTAL_4, + e_MODULE_ID_QM_CI_PORTAL_4, + e_MODULE_ID_QM_CE_PORTAL_5, + e_MODULE_ID_QM_CI_PORTAL_5, + e_MODULE_ID_QM_CE_PORTAL_6, + e_MODULE_ID_QM_CI_PORTAL_6, + e_MODULE_ID_QM_CE_PORTAL_7, + e_MODULE_ID_QM_CI_PORTAL_7, + e_MODULE_ID_QM_CE_PORTAL_8, + e_MODULE_ID_QM_CI_PORTAL_8, + e_MODULE_ID_QM_CE_PORTAL_9, + e_MODULE_ID_QM_CI_PORTAL_9, + e_MODULE_ID_BM_CE_PORTAL_0, + e_MODULE_ID_BM_CI_PORTAL_0, + e_MODULE_ID_BM_CE_PORTAL_1, + e_MODULE_ID_BM_CI_PORTAL_1, + e_MODULE_ID_BM_CE_PORTAL_2, + e_MODULE_ID_BM_CI_PORTAL_2, + e_MODULE_ID_BM_CE_PORTAL_3, + e_MODULE_ID_BM_CI_PORTAL_3, + e_MODULE_ID_BM_CE_PORTAL_4, + e_MODULE_ID_BM_CI_PORTAL_4, + e_MODULE_ID_BM_CE_PORTAL_5, + e_MODULE_ID_BM_CI_PORTAL_5, + e_MODULE_ID_BM_CE_PORTAL_6, + e_MODULE_ID_BM_CI_PORTAL_6, + e_MODULE_ID_BM_CE_PORTAL_7, + e_MODULE_ID_BM_CI_PORTAL_7, + e_MODULE_ID_BM_CE_PORTAL_8, + e_MODULE_ID_BM_CI_PORTAL_8, + e_MODULE_ID_BM_CE_PORTAL_9, + e_MODULE_ID_BM_CI_PORTAL_9, + e_MODULE_ID_FM1, /**< Frame manager #1 module */ + e_MODULE_ID_FM1_RTC, /**< FM Real-Time-Clock */ + e_MODULE_ID_FM1_MURAM, /**< FM Multi-User-RAM */ + e_MODULE_ID_FM1_BMI, /**< FM BMI block */ + e_MODULE_ID_FM1_QMI, /**< FM QMI block */ + e_MODULE_ID_FM1_PRS, /**< FM parser block */ + e_MODULE_ID_FM1_PORT_HO0, /**< FM Host-command/offline-parsing port block */ + e_MODULE_ID_FM1_PORT_HO1, /**< FM Host-command/offline-parsing port block */ + e_MODULE_ID_FM1_PORT_HO2, /**< FM Host-command/offline-parsing port block */ + e_MODULE_ID_FM1_PORT_HO3, /**< FM Host-command/offline-parsing port block */ + e_MODULE_ID_FM1_PORT_HO4, /**< FM Host-command/offline-parsing port block */ + e_MODULE_ID_FM1_PORT_HO5, /**< FM Host-command/offline-parsing port block */ + e_MODULE_ID_FM1_PORT_HO6, /**< FM Host-command/offline-parsing port block */ + e_MODULE_ID_FM1_PORT_1GRx0, /**< FM Rx 1G MAC port block */ + e_MODULE_ID_FM1_PORT_1GRx1, /**< FM Rx 1G MAC port block */ + e_MODULE_ID_FM1_PORT_1GRx2, /**< FM Rx 1G MAC port block */ + e_MODULE_ID_FM1_PORT_1GRx3, /**< FM Rx 1G MAC port block */ + e_MODULE_ID_FM1_PORT_1GRx4, /**< FM Rx 1G MAC port block */ + e_MODULE_ID_FM1_PORT_10GRx0, /**< FM Rx 10G MAC port block */ + e_MODULE_ID_FM1_PORT_1GTx0, /**< FM Tx 1G MAC port block */ + e_MODULE_ID_FM1_PORT_1GTx1, /**< FM Tx 1G MAC port block */ + e_MODULE_ID_FM1_PORT_1GTx2, /**< FM Tx 1G MAC port block */ + e_MODULE_ID_FM1_PORT_1GTx3, /**< FM Tx 1G MAC port block */ + e_MODULE_ID_FM1_PORT_1GTx4, /**< FM Tx 1G MAC port block */ + e_MODULE_ID_FM1_PORT_10GTx0, /**< FM Tx 10G MAC port block */ + e_MODULE_ID_FM1_PLCR, /**< FM Policer */ + e_MODULE_ID_FM1_KG, /**< FM Keygen */ + e_MODULE_ID_FM1_DMA, /**< FM DMA */ + e_MODULE_ID_FM1_FPM, /**< FM FPM */ + e_MODULE_ID_FM1_IRAM, /**< FM Instruction-RAM */ + e_MODULE_ID_FM1_1GMDIO0, /**< FM 1G MDIO MAC 0*/ + e_MODULE_ID_FM1_1GMDIO1, /**< FM 1G MDIO MAC 1*/ + e_MODULE_ID_FM1_1GMDIO2, /**< FM 1G MDIO MAC 2*/ + e_MODULE_ID_FM1_1GMDIO3, /**< FM 1G MDIO MAC 3*/ + e_MODULE_ID_FM1_10GMDIO, /**< FM 10G MDIO */ + e_MODULE_ID_FM1_PRS_IRAM, /**< FM SW-parser Instruction-RAM */ + e_MODULE_ID_FM1_1GMAC0, /**< FM 1G MAC #0 */ + e_MODULE_ID_FM1_1GMAC1, /**< FM 1G MAC #1 */ + e_MODULE_ID_FM1_1GMAC2, /**< FM 1G MAC #2 */ + e_MODULE_ID_FM1_1GMAC3, /**< FM 1G MAC #3 */ + e_MODULE_ID_FM1_10GMAC0, /**< FM 10G MAC #0 */ + + e_MODULE_ID_FM2, /**< Frame manager #2 module */ + e_MODULE_ID_FM2_RTC, /**< FM Real-Time-Clock */ + e_MODULE_ID_FM2_MURAM, /**< FM Multi-User-RAM */ + e_MODULE_ID_FM2_BMI, /**< FM BMI block */ + e_MODULE_ID_FM2_QMI, /**< FM QMI block */ + e_MODULE_ID_FM2_PRS, /**< FM parser block */ + e_MODULE_ID_FM2_PORT_HO0, /**< FM Host-command/offline-parsing port block */ + e_MODULE_ID_FM2_PORT_HO1, /**< FM Host-command/offline-parsing port block */ + e_MODULE_ID_FM2_PORT_HO2, /**< FM Host-command/offline-parsing port block */ + e_MODULE_ID_FM2_PORT_HO3, /**< FM Host-command/offline-parsing port block */ + e_MODULE_ID_FM2_PORT_HO4, /**< FM Host-command/offline-parsing port block */ + e_MODULE_ID_FM2_PORT_HO5, /**< FM Host-command/offline-parsing port block */ + e_MODULE_ID_FM2_PORT_HO6, /**< FM Host-command/offline-parsing port block */ + e_MODULE_ID_FM2_PORT_1GRx0, /**< FM Rx 1G MAC port block */ + e_MODULE_ID_FM2_PORT_1GRx1, /**< FM Rx 1G MAC port block */ + e_MODULE_ID_FM2_PORT_1GRx2, /**< FM Rx 1G MAC port block */ + e_MODULE_ID_FM2_PORT_1GRx3, /**< FM Rx 1G MAC port block */ + e_MODULE_ID_FM2_PORT_10GRx0, /**< FM Rx 10G MAC port block */ + e_MODULE_ID_FM2_PORT_1GTx0, /**< FM Tx 1G MAC port block */ + e_MODULE_ID_FM2_PORT_1GTx1, /**< FM Tx 1G MAC port block */ + e_MODULE_ID_FM2_PORT_1GTx2, /**< FM Tx 1G MAC port block */ + e_MODULE_ID_FM2_PORT_1GTx3, /**< FM Tx 1G MAC port block */ + e_MODULE_ID_FM2_PORT_10GTx0, /**< FM Tx 10G MAC port block */ + e_MODULE_ID_FM2_PLCR, /**< FM Policer */ + e_MODULE_ID_FM2_KG, /**< FM Keygen */ + e_MODULE_ID_FM2_DMA, /**< FM DMA */ + e_MODULE_ID_FM2_FPM, /**< FM FPM */ + e_MODULE_ID_FM2_IRAM, /**< FM Instruction-RAM */ + e_MODULE_ID_FM2_1GMDIO0, /**< FM 1G MDIO MAC 0*/ + e_MODULE_ID_FM2_1GMDIO1, /**< FM 1G MDIO MAC 1*/ + e_MODULE_ID_FM2_1GMDIO2, /**< FM 1G MDIO MAC 2*/ + e_MODULE_ID_FM2_1GMDIO3, /**< FM 1G MDIO MAC 3*/ + e_MODULE_ID_FM2_10GMDIO, /**< FM 10G MDIO */ + e_MODULE_ID_FM2_PRS_IRAM, /**< FM SW-parser Instruction-RAM */ + e_MODULE_ID_FM2_1GMAC0, /**< FM 1G MAC #0 */ + e_MODULE_ID_FM2_1GMAC1, /**< FM 1G MAC #1 */ + e_MODULE_ID_FM2_1GMAC2, /**< FM 1G MAC #2 */ + e_MODULE_ID_FM2_1GMAC3, /**< FM 1G MAC #3 */ + e_MODULE_ID_FM2_10GMAC0, /**< FM 10G MAC #0 */ + + e_MODULE_ID_SEC_GEN, /**< SEC 4.0 General registers */ + e_MODULE_ID_SEC_QI, /**< SEC 4.0 QI registers */ + e_MODULE_ID_SEC_JQ0, /**< SEC 4.0 JQ-0 registers */ + e_MODULE_ID_SEC_JQ1, /**< SEC 4.0 JQ-1 registers */ + e_MODULE_ID_SEC_JQ2, /**< SEC 4.0 JQ-2 registers */ + e_MODULE_ID_SEC_JQ3, /**< SEC 4.0 JQ-3 registers */ + e_MODULE_ID_SEC_RTIC, /**< SEC 4.0 RTIC registers */ + e_MODULE_ID_SEC_DECO0_CCB0, /**< SEC 4.0 DECO-0/CCB-0 registers */ + e_MODULE_ID_SEC_DECO1_CCB1, /**< SEC 4.0 DECO-1/CCB-1 registers */ + e_MODULE_ID_SEC_DECO2_CCB2, /**< SEC 4.0 DECO-2/CCB-2 registers */ + e_MODULE_ID_SEC_DECO3_CCB3, /**< SEC 4.0 DECO-3/CCB-3 registers */ + e_MODULE_ID_SEC_DECO4_CCB4, /**< SEC 4.0 DECO-4/CCB-4 registers */ + + e_MODULE_ID_MPIC, /**< MPIC */ + e_MODULE_ID_GPIO, /**< GPIO */ + e_MODULE_ID_SERDES, /**< SERDES */ + e_MODULE_ID_CPC_1, /**< CoreNet-Platform-Cache 1 */ + e_MODULE_ID_CPC_2, /**< CoreNet-Platform-Cache 2 */ + + e_MODULE_ID_SRIO_PORTS, /**< RapidIO controller */ + e_MODULE_ID_SRIO_MU, /**< RapidIO messaging unit module */ + + e_MODULE_ID_DUMMY_LAST +} e_ModuleId; + +#define NUM_OF_MODULES e_MODULE_ID_DUMMY_LAST + + +/***************************************************************************** + INTEGRATION-SPECIFIC MODULE CODES +******************************************************************************/ +#define MODULE_UNKNOWN 0x00000000 +#define MODULE_MEM 0x00010000 +#define MODULE_MM 0x00020000 +#define MODULE_CORE 0x00030000 +#define MODULE_CHIP 0x00040000 +#define MODULE_PLTFRM 0x00050000 +#define MODULE_PM 0x00060000 +#define MODULE_MMU 0x00070000 +#define MODULE_PIC 0x00080000 +#define MODULE_CPC 0x00090000 +#define MODULE_DUART 0x000a0000 +#define MODULE_SERDES 0x000b0000 +#define MODULE_PIO 0x000c0000 +#define MODULE_QM 0x000d0000 +#define MODULE_BM 0x000e0000 +#define MODULE_SEC 0x000f0000 +#define MODULE_LAW 0x00100000 +#define MODULE_LBC 0x00110000 +#define MODULE_PAMU 0x00120000 +#define MODULE_FM 0x00130000 +#define MODULE_FM_MURAM 0x00140000 +#define MODULE_FM_PCD 0x00150000 +#define MODULE_FM_RTC 0x00160000 +#define MODULE_FM_MAC 0x00170000 +#define MODULE_FM_PORT 0x00180000 +#define MODULE_DPA 0x00190000 +#define MODULE_SRIO 0x00200000 +#define MODULE_DMA 0x00100000 + +/***************************************************************************** + PAMU INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ +#define PAMU_NUM_OF_PARTITIONS 5 + +#define PAMU_PICS_AVICS_ERRATA_PAMU3 + +/***************************************************************************** + LAW INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ +#define LAW_NUM_OF_WINDOWS 32 +#define LAW_MIN_WINDOW_SIZE 0x0000000000001000LL /**< 4KB */ +#define LAW_MAX_WINDOW_SIZE 0x0000002000000000LL /**< 64GB */ + + +/***************************************************************************** + LBC INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ +/**************************************************************************//** + @Group lbc_exception_grp LBC Exception Unit + + @Description LBC Exception unit API functions, definitions and enums + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Anchor lbc_exbm + + @Collection LBC Errors Bit Mask + + These errors are reported through the exceptions callback.. + The values can be or'ed in any combination in the errors mask + parameter of the errors report structure. + + These errors can also be passed as a bit-mask to + LBC_EnableErrorChecking() or LBC_DisableErrorChecking(), + for enabling or disabling error checking. + @{ +*//***************************************************************************/ +#define LBC_ERR_BUS_MONITOR 0x80000000 /**< Bus monitor error */ +#define LBC_ERR_PARITY_ECC 0x20000000 /**< Parity error for GPCM/UPM */ +#define LBC_ERR_WRITE_PROTECT 0x04000000 /**< Write protection error */ +#define LBC_ERR_ATOMIC_WRITE 0x00800000 /**< Atomic write error */ +#define LBC_ERR_ATOMIC_READ 0x00400000 /**< Atomic read error */ +#define LBC_ERR_CHIP_SELECT 0x00080000 /**< Unrecognized chip select */ + +#define LBC_ERR_ALL (LBC_ERR_BUS_MONITOR | LBC_ERR_PARITY_ECC | \ + LBC_ERR_WRITE_PROTECT | LBC_ERR_ATOMIC_WRITE | \ + LBC_ERR_ATOMIC_READ | LBC_ERR_CHIP_SELECT) + /**< All possible errors */ +/* @} */ +/** @} */ /* end of lbc_exception_grp group */ + +#define LBC_INCORRECT_ERROR_REPORT_ERRATA + +#define LBC_NUM_OF_BANKS 8 +#define LBC_MAX_CS_SIZE 0x0000000100000000LL +#define LBC_ATOMIC_OPERATION_SUPPORT +#define LBC_PARITY_SUPPORT +#define LBC_ADDRESS_HOLD_TIME_CTRL +#define LBC_HIGH_CLK_DIVIDERS +#define LBC_FCM_AVAILABLE + +/***************************************************************************** + GPIO INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ +#define GPIO_NUM_OF_PORTS 1 /**< Number of ports in GPIO module; + Each port contains up to 32 i/O pins. */ + +#define GPIO_VALID_PIN_MASKS \ + { /* Port A */ 0xFFFFFFFF } + +#define GPIO_VALID_INTR_MASKS \ + { /* Port A */ 0xFFFFFFFF } + +#endif /* __PART_INTEGRATION_EXT_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/inc/math_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/inc/math_ext.h @@ -0,0 +1,98 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 __MATH_EXT_H +#define __MATH_EXT_H + + +#if defined(NCSW_LINUX) && defined(__KERNEL__) +#include + +#elif defined(__MWERKS__) +#define LOW(x) ( sizeof(x)==8 ? *(1+(int32_t*)&x) : (*(int32_t*)&x)) +#define HIGH(x) (*(int32_t*)&x) +#define ULOW(x) ( sizeof(x)==8 ? *(1+(uint32_t*)&x) : (*(uint32_t*)&x)) +#define UHIGH(x) (*(uint32_t*)&x) + +static const double big = 1.0e300; + +/* Macro for checking if a number is a power of 2 */ +static __inline__ double ceil(double x) +{ + int32_t i0,i1,j0; /*- cc 020130 -*/ + uint32_t i,j; /*- cc 020130 -*/ + i0 = HIGH(x); + i1 = LOW(x); + j0 = ((i0>>20)&0x7ff)-0x3ff; + if(j0<20) { + if(j0<0) { /* raise inexact if x != 0 */ + if(big+x>0.0) {/* return 0*sign(x) if |x|<1 */ + if(i0<0) {i0=0x80000000;i1=0;} + else if((i0|i1)!=0) { i0=0x3ff00000;i1=0;} + } + } else { + i = (uint32_t)(0x000fffff)>>j0; + if(((i0&i)|i1)==0) return x; /* x is integral */ + if(big+x>0.0) { /* raise inexact flag */ + if(i0>0) i0 += (0x00100000)>>j0; + i0 &= (~i); i1=0; + } + } + } else if (j0>51) { + if(j0==0x400) return x+x; /* inf or NaN */ + else return x; /* x is integral */ + } else { + i = ((uint32_t)(0xffffffff))>>(j0-20); /*- cc 020130 -*/ + if((i1&i)==0) return x; /* x is integral */ + if(big+x>0.0) { /* raise inexact flag */ + if(i0>0) { + if(j0==20) i0+=1; + else { + j = (uint32_t)(i1 + (1<<(52-j0))); + if(j +#endif /* defined(NCSW_LINUX) && defined(__KERNEL__) */ + + +#endif /* __MATH_EXT_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/inc/ncsw_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/inc/ncsw_ext.h @@ -0,0 +1,430 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 ncsw_ext.h + + @Description General NetCommSw Standard Definitions +*//***************************************************************************/ + +#ifndef __NCSW_EXT_H +#define __NCSW_EXT_H + +#include "memcpy_ext.h" + + +#define WRITE_BLOCK IOMemSet32 +#define COPY_BLOCK Mem2IOCpy32 + +#define PTR_TO_UINT(_ptr) ((uintptr_t)(_ptr)) +#define UINT_TO_PTR(_val) ((void*)(uintptr_t)(_val)) + +#define PTR_MOVE(_ptr, _offset) (void*)((uint8_t*)(_ptr) + (_offset)) + + +#define WRITE_UINT8_UINT24(arg, data08, data24) WRITE_UINT32(arg,((uint32_t)(data08)<<24)|((uint32_t)(data24)&0x00FFFFFF)) +#define WRITE_UINT24_UINT8(arg, data24, data08) WRITE_UINT32(arg,((uint32_t)(data24)<< 8)|((uint32_t)(data08)&0x000000FF)) + +/* Little-Endian access macros */ + +#define WRITE_UINT16_LE(arg, data) \ + WRITE_UINT16((arg), SwapUint16(data)) + +#define WRITE_UINT32_LE(arg, data) \ + WRITE_UINT32((arg), SwapUint32(data)) + +#define WRITE_UINT64_LE(arg, data) \ + WRITE_UINT64((arg), SwapUint64(data)) + +#define GET_UINT16_LE(arg) \ + SwapUint16(GET_UINT16(arg)) + +#define GET_UINT32_LE(arg) \ + SwapUint32(GET_UINT32(arg)) + +#define GET_UINT64_LE(arg) \ + SwapUint64(GET_UINT64(arg)) + +/* Write and Read again macros */ +#define WRITE_UINT_SYNC(size, arg, data) \ + do { \ + WRITE_UINT##size((arg), (data)); \ + CORE_MemoryBarrier(); \ + } while (0) + +#define WRITE_UINT8_SYNC(arg, data) WRITE_UINT_SYNC(8, (arg), (data)) + +#define WRITE_UINT16_SYNC(arg, data) WRITE_UINT_SYNC(16, (arg), (data)) +#define WRITE_UINT32_SYNC(arg, data) WRITE_UINT_SYNC(32, (arg), (data)) + +#define MAKE_UINT64(high32, low32) (((uint64_t)high32 << 32) | (low32)) + + +/*----------------------*/ +/* Miscellaneous macros */ +/*----------------------*/ + +#define UNUSED(X) (X=X) + +#define KILOBYTE 0x400UL /* 1024 */ +#define MEGABYTE (KILOBYTE * KILOBYTE) /* 1024*1024 */ +#define GIGABYTE (KILOBYTE * MEGABYTE) /* 1024*1024*1024 */ + +#undef NO_IRQ +#define NO_IRQ (-1) +#define NCSW_MASTER_ID (0) + +/* Macro for checking if a number is a power of 2 */ +#define POWER_OF_2(n) (!((n) & ((n)-1))) + +/* Macro for calculating log of base 2 */ +#define LOG2(num, log2Num) \ + do \ + { \ + uint64_t tmp = (num); \ + log2Num = 0; \ + while (tmp > 1) \ + { \ + log2Num++; \ + tmp >>= 1; \ + } \ + } while (0) + +#define NEXT_POWER_OF_2(_num, _nextPow) \ +do \ +{ \ + if (POWER_OF_2(_num)) \ + _nextPow = (_num); \ + else \ + { \ + uint64_t tmp = (_num); \ + _nextPow = 1; \ + while (tmp) \ + { \ + _nextPow <<= 1; \ + tmp >>= 1; \ + } \ + } \ +} while (0) + +/* Ceiling division - not the fastest way, but safer in terms of overflow */ +#define DIV_CEIL(x,y) (((x)/(y)) + ((((((x)/(y)))*(y)) == (x)) ? 0 : 1)) + +/* Round up a number to be a multiple of a second number */ +#define ROUND_UP(x,y) ((((x) + (y) - 1) / (y)) * (y)) + +/* Timing macro for converting usec units to number of ticks. */ +/* (number of usec * clock_Hz) / 1,000,000) - since */ +/* clk is in MHz units, no division needed. */ +#define USEC_TO_CLK(usec,clk) ((usec) * (clk)) +#define CYCLES_TO_USEC(cycles,clk) ((cycles) / (clk)) + +/* Timing macros for converting between nsec units and number of clocks. */ +#define NSEC_TO_CLK(nsec,clk) DIV_CEIL(((nsec) * (clk)), 1000) +#define CYCLES_TO_NSEC(cycles,clk) (((cycles) * 1000) / (clk)) + +/* Timing macros for converting between psec units and number of clocks. */ +#define PSEC_TO_CLK(psec,clk) DIV_CEIL(((psec) * (clk)), 1000000) +#define CYCLES_TO_PSEC(cycles,clk) (((cycles) * 1000000) / (clk)) + +/* Min, Max macros */ +#define MIN(a,b) ((a) < (b) ? (a) : (b)) +#define MAX(a,b) ((a) > (b) ? (a) : (b)) +#define IN_RANGE(min,val,max) ((min)<=(val) && (val)<=(max)) + +#define ABS(a) ((a<0)?(a*-1):a) + +#if !(defined(ARRAY_SIZE)) +#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) +#endif /* !defined(ARRAY_SIZE) */ + + +/* possible alignments */ +#define HALF_WORD_ALIGNMENT 2 +#define WORD_ALIGNMENT 4 +#define DOUBLE_WORD_ALIGNMENT 8 +#define BURST_ALIGNMENT 32 + +#define HALF_WORD_ALIGNED 0x00000001 +#define WORD_ALIGNED 0x00000003 +#define DOUBLE_WORD_ALIGNED 0x00000007 +#define BURST_ALIGNED 0x0000001f +#ifndef IS_ALIGNED +#define IS_ALIGNED(n,align) (!((uint32_t)(n) & (align - 1))) +#endif /* IS_ALIGNED */ + + +#define LAST_BUF 1 +#define FIRST_BUF 2 +#define SINGLE_BUF (LAST_BUF | FIRST_BUF) +#define MIDDLE_BUF 4 + +#define ARRAY_END -1 + +#define ILLEGAL_BASE (~0) + +#define BUF_POSITION(first, last) state[(!!(last))<<1 | !!(first)] +#define DECLARE_POSITION static uint8_t state[4] = { (uint8_t)MIDDLE_BUF, (uint8_t)FIRST_BUF, (uint8_t)LAST_BUF, (uint8_t)SINGLE_BUF }; + + +/**************************************************************************//** + @Description Timers operation mode +*//***************************************************************************/ +typedef enum e_TimerMode +{ + e_TIMER_MODE_INVALID = 0, + e_TIMER_MODE_FREE_RUN, /**< Free run - counter continues to increase + after reaching the reference value. */ + e_TIMER_MODE_PERIODIC, /**< Periodic - counter restarts counting from 0 + after reaching the reference value. */ + e_TIMER_MODE_SINGLE /**< Single (one-shot) - counter stops counting + after reaching the reference value. */ +} e_TimerMode; + + +/**************************************************************************//** + @Description Enumeration (bit flags) of communication modes (Transmit, + receive or both). +*//***************************************************************************/ +typedef enum e_CommMode +{ + e_COMM_MODE_NONE = 0, /**< No transmit/receive communication */ + e_COMM_MODE_RX = 1, /**< Only receive communication */ + e_COMM_MODE_TX = 2, /**< Only transmit communication */ + e_COMM_MODE_RX_AND_TX = 3 /**< Both transmit and receive communication */ +} e_CommMode; + +/**************************************************************************//** + @Description General Diagnostic Mode +*//***************************************************************************/ +typedef enum e_DiagMode +{ + e_DIAG_MODE_NONE = 0, /**< Normal operation; no diagnostic mode */ + e_DIAG_MODE_CTRL_LOOPBACK, /**< Loopback in the controller */ + e_DIAG_MODE_CHIP_LOOPBACK, /**< Loopback in the chip but not in the + controller; e.g. IO-pins, SerDes, etc. */ + e_DIAG_MODE_PHY_LOOPBACK, /**< Loopback in the external PHY */ + e_DIAG_MODE_EXT_LOOPBACK, /**< Loopback in the external line (beyond the PHY) */ + e_DIAG_MODE_CTRL_ECHO, /**< Echo incoming data by the controller */ + e_DIAG_MODE_PHY_ECHO /**< Echo incoming data by the PHY */ +} e_DiagMode; + +/**************************************************************************//** + @Description Possible RxStore callback responses. +*//***************************************************************************/ +typedef enum e_RxStoreResponse +{ + e_RX_STORE_RESPONSE_PAUSE /**< Pause invoking callback with received data; + in polling mode, start again invoking callback + only next time user invokes the receive routine; + in interrupt mode, start again invoking callback + only next time a receive event triggers an interrupt; + in all cases, received data that are pending are not + lost, rather, their processing is temporarily deferred; + in all cases, received data are processed in the order + in which they were received. */ + , e_RX_STORE_RESPONSE_CONTINUE /**< Continue invoking callback with received data. */ +} e_RxStoreResponse; + + +/**************************************************************************//** + @Description General Handle +*//***************************************************************************/ +typedef void * t_Handle; /**< handle, used as object's descriptor */ + +/**************************************************************************//** + @Description MUTEX type +*//***************************************************************************/ +typedef uint32_t t_Mutex; + +/**************************************************************************//** + @Description Error Code. + + The high word of the error code is the code of the software + module (driver). The low word is the error type (e_ErrorType). + To get the values from the error code, use GET_ERROR_TYPE() + and GET_ERROR_MODULE(). +*//***************************************************************************/ +typedef uint32_t t_Error; + +/**************************************************************************//** + @Description General prototype of interrupt service routine (ISR). + + @Param[in] handle - Optional handle of the module handling the interrupt. + + @Return None + *//***************************************************************************/ +typedef void (t_Isr)(t_Handle handle); + +/**************************************************************************//** + @Anchor mem_attr + + @Collection Memory Attributes + + Various attributes of memory partitions. These values may be + or'ed together to create a mask of all memory attributes. + @{ +*//***************************************************************************/ +#define MEMORY_ATTR_CACHEABLE 0x00000001 + /**< Memory is cacheable */ +#define MEMORY_ATTR_QE_2ND_BUS_ACCESS 0x00000002 + /**< Memory can be accessed by QUICC Engine + through its secondary bus interface */ + +/* @} */ + + +/**************************************************************************//** + @Function t_GetBufFunction + + @Description User callback function called by driver to get data buffer. + + User provides this function. Driver invokes it. + + @Param[in] h_BufferPool - A handle to buffer pool manager + @Param[out] p_BufContextHandle - Returns the user's private context that + should be associated with the buffer + + @Return Pointer to data buffer, NULL if error + *//***************************************************************************/ +typedef uint8_t * (t_GetBufFunction)(t_Handle h_BufferPool, + t_Handle *p_BufContextHandle); + +/**************************************************************************//** + @Function t_PutBufFunction + + @Description User callback function called by driver to return data buffer. + + User provides this function. Driver invokes it. + + @Param[in] h_BufferPool - A handle to buffer pool manager + @Param[in] p_Buffer - A pointer to buffer to return + @Param[in] h_BufContext - The user's private context associated with + the returned buffer + + @Return E_OK on success; Error code otherwise + *//***************************************************************************/ +typedef t_Error (t_PutBufFunction)(t_Handle h_BufferPool, + uint8_t *p_Buffer, + t_Handle h_BufContext); + +/**************************************************************************//** + @Function t_PhysToVirt + + @Description Translates a physical address to the matching virtual address. + + @Param[in] addr - The physical address to translate. + + @Return Virtual address. +*//***************************************************************************/ +typedef void * t_PhysToVirt(physAddress_t addr); + +/**************************************************************************//** + @Function t_VirtToPhys + + @Description Translates a virtual address to the matching physical address. + + @Param[in] addr - The virtual address to translate. + + @Return Physical address. +*//***************************************************************************/ +typedef physAddress_t t_VirtToPhys(void *addr); + +/**************************************************************************//** + @Description Buffer Pool Information Structure. +*//***************************************************************************/ +typedef struct t_BufferPoolInfo +{ + t_Handle h_BufferPool; /**< A handle to the buffer pool manager */ + t_GetBufFunction *f_GetBuf; /**< User callback to get a free buffer */ + t_PutBufFunction *f_PutBuf; /**< User callback to return a buffer */ + uint16_t bufferSize; /**< Buffer size (in bytes) */ + + t_PhysToVirt *f_PhysToVirt; /**< User callback to translate pool buffers + physical addresses to virtual addresses */ + t_VirtToPhys *f_VirtToPhys; /**< User callback to translate pool buffers + virtual addresses to physical addresses */ +} t_BufferPoolInfo; + + +/**************************************************************************//** + @Description User callback function called by driver when transmit completed. + + User provides this function. Driver invokes it. + + @Param[in] h_App - Application's handle, as was provided to the + driver by the user + @Param[in] queueId - Transmit queue ID + @Param[in] p_Data - Pointer to the data buffer + @Param[in] h_BufContext - The user's private context associated with + the given data buffer + @Param[in] status - Transmit status and errors + @Param[in] flags - Driver-dependent information + *//***************************************************************************/ +typedef void (t_TxConfFunction)(t_Handle h_App, + uint32_t queueId, + uint8_t *p_Data, + t_Handle h_BufContext, + uint16_t status, + uint32_t flags); + +/**************************************************************************//** + @Description User callback function called by driver with receive data. + + User provides this function. Driver invokes it. + + @Param[in] h_App - Application's handle, as was provided to the + driver by the user + @Param[in] queueId - Receive queue ID + @Param[in] p_Data - Pointer to the buffer with received data + @Param[in] h_BufContext - The user's private context associated with + the given data buffer + @Param[in] length - Length of received data + @Param[in] status - Receive status and errors + @Param[in] position - Position of buffer in frame + @Param[in] flags - Driver-dependent information + + @Retval e_RX_STORE_RESPONSE_CONTINUE - order the driver to continue Rx + operation for all ready data. + @Retval e_RX_STORE_RESPONSE_PAUSE - order the driver to stop Rx operation. + *//***************************************************************************/ +typedef e_RxStoreResponse (t_RxStoreFunction)(t_Handle h_App, + uint32_t queueId, + uint8_t *p_Data, + t_Handle h_BufContext, + uint32_t length, + uint16_t status, + uint8_t position, + uint32_t flags); + + +#endif /* __NCSW_EXT_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/inc/net_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/inc/net_ext.h @@ -0,0 +1,388 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 net_ext.h + + @Description This file contains common and general netcomm headers definitions. +*//***************************************************************************/ +#ifndef __NET_EXT_H +#define __NET_EXT_H + +#include "std_ext.h" + + +typedef uint8_t headerFieldPpp_t; + +#define NET_HEADER_FIELD_PPP_PID (1) +#define NET_HEADER_FIELD_PPP_COMPRESSED (NET_HEADER_FIELD_PPP_PID << 1) +#define NET_HEADER_FIELD_PPP_ALL_FIELDS ((NET_HEADER_FIELD_PPP_PID << 2) - 1) + + +typedef uint8_t headerFieldPppoe_t; + +#define NET_HEADER_FIELD_PPPoE_VER (1) +#define NET_HEADER_FIELD_PPPoE_TYPE (NET_HEADER_FIELD_PPPoE_VER << 1) +#define NET_HEADER_FIELD_PPPoE_CODE (NET_HEADER_FIELD_PPPoE_VER << 2) +#define NET_HEADER_FIELD_PPPoE_SID (NET_HEADER_FIELD_PPPoE_VER << 3) +#define NET_HEADER_FIELD_PPPoE_LEN (NET_HEADER_FIELD_PPPoE_VER << 4) +#define NET_HEADER_FIELD_PPPoE_SESSION (NET_HEADER_FIELD_PPPoE_VER << 5) +#define NET_HEADER_FIELD_PPPoE_PID (NET_HEADER_FIELD_PPPoE_VER << 6) +#define NET_HEADER_FIELD_PPPoE_ALL_FIELDS ((NET_HEADER_FIELD_PPPoE_VER << 7) - 1) + +#define NET_HEADER_FIELD_PPPMUX_PID (1) +#define NET_HEADER_FIELD_PPPMUX_CKSUM (NET_HEADER_FIELD_PPPMUX_PID << 1) +#define NET_HEADER_FIELD_PPPMUX_COMPRESSED (NET_HEADER_FIELD_PPPMUX_PID << 2) +#define NET_HEADER_FIELD_PPPMUX_ALL_FIELDS ((NET_HEADER_FIELD_PPPMUX_PID << 3) - 1) + +#define NET_HEADER_FIELD_PPPMUX_SUBFRAME_PFF (1) +#define NET_HEADER_FIELD_PPPMUX_SUBFRAME_LXT (NET_HEADER_FIELD_PPPMUX_SUBFRAME_PFF << 1) +#define NET_HEADER_FIELD_PPPMUX_SUBFRAME_LEN (NET_HEADER_FIELD_PPPMUX_SUBFRAME_PFF << 2) +#define NET_HEADER_FIELD_PPPMUX_SUBFRAME_PID (NET_HEADER_FIELD_PPPMUX_SUBFRAME_PFF << 3) +#define NET_HEADER_FIELD_PPPMUX_SUBFRAME_USE_PID (NET_HEADER_FIELD_PPPMUX_SUBFRAME_PFF << 4) +#define NET_HEADER_FIELD_PPPMUX_SUBFRAME_ALL_FIELDS ((NET_HEADER_FIELD_PPPMUX_SUBFRAME_PFF << 5) - 1) + + +typedef uint8_t headerFieldEth_t; + +#define NET_HEADER_FIELD_ETH_DA (1) +#define NET_HEADER_FIELD_ETH_SA (NET_HEADER_FIELD_ETH_DA << 1) +#define NET_HEADER_FIELD_ETH_LENGTH (NET_HEADER_FIELD_ETH_DA << 2) +#define NET_HEADER_FIELD_ETH_TYPE (NET_HEADER_FIELD_ETH_DA << 3) +#define NET_HEADER_FIELD_ETH_FINAL_CKSUM (NET_HEADER_FIELD_ETH_DA << 4) +#define NET_HEADER_FIELD_ETH_PADDING (NET_HEADER_FIELD_ETH_DA << 5) +#define NET_HEADER_FIELD_ETH_ALL_FIELDS ((NET_HEADER_FIELD_ETH_DA << 6) - 1) + + +typedef uint16_t headerFieldIpv4_t; + +#define NET_HEADER_FIELD_IPv4_VER (1) +#define NET_HEADER_FIELD_IPv4_HDR_LEN (NET_HEADER_FIELD_IPv4_VER << 1) +#define NET_HEADER_FIELD_IPv4_TOS (NET_HEADER_FIELD_IPv4_VER << 2) +#define NET_HEADER_FIELD_IPv4_TOTAL_LEN (NET_HEADER_FIELD_IPv4_VER << 3) +#define NET_HEADER_FIELD_IPv4_ID (NET_HEADER_FIELD_IPv4_VER << 4) +#define NET_HEADER_FIELD_IPv4_FLAG_D (NET_HEADER_FIELD_IPv4_VER << 5) +#define NET_HEADER_FIELD_IPv4_FLAG_M (NET_HEADER_FIELD_IPv4_VER << 6) +#define NET_HEADER_FIELD_IPv4_OFFSET (NET_HEADER_FIELD_IPv4_VER << 7) +#define NET_HEADER_FIELD_IPv4_TTL (NET_HEADER_FIELD_IPv4_VER << 8) +#define NET_HEADER_FIELD_IPv4_PROTO (NET_HEADER_FIELD_IPv4_VER << 9) +#define NET_HEADER_FIELD_IPv4_CKSUM (NET_HEADER_FIELD_IPv4_VER << 10) +#define NET_HEADER_FIELD_IPv4_SRC_IP (NET_HEADER_FIELD_IPv4_VER << 11) +#define NET_HEADER_FIELD_IPv4_DST_IP (NET_HEADER_FIELD_IPv4_VER << 12) +#define NET_HEADER_FIELD_IPv4_OPTS (NET_HEADER_FIELD_IPv4_VER << 13) +#define NET_HEADER_FIELD_IPv4_OPTS_COUNT (NET_HEADER_FIELD_IPv4_VER << 14) +#define NET_HEADER_FIELD_IPv4_ALL_FIELDS ((NET_HEADER_FIELD_IPv4_VER << 15) - 1) + + +typedef uint8_t headerFieldIpv6_t; + +#define NET_HEADER_FIELD_IPv6_VER (1) +#define NET_HEADER_FIELD_IPv6_TC (NET_HEADER_FIELD_IPv6_VER << 1) +#define NET_HEADER_FIELD_IPv6_SRC_IP (NET_HEADER_FIELD_IPv6_VER << 2) +#define NET_HEADER_FIELD_IPv6_DST_IP (NET_HEADER_FIELD_IPv6_VER << 3) +#define NET_HEADER_FIELD_IPv6_NEXT_HDR (NET_HEADER_FIELD_IPv6_VER << 4) +#define NET_HEADER_FIELD_IPv6_FL (NET_HEADER_FIELD_IPv6_VER << 5) +#define NET_HEADER_FIELD_IPv6_HOP_LIMIT (NET_HEADER_FIELD_IPv6_VER << 6) +#define NET_HEADER_FIELD_IPv6_ALL_FIELDS ((NET_HEADER_FIELD_IPv6_VER << 7) - 1) + +#define NET_HEADER_FIELD_ICMP_TYPE (1) +#define NET_HEADER_FIELD_ICMP_CODE (NET_HEADER_FIELD_ICMP_TYPE << 1) +#define NET_HEADER_FIELD_ICMP_CKSUM (NET_HEADER_FIELD_ICMP_TYPE << 2) +#define NET_HEADER_FIELD_ICMP_ID (NET_HEADER_FIELD_ICMP_TYPE << 3) +#define NET_HEADER_FIELD_ICMP_SQ_NUM (NET_HEADER_FIELD_ICMP_TYPE << 4) +#define NET_HEADER_FIELD_ICMP_ALL_FIELDS ((NET_HEADER_FIELD_ICMP_TYPE << 5) - 1) + +#define NET_HEADER_FIELD_IGMP_VERSION (1) +#define NET_HEADER_FIELD_IGMP_TYPE (NET_HEADER_FIELD_IGMP_VERSION << 1) +#define NET_HEADER_FIELD_IGMP_CKSUM (NET_HEADER_FIELD_IGMP_VERSION << 2) +#define NET_HEADER_FIELD_IGMP_DATA (NET_HEADER_FIELD_IGMP_VERSION << 3) +#define NET_HEADER_FIELD_IGMP_ALL_FIELDS ((NET_HEADER_FIELD_IGMP_VERSION << 4) - 1) + + +typedef uint16_t headerFieldTcp_t; + +#define NET_HEADER_FIELD_TCP_PORT_SRC (1) +#define NET_HEADER_FIELD_TCP_PORT_DST (NET_HEADER_FIELD_TCP_PORT_SRC << 1) +#define NET_HEADER_FIELD_TCP_SEQ (NET_HEADER_FIELD_TCP_PORT_SRC << 2) +#define NET_HEADER_FIELD_TCP_ACK (NET_HEADER_FIELD_TCP_PORT_SRC << 3) +#define NET_HEADER_FIELD_TCP_OFFSET (NET_HEADER_FIELD_TCP_PORT_SRC << 4) +#define NET_HEADER_FIELD_TCP_FLAGS (NET_HEADER_FIELD_TCP_PORT_SRC << 5) +#define NET_HEADER_FIELD_TCP_WINDOW (NET_HEADER_FIELD_TCP_PORT_SRC << 6) +#define NET_HEADER_FIELD_TCP_CKSUM (NET_HEADER_FIELD_TCP_PORT_SRC << 7) +#define NET_HEADER_FIELD_TCP_URGPTR (NET_HEADER_FIELD_TCP_PORT_SRC << 8) +#define NET_HEADER_FIELD_TCP_OPTS (NET_HEADER_FIELD_TCP_PORT_SRC << 9) +#define NET_HEADER_FIELD_TCP_OPTS_COUNT (NET_HEADER_FIELD_TCP_PORT_SRC << 10) +#define NET_HEADER_FIELD_TCP_ALL_FIELDS ((NET_HEADER_FIELD_TCP_PORT_SRC << 11) - 1) + + +typedef uint8_t headerFieldSctp_t; + +#define NET_HEADER_FIELD_SCTP_PORT_SRC (1) +#define NET_HEADER_FIELD_SCTP_PORT_DST (NET_HEADER_FIELD_SCTP_PORT_SRC << 1) +#define NET_HEADER_FIELD_SCTP_VER_TAG (NET_HEADER_FIELD_SCTP_PORT_SRC << 2) +#define NET_HEADER_FIELD_SCTP_CKSUM (NET_HEADER_FIELD_SCTP_PORT_SRC << 3) +#define NET_HEADER_FIELD_SCTP_ALL_FIELDS ((NET_HEADER_FIELD_SCTP_PORT_SRC << 4) - 1) + + +typedef uint8_t headerFieldDccp_t; + +#define NET_HEADER_FIELD_DCCP_PORT_SRC (1) +#define NET_HEADER_FIELD_DCCP_PORT_DST (NET_HEADER_FIELD_DCCP_PORT_SRC << 1) +#define NET_HEADER_FIELD_DCCP_ALL_FIELDS ((NET_HEADER_FIELD_DCCP_PORT_SRC << 2) - 1) + + +typedef uint8_t headerFieldUdp_t; + +#define NET_HEADER_FIELD_UDP_PORT_SRC (1) +#define NET_HEADER_FIELD_UDP_PORT_DST (NET_HEADER_FIELD_UDP_PORT_SRC << 1) +#define NET_HEADER_FIELD_UDP_LEN (NET_HEADER_FIELD_UDP_PORT_SRC << 2) +#define NET_HEADER_FIELD_UDP_CKSUM (NET_HEADER_FIELD_UDP_PORT_SRC << 3) +#define NET_HEADER_FIELD_UDP_ALL_FIELDS ((NET_HEADER_FIELD_UDP_PORT_SRC << 4) - 1) + +typedef uint8_t headerFieldUdpEncapEsp_t; + +#define NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_SRC (1) +#define NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_DST (NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_SRC << 1) +#define NET_HEADER_FIELD_UDP_ENCAP_ESP_LEN (NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_SRC << 2) +#define NET_HEADER_FIELD_UDP_ENCAP_ESP_CKSUM (NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_SRC << 3) +#define NET_HEADER_FIELD_UDP_ENCAP_ESP_SPI (NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_SRC << 4) +#define NET_HEADER_FIELD_UDP_ENCAP_ESP_SEQUENCE_NUM (NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_SRC << 5) +#define NET_HEADER_FIELD_UDP_ENCAP_ESP_ALL_FIELDS ((NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_SRC << 6) - 1) + +#define NET_HEADER_FIELD_IPHC_CID (1) +#define NET_HEADER_FIELD_IPHC_CID_TYPE (NET_HEADER_FIELD_IPHC_CID << 1) +#define NET_HEADER_FIELD_IPHC_HCINDEX (NET_HEADER_FIELD_IPHC_CID << 2) +#define NET_HEADER_FIELD_IPHC_GEN (NET_HEADER_FIELD_IPHC_CID << 3) +#define NET_HEADER_FIELD_IPHC_D_BIT (NET_HEADER_FIELD_IPHC_CID << 4) +#define NET_HEADER_FIELD_IPHC_ALL_FIELDS ((NET_HEADER_FIELD_IPHC_CID << 5) - 1) + +#define NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE (1) +#define NET_HEADER_FIELD_SCTP_CHUNK_DATA_FLAGS (NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 1) +#define NET_HEADER_FIELD_SCTP_CHUNK_DATA_LENGTH (NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 2) +#define NET_HEADER_FIELD_SCTP_CHUNK_DATA_TSN (NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 3) +#define NET_HEADER_FIELD_SCTP_CHUNK_DATA_STREAM_ID (NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 4) +#define NET_HEADER_FIELD_SCTP_CHUNK_DATA_STREAM_SQN (NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 5) +#define NET_HEADER_FIELD_SCTP_CHUNK_DATA_PAYLOAD_PID (NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 6) +#define NET_HEADER_FIELD_SCTP_CHUNK_DATA_UNORDERED (NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 7) +#define NET_HEADER_FIELD_SCTP_CHUNK_DATA_BEGGINING (NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 8) +#define NET_HEADER_FIELD_SCTP_CHUNK_DATA_END (NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 9) +#define NET_HEADER_FIELD_SCTP_CHUNK_DATA_ALL_FIELDS ((NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 10) - 1) + +#define NET_HEADER_FIELD_L2TPv2_TYPE_BIT (1) +#define NET_HEADER_FIELD_L2TPv2_LENGTH_BIT (NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 1) +#define NET_HEADER_FIELD_L2TPv2_SEQUENCE_BIT (NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 2) +#define NET_HEADER_FIELD_L2TPv2_OFFSET_BIT (NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 3) +#define NET_HEADER_FIELD_L2TPv2_PRIORITY_BIT (NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 4) +#define NET_HEADER_FIELD_L2TPv2_VERSION (NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 5) +#define NET_HEADER_FIELD_L2TPv2_LEN (NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 6) +#define NET_HEADER_FIELD_L2TPv2_TUNNEL_ID (NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 7) +#define NET_HEADER_FIELD_L2TPv2_SESSION_ID (NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 8) +#define NET_HEADER_FIELD_L2TPv2_NS (NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 9) +#define NET_HEADER_FIELD_L2TPv2_NR (NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 10) +#define NET_HEADER_FIELD_L2TPv2_OFFSET_SIZE (NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 11) +#define NET_HEADER_FIELD_L2TPv2_FIRST_BYTE (NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 12) +#define NET_HEADER_FIELD_L2TPv2_ALL_FIELDS ((NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 13) - 1) + +#define NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT (1) +#define NET_HEADER_FIELD_L2TPv3_CTRL_LENGTH_BIT (NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT << 1) +#define NET_HEADER_FIELD_L2TPv3_CTRL_SEQUENCE_BIT (NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT << 2) +#define NET_HEADER_FIELD_L2TPv3_CTRL_VERSION (NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT << 3) +#define NET_HEADER_FIELD_L2TPv3_CTRL_LENGTH (NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT << 4) +#define NET_HEADER_FIELD_L2TPv3_CTRL_CONTROL (NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT << 5) +#define NET_HEADER_FIELD_L2TPv3_CTRL_SENT (NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT << 6) +#define NET_HEADER_FIELD_L2TPv3_CTRL_RECV (NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT << 7) +#define NET_HEADER_FIELD_L2TPv3_CTRL_FIRST_BYTE (NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT << 8) +#define NET_HEADER_FIELD_L2TPv3_CTRL_ALL_FIELDS ((NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT << 9) - 1) + +#define NET_HEADER_FIELD_L2TPv3_SESS_TYPE_BIT (1) +#define NET_HEADER_FIELD_L2TPv3_SESS_VERSION (NET_HEADER_FIELD_L2TPv3_SESS_TYPE_BIT << 1) +#define NET_HEADER_FIELD_L2TPv3_SESS_ID (NET_HEADER_FIELD_L2TPv3_SESS_TYPE_BIT << 2) +#define NET_HEADER_FIELD_L2TPv3_SESS_COOKIE (NET_HEADER_FIELD_L2TPv3_SESS_TYPE_BIT << 3) +#define NET_HEADER_FIELD_L2TPv3_SESS_ALL_FIELDS ((NET_HEADER_FIELD_L2TPv3_SESS_TYPE_BIT << 4) - 1) + + +typedef uint8_t headerFieldVlan_t; + +#define NET_HEADER_FIELD_VLAN_VPRI (1) +#define NET_HEADER_FIELD_VLAN_CFI (NET_HEADER_FIELD_VLAN_VPRI << 1) +#define NET_HEADER_FIELD_VLAN_VID (NET_HEADER_FIELD_VLAN_VPRI << 2) +#define NET_HEADER_FIELD_VLAN_LENGTH (NET_HEADER_FIELD_VLAN_VPRI << 3) +#define NET_HEADER_FIELD_VLAN_TYPE (NET_HEADER_FIELD_VLAN_VPRI << 4) +#define NET_HEADER_FIELD_VLAN_ALL_FIELDS ((NET_HEADER_FIELD_VLAN_VPRI << 5) - 1) + +#define NET_HEADER_FIELD_VLAN_TCI (NET_HEADER_FIELD_VLAN_VPRI | \ + NET_HEADER_FIELD_VLAN_CFI | \ + NET_HEADER_FIELD_VLAN_VID) + + +typedef uint8_t headerFieldLlc_t; + +#define NET_HEADER_FIELD_LLC_DSAP (1) +#define NET_HEADER_FIELD_LLC_SSAP (NET_HEADER_FIELD_LLC_DSAP << 1) +#define NET_HEADER_FIELD_LLC_CTRL (NET_HEADER_FIELD_LLC_DSAP << 2) +#define NET_HEADER_FIELD_LLC_ALL_FIELDS ((NET_HEADER_FIELD_LLC_DSAP << 3) - 1) + +#define NET_HEADER_FIELD_NLPID_NLPID (1) +#define NET_HEADER_FIELD_NLPID_ALL_FIELDS ((NET_HEADER_FIELD_NLPID_NLPID << 1) - 1) + + +typedef uint8_t headerFieldSnap_t; + +#define NET_HEADER_FIELD_SNAP_OUI (1) +#define NET_HEADER_FIELD_SNAP_PID (NET_HEADER_FIELD_SNAP_OUI << 1) +#define NET_HEADER_FIELD_SNAP_ALL_FIELDS ((NET_HEADER_FIELD_SNAP_OUI << 2) - 1) + + +typedef uint8_t headerFieldLlcSnap_t; + +#define NET_HEADER_FIELD_LLC_SNAP_TYPE (1) +#define NET_HEADER_FIELD_LLC_SNAP_ALL_FIELDS ((NET_HEADER_FIELD_LLC_SNAP_TYPE << 1) - 1) + +#define NET_HEADER_FIELD_ARP_HTYPE (1) +#define NET_HEADER_FIELD_ARP_PTYPE (NET_HEADER_FIELD_ARP_HTYPE << 1) +#define NET_HEADER_FIELD_ARP_HLEN (NET_HEADER_FIELD_ARP_HTYPE << 2) +#define NET_HEADER_FIELD_ARP_PLEN (NET_HEADER_FIELD_ARP_HTYPE << 3) +#define NET_HEADER_FIELD_ARP_OPER (NET_HEADER_FIELD_ARP_HTYPE << 4) +#define NET_HEADER_FIELD_ARP_SHA (NET_HEADER_FIELD_ARP_HTYPE << 5) +#define NET_HEADER_FIELD_ARP_SPA (NET_HEADER_FIELD_ARP_HTYPE << 6) +#define NET_HEADER_FIELD_ARP_THA (NET_HEADER_FIELD_ARP_HTYPE << 7) +#define NET_HEADER_FIELD_ARP_TPA (NET_HEADER_FIELD_ARP_HTYPE << 8) +#define NET_HEADER_FIELD_ARP_ALL_FIELDS ((NET_HEADER_FIELD_ARP_HTYPE << 9) - 1) + +#define NET_HEADER_FIELD_RFC2684_LLC (1) +#define NET_HEADER_FIELD_RFC2684_NLPID (NET_HEADER_FIELD_RFC2684_LLC << 1) +#define NET_HEADER_FIELD_RFC2684_OUI (NET_HEADER_FIELD_RFC2684_LLC << 2) +#define NET_HEADER_FIELD_RFC2684_PID (NET_HEADER_FIELD_RFC2684_LLC << 3) +#define NET_HEADER_FIELD_RFC2684_VPN_OUI (NET_HEADER_FIELD_RFC2684_LLC << 4) +#define NET_HEADER_FIELD_RFC2684_VPN_IDX (NET_HEADER_FIELD_RFC2684_LLC << 5) +#define NET_HEADER_FIELD_RFC2684_ALL_FIELDS ((NET_HEADER_FIELD_RFC2684_LLC << 6) - 1) + +#define NET_HEADER_FIELD_USER_DEFINED_SRCPORT (1) +#define NET_HEADER_FIELD_USER_DEFINED_PCDID (NET_HEADER_FIELD_USER_DEFINED_SRCPORT << 1) +#define NET_HEADER_FIELD_USER_DEFINED_ALL_FIELDS ((NET_HEADER_FIELD_USER_DEFINED_SRCPORT << 2) - 1) + +#define NET_HEADER_FIELD_PAYLOAD_BUFFER (1) +#define NET_HEADER_FIELD_PAYLOAD_SIZE (NET_HEADER_FIELD_PAYLOAD_BUFFER << 1) +#define NET_HEADER_FIELD_MAX_FRM_SIZE (NET_HEADER_FIELD_PAYLOAD_BUFFER << 2) +#define NET_HEADER_FIELD_MIN_FRM_SIZE (NET_HEADER_FIELD_PAYLOAD_BUFFER << 3) +#define NET_HEADER_FIELD_PAYLOAD_TYPE (NET_HEADER_FIELD_PAYLOAD_BUFFER << 4) +#define NET_HEADER_FIELD_FRAME_SIZE (NET_HEADER_FIELD_PAYLOAD_BUFFER << 5) +#define NET_HEADER_FIELD_PAYLOAD_ALL_FIELDS ((NET_HEADER_FIELD_PAYLOAD_BUFFER << 6) - 1) + + +typedef uint8_t headerFieldGre_t; + +#define NET_HEADER_FIELD_GRE_TYPE (1) +#define NET_HEADER_FIELD_GRE_ALL_FIELDS ((NET_HEADER_FIELD_GRE_TYPE << 1) - 1) + + +typedef uint8_t headerFieldMinencap_t; + +#define NET_HEADER_FIELD_MINENCAP_SRC_IP (1) +#define NET_HEADER_FIELD_MINENCAP_DST_IP (NET_HEADER_FIELD_MINENCAP_SRC_IP << 1) +#define NET_HEADER_FIELD_MINENCAP_TYPE (NET_HEADER_FIELD_MINENCAP_SRC_IP << 2) +#define NET_HEADER_FIELD_MINENCAP_ALL_FIELDS ((NET_HEADER_FIELD_MINENCAP_SRC_IP << 3) - 1) + + +typedef uint8_t headerFieldIpsecAh_t; + +#define NET_HEADER_FIELD_IPSEC_AH_SPI (1) +#define NET_HEADER_FIELD_IPSEC_AH_NH (NET_HEADER_FIELD_IPSEC_AH_SPI << 1) +#define NET_HEADER_FIELD_IPSEC_AH_ALL_FIELDS ((NET_HEADER_FIELD_IPSEC_AH_SPI << 2) - 1) + + +typedef uint8_t headerFieldIpsecEsp_t; + +#define NET_HEADER_FIELD_IPSEC_ESP_SPI (1) +#define NET_HEADER_FIELD_IPSEC_ESP_SEQUENCE_NUM (NET_HEADER_FIELD_IPSEC_ESP_SPI << 1) +#define NET_HEADER_FIELD_IPSEC_ESP_ALL_FIELDS ((NET_HEADER_FIELD_IPSEC_ESP_SPI << 2) - 1) + + +typedef uint8_t headerFieldMpls_t; + +#define NET_HEADER_FIELD_MPLS_LABEL_STACK (1) +#define NET_HEADER_FIELD_MPLS_LABEL_STACK_ALL_FIELDS ((NET_HEADER_FIELD_MPLS_LABEL_STACK << 1) - 1) + + +typedef uint8_t headerFieldMacsec_t; + +#define NET_HEADER_FIELD_MACSEC_SECTAG (1) +#define NET_HEADER_FIELD_MACSEC_ALL_FIELDS ((NET_HEADER_FIELD_MACSEC_SECTAG << 1) - 1) + + +typedef enum { + HEADER_TYPE_NONE = 0, + HEADER_TYPE_PAYLOAD, + HEADER_TYPE_ETH, + HEADER_TYPE_VLAN, + HEADER_TYPE_IPv4, + HEADER_TYPE_IPv6, + HEADER_TYPE_TCP, + HEADER_TYPE_UDP, + HEADER_TYPE_IPHC, + HEADER_TYPE_SCTP, + HEADER_TYPE_SCTP_CHUNK_DATA, + HEADER_TYPE_PPPoE, + HEADER_TYPE_PPP, + HEADER_TYPE_PPPMUX, + HEADER_TYPE_PPPMUX_SUBFRAME, + HEADER_TYPE_L2TPv2, + HEADER_TYPE_L2TPv3_CTRL, + HEADER_TYPE_L2TPv3_SESS, + HEADER_TYPE_LLC, + HEADER_TYPE_LLC_SNAP, + HEADER_TYPE_NLPID, + HEADER_TYPE_SNAP, + HEADER_TYPE_MPLS, + HEADER_TYPE_IPSEC_AH, + HEADER_TYPE_IPSEC_ESP, + HEADER_TYPE_UDP_ENCAP_ESP, /* RFC 3948 */ + HEADER_TYPE_MACSEC, + HEADER_TYPE_GRE, + HEADER_TYPE_MINENCAP, + HEADER_TYPE_DCCP, + HEADER_TYPE_ICMP, + HEADER_TYPE_IGMP, + HEADER_TYPE_ARP, + HEADER_TYPE_CAPWAP, + HEADER_TYPE_CAPWAP_DTLS, + HEADER_TYPE_RFC2684, + HEADER_TYPE_USER_DEFINED_L2, + HEADER_TYPE_USER_DEFINED_L3, + HEADER_TYPE_USER_DEFINED_L4, + HEADER_TYPE_USER_DEFINED_SHIM1, + HEADER_TYPE_USER_DEFINED_SHIM2, + MAX_HEADER_TYPE_COUNT +} e_NetHeaderType; + + +#endif /* __NET_EXT_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/inc/std_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/inc/std_ext.h @@ -0,0 +1,48 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 std_ext.h + + @Description General Standard Definitions +*//***************************************************************************/ + +#ifndef __STD_EXT_H +#define __STD_EXT_H + + +#include "types_ext.h" +#include "ncsw_ext.h" + + +#endif /* __STD_EXT_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/inc/stdarg_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/inc/stdarg_ext.h @@ -0,0 +1,48 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 __STDARG_EXT_H +#define __STDARG_EXT_H + + +#if defined(NCSW_LINUX) && defined(__KERNEL__) +#include + +#else +#include + +#endif /* defined(NCSW_LINUX) && defined(__KERNEL__) */ + +#include "std_ext.h" + + +#endif /* __STDARG_EXT_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/inc/stdlib_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/inc/stdlib_ext.h @@ -0,0 +1,161 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 __STDLIB_EXT_H +#define __STDLIB_EXT_H + + +#if (defined(NCSW_LINUX)) && defined(__KERNEL__) +#include "stdarg_ext.h" +#include "std_ext.h" + + +/** + * strtoul - convert a string to an uint32_t + * @cp: The start of the string + * @endp: A pointer to the end of the parsed string will be placed here + * @base: The number base to use + */ +uint32_t strtoul(const char *cp,char **endp,uint32_t base); + +/** + * strtol - convert a string to a int32_t + * @cp: The start of the string + * @endp: A pointer to the end of the parsed string will be placed here + * @base: The number base to use + */ +long strtol(const char *cp,char **endp,uint32_t base); + +/** + * strtoull - convert a string to an uint64_t + * @cp: The start of the string + * @endp: A pointer to the end of the parsed string will be placed here + * @base: The number base to use + */ +uint64_t strtoull(const char *cp,char **endp,uint32_t base); + +/** + * strtoll - convert a string to a int64 long + * @cp: The start of the string + * @endp: A pointer to the end of the parsed string will be placed here + * @base: The number base to use + */ +long long strtoll(const char *cp,char **endp,uint32_t base); + +/** + * atoi - convert a character to a int + * @s: The start of the string + */ +int atoi(const char *s); + +/** + * strnlen - Find the length of a length-limited string + * @s: The string to be sized + * @count: The maximum number of bytes to search + */ +size_t strnlen(const char * s, size_t count); + +/** + * strlen - Find the length of a string + * @s: The string to be sized + */ +size_t strlen(const char * s); + +/** + * strtok - Split a string into tokens + * @s: The string to be searched + * @ct: The characters to search for + * + * WARNING: strtok is deprecated, use strsep instead. + */ +char * strtok(char * s,const char * ct); + +/** + * strncpy - Copy a length-limited, %NUL-terminated string + * @dest: Where to copy the string to + * @src: Where to copy the string from + * @count: The maximum number of bytes to copy + * + * Note that unlike userspace strncpy, this does not %NUL-pad the buffer. + * However, the result is not %NUL-terminated if the source exceeds + * @count bytes. + */ +char * strncpy(char * dest,const char *src,size_t count); + +/** + * strcpy - Copy a %NUL terminated string + * @dest: Where to copy the string to + * @src: Where to copy the string from + */ +char * strcpy(char * dest,const char *src); + +/** + * vsscanf - Unformat a buffer into a list of arguments + * @buf: input buffer + * @fmt: format of buffer + * @args: arguments + */ +int vsscanf(const char * buf, const char * fmt, va_list args); + +/** + * vsnprintf - Format a string and place it in a buffer + * @buf: The buffer to place the result into + * @size: The size of the buffer, including the trailing null space + * @fmt: The format string to use + * @args: Arguments for the format string + * + * Call this function if you are already dealing with a va_list. + * You probably want snprintf instead. + */ +int vsnprintf(char *buf, size_t size, const char *fmt, va_list args); + +/** + * vsprintf - Format a string and place it in a buffer + * @buf: The buffer to place the result into + * @fmt: The format string to use + * @args: Arguments for the format string + * + * Call this function if you are already dealing with a va_list. + * You probably want sprintf instead. + */ +int vsprintf(char *buf, const char *fmt, va_list args); + +#else +#include +#include +#endif /* defined(NCSW_LINUX) && defined(__KERNEL__) */ + +#include "std_ext.h" + + +#endif /* __STDLIB_EXT_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/inc/string_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/inc/string_ext.h @@ -0,0 +1,55 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 __STRING_EXT_H +#define __STRING_EXT_H + + +#if defined(NCSW_LINUX) && defined(__KERNEL__) +#include +#include +extern char * strtok ( char * str, const char * delimiters ); + +#elif defined(__KERNEL__) +#include "linux/types.h" +#include "linux/posix_types.h" +#include "linux/string.h" + +#else +#include + +#endif /* defined(NCSW_LINUX) && defined(__KERNEL__) */ + +#include "std_ext.h" + + +#endif /* __STRING_EXT_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/inc/types_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/inc/types_ext.h @@ -0,0 +1,111 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 types_ext.h + + @Description General types Standard Definitions +*//***************************************************************************/ + +#ifndef __TYPES_EXT_H +#define __TYPES_EXT_H + + +#if defined(NCSW_LINUX) +#include "types_linux.h" + +#elif defined(NCSW_LINUX_USD) +#include "types_linux_usd.h" + +#elif defined(NCSW_VXWORKS) +#include "types_vxworks.h" + +#elif defined(__MWERKS__) && defined(__GNUC__) && defined(__cplusplus) +#include "types_bb_gpp.h" + +#elif defined(__MWERKS__) && defined(__GNUC__) +#include "types_bb_gcc.h" + +#elif defined(__ghs__) +#include "types_ghs.h" + +#else +#include "types_dflt.h" +#endif /* defined (__ROCOO__) */ + + +static __inline__ void TypesChecker(void) +{ +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(push,1) +#endif /* defined(__MWERKS__) && ... */ +#define MEM_MAP_START + _Packed struct strct { + __volatile__ int vi; + } _PackedType; +#define MEM_MAP_END +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(pop) +#endif /* defined(__MWERKS__) && ... */ + size_t size = 0; + bool tr = TRUE, fls = FALSE; + struct strct *p_Strct = NULL; + physAddress_t addr = 0x100; + + tr = fls; + p_Strct = p_Strct; + size++; + if (tr) size++; + + WRITE_UINT8(*((uint8_t*)((size_t)(addr))), + GET_UINT8(*((uint8_t*)((size_t)(addr))))); + + WRITE_UINT8(*((uint8_t*)((size_t)(UINT8_MAX))), + GET_UINT8(*((uint8_t*)((size_t)(UINT8_MAX))))); + WRITE_UINT16(*((uint16_t*)((size_t)(UINT16_MAX))), + GET_UINT16(*((uint16_t*)((size_t)(UINT16_MAX))))); + WRITE_UINT32(*((uint32_t*)((size_t)(UINT32_MAX))), + GET_UINT32(*((uint32_t*)((size_t)(UINT32_MAX))))); + WRITE_UINT64(*((uint64_t*)((size_t)(UINT64_MAX))), + GET_UINT64(*((uint64_t*)((size_t)(UINT64_MAX))))); + WRITE_UINT8(*((uint8_t*)((size_t)(INT8_MAX))), + GET_UINT8(*((uint8_t*)((size_t)(INT8_MIN))))); + WRITE_UINT16(*((uint16_t*)((size_t)(INT16_MAX))), + GET_UINT16(*((uint16_t*)((size_t)(INT16_MIN))))); + WRITE_UINT32(*((uint32_t*)((size_t)(INT32_MAX))), + GET_UINT32(*((uint32_t*)((size_t)(INT32_MIN))))); + WRITE_UINT64(*((uint64_t*)((size_t)(INT64_MAX))), + GET_UINT64(*((uint64_t*)((size_t)(INT64_MIN))))); +} + + +#endif /* __TYPES_EXT_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/inc/xx_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/inc/xx_ext.h @@ -0,0 +1,881 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 xx_ext.h + + @Description Prototypes, externals and typedefs for system-supplied + (external) routines +*//***************************************************************************/ + +#ifndef __XX_EXT_H +#define __XX_EXT_H + +#include "std_ext.h" +#include "part_ext.h" + +#if defined(__MWERKS__) && defined(OPTIMIZED_FOR_SPEED) +#include "xx_integration_ext.h" +#endif /* defined(__MWERKS__) && defined(OPTIMIZED_FOR_SPEED) */ + + +/**************************************************************************//** + @Group xx_id XX Interface (System call hooks) + + @Description Prototypes, externals and typedefs for system-supplied + (external) routines + + @{ +*//***************************************************************************/ + +#if (defined(REPORT_EVENTS) && (REPORT_EVENTS > 0)) +/**************************************************************************//** + @Function XX_EventById + + @Description Event reporting routine - executed only when REPORT_EVENTS=1. + + @Param[in] event - Event code (e_Event). + @Param[in] appId - Application identifier. + @Param[in] flags - Event flags. + @Param[in] msg - Event message. + + @Return None +*//***************************************************************************/ +void XX_EventById(uint32_t event, t_Handle appId, uint16_t flags, char *msg); + +#else /* not REPORT_EVENTS */ +#define XX_EventById(event, appId, flags, msg) +#endif /* REPORT_EVENTS */ + + + +#ifdef DEBUG_XX_MALLOC +void * XX_MallocDebug(uint32_t size, char *fname, int line); + +void * XX_MallocSmartDebug(uint32_t size, + int memPartitionId, + uint32_t alignment, + char *fname, + int line); + +#define XX_Malloc(sz) \ + XX_MallocDebug((sz), __FILE__, __LINE__) + +#define XX_MallocSmart(sz, memt, al) \ + XX_MallocSmartDebug((sz), (memt), (al), __FILE__, __LINE__) + +#else /* not DEBUG_XX_MALLOC */ +/**************************************************************************//** + @Function XX_Malloc + + @Description allocates contiguous block of memory. + + @Param[in] size - Number of bytes to allocate. + + @Return The address of the newly allocated block on success, NULL on failure. +*//***************************************************************************/ +void * XX_Malloc(uint32_t size); + +/**************************************************************************//** + @Function XX_MallocSmart + + @Description Allocates contiguous block of memory in a specified + alignment and from the specified segment. + + @Param[in] size - Number of bytes to allocate. + @Param[in] memPartitionId - Memory partition ID; The value zero must + be mapped to the default heap partition. + @Param[in] alignment - Required memory alignment (in bytes). + + @Return The address of the newly allocated block on success, NULL on failure. +*//***************************************************************************/ +void * XX_MallocSmart(uint32_t size, int memPartitionId, uint32_t alignment); +#endif /* not DEBUG_XX_MALLOC */ + +/**************************************************************************//** + @Function XX_FreeSmart + + @Description Frees the memory block pointed to by "p". + Only for memory allocated by XX_MallocSmart + + @Param[in] p_Memory - pointer to the memory block. + + @Return None. +*//***************************************************************************/ +void XX_FreeSmart(void *p_Memory); + +/**************************************************************************//** + @Function XX_Free + + @Description frees the memory block pointed to by "p". + + @Param[in] p_Memory - pointer to the memory block. + + @Return None. +*//***************************************************************************/ +void XX_Free(void *p_Memory); + +#ifndef NCSW_LINUX +/**************************************************************************//** + @Function XX_GetMemPartitionBase + + @Description This routine gets the address of a memory segment according to + the memory type. + + @Param[in] memPartitionId - Memory partition ID; The value zero must + be mapped to the default heap partition. + + @Return The address of the required memory type. +*//***************************************************************************/ +void * XX_GetMemPartitionBase(int memPartitionId); +#endif + +/**************************************************************************//** + @Function XX_Print + + @Description print a string. + + @Param[in] str - string to print. + + @Return None. +*//***************************************************************************/ +void XX_Print(char *str, ...); + +/**************************************************************************//** + @Function XX_GetChar + + @Description Get character from console. + + @Return Character is returned on success. Zero is returned otherwise. +*//***************************************************************************/ +char XX_GetChar(void); + +/**************************************************************************//** + @Function XX_SetIntr + + @Description Set an interrupt service routine for a specific interrupt source. + + @Param[in] irq - Interrupt ID (system-specific number). + @Param[in] f_Isr - Callback routine that will be called when the interrupt occurs. + @Param[in] handle - The argument for the user callback routine. + + @Return E_OK on success; error code otherwise.. +*//***************************************************************************/ +t_Error XX_SetIntr(int irq, t_Isr *f_Isr, t_Handle handle); + +/**************************************************************************//** + @Function XX_FreeIntr + + @Description Free a specific interrupt and a specific callback routine. + + @Param[in] irq - Interrupt ID (system-specific number). + + @Return E_OK on success; error code otherwise.. +*//***************************************************************************/ +t_Error XX_FreeIntr(int irq); + +/**************************************************************************//** + @Function XX_EnableIntr + + @Description Enable a specific interrupt. + + @Param[in] irq - Interrupt ID (system-specific number). + + @Return E_OK on success; error code otherwise.. +*//***************************************************************************/ +t_Error XX_EnableIntr(int irq); + +/**************************************************************************//** + @Function XX_DisableIntr + + @Description Disable a specific interrupt. + + @Param[in] irq - Interrupt ID (system-specific number). + + @Return E_OK on success; error code otherwise.. +*//***************************************************************************/ +t_Error XX_DisableIntr(int irq); + +#if !(defined(__MWERKS__) && defined(OPTIMIZED_FOR_SPEED)) +/**************************************************************************//** + @Function XX_DisableAllIntr + + @Description Disable all interrupts by masking them at the CPU. + + @Return A value that represents the interrupts state before the + operation, and should be passed to the matching + XX_RestoreAllIntr() call. +*//***************************************************************************/ +uint32_t XX_DisableAllIntr(void); + +/**************************************************************************//** + @Function XX_RestoreAllIntr + + @Description Restore previous state of interrupts level at the CPU. + + @Param[in] flags - A value that represents the interrupts state to restore, + as returned by the matching call for XX_DisableAllIntr(). + + @Return None. +*//***************************************************************************/ +void XX_RestoreAllIntr(uint32_t flags); +#endif /* !(defined(__MWERKS__) && defined(OPTIMIZED_FOR_SPEED)) */ + +/**************************************************************************//** + @Function XX_Call + + @Description Call a service in another task. + + Activate the routine "f" via the queue identified by "IntrManagerId". The + parameter to "f" is Id - the handle of the destination object + + @Param[in] intrManagerId - Queue ID. + @Param[in] f - routine pointer. + @Param[in] Id - the parameter to be passed to f(). + @Param[in] h_App - Application handle. + @Param[in] flags - Unused, + + @Return E_OK is returned on success. E_FAIL is returned otherwise (usually an operating system level failure). +*//***************************************************************************/ +t_Error XX_Call( uint32_t intrManagerId, + t_Error (* f)(t_Handle), + t_Handle Id, + t_Handle h_App, + uint16_t flags ); + +/**************************************************************************//** + @Function XX_Exit + + @Description Stop execution and report status (where it is applicable) + + @Param[in] status - exit status +*//***************************************************************************/ +void XX_Exit(int status); + +/*****************************************************************************/ +/* Tasklet Service Routines */ +/*****************************************************************************/ +typedef t_Handle t_TaskletHandle; + +/**************************************************************************//** + @Function XX_InitTasklet + + @Description Create and initialize a tasklet object. + + @Param[in] routine - A routine to be ran as a tasklet. + @Param[in] data - An argument to pass to the tasklet. + + @Return Tasklet handle is returned on success. NULL is returned otherwise. +*//***************************************************************************/ +t_TaskletHandle XX_InitTasklet (void (*routine)(void *), void *data); + +/**************************************************************************//** + @Function XX_FreeTasklet + + @Description Free a tasklet object. + + @Param[in] h_Tasklet - A handle to a tasklet to be free. + + @Return None. +*//***************************************************************************/ +void XX_FreeTasklet (t_TaskletHandle h_Tasklet); + +/**************************************************************************//** + @Function XX_ScheduleTask + + @Description Schedule a tasklet object. + + @Param[in] h_Tasklet - A handle to a tasklet to be scheduled. + @Param[in] immediate - Indicate whether to schedule this tasklet on + the immediate queue or on the delayed one. + + @Return 0 - on success. Error code - otherwise. +*//***************************************************************************/ +int XX_ScheduleTask(t_TaskletHandle h_Tasklet, int immediate); + +/**************************************************************************//** + @Function XX_FlushScheduledTasks + + @Description Flush all tasks there are in the scheduled tasks queue. + + @Return None. +*//***************************************************************************/ +void XX_FlushScheduledTasks(void); + +/**************************************************************************//** + @Function XX_TaskletIsQueued + + @Description Check if task is queued. + + @Param[in] h_Tasklet - A handle to a tasklet to be scheduled. + + @Return 1 - task is queued. 0 - otherwise. +*//***************************************************************************/ +int XX_TaskletIsQueued(t_TaskletHandle h_Tasklet); + +/**************************************************************************//** + @Function XX_SetTaskletData + + @Description Set data to a scheduled task. Used to change data of already + scheduled task. + + @Param[in] h_Tasklet - A handle to a tasklet to be scheduled. + @Param[in] data - Data to be set. +*//***************************************************************************/ +void XX_SetTaskletData(t_TaskletHandle h_Tasklet, t_Handle data); + +/**************************************************************************//** + @Function XX_GetTaskletData + + @Description Get the data of scheduled task. + + @Param[in] h_Tasklet - A handle to a tasklet to be scheduled. + + @Return handle to the data of the task. +*//***************************************************************************/ +t_Handle XX_GetTaskletData(t_TaskletHandle h_Tasklet); + +/**************************************************************************//** + @Function XX_BottomHalf + + @Description Bottom half implementation, invoked by the interrupt handler. + + This routine handles all bottom-half tasklets with interrupts + enabled. + + @Return None. +*//***************************************************************************/ +void XX_BottomHalf(void); + + +/*****************************************************************************/ +/* Spinlock Service Routines */ +/*****************************************************************************/ + +/**************************************************************************//** + @Function XX_InitSpinlock + + @Description Creates a spinlock. + + @Return Spinlock handle is returned on success; NULL otherwise. +*//***************************************************************************/ +t_Handle XX_InitSpinlock(void); + +/**************************************************************************//** + @Function XX_FreeSpinlock + + @Description Frees the memory allocated for the spinlock creation. + + @Param[in] h_Spinlock - A handle to a spinlock. + + @Return None. +*//***************************************************************************/ +void XX_FreeSpinlock(t_Handle h_Spinlock); + +/**************************************************************************//** + @Function XX_LockSpinlock + + @Description Locks a spinlock. + + @Param[in] h_Spinlock - A handle to a spinlock. + + @Return None. +*//***************************************************************************/ +void XX_LockSpinlock(t_Handle h_Spinlock); + +/**************************************************************************//** + @Function XX_UnlockSpinlock + + @Description Unlocks a spinlock. + + @Param[in] h_Spinlock - A handle to a spinlock. + + @Return None. +*//***************************************************************************/ +void XX_UnlockSpinlock(t_Handle h_Spinlock); + +/**************************************************************************//** + @Function XX_LockIntrSpinlock + + @Description Locks a spinlock (interrupt safe). + + @Param[in] h_Spinlock - A handle to a spinlock. + + @Return A value that represents the interrupts state before the + operation, and should be passed to the matching + XX_UnlockIntrSpinlock() call. +*//***************************************************************************/ +uint32_t XX_LockIntrSpinlock(t_Handle h_Spinlock); + +/**************************************************************************//** + @Function XX_UnlockIntrSpinlock + + @Description Unlocks a spinlock (interrupt safe). + + @Param[in] h_Spinlock - A handle to a spinlock. + @Param[in] intrFlags - A value that represents the interrupts state to + restore, as returned by the matching call for + XX_LockIntrSpinlock(). + + @Return None. +*//***************************************************************************/ +void XX_UnlockIntrSpinlock(t_Handle h_Spinlock, uint32_t intrFlags); + + +/*****************************************************************************/ +/* Timers Service Routines */ +/*****************************************************************************/ + +/**************************************************************************//** + @Function XX_CurrentTime + + @Description Returns current system time. + + @Return Current system time (in milliseconds). +*//***************************************************************************/ +uint32_t XX_CurrentTime(void); + +/**************************************************************************//** + @Function XX_CreateTimer + + @Description Creates a timer. + + @Return Timer handle is returned on success; NULL otherwise. +*//***************************************************************************/ +t_Handle XX_CreateTimer(void); + +/**************************************************************************//** + @Function XX_FreeTimer + + @Description Frees the memory allocated for the timer creation. + + @Param[in] h_Timer - A handle to a timer. + + @Return None. +*//***************************************************************************/ +void XX_FreeTimer(t_Handle h_Timer); + +/**************************************************************************//** + @Function XX_StartTimer + + @Description Starts a timer. + + The user can select to start the timer as periodic timer or as + one-shot timer. The user should provide a callback routine that + will be called when the timer expires. + + @Param[in] h_Timer - A handle to a timer. + @Param[in] msecs - Timer expiration period (in milliseconds). + @Param[in] periodic - TRUE for a periodic timer; + FALSE for a one-shot timer.. + @Param[in] f_TimerExpired - A callback routine to be called when the + timer expires. + @Param[in] h_Arg - The argument to pass in the timer-expired + callback routine. + + @Return None. +*//***************************************************************************/ +void XX_StartTimer(t_Handle h_Timer, + uint32_t msecs, + bool periodic, + void (*f_TimerExpired)(t_Handle h_Arg), + t_Handle h_Arg); + +/**************************************************************************//** + @Function XX_StopTimer + + @Description Frees the memory allocated for the timer creation. + + @Param[in] h_Timer - A handle to a timer. + + @Return None. +*//***************************************************************************/ +void XX_StopTimer(t_Handle h_Timer); + +/**************************************************************************//** + @Function XX_GetExpirationTime + + @Description Returns the time (in milliseconds) remaining until the + expiration of a timer. + + @Param[in] h_Timer - A handle to a timer. + + @Return The time left until the timer expires. +*//***************************************************************************/ +uint32_t XX_GetExpirationTime(t_Handle h_Timer); + +/**************************************************************************//** + @Function XX_ModTimer + + @Description Updates the expiration time of a timer. + + This routine adds the given time to the current system time, + and sets this value as the new expiration time of the timer. + + @Param[in] h_Timer - A handle to a timer. + @Param[in] msecs - The new interval until timer expiration + (in milliseconds). + + @Return None. +*//***************************************************************************/ +void XX_ModTimer(t_Handle h_Timer, uint32_t msecs); + +/**************************************************************************//** + @Function XX_TimerIsActive + + @Description Checks whether a timer is active (pending) or not. + + @Param[in] h_Timer - A handle to a timer. + + @Return 0 - the timer is inactive; Non-zero value - the timer is active; +*//***************************************************************************/ +int XX_TimerIsActive(t_Handle h_Timer); + +/**************************************************************************//** + @Function XX_Sleep + + @Description Non-busy wait until the desired time (in milliseconds) has passed. + + @Param[in] msecs - The requested sleep time (in milliseconds). + + @Return None. + + @Cautions This routine enables interrupts during its wait time. +*//***************************************************************************/ +uint32_t XX_Sleep(uint32_t msecs); + +/**************************************************************************//** + @Function XX_UDelay + + @Description Busy-wait until the desired time (in microseconds) has passed. + + @Param[in] usecs - The requested delay time (in microseconds). + + @Return None. + + @Cautions It is highly unrecommended to call this routine during interrupt + time, because the system time may not be updated properly during + the delay loop. The behavior of this routine during interrupt + time is unexpected. +*//***************************************************************************/ +void XX_UDelay(uint32_t usecs); + + +/*****************************************************************************/ +/* Other Service Routines */ +/*****************************************************************************/ + +/**************************************************************************//** + @Function XX_PhysToVirt + + @Description Translates a physical address to the matching virtual address. + + @Param[in] addr - The physical address to translate. + + @Return Virtual address. +*//***************************************************************************/ +void * XX_PhysToVirt(physAddress_t addr); + +/**************************************************************************//** + @Function XX_VirtToPhys + + @Description Translates a virtual address to the matching physical address. + + @Param[in] addr - The virtual address to translate. + + @Return Physical address. +*//***************************************************************************/ +physAddress_t XX_VirtToPhys(void *addr); + + +/**************************************************************************//** + @Group xx_ipc XX Inter-Partition-Communication API + + @Description The following API is to be used when working with multiple + partitions configuration. + + @{ +*//***************************************************************************/ + +#define XX_IPC_MAX_ADDR_NAME_LENGTH 16 /**< Maximum length of an endpoint name string; + The IPC service can use this constant to limit + the storage space for IPC endpoint names. */ + + +/**************************************************************************//** + @Function t_IpcMsgCompletion + + @Description Callback function used upon IPC non-blocking transaction completion + to return message buffer to the caller and to forward reply if available. + + This callback function may be attached by the source endpoint to any outgoing + IPC message to indicate a non-blocking send (see also XX_IpcSendMessage() routine). + Upon completion of an IPC transaction (consisting of a message and an optional reply), + the IPC service invokes this callback routine to return the message buffer to the sender + and to provide the received reply, if requested. + + User provides this function. Driver invokes it. + + @Param[in] h_Module - Abstract handle to the sending module - the same handle as was passed + in the XX_IpcSendMessage() function; This handle is typically used to point + to the internal data structure of the source endpoint. + @Param[in] p_Msg - Pointer to original (sent) message buffer; + The source endpoint can free (or reuse) this buffer when message + completion callback is called. + @Param[in] p_Reply - Pointer to (received) reply buffer; + This pointer is the same as was provided by the source endpoint in + XX_IpcSendMessage(). + @Param[in] replyLength - Length (in bytes) of actual data in the reply buffer. + @Param[in] status - Completion status - E_OK or failure indication, e.g. IPC transaction completion + timeout. + + @Return None + *//***************************************************************************/ +typedef void (t_IpcMsgCompletion)(t_Handle h_Module, + uint8_t *p_Msg, + uint8_t *p_Reply, + uint32_t replyLength, + t_Error status); + +/**************************************************************************//** + @Function t_IpcMsgHandler + + @Description Callback function used as IPC message handler. + + The IPC service invokes message handlers for each IPC message received. + The actual function pointer should be registered by each destination endpoint + via the XX_IpcRegisterMsgHandler() routine. + + User provides this function. Driver invokes it. + + @Param[in] h_Module - Abstract handle to the message handling module - the same handle as + was passed in the XX_IpcRegisterMsgHandler() function; this handle is + typically used to point to the internal data structure of the destination + endpoint. + @Param[in] p_Msg - Pointer to message buffer with data received from peer. + @Param[in] msgLength - Length (in bytes) of message data. + @Param[in] p_Reply - Pointer to reply buffer, to be filled by the message handler and then sent + by the IPC service; + The reply buffer is allocated by the IPC service with size equals to the + replyLength parameter provided in message handler registration (see + XX_IpcRegisterMsgHandler() function); + If replyLength was initially specified as zero during message handler registration, + the IPC service may set this pointer to NULL and assume that a reply is not needed; + The IPC service is also responsible for freeing the reply buffer after the + reply has been sent or dismissed. + @Param[in,out] p_ReplyLength - Pointer to reply length, which has a dual role in this function: + [In] equals the replyLength parameter provided in message handler + registration (see XX_IpcRegisterMsgHandler() function), and + [Out] should be updated by message handler to the actual reply length; if + this value is set to zero, the IPC service must assume that a reply should + not be sent; + Note: If p_Reply is not NULL, p_ReplyLength must not be NULL as well. + + @Return E_OK on success; Error code otherwise. + *//***************************************************************************/ +typedef t_Error (t_IpcMsgHandler)(t_Handle h_Module, + uint8_t *p_Msg, + uint32_t msgLength, + uint8_t *p_Reply, + uint32_t *p_ReplyLength); + +/**************************************************************************//** + @Function XX_IpcRegisterMsgHandler + + @Description IPC mailbox registration. + + This function is used for registering an IPC message handler in the IPC service. + This function is called by each destination endpoint to indicate that it is ready + to handle incoming messages. The IPC service invokes the message handler upon receiving + a message addressed to the specified destination endpoint. + + @Param[in] addr - The address name string associated with the destination endpoint; + This address must be unique across the IPC service domain to ensure + correct message routing. + @Param[in] f_MsgHandler - Pointer to the message handler callback for processing incoming + message; invoked by the IPC service upon receiving a message + addressed to the destination endpoint specified by the addr + parameter. + @Param[in] h_Module - Abstract handle to the message handling module, passed unchanged + to f_MsgHandler callback function. + @Param[in] replyLength - The maximal data length (in bytes) of any reply that the specified message handler + may generate; the IPC service provides the message handler with buffer + for reply according to the length specified here (refer also to the description + of #t_IpcMsgHandler callback function type); + This size shall be zero if the message handler never generates replies. + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error XX_IpcRegisterMsgHandler(char addr[XX_IPC_MAX_ADDR_NAME_LENGTH], + t_IpcMsgHandler *f_MsgHandler, + t_Handle h_Module, + uint32_t replyLength); + +/**************************************************************************//** + @Function XX_IpcUnregisterMsgHandler + + @Description Release IPC mailbox routine. + + This function is used for unregistering an IPC message handler from the IPC service. + This function is called by each destination endpoint to indicate that it is no longer + capable of handling incoming messages. + + @Param[in] addr - The address name string associated with the destination endpoint; + This address is the same as was used when the message handler was + registered via XX_IpcRegisterMsgHandler(). + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error XX_IpcUnregisterMsgHandler(char addr[XX_IPC_MAX_ADDR_NAME_LENGTH]); + +/**************************************************************************//** + @Function XX_IpcInitSession + + @Description This function is used for creating an IPC session between the source endpoint + and the destination endpoint. + + The actual implementation and representation of a session is left for the IPC service. + The function returns an abstract handle to the created session. This handle shall be used + by the source endpoint in subsequent calls to XX_IpcSendMessage(). + The IPC service assumes that before this function is called, no messages are sent from + the specified source endpoint to the specified destination endpoint. + + The IPC service may use a connection-oriented approach or a connectionless approach (or both) + as described below. + + @par Connection-Oriented Approach + + The IPC service may implement a session in a connection-oriented approach - when this function is called, + the IPC service should take the necessary steps to bring up a source-to-destination channel for messages + and a destination-to-source channel for replies. The returned handle should represent the internal + representation of these channels. + + @par Connectionless Approach + + The IPC service may implement a session in a connectionless approach - when this function is called, the + IPC service should not perform any particular steps, but it must store the pair of source and destination + addresses in some session representation and return it as a handle. When XX_IpcSendMessage() shall be + called, the IPC service may use this handle to provide the necessary identifiers for routing the messages + through the connectionless medium. + + @Param[in] destAddr - The address name string associated with the destination endpoint. + @Param[in] srcAddr - The address name string associated with the source endpoint. + + @Return Abstract handle to the initialized session, or NULL on error. +*//***************************************************************************/ +t_Handle XX_IpcInitSession(char destAddr[XX_IPC_MAX_ADDR_NAME_LENGTH], + char srcAddr[XX_IPC_MAX_ADDR_NAME_LENGTH]); + +/**************************************************************************//** + @Function XX_IpcFreeSession + + @Description This function is used for terminating an existing IPC session between a source endpoint + and a destination endpoint. + + The IPC service assumes that after this function is called, no messages shall be sent from + the associated source endpoint to the associated destination endpoint. + + @Param[in] h_Session - Abstract handle to the IPC session - the same handle as was originally + returned by the XX_IpcInitSession() function. + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error XX_IpcFreeSession(t_Handle h_Session); + +/**************************************************************************//** + @Function XX_IpcSendMessage + + @Description IPC message send routine. + + This function may be used by a source endpoint to send an IPC message to a destination + endpoint. The source endpoint cannot send a message to the destination endpoint without + first initiating a session with that destination endpoint via XX_IpcInitSession() routine. + + The source endpoint must provide the buffer pointer and length of the outgoing message. + Optionally, it may also provide a buffer for an expected reply. In the latter case, the + transaction is not considered complete by the IPC service until the reply has been received. + If the source endpoint does not provide a reply buffer, the transaction is considered + complete after the message has been sent. The source endpoint must keep the message (and + optional reply) buffers valid until the transaction is complete. + + @par Non-blocking mode + + The source endpoint may request a non-blocking send by providing a non-NULL pointer to a message + completion callback function (f_Completion). Upon completion of the IPC transaction (consisting of a + message and an optional reply), the IPC service invokes this callback routine to return the message + buffer to the sender and to provide the received reply, if requested. + + @par Blocking mode + + The source endpoint may request a blocking send by setting f_Completion to NULL. The function is + expected to block until the IPC transaction is complete - either the reply has been received or (if no reply + was requested) the message has been sent. + + @Param[in] h_Session - Abstract handle to the IPC session - the same handle as was originally + returned by the XX_IpcInitSession() function. + @Param[in] p_Msg - Pointer to message buffer to send. + @Param[in] msgLength - Length (in bytes) of actual data in the message buffer. + @Param[in] p_Reply - Pointer to reply buffer - if this buffer is not NULL, the IPC service + fills this buffer with the received reply data; + In blocking mode, the reply data must be valid when the function returns; + In non-blocking mode, the reply data is valid when f_Completion is called; + If this pointer is NULL, no reply is expected. + @Param[in,out] p_ReplyLength - Pointer to reply length, which has a dual role in this function: + [In] specifies the maximal length (in bytes) of the reply buffer pointed by + p_Reply, and + [Out] in non-blocking mode this value is updated by the IPC service to the + actual reply length (in bytes). + @Param[in] f_Completion - Pointer to a completion callback to be used in non-blocking send mode; + The completion callback is invoked by the IPC service upon + completion of the IPC transaction (consisting of a message and an optional + reply); + If this pointer is NULL, the function is expected to block until the IPC + transaction is complete. + @Param[in] h_Arg - Abstract handle to the sending module; passed unchanged to the f_Completion + callback function as the first argument. + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error XX_IpcSendMessage(t_Handle h_Session, + uint8_t *p_Msg, + uint32_t msgLength, + uint8_t *p_Reply, + uint32_t *p_ReplyLength, + t_IpcMsgCompletion *f_Completion, + t_Handle h_Arg); + + +/** @} */ /* end of xx_ipc group */ +/** @} */ /* end of xx_id group */ + + +#endif /* __XX_EXT_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/integrations/P1023/Makefile +++ linux-3.13.0/drivers/net/dpa/NetCommSw/integrations/P1023/Makefile @@ -0,0 +1,9 @@ +# +# Makefile for the Freescale Ethernet controllers +# +EXTRA_CFLAGS += -DVERSION=\"\" +# +#Include netcomm SW specific definitions +include $(srctree)/drivers/net/dpa/NetCommSw/ncsw_config.mk + +obj-y += module_strings.o --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/integrations/P1023/module_strings.c +++ linux-3.13.0/drivers/net/dpa/NetCommSw/integrations/P1023/module_strings.c @@ -0,0 +1,71 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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. + */ + + +/* Module names for debug messages */ +const char *moduleStrings[] = +{ + "" /* MODULE_UNKNOWN */ + ,"MEM" /* MODULE_ */ + ,"MM" /* MODULE_MM */ + ,"CORE" /* MODULE_CORE */ + ,"P1023" /* MODULE_P1023 */ + ,"MII" /* MODULE_MII */ + ,"PM" /* MODULE_PM */ + ,"MMU" /* MODULE_MMU */ + ,"PIC" /* MODULE_PIC */ + ,"L2 cache" /* MODULE_L2_CACHE */ + ,"DUART" /* MODULE_DUART */ + ,"SerDes" /* MODULE_SERDES */ + ,"PIO" /* MODULE_PIO */ + ,"QM" /* MODULE_QM */ + ,"BM" /* MODULE_BM */ + ,"SEC" /* MODULE_SEC */ + ,"FM" /* MODULE_FM */ + ,"FM-MURAM" /* MODULE_FM_MURAM */ + ,"FM-PCD" /* MODULE_FM_PCD */ + ,"FM-RTC" /* MODULE_FM_RTC */ + ,"FM-MAC" /* MODULE_FM_MAC */ + ,"FM-Port" /* MODULE_FM_PORT */ + ,"FM-MACSEC" /* MODULE_FM_MACSEC */ + ,"FM-MACSEC-SecY" /* MODULE_FM_MACSEC_SECY */ + ,"ECM" /* MODULE_ECM */ + ,"DMA" /* MODULE_DMA */ + ,"DDR" /* MODULE_DDR */ + ,"LAW" /* MODULE_LAW */ + ,"LBC" /* MODULE_LBC */ + ,"I2C" /* MODULE_I2C */ + ,"ESPI" /* MODULE_ESPI */ + ,"PCI" /* MODULE_PCI */ + ,"DPA" /* MODULE_DPA */ + ,"USB" /* MODULE_USB */ +}; --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/integrations/P3040_P4080_P5020/Makefile +++ linux-3.13.0/drivers/net/dpa/NetCommSw/integrations/P3040_P4080_P5020/Makefile @@ -0,0 +1,9 @@ +# +# Makefile for the Freescale Ethernet controllers +# +EXTRA_CFLAGS += -DVERSION=\"\" +# +#Include netcomm SW specific definitions +include $(srctree)/drivers/net/dpa/NetCommSw/ncsw_config.mk + +obj-y += module_strings.o --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/integrations/P3040_P4080_P5020/module_strings.c +++ linux-3.13.0/drivers/net/dpa/NetCommSw/integrations/P3040_P4080_P5020/module_strings.c @@ -0,0 +1,62 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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. + */ + +/* Module names for debug messages */ +const char *moduleStrings[] = +{ + "???" /* MODULE_UNKNOWN */ + ,"MEM" /* MODULE_ */ + ,"MM" /* MODULE_MM */ + ,"CORE" /* MODULE_CORE */ + ,"P4080" /* MODULE_P4080 */ + ,"P4080-Platform" /* MODULE_P4080_PLTFRM */ + ,"PM" /* MODULE_PM */ + ,"MMU" /* MODULE_MMU */ + ,"PIC" /* MODULE_PIC */ + ,"L3 cache (CPC)" /* MODULE_CPC */ + ,"DUART" /* MODULE_DUART */ + ,"SerDes" /* MODULE_SERDES */ + ,"PIO" /* MODULE_PIO */ + ,"QM" /* MODULE_QM */ + ,"BM" /* MODULE_BM */ + ,"SEC" /* MODULE_SEC */ + ,"LAW" /* MODULE_LAW */ + ,"LBC" /* MODULE_LBC */ + ,"PAMU" /* MODULE_PAMU */ + ,"FM" /* MODULE_FM */ + ,"FM-MURAM" /* MODULE_FM_MURAM */ + ,"FM-PCD" /* MODULE_FM_PCD */ + ,"FM-RTC" /* MODULE_FM_RTC */ + ,"FM-MAC" /* MODULE_FM_MAC */ + ,"FM-Port" /* MODULE_FM_PORT */ + ,"DPA" /* MODULE_DPA */ +}; --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/ncsw_config.mk +++ linux-3.13.0/drivers/net/dpa/NetCommSw/ncsw_config.mk @@ -0,0 +1,34 @@ +# +# Makefile config for the Freescale NetcommSW +# +NET_DPA = $(srctree)/drivers/net/ethernet/freescale +DRV_DPA = $(srctree)/drivers/net/dpa +NCSW = $(srctree)/drivers/net/dpa/NetCommSw + +ifdef CONFIG_FMAN_P3040_P4080_P5020 +EXTRA_CFLAGS +=-include $(NCSW)/p3040_4080_5020_dflags.h +endif +ifdef CONFIG_FMAN_P1023 +EXTRA_CFLAGS +=-include $(NCSW)/p1023_dflags.h +endif + +EXTRA_CFLAGS += -I$(DRV_DPA)/ +EXTRA_CFLAGS += -I$(NCSW)/inc +EXTRA_CFLAGS += -I$(NCSW)/inc/cores +EXTRA_CFLAGS += -I$(NCSW)/inc/etc +EXTRA_CFLAGS += -I$(NCSW)/inc/Peripherals + +ifdef CONFIG_FMAN_P3040_P4080_P5020 +EXTRA_CFLAGS += -I$(NCSW)/inc/integrations/P3040_P4080_P5020 +endif +ifdef CONFIG_FMAN_P1023 +EXTRA_CFLAGS += -I$(NCSW)/inc/integrations/P1023 +endif + +EXTRA_CFLAGS += -I$(NCSW)/src/inc +EXTRA_CFLAGS += -I$(NCSW)/src/inc/system +EXTRA_CFLAGS += -I$(NCSW)/src/inc/wrapper +EXTRA_CFLAGS += -I$(NCSW)/src/inc/xx +EXTRA_CFLAGS += -I$(srctree)/include/linux/fmd +EXTRA_CFLAGS += -I$(srctree)/include/linux/fmd/Peripherals +EXTRA_CFLAGS += -I$(srctree)/include/linux/fmd/integrations --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/p1023_dflags.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/p1023_dflags.h @@ -0,0 +1,65 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 __dflags_h +#define __dflags_h + + +#define NCSW_LINUX +#if 0 +#define DEBUG +#endif + +#define P1023 +#define NCSW_PPC_CORE + +#define DEBUG_ERRORS 1 + +#if defined(DEBUG) +#define DEBUG_GLOBAL_LEVEL REPORT_LEVEL_INFO + +#define DEBUG_XX_MALLOC +#define DEBUG_MEM_LEAKS + +#else +#define DEBUG_GLOBAL_LEVEL REPORT_LEVEL_WARNING +#endif /* (DEBUG) */ + +#define REPORT_EVENTS 1 +#define EVENT_GLOBAL_LEVEL REPORT_LEVEL_MINOR + +#ifdef CONFIG_P4080_SIM +#error "Do not define CONFIG_P4080_SIM..." +#endif + + +#endif /* __dflags_h */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/p3040_4080_5020_dflags.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/p3040_4080_5020_dflags.h @@ -0,0 +1,62 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 __dflags_h +#define __dflags_h + + +#define NCSW_LINUX + +#define P4080 +#define NCSW_PPC_CORE + +#define DEBUG_ERRORS 1 + +#if defined(DEBUG) +#define DEBUG_GLOBAL_LEVEL REPORT_LEVEL_INFO + +#define DEBUG_XX_MALLOC +#define DEBUG_MEM_LEAKS + +#else +#define DEBUG_GLOBAL_LEVEL REPORT_LEVEL_MAJOR +#endif /* (DEBUG) */ + +#define REPORT_EVENTS 0 +#define EVENT_GLOBAL_LEVEL REPORT_LEVEL_MINOR + +#ifdef CONFIG_P4080_SIM +#define SIMULATOR +#endif /* CONFIG_P4080_SIM */ + + +#endif /* __dflags_h */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/src/Makefile +++ linux-3.13.0/drivers/net/dpa/NetCommSw/src/Makefile @@ -0,0 +1,11 @@ +# +# Makefile for the Freescale Ethernet controllers +# +EXTRA_CFLAGS += -DVERSION=\"\" +# +#Include netcomm SW specific definitions +include $(srctree)/drivers/net/dpa/NetCommSw/ncsw_config.mk +# +obj-y += system/ +obj-y += wrapper/ +obj-y += xx/ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/src/inc/system/sys_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/src/inc/system/sys_ext.h @@ -0,0 +1,118 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 __SYS_EXT_H +#define __SYS_EXT_H + +#include "std_ext.h" + + +/**************************************************************************//** + @Group sys_grp System Interfaces + + @Description Linux system programming interfaces. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group sys_gen_grp System General Interface + + @Description General definitions, structures and routines of the linux + system programming interface. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Collection Macros for Advanced Configuration Requests + @{ +*//***************************************************************************/ +#define SYS_MAX_ADV_CONFIG_ARGS 4 + /**< Maximum number of arguments in + an advanced configuration entry */ +/* @} */ + +/**************************************************************************//** + @Description System Object Advanced Configuration Entry + + This structure represents a single request for an advanced + configuration call on the initialized object. An array of such + requests may be contained in the settings structure of the + corresponding object. + + The maximum number of arguments is limited to #SYS_MAX_ADV_CONFIG_ARGS. +*//***************************************************************************/ +typedef struct t_SysObjectAdvConfigEntry +{ + void *p_Function; /**< Pointer to advanced configuration routine */ + + uintptr_t args[SYS_MAX_ADV_CONFIG_ARGS]; + /**< Array of arguments for the specified routine; + All arguments should be casted to uint32_t. */ +} t_SysObjectAdvConfigEntry; + + +/** @} */ /* end of sys_gen_grp */ +/** @} */ /* end of sys_grp */ + +#define PARAMS(_num, _params) ADV_CONFIG_PARAMS_##_num _params + +#define ADV_CONFIG_PARAMS_1(_type) \ + , (_type)p_Entry->args[0] + +#define SET_ADV_CONFIG_ARGS_1(_arg0) \ + p_Entry->args[0] = (uintptr_t )(_arg0); \ + +#define ARGS(_num, _params) SET_ADV_CONFIG_ARGS_##_num _params + +#define ADD_ADV_CONFIG_START(_p_Entries, _maxEntries) \ + { \ + t_SysObjectAdvConfigEntry *p_Entry; \ + t_SysObjectAdvConfigEntry *p_Entrys = (_p_Entries); \ + int i=0, max = (_maxEntries); \ + +#define ADD_ADV_CONFIG_END \ + } + +#define ADV_CONFIG_CHECK_START(_p_Entry) \ + { \ + t_SysObjectAdvConfigEntry *p_Entry = _p_Entry; \ + t_Error errCode; \ + +#define ADV_CONFIG_CHECK(_handle, _func, _params) \ + if (p_Entry->p_Function == _func) \ + { \ + errCode = _func(_handle _params); \ + } else + +#endif /* __SYS_EXT_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/src/inc/system/sys_io_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/src/inc/system/sys_io_ext.h @@ -0,0 +1,46 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 __SYS_IO_EXT_H +#define __SYS_IO_EXT_H + +#include "std_ext.h" +#include "error_ext.h" + + +t_Error SYS_RegisterIoMap (uint64_t virtAddr, uint64_t physAddr, uint32_t size); +t_Error SYS_UnregisterIoMap (uint64_t virtAddr); +uint64_t SYS_PhysToVirt (uint64_t addr); +uint64_t SYS_VirtToPhys (uint64_t addr); + + +#endif /* __SYS_IO_EXT_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/src/inc/types_linux.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/src/inc/types_linux.h @@ -0,0 +1,200 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 __TYPES_LINUX_H__ +#define __TYPES_LINUX_H__ + +#include + +#if defined(CONFIG_MODVERSIONS) && !defined(MODVERSIONS) +#define MODVERSIONS +#endif +#ifdef MODVERSIONS +#include +#endif /* MODVERSIONS */ + +#include +#include +#include + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,11) + #error "This kernel is probably not supported!!!" +#elif (!((LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19)) || \ + (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,27)) || \ + (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,30)))) + #warning "This kernel is probably not supported!!! You may need to add some fixes." +#endif /* LINUX_VERSION_CODE */ + + +typedef float float_t; /* Single precision floating point */ +typedef double double_t; /* Double precision floating point */ + + +#define _Packed +#define _PackedType __attribute__ ((packed)) + +typedef phys_addr_t physAddress_t; + +#define UINT8_MAX 0xFF +#define UINT8_MIN 0 +#define UINT16_MAX 0xFFFF +#define UINT16_MIN 0 +#define UINT32_MAX 0xFFFFFFFF +#define UINT32_MIN 0 +#define UINT64_MAX 0xFFFFFFFFFFFFFFFFLL +#define UINT64_MIN 0 +#define INT8_MAX 0x7F +#define INT8_MIN 0x80 +#define INT16_MAX 0x7FFF +#define INT16_MIN 0x8000 +#define INT32_MAX 0x7FFFFFFF +#define INT32_MIN 0x80000000 +#define INT64_MAX 0x7FFFFFFFFFFFFFFFLL +#define INT64_MIN 0x8000000000000000LL + +#define ON 1 +#define OFF 0 + +#define FALSE false +#define TRUE true + + +/************************/ +/* memory access macros */ +/************************/ +#define GET_UINT8(arg) *(volatile uint8_t *)(&(arg)) +#define GET_UINT16(arg) in_be16(&(arg))//*(volatile uint16_t*)(&(arg)) +#define GET_UINT32(arg) in_be32(&(arg))//*(volatile uint32_t*)(&(arg)) +#define GET_UINT64(arg) *(volatile uint64_t*)(&(arg)) + +#ifdef VERBOSE_WRITE +void XX_Print(char *str, ...); +#define WRITE_UINT8(arg, data) \ + do { XX_Print("ADDR: 0x%08x, VAL: 0x%02x\r\n", (uint32_t)&(arg), (data)); *(volatile uint8_t *)(&(arg)) = (data); } while (0) +#define WRITE_UINT16(arg, data) \ + do { XX_Print("ADDR: 0x%08x, VAL: 0x%04x\r\n", (uint32_t)&(arg), (data)); out_be16(&(arg), data); /* *(volatile uint16_t*)(&(arg)) = (data);*/ } while (0) +#define WRITE_UINT32(arg, data) \ + do { XX_Print("ADDR: 0x%08x, VAL: 0x%08x\r\n", (uint32_t)&(arg), (data)); out_be32(&(arg), data); /* *(volatile uint32_t*)(&(arg)) = (data);*/ } while (0) +#define WRITE_UINT64(arg, data) \ + do { XX_Print("ADDR: 0x%08x, VAL: 0x%016llx\r\n", (uint32_t)&(arg), (data)); *(volatile uint64_t*)(&(arg)) = (data); } while (0) + +#else /* not VERBOSE_WRITE */ +#define WRITE_UINT8(arg, data) *(volatile uint8_t *)(&(arg)) = (data) +#define WRITE_UINT16(arg, data) out_be16(&(arg), data)//*(volatile uint16_t*)(&(arg)) = (data) +#define WRITE_UINT32(arg, data) out_be32(&(arg), data)//*(volatile unsigned int *)(&(arg)) = (data) +#define WRITE_UINT64(arg, data) *(volatile uint64_t*)(&(arg)) = (data) +#endif /* not VERBOSE_WRITE */ + + +/*****************************************************************************/ +/* General stuff */ +/*****************************************************************************/ +#ifdef ARRAY_SIZE +#undef ARRAY_SIZE +#endif /* ARRAY_SIZE */ + +#ifdef MAJOR +#undef MAJOR +#endif /* MAJOR */ + +#ifdef MINOR +#undef MINOR +#endif /* MINOR */ + +#ifdef QE_SIZEOF_BD +#undef QE_SIZEOF_BD +#endif /* QE_SIZEOF_BD */ + +#ifdef BD_BUFFER_CLEAR +#undef BD_BUFFER_CLEAR +#endif /* BD_BUFFER_CLEAR */ + +#ifdef BD_BUFFER +#undef BD_BUFFER +#endif /* BD_BUFFER */ + +#ifdef BD_STATUS_AND_LENGTH_SET +#undef BD_STATUS_AND_LENGTH_SET +#endif /* BD_STATUS_AND_LENGTH_SET */ + +#ifdef BD_STATUS_AND_LENGTH +#undef BD_STATUS_AND_LENGTH +#endif /* BD_STATUS_AND_LENGTH */ + +#ifdef BD_BUFFER_ARG +#undef BD_BUFFER_ARG +#endif /* BD_BUFFER_ARG */ + +#ifdef BD_GET_NEXT +#undef BD_GET_NEXT +#endif /* BD_GET_NEXT */ + +#ifdef QE_SDEBCR_BA_MASK +#undef QE_SDEBCR_BA_MASK +#endif /* QE_SDEBCR_BA_MASK */ + +#ifdef BD_BUFFER_SET +#undef BD_BUFFER_SET +#endif /* BD_BUFFER_SET */ + +#ifdef UPGCR_PROTOCOL +#undef UPGCR_PROTOCOL +#endif /* UPGCR_PROTOCOL */ + +#ifdef UPGCR_TMS +#undef UPGCR_TMS +#endif /* UPGCR_TMS */ + +#ifdef UPGCR_RMS +#undef UPGCR_RMS +#endif /* UPGCR_RMS */ + +#ifdef UPGCR_ADDR +#undef UPGCR_ADDR +#endif /* UPGCR_ADDR */ + +#ifdef UPGCR_DIAG +#undef UPGCR_DIAG +#endif /* UPGCR_DIAG */ + +#ifdef PARAMS +#undef PARAMS +#endif /* PARAMS */ + +#ifdef NO_IRQ +#undef NO_IRQ +#endif /* NO_IRQ */ + +#define PRINT_LINE XX_Print("%s:\n %s [%d]\n",__FILE__,__FUNCTION__,__LINE__); + + +#endif /* __TYPES_LINUX_H__ */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/src/inc/wrapper/fsl_fman.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/src/inc/wrapper/fsl_fman.h @@ -0,0 +1,279 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 fsl_fman.h + + @Description Linux internal kernel API +*//***************************************************************************/ + +#ifndef __FSL_FMAN_H +#define __FSL_FMAN_H + +#include +#include /* struct device */ +#include /* struct qman_fq */ +#include "dpaa_integration_ext.h" + +/**************************************************************************//** + @Group FM_LnxKern_grp Frame Manager Linux wrapper API + + @Description FM API functions, definitions and enums. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group FM_LnxKern_ctrl_grp Control Unit + + @Description Control Unit + + Internal Kernel Control Unit API + @{ +*//***************************************************************************/ + +/*****************************************************************************/ +/* Internal Linux kernel routines */ +/*****************************************************************************/ + +/**************************************************************************//** + @Description A structure .., +*//***************************************************************************/ +struct fm; + +/**************************************************************************//** + @Description A structure .., +*//***************************************************************************/ +struct fm_port; + +typedef int (*alloc_pcd_fqids)(struct device *dev, + uint32_t num, + uint8_t alignment, + uint32_t *base_fqid); + +typedef int (*free_pcd_fqids)(struct device *dev, + uint32_t base_fqid); + +struct fm_port_pcd_param { + alloc_pcd_fqids cba; + free_pcd_fqids cbf; + struct device *dev; +}; + +/**************************************************************************//** + @Description A structure of information about each of the external + buffer pools used by the port, +*//***************************************************************************/ +struct fm_port_pool_param { + uint8_t id; /**< External buffer pool id */ + uint16_t size; /**< External buffer pool buffer size */ +}; + +/**************************************************************************//** + @Description structure for additional Rx port parameters +*//***************************************************************************/ +struct fm_port_rx_params { + uint32_t errq; /**< Error Queue Id. */ + uint32_t defq; /**< Default Queue Id. */ + uint8_t num_pools; /**< Number of pools use by this port */ + struct fm_port_pool_param pool_param[FM_PORT_MAX_NUM_OF_EXT_POOLS]; + /**< Parameters for each pool */ + uint16_t priv_data_size; /**< Area that user may save for his own need (E.g. save the SKB) */ + bool parse_results; /**< Whether to have the parser-results in the Received buffer */ + bool hash_results; /**< Whether to have the hash-results in the Received buffer */ + bool time_stamp; /**< Whether to have the time-stamp in the Received buffer */ +}; + +/**************************************************************************//** + @Description structure for additional non-Rx port parameters +*//***************************************************************************/ +struct fm_port_non_rx_params { + uint32_t errq; /**< Error Queue Id. */ + uint32_t defq; /**< For Tx and HC - Default Confirmation queue, + 0 means no Tx confirmation for processed + frames. For OP - default Rx queue. */ + uint16_t priv_data_size; /**< Area that user may save for his own need (E.g. save the SKB) */ + bool parse_results; /**< Whether to put the parser-results in the Transmitted buffer */ + bool hash_results; /**< Whether to have the hash-results in the Received buffer */ + bool time_stamp; /**< Whether to have the time-stamp in the Received buffer */ +}; + + +/**************************************************************************//** + @Function fm_bind + + @Description Bind to a specific FM device. + + @Param[in] fm_dev - the OF handle of the FM device. + + @Return A handle of the FM device. + + @Cautions Allowed only after the port was created. +*//***************************************************************************/ +struct fm * fm_bind (struct device *fm_dev); + +/**************************************************************************//** + @Function fm_unbind + + @Description Un-bind from a specific FM device. + + @Param[in] fm - A handle of the FM device. + + @Cautions Allowed only after the port was created. +*//***************************************************************************/ +void fm_unbind(struct fm *fm); + +void * fm_get_handle(struct fm *fm); +void * fm_get_rtc_handle(struct fm *fm); +struct resource * fm_get_mem_region(struct fm *fm); + +/**************************************************************************//** + @Function fm_port_bind + + @Description Bind to a specific FM-port device (may be Rx or Tx port). + + @Param[in] fm_port_dev - the OF handle of the FM port device. + + @Return A handle of the FM port device. + + @Cautions Allowed only after the port was created. +*//***************************************************************************/ +struct fm_port * fm_port_bind (struct device *fm_port_dev); + +/**************************************************************************//** + @Function fm_port_unbind + + @Description Un-bind from a specific FM-port device (may be Rx or Tx port). + + @Param[in] port - A handle of the FM port device. + + @Cautions Allowed only after the port was created. +*//***************************************************************************/ +void fm_port_unbind(struct fm_port *port); + +/**************************************************************************//** + @Function fm_set_rx_port_params + + @Description Configure parameters for a specific Rx FM-port device. + + @Param[in] port - A handle of the FM port device. + @Param[in] params - Rx port parameters + + @Cautions Allowed only after the port is binded. +*//***************************************************************************/ +void fm_set_rx_port_params(struct fm_port *port, struct fm_port_rx_params *params); + +/**************************************************************************//** + @Function fm_port_pcd_bind + + @Description Bind as a listener on a port PCD. + + @Param[in] port - A handle of the FM port device. + @Param[in] params - PCD port parameters + + @Cautions Allowed only after the port is binded. +*//***************************************************************************/ +void fm_port_pcd_bind (struct fm_port *port, struct fm_port_pcd_param *params); + +/**************************************************************************//** + @Function fm_get_tx_port_channel + + @Description Get qman-channel number for this Tx port. + + @Param[in] port - A handle of the FM port device. + + @Return qman-channel number for this Tx port. + + @Cautions Allowed only after the port is binded. +*//***************************************************************************/ +int fm_get_tx_port_channel(struct fm_port *port); + +/**************************************************************************//** + @Function fm_set_tx_port_params + + @Description Configure parameters for a specific Tx FM-port device + + @Param[in] port - A handle of the FM port device. + @Param[in] params - Tx port parameters + + @Cautions Allowed only after the port is binded. +*//***************************************************************************/ +void fm_set_tx_port_params(struct fm_port *port, struct fm_port_non_rx_params *params); + +/**************************************************************************//** + @Function fm_port_enable + + @Description Enable specific FM-port device (may be Rx or Tx port). + + @Param[in] port - A handle of the FM port device. + + @Cautions Allowed only the port is initialized. +*//***************************************************************************/ +int fm_port_enable (struct fm_port *port); + +/**************************************************************************//** + @Function fm_port_disable + + @Description Disable specific FM-port device (may be Rx or Tx port). + + @Param[in] port - A handle of the FM port device. + + @Cautions Allowed only the port is initialized. +*//***************************************************************************/ +void fm_port_disable(struct fm_port *port); + +void * fm_port_get_handle(struct fm_port *port); + +/**************************************************************************//** + @Description Get base address of this port. Useful for accessing + port-specific registers (i.e., not common ones). + + @Param[in] port - A handle of the FM port device. + @Param[out] base_addr - The port's base addr (virtual address). +*//***************************************************************************/ +void fm_port_get_base_addr(const struct fm_port *port, uint64_t *base_addr); + +/**************************************************************************//** + @Description Lock function required before any FMD/LLD call. +*//***************************************************************************/ +void fm_mutex_lock(void); + +/**************************************************************************//** + @Description Unlock function required after any FMD/LLD call. +*//***************************************************************************/ +void fm_mutex_unlock(void); + +/** @} */ /* end of FM_LnxKern_ctrl_grp group */ +/** @} */ /* end of FM_LnxKern_grp group */ + + +#endif /* __FSL_FMAN_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/src/inc/wrapper/fsl_fman_test.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/src/inc/wrapper/fsl_fman_test.h @@ -0,0 +1,83 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 fsl_fman_test.h + + @Description +*//***************************************************************************/ + +#ifndef __FSL_FMAN_TEST_H +#define __FSL_FMAN_TEST_H + +#include + + +#define FMT_RX_ERR_Q 0xffffffff +#define FMT_RX_DFLT_Q 0xfffffffe +#define FMT_TX_ERR_Q 0xfffffffd +#define FMT_TX_CONF_Q 0xfffffffc + + +/**************************************************************************//** + @Function is_fman_test + + @Description Check if arriving frame belong to the test + + @Param[in] mac_dev - TODO + @Param[in] queueId - TODO + @Param[in] buffer - A pointer to the buffer to check. + @Param[in] size - size of the given buffer. + + @Return true if this buffer belongs to FMan test application; false otherwise. + + @Cautions Allowed only the port is initialized. +*//***************************************************************************/ +bool is_fman_test (void *mac_dev, + uint32_t queueId, + uint8_t *buffer, + uint32_t size); + +/**************************************************************************//** + @Function fman_test_ip_manip + + @Description IP header manipulation + + @Param[in] mac_dev - TODO + @Param[in] data - A pointer to the data (payload) to manipulate. + + @Cautions Allowed only the port is initialized. +*//***************************************************************************/ +void fman_test_ip_manip (void *mac_dev, uint8_t *data); + + +#endif /* __FSL_FMAN_TEST_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/src/inc/wrapper/lnxwrp_fm_ext.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/src/inc/wrapper/lnxwrp_fm_ext.h @@ -0,0 +1,162 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 lnxwrp_fm_ext.h + + @Description TODO +*//***************************************************************************/ + +#ifndef __LNXWRP_FM_EXT_H +#define __LNXWRP_FM_EXT_H + +#include "std_ext.h" +#include "sys_ext.h" +#include "fm_ext.h" +#include "fm_muram_ext.h" +#include "fm_pcd_ext.h" +#include "fm_port_ext.h" +#include "fm_mac_ext.h" +#include "fm_rtc_ext.h" + + +/**************************************************************************//** + @Group FM_LnxKern_grp Frame Manager Linux wrapper API + + @Description FM API functions, definitions and enums. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group FM_LnxKern_init_grp Initialization Unit + + @Description Initialization Unit + + Initialization Flow: + Initialization of the FM Module will be carried out by the Linux + kernel according to the following sequence: + a. Calling the initialization routine with no parameters. + b. The driver will register to the Device-Tree. + c. The Linux Device-Tree will initiate a call to the driver for + initialization. + d. The driver will read the appropriate information from the Device-Tree + e. [Optional] Calling the advance initialization routines to change + driver's defaults. + f. Initialization of the device will be automatically upon using it. + + @{ +*//***************************************************************************/ + +typedef struct t_WrpFmDevSettings +{ + t_FmParams param; + t_SysObjectAdvConfigEntry *advConfig; +} t_WrpFmDevSettings; + +typedef struct t_WrpFmPcdDevSettings +{ + t_FmPcdParams param; + t_SysObjectAdvConfigEntry *advConfig; +} t_WrpFmPcdDevSettings; + +typedef struct t_WrpFmPortDevSettings +{ + t_FmPortParams param; + t_SysObjectAdvConfigEntry *advConfig; +} t_WrpFmPortDevSettings; + +typedef struct t_WrpFmMacDevSettings +{ + t_FmMacParams param; + t_SysObjectAdvConfigEntry *advConfig; +} t_WrpFmMacDevSettings; + + +/**************************************************************************//** + @Function LNXWRP_FM_Init + + @Description Initialize the FM linux wrapper. + + @Return A handle (descriptor) of the newly created FM Linux wrapper + structure. +*//***************************************************************************/ +t_Handle LNXWRP_FM_Init(void); + +/**************************************************************************//** + @Function LNXWRP_FM_Free + + @Description Free the FM linux wrapper. + + @Param[in] h_LnxWrpFm - A handle to the FM linux wrapper. + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error LNXWRP_FM_Free(t_Handle h_LnxWrpFm); + +/**************************************************************************//** + @Function LNXWRP_FM_GetMacHandle + + @Description Get the FM-MAC LLD handle from the FM linux wrapper. + + @Param[in] h_LnxWrpFm - A handle to the FM linux wrapper. + @Param[in] fmId - Index of the FM device to get the MAC handle from. + @Param[in] macId - Index of the mac handle. + + @Return A handle of the LLD compressor. +*//***************************************************************************/ +t_Handle LNXWRP_FM_GetMacHandle(t_Handle h_LnxWrpFm, uint8_t fmId, uint8_t macId); + +#ifdef CONFIG_FSL_FMAN_TEST +t_Handle LNXWRP_FM_TEST_Init(void); +t_Error LNXWRP_FM_TEST_Free(t_Handle h_FmTestLnxWrp); +#endif /* CONFIG_FSL_FMAN_TEST */ + +/** @} */ /* end of FM_LnxKern_init_grp group */ + + +/**************************************************************************//** + @Group FM_LnxKern_ctrl_grp Control Unit + + @Description Control Unit + + TODO + @{ +*//***************************************************************************/ + +#include "fsl_fman.h" + +/** @} */ /* end of FM_LnxKern_ctrl_grp group */ +/** @} */ /* end of FM_LnxKern_grp group */ + + +#endif /* __LNXWRP_FM_EXT_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/src/inc/xx/xx.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/src/inc/xx/xx.h @@ -0,0 +1,50 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 __XX_H +#define __XX_H + +#include "xx_ext.h" + +void * xx_Malloc(uint32_t n); +void xx_Free(void *p); + +void *xx_MallocSmart(uint32_t size, int memPartitionId, uint32_t align); +void xx_FreeSmart(void *p); + +/* never used: */ +#define GetDeviceName(irq) ((char *)NULL) + +int GetDeviceIrqNum(int irq); + + +#endif /* __XX_H */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/src/system/Makefile +++ linux-3.13.0/drivers/net/dpa/NetCommSw/src/system/Makefile @@ -0,0 +1,10 @@ +# +# Makefile for the Freescale Ethernet controllers +# +EXTRA_CFLAGS += -DVERSION=\"\" +# +#Include netcomm SW specific definitions +include $(srctree)/drivers/net/dpa/NetCommSw/ncsw_config.mk +# + +obj-y += sys_io.o --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/src/system/sys_io.c +++ linux-3.13.0/drivers/net/dpa/NetCommSw/src/system/sys_io.c @@ -0,0 +1,171 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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(CONFIG_MODVERSIONS) && !defined(MODVERSIONS) +#define MODVERSIONS +#endif +#ifdef MODVERSIONS +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0) +#include +#else +#include +#endif /* LINUX_VERSION_CODE */ +#endif /* MODVERSIONS */ + +#include +#include + +#include + +#include "std_ext.h" +#include "error_ext.h" +#include "string_ext.h" +#include "list_ext.h" +#include "sys_io_ext.h" + + +#define __ERR_MODULE__ MODULE_UNKNOWN + + +typedef struct { + uint64_t virtAddr; + uint64_t physAddr; + uint32_t size; + t_List node; +} t_IoMap; +#define IOMAP_OBJECT(ptr) LIST_OBJECT(ptr, t_IoMap, node) + +LIST(mapsList); + + +static void EnqueueIoMap(t_IoMap *p_IoMap) +{ + uint32_t intFlags; + + intFlags = XX_DisableAllIntr(); + LIST_AddToTail(&p_IoMap->node, &mapsList); + XX_RestoreAllIntr(intFlags); +} + +static t_IoMap * FindIoMapByVirtAddr(uint64_t addr) +{ + t_IoMap *p_IoMap; + t_List *p_Pos; + + LIST_FOR_EACH(p_Pos, &mapsList) + { + p_IoMap = IOMAP_OBJECT(p_Pos); + if ((addr >= p_IoMap->virtAddr) && (addr < p_IoMap->virtAddr+p_IoMap->size)) + return p_IoMap; + } + + return NULL; +} + +static t_IoMap * FindIoMapByPhysAddr(uint64_t addr) +{ + t_IoMap *p_IoMap; + t_List *p_Pos; + + LIST_FOR_EACH(p_Pos, &mapsList) + { + p_IoMap = IOMAP_OBJECT(p_Pos); + if ((addr >= p_IoMap->physAddr) && (addr < p_IoMap->physAddr+p_IoMap->size)) + return p_IoMap; + } + + return NULL; +} + +t_Error SYS_RegisterIoMap (uint64_t virtAddr, uint64_t physAddr, uint32_t size) +{ + t_IoMap *p_IoMap; + + p_IoMap = (t_IoMap*)XX_Malloc(sizeof(t_IoMap)); + if (!p_IoMap) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("message handler object!!!")); + memset(p_IoMap, 0, sizeof(t_IoMap)); + + p_IoMap->virtAddr = virtAddr; + p_IoMap->physAddr = physAddr; + p_IoMap->size = size; + + INIT_LIST(&p_IoMap->node); + EnqueueIoMap(p_IoMap); + + return E_OK; +} + +t_Error SYS_UnregisterIoMap (uint64_t virtAddr) +{ + t_IoMap *p_IoMap = FindIoMapByVirtAddr(virtAddr); + if (!p_IoMap) + RETURN_ERROR(MINOR, E_NO_DEVICE, ("message handler not found in list!!!")); + + LIST_Del(&p_IoMap->node); + XX_Free(p_IoMap); + + return E_OK; +} + +uint64_t SYS_PhysToVirt(uint64_t addr) +{ + t_IoMap *p_IoMap = FindIoMapByPhysAddr(addr); + if (p_IoMap) + { + /* This is optimization - put the latest in the list-head - like a cache */ + if (mapsList.p_Next != &p_IoMap->node) + { + uint32_t intFlags = XX_DisableAllIntr(); + LIST_DelAndInit(&p_IoMap->node); + LIST_Add(&p_IoMap->node, &mapsList); + XX_RestoreAllIntr(intFlags); + } + return (uint64_t)(addr - p_IoMap->physAddr + p_IoMap->virtAddr); + } + return PTR_TO_UINT(phys_to_virt((unsigned long)addr)); +} + +uint64_t SYS_VirtToPhys(uint64_t addr) +{ + t_IoMap *p_IoMap; + + if (addr == 0) + return 0; + + p_IoMap = FindIoMapByVirtAddr(addr); + if (p_IoMap) + return (uint64_t)(addr - p_IoMap->virtAddr + p_IoMap->physAddr); + return (uint64_t)virt_to_phys(UINT_TO_PTR(addr)); +} --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/src/wrapper/Makefile +++ linux-3.13.0/drivers/net/dpa/NetCommSw/src/wrapper/Makefile @@ -0,0 +1,18 @@ +# +# Makefile for the Freescale Ethernet controllers +# +EXTRA_CFLAGS += -DVERSION=\"\" +# +#Include netcomm SW specific definitions +include $(srctree)/drivers/net/dpa/NetCommSw/ncsw_config.mk + +EXTRA_CFLAGS += -I$(NCSW_FM_INC) +EXTRA_CFLAGS += -I$(NET_DPA) + +obj-y += fsl-ncsw-PFM.o +obj-$(CONFIG_FSL_FMAN_TEST) += fman_test.o + +fsl-ncsw-PFM-objs := lnxwrp_fm.o lnxwrp_fm_port.o lnxwrp_ioctls_fm.o \ + lnxwrp_sysfs.o lnxwrp_sysfs_fm.o lnxwrp_sysfs_fm_port.o \ + lnxwrp_resources.o +obj-$(CONFIG_COMPAT) += lnxwrp_ioctls_fm_compat.o --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/src/wrapper/fman_test.c +++ linux-3.13.0/drivers/net/dpa/NetCommSw/src/wrapper/fman_test.c @@ -0,0 +1,1076 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 fman_test.c + + @Author Moti Bar + + @Description FM Linux test + +*/ + +/* Linux Headers ------------------- */ +#include + +#if defined(CONFIG_MODVERSIONS) && !defined(MODVERSIONS) +#define MODVERSIONS +#endif +#ifdef MODVERSIONS +#include +#endif /* MODVERSIONS */ + +#include +#include +#include +#include +#include +#include +#include +#include /*struct qman_fq */ +#include +#include +#include /*for mixed environment */ +#include +#include + +/* NetCommSw Headers --------------- */ +#include "std_ext.h" +#include "error_ext.h" +#include "debug_ext.h" +#include "list_ext.h" +#include "fm_ext.h" + +#include "fm_test_ioctls.h" +#include "fsl_fman.h" +#include "fsl_fman_test.h" +#include "fm_port_ext.h" + + +#define __ERR_MODULE__ MODULE_FM + +#define FMT_FRM_WATERMARK 0xdeadbeefdeadbeeaLL + +#ifdef CONFIG_COMPAT +/* Define this for KS64b - US32b */ +#define FMAN_TEST_CONFIG_COMPAT +#warning Please make sure you have the right value for FMAN_TEST_CONFIG_COMPAT +#endif + +typedef struct { + ioc_fmt_buff_desc_t buff; + t_List node; +} t_FmTestFrame; + +#define FMT_FRAME_OBJECT(ptr) LIST_OBJECT(ptr, t_FmTestFrame, node) + +typedef struct t_FmTestFq { + struct qman_fq fq_base; + struct list_head list; + void *port; + bool init; +} t_FmTestFq; + +typedef struct { + bool valid; + uint8_t id; + ioc_fmt_port_type portType; + ioc_diag_mode diag; + bool echo; + bool ip_header_manip; + struct fm_port *p_TxPort; + t_Handle h_TxFmPortDev; + struct fm_port *p_RxPort; + t_Handle h_RxFmPortDev; + t_Handle h_Mac; + uint64_t fmPhysBaseAddr; + t_List rxFrmsQ; + + int numOfTxQs; + struct qman_fq *p_TxFqs[8]; +} t_FmTestPort; + +typedef struct { + int major; + t_FmTestPort ports[IOC_FMT_MAX_NUM_OF_PORTS]; + struct class *fm_test_class; +} t_FmTest; + + +static t_FmTest fmTest; + + +static t_Error Set1GMacIntLoopback(t_FmTestPort *p_FmTestPort, bool en) +{ +#define FM_1GMAC0_OFFSET 0x000e0000 +#define FM_1GMAC_CMD_CONF_CTRL_OFFSET 0x100 +#define MACCFG1_LOOPBACK 0x00000100 + + uint64_t baseAddr, regAddr; + uint32_t tmpVal; + + baseAddr = p_FmTestPort->fmPhysBaseAddr + (FM_1GMAC0_OFFSET + (p_FmTestPort->id*0x2000)); + + baseAddr = PTR_TO_UINT(ioremap(baseAddr, 0x1000)); + + regAddr = baseAddr + FM_1GMAC_CMD_CONF_CTRL_OFFSET; + tmpVal = GET_UINT32(*((uint32_t *)UINT_TO_PTR(regAddr))); + if (en) + tmpVal |= MACCFG1_LOOPBACK; + else + tmpVal &= ~MACCFG1_LOOPBACK; + WRITE_UINT32(*((uint32_t *)UINT_TO_PTR(regAddr)), tmpVal); + + iounmap(UINT_TO_PTR(baseAddr)); + + return E_OK; +} + +#ifndef FM_10G_MAC_NO_CTRL_LOOPBACK +static t_Error Set10GMacIntLoopback(t_FmTestPort *p_FmTestPort, bool en) +{ +#define FM_10GMAC0_OFFSET 0x000f0000 +#define FM_10GMAC_CMD_CONF_CTRL_OFFSET 0x8 +#define CMD_CFG_LOOPBACK_EN 0x00000400 + + uint64_t baseAddr, regAddr; + uint32_t tmpVal; + + baseAddr = p_FmTestPort->fmPhysBaseAddr + (FM_10GMAC0_OFFSET + ((p_FmTestPort->id-FM_MAX_NUM_OF_1G_RX_PORTS)*0x2000)); + + baseAddr = PTR_TO_UINT(ioremap(baseAddr, 0x1000)); + + regAddr = baseAddr + FM_10GMAC_CMD_CONF_CTRL_OFFSET; + tmpVal = GET_UINT32(*((uint32_t *)UINT_TO_PTR(regAddr))); + if (en) + tmpVal |= CMD_CFG_LOOPBACK_EN; + else + tmpVal &= ~CMD_CFG_LOOPBACK_EN; + WRITE_UINT32(*((uint32_t *)UINT_TO_PTR(regAddr)), tmpVal); + + iounmap(UINT_TO_PTR(baseAddr)); + + return E_OK; +} +#endif /* !FM_10G_MAC_NO_CTRL_LOOPBACK */ + +static t_Error SetMacIntLoopback(t_FmTestPort *p_FmTestPort, bool en) +{ + + if (p_FmTestPort->portType == e_IOC_FMT_PORT_T_RXTX) + { + if (p_FmTestPort->id < FM_MAX_NUM_OF_1G_RX_PORTS) + return Set1GMacIntLoopback(p_FmTestPort, en); + else if ((p_FmTestPort->id >= FM_MAX_NUM_OF_1G_RX_PORTS) && (p_FmTestPort->id < FM_MAX_NUM_OF_1G_RX_PORTS + FM_MAX_NUM_OF_10G_RX_PORTS)) +#ifndef FM_10G_MAC_NO_CTRL_LOOPBACK + return Set10GMacIntLoopback(p_FmTestPort, en); +#else + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("TGEC don't have internal-loopback")); +#endif /* !FM_10G_MAC_NO_CTRL_LOOPBACK */ + } + else if (p_FmTestPort->portType == e_IOC_FMT_PORT_T_OP) + return E_OK; /* no Mac loopback can be set on OH ports */ + else + RETURN_ERROR(MINOR, E_INVALID_VALUE, ("fm-port-test id!")); + RETURN_ERROR(MINOR, E_INVALID_STATE, NO_MSG); +} + +static void EnqueueFrameToRxQ(t_FmTestPort *p_FmTestPort, t_FmTestFrame *p_FmTestFrame) +{ + uint32_t intFlags; + + intFlags = XX_DisableAllIntr(); + LIST_AddToTail(&p_FmTestFrame->node, &p_FmTestPort->rxFrmsQ); + XX_RestoreAllIntr(intFlags); +} + +static t_FmTestFrame * DequeueFrameFromRxQ(t_FmTestPort *p_FmTestPort) +{ + t_FmTestFrame *p_FmTestFrame = NULL; + uint32_t intFlags; + + intFlags = XX_DisableAllIntr(); + if (!LIST_IsEmpty(&p_FmTestPort->rxFrmsQ)) + { + p_FmTestFrame = FMT_FRAME_OBJECT(p_FmTestPort->rxFrmsQ.p_Next); + LIST_DelAndInit(&p_FmTestFrame->node); + } + XX_RestoreAllIntr(intFlags); + + return p_FmTestFrame; +} + +static enum qman_cb_dqrr_result egress_dqrr(struct qman_portal *portal, + struct qman_fq *fq, + const struct qm_dqrr_entry *dq) +{ + WARN(1, "FMD: failure at %s:%d/%s()!\n", __FILE__, __LINE__, __func__); + return qman_cb_dqrr_consume; +} + +static void egress_ern(struct qman_portal *portal, + struct qman_fq *fq, + const struct qm_mr_entry *msg) +{ + WARN(1, "FMD: failure at %s:%d/%s()!\n", __FILE__, __LINE__, __func__); +} + +static struct qman_fq * FqAlloc(t_FmTestPort *p_FmTestPort, + uint32_t fqid, + uint32_t flags, + uint16_t channel, + uint8_t wq) +{ + int _errno; + struct qman_fq *fq = NULL; + t_FmTestFq *p_FmtFq; + struct qm_mcc_initfq initfq; + + p_FmtFq = (t_FmTestFq *)XX_Malloc(sizeof(t_FmTestFq)); + if (!p_FmtFq) { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FQ obj!!!")); + return NULL; + } + + p_FmtFq->fq_base.cb.dqrr = egress_dqrr; + p_FmtFq->fq_base.cb.ern = p_FmtFq->fq_base.cb.dc_ern = p_FmtFq->fq_base.cb.fqs = egress_ern; + p_FmtFq->port = (void *)p_FmTestPort; + if (fqid == 0) { + flags |= QMAN_FQ_FLAG_DYNAMIC_FQID; + flags &= ~QMAN_FQ_FLAG_NO_MODIFY; + } else { + flags &= ~QMAN_FQ_FLAG_DYNAMIC_FQID; + } + + p_FmtFq->init = !(flags & QMAN_FQ_FLAG_NO_MODIFY); + + DBG(TRACE, ("fqid %d, flags 0x%08x, channel %d, wq %d",fqid,flags,channel,wq)); + + _errno = qman_create_fq(fqid, flags, &p_FmtFq->fq_base); + if (unlikely(_errno)) { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FQ obj - qman_new_fq!!!")); + XX_Free(p_FmtFq); + return NULL; + } + fq = &p_FmtFq->fq_base; + + if (p_FmtFq->init) { + initfq.we_mask = QM_INITFQ_WE_DESTWQ; + initfq.fqd.dest.channel = channel; + initfq.fqd.dest.wq = wq; + + _errno = qman_init_fq(fq, QMAN_INITFQ_FLAG_SCHED, &initfq); + if (unlikely(_errno < 0)) { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FQ obj - qman_init_fq!!!")); + qman_destroy_fq(fq, 0); + XX_Free(p_FmtFq); + return NULL; + } + } + + return fq; +} + +static t_Error PortInit (t_FmTestPort *p_FmTestPort, ioc_fmt_port_param_t *p_Params) +{ + struct device_node *fm_node, *fm_port_node; + const uint32_t *uint32_prop; + int _errno=0, lenp; + uint32_t i; + static struct of_device_id fm_node_of_match[] = { + { .compatible = "fsl,fman", }, + { /* end of list */ }, + }; + + INIT_LIST(&p_FmTestPort->rxFrmsQ); + p_FmTestPort->numOfTxQs = p_Params->num_tx_queues; + p_FmTestPort->id = p_Params->fm_port_id; + p_FmTestPort->portType = p_Params->fm_port_type; + p_FmTestPort->diag = e_IOC_DIAG_MODE_NONE; + p_FmTestPort->ip_header_manip = FALSE; + + /* Get all the FM nodes */ + for_each_matching_node(fm_node, fm_node_of_match) { + + uint32_prop = (uint32_t *)of_get_property(fm_node, "cell-index", &lenp); + if (unlikely(uint32_prop == NULL)) { + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("of_get_property(%s, cell-index) failed", fm_node->full_name)); + } + if (WARN_ON(lenp != sizeof(uint32_t))) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("of_get_property(%s, cell-index) invalid", fm_node->full_name)); + if (*uint32_prop == p_Params->fm_id) { + struct resource res; + /* Get the FM address */ + _errno = of_address_to_resource(fm_node, 0, &res); + if (unlikely(_errno < 0)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("of_address_to_resource() = %d", _errno)); + + p_FmTestPort->fmPhysBaseAddr = res.start; + + for_each_child_of_node(fm_node, fm_port_node) { + struct platform_device *of_dev; + + uint32_prop = (uint32_t *)of_get_property(fm_port_node, "cell-index", &lenp); + if (uint32_prop == NULL) + continue; + + if (of_device_is_compatible(fm_port_node, "fsl,fman-port-oh") && + (p_FmTestPort->portType == e_IOC_FMT_PORT_T_OP)) { + if (*uint32_prop == p_FmTestPort->id) + { + of_dev = of_find_device_by_node(fm_port_node); + if (unlikely(of_dev == NULL)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("fm id!")); + p_FmTestPort->p_TxPort = fm_port_bind(&of_dev->dev); + p_FmTestPort->h_TxFmPortDev = (t_Handle)fm_port_get_handle(p_FmTestPort->p_TxPort); + p_FmTestPort->h_RxFmPortDev = p_FmTestPort->h_TxFmPortDev; + p_FmTestPort->h_Mac = NULL; + break; + } + } + else if ((*uint32_prop == p_FmTestPort->id) && + p_FmTestPort->portType == e_IOC_FMT_PORT_T_RXTX) { + of_dev = of_find_device_by_node(fm_port_node); + if (unlikely(of_dev == NULL)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("fm id!")); + if(of_device_is_compatible(fm_port_node, "fsl,fman-port-1g-tx")) + { + p_FmTestPort->p_TxPort = fm_port_bind(&of_dev->dev); + p_FmTestPort->h_TxFmPortDev = (t_Handle)fm_port_get_handle(p_FmTestPort->p_TxPort); + } + else if(of_device_is_compatible(fm_port_node, "fsl,fman-port-1g-rx")) + { + p_FmTestPort->p_RxPort = fm_port_bind(&of_dev->dev); + p_FmTestPort->h_RxFmPortDev = (t_Handle)fm_port_get_handle(p_FmTestPort->p_RxPort); + } + else if (of_device_is_compatible(fm_port_node, "fsl,fman-1g-mac")) + p_FmTestPort->h_Mac = (typeof(p_FmTestPort->h_Mac))dev_get_drvdata(&of_dev->dev); + else + continue; + if(p_FmTestPort->h_TxFmPortDev && p_FmTestPort->h_RxFmPortDev && p_FmTestPort->h_Mac) + break; + } + else if (((*uint32_prop + FM_MAX_NUM_OF_1G_RX_PORTS )== p_FmTestPort->id) && + p_FmTestPort->portType == e_IOC_FMT_PORT_T_RXTX) { + of_dev = of_find_device_by_node(fm_port_node); + if (unlikely(of_dev == NULL)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("fm id!")); + if(of_device_is_compatible(fm_port_node, "fsl,fman-port-10g-tx")) + { + p_FmTestPort->p_TxPort = fm_port_bind(&of_dev->dev); + p_FmTestPort->h_TxFmPortDev = (t_Handle)fm_port_get_handle(p_FmTestPort->p_TxPort); + } + else if(of_device_is_compatible(fm_port_node, "fsl,fman-port-10g-rx")) + { + p_FmTestPort->p_RxPort = fm_port_bind(&of_dev->dev); + p_FmTestPort->h_RxFmPortDev = (t_Handle)fm_port_get_handle(p_FmTestPort->p_RxPort); + } + else if (of_device_is_compatible(fm_port_node, "fsl,fman-10g-mac")) + p_FmTestPort->h_Mac = (typeof(p_FmTestPort->h_Mac))dev_get_drvdata(&of_dev->dev); + else + continue; + if(p_FmTestPort->h_TxFmPortDev && p_FmTestPort->h_RxFmPortDev && p_FmTestPort->h_Mac) + break; + } + } //for_each_child + } + } //for each matching node + + DBG(TRACE, ("h_TxFmPortDev - 0x%08x, h_RxFmPortDev - 0x%08x, h_Mac - 0x%08x\n", + p_FmTestPort->h_TxFmPortDev,p_FmTestPort->h_RxFmPortDev,p_FmTestPort->h_Mac)); + + if(p_FmTestPort->h_TxFmPortDev == 0 || p_FmTestPort->h_RxFmPortDev == 0) + RETURN_ERROR(MINOR, E_INVALID_ADDRESS, ("Bad pointers!")); + + //init Queues + for (i=0; inumOfTxQs; i++) { + p_FmTestPort->p_TxFqs[i] = + FqAlloc(p_FmTestPort, + 0, + QMAN_FQ_FLAG_TO_DCPORTAL, + fm_get_tx_port_channel(p_FmTestPort->p_TxPort), + i); + if (IS_ERR(p_FmTestPort->p_TxFqs[i])) + RETURN_ERROR(MAJOR, E_INVALID_HANDLE, ("Tx FQs!")); + } + + p_FmTestPort->valid = TRUE; + + return E_OK; +} + + +bool is_fman_test (void *mac_dev, + uint32_t queueId, + uint8_t *buffer, + uint32_t size) +{ + t_FmTest *p_FmTest = &fmTest; + t_FmTestPort *p_FmTestPort=NULL; + t_FmTestFrame *p_FmTestFrame; + uint32_t count=size-7; + uint64_t temp; + uint8_t *temp_buf=buffer, i; + bool fman_test_flag = false; + uint32_t dataOffset; + struct fm_port *fm_port = (struct fm_port *) mac_dev; + +#if 0 + if ((queueId == FMT_TX_CONF_Q) || (queueId == FMT_TX_ERR_Q)) + { + /* Check for the FM-test-port object existence, otherwise we make wrong frees all the time */ + for (i=0; iports[i].h_Mac) + p_FmTestPort = &p_FmTest->ports[i]; + if (!p_FmTestPort) + return false; + + if (buffer != NULL) + XX_Free(buffer); + return true; + } +#endif + + /* Get the FM-test-port object */ + for (i=0; iports[i].h_Mac && mac_dev == p_FmTest->ports[i].h_Mac) || + fm_port == p_FmTest->ports[i].p_TxPort) + { + p_FmTestPort = &p_FmTest->ports[i]; + break; + } + if (!p_FmTestPort) + return false; + + /* Check according to watermark if this frame is for FM-test */ + while(count--) + { + temp = *(uint64_t *)temp_buf; + if (temp == FMT_FRM_WATERMARK) + { + fman_test_flag = true; + break; + } + temp_buf++; + } + + if (fman_test_flag /*|| p_FmTestPort->echo*/) + { + if ((queueId == FMT_TX_CONF_Q) || (queueId == FMT_TX_ERR_Q)) + { + if (buffer != NULL) + XX_Free(buffer); + return true; + } + + DBG(TRACE, ("Port %d got FMUC frame\n", p_FmTestPort->id)); + dataOffset = FM_PORT_GetBufferDataOffset(p_FmTestPort->h_RxFmPortDev); + + p_FmTestFrame = (t_FmTestFrame *)XX_Malloc(sizeof(t_FmTestFrame)); + /* dump frame... no more space left on device */ + if(p_FmTestFrame == NULL) + return false; + + memset(p_FmTestFrame, 0, sizeof(t_FmTestFrame)); + INIT_LIST(&p_FmTestFrame->node); + + p_FmTestFrame->buff.p_data = (uint8_t *)XX_Malloc(size * sizeof(uint8_t)); + /* No more space left on device*/ + if(p_FmTestFrame->buff.p_data == NULL){ + XX_Free(p_FmTestFrame); + return false; + } + + p_FmTestFrame->buff.size = size-dataOffset; + p_FmTestFrame->buff.qid = queueId; + + memcpy(p_FmTestFrame->buff.p_data, + (uint8_t *)PTR_MOVE(buffer, dataOffset), + p_FmTestFrame->buff.size); + + memcpy(p_FmTestFrame->buff.buff_context.fm_prs_res, + FM_PORT_GetBufferPrsResult(p_FmTestPort->h_RxFmPortDev, (char*)buffer), + 32); + + EnqueueFrameToRxQ(p_FmTestPort, p_FmTestFrame); + return true; + } + + return false; +} + +void fman_test_ip_manip (void *mac_dev, uint8_t *data) +{ + t_FmTest *p_FmTest = &fmTest; + t_FmTestPort *p_FmTestPort=NULL; + struct iphdr *iph; + uint32_t *p_Data = (uint32_t *)data; + uint32_t net; + uint32_t saddr, daddr; + uint8_t i; + + /* Get the FM-test-port object */ + for (i=0; iports[i].h_Mac) + p_FmTestPort = &p_FmTest->ports[i]; + if (!p_FmTestPort || !p_FmTestPort->ip_header_manip) + return; + + iph = (struct iphdr *)p_Data; + saddr = iph->saddr; + daddr = iph->daddr; + + /* If it is ARP packet ... */ + if (*p_Data == 0x00010800) + { + saddr = *((uint32_t *)PTR_MOVE(p_Data, 14)); + daddr = *((uint32_t *)PTR_MOVE(p_Data, 24)); + } + + DBG(TRACE, + ("\nSrc IP before header-manipulation: %d.%d.%d.%d" + "\nDest IP before header-manipulation: %d.%d.%d.%d", + (int)((saddr & 0xff000000) >> 24), + (int)((saddr & 0x00ff0000) >> 16), + (int)((saddr & 0x0000ff00) >> 8), + (int)((saddr & 0x000000ff) >> 0), + (int)((daddr & 0xff000000) >> 24), + (int)((daddr & 0x00ff0000) >> 16), + (int)((daddr & 0x0000ff00) >> 8), + (int)((daddr & 0x000000ff) >> 0))); + + if ((p_FmTestPort->diag == e_IOC_DIAG_MODE_CTRL_LOOPBACK) || + (p_FmTestPort->diag == e_IOC_DIAG_MODE_CHIP_LOOPBACK) || + (p_FmTestPort->diag == e_IOC_DIAG_MODE_PHY_LOOPBACK) || + (p_FmTestPort->diag == e_IOC_DIAG_MODE_LINE_LOOPBACK)) + { + net = saddr; + saddr = daddr; + daddr = net; + } + else + { + /* We allow only up to 10 eth ports */ + net = ((daddr & 0x000000ff) % 10); + saddr = (uint32_t)((saddr & ~0x0000ff00) | (net << 8)); + daddr = (uint32_t)((daddr & ~0x0000ff00) | (net << 8)); + } + + /* If not ARP ... */ + if (*p_Data != 0x00010800) + { + iph->check = 0; + + iph->saddr = saddr; + iph->daddr = daddr; + iph->check = ip_fast_csum((unsigned char *)iph, iph->ihl); + } + else /* The packet is ARP */ + { + *((uint32_t *)PTR_MOVE(p_Data, 14)) = saddr; + *((uint32_t *)PTR_MOVE(p_Data, 24)) = daddr; + } + + DBG(TRACE, + ("\nSrc IP after header-manipulation: %d.%d.%d.%d" + "\nDest IP after header-manipulation: %d.%d.%d.%d", + (int)((saddr & 0xff000000) >> 24), + (int)((saddr & 0x00ff0000) >> 16), + (int)((saddr & 0x0000ff00) >> 8), + (int)((saddr & 0x000000ff) >> 0), + (int)((daddr & 0xff000000) >> 24), + (int)((daddr & 0x00ff0000) >> 16), + (int)((daddr & 0x0000ff00) >> 8), + (int)((daddr & 0x000000ff) >> 0))); +} + + +/*****************************************************************************/ +/* API routines for the FM Linux Device */ +/*****************************************************************************/ + +static int fm_test_open(struct inode *inode, struct file *file) +{ + t_FmTest *p_FmTest = &fmTest; + //unsigned int major = imajor(inode); + unsigned int minor = iminor(inode); + + DBG(TRACE, ("Opening minor - %d - ", minor)); + + if (file->private_data != NULL) + return 0; + + if ((minor >= DEV_FM_TEST_PORTS_MINOR_BASE) && + (minor < DEV_FM_TEST_MAX_MINORS)) + file->private_data = &p_FmTest->ports[minor]; + else + return -ENXIO; + + return 0; +} + +static int fm_test_close(struct inode *inode, struct file *file) +{ + t_FmTestPort *p_FmTestPort; + unsigned int minor = iminor(inode); + int err = 0; + + DBG(TRACE, ("Closing minor - %d - ", minor)); + + p_FmTestPort = file->private_data; + if (!p_FmTestPort) + return -ENODEV; + + p_FmTestPort->valid = FALSE; + + /* Complete!!! */ + return err; +} + +static int fm_test_ioctls(unsigned int minor, struct file *file, unsigned int cmd, unsigned long arg, bool compat) +{ + t_FmTestPort *p_FmTestPort; + + DBG(TRACE, ("IOCTL minor - %d, cmd - 0x%08x, arg - 0x%08x", minor, cmd, arg)); + + p_FmTestPort = file->private_data; + if (!p_FmTestPort) + return -ENODEV; + + switch (cmd) + { + case FMT_PORT_IOC_INIT: + { + ioc_fmt_port_param_t param; + + if (p_FmTestPort->valid) { + REPORT_ERROR(MINOR, E_INVALID_STATE, ("port is already initialized!!!")); + return -EFAULT; + } +#if defined(FMAN_TEST_CONFIG_COMPAT) + if (compat){ + if (copy_from_user(¶m, (ioc_fmt_port_param_t *)compat_ptr(arg), sizeof(ioc_fmt_port_param_t))) { + REPORT_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + return -EFAULT; + } + } +#endif + else{ + if (copy_from_user(¶m, (ioc_fmt_port_param_t *) arg, sizeof(ioc_fmt_port_param_t))) { + REPORT_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + return -EFAULT; + } + } + + return PortInit(p_FmTestPort, ¶m); + } + + case FMT_PORT_IOC_SET_DIAG_MODE: + { + if (get_user(p_FmTestPort->diag, (ioc_diag_mode *)arg)) { + REPORT_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + return -EFAULT; + } + + if (p_FmTestPort->diag == e_IOC_DIAG_MODE_CTRL_LOOPBACK) + return SetMacIntLoopback(p_FmTestPort, TRUE); + else + return SetMacIntLoopback(p_FmTestPort, FALSE); + break; + } + + case FMT_PORT_IOC_SET_DPAECHO_MODE: + { +#if defined(FMAN_TEST_CONFIG_COMPAT) + if (compat){ + if (get_user(p_FmTestPort->echo, (int *)compat_ptr(arg))) { + REPORT_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + return -EFAULT; + } + } + else +#endif + { + if (get_user(p_FmTestPort->echo, (int *)arg)) { + REPORT_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + return -EFAULT; + } + } + break; + } + + case FMT_PORT_IOC_SET_IP_HEADER_MANIP: + { +#if defined(FMAN_TEST_CONFIG_COMPAT) + if (compat){ + if (get_user(p_FmTestPort->ip_header_manip, (int *)compat_ptr(arg))) { + REPORT_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + return -EFAULT; + } + } + else +#endif + { + if (get_user(p_FmTestPort->ip_header_manip, (int *)arg)) { + REPORT_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + return -EFAULT; + } + } + break; + } + + default: + REPORT_ERROR(MINOR, E_INVALID_SELECTION, ("IOCTL TEST cmd (0x%08lx):(0x%02lx:0x%02lx)!", cmd, _IOC_TYPE(cmd), _IOC_NR(cmd))); + return -EFAULT; + } + + return 0; +} + +#ifdef FMAN_TEST_CONFIG_COMPAT +static long fm_test_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + unsigned int minor = iminor(file->f_path.dentry->d_inode); + + return fm_test_ioctls(minor, file, cmd, arg, true); +} +#endif + +static long fm_test_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + unsigned int minor = iminor(file->f_path.dentry->d_inode); + unsigned int res; + + fm_mutex_lock(); + res = fm_test_ioctls(minor, file, cmd, arg, false); + fm_mutex_unlock(); + + return res; +} + +#ifdef FMAN_TEST_CONFIG_COMPAT +void copy_compat_test_frame_buffer(ioc_fmt_buff_desc_t *buff, ioc_fmt_compat_buff_desc_t *compat_buff) +{ + compat_buff->qid = buff->qid; + compat_buff->p_data = ptr_to_compat(buff->p_data); + compat_buff->size = buff->size; + compat_buff->status = buff->status; + + compat_buff->buff_context.p_user_priv = ptr_to_compat(buff->buff_context.p_user_priv); + memcpy(compat_buff->buff_context.fm_prs_res,buff->buff_context.fm_prs_res,FM_PRS_MAX * sizeof(uint8_t)); + memcpy(compat_buff->buff_context.fm_time_stamp,buff->buff_context.fm_time_stamp,FM_TIME_STAMP_MAX * sizeof(uint8_t)); +} +#endif + +ssize_t fm_test_read (struct file *file, char __user *buf, size_t size, loff_t *ppos) +{ + t_FmTestPort *p_FmTestPort; + t_FmTestFrame *p_FmTestFrame; + ssize_t cnt = 0; + + p_FmTestPort = file->private_data; + if (!p_FmTestPort || !p_FmTestPort->valid) + return -ENODEV; + + p_FmTestFrame = DequeueFrameFromRxQ(p_FmTestPort); + if (!p_FmTestFrame) + return 0; + + if (!p_FmTestPort->echo) { +#ifdef FMAN_TEST_CONFIG_COMPAT + cnt = sizeof(ioc_fmt_compat_buff_desc_t); +#else + cnt = sizeof(ioc_fmt_buff_desc_t); +#endif + if (sizebuff.p_data); + XX_Free(p_FmTestFrame); + REPORT_ERROR(MINOR, E_NO_MEMORY, ("Illegal buffer-size!")); + return 0; + } + + /* Copy structure */ +#ifdef FMAN_TEST_CONFIG_COMPAT + { + ioc_fmt_compat_buff_desc_t compat_buff; + copy_compat_test_frame_buffer(&p_FmTestFrame->buff, &compat_buff); + + if (copy_to_user(buf, &compat_buff, cnt)) { + XX_Free(p_FmTestFrame->buff.p_data); + XX_Free(p_FmTestFrame); + REPORT_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + return 0; + } + } + + ((ioc_fmt_compat_buff_desc_t *)buf)->p_data = ptr_to_compat(buf+sizeof(ioc_fmt_compat_buff_desc_t)); + cnt += MIN(p_FmTestFrame->buff.size, size-cnt); +#else + if (copy_to_user(buf, &p_FmTestFrame->buff, cnt)) { + XX_Free(p_FmTestFrame->buff.p_data); + XX_Free(p_FmTestFrame); + REPORT_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + return 0; + } + + ((ioc_fmt_buff_desc_t *)buf)->p_data = buf+sizeof(ioc_fmt_buff_desc_t); + cnt += MIN(p_FmTestFrame->buff.size, size-cnt); +#endif + + if (sizebuff.p_data); + XX_Free(p_FmTestFrame); + REPORT_ERROR(MINOR, E_NO_MEMORY, ("Illegal buffer-size!")); + return 0; + } + + /* copy frame */ +#ifdef FMAN_TEST_CONFIG_COMPAT + if (copy_to_user(buf+sizeof(ioc_fmt_compat_buff_desc_t), p_FmTestFrame->buff.p_data, cnt)) { + XX_Free(p_FmTestFrame->buff.p_data); + XX_Free(p_FmTestFrame); + REPORT_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + return 0; + } +#else + if (copy_to_user(buf+sizeof(ioc_fmt_buff_desc_t), p_FmTestFrame->buff.p_data, cnt)) { + XX_Free(p_FmTestFrame->buff.p_data); + XX_Free(p_FmTestFrame); + REPORT_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + return 0; + } +#endif + + XX_Free(p_FmTestFrame->buff.p_data); + XX_Free(p_FmTestFrame); + } + else { + uint8_t *p_Data = NULL; + uint32_t frameSize =0; + t_DpaaFD fd; + int _errno = 0; + + p_Data = (uint8_t *)p_FmTestFrame->buff.p_data; + frameSize = p_FmTestFrame->buff.size; + + /* paranoia ...*/ + if(!p_Data){ + XX_Free(p_FmTestFrame); + return 0; + } + + /* Set frame descriptor... */ + memset(&fd, 0, sizeof(fd)); + DPAA_FD_SET_ADDR(&fd, p_Data); + DPAA_FD_SET_OFFSET(&fd, 0); + DPAA_FD_SET_LENGTH(&fd, frameSize); + + /* Enqueue frame... */ + _errno = qman_enqueue(p_FmTestPort->p_TxFqs[0], (struct qm_fd*)&fd, 0); + if (_errno) { + XX_Free(p_FmTestFrame); + XX_Free(p_Data); + return 0; + } + + XX_Free(p_FmTestFrame); + } + + return cnt; +} + +ssize_t fm_test_write (struct file *file, const char __user *buf, size_t size, loff_t *ppos) +{ + t_FmTestPort *p_FmTestPort; + + ioc_fmt_buff_desc_t buffDesc; +#ifdef FMAN_TEST_CONFIG_COMPAT + ioc_fmt_compat_buff_desc_t compatBuffDesc; +#endif + t_DpaaFD fd; + uint8_t *p_Data; + uint32_t dataOffset; + int _errno; + + p_FmTestPort = file->private_data; + if (!p_FmTestPort || !p_FmTestPort->valid) { + REPORT_ERROR(MINOR, E_INVALID_HANDLE, NO_MSG); + return -1; + } + + /* If Compat (32B UserSpace - 64B KernelSpace) */ +#ifdef FMAN_TEST_CONFIG_COMPAT + if (copy_from_user(&compatBuffDesc, buf, sizeof(ioc_fmt_compat_buff_desc_t))) { + REPORT_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + return -1; + } + + buffDesc.qid = compatBuffDesc.qid; + buffDesc.p_data = compat_ptr(compatBuffDesc.p_data); + buffDesc.size = compatBuffDesc.size; + buffDesc.status = compatBuffDesc.status; + + buffDesc.buff_context.p_user_priv = compat_ptr(compatBuffDesc.buff_context.p_user_priv); + memcpy(buffDesc.buff_context.fm_prs_res, compatBuffDesc.buff_context.fm_prs_res, FM_PRS_MAX * sizeof(uint8_t)); + memcpy(buffDesc.buff_context.fm_time_stamp, compatBuffDesc.buff_context.fm_time_stamp, FM_TIME_STAMP_MAX * sizeof(uint8_t)); +#else + if (copy_from_user(&buffDesc, (ioc_fmt_buff_desc_t *)buf, sizeof(ioc_fmt_buff_desc_t))) { + REPORT_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + return -1; + } +#endif + + dataOffset = FM_PORT_GetBufferDataOffset(p_FmTestPort->h_TxFmPortDev); + p_Data = (uint8_t*)XX_Malloc(buffDesc.size+dataOffset); + if (!p_Data) { + REPORT_ERROR(MINOR, E_NO_MEMORY, ("data buff!")); + return -1; + } + + /* If Compat (32UserSpace - 64KernelSpace) the buffDesc.p_data is ok */ + if (copy_from_user ((uint8_t *)PTR_MOVE(p_Data, dataOffset), + buffDesc.p_data, + buffDesc.size)) { + REPORT_ERROR(MINOR, E_NO_MEMORY, ("data buff!")); + XX_Free(p_Data); + return -1; + } + + memset(&fd, 0, sizeof(fd)); + DPAA_FD_SET_ADDR(&fd, p_Data); + DPAA_FD_SET_OFFSET(&fd, dataOffset); + DPAA_FD_SET_LENGTH(&fd, buffDesc.size); + + DBG(TRACE, ("buffDesc qId %d, fqid %d, frame len %d, fq 0x%8x\n", + buffDesc.qid, qman_fq_fqid(p_FmTestPort->p_TxFqs[buffDesc.qid]), buffDesc.size, p_FmTestPort->p_TxFqs[buffDesc.qid])); + + _errno = qman_enqueue(p_FmTestPort->p_TxFqs[buffDesc.qid], (struct qm_fd*)&fd, 0); + if (_errno) { + buffDesc.status = (uint32_t)_errno; + if (copy_to_user((ioc_fmt_buff_desc_t*)buf, &buffDesc, sizeof(ioc_fmt_buff_desc_t))) { + REPORT_ERROR(MINOR, E_WRITE_FAILED, NO_MSG); + XX_Free(p_Data); + return -1; + } + } + return buffDesc.size; +} + +/* Globals for FM character device */ +static struct file_operations fm_test_fops = +{ + owner: THIS_MODULE, +#ifdef FMAN_TEST_CONFIG_COMPAT + compat_ioctl:fm_test_compat_ioctl, +#endif + unlocked_ioctl: fm_test_ioctl, + open: fm_test_open, + release: fm_test_close, + read: fm_test_read, + write: fm_test_write, +}; + +t_Handle LNXWRP_FM_TEST_Init(void) +{ + t_FmTest *p_FmTest = &fmTest; + int id; + + /* Register to the /dev for IOCTL API */ + /* Register dynamically a new major number for the character device: */ + if ((p_FmTest->major = register_chrdev(0, DEV_FM_TEST_NAME, &fm_test_fops)) <= 0) + { + REPORT_ERROR(MAJOR, E_INVALID_STATE, ("Failed to allocate a major number for device \"%s\"", DEV_FM_TEST_NAME)); + return NULL; + } + + /* Creating class for FMan_test */ + DBG(TRACE ,("class_create fm_test_class")); + p_FmTest->fm_test_class = class_create(THIS_MODULE, DEV_FM_TEST_NAME); + if (IS_ERR(p_FmTest->fm_test_class)) { + unregister_chrdev(p_FmTest->major, DEV_FM_TEST_NAME); + REPORT_ERROR(MAJOR, E_INVALID_STATE, ("class_create error fm_test_class")); + return NULL; + } + + for (id = 0; id < IOC_FMT_MAX_NUM_OF_PORTS; id++) + if(NULL == device_create(p_FmTest->fm_test_class, NULL, MKDEV(p_FmTest->major, DEV_FM_TEST_PORTS_MINOR_BASE + id), NULL, + DEV_FM_TEST_NAME "%d", id)) + { + REPORT_ERROR(MAJOR, E_INVALID_STATE, ("Error creating device.\n")); + return NULL; + } + + /* Seed the QMan allocator so we'll have enough queues to run PCD with + dinamically fqid-range allocation */ + qman_release_fqid_range(0x100, 0x400); + + return p_FmTest; +} + +t_Error LNXWRP_FM_TEST_Free(t_Handle h_FmTestLnxWrp) +{ + t_FmTest *p_FmTest = (t_FmTest*)h_FmTestLnxWrp; + int id; + + DBG(TRACE, ("destroy fm_test_class")); + for (id = 0; id < IOC_FMT_MAX_NUM_OF_PORTS; id++) + device_destroy(p_FmTest->fm_test_class, MKDEV(p_FmTest->major, DEV_FM_TEST_PORTS_MINOR_BASE + id)); + class_destroy(p_FmTest->fm_test_class); + + return E_OK; +} + +static t_Handle h_FmTestLnxWrp; + +static int __init __cold fm_test_load (void) +{ + if ((h_FmTestLnxWrp = LNXWRP_FM_TEST_Init()) == NULL) + { + printk("Failed to init FM-test wrapper!\n"); + if (h_FmTestLnxWrp) + LNXWRP_FM_TEST_Free(h_FmTestLnxWrp); + return -ENODEV; + } + + printk (KERN_CRIT "Freescale FM test module ("__DATE__ ":"__TIME__")\n"); + + return 0; +} + +static void __exit __cold fm_test_unload (void) +{ + if (h_FmTestLnxWrp) + LNXWRP_FM_TEST_Free(h_FmTestLnxWrp); +} + +module_init (fm_test_load); +module_exit (fm_test_unload); --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_fm.c +++ linux-3.13.0/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_fm.c @@ -0,0 +1,1204 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 lnxwrp_fm.c + + @Author Shlomi Gridish + + @Description FM Linux wrapper functions. + +*/ + +#include +#include +#if defined(CONFIG_MODVERSIONS) && !defined(MODVERSIONS) +#define MODVERSIONS +#endif +#ifdef MODVERSIONS +#include +#endif /* MODVERSIONS */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include /* For struct qe_firmware */ +#include +#include /* For file access mask */ +#include +#include +#include + +/* NetCommSw Headers --------------- */ +#include "std_ext.h" +#include "error_ext.h" +#include "sprint_ext.h" +#include "debug_ext.h" +#include "sys_io_ext.h" + +#include "fm_ioctls.h" + +#include "lnxwrp_fm.h" +#include "lnxwrp_resources.h" +#include "lnxwrp_sysfs_fm.h" +#include "lnxwrp_sysfs_fm_port.h" + +#define PROC_PRINT(args...) offset += sprintf(buf+offset,args) + +#define ADD_ADV_CONFIG_NO_RET(_func, _param) \ + do { \ + if (ip_Function = _func; \ + _param \ + i++; \ + } \ + else \ + REPORT_ERROR(MAJOR, E_INVALID_VALUE,\ + ("Number of advanced-configuration entries exceeded"));\ + } while (0) + +static t_LnxWrpFm lnxWrpFm; + + +static irqreturn_t fm_irq(int irq, void *_dev) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = (t_LnxWrpFmDev *)_dev; + + if (!p_LnxWrpFmDev || !p_LnxWrpFmDev->h_Dev) + return IRQ_NONE; + + FM_EventIsr(p_LnxWrpFmDev->h_Dev); + + return IRQ_HANDLED; +} + +static irqreturn_t fm_err_irq(int irq, void *_dev) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = (t_LnxWrpFmDev *)_dev; + + if (!p_LnxWrpFmDev || !p_LnxWrpFmDev->h_Dev) + return IRQ_NONE; + + if (FM_ErrorIsr(p_LnxWrpFmDev->h_Dev) == E_OK) + return IRQ_HANDLED; + + return IRQ_NONE; +} + +/* used to protect FMD/LLD from concurrent calls in functions fm_mutex_lock / fm_mutex_unlock */ +static struct mutex lnxwrp_mutex; + +static t_LnxWrpFmDev * CreateFmDev(uint8_t id) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev; + int j; + + p_LnxWrpFmDev = (t_LnxWrpFmDev *)XX_Malloc(sizeof(t_LnxWrpFmDev)); + if (!p_LnxWrpFmDev) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, NO_MSG); + return NULL; + } + + memset(p_LnxWrpFmDev, 0, sizeof(t_LnxWrpFmDev)); + p_LnxWrpFmDev->fmDevSettings.advConfig = (t_SysObjectAdvConfigEntry*)XX_Malloc(FM_MAX_NUM_OF_ADV_SETTINGS*sizeof(t_SysObjectAdvConfigEntry)); + memset(p_LnxWrpFmDev->fmDevSettings.advConfig, 0, (FM_MAX_NUM_OF_ADV_SETTINGS*sizeof(t_SysObjectAdvConfigEntry))); + p_LnxWrpFmDev->fmPcdDevSettings.advConfig = (t_SysObjectAdvConfigEntry*)XX_Malloc(FM_MAX_NUM_OF_ADV_SETTINGS*sizeof(t_SysObjectAdvConfigEntry)); + memset(p_LnxWrpFmDev->fmPcdDevSettings.advConfig, 0, (FM_MAX_NUM_OF_ADV_SETTINGS*sizeof(t_SysObjectAdvConfigEntry))); + p_LnxWrpFmDev->hcPort.settings.advConfig = (t_SysObjectAdvConfigEntry*)XX_Malloc(FM_MAX_NUM_OF_ADV_SETTINGS*sizeof(t_SysObjectAdvConfigEntry)); + memset(p_LnxWrpFmDev->hcPort.settings.advConfig, 0, (FM_MAX_NUM_OF_ADV_SETTINGS*sizeof(t_SysObjectAdvConfigEntry))); + for (j=0; jrxPorts[j].settings.advConfig = (t_SysObjectAdvConfigEntry*)XX_Malloc(FM_MAX_NUM_OF_ADV_SETTINGS*sizeof(t_SysObjectAdvConfigEntry)); + memset(p_LnxWrpFmDev->rxPorts[j].settings.advConfig, 0, (FM_MAX_NUM_OF_ADV_SETTINGS*sizeof(t_SysObjectAdvConfigEntry))); + } + for (j=0; jtxPorts[j].settings.advConfig = (t_SysObjectAdvConfigEntry*)XX_Malloc(FM_MAX_NUM_OF_ADV_SETTINGS*sizeof(t_SysObjectAdvConfigEntry)); + memset(p_LnxWrpFmDev->txPorts[j].settings.advConfig, 0, (FM_MAX_NUM_OF_ADV_SETTINGS*sizeof(t_SysObjectAdvConfigEntry))); + } + for (j=0; jopPorts[j].settings.advConfig = (t_SysObjectAdvConfigEntry*)XX_Malloc(FM_MAX_NUM_OF_ADV_SETTINGS*sizeof(t_SysObjectAdvConfigEntry)); + memset(p_LnxWrpFmDev->opPorts[j].settings.advConfig, 0, (FM_MAX_NUM_OF_ADV_SETTINGS*sizeof(t_SysObjectAdvConfigEntry))); + } + + return p_LnxWrpFmDev; +} + +static void DestroyFmDev(t_LnxWrpFmDev *p_LnxWrpFmDev) +{ + int j; + + for (j=0; jopPorts[j].settings.advConfig) + XX_Free(p_LnxWrpFmDev->opPorts[j].settings.advConfig); + for (j=0; jtxPorts[j].settings.advConfig) + XX_Free(p_LnxWrpFmDev->txPorts[j].settings.advConfig); + for (j=0; jrxPorts[j].settings.advConfig) + XX_Free(p_LnxWrpFmDev->rxPorts[j].settings.advConfig); + if (p_LnxWrpFmDev->hcPort.settings.advConfig) + XX_Free(p_LnxWrpFmDev->hcPort.settings.advConfig); + if (p_LnxWrpFmDev->fmPcdDevSettings.advConfig) + XX_Free(p_LnxWrpFmDev->fmPcdDevSettings.advConfig); + if (p_LnxWrpFmDev->fmDevSettings.advConfig) + XX_Free(p_LnxWrpFmDev->fmDevSettings.advConfig); + + XX_Free(p_LnxWrpFmDev); +} + +static t_Error FillRestFmInfo(t_LnxWrpFmDev *p_LnxWrpFmDev) +{ +#define FM_BMI_PPIDS_OFFSET 0x00080304 +#define FM_DMA_PLR_OFFSET 0x000c2060 +#define FM_FPM_IP_REV_1_OFFSET 0x000c30c4 +#define DMA_HIGH_LIODN_MASK 0x0FFF0000 +#define DMA_LOW_LIODN_MASK 0x00000FFF +#define DMA_LIODN_SHIFT 16 + +typedef _Packed struct { + uint32_t plr[32]; +} _PackedType t_Plr; + +typedef _Packed struct { + volatile uint32_t fmbm_ppid[63]; +} _PackedType t_Ppids; + + t_Plr *p_Plr; + t_Ppids *p_Ppids; + int i,j; + uint32_t fmRev; + + static const uint8_t phys1GRxPortId[] = {0x8,0x9,0xa,0xb,0xc}; + static const uint8_t phys10GRxPortId[] = {0x10}; + static const uint8_t physOhPortId[] = {0x1,0x2,0x3,0x4,0x5,0x6,0x7}; + static const uint8_t phys1GTxPortId[] = {0x28,0x29,0x2a,0x2b,0x2c}; + static const uint8_t phys10GTxPortId[] = {0x30}; + + fmRev = (uint32_t)(*((volatile uint32_t *)UINT_TO_PTR(p_LnxWrpFmDev->fmBaseAddr+FM_FPM_IP_REV_1_OFFSET))); + fmRev &= 0xffff; + + p_Plr = (t_Plr *)UINT_TO_PTR(p_LnxWrpFmDev->fmBaseAddr+FM_DMA_PLR_OFFSET); +#ifdef MODULE + for (i=0;iplr[i] = 0; +#endif /* MODULE */ + + for (i=0; iplr[i/2] & DMA_LOW_LIODN_MASK) : + ((p_Plr->plr[i/2] & DMA_HIGH_LIODN_MASK) >> DMA_LIODN_SHIFT)); +#ifdef FM_PARTITION_ARRAY + /* TODO: this was .liodnPerPartition[i] = liodnBase; is the index meaning the same? */ + p_LnxWrpFmDev->fmDevSettings.param.liodnBasePerPort[i] = liodnBase; +#endif /* FM_PARTITION_ARRAY */ + + if ((i >= phys1GRxPortId[0]) && + (i <= phys1GRxPortId[FM_MAX_NUM_OF_1G_RX_PORTS-1])) + { + for (j=0; jrxPorts[j].settings.param.liodnBase = liodnBase; + } + else if (FM_MAX_NUM_OF_10G_RX_PORTS && + (i >= phys10GRxPortId[0]) && + (i <= phys10GRxPortId[FM_MAX_NUM_OF_10G_RX_PORTS-1])) + { + for (j=0; jrxPorts[FM_MAX_NUM_OF_1G_RX_PORTS+j].settings.param.liodnBase = liodnBase; + } + else if ((i >= physOhPortId[0]) && + (i <= physOhPortId[FM_MAX_NUM_OF_OH_PORTS-1])) + { + for (j=0; jhcPort.settings.param.liodnBase = liodnBase; + else + p_LnxWrpFmDev->opPorts[j - 1].settings.param.liodnBase = liodnBase; + } + else if ((i >= phys1GTxPortId[0]) && + (i <= phys1GTxPortId[FM_MAX_NUM_OF_1G_TX_PORTS-1])) + { + for (j=0; jtxPorts[j].settings.param.liodnBase = liodnBase; + } + else if (FM_MAX_NUM_OF_10G_TX_PORTS && + (i >= phys10GTxPortId[0]) && + (i <= phys10GTxPortId[FM_MAX_NUM_OF_10G_TX_PORTS-1])) + { + for (j=0; jtxPorts[FM_MAX_NUM_OF_1G_TX_PORTS+j].settings.param.liodnBase = liodnBase; + } + } + + p_Ppids = (t_Ppids *)UINT_TO_PTR(p_LnxWrpFmDev->fmBaseAddr+FM_BMI_PPIDS_OFFSET); + + for (i=0; irxPorts[i].settings.param.specificParams.rxParams.liodnOffset = + p_Ppids->fmbm_ppid[phys1GRxPortId[i]-1]; + + for (i=0; irxPorts[FM_MAX_NUM_OF_1G_RX_PORTS+i].settings.param.specificParams.rxParams.liodnOffset = + p_Ppids->fmbm_ppid[phys10GRxPortId[i]-1]; + +#ifdef FM_OP_PARTITION_ERRATA_FMANx8 + for (i=0; iopPorts[i-1].settings.param.specificParams.nonRxParams.opLiodnOffset = + p_Ppids->fmbm_ppid[physOhPortId[i]-1]; + } +#endif /* FM_OP_PARTITION_ERRATA_FMANx8 */ + + return E_OK; +} + +/* The default address for the Fman microcode in flash. Having a default + * allows older systems to continue functioning. 0xEF000000 is the address + * where the firmware is normally on a P4080DS. + */ +#ifdef CONFIG_PHYS_64BIT +static phys_addr_t P4080_UCAddr = 0xfef000000ull; +#else +static phys_addr_t P4080_UCAddr = 0xef000000; +#endif + + +/** + * FmanUcodeAddrParam - process the fman_ucode kernel command-line parameter + * + * This function is called when the kernel encounters a fman_ucode command- + * line parameter. This parameter contains the address of the Fman microcode + * in flash. + */ +static int FmanUcodeAddrParam(char *str) +{ + unsigned long long l; + int ret; + + ret = strict_strtoull(str, 0, &l); + if (!ret) + P4080_UCAddr = (phys_addr_t) l; + + return ret; +} +__setup("fman_ucode=", FmanUcodeAddrParam); + +/** + * FindFmanMicrocode - find the Fman microcode in memory + * + * This function returns a pointer to the QE Firmware blob that holds + * the Fman microcode. We use the QE Firmware structure because Fman microcode + * is similar to QE microcode, so there's no point in defining a new layout. + * + * Current versions of U-Boot embed the Fman firmware into the device tree, + * so we check for that first. Each Fman node in the device tree contains a + * node or a pointer to node that holds the firmware. Technically, we should + * be fetching the firmware node for the current Fman, but we don't have that + * information any more, so we assume that there is only one firmware node in + * the device tree, and that all Fmen use the same firmware. + * + * If we have an older U-Boot, then we assume that the firmware is located in + * flash at physical address 'P4080_UCAddr' + */ +static const struct qe_firmware *FindFmanMicrocode(void) +{ + static const struct qe_firmware *P4080_UCPatch; + struct device_node *np; +#ifdef FMAN_READ_MICROCODE_FROM_NOR_FLASH + unsigned long P4080_UCSize; + const struct qe_header *hdr; +#endif + + if (P4080_UCPatch) + return P4080_UCPatch; + + /* The firmware should be inside the device tree. */ + np = of_find_compatible_node(NULL, NULL, "fsl,fman-firmware"); + if (np) { + P4080_UCPatch = of_get_property(np, "fsl,firmware", NULL); + of_node_put(np); + if (P4080_UCPatch) + return P4080_UCPatch; + else + REPORT_ERROR(WARNING, E_NOT_FOUND, ("firmware node is incomplete")); + } + +#ifdef FMAN_READ_MICROCODE_FROM_NOR_FLASH + /* If not, then we have a legacy U-Boot. The firmware is in flash. */ + /* Only map enough to the get the core structure */ + P4080_UCPatch = ioremap(P4080_UCAddr, sizeof(struct qe_firmware)); + if (!P4080_UCPatch) { + REPORT_ERROR(MAJOR, E_NULL_POINTER, ("ioremap(%llx) returned NULL", (u64) P4080_UCAddr)); + return NULL; + } + /* Make sure it really is a QE Firmware blob */ + hdr = &P4080_UCPatch->header; + if (!hdr || + (hdr->magic[0] != 'Q') || (hdr->magic[1] != 'E') || + (hdr->magic[2] != 'F')) { + REPORT_ERROR(MAJOR, E_NOT_FOUND, ("data at %llx is not a Fman microcode", (u64) P4080_UCAddr)); + return NULL; + } + + /* Now we call ioremap again, this time to pick up the whole blob. We never + * iounmap() the memory because we might reset the Fman at any time. + */ + /* TODO: ionumap() should be performed when unloading the driver */ + P4080_UCSize = sizeof(u32) * P4080_UCPatch->microcode[0].count; + iounmap((void *)P4080_UCPatch); + P4080_UCPatch = ioremap(P4080_UCAddr, P4080_UCSize); + if (!P4080_UCPatch) { + REPORT_ERROR(MAJOR, E_NULL_POINTER, ("ioremap(%llx) returned NULL", (u64) P4080_UCAddr)); + return NULL; + } +#else + /* Returning NULL here forces the reuse of the IRAM content */ + P4080_UCPatch = NULL; +#endif /* FMAN_READ_MICROCODE_FROM_NOR_FLASH */ + return P4080_UCPatch; +} + +static t_LnxWrpFmDev * ReadFmDevTreeNode (struct platform_device *of_dev) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev; + struct device_node *fm_node, *dev_node, *dpa_node; + struct of_device_id name; + struct resource res; + const uint32_t *uint32_prop; + int _errno=0, lenp; + static struct of_device_id dpa_eth_node_of_match[] = { + { .compatible = "fsl,dpa-ethernet", }, + { /* end of list */ }, + }; + + fm_node = of_node_get(of_dev->dev.of_node); + + uint32_prop = (uint32_t *)of_get_property(fm_node, "cell-index", &lenp); + if (unlikely(uint32_prop == NULL)) { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("of_get_property(%s, cell-index) failed", fm_node->full_name)); + return NULL; + } + if (WARN_ON(lenp != sizeof(uint32_t))) + return NULL; + if (*uint32_prop > INTG_MAX_NUM_OF_FM) { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("fm id!")); + return NULL; + } + p_LnxWrpFmDev = CreateFmDev(*uint32_prop); + if (!p_LnxWrpFmDev) { + REPORT_ERROR(MAJOR, E_NULL_POINTER, NO_MSG); + return NULL; + } + p_LnxWrpFmDev->dev = &of_dev->dev; + p_LnxWrpFmDev->id = *uint32_prop; + + /* Get the FM interrupt */ + p_LnxWrpFmDev->irq = of_irq_to_resource(fm_node, 0, NULL); + if (unlikely(p_LnxWrpFmDev->irq == /*NO_IRQ*/0)) { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("of_irq_to_resource() = %d", NO_IRQ)); + return NULL; + } + + /* Get the FM error interrupt */ + p_LnxWrpFmDev->err_irq = of_irq_to_resource(fm_node, 1, NULL); + /* TODO - un-comment it once there will be err_irq in the DTS */ +#if 0 + if (unlikely(p_LnxWrpFmDev->err_irq == /*NO_IRQ*/0)) { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("of_irq_to_resource() = %d", NO_IRQ)); + return NULL; + } +#endif /* 0 */ + + /* Get the FM address */ + _errno = of_address_to_resource(fm_node, 0, &res); + if (unlikely(_errno < 0)) { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("of_address_to_resource() = %d", _errno)); + return NULL; + } + + p_LnxWrpFmDev->fmBaseAddr = 0; + p_LnxWrpFmDev->fmPhysBaseAddr = res.start; + p_LnxWrpFmDev->fmMemSize = res.end + 1 - res.start; + + uint32_prop = (uint32_t *)of_get_property(fm_node, "clock-frequency", &lenp); + if (unlikely(uint32_prop == NULL)) { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("of_get_property(%s, clock-frequency) failed", fm_node->full_name)); + return NULL; + } + if (WARN_ON(lenp != sizeof(uint32_t))) + return NULL; + p_LnxWrpFmDev->fmDevSettings.param.fmClkFreq = (*uint32_prop + 500000)/1000000; /* In MHz, rounded */ + + /* Get the MURAM base address and size */ + memset(&name, 0, sizeof(struct of_device_id)); + if (WARN_ON(strlen("muram") >= sizeof(name.name))) + return NULL; + strcpy(name.name, "muram"); + if (WARN_ON(strlen("fsl,fman-muram") >= sizeof(name.compatible))) + return NULL; + strcpy(name.compatible, "fsl,fman-muram"); + for_each_child_of_node(fm_node, dev_node) { + if (likely(of_match_node(&name, dev_node) != NULL)) { + _errno = of_address_to_resource(dev_node, 0, &res); + if (unlikely(_errno < 0)) { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("of_address_to_resource() = %d", _errno)); + return NULL; + } + + p_LnxWrpFmDev->fmMuramBaseAddr = 0; + p_LnxWrpFmDev->fmMuramPhysBaseAddr = res.start; + p_LnxWrpFmDev->fmMuramMemSize = res.end + 1 - res.start; + } + } + + /* Get the RTC base address and size */ + memset(&name, 0, sizeof(struct of_device_id)); + if (WARN_ON(strlen("rtc") >= sizeof(name.name))) + return NULL; + strcpy(name.name, "rtc"); + if (WARN_ON(strlen("fsl,fman-rtc") >= sizeof(name.compatible))) + return NULL; + strcpy(name.compatible, "fsl,fman-rtc"); + for_each_child_of_node(fm_node, dev_node) { + if (likely(of_match_node(&name, dev_node) != NULL)) { + _errno = of_address_to_resource(dev_node, 0, &res); + if (unlikely(_errno < 0)) { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("of_address_to_resource() = %d", _errno)); + return NULL; + } + + p_LnxWrpFmDev->fmRtcBaseAddr = 0; + p_LnxWrpFmDev->fmRtcPhysBaseAddr = res.start; + p_LnxWrpFmDev->fmRtcMemSize = res.end + 1 - res.start; + } + } + + /* Get all PCD nodes */ + memset(&name, 0, sizeof(struct of_device_id)); + if (WARN_ON(strlen("parser") >= sizeof(name.name))) + return NULL; + strcpy(name.name, "parser"); + if (WARN_ON(strlen("fsl,fman-parser") >= sizeof(name.compatible))) + return NULL; + strcpy(name.compatible, "fsl,fman-parser"); + for_each_child_of_node(fm_node, dev_node) + if (likely(of_match_node(&name, dev_node) != NULL)) + p_LnxWrpFmDev->prsActive = TRUE; + + memset(&name, 0, sizeof(struct of_device_id)); + if (WARN_ON(strlen("keygen") >= sizeof(name.name))) + return NULL; + strcpy(name.name, "keygen"); + if (WARN_ON(strlen("fsl,fman-keygen") >= sizeof(name.compatible))) + return NULL; + strcpy(name.compatible, "fsl,fman-keygen"); + for_each_child_of_node(fm_node, dev_node) + if (likely(of_match_node(&name, dev_node) != NULL)) + p_LnxWrpFmDev->kgActive = TRUE; + + memset(&name, 0, sizeof(struct of_device_id)); + if (WARN_ON(strlen("cc") >= sizeof(name.name))) + return NULL; + strcpy(name.name, "cc"); + if (WARN_ON(strlen("fsl,fman-cc") >= sizeof(name.compatible))) + return NULL; + strcpy(name.compatible, "fsl,fman-cc"); + for_each_child_of_node(fm_node, dev_node) + if (likely(of_match_node(&name, dev_node) != NULL)) + p_LnxWrpFmDev->ccActive = TRUE; + + memset(&name, 0, sizeof(struct of_device_id)); + if (WARN_ON(strlen("policer") >= sizeof(name.name))) + return NULL; + strcpy(name.name, "policer"); + if (WARN_ON(strlen("fsl,fman-policer") >= sizeof(name.compatible))) + return NULL; + strcpy(name.compatible, "fsl,fman-policer"); + for_each_child_of_node(fm_node, dev_node) + if (likely(of_match_node(&name, dev_node) != NULL)) + p_LnxWrpFmDev->plcrActive = TRUE; + + if (p_LnxWrpFmDev->prsActive || p_LnxWrpFmDev->kgActive || + p_LnxWrpFmDev->ccActive || p_LnxWrpFmDev->plcrActive) + p_LnxWrpFmDev->pcdActive = TRUE; + + if (p_LnxWrpFmDev->pcdActive) + { + const char *str_prop = (char *)of_get_property(fm_node, "fsl,default-pcd", &lenp); + if (str_prop) { + if (strncmp(str_prop, "3-tuple", strlen("3-tuple")) == 0) + p_LnxWrpFmDev->defPcd = e_FM_PCD_3_TUPLE; + } + else + p_LnxWrpFmDev->defPcd = e_NO_PCD; + } + + of_node_put(fm_node); + + for_each_matching_node(dpa_node, dpa_eth_node_of_match) { + struct device_node *mac_node; + const phandle *phandle_prop; + + phandle_prop = (typeof(phandle_prop))of_get_property(dpa_node, "fsl,fman-mac", &lenp); + if (phandle_prop == NULL) + continue; + + if (WARN_ON(lenp != sizeof(phandle))) + return NULL; + + mac_node = of_find_node_by_phandle(*phandle_prop); + if (unlikely(mac_node == NULL)) { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("of_find_node_by_phandle() failed")); + return NULL; + } + + fm_node = of_get_parent(mac_node); + of_node_put(mac_node); + if (unlikely(fm_node == NULL)) { + REPORT_ERROR(MAJOR, E_NO_DEVICE, ("of_get_parent() = %d", _errno)); + return NULL; + } + + uint32_prop = (uint32_t *)of_get_property(fm_node, "cell-index", &lenp); + if (unlikely(uint32_prop == NULL)) { + of_node_put(fm_node); + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("of_get_property(%s, cell-index) failed", fm_node->full_name)); + return NULL; + } + if (WARN_ON(lenp != sizeof(uint32_t))) + return NULL; + of_node_put(fm_node); + + if (*uint32_prop == p_LnxWrpFmDev->id) { + phandle_prop = (typeof(phandle_prop))of_get_property(dpa_node, "fsl,qman-channel", &lenp); + if (unlikely(phandle_prop == NULL)) { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("of_get_property(%s, fsl,qman-channel) failed", dpa_node->full_name)); + return NULL; + } + if (WARN_ON(lenp != sizeof(phandle))) + return NULL; + + dev_node = of_find_node_by_phandle(*phandle_prop); + if (unlikely(dev_node == NULL)) { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("of_find_node_by_phandle() failed")); + return NULL; + } + + uint32_prop = (typeof(uint32_prop))of_get_property(dev_node, "fsl,qman-channel-id", &lenp); + if (unlikely(uint32_prop == NULL)) { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("of_get_property(%s, fsl,qman-channel-id) failed", dev_node->full_name)); + of_node_put(dev_node); + return NULL; + } + of_node_put(dev_node); + if (WARN_ON(lenp != sizeof(uint32_t))) + return NULL; + p_LnxWrpFmDev->hcCh = *uint32_prop; + break; + } + } + + p_LnxWrpFmDev->active = TRUE; + + return p_LnxWrpFmDev; +} + +static void LnxwrpFmDevExceptionsCb(t_Handle h_App, e_FmExceptions exception) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = (t_LnxWrpFmDev *)h_App; + + ASSERT_COND(p_LnxWrpFmDev); + + DBG(INFO, ("got fm exception %d", exception)); + + /* do nothing */ + UNUSED(exception); +} + +static void LnxwrpFmDevBusErrorCb(t_Handle h_App, + e_FmPortType portType, + uint8_t portId, + uint64_t addr, + uint8_t tnum, + uint16_t liodn) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = (t_LnxWrpFmDev *)h_App; + + ASSERT_COND(p_LnxWrpFmDev); + + /* do nothing */ + UNUSED(portType);UNUSED(portId);UNUSED(addr);UNUSED(tnum);UNUSED(liodn); +} + +static t_Error ConfigureFmDev(t_LnxWrpFmDev *p_LnxWrpFmDev) +{ + struct resource *dev_res; + int _errno; + + if (!p_LnxWrpFmDev->active) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("FM not configured!!!")); + +#ifndef MODULE + _errno = can_request_irq(p_LnxWrpFmDev->irq, 0); + if (unlikely(_errno < 0)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("can_request_irq() = %d", _errno)); +#endif + _errno = devm_request_irq(p_LnxWrpFmDev->dev, p_LnxWrpFmDev->irq, fm_irq, 0, "fman", p_LnxWrpFmDev); + if (unlikely(_errno < 0)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("request_irq(%d) = %d", p_LnxWrpFmDev->irq, _errno)); + + if (p_LnxWrpFmDev->err_irq != 0) { +#ifndef MODULE + _errno = can_request_irq(p_LnxWrpFmDev->err_irq, 0); + if (unlikely(_errno < 0)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("can_request_irq() = %d", _errno)); +#endif + _errno = devm_request_irq(p_LnxWrpFmDev->dev, p_LnxWrpFmDev->err_irq, fm_err_irq, IRQF_SHARED, "fman-err", p_LnxWrpFmDev); + if (unlikely(_errno < 0)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("request_irq(%d) = %d", p_LnxWrpFmDev->err_irq, _errno)); + } + + p_LnxWrpFmDev->res = devm_request_mem_region(p_LnxWrpFmDev->dev, p_LnxWrpFmDev->fmPhysBaseAddr, p_LnxWrpFmDev->fmMemSize, "fman"); + if (unlikely(p_LnxWrpFmDev->res == NULL)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("request_mem_region() failed")); + + p_LnxWrpFmDev->fmBaseAddr = PTR_TO_UINT(devm_ioremap(p_LnxWrpFmDev->dev, p_LnxWrpFmDev->fmPhysBaseAddr, p_LnxWrpFmDev->fmMemSize)); + if (unlikely(p_LnxWrpFmDev->fmBaseAddr == 0)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("devm_ioremap() failed")); + + if (SYS_RegisterIoMap((uint64_t)p_LnxWrpFmDev->fmBaseAddr, (uint64_t)p_LnxWrpFmDev->fmPhysBaseAddr, p_LnxWrpFmDev->fmMemSize) != E_OK) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("FM memory map")); + + dev_res = __devm_request_region(p_LnxWrpFmDev->dev, p_LnxWrpFmDev->res, p_LnxWrpFmDev->fmMuramPhysBaseAddr, p_LnxWrpFmDev->fmMuramMemSize, "fman-muram"); + if (unlikely(dev_res == NULL)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("__devm_request_region() failed")); + + p_LnxWrpFmDev->fmMuramBaseAddr = PTR_TO_UINT(devm_ioremap(p_LnxWrpFmDev->dev, p_LnxWrpFmDev->fmMuramPhysBaseAddr, p_LnxWrpFmDev->fmMuramMemSize)); + if (unlikely(p_LnxWrpFmDev->fmMuramBaseAddr == 0)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("devm_ioremap() failed")); + + if (SYS_RegisterIoMap((uint64_t)p_LnxWrpFmDev->fmMuramBaseAddr, (uint64_t)p_LnxWrpFmDev->fmMuramPhysBaseAddr, p_LnxWrpFmDev->fmMuramMemSize) != E_OK) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("FM MURAM memory map")); + + if (p_LnxWrpFmDev->fmRtcPhysBaseAddr) + { + dev_res = __devm_request_region(p_LnxWrpFmDev->dev, p_LnxWrpFmDev->res, p_LnxWrpFmDev->fmRtcPhysBaseAddr, p_LnxWrpFmDev->fmRtcMemSize, "fman-rtc"); + if (unlikely(dev_res == NULL)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("__devm_request_region() failed")); + + p_LnxWrpFmDev->fmRtcBaseAddr = PTR_TO_UINT(devm_ioremap(p_LnxWrpFmDev->dev, p_LnxWrpFmDev->fmRtcPhysBaseAddr, p_LnxWrpFmDev->fmRtcMemSize)); + if (unlikely(p_LnxWrpFmDev->fmRtcBaseAddr == 0)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("devm_ioremap() failed")); + + if (SYS_RegisterIoMap((uint64_t)p_LnxWrpFmDev->fmRtcBaseAddr, (uint64_t)p_LnxWrpFmDev->fmRtcPhysBaseAddr, p_LnxWrpFmDev->fmRtcMemSize) != E_OK) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("FM-RTC memory map")); + } + + p_LnxWrpFmDev->fmDevSettings.param.baseAddr = p_LnxWrpFmDev->fmBaseAddr; + p_LnxWrpFmDev->fmDevSettings.param.fmId = p_LnxWrpFmDev->id; + p_LnxWrpFmDev->fmDevSettings.param.irq = NO_IRQ; + p_LnxWrpFmDev->fmDevSettings.param.errIrq = NO_IRQ; + p_LnxWrpFmDev->fmDevSettings.param.f_Exception = LnxwrpFmDevExceptionsCb; + p_LnxWrpFmDev->fmDevSettings.param.f_BusError = LnxwrpFmDevBusErrorCb; + p_LnxWrpFmDev->fmDevSettings.param.h_App = p_LnxWrpFmDev; + + return FillRestFmInfo(p_LnxWrpFmDev); +} + +static t_Error InitFmDev(t_LnxWrpFmDev *p_LnxWrpFmDev) +{ + const struct qe_firmware *fw; + + if (!p_LnxWrpFmDev->active) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("FM not configured!!!")); + + if ((p_LnxWrpFmDev->h_MuramDev = FM_MURAM_ConfigAndInit(p_LnxWrpFmDev->fmMuramBaseAddr, p_LnxWrpFmDev->fmMuramMemSize)) == NULL) + RETURN_ERROR(MAJOR, E_INVALID_HANDLE, ("FM-MURAM!")); + + /* Loading the fman-controller code */ + fw = FindFmanMicrocode(); + + if (!fw) { +#ifdef FMAN_READ_MICROCODE_FROM_NOR_FLASH + /* We already reported an error, so just return NULL*/ + return ERROR_CODE(E_NULL_POINTER); +#else + /* this forces the reuse of the current IRAM content */ + p_LnxWrpFmDev->fmDevSettings.param.firmware.size = 0; + p_LnxWrpFmDev->fmDevSettings.param.firmware.p_Code = NULL; +#endif + } else { + p_LnxWrpFmDev->fmDevSettings.param.firmware.p_Code = + (void *) fw + fw->microcode[0].code_offset; + p_LnxWrpFmDev->fmDevSettings.param.firmware.size = + sizeof(u32) * fw->microcode[0].count; + DBG(INFO, ("Loading fman-controller code version %d.%d.%d", + fw->microcode[0].major, + fw->microcode[0].minor, + fw->microcode[0].revision)); + } + + p_LnxWrpFmDev->fmDevSettings.param.h_FmMuram = p_LnxWrpFmDev->h_MuramDev; + + if ((p_LnxWrpFmDev->h_Dev = FM_Config(&p_LnxWrpFmDev->fmDevSettings.param)) == NULL) + RETURN_ERROR(MAJOR, E_INVALID_HANDLE, ("FM")); + + if (FM_ConfigMaxNumOfOpenDmas(p_LnxWrpFmDev->h_Dev,BMI_MAX_NUM_OF_DMAS) != E_OK) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("FM")); + + if (FM_ConfigResetOnInit(p_LnxWrpFmDev->h_Dev, TRUE) != E_OK) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("FM")); + +#ifdef CONFIG_FMAN_P1023 + if (FM_ConfigDmaAidOverride(p_LnxWrpFmDev->h_Dev, TRUE) != E_OK) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("FM")); +#endif + + /* Use the entire amount of TNUMS, maybe performance will improve... + for OPEN DMAs - are all by default = 32 and fifosize = MURAM*3/4 and + the rest of it is for PCD */ + FM_ConfigTotalNumOfTasks(p_LnxWrpFmDev->h_Dev, BMI_MAX_NUM_OF_TASKS); + +#if defined(CONFIG_FMAN_RESOURCE_ALLOCATION_ALGORITHM) && defined(CONFIG_FMAN_P3040_P4080_P5020) + /* Enable 14g w/ jumbo frames following HW suggestion. */ + FM_ConfigTotalFifoSize(p_LnxWrpFmDev->h_Dev, 128*KILOBYTE); +#endif + + if (FM_Init(p_LnxWrpFmDev->h_Dev) != E_OK) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("FM")); + + if (p_LnxWrpFmDev->err_irq == 0) { + FM_SetException(p_LnxWrpFmDev->h_Dev, e_FM_EX_DMA_BUS_ERROR,FALSE); + FM_SetException(p_LnxWrpFmDev->h_Dev,e_FM_EX_DMA_READ_ECC,FALSE); + FM_SetException(p_LnxWrpFmDev->h_Dev,e_FM_EX_DMA_SYSTEM_WRITE_ECC,FALSE); + FM_SetException(p_LnxWrpFmDev->h_Dev,e_FM_EX_DMA_FM_WRITE_ECC,FALSE); + FM_SetException(p_LnxWrpFmDev->h_Dev,e_FM_EX_FPM_STALL_ON_TASKS , FALSE); + FM_SetException(p_LnxWrpFmDev->h_Dev,e_FM_EX_FPM_DOUBLE_ECC,FALSE); + FM_SetException(p_LnxWrpFmDev->h_Dev,e_FM_EX_IRAM_ECC,FALSE); + /* TODO: FmDisableRamsEcc assert for ramsEccOwners. + * FM_SetException(p_LnxWrpFmDev->h_Dev,e_FM_EX_MURAM_ECC,FALSE);*/ + FM_SetException(p_LnxWrpFmDev->h_Dev,e_FM_EX_QMI_DOUBLE_ECC,FALSE); + FM_SetException(p_LnxWrpFmDev->h_Dev,e_FM_EX_QMI_DEQ_FROM_UNKNOWN_PORTID,FALSE); + FM_SetException(p_LnxWrpFmDev->h_Dev,e_FM_EX_BMI_LIST_RAM_ECC,FALSE); + FM_SetException(p_LnxWrpFmDev->h_Dev,e_FM_EX_BMI_PIPELINE_ECC,FALSE); + FM_SetException(p_LnxWrpFmDev->h_Dev,e_FM_EX_BMI_STATISTICS_RAM_ECC, FALSE); + FM_SetException(p_LnxWrpFmDev->h_Dev,e_FM_EX_FPM_SINGLE_ECC, FALSE); + FM_SetException(p_LnxWrpFmDev->h_Dev,e_FM_EX_QMI_SINGLE_ECC, FALSE); + } + + if (p_LnxWrpFmDev->fmRtcBaseAddr) + { + t_FmRtcParams fmRtcParam; + + memset(&fmRtcParam, 0, sizeof(fmRtcParam)); + fmRtcParam.h_App = p_LnxWrpFmDev; + fmRtcParam.h_Fm = p_LnxWrpFmDev->h_Dev; + fmRtcParam.baseAddress = p_LnxWrpFmDev->fmRtcBaseAddr; + + if(!(p_LnxWrpFmDev->h_RtcDev = FM_RTC_Config(&fmRtcParam))) + RETURN_ERROR(MAJOR, E_INVALID_HANDLE, ("FM-RTC")); + + if (FM_RTC_ConfigPeriod(p_LnxWrpFmDev->h_RtcDev, 10) != E_OK) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("FM-RTC")); + + if (FM_RTC_Init(p_LnxWrpFmDev->h_RtcDev) != E_OK) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("FM-RTC")); + } + + return E_OK; +} + +/* TODO: to be moved back here */ +extern void FreeFmPcdDev(t_LnxWrpFmDev *p_LnxWrpFmDev); + +static void FreeFmDev(t_LnxWrpFmDev *p_LnxWrpFmDev) +{ + if (!p_LnxWrpFmDev->active) + return; + + FreeFmPcdDev(p_LnxWrpFmDev); + + if (p_LnxWrpFmDev->h_RtcDev) + FM_RTC_Free(p_LnxWrpFmDev->h_RtcDev); + + if (p_LnxWrpFmDev->h_Dev) + FM_Free(p_LnxWrpFmDev->h_Dev); + + if (p_LnxWrpFmDev->h_MuramDev) + FM_MURAM_Free(p_LnxWrpFmDev->h_MuramDev); + + if (p_LnxWrpFmDev->fmRtcBaseAddr) + { + SYS_UnregisterIoMap(p_LnxWrpFmDev->fmRtcBaseAddr); + devm_iounmap(p_LnxWrpFmDev->dev, UINT_TO_PTR(p_LnxWrpFmDev->fmRtcBaseAddr)); + __devm_release_region(p_LnxWrpFmDev->dev, p_LnxWrpFmDev->res, p_LnxWrpFmDev->fmRtcPhysBaseAddr, p_LnxWrpFmDev->fmRtcMemSize); + } + SYS_UnregisterIoMap(p_LnxWrpFmDev->fmMuramBaseAddr); + devm_iounmap(p_LnxWrpFmDev->dev, UINT_TO_PTR(p_LnxWrpFmDev->fmMuramBaseAddr)); + __devm_release_region(p_LnxWrpFmDev->dev, p_LnxWrpFmDev->res, p_LnxWrpFmDev->fmMuramPhysBaseAddr, p_LnxWrpFmDev->fmMuramMemSize); + SYS_UnregisterIoMap(p_LnxWrpFmDev->fmBaseAddr); + devm_iounmap(p_LnxWrpFmDev->dev, UINT_TO_PTR(p_LnxWrpFmDev->fmBaseAddr)); + devm_release_mem_region(p_LnxWrpFmDev->dev, p_LnxWrpFmDev->fmPhysBaseAddr, p_LnxWrpFmDev->fmMemSize); + if (p_LnxWrpFmDev->err_irq != 0) { + devm_free_irq(p_LnxWrpFmDev->dev, p_LnxWrpFmDev->err_irq, p_LnxWrpFmDev); + } + + devm_free_irq(p_LnxWrpFmDev->dev, p_LnxWrpFmDev->irq, p_LnxWrpFmDev); +} + +/* FMan character device file operations */ +extern struct file_operations fm_fops; + +static int fm_probe(struct platform_device *of_dev) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev; + + if ((p_LnxWrpFmDev = ReadFmDevTreeNode(of_dev)) == NULL) + return -EIO; + if (ConfigureFmDev(p_LnxWrpFmDev) != E_OK) + return -EIO; + if (InitFmDev(p_LnxWrpFmDev) != E_OK) + return -EIO; + + Sprint (p_LnxWrpFmDev->name, "%s%d", DEV_FM_NAME, p_LnxWrpFmDev->id); + + /* Register to the /dev for IOCTL API */ + /* Register dynamically a new major number for the character device: */ + if ((p_LnxWrpFmDev->major = register_chrdev(0, p_LnxWrpFmDev->name, &fm_fops)) <= 0) { + REPORT_ERROR(MAJOR, E_INVALID_STATE, ("Failed to allocate a major number for device \"%s\"", p_LnxWrpFmDev->name)); + return -EIO; + } + + /* Creating classes for FM */ + DBG(TRACE ,("class_create fm_class")); + p_LnxWrpFmDev->fm_class = class_create(THIS_MODULE, p_LnxWrpFmDev->name); + if (IS_ERR(p_LnxWrpFmDev->fm_class)) { + unregister_chrdev(p_LnxWrpFmDev->major, p_LnxWrpFmDev->name); + REPORT_ERROR(MAJOR, E_INVALID_STATE, ("class_create error fm_class")); + return -EIO; + } + + device_create(p_LnxWrpFmDev->fm_class, NULL, MKDEV(p_LnxWrpFmDev->major, DEV_FM_MINOR_BASE), NULL, + "fm%d", p_LnxWrpFmDev->id); + device_create(p_LnxWrpFmDev->fm_class, NULL, MKDEV(p_LnxWrpFmDev->major, DEV_FM_PCD_MINOR_BASE), NULL, + "fm%d-pcd", p_LnxWrpFmDev->id); + dev_set_drvdata(p_LnxWrpFmDev->dev, p_LnxWrpFmDev); + + /* create sysfs entries for stats and regs */ + if ( fm_sysfs_create(p_LnxWrpFmDev->dev) !=0 ) + { + FreeFmDev(p_LnxWrpFmDev); + REPORT_ERROR(MAJOR, E_INVALID_STATE, ("Unable to create sysfs entry - fm!!!")); + return -EIO; + } + + DBG(TRACE, ("FM%d probed", p_LnxWrpFmDev->id)); + +#if defined(CONFIG_FMAN_RESOURCE_ALLOCATION_ALGORITHM) + /* Precalculate resources for FMAN based on number of + * FMan ports available + */ + if(fm_set_active_fman_ports(of_dev, p_LnxWrpFmDev)!= 0) + return -EIO; + +#if defined(CONFIG_FMAN_P3040_P4080_P5020) + /* 128K MURAM for p3,p4 and p5 */ + if(fm_precalculate_fifosizes( + p_LnxWrpFmDev, + 128*KILOBYTE) + != 0) + return -EIO; +#else + /* for all other platforms: MURAM Space for fifosize=3/4 * MURAM_SIZE*/ + if(fm_precalculate_fifosizes( + p_LnxWrpFmDev, + CEIL_DIV((3*FM_MURAM_SIZE-1),4)) + != 0) + return -EIO; +#endif + if(fm_precalculate_open_dma( + p_LnxWrpFmDev, + BMI_MAX_NUM_OF_DMAS, /* max open dmas:dpaa_integration_ext.h */ + FM_DEFAULT_TX10G_OPENDMA, /* default TX 10g open dmas */ + FM_DEFAULT_RX10G_OPENDMA, /* default RX 10g open dmas */ + FM_10G_OPENDMA_MIN_TRESHOLD,/* TX 10g minimum treshold */ + FM_10G_OPENDMA_MIN_TRESHOLD)/* RX 10g minimum treshold */ + != 0) + return -EIO; + if(fm_precalculate_tnums( + p_LnxWrpFmDev, + BMI_MAX_NUM_OF_TASKS) /* max TNUMS: dpa integration file. */ + != 0) + return -EIO; +#endif + + return 0; +} + +static int fm_remove(struct platform_device *of_dev) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev; + struct device *dev; + + dev = &of_dev->dev; + p_LnxWrpFmDev = dev_get_drvdata(dev); + + fm_sysfs_destroy(dev); + + DBG(TRACE, ("destroy fm_class")); + device_destroy(p_LnxWrpFmDev->fm_class, MKDEV(p_LnxWrpFmDev->major, DEV_FM_MINOR_BASE)); + device_destroy(p_LnxWrpFmDev->fm_class, MKDEV(p_LnxWrpFmDev->major, DEV_FM_PCD_MINOR_BASE)); + class_destroy(p_LnxWrpFmDev->fm_class); + + /* Destroy chardev */ + unregister_chrdev(p_LnxWrpFmDev->major, p_LnxWrpFmDev->name); + + FreeFmDev(p_LnxWrpFmDev); + + DestroyFmDev(p_LnxWrpFmDev); + + dev_set_drvdata(dev, NULL); + + return 0; +} + +static const struct of_device_id fm_match[] = { + { + .compatible = "fsl,fman" + }, + {} +}; +#ifndef MODULE +MODULE_DEVICE_TABLE(of, fm_match); +#endif /* !MODULE */ + +static struct platform_driver fm_driver = { + .driver = { + .name = "fsl-fman", + .of_match_table = fm_match, + .owner = THIS_MODULE, + }, + .probe = fm_probe, + .remove = fm_remove, +}; + +t_Handle LNXWRP_FM_Init(void) +{ + memset(&lnxWrpFm, 0, sizeof(lnxWrpFm)); + mutex_init(&lnxwrp_mutex); + + /* Register to the DTB for basic FM API */ + platform_driver_register(&fm_driver); + + return &lnxWrpFm; +} + +t_Error LNXWRP_FM_Free(t_Handle h_LnxWrpFm) +{ + platform_driver_unregister(&fm_driver); + mutex_destroy(&lnxwrp_mutex); + + return E_OK; +} + + +struct fm * fm_bind(struct device *fm_dev) +{ + return (struct fm *)(dev_get_drvdata(get_device(fm_dev))); +} +EXPORT_SYMBOL(fm_bind); + +void fm_unbind(struct fm *fm) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = (t_LnxWrpFmDev*)fm; + + put_device(p_LnxWrpFmDev->dev); +} +EXPORT_SYMBOL(fm_unbind); + +struct resource * fm_get_mem_region(struct fm *fm) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = (t_LnxWrpFmDev*)fm; + + return p_LnxWrpFmDev->res; +} +EXPORT_SYMBOL(fm_get_mem_region); + +void * fm_get_handle(struct fm *fm) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = (t_LnxWrpFmDev*)fm; + + return (void *)p_LnxWrpFmDev->h_Dev; +} +EXPORT_SYMBOL(fm_get_handle); + +void * fm_get_rtc_handle(struct fm *fm) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = (t_LnxWrpFmDev*)fm; + + return (void *)p_LnxWrpFmDev->h_RtcDev; +} +EXPORT_SYMBOL(fm_get_rtc_handle); + +struct fm_port * fm_port_bind (struct device *fm_port_dev) +{ + return (struct fm_port *)(dev_get_drvdata(get_device(fm_port_dev))); +} +EXPORT_SYMBOL(fm_port_bind); + +void fm_port_unbind(struct fm_port *port) +{ + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev = (t_LnxWrpFmPortDev*)port; + + put_device(p_LnxWrpFmPortDev->dev); +} +EXPORT_SYMBOL(fm_port_unbind); + +void * fm_port_get_handle(struct fm_port *port) +{ + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev = (t_LnxWrpFmPortDev*)port; + + return (void *)p_LnxWrpFmPortDev->h_Dev; +} +EXPORT_SYMBOL(fm_port_get_handle); + +void fm_port_get_base_addr(const struct fm_port *port, uint64_t *base_addr) +{ + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev = (t_LnxWrpFmPortDev *)port; + + *base_addr = p_LnxWrpFmPortDev->settings.param.baseAddr; +} +EXPORT_SYMBOL(fm_port_get_base_addr); + +void fm_port_pcd_bind (struct fm_port *port, struct fm_port_pcd_param *params) +{ + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev = (t_LnxWrpFmPortDev*)port; + + p_LnxWrpFmPortDev->pcd_owner_params.cba = params->cba; + p_LnxWrpFmPortDev->pcd_owner_params.cbf = params->cbf; + p_LnxWrpFmPortDev->pcd_owner_params.dev = params->dev; +} +EXPORT_SYMBOL(fm_port_pcd_bind); + +int fm_get_tx_port_channel(struct fm_port *port) +{ + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev = (t_LnxWrpFmPortDev*)port; + + return p_LnxWrpFmPortDev->txCh; +} +EXPORT_SYMBOL(fm_get_tx_port_channel); + +int fm_port_enable (struct fm_port *port) +{ + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev = (t_LnxWrpFmPortDev*)port; + + FM_PORT_Enable(p_LnxWrpFmPortDev->h_Dev); + + return 0; +} +EXPORT_SYMBOL(fm_port_enable); + +void fm_port_disable(struct fm_port *port) +{ + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev = (t_LnxWrpFmPortDev*)port; + + FM_PORT_Disable(p_LnxWrpFmPortDev->h_Dev); +} +EXPORT_SYMBOL(fm_port_disable); + +void fm_mutex_lock(void) +{ + mutex_lock(&lnxwrp_mutex); +} +EXPORT_SYMBOL(fm_mutex_lock); + +void fm_mutex_unlock(void) +{ + mutex_unlock(&lnxwrp_mutex); +} +EXPORT_SYMBOL(fm_mutex_unlock); + +static t_Handle h_FmLnxWrp; + +static int __init __cold fm_load (void) +{ + if ((h_FmLnxWrp = LNXWRP_FM_Init()) == NULL) + { + printk("Failed to init FM wrapper!\n"); + return -ENODEV; + } + + printk (KERN_INFO "Freescale FM module ("__DATE__ ":"__TIME__")\n"); + + return 0; +} + +static void __exit __cold fm_unload (void) +{ + if (h_FmLnxWrp) + LNXWRP_FM_Free(h_FmLnxWrp); +} + +module_init (fm_load); +module_exit (fm_unload); --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_fm.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_fm.h @@ -0,0 +1,257 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 lnxwrp_fm.h + + @Author Shlomi Gridish + + @Description FM Linux wrapper functions. + +*/ + +#ifndef __LNXWRP_FM_H__ +#define __LNXWRP_FM_H__ + +#include /* struct qman_fq */ + +#include "std_ext.h" +#include "error_ext.h" +#include "list_ext.h" + +#include "lnxwrp_fm_ext.h" + +#define __ERR_MODULE__ MODULE_FM + +#define FM_MAX_NUM_OF_ADV_SETTINGS 10 + +#define LNXWRP_FM_NUM_OF_SHARED_PROFILES 16 + +#if defined(CONFIG_FMAN_DISABLE_OH_TO_REUSE_RESOURCES) +#define FM_10G_OPENDMA_MIN_TRESHOLD 8 /* 10g minimum treshold if only HC is enabled and no OH port enabled */ +#define FM_OPENDMA_RX_TX_RAPORT 2 /* RX = 2*TX */ +#else +#define FM_10G_OPENDMA_MIN_TRESHOLD 7 /* 10g minimum treshold if 7 OH ports are enabled */ +#define FM_OPENDMA_RX_TX_RAPORT 1 /* RX = TX */ +#endif +#define FM_DEFAULT_TX10G_OPENDMA 8 /* default TX 10g open dmas */ +#define FM_DEFAULT_RX10G_OPENDMA 8 /* default RX 10g open dmas */ + +typedef enum { + e_NO_PCD = 0, + e_FM_PCD_3_TUPLE +} e_LnxWrpFmPortPcdDefUseCase; + + +typedef struct t_FmTestFq { + struct qman_fq fq_base; + t_Handle h_Arg; +} t_FmTestFq; + +typedef struct { + uint8_t id; /* sw port id, see SW_PORT_ID_TO_HW_PORT_ID() in fm_common.h */ + int minor; + char name[20]; + bool active; + uint64_t phys_baseAddr; + uint64_t baseAddr; /* Port's *virtual* address */ + uint32_t memSize; + t_WrpFmPortDevSettings settings; + uint8_t totalNumOfSchemes; + uint8_t schemesBase; + uint8_t numOfSchemesUsed; + uint32_t pcdBaseQ; + uint16_t pcdNumOfQs; + struct fm_port_pcd_param pcd_owner_params; + e_LnxWrpFmPortPcdDefUseCase defPcd; + t_Handle h_DefNetEnv; + t_Handle h_Schemes[FM_PCD_KG_NUM_OF_SCHEMES]; + t_FmPortBufferPrefixContent buffPrefixContent; + t_Handle h_Dev; + t_Handle h_LnxWrpFmDev; + uint16_t txCh; + struct device *dev; + struct device_attribute *dev_attr_stats; + struct device_attribute *dev_attr_regs; +} t_LnxWrpFmPortDev; + +typedef struct { + uint8_t id; + bool active; + uint64_t baseAddr; + uint32_t memSize; + t_WrpFmMacDevSettings settings; + t_Handle h_Dev; + t_Handle h_LnxWrpFmDev; +} t_LnxWrpFmMacDev; + +/* information about all active ports for an FMan. + * !Some ports may be disabled by u-boot, thus will not be available */ +struct fm_active_ports { + uint32_t num_oh_ports; + uint32_t num_tx_ports; + uint32_t num_rx_ports; + uint32_t num_tx25_ports; + uint32_t num_rx25_ports; + uint32_t num_tx10_ports; + uint32_t num_rx10_ports; +}; + +/* FMan resources precalculated at fm probe based + * on available FMan port. */ +struct fm_resource_settings { + /* buffers - fifo sizes */ + uint32_t tx1g_num_buffers; + uint32_t rx1g_num_buffers; + uint32_t tx2g5_num_buffers; /* Not supported yet by LLD */ + uint32_t rx2g5_num_buffers; /* Not supported yet by LLD */ + uint32_t tx10g_num_buffers; + uint32_t rx10g_num_buffers; + uint32_t oh_num_buffers; + uint32_t shared_ext_buffers; + + /* open DMAs */ + uint32_t tx_1g_dmas; + uint32_t rx_1g_dmas; + uint32_t tx_2g5_dmas; /* Not supported yet by LLD */ + uint32_t rx_2g5_dmas; /* Not supported yet by LLD */ + uint32_t tx_10g_dmas; + uint32_t rx_10g_dmas; + uint32_t oh_dmas; + uint32_t shared_ext_open_dma; + + /* Tnums */ + uint32_t tx_1g_tnums; + uint32_t rx_1g_tnums; + uint32_t tx_2g5_tnums; /* Not supported yet by LLD */ + uint32_t rx_2g5_tnums; /* Not supported yet by LLD */ + uint32_t tx_10g_tnums; + uint32_t rx_10g_tnums; + uint32_t oh_tnums; + uint32_t shared_ext_tnums; +}; + +typedef struct { + uint8_t id; + char name[10]; + bool active; + bool pcdActive; + bool prsActive; + bool kgActive; + bool ccActive; + bool plcrActive; + e_LnxWrpFmPortPcdDefUseCase defPcd; + uint32_t usedSchemes; + uint8_t totalNumOfSharedSchemes; + uint8_t sharedSchemesBase; + uint8_t numOfSchemesUsed; + uint8_t defNetEnvId; + uint64_t fmPhysBaseAddr; + uint64_t fmBaseAddr; + uint32_t fmMemSize; + uint64_t fmMuramPhysBaseAddr; + uint64_t fmMuramBaseAddr; + uint32_t fmMuramMemSize; + uint64_t fmRtcPhysBaseAddr; + uint64_t fmRtcBaseAddr; + uint32_t fmRtcMemSize; + int irq; + int err_irq; + t_WrpFmDevSettings fmDevSettings; + t_WrpFmPcdDevSettings fmPcdDevSettings; + t_Handle h_Dev; + uint16_t hcCh; + + t_Handle h_MuramDev; + t_Handle h_PcdDev; + t_Handle h_RtcDev; + + t_LnxWrpFmPortDev hcPort; + t_LnxWrpFmPortDev opPorts[FM_MAX_NUM_OF_OH_PORTS-1]; + t_LnxWrpFmPortDev rxPorts[FM_MAX_NUM_OF_RX_PORTS]; + t_LnxWrpFmPortDev txPorts[FM_MAX_NUM_OF_TX_PORTS]; + t_LnxWrpFmMacDev macs[FM_MAX_NUM_OF_MACS]; + struct fm_active_ports fm_active_ports_info; + struct fm_resource_settings fm_resource_settings_info; + + struct device *dev; + struct resource *res; + int major; + struct class *fm_class; + struct device_attribute *dev_attr_stats; + struct device_attribute *dev_attr_regs; + + struct device_attribute *dev_pcd_attr_stats; + struct device_attribute *dev_pcd_attr_regs; + + struct qman_fq *hc_tx_conf_fq, *hc_tx_err_fq, *hc_tx_fq; +} t_LnxWrpFmDev; + +typedef struct { + t_LnxWrpFmDev *p_FmDevs[INTG_MAX_NUM_OF_FM]; +} t_LnxWrpFm; +#define LNXWRP_FM_OBJECT(ptr) LIST_OBJECT(ptr, t_LnxWrpFm, fms[((t_LnxWrpFmDev *)ptr)->id]) + + +t_Error LnxwrpFmIOCTL(t_LnxWrpFmDev *p_LnxWrpFmDev, unsigned int cmd, unsigned long arg, bool compat); +t_Error LnxwrpFmPortIOCTL(t_LnxWrpFmPortDev *p_LnxWrpFmPortDev, unsigned int cmd, unsigned long arg, bool compat); + + +static __inline__ t_Error AllocSchemesForPort(t_LnxWrpFmDev *p_LnxWrpFmDev, uint8_t numSchemes, uint8_t *p_BaseSchemeNum) +{ + uint32_t schemeMask; + uint8_t i; + + if (!numSchemes) + RETURN_ERROR(MINOR, E_INVALID_VALUE, NO_MSG); + + schemeMask = 0x80000000; + *p_BaseSchemeNum = 0xff; + + for (i=0; schemeMask && numSchemes; schemeMask>>=1, i++) + if ((p_LnxWrpFmDev->usedSchemes & schemeMask) == 0) + { + p_LnxWrpFmDev->usedSchemes |= schemeMask; + numSchemes--; + if (*p_BaseSchemeNum==0xff) + *p_BaseSchemeNum = i; + } + else if (*p_BaseSchemeNum!=0xff) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Fragmentation on schemes array!!!")); + + if (numSchemes) + RETURN_ERROR(MINOR, E_FULL, ("schemes!!!")); + return E_OK; +} + + +#endif /* __LNXWRP_FM_H__ */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_fm_port.c +++ linux-3.13.0/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_fm_port.c @@ -0,0 +1,1183 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 lnxwrp_fm_port.c + + @Description FMD wrapper - FMan port functions. + +*/ + +#include +#if defined(CONFIG_MODVERSIONS) && !defined(MODVERSIONS) +#define MODVERSIONS +#endif +#ifdef MODVERSIONS +#include +#endif /* MODVERSIONS */ +#include +#include +#include +#include +#include +#include +#include + +#include "sprint_ext.h" +#include "fm_port_ext.h" +#include "fm_ioctls.h" +#include "lnxwrp_resources.h" +#include "lnxwrp_sysfs_fm_port.h" + +/* TODO: duplicated, see lnxwrp_fm.c */ +#define ADD_ADV_CONFIG_NO_RET(_func, _param)\ +do {\ + if (i < max) {\ + p_Entry = &p_Entrys[i];\ + p_Entry->p_Function = _func;\ + _param\ + i++;\ + } else {\ + REPORT_ERROR(MAJOR, E_INVALID_VALUE,\ + ("Number of advanced-configuration entries exceeded"));\ + } \ +} while (0) + + +static volatile int hcFrmRcv/* = 0 */; +static spinlock_t lock; + +static enum qman_cb_dqrr_result qm_tx_conf_dqrr_cb(struct qman_portal *portal, + struct qman_fq *fq, + const struct qm_dqrr_entry + *dq) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = ((t_FmTestFq *) fq)->h_Arg; + unsigned long flags; + + FM_PCD_HcTxConf(p_LnxWrpFmDev->h_PcdDev, (t_DpaaFD *)&dq->fd); + spin_lock_irqsave(&lock, flags); + hcFrmRcv--; + spin_unlock_irqrestore(&lock, flags); + + return qman_cb_dqrr_consume; +} + +static enum qman_cb_dqrr_result qm_tx_dqrr_cb(struct qman_portal *portal, + struct qman_fq *fq, + const struct qm_dqrr_entry *dq) +{ + WARN(1, "FMD: failure at %s:%d/%s()!\n", __FILE__, __LINE__, + __func__); + return qman_cb_dqrr_consume; +} + +static void qm_err_cb(struct qman_portal *portal, + struct qman_fq *fq, const struct qm_mr_entry *msg) +{ + WARN(1, "FMD: failure at %s:%d/%s()!\n", __FILE__, __LINE__, + __func__); +} + +static struct qman_fq *FqAlloc(t_LnxWrpFmDev * p_LnxWrpFmDev, + uint32_t fqid, + uint32_t flags, uint16_t channel, uint8_t wq) +{ + int _errno; + struct qman_fq *fq = NULL; + t_FmTestFq *p_FmtFq; + struct qm_mcc_initfq initfq; + + p_FmtFq = (t_FmTestFq *) XX_Malloc(sizeof(t_FmTestFq)); + if (!p_FmtFq) { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FQ obj!!!")); + return NULL; + } + + p_FmtFq->fq_base.cb.dqrr = + (QMAN_FQ_FLAG_NO_ENQUEUE ? qm_tx_conf_dqrr_cb : + qm_tx_dqrr_cb); + p_FmtFq->fq_base.cb.ern = qm_err_cb; + p_FmtFq->fq_base.cb.dc_ern = qm_err_cb; + /* p_FmtFq->fq_base.cb.fqs = qm_err_cb; */ + /* qm_err_cb wrongly called when the FQ is parked */ + p_FmtFq->fq_base.cb.fqs = NULL; + p_FmtFq->h_Arg = (t_Handle) p_LnxWrpFmDev; + if (fqid == 0) { + flags |= QMAN_FQ_FLAG_DYNAMIC_FQID; + flags &= ~QMAN_FQ_FLAG_NO_MODIFY; + } else { + flags &= ~QMAN_FQ_FLAG_DYNAMIC_FQID; + } + + if (qman_create_fq(fqid, flags, &p_FmtFq->fq_base)) { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FQ obj - qman_new_fq!!!")); + XX_Free(p_FmtFq); + return NULL; + } + fq = &p_FmtFq->fq_base; + + if (!(flags & QMAN_FQ_FLAG_NO_MODIFY)) { + initfq.we_mask = QM_INITFQ_WE_DESTWQ; + initfq.fqd.dest.channel = channel; + initfq.fqd.dest.wq = wq; + + _errno = qman_init_fq(fq, QMAN_INITFQ_FLAG_SCHED, &initfq); + if (unlikely(_errno < 0)) { + REPORT_ERROR(MAJOR, E_NO_MEMORY, + ("FQ obj - qman_init_fq!!!")); + qman_destroy_fq(fq, 0); + XX_Free(p_FmtFq); + return NULL; + } + } + + DBG(TRACE, + ("fqid %d, flags 0x%08x, channel %d, wq %d", qman_fq_fqid(fq), + flags, channel, wq)); + + return fq; +} + +static void FqFree(struct qman_fq *fq) +{ + int _errno; + + _errno = qman_retire_fq(fq, NULL); + if (unlikely(_errno < 0)) + printk(KERN_WARNING "qman_retire_fq(%u) = %d\n", qman_fq_fqid(fq), _errno); + + _errno = qman_oos_fq(fq); + if (unlikely(_errno < 0)) + printk(KERN_WARNING "qman_oos_fq(%u) = %d\n", qman_fq_fqid(fq), _errno); + + qman_destroy_fq(fq, 0); + XX_Free((t_FmTestFq *) fq); +} + +static t_Error QmEnqueueCB(t_Handle h_Arg, void *p_Fd) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = (t_LnxWrpFmDev *) h_Arg; + int _errno, timeout = 1000000; + unsigned long flags; + + ASSERT_COND(p_LnxWrpFmDev); + + spin_lock_irqsave(&lock, flags); + hcFrmRcv++; + spin_unlock_irqrestore(&lock, flags); + + _errno = qman_enqueue(p_LnxWrpFmDev->hc_tx_fq, (struct qm_fd *) p_Fd, + 0); + if (_errno) + RETURN_ERROR(MINOR, E_INVALID_STATE, + ("qman_enqueue() failed")); + + while (hcFrmRcv && --timeout) { + udelay(1); + cpu_relax(); + } + if (timeout == 0) { + dump_stack(); + RETURN_ERROR(MINOR, E_WRITE_FAILED, + ("timeout waiting for Tx confirmation")); + return E_WRITE_FAILED; + } + + return E_OK; +} + +static t_LnxWrpFmPortDev *ReadFmPortDevTreeNode(struct platform_device + *of_dev) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev; + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev; + struct device_node *fm_node, *port_node; + struct resource res; + const uint32_t *uint32_prop; + int _errno = 0, lenp; +#ifdef CONFIG_FMAN_P1023 + static unsigned char have_oh_port/* = 0 */; +#endif + + port_node = of_node_get(of_dev->dev.of_node); + + /* Get the FM node */ + fm_node = of_get_parent(port_node); + if (unlikely(fm_node == NULL)) { + REPORT_ERROR(MAJOR, E_NO_DEVICE, + ("of_get_parent() = %d", _errno)); + return NULL; + } + + p_LnxWrpFmDev = + dev_get_drvdata(&of_find_device_by_node(fm_node)->dev); + of_node_put(fm_node); + + /* if fm_probe() failed, no point in going further with port probing */ + if (p_LnxWrpFmDev == NULL) + return NULL; + + uint32_prop = + (uint32_t *) of_get_property(port_node, "cell-index", &lenp); + if (unlikely(uint32_prop == NULL)) { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, + ("of_get_property(%s, cell-index) failed", + port_node->full_name)); + return NULL; + } + if (WARN_ON(lenp != sizeof(uint32_t))) + return NULL; + if (of_device_is_compatible(port_node, "fsl,fman-port-oh")) { + if (unlikely(*uint32_prop >= FM_MAX_NUM_OF_OH_PORTS)) { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, + ("of_get_property(%s, cell-index) failed", + port_node->full_name)); + return NULL; + } + +#ifdef CONFIG_FMAN_P1023 + /* Beware, this can be done when there is only + one FMan to be initialized */ + if (!have_oh_port) { + have_oh_port = 1; /* first OP/HC port + is used for host command */ +#else + /* Here it is hardcoded the use of the OH port 1 + (with cell-index 0) */ + if (*uint32_prop == 0) { +#endif + p_LnxWrpFmPortDev = &p_LnxWrpFmDev->hcPort; + p_LnxWrpFmPortDev->id = 0; + /* + p_LnxWrpFmPortDev->id = *uint32_prop-1; + p_LnxWrpFmPortDev->id = *uint32_prop; + */ + p_LnxWrpFmPortDev->settings.param.portType = + e_FM_PORT_TYPE_OH_HOST_COMMAND; + } else { + p_LnxWrpFmPortDev = + &p_LnxWrpFmDev->opPorts[*uint32_prop - 1]; + p_LnxWrpFmPortDev->id = *uint32_prop - 1; + p_LnxWrpFmPortDev->settings.param.portType = + e_FM_PORT_TYPE_OH_OFFLINE_PARSING; + } + p_LnxWrpFmPortDev->settings.param.portId = *uint32_prop; + + uint32_prop = + (uint32_t *) of_get_property(port_node, + "fsl,qman-channel-id", + &lenp); + if (uint32_prop == NULL) { + /* + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("missing fsl,qman-channel-id")); + */ + XX_Print("FM warning: missing fsl,qman-channel-id" + " for OH port.\n"); + return NULL; + } + if (WARN_ON(lenp != sizeof(uint32_t))) + return NULL; + p_LnxWrpFmPortDev->txCh = *uint32_prop; + + p_LnxWrpFmPortDev->settings.param.specificParams.nonRxParams. + qmChannel = p_LnxWrpFmPortDev->txCh; + } else if (of_device_is_compatible(port_node, "fsl,fman-port-1g-tx") || + of_device_is_compatible(port_node, "fsl,fman-port-10g-tx")) { + if (unlikely(*uint32_prop >= FM_MAX_NUM_OF_TX_PORTS)) { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, + ("of_get_property(%s, cell-index) failed", + port_node->full_name)); + return NULL; + } + if (of_device_is_compatible + (port_node, "fsl,fman-port-10g-tx")) + p_LnxWrpFmPortDev = + &p_LnxWrpFmDev->txPorts[*uint32_prop + + FM_MAX_NUM_OF_1G_TX_PORTS]; + else + p_LnxWrpFmPortDev = + &p_LnxWrpFmDev->txPorts[*uint32_prop]; + + p_LnxWrpFmPortDev->id = *uint32_prop; + p_LnxWrpFmPortDev->settings.param.portId = + p_LnxWrpFmPortDev->id; + if (of_device_is_compatible + (port_node, "fsl,fman-port-10g-tx")) + p_LnxWrpFmPortDev->settings.param.portType = + e_FM_PORT_TYPE_TX_10G; + else + p_LnxWrpFmPortDev->settings.param.portType = + e_FM_PORT_TYPE_TX; + + uint32_prop = + (uint32_t *) of_get_property(port_node, + "fsl,qman-channel-id", + &lenp); + if (uint32_prop == NULL) { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, + ("missing fsl,qman-channel-id")); + return NULL; + } + if (WARN_ON(lenp != sizeof(uint32_t))) + return NULL; + p_LnxWrpFmPortDev->txCh = *uint32_prop; + p_LnxWrpFmPortDev->settings.param.specificParams.nonRxParams. + qmChannel = p_LnxWrpFmPortDev->txCh; + } else if (of_device_is_compatible(port_node, "fsl,fman-port-1g-rx") || + of_device_is_compatible(port_node, "fsl,fman-port-10g-rx")) { + if (unlikely(*uint32_prop >= FM_MAX_NUM_OF_RX_PORTS)) { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, + ("of_get_property(%s, cell-index) failed", + port_node->full_name)); + return NULL; + } + if (of_device_is_compatible + (port_node, "fsl,fman-port-10g-rx")) + p_LnxWrpFmPortDev = + &p_LnxWrpFmDev->rxPorts[*uint32_prop + + FM_MAX_NUM_OF_1G_RX_PORTS]; + else + p_LnxWrpFmPortDev = + &p_LnxWrpFmDev->rxPorts[*uint32_prop]; + + p_LnxWrpFmPortDev->id = *uint32_prop; + p_LnxWrpFmPortDev->settings.param.portId = + p_LnxWrpFmPortDev->id; + if (of_device_is_compatible + (port_node, "fsl,fman-port-10g-rx")) + p_LnxWrpFmPortDev->settings.param.portType = + e_FM_PORT_TYPE_RX_10G; + else + p_LnxWrpFmPortDev->settings.param.portType = + e_FM_PORT_TYPE_RX; + + if (p_LnxWrpFmDev->pcdActive) + p_LnxWrpFmPortDev->defPcd = p_LnxWrpFmDev->defPcd; + } else { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal port type")); + return NULL; + } + + _errno = of_address_to_resource(port_node, 0, &res); + if (unlikely(_errno < 0)) { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, + ("of_address_to_resource() = %d", _errno)); + return NULL; + } + + p_LnxWrpFmPortDev->dev = &of_dev->dev; + p_LnxWrpFmPortDev->baseAddr = 0; + p_LnxWrpFmPortDev->phys_baseAddr = res.start; + p_LnxWrpFmPortDev->memSize = res.end + 1 - res.start; + p_LnxWrpFmPortDev->settings.param.h_Fm = p_LnxWrpFmDev->h_Dev; + p_LnxWrpFmPortDev->h_LnxWrpFmDev = (t_Handle) p_LnxWrpFmDev; + + of_node_put(port_node); + + p_LnxWrpFmPortDev->active = TRUE; + +#if defined(CONFIG_FMAN_DISABLE_OH_TO_REUSE_RESOURCES) + /* for performance mode no OH port available. */ + if (p_LnxWrpFmPortDev->settings.param.portType == + e_FM_PORT_TYPE_OH_OFFLINE_PARSING) + p_LnxWrpFmPortDev->active = FALSE; +#endif + + return p_LnxWrpFmPortDev; +} + +static t_Error ConfigureFmPortDev(t_LnxWrpFmPortDev *p_LnxWrpFmPortDev) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = + (t_LnxWrpFmDev *) p_LnxWrpFmPortDev->h_LnxWrpFmDev; + struct resource *dev_res; + + if (!p_LnxWrpFmPortDev->active) + RETURN_ERROR(MAJOR, E_INVALID_STATE, + ("FM port not configured!!!")); + + dev_res = + __devm_request_region(p_LnxWrpFmDev->dev, p_LnxWrpFmDev->res, + p_LnxWrpFmPortDev->phys_baseAddr, + p_LnxWrpFmPortDev->memSize, + "fman-port-hc"); + if (unlikely(dev_res == NULL)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, + ("__devm_request_region() failed")); + p_LnxWrpFmPortDev->baseAddr = + PTR_TO_UINT(devm_ioremap + (p_LnxWrpFmDev->dev, + p_LnxWrpFmPortDev->phys_baseAddr, + p_LnxWrpFmPortDev->memSize)); + if (unlikely(p_LnxWrpFmPortDev->baseAddr == 0)) + REPORT_ERROR(MAJOR, E_INVALID_STATE, + ("devm_ioremap() failed")); + + p_LnxWrpFmPortDev->settings.param.baseAddr = + p_LnxWrpFmPortDev->baseAddr; + + return E_OK; +} + +static t_Error InitFmPort3TupleDefPcd(t_LnxWrpFmPortDev *p_LnxWrpFmPortDev) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = + (t_LnxWrpFmDev *) p_LnxWrpFmPortDev->h_LnxWrpFmDev; + t_FmPcdNetEnvParams *p_netEnvParam = NULL; + t_FmPcdKgSchemeParams *p_schemeParam = NULL; + t_FmPortPcdParams pcdParam; + t_FmPortPcdPrsParams prsParam; + t_FmPortPcdKgParams kgParam; + uint8_t i, j; + + if (!p_LnxWrpFmDev->kgActive) + RETURN_ERROR(MAJOR, E_INVALID_STATE, + ("keygen must be enabled for 3-tuple PCD!")); + + if (!p_LnxWrpFmDev->prsActive) + RETURN_ERROR(MAJOR, E_INVALID_STATE, + ("parser must be enabled for 3-tuple PCD!")); + + if (p_LnxWrpFmPortDev->pcdNumOfQs < 9) + RETURN_ERROR(MINOR, E_INVALID_VALUE, + ("Need to save at least 18 queues for" + "3-tuple PCD!!!")); + + p_LnxWrpFmPortDev->totalNumOfSchemes = + p_LnxWrpFmPortDev->numOfSchemesUsed = 2; + + if (AllocSchemesForPort + (p_LnxWrpFmDev, p_LnxWrpFmPortDev->totalNumOfSchemes, + &p_LnxWrpFmPortDev->schemesBase) != E_OK) + RETURN_ERROR(MAJOR, E_INVALID_STATE, + ("No schemes for Rx or OP port for" + " 3-tuple PCD!!!")); + + p_netEnvParam = kzalloc(sizeof(*p_netEnvParam), GFP_KERNEL); + if (!p_netEnvParam) { + RETURN_ERROR(MAJOR, E_NO_MEMORY, + ("Failed to allocate p_netEnvParam")); + } + /* set netEnv */ + p_netEnvParam->numOfDistinctionUnits = 2; + p_netEnvParam->units[0].hdrs[0].hdr = + HEADER_TYPE_IPv4; /* no special options */ + p_netEnvParam->units[1].hdrs[0].hdr = HEADER_TYPE_ETH; + p_LnxWrpFmPortDev->h_DefNetEnv = + FM_PCD_SetNetEnvCharacteristics(p_LnxWrpFmDev->h_PcdDev, + p_netEnvParam); + kfree(p_netEnvParam); + if (!p_LnxWrpFmPortDev->h_DefNetEnv) + RETURN_ERROR(MAJOR, E_INVALID_HANDLE, ("FM PCD!")); + + p_schemeParam = kmalloc(sizeof(*p_schemeParam), GFP_KERNEL); + if (!p_schemeParam) { + RETURN_ERROR(MAJOR, E_NO_MEMORY, + ("Failed to allocate p_schemeParam")); + } + for (i = 0; i < p_LnxWrpFmPortDev->numOfSchemesUsed; i++) { + memset(p_schemeParam, 0, sizeof(*p_schemeParam)); + p_schemeParam->modify = FALSE; + p_schemeParam->id.relativeSchemeId = + i + p_LnxWrpFmPortDev->schemesBase; + p_schemeParam->alwaysDirect = FALSE; + p_schemeParam->netEnvParams.h_NetEnv = + p_LnxWrpFmPortDev->h_DefNetEnv; + p_schemeParam->schemeCounter.update = TRUE; + p_schemeParam->schemeCounter.value = 0; + + switch (i) { + case (0): /* catch IPv4 */ + p_schemeParam->netEnvParams.numOfDistinctionUnits = 1; + p_schemeParam->netEnvParams.unitIds[0] = 0; + p_schemeParam->baseFqid = p_LnxWrpFmPortDev->pcdBaseQ; + p_schemeParam->nextEngine = e_FM_PCD_DONE; + p_schemeParam->numOfUsedExtractedOrs = 0; + p_schemeParam->useHash = TRUE; + p_schemeParam->keyExtractAndHashParams. + numOfUsedExtracts = 3; + for (j = 0; + j < + p_schemeParam->keyExtractAndHashParams. + numOfUsedExtracts; j++) { + p_schemeParam->keyExtractAndHashParams. + extractArray[j].type = + e_FM_PCD_EXTRACT_BY_HDR; + p_schemeParam->keyExtractAndHashParams. + extractArray[j].extractByHdr.hdr = + HEADER_TYPE_IPv4; + p_schemeParam->keyExtractAndHashParams. + extractArray[j].extractByHdr. + ignoreProtocolValidation = FALSE; + p_schemeParam->keyExtractAndHashParams. + extractArray[j].extractByHdr.type = + e_FM_PCD_EXTRACT_FULL_FIELD; + } + p_schemeParam->keyExtractAndHashParams. + extractArray[0].extractByHdr.extractByHdrType. + fullField.ipv4 = NET_HEADER_FIELD_IPv4_PROTO; + p_schemeParam->keyExtractAndHashParams. + extractArray[1].extractByHdr.extractByHdrType. + fullField.ipv4 = NET_HEADER_FIELD_IPv4_SRC_IP; + p_schemeParam->keyExtractAndHashParams. + extractArray[2].extractByHdr.extractByHdrType. + fullField.ipv4 = NET_HEADER_FIELD_IPv4_DST_IP; + + if (p_schemeParam->useHash) { + p_schemeParam->keyExtractAndHashParams. + privateDflt0 = 0x01020304; + p_schemeParam->keyExtractAndHashParams. + privateDflt1 = 0x11121314; + p_schemeParam->keyExtractAndHashParams. + numOfUsedDflts = + FM_PCD_KG_NUM_OF_DEFAULT_GROUPS; + for (j = 0; + j < FM_PCD_KG_NUM_OF_DEFAULT_GROUPS; + j++) { + /* all types */ + p_schemeParam->keyExtractAndHashParams.dflts[j].type = + (e_FmPcdKgKnownFieldsDfltTypes) j; + p_schemeParam-> + keyExtractAndHashParams. + dflts[j].dfltSelect = + e_FM_PCD_KG_DFLT_GBL_0; + } + p_schemeParam->keyExtractAndHashParams. + numOfUsedMasks = 0; + p_schemeParam->keyExtractAndHashParams. + hashShift = 0; + p_schemeParam->keyExtractAndHashParams. + hashDistributionNumOfFqids = 8; + } + break; + + case (1): /* Garbage collector */ + p_schemeParam->netEnvParams.numOfDistinctionUnits = 0; + p_schemeParam->baseFqid = + p_LnxWrpFmPortDev->pcdBaseQ + 8; + break; + + default: + break; + } + + p_LnxWrpFmPortDev->h_Schemes[i] = + FM_PCD_KgSetScheme(p_LnxWrpFmDev->h_PcdDev, + p_schemeParam); + if (!p_LnxWrpFmPortDev->h_Schemes[i]) { + kfree(p_schemeParam); + RETURN_ERROR(MAJOR, E_INVALID_HANDLE, + ("FM_PCD_KgSetScheme failed")); + } + } + kfree(p_schemeParam); + + /* initialize PCD parameters */ + memset(&pcdParam, 0, sizeof(t_FmPortPcdParams)); + pcdParam.h_NetEnv = p_LnxWrpFmPortDev->h_DefNetEnv; + pcdParam.pcdSupport = e_FM_PORT_PCD_SUPPORT_PRS_AND_KG; + + /* initialize Keygen parameters */ + memset(&prsParam, 0, sizeof(t_FmPortPcdPrsParams)); + + prsParam.parsingOffset = 0; + prsParam.firstPrsHdr = HEADER_TYPE_ETH; + pcdParam.p_PrsParams = &prsParam; + + /* initialize Parser parameters */ + memset(&kgParam, 0, sizeof(t_FmPortPcdKgParams)); + kgParam.numOfSchemes = p_LnxWrpFmPortDev->numOfSchemesUsed; + for (i = 0; i < kgParam.numOfSchemes; i++) + kgParam.h_Schemes[i] = p_LnxWrpFmPortDev->h_Schemes[i]; + + pcdParam.p_KgParams = &kgParam; + + return FM_PORT_SetPCD(p_LnxWrpFmPortDev->h_Dev, &pcdParam); +} + +static t_Error InitFmPortDev(t_LnxWrpFmPortDev *p_LnxWrpFmPortDev) +{ +#define MY_ADV_CONFIG_CHECK_END \ + RETURN_ERROR(MAJOR, E_INVALID_SELECTION,\ + ("Advanced configuration routine"));\ + if (errCode != E_OK)\ + RETURN_ERROR(MAJOR, errCode, NO_MSG);\ + } + + int i = 0; + + if (!p_LnxWrpFmPortDev->active || p_LnxWrpFmPortDev->h_Dev) + return E_INVALID_STATE; + + p_LnxWrpFmPortDev->h_Dev = + FM_PORT_Config(&p_LnxWrpFmPortDev->settings.param); + if (p_LnxWrpFmPortDev->h_Dev == NULL) + RETURN_ERROR(MAJOR, E_INVALID_HANDLE, ("FM-port")); + + if ((p_LnxWrpFmPortDev->settings.param.portType == + e_FM_PORT_TYPE_TX_10G) + || (p_LnxWrpFmPortDev->settings.param.portType == + e_FM_PORT_TYPE_TX)) { + t_Error errCode = E_OK; + errCode = + FM_PORT_ConfigDeqHighPriority(p_LnxWrpFmPortDev->h_Dev, + TRUE); + if (errCode != E_OK) + RETURN_ERROR(MAJOR, errCode, NO_MSG); +#ifdef FM_QMI_DEQ_OPTIONS_SUPPORT + errCode = + FM_PORT_ConfigDeqPrefetchOption(p_LnxWrpFmPortDev->h_Dev, + e_FM_PORT_DEQ_FULL_PREFETCH); + if (errCode + != E_OK) + RETURN_ERROR(MAJOR, errCode, NO_MSG); +#endif /* FM_QMI_DEQ_OPTIONS_SUPPORT */ + } + +/* Call the driver's advanced configuration routines, if requested: + Compare the function pointer of each entry to the available routines, + and invoke the matching routine with proper casting of arguments. */ + while (p_LnxWrpFmPortDev->settings.advConfig[i].p_Function + && (i < FM_MAX_NUM_OF_ADV_SETTINGS)) { + ADV_CONFIG_CHECK_START(& + (p_LnxWrpFmPortDev->settings. + advConfig[i])) + + ADV_CONFIG_CHECK(p_LnxWrpFmPortDev->h_Dev, + FM_PORT_ConfigBufferPrefixContent, + PARAMS(1, + (t_FmPortBufferPrefixContent + *))) + + MY_ADV_CONFIG_CHECK_END + /* Advance to next advanced configuration entry */ + i++; + } + + if (FM_PORT_Init(p_LnxWrpFmPortDev->h_Dev) != E_OK) + RETURN_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); +#if defined(CONFIG_FMAN_RESOURCE_ALLOCATION_ALGORITHM) + /* even if these functions return w/ error, do not crash kernel. + Do not return anything because the container function is not + linux complient (it should return -EIO). */ + fm_set_precalculate_fifosize(p_LnxWrpFmPortDev); + fm_set_precalculate_open_dma(p_LnxWrpFmPortDev); + fm_set_precalculate_tnums(p_LnxWrpFmPortDev); +#endif + +/* FMan Fifo sizes behind the scene": + * Using the following formulae (*), under a set of simplifying assumptions (.): + * . all ports are configured in Normal Mode (rather than Independent Mode) + * . the DPAA Eth driver allocates buffers of size: + * . MAXFRM + NET_IP_ALIGN + DPA_PRIV_DATA_SIZE + DPA_PARSE_RESULTS_SIZE + * + DPA_HASH_RESULTS_SIZE, i.e.: + * MAXFRM + 2 + 16 + sizeof(t_FmPrsResult) + 16, i.e.: + * MAXFRM + 66 + * . excessive buffer pools not accounted for + * + * * for Rx ports on P4080: + * . IFSZ = ceil(max(FMBM_EBMPI[PBS]) / 256) * 256 + 7 * 256 + * . no internal frame offset (FMBM_RIM[FOF] == 0) - otherwise, + * add up to 256 to the above + * + * * for Rx ports on P1023: + * . IFSZ = ceil(second_largest(FMBM_EBMPI[PBS] / 256)) * 256 + 7 * 256, + * if at least 2 bpools are configured + * . IFSZ = 8 * 256, if only a single bpool is configured + * + * * for Tx ports: + * . IFSZ = ceil(frame_size / 256) * 256 + 3 * 256 + * + FMBM_TFP[DPDE] * 256, i.e.: + * IFSZ = ceil(MAXFRM / 256) * 256 + 3 x 256 + FMBM_TFP[DPDE] * 256 + * + * * for OH ports on P4080: + * . IFSZ = ceil(frame_size / 256) * 256 + 1 * 256 + FMBM_PP[MXT] * 256 + * * for OH ports on P1023: + * . IFSZ = ceil(frame_size / 256) * 256 + 3 * 256 + FMBM_TFP[DPDE] * 256 + * * for both P4080 and P1023: + * . (conservative decisions, assuming that BMI must bring the entire + * frame, not only the frame header) + * . no internal frame offset (FMBM_OIM[FOF] == 0) - otherwise, + * add up to 256 to the above + * + * . for P4080/P5020/P3041/P2040, DPDE is: + * > 0 or 1, for 1Gb ports, HW default: 0 + * > 2..7 (recommended: 3..7) for 10Gb ports, HW default: 3 + * . for P1023, DPDE should be 1 + * + * . for P1023, MXT is in range (0..31) + * . for P4080, MXT is in range (0..63) + * + */ + + if ((p_LnxWrpFmPortDev->defPcd != e_NO_PCD) && + (InitFmPort3TupleDefPcd(p_LnxWrpFmPortDev) != E_OK)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); + + return E_OK; +} + +void fm_set_rx_port_params(struct fm_port *port, + struct fm_port_rx_params *params) +{ + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev = (t_LnxWrpFmPortDev *) port; + int i; + + p_LnxWrpFmPortDev->settings.param.specificParams.rxParams.errFqid = + params->errq; + p_LnxWrpFmPortDev->settings.param.specificParams.rxParams.dfltFqid = + params->defq; + p_LnxWrpFmPortDev->settings.param.specificParams.rxParams.extBufPools. + numOfPoolsUsed = params->num_pools; + for (i = 0; i < params->num_pools; i++) { + p_LnxWrpFmPortDev->settings.param.specificParams.rxParams. + extBufPools.extBufPool[i].id = + params->pool_param[i].id; + p_LnxWrpFmPortDev->settings.param.specificParams.rxParams. + extBufPools.extBufPool[i].size = + params->pool_param[i].size; + } + + p_LnxWrpFmPortDev->buffPrefixContent.privDataSize = + params->priv_data_size; + p_LnxWrpFmPortDev->buffPrefixContent.passPrsResult = + params->parse_results; + p_LnxWrpFmPortDev->buffPrefixContent.passHashResult = + params->hash_results; + p_LnxWrpFmPortDev->buffPrefixContent.passTimeStamp = + params->time_stamp; + + ADD_ADV_CONFIG_START(p_LnxWrpFmPortDev->settings.advConfig, + FM_MAX_NUM_OF_ADV_SETTINGS) + + ADD_ADV_CONFIG_NO_RET(FM_PORT_ConfigBufferPrefixContent, + ARGS(1, + (&p_LnxWrpFmPortDev-> + buffPrefixContent))); + + ADD_ADV_CONFIG_END InitFmPortDev(p_LnxWrpFmPortDev); +} +EXPORT_SYMBOL(fm_set_rx_port_params); + +void fm_set_tx_port_params(struct fm_port *port, + struct fm_port_non_rx_params *params) +{ + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev = (t_LnxWrpFmPortDev *) port; + + p_LnxWrpFmPortDev->settings.param.specificParams.nonRxParams.errFqid = + params->errq; + p_LnxWrpFmPortDev->settings.param.specificParams.nonRxParams. + dfltFqid = params->defq; + + p_LnxWrpFmPortDev->buffPrefixContent.privDataSize = + params->priv_data_size; + p_LnxWrpFmPortDev->buffPrefixContent.passPrsResult = + params->parse_results; + p_LnxWrpFmPortDev->buffPrefixContent.passHashResult = + params->hash_results; + p_LnxWrpFmPortDev->buffPrefixContent.passTimeStamp = + params->time_stamp; + + ADD_ADV_CONFIG_START(p_LnxWrpFmPortDev->settings.advConfig, + FM_MAX_NUM_OF_ADV_SETTINGS) + + ADD_ADV_CONFIG_NO_RET(FM_PORT_ConfigBufferPrefixContent, + ARGS(1, + (&p_LnxWrpFmPortDev-> + buffPrefixContent))); + + ADD_ADV_CONFIG_END InitFmPortDev(p_LnxWrpFmPortDev); +} +EXPORT_SYMBOL(fm_set_tx_port_params); + +static void LnxwrpFmPcdDevExceptionsCb(t_Handle h_App, + e_FmPcdExceptions exception) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = (t_LnxWrpFmDev *) h_App; + + ASSERT_COND(p_LnxWrpFmDev); + + DBG(INFO, ("got fm-pcd exception %d", exception)); + + /* do nothing */ + UNUSED(exception); +} + +static void LnxwrpFmPcdDevIndexedExceptionsCb(t_Handle h_App, + e_FmPcdExceptions exception, + uint16_t index) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = (t_LnxWrpFmDev *) h_App; + + ASSERT_COND(p_LnxWrpFmDev); + + DBG(INFO, + ("got fm-pcd-indexed exception %d, indx %d", exception, index)); + + /* do nothing */ + UNUSED(exception); + UNUSED(index); +} + +static t_Error InitFmPcdDev(t_LnxWrpFmDev *p_LnxWrpFmDev) +{ + spin_lock_init(&lock); + + if (p_LnxWrpFmDev->pcdActive) { + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev = &p_LnxWrpFmDev->hcPort; + t_FmPcdParams fmPcdParams; + t_Error err; + + memset(&fmPcdParams, 0, sizeof(fmPcdParams)); + fmPcdParams.h_Fm = p_LnxWrpFmDev->h_Dev; + fmPcdParams.prsSupport = p_LnxWrpFmDev->prsActive; + fmPcdParams.kgSupport = p_LnxWrpFmDev->kgActive; + fmPcdParams.plcrSupport = p_LnxWrpFmDev->plcrActive; + fmPcdParams.ccSupport = p_LnxWrpFmDev->ccActive; + fmPcdParams.numOfSchemes = FM_PCD_KG_NUM_OF_SCHEMES; + +#ifndef CONFIG_GUEST_PARTITION + fmPcdParams.f_Exception = LnxwrpFmPcdDevExceptionsCb; + if (fmPcdParams.kgSupport) + fmPcdParams.f_ExceptionId = + LnxwrpFmPcdDevIndexedExceptionsCb; + fmPcdParams.h_App = p_LnxWrpFmDev; +#endif /* !CONFIG_GUEST_PARTITION */ + +#ifdef CONFIG_MULTI_PARTITION_SUPPORT + fmPcdParams.numOfSchemes = 0; + fmPcdParams.numOfClsPlanEntries = 0; + fmPcdParams.partitionId = 0; +#endif /* CONFIG_MULTI_PARTITION_SUPPORT */ + fmPcdParams.useHostCommand = TRUE; + + p_LnxWrpFmDev->hc_tx_fq = + FqAlloc(p_LnxWrpFmDev, + 0, + QMAN_FQ_FLAG_TO_DCPORTAL, + p_LnxWrpFmPortDev->txCh, 0); + if (!p_LnxWrpFmDev->hc_tx_fq) + RETURN_ERROR(MAJOR, E_NULL_POINTER, + ("Frame queue allocation failed...")); + + p_LnxWrpFmDev->hc_tx_conf_fq = + FqAlloc(p_LnxWrpFmDev, + 0, + QMAN_FQ_FLAG_NO_ENQUEUE, + p_LnxWrpFmDev->hcCh, 7); + if (!p_LnxWrpFmDev->hc_tx_conf_fq) + RETURN_ERROR(MAJOR, E_NULL_POINTER, + ("Frame queue allocation failed...")); + + p_LnxWrpFmDev->hc_tx_err_fq = + FqAlloc(p_LnxWrpFmDev, + 0, + QMAN_FQ_FLAG_NO_ENQUEUE, + p_LnxWrpFmDev->hcCh, 7); + if (!p_LnxWrpFmDev->hc_tx_err_fq) + RETURN_ERROR(MAJOR, E_NULL_POINTER, + ("Frame queue allocation failed...")); + + fmPcdParams.hc.portBaseAddr = p_LnxWrpFmPortDev->baseAddr; + fmPcdParams.hc.portId = + p_LnxWrpFmPortDev->settings.param.portId; + fmPcdParams.hc.liodnBase = + p_LnxWrpFmPortDev->settings.param.liodnBase; + fmPcdParams.hc.errFqid = + qman_fq_fqid(p_LnxWrpFmDev->hc_tx_err_fq); + fmPcdParams.hc.confFqid = + qman_fq_fqid(p_LnxWrpFmDev->hc_tx_conf_fq); + fmPcdParams.hc.qmChannel = p_LnxWrpFmPortDev->txCh; + fmPcdParams.hc.f_QmEnqueue = QmEnqueueCB; + fmPcdParams.hc.h_QmArg = (t_Handle) p_LnxWrpFmDev; + + p_LnxWrpFmDev->h_PcdDev = FM_PCD_Config(&fmPcdParams); + if (!p_LnxWrpFmDev->h_PcdDev) + RETURN_ERROR(MAJOR, E_INVALID_HANDLE, ("FM PCD!")); + + err = + FM_PCD_ConfigPlcrNumOfSharedProfiles(p_LnxWrpFmDev->h_PcdDev, + LNXWRP_FM_NUM_OF_SHARED_PROFILES); + if (err != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + + err = FM_PCD_Init(p_LnxWrpFmDev->h_PcdDev); + if (err != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + + if (p_LnxWrpFmDev->err_irq == 0) { + FM_PCD_SetException(p_LnxWrpFmDev->h_PcdDev, + e_FM_PCD_KG_EXCEPTION_DOUBLE_ECC, + FALSE); + FM_PCD_SetException(p_LnxWrpFmDev->h_PcdDev, + e_FM_PCD_KG_EXCEPTION_KEYSIZE_OVERFLOW, + FALSE); + FM_PCD_SetException(p_LnxWrpFmDev->h_PcdDev, + e_FM_PCD_PLCR_EXCEPTION_INIT_ENTRY_ERROR, + FALSE); + FM_PCD_SetException(p_LnxWrpFmDev->h_PcdDev, + e_FM_PCD_PLCR_EXCEPTION_DOUBLE_ECC, + FALSE); + FM_PCD_SetException(p_LnxWrpFmDev->h_PcdDev, + e_FM_PCD_PRS_EXCEPTION_DOUBLE_ECC, + FALSE); + FM_PCD_SetException(p_LnxWrpFmDev->h_PcdDev, + e_FM_PCD_PLCR_EXCEPTION_PRAM_SELF_INIT_COMPLETE, + FALSE); + FM_PCD_SetException(p_LnxWrpFmDev->h_PcdDev, + e_FM_PCD_PLCR_EXCEPTION_ATOMIC_ACTION_COMPLETE, + FALSE); + FM_PCD_SetException(p_LnxWrpFmDev->h_PcdDev, + e_FM_PCD_PRS_EXCEPTION_SINGLE_ECC, + FALSE); + } + } + + return E_OK; +} + +void FreeFmPcdDev(t_LnxWrpFmDev *p_LnxWrpFmDev) +{ + + if (p_LnxWrpFmDev->h_PcdDev) + FM_PCD_Free(p_LnxWrpFmDev->h_PcdDev); + + if (p_LnxWrpFmDev->hc_tx_err_fq) + FqFree(p_LnxWrpFmDev->hc_tx_err_fq); + + if (p_LnxWrpFmDev->hc_tx_conf_fq) + FqFree(p_LnxWrpFmDev->hc_tx_conf_fq); + + if (p_LnxWrpFmDev->hc_tx_fq) + FqFree(p_LnxWrpFmDev->hc_tx_fq); +} + +static void FreeFmPortDev(t_LnxWrpFmPortDev *p_LnxWrpFmPortDev) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = + (t_LnxWrpFmDev *) p_LnxWrpFmPortDev->h_LnxWrpFmDev; + + if (!p_LnxWrpFmPortDev->active) + return; + + if (p_LnxWrpFmPortDev->h_Dev) + FM_PORT_Free(p_LnxWrpFmPortDev->h_Dev); + + devm_iounmap(p_LnxWrpFmDev->dev, + UINT_TO_PTR(p_LnxWrpFmPortDev->baseAddr)); + __devm_release_region(p_LnxWrpFmDev->dev, p_LnxWrpFmDev->res, + p_LnxWrpFmPortDev->phys_baseAddr, + p_LnxWrpFmPortDev->memSize); +} + +static int fm_port_probe(struct platform_device *of_dev) +{ + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev; + t_LnxWrpFmDev *p_LnxWrpFmDev; + struct device *dev; + + dev = &of_dev->dev; + + p_LnxWrpFmPortDev = ReadFmPortDevTreeNode(of_dev); + if (p_LnxWrpFmPortDev == NULL) + return -EIO; + /* Port can be inactive, thus will not be probed: + - in performance mode, OH ports are disabled + ... + */ + if (!p_LnxWrpFmPortDev->active) + return 0; + + if (ConfigureFmPortDev(p_LnxWrpFmPortDev) != E_OK) + return -EIO; + + dev_set_drvdata(dev, p_LnxWrpFmPortDev); + + if ((p_LnxWrpFmPortDev->settings.param.portType == + e_FM_PORT_TYPE_OH_HOST_COMMAND) + && + (InitFmPcdDev((t_LnxWrpFmDev *) p_LnxWrpFmPortDev->h_LnxWrpFmDev) + != E_OK)) + return -EIO; + + p_LnxWrpFmDev = (t_LnxWrpFmDev *) p_LnxWrpFmPortDev->h_LnxWrpFmDev; + + if (p_LnxWrpFmPortDev->settings.param.portType == e_FM_PORT_TYPE_RX) { + Sprint(p_LnxWrpFmPortDev->name, "%s-port-rx%d", + p_LnxWrpFmDev->name, p_LnxWrpFmPortDev->id); + p_LnxWrpFmPortDev->minor = + p_LnxWrpFmPortDev->id + DEV_FM_RX_PORTS_MINOR_BASE; + } else if (p_LnxWrpFmPortDev->settings.param.portType == + e_FM_PORT_TYPE_RX_10G) { + Sprint(p_LnxWrpFmPortDev->name, "%s-port-rx%d", + p_LnxWrpFmDev->name, + p_LnxWrpFmPortDev->id + FM_MAX_NUM_OF_1G_RX_PORTS); + p_LnxWrpFmPortDev->minor = + p_LnxWrpFmPortDev->id + FM_MAX_NUM_OF_1G_RX_PORTS + + DEV_FM_RX_PORTS_MINOR_BASE; + } else if (p_LnxWrpFmPortDev->settings.param.portType == + e_FM_PORT_TYPE_TX) { + Sprint(p_LnxWrpFmPortDev->name, "%s-port-tx%d", + p_LnxWrpFmDev->name, p_LnxWrpFmPortDev->id); + p_LnxWrpFmPortDev->minor = + p_LnxWrpFmPortDev->id + DEV_FM_TX_PORTS_MINOR_BASE; + } else if (p_LnxWrpFmPortDev->settings.param.portType == + e_FM_PORT_TYPE_TX_10G) { + Sprint(p_LnxWrpFmPortDev->name, "%s-port-tx%d", + p_LnxWrpFmDev->name, + p_LnxWrpFmPortDev->id + FM_MAX_NUM_OF_1G_TX_PORTS); + p_LnxWrpFmPortDev->minor = + p_LnxWrpFmPortDev->id + FM_MAX_NUM_OF_1G_TX_PORTS + + DEV_FM_TX_PORTS_MINOR_BASE; + } else if (p_LnxWrpFmPortDev->settings.param.portType == + e_FM_PORT_TYPE_OH_HOST_COMMAND) { + Sprint(p_LnxWrpFmPortDev->name, "%s-port-oh%d", + p_LnxWrpFmDev->name, p_LnxWrpFmPortDev->id); + p_LnxWrpFmPortDev->minor = + p_LnxWrpFmPortDev->id + DEV_FM_OH_PORTS_MINOR_BASE; + } else if (p_LnxWrpFmPortDev->settings.param.portType == + e_FM_PORT_TYPE_OH_OFFLINE_PARSING) { + Sprint(p_LnxWrpFmPortDev->name, "%s-port-oh%d", + p_LnxWrpFmDev->name, p_LnxWrpFmPortDev->id + 1); + p_LnxWrpFmPortDev->minor = + p_LnxWrpFmPortDev->id + 1 + + DEV_FM_OH_PORTS_MINOR_BASE; + } + + device_create(p_LnxWrpFmDev->fm_class, NULL, + MKDEV(p_LnxWrpFmDev->major, p_LnxWrpFmPortDev->minor), + NULL, p_LnxWrpFmPortDev->name); + + /* create sysfs entries for stats and regs */ + + if (fm_port_sysfs_create(dev) != 0) { + FreeFmPortDev(p_LnxWrpFmPortDev); + REPORT_ERROR(MAJOR, E_INVALID_STATE, + ("Unable to create sys entry - fm port!!!")); + return -EIO; + } + +#ifdef FM_TX_INVALID_ECC_ERRATA_10GMAC_A009 + FM_DisableRamsEcc(p_LnxWrpFmDev->h_Dev); +#endif /* FM_TX_INVALID_ECC_ERRATA_10GMAC_A009 */ + + DBG(TRACE, ("%s probed", p_LnxWrpFmPortDev->name)); + + return 0; +} + +static int fm_port_remove(struct platform_device *of_dev) +{ + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev; + t_LnxWrpFmDev *p_LnxWrpFmDev; + struct device *dev; + + dev = &of_dev->dev; + p_LnxWrpFmPortDev = dev_get_drvdata(dev); + + fm_port_sysfs_destroy(dev); + + p_LnxWrpFmDev = (t_LnxWrpFmDev *) p_LnxWrpFmPortDev->h_LnxWrpFmDev; + device_destroy(p_LnxWrpFmDev->fm_class, + MKDEV(p_LnxWrpFmDev->major, p_LnxWrpFmPortDev->minor)); + + FreeFmPortDev(p_LnxWrpFmPortDev); + + dev_set_drvdata(dev, NULL); + + return 0; +} + +static const struct of_device_id fm_port_match[] = { + { + .compatible = "fsl,fman-port-oh"}, + { + .compatible = "fsl,fman-port-1g-rx"}, + { + .compatible = "fsl,fman-port-10g-rx"}, + { + .compatible = "fsl,fman-port-1g-tx"}, + { + .compatible = "fsl,fman-port-10g-tx"}, + {} +}; + +#ifndef MODULE +MODULE_DEVICE_TABLE(of, fm_port_match); +#endif /* !MODULE */ + +static struct platform_driver fm_port_driver = { + + .driver = { + .name = "fsl-fman-port", + .of_match_table = fm_port_match, + .owner = THIS_MODULE, + }, + .probe = fm_port_probe, + .remove = fm_port_remove, +}; + + +t_Error LNXWRP_FM_Port_Init(void) +{ + /* Register to the DTB for basic FM port API */ + if (platform_driver_register(&fm_port_driver)) + return E_NO_DEVICE; + + return E_OK; +} + +void LNXWRP_FM_Port_Free(void) +{ + platform_driver_unregister(&fm_port_driver); +} + +static int __init __cold fm_port_load(void) +{ + if (LNXWRP_FM_Port_Init() != E_OK) { + printk(KERN_CRIT "Failed to init FM Ports wrapper!\n"); + return -ENODEV; + } + + printk(KERN_INFO "Freescale FM Ports module (" __DATE__ ":" __TIME__ ")\n"); + + return 0; +} + +static void __exit __cold fm_port_unload(void) +{ + LNXWRP_FM_Port_Free(); +} + +module_init(fm_port_load); +module_exit(fm_port_unload); --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_ioctls_fm.c +++ linux-3.13.0/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_ioctls_fm.c @@ -0,0 +1,2648 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 lnxwrp_ioctls_fm.c + + @Author Shlomi Gridish + + @Description FM Linux wrapper functions. + +*/ + +/* Linux Headers ------------------- */ +#include + +#if defined(CONFIG_MODVERSIONS) && !defined(MODVERSIONS) +#define MODVERSIONS +#endif +#ifdef MODVERSIONS +#include +#endif /* MODVERSIONS */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(CONFIG_COMPAT) +#include +#endif + +#include "part_ext.h" +#include "fm_ioctls.h" +#include "fm_pcd_ioctls.h" +#include "fm_port_ioctls.h" + +#if defined(CONFIG_COMPAT) +#include "lnxwrp_ioctls_fm_compat.h" +#endif + +#include "lnxwrp_fm.h" + +#define CMP_IOC_DEFINE(def) (IOC_##def != def) + +/* fm_pcd_ioctls.h === fm_pcd_ext.h assertions */ +#if CMP_IOC_DEFINE(FM_PCD_MAX_NUM_OF_PRIVATE_HDRS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(FM_PCD_PRS_NUM_OF_HDRS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(FM_PCD_KG_NUM_OF_SCHEMES) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS) +#error Error: please synchronize IOC_ defines! +#endif + +/* please check for this one in fm_common.h: */ +#define FM_PCD_MAX_NUM_OF_OPTIONS(clsPlanEntries) ((clsPlanEntries==256)? 8:((clsPlanEntries==128)? 7: ((clsPlanEntries==64)? 6: ((clsPlanEntries==32)? 5:0)))) +#if (IOC_FM_PCD_MAX_NUM_OF_OPTIONS != FM_PCD_MAX_NUM_OF_OPTIONS(FM_PCD_MAX_NUM_OF_CLS_PLANS)) +#error Error: please synchronize IOC_ defines! +#endif +#undef FM_PCD_MAX_NUM_OF_OPTIONS + +#if CMP_IOC_DEFINE(FM_PCD_MAX_NUM_OF_INTERCHANGEABLE_HDRS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(FM_PCD_KG_NUM_OF_GENERIC_REGS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(FM_PCD_KG_MAX_NUM_OF_EXTRACTS_PER_KEY) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(FM_PCD_MAX_NUM_OF_CLS_PLANS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(FM_PCD_KG_NUM_OF_EXTRACT_MASKS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(FM_PCD_KG_NUM_OF_DEFAULT_GROUPS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(FM_PCD_PRS_NUM_OF_LABELS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(FM_PCD_MAX_NUM_OF_CC_NODES) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(FM_PCD_MAX_NUM_OF_CC_TREES) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(FM_PCD_MAX_NUM_OF_CC_GROUPS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(FM_PCD_MAX_NUM_OF_CC_UNITS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(FM_PCD_MAX_NUM_OF_KEYS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(FM_PCD_MAX_SIZE_OF_KEY) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(FM_PCD_MAX_NUM_OF_CC_ENTRIES_IN_GRP) +#error Error: please synchronize IOC_ defines! +#endif + +/* net_ioctls.h === net_ext.h assertions */ +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_PPP_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_PPPoE_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_PPPMUX_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_PPPMUX_SUBFRAME_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_ETH_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_IPv4_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_IPv6_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_ICMP_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_IGMP_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_TCP_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_SCTP_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_DCCP_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_UDP_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_UDP_ENCAP_ESP_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_IPHC_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_SCTP_CHUNK_DATA_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_L2TPv2_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_L2TPv3_CTRL_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_L2TPv3_SESS_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_VLAN_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_LLC_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_NLPID_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_SNAP_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_LLC_SNAP_ALL_FIELDS) +#warning Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_ARP_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_RFC2684_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_USER_DEFINED_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_PAYLOAD_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_GRE_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_MINENCAP_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_IPSEC_AH_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_IPSEC_ESP_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_MPLS_LABEL_STACK_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_MACSEC_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +/* fm_ioctls.h === fm_ext.h assertions */ +#if CMP_IOC_DEFINE(FM_MAX_NUM_OF_VALID_PORTS) +#error Error: please synchronize IOC_ defines! +#endif + +/* fm_port_ioctls.h === dpaa_integrations_ext.h assertions */ +#if CMP_IOC_DEFINE(FM_PORT_NUM_OF_CONGESTION_GRPS) +#error Error: please synchronize IOC_ defines! +#endif + +#define ASSERT_IOC_NET_ENUM(def) ASSERT_COND((unsigned long)e_IOC_NET_##def == (unsigned long)def) + +static void LnxwrpAssertions(void) +{ + /* sampling checks */ + ASSERT_IOC_NET_ENUM(HEADER_TYPE_MACSEC); + ASSERT_IOC_NET_ENUM(HEADER_TYPE_PPP); + ASSERT_IOC_NET_ENUM(MAX_HEADER_TYPE_COUNT); + ASSERT_COND((unsigned long)e_IOC_FM_PORT_TYPE_DUMMY == (unsigned long)e_FM_PORT_TYPE_DUMMY); + ASSERT_COND((unsigned long)e_IOC_FM_EX_MURAM_ECC == (unsigned long)e_FM_EX_MURAM_ECC); + ASSERT_COND((unsigned long)e_IOC_FM_COUNTERS_SEMAPHOR_SYNC_REJECT == (unsigned long)e_FM_COUNTERS_SEMAPHOR_SYNC_REJECT); + ASSERT_COND((unsigned long)e_IOC_FM_PCD_PRS_COUNTERS_FPM_COMMAND_STALL_CYCLES == (unsigned long)e_FM_PCD_PRS_COUNTERS_FPM_COMMAND_STALL_CYCLES); + ASSERT_COND((unsigned long)e_IOC_FM_PCD_PRS_EXCEPTION_SINGLE_ECC == (unsigned long)e_FM_PCD_PRS_EXCEPTION_SINGLE_ECC); + ASSERT_COND((unsigned long)e_IOC_FM_PCD_PRS == (unsigned long)e_FM_PCD_PRS); + ASSERT_COND((unsigned long)e_IOC_FM_PCD_EXTRACT_FULL_FIELD == (unsigned long)e_FM_PCD_EXTRACT_FULL_FIELD); + ASSERT_COND((unsigned long)e_IOC_FM_PCD_EXTRACT_FROM_FLOW_ID == (unsigned long)e_FM_PCD_EXTRACT_FROM_FLOW_ID); + ASSERT_COND((unsigned long)e_IOC_FM_PCD_KG_EXTRACT_PORT_PRIVATE_INFO == (unsigned long)e_FM_PCD_KG_EXTRACT_PORT_PRIVATE_INFO); + ASSERT_COND((unsigned long)e_IOC_FM_PCD_KG_DFLT_ILLEGAL == (unsigned long)e_FM_PCD_KG_DFLT_ILLEGAL); + ASSERT_COND((unsigned long)e_IOC_FM_PCD_KG_GENERIC_NOT_FROM_DATA == (unsigned long)e_FM_PCD_KG_GENERIC_NOT_FROM_DATA); + ASSERT_COND((unsigned long)e_IOC_FM_PCD_HDR_INDEX_3 == (unsigned long)e_FM_PCD_HDR_INDEX_3); + ASSERT_COND((unsigned long)e_IOC_FM_PCD_PLCR_SHARED == (unsigned long)e_FM_PCD_PLCR_SHARED); + ASSERT_COND((unsigned long)e_IOC_FM_PCD_PLCR_RFC_4115 == (unsigned long)e_FM_PCD_PLCR_RFC_4115); + ASSERT_COND((unsigned long)e_IOC_FM_PCD_PLCR_COLOR_AWARE == (unsigned long)e_FM_PCD_PLCR_COLOR_AWARE); + ASSERT_COND((unsigned long)e_IOC_FM_PCD_PLCR_OVERRIDE == (unsigned long)e_FM_PCD_PLCR_OVERRIDE); + ASSERT_COND((unsigned long)e_IOC_FM_PCD_PLCR_FULL_FRM_LEN == (unsigned long)e_FM_PCD_PLCR_FULL_FRM_LEN); + ASSERT_COND((unsigned long)e_IOC_FM_PCD_PLCR_ROLLBACK_FULL_FRM_LEN == (unsigned long)e_FM_PCD_PLCR_ROLLBACK_FULL_FRM_LEN); + ASSERT_COND((unsigned long)e_IOC_FM_PCD_PLCR_PACKET_MODE == (unsigned long)e_FM_PCD_PLCR_PACKET_MODE); + ASSERT_COND((unsigned long)e_IOC_FM_PCD_DROP_FRAME == (unsigned long)e_FM_PCD_DROP_FRAME); + ASSERT_COND((unsigned long)e_IOC_FM_PCD_PLCR_PROFILE_RECOLOURED_RED_PACKET_TOTAL_COUNTER == (unsigned long)e_FM_PCD_PLCR_PROFILE_RECOLOURED_RED_PACKET_TOTAL_COUNTER); + ASSERT_COND((unsigned long)e_IOC_FM_PCD_ACTION_INDEXED_LOOKUP == (unsigned long)e_FM_PCD_ACTION_INDEXED_LOOKUP); + ASSERT_COND((unsigned long)e_IOC_FM_PORT_PCD_SUPPORT_PRS_AND_KG_AND_PLCR == (unsigned long)e_FM_PORT_PCD_SUPPORT_PRS_AND_KG_AND_PLCR); +#ifdef FM_CAPWAP_SUPPORT + ASSERT_COND((unsigned long)e_IOC_FM_PORT_PCD_SUPPORT_CC_AND_KG_AND_PLCR == (unsigned long)e_FM_PORT_PCD_SUPPORT_CC_AND_KG_AND_PLCR); +#endif + ASSERT_COND((unsigned long)e_IOC_FM_PORT_COUNTERS_DEQ_CONFIRM == (unsigned long)e_FM_PORT_COUNTERS_DEQ_CONFIRM); + ASSERT_COND((unsigned long)e_IOC_FM_PORT_DUAL_RATE_LIMITER_SCALE_DOWN_BY_8 == (unsigned long)e_FM_PORT_DUAL_RATE_LIMITER_SCALE_DOWN_BY_8); +} + +static t_Error LnxwrpFmPcdIOCTL(t_LnxWrpFmDev *p_LnxWrpFmDev, unsigned int cmd, unsigned long arg, bool compat) +{ + t_Error err = E_READ_FAILED; + + /* can be moved from here */ + LnxwrpAssertions(); + + switch (cmd) + { +#if defined(CONFIG_COMPAT) + case FM_PCD_IOC_PRS_LOAD_SW_COMPAT: +#endif + case FM_PCD_IOC_PRS_LOAD_SW: + { + ioc_fm_pcd_prs_sw_params_t *param; + uint8_t *p_code; + + ASSERT_COND(sizeof(ioc_fm_pcd_prs_sw_params_t) == sizeof(t_FmPcdPrsSwParams)); + + param = (ioc_fm_pcd_prs_sw_params_t *) XX_Malloc(sizeof(ioc_fm_pcd_prs_sw_params_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_prs_sw_params_t *compat_param; + + compat_param = (ioc_compat_fm_pcd_prs_sw_params_t *) XX_Malloc( + sizeof(ioc_compat_fm_pcd_prs_sw_params_t)); + if (!compat_param) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + + if (copy_from_user(compat_param, + (ioc_compat_fm_pcd_prs_sw_params_t *) compat_ptr(arg), + sizeof(ioc_compat_fm_pcd_prs_sw_params_t))) + { + XX_Free(compat_param); + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + compat_fm_pcd_prs_sw(compat_param, param, COMPAT_US_TO_K); + + XX_Free(compat_param); + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_pcd_prs_sw_params_t *)arg, + sizeof(ioc_fm_pcd_prs_sw_params_t))) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + } + + p_code = (uint8_t *) XX_Malloc(param->size); + if (!p_code) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + if (copy_from_user(p_code, param->p_code, param->size)) { + XX_Free(p_code); + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + param->p_code = p_code; + + err = FM_PCD_PrsLoadSw(p_LnxWrpFmDev->h_PcdDev, (t_FmPcdPrsSwParams*)param); + XX_Free(p_code); + XX_Free(param); + break; + } + + case FM_PCD_IOC_ENABLE: + return FM_PCD_Enable(p_LnxWrpFmDev->h_PcdDev); + + case FM_PCD_IOC_DISABLE: + return FM_PCD_Disable(p_LnxWrpFmDev->h_PcdDev); + + case FM_PCD_IOC_FORCE_INTR: + { + int exception; + +#if defined(CONFIG_COMPAT) + if (compat) + { + if (get_user(exception, (int *) compat_ptr(arg))) + break; + } + else +#endif + { + if (get_user(exception, (int *)arg)) + break; + } + + return FM_PCD_ForceIntr(p_LnxWrpFmDev->h_PcdDev, (e_FmPcdExceptions)exception); + } + + case FM_PCD_IOC_SET_EXCEPTION: + { + ioc_fm_pcd_exception_params_t *param; + + param = (ioc_fm_pcd_exception_params_t *) XX_Malloc( + sizeof(ioc_fm_pcd_exception_params_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + if (copy_from_user(param, (ioc_fm_pcd_exception_params_t *)compat_ptr(arg), + sizeof(ioc_fm_pcd_exception_params_t))) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_pcd_exception_params_t *)arg, + sizeof(ioc_fm_pcd_exception_params_t))) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + } + + err = FM_PCD_SetException(p_LnxWrpFmDev->h_PcdDev, param->exception, param->enable); + XX_Free(param); + break; + } + + case FM_PCD_IOC_KG_SET_ADDITIONAL_DATA_AFTER_PARSING: + { + uint8_t payloadOffset; + +#if defined(CONFIG_COMPAT) + if (compat) + { + if (get_user(payloadOffset, (uint8_t*) compat_ptr(arg))) + break; + } + else +#endif + { + if (get_user(payloadOffset, (uint8_t*) arg)) + break; + } + + return FM_PCD_KgSetAdditionalDataAfterParsing(p_LnxWrpFmDev->h_PcdDev, payloadOffset); + } + + case FM_PCD_IOC_KG_SET_DFLT_VALUE: + { + ioc_fm_pcd_kg_dflt_value_params_t *param; + + param = (ioc_fm_pcd_kg_dflt_value_params_t *) XX_Malloc( + sizeof(ioc_fm_pcd_kg_dflt_value_params_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + if (copy_from_user(param, (ioc_fm_pcd_kg_dflt_value_params_t *)compat_ptr(arg), + sizeof(ioc_fm_pcd_kg_dflt_value_params_t))) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_pcd_kg_dflt_value_params_t *)arg, + sizeof(ioc_fm_pcd_kg_dflt_value_params_t))) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + } + + err = FM_PCD_KgSetDfltValue(p_LnxWrpFmDev->h_PcdDev, param->valueId, param->value); + XX_Free(param); + break; + } + +#if defined(CONFIG_COMPAT) + case FM_PCD_IOC_SET_NET_ENV_CHARACTERISTICS_COMPAT: +#endif + case FM_PCD_IOC_SET_NET_ENV_CHARACTERISTICS: + { + ioc_fm_pcd_net_env_params_t *param; + + param = (ioc_fm_pcd_net_env_params_t *) XX_Malloc(sizeof(ioc_fm_pcd_net_env_params_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_net_env_params_t *compat_param; + + compat_param = (ioc_compat_fm_pcd_net_env_params_t *) XX_Malloc( + sizeof(ioc_compat_fm_pcd_net_env_params_t)); + if (!compat_param) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + + if (copy_from_user(compat_param, (ioc_compat_fm_pcd_net_env_params_t *) compat_ptr(arg), + sizeof(ioc_compat_fm_pcd_net_env_params_t))) + { + XX_Free(compat_param); + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + compat_copy_fm_pcd_net_env(compat_param, param, COMPAT_US_TO_K); + XX_Free(compat_param); + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_pcd_net_env_params_t *) arg, + sizeof(ioc_fm_pcd_net_env_params_t))) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + } + + param->id = FM_PCD_SetNetEnvCharacteristics(p_LnxWrpFmDev->h_PcdDev, (t_FmPcdNetEnvParams*)param); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_net_env_params_t *compat_param; + + compat_param = (ioc_compat_fm_pcd_net_env_params_t *) XX_Malloc( + sizeof(ioc_compat_fm_pcd_net_env_params_t)); + if (!compat_param) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + + compat_copy_fm_pcd_net_env(compat_param, param, COMPAT_K_TO_US); + + if (param->id && !copy_to_user((ioc_compat_fm_pcd_net_env_params_t *) compat_ptr(arg), + compat_param, + sizeof(ioc_compat_fm_pcd_net_env_params_t))) + err = E_OK; + + XX_Free(compat_param); + } + else +#endif + { + if (param->id && !copy_to_user((ioc_fm_pcd_net_env_params_t *)arg, param, sizeof(ioc_fm_pcd_net_env_params_t))) + err = E_OK; + } + + XX_Free(param); + break; + } + +#if defined(CONFIG_COMPAT) + case FM_PCD_IOC_DELETE_NET_ENV_CHARACTERISTICS_COMPAT: +#endif + case FM_PCD_IOC_DELETE_NET_ENV_CHARACTERISTICS: + { + ioc_fm_obj_t id; + + memset(&id, 0 , sizeof(ioc_fm_obj_t)); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_obj_t compat_id; + + if (copy_from_user(&compat_id, (ioc_compat_fm_obj_t *) compat_ptr(arg), sizeof(ioc_compat_fm_obj_t))) + break; + + id.obj = compat_ptr(compat_id.obj); + } + else +#endif + { + if (copy_from_user(&id, (ioc_fm_obj_t *) arg, sizeof(ioc_fm_obj_t))) + break; + } + + return FM_PCD_DeleteNetEnvCharacteristics(p_LnxWrpFmDev->h_PcdDev, id.obj); + } + +#if defined(CONFIG_COMPAT) + case FM_PCD_IOC_KG_SET_SCHEME_COMPAT: +#endif + case FM_PCD_IOC_KG_SET_SCHEME: + { + ioc_fm_pcd_kg_scheme_params_t *param; + + ASSERT_COND(sizeof(t_FmPcdKgSchemeParams) + sizeof(void *) == sizeof(ioc_fm_pcd_kg_scheme_params_t)); + param = (ioc_fm_pcd_kg_scheme_params_t *) XX_Malloc(sizeof(ioc_fm_pcd_kg_scheme_params_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_kg_scheme_params_t *compat_param = NULL; + + compat_param = (ioc_compat_fm_pcd_kg_scheme_params_t *) XX_Malloc( + sizeof(ioc_compat_fm_pcd_kg_scheme_params_t)); + if (!compat_param) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + + if (copy_from_user(compat_param, (ioc_compat_fm_pcd_kg_scheme_params_t *) compat_ptr(arg), + sizeof(ioc_compat_fm_pcd_kg_scheme_params_t))) + { + XX_Free(compat_param); + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + compat_copy_fm_pcd_kg_scheme(compat_param, param, COMPAT_US_TO_K); + + XX_Free(compat_param); + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_pcd_kg_scheme_params_t *)arg, + sizeof(ioc_fm_pcd_kg_scheme_params_t))) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + } + + param->id = FM_PCD_KgSetScheme(p_LnxWrpFmDev->h_PcdDev, (t_FmPcdKgSchemeParams*)param); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_kg_scheme_params_t *compat_param = NULL; + + compat_param = (ioc_compat_fm_pcd_kg_scheme_params_t *) XX_Malloc( + sizeof(ioc_compat_fm_pcd_kg_scheme_params_t)); + if (!compat_param) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + + compat_copy_fm_pcd_kg_scheme(compat_param, param, COMPAT_K_TO_US); + + if (param->id && !copy_to_user((ioc_compat_fm_pcd_kg_scheme_params_t *)compat_ptr(arg), + compat_param, + sizeof(ioc_compat_fm_pcd_kg_scheme_params_t))) + err = E_OK; + XX_Free(compat_param); + } + else +#endif + { + if (param->id && !copy_to_user((ioc_fm_pcd_kg_scheme_params_t *)arg, + param, + sizeof(ioc_fm_pcd_kg_scheme_params_t))) + err = E_OK; + } + + XX_Free(param); + break; + } + +#if defined(CONFIG_COMPAT) + case FM_PCD_IOC_KG_DEL_SCHEME_COMPAT: +#endif + case FM_PCD_IOC_KG_DEL_SCHEME: + { + ioc_fm_obj_t id; + + memset(&id, 0 , sizeof(ioc_fm_obj_t)); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_obj_t compat_id; + + if (copy_from_user(&compat_id, (ioc_compat_fm_obj_t *) compat_ptr(arg), sizeof(ioc_compat_fm_obj_t))) + break; + + id.obj = compat_ptr(compat_id.obj); + } + else +#endif + { + if (copy_from_user(&id, (ioc_fm_obj_t *) arg, sizeof(ioc_fm_obj_t))) + break; + } + + return FM_PCD_KgDeleteScheme(p_LnxWrpFmDev->h_PcdDev, id.obj); + } + +#if defined(CONFIG_COMPAT) + case FM_PCD_IOC_CC_SET_NODE_COMPAT: +#endif + case FM_PCD_IOC_CC_SET_NODE: + { + ioc_fm_pcd_cc_node_params_t *param; + uint8_t *keys; + uint8_t *masks; + int i,k; + + ASSERT_COND(sizeof(t_FmPcdCcNodeParams) + sizeof(void *) == sizeof(ioc_fm_pcd_cc_node_params_t)); + + param = (ioc_fm_pcd_cc_node_params_t *) XX_Malloc( + sizeof(ioc_fm_pcd_cc_node_params_t) + + 2 * IOC_FM_PCD_MAX_NUM_OF_KEYS * IOC_FM_PCD_MAX_SIZE_OF_KEY); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + + memset(param, 0, sizeof(ioc_fm_pcd_cc_node_params_t) + + 2 * IOC_FM_PCD_MAX_NUM_OF_KEYS * IOC_FM_PCD_MAX_SIZE_OF_KEY); + + keys = (uint8_t *) (param + 1); + masks = keys + IOC_FM_PCD_MAX_NUM_OF_KEYS * IOC_FM_PCD_MAX_SIZE_OF_KEY; + memset(keys, 0, 2 * IOC_FM_PCD_MAX_NUM_OF_KEYS * IOC_FM_PCD_MAX_SIZE_OF_KEY); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_cc_node_params_t *compat_param; + + compat_param = (ioc_compat_fm_pcd_cc_node_params_t *) XX_Malloc( + sizeof(ioc_compat_fm_pcd_cc_node_params_t) + + 2 * IOC_FM_PCD_MAX_NUM_OF_KEYS * IOC_FM_PCD_MAX_SIZE_OF_KEY); + if (!compat_param) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + + memset(compat_param, 0, sizeof(ioc_compat_fm_pcd_cc_node_params_t) + + 2 * IOC_FM_PCD_MAX_NUM_OF_KEYS * IOC_FM_PCD_MAX_SIZE_OF_KEY); + + if (copy_from_user(compat_param, + (ioc_compat_fm_pcd_cc_node_params_t *)compat_ptr(arg), + sizeof(ioc_compat_fm_pcd_cc_node_params_t))) + { + XX_Free(compat_param); + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + compat_copy_fm_pcd_cc_node(compat_param, param, COMPAT_US_TO_K); + + XX_Free(compat_param); + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_pcd_cc_node_params_t *)arg, sizeof(ioc_fm_pcd_cc_node_params_t))) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + } + ASSERT_COND(param->keys_params.num_of_keys <= IOC_FM_PCD_MAX_NUM_OF_KEYS); + ASSERT_COND(param->keys_params.key_size <= IOC_FM_PCD_MAX_SIZE_OF_KEY); + + /* support for indexed lookup */ + if( !(param->extract_cc_params.type == e_IOC_FM_PCD_EXTRACT_NON_HDR && + param->extract_cc_params.extract_params.extract_non_hdr.src == e_IOC_FM_PCD_EXTRACT_FROM_HASH && + param->extract_cc_params.extract_params.extract_non_hdr.action == e_IOC_FM_PCD_ACTION_INDEXED_LOOKUP)) + { + for (i=0, k=0; + i < param->keys_params.num_of_keys; + i++, k += IOC_FM_PCD_MAX_SIZE_OF_KEY) + { + if (copy_from_user(&keys[k], + param->keys_params.key_params[i].p_key, + param->keys_params.key_size)) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + param->keys_params.key_params[i].p_key = &keys[k]; + + if (param->keys_params.key_params[i].p_mask) + { + if (copy_from_user(&masks[k], + param->keys_params.key_params[i].p_mask, + param->keys_params.key_size)) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + param->keys_params.key_params[i].p_mask = &masks[k]; + } + } + } + + param->id = FM_PCD_CcSetNode(p_LnxWrpFmDev->h_PcdDev, (t_FmPcdCcNodeParams*)param); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_cc_node_params_t *compat_param; + compat_param = (ioc_compat_fm_pcd_cc_node_params_t *) XX_Malloc( + sizeof(ioc_compat_fm_pcd_cc_node_params_t) + + 2 * IOC_FM_PCD_MAX_NUM_OF_KEYS * IOC_FM_PCD_MAX_SIZE_OF_KEY); + if (!compat_param) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + + memset(compat_param, 0, sizeof(ioc_compat_fm_pcd_cc_node_params_t) + + 2 * IOC_FM_PCD_MAX_NUM_OF_KEYS * IOC_FM_PCD_MAX_SIZE_OF_KEY); + + /* setup user space structure */ + compat_copy_fm_pcd_cc_node(compat_param, param, COMPAT_K_TO_US); + + compat_param->id = compat_add_ptr2id(param->id); + + if (param->id && !copy_to_user((ioc_compat_fm_pcd_cc_node_params_t *)compat_ptr(arg), + compat_param, + sizeof(ioc_compat_fm_pcd_cc_node_params_t))) + err = E_OK; + + XX_Free(compat_param); + } + else +#endif + { + if (param->id && !copy_to_user((ioc_fm_pcd_cc_node_params_t *)arg, param, sizeof(ioc_fm_pcd_cc_node_params_t))) + err = E_OK; + } + + XX_Free(param); + break; + } + +#if defined(CONFIG_COMPAT) + case FM_PCD_IOC_CC_DELETE_NODE_COMPAT: +#endif + case FM_PCD_IOC_CC_DELETE_NODE: + { + ioc_fm_obj_t id; + + memset(&id, 0 , sizeof(ioc_fm_obj_t)); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_obj_t compat_id; + + if (copy_from_user(&compat_id, (ioc_compat_fm_obj_t *) compat_ptr(arg), sizeof(ioc_compat_fm_obj_t))) + break; + + id.obj = compat_get_id2ptr(compat_id.obj); + compat_del_ptr2id(id.obj); + } + else +#endif + { + if (copy_from_user(&id, (ioc_fm_obj_t *) arg, sizeof(ioc_fm_obj_t))) + break; + } + + return FM_PCD_CcDeleteNode(p_LnxWrpFmDev->h_PcdDev, id.obj); + } + +#if defined(CONFIG_COMPAT) + case FM_PCD_IOC_CC_BUILD_TREE_COMPAT: +#endif + case FM_PCD_IOC_CC_BUILD_TREE: + { + ioc_fm_pcd_cc_tree_params_t *param; + + ASSERT_COND(sizeof(t_FmPcdCcTreeParams) + sizeof(void *) == sizeof(ioc_fm_pcd_cc_tree_params_t)); + + param = (ioc_fm_pcd_cc_tree_params_t *) XX_Malloc(sizeof(ioc_fm_pcd_cc_tree_params_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + + memset(param, 0, sizeof(ioc_fm_pcd_cc_tree_params_t)); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_cc_tree_params_t *compat_param; + + compat_param = (ioc_compat_fm_pcd_cc_tree_params_t *) XX_Malloc( + sizeof(ioc_compat_fm_pcd_cc_tree_params_t)); + if (!compat_param) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + memset(compat_param, 0, sizeof(ioc_compat_fm_pcd_cc_tree_params_t)); + + if (copy_from_user(compat_param, + (ioc_compat_fm_pcd_cc_tree_params_t *)compat_ptr(arg), + sizeof(ioc_compat_fm_pcd_cc_tree_params_t))) + { + XX_Free(compat_param); + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + compat_copy_fm_pcd_cc_tree(compat_param, param, COMPAT_US_TO_K); + + XX_Free(compat_param); + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_pcd_cc_tree_params_t *)arg, + sizeof(ioc_fm_pcd_cc_tree_params_t))) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + } + + param->id = FM_PCD_CcBuildTree(p_LnxWrpFmDev->h_PcdDev, (t_FmPcdCcTreeParams*)param); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_cc_tree_params_t *compat_param; + + compat_param = (ioc_compat_fm_pcd_cc_tree_params_t *) XX_Malloc(sizeof(ioc_compat_fm_pcd_cc_tree_params_t)); + if (!compat_param) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + + memset(compat_param, 0, sizeof(ioc_compat_fm_pcd_cc_tree_params_t)); + + compat_add_ptr2id(param->id); + param->id = (void *)(uint64_t)compat_get_ptr2id(param->id); + + compat_copy_fm_pcd_cc_tree(compat_param, param, COMPAT_K_TO_US); + + if (param->id && !copy_to_user((ioc_compat_fm_pcd_cc_tree_params_t *)compat_ptr(arg), + compat_param, + sizeof(ioc_compat_fm_pcd_cc_tree_params_t))) + err = E_OK; + + XX_Free(compat_param); + } + else +#endif + { + if (param->id && !copy_to_user((ioc_fm_pcd_cc_tree_params_t *)arg, param, sizeof(ioc_fm_pcd_cc_tree_params_t))) + err = E_OK; + } + + XX_Free(param); + break; + } + +#if defined(CONFIG_COMPAT) + case FM_PCD_IOC_CC_DELETE_TREE_COMPAT: +#endif + case FM_PCD_IOC_CC_DELETE_TREE: + { + ioc_fm_obj_t id; + + memset(&id, 0 , sizeof(ioc_fm_obj_t)); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_obj_t compat_id; + + if (copy_from_user(&compat_id, (ioc_compat_fm_obj_t *) compat_ptr(arg), sizeof(ioc_compat_fm_obj_t))) + break; + + id.obj = compat_get_id2ptr(compat_id.obj); + } + else +#endif + { + if (copy_from_user(&id, (ioc_fm_obj_t *) arg, sizeof(ioc_fm_obj_t))) + break; + } + + return FM_PCD_CcDeleteTree(p_LnxWrpFmDev->h_PcdDev, id.obj); + } + +#if defined(CONFIG_COMPAT) + case FM_PCD_IOC_PLCR_SET_PROFILE_COMPAT: +#endif + case FM_PCD_IOC_PLCR_SET_PROFILE: + { + ioc_fm_pcd_plcr_profile_params_t *param; + + ASSERT_COND(sizeof(t_FmPcdPlcrProfileParams) + sizeof(void *) == sizeof(ioc_fm_pcd_plcr_profile_params_t)); + + param = (ioc_fm_pcd_plcr_profile_params_t *) XX_Malloc( + sizeof(ioc_fm_pcd_plcr_profile_params_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_plcr_profile_params_t *compat_param; + + compat_param = (ioc_compat_fm_pcd_plcr_profile_params_t *) XX_Malloc( + sizeof(ioc_compat_fm_pcd_plcr_profile_params_t)); + if (!compat_param) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + + if (copy_from_user(compat_param, (ioc_compat_fm_pcd_plcr_profile_params_t *)compat_ptr(arg), + sizeof(ioc_compat_fm_pcd_plcr_profile_params_t))) { + XX_Free(compat_param); + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + compat_copy_fm_pcd_plcr_profile(compat_param, param, COMPAT_US_TO_K); + + XX_Free(compat_param); + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_pcd_plcr_profile_params_t *)arg, + sizeof(ioc_fm_pcd_plcr_profile_params_t))) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + } + + if (!param->modify && + (((t_FmPcdPlcrProfileParams*)param)->id.newParams.profileType != e_FM_PCD_PLCR_SHARED)) + { + t_Handle h_Port; + fm_pcd_port_params_t *port_params; + + port_params = (fm_pcd_port_params_t*) XX_Malloc(sizeof(fm_pcd_port_params_t)); + if (!port_params) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + + if (copy_from_user(port_params, (fm_pcd_port_params_t*)((t_FmPcdPlcrProfileParams*)param)->id.newParams.h_FmPort, + sizeof(fm_pcd_port_params_t))) + { + XX_Free(port_params); + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + switch(port_params->port_type) + { + case (e_IOC_FM_PORT_TYPE_RX): + h_Port = p_LnxWrpFmDev->rxPorts[port_params->port_id].h_Dev; + break; + case (e_IOC_FM_PORT_TYPE_RX_10G): + h_Port = p_LnxWrpFmDev->rxPorts[port_params->port_id + FM_MAX_NUM_OF_1G_RX_PORTS].h_Dev; + break; + case (e_IOC_FM_PORT_TYPE_OFFLINE_PARSING): + if (port_params->port_id) + { + h_Port = p_LnxWrpFmDev->opPorts[port_params->port_id - 1].h_Dev; + break; + } + default: + XX_Free(port_params); + XX_Free(param); + RETURN_ERROR(MINOR, E_INVALID_SELECTION, NO_MSG); + } + + ((t_FmPcdPlcrProfileParams*)param)->id.newParams.h_FmPort = h_Port; + XX_Free(port_params); + } + + param->id = FM_PCD_PlcrSetProfile(p_LnxWrpFmDev->h_PcdDev, (t_FmPcdPlcrProfileParams*)param); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_plcr_profile_params_t *compat_param; + + compat_param = (ioc_compat_fm_pcd_plcr_profile_params_t *) XX_Malloc( + sizeof(ioc_compat_fm_pcd_plcr_profile_params_t)); + if (!compat_param) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + + compat_copy_fm_pcd_plcr_profile(compat_param, param, COMPAT_K_TO_US); + + if (param->id && !copy_to_user((ioc_compat_fm_pcd_plcr_profile_params_t *) compat_ptr(arg), + compat_param, + sizeof(ioc_compat_fm_pcd_plcr_profile_params_t))) + err = E_OK; + + XX_Free(compat_param); + } + else +#endif + { + if (param->id && !copy_to_user((ioc_fm_pcd_plcr_profile_params_t *)arg, param, sizeof(ioc_fm_pcd_plcr_profile_params_t))) + err = E_OK; + } + + XX_Free(param); + break; + } + +#if defined(CONFIG_COMPAT) + case FM_PCD_IOC_PLCR_DEL_PROFILE_COMPAT: +#endif + case FM_PCD_IOC_PLCR_DEL_PROFILE: + { + ioc_fm_obj_t id; + + memset(&id, 0 , sizeof(ioc_fm_obj_t)); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_obj_t compat_id; + + if (copy_from_user(&compat_id, (ioc_compat_fm_obj_t *) compat_ptr(arg), sizeof(ioc_compat_fm_obj_t))) + break; + + id.obj = compat_ptr(compat_id.obj); + } + else +#endif + { + if (copy_from_user(&id, (ioc_fm_obj_t *) arg, sizeof(ioc_fm_obj_t))) + break; + } + + return FM_PCD_PlcrDeleteProfile(p_LnxWrpFmDev->h_PcdDev, id.obj); + } + +#if defined(CONFIG_COMPAT) + case FM_PCD_IOC_CC_TREE_MODIFY_NEXT_ENGINE_COMPAT: +#endif + case FM_PCD_IOC_CC_TREE_MODIFY_NEXT_ENGINE: + { + ioc_fm_pcd_cc_tree_modify_next_engine_params_t *param; + + ASSERT_COND(sizeof(ioc_fm_pcd_cc_next_engine_params_t) == sizeof(t_FmPcdCcNextEngineParams)); + + param = (ioc_fm_pcd_cc_tree_modify_next_engine_params_t *) XX_Malloc( + sizeof(ioc_fm_pcd_cc_tree_modify_next_engine_params_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_cc_tree_modify_next_engine_params_t *compat_param; + + compat_param = (ioc_compat_fm_pcd_cc_tree_modify_next_engine_params_t *) XX_Malloc( + sizeof(ioc_compat_fm_pcd_cc_tree_modify_next_engine_params_t)); + if (!compat_param) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + + if (copy_from_user(compat_param, (ioc_compat_fm_pcd_cc_tree_modify_next_engine_params_t *) compat_ptr(arg), + sizeof(ioc_compat_fm_pcd_cc_tree_modify_next_engine_params_t))) + { + XX_Free(param); + XX_Free(compat_param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + compat_fm_pcd_cc_tree_modify_next_engine(compat_param, param, COMPAT_US_TO_K); + + XX_Free(compat_param); + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_pcd_cc_tree_modify_next_engine_params_t *)arg, + sizeof(ioc_fm_pcd_cc_tree_modify_next_engine_params_t))) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + } + + err = FM_PCD_CcTreeModifyNextEngine(p_LnxWrpFmDev->h_PcdDev, + param->id, + param->grp_indx, + param->indx, + (t_FmPcdCcNextEngineParams*)(¶m->cc_next_engine_params)); + XX_Free(param); + break; + } + +#if defined(CONFIG_COMPAT) + case FM_PCD_IOC_CC_NODE_MODIFY_NEXT_ENGINE_COMPAT: +#endif + case FM_PCD_IOC_CC_NODE_MODIFY_NEXT_ENGINE: + { + ioc_fm_pcd_cc_node_modify_next_engine_params_t *param; + + ASSERT_COND(sizeof(ioc_fm_pcd_cc_next_engine_params_t) == sizeof(t_FmPcdCcNextEngineParams)); + + param = (ioc_fm_pcd_cc_node_modify_next_engine_params_t *) XX_Malloc( + sizeof(ioc_fm_pcd_cc_node_modify_next_engine_params_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_cc_node_modify_next_engine_params_t *compat_param; + + compat_param = (ioc_compat_fm_pcd_cc_node_modify_next_engine_params_t *) XX_Malloc( + sizeof(ioc_compat_fm_pcd_cc_node_modify_next_engine_params_t)); + if (!compat_param) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + + if (copy_from_user(compat_param, (ioc_compat_fm_pcd_cc_node_modify_next_engine_params_t *) compat_ptr(arg), + sizeof(ioc_compat_fm_pcd_cc_node_modify_next_engine_params_t))) + { + XX_Free(param); + XX_Free(compat_param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + compat_copy_fm_pcd_cc_node_modify_next_engine(compat_param, param, COMPAT_US_TO_K); + + XX_Free(compat_param); + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_pcd_cc_node_modify_next_engine_params_t *)arg, + sizeof(ioc_fm_pcd_cc_node_modify_next_engine_params_t))) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + } + + err = FM_PCD_CcNodeModifyNextEngine(p_LnxWrpFmDev->h_PcdDev, + param->id, + param->key_indx, + (t_FmPcdCcNextEngineParams*)(¶m->cc_next_engine_params)); + XX_Free(param); + break; + } + +#if defined(CONFIG_COMPAT) + case FM_PCD_IOC_CC_NODE_MODIFY_MISS_NEXT_ENGINE_COMPAT: +#endif + case FM_PCD_IOC_CC_NODE_MODIFY_MISS_NEXT_ENGINE: + { + ioc_fm_pcd_cc_node_modify_next_engine_params_t *param; + + ASSERT_COND(sizeof(ioc_fm_pcd_cc_next_engine_params_t) == sizeof(t_FmPcdCcNextEngineParams)); + + param = (ioc_fm_pcd_cc_node_modify_next_engine_params_t *) XX_Malloc( + sizeof(ioc_fm_pcd_cc_node_modify_next_engine_params_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_cc_node_modify_next_engine_params_t *compat_param; + + compat_param = (ioc_compat_fm_pcd_cc_node_modify_next_engine_params_t *) XX_Malloc( + sizeof(ioc_compat_fm_pcd_cc_node_modify_next_engine_params_t)); + if (!compat_param) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + + if (copy_from_user(compat_param, (ioc_compat_fm_pcd_cc_node_modify_next_engine_params_t *) compat_ptr(arg), + sizeof(ioc_compat_fm_pcd_cc_node_modify_next_engine_params_t))) + { + XX_Free(param); + XX_Free(compat_param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + compat_copy_fm_pcd_cc_node_modify_next_engine(compat_param, param, COMPAT_US_TO_K); + + XX_Free(compat_param); + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_pcd_cc_node_modify_next_engine_params_t *) arg, + sizeof(ioc_fm_pcd_cc_node_modify_next_engine_params_t))) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + } + + err = FM_PCD_CcNodeModifyMissNextEngine(p_LnxWrpFmDev->h_PcdDev, param->id, + (t_FmPcdCcNextEngineParams*)(¶m->cc_next_engine_params)); + XX_Free(param); + break; + } + +#if defined(CONFIG_COMPAT) + case FM_PCD_IOC_CC_NODE_REMOVE_KEY_COMPAT: +#endif + case FM_PCD_IOC_CC_NODE_REMOVE_KEY: + { + ioc_fm_pcd_cc_node_remove_key_params_t *param; + + param = (ioc_fm_pcd_cc_node_remove_key_params_t *) XX_Malloc( + sizeof(ioc_fm_pcd_cc_node_remove_key_params_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_cc_node_remove_key_params_t *compat_param; + + compat_param = (ioc_compat_fm_pcd_cc_node_remove_key_params_t *) XX_Malloc( + sizeof(ioc_compat_fm_pcd_cc_node_remove_key_params_t)); + if (!compat_param) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + + if (copy_from_user(compat_param, + (ioc_compat_fm_pcd_cc_node_remove_key_params_t *)compat_ptr(arg), + sizeof(ioc_compat_fm_pcd_cc_node_remove_key_params_t))) + { + XX_Free(param); + XX_Free(compat_param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + param->id = compat_ptr(compat_param->id); + param->key_indx = compat_param->key_indx; + + XX_Free(compat_param); + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_pcd_cc_node_remove_key_params_t *) arg, + sizeof(ioc_fm_pcd_cc_node_remove_key_params_t))) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + } + + err = FM_PCD_CcNodeRemoveKey(p_LnxWrpFmDev->h_PcdDev, param->id, param->key_indx); + XX_Free(param); + break; + } + +#if defined(CONFIG_COMPAT) + case FM_PCD_IOC_CC_NODE_ADD_KEY_COMPAT: +#endif + case FM_PCD_IOC_CC_NODE_ADD_KEY: + { + ioc_fm_pcd_cc_node_modify_key_and_next_engine_params_t *param; + + ASSERT_COND(sizeof(ioc_fm_pcd_cc_key_params_t) == sizeof(t_FmPcdCcKeyParams)); + + param = (ioc_fm_pcd_cc_node_modify_key_and_next_engine_params_t *) XX_Malloc( + sizeof(ioc_fm_pcd_cc_node_modify_key_and_next_engine_params_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_cc_node_modify_key_and_next_engine_params_t *compat_param; + + compat_param = (ioc_compat_fm_pcd_cc_node_modify_key_and_next_engine_params_t *) XX_Malloc( + sizeof(ioc_compat_fm_pcd_cc_node_modify_key_and_next_engine_params_t)); + if (!compat_param) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + + if (copy_from_user(compat_param, + (ioc_compat_fm_pcd_cc_node_modify_key_and_next_engine_params_t *)compat_ptr(arg), + sizeof(ioc_compat_fm_pcd_cc_node_modify_key_and_next_engine_params_t))) + { + XX_Free(param); + XX_Free(compat_param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + compat_copy_fm_pcd_cc_node_modify_key_and_next_engine(compat_param, param, COMPAT_US_TO_K); + + XX_Free(compat_param); + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_pcd_cc_node_modify_key_and_next_engine_params_t *)arg, + sizeof(ioc_fm_pcd_cc_node_modify_key_and_next_engine_params_t))) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + } + + err = FM_PCD_CcNodeAddKey(p_LnxWrpFmDev->h_PcdDev, + param->id, + param->key_indx, + param->key_size, + (t_FmPcdCcKeyParams*)(¶m->key_params)); + XX_Free(param); + break; + } + +#if defined(CONFIG_COMPAT) + case FM_PCD_IOC_CC_NODE_MODIFY_KEY_AND_NEXT_ENGINE_COMPAT: +#endif + case FM_PCD_IOC_CC_NODE_MODIFY_KEY_AND_NEXT_ENGINE: + { + ioc_fm_pcd_cc_node_modify_key_and_next_engine_params_t *param; + + ASSERT_COND(sizeof(ioc_fm_pcd_cc_key_params_t) == sizeof(t_FmPcdCcKeyParams)); + + param = (ioc_fm_pcd_cc_node_modify_key_and_next_engine_params_t *) XX_Malloc( + sizeof(ioc_fm_pcd_cc_node_modify_key_and_next_engine_params_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_cc_node_modify_key_and_next_engine_params_t *compat_param; + + compat_param = (ioc_compat_fm_pcd_cc_node_modify_key_and_next_engine_params_t *) XX_Malloc( + sizeof(ioc_compat_fm_pcd_cc_node_modify_key_and_next_engine_params_t)); + if (!compat_param) + { + XX_Free(compat_param); + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + + if (copy_from_user(compat_param, + (ioc_compat_fm_pcd_cc_node_modify_key_and_next_engine_params_t *)compat_ptr(arg), + sizeof(ioc_compat_fm_pcd_cc_node_modify_key_and_next_engine_params_t))) + { + XX_Free(compat_param); + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + compat_copy_fm_pcd_cc_node_modify_key_and_next_engine(compat_param, param, COMPAT_US_TO_K); + + XX_Free(compat_param); + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_pcd_cc_node_modify_key_and_next_engine_params_t *)arg, + sizeof(ioc_fm_pcd_cc_node_modify_key_and_next_engine_params_t))) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + } + + err = FM_PCD_CcNodeModifyKeyAndNextEngine(p_LnxWrpFmDev->h_PcdDev, + param->id, + param->key_indx, + param->key_size, + (t_FmPcdCcKeyParams*)(¶m->key_params)); + XX_Free(param); + break; + } + +#if defined(CONFIG_COMPAT) + case FM_PCD_IOC_CC_NODE_MODIFY_KEY_COMPAT: +#endif + case FM_PCD_IOC_CC_NODE_MODIFY_KEY: + { + ioc_fm_pcd_cc_node_modify_key_params_t *param = NULL; + uint8_t *key = NULL; + uint8_t *mask = NULL; + + param = (ioc_fm_pcd_cc_node_modify_key_params_t *) XX_Malloc( + sizeof(ioc_fm_pcd_cc_node_modify_key_params_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_cc_node_modify_key_params_t *compat_param = NULL; + compat_param = (ioc_compat_fm_pcd_cc_node_modify_key_params_t *) XX_Malloc( + sizeof(ioc_compat_fm_pcd_cc_node_modify_key_params_t)); + if (!param) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + + if (copy_from_user(compat_param, (ioc_compat_fm_pcd_cc_node_modify_key_params_t *)compat_ptr(arg), + sizeof(ioc_compat_fm_pcd_cc_node_modify_key_params_t))) + { + XX_Free(compat_param); + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + compat_copy_fm_pcd_cc_node_modify_key(compat_param, param, COMPAT_US_TO_K); + + XX_Free(compat_param); + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_pcd_cc_node_modify_key_params_t *)arg, + sizeof(ioc_fm_pcd_cc_node_modify_key_params_t))) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + } + + if (param->p_key) + { + key = (uint8_t *) XX_Malloc(sizeof(uint8_t)*IOC_FM_PCD_MAX_SIZE_OF_KEY); + if (!key) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD key")); + } + memset(key, 0, sizeof(uint8_t)*IOC_FM_PCD_MAX_SIZE_OF_KEY); + + if (copy_from_user(key, param->p_key, param->key_size)) + { + XX_Free(key); + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + param->p_key = key; + } + + if (param->p_mask) + { + mask = (uint8_t *) XX_Malloc(sizeof(uint8_t)*IOC_FM_PCD_MAX_SIZE_OF_KEY); + if (!mask) + { + if (key) + XX_Free(key); + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD mask")); + } + memset(mask, 0, sizeof(uint8_t)*IOC_FM_PCD_MAX_SIZE_OF_KEY); + + if (copy_from_user(mask, param->p_mask, param->key_size)) + { + if (mask) + XX_Free(mask); + if (key) + XX_Free(key); + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + param->p_mask = mask; + } + + err = FM_PCD_CcNodeModifyKey(p_LnxWrpFmDev->h_PcdDev, + param->id, + param->key_indx, + param->key_size, + param->p_key, + param->p_mask); + if (mask) + XX_Free(mask); + if (key) + XX_Free(key); + XX_Free(param); + break; + } + + default: + RETURN_ERROR(MINOR, E_INVALID_SELECTION, ("IOCTL cmd (0x%08x):(0x%02x:0x%02x)!", cmd, _IOC_TYPE(cmd), _IOC_NR(cmd))); + break; + } + + return err; +} + +t_Error LnxwrpFmIOCTL(t_LnxWrpFmDev *p_LnxWrpFmDev, unsigned int cmd, unsigned long arg, bool compat) +{ + t_Error err = E_READ_FAILED; + + DBG(TRACE, ("p_LnxWrpFmDev - 0x%08lx, cmd - 0x%08x, arg - 0x%08lx \n", (uintptr_t)p_LnxWrpFmDev, cmd, arg)); + + switch (cmd) + { + case FM_IOC_SET_PORTS_BANDWIDTH: + { + ioc_fm_port_bandwidth_params *param; + + ASSERT_COND(sizeof(t_FmPortsBandwidthParams) == sizeof(ioc_fm_port_bandwidth_params)); + + param = (ioc_fm_port_bandwidth_params*) XX_Malloc(sizeof(ioc_fm_port_bandwidth_params)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + if (copy_from_user(param, (ioc_fm_port_bandwidth_params*)compat_ptr(arg), sizeof(ioc_fm_port_bandwidth_params))) + { + XX_Free(param); + return err; + } + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_port_bandwidth_params*)arg, sizeof(ioc_fm_port_bandwidth_params))) + { + XX_Free(param); + return err; + } + } + + err = FM_SetPortsBandwidth(p_LnxWrpFmDev->h_Dev, (t_FmPortsBandwidthParams*) param); + XX_Free(param); + return err; + } + + case FM_IOC_GET_REVISION: + { + ioc_fm_revision_info_t *param; + + ASSERT_COND(sizeof(t_FmRevisionInfo) == sizeof(ioc_fm_revision_info_t)); + + param = (ioc_fm_revision_info_t *) XX_Malloc(sizeof(ioc_fm_revision_info_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + + FM_GetRevision(p_LnxWrpFmDev->h_Dev, (t_FmRevisionInfo*)param); + +#if defined(CONFIG_COMPAT) + if (compat) + { + if (copy_to_user((ioc_fm_revision_info_t *)compat_ptr(arg), + param, + sizeof(ioc_fm_revision_info_t))) + err = E_WRITE_FAILED; + else + err = E_OK; + } + else +#endif + { + if (copy_to_user((ioc_fm_revision_info_t *)arg, + param, + sizeof(ioc_fm_revision_info_t))) + err = E_WRITE_FAILED; + else + err = E_OK; + } + + XX_Free(param); + return err; + } + + case FM_IOC_SET_COUNTER: + { + ioc_fm_counters_params_t *param; + + param = (ioc_fm_counters_params_t *) XX_Malloc(sizeof(ioc_fm_counters_params_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + if (copy_from_user(param, (ioc_fm_counters_params_t *)compat_ptr(arg), sizeof(ioc_fm_counters_params_t))) + { + XX_Free(param); + return err; + } + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_counters_params_t *)arg, sizeof(ioc_fm_counters_params_t))) + { + XX_Free(param); + return err; + } + } + + err = FM_ModifyCounter(p_LnxWrpFmDev->h_Dev, param->cnt, param->val); + + XX_Free(param); + return err; + } + + case FM_IOC_GET_COUNTER: + { + ioc_fm_counters_params_t *param; + + param = (ioc_fm_counters_params_t *) XX_Malloc(sizeof(ioc_fm_counters_params_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + if (copy_from_user(param, (ioc_fm_counters_params_t *)compat_ptr(arg), sizeof(ioc_fm_counters_params_t))) + { + XX_Free(param); + return err; + } + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_counters_params_t *)arg, sizeof(ioc_fm_counters_params_t))) + { + XX_Free(param); + return err; + } + } + + param->val = FM_GetCounter(p_LnxWrpFmDev->h_Dev, param->cnt); + +#if defined(CONFIG_COMPAT) + if (compat) + { + if (copy_to_user((ioc_fm_counters_params_t *)compat_ptr(arg), param, sizeof(ioc_fm_counters_params_t))) + err = E_WRITE_FAILED; + } + else +#endif + { + if (copy_to_user((ioc_fm_counters_params_t *)arg, param, sizeof(ioc_fm_counters_params_t))) + err = E_WRITE_FAILED; + } + + XX_Free(param); + return err; + } + + case FM_IOC_FORCE_INTR: + { + ioc_fm_exceptions param; + +#if defined(CONFIG_COMPAT) + if (compat) + { + if (get_user(param, (ioc_fm_exceptions*) compat_ptr(arg))) + break; + } + else +#endif + { + if (get_user(param, (ioc_fm_exceptions*)arg)) + break; + } + + return FM_ForceIntr(p_LnxWrpFmDev->h_Dev, (e_FmExceptions)param); + } + + default: + return LnxwrpFmPcdIOCTL(p_LnxWrpFmDev, cmd, arg, compat); + } + + RETURN_ERROR(MINOR, E_INVALID_OPERATION, ("IOCTL FM")); +} + +t_Error LnxwrpFmPortIOCTL(t_LnxWrpFmPortDev *p_LnxWrpFmPortDev, unsigned int cmd, unsigned long arg, bool compat) +{ + t_Error err = E_READ_FAILED; + DBG(TRACE, ("p_LnxWrpFmPortDev - 0x%08lx, cmd - 0x%08x, arg - 0x%08lx", (uintptr_t)p_LnxWrpFmPortDev, cmd, arg)); + + switch (cmd) + { + case FM_PORT_IOC_DISABLE: + FM_PORT_Disable(p_LnxWrpFmPortDev->h_Dev); + return E_OK; + + case FM_PORT_IOC_ENABLE: + FM_PORT_Enable(p_LnxWrpFmPortDev->h_Dev); + return E_OK; + + case FM_PORT_IOC_SET_ERRORS_ROUTE: + { + ioc_fm_port_frame_err_select_t errs; + +#if defined(CONFIG_COMPAT) + if (compat) + { + if (get_user(errs, (ioc_fm_port_frame_err_select_t*)compat_ptr(arg))) + break; + } + else +#endif + { + if (get_user(errs, (ioc_fm_port_frame_err_select_t*)arg)) + break; + } + + return FM_PORT_SetErrorsRoute(p_LnxWrpFmPortDev->h_Dev, (fmPortFrameErrSelect_t)errs); + } + + case FM_PORT_IOC_SET_RATE_LIMIT: + { + ioc_fm_port_rate_limit_t *param; + + ASSERT_COND(sizeof(t_FmPortRateLimit) == sizeof(ioc_fm_port_rate_limit_t)); + + param = (ioc_fm_port_rate_limit_t *) XX_Malloc(sizeof(ioc_fm_port_rate_limit_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PORT")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + if (copy_from_user(param, (ioc_fm_port_rate_limit_t *)compat_ptr(arg), sizeof(ioc_fm_port_rate_limit_t))) + { + XX_Free(param); + RETURN_ERROR(MAJOR, E_READ_FAILED, NO_MSG); + } + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_port_rate_limit_t *)arg, sizeof(ioc_fm_port_rate_limit_t))) + { + XX_Free(param); + RETURN_ERROR(MAJOR, E_READ_FAILED, NO_MSG); + } + } + + err = FM_PORT_SetRateLimit(p_LnxWrpFmPortDev->h_Dev, (t_FmPortRateLimit *)param); + + XX_Free(param); + return err; + } + + case FM_PORT_IOC_REMOVE_RATE_LIMIT: + FM_PORT_DeleteRateLimit(p_LnxWrpFmPortDev->h_Dev); + return E_OK; + + case FM_PORT_IOC_ALLOC_PCD_FQIDS: + { + ioc_fm_port_pcd_fqids_params_t *param; + + if (!p_LnxWrpFmPortDev->pcd_owner_params.cba) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("No one to listen on this PCD!!!")); + + param = (ioc_fm_port_pcd_fqids_params_t *) XX_Malloc(sizeof(ioc_fm_port_pcd_fqids_params_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PORT")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + if (copy_from_user(param, (ioc_fm_port_pcd_fqids_params_t *)compat_ptr(arg), + sizeof(ioc_fm_port_pcd_fqids_params_t))) + { + XX_Free(param); + return err; + } + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_port_pcd_fqids_params_t *)arg, + sizeof(ioc_fm_port_pcd_fqids_params_t))) + { + XX_Free(param); + return err; + } + } + + if (p_LnxWrpFmPortDev->pcd_owner_params.cba(p_LnxWrpFmPortDev->pcd_owner_params.dev, + param->num_fqids, + param->alignment, + ¶m->base_fqid)) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_INVALID_STATE, ("can't allocate fqids for PCD!!!")); + } + +#if defined(CONFIG_COMPAT) + if (compat) + { + if (copy_to_user((ioc_fm_port_pcd_fqids_params_t *)compat_ptr(arg), + param, sizeof(ioc_fm_port_pcd_fqids_params_t))) + { + XX_Free(param); + RETURN_ERROR(MAJOR, E_WRITE_FAILED, NO_MSG); + } + } + else +#endif + { + if (copy_to_user((ioc_fm_port_pcd_fqids_params_t *)arg, + param, sizeof(ioc_fm_port_pcd_fqids_params_t))) + { + XX_Free(param); + RETURN_ERROR(MAJOR, E_WRITE_FAILED, NO_MSG); + } + } + + XX_Free(param); + return E_OK; + } + + case FM_PORT_IOC_FREE_PCD_FQIDS: + { + uint32_t base_fqid; + + if (!p_LnxWrpFmPortDev->pcd_owner_params.cbf) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("No one to listen on this PCD!!!")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + if (get_user(base_fqid, (uint32_t*) compat_ptr(arg))) + break; + } + else +#endif + { + if (get_user(base_fqid, (uint32_t*)arg)) + break; + } + + if (p_LnxWrpFmPortDev->pcd_owner_params.cbf(p_LnxWrpFmPortDev->pcd_owner_params.dev, base_fqid)) + RETURN_ERROR(MAJOR, E_WRITE_FAILED, NO_MSG); + + return E_OK; + } + +#if defined(CONFIG_COMPAT) + case FM_PORT_IOC_SET_PCD_COMPAT: +#endif + case FM_PORT_IOC_SET_PCD: + { + ioc_fm_port_pcd_params_t *port_pcd_params; + ioc_fm_port_pcd_prs_params_t *port_pcd_prs_params; + ioc_fm_port_pcd_cc_params_t *port_pcd_cc_params; + ioc_fm_port_pcd_kg_params_t *port_pcd_kg_params; + ioc_fm_port_pcd_plcr_params_t *port_pcd_plcr_params; + + long copy_fail = 0; + + ASSERT_COND(sizeof(t_FmPortPcdParams) == sizeof(ioc_fm_port_pcd_params_t)); + + port_pcd_params = (ioc_fm_port_pcd_params_t *) XX_Malloc( + sizeof(ioc_fm_port_pcd_params_t) + + sizeof(ioc_fm_port_pcd_prs_params_t) + + sizeof(ioc_fm_port_pcd_cc_params_t) + + sizeof(ioc_fm_port_pcd_kg_params_t) + + sizeof(ioc_fm_port_pcd_plcr_params_t)); + if (!port_pcd_params) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PORT")); + + port_pcd_prs_params = (ioc_fm_port_pcd_prs_params_t *) (port_pcd_params + 1); + port_pcd_cc_params = (ioc_fm_port_pcd_cc_params_t *) (port_pcd_prs_params + 1); + port_pcd_kg_params = (ioc_fm_port_pcd_kg_params_t *) (port_pcd_cc_params + 1); + port_pcd_plcr_params = (ioc_fm_port_pcd_plcr_params_t *) (port_pcd_kg_params + 1); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_port_pcd_params_t *compat_port_pcd_params; + ioc_fm_port_pcd_prs_params_t *same_port_pcd_prs_params; + ioc_compat_fm_port_pcd_cc_params_t *compat_port_pcd_cc_params; + ioc_compat_fm_port_pcd_kg_params_t *compat_port_pcd_kg_params; + ioc_compat_fm_port_pcd_plcr_params_t *compat_port_pcd_plcr_params; + + compat_port_pcd_params = (ioc_compat_fm_port_pcd_params_t *) XX_Malloc( + sizeof(ioc_compat_fm_port_pcd_params_t) + + sizeof(ioc_fm_port_pcd_prs_params_t) + + sizeof(ioc_compat_fm_port_pcd_cc_params_t) + + sizeof(ioc_compat_fm_port_pcd_kg_params_t) + + sizeof(ioc_compat_fm_port_pcd_plcr_params_t)); + if (!compat_port_pcd_params) + { + XX_Free(port_pcd_params); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PORT")); + } + + same_port_pcd_prs_params = (ioc_fm_port_pcd_prs_params_t *) (compat_port_pcd_params + 1); + compat_port_pcd_cc_params = (ioc_compat_fm_port_pcd_cc_params_t *) (same_port_pcd_prs_params + 1); + compat_port_pcd_kg_params = (ioc_compat_fm_port_pcd_kg_params_t *) (compat_port_pcd_cc_params + 1); + compat_port_pcd_plcr_params = (ioc_compat_fm_port_pcd_plcr_params_t *) (compat_port_pcd_kg_params + 1); + + /* Pseudo-while */ + while (!(copy_fail = copy_from_user(compat_port_pcd_params, + (ioc_compat_fm_port_pcd_params_t *)compat_ptr(arg), + sizeof(ioc_compat_fm_port_pcd_params_t)))) + { + compat_copy_fm_port_pcd(compat_port_pcd_params, port_pcd_params, COMPAT_US_TO_K); + + /* the prs member is the same, no compat structure...memcpy only */ + if (port_pcd_params->p_prs_params && !copy_fail) + { + if(!(copy_fail = copy_from_user(same_port_pcd_prs_params, + port_pcd_params->p_prs_params, + sizeof(ioc_fm_port_pcd_prs_params_t)))) + { + memcpy(port_pcd_prs_params, same_port_pcd_prs_params, sizeof(ioc_fm_port_pcd_prs_params_t)); + port_pcd_params->p_prs_params = port_pcd_prs_params; + } + else + break; + } + + if (port_pcd_params->p_cc_params && !copy_fail) + { + if(!(copy_fail = copy_from_user(compat_port_pcd_cc_params, + port_pcd_params->p_cc_params, + sizeof(ioc_compat_fm_port_pcd_cc_params_t)))) + { + port_pcd_params->p_cc_params = port_pcd_cc_params; + port_pcd_params->p_cc_params->cc_tree_id = compat_get_id2ptr(compat_port_pcd_cc_params->cc_tree_id); + } + else + break; + } + + if (port_pcd_params->p_kg_params && !copy_fail) + { + if(!(copy_fail = copy_from_user(compat_port_pcd_kg_params, + port_pcd_params->p_kg_params, + sizeof(ioc_compat_fm_port_pcd_kg_params_t)))) + { + compat_copy_fm_port_pcd_kg(compat_port_pcd_kg_params, port_pcd_kg_params, COMPAT_US_TO_K); + port_pcd_params->p_kg_params = port_pcd_kg_params; + } + else + break; + } + + if (port_pcd_params->p_plcr_params && !copy_fail) + { + if(!(copy_fail = copy_from_user(compat_port_pcd_plcr_params, + port_pcd_params->p_plcr_params, + sizeof(ioc_compat_fm_port_pcd_plcr_params_t)))) + { + port_pcd_params->p_plcr_params = port_pcd_plcr_params; + port_pcd_params->p_plcr_params->plcr_profile_id = compat_ptr(compat_port_pcd_plcr_params->plcr_profile_id); + } + } + + /* always run once! */ + break; + } + + XX_Free(compat_port_pcd_params); + } + else +#endif + { + /* Pseudo-while */ + while (!(copy_fail = copy_from_user(port_pcd_params, + (ioc_fm_port_pcd_params_t *)arg, + sizeof(ioc_fm_port_pcd_params_t)))) + { + if (port_pcd_params->p_prs_params && !copy_fail) + { + if (!(copy_fail = copy_from_user(port_pcd_prs_params, + port_pcd_params->p_prs_params, + sizeof(ioc_fm_port_pcd_prs_params_t)))) + port_pcd_params->p_prs_params = port_pcd_prs_params; + else + break; + } + + if (port_pcd_params->p_cc_params && !copy_fail) + { + if (!(copy_fail = copy_from_user(port_pcd_cc_params, + port_pcd_params->p_cc_params, + sizeof(ioc_fm_port_pcd_cc_params_t)))) + port_pcd_params->p_cc_params = port_pcd_cc_params; + else + break; + } + + if (port_pcd_params->p_kg_params && !copy_fail) + { + if (!(copy_fail = copy_from_user(port_pcd_kg_params, + port_pcd_params->p_kg_params, + sizeof(ioc_fm_port_pcd_kg_params_t)))) + port_pcd_params->p_kg_params = port_pcd_kg_params; + else + break; + } + + if (port_pcd_params->p_plcr_params && !copy_fail) + { + if (!(copy_fail = copy_from_user(port_pcd_plcr_params, + port_pcd_params->p_plcr_params, + sizeof(ioc_fm_port_pcd_plcr_params_t)))) + port_pcd_params->p_plcr_params = port_pcd_plcr_params; + } + + /* always run once! */ + break; + } + } + + if (!copy_fail) + err = FM_PORT_SetPCD(p_LnxWrpFmPortDev->h_Dev, (t_FmPortPcdParams*) port_pcd_params); + else + err = E_READ_FAILED; + + XX_Free(port_pcd_params); + + return err; + } + + case FM_PORT_IOC_DELETE_PCD: + return FM_PORT_DeletePCD(p_LnxWrpFmPortDev->h_Dev); + +#if defined(CONFIG_COMPAT) + case FM_PORT_IOC_PCD_KG_MODIFY_INITIAL_SCHEME_COMPAT: +#endif + case FM_PORT_IOC_PCD_KG_MODIFY_INITIAL_SCHEME: + { + ioc_fm_pcd_kg_scheme_select_t *param; + + ASSERT_COND(sizeof(t_FmPcdKgSchemeSelect) == sizeof(ioc_fm_pcd_kg_scheme_select_t)); + + param = (ioc_fm_pcd_kg_scheme_select_t *) XX_Malloc( + sizeof(ioc_fm_pcd_kg_scheme_select_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PORT")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_kg_scheme_select_t *compat_param; + + compat_param = (ioc_compat_fm_pcd_kg_scheme_select_t *) XX_Malloc( + sizeof(ioc_compat_fm_pcd_kg_scheme_select_t)); + if (!compat_param){ + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PORT")); + } + + if (copy_from_user(compat_param, + (ioc_compat_fm_pcd_kg_scheme_select_t *) compat_ptr(arg), + sizeof(ioc_compat_fm_pcd_kg_scheme_select_t))) + { + XX_Free(param); + XX_Free(compat_param); + RETURN_ERROR(MAJOR, E_READ_FAILED, NO_MSG); + } + + compat_copy_fm_pcd_kg_scheme_select(compat_param, param, COMPAT_US_TO_K); + + XX_Free(compat_param); + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_pcd_kg_scheme_select_t *)arg, + sizeof(ioc_fm_pcd_kg_scheme_select_t))) + { + XX_Free(param); + RETURN_ERROR(MAJOR, E_READ_FAILED, NO_MSG); + } + } + + err = FM_PORT_PcdKgModifyInitialScheme(p_LnxWrpFmPortDev->h_Dev, (t_FmPcdKgSchemeSelect *)param); + + XX_Free(param); + return err; + } + +#if defined(CONFIG_COMPAT) + case FM_PORT_IOC_PCD_PLCR_MODIFY_INITIAL_PROFILE_COMPAT: +#endif + case FM_PORT_IOC_PCD_PLCR_MODIFY_INITIAL_PROFILE: + { + ioc_fm_obj_t id; + + memset(&id, 0 , sizeof(ioc_fm_obj_t)); +#if defined(CONFIG_COMPAT) + if (compat) { + ioc_compat_fm_obj_t compat_id; + + if (copy_from_user(&compat_id, (ioc_compat_fm_obj_t *) compat_ptr(arg), sizeof(ioc_compat_fm_obj_t))) + break; + + id.obj = compat_ptr(compat_id.obj); + } + else +#endif + { + if (copy_from_user(&id, (ioc_fm_obj_t *) arg, sizeof(ioc_fm_obj_t))) + break; + } + + return FM_PORT_PcdPlcrModifyInitialProfile(p_LnxWrpFmPortDev->h_Dev, id.obj); + } + +#if defined(CONFIG_COMPAT) + case FM_PORT_IOC_PCD_KG_BIND_SCHEMES_COMPAT: +#endif + case FM_PORT_IOC_PCD_KG_BIND_SCHEMES: + { + ioc_fm_pcd_port_schemes_params_t *param; + + ASSERT_COND(sizeof(t_FmPcdPortSchemesParams) == sizeof(ioc_fm_pcd_port_schemes_params_t)); + + param = (ioc_fm_pcd_port_schemes_params_t *) XX_Malloc( + sizeof(ioc_fm_pcd_port_schemes_params_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PORT")); + + memset(¶m, 0 , sizeof(ioc_fm_pcd_port_schemes_params_t)); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_port_schemes_params_t compat_param; + + if (copy_from_user(&compat_param, + (ioc_compat_fm_pcd_port_schemes_params_t *) compat_ptr(arg), + sizeof(ioc_compat_fm_pcd_port_schemes_params_t))) + break; + + compat_copy_fm_pcd_kg_schemes_params(&compat_param, param, COMPAT_US_TO_K); + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_pcd_port_schemes_params_t *) arg, + sizeof(ioc_fm_pcd_port_schemes_params_t))) + { + XX_Free(param); + RETURN_ERROR(MAJOR, E_WRITE_FAILED, NO_MSG); + } + } + + err = FM_PORT_PcdKgBindSchemes(p_LnxWrpFmPortDev->h_Dev, (t_FmPcdPortSchemesParams *)param); + + XX_Free(param); + return err; + } + +#if defined(CONFIG_COMPAT) + case FM_PORT_IOC_PCD_KG_UNBIND_SCHEMES_COMPAT: +#endif + case FM_PORT_IOC_PCD_KG_UNBIND_SCHEMES: + { + ioc_fm_pcd_port_schemes_params_t *param; + + ASSERT_COND(sizeof(t_FmPcdPortSchemesParams) == sizeof(ioc_fm_pcd_port_schemes_params_t)); + + param = (ioc_fm_pcd_port_schemes_params_t *) XX_Malloc( + sizeof(ioc_fm_pcd_port_schemes_params_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PORT")); + + memset(¶m, 0 , sizeof(ioc_fm_pcd_port_schemes_params_t)); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_port_schemes_params_t compat_param; + + if (copy_from_user(&compat_param, + (ioc_compat_fm_pcd_port_schemes_params_t *) compat_ptr(arg), + sizeof(ioc_compat_fm_pcd_port_schemes_params_t))) + break; + + compat_copy_fm_pcd_kg_schemes_params(&compat_param, param, COMPAT_US_TO_K); + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_pcd_port_schemes_params_t *) arg, + sizeof(ioc_fm_pcd_port_schemes_params_t))) + { + XX_Free(param); + RETURN_ERROR(MAJOR, E_WRITE_FAILED, NO_MSG); + } + } + + err = FM_PORT_PcdKgUnbindSchemes(p_LnxWrpFmPortDev->h_Dev, (t_FmPcdPortSchemesParams *)param); + + XX_Free(param); + return err; + } + + case FM_PORT_IOC_PCD_PRS_MODIFY_START_OFFSET: + { + ioc_fm_pcd_prs_start_t *param; + + ASSERT_COND(sizeof(t_FmPcdPrsStart) == sizeof(ioc_fm_pcd_prs_start_t)); + + param = (ioc_fm_pcd_prs_start_t *) XX_Malloc(sizeof(ioc_fm_pcd_prs_start_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PORT")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + if (copy_from_user(param, (ioc_fm_pcd_prs_start_t *)compat_ptr(arg), + sizeof(ioc_fm_pcd_prs_start_t))) + { + XX_Free(param); + RETURN_ERROR(MAJOR, E_WRITE_FAILED, NO_MSG); + } + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_pcd_prs_start_t *)arg, + sizeof(ioc_fm_pcd_prs_start_t))) + { + XX_Free(param); + RETURN_ERROR(MAJOR, E_WRITE_FAILED, NO_MSG); + } + } + err = FM_PORT_PcdPrsModifyStartOffset(p_LnxWrpFmPortDev->h_Dev, (t_FmPcdPrsStart *)param); + + XX_Free(param); + return err; + } + + case FM_PORT_IOC_PCD_PLCR_ALLOC_PROFILES: + { + uint16_t num; + if (get_user(num, (uint16_t*) arg)) + break; + return FM_PORT_PcdPlcrAllocProfiles(p_LnxWrpFmPortDev->h_Dev, num); + } + + case FM_PORT_IOC_PCD_PLCR_FREE_PROFILES: + return FM_PORT_PcdPlcrFreeProfiles(p_LnxWrpFmPortDev->h_Dev); + + case FM_PORT_IOC_DETACH_PCD: + return FM_PORT_DetachPCD(p_LnxWrpFmPortDev->h_Dev); + + case FM_PORT_IOC_ATTACH_PCD: + return FM_PORT_AttachPCD(p_LnxWrpFmPortDev->h_Dev); + +#if defined(CONFIG_COMPAT) + case FM_PORT_IOC_PCD_CC_MODIFY_TREE_COMPAT: +#endif + case FM_PORT_IOC_PCD_CC_MODIFY_TREE: + { + ioc_fm_obj_t id; + + memset(&id, 0 , sizeof(ioc_fm_obj_t)); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_obj_t compat_id; + + if (copy_from_user(&compat_id, (ioc_compat_fm_obj_t *) compat_ptr(arg), sizeof(ioc_compat_fm_obj_t))) + break; + + id.obj = compat_get_id2ptr(compat_id.obj); + } + else +#endif + { + if (copy_from_user(&id, (ioc_fm_obj_t *) arg, sizeof(ioc_fm_obj_t))) + break; + } + + return FM_PORT_PcdCcModifyTree(p_LnxWrpFmPortDev->h_Dev, id.obj); + } + + default: + RETURN_ERROR(MINOR, E_INVALID_SELECTION, ("IOCTL cmd (0x%08x):(0x%02x:0x%02x)!", cmd, _IOC_TYPE(cmd), _IOC_NR(cmd))); + } + + RETURN_ERROR(MINOR, E_INVALID_OPERATION, ("IOCTL port")); +} + +/*****************************************************************************/ +/* API routines for the FM Linux Device */ +/*****************************************************************************/ + +static int fm_open(struct inode *inode, struct file *file) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = NULL; + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev = NULL; + unsigned int major = imajor(inode); + unsigned int minor = iminor(inode); + struct device_node *fm_node; + static struct of_device_id fm_node_of_match[] = { + { .compatible = "fsl,fman", }, + { /* end of list */ }, + }; + + DBG(TRACE, ("Opening minor - %d - ", minor)); + + if (file->private_data != NULL) + return 0; + + /* Get all the FM nodes */ + for_each_matching_node(fm_node, fm_node_of_match) { + struct platform_device *of_dev; + + of_dev = of_find_device_by_node(fm_node); + if (unlikely(of_dev == NULL)) { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("fm id!")); + return -ENXIO; + } + + p_LnxWrpFmDev = (t_LnxWrpFmDev *)fm_bind(&of_dev->dev); + if (p_LnxWrpFmDev->major == major) + break; + fm_unbind((struct fm *)p_LnxWrpFmDev); + p_LnxWrpFmDev = NULL; + } + + if (!p_LnxWrpFmDev) + return -ENODEV; + + if (minor == DEV_FM_MINOR_BASE) + file->private_data = p_LnxWrpFmDev; + else if (minor == DEV_FM_PCD_MINOR_BASE) + file->private_data = p_LnxWrpFmDev; + else { + if (minor == DEV_FM_OH_PORTS_MINOR_BASE) + p_LnxWrpFmPortDev = &p_LnxWrpFmDev->hcPort; + else if ((minor > DEV_FM_OH_PORTS_MINOR_BASE) && (minor < DEV_FM_RX_PORTS_MINOR_BASE)) + p_LnxWrpFmPortDev = &p_LnxWrpFmDev->opPorts[minor-DEV_FM_OH_PORTS_MINOR_BASE-1]; + else if ((minor >= DEV_FM_RX_PORTS_MINOR_BASE) && (minor < DEV_FM_TX_PORTS_MINOR_BASE)) + p_LnxWrpFmPortDev = &p_LnxWrpFmDev->rxPorts[minor-DEV_FM_RX_PORTS_MINOR_BASE]; + else if ((minor >= DEV_FM_TX_PORTS_MINOR_BASE) && (minor < DEV_FM_MAX_MINORS)) + p_LnxWrpFmPortDev = &p_LnxWrpFmDev->txPorts[minor-DEV_FM_TX_PORTS_MINOR_BASE]; + else + return -EINVAL; + + /* if trying to open port, check if it initialized */ + if (!p_LnxWrpFmPortDev->h_Dev) + return -ENODEV; + + p_LnxWrpFmPortDev = (t_LnxWrpFmPortDev *)fm_port_bind(p_LnxWrpFmPortDev->dev); + file->private_data = p_LnxWrpFmPortDev; + fm_unbind((struct fm *)p_LnxWrpFmDev); + } + + if (file->private_data == NULL) + return -ENXIO; + + return 0; +} + +static int fm_close(struct inode *inode, struct file *file) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev; + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev; + unsigned int minor = iminor(inode); + int err = 0; + + DBG(TRACE, ("Closing minor - %d - ", minor)); + + if ((minor == DEV_FM_MINOR_BASE) || + (minor == DEV_FM_PCD_MINOR_BASE)) + { + p_LnxWrpFmDev = (t_LnxWrpFmDev*)file->private_data; + if (!p_LnxWrpFmDev) + return -ENODEV; + fm_unbind((struct fm *)p_LnxWrpFmDev); + } + else if (((minor >= DEV_FM_OH_PORTS_MINOR_BASE) && (minor < DEV_FM_RX_PORTS_MINOR_BASE)) || + ((minor >= DEV_FM_RX_PORTS_MINOR_BASE) && (minor < DEV_FM_TX_PORTS_MINOR_BASE)) || + ((minor >= DEV_FM_TX_PORTS_MINOR_BASE) && (minor < DEV_FM_MAX_MINORS))) + { + p_LnxWrpFmPortDev = (t_LnxWrpFmPortDev*)file->private_data; + if (!p_LnxWrpFmPortDev) + return -ENODEV; + fm_port_unbind((struct fm_port *)p_LnxWrpFmPortDev); + } + + return err; +} + +static int fm_ioctls(unsigned int minor, struct file *file, unsigned int cmd, unsigned long arg, bool compat) +{ + DBG(TRACE, ("IOCTL minor - %u, cmd - 0x%08x, arg - 0x%08lx \n", minor, cmd, arg)); + + if ((minor == DEV_FM_MINOR_BASE) || + (minor == DEV_FM_PCD_MINOR_BASE)) + { + t_LnxWrpFmDev *p_LnxWrpFmDev = ((t_LnxWrpFmDev*)file->private_data); + if (!p_LnxWrpFmDev) + return -ENODEV; + if (LnxwrpFmIOCTL(p_LnxWrpFmDev, cmd, arg, compat)) + return -EFAULT; + } + else if (((minor >= DEV_FM_OH_PORTS_MINOR_BASE) && (minor < DEV_FM_RX_PORTS_MINOR_BASE)) || + ((minor >= DEV_FM_RX_PORTS_MINOR_BASE) && (minor < DEV_FM_TX_PORTS_MINOR_BASE)) || + ((minor >= DEV_FM_TX_PORTS_MINOR_BASE) && (minor < DEV_FM_MAX_MINORS))) + { + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev = ((t_LnxWrpFmPortDev*)file->private_data); + if (!p_LnxWrpFmPortDev) + return -ENODEV; + if (LnxwrpFmPortIOCTL(p_LnxWrpFmPortDev, cmd, arg, compat)) + return -EFAULT; + } + else + { + REPORT_ERROR(MINOR, E_INVALID_VALUE, ("minor")); + return -ENODEV; + } + + return 0; +} + +#ifdef CONFIG_COMPAT +static long fm_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + unsigned int minor = iminor(file->f_path.dentry->d_inode); + long res; + + fm_mutex_lock(); + res = fm_ioctls(minor, file, cmd, arg, true); + fm_mutex_unlock(); + + return res; +} +#endif + +static long fm_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + unsigned int minor = iminor(file->f_path.dentry->d_inode); + long res; + + fm_mutex_lock(); + res = fm_ioctls(minor, file, cmd, arg, false); + fm_mutex_unlock(); + + return res; +} + +/* Globals for FM character device */ +struct file_operations fm_fops = +{ + .owner = THIS_MODULE, + .unlocked_ioctl = fm_ioctl, +#ifdef CONFIG_COMPAT + .compat_ioctl = fm_compat_ioctl, +#endif + .open = fm_open, + .release = fm_close, +}; --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_ioctls_fm_compat.c +++ linux-3.13.0/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_ioctls_fm_compat.c @@ -0,0 +1,789 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 lnxwrp_fm_compat_ioctls.c + + @Description FM PCD compat functions + +*/ + +#if !defined(CONFIG_COMPAT) +#error "missing COMPAT layer..." +#endif + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "part_ext.h" +#include "fm_ioctls.h" +#include "fm_pcd_ioctls.h" +#include "fm_port_ioctls.h" +#include "lnxwrp_ioctls_fm_compat.h" + +/* debug dump */ +#if 0 +static void hex_dump(void * p_addr, unsigned int size) +{ + int i; + + for(i=0; i ", p);*/ + + if(!p) + return 0; + + for(k=1; k < COMPAT_PTR2ID_ARRAY_MAX; k++) + if(compat_ptr2id_array[k] == NULL) + { + compat_ptr2id_array[k] = p; + /*printk("0x%08x\n", k | COMPAT_PTR2ID_WATERMARK);*/ + return k | COMPAT_PTR2ID_WATERMARK; + } + + return 0; +} + +compat_uptr_t compat_get_ptr2id(void *p) +{ + compat_uptr_t k; + + /*printk("\ncompat_get_ptr2id(%p) -> ", p);*/ + + for(k=1; k < COMPAT_PTR2ID_ARRAY_MAX; k++) + if(compat_ptr2id_array[k] == p) { + /*printk("0x%08x\n", k | COMPAT_PTR2ID_WATERMARK);*/ + return k | COMPAT_PTR2ID_WATERMARK; + } + + return 0; +} + +void *compat_get_id2ptr(compat_uptr_t comp) +{ + + /*printk("\ncompat_get_id2ptr(0x%08x) -> ", comp);*/ + + if((COMPAT_PTR2ID_WM_MASK & comp) != COMPAT_PTR2ID_WATERMARK) { + /*printk("Error, invalid watermark!\n\n"); + dump_stack();*/ + return compat_ptr(comp); + } + + comp &= ~COMPAT_PTR2ID_WM_MASK; + + if((0 < comp) && (comp < COMPAT_PTR2ID_ARRAY_MAX) && (compat_ptr2id_array[comp] != NULL)) { + /*printk("%p\n", compat_ptr2id_array[comp]);*/ + return compat_ptr2id_array[comp]; + } + return NULL; +} +/* } maping kernel pointers w/ UserSpace id's */ + +static inline void compat_copy_fm_pcd_plcr_next_engine( + ioc_compat_fm_pcd_plcr_next_engine_params_u *compat_param, + ioc_fm_pcd_plcr_next_engine_params_u *param, + ioc_fm_pcd_engine next_engine, + uint8_t compat) +{ + switch (next_engine) + { + case e_IOC_FM_PCD_PLCR: + if (compat) + param->p_profile = compat_ptr(compat_param->p_profile); + else + compat_param->p_profile = ptr_to_compat(param->p_profile); + break; + + case e_IOC_FM_PCD_KG: + if (compat) + param->p_direct_scheme = compat_ptr(compat_param->p_direct_scheme); + else + compat_param->p_direct_scheme = ptr_to_compat(param->p_direct_scheme); + break; + + default: + if (compat) + param->action = compat_param->action; + else + compat_param->action = param->action; + } +} + +void compat_copy_fm_pcd_plcr_profile( + ioc_compat_fm_pcd_plcr_profile_params_t *compat_param, + ioc_fm_pcd_plcr_profile_params_t *param, + uint8_t compat) +{ + if (compat) + { + param->modify = compat_param->modify; + + /* profile_select */ + if (!compat_param->modify) + { + param->profile_select.new_params.profile_type = + compat_param->profile_select.new_params.profile_type; + param->profile_select.new_params.p_port = + compat_ptr(compat_param->profile_select.new_params.p_port); + param->profile_select.new_params.relative_profile_id = + compat_param->profile_select.new_params.relative_profile_id; + } + else + param->profile_select.p_profile = + compat_ptr(compat_param->profile_select.p_profile); + + param->alg_selection = compat_param->alg_selection; + param->color_mode = compat_param->color_mode; + + /* both parameters in the union has the same size, so memcpy works */ + memcpy(¶m->color, &compat_param->color, sizeof(param->color)); + + memcpy(¶m->non_passthrough_alg_param, &compat_param->non_passthrough_alg_param, sizeof(ioc_fm_pcd_plcr_non_passthrough_alg_param_t)); + + param->next_engine_on_green = compat_param->next_engine_on_green; + param->next_engine_on_yellow = compat_param->next_engine_on_yellow; + param->next_engine_on_red = compat_param->next_engine_on_red; + + param->trap_profile_on_flow_A = compat_param->trap_profile_on_flow_A; + param->trap_profile_on_flow_B = compat_param->trap_profile_on_flow_B; + param->trap_profile_on_flow_C = compat_param->trap_profile_on_flow_C; + + param->id = compat_ptr(compat_param->id); + } + else + { + compat_param->modify = param->modify; + + /* profile_select */ + if(!param->modify){ + compat_param->profile_select.new_params.profile_type = + param->profile_select.new_params.profile_type; + compat_param->profile_select.new_params.p_port = + ptr_to_compat(param->profile_select.new_params.p_port); + compat_param->profile_select.new_params.relative_profile_id = + param->profile_select.new_params.relative_profile_id; + } + else + compat_param->profile_select.p_profile = + ptr_to_compat(param->profile_select.p_profile); + + compat_param->alg_selection = param->alg_selection; + compat_param->color_mode = param->color_mode; + + /* both parameters in the union has the same size, so memcpy works */ + memcpy(&compat_param->color, ¶m->color, sizeof(compat_param->color)); + + memcpy(&compat_param->non_passthrough_alg_param, ¶m->non_passthrough_alg_param, sizeof(ioc_fm_pcd_plcr_non_passthrough_alg_param_t)); + + compat_param->next_engine_on_green = param->next_engine_on_green; + compat_param->next_engine_on_yellow = param->next_engine_on_yellow; + compat_param->next_engine_on_red = param->next_engine_on_red; + + compat_param->trap_profile_on_flow_A = param->trap_profile_on_flow_A; + compat_param->trap_profile_on_flow_B = param->trap_profile_on_flow_B; + compat_param->trap_profile_on_flow_C = param->trap_profile_on_flow_C; + + compat_param->id = ptr_to_compat(param->id); + } + + compat_copy_fm_pcd_plcr_next_engine(&compat_param->params_on_green, + ¶m->params_on_green, param->next_engine_on_green, compat); + + compat_copy_fm_pcd_plcr_next_engine(&compat_param->params_on_yellow, + ¶m->params_on_yellow, param->next_engine_on_yellow, compat); + + compat_copy_fm_pcd_plcr_next_engine(&compat_param->params_on_red, + ¶m->params_on_red, param->next_engine_on_red, compat); +} + +static inline void compat_copy_fm_pcd_cc_next_kg( + ioc_compat_fm_pcd_cc_next_kg_params_t *compat_param, + ioc_fm_pcd_cc_next_kg_params_t *param, + uint8_t compat) +{ + if (compat) + { + param->new_fqid = compat_param->new_fqid; + param->override_fqid = compat_param->override_fqid; + param->p_direct_scheme = compat_ptr(compat_param->p_direct_scheme); + } + else + { + compat_param->new_fqid = param->new_fqid; + compat_param->override_fqid = param->override_fqid; + compat_param->p_direct_scheme = ptr_to_compat(param->p_direct_scheme); + } +} + +static inline void compat_copy_fm_pcd_cc_next_cc( + ioc_compat_fm_pcd_cc_next_cc_params_t *compat_param, + ioc_fm_pcd_cc_next_cc_params_t *param, + uint8_t compat) +{ + if (compat) + param->cc_node_id = compat_get_id2ptr(compat_param->cc_node_id); + else + compat_param->cc_node_id = compat_get_ptr2id(param->cc_node_id); +} + +static inline void compat_copy_fm_pcd_cc_next_engine( + ioc_compat_fm_pcd_cc_next_engine_params_t *compat_param, + ioc_fm_pcd_cc_next_engine_params_t *param, + uint8_t compat) +{ + if (compat) + { + param->next_engine = compat_param->next_engine; + + switch (compat_param->next_engine) + { + case e_IOC_FM_PCD_KG: + compat_copy_fm_pcd_cc_next_kg(&compat_param->params.kg_params, ¶m->params.kg_params, compat); + break; + case e_IOC_FM_PCD_CC: + compat_copy_fm_pcd_cc_next_cc(&compat_param->params.cc_params, ¶m->params.cc_params, compat); + break; + default: + memcpy(¶m->params, &compat_param->params, sizeof(param->params)); + break; + } +#ifdef FM_PCD_CC_MANIP + param->p_manip = compat_ptr(compat_param->p_manip); +#endif + } + else + { + compat_param->next_engine = param->next_engine; + + switch (compat_param->next_engine) + { + case e_IOC_FM_PCD_KG: + compat_copy_fm_pcd_cc_next_kg(&compat_param->params.kg_params, ¶m->params.kg_params, compat); + break; + case e_IOC_FM_PCD_CC: + compat_copy_fm_pcd_cc_next_cc(&compat_param->params.cc_params, ¶m->params.cc_params, compat); + break; + default: + memcpy(&compat_param->params, ¶m->params, sizeof(compat_param->params)); + break; + } + +#ifdef FM_PCD_CC_MANIP + compat_param->p_manip = ptr_to_compat(param->p_manip); +#endif + } +} + +void compat_copy_fm_pcd_cc_key( + ioc_compat_fm_pcd_cc_key_params_t *compat_param, + ioc_fm_pcd_cc_key_params_t *param, + uint8_t compat) +{ + if (compat) + { + param->p_key = compat_ptr(compat_param->p_key); + param->p_mask = compat_ptr(compat_param->p_mask); + } + else + { + compat_param->p_key = ptr_to_compat(param->p_key); + compat_param->p_mask = ptr_to_compat(param->p_mask); + } + + compat_copy_fm_pcd_cc_next_engine( + &compat_param->cc_next_engine_params, + ¶m->cc_next_engine_params, + compat); +} + +void compat_copy_fm_pcd_cc_node_modify_key_and_next_engine( + ioc_compat_fm_pcd_cc_node_modify_key_and_next_engine_params_t *compat_param, + ioc_fm_pcd_cc_node_modify_key_and_next_engine_params_t *param, + uint8_t compat) +{ + if (compat) + { + param->id = compat_ptr(compat_param->id); + param->key_indx = compat_param->key_indx; + param->key_size = compat_param->key_indx; + compat_copy_fm_pcd_cc_key( + &compat_param->key_params, + ¶m->key_params, + compat); + } + else + { + compat_param->id = ptr_to_compat(param->id); + compat_param->key_indx = param->key_indx; + compat_param->key_size = param->key_indx; + compat_copy_fm_pcd_cc_key( + &compat_param->key_params, + ¶m->key_params, + compat); + } +} + +void compat_copy_fm_pcd_cc_node_modify_next_engine( + ioc_compat_fm_pcd_cc_node_modify_next_engine_params_t *compat_param, + ioc_fm_pcd_cc_node_modify_next_engine_params_t *param, + uint8_t compat) +{ + if (compat) + { + param->id = compat_ptr(compat_param->id); + param->key_indx = compat_param->key_indx; + param->key_size = compat_param->key_size; + } + else + { + compat_param->id = ptr_to_compat(param->id); + compat_param->key_indx = param->key_indx; + compat_param->key_size = param->key_size; + } + + compat_copy_fm_pcd_cc_next_engine( + &compat_param->cc_next_engine_params, + ¶m->cc_next_engine_params, + compat); +} + +void compat_fm_pcd_cc_tree_modify_next_engine( + ioc_compat_fm_pcd_cc_tree_modify_next_engine_params_t *compat_param, + ioc_fm_pcd_cc_tree_modify_next_engine_params_t *param, + uint8_t compat) +{ + if (compat) + { + param->id = compat_ptr(compat_param->id); + param->grp_indx = compat_param->grp_indx; + param->indx = compat_param->indx; + } + else + { + compat_param->id = ptr_to_compat(param->id); + compat_param->grp_indx = param->grp_indx; + compat_param->indx = param->indx; + } + + compat_copy_fm_pcd_cc_next_engine( + &compat_param->cc_next_engine_params, + ¶m->cc_next_engine_params, + compat); +} + +void compat_copy_fm_pcd_cc_grp( + ioc_compat_fm_pcd_cc_grp_params_t *compat_param, + ioc_fm_pcd_cc_grp_params_t *param, + uint8_t compat) +{ + int k; + + if (compat) + { + param->num_of_distinction_units = compat_param->num_of_distinction_units; + memcpy(param->unit_ids, compat_param->unit_ids, IOC_FM_PCD_MAX_NUM_OF_CC_UNITS); + } + else + { + compat_param->num_of_distinction_units = param->num_of_distinction_units; + memcpy(compat_param->unit_ids, param->unit_ids, IOC_FM_PCD_MAX_NUM_OF_CC_UNITS); + } + + for (k=0; k < IOC_FM_PCD_MAX_NUM_OF_CC_ENTRIES_IN_GRP; k++) + compat_copy_fm_pcd_cc_next_engine( + &compat_param->next_engine_per_entries_in_grp[k], + ¶m->next_engine_per_entries_in_grp[k], + compat); +} + +void compat_copy_fm_pcd_cc_tree( + ioc_compat_fm_pcd_cc_tree_params_t *compat_param, + ioc_fm_pcd_cc_tree_params_t *param, + uint8_t compat) +{ + int k; + + if (compat) + { + param->net_env_id = compat_ptr(compat_param->net_env_id); + param->num_of_groups = compat_param->num_of_groups; + + for (k=0; k < IOC_FM_PCD_MAX_NUM_OF_CC_GROUPS; k++) + compat_copy_fm_pcd_cc_grp( + &compat_param->fm_pcd_cc_group_params[k], + ¶m->fm_pcd_cc_group_params[k], + compat); + param->id = compat_ptr(compat_param->id); + } + else + { + compat_param->net_env_id = ptr_to_compat(param->net_env_id); + compat_param->num_of_groups = param->num_of_groups; + for (k=0; k < IOC_FM_PCD_MAX_NUM_OF_CC_GROUPS; k++) + compat_copy_fm_pcd_cc_grp( + &compat_param->fm_pcd_cc_group_params[k], + ¶m->fm_pcd_cc_group_params[k], + compat); + compat_param->id = ptr_to_compat(param->id); + } +} + +void compat_fm_pcd_prs_sw( + ioc_compat_fm_pcd_prs_sw_params_t *compat_param, + ioc_fm_pcd_prs_sw_params_t *param, + uint8_t compat) +{ + if (compat) + { + param->override = compat_param->override; + param->size = compat_param->size; + param->base = compat_param->base; + param->p_code = compat_ptr(compat_param->p_code); + memcpy(param->sw_prs_data_params,compat_param->sw_prs_data_params,IOC_FM_PCD_PRS_NUM_OF_HDRS*sizeof(uint32_t)); + param->num_of_labels = compat_param->num_of_labels; + memcpy(param->labels_table,compat_param->labels_table,IOC_FM_PCD_PRS_NUM_OF_LABELS*sizeof(ioc_fm_pcd_prs_label_params_t)); + return; + } + + WARN(1, "\n\nFMD: fatal error, feature not implemented!\n\n"); +} + +void compat_copy_fm_pcd_kg_scheme( + ioc_compat_fm_pcd_kg_scheme_params_t *compat_param, + ioc_fm_pcd_kg_scheme_params_t *param, + uint8_t compat) +{ + if (compat) + { + param->modify = compat_param->modify; + + /* scm_id */ + if(compat_param->modify) + param->scm_id.scheme_id = compat_ptr(compat_param->scm_id.scheme_id); + else + param->scm_id.relative_scheme_id = compat_param->scm_id.relative_scheme_id; + + param->always_direct = compat_param->always_direct; + /* netEnvParams */ + param->netEnvParams.net_env_id = compat_ptr(compat_param->netEnvParams.net_env_id); + param->netEnvParams.num_of_distinction_units = compat_param->netEnvParams.num_of_distinction_units; + memcpy(param->netEnvParams.unit_ids, + compat_param->netEnvParams.unit_ids, + IOC_FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS); + + param->use_hash = compat_param->use_hash; + memcpy(¶m->key_extract_and_hash_params, + &compat_param->key_extract_and_hash_params, + sizeof(ioc_fm_pcd_kg_key_extract_and_hash_params_t)); + param->bypass_fqid_generation = compat_param->bypass_fqid_generation; + param->base_fqid = compat_param->base_fqid; + param->numOfUsedExtractedOrs = compat_param->numOfUsedExtractedOrs; + memcpy(param->extracted_ors, compat_param->extracted_ors, IOC_FM_PCD_KG_NUM_OF_GENERIC_REGS * sizeof(ioc_fm_pcd_kg_extracted_or_params_t)); + param->next_engine = compat_param->next_engine; + + /* kg_next_engine_params */ + if(param->next_engine == e_IOC_FM_PCD_CC){ + param->kg_next_engine_params.cc.tree_id = compat_get_id2ptr(compat_param->kg_next_engine_params.cc.tree_id); + param->kg_next_engine_params.cc.grp_id = compat_param->kg_next_engine_params.cc.grp_id; + param->kg_next_engine_params.cc.plcr_next = compat_param->kg_next_engine_params.cc.plcr_next; + param->kg_next_engine_params.cc.bypass_plcr_profile_generation = compat_param->kg_next_engine_params.cc.bypass_plcr_profile_generation; + memcpy(¶m->kg_next_engine_params.cc.plcr_profile, + &compat_param->kg_next_engine_params.cc.plcr_profile, + sizeof(ioc_fm_pcd_kg_plcr_profile_t)); + } + else + memcpy(¶m->kg_next_engine_params, + &compat_param->kg_next_engine_params, + sizeof(param->kg_next_engine_params)); + + memcpy(¶m->scheme_counter, &compat_param->scheme_counter, sizeof(ioc_fm_pcd_kg_scheme_counter_t)); + param->id = compat_ptr(compat_param->id); + } + else + { + compat_param->modify = param->modify; + + /* scm_id */ + if(param->modify) + compat_param->scm_id.scheme_id = ptr_to_compat(param->scm_id.scheme_id); + else + compat_param->scm_id.relative_scheme_id = param->scm_id.relative_scheme_id; + + compat_param->always_direct = param->always_direct; + + /* netEnvParams */ + compat_param->netEnvParams.net_env_id = ptr_to_compat(param->netEnvParams.net_env_id); + compat_param->netEnvParams.num_of_distinction_units = param->netEnvParams.num_of_distinction_units; + memcpy(compat_param->netEnvParams.unit_ids, param->netEnvParams.unit_ids, IOC_FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS); + + compat_param->use_hash = param->use_hash; + memcpy(&compat_param->key_extract_and_hash_params, ¶m->key_extract_and_hash_params, sizeof(ioc_fm_pcd_kg_key_extract_and_hash_params_t)); + compat_param->bypass_fqid_generation = param->bypass_fqid_generation; + compat_param->base_fqid = param->base_fqid; + compat_param->numOfUsedExtractedOrs = param->numOfUsedExtractedOrs; + memcpy(compat_param->extracted_ors, param->extracted_ors, IOC_FM_PCD_KG_NUM_OF_GENERIC_REGS * sizeof(ioc_fm_pcd_kg_extracted_or_params_t)); + compat_param->next_engine = param->next_engine; + + /* kg_next_engine_params */ + if(compat_param->next_engine == e_IOC_FM_PCD_CC){ + compat_param->kg_next_engine_params.cc.tree_id = compat_get_ptr2id(param->kg_next_engine_params.cc.tree_id); + compat_param->kg_next_engine_params.cc.grp_id = param->kg_next_engine_params.cc.grp_id; + compat_param->kg_next_engine_params.cc.plcr_next = param->kg_next_engine_params.cc.plcr_next; + compat_param->kg_next_engine_params.cc.bypass_plcr_profile_generation = param->kg_next_engine_params.cc.bypass_plcr_profile_generation; + memcpy(&compat_param->kg_next_engine_params.cc.plcr_profile, ¶m->kg_next_engine_params.cc.plcr_profile, sizeof(ioc_fm_pcd_kg_plcr_profile_t)); + } + else + memcpy(¶m->kg_next_engine_params, &compat_param->kg_next_engine_params, sizeof(compat_param->kg_next_engine_params)); + + memcpy(&compat_param->scheme_counter, ¶m->scheme_counter, sizeof(ioc_fm_pcd_kg_scheme_counter_t)); + compat_param->id = ptr_to_compat(param->id); + } +} + +void compat_copy_fm_pcd_kg_scheme_select( + ioc_compat_fm_pcd_kg_scheme_select_t *compat_param, + ioc_fm_pcd_kg_scheme_select_t *param, + uint8_t compat) +{ + if (compat){ + param->direct = compat_param->direct; + param->scheme_id = compat_ptr(compat_param->direct); + } + else { + printk(" %s:%u feature not implemented... \n", __func__, __LINE__); + } +} + +void compat_copy_fm_pcd_kg_schemes_params( + ioc_compat_fm_pcd_port_schemes_params_t *compat_param, + ioc_fm_pcd_port_schemes_params_t *param, + uint8_t compat) +{ + int k; + + if (compat) { + param->num_of_schemes = compat_param->num_of_schemes; + for(k=0; k < IOC_FM_PCD_KG_NUM_OF_SCHEMES; k++) + param->scheme_ids[k] = compat_ptr(compat_param->schemes_ids[k]); + } + else { + printk(" %s:%u feature not implemented... \n", __func__, __LINE__); + } +} + +void compat_copy_fm_port_pcd_kg( + ioc_compat_fm_port_pcd_kg_params_t *compat_param, + ioc_fm_port_pcd_kg_params_t *param, + uint8_t compat) +{ + if (compat){ + uint8_t k; + param->num_of_schemes = compat_param->num_of_schemes; + for(k=0;kschemes_ids[k] = compat_ptr(compat_param->schemes_ids[k]); + param->direct_scheme = compat_param->direct_scheme; + param->direct_scheme_id = compat_ptr(compat_param->direct_scheme_id); + } + else { + printk(" %s:%u feature not implemented... \n", __func__, __LINE__);; + } +} + +void compat_copy_fm_port_pcd( + ioc_compat_fm_port_pcd_params_t *compat_param, + ioc_fm_port_pcd_params_t *param, + uint8_t compat) +{ + if (compat){ + param->pcd_support = compat_param->pcd_support; + param->net_env_id = compat_ptr(compat_param->net_env_id); + param->p_prs_params = compat_ptr(compat_param->p_prs_params); /* same structure */ + param->p_cc_params = compat_ptr(compat_param->p_cc_params); + param->p_kg_params = compat_ptr(compat_param->p_kg_params); + param->p_plcr_params = compat_ptr(compat_param->p_plcr_params); + } + else { + compat_param->pcd_support = param->pcd_support; + compat_param->net_env_id = ptr_to_compat(param->net_env_id); + compat_param->p_prs_params = ptr_to_compat(param->p_prs_params); /* same structure */ + compat_param->p_cc_params = ptr_to_compat(param->p_cc_params); + compat_param->p_kg_params = ptr_to_compat(param->p_kg_params); + compat_param->p_plcr_params = ptr_to_compat(param->p_plcr_params); + } +} + +void compat_copy_fm_pcd_net_env( + ioc_compat_fm_pcd_net_env_params_t *compat_param, + ioc_fm_pcd_net_env_params_t *param, + uint8_t compat) +{ + if (compat) + { + param->num_of_distinction_units = compat_param->num_of_distinction_units; + memcpy(param->units, compat_param->units, sizeof(ioc_fm_pcd_distinction_unit_t)*IOC_FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS); + param->id = compat_ptr(compat_param->id); + } + else + { + compat_param->num_of_distinction_units = param->num_of_distinction_units; + memcpy(compat_param->units, param->units, sizeof(ioc_fm_pcd_distinction_unit_t)*IOC_FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS); + compat_param->id = ptr_to_compat(param->id); + } +} + +void compat_copy_fm_pcd_cc_node_modify_key( + ioc_compat_fm_pcd_cc_node_modify_key_params_t *compat_param, + ioc_fm_pcd_cc_node_modify_key_params_t *param, + uint8_t compat) +{ + if (compat) + { + param->id = compat_ptr(compat_param->id); + param->key_indx = compat_param->key_indx; + param->key_size = compat_param->key_size; + param->p_key = (uint8_t *)compat_ptr(compat_param->p_key); + param->p_mask = (uint8_t *)compat_ptr(compat_param->p_mask); + } + else + { + compat_param->id = ptr_to_compat(param->id); + compat_param->key_indx = param->key_indx; + compat_param->key_size = param->key_size; + compat_param->p_key = ptr_to_compat((void *)param->p_key); + compat_param->p_mask = ptr_to_compat((void *)param->p_mask); + } +} + +void compat_copy_keys( + ioc_compat_keys_params_t *compat_param, + ioc_keys_params_t *param, + uint8_t compat) +{ + int k = 0; + if (compat){ + param->num_of_keys = compat_param->num_of_keys; + param->key_size = compat_param->key_size; + + for(k=0;kkey_params[k], + ¶m->key_params[k], + compat); + + } + else { + + compat_param->num_of_keys = param->num_of_keys; + compat_param->key_size = param->key_size; + + for(k=0;kkey_params[k], + ¶m->key_params[k], + compat); + } + + compat_copy_fm_pcd_cc_next_engine( + &compat_param->cc_next_engine_params_for_miss, + ¶m->cc_next_engine_params_for_miss, + compat); + +} + +void compat_copy_fm_pcd_cc_node( + ioc_compat_fm_pcd_cc_node_params_t *compat_param, + ioc_fm_pcd_cc_node_params_t *param, + uint8_t compat) +{ + if (compat) + { + /* no pointer inside, so sizeof US and KS are the same - memcpy is ok */ + memcpy(¶m->extract_cc_params, &compat_param->extract_cc_params, sizeof(ioc_fm_pcd_extract_entry_t)); + + compat_copy_keys(&compat_param->keys_params, ¶m->keys_params, compat); + + param->id = compat_get_id2ptr(compat_param->id); + } + else + { + /* no pointer inside, so sizeof US and KS are the same - memcpy is ok */ + memcpy(&compat_param->extract_cc_params, ¶m->extract_cc_params, sizeof(ioc_fm_pcd_extract_entry_t)); + + compat_copy_keys(&compat_param->keys_params, ¶m->keys_params, compat); + + compat_param->id = ptr_to_compat(param->id); + } +} + --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_ioctls_fm_compat.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_ioctls_fm_compat.h @@ -0,0 +1,379 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 lnxwrp_ioctls_fm_compat.h + + @Description FM PCD compat structures definition. + +*/ + +#ifndef __FM_COMPAT_IOCTLS_H +#define __FM_COMPAT_IOCTLS_H + +#include + +#define COMPAT_K_TO_US 0 /* copy from Kernel to User */ +#define COMPAT_US_TO_K 1 /* copy from User to Kernel */ + +#define COMPAT_COPY_K2US(dest, src, type) compat_copy_##type(src, dest, 0) +#define COMPAT_COPY_US2K(dest, src, type) compat_copy_##type(dest, src, 1) + +/* maping kernel pointers w/ UserSpace id's { */ +/* Because compat_ptr(ptr_to_compat(X)) != X, this way we cannot exchange pointers + back and forth (US - KS). compat_ptr is a cast and pointers are broken. */ +#define COMPAT_PTR2ID_ARRAY_MAX (256+1) /* first location is not used */ +#define COMPAT_PTR2ID_WATERMARK 0xface0000 +#define COMPAT_PTR2ID_WM_MASK 0xffff0000 + +void compat_del_ptr2id(void *p); +compat_uptr_t compat_add_ptr2id(void *p); +compat_uptr_t compat_get_ptr2id(void *p); +void *compat_get_id2ptr(compat_uptr_t comp); +/* } maping kernel pointers w/ UserSpace id's */ + +/* pcd compat structures { */ +typedef struct ioc_compat_fm_pcd_cc_node_remove_key_params_t { + compat_uptr_t id; + uint8_t key_indx; +} ioc_compat_fm_pcd_cc_node_remove_key_params_t; + +typedef union ioc_compat_fm_pcd_plcr_next_engine_params_u { + ioc_fm_pcd_done_action action; + compat_uptr_t p_profile; + compat_uptr_t p_direct_scheme; +} ioc_compat_fm_pcd_plcr_next_engine_params_u; + +typedef struct ioc_compat_fm_pcd_plcr_profile_params_t { + bool modify; + union { + struct { + ioc_fm_pcd_profile_type_selection profile_type; + compat_uptr_t p_port; + uint16_t relative_profile_id; + } new_params; + compat_uptr_t p_profile; + } profile_select; + ioc_fm_pcd_plcr_algorithm_selection alg_selection; + ioc_fm_pcd_plcr_color_mode color_mode; + + union { + ioc_fm_pcd_plcr_color dflt_color; + ioc_fm_pcd_plcr_color override; + } color; + + ioc_fm_pcd_plcr_non_passthrough_alg_param_t non_passthrough_alg_param; + + ioc_fm_pcd_engine next_engine_on_green; + ioc_compat_fm_pcd_plcr_next_engine_params_u params_on_green; + + ioc_fm_pcd_engine next_engine_on_yellow; + ioc_compat_fm_pcd_plcr_next_engine_params_u params_on_yellow; + + ioc_fm_pcd_engine next_engine_on_red; + ioc_compat_fm_pcd_plcr_next_engine_params_u params_on_red; + + bool trap_profile_on_flow_A; + bool trap_profile_on_flow_B; + bool trap_profile_on_flow_C; + compat_uptr_t id; +} ioc_compat_fm_pcd_plcr_profile_params_t; + +typedef struct ioc_compat_fm_obj_t { + compat_uptr_t obj; +} ioc_compat_fm_obj_t; + +typedef struct ioc_compat_fm_pcd_kg_scheme_select_t { + bool direct; + compat_uptr_t scheme_id; +} ioc_compat_fm_pcd_kg_scheme_select_t; + +typedef struct ioc_compat_fm_pcd_port_schemes_params_t { + uint8_t num_of_schemes; + compat_uptr_t schemes_ids [IOC_FM_PCD_KG_NUM_OF_SCHEMES]; +} ioc_compat_fm_pcd_port_schemes_params_t; + +typedef struct ioc_compat_fm_pcd_net_env_params_t { + uint8_t num_of_distinction_units; + ioc_fm_pcd_distinction_unit_t units[IOC_FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS]; /* same structure*/ + compat_uptr_t id; +} ioc_compat_fm_pcd_net_env_params_t; + +typedef struct ioc_compat_fm_pcd_prs_sw_params_t { + bool override; + uint32_t size; + uint16_t base; + compat_uptr_t p_code; + uint32_t sw_prs_data_params[IOC_FM_PCD_PRS_NUM_OF_HDRS]; + uint8_t num_of_labels; + ioc_fm_pcd_prs_label_params_t labels_table[IOC_FM_PCD_PRS_NUM_OF_LABELS]; +} ioc_compat_fm_pcd_prs_sw_params_t; + +typedef struct ioc_compat_fm_pcd_cc_next_kg_params_t { + bool override_fqid; + uint32_t new_fqid; + compat_uptr_t p_direct_scheme; +} ioc_compat_fm_pcd_cc_next_kg_params_t; + +typedef struct ioc_compat_fm_pcd_cc_next_cc_params_t { + compat_uptr_t cc_node_id; +} ioc_compat_fm_pcd_cc_next_cc_params_t; + +typedef struct ioc_compat_fm_pcd_cc_next_engine_params_t { + ioc_fm_pcd_engine next_engine; + union { + ioc_compat_fm_pcd_cc_next_cc_params_t cc_params; /**< compat structure*/ + ioc_fm_pcd_cc_next_plcr_params_t plcr_params; /**< same structure*/ + ioc_fm_pcd_cc_next_enqueue_params_t enqueue_params; /**< same structure*/ + ioc_compat_fm_pcd_cc_next_kg_params_t kg_params; /**< compat structure*/ + } params; +#ifdef FM_PCD_CC_MANIP + compat_uptr_t p_manip; +#endif +} ioc_compat_fm_pcd_cc_next_engine_params_t; + + +typedef struct ioc_compat_fm_pcd_cc_grp_params_t { + uint8_t num_of_distinction_units; /**< up to 4 */ + uint8_t unit_ids [IOC_FM_PCD_MAX_NUM_OF_CC_UNITS]; + /**< Indexes of the units as defined in + FM_PCD_SetNetEnvCharacteristics */ + ioc_compat_fm_pcd_cc_next_engine_params_t next_engine_per_entries_in_grp[IOC_FM_PCD_MAX_NUM_OF_CC_ENTRIES_IN_GRP]; + /**< Max size is 16 - if only one group used */ +} ioc_compat_fm_pcd_cc_grp_params_t; + +typedef struct ioc_compat_fm_pcd_cc_tree_params_t { + compat_uptr_t net_env_id; + uint8_t num_of_groups; + ioc_compat_fm_pcd_cc_grp_params_t fm_pcd_cc_group_params [IOC_FM_PCD_MAX_NUM_OF_CC_GROUPS]; + compat_uptr_t id; +} ioc_compat_fm_pcd_cc_tree_params_t; + +typedef struct ioc_compat_fm_pcd_cc_tree_modify_next_engine_params_t { + compat_uptr_t id; + uint8_t grp_indx; + uint8_t indx; + ioc_compat_fm_pcd_cc_next_engine_params_t cc_next_engine_params; +} ioc_compat_fm_pcd_cc_tree_modify_next_engine_params_t; + +typedef struct ioc_compat_fm_pcd_cc_key_params_t { + compat_uptr_t p_key; + compat_uptr_t p_mask; + ioc_compat_fm_pcd_cc_next_engine_params_t cc_next_engine_params; /**< compat structure*/ +} ioc_compat_fm_pcd_cc_key_params_t; + +typedef struct ioc_compat_keys_params_t { + uint8_t num_of_keys; + uint8_t key_size; + ioc_compat_fm_pcd_cc_key_params_t key_params[IOC_FM_PCD_MAX_NUM_OF_KEYS]; /**< compat structure*/ + ioc_compat_fm_pcd_cc_next_engine_params_t cc_next_engine_params_for_miss; /**< compat structure*/ +} ioc_compat_keys_params_t; + +typedef struct ioc_compat_fm_pcd_cc_node_params_t { + ioc_fm_pcd_extract_entry_t extract_cc_params; /**< same structure*/ + ioc_compat_keys_params_t keys_params; /**< compat structure*/ + compat_uptr_t id; +} ioc_compat_fm_pcd_cc_node_params_t; + +typedef struct ioc_compat_fm_pcd_cc_node_modify_key_params_t { + compat_uptr_t id; + uint8_t key_indx; + uint8_t key_size; + compat_uptr_t p_key; + compat_uptr_t p_mask; +} ioc_compat_fm_pcd_cc_node_modify_key_params_t; + +typedef struct ioc_compat_fm_pcd_cc_node_modify_key_and_next_engine_params_t { + compat_uptr_t id; + uint8_t key_indx; + uint8_t key_size; + ioc_compat_fm_pcd_cc_key_params_t key_params; +} ioc_compat_fm_pcd_cc_node_modify_key_and_next_engine_params_t; + +typedef struct ioc_compat_fm_port_pcd_plcr_params_t { + compat_uptr_t plcr_profile_id; +} ioc_compat_fm_port_pcd_plcr_params_t; + +typedef struct ioc_compat_fm_port_pcd_cc_params_t { + compat_uptr_t cc_tree_id; +} ioc_compat_fm_port_pcd_cc_params_t; + +typedef struct ioc_compat_fm_port_pcd_kg_params_t { + uint8_t num_of_schemes; + compat_uptr_t schemes_ids[IOC_FM_PCD_KG_NUM_OF_SCHEMES]; + bool direct_scheme; + compat_uptr_t direct_scheme_id; +} ioc_compat_fm_port_pcd_kg_params_t; + +typedef struct ioc_compat_fm_port_pcd_params_t { + ioc_fm_port_pcd_support pcd_support; + compat_uptr_t net_env_id; + compat_uptr_t p_prs_params; + compat_uptr_t p_cc_params; + compat_uptr_t p_kg_params; + compat_uptr_t p_plcr_params; +} ioc_compat_fm_port_pcd_params_t; + +typedef struct ioc_compat_fm_pcd_kg_cc_t { + compat_uptr_t tree_id; + uint8_t grp_id; + bool plcr_next; + bool bypass_plcr_profile_generation; + ioc_fm_pcd_kg_plcr_profile_t plcr_profile; +} ioc_compat_fm_pcd_kg_cc_t; + +typedef struct ioc_compat_fm_pcd_kg_scheme_params_t { + bool modify; + union + { + uint8_t relative_scheme_id; + compat_uptr_t scheme_id; + } scm_id; + bool always_direct; + struct + { + compat_uptr_t net_env_id; + uint8_t num_of_distinction_units; + uint8_t unit_ids[IOC_FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS]; + } netEnvParams; + bool use_hash; + ioc_fm_pcd_kg_key_extract_and_hash_params_t key_extract_and_hash_params; + bool bypass_fqid_generation; + uint32_t base_fqid; + uint8_t numOfUsedExtractedOrs; + ioc_fm_pcd_kg_extracted_or_params_t extracted_ors[IOC_FM_PCD_KG_NUM_OF_GENERIC_REGS]; + ioc_fm_pcd_engine next_engine; + union{ + ioc_fm_pcd_done_action done_action; + ioc_fm_pcd_kg_plcr_profile_t plcr_profile; + ioc_compat_fm_pcd_kg_cc_t cc; + } kg_next_engine_params; + ioc_fm_pcd_kg_scheme_counter_t scheme_counter; + compat_uptr_t id; +} ioc_compat_fm_pcd_kg_scheme_params_t; + +typedef struct ioc_compat_fm_pcd_cc_node_modify_next_engine_params_t { + compat_uptr_t id; + uint8_t key_indx; + uint8_t key_size; + ioc_compat_fm_pcd_cc_next_engine_params_t cc_next_engine_params; +} ioc_compat_fm_pcd_cc_node_modify_next_engine_params_t; +/* } pcd compat structures */ + +/* pcd compat functions { */ +void compat_copy_fm_pcd_plcr_profile( + ioc_compat_fm_pcd_plcr_profile_params_t *compat_param, + ioc_fm_pcd_plcr_profile_params_t *param, + uint8_t compat); + +void compat_copy_fm_pcd_cc_key( + ioc_compat_fm_pcd_cc_key_params_t *compat_param, + ioc_fm_pcd_cc_key_params_t *param, + uint8_t compat); + +void compat_copy_fm_pcd_cc_node_modify_key_and_next_engine( + ioc_compat_fm_pcd_cc_node_modify_key_and_next_engine_params_t *compat_param, + ioc_fm_pcd_cc_node_modify_key_and_next_engine_params_t *param, + uint8_t compat); + +void compat_copy_fm_pcd_cc_node_modify_next_engine( + ioc_compat_fm_pcd_cc_node_modify_next_engine_params_t *compat_param, + ioc_fm_pcd_cc_node_modify_next_engine_params_t *param, + uint8_t compat); + +void compat_fm_pcd_cc_tree_modify_next_engine( + ioc_compat_fm_pcd_cc_tree_modify_next_engine_params_t *compat_param, + ioc_fm_pcd_cc_tree_modify_next_engine_params_t *param, + uint8_t compat); + +void compat_copy_fm_pcd_cc_grp( + ioc_compat_fm_pcd_cc_grp_params_t *compat_param, + ioc_fm_pcd_cc_grp_params_t *param, + uint8_t compat); + +void compat_copy_fm_pcd_cc_tree( + ioc_compat_fm_pcd_cc_tree_params_t *compat_param, + ioc_fm_pcd_cc_tree_params_t *param, + uint8_t compat); + +void compat_fm_pcd_prs_sw( + ioc_compat_fm_pcd_prs_sw_params_t *compat_param, + ioc_fm_pcd_prs_sw_params_t *param, + uint8_t compat); + +void compat_copy_fm_pcd_kg_scheme( + ioc_compat_fm_pcd_kg_scheme_params_t *compat_param, + ioc_fm_pcd_kg_scheme_params_t *param, + uint8_t compat); + +void compat_copy_fm_pcd_kg_scheme_select( + ioc_compat_fm_pcd_kg_scheme_select_t *compat_param, + ioc_fm_pcd_kg_scheme_select_t *param, + uint8_t compat); + +void compat_copy_fm_pcd_kg_schemes_params( + ioc_compat_fm_pcd_port_schemes_params_t *compat_param, + ioc_fm_pcd_port_schemes_params_t *param, + uint8_t compat); + +void compat_copy_fm_port_pcd_kg( + ioc_compat_fm_port_pcd_kg_params_t *compat_param, + ioc_fm_port_pcd_kg_params_t *param, + uint8_t compat); + +void compat_copy_fm_port_pcd( + ioc_compat_fm_port_pcd_params_t *compat_param, + ioc_fm_port_pcd_params_t *param, + uint8_t compat); + +void compat_copy_fm_pcd_net_env( + ioc_compat_fm_pcd_net_env_params_t *compat_param, + ioc_fm_pcd_net_env_params_t *param, + uint8_t compat); + +void compat_copy_fm_pcd_cc_node_modify_key( + ioc_compat_fm_pcd_cc_node_modify_key_params_t *compat_param, + ioc_fm_pcd_cc_node_modify_key_params_t *param, + uint8_t compat); + +void compat_copy_keys( + ioc_compat_keys_params_t *compat_param, + ioc_keys_params_t *param, + uint8_t compat); + +void compat_copy_fm_pcd_cc_node( + ioc_compat_fm_pcd_cc_node_params_t *compat_param, + ioc_fm_pcd_cc_node_params_t *param, + uint8_t compat); + +/* } pcd compat functions */ +#endif --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_resources.c +++ linux-3.13.0/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_resources.c @@ -0,0 +1,1172 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 lnxwrp_resources.c + + @Description FMD wrapper resource allocation functions. + +*/ + +#include +#if defined(CONFIG_MODVERSIONS) && !defined(MODVERSIONS) +#define MODVERSIONS +#endif +#ifdef MODVERSIONS +#include +#endif /* MODVERSIONS */ +#include +#include +#include +#include + +#include "lnxwrp_resources.h" + +extern int fsl_fman_phy_maxfrm; /* MAC file */ + +static struct device_node *match_mac_to_dpaa_port(struct device_node + *enet_mac_node) +{ + struct device_node *dpaa_node = NULL; + struct device_node *dpaa_itf = NULL; + + /* find DPAA node starting from root */ + dpaa_node = of_find_compatible_node(NULL, NULL, "fsl,dpaa"); + if (dpaa_node) { + /* for all dpaa ports check which one refers this mac node. */ + for_each_child_of_node(dpaa_node, dpaa_itf) { + struct device_node *by_handle_enet_mac_node = NULL; + const phandle *phandle_prop = NULL; + int lenp = 0; + + phandle_prop = + (typeof(phandle_prop)) + of_get_property(dpaa_itf, "fsl,fman-mac", + &lenp); + if (phandle_prop == NULL) + continue; + + if (WARN_ON(lenp != sizeof(phandle))) + return NULL; + + by_handle_enet_mac_node = + of_find_node_by_phandle(*phandle_prop); + if (unlikely(by_handle_enet_mac_node == NULL)) + return NULL; + + /* check */ + if (by_handle_enet_mac_node == enet_mac_node) { + of_node_put(by_handle_enet_mac_node); + return dpaa_itf; + } + + of_node_put(by_handle_enet_mac_node); + } + of_node_put(dpaa_node); + } + + return NULL; +} + +static struct device_node *match_fman_port_to_mac(struct device_node *fm_node, + struct device_node + *fm_port_node) +{ + struct device_node *fm_node_idx = NULL; + + /* for all enet nodes (macs) check which one refers this FMan port. */ + for_each_child_of_node(fm_node, fm_node_idx) { + if (of_device_is_compatible(fm_node_idx, "fsl,fman-1g-mac") || + of_device_is_compatible(fm_node_idx, + "fsl,fman-10g-mac")) { + struct device_node *fman_port_node_rx = NULL; + struct device_node *fman_port_node_tx = NULL; + /* RX is first */ + fman_port_node_rx = of_parse_phandle(fm_node_idx, + "fsl,port-handles", 0); + if (unlikely(fman_port_node_rx == NULL)) + continue; + /* TX is second */ + fman_port_node_tx = of_parse_phandle(fm_node_idx, + "fsl,port-handles", 1); + if (unlikely(fman_port_node_tx == NULL)) { + of_node_put(fman_port_node_rx); + continue; + } + + /* check */ + if (fman_port_node_rx == fm_port_node + || fman_port_node_tx == fm_port_node) { + of_node_put(fman_port_node_rx); + of_node_put(fman_port_node_tx); + return fm_node_idx; + } + + of_node_put(fman_port_node_rx); + of_node_put(fman_port_node_tx); + } + } + + return NULL; +} + +static bool is_fman_port_active(struct device_node *fm_node, + struct device_node *fm_port_node) +{ + struct device_node *enet_mac_node = NULL; + struct device_node *itf_node = NULL; + + /* Which MAC node refers to this FMan port. */ + enet_mac_node = match_fman_port_to_mac(fm_node, fm_port_node); + + if (unlikely(enet_mac_node == NULL)) + return false; + + /* Which dpaa port node refers this MAC node. */ + itf_node = match_mac_to_dpaa_port(enet_mac_node); + of_node_put(enet_mac_node); + + if (unlikely(!itf_node)) + return false; + + /* check if itf (DPAA ports) is available. + * if available, means that the FMan port is + * also available - return true + */ + if (!of_device_is_available(itf_node)) { + of_node_put(itf_node); + return false; + } + of_node_put(itf_node); + + return true; +} + +int fm_set_active_fman_ports(struct platform_device *of_dev, + t_LnxWrpFmDev *p_LnxWrpFmDev) +{ + struct device_node *fm_node = NULL; + struct device_node *fm_port_node = NULL; + + memset(&p_LnxWrpFmDev->fm_active_ports_info, 0, + sizeof(struct fm_active_ports)); + + /* get FMan node */ + fm_node = of_dev->dev.of_node; + + /* for all ports which belong to this FMan, check if they are active. + * If active, set their parameters. */ + for_each_child_of_node(fm_node, fm_port_node) { + + /* OH FMan ports */ + if (of_device_is_compatible(fm_port_node, + "fsl,fman-port-oh")) + /* all oh ports are active */ + p_LnxWrpFmDev->fm_active_ports_info.num_oh_ports++; + + if (!is_fman_port_active(fm_node, fm_port_node)) + continue; + + /* 10g TX FMan ports */ + if (of_device_is_compatible(fm_port_node, + "fsl,fman-port-10g-tx")) + p_LnxWrpFmDev->fm_active_ports_info.num_tx10_ports++; + + /* 10g RX FMan ports */ + else if (of_device_is_compatible(fm_port_node, + "fsl,fman-port-10g-rx")) + p_LnxWrpFmDev->fm_active_ports_info.num_rx10_ports++; + + /* 1G TX FMan ports */ + else if (of_device_is_compatible(fm_port_node, + "fsl,fman-port-1g-tx")) + p_LnxWrpFmDev->fm_active_ports_info.num_tx_ports++; + + /* 1G RX FMan ports */ + else if (of_device_is_compatible(fm_port_node, + "fsl,fman-port-1g-rx")) + p_LnxWrpFmDev->fm_active_ports_info.num_rx_ports++; + } + + /* If performance is needed no oh port is probed + * except the one used for host command. */ +#if defined(CONFIG_FMAN_DISABLE_OH_TO_REUSE_RESOURCES) + if (p_LnxWrpFmDev->fm_active_ports_info.num_oh_ports) + p_LnxWrpFmDev->fm_active_ports_info.num_oh_ports = 1; + + printk(KERN_WARNING "FMAN(%u)-Performance mode - no OH support...\n", + p_LnxWrpFmDev->id); +#endif + + return 0; +} + +#ifdef FM_FIFO_ALLOCATION_OLD_ALG +/* BPOOL size is constant and equal w/ DPA_BP_SIZE */ +static uint32_t get_largest_buf_size(uint32_t max_rx_frame_size, uint32_t buf_size) +{ + uint32_t priv_data_size = 16; /* DPA_PRIV_DATA_SIZE */ + uint32_t hash_results_size = 16; /* DPA_HASH_RESULTS_SIZE */ + uint32_t parse_results_size = + sizeof(t_FmPrsResult); /* DPA_PARSE_RESULTS_SIZE */ + uint32_t bp_head = priv_data_size + hash_results_size + + parse_results_size; /* DPA_BP_HEAD */ + uint32_t bp_size = bp_head + max_rx_frame_size + + NET_IP_ALIGN; /* DPA_BP_SIZE */ + + return CEIL_DIV(bp_size, buf_size); +} +#endif + +/* Calculate the fifosize based on MURAM allocation, number of ports, dpde + value and s/g software support (! Kernel does not suport s/g). + + Algorithm summary: + - Calculate the the minimum fifosize required for every type of port + (TX,RX for 1G, 2.5G and 10G). + - Set TX the minimum fifosize required. + - Distribute the remaining buffers (after all TX were set) to RX ports + based on: + 1G RX = Remaining_buffers * 1/(1+2.5+10) + 2.5G RX = Remaining_buffers * 2.5/(1+2.5+10) + 10G RX = Remaining_buffers * 10/(1+2.5+10) + - if the RX is smaller than the minimum required, then set the minimum + required + - In the end distribuite the leftovers if there are any (due to + unprecise calculus) or if over allocation cat some buffers from all RX + ports w/o pass over minimum required treshold, but if there must be + pass the treshold in order to cat the over allocation ,then this + configuration can not be set - KERN_ALERT. +*/ +int fm_precalculate_fifosizes(t_LnxWrpFmDev *p_LnxWrpFmDev, int muram_fifo_size) +{ + + /* input parameters */ + struct fm_active_ports *fm_active_ports_info = NULL; + int num_1g_ports = 0; + int num_2g5_ports = 0; + int num_10g_ports = 0; + int num_oh_ports = 0; + + /* output parameters */ + struct fm_resource_settings *fm_resource_settings_info = NULL; + int oh_buff = 0; + int tx_1g_bufs = 0, rx_1g_bufs = 0; + int tx_2g5_bufs = 0, rx_2g5_bufs = 0; + int tx_10g_bufs = 0, rx_10g_bufs = 0; + int err = 0; + + /* throughput parameters: divide it by 10 when used */ + int gb1g = 10, gb2g5 = 25, gb10g = 100, gb_sum = 0; + + /* buffers parameters */ + int buf_size = 0x100; /* Buffer unit size */ + int total_no_buffers = 0; /* Calculus based on MURAM size for + fifos and buf. unit size */ + + int shared_ext_buff = 0; /* External buffers allocated - LLD + boundaries:DEFAULT_PORT_extraSizeOfFifo */ + + int min_tx_1g_2g5_bufs = 0; /* minimum TX1g buffers required + (see refman.) */ + int min_tx_10g_bufs = 0; /* minimum TX10g buffers required + (see refman.) */ + int min_rx_bufs = 0; /* minimum RX buffers required (see refman.) */ + + /* Buffer sizes calculus */ + int max_frame_size = + fsl_fman_phy_maxfrm ? fsl_fman_phy_maxfrm : + CONFIG_DPA_MAX_FRM_SIZE; + int remaining_bufs = 0; + int rx_1g_bufs_ceil = 0, rx_2g5_bufs_ceil = 0, rx_10g_bufs_ceil = 0; + int rx_2g5_max_bufs = 0, rx_10g_max_bufs = 0; + int rx_1g_used = 0, rx_1g_2g5_used = 0, rx_1g_10g_used =0, + rx_2g5_used = 0, rx_2g5_10g_used = 0, rx_1g_2g5_10g_used = 0; + + /* overflow checking */ + int tot_rx_buffs, tot_tx_buffs, tot_oh_buffs, tot_used_buffs, + leftovers = 0; + int overflow = 0; + bool loop = false; + + /* check input parameters correctness */ + ASSERT_COND(p_LnxWrpFmDev != NULL); + fm_active_ports_info = &p_LnxWrpFmDev->fm_active_ports_info; + fm_resource_settings_info = &p_LnxWrpFmDev->fm_resource_settings_info; + ASSERT_COND(fm_active_ports_info != NULL); + ASSERT_COND(fm_resource_settings_info != NULL); + ASSERT_COND(fm_active_ports_info->num_tx_ports == + fm_active_ports_info->num_rx_ports); + ASSERT_COND(fm_active_ports_info->num_tx25_ports == + fm_active_ports_info->num_tx25_ports); + ASSERT_COND(fm_active_ports_info->num_tx10_ports == + fm_active_ports_info->num_tx10_ports); + ASSERT_COND(max_frame_size != 0); + ASSERT_COND(muram_fifo_size != 0); + + /* set input parameters */ + num_1g_ports = fm_active_ports_info->num_tx_ports; + num_2g5_ports = fm_active_ports_info->num_tx25_ports; + num_10g_ports = fm_active_ports_info->num_tx10_ports; + num_oh_ports = fm_active_ports_info->num_oh_ports; + + /* throughput calculus */ + gb_sum = gb1g * num_1g_ports + gb2g5 * num_2g5_ports + + gb10g * num_10g_ports; /* divide it by 10 */ + + /* Base buffer calculus */ + oh_buff = DPDE_1G + 4; /* should be: + get_largest_buf_size(max_frame_size, buf_size), + but LLD: DPDE + 4 */ + total_no_buffers = muram_fifo_size / buf_size; + + min_tx_1g_2g5_bufs = CEIL_DIV(max_frame_size, buf_size) + + DPDE_1G + 3 + 1; /* +1 to handle Jumbo Frames */ + min_tx_10g_bufs = CEIL_DIV(max_frame_size, buf_size) + + DPDE_10G + 3 + 1; /* +1 to handle Jumbo Frames */ + + { +#ifdef FM_FIFO_ALLOCATION_OLD_ALG + uint8_t fm_rev_major = 0; + fm_rev_major = + (uint8_t) ((* + ((volatile uint32_t *) + UINT_TO_PTR(p_LnxWrpFmDev->fmBaseAddr + + 0x000c30c4)) & 0xff00) >> 8); + + if (fm_rev_major < 4) + min_rx_bufs = + get_largest_buf_size(max_frame_size, + buf_size) + 7; + else +#endif + min_rx_bufs = 8; + } + + shared_ext_buff = num_10g_ports ? 32 : 16; /* LLD boundaries: + DEFAULT_PORT_extraSizeOfFifo */ + + /* TX ports will have minimum required buffers + Calculus of the remaining buffers for all RX ports */ + tx_1g_bufs = num_1g_ports ? min_tx_1g_2g5_bufs : 0; + tx_2g5_bufs = num_2g5_ports ? min_tx_1g_2g5_bufs : 0; + tx_10g_bufs = num_10g_ports ? min_tx_10g_bufs : 0; + + remaining_bufs = total_no_buffers - + oh_buff * num_oh_ports - + num_1g_ports * min_tx_1g_2g5_bufs - + num_2g5_ports * min_tx_1g_2g5_bufs - + num_10g_ports * min_tx_10g_bufs - shared_ext_buff; + + if (remaining_bufs < 0) { + printk(KERN_ALERT + "This configuration will not work due to low number of" + " buffers (%u buffers)...\n", + total_no_buffers); + err = -1; + goto precalculated_fifosize_out; + } + + /* Per port buffer size calculus + . for TX ports give always minimum required + . for RX ports give whatever left scaled per port type */ + /* ------------------------------------------------------- */ + if (num_1g_ports) { + rx_1g_bufs_ceil = + (gb_sum / + 10) ? CEIL_DIV(((remaining_bufs * gb1g) / 10), + (gb_sum / 10)) : 0; + rx_1g_bufs = MAX(min_rx_bufs, rx_1g_bufs_ceil); + rx_1g_used = rx_1g_bufs - rx_1g_bufs_ceil; /* always >= 0 */ + /* distribute to 2.5g and 10g ports */ + rx_1g_2g5_used = + (num_2g5_ports + + num_10g_ports) ? CEIL_DIV(rx_1g_used * num_1g_ports * + num_2g5_ports, + num_2g5_ports + + num_10g_ports) : 0; + rx_1g_10g_used = + (num_2g5_ports + + num_10g_ports) ? CEIL_DIV(rx_1g_used * num_1g_ports * + num_10g_ports, + num_2g5_ports + + num_10g_ports) : 0; + } + + if (num_2g5_ports) { + rx_2g5_bufs_ceil = + (gb_sum / + 10) ? CEIL_DIV(((remaining_bufs * gb2g5) / 10), + (gb_sum / 10)) : 0; + rx_2g5_max_bufs = MAX(min_rx_bufs, rx_2g5_bufs_ceil); + rx_2g5_bufs = + MAX(min_rx_bufs, rx_2g5_max_bufs - rx_1g_2g5_used); + rx_2g5_used = rx_2g5_bufs - rx_2g5_bufs_ceil; /* always >= 0 */ + /* distribute to 10g ports */ + rx_2g5_10g_used = + num_10g_ports ? CEIL_DIV(rx_2g5_used * num_2g5_ports, + num_10g_ports) : 0; + } + + if (num_10g_ports) { + rx_10g_bufs_ceil = + (gb_sum / + 10) ? CEIL_DIV(((remaining_bufs * gb10g) / 10), + (gb_sum / 10)) : 0; + rx_10g_max_bufs = MAX(min_rx_bufs, rx_10g_bufs_ceil); + /* keep count of all distribution */ + rx_1g_2g5_10g_used = rx_1g_10g_used + rx_2g5_10g_used; + rx_10g_bufs = + MAX(min_rx_bufs, + rx_10g_max_bufs - rx_1g_2g5_10g_used); + } + + /* overflow-leftover calculus */ + tot_rx_buffs = rx_1g_bufs * num_1g_ports + + rx_2g5_bufs * num_2g5_ports + rx_10g_bufs * num_10g_ports; + tot_tx_buffs = tx_1g_bufs * num_1g_ports + + tx_2g5_bufs * num_2g5_ports + tx_10g_bufs * num_10g_ports; + tot_oh_buffs = oh_buff * num_oh_ports; + tot_used_buffs = + tot_oh_buffs + tot_tx_buffs + tot_rx_buffs + shared_ext_buff; + + overflow = tot_used_buffs - total_no_buffers; + /* used more than available */ + if (overflow > 0) { + loop = true; + while (overflow > 0 && loop) { + loop = false; + if (overflow && num_10g_ports + && rx_10g_bufs > min_rx_bufs) { + rx_10g_bufs--; + overflow -= num_10g_ports; + loop = true; + } + if (overflow && num_2g5_ports + && rx_2g5_bufs > min_rx_bufs) { + rx_2g5_bufs--; + overflow -= num_2g5_ports; + loop = true; + } + if (overflow && num_1g_ports + && rx_1g_bufs > min_rx_bufs) { + rx_1g_bufs--; + overflow -= num_1g_ports; + loop = true; + } + } + + if (overflow > 0) { + printk(KERN_ALERT + "This configuration will not work due to over" + " buffer allocation (%d buffers)...\n", + overflow); + err = -1; + goto precalculated_fifosize_out; + } + } + /* left a few buffers */ + else if (overflow < 0) { + leftovers = total_no_buffers - tot_used_buffs; + loop = true; + while (leftovers > 0 && loop) { + loop = false; + if (leftovers && num_1g_ports) { + rx_1g_bufs++; + leftovers -= num_1g_ports; + loop = true; + } + + if (leftovers && num_2g5_ports) { + rx_2g5_bufs++; + leftovers -= num_2g5_ports; + loop = true; + } + + if (leftovers && num_10g_ports) { + rx_10g_bufs++; + leftovers -= num_10g_ports; + loop = true; + } + } + } + + /* set fifosizes for this FMan ports */ + fm_resource_settings_info->tx1g_num_buffers = tx_1g_bufs; + fm_resource_settings_info->rx1g_num_buffers = rx_1g_bufs; + fm_resource_settings_info->tx2g5_num_buffers = tx_2g5_bufs; + fm_resource_settings_info->rx2g5_num_buffers = rx_2g5_bufs; + fm_resource_settings_info->tx10g_num_buffers = tx_10g_bufs; + fm_resource_settings_info->rx10g_num_buffers = rx_10g_bufs; + fm_resource_settings_info->oh_num_buffers = oh_buff; + fm_resource_settings_info->shared_ext_buffers = shared_ext_buff; + +precalculated_fifosize_out: + printk(KERN_INFO " FMAN(%u) Fifo size settings:\n", + p_LnxWrpFmDev->id); + printk(KERN_INFO " - Total buffers available(%u - 256B/buffer)\n", + total_no_buffers); + printk(KERN_INFO " - Total throughput(%uGbps)\n", (gb_sum / 10)); + printk(KERN_INFO " - Max frame size(%uB)\n", max_frame_size); + if (num_1g_ports) { + printk(KERN_INFO + " - 1G ports TX %u(%u bufs set (min: %u))\n", + num_1g_ports, tx_1g_bufs, min_tx_1g_2g5_bufs); + printk(KERN_INFO + " - 1G ports RX %u(%u bufs set (min: %u))\n", + num_1g_ports, rx_1g_bufs, min_rx_bufs); + } + if (num_2g5_ports) { + printk(KERN_INFO + " - 2.5G ports TX %u(%u bufs set (min: %u))\n", + num_2g5_ports, tx_2g5_bufs, min_tx_1g_2g5_bufs); + printk(KERN_INFO + " - 2.5G ports RX %u(%u bufs set (min: %u))\n", + num_2g5_ports, rx_2g5_bufs, min_rx_bufs); + } + if (num_10g_ports) { + printk(KERN_INFO + " - 10G ports TX %u(%u bufs set (min: %u))\n", + num_10g_ports, tx_10g_bufs, min_tx_10g_bufs); + printk(KERN_INFO + " - 10G ports RX %u(%u bufs set (min: %u))\n", + num_10g_ports, rx_10g_bufs, min_rx_bufs); + } + if (num_oh_ports) + printk(KERN_INFO " - OH-HC ports %u(%u)\n", num_oh_ports, + oh_buff); + printk(KERN_INFO " - Shared extra buffers(%u)\n", shared_ext_buff); + + return err; +} + +int fm_set_precalculate_fifosize(t_LnxWrpFmPortDev *p_LnxWrpFmPortDev) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = + (t_LnxWrpFmDev *) p_LnxWrpFmPortDev->h_LnxWrpFmDev; + struct fm_resource_settings *fm_resource_settings_info = NULL; + struct fm_active_ports *fm_active_ports_info = NULL; + t_FmPortRsrc portRsrc; + t_Error errCode; + uint32_t buf_size = 0x100; + + ASSERT_COND(p_LnxWrpFmDev != NULL); + fm_resource_settings_info = &p_LnxWrpFmDev->fm_resource_settings_info; + fm_active_ports_info = &p_LnxWrpFmDev->fm_active_ports_info; + + memset(&portRsrc, 0, sizeof(t_FmPortRsrc)); + +/* IF 1G PORT */ + if (p_LnxWrpFmPortDev->settings.param.portType == e_FM_PORT_TYPE_TX) { + portRsrc.num = + fm_resource_settings_info->tx1g_num_buffers * buf_size; + portRsrc.extra = 0; + } else if (p_LnxWrpFmPortDev->settings.param.portType == + e_FM_PORT_TYPE_RX) { + portRsrc.num = + fm_resource_settings_info->rx1g_num_buffers * buf_size; + portRsrc.extra = + fm_resource_settings_info->shared_ext_buffers * + buf_size; + } +/* IF 2.5G PORT */ + /* TODO: Not supported by LLD yet. */ + +/* IF 10G PORT */ + else if (p_LnxWrpFmPortDev->settings.param.portType == + e_FM_PORT_TYPE_TX_10G) { + portRsrc.num = + fm_resource_settings_info->tx10g_num_buffers * + buf_size; + portRsrc.extra = 0; + } else if (p_LnxWrpFmPortDev->settings.param.portType == + e_FM_PORT_TYPE_RX_10G) { + portRsrc.num = + fm_resource_settings_info->rx10g_num_buffers * + buf_size; + portRsrc.extra = + fm_resource_settings_info->shared_ext_buffers * + buf_size; + } else { /* IF OH PORT */ + portRsrc.num = + fm_resource_settings_info->oh_num_buffers * buf_size; + portRsrc.extra = 0; + } + + errCode = FM_PORT_SetSizeOfFifo(p_LnxWrpFmPortDev->h_Dev, &portRsrc); + if (errCode != E_OK) { + printk(KERN_WARNING + "FM_PORT_SetSizeOfFifo failed (errCode:0x%2x)", + errCode); + return -EIO; + } + + return 0; +} + +/* Compute FMan open DMA based on total number of open DMAs and + * number of available FMan ports. + * + * By default 10g ports are set to input parameters. The other ports + * tries to keep the proportion rx=2tx open DMAs or thresholds. + * + * If leftovers, then those will be set as shared. + * + * If after computing overflow appears, then it decrements open DMA + * for all ports w/o cross the thresholds. If the thresholds are meet + * and is still overflow, then it returns error. + */ +int fm_precalculate_open_dma(t_LnxWrpFmDev *p_LnxWrpFmDev, + int max_fm_open_dma, + int default_tx_10g_dmas, + int default_rx_10g_dmas, + int min_tx_10g_treshold, int min_rx_10g_treshold) +{ + /* input parameters */ + struct fm_active_ports *fm_active_ports_info = NULL; + int num_1g_ports = 0; + int num_2g5_ports = 0; + int num_10g_ports = 0; + int num_oh_ports = 0; + + /* output parameters */ + struct fm_resource_settings *fm_resource_settings_info = NULL; + int tx_1g_dmas = 0, rx_1g_dmas = 0; + int tx_2g5_dmas = 0, rx_2g5_dmas = 0; + int tx_10g_dmas = 0, rx_10g_dmas = 0; + int oh_dmas = 0; + int shared_ext_open_dma = 0; + int err = 0; + + /* open dma calculus */ + int remaing_dmas = 0; + int rx_tx_raport = + FM_OPENDMA_RX_TX_RAPORT; /* RX = FM_OPENDMA_RX_TX_RAPORT *TX */ + int min_tx_1_2g5_treshold = 1; + int min_rx_1_2g5_treshold = 1; + int max_open_dma_treshold = 16; /* LLD: MAX_NUM_OF_DMAS */ + int max_ext_open_dma_treshold = 8; /* LLD: MAX_NUM_OF_EXTRA_DMAS */ + + int open_dmas_computed = 0; + int weighted_remaining_ports = 0; + int overflow = 0; + bool re_loop = false; + + /* check input parameters correctness */ + ASSERT_COND(p_LnxWrpFmDev != NULL); + fm_active_ports_info = &p_LnxWrpFmDev->fm_active_ports_info; + fm_resource_settings_info = &p_LnxWrpFmDev->fm_resource_settings_info; + ASSERT_COND(fm_active_ports_info != NULL); + ASSERT_COND(fm_resource_settings_info != NULL); + ASSERT_COND(fm_active_ports_info->num_tx_ports == + fm_active_ports_info->num_rx_ports); + ASSERT_COND(fm_active_ports_info->num_tx25_ports == + fm_active_ports_info->num_tx25_ports); + ASSERT_COND(fm_active_ports_info->num_tx10_ports == + fm_active_ports_info->num_tx10_ports); + ASSERT_COND(min_tx_10g_treshold <= max_open_dma_treshold); + ASSERT_COND(min_tx_10g_treshold <= max_open_dma_treshold); + + /* set input parameters */ + num_1g_ports = fm_active_ports_info->num_tx_ports; + num_2g5_ports = fm_active_ports_info->num_tx25_ports; + num_10g_ports = fm_active_ports_info->num_tx10_ports; + num_oh_ports = fm_active_ports_info->num_oh_ports; + + /* compute open DMAs per port */ + /* ------------------------------------------------------- */ + if (num_10g_ports) { + tx_10g_dmas = default_tx_10g_dmas; /* per 10G TX port */ + rx_10g_dmas = default_rx_10g_dmas; /* per 10G RX port */ + } + if (num_oh_ports) + oh_dmas = 1; /* per OH port */ + + /* should this be null? or LLD: + DEFAULT_PORT_extraNumOfOpenDmas:10g-8,else 1 */ + shared_ext_open_dma = 0; + + /* based on total number of ports set open DMAs for all other ports */ + remaing_dmas = max_fm_open_dma - + (oh_dmas * num_oh_ports) - + (tx_10g_dmas * num_10g_ports + rx_10g_dmas * num_10g_ports) - + shared_ext_open_dma; + + if (remaing_dmas < 0) { + printk(KERN_ALERT + "This configuration will not work due to low number" + " of open dmas (%u open dmas)...\n", + max_fm_open_dma); + err = -1; + goto precalculated_open_dma_out; + } + + weighted_remaining_ports = + /*tx */ num_1g_ports * rx_tx_raport + /*rx */ num_1g_ports + + /*tx */ num_2g5_ports * rx_tx_raport + /*rx */ num_2g5_ports; + + /* compute the other ports */ + if (num_1g_ports) { + tx_1g_dmas = + MAX(MIN + (ROUND_DIV + (remaing_dmas, weighted_remaining_ports), + max_open_dma_treshold), min_tx_1_2g5_treshold); + rx_1g_dmas = + MAX(MIN + (ROUND_DIV + ((remaing_dmas * rx_tx_raport), + weighted_remaining_ports), + max_open_dma_treshold), min_rx_1_2g5_treshold); + } + if (num_2g5_ports) { + tx_2g5_dmas = + MAX(MIN + (CEIL_DIV(remaing_dmas, weighted_remaining_ports), + max_open_dma_treshold), min_tx_1_2g5_treshold); + rx_2g5_dmas = + MAX(MIN + (CEIL_DIV + ((remaing_dmas * rx_tx_raport), + weighted_remaining_ports), + max_open_dma_treshold), min_rx_1_2g5_treshold); + + } + + /* Check if these settings is not exceding treshold */ + open_dmas_computed = num_1g_ports * tx_1g_dmas + + num_1g_ports * rx_1g_dmas + + num_2g5_ports * tx_2g5_dmas + + num_2g5_ports * rx_2g5_dmas + + num_10g_ports * tx_10g_dmas + + num_10g_ports * rx_10g_dmas + + num_oh_ports * oh_dmas + shared_ext_open_dma; + + /* overflow-leftover calculus */ + overflow = open_dmas_computed - max_fm_open_dma; + re_loop = true; + while (overflow > 0 && re_loop == true) { + re_loop = false; + if (num_1g_ports && overflow + && rx_1g_dmas > min_rx_1_2g5_treshold) { + rx_1g_dmas--; + overflow -= num_1g_ports; + re_loop = true; + } + if (num_2g5_ports && overflow + && rx_2g5_dmas > min_rx_1_2g5_treshold) { + rx_2g5_dmas--; + overflow -= num_2g5_ports; + re_loop = true; + } + if (num_10g_ports && overflow + && rx_10g_dmas > min_rx_10g_treshold) { + rx_10g_dmas--; + overflow -= num_10g_ports; + re_loop = true; + } + + if (num_1g_ports && overflow + && tx_1g_dmas > min_tx_1_2g5_treshold) { + tx_1g_dmas--; + overflow -= num_1g_ports; + re_loop = true; + } + if (num_2g5_ports && overflow + && tx_2g5_dmas > min_tx_1_2g5_treshold) { + tx_2g5_dmas--; + overflow -= num_2g5_ports; + re_loop = true; + } + if (num_10g_ports && overflow + && tx_10g_dmas > min_tx_10g_treshold) { + tx_10g_dmas--; + overflow -= num_10g_ports; + re_loop = true; + } + } + + if (overflow > 0) { + printk(KERN_ALERT + "This configuration will not work due to over open dma" + " allocation (%d open dmas)...\n", + overflow); + err = -1; + goto precalculated_open_dma_out; + } + + /* could remain leftovers... e.g. overflow=1, + 2ports => leftover=1 => shared=1 */ + open_dmas_computed = num_1g_ports * tx_1g_dmas + + num_1g_ports * rx_1g_dmas + + num_2g5_ports * tx_2g5_dmas + + num_2g5_ports * rx_2g5_dmas + + num_10g_ports * tx_10g_dmas + + num_10g_ports * rx_10g_dmas + + num_oh_ports * oh_dmas + shared_ext_open_dma; + + if (max_fm_open_dma - open_dmas_computed > 0) + shared_ext_open_dma = + MIN(shared_ext_open_dma + max_fm_open_dma - + open_dmas_computed, max_ext_open_dma_treshold); + + /* set open dmas */ + fm_resource_settings_info->tx_1g_dmas = tx_1g_dmas; + fm_resource_settings_info->rx_1g_dmas = rx_1g_dmas; + fm_resource_settings_info->tx_2g5_dmas = tx_2g5_dmas; + fm_resource_settings_info->rx_2g5_dmas = rx_2g5_dmas; + fm_resource_settings_info->tx_10g_dmas = tx_10g_dmas; + fm_resource_settings_info->rx_10g_dmas = rx_10g_dmas; + fm_resource_settings_info->oh_dmas = oh_dmas; + fm_resource_settings_info->shared_ext_open_dma = shared_ext_open_dma; + +precalculated_open_dma_out: + printk(KERN_INFO " FMAN(%u) open dma settings:\n", + p_LnxWrpFmDev->id); + printk(KERN_INFO " - Total open dma available(%u)\n", + max_fm_open_dma); + if (num_1g_ports) { + printk(KERN_INFO " - 1G ports TX %u(%u)\n", num_1g_ports, + tx_1g_dmas); + printk(KERN_INFO " - 1G ports RX %u(%u)\n", num_1g_ports, + rx_1g_dmas); + } + if (num_2g5_ports) { + printk(KERN_INFO " - 2.5G ports TX %u(%u)\n", num_2g5_ports, + tx_2g5_dmas); + printk(KERN_INFO " - 2.5G ports RX %u(%u)\n", num_2g5_ports, + tx_2g5_dmas); + } + if (num_10g_ports) { + printk(KERN_INFO " - 10G ports TX %u(%u)\n", num_10g_ports, + tx_10g_dmas); + printk(KERN_INFO " - 10G ports RX %u(%u)\n", num_10g_ports, + rx_10g_dmas); + } + if (num_oh_ports) + printk(KERN_INFO " - OH-HC ports %u(%u)\n", num_oh_ports, + oh_dmas); + printk(KERN_INFO " - Shared extra open dma(%u)\n", + shared_ext_open_dma ? shared_ext_open_dma : 0); + + return err; +} + +int fm_set_precalculate_open_dma(t_LnxWrpFmPortDev *p_LnxWrpFmPortDev) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = + (t_LnxWrpFmDev *) p_LnxWrpFmPortDev->h_LnxWrpFmDev; + struct fm_resource_settings *fm_resource_settings_info = NULL; + t_FmPortRsrc numOfOpenDmas; + t_Error errCode; + + ASSERT_COND(p_LnxWrpFmDev != NULL); + fm_resource_settings_info = &p_LnxWrpFmDev->fm_resource_settings_info; + + memset(&numOfOpenDmas, 0, sizeof(t_FmPortRsrc)); + +/* IF 1G PORT */ + if (p_LnxWrpFmPortDev->settings.param.portType == e_FM_PORT_TYPE_TX) + numOfOpenDmas.num = fm_resource_settings_info->tx_1g_dmas; + else if (p_LnxWrpFmPortDev->settings.param.portType == + e_FM_PORT_TYPE_RX) + numOfOpenDmas.num = fm_resource_settings_info->rx_1g_dmas; +/* IF 2.5G PORT*/ + /* TODO: Not supported by LLD yet. */ + +/* IF 10G PORT */ + else if (p_LnxWrpFmPortDev->settings.param.portType == + e_FM_PORT_TYPE_TX_10G) + numOfOpenDmas.num = fm_resource_settings_info->tx_10g_dmas; + else if (p_LnxWrpFmPortDev->settings.param.portType == + e_FM_PORT_TYPE_RX_10G) + numOfOpenDmas.num = fm_resource_settings_info->rx_10g_dmas; +/* IF OH PORT */ + else + numOfOpenDmas.num = fm_resource_settings_info->oh_dmas; + + numOfOpenDmas.extra = fm_resource_settings_info->shared_ext_open_dma; + + errCode = FM_PORT_SetNumOfOpenDmas(p_LnxWrpFmPortDev->h_Dev, + &numOfOpenDmas); + if (errCode != E_OK) { + printk(KERN_WARNING + "FM_PORT_SetNumOfOpenDmas failed (errCode:0x%2x)", + errCode); + return -EIO; + } + + return 0; +} + +/* Compute FMan tnums based on available tnums and number of ports. + Set defaults (minim tresholds) and then distribute leftovers.*/ +int fm_precalculate_tnums(t_LnxWrpFmDev *p_LnxWrpFmDev, int max_fm_tnums) +{ + /* input parameters */ + struct fm_active_ports *fm_active_ports_info = NULL; + int num_1g_ports = 0; + int num_2g5_ports = 0; + int num_10g_ports = 0; + int num_oh_ports = 0; + + /* output parameters */ + struct fm_resource_settings *fm_resource_settings_info = NULL; + int tx_1g_tnums = 0, rx_1g_tnums = 0; + int tx_2g5_tnums = 0, rx_2g5_tnums = 0; + int tx_10g_tnums = 0, rx_10g_tnums = 0; + int oh_tnums = 0; + int shared_ext_tnums = 0; + int err = 0; + + /* open dma calculus */ + int default_and_treshold_rx_tx_10g_tnums = 16; /* DPDE_10g */ + int default_and_treshold_rx_tx_1g_2g5_tnums = 4; /* DPDE_1g */ + int default_and_treshold_oh_tnums = 2; /* Hell knows why */ + int max_tnums_treshold = 64; /* LLD: MAX_NUM_OF_TASKS */ + int max_ext_tnums_treshold = 8; /* LLD: MAX_NUM_OF_EXTRA_TASKS */ + int remaing_tnums = 0; + int tnums_computed = 0; + int leftovers = 0; + bool re_loop = true; + + /* check input parameters correctness */ + ASSERT_COND(p_LnxWrpFmDev != NULL); + fm_active_ports_info = &p_LnxWrpFmDev->fm_active_ports_info; + fm_resource_settings_info = &p_LnxWrpFmDev->fm_resource_settings_info; + ASSERT_COND(fm_active_ports_info != NULL); + ASSERT_COND(fm_resource_settings_info != NULL); + ASSERT_COND(fm_active_ports_info->num_tx_ports == + fm_active_ports_info->num_rx_ports); + ASSERT_COND(fm_active_ports_info->num_tx25_ports == + fm_active_ports_info->num_tx25_ports); + ASSERT_COND(fm_active_ports_info->num_tx10_ports == + fm_active_ports_info->num_tx10_ports); + + /* set input parameters */ + num_1g_ports = fm_active_ports_info->num_tx_ports; + num_2g5_ports = fm_active_ports_info->num_tx25_ports; + num_10g_ports = fm_active_ports_info->num_tx10_ports; + num_oh_ports = fm_active_ports_info->num_oh_ports; + + /* compute FMan TNUMs per port */ + /* ------------------------------------------------------- */ + if (num_1g_ports) { + tx_1g_tnums = default_and_treshold_rx_tx_1g_2g5_tnums; + rx_1g_tnums = default_and_treshold_rx_tx_1g_2g5_tnums; + } + if (num_2g5_ports) { + tx_2g5_tnums = default_and_treshold_rx_tx_1g_2g5_tnums; + rx_2g5_tnums = default_and_treshold_rx_tx_1g_2g5_tnums; + } + if (num_10g_ports) { + tx_10g_tnums = default_and_treshold_rx_tx_10g_tnums; + rx_10g_tnums = default_and_treshold_rx_tx_10g_tnums; + } + if (num_oh_ports) + oh_tnums = default_and_treshold_oh_tnums; + + shared_ext_tnums = num_10g_ports ? + max_ext_tnums_treshold : 2; /* DEFAULT_PORT_extraNumOfTasks */ + + /* based on total number of ports set open DMAs for all other ports */ + remaing_tnums = max_fm_tnums - + (oh_tnums * num_oh_ports) - + (tx_1g_tnums * num_1g_ports + rx_1g_tnums * num_1g_ports) - + (tx_2g5_tnums * num_2g5_ports + rx_2g5_tnums * num_2g5_ports) - + (tx_10g_tnums * num_10g_ports + rx_10g_tnums * num_10g_ports) - + shared_ext_tnums; + + if (remaing_tnums < 0) { + printk(KERN_ALERT + "This configuration will not work due to low number" + " of tnums (%u tnums) and number of total ports" + " available...\n", + max_fm_tnums); + err = -1; + goto precalculated_tnums_out; + } + + leftovers = remaing_tnums; + re_loop = true; + while (leftovers > 0 && re_loop == true) { + re_loop = false; + if (num_10g_ports && (leftovers - (int) num_10g_ports) >= 0 + && (rx_10g_tnums < max_tnums_treshold)) { + rx_10g_tnums++; + leftovers -= num_10g_ports; + re_loop = true; + } + + if (num_10g_ports && (leftovers - (int) num_10g_ports) >= 0 + && (tx_10g_tnums < max_tnums_treshold)) { + tx_10g_tnums++; + leftovers -= num_10g_ports; + re_loop = true; + } + + if (num_2g5_ports && (leftovers - (int) num_2g5_ports) >= 0 + && (rx_2g5_tnums < max_tnums_treshold)) { + rx_2g5_tnums++; + leftovers -= num_2g5_ports; + re_loop = true; + } + + if (num_2g5_ports && (leftovers - (int) num_2g5_ports) >= 0 + && (tx_2g5_tnums < max_tnums_treshold)) { + tx_2g5_tnums++; + leftovers -= num_2g5_ports; + re_loop = true; + } + + if (num_1g_ports && (leftovers - (int) num_1g_ports) >= 0 + && (rx_1g_tnums < max_tnums_treshold)) { + rx_1g_tnums++; + leftovers -= num_1g_ports; + re_loop = true; + } + + if (num_1g_ports && (leftovers - (int) num_1g_ports) >= 0 + && (tx_1g_tnums < max_tnums_treshold)) { + tx_1g_tnums++; + leftovers -= num_1g_ports; + re_loop = true; + } + } + + tnums_computed = + num_1g_ports * tx_1g_tnums + + num_1g_ports * rx_1g_tnums + + num_2g5_ports * tx_2g5_tnums + + num_2g5_ports * rx_2g5_tnums + + num_10g_ports * tx_10g_tnums + + num_10g_ports * rx_10g_tnums + + num_oh_ports * oh_tnums + + shared_ext_tnums; + + if (leftovers > 0) + shared_ext_tnums = + MIN(shared_ext_tnums + max_fm_tnums - tnums_computed, + max_ext_tnums_treshold); + + ASSERT_COND((oh_tnums * num_oh_ports) + + (tx_1g_tnums * num_1g_ports + rx_1g_tnums * num_1g_ports) + + (tx_2g5_tnums * num_2g5_ports + + rx_2g5_tnums * num_2g5_ports) + + (tx_10g_tnums * num_10g_ports + + rx_10g_tnums * num_10g_ports) + shared_ext_tnums <= + max_fm_tnums); + + /* set computed tnums */ + fm_resource_settings_info->tx_1g_tnums = tx_1g_tnums; + fm_resource_settings_info->rx_1g_tnums = rx_1g_tnums; + fm_resource_settings_info->tx_2g5_tnums = tx_2g5_tnums; + fm_resource_settings_info->rx_2g5_tnums = rx_2g5_tnums; + fm_resource_settings_info->tx_10g_tnums = tx_10g_tnums; + fm_resource_settings_info->rx_10g_tnums = rx_10g_tnums; + fm_resource_settings_info->oh_tnums = oh_tnums; + fm_resource_settings_info->shared_ext_tnums = shared_ext_tnums; + +precalculated_tnums_out: + printk(KERN_INFO " FMAN(%u) Tnums settings:\n", p_LnxWrpFmDev->id); + printk(KERN_INFO " - Total Tnums available(%u)\n", max_fm_tnums); + if (num_1g_ports) { + printk(KERN_INFO " - 1G ports TX %u(%u)\n", num_1g_ports, + tx_1g_tnums); + printk(KERN_INFO " - 1G ports RX %u(%u)\n", num_1g_ports, + rx_1g_tnums); + } + if (num_2g5_ports) { + printk(KERN_INFO " - 2.5G ports TX %u(%u)\n", num_2g5_ports, + tx_2g5_tnums); + printk(KERN_INFO " - 2.5G ports RX %u(%u)\n", num_2g5_ports, + rx_2g5_tnums); + } + if (num_10g_ports) { + printk(KERN_INFO " - 10G ports TX %u(%u)\n", num_10g_ports, + tx_10g_tnums); + printk(KERN_INFO " - 10G ports RX %u(%u)\n", num_10g_ports, + rx_10g_tnums); + } + if (num_oh_ports) + printk(KERN_INFO " - OH-HC ports %u(%u)\n", num_oh_ports, + oh_tnums); + printk(KERN_INFO " - Shared extra tnums(%u)\n", shared_ext_tnums); + + return err; +} + +int fm_set_precalculate_tnums(t_LnxWrpFmPortDev *p_LnxWrpFmPortDev) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = + (t_LnxWrpFmDev *) p_LnxWrpFmPortDev->h_LnxWrpFmDev; + struct fm_resource_settings *fm_resource_settings_info = NULL; + t_FmPortRsrc numOfTask; + t_Error errCode; + + ASSERT_COND(p_LnxWrpFmDev != NULL); + fm_resource_settings_info = &p_LnxWrpFmDev->fm_resource_settings_info; + + memset(&numOfTask, 0, sizeof(t_FmPortRsrc)); + +/* IF 1G PORT */ + if (p_LnxWrpFmPortDev->settings.param.portType == e_FM_PORT_TYPE_TX) + numOfTask.num = fm_resource_settings_info->tx_1g_tnums; + else if (p_LnxWrpFmPortDev->settings.param.portType == + e_FM_PORT_TYPE_RX) + numOfTask.num = fm_resource_settings_info->rx_1g_tnums; +/* IF 2.5G PORT*/ + /* TODO: Not supported by LLD yet. */ + +/* IF 10G PORT */ + else if (p_LnxWrpFmPortDev->settings.param.portType == + e_FM_PORT_TYPE_TX_10G) + numOfTask.num = fm_resource_settings_info->tx_10g_tnums; + else if (p_LnxWrpFmPortDev->settings.param.portType == + e_FM_PORT_TYPE_RX_10G) + numOfTask.num = fm_resource_settings_info->rx_10g_tnums; +/* IF OH PORT */ + else + numOfTask.num = fm_resource_settings_info->oh_dmas; + + numOfTask.extra = fm_resource_settings_info->shared_ext_tnums; + + errCode = FM_PORT_SetNumOfTasks(p_LnxWrpFmPortDev->h_Dev, &numOfTask); + if (errCode != E_OK) { + printk(KERN_WARNING + "FM_PORT_SetNumOfTasks failed (errCode:0x%2x)", + errCode); + return -EIO; + } + + return 0; +} --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_resources.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_resources.h @@ -0,0 +1,111 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 lnxwrp_resources.h + + @Description FMD wrapper resource allocation functions. + +*/ + +#ifndef LNXWRP_RESOURCES_H_ +#define LNXWRP_RESOURCES_H_ + +#include "lnxwrp_fm.h" + +#define ROUND(X) ((2*(X)+1)/2) +#define CEIL(X) ((X)+1) +/* #define ROUND_DIV(X, Y) (((X)+(Y)/2)/(Y)) */ +#define ROUND_DIV(X, Y) ((2*(X)+(Y))/(2*(Y))) +#define CEIL_DIV(X, Y) (((X)+(Y)-1)/(Y)) + +/* used for resource calculus */ +#define DPDE_1G 2 /* DQDP 1g - from LLD: + DEFAULT_PORT_txFifoDeqPipelineDepth_1G */ +#define DPDE_10G 8 /* DQDP 10g - from LLD: + DEFAULT_PORT_txFifoDeqPipelineDepth_10G */ + +int fm_set_active_fman_ports(struct platform_device *of_dev, + t_LnxWrpFmDev *p_LnxWrpFmDev); + +/* Calculate the fifosize based on MURAM allocation, number of ports, dpde + * value and s/g software support (! Kernel does not suport s/g). + * + * Algorithm summary: + * - Calculate the the minimum fifosize required for every type of port + * (TX,RX for 1G, 2.5G and 10G). + * - Set TX the minimum fifosize required. + * - Distribute the remaining buffers (after all TX were set) to RX ports + * based on: + * 1G RX = Remaining_buffers * 1/(1+2.5+10) + * 2.5G RX = Remaining_buffers * 2.5/(1+2.5+10) + * 10G RX = Remaining_buffers * 10/(1+2.5+10) + * - if the RX is smaller than the minimum required, then set the minimum + * required + * - In the end distribuite the leftovers if there are any (due to + * unprecise calculus) or if over allocation cat some buffers from all RX + * ports w/o pass over minimum required treshold, but if there must be + * pass the treshold in order to cat the over allocation ,then this + * configuration can not be set - KERN_ALERT. +*/ +int fm_precalculate_fifosizes(t_LnxWrpFmDev *p_LnxWrpFmDev, + int muram_fifo_size); + +int fm_set_precalculate_fifosize(t_LnxWrpFmPortDev *p_LnxWrpFmPortDev); + +/* Compute FMan open DMA based on total number of open DMAs and + * number of available fman ports. + * + * By default 10g ports are set to input parameters. The other ports + * tries to keep the proportion rx=2tx open dmas or tresholds. + * + * If leftovers, then those will be set as shared. + * + * If after computing overflow appears, then it decrements open dma + * for all ports w/o cross the tresholds. If the tresholds are meet + * and is still overflow, then it returns error. +*/ +int fm_precalculate_open_dma(t_LnxWrpFmDev *p_LnxWrpFmDev, + int max_fm_open_dma, + int default_tx_10g_dmas, + int default_rx_10g_dmas, + int min_tx_10g_treshold, int min_rx_10g_treshold); + +int fm_set_precalculate_open_dma(t_LnxWrpFmPortDev *p_LnxWrpFmPortDev); + +/* Compute FMan tnums based on available tnums and number of ports. + * Set defaults (minim tresholds) and then distribute leftovers.*/ +int fm_precalculate_tnums(t_LnxWrpFmDev *p_LnxWrpFmDev, int max_fm_tnums); + +int fm_set_precalculate_tnums(t_LnxWrpFmPortDev *p_LnxWrpFmPortDev); + +#endif /* LNXWRP_RESOURCES_H_ */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_sysfs.c +++ linux-3.13.0/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_sysfs.c @@ -0,0 +1,60 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 lnxwrp_sysfs.c + + @Description FM wrapper sysfs related functions. + +*/ + +#include +#include "lnxwrp_sysfs.h" + +uint8_t fm_find_statistic_counter_by_name(const char *attr_name, + struct SysfsStats_t *sysfs_stats, + uint8_t *offset) +{ + int i = 0; + + while (sysfs_stats[i].statisticName != NULL) { + if (strcmp(sysfs_stats[i].statisticName, attr_name) == 0) { + if (offset != NULL) + *offset = i; + return sysfs_stats[i].statisticCounter; + } + + i++; + } + WARN(1, "FMD: Should never get here!"); + return 0; +} --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_sysfs.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_sysfs.h @@ -0,0 +1,67 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 lnxwrp_sysfs.h + + @Description FM sysfs functions. + +*/ + +#ifndef LNXWRP_SYSFS_H_ +#define LNXWRP_SYSFS_H_ + +/* Linux Headers ------------------- */ +#include + +#if defined(CONFIG_MODVERSIONS) && !defined(MODVERSIONS) +#define MODVERSIONS +#endif +#ifdef MODVERSIONS +#include +#endif /* MODVERSIONS */ + +#include +#include +#include +#include + +struct SysfsStats_t { + const char *statisticName; + uint8_t statisticCounter; +}; + +uint8_t fm_find_statistic_counter_by_name(const char *attr_name, + struct SysfsStats_t *sysfs_stats, + uint8_t *offset); + +#endif /* LNXWRP_SYSFS_H_ */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_sysfs_fm.c +++ linux-3.13.0/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_sysfs_fm.c @@ -0,0 +1,575 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 lnxwrp_sysfs_fm.c + + @Description FM sysfs related functions. + +*/ + +#include "lnxwrp_sysfs.h" +#include "lnxwrp_fm.h" + +enum e_FmDmaMatchStatistics { + e_FM_DMA_COUNTERS_CMQ_NOT_EMPTY, + e_FM_DMA_COUNTERS_BUS_ERROR, + e_FM_DMA_COUNTERS_READ_BUF_ECC_ERROR, + e_FM_DMA_COUNTERS_WRITE_BUF_ECC_SYS_ERROR, + e_FM_DMA_COUNTERS_WRITE_BUF_ECC_FM_ERROR +}; + +static const struct SysfsStats_t fmSysfsStats[] = { + /* FM statistics */ + { + .statisticName = "enq_total_frame", + .statisticCounter = e_FM_COUNTERS_ENQ_TOTAL_FRAME, + }, + { + .statisticName = "deq_total_frame", + .statisticCounter = e_FM_COUNTERS_DEQ_TOTAL_FRAME, + }, + { + .statisticName = "deq_0", + .statisticCounter = e_FM_COUNTERS_DEQ_0, + }, + { + .statisticName = "deq_1", + .statisticCounter = e_FM_COUNTERS_DEQ_1, + }, + { + .statisticName = "deq_2", + .statisticCounter = e_FM_COUNTERS_DEQ_2, + }, + { + .statisticName = "deq_from_default", + .statisticCounter = e_FM_COUNTERS_DEQ_FROM_DEFAULT, + }, + { + .statisticName = "deq_from_context", + .statisticCounter = e_FM_COUNTERS_DEQ_FROM_CONTEXT, + }, + { + .statisticName = "deq_from_fd", + .statisticCounter = e_FM_COUNTERS_DEQ_FROM_FD, + }, + { + .statisticName = "deq_confirm", + .statisticCounter = e_FM_COUNTERS_DEQ_CONFIRM, + }, + /* FM:DMA statistics */ + { + .statisticName = "cmq_not_empty", + .statisticCounter = e_FM_DMA_COUNTERS_CMQ_NOT_EMPTY, + }, + { + .statisticName = "bus_error", + .statisticCounter = e_FM_DMA_COUNTERS_BUS_ERROR, + }, + { + .statisticName = "read_buf_ecc_error", + .statisticCounter = e_FM_DMA_COUNTERS_READ_BUF_ECC_ERROR, + }, + { + .statisticName = "write_buf_ecc_sys_error", + .statisticCounter = e_FM_DMA_COUNTERS_WRITE_BUF_ECC_SYS_ERROR, + }, + { + .statisticName = "write_buf_ecc_fm_error", + .statisticCounter = e_FM_DMA_COUNTERS_WRITE_BUF_ECC_FM_ERROR, + }, + /* FM:PCD statistics */ + { + .statisticName = "pcd_enq_total_frame", + .statisticCounter = e_FM_COUNTERS_ENQ_TOTAL_FRAME, + }, + { + .statisticName = "pcd_kg_total", + .statisticCounter = e_FM_PCD_KG_COUNTERS_TOTAL, + }, + { + .statisticName = "pcd_plcr_yellow", + .statisticCounter = e_FM_PCD_PLCR_COUNTERS_YELLOW, + }, + { + .statisticName = "pcd_plcr_red", + .statisticCounter = e_FM_PCD_PLCR_COUNTERS_RED, + }, + { + .statisticName = "pcd_plcr_recolored_to_red", + .statisticCounter = e_FM_PCD_PLCR_COUNTERS_RECOLORED_TO_RED, + }, + { + .statisticName = "pcd_plcr_recolored_to_yellow", + .statisticCounter = e_FM_PCD_PLCR_COUNTERS_RECOLORED_TO_YELLOW, + }, + { + .statisticName = "pcd_plcr_total", + .statisticCounter = e_FM_PCD_PLCR_COUNTERS_TOTAL, + }, + { + .statisticName = "pcd_plcr_length_mismatch", + .statisticCounter = e_FM_PCD_PLCR_COUNTERS_LENGTH_MISMATCH, + }, + { + .statisticName = "pcd_prs_parse_dispatch", + .statisticCounter = e_FM_PCD_PRS_COUNTERS_PARSE_DISPATCH, + }, + { + .statisticName = "pcd_prs_l2_parse_result_returned", + .statisticCounter = e_FM_PCD_PRS_COUNTERS_L2_PARSE_RESULT_RETURNED, + }, + { + .statisticName = "pcd_prs_l3_parse_result_returned", + .statisticCounter = e_FM_PCD_PRS_COUNTERS_L3_PARSE_RESULT_RETURNED, + }, + { + .statisticName = "pcd_prs_l4_parse_result_returned", + .statisticCounter = e_FM_PCD_PRS_COUNTERS_L4_PARSE_RESULT_RETURNED, + }, + { + .statisticName = "pcd_prs_shim_parse_result_returned", + .statisticCounter = e_FM_PCD_PRS_COUNTERS_SHIM_PARSE_RESULT_RETURNED, + }, + { + .statisticName = "pcd_prs_l2_parse_result_returned_with_err", + .statisticCounter = + e_FM_PCD_PRS_COUNTERS_L2_PARSE_RESULT_RETURNED_WITH_ERR, + }, + { + .statisticName = "pcd_prs_l3_parse_result_returned_with_err", + .statisticCounter = + e_FM_PCD_PRS_COUNTERS_L3_PARSE_RESULT_RETURNED_WITH_ERR, + }, + { + .statisticName = "pcd_prs_l4_parse_result_returned_with_err", + .statisticCounter = + e_FM_PCD_PRS_COUNTERS_L4_PARSE_RESULT_RETURNED_WITH_ERR, + }, + { + .statisticName = "pcd_prs_shim_parse_result_returned_with_err", + .statisticCounter = + e_FM_PCD_PRS_COUNTERS_SHIM_PARSE_RESULT_RETURNED_WITH_ERR, + }, + { + .statisticName = "pcd_prs_soft_prs_cycles", + .statisticCounter = e_FM_PCD_PRS_COUNTERS_SOFT_PRS_CYCLES, + }, + { + .statisticName = "pcd_prs_soft_prs_stall_cycles", + .statisticCounter = e_FM_PCD_PRS_COUNTERS_SOFT_PRS_STALL_CYCLES, + }, + { + .statisticName = "pcd_prs_hard_prs_cycle_incl_stall_cycles", + .statisticCounter = + e_FM_PCD_PRS_COUNTERS_HARD_PRS_CYCLE_INCL_STALL_CYCLES, + }, + { + .statisticName = "pcd_prs_muram_read_cycles", + .statisticCounter = e_FM_PCD_PRS_COUNTERS_MURAM_READ_CYCLES, + }, + { + .statisticName = "pcd_prs_muram_read_stall_cycles", + .statisticCounter = e_FM_PCD_PRS_COUNTERS_MURAM_READ_STALL_CYCLES, + }, + { + .statisticName = "pcd_prs_muram_write_cycles", + .statisticCounter = e_FM_PCD_PRS_COUNTERS_MURAM_WRITE_CYCLES, + }, + { + .statisticName = "pcd_prs_muram_write_stall_cycles", + .statisticCounter = e_FM_PCD_PRS_COUNTERS_MURAM_WRITE_STALL_CYCLES, + }, + { + .statisticName = "pcd_prs_fpm_command_stall_cycles", + .statisticCounter = e_FM_PCD_PRS_COUNTERS_FPM_COMMAND_STALL_CYCLES, + }, + {} +}; + +/* Fm stats and regs dumps via sysfs */ +static ssize_t show_fm_dma_stats(struct device *dev, + struct device_attribute *attr, char *buf) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = NULL; + t_FmDmaStatus fmDmaStatus; + unsigned long flags = 0; + unsigned n = 0; + uint8_t counter_value = 0, counter = 0; + + if (attr == NULL || buf == NULL || dev == NULL) + return -EINVAL; + + p_LnxWrpFmDev = (t_LnxWrpFmDev *) dev_get_drvdata(dev); + if (WARN_ON(p_LnxWrpFmDev == NULL)) + return -EINVAL; + + if (!p_LnxWrpFmDev->active || !p_LnxWrpFmDev->h_Dev) + return -EIO; + + counter = + fm_find_statistic_counter_by_name(attr->attr.name, + (struct SysfsStats_t *) + &fmSysfsStats[0], NULL); + + local_irq_save(flags); + + memset(&fmDmaStatus, 0, sizeof(fmDmaStatus)); + FM_GetDmaStatus(p_LnxWrpFmDev->h_Dev, &fmDmaStatus); + + switch (counter) { + case e_FM_DMA_COUNTERS_CMQ_NOT_EMPTY: + counter_value = fmDmaStatus.cmqNotEmpty; + break; + case e_FM_DMA_COUNTERS_BUS_ERROR: + counter_value = fmDmaStatus.busError; + break; + case e_FM_DMA_COUNTERS_READ_BUF_ECC_ERROR: + counter_value = fmDmaStatus.readBufEccError; + break; + case e_FM_DMA_COUNTERS_WRITE_BUF_ECC_SYS_ERROR: + counter_value = fmDmaStatus.writeBufEccSysError; + break; + case e_FM_DMA_COUNTERS_WRITE_BUF_ECC_FM_ERROR: + counter_value = fmDmaStatus.writeBufEccFmError; + break; + default: + WARN(1, "FMD: failure at %s:%d/%s()!\n", __FILE__, __LINE__, + __func__); + break; + }; + + n = snprintf(buf, PAGE_SIZE, "\tFM %u counter: %c\n", + p_LnxWrpFmDev->id, counter_value ? 'T' : 'F'); + + local_irq_restore(flags); + + return n; +} + +static ssize_t show_fm_stats(struct device *dev, + struct device_attribute *attr, char *buf) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = NULL; + unsigned long flags = 0; + unsigned n = 0, counter = 0; + + if (attr == NULL || buf == NULL || dev == NULL) + return -EINVAL; + + p_LnxWrpFmDev = (t_LnxWrpFmDev *) dev_get_drvdata(dev); + if (WARN_ON(p_LnxWrpFmDev == NULL)) + return -EINVAL; + + if (!p_LnxWrpFmDev->active || !p_LnxWrpFmDev->h_Dev) + return -EIO; + + counter = + fm_find_statistic_counter_by_name(attr->attr.name, + (struct SysfsStats_t *) + &fmSysfsStats[0], NULL); + + local_irq_save(flags); + + n = snprintf(buf, PAGE_SIZE, "\tFM %d counter: %d\n", + p_LnxWrpFmDev->id, + FM_GetCounter(p_LnxWrpFmDev->h_Dev, + (e_FmCounters) counter)); + + local_irq_restore(flags); + + return n; +} + +static ssize_t show_fm_pcd_stats(struct device *dev, + struct device_attribute *attr, char *buf) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = NULL; + unsigned long flags = 0; + unsigned n = 0, counter = 0; + + if (attr == NULL || buf == NULL || dev == NULL) + return -EINVAL; + + p_LnxWrpFmDev = (t_LnxWrpFmDev *) dev_get_drvdata(dev); + if (WARN_ON(p_LnxWrpFmDev == NULL)) + return -EINVAL; + + if (!p_LnxWrpFmDev->active || !p_LnxWrpFmDev->h_Dev) + return -EIO; + + counter = + fm_find_statistic_counter_by_name(attr->attr.name, + (struct SysfsStats_t *) + &fmSysfsStats[0], NULL); + + local_irq_save(flags); + + n = snprintf(buf, PAGE_SIZE, "\tFM %d counter: %d\n", + p_LnxWrpFmDev->id, + FM_PCD_GetCounter(p_LnxWrpFmDev->h_PcdDev, + (e_FmPcdCounters) counter)); + + local_irq_restore(flags); + + return n; +} + +/* FM */ +static DEVICE_ATTR(enq_total_frame, S_IRUGO, show_fm_stats, NULL); +static DEVICE_ATTR(deq_total_frame, S_IRUGO, show_fm_stats, NULL); +static DEVICE_ATTR(deq_0, S_IRUGO, show_fm_stats, NULL); +static DEVICE_ATTR(deq_1, S_IRUGO, show_fm_stats, NULL); +static DEVICE_ATTR(deq_2, S_IRUGO, show_fm_stats, NULL); +static DEVICE_ATTR(deq_from_default, S_IRUGO, show_fm_stats, NULL); +static DEVICE_ATTR(deq_from_context, S_IRUGO, show_fm_stats, NULL); +static DEVICE_ATTR(deq_from_fd, S_IRUGO, show_fm_stats, NULL); +static DEVICE_ATTR(deq_confirm, S_IRUGO, show_fm_stats, NULL); +/* FM:DMA */ +static DEVICE_ATTR(cmq_not_empty, S_IRUGO, show_fm_dma_stats, NULL); +static DEVICE_ATTR(bus_error, S_IRUGO, show_fm_dma_stats, NULL); +static DEVICE_ATTR(read_buf_ecc_error, S_IRUGO, show_fm_dma_stats, NULL); +static DEVICE_ATTR(write_buf_ecc_sys_error, S_IRUGO, show_fm_dma_stats, NULL); +static DEVICE_ATTR(write_buf_ecc_fm_error, S_IRUGO, show_fm_dma_stats, NULL); +/* FM:PCD */ +static DEVICE_ATTR(pcd_enq_total_frame, S_IRUGO, show_fm_pcd_stats, NULL); +static DEVICE_ATTR(pcd_kg_total, S_IRUGO, show_fm_pcd_stats, NULL); +static DEVICE_ATTR(pcd_plcr_yellow, S_IRUGO, show_fm_pcd_stats, NULL); +static DEVICE_ATTR(pcd_plcr_red, S_IRUGO, show_fm_pcd_stats, NULL); +static DEVICE_ATTR(pcd_plcr_recolored_to_red, S_IRUGO, show_fm_pcd_stats, + NULL); +static DEVICE_ATTR(pcd_plcr_recolored_to_yellow, S_IRUGO, show_fm_pcd_stats, + NULL); +static DEVICE_ATTR(pcd_plcr_total, S_IRUGO, show_fm_pcd_stats, NULL); +static DEVICE_ATTR(pcd_plcr_length_mismatch, S_IRUGO, show_fm_pcd_stats, + NULL); +static DEVICE_ATTR(pcd_prs_parse_dispatch, S_IRUGO, show_fm_pcd_stats, NULL); +static DEVICE_ATTR(pcd_prs_l2_parse_result_returned, S_IRUGO, + show_fm_pcd_stats, NULL); +static DEVICE_ATTR(pcd_prs_l3_parse_result_returned, S_IRUGO, + show_fm_pcd_stats, NULL); +static DEVICE_ATTR(pcd_prs_l4_parse_result_returned, S_IRUGO, + show_fm_pcd_stats, NULL); +static DEVICE_ATTR(pcd_prs_shim_parse_result_returned, S_IRUGO, + show_fm_pcd_stats, NULL); +static DEVICE_ATTR(pcd_prs_l2_parse_result_returned_with_err, S_IRUGO, + show_fm_pcd_stats, NULL); +static DEVICE_ATTR(pcd_prs_l3_parse_result_returned_with_err, S_IRUGO, + show_fm_pcd_stats, NULL); +static DEVICE_ATTR(pcd_prs_l4_parse_result_returned_with_err, S_IRUGO, + show_fm_pcd_stats, NULL); +static DEVICE_ATTR(pcd_prs_shim_parse_result_returned_with_err, S_IRUGO, + show_fm_pcd_stats, NULL); +static DEVICE_ATTR(pcd_prs_soft_prs_cycles, S_IRUGO, show_fm_pcd_stats, NULL); +static DEVICE_ATTR(pcd_prs_soft_prs_stall_cycles, S_IRUGO, show_fm_pcd_stats, + NULL); +static DEVICE_ATTR(pcd_prs_hard_prs_cycle_incl_stall_cycles, S_IRUGO, + show_fm_pcd_stats, NULL); +static DEVICE_ATTR(pcd_prs_muram_read_cycles, S_IRUGO, show_fm_pcd_stats, + NULL); +static DEVICE_ATTR(pcd_prs_muram_read_stall_cycles, S_IRUGO, + show_fm_pcd_stats, NULL); +static DEVICE_ATTR(pcd_prs_muram_write_cycles, S_IRUGO, show_fm_pcd_stats, + NULL); +static DEVICE_ATTR(pcd_prs_muram_write_stall_cycles, S_IRUGO, + show_fm_pcd_stats, NULL); +static DEVICE_ATTR(pcd_prs_fpm_command_stall_cycles, S_IRUGO, + show_fm_pcd_stats, NULL); + +static struct attribute *fm_dev_stats_attributes[] = { + &dev_attr_enq_total_frame.attr, + &dev_attr_deq_total_frame.attr, + &dev_attr_deq_0.attr, + &dev_attr_deq_1.attr, + &dev_attr_deq_2.attr, + &dev_attr_deq_from_default.attr, + &dev_attr_deq_from_context.attr, + &dev_attr_deq_from_fd.attr, + &dev_attr_deq_confirm.attr, + &dev_attr_cmq_not_empty.attr, + &dev_attr_bus_error.attr, + &dev_attr_read_buf_ecc_error.attr, + &dev_attr_write_buf_ecc_sys_error.attr, + &dev_attr_write_buf_ecc_fm_error.attr, + &dev_attr_pcd_enq_total_frame.attr, + &dev_attr_pcd_kg_total.attr, + &dev_attr_pcd_plcr_yellow.attr, + &dev_attr_pcd_plcr_red.attr, + &dev_attr_pcd_plcr_recolored_to_red.attr, + &dev_attr_pcd_plcr_recolored_to_yellow.attr, + &dev_attr_pcd_plcr_total.attr, + &dev_attr_pcd_plcr_length_mismatch.attr, + &dev_attr_pcd_prs_parse_dispatch.attr, + &dev_attr_pcd_prs_l2_parse_result_returned.attr, + &dev_attr_pcd_prs_l3_parse_result_returned.attr, + &dev_attr_pcd_prs_l4_parse_result_returned.attr, + &dev_attr_pcd_prs_shim_parse_result_returned.attr, + &dev_attr_pcd_prs_l2_parse_result_returned_with_err.attr, + &dev_attr_pcd_prs_l3_parse_result_returned_with_err.attr, + &dev_attr_pcd_prs_l4_parse_result_returned_with_err.attr, + &dev_attr_pcd_prs_shim_parse_result_returned_with_err.attr, + &dev_attr_pcd_prs_soft_prs_cycles.attr, + &dev_attr_pcd_prs_soft_prs_stall_cycles.attr, + &dev_attr_pcd_prs_hard_prs_cycle_incl_stall_cycles.attr, + &dev_attr_pcd_prs_muram_read_cycles.attr, + &dev_attr_pcd_prs_muram_read_stall_cycles.attr, + &dev_attr_pcd_prs_muram_write_cycles.attr, + &dev_attr_pcd_prs_muram_write_stall_cycles.attr, + &dev_attr_pcd_prs_fpm_command_stall_cycles.attr, + NULL +}; + +static const struct attribute_group fm_dev_stats_attr_grp = { + .name = "statistics", + .attrs = fm_dev_stats_attributes +}; + +static ssize_t show_fm_regs(struct device *dev, struct device_attribute *attr, + char *buf) +{ + unsigned long flags; + unsigned n = 0; +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) + t_LnxWrpFmDev *p_LnxWrpFmDev = NULL; +#endif + + if (attr == NULL || buf == NULL || dev == NULL) + return -EINVAL; + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) + + p_LnxWrpFmDev = (t_LnxWrpFmDev *) dev_get_drvdata(dev); + if (WARN_ON(p_LnxWrpFmDev == NULL)) + return -EINVAL; + + local_irq_save(flags); + + n = snprintf(buf, PAGE_SIZE, "FM driver registers dump.\n"); + + if (!p_LnxWrpFmDev->active || !p_LnxWrpFmDev->h_Dev) + return -EIO; + else + FM_DumpRegs(p_LnxWrpFmDev->h_Dev); + + local_irq_restore(flags); +#else + + local_irq_save(flags); + n = snprintf(buf, PAGE_SIZE, + "Debug level is too low to dump registers!!!\n"); + local_irq_restore(flags); +#endif /* (defined(DEBUG_ERRORS) && ... */ + + return n; +} + +static ssize_t show_pcd_regs(struct device *dev, + struct device_attribute *attr, char *buf) +{ + unsigned long flags; + unsigned n = 0; +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) + t_LnxWrpFmDev *p_LnxWrpFmDev = NULL; +#endif + + if (attr == NULL || buf == NULL || dev == NULL) + return -EINVAL; + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) + p_LnxWrpFmDev = (t_LnxWrpFmDev *) dev_get_drvdata(dev); + if (WARN_ON(p_LnxWrpFmDev == NULL)) + return -EINVAL; + + local_irq_save(flags); + n = snprintf(buf, PAGE_SIZE, "FM driver registers dump.\n"); + + if (!p_LnxWrpFmDev->active || !p_LnxWrpFmDev->h_PcdDev) + return -EIO; + else + FM_PCD_DumpRegs(p_LnxWrpFmDev->h_PcdDev); + + local_irq_restore(flags); +#else + + local_irq_save(flags); + n = snprintf(buf, PAGE_SIZE, + "Debug level is too low to dump registers!!!\n"); + local_irq_restore(flags); + +#endif /* (defined(DEBUG_ERRORS) && ... */ + + return n; +} + +static DEVICE_ATTR(fm_regs, S_IRUGO, show_fm_regs, NULL); +static DEVICE_ATTR(fm_pcd_regs, S_IRUGO, show_pcd_regs, NULL); + +int fm_sysfs_create(struct device *dev) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = NULL; + + if (dev == NULL) + return -EIO; + + p_LnxWrpFmDev = (t_LnxWrpFmDev *) dev_get_drvdata(dev); + + /* store to remove them when module is disabled */ + p_LnxWrpFmDev->dev_attr_regs = &dev_attr_fm_regs; + p_LnxWrpFmDev->dev_pcd_attr_regs = &dev_attr_fm_pcd_regs; + + /* Create sysfs statistics group for FM module */ + if (sysfs_create_group(&dev->kobj, &fm_dev_stats_attr_grp) != 0) + return -EIO; + + /* Registers dump entry - in future will be moved to debugfs */ + if (device_create_file(dev, &dev_attr_fm_regs) != 0 || + device_create_file(dev, &dev_attr_fm_pcd_regs) != 0) + return -EIO; + + return 0; +} + +void fm_sysfs_destroy(struct device *dev) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = NULL; + + if (WARN_ON(dev == NULL)) + return; + + p_LnxWrpFmDev = (t_LnxWrpFmDev *) dev_get_drvdata(dev); + if (WARN_ON(p_LnxWrpFmDev == NULL)) + return; + + sysfs_remove_group(&dev->kobj, &fm_dev_stats_attr_grp); + device_remove_file(dev, p_LnxWrpFmDev->dev_attr_regs); + device_remove_file(dev, p_LnxWrpFmDev->dev_pcd_attr_regs); +} --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_sysfs_fm.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_sysfs_fm.h @@ -0,0 +1,48 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 lnxwrp_sysfs_fm.h + + @Description FM sysfs functions. + +*/ + +#ifndef LNXWRP_SYSFS_FM_H_ +#define LNXWRP_SYSFS_FM_H_ + +#include "lnxwrp_sysfs.h" + +int fm_sysfs_create(struct device *dev); +void fm_sysfs_destroy(struct device *dev); + +#endif /* LNXWRP_SYSFS_FM_H_ */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_sysfs_fm_port.c +++ linux-3.13.0/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_sysfs_fm_port.c @@ -0,0 +1,364 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 lnxwrp_sysfs_fm_port.c + + @Description FM port sysfs related functions. + +*/ + +#include "lnxwrp_sysfs.h" +#include "lnxwrp_fm.h" + +static const struct SysfsStats_t portSysfsStats[] = { + /* RX/TX/OH common statistics */ + { + .statisticName = "port_frame", + .statisticCounter = e_FM_PORT_COUNTERS_FRAME, + }, + { + .statisticName = "port_discard_frame", + .statisticCounter = e_FM_PORT_COUNTERS_DISCARD_FRAME, + }, + { + .statisticName = "port_dealloc_buf", + .statisticCounter = e_FM_PORT_COUNTERS_DEALLOC_BUF, + }, + { + .statisticName = "port_enq_total", + .statisticCounter = e_FM_PORT_COUNTERS_ENQ_TOTAL, + }, + /* TX/OH */ + { + .statisticName = "port_length_err", + .statisticCounter = e_FM_PORT_COUNTERS_LENGTH_ERR, + }, + { + .statisticName = "port_unsupprted_format", + .statisticCounter = e_FM_PORT_COUNTERS_UNSUPPRTED_FORMAT, + }, + { + .statisticName = "port_deq_total", + .statisticCounter = e_FM_PORT_COUNTERS_DEQ_TOTAL, + }, + { + .statisticName = "port_deq_from_default", + .statisticCounter = e_FM_PORT_COUNTERS_DEQ_FROM_DEFAULT, + }, + { + .statisticName = "port_deq_confirm", + .statisticCounter = e_FM_PORT_COUNTERS_DEQ_CONFIRM, + }, + /* RX/OH */ + { + .statisticName = "port_rx_bad_frame", + .statisticCounter = e_FM_PORT_COUNTERS_RX_BAD_FRAME, + }, + { + .statisticName = "port_rx_large_frame", + .statisticCounter = e_FM_PORT_COUNTERS_RX_LARGE_FRAME, + }, + { + .statisticName = "port_rx_out_of_buffers_discard", + .statisticCounter = e_FM_PORT_COUNTERS_RX_OUT_OF_BUFFERS_DISCARD, + }, + { + .statisticName = "port_rx_filter_frame", + .statisticCounter = e_FM_PORT_COUNTERS_RX_FILTER_FRAME, + }, + /* TODO: Particular statistics for OH ports */ + {} +}; + +static ssize_t show_fm_port_stats(struct device *dev, + struct device_attribute *attr, char *buf) +{ + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev; + t_LnxWrpFmDev *p_LnxWrpFmDev; + unsigned long flags; + int n = 0; + uint8_t counter = 0; + + if (attr == NULL || buf == NULL || dev == NULL) + return -EINVAL; + + p_LnxWrpFmPortDev = (t_LnxWrpFmPortDev *) dev_get_drvdata(dev); + if (WARN_ON(p_LnxWrpFmPortDev == NULL)) + return -EINVAL; + + p_LnxWrpFmDev = (t_LnxWrpFmDev *) p_LnxWrpFmPortDev->h_LnxWrpFmDev; + if (WARN_ON(p_LnxWrpFmDev == NULL)) + return -EINVAL; + + if (!p_LnxWrpFmDev->active || !p_LnxWrpFmDev->h_Dev) + return -EIO; + + if (!p_LnxWrpFmPortDev->h_Dev) { + n = snprintf(buf, PAGE_SIZE, "\tFM Port not configured...\n"); + return n; + } + + counter = + fm_find_statistic_counter_by_name(attr->attr.name, + (struct SysfsStats_t *) & + portSysfsStats[0], NULL); + + if (counter == e_FM_PORT_COUNTERS_RX_LIST_DMA_ERR) { + uint32_t fmRev = 0; + fmRev = 0xffff & ioread32(UINT_TO_PTR(p_LnxWrpFmDev->fmBaseAddr + + 0x000c30c4)); + + if (fmRev == 0x0100) { + local_irq_save(flags); + n = snprintf(buf, PAGE_SIZE, + "counter not available for revision 1\n"); + local_irq_restore(flags); + } + return n; + } + + local_irq_save(flags); + n = snprintf(buf, PAGE_SIZE, "\tFM %d Port %d counter: %d\n", + p_LnxWrpFmDev->id, + p_LnxWrpFmPortDev->id, + FM_PORT_GetCounter(p_LnxWrpFmPortDev->h_Dev, + (e_FmPortCounters) counter)); + local_irq_restore(flags); + + return n; +} + +/* FM PORT RX/TX/OH statistics */ +static DEVICE_ATTR(port_frame, S_IRUGO, show_fm_port_stats, NULL); +static DEVICE_ATTR(port_discard_frame, S_IRUGO, show_fm_port_stats, NULL); +static DEVICE_ATTR(port_dealloc_buf, S_IRUGO, show_fm_port_stats, NULL); +static DEVICE_ATTR(port_enq_total, S_IRUGO, show_fm_port_stats, NULL); +/* FM PORT TX/OH statistics */ +static DEVICE_ATTR(port_length_err, S_IRUGO, show_fm_port_stats, NULL); +static DEVICE_ATTR(port_unsupprted_format, S_IRUGO, show_fm_port_stats, NULL); +static DEVICE_ATTR(port_deq_total, S_IRUGO, show_fm_port_stats, NULL); +static DEVICE_ATTR(port_deq_from_default, S_IRUGO, show_fm_port_stats, NULL); +static DEVICE_ATTR(port_deq_confirm, S_IRUGO, show_fm_port_stats, NULL); +/* FM PORT RX/OH statistics */ +static DEVICE_ATTR(port_rx_bad_frame, S_IRUGO, show_fm_port_stats, NULL); +static DEVICE_ATTR(port_rx_large_frame, S_IRUGO, show_fm_port_stats, NULL); +static DEVICE_ATTR(port_rx_out_of_buffers_discard, S_IRUGO, + show_fm_port_stats, NULL); +static DEVICE_ATTR(port_rx_filter_frame, S_IRUGO, show_fm_port_stats, NULL); + +/* FM PORT TX statistics */ +static struct attribute *fm_tx_port_dev_stats_attributes[] = { + &dev_attr_port_frame.attr, + &dev_attr_port_discard_frame.attr, + &dev_attr_port_dealloc_buf.attr, + &dev_attr_port_enq_total.attr, + &dev_attr_port_length_err.attr, + &dev_attr_port_unsupprted_format.attr, + &dev_attr_port_deq_total.attr, + &dev_attr_port_deq_from_default.attr, + &dev_attr_port_deq_confirm.attr, + NULL +}; + +static const struct attribute_group fm_tx_port_dev_stats_attr_grp = { + .name = "statistics", + .attrs = fm_tx_port_dev_stats_attributes +}; + +/* FM PORT RX statistics */ +static struct attribute *fm_rx_port_dev_stats_attributes[] = { + &dev_attr_port_frame.attr, + &dev_attr_port_discard_frame.attr, + &dev_attr_port_dealloc_buf.attr, + &dev_attr_port_enq_total.attr, + &dev_attr_port_rx_bad_frame.attr, + &dev_attr_port_rx_large_frame.attr, + &dev_attr_port_rx_out_of_buffers_discard.attr, + &dev_attr_port_rx_filter_frame.attr, + NULL +}; + +static const struct attribute_group fm_rx_port_dev_stats_attr_grp = { + .name = "statistics", + .attrs = fm_rx_port_dev_stats_attributes +}; + +/* TODO: add particular OH ports statistics */ +static struct attribute *fm_oh_port_dev_stats_attributes[] = { + &dev_attr_port_frame.attr, + &dev_attr_port_discard_frame.attr, + &dev_attr_port_dealloc_buf.attr, + &dev_attr_port_enq_total.attr, + /*TX*/ &dev_attr_port_length_err.attr, + &dev_attr_port_unsupprted_format.attr, + &dev_attr_port_deq_total.attr, + &dev_attr_port_deq_from_default.attr, + &dev_attr_port_deq_confirm.attr, + /*RX*/ &dev_attr_port_rx_bad_frame.attr, + &dev_attr_port_rx_large_frame.attr, + &dev_attr_port_rx_out_of_buffers_discard.attr, + /*&dev_attr_port_rx_filter_frame.attr, */ + NULL +}; + +static const struct attribute_group fm_oh_port_dev_stats_attr_grp = { + .name = "statistics", + .attrs = fm_oh_port_dev_stats_attributes +}; + +static ssize_t show_fm_port_regs(struct device *dev, + struct device_attribute *attr, char *buf) +{ + unsigned long flags; + unsigned n = 0; +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev = + (t_LnxWrpFmPortDev *) dev_get_drvdata(dev); +#endif + + if (attr == NULL || buf == NULL || dev == NULL) + return -EINVAL; + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) + local_irq_save(flags); + + if (!p_LnxWrpFmPortDev->h_Dev) { + n = snprintf(buf, PAGE_SIZE, "\tFM Port not configured...\n"); + return n; + } else { + n = snprintf(buf, PAGE_SIZE, + "FM port driver registers dump.\n"); + FM_PORT_DumpRegs(p_LnxWrpFmPortDev->h_Dev); + } + + local_irq_restore(flags); + + return n; +#else + + local_irq_save(flags); + n = snprintf(buf, PAGE_SIZE, + "Debug level is too low to dump registers!!!\n"); + local_irq_restore(flags); + + return n; +#endif +} + +static DEVICE_ATTR(fm_port_regs, 0x644, show_fm_port_regs, NULL); + +int fm_port_sysfs_create(struct device *dev) +{ + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev; + + if (dev == NULL) + return -EINVAL; + + p_LnxWrpFmPortDev = (t_LnxWrpFmPortDev *) dev_get_drvdata(dev); + if (WARN_ON(p_LnxWrpFmPortDev == NULL)) + return -EINVAL; + + /* store to remove them when module is disabled */ + p_LnxWrpFmPortDev->dev_attr_regs = &dev_attr_fm_port_regs; + + /* Registers dump entry - in future will be moved to debugfs */ + if (device_create_file(dev, &dev_attr_fm_port_regs) != 0) + return -EIO; + + /* FM Ports statistics */ + switch (p_LnxWrpFmPortDev->settings.param.portType) { + case e_FM_PORT_TYPE_TX: + case e_FM_PORT_TYPE_TX_10G: + if (sysfs_create_group + (&dev->kobj, &fm_tx_port_dev_stats_attr_grp) != 0) + return -EIO; + break; + case e_FM_PORT_TYPE_RX: + case e_FM_PORT_TYPE_RX_10G: + if (sysfs_create_group + (&dev->kobj, &fm_rx_port_dev_stats_attr_grp) != 0) + return -EIO; + break; + case e_FM_PORT_TYPE_OH_OFFLINE_PARSING: + case e_FM_PORT_TYPE_OH_HOST_COMMAND: + if (sysfs_create_group + (&dev->kobj, &fm_oh_port_dev_stats_attr_grp) != 0) + return -EIO; + break; + case e_FM_PORT_TYPE_DUMMY: + default: + WARN(1, "FMD: failure at %s:%d/%s()!\n", __FILE__, __LINE__, + __func__); + return -EINVAL; + break; + }; + + return 0; +} + +void fm_port_sysfs_destroy(struct device *dev) +{ + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev = NULL; + + /* this function has never been tested !!! */ + + if (WARN_ON(dev == NULL)) + return; + + p_LnxWrpFmPortDev = (t_LnxWrpFmPortDev *) dev_get_drvdata(dev); + if (WARN_ON(p_LnxWrpFmPortDev == NULL)) + return; + + /* The name attribute will be freed also by these 2 functions? */ + switch (p_LnxWrpFmPortDev->settings.param.portType) { + case e_FM_PORT_TYPE_TX: + case e_FM_PORT_TYPE_TX_10G: + sysfs_remove_group(&dev->kobj, &fm_tx_port_dev_stats_attr_grp); + break; + case e_FM_PORT_TYPE_RX: + case e_FM_PORT_TYPE_RX_10G: + sysfs_remove_group(&dev->kobj, &fm_rx_port_dev_stats_attr_grp); + break; + case e_FM_PORT_TYPE_OH_OFFLINE_PARSING: + case e_FM_PORT_TYPE_OH_HOST_COMMAND: + sysfs_remove_group(&dev->kobj, &fm_oh_port_dev_stats_attr_grp); + break; + case e_FM_PORT_TYPE_DUMMY: + default: + WARN(1, "FMD: failure at %s:%d/%s()!\n", __FILE__, __LINE__, + __func__); + break; + }; + + device_remove_file(dev, p_LnxWrpFmPortDev->dev_attr_regs); +} --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_sysfs_fm_port.h +++ linux-3.13.0/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_sysfs_fm_port.h @@ -0,0 +1,48 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 lnxwrp_sysfs_fm_port.h + + @Description FM port sysfs functions. + +*/ + +#ifndef LNXWRP_SYSFS_FM_PORT_H_ +#define LNXWRP_SYSFS_FM_PORT_H_ + +#include "lnxwrp_sysfs.h" + +int fm_port_sysfs_create(struct device *dev); +void fm_port_sysfs_destroy(struct device *dev); + +#endif /* LNXWRP_SYSFS_FM_PORT_H_ */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/src/xx/Makefile +++ linux-3.13.0/drivers/net/dpa/NetCommSw/src/xx/Makefile @@ -0,0 +1,12 @@ +# +# Makefile for the Freescale Ethernet controllers +# +EXTRA_CFLAGS += -DVERSION=\"\" +# +#Include netcomm SW specific definitions +include $(srctree)/drivers/net/dpa/NetCommSw/ncsw_config.mk + +obj-y += fsl-ncsw-xx.o + +fsl-ncsw-xx-objs := xx_linux.o udivdi3.o stdlib.o + --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/src/xx/stdlib.c +++ linux-3.13.0/drivers/net/dpa/NetCommSw/src/xx/stdlib.c @@ -0,0 +1,264 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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: stdlib.c */ +/* */ +/* Description: */ +/* Standard library routines (externals) */ +/* */ +/* Modifications: */ +/* ============== */ +/* */ +/*------------------------------------------------------*/ +#include "stdlib_ext.h" +#include "stdarg_ext.h" +#include "ctype_ext.h" +#include "string_ext.h" +#include "std_ext.h" +#include "xx_ext.h" + + +#ifdef MODULE +/** + * strtoul - convert a string to an uint32_t + * @cp: The start of the string + * @endp: A pointer to the end of the parsed string will be placed here + * @base: The number base to use + */ +uint32_t strtoul(const char *cp,char **endp,uint32_t base) +{ + uint32_t result = 0,value; + + if (!base) { + base = 10; + if (*cp == '0') { + base = 8; + cp++; + if ((*cp == 'x') && isxdigit(cp[1])) { + cp++; + base = 16; + } + } + } + while (isxdigit(*cp) && + (value = (uint32_t)(isdigit(*cp) ? *cp-'0' : toupper((uint8_t)(*cp))-'A'+10)) < base) { + result = result*base + value; + cp++; + } + if (endp) + *endp = (char *)cp; + return result; +} + +/** + * strtol - convert a string to a int32_t + * @cp: The start of the string + * @endp: A pointer to the end of the parsed string will be placed here + * @base: The number base to use + */ +long strtol(const char *cp,char **endp,uint32_t base) +{ + if(*cp=='-') + return (long)(-strtoul(cp+1,endp,base)); + return (long)strtoul(cp,endp,base); +} + +/** + * strtoull - convert a string to an uint64_t + * @cp: The start of the string + * @endp: A pointer to the end of the parsed string will be placed here + * @base: The number base to use + */ +uint64_t strtoull(const char *cp,char **endp,uint32_t base) +{ + uint64_t result = 0,value; + + if (!base) { + base = 10; + if (*cp == '0') { + base = 8; + cp++; + if ((*cp == 'x') && isxdigit(cp[1])) { + cp++; + base = 16; + } + } + } + while (isxdigit(*cp) && (value = isdigit(*cp) ? *cp-'0' : (islower(*cp) + ? toupper((uint8_t)(*cp)) : *cp)-'A'+10) < base) { + result = result*base + value; + cp++; + } + if (endp) + *endp = (char *)cp; + return result; +} + +/** + * strtoll - convert a string to a int64 + * @cp: The start of the string + * @endp: A pointer to the end of the parsed string will be placed here + * @base: The number base to use + */ +long long strtoll(const char *cp,char **endp,uint32_t base) +{ + if(*cp=='-') + return (long long)(-strtoull(cp+1,endp,base)); + return (long long)(strtoull(cp,endp,base)); +} + +/** + * atoi - convert a string to a int + * @s: The start of the string + */ +int atoi(const char *s) +{ + int i=0; + const char **tmp_s = &s; + + while (isdigit(**tmp_s)) + i = i*10 + *((*tmp_s)++) - '0'; + return i; +} + +/** + * strlen - Find the length of a string + * @s: The string to be sized + */ +size_t strlen(const char * s) +{ + const char *sc; + + for (sc = s; *sc != '\0'; ++sc) + /* nothing */; + + return sc - s; +} + +/** + * strnlen - Find the length of a length-limited string + * @s: The string to be sized + * @count: The maximum number of bytes to search + */ +size_t strnlen(const char * s, size_t count) +{ + const char *sc; + + for (sc = s; count-- && *sc != '\0'; ++sc) + /* nothing */; + + return sc - s; +} + +/** + * strcpy - Copy a %NUL terminated string + * @dest: Where to copy the string to + * @src: Where to copy the string from + */ +char * strcpy(char * dest,const char *src) +{ + char *tmp = dest; + + while ((*dest++ = *src++) != '\0') + /* nothing */; + + return tmp; +} +#endif /* MODULE */ + +/** + * strtok - Split a string into tokens + * @s: The string to be searched + * @ct: The characters to search for + * + * WARNING: strtok is deprecated, use strsep instead. + */ +char *___strtok; + +char * strtok(char * s,const char * ct) +{ + char *sbegin, *send; + + sbegin = s ? s : ___strtok; + if (!sbegin) { + return NULL; + } + sbegin += strspn(sbegin,ct); + if (*sbegin == '\0') { + ___strtok = NULL; + return( NULL ); + } + send = strpbrk( sbegin, ct); + if (send && *send != '\0') + *send++ = '\0'; + ___strtok = send; + return (sbegin); +} + + +#ifdef MODULE +/** + * strncpy - Copy a length-limited, %NUL-terminated string + * @dest: Where to copy the string to + * @src: Where to copy the string from + * @count: The maximum number of bytes to copy + * + * Note that unlike userspace strncpy, this does not %NUL-pad the buffer. + * However, the result is not %NUL-terminated if the source exceeds + * @count bytes. + */ +char * strncpy(char * dest,const char *src,size_t count) +{ + char *tmp = dest; + + while (count-- && (*dest++ = *src++) != '\0') + /* nothing */; + + return tmp; +} + +/** + * vsprintf - Format a string and place it in a buffer + * @buf: The buffer to place the result into + * @fmt: The format string to use + * @args: Arguments for the format string + * + * Call this function if you are already dealing with a va_list. + * You probably want sprintf instead. + */ +int vsprintf(char *buf, const char *fmt, va_list args) +{ + return vsnprintf(buf, INT32_MAX, fmt, args); +} +#endif /* MODULE */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/src/xx/udivdi3.c +++ linux-3.13.0/drivers/net/dpa/NetCommSw/src/xx/udivdi3.c @@ -0,0 +1,132 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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(CONFIG_MODVERSIONS) && !defined(MODVERSIONS) +#define MODVERSIONS +#endif +#ifdef MODVERSIONS +#include +#endif /* MODVERSIONS */ + +#include +#include +#include + + +#define BITS_PER_UNIT 8 +#define SI_TYPE_SIZE (sizeof (SItype) * BITS_PER_UNIT) + + +typedef unsigned int UQItype __attribute__ ((mode (QI))); +typedef int SItype __attribute__ ((mode (SI))); +typedef unsigned int USItype __attribute__ ((mode (SI))); +typedef int DItype __attribute__ ((mode (DI))); +typedef int word_type __attribute__ ((mode (__word__))); +typedef unsigned int UDItype __attribute__ ((mode (DI))); + +struct DIstruct {SItype low, high;}; + +typedef union +{ + struct DIstruct s; + DItype ll; +} DIunion; + + +/* bit divisor, dividend and result. dynamic precision */ +static __inline__ uint64_t _div64_64(uint64_t dividend, uint64_t divisor) +{ + uint32_t d = divisor; + + if (divisor > 0xffffffffULL) + { + unsigned int shift = fls(divisor >> 32); + + d = divisor >> shift; + dividend >>= shift; + } + + /* avoid 64 bit division if possible */ + if (dividend >> 32) + do_div(dividend, d); + else + dividend = (uint32_t) dividend / d; + + return dividend; +} + +UDItype __udivdi3 (UDItype n, UDItype d) +{ + return _div64_64(n, d); +} + +DItype __divdi3 (DItype n, DItype d) +{ + DItype sign = 1; + if (n<0) + { + sign *= -1; + n *= -1; + } + if (d<0) + { + sign *= -1; + d *= -1; + } + return sign*_div64_64((UDItype)n, (UDItype)d); +} + +UDItype __umoddi3 (UDItype n, UDItype d) +{ + return n-(_div64_64(n, d)*d); +} + +#ifdef MODULE +word_type __ucmpdi2 (DItype a, DItype b) +{ + DIunion au, bu; + + au.ll = a, bu.ll = b; + + if ((USItype) au.s.high < (USItype) bu.s.high) + return 0; + else if ((USItype) au.s.high > (USItype) bu.s.high) + return 2; + if ((USItype) au.s.low < (USItype) bu.s.low) + return 0; + else if ((USItype) au.s.low > (USItype) bu.s.low) + return 2; + return 1; +} +#endif /* MODULE */ --- linux-3.13.0.orig/drivers/net/dpa/NetCommSw/src/xx/xx_linux.c +++ linux-3.13.0/drivers/net/dpa/NetCommSw/src/xx/xx_linux.c @@ -0,0 +1,901 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 xx_linux.c + + @Description XX routines implementation for Linux. +*//***************************************************************************/ +#include + +#if defined(CONFIG_MODVERSIONS) && !defined(MODVERSIONS) +#define MODVERSIONS +#endif +#ifdef MODVERSIONS +#include +#endif /* MODVERSIONS */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#ifdef BIGPHYSAREA_ENABLE +#include +#endif /* BIGPHYSAREA_ENABLE */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "error_ext.h" +#include "std_ext.h" +#include "list_ext.h" +#include "mm_ext.h" +#include "sys_io_ext.h" +#include "xx.h" + + +#define __ERR_MODULE__ MODULE_UNKNOWN + +#ifdef BIGPHYSAREA_ENABLE +#define MAX_ALLOCATION_SIZE 128 * 1024 /* Maximum size allocated with kmalloc is 128K */ + + +/* TODO: large allocations => use big phys area */ +/****************************************************************************** + * routine: get_nr_pages + * + * description: + * calculates the number of memory pages for a given size (in bytes) + * + * arguments: + * size - the number of bytes + * + * return code: + * The number of pages + * + *****************************************************************************/ +static __inline__ uint32_t get_nr_pages (uint32_t size) +{ + return (uint32_t)((size >> PAGE_SHIFT) + (size & PAGE_SHIFT ? 1 : 0)); +} + +static bool in_big_phys_area (uint32_t addr) +{ + uint32_t base, size; + + bigphysarea_get_details (&base, &size); + return ((addr >= base) && (addr < base + size)); +} +#endif /* BIGPHYSAREA_ENABLE */ + +void * xx_Malloc(uint32_t n) +{ + void *a; + uint32_t flags; + + flags = XX_DisableAllIntr(); +#ifdef BIGPHYSAREA_ENABLE + if (n >= MAX_ALLOCATION_SIZE) + a = (void*)bigphysarea_alloc_pages(get_nr_pages(n), 0, GFP_ATOMIC); + else +#endif /* BIGPHYSAREA_ENABLE */ + a = (void *)kmalloc((uint32_t)n, GFP_ATOMIC); + if (!a) + XX_Print("No memory for XX_Malloc\n"); + XX_RestoreAllIntr(flags); + + return a; +} + +void xx_Free(void *p) +{ +#ifdef BIGPHYSAREA_ENABLE + if (in_big_phys_area ((uint32_t)p)) + bigphysarea_free_pages(p); + else +#endif /* BIGPHYSAREA_ENABLE */ + kfree(p); +} + +void XX_Exit(int status) +{ + WARN(1, "\n\nFMD: fatal error, driver can't go on!!!\n\n"); +} + +#define BUF_SIZE 512 +void XX_Print(char *str, ...) +{ + va_list args; +#ifdef CONFIG_SMP + char buf[BUF_SIZE]; +#endif /* CONFIG_SMP */ + + va_start(args, str); +#ifdef CONFIG_SMP + if (vsnprintf (buf, BUF_SIZE, str, args) >= BUF_SIZE) + printk(KERN_WARNING "Illegal string to print!\n more than %d characters.\n\tString was not printed completelly.\n", BUF_SIZE); + printk (KERN_WARNING "cpu%d/%d: %s",hard_smp_processor_id(), smp_processor_id(), buf); +#else + vprintk(str, args); +#endif /* CONFIG_SMP */ + va_end(args); +} + +void XX_Fprint(void *file, char *str, ...) +{ + va_list args; +#ifdef CONFIG_SMP + char buf[BUF_SIZE]; +#endif /* CONFIG_SMP */ + + va_start(args, str); +#ifdef CONFIG_SMP + if (vsnprintf (buf, BUF_SIZE, str, args) >= BUF_SIZE) + printk(KERN_WARNING "Illegal string to print!\n more than %d characters.\n\tString was not printed completelly.\n", BUF_SIZE); + printk (KERN_CRIT "cpu%d/%d: %s",hard_smp_processor_id(), smp_processor_id(), buf); +#else + vprintk(str, args); +#endif /* CONFIG_SMP */ + va_end(args); +} + +#ifdef DEBUG_XX_MALLOC +typedef void (*t_ffn)(void *); +typedef struct { + t_ffn f_free; + void *mem; + char *fname; + int fline; + uint32_t size; + t_List node; +} t_MemDebug; +#define MEMDBG_OBJECT(p_List) LIST_OBJECT(p_List, t_MemDebug, node) + +LIST(memDbgLst); + + +void * XX_MallocDebug(uint32_t size, char *fname, int line) +{ + void *mem; + t_MemDebug *p_MemDbg; + + p_MemDbg = (t_MemDebug *)xx_Malloc(sizeof(t_MemDebug)); + if (p_MemDbg == NULL) + return NULL; + + mem = xx_Malloc(size); + if (mem == NULL) + { + XX_Free(p_MemDbg); + return NULL; + } + + INIT_LIST(&p_MemDbg->node); + p_MemDbg->f_free = xx_Free; + p_MemDbg->mem = mem; + p_MemDbg->fname = fname; + p_MemDbg->fline = line; + p_MemDbg->size = size+sizeof(t_MemDebug); + LIST_AddToTail(&p_MemDbg->node, &memDbgLst); + + return mem; +} + +void * XX_MallocSmartDebug(uint32_t size, + int memPartitionId, + uint32_t align, + char *fname, + int line) +{ + void *mem; + t_MemDebug *p_MemDbg; + + p_MemDbg = (t_MemDebug *)XX_Malloc(sizeof(t_MemDebug)); + if (p_MemDbg == NULL) + return NULL; + + mem = xx_MallocSmart((uint32_t)size, memPartitionId, align); + if (mem == NULL) + { + XX_Free(p_MemDbg); + return NULL; + } + + INIT_LIST(&p_MemDbg->node); + p_MemDbg->f_free = xx_FreeSmart; + p_MemDbg->mem = mem; + p_MemDbg->fname = fname; + p_MemDbg->fline = line; + p_MemDbg->size = size+sizeof(t_MemDebug); + LIST_AddToTail(&p_MemDbg->node, &memDbgLst); + + return mem; +} + +static void debug_free(void *mem) +{ + t_List *p_MemDbgLh = NULL; + t_MemDebug *p_MemDbg; + bool found = FALSE; + + if (LIST_IsEmpty(&memDbgLst)) + { + REPORT_ERROR(MAJOR, E_ALREADY_FREE, ("Unbalanced free (0x%08x)", mem)); + return; + } + + LIST_FOR_EACH(p_MemDbgLh, &memDbgLst) + { + p_MemDbg = MEMDBG_OBJECT(p_MemDbgLh); + if (p_MemDbg->mem == mem) + { + found = TRUE; + break; + } + } + + if (!found) + { + REPORT_ERROR(MAJOR, E_NOT_FOUND, + ("Attempt to free unallocated address (0x%08x)",mem)); + dump_stack(); + return; + } + + LIST_Del(p_MemDbgLh); + p_MemDbg->f_free(mem); + p_MemDbg->f_free(p_MemDbg); +} + +void XX_FreeSmart(void *p) +{ + debug_free(p); +} + + +void XX_Free(void *p) +{ + debug_free(p); +} + +#else /* not DEBUG_XX_MALLOC */ +void * XX_Malloc(uint32_t size) +{ + return xx_Malloc(size); +} + +void * XX_MallocSmart(uint32_t size, int memPartitionId, uint32_t alignment) +{ + return xx_MallocSmart(size,memPartitionId, alignment); +} + +void XX_FreeSmart(void *p) +{ + xx_FreeSmart(p); +} + + +void XX_Free(void *p) +{ + xx_Free(p); +} +#endif /* not DEBUG_XX_MALLOC */ + + +#if (defined(REPORT_EVENTS) && (REPORT_EVENTS > 0)) +void XX_EventById(uint32_t event, t_Handle appId, uint16_t flags, char *msg) +{ + e_Event eventCode = (e_Event)event; + + UNUSED(eventCode); + UNUSED(appId); + UNUSED(flags); + UNUSED(msg); +} +#endif /* (defined(REPORT_EVENTS) && ... */ + + +uint32_t XX_DisableAllIntr(void) +{ + unsigned long flags; + + local_irq_save(flags); + + return (uint32_t)flags; +} + +void XX_RestoreAllIntr(uint32_t flags) +{ + local_irq_restore((unsigned long)flags); +} + +t_Error XX_Call( uint32_t qid, t_Error (* f)(t_Handle), t_Handle id, t_Handle appId, uint16_t flags ) +{ + UNUSED(qid); + UNUSED(appId); + UNUSED(flags); + + return f(id); +} + +int XX_IsICacheEnable(void) +{ + return TRUE; +} + +int XX_IsDCacheEnable(void) +{ + return TRUE; +} + + +typedef struct { + t_Isr *f_Isr; + t_Handle handle; +} t_InterruptHandler; + + +t_Handle interruptHandlers[0x00010000]; + +static irqreturn_t LinuxInterruptHandler (int irq, void *dev_id) +{ + t_InterruptHandler *p_IntrHndl = (t_InterruptHandler *)dev_id; + p_IntrHndl->f_Isr(p_IntrHndl->handle); + return IRQ_HANDLED; +} + +t_Error XX_SetIntr(int irq, t_Isr *f_Isr, t_Handle handle) +{ + const char *device; + t_InterruptHandler *p_IntrHndl; + + device = GetDeviceName(irq); + if (device == NULL) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Interrupt source - %d", irq)); + + p_IntrHndl = (t_InterruptHandler *)XX_Malloc(sizeof(t_InterruptHandler)); + if (p_IntrHndl == NULL) + RETURN_ERROR(MAJOR, E_NO_MEMORY, NO_MSG); + p_IntrHndl->f_Isr = f_Isr; + p_IntrHndl->handle = handle; + interruptHandlers[irq] = p_IntrHndl; + + if (request_irq(GetDeviceIrqNum(irq), LinuxInterruptHandler, 0, device, p_IntrHndl) < 0) + RETURN_ERROR(MAJOR, E_BUSY, ("Can't get IRQ %s\n", device)); + disable_irq(GetDeviceIrqNum(irq)); + + return E_OK; +} + +t_Error XX_FreeIntr(int irq) +{ + t_InterruptHandler *p_IntrHndl = interruptHandlers[irq]; + free_irq(GetDeviceIrqNum(irq), p_IntrHndl); + XX_Free(p_IntrHndl); + interruptHandlers[irq] = 0; + return E_OK; +} + +t_Error XX_EnableIntr(int irq) +{ + enable_irq(GetDeviceIrqNum(irq)); + return E_OK; +} + +t_Error XX_DisableIntr(int irq) +{ + disable_irq(GetDeviceIrqNum(irq)); + return E_OK; +} + + +/*****************************************************************************/ +/* Tasklet Service Routines */ +/*****************************************************************************/ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20) +typedef struct +{ + t_Handle h_Data; + void (*f_Callback) (void *); + struct delayed_work dwork; +} t_Tasklet; + +static void GenericTaskletCallback(struct work_struct *p_Work) +{ + t_Tasklet *p_Task = container_of(p_Work, t_Tasklet, dwork.work); + + p_Task->f_Callback(p_Task->h_Data); +} +#endif /* LINUX_VERSION_CODE */ + + +t_TaskletHandle XX_InitTasklet (void (*routine)(void *), void *data) +{ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20) + struct work_struct *p_Task; + p_Task = (struct work_struct *)XX_Malloc(sizeof(struct work_struct)); + INIT_WORK(p_Task, routine, data); +#else + t_Tasklet *p_Task = (t_Tasklet *)XX_Malloc(sizeof(t_Tasklet)); + p_Task->h_Data = data; + p_Task->f_Callback = routine; + INIT_DELAYED_WORK(&p_Task->dwork, GenericTaskletCallback); +#endif /* LINUX_VERSION_CODE */ + + return (t_TaskletHandle)p_Task; +} + + +void XX_FreeTasklet (t_TaskletHandle h_Tasklet) +{ + if (h_Tasklet) + XX_Free(h_Tasklet); +} + +int XX_ScheduleTask(t_TaskletHandle h_Tasklet, int immediate) +{ + int ans; + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20) + if (immediate) + ans = schedule_work(h_Tasklet); + else + ans = schedule_delayed_work(h_Tasklet, 1); +#else + if (immediate) + ans = schedule_delayed_work(&((t_Tasklet *)h_Tasklet)->dwork, 0); + else + ans = schedule_delayed_work(&((t_Tasklet *)h_Tasklet)->dwork, HZ); +#endif /* LINUX_VERSION_CODE */ + + return ans; +} + +void XX_FlushScheduledTasks(void) +{ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0) + flush_scheduled_tasks(); +#else + flush_scheduled_work(); +#endif /* LINUX_VERSION_CODE */ +} + +int XX_TaskletIsQueued(t_TaskletHandle h_Tasklet) +{ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20) + return (int)(((struct work_struct *)h_Tasklet)->pending); +#else + return (int)delayed_work_pending(&((t_Tasklet *)h_Tasklet)->dwork); +#endif /* LINUX_VERSION_CODE */ +} + +void XX_SetTaskletData(t_TaskletHandle h_Tasklet, t_Handle data) +{ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0) + ((struct tq_struct *)h_Tasklet)->data = data; +#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20) + ((struct work_struct *)h_Tasklet)->data = data; +#else + ((t_Tasklet *)h_Tasklet)->h_Data = data; +#endif /* LINUX_VERSION_CODE */ +} + +t_Handle XX_GetTaskletData(t_TaskletHandle h_Tasklet) +{ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20) + return (t_Handle)(((struct work_struct *)h_Tasklet)->data); +#else + return ((t_Tasklet *)h_Tasklet)->h_Data; +#endif /* LINUX_VERSION_CODE */ +} + + +/*****************************************************************************/ +/* Spinlock Service Routines */ +/*****************************************************************************/ + +t_Handle XX_InitSpinlock(void) +{ + spinlock_t *p_Spinlock = (spinlock_t *)XX_Malloc(sizeof(spinlock_t)); + if (!p_Spinlock) + return NULL; + + spin_lock_init(p_Spinlock); + + return (t_Handle)p_Spinlock; +} + +void XX_FreeSpinlock(t_Handle h_Spinlock) +{ + if (h_Spinlock) + XX_Free(h_Spinlock); +} + +void XX_LockSpinlock(t_Handle h_Spinlock) +{ + spin_lock((spinlock_t *)h_Spinlock); +} + +void XX_UnlockSpinlock(t_Handle h_Spinlock) +{ + spin_unlock((spinlock_t *)h_Spinlock); +} + +uint32_t XX_LockIntrSpinlock(t_Handle h_Spinlock) +{ + unsigned long intrFlags; + spin_lock_irqsave((spinlock_t *)h_Spinlock, intrFlags); + return intrFlags; +} + +void XX_UnlockIntrSpinlock(t_Handle h_Spinlock, uint32_t intrFlags) +{ + spin_unlock_irqrestore((spinlock_t *)h_Spinlock, (unsigned long)intrFlags); +} + + +/*****************************************************************************/ +/* Timers Service Routines */ +/*****************************************************************************/ +/* The time now is in mili sec. resolution */ +uint32_t XX_CurrentTime(void) +{ + return (jiffies*1000)/HZ; +} + + +t_Handle XX_CreateTimer(void) +{ + struct timer_list *p_Timer = (struct timer_list *)XX_Malloc(sizeof(struct timer_list)); + if (p_Timer) + { + memset(p_Timer, 0, sizeof(struct timer_list)); + init_timer(p_Timer); + } + return (t_Handle)p_Timer; +} + +void XX_FreeTimer(t_Handle h_Timer) +{ + if (h_Timer) + XX_Free(h_Timer); +} + +void XX_StartTimer(t_Handle h_Timer, + uint32_t msecs, + bool periodic, + void (*f_TimerExpired)(t_Handle), + t_Handle h_Arg) +{ + int tmp_jiffies = (msecs*HZ)/1000; + struct timer_list *p_Timer = (struct timer_list *)h_Timer; + + SANITY_CHECK_RETURN((periodic == FALSE), E_NOT_SUPPORTED); + + p_Timer->function = (void (*)(unsigned long))f_TimerExpired; + p_Timer->data = (unsigned long)h_Arg; + if ((msecs*HZ)%1000) + tmp_jiffies++; + p_Timer->expires = (jiffies + tmp_jiffies); + + add_timer((struct timer_list *)h_Timer); +} + +void XX_SetTimerData(t_Handle h_Timer, t_Handle data) +{ + struct timer_list *p_Timer = (struct timer_list *)h_Timer; + + p_Timer->data = (unsigned long)data; +} + +t_Handle XX_GetTimerData(t_Handle h_Timer) +{ + struct timer_list *p_Timer = (struct timer_list *)h_Timer; + + return (t_Handle)p_Timer->data; +} + +uint32_t XX_GetExpirationTime(t_Handle h_Timer) +{ + struct timer_list *p_Timer = (struct timer_list *)h_Timer; + + return (uint32_t)p_Timer->expires; +} + +void XX_StopTimer(t_Handle h_Timer) +{ + del_timer((struct timer_list *)h_Timer); +} + +void XX_ModTimer(t_Handle h_Timer, uint32_t msecs) +{ + int tmp_jiffies = (msecs*HZ)/1000; + + if ((msecs*HZ)%1000) + tmp_jiffies++; + mod_timer((struct timer_list *)h_Timer, jiffies + tmp_jiffies); +} + +int XX_TimerIsActive(t_Handle h_Timer) +{ + return timer_pending((struct timer_list *)h_Timer); +} + +uint32_t XX_Sleep(uint32_t msecs) +{ + int tmp_jiffies = (msecs*HZ)/1000; + + if ((msecs*HZ)%1000) + tmp_jiffies++; + return schedule_timeout(tmp_jiffies); +} + +/*BEWARE!!!!! UDelay routine is BUSY WAITTING!!!!!*/ +void XX_UDelay(uint32_t usecs) +{ + udelay(usecs); +} + +/* TODO: verify that these are correct */ +#define MSG_BODY_SIZE 512 +typedef t_Error (t_MsgHandler) (t_Handle h_Mod, uint32_t msgId, uint8_t msgBody[MSG_BODY_SIZE]); +typedef void (t_MsgCompletionCB) (t_Handle h_Arg, uint8_t msgBody[MSG_BODY_SIZE]); +t_Error XX_SendMessage(char *p_DestAddr, + uint32_t msgId, + uint8_t msgBody[MSG_BODY_SIZE], + t_MsgCompletionCB *f_CompletionCB, + t_Handle h_CBArg); + +typedef struct { + char *p_Addr; + t_MsgHandler *f_MsgHandlerCB; + t_Handle h_Mod; + t_List node; +} t_MsgHndlr; +#define MSG_HNDLR_OBJECT(ptr) LIST_OBJECT(ptr, t_MsgHndlr, node) + +LIST(msgHndlrList); + +static void EnqueueMsgHndlr(t_MsgHndlr *p_MsgHndlr) +{ + uint32_t intFlags; + + intFlags = XX_DisableAllIntr(); + LIST_AddToTail(&p_MsgHndlr->node, &msgHndlrList); + XX_RestoreAllIntr(intFlags); +} +/* TODO: add this for multi-platform support +static t_MsgHndlr * DequeueMsgHndlr(void) +{ + t_MsgHndlr *p_MsgHndlr = NULL; + uint32_t intFlags; + + intFlags = XX_DisableAllIntr(); + if (!LIST_IsEmpty(&msgHndlrList)) + { + p_MsgHndlr = MSG_HNDLR_OBJECT(msgHndlrList.p_Next); + LIST_DelAndInit(&p_MsgHndlr->node); + } + XX_RestoreAllIntr(intFlags); + + return p_MsgHndlr; +} +*/ +static t_MsgHndlr * FindMsgHndlr(char *p_Addr) +{ + t_MsgHndlr *p_MsgHndlr; + t_List *p_Pos; + + LIST_FOR_EACH(p_Pos, &msgHndlrList) + { + p_MsgHndlr = MSG_HNDLR_OBJECT(p_Pos); + if (strstr(p_MsgHndlr->p_Addr, p_Addr)) + return p_MsgHndlr; + } + + return NULL; +} + +t_Error XX_RegisterMessageHandler (char *p_Addr, t_MsgHandler *f_MsgHandlerCB, t_Handle h_Mod) +{ + t_MsgHndlr *p_MsgHndlr; + uint32_t len; + + p_MsgHndlr = (t_MsgHndlr*)XX_Malloc(sizeof(t_MsgHndlr)); + if (!p_MsgHndlr) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("message handler object!!!")); + memset(p_MsgHndlr, 0, sizeof(t_MsgHndlr)); + + len = strlen(p_Addr); + p_MsgHndlr->p_Addr = (char*)XX_Malloc(len+1); + strncpy(p_MsgHndlr->p_Addr,p_Addr, (uint32_t)(len+1)); + + p_MsgHndlr->f_MsgHandlerCB = f_MsgHandlerCB; + p_MsgHndlr->h_Mod = h_Mod; + INIT_LIST(&p_MsgHndlr->node); + EnqueueMsgHndlr(p_MsgHndlr); + + return E_OK; +} + +t_Error XX_UnregisterMessageHandler (char *p_Addr) +{ + t_MsgHndlr *p_MsgHndlr = FindMsgHndlr(p_Addr); + if (!p_MsgHndlr) + RETURN_ERROR(MINOR, E_NO_DEVICE, ("message handler not found in list!!!")); + + LIST_Del(&p_MsgHndlr->node); + XX_Free(p_MsgHndlr->p_Addr); + XX_Free(p_MsgHndlr); + + return E_OK; +} + +t_Error XX_SendMessage(char *p_DestAddr, + uint32_t msgId, + uint8_t msgBody[MSG_BODY_SIZE], + t_MsgCompletionCB *f_CompletionCB, + t_Handle h_CBArg) +{ + t_Error ans; + t_MsgHndlr *p_MsgHndlr = FindMsgHndlr(p_DestAddr); + if (!p_MsgHndlr) + RETURN_ERROR(MINOR, E_NO_DEVICE, ("message handler not found in list!!!")); + + ans = p_MsgHndlr->f_MsgHandlerCB(p_MsgHndlr->h_Mod, msgId, msgBody); + + if (f_CompletionCB) + f_CompletionCB(h_CBArg, msgBody); + + return ans; +} + +t_Error XX_IpcRegisterMsgHandler(char addr[XX_IPC_MAX_ADDR_NAME_LENGTH], + t_IpcMsgHandler *f_MsgHandler, + t_Handle h_Module, + uint32_t replyLength) +{ + UNUSED(addr);UNUSED(f_MsgHandler);UNUSED(h_Module);UNUSED(replyLength); + return E_OK; +} + +t_Error XX_IpcUnregisterMsgHandler(char addr[XX_IPC_MAX_ADDR_NAME_LENGTH]) +{ + UNUSED(addr); + return E_OK; +} + + +t_Error XX_IpcSendMessage(t_Handle h_Session, + uint8_t *p_Msg, + uint32_t msgLength, + uint8_t *p_Reply, + uint32_t *p_ReplyLength, + t_IpcMsgCompletion *f_Completion, + t_Handle h_Arg) +{ + UNUSED(h_Session); UNUSED(p_Msg); UNUSED(msgLength); UNUSED(p_Reply); + UNUSED(p_ReplyLength); UNUSED(f_Completion); UNUSED(h_Arg); + return E_OK; +} + +t_Handle XX_IpcInitSession(char destAddr[XX_IPC_MAX_ADDR_NAME_LENGTH], + char srcAddr[XX_IPC_MAX_ADDR_NAME_LENGTH]) +{ + UNUSED(destAddr); UNUSED(srcAddr); + return E_OK; +} + +/*Forced to introduce due to PRINT_FMT_PARAMS define*/ +uint32_t E500_GetId(void) +{ + return smp_processor_id(); +} + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22) +int GetDeviceIrqNum(int irq) +{ + struct device_node *iPar; + struct irq_domain *irqHost; + uint32_t hwIrq; + + /* Get the interrupt controller */ + iPar = of_find_node_by_name(NULL, "mpic"); + hwIrq = 0; + + ASSERT_COND(iPar != NULL); + /* Get the irq host */ + irqHost = irq_find_host(iPar); + of_node_put(iPar); + + /* Create irq mapping */ + return irq_create_mapping(irqHost, hwIrq); +} +#else +#error "kernel not supported!!!" +#endif /* LINUX_VERSION_CODE */ + +void * XX_PhysToVirt(physAddress_t addr) +{ + return UINT_TO_PTR(SYS_PhysToVirt((uint64_t)addr)); +} + +physAddress_t XX_VirtToPhys(void * addr) +{ + return (physAddress_t)SYS_VirtToPhys(PTR_TO_UINT(addr)); +} + +void * xx_MallocSmart(uint32_t size, int memPartitionId, uint32_t alignment) +{ + uintptr_t *returnCode, tmp; + + if (alignment < sizeof(uintptr_t)) + alignment = sizeof(uintptr_t); + size += alignment + sizeof(returnCode); + tmp = (uintptr_t)xx_Malloc(size); + if (tmp == 0) + return NULL; + returnCode = (uintptr_t*)((tmp + alignment + sizeof(returnCode)) & ~((uintptr_t)alignment - 1)); + *(returnCode - 1) = tmp; + + return (void*)returnCode; +} + +void xx_FreeSmart(void *p) +{ + xx_Free((void*)(*((uintptr_t *)(p) - 1))); +} --- linux-3.13.0.orig/drivers/net/dpa/dpa-ethtool.c +++ linux-3.13.0/drivers/net/dpa/dpa-ethtool.c @@ -0,0 +1,201 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 "dpaa_eth.h" + +static int __cold dpa_get_settings(struct net_device *net_dev, struct ethtool_cmd *et_cmd) +{ + int _errno; + struct dpa_priv_s *priv; + + priv = netdev_priv(net_dev); + + if (priv->mac_dev == NULL) { + cpu_netdev_info(net_dev, "This is a MAC-less interface\n"); + return -ENODEV; + } + if (unlikely(priv->mac_dev->phy_dev == NULL)) { + cpu_netdev_err(net_dev, "phy device not initialized\n"); + return -ENODEV; + } + + _errno = phy_ethtool_gset(priv->mac_dev->phy_dev, et_cmd); + if (unlikely(_errno < 0)) + cpu_netdev_err(net_dev, "phy_ethtool_gset() = %d\n", _errno); + + return _errno; +} + +static int __cold dpa_set_settings(struct net_device *net_dev, struct ethtool_cmd *et_cmd) +{ + int _errno; + struct dpa_priv_s *priv; + + priv = netdev_priv(net_dev); + + if (priv->mac_dev == NULL) { + cpu_netdev_info(net_dev, "This is a MAC-less interface\n"); + return -ENODEV; + } + if (unlikely(priv->mac_dev->phy_dev == NULL)) { + cpu_netdev_err(net_dev, "phy device not initialized\n"); + return -ENODEV; + } + + _errno = phy_ethtool_sset(priv->mac_dev->phy_dev, et_cmd); + if (unlikely(_errno < 0)) + cpu_netdev_err(net_dev, "phy_ethtool_sset() = %d\n", _errno); + + return _errno; +} + +static void __cold dpa_get_drvinfo(struct net_device *net_dev, struct ethtool_drvinfo *drvinfo) +{ + int _errno; + + strncpy(drvinfo->driver, KBUILD_MODNAME, + sizeof(drvinfo->driver) - 1)[sizeof(drvinfo->driver)-1] = 0; + strncpy(drvinfo->version, VERSION, + sizeof(drvinfo->driver) - 1)[sizeof(drvinfo->version)-1] = 0; + _errno = snprintf(drvinfo->fw_version, sizeof(drvinfo->fw_version), "%X", 0); + + if (unlikely(_errno >= sizeof(drvinfo->fw_version))) { /* Truncated output */ + cpu_netdev_notice(net_dev, "snprintf() = %d\n", _errno); + } else if (unlikely(_errno < 0)) { + cpu_netdev_warn(net_dev, "snprintf() = %d\n", _errno); + memset(drvinfo->fw_version, 0, sizeof(drvinfo->fw_version)); + } + strncpy(drvinfo->bus_info, dev_name(net_dev->dev.parent->parent), + sizeof(drvinfo->bus_info) - 1)[sizeof(drvinfo->bus_info)-1] = 0; +} + +uint32_t __cold dpa_get_msglevel(struct net_device *net_dev) +{ + return ((struct dpa_priv_s *)netdev_priv(net_dev))->msg_enable; +} + +void __cold dpa_set_msglevel(struct net_device *net_dev, uint32_t msg_enable) +{ + ((struct dpa_priv_s *)netdev_priv(net_dev))->msg_enable = msg_enable; +} + +int __cold dpa_nway_reset(struct net_device *net_dev) +{ + int _errno; + struct dpa_priv_s *priv; + + priv = netdev_priv(net_dev); + + if (priv->mac_dev == NULL) { + cpu_netdev_info(net_dev, "This is a MAC-less interface\n"); + return -ENODEV; + } + if (unlikely(priv->mac_dev->phy_dev == NULL)) { + cpu_netdev_err(net_dev, "phy device not initialized\n"); + return -ENODEV; + } + + _errno = 0; + if (priv->mac_dev->phy_dev->autoneg) { + _errno = phy_start_aneg(priv->mac_dev->phy_dev); + if (unlikely(_errno < 0)) + cpu_netdev_err(net_dev, "phy_start_aneg() = %d\n", + _errno); + } + + return _errno; +} + +void __cold dpa_get_ringparam(struct net_device *net_dev, struct ethtool_ringparam *et_ringparam) +{ + et_ringparam->rx_max_pending = 0; + et_ringparam->rx_mini_max_pending = 0; + et_ringparam->rx_jumbo_max_pending = 0; + et_ringparam->tx_max_pending = 0; + + et_ringparam->rx_pending = 0; + et_ringparam->rx_mini_pending = 0; + et_ringparam->rx_jumbo_pending = 0; + et_ringparam->tx_pending = 0; +} + +void __cold dpa_get_pauseparam(struct net_device *net_dev, struct ethtool_pauseparam *et_pauseparam) +{ + struct dpa_priv_s *priv; + + priv = netdev_priv(net_dev); + + if (priv->mac_dev == NULL) { + cpu_netdev_info(net_dev, "This is a MAC-less interface\n"); + return; + } + if (unlikely(priv->mac_dev->phy_dev == NULL)) { + cpu_netdev_err(net_dev, "phy device not initialized\n"); + return; + } + + et_pauseparam->autoneg = priv->mac_dev->phy_dev->autoneg; +} + +int __cold dpa_set_pauseparam(struct net_device *net_dev, struct ethtool_pauseparam *et_pauseparam) +{ + struct dpa_priv_s *priv; + + priv = netdev_priv(net_dev); + + if (priv->mac_dev == NULL) { + cpu_netdev_info(net_dev, "This is a MAC-less interface\n"); + return -ENODEV; + } + if (unlikely(priv->mac_dev->phy_dev == NULL)) { + cpu_netdev_err(net_dev, "phy device not initialized\n"); + return -ENODEV; + } + + priv->mac_dev->phy_dev->autoneg = et_pauseparam->autoneg; + + return 0; +} + +const struct ethtool_ops dpa_ethtool_ops = { + .get_settings = dpa_get_settings, + .set_settings = dpa_set_settings, + .get_drvinfo = dpa_get_drvinfo, + .get_msglevel = dpa_get_msglevel, + .set_msglevel = dpa_set_msglevel, + .nway_reset = dpa_nway_reset, + .get_link = ethtool_op_get_link, + .get_ringparam = dpa_get_ringparam, + .get_pauseparam = dpa_get_pauseparam, + .set_pauseparam = dpa_set_pauseparam, +}; --- linux-3.13.0.orig/drivers/net/dpa/dpaa_1588.c +++ linux-3.13.0/drivers/net/dpa/dpaa_1588.c @@ -0,0 +1,562 @@ +/* + * drivers/net/dpa/dpaa_1588.c + * + * Copyright (C) 2011 Freescale Semiconductor, Inc. + * Copyright (C) 2009 IXXAT Automation, GmbH + * + * DPAA Ethernet Driver -- IEEE 1588 interface functionality + * + * 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 Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "dpaa_eth.h" +#include "dpaa_1588.h" + +static int dpa_ptp_init_circ(struct dpa_ptp_circ_buf *ptp_buf, u32 size) +{ + struct circ_buf *circ_buf = &ptp_buf->circ_buf; + + circ_buf->buf = vmalloc(sizeof(struct dpa_ptp_data) * size); + if (!circ_buf->buf) + return 1; + + circ_buf->head = 0; + circ_buf->tail = 0; + ptp_buf->size = size; + spin_lock_init(&ptp_buf->ptp_lock); + + return 0; +} + +static void dpa_ptp_reset_circ(struct dpa_ptp_circ_buf *ptp_buf, u32 size) +{ + struct circ_buf *circ_buf = &ptp_buf->circ_buf; + + circ_buf->head = 0; + circ_buf->tail = 0; + ptp_buf->size = size; +} + +static int dpa_ptp_insert(struct dpa_ptp_circ_buf *ptp_buf, + struct dpa_ptp_data *data) +{ + struct circ_buf *circ_buf = &ptp_buf->circ_buf; + int size = ptp_buf->size; + struct dpa_ptp_data *tmp; + unsigned long flags; + int head, tail; + + spin_lock_irqsave(&ptp_buf->ptp_lock, flags); + + head = circ_buf->head; + tail = circ_buf->tail; + + if (CIRC_SPACE(head, tail, size) <= 0) { + spin_unlock_irqrestore(&ptp_buf->ptp_lock, flags); + return 1; + } + + tmp = (struct dpa_ptp_data *)(circ_buf->buf) + head; + memcpy(tmp, data, sizeof(struct dpa_ptp_data)); + + circ_buf->head = (head + 1) & (size - 1); + + spin_unlock_irqrestore(&ptp_buf->ptp_lock, flags); + + return 0; +} + +static int dpa_ptp_is_ident_match(struct dpa_ptp_ident *dst, + struct dpa_ptp_ident *src) +{ + int ret; + + if ((dst->version != src->version) || (dst->msg_type != src->msg_type)) + return 0; + + if ((dst->netw_prot == src->netw_prot) + || src->netw_prot == DPA_PTP_PROT_DONTCARE) { + if (dst->seq_id != src->seq_id) + return 0; + + ret = memcmp(dst->snd_port_id, src->snd_port_id, + DPA_PTP_SOURCE_PORT_LENGTH); + if (ret) + return 0; + else + return 1; + } + + return 0; +} + +static int dpa_ptp_find_and_remove(struct dpa_ptp_circ_buf *ptp_buf, + struct dpa_ptp_ident *ident, + struct dpa_ptp_time *ts) +{ + struct circ_buf *circ_buf = &ptp_buf->circ_buf; + int size = ptp_buf->size; + int head, tail, idx; + unsigned long flags; + struct dpa_ptp_data *tmp; + struct dpa_ptp_ident *tmp_ident; + + spin_lock_irqsave(&ptp_buf->ptp_lock, flags); + + head = circ_buf->head; + tail = idx = circ_buf->tail; + + if (CIRC_CNT_TO_END(head, tail, size) == 0) { + spin_unlock_irqrestore(&ptp_buf->ptp_lock, flags); + return 1; + } + + while (idx != head) { + tmp = (struct dpa_ptp_data *)(circ_buf->buf) + idx; + tmp_ident = &tmp->ident; + if (dpa_ptp_is_ident_match(tmp_ident, ident)) + break; + idx = (idx + 1) & (size - 1); + } + + if (idx == head) { + circ_buf->tail = head; + spin_unlock_irqrestore(&ptp_buf->ptp_lock, flags); + return 1; + } + + ts->sec = tmp->ts.sec; + ts->nsec = tmp->ts.nsec; + + circ_buf->tail = (idx + 1) & (size - 1); + + spin_unlock_irqrestore(&ptp_buf->ptp_lock, flags); + + return 0; +} + +static int dpa_ptp_get_time(dma_addr_t fd_addr, u32 *high, u32 *low) +{ + u8 *ts_addr = (u8 *)phys_to_virt(fd_addr); + u32 sec, nsec, mod; + u64 tmp; + + ts_addr += DPA_PTP_TIMESTAMP_OFFSET; + sec = *((u32 *)ts_addr); + nsec = *(((u32 *)ts_addr) + 1); + tmp = ((u64)sec << 32 | nsec) * DPA_PTP_NOMINAL_FREQ_PERIOD; + + mod = do_div(tmp, NANOSEC_PER_SECOND); + *high = (u32)tmp; + *low = mod; + + return 0; +} + +/* + * Parse the PTP packets + * + * The PTP header can be found in an IPv4 packet, IPv6 patcket or in + * an IEEE802.3 ethernet frame. This function returns the position of + * the PTP packet or NULL if no PTP found + */ +static u8 *dpa_ptp_parse_packet(struct sk_buff *skb, u16 *eth_type) +{ + u8 *pos = skb->data + ETH_ALEN + ETH_ALEN; + u8 *ptp_loc = NULL; + u8 msg_type; + struct iphdr *iph; + struct udphdr *udph; + struct ipv6hdr *ipv6h; + + *eth_type = *((u16 *)pos); + + /* Check if inner tag is here */ + if (*eth_type == ETH_P_8021Q) { + pos += DPA_VLAN_TAG_LEN; + *eth_type = *((u16 *)pos); + } + + pos += DPA_ETYPE_LEN; + + switch (*eth_type) { + /* Transport of PTP over Ethernet */ + case ETH_P_1588: + ptp_loc = pos; + msg_type = *((u8 *)(ptp_loc + PTP_OFFS_MSG_TYPE)) & 0xf; + if ((msg_type == PTP_MSGTYPE_SYNC) + || (msg_type == PTP_MSGTYPE_DELREQ) + || (msg_type == PTP_MSGTYPE_PDELREQ) + || (msg_type == PTP_MSGTYPE_PDELRESP)) + return ptp_loc; + break; + /* Transport of PTP over IPv4 */ + case ETH_P_IP: + iph = (struct iphdr *)pos; + if (ntohs(iph->protocol) != IPPROTO_UDP) + return NULL; + + pos += iph->ihl * 4; + udph = (struct udphdr *)pos; + if (ntohs(udph->dest) != 319) + return NULL; + ptp_loc = pos + sizeof(struct udphdr); + break; + /* Transport of PTP over IPv6 */ + case ETH_P_IPV6: + ipv6h = (struct ipv6hdr *)pos; + if (ntohs(ipv6h->nexthdr) != IPPROTO_UDP) + return NULL; + + pos += sizeof(struct ipv6hdr); + udph = (struct udphdr *)pos; + if (ntohs(udph->dest) != 319) + return NULL; + ptp_loc = pos + sizeof(struct udphdr); + break; + default: + break; + } + + return ptp_loc; +} + +static int dpa_ptp_store_stamp(struct net_device *dev, struct sk_buff *skb, + dma_addr_t fd_addr, struct dpa_ptp_data *ptp_data) +{ + u32 sec, nsec; + u8 *ptp_loc; + u16 eth_type; + + ptp_loc = dpa_ptp_parse_packet(skb, ð_type); + if (!ptp_loc) + return -EINVAL; + + switch (eth_type) { + case ETH_P_IP: + ptp_data->ident.netw_prot = DPA_PTP_PROT_IPV4; + break; + case ETH_P_IPV6: + ptp_data->ident.netw_prot = DPA_PTP_PROT_IPV6; + break; + case ETH_P_1588: + ptp_data->ident.netw_prot = DPA_PTP_PROT_802_3; + break; + default: + return -EINVAL; + } + + ptp_data->ident.version = *(ptp_loc + PTP_OFFS_VER_PTP) & 0xf; + ptp_data->ident.msg_type = *(ptp_loc + PTP_OFFS_MSG_TYPE) & 0xf; + ptp_data->ident.seq_id = *((u16 *)(ptp_loc + PTP_OFFS_SEQ_ID)); + memcpy(ptp_data->ident.snd_port_id, ptp_loc + PTP_OFFS_SRCPRTID, + DPA_PTP_SOURCE_PORT_LENGTH); + + dpa_ptp_get_time(fd_addr, &sec, &nsec); + ptp_data->ts.sec = (u64)sec; + ptp_data->ts.nsec = nsec; + + return 0; +} + +void dpa_ptp_store_txstamp(struct net_device *dev, struct sk_buff *skb, + const struct qm_fd *fd) +{ + struct dpa_priv_s *priv = netdev_priv(dev); + struct dpa_ptp_tsu *tsu = priv->tsu; + struct dpa_ptp_data ptp_tx_data; + dma_addr_t fd_addr = qm_fd_addr(fd); + int ret; + + ret = dpa_ptp_store_stamp(dev, skb, fd_addr, &ptp_tx_data); + if (ret) + return; + dpa_ptp_insert(&tsu->tx_timestamps, &ptp_tx_data); +} + +void dpa_ptp_store_rxstamp(struct net_device *dev, struct sk_buff *skb, + const struct qm_fd *fd) +{ + struct dpa_priv_s *priv = netdev_priv(dev); + struct dpa_ptp_tsu *tsu = priv->tsu; + struct dpa_ptp_data ptp_rx_data; + dma_addr_t fd_addr = qm_fd_addr(fd); + int ret; + + ret = dpa_ptp_store_stamp(dev, skb, fd_addr, &ptp_rx_data); + if (ret) + return; + dpa_ptp_insert(&tsu->rx_timestamps, &ptp_rx_data); +} + +static uint8_t dpa_get_tx_timestamp(struct dpa_ptp_tsu *ptp_tsu, + struct dpa_ptp_ident *ident, + struct dpa_ptp_time *ts) +{ + struct dpa_ptp_tsu *tsu = ptp_tsu; + struct dpa_ptp_time tmp; + int flag; + + flag = dpa_ptp_find_and_remove(&tsu->tx_timestamps, ident, &tmp); + if (!flag) { + ts->sec = tmp.sec; + ts->nsec = tmp.nsec; + return 0; + } + + return -1; +} + +static uint8_t dpa_get_rx_timestamp(struct dpa_ptp_tsu *ptp_tsu, + struct dpa_ptp_ident *ident, + struct dpa_ptp_time *ts) +{ + struct dpa_ptp_tsu *tsu = ptp_tsu; + struct dpa_ptp_time tmp; + int flag; + + flag = dpa_ptp_find_and_remove(&tsu->rx_timestamps, ident, &tmp); + if (!flag) { + ts->sec = tmp.sec; + ts->nsec = tmp.nsec; + return 0; + } + + return -1; +} + +static void dpa_set_fiper_alarm(struct dpa_ptp_tsu *tsu, + struct dpa_ptp_time *cnt_time) +{ + struct mac_device *mac_dev = tsu->dpa_priv->mac_dev; + u64 tmp, fiper; + + if (mac_dev->fm_rtc_disable) + mac_dev->fm_rtc_disable(tsu->dpa_priv->net_dev); + + /* TMR_FIPER1 will pulse every second after ALARM1 expired */ + tmp = (u64)cnt_time->sec * NANOSEC_PER_SECOND + (u64)cnt_time->nsec; + fiper = NANOSEC_PER_SECOND - DPA_PTP_NOMINAL_FREQ_PERIOD; + if (mac_dev->fm_rtc_set_alarm) + mac_dev->fm_rtc_set_alarm(tsu->dpa_priv->net_dev, 0, tmp); + if (mac_dev->fm_rtc_set_fiper) + mac_dev->fm_rtc_set_fiper(tsu->dpa_priv->net_dev, 0, fiper); + + if (mac_dev->fm_rtc_enable) + mac_dev->fm_rtc_enable(tsu->dpa_priv->net_dev); +} + +static void dpa_get_curr_cnt(struct dpa_ptp_tsu *tsu, + struct dpa_ptp_time *curr_time) +{ + struct mac_device *mac_dev = tsu->dpa_priv->mac_dev; + u64 tmp; + u32 mod; + + if (mac_dev->fm_rtc_get_cnt) + mac_dev->fm_rtc_get_cnt(tsu->dpa_priv->net_dev, &tmp); + + mod = do_div(tmp, NANOSEC_PER_SECOND); + curr_time->sec = (u32)tmp; + curr_time->nsec = mod; +} + +static void dpa_set_1588cnt(struct dpa_ptp_tsu *tsu, + struct dpa_ptp_time *cnt_time) +{ + struct mac_device *mac_dev = tsu->dpa_priv->mac_dev; + u64 tmp; + + tmp = (u64)cnt_time->sec * NANOSEC_PER_SECOND + (u64)cnt_time->nsec; + + if (mac_dev->fm_rtc_set_cnt) + mac_dev->fm_rtc_set_cnt(tsu->dpa_priv->net_dev, tmp); + + /* Restart fiper two seconds later */ + cnt_time->sec += 2; + cnt_time->nsec = 0; + dpa_set_fiper_alarm(tsu, cnt_time); +} + +static void dpa_get_drift(struct dpa_ptp_tsu *tsu, u32 *addend) +{ + struct mac_device *mac_dev = tsu->dpa_priv->mac_dev; + u32 drift; + + if (mac_dev->fm_rtc_get_drift) + mac_dev->fm_rtc_get_drift(tsu->dpa_priv->net_dev, &drift); + + *addend = drift; +} + +static void dpa_set_drift(struct dpa_ptp_tsu *tsu, u32 addend) +{ + struct mac_device *mac_dev = tsu->dpa_priv->mac_dev; + + if (mac_dev->fm_rtc_set_drift) + mac_dev->fm_rtc_set_drift(tsu->dpa_priv->net_dev, addend); +} + +static void dpa_flush_timestamp(struct dpa_ptp_tsu *tsu) +{ + dpa_ptp_reset_circ(&tsu->rx_timestamps, DEFAULT_PTP_RX_BUF_SZ); + dpa_ptp_reset_circ(&tsu->tx_timestamps, DEFAULT_PTP_TX_BUF_SZ); +} + +int dpa_ioctl_1588(struct net_device *dev, struct ifreq *ifr, int cmd) +{ + struct dpa_priv_s *priv = netdev_priv(dev); + struct dpa_ptp_tsu *tsu = priv->tsu; + struct mac_device *mac_dev = priv->mac_dev; + struct dpa_ptp_data ptp_data; + struct dpa_ptp_data *ptp_data_user; + struct dpa_ptp_time act_time; + u32 addend; + int retval = 0; + + if (!tsu || !tsu->valid) + return -ENODEV; + + switch (cmd) { + case PTP_ENBL_TXTS_IOCTL: + tsu->hwts_tx_en_ioctl = 1; + if (mac_dev->ptp_enable) + mac_dev->ptp_enable(mac_dev); + break; + case PTP_DSBL_TXTS_IOCTL: + tsu->hwts_tx_en_ioctl = 0; + if (mac_dev->ptp_disable) + mac_dev->ptp_disable(mac_dev); + break; + case PTP_ENBL_RXTS_IOCTL: + tsu->hwts_rx_en_ioctl = 1; + break; + case PTP_DSBL_RXTS_IOCTL: + tsu->hwts_rx_en_ioctl = 0; + break; + case PTP_GET_RX_TIMESTAMP: + ptp_data_user = (struct dpa_ptp_data *)ifr->ifr_data; + if (copy_from_user(&ptp_data.ident, + &ptp_data_user->ident, sizeof(ptp_data.ident))) + return -EINVAL; + + if (dpa_get_rx_timestamp(tsu, &ptp_data.ident, &ptp_data.ts)) + return -EAGAIN; + + if (copy_to_user((void __user *)&ptp_data_user->ts, + &ptp_data.ts, sizeof(ptp_data.ts))) + return -EFAULT; + break; + case PTP_GET_TX_TIMESTAMP: + ptp_data_user = (struct dpa_ptp_data *)ifr->ifr_data; + if (copy_from_user(&ptp_data.ident, + &ptp_data_user->ident, sizeof(ptp_data.ident))) + return -EINVAL; + + if (dpa_get_tx_timestamp(tsu, &ptp_data.ident, &ptp_data.ts)) + return -EAGAIN; + + if (copy_to_user((void __user *)&ptp_data_user->ts, + &ptp_data.ts, sizeof(ptp_data.ts))) + return -EFAULT; + break; + case PTP_GET_TIME: + dpa_get_curr_cnt(tsu, &act_time); + if (copy_to_user(ifr->ifr_data, &act_time, sizeof(act_time))) + return -EFAULT; + break; + case PTP_SET_TIME: + if (copy_from_user(&act_time, ifr->ifr_data, sizeof(act_time))) + return -EINVAL; + dpa_set_1588cnt(tsu, &act_time); + break; + case PTP_GET_ADJ: + dpa_get_drift(tsu, &addend); + if (copy_to_user(ifr->ifr_data, &addend, sizeof(addend))) + return -EFAULT; + break; + case PTP_SET_ADJ: + if (copy_from_user(&addend, ifr->ifr_data, sizeof(addend))) + return -EINVAL; + dpa_set_drift(tsu, addend); + break; + case PTP_SET_FIPER_ALARM: + if (copy_from_user(&act_time, ifr->ifr_data, sizeof(act_time))) + return -EINVAL; + dpa_set_fiper_alarm(tsu, &act_time); + break; + case PTP_CLEANUP_TS: + dpa_flush_timestamp(tsu); + break; + default: + return -EINVAL; + } + + return retval; +} + +int dpa_ptp_init(struct dpa_priv_s *priv) +{ + struct dpa_ptp_tsu *tsu; + + /* Allocate memory for PTP structure */ + tsu = kzalloc(sizeof(struct dpa_ptp_tsu), GFP_KERNEL); + if (!tsu) + return -ENOMEM; + + memset(tsu, 0, sizeof(*tsu)); + tsu->valid = TRUE; + tsu->dpa_priv = priv; + + dpa_ptp_init_circ(&tsu->rx_timestamps, DEFAULT_PTP_RX_BUF_SZ); + dpa_ptp_init_circ(&tsu->tx_timestamps, DEFAULT_PTP_TX_BUF_SZ); + + priv->tsu = tsu; + + return 0; +} +EXPORT_SYMBOL(dpa_ptp_init); + +void dpa_ptp_cleanup(struct dpa_priv_s *priv) +{ + struct dpa_ptp_tsu *tsu = priv->tsu; + + tsu->valid = FALSE; + vfree(tsu->rx_timestamps.circ_buf.buf); + vfree(tsu->tx_timestamps.circ_buf.buf); + + kfree(tsu); +} +EXPORT_SYMBOL(dpa_ptp_cleanup); + +static int __init __cold dpa_ptp_load(void) +{ + return 0; +} +module_init(dpa_ptp_load); + +static void __exit __cold dpa_ptp_unload(void) +{ +} +module_exit(dpa_ptp_unload); --- linux-3.13.0.orig/drivers/net/dpa/dpaa_1588.h +++ linux-3.13.0/drivers/net/dpa/dpaa_1588.h @@ -0,0 +1,141 @@ +/* + * drivers/net/dpa/dpaa_1588.h + * + * Copyright (C) 2011 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 Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + */ +#ifndef __DPAA_1588_H__ +#define __DPAA_1588_H__ + +#include +#include +#include +#include + +#define DEFAULT_PTP_RX_BUF_SZ 2048 +#define DEFAULT_PTP_TX_BUF_SZ 512 + +/* 1588 private ioctl calls */ +#define PTP_ENBL_TXTS_IOCTL SIOCDEVPRIVATE +#define PTP_DSBL_TXTS_IOCTL (SIOCDEVPRIVATE + 1) +#define PTP_ENBL_RXTS_IOCTL (SIOCDEVPRIVATE + 2) +#define PTP_DSBL_RXTS_IOCTL (SIOCDEVPRIVATE + 3) +#define PTP_GET_TX_TIMESTAMP (SIOCDEVPRIVATE + 4) +#define PTP_GET_RX_TIMESTAMP (SIOCDEVPRIVATE + 5) +#define PTP_SET_TIME (SIOCDEVPRIVATE + 6) +#define PTP_GET_TIME (SIOCDEVPRIVATE + 7) +#define PTP_SET_FIPER_ALARM (SIOCDEVPRIVATE + 8) +#define PTP_SET_ADJ (SIOCDEVPRIVATE + 9) +#define PTP_GET_ADJ (SIOCDEVPRIVATE + 10) +#define PTP_CLEANUP_TS (SIOCDEVPRIVATE + 11) + +/* PTP V2 message type */ +enum { + PTP_MSGTYPE_SYNC = 0x0, + PTP_MSGTYPE_DELREQ = 0x1, + PTP_MSGTYPE_PDELREQ = 0x2, + PTP_MSGTYPE_PDELRESP = 0x3, + PTP_MSGTYPE_FLWUP = 0x8, + PTP_MSGTYPE_DELRESP = 0x9, + PTP_MSGTYPE_PDELRES_FLWUP = 0xA, + PTP_MSGTYPE_ANNOUNCE = 0xB, + PTP_MSGTYPE_SGNLNG = 0xC, + PTP_MSGTYPE_MNGMNT = 0xD, +}; + +/* Byte offset of data in the PTP V2 headers */ +#define PTP_OFFS_MSG_TYPE 0 +#define PTP_OFFS_VER_PTP 1 +#define PTP_OFFS_MSG_LEN 2 +#define PTP_OFFS_DOM_NMB 4 +#define PTP_OFFS_FLAGS 6 +#define PTP_OFFS_CORFIELD 8 +#define PTP_OFFS_SRCPRTID 20 +#define PTP_OFFS_SEQ_ID 30 +#define PTP_OFFS_CTRL 32 +#define PTP_OFFS_LOGMEAN 33 + +#define PTP_IP_OFFS 14 +#define PTP_UDP_OFFS 34 +#define PTP_HEADER_OFFS 42 +#define PTP_MSG_TYPE_OFFS (PTP_HEADER_OFFS + PTP_OFFS_MSG_TYPE) +#define PTP_SPORT_ID_OFFS (PTP_HEADER_OFFS + PTP_OFFS_SRCPRTID) +#define PTP_SEQ_ID_OFFS (PTP_HEADER_OFFS + PTP_OFFS_SEQ_ID) +#define PTP_CTRL_OFFS (PTP_HEADER_OFFS + PTP_OFFS_CTRL) + +/* 1588-2008 network protocol enumeration values */ +#define DPA_PTP_PROT_IPV4 1 +#define DPA_PTP_PROT_IPV6 2 +#define DPA_PTP_PROT_802_3 3 +#define DPA_PTP_PROT_DONTCARE 0xFFFF + +#define DPA_PTP_SOURCE_PORT_LENGTH 10 +#define DPA_PTP_HEADER_SZE 34 +#define DPA_ETYPE_LEN 2 +#define DPA_VLAN_TAG_LEN 4 + +#define DPA_PTP_TIMESTAMP_OFFSET 0x30 +#define DPA_PTP_NOMINAL_FREQ_PERIOD 0xa /* 10ns -> 100M */ +#define NANOSEC_PER_SECOND 1000000000 + +/* Struct needed to identify a timestamp */ +struct dpa_ptp_ident { + u8 version; + u8 msg_type; + u16 netw_prot; + u16 seq_id; + u8 snd_port_id[DPA_PTP_SOURCE_PORT_LENGTH]; +}; + +/* Timestamp format in 1588-2008 */ +struct dpa_ptp_time { + u64 sec; /* just 48 bit used */ + u32 nsec; +}; + +/* needed for timestamp data over ioctl */ +struct dpa_ptp_data { + struct dpa_ptp_ident ident; + struct dpa_ptp_time ts; +}; + +struct dpa_ptp_circ_buf { + struct circ_buf circ_buf; + u32 size; + spinlock_t ptp_lock; +}; + +/* PTP TSU control structure */ +struct dpa_ptp_tsu { + struct dpa_priv_s *dpa_priv; + bool valid; + struct dpa_ptp_circ_buf rx_timestamps; + struct dpa_ptp_circ_buf tx_timestamps; + + /* HW timestamping over ioctl enabled flag */ + int hwts_tx_en_ioctl; + int hwts_rx_en_ioctl; +}; + +extern int dpa_ptp_init(struct dpa_priv_s *priv); +extern void dpa_ptp_cleanup(struct dpa_priv_s *priv); +extern void dpa_ptp_store_txstamp(struct net_device *dev, struct sk_buff *skb, + const struct qm_fd *fd); +extern void dpa_ptp_store_rxstamp(struct net_device *dev, struct sk_buff *skb, + const struct qm_fd *fd); +extern int dpa_ioctl_1588(struct net_device *dev, struct ifreq *ifr, int cmd); +#endif --- linux-3.13.0.orig/drivers/net/dpa/dpaa_eth-common.h +++ linux-3.13.0/drivers/net/dpa/dpaa_eth-common.h @@ -0,0 +1,150 @@ +/* + * Copyright 2008-2011 Freescale Semiconductor Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 __DPA_COMMON_H +#define __DPA_COMMON_H + +#include /* pr_*() */ +#include /* dev_*() */ +#include /* smp_processor_id() */ + +/* The basename of the source file is being compiled */ +#define __file__ KBUILD_BASENAME".c" + +#define __hot + +#define cpu_printk(level, format, arg...) \ + pr_##level("cpu%d: " format, smp_processor_id(), ##arg) + +#define cpu_pr_emerg(format, arg...) \ + cpu_printk(emerg, format, ##arg) +#define cpu_pr_alert(format, arg...) \ + cpu_printk(alert, format, ##arg) +#define cpu_pr_crit(format, arg...) \ + cpu_printk(crit, format, ##arg) +#define cpu_pr_err(format, arg...) \ + cpu_printk(err, format, ##arg) +#define cpu_pr_warning(format, arg...) \ + cpu_printk(warning, format, ##arg) +#define cpu_pr_notice(format, arg...) \ + cpu_printk(notice, format, ##arg) +#define cpu_pr_info(format, arg...) \ + cpu_printk(info, format, ##arg) +#define cpu_pr_debug(format, arg...) \ + cpu_printk(debug, format, ##arg) + +/* Keep this in sync with the dev_*() definitions from linux/device.h */ +#define cpu_dev_printk(level, dev, format, arg...) \ + cpu_pr_##level("%s: %s: " format, dev_driver_string(dev), \ + dev_name(dev), ##arg) + +#define cpu_dev_emerg(dev, format, arg...) \ + cpu_dev_printk(emerg, dev, format, ##arg) +#define cpu_dev_alert(dev, format, arg...) \ + cpu_dev_printk(alert, dev, format, ##arg) +#define cpu_dev_crit(dev, format, arg...) \ + cpu_dev_printk(crit, dev, format, ##arg) +#define cpu_dev_err(dev, format, arg...) \ + cpu_dev_printk(err, dev, format, ##arg) +#define cpu_dev_warn(dev, format, arg...) \ + cpu_dev_printk(warning, dev, format, ##arg) +#define cpu_dev_notice(dev, format, arg...) \ + cpu_dev_printk(notice, dev, format, ##arg) +#define cpu_dev_info(dev, format, arg...) \ + cpu_dev_printk(info, dev, format, ##arg) +#define cpu_dev_dbg(dev, format, arg...) \ + cpu_dev_printk(debug, dev, format, ##arg) + +#define dpaa_eth_printk(level, dev, format, arg...) \ + cpu_dev_printk(level, dev, "%s:%hu:%s() " format, \ + __file__, __LINE__, __func__, ##arg) + +#define dpaa_eth_emerg(dev, format, arg...) \ + dpaa_eth_printk(emerg, dev, format, ##arg) +#define dpaa_eth_alert(dev, format, arg...) \ + dpaa_eth_printk(alert, dev, format, ##arg) +#define dpaa_eth_crit(dev, format, arg...) \ + dpaa_eth_printk(crit, dev, format, ##arg) +#define dpaa_eth_err(dev, format, arg...) \ + dpaa_eth_printk(err, dev, format, ##arg) +#define dpaa_eth_warning(dev, format, arg...) \ + dpaa_eth_printk(warning, dev, format, ##arg) +#define dpaa_eth_notice(dev, format, arg...) \ + dpaa_eth_printk(notice, dev, format, ##arg) +#define dpaa_eth_info(dev, format, arg...) \ + dpaa_eth_printk(info, dev, format, ##arg) +#define dpaa_eth_debug(dev, format, arg...) \ + dpaa_eth_printk(debug, dev, format, ##arg) + +#define cpu_netdev_emerg(net_dev, format, arg...) \ + dpaa_eth_emerg((net_dev)->dev.parent, "%s: " format, \ + (net_dev)->name , ##arg) +#define cpu_netdev_alert(net_dev, format, arg...) \ + dpaa_eth_alert((net_dev)->dev.parent, "%s: " format, \ + (net_dev)->name , ##arg) +#define cpu_netdev_crit(net_dev, format, arg...) \ + dpaa_eth_crit((net_dev)->dev.parent, "%s: " format, \ + (net_dev)->name , ##arg) +#define cpu_netdev_err(net_dev, format, arg...) \ + dpaa_eth_err((net_dev)->dev.parent, "%s: " format, \ + (net_dev)->name , ##arg) +#define cpu_netdev_warn(net_dev, format, arg...) \ + dpaa_eth_warning((net_dev)->dev.parent, "%s: " format, \ + (net_dev)->name , ##arg) +#define cpu_netdev_notice(net_dev, format, arg...) \ + dpaa_eth_notice((net_dev)->dev.parent, "%s: " format, \ + (net_dev)->name , ##arg) +#define cpu_netdev_info(net_dev, format, arg...) \ + dpaa_eth_info((net_dev)->dev.parent, "%s: " format, \ + (net_dev)->name , ##arg) +#define cpu_netdev_dbg(net_dev, format, arg...) \ + dpaa_eth_debug((net_dev)->dev.parent, "%s: " format, \ + (net_dev)->name , ##arg) + +enum {RX, TX}; + +#define DPA_PRIV_DATA_SIZE 16 +#define DPA_PARSE_RESULTS_SIZE sizeof(t_FmPrsResult) +#define DPA_HASH_RESULTS_SIZE 16 + +#define dpaa_eth_init_port(type, port, param, errq_id, defq_id, has_timer) \ +{ \ + param.errq = errq_id; \ + param.defq = defq_id; \ + param.priv_data_size = DPA_PRIV_DATA_SIZE; \ + param.parse_results = true; \ + param.hash_results = true; \ + param.time_stamp = has_timer; \ + fm_set_##type##_port_params(port, ¶m); \ +} + +#endif /* __DPA_COMMON_H */ --- linux-3.13.0.orig/drivers/net/dpa/dpaa_eth.c +++ linux-3.13.0/drivers/net/dpa/dpaa_eth.c @@ -0,0 +1,3237 @@ +/* + * Copyright 2008-2011 Freescale Semiconductor Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 /* arp_hdr_len() */ +#include /* VLAN_HLEN */ +#include /* struct icmphdr */ +#include /* struct iphdr */ +#include /* struct ipv6hdr */ +#include /* struct udphdr */ +#include /* struct tcphdr */ +#include /* net_ratelimit() */ +#include /* ETH_P_IP and ETH_P_IPV6 */ +#include +#include +#include +#include /* get_hard_smp_processor_id() */ +#include +#ifdef CONFIG_DEBUG_FS +#include +#endif +#include + +#include "fsl_fman.h" +#include "fm_ext.h" +#include "fm_port_ext.h" + +#include "mac.h" +#include "dpaa_eth.h" +#include "dpaa_1588.h" + +#define ARRAY2_SIZE(arr) (ARRAY_SIZE(arr) * ARRAY_SIZE((arr)[0])) + +#define DPA_NETIF_FEATURES (NETIF_F_HW_QDISC) +#define DEFAULT_COUNT 64 +#define DEFAULT_BUF_SIZE DPA_BP_SIZE(fsl_fman_phy_maxfrm); +#define DPA_MAX_TX_BACKLOG 512 +#define DPA_NAPI_WEIGHT 64 + +#define DPA_BP_REFILL (1 | (smp_processor_id() << 16)) +#define DPA_BP_FINE ((smp_processor_id() << 16)) +#define DPA_BP_REFILL_NEEDED 1 + +/* Bootarg used to override the Kconfig DPA_MAX_FRM_SIZE value */ +#define FSL_FMAN_PHY_MAXFRM_BOOTARG "fsl_fman_phy_max_frm" + +/* + * Values for the L3R field of the FM Parse Results + */ +/* L3 Type field: First IP Present IPv4 */ +#define FM_L3_PARSE_RESULT_IPV4 0x8000 +/* L3 Type field: First IP Present IPv6 */ +#define FM_L3_PARSE_RESULT_IPV6 0x4000 + +/* + * Values for the L4R field of the FM Parse Results + */ +/* L4 Type field: UDP */ +#define FM_L4_PARSE_RESULT_UDP 0x40 +/* L4 Type field: TCP */ +#define FM_L4_PARSE_RESULT_TCP 0x20 + +/* + * FD status field indicating whether the FM Parser has attempted to validate + * the L4 csum of the frame. + * Note that having this bit set doesn't necessarily imply that the checksum + * is valid. One would have to check the parse results to find that out. + */ +#define FM_FD_STAT_L4CV 0x00000004 + +#define DPA_DESCRIPTION "FSL DPAA Ethernet driver" + +MODULE_LICENSE("Dual BSD/GPL"); + +MODULE_AUTHOR("Andy Fleming "); + +MODULE_DESCRIPTION(DPA_DESCRIPTION); + +static uint8_t debug = -1; +module_param(debug, byte, S_IRUGO); +MODULE_PARM_DESC(debug, "Module/Driver verbosity level"); + +static uint16_t tx_timeout = 1000; +module_param(tx_timeout, ushort, S_IRUGO); +MODULE_PARM_DESC(tx_timeout, "The Tx timeout in ms"); + +#ifdef CONFIG_DEBUG_FS +static struct dentry *dpa_debugfs_root; +#endif + +/* + * Max frame size, across all interfaces. + * Configurable from Kconfig or bootargs, to avoid allocating + * oversized (socket) buffers when not using jumbo frames. + * Must be large enough to accomodate the network MTU, but small enough + * to avoid wasting skb memory. + * + * Could be overridden once, at boot-time, via the + * fsl_fman_phy_set_max_frm() callback. + */ +int fsl_fman_phy_maxfrm = CONFIG_DPA_MAX_FRM_SIZE; + +static const char rtx[][3] = { + [RX] = "RX", + [TX] = "TX" +}; + +struct dpa_fq { + struct qman_fq fq_base; + struct list_head list; + struct net_device *net_dev; + bool init; + uint32_t fqid; + uint32_t flags; + uint16_t channel; + uint8_t wq; +}; + +/* BM */ + +#ifdef DEBUG +#define GFP_DPA_BP (GFP_DMA | __GFP_ZERO | GFP_ATOMIC) +#else +#define GFP_DPA_BP (GFP_DMA | GFP_ATOMIC) +#endif + +#define DPA_BP_HEAD (DPA_PRIV_DATA_SIZE + DPA_PARSE_RESULTS_SIZE + \ + DPA_HASH_RESULTS_SIZE) +#define DPA_BP_SIZE(s) (DPA_BP_HEAD + (s)) + +#define DPAA_ETH_MAX_PAD (L1_CACHE_BYTES * 8) + +#define FM_FD_STAT_ERRORS \ + (FM_PORT_FRM_ERR_DMA | FM_PORT_FRM_ERR_PHYSICAL | \ + FM_PORT_FRM_ERR_SIZE | FM_PORT_FRM_ERR_CLS_DISCARD | \ + FM_PORT_FRM_ERR_EXTRACTION | FM_PORT_FRM_ERR_NO_SCHEME | \ + FM_PORT_FRM_ERR_ILL_PLCR | FM_PORT_FRM_ERR_PRS_TIMEOUT | \ + FM_PORT_FRM_ERR_PRS_ILL_INSTRUCT | FM_PORT_FRM_ERR_PRS_HDR_ERR) + +static struct dpa_bp *dpa_bp_array[64]; + +static struct dpa_bp *default_pool; + +static struct dpa_bp *dpa_bpid2pool(int bpid) +{ + return dpa_bp_array[bpid]; +} + +static void dpa_bp_depletion(struct bman_portal *portal, + struct bman_pool *pool, void *cb_ctx, int depleted) +{ + if (net_ratelimit()) + pr_err("Invalid Pool depleted notification!\n"); +} + +static void bmb_free(struct dpa_bp *bp, struct bm_buffer *bmb) +{ + int i; + struct sk_buff **skbh; + struct sk_buff *skb; + + for (i = 0; i < 8; i++) { + dma_addr_t addr = bm_buf_addr(&bmb[i]); + if (!addr) + break; + + skbh = (struct sk_buff **)phys_to_virt(addr); + skb = *skbh; + + dma_unmap_single(bp->dev, addr, bp->size, DMA_FROM_DEVICE); + + dev_kfree_skb(skb); + } +} + +static void dpa_bp_add_8(struct dpa_bp *dpa_bp) +{ + struct bm_buffer bmb[8]; + struct sk_buff **skbh; + dma_addr_t addr; + int i; + struct sk_buff *skb; + int err; + int *count_ptr; + + count_ptr = per_cpu_ptr(dpa_bp->percpu_count, smp_processor_id()); + + for (i = 0; i < 8; i++) { + /* + * The buffers tend to be aligned all to the same cache + * index. A standard dequeue operation pulls in 15 packets. + * This means that when it stashes, it evicts half of the + * packets it's stashing. In order to prevent that, we pad + * by a variable number of cache lines, to reduce collisions. + * We always pad by at least 1 cache line, because we want + * a little extra room at the beginning for IPSec and to + * accommodate NET_IP_ALIGN. + */ + int pad = (i + 1) * L1_CACHE_BYTES; + + skb = dev_alloc_skb(dpa_bp->size + pad); + if (unlikely(!skb)) { + printk(KERN_ERR "dev_alloc_skb() failed for %d bytes\n", dpa_bp->size + pad); + bm_buffer_set64(&bmb[i], 0); + break; + } + + skbh = (struct sk_buff **)(skb->head + pad); + *skbh = skb; + + addr = dma_map_single(dpa_bp->dev, skb->head + pad, + dpa_bp->size, DMA_FROM_DEVICE); + + bm_buffer_set64(&bmb[i], addr); + } + + /* Avoid releasing a completely null buffer; bman_release() requires + * at least one buf. */ + if (likely(i)) { + err = bman_release(dpa_bp->pool, bmb, i, 0); + + if (unlikely(err < 0)) + bmb_free(dpa_bp, bmb); + else + *count_ptr += i; + } +} + +static void dpa_make_private_pool(struct dpa_bp *dpa_bp) +{ + int i; + + dpa_bp->percpu_count = __alloc_percpu(sizeof(*dpa_bp->percpu_count), + __alignof__(*dpa_bp->percpu_count)); + + /* Give each cpu an allotment of "count" buffers */ + for_each_online_cpu(i) { + int *thiscount; + int *countptr; + int j; + thiscount = per_cpu_ptr(dpa_bp->percpu_count, + smp_processor_id()); + countptr = per_cpu_ptr(dpa_bp->percpu_count, i); + + for (j = 0; j < dpa_bp->count; j += 8) + dpa_bp_add_8(dpa_bp); + + /* Adjust the counts */ + *countptr = j; + + if (countptr != thiscount) + *thiscount = *thiscount - j; + } +} + + +static void dpaa_eth_seed_pool(struct dpa_bp *bp) +{ + size_t count = bp->count; + size_t addr = bp->paddr; + + while (count) { + struct bm_buffer bufs[8]; + int num_bufs = 0; + + do { + BUG_ON(addr > 0xffffffffffffull); + bufs[num_bufs].bpid = bp->bpid; + bm_buffer_set64(&bufs[num_bufs++], addr); + addr += bp->size; + + } while (--count && (num_bufs < 8)); + + while (bman_release(bp->pool, bufs, num_bufs, 0)) + cpu_relax(); + } +} + +static int dpa_make_shared_pool(struct dpa_bp *bp) +{ + devm_request_mem_region(bp->dev, bp->paddr, bp->size * bp->count, + KBUILD_MODNAME); + bp->vaddr = devm_ioremap_prot(bp->dev, bp->paddr, + bp->size * bp->count, 0); + if (bp->vaddr == NULL) { + cpu_pr_err("Could not map memory for pool %d\n", bp->bpid); + return -EIO; + } + + if (bp->seed_pool) + dpaa_eth_seed_pool(bp); + + return 0; +} + +static int __must_check __attribute__((nonnull)) +dpa_bp_alloc(struct dpa_bp *dpa_bp) +{ + int err = 0; + struct bman_pool_params bp_params; + struct platform_device *pdev; + + BUG_ON(dpa_bp->size == 0); + BUG_ON(dpa_bp->count == 0); + + bp_params.flags = BMAN_POOL_FLAG_DEPLETION; + bp_params.cb = dpa_bp_depletion; + bp_params.cb_ctx = dpa_bp; + + /* We support two options. Either a global shared pool, or + * a specified pool. If the pool is specified, we only + * create one per bpid */ + if (dpa_bp->kernel_pool && default_pool) { + atomic_inc(&default_pool->refs); + return 0; + } + + if (dpa_bp_array[dpa_bp->bpid]) { + atomic_inc(&dpa_bp_array[dpa_bp->bpid]->refs); + return 0; + } + + if (dpa_bp->bpid == 0) + bp_params.flags |= BMAN_POOL_FLAG_DYNAMIC_BPID; + else + bp_params.bpid = dpa_bp->bpid; + + dpa_bp->pool = bman_new_pool(&bp_params); + if (unlikely(dpa_bp->pool == NULL)) { + cpu_pr_err("bman_new_pool() failed\n"); + return -ENODEV; + } + + dpa_bp->bpid = bman_get_params(dpa_bp->pool)->bpid; + + pdev = platform_device_register_simple("dpaa_eth_bpool", + dpa_bp->bpid, NULL, 0); + if (IS_ERR(pdev)) { + err = PTR_ERR(pdev); + goto pdev_register_failed; + } + + if (dma_set_mask(&pdev->dev, DMA_BIT_MASK(40))) + goto pdev_mask_failed; + + dpa_bp->dev = &pdev->dev; + + if (dpa_bp->kernel_pool) { + dpa_make_private_pool(dpa_bp); + if (!default_pool) + default_pool = dpa_bp; + } else { + err = dpa_make_shared_pool(dpa_bp); + if (err) + goto make_shared_pool_failed; + } + + dpa_bp_array[dpa_bp->bpid] = dpa_bp; + + atomic_set(&dpa_bp->refs, 1); + + return 0; + +make_shared_pool_failed: +pdev_mask_failed: + platform_device_unregister(pdev); +pdev_register_failed: + bman_free_pool(dpa_bp->pool); + + return err; +} + +static void __cold __attribute__((nonnull)) +_dpa_bp_free(struct dpa_bp *dpa_bp) +{ + struct dpa_bp *bp = dpa_bpid2pool(dpa_bp->bpid); + + if (!atomic_dec_and_test(&bp->refs)) + return; + + if (bp->kernel_pool) { + int num; + + do { + struct bm_buffer bmb[8]; + int i; + + num = bman_acquire(bp->pool, bmb, 8, 0); + + for (i = 0; i < num; i++) { + dma_addr_t addr = bm_buf_addr(&bmb[i]); + struct sk_buff **skbh = phys_to_virt(addr); + struct sk_buff *skb = *skbh; + + dma_unmap_single(bp->dev, addr, bp->size, + DMA_FROM_DEVICE); + + dev_kfree_skb_any(skb); + } + } while (num == 8); + } + + dpa_bp_array[bp->bpid] = 0; + bman_free_pool(bp->pool); +} + +static void __cold __attribute__((nonnull)) +dpa_bp_free(struct dpa_priv_s *priv, struct dpa_bp *dpa_bp) +{ + int i; + + for (i = 0; i < priv->bp_count; i++) + _dpa_bp_free(&priv->dpa_bp[i]); +} + +/* QM */ + +static int __must_check __attribute__((nonnull)) +_dpa_fq_alloc(struct list_head *list, struct dpa_fq *dpa_fq) +{ + int _errno; + const struct dpa_priv_s *priv; + struct device *dev; + struct qman_fq *fq; + struct qm_mcc_initfq initfq; + /* Set the QMan taildrop threshold high enough to accomodate + * one 64k frame, plus an extra (here, 16k) for + * other frames awaiting Tx. */ + const u32 qman_taildrop_threshold = 0x14000; + + priv = netdev_priv(dpa_fq->net_dev); + dev = dpa_fq->net_dev->dev.parent; + + if (dpa_fq->fqid == 0) + dpa_fq->flags |= QMAN_FQ_FLAG_DYNAMIC_FQID; + + dpa_fq->init = !(dpa_fq->flags & QMAN_FQ_FLAG_NO_MODIFY); + + _errno = qman_create_fq(dpa_fq->fqid, dpa_fq->flags, &dpa_fq->fq_base); + if (_errno) { + dpaa_eth_err(dev, "qman_create_fq() failed\n"); + return _errno; + } + fq = &dpa_fq->fq_base; + + if (dpa_fq->init) { + initfq.we_mask = QM_INITFQ_WE_DESTWQ; + initfq.fqd.dest.channel = dpa_fq->channel; + initfq.fqd.dest.wq = dpa_fq->wq; + initfq.we_mask |= QM_INITFQ_WE_TDTHRESH | QM_INITFQ_WE_FQCTRL; + qm_fqd_taildrop_set(&initfq.fqd.td, qman_taildrop_threshold, 1); + initfq.fqd.fq_ctrl = QM_FQCTRL_TDE | QM_FQCTRL_PREFERINCACHE; + if (dpa_fq->flags & QMAN_FQ_FLAG_NO_ENQUEUE) { + initfq.we_mask |= QM_INITFQ_WE_CONTEXTA; + initfq.fqd.fq_ctrl |= + QM_FQCTRL_CTXASTASHING | QM_FQCTRL_AVOIDBLOCK; + initfq.fqd.context_a.stashing.exclusive = + QM_STASHING_EXCL_DATA | QM_STASHING_EXCL_CTX | + QM_STASHING_EXCL_ANNOTATION; + initfq.fqd.context_a.stashing.data_cl = 2; + initfq.fqd.context_a.stashing.annotation_cl = 1; + initfq.fqd.context_a.stashing.context_cl = + DIV_ROUND_UP(sizeof(struct qman_fq), 64); + }; + + _errno = qman_init_fq(fq, QMAN_INITFQ_FLAG_SCHED, &initfq); + if (_errno < 0) { + dpaa_eth_err(dev, "qman_init_fq(%u) = %d\n", + qman_fq_fqid(fq), _errno); + qman_destroy_fq(fq, 0); + return _errno; + } + } + + dpa_fq->fqid = qman_fq_fqid(fq); + list_add_tail(&dpa_fq->list, list); + + return 0; +} + +static int __cold __attribute__((nonnull)) +_dpa_fq_free(struct device *dev, struct qman_fq *fq) +{ + int _errno, __errno; + struct dpa_fq *dpa_fq; + const struct dpa_priv_s *priv; + + _errno = 0; + + dpa_fq = container_of(fq, struct dpa_fq, fq_base); + priv = netdev_priv(dpa_fq->net_dev); + + if (dpa_fq->init) { + _errno = qman_retire_fq(fq, NULL); + if (unlikely(_errno < 0) && netif_msg_drv(priv)) + dpaa_eth_err(dev, "qman_retire_fq(%u) = %d\n", + qman_fq_fqid(fq), _errno); + + __errno = qman_oos_fq(fq); + if (unlikely(__errno < 0) && netif_msg_drv(priv)) { + dpaa_eth_err(dev, "qman_oos_fq(%u) = %d\n", + qman_fq_fqid(fq), __errno); + if (_errno >= 0) + _errno = __errno; + } + } + + qman_destroy_fq(fq, 0); + list_del(&dpa_fq->list); + + return _errno; +} + +static int __cold __attribute__((nonnull)) +dpa_fq_free(struct device *dev, struct list_head *list) +{ + int _errno, __errno; + struct dpa_fq *dpa_fq, *tmp; + + _errno = 0; + list_for_each_entry_safe(dpa_fq, tmp, list, list) { + __errno = _dpa_fq_free(dev, (struct qman_fq *)dpa_fq); + if (unlikely(__errno < 0) && _errno >= 0) + _errno = __errno; + } + + return _errno; +} + + +static inline ssize_t __const __must_check __attribute__((nonnull)) +dpa_fd_length(const struct qm_fd *fd) +{ + return fd->length20; +} + +static inline ssize_t __const __must_check __attribute__((nonnull)) +dpa_fd_offset(const struct qm_fd *fd) +{ + return fd->offset; +} + +static int __must_check __attribute__((nonnull)) +dpa_fd_release(const struct net_device *net_dev, const struct qm_fd *fd) +{ + int _errno, __errno, i, j; + const struct dpa_priv_s *priv; + const struct qm_sg_entry *sgt; + struct dpa_bp *_dpa_bp, *dpa_bp; + struct bm_buffer _bmb, bmb[8]; + + priv = netdev_priv(net_dev); + + _bmb.hi = fd->addr_hi; + _bmb.lo = fd->addr_lo; + + _dpa_bp = dpa_bpid2pool(fd->bpid); + BUG_ON(IS_ERR(_dpa_bp)); + + _errno = 0; + if (fd->format == qm_fd_sg) { + sgt = (phys_to_virt(bm_buf_addr(&_bmb)) + dpa_fd_offset(fd)); + + i = 0; + do { + dpa_bp = dpa_bpid2pool(sgt[i].bpid); + BUG_ON(IS_ERR(dpa_bp)); + + j = 0; + do { + BUG_ON(sgt[i].extension); + + bmb[j].hi = sgt[i].addr_hi; + bmb[j].lo = sgt[i].addr_lo; + j++; i++; + } while (j < ARRAY_SIZE(bmb) && + !sgt[i-1].final && + sgt[i-1].bpid == sgt[i].bpid); + + __errno = bman_release(dpa_bp->pool, bmb, j, 0); + if (unlikely(__errno < 0)) { + if (netif_msg_drv(priv) && net_ratelimit()) + cpu_netdev_err(net_dev, + "bman_release(%hu) = %d\n", + dpa_bp->bpid, _errno); + if (_errno >= 0) + _errno = __errno; + } + } while (!sgt[i-1].final); + } + + __errno = bman_release(_dpa_bp->pool, &_bmb, 1, 0); + if (unlikely(__errno < 0)) { + if (netif_msg_drv(priv) && net_ratelimit()) + cpu_netdev_err(net_dev, "bman_release(%hu) = %d\n", + _dpa_bp->bpid, __errno); + if (_errno >= 0) + _errno = __errno; + } + + return _errno; +} + +/* net_device */ + +#define NN_ALLOCATED_SPACE(net_dev) \ + max((size_t)arp_hdr_len(net_dev), sizeof(struct iphdr)) +#define NN_RESERVED_SPACE(net_dev) \ + min((size_t)arp_hdr_len(net_dev), sizeof(struct iphdr)) + +#define TT_ALLOCATED_SPACE(net_dev) \ + max(sizeof(struct icmphdr), max(sizeof(struct udphdr), \ + sizeof(struct tcphdr))) +#define TT_RESERVED_SPACE(net_dev) \ + min(sizeof(struct icmphdr), min(sizeof(struct udphdr), \ + sizeof(struct tcphdr))) + +static struct net_device_stats * __cold +dpa_get_stats(struct net_device *net_dev) +{ + struct dpa_priv_s *priv = netdev_priv(net_dev); + unsigned long *netstats; + unsigned long *cpustats; + int i, j; + struct dpa_percpu_priv_s *percpu_priv; + int numstats = sizeof(net_dev->stats) / sizeof(unsigned long); + + netstats = (unsigned long *)&net_dev->stats; + + memset(netstats, 0, sizeof(net_dev->stats)); + + for_each_online_cpu(i) { + percpu_priv = per_cpu_ptr(priv->percpu_priv, i); + + cpustats = (unsigned long *)&percpu_priv->stats; + + for (j = 0; j < numstats; j++) + netstats[j] += cpustats[j]; + } + + return &net_dev->stats; +} + +static int dpa_change_mtu(struct net_device *net_dev, int new_mtu) +{ + const struct dpa_priv_s *priv; + const int max_mtu = fsl_fman_phy_maxfrm - (VLAN_ETH_HLEN + ETH_FCS_LEN); + const int min_mtu = 64; + + priv = netdev_priv(net_dev); + + /* Make sure we don't exceed the Ethernet controller's MAXFRM */ + if (new_mtu < min_mtu || new_mtu > max_mtu) { + cpu_netdev_err(net_dev, "Invalid L3 mtu %d " + "(must be between %d and %d).\n", + new_mtu, min_mtu, max_mtu); + return -EINVAL; + } + net_dev->mtu = new_mtu; + + return 0; +} + +static int dpa_set_mac_address(struct net_device *net_dev, void *addr) +{ + const struct dpa_priv_s *priv; + int _errno; + + priv = netdev_priv(net_dev); + + _errno = eth_mac_addr(net_dev, addr); + if (_errno < 0) { + if (netif_msg_drv(priv)) + cpu_netdev_err(net_dev, + "eth_mac_addr() = %d\n", + _errno); + return _errno; + } + + if (!priv->mac_dev) + /* MAC-less interface, so nothing more to do here */ + return 0; + + _errno = priv->mac_dev->change_addr(priv->mac_dev, net_dev->dev_addr); + if (_errno < 0) { + if (netif_msg_drv(priv)) + cpu_netdev_err(net_dev, + "mac_dev->change_addr() = %d\n", + _errno); + return _errno; + } + + return 0; +} + +static void __cold dpa_change_rx_flags(struct net_device *net_dev, int flags) +{ + int _errno; + const struct dpa_priv_s *priv; + + priv = netdev_priv(net_dev); + + if (!priv->mac_dev) + return; + + if ((flags & IFF_PROMISC) != 0) { + _errno = priv->mac_dev->change_promisc(priv->mac_dev); + if (unlikely(_errno < 0) && netif_msg_drv(priv)) + cpu_netdev_err(net_dev, + "mac_dev->change_promisc() = %d\n", + _errno); + } +} + +static void dpa_set_multicast_list(struct net_device *net_dev) +{ + int _errno; + struct dpa_priv_s *priv; + + priv = netdev_priv(net_dev); + + if (!priv->mac_dev) { + if (netif_msg_drv(priv)) + cpu_netdev_warn(net_dev, + "%s() called on MAC-less interface\n", + __func__); + return; + } + + _errno = priv->mac_dev->set_multi(net_dev); + if ((_errno < 0) && netif_msg_drv(priv)) + cpu_netdev_err(net_dev, "mac_dev->set_multi() = %d\n", _errno); +} + +static int dpa_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) +{ + struct dpa_priv_s *priv = netdev_priv(dev); + + if (!netif_running(dev)) + return -EINVAL; + +#ifdef CONFIG_FSL_DPA_1588 + if ((cmd >= PTP_ENBL_TXTS_IOCTL) && (cmd <= PTP_CLEANUP_TS)) { + int ret = -ENODEV; + + if (priv->tsu && priv->tsu->valid) + ret = dpa_ioctl_1588(dev, rq, cmd); + + return ret; + } +#endif + + return phy_mii_ioctl(priv->mac_dev->phy_dev, rq, cmd); +} + +/* + * When we put the buffer into the pool, we purposefully added + * some padding to the address so that the buffers wouldn't all + * be page-aligned. But the skb has been reset to a default state, + * so it is pointing up to DPAA_ETH_MAX_PAD - L1_CACHE_BYTES bytes + * before the actual data. We subtract skb->head from the fd addr, + * and then mask off the translated part to get the actual distance. + */ +static int dpa_process_one(struct dpa_percpu_priv_s *percpu_priv, + struct sk_buff *skb, struct dpa_bp *bp, const struct qm_fd *fd) +{ + dma_addr_t addr = qm_fd_addr(fd); + u32 addrlo = lower_32_bits(addr); + u32 skblo = lower_32_bits((unsigned long)skb->head); + u32 pad = (addrlo - skblo) & (PAGE_SIZE - 1); + unsigned int data_start; + + (*percpu_priv->dpa_bp_count)--; + + /* + * The skb is currently pointed at head + NET_SKB_PAD. The packet + * starts at skb->head + pad + fd offset. + */ + data_start = pad + dpa_fd_offset(fd) - NET_SKB_PAD; + skb_put(skb, dpa_fd_length(fd) + data_start); + skb_pull(skb, data_start); + + return 0; +} + +static void _dpa_rx_error(struct net_device *net_dev, + const struct dpa_priv_s *priv, + struct dpa_percpu_priv_s *percpu_priv, + const struct qm_fd *fd) +{ + int _errno; + + if (netif_msg_hw(priv) && net_ratelimit()) + cpu_netdev_warn(net_dev, "FD status = 0x%08x\n", + fd->status & FM_FD_STAT_ERRORS); + + percpu_priv->stats.rx_errors++; + + _errno = dpa_fd_release(net_dev, fd); + if (unlikely(_errno < 0)) { + dump_stack(); + panic("Can't release buffer to the BM during RX\n"); + } +} + +static void _dpa_tx_error(struct net_device *net_dev, + const struct dpa_priv_s *priv, + struct dpa_percpu_priv_s *percpu_priv, + const struct qm_fd *fd) +{ + struct sk_buff *skb; + struct sk_buff **skbh; + dma_addr_t addr = qm_fd_addr(fd); + struct dpa_bp *bp = priv->dpa_bp; + + if (netif_msg_hw(priv) && net_ratelimit()) + cpu_netdev_warn(net_dev, "FD status = 0x%08x\n", + fd->status & FM_FD_STAT_ERRORS); + + percpu_priv->stats.tx_errors++; + + skbh = (struct sk_buff **)phys_to_virt(addr); + skb = *skbh; + + dma_unmap_single(bp->dev, addr, bp->size, DMA_TO_DEVICE); + + dev_kfree_skb(skb); +} + +static void __hot _dpa_rx(struct net_device *net_dev, + const struct dpa_priv_s *priv, + struct dpa_percpu_priv_s *percpu_priv, + const struct qm_fd *fd) +{ + int _errno; + struct dpa_bp *dpa_bp; + struct sk_buff *skb; + struct sk_buff **skbh; + dma_addr_t addr = qm_fd_addr(fd); + + skbh = (struct sk_buff **)phys_to_virt(addr); + + if (unlikely(fd->status & FM_FD_STAT_ERRORS) != 0) { + if (netif_msg_hw(priv) && net_ratelimit()) + cpu_netdev_warn(net_dev, "FD status = 0x%08x\n", + fd->status & FM_FD_STAT_ERRORS); + + percpu_priv->stats.rx_errors++; + + goto _return_dpa_fd_release; + } + + if (unlikely(fd->format != qm_fd_contig)) { + percpu_priv->stats.rx_dropped++; + if (netif_msg_rx_status(priv) && net_ratelimit()) + cpu_netdev_warn(net_dev, "Dropping a SG frame\n"); + goto _return_dpa_fd_release; + } + + dpa_bp = dpa_bpid2pool(fd->bpid); + + dma_unmap_single(dpa_bp->dev, qm_fd_addr(fd), dpa_bp->size, + DMA_FROM_DEVICE); + + skb = *skbh; + prefetch(skb); + + /* Fill the SKB */ + dpa_process_one(percpu_priv, skb, dpa_bp, fd); + + prefetch(skb_shinfo(skb)); + +#ifdef CONFIG_FSL_DPA_1588 + if (priv->tsu && priv->tsu->valid) + dpa_ptp_store_rxstamp(net_dev, skb, fd); +#endif + + skb->protocol = eth_type_trans(skb, net_dev); + + if (unlikely(skb->len > net_dev->mtu)) { + if ((skb->protocol != ETH_P_8021Q) || + (skb->len > net_dev->mtu + 4)) { + percpu_priv->stats.rx_dropped++; + goto drop_large_frame; + } + } + + /* Check if the FMan Parser has already validated the L4 csum. */ + if (fd->status & FM_FD_STAT_L4CV) { + /* If we're here, the csum must be valid (if it hadn't, + * the frame would have been received on the Error FQ, + * respectively on the _dpa_rx_error() path). */ + skb->ip_summed = CHECKSUM_UNNECESSARY; + } else + skb->ip_summed = CHECKSUM_NONE; + + if (unlikely(netif_receive_skb(skb) == NET_RX_DROP)) + percpu_priv->stats.rx_dropped++; + else { + percpu_priv->stats.rx_packets++; + percpu_priv->stats.rx_bytes += dpa_fd_length(fd); + } + + net_dev->last_rx = jiffies; + + return; + +drop_large_frame: + (*percpu_priv->dpa_bp_count)++; +_return_dpa_fd_release: + _errno = dpa_fd_release(net_dev, fd); + if (unlikely(_errno < 0)) { + dump_stack(); + panic("Can't release buffer to the BM during RX\n"); + } +} + +static void dpaa_eth_napi_disable(struct dpa_priv_s *priv) +{ + struct dpa_percpu_priv_s *percpu_priv; + int i; + + if (priv->shared) + return; + + for_each_online_cpu(i) { + percpu_priv = per_cpu_ptr(priv->percpu_priv, i); + napi_disable(&percpu_priv->napi); + } +} + +static void dpaa_eth_napi_enable(struct dpa_priv_s *priv) +{ + struct dpa_percpu_priv_s *percpu_priv; + int i; + + if (priv->shared) + return; + + for_each_online_cpu(i) { + percpu_priv = per_cpu_ptr(priv->percpu_priv, i); + napi_enable(&percpu_priv->napi); + } +} + +static int dpaa_eth_poll(struct napi_struct *napi, int budget) +{ + struct dpa_percpu_priv_s *percpu_priv; + int cleaned = qman_poll_dqrr(budget); + int count; + + percpu_priv = container_of(napi, struct dpa_percpu_priv_s, napi); + + count = *percpu_priv->dpa_bp_count; + + if (count < DEFAULT_COUNT / 4) { + int i; + + for (i = count; i < DEFAULT_COUNT; i += 8) + dpa_bp_add_8(percpu_priv->dpa_bp); + } + + if (cleaned < budget) { + int tmp; + napi_complete(napi); + tmp = qman_irqsource_add(QM_PIRQ_DQRI); + BUG_ON(tmp); + } + + return cleaned; +} + +static void __hot _dpa_tx(struct net_device *net_dev, + const struct dpa_priv_s *priv, + struct dpa_percpu_priv_s *percpu_priv, + const struct qm_fd *fd) +{ + struct sk_buff **skbh; + struct sk_buff *skb; + dma_addr_t addr = qm_fd_addr(fd); + struct dpa_bp *bp = priv->dpa_bp; + + /* This might not perfectly reflect the reality, if the core dequeueing + * the Tx confirmation is different from the one that did the enqueue, + * but at least it'll show up in the total count. */ + percpu_priv->tx_confirm++; + + if (unlikely(fd->status & FM_FD_STAT_ERRORS) != 0) { + if (netif_msg_hw(priv) && net_ratelimit()) + cpu_netdev_warn(net_dev, "FD status = 0x%08x\n", + fd->status & FM_FD_STAT_ERRORS); + + percpu_priv->stats.tx_errors++; + } + + skbh = (struct sk_buff **)phys_to_virt(addr); + skb = *skbh; + +#ifdef CONFIG_FSL_DPA_1588 + if (priv->tsu && priv->tsu->valid) + dpa_ptp_store_txstamp(net_dev, skb, fd); +#endif + + dma_unmap_single(bp->dev, addr, bp->size, DMA_TO_DEVICE); + + dev_kfree_skb(skb); +} + +static struct dpa_bp *dpa_size2pool(struct dpa_priv_s *priv, size_t size) +{ + int i; + + for (i = 0; i < priv->bp_count; i++) + if (DPA_BP_SIZE(size) <= priv->dpa_bp[i].size) + return dpa_bpid2pool(priv->dpa_bp[i].bpid); + return ERR_PTR(-ENODEV); +} + +static inline void * __must_check __attribute__((nonnull)) +dpa_phys2virt(const struct dpa_bp *dpa_bp, dma_addr_t addr) +{ + return dpa_bp->vaddr + (addr - dpa_bp->paddr); +} + +/** + * Turn on HW checksum computation for this outgoing frame. + * If the current protocol is not something we support in this regard + * (or if the stack has already computed the SW checksum), we do nothing. + * + * Returns 0 if all goes well (or HW csum doesn't apply), and a negative value + * otherwise. + * + * Note that this function may modify the fd->cmd field and the skb data buffer + * (the Parse Results area). + */ +static inline int dpa_enable_tx_csum(struct dpa_priv_s *priv, + struct sk_buff *skb, struct qm_fd *fd, char *parse_results) +{ + t_FmPrsResult *parse_result; + struct iphdr *iph; + struct ipv6hdr *ipv6h = NULL; + int l4_proto; + int ethertype = ntohs(skb->protocol); + int retval = 0; + + if (!priv->mac_dev || skb->ip_summed != CHECKSUM_PARTIAL) + return 0; + + /* Note: L3 csum seems to be already computed in sw, but we can't choose + * L4 alone from the FM configuration anyway. */ + + /* Fill in some fields of the Parse Results array, so the FMan + * can find them as if they came from the FMan Parser. */ + parse_result = (t_FmPrsResult *)parse_results; + + /* If we're dealing with VLAN, get the real Ethernet type */ + if (ethertype == ETH_P_8021Q) { + /* We can't always assume the MAC header is set correctly + * by the stack, so reset to beginning of skb->data */ + skb_reset_mac_header(skb); + ethertype = ntohs(vlan_eth_hdr(skb)->h_vlan_encapsulated_proto); + } + + /* Fill in the relevant L3 parse result fields + * and read the L4 protocol type */ + switch (ethertype) { + case ETH_P_IP: + parse_result->l3r = FM_L3_PARSE_RESULT_IPV4; + iph = ip_hdr(skb); + BUG_ON(iph == NULL); + l4_proto = ntohs(iph->protocol); + break; + case ETH_P_IPV6: + parse_result->l3r = FM_L3_PARSE_RESULT_IPV6; + ipv6h = ipv6_hdr(skb); + BUG_ON(ipv6h == NULL); + l4_proto = ntohs(ipv6h->nexthdr); + break; + default: + /* We shouldn't even be here */ + if (netif_msg_tx_err(priv) && net_ratelimit()) + cpu_netdev_alert(priv->net_dev, "Can't compute HW csum " + "for L3 proto 0x%x\n", ntohs(skb->protocol)); + retval = -EIO; + goto return_error; + } + + /* Fill in the relevant L4 parse result fields */ + switch (l4_proto) { + case IPPROTO_UDP: + parse_result->l4r = FM_L4_PARSE_RESULT_UDP; + break; + case IPPROTO_TCP: + parse_result->l4r = FM_L4_PARSE_RESULT_TCP; + break; + default: + /* This can as well be a BUG() */ + if (netif_msg_tx_err(priv) && net_ratelimit()) + cpu_netdev_alert(priv->net_dev, "Can't compute HW csum " + "for L4 proto 0x%x\n", l4_proto); + retval = -EIO; + goto return_error; + } + + /* At index 0 is IPOffset_1 as defined in the Parse Results */ + parse_result->ip_off[0] = skb_network_offset(skb); + parse_result->l4_off = skb_transport_offset(skb); + + /* Enable L3 (and L4, if TCP or UDP) HW checksum. */ + fd->cmd |= FM_FD_CMD_RPD | FM_FD_CMD_DTC; + +return_error: + return retval; +} + +static inline int __hot dpa_xmit(struct dpa_priv_s *priv, + struct dpa_percpu_priv_s *percpu, int queue, + struct qm_fd *fd) +{ + int err; + + prefetchw(&percpu->start_tx); + err = qman_enqueue(priv->egress_fqs[queue], fd, 0); + if (unlikely(err < 0)) { + if (netif_msg_tx_err(priv) && net_ratelimit()) + cpu_netdev_err(priv->net_dev, "qman_enqueue() = %d\n", + err); + percpu->stats.tx_errors++; + percpu->stats.tx_fifo_errors++; + return err; + } + + percpu->stats.tx_packets++; + percpu->stats.tx_bytes += dpa_fd_length(fd); + + return NETDEV_TX_OK; +} + +static int __hot dpa_shared_tx(struct sk_buff *skb, struct net_device *net_dev) +{ + struct dpa_bp *dpa_bp; + struct bm_buffer bmb; + struct dpa_percpu_priv_s *percpu_priv; + struct dpa_priv_s *priv; + struct device *dev; + struct qm_fd fd; + int queue_mapping; + int err; + void *dpa_bp_vaddr; + + priv = netdev_priv(net_dev); + percpu_priv = per_cpu_ptr(priv->percpu_priv, smp_processor_id()); + dev = net_dev->dev.parent; + + memset(&fd, 0, sizeof(fd)); + fd.format = qm_fd_contig; + + queue_mapping = skb_get_queue_mapping(skb); + + dpa_bp = dpa_size2pool(priv, skb_headlen(skb)); + if (unlikely(IS_ERR(dpa_bp))) { + err = PTR_ERR(dpa_bp); + goto bpools_too_small_error; + } + + err = bman_acquire(dpa_bp->pool, &bmb, 1, 0); + if (unlikely(err <= 0)) { + percpu_priv->stats.tx_errors++; + if (err == 0) + err = -ENOMEM; + goto buf_acquire_failed; + } + fd.bpid = dpa_bp->bpid; + + fd.length20 = skb_headlen(skb); + fd.cmd = FM_FD_CMD_FCO; + fd.addr_hi = bmb.hi; + fd.addr_lo = bmb.lo; + fd.offset = DPA_BP_HEAD; + + dpa_bp_vaddr = dpa_phys2virt(dpa_bp, bm_buf_addr(&bmb)); + + /* Copy the packet payload */ + skb_copy_from_linear_data(skb, dpa_bp_vaddr + dpa_fd_offset(&fd), + dpa_fd_length(&fd)); + + /* Enable L3/L4 hardware checksum computation, if applicable */ + err = dpa_enable_tx_csum(priv, skb, &fd, + dpa_bp_vaddr + DPA_PRIV_DATA_SIZE); + if (unlikely(err < 0)) { + if (netif_msg_tx_err(priv) && net_ratelimit()) + cpu_netdev_err(net_dev, "Tx HW csum error: %d\n", err); + percpu_priv->stats.tx_errors++; + goto l3_l4_csum_failed; + } + + err = dpa_xmit(priv, percpu_priv, queue_mapping, &fd); + +l3_l4_csum_failed: +bpools_too_small_error: +buf_acquire_failed: + /* We're done with the skb */ + dev_kfree_skb(skb); + + return err; +} + +static int __hot dpa_tx(struct sk_buff *skb, struct net_device *net_dev) +{ + struct dpa_priv_s *priv; + struct device *dev; + struct qm_fd fd; + unsigned int headroom; + struct dpa_percpu_priv_s *percpu_priv; + struct sk_buff **skbh; + dma_addr_t addr; + struct dpa_bp *dpa_bp; + int queue_mapping; + int err; + unsigned int pad; + + priv = netdev_priv(net_dev); + percpu_priv = per_cpu_ptr(priv->percpu_priv, smp_processor_id()); + dev = net_dev->dev.parent; + + memset(&fd, 0, sizeof(fd)); + fd.format = qm_fd_contig; + + headroom = skb_headroom(skb); + queue_mapping = skb_get_queue_mapping(skb); + + if (headroom < DPA_BP_HEAD) { + struct sk_buff *skb_new; + + skb_new = skb_realloc_headroom(skb, DPA_BP_HEAD); + if (!skb_new) { + percpu_priv->stats.tx_errors++; + kfree_skb(skb); + return NETDEV_TX_OK; + } + kfree_skb(skb); + skb = skb_new; + headroom = skb_headroom(skb); + } + + skb = skb_unshare(skb, GFP_ATOMIC); + + if (!skb) + return NETDEV_TX_OK; + + /* + * We are guaranteed that we have at least DPA_BP_HEAD of headroom. + * Buffers we allocated are padded to improve cache usage. In order + * to increase buffer re-use, we aim to keep any such buffers the + * same. This means the address passed to the FM should be DPA_BP_HEAD + * before the data, and we might as well do the same for buffers + * from elsewhere in the kernel. + */ + skbh = (struct sk_buff **)(skb->data - DPA_BP_HEAD); + pad = headroom - DPA_BP_HEAD; + + *skbh = skb; + + dpa_bp = priv->dpa_bp; + + /* Enable L3/L4 hardware checksum computation. + * + * We must do this before dma_map_single(DMA_TO_DEVICE), because we may + * need to write into the skb. */ + err = dpa_enable_tx_csum(priv, skb, &fd, + ((char *)skbh) + DPA_PRIV_DATA_SIZE); + + if (unlikely(err < 0)) { + if (netif_msg_tx_err(priv) && net_ratelimit()) + cpu_netdev_err(net_dev, "HW csum error: %d\n", err); + percpu_priv->stats.tx_errors++; + goto l3_l4_csum_failed; + } + +#ifdef CONFIG_FSL_DPA_1588 + if (priv->tsu && priv->tsu->valid) + fd.cmd |= FM_FD_CMD_UPD; +#endif + + fd.length20 = skb->len; + fd.offset = DPA_BP_HEAD; /* This is now guaranteed */ + + addr = dma_map_single(dpa_bp->dev, skbh, dpa_bp->size, DMA_TO_DEVICE); + if (unlikely(addr == 0)) { + if (netif_msg_tx_err(priv) && net_ratelimit()) + cpu_netdev_err(net_dev, "dma_map_single() failed\n"); + goto dma_map_failed; + } + + fd.addr_hi = upper_32_bits(addr); + fd.addr_lo = lower_32_bits(addr); + + if (unlikely(dpa_xmit(priv, percpu_priv, queue_mapping, &fd) < 0)) + goto xmit_failed; + + net_dev->trans_start = jiffies; + + return NETDEV_TX_OK; + +xmit_failed: + dma_unmap_single(dev, addr, dpa_bp->size, DMA_TO_DEVICE); + +dma_map_failed: + if (fd.cmd & FM_FD_CMD_FCO) + (*percpu_priv->dpa_bp_count)--; + +l3_l4_csum_failed: + dev_kfree_skb(skb); + + return NETDEV_TX_OK; +} + +static enum qman_cb_dqrr_result +ingress_rx_error_dqrr(struct qman_portal *portal, + struct qman_fq *fq, + const struct qm_dqrr_entry *dq) +{ + struct net_device *net_dev; + struct dpa_priv_s *priv; + struct dpa_percpu_priv_s *percpu_priv; + + net_dev = ((struct dpa_fq *)fq)->net_dev; + priv = netdev_priv(net_dev); + + percpu_priv = per_cpu_ptr(priv->percpu_priv, smp_processor_id()); + + if (dpaa_eth_napi_schedule(percpu_priv)) { + percpu_priv->in_interrupt++; + return qman_cb_dqrr_stop; + } + + _dpa_rx_error(net_dev, priv, percpu_priv, &dq->fd); + + return qman_cb_dqrr_consume; +} + +static enum qman_cb_dqrr_result __hot +shared_rx_dqrr(struct qman_portal *portal, struct qman_fq *fq, + const struct qm_dqrr_entry *dq) +{ + struct net_device *net_dev; + struct dpa_priv_s *priv; + struct dpa_percpu_priv_s *percpu_priv; + int err; + const struct qm_fd *fd = &dq->fd; + struct dpa_bp *dpa_bp; + size_t size; + struct sk_buff *skb; + + net_dev = ((struct dpa_fq *)fq)->net_dev; + priv = netdev_priv(net_dev); + + percpu_priv = per_cpu_ptr(priv->percpu_priv, smp_processor_id()); + + if (unlikely(fd->status & FM_FD_STAT_ERRORS) != 0) { + if (netif_msg_hw(priv) && net_ratelimit()) + cpu_netdev_warn(net_dev, "FD status = 0x%08x\n", + fd->status & FM_FD_STAT_ERRORS); + + percpu_priv->stats.rx_errors++; + + goto out; + } + + + dpa_bp = dpa_bpid2pool(fd->bpid); + BUG_ON(IS_ERR(dpa_bp)); + + if (fd->format == qm_fd_sg) { + percpu_priv->stats.rx_dropped++; + if (netif_msg_rx_status(priv) && net_ratelimit()) + cpu_netdev_warn(net_dev, + "%s:%hu:%s(): Dropping a SG frame\n", + __file__, __LINE__, __func__); + goto out; + } + + size = dpa_fd_length(fd); + + skb = __netdev_alloc_skb(net_dev, DPA_BP_HEAD + size, GFP_ATOMIC); + if (unlikely(skb == NULL)) { + if (netif_msg_rx_err(priv) && net_ratelimit()) + cpu_netdev_err(net_dev, "Could not alloc skb\n"); + + percpu_priv->stats.rx_dropped++; + + goto out; + } + + skb_reserve(skb, DPA_BP_HEAD); + + /* Fill the SKB */ + memcpy(skb_put(skb, dpa_fd_length(fd)), + dpa_phys2virt(dpa_bp, qm_fd_addr(fd)) + + dpa_fd_offset(fd), dpa_fd_length(fd)); + + skb->protocol = eth_type_trans(skb, net_dev); + + if (unlikely(skb->len > net_dev->mtu)) { + if ((skb->protocol != ETH_P_8021Q) || + (skb->len > net_dev->mtu + 4)) { + percpu_priv->stats.rx_dropped++; + dev_kfree_skb_any(skb); + goto out; + } + } + + if (unlikely(netif_rx(skb) != NET_RX_SUCCESS)) + percpu_priv->stats.rx_dropped++; + else { + percpu_priv->stats.rx_packets++; + percpu_priv->stats.rx_bytes += dpa_fd_length(fd); + } + + net_dev->last_rx = jiffies; + +out: + err = dpa_fd_release(net_dev, fd); + if (unlikely(err < 0)) { + dump_stack(); + panic("Can't release buffer to the BM during RX\n"); + } + + return qman_cb_dqrr_consume; +} + + +static enum qman_cb_dqrr_result __hot +ingress_rx_default_dqrr(struct qman_portal *portal, + struct qman_fq *fq, + const struct qm_dqrr_entry *dq) +{ + struct net_device *net_dev; + struct dpa_priv_s *priv; + struct dpa_percpu_priv_s *percpu_priv; + + net_dev = ((struct dpa_fq *)fq)->net_dev; + priv = netdev_priv(net_dev); + + percpu_priv = per_cpu_ptr(priv->percpu_priv, smp_processor_id()); + + if (unlikely(dpaa_eth_napi_schedule(percpu_priv))) { + percpu_priv->in_interrupt++; + return qman_cb_dqrr_stop; + } + + prefetchw(&percpu_priv->ingress_calls); + + _dpa_rx(net_dev, priv, percpu_priv, &dq->fd); + + return qman_cb_dqrr_consume; +} + +static enum qman_cb_dqrr_result +ingress_tx_error_dqrr(struct qman_portal *portal, + struct qman_fq *fq, + const struct qm_dqrr_entry *dq) +{ + struct net_device *net_dev; + struct dpa_priv_s *priv; + struct dpa_percpu_priv_s *percpu_priv; + + net_dev = ((struct dpa_fq *)fq)->net_dev; + priv = netdev_priv(net_dev); + + percpu_priv = per_cpu_ptr(priv->percpu_priv, smp_processor_id()); + + if (dpaa_eth_napi_schedule(percpu_priv)) { + percpu_priv->in_interrupt++; + return qman_cb_dqrr_stop; + } + + _dpa_tx_error(net_dev, priv, percpu_priv, &dq->fd); + + return qman_cb_dqrr_consume; +} + +static enum qman_cb_dqrr_result __hot +ingress_tx_default_dqrr(struct qman_portal *portal, + struct qman_fq *fq, + const struct qm_dqrr_entry *dq) +{ + struct net_device *net_dev; + struct dpa_priv_s *priv; + struct dpa_percpu_priv_s *percpu_priv; + + net_dev = ((struct dpa_fq *)fq)->net_dev; + priv = netdev_priv(net_dev); + + percpu_priv = per_cpu_ptr(priv->percpu_priv, smp_processor_id()); + + if (dpaa_eth_napi_schedule(percpu_priv)) { + percpu_priv->in_interrupt++; + return qman_cb_dqrr_stop; + } + + _dpa_tx(net_dev, priv, percpu_priv, &dq->fd); + + return qman_cb_dqrr_consume; +} + +static void shared_ern(struct qman_portal *portal, + struct qman_fq *fq, + const struct qm_mr_entry *msg) +{ + struct net_device *net_dev; + const struct dpa_priv_s *priv; + int err; + struct dpa_percpu_priv_s *percpu_priv; + struct dpa_fq *dpa_fq = (struct dpa_fq *)fq; + + net_dev = dpa_fq->net_dev; + priv = netdev_priv(net_dev); + percpu_priv = per_cpu_ptr(priv->percpu_priv, smp_processor_id()); + + err = dpa_fd_release(net_dev, &msg->ern.fd); + if (unlikely(err < 0)) { + dump_stack(); + panic("Can't release buffer to the BM during a TX\n"); + } + + percpu_priv->stats.tx_dropped++; + percpu_priv->stats.tx_fifo_errors++; +} + +static void egress_ern(struct qman_portal *portal, + struct qman_fq *fq, + const struct qm_mr_entry *msg) +{ + struct net_device *net_dev; + const struct dpa_priv_s *priv; + struct sk_buff *skb; + struct sk_buff **skbh; + struct dpa_percpu_priv_s *percpu_priv; + dma_addr_t addr = qm_fd_addr(&msg->ern.fd); + struct dpa_bp *bp; + + net_dev = ((struct dpa_fq *)fq)->net_dev; + priv = netdev_priv(net_dev); + bp = priv->dpa_bp; + percpu_priv = per_cpu_ptr(priv->percpu_priv, smp_processor_id()); + + percpu_priv->stats.tx_dropped++; + percpu_priv->stats.tx_fifo_errors++; + + /* + * If we intended this buffer to go into the pool + * when the FM was done, we need to put it in + * manually. + */ + if (msg->ern.fd.cmd & FM_FD_CMD_FCO) { + struct bm_buffer bmb; + + bm_buffer_set64(&bmb, addr); + while (bman_release(bp->pool, &bmb, 1, 0)) + cpu_relax(); + + return; + } + + skbh = (struct sk_buff **)phys_to_virt(addr); + skb = *skbh; + + dma_unmap_single(bp->dev, addr, bp->size, DMA_TO_DEVICE); + + dev_kfree_skb_any(skb); +} + +static const struct qman_fq rx_shared_fq = { + .cb = {shared_rx_dqrr, NULL, NULL, NULL} +}; +static const struct qman_fq rx_private_defq = { + .cb = {ingress_rx_default_dqrr, NULL, NULL, NULL} +}; +static const struct qman_fq rx_private_errq = { + .cb = {ingress_rx_error_dqrr, NULL, NULL, NULL} +}; +static const struct qman_fq tx_private_defq = { + .cb = {ingress_tx_default_dqrr, NULL, NULL, NULL} +}; +static const struct qman_fq tx_private_errq = { + .cb = {ingress_tx_error_dqrr, NULL, NULL, NULL} +}; +static const struct qman_fq dummyq = { + .cb = {NULL, NULL, NULL, NULL} +}; +static const struct qman_fq private_egress_fq = { + .cb = {NULL, egress_ern, NULL, NULL} +}; +static const struct qman_fq shared_egress_fq = { + .cb = {NULL, shared_ern, NULL, NULL} +}; + +#ifdef CONFIG_DPAA_ETH_UNIT_TESTS +static bool tx_unit_test_passed = true; + +static void tx_unit_test_ern(struct qman_portal *portal, + struct qman_fq *fq, + const struct qm_mr_entry *msg) +{ + struct net_device *net_dev; + struct dpa_priv_s *priv; + struct sk_buff **skbh; + struct sk_buff *skb; + const struct qm_fd *fd; + dma_addr_t addr; + + net_dev = ((struct dpa_fq *)fq)->net_dev; + priv = netdev_priv(net_dev); + + tx_unit_test_passed = false; + + fd = &msg->ern.fd; + + addr = qm_fd_addr(fd); + + skbh = (struct sk_buff **)phys_to_virt(addr); + skb = *skbh; + + if (!skb || !is_kernel_addr((unsigned long)skb)) + panic("Corrupt skb in ERN!\n"); + + kfree_skb(skb); +} + +static unsigned char *tx_unit_skb_head; +static unsigned char *tx_unit_skb_end; +static int tx_unit_tested; + +static enum qman_cb_dqrr_result tx_unit_test_dqrr( + struct qman_portal *portal, + struct qman_fq *fq, + const struct qm_dqrr_entry *dq) +{ + struct net_device *net_dev; + struct dpa_priv_s *priv; + struct sk_buff **skbh; + struct sk_buff *skb; + const struct qm_fd *fd; + dma_addr_t addr; + unsigned char *startaddr; + struct dpa_percpu_priv_s *percpu_priv; + + tx_unit_test_passed = false; + + tx_unit_tested++; + + net_dev = ((struct dpa_fq *)fq)->net_dev; + priv = netdev_priv(net_dev); + + percpu_priv = per_cpu_ptr(priv->percpu_priv, smp_processor_id()); + + fd = &dq->fd; + + addr = qm_fd_addr(fd); + + skbh = (struct sk_buff **)phys_to_virt(addr); + startaddr = (unsigned char *)skbh; + skb = *skbh; + + if (!skb || !is_kernel_addr((unsigned long)skb)) + panic("Invalid skb address in TX Unit Test FD\n"); + + /* Make sure we're dealing with the same skb */ + if (skb->head != tx_unit_skb_head + || skb_end_pointer(skb) != tx_unit_skb_end) + goto out; + + /* + * If we recycled, then there must be enough room between fd.addr + * and skb->end for a new RX buffer + */ + if (fd->cmd & FM_FD_CMD_FCO) { + size_t bufsize = skb_end_pointer(skb) - startaddr; + + if (bufsize < fsl_fman_phy_maxfrm) + goto out; + } else { + /* + * If we didn't recycle, but the buffer was big enough, + * increment the counter to put it back + */ + if (skb_end_pointer(skb) - skb->head >= fsl_fman_phy_maxfrm) + (*percpu_priv->dpa_bp_count)++; + + /* If we didn't recycle, the data pointer should be good */ + if (skb->data != startaddr + dpa_fd_offset(fd)) + goto out; + } + + tx_unit_test_passed = true; +out: + /* The skb is no longer needed, and belongs to us */ + kfree_skb(skb); + + return qman_cb_dqrr_consume; +} + +static const struct qman_fq tx_unit_test_fq = { + .cb = {tx_unit_test_dqrr, tx_unit_test_ern, NULL, NULL} +}; + +static struct dpa_fq unit_fq; + +static bool tx_unit_test_ran; /* Starts as false */ + +static int dpa_tx_unit_test(struct net_device *net_dev) +{ + /* Create a new FQ */ + struct dpa_priv_s *priv = netdev_priv(net_dev); + struct qman_fq *oldq; + int size, headroom; + struct dpa_percpu_priv_s *percpu_priv; + cpumask_t *oldcpus; + int test_count = 0; + int err = 0; + int tests_failed = 0; + const cpumask_t *cpus = qman_affine_cpus(); + + oldcpus = tsk_cpus_allowed(current); + set_cpus_allowed_ptr(current, cpus); + /* disable bottom halves */ + local_bh_disable(); + + percpu_priv = per_cpu_ptr(priv->percpu_priv, smp_processor_id()); + + qman_irqsource_remove(QM_PIRQ_DQRI); + unit_fq.net_dev = net_dev; + unit_fq.fq_base = tx_unit_test_fq; + + /* Save old queue */ + oldq = priv->egress_fqs[smp_processor_id()]; + + err = qman_create_fq(0, QMAN_FQ_FLAG_DYNAMIC_FQID, &unit_fq.fq_base); + + if (err < 0) { + pr_err("UNIT test FQ create failed: %d\n", err); + goto fq_create_fail; + } + + err = qman_init_fq(&unit_fq.fq_base, + QMAN_INITFQ_FLAG_SCHED | QMAN_INITFQ_FLAG_LOCAL, NULL); + if (err < 0) { + pr_err("UNIT test FQ init failed: %d\n", err); + goto fq_init_fail; + } + + pr_err("TX Unit Test using FQ %d\n", qman_fq_fqid(&unit_fq.fq_base)); + + /* Replace queue 0 with this queue */ + priv->egress_fqs[smp_processor_id()] = &unit_fq.fq_base; + + /* Try packet sizes from 64-bytes to just above the maximum */ + for (size = 64; size <= 9600 + 128; size += 64) { + for (headroom = DPA_BP_HEAD; headroom < 0x800; headroom += 16) { + int ret; + struct sk_buff *skb; + + test_count++; + + skb = dev_alloc_skb(size + headroom); + + if (!skb) { + pr_err("Failed to allocate skb\n"); + err = -ENOMEM; + goto end_test; + } + + if (skb_end_pointer(skb) - skb->head >= + fsl_fman_phy_maxfrm) + (*percpu_priv->dpa_bp_count)--; + + skb_put(skb, size + headroom); + skb_pull(skb, headroom); + + tx_unit_skb_head = skb->head; + tx_unit_skb_end = skb_end_pointer(skb); + + skb_set_queue_mapping(skb, smp_processor_id()); + + /* tx */ + ret = net_dev->netdev_ops->ndo_start_xmit(skb, net_dev); + + if (ret != NETDEV_TX_OK) { + pr_err("Failed to TX with err %d\n", ret); + err = -EIO; + goto end_test; + } + + /* Wait for it to arrive */ + ret = spin_event_timeout(qman_poll_dqrr(1) != 0, + 100000, 1); + + if (!ret) + pr_err("TX Packet never arrived\n"); + + /* Was it good? */ + if (tx_unit_test_passed == false) { + pr_err("Test failed:\n"); + pr_err("size: %d pad: %d head: %p end: %p\n", + size, headroom, tx_unit_skb_head, + tx_unit_skb_end); + tests_failed++; + } + } + } + +end_test: + err = qman_retire_fq(&unit_fq.fq_base, NULL); + if (unlikely(err < 0)) + pr_err("Could not retire TX Unit Test FQ (%d)\n", err); + + err = qman_oos_fq(&unit_fq.fq_base); + if (unlikely(err < 0)) + pr_err("Could not OOS TX Unit Test FQ (%d)\n", err); + +fq_init_fail: + qman_destroy_fq(&unit_fq.fq_base, 0); + +fq_create_fail: + priv->egress_fqs[smp_processor_id()] = oldq; + local_bh_enable(); + qman_irqsource_add(QM_PIRQ_DQRI); + tx_unit_test_ran = true; + set_cpus_allowed_ptr(current, oldcpus); + + pr_err("Tested %d/%d packets. %d failed\n", test_count, tx_unit_tested, + tests_failed); + + if (tests_failed) + err = -EINVAL; + + return err; +} +#endif + +static int __cold dpa_start(struct net_device *net_dev) +{ + int err, i; + struct dpa_priv_s *priv; + struct mac_device *mac_dev; + + priv = netdev_priv(net_dev); + mac_dev = priv->mac_dev; + + if (!mac_dev) + goto no_mac; + +#ifdef CONFIG_FSL_DPA_1588 + if (priv->tsu && priv->tsu->valid) { + if (mac_dev->fm_rtc_enable) + mac_dev->fm_rtc_enable(net_dev); + } +#endif + + dpaa_eth_napi_enable(priv); + + err = mac_dev->init_phy(net_dev); + if (err < 0) { + if (netif_msg_ifup(priv)) + cpu_netdev_err(net_dev, "init_phy() = %d\n", err); + goto init_phy_failed; + } + + for_each_port_device(i, mac_dev->port_dev) + fm_port_enable(mac_dev->port_dev[i]); + + err = priv->mac_dev->start(mac_dev); + if (err < 0) { + if (netif_msg_ifup(priv)) + cpu_netdev_err(net_dev, "mac_dev->start() = %d\n", err); + goto mac_start_failed; + } + +no_mac: + netif_tx_start_all_queues(net_dev); + + return 0; + +mac_start_failed: + for_each_port_device(i, mac_dev->port_dev) + fm_port_disable(mac_dev->port_dev[i]); + +init_phy_failed: + dpaa_eth_napi_disable(priv); + + return err; +} + +static int __cold dpa_stop(struct net_device *net_dev) +{ + int _errno, i; + struct dpa_priv_s *priv; + struct mac_device *mac_dev; + + priv = netdev_priv(net_dev); + mac_dev = priv->mac_dev; + + netif_tx_stop_all_queues(net_dev); + + if (!mac_dev) + return 0; + +#ifdef CONFIG_FSL_DPA_1588 + if (priv->tsu && priv->tsu->valid) { + if (mac_dev->fm_rtc_disable) + mac_dev->fm_rtc_disable(net_dev); + } +#endif + + _errno = mac_dev->stop(mac_dev); + if (unlikely(_errno < 0)) + if (netif_msg_ifdown(priv)) + cpu_netdev_err(net_dev, "mac_dev->stop() = %d\n", + _errno); + + for_each_port_device(i, mac_dev->port_dev) + fm_port_disable(mac_dev->port_dev[i]); + + if (mac_dev->phy_dev) + phy_disconnect(mac_dev->phy_dev); + mac_dev->phy_dev = NULL; + + dpaa_eth_napi_disable(priv); + + return _errno; +} + +static void __cold dpa_timeout(struct net_device *net_dev) +{ + const struct dpa_priv_s *priv; + struct dpa_percpu_priv_s *percpu_priv; + + priv = netdev_priv(net_dev); + percpu_priv = per_cpu_ptr(priv->percpu_priv, smp_processor_id()); + + if (netif_msg_timer(priv)) + cpu_netdev_crit(net_dev, "Transmit timeout latency: %lu ms\n", + (jiffies - net_dev->trans_start) * 1000 / HZ); + + percpu_priv->stats.tx_errors++; +} + +static int dpa_bp_cmp(const void *dpa_bp0, const void *dpa_bp1) +{ + return ((struct dpa_bp *)dpa_bp0)->size - + ((struct dpa_bp *)dpa_bp1)->size; +} + +static struct dpa_bp * __cold __must_check __attribute__((nonnull)) +dpa_bp_probe(struct platform_device *_of_dev, size_t *count) +{ + int i, lenp, na, ns; + struct device *dev; + struct device_node *dev_node; + const phandle *phandle_prop; + const uint32_t *bpid; + const uint32_t *bpool_cfg; + struct dpa_bp *dpa_bp; + int has_kernel_pool = 0; + int has_shared_pool = 0; + + dev = &_of_dev->dev; + + /* The default is one, if there's no property */ + *count = 1; + + /* There are three types of buffer pool configuration: + * 1) No bp assignment + * 2) A static assignment to an empty configuration + * 3) A static assignment to one or more configured pools + * + * We don't support using multiple unconfigured pools. + */ + + /* Get the buffer pools to be used */ + phandle_prop = of_get_property(dev->of_node, + "fsl,bman-buffer-pools", &lenp); + + if (phandle_prop) + *count = lenp / sizeof(phandle); + else { + if (default_pool) + return default_pool; + + has_kernel_pool = 1; + } + + dpa_bp = devm_kzalloc(dev, *count * sizeof(*dpa_bp), GFP_KERNEL); + if (unlikely(dpa_bp == NULL)) { + dpaa_eth_err(dev, "devm_kzalloc() failed\n"); + return ERR_PTR(-ENOMEM); + } + + dev_node = of_find_node_by_path("/"); + if (unlikely(dev_node == NULL)) { + dpaa_eth_err(dev, "of_find_node_by_path(/) failed\n"); + return ERR_PTR(-EINVAL); + } + + na = of_n_addr_cells(dev_node); + ns = of_n_size_cells(dev_node); + + for (i = 0; i < *count && phandle_prop; i++) { + of_node_put(dev_node); + dev_node = of_find_node_by_phandle(phandle_prop[i]); + if (unlikely(dev_node == NULL)) { + dpaa_eth_err(dev, "of_find_node_by_phandle() failed\n"); + return ERR_PTR(-EFAULT); + } + + if (unlikely(!of_device_is_compatible(dev_node, "fsl,bpool"))) { + dpaa_eth_err(dev, + "!of_device_is_compatible(%s, fsl,bpool)\n", + dev_node->full_name); + dpa_bp = ERR_PTR(-EINVAL); + goto _return_of_node_put; + } + + bpid = of_get_property(dev_node, "fsl,bpid", &lenp); + if ((bpid == NULL) || (lenp != sizeof(*bpid))) { + dpaa_eth_err(dev, "fsl,bpid property not found.\n"); + dpa_bp = ERR_PTR(-EINVAL); + goto _return_of_node_put; + } + dpa_bp[i].bpid = *bpid; + + bpool_cfg = of_get_property(dev_node, "fsl,bpool-ethernet-cfg", + &lenp); + if (bpool_cfg && (lenp == (2 * ns + na) * sizeof(*bpool_cfg))) { + const uint32_t *seed_pool; + + dpa_bp[i].count = of_read_number(bpool_cfg, ns); + dpa_bp[i].size = of_read_number(bpool_cfg + ns, ns); + dpa_bp[i].paddr = + of_read_number(bpool_cfg + 2 * ns, na); + + seed_pool = of_get_property(dev_node, + "fsl,bpool-ethernet-seeds", &lenp); + dpa_bp[i].seed_pool = !!seed_pool; + + has_shared_pool = 1; + } else { + has_kernel_pool = 1; + } + + if (i > 0) + has_shared_pool = 1; + } + + if (has_kernel_pool && has_shared_pool) { + dpaa_eth_err(dev, "Invalid buffer pool configuration " + "for node %s\n", dev_node->full_name); + dpa_bp = ERR_PTR(-EINVAL); + goto _return_of_node_put; + } else if (has_kernel_pool) { + dpa_bp->count = DEFAULT_COUNT; + dpa_bp->size = DEFAULT_BUF_SIZE; + dpa_bp->kernel_pool = 1; + } + + sort(dpa_bp, *count, sizeof(*dpa_bp), dpa_bp_cmp, NULL); + + return dpa_bp; + +_return_of_node_put: + if (dev_node) + of_node_put(dev_node); + + return dpa_bp; +} + +static int dpa_bp_create(struct net_device *net_dev, struct dpa_bp *dpa_bp, + size_t count) +{ + struct dpa_priv_s *priv = netdev_priv(net_dev); + int i; + + if (dpa_bp->kernel_pool) { + priv->shared = 0; + + if (netif_msg_probe(priv)) + cpu_dev_info(net_dev->dev.parent, + "Using private BM buffer pools\n"); + } else { + priv->shared = 1; + } + + priv->dpa_bp = dpa_bp; + priv->bp_count = count; + + for (i = 0; i < count; i++) { + int err; + err = dpa_bp_alloc(&dpa_bp[i]); + if (err < 0) { + dpa_bp_free(priv, dpa_bp); + priv->dpa_bp = NULL; + return err; + } + + /* For now, just point to the default pool. + * We can add support for more pools, later + */ + if (dpa_bp->kernel_pool) + priv->dpa_bp = default_pool; + } + + return 0; +} + +static struct mac_device * __cold __must_check +__attribute__((nonnull)) +dpa_mac_probe(struct platform_device *_of_dev) +{ + struct device *dpa_dev, *dev; + struct device_node *mac_node; + int lenp; + const phandle *phandle_prop; + struct platform_device *of_dev; + struct mac_device *mac_dev; +#ifdef CONFIG_FSL_DPA_1588 + struct net_device *net_dev = NULL; + struct dpa_priv_s *priv = NULL; + struct device_node *timer_node; +#endif + + phandle_prop = of_get_property(_of_dev->dev.of_node, "fsl,fman-mac", &lenp); + if (phandle_prop == NULL) + return NULL; + + BUG_ON(lenp != sizeof(phandle)); + + dpa_dev = &_of_dev->dev; + + mac_node = of_find_node_by_phandle(*phandle_prop); + if (unlikely(mac_node == NULL)) { + dpaa_eth_err(dpa_dev, "of_find_node_by_phandle() failed\n"); + return ERR_PTR(-EFAULT); + } + + of_dev = of_find_device_by_node(mac_node); + if (unlikely(of_dev == NULL)) { + dpaa_eth_err(dpa_dev, "of_find_device_by_node(%s) failed\n", + mac_node->full_name); + of_node_put(mac_node); + return ERR_PTR(-EINVAL); + } + of_node_put(mac_node); + + dev = &of_dev->dev; + + mac_dev = dev_get_drvdata(dev); + if (unlikely(mac_dev == NULL)) { + dpaa_eth_err(dpa_dev, "dev_get_drvdata(%s) failed\n", + dev_name(dev)); + return ERR_PTR(-EINVAL); + } + +#ifdef CONFIG_FSL_DPA_1588 + phandle_prop = of_get_property(mac_node, "ptimer-handle", &lenp); + if (phandle_prop && ((mac_dev->phy_if != PHY_INTERFACE_MODE_SGMII) || + ((mac_dev->phy_if == PHY_INTERFACE_MODE_SGMII) && + (mac_dev->speed == SPEED_1000)))) { + timer_node = of_find_node_by_phandle(*phandle_prop); + if (timer_node && (net_dev = dev_get_drvdata(dpa_dev))) { + priv = netdev_priv(net_dev); + if (!dpa_ptp_init(priv)) + dpaa_eth_info(dev, "%s: ptp-timer enabled\n", + mac_node->full_name); + } + } +#endif + + return mac_dev; +} + +static const char fsl_qman_frame_queues[][25] = { + [RX] = "fsl,qman-frame-queues-rx", + [TX] = "fsl,qman-frame-queues-tx" +}; + +#ifdef CONFIG_DEBUG_FS +static int __cold dpa_debugfs_show(struct seq_file *file, void *offset) +{ + int i; + struct dpa_priv_s *priv; + struct dpa_percpu_priv_s *percpu_priv, total; + struct dpa_bp *dpa_bp; + unsigned int count_total = 0; + + BUG_ON(offset == NULL); + + priv = netdev_priv((struct net_device *)file->private); + + dpa_bp = priv->dpa_bp; + + memset(&total, 0, sizeof(total)); + + seq_printf(file, "\tirqs\trx\ttx\trecycle\tconfirm\ttx err\trx err" \ + "\tbp count\n"); + for_each_online_cpu(i) { + percpu_priv = per_cpu_ptr(priv->percpu_priv, i); + + total.in_interrupt += percpu_priv->in_interrupt; + total.ingress_calls += percpu_priv->stats.rx_packets; + total.stats.tx_packets += percpu_priv->stats.tx_packets; + total.tx_returned += percpu_priv->tx_returned; + total.tx_confirm += percpu_priv->tx_confirm; + total.stats.tx_errors += percpu_priv->stats.tx_errors; + total.stats.rx_errors += percpu_priv->stats.rx_errors; + count_total += *percpu_priv->dpa_bp_count; + + seq_printf(file, "%hu/%hu\t%u\t%lu\t%lu\t%u\t%u\t%lu\t%lu" \ + "\t%d\n", + get_hard_smp_processor_id(i), i, + percpu_priv->in_interrupt, + percpu_priv->stats.rx_packets, + percpu_priv->stats.tx_packets, + percpu_priv->tx_returned, + percpu_priv->tx_confirm, + percpu_priv->stats.tx_errors, + percpu_priv->stats.rx_errors, + *percpu_priv->dpa_bp_count); + } + seq_printf(file, "Total\t%u\t%u\t%lu\t%u\t%u\t%lu\t%lu\t%d\n", + total.in_interrupt, + total.ingress_calls, + total.stats.tx_packets, + total.tx_returned, + total.tx_confirm, + total.stats.tx_errors, + total.stats.rx_errors, + count_total); + + return 0; +} + +static int __cold dpa_debugfs_open(struct inode *inode, struct file *file) +{ + int _errno; + const struct net_device *net_dev; + + _errno = single_open(file, dpa_debugfs_show, inode->i_private); + if (unlikely(_errno < 0)) { + net_dev = (struct net_device *)inode->i_private; + + if (netif_msg_drv((struct dpa_priv_s *)netdev_priv(net_dev))) + cpu_netdev_err(net_dev, "single_open() = %d\n", + _errno); + } + return _errno; +} + +static const struct file_operations dpa_debugfs_fops = { + .open = dpa_debugfs_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; +#endif + +static u16 dpa_select_queue(struct net_device *net_dev, struct sk_buff *skb) +{ + return smp_processor_id(); +} + +static const struct net_device_ops dpa_private_ops = { + .ndo_open = dpa_start, + .ndo_start_xmit = dpa_tx, + .ndo_stop = dpa_stop, + .ndo_change_rx_flags = dpa_change_rx_flags, + .ndo_tx_timeout = dpa_timeout, + .ndo_get_stats = dpa_get_stats, + .ndo_set_mac_address = dpa_set_mac_address, + .ndo_validate_addr = eth_validate_addr, + .ndo_select_queue = dpa_select_queue, + .ndo_change_mtu = dpa_change_mtu, + .ndo_set_rx_mode = dpa_set_multicast_list, + .ndo_do_ioctl = dpa_ioctl, +}; + +static const struct net_device_ops dpa_shared_ops = { + .ndo_open = dpa_start, + .ndo_start_xmit = dpa_shared_tx, + .ndo_stop = dpa_stop, + .ndo_change_rx_flags = dpa_change_rx_flags, + .ndo_tx_timeout = dpa_timeout, + .ndo_get_stats = dpa_get_stats, + .ndo_set_mac_address = dpa_set_mac_address, + .ndo_validate_addr = eth_validate_addr, + .ndo_set_rx_mode = dpa_set_multicast_list, + .ndo_do_ioctl = dpa_ioctl, +}; + +static int dpa_get_channel(struct device *dev, + struct device_node *dpa_node) +{ + struct device_node *dev_node; + const uint32_t *channel_id; + int lenp; + + dev_node = of_parse_phandle(dpa_node, "fsl,qman-channel", 0); + if (dev_node == NULL) { + dpaa_eth_err(dev, "Could not find fsl,qman-channel property\n"); + return -EFAULT; + } + + channel_id = of_get_property(dev_node, "fsl,qman-channel-id", &lenp); + if ((channel_id == NULL) || (lenp < sizeof(*channel_id))) { + dpaa_eth_err(dev, "Could not get fsl,qman-channel-id in %s\n", + dev_node->full_name); + of_node_put(dev_node); + return -EINVAL; + } + of_node_put(dev_node); + return *channel_id; +} + +struct fqid_cell { + uint32_t start; + uint32_t count; +}; + +static const struct fqid_cell default_fqids[][3] = { + [RX] = { {0, 1}, {0, 1}, {0, DPAA_ETH_RX_QUEUES} }, + [TX] = { {0, 1}, {0, 1}, {0, DPAA_ETH_TX_QUEUES} } +}; + +static int +dpa_fq_probe(struct platform_device *_of_dev, struct list_head *list, + struct dpa_fq **defq, struct dpa_fq **errq, + struct dpa_fq **fqs, int ptype) +{ + struct device *dev = &_of_dev->dev; + struct device_node *np = dev->of_node; + const struct fqid_cell *fqids; + int i, j, lenp; + int num_fqids; + struct dpa_fq *dpa_fq; + int err = 0; + + fqids = of_get_property(np, fsl_qman_frame_queues[ptype], &lenp); + if (fqids == NULL) { + fqids = default_fqids[ptype]; + num_fqids = 3; + } else + num_fqids = lenp / sizeof(*fqids); + + for (i = 0; i < num_fqids; i++) { + dpa_fq = devm_kzalloc(dev, sizeof(*dpa_fq) * fqids[i].count, + GFP_KERNEL); + if (dpa_fq == NULL) { + dpaa_eth_err(dev, "devm_kzalloc() failed\n"); + return -ENOMEM; + } + + /* The first queue is the Error queue */ + if (i == 0 && errq) { + *errq = dpa_fq; + + if (fqids[i].count != 1) { + dpaa_eth_err(dev, "Too many error queues!\n"); + err = -EINVAL; + goto invalid_error_queues; + } + } + + /* The second queue is the the Default queue */ + if (i == 1 && defq) { + *defq = dpa_fq; + + if (fqids[i].count != 1) { + dpaa_eth_err(dev, "Too many default queues!\n"); + err = -EINVAL; + goto invalid_default_queues; + } + } + + /* + * All subsequent queues are gathered together. + * The first 8 will be used by the private linux interface + * if these are TX queues + */ + if (i == 2 || (!errq && i == 0 && fqs)) + *fqs = dpa_fq; + +#warning We lost the 8-queue enforcement + +#define DPA_NUM_WQS 8 + for (j = 0; j < fqids[i].count; j++) { + dpa_fq[j].fqid = fqids[i].start ? + fqids[i].start + j : 0; + dpa_fq[j].wq = dpa_fq[j].fqid ? + dpa_fq[j].fqid % DPA_NUM_WQS : DPA_NUM_WQS - 1; + list_add_tail(&dpa_fq[j].list, list); + } + } + +invalid_default_queues: +invalid_error_queues: + return err; +} + +static void dpa_setup_ingress(struct dpa_priv_s *priv, struct dpa_fq *fq, + const struct qman_fq *template) +{ + fq->fq_base = *template; + fq->net_dev = priv->net_dev; + + fq->flags = QMAN_FQ_FLAG_NO_ENQUEUE; + fq->channel = priv->channel; +} + +static void dpa_setup_egress(struct dpa_priv_s *priv, + struct list_head *head, struct dpa_fq *fq, + struct fm_port *port) +{ + struct list_head *ptr = &fq->list; + int i = 0; + + while (true) { + struct dpa_fq *iter = list_entry(ptr, struct dpa_fq, list); + if (priv->shared) + iter->fq_base = shared_egress_fq; + else + iter->fq_base = private_egress_fq; + + iter->net_dev = priv->net_dev; + priv->egress_fqs[i++] = &iter->fq_base; + + if (port) { + iter->flags = QMAN_FQ_FLAG_TO_DCPORTAL; + iter->channel = fm_get_tx_port_channel(port); + } else + iter->flags = QMAN_FQ_FLAG_NO_MODIFY; + + if (list_is_last(ptr, head)) + break; + + ptr = ptr->next; + } +} + +static void dpa_setup_ingress_queues(struct dpa_priv_s *priv, + struct list_head *head, struct dpa_fq *fq) +{ + struct list_head *ptr = &fq->list; + u32 fqid; + int portals[NR_CPUS]; + int num_portals; + int i; + struct device_node *qm_node; + struct device_node *cpu_node; + const uint32_t *uint32_prop; + const phandle *ph; + int lenp; + int cpu; + bool found; + const cpumask_t *affine_cpus = qman_affine_cpus(); + + /* + * Make a list of the available portals. + * We're only interested in those portals which have an affine core + * and moreover that core is included in the cpumask provided by QMan + */ + num_portals = 0; + for_each_compatible_node(qm_node, NULL, "fsl,qman-portal") { + /* Check if portal has an affine core */ + ph = of_get_property(qm_node, "cpu-handle", &lenp); + if (!ph || (lenp != sizeof(phandle))) + continue; + + /* Get the hardware id of the affine core */ + cpu_node = of_find_node_by_phandle(*ph); + if (!cpu_node) + continue; + uint32_prop = of_get_property(cpu_node, "reg", &lenp); + if (!uint32_prop || (lenp != sizeof(uint32_t))) { + dpaa_eth_err(fq->net_dev->dev.parent, + "failed to get property %s for node %s", + "reg", cpu_node->full_name); + continue; + } + + /* If it's not included in the cpumask we got from QMan, + * skip portal */ + found = false; + for_each_cpu(cpu, affine_cpus) { + if (*uint32_prop == get_hard_smp_processor_id(cpu) + && !of_get_property(qm_node, + "fsl,usdpaa-portal", NULL)) { + found = true; + break; + } + } + if (!found) + continue; + + /* This portal is good, store its sw channel */ + uint32_prop = of_get_property(qm_node, + "fsl,qman-channel-id", &lenp); + if (!uint32_prop || (lenp != sizeof(uint32_t))) { + dpaa_eth_err(fq->net_dev->dev.parent, + "Failed to get property %s for node %s", + "fsl,qman-channel-id", qm_node->full_name); + continue; + } + portals[num_portals++] = *uint32_prop; + } + if (num_portals == 0) { + dpaa_eth_err(fq->net_dev->dev.parent, + "No adequate Qman portals found"); + return; + } + + i = 0; + fqid = 0; + if (priv->mac_dev) + fqid = (priv->mac_dev->res->start & 0x1fffff) >> 6; + + while (true) { + struct dpa_fq *iter = list_entry(ptr, struct dpa_fq, list); + + if (priv->shared) + dpa_setup_ingress(priv, iter, &rx_shared_fq); + else + dpa_setup_ingress(priv, iter, &rx_private_defq); + + if (!iter->fqid) + iter->fqid = fqid++; + + /* Assign the queues to a channel in a round-robin fashion */ + iter->channel = portals[i]; + i = (i + 1) % num_portals; + + if (list_is_last(ptr, head)) + break; + + ptr = ptr->next; + } +} + +static void +dpaa_eth_init_tx_port(struct fm_port *port, struct dpa_fq *errq, + struct dpa_fq *defq, bool has_timer) +{ + struct fm_port_non_rx_params tx_port_param; + + dpaa_eth_init_port(tx, port, tx_port_param, errq->fqid, defq->fqid, + has_timer); +} + +static void +dpaa_eth_init_rx_port(struct fm_port *port, struct dpa_bp *bp, size_t count, + struct dpa_fq *errq, struct dpa_fq *defq, bool has_timer) +{ + struct fm_port_rx_params rx_port_param; + int i; + + count = min(ARRAY_SIZE(rx_port_param.pool_param), count); + rx_port_param.num_pools = count; + for (i = 0; i < count; i++) { + if (i >= rx_port_param.num_pools) + break; + + rx_port_param.pool_param[i].id = bp[i].bpid; + rx_port_param.pool_param[i].size = bp[i].size; + } + + dpaa_eth_init_port(rx, port, rx_port_param, errq->fqid, defq->fqid, + has_timer); +} + +static void dpa_rx_fq_init(struct dpa_priv_s *priv, struct list_head *head, + struct dpa_fq *defq, struct dpa_fq *errq, + struct dpa_fq *fqs) +{ + if (fqs) + dpa_setup_ingress_queues(priv, head, fqs); + + /* Only real devices need default/error queues set up */ + if (!priv->mac_dev) + return; + + if (defq->fqid == 0 && netif_msg_probe(priv)) + cpu_pr_info("Using dynamic RX QM frame queues\n"); + + if (priv->shared) { + dpa_setup_ingress(priv, defq, &rx_shared_fq); + dpa_setup_ingress(priv, errq, &rx_shared_fq); + } else { + dpa_setup_ingress(priv, defq, &rx_private_defq); + dpa_setup_ingress(priv, errq, &rx_private_errq); + } +} + +static void dpa_tx_fq_init(struct dpa_priv_s *priv, struct list_head *head, + struct dpa_fq *defq, struct dpa_fq *errq, + struct dpa_fq *fqs, struct fm_port *port) +{ + if (fqs) + dpa_setup_egress(priv, head, fqs, port); + + /* Only real devices need default/error queues set up */ + if (!priv->mac_dev) + return; + + if (defq->fqid == 0 && netif_msg_probe(priv)) + cpu_pr_info("Using dynamic TX QM frame queues\n"); + + /* The shared driver doesn't use tx confirmation */ + if (priv->shared) { + dpa_setup_ingress(priv, defq, &dummyq); + dpa_setup_ingress(priv, errq, &dummyq); + } else { + dpa_setup_ingress(priv, defq, &tx_private_defq); + dpa_setup_ingress(priv, errq, &tx_private_errq); + } +} + +static int dpa_netdev_init(struct device_node *dpa_node, + struct net_device *net_dev) +{ + int err; + const uint8_t *mac_addr; + struct dpa_priv_s *priv = netdev_priv(net_dev); + struct device *dev = net_dev->dev.parent; + + net_dev->features |= DPA_NETIF_FEATURES; + net_dev->vlan_features |= DPA_NETIF_FEATURES; + + if (!priv->mac_dev) { + /* Get the MAC address */ + mac_addr = of_get_mac_address(dpa_node); + if (mac_addr == NULL) { + if (netif_msg_probe(priv)) + dpaa_eth_err(dev, "No MAC address found!\n"); + return -EINVAL; + } + } else { + net_dev->mem_start = priv->mac_dev->res->start; + net_dev->mem_end = priv->mac_dev->res->end; + + mac_addr = priv->mac_dev->addr; + net_dev->features |= (NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM); + net_dev->vlan_features |= (NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM); + } + + memcpy(net_dev->perm_addr, mac_addr, net_dev->addr_len); + memcpy(net_dev->dev_addr, mac_addr, net_dev->addr_len); + + SET_ETHTOOL_OPS(net_dev, &dpa_ethtool_ops); + net_dev->needed_headroom = DPA_BP_HEAD; + net_dev->watchdog_timeo = tx_timeout * HZ / 1000; + + err = register_netdev(net_dev); + if (err < 0) { + dpaa_eth_err(dev, "register_netdev() = %d\n", err); + return err; + } + +#ifdef CONFIG_DEBUG_FS + priv->debugfs_file = debugfs_create_file(net_dev->name, S_IRUGO, + dpa_debugfs_root, net_dev, + &dpa_debugfs_fops); + if (unlikely(priv->debugfs_file == NULL)) { + cpu_netdev_err(net_dev, "debugfs_create_file(%s/%s/%s) = %d\n", + powerpc_debugfs_root->d_iname, + dpa_debugfs_root->d_iname, + net_dev->name, err); + + unregister_netdev(net_dev); + return -ENOMEM; + } +#endif + + return 0; +} + +static int dpa_shared_netdev_init(struct device_node *dpa_node, + struct net_device *net_dev) +{ + net_dev->netdev_ops = &dpa_shared_ops; + + return dpa_netdev_init(dpa_node, net_dev); +} + +static int dpa_private_netdev_init(struct device_node *dpa_node, + struct net_device *net_dev) +{ + int i; + struct dpa_priv_s *priv = netdev_priv(net_dev); + struct dpa_percpu_priv_s *percpu_priv; + + for_each_online_cpu(i) { + percpu_priv = per_cpu_ptr(priv->percpu_priv, i); + percpu_priv->net_dev = net_dev; + + percpu_priv->dpa_bp = priv->dpa_bp; + percpu_priv->dpa_bp_count = + per_cpu_ptr(priv->dpa_bp->percpu_count, i); + netif_napi_add(net_dev, &percpu_priv->napi, dpaa_eth_poll, + DPA_NAPI_WEIGHT); + } + + net_dev->netdev_ops = &dpa_private_ops; + + return dpa_netdev_init(dpa_node, net_dev); +} + +static int dpa_alloc_pcd_fqids(struct device *dev, uint32_t num, + uint8_t alignment, uint32_t *base_fqid) +{ + dpaa_eth_crit(dev, "callback not implemented!\n"); + BUG(); + + return 0; +} + +static int dpa_free_pcd_fqids(struct device *dev, uint32_t base_fqid) +{ + + dpaa_eth_crit(dev, "callback not implemented!\n"); + BUG(); + + return 0; +} + +static ssize_t dpaa_eth_show_addr(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct dpa_priv_s *priv = netdev_priv(to_net_dev(dev)); + struct mac_device *mac_dev = priv->mac_dev; + + if (mac_dev) + return sprintf(buf, "%llx", + (unsigned long long)mac_dev->res->start); + else + return sprintf(buf, "none"); +} + +static DEVICE_ATTR(device_addr, S_IRUGO, dpaa_eth_show_addr, NULL); + +static ssize_t dpaa_eth_show_fqids(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct dpa_priv_s *priv = netdev_priv(to_net_dev(dev)); + ssize_t bytes = 0; + int i = 0; + char *str; + struct dpa_fq *fq; + struct dpa_fq *tmp; + struct dpa_fq *prev = NULL; + u32 first_fqid = 0; + u32 last_fqid = 0; + char *prevstr = NULL; + + list_for_each_entry_safe(fq, tmp, &priv->dpa_fq_list, list) { + void *dqrr = fq->fq_base.cb.dqrr; + if (dqrr == ingress_rx_error_dqrr) + str = "error"; + else if (i == 1 && dqrr == ingress_rx_default_dqrr) + str = "default"; + else if (dqrr == ingress_rx_error_dqrr || + dqrr == ingress_rx_default_dqrr) + str = "RX"; + else if (dqrr == ingress_tx_default_dqrr) + str = "TX confirmation"; + else if (dqrr == ingress_tx_error_dqrr) + str = "TX error"; + else if (dqrr == NULL) + str = "TX"; + else + str = "unknown"; + + if (prev && (abs(fq->fqid - prev->fqid) != 1 || + str != prevstr)) { + if (last_fqid == first_fqid) + bytes += sprintf(buf + bytes, + "%s: %d\n", prevstr, prev->fqid); + else + bytes += sprintf(buf + bytes, + "%s: %d - %d\n", prevstr, + first_fqid, last_fqid); + } + + if (prev && abs(fq->fqid - prev->fqid) == 1 && str == prevstr) + last_fqid = fq->fqid; + else + first_fqid = last_fqid = fq->fqid; + + prev = fq; + prevstr = str; + i++; + } + + if (last_fqid == first_fqid) + bytes += sprintf(buf + bytes, "%s: %d\n", prevstr, prev->fqid); + else + bytes += sprintf(buf + bytes, "%s: %d - %d\n", prevstr, + first_fqid, last_fqid); + + return bytes; +} + +static DEVICE_ATTR(fqids, S_IRUGO, dpaa_eth_show_fqids, NULL); + + +static void dpaa_eth_sysfs_init(struct device *dev) +{ + if (device_create_file(dev, &dev_attr_device_addr)) + dev_err(dev, "Error creating dpaa_eth addr file\n"); + if (device_create_file(dev, &dev_attr_fqids)) + dev_err(dev, "Error creating dpaa_eth fqids file\n"); +} +static const struct of_device_id dpa_match[] ; +static int +dpaa_eth_probe(struct platform_device *_of_dev) +{ + int err, i; + struct device *dev; + struct device_node *dpa_node; + struct dpa_bp *dpa_bp; + struct dpa_fq *dpa_fq, *tmp; + struct list_head rxfqlist; + struct list_head txfqlist; + size_t count; + struct net_device *net_dev = NULL; + struct dpa_priv_s *priv = NULL; + struct dpa_fq *rxdefault = NULL; + struct dpa_fq *txdefault = NULL; + struct dpa_fq *rxerror = NULL; + struct dpa_fq *txerror = NULL; + struct dpa_fq *rxextra = NULL; + struct dpa_fq *txfqs = NULL; + struct fm_port *rxport = NULL; + struct fm_port *txport = NULL; + bool has_timer = FALSE; + struct mac_device *mac_dev; + int proxy_enet; + const struct of_device_id *match; + + dev = &_of_dev->dev; + + dpa_node = dev->of_node; + + match = of_match_device(dpa_match, dev); + if (!match) + return -EINVAL; + + if (!of_device_is_available(dpa_node)) + return -ENODEV; + + /* + * If it's not an fsl,dpa-ethernet node, we just serve as a proxy + * initializer driver, and don't do any linux device setup + */ + proxy_enet = strcmp(match->compatible, "fsl,dpa-ethernet"); + + /* + * Allocate this early, so we can store relevant information in + * the private area + */ + if (!proxy_enet) { + net_dev = alloc_etherdev_mq(sizeof(*priv), DPAA_ETH_TX_QUEUES); + if (!net_dev) { + dpaa_eth_err(dev, "alloc_etherdev_mq() failed\n"); + return -ENOMEM; + } + + /* Do this here, so we can be verbose early */ + SET_NETDEV_DEV(net_dev, dev); + dev_set_drvdata(dev, net_dev); + + priv = netdev_priv(net_dev); + priv->net_dev = net_dev; + + priv->msg_enable = netif_msg_init(debug, -1); + } + + /* Get the buffer pools assigned to this interface */ + dpa_bp = dpa_bp_probe(_of_dev, &count); + if (IS_ERR(dpa_bp)) { + err = PTR_ERR(dpa_bp); + goto bp_probe_failed; + } + + mac_dev = dpa_mac_probe(_of_dev); + if (IS_ERR(mac_dev)) { + err = PTR_ERR(mac_dev); + goto mac_probe_failed; + } else if (mac_dev) { + rxport = mac_dev->port_dev[RX]; + txport = mac_dev->port_dev[TX]; + } + + INIT_LIST_HEAD(&rxfqlist); + INIT_LIST_HEAD(&txfqlist); + + if (rxport) + err = dpa_fq_probe(_of_dev, &rxfqlist, &rxdefault, &rxerror, + &rxextra, RX); + else + err = dpa_fq_probe(_of_dev, &rxfqlist, NULL, NULL, + &rxextra, RX); + + if (err < 0) + goto rx_fq_probe_failed; + + if (txport) + err = dpa_fq_probe(_of_dev, &txfqlist, &txdefault, &txerror, + &txfqs, TX); + else + err = dpa_fq_probe(_of_dev, &txfqlist, NULL, NULL, &txfqs, TX); + + if (err < 0) + goto tx_fq_probe_failed; + + /* + * Now we have all of the configuration information. + * We support a number of configurations: + * 1) Private interface - An optimized linux ethernet driver with + * a real network connection. + * 2) Shared interface - A device intended for virtual connections + * or for a real interface that is shared between partitions + * 3) Proxy initializer - Just configures the MAC on behalf of + * another partition + */ + + /* bp init */ + if (net_dev) { + err = dpa_bp_create(net_dev, dpa_bp, count); + + if (err < 0) + goto bp_create_failed; + + priv->mac_dev = mac_dev; + + priv->channel = dpa_get_channel(dev, dpa_node); + + if (priv->channel < 0) { + err = priv->channel; + goto get_channel_failed; + } + + dpa_rx_fq_init(priv, &rxfqlist, rxdefault, rxerror, rxextra); + dpa_tx_fq_init(priv, &txfqlist, txdefault, txerror, txfqs, + txport); + + /* Add the FQs to the interface, and make them active */ + INIT_LIST_HEAD(&priv->dpa_fq_list); + + list_for_each_entry_safe(dpa_fq, tmp, &rxfqlist, list) { + err = _dpa_fq_alloc(&priv->dpa_fq_list, dpa_fq); + if (err < 0) + goto fq_alloc_failed; + } + + list_for_each_entry_safe(dpa_fq, tmp, &txfqlist, list) { + err = _dpa_fq_alloc(&priv->dpa_fq_list, dpa_fq); + if (err < 0) + goto fq_alloc_failed; + } + + if (priv->tsu && priv->tsu->valid) + has_timer = TRUE; + } + + /* All real interfaces need their ports initialized */ + if (mac_dev) { + struct fm_port_pcd_param rx_port_pcd_param; + + dpaa_eth_init_rx_port(rxport, dpa_bp, count, rxerror, + rxdefault, has_timer); + dpaa_eth_init_tx_port(txport, txerror, txdefault, has_timer); + + rx_port_pcd_param.cba = dpa_alloc_pcd_fqids; + rx_port_pcd_param.cbf = dpa_free_pcd_fqids; + rx_port_pcd_param.dev = dev; + fm_port_pcd_bind(rxport, &rx_port_pcd_param); + } + + /* + * Proxy interfaces need to be started, and the allocated + * memory freed + */ + if (!net_dev) { + devm_kfree(&_of_dev->dev, dpa_bp); + devm_kfree(&_of_dev->dev, rxdefault); + devm_kfree(&_of_dev->dev, rxerror); + devm_kfree(&_of_dev->dev, txdefault); + devm_kfree(&_of_dev->dev, txerror); + + if (mac_dev) + for_each_port_device(i, mac_dev->port_dev) + fm_port_enable(mac_dev->port_dev[i]); + + return 0; + } + + /* Now we need to initialize either a private or shared interface */ + priv->percpu_priv = __alloc_percpu(sizeof(*priv->percpu_priv), + __alignof__(*priv->percpu_priv)); + if (priv->percpu_priv == NULL) { + dpaa_eth_err(dev, "__alloc_percpu() failed\n"); + err = -ENOMEM; + goto alloc_percpu_failed; + } + + if (priv->shared) + err = dpa_shared_netdev_init(dpa_node, net_dev); + else + err = dpa_private_netdev_init(dpa_node, net_dev); + + if (err < 0) + goto netdev_init_failed; + + dpaa_eth_sysfs_init(&net_dev->dev); + +#ifdef CONFIG_DPAA_ETH_UNIT_TESTS + /* The unit test is designed to test private interfaces */ + if (!priv->shared && !tx_unit_test_ran) { + err = dpa_tx_unit_test(net_dev); + + BUG_ON(err); + } +#endif + + return 0; + +netdev_init_failed: + if (net_dev) + free_percpu(priv->percpu_priv); +alloc_percpu_failed: +fq_alloc_failed: + if (net_dev) + dpa_fq_free(dev, &priv->dpa_fq_list); +get_channel_failed: + if (net_dev) + dpa_bp_free(priv, priv->dpa_bp); +bp_create_failed: +tx_fq_probe_failed: +rx_fq_probe_failed: +mac_probe_failed: +bp_probe_failed: + dev_set_drvdata(dev, NULL); + if (net_dev) + free_netdev(net_dev); + + return err; +} + +static const struct of_device_id dpa_match[] = { + { + .compatible = "fsl,dpa-ethernet" + }, + { + .compatible = "fsl,dpa-ethernet-init" + }, + {} +}; +MODULE_DEVICE_TABLE(of, dpa_match); + +static int __cold dpa_remove(struct platform_device *of_dev) +{ + int err; + struct device *dev; + struct net_device *net_dev; + struct dpa_priv_s *priv; + + dev = &of_dev->dev; + net_dev = dev_get_drvdata(dev); + priv = netdev_priv(net_dev); + + dev_set_drvdata(dev, NULL); + unregister_netdev(net_dev); + + err = dpa_fq_free(dev, &priv->dpa_fq_list); + + free_percpu(priv->percpu_priv); + + dpa_bp_free(priv, priv->dpa_bp); + +#ifdef CONFIG_DEBUG_FS + debugfs_remove(priv->debugfs_file); +#endif + +#ifdef CONFIG_FSL_DPA_1588 + if (priv->tsu && priv->tsu->valid) + dpa_ptp_cleanup(priv); +#endif + + free_netdev(net_dev); + + return err; +} + +static struct platform_driver dpa_driver = { + .driver = { + .name = KBUILD_MODNAME, + .of_match_table = dpa_match, + .owner = THIS_MODULE, + }, + .probe = dpaa_eth_probe, + .remove = dpa_remove, +}; + +static int __init __cold dpa_load(void) +{ + int _errno; + + cpu_pr_info(KBUILD_MODNAME ": " DPA_DESCRIPTION " (" VERSION ")\n"); + +#ifdef CONFIG_DEBUG_FS + dpa_debugfs_root = debugfs_create_dir(KBUILD_MODNAME, + powerpc_debugfs_root); + if (unlikely(dpa_debugfs_root == NULL)) { + _errno = -ENOMEM; + cpu_pr_err(KBUILD_MODNAME ": %s:%hu:%s(): " + "debugfs_create_dir(%s/"KBUILD_MODNAME") = %d\n", + __file__, __LINE__, __func__, + powerpc_debugfs_root->d_iname, _errno); + goto _return; + } +#endif + + _errno = platform_driver_register(&dpa_driver); + if (unlikely(_errno < 0)) { + cpu_pr_err(KBUILD_MODNAME + ": %s:%hu:%s(): platform_driver_register() = %d\n", + __file__, __LINE__, __func__, _errno); + goto _return_debugfs_remove; + } + + goto _return; + +_return_debugfs_remove: +#ifdef CONFIG_DEBUG_FS + debugfs_remove(dpa_debugfs_root); +#endif +_return: + cpu_pr_debug(KBUILD_MODNAME ": %s:%s() ->\n", __file__, __func__); + + return _errno; +} +module_init(dpa_load); + +static void __exit __cold dpa_unload(void) +{ + cpu_pr_debug(KBUILD_MODNAME ": -> %s:%s()\n", __file__, __func__); + + platform_driver_unregister(&dpa_driver); + +#ifdef CONFIG_DEBUG_FS + debugfs_remove(dpa_debugfs_root); +#endif + + cpu_pr_debug(KBUILD_MODNAME ": %s:%s() ->\n", __file__, __func__); +} +module_exit(dpa_unload); + +static int __init fsl_fman_phy_set_max_frm(char *str) +{ + int ret = 0; + + ret = get_option(&str, &fsl_fman_phy_maxfrm); + if (ret != 1) { + /* This will only work if CONFIG_EARLY_PRINTK is compiled in, + * and something like "earlyprintk=serial,uart0,115200" is + * specified in the bootargs */ + printk(KERN_WARNING "No suitable %s= prop in bootargs; " + "will use the default DPA_MAX_FRM_SIZE (%d) " + "from Kconfig.\n", + FSL_FMAN_PHY_MAXFRM_BOOTARG, CONFIG_DPA_MAX_FRM_SIZE); + + fsl_fman_phy_maxfrm = CONFIG_DPA_MAX_FRM_SIZE; + return 1; + } + + /* Don't allow invalid bootargs; fallback to the Kconfig value */ + if (fsl_fman_phy_maxfrm < 64 || fsl_fman_phy_maxfrm > 9600) { + printk(KERN_WARNING "Invalid %s=%d in bootargs, valid range is " + "64-9600. Falling back to the DPA_MAX_FRM_SIZE (%d) " + "from Kconfig.\n", + FSL_FMAN_PHY_MAXFRM_BOOTARG, fsl_fman_phy_maxfrm, + CONFIG_DPA_MAX_FRM_SIZE); + + fsl_fman_phy_maxfrm = CONFIG_DPA_MAX_FRM_SIZE; + return 1; + } + + printk(KERN_INFO "Using fsl_fman_phy_maxfrm=%d from bootargs\n", + fsl_fman_phy_maxfrm); + return 0; +} +early_param(FSL_FMAN_PHY_MAXFRM_BOOTARG, fsl_fman_phy_set_max_frm); --- linux-3.13.0.orig/drivers/net/dpa/dpaa_eth.h +++ linux-3.13.0/drivers/net/dpa/dpaa_eth.h @@ -0,0 +1,127 @@ +/* + * Copyright 2008-2011 Freescale Semiconductor Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 __DPA_H +#define __DPA_H + +#include /* struct ethtool_ops */ +#include +#include /* struct list_head */ +#include /* struct work_struct */ +#include +#include +#ifdef CONFIG_DEBUG_FS +#include /* struct dentry */ +#endif + +#include /* struct qman_fq */ + +#include "dpaa_eth-common.h" + +#include "mac.h" /* struct mac_device */ + + +/* number of Tx queues to FMan */ +#define DPAA_ETH_TX_QUEUES 8 +#define DPAA_ETH_RX_QUEUES 128 + +struct pcd_range { + uint32_t base; + uint32_t count; +}; + +struct dpa_bp { + struct bman_pool *pool; + uint8_t bpid; + struct device *dev; + size_t count; + size_t size; + bool seed_pool; + dma_addr_t paddr; + void *vaddr; + int kernel_pool; + int *percpu_count; + int *needs_refill; + atomic_t refs; +}; + +struct dpa_percpu_priv_s { + struct net_device *net_dev; + int *dpa_bp_count; + struct dpa_bp *dpa_bp; + struct napi_struct napi; + u32 start_tx; + u32 in_interrupt; + u32 ingress_calls; + u32 tx_returned; + u32 tx_confirm; + struct net_device_stats stats; +}; + +struct dpa_priv_s { + struct dpa_bp *dpa_bp; + size_t bp_count; + int shared; + struct net_device *net_dev; + + uint16_t channel; /* "fsl,qman-channel-id" */ + struct list_head dpa_fq_list; + struct qman_fq *egress_fqs[DPAA_ETH_TX_QUEUES]; + + struct mac_device *mac_dev; + + struct dpa_percpu_priv_s *percpu_priv; +#ifdef CONFIG_DEBUG_FS + struct dentry *debugfs_file; +#endif + + uint32_t msg_enable; /* net_device message level */ + struct dpa_ptp_tsu *tsu; +}; + +extern const struct ethtool_ops dpa_ethtool_ops; +extern int fsl_fman_phy_maxfrm; + +static inline int dpaa_eth_napi_schedule(struct dpa_percpu_priv_s *percpu_priv) +{ + if (unlikely(in_irq())) { + /* Disable QMan IRQ and invoke NAPI */ + int ret = qman_irqsource_remove(QM_PIRQ_DQRI); + if (likely(!ret)) { + napi_schedule(&percpu_priv->napi); + return 1; + } + } + return 0; +} + +#endif /* __DPA_H */ --- linux-3.13.0.orig/drivers/net/dpa/mac-api.c +++ linux-3.13.0/drivers/net/dpa/mac-api.c @@ -0,0 +1,674 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 "dpaa_eth-common.h" +#include "dpaa_eth.h" +#include "mac.h" + +#include "error_ext.h" /* GET_ERROR_TYPE, E_OK */ +#include "fm_mac_ext.h" +#include "fm_rtc_ext.h" + +#define MAC_DESCRIPTION "FSL FMan MAC API based driver" + +MODULE_LICENSE("Dual BSD/GPL"); + +MODULE_AUTHOR("Emil Medve "); + +MODULE_DESCRIPTION(MAC_DESCRIPTION); + +struct mac_priv_s { + t_Handle mac; +}; + +const char *mac_driver_description __initconst = MAC_DESCRIPTION; +const size_t mac_sizeof_priv[] = { + [DTSEC] = sizeof(struct mac_priv_s), + [XGMAC] = sizeof(struct mac_priv_s) +}; + +static const e_EnetMode _100[] = +{ + [PHY_INTERFACE_MODE_MII] = e_ENET_MODE_MII_100, + [PHY_INTERFACE_MODE_RMII] = e_ENET_MODE_RMII_100 +}; + +static const e_EnetMode _1000[] = +{ + [PHY_INTERFACE_MODE_GMII] = e_ENET_MODE_GMII_1000, + [PHY_INTERFACE_MODE_SGMII] = e_ENET_MODE_SGMII_1000, + [PHY_INTERFACE_MODE_TBI] = e_ENET_MODE_TBI_1000, + [PHY_INTERFACE_MODE_RGMII] = e_ENET_MODE_RGMII_1000, + [PHY_INTERFACE_MODE_RGMII_ID] = e_ENET_MODE_RGMII_1000, + [PHY_INTERFACE_MODE_RGMII_RXID] = e_ENET_MODE_RGMII_1000, + [PHY_INTERFACE_MODE_RGMII_TXID] = e_ENET_MODE_RGMII_1000, + [PHY_INTERFACE_MODE_RTBI] = e_ENET_MODE_RTBI_1000 +}; + +static e_EnetMode __cold __attribute__((nonnull)) +macdev2enetinterface(const struct mac_device *mac_dev) +{ + switch (mac_dev->max_speed) { + case SPEED_100: + return _100[mac_dev->phy_if]; + case SPEED_1000: + return _1000[mac_dev->phy_if]; + case SPEED_10000: + return e_ENET_MODE_XGMII_10000; + default: + return e_ENET_MODE_MII_100; + } +} + +static void mac_exception(t_Handle _mac_dev, e_FmMacExceptions exception) +{ + struct mac_device *mac_dev; + + mac_dev = (struct mac_device *)_mac_dev; + + if (e_FM_MAC_EX_10G_RX_FIFO_OVFL == exception) { + /* don't flag RX FIFO after the first */ + FM_MAC_SetException( + ((struct mac_priv_s *)macdev_priv(_mac_dev))->mac, + e_FM_MAC_EX_10G_RX_FIFO_OVFL, false); + printk(KERN_ERR "10G MAC got RX FIFO Error = %x\n", exception); + } + + cpu_dev_dbg(mac_dev->dev, "%s:%s() -> %d\n", __file__, __func__, + exception); +} + +static int __cold init(struct mac_device *mac_dev) +{ + int _errno; + t_Error err; + struct mac_priv_s *priv; + t_FmMacParams param; + uint32_t version; + + priv = macdev_priv(mac_dev); + + param.baseAddr = (typeof(param.baseAddr))(uintptr_t)devm_ioremap( + mac_dev->dev, mac_dev->res->start, 0x2000); + param.enetMode = macdev2enetinterface(mac_dev); + memcpy(¶m.addr, mac_dev->addr, min(sizeof(param.addr), + sizeof(mac_dev->addr))); + param.macId = mac_dev->cell_index; + param.h_Fm = (t_Handle)mac_dev->fm; + param.mdioIrq = NO_IRQ; + param.f_Exception = mac_exception; + param.f_Event = mac_exception; + param.h_App = mac_dev; + + priv->mac = FM_MAC_Config(¶m); + if (unlikely(priv->mac == NULL)) { + dpaa_eth_err(mac_dev->dev, "FM_MAC_Config() failed\n"); + _errno = -EINVAL; + goto _return; + } + + err = FM_MAC_ConfigMaxFrameLength(priv->mac, fsl_fman_phy_maxfrm); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) { + dpaa_eth_err(mac_dev->dev, + "FM_MAC_ConfigMaxFrameLength() = 0x%08x\n", err); + goto _return_fm_mac_free; + } + + if (macdev2enetinterface(mac_dev) != e_ENET_MODE_XGMII_10000) { + /* 10G always works with pad and CRC */ + err = FM_MAC_ConfigPadAndCrc(priv->mac, true); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) { + dpaa_eth_err(mac_dev->dev, + "FM_MAC_ConfigPadAndCrc() = 0x%08x\n", err); + goto _return_fm_mac_free; + } + + err = FM_MAC_ConfigHalfDuplex(priv->mac, mac_dev->half_duplex); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) { + dpaa_eth_err(mac_dev->dev, + "FM_MAC_ConfigHalfDuplex() = 0x%08x\n", err); + goto _return_fm_mac_free; + } + } + else { + err = FM_MAC_ConfigResetOnInit(priv->mac, true); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) { + dpaa_eth_err(mac_dev->dev, + "FM_MAC_ConfigResetOnInit() = 0x%08x\n", err); + goto _return_fm_mac_free; + } + } + + err = FM_MAC_Init(priv->mac); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) { + dpaa_eth_err(mac_dev->dev, "FM_MAC_Init() = 0x%08x\n", err); + goto _return_fm_mac_free; + } + +#ifndef CONFIG_FMAN_MIB_CNT_OVF_IRQ_EN + /* For 1G MAC, disable by default the MIB counters overflow interrupt */ + if (macdev2enetinterface(mac_dev) != e_ENET_MODE_XGMII_10000) { + err = FM_MAC_SetException(priv->mac, + e_FM_MAC_EX_1G_RX_MIB_CNT_OVFL, FALSE); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) { + dpaa_eth_err(mac_dev->dev, + "FM_MAC_SetException() = 0x%08x\n", err); + goto _return_fm_mac_free; + } + } +#endif /* !CONFIG_FMAN_MIB_CNT_OVF_IRQ_EN */ + + /* For 10G MAC, disable Tx ECC exception */ + if (macdev2enetinterface(mac_dev) == e_ENET_MODE_XGMII_10000) { + err = FM_MAC_SetException(priv->mac, + e_FM_MAC_EX_10G_1TX_ECC_ER, FALSE); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) { + dpaa_eth_err(mac_dev->dev, + "FM_MAC_SetException() = 0x%08x\n", err); + goto _return_fm_mac_free; + } + } + + err = FM_MAC_GetVesrion(priv->mac, &version); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) { + dpaa_eth_err(mac_dev->dev, "FM_MAC_GetVesrion() = 0x%08x\n", + err); + goto _return_fm_mac_free; + } + cpu_dev_info(mac_dev->dev, "FMan %s version: 0x%08x\n", + ((macdev2enetinterface(mac_dev) != e_ENET_MODE_XGMII_10000) ? + "dTSEC" : "XGEC"), version); + + goto _return; + + +_return_fm_mac_free: + err = FM_MAC_Free(priv->mac); + if (unlikely(-GET_ERROR_TYPE(err) < 0)) + dpaa_eth_err(mac_dev->dev, "FM_MAC_Free() = 0x%08x\n", err); +_return: + return _errno; +} + +static int __cold start(struct mac_device *mac_dev) +{ + int _errno; + t_Error err; + struct phy_device *phy_dev = mac_dev->phy_dev; + + err = FM_MAC_Enable(((struct mac_priv_s *)macdev_priv(mac_dev))->mac, + e_COMM_MODE_RX_AND_TX); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) + dpaa_eth_err(mac_dev->dev, "FM_MAC_Enable() = 0x%08x\n", err); + + if (phy_dev) { + if (macdev2enetinterface(mac_dev) != e_ENET_MODE_XGMII_10000) + phy_start(phy_dev); + else if (phy_dev->drv->read_status) + phy_dev->drv->read_status(phy_dev); + } + + return _errno; +} + +static int __cold stop(struct mac_device *mac_dev) +{ + int _errno; + t_Error err; + + if (mac_dev->phy_dev && + (macdev2enetinterface(mac_dev) != e_ENET_MODE_XGMII_10000)) + phy_stop(mac_dev->phy_dev); + + err = FM_MAC_Disable(((struct mac_priv_s *)macdev_priv(mac_dev))->mac, + e_COMM_MODE_RX_AND_TX); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) + dpaa_eth_err(mac_dev->dev, "FM_MAC_Disable() = 0x%08x\n", err); + + return _errno; +} + +static int __cold change_promisc(struct mac_device *mac_dev) +{ + int _errno; + t_Error err; + + err = FM_MAC_SetPromiscuous( + ((struct mac_priv_s *)macdev_priv(mac_dev))->mac, + mac_dev->promisc = !mac_dev->promisc); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) + dpaa_eth_err(mac_dev->dev, + "FM_MAC_SetPromiscuous() = 0x%08x\n", err); + + return _errno; +} + +static int __cold set_multi(struct net_device *net_dev) +{ + struct dpa_priv_s *priv; + struct mac_device *mac_dev; + struct mac_priv_s *mac_priv; + struct mac_address *old_addr, *tmp; + struct netdev_hw_addr *ha; + int _errno; + t_Error err; + + priv = netdev_priv(net_dev); + mac_dev = priv->mac_dev; + mac_priv = macdev_priv(mac_dev); + + /* Clear previous address list */ + list_for_each_entry_safe(old_addr, tmp, &mac_dev->mc_addr_list, list) { + err = FM_MAC_RemoveHashMacAddr(mac_priv->mac, + (t_EnetAddr *)old_addr->addr); + _errno = -GET_ERROR_TYPE(err); + if (_errno < 0) { + dpaa_eth_err(mac_dev->dev, + "FM_MAC_RemoveHashMacAddr() = 0x%08x\n", err); + return _errno; + } + list_del(&old_addr->list); + kfree(old_addr); + } + + /* Add all the addresses from the new list */ + netdev_for_each_mc_addr(ha, net_dev) { + err = FM_MAC_AddHashMacAddr(mac_priv->mac, + (t_EnetAddr *)ha->addr); + _errno = -GET_ERROR_TYPE(err); + if (_errno < 0) { + dpaa_eth_err(mac_dev->dev, + "FM_MAC_AddHashMacAddr() = 0x%08x\n", err); + return _errno; + } + tmp = kmalloc(sizeof(struct mac_address), GFP_ATOMIC); + if (!tmp) { + dpaa_eth_err(mac_dev->dev, "Out of memory\n"); + return -ENOMEM; + } + memcpy(tmp->addr, ha->addr, ETH_ALEN); + list_add(&tmp->list, &mac_dev->mc_addr_list); + } + return 0; +} + +static int __cold change_addr(struct mac_device *mac_dev, uint8_t *addr) +{ + int _errno; + t_Error err; + + err = FM_MAC_ModifyMacAddr( + ((struct mac_priv_s *)macdev_priv(mac_dev))->mac, + (t_EnetAddr *)addr); + _errno = -GET_ERROR_TYPE(err); + if (_errno < 0) + dpaa_eth_err(mac_dev->dev, + "FM_MAC_ModifyMacAddr() = 0x%08x\n", err); + + return _errno; +} + +static void adjust_link(struct net_device *net_dev) +{ + struct dpa_priv_s *priv = netdev_priv(net_dev); + struct mac_device *mac_dev = priv->mac_dev; + struct phy_device *phy_dev = mac_dev->phy_dev; + int _errno; + t_Error err; + + if (!phy_dev->link) + return; + + err = FM_MAC_AdjustLink( + ((struct mac_priv_s *)macdev_priv(mac_dev))->mac, + phy_dev->speed, phy_dev->duplex); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) + dpaa_eth_err(mac_dev->dev, "FM_MAC_AdjustLink() = 0x%08x\n", + err); + + return; +} + +/* Initializes driver's PHY state, and attaches to the PHY. + * Returns 0 on success. + */ +static int dtsec_init_phy(struct net_device *net_dev) +{ + struct dpa_priv_s *priv; + struct mac_device *mac_dev; + struct phy_device *phy_dev; + + priv = netdev_priv(net_dev); + mac_dev = priv->mac_dev; + + if (!mac_dev->phy_node) + phy_dev = phy_connect(net_dev, mac_dev->fixed_bus_id, + &adjust_link, mac_dev->phy_if); + else + phy_dev = of_phy_connect(net_dev, mac_dev->phy_node, + &adjust_link, 0, mac_dev->phy_if); + if (unlikely(phy_dev == NULL) || IS_ERR(phy_dev)) { + cpu_netdev_err(net_dev, "Could not connect to PHY %s\n", + mac_dev->phy_node ? + mac_dev->phy_node->full_name : + mac_dev->fixed_bus_id); + return phy_dev == NULL ? -ENODEV : PTR_ERR(phy_dev); + } + + /* Remove any features not supported by the controller */ + phy_dev->supported &= priv->mac_dev->if_support; + phy_dev->advertising = phy_dev->supported; + + priv->mac_dev->phy_dev = phy_dev; + + return 0; +} + +static int xgmac_init_phy(struct net_device *net_dev) +{ + struct dpa_priv_s *priv = netdev_priv(net_dev); + struct mac_device *mac_dev = priv->mac_dev; + struct phy_device *phy_dev; + + if (!mac_dev->phy_node) + phy_dev = phy_attach(net_dev, mac_dev->fixed_bus_id, + mac_dev->phy_if); + else + phy_dev = of_phy_attach(net_dev, mac_dev->phy_node, 0, + mac_dev->phy_if); + if (unlikely(phy_dev == NULL) || IS_ERR(phy_dev)) { + cpu_netdev_err(net_dev, "Could not attach to PHY %s\n", + mac_dev->phy_node ? + mac_dev->phy_node->full_name : + mac_dev->fixed_bus_id); + return phy_dev == NULL ? -ENODEV : PTR_ERR(phy_dev); + } + + phy_dev->supported &= priv->mac_dev->if_support; + phy_dev->advertising = phy_dev->supported; + + mac_dev->phy_dev = phy_dev; + + return 0; +} + +static int __cold uninit(struct mac_device *mac_dev) +{ + int _errno, __errno; + t_Error err; + const struct mac_priv_s *priv; + + priv = macdev_priv(mac_dev); + + err = FM_MAC_Disable(priv->mac, e_COMM_MODE_RX_AND_TX); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) + dpaa_eth_err(mac_dev->dev, "FM_MAC_Disable() = 0x%08x\n", err); + + err = FM_MAC_Free(priv->mac); + __errno = -GET_ERROR_TYPE(err); + if (unlikely(__errno < 0)) { + dpaa_eth_err(mac_dev->dev, "FM_MAC_Free() = 0x%08x\n", err); + if (_errno < 0) + _errno = __errno; + } + + return _errno; +} + +static int __cold ptp_enable(struct mac_device *mac_dev) +{ + int _errno; + t_Error err; + const struct mac_priv_s *priv; + + priv = macdev_priv(mac_dev); + + err = FM_MAC_Enable1588TimeStamp(priv->mac); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) + dpaa_eth_err(mac_dev->dev, "FM_MAC_Enable1588TimeStamp()" + "= 0x%08x\n", err); + return _errno; +} + +static int __cold ptp_disable(struct mac_device *mac_dev) +{ + int _errno; + t_Error err; + const struct mac_priv_s *priv; + + priv = macdev_priv(mac_dev); + + err = FM_MAC_Disable1588TimeStamp(priv->mac); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) + dpaa_eth_err(mac_dev->dev, "FM_MAC_Disable1588TimeStamp()" + "= 0x%08x\n", err); + return _errno; +} + +static int __cold fm_rtc_enable(struct net_device *net_dev) +{ + struct dpa_priv_s *priv = netdev_priv(net_dev); + struct mac_device *mac_dev = priv->mac_dev; + int _errno; + t_Error err; + + err = FM_RTC_Enable(fm_get_rtc_handle(mac_dev->fm_dev), 0); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) + dpaa_eth_err(mac_dev->dev, "FM_RTC_Enable = 0x%08x\n", err); + + return _errno; +} + +static int __cold fm_rtc_disable(struct net_device *net_dev) +{ + struct dpa_priv_s *priv = netdev_priv(net_dev); + struct mac_device *mac_dev = priv->mac_dev; + int _errno; + t_Error err; + + err = FM_RTC_Disable(fm_get_rtc_handle(mac_dev->fm_dev)); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) + dpaa_eth_err(mac_dev->dev, "FM_RTC_Disable = 0x%08x\n", err); + + return _errno; +} + +static int __cold fm_rtc_get_cnt(struct net_device *net_dev, uint64_t *ts) +{ + struct dpa_priv_s *priv = netdev_priv(net_dev); + struct mac_device *mac_dev = priv->mac_dev; + int _errno; + t_Error err; + + err = FM_RTC_GetCurrentTime(fm_get_rtc_handle(mac_dev->fm_dev), ts); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) + dpaa_eth_err(mac_dev->dev, "FM_RTC_GetCurrentTime = 0x%08x\n", + err); + + return _errno; +} + +static int __cold fm_rtc_set_cnt(struct net_device *net_dev, uint64_t ts) +{ + struct dpa_priv_s *priv = netdev_priv(net_dev); + struct mac_device *mac_dev = priv->mac_dev; + int _errno; + t_Error err; + + err = FM_RTC_SetCurrentTime(fm_get_rtc_handle(mac_dev->fm_dev), ts); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) + dpaa_eth_err(mac_dev->dev, "FM_RTC_SetCurrentTime = 0x%08x\n", + err); + + return _errno; +} + +static int __cold fm_rtc_get_drift(struct net_device *net_dev, uint32_t *drift) +{ + struct dpa_priv_s *priv = netdev_priv(net_dev); + struct mac_device *mac_dev = priv->mac_dev; + int _errno; + t_Error err; + + err = FM_RTC_GetFreqCompensation(fm_get_rtc_handle(mac_dev->fm_dev), + drift); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) + dpaa_eth_err(mac_dev->dev, "FM_RTC_GetFreqCompensation =" + "0x%08x\n", err); + + return _errno; +} + +static int __cold fm_rtc_set_drift(struct net_device *net_dev, uint32_t drift) +{ + struct dpa_priv_s *priv = netdev_priv(net_dev); + struct mac_device *mac_dev = priv->mac_dev; + int _errno; + t_Error err; + + err = FM_RTC_SetFreqCompensation(fm_get_rtc_handle(mac_dev->fm_dev), + drift); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) + dpaa_eth_err(mac_dev->dev, "FM_RTC_SetFreqCompensation =" + "0x%08x\n", err); + + return _errno; +} + +static int __cold fm_rtc_set_alarm(struct net_device *net_dev, uint32_t id, + uint64_t time) +{ + struct dpa_priv_s *priv = netdev_priv(net_dev); + struct mac_device *mac_dev = priv->mac_dev; + t_FmRtcAlarmParams alarm; + int _errno; + t_Error err; + + alarm.alarmId = id; + alarm.alarmTime = time; + alarm.f_AlarmCallback = NULL; + err = FM_RTC_SetAlarm(fm_get_rtc_handle(mac_dev->fm_dev), + &alarm); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) + dpaa_eth_err(mac_dev->dev, "FM_RTC_SetAlarm =" + "0x%08x\n", err); + + return _errno; +} + +static int __cold fm_rtc_set_fiper(struct net_device *net_dev, uint32_t id, + uint64_t fiper) +{ + struct dpa_priv_s *priv = netdev_priv(net_dev); + struct mac_device *mac_dev = priv->mac_dev; + t_FmRtcPeriodicPulseParams pp; + int _errno; + t_Error err; + + pp.periodicPulseId = id; + pp.periodicPulsePeriod = fiper; + pp.f_PeriodicPulseCallback = NULL; + err = FM_RTC_SetPeriodicPulse(fm_get_rtc_handle(mac_dev->fm_dev), &pp); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) + dpaa_eth_err(mac_dev->dev, "FM_RTC_SetPeriodicPulse =" + "0x%08x\n", err); + + return _errno; +} + +static void __cold setup_dtsec(struct mac_device *mac_dev) +{ + mac_dev->init_phy = dtsec_init_phy; + mac_dev->init = init; + mac_dev->start = start; + mac_dev->stop = stop; + mac_dev->change_promisc = change_promisc; + mac_dev->change_addr = change_addr; + mac_dev->set_multi = set_multi; + mac_dev->uninit = uninit; + mac_dev->ptp_enable = ptp_enable; + mac_dev->ptp_disable = ptp_disable; + mac_dev->fm_rtc_enable = fm_rtc_enable; + mac_dev->fm_rtc_disable = fm_rtc_disable; + mac_dev->fm_rtc_get_cnt = fm_rtc_get_cnt; + mac_dev->fm_rtc_set_cnt = fm_rtc_set_cnt; + mac_dev->fm_rtc_get_drift = fm_rtc_get_drift; + mac_dev->fm_rtc_set_drift = fm_rtc_set_drift; + mac_dev->fm_rtc_set_alarm = fm_rtc_set_alarm; + mac_dev->fm_rtc_set_fiper = fm_rtc_set_fiper; +} + +static void __cold setup_xgmac(struct mac_device *mac_dev) +{ + mac_dev->init_phy = xgmac_init_phy; + mac_dev->init = init; + mac_dev->start = start; + mac_dev->stop = stop; + mac_dev->change_promisc = change_promisc; + mac_dev->change_addr = change_addr; + mac_dev->set_multi = set_multi; + mac_dev->uninit = uninit; +} + +void (*const mac_setup[])(struct mac_device *mac_dev) = { + [DTSEC] = setup_dtsec, + [XGMAC] = setup_xgmac +}; --- linux-3.13.0.orig/drivers/net/dpa/mac.c +++ linux-3.13.0/drivers/net/dpa/mac.c @@ -0,0 +1,428 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 "dpaa_eth-common.h" + +#include "lnxwrp_fm_ext.h" + +#include "mac.h" + +#define DTSEC_SUPPORTED \ + (SUPPORTED_10baseT_Half \ + | SUPPORTED_10baseT_Full \ + | SUPPORTED_100baseT_Half \ + | SUPPORTED_100baseT_Full \ + | SUPPORTED_Autoneg \ + | SUPPORTED_MII) + +static const char phy_str[][11] = +{ + [PHY_INTERFACE_MODE_MII] = "mii", + [PHY_INTERFACE_MODE_GMII] = "gmii", + [PHY_INTERFACE_MODE_SGMII] = "sgmii", + [PHY_INTERFACE_MODE_TBI] = "tbi", + [PHY_INTERFACE_MODE_RMII] = "rmii", + [PHY_INTERFACE_MODE_RGMII] = "rgmii", + [PHY_INTERFACE_MODE_RGMII_ID] = "rgmii-id", + [PHY_INTERFACE_MODE_RGMII_RXID] = "rgmii-rxid", + [PHY_INTERFACE_MODE_RGMII_TXID] = "rgmii-txid", + [PHY_INTERFACE_MODE_RTBI] = "rtbi", + [PHY_INTERFACE_MODE_XGMII] = "xgmii" +}; + +static phy_interface_t __pure __attribute__((nonnull)) str2phy(const char *str) +{ + int i; + + for (i = 0; i < ARRAY_SIZE(phy_str); i++) + if (strcmp(str, phy_str[i]) == 0) + return (phy_interface_t)i; + + return PHY_INTERFACE_MODE_MII; +} + +static const uint16_t phy2speed[] = +{ + [PHY_INTERFACE_MODE_MII] = SPEED_100, + [PHY_INTERFACE_MODE_GMII] = SPEED_1000, + [PHY_INTERFACE_MODE_SGMII] = SPEED_1000, + [PHY_INTERFACE_MODE_TBI] = SPEED_1000, + [PHY_INTERFACE_MODE_RMII] = SPEED_100, + [PHY_INTERFACE_MODE_RGMII] = SPEED_1000, + [PHY_INTERFACE_MODE_RGMII_ID] = SPEED_1000, + [PHY_INTERFACE_MODE_RGMII_RXID] = SPEED_1000, + [PHY_INTERFACE_MODE_RGMII_TXID] = SPEED_1000, + [PHY_INTERFACE_MODE_RTBI] = SPEED_1000, + [PHY_INTERFACE_MODE_XGMII] = SPEED_10000 +}; + +static struct mac_device * __cold +alloc_macdev(struct device *dev, size_t sizeof_priv, void (*setup)(struct mac_device *mac_dev)) +{ + struct mac_device *mac_dev; + + mac_dev = devm_kzalloc(dev, sizeof(*mac_dev) + sizeof_priv, GFP_KERNEL); + if (unlikely(mac_dev == NULL)) + mac_dev = ERR_PTR(-ENOMEM); + else { + mac_dev->dev = dev; + dev_set_drvdata(dev, mac_dev); + setup(mac_dev); + } + + return mac_dev; +} + +static int __cold free_macdev(struct mac_device *mac_dev) +{ + dev_set_drvdata(mac_dev->dev, NULL); + + return mac_dev->uninit(mac_dev); +} + +static const struct of_device_id mac_match[] = { + [DTSEC] = { + .compatible = "fsl,fman-1g-mac" + }, + [XGMAC] = { + .compatible = "fsl,fman-10g-mac" + }, + {} +}; +MODULE_DEVICE_TABLE(of, mac_match); + +static int __cold mac_probe(struct platform_device *_of_dev) +{ + int _errno, i, lenp; + struct device *dev; + struct device_node *mac_node, *dev_node; + struct mac_device *mac_dev; + struct platform_device *of_dev; + struct resource res; + const uint8_t *mac_addr; + const char *char_prop; + const phandle *phandle_prop; + const uint32_t *uint32_prop; + const struct of_device_id *match; + + dev = &_of_dev->dev; + mac_node = dev->of_node; + + match = of_match_device(mac_match, dev); + if (!match) + return -EINVAL; + + for (i = 0; i < ARRAY_SIZE(mac_match) - 1 && match != mac_match + i; i++); + BUG_ON(i >= ARRAY_SIZE(mac_match) - 1); + + mac_dev = alloc_macdev(dev, mac_sizeof_priv[i], mac_setup[i]); + if (IS_ERR(mac_dev)) { + _errno = PTR_ERR(mac_dev); + dpaa_eth_err(dev, "alloc_macdev() = %d\n", _errno); + goto _return; + } + + INIT_LIST_HEAD(&mac_dev->mc_addr_list); + + /* Get the FM node */ + dev_node = of_get_parent(mac_node); + if (unlikely(dev_node == NULL)) { + dpaa_eth_err(dev, "of_get_parent(%s) failed\n", + mac_node->full_name); + _errno = -EINVAL; + goto _return_dev_set_drvdata; + } + + of_dev = of_find_device_by_node(dev_node); + if (unlikely(of_dev == NULL)) { + dpaa_eth_err(dev, "of_find_device_by_node(%s) failed\n", + dev_node->full_name); + _errno = -EINVAL; + goto _return_of_node_put; + } + + mac_dev->fm_dev = fm_bind(&of_dev->dev); + if (unlikely(mac_dev->fm_dev == NULL)) { + dpaa_eth_err(dev, "fm_bind(%s) failed\n", dev_node->full_name); + _errno = -ENODEV; + goto _return_of_node_put; + } + + mac_dev->fm = (void *)fm_get_handle(mac_dev->fm_dev); + of_node_put(dev_node); + + /* Get the address of the memory mapped registers */ + _errno = of_address_to_resource(mac_node, 0, &res); + if (unlikely(_errno < 0)) { + dpaa_eth_err(dev, "of_address_to_resource(%s) = %d\n", + mac_node->full_name, _errno); + goto _return_dev_set_drvdata; + } + + mac_dev->res = __devm_request_region( + dev, + fm_get_mem_region(mac_dev->fm_dev), + res.start, res.end + 1 - res.start, "mac"); + if (unlikely(mac_dev->res == NULL)) { + dpaa_eth_err(dev, "__devm_request_mem_region(mac) failed\n"); + _errno = -EBUSY; + goto _return_dev_set_drvdata; + } + + mac_dev->vaddr = devm_ioremap(dev, mac_dev->res->start, + mac_dev->res->end + 1 - mac_dev->res->start); + if (unlikely(mac_dev->vaddr == NULL)) { + dpaa_eth_err(dev, "devm_ioremap() failed\n"); + _errno = -EIO; + goto _return_dev_set_drvdata; + } + + /* + * XXX: Warning, future versions of Linux will most likely not even + * call the driver code to allow us to override the TBIPA value, + * we'll need to address this when we move to newer kernel rev + */ +#define TBIPA_OFFSET 0x1c +#define TBIPA_DEFAULT_ADDR 5 + mac_dev->tbi_node = of_parse_phandle(mac_node, "tbi-handle", 0); + if (mac_dev->tbi_node) { + u32 tbiaddr = TBIPA_DEFAULT_ADDR; + + uint32_prop = of_get_property(mac_dev->tbi_node, "reg", NULL); + if (uint32_prop) + tbiaddr = *uint32_prop; + out_be32(mac_dev->vaddr + TBIPA_OFFSET, tbiaddr); + } + + if (!of_device_is_available(mac_node)) { + devm_iounmap(dev, mac_dev->vaddr); + __devm_release_region(dev, fm_get_mem_region(mac_dev->fm_dev), + res.start, res.end + 1 - res.start); + fm_unbind(mac_dev->fm_dev); + devm_kfree(dev, mac_dev); + dev_set_drvdata(dev, NULL); + return -ENODEV; + } + + /* Get the cell-index */ + uint32_prop = of_get_property(mac_node, "cell-index", &lenp); + if (unlikely(uint32_prop == NULL)) { + dpaa_eth_err(dev, "of_get_property(%s, cell-index) failed\n", + mac_node->full_name); + _errno = -EINVAL; + goto _return_dev_set_drvdata; + } + BUG_ON(lenp != sizeof(uint32_t)); + mac_dev->cell_index = *uint32_prop; + + /* Get the MAC address */ + mac_addr = of_get_mac_address(mac_node); + if (unlikely(mac_addr == NULL)) { + dpaa_eth_err(dev, "of_get_mac_address(%s) failed\n", + mac_node->full_name); + _errno = -EINVAL; + goto _return_dev_set_drvdata; + } + memcpy(mac_dev->addr, mac_addr, sizeof(mac_dev->addr)); + + /* Get the port handles */ + phandle_prop = of_get_property(mac_node, "fsl,port-handles", &lenp); + if (unlikely(phandle_prop == NULL)) { + dpaa_eth_err(dev, "of_get_property(%s, port-handles) failed\n", + mac_node->full_name); + _errno = -EINVAL; + goto _return_dev_set_drvdata; + } + BUG_ON(lenp != sizeof(phandle) * ARRAY_SIZE(mac_dev->port_dev)); + + for_each_port_device(i, mac_dev->port_dev) { + /* Find the port node */ + dev_node = of_find_node_by_phandle(phandle_prop[i]); + if (unlikely(dev_node == NULL)) { + dpaa_eth_err(dev, "of_find_node_by_phandle() failed\n"); + _errno = -EINVAL; + goto _return_of_node_put; + } + + of_dev = of_find_device_by_node(dev_node); + if (unlikely(of_dev == NULL)) { + dpaa_eth_err(dev, "of_find_device_by_node(%s) failed\n", + dev_node->full_name); + _errno = -EINVAL; + goto _return_of_node_put; + } + + mac_dev->port_dev[i] = fm_port_bind(&of_dev->dev); + if (unlikely(mac_dev->port_dev[i] == NULL)) { + dpaa_eth_err(dev, "dev_get_drvdata(%s) failed\n", + dev_node->full_name); + _errno = -EINVAL; + goto _return_of_node_put; + } + of_node_put(dev_node); + } + + /* Get the PHY connection type */ + char_prop = (const char *)of_get_property(mac_node, + "phy-connection-type", NULL); + if (unlikely(char_prop == NULL)) { + dpaa_eth_warning(dev, + "of_get_property(%s, phy-connection-type) " + "failed. Defaulting to MII\n", + mac_node->full_name); + mac_dev->phy_if = PHY_INTERFACE_MODE_MII; + } else + mac_dev->phy_if = str2phy(char_prop); + + mac_dev->link = false; + mac_dev->half_duplex = false; + mac_dev->speed = phy2speed[mac_dev->phy_if]; + mac_dev->max_speed = mac_dev->speed; + mac_dev->if_support = DTSEC_SUPPORTED; + /* We don't support half-duplex in SGMII mode */ + if (strstr(char_prop, "sgmii")) + mac_dev->if_support &= ~(SUPPORTED_10baseT_Half | + SUPPORTED_100baseT_Half); + + /* Gigabit support (no half-duplex) */ + if (mac_dev->max_speed == 1000) + mac_dev->if_support |= SUPPORTED_1000baseT_Full; + + /* The 10G interface only supports one mode */ + if (strstr(char_prop, "xgmii")) + mac_dev->if_support = SUPPORTED_10000baseT_Full; + + /* Get the rest of the PHY information */ + mac_dev->phy_node = of_parse_phandle(mac_node, "phy-handle", 0); + if (mac_dev->phy_node == NULL) { + int sz; + const u32 *phy_id = of_get_property(mac_node, "fixed-link", + &sz); + if (!phy_id || sz < sizeof(*phy_id)) { + cpu_dev_err(dev, "No PHY (or fixed link) found\n"); + _errno = -EINVAL; + goto _return_dev_set_drvdata; + } + + sprintf(mac_dev->fixed_bus_id, PHY_ID_FMT, "0", phy_id[0]); + } + + _errno = mac_dev->init(mac_dev); + if (unlikely(_errno < 0)) { + dpaa_eth_err(dev, "mac_dev->init() = %d\n", _errno); + goto _return_dev_set_drvdata; + } + + cpu_dev_info(dev, + "FMan MAC address: %02hx:%02hx:%02hx:%02hx:%02hx:%02hx\n", + mac_dev->addr[0], mac_dev->addr[1], mac_dev->addr[2], + mac_dev->addr[3], mac_dev->addr[4], mac_dev->addr[5]); + + goto _return; + +_return_of_node_put: + of_node_put(dev_node); +_return_dev_set_drvdata: + dev_set_drvdata(dev, NULL); +_return: + return _errno; +} + +static int __cold mac_remove(struct platform_device *of_dev) +{ + int i, _errno; + struct device *dev; + struct mac_device *mac_dev; + + dev = &of_dev->dev; + mac_dev = (struct mac_device *)dev_get_drvdata(dev); + + for_each_port_device(i, mac_dev->port_dev) + fm_port_unbind(mac_dev->port_dev[i]); + + fm_unbind(mac_dev->fm_dev); + + _errno = free_macdev(mac_dev); + + return _errno; +} + +static struct platform_driver mac_driver = { + .driver = { + .name = KBUILD_MODNAME, + .of_match_table = mac_match, + .owner = THIS_MODULE, + }, + .probe = mac_probe, + .remove = mac_remove, +}; + +static int __init __cold mac_load(void) +{ + int _errno; + + cpu_pr_debug(KBUILD_MODNAME ": -> %s:%s()\n", __file__, __func__); + + cpu_pr_info(KBUILD_MODNAME ": %s (" VERSION ")\n", mac_driver_description); + + _errno = platform_driver_register(&mac_driver); + if (unlikely(_errno < 0)) { + cpu_pr_err(KBUILD_MODNAME ": %s:%hu:%s(): of_register_platform_driver() = %d\n", + __file__, __LINE__, __func__, _errno); + goto _return; + } + + goto _return; + +_return: + cpu_pr_debug(KBUILD_MODNAME ": %s:%s() ->\n", __file__, __func__); + + return _errno; +} +module_init(mac_load); + +static void __exit __cold mac_unload(void) +{ + cpu_pr_debug(KBUILD_MODNAME ": -> %s:%s()\n", __file__, __func__); + + platform_driver_unregister(&mac_driver); + + cpu_pr_debug(KBUILD_MODNAME ": %s:%s() ->\n", __file__, __func__); +} +module_exit(mac_unload); --- linux-3.13.0.orig/drivers/net/dpa/mac.h +++ linux-3.13.0/drivers/net/dpa/mac.h @@ -0,0 +1,113 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 __MAC_H +#define __MAC_H + +#include /* struct device, BUS_ID_SIZE */ +#include /* ETH_ALEN */ +#include /* phy_interface_t, struct phy_device */ +#include + +#include "fsl_fman.h" /* struct port_device */ + +#ifndef CONFIG_DPA_MAX_FRM_SIZE +#define CONFIG_DPA_MAX_FRM_SIZE 0 +#endif + +enum {DTSEC, XGMAC}; + +struct mac_device { + struct device *dev; + void *priv; + uint8_t cell_index; + struct resource *res; + void *vaddr; + uint8_t addr[ETH_ALEN]; + bool promisc; + + struct fm *fm_dev; + struct fm_port *port_dev[2]; + + phy_interface_t phy_if; + u32 if_support; + bool link; + bool half_duplex; + uint16_t speed; + uint16_t max_speed; + struct device_node *phy_node; + char fixed_bus_id[MII_BUS_ID_SIZE + 3]; + struct device_node *tbi_node; + struct phy_device *phy_dev; + void *fm; + /* List of multicast addresses */ + struct list_head mc_addr_list; + + int (*init_phy)(struct net_device *net_dev); + int (*init)(struct mac_device *mac_dev); + int (*start)(struct mac_device *mac_dev); + int (*stop)(struct mac_device *mac_dev); + int (*change_promisc)(struct mac_device *mac_dev); + int (*change_addr)(struct mac_device *mac_dev, uint8_t *addr); + int (*set_multi)(struct net_device *net_dev); + int (*uninit)(struct mac_device *mac_dev); + int (*ptp_enable)(struct mac_device *mac_dev); + int (*ptp_disable)(struct mac_device *mac_dev); + int (*fm_rtc_enable)(struct net_device *net_dev); + int (*fm_rtc_disable)(struct net_device *net_dev); + int (*fm_rtc_get_cnt)(struct net_device *net_dev, uint64_t *ts); + int (*fm_rtc_set_cnt)(struct net_device *net_dev, uint64_t ts); + int (*fm_rtc_get_drift)(struct net_device *net_dev, uint32_t *drift); + int (*fm_rtc_set_drift)(struct net_device *net_dev, uint32_t drift); + int (*fm_rtc_set_alarm)(struct net_device *net_dev, uint32_t id, + uint64_t time); + int (*fm_rtc_set_fiper)(struct net_device *net_dev, uint32_t id, + uint64_t fiper); +}; + +struct mac_address { + uint8_t addr[ETH_ALEN]; + struct list_head list; +}; + +#define for_each_port_device(i, port_dev) \ + for (i = 0; i < ARRAY_SIZE(port_dev); i++) + +static inline void * __attribute((nonnull)) macdev_priv(const struct mac_device *mac_dev) +{ + return (void *)mac_dev + sizeof(*mac_dev); +} + +extern const char *mac_driver_description; +extern const size_t mac_sizeof_priv[]; +extern void (*const mac_setup[])(struct mac_device *mac_dev); + +#endif /* __MAC_H */ --- linux-3.13.0.orig/drivers/net/dpa/offline_port.c +++ linux-3.13.0/drivers/net/dpa/offline_port.c @@ -0,0 +1,340 @@ +/* + * Copyright 2011 Freescale Semiconductor Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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. + */ + +/* + * Offline Parsing / Host Command port driver for FSL QorIQ FMan. + * Validates device-tree configuration and sets up the offline ports. + */ + +#include +#include +#include + +#include "offline_port.h" +#include "dpaa_eth-common.h" + +#define OH_MOD_DESCRIPTION "FSL FMan Offline Parsing port driver" + +MODULE_LICENSE("Dual BSD/GPL"); +MODULE_AUTHOR("Bogdan Hamciuc "); +MODULE_DESCRIPTION(OH_MOD_DESCRIPTION); + + +static const struct of_device_id oh_port_match_table[] = { + { + .compatible = "fsl,dpa-oh" + }, + { + .compatible = "fsl,dpa-oh-shared" + }, + {} +}; +MODULE_DEVICE_TABLE(of, oh_port_match_table); + +static int oh_port_remove(struct platform_device *_of_dev); +static int oh_port_probe(struct platform_device *_of_dev); + +static struct platform_driver oh_port_driver = { + .driver = { + .name = KBUILD_MODNAME, + .of_match_table = oh_port_match_table, + .owner = THIS_MODULE, + }, + .probe = oh_port_probe, + .remove = oh_port_remove, +}; + +/* Allocation code for the OH port's PCD frame queues */ +static int __cold oh_alloc_pcd_fqids(struct device *dev, + uint32_t num, + uint8_t alignment, + uint32_t *base_fqid) +{ + cpu_dev_crit(dev, "callback not implemented!\n"); + BUG(); + + return 0; +} + +static int __cold oh_free_pcd_fqids(struct device *dev, uint32_t base_fqid) +{ + dpaa_eth_crit(dev, "callback not implemented!\n"); + BUG(); + + return 0; +} + +static int +oh_port_probe(struct platform_device *_of_dev) +{ + struct device *dpa_oh_dev; + struct device_node *dpa_oh_node; + int lenp, _errno = 0, fq_idx; + const phandle *oh_port_handle; + struct platform_device *oh_of_dev; + struct device_node *oh_node; + struct device *oh_dev; + struct dpa_oh_config_s *oh_config; + uint32_t *oh_all_queues; + uint32_t queues_count; + uint32_t crt_fqid_base; + uint32_t crt_fq_count; + struct fm_port_non_rx_params oh_port_tx_params; + struct fm_port_pcd_param oh_port_pcd_params; + /* True if the current partition owns the OH port. */ + bool init_oh_port; + const struct of_device_id *match; + + dpa_oh_dev = &_of_dev->dev; + dpa_oh_node = dpa_oh_dev->of_node; + BUG_ON(dpa_oh_node == NULL); + + match = of_match_device(oh_port_match_table, dpa_oh_dev); + if (!match) + return -EINVAL; + + cpu_dev_dbg(dpa_oh_dev, "Probing OH port...\n"); + + /* + * Find the referenced OH node + */ + + oh_port_handle = of_get_property(dpa_oh_node, + "fsl,fman-oh-port", &lenp); + if (oh_port_handle == NULL) { + cpu_dev_err(dpa_oh_dev, "No OH port handle found in node %s\n", + dpa_oh_node->full_name); + return -EINVAL; + } + + BUG_ON(lenp % sizeof(*oh_port_handle)); + if (lenp != sizeof(*oh_port_handle)) { + cpu_dev_err(dpa_oh_dev, "Found %lu OH port bindings in node %s, " + "only 1 phandle is allowed.\n", + (unsigned long int)(lenp / sizeof(*oh_port_handle)), dpa_oh_node->full_name); + return -EINVAL; + } + + /* Read configuration for the OH port */ + oh_node = of_find_node_by_phandle(*oh_port_handle); + if (oh_node == NULL) { + cpu_dev_err(dpa_oh_dev, "Can't find OH node referenced from " + "node %s\n", dpa_oh_node->full_name); + return -EINVAL; + } + cpu_dev_info(dpa_oh_dev, "Found OH node handle compatible with %s.\n", + match->compatible); + + oh_of_dev = of_find_device_by_node(oh_node); + BUG_ON(oh_of_dev == NULL); + oh_dev = &oh_of_dev->dev; + of_node_put(oh_node); + + /* + * The OH port must be initialized exactly once. + * The following scenarios are of interest: + * - the node is Linux-private (will always initialize it); + * - the node is shared between two Linux partitions + * (only one of them will initialize it); + * - the node is shared between a Linux and a LWE partition + * (Linux will initialize it) - "fsl,dpa-oh-shared" + */ + + /* Check if the current partition owns the OH port + * and ought to initialize it. It may be the case that we leave this + * to another (also Linux) partition. */ + init_oh_port = strcmp(match->compatible, "fsl,dpa-oh-shared"); + + /* If we aren't the "owner" of the OH node, we're done here. */ + if (!init_oh_port) { + cpu_dev_dbg(dpa_oh_dev, "Not owning the shared OH port %s, " + "will not initialize it.\n", oh_node->full_name); + return 0; + } + + /* Allocate OH dev private data */ + oh_config = devm_kzalloc(dpa_oh_dev, sizeof(*oh_config), GFP_KERNEL); + if (oh_config == NULL) { + cpu_dev_err(dpa_oh_dev, "Can't allocate private data for " + "OH node %s referenced from node %s!\n", + oh_node->full_name, dpa_oh_node->full_name); + return -ENOMEM; + } + + /* + * Read FQ ids/nums for the DPA OH node + */ + oh_all_queues = (uint32_t *)of_get_property(dpa_oh_node, + "fsl,qman-frame-queues-oh", &lenp); + if (oh_all_queues == NULL) { + cpu_dev_err(dpa_oh_dev, "No frame queues have been " + "defined for OH node %s referenced from node %s\n", + oh_node->full_name, dpa_oh_node->full_name); + _errno = -EINVAL; + goto return_kfree; + } + + /* Check that the OH error and default FQs are there */ + BUG_ON(lenp % (2 * sizeof(*oh_all_queues))); + queues_count = lenp / (2 * sizeof(*oh_all_queues)); + if (queues_count != 2) { + dpaa_eth_err(dpa_oh_dev, "Error and Default queues must be " + "defined for OH node %s referenced from node %s\n", + oh_node->full_name, dpa_oh_node->full_name); + _errno = -EINVAL; + goto return_kfree; + } + + /* Read the FQIDs defined for this OH port */ + cpu_dev_dbg(dpa_oh_dev, "Reading %d queues...\n", queues_count); + fq_idx = 0; + + /* Error FQID - must be present */ + crt_fqid_base = oh_all_queues[fq_idx++]; + crt_fq_count = oh_all_queues[fq_idx++]; + if (crt_fq_count != 1) { + cpu_dev_err(dpa_oh_dev, "Only 1 Error FQ allowed in OH node %s " + "referenced from node %s (read: %d FQIDs).\n", + oh_node->full_name, dpa_oh_node->full_name, + crt_fq_count); + _errno = -EINVAL; + goto return_kfree; + } + oh_config->error_fqid = crt_fqid_base; + cpu_dev_dbg(dpa_oh_dev, "Read Error FQID 0x%x for OH port %s.\n", + oh_config->error_fqid, oh_node->full_name); + + /* Default FQID - must be present */ + crt_fqid_base = oh_all_queues[fq_idx++]; + crt_fq_count = oh_all_queues[fq_idx++]; + if (crt_fq_count != 1) { + cpu_dev_err(dpa_oh_dev, "Only 1 Default FQ allowed " + "in OH node %s referenced from %s (read: %d FQIDs).\n", + oh_node->full_name, dpa_oh_node->full_name, + crt_fq_count); + _errno = -EINVAL; + goto return_kfree; + } + oh_config->default_fqid = crt_fqid_base; + cpu_dev_dbg(dpa_oh_dev, "Read Default FQID 0x%x for OH port %s.\n", + oh_config->default_fqid, oh_node->full_name); + + /* Get a handle to the fm_port so we can set + * its configuration params */ + oh_config->oh_port = fm_port_bind(oh_dev); + if (oh_config->oh_port == NULL) { + cpu_dev_err(dpa_oh_dev, "NULL drvdata from fm port dev %s!\n", + oh_node->full_name); + _errno = -EINVAL; + goto return_kfree; + } + + /* Set Tx params */ + dpaa_eth_init_port(tx, oh_config->oh_port, oh_port_tx_params, + oh_config->error_fqid, oh_config->default_fqid, FALSE); + /* Set PCD params */ + oh_port_pcd_params.cba = oh_alloc_pcd_fqids; + oh_port_pcd_params.cbf = oh_free_pcd_fqids; + oh_port_pcd_params.dev = dpa_oh_dev; + fm_port_pcd_bind(oh_config->oh_port, &oh_port_pcd_params); + + dev_set_drvdata(dpa_oh_dev, oh_config); + + /* Enable the OH port */ + fm_port_enable(oh_config->oh_port); + cpu_dev_info(dpa_oh_dev, "OH port %s enabled.\n", oh_node->full_name); + + return 0; + +return_kfree: + devm_kfree(dpa_oh_dev, oh_config); + return _errno; +} + +static int __cold oh_port_remove(struct platform_device *_of_dev) +{ + int _errno = 0; + struct dpa_oh_config_s *oh_config; + + cpu_pr_info("Removing OH port...\n"); + + oh_config = dev_get_drvdata(&_of_dev->dev); + if (oh_config == NULL) { + cpu_pr_err(KBUILD_MODNAME + ": %s:%hu:%s(): No OH config in device private data!\n", + __file__, __LINE__, __func__); + _errno = -ENODEV; + goto return_error; + } + if (oh_config->oh_port == NULL) { + cpu_pr_err(KBUILD_MODNAME + ": %s:%hu:%s(): No fm port in device private data!\n", + __file__, __LINE__, __func__); + _errno = -EINVAL; + goto return_error; + } + + fm_port_disable(oh_config->oh_port); + devm_kfree(&_of_dev->dev, oh_config); + dev_set_drvdata(&_of_dev->dev, NULL); + +return_error: + return _errno; +} + +static int __init __cold oh_port_load(void) +{ + int _errno; + + cpu_pr_info(KBUILD_MODNAME ": " OH_MOD_DESCRIPTION " (" VERSION ")\n"); + + _errno = platform_driver_register(&oh_port_driver); + if (_errno < 0) { + cpu_pr_err(KBUILD_MODNAME + ": %s:%hu:%s(): platform_driver_register() = %d\n", + __file__, __LINE__, __func__, _errno); + } + + cpu_pr_debug(KBUILD_MODNAME ": %s:%s() ->\n", __file__, __func__); + return _errno; +} +module_init(oh_port_load); + +static void __exit __cold oh_port_unload(void) +{ + cpu_pr_debug(KBUILD_MODNAME ": -> %s:%s()\n", __file__, __func__); + + platform_driver_unregister(&oh_port_driver); + + cpu_pr_debug(KBUILD_MODNAME ": %s:%s() ->\n", __file__, __func__); +} +module_exit(oh_port_unload); --- linux-3.13.0.orig/drivers/net/dpa/offline_port.h +++ linux-3.13.0/drivers/net/dpa/offline_port.h @@ -0,0 +1,45 @@ +/* + * Copyright 2011 Freescale Semiconductor Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 __OFFLINE_PORT_H +#define __OFFLINE_PORT_H + +#include "fsl_fman.h" + +/* OH port configuration */ +struct dpa_oh_config_s { + uint32_t error_fqid; + uint32_t default_fqid; + struct fm_port *oh_port; +}; + +#endif /* __OFFLINE_PORT_H */ --- linux-3.13.0.orig/drivers/net/dummy.c +++ linux-3.13.0/drivers/net/dummy.c @@ -63,10 +63,10 @@ dstats = per_cpu_ptr(dev->dstats, i); do { - start = u64_stats_fetch_begin_bh(&dstats->syncp); + start = u64_stats_fetch_begin_irq(&dstats->syncp); tbytes = dstats->tx_bytes; tpackets = dstats->tx_packets; - } while (u64_stats_fetch_retry_bh(&dstats->syncp, start)); + } while (u64_stats_fetch_retry_irq(&dstats->syncp, start)); stats->tx_bytes += tbytes; stats->tx_packets += tpackets; } --- linux-3.13.0.orig/drivers/net/ethernet/Kconfig +++ linux-3.13.0/drivers/net/ethernet/Kconfig @@ -23,6 +23,7 @@ source "drivers/net/ethernet/allwinner/Kconfig" source "drivers/net/ethernet/alteon/Kconfig" source "drivers/net/ethernet/amd/Kconfig" +source "drivers/net/ethernet/apm/Kconfig" source "drivers/net/ethernet/apple/Kconfig" source "drivers/net/ethernet/arc/Kconfig" source "drivers/net/ethernet/atheros/Kconfig" --- linux-3.13.0.orig/drivers/net/ethernet/Makefile +++ linux-3.13.0/drivers/net/ethernet/Makefile @@ -9,6 +9,7 @@ obj-$(CONFIG_NET_VENDOR_ALLWINNER) += allwinner/ obj-$(CONFIG_NET_VENDOR_ALTEON) += alteon/ obj-$(CONFIG_NET_VENDOR_AMD) += amd/ +obj-$(CONFIG_NET_XGENE) += apm/ obj-$(CONFIG_NET_VENDOR_APPLE) += apple/ obj-$(CONFIG_NET_VENDOR_ARC) += arc/ obj-$(CONFIG_NET_VENDOR_ATHEROS) += atheros/ --- linux-3.13.0.orig/drivers/net/ethernet/allwinner/sun4i-emac.c +++ linux-3.13.0/drivers/net/ethernet/allwinner/sun4i-emac.c @@ -623,8 +623,10 @@ } /* Move data from EMAC */ - skb = dev_alloc_skb(rxlen + 4); - if (good_packet && skb) { + if (good_packet) { + skb = netdev_alloc_skb(dev, rxlen + 4); + if (!skb) + continue; skb_reserve(skb, 2); rdptr = (u8 *) skb_put(skb, rxlen - 4); @@ -726,6 +728,7 @@ ret = emac_mdio_probe(dev); if (ret < 0) { + free_irq(dev->irq, dev); netdev_err(dev, "cannot probe MDIO bus\n"); return ret; } --- linux-3.13.0.orig/drivers/net/ethernet/amd/pcnet32.c +++ linux-3.13.0/drivers/net/ethernet/amd/pcnet32.c @@ -1516,7 +1516,7 @@ { struct pcnet32_private *lp; int i, media; - int fdx, mii, fset, dxsuflo; + int fdx, mii, fset, dxsuflo, sram; int chip_version; char *chipname; struct net_device *dev; @@ -1553,7 +1553,7 @@ } /* initialize variables */ - fdx = mii = fset = dxsuflo = 0; + fdx = mii = fset = dxsuflo = sram = 0; chip_version = (chip_version >> 12) & 0xffff; switch (chip_version) { @@ -1586,6 +1586,7 @@ chipname = "PCnet/FAST III 79C973"; /* PCI */ fdx = 1; mii = 1; + sram = 1; break; case 0x2626: chipname = "PCnet/Home 79C978"; /* PCI */ @@ -1609,6 +1610,7 @@ chipname = "PCnet/FAST III 79C975"; /* PCI */ fdx = 1; mii = 1; + sram = 1; break; case 0x2628: chipname = "PCnet/PRO 79C976"; @@ -1637,6 +1639,31 @@ dxsuflo = 1; } + /* + * The Am79C973/Am79C975 controllers come with 12K of SRAM + * which we can use for the Tx/Rx buffers but most importantly, + * the use of SRAM allow us to use the BCR18:NOUFLO bit to avoid + * Tx fifo underflows. + */ + if (sram) { + /* + * The SRAM is being configured in two steps. First we + * set the SRAM size in the BCR25:SRAM_SIZE bits. According + * to the datasheet, each bit corresponds to a 512-byte + * page so we can have at most 24 pages. The SRAM_SIZE + * holds the value of the upper 8 bits of the 16-bit SRAM size. + * The low 8-bits start at 0x00 and end at 0xff. So the + * address range is from 0x0000 up to 0x17ff. Therefore, + * the SRAM_SIZE is set to 0x17. The next step is to set + * the BCR26:SRAM_BND midway through so the Tx and Rx + * buffers can share the SRAM equally. + */ + a->write_bcr(ioaddr, 25, 0x17); + a->write_bcr(ioaddr, 26, 0xc); + /* And finally enable the NOUFLO bit */ + a->write_bcr(ioaddr, 18, a->read_bcr(ioaddr, 18) | (1 << 11)); + } + dev = alloc_etherdev(sizeof(*lp)); if (!dev) { ret = -ENOMEM; --- linux-3.13.0.orig/drivers/net/ethernet/apm/Kconfig +++ linux-3.13.0/drivers/net/ethernet/apm/Kconfig @@ -0,0 +1 @@ +source "drivers/net/ethernet/apm/xgene/Kconfig" --- linux-3.13.0.orig/drivers/net/ethernet/apm/Makefile +++ linux-3.13.0/drivers/net/ethernet/apm/Makefile @@ -0,0 +1,5 @@ +# +# Makefile for APM X-GENE Ethernet driver. +# + +obj-$(CONFIG_NET_XGENE) += xgene/ --- linux-3.13.0.orig/drivers/net/ethernet/apm/xgene/Kconfig +++ linux-3.13.0/drivers/net/ethernet/apm/xgene/Kconfig @@ -0,0 +1,9 @@ +config NET_XGENE + tristate "APM X-Gene SoC Ethernet Driver" + select PHYLIB + help + This is the Ethernet driver for the on-chip ethernet interface on the + APM X-Gene SoC. + + To compile this driver as a module, choose M here. This module will + be called xgene_enet. --- linux-3.13.0.orig/drivers/net/ethernet/apm/xgene/Makefile +++ linux-3.13.0/drivers/net/ethernet/apm/xgene/Makefile @@ -0,0 +1,7 @@ +# +# Makefile for APM X-Gene Ethernet Driver. +# + +xgene-enet-objs := xgene_enet_hw.o xgene_enet_sgmac.o xgene_enet_xgmac.o \ + xgene_enet_main.o xgene_enet_ethtool.o +obj-$(CONFIG_NET_XGENE) += xgene-enet.o --- linux-3.13.0.orig/drivers/net/ethernet/apm/xgene/xgene_enet_ethtool.c +++ linux-3.13.0/drivers/net/ethernet/apm/xgene/xgene_enet_ethtool.c @@ -0,0 +1,150 @@ +/* Applied Micro X-Gene SoC Ethernet Driver + * + * Copyright (c) 2014, Applied Micro Circuits Corporation + * Authors: Iyappan Subramanian + * + * 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 . + */ + +#include +#include "xgene_enet_main.h" + +struct xgene_gstrings_stats { + char name[ETH_GSTRING_LEN]; + int offset; +}; + +#define XGENE_STAT(m) { #m, offsetof(struct xgene_enet_pdata, stats.m) } + +static const struct xgene_gstrings_stats gstrings_stats[] = { + XGENE_STAT(rx_packets), + XGENE_STAT(tx_packets), + XGENE_STAT(rx_bytes), + XGENE_STAT(tx_bytes), + XGENE_STAT(rx_errors), + XGENE_STAT(tx_errors), + XGENE_STAT(rx_length_errors), + XGENE_STAT(rx_crc_errors), + XGENE_STAT(rx_frame_errors), + XGENE_STAT(rx_fifo_errors) +}; + +#define XGENE_STATS_LEN ARRAY_SIZE(gstrings_stats) + +static void xgene_get_drvinfo(struct net_device *ndev, + struct ethtool_drvinfo *info) +{ + struct xgene_enet_pdata *pdata = netdev_priv(ndev); + struct platform_device *pdev = pdata->pdev; + + strcpy(info->driver, "xgene_enet"); + strcpy(info->version, XGENE_DRV_VERSION); + snprintf(info->fw_version, ETHTOOL_FWVERS_LEN, "N/A"); + sprintf(info->bus_info, "%s", pdev->name); +} + +static int xgene_get_settings(struct net_device *ndev, struct ethtool_cmd *cmd) +{ + struct xgene_enet_pdata *pdata = netdev_priv(ndev); + struct phy_device *phydev = pdata->phy_dev; + + if (pdata->phy_mode == PHY_INTERFACE_MODE_RGMII) { + if (phydev == NULL) + return -ENODEV; + + return phy_ethtool_gset(phydev, cmd); + } else if (pdata->phy_mode == PHY_INTERFACE_MODE_SGMII) { + cmd->supported = SUPPORTED_1000baseT_Full | + SUPPORTED_Autoneg | SUPPORTED_MII; + cmd->advertising = cmd->supported; + ethtool_cmd_speed_set(cmd, SPEED_1000); + cmd->duplex = DUPLEX_FULL; + cmd->port = PORT_MII; + cmd->transceiver = XCVR_INTERNAL; + cmd->autoneg = AUTONEG_ENABLE; + } else { + cmd->supported = SUPPORTED_10000baseT_Full | SUPPORTED_FIBRE; + cmd->advertising = cmd->supported; + ethtool_cmd_speed_set(cmd, SPEED_10000); + cmd->duplex = DUPLEX_FULL; + cmd->port = PORT_FIBRE; + cmd->transceiver = XCVR_INTERNAL; + cmd->autoneg = AUTONEG_DISABLE; + } + + return 0; +} + +static int xgene_set_settings(struct net_device *ndev, struct ethtool_cmd *cmd) +{ + struct xgene_enet_pdata *pdata = netdev_priv(ndev); + struct phy_device *phydev = pdata->phy_dev; + + if (pdata->phy_mode == PHY_INTERFACE_MODE_RGMII) { + if (phydev == NULL) + return -ENODEV; + + return phy_ethtool_sset(phydev, cmd); + } + + return -EINVAL; +} + +static void xgene_get_strings(struct net_device *ndev, u32 stringset, u8 *data) +{ + int i; + u8 *p = data; + + if (stringset != ETH_SS_STATS) + return; + + for (i = 0; i < XGENE_STATS_LEN; i++) { + memcpy(p, gstrings_stats[i].name, ETH_GSTRING_LEN); + p += ETH_GSTRING_LEN; + } +} + +static int xgene_get_sset_count(struct net_device *ndev, int sset) +{ + if (sset != ETH_SS_STATS) + return -EINVAL; + + return XGENE_STATS_LEN; +} + +static void xgene_get_ethtool_stats(struct net_device *ndev, + struct ethtool_stats *dummy, + u64 *data) +{ + void *pdata = netdev_priv(ndev); + int i; + + for (i = 0; i < XGENE_STATS_LEN; i++) + *data++ = *(u64 *)(pdata + gstrings_stats[i].offset); +} + +static const struct ethtool_ops xgene_ethtool_ops = { + .get_drvinfo = xgene_get_drvinfo, + .get_settings = xgene_get_settings, + .set_settings = xgene_set_settings, + .get_link = ethtool_op_get_link, + .get_strings = xgene_get_strings, + .get_sset_count = xgene_get_sset_count, + .get_ethtool_stats = xgene_get_ethtool_stats +}; + +void xgene_enet_set_ethtool_ops(struct net_device *ndev) +{ + ndev->ethtool_ops = &xgene_ethtool_ops; +} --- linux-3.13.0.orig/drivers/net/ethernet/apm/xgene/xgene_enet_hw.c +++ linux-3.13.0/drivers/net/ethernet/apm/xgene/xgene_enet_hw.c @@ -0,0 +1,759 @@ +/* Applied Micro X-Gene SoC Ethernet Driver + * + * Copyright (c) 2014, Applied Micro Circuits Corporation + * Authors: Iyappan Subramanian + * Ravi Patel + * Keyur Chudgar + * + * 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 . + */ + +#include "xgene_enet_main.h" +#include "xgene_enet_hw.h" + +static void xgene_enet_ring_init(struct xgene_enet_desc_ring *ring) +{ + u32 *ring_cfg = ring->state; + u64 addr = ring->dma; + enum xgene_enet_ring_cfgsize cfgsize = ring->cfgsize; + + ring_cfg[4] |= (1 << SELTHRSH_POS) & + CREATE_MASK(SELTHRSH_POS, SELTHRSH_LEN); + ring_cfg[3] |= ACCEPTLERR; + ring_cfg[2] |= QCOHERENT; + + addr >>= 8; + ring_cfg[2] |= (addr << RINGADDRL_POS) & + CREATE_MASK_ULL(RINGADDRL_POS, RINGADDRL_LEN); + addr >>= RINGADDRL_LEN; + ring_cfg[3] |= addr & CREATE_MASK_ULL(RINGADDRH_POS, RINGADDRH_LEN); + ring_cfg[3] |= ((u32)cfgsize << RINGSIZE_POS) & + CREATE_MASK(RINGSIZE_POS, RINGSIZE_LEN); +} + +static void xgene_enet_ring_set_type(struct xgene_enet_desc_ring *ring) +{ + u32 *ring_cfg = ring->state; + bool is_bufpool; + u32 val; + + is_bufpool = xgene_enet_is_bufpool(ring->id); + val = (is_bufpool) ? RING_BUFPOOL : RING_REGULAR; + ring_cfg[4] |= (val << RINGTYPE_POS) & + CREATE_MASK(RINGTYPE_POS, RINGTYPE_LEN); + + if (is_bufpool) { + ring_cfg[3] |= (BUFPOOL_MODE << RINGMODE_POS) & + CREATE_MASK(RINGMODE_POS, RINGMODE_LEN); + } +} + +static void xgene_enet_ring_set_recombbuf(struct xgene_enet_desc_ring *ring) +{ + u32 *ring_cfg = ring->state; + + ring_cfg[3] |= RECOMBBUF; + ring_cfg[3] |= (0xf << RECOMTIMEOUTL_POS) & + CREATE_MASK(RECOMTIMEOUTL_POS, RECOMTIMEOUTL_LEN); + ring_cfg[4] |= 0x7 & CREATE_MASK(RECOMTIMEOUTH_POS, RECOMTIMEOUTH_LEN); +} + +static void xgene_enet_ring_wr32(struct xgene_enet_desc_ring *ring, + u32 offset, u32 data) +{ + struct xgene_enet_pdata *pdata = netdev_priv(ring->ndev); + + iowrite32(data, pdata->ring_csr_addr + offset); +} + +static void xgene_enet_ring_rd32(struct xgene_enet_desc_ring *ring, + u32 offset, u32 *data) +{ + struct xgene_enet_pdata *pdata = netdev_priv(ring->ndev); + + *data = ioread32(pdata->ring_csr_addr + offset); +} + +static void xgene_enet_write_ring_state(struct xgene_enet_desc_ring *ring) +{ + int i; + + xgene_enet_ring_wr32(ring, CSR_RING_CONFIG, ring->num); + for (i = 0; i < NUM_RING_CONFIG; i++) { + xgene_enet_ring_wr32(ring, CSR_RING_WR_BASE + (i * 4), + ring->state[i]); + } +} + +static void xgene_enet_clr_ring_state(struct xgene_enet_desc_ring *ring) +{ + memset(ring->state, 0, sizeof(u32) * NUM_RING_CONFIG); + xgene_enet_write_ring_state(ring); +} + +static void xgene_enet_set_ring_state(struct xgene_enet_desc_ring *ring) +{ + xgene_enet_ring_set_type(ring); + + if (xgene_enet_ring_owner(ring->id) == RING_OWNER_ETH0) + xgene_enet_ring_set_recombbuf(ring); + + xgene_enet_ring_init(ring); + xgene_enet_write_ring_state(ring); +} + +static void xgene_enet_set_ring_id(struct xgene_enet_desc_ring *ring) +{ + u32 ring_id_val, ring_id_buf; + bool is_bufpool; + + is_bufpool = xgene_enet_is_bufpool(ring->id); + + ring_id_val = ring->id & GENMASK(9, 0); + ring_id_val |= OVERWRITE; + + ring_id_buf = (ring->num << 9) & GENMASK(18, 9); + ring_id_buf |= PREFETCH_BUF_EN; + if (is_bufpool) + ring_id_buf |= IS_BUFFER_POOL; + + xgene_enet_ring_wr32(ring, CSR_RING_ID, ring_id_val); + xgene_enet_ring_wr32(ring, CSR_RING_ID_BUF, ring_id_buf); +} + +static void xgene_enet_clr_desc_ring_id(struct xgene_enet_desc_ring *ring) +{ + u32 ring_id; + + ring_id = ring->id | OVERWRITE; + xgene_enet_ring_wr32(ring, CSR_RING_ID, ring_id); + xgene_enet_ring_wr32(ring, CSR_RING_ID_BUF, 0); +} + +struct xgene_enet_desc_ring *xgene_enet_setup_ring( + struct xgene_enet_desc_ring *ring) +{ + u32 size = ring->size; + u32 i, data; + bool is_bufpool; + + xgene_enet_clr_ring_state(ring); + xgene_enet_set_ring_state(ring); + xgene_enet_set_ring_id(ring); + + ring->slots = xgene_enet_get_numslots(ring->id, size); + + is_bufpool = xgene_enet_is_bufpool(ring->id); + if (is_bufpool || xgene_enet_ring_owner(ring->id) != RING_OWNER_CPU) + return ring; + + for (i = 0; i < ring->slots; i++) + xgene_enet_mark_desc_slot_empty(&ring->raw_desc[i]); + + xgene_enet_ring_rd32(ring, CSR_RING_NE_INT_MODE, &data); + data |= BIT(31 - xgene_enet_ring_bufnum(ring->id)); + xgene_enet_ring_wr32(ring, CSR_RING_NE_INT_MODE, data); + + return ring; +} + +void xgene_enet_clear_ring(struct xgene_enet_desc_ring *ring) +{ + u32 data; + bool is_bufpool; + + is_bufpool = xgene_enet_is_bufpool(ring->id); + if (is_bufpool || xgene_enet_ring_owner(ring->id) != RING_OWNER_CPU) + goto out; + + xgene_enet_ring_rd32(ring, CSR_RING_NE_INT_MODE, &data); + data &= ~BIT(31 - xgene_enet_ring_bufnum(ring->id)); + xgene_enet_ring_wr32(ring, CSR_RING_NE_INT_MODE, data); + +out: + xgene_enet_clr_desc_ring_id(ring); + xgene_enet_clr_ring_state(ring); +} + +void xgene_enet_parse_error(struct xgene_enet_desc_ring *ring, + struct xgene_enet_pdata *pdata, + enum xgene_enet_err_code status) +{ + struct rtnl_link_stats64 *stats = &pdata->stats; + + switch (status) { + case INGRESS_CRC: + stats->rx_crc_errors++; + break; + case INGRESS_CHECKSUM: + case INGRESS_CHECKSUM_COMPUTE: + stats->rx_errors++; + break; + case INGRESS_TRUNC_FRAME: + stats->rx_frame_errors++; + break; + case INGRESS_PKT_LEN: + stats->rx_length_errors++; + break; + case INGRESS_PKT_UNDER: + stats->rx_frame_errors++; + break; + case INGRESS_FIFO_OVERRUN: + stats->rx_fifo_errors++; + break; + default: + break; + } +} + +static void xgene_enet_wr_csr(struct xgene_enet_pdata *pdata, + u32 offset, u32 val) +{ + void __iomem *addr = pdata->eth_csr_addr + offset; + + iowrite32(val, addr); +} + +static void xgene_enet_wr_ring_if(struct xgene_enet_pdata *pdata, + u32 offset, u32 val) +{ + void __iomem *addr = pdata->eth_ring_if_addr + offset; + + iowrite32(val, addr); +} + +static void xgene_enet_wr_diag_csr(struct xgene_enet_pdata *pdata, + u32 offset, u32 val) +{ + void __iomem *addr = pdata->eth_diag_csr_addr + offset; + + iowrite32(val, addr); +} + +static void xgene_enet_wr_mcx_csr(struct xgene_enet_pdata *pdata, + u32 offset, u32 val) +{ + void __iomem *addr = pdata->mcx_mac_csr_addr + offset; + + iowrite32(val, addr); +} + +static bool xgene_enet_wr_indirect(void __iomem *addr, void __iomem *wr, + void __iomem *cmd, void __iomem *cmd_done, + u32 wr_addr, u32 wr_data) +{ + u32 done; + u8 wait = 10; + + iowrite32(wr_addr, addr); + iowrite32(wr_data, wr); + iowrite32(XGENE_ENET_WR_CMD, cmd); + + /* wait for write command to complete */ + while (!(done = ioread32(cmd_done)) && wait--) + udelay(1); + + if (!done) + return false; + + iowrite32(0, cmd); + + return true; +} + +static void xgene_enet_wr_mcx_mac(struct xgene_enet_pdata *pdata, + u32 wr_addr, u32 wr_data) +{ + void __iomem *addr, *wr, *cmd, *cmd_done; + + addr = pdata->mcx_mac_addr + MAC_ADDR_REG_OFFSET; + wr = pdata->mcx_mac_addr + MAC_WRITE_REG_OFFSET; + cmd = pdata->mcx_mac_addr + MAC_COMMAND_REG_OFFSET; + cmd_done = pdata->mcx_mac_addr + MAC_COMMAND_DONE_REG_OFFSET; + + if (!xgene_enet_wr_indirect(addr, wr, cmd, cmd_done, wr_addr, wr_data)) + netdev_err(pdata->ndev, "MCX mac write failed, addr: %04x\n", + wr_addr); +} + +static void xgene_enet_rd_csr(struct xgene_enet_pdata *pdata, + u32 offset, u32 *val) +{ + void __iomem *addr = pdata->eth_csr_addr + offset; + + *val = ioread32(addr); +} + +static void xgene_enet_rd_diag_csr(struct xgene_enet_pdata *pdata, + u32 offset, u32 *val) +{ + void __iomem *addr = pdata->eth_diag_csr_addr + offset; + + *val = ioread32(addr); +} + +static void xgene_enet_rd_mcx_csr(struct xgene_enet_pdata *pdata, + u32 offset, u32 *val) +{ + void __iomem *addr = pdata->mcx_mac_csr_addr + offset; + + *val = ioread32(addr); +} + +static bool xgene_enet_rd_indirect(void __iomem *addr, void __iomem *rd, + void __iomem *cmd, void __iomem *cmd_done, + u32 rd_addr, u32 *rd_data) +{ + u32 done; + u8 wait = 10; + + iowrite32(rd_addr, addr); + iowrite32(XGENE_ENET_RD_CMD, cmd); + + /* wait for read command to complete */ + while (!(done = ioread32(cmd_done)) && wait--) + udelay(1); + + if (!done) + return false; + + *rd_data = ioread32(rd); + iowrite32(0, cmd); + + return true; +} + +static void xgene_enet_rd_mcx_mac(struct xgene_enet_pdata *pdata, + u32 rd_addr, u32 *rd_data) +{ + void __iomem *addr, *rd, *cmd, *cmd_done; + + addr = pdata->mcx_mac_addr + MAC_ADDR_REG_OFFSET; + rd = pdata->mcx_mac_addr + MAC_READ_REG_OFFSET; + cmd = pdata->mcx_mac_addr + MAC_COMMAND_REG_OFFSET; + cmd_done = pdata->mcx_mac_addr + MAC_COMMAND_DONE_REG_OFFSET; + + if (!xgene_enet_rd_indirect(addr, rd, cmd, cmd_done, rd_addr, rd_data)) + netdev_err(pdata->ndev, "MCX mac read failed, addr: %04x\n", + rd_addr); +} + +static int xgene_mii_phy_write(struct xgene_enet_pdata *pdata, int phy_id, + u32 reg, u16 data) +{ + u32 addr = 0, wr_data = 0; + u32 done; + u8 wait = 10; + + PHY_ADDR_SET(&addr, phy_id); + REG_ADDR_SET(&addr, reg); + xgene_enet_wr_mcx_mac(pdata, MII_MGMT_ADDRESS_ADDR, addr); + + PHY_CONTROL_SET(&wr_data, data); + xgene_enet_wr_mcx_mac(pdata, MII_MGMT_CONTROL_ADDR, wr_data); + do { + usleep_range(5, 10); + xgene_enet_rd_mcx_mac(pdata, MII_MGMT_INDICATORS_ADDR, &done); + } while ((done & BUSY_MASK) && wait--); + + if (done & BUSY_MASK) { + netdev_err(pdata->ndev, "MII_MGMT write failed\n"); + return -EBUSY; + } + + return 0; +} + +static int xgene_mii_phy_read(struct xgene_enet_pdata *pdata, + u8 phy_id, u32 reg) +{ + u32 addr = 0; + u32 data, done; + u8 wait = 10; + + PHY_ADDR_SET(&addr, phy_id); + REG_ADDR_SET(&addr, reg); + xgene_enet_wr_mcx_mac(pdata, MII_MGMT_ADDRESS_ADDR, addr); + xgene_enet_wr_mcx_mac(pdata, MII_MGMT_COMMAND_ADDR, READ_CYCLE_MASK); + do { + usleep_range(5, 10); + xgene_enet_rd_mcx_mac(pdata, MII_MGMT_INDICATORS_ADDR, &done); + } while ((done & BUSY_MASK) && wait--); + + if (done & BUSY_MASK) { + netdev_err(pdata->ndev, "MII_MGMT read failed\n"); + return -EBUSY; + } + + xgene_enet_rd_mcx_mac(pdata, MII_MGMT_STATUS_ADDR, &data); + xgene_enet_wr_mcx_mac(pdata, MII_MGMT_COMMAND_ADDR, 0); + + return data; +} + +static void xgene_gmac_set_mac_addr(struct xgene_enet_pdata *pdata) +{ + u32 addr0, addr1; + u8 *dev_addr = pdata->ndev->dev_addr; + + addr0 = (dev_addr[3] << 24) | (dev_addr[2] << 16) | + (dev_addr[1] << 8) | dev_addr[0]; + addr1 = (dev_addr[5] << 24) | (dev_addr[4] << 16); + + xgene_enet_wr_mcx_mac(pdata, STATION_ADDR0_ADDR, addr0); + xgene_enet_wr_mcx_mac(pdata, STATION_ADDR1_ADDR, addr1); +} + +static int xgene_enet_ecc_init(struct xgene_enet_pdata *pdata) +{ + struct net_device *ndev = pdata->ndev; + u32 data; + u8 wait = 10; + + xgene_enet_wr_diag_csr(pdata, ENET_CFG_MEM_RAM_SHUTDOWN_ADDR, 0x0); + do { + usleep_range(100, 110); + xgene_enet_rd_diag_csr(pdata, ENET_BLOCK_MEM_RDY_ADDR, &data); + } while ((data != 0xffffffff) && wait--); + + if (data != 0xffffffff) { + netdev_err(ndev, "Failed to release memory from shutdown\n"); + return -ENODEV; + } + + return 0; +} + +static void xgene_gmac_reset(struct xgene_enet_pdata *pdata) +{ + xgene_enet_wr_mcx_mac(pdata, MAC_CONFIG_1_ADDR, SOFT_RESET1); + xgene_enet_wr_mcx_mac(pdata, MAC_CONFIG_1_ADDR, 0); +} + +static void xgene_gmac_init(struct xgene_enet_pdata *pdata) +{ + u32 value, mc2; + u32 intf_ctl, rgmii; + u32 icm0, icm2; + + xgene_gmac_reset(pdata); + + xgene_enet_rd_mcx_csr(pdata, ICM_CONFIG0_REG_0_ADDR, &icm0); + xgene_enet_rd_mcx_csr(pdata, ICM_CONFIG2_REG_0_ADDR, &icm2); + xgene_enet_rd_mcx_mac(pdata, MAC_CONFIG_2_ADDR, &mc2); + xgene_enet_rd_mcx_mac(pdata, INTERFACE_CONTROL_ADDR, &intf_ctl); + xgene_enet_rd_csr(pdata, RGMII_REG_0_ADDR, &rgmii); + + switch (pdata->phy_speed) { + case SPEED_10: + ENET_INTERFACE_MODE2_SET(&mc2, 1); + 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_LHD_MODE; + CFG_MACMODE_SET(&icm0, 1); + CFG_WAITASYNCRD_SET(&icm2, 80); + rgmii &= ~CFG_SPEED_1250; + break; + default: + ENET_INTERFACE_MODE2_SET(&mc2, 2); + intf_ctl |= ENET_GHD_MODE; + CFG_TXCLK_MUXSEL0_SET(&rgmii, 4); + 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; + xgene_enet_wr_mcx_mac(pdata, MAC_CONFIG_2_ADDR, mc2); + xgene_enet_wr_mcx_mac(pdata, INTERFACE_CONTROL_ADDR, intf_ctl); + + xgene_gmac_set_mac_addr(pdata); + + /* Adjust MDC clock frequency */ + xgene_enet_rd_mcx_mac(pdata, MII_MGMT_CONFIG_ADDR, &value); + MGMT_CLOCK_SEL_SET(&value, 7); + xgene_enet_wr_mcx_mac(pdata, MII_MGMT_CONFIG_ADDR, value); + + /* Enable drop if bufpool not available */ + xgene_enet_rd_csr(pdata, RSIF_CONFIG_REG_ADDR, &value); + value |= CFG_RSIF_FPBUFF_TIMEOUT_EN; + xgene_enet_wr_csr(pdata, RSIF_CONFIG_REG_ADDR, value); + + /* 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); + + /* Rx-Tx traffic resume */ + xgene_enet_wr_csr(pdata, CFG_LINK_AGGR_RESUME_0_ADDR, TX_PORT0); + + xgene_enet_wr_mcx_csr(pdata, ICM_CONFIG0_REG_0_ADDR, icm0); + xgene_enet_wr_mcx_csr(pdata, ICM_CONFIG2_REG_0_ADDR, icm2); + + xgene_enet_rd_mcx_csr(pdata, RX_DV_GATE_REG_0_ADDR, &value); + value &= ~TX_DV_GATE_EN0; + value &= ~RX_DV_GATE_EN0; + value |= RESUME_RX0; + xgene_enet_wr_mcx_csr(pdata, RX_DV_GATE_REG_0_ADDR, value); + + xgene_enet_wr_csr(pdata, CFG_BYPASS_ADDR, RESUME_TX); +} + +static void xgene_enet_config_ring_if_assoc(struct xgene_enet_pdata *pdata) +{ + u32 val = 0xffffffff; + + xgene_enet_wr_ring_if(pdata, ENET_CFGSSQMIWQASSOC_ADDR, val); + xgene_enet_wr_ring_if(pdata, ENET_CFGSSQMIFPQASSOC_ADDR, val); + xgene_enet_wr_ring_if(pdata, ENET_CFGSSQMIQMLITEWQASSOC_ADDR, val); + xgene_enet_wr_ring_if(pdata, ENET_CFGSSQMIQMLITEFPQASSOC_ADDR, val); +} + +static void xgene_enet_cle_bypass(struct xgene_enet_pdata *pdata, + u32 dst_ring_num, u16 bufpool_id) +{ + u32 cb; + u32 fpsel; + + fpsel = xgene_enet_ring_bufnum(bufpool_id) - 0x20; + + xgene_enet_rd_csr(pdata, CLE_BYPASS_REG0_0_ADDR, &cb); + cb |= CFG_CLE_BYPASS_EN0; + CFG_CLE_IP_PROTOCOL0_SET(&cb, 3); + xgene_enet_wr_csr(pdata, CLE_BYPASS_REG0_0_ADDR, cb); + + xgene_enet_rd_csr(pdata, CLE_BYPASS_REG1_0_ADDR, &cb); + CFG_CLE_DSTQID0_SET(&cb, dst_ring_num); + CFG_CLE_FPSEL0_SET(&cb, fpsel); + xgene_enet_wr_csr(pdata, CLE_BYPASS_REG1_0_ADDR, cb); +} + +static void xgene_gmac_rx_enable(struct xgene_enet_pdata *pdata) +{ + u32 data; + + xgene_enet_rd_mcx_mac(pdata, MAC_CONFIG_1_ADDR, &data); + xgene_enet_wr_mcx_mac(pdata, MAC_CONFIG_1_ADDR, data | RX_EN); +} + +static void xgene_gmac_tx_enable(struct xgene_enet_pdata *pdata) +{ + u32 data; + + xgene_enet_rd_mcx_mac(pdata, MAC_CONFIG_1_ADDR, &data); + xgene_enet_wr_mcx_mac(pdata, MAC_CONFIG_1_ADDR, data | TX_EN); +} + +static void xgene_gmac_rx_disable(struct xgene_enet_pdata *pdata) +{ + u32 data; + + xgene_enet_rd_mcx_mac(pdata, MAC_CONFIG_1_ADDR, &data); + xgene_enet_wr_mcx_mac(pdata, MAC_CONFIG_1_ADDR, data & ~RX_EN); +} + +static void xgene_gmac_tx_disable(struct xgene_enet_pdata *pdata) +{ + u32 data; + + xgene_enet_rd_mcx_mac(pdata, MAC_CONFIG_1_ADDR, &data); + xgene_enet_wr_mcx_mac(pdata, MAC_CONFIG_1_ADDR, data & ~TX_EN); +} + +bool xgene_ring_mgr_init(struct xgene_enet_pdata *p) +{ + if (!ioread32(p->ring_csr_addr + CLKEN_ADDR)) + return false; + + if (ioread32(p->ring_csr_addr + SRST_ADDR)) + return false; + + return true; +} + +static int xgene_enet_reset(struct xgene_enet_pdata *pdata) +{ + u32 val; + + if (!xgene_ring_mgr_init(pdata)) + return -ENODEV; + + clk_prepare_enable(pdata->clk); + clk_disable_unprepare(pdata->clk); + clk_prepare_enable(pdata->clk); + xgene_enet_ecc_init(pdata); + xgene_enet_config_ring_if_assoc(pdata); + + /* Enable auto-incr for scanning */ + xgene_enet_rd_mcx_mac(pdata, MII_MGMT_CONFIG_ADDR, &val); + val |= SCAN_AUTO_INCR; + MGMT_CLOCK_SEL_SET(&val, 1); + xgene_enet_wr_mcx_mac(pdata, MII_MGMT_CONFIG_ADDR, val); + + return 0; +} + +static void xgene_gport_shutdown(struct xgene_enet_pdata *pdata) +{ + clk_disable_unprepare(pdata->clk); +} + +static int xgene_enet_mdio_read(struct mii_bus *bus, int mii_id, int regnum) +{ + struct xgene_enet_pdata *pdata = bus->priv; + u32 val; + + val = xgene_mii_phy_read(pdata, mii_id, regnum); + netdev_dbg(pdata->ndev, "mdio_rd: bus=%d reg=%d val=%x\n", + mii_id, regnum, val); + + return val; +} + +static int xgene_enet_mdio_write(struct mii_bus *bus, int mii_id, int regnum, + u16 val) +{ + struct xgene_enet_pdata *pdata = bus->priv; + + netdev_dbg(pdata->ndev, "mdio_wr: bus=%d reg=%d val=%x\n", + mii_id, regnum, val); + return xgene_mii_phy_write(pdata, mii_id, regnum, val); +} + +static void xgene_enet_adjust_link(struct net_device *ndev) +{ + struct xgene_enet_pdata *pdata = netdev_priv(ndev); + struct phy_device *phydev = pdata->phy_dev; + + if (phydev->link) { + if (pdata->phy_speed != phydev->speed) { + pdata->phy_speed = phydev->speed; + xgene_gmac_init(pdata); + xgene_gmac_rx_enable(pdata); + xgene_gmac_tx_enable(pdata); + phy_print_status(phydev); + } + } else { + xgene_gmac_rx_disable(pdata); + xgene_gmac_tx_disable(pdata); + pdata->phy_speed = SPEED_UNKNOWN; + phy_print_status(phydev); + } +} + +static int xgene_enet_phy_connect(struct net_device *ndev) +{ + struct xgene_enet_pdata *pdata = netdev_priv(ndev); + struct device_node *phy_np; + struct phy_device *phy_dev; + struct device *dev = &pdata->pdev->dev; + + phy_np = of_parse_phandle(dev->of_node, "phy-handle", 0); + if (!phy_np) { + netdev_dbg(ndev, "No phy-handle found\n"); + return -ENODEV; + } + + phy_dev = of_phy_connect(ndev, phy_np, &xgene_enet_adjust_link, + 0, pdata->phy_mode); + if (!phy_dev) { + netdev_err(ndev, "Could not connect to PHY\n"); + return -ENODEV; + } + + pdata->phy_speed = SPEED_UNKNOWN; + phy_dev->supported &= ~SUPPORTED_10baseT_Half & + ~SUPPORTED_100baseT_Half & + ~SUPPORTED_1000baseT_Half; + phy_dev->advertising = phy_dev->supported; + pdata->phy_dev = phy_dev; + + return 0; +} + +int xgene_enet_mdio_config(struct xgene_enet_pdata *pdata) +{ + struct net_device *ndev = pdata->ndev; + struct device *dev = &pdata->pdev->dev; + struct device_node *child_np; + struct device_node *mdio_np = NULL; + struct mii_bus *mdio_bus; + int ret; + + for_each_child_of_node(dev->of_node, child_np) { + if (of_device_is_compatible(child_np, "apm,xgene-mdio")) { + mdio_np = child_np; + break; + } + } + + if (!mdio_np) { + netdev_dbg(ndev, "No mdio node in the dts\n"); + return -ENXIO; + } + + mdio_bus = mdiobus_alloc(); + if (!mdio_bus) + return -ENOMEM; + + mdio_bus->name = "APM X-Gene MDIO bus"; + mdio_bus->read = xgene_enet_mdio_read; + mdio_bus->write = xgene_enet_mdio_write; + snprintf(mdio_bus->id, MII_BUS_ID_SIZE, "%s-%s", "xgene-mii", + ndev->name); + + mdio_bus->priv = pdata; + mdio_bus->parent = &ndev->dev; + + ret = of_mdiobus_register(mdio_bus, mdio_np); + if (ret) { + netdev_err(ndev, "Failed to register MDIO bus\n"); + mdiobus_free(mdio_bus); + return ret; + } + pdata->mdio_bus = mdio_bus; + + ret = xgene_enet_phy_connect(ndev); + if (ret) + xgene_enet_mdio_remove(pdata); + + return ret; +} + +void xgene_enet_mdio_remove(struct xgene_enet_pdata *pdata) +{ + mdiobus_unregister(pdata->mdio_bus); + mdiobus_free(pdata->mdio_bus); + pdata->mdio_bus = NULL; +} + +struct xgene_mac_ops xgene_gmac_ops = { + .init = xgene_gmac_init, + .reset = xgene_gmac_reset, + .rx_enable = xgene_gmac_rx_enable, + .tx_enable = xgene_gmac_tx_enable, + .rx_disable = xgene_gmac_rx_disable, + .tx_disable = xgene_gmac_tx_disable, + .set_mac_addr = xgene_gmac_set_mac_addr, +}; + +struct xgene_port_ops xgene_gport_ops = { + .reset = xgene_enet_reset, + .cle_bypass = xgene_enet_cle_bypass, + .shutdown = xgene_gport_shutdown, +}; --- linux-3.13.0.orig/drivers/net/ethernet/apm/xgene/xgene_enet_hw.h +++ linux-3.13.0/drivers/net/ethernet/apm/xgene/xgene_enet_hw.h @@ -0,0 +1,331 @@ +/* Applied Micro X-Gene SoC Ethernet Driver + * + * Copyright (c) 2014, Applied Micro Circuits Corporation + * Authors: Iyappan Subramanian + * Ravi Patel + * Keyur Chudgar + * + * 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 . + */ + +#ifndef __XGENE_ENET_HW_H__ +#define __XGENE_ENET_HW_H__ + +#include "xgene_enet_main.h" + +struct xgene_enet_pdata; +struct xgene_enet_stats; + +/* clears and then set bits */ +static inline void xgene_set_bits(u32 *dst, u32 val, u32 start, u32 len) +{ + u32 end = start + len - 1; + u32 mask = GENMASK(end, start); + + *dst &= ~mask; + *dst |= (val << start) & mask; +} + +static inline u32 xgene_get_bits(u32 val, u32 start, u32 end) +{ + return (val & GENMASK(end, start)) >> start; +} + +enum xgene_enet_rm { + RM0, + RM1, + RM3 = 3 +}; + +#define CSR_RING_ID 0x0008 +#define OVERWRITE BIT(31) +#define IS_BUFFER_POOL BIT(20) +#define PREFETCH_BUF_EN BIT(21) +#define CSR_RING_ID_BUF 0x000c +#define CSR_RING_NE_INT_MODE 0x017c +#define CSR_RING_CONFIG 0x006c +#define CSR_RING_WR_BASE 0x0070 +#define NUM_RING_CONFIG 5 +#define BUFPOOL_MODE 3 +#define INC_DEC_CMD_ADDR 0x002c +#define UDP_HDR_SIZE 2 +#define BUF_LEN_CODE_2K 0x5000 + +#define CREATE_MASK(pos, len) GENMASK((pos)+(len)-1, (pos)) +#define CREATE_MASK_ULL(pos, len) GENMASK_ULL((pos)+(len)-1, (pos)) + +/* Empty slot soft signature */ +#define EMPTY_SLOT_INDEX 1 +#define EMPTY_SLOT ~0ULL + +#define WORK_DESC_SIZE 32 +#define BUFPOOL_DESC_SIZE 16 + +#define RING_OWNER_MASK GENMASK(9, 6) +#define RING_BUFNUM_MASK GENMASK(5, 0) + +#define SELTHRSH_POS 3 +#define SELTHRSH_LEN 3 +#define RINGADDRL_POS 5 +#define RINGADDRL_LEN 27 +#define RINGADDRH_POS 0 +#define RINGADDRH_LEN 6 +#define RINGSIZE_POS 23 +#define RINGSIZE_LEN 3 +#define RINGTYPE_POS 19 +#define RINGTYPE_LEN 2 +#define RINGMODE_POS 20 +#define RINGMODE_LEN 3 +#define RECOMTIMEOUTL_POS 28 +#define RECOMTIMEOUTL_LEN 3 +#define RECOMTIMEOUTH_POS 0 +#define RECOMTIMEOUTH_LEN 2 +#define NUMMSGSINQ_POS 1 +#define NUMMSGSINQ_LEN 16 +#define ACCEPTLERR BIT(19) +#define QCOHERENT BIT(4) +#define RECOMBBUF BIT(27) + +#define MAC_OFFSET 0x30 + +#define BLOCK_ETH_CSR_OFFSET 0x2000 +#define BLOCK_ETH_RING_IF_OFFSET 0x9000 +#define BLOCK_ETH_DIAG_CSR_OFFSET 0xD000 + +#define BLOCK_ETH_MAC_OFFSET 0x0000 +#define BLOCK_ETH_MAC_CSR_OFFSET 0x2800 + +#define CLKEN_ADDR 0xc208 +#define SRST_ADDR 0xc200 + +#define MAC_ADDR_REG_OFFSET 0x00 +#define MAC_COMMAND_REG_OFFSET 0x04 +#define MAC_WRITE_REG_OFFSET 0x08 +#define MAC_READ_REG_OFFSET 0x0c +#define MAC_COMMAND_DONE_REG_OFFSET 0x10 + +#define MII_MGMT_CONFIG_ADDR 0x20 +#define MII_MGMT_COMMAND_ADDR 0x24 +#define MII_MGMT_ADDRESS_ADDR 0x28 +#define MII_MGMT_CONTROL_ADDR 0x2c +#define MII_MGMT_STATUS_ADDR 0x30 +#define MII_MGMT_INDICATORS_ADDR 0x34 + +#define BUSY_MASK BIT(0) +#define READ_CYCLE_MASK BIT(0) +#define PHY_CONTROL_SET(dst, val) xgene_set_bits(dst, val, 0, 16) + +#define ENET_SPARE_CFG_REG_ADDR 0x0750 +#define RSIF_CONFIG_REG_ADDR 0x0010 +#define RSIF_RAM_DBG_REG0_ADDR 0x0048 +#define RGMII_REG_0_ADDR 0x07e0 +#define CFG_LINK_AGGR_RESUME_0_ADDR 0x07c8 +#define DEBUG_REG_ADDR 0x0700 +#define CFG_BYPASS_ADDR 0x0294 +#define CLE_BYPASS_REG0_0_ADDR 0x0490 +#define CLE_BYPASS_REG1_0_ADDR 0x0494 +#define CFG_RSIF_FPBUFF_TIMEOUT_EN BIT(31) +#define RESUME_TX BIT(0) +#define CFG_SPEED_1250 BIT(24) +#define TX_PORT0 BIT(0) +#define CFG_BYPASS_UNISEC_TX BIT(2) +#define CFG_BYPASS_UNISEC_RX BIT(1) +#define CFG_CLE_BYPASS_EN0 BIT(31) +#define CFG_TXCLK_MUXSEL0_SET(dst, val) xgene_set_bits(dst, val, 29, 3) + +#define CFG_CLE_IP_PROTOCOL0_SET(dst, val) xgene_set_bits(dst, val, 16, 2) +#define CFG_CLE_DSTQID0_SET(dst, val) xgene_set_bits(dst, val, 0, 12) +#define CFG_CLE_FPSEL0_SET(dst, val) xgene_set_bits(dst, val, 16, 4) +#define CFG_MACMODE_SET(dst, val) xgene_set_bits(dst, val, 18, 2) +#define CFG_WAITASYNCRD_SET(dst, val) xgene_set_bits(dst, val, 0, 16) +#define CFG_CLE_DSTQID0(val) (val & GENMASK(11, 0)) +#define CFG_CLE_FPSEL0(val) ((val << 16) & GENMASK(19, 16)) +#define ICM_CONFIG0_REG_0_ADDR 0x0400 +#define ICM_CONFIG2_REG_0_ADDR 0x0410 +#define RX_DV_GATE_REG_0_ADDR 0x05fc +#define TX_DV_GATE_EN0 BIT(2) +#define RX_DV_GATE_EN0 BIT(1) +#define RESUME_RX0 BIT(0) +#define ENET_CFGSSQMIWQASSOC_ADDR 0xe0 +#define ENET_CFGSSQMIFPQASSOC_ADDR 0xdc +#define ENET_CFGSSQMIQMLITEFPQASSOC_ADDR 0xf0 +#define ENET_CFGSSQMIQMLITEWQASSOC_ADDR 0xf4 +#define ENET_CFG_MEM_RAM_SHUTDOWN_ADDR 0x70 +#define ENET_BLOCK_MEM_RDY_ADDR 0x74 +#define MAC_CONFIG_1_ADDR 0x00 +#define MAC_CONFIG_2_ADDR 0x04 +#define MAX_FRAME_LEN_ADDR 0x10 +#define INTERFACE_CONTROL_ADDR 0x38 +#define STATION_ADDR0_ADDR 0x40 +#define STATION_ADDR1_ADDR 0x44 +#define PHY_ADDR_SET(dst, val) xgene_set_bits(dst, val, 8, 5) +#define REG_ADDR_SET(dst, val) xgene_set_bits(dst, val, 0, 5) +#define ENET_INTERFACE_MODE2_SET(dst, val) xgene_set_bits(dst, val, 8, 2) +#define MGMT_CLOCK_SEL_SET(dst, val) xgene_set_bits(dst, val, 0, 3) +#define SOFT_RESET1 BIT(31) +#define TX_EN BIT(0) +#define RX_EN BIT(2) +#define ENET_LHD_MODE BIT(25) +#define ENET_GHD_MODE BIT(26) +#define FULL_DUPLEX2 BIT(0) +#define SCAN_AUTO_INCR BIT(5) +#define TBYT_ADDR 0x38 +#define TPKT_ADDR 0x39 +#define TDRP_ADDR 0x45 +#define TFCS_ADDR 0x47 +#define TUND_ADDR 0x4a + +#define TSO_IPPROTO_TCP 1 + +#define USERINFO_POS 0 +#define USERINFO_LEN 32 +#define FPQNUM_POS 32 +#define FPQNUM_LEN 12 +#define LERR_POS 60 +#define LERR_LEN 3 +#define STASH_POS 52 +#define STASH_LEN 2 +#define BUFDATALEN_POS 48 +#define BUFDATALEN_LEN 12 +#define DATAADDR_POS 0 +#define DATAADDR_LEN 42 +#define COHERENT_POS 63 +#define HENQNUM_POS 48 +#define HENQNUM_LEN 12 +#define TYPESEL_POS 44 +#define TYPESEL_LEN 4 +#define ETHHDR_POS 12 +#define ETHHDR_LEN 8 +#define IC_POS 35 /* Insert CRC */ +#define TCPHDR_POS 0 +#define TCPHDR_LEN 6 +#define IPHDR_POS 6 +#define IPHDR_LEN 6 +#define EC_POS 22 /* Enable checksum */ +#define EC_LEN 1 +#define IS_POS 24 /* IP protocol select */ +#define IS_LEN 1 +#define TYPE_ETH_WORK_MESSAGE_POS 44 + +struct xgene_enet_raw_desc { + __le64 m0; + __le64 m1; + __le64 m2; + __le64 m3; +}; + +struct xgene_enet_raw_desc16 { + __le64 m0; + __le64 m1; +}; + +static inline void xgene_enet_mark_desc_slot_empty(void *desc_slot_ptr) +{ + __le64 *desc_slot = desc_slot_ptr; + + desc_slot[EMPTY_SLOT_INDEX] = cpu_to_le64(EMPTY_SLOT); +} + +static inline bool xgene_enet_is_desc_slot_empty(void *desc_slot_ptr) +{ + __le64 *desc_slot = desc_slot_ptr; + + return (desc_slot[EMPTY_SLOT_INDEX] == cpu_to_le64(EMPTY_SLOT)); +} + +enum xgene_enet_ring_cfgsize { + RING_CFGSIZE_512B, + RING_CFGSIZE_2KB, + RING_CFGSIZE_16KB, + RING_CFGSIZE_64KB, + RING_CFGSIZE_512KB, + RING_CFGSIZE_INVALID +}; + +enum xgene_enet_ring_type { + RING_DISABLED, + RING_REGULAR, + RING_BUFPOOL +}; + +enum xgene_ring_owner { + RING_OWNER_ETH0, + RING_OWNER_CPU = 15, + RING_OWNER_INVALID +}; + +enum xgene_enet_ring_bufnum { + RING_BUFNUM_REGULAR = 0x0, + RING_BUFNUM_BUFPOOL = 0x20, + RING_BUFNUM_INVALID +}; + +enum xgene_enet_cmd { + XGENE_ENET_WR_CMD = BIT(31), + XGENE_ENET_RD_CMD = BIT(30) +}; + +enum xgene_enet_err_code { + HBF_READ_DATA = 3, + HBF_LL_READ = 4, + BAD_WORK_MSG = 6, + BUFPOOL_TIMEOUT = 15, + INGRESS_CRC = 16, + INGRESS_CHECKSUM = 17, + INGRESS_TRUNC_FRAME = 18, + INGRESS_PKT_LEN = 19, + INGRESS_PKT_UNDER = 20, + INGRESS_FIFO_OVERRUN = 21, + INGRESS_CHECKSUM_COMPUTE = 26, + ERR_CODE_INVALID +}; + +static inline enum xgene_ring_owner xgene_enet_ring_owner(u16 id) +{ + return (id & RING_OWNER_MASK) >> 6; +} + +static inline u8 xgene_enet_ring_bufnum(u16 id) +{ + return id & RING_BUFNUM_MASK; +} + +static inline bool xgene_enet_is_bufpool(u16 id) +{ + return ((id & RING_BUFNUM_MASK) >= 0x20) ? true : false; +} + +static inline u16 xgene_enet_get_numslots(u16 id, u32 size) +{ + bool is_bufpool = xgene_enet_is_bufpool(id); + + return (is_bufpool) ? size / BUFPOOL_DESC_SIZE : + size / WORK_DESC_SIZE; +} + +struct xgene_enet_desc_ring *xgene_enet_setup_ring( + struct xgene_enet_desc_ring *ring); +void xgene_enet_clear_ring(struct xgene_enet_desc_ring *ring); +void xgene_enet_parse_error(struct xgene_enet_desc_ring *ring, + struct xgene_enet_pdata *pdata, + enum xgene_enet_err_code status); + +int xgene_enet_mdio_config(struct xgene_enet_pdata *pdata); +void xgene_enet_mdio_remove(struct xgene_enet_pdata *pdata); +bool xgene_ring_mgr_init(struct xgene_enet_pdata *p); + +extern struct xgene_mac_ops xgene_gmac_ops; +extern struct xgene_port_ops xgene_gport_ops; + +#endif /* __XGENE_ENET_HW_H__ */ --- linux-3.13.0.orig/drivers/net/ethernet/apm/xgene/xgene_enet_main.c +++ linux-3.13.0/drivers/net/ethernet/apm/xgene/xgene_enet_main.c @@ -0,0 +1,1085 @@ +/* Applied Micro X-Gene SoC Ethernet Driver + * + * Copyright (c) 2014, Applied Micro Circuits Corporation + * Authors: Iyappan Subramanian + * Ravi Patel + * Keyur Chudgar + * + * 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 . + */ + +#include "xgene_enet_main.h" +#include "xgene_enet_hw.h" +#include "xgene_enet_sgmac.h" +#include "xgene_enet_xgmac.h" + +#ifdef CONFIG_ARM64 +#define dmb(opt) asm volatile("dmb " #opt : : : "memory") +#define dma_rmb() dmb(oshld) +#else +#define dma_rmb() do {} while(0) +#endif + +static void xgene_enet_init_bufpool(struct xgene_enet_desc_ring *buf_pool) +{ + struct xgene_enet_raw_desc16 *raw_desc; + int i; + + for (i = 0; i < buf_pool->slots; i++) { + raw_desc = &buf_pool->raw_desc16[i]; + + /* Hardware expects descriptor in little endian format */ + raw_desc->m0 = cpu_to_le64(i | + SET_VAL(FPQNUM, buf_pool->dst_ring_num) | + SET_VAL(STASH, 3)); + } +} + +static int xgene_enet_refill_bufpool(struct xgene_enet_desc_ring *buf_pool, + u32 nbuf) +{ + struct sk_buff *skb; + struct xgene_enet_raw_desc16 *raw_desc; + struct net_device *ndev; + struct device *dev; + dma_addr_t dma_addr; + u32 tail = buf_pool->tail; + u32 slots = buf_pool->slots - 1; + u16 bufdatalen, len; + int i; + + ndev = buf_pool->ndev; + dev = ndev_to_dev(buf_pool->ndev); + bufdatalen = BUF_LEN_CODE_2K | (SKB_BUFFER_SIZE & GENMASK(11, 0)); + len = XGENE_ENET_MAX_MTU; + + for (i = 0; i < nbuf; i++) { + raw_desc = &buf_pool->raw_desc16[tail]; + + skb = netdev_alloc_skb_ip_align(ndev, len); + if (unlikely(!skb)) + return -ENOMEM; + buf_pool->rx_skb[tail] = skb; + + dma_addr = dma_map_single(dev, skb->data, len, DMA_FROM_DEVICE); + if (dma_mapping_error(dev, dma_addr)) { + netdev_err(ndev, "DMA mapping error\n"); + dev_kfree_skb_any(skb); + return -EINVAL; + } + + raw_desc->m1 = cpu_to_le64(SET_VAL(DATAADDR, dma_addr) | + SET_VAL(BUFDATALEN, bufdatalen) | + SET_BIT(COHERENT)); + tail = (tail + 1) & slots; + } + + iowrite32(nbuf, buf_pool->cmd); + buf_pool->tail = tail; + + return 0; +} + +static u16 xgene_enet_dst_ring_num(struct xgene_enet_desc_ring *ring) +{ + struct xgene_enet_pdata *pdata = netdev_priv(ring->ndev); + + return ((u16)pdata->rm << 10) | ring->num; +} + +static u8 xgene_enet_hdr_len(const void *data) +{ + const struct ethhdr *eth = data; + + return (eth->h_proto == htons(ETH_P_8021Q)) ? VLAN_ETH_HLEN : ETH_HLEN; +} + +static u32 xgene_enet_ring_len(struct xgene_enet_desc_ring *ring) +{ + u32 __iomem *cmd_base = ring->cmd_base; + u32 ring_state, num_msgs; + + ring_state = ioread32(&cmd_base[1]); + num_msgs = ring_state & CREATE_MASK(NUMMSGSINQ_POS, NUMMSGSINQ_LEN); + + return num_msgs >> NUMMSGSINQ_POS; +} + +static void xgene_enet_delete_bufpool(struct xgene_enet_desc_ring *buf_pool) +{ + struct xgene_enet_raw_desc16 *raw_desc; + u32 slots = buf_pool->slots - 1; + u32 tail = buf_pool->tail; + u32 userinfo; + int i, len; + + len = xgene_enet_ring_len(buf_pool); + for (i = 0; i < len; i++) { + tail = (tail - 1) & slots; + raw_desc = &buf_pool->raw_desc16[tail]; + + /* Hardware stores descriptor in little endian format */ + userinfo = GET_VAL(USERINFO, le64_to_cpu(raw_desc->m0)); + dev_kfree_skb_any(buf_pool->rx_skb[userinfo]); + } + + iowrite32(-len, buf_pool->cmd); + buf_pool->tail = tail; +} + +static irqreturn_t xgene_enet_rx_irq(const int irq, void *data) +{ + struct xgene_enet_desc_ring *rx_ring = data; + + if (napi_schedule_prep(&rx_ring->napi)) { + disable_irq_nosync(irq); + __napi_schedule(&rx_ring->napi); + } + + return IRQ_HANDLED; +} + +static int xgene_enet_tx_completion(struct xgene_enet_desc_ring *cp_ring, + struct xgene_enet_raw_desc *raw_desc) +{ + struct sk_buff *skb; + struct device *dev; + u16 skb_index; + u8 status; + int ret = 0; + + skb_index = GET_VAL(USERINFO, le64_to_cpu(raw_desc->m0)); + skb = cp_ring->cp_skb[skb_index]; + + dev = ndev_to_dev(cp_ring->ndev); + dma_unmap_single(dev, GET_VAL(DATAADDR, le64_to_cpu(raw_desc->m1)), + GET_VAL(BUFDATALEN, le64_to_cpu(raw_desc->m1)), + DMA_TO_DEVICE); + + /* Checking for error */ + status = GET_VAL(LERR, le64_to_cpu(raw_desc->m0)); + if (unlikely(status > 2)) { + xgene_enet_parse_error(cp_ring, netdev_priv(cp_ring->ndev), + status); + ret = -EIO; + } + + if (likely(skb)) { + dev_kfree_skb_any(skb); + } else { + netdev_err(cp_ring->ndev, "completion skb is NULL\n"); + ret = -EIO; + } + + return ret; +} + +static u64 xgene_enet_work_msg(struct sk_buff *skb) +{ + struct iphdr *iph; + u8 l3hlen, l4hlen = 0; + u8 csum_enable = 0; + u8 proto = 0; + u8 ethhdr; + u64 hopinfo; + + if (unlikely(skb->protocol != htons(ETH_P_IP)) && + unlikely(skb->protocol != htons(ETH_P_8021Q))) + goto out; + + if (unlikely(!(skb->dev->features & NETIF_F_IP_CSUM))) + goto out; + + iph = ip_hdr(skb); + if (unlikely(ip_is_fragment(iph))) + goto out; + + if (likely(iph->protocol == IPPROTO_TCP)) { + l4hlen = tcp_hdrlen(skb) >> 2; + csum_enable = 1; + proto = TSO_IPPROTO_TCP; + } else if (iph->protocol == IPPROTO_UDP) { + l4hlen = UDP_HDR_SIZE; + csum_enable = 1; + } +out: + l3hlen = ip_hdrlen(skb) >> 2; + ethhdr = xgene_enet_hdr_len(skb->data); + hopinfo = SET_VAL(TCPHDR, l4hlen) | + SET_VAL(IPHDR, l3hlen) | + SET_VAL(ETHHDR, ethhdr) | + SET_VAL(EC, csum_enable) | + SET_VAL(IS, proto) | + SET_BIT(IC) | + SET_BIT(TYPE_ETH_WORK_MESSAGE); + + return hopinfo; +} + +static int xgene_enet_setup_tx_desc(struct xgene_enet_desc_ring *tx_ring, + struct sk_buff *skb) +{ + struct device *dev = ndev_to_dev(tx_ring->ndev); + struct xgene_enet_raw_desc *raw_desc; + dma_addr_t dma_addr; + u16 tail = tx_ring->tail; + u64 hopinfo; + + raw_desc = &tx_ring->raw_desc[tail]; + memset(raw_desc, 0, sizeof(struct xgene_enet_raw_desc)); + + dma_addr = dma_map_single(dev, skb->data, skb->len, DMA_TO_DEVICE); + if (dma_mapping_error(dev, dma_addr)) { + netdev_err(tx_ring->ndev, "DMA mapping error\n"); + return -EINVAL; + } + + /* Hardware expects descriptor in little endian format */ + raw_desc->m0 = cpu_to_le64(tail); + raw_desc->m1 = cpu_to_le64(SET_VAL(DATAADDR, dma_addr) | + SET_VAL(BUFDATALEN, skb->len) | + SET_BIT(COHERENT)); + hopinfo = xgene_enet_work_msg(skb); + raw_desc->m3 = cpu_to_le64(SET_VAL(HENQNUM, tx_ring->dst_ring_num) | + hopinfo); + tx_ring->cp_ring->cp_skb[tail] = skb; + + return 0; +} + +static netdev_tx_t xgene_enet_start_xmit(struct sk_buff *skb, + struct net_device *ndev) +{ + struct xgene_enet_pdata *pdata = netdev_priv(ndev); + struct xgene_enet_desc_ring *tx_ring = pdata->tx_ring; + struct xgene_enet_desc_ring *cp_ring = tx_ring->cp_ring; + u32 tx_level, cq_level; + + tx_level = xgene_enet_ring_len(tx_ring); + cq_level = xgene_enet_ring_len(cp_ring); + if (unlikely(tx_level > pdata->tx_qcnt_hi || + cq_level > pdata->cp_qcnt_hi)) { + netif_stop_queue(ndev); + return NETDEV_TX_BUSY; + } + + if (xgene_enet_setup_tx_desc(tx_ring, skb)) { + dev_kfree_skb_any(skb); + return NETDEV_TX_OK; + } + + iowrite32(1, tx_ring->cmd); + skb_tx_timestamp(skb); + tx_ring->tail = (tx_ring->tail + 1) & (tx_ring->slots - 1); + + pdata->stats.tx_packets++; + pdata->stats.tx_bytes += skb->len; + + return NETDEV_TX_OK; +} + +static void xgene_enet_skip_csum(struct sk_buff *skb) +{ + struct iphdr *iph = ip_hdr(skb); + + if (!ip_is_fragment(iph) || + (iph->protocol != IPPROTO_TCP && iph->protocol != IPPROTO_UDP)) { + skb->ip_summed = CHECKSUM_UNNECESSARY; + } +} + +static int xgene_enet_rx_frame(struct xgene_enet_desc_ring *rx_ring, + struct xgene_enet_raw_desc *raw_desc) +{ + struct net_device *ndev; + struct xgene_enet_pdata *pdata; + struct device *dev; + struct xgene_enet_desc_ring *buf_pool; + u32 datalen, skb_index; + struct sk_buff *skb; + u8 status; + int ret = 0; + + ndev = rx_ring->ndev; + pdata = netdev_priv(ndev); + dev = ndev_to_dev(rx_ring->ndev); + buf_pool = rx_ring->buf_pool; + + dma_unmap_single(dev, GET_VAL(DATAADDR, le64_to_cpu(raw_desc->m1)), + XGENE_ENET_MAX_MTU, DMA_FROM_DEVICE); + skb_index = GET_VAL(USERINFO, le64_to_cpu(raw_desc->m0)); + skb = buf_pool->rx_skb[skb_index]; + + /* checking for error */ + status = GET_VAL(LERR, le64_to_cpu(raw_desc->m0)); + if (unlikely(status > 2)) { + dev_kfree_skb_any(skb); + xgene_enet_parse_error(rx_ring, netdev_priv(rx_ring->ndev), + status); + pdata->stats.rx_dropped++; + ret = -EIO; + goto out; + } + + /* strip off CRC as HW isn't doing this */ + datalen = GET_VAL(BUFDATALEN, le64_to_cpu(raw_desc->m1)); + datalen -= 4; + prefetch(skb->data - NET_IP_ALIGN); + skb_put(skb, datalen); + + skb_checksum_none_assert(skb); + skb->protocol = eth_type_trans(skb, ndev); + if (likely((ndev->features & NETIF_F_IP_CSUM) && + skb->protocol == htons(ETH_P_IP))) { + xgene_enet_skip_csum(skb); + } + + pdata->stats.rx_packets++; + pdata->stats.rx_bytes += datalen; + napi_gro_receive(&rx_ring->napi, skb); +out: + if (--rx_ring->nbufpool == 0) { + ret = xgene_enet_refill_bufpool(buf_pool, NUM_BUFPOOL); + rx_ring->nbufpool = NUM_BUFPOOL; + } + + return ret; +} + +static bool is_rx_desc(struct xgene_enet_raw_desc *raw_desc) +{ + return GET_VAL(FPQNUM, le64_to_cpu(raw_desc->m0)) ? true : false; +} + +static int xgene_enet_process_ring(struct xgene_enet_desc_ring *ring, + int budget) +{ + struct xgene_enet_pdata *pdata = netdev_priv(ring->ndev); + struct xgene_enet_raw_desc *raw_desc; + u16 head = ring->head; + u16 slots = ring->slots - 1; + int ret, count = 0; + + do { + raw_desc = &ring->raw_desc[head]; + if (unlikely(xgene_enet_is_desc_slot_empty(raw_desc))) + break; + + /* read fpqnum field after dataaddr field */ + dma_rmb(); + if (is_rx_desc(raw_desc)) + ret = xgene_enet_rx_frame(ring, raw_desc); + else + ret = xgene_enet_tx_completion(ring, raw_desc); + xgene_enet_mark_desc_slot_empty(raw_desc); + + head = (head + 1) & slots; + count++; + + if (ret) + break; + } while (--budget); + + if (likely(count)) { + iowrite32(-count, ring->cmd); + ring->head = head; + + if (netif_queue_stopped(ring->ndev)) { + if (xgene_enet_ring_len(ring) < pdata->cp_qcnt_low) + netif_wake_queue(ring->ndev); + } + } + + return count; +} + +static int xgene_enet_napi(struct napi_struct *napi, const int budget) +{ + struct xgene_enet_desc_ring *ring; + int processed; + + ring = container_of(napi, struct xgene_enet_desc_ring, napi); + processed = xgene_enet_process_ring(ring, budget); + + if (processed != budget) { + napi_complete(napi); + enable_irq(ring->irq); + } + + return processed; +} + +static void xgene_enet_timeout(struct net_device *ndev) +{ + struct xgene_enet_pdata *pdata = netdev_priv(ndev); + + pdata->mac_ops->reset(pdata); +} + +static int xgene_enet_register_irq(struct net_device *ndev) +{ + struct xgene_enet_pdata *pdata = netdev_priv(ndev); + struct device *dev = ndev_to_dev(ndev); + int ret; + + ret = devm_request_irq(dev, pdata->rx_ring->irq, xgene_enet_rx_irq, + IRQF_SHARED, ndev->name, pdata->rx_ring); + if (ret) { + netdev_err(ndev, "rx%d interrupt request failed\n", + pdata->rx_ring->irq); + } + + return ret; +} + +static void xgene_enet_free_irq(struct net_device *ndev) +{ + struct xgene_enet_pdata *pdata; + struct device *dev; + + pdata = netdev_priv(ndev); + dev = ndev_to_dev(ndev); + devm_free_irq(dev, pdata->rx_ring->irq, pdata->rx_ring); +} + +static int xgene_enet_open(struct net_device *ndev) +{ + struct xgene_enet_pdata *pdata = netdev_priv(ndev); + struct xgene_mac_ops *mac_ops = pdata->mac_ops; + int ret; + + mac_ops->tx_enable(pdata); + mac_ops->rx_enable(pdata); + + ret = xgene_enet_register_irq(ndev); + if (ret) + return ret; + napi_enable(&pdata->rx_ring->napi); + + if (pdata->phy_mode == PHY_INTERFACE_MODE_RGMII) + phy_start(pdata->phy_dev); + else + schedule_delayed_work(&pdata->link_work, PHY_POLL_LINK_OFF); + + netif_start_queue(ndev); + + return ret; +} + +static int xgene_enet_close(struct net_device *ndev) +{ + struct xgene_enet_pdata *pdata = netdev_priv(ndev); + struct xgene_mac_ops *mac_ops = pdata->mac_ops; + + netif_stop_queue(ndev); + + if (pdata->phy_mode == PHY_INTERFACE_MODE_RGMII) + phy_stop(pdata->phy_dev); + else + cancel_delayed_work_sync(&pdata->link_work); + + napi_disable(&pdata->rx_ring->napi); + xgene_enet_free_irq(ndev); + xgene_enet_process_ring(pdata->rx_ring, -1); + + mac_ops->tx_disable(pdata); + mac_ops->rx_disable(pdata); + + return 0; +} + +static void xgene_enet_delete_ring(struct xgene_enet_desc_ring *ring) +{ + struct xgene_enet_pdata *pdata; + struct device *dev; + + pdata = netdev_priv(ring->ndev); + dev = ndev_to_dev(ring->ndev); + + xgene_enet_clear_ring(ring); + dma_free_coherent(dev, ring->size, ring->desc_addr, ring->dma); +} + +static void xgene_enet_delete_desc_rings(struct xgene_enet_pdata *pdata) +{ + struct xgene_enet_desc_ring *buf_pool; + + if (pdata->tx_ring) { + xgene_enet_delete_ring(pdata->tx_ring); + pdata->tx_ring = NULL; + } + + if (pdata->rx_ring) { + buf_pool = pdata->rx_ring->buf_pool; + xgene_enet_delete_bufpool(buf_pool); + xgene_enet_delete_ring(buf_pool); + xgene_enet_delete_ring(pdata->rx_ring); + pdata->rx_ring = NULL; + } +} + +static int xgene_enet_get_ring_size(struct device *dev, + enum xgene_enet_ring_cfgsize cfgsize) +{ + int size = -EINVAL; + + switch (cfgsize) { + case RING_CFGSIZE_512B: + size = 0x200; + break; + case RING_CFGSIZE_2KB: + size = 0x800; + break; + case RING_CFGSIZE_16KB: + size = 0x4000; + break; + case RING_CFGSIZE_64KB: + size = 0x10000; + break; + case RING_CFGSIZE_512KB: + size = 0x80000; + break; + default: + dev_err(dev, "Unsupported cfg ring size %d\n", cfgsize); + break; + } + + return size; +} + +static void xgene_enet_free_desc_ring(struct xgene_enet_desc_ring *ring) +{ + struct device *dev; + + if (!ring) + return; + + dev = ndev_to_dev(ring->ndev); + + if (ring->desc_addr) { + xgene_enet_clear_ring(ring); + dma_free_coherent(dev, ring->size, ring->desc_addr, ring->dma); + } + devm_kfree(dev, ring); +} + +static void xgene_enet_free_desc_rings(struct xgene_enet_pdata *pdata) +{ + struct device *dev = &pdata->pdev->dev; + struct xgene_enet_desc_ring *ring; + + ring = pdata->tx_ring; + if (ring && ring->cp_ring && ring->cp_ring->cp_skb) + devm_kfree(dev, ring->cp_ring->cp_skb); + xgene_enet_free_desc_ring(ring); + + ring = pdata->rx_ring; + if (ring && ring->buf_pool && ring->buf_pool->rx_skb) + devm_kfree(dev, ring->buf_pool->rx_skb); + xgene_enet_free_desc_ring(ring->buf_pool); + xgene_enet_free_desc_ring(ring); +} + +static struct xgene_enet_desc_ring *xgene_enet_create_desc_ring( + struct net_device *ndev, u32 ring_num, + enum xgene_enet_ring_cfgsize cfgsize, u32 ring_id) +{ + struct xgene_enet_desc_ring *ring; + struct xgene_enet_pdata *pdata = netdev_priv(ndev); + struct device *dev = ndev_to_dev(ndev); + u32 size; + + ring = devm_kzalloc(dev, sizeof(struct xgene_enet_desc_ring), + GFP_KERNEL); + if (!ring) + return NULL; + + ring->ndev = ndev; + ring->num = ring_num; + ring->cfgsize = cfgsize; + ring->id = ring_id; + + size = xgene_enet_get_ring_size(dev, cfgsize); + ring->desc_addr = dma_zalloc_coherent(dev, size, &ring->dma, + GFP_KERNEL); + if (!ring->desc_addr) { + devm_kfree(dev, ring); + return NULL; + } + ring->size = size; + + ring->cmd_base = pdata->ring_cmd_addr + (ring->num << 6); + ring->cmd = ring->cmd_base + INC_DEC_CMD_ADDR; + ring = xgene_enet_setup_ring(ring); + netdev_dbg(ndev, "ring info: num=%d size=%d id=%d slots=%d\n", + ring->num, ring->size, ring->id, ring->slots); + + return ring; +} + +static u16 xgene_enet_get_ring_id(enum xgene_ring_owner owner, u8 bufnum) +{ + return (owner << 6) | (bufnum & GENMASK(5, 0)); +} + +static int xgene_enet_create_desc_rings(struct net_device *ndev) +{ + struct xgene_enet_pdata *pdata = netdev_priv(ndev); + struct device *dev = ndev_to_dev(ndev); + struct xgene_enet_desc_ring *rx_ring, *tx_ring, *cp_ring; + struct xgene_enet_desc_ring *buf_pool = NULL; + u8 cpu_bufnum = pdata->cpu_bufnum; + u8 eth_bufnum = pdata->eth_bufnum; + u8 bp_bufnum = pdata->bp_bufnum; + u16 ring_num = pdata->ring_num; + u16 ring_id; + int ret; + + /* allocate rx descriptor ring */ + ring_id = xgene_enet_get_ring_id(RING_OWNER_CPU, cpu_bufnum++); + rx_ring = xgene_enet_create_desc_ring(ndev, ring_num++, + RING_CFGSIZE_16KB, ring_id); + if (!rx_ring) { + ret = -ENOMEM; + goto err; + } + + /* allocate buffer pool for receiving packets */ + ring_id = xgene_enet_get_ring_id(RING_OWNER_ETH0, bp_bufnum++); + buf_pool = xgene_enet_create_desc_ring(ndev, ring_num++, + RING_CFGSIZE_2KB, ring_id); + if (!buf_pool) { + ret = -ENOMEM; + goto err; + } + + rx_ring->nbufpool = NUM_BUFPOOL; + rx_ring->buf_pool = buf_pool; + rx_ring->irq = pdata->rx_irq; + buf_pool->rx_skb = devm_kcalloc(dev, buf_pool->slots, + sizeof(struct sk_buff *), GFP_KERNEL); + if (!buf_pool->rx_skb) { + ret = -ENOMEM; + goto err; + } + + buf_pool->dst_ring_num = xgene_enet_dst_ring_num(buf_pool); + rx_ring->buf_pool = buf_pool; + pdata->rx_ring = rx_ring; + + /* allocate tx descriptor ring */ + ring_id = xgene_enet_get_ring_id(RING_OWNER_ETH0, eth_bufnum++); + tx_ring = xgene_enet_create_desc_ring(ndev, ring_num++, + RING_CFGSIZE_16KB, ring_id); + if (!tx_ring) { + ret = -ENOMEM; + goto err; + } + pdata->tx_ring = tx_ring; + + cp_ring = pdata->rx_ring; + cp_ring->cp_skb = devm_kcalloc(dev, tx_ring->slots, + sizeof(struct sk_buff *), GFP_KERNEL); + if (!cp_ring->cp_skb) { + ret = -ENOMEM; + goto err; + } + pdata->tx_ring->cp_ring = cp_ring; + pdata->tx_ring->dst_ring_num = xgene_enet_dst_ring_num(cp_ring); + + pdata->tx_qcnt_hi = pdata->tx_ring->slots / 2; + pdata->cp_qcnt_hi = pdata->rx_ring->slots / 2; + pdata->cp_qcnt_low = pdata->cp_qcnt_hi / 2; + + return 0; + +err: + xgene_enet_free_desc_rings(pdata); + return ret; +} + +static struct rtnl_link_stats64 *xgene_enet_get_stats64( + struct net_device *ndev, + struct rtnl_link_stats64 *storage) +{ + struct xgene_enet_pdata *pdata = netdev_priv(ndev); + struct rtnl_link_stats64 *stats = &pdata->stats; + + stats->rx_errors += stats->rx_length_errors + + stats->rx_crc_errors + + stats->rx_frame_errors + + stats->rx_fifo_errors; + memcpy(storage, &pdata->stats, sizeof(struct rtnl_link_stats64)); + + return storage; +} + +static int xgene_enet_set_mac_address(struct net_device *ndev, void *addr) +{ + struct xgene_enet_pdata *pdata = netdev_priv(ndev); + int ret; + + ret = eth_mac_addr(ndev, addr); + if (ret) + return ret; + pdata->mac_ops->set_mac_addr(pdata); + + return ret; +} + +static const struct net_device_ops xgene_ndev_ops = { + .ndo_open = xgene_enet_open, + .ndo_stop = xgene_enet_close, + .ndo_start_xmit = xgene_enet_start_xmit, + .ndo_tx_timeout = xgene_enet_timeout, + .ndo_get_stats64 = xgene_enet_get_stats64, + .ndo_change_mtu = eth_change_mtu, + .ndo_set_mac_address = xgene_enet_set_mac_address, +}; + +static int xgene_get_port_id(struct device *dev, struct xgene_enet_pdata *pdata) +{ + u32 id = 0; + int ret; + + ret = of_property_read_u32(dev->of_node, "port-id", &id); + if (!ret && id > 1) { + dev_err(dev, "Incorrect port-id specified\n"); + return -ENODEV; + } + + pdata->port_id = id; + + return 0; +} + +static int xgene_get_mac_address(struct device *dev, + unsigned char *addr) +{ + int ret; + + ret = of_property_read_u8_array(dev->of_node, "local-mac-address", addr, 6); + if (ret) + ret = of_property_read_u8_array(dev->of_node, "mac-address", + addr, 6); + if (ret) + return -ENODEV; + + return ETH_ALEN; +} + +static int xgene_get_phy_mode(struct device *dev) +{ + int i, ret; + char *modestr; + + ret = of_property_read_string(dev->of_node, "phy-connection-type", + (const char **)&modestr); + if (ret) + ret = of_property_read_string(dev->of_node, "phy-mode", + (const char **)&modestr); + if (ret) + return -ENODEV; + + for (i = 0; i < PHY_INTERFACE_MODE_MAX; i++) { + if (!strcasecmp(modestr, phy_modes(i))) + return i; + } + return -ENODEV; +} + +static int xgene_enet_get_resources(struct xgene_enet_pdata *pdata) +{ + struct platform_device *pdev; + struct net_device *ndev; + struct device *dev; + struct resource *res; + void __iomem *base_addr; + const char *mac; + int ret; + + pdev = pdata->pdev; + dev = &pdev->dev; + ndev = pdata->ndev; + + res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "enet_csr"); + if (!res) { + dev_err(dev, "Resource enet_csr not defined\n"); + return -ENODEV; + } + pdata->base_addr = devm_ioremap(dev, res->start, resource_size(res)); + if (!pdata->base_addr) { + dev_err(dev, "Unable to retrieve ENET Port CSR region\n"); + return -ENOMEM; + } + + res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "ring_csr"); + if (!res) { + dev_err(dev, "Resource ring_csr not defined\n"); + return -ENODEV; + } + pdata->ring_csr_addr = devm_ioremap(dev, res->start, + resource_size(res)); + if (!pdata->ring_csr_addr) { + dev_err(dev, "Unable to retrieve ENET Ring CSR region\n"); + return -ENOMEM; + } + + res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "ring_cmd"); + if (!res) { + dev_err(dev, "Resource ring_cmd not defined\n"); + return -ENODEV; + } + pdata->ring_cmd_addr = devm_ioremap(dev, res->start, + resource_size(res)); + if (!pdata->ring_cmd_addr) { + dev_err(dev, "Unable to retrieve ENET Ring command region\n"); + return -ENOMEM; + } + + ret = platform_get_irq(pdev, 0); + if (ret <= 0) { + dev_err(dev, "Unable to get ENET Rx IRQ\n"); + ret = ret ? : -ENXIO; + return ret; + } + pdata->rx_irq = ret; + + ret = xgene_get_port_id(dev, pdata); + if (ret) + return ret; + + if (xgene_get_mac_address(dev, ndev->dev_addr) != ETH_ALEN) + eth_hw_addr_random(ndev); + memcpy(ndev->perm_addr, ndev->dev_addr, ndev->addr_len); + + pdata->phy_mode = of_get_phy_mode(pdev->dev.of_node); + if (pdata->phy_mode < 0) { + dev_err(dev, "Unable to get phy-connection-type\n"); + return pdata->phy_mode; + } + if (pdata->phy_mode != PHY_INTERFACE_MODE_RGMII && + pdata->phy_mode != PHY_INTERFACE_MODE_SGMII && + pdata->phy_mode != PHY_INTERFACE_MODE_XGMII) { + dev_err(dev, "Incorrect phy-connection-type specified\n"); + return -ENODEV; + } + + pdata->clk = devm_clk_get(&pdev->dev, NULL); + ret = IS_ERR(pdata->clk); + if (IS_ERR(pdata->clk)) { + dev_err(&pdev->dev, "can't get clock\n"); + ret = PTR_ERR(pdata->clk); + return ret; + } + + base_addr = pdata->base_addr - (pdata->port_id * MAC_OFFSET); + pdata->eth_csr_addr = base_addr + BLOCK_ETH_CSR_OFFSET; + pdata->eth_ring_if_addr = base_addr + BLOCK_ETH_RING_IF_OFFSET; + pdata->eth_diag_csr_addr = base_addr + BLOCK_ETH_DIAG_CSR_OFFSET; + if (pdata->phy_mode == PHY_INTERFACE_MODE_RGMII || + pdata->phy_mode == PHY_INTERFACE_MODE_SGMII) { + pdata->mcx_mac_addr = pdata->base_addr + BLOCK_ETH_MAC_OFFSET; + pdata->mcx_mac_csr_addr = base_addr + BLOCK_ETH_MAC_CSR_OFFSET; + } else { + pdata->mcx_mac_addr = base_addr + BLOCK_AXG_MAC_OFFSET; + pdata->mcx_mac_csr_addr = base_addr + BLOCK_AXG_MAC_CSR_OFFSET; + } + pdata->rx_buff_cnt = NUM_PKT_BUF; + + return 0; +} + +static int xgene_enet_init_hw(struct xgene_enet_pdata *pdata) +{ + struct net_device *ndev = pdata->ndev; + struct xgene_enet_desc_ring *buf_pool; + u16 dst_ring_num; + int ret; + + ret = pdata->port_ops->reset(pdata); + if (ret) + return ret; + + ret = xgene_enet_create_desc_rings(ndev); + if (ret) { + netdev_err(ndev, "Error in ring configuration\n"); + return ret; + } + + /* setup buffer pool */ + buf_pool = pdata->rx_ring->buf_pool; + xgene_enet_init_bufpool(buf_pool); + ret = xgene_enet_refill_bufpool(buf_pool, pdata->rx_buff_cnt); + if (ret) { + xgene_enet_delete_desc_rings(pdata); + return ret; + } + + dst_ring_num = xgene_enet_dst_ring_num(pdata->rx_ring); + pdata->port_ops->cle_bypass(pdata, dst_ring_num, buf_pool->id); + pdata->mac_ops->init(pdata); + + return ret; +} + +static void xgene_enet_setup_ops(struct xgene_enet_pdata *pdata) +{ + switch (pdata->phy_mode) { + case PHY_INTERFACE_MODE_RGMII: + pdata->mac_ops = &xgene_gmac_ops; + pdata->port_ops = &xgene_gport_ops; + pdata->rm = RM3; + break; + case PHY_INTERFACE_MODE_SGMII: + pdata->mac_ops = &xgene_sgmac_ops; + pdata->port_ops = &xgene_sgport_ops; + pdata->rm = RM1; + break; + default: + pdata->mac_ops = &xgene_xgmac_ops; + pdata->port_ops = &xgene_xgport_ops; + pdata->rm = RM0; + break; + } + + switch (pdata->port_id) { + case 0: + pdata->cpu_bufnum = START_CPU_BUFNUM_0; + pdata->eth_bufnum = START_ETH_BUFNUM_0; + pdata->bp_bufnum = START_BP_BUFNUM_0; + pdata->ring_num = START_RING_NUM_0; + break; + case 1: + pdata->cpu_bufnum = START_CPU_BUFNUM_1; + pdata->eth_bufnum = START_ETH_BUFNUM_1; + pdata->bp_bufnum = START_BP_BUFNUM_1; + pdata->ring_num = START_RING_NUM_1; + break; + default: + break; + } + +} + +static int xgene_enet_probe(struct platform_device *pdev) +{ + struct net_device *ndev; + struct xgene_enet_pdata *pdata; + struct device *dev = &pdev->dev; + struct napi_struct *napi; + struct xgene_mac_ops *mac_ops; + int ret; + + ndev = alloc_etherdev(sizeof(struct xgene_enet_pdata)); + if (!ndev) + return -ENOMEM; + + pdata = netdev_priv(ndev); + + pdata->pdev = pdev; + pdata->ndev = ndev; + SET_NETDEV_DEV(ndev, dev); + platform_set_drvdata(pdev, pdata); + ndev->netdev_ops = &xgene_ndev_ops; + xgene_enet_set_ethtool_ops(ndev); + ndev->features |= NETIF_F_IP_CSUM | + NETIF_F_GSO | + NETIF_F_GRO; + + ret = xgene_enet_get_resources(pdata); + if (ret) + goto err; + + xgene_enet_setup_ops(pdata); + + ret = register_netdev(ndev); + if (ret) { + netdev_err(ndev, "Failed to register netdev\n"); + goto err; + } + + ret = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(64)); + if (ret) { + netdev_err(ndev, "No usable DMA configuration\n"); + goto err; + } + + ret = xgene_enet_init_hw(pdata); + if (ret) + goto err; + + napi = &pdata->rx_ring->napi; + netif_napi_add(ndev, napi, xgene_enet_napi, NAPI_POLL_WEIGHT); + mac_ops = pdata->mac_ops; + if (pdata->phy_mode == PHY_INTERFACE_MODE_RGMII) + ret = xgene_enet_mdio_config(pdata); + else + INIT_DELAYED_WORK(&pdata->link_work, mac_ops->link_state); + + return ret; +err: + unregister_netdev(ndev); + free_netdev(ndev); + return ret; +} + +static int xgene_enet_remove(struct platform_device *pdev) +{ + struct xgene_enet_pdata *pdata; + struct xgene_mac_ops *mac_ops; + struct net_device *ndev; + + pdata = platform_get_drvdata(pdev); + mac_ops = pdata->mac_ops; + ndev = pdata->ndev; + + mac_ops->rx_disable(pdata); + mac_ops->tx_disable(pdata); + + netif_napi_del(&pdata->rx_ring->napi); + xgene_enet_mdio_remove(pdata); + xgene_enet_delete_desc_rings(pdata); + unregister_netdev(ndev); + pdata->port_ops->shutdown(pdata); + free_netdev(ndev); + + return 0; +} + +static const struct of_device_id xgene_enet_match[] = { + {.compatible = "apm,xgene-enet",}, + {.compatible = "apm,xgene1-sgenet",}, + {.compatible = "apm,xgene1-xgenet",}, + {}, +}; + +MODULE_DEVICE_TABLE(of, xgene_enet_match); + +static struct platform_driver xgene_enet_driver = { + .driver = { + .name = "xgene-enet", + .of_match_table = xgene_enet_match, + }, + .probe = xgene_enet_probe, + .remove = xgene_enet_remove, +}; + +module_platform_driver(xgene_enet_driver); + +MODULE_DESCRIPTION("APM X-Gene SoC Ethernet driver"); +MODULE_VERSION(XGENE_DRV_VERSION); +MODULE_AUTHOR("Iyappan Subramanian "); +MODULE_AUTHOR("Keyur Chudgar "); +MODULE_LICENSE("GPL"); --- linux-3.13.0.orig/drivers/net/ethernet/apm/xgene/xgene_enet_main.h +++ linux-3.13.0/drivers/net/ethernet/apm/xgene/xgene_enet_main.h @@ -0,0 +1,179 @@ +/* Applied Micro X-Gene SoC Ethernet Driver + * + * Copyright (c) 2014, Applied Micro Circuits Corporation + * Authors: Iyappan Subramanian + * Ravi Patel + * Keyur Chudgar + * + * 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 . + */ + +#ifndef __XGENE_ENET_MAIN_H__ +#define __XGENE_ENET_MAIN_H__ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "xgene_enet_hw.h" + +#define XGENE_DRV_VERSION "v1.0" +#define XGENE_ENET_MAX_MTU 1536 +#define SKB_BUFFER_SIZE (XGENE_ENET_MAX_MTU - NET_IP_ALIGN) +#define NUM_PKT_BUF 64 +#define NUM_BUFPOOL 32 + +#define START_CPU_BUFNUM_0 0 +#define START_ETH_BUFNUM_0 2 +#define START_BP_BUFNUM_0 0x22 +#define START_RING_NUM_0 8 +#define START_CPU_BUFNUM_1 12 +#define START_ETH_BUFNUM_1 10 +#define START_BP_BUFNUM_1 0x2A +#define START_RING_NUM_1 264 + +#define PHY_POLL_LINK_ON (10 * HZ) +#define PHY_POLL_LINK_OFF (PHY_POLL_LINK_ON / 5) + +/* software context of a descriptor ring */ +struct xgene_enet_desc_ring { + struct net_device *ndev; + u16 id; + u16 num; + u16 head; + u16 tail; + u16 slots; + u16 irq; + u32 size; + u32 state[NUM_RING_CONFIG]; + void __iomem *cmd_base; + void __iomem *cmd; + dma_addr_t dma; + u16 dst_ring_num; + u8 nbufpool; + struct sk_buff *(*rx_skb); + struct sk_buff *(*cp_skb); + enum xgene_enet_ring_cfgsize cfgsize; + struct xgene_enet_desc_ring *cp_ring; + struct xgene_enet_desc_ring *buf_pool; + struct napi_struct napi; + union { + void *desc_addr; + struct xgene_enet_raw_desc *raw_desc; + struct xgene_enet_raw_desc16 *raw_desc16; + }; +}; + +struct xgene_mac_ops { + void (*init)(struct xgene_enet_pdata *pdata); + void (*reset)(struct xgene_enet_pdata *pdata); + void (*tx_enable)(struct xgene_enet_pdata *pdata); + void (*rx_enable)(struct xgene_enet_pdata *pdata); + void (*tx_disable)(struct xgene_enet_pdata *pdata); + void (*rx_disable)(struct xgene_enet_pdata *pdata); + void (*set_mac_addr)(struct xgene_enet_pdata *pdata); + void (*link_state)(struct work_struct *work); +}; + +struct xgene_port_ops { + int (*reset)(struct xgene_enet_pdata *pdata); + void (*cle_bypass)(struct xgene_enet_pdata *pdata, + u32 dst_ring_num, u16 bufpool_id); + void (*shutdown)(struct xgene_enet_pdata *pdata); +}; + +/* ethernet private data */ +struct xgene_enet_pdata { + struct net_device *ndev; + struct mii_bus *mdio_bus; + struct phy_device *phy_dev; + int phy_speed; + struct clk *clk; + struct platform_device *pdev; + struct xgene_enet_desc_ring *tx_ring; + struct xgene_enet_desc_ring *rx_ring; + char *dev_name; + u32 rx_buff_cnt; + u32 tx_qcnt_hi; + u32 cp_qcnt_hi; + u32 cp_qcnt_low; + u32 rx_irq; + void __iomem *eth_csr_addr; + void __iomem *eth_ring_if_addr; + void __iomem *eth_diag_csr_addr; + void __iomem *mcx_mac_addr; + void __iomem *mcx_mac_csr_addr; + void __iomem *base_addr; + void __iomem *ring_csr_addr; + void __iomem *ring_cmd_addr; + int phy_mode; + enum xgene_enet_rm rm; + struct rtnl_link_stats64 stats; + struct xgene_mac_ops *mac_ops; + struct xgene_port_ops *port_ops; + struct delayed_work link_work; + u32 port_id; + u8 cpu_bufnum; + u8 eth_bufnum; + u8 bp_bufnum; + u16 ring_num; +}; + +struct xgene_indirect_ctl { + void __iomem *addr; + void __iomem *ctl; + void __iomem *cmd; + void __iomem *cmd_done; +}; + +/* Set the specified value into a bit-field defined by its starting position + * and length within a single u64. + */ +static inline u64 xgene_enet_set_field_value(int pos, int len, u64 val) +{ + return (val & ((1ULL << len) - 1)) << pos; +} + +#define SET_VAL(field, val) \ + xgene_enet_set_field_value(field ## _POS, field ## _LEN, val) + +#define SET_BIT(field) \ + xgene_enet_set_field_value(field ## _POS, 1, 1) + +/* Get the value from a bit-field defined by its starting position + * and length within the specified u64. + */ +static inline u64 xgene_enet_get_field_value(int pos, int len, u64 src) +{ + return (src >> pos) & ((1ULL << len) - 1); +} + +#define GET_VAL(field, src) \ + xgene_enet_get_field_value(field ## _POS, field ## _LEN, src) + +static inline struct device *ndev_to_dev(struct net_device *ndev) +{ + return ndev->dev.parent; +} + +void xgene_enet_set_ethtool_ops(struct net_device *netdev); + +#endif /* __XGENE_ENET_MAIN_H__ */ --- linux-3.13.0.orig/drivers/net/ethernet/apm/xgene/xgene_enet_sgmac.c +++ linux-3.13.0/drivers/net/ethernet/apm/xgene/xgene_enet_sgmac.c @@ -0,0 +1,394 @@ +/* Applied Micro X-Gene SoC Ethernet Driver + * + * Copyright (c) 2014, Applied Micro Circuits Corporation + * Authors: Iyappan Subramanian + * Keyur Chudgar + * + * 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 . + */ + +#include "xgene_enet_main.h" +#include "xgene_enet_hw.h" +#include "xgene_enet_sgmac.h" + +static void xgene_enet_wr_csr(struct xgene_enet_pdata *p, u32 offset, u32 val) +{ + iowrite32(val, p->eth_csr_addr + offset); +} + +static void xgene_enet_wr_ring_if(struct xgene_enet_pdata *p, + u32 offset, u32 val) +{ + iowrite32(val, p->eth_ring_if_addr + offset); +} + +static void xgene_enet_wr_diag_csr(struct xgene_enet_pdata *p, + u32 offset, u32 val) +{ + iowrite32(val, p->eth_diag_csr_addr + offset); +} + +static bool xgene_enet_wr_indirect(struct xgene_indirect_ctl *ctl, + u32 wr_addr, u32 wr_data) +{ + int i; + + iowrite32(wr_addr, ctl->addr); + iowrite32(wr_data, ctl->ctl); + iowrite32(XGENE_ENET_WR_CMD, ctl->cmd); + + /* wait for write command to complete */ + for (i = 0; i < 10; i++) { + if (ioread32(ctl->cmd_done)) { + iowrite32(0, ctl->cmd); + return true; + } + udelay(1); + } + + return false; +} + +static void xgene_enet_wr_mac(struct xgene_enet_pdata *p, + u32 wr_addr, u32 wr_data) +{ + struct xgene_indirect_ctl ctl = { + .addr = p->mcx_mac_addr + MAC_ADDR_REG_OFFSET, + .ctl = p->mcx_mac_addr + MAC_WRITE_REG_OFFSET, + .cmd = p->mcx_mac_addr + MAC_COMMAND_REG_OFFSET, + .cmd_done = p->mcx_mac_addr + MAC_COMMAND_DONE_REG_OFFSET + }; + + if (!xgene_enet_wr_indirect(&ctl, wr_addr, wr_data)) + netdev_err(p->ndev, "mac write failed, addr: %04x\n", wr_addr); +} + +static u32 xgene_enet_rd_csr(struct xgene_enet_pdata *p, u32 offset) +{ + return ioread32(p->eth_csr_addr + offset); +} + +static u32 xgene_enet_rd_diag_csr(struct xgene_enet_pdata *p, u32 offset) +{ + return ioread32(p->eth_diag_csr_addr + offset); +} + +static u32 xgene_enet_rd_indirect(struct xgene_indirect_ctl *ctl, u32 rd_addr) +{ + u32 rd_data; + int i; + + iowrite32(rd_addr, ctl->addr); + iowrite32(XGENE_ENET_RD_CMD, ctl->cmd); + + /* wait for read command to complete */ + for (i = 0; i < 10; i++) { + if (ioread32(ctl->cmd_done)) { + rd_data = ioread32(ctl->ctl); + iowrite32(0, ctl->cmd); + + return rd_data; + } + udelay(1); + } + + pr_err("%s: mac read failed, addr: %04x\n", __func__, rd_addr); + + return 0; +} + +static u32 xgene_enet_rd_mac(struct xgene_enet_pdata *p, u32 rd_addr) +{ + struct xgene_indirect_ctl ctl = { + .addr = p->mcx_mac_addr + MAC_ADDR_REG_OFFSET, + .ctl = p->mcx_mac_addr + MAC_READ_REG_OFFSET, + .cmd = p->mcx_mac_addr + MAC_COMMAND_REG_OFFSET, + .cmd_done = p->mcx_mac_addr + MAC_COMMAND_DONE_REG_OFFSET + }; + + return xgene_enet_rd_indirect(&ctl, rd_addr); +} + +static int xgene_enet_ecc_init(struct xgene_enet_pdata *p) +{ + struct net_device *ndev = p->ndev; + u32 data; + int i = 0; + + xgene_enet_wr_diag_csr(p, ENET_CFG_MEM_RAM_SHUTDOWN_ADDR, 0); + do { + usleep_range(100, 110); + data = xgene_enet_rd_diag_csr(p, ENET_BLOCK_MEM_RDY_ADDR); + if (data == ~0U) + return 0; + } while (++i < 10); + + netdev_err(ndev, "Failed to release memory from shutdown\n"); + return -ENODEV; +} + +static void xgene_enet_config_ring_if_assoc(struct xgene_enet_pdata *p) +{ + u32 val = 0xffffffff; + + xgene_enet_wr_ring_if(p, ENET_CFGSSQMIWQASSOC_ADDR, val); + xgene_enet_wr_ring_if(p, ENET_CFGSSQMIFPQASSOC_ADDR, val); +} + +static void xgene_mii_phy_write(struct xgene_enet_pdata *p, u8 phy_id, + u32 reg, u16 data) +{ + u32 addr, wr_data, done; + int i; + + addr = PHY_ADDR(phy_id) | REG_ADDR(reg); + xgene_enet_wr_mac(p, MII_MGMT_ADDRESS_ADDR, addr); + + wr_data = PHY_CONTROL(data); + xgene_enet_wr_mac(p, MII_MGMT_CONTROL_ADDR, wr_data); + + for (i = 0; i < 10; i++) { + done = xgene_enet_rd_mac(p, MII_MGMT_INDICATORS_ADDR); + if (!(done & BUSY_MASK)) + return; + usleep_range(10, 20); + } + + netdev_err(p->ndev, "MII_MGMT write failed\n"); +} + +static u32 xgene_mii_phy_read(struct xgene_enet_pdata *p, u8 phy_id, u32 reg) +{ + u32 addr, data, done; + int i; + + addr = PHY_ADDR(phy_id) | REG_ADDR(reg); + xgene_enet_wr_mac(p, MII_MGMT_ADDRESS_ADDR, addr); + xgene_enet_wr_mac(p, MII_MGMT_COMMAND_ADDR, READ_CYCLE_MASK); + + for (i = 0; i < 10; i++) { + done = xgene_enet_rd_mac(p, MII_MGMT_INDICATORS_ADDR); + if (!(done & BUSY_MASK)) { + data = xgene_enet_rd_mac(p, MII_MGMT_STATUS_ADDR); + xgene_enet_wr_mac(p, MII_MGMT_COMMAND_ADDR, 0); + + return data; + } + usleep_range(10, 20); + } + + netdev_err(p->ndev, "MII_MGMT read failed\n"); + + return 0; +} + +static void xgene_sgmac_reset(struct xgene_enet_pdata *p) +{ + xgene_enet_wr_mac(p, MAC_CONFIG_1_ADDR, SOFT_RESET1); + xgene_enet_wr_mac(p, MAC_CONFIG_1_ADDR, 0); +} + +static void xgene_sgmac_set_mac_addr(struct xgene_enet_pdata *p) +{ + u32 addr0, addr1; + u8 *dev_addr = p->ndev->dev_addr; + + addr0 = (dev_addr[3] << 24) | (dev_addr[2] << 16) | + (dev_addr[1] << 8) | dev_addr[0]; + xgene_enet_wr_mac(p, STATION_ADDR0_ADDR, addr0); + + addr1 = xgene_enet_rd_mac(p, STATION_ADDR1_ADDR); + addr1 |= (dev_addr[5] << 24) | (dev_addr[4] << 16); + xgene_enet_wr_mac(p, STATION_ADDR1_ADDR, addr1); +} + +static u32 xgene_enet_link_status(struct xgene_enet_pdata *p) +{ + u32 data; + + data = xgene_mii_phy_read(p, INT_PHY_ADDR, + SGMII_BASE_PAGE_ABILITY_ADDR >> 2); + + return data & LINK_UP; +} + +static void xgene_sgmac_init(struct xgene_enet_pdata *p) +{ + u32 data, loop = 10; + u32 offset = p->port_id * 4; + + xgene_sgmac_reset(p); + + /* Enable auto-negotiation */ + xgene_mii_phy_write(p, INT_PHY_ADDR, SGMII_CONTROL_ADDR >> 2, 0x1000); + xgene_mii_phy_write(p, INT_PHY_ADDR, SGMII_TBI_CONTROL_ADDR >> 2, 0); + + while (loop--) { + data = xgene_mii_phy_read(p, INT_PHY_ADDR, + SGMII_STATUS_ADDR >> 2); + if ((data & AUTO_NEG_COMPLETE) && (data & LINK_STATUS)) + break; + usleep_range(10, 20); + } + if (!(data & AUTO_NEG_COMPLETE) || !(data & LINK_STATUS)) + netdev_err(p->ndev, "Auto-negotiation failed\n"); + + data = xgene_enet_rd_mac(p, MAC_CONFIG_2_ADDR); + ENET_INTERFACE_MODE2_SET(&data, 2); + xgene_enet_wr_mac(p, MAC_CONFIG_2_ADDR, data | FULL_DUPLEX2); + xgene_enet_wr_mac(p, INTERFACE_CONTROL_ADDR, ENET_GHD_MODE); + + data = xgene_enet_rd_csr(p, ENET_SPARE_CFG_REG_ADDR); + data |= MPA_IDLE_WITH_QMI_EMPTY; + xgene_enet_wr_csr(p, ENET_SPARE_CFG_REG_ADDR, data); + + xgene_sgmac_set_mac_addr(p); + + data = xgene_enet_rd_csr(p, DEBUG_REG_ADDR); + data |= CFG_BYPASS_UNISEC_TX | CFG_BYPASS_UNISEC_RX; + xgene_enet_wr_csr(p, DEBUG_REG_ADDR, data); + + /* Adjust MDC clock frequency */ + data = xgene_enet_rd_mac(p, MII_MGMT_CONFIG_ADDR); + MGMT_CLOCK_SEL_SET(&data, 7); + xgene_enet_wr_mac(p, MII_MGMT_CONFIG_ADDR, data); + + /* Enable drop if bufpool not available */ + data = xgene_enet_rd_csr(p, RSIF_CONFIG_REG_ADDR); + data |= CFG_RSIF_FPBUFF_TIMEOUT_EN; + xgene_enet_wr_csr(p, RSIF_CONFIG_REG_ADDR, data); + + /* Rtype should be copied from FP */ + xgene_enet_wr_csr(p, RSIF_RAM_DBG_REG0_ADDR, 0); + + /* Bypass traffic gating */ + xgene_enet_wr_csr(p, CFG_LINK_AGGR_RESUME_0_ADDR + offset, TX_PORT0); + xgene_enet_wr_csr(p, CFG_BYPASS_ADDR, RESUME_TX); + xgene_enet_wr_csr(p, SG_RX_DV_GATE_REG_0_ADDR + offset, RESUME_RX0); +} + +static void xgene_sgmac_rxtx(struct xgene_enet_pdata *p, u32 bits, bool set) +{ + u32 data; + + data = xgene_enet_rd_mac(p, MAC_CONFIG_1_ADDR); + + if (set) + data |= bits; + else + data &= ~bits; + + xgene_enet_wr_mac(p, MAC_CONFIG_1_ADDR, data); +} + +static void xgene_sgmac_rx_enable(struct xgene_enet_pdata *p) +{ + xgene_sgmac_rxtx(p, RX_EN, true); +} + +static void xgene_sgmac_tx_enable(struct xgene_enet_pdata *p) +{ + xgene_sgmac_rxtx(p, TX_EN, true); +} + +static void xgene_sgmac_rx_disable(struct xgene_enet_pdata *p) +{ + xgene_sgmac_rxtx(p, RX_EN, false); +} + +static void xgene_sgmac_tx_disable(struct xgene_enet_pdata *p) +{ + xgene_sgmac_rxtx(p, TX_EN, false); +} + +static int xgene_enet_reset(struct xgene_enet_pdata *p) +{ + if (!xgene_ring_mgr_init(p)) + return -ENODEV; + + clk_prepare_enable(p->clk); + clk_disable_unprepare(p->clk); + clk_prepare_enable(p->clk); + + xgene_enet_ecc_init(p); + xgene_enet_config_ring_if_assoc(p); + + return 0; +} + +static void xgene_enet_cle_bypass(struct xgene_enet_pdata *p, + u32 dst_ring_num, u16 bufpool_id) +{ + u32 data, fpsel; + u32 offset = p->port_id * MAC_OFFSET; + + data = CFG_CLE_BYPASS_EN0; + xgene_enet_wr_csr(p, CLE_BYPASS_REG0_0_ADDR + offset, data); + + fpsel = xgene_enet_ring_bufnum(bufpool_id) - 0x20; + data = CFG_CLE_DSTQID0(dst_ring_num) | CFG_CLE_FPSEL0(fpsel); + xgene_enet_wr_csr(p, CLE_BYPASS_REG1_0_ADDR + offset, data); +} + +static void xgene_enet_shutdown(struct xgene_enet_pdata *p) +{ + clk_disable_unprepare(p->clk); +} + +static void xgene_enet_link_state(struct work_struct *work) +{ + struct xgene_enet_pdata *p = container_of(to_delayed_work(work), + struct xgene_enet_pdata, link_work); + struct net_device *ndev = p->ndev; + u32 link, poll_interval; + + link = xgene_enet_link_status(p); + if (link) { + if (!netif_carrier_ok(ndev)) { + netif_carrier_on(ndev); + xgene_sgmac_init(p); + xgene_sgmac_rx_enable(p); + xgene_sgmac_tx_enable(p); + netdev_info(ndev, "Link is Up - 1Gbps\n"); + } + poll_interval = PHY_POLL_LINK_ON; + } else { + if (netif_carrier_ok(ndev)) { + xgene_sgmac_rx_disable(p); + xgene_sgmac_tx_disable(p); + netif_carrier_off(ndev); + netdev_info(ndev, "Link is Down\n"); + } + poll_interval = PHY_POLL_LINK_OFF; + } + + schedule_delayed_work(&p->link_work, poll_interval); +} + +struct xgene_mac_ops xgene_sgmac_ops = { + .init = xgene_sgmac_init, + .reset = xgene_sgmac_reset, + .rx_enable = xgene_sgmac_rx_enable, + .tx_enable = xgene_sgmac_tx_enable, + .rx_disable = xgene_sgmac_rx_disable, + .tx_disable = xgene_sgmac_tx_disable, + .set_mac_addr = xgene_sgmac_set_mac_addr, + .link_state = xgene_enet_link_state +}; + +struct xgene_port_ops xgene_sgport_ops = { + .reset = xgene_enet_reset, + .cle_bypass = xgene_enet_cle_bypass, + .shutdown = xgene_enet_shutdown +}; --- linux-3.13.0.orig/drivers/net/ethernet/apm/xgene/xgene_enet_sgmac.h +++ linux-3.13.0/drivers/net/ethernet/apm/xgene/xgene_enet_sgmac.h @@ -0,0 +1,41 @@ +/* Applied Micro X-Gene SoC Ethernet Driver + * + * Copyright (c) 2014, Applied Micro Circuits Corporation + * Authors: Iyappan Subramanian + * Keyur Chudgar + * + * 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 . + */ + +#ifndef __XGENE_ENET_SGMAC_H__ +#define __XGENE_ENET_SGMAC_H__ + +#define PHY_ADDR(src) (((src)<<8) & GENMASK(12, 8)) +#define REG_ADDR(src) ((src) & GENMASK(4, 0)) +#define PHY_CONTROL(src) ((src) & GENMASK(15, 0)) +#define INT_PHY_ADDR 0x1e +#define SGMII_TBI_CONTROL_ADDR 0x44 +#define SGMII_CONTROL_ADDR 0x00 +#define SGMII_STATUS_ADDR 0x04 +#define SGMII_BASE_PAGE_ABILITY_ADDR 0x14 +#define AUTO_NEG_COMPLETE BIT(5) +#define LINK_STATUS BIT(2) +#define LINK_UP BIT(15) +#define MPA_IDLE_WITH_QMI_EMPTY BIT(12) +#define SG_RX_DV_GATE_REG_0_ADDR 0x0dfc + +extern struct xgene_mac_ops xgene_sgmac_ops; +extern struct xgene_port_ops xgene_sgport_ops; + +#endif /* __XGENE_ENET_SGMAC_H__ */ --- linux-3.13.0.orig/drivers/net/ethernet/apm/xgene/xgene_enet_xgmac.c +++ linux-3.13.0/drivers/net/ethernet/apm/xgene/xgene_enet_xgmac.c @@ -0,0 +1,337 @@ +/* Applied Micro X-Gene SoC Ethernet Driver + * + * Copyright (c) 2014, Applied Micro Circuits Corporation + * Authors: Iyappan Subramanian + * Keyur Chudgar + * + * 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 . + */ + +#include "xgene_enet_main.h" +#include "xgene_enet_hw.h" +#include "xgene_enet_xgmac.h" + +static void xgene_enet_wr_csr(struct xgene_enet_pdata *pdata, + u32 offset, u32 val) +{ + void __iomem *addr = pdata->eth_csr_addr + offset; + + iowrite32(val, addr); +} + +static void xgene_enet_wr_ring_if(struct xgene_enet_pdata *pdata, + u32 offset, u32 val) +{ + void __iomem *addr = pdata->eth_ring_if_addr + offset; + + iowrite32(val, addr); +} + +static void xgene_enet_wr_diag_csr(struct xgene_enet_pdata *pdata, + u32 offset, u32 val) +{ + void __iomem *addr = pdata->eth_diag_csr_addr + offset; + + iowrite32(val, addr); +} + +static bool xgene_enet_wr_indirect(void __iomem *addr, void __iomem *wr, + void __iomem *cmd, void __iomem *cmd_done, + u32 wr_addr, u32 wr_data) +{ + u32 done; + u8 wait = 10; + + iowrite32(wr_addr, addr); + iowrite32(wr_data, wr); + iowrite32(XGENE_ENET_WR_CMD, cmd); + + /* wait for write command to complete */ + while (!(done = ioread32(cmd_done)) && wait--) + udelay(1); + + if (!done) + return false; + + iowrite32(0, cmd); + + return true; +} + +static void xgene_enet_wr_mac(struct xgene_enet_pdata *pdata, + u32 wr_addr, u32 wr_data) +{ + void __iomem *addr, *wr, *cmd, *cmd_done; + + addr = pdata->mcx_mac_addr + MAC_ADDR_REG_OFFSET; + wr = pdata->mcx_mac_addr + MAC_WRITE_REG_OFFSET; + cmd = pdata->mcx_mac_addr + MAC_COMMAND_REG_OFFSET; + cmd_done = pdata->mcx_mac_addr + MAC_COMMAND_DONE_REG_OFFSET; + + if (!xgene_enet_wr_indirect(addr, wr, cmd, cmd_done, wr_addr, wr_data)) + netdev_err(pdata->ndev, "MCX mac write failed, addr: %04x\n", + wr_addr); +} + +static void xgene_enet_rd_csr(struct xgene_enet_pdata *pdata, + u32 offset, u32 *val) +{ + void __iomem *addr = pdata->eth_csr_addr + offset; + + *val = ioread32(addr); +} + +static void xgene_enet_rd_diag_csr(struct xgene_enet_pdata *pdata, + u32 offset, u32 *val) +{ + void __iomem *addr = pdata->eth_diag_csr_addr + offset; + + *val = ioread32(addr); +} + +static bool xgene_enet_rd_indirect(void __iomem *addr, void __iomem *rd, + void __iomem *cmd, void __iomem *cmd_done, + u32 rd_addr, u32 *rd_data) +{ + u32 done; + u8 wait = 10; + + iowrite32(rd_addr, addr); + iowrite32(XGENE_ENET_RD_CMD, cmd); + + /* wait for read command to complete */ + while (!(done = ioread32(cmd_done)) && wait--) + udelay(1); + + if (!done) + return false; + + *rd_data = ioread32(rd); + iowrite32(0, cmd); + + return true; +} + +static void xgene_enet_rd_mac(struct xgene_enet_pdata *pdata, + u32 rd_addr, u32 *rd_data) +{ + void __iomem *addr, *rd, *cmd, *cmd_done; + + addr = pdata->mcx_mac_addr + MAC_ADDR_REG_OFFSET; + rd = pdata->mcx_mac_addr + MAC_READ_REG_OFFSET; + cmd = pdata->mcx_mac_addr + MAC_COMMAND_REG_OFFSET; + cmd_done = pdata->mcx_mac_addr + MAC_COMMAND_DONE_REG_OFFSET; + + if (!xgene_enet_rd_indirect(addr, rd, cmd, cmd_done, rd_addr, rd_data)) + netdev_err(pdata->ndev, "MCX mac read failed, addr: %04x\n", + rd_addr); +} + +static int xgene_enet_ecc_init(struct xgene_enet_pdata *pdata) +{ + struct net_device *ndev = pdata->ndev; + u32 data; + u8 wait = 10; + + xgene_enet_wr_diag_csr(pdata, ENET_CFG_MEM_RAM_SHUTDOWN_ADDR, 0x0); + do { + usleep_range(100, 110); + xgene_enet_rd_diag_csr(pdata, ENET_BLOCK_MEM_RDY_ADDR, &data); + } while ((data != 0xffffffff) && wait--); + + if (data != 0xffffffff) { + netdev_err(ndev, "Failed to release memory from shutdown\n"); + return -ENODEV; + } + + return 0; +} + +static void xgene_enet_config_ring_if_assoc(struct xgene_enet_pdata *pdata) +{ + xgene_enet_wr_ring_if(pdata, ENET_CFGSSQMIWQASSOC_ADDR, 0); + xgene_enet_wr_ring_if(pdata, ENET_CFGSSQMIFPQASSOC_ADDR, 0); + xgene_enet_wr_ring_if(pdata, ENET_CFGSSQMIQMLITEWQASSOC_ADDR, 0); + xgene_enet_wr_ring_if(pdata, ENET_CFGSSQMIQMLITEFPQASSOC_ADDR, 0); +} + +static void xgene_xgmac_reset(struct xgene_enet_pdata *pdata) +{ + xgene_enet_wr_mac(pdata, AXGMAC_CONFIG_0, HSTMACRST); + xgene_enet_wr_mac(pdata, AXGMAC_CONFIG_0, 0); +} + +static void xgene_xgmac_set_mac_addr(struct xgene_enet_pdata *pdata) +{ + u32 addr0, addr1; + u8 *dev_addr = pdata->ndev->dev_addr; + + addr0 = (dev_addr[3] << 24) | (dev_addr[2] << 16) | + (dev_addr[1] << 8) | dev_addr[0]; + addr1 = (dev_addr[5] << 24) | (dev_addr[4] << 16); + + xgene_enet_wr_mac(pdata, HSTMACADR_LSW_ADDR, addr0); + xgene_enet_wr_mac(pdata, HSTMACADR_MSW_ADDR, addr1); +} + +static u32 xgene_enet_link_status(struct xgene_enet_pdata *pdata) +{ + u32 data; + + xgene_enet_rd_csr(pdata, XG_LINK_STATUS_ADDR, &data); + + return data; +} + +static void xgene_xgmac_init(struct xgene_enet_pdata *pdata) +{ + u32 data; + + xgene_xgmac_reset(pdata); + + xgene_enet_rd_mac(pdata, AXGMAC_CONFIG_1, &data); + data |= HSTPPEN; + data &= ~HSTLENCHK; + xgene_enet_wr_mac(pdata, AXGMAC_CONFIG_1, data); + + xgene_enet_wr_mac(pdata, HSTMAXFRAME_LENGTH_ADDR, 0x06000600); + xgene_xgmac_set_mac_addr(pdata); + + xgene_enet_rd_csr(pdata, XG_RSIF_CONFIG_REG_ADDR, &data); + data |= CFG_RSIF_FPBUFF_TIMEOUT_EN; + xgene_enet_wr_csr(pdata, XG_RSIF_CONFIG_REG_ADDR, data); + + xgene_enet_wr_csr(pdata, XG_CFG_BYPASS_ADDR, RESUME_TX); + xgene_enet_wr_csr(pdata, XGENET_RX_DV_GATE_REG_0_ADDR, 0); + xgene_enet_rd_csr(pdata, XG_ENET_SPARE_CFG_REG_ADDR, &data); + data |= BIT(12); + xgene_enet_wr_csr(pdata, XG_ENET_SPARE_CFG_REG_ADDR, data); + xgene_enet_wr_csr(pdata, XG_ENET_SPARE_CFG_REG_1_ADDR, 0x82); +} + +static void xgene_xgmac_rx_enable(struct xgene_enet_pdata *pdata) +{ + u32 data; + + xgene_enet_rd_mac(pdata, AXGMAC_CONFIG_1, &data); + xgene_enet_wr_mac(pdata, AXGMAC_CONFIG_1, data | HSTRFEN); +} + +static void xgene_xgmac_tx_enable(struct xgene_enet_pdata *pdata) +{ + u32 data; + + xgene_enet_rd_mac(pdata, AXGMAC_CONFIG_1, &data); + xgene_enet_wr_mac(pdata, AXGMAC_CONFIG_1, data | HSTTFEN); +} + +static void xgene_xgmac_rx_disable(struct xgene_enet_pdata *pdata) +{ + u32 data; + + xgene_enet_rd_mac(pdata, AXGMAC_CONFIG_1, &data); + xgene_enet_wr_mac(pdata, AXGMAC_CONFIG_1, data & ~HSTRFEN); +} + +static void xgene_xgmac_tx_disable(struct xgene_enet_pdata *pdata) +{ + u32 data; + + xgene_enet_rd_mac(pdata, AXGMAC_CONFIG_1, &data); + xgene_enet_wr_mac(pdata, AXGMAC_CONFIG_1, data & ~HSTTFEN); +} + +static int xgene_enet_reset(struct xgene_enet_pdata *pdata) +{ + if (!xgene_ring_mgr_init(pdata)) + return -ENODEV; + + clk_prepare_enable(pdata->clk); + clk_disable_unprepare(pdata->clk); + clk_prepare_enable(pdata->clk); + + xgene_enet_ecc_init(pdata); + xgene_enet_config_ring_if_assoc(pdata); + + return 0; +} + +static void xgene_enet_xgcle_bypass(struct xgene_enet_pdata *pdata, + u32 dst_ring_num, u16 bufpool_id) +{ + u32 cb, fpsel; + + xgene_enet_rd_csr(pdata, XCLE_BYPASS_REG0_ADDR, &cb); + cb |= CFG_CLE_BYPASS_EN0; + CFG_CLE_IP_PROTOCOL0_SET(&cb, 3); + xgene_enet_wr_csr(pdata, XCLE_BYPASS_REG0_ADDR, cb); + + fpsel = xgene_enet_ring_bufnum(bufpool_id) - 0x20; + xgene_enet_rd_csr(pdata, XCLE_BYPASS_REG1_ADDR, &cb); + CFG_CLE_DSTQID0_SET(&cb, dst_ring_num); + CFG_CLE_FPSEL0_SET(&cb, fpsel); + xgene_enet_wr_csr(pdata, XCLE_BYPASS_REG1_ADDR, cb); +} + +static void xgene_enet_shutdown(struct xgene_enet_pdata *pdata) +{ + clk_disable_unprepare(pdata->clk); +} + +static void xgene_enet_link_state(struct work_struct *work) +{ + struct xgene_enet_pdata *pdata = container_of(to_delayed_work(work), + struct xgene_enet_pdata, link_work); + struct net_device *ndev = pdata->ndev; + u32 link_status, poll_interval; + + link_status = xgene_enet_link_status(pdata); + if (link_status) { + if (!netif_carrier_ok(ndev)) { + netif_carrier_on(ndev); + xgene_xgmac_init(pdata); + xgene_xgmac_rx_enable(pdata); + xgene_xgmac_tx_enable(pdata); + netdev_info(ndev, "Link is Up - 10Gbps\n"); + } + poll_interval = PHY_POLL_LINK_ON; + } else { + if (netif_carrier_ok(ndev)) { + xgene_xgmac_rx_disable(pdata); + xgene_xgmac_tx_disable(pdata); + netif_carrier_off(ndev); + netdev_info(ndev, "Link is Down\n"); + } + poll_interval = PHY_POLL_LINK_OFF; + } + + schedule_delayed_work(&pdata->link_work, poll_interval); +} + +struct xgene_mac_ops xgene_xgmac_ops = { + .init = xgene_xgmac_init, + .reset = xgene_xgmac_reset, + .rx_enable = xgene_xgmac_rx_enable, + .tx_enable = xgene_xgmac_tx_enable, + .rx_disable = xgene_xgmac_rx_disable, + .tx_disable = xgene_xgmac_tx_disable, + .set_mac_addr = xgene_xgmac_set_mac_addr, + .link_state = xgene_enet_link_state +}; + +struct xgene_port_ops xgene_xgport_ops = { + .reset = xgene_enet_reset, + .cle_bypass = xgene_enet_xgcle_bypass, + .shutdown = xgene_enet_shutdown, +}; --- linux-3.13.0.orig/drivers/net/ethernet/apm/xgene/xgene_enet_xgmac.h +++ linux-3.13.0/drivers/net/ethernet/apm/xgene/xgene_enet_xgmac.h @@ -0,0 +1,53 @@ +/* Applied Micro X-Gene SoC Ethernet Driver + * + * Copyright (c) 2014, Applied Micro Circuits Corporation + * Authors: Iyappan Subramanian + * Keyur Chudgar + * + * 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 . + */ + +#ifndef __XGENE_ENET_XGMAC_H__ +#define __XGENE_ENET_XGMAC_H__ + +#define BLOCK_AXG_MAC_OFFSET 0x0800 +#define BLOCK_AXG_MAC_CSR_OFFSET 0x2000 + +#define AXGMAC_CONFIG_0 0x0000 +#define AXGMAC_CONFIG_1 0x0004 +#define HSTMACRST BIT(31) +#define HSTTCTLEN BIT(31) +#define HSTTFEN BIT(30) +#define HSTRCTLEN BIT(29) +#define HSTRFEN BIT(28) +#define HSTPPEN BIT(7) +#define HSTDRPLT64 BIT(5) +#define HSTLENCHK BIT(3) +#define HSTMACADR_LSW_ADDR 0x0010 +#define HSTMACADR_MSW_ADDR 0x0014 +#define HSTMAXFRAME_LENGTH_ADDR 0x0020 + +#define XG_RSIF_CONFIG_REG_ADDR 0x00a0 +#define XCLE_BYPASS_REG0_ADDR 0x0160 +#define XCLE_BYPASS_REG1_ADDR 0x0164 +#define XG_CFG_BYPASS_ADDR 0x0204 +#define XG_LINK_STATUS_ADDR 0x0228 +#define XG_ENET_SPARE_CFG_REG_ADDR 0x040c +#define XG_ENET_SPARE_CFG_REG_1_ADDR 0x0410 +#define XGENET_RX_DV_GATE_REG_0_ADDR 0x0804 + +extern struct xgene_mac_ops xgene_xgmac_ops; +extern struct xgene_port_ops xgene_xgport_ops; + +#endif /* __XGENE_ENET_XGMAC_H__ */ --- linux-3.13.0.orig/drivers/net/ethernet/atheros/alx/main.c +++ linux-3.13.0/drivers/net/ethernet/atheros/alx/main.c @@ -184,15 +184,16 @@ schedule_work(&alx->reset_wk); } -static bool alx_clean_rx_irq(struct alx_priv *alx, int budget) +static int alx_clean_rx_irq(struct alx_priv *alx, int budget) { struct alx_rx_queue *rxq = &alx->rxq; struct alx_rrd *rrd; struct alx_buffer *rxb; struct sk_buff *skb; u16 length, rfd_cleaned = 0; + int work = 0; - while (budget > 0) { + while (work < budget) { rrd = &rxq->rrd[rxq->rrd_read_idx]; if (!(rrd->word3 & cpu_to_le32(1 << RRD_UPDATED_SHIFT))) break; @@ -203,7 +204,7 @@ ALX_GET_FIELD(le32_to_cpu(rrd->word0), RRD_NOR) != 1) { alx_schedule_reset(alx); - return 0; + return work; } rxb = &rxq->bufs[rxq->read_idx]; @@ -243,7 +244,7 @@ } napi_gro_receive(&alx->napi, skb); - budget--; + work++; next_pkt: if (++rxq->read_idx == alx->rx_ringsz) @@ -258,21 +259,22 @@ if (rfd_cleaned) alx_refill_rx_ring(alx, GFP_ATOMIC); - return budget > 0; + return work; } static int alx_poll(struct napi_struct *napi, int budget) { struct alx_priv *alx = container_of(napi, struct alx_priv, napi); struct alx_hw *hw = &alx->hw; - bool complete = true; unsigned long flags; + bool tx_complete; + int work; - complete = alx_clean_tx_irq(alx) && - alx_clean_rx_irq(alx, budget); + tx_complete = alx_clean_tx_irq(alx); + work = alx_clean_rx_irq(alx, budget); - if (!complete) - return 1; + if (!tx_complete || work == budget) + return budget; napi_complete(&alx->napi); @@ -284,7 +286,7 @@ alx_post_write(hw); - return 0; + return work; } static irqreturn_t alx_intr_handle(struct alx_priv *alx, u32 intr) --- linux-3.13.0.orig/drivers/net/ethernet/atheros/atl1c/atl1c_main.c +++ linux-3.13.0/drivers/net/ethernet/atheros/atl1c/atl1c_main.c @@ -1018,13 +1018,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-3.13.0.orig/drivers/net/ethernet/atheros/atlx/atl2.c +++ linux-3.13.0/drivers/net/ethernet/atheros/atlx/atl2.c @@ -1413,7 +1413,7 @@ err = -EIO; - netdev->hw_features = NETIF_F_SG | NETIF_F_HW_VLAN_CTAG_RX; + netdev->hw_features = NETIF_F_HW_VLAN_CTAG_RX; netdev->features |= (NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_HW_VLAN_CTAG_RX); /* Init PHY as early as possible due to power saving issue */ --- linux-3.13.0.orig/drivers/net/ethernet/broadcom/b44.c +++ linux-3.13.0/drivers/net/ethernet/broadcom/b44.c @@ -1654,7 +1654,7 @@ unsigned int start; do { - start = u64_stats_fetch_begin_bh(&hwstat->syncp); + start = u64_stats_fetch_begin_irq(&hwstat->syncp); /* Convert HW stats into rtnl_link_stats64 stats. */ nstat->rx_packets = hwstat->rx_pkts; @@ -1688,7 +1688,7 @@ /* Carrier lost counter seems to be broken for some devices */ nstat->tx_carrier_errors = hwstat->tx_carrier_lost; #endif - } while (u64_stats_fetch_retry_bh(&hwstat->syncp, start)); + } while (u64_stats_fetch_retry_irq(&hwstat->syncp, start)); return nstat; } @@ -2021,12 +2021,12 @@ do { data_src = &hwstat->tx_good_octets; data_dst = data; - start = u64_stats_fetch_begin_bh(&hwstat->syncp); + start = u64_stats_fetch_begin_irq(&hwstat->syncp); for (i = 0; i < ARRAY_SIZE(b44_gstrings); i++) *data_dst++ = *data_src++; - } while (u64_stats_fetch_retry_bh(&hwstat->syncp, start)); + } while (u64_stats_fetch_retry_irq(&hwstat->syncp, start)); } static void b44_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol) --- linux-3.13.0.orig/drivers/net/ethernet/broadcom/bnx2.c +++ linux-3.13.0/drivers/net/ethernet/broadcom/bnx2.c @@ -2490,6 +2490,7 @@ bp->fw_wr_seq++; msg_data |= bp->fw_wr_seq; + bp->fw_last_msg = msg_data; bnx2_shmem_wr(bp, BNX2_DRV_MB, msg_data); @@ -2868,7 +2869,7 @@ sw_cons = BNX2_NEXT_TX_BD(sw_cons); tx_bytes += skb->len; - dev_kfree_skb(skb); + dev_kfree_skb_any(skb); tx_pkt++; if (tx_pkt == budget) break; @@ -3982,8 +3983,23 @@ wol_msg = BNX2_DRV_MSG_CODE_SUSPEND_NO_WOL; } - if (!(bp->flags & BNX2_FLAG_NO_WOL)) - bnx2_fw_sync(bp, BNX2_DRV_MSG_DATA_WAIT3 | wol_msg, 1, 0); + if (!(bp->flags & BNX2_FLAG_NO_WOL)) { + u32 val; + + wol_msg |= BNX2_DRV_MSG_DATA_WAIT3; + if (bp->fw_last_msg || BNX2_CHIP(bp) != BNX2_CHIP_5709) { + bnx2_fw_sync(bp, wol_msg, 1, 0); + return; + } + /* Tell firmware not to power down the PHY yet, otherwise + * the chip will take a long time to respond to MMIO reads. + */ + val = bnx2_shmem_rd(bp, BNX2_PORT_FEATURE); + bnx2_shmem_wr(bp, BNX2_PORT_FEATURE, + val | BNX2_PORT_FEATURE_ASF_ENABLED); + bnx2_fw_sync(bp, wol_msg, 1, 0); + bnx2_shmem_wr(bp, BNX2_PORT_FEATURE, val); + } } @@ -4015,9 +4031,22 @@ if (bp->wol) pci_set_power_state(bp->pdev, PCI_D3hot); - } else { - pci_set_power_state(bp->pdev, PCI_D3hot); + break; + } + if (!bp->fw_last_msg && BNX2_CHIP(bp) == BNX2_CHIP_5709) { + u32 val; + + /* Tell firmware not to power down the PHY yet, + * otherwise the other port may not respond to + * MMIO reads. + */ + val = bnx2_shmem_rd(bp, BNX2_BC_STATE_CONDITION); + val &= ~BNX2_CONDITION_PM_STATE_MASK; + val |= BNX2_CONDITION_PM_STATE_UNPREP; + bnx2_shmem_wr(bp, BNX2_BC_STATE_CONDITION, val); + } + pci_set_power_state(bp->pdev, PCI_D3hot); /* No more memory access after this point until * device is brought back to D0. @@ -6593,7 +6622,7 @@ mapping = dma_map_single(&bp->pdev->dev, skb->data, len, PCI_DMA_TODEVICE); if (dma_mapping_error(&bp->pdev->dev, mapping)) { - dev_kfree_skb(skb); + dev_kfree_skb_any(skb); return NETDEV_TX_OK; } @@ -6686,7 +6715,7 @@ PCI_DMA_TODEVICE); } - dev_kfree_skb(skb); + dev_kfree_skb_any(skb); return NETDEV_TX_OK; } --- linux-3.13.0.orig/drivers/net/ethernet/broadcom/bnx2.h +++ linux-3.13.0/drivers/net/ethernet/broadcom/bnx2.h @@ -6890,6 +6890,7 @@ u16 fw_wr_seq; u16 fw_drv_pulse_wr_seq; + u32 fw_last_msg; int rx_max_ring; int rx_ring_size; @@ -7396,6 +7397,10 @@ #define BNX2_CONDITION_MFW_RUN_NCSI 0x00006000 #define BNX2_CONDITION_MFW_RUN_NONE 0x0000e000 #define BNX2_CONDITION_MFW_RUN_MASK 0x0000e000 +#define BNX2_CONDITION_PM_STATE_MASK 0x00030000 +#define BNX2_CONDITION_PM_STATE_FULL 0x00030000 +#define BNX2_CONDITION_PM_STATE_PREP 0x00020000 +#define BNX2_CONDITION_PM_STATE_UNPREP 0x00010000 #define BNX2_BC_STATE_DEBUG_CMD 0x1dc #define BNX2_BC_STATE_BC_DBG_CMD_SIGNATURE 0x42440000 --- linux-3.13.0.orig/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h +++ linux-3.13.0/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h @@ -337,6 +337,7 @@ u8 flags; /* Set on the first BD descriptor when there is a split BD */ #define BNX2X_TSO_SPLIT_BD (1<<0) +#define BNX2X_HAS_SECOND_PBD (1<<1) }; struct sw_rx_page { --- linux-3.13.0.orig/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c +++ linux-3.13.0/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c @@ -186,6 +186,12 @@ --nbd; bd_idx = TX_BD(NEXT_TX_IDX(bd_idx)); + if (tx_buf->flags & BNX2X_HAS_SECOND_PBD) { + /* Skip second parse bd... */ + --nbd; + bd_idx = TX_BD(NEXT_TX_IDX(bd_idx)); + } + /* TSO headers+data bds share a common mapping. See bnx2x_tx_split() */ if (tx_buf->flags & BNX2X_TSO_SPLIT_BD) { tx_data_bd = &txdata->tx_desc_ring[bd_idx].reg_bd; @@ -755,7 +761,8 @@ return; } - bnx2x_frag_free(fp, new_data); + if (new_data) + bnx2x_frag_free(fp, new_data); drop: /* drop the packet and keep the buffer in the bin */ DP(NETIF_MSG_RX_STATUS, @@ -861,6 +868,18 @@ bd_prod = RX_BD(bd_prod); bd_cons = RX_BD(bd_cons); + /* A rmb() is required to ensure that the CQE is not read + * before it is written by the adapter DMA. PCI ordering + * rules will make sure the other fields are written before + * the marker at the end of struct eth_fast_path_rx_cqe + * but without rmb() a weakly ordered processor can process + * stale data. Without the barrier TPA state-machine might + * enter inconsistent state and kernel stack might be + * provided with incorrect packet description - these lead + * to various kernel crashed. + */ + rmb(); + cqe_fp_flags = cqe_fp->type_error_flags; cqe_fp_type = cqe_fp_flags & ETH_FAST_PATH_RX_CQE_TYPE; @@ -1834,7 +1853,7 @@ } u16 bnx2x_select_queue(struct net_device *dev, struct sk_buff *skb, - void *accel_priv) + void *accel_priv, select_queue_fallback_t fallback) { struct bnx2x *bp = netdev_priv(dev); @@ -1856,7 +1875,7 @@ } /* select a non-FCoE queue */ - return __netdev_pick_tx(dev, skb) % BNX2X_NUM_ETH_QUEUES(bp); + return fallback(dev, skb) % BNX2X_NUM_ETH_QUEUES(bp); } void bnx2x_set_num_queues(struct bnx2x *bp) @@ -3081,7 +3100,7 @@ } #endif if (!bnx2x_fp_lock_napi(fp)) - return work_done; + return budget; for_each_cos_in_tx_queue(fp, cos) if (bnx2x_tx_queue_has_work(fp->txdata_ptr[cos])) @@ -3824,6 +3843,9 @@ /* set encapsulation flag in start BD */ SET_FLAG(tx_start_bd->general_data, ETH_TX_START_BD_TUNNEL_EXIST, 1); + + tx_buf->flags |= BNX2X_HAS_SECOND_PBD; + nbd++; } else if (xmit_type & XMIT_CSUM) { /* Set PBD in checksum offload case w/o encapsulation */ --- linux-3.13.0.orig/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h +++ linux-3.13.0/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h @@ -525,7 +525,7 @@ /* select_queue callback */ u16 bnx2x_select_queue(struct net_device *dev, struct sk_buff *skb, - void *accel_priv); + void *accel_priv, select_queue_fallback_t fallback); static inline void bnx2x_update_rx_prod(struct bnx2x *bp, struct bnx2x_fastpath *fp, --- linux-3.13.0.orig/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c +++ linux-3.13.0/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c @@ -3749,7 +3749,8 @@ static void bnx2x_warpcore_enable_AN_KR(struct bnx2x_phy *phy, struct link_params *params, struct link_vars *vars) { - u16 lane, i, cl72_ctrl, an_adv = 0; + u16 lane, i, cl72_ctrl, an_adv = 0, val; + u32 wc_lane_config; struct bnx2x *bp = params->bp; static struct bnx2x_reg_set reg_set[] = { {MDIO_WC_DEVAD, MDIO_WC_REG_SERDESDIGITAL_CONTROL1000X2, 0x7}, @@ -3868,15 +3869,27 @@ /* Enable Auto-Detect to support 1G over CL37 as well */ bnx2x_cl45_write(bp, phy, MDIO_WC_DEVAD, MDIO_WC_REG_SERDESDIGITAL_CONTROL1000X1, 0x10); - + wc_lane_config = REG_RD(bp, params->shmem_base + + offsetof(struct shmem_region, dev_info. + shared_hw_config.wc_lane_config)); + bnx2x_cl45_read(bp, phy, MDIO_WC_DEVAD, + MDIO_WC_REG_RX0_PCI_CTRL + (lane << 4), &val); /* Force cl48 sync_status LOW to avoid getting stuck in CL73 * parallel-detect loop when CL73 and CL37 are enabled. */ - CL22_WR_OVER_CL45(bp, phy, MDIO_REG_BANK_AER_BLOCK, - MDIO_AER_BLOCK_AER_REG, 0); + val |= 1 << 11; + + /* Restore Polarity settings in case it was run over by + * previous link owner + */ + if (wc_lane_config & + (SHARED_HW_CFG_RX_LANE0_POL_FLIP_ENABLED << lane)) + val |= 3 << 2; + else + val &= ~(3 << 2); bnx2x_cl45_write(bp, phy, MDIO_WC_DEVAD, - MDIO_WC_REG_RXB_ANA_RX_CONTROL_PCI, 0x0800); - bnx2x_set_aer_mmd(params, phy); + MDIO_WC_REG_RX0_PCI_CTRL + (lane << 4), + val); bnx2x_disable_kr2(params, vars, phy); } --- linux-3.13.0.orig/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c +++ linux-3.13.0/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c @@ -12262,6 +12262,10 @@ /* clean indirect addresses */ pci_write_config_dword(bp->pdev, PCICFG_GRC_ADDRESS, PCICFG_VENDOR_ID_OFFSET); + + /* Set PCIe reset type to fundamental for EEH recovery */ + pdev->needs_freset = 1; + /* * Clean the following indirect addresses for all functions since it * is not used by the driver. @@ -12998,8 +13002,8 @@ netdev_reset_tc(bp->dev); del_timer_sync(&bp->timer); - cancel_delayed_work(&bp->sp_task); - cancel_delayed_work(&bp->period_task); + cancel_delayed_work_sync(&bp->sp_task); + cancel_delayed_work_sync(&bp->period_task); spin_lock_bh(&bp->stats_lock); bp->stats_state = STATS_STATE_DISABLED; --- linux-3.13.0.orig/drivers/net/ethernet/broadcom/tg3.c +++ linux-3.13.0/drivers/net/ethernet/broadcom/tg3.c @@ -326,6 +326,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), @@ -6577,7 +6578,7 @@ pkts_compl++; bytes_compl += skb->len; - dev_kfree_skb(skb); + dev_kfree_skb_any(skb); if (unlikely(tx_bug)) { tg3_tx_recover(tp); @@ -6827,8 +6828,7 @@ work_mask |= opaque_key; - if ((desc->err_vlan & RXD_ERR_MASK) != 0 && - (desc->err_vlan != RXD_ERR_ODD_NIBBLE_RCVD_MII)) { + if (desc->err_vlan & RXD_ERR_MASK) { drop_it: tg3_recycle_rx(tnapi, tpr, opaque_key, desc_idx, *post_ptr); @@ -6908,8 +6908,9 @@ skb->protocol = eth_type_trans(skb, tp->dev); if (len > (tp->dev->mtu + ETH_HLEN) && - skb->protocol != htons(ETH_P_8021Q)) { - dev_kfree_skb(skb); + skb->protocol != htons(ETH_P_8021Q) && + skb->protocol != htons(ETH_P_8021AD)) { + dev_kfree_skb_any(skb); goto drop_it_no_recycle; } @@ -7792,7 +7793,7 @@ PCI_DMA_TODEVICE); /* Make sure the mapping succeeded */ if (pci_dma_mapping_error(tp->pdev, new_addr)) { - dev_kfree_skb(new_skb); + dev_kfree_skb_any(new_skb); ret = -1; } else { u32 save_entry = *entry; @@ -7807,13 +7808,13 @@ new_skb->len, base_flags, mss, vlan)) { tg3_tx_skb_unmap(tnapi, save_entry, -1); - dev_kfree_skb(new_skb); + dev_kfree_skb_any(new_skb); ret = -1; } } } - dev_kfree_skb(skb); + dev_kfree_skb_any(skb); *pskb = new_skb; return ret; } @@ -7856,7 +7857,7 @@ } while (segs); tg3_tso_bug_end: - dev_kfree_skb(skb); + dev_kfree_skb_any(skb); return NETDEV_TX_OK; } @@ -7900,8 +7901,6 @@ entry = tnapi->tx_prod; base_flags = 0; - if (skb->ip_summed == CHECKSUM_PARTIAL) - base_flags |= TXD_FLAG_TCPUDP_CSUM; mss = skb_shinfo(skb)->gso_size; if (mss) { @@ -7917,6 +7916,13 @@ hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb) - ETH_HLEN; + /* HW/FW can not correctly segment packets that have been + * vlan encapsulated. + */ + if (skb->protocol == htons(ETH_P_8021Q) || + skb->protocol == htons(ETH_P_8021AD)) + return tg3_tso_bug(tp, skb); + if (!skb_is_gso_v6(skb)) { iph->check = 0; iph->tot_len = htons(mss + hdr_len); @@ -7963,6 +7969,17 @@ base_flags |= tsflags << 12; } } + } else if (skb->ip_summed == CHECKSUM_PARTIAL) { + /* HW/FW can not correctly checksum packets that have been + * vlan encapsulated. + */ + if (skb->protocol == htons(ETH_P_8021Q) || + skb->protocol == htons(ETH_P_8021AD)) { + if (skb_checksum_help(skb)) + goto drop; + } else { + base_flags |= TXD_FLAG_TCPUDP_CSUM; + } } if (tg3_flag(tp, USE_JUMBO_BDFLAG) && @@ -8078,7 +8095,7 @@ tg3_tx_skb_unmap(tnapi, tnapi->tx_prod, --i); tnapi->tx_buffers[tnapi->tx_prod].skb = NULL; drop: - dev_kfree_skb(skb); + dev_kfree_skb_any(skb); drop_nofree: tp->tx_dropped++; return NETDEV_TX_OK; @@ -8516,7 +8533,8 @@ if (tnapi->rx_rcb) memset(tnapi->rx_rcb, 0, TG3_RX_RCB_RING_BYTES(tp)); - if (tg3_rx_prodring_alloc(tp, &tnapi->prodring)) { + if (tnapi->prodring.rx_std && + tg3_rx_prodring_alloc(tp, &tnapi->prodring)) { tg3_free_rings(tp); return -ENOMEM; } @@ -10640,7 +10658,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); } @@ -12209,7 +12227,9 @@ if (tg3_flag(tp, MAX_RXPEND_64) && tp->rx_pending > 63) tp->rx_pending = 63; - tp->rx_jumbo_pending = ering->rx_jumbo_pending; + + if (tg3_flag(tp, JUMBO_RING_ENABLE)) + tp->rx_jumbo_pending = ering->rx_jumbo_pending; for (i = 0; i < tp->irq_max; i++) tp->napi[i].tx_pending = ering->tx_pending; @@ -13965,12 +13985,12 @@ tg3_netif_stop(tp); + tg3_set_mtu(dev, tp, new_mtu); + tg3_full_lock(tp, 1); tg3_halt(tp, RESET_KIND_SHUTDOWN, 1); - tg3_set_mtu(dev, tp, new_mtu); - /* Reset PHY, otherwise the read DMA engine will be in a mode that * breaks all requests to 256 bytes. */ @@ -17486,8 +17506,6 @@ tg3_init_bufmgr_config(tp); - features |= NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_HW_VLAN_CTAG_RX; - /* 5700 B0 chips do not support checksumming correctly due * to hardware bugs. */ @@ -17519,7 +17537,8 @@ features |= NETIF_F_TSO_ECN; } - dev->features |= features; + dev->features |= features | NETIF_F_HW_VLAN_CTAG_TX | + NETIF_F_HW_VLAN_CTAG_RX; dev->vlan_features |= features; /* @@ -17548,23 +17567,6 @@ goto err_out_apeunmap; } - /* - * Reset chip in case UNDI or EFI driver did not shutdown - * DMA self test will enable WDMAC and we'll see (spurious) - * pending DMA on the PCI bus at that point. - */ - if ((tr32(HOSTCC_MODE) & HOSTCC_MODE_ENABLE) || - (tr32(WDMAC_MODE) & WDMAC_MODE_ENABLE)) { - tw32(MEMARB_MODE, MEMARB_MODE_ENABLE); - tg3_halt(tp, RESET_KIND_SHUTDOWN, 1); - } - - err = tg3_test_dma(tp); - if (err) { - dev_err(&pdev->dev, "DMA engine test failed, aborting\n"); - goto err_out_apeunmap; - } - intmbx = MAILBOX_INTERRUPT_0 + TG3_64BIT_REG_LOW; rcvmbx = MAILBOX_RCVRET_CON_IDX_0 + TG3_64BIT_REG_LOW; sndmbx = MAILBOX_SNDHOST_PROD_IDX_0 + TG3_64BIT_REG_LOW; @@ -17609,6 +17611,23 @@ sndmbx += 0xc; } + /* + * Reset chip in case UNDI or EFI driver did not shutdown + * DMA self test will enable WDMAC and we'll see (spurious) + * pending DMA on the PCI bus at that point. + */ + if ((tr32(HOSTCC_MODE) & HOSTCC_MODE_ENABLE) || + (tr32(WDMAC_MODE) & WDMAC_MODE_ENABLE)) { + tw32(MEMARB_MODE, MEMARB_MODE_ENABLE); + tg3_halt(tp, RESET_KIND_SHUTDOWN, 1); + } + + err = tg3_test_dma(tp); + if (err) { + dev_err(&pdev->dev, "DMA engine test failed, aborting\n"); + goto err_out_apeunmap; + } + tg3_init_coal(tp); pci_set_drvdata(pdev, dev); --- linux-3.13.0.orig/drivers/net/ethernet/broadcom/tg3.h +++ linux-3.13.0/drivers/net/ethernet/broadcom/tg3.h @@ -2601,7 +2601,11 @@ #define RXD_ERR_TOO_SMALL 0x00400000 #define RXD_ERR_NO_RESOURCES 0x00800000 #define RXD_ERR_HUGE_FRAME 0x01000000 -#define RXD_ERR_MASK 0xffff0000 + +#define RXD_ERR_MASK (RXD_ERR_BAD_CRC | RXD_ERR_COLLISION | \ + RXD_ERR_LINK_LOST | RXD_ERR_PHY_DECODE | \ + RXD_ERR_MAC_ABRT | RXD_ERR_TOO_SMALL | \ + RXD_ERR_NO_RESOURCES | RXD_ERR_HUGE_FRAME) u32 reserved; u32 opaque; --- linux-3.13.0.orig/drivers/net/ethernet/cadence/macb.c +++ linux-3.13.0/drivers/net/ethernet/cadence/macb.c @@ -29,7 +29,6 @@ #include #include #include -#include #include "macb.h" @@ -1755,7 +1754,6 @@ struct phy_device *phydev; u32 config; int err = -ENXIO; - struct pinctrl *pinctrl; const char *mac; regs = platform_get_resource(pdev, IORESOURCE_MEM, 0); @@ -1764,15 +1762,6 @@ goto err_out; } - pinctrl = devm_pinctrl_get_select_default(&pdev->dev); - if (IS_ERR(pinctrl)) { - err = PTR_ERR(pinctrl); - if (err == -EPROBE_DEFER) - goto err_out; - - dev_warn(&pdev->dev, "No pinctrl provided\n"); - } - err = -ENOMEM; dev = alloc_etherdev(sizeof(*bp)); if (!dev) --- linux-3.13.0.orig/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h +++ linux-3.13.0/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h @@ -496,6 +496,7 @@ spinlock_t db_lock; int db_disabled; unsigned short db_pidx; + unsigned short db_pidx_inc; u64 udb; }; --- linux-3.13.0.orig/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c +++ linux-3.13.0/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c @@ -3563,14 +3563,25 @@ static void disable_txq_db(struct sge_txq *q) { - spin_lock_irq(&q->db_lock); + unsigned long flags; + + spin_lock_irqsave(&q->db_lock, flags); q->db_disabled = 1; - spin_unlock_irq(&q->db_lock); + spin_unlock_irqrestore(&q->db_lock, flags); } -static void enable_txq_db(struct sge_txq *q) +static void enable_txq_db(struct adapter *adap, struct sge_txq *q) { spin_lock_irq(&q->db_lock); + if (q->db_pidx_inc) { + /* Make sure that all writes to the TX descriptors + * are committed before we tell HW about them. + */ + wmb(); + t4_write_reg(adap, MYPF_REG(SGE_PF_KDOORBELL), + QID(q->cntxt_id) | PIDX(q->db_pidx_inc)); + q->db_pidx_inc = 0; + } q->db_disabled = 0; spin_unlock_irq(&q->db_lock); } @@ -3592,11 +3603,32 @@ int i; for_each_ethrxq(&adap->sge, i) - enable_txq_db(&adap->sge.ethtxq[i].q); + enable_txq_db(adap, &adap->sge.ethtxq[i].q); for_each_ofldrxq(&adap->sge, i) - enable_txq_db(&adap->sge.ofldtxq[i].q); + enable_txq_db(adap, &adap->sge.ofldtxq[i].q); for_each_port(adap, i) - enable_txq_db(&adap->sge.ctrlq[i].q); + enable_txq_db(adap, &adap->sge.ctrlq[i].q); +} + +static void notify_rdma_uld(struct adapter *adap, enum cxgb4_control cmd) +{ + if (adap->uld_handle[CXGB4_ULD_RDMA]) + ulds[CXGB4_ULD_RDMA].control(adap->uld_handle[CXGB4_ULD_RDMA], + cmd); +} + +static void process_db_full(struct work_struct *work) +{ + struct adapter *adap; + + adap = container_of(work, struct adapter, db_full_task); + + drain_db_fifo(adap, dbfifo_drain_delay); + enable_dbs(adap); + notify_rdma_uld(adap, CXGB4_CONTROL_DB_EMPTY); + t4_set_reg_field(adap, SGE_INT_ENABLE3, + DBFIFO_HP_INT | DBFIFO_LP_INT, + DBFIFO_HP_INT | DBFIFO_LP_INT); } static void sync_txq_pidx(struct adapter *adap, struct sge_txq *q) @@ -3604,7 +3636,7 @@ u16 hw_pidx, hw_cidx; int ret; - spin_lock_bh(&q->db_lock); + spin_lock_irq(&q->db_lock); ret = read_eq_indices(adap, (u16)q->cntxt_id, &hw_pidx, &hw_cidx); if (ret) goto out; @@ -3621,7 +3653,8 @@ } out: q->db_disabled = 0; - spin_unlock_bh(&q->db_lock); + q->db_pidx_inc = 0; + spin_unlock_irq(&q->db_lock); if (ret) CH_WARN(adap, "DB drop recovery failed.\n"); } @@ -3637,29 +3670,6 @@ sync_txq_pidx(adap, &adap->sge.ctrlq[i].q); } -static void notify_rdma_uld(struct adapter *adap, enum cxgb4_control cmd) -{ - mutex_lock(&uld_mutex); - if (adap->uld_handle[CXGB4_ULD_RDMA]) - ulds[CXGB4_ULD_RDMA].control(adap->uld_handle[CXGB4_ULD_RDMA], - cmd); - mutex_unlock(&uld_mutex); -} - -static void process_db_full(struct work_struct *work) -{ - struct adapter *adap; - - adap = container_of(work, struct adapter, db_full_task); - - notify_rdma_uld(adap, CXGB4_CONTROL_DB_FULL); - drain_db_fifo(adap, dbfifo_drain_delay); - t4_set_reg_field(adap, SGE_INT_ENABLE3, - DBFIFO_HP_INT | DBFIFO_LP_INT, - DBFIFO_HP_INT | DBFIFO_LP_INT); - notify_rdma_uld(adap, CXGB4_CONTROL_DB_EMPTY); -} - static void process_db_drop(struct work_struct *work) { struct adapter *adap; @@ -3667,11 +3677,13 @@ adap = container_of(work, struct adapter, db_drop_task); if (is_t4(adap->params.chip)) { - disable_dbs(adap); + drain_db_fifo(adap, dbfifo_drain_delay); notify_rdma_uld(adap, CXGB4_CONTROL_DB_DROP); - drain_db_fifo(adap, 1); + drain_db_fifo(adap, dbfifo_drain_delay); recover_all_queues(adap); + drain_db_fifo(adap, dbfifo_drain_delay); enable_dbs(adap); + notify_rdma_uld(adap, CXGB4_CONTROL_DB_EMPTY); } else { u32 dropped_db = t4_read_reg(adap, 0x010ac); u16 qid = (dropped_db >> 15) & 0x1ffff; @@ -3712,6 +3724,8 @@ void t4_db_full(struct adapter *adap) { if (is_t4(adap->params.chip)) { + disable_dbs(adap); + notify_rdma_uld(adap, CXGB4_CONTROL_DB_FULL); t4_set_reg_field(adap, SGE_INT_ENABLE3, DBFIFO_HP_INT | DBFIFO_LP_INT, 0); queue_work(workq, &adap->db_full_task); @@ -3720,8 +3734,11 @@ void t4_db_dropped(struct adapter *adap) { - if (is_t4(adap->params.chip)) - queue_work(workq, &adap->db_drop_task); + if (is_t4(adap->params.chip)) { + disable_dbs(adap); + notify_rdma_uld(adap, CXGB4_CONTROL_DB_FULL); + } + queue_work(workq, &adap->db_drop_task); } static void uld_attach(struct adapter *adap, unsigned int uld) --- linux-3.13.0.orig/drivers/net/ethernet/chelsio/cxgb4/sge.c +++ linux-3.13.0/drivers/net/ethernet/chelsio/cxgb4/sge.c @@ -843,9 +843,10 @@ static inline void ring_tx_db(struct adapter *adap, struct sge_txq *q, int n) { unsigned int *wr, index; + unsigned long flags; wmb(); /* write descriptors before telling HW */ - spin_lock(&q->db_lock); + spin_lock_irqsave(&q->db_lock, flags); if (!q->db_disabled) { if (is_t4(adap->params.chip)) { t4_write_reg(adap, MYPF_REG(SGE_PF_KDOORBELL), @@ -861,9 +862,10 @@ writel(n, adap->bar2 + q->udb + 8); wmb(); } - } + } else + q->db_pidx_inc += n; q->db_pidx = q->pidx; - spin_unlock(&q->db_lock); + spin_unlock_irqrestore(&q->db_lock, flags); } /** --- linux-3.13.0.orig/drivers/net/ethernet/chelsio/cxgb4/t4_msg.h +++ linux-3.13.0/drivers/net/ethernet/chelsio/cxgb4/t4_msg.h @@ -116,6 +116,7 @@ CPL_ERR_KEEPALIVE_TIMEDOUT = 34, CPL_ERR_RTX_NEG_ADVICE = 35, CPL_ERR_PERSIST_NEG_ADVICE = 36, + CPL_ERR_KEEPALV_NEG_ADVICE = 37, CPL_ERR_ABORT_FAILED = 42, CPL_ERR_IWARP_FLM = 50, }; --- linux-3.13.0.orig/drivers/net/ethernet/cisco/enic/enic_main.c +++ linux-3.13.0/drivers/net/ethernet/cisco/enic/enic_main.c @@ -1043,10 +1043,14 @@ skb->l4_rxhash = true; } - if ((netdev->features & NETIF_F_RXCSUM) && !csum_not_calc) { - skb->csum = htons(checksum); - skb->ip_summed = CHECKSUM_COMPLETE; - } + /* Hardware does not provide whole packet checksum. It only + * provides pseudo checksum. Since hw validates the packet + * checksum but not provide us the checksum value. use + * CHECSUM_UNNECESSARY. + */ + if ((netdev->features & NETIF_F_RXCSUM) && tcp_udp_csum_ok && + ipv4_csum_ok) + skb->ip_summed = CHECKSUM_UNNECESSARY; if (vlan_stripped) __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), vlan_tci); --- linux-3.13.0.orig/drivers/net/ethernet/emulex/benet/be.h +++ linux-3.13.0/drivers/net/ethernet/emulex/benet/be.h @@ -34,7 +34,7 @@ #include "be_hw.h" #include "be_roce.h" -#define DRV_VER "4.9.224.0u" +#define DRV_VER "10.0.600.0u" #define DRV_NAME "be2net" #define BE_NAME "Emulex BladeEngine2" #define BE3_NAME "Emulex BladeEngine3" @@ -42,7 +42,7 @@ #define OC_NAME_BE OC_NAME "(be3)" #define OC_NAME_LANCER OC_NAME "(Lancer)" #define OC_NAME_SH OC_NAME "(Skyhawk)" -#define DRV_DESC "Emulex OneConnect 10Gbps NIC Driver" +#define DRV_DESC "Emulex OneConnect NIC Driver" #define BE_VENDOR_ID 0x19a2 #define EMULEX_VENDOR_ID 0x10df @@ -283,7 +283,6 @@ u32 rss_hash; u16 vlan_tag; u16 pkt_size; - u16 rxq_idx; u16 port; u8 vlanf; u8 num_rcvd; @@ -493,7 +492,7 @@ u16 pvid; struct phy_info phy; u8 wol_cap; - bool wol; + bool wol_en; u32 uc_macs; /* Count of secondary UC MAC programmed */ u16 asic_rev; u16 qnq_vid; --- linux-3.13.0.orig/drivers/net/ethernet/emulex/benet/be_cmds.c +++ linux-3.13.0/drivers/net/ethernet/emulex/benet/be_cmds.c @@ -1101,23 +1101,22 @@ OPCODE_COMMON_MCC_CREATE_EXT, sizeof(*req), wrb, NULL); req->num_pages = cpu_to_le16(PAGES_4K_SPANNED(q_mem->va, q_mem->size)); - if (lancer_chip(adapter)) { - req->hdr.version = 1; - req->cq_id = cpu_to_le16(cq->id); - - AMAP_SET_BITS(struct amap_mcc_context_lancer, ring_size, ctxt, - be_encoded_q_len(mccq->len)); - AMAP_SET_BITS(struct amap_mcc_context_lancer, valid, ctxt, 1); - AMAP_SET_BITS(struct amap_mcc_context_lancer, async_cq_id, - ctxt, cq->id); - AMAP_SET_BITS(struct amap_mcc_context_lancer, async_cq_valid, - ctxt, 1); - - } else { + if (BEx_chip(adapter)) { AMAP_SET_BITS(struct amap_mcc_context_be, valid, ctxt, 1); AMAP_SET_BITS(struct amap_mcc_context_be, ring_size, ctxt, be_encoded_q_len(mccq->len)); AMAP_SET_BITS(struct amap_mcc_context_be, cq_id, ctxt, cq->id); + } else { + req->hdr.version = 1; + req->cq_id = cpu_to_le16(cq->id); + + AMAP_SET_BITS(struct amap_mcc_context_v1, ring_size, ctxt, + be_encoded_q_len(mccq->len)); + AMAP_SET_BITS(struct amap_mcc_context_v1, valid, ctxt, 1); + AMAP_SET_BITS(struct amap_mcc_context_v1, async_cq_id, + ctxt, cq->id); + AMAP_SET_BITS(struct amap_mcc_context_v1, async_cq_valid, + ctxt, 1); } /* Subscribe to Link State and Group 5 Events(bits 1 and 5 set) */ @@ -1187,7 +1186,7 @@ int status; status = be_cmd_mccq_ext_create(adapter, mccq, cq); - if (status && !lancer_chip(adapter)) { + if (status && BEx_chip(adapter)) { dev_warn(&adapter->pdev->dev, "Upgrade to F/W ver 2.102.235.0 " "or newer to avoid conflicting priorities between NIC " "and FCoE traffic"); @@ -2692,6 +2691,13 @@ struct be_cmd_resp_get_fn_privileges *resp = embedded_payload(wrb); *privilege = le32_to_cpu(resp->privilege_mask); + + /* In UMC mode FW does not return right privileges. + * Override with correct privilege equivalent to PF. + */ + if (BEx_chip(adapter) && be_is_mc(adapter) && + be_physfn(adapter)) + *privilege = MAX_PRIVILEGES; } err: @@ -2736,7 +2742,8 @@ * If pmac_id is returned, pmac_id_valid is returned as true */ int be_cmd_get_mac_from_list(struct be_adapter *adapter, u8 *mac, - bool *pmac_id_valid, u32 *pmac_id, u8 domain) + bool *pmac_id_valid, u32 *pmac_id, u32 if_handle, + u8 domain) { struct be_mcc_wrb *wrb; struct be_cmd_req_get_mac_list *req; @@ -2774,7 +2781,7 @@ req->mac_type = MAC_ADDRESS_TYPE_NETWORK; if (*pmac_id_valid) { req->mac_id = cpu_to_le32(*pmac_id); - req->iface_id = cpu_to_le16(adapter->if_handle); + req->iface_id = cpu_to_le16(if_handle); req->perm_override = 0; } else { req->perm_override = 1; @@ -2827,17 +2834,21 @@ return status; } -int be_cmd_get_active_mac(struct be_adapter *adapter, u32 curr_pmac_id, u8 *mac) +int be_cmd_get_active_mac(struct be_adapter *adapter, u32 curr_pmac_id, u8 *mac, + u32 if_handle, bool active, u32 domain) { - bool active = true; + if (!active) + be_cmd_get_mac_from_list(adapter, mac, &active, &curr_pmac_id, + if_handle, domain); if (BEx_chip(adapter)) return be_cmd_mac_addr_query(adapter, mac, false, - adapter->if_handle, curr_pmac_id); + if_handle, curr_pmac_id); else /* Fetch the MAC address using pmac_id */ return be_cmd_get_mac_from_list(adapter, mac, &active, - &curr_pmac_id, 0); + &curr_pmac_id, + if_handle, domain); } int be_cmd_get_perm_mac(struct be_adapter *adapter, u8 *mac) @@ -2856,7 +2867,7 @@ adapter->if_handle, 0); } else { status = be_cmd_get_mac_from_list(adapter, mac, &pmac_valid, - NULL, 0); + NULL, adapter->if_handle, 0); } return status; @@ -2917,7 +2928,8 @@ int status; status = be_cmd_get_mac_from_list(adapter, old_mac, &active_mac, - &pmac_id, dom); + &pmac_id, if_id, dom); + if (!status && active_mac) be_cmd_pmac_del(adapter, if_id, pmac_id, dom); @@ -2997,7 +3009,7 @@ ctxt, intf_id); AMAP_SET_BITS(struct amap_get_hsw_req_context, pvid_valid, ctxt, 1); - if (!BEx_chip(adapter)) { + if (!BEx_chip(adapter) && mode) { AMAP_SET_BITS(struct amap_get_hsw_req_context, interface_id, ctxt, adapter->hba_port_num); AMAP_SET_BITS(struct amap_get_hsw_req_context, pport, ctxt, 1); @@ -3028,14 +3040,16 @@ { struct be_mcc_wrb *wrb; struct be_cmd_req_acpi_wol_magic_config_v1 *req; - int status; - int payload_len = sizeof(*req); + int status = 0; struct be_dma_mem cmd; if (!be_cmd_allowed(adapter, OPCODE_ETH_ACPI_WOL_MAGIC_CONFIG, CMD_SUBSYSTEM_ETH)) return -EPERM; + if (be_is_wol_excluded(adapter)) + return status; + if (mutex_lock_interruptible(&adapter->mbox_lock)) return -1; @@ -3060,7 +3074,7 @@ be_wrb_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_ETH, OPCODE_ETH_ACPI_WOL_MAGIC_CONFIG, - payload_len, wrb, &cmd); + sizeof(*req), wrb, &cmd); req->hdr.version = 1; req->query_options = BE_GET_WOL_CAP; @@ -3070,13 +3084,9 @@ struct be_cmd_resp_acpi_wol_magic_config_v1 *resp; resp = (struct be_cmd_resp_acpi_wol_magic_config_v1 *) cmd.va; - /* the command could succeed misleadingly on old f/w - * which is not aware of the V1 version. fake an error. */ - if (resp->hdr.response_length < payload_len) { - status = -1; - goto err; - } adapter->wol_cap = resp->wol_settings; + if (adapter->wol_cap & BE_WOL_CAP) + adapter->wol_en = true; } err: mutex_unlock(&adapter->mbox_lock); @@ -3085,6 +3095,76 @@ return status; } + +int be_cmd_set_fw_log_level(struct be_adapter *adapter, u32 level) +{ + struct be_dma_mem extfat_cmd; + struct be_fat_conf_params *cfgs; + int status; + int i, j; + + memset(&extfat_cmd, 0, sizeof(struct be_dma_mem)); + extfat_cmd.size = sizeof(struct be_cmd_resp_get_ext_fat_caps); + extfat_cmd.va = pci_alloc_consistent(adapter->pdev, extfat_cmd.size, + &extfat_cmd.dma); + if (!extfat_cmd.va) + return -ENOMEM; + + status = be_cmd_get_ext_fat_capabilites(adapter, &extfat_cmd); + if (status) + goto err; + + cfgs = (struct be_fat_conf_params *) + (extfat_cmd.va + sizeof(struct be_cmd_resp_hdr)); + for (i = 0; i < le32_to_cpu(cfgs->num_modules); i++) { + u32 num_modes = le32_to_cpu(cfgs->module[i].num_modes); + for (j = 0; j < num_modes; j++) { + if (cfgs->module[i].trace_lvl[j].mode == MODE_UART) + cfgs->module[i].trace_lvl[j].dbg_lvl = + cpu_to_le32(level); + } + } + + status = be_cmd_set_ext_fat_capabilites(adapter, &extfat_cmd, cfgs); +err: + pci_free_consistent(adapter->pdev, extfat_cmd.size, extfat_cmd.va, + extfat_cmd.dma); + return status; +} + +int be_cmd_get_fw_log_level(struct be_adapter *adapter) +{ + struct be_dma_mem extfat_cmd; + struct be_fat_conf_params *cfgs; + int status, j; + int level = 0; + + memset(&extfat_cmd, 0, sizeof(struct be_dma_mem)); + extfat_cmd.size = sizeof(struct be_cmd_resp_get_ext_fat_caps); + extfat_cmd.va = pci_alloc_consistent(adapter->pdev, extfat_cmd.size, + &extfat_cmd.dma); + + if (!extfat_cmd.va) { + dev_err(&adapter->pdev->dev, "%s: Memory allocation failure\n", + __func__); + goto err; + } + + status = be_cmd_get_ext_fat_capabilites(adapter, &extfat_cmd); + if (!status) { + cfgs = (struct be_fat_conf_params *)(extfat_cmd.va + + sizeof(struct be_cmd_resp_hdr)); + for (j = 0; j < le32_to_cpu(cfgs->module[0].num_modes); j++) { + if (cfgs->module[0].trace_lvl[j].mode == MODE_UART) + level = cfgs->module[0].trace_lvl[j].dbg_lvl; + } + } + pci_free_consistent(adapter->pdev, extfat_cmd.size, extfat_cmd.va, + extfat_cmd.dma); +err: + return level; +} + int be_cmd_get_ext_fat_capabilites(struct be_adapter *adapter, struct be_dma_mem *cmd) { @@ -3608,6 +3688,40 @@ mutex_unlock(&adapter->mbox_lock); return status; } + +/* Uses MBOX */ +int be_cmd_get_active_profile(struct be_adapter *adapter, u16 *profile_id) +{ + struct be_cmd_req_get_active_profile *req; + struct be_mcc_wrb *wrb; + int status; + + if (mutex_lock_interruptible(&adapter->mbox_lock)) + return -1; + + wrb = wrb_from_mbox(adapter); + if (!wrb) { + status = -EBUSY; + goto err; + } + + req = embedded_payload(wrb); + + be_wrb_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_COMMON, + OPCODE_COMMON_GET_ACTIVE_PROFILE, sizeof(*req), + wrb, NULL); + + status = be_mbox_notify_wait(adapter); + if (!status) { + struct be_cmd_resp_get_active_profile *resp = + embedded_payload(wrb); + *profile_id = le16_to_cpu(resp->active_profile_id); + } + +err: + mutex_unlock(&adapter->mbox_lock); + return status; +} int be_roce_mcc_cmd(void *netdev_handle, void *wrb_payload, int wrb_payload_size, u16 *cmd_status, u16 *ext_status) --- linux-3.13.0.orig/drivers/net/ethernet/emulex/benet/be_cmds.h +++ linux-3.13.0/drivers/net/ethernet/emulex/benet/be_cmds.h @@ -216,6 +216,7 @@ #define OPCODE_COMMON_GET_FUNC_CONFIG 160 #define OPCODE_COMMON_GET_PROFILE_CONFIG 164 #define OPCODE_COMMON_SET_PROFILE_CONFIG 165 +#define OPCODE_COMMON_GET_ACTIVE_PROFILE 167 #define OPCODE_COMMON_SET_HSW_CONFIG 153 #define OPCODE_COMMON_GET_FN_PRIVILEGES 170 #define OPCODE_COMMON_READ_OBJECT 171 @@ -452,7 +453,7 @@ u8 rsvd2[32]; } __packed; -struct amap_mcc_context_lancer { +struct amap_mcc_context_v1 { u8 async_cq_id[16]; u8 ring_size[4]; u8 rsvd0[12]; @@ -476,7 +477,7 @@ u16 num_pages; u16 cq_id; u32 async_event_bitmap[1]; - u8 context[sizeof(struct amap_mcc_context_be) / 8]; + u8 context[sizeof(struct amap_mcc_context_v1) / 8]; struct phys_addr pages[8]; } __packed; @@ -1097,6 +1098,14 @@ u32 function_caps; }; +/* Is BE in a multi-channel mode */ +static inline bool be_is_mc(struct be_adapter *adapter) +{ + return adapter->function_mode & FLEX10_MODE || + adapter->function_mode & VNIC_MODE || + adapter->function_mode & UMC_ENABLED; +} + /******************** RSS Config ****************************************/ /* RSS type Input parameters used to compute RX hash * RSS_ENABLE_IPV4 SRC IPv4, DST IPv4 @@ -1917,6 +1926,17 @@ struct be_cmd_resp_hdr hdr; }; +struct be_cmd_req_get_active_profile { + struct be_cmd_req_hdr hdr; + u32 rsvd; +} __packed; + +struct be_cmd_resp_get_active_profile { + struct be_cmd_resp_hdr hdr; + u16 active_profile_id; + u16 next_profile_id; +} __packed; + struct be_cmd_enable_disable_vf { struct be_cmd_req_hdr hdr; u8 enable; @@ -2037,8 +2057,10 @@ int be_cmd_set_fn_privileges(struct be_adapter *adapter, u32 privileges, u32 vf_num); int be_cmd_get_mac_from_list(struct be_adapter *adapter, u8 *mac, - bool *pmac_id_active, u32 *pmac_id, u8 domain); -int be_cmd_get_active_mac(struct be_adapter *adapter, u32 pmac_id, u8 *mac); + bool *pmac_id_active, u32 *pmac_id, + u32 if_handle, u8 domain); +int be_cmd_get_active_mac(struct be_adapter *adapter, u32 pmac_id, u8 *mac, + u32 if_handle, bool active, u32 domain); int be_cmd_get_perm_mac(struct be_adapter *adapter, u8 *mac); int be_cmd_set_mac_list(struct be_adapter *adapter, u8 *mac_array, u8 mac_count, u32 domain); @@ -2048,6 +2070,8 @@ int be_cmd_get_hsw_config(struct be_adapter *adapter, u16 *pvid, u32 domain, u16 intf_id, u8 *mode); int be_cmd_get_acpi_wol_cap(struct be_adapter *adapter); +int be_cmd_set_fw_log_level(struct be_adapter *adapter, u32 level); +int be_cmd_get_fw_log_level(struct be_adapter *adapter); int be_cmd_get_ext_fat_capabilites(struct be_adapter *adapter, struct be_dma_mem *cmd); int be_cmd_set_ext_fat_capabilites(struct be_adapter *adapter, @@ -2063,6 +2087,7 @@ int be_cmd_get_profile_config(struct be_adapter *adapter, struct be_resources *res, u8 domain); int be_cmd_set_profile_config(struct be_adapter *adapter, u32 bps, u8 domain); +int be_cmd_get_active_profile(struct be_adapter *adapter, u16 *profile); int be_cmd_get_if_id(struct be_adapter *adapter, struct be_vf_cfg *vf_cfg, int vf_num); int be_cmd_enable_vf(struct be_adapter *adapter, u8 domain); --- linux-3.13.0.orig/drivers/net/ethernet/emulex/benet/be_ethtool.c +++ linux-3.13.0/drivers/net/ethernet/emulex/benet/be_ethtool.c @@ -357,10 +357,10 @@ struct be_rx_stats *stats = rx_stats(rxo); do { - start = u64_stats_fetch_begin_bh(&stats->sync); + start = u64_stats_fetch_begin_irq(&stats->sync); data[base] = stats->rx_bytes; data[base + 1] = stats->rx_pkts; - } while (u64_stats_fetch_retry_bh(&stats->sync, start)); + } while (u64_stats_fetch_retry_irq(&stats->sync, start)); for (i = 2; i < ETHTOOL_RXSTATS_NUM; i++) { p = (u8 *)stats + et_rx_stats[i].offset; @@ -373,19 +373,19 @@ struct be_tx_stats *stats = tx_stats(txo); do { - start = u64_stats_fetch_begin_bh(&stats->sync_compl); + start = u64_stats_fetch_begin_irq(&stats->sync_compl); data[base] = stats->tx_compl; - } while (u64_stats_fetch_retry_bh(&stats->sync_compl, start)); + } while (u64_stats_fetch_retry_irq(&stats->sync_compl, start)); do { - start = u64_stats_fetch_begin_bh(&stats->sync); + start = u64_stats_fetch_begin_irq(&stats->sync); for (i = 1; i < ETHTOOL_TXSTATS_NUM; i++) { p = (u8 *)stats + et_tx_stats[i].offset; data[base + i] = (et_tx_stats[i].size == sizeof(u64)) ? *(u64 *)p : *(u32 *)p; } - } while (u64_stats_fetch_retry_bh(&stats->sync, start)); + } while (u64_stats_fetch_retry_irq(&stats->sync, start)); base += ETHTOOL_TXSTATS_NUM; } } @@ -713,12 +713,13 @@ { struct be_adapter *adapter = netdev_priv(netdev); - if (be_is_wol_supported(adapter)) { + if (adapter->wol_cap & BE_WOL_CAP) { wol->supported |= WAKE_MAGIC; - if (adapter->wol) + if (adapter->wol_en) wol->wolopts |= WAKE_MAGIC; - } else + } else { wol->wolopts = 0; + } memset(&wol->sopass, 0, sizeof(wol->sopass)); } @@ -730,15 +731,15 @@ if (wol->wolopts & ~WAKE_MAGIC) return -EOPNOTSUPP; - if (!be_is_wol_supported(adapter)) { + if (!(adapter->wol_cap & BE_WOL_CAP)) { dev_warn(&adapter->pdev->dev, "WOL not supported\n"); return -EOPNOTSUPP; } if (wol->wolopts & WAKE_MAGIC) - adapter->wol = true; + adapter->wol_en = true; else - adapter->wol = false; + adapter->wol_en = false; return 0; } @@ -904,73 +905,21 @@ { struct be_adapter *adapter = netdev_priv(netdev); - if (lancer_chip(adapter)) { - dev_err(&adapter->pdev->dev, "Operation not supported\n"); - return -EOPNOTSUPP; - } - return adapter->msg_enable; } -static void be_set_fw_log_level(struct be_adapter *adapter, u32 level) -{ - struct be_dma_mem extfat_cmd; - struct be_fat_conf_params *cfgs; - int status; - int i, j; - - memset(&extfat_cmd, 0, sizeof(struct be_dma_mem)); - extfat_cmd.size = sizeof(struct be_cmd_resp_get_ext_fat_caps); - extfat_cmd.va = pci_alloc_consistent(adapter->pdev, extfat_cmd.size, - &extfat_cmd.dma); - if (!extfat_cmd.va) { - dev_err(&adapter->pdev->dev, "%s: Memory allocation failure\n", - __func__); - goto err; - } - status = be_cmd_get_ext_fat_capabilites(adapter, &extfat_cmd); - if (!status) { - cfgs = (struct be_fat_conf_params *)(extfat_cmd.va + - sizeof(struct be_cmd_resp_hdr)); - for (i = 0; i < le32_to_cpu(cfgs->num_modules); i++) { - u32 num_modes = le32_to_cpu(cfgs->module[i].num_modes); - for (j = 0; j < num_modes; j++) { - if (cfgs->module[i].trace_lvl[j].mode == - MODE_UART) - cfgs->module[i].trace_lvl[j].dbg_lvl = - cpu_to_le32(level); - } - } - status = be_cmd_set_ext_fat_capabilites(adapter, &extfat_cmd, - cfgs); - if (status) - dev_err(&adapter->pdev->dev, - "Message level set failed\n"); - } else { - dev_err(&adapter->pdev->dev, "Message level get failed\n"); - } - - pci_free_consistent(adapter->pdev, extfat_cmd.size, extfat_cmd.va, - extfat_cmd.dma); -err: - return; -} - static void be_set_msg_level(struct net_device *netdev, u32 level) { struct be_adapter *adapter = netdev_priv(netdev); - if (lancer_chip(adapter)) { - dev_err(&adapter->pdev->dev, "Operation not supported\n"); - return; - } - if (adapter->msg_enable == level) return; if ((level & NETIF_MSG_HW) != (adapter->msg_enable & NETIF_MSG_HW)) - be_set_fw_log_level(adapter, level & NETIF_MSG_HW ? - FW_LOG_LEVEL_DEFAULT : FW_LOG_LEVEL_FATAL); + if (BEx_chip(adapter)) + be_cmd_set_fw_log_level(adapter, level & NETIF_MSG_HW ? + FW_LOG_LEVEL_DEFAULT : + FW_LOG_LEVEL_FATAL); adapter->msg_enable = level; return; --- linux-3.13.0.orig/drivers/net/ethernet/emulex/benet/be_main.c +++ linux-3.13.0/drivers/net/ethernet/emulex/benet/be_main.c @@ -121,12 +121,6 @@ "Unknown" }; -/* Is BE in a multi-channel mode */ -static inline bool be_is_mc(struct be_adapter *adapter) { - return (adapter->function_mode & FLEX10_MODE || - adapter->function_mode & VNIC_MODE || - adapter->function_mode & UMC_ENABLED); -} static void be_queue_free(struct be_adapter *adapter, struct be_queue_info *q) { @@ -258,6 +252,12 @@ if (!is_valid_ether_addr(addr->sa_data)) return -EADDRNOTAVAIL; + /* Proceed further only if, User provided MAC is different + * from active MAC + */ + if (ether_addr_equal(addr->sa_data, netdev->dev_addr)) + return 0; + /* The PMAC_ADD cmd may fail if the VF doesn't have FILTMGMT * privilege or if PF did not provision the new MAC address. * On BE3, this cmd will always fail if the VF doesn't have the @@ -280,7 +280,8 @@ /* Decide if the new MAC is successfully activated only after * querying the FW */ - status = be_cmd_get_active_mac(adapter, curr_pmac_id, mac); + status = be_cmd_get_active_mac(adapter, curr_pmac_id, mac, + adapter->if_handle, true, 0); if (status) goto err; @@ -590,10 +591,10 @@ for_all_rx_queues(adapter, rxo, i) { const struct be_rx_stats *rx_stats = rx_stats(rxo); do { - start = u64_stats_fetch_begin_bh(&rx_stats->sync); + start = u64_stats_fetch_begin_irq(&rx_stats->sync); pkts = rx_stats(rxo)->rx_pkts; bytes = rx_stats(rxo)->rx_bytes; - } while (u64_stats_fetch_retry_bh(&rx_stats->sync, start)); + } while (u64_stats_fetch_retry_irq(&rx_stats->sync, start)); stats->rx_packets += pkts; stats->rx_bytes += bytes; stats->multicast += rx_stats(rxo)->rx_mcast_pkts; @@ -604,10 +605,10 @@ for_all_tx_queues(adapter, txo, i) { const struct be_tx_stats *tx_stats = tx_stats(txo); do { - start = u64_stats_fetch_begin_bh(&tx_stats->sync); + start = u64_stats_fetch_begin_irq(&tx_stats->sync); pkts = tx_stats(txo)->tx_pkts; bytes = tx_stats(txo)->tx_bytes; - } while (u64_stats_fetch_retry_bh(&tx_stats->sync, start)); + } while (u64_stats_fetch_retry_irq(&tx_stats->sync, start)); stats->tx_packets += pkts; stats->tx_bytes += bytes; } @@ -1096,8 +1097,6 @@ dev_info(&adapter->pdev->dev, "Disabling VLAN Promiscuous mode.\n"); adapter->flags &= ~BE_FLAGS_VLAN_PROMISC; - dev_info(&adapter->pdev->dev, - "Re-Enabling HW VLAN filtering\n"); } } } @@ -1105,12 +1104,12 @@ return status; set_vlan_promisc: - dev_warn(&adapter->pdev->dev, "Exhausted VLAN HW filters.\n"); + if (adapter->flags & BE_FLAGS_VLAN_PROMISC) + return 0; status = be_cmd_rx_filter(adapter, BE_FLAGS_VLAN_PROMISC, ON); if (!status) { dev_info(&adapter->pdev->dev, "Enable VLAN Promiscuous mode\n"); - dev_info(&adapter->pdev->dev, "Disabling HW VLAN filtering\n"); adapter->flags |= BE_FLAGS_VLAN_PROMISC; } else dev_err(&adapter->pdev->dev, @@ -1123,19 +1122,18 @@ struct be_adapter *adapter = netdev_priv(netdev); int status = 0; - /* Packets with VID 0 are always received by Lancer by default */ if (lancer_chip(adapter) && vid == 0) goto ret; adapter->vlan_tag[vid] = 1; - if (adapter->vlans_added <= (be_max_vlans(adapter) + 1)) - status = be_vid_config(adapter); + adapter->vlans_added++; - if (!status) - adapter->vlans_added++; - else + status = be_vid_config(adapter); + if (status) { + adapter->vlans_added--; adapter->vlan_tag[vid] = 0; + } ret: return status; } @@ -1150,9 +1148,7 @@ goto ret; adapter->vlan_tag[vid] = 0; - if (adapter->vlans_added <= be_max_vlans(adapter)) - status = be_vid_config(adapter); - + status = be_vid_config(adapter); if (!status) adapter->vlans_added--; else @@ -1374,15 +1370,15 @@ rxo = &adapter->rx_obj[eqo->idx]; do { - start = u64_stats_fetch_begin_bh(&rxo->stats.sync); + start = u64_stats_fetch_begin_irq(&rxo->stats.sync); rx_pkts = rxo->stats.rx_pkts; - } while (u64_stats_fetch_retry_bh(&rxo->stats.sync, start)); + } while (u64_stats_fetch_retry_irq(&rxo->stats.sync, start)); txo = &adapter->tx_obj[eqo->idx]; do { - start = u64_stats_fetch_begin_bh(&txo->stats.sync); + start = u64_stats_fetch_begin_irq(&txo->stats.sync); tx_pkts = txo->stats.tx_reqs; - } while (u64_stats_fetch_retry_bh(&txo->stats.sync, start)); + } while (u64_stats_fetch_retry_irq(&txo->stats.sync, start)); /* Skip, if wrapped around or first calculation */ @@ -1442,12 +1438,12 @@ (rxcp->ip_csum || rxcp->ipv6); } -static struct be_rx_page_info *get_rx_page_info(struct be_rx_obj *rxo, - u16 frag_idx) +static struct be_rx_page_info *get_rx_page_info(struct be_rx_obj *rxo) { struct be_adapter *adapter = rxo->adapter; struct be_rx_page_info *rx_page_info; struct be_queue_info *rxq = &rxo->q; + u16 frag_idx = rxq->tail; rx_page_info = &rxo->page_info_tbl[frag_idx]; BUG_ON(!rx_page_info->page); @@ -1459,6 +1455,7 @@ rx_page_info->last_page_user = false; } + queue_tail_inc(rxq); atomic_dec(&rxq->used); return rx_page_info; } @@ -1467,15 +1464,13 @@ static void be_rx_compl_discard(struct be_rx_obj *rxo, struct be_rx_compl_info *rxcp) { - struct be_queue_info *rxq = &rxo->q; struct be_rx_page_info *page_info; u16 i, num_rcvd = rxcp->num_rcvd; for (i = 0; i < num_rcvd; i++) { - page_info = get_rx_page_info(rxo, rxcp->rxq_idx); + page_info = get_rx_page_info(rxo); put_page(page_info->page); memset(page_info, 0, sizeof(*page_info)); - index_inc(&rxcp->rxq_idx, rxq->len); } } @@ -1486,13 +1481,12 @@ static void skb_fill_rx_data(struct be_rx_obj *rxo, struct sk_buff *skb, struct be_rx_compl_info *rxcp) { - struct be_queue_info *rxq = &rxo->q; struct be_rx_page_info *page_info; u16 i, j; u16 hdr_len, curr_frag_len, remaining; u8 *start; - page_info = get_rx_page_info(rxo, rxcp->rxq_idx); + page_info = get_rx_page_info(rxo); start = page_address(page_info->page) + page_info->page_offset; prefetch(start); @@ -1526,10 +1520,9 @@ } /* More frags present for this completion */ - index_inc(&rxcp->rxq_idx, rxq->len); remaining = rxcp->pkt_size - curr_frag_len; for (i = 1, j = 0; i < rxcp->num_rcvd; i++) { - page_info = get_rx_page_info(rxo, rxcp->rxq_idx); + page_info = get_rx_page_info(rxo); curr_frag_len = min(remaining, rx_frag_size); /* Coalesce all frags from the same physical page in one slot */ @@ -1550,7 +1543,6 @@ skb->data_len += curr_frag_len; skb->truesize += rx_frag_size; remaining -= curr_frag_len; - index_inc(&rxcp->rxq_idx, rxq->len); page_info->page = NULL; } BUG_ON(j > MAX_SKB_FRAGS); @@ -1598,7 +1590,6 @@ struct be_adapter *adapter = rxo->adapter; struct be_rx_page_info *page_info; struct sk_buff *skb = NULL; - struct be_queue_info *rxq = &rxo->q; u16 remaining, curr_frag_len; u16 i, j; @@ -1610,7 +1601,7 @@ remaining = rxcp->pkt_size; for (i = 0, j = -1; i < rxcp->num_rcvd; i++) { - page_info = get_rx_page_info(rxo, rxcp->rxq_idx); + page_info = get_rx_page_info(rxo); curr_frag_len = min(remaining, rx_frag_size); @@ -1628,7 +1619,6 @@ skb_frag_size_add(&skb_shinfo(skb)->frags[j], curr_frag_len); skb->truesize += rx_frag_size; remaining -= curr_frag_len; - index_inc(&rxcp->rxq_idx, rxq->len); memset(page_info, 0, sizeof(*page_info)); } BUG_ON(j > MAX_SKB_FRAGS); @@ -1663,8 +1653,6 @@ AMAP_GET_BITS(struct amap_eth_rx_compl_v1, l4_cksm, compl); rxcp->ipv6 = AMAP_GET_BITS(struct amap_eth_rx_compl_v1, ip_version, compl); - rxcp->rxq_idx = - AMAP_GET_BITS(struct amap_eth_rx_compl_v1, fragndx, compl); rxcp->num_rcvd = AMAP_GET_BITS(struct amap_eth_rx_compl_v1, numfrags, compl); rxcp->pkt_type = @@ -1695,8 +1683,6 @@ AMAP_GET_BITS(struct amap_eth_rx_compl_v0, l4_cksm, compl); rxcp->ipv6 = AMAP_GET_BITS(struct amap_eth_rx_compl_v0, ip_version, compl); - rxcp->rxq_idx = - AMAP_GET_BITS(struct amap_eth_rx_compl_v0, fragndx, compl); rxcp->num_rcvd = AMAP_GET_BITS(struct amap_eth_rx_compl_v0, numfrags, compl); rxcp->pkt_type = @@ -1881,7 +1867,7 @@ queue_tail_inc(txq); } while (cur_index != last_index); - kfree_skb(sent_skb); + dev_kfree_skb_any(sent_skb); return num_wrbs; } @@ -1921,7 +1907,6 @@ struct be_rx_compl_info *rxcp; struct be_adapter *adapter = rxo->adapter; int flush_wait = 0; - u16 tail; /* Consume pending rx completions. * Wait for the flush completion (identified by zero num_rcvd) @@ -1954,9 +1939,8 @@ be_cq_notify(adapter, rx_cq->id, false, 0); /* Then free posted rx buffers that were not used */ - tail = (rxq->head + rxq->len - atomic_read(&rxq->used)) % rxq->len; - for (; atomic_read(&rxq->used) > 0; index_inc(&tail, rxq->len)) { - page_info = get_rx_page_info(rxo, tail); + while (atomic_read(&rxq->used) > 0) { + page_info = get_rx_page_info(rxo); put_page(page_info->page); memset(page_info, 0, sizeof(*page_info)); } @@ -2797,7 +2781,7 @@ for_all_evt_queues(adapter, eqo, i) { napi_enable(&eqo->napi); be_enable_busy_poll(eqo); - be_eq_notify(adapter, eqo->q.id, true, false, 0); + be_eq_notify(adapter, eqo->q.id, true, true, 0); } adapter->flags |= BE_FLAGS_NAPI_ENABLED; @@ -2891,14 +2875,11 @@ int status, vf; u8 mac[ETH_ALEN]; struct be_vf_cfg *vf_cfg; - bool active = false; for_all_vfs(adapter, vf_cfg, vf) { - be_cmd_get_mac_from_list(adapter, mac, &active, - &vf_cfg->pmac_id, 0); - - status = be_cmd_mac_addr_query(adapter, mac, false, - vf_cfg->if_handle, 0); + status = be_cmd_get_active_mac(adapter, vf_cfg->pmac_id, + mac, vf_cfg->if_handle, + false, vf+1); if (status) return status; memcpy(vf_cfg->mac_addr, mac, ETH_ALEN); @@ -3240,6 +3221,7 @@ /* Routine to query per function resource limits */ static int be_get_config(struct be_adapter *adapter) { + u16 profile_id; int status; status = be_cmd_query_fw_cfg(adapter, &adapter->port_num, @@ -3249,6 +3231,13 @@ if (status) return status; + if (be_physfn(adapter)) { + status = be_cmd_get_active_profile(adapter, &profile_id); + if (!status) + dev_info(&adapter->pdev->dev, + "Using profile 0x%x\n", profile_id); + } + status = be_get_resources(adapter); if (status) return status; @@ -3403,11 +3392,6 @@ goto err; be_cmd_get_fn_privileges(adapter, &adapter->cmd_privileges, 0); - /* In UMC mode FW does not return right privileges. - * Override with correct privilege equivalent to PF. - */ - if (be_is_mc(adapter)) - adapter->cmd_privileges = MAX_PRIVILEGES; status = be_mac_setup(adapter); if (status) @@ -3426,6 +3410,8 @@ be_set_rx_mode(adapter->netdev); + be_cmd_get_acpi_wol_cap(adapter); + be_cmd_get_flow_control(adapter, &tx_fc, &rx_fc); if (rx_fc != adapter->rx_fc || tx_fc != adapter->tx_fc) @@ -4295,74 +4281,22 @@ free_netdev(adapter->netdev); } -bool be_is_wol_supported(struct be_adapter *adapter) -{ - return ((adapter->wol_cap & BE_WOL_CAP) && - !be_is_wol_excluded(adapter)) ? true : false; -} - -u32 be_get_fw_log_level(struct be_adapter *adapter) -{ - struct be_dma_mem extfat_cmd; - struct be_fat_conf_params *cfgs; - int status; - u32 level = 0; - int j; - - if (lancer_chip(adapter)) - return 0; - - memset(&extfat_cmd, 0, sizeof(struct be_dma_mem)); - extfat_cmd.size = sizeof(struct be_cmd_resp_get_ext_fat_caps); - extfat_cmd.va = pci_alloc_consistent(adapter->pdev, extfat_cmd.size, - &extfat_cmd.dma); - - if (!extfat_cmd.va) { - dev_err(&adapter->pdev->dev, "%s: Memory allocation failure\n", - __func__); - goto err; - } - - status = be_cmd_get_ext_fat_capabilites(adapter, &extfat_cmd); - if (!status) { - cfgs = (struct be_fat_conf_params *)(extfat_cmd.va + - sizeof(struct be_cmd_resp_hdr)); - for (j = 0; j < le32_to_cpu(cfgs->module[0].num_modes); j++) { - if (cfgs->module[0].trace_lvl[j].mode == MODE_UART) - level = cfgs->module[0].trace_lvl[j].dbg_lvl; - } - } - pci_free_consistent(adapter->pdev, extfat_cmd.size, extfat_cmd.va, - extfat_cmd.dma); -err: - return level; -} - static int be_get_initial_config(struct be_adapter *adapter) { - int status; - u32 level; + int status, level; status = be_cmd_get_cntl_attributes(adapter); if (status) return status; - status = be_cmd_get_acpi_wol_cap(adapter); - if (status) { - /* in case of a failure to get wol capabillities - * check the exclusion list to determine WOL capability */ - if (!be_is_wol_excluded(adapter)) - adapter->wol_cap |= BE_WOL_CAP; - } - - if (be_is_wol_supported(adapter)) - adapter->wol = true; - /* Must be a power of 2 or else MODULO will BUG_ON */ adapter->be_get_temp_freq = 64; - level = be_get_fw_log_level(adapter); - adapter->msg_enable = level <= FW_LOG_LEVEL_DEFAULT ? NETIF_MSG_HW : 0; + if (BEx_chip(adapter)) { + level = be_cmd_get_fw_log_level(adapter); + adapter->msg_enable = + level <= FW_LOG_LEVEL_DEFAULT ? NETIF_MSG_HW : 0; + } adapter->cfg_num_qs = netif_get_num_default_rss_queues(); return 0; @@ -4625,7 +4559,7 @@ struct be_adapter *adapter = pci_get_drvdata(pdev); struct net_device *netdev = adapter->netdev; - if (adapter->wol) + if (adapter->wol_en) be_setup_wol(adapter, true); be_intr_set(adapter, false); @@ -4681,7 +4615,7 @@ msecs_to_jiffies(1000)); netif_device_attach(netdev); - if (adapter->wol) + if (adapter->wol_en) be_setup_wol(adapter, false); return 0; --- linux-3.13.0.orig/drivers/net/ethernet/freescale/fec_main.c +++ linux-3.13.0/drivers/net/ethernet/freescale/fec_main.c @@ -528,13 +528,6 @@ /* Clear any outstanding interrupt. */ writel(0xffc00000, fep->hwp + FEC_IEVENT); - /* Setup multicast filter. */ - set_multicast_list(ndev); -#ifndef CONFIG_M5272 - writel(0, fep->hwp + FEC_HASH_TABLE_HIGH); - writel(0, fep->hwp + FEC_HASH_TABLE_LOW); -#endif - /* Set maximum receive buffer size. */ writel(PKT_MAXBLR_SIZE, fep->hwp + FEC_R_BUFF_SIZE); @@ -655,6 +648,13 @@ writel(rcntl, fep->hwp + FEC_R_CNTRL); + /* Setup multicast filter. */ + set_multicast_list(ndev); +#ifndef CONFIG_M5272 + writel(0, fep->hwp + FEC_HASH_TABLE_HIGH); + writel(0, fep->hwp + FEC_HASH_TABLE_LOW); +#endif + if (id_entry->driver_data & FEC_QUIRK_ENET_MAC) { /* enable ENET endian swap */ ecntl |= (1 << 8); --- linux-3.13.0.orig/drivers/net/ethernet/freescale/xgmac_mdio.c +++ linux-3.13.0/drivers/net/ethernet/freescale/xgmac_mdio.c @@ -32,6 +32,10 @@ __be32 mdio_addr; /* MDIO address */ } __packed; +/* Taken from memac_mdio.c */ +#define MDIO_STAT_ENC (1 << 6) +#define MDIO_STAT_HOLD_15_CLK (7 << 2) + #define MDIO_STAT_CLKDIV(x) (((x>>1) & 0xff) << 8) #define MDIO_STAT_BSY (1 << 0) #define MDIO_STAT_RD_ER (1 << 1) @@ -91,26 +95,39 @@ static int xgmac_mdio_write(struct mii_bus *bus, int phy_id, int regnum, u16 value) { struct tgec_mdio_controller __iomem *regs = bus->priv; - uint16_t dev_addr = regnum >> 16; + uint16_t dev_addr; + u32 mdio_ctl, mdio_stat; int ret; - /* Setup the MII Mgmt clock speed */ - out_be32(®s->mdio_stat, MDIO_STAT_CLKDIV(100)); + mdio_stat = in_be32(®s->mdio_stat); + if (regnum & MII_ADDR_C45) { + /* Clause 45 (ie 10G) */ + dev_addr = (regnum >> 16) & 0x1f; + mdio_stat |= MDIO_STAT_ENC | MDIO_STAT_HOLD_15_CLK; + } else { + /* Clause 22 (ie 1G) */ + dev_addr = regnum & 0x1f; + mdio_stat &= ~MDIO_STAT_ENC; + } + + out_be32(®s->mdio_stat, mdio_stat); ret = xgmac_wait_until_free(&bus->dev, regs); if (ret) return ret; /* Set the port and dev addr */ - out_be32(®s->mdio_ctl, - MDIO_CTL_PORT_ADDR(phy_id) | MDIO_CTL_DEV_ADDR(dev_addr)); + mdio_ctl = MDIO_CTL_PORT_ADDR(phy_id) | MDIO_CTL_DEV_ADDR(dev_addr); + out_be32(®s->mdio_ctl, mdio_ctl); /* Set the register address */ - out_be32(®s->mdio_addr, regnum & 0xffff); + if (regnum & MII_ADDR_C45) { + out_be32(®s->mdio_addr, regnum & 0xffff); - ret = xgmac_wait_until_free(&bus->dev, regs); - if (ret) - return ret; + ret = xgmac_wait_until_free(&bus->dev, regs); + if (ret) + return ret; + } /* Write the value to the register */ out_be32(®s->mdio_data, MDIO_DATA(value)); @@ -130,13 +147,22 @@ static int xgmac_mdio_read(struct mii_bus *bus, int phy_id, int regnum) { struct tgec_mdio_controller __iomem *regs = bus->priv; - uint16_t dev_addr = regnum >> 16; + uint16_t dev_addr; + uint32_t mdio_stat; uint32_t mdio_ctl; uint16_t value; int ret; - /* Setup the MII Mgmt clock speed */ - out_be32(®s->mdio_stat, MDIO_STAT_CLKDIV(100)); + mdio_stat = in_be32(®s->mdio_stat); + if (regnum & MII_ADDR_C45) { + dev_addr = (regnum >> 16) & 0x1f; + mdio_stat |= MDIO_STAT_ENC | MDIO_STAT_HOLD_15_CLK; + } else { + dev_addr = regnum & 0x1f; + mdio_stat = ~MDIO_STAT_ENC; + } + + out_be32(®s->mdio_stat, mdio_stat); ret = xgmac_wait_until_free(&bus->dev, regs); if (ret) @@ -147,11 +173,13 @@ out_be32(®s->mdio_ctl, mdio_ctl); /* Set the register address */ - out_be32(®s->mdio_addr, regnum & 0xffff); + if (regnum & MII_ADDR_C45) { + out_be32(®s->mdio_addr, regnum & 0xffff); - ret = xgmac_wait_until_free(&bus->dev, regs); - if (ret) - return ret; + ret = xgmac_wait_until_free(&bus->dev, regs); + if (ret) + return ret; + } /* Initiate the read */ out_be32(®s->mdio_ctl, mdio_ctl | MDIO_CTL_READ); @@ -162,7 +190,7 @@ /* Return all Fs if nothing was there */ if (in_be32(®s->mdio_stat) & MDIO_STAT_RD_ER) { - dev_err(&bus->dev, "MDIO read error\n"); + dev_dbg(&bus->dev, "MDIO read error\n"); return 0xffff; } @@ -181,7 +209,7 @@ mutex_lock(&bus->mdio_lock); /* Setup the MII Mgmt clock speed */ - out_be32(®s->mdio_stat, MDIO_STAT_CLKDIV(100)); + clrbits32(®s->mdio_stat, MDIO_STAT_ENC); ret = xgmac_wait_until_free(&bus->dev, regs); @@ -256,6 +284,9 @@ { .compatible = "fsl,fman-xmdio", }, + { + .compatible = "fsl,fman-memac-mdio", + }, {}, }; MODULE_DEVICE_TABLE(of, xgmac_mdio_match); --- linux-3.13.0.orig/drivers/net/ethernet/ibm/ibmveth.c +++ linux-3.13.0/drivers/net/ethernet/ibm/ibmveth.c @@ -293,6 +293,18 @@ atomic_add(buffers_added, &(pool->available)); } +/* + * The final 8 bytes of the buffer list is a counter of frames dropped + * because there was not a buffer in the buffer list capable of holding + * the frame. + */ +static void ibmveth_update_rx_no_buffer(struct ibmveth_adapter *adapter) +{ + __be64 *p = adapter->buffer_list_addr + 4096 - 8; + + adapter->rx_no_buffer = be64_to_cpup(p); +} + /* replenish routine */ static void ibmveth_replenish_task(struct ibmveth_adapter *adapter) { @@ -308,8 +320,7 @@ ibmveth_replenish_buffer_pool(adapter, pool); } - adapter->rx_no_buffer = *(u64 *)(((char*)adapter->buffer_list_addr) + - 4096 - 8); + ibmveth_update_rx_no_buffer(adapter); } /* empty and free ana buffer pool - also used to do cleanup in error paths */ @@ -523,10 +534,21 @@ return rc; } +static u64 ibmveth_encode_mac_addr(u8 *mac) +{ + int i; + u64 encoded = 0; + + for (i = 0; i < ETH_ALEN; i++) + encoded = (encoded << 8) | mac[i]; + + return encoded; +} + static int ibmveth_open(struct net_device *netdev) { struct ibmveth_adapter *adapter = netdev_priv(netdev); - u64 mac_address = 0; + u64 mac_address; int rxq_entries = 1; unsigned long lpar_rc; int rc; @@ -580,8 +602,7 @@ adapter->rx_queue.num_slots = rxq_entries; adapter->rx_queue.toggle = 1; - memcpy(&mac_address, netdev->dev_addr, netdev->addr_len); - mac_address = mac_address >> 16; + mac_address = ibmveth_encode_mac_addr(netdev->dev_addr); rxq_desc.fields.flags_len = IBMVETH_BUF_VALID | adapter->rx_queue.queue_len; @@ -689,8 +710,7 @@ free_irq(netdev->irq, netdev); - adapter->rx_no_buffer = *(u64 *)(((char *)adapter->buffer_list_addr) + - 4096 - 8); + ibmveth_update_rx_no_buffer(adapter); ibmveth_cleanup(adapter); @@ -1184,8 +1204,8 @@ /* add the addresses to the filter table */ netdev_for_each_mc_addr(ha, netdev) { /* add the multicast address to the filter table */ - unsigned long mcast_addr = 0; - memcpy(((char *)&mcast_addr)+2, ha->addr, ETH_ALEN); + u64 mcast_addr; + mcast_addr = ibmveth_encode_mac_addr(ha->addr); lpar_rc = h_multicast_ctrl(adapter->vdev->unit_address, IbmVethMcastAddFilter, mcast_addr); @@ -1369,9 +1389,6 @@ netif_napi_add(netdev, &adapter->napi, ibmveth_poll, 16); - adapter->mac_addr = 0; - memcpy(&adapter->mac_addr, mac_addr_p, ETH_ALEN); - netdev->irq = dev->irq; netdev->netdev_ops = &ibmveth_netdev_ops; netdev->ethtool_ops = &netdev_ethtool_ops; @@ -1380,7 +1397,7 @@ NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM; netdev->features |= netdev->hw_features; - memcpy(netdev->dev_addr, &adapter->mac_addr, netdev->addr_len); + memcpy(netdev->dev_addr, mac_addr_p, ETH_ALEN); for (i = 0; i < IBMVETH_NUM_BUFF_POOLS; i++) { struct kobject *kobj = &adapter->rx_buff_pool[i].kobj; --- linux-3.13.0.orig/drivers/net/ethernet/ibm/ibmveth.h +++ linux-3.13.0/drivers/net/ethernet/ibm/ibmveth.h @@ -139,7 +139,6 @@ struct napi_struct napi; struct net_device_stats stats; unsigned int mcastFilterSize; - unsigned long mac_addr; void * buffer_list_addr; void * filter_list_addr; dma_addr_t buffer_list_dma; --- linux-3.13.0.orig/drivers/net/ethernet/intel/Kconfig +++ linux-3.13.0/drivers/net/ethernet/intel/Kconfig @@ -243,6 +243,7 @@ config I40E tristate "Intel(R) Ethernet Controller XL710 Family support" + select PTP_1588_CLOCK depends on PCI ---help--- This driver supports Intel(R) Ethernet Controller XL710 Family of @@ -259,4 +260,44 @@ To compile this driver as a module, choose M here. The module will be called i40e. +config I40E_VXLAN + bool "Virtual eXtensible Local Area Network Support" + default n + depends on I40E && VXLAN && !(I40E=y && VXLAN=m) + ---help--- + This allows one to create VXLAN virtual interfaces that provide + Layer 2 Networks over Layer 3 Networks. VXLAN is often used + to tunnel virtual network infrastructure in virtualized environments. + Say Y here if you want to use Virtual eXtensible Local Area Network + (VXLAN) in the driver. + +config I40E_DCB + bool "Data Center Bridging (DCB) Support" + default n + depends on I40E && DCB + ---help--- + Say Y here if you want to use Data Center Bridging (DCB) in the + driver. + + If unsure, say N. + +config I40EVF + tristate "Intel(R) XL710 X710 Virtual Function Ethernet support" + depends on PCI_MSI + ---help--- + This driver supports Intel(R) XL710 and X710 virtual functions. + For more information on how to identify your adapter, go to the + Adapter & Driver ID Guide at: + + + + For general information and support, go to the Intel support + website at: + + + + To compile this driver as a module, choose M here. The module + will be called i40evf. MSI-X interrupt support is required + for this driver to work correctly. + endif # NET_VENDOR_INTEL --- linux-3.13.0.orig/drivers/net/ethernet/intel/Makefile +++ linux-3.13.0/drivers/net/ethernet/intel/Makefile @@ -11,3 +11,4 @@ obj-$(CONFIG_IXGBEVF) += ixgbevf/ obj-$(CONFIG_I40E) += i40e/ obj-$(CONFIG_IXGB) += ixgb/ +obj-$(CONFIG_I40EVF) += i40evf/ --- linux-3.13.0.orig/drivers/net/ethernet/intel/e100.c +++ linux-3.13.0/drivers/net/ethernet/intel/e100.c @@ -3034,7 +3034,7 @@ *enable_wake = false; } - pci_disable_device(pdev); + pci_clear_master(pdev); } static int __e100_power_off(struct pci_dev *pdev, bool wake) --- linux-3.13.0.orig/drivers/net/ethernet/intel/e1000/e1000_main.c +++ linux-3.13.0/drivers/net/ethernet/intel/e1000/e1000_main.c @@ -144,6 +144,11 @@ static bool e1000_clean_jumbo_rx_irq(struct e1000_adapter *adapter, struct e1000_rx_ring *rx_ring, int *work_done, int work_to_do); +static void e1000_alloc_dummy_rx_buffers(struct e1000_adapter *adapter, + struct e1000_rx_ring *rx_ring, + int cleaned_count) +{ +} static void e1000_alloc_rx_buffers(struct e1000_adapter *adapter, struct e1000_rx_ring *rx_ring, int cleaned_count); @@ -3531,8 +3536,11 @@ msleep(1); /* e1000_down has a dependency on max_frame_size */ hw->max_frame_size = max_frame; - if (netif_running(netdev)) + if (netif_running(netdev)) { + /* prevent buffers from being reallocated */ + adapter->alloc_rx_buf = e1000_alloc_dummy_rx_buffers; e1000_down(adapter); + } /* NOTE: netdev_alloc_skb reserves 16 bytes, and typically NET_IP_ALIGN * means we reserve 2 more, this pushes us to allocate from the next --- linux-3.13.0.orig/drivers/net/ethernet/intel/e1000e/netdev.c +++ linux-3.13.0/drivers/net/ethernet/intel/e1000e/netdev.c @@ -2976,11 +2976,21 @@ u32 rctl, rfctl; u32 pages = 0; - /* Workaround Si errata on PCHx - configure jumbo frame flow */ - if ((hw->mac.type >= e1000_pch2lan) && - (adapter->netdev->mtu > ETH_DATA_LEN) && - e1000_lv_jumbo_workaround_ich8lan(hw, true)) - e_dbg("failed to enable jumbo frame workaround mode\n"); + /* Workaround Si errata on PCHx - configure jumbo frame flow. + * If jumbo frames not set, program related MAC/PHY registers + * to h/w defaults + */ + if (hw->mac.type >= e1000_pch2lan) { + s32 ret_val; + + if (adapter->netdev->mtu > ETH_DATA_LEN) + ret_val = e1000_lv_jumbo_workaround_ich8lan(hw, true); + else + ret_val = e1000_lv_jumbo_workaround_ich8lan(hw, false); + + if (ret_val) + e_dbg("failed to enable|disable jumbo frame workaround mode\n"); + } /* Program MC offset vector base */ rctl = er32(RCTL); --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40e/Makefile +++ linux-3.13.0/drivers/net/ethernet/intel/i40e/Makefile @@ -1,7 +1,7 @@ ################################################################################ # # Intel Ethernet Controller XL710 Family Linux Driver -# Copyright(c) 2013 Intel Corporation. +# Copyright(c) 2013 - 2014 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, @@ -12,9 +12,8 @@ # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # more details. # -# You should have 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. +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . # # The full GNU General Public License is included in this distribution in # the file called "COPYING". @@ -41,4 +40,7 @@ i40e_debugfs.o \ i40e_diag.o \ i40e_txrx.o \ + i40e_ptp.o \ i40e_virtchnl_pf.o + +i40e-$(CONFIG_I40E_DCB) += i40e_dcb.o i40e_dcb_nl.o --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40e/i40e.h +++ linux-3.13.0/drivers/net/ethernet/intel/i40e/i40e.h @@ -1,7 +1,7 @@ /******************************************************************************* * * Intel Ethernet Controller XL710 Family Linux Driver - * Copyright(c) 2013 Intel Corporation. + * Copyright(c) 2013 - 2014 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, @@ -12,9 +12,8 @@ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * - * You should have 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. + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . * * The full GNU General Public License is included in this distribution in * the file called "COPYING". @@ -29,6 +28,7 @@ #define _I40E_H_ #include +#include #include #include #include @@ -50,11 +50,15 @@ #include #include #include +#include +#include +#include #include "i40e_type.h" #include "i40e_prototype.h" #include "i40e_virtchnl.h" #include "i40e_virtchnl_pf.h" #include "i40e_txrx.h" +#include "i40e_dcb.h" /* Useful i40e defaults */ #define I40E_BASE_PF_SEID 16 @@ -63,7 +67,7 @@ #define I40E_MAX_VEB 16 #define I40E_MAX_NUM_DESCRIPTORS 4096 -#define I40E_MAX_REGISTER 0x0038FFFF +#define I40E_MAX_REGISTER 0x800000 #define I40E_DEFAULT_NUM_DESCRIPTORS 512 #define I40E_REQ_DESCRIPTOR_MULTIPLE 32 #define I40E_MIN_NUM_DESCRIPTORS 64 @@ -72,6 +76,7 @@ #define I40E_DEFAULT_QUEUES_PER_VMDQ 2 /* max 16 qps */ #define I40E_DEFAULT_QUEUES_PER_VF 4 #define I40E_DEFAULT_QUEUES_PER_TC 1 /* should be a power of 2 */ +#define I40E_MAX_QUEUES_PER_TC 64 /* should be a power of 2 */ #define I40E_FDIR_RING 0 #define I40E_FDIR_RING_COUNT 32 #define I40E_MAX_AQ_BUF_SIZE 4096 @@ -81,12 +86,14 @@ #define I40E_DEFAULT_MSG_ENABLE 4 #define I40E_NVM_VERSION_LO_SHIFT 0 -#define I40E_NVM_VERSION_LO_MASK (0xf << I40E_NVM_VERSION_LO_SHIFT) -#define I40E_NVM_VERSION_MID_SHIFT 4 -#define I40E_NVM_VERSION_MID_MASK (0xff << I40E_NVM_VERSION_MID_SHIFT) +#define I40E_NVM_VERSION_LO_MASK (0xff << I40E_NVM_VERSION_LO_SHIFT) #define I40E_NVM_VERSION_HI_SHIFT 12 #define I40E_NVM_VERSION_HI_MASK (0xf << I40E_NVM_VERSION_HI_SHIFT) +/* The values in here are decimal coded as hex as is the case in the NVM map*/ +#define I40E_CURRENT_NVM_VERSION_HI 0x2 +#define I40E_CURRENT_NVM_VERSION_LO 0x40 + /* magic for getting defines into strings */ #define STRINGIFY(foo) #foo #define XSTRINGIFY(bar) STRINGIFY(bar) @@ -127,7 +134,10 @@ __I40E_PF_RESET_REQUESTED, __I40E_CORE_RESET_REQUESTED, __I40E_GLOBAL_RESET_REQUESTED, + __I40E_EMP_RESET_REQUESTED, __I40E_FILTER_OVERFLOW_PROMISC, + __I40E_SUSPENDED, + __I40E_BAD_EEPROM, }; enum i40e_interrupt_policy { @@ -144,8 +154,21 @@ }; #define I40E_DEFAULT_ATR_SAMPLE_RATE 20 -#define I40E_FDIR_MAX_RAW_PACKET_LOOKUP 512 -struct i40e_fdir_data { +#define I40E_FDIR_MAX_RAW_PACKET_SIZE 512 +#define I40E_FDIR_BUFFER_FULL_MARGIN 10 +#define I40E_FDIR_BUFFER_HEAD_ROOM 200 + +struct i40e_fdir_filter { + struct hlist_node fdir_node; + /* filter ipnut set */ + u8 flow_type; + u8 ip4_proto; + __be32 dst_ip[4]; + __be32 src_ip[4]; + __be16 src_port; + __be16 dst_port; + __be32 sctp_v_tag; + /* filter control */ u16 q_index; u8 flex_off; u8 pctype; @@ -154,9 +177,10 @@ u8 fd_status; u16 cnt_index; u32 fd_id; - u8 *raw_packet; }; +#define I40E_ETH_P_LLDP 0x88cc + #define I40E_DCB_PRIO_TYPE_STRICT 0 #define I40E_DCB_PRIO_TYPE_ETS 1 #define I40E_DCB_STRICT_PRIO_CREDITS 127 @@ -186,19 +210,28 @@ bool fc_autoneg_status; u16 eeprom_version; - u16 num_vmdq_vsis; /* num vmdq pools this pf has set up */ + u16 num_vmdq_vsis; /* num vmdq vsis this pf has set up */ u16 num_vmdq_qps; /* num queue pairs per vmdq pool */ u16 num_vmdq_msix; /* num queue vectors per vmdq pool */ u16 num_req_vfs; /* num vfs requested for this vf */ u16 num_vf_qps; /* num queue pairs per vf */ - u16 num_tc_qps; /* num queue pairs per TC */ u16 num_lan_qps; /* num lan queues this pf has set up */ u16 num_lan_msix; /* num queue vectors for the base pf vsi */ + int queues_left; /* queues left unclaimed */ u16 rss_size; /* num queues in the RSS array */ u16 rss_size_max; /* HW defined max RSS queues */ u16 fdir_pf_filter_count; /* num of guaranteed filters for this PF */ u8 atr_sample_rate; + bool wol_en; + + struct hlist_head fdir_filter_list; + u16 fdir_pf_active_filters; +#ifdef CONFIG_I40E_VXLAN + __be16 vxlan_ports[I40E_MAX_PF_UDP_OFFLOAD_PORTS]; + u16 pending_vxlan_bitmap; + +#endif enum i40e_interrupt_policy int_policy; u16 rx_itr_default; u16 tx_itr_default; @@ -216,24 +249,27 @@ #define I40E_FLAG_RX_1BUF_ENABLED (u64)(1 << 4) #define I40E_FLAG_RX_PS_ENABLED (u64)(1 << 5) #define I40E_FLAG_RSS_ENABLED (u64)(1 << 6) -#define I40E_FLAG_MQ_ENABLED (u64)(1 << 7) -#define I40E_FLAG_VMDQ_ENABLED (u64)(1 << 8) -#define I40E_FLAG_FDIR_REQUIRES_REINIT (u64)(1 << 9) -#define I40E_FLAG_NEED_LINK_UPDATE (u64)(1 << 10) -#define I40E_FLAG_IN_NETPOLL (u64)(1 << 13) -#define I40E_FLAG_16BYTE_RX_DESC_ENABLED (u64)(1 << 14) -#define I40E_FLAG_CLEAN_ADMINQ (u64)(1 << 15) -#define I40E_FLAG_FILTER_SYNC (u64)(1 << 16) -#define I40E_FLAG_PROCESS_MDD_EVENT (u64)(1 << 18) -#define I40E_FLAG_PROCESS_VFLR_EVENT (u64)(1 << 19) -#define I40E_FLAG_SRIOV_ENABLED (u64)(1 << 20) -#define I40E_FLAG_DCB_ENABLED (u64)(1 << 21) -#define I40E_FLAG_FDIR_ENABLED (u64)(1 << 22) -#define I40E_FLAG_FDIR_ATR_ENABLED (u64)(1 << 23) -#define I40E_FLAG_MFP_ENABLED (u64)(1 << 27) +#define I40E_FLAG_VMDQ_ENABLED (u64)(1 << 7) +#define I40E_FLAG_FDIR_REQUIRES_REINIT (u64)(1 << 8) +#define I40E_FLAG_NEED_LINK_UPDATE (u64)(1 << 9) +#define I40E_FLAG_IN_NETPOLL (u64)(1 << 12) +#define I40E_FLAG_16BYTE_RX_DESC_ENABLED (u64)(1 << 13) +#define I40E_FLAG_CLEAN_ADMINQ (u64)(1 << 14) +#define I40E_FLAG_FILTER_SYNC (u64)(1 << 15) +#define I40E_FLAG_PROCESS_MDD_EVENT (u64)(1 << 17) +#define I40E_FLAG_PROCESS_VFLR_EVENT (u64)(1 << 18) +#define I40E_FLAG_SRIOV_ENABLED (u64)(1 << 19) +#define I40E_FLAG_DCB_ENABLED (u64)(1 << 20) +#define I40E_FLAG_FD_SB_ENABLED (u64)(1 << 21) +#define I40E_FLAG_FD_ATR_ENABLED (u64)(1 << 22) +#define I40E_FLAG_PTP (u64)(1 << 25) +#define I40E_FLAG_MFP_ENABLED (u64)(1 << 26) +#ifdef CONFIG_I40E_VXLAN +#define I40E_FLAG_VXLAN_FILTER_SYNC (u64)(1 << 27) +#endif - u16 num_tx_queues; - u16 num_rx_queues; + /* tracks features that get auto disabled by errors */ + u64 auto_disable_flags; bool stat_offsets_loaded; struct i40e_hw_port_stats stats; @@ -247,6 +283,7 @@ u16 globr_count; /* Global reset count */ u16 empr_count; /* EMP reset count */ u16 pfr_count; /* PF reset count */ + u16 sw_int_count; /* SW interrupt count */ struct mutex switch_mutex; u16 lan_vsi; /* our default LAN VSI */ @@ -270,6 +307,8 @@ struct dentry *i40e_dbg_pf; #endif /* CONFIG_DEBUG_FS */ + u16 instance; /* A unique number per i40e_pf instance in the system */ + /* sr-iov config info */ struct i40e_vf *vf; int num_alloc_vfs; /* actual number of VFs allocated */ @@ -287,6 +326,20 @@ u32 fcoe_hmc_filt_num; u32 fcoe_hmc_cntx_num; struct i40e_filter_control_settings filter_settings; + + struct ptp_clock *ptp_clock; + struct ptp_clock_info ptp_caps; + struct sk_buff *ptp_tx_skb; + struct work_struct ptp_tx_work; + struct hwtstamp_config tstamp_config; + unsigned long ptp_tx_start; + unsigned long last_rx_ptp_check; + spinlock_t tmreg_lock; /* Used to protect the device time registers. */ + u64 ptp_base_adj; + u32 tx_hwtstamp_timeouts; + u32 rx_hwtstamp_cleared; + bool ptp_tx; + bool ptp_rx; }; struct i40e_mac_filter { @@ -441,15 +494,13 @@ static char buf[32]; snprintf(buf, sizeof(buf), - "f%d.%d a%d.%d n%02d.%02d.%02d e%08x", + "f%d.%d a%d.%d n%02x.%02x e%08x", hw->aq.fw_maj_ver, hw->aq.fw_min_ver, hw->aq.api_maj_ver, hw->aq.api_min_ver, - (hw->nvm.version & I40E_NVM_VERSION_HI_MASK) - >> I40E_NVM_VERSION_HI_SHIFT, - (hw->nvm.version & I40E_NVM_VERSION_MID_MASK) - >> I40E_NVM_VERSION_MID_SHIFT, - (hw->nvm.version & I40E_NVM_VERSION_LO_MASK) - >> I40E_NVM_VERSION_LO_SHIFT, + (hw->nvm.version & I40E_NVM_VERSION_HI_MASK) >> + I40E_NVM_VERSION_HI_SHIFT, + (hw->nvm.version & I40E_NVM_VERSION_LO_MASK) >> + I40E_NVM_VERSION_LO_SHIFT, hw->nvm.eetrack); return buf; @@ -495,6 +546,7 @@ void i40e_down(struct i40e_vsi *vsi); extern const char i40e_driver_name[]; extern const char i40e_driver_version_str[]; +void i40e_do_reset_safe(struct i40e_pf *pf, u32 reset_flags); void i40e_do_reset(struct i40e_pf *pf, u32 reset_flags); void i40e_update_stats(struct i40e_vsi *vsi); void i40e_update_eth_stats(struct i40e_vsi *vsi); @@ -502,16 +554,13 @@ int i40e_fetch_switch_configuration(struct i40e_pf *pf, bool printconfig); -/* needed by i40e_main.c */ -void i40e_add_fdir_filter(struct i40e_fdir_data fdir_data, - struct i40e_ring *tx_ring); -void i40e_add_remove_filter(struct i40e_fdir_data fdir_data, - struct i40e_ring *tx_ring); -void i40e_update_fdir_filter(struct i40e_fdir_data fdir_data, - struct i40e_ring *tx_ring); -int i40e_program_fdir_filter(struct i40e_fdir_data *fdir_data, +int i40e_program_fdir_filter(struct i40e_fdir_filter *fdir_data, u8 *raw_packet, struct i40e_pf *pf, bool add); - +int i40e_add_del_fdir(struct i40e_vsi *vsi, + struct i40e_fdir_filter *input, bool add); +void i40e_fdir_check_and_reenable(struct i40e_pf *pf); +int i40e_get_current_fd_count(struct i40e_pf *pf); +bool i40e_set_ntuple(struct i40e_pf *pf, netdev_features_t features); void i40e_set_ethtool_ops(struct net_device *netdev); struct i40e_mac_filter *i40e_add_filter(struct i40e_vsi *vsi, u8 *macaddr, s16 vlan, @@ -524,10 +573,13 @@ int i40e_vsi_release(struct i40e_vsi *vsi); struct i40e_vsi *i40e_vsi_lookup(struct i40e_pf *pf, enum i40e_vsi_type type, struct i40e_vsi *start_vsi); +int i40e_vsi_control_rings(struct i40e_vsi *vsi, bool enable); +int i40e_reconfig_rss_queues(struct i40e_pf *pf, int queue_count); struct i40e_veb *i40e_veb_setup(struct i40e_pf *pf, u16 flags, u16 uplink_seid, u16 downlink_seid, u8 enabled_tc); void i40e_veb_release(struct i40e_veb *veb); +int i40e_veb_config_tc(struct i40e_veb *veb, u8 enabled_tc); i40e_status i40e_vsi_add_pvid(struct i40e_vsi *vsi, u16 vid); void i40e_vsi_remove_pvid(struct i40e_vsi *vsi); void i40e_vsi_reset_stats(struct i40e_vsi *vsi); @@ -544,8 +596,10 @@ static inline void i40e_dbg_exit(void) {} #endif /* CONFIG_DEBUG_FS*/ void i40e_irq_dynamic_enable(struct i40e_vsi *vsi, int vector); +void i40e_irq_dynamic_disable_icr0(struct i40e_pf *pf); void i40e_irq_dynamic_enable_icr0(struct i40e_pf *pf); int i40e_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd); +int i40e_vsi_open(struct i40e_vsi *vsi); void i40e_vlan_stripping_disable(struct i40e_vsi *vsi); int i40e_vsi_add_vlan(struct i40e_vsi *vsi, s16 vid); int i40e_vsi_kill_vlan(struct i40e_vsi *vsi, s16 vid); @@ -555,5 +609,21 @@ struct i40e_mac_filter *i40e_find_mac(struct i40e_vsi *vsi, u8 *macaddr, bool is_vf, bool is_netdev); void i40e_vlan_stripping_enable(struct i40e_vsi *vsi); - +#ifdef CONFIG_I40E_DCB +void i40e_dcbnl_flush_apps(struct i40e_pf *pf, + struct i40e_dcbx_config *new_cfg); +void i40e_dcbnl_set_all(struct i40e_vsi *vsi); +void i40e_dcbnl_setup(struct i40e_vsi *vsi); +bool i40e_dcb_need_reconfig(struct i40e_pf *pf, + struct i40e_dcbx_config *old_cfg, + struct i40e_dcbx_config *new_cfg); +#endif /* CONFIG_I40E_DCB */ +void i40e_ptp_rx_hang(struct i40e_vsi *vsi); +void i40e_ptp_tx_hwtstamp(struct i40e_pf *pf); +void i40e_ptp_rx_hwtstamp(struct i40e_pf *pf, struct sk_buff *skb, u8 index); +void i40e_ptp_set_increment(struct i40e_pf *pf); +int i40e_ptp_set_ts_config(struct i40e_pf *pf, struct ifreq *ifr); +int i40e_ptp_get_ts_config(struct i40e_pf *pf, struct ifreq *ifr); +void i40e_ptp_init(struct i40e_pf *pf); +void i40e_ptp_stop(struct i40e_pf *pf); #endif /* _I40E_H_ */ --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40e/i40e_adminq.c +++ linux-3.13.0/drivers/net/ethernet/intel/i40e/i40e_adminq.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Intel Ethernet Controller XL710 Family Linux Driver - * Copyright(c) 2013 Intel Corporation. + * Copyright(c) 2013 - 2014 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, @@ -12,9 +12,8 @@ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * - * You should have 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. + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . * * The full GNU General Public License is included in this distribution in * the file called "COPYING". @@ -31,6 +30,8 @@ #include "i40e_adminq.h" #include "i40e_prototype.h" +static void i40e_resume_aq(struct i40e_hw *hw); + /** * i40e_adminq_init_regs - Initialize AdminQ registers * @hw: pointer to the hardware structure @@ -43,13 +44,17 @@ if (hw->mac.type == I40E_MAC_VF) { hw->aq.asq.tail = I40E_VF_ATQT1; hw->aq.asq.head = I40E_VF_ATQH1; + hw->aq.asq.len = I40E_VF_ATQLEN1; hw->aq.arq.tail = I40E_VF_ARQT1; hw->aq.arq.head = I40E_VF_ARQH1; + hw->aq.arq.len = I40E_VF_ARQLEN1; } else { hw->aq.asq.tail = I40E_PF_ATQT; hw->aq.asq.head = I40E_PF_ATQH; + hw->aq.asq.len = I40E_PF_ATQLEN; hw->aq.arq.tail = I40E_PF_ARQT; hw->aq.arq.head = I40E_PF_ARQH; + hw->aq.arq.len = I40E_PF_ARQLEN; } } @@ -60,9 +65,8 @@ static i40e_status i40e_alloc_adminq_asq_ring(struct i40e_hw *hw) { i40e_status ret_code; - struct i40e_virt_mem mem; - ret_code = i40e_allocate_dma_mem(hw, &hw->aq.asq_mem, + ret_code = i40e_allocate_dma_mem(hw, &hw->aq.asq.desc_buf, i40e_mem_atq_ring, (hw->aq.num_asq_entries * sizeof(struct i40e_aq_desc)), @@ -70,21 +74,14 @@ if (ret_code) return ret_code; - hw->aq.asq.desc = hw->aq.asq_mem.va; - hw->aq.asq.dma_addr = hw->aq.asq_mem.pa; - - ret_code = i40e_allocate_virt_mem(hw, &mem, + ret_code = i40e_allocate_virt_mem(hw, &hw->aq.asq.cmd_buf, (hw->aq.num_asq_entries * sizeof(struct i40e_asq_cmd_details))); if (ret_code) { - i40e_free_dma_mem(hw, &hw->aq.asq_mem); - hw->aq.asq_mem.va = NULL; - hw->aq.asq_mem.pa = 0; + i40e_free_dma_mem(hw, &hw->aq.asq.desc_buf); return ret_code; } - hw->aq.asq.details = mem.va; - return ret_code; } @@ -96,16 +93,11 @@ { i40e_status ret_code; - ret_code = i40e_allocate_dma_mem(hw, &hw->aq.arq_mem, + ret_code = i40e_allocate_dma_mem(hw, &hw->aq.arq.desc_buf, i40e_mem_arq_ring, (hw->aq.num_arq_entries * sizeof(struct i40e_aq_desc)), I40E_ADMINQ_DESC_ALIGNMENT); - if (ret_code) - return ret_code; - - hw->aq.arq.desc = hw->aq.arq_mem.va; - hw->aq.arq.dma_addr = hw->aq.arq_mem.pa; return ret_code; } @@ -119,14 +111,7 @@ **/ static void i40e_free_adminq_asq(struct i40e_hw *hw) { - struct i40e_virt_mem mem; - - i40e_free_dma_mem(hw, &hw->aq.asq_mem); - hw->aq.asq_mem.va = NULL; - hw->aq.asq_mem.pa = 0; - mem.va = hw->aq.asq.details; - i40e_free_virt_mem(hw, &mem); - hw->aq.asq.details = NULL; + i40e_free_dma_mem(hw, &hw->aq.asq.desc_buf); } /** @@ -138,20 +123,17 @@ **/ static void i40e_free_adminq_arq(struct i40e_hw *hw) { - i40e_free_dma_mem(hw, &hw->aq.arq_mem); - hw->aq.arq_mem.va = NULL; - hw->aq.arq_mem.pa = 0; + i40e_free_dma_mem(hw, &hw->aq.arq.desc_buf); } /** * i40e_alloc_arq_bufs - Allocate pre-posted buffers for the receive queue - * @hw: pointer to the hardware structure + * @hw: pointer to the hardware structure **/ static i40e_status i40e_alloc_arq_bufs(struct i40e_hw *hw) { i40e_status ret_code; struct i40e_aq_desc *desc; - struct i40e_virt_mem mem; struct i40e_dma_mem *bi; int i; @@ -160,11 +142,11 @@ */ /* buffer_info structures do not need alignment */ - ret_code = i40e_allocate_virt_mem(hw, &mem, (hw->aq.num_arq_entries * - sizeof(struct i40e_dma_mem))); + ret_code = i40e_allocate_virt_mem(hw, &hw->aq.arq.dma_head, + (hw->aq.num_arq_entries * sizeof(struct i40e_dma_mem))); if (ret_code) goto alloc_arq_bufs; - hw->aq.arq.r.arq_bi = (struct i40e_dma_mem *)mem.va; + hw->aq.arq.r.arq_bi = (struct i40e_dma_mem *)hw->aq.arq.dma_head.va; /* allocate the mapped buffers */ for (i = 0; i < hw->aq.num_arq_entries; i++) { @@ -206,29 +188,27 @@ i--; for (; i >= 0; i--) i40e_free_dma_mem(hw, &hw->aq.arq.r.arq_bi[i]); - mem.va = hw->aq.arq.r.arq_bi; - i40e_free_virt_mem(hw, &mem); + i40e_free_virt_mem(hw, &hw->aq.arq.dma_head); return ret_code; } /** * i40e_alloc_asq_bufs - Allocate empty buffer structs for the send queue - * @hw: pointer to the hardware structure + * @hw: pointer to the hardware structure **/ static i40e_status i40e_alloc_asq_bufs(struct i40e_hw *hw) { i40e_status ret_code; - struct i40e_virt_mem mem; struct i40e_dma_mem *bi; int i; /* No mapped memory needed yet, just the buffer info structures */ - ret_code = i40e_allocate_virt_mem(hw, &mem, (hw->aq.num_asq_entries * - sizeof(struct i40e_dma_mem))); + ret_code = i40e_allocate_virt_mem(hw, &hw->aq.asq.dma_head, + (hw->aq.num_asq_entries * sizeof(struct i40e_dma_mem))); if (ret_code) goto alloc_asq_bufs; - hw->aq.asq.r.asq_bi = (struct i40e_dma_mem *)mem.va; + hw->aq.asq.r.asq_bi = (struct i40e_dma_mem *)hw->aq.asq.dma_head.va; /* allocate the mapped buffers */ for (i = 0; i < hw->aq.num_asq_entries; i++) { @@ -248,35 +228,36 @@ i--; for (; i >= 0; i--) i40e_free_dma_mem(hw, &hw->aq.asq.r.asq_bi[i]); - mem.va = hw->aq.asq.r.asq_bi; - i40e_free_virt_mem(hw, &mem); + i40e_free_virt_mem(hw, &hw->aq.asq.dma_head); return ret_code; } /** * i40e_free_arq_bufs - Free receive queue buffer info elements - * @hw: pointer to the hardware structure + * @hw: pointer to the hardware structure **/ static void i40e_free_arq_bufs(struct i40e_hw *hw) { - struct i40e_virt_mem mem; int i; + /* free descriptors */ for (i = 0; i < hw->aq.num_arq_entries; i++) i40e_free_dma_mem(hw, &hw->aq.arq.r.arq_bi[i]); - mem.va = hw->aq.arq.r.arq_bi; - i40e_free_virt_mem(hw, &mem); + /* free the descriptor memory */ + i40e_free_dma_mem(hw, &hw->aq.arq.desc_buf); + + /* free the dma header */ + i40e_free_virt_mem(hw, &hw->aq.arq.dma_head); } /** * i40e_free_asq_bufs - Free send queue buffer info elements - * @hw: pointer to the hardware structure + * @hw: pointer to the hardware structure **/ static void i40e_free_asq_bufs(struct i40e_hw *hw) { - struct i40e_virt_mem mem; int i; /* only unmap if the address is non-NULL */ @@ -284,14 +265,19 @@ if (hw->aq.asq.r.asq_bi[i].pa) i40e_free_dma_mem(hw, &hw->aq.asq.r.asq_bi[i]); - /* now free the buffer info list */ - mem.va = hw->aq.asq.r.asq_bi; - i40e_free_virt_mem(hw, &mem); + /* free the buffer info list */ + i40e_free_virt_mem(hw, &hw->aq.asq.cmd_buf); + + /* free the descriptor memory */ + i40e_free_dma_mem(hw, &hw->aq.asq.desc_buf); + + /* free the dma header */ + i40e_free_virt_mem(hw, &hw->aq.asq.dma_head); } /** * i40e_config_asq_regs - configure ASQ registers - * @hw: pointer to the hardware structure + * @hw: pointer to the hardware structure * * Configure base address and length registers for the transmit queue **/ @@ -299,14 +285,18 @@ { if (hw->mac.type == I40E_MAC_VF) { /* configure the transmit queue */ - wr32(hw, I40E_VF_ATQBAH1, upper_32_bits(hw->aq.asq.dma_addr)); - wr32(hw, I40E_VF_ATQBAL1, lower_32_bits(hw->aq.asq.dma_addr)); + wr32(hw, I40E_VF_ATQBAH1, + upper_32_bits(hw->aq.asq.desc_buf.pa)); + wr32(hw, I40E_VF_ATQBAL1, + lower_32_bits(hw->aq.asq.desc_buf.pa)); wr32(hw, I40E_VF_ATQLEN1, (hw->aq.num_asq_entries | I40E_VF_ATQLEN1_ATQENABLE_MASK)); } else { /* configure the transmit queue */ - wr32(hw, I40E_PF_ATQBAH, upper_32_bits(hw->aq.asq.dma_addr)); - wr32(hw, I40E_PF_ATQBAL, lower_32_bits(hw->aq.asq.dma_addr)); + wr32(hw, I40E_PF_ATQBAH, + upper_32_bits(hw->aq.asq.desc_buf.pa)); + wr32(hw, I40E_PF_ATQBAL, + lower_32_bits(hw->aq.asq.desc_buf.pa)); wr32(hw, I40E_PF_ATQLEN, (hw->aq.num_asq_entries | I40E_PF_ATQLEN_ATQENABLE_MASK)); } @@ -314,7 +304,7 @@ /** * i40e_config_arq_regs - ARQ register configuration - * @hw: pointer to the hardware structure + * @hw: pointer to the hardware structure * * Configure base address and length registers for the receive (event queue) **/ @@ -322,14 +312,18 @@ { if (hw->mac.type == I40E_MAC_VF) { /* configure the receive queue */ - wr32(hw, I40E_VF_ARQBAH1, upper_32_bits(hw->aq.arq.dma_addr)); - wr32(hw, I40E_VF_ARQBAL1, lower_32_bits(hw->aq.arq.dma_addr)); + wr32(hw, I40E_VF_ARQBAH1, + upper_32_bits(hw->aq.arq.desc_buf.pa)); + wr32(hw, I40E_VF_ARQBAL1, + lower_32_bits(hw->aq.arq.desc_buf.pa)); wr32(hw, I40E_VF_ARQLEN1, (hw->aq.num_arq_entries | I40E_VF_ARQLEN1_ARQENABLE_MASK)); } else { /* configure the receive queue */ - wr32(hw, I40E_PF_ARQBAH, upper_32_bits(hw->aq.arq.dma_addr)); - wr32(hw, I40E_PF_ARQBAL, lower_32_bits(hw->aq.arq.dma_addr)); + wr32(hw, I40E_PF_ARQBAH, + upper_32_bits(hw->aq.arq.desc_buf.pa)); + wr32(hw, I40E_PF_ARQBAL, + lower_32_bits(hw->aq.arq.desc_buf.pa)); wr32(hw, I40E_PF_ARQLEN, (hw->aq.num_arq_entries | I40E_PF_ARQLEN_ARQENABLE_MASK)); } @@ -340,7 +334,7 @@ /** * i40e_init_asq - main initialization routine for ASQ - * @hw: pointer to the hardware structure + * @hw: pointer to the hardware structure * * This is the main initialization routine for the Admin Send Queue * Prior to calling this function, drivers *MUST* set the following fields @@ -397,7 +391,7 @@ /** * i40e_init_arq - initialize ARQ - * @hw: pointer to the hardware structure + * @hw: pointer to the hardware structure * * The main initialization routine for the Admin Receive (Event) Queue. * Prior to calling this function, drivers *MUST* set the following fields @@ -454,7 +448,7 @@ /** * i40e_shutdown_asq - shutdown the ASQ - * @hw: pointer to the hardware structure + * @hw: pointer to the hardware structure * * The main shutdown routine for the Admin Send Queue **/ @@ -466,10 +460,9 @@ return I40E_ERR_NOT_READY; /* Stop firmware AdminQ processing */ - if (hw->mac.type == I40E_MAC_VF) - wr32(hw, I40E_VF_ATQLEN1, 0); - else - wr32(hw, I40E_PF_ATQLEN, 0); + wr32(hw, hw->aq.asq.head, 0); + wr32(hw, hw->aq.asq.tail, 0); + wr32(hw, hw->aq.asq.len, 0); /* make sure lock is available */ mutex_lock(&hw->aq.asq_mutex); @@ -478,8 +471,6 @@ /* free ring buffers */ i40e_free_asq_bufs(hw); - /* free the ring descriptors */ - i40e_free_adminq_asq(hw); mutex_unlock(&hw->aq.asq_mutex); @@ -488,7 +479,7 @@ /** * i40e_shutdown_arq - shutdown ARQ - * @hw: pointer to the hardware structure + * @hw: pointer to the hardware structure * * The main shutdown routine for the Admin Receive Queue **/ @@ -500,10 +491,9 @@ return I40E_ERR_NOT_READY; /* Stop firmware AdminQ processing */ - if (hw->mac.type == I40E_MAC_VF) - wr32(hw, I40E_VF_ARQLEN1, 0); - else - wr32(hw, I40E_PF_ARQLEN, 0); + wr32(hw, hw->aq.arq.head, 0); + wr32(hw, hw->aq.arq.tail, 0); + wr32(hw, hw->aq.arq.len, 0); /* make sure lock is available */ mutex_lock(&hw->aq.arq_mutex); @@ -512,8 +502,6 @@ /* free ring buffers */ i40e_free_arq_bufs(hw); - /* free the ring descriptors */ - i40e_free_adminq_arq(hw); mutex_unlock(&hw->aq.arq_mutex); @@ -522,7 +510,7 @@ /** * i40e_init_adminq - main initialization routine for Admin Queue - * @hw: pointer to the hardware structure + * @hw: pointer to the hardware structure * * Prior to calling this function, drivers *MUST* set the following fields * in the hw->aq structure: @@ -533,8 +521,9 @@ **/ i40e_status i40e_init_adminq(struct i40e_hw *hw) { - u16 eetrack_lo, eetrack_hi; i40e_status ret_code; + u16 eetrack_lo, eetrack_hi; + int retry = 0; /* verify input for valid configuration */ if ((hw->aq.num_arq_entries == 0) || @@ -562,23 +551,41 @@ if (ret_code) goto init_adminq_free_asq; - ret_code = i40e_aq_get_firmware_version(hw, - &hw->aq.fw_maj_ver, &hw->aq.fw_min_ver, - &hw->aq.api_maj_ver, &hw->aq.api_min_ver, - NULL); - if (ret_code) + /* There are some cases where the firmware may not be quite ready + * for AdminQ operations, so we retry the AdminQ setup a few times + * if we see timeouts in this first AQ call. + */ + do { + ret_code = i40e_aq_get_firmware_version(hw, + &hw->aq.fw_maj_ver, + &hw->aq.fw_min_ver, + &hw->aq.api_maj_ver, + &hw->aq.api_min_ver, + NULL); + if (ret_code != I40E_ERR_ADMIN_QUEUE_TIMEOUT) + break; + retry++; + msleep(100); + i40e_resume_aq(hw); + } while (retry < 10); + if (ret_code != I40E_SUCCESS) goto init_adminq_free_arq; - if (hw->aq.api_maj_ver != I40E_FW_API_VERSION_MAJOR || - hw->aq.api_min_ver != I40E_FW_API_VERSION_MINOR) { - ret_code = I40E_ERR_FIRMWARE_API_VERSION; - goto init_adminq_free_arq; - } + /* get the NVM version info */ i40e_read_nvm_word(hw, I40E_SR_NVM_IMAGE_VERSION, &hw->nvm.version); i40e_read_nvm_word(hw, I40E_SR_NVM_EETRACK_LO, &eetrack_lo); i40e_read_nvm_word(hw, I40E_SR_NVM_EETRACK_HI, &eetrack_hi); hw->nvm.eetrack = (eetrack_hi << 16) | eetrack_lo; + if (hw->aq.api_maj_ver != I40E_FW_API_VERSION_MAJOR || + hw->aq.api_min_ver > I40E_FW_API_VERSION_MINOR) { + ret_code = I40E_ERR_FIRMWARE_API_VERSION; + goto init_adminq_free_arq; + } + + /* pre-emptive resource lock release */ + i40e_aq_release_resource(hw, I40E_NVM_RESOURCE_ID, 0, NULL); + ret_code = i40e_aq_set_hmc_resource_profile(hw, I40E_HMC_PROFILE_DEFAULT, 0, @@ -600,12 +607,15 @@ /** * i40e_shutdown_adminq - shutdown routine for the Admin Queue - * @hw: pointer to the hardware structure + * @hw: pointer to the hardware structure **/ i40e_status i40e_shutdown_adminq(struct i40e_hw *hw) { i40e_status ret_code = 0; + if (i40e_check_asq_alive(hw)) + i40e_aq_queue_shutdown(hw, true); + i40e_shutdown_asq(hw); i40e_shutdown_arq(hw); @@ -616,7 +626,7 @@ /** * i40e_clean_asq - cleans Admin send queue - * @asq: pointer to the adminq send ring + * @hw: pointer to the hardware structure * * returns the number of free desc **/ @@ -637,9 +647,8 @@ desc_cb = *desc; cb_func(hw, &desc_cb); } - memset((void *)desc, 0, sizeof(struct i40e_aq_desc)); - memset((void *)details, 0, - sizeof(struct i40e_asq_cmd_details)); + memset(desc, 0, sizeof(*desc)); + memset(details, 0, sizeof(*details)); ntc++; if (ntc == asq->count) ntc = 0; @@ -659,12 +668,12 @@ * Returns true if the firmware has processed all descriptors on the * admin send queue. Returns false if there are still requests pending. **/ -bool i40e_asq_done(struct i40e_hw *hw) +static bool i40e_asq_done(struct i40e_hw *hw) { /* AQ designers suggest use of head for better * timing reliability than DD bit */ - return (rd32(hw, hw->aq.asq.head) == hw->aq.asq.next_to_use); + return rd32(hw, hw->aq.asq.head) == hw->aq.asq.next_to_use; } @@ -674,7 +683,7 @@ * @desc: prefilled descriptor describing the command (non DMA mem) * @buff: buffer to use for indirect commands * @buff_size: size of buffer for indirect commands - * @opaque: pointer to info to be used in async cleanup + * @cmd_details: pointer to command details structure * * This is the main send command driver routine for the Admin Queue send * queue. It runs the queue, cleans the queue, etc @@ -854,7 +863,7 @@ /* zero out the desc */ memset((void *)desc, 0, sizeof(struct i40e_aq_desc)); desc->opcode = cpu_to_le16(opcode); - desc->flags = cpu_to_le16(I40E_AQ_FLAG_EI | I40E_AQ_FLAG_SI); + desc->flags = cpu_to_le16(I40E_AQ_FLAG_SI); } /** @@ -912,7 +921,7 @@ "AQRX: Event received with error 0x%X.\n", hw->aq.arq_last_status); } else { - memcpy(&e->desc, desc, sizeof(struct i40e_aq_desc)); + e->desc = *desc; datalen = le16_to_cpu(desc->datalen); e->msg_size = min(datalen, e->msg_size); if (e->msg_buf != NULL && (e->msg_size != 0)) @@ -925,6 +934,11 @@ * size */ bi = &hw->aq.arq.r.arq_bi[ntc]; + memset((void *)desc, 0, sizeof(struct i40e_aq_desc)); + + desc->flags = cpu_to_le16(I40E_AQ_FLAG_BUF); + if (hw->aq.arq_buf_size > I40E_AQ_LARGE_BUF) + desc->flags |= cpu_to_le16(I40E_AQ_FLAG_LB); desc->datalen = cpu_to_le16((u16)bi->size); desc->params.external.addr_high = cpu_to_le32(upper_32_bits(bi->pa)); desc->params.external.addr_low = cpu_to_le32(lower_32_bits(bi->pa)); @@ -947,36 +961,16 @@ return ret_code; } -void i40e_resume_aq(struct i40e_hw *hw) +static void i40e_resume_aq(struct i40e_hw *hw) { - u32 reg = 0; - /* Registers are reset after PF reset */ hw->aq.asq.next_to_use = 0; hw->aq.asq.next_to_clean = 0; i40e_config_asq_regs(hw); - reg = hw->aq.num_asq_entries; - - if (hw->mac.type == I40E_MAC_VF) { - reg |= I40E_VF_ATQLEN_ATQENABLE_MASK; - wr32(hw, I40E_VF_ATQLEN1, reg); - } else { - reg |= I40E_PF_ATQLEN_ATQENABLE_MASK; - wr32(hw, I40E_PF_ATQLEN, reg); - } hw->aq.arq.next_to_use = 0; hw->aq.arq.next_to_clean = 0; i40e_config_arq_regs(hw); - reg = hw->aq.num_arq_entries; - - if (hw->mac.type == I40E_MAC_VF) { - reg |= I40E_VF_ATQLEN_ATQENABLE_MASK; - wr32(hw, I40E_VF_ARQLEN1, reg); - } else { - reg |= I40E_PF_ATQLEN_ATQENABLE_MASK; - wr32(hw, I40E_PF_ARQLEN, reg); - } } --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40e/i40e_adminq.h +++ linux-3.13.0/drivers/net/ethernet/intel/i40e/i40e_adminq.h @@ -1,7 +1,7 @@ /******************************************************************************* * * Intel Ethernet Controller XL710 Family Linux Driver - * Copyright(c) 2013 Intel Corporation. + * Copyright(c) 2013 - 2014 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, @@ -12,9 +12,8 @@ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * - * You should have 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. + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . * * The full GNU General Public License is included in this distribution in * the file called "COPYING". @@ -32,20 +31,20 @@ #include "i40e_adminq_cmd.h" #define I40E_ADMINQ_DESC(R, i) \ - (&(((struct i40e_aq_desc *)((R).desc))[i])) + (&(((struct i40e_aq_desc *)((R).desc_buf.va))[i])) #define I40E_ADMINQ_DESC_ALIGNMENT 4096 struct i40e_adminq_ring { - void *desc; /* Descriptor ring memory */ - void *details; /* ASQ details */ + struct i40e_virt_mem dma_head; /* space for dma structures */ + struct i40e_dma_mem desc_buf; /* descriptor ring memory */ + struct i40e_virt_mem cmd_buf; /* command buffer memory */ union { struct i40e_dma_mem *asq_bi; struct i40e_dma_mem *arq_bi; } r; - u64 dma_addr; /* Physical address of the ring */ u16 count; /* Number of descriptors */ u16 rx_buf_len; /* Admin Receive Queue buffer length */ @@ -56,6 +55,7 @@ /* used for queue tracking */ u32 head; u32 tail; + u32 len; }; /* ASQ transaction details */ @@ -69,7 +69,7 @@ }; #define I40E_ADMINQ_DETAILS(R, i) \ - (&(((struct i40e_asq_cmd_details *)((R).details))[i])) + (&(((struct i40e_asq_cmd_details *)((R).cmd_buf.va))[i])) /* ARQ event information */ struct i40e_arq_event_info { @@ -94,9 +94,6 @@ struct mutex asq_mutex; /* Send queue lock */ struct mutex arq_mutex; /* Receive queue lock */ - struct i40e_dma_mem asq_mem; /* send queue dynamic memory */ - struct i40e_dma_mem arq_mem; /* receive queue dynamic memory */ - /* last status values on send and receive queues */ enum i40e_admin_queue_err asq_last_status; enum i40e_admin_queue_err arq_last_status; --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h +++ linux-3.13.0/drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h @@ -1,7 +1,7 @@ /******************************************************************************* * * Intel Ethernet Controller XL710 Family Linux Driver - * Copyright(c) 2013 Intel Corporation. + * Copyright(c) 2013 - 2014 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, @@ -12,9 +12,8 @@ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * - * You should have 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. + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . * * The full GNU General Public License is included in this distribution in * the file called "COPYING". @@ -35,7 +34,7 @@ */ #define I40E_FW_API_VERSION_MAJOR 0x0001 -#define I40E_FW_API_VERSION_MINOR 0x0000 +#define I40E_FW_API_VERSION_MINOR 0x0001 struct i40e_aq_desc { __le16 flags; @@ -137,10 +136,13 @@ i40e_aqc_opc_set_ns_proxy_entry = 0x0105, /* LAA */ - i40e_aqc_opc_mng_laa = 0x0106, + i40e_aqc_opc_mng_laa = 0x0106, /* AQ obsolete */ i40e_aqc_opc_mac_address_read = 0x0107, i40e_aqc_opc_mac_address_write = 0x0108, + /* PXE */ + i40e_aqc_opc_clear_pxe_mode = 0x0110, + /* internal switch commands */ i40e_aqc_opc_get_switch_config = 0x0200, i40e_aqc_opc_add_statistics = 0x0201, @@ -317,13 +319,15 @@ I40E_CHECK_CMD_LENGTH(i40e_aqc_get_version); -/* Send driver version (direct 0x0002) */ +/* Send driver version (indirect 0x0002) */ struct i40e_aqc_driver_version { u8 driver_major_ver; u8 driver_minor_ver; u8 driver_build_ver; u8 driver_subbuild_ver; - u8 reserved[12]; + u8 reserved[4]; + __le32 address_high; + __le32 address_low; }; I40E_CHECK_CMD_LENGTH(i40e_aqc_driver_version); @@ -479,7 +483,7 @@ u8 reserved2[6]; }; -/* Manage MAC Address Read Command (0x0107) */ +/* Manage MAC Address Read Command (indirect 0x0107) */ struct i40e_aqc_mac_address_read { __le16 command_flags; #define I40E_AQC_LAN_ADDR_VALID 0x10 @@ -517,6 +521,16 @@ I40E_CHECK_CMD_LENGTH(i40e_aqc_mac_address_write); +/* PXE commands (0x011x) */ + +/* Clear PXE Command and response (direct 0x0110) */ +struct i40e_aqc_clear_pxe { + u8 rx_cnt; + u8 reserved[15]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_clear_pxe); + /* Switch configuration commands (0x02xx) */ /* Used by many indirect commands that only pass an seid and a buffer in the @@ -639,13 +653,15 @@ u8 reserved2[6]; }; -/* Add VSI (indirect 0x210) +/* Add VSI (indirect 0x0210) * this indirect command uses struct i40e_aqc_vsi_properties_data * as the indirect buffer (128 bytes) * - * Update VSI (indirect 0x211) Get VSI (indirect 0x0212) - * use the generic i40e_aqc_switch_seid descriptor format - * use the same completion and data structure as Add VSI + * Update VSI (indirect 0x211) + * uses the same data structure as Add VSI + * + * Get VSI (indirect 0x0212) + * uses the same completion and data structure as Add VSI */ struct i40e_aqc_add_get_update_vsi { __le16 uplink_seid; @@ -664,7 +680,6 @@ #define I40E_AQ_VSI_TYPE_PF 0x2 #define I40E_AQ_VSI_TYPE_EMP_MNG 0x3 #define I40E_AQ_VSI_FLAG_CASCADED_PV 0x4 -#define I40E_AQ_VSI_FLAG_CLOUD_VSI 0x8 __le32 addr_high; __le32 addr_low; }; @@ -1026,7 +1041,9 @@ #define I40E_AQC_SET_VSI_PROMISC_VLAN 0x10 __le16 seid; #define I40E_AQC_VSI_PROM_CMD_SEID_MASK 0x3FF - u8 reserved[10]; + __le16 vlan_tag; +#define I40E_AQC_SET_VSI_VLAN_VALID 0x8000 + u8 reserved[8]; }; I40E_CHECK_CMD_LENGTH(i40e_aqc_set_vsi_promiscuous_modes); @@ -1179,33 +1196,46 @@ } v4; struct { u8 data[16]; - } v6; - } ipaddr; + } v6; + } ipaddr; __le16 flags; #define I40E_AQC_ADD_CLOUD_FILTER_SHIFT 0 #define I40E_AQC_ADD_CLOUD_FILTER_MASK (0x3F << \ I40E_AQC_ADD_CLOUD_FILTER_SHIFT) +/* 0x0000 reserved */ #define I40E_AQC_ADD_CLOUD_FILTER_OIP 0x0001 -#define I40E_AQC_ADD_CLOUD_FILTER_OIP_GRE 0x0002 +/* 0x0002 reserved */ #define I40E_AQC_ADD_CLOUD_FILTER_IMAC_IVLAN 0x0003 -#define I40E_AQC_ADD_CLOUD_FILTER_IMAC_IVLAN_GRE 0x0004 +#define I40E_AQC_ADD_CLOUD_FILTER_IMAC_IVLAN_TEN_ID 0x0004 +/* 0x0005 reserved */ #define I40E_AQC_ADD_CLOUD_FILTER_IMAC_TEN_ID 0x0006 -#define I40E_AQC_ADD_CLOUD_FILTER_IMAC_IVLAN_VNL 0x0007 +/* 0x0007 reserved */ /* 0x0008 reserved */ #define I40E_AQC_ADD_CLOUD_FILTER_OMAC 0x0009 #define I40E_AQC_ADD_CLOUD_FILTER_IMAC 0x000A +#define I40E_AQC_ADD_CLOUD_FILTER_OMAC_TEN_ID_IMAC 0x000B +#define I40E_AQC_ADD_CLOUD_FILTER_IIP 0x000C + #define I40E_AQC_ADD_CLOUD_FLAGS_TO_QUEUE 0x0080 #define I40E_AQC_ADD_CLOUD_VNK_SHIFT 6 #define I40E_AQC_ADD_CLOUD_VNK_MASK 0x00C0 #define I40E_AQC_ADD_CLOUD_FLAGS_IPV4 0 #define I40E_AQC_ADD_CLOUD_FLAGS_IPV6 0x0100 - __le32 key_low; - __le32 key_high; + +#define I40E_AQC_ADD_CLOUD_TNL_TYPE_SHIFT 9 +#define I40E_AQC_ADD_CLOUD_TNL_TYPE_MASK 0x1E00 +#define I40E_AQC_ADD_CLOUD_TNL_TYPE_XVLAN 0 +#define I40E_AQC_ADD_CLOUD_TNL_TYPE_NVGRE_OMAC 1 +#define I40E_AQC_ADD_CLOUD_TNL_TYPE_NGE 2 +#define I40E_AQC_ADD_CLOUD_TNL_TYPE_IP 3 + + __le32 tenant_id; + u8 reserved[4]; __le16 queue_number; #define I40E_AQC_ADD_CLOUD_QUEUE_SHIFT 0 #define I40E_AQC_ADD_CLOUD_QUEUE_MASK (0x3F << \ I40E_AQC_ADD_CLOUD_QUEUE_SHIFT) - u8 reserved[14]; + u8 reserved2[14]; /* response section */ u8 allocation_result; #define I40E_AQC_ADD_CLOUD_FILTER_SUCCESS 0x0 @@ -1548,7 +1578,7 @@ struct i40e_aq_get_phy_abilities_resp { __le32 phy_type; /* bitmap using the above enum for offsets */ - u8 link_speed; /* bitmap using the above enum */ + u8 link_speed; /* bitmap using the above enum bit patterns */ u8 abilities; #define I40E_AQ_PHY_FLAG_PAUSE_TX 0x01 #define I40E_AQ_PHY_FLAG_PAUSE_RX 0x02 @@ -1582,6 +1612,10 @@ __le32 phy_type; u8 link_speed; u8 abilities; +/* bits 0-2 use the values from get_phy_abilities_resp */ +#define I40E_AQ_PHY_ENABLE_LINK 0x08 +#define I40E_AQ_PHY_ENABLE_AN 0x10 +#define I40E_AQ_PHY_ENABLE_ATOMIC_LINK 0x20 __le16 eee_capability; __le32 eeer; u8 low_power_ctrl; @@ -1914,22 +1948,33 @@ /* Add Udp Tunnel command and completion (direct 0x0B00) */ struct i40e_aqc_add_udp_tunnel { __le16 udp_port; - u8 header_len; /* in DWords, 1 to 15 */ - u8 protocol_index; -#define I40E_AQC_TUNNEL_TYPE_MAC 0x0 -#define I40E_AQC_TUNNEL_TYPE_UDP 0x1 - u8 reserved[12]; + u8 reserved0[3]; + u8 protocol_type; +#define I40E_AQC_TUNNEL_TYPE_VXLAN 0x00 +#define I40E_AQC_TUNNEL_TYPE_NGE 0x01 +#define I40E_AQC_TUNNEL_TYPE_TEREDO 0x10 + u8 reserved1[10]; }; I40E_CHECK_CMD_LENGTH(i40e_aqc_add_udp_tunnel); +struct i40e_aqc_add_udp_tunnel_completion { + __le16 udp_port; + u8 filter_entry_index; + u8 multiple_pfs; +#define I40E_AQC_SINGLE_PF 0x0 +#define I40E_AQC_MULTIPLE_PFS 0x1 + u8 total_filters; + u8 reserved[11]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_add_udp_tunnel_completion); + /* remove UDP Tunnel command (0x0B01) */ struct i40e_aqc_remove_udp_tunnel { u8 reserved[2]; u8 index; /* 0 to 15 */ - u8 pf_filters; - u8 total_filters; - u8 reserved2[11]; + u8 reserved2[13]; }; I40E_CHECK_CMD_LENGTH(i40e_aqc_remove_udp_tunnel); @@ -1937,28 +1982,32 @@ struct i40e_aqc_del_udp_tunnel_completion { __le16 udp_port; u8 index; /* 0 to 15 */ - u8 multiple_entries; - u8 tunnels_used; - u8 reserved; - u8 tunnels_free; - u8 reserved1[9]; + u8 multiple_pfs; + u8 total_filters_used; + u8 reserved1[11]; }; I40E_CHECK_CMD_LENGTH(i40e_aqc_del_udp_tunnel_completion); /* tunnel key structure 0x0B10 */ + struct i40e_aqc_tunnel_key_structure { - __le16 key1_off; - __le16 key1_len; - __le16 key2_off; - __le16 key2_len; - __le16 flags; + u8 key1_off; + u8 key2_off; + u8 key1_len; /* 0 to 15 */ + u8 key2_len; /* 0 to 15 */ + u8 flags; #define I40E_AQC_TUNNEL_KEY_STRUCT_OVERRIDE 0x01 /* response flags */ #define I40E_AQC_TUNNEL_KEY_STRUCT_SUCCESS 0x01 #define I40E_AQC_TUNNEL_KEY_STRUCT_MODIFIED 0x02 #define I40E_AQC_TUNNEL_KEY_STRUCT_OVERRIDDEN 0x03 - u8 resreved[6]; + u8 network_key_index; +#define I40E_AQC_NETWORK_KEY_INDEX_VXLAN 0x0 +#define I40E_AQC_NETWORK_KEY_INDEX_NGE 0x1 +#define I40E_AQC_NETWORK_KEY_INDEX_FLEX_MAC_IN_UDP 0x2 +#define I40E_AQC_NETWORK_KEY_INDEX_GRE 0x3 + u8 reserved[10]; }; I40E_CHECK_CMD_LENGTH(i40e_aqc_tunnel_key_structure); @@ -2052,6 +2101,7 @@ #define I40E_AQ_CLUSTER_ID_DCB 8 #define I40E_AQ_CLUSTER_ID_EMP_MEM 9 #define I40E_AQ_CLUSTER_ID_PKT_BUF 10 +#define I40E_AQ_CLUSTER_ID_ALTRAM 11 struct i40e_aqc_debug_dump_internals { u8 cluster_id; --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40e/i40e_alloc.h +++ linux-3.13.0/drivers/net/ethernet/intel/i40e/i40e_alloc.h @@ -1,7 +1,7 @@ /******************************************************************************* * * Intel Ethernet Controller XL710 Family Linux Driver - * Copyright(c) 2013 Intel Corporation. + * Copyright(c) 2013 - 2014 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, @@ -12,9 +12,8 @@ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * - * You should have 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. + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . * * The full GNU General Public License is included in this distribution in * the file called "COPYING". --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40e/i40e_common.c +++ linux-3.13.0/drivers/net/ethernet/intel/i40e/i40e_common.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Intel Ethernet Controller XL710 Family Linux Driver - * Copyright(c) 2013 Intel Corporation. + * Copyright(c) 2013 - 2014 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, @@ -12,9 +12,8 @@ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * - * You should have 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. + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . * * The full GNU General Public License is included in this distribution in * the file called "COPYING". @@ -43,20 +42,20 @@ if (hw->vendor_id == PCI_VENDOR_ID_INTEL) { switch (hw->device_id) { - case I40E_SFP_XL710_DEVICE_ID: - case I40E_SFP_X710_DEVICE_ID: - case I40E_QEMU_DEVICE_ID: - case I40E_KX_A_DEVICE_ID: - case I40E_KX_B_DEVICE_ID: - case I40E_KX_C_DEVICE_ID: - case I40E_KX_D_DEVICE_ID: - case I40E_QSFP_A_DEVICE_ID: - case I40E_QSFP_B_DEVICE_ID: - case I40E_QSFP_C_DEVICE_ID: + case I40E_DEV_ID_SFP_XL710: + case I40E_DEV_ID_SFP_X710: + case I40E_DEV_ID_QEMU: + case I40E_DEV_ID_KX_A: + case I40E_DEV_ID_KX_B: + case I40E_DEV_ID_KX_C: + case I40E_DEV_ID_KX_D: + case I40E_DEV_ID_QSFP_A: + case I40E_DEV_ID_QSFP_B: + case I40E_DEV_ID_QSFP_C: hw->mac.type = I40E_MAC_XL710; break; - case I40E_VF_DEVICE_ID: - case I40E_VF_HV_DEVICE_ID: + case I40E_DEV_ID_VF: + case I40E_DEV_ID_VF_HV: hw->mac.type = I40E_MAC_VF; break; default: @@ -75,7 +74,8 @@ /** * i40e_debug_aq * @hw: debug mask related to admin queue - * @cap: pointer to adminq command descriptor + * @mask: debug mask + * @desc: pointer to admin queue descriptor * @buffer: pointer to command buffer * * Dumps debug log about adminq command with descriptor contents. @@ -126,6 +126,409 @@ } /** + * i40e_check_asq_alive + * @hw: pointer to the hw struct + * + * Returns true if Queue is enabled else false. + **/ +bool i40e_check_asq_alive(struct i40e_hw *hw) +{ + return !!(rd32(hw, hw->aq.asq.len) & I40E_PF_ATQLEN_ATQENABLE_MASK); +} + +/** + * i40e_aq_queue_shutdown + * @hw: pointer to the hw struct + * @unloading: is the driver unloading itself + * + * Tell the Firmware that we're shutting down the AdminQ and whether + * or not the driver is unloading as well. + **/ +i40e_status i40e_aq_queue_shutdown(struct i40e_hw *hw, + bool unloading) +{ + struct i40e_aq_desc desc; + struct i40e_aqc_queue_shutdown *cmd = + (struct i40e_aqc_queue_shutdown *)&desc.params.raw; + i40e_status status; + + i40e_fill_default_direct_cmd_desc(&desc, + i40e_aqc_opc_queue_shutdown); + + if (unloading) + cmd->driver_unloading = cpu_to_le32(I40E_AQ_DRIVER_UNLOADING); + status = i40e_asq_send_command(hw, &desc, NULL, 0, NULL); + + return status; +} + +/* The i40e_ptype_lookup table is used to convert from the 8-bit ptype in the + * hardware to a bit-field that can be used by SW to more easily determine the + * packet type. + * + * Macros are used to shorten the table lines and make this table human + * readable. + * + * We store the PTYPE in the top byte of the bit field - this is just so that + * we can check that the table doesn't have a row missing, as the index into + * the table should be the PTYPE. + * + * Typical work flow: + * + * IF NOT i40e_ptype_lookup[ptype].known + * THEN + * Packet is unknown + * ELSE IF i40e_ptype_lookup[ptype].outer_ip == I40E_RX_PTYPE_OUTER_IP + * Use the rest of the fields to look at the tunnels, inner protocols, etc + * ELSE + * Use the enum i40e_rx_l2_ptype to decode the packet type + * ENDIF + */ + +/* macro to make the table lines short */ +#define I40E_PTT(PTYPE, OUTER_IP, OUTER_IP_VER, OUTER_FRAG, T, TE, TEF, I, PL)\ + { PTYPE, \ + 1, \ + I40E_RX_PTYPE_OUTER_##OUTER_IP, \ + I40E_RX_PTYPE_OUTER_##OUTER_IP_VER, \ + I40E_RX_PTYPE_##OUTER_FRAG, \ + I40E_RX_PTYPE_TUNNEL_##T, \ + I40E_RX_PTYPE_TUNNEL_END_##TE, \ + I40E_RX_PTYPE_##TEF, \ + I40E_RX_PTYPE_INNER_PROT_##I, \ + I40E_RX_PTYPE_PAYLOAD_LAYER_##PL } + +#define I40E_PTT_UNUSED_ENTRY(PTYPE) \ + { PTYPE, 0, 0, 0, 0, 0, 0, 0, 0, 0 } + +/* shorter macros makes the table fit but are terse */ +#define I40E_RX_PTYPE_NOF I40E_RX_PTYPE_NOT_FRAG +#define I40E_RX_PTYPE_FRG I40E_RX_PTYPE_FRAG +#define I40E_RX_PTYPE_INNER_PROT_TS I40E_RX_PTYPE_INNER_PROT_TIMESYNC + +/* Lookup table mapping the HW PTYPE to the bit field for decoding */ +struct i40e_rx_ptype_decoded i40e_ptype_lookup[] = { + /* L2 Packet types */ + I40E_PTT_UNUSED_ENTRY(0), + I40E_PTT(1, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY2), + I40E_PTT(2, L2, NONE, NOF, NONE, NONE, NOF, TS, PAY2), + I40E_PTT(3, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY2), + I40E_PTT_UNUSED_ENTRY(4), + I40E_PTT_UNUSED_ENTRY(5), + I40E_PTT(6, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY2), + I40E_PTT(7, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY2), + I40E_PTT_UNUSED_ENTRY(8), + I40E_PTT_UNUSED_ENTRY(9), + I40E_PTT(10, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY2), + I40E_PTT(11, L2, NONE, NOF, NONE, NONE, NOF, NONE, NONE), + I40E_PTT(12, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3), + I40E_PTT(13, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3), + I40E_PTT(14, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3), + I40E_PTT(15, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3), + I40E_PTT(16, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3), + I40E_PTT(17, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3), + I40E_PTT(18, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3), + I40E_PTT(19, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3), + I40E_PTT(20, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3), + I40E_PTT(21, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3), + + /* Non Tunneled IPv4 */ + I40E_PTT(22, IP, IPV4, FRG, NONE, NONE, NOF, NONE, PAY3), + I40E_PTT(23, IP, IPV4, NOF, NONE, NONE, NOF, NONE, PAY3), + I40E_PTT(24, IP, IPV4, NOF, NONE, NONE, NOF, UDP, PAY4), + I40E_PTT_UNUSED_ENTRY(25), + I40E_PTT(26, IP, IPV4, NOF, NONE, NONE, NOF, TCP, PAY4), + I40E_PTT(27, IP, IPV4, NOF, NONE, NONE, NOF, SCTP, PAY4), + I40E_PTT(28, IP, IPV4, NOF, NONE, NONE, NOF, ICMP, PAY4), + + /* IPv4 --> IPv4 */ + I40E_PTT(29, IP, IPV4, NOF, IP_IP, IPV4, FRG, NONE, PAY3), + I40E_PTT(30, IP, IPV4, NOF, IP_IP, IPV4, NOF, NONE, PAY3), + I40E_PTT(31, IP, IPV4, NOF, IP_IP, IPV4, NOF, UDP, PAY4), + I40E_PTT_UNUSED_ENTRY(32), + I40E_PTT(33, IP, IPV4, NOF, IP_IP, IPV4, NOF, TCP, PAY4), + I40E_PTT(34, IP, IPV4, NOF, IP_IP, IPV4, NOF, SCTP, PAY4), + I40E_PTT(35, IP, IPV4, NOF, IP_IP, IPV4, NOF, ICMP, PAY4), + + /* IPv4 --> IPv6 */ + I40E_PTT(36, IP, IPV4, NOF, IP_IP, IPV6, FRG, NONE, PAY3), + I40E_PTT(37, IP, IPV4, NOF, IP_IP, IPV6, NOF, NONE, PAY3), + I40E_PTT(38, IP, IPV4, NOF, IP_IP, IPV6, NOF, UDP, PAY4), + I40E_PTT_UNUSED_ENTRY(39), + I40E_PTT(40, IP, IPV4, NOF, IP_IP, IPV6, NOF, TCP, PAY4), + I40E_PTT(41, IP, IPV4, NOF, IP_IP, IPV6, NOF, SCTP, PAY4), + I40E_PTT(42, IP, IPV4, NOF, IP_IP, IPV6, NOF, ICMP, PAY4), + + /* IPv4 --> GRE/NAT */ + I40E_PTT(43, IP, IPV4, NOF, IP_GRENAT, NONE, NOF, NONE, PAY3), + + /* IPv4 --> GRE/NAT --> IPv4 */ + I40E_PTT(44, IP, IPV4, NOF, IP_GRENAT, IPV4, FRG, NONE, PAY3), + I40E_PTT(45, IP, IPV4, NOF, IP_GRENAT, IPV4, NOF, NONE, PAY3), + I40E_PTT(46, IP, IPV4, NOF, IP_GRENAT, IPV4, NOF, UDP, PAY4), + I40E_PTT_UNUSED_ENTRY(47), + I40E_PTT(48, IP, IPV4, NOF, IP_GRENAT, IPV4, NOF, TCP, PAY4), + I40E_PTT(49, IP, IPV4, NOF, IP_GRENAT, IPV4, NOF, SCTP, PAY4), + I40E_PTT(50, IP, IPV4, NOF, IP_GRENAT, IPV4, NOF, ICMP, PAY4), + + /* IPv4 --> GRE/NAT --> IPv6 */ + I40E_PTT(51, IP, IPV4, NOF, IP_GRENAT, IPV6, FRG, NONE, PAY3), + I40E_PTT(52, IP, IPV4, NOF, IP_GRENAT, IPV6, NOF, NONE, PAY3), + I40E_PTT(53, IP, IPV4, NOF, IP_GRENAT, IPV6, NOF, UDP, PAY4), + I40E_PTT_UNUSED_ENTRY(54), + I40E_PTT(55, IP, IPV4, NOF, IP_GRENAT, IPV6, NOF, TCP, PAY4), + I40E_PTT(56, IP, IPV4, NOF, IP_GRENAT, IPV6, NOF, SCTP, PAY4), + I40E_PTT(57, IP, IPV4, NOF, IP_GRENAT, IPV6, NOF, ICMP, PAY4), + + /* IPv4 --> GRE/NAT --> MAC */ + I40E_PTT(58, IP, IPV4, NOF, IP_GRENAT_MAC, NONE, NOF, NONE, PAY3), + + /* IPv4 --> GRE/NAT --> MAC --> IPv4 */ + I40E_PTT(59, IP, IPV4, NOF, IP_GRENAT_MAC, IPV4, FRG, NONE, PAY3), + I40E_PTT(60, IP, IPV4, NOF, IP_GRENAT_MAC, IPV4, NOF, NONE, PAY3), + I40E_PTT(61, IP, IPV4, NOF, IP_GRENAT_MAC, IPV4, NOF, UDP, PAY4), + I40E_PTT_UNUSED_ENTRY(62), + I40E_PTT(63, IP, IPV4, NOF, IP_GRENAT_MAC, IPV4, NOF, TCP, PAY4), + I40E_PTT(64, IP, IPV4, NOF, IP_GRENAT_MAC, IPV4, NOF, SCTP, PAY4), + I40E_PTT(65, IP, IPV4, NOF, IP_GRENAT_MAC, IPV4, NOF, ICMP, PAY4), + + /* IPv4 --> GRE/NAT -> MAC --> IPv6 */ + I40E_PTT(66, IP, IPV4, NOF, IP_GRENAT_MAC, IPV6, FRG, NONE, PAY3), + I40E_PTT(67, IP, IPV4, NOF, IP_GRENAT_MAC, IPV6, NOF, NONE, PAY3), + I40E_PTT(68, IP, IPV4, NOF, IP_GRENAT_MAC, IPV6, NOF, UDP, PAY4), + I40E_PTT_UNUSED_ENTRY(69), + I40E_PTT(70, IP, IPV4, NOF, IP_GRENAT_MAC, IPV6, NOF, TCP, PAY4), + I40E_PTT(71, IP, IPV4, NOF, IP_GRENAT_MAC, IPV6, NOF, SCTP, PAY4), + I40E_PTT(72, IP, IPV4, NOF, IP_GRENAT_MAC, IPV6, NOF, ICMP, PAY4), + + /* IPv4 --> GRE/NAT --> MAC/VLAN */ + I40E_PTT(73, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, NONE, NOF, NONE, PAY3), + + /* IPv4 ---> GRE/NAT -> MAC/VLAN --> IPv4 */ + I40E_PTT(74, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV4, FRG, NONE, PAY3), + I40E_PTT(75, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, NONE, PAY3), + I40E_PTT(76, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, UDP, PAY4), + I40E_PTT_UNUSED_ENTRY(77), + I40E_PTT(78, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, TCP, PAY4), + I40E_PTT(79, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, SCTP, PAY4), + I40E_PTT(80, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, ICMP, PAY4), + + /* IPv4 -> GRE/NAT -> MAC/VLAN --> IPv6 */ + I40E_PTT(81, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV6, FRG, NONE, PAY3), + I40E_PTT(82, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, NONE, PAY3), + I40E_PTT(83, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, UDP, PAY4), + I40E_PTT_UNUSED_ENTRY(84), + I40E_PTT(85, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, TCP, PAY4), + I40E_PTT(86, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, SCTP, PAY4), + I40E_PTT(87, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, ICMP, PAY4), + + /* Non Tunneled IPv6 */ + I40E_PTT(88, IP, IPV6, FRG, NONE, NONE, NOF, NONE, PAY3), + I40E_PTT(89, IP, IPV6, NOF, NONE, NONE, NOF, NONE, PAY3), + I40E_PTT(90, IP, IPV6, NOF, NONE, NONE, NOF, UDP, PAY3), + I40E_PTT_UNUSED_ENTRY(91), + I40E_PTT(92, IP, IPV6, NOF, NONE, NONE, NOF, TCP, PAY4), + I40E_PTT(93, IP, IPV6, NOF, NONE, NONE, NOF, SCTP, PAY4), + I40E_PTT(94, IP, IPV6, NOF, NONE, NONE, NOF, ICMP, PAY4), + + /* IPv6 --> IPv4 */ + I40E_PTT(95, IP, IPV6, NOF, IP_IP, IPV4, FRG, NONE, PAY3), + I40E_PTT(96, IP, IPV6, NOF, IP_IP, IPV4, NOF, NONE, PAY3), + I40E_PTT(97, IP, IPV6, NOF, IP_IP, IPV4, NOF, UDP, PAY4), + I40E_PTT_UNUSED_ENTRY(98), + I40E_PTT(99, IP, IPV6, NOF, IP_IP, IPV4, NOF, TCP, PAY4), + I40E_PTT(100, IP, IPV6, NOF, IP_IP, IPV4, NOF, SCTP, PAY4), + I40E_PTT(101, IP, IPV6, NOF, IP_IP, IPV4, NOF, ICMP, PAY4), + + /* IPv6 --> IPv6 */ + I40E_PTT(102, IP, IPV6, NOF, IP_IP, IPV6, FRG, NONE, PAY3), + I40E_PTT(103, IP, IPV6, NOF, IP_IP, IPV6, NOF, NONE, PAY3), + I40E_PTT(104, IP, IPV6, NOF, IP_IP, IPV6, NOF, UDP, PAY4), + I40E_PTT_UNUSED_ENTRY(105), + I40E_PTT(106, IP, IPV6, NOF, IP_IP, IPV6, NOF, TCP, PAY4), + I40E_PTT(107, IP, IPV6, NOF, IP_IP, IPV6, NOF, SCTP, PAY4), + I40E_PTT(108, IP, IPV6, NOF, IP_IP, IPV6, NOF, ICMP, PAY4), + + /* IPv6 --> GRE/NAT */ + I40E_PTT(109, IP, IPV6, NOF, IP_GRENAT, NONE, NOF, NONE, PAY3), + + /* IPv6 --> GRE/NAT -> IPv4 */ + I40E_PTT(110, IP, IPV6, NOF, IP_GRENAT, IPV4, FRG, NONE, PAY3), + I40E_PTT(111, IP, IPV6, NOF, IP_GRENAT, IPV4, NOF, NONE, PAY3), + I40E_PTT(112, IP, IPV6, NOF, IP_GRENAT, IPV4, NOF, UDP, PAY4), + I40E_PTT_UNUSED_ENTRY(113), + I40E_PTT(114, IP, IPV6, NOF, IP_GRENAT, IPV4, NOF, TCP, PAY4), + I40E_PTT(115, IP, IPV6, NOF, IP_GRENAT, IPV4, NOF, SCTP, PAY4), + I40E_PTT(116, IP, IPV6, NOF, IP_GRENAT, IPV4, NOF, ICMP, PAY4), + + /* IPv6 --> GRE/NAT -> IPv6 */ + I40E_PTT(117, IP, IPV6, NOF, IP_GRENAT, IPV6, FRG, NONE, PAY3), + I40E_PTT(118, IP, IPV6, NOF, IP_GRENAT, IPV6, NOF, NONE, PAY3), + I40E_PTT(119, IP, IPV6, NOF, IP_GRENAT, IPV6, NOF, UDP, PAY4), + I40E_PTT_UNUSED_ENTRY(120), + I40E_PTT(121, IP, IPV6, NOF, IP_GRENAT, IPV6, NOF, TCP, PAY4), + I40E_PTT(122, IP, IPV6, NOF, IP_GRENAT, IPV6, NOF, SCTP, PAY4), + I40E_PTT(123, IP, IPV6, NOF, IP_GRENAT, IPV6, NOF, ICMP, PAY4), + + /* IPv6 --> GRE/NAT -> MAC */ + I40E_PTT(124, IP, IPV6, NOF, IP_GRENAT_MAC, NONE, NOF, NONE, PAY3), + + /* IPv6 --> GRE/NAT -> MAC -> IPv4 */ + I40E_PTT(125, IP, IPV6, NOF, IP_GRENAT_MAC, IPV4, FRG, NONE, PAY3), + I40E_PTT(126, IP, IPV6, NOF, IP_GRENAT_MAC, IPV4, NOF, NONE, PAY3), + I40E_PTT(127, IP, IPV6, NOF, IP_GRENAT_MAC, IPV4, NOF, UDP, PAY4), + I40E_PTT_UNUSED_ENTRY(128), + I40E_PTT(129, IP, IPV6, NOF, IP_GRENAT_MAC, IPV4, NOF, TCP, PAY4), + I40E_PTT(130, IP, IPV6, NOF, IP_GRENAT_MAC, IPV4, NOF, SCTP, PAY4), + I40E_PTT(131, IP, IPV6, NOF, IP_GRENAT_MAC, IPV4, NOF, ICMP, PAY4), + + /* IPv6 --> GRE/NAT -> MAC -> IPv6 */ + I40E_PTT(132, IP, IPV6, NOF, IP_GRENAT_MAC, IPV6, FRG, NONE, PAY3), + I40E_PTT(133, IP, IPV6, NOF, IP_GRENAT_MAC, IPV6, NOF, NONE, PAY3), + I40E_PTT(134, IP, IPV6, NOF, IP_GRENAT_MAC, IPV6, NOF, UDP, PAY4), + I40E_PTT_UNUSED_ENTRY(135), + I40E_PTT(136, IP, IPV6, NOF, IP_GRENAT_MAC, IPV6, NOF, TCP, PAY4), + I40E_PTT(137, IP, IPV6, NOF, IP_GRENAT_MAC, IPV6, NOF, SCTP, PAY4), + I40E_PTT(138, IP, IPV6, NOF, IP_GRENAT_MAC, IPV6, NOF, ICMP, PAY4), + + /* IPv6 --> GRE/NAT -> MAC/VLAN */ + I40E_PTT(139, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, NONE, NOF, NONE, PAY3), + + /* IPv6 --> GRE/NAT -> MAC/VLAN --> IPv4 */ + I40E_PTT(140, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV4, FRG, NONE, PAY3), + I40E_PTT(141, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, NONE, PAY3), + I40E_PTT(142, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, UDP, PAY4), + I40E_PTT_UNUSED_ENTRY(143), + I40E_PTT(144, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, TCP, PAY4), + I40E_PTT(145, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, SCTP, PAY4), + I40E_PTT(146, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, ICMP, PAY4), + + /* IPv6 --> GRE/NAT -> MAC/VLAN --> IPv6 */ + I40E_PTT(147, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV6, FRG, NONE, PAY3), + I40E_PTT(148, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, NONE, PAY3), + I40E_PTT(149, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, UDP, PAY4), + I40E_PTT_UNUSED_ENTRY(150), + I40E_PTT(151, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, TCP, PAY4), + I40E_PTT(152, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, SCTP, PAY4), + I40E_PTT(153, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, ICMP, PAY4), + + /* unused entries */ + I40E_PTT_UNUSED_ENTRY(154), + I40E_PTT_UNUSED_ENTRY(155), + I40E_PTT_UNUSED_ENTRY(156), + I40E_PTT_UNUSED_ENTRY(157), + I40E_PTT_UNUSED_ENTRY(158), + I40E_PTT_UNUSED_ENTRY(159), + + I40E_PTT_UNUSED_ENTRY(160), + I40E_PTT_UNUSED_ENTRY(161), + I40E_PTT_UNUSED_ENTRY(162), + I40E_PTT_UNUSED_ENTRY(163), + I40E_PTT_UNUSED_ENTRY(164), + I40E_PTT_UNUSED_ENTRY(165), + I40E_PTT_UNUSED_ENTRY(166), + I40E_PTT_UNUSED_ENTRY(167), + I40E_PTT_UNUSED_ENTRY(168), + I40E_PTT_UNUSED_ENTRY(169), + + I40E_PTT_UNUSED_ENTRY(170), + I40E_PTT_UNUSED_ENTRY(171), + I40E_PTT_UNUSED_ENTRY(172), + I40E_PTT_UNUSED_ENTRY(173), + I40E_PTT_UNUSED_ENTRY(174), + I40E_PTT_UNUSED_ENTRY(175), + I40E_PTT_UNUSED_ENTRY(176), + I40E_PTT_UNUSED_ENTRY(177), + I40E_PTT_UNUSED_ENTRY(178), + I40E_PTT_UNUSED_ENTRY(179), + + I40E_PTT_UNUSED_ENTRY(180), + I40E_PTT_UNUSED_ENTRY(181), + I40E_PTT_UNUSED_ENTRY(182), + I40E_PTT_UNUSED_ENTRY(183), + I40E_PTT_UNUSED_ENTRY(184), + I40E_PTT_UNUSED_ENTRY(185), + I40E_PTT_UNUSED_ENTRY(186), + I40E_PTT_UNUSED_ENTRY(187), + I40E_PTT_UNUSED_ENTRY(188), + I40E_PTT_UNUSED_ENTRY(189), + + I40E_PTT_UNUSED_ENTRY(190), + I40E_PTT_UNUSED_ENTRY(191), + I40E_PTT_UNUSED_ENTRY(192), + I40E_PTT_UNUSED_ENTRY(193), + I40E_PTT_UNUSED_ENTRY(194), + I40E_PTT_UNUSED_ENTRY(195), + I40E_PTT_UNUSED_ENTRY(196), + I40E_PTT_UNUSED_ENTRY(197), + I40E_PTT_UNUSED_ENTRY(198), + I40E_PTT_UNUSED_ENTRY(199), + + I40E_PTT_UNUSED_ENTRY(200), + I40E_PTT_UNUSED_ENTRY(201), + I40E_PTT_UNUSED_ENTRY(202), + I40E_PTT_UNUSED_ENTRY(203), + I40E_PTT_UNUSED_ENTRY(204), + I40E_PTT_UNUSED_ENTRY(205), + I40E_PTT_UNUSED_ENTRY(206), + I40E_PTT_UNUSED_ENTRY(207), + I40E_PTT_UNUSED_ENTRY(208), + I40E_PTT_UNUSED_ENTRY(209), + + I40E_PTT_UNUSED_ENTRY(210), + I40E_PTT_UNUSED_ENTRY(211), + I40E_PTT_UNUSED_ENTRY(212), + I40E_PTT_UNUSED_ENTRY(213), + I40E_PTT_UNUSED_ENTRY(214), + I40E_PTT_UNUSED_ENTRY(215), + I40E_PTT_UNUSED_ENTRY(216), + I40E_PTT_UNUSED_ENTRY(217), + I40E_PTT_UNUSED_ENTRY(218), + I40E_PTT_UNUSED_ENTRY(219), + + I40E_PTT_UNUSED_ENTRY(220), + I40E_PTT_UNUSED_ENTRY(221), + I40E_PTT_UNUSED_ENTRY(222), + I40E_PTT_UNUSED_ENTRY(223), + I40E_PTT_UNUSED_ENTRY(224), + I40E_PTT_UNUSED_ENTRY(225), + I40E_PTT_UNUSED_ENTRY(226), + I40E_PTT_UNUSED_ENTRY(227), + I40E_PTT_UNUSED_ENTRY(228), + I40E_PTT_UNUSED_ENTRY(229), + + I40E_PTT_UNUSED_ENTRY(230), + I40E_PTT_UNUSED_ENTRY(231), + I40E_PTT_UNUSED_ENTRY(232), + I40E_PTT_UNUSED_ENTRY(233), + I40E_PTT_UNUSED_ENTRY(234), + I40E_PTT_UNUSED_ENTRY(235), + I40E_PTT_UNUSED_ENTRY(236), + I40E_PTT_UNUSED_ENTRY(237), + I40E_PTT_UNUSED_ENTRY(238), + I40E_PTT_UNUSED_ENTRY(239), + + I40E_PTT_UNUSED_ENTRY(240), + I40E_PTT_UNUSED_ENTRY(241), + I40E_PTT_UNUSED_ENTRY(242), + I40E_PTT_UNUSED_ENTRY(243), + I40E_PTT_UNUSED_ENTRY(244), + I40E_PTT_UNUSED_ENTRY(245), + I40E_PTT_UNUSED_ENTRY(246), + I40E_PTT_UNUSED_ENTRY(247), + I40E_PTT_UNUSED_ENTRY(248), + I40E_PTT_UNUSED_ENTRY(249), + + I40E_PTT_UNUSED_ENTRY(250), + I40E_PTT_UNUSED_ENTRY(251), + I40E_PTT_UNUSED_ENTRY(252), + I40E_PTT_UNUSED_ENTRY(253), + I40E_PTT_UNUSED_ENTRY(254), + I40E_PTT_UNUSED_ENTRY(255) +}; + + +/** * i40e_init_shared_code - Initialize the shared code * @hw: pointer to hardware structure * @@ -142,14 +545,6 @@ i40e_status status = 0; u32 reg; - hw->phy.get_link_info = true; - - /* Determine port number */ - reg = rd32(hw, I40E_PFGEN_PORTNUM); - reg = ((reg & I40E_PFGEN_PORTNUM_PORT_NUM_MASK) >> - I40E_PFGEN_PORTNUM_PORT_NUM_SHIFT); - hw->port = (u8)reg; - i40e_set_mac_type(hw); switch (hw->mac.type) { @@ -160,6 +555,21 @@ break; } + hw->phy.get_link_info = true; + + /* Determine port number */ + reg = rd32(hw, I40E_PFGEN_PORTNUM); + reg = ((reg & I40E_PFGEN_PORTNUM_PORT_NUM_MASK) >> + I40E_PFGEN_PORTNUM_PORT_NUM_SHIFT); + hw->port = (u8)reg; + + /* Determine the PF number based on the PCI fn */ + reg = rd32(hw, I40E_GLPCI_CAPSUP); + if (reg & I40E_GLPCI_CAPSUP_ARI_EN_MASK) + hw->pf_id = (u8)((hw->bus.device << 3) | hw->bus.func); + else + hw->pf_id = (u8)hw->bus.func; + status = i40e_init_nvm(hw); return status; } @@ -210,8 +620,11 @@ i40e_fill_default_direct_cmd_desc(&desc, i40e_aqc_opc_mac_address_write); cmd_data->command_flags = cpu_to_le16(flags); - memcpy(&cmd_data->mac_sal, &mac_addr[0], 4); - memcpy(&cmd_data->mac_sah, &mac_addr[4], 2); + cmd_data->mac_sah = cpu_to_le16((u16)mac_addr[0] << 8 | mac_addr[1]); + cmd_data->mac_sal = cpu_to_le32(((u32)mac_addr[2] << 24) | + ((u32)mac_addr[3] << 16) | + ((u32)mac_addr[4] << 8) | + mac_addr[5]); status = i40e_asq_send_command(hw, &desc, NULL, 0, cmd_details); @@ -240,32 +653,53 @@ } /** - * i40e_validate_mac_addr - Validate MAC address - * @mac_addr: pointer to MAC address - * - * Tests a MAC address to ensure it is a valid Individual Address + * i40e_get_media_type - Gets media type + * @hw: pointer to the hardware structure **/ -i40e_status i40e_validate_mac_addr(u8 *mac_addr) +static enum i40e_media_type i40e_get_media_type(struct i40e_hw *hw) { - i40e_status status = 0; + enum i40e_media_type media; - /* Make sure it is not a multicast address */ - if (I40E_IS_MULTICAST(mac_addr)) { - hw_dbg(hw, "MAC address is multicast\n"); - status = I40E_ERR_INVALID_MAC_ADDR; - /* Not a broadcast address */ - } else if (I40E_IS_BROADCAST(mac_addr)) { - hw_dbg(hw, "MAC address is broadcast\n"); - status = I40E_ERR_INVALID_MAC_ADDR; - /* Reject the zero address */ - } else if (mac_addr[0] == 0 && mac_addr[1] == 0 && mac_addr[2] == 0 && - mac_addr[3] == 0 && mac_addr[4] == 0 && mac_addr[5] == 0) { - hw_dbg(hw, "MAC address is all zeros\n"); - status = I40E_ERR_INVALID_MAC_ADDR; + switch (hw->phy.link_info.phy_type) { + case I40E_PHY_TYPE_10GBASE_SR: + case I40E_PHY_TYPE_10GBASE_LR: + case I40E_PHY_TYPE_40GBASE_SR4: + case I40E_PHY_TYPE_40GBASE_LR4: + media = I40E_MEDIA_TYPE_FIBER; + break; + case I40E_PHY_TYPE_100BASE_TX: + case I40E_PHY_TYPE_1000BASE_T: + case I40E_PHY_TYPE_10GBASE_T: + media = I40E_MEDIA_TYPE_BASET; + break; + case I40E_PHY_TYPE_10GBASE_CR1_CU: + case I40E_PHY_TYPE_40GBASE_CR4_CU: + case I40E_PHY_TYPE_10GBASE_CR1: + case I40E_PHY_TYPE_40GBASE_CR4: + case I40E_PHY_TYPE_10GBASE_SFPP_CU: + media = I40E_MEDIA_TYPE_DA; + break; + case I40E_PHY_TYPE_1000BASE_KX: + case I40E_PHY_TYPE_10GBASE_KX4: + case I40E_PHY_TYPE_10GBASE_KR: + case I40E_PHY_TYPE_40GBASE_KR4: + media = I40E_MEDIA_TYPE_BACKPLANE; + break; + case I40E_PHY_TYPE_SGMII: + case I40E_PHY_TYPE_XAUI: + case I40E_PHY_TYPE_XFI: + case I40E_PHY_TYPE_XLAUI: + case I40E_PHY_TYPE_XLPPI: + default: + media = I40E_MEDIA_TYPE_UNKNOWN; + break; } - return status; + + return media; } +#define I40E_PF_RESET_WAIT_COUNT_A0 200 +#define I40E_PF_RESET_WAIT_COUNT 10 /** * i40e_pf_reset - Reset the PF * @hw: pointer to the hardware structure @@ -275,7 +709,8 @@ **/ i40e_status i40e_pf_reset(struct i40e_hw *hw) { - u32 wait_cnt = 0; + u32 cnt = 0; + u32 cnt1 = 0; u32 reg = 0; u32 grst_del; @@ -285,7 +720,7 @@ */ grst_del = rd32(hw, I40E_GLGEN_RSTCTL) & I40E_GLGEN_RSTCTL_GRSTDEL_MASK >> I40E_GLGEN_RSTCTL_GRSTDEL_SHIFT; - for (wait_cnt = 0; wait_cnt < grst_del + 2; wait_cnt++) { + for (cnt = 0; cnt < grst_del + 2; cnt++) { reg = rd32(hw, I40E_GLGEN_RSTAT); if (!(reg & I40E_GLGEN_RSTAT_DEVSTATE_MASK)) break; @@ -296,17 +731,37 @@ return I40E_ERR_RESET_FAILED; } - /* Determine the PF number based on the PCI fn */ - hw->pf_id = (u8)hw->bus.func; + /* Now Wait for the FW to be ready */ + for (cnt1 = 0; cnt1 < I40E_PF_RESET_WAIT_COUNT; cnt1++) { + reg = rd32(hw, I40E_GLNVM_ULD); + reg &= (I40E_GLNVM_ULD_CONF_CORE_DONE_MASK | + I40E_GLNVM_ULD_CONF_GLOBAL_DONE_MASK); + if (reg == (I40E_GLNVM_ULD_CONF_CORE_DONE_MASK | + I40E_GLNVM_ULD_CONF_GLOBAL_DONE_MASK)) { + hw_dbg(hw, "Core and Global modules ready %d\n", cnt1); + break; + } + usleep_range(10000, 20000); + } + if (!(reg & (I40E_GLNVM_ULD_CONF_CORE_DONE_MASK | + I40E_GLNVM_ULD_CONF_GLOBAL_DONE_MASK))) { + hw_dbg(hw, "wait for FW Reset complete timedout\n"); + hw_dbg(hw, "I40E_GLNVM_ULD = 0x%x\n", reg); + return I40E_ERR_RESET_FAILED; + } /* If there was a Global Reset in progress when we got here, * we don't need to do the PF Reset */ - if (!wait_cnt) { + if (!cnt) { + if (hw->revision_id == 0) + cnt = I40E_PF_RESET_WAIT_COUNT_A0; + else + cnt = I40E_PF_RESET_WAIT_COUNT; reg = rd32(hw, I40E_PFGEN_CTRL); wr32(hw, I40E_PFGEN_CTRL, (reg | I40E_PFGEN_CTRL_PFSWR_MASK)); - for (wait_cnt = 0; wait_cnt < 10; wait_cnt++) { + for (; cnt; cnt--) { reg = rd32(hw, I40E_PFGEN_CTRL); if (!(reg & I40E_PFGEN_CTRL_PFSWR_MASK)) break; @@ -319,6 +774,7 @@ } i40e_clear_pxe_mode(hw); + return 0; } @@ -335,10 +791,48 @@ /* Clear single descriptor fetch/write-back mode */ reg = rd32(hw, I40E_GLLAN_RCTL_0); - wr32(hw, I40E_GLLAN_RCTL_0, (reg | I40E_GLLAN_RCTL_0_PXE_MODE_MASK)); + + if (hw->revision_id == 0) { + /* As a work around clear PXE_MODE instead of setting it */ + wr32(hw, I40E_GLLAN_RCTL_0, (reg & (~I40E_GLLAN_RCTL_0_PXE_MODE_MASK))); + } else { + wr32(hw, I40E_GLLAN_RCTL_0, (reg | I40E_GLLAN_RCTL_0_PXE_MODE_MASK)); + } } /** + * i40e_led_is_mine - helper to find matching led + * @hw: pointer to the hw struct + * @idx: index into GPIO registers + * + * returns: 0 if no match, otherwise the value of the GPIO_CTL register + */ +static u32 i40e_led_is_mine(struct i40e_hw *hw, int idx) +{ + u32 gpio_val = 0; + u32 port; + + if (!hw->func_caps.led[idx]) + return 0; + + gpio_val = rd32(hw, I40E_GLGEN_GPIO_CTL(idx)); + port = (gpio_val & I40E_GLGEN_GPIO_CTL_PRT_NUM_MASK) >> + I40E_GLGEN_GPIO_CTL_PRT_NUM_SHIFT; + + /* if PRT_NUM_NA is 1 then this LED is not port specific, OR + * if it is not our port then ignore + */ + if ((gpio_val & I40E_GLGEN_GPIO_CTL_PRT_NUM_NA_MASK) || + (port != hw->port)) + return 0; + + return gpio_val; +} + +#define I40E_LED0 22 +#define I40E_LINK_ACTIVITY 0xC + +/** * i40e_led_get - return current on/off mode * @hw: pointer to the hw struct * @@ -349,24 +843,20 @@ **/ u32 i40e_led_get(struct i40e_hw *hw) { - u32 gpio_val = 0; u32 mode = 0; - u32 port; int i; - for (i = 0; i < I40E_HW_CAP_MAX_GPIO; i++) { - if (!hw->func_caps.led[i]) - continue; - - gpio_val = rd32(hw, I40E_GLGEN_GPIO_CTL(i)); - port = (gpio_val & I40E_GLGEN_GPIO_CTL_PRT_NUM_MASK) - >> I40E_GLGEN_GPIO_CTL_PRT_NUM_SHIFT; + /* as per the documentation GPIO 22-29 are the LED + * GPIO pins named LED0..LED7 + */ + for (i = I40E_LED0; i <= I40E_GLGEN_GPIO_CTL_MAX_INDEX; i++) { + u32 gpio_val = i40e_led_is_mine(hw, i); - if (port != hw->port) + if (!gpio_val) continue; - mode = (gpio_val & I40E_GLGEN_GPIO_CTL_LED_MODE_MASK) - >> I40E_GLGEN_GPIO_CTL_INT_MODE_SHIFT; + mode = (gpio_val & I40E_GLGEN_GPIO_CTL_LED_MODE_MASK) >> + I40E_GLGEN_GPIO_CTL_LED_MODE_SHIFT; break; } @@ -376,60 +866,45 @@ /** * i40e_led_set - set new on/off mode * @hw: pointer to the hw struct - * @mode: 0=off, else on (see EAS for mode details) + * @mode: 0=off, 0xf=on (else see manual for mode details) + * @blink: true if the LED should blink when on, false if steady + * + * if this function is used to turn on the blink it should + * be used to disable the blink when restoring the original state. **/ -void i40e_led_set(struct i40e_hw *hw, u32 mode) +void i40e_led_set(struct i40e_hw *hw, u32 mode, bool blink) { - u32 gpio_val = 0; - u32 led_mode = 0; - u32 port; int i; - for (i = 0; i < I40E_HW_CAP_MAX_GPIO; i++) { - if (!hw->func_caps.led[i]) - continue; + if (mode & 0xfffffff0) + hw_dbg(hw, "invalid mode passed in %X\n", mode); - gpio_val = rd32(hw, I40E_GLGEN_GPIO_CTL(i)); - port = (gpio_val & I40E_GLGEN_GPIO_CTL_PRT_NUM_MASK) - >> I40E_GLGEN_GPIO_CTL_PRT_NUM_SHIFT; + /* as per the documentation GPIO 22-29 are the LED + * GPIO pins named LED0..LED7 + */ + for (i = I40E_LED0; i <= I40E_GLGEN_GPIO_CTL_MAX_INDEX; i++) { + u32 gpio_val = i40e_led_is_mine(hw, i); - if (port != hw->port) + if (!gpio_val) continue; - led_mode = (mode << I40E_GLGEN_GPIO_CTL_LED_MODE_SHIFT) & - I40E_GLGEN_GPIO_CTL_LED_MODE_MASK; gpio_val &= ~I40E_GLGEN_GPIO_CTL_LED_MODE_MASK; - gpio_val |= led_mode; + /* this & is a bit of paranoia, but serves as a range check */ + gpio_val |= ((mode << I40E_GLGEN_GPIO_CTL_LED_MODE_SHIFT) & + I40E_GLGEN_GPIO_CTL_LED_MODE_MASK); + + if (mode == I40E_LINK_ACTIVITY) + blink = false; + + gpio_val |= (blink ? 1 : 0) << + I40E_GLGEN_GPIO_CTL_LED_BLINK_SHIFT; + wr32(hw, I40E_GLGEN_GPIO_CTL(i), gpio_val); + break; } } /* Admin command wrappers */ -/** - * i40e_aq_queue_shutdown - * @hw: pointer to the hw struct - * @unloading: is the driver unloading itself - * - * Tell the Firmware that we're shutting down the AdminQ and whether - * or not the driver is unloading as well. - **/ -i40e_status i40e_aq_queue_shutdown(struct i40e_hw *hw, - bool unloading) -{ - struct i40e_aq_desc desc; - struct i40e_aqc_queue_shutdown *cmd = - (struct i40e_aqc_queue_shutdown *)&desc.params.raw; - i40e_status status; - - i40e_fill_default_direct_cmd_desc(&desc, - i40e_aqc_opc_queue_shutdown); - - if (unloading) - cmd->driver_unloading = cpu_to_le32(I40E_AQ_DRIVER_UNLOADING); - status = i40e_asq_send_command(hw, &desc, NULL, 0, NULL); - - return status; -} /** * i40e_aq_set_link_restart_an @@ -490,15 +965,16 @@ goto aq_get_link_info_exit; /* save off old link status information */ - memcpy(&hw->phy.link_info_old, hw_link_info, - sizeof(struct i40e_link_status)); + hw->phy.link_info_old = *hw_link_info; /* update link status */ hw_link_info->phy_type = (enum i40e_aq_phy_type)resp->phy_type; + hw->phy.media_type = i40e_get_media_type(hw); hw_link_info->link_speed = (enum i40e_aq_link_speed)resp->link_speed; hw_link_info->link_info = resp->link_info; hw_link_info->an_info = resp->an_info; hw_link_info->ext_info = resp->ext_info; + hw_link_info->loopback = resp->loopback; if (resp->command_flags & cpu_to_le16(I40E_AQ_LSE_ENABLE)) hw_link_info->lse_enable = true; @@ -519,7 +995,7 @@ /** * i40e_aq_add_vsi * @hw: pointer to the hw struct - * @vsi: pointer to a vsi context struct + * @vsi_ctx: pointer to a vsi context struct * @cmd_details: pointer to command details structure or NULL * * Add a VSI context to the hardware. @@ -571,7 +1047,8 @@ * @cmd_details: pointer to command details structure or NULL **/ i40e_status i40e_aq_set_vsi_unicast_promiscuous(struct i40e_hw *hw, - u16 seid, bool set, struct i40e_asq_cmd_details *cmd_details) + u16 seid, bool set, + struct i40e_asq_cmd_details *cmd_details) { struct i40e_aq_desc desc; struct i40e_aqc_set_vsi_promiscuous_modes *cmd = @@ -665,7 +1142,7 @@ /** * i40e_get_vsi_params - get VSI configuration info * @hw: pointer to the hw struct - * @vsi: pointer to a vsi context struct + * @vsi_ctx: pointer to a vsi context struct * @cmd_details: pointer to command details structure or NULL **/ i40e_status i40e_aq_get_vsi_params(struct i40e_hw *hw, @@ -673,8 +1150,8 @@ struct i40e_asq_cmd_details *cmd_details) { struct i40e_aq_desc desc; - struct i40e_aqc_switch_seid *cmd = - (struct i40e_aqc_switch_seid *)&desc.params.raw; + struct i40e_aqc_add_get_update_vsi *cmd = + (struct i40e_aqc_add_get_update_vsi *)&desc.params.raw; struct i40e_aqc_add_get_update_vsi_completion *resp = (struct i40e_aqc_add_get_update_vsi_completion *) &desc.params.raw; @@ -683,7 +1160,7 @@ i40e_fill_default_direct_cmd_desc(&desc, i40e_aqc_opc_get_vsi_parameters); - cmd->seid = cpu_to_le16(vsi_ctx->seid); + cmd->uplink_seid = cpu_to_le16(vsi_ctx->seid); desc.flags |= cpu_to_le16((u16)I40E_AQ_FLAG_BUF); if (sizeof(vsi_ctx->info) > I40E_AQ_LARGE_BUF) @@ -707,7 +1184,7 @@ /** * i40e_aq_update_vsi_params * @hw: pointer to the hw struct - * @vsi: pointer to a vsi context struct + * @vsi_ctx: pointer to a vsi context struct * @cmd_details: pointer to command details structure or NULL * * Update a VSI context. @@ -717,13 +1194,13 @@ struct i40e_asq_cmd_details *cmd_details) { struct i40e_aq_desc desc; - struct i40e_aqc_switch_seid *cmd = - (struct i40e_aqc_switch_seid *)&desc.params.raw; + struct i40e_aqc_add_get_update_vsi *cmd = + (struct i40e_aqc_add_get_update_vsi *)&desc.params.raw; i40e_status status; i40e_fill_default_direct_cmd_desc(&desc, i40e_aqc_opc_update_vsi_parameters); - cmd->seid = cpu_to_le16(vsi_ctx->seid); + cmd->uplink_seid = cpu_to_le16(vsi_ctx->seid); desc.flags |= cpu_to_le16((u16)(I40E_AQ_FLAG_BUF | I40E_AQ_FLAG_RD)); if (sizeof(vsi_ctx->info) > I40E_AQ_LARGE_BUF) @@ -810,7 +1287,6 @@ /** * i40e_aq_send_driver_version * @hw: pointer to the hw struct - * @event: driver event: driver ok, start or stop * @dv: driver's major, minor version * @cmd_details: pointer to command details structure or NULL * @@ -873,6 +1349,7 @@ * @downlink_seid: the VSI SEID * @enabled_tc: bitmap of TCs to be enabled * @default_port: true for default port VSI, false for control port + * @enable_l2_filtering: true to add L2 filter table rules to regular forwarding rules for cloud support * @veb_seid: pointer to where to put the resulting VEB SEID * @cmd_details: pointer to command details structure or NULL * @@ -881,7 +1358,8 @@ **/ i40e_status i40e_aq_add_veb(struct i40e_hw *hw, u16 uplink_seid, u16 downlink_seid, u8 enabled_tc, - bool default_port, u16 *veb_seid, + bool default_port, bool enable_l2_filtering, + u16 *veb_seid, struct i40e_asq_cmd_details *cmd_details) { struct i40e_aq_desc desc; @@ -907,6 +1385,10 @@ veb_flags |= I40E_AQC_ADD_VEB_PORT_TYPE_DEFAULT; else veb_flags |= I40E_AQC_ADD_VEB_PORT_TYPE_DATA; + + if (enable_l2_filtering) + veb_flags |= I40E_AQC_ADD_VEB_ENABLE_L2_FILTER; + cmd->veb_flags = cpu_to_le16(veb_flags); status = i40e_asq_send_command(hw, &desc, NULL, 0, cmd_details); @@ -922,10 +1404,10 @@ * @hw: pointer to the hw struct * @veb_seid: the SEID of the VEB to query * @switch_id: the uplink switch id - * @floating_veb: set to true if the VEB is floating + * @floating: set to true if the VEB is floating * @statistic_index: index of the stats counter block for this VEB * @vebs_used: number of VEB's used by function - * @vebs_unallocated: total VEB's not reserved by any function + * @vebs_free: total VEB's not reserved by any function * @cmd_details: pointer to command details structure or NULL * * This retrieves the parameters for a particular VEB, specified by @@ -1059,89 +1541,11 @@ } /** - * i40e_aq_add_vlan - Add VLAN ids to the HW filtering - * @hw: pointer to the hw struct - * @seid: VSI for the vlan filters - * @v_list: list of vlan filters to be added - * @count: length of the list - * @cmd_details: pointer to command details structure or NULL - **/ -i40e_status i40e_aq_add_vlan(struct i40e_hw *hw, u16 seid, - struct i40e_aqc_add_remove_vlan_element_data *v_list, - u8 count, struct i40e_asq_cmd_details *cmd_details) -{ - struct i40e_aq_desc desc; - struct i40e_aqc_macvlan *cmd = - (struct i40e_aqc_macvlan *)&desc.params.raw; - i40e_status status; - u16 buf_size; - - if (count == 0 || !v_list || !hw) - return I40E_ERR_PARAM; - - buf_size = count * sizeof(struct i40e_aqc_add_remove_vlan_element_data); - - /* prep the rest of the request */ - i40e_fill_default_direct_cmd_desc(&desc, i40e_aqc_opc_add_vlan); - cmd->num_addresses = cpu_to_le16(count); - cmd->seid[0] = cpu_to_le16(seid | I40E_AQC_MACVLAN_CMD_SEID_VALID); - cmd->seid[1] = 0; - cmd->seid[2] = 0; - - desc.flags |= cpu_to_le16((u16)(I40E_AQ_FLAG_BUF | I40E_AQ_FLAG_RD)); - if (buf_size > I40E_AQ_LARGE_BUF) - desc.flags |= cpu_to_le16((u16)I40E_AQ_FLAG_LB); - - status = i40e_asq_send_command(hw, &desc, v_list, buf_size, - cmd_details); - - return status; -} - -/** - * i40e_aq_remove_vlan - Remove VLANs from the HW filtering - * @hw: pointer to the hw struct - * @seid: VSI for the vlan filters - * @v_list: list of macvlans to be removed - * @count: length of the list - * @cmd_details: pointer to command details structure or NULL - **/ -i40e_status i40e_aq_remove_vlan(struct i40e_hw *hw, u16 seid, - struct i40e_aqc_add_remove_vlan_element_data *v_list, - u8 count, struct i40e_asq_cmd_details *cmd_details) -{ - struct i40e_aq_desc desc; - struct i40e_aqc_macvlan *cmd = - (struct i40e_aqc_macvlan *)&desc.params.raw; - i40e_status status; - u16 buf_size; - - if (count == 0 || !v_list || !hw) - return I40E_ERR_PARAM; - - buf_size = count * sizeof(struct i40e_aqc_add_remove_vlan_element_data); - - /* prep the rest of the request */ - i40e_fill_default_direct_cmd_desc(&desc, i40e_aqc_opc_remove_vlan); - cmd->num_addresses = cpu_to_le16(count); - cmd->seid[0] = cpu_to_le16(seid | I40E_AQC_MACVLAN_CMD_SEID_VALID); - cmd->seid[1] = 0; - cmd->seid[2] = 0; - - desc.flags |= cpu_to_le16((u16)(I40E_AQ_FLAG_BUF | I40E_AQ_FLAG_RD)); - if (buf_size > I40E_AQ_LARGE_BUF) - desc.flags |= cpu_to_le16((u16)I40E_AQ_FLAG_LB); - - status = i40e_asq_send_command(hw, &desc, v_list, buf_size, - cmd_details); - - return status; -} - -/** * i40e_aq_send_msg_to_vf * @hw: pointer to the hardware structure * @vfid: vf id to send msg + * @v_opcode: opcodes for VF-PF communication + * @v_retval: return error code * @msg: pointer to the msg buffer * @msglen: msg length * @cmd_details: pointer to command details @@ -1371,9 +1775,9 @@ cap = (struct i40e_aqc_list_capabilities_element_resp *) buff; if (list_type_opc == i40e_aqc_opc_list_dev_capabilities) - p = (struct i40e_hw_capabilities *)&hw->dev_caps; + p = &hw->dev_caps; else if (list_type_opc == i40e_aqc_opc_list_func_capabilities) - p = (struct i40e_hw_capabilities *)&hw->func_caps; + p = &hw->func_caps; else return; @@ -1519,8 +1923,8 @@ struct i40e_asq_cmd_details *cmd_details) { struct i40e_aqc_list_capabilites *cmd; - i40e_status status = 0; struct i40e_aq_desc desc; + i40e_status status = 0; cmd = (struct i40e_aqc_list_capabilites *)&desc.params.raw; @@ -1681,6 +2085,63 @@ } /** + * i40e_aq_add_udp_tunnel + * @hw: pointer to the hw struct + * @udp_port: the UDP port to add + * @header_len: length of the tunneling header length in DWords + * @protocol_index: protocol index type + * @filter_index: pointer to filter index + * @cmd_details: pointer to command details structure or NULL + **/ +i40e_status i40e_aq_add_udp_tunnel(struct i40e_hw *hw, + u16 udp_port, u8 header_len, + u8 protocol_index, u8 *filter_index, + struct i40e_asq_cmd_details *cmd_details) +{ + struct i40e_aq_desc desc; + struct i40e_aqc_add_udp_tunnel *cmd = + (struct i40e_aqc_add_udp_tunnel *)&desc.params.raw; + struct i40e_aqc_del_udp_tunnel_completion *resp = + (struct i40e_aqc_del_udp_tunnel_completion *)&desc.params.raw; + i40e_status status; + + i40e_fill_default_direct_cmd_desc(&desc, i40e_aqc_opc_add_udp_tunnel); + + cmd->udp_port = cpu_to_le16(udp_port); + cmd->protocol_type = protocol_index; + + status = i40e_asq_send_command(hw, &desc, NULL, 0, cmd_details); + + if (!status) + *filter_index = resp->index; + + return status; +} + +/** + * i40e_aq_del_udp_tunnel + * @hw: pointer to the hw struct + * @index: filter index + * @cmd_details: pointer to command details structure or NULL + **/ +i40e_status i40e_aq_del_udp_tunnel(struct i40e_hw *hw, u8 index, + struct i40e_asq_cmd_details *cmd_details) +{ + struct i40e_aq_desc desc; + struct i40e_aqc_remove_udp_tunnel *cmd = + (struct i40e_aqc_remove_udp_tunnel *)&desc.params.raw; + i40e_status status; + + i40e_fill_default_direct_cmd_desc(&desc, i40e_aqc_opc_del_udp_tunnel); + + cmd->index = index; + + status = i40e_asq_send_command(hw, &desc, NULL, 0, cmd_details); + + return status; +} + +/** * i40e_aq_delete_element - Delete switch element * @hw: pointer to the hw struct * @seid: the SEID to delete from the switch @@ -1709,6 +2170,28 @@ } /** + * i40e_aq_dcb_updated - DCB Updated Command + * @hw: pointer to the hw struct + * @cmd_details: pointer to command details structure or NULL + * + * EMP will return when the shared RPB settings have been + * recomputed and modified. The retval field in the descriptor + * will be set to 0 when RPB is modified. + **/ +i40e_status i40e_aq_dcb_updated(struct i40e_hw *hw, + struct i40e_asq_cmd_details *cmd_details) +{ + struct i40e_aq_desc desc; + i40e_status status; + + i40e_fill_default_direct_cmd_desc(&desc, i40e_aqc_opc_dcb_updated); + + status = i40e_asq_send_command(hw, &desc, NULL, 0, cmd_details); + + return status; +} + +/** * i40e_aq_tx_sched_cmd - generic Tx scheduler AQ command handler * @hw: pointer to the hw struct * @seid: seid for the physical port/switching component/vsi @@ -1787,6 +2270,40 @@ } /** + * i40e_aq_config_switch_comp_ets - Enable/Disable/Modify ETS on the port + * @hw: pointer to the hw struct + * @seid: seid of the switching component connected to Physical Port + * @ets_data: Buffer holding ETS parameters + * @cmd_details: pointer to command details structure or NULL + **/ +i40e_status i40e_aq_config_switch_comp_ets(struct i40e_hw *hw, + u16 seid, + struct i40e_aqc_configure_switching_comp_ets_data *ets_data, + enum i40e_admin_queue_opc opcode, + struct i40e_asq_cmd_details *cmd_details) +{ + return i40e_aq_tx_sched_cmd(hw, seid, (void *)ets_data, + sizeof(*ets_data), opcode, cmd_details); +} + +/** + * i40e_aq_config_switch_comp_bw_config - Config Switch comp BW Alloc per TC + * @hw: pointer to the hw struct + * @seid: seid of the switching component + * @bw_data: Buffer holding enabled TCs, relative/absolute TC BW limit/credits + * @cmd_details: pointer to command details structure or NULL + **/ +i40e_status i40e_aq_config_switch_comp_bw_config(struct i40e_hw *hw, + u16 seid, + struct i40e_aqc_configure_switching_comp_bw_config_data *bw_data, + struct i40e_asq_cmd_details *cmd_details) +{ + return i40e_aq_tx_sched_cmd(hw, seid, (void *)bw_data, sizeof(*bw_data), + i40e_aqc_opc_configure_switching_comp_bw_config, + cmd_details); +} + +/** * i40e_aq_query_vsi_bw_config - Query VSI BW configuration * @hw: pointer to the hw struct * @seid: seid of the VSI @@ -2039,3 +2556,110 @@ return 0; } + +/** + * i40e_aq_add_rem_control_packet_filter - Add or Remove Control Packet Filter + * @hw: pointer to the hw struct + * @mac_addr: MAC address to use in the filter + * @ethtype: Ethertype to use in the filter + * @flags: Flags that needs to be applied to the filter + * @vsi_seid: seid of the control VSI + * @queue: VSI queue number to send the packet to + * @is_add: Add control packet filter if True else remove + * @stats: Structure to hold information on control filter counts + * @cmd_details: pointer to command details structure or NULL + * + * This command will Add or Remove control packet filter for a control VSI. + * In return it will update the total number of perfect filter count in + * the stats member. + **/ +i40e_status i40e_aq_add_rem_control_packet_filter(struct i40e_hw *hw, + u8 *mac_addr, u16 ethtype, u16 flags, + u16 vsi_seid, u16 queue, bool is_add, + struct i40e_control_filter_stats *stats, + struct i40e_asq_cmd_details *cmd_details) +{ + struct i40e_aq_desc desc; + struct i40e_aqc_add_remove_control_packet_filter *cmd = + (struct i40e_aqc_add_remove_control_packet_filter *) + &desc.params.raw; + struct i40e_aqc_add_remove_control_packet_filter_completion *resp = + (struct i40e_aqc_add_remove_control_packet_filter_completion *) + &desc.params.raw; + i40e_status status; + + if (vsi_seid == 0) + return I40E_ERR_PARAM; + + if (is_add) { + i40e_fill_default_direct_cmd_desc(&desc, + i40e_aqc_opc_add_control_packet_filter); + cmd->queue = cpu_to_le16(queue); + } else { + i40e_fill_default_direct_cmd_desc(&desc, + i40e_aqc_opc_remove_control_packet_filter); + } + + if (mac_addr) + memcpy(cmd->mac, mac_addr, ETH_ALEN); + + cmd->etype = cpu_to_le16(ethtype); + cmd->flags = cpu_to_le16(flags); + cmd->seid = cpu_to_le16(vsi_seid); + + status = i40e_asq_send_command(hw, &desc, NULL, 0, cmd_details); + + if (!status && stats) { + stats->mac_etype_used = le16_to_cpu(resp->mac_etype_used); + stats->etype_used = le16_to_cpu(resp->etype_used); + stats->mac_etype_free = le16_to_cpu(resp->mac_etype_free); + stats->etype_free = le16_to_cpu(resp->etype_free); + } + + return status; +} + +/** + * i40e_set_pci_config_data - store PCI bus info + * @hw: pointer to hardware structure + * @link_status: the link status word from PCI config space + * + * Stores the PCI bus info (speed, width, type) within the i40e_hw structure + **/ +void i40e_set_pci_config_data(struct i40e_hw *hw, u16 link_status) +{ + hw->bus.type = i40e_bus_type_pci_express; + + switch (link_status & PCI_EXP_LNKSTA_NLW) { + case PCI_EXP_LNKSTA_NLW_X1: + hw->bus.width = i40e_bus_width_pcie_x1; + break; + case PCI_EXP_LNKSTA_NLW_X2: + hw->bus.width = i40e_bus_width_pcie_x2; + break; + case PCI_EXP_LNKSTA_NLW_X4: + hw->bus.width = i40e_bus_width_pcie_x4; + break; + case PCI_EXP_LNKSTA_NLW_X8: + hw->bus.width = i40e_bus_width_pcie_x8; + break; + default: + hw->bus.width = i40e_bus_width_unknown; + break; + } + + switch (link_status & PCI_EXP_LNKSTA_CLS) { + case PCI_EXP_LNKSTA_CLS_2_5GB: + hw->bus.speed = i40e_bus_speed_2500; + break; + case PCI_EXP_LNKSTA_CLS_5_0GB: + hw->bus.speed = i40e_bus_speed_5000; + break; + case PCI_EXP_LNKSTA_CLS_8_0GB: + hw->bus.speed = i40e_bus_speed_8000; + break; + default: + hw->bus.speed = i40e_bus_speed_unknown; + break; + } +} --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40e/i40e_dcb.c +++ linux-3.13.0/drivers/net/ethernet/intel/i40e/i40e_dcb.c @@ -0,0 +1,472 @@ +/******************************************************************************* + * + * Intel Ethernet Controller XL710 Family Linux Driver + * Copyright(c) 2013 - 2014 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. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + * + * The full GNU General Public License is included in this distribution in + * the file called "COPYING". + * + * Contact Information: + * e1000-devel Mailing List + * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 + * + ******************************************************************************/ + +#include "i40e_adminq.h" +#include "i40e_prototype.h" +#include "i40e_dcb.h" + +/** + * i40e_get_dcbx_status + * @hw: pointer to the hw struct + * @status: Embedded DCBX Engine Status + * + * Get the DCBX status from the Firmware + **/ +i40e_status i40e_get_dcbx_status(struct i40e_hw *hw, u16 *status) +{ + u32 reg; + + if (!status) + return I40E_ERR_PARAM; + + reg = rd32(hw, I40E_PRTDCB_GENS); + *status = (u16)((reg & I40E_PRTDCB_GENS_DCBX_STATUS_MASK) >> + I40E_PRTDCB_GENS_DCBX_STATUS_SHIFT); + + return 0; +} + +/** + * i40e_parse_ieee_etscfg_tlv + * @tlv: IEEE 802.1Qaz ETS CFG TLV + * @dcbcfg: Local store to update ETS CFG data + * + * Parses IEEE 802.1Qaz ETS CFG TLV + **/ +static void i40e_parse_ieee_etscfg_tlv(struct i40e_lldp_org_tlv *tlv, + struct i40e_dcbx_config *dcbcfg) +{ + struct i40e_ieee_ets_config *etscfg; + u8 *buf = tlv->tlvinfo; + u16 offset = 0; + u8 priority; + int i; + + /* First Octet post subtype + * -------------------------- + * |will-|CBS | Re- | Max | + * |ing | |served| TCs | + * -------------------------- + * |1bit | 1bit|3 bits|3bits| + */ + etscfg = &dcbcfg->etscfg; + etscfg->willing = (u8)((buf[offset] & I40E_IEEE_ETS_WILLING_MASK) >> + I40E_IEEE_ETS_WILLING_SHIFT); + etscfg->cbs = (u8)((buf[offset] & I40E_IEEE_ETS_CBS_MASK) >> + I40E_IEEE_ETS_CBS_SHIFT); + etscfg->maxtcs = (u8)((buf[offset] & I40E_IEEE_ETS_MAXTC_MASK) >> + I40E_IEEE_ETS_MAXTC_SHIFT); + + /* Move offset to Priority Assignment Table */ + offset++; + + /* Priority Assignment Table (4 octets) + * Octets:| 1 | 2 | 3 | 4 | + * ----------------------------------------- + * |pri0|pri1|pri2|pri3|pri4|pri5|pri6|pri7| + * ----------------------------------------- + * Bits:|7 4|3 0|7 4|3 0|7 4|3 0|7 4|3 0| + * ----------------------------------------- + */ + for (i = 0; i < 4; i++) { + priority = (u8)((buf[offset] & I40E_IEEE_ETS_PRIO_1_MASK) >> + I40E_IEEE_ETS_PRIO_1_SHIFT); + etscfg->prioritytable[i * 2] = priority; + priority = (u8)((buf[offset] & I40E_IEEE_ETS_PRIO_0_MASK) >> + I40E_IEEE_ETS_PRIO_0_SHIFT); + etscfg->prioritytable[i * 2 + 1] = priority; + offset++; + } + + /* TC Bandwidth Table (8 octets) + * Octets:| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | + * --------------------------------- + * |tc0|tc1|tc2|tc3|tc4|tc5|tc6|tc7| + * --------------------------------- + */ + for (i = 0; i < I40E_MAX_TRAFFIC_CLASS; i++) + etscfg->tcbwtable[i] = buf[offset++]; + + /* TSA Assignment Table (8 octets) + * Octets:| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | + * --------------------------------- + * |tc0|tc1|tc2|tc3|tc4|tc5|tc6|tc7| + * --------------------------------- + */ + for (i = 0; i < I40E_MAX_TRAFFIC_CLASS; i++) + etscfg->tsatable[i] = buf[offset++]; +} + +/** + * i40e_parse_ieee_etsrec_tlv + * @tlv: IEEE 802.1Qaz ETS REC TLV + * @dcbcfg: Local store to update ETS REC data + * + * Parses IEEE 802.1Qaz ETS REC TLV + **/ +static void i40e_parse_ieee_etsrec_tlv(struct i40e_lldp_org_tlv *tlv, + struct i40e_dcbx_config *dcbcfg) +{ + u8 *buf = tlv->tlvinfo; + u16 offset = 0; + u8 priority; + int i; + + /* Move offset to priority table */ + offset++; + + /* Priority Assignment Table (4 octets) + * Octets:| 1 | 2 | 3 | 4 | + * ----------------------------------------- + * |pri0|pri1|pri2|pri3|pri4|pri5|pri6|pri7| + * ----------------------------------------- + * Bits:|7 4|3 0|7 4|3 0|7 4|3 0|7 4|3 0| + * ----------------------------------------- + */ + for (i = 0; i < 4; i++) { + priority = (u8)((buf[offset] & I40E_IEEE_ETS_PRIO_1_MASK) >> + I40E_IEEE_ETS_PRIO_1_SHIFT); + dcbcfg->etsrec.prioritytable[i*2] = priority; + priority = (u8)((buf[offset] & I40E_IEEE_ETS_PRIO_0_MASK) >> + I40E_IEEE_ETS_PRIO_0_SHIFT); + dcbcfg->etsrec.prioritytable[i*2 + 1] = priority; + offset++; + } + + /* TC Bandwidth Table (8 octets) + * Octets:| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | + * --------------------------------- + * |tc0|tc1|tc2|tc3|tc4|tc5|tc6|tc7| + * --------------------------------- + */ + for (i = 0; i < I40E_MAX_TRAFFIC_CLASS; i++) + dcbcfg->etsrec.tcbwtable[i] = buf[offset++]; + + /* TSA Assignment Table (8 octets) + * Octets:| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | + * --------------------------------- + * |tc0|tc1|tc2|tc3|tc4|tc5|tc6|tc7| + * --------------------------------- + */ + for (i = 0; i < I40E_MAX_TRAFFIC_CLASS; i++) + dcbcfg->etsrec.tsatable[i] = buf[offset++]; +} + +/** + * i40e_parse_ieee_pfccfg_tlv + * @tlv: IEEE 802.1Qaz PFC CFG TLV + * @dcbcfg: Local store to update PFC CFG data + * + * Parses IEEE 802.1Qaz PFC CFG TLV + **/ +static void i40e_parse_ieee_pfccfg_tlv(struct i40e_lldp_org_tlv *tlv, + struct i40e_dcbx_config *dcbcfg) +{ + u8 *buf = tlv->tlvinfo; + + /* ---------------------------------------- + * |will-|MBC | Re- | PFC | PFC Enable | + * |ing | |served| cap | | + * ----------------------------------------- + * |1bit | 1bit|2 bits|4bits| 1 octet | + */ + dcbcfg->pfc.willing = (u8)((buf[0] & I40E_IEEE_PFC_WILLING_MASK) >> + I40E_IEEE_PFC_WILLING_SHIFT); + dcbcfg->pfc.mbc = (u8)((buf[0] & I40E_IEEE_PFC_MBC_MASK) >> + I40E_IEEE_PFC_MBC_SHIFT); + dcbcfg->pfc.pfccap = (u8)((buf[0] & I40E_IEEE_PFC_CAP_MASK) >> + I40E_IEEE_PFC_CAP_SHIFT); + dcbcfg->pfc.pfcenable = buf[1]; +} + +/** + * i40e_parse_ieee_app_tlv + * @tlv: IEEE 802.1Qaz APP TLV + * @dcbcfg: Local store to update APP PRIO data + * + * Parses IEEE 802.1Qaz APP PRIO TLV + **/ +static void i40e_parse_ieee_app_tlv(struct i40e_lldp_org_tlv *tlv, + struct i40e_dcbx_config *dcbcfg) +{ + u16 typelength; + u16 offset = 0; + u16 length; + int i = 0; + u8 *buf; + + typelength = ntohs(tlv->typelength); + length = (u16)((typelength & I40E_LLDP_TLV_LEN_MASK) >> + I40E_LLDP_TLV_LEN_SHIFT); + buf = tlv->tlvinfo; + + /* The App priority table starts 5 octets after TLV header */ + length -= (sizeof(tlv->ouisubtype) + 1); + + /* Move offset to App Priority Table */ + offset++; + + /* Application Priority Table (3 octets) + * Octets:| 1 | 2 | 3 | + * ----------------------------------------- + * |Priority|Rsrvd| Sel | Protocol ID | + * ----------------------------------------- + * Bits:|23 21|20 19|18 16|15 0| + * ----------------------------------------- + */ + while (offset < length) { + dcbcfg->app[i].priority = (u8)((buf[offset] & + I40E_IEEE_APP_PRIO_MASK) >> + I40E_IEEE_APP_PRIO_SHIFT); + dcbcfg->app[i].selector = (u8)((buf[offset] & + I40E_IEEE_APP_SEL_MASK) >> + I40E_IEEE_APP_SEL_SHIFT); + dcbcfg->app[i].protocolid = (buf[offset + 1] << 0x8) | + buf[offset + 2]; + /* Move to next app */ + offset += 3; + i++; + if (i >= I40E_DCBX_MAX_APPS) + break; + } + + dcbcfg->numapps = i; +} + +/** + * i40e_parse_ieee_etsrec_tlv + * @tlv: IEEE 802.1Qaz TLV + * @dcbcfg: Local store to update ETS REC data + * + * Get the TLV subtype and send it to parsing function + * based on the subtype value + **/ +static void i40e_parse_ieee_tlv(struct i40e_lldp_org_tlv *tlv, + struct i40e_dcbx_config *dcbcfg) +{ + u32 ouisubtype; + u8 subtype; + + ouisubtype = ntohl(tlv->ouisubtype); + subtype = (u8)((ouisubtype & I40E_LLDP_TLV_SUBTYPE_MASK) >> + I40E_LLDP_TLV_SUBTYPE_SHIFT); + switch (subtype) { + case I40E_IEEE_SUBTYPE_ETS_CFG: + i40e_parse_ieee_etscfg_tlv(tlv, dcbcfg); + break; + case I40E_IEEE_SUBTYPE_ETS_REC: + i40e_parse_ieee_etsrec_tlv(tlv, dcbcfg); + break; + case I40E_IEEE_SUBTYPE_PFC_CFG: + i40e_parse_ieee_pfccfg_tlv(tlv, dcbcfg); + break; + case I40E_IEEE_SUBTYPE_APP_PRI: + i40e_parse_ieee_app_tlv(tlv, dcbcfg); + break; + default: + break; + } +} + +/** + * i40e_parse_org_tlv + * @tlv: Organization specific TLV + * @dcbcfg: Local store to update ETS REC data + * + * Currently only IEEE 802.1Qaz TLV is supported, all others + * will be returned + **/ +static void i40e_parse_org_tlv(struct i40e_lldp_org_tlv *tlv, + struct i40e_dcbx_config *dcbcfg) +{ + u32 ouisubtype; + u32 oui; + + ouisubtype = ntohl(tlv->ouisubtype); + oui = (u32)((ouisubtype & I40E_LLDP_TLV_OUI_MASK) >> + I40E_LLDP_TLV_OUI_SHIFT); + switch (oui) { + case I40E_IEEE_8021QAZ_OUI: + i40e_parse_ieee_tlv(tlv, dcbcfg); + break; + default: + break; + } +} + +/** + * i40e_lldp_to_dcb_config + * @lldpmib: LLDPDU to be parsed + * @dcbcfg: store for LLDPDU data + * + * Parse DCB configuration from the LLDPDU + **/ +i40e_status i40e_lldp_to_dcb_config(u8 *lldpmib, + struct i40e_dcbx_config *dcbcfg) +{ + i40e_status ret = 0; + struct i40e_lldp_org_tlv *tlv; + u16 type; + u16 length; + u16 typelength; + u16 offset = 0; + + if (!lldpmib || !dcbcfg) + return I40E_ERR_PARAM; + + /* set to the start of LLDPDU */ + lldpmib += ETH_HLEN; + tlv = (struct i40e_lldp_org_tlv *)lldpmib; + while (1) { + typelength = ntohs(tlv->typelength); + type = (u16)((typelength & I40E_LLDP_TLV_TYPE_MASK) >> + I40E_LLDP_TLV_TYPE_SHIFT); + length = (u16)((typelength & I40E_LLDP_TLV_LEN_MASK) >> + I40E_LLDP_TLV_LEN_SHIFT); + offset += sizeof(typelength) + length; + + /* END TLV or beyond LLDPDU size */ + if ((type == I40E_TLV_TYPE_END) || (offset > I40E_LLDPDU_SIZE)) + break; + + switch (type) { + case I40E_TLV_TYPE_ORG: + i40e_parse_org_tlv(tlv, dcbcfg); + break; + default: + break; + } + + /* Move to next TLV */ + tlv = (struct i40e_lldp_org_tlv *)((char *)tlv + + sizeof(tlv->typelength) + + length); + } + + return ret; +} + +/** + * i40e_aq_get_dcb_config + * @hw: pointer to the hw struct + * @mib_type: mib type for the query + * @bridgetype: bridge type for the query (remote) + * @dcbcfg: store for LLDPDU data + * + * Query DCB configuration from the Firmware + **/ +i40e_status i40e_aq_get_dcb_config(struct i40e_hw *hw, u8 mib_type, + u8 bridgetype, + struct i40e_dcbx_config *dcbcfg) +{ + i40e_status ret = 0; + struct i40e_virt_mem mem; + u8 *lldpmib; + + /* Allocate the LLDPDU */ + ret = i40e_allocate_virt_mem(hw, &mem, I40E_LLDPDU_SIZE); + if (ret) + return ret; + + lldpmib = (u8 *)mem.va; + ret = i40e_aq_get_lldp_mib(hw, bridgetype, mib_type, + (void *)lldpmib, I40E_LLDPDU_SIZE, + NULL, NULL, NULL); + if (ret) + goto free_mem; + + /* Parse LLDP MIB to get dcb configuration */ + ret = i40e_lldp_to_dcb_config(lldpmib, dcbcfg); + +free_mem: + i40e_free_virt_mem(hw, &mem); + return ret; +} + +/** + * i40e_get_dcb_config + * @hw: pointer to the hw struct + * + * Get DCB configuration from the Firmware + **/ +i40e_status i40e_get_dcb_config(struct i40e_hw *hw) +{ + i40e_status ret = 0; + + /* Get Local DCB Config */ + ret = i40e_aq_get_dcb_config(hw, I40E_AQ_LLDP_MIB_LOCAL, 0, + &hw->local_dcbx_config); + if (ret) + goto out; + + /* Get Remote DCB Config */ + ret = i40e_aq_get_dcb_config(hw, I40E_AQ_LLDP_MIB_REMOTE, + I40E_AQ_LLDP_BRIDGE_TYPE_NEAREST_BRIDGE, + &hw->remote_dcbx_config); +out: + return ret; +} + +/** + * i40e_init_dcb + * @hw: pointer to the hw struct + * + * Update DCB configuration from the Firmware + **/ +i40e_status i40e_init_dcb(struct i40e_hw *hw) +{ + i40e_status ret = 0; + + if (!hw->func_caps.dcb) + return ret; + + /* Get DCBX status */ + ret = i40e_get_dcbx_status(hw, &hw->dcbx_status); + if (ret) + return ret; + + /* Check the DCBX Status */ + switch (hw->dcbx_status) { + case I40E_DCBX_STATUS_DONE: + case I40E_DCBX_STATUS_IN_PROGRESS: + /* Get current DCBX configuration */ + ret = i40e_get_dcb_config(hw); + break; + case I40E_DCBX_STATUS_DISABLED: + return ret; + case I40E_DCBX_STATUS_NOT_STARTED: + case I40E_DCBX_STATUS_MULTIPLE_PEERS: + default: + break; + } + + /* Configure the LLDP MIB change event */ + ret = i40e_aq_cfg_lldp_mib_change_event(hw, true, NULL); + if (ret) + return ret; + + return ret; +} --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40e/i40e_dcb.h +++ linux-3.13.0/drivers/net/ethernet/intel/i40e/i40e_dcb.h @@ -0,0 +1,107 @@ +/******************************************************************************* + * + * Intel Ethernet Controller XL710 Family Linux Driver + * Copyright(c) 2013 - 2014 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. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + * + * The full GNU General Public License is included in this distribution in + * the file called "COPYING". + * + * Contact Information: + * e1000-devel Mailing List + * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 + * + ******************************************************************************/ + +#ifndef _I40E_DCB_H_ +#define _I40E_DCB_H_ + +#include "i40e_type.h" + +#define I40E_DCBX_STATUS_NOT_STARTED 0 +#define I40E_DCBX_STATUS_IN_PROGRESS 1 +#define I40E_DCBX_STATUS_DONE 2 +#define I40E_DCBX_STATUS_MULTIPLE_PEERS 3 +#define I40E_DCBX_STATUS_DISABLED 7 + +#define I40E_TLV_TYPE_END 0 +#define I40E_TLV_TYPE_ORG 127 + +#define I40E_IEEE_8021QAZ_OUI 0x0080C2 +#define I40E_IEEE_SUBTYPE_ETS_CFG 9 +#define I40E_IEEE_SUBTYPE_ETS_REC 10 +#define I40E_IEEE_SUBTYPE_PFC_CFG 11 +#define I40E_IEEE_SUBTYPE_APP_PRI 12 + +/* Defines for LLDP TLV header */ +#define I40E_LLDP_TLV_LEN_SHIFT 0 +#define I40E_LLDP_TLV_LEN_MASK (0x01FF << I40E_LLDP_TLV_LEN_SHIFT) +#define I40E_LLDP_TLV_TYPE_SHIFT 9 +#define I40E_LLDP_TLV_TYPE_MASK (0x7F << I40E_LLDP_TLV_TYPE_SHIFT) +#define I40E_LLDP_TLV_SUBTYPE_SHIFT 0 +#define I40E_LLDP_TLV_SUBTYPE_MASK (0xFF << I40E_LLDP_TLV_SUBTYPE_SHIFT) +#define I40E_LLDP_TLV_OUI_SHIFT 8 +#define I40E_LLDP_TLV_OUI_MASK (0xFFFFFF << I40E_LLDP_TLV_OUI_SHIFT) + +/* Defines for IEEE ETS TLV */ +#define I40E_IEEE_ETS_MAXTC_SHIFT 0 +#define I40E_IEEE_ETS_MAXTC_MASK (0x7 << I40E_IEEE_ETS_MAXTC_SHIFT) +#define I40E_IEEE_ETS_CBS_SHIFT 6 +#define I40E_IEEE_ETS_CBS_MASK (0x1 << I40E_IEEE_ETS_CBS_SHIFT) +#define I40E_IEEE_ETS_WILLING_SHIFT 7 +#define I40E_IEEE_ETS_WILLING_MASK (0x1 << I40E_IEEE_ETS_WILLING_SHIFT) +#define I40E_IEEE_ETS_PRIO_0_SHIFT 0 +#define I40E_IEEE_ETS_PRIO_0_MASK (0x7 << I40E_IEEE_ETS_PRIO_0_SHIFT) +#define I40E_IEEE_ETS_PRIO_1_SHIFT 4 +#define I40E_IEEE_ETS_PRIO_1_MASK (0x7 << I40E_IEEE_ETS_PRIO_1_SHIFT) + +/* Defines for IEEE TSA types */ +#define I40E_IEEE_TSA_STRICT 0 +#define I40E_IEEE_TSA_ETS 2 + +/* Defines for IEEE PFC TLV */ +#define I40E_IEEE_PFC_CAP_SHIFT 0 +#define I40E_IEEE_PFC_CAP_MASK (0xF << I40E_IEEE_PFC_CAP_SHIFT) +#define I40E_IEEE_PFC_MBC_SHIFT 6 +#define I40E_IEEE_PFC_MBC_MASK (0x1 << I40E_IEEE_PFC_MBC_SHIFT) +#define I40E_IEEE_PFC_WILLING_SHIFT 7 +#define I40E_IEEE_PFC_WILLING_MASK (0x1 << I40E_IEEE_PFC_WILLING_SHIFT) + +/* Defines for IEEE APP TLV */ +#define I40E_IEEE_APP_SEL_SHIFT 0 +#define I40E_IEEE_APP_SEL_MASK (0x7 << I40E_IEEE_APP_SEL_SHIFT) +#define I40E_IEEE_APP_PRIO_SHIFT 5 +#define I40E_IEEE_APP_PRIO_MASK (0x7 << I40E_IEEE_APP_PRIO_SHIFT) + + +#pragma pack(1) + +/* IEEE 802.1AB LLDP Organization specific TLV */ +struct i40e_lldp_org_tlv { + __be16 typelength; + __be32 ouisubtype; + u8 tlvinfo[1]; +}; +#pragma pack() + +i40e_status i40e_get_dcbx_status(struct i40e_hw *hw, + u16 *status); +i40e_status i40e_lldp_to_dcb_config(u8 *lldpmib, + struct i40e_dcbx_config *dcbcfg); +i40e_status i40e_aq_get_dcb_config(struct i40e_hw *hw, u8 mib_type, + u8 bridgetype, + struct i40e_dcbx_config *dcbcfg); +i40e_status i40e_get_dcb_config(struct i40e_hw *hw); +i40e_status i40e_init_dcb(struct i40e_hw *hw); +#endif /* _I40E_DCB_H_ */ --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40e/i40e_dcb_nl.c +++ linux-3.13.0/drivers/net/ethernet/intel/i40e/i40e_dcb_nl.c @@ -0,0 +1,316 @@ +/******************************************************************************* + * + * Intel Ethernet Controller XL710 Family Linux Driver + * Copyright(c) 2013 - 2014 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. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + * + * The full GNU General Public License is included in this distribution in + * the file called "COPYING". + * + * Contact Information: + * e1000-devel Mailing List + * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 + * + ******************************************************************************/ + +#ifdef CONFIG_I40E_DCB +#include "i40e.h" +#include + +/** + * i40e_get_pfc_delay - retrieve PFC Link Delay + * @hw: pointer to hardware struct + * @delay: holds the PFC Link delay value + * + * Returns PFC Link Delay from the PRTDCB_GENC.PFCLDA + **/ +static void i40e_get_pfc_delay(struct i40e_hw *hw, u16 *delay) +{ + u32 val; + + val = rd32(hw, I40E_PRTDCB_GENC); + *delay = (u16)(val & I40E_PRTDCB_GENC_PFCLDA_MASK >> + I40E_PRTDCB_GENC_PFCLDA_SHIFT); +} + +/** + * i40e_dcbnl_ieee_getets - retrieve local IEEE ETS configuration + * @netdev: the corresponding netdev + * @ets: structure to hold the ETS information + * + * Returns local IEEE ETS configuration + **/ +static int i40e_dcbnl_ieee_getets(struct net_device *dev, + struct ieee_ets *ets) +{ + struct i40e_pf *pf = i40e_netdev_to_pf(dev); + struct i40e_dcbx_config *dcbxcfg; + struct i40e_hw *hw = &pf->hw; + + if (!(pf->dcbx_cap & DCB_CAP_DCBX_VER_IEEE)) + return -EINVAL; + + dcbxcfg = &hw->local_dcbx_config; + ets->willing = dcbxcfg->etscfg.willing; + ets->ets_cap = dcbxcfg->etscfg.maxtcs; + ets->cbs = dcbxcfg->etscfg.cbs; + memcpy(ets->tc_tx_bw, dcbxcfg->etscfg.tcbwtable, + sizeof(ets->tc_tx_bw)); + memcpy(ets->tc_rx_bw, dcbxcfg->etscfg.tcbwtable, + sizeof(ets->tc_rx_bw)); + memcpy(ets->tc_tsa, dcbxcfg->etscfg.tsatable, + sizeof(ets->tc_tsa)); + memcpy(ets->prio_tc, dcbxcfg->etscfg.prioritytable, + sizeof(ets->prio_tc)); + memcpy(ets->tc_reco_bw, dcbxcfg->etsrec.tcbwtable, + sizeof(ets->tc_reco_bw)); + memcpy(ets->tc_reco_tsa, dcbxcfg->etsrec.tsatable, + sizeof(ets->tc_reco_tsa)); + memcpy(ets->reco_prio_tc, dcbxcfg->etscfg.prioritytable, + sizeof(ets->reco_prio_tc)); + + return 0; +} + +/** + * i40e_dcbnl_ieee_getpfc - retrieve local IEEE PFC configuration + * @netdev: the corresponding netdev + * @ets: structure to hold the PFC information + * + * Returns local IEEE PFC configuration + **/ +static int i40e_dcbnl_ieee_getpfc(struct net_device *dev, + struct ieee_pfc *pfc) +{ + struct i40e_pf *pf = i40e_netdev_to_pf(dev); + struct i40e_dcbx_config *dcbxcfg; + struct i40e_hw *hw = &pf->hw; + int i; + + if (!(pf->dcbx_cap & DCB_CAP_DCBX_VER_IEEE)) + return -EINVAL; + + dcbxcfg = &hw->local_dcbx_config; + pfc->pfc_cap = dcbxcfg->pfc.pfccap; + pfc->pfc_en = dcbxcfg->pfc.pfcenable; + pfc->mbc = dcbxcfg->pfc.mbc; + i40e_get_pfc_delay(hw, &pfc->delay); + + /* Get Requests/Indicatiosn */ + for (i = 0; i < I40E_MAX_TRAFFIC_CLASS; i++) { + pfc->requests[i] = pf->stats.priority_xoff_tx[i]; + pfc->indications[i] = pf->stats.priority_xoff_rx[i]; + } + + return 0; +} + +/** + * i40e_dcbnl_getdcbx - retrieve current DCBx capability + * @netdev: the corresponding netdev + * + * Returns DCBx capability features + **/ +static u8 i40e_dcbnl_getdcbx(struct net_device *dev) +{ + struct i40e_pf *pf = i40e_netdev_to_pf(dev); + + return pf->dcbx_cap; +} + +/** + * i40e_dcbnl_get_perm_hw_addr - MAC address used by DCBx + * @netdev: the corresponding netdev + * + * Returns the SAN MAC address used for LLDP exchange + **/ +static void i40e_dcbnl_get_perm_hw_addr(struct net_device *dev, + u8 *perm_addr) +{ + struct i40e_pf *pf = i40e_netdev_to_pf(dev); + int i, j; + + memset(perm_addr, 0xff, MAX_ADDR_LEN); + + for (i = 0; i < dev->addr_len; i++) + perm_addr[i] = pf->hw.mac.perm_addr[i]; + + for (j = 0; j < dev->addr_len; j++, i++) + perm_addr[i] = pf->hw.mac.san_addr[j]; +} + +static const struct dcbnl_rtnl_ops dcbnl_ops = { + .ieee_getets = i40e_dcbnl_ieee_getets, + .ieee_getpfc = i40e_dcbnl_ieee_getpfc, + .getdcbx = i40e_dcbnl_getdcbx, + .getpermhwaddr = i40e_dcbnl_get_perm_hw_addr, +}; + +/** + * i40e_dcbnl_set_all - set all the apps and ieee data from DCBx config + * @vsi: the corresponding vsi + * + * Set up all the IEEE APPs in the DCBNL App Table and generate event for + * other settings + **/ +void i40e_dcbnl_set_all(struct i40e_vsi *vsi) +{ + struct net_device *dev = vsi->netdev; + struct i40e_pf *pf = i40e_netdev_to_pf(dev); + struct i40e_dcbx_config *dcbxcfg; + struct i40e_hw *hw = &pf->hw; + struct dcb_app sapp; + u8 prio, tc_map; + int i; + + /* DCB not enabled */ + if (!(pf->flags & I40E_FLAG_DCB_ENABLED)) + return; + + dcbxcfg = &hw->local_dcbx_config; + + /* Set up all the App TLVs if DCBx is negotiated */ + for (i = 0; i < dcbxcfg->numapps; i++) { + prio = dcbxcfg->app[i].priority; + tc_map = (1 << dcbxcfg->etscfg.prioritytable[prio]); + + /* Add APP only if the TC is enabled for this VSI */ + if (tc_map & vsi->tc_config.enabled_tc) { + sapp.selector = dcbxcfg->app[i].selector; + sapp.protocol = dcbxcfg->app[i].protocolid; + sapp.priority = prio; + dcb_ieee_setapp(dev, &sapp); + } + } + + /* Notify user-space of the changes */ + dcbnl_ieee_notify(dev, RTM_SETDCB, DCB_CMD_IEEE_SET, 0, 0); +} + +/** + * i40e_dcbnl_vsi_del_app - Delete APP for given VSI + * @vsi: the corresponding vsi + * @app: APP to delete + * + * Delete given APP from the DCBNL APP table for given + * VSI + **/ +static int i40e_dcbnl_vsi_del_app(struct i40e_vsi *vsi, + struct i40e_ieee_app_priority_table *app) +{ + struct net_device *dev = vsi->netdev; + struct dcb_app sapp; + + if (!dev) + return -EINVAL; + + sapp.selector = app->selector; + sapp.protocol = app->protocolid; + sapp.priority = app->priority; + return dcb_ieee_delapp(dev, &sapp); +} + +/** + * i40e_dcbnl_del_app - Delete APP on all VSIs + * @pf: the corresponding pf + * @app: APP to delete + * + * Delete given APP from all the VSIs for given PF + **/ +static void i40e_dcbnl_del_app(struct i40e_pf *pf, + struct i40e_ieee_app_priority_table *app) +{ + int v, err; + for (v = 0; v < pf->hw.func_caps.num_vsis; v++) { + if (pf->vsi[v] && pf->vsi[v]->netdev) { + err = i40e_dcbnl_vsi_del_app(pf->vsi[v], app); + if (err) + dev_info(&pf->pdev->dev, "%s: Failed deleting app for VSI seid=%d err=%d sel=%d proto=0x%x prio=%d\n", + __func__, pf->vsi[v]->seid, + err, app->selector, + app->protocolid, app->priority); + } + } +} + +/** + * i40e_dcbnl_find_app - Search APP in given DCB config + * @cfg: DCBX configuration data + * @app: APP to search for + * + * Find given APP in the DCB configuration + **/ +static bool i40e_dcbnl_find_app(struct i40e_dcbx_config *cfg, + struct i40e_ieee_app_priority_table *app) +{ + int i; + + for (i = 0; i < cfg->numapps; i++) { + if (app->selector == cfg->app[i].selector && + app->protocolid == cfg->app[i].protocolid && + app->priority == cfg->app[i].priority) + return true; + } + + return false; +} + +/** + * i40e_dcbnl_flush_apps - Delete all removed APPs + * @pf: the corresponding pf + * @new_cfg: new DCBX configuration data + * + * Find and delete all APPs that are not present in the passed + * DCB configuration + **/ +void i40e_dcbnl_flush_apps(struct i40e_pf *pf, + struct i40e_dcbx_config *new_cfg) +{ + struct i40e_ieee_app_priority_table app; + struct i40e_dcbx_config *dcbxcfg; + struct i40e_hw *hw = &pf->hw; + int i; + + dcbxcfg = &hw->local_dcbx_config; + for (i = 0; i < dcbxcfg->numapps; i++) { + app = dcbxcfg->app[i]; + /* The APP is not available anymore delete it */ + if (!i40e_dcbnl_find_app(new_cfg, &app)) + i40e_dcbnl_del_app(pf, &app); + } +} + +/** + * i40e_dcbnl_setup - DCBNL setup + * @vsi: the corresponding vsi + * + * Set up DCBNL ops and initial APP TLVs + **/ +void i40e_dcbnl_setup(struct i40e_vsi *vsi) +{ + struct net_device *dev = vsi->netdev; + struct i40e_pf *pf = i40e_netdev_to_pf(dev); + + /* DCB not enabled */ + if (!(pf->flags & I40E_FLAG_DCB_ENABLED)) + return; + + /* Do not setup DCB NL ops for MFP mode */ + if (!(pf->flags & I40E_FLAG_MFP_ENABLED)) + dev->dcbnl_ops = &dcbnl_ops; + + /* Set initial IEEE DCB settings */ + i40e_dcbnl_set_all(vsi); +} +#endif /* CONFIG_I40E_DCB */ --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40e/i40e_debugfs.c +++ linux-3.13.0/drivers/net/ethernet/intel/i40e/i40e_debugfs.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Intel Ethernet Controller XL710 Family Linux Driver - * Copyright(c) 2013 Intel Corporation. + * Copyright(c) 2013 - 2014 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, @@ -12,9 +12,8 @@ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * - * You should have 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. + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . * * The full GNU General Public License is included in this distribution in * the file called "COPYING". @@ -192,12 +191,12 @@ len = (sizeof(struct i40e_aq_desc) * pf->hw.aq.num_asq_entries); - memcpy(p, pf->hw.aq.asq.desc, len); + memcpy(p, pf->hw.aq.asq.desc_buf.va, len); p += len; len = (sizeof(struct i40e_aq_desc) * pf->hw.aq.num_arq_entries); - memcpy(p, pf->hw.aq.arq.desc, len); + memcpy(p, pf->hw.aq.arq.desc_buf.va, len); p += len; i40e_dbg_dump_data_len = buflen; @@ -362,7 +361,7 @@ } /** - * i40e_dbg_dump_vsi_seid - handles dump vsi seid write into pokem datum + * i40e_dbg_dump_vsi_seid - handles dump vsi seid write into command datum * @pf: the i40e_pf created in command write * @seid: the seid the user put in **/ @@ -516,10 +515,10 @@ rx_ring->stats.bytes, rx_ring->rx_stats.non_eop_descs); dev_info(&pf->pdev->dev, - " rx_rings[%i]: rx_stats: alloc_rx_page_failed = %lld, alloc_rx_buff_failed = %lld\n", + " rx_rings[%i]: rx_stats: alloc_page_failed = %lld, alloc_buff_failed = %lld\n", i, - rx_ring->rx_stats.alloc_rx_page_failed, - rx_ring->rx_stats.alloc_rx_buff_failed); + rx_ring->rx_stats.alloc_page_failed, + rx_ring->rx_stats.alloc_buff_failed); dev_info(&pf->pdev->dev, " rx_rings[%i]: size = %i, dma = 0x%08lx\n", i, rx_ring->size, @@ -533,6 +532,7 @@ struct i40e_ring *tx_ring = ACCESS_ONCE(vsi->tx_rings[i]); if (!tx_ring) continue; + dev_info(&pf->pdev->dev, " tx_rings[%i]: desc = %p\n", i, tx_ring->desc); @@ -707,8 +707,13 @@ { struct i40e_adminq_ring *ring; struct i40e_hw *hw = &pf->hw; + char hdr[32]; int i; + snprintf(hdr, sizeof(hdr), "%s %s: ", + dev_driver_string(&pf->pdev->dev), + dev_name(&pf->pdev->dev)); + /* first the send (command) ring, then the receive (event) ring */ dev_info(&pf->pdev->dev, "AdminQ Tx Ring\n"); ring = &(hw->aq.asq); @@ -718,14 +723,8 @@ " at[%02d] flags=0x%04x op=0x%04x dlen=0x%04x ret=0x%04x cookie_h=0x%08x cookie_l=0x%08x\n", i, d->flags, d->opcode, d->datalen, d->retval, d->cookie_high, d->cookie_low); - dev_info(&pf->pdev->dev, - " %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x\n", - d->params.raw[0], d->params.raw[1], d->params.raw[2], - d->params.raw[3], d->params.raw[4], d->params.raw[5], - d->params.raw[6], d->params.raw[7], d->params.raw[8], - d->params.raw[9], d->params.raw[10], d->params.raw[11], - d->params.raw[12], d->params.raw[13], - d->params.raw[14], d->params.raw[15]); + print_hex_dump(KERN_INFO, hdr, DUMP_PREFIX_NONE, + 16, 1, d->params.raw, 16, 0); } dev_info(&pf->pdev->dev, "AdminQ Rx Ring\n"); @@ -736,14 +735,8 @@ " ar[%02d] flags=0x%04x op=0x%04x dlen=0x%04x ret=0x%04x cookie_h=0x%08x cookie_l=0x%08x\n", i, d->flags, d->opcode, d->datalen, d->retval, d->cookie_high, d->cookie_low); - dev_info(&pf->pdev->dev, - " %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x\n", - d->params.raw[0], d->params.raw[1], d->params.raw[2], - d->params.raw[3], d->params.raw[4], d->params.raw[5], - d->params.raw[6], d->params.raw[7], d->params.raw[8], - d->params.raw[9], d->params.raw[10], d->params.raw[11], - d->params.raw[12], d->params.raw[13], - d->params.raw[14], d->params.raw[15]); + print_hex_dump(KERN_INFO, hdr, DUMP_PREFIX_NONE, + 16, 1, d->params.raw, 16, 0); } } @@ -759,27 +752,25 @@ static void i40e_dbg_dump_desc(int cnt, int vsi_seid, int ring_id, int desc_n, struct i40e_pf *pf, bool is_rx_ring) { - union i40e_rx_desc *ds; + struct i40e_tx_desc *txd; + union i40e_rx_desc *rxd; struct i40e_ring ring; struct i40e_vsi *vsi; int i; vsi = i40e_dbg_find_vsi(pf, vsi_seid); if (!vsi) { - dev_info(&pf->pdev->dev, - "vsi %d not found\n", vsi_seid); - if (is_rx_ring) - dev_info(&pf->pdev->dev, "dump desc rx []\n"); - else - dev_info(&pf->pdev->dev, "dump desc tx []\n"); + dev_info(&pf->pdev->dev, "vsi %d not found\n", vsi_seid); return; } if (ring_id >= vsi->num_queue_pairs || ring_id < 0) { dev_info(&pf->pdev->dev, "ring %d not found\n", ring_id); - if (is_rx_ring) - dev_info(&pf->pdev->dev, "dump desc rx []\n"); - else - dev_info(&pf->pdev->dev, "dump desc tx []\n"); + return; + } + if (!vsi->tx_rings || !vsi->tx_rings[0]->desc) { + dev_info(&pf->pdev->dev, + "descriptor rings have not been allocated for vsi %d\n", + vsi_seid); return; } if (is_rx_ring) @@ -790,22 +781,27 @@ dev_info(&pf->pdev->dev, "vsi = %02i %s ring = %02i\n", vsi_seid, is_rx_ring ? "rx" : "tx", ring_id); for (i = 0; i < ring.count; i++) { - if (is_rx_ring) - ds = I40E_RX_DESC(&ring, i); - else - ds = (union i40e_rx_desc *) - I40E_TX_DESC(&ring, i); - if ((sizeof(union i40e_rx_desc) == - sizeof(union i40e_16byte_rx_desc)) || (!is_rx_ring)) + if (!is_rx_ring) { + txd = I40E_TX_DESC(&ring, i); dev_info(&pf->pdev->dev, - " d[%03i] = 0x%016llx 0x%016llx\n", i, - ds->read.pkt_addr, ds->read.hdr_addr); - else + " d[%03i] = 0x%016llx 0x%016llx\n", + i, txd->buffer_addr, + txd->cmd_type_offset_bsz); + } else if (sizeof(union i40e_rx_desc) == + sizeof(union i40e_16byte_rx_desc)) { + rxd = I40E_RX_DESC(&ring, i); + dev_info(&pf->pdev->dev, + " d[%03i] = 0x%016llx 0x%016llx\n", + i, rxd->read.pkt_addr, + rxd->read.hdr_addr); + } else { + rxd = I40E_RX_DESC(&ring, i); dev_info(&pf->pdev->dev, " d[%03i] = 0x%016llx 0x%016llx 0x%016llx 0x%016llx\n", - i, ds->read.pkt_addr, - ds->read.hdr_addr, - ds->read.rsvd1, ds->read.rsvd2); + i, rxd->read.pkt_addr, + rxd->read.hdr_addr, + rxd->read.rsvd1, rxd->read.rsvd2); + } } } else if (cnt == 3) { if (desc_n >= ring.count || desc_n < 0) { @@ -813,27 +809,29 @@ "descriptor %d not found\n", desc_n); return; } - if (is_rx_ring) - ds = I40E_RX_DESC(&ring, desc_n); - else - ds = (union i40e_rx_desc *)I40E_TX_DESC(&ring, desc_n); - if ((sizeof(union i40e_rx_desc) == - sizeof(union i40e_16byte_rx_desc)) || (!is_rx_ring)) - dev_info(&pf->pdev->dev, - "vsi = %02i %s ring = %02i d[%03i] = 0x%016llx 0x%016llx\n", - vsi_seid, is_rx_ring ? "rx" : "tx", ring_id, - desc_n, ds->read.pkt_addr, ds->read.hdr_addr); - else + if (!is_rx_ring) { + txd = I40E_TX_DESC(&ring, desc_n); + dev_info(&pf->pdev->dev, + "vsi = %02i tx ring = %02i d[%03i] = 0x%016llx 0x%016llx\n", + vsi_seid, ring_id, desc_n, + txd->buffer_addr, txd->cmd_type_offset_bsz); + } else if (sizeof(union i40e_rx_desc) == + sizeof(union i40e_16byte_rx_desc)) { + rxd = I40E_RX_DESC(&ring, desc_n); + dev_info(&pf->pdev->dev, + "vsi = %02i rx ring = %02i d[%03i] = 0x%016llx 0x%016llx\n", + vsi_seid, ring_id, desc_n, + rxd->read.pkt_addr, rxd->read.hdr_addr); + } else { + rxd = I40E_RX_DESC(&ring, desc_n); dev_info(&pf->pdev->dev, "vsi = %02i rx ring = %02i d[%03i] = 0x%016llx 0x%016llx 0x%016llx 0x%016llx\n", - vsi_seid, ring_id, - desc_n, ds->read.pkt_addr, ds->read.hdr_addr, - ds->read.rsvd1, ds->read.rsvd2); + vsi_seid, ring_id, desc_n, + rxd->read.pkt_addr, rxd->read.hdr_addr, + rxd->read.rsvd1, rxd->read.rsvd2); + } } else { - if (is_rx_ring) - dev_info(&pf->pdev->dev, "dump desc rx []\n"); - else - dev_info(&pf->pdev->dev, "dump desc tx []\n"); + dev_info(&pf->pdev->dev, "dump desc rx/tx []\n"); } } @@ -979,8 +977,7 @@ veb = i40e_dbg_find_veb(pf, seid); if (!veb) { - dev_info(&pf->pdev->dev, - "%d: can't find veb\n", seid); + dev_info(&pf->pdev->dev, "can't find veb %d\n", seid); return; } dev_info(&pf->pdev->dev, @@ -1006,6 +1003,24 @@ } } +/** + * i40e_dbg_cmd_fd_ctrl - Enable/disable FD sideband/ATR + * @pf: the pf that would be altered + * @flag: flag that needs enabling or disabling + * @enable: Enable/disable FD SD/ATR + **/ +static void i40e_dbg_cmd_fd_ctrl(struct i40e_pf *pf, u64 flag, bool enable) +{ + if (enable) { + pf->flags |= flag; + } else { + pf->flags &= ~flag; + pf->auto_disable_flags |= flag; + } + dev_info(&pf->pdev->dev, "requesting a pf reset\n"); + i40e_do_reset_safe(pf, (1 << __I40E_PF_RESET_REQUESTED)); +} + #define I40E_MAX_DEBUG_OUT_BUFFER (4096*4) /** * i40e_dbg_command_write - write into command datum @@ -1022,8 +1037,6 @@ char *cmd_buf, *cmd_buf_tmp; int bytes_not_copied; struct i40e_vsi *vsi; - u8 *print_buf_start; - u8 *print_buf; int vsi_seid; int veb_seid; int cnt; @@ -1048,11 +1061,6 @@ count = cmd_buf_tmp - cmd_buf + 1; } - print_buf_start = kzalloc(I40E_MAX_DEBUG_OUT_BUFFER, GFP_KERNEL); - if (!print_buf_start) - goto command_write_done; - print_buf = print_buf_start; - if (strncmp(cmd_buf, "add vsi", 7) == 0) { vsi_seid = -1; cnt = sscanf(&cmd_buf[7], "%i", &vsi_seid); @@ -1104,7 +1112,7 @@ vsi = i40e_dbg_find_vsi(pf, vsi_seid); if (!vsi) { dev_info(&pf->pdev->dev, - "add relay: vsi VSI %d not found\n", vsi_seid); + "add relay: VSI %d not found\n", vsi_seid); goto command_write_done; } @@ -1461,21 +1469,25 @@ pf->msg_enable); } } else if (strncmp(cmd_buf, "pfr", 3) == 0) { - dev_info(&pf->pdev->dev, "forcing PFR\n"); - i40e_do_reset(pf, (1 << __I40E_PF_RESET_REQUESTED)); + dev_info(&pf->pdev->dev, "debugfs: forcing PFR\n"); + i40e_do_reset_safe(pf, (1 << __I40E_PF_RESET_REQUESTED)); } else if (strncmp(cmd_buf, "corer", 5) == 0) { - dev_info(&pf->pdev->dev, "forcing CoreR\n"); - i40e_do_reset(pf, (1 << __I40E_CORE_RESET_REQUESTED)); + dev_info(&pf->pdev->dev, "debugfs: forcing CoreR\n"); + i40e_do_reset_safe(pf, (1 << __I40E_CORE_RESET_REQUESTED)); } else if (strncmp(cmd_buf, "globr", 5) == 0) { - dev_info(&pf->pdev->dev, "forcing GlobR\n"); - i40e_do_reset(pf, (1 << __I40E_GLOBAL_RESET_REQUESTED)); + dev_info(&pf->pdev->dev, "debugfs: forcing GlobR\n"); + i40e_do_reset_safe(pf, (1 << __I40E_GLOBAL_RESET_REQUESTED)); + + } else if (strncmp(cmd_buf, "empr", 4) == 0) { + dev_info(&pf->pdev->dev, "debugfs: forcing EMPR\n"); + i40e_do_reset_safe(pf, (1 << __I40E_EMP_RESET_REQUESTED)); } else if (strncmp(cmd_buf, "read", 4) == 0) { u32 address; u32 value; - cnt = sscanf(&cmd_buf[4], "%x", &address); + cnt = sscanf(&cmd_buf[4], "%i", &address); if (cnt != 1) { dev_info(&pf->pdev->dev, "read \n"); goto command_write_done; @@ -1494,7 +1506,7 @@ } else if (strncmp(cmd_buf, "write", 5) == 0) { u32 address, value; - cnt = sscanf(&cmd_buf[5], "%x %x", &address, &value); + cnt = sscanf(&cmd_buf[5], "%i %i", &address, &value); if (cnt != 2) { dev_info(&pf->pdev->dev, "write \n"); goto command_write_done; @@ -1512,7 +1524,7 @@ address, value); } else if (strncmp(cmd_buf, "clear_stats", 11) == 0) { if (strncmp(&cmd_buf[12], "vsi", 3) == 0) { - cnt = sscanf(&cmd_buf[15], "%d", &vsi_seid); + cnt = sscanf(&cmd_buf[15], "%i", &vsi_seid); if (cnt == 0) { int i; for (i = 0; i < pf->hw.func_caps.num_vsis; i++) @@ -1539,32 +1551,152 @@ } else { dev_info(&pf->pdev->dev, "clear_stats vsi [seid] or clear_stats pf\n"); } + } else if (strncmp(cmd_buf, "send aq_cmd", 11) == 0) { + struct i40e_aq_desc *desc; + i40e_status ret; + + desc = kzalloc(sizeof(struct i40e_aq_desc), GFP_KERNEL); + if (!desc) + goto command_write_done; + cnt = sscanf(&cmd_buf[11], + "%hx %hx %hx %hx %x %x %x %x %x %x", + &desc->flags, + &desc->opcode, &desc->datalen, &desc->retval, + &desc->cookie_high, &desc->cookie_low, + &desc->params.internal.param0, + &desc->params.internal.param1, + &desc->params.internal.param2, + &desc->params.internal.param3); + if (cnt != 10) { + dev_info(&pf->pdev->dev, + "send aq_cmd: bad command string, cnt=%d\n", + cnt); + kfree(desc); + desc = NULL; + goto command_write_done; + } + ret = i40e_asq_send_command(&pf->hw, desc, NULL, 0, NULL); + if (!ret) { + dev_info(&pf->pdev->dev, "AQ command sent Status : Success\n"); + } else if (ret == I40E_ERR_ADMIN_QUEUE_ERROR) { + dev_info(&pf->pdev->dev, + "AQ command send failed Opcode %x AQ Error: %d\n", + desc->opcode, pf->hw.aq.asq_last_status); + } else { + dev_info(&pf->pdev->dev, + "AQ command send failed Opcode %x Status: %d\n", + desc->opcode, ret); + } + dev_info(&pf->pdev->dev, + "AQ desc WB 0x%04x 0x%04x 0x%04x 0x%04x 0x%08x 0x%08x 0x%08x 0x%08x 0x%08x 0x%08x\n", + desc->flags, desc->opcode, desc->datalen, desc->retval, + desc->cookie_high, desc->cookie_low, + desc->params.internal.param0, + desc->params.internal.param1, + desc->params.internal.param2, + desc->params.internal.param3); + kfree(desc); + desc = NULL; + } else if (strncmp(cmd_buf, "send indirect aq_cmd", 20) == 0) { + struct i40e_aq_desc *desc; + i40e_status ret; + u16 buffer_len; + u8 *buff; + + desc = kzalloc(sizeof(struct i40e_aq_desc), GFP_KERNEL); + if (!desc) + goto command_write_done; + cnt = sscanf(&cmd_buf[20], + "%hx %hx %hx %hx %x %x %x %x %x %x %hd", + &desc->flags, + &desc->opcode, &desc->datalen, &desc->retval, + &desc->cookie_high, &desc->cookie_low, + &desc->params.internal.param0, + &desc->params.internal.param1, + &desc->params.internal.param2, + &desc->params.internal.param3, + &buffer_len); + if (cnt != 11) { + dev_info(&pf->pdev->dev, + "send indirect aq_cmd: bad command string, cnt=%d\n", + cnt); + kfree(desc); + desc = NULL; + goto command_write_done; + } + /* Just stub a buffer big enough in case user messed up */ + if (buffer_len == 0) + buffer_len = 1280; + + buff = kzalloc(buffer_len, GFP_KERNEL); + if (!buff) { + kfree(desc); + desc = NULL; + goto command_write_done; + } + desc->flags |= cpu_to_le16((u16)I40E_AQ_FLAG_BUF); + ret = i40e_asq_send_command(&pf->hw, desc, buff, + buffer_len, NULL); + if (!ret) { + dev_info(&pf->pdev->dev, "AQ command sent Status : Success\n"); + } else if (ret == I40E_ERR_ADMIN_QUEUE_ERROR) { + dev_info(&pf->pdev->dev, + "AQ command send failed Opcode %x AQ Error: %d\n", + desc->opcode, pf->hw.aq.asq_last_status); + } else { + dev_info(&pf->pdev->dev, + "AQ command send failed Opcode %x Status: %d\n", + desc->opcode, ret); + } + dev_info(&pf->pdev->dev, + "AQ desc WB 0x%04x 0x%04x 0x%04x 0x%04x 0x%08x 0x%08x 0x%08x 0x%08x 0x%08x 0x%08x\n", + desc->flags, desc->opcode, desc->datalen, desc->retval, + desc->cookie_high, desc->cookie_low, + desc->params.internal.param0, + desc->params.internal.param1, + desc->params.internal.param2, + desc->params.internal.param3); + print_hex_dump(KERN_INFO, "AQ buffer WB: ", + DUMP_PREFIX_OFFSET, 16, 1, + buff, buffer_len, true); + kfree(buff); + buff = NULL; + kfree(desc); + desc = NULL; } else if ((strncmp(cmd_buf, "add fd_filter", 13) == 0) || (strncmp(cmd_buf, "rem fd_filter", 13) == 0)) { - struct i40e_fdir_data fd_data; + struct i40e_fdir_filter fd_data; u16 packet_len, i, j = 0; char *asc_packet; + u8 *raw_packet; bool add = false; int ret; - asc_packet = kzalloc(I40E_FDIR_MAX_RAW_PACKET_LOOKUP, + if (!(pf->flags & I40E_FLAG_FD_SB_ENABLED)) + goto command_write_done; + + if (strncmp(cmd_buf, "add", 3) == 0) + add = true; + + if (add && (pf->auto_disable_flags & I40E_FLAG_FD_SB_ENABLED)) + goto command_write_done; + + asc_packet = kzalloc(I40E_FDIR_MAX_RAW_PACKET_SIZE, GFP_KERNEL); if (!asc_packet) goto command_write_done; - fd_data.raw_packet = kzalloc(I40E_FDIR_MAX_RAW_PACKET_LOOKUP, - GFP_KERNEL); + raw_packet = kzalloc(I40E_FDIR_MAX_RAW_PACKET_SIZE, + GFP_KERNEL); - if (!fd_data.raw_packet) { + if (!raw_packet) { kfree(asc_packet); asc_packet = NULL; goto command_write_done; } - if (strncmp(cmd_buf, "add", 3) == 0) - add = true; cnt = sscanf(&cmd_buf[13], - "%hx %2hhx %2hhx %hx %2hhx %2hhx %hx %x %hd %512s", + "%hx %2hhx %2hhx %hx %2hhx %2hhx %hx %x %hd %511s", &fd_data.q_index, &fd_data.flex_off, &fd_data.pctype, &fd_data.dest_vsi, &fd_data.dest_ctl, @@ -1576,42 +1708,46 @@ cnt); kfree(asc_packet); asc_packet = NULL; - kfree(fd_data.raw_packet); + kfree(raw_packet); goto command_write_done; } /* fix packet length if user entered 0 */ if (packet_len == 0) - packet_len = I40E_FDIR_MAX_RAW_PACKET_LOOKUP; + packet_len = I40E_FDIR_MAX_RAW_PACKET_SIZE; /* make sure to check the max as well */ packet_len = min_t(u16, - packet_len, I40E_FDIR_MAX_RAW_PACKET_LOOKUP); + packet_len, I40E_FDIR_MAX_RAW_PACKET_SIZE); - dev_info(&pf->pdev->dev, "FD raw packet:\n"); for (i = 0; i < packet_len; i++) { sscanf(&asc_packet[j], "%2hhx ", - &fd_data.raw_packet[i]); + &raw_packet[i]); j += 3; - snprintf(print_buf, 3, "%02x ", fd_data.raw_packet[i]); - print_buf += 3; - if ((i % 16) == 15) { - snprintf(print_buf, 1, "\n"); - print_buf++; - } } - dev_info(&pf->pdev->dev, "%s\n", print_buf_start); - ret = i40e_program_fdir_filter(&fd_data, pf, add); + dev_info(&pf->pdev->dev, "FD raw packet dump\n"); + print_hex_dump(KERN_INFO, "FD raw packet: ", + DUMP_PREFIX_OFFSET, 16, 1, + raw_packet, packet_len, true); + ret = i40e_program_fdir_filter(&fd_data, raw_packet, pf, add); if (!ret) { dev_info(&pf->pdev->dev, "Filter command send Status : Success\n"); } else { dev_info(&pf->pdev->dev, "Filter command send failed %d\n", ret); } - kfree(fd_data.raw_packet); - fd_data.raw_packet = NULL; + kfree(raw_packet); + raw_packet = NULL; kfree(asc_packet); asc_packet = NULL; + } else if (strncmp(cmd_buf, "fd-atr off", 10) == 0) { + i40e_dbg_cmd_fd_ctrl(pf, I40E_FLAG_FD_ATR_ENABLED, false); + } else if (strncmp(cmd_buf, "fd-atr on", 9) == 0) { + i40e_dbg_cmd_fd_ctrl(pf, I40E_FLAG_FD_ATR_ENABLED, true); + } else if (strncmp(cmd_buf, "fd-sb off", 9) == 0) { + i40e_dbg_cmd_fd_ctrl(pf, I40E_FLAG_FD_SB_ENABLED, false); + } else if (strncmp(cmd_buf, "fd-sb on", 8) == 0) { + i40e_dbg_cmd_fd_ctrl(pf, I40E_FLAG_FD_SB_ENABLED, true); } else if (strncmp(cmd_buf, "lldp", 4) == 0) { if (strncmp(&cmd_buf[5], "stop", 4) == 0) { int ret; @@ -1622,8 +1758,35 @@ pf->hw.aq.asq_last_status); goto command_write_done; } + ret = i40e_aq_add_rem_control_packet_filter(&pf->hw, + pf->hw.mac.addr, + I40E_ETH_P_LLDP, 0, + pf->vsi[pf->lan_vsi]->seid, + 0, true, NULL, NULL); + if (ret) { + dev_info(&pf->pdev->dev, + "%s: Add Control Packet Filter AQ command failed =0x%x\n", + __func__, pf->hw.aq.asq_last_status); + goto command_write_done; + } +#ifdef CONFIG_I40E_DCB + pf->dcbx_cap = DCB_CAP_DCBX_HOST | + DCB_CAP_DCBX_VER_IEEE; +#endif /* CONFIG_I40E_DCB */ } else if (strncmp(&cmd_buf[5], "start", 5) == 0) { int ret; + ret = i40e_aq_add_rem_control_packet_filter(&pf->hw, + pf->hw.mac.addr, + I40E_ETH_P_LLDP, 0, + pf->vsi[pf->lan_vsi]->seid, + 0, false, NULL, NULL); + if (ret) { + dev_info(&pf->pdev->dev, + "%s: Remove Control Packet Filter AQ command failed =0x%x\n", + __func__, pf->hw.aq.asq_last_status); + /* Continue and start FW LLDP anyways */ + } + ret = i40e_aq_start_lldp(&pf->hw, NULL); if (ret) { dev_info(&pf->pdev->dev, @@ -1631,10 +1794,14 @@ pf->hw.aq.asq_last_status); goto command_write_done; } +#ifdef CONFIG_I40E_DCB + pf->dcbx_cap = DCB_CAP_DCBX_LLD_MANAGED | + DCB_CAP_DCBX_VER_IEEE; +#endif /* CONFIG_I40E_DCB */ } else if (strncmp(&cmd_buf[5], "get local", 9) == 0) { u16 llen, rlen; - int ret, i; + int ret; u8 *buff; buff = kzalloc(I40E_LLDPDU_SIZE, GFP_KERNEL); if (!buff) @@ -1652,22 +1819,15 @@ buff = NULL; goto command_write_done; } - dev_info(&pf->pdev->dev, - "Get LLDP MIB (local) AQ buffer written back:\n"); - for (i = 0; i < I40E_LLDPDU_SIZE; i++) { - snprintf(print_buf, 3, "%02x ", buff[i]); - print_buf += 3; - if ((i % 16) == 15) { - snprintf(print_buf, 1, "\n"); - print_buf++; - } - } - dev_info(&pf->pdev->dev, "%s\n", print_buf_start); + dev_info(&pf->pdev->dev, "LLDP MIB (local)\n"); + print_hex_dump(KERN_INFO, "LLDP MIB (local): ", + DUMP_PREFIX_OFFSET, 16, 1, + buff, I40E_LLDPDU_SIZE, true); kfree(buff); buff = NULL; } else if (strncmp(&cmd_buf[5], "get remote", 10) == 0) { u16 llen, rlen; - int ret, i; + int ret; u8 *buff; buff = kzalloc(I40E_LLDPDU_SIZE, GFP_KERNEL); if (!buff) @@ -1686,17 +1846,10 @@ buff = NULL; goto command_write_done; } - dev_info(&pf->pdev->dev, - "Get LLDP MIB (remote) AQ buffer written back:\n"); - for (i = 0; i < I40E_LLDPDU_SIZE; i++) { - snprintf(print_buf, 3, "%02x ", buff[i]); - print_buf += 3; - if ((i % 16) == 15) { - snprintf(print_buf, 1, "\n"); - print_buf++; - } - } - dev_info(&pf->pdev->dev, "%s\n", print_buf_start); + dev_info(&pf->pdev->dev, "LLDP MIB (remote)\n"); + print_hex_dump(KERN_INFO, "LLDP MIB (remote): ", + DUMP_PREFIX_OFFSET, 16, 1, + buff, I40E_LLDPDU_SIZE, true); kfree(buff); buff = NULL; } else if (strncmp(&cmd_buf[5], "event on", 8) == 0) { @@ -1721,7 +1874,7 @@ } } } else if (strncmp(cmd_buf, "nvm read", 8) == 0) { - u16 buffer_len, i, bytes; + u16 buffer_len, bytes; u16 module; u32 offset; u16 *buff; @@ -1775,16 +1928,10 @@ dev_info(&pf->pdev->dev, "Read NVM module=0x%x offset=0x%x words=%d\n", module, offset, buffer_len); - for (i = 0; i < buffer_len; i++) { - if ((i % 16) == 0) { - snprintf(print_buf, 11, "\n0x%08x: ", - offset + i); - print_buf += 11; - } - snprintf(print_buf, 5, "%04x ", buff[i]); - print_buf += 5; - } - dev_info(&pf->pdev->dev, "%s\n", print_buf_start); + if (bytes) + print_hex_dump(KERN_INFO, "NVM Dump: ", + DUMP_PREFIX_OFFSET, 16, 2, + buff, bytes, true); } kfree(buff); buff = NULL; @@ -1814,8 +1961,14 @@ dev_info(&pf->pdev->dev, " pfr\n"); dev_info(&pf->pdev->dev, " corer\n"); dev_info(&pf->pdev->dev, " globr\n"); + dev_info(&pf->pdev->dev, " send aq_cmd \n"); + dev_info(&pf->pdev->dev, " send indirect aq_cmd \n"); dev_info(&pf->pdev->dev, " add fd_filter \n"); dev_info(&pf->pdev->dev, " rem fd_filter \n"); + dev_info(&pf->pdev->dev, " fd-atr off\n"); + dev_info(&pf->pdev->dev, " fd-atr on\n"); + dev_info(&pf->pdev->dev, " fd-sb off\n"); + dev_info(&pf->pdev->dev, " fd-sb on\n"); dev_info(&pf->pdev->dev, " lldp start\n"); dev_info(&pf->pdev->dev, " lldp stop\n"); dev_info(&pf->pdev->dev, " lldp get local\n"); @@ -1828,9 +1981,6 @@ command_write_done: kfree(cmd_buf); cmd_buf = NULL; - kfree(print_buf_start); - print_buf = NULL; - print_buf_start = NULL; return count; } @@ -1937,9 +2087,13 @@ if (!vsi) { dev_info(&pf->pdev->dev, "tx_timeout: VSI %d not found\n", vsi_seid); - goto netdev_ops_write_done; - } - if (rtnl_trylock()) { + } else if (!vsi->netdev) { + dev_info(&pf->pdev->dev, "tx_timeout: no netdev for VSI %d\n", + vsi_seid); + } else if (test_bit(__I40E_DOWN, &vsi->state)) { + dev_info(&pf->pdev->dev, "tx_timeout: VSI %d not UP\n", + vsi_seid); + } else if (rtnl_trylock()) { vsi->netdev->netdev_ops->ndo_tx_timeout(vsi->netdev); rtnl_unlock(); dev_info(&pf->pdev->dev, "tx_timeout called\n"); @@ -1958,9 +2112,10 @@ if (!vsi) { dev_info(&pf->pdev->dev, "change_mtu: VSI %d not found\n", vsi_seid); - goto netdev_ops_write_done; - } - if (rtnl_trylock()) { + } else if (!vsi->netdev) { + dev_info(&pf->pdev->dev, "change_mtu: no netdev for VSI %d\n", + vsi_seid); + } else if (rtnl_trylock()) { vsi->netdev->netdev_ops->ndo_change_mtu(vsi->netdev, mtu); rtnl_unlock(); @@ -1979,9 +2134,10 @@ if (!vsi) { dev_info(&pf->pdev->dev, "set_rx_mode: VSI %d not found\n", vsi_seid); - goto netdev_ops_write_done; - } - if (rtnl_trylock()) { + } else if (!vsi->netdev) { + dev_info(&pf->pdev->dev, "set_rx_mode: no netdev for VSI %d\n", + vsi_seid); + } else if (rtnl_trylock()) { vsi->netdev->netdev_ops->ndo_set_rx_mode(vsi->netdev); rtnl_unlock(); dev_info(&pf->pdev->dev, "set_rx_mode called\n"); @@ -1999,11 +2155,14 @@ if (!vsi) { dev_info(&pf->pdev->dev, "napi: VSI %d not found\n", vsi_seid); - goto netdev_ops_write_done; + } else if (!vsi->netdev) { + dev_info(&pf->pdev->dev, "napi: no netdev for VSI %d\n", + vsi_seid); + } else { + for (i = 0; i < vsi->num_q_vectors; i++) + napi_schedule(&vsi->q_vectors[i]->napi); + dev_info(&pf->pdev->dev, "napi called\n"); } - for (i = 0; i < vsi->num_q_vectors; i++) - napi_schedule(&vsi->q_vectors[i]->napi); - dev_info(&pf->pdev->dev, "napi called\n"); } else { dev_info(&pf->pdev->dev, "unknown command '%s'\n", i40e_dbg_netdev_ops_buf); --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40e/i40e_diag.c +++ linux-3.13.0/drivers/net/ethernet/intel/i40e/i40e_diag.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Intel Ethernet Controller XL710 Family Linux Driver - * Copyright(c) 2013 Intel Corporation. + * Copyright(c) 2013 - 2014 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, @@ -12,9 +12,8 @@ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * - * You should have 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. + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . * * The full GNU General Public License is included in this distribution in * the file called "COPYING". @@ -68,16 +67,16 @@ struct i40e_diag_reg_test_info i40e_reg_list[] = { /* offset mask elements stride */ - {I40E_QTX_CTL(0), 0x0000FFBF, 64, I40E_QTX_CTL(1) - I40E_QTX_CTL(0)}, + {I40E_QTX_CTL(0), 0x0000FFBF, 4, I40E_QTX_CTL(1) - I40E_QTX_CTL(0)}, {I40E_PFINT_ITR0(0), 0x00000FFF, 3, I40E_PFINT_ITR0(1) - I40E_PFINT_ITR0(0)}, - {I40E_PFINT_ITRN(0, 0), 0x00000FFF, 64, I40E_PFINT_ITRN(0, 1) - I40E_PFINT_ITRN(0, 0)}, - {I40E_PFINT_ITRN(1, 0), 0x00000FFF, 64, I40E_PFINT_ITRN(1, 1) - I40E_PFINT_ITRN(1, 0)}, - {I40E_PFINT_ITRN(2, 0), 0x00000FFF, 64, I40E_PFINT_ITRN(2, 1) - I40E_PFINT_ITRN(2, 0)}, + {I40E_PFINT_ITRN(0, 0), 0x00000FFF, 8, I40E_PFINT_ITRN(0, 1) - I40E_PFINT_ITRN(0, 0)}, + {I40E_PFINT_ITRN(1, 0), 0x00000FFF, 8, I40E_PFINT_ITRN(1, 1) - I40E_PFINT_ITRN(1, 0)}, + {I40E_PFINT_ITRN(2, 0), 0x00000FFF, 8, I40E_PFINT_ITRN(2, 1) - I40E_PFINT_ITRN(2, 0)}, {I40E_PFINT_STAT_CTL0, 0x0000000C, 1, 0}, {I40E_PFINT_LNKLST0, 0x00001FFF, 1, 0}, - {I40E_PFINT_LNKLSTN(0), 0x000007FF, 511, I40E_PFINT_LNKLSTN(1) - I40E_PFINT_LNKLSTN(0)}, - {I40E_QINT_TQCTL(0), 0x000000FF, I40E_QINT_TQCTL_MAX_INDEX + 1, I40E_QINT_TQCTL(1) - I40E_QINT_TQCTL(0)}, - {I40E_QINT_RQCTL(0), 0x000000FF, I40E_QINT_RQCTL_MAX_INDEX + 1, I40E_QINT_RQCTL(1) - I40E_QINT_RQCTL(0)}, + {I40E_PFINT_LNKLSTN(0), 0x000007FF, 64, I40E_PFINT_LNKLSTN(1) - I40E_PFINT_LNKLSTN(0)}, + {I40E_QINT_TQCTL(0), 0x000000FF, 64, I40E_QINT_TQCTL(1) - I40E_QINT_TQCTL(0)}, + {I40E_QINT_RQCTL(0), 0x000000FF, 64, I40E_QINT_RQCTL(1) - I40E_QINT_RQCTL(0)}, {I40E_PFINT_ICR0_ENA, 0xF7F20000, 1, 0}, { 0 } }; @@ -119,7 +118,7 @@ /* read NVM control word and if NVM valid, validate EEPROM checksum*/ ret_code = i40e_read_nvm_word(hw, I40E_SR_NVM_CONTROL_WORD, ®_val); - if ((!ret_code) && + if (!ret_code && ((reg_val & I40E_SR_CONTROL_WORD_1_MASK) == (0x01 << I40E_SR_CONTROL_WORD_1_SHIFT))) { ret_code = i40e_validate_nvm_checksum(hw, NULL); --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40e/i40e_diag.h +++ linux-3.13.0/drivers/net/ethernet/intel/i40e/i40e_diag.h @@ -1,7 +1,7 @@ /******************************************************************************* * * Intel Ethernet Controller XL710 Family Linux Driver - * Copyright(c) 2013 Intel Corporation. + * Copyright(c) 2013 - 2014 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, @@ -12,9 +12,8 @@ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * - * You should have 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. + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . * * The full GNU General Public License is included in this distribution in * the file called "COPYING". @@ -31,10 +30,10 @@ #include "i40e_type.h" enum i40e_lb_mode { - I40E_LB_MODE_NONE = 0, - I40E_LB_MODE_PHY_LOCAL, - I40E_LB_MODE_PHY_REMOTE, - I40E_LB_MODE_MAC_LOCAL, + I40E_LB_MODE_NONE = 0x0, + I40E_LB_MODE_PHY_LOCAL = I40E_AQ_LB_PHY_LOCAL, + I40E_LB_MODE_PHY_REMOTE = I40E_AQ_LB_PHY_REMOTE, + I40E_LB_MODE_MAC_LOCAL = I40E_AQ_LB_MAC_LOCAL, }; struct i40e_diag_reg_test_info { --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40e/i40e_ethtool.c +++ linux-3.13.0/drivers/net/ethernet/intel/i40e/i40e_ethtool.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Intel Ethernet Controller XL710 Family Linux Driver - * Copyright(c) 2013 Intel Corporation. + * Copyright(c) 2013 - 2014 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, @@ -12,9 +12,8 @@ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * - * You should have 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. + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . * * The full GNU General Public License is included in this distribution in * the file called "COPYING". @@ -63,6 +62,9 @@ I40E_NETDEV_STAT(rx_crc_errors), }; +static int i40e_add_fdir_ethtool(struct i40e_vsi *vsi, + struct ethtool_rxnfc *cmd); + /* These PF_STATs might look like duplicates of some NETDEV_STATs, * but they are separate. This device supports Virtualization, and * as such might have several netdevs supporting VMDq and FCoE going @@ -85,6 +87,7 @@ I40E_PF_STAT("illegal_bytes", stats.illegal_bytes), I40E_PF_STAT("mac_local_faults", stats.mac_local_faults), I40E_PF_STAT("mac_remote_faults", stats.mac_remote_faults), + I40E_PF_STAT("tx_timeout", tx_timeout_count), I40E_PF_STAT("rx_length_errors", stats.rx_length_errors), I40E_PF_STAT("link_xon_rx", stats.link_xon_rx), I40E_PF_STAT("link_xoff_rx", stats.link_xoff_rx), @@ -109,6 +112,13 @@ I40E_PF_STAT("rx_oversize", stats.rx_oversize), I40E_PF_STAT("rx_jabber", stats.rx_jabber), I40E_PF_STAT("VF_admin_queue_requests", vf_aq_requests), + I40E_PF_STAT("tx_hwtstamp_timeouts", tx_hwtstamp_timeouts), + I40E_PF_STAT("rx_hwtstamp_cleared", rx_hwtstamp_cleared), + /* LPI stats */ + I40E_PF_STAT("tx_lpi_status", stats.tx_lpi_status), + I40E_PF_STAT("rx_lpi_status", stats.rx_lpi_status), + I40E_PF_STAT("tx_lpi_count", stats.tx_lpi_count), + I40E_PF_STAT("rx_lpi_count", stats.rx_lpi_count), }; #define I40E_QUEUE_STATS_LEN(n) \ @@ -193,28 +203,48 @@ ecmd->supported = SUPPORTED_10000baseKR_Full; ecmd->advertising = ADVERTISED_10000baseKR_Full; break; - case I40E_PHY_TYPE_10GBASE_T: default: - ecmd->supported = SUPPORTED_10000baseT_Full; - ecmd->advertising = ADVERTISED_10000baseT_Full; + if (i40e_is_40G_device(hw->device_id)) { + ecmd->supported = SUPPORTED_40000baseSR4_Full; + ecmd->advertising = ADVERTISED_40000baseSR4_Full; + } else { + ecmd->supported = SUPPORTED_10000baseT_Full; + ecmd->advertising = ADVERTISED_10000baseT_Full; + } break; } - /* for now just say autoneg all the time */ ecmd->supported |= SUPPORTED_Autoneg; + ecmd->advertising |= ADVERTISED_Autoneg; + ecmd->autoneg = ((hw_link_info->an_info & I40E_AQ_AN_COMPLETED) ? + AUTONEG_ENABLE : AUTONEG_DISABLE); - if (hw->phy.media_type == I40E_MEDIA_TYPE_BACKPLANE) { + switch (hw->phy.media_type) { + case I40E_MEDIA_TYPE_BACKPLANE: ecmd->supported |= SUPPORTED_Backplane; ecmd->advertising |= ADVERTISED_Backplane; ecmd->port = PORT_NONE; - } else if (hw->phy.media_type == I40E_MEDIA_TYPE_BASET) { + break; + case I40E_MEDIA_TYPE_BASET: ecmd->supported |= SUPPORTED_TP; ecmd->advertising |= ADVERTISED_TP; ecmd->port = PORT_TP; - } else { + break; + case I40E_MEDIA_TYPE_DA: + case I40E_MEDIA_TYPE_CX4: + ecmd->supported |= SUPPORTED_FIBRE; + ecmd->advertising |= ADVERTISED_FIBRE; + ecmd->port = PORT_DA; + break; + case I40E_MEDIA_TYPE_FIBER: ecmd->supported |= SUPPORTED_FIBRE; ecmd->advertising |= ADVERTISED_FIBRE; ecmd->port = PORT_FIBRE; + break; + case I40E_MEDIA_TYPE_UNKNOWN: + default: + ecmd->port = PORT_OTHER; + break; } ecmd->transceiver = XCVR_EXTERNAL; @@ -256,12 +286,14 @@ ((hw_link_info->an_info & I40E_AQ_AN_COMPLETED) ? AUTONEG_ENABLE : AUTONEG_DISABLE); - pause->rx_pause = 0; - pause->tx_pause = 0; - if (hw_link_info->an_info & I40E_AQ_LINK_PAUSE_RX) + if (hw->fc.current_mode == I40E_FC_RX_PAUSE) { pause->rx_pause = 1; - if (hw_link_info->an_info & I40E_AQ_LINK_PAUSE_TX) + } else if (hw->fc.current_mode == I40E_FC_TX_PAUSE) { pause->tx_pause = 1; + } else if (hw->fc.current_mode == I40E_FC_FULL) { + pause->rx_pause = 1; + pause->tx_pause = 1; + } } static u32 i40e_get_msglevel(struct net_device *netdev) @@ -329,38 +361,56 @@ { struct i40e_netdev_priv *np = netdev_priv(netdev); struct i40e_hw *hw = &np->vsi->back->hw; - int first_word, last_word; - u16 i, eeprom_len; - u16 *eeprom_buff; - int ret_val = 0; - + struct i40e_pf *pf = np->vsi->back; + int ret_val = 0, len; + u8 *eeprom_buff; + u16 i, sectors; + bool last; +#define I40E_NVM_SECTOR_SIZE 4096 if (eeprom->len == 0) return -EINVAL; eeprom->magic = hw->vendor_id | (hw->device_id << 16); - first_word = eeprom->offset >> 1; - last_word = (eeprom->offset + eeprom->len - 1) >> 1; - eeprom_len = last_word - first_word + 1; - - eeprom_buff = kmalloc(sizeof(u16) * eeprom_len, GFP_KERNEL); + eeprom_buff = kzalloc(eeprom->len, GFP_KERNEL); if (!eeprom_buff) return -ENOMEM; - ret_val = i40e_read_nvm_buffer(hw, first_word, &eeprom_len, - eeprom_buff); - if (eeprom_len == 0) { - kfree(eeprom_buff); - return -EACCES; + ret_val = i40e_acquire_nvm(hw, I40E_RESOURCE_READ); + if (ret_val) { + dev_info(&pf->pdev->dev, + "Failed Acquiring NVM resource for read err=%d status=0x%x\n", + ret_val, hw->aq.asq_last_status); + goto free_buff; + } + + sectors = eeprom->len / I40E_NVM_SECTOR_SIZE; + sectors += (eeprom->len % I40E_NVM_SECTOR_SIZE) ? 1 : 0; + len = I40E_NVM_SECTOR_SIZE; + last = false; + for (i = 0; i < sectors; i++) { + if (i == (sectors - 1)) { + len = eeprom->len - (I40E_NVM_SECTOR_SIZE * i); + last = true; + } + ret_val = i40e_aq_read_nvm(hw, 0x0, + eeprom->offset + (I40E_NVM_SECTOR_SIZE * i), + len, + eeprom_buff + (I40E_NVM_SECTOR_SIZE * i), + last, NULL); + if (ret_val) { + dev_info(&pf->pdev->dev, + "read NVM failed err=%d status=0x%x\n", + ret_val, hw->aq.asq_last_status); + goto release_nvm; + } } - /* Device's eeprom is always little-endian, word addressable */ - for (i = 0; i < eeprom_len; i++) - le16_to_cpus(&eeprom_buff[i]); - - memcpy(bytes, (u8 *)eeprom_buff + (eeprom->offset & 1), eeprom->len); +release_nvm: + i40e_release_nvm(hw); + memcpy(bytes, eeprom_buff, eeprom->len); +free_buff: kfree(eeprom_buff); - return ret_val; } @@ -368,8 +418,14 @@ { struct i40e_netdev_priv *np = netdev_priv(netdev); struct i40e_hw *hw = &np->vsi->back->hw; + u32 val; - return hw->nvm.sr_size * 2; + val = (rd32(hw, I40E_GLPCI_LBARCTRL) + & I40E_GLPCI_LBARCTRL_FL_SIZE_MASK) + >> I40E_GLPCI_LBARCTRL_FL_SIZE_SHIFT; + /* register returns value in power of 2, 64Kbyte chunks. */ + val = (64 * 1024) * (1 << val); + return val; } static void i40e_get_drvinfo(struct net_device *netdev, @@ -418,15 +474,19 @@ if ((ring->rx_mini_pending) || (ring->rx_jumbo_pending)) return -EINVAL; - new_tx_count = clamp_t(u32, ring->tx_pending, - I40E_MIN_NUM_DESCRIPTORS, - I40E_MAX_NUM_DESCRIPTORS); - new_tx_count = ALIGN(new_tx_count, I40E_REQ_DESCRIPTOR_MULTIPLE); - - new_rx_count = clamp_t(u32, ring->rx_pending, - I40E_MIN_NUM_DESCRIPTORS, - I40E_MAX_NUM_DESCRIPTORS); - new_rx_count = ALIGN(new_rx_count, I40E_REQ_DESCRIPTOR_MULTIPLE); + if (ring->tx_pending > I40E_MAX_NUM_DESCRIPTORS || + ring->tx_pending < I40E_MIN_NUM_DESCRIPTORS || + ring->rx_pending > I40E_MAX_NUM_DESCRIPTORS || + ring->rx_pending < I40E_MIN_NUM_DESCRIPTORS) { + netdev_info(netdev, + "Descriptors requested (Tx: %d / Rx: %d) out of range [%d-%d]\n", + ring->tx_pending, ring->rx_pending, + I40E_MIN_NUM_DESCRIPTORS, I40E_MAX_NUM_DESCRIPTORS); + return -EINVAL; + } + + new_tx_count = ALIGN(ring->tx_pending, I40E_REQ_DESCRIPTOR_MULTIPLE); + new_rx_count = ALIGN(ring->rx_pending, I40E_REQ_DESCRIPTOR_MULTIPLE); /* if nothing to do return success */ if ((new_tx_count == vsi->tx_rings[0]->count) && @@ -598,18 +658,18 @@ /* process Tx ring statistics */ do { - start = u64_stats_fetch_begin_bh(&tx_ring->syncp); + start = u64_stats_fetch_begin_irq(&tx_ring->syncp); data[i] = tx_ring->stats.packets; data[i + 1] = tx_ring->stats.bytes; - } while (u64_stats_fetch_retry_bh(&tx_ring->syncp, start)); + } while (u64_stats_fetch_retry_irq(&tx_ring->syncp, start)); /* Rx ring is the 2nd half of the queue pair */ rx_ring = &tx_ring[1]; do { - start = u64_stats_fetch_begin_bh(&rx_ring->syncp); + start = u64_stats_fetch_begin_irq(&rx_ring->syncp); data[i + 2] = rx_ring->stats.packets; data[i + 3] = rx_ring->stats.bytes; - } while (u64_stats_fetch_retry_bh(&rx_ring->syncp, start)); + } while (u64_stats_fetch_retry_irq(&rx_ring->syncp, start)); } rcu_read_unlock(); if (vsi == pf->vsi[pf->lan_vsi]) { @@ -699,11 +759,44 @@ static int i40e_get_ts_info(struct net_device *dev, struct ethtool_ts_info *info) { - return ethtool_op_get_ts_info(dev, info); + struct i40e_pf *pf = i40e_netdev_to_pf(dev); + + info->so_timestamping = SOF_TIMESTAMPING_TX_SOFTWARE | + SOF_TIMESTAMPING_RX_SOFTWARE | + SOF_TIMESTAMPING_SOFTWARE | + SOF_TIMESTAMPING_TX_HARDWARE | + SOF_TIMESTAMPING_RX_HARDWARE | + SOF_TIMESTAMPING_RAW_HARDWARE; + + if (pf->ptp_clock) + info->phc_index = ptp_clock_index(pf->ptp_clock); + else + info->phc_index = -1; + + info->tx_types = (1 << HWTSTAMP_TX_OFF) | (1 << HWTSTAMP_TX_ON); + + info->rx_filters = (1 << HWTSTAMP_FILTER_NONE) | + (1 << HWTSTAMP_FILTER_PTP_V1_L4_SYNC) | + (1 << HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ) | + (1 << HWTSTAMP_FILTER_PTP_V2_EVENT) | + (1 << HWTSTAMP_FILTER_PTP_V2_L2_EVENT) | + (1 << HWTSTAMP_FILTER_PTP_V2_L4_EVENT) | + (1 << HWTSTAMP_FILTER_PTP_V2_SYNC) | + (1 << HWTSTAMP_FILTER_PTP_V2_L2_SYNC) | + (1 << HWTSTAMP_FILTER_PTP_V2_L4_SYNC) | + (1 << HWTSTAMP_FILTER_PTP_V2_DELAY_REQ) | + (1 << HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ) | + (1 << HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ); + + return 0; } -static int i40e_link_test(struct i40e_pf *pf, u64 *data) +static int i40e_link_test(struct net_device *netdev, u64 *data) { + struct i40e_netdev_priv *np = netdev_priv(netdev); + struct i40e_pf *pf = np->vsi->back; + + netif_info(pf, hw, netdev, "link test\n"); if (i40e_get_link_status(&pf->hw)) *data = 0; else @@ -712,36 +805,51 @@ return *data; } -static int i40e_reg_test(struct i40e_pf *pf, u64 *data) +static int i40e_reg_test(struct net_device *netdev, u64 *data) { - i40e_status ret; + struct i40e_netdev_priv *np = netdev_priv(netdev); + struct i40e_pf *pf = np->vsi->back; - ret = i40e_diag_reg_test(&pf->hw); - *data = ret; + netif_info(pf, hw, netdev, "register test\n"); + *data = i40e_diag_reg_test(&pf->hw); - return ret; + return *data; } -static int i40e_eeprom_test(struct i40e_pf *pf, u64 *data) +static int i40e_eeprom_test(struct net_device *netdev, u64 *data) { - i40e_status ret; + struct i40e_netdev_priv *np = netdev_priv(netdev); + struct i40e_pf *pf = np->vsi->back; - ret = i40e_diag_eeprom_test(&pf->hw); - *data = ret; + netif_info(pf, hw, netdev, "eeprom test\n"); + *data = i40e_diag_eeprom_test(&pf->hw); - return ret; + return *data; } -static int i40e_intr_test(struct i40e_pf *pf, u64 *data) +static int i40e_intr_test(struct net_device *netdev, u64 *data) { - *data = -ENOSYS; + struct i40e_netdev_priv *np = netdev_priv(netdev); + struct i40e_pf *pf = np->vsi->back; + u16 swc_old = pf->sw_int_count; + + netif_info(pf, hw, netdev, "interrupt test\n"); + wr32(&pf->hw, I40E_PFINT_DYN_CTL0, + (I40E_PFINT_DYN_CTL0_INTENA_MASK | + I40E_PFINT_DYN_CTL0_SWINT_TRIG_MASK)); + usleep_range(1000, 2000); + *data = (swc_old == pf->sw_int_count); return *data; } -static int i40e_loopback_test(struct i40e_pf *pf, u64 *data) +static int i40e_loopback_test(struct net_device *netdev, u64 *data) { - *data = -ENOSYS; + struct i40e_netdev_priv *np = netdev_priv(netdev); + struct i40e_pf *pf = np->vsi->back; + + netif_info(pf, hw, netdev, "loopback test not implemented\n"); + *data = 0; return *data; } @@ -752,42 +860,38 @@ struct i40e_netdev_priv *np = netdev_priv(netdev); struct i40e_pf *pf = np->vsi->back; - set_bit(__I40E_TESTING, &pf->state); if (eth_test->flags == ETH_TEST_FL_OFFLINE) { /* Offline tests */ + netif_info(pf, drv, netdev, "offline testing starting\n"); - netdev_info(netdev, "offline testing starting\n"); + set_bit(__I40E_TESTING, &pf->state); /* Link test performed before hardware reset * so autoneg doesn't interfere with test result */ - netdev_info(netdev, "link test starting\n"); - if (i40e_link_test(pf, &data[I40E_ETH_TEST_LINK])) + if (i40e_link_test(netdev, &data[I40E_ETH_TEST_LINK])) eth_test->flags |= ETH_TEST_FL_FAILED; - netdev_info(netdev, "register test starting\n"); - if (i40e_reg_test(pf, &data[I40E_ETH_TEST_REG])) + if (i40e_eeprom_test(netdev, &data[I40E_ETH_TEST_EEPROM])) eth_test->flags |= ETH_TEST_FL_FAILED; - i40e_do_reset(pf, (1 << __I40E_PF_RESET_REQUESTED)); - netdev_info(netdev, "eeprom test starting\n"); - if (i40e_eeprom_test(pf, &data[I40E_ETH_TEST_EEPROM])) + if (i40e_intr_test(netdev, &data[I40E_ETH_TEST_INTR])) eth_test->flags |= ETH_TEST_FL_FAILED; - i40e_do_reset(pf, (1 << __I40E_PF_RESET_REQUESTED)); - netdev_info(netdev, "interrupt test starting\n"); - if (i40e_intr_test(pf, &data[I40E_ETH_TEST_INTR])) + if (i40e_loopback_test(netdev, &data[I40E_ETH_TEST_LOOPBACK])) eth_test->flags |= ETH_TEST_FL_FAILED; - i40e_do_reset(pf, (1 << __I40E_PF_RESET_REQUESTED)); - netdev_info(netdev, "loopback test starting\n"); - if (i40e_loopback_test(pf, &data[I40E_ETH_TEST_LOOPBACK])) + /* run reg test last, a reset is required after it */ + if (i40e_reg_test(netdev, &data[I40E_ETH_TEST_REG])) eth_test->flags |= ETH_TEST_FL_FAILED; + clear_bit(__I40E_TESTING, &pf->state); + i40e_do_reset(pf, (1 << __I40E_PF_RESET_REQUESTED)); } else { - netdev_info(netdev, "online test starting\n"); /* Online tests */ - if (i40e_link_test(pf, &data[I40E_ETH_TEST_LINK])) + netif_info(pf, drv, netdev, "online testing starting\n"); + + if (i40e_link_test(netdev, &data[I40E_ETH_TEST_LINK])) eth_test->flags |= ETH_TEST_FL_FAILED; /* Offline only tests, not run in online; pass by default */ @@ -795,16 +899,53 @@ data[I40E_ETH_TEST_EEPROM] = 0; data[I40E_ETH_TEST_INTR] = 0; data[I40E_ETH_TEST_LOOPBACK] = 0; - - clear_bit(__I40E_TESTING, &pf->state); } + + netif_info(pf, drv, netdev, "testing finished\n"); } static void i40e_get_wol(struct net_device *netdev, struct ethtool_wolinfo *wol) { - wol->supported = 0; - wol->wolopts = 0; + struct i40e_netdev_priv *np = netdev_priv(netdev); + struct i40e_pf *pf = np->vsi->back; + struct i40e_hw *hw = &pf->hw; + u16 wol_nvm_bits; + + /* NVM bit on means WoL disabled for the port */ + i40e_read_nvm_word(hw, I40E_SR_NVM_WAKE_ON_LAN, &wol_nvm_bits); + if ((1 << hw->port) & wol_nvm_bits) { + wol->supported = 0; + wol->wolopts = 0; + } else { + wol->supported = WAKE_MAGIC; + wol->wolopts = (pf->wol_en ? WAKE_MAGIC : 0); + } +} + +static int i40e_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol) +{ + struct i40e_netdev_priv *np = netdev_priv(netdev); + struct i40e_pf *pf = np->vsi->back; + struct i40e_hw *hw = &pf->hw; + u16 wol_nvm_bits; + + /* NVM bit on means WoL disabled for the port */ + i40e_read_nvm_word(hw, I40E_SR_NVM_WAKE_ON_LAN, &wol_nvm_bits); + if (((1 << hw->port) & wol_nvm_bits)) + return -EOPNOTSUPP; + + /* only magic packet is supported */ + if (wol->wolopts && (wol->wolopts != WAKE_MAGIC)) + return -EOPNOTSUPP; + + /* is this a new value? */ + if (pf->wol_en != !!wol->wolopts) { + pf->wol_en = !!wol->wolopts; + device_set_wakeup_enable(&pf->pdev->dev, pf->wol_en); + } + + return 0; } static int i40e_nway_reset(struct net_device *netdev) @@ -838,13 +979,13 @@ pf->led_status = i40e_led_get(hw); return blink_freq; case ETHTOOL_ID_ON: - i40e_led_set(hw, 0xF); + i40e_led_set(hw, 0xF, false); break; case ETHTOOL_ID_OFF: - i40e_led_set(hw, 0x0); + i40e_led_set(hw, 0x0, false); break; case ETHTOOL_ID_INACTIVE: - i40e_led_set(hw, pf->led_status); + i40e_led_set(hw, pf->led_status, false); break; } @@ -980,6 +1121,84 @@ } /** + * i40e_get_ethtool_fdir_all - Populates the rule count of a command + * @pf: Pointer to the physical function struct + * @cmd: The command to get or set Rx flow classification rules + * @rule_locs: Array of used rule locations + * + * This function populates both the total and actual rule count of + * the ethtool flow classification command + * + * Returns 0 on success or -EMSGSIZE if entry not found + **/ +static int i40e_get_ethtool_fdir_all(struct i40e_pf *pf, + struct ethtool_rxnfc *cmd, + u32 *rule_locs) +{ + struct i40e_fdir_filter *rule; + struct hlist_node *node2; + int cnt = 0; + + /* report total rule count */ + cmd->data = pf->hw.fdir_shared_filter_count + + pf->fdir_pf_filter_count; + + hlist_for_each_entry_safe(rule, node2, + &pf->fdir_filter_list, fdir_node) { + if (cnt == cmd->rule_cnt) + return -EMSGSIZE; + + rule_locs[cnt] = rule->fd_id; + cnt++; + } + + cmd->rule_cnt = cnt; + + return 0; +} + +/** + * i40e_get_ethtool_fdir_entry - Look up a filter based on Rx flow + * @pf: Pointer to the physical function struct + * @cmd: The command to get or set Rx flow classification rules + * + * This function looks up a filter based on the Rx flow classification + * command and fills the flow spec info for it if found + * + * Returns 0 on success or -EINVAL if filter not found + **/ +static int i40e_get_ethtool_fdir_entry(struct i40e_pf *pf, + struct ethtool_rxnfc *cmd) +{ + struct ethtool_rx_flow_spec *fsp = + (struct ethtool_rx_flow_spec *)&cmd->fs; + struct i40e_fdir_filter *rule = NULL; + struct hlist_node *node2; + + /* report total rule count */ + cmd->data = pf->hw.fdir_shared_filter_count + + pf->fdir_pf_filter_count; + + hlist_for_each_entry_safe(rule, node2, + &pf->fdir_filter_list, fdir_node) { + if (fsp->location <= rule->fd_id) + break; + } + + if (!rule || fsp->location != rule->fd_id) + return -EINVAL; + + fsp->flow_type = rule->flow_type; + fsp->h_u.tcp_ip4_spec.psrc = rule->src_port; + fsp->h_u.tcp_ip4_spec.pdst = rule->dst_port; + fsp->h_u.tcp_ip4_spec.ip4src = rule->src_ip[0]; + fsp->h_u.tcp_ip4_spec.ip4dst = rule->dst_ip[0]; + fsp->ring_cookie = rule->q_index; + + return 0; +} + +/** * i40e_get_rxnfc - command to get RX flow classification rules * @netdev: network interface device structure * @cmd: ethtool rxnfc command @@ -1003,14 +1222,15 @@ ret = i40e_get_rss_hash_opts(pf, cmd); break; case ETHTOOL_GRXCLSRLCNT: + cmd->rule_cnt = pf->fdir_pf_active_filters; ret = 0; break; case ETHTOOL_GRXCLSRULE: - ret = 0; + ret = i40e_get_ethtool_fdir_entry(pf, cmd); break; case ETHTOOL_GRXCLSRLALL: - cmd->data = 500; - ret = 0; + ret = i40e_get_ethtool_fdir_all(pf, cmd, rule_locs); + break; default: break; } @@ -1141,265 +1361,186 @@ return 0; } -#define IP_HEADER_OFFSET 14 /** - * i40e_add_del_fdir_udpv4 - Add/Remove UDPv4 Flow Director filters for - * a specific flow spec - * @vsi: pointer to the targeted VSI - * @fd_data: the flow director data required from the FDir descriptor - * @ethtool_rx_flow_spec: the flow spec - * @add: true adds a filter, false removes it + * i40e_match_fdir_input_set - Match a new filter against an existing one + * @rule: The filter already added + * @input: The new filter to comapre against * - * Returns 0 if the filters were successfully added or removed + * Returns true if the two input set match **/ -static int i40e_add_del_fdir_udpv4(struct i40e_vsi *vsi, - struct i40e_fdir_data *fd_data, - struct ethtool_rx_flow_spec *fsp, bool add) +static bool i40e_match_fdir_input_set(struct i40e_fdir_filter *rule, + struct i40e_fdir_filter *input) { - struct i40e_pf *pf = vsi->back; - struct udphdr *udp; - struct iphdr *ip; - bool err = false; - int ret; - int i; - - ip = (struct iphdr *)(fd_data->raw_packet + IP_HEADER_OFFSET); - udp = (struct udphdr *)(fd_data->raw_packet + IP_HEADER_OFFSET - + sizeof(struct iphdr)); - - ip->saddr = fsp->h_u.tcp_ip4_spec.ip4src; - ip->daddr = fsp->h_u.tcp_ip4_spec.ip4dst; - udp->source = fsp->h_u.tcp_ip4_spec.psrc; - udp->dest = fsp->h_u.tcp_ip4_spec.pdst; - - for (i = I40E_FILTER_PCTYPE_NONF_UNICAST_IPV4_UDP; - i <= I40E_FILTER_PCTYPE_NONF_IPV4_UDP; i++) { - fd_data->pctype = i; - ret = i40e_program_fdir_filter(fd_data, pf, add); - - if (ret) { - dev_info(&pf->pdev->dev, - "Filter command send failed for PCTYPE %d (ret = %d)\n", - fd_data->pctype, ret); - err = true; - } else { - dev_info(&pf->pdev->dev, - "Filter OK for PCTYPE %d (ret = %d)\n", - fd_data->pctype, ret); - } - } - - return err ? -EOPNOTSUPP : 0; + if ((rule->dst_ip[0] != input->dst_ip[0]) || + (rule->src_ip[0] != input->src_ip[0]) || + (rule->dst_port != input->dst_port) || + (rule->src_port != input->src_port)) + return false; + return true; } /** - * i40e_add_del_fdir_tcpv4 - Add/Remove TCPv4 Flow Director filters for - * a specific flow spec - * @vsi: pointer to the targeted VSI - * @fd_data: the flow director data required from the FDir descriptor - * @ethtool_rx_flow_spec: the flow spec - * @add: true adds a filter, false removes it + * i40e_update_ethtool_fdir_entry - Updates the fdir filter entry + * @vsi: Pointer to the targeted VSI + * @input: The filter to update or NULL to indicate deletion + * @sw_idx: Software index to the filter + * @cmd: The command to get or set Rx flow classification rules * - * Returns 0 if the filters were successfully added or removed + * This function updates (or deletes) a Flow Director entry from + * the hlist of the corresponding PF + * + * Returns 0 on success **/ -static int i40e_add_del_fdir_tcpv4(struct i40e_vsi *vsi, - struct i40e_fdir_data *fd_data, - struct ethtool_rx_flow_spec *fsp, bool add) +static int i40e_update_ethtool_fdir_entry(struct i40e_vsi *vsi, + struct i40e_fdir_filter *input, + u16 sw_idx, + struct ethtool_rxnfc *cmd) { + struct i40e_fdir_filter *rule, *parent; struct i40e_pf *pf = vsi->back; - struct tcphdr *tcp; - struct iphdr *ip; - bool err = false; - int ret; - - ip = (struct iphdr *)(fd_data->raw_packet + IP_HEADER_OFFSET); - tcp = (struct tcphdr *)(fd_data->raw_packet + IP_HEADER_OFFSET - + sizeof(struct iphdr)); + struct hlist_node *node2; + int err = -EINVAL; - ip->daddr = fsp->h_u.tcp_ip4_spec.ip4dst; - tcp->dest = fsp->h_u.tcp_ip4_spec.pdst; + parent = NULL; + rule = NULL; - fd_data->pctype = I40E_FILTER_PCTYPE_NONF_IPV4_TCP_SYN; - ret = i40e_program_fdir_filter(fd_data, pf, add); + hlist_for_each_entry_safe(rule, node2, + &pf->fdir_filter_list, fdir_node) { + /* hash found, or no matching entry */ + if (rule->fd_id >= sw_idx) + break; + parent = rule; + } - if (ret) { - dev_info(&pf->pdev->dev, - "Filter command send failed for PCTYPE %d (ret = %d)\n", - fd_data->pctype, ret); - err = true; - } else { - dev_info(&pf->pdev->dev, "Filter OK for PCTYPE %d (ret = %d)\n", - fd_data->pctype, ret); + /* if there is an old rule occupying our place remove it */ + if (rule && (rule->fd_id == sw_idx)) { + if (input && !i40e_match_fdir_input_set(rule, input)) + err = i40e_add_del_fdir(vsi, rule, false); + else if (!input) + err = i40e_add_del_fdir(vsi, rule, false); + hlist_del(&rule->fdir_node); + kfree(rule); + pf->fdir_pf_active_filters--; } - ip->saddr = fsp->h_u.tcp_ip4_spec.ip4src; - tcp->source = fsp->h_u.tcp_ip4_spec.psrc; + /* If no input this was a delete, err should be 0 if a rule was + * successfully found and removed from the list else -EINVAL + */ + if (!input) + return err; - fd_data->pctype = I40E_FILTER_PCTYPE_NONF_IPV4_TCP; + /* initialize node and set software index */ + INIT_HLIST_NODE(&input->fdir_node); - ret = i40e_program_fdir_filter(fd_data, pf, add); - if (ret) { - dev_info(&pf->pdev->dev, - "Filter command send failed for PCTYPE %d (ret = %d)\n", - fd_data->pctype, ret); - err = true; - } else { - dev_info(&pf->pdev->dev, "Filter OK for PCTYPE %d (ret = %d)\n", - fd_data->pctype, ret); - } + /* add filter to the list */ + if (parent) + hlist_add_after(&parent->fdir_node, &input->fdir_node); + else + hlist_add_head(&input->fdir_node, + &pf->fdir_filter_list); - return err ? -EOPNOTSUPP : 0; -} + /* update counts */ + pf->fdir_pf_active_filters++; -/** - * i40e_add_del_fdir_sctpv4 - Add/Remove SCTPv4 Flow Director filters for - * a specific flow spec - * @vsi: pointer to the targeted VSI - * @fd_data: the flow director data required from the FDir descriptor - * @ethtool_rx_flow_spec: the flow spec - * @add: true adds a filter, false removes it - * - * Returns 0 if the filters were successfully added or removed - **/ -static int i40e_add_del_fdir_sctpv4(struct i40e_vsi *vsi, - struct i40e_fdir_data *fd_data, - struct ethtool_rx_flow_spec *fsp, bool add) -{ - return -EOPNOTSUPP; + return 0; } /** - * i40e_add_del_fdir_ipv4 - Add/Remove IPv4 Flow Director filters for - * a specific flow spec - * @vsi: pointer to the targeted VSI - * @fd_data: the flow director data required for the FDir descriptor - * @fsp: the ethtool flow spec - * @add: true adds a filter, false removes it + * i40e_del_fdir_entry - Deletes a Flow Director filter entry + * @vsi: Pointer to the targeted VSI + * @cmd: The command to get or set Rx flow classification rules * - * Returns 0 if the filters were successfully added or removed - **/ -static int i40e_add_del_fdir_ipv4(struct i40e_vsi *vsi, - struct i40e_fdir_data *fd_data, - struct ethtool_rx_flow_spec *fsp, bool add) + * The function removes a Flow Director filter entry from the + * hlist of the corresponding PF + * + * Returns 0 on success + */ +static int i40e_del_fdir_entry(struct i40e_vsi *vsi, + struct ethtool_rxnfc *cmd) { + struct ethtool_rx_flow_spec *fsp = + (struct ethtool_rx_flow_spec *)&cmd->fs; struct i40e_pf *pf = vsi->back; - struct iphdr *ip; - bool err = false; - int ret; - int i; - - ip = (struct iphdr *)(fd_data->raw_packet + IP_HEADER_OFFSET); + int ret = 0; - ip->saddr = fsp->h_u.usr_ip4_spec.ip4src; - ip->daddr = fsp->h_u.usr_ip4_spec.ip4dst; - ip->protocol = fsp->h_u.usr_ip4_spec.proto; - - for (i = I40E_FILTER_PCTYPE_NONF_IPV4_OTHER; - i <= I40E_FILTER_PCTYPE_FRAG_IPV4; i++) { - fd_data->pctype = i; - ret = i40e_program_fdir_filter(fd_data, pf, add); + ret = i40e_update_ethtool_fdir_entry(vsi, NULL, fsp->location, cmd); - if (ret) { - dev_info(&pf->pdev->dev, - "Filter command send failed for PCTYPE %d (ret = %d)\n", - fd_data->pctype, ret); - err = true; - } else { - dev_info(&pf->pdev->dev, - "Filter OK for PCTYPE %d (ret = %d)\n", - fd_data->pctype, ret); - } - } - - return err ? -EOPNOTSUPP : 0; + i40e_fdir_check_and_reenable(pf); + return ret; } /** - * i40e_add_del_fdir_ethtool - Add/Remove Flow Director filters for - * a specific flow spec based on their protocol + * i40e_add_fdir_ethtool - Add/Remove Flow Director filters * @vsi: pointer to the targeted VSI * @cmd: command to get or set RX flow classification rules - * @add: true adds a filter, false removes it * - * Returns 0 if the filters were successfully added or removed + * Add Flow Director filters for a specific flow spec based on their + * protocol. Returns 0 if the filters were successfully added. **/ -static int i40e_add_del_fdir_ethtool(struct i40e_vsi *vsi, - struct ethtool_rxnfc *cmd, bool add) +static int i40e_add_fdir_ethtool(struct i40e_vsi *vsi, + struct ethtool_rxnfc *cmd) { - struct i40e_fdir_data fd_data; - int ret = -EINVAL; + struct ethtool_rx_flow_spec *fsp; + struct i40e_fdir_filter *input; struct i40e_pf *pf; - struct ethtool_rx_flow_spec *fsp = - (struct ethtool_rx_flow_spec *)&cmd->fs; + int ret = -EINVAL; if (!vsi) return -EINVAL; pf = vsi->back; - if ((fsp->ring_cookie != RX_CLS_FLOW_DISC) && - (fsp->ring_cookie >= vsi->num_queue_pairs)) + if (!(pf->flags & I40E_FLAG_FD_SB_ENABLED)) + return -EOPNOTSUPP; + + if (pf->auto_disable_flags & I40E_FLAG_FD_SB_ENABLED) + return -ENOSPC; + + fsp = (struct ethtool_rx_flow_spec *)&cmd->fs; + + if (fsp->location >= (pf->hw.func_caps.fd_filters_best_effort + + pf->hw.func_caps.fd_filters_guaranteed)) { + return -EINVAL; + } + + if (fsp->ring_cookie >= vsi->num_queue_pairs) return -EINVAL; - /* Populate the Flow Director that we have at the moment - * and allocate the raw packet buffer for the calling functions - */ - fd_data.raw_packet = kzalloc(I40E_FDIR_MAX_RAW_PACKET_LOOKUP, - GFP_KERNEL); + input = kzalloc(sizeof(*input), GFP_KERNEL); - if (!fd_data.raw_packet) { - dev_info(&pf->pdev->dev, "Could not allocate memory\n"); + if (!input) return -ENOMEM; - } - fd_data.q_index = fsp->ring_cookie; - fd_data.flex_off = 0; - fd_data.pctype = 0; - fd_data.dest_vsi = vsi->id; - fd_data.dest_ctl = 0; - fd_data.fd_status = 0; - fd_data.cnt_index = 0; - fd_data.fd_id = 0; + input->fd_id = fsp->location; - switch (fsp->flow_type & ~FLOW_EXT) { - case TCP_V4_FLOW: - ret = i40e_add_del_fdir_tcpv4(vsi, &fd_data, fsp, add); - break; - case UDP_V4_FLOW: - ret = i40e_add_del_fdir_udpv4(vsi, &fd_data, fsp, add); - break; - case SCTP_V4_FLOW: - ret = i40e_add_del_fdir_sctpv4(vsi, &fd_data, fsp, add); - break; - case IPV4_FLOW: - ret = i40e_add_del_fdir_ipv4(vsi, &fd_data, fsp, add); - break; - case IP_USER_FLOW: - switch (fsp->h_u.usr_ip4_spec.proto) { - case IPPROTO_TCP: - ret = i40e_add_del_fdir_tcpv4(vsi, &fd_data, fsp, add); - break; - case IPPROTO_UDP: - ret = i40e_add_del_fdir_udpv4(vsi, &fd_data, fsp, add); - break; - case IPPROTO_SCTP: - ret = i40e_add_del_fdir_sctpv4(vsi, &fd_data, fsp, add); - break; - default: - ret = i40e_add_del_fdir_ipv4(vsi, &fd_data, fsp, add); - break; - } - break; - default: - dev_info(&pf->pdev->dev, "Could not specify spec type\n"); - ret = -EINVAL; - } + if (fsp->ring_cookie == RX_CLS_FLOW_DISC) + input->dest_ctl = I40E_FILTER_PROGRAM_DESC_DEST_DROP_PACKET; + else + input->dest_ctl = + I40E_FILTER_PROGRAM_DESC_DEST_DIRECT_PACKET_QINDEX; - kfree(fd_data.raw_packet); - fd_data.raw_packet = NULL; + input->q_index = fsp->ring_cookie; + input->flex_off = 0; + input->pctype = 0; + input->dest_vsi = vsi->id; + input->fd_status = I40E_FILTER_PROGRAM_DESC_FD_STATUS_FD_ID; + input->cnt_index = 0; + input->flow_type = fsp->flow_type; + input->ip4_proto = fsp->h_u.usr_ip4_spec.proto; + input->src_port = fsp->h_u.tcp_ip4_spec.psrc; + input->dst_port = fsp->h_u.tcp_ip4_spec.pdst; + input->src_ip[0] = fsp->h_u.tcp_ip4_spec.ip4src; + input->dst_ip[0] = fsp->h_u.tcp_ip4_spec.ip4dst; + + ret = i40e_add_del_fdir(vsi, input, true); + if (ret) + kfree(input); + else + i40e_update_ethtool_fdir_entry(vsi, input, fsp->location, NULL); return ret; } + /** * i40e_set_rxnfc - command to set RX flow classification rules * @netdev: network interface device structure @@ -1419,10 +1560,10 @@ ret = i40e_set_rss_hash_opt(pf, cmd); break; case ETHTOOL_SRXCLSRLINS: - ret = i40e_add_del_fdir_ethtool(vsi, cmd, true); + ret = i40e_add_fdir_ethtool(vsi, cmd); break; case ETHTOOL_SRXCLSRLDEL: - ret = i40e_add_del_fdir_ethtool(vsi, cmd, false); + ret = i40e_del_fdir_entry(vsi, cmd); break; default: break; @@ -1431,6 +1572,94 @@ return ret; } +/** + * i40e_max_channels - get Max number of combined channels supported + * @vsi: vsi pointer + **/ +static unsigned int i40e_max_channels(struct i40e_vsi *vsi) +{ + /* TODO: This code assumes DCB and FD is disabled for now. */ + return vsi->alloc_queue_pairs; +} + +/** + * i40e_get_channels - Get the current channels enabled and max supported etc. + * @netdev: network interface device structure + * @ch: ethtool channels structure + * + * We don't support separate tx and rx queues as channels. The other count + * represents how many queues are being used for control. max_combined counts + * how many queue pairs we can support. They may not be mapped 1 to 1 with + * q_vectors since we support a lot more queue pairs than q_vectors. + **/ +static void i40e_get_channels(struct net_device *dev, + struct ethtool_channels *ch) +{ + struct i40e_netdev_priv *np = netdev_priv(dev); + struct i40e_vsi *vsi = np->vsi; + struct i40e_pf *pf = vsi->back; + + /* report maximum channels */ + ch->max_combined = i40e_max_channels(vsi); + + /* report info for other vector */ + ch->other_count = (pf->flags & I40E_FLAG_FD_SB_ENABLED) ? 1 : 0; + ch->max_other = ch->other_count; + + /* Note: This code assumes DCB is disabled for now. */ + ch->combined_count = vsi->num_queue_pairs; +} + +/** + * i40e_set_channels - Set the new channels count. + * @netdev: network interface device structure + * @ch: ethtool channels structure + * + * The new channels count may not be the same as requested by the user + * since it gets rounded down to a power of 2 value. + **/ +static int i40e_set_channels(struct net_device *dev, + struct ethtool_channels *ch) +{ + struct i40e_netdev_priv *np = netdev_priv(dev); + unsigned int count = ch->combined_count; + struct i40e_vsi *vsi = np->vsi; + struct i40e_pf *pf = vsi->back; + int new_count; + + /* We do not support setting channels for any other VSI at present */ + if (vsi->type != I40E_VSI_MAIN) + return -EINVAL; + + /* verify they are not requesting separate vectors */ + if (!count || ch->rx_count || ch->tx_count) + return -EINVAL; + + /* verify other_count has not changed */ + if (ch->other_count != ((pf->flags & I40E_FLAG_FD_SB_ENABLED) ? 1 : 0)) + return -EINVAL; + + /* verify the number of channels does not exceed hardware limits */ + if (count > i40e_max_channels(vsi)) + return -EINVAL; + + /* update feature limits from largest to smallest supported values */ + /* TODO: Flow director limit, DCB etc */ + + /* cap RSS limit */ + if (count > pf->rss_size_max) + count = pf->rss_size_max; + + /* use rss_reconfig to rebuild with new queue count and update traffic + * class queue mapping + */ + new_count = i40e_reconfig_rss_queues(pf, count); + if (new_count > 0) + return 0; + else + return -EINVAL; +} + static const struct ethtool_ops i40e_ethtool_ops = { .get_settings = i40e_get_settings, .get_drvinfo = i40e_get_drvinfo, @@ -1439,6 +1668,7 @@ .nway_reset = i40e_nway_reset, .get_link = ethtool_op_get_link, .get_wol = i40e_get_wol, + .set_wol = i40e_set_wol, .get_eeprom_len = i40e_get_eeprom_len, .get_eeprom = i40e_get_eeprom, .get_ringparam = i40e_get_ringparam, @@ -1455,6 +1685,8 @@ .get_ethtool_stats = i40e_get_ethtool_stats, .get_coalesce = i40e_get_coalesce, .set_coalesce = i40e_set_coalesce, + .get_channels = i40e_get_channels, + .set_channels = i40e_set_channels, .get_ts_info = i40e_get_ts_info, }; --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40e/i40e_hmc.c +++ linux-3.13.0/drivers/net/ethernet/intel/i40e/i40e_hmc.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Intel Ethernet Controller XL710 Family Linux Driver - * Copyright(c) 2013 Intel Corporation. + * Copyright(c) 2013 - 2014 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, @@ -12,9 +12,8 @@ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * - * You should have 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. + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . * * The full GNU General Public License is included in this distribution in * the file called "COPYING". @@ -47,10 +46,10 @@ u64 direct_mode_sz) { enum i40e_memory_type mem_type __attribute__((unused)); - i40e_status ret_code = 0; struct i40e_hmc_sd_entry *sd_entry; bool dma_mem_alloc_done = false; struct i40e_dma_mem mem; + i40e_status ret_code; u64 alloc_len; if (NULL == hmc_info->sd_table.sd_entry) { @@ -90,11 +89,9 @@ sd_entry->u.pd_table.pd_entry = (struct i40e_hmc_pd_entry *) sd_entry->u.pd_table.pd_entry_virt_mem.va; - memcpy(&sd_entry->u.pd_table.pd_page_addr, &mem, - sizeof(struct i40e_dma_mem)); + sd_entry->u.pd_table.pd_page_addr = mem; } else { - memcpy(&sd_entry->u.bp.addr, &mem, - sizeof(struct i40e_dma_mem)); + sd_entry->u.bp.addr = mem; sd_entry->u.bp.sd_pd_index = sd_index; } /* initialize the sd entry */ @@ -165,7 +162,7 @@ if (ret_code) goto exit; - memcpy(&pd_entry->bp.addr, &mem, sizeof(struct i40e_dma_mem)); + pd_entry->bp.addr = mem; pd_entry->bp.sd_pd_index = pd_index; pd_entry->bp.entry_type = I40E_SD_TYPE_PAGED; /* Set page address and valid bit */ --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40e/i40e_hmc.h +++ linux-3.13.0/drivers/net/ethernet/intel/i40e/i40e_hmc.h @@ -1,7 +1,7 @@ /******************************************************************************* * * Intel Ethernet Controller XL710 Family Linux Driver - * Copyright(c) 2013 Intel Corporation. + * Copyright(c) 2013 - 2014 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, @@ -12,9 +12,8 @@ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * - * You should have 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. + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . * * The full GNU General Public License is included in this distribution in * the file called "COPYING". @@ -117,7 +116,6 @@ * @hw: pointer to our hw struct * @pa: pointer to physical address * @sd_index: segment descriptor index - * @hmc_fn_id: hmc function id * @type: if sd entry is direct or paged **/ #define I40E_SET_PF_SD_ENTRY(hw, pa, sd_index, type) \ @@ -139,7 +137,6 @@ * I40E_CLEAR_PF_SD_ENTRY - marks the sd entry as invalid in the hardware * @hw: pointer to our hw struct * @sd_index: segment descriptor index - * @hmc_fn_id: hmc function id * @type: if sd entry is direct or paged **/ #define I40E_CLEAR_PF_SD_ENTRY(hw, sd_index, type) \ @@ -160,7 +157,6 @@ * @hw: pointer to our hw struct * @sd_idx: segment descriptor index * @pd_idx: page descriptor index - * @hmc_fn_id: hmc function id **/ #define I40E_INVALIDATE_PF_HMC_PD(hw, sd_idx, pd_idx) \ wr32((hw), I40E_PFHMC_PDINV, \ --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40e/i40e_lan_hmc.c +++ linux-3.13.0/drivers/net/ethernet/intel/i40e/i40e_lan_hmc.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Intel Ethernet Controller XL710 Family Linux Driver - * Copyright(c) 2013 Intel Corporation. + * Copyright(c) 2013 - 2014 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, @@ -12,9 +12,8 @@ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * - * You should have 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. + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . * * The full GNU General Public License is included in this distribution in * the file called "COPYING". @@ -486,8 +485,7 @@ /* Make one big object, a single SD */ info.count = 1; ret_code = i40e_create_lan_hmc_object(hw, &info); - if ((ret_code) && - (model == I40E_HMC_MODEL_DIRECT_PREFERRED)) + if (ret_code && (model == I40E_HMC_MODEL_DIRECT_PREFERRED)) goto try_type_paged; else if (ret_code) goto configure_lan_hmc_out; --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40e/i40e_lan_hmc.h +++ linux-3.13.0/drivers/net/ethernet/intel/i40e/i40e_lan_hmc.h @@ -1,7 +1,7 @@ /******************************************************************************* * * Intel Ethernet Controller XL710 Family Linux Driver - * Copyright(c) 2013 Intel Corporation. + * Copyright(c) 2013 - 2014 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, @@ -12,9 +12,8 @@ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * - * You should have 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. + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . * * The full GNU General Public License is included in this distribution in * the file called "COPYING". @@ -113,8 +112,8 @@ #define I40E_HMC_L2OBJ_BASE_ALIGNMENT 512 #define I40E_HMC_OBJ_SIZE_TXQ 128 #define I40E_HMC_OBJ_SIZE_RXQ 32 -#define I40E_HMC_OBJ_SIZE_FCOE_CNTX 128 -#define I40E_HMC_OBJ_SIZE_FCOE_FILT 32 +#define I40E_HMC_OBJ_SIZE_FCOE_CNTX 64 +#define I40E_HMC_OBJ_SIZE_FCOE_FILT 64 enum i40e_hmc_lan_rsrc_type { I40E_HMC_LAN_FULL = 0, --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40e/i40e_main.c +++ linux-3.13.0/drivers/net/ethernet/intel/i40e/i40e_main.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Intel Ethernet Controller XL710 Family Linux Driver - * Copyright(c) 2013 Intel Corporation. + * Copyright(c) 2013 - 2014 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, @@ -12,9 +12,8 @@ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * - * You should have 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. + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . * * The full GNU General Public License is included in this distribution in * the file called "COPYING". @@ -27,6 +26,10 @@ /* Local includes */ #include "i40e.h" +#include "i40e_diag.h" +#ifdef CONFIG_I40E_VXLAN +#include +#endif const char i40e_driver_name[] = "i40e"; static const char i40e_driver_string[] = @@ -36,22 +39,24 @@ #define DRV_VERSION_MAJOR 0 #define DRV_VERSION_MINOR 3 -#define DRV_VERSION_BUILD 11 +#define DRV_VERSION_BUILD 36 #define DRV_VERSION __stringify(DRV_VERSION_MAJOR) "." \ __stringify(DRV_VERSION_MINOR) "." \ __stringify(DRV_VERSION_BUILD) DRV_KERN const char i40e_driver_version_str[] = DRV_VERSION; -static const char i40e_copyright[] = "Copyright (c) 2013 Intel Corporation."; +static const char i40e_copyright[] = "Copyright (c) 2013 - 2014 Intel Corporation."; /* a bit of forward declarations */ static void i40e_vsi_reinit_locked(struct i40e_vsi *vsi); static void i40e_handle_reset_warning(struct i40e_pf *pf); static int i40e_add_vsi(struct i40e_vsi *vsi); static int i40e_add_veb(struct i40e_veb *veb, struct i40e_vsi *vsi); -static int i40e_setup_pf_switch(struct i40e_pf *pf); +static int i40e_setup_pf_switch(struct i40e_pf *pf, bool reinit); static int i40e_setup_misc_vector(struct i40e_pf *pf); static void i40e_determine_queue_usage(struct i40e_pf *pf); static int i40e_setup_pf_filter_control(struct i40e_pf *pf); +static void i40e_fdir_sb_setup(struct i40e_pf *pf); +static int i40e_veb_get_bw_info(struct i40e_veb *veb); /* i40e_pci_tbl - PCI Device ID Table * @@ -61,16 +66,16 @@ * Class, Class Mask, private data (not used) } */ static DEFINE_PCI_DEVICE_TABLE(i40e_pci_tbl) = { - {PCI_VDEVICE(INTEL, I40E_SFP_XL710_DEVICE_ID), 0}, - {PCI_VDEVICE(INTEL, I40E_SFP_X710_DEVICE_ID), 0}, - {PCI_VDEVICE(INTEL, I40E_QEMU_DEVICE_ID), 0}, - {PCI_VDEVICE(INTEL, I40E_KX_A_DEVICE_ID), 0}, - {PCI_VDEVICE(INTEL, I40E_KX_B_DEVICE_ID), 0}, - {PCI_VDEVICE(INTEL, I40E_KX_C_DEVICE_ID), 0}, - {PCI_VDEVICE(INTEL, I40E_KX_D_DEVICE_ID), 0}, - {PCI_VDEVICE(INTEL, I40E_QSFP_A_DEVICE_ID), 0}, - {PCI_VDEVICE(INTEL, I40E_QSFP_B_DEVICE_ID), 0}, - {PCI_VDEVICE(INTEL, I40E_QSFP_C_DEVICE_ID), 0}, + {PCI_VDEVICE(INTEL, I40E_DEV_ID_SFP_XL710), 0}, + {PCI_VDEVICE(INTEL, I40E_DEV_ID_SFP_X710), 0}, + {PCI_VDEVICE(INTEL, I40E_DEV_ID_QEMU), 0}, + {PCI_VDEVICE(INTEL, I40E_DEV_ID_KX_A), 0}, + {PCI_VDEVICE(INTEL, I40E_DEV_ID_KX_B), 0}, + {PCI_VDEVICE(INTEL, I40E_DEV_ID_KX_C), 0}, + {PCI_VDEVICE(INTEL, I40E_DEV_ID_KX_D), 0}, + {PCI_VDEVICE(INTEL, I40E_DEV_ID_QSFP_A), 0}, + {PCI_VDEVICE(INTEL, I40E_DEV_ID_QSFP_B), 0}, + {PCI_VDEVICE(INTEL, I40E_DEV_ID_QSFP_C), 0}, /* required last entry */ {0, } }; @@ -301,6 +306,7 @@ break; default: netdev_err(netdev, "tx_timeout recovery unsuccessful\n"); + set_bit(__I40E_DOWN, &vsi->state); i40e_down(vsi); break; } @@ -354,7 +360,7 @@ struct rtnl_link_stats64 *vsi_stats = i40e_get_vsi_stats_struct(vsi); int i; - if (!vsi->tx_rings) + if (test_bit(__I40E_DOWN, &vsi->state)) return stats; rcu_read_lock(); @@ -368,20 +374,20 @@ continue; do { - start = u64_stats_fetch_begin_bh(&tx_ring->syncp); + start = u64_stats_fetch_begin_irq(&tx_ring->syncp); packets = tx_ring->stats.packets; bytes = tx_ring->stats.bytes; - } while (u64_stats_fetch_retry_bh(&tx_ring->syncp, start)); + } while (u64_stats_fetch_retry_irq(&tx_ring->syncp, start)); stats->tx_packets += packets; stats->tx_bytes += bytes; rx_ring = &tx_ring[1]; do { - start = u64_stats_fetch_begin_bh(&rx_ring->syncp); + start = u64_stats_fetch_begin_irq(&rx_ring->syncp); packets = rx_ring->stats.packets; bytes = rx_ring->stats.bytes; - } while (u64_stats_fetch_retry_bh(&rx_ring->syncp, start)); + } while (u64_stats_fetch_retry_irq(&rx_ring->syncp, start)); stats->rx_packets += packets; stats->rx_bytes += bytes; @@ -416,7 +422,7 @@ memset(&vsi->net_stats_offsets, 0, sizeof(vsi->net_stats_offsets)); memset(&vsi->eth_stats, 0, sizeof(vsi->eth_stats)); memset(&vsi->eth_stats_offsets, 0, sizeof(vsi->eth_stats_offsets)); - if (vsi->rx_rings) + if (vsi->rx_rings && vsi->rx_rings[0]) { for (i = 0; i < vsi->num_queue_pairs; i++) { memset(&vsi->rx_rings[i]->stats, 0 , sizeof(vsi->rx_rings[i]->stats)); @@ -427,6 +433,7 @@ memset(&vsi->tx_rings[i]->tx_stats, 0, sizeof(vsi->tx_rings[i]->tx_stats)); } + } vsi->stat_offsets_loaded = false; } @@ -461,7 +468,7 @@ { u64 new_data; - if (hw->device_id == I40E_QEMU_DEVICE_ID) { + if (hw->device_id == I40E_DEV_ID_QEMU) { new_data = rd32(hw, loreg); new_data |= ((u64)(rd32(hw, hireg) & 0xFFFF)) << 32; } else { @@ -577,10 +584,11 @@ i40e_stat_update32(hw, I40E_GLSW_TDPC(idx), veb->stat_offsets_loaded, &oes->tx_discards, &es->tx_discards); - i40e_stat_update32(hw, I40E_GLSW_RUPP(idx), - veb->stat_offsets_loaded, - &oes->rx_unknown_protocol, &es->rx_unknown_protocol); - + if (hw->revision_id > 0) + i40e_stat_update32(hw, I40E_GLSW_RUPP(idx), + veb->stat_offsets_loaded, + &oes->rx_unknown_protocol, + &es->rx_unknown_protocol); i40e_stat_update48(hw, I40E_GLSW_GORCH(idx), I40E_GLSW_GORCL(idx), veb->stat_offsets_loaded, &oes->rx_bytes, &es->rx_bytes); @@ -730,6 +738,7 @@ u32 rx_page, rx_buf; u64 rx_p, rx_b; u64 tx_p, tx_b; + u32 val; int i; u16 q; @@ -760,10 +769,10 @@ p = ACCESS_ONCE(vsi->tx_rings[q]); do { - start = u64_stats_fetch_begin_bh(&p->syncp); + start = u64_stats_fetch_begin_irq(&p->syncp); packets = p->stats.packets; bytes = p->stats.bytes; - } while (u64_stats_fetch_retry_bh(&p->syncp, start)); + } while (u64_stats_fetch_retry_irq(&p->syncp, start)); tx_b += bytes; tx_p += packets; tx_restart += p->tx_stats.restart_queue; @@ -772,14 +781,14 @@ /* Rx queue is part of the same block as Tx queue */ p = &p[1]; do { - start = u64_stats_fetch_begin_bh(&p->syncp); + start = u64_stats_fetch_begin_irq(&p->syncp); packets = p->stats.packets; bytes = p->stats.bytes; - } while (u64_stats_fetch_retry_bh(&p->syncp, start)); + } while (u64_stats_fetch_retry_irq(&p->syncp, start)); rx_b += bytes; rx_p += packets; - rx_buf += p->rx_stats.alloc_rx_buff_failed; - rx_page += p->rx_stats.alloc_rx_page_failed; + rx_buf += p->rx_stats.alloc_buff_failed; + rx_page += p->rx_stats.alloc_page_failed; } rcu_read_unlock(); vsi->tx_restart = tx_restart; @@ -962,6 +971,20 @@ i40e_stat_update32(hw, I40E_GLPRT_RJC(hw->port), pf->stat_offsets_loaded, &osd->rx_jabber, &nsd->rx_jabber); + + val = rd32(hw, I40E_PRTPM_EEE_STAT); + nsd->tx_lpi_status = + (val & I40E_PRTPM_EEE_STAT_TX_LPI_STATUS_MASK) >> + I40E_PRTPM_EEE_STAT_TX_LPI_STATUS_SHIFT; + nsd->rx_lpi_status = + (val & I40E_PRTPM_EEE_STAT_RX_LPI_STATUS_MASK) >> + I40E_PRTPM_EEE_STAT_RX_LPI_STATUS_SHIFT; + i40e_stat_update32(hw, I40E_PRTPM_TLPIC, + pf->stat_offsets_loaded, + &osd->tx_lpi_count, &nsd->tx_lpi_count); + i40e_stat_update32(hw, I40E_PRTPM_RLPIC, + pf->stat_offsets_loaded, + &osd->rx_lpi_count, &nsd->rx_lpi_count); } pf->stat_offsets_loaded = true; @@ -1065,7 +1088,7 @@ if (!i40e_find_filter(vsi, macaddr, f->vlan, is_vf, is_netdev)) { if (!i40e_add_filter(vsi, macaddr, f->vlan, - is_vf, is_netdev)) + is_vf, is_netdev)) return NULL; } } @@ -1207,6 +1230,10 @@ if (ether_addr_equal(netdev->dev_addr, addr->sa_data)) return 0; + if (test_bit(__I40E_DOWN, &vsi->back->state) || + test_bit(__I40E_RESET_RECOVERY_PENDING, &vsi->back->state)) + return -EADDRNOTAVAIL; + if (vsi->type == I40E_VSI_MAIN) { i40e_status ret; ret = i40e_aq_mac_address_write(&vsi->back->hw, @@ -1260,6 +1287,7 @@ u8 offset; u16 qmap; int i; + u16 num_tc_qps = 0; sections = I40E_AQ_VSI_PROP_QUEUE_MAP_VALID; offset = 0; @@ -1281,6 +1309,9 @@ vsi->tc_config.numtc = numtc; vsi->tc_config.enabled_tc = enabled_tc ? enabled_tc : 1; + /* Number of queues per enabled TC */ + num_tc_qps = rounddown_pow_of_two(vsi->alloc_queue_pairs/numtc); + num_tc_qps = min_t(int, num_tc_qps, I40E_MAX_QUEUES_PER_TC); /* Setup queue offset/count for all TCs for given VSI */ for (i = 0; i < I40E_MAX_TRAFFIC_CLASS; i++) { @@ -1288,30 +1319,25 @@ if (vsi->tc_config.enabled_tc & (1 << i)) { /* TC is enabled */ int pow, num_qps; - vsi->tc_config.tc_info[i].qoffset = offset; switch (vsi->type) { case I40E_VSI_MAIN: - if (i == 0) - qcount = pf->rss_size; - else - qcount = pf->num_tc_qps; - vsi->tc_config.tc_info[i].qcount = qcount; + qcount = min_t(int, pf->rss_size, num_tc_qps); break; case I40E_VSI_FDIR: case I40E_VSI_SRIOV: case I40E_VSI_VMDQ2: default: - qcount = vsi->alloc_queue_pairs; - vsi->tc_config.tc_info[i].qcount = qcount; + qcount = num_tc_qps; WARN_ON(i != 0); break; } + vsi->tc_config.tc_info[i].qoffset = offset; + vsi->tc_config.tc_info[i].qcount = qcount; /* find the power-of-2 of the number of queue pairs */ - num_qps = vsi->tc_config.tc_info[i].qcount; + num_qps = qcount; pow = 0; - while (num_qps && - ((1 << pow) < vsi->tc_config.tc_info[i].qcount)) { + while (num_qps && ((1 << pow) < qcount)) { pow++; num_qps >>= 1; } @@ -1321,7 +1347,7 @@ (offset << I40E_AQ_VSI_TC_QUE_OFFSET_SHIFT) | (pow << I40E_AQ_VSI_TC_QUE_NUMBER_SHIFT); - offset += vsi->tc_config.tc_info[i].qcount; + offset += qcount; } else { /* TC is not enabled so set the offset to * default queue and allocate one queue @@ -1497,11 +1523,6 @@ cpu_to_le16((u16)(f->vlan == I40E_VLAN_ANY ? 0 : f->vlan)); - /* vlan0 as wild card to allow packets from all vlans */ - if (f->vlan == I40E_VLAN_ANY || - (vsi->netdev && !(vsi->netdev->features & - NETIF_F_HW_VLAN_CTAG_FILTER))) - cmd_flags |= I40E_AQC_MACVLAN_DEL_IGNORE_VLAN; cmd_flags |= I40E_AQC_MACVLAN_DEL_PERFECT_MATCH; del_list[num_del].flags = cmd_flags; num_del++; @@ -1567,12 +1588,6 @@ add_list[num_add].queue_number = 0; cmd_flags |= I40E_AQC_MACVLAN_ADD_PERFECT_MATCH; - - /* vlan0 as wild card to allow packets from all vlans */ - if (f->vlan == I40E_VLAN_ANY || (vsi->netdev && - !(vsi->netdev->features & - NETIF_F_HW_VLAN_CTAG_FILTER))) - cmd_flags |= I40E_AQC_MACVLAN_ADD_IGNORE_VLAN; add_list[num_add].flags = cpu_to_le16(cmd_flags); num_add++; @@ -1638,6 +1653,13 @@ dev_info(&pf->pdev->dev, "set uni promisc failed, err %d, aq_err %d\n", aq_ret, pf->hw.aq.asq_last_status); + aq_ret = i40e_aq_set_vsi_broadcast(&vsi->back->hw, + vsi->seid, + cur_promisc, NULL); + if (aq_ret) + dev_info(&pf->pdev->dev, + "set brdcast promisc failed, err %d, aq_err %d\n", + aq_ret, pf->hw.aq.asq_last_status); } clear_bit(__I40E_CONFIG_BUSY, &vsi->state); @@ -1690,6 +1712,27 @@ } /** + * i40e_ioctl - Access the hwtstamp interface + * @netdev: network interface device structure + * @ifr: interface request data + * @cmd: ioctl command + **/ +int i40e_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd) +{ + struct i40e_netdev_priv *np = netdev_priv(netdev); + struct i40e_pf *pf = np->vsi->back; + + switch (cmd) { + case SIOCGHWTSTAMP: + return i40e_ptp_get_ts_config(pf, ifr); + case SIOCSHWTSTAMP: + return i40e_ptp_set_ts_config(pf, ifr); + default: + return -EOPNOTSUPP; + } +} + +/** * i40e_vlan_stripping_enable - Turn on vlan stripping for the VSI * @vsi: the vsi being adjusted **/ @@ -1771,7 +1814,6 @@ { struct i40e_mac_filter *f, *add_f; bool is_netdev, is_vf; - int ret; is_vf = (vsi->type == I40E_VSI_SRIOV); is_netdev = !!(vsi->netdev); @@ -1797,13 +1839,6 @@ } } - ret = i40e_sync_vsi_filters(vsi); - if (ret) { - dev_info(&vsi->back->pdev->dev, - "Could not sync filters for vid %d\n", vid); - return ret; - } - /* Now if we add a vlan tag, make sure to check if it is the first * tag (i.e. a "tag" -1 does exist) and if so replace the -1 "tag" * with 0, so we now accept untagged and specified tagged traffic @@ -1824,7 +1859,10 @@ return -ENOMEM; } } + } + /* Do not assume that I40E_VLAN_ANY should be reset to VLAN 0 */ + if (vid > 0 && !vsi->info.pvid) { list_for_each_entry(f, &vsi->mac_filter_list, list) { if (i40e_find_filter(vsi, f->macaddr, I40E_VLAN_ANY, is_vf, is_netdev)) { @@ -1840,10 +1878,13 @@ } } } - ret = i40e_sync_vsi_filters(vsi); } - return ret; + if (test_bit(__I40E_DOWN, &vsi->back->state) || + test_bit(__I40E_RESET_RECOVERY_PENDING, &vsi->back->state)) + return 0; + + return i40e_sync_vsi_filters(vsi); } /** @@ -1859,7 +1900,6 @@ struct i40e_mac_filter *f, *add_f; bool is_vf, is_netdev; int filter_count = 0; - int ret; is_vf = (vsi->type == I40E_VSI_SRIOV); is_netdev = !!(netdev); @@ -1870,12 +1910,6 @@ list_for_each_entry(f, &vsi->mac_filter_list, list) i40e_del_filter(vsi, f->macaddr, vid, is_vf, is_netdev); - ret = i40e_sync_vsi_filters(vsi); - if (ret) { - dev_info(&vsi->back->pdev->dev, "Could not sync filters\n"); - return ret; - } - /* go through all the filters for this VSI and if there is only * vid == 0 it means there are no other filters, so vid 0 must * be replaced with -1. This signifies that we should from now @@ -1918,6 +1952,10 @@ } } + if (test_bit(__I40E_DOWN, &vsi->back->state) || + test_bit(__I40E_RESET_RECOVERY_PENDING, &vsi->back->state)) + return 0; + return i40e_sync_vsi_filters(vsi); } @@ -1940,11 +1978,14 @@ netdev_info(netdev, "adding %pM vid=%d\n", netdev->dev_addr, vid); - /* If the network stack called us with vid = 0, we should - * indicate to i40e_vsi_add_vlan() that we want to receive - * any traffic (i.e. with any vlan tag, or untagged) + /* If the network stack called us with vid = 0 then + * it is asking to receive priority tagged packets with + * vlan id 0. Our HW receives them by default when configured + * to receive untagged packets so there is no need to add an + * extra filter for vlan 0 tagged packets. */ - ret = i40e_vsi_add_vlan(vsi, vid ? vid : I40E_VLAN_ANY); + if (vid) + ret = i40e_vsi_add_vlan(vsi, vid); if (!ret && (vid < VLAN_N_VID)) set_bit(vid, vsi->active_vlans); @@ -1957,7 +1998,7 @@ * @netdev: network interface to be adjusted * @vid: vlan id to be removed * - * net_device_ops implementation for adding vlan ids + * net_device_ops implementation for removing vlan ids **/ static int i40e_vlan_rx_kill_vid(struct net_device *netdev, __always_unused __be16 proto, u16 vid) @@ -2008,8 +2049,9 @@ vsi->info.valid_sections = cpu_to_le16(I40E_AQ_VSI_PROP_VLAN_VALID); vsi->info.pvid = cpu_to_le16(vid); - vsi->info.port_vlan_flags |= I40E_AQ_VSI_PVLAN_INSERT_PVID; - vsi->info.port_vlan_flags |= I40E_AQ_VSI_PVLAN_MODE_UNTAGGED; + vsi->info.port_vlan_flags = I40E_AQ_VSI_PVLAN_MODE_TAGGED | + I40E_AQ_VSI_PVLAN_INSERT_PVID | + I40E_AQ_VSI_PVLAN_EMOD_STR; ctxt.seid = vsi->seid; memcpy(&ctxt.info, &vsi->info, sizeof(vsi->info)); @@ -2032,8 +2074,9 @@ **/ void i40e_vsi_remove_pvid(struct i40e_vsi *vsi) { + i40e_vlan_stripping_disable(vsi); + vsi->info.pvid = 0; - i40e_vlan_rx_register(vsi->netdev, vsi->netdev->features); } /** @@ -2066,8 +2109,11 @@ { int i; + if (!vsi->tx_rings) + return; + for (i = 0; i < vsi->num_queue_pairs; i++) - if (vsi->tx_rings[i]->desc) + if (vsi->tx_rings[i] && vsi->tx_rings[i]->desc) i40e_free_tx_resources(vsi->tx_rings[i]); } @@ -2100,8 +2146,11 @@ { int i; + if (!vsi->rx_rings) + return; + for (i = 0; i < vsi->num_queue_pairs; i++) - if (vsi->rx_rings[i]->desc) + if (vsi->rx_rings[i] && vsi->rx_rings[i]->desc) i40e_free_rx_resources(vsi->rx_rings[i]); } @@ -2121,7 +2170,7 @@ u32 qtx_ctl = 0; /* some ATR related tx ring init */ - if (vsi->back->flags & I40E_FLAG_FDIR_ATR_ENABLED) { + if (vsi->back->flags & I40E_FLAG_FD_ATR_ENABLED) { ring->atr_sample_rate = vsi->back->atr_sample_rate; ring->atr_count = 0; } else { @@ -2130,6 +2179,7 @@ /* initialize XPS */ if (ring->q_vector && ring->netdev && + vsi->tc_config.numtc <= 1 && !test_and_set_bit(__I40E_TX_XPS_INIT_DONE, &ring->state)) netif_set_xps_queue(ring->netdev, &ring->q_vector->affinity_mask, @@ -2141,8 +2191,14 @@ tx_ctx.new_context = 1; tx_ctx.base = (ring->dma / 128); tx_ctx.qlen = ring->count; - tx_ctx.fd_ena = !!(vsi->back->flags & (I40E_FLAG_FDIR_ENABLED | - I40E_FLAG_FDIR_ATR_ENABLED)); + tx_ctx.fd_ena = !!(vsi->back->flags & (I40E_FLAG_FD_SB_ENABLED | + I40E_FLAG_FD_ATR_ENABLED)); + tx_ctx.timesync_ena = !!(vsi->back->flags & I40E_FLAG_PTP); + /* FDIR VSI tx ring can still use RS bit and writebacks */ + if (vsi->type != I40E_VSI_FDIR) + tx_ctx.head_wb_ena = 1; + tx_ctx.head_wb_addr = ring->dma + + (ring->count * sizeof(struct i40e_tx_desc)); /* As part of VSI creation/update, FW allocates certain * Tx arbitration queue sets for each TC enabled for @@ -2176,7 +2232,10 @@ } /* Now associate this queue with this PCI function */ - qtx_ctl = I40E_QTX_CTL_PF_QUEUE; + if (vsi->type == I40E_VSI_VMDQ2) + qtx_ctl = I40E_QTX_CTL_VM_QUEUE; + else + qtx_ctl = I40E_QTX_CTL_PF_QUEUE; qtx_ctl |= ((hw->pf_id << I40E_QTX_CTL_PF_INDX_SHIFT) & I40E_QTX_CTL_PF_INDX_MASK); wr32(hw, I40E_QTX_CTL(pf_q), qtx_ctl); @@ -2243,7 +2302,10 @@ rx_ctx.tphwdesc_ena = 1; rx_ctx.tphdata_ena = 1; rx_ctx.tphhead_ena = 1; - rx_ctx.lrxqthresh = 2; + if (hw->revision_id == 0) + rx_ctx.lrxqthresh = 0; + else + rx_ctx.lrxqthresh = 2; rx_ctx.crcstrip = 1; rx_ctx.l2tsel = 1; rx_ctx.showiv = 1; @@ -2380,6 +2442,28 @@ } /** + * i40e_fdir_filter_restore - Restore the Sideband Flow Director filters + * @vsi: Pointer to the targeted VSI + * + * This function replays the hlist on the hw where all the SB Flow Director + * filters were saved. + **/ +static void i40e_fdir_filter_restore(struct i40e_vsi *vsi) +{ + struct i40e_fdir_filter *filter; + struct i40e_pf *pf = vsi->back; + struct hlist_node *node; + + if (!(pf->flags & I40E_FLAG_FD_SB_ENABLED)) + return; + + hlist_for_each_entry_safe(filter, node, + &pf->fdir_filter_list, fdir_node) { + i40e_add_del_fdir(vsi, filter, true); + } +} + +/** * i40e_vsi_configure - Set up the VSI for action * @vsi: the VSI being configured **/ @@ -2477,6 +2561,7 @@ I40E_PFINT_ICR0_ENA_GRST_MASK | I40E_PFINT_ICR0_ENA_PCI_EXCEPTION_MASK | I40E_PFINT_ICR0_ENA_GPIO_MASK | + I40E_PFINT_ICR0_ENA_TIMESYNC_MASK | I40E_PFINT_ICR0_ENA_STORM_DETECT_MASK | I40E_PFINT_ICR0_ENA_HMC_ERR_MASK | I40E_PFINT_ICR0_ENA_VFLR_MASK | @@ -2485,8 +2570,8 @@ wr32(hw, I40E_PFINT_ICR0_ENA, val); /* SW_ITR_IDX = 0, but don't change INTENA */ - wr32(hw, I40E_PFINT_DYN_CTL0, I40E_PFINT_DYN_CTLN_SW_ITR_INDX_MASK | - I40E_PFINT_DYN_CTLN_INTENA_MSK_MASK); + wr32(hw, I40E_PFINT_DYN_CTL0, I40E_PFINT_DYN_CTL0_SW_ITR_INDX_MASK | + I40E_PFINT_DYN_CTL0_INTENA_MSK_MASK); /* OTHER_ITR_IDX = 0 */ wr32(hw, I40E_PFINT_STAT_CTL0, 0); @@ -2516,7 +2601,7 @@ /* FIRSTQ_INDX = 0, FIRSTQ_TYPE = 0 (rx) */ wr32(hw, I40E_PFINT_LNKLST0, 0); - /* Associate the queue pair to the vector and enable the q int */ + /* Associate the queue pair to the vector and enable the queue int */ val = I40E_QINT_RQCTL_CAUSE_ENA_MASK | (I40E_RX_ITR << I40E_QINT_RQCTL_ITR_INDX_SHIFT) | (I40E_QUEUE_TYPE_TX << I40E_QINT_TQCTL_NEXTQ_TYPE_SHIFT); @@ -2532,6 +2617,19 @@ } /** + * i40e_irq_dynamic_disable_icr0 - Disable default interrupt generation for icr0 + * @pf: board private structure + **/ +void i40e_irq_dynamic_disable_icr0(struct i40e_pf *pf) +{ + struct i40e_hw *hw = &pf->hw; + + wr32(hw, I40E_PFINT_DYN_CTL0, + I40E_ITR_NONE << I40E_PFINT_DYN_CTLN_ITR_INDX_SHIFT); + i40e_flush(hw); +} + +/** * i40e_irq_dynamic_enable_icr0 - Enable default interrupt generation for icr0 * @pf: board private structure **/ @@ -2584,23 +2682,6 @@ } /** - * i40e_fdir_clean_rings - Interrupt Handler for FDIR rings - * @irq: interrupt number - * @data: pointer to a q_vector - **/ -static irqreturn_t i40e_fdir_clean_rings(int irq, void *data) -{ - struct i40e_q_vector *q_vector = data; - - if (!q_vector->tx.ring && !q_vector->rx.ring) - return IRQ_HANDLED; - - pr_info("fdir ring cleaning needed\n"); - - return IRQ_HANDLED; -} - -/** * i40e_vsi_request_irq_msix - Initialize MSI-X interrupts * @vsi: the VSI being configured * @basename: name for the vector @@ -2740,20 +2821,21 @@ { struct i40e_pf *pf = (struct i40e_pf *)data; struct i40e_hw *hw = &pf->hw; + irqreturn_t ret = IRQ_NONE; u32 icr0, icr0_remaining; u32 val, ena_mask; icr0 = rd32(hw, I40E_PFINT_ICR0); - - val = rd32(hw, I40E_PFINT_DYN_CTL0); - val = val | I40E_PFINT_DYN_CTL0_CLEARPBA_MASK; - wr32(hw, I40E_PFINT_DYN_CTL0, val); + ena_mask = rd32(hw, I40E_PFINT_ICR0_ENA); /* if sharing a legacy IRQ, we might get called w/o an intr pending */ if ((icr0 & I40E_PFINT_ICR0_INTEVENT_MASK) == 0) - return IRQ_NONE; + goto enable_intr; - ena_mask = rd32(hw, I40E_PFINT_ICR0_ENA); + /* if interrupt but no bits showing, must be SWINT */ + if (((icr0 & ~I40E_PFINT_ICR0_INTEVENT_MASK) == 0) || + (icr0 & I40E_PFINT_ICR0_SWINT_MASK)) + pf->sw_int_count++; /* only q0 is used in MSI/Legacy mode, and none are used in MSIX */ if (icr0 & I40E_PFINT_ICR0_QUEUE_0_MASK) { @@ -2793,12 +2875,28 @@ val = rd32(hw, I40E_GLGEN_RSTAT); val = (val & I40E_GLGEN_RSTAT_RESET_TYPE_MASK) >> I40E_GLGEN_RSTAT_RESET_TYPE_SHIFT; - if (val & I40E_RESET_CORER) + if (val == I40E_RESET_CORER) { pf->corer_count++; - else if (val & I40E_RESET_GLOBR) + } else if (val == I40E_RESET_GLOBR) { pf->globr_count++; - else if (val & I40E_RESET_EMPR) + } else if (val == I40E_RESET_EMPR) { pf->empr_count++; + set_bit(__I40E_EMP_RESET_REQUESTED, &pf->state); + } + } + + if (icr0 & I40E_PFINT_ICR0_HMC_ERR_MASK) { + icr0 &= ~I40E_PFINT_ICR0_HMC_ERR_MASK; + dev_info(&pf->pdev->dev, "HMC error interrupt\n"); + } + + if (icr0 & I40E_PFINT_ICR0_TIMESYNC_MASK) { + u32 prttsyn_stat = rd32(hw, I40E_PRTTSYN_STAT_0); + + if (prttsyn_stat & I40E_PRTTSYN_STAT_0_TXTIME_MASK) { + icr0 &= ~I40E_PFINT_ICR0_ENA_TIMESYNC_MASK; + i40e_ptp_tx_hwtstamp(pf); + } } /* If a critical error is pending we have no choice but to reset the @@ -2809,22 +2907,18 @@ if (icr0_remaining) { dev_info(&pf->pdev->dev, "unhandled interrupt icr0=0x%08x\n", icr0_remaining); - if ((icr0_remaining & I40E_PFINT_ICR0_HMC_ERR_MASK) || - (icr0_remaining & I40E_PFINT_ICR0_PE_CRITERR_MASK) || + if ((icr0_remaining & I40E_PFINT_ICR0_PE_CRITERR_MASK) || (icr0_remaining & I40E_PFINT_ICR0_PCI_EXCEPTION_MASK) || - (icr0_remaining & I40E_PFINT_ICR0_ECC_ERR_MASK) || - (icr0_remaining & I40E_PFINT_ICR0_MAL_DETECT_MASK)) { - if (icr0 & I40E_PFINT_ICR0_HMC_ERR_MASK) { - dev_info(&pf->pdev->dev, "HMC error interrupt\n"); - } else { - dev_info(&pf->pdev->dev, "device will be reset\n"); - set_bit(__I40E_PF_RESET_REQUESTED, &pf->state); - i40e_service_event_schedule(pf); - } + (icr0_remaining & I40E_PFINT_ICR0_ECC_ERR_MASK)) { + dev_info(&pf->pdev->dev, "device will be reset\n"); + set_bit(__I40E_PF_RESET_REQUESTED, &pf->state); + i40e_service_event_schedule(pf); } ena_mask &= ~icr0_remaining; } + ret = IRQ_HANDLED; +enable_intr: /* re-enable interrupt causes */ wr32(hw, I40E_PFINT_ICR0_ENA, ena_mask); if (!test_bit(__I40E_DOWN, &pf->state)) { @@ -2832,6 +2926,94 @@ i40e_irq_dynamic_enable_icr0(pf); } + return ret; +} + +/** + * i40e_clean_fdir_tx_irq - Reclaim resources after transmit completes + * @tx_ring: tx ring to clean + * @budget: how many cleans we're allowed + * + * Returns true if there's any budget left (e.g. the clean is finished) + **/ +static bool i40e_clean_fdir_tx_irq(struct i40e_ring *tx_ring, int budget) +{ + struct i40e_vsi *vsi = tx_ring->vsi; + u16 i = tx_ring->next_to_clean; + struct i40e_tx_buffer *tx_buf; + struct i40e_tx_desc *tx_desc; + + tx_buf = &tx_ring->tx_bi[i]; + tx_desc = I40E_TX_DESC(tx_ring, i); + i -= tx_ring->count; + + do { + struct i40e_tx_desc *eop_desc = tx_buf->next_to_watch; + + /* if next_to_watch is not set then there is no work pending */ + if (!eop_desc) + break; + + /* prevent any other reads prior to eop_desc */ + read_barrier_depends(); + + /* if the descriptor isn't done, no work yet to do */ + if (!(eop_desc->cmd_type_offset_bsz & + cpu_to_le64(I40E_TX_DESC_DTYPE_DESC_DONE))) + break; + + /* clear next_to_watch to prevent false hangs */ + tx_buf->next_to_watch = NULL; + + /* unmap skb header data */ + dma_unmap_single(tx_ring->dev, + dma_unmap_addr(tx_buf, dma), + dma_unmap_len(tx_buf, len), + DMA_TO_DEVICE); + + dma_unmap_len_set(tx_buf, len, 0); + + + /* move to the next desc and buffer to clean */ + tx_buf++; + tx_desc++; + i++; + if (unlikely(!i)) { + i -= tx_ring->count; + tx_buf = tx_ring->tx_bi; + tx_desc = I40E_TX_DESC(tx_ring, 0); + } + + /* update budget accounting */ + budget--; + } while (likely(budget)); + + i += tx_ring->count; + tx_ring->next_to_clean = i; + + if (vsi->back->flags & I40E_FLAG_MSIX_ENABLED) { + i40e_irq_dynamic_enable(vsi, + tx_ring->q_vector->v_idx + vsi->base_vector); + } + return budget > 0; +} + +/** + * i40e_fdir_clean_ring - Interrupt Handler for FDIR SB ring + * @irq: interrupt number + * @data: pointer to a q_vector + **/ +static irqreturn_t i40e_fdir_clean_ring(int irq, void *data) +{ + struct i40e_q_vector *q_vector = data; + struct i40e_vsi *vsi; + + if (!q_vector->tx.ring) + return IRQ_HANDLED; + + vsi = q_vector->tx.ring->vsi; + i40e_clean_fdir_tx_irq(q_vector->tx.ring, vsi->work_limit); + return IRQ_HANDLED; } @@ -2967,35 +3149,26 @@ pf_q = vsi->base_queue; for (i = 0; i < vsi->num_queue_pairs; i++, pf_q++) { - j = 1000; - do { - usleep_range(1000, 2000); + for (j = 0; j < 50; j++) { tx_reg = rd32(hw, I40E_QTX_ENA(pf_q)); - } while (j-- && ((tx_reg >> I40E_QTX_ENA_QENA_REQ_SHIFT) - ^ (tx_reg >> I40E_QTX_ENA_QENA_STAT_SHIFT)) & 1); - - if (enable) { - /* is STAT set ? */ - if ((tx_reg & I40E_QTX_ENA_QENA_STAT_MASK)) { - dev_info(&pf->pdev->dev, - "Tx %d already enabled\n", i); - continue; - } - } else { - /* is !STAT set ? */ - if (!(tx_reg & I40E_QTX_ENA_QENA_STAT_MASK)) { - dev_info(&pf->pdev->dev, - "Tx %d already disabled\n", i); - continue; - } + if (((tx_reg >> I40E_QTX_ENA_QENA_REQ_SHIFT) & 1) == + ((tx_reg >> I40E_QTX_ENA_QENA_STAT_SHIFT) & 1)) + break; + usleep_range(1000, 2000); } + /* Skip if the queue is already in the requested state */ + if (enable && (tx_reg & I40E_QTX_ENA_QENA_STAT_MASK)) + continue; + if (!enable && !(tx_reg & I40E_QTX_ENA_QENA_STAT_MASK)) + continue; /* turn on/off the queue */ - if (enable) - tx_reg |= I40E_QTX_ENA_QENA_REQ_MASK | - I40E_QTX_ENA_QENA_STAT_MASK; - else + if (enable) { + wr32(hw, I40E_QTX_HEAD(pf_q), 0); + tx_reg |= I40E_QTX_ENA_QENA_REQ_MASK; + } else { tx_reg &= ~I40E_QTX_ENA_QENA_REQ_MASK; + } wr32(hw, I40E_QTX_ENA(pf_q), tx_reg); @@ -3019,6 +3192,9 @@ } } + if (hw->revision_id == 0) + mdelay(50); + return 0; } @@ -3036,12 +3212,13 @@ pf_q = vsi->base_queue; for (i = 0; i < vsi->num_queue_pairs; i++, pf_q++) { - j = 1000; - do { - usleep_range(1000, 2000); + for (j = 0; j < 50; j++) { rx_reg = rd32(hw, I40E_QRX_ENA(pf_q)); - } while (j-- && ((rx_reg >> I40E_QRX_ENA_QENA_REQ_SHIFT) - ^ (rx_reg >> I40E_QRX_ENA_QENA_STAT_SHIFT)) & 1); + if (((rx_reg >> I40E_QRX_ENA_QENA_REQ_SHIFT) & 1) == + ((rx_reg >> I40E_QRX_ENA_QENA_STAT_SHIFT) & 1)) + break; + usleep_range(1000, 2000); + } if (enable) { /* is STAT set ? */ @@ -3055,11 +3232,9 @@ /* turn on/off the queue */ if (enable) - rx_reg |= I40E_QRX_ENA_QENA_REQ_MASK | - I40E_QRX_ENA_QENA_STAT_MASK; + rx_reg |= I40E_QRX_ENA_QENA_REQ_MASK; else - rx_reg &= ~(I40E_QRX_ENA_QENA_REQ_MASK | - I40E_QRX_ENA_QENA_STAT_MASK); + rx_reg &= ~I40E_QRX_ENA_QENA_REQ_MASK; wr32(hw, I40E_QRX_ENA(pf_q), rx_reg); /* wait for the change to finish */ @@ -3091,9 +3266,9 @@ * @vsi: the VSI being configured * @enable: start or stop the rings **/ -static int i40e_vsi_control_rings(struct i40e_vsi *vsi, bool request) +int i40e_vsi_control_rings(struct i40e_vsi *vsi, bool request) { - int ret; + int ret = 0; /* do rx first for enable and last for disable */ if (request) { @@ -3102,10 +3277,9 @@ return ret; ret = i40e_vsi_control_tx(vsi, request); } else { - ret = i40e_vsi_control_tx(vsi, request); - if (ret) - return ret; - ret = i40e_vsi_control_rx(vsi, request); + /* Ignore return value, we need to shutdown whatever we can */ + i40e_vsi_control_tx(vsi, request); + i40e_vsi_control_rx(vsi, request); } return ret; @@ -3131,7 +3305,8 @@ u16 vector = i + base; /* free only the irqs that were actually requested */ - if (vsi->q_vectors[i]->num_ringpairs == 0) + if (!vsi->q_vectors[i] || + !vsi->q_vectors[i]->num_ringpairs) continue; /* clear the affinity_mask in the IRQ descriptor */ @@ -3543,7 +3718,7 @@ /* Get the VSI level BW configuration per TC */ aq_ret = i40e_aq_query_vsi_ets_sla_config(hw, vsi->seid, &bw_ets_config, - NULL); + NULL); if (aq_ret) { dev_info(&pf->pdev->dev, "couldn't get pf vsi ets bw config, err %d, aq_err %d\n", @@ -3597,8 +3772,8 @@ NULL); if (aq_ret) { dev_info(&vsi->back->pdev->dev, - "%s: AQ command Config VSI BW allocation per TC failed = %d\n", - __func__, vsi->back->hw.aq.asq_last_status); + "AQ command Config VSI BW allocation per TC failed = %d\n", + vsi->back->hw.aq.asq_last_status); return -EINVAL; } @@ -3754,6 +3929,149 @@ } /** + * i40e_veb_config_tc - Configure TCs for given VEB + * @veb: given VEB + * @enabled_tc: TC bitmap + * + * Configures given TC bitmap for VEB (switching) element + **/ +int i40e_veb_config_tc(struct i40e_veb *veb, u8 enabled_tc) +{ + struct i40e_aqc_configure_switching_comp_bw_config_data bw_data = {0}; + struct i40e_pf *pf = veb->pf; + int ret = 0; + int i; + + /* No TCs or already enabled TCs just return */ + if (!enabled_tc || veb->enabled_tc == enabled_tc) + return ret; + + bw_data.tc_valid_bits = enabled_tc; + /* bw_data.absolute_credits is not set (relative) */ + + /* Enable ETS TCs with equal BW Share for now */ + for (i = 0; i < I40E_MAX_TRAFFIC_CLASS; i++) { + if (enabled_tc & (1 << i)) + bw_data.tc_bw_share_credits[i] = 1; + } + + ret = i40e_aq_config_switch_comp_bw_config(&pf->hw, veb->seid, + &bw_data, NULL); + if (ret) { + dev_info(&pf->pdev->dev, + "veb bw config failed, aq_err=%d\n", + pf->hw.aq.asq_last_status); + goto out; + } + + /* Update the BW information */ + ret = i40e_veb_get_bw_info(veb); + if (ret) { + dev_info(&pf->pdev->dev, + "Failed getting veb bw config, aq_err=%d\n", + pf->hw.aq.asq_last_status); + } + +out: + return ret; +} + +#ifdef CONFIG_I40E_DCB +/** + * i40e_dcb_reconfigure - Reconfigure all VEBs and VSIs + * @pf: PF struct + * + * Reconfigure VEB/VSIs on a given PF; it is assumed that + * the caller would've quiesce all the VSIs before calling + * this function + **/ +static void i40e_dcb_reconfigure(struct i40e_pf *pf) +{ + u8 tc_map = 0; + int ret; + u8 v; + + /* Enable the TCs available on PF to all VEBs */ + tc_map = i40e_pf_get_tc_map(pf); + for (v = 0; v < I40E_MAX_VEB; v++) { + if (!pf->veb[v]) + continue; + ret = i40e_veb_config_tc(pf->veb[v], tc_map); + if (ret) { + dev_info(&pf->pdev->dev, + "Failed configuring TC for VEB seid=%d\n", + pf->veb[v]->seid); + /* Will try to configure as many components */ + } + } + + /* Update each VSI */ + for (v = 0; v < pf->hw.func_caps.num_vsis; v++) { + if (!pf->vsi[v]) + continue; + + /* - Enable all TCs for the LAN VSI + * - For all others keep them at TC0 for now + */ + if (v == pf->lan_vsi) + tc_map = i40e_pf_get_tc_map(pf); + else + tc_map = i40e_pf_get_default_tc(pf); + + ret = i40e_vsi_config_tc(pf->vsi[v], tc_map); + if (ret) { + dev_info(&pf->pdev->dev, + "Failed configuring TC for VSI seid=%d\n", + pf->vsi[v]->seid); + /* Will try to configure as many components */ + } else { + if (pf->vsi[v]->netdev) + i40e_dcbnl_set_all(pf->vsi[v]); + } + } +} + +/** + * i40e_init_pf_dcb - Initialize DCB configuration + * @pf: PF being configured + * + * Query the current DCB configuration and cache it + * in the hardware structure + **/ +static int i40e_init_pf_dcb(struct i40e_pf *pf) +{ + struct i40e_hw *hw = &pf->hw; + int err = 0; + + if (pf->hw.func_caps.npar_enable) + goto out; + + /* Get the initial DCB configuration */ + err = i40e_init_dcb(hw); + if (!err) { + /* Device/Function is not DCBX capable */ + if ((!hw->func_caps.dcb) || + (hw->dcbx_status == I40E_DCBX_STATUS_DISABLED)) { + dev_info(&pf->pdev->dev, + "DCBX offload is not supported or is disabled for this PF.\n"); + + if (pf->flags & I40E_FLAG_MFP_ENABLED) + goto out; + + } else { + /* When status is not DISABLED then DCBX in FW */ + pf->dcbx_cap = DCB_CAP_DCBX_LLD_MANAGED | + DCB_CAP_DCBX_VER_IEEE; + pf->flags |= I40E_FLAG_DCB_ENABLED; + } + } + +out: + return err; +} +#endif /* CONFIG_I40E_DCB */ + +/** * i40e_up_complete - Finish the last steps of bringing up a connection * @vsi: the VSI being configured **/ @@ -3784,6 +4102,10 @@ } else if (vsi->netdev) { netdev_info(vsi->netdev, "NIC Link is Down\n"); } + + /* replay FDIR SB filters */ + if (vsi->type == I40E_VSI_FDIR) + i40e_fdir_filter_restore(vsi); i40e_service_event_schedule(pf); return 0; @@ -3930,17 +4252,50 @@ struct i40e_netdev_priv *np = netdev_priv(netdev); struct i40e_vsi *vsi = np->vsi; struct i40e_pf *pf = vsi->back; - char int_name[IFNAMSIZ]; int err; - /* disallow open during test */ - if (test_bit(__I40E_TESTING, &pf->state)) + /* disallow open during test or if eeprom is broken */ + if (test_bit(__I40E_TESTING, &pf->state) || + test_bit(__I40E_BAD_EEPROM, &pf->state)) return -EBUSY; netif_carrier_off(netdev); - /* allocate descriptors */ - err = i40e_vsi_setup_tx_resources(vsi); + err = i40e_vsi_open(vsi); + if (err) + return err; + + /* configure global TSO hardware offload settings */ + wr32(&pf->hw, I40E_GLLAN_TSOMSK_F, be32_to_cpu(TCP_FLAG_PSH | + TCP_FLAG_FIN) >> 16); + wr32(&pf->hw, I40E_GLLAN_TSOMSK_M, be32_to_cpu(TCP_FLAG_PSH | + TCP_FLAG_FIN | + TCP_FLAG_CWR) >> 16); + wr32(&pf->hw, I40E_GLLAN_TSOMSK_L, be32_to_cpu(TCP_FLAG_CWR) >> 16); + +#ifdef CONFIG_I40E_VXLAN + vxlan_get_rx_port(netdev); +#endif + + return 0; +} + +/** + * i40e_vsi_open - + * @vsi: the VSI to open + * + * Finish initialization of the VSI. + * + * Returns 0 on success, negative value on failure + **/ +int i40e_vsi_open(struct i40e_vsi *vsi) +{ + struct i40e_pf *pf = vsi->back; + char int_name[IFNAMSIZ]; + int err; + + /* allocate descriptors */ + err = i40e_vsi_setup_tx_resources(vsi); if (err) goto err_setup_tx; err = i40e_vsi_setup_rx_resources(vsi); @@ -3951,28 +4306,34 @@ if (err) goto err_setup_rx; + if (!vsi->netdev) { + err = EINVAL; + goto err_setup_rx; + } snprintf(int_name, sizeof(int_name) - 1, "%s-%s", - dev_driver_string(&pf->pdev->dev), netdev->name); + dev_driver_string(&pf->pdev->dev), vsi->netdev->name); err = i40e_vsi_request_irq(vsi, int_name); if (err) goto err_setup_rx; + /* Notify the stack of the actual queue counts. */ + err = netif_set_real_num_tx_queues(vsi->netdev, vsi->num_queue_pairs); + if (err) + goto err_set_queues; + + err = netif_set_real_num_rx_queues(vsi->netdev, vsi->num_queue_pairs); + if (err) + goto err_set_queues; + err = i40e_up_complete(vsi); if (err) goto err_up_complete; - if ((vsi->type == I40E_VSI_MAIN) || (vsi->type == I40E_VSI_VMDQ2)) { - err = i40e_aq_set_vsi_broadcast(&pf->hw, vsi->seid, true, NULL); - if (err) - netdev_info(netdev, - "couldn't set broadcast err %d aq_err %d\n", - err, pf->hw.aq.asq_last_status); - } - return 0; err_up_complete: i40e_down(vsi); +err_set_queues: i40e_vsi_free_irq(vsi); err_setup_rx: i40e_vsi_free_rx_resources(vsi); @@ -3985,6 +4346,26 @@ } /** + * i40e_fdir_filter_exit - Cleans up the Flow Director accounting + * @pf: Pointer to pf + * + * This function destroys the hlist where all the Flow Director + * filters were saved. + **/ +static void i40e_fdir_filter_exit(struct i40e_pf *pf) +{ + struct i40e_fdir_filter *filter; + struct hlist_node *node2; + + hlist_for_each_entry_safe(filter, node2, + &pf->fdir_filter_list, fdir_node) { + hlist_del(&filter->fdir_node); + kfree(filter); + } + pf->fdir_pf_active_filters = 0; +} + +/** * i40e_close - Disables a network interface * @netdev: network interface device structure * @@ -4037,7 +4418,7 @@ * for the warning interrupt will deal with the shutdown * and recovery of the switch setup. */ - dev_info(&pf->pdev->dev, "GlobalR requested\n"); + dev_dbg(&pf->pdev->dev, "GlobalR requested\n"); val = rd32(&pf->hw, I40E_GLGEN_RTRIG); val |= I40E_GLGEN_RTRIG_GLOBR_MASK; wr32(&pf->hw, I40E_GLGEN_RTRIG, val); @@ -4048,12 +4429,30 @@ * * Same as Global Reset, except does *not* include the MAC/PHY */ - dev_info(&pf->pdev->dev, "CoreR requested\n"); + dev_dbg(&pf->pdev->dev, "CoreR requested\n"); val = rd32(&pf->hw, I40E_GLGEN_RTRIG); val |= I40E_GLGEN_RTRIG_CORER_MASK; wr32(&pf->hw, I40E_GLGEN_RTRIG, val); i40e_flush(&pf->hw); + } else if (reset_flags & (1 << __I40E_EMP_RESET_REQUESTED)) { + + /* Request a Firmware Reset + * + * Same as Global reset, plus restarting the + * embedded firmware engine. + */ + /* enable EMP Reset */ + val = rd32(&pf->hw, I40E_GLGEN_RSTENA_EMP); + val |= I40E_GLGEN_RSTENA_EMP_EMP_RST_ENA_MASK; + wr32(&pf->hw, I40E_GLGEN_RSTENA_EMP, val); + + /* force the reset */ + val = rd32(&pf->hw, I40E_GLGEN_RTRIG); + val |= I40E_GLGEN_RTRIG_EMPFWR_MASK; + wr32(&pf->hw, I40E_GLGEN_RTRIG, val); + i40e_flush(&pf->hw); + } else if (reset_flags & (1 << __I40E_PF_RESET_REQUESTED)) { /* Request a PF Reset @@ -4064,7 +4463,7 @@ * the switch, since we need to do all the recovery as * for the Core Reset. */ - dev_info(&pf->pdev->dev, "PFR requested\n"); + dev_dbg(&pf->pdev->dev, "PFR requested\n"); i40e_handle_reset_warning(pf); } else if (reset_flags & (1 << __I40E_REINIT_REQUESTED)) { @@ -4091,6 +4490,144 @@ } } +#ifdef CONFIG_I40E_DCB +/** + * i40e_dcb_need_reconfig - Check if DCB needs reconfig + * @pf: board private structure + * @old_cfg: current DCB config + * @new_cfg: new DCB config + **/ +bool i40e_dcb_need_reconfig(struct i40e_pf *pf, + struct i40e_dcbx_config *old_cfg, + struct i40e_dcbx_config *new_cfg) +{ + bool need_reconfig = false; + + /* Check if ETS configuration has changed */ + if (memcmp(&new_cfg->etscfg, + &old_cfg->etscfg, + sizeof(new_cfg->etscfg))) { + /* If Priority Table has changed reconfig is needed */ + if (memcmp(&new_cfg->etscfg.prioritytable, + &old_cfg->etscfg.prioritytable, + sizeof(new_cfg->etscfg.prioritytable))) { + need_reconfig = true; + dev_dbg(&pf->pdev->dev, "ETS UP2TC changed.\n"); + } + + if (memcmp(&new_cfg->etscfg.tcbwtable, + &old_cfg->etscfg.tcbwtable, + sizeof(new_cfg->etscfg.tcbwtable))) + dev_dbg(&pf->pdev->dev, "ETS TC BW Table changed.\n"); + + if (memcmp(&new_cfg->etscfg.tsatable, + &old_cfg->etscfg.tsatable, + sizeof(new_cfg->etscfg.tsatable))) + dev_dbg(&pf->pdev->dev, "ETS TSA Table changed.\n"); + } + + /* Check if PFC configuration has changed */ + if (memcmp(&new_cfg->pfc, + &old_cfg->pfc, + sizeof(new_cfg->pfc))) { + need_reconfig = true; + dev_dbg(&pf->pdev->dev, "PFC config change detected.\n"); + } + + /* Check if APP Table has changed */ + if (memcmp(&new_cfg->app, + &old_cfg->app, + sizeof(new_cfg->app))) { + need_reconfig = true; + dev_dbg(&pf->pdev->dev, "APP Table change detected.\n"); + } + + return need_reconfig; +} + +/** + * i40e_handle_lldp_event - Handle LLDP Change MIB event + * @pf: board private structure + * @e: event info posted on ARQ + **/ +static int i40e_handle_lldp_event(struct i40e_pf *pf, + struct i40e_arq_event_info *e) +{ + struct i40e_aqc_lldp_get_mib *mib = + (struct i40e_aqc_lldp_get_mib *)&e->desc.params.raw; + struct i40e_hw *hw = &pf->hw; + struct i40e_dcbx_config *dcbx_cfg = &hw->local_dcbx_config; + struct i40e_dcbx_config tmp_dcbx_cfg; + bool need_reconfig = false; + int ret = 0; + u8 type; + + /* Ignore if event is not for Nearest Bridge */ + type = ((mib->type >> I40E_AQ_LLDP_BRIDGE_TYPE_SHIFT) + & I40E_AQ_LLDP_BRIDGE_TYPE_MASK); + if (type != I40E_AQ_LLDP_BRIDGE_TYPE_NEAREST_BRIDGE) + return ret; + + /* Check MIB Type and return if event for Remote MIB update */ + type = mib->type & I40E_AQ_LLDP_MIB_TYPE_MASK; + if (type == I40E_AQ_LLDP_MIB_REMOTE) { + /* Update the remote cached instance and return */ + ret = i40e_aq_get_dcb_config(hw, I40E_AQ_LLDP_MIB_REMOTE, + I40E_AQ_LLDP_BRIDGE_TYPE_NEAREST_BRIDGE, + &hw->remote_dcbx_config); + goto exit; + } + + /* Convert/store the DCBX data from LLDPDU temporarily */ + memset(&tmp_dcbx_cfg, 0, sizeof(tmp_dcbx_cfg)); + ret = i40e_lldp_to_dcb_config(e->msg_buf, &tmp_dcbx_cfg); + if (ret) { + /* Error in LLDPDU parsing return */ + dev_info(&pf->pdev->dev, "Failed parsing LLDPDU from event buffer\n"); + goto exit; + } + + /* No change detected in DCBX configs */ + if (!memcmp(&tmp_dcbx_cfg, dcbx_cfg, sizeof(tmp_dcbx_cfg))) { + dev_dbg(&pf->pdev->dev, "No change detected in DCBX configuration.\n"); + goto exit; + } + + need_reconfig = i40e_dcb_need_reconfig(pf, dcbx_cfg, &tmp_dcbx_cfg); + + i40e_dcbnl_flush_apps(pf, &tmp_dcbx_cfg); + + /* Overwrite the new configuration */ + *dcbx_cfg = tmp_dcbx_cfg; + + if (!need_reconfig) + goto exit; + + /* Reconfiguration needed quiesce all VSIs */ + i40e_pf_quiesce_all_vsi(pf); + + /* Changes in configuration update VEB/VSI */ + i40e_dcb_reconfigure(pf); + + i40e_pf_unquiesce_all_vsi(pf); +exit: + return ret; +} +#endif /* CONFIG_I40E_DCB */ + +/** + * i40e_do_reset_safe - Protected reset path for userland calls. + * @pf: board private structure + * @reset_flags: which reset is requested + * + **/ +void i40e_do_reset_safe(struct i40e_pf *pf, u32 reset_flags) +{ + rtnl_lock(); + i40e_do_reset(pf, reset_flags); + rtnl_unlock(); +} + /** * i40e_handle_lan_overflow_event - Handler for LAN queue overflow event * @pf: board private structure @@ -4110,8 +4647,8 @@ struct i40e_vf *vf; u16 vf_id; - dev_info(&pf->pdev->dev, "%s: Rx Queue Number = %d QTX_CTL=0x%08x\n", - __func__, queue, qtx_ctl); + dev_dbg(&pf->pdev->dev, "overflow Rx Queue Number = %d QTX_CTL=0x%08x\n", + queue, qtx_ctl); /* Queue belongs to VF, find the VF and issue VF reset */ if (((qtx_ctl & I40E_QTX_CTL_PFVF_Q_MASK) @@ -4141,6 +4678,54 @@ } /** + * i40e_get_current_fd_count - Get the count of FD filters programmed in the HW + * @pf: board private structure + **/ +int i40e_get_current_fd_count(struct i40e_pf *pf) +{ + int val, fcnt_prog; + val = rd32(&pf->hw, I40E_PFQF_FDSTAT); + fcnt_prog = (val & I40E_PFQF_FDSTAT_GUARANT_CNT_MASK) + + ((val & I40E_PFQF_FDSTAT_BEST_CNT_MASK) >> + I40E_PFQF_FDSTAT_BEST_CNT_SHIFT); + return fcnt_prog; +} + +/** + * i40e_fdir_check_and_reenable - Function to reenabe FD ATR or SB if disabled + * @pf: board private structure + **/ +void i40e_fdir_check_and_reenable(struct i40e_pf *pf) +{ + u32 fcnt_prog, fcnt_avail; + + /* Check if, FD SB or ATR was auto disabled and if there is enough room + * to re-enable + */ + if ((pf->flags & I40E_FLAG_FD_ATR_ENABLED) && + (pf->flags & I40E_FLAG_FD_SB_ENABLED)) + return; + fcnt_prog = i40e_get_current_fd_count(pf); + fcnt_avail = pf->hw.fdir_shared_filter_count + + pf->fdir_pf_filter_count; + if (fcnt_prog < (fcnt_avail - I40E_FDIR_BUFFER_HEAD_ROOM)) { + if ((pf->flags & I40E_FLAG_FD_SB_ENABLED) && + (pf->auto_disable_flags & I40E_FLAG_FD_SB_ENABLED)) { + pf->auto_disable_flags &= ~I40E_FLAG_FD_SB_ENABLED; + dev_info(&pf->pdev->dev, "FD Sideband/ntuple is being enabled since we have space in the table now\n"); + } + } + /* Wait for some more space to be available to turn on ATR */ + if (fcnt_prog < (fcnt_avail - I40E_FDIR_BUFFER_HEAD_ROOM * 2)) { + if ((pf->flags & I40E_FLAG_FD_ATR_ENABLED) && + (pf->auto_disable_flags & I40E_FLAG_FD_ATR_ENABLED)) { + pf->auto_disable_flags &= ~I40E_FLAG_FD_ATR_ENABLED; + dev_info(&pf->pdev->dev, "ATR is being enabled since we have space in the table now\n"); + } + } +} + +/** * i40e_fdir_reinit_subtask - Worker thread to reinit FDIR filter table * @pf: board private structure **/ @@ -4149,11 +4734,14 @@ if (!(pf->flags & I40E_FLAG_FDIR_REQUIRES_REINIT)) return; - pf->flags &= ~I40E_FLAG_FDIR_REQUIRES_REINIT; - /* if interface is down do nothing */ if (test_bit(__I40E_DOWN, &pf->state)) return; + i40e_fdir_check_and_reenable(pf); + + if ((pf->flags & I40E_FLAG_FD_ATR_ENABLED) && + (pf->flags & I40E_FLAG_FD_SB_ENABLED)) + pf->flags &= ~I40E_FLAG_FDIR_REQUIRES_REINIT; } /** @@ -4245,6 +4833,9 @@ if (pf->vf) i40e_vc_notify_link_state(pf); + + if (pf->flags & I40E_FLAG_PTP) + i40e_ptp_set_increment(pf); } /** @@ -4326,6 +4917,8 @@ for (i = 0; i < I40E_MAX_VEB; i++) if (pf->veb[i]) i40e_update_veb_stats(pf->veb[i]); + + i40e_ptp_rx_hang(pf->vsi[pf->lan_vsi]); } /** @@ -4336,6 +4929,7 @@ { u32 reset_flags = 0; + rtnl_lock(); if (test_bit(__I40E_REINIT_REQUESTED, &pf->state)) { reset_flags |= (1 << __I40E_REINIT_REQUESTED); clear_bit(__I40E_REINIT_REQUESTED, &pf->state); @@ -4358,7 +4952,7 @@ */ if (test_bit(__I40E_RESET_INTR_RECEIVED, &pf->state)) { i40e_handle_reset_warning(pf); - return; + goto unlock; } /* If we're already down or resetting, just bail */ @@ -4366,6 +4960,9 @@ !test_bit(__I40E_DOWN, &pf->state) && !test_bit(__I40E_CONFIG_BUSY, &pf->state)) i40e_do_reset(pf, reset_flags); + +unlock: + rtnl_unlock(); } /** @@ -4429,6 +5026,7 @@ return; do { + event.msg_size = I40E_MAX_AQ_BUF_SIZE; /* reinit each time */ ret = i40e_clean_arq_element(hw, &event, &pending); if (ret == I40E_ERR_ADMIN_QUEUE_NO_WORK) { dev_info(&pf->pdev->dev, "No ARQ event found\n"); @@ -4453,16 +5051,24 @@ event.msg_size); break; case i40e_aqc_opc_lldp_update_mib: - dev_info(&pf->pdev->dev, "ARQ: Update LLDP MIB event received\n"); + dev_dbg(&pf->pdev->dev, "ARQ: Update LLDP MIB event received\n"); +#ifdef CONFIG_I40E_DCB + rtnl_lock(); + ret = i40e_handle_lldp_event(pf, &event); + rtnl_unlock(); +#endif /* CONFIG_I40E_DCB */ break; case i40e_aqc_opc_event_lan_overflow: - dev_info(&pf->pdev->dev, "ARQ LAN queue overflow event received\n"); + dev_dbg(&pf->pdev->dev, "ARQ LAN queue overflow event received\n"); i40e_handle_lan_overflow_event(pf, &event); break; + case i40e_aqc_opc_send_msg_to_peer: + dev_info(&pf->pdev->dev, "ARQ: Msg from other pf\n"); + break; default: dev_info(&pf->pdev->dev, - "ARQ Error: Unknown event %d received\n", - event.desc.opcode); + "ARQ Error: Unknown event 0x%04x received\n", + opcode); break; } } while (pending && (i++ < pf->adminq_work_limit)); @@ -4478,6 +5084,31 @@ } /** + * i40e_verify_eeprom - make sure eeprom is good to use + * @pf: board private structure + **/ +static void i40e_verify_eeprom(struct i40e_pf *pf) +{ + int err; + + err = i40e_diag_eeprom_test(&pf->hw); + if (err) { + /* retry in case of garbage read */ + err = i40e_diag_eeprom_test(&pf->hw); + if (err) { + dev_info(&pf->pdev->dev, "eeprom check failed (%d), Tx/Rx traffic disabled\n", + err); + set_bit(__I40E_BAD_EEPROM, &pf->state); + } + } + + if (!err && test_bit(__I40E_BAD_EEPROM, &pf->state)) { + dev_info(&pf->pdev->dev, "eeprom check passed, Tx/Rx traffic enabled\n"); + clear_bit(__I40E_BAD_EEPROM, &pf->state); + } +} + +/** * i40e_reconstitute_veb - rebuild the VEB and anything connected to it * @veb: pointer to the VEB instance * @@ -4592,6 +5223,15 @@ } } while (err); + /* increment MSI-X count because current FW skips one */ + pf->hw.func_caps.num_msix_vectors++; + + if (((pf->hw.aq.fw_maj_ver == 2) && (pf->hw.aq.fw_min_ver < 22)) || + (pf->hw.aq.fw_maj_ver < 2)) { + pf->hw.func_caps.num_msix_vectors++; + pf->hw.func_caps.num_msix_vectors_vf++; + } + if (pf->hw.debug_mask & I40E_DEBUG_USER) dev_info(&pf->pdev->dev, "pf=%d, num_vfs=%d, msix_pf=%d, msix_vf=%d, fd_g=%d, fd_b=%d, pf_max_q=%d num_vsi=%d\n", @@ -4603,57 +5243,89 @@ pf->hw.func_caps.num_tx_qp, pf->hw.func_caps.num_vsis); +#define DEF_NUM_VSI (1 + (pf->hw.func_caps.fcoe ? 1 : 0) \ + + pf->hw.func_caps.num_vfs) + if (pf->hw.revision_id == 0 && (DEF_NUM_VSI > pf->hw.func_caps.num_vsis)) { + dev_info(&pf->pdev->dev, + "got num_vsis %d, setting num_vsis to %d\n", + pf->hw.func_caps.num_vsis, DEF_NUM_VSI); + pf->hw.func_caps.num_vsis = DEF_NUM_VSI; + } + return 0; } +static int i40e_vsi_clear(struct i40e_vsi *vsi); + /** - * i40e_fdir_setup - initialize the Flow Director resources + * i40e_fdir_sb_setup - initialize the Flow Director resources for Sideband * @pf: board private structure **/ -static void i40e_fdir_setup(struct i40e_pf *pf) +static void i40e_fdir_sb_setup(struct i40e_pf *pf) { struct i40e_vsi *vsi; bool new_vsi = false; int err, i; - if (!(pf->flags & (I40E_FLAG_FDIR_ENABLED | - I40E_FLAG_FDIR_ATR_ENABLED))) + if (!(pf->flags & I40E_FLAG_FD_SB_ENABLED)) return; - pf->atr_sample_rate = I40E_DEFAULT_ATR_SAMPLE_RATE; - - /* find existing or make new FDIR VSI */ + /* find existing VSI and see if it needs configuring */ vsi = NULL; - for (i = 0; i < pf->hw.func_caps.num_vsis; i++) - if (pf->vsi[i] && pf->vsi[i]->type == I40E_VSI_FDIR) + for (i = 0; i < pf->hw.func_caps.num_vsis; i++) { + if (pf->vsi[i] && pf->vsi[i]->type == I40E_VSI_FDIR) { vsi = pf->vsi[i]; + break; + } + } + + /* create a new VSI if none exists */ if (!vsi) { - vsi = i40e_vsi_setup(pf, I40E_VSI_FDIR, pf->mac_seid, 0); + vsi = i40e_vsi_setup(pf, I40E_VSI_FDIR, + pf->vsi[pf->lan_vsi]->seid, 0); if (!vsi) { dev_info(&pf->pdev->dev, "Couldn't create FDir VSI\n"); - pf->flags &= ~I40E_FLAG_FDIR_ENABLED; - return; + goto err_vsi; } new_vsi = true; } - WARN_ON(vsi->base_queue != I40E_FDIR_RING); - i40e_vsi_setup_irqhandler(vsi, i40e_fdir_clean_rings); + i40e_vsi_setup_irqhandler(vsi, i40e_fdir_clean_ring); err = i40e_vsi_setup_tx_resources(vsi); - if (!err) - err = i40e_vsi_setup_rx_resources(vsi); - if (!err) - err = i40e_vsi_configure(vsi); - if (!err && new_vsi) { + if (err) + goto err_setup_tx; + err = i40e_vsi_setup_rx_resources(vsi); + if (err) + goto err_setup_rx; + + if (new_vsi) { char int_name[IFNAMSIZ + 9]; + err = i40e_vsi_configure(vsi); + if (err) + goto err_setup_rx; snprintf(int_name, sizeof(int_name) - 1, "%s-fdir", dev_driver_string(&pf->pdev->dev)); err = i40e_vsi_request_irq(vsi, int_name); - } - if (!err) + if (err) + goto err_setup_rx; err = i40e_up_complete(vsi); + if (err) + goto err_up_complete; + clear_bit(__I40E_NEEDS_RESTART, &vsi->state); + } - clear_bit(__I40E_NEEDS_RESTART, &vsi->state); + return; + +err_up_complete: + i40e_down(vsi); + i40e_vsi_free_irq(vsi); +err_setup_rx: + i40e_vsi_free_rx_resources(vsi); +err_setup_tx: + i40e_vsi_free_tx_resources(vsi); +err_vsi: + pf->flags &= ~I40E_FLAG_FD_SB_ENABLED; + i40e_vsi_clear(vsi); } /** @@ -4664,6 +5336,7 @@ { int i; + i40e_fdir_filter_exit(pf); for (i = 0; i < pf->hw.func_caps.num_vsis; i++) { if (pf->vsi[i] && pf->vsi[i]->type == I40E_VSI_FDIR) { i40e_vsi_release(pf->vsi[i]); @@ -4673,26 +5346,25 @@ } /** - * i40e_handle_reset_warning - prep for the core to reset + * i40e_prep_for_reset - prep for the core to reset * @pf: board private structure * - * Close up the VFs and other things in prep for a Core Reset, - * then get ready to rebuild the world. - **/ -static void i40e_handle_reset_warning(struct i40e_pf *pf) + * Close up the VFs and other things in prep for pf Reset. + **/ +static int i40e_prep_for_reset(struct i40e_pf *pf) { - struct i40e_driver_version dv; struct i40e_hw *hw = &pf->hw; i40e_status ret; u32 v; clear_bit(__I40E_RESET_INTR_RECEIVED, &pf->state); if (test_and_set_bit(__I40E_RESET_RECOVERY_PENDING, &pf->state)) - return; + return 0; - dev_info(&pf->pdev->dev, "Tearing down internal switch for reset\n"); + dev_dbg(&pf->pdev->dev, "Tearing down internal switch for reset\n"); - i40e_vc_notify_reset(pf); + if (i40e_check_asq_alive(hw)) + i40e_vc_notify_reset(pf); /* quiesce the VSIs and their queues that are not already DOWN */ i40e_pf_quiesce_all_vsi(pf); @@ -4704,6 +5376,27 @@ i40e_shutdown_adminq(&pf->hw); + /* call shutdown HMC */ + ret = i40e_shutdown_lan_hmc(hw); + if (ret) { + dev_info(&pf->pdev->dev, "shutdown_lan_hmc failed: %d\n", ret); + clear_bit(__I40E_RESET_RECOVERY_PENDING, &pf->state); + } + return ret; +} + +/** + * i40e_reset_and_rebuild - reset and rebuild using a saved config + * @pf: board private structure + * @reinit: if the Main VSI needs to re-initialized. + **/ +static void i40e_reset_and_rebuild(struct i40e_pf *pf, bool reinit) +{ + struct i40e_driver_version dv; + struct i40e_hw *hw = &pf->hw; + i40e_status ret; + u32 v; + /* Now we wait for GRST to settle out. * We don't have to delete the VEBs or VSIs from the hw switch * because the reset will make them disappear. @@ -4715,7 +5408,7 @@ if (test_bit(__I40E_DOWN, &pf->state)) goto end_core_reset; - dev_info(&pf->pdev->dev, "Rebuilding internal switch\n"); + dev_dbg(&pf->pdev->dev, "Rebuilding internal switch\n"); /* rebuild the basics for the AdminQ, HMC, and initial HW switch */ ret = i40e_init_adminq(&pf->hw); @@ -4724,6 +5417,12 @@ goto end_core_reset; } + /* re-verify the eeprom if we just had an EMP reset */ + if (test_bit(__I40E_EMP_RESET_REQUESTED, &pf->state)) { + clear_bit(__I40E_EMP_RESET_REQUESTED, &pf->state); + i40e_verify_eeprom(pf); + } + ret = i40e_get_capabilities(pf); if (ret) { dev_info(&pf->pdev->dev, "i40e_get_capabilities failed, %d\n", @@ -4731,13 +5430,6 @@ goto end_core_reset; } - /* call shutdown HMC */ - ret = i40e_shutdown_lan_hmc(hw); - if (ret) { - dev_info(&pf->pdev->dev, "shutdown_lan_hmc failed: %d\n", ret); - goto end_core_reset; - } - ret = i40e_init_lan_hmc(hw, hw->func_caps.num_tx_qp, hw->func_caps.num_rx_qp, pf->fcoe_hmc_cntx_num, pf->fcoe_hmc_filt_num); @@ -4751,8 +5443,16 @@ goto end_core_reset; } +#ifdef CONFIG_I40E_DCB + ret = i40e_init_pf_dcb(pf); + if (ret) { + dev_info(&pf->pdev->dev, "init_pf_dcb failed: %d\n", ret); + goto end_core_reset; + } +#endif /* CONFIG_I40E_DCB */ + /* do basic switch setup */ - ret = i40e_setup_pf_switch(pf); + ret = i40e_setup_pf_switch(pf, reinit); if (ret) goto end_core_reset; @@ -4764,7 +5464,7 @@ * try to recover minimal use by getting the basic PF VSI working. */ if (pf->vsi[pf->lan_vsi]->uplink_seid != pf->mac_seid) { - dev_info(&pf->pdev->dev, "attempting to rebuild switch\n"); + dev_dbg(&pf->pdev->dev, "attempting to rebuild switch\n"); /* find the one VEB connected to the MAC, and find orphans */ for (v = 0; v < I40E_MAX_VEB; v++) { if (!pf->veb[v]) @@ -4817,6 +5517,11 @@ /* restart the VSIs that were rebuilt and running before the reset */ i40e_pf_unquiesce_all_vsi(pf); + if (pf->num_alloc_vfs) { + for (v = 0; v < pf->num_alloc_vfs; v++) + i40e_reset_vf(&pf->vf[v], true); + } + /* tell the firmware that we're starting */ dv.major_version = DRV_VERSION_MAJOR; dv.minor_version = DRV_VERSION_MINOR; @@ -4824,13 +5529,29 @@ dv.subbuild_version = 0; i40e_aq_send_driver_version(&pf->hw, &dv, NULL); - dev_info(&pf->pdev->dev, "PF reset done\n"); + dev_info(&pf->pdev->dev, "reset complete\n"); end_core_reset: clear_bit(__I40E_RESET_RECOVERY_PENDING, &pf->state); } /** + * i40e_handle_reset_warning - prep for the pf to reset, reset and rebuild + * @pf: board private structure + * + * Close up the VFs and other things in prep for a Core Reset, + * then get ready to rebuild the world. + **/ +static void i40e_handle_reset_warning(struct i40e_pf *pf) +{ + i40e_status ret; + + ret = i40e_prep_for_reset(pf); + if (!ret) + i40e_reset_and_rebuild(pf, false); +} + +/** * i40e_handle_mdd_event * @pf: pointer to the pf structure * @@ -4857,7 +5578,7 @@ u8 queue = (reg & I40E_GL_MDET_TX_QUEUE_MASK) >> I40E_GL_MDET_TX_QUEUE_SHIFT; dev_info(&pf->pdev->dev, - "Malicious Driver Detection TX event 0x%02x on q %d of function 0x%02x\n", + "Malicious Driver Detection event 0x%02x on TX queue %d of function 0x%02x\n", event, queue, func); wr32(hw, I40E_GL_MDET_TX, 0xffffffff); mdd_detected = true; @@ -4871,7 +5592,7 @@ u8 queue = (reg & I40E_GL_MDET_RX_QUEUE_MASK) >> I40E_GL_MDET_RX_QUEUE_SHIFT; dev_info(&pf->pdev->dev, - "Malicious Driver Detection RX event 0x%02x on q %d of function 0x%02x\n", + "Malicious Driver Detection event 0x%02x on RX queue %d of function 0x%02x\n", event, queue, func); wr32(hw, I40E_GL_MDET_RX, 0xffffffff); mdd_detected = true; @@ -4911,6 +5632,52 @@ i40e_flush(hw); } +#ifdef CONFIG_I40E_VXLAN +/** + * i40e_sync_vxlan_filters_subtask - Sync the VSI filter list with HW + * @pf: board private structure + **/ +static void i40e_sync_vxlan_filters_subtask(struct i40e_pf *pf) +{ + const int vxlan_hdr_qwords = 4; + struct i40e_hw *hw = &pf->hw; + i40e_status ret; + u8 filter_index; + __be16 port; + int i; + + if (!(pf->flags & I40E_FLAG_VXLAN_FILTER_SYNC)) + return; + + pf->flags &= ~I40E_FLAG_VXLAN_FILTER_SYNC; + + for (i = 0; i < I40E_MAX_PF_UDP_OFFLOAD_PORTS; i++) { + if (pf->pending_vxlan_bitmap & (1 << i)) { + pf->pending_vxlan_bitmap &= ~(1 << i); + port = pf->vxlan_ports[i]; + ret = port ? + i40e_aq_add_udp_tunnel(hw, ntohs(port), + vxlan_hdr_qwords, + I40E_AQC_TUNNEL_TYPE_VXLAN, + &filter_index, NULL) + : i40e_aq_del_udp_tunnel(hw, i, NULL); + + if (ret) { + dev_info(&pf->pdev->dev, "Failed to execute AQ command for %s port %d with index %d\n", + port ? "adding" : "deleting", + ntohs(port), port ? i : i); + + pf->vxlan_ports[i] = 0; + } else { + dev_info(&pf->pdev->dev, "%s port %d with AQ command with index %d\n", + port ? "Added" : "Deleted", + ntohs(port), port ? i : filter_index); + } + } + } +} + +#endif /** * i40e_service_task - Run the driver's async subtasks * @work: pointer to work_struct containing our data @@ -4929,6 +5696,9 @@ i40e_fdir_reinit_subtask(pf); i40e_check_hang_subtask(pf); i40e_sync_filters_subtask(pf); +#ifdef CONFIG_I40E_VXLAN + i40e_sync_vxlan_filters_subtask(pf); +#endif i40e_clean_adminq_subtask(pf); i40e_service_event_complete(pf); @@ -5006,6 +5776,42 @@ } /** + * i40e_vsi_alloc_arrays - Allocate queue and vector pointer arrays for the vsi + * @type: VSI pointer + * @alloc_qvectors: a bool to specify if q_vectors need to be allocated. + * + * On error: returns error code (negative) + * On success: returns 0 + **/ +static int i40e_vsi_alloc_arrays(struct i40e_vsi *vsi, bool alloc_qvectors) +{ + int size; + int ret = 0; + + /* allocate memory for both Tx and Rx ring pointers */ + size = sizeof(struct i40e_ring *) * vsi->alloc_queue_pairs * 2; + vsi->tx_rings = kzalloc(size, GFP_KERNEL); + if (!vsi->tx_rings) + return -ENOMEM; + vsi->rx_rings = &vsi->tx_rings[vsi->alloc_queue_pairs]; + + if (alloc_qvectors) { + /* allocate memory for q_vector pointers */ + size = sizeof(struct i40e_q_vectors *) * vsi->num_q_vectors; + vsi->q_vectors = kzalloc(size, GFP_KERNEL); + if (!vsi->q_vectors) { + ret = -ENOMEM; + goto err_vectors; + } + } + return ret; + +err_vectors: + kfree(vsi->tx_rings); + return ret; +} + +/** * i40e_vsi_mem_alloc - Allocates the next available struct vsi in the PF * @pf: board private structure * @type: type of VSI @@ -5017,8 +5823,6 @@ { int ret = -ENODEV; struct i40e_vsi *vsi; - int sz_vectors; - int sz_rings; int vsi_idx; int i; @@ -5068,22 +5872,9 @@ if (ret) goto err_rings; - /* allocate memory for ring pointers */ - sz_rings = sizeof(struct i40e_ring *) * vsi->alloc_queue_pairs * 2; - vsi->tx_rings = kzalloc(sz_rings, GFP_KERNEL); - if (!vsi->tx_rings) { - ret = -ENOMEM; + ret = i40e_vsi_alloc_arrays(vsi, true); + if (ret) goto err_rings; - } - vsi->rx_rings = &vsi->tx_rings[vsi->alloc_queue_pairs]; - - /* allocate memory for q_vector pointers */ - sz_vectors = sizeof(struct i40e_q_vectors *) * vsi->num_q_vectors; - vsi->q_vectors = kzalloc(sz_vectors, GFP_KERNEL); - if (!vsi->q_vectors) { - ret = -ENOMEM; - goto err_vectors; - } /* Setup default MSIX irq handler for VSI */ i40e_vsi_setup_irqhandler(vsi, i40e_msix_clean_rings); @@ -5092,8 +5883,6 @@ ret = vsi_idx; goto unlock_pf; -err_vectors: - kfree(vsi->tx_rings); err_rings: pf->next_vsi = i - 1; kfree(vsi); @@ -5103,6 +5892,26 @@ } /** + * i40e_vsi_free_arrays - Free queue and vector pointer arrays for the VSI + * @type: VSI pointer + * @free_qvectors: a bool to specify if q_vectors need to be freed. + * + * On error: returns error code (negative) + * On success: returns 0 + **/ +static void i40e_vsi_free_arrays(struct i40e_vsi *vsi, bool free_qvectors) +{ + /* free the ring and vector containers */ + if (free_qvectors) { + kfree(vsi->q_vectors); + vsi->q_vectors = NULL; + } + kfree(vsi->tx_rings); + vsi->tx_rings = NULL; + vsi->rx_rings = NULL; +} + +/** * i40e_vsi_clear - Deallocate the VSI provided * @vsi: the VSI being un-configured **/ @@ -5138,9 +5947,7 @@ i40e_put_lump(pf->qp_pile, vsi->base_queue, vsi->idx); i40e_put_lump(pf->irq_pile, vsi->base_vector, vsi->idx); - /* free the ring and vector containers */ - kfree(vsi->q_vectors); - kfree(vsi->tx_rings); + i40e_vsi_free_arrays(vsi, true); pf->vsi[vsi->idx] = NULL; if (vsi->idx < pf->next_vsi) @@ -5158,18 +5965,17 @@ * i40e_vsi_clear_rings - Deallocates the Rx and Tx rings for the provided VSI * @vsi: the VSI being cleaned **/ -static s32 i40e_vsi_clear_rings(struct i40e_vsi *vsi) +static void i40e_vsi_clear_rings(struct i40e_vsi *vsi) { int i; - if (vsi->tx_rings[0]) + if (vsi->tx_rings && vsi->tx_rings[0]) { for (i = 0; i < vsi->alloc_queue_pairs; i++) { kfree_rcu(vsi->tx_rings[i], rcu); vsi->tx_rings[i] = NULL; vsi->rx_rings[i] = NULL; } - - return 0; + } } /** @@ -5186,6 +5992,7 @@ struct i40e_ring *tx_ring; struct i40e_ring *rx_ring; + /* allocate space for both Tx and Rx in one shot */ tx_ring = kzalloc(sizeof(struct i40e_ring) * 2, GFP_KERNEL); if (!tx_ring) goto err_out; @@ -5234,37 +6041,16 @@ **/ static int i40e_reserve_msix_vectors(struct i40e_pf *pf, int vectors) { - int err = 0; - - pf->num_msix_entries = 0; - while (vectors >= I40E_MIN_MSIX) { - err = pci_enable_msix(pf->pdev, pf->msix_entries, vectors); - if (err == 0) { - /* good to go */ - pf->num_msix_entries = vectors; - break; - } else if (err < 0) { - /* total failure */ - dev_info(&pf->pdev->dev, - "MSI-X vector reservation failed: %d\n", err); - vectors = 0; - break; - } else { - /* err > 0 is the hint for retry */ - dev_info(&pf->pdev->dev, - "MSI-X vectors wanted %d, retrying with %d\n", - vectors, err); - vectors = err; - } - } - - if (vectors > 0 && vectors < I40E_MIN_MSIX) { + vectors = pci_enable_msix_range(pf->pdev, pf->msix_entries, + I40E_MIN_MSIX, vectors); + if (vectors < 0) { dev_info(&pf->pdev->dev, - "Couldn't get enough vectors, only %d available\n", - vectors); + "MSI-X vector reservation failed: %d\n", vectors); vectors = 0; } + pf->num_msix_entries = vectors; + return vectors; } @@ -5289,19 +6075,22 @@ /* The number of vectors we'll request will be comprised of: * - Add 1 for "other" cause for Admin Queue events, etc. * - The number of LAN queue pairs - * already adjusted for the NUMA node - * assumes symmetric Tx/Rx pairing + * - Queues being used for RSS. + * We don't need as many as max_rss_size vectors. + * use rss_size instead in the calculation since that + * is governed by number of cpus in the system. + * - assumes symmetric Tx/Rx pairing * - The number of VMDq pairs * Once we count this up, try the request. * * If we can't get what we want, we'll simplify to nearly nothing * and try again. If that still fails, we punt. */ - pf->num_lan_msix = pf->num_lan_qps; + pf->num_lan_msix = pf->num_lan_qps - (pf->rss_size_max - pf->rss_size); pf->num_vmdq_msix = pf->num_vmdq_qps; v_budget = 1 + pf->num_lan_msix; v_budget += (pf->num_vmdq_vsis * pf->num_vmdq_msix); - if (pf->flags & I40E_FLAG_FDIR_ENABLED) + if (pf->flags & I40E_FLAG_FD_SB_ENABLED) v_budget++; /* Scale down if necessary, and the rings will share vectors */ @@ -5323,7 +6112,7 @@ } else if (vec == I40E_MIN_MSIX) { /* Adjust for minimal MSIX use */ - dev_info(&pf->pdev->dev, "Features disabled, not enough MSIX vectors\n"); + dev_info(&pf->pdev->dev, "Features disabled, not enough MSI-X vectors\n"); pf->flags &= ~I40E_FLAG_VMDQ_ENABLED; pf->num_vmdq_vsis = 0; pf->num_vmdq_qps = 0; @@ -5359,13 +6148,13 @@ } /** - * i40e_alloc_q_vector - Allocate memory for a single interrupt vector + * i40e_vsi_alloc_q_vector - Allocate memory for a single interrupt vector * @vsi: the VSI being configured * @v_idx: index of the vector in the vsi struct * * We allocate one q_vector. If allocation fails we return -ENOMEM. **/ -static int i40e_alloc_q_vector(struct i40e_vsi *vsi, int v_idx) +static int i40e_vsi_alloc_q_vector(struct i40e_vsi *vsi, int v_idx) { struct i40e_q_vector *q_vector; @@ -5391,13 +6180,13 @@ } /** - * i40e_alloc_q_vectors - Allocate memory for interrupt vectors + * i40e_vsi_alloc_q_vectors - Allocate memory for interrupt vectors * @vsi: the VSI being configured * * We allocate one q_vector per queue interrupt. If allocation fails we * return -ENOMEM. **/ -static int i40e_alloc_q_vectors(struct i40e_vsi *vsi) +static int i40e_vsi_alloc_q_vectors(struct i40e_vsi *vsi) { struct i40e_pf *pf = vsi->back; int v_idx, num_q_vectors; @@ -5412,7 +6201,7 @@ return -EINVAL; for (v_idx = 0; v_idx < num_q_vectors; v_idx++) { - err = i40e_alloc_q_vector(vsi, v_idx); + err = i40e_vsi_alloc_q_vector(vsi, v_idx); if (err) goto err_out; } @@ -5437,14 +6226,13 @@ if (pf->flags & I40E_FLAG_MSIX_ENABLED) { err = i40e_init_msix(pf); if (err) { - pf->flags &= ~(I40E_FLAG_MSIX_ENABLED | - I40E_FLAG_RSS_ENABLED | - I40E_FLAG_MQ_ENABLED | - I40E_FLAG_DCB_ENABLED | - I40E_FLAG_SRIOV_ENABLED | - I40E_FLAG_FDIR_ENABLED | - I40E_FLAG_FDIR_ATR_ENABLED | - I40E_FLAG_VMDQ_ENABLED); + pf->flags &= ~(I40E_FLAG_MSIX_ENABLED | + I40E_FLAG_RSS_ENABLED | + I40E_FLAG_DCB_ENABLED | + I40E_FLAG_SRIOV_ENABLED | + I40E_FLAG_FD_SB_ENABLED | + I40E_FLAG_FD_ATR_ENABLED | + I40E_FLAG_VMDQ_ENABLED); /* rework the queue expectations without MSIX */ i40e_determine_queue_usage(pf); @@ -5453,7 +6241,7 @@ if (!(pf->flags & I40E_FLAG_MSIX_ENABLED) && (pf->flags & I40E_FLAG_MSI_ENABLED)) { - dev_info(&pf->pdev->dev, "MSIX not available, trying MSI\n"); + dev_info(&pf->pdev->dev, "MSI-X not available, trying MSI\n"); err = pci_enable_msi(pf->pdev); if (err) { dev_info(&pf->pdev->dev, "MSI init failed - %d\n", err); @@ -5462,7 +6250,7 @@ } if (!(pf->flags & (I40E_FLAG_MSIX_ENABLED | I40E_FLAG_MSI_ENABLED))) - dev_info(&pf->pdev->dev, "MSIX and MSI not available, falling back to Legacy IRQ\n"); + dev_info(&pf->pdev->dev, "MSI-X and MSI not available, falling back to Legacy IRQ\n"); /* track first vector for misc interrupts */ err = i40e_get_lump(pf, pf->irq_pile, 1, I40E_PILE_VALID_BIT-1); @@ -5489,7 +6277,8 @@ i40e_intr, 0, pf->misc_int_name, pf); if (err) { dev_info(&pf->pdev->dev, - "request_irq for msix_misc failed: %d\n", err); + "request_irq for %s failed: %d\n", + pf->misc_int_name, err); return -EFAULT; } } @@ -5513,15 +6302,15 @@ **/ static int i40e_config_rss(struct i40e_pf *pf) { - struct i40e_hw *hw = &pf->hw; - u32 lut = 0; - int i, j; - u64 hena; /* Set of random keys generated using kernel random number generator */ static const u32 seed[I40E_PFQF_HKEY_MAX_INDEX + 1] = {0x41b01687, 0x183cfd8c, 0xce880440, 0x580cbc3c, 0x35897377, 0x328b25e1, 0x4fa98922, 0xb7d90c14, 0xd5bad70d, 0xcd15a2c1, 0xe8580225, 0x4a1e9d11, 0xfe5731be}; + struct i40e_hw *hw = &pf->hw; + u32 lut = 0; + int i, j; + u64 hena; /* Fill out hash function seed */ for (i = 0; i <= I40E_PFQF_HKEY_MAX_INDEX; i++) @@ -5530,16 +6319,7 @@ /* By default we enable TCP/UDP with IPv4/IPv6 ptypes */ hena = (u64)rd32(hw, I40E_PFQF_HENA(0)) | ((u64)rd32(hw, I40E_PFQF_HENA(1)) << 32); - hena |= ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV4_UDP) | - ((u64)1 << I40E_FILTER_PCTYPE_NONF_UNICAST_IPV4_UDP) | - ((u64)1 << I40E_FILTER_PCTYPE_NONF_MULTICAST_IPV4_UDP) | - ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV4_TCP) | - ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV6_TCP) | - ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV6_UDP) | - ((u64)1 << I40E_FILTER_PCTYPE_NONF_UNICAST_IPV6_UDP) | - ((u64)1 << I40E_FILTER_PCTYPE_NONF_MULTICAST_IPV6_UDP) | - ((u64)1 << I40E_FILTER_PCTYPE_FRAG_IPV4)| - ((u64)1 << I40E_FILTER_PCTYPE_FRAG_IPV6); + hena |= I40E_DEFAULT_RSS_HENA; wr32(hw, I40E_PFQF_HENA(0), (u32)hena); wr32(hw, I40E_PFQF_HENA(1), (u32)(hena >> 32)); @@ -5568,6 +6348,34 @@ } /** + * i40e_reconfig_rss_queues - change number of queues for rss and rebuild + * @pf: board private structure + * @queue_count: the requested queue count for rss. + * + * returns 0 if rss is not enabled, if enabled returns the final rss queue + * count which may be different from the requested queue count. + **/ +int i40e_reconfig_rss_queues(struct i40e_pf *pf, int queue_count) +{ + if (!(pf->flags & I40E_FLAG_RSS_ENABLED)) + return 0; + + queue_count = min_t(int, queue_count, pf->rss_size_max); + queue_count = rounddown_pow_of_two(queue_count); + + if (queue_count != pf->rss_size) { + i40e_prep_for_reset(pf); + + pf->rss_size = queue_count; + + i40e_reset_and_rebuild(pf, true); + i40e_config_rss(pf); + } + dev_info(&pf->pdev->dev, "RSS count: %d\n", pf->rss_size); + return pf->rss_size; +} + +/** * i40e_sw_init - Initialize general software structures (struct i40e_pf) * @pf: board private structure to initialize * @@ -5582,6 +6390,7 @@ pf->msg_enable = netif_msg_init(I40E_DEFAULT_MSG_ENABLE, (NETIF_MSG_DRV|NETIF_MSG_PROBE|NETIF_MSG_LINK)); + pf->hw.debug_mask = pf->msg_enable | I40E_DEBUG_DIAG; if (debug != -1 && debug != I40E_DEFAULT_MSG_ENABLE) { if (I40E_DEBUG_USER & debug) pf->hw.debug_mask = debug; @@ -5593,39 +6402,43 @@ pf->flags = I40E_FLAG_RX_CSUM_ENABLED | I40E_FLAG_MSI_ENABLED | I40E_FLAG_MSIX_ENABLED | - I40E_FLAG_RX_PS_ENABLED | - I40E_FLAG_MQ_ENABLED | I40E_FLAG_RX_1BUF_ENABLED; + /* Depending on PF configurations, it is possible that the RSS + * maximum might end up larger than the available queues + */ pf->rss_size_max = 0x1 << pf->hw.func_caps.rss_table_entry_width; + pf->rss_size_max = min_t(int, pf->rss_size_max, + pf->hw.func_caps.num_tx_qp); if (pf->hw.func_caps.rss) { pf->flags |= I40E_FLAG_RSS_ENABLED; - pf->rss_size = min_t(int, pf->rss_size_max, - nr_cpus_node(numa_node_id())); + pf->rss_size = min_t(int, pf->rss_size_max, num_online_cpus()); + pf->rss_size = rounddown_pow_of_two(pf->rss_size); } else { pf->rss_size = 1; } - if (pf->hw.func_caps.dcb) - pf->num_tc_qps = I40E_DEFAULT_QUEUES_PER_TC; - else - pf->num_tc_qps = 0; + /* MFP mode enabled */ + if (pf->hw.func_caps.npar_enable || pf->hw.func_caps.mfp_mode_1) { + pf->flags |= I40E_FLAG_MFP_ENABLED; + dev_info(&pf->pdev->dev, "MFP mode Enabled\n"); + } - if (pf->hw.func_caps.fd) { - /* FW/NVM is not yet fixed in this regard */ - if ((pf->hw.func_caps.fd_filters_guaranteed > 0) || - (pf->hw.func_caps.fd_filters_best_effort > 0)) { - pf->flags |= I40E_FLAG_FDIR_ATR_ENABLED; - dev_info(&pf->pdev->dev, - "Flow Director ATR mode Enabled\n"); - pf->flags |= I40E_FLAG_FDIR_ENABLED; + /* FW/NVM is not yet fixed in this regard */ + if ((pf->hw.func_caps.fd_filters_guaranteed > 0) || + (pf->hw.func_caps.fd_filters_best_effort > 0)) { + pf->flags |= I40E_FLAG_FD_ATR_ENABLED; + pf->atr_sample_rate = I40E_DEFAULT_ATR_SAMPLE_RATE; + if (!(pf->flags & I40E_FLAG_MFP_ENABLED)) { + pf->flags |= I40E_FLAG_FD_SB_ENABLED; + } else { dev_info(&pf->pdev->dev, - "Flow Director Side Band mode Enabled\n"); - pf->fdir_pf_filter_count = - pf->hw.func_caps.fd_filters_guaranteed; + "Flow Director Sideband mode Disabled in MFP mode\n"); } - } else { - pf->fdir_pf_filter_count = 0; + pf->fdir_pf_filter_count = + pf->hw.func_caps.fd_filters_guaranteed; + pf->hw.fdir_shared_filter_count = + pf->hw.func_caps.fd_filters_best_effort; } if (pf->hw.func_caps.vmdq) { @@ -5634,12 +6447,6 @@ pf->num_vmdq_qps = I40E_DEFAULT_QUEUES_PER_VMDQ; } - /* MFP mode enabled */ - if (pf->hw.func_caps.npar_enable || pf->hw.func_caps.mfp_mode_1) { - pf->flags |= I40E_FLAG_MFP_ENABLED; - dev_info(&pf->pdev->dev, "MFP mode Enabled\n"); - } - #ifdef CONFIG_PCI_IOV if (pf->hw.func_caps.num_vfs) { pf->num_vf_qps = I40E_DEFAULT_QUEUES_PER_VF; @@ -5661,46 +6468,184 @@ err = -ENOMEM; goto sw_init_done; } - pf->qp_pile->num_entries = pf->hw.func_caps.num_tx_qp; - pf->qp_pile->search_hint = 0; + pf->qp_pile->num_entries = pf->hw.func_caps.num_tx_qp; + pf->qp_pile->search_hint = 0; + + /* set up vector assignment tracking */ + size = sizeof(struct i40e_lump_tracking) + + (sizeof(u16) * pf->hw.func_caps.num_msix_vectors); + pf->irq_pile = kzalloc(size, GFP_KERNEL); + if (!pf->irq_pile) { + kfree(pf->qp_pile); + err = -ENOMEM; + goto sw_init_done; + } + pf->irq_pile->num_entries = pf->hw.func_caps.num_msix_vectors; + pf->irq_pile->search_hint = 0; + + mutex_init(&pf->switch_mutex); + +sw_init_done: + return err; +} + +/** + * i40e_set_ntuple - set the ntuple feature flag and take action + * @pf: board private structure to initialize + * @features: the feature set that the stack is suggesting + * + * returns a bool to indicate if reset needs to happen + **/ +bool i40e_set_ntuple(struct i40e_pf *pf, netdev_features_t features) +{ + bool need_reset = false; + + /* Check if Flow Director n-tuple support was enabled or disabled. If + * the state changed, we need to reset. + */ + if (features & NETIF_F_NTUPLE) { + /* Enable filters and mark for reset */ + if (!(pf->flags & I40E_FLAG_FD_SB_ENABLED)) + need_reset = true; + pf->flags |= I40E_FLAG_FD_SB_ENABLED; + } else { + /* turn off filters, mark for reset and clear SW filter list */ + if (pf->flags & I40E_FLAG_FD_SB_ENABLED) { + need_reset = true; + i40e_fdir_filter_exit(pf); + } + pf->flags &= ~I40E_FLAG_FD_SB_ENABLED; + /* if ATR was disabled it can be re-enabled. */ + if (!(pf->flags & I40E_FLAG_FD_ATR_ENABLED)) + pf->flags |= I40E_FLAG_FD_ATR_ENABLED; + } + return need_reset; +} + +/** + * i40e_set_features - set the netdev feature flags + * @netdev: ptr to the netdev being adjusted + * @features: the feature set that the stack is suggesting + **/ +static int i40e_set_features(struct net_device *netdev, + netdev_features_t features) +{ + struct i40e_netdev_priv *np = netdev_priv(netdev); + struct i40e_vsi *vsi = np->vsi; + struct i40e_pf *pf = vsi->back; + bool need_reset; + + if (features & NETIF_F_HW_VLAN_CTAG_RX) + i40e_vlan_stripping_enable(vsi); + else + i40e_vlan_stripping_disable(vsi); + + need_reset = i40e_set_ntuple(pf, features); + + if (need_reset) + i40e_do_reset(pf, (1 << __I40E_PF_RESET_REQUESTED)); + + return 0; +} + +#ifdef CONFIG_I40E_VXLAN +/** + * i40e_get_vxlan_port_idx - Lookup a possibly offloaded for Rx UDP port + * @pf: board private structure + * @port: The UDP port to look up + * + * Returns the index number or I40E_MAX_PF_UDP_OFFLOAD_PORTS if port not found + **/ +static u8 i40e_get_vxlan_port_idx(struct i40e_pf *pf, __be16 port) +{ + u8 i; + + for (i = 0; i < I40E_MAX_PF_UDP_OFFLOAD_PORTS; i++) { + if (pf->vxlan_ports[i] == port) + return i; + } + + return i; +} + +/** + * i40e_add_vxlan_port - Get notifications about VXLAN ports that come up + * @netdev: This physical port's netdev + * @sa_family: Socket Family that VXLAN is notifying us about + * @port: New UDP port number that VXLAN started listening to + **/ +static void i40e_add_vxlan_port(struct net_device *netdev, + sa_family_t sa_family, __be16 port) +{ + struct i40e_netdev_priv *np = netdev_priv(netdev); + struct i40e_vsi *vsi = np->vsi; + struct i40e_pf *pf = vsi->back; + u8 next_idx; + u8 idx; + + if (sa_family == AF_INET6) + return; + + idx = i40e_get_vxlan_port_idx(pf, port); + + /* Check if port already exists */ + if (idx < I40E_MAX_PF_UDP_OFFLOAD_PORTS) { + netdev_info(netdev, "Port %d already offloaded\n", ntohs(port)); + return; + } - /* set up vector assignment tracking */ - size = sizeof(struct i40e_lump_tracking) - + (sizeof(u16) * pf->hw.func_caps.num_msix_vectors); - pf->irq_pile = kzalloc(size, GFP_KERNEL); - if (!pf->irq_pile) { - kfree(pf->qp_pile); - err = -ENOMEM; - goto sw_init_done; + /* Now check if there is space to add the new port */ + next_idx = i40e_get_vxlan_port_idx(pf, 0); + + if (next_idx == I40E_MAX_PF_UDP_OFFLOAD_PORTS) { + netdev_info(netdev, "Maximum number of UDP ports reached, not adding port %d\n", + ntohs(port)); + return; } - pf->irq_pile->num_entries = pf->hw.func_caps.num_msix_vectors; - pf->irq_pile->search_hint = 0; - mutex_init(&pf->switch_mutex); + /* New port: add it and mark its index in the bitmap */ + pf->vxlan_ports[next_idx] = port; + pf->pending_vxlan_bitmap |= (1 << next_idx); -sw_init_done: - return err; + pf->flags |= I40E_FLAG_VXLAN_FILTER_SYNC; } /** - * i40e_set_features - set the netdev feature flags - * @netdev: ptr to the netdev being adjusted - * @features: the feature set that the stack is suggesting + * i40e_del_vxlan_port - Get notifications about VXLAN ports that go away + * @netdev: This physical port's netdev + * @sa_family: Socket Family that VXLAN is notifying us about + * @port: UDP port number that VXLAN stopped listening to **/ -static int i40e_set_features(struct net_device *netdev, - netdev_features_t features) +static void i40e_del_vxlan_port(struct net_device *netdev, + sa_family_t sa_family, __be16 port) { struct i40e_netdev_priv *np = netdev_priv(netdev); struct i40e_vsi *vsi = np->vsi; + struct i40e_pf *pf = vsi->back; + u8 idx; - if (features & NETIF_F_HW_VLAN_CTAG_RX) - i40e_vlan_stripping_enable(vsi); - else - i40e_vlan_stripping_disable(vsi); + if (sa_family == AF_INET6) + return; - return 0; + idx = i40e_get_vxlan_port_idx(pf, port); + + /* Check if port already exists */ + if (idx < I40E_MAX_PF_UDP_OFFLOAD_PORTS) { + /* if port exists, set it to 0 (mark for deletion) + * and make it pending + */ + pf->vxlan_ports[idx] = 0; + + pf->pending_vxlan_bitmap |= (1 << idx); + + pf->flags |= I40E_FLAG_VXLAN_FILTER_SYNC; + } else { + netdev_warn(netdev, "Port %d was not found, not deleting\n", + ntohs(port)); + } } +#endif static const struct net_device_ops i40e_netdev_ops = { .ndo_open = i40e_open, .ndo_stop = i40e_close, @@ -5710,6 +6655,7 @@ .ndo_validate_addr = eth_validate_addr, .ndo_set_mac_address = i40e_set_mac, .ndo_change_mtu = i40e_change_mtu, + .ndo_do_ioctl = i40e_ioctl, .ndo_tx_timeout = i40e_tx_timeout, .ndo_vlan_rx_add_vid = i40e_vlan_rx_add_vid, .ndo_vlan_rx_kill_vid = i40e_vlan_rx_kill_vid, @@ -5722,6 +6668,11 @@ .ndo_set_vf_vlan = i40e_ndo_set_vf_port_vlan, .ndo_set_vf_tx_rate = i40e_ndo_set_vf_bw, .ndo_get_vf_config = i40e_ndo_get_vf_config, + .ndo_set_vf_link_state = i40e_ndo_set_vf_link_state, +#ifdef CONFIG_I40E_VXLAN + .ndo_add_vxlan_port = i40e_add_vxlan_port, + .ndo_del_vxlan_port = i40e_del_vxlan_port, +#endif }; /** @@ -5732,6 +6683,7 @@ **/ static int i40e_config_netdev(struct i40e_vsi *vsi) { + u8 brdcast[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; struct i40e_pf *pf = vsi->back; struct i40e_hw *hw = &pf->hw; struct i40e_netdev_priv *np; @@ -5748,10 +6700,9 @@ np = netdev_priv(netdev); np->vsi = vsi; - netdev->hw_enc_features = NETIF_F_IP_CSUM | + netdev->hw_enc_features |= NETIF_F_IP_CSUM | NETIF_F_GSO_UDP_TUNNEL | - NETIF_F_TSO | - NETIF_F_SG; + NETIF_F_TSO; netdev->features = NETIF_F_SG | NETIF_F_IP_CSUM | @@ -5763,8 +6714,10 @@ NETIF_F_HW_VLAN_CTAG_FILTER | NETIF_F_IPV6_CSUM | NETIF_F_TSO | + NETIF_F_TSO_ECN | NETIF_F_TSO6 | NETIF_F_RXCSUM | + NETIF_F_NTUPLE | NETIF_F_RXHASH | 0; @@ -5781,6 +6734,7 @@ random_ether_addr(mac_addr); i40e_add_filter(vsi, mac_addr, I40E_VLAN_ANY, false, false); } + i40e_add_filter(vsi, brdcast, I40E_VLAN_ANY, false, false); memcpy(netdev->dev_addr, mac_addr, ETH_ALEN); memcpy(netdev->perm_addr, mac_addr, ETH_ALEN); @@ -5814,10 +6768,6 @@ if (vsi == vsi->back->vsi[vsi->back->lan_vsi]) return; - /* there is no HW VSI for FDIR */ - if (vsi->type == I40E_VSI_FDIR) - return; - i40e_aq_delete_element(&vsi->back->hw, vsi->seid, NULL); return; } @@ -5901,12 +6851,12 @@ break; case I40E_VSI_FDIR: - /* no queue mapping or actual HW VSI needed */ - vsi->info.valid_sections = 0; - vsi->seid = 0; - vsi->id = 0; + ctxt.pf_num = hw->pf_id; + ctxt.vf_num = 0; + ctxt.uplink_seid = vsi->uplink_seid; + ctxt.connection_type = 0x1; /* regular data port */ + ctxt.flags = I40E_AQ_VSI_TYPE_PF; i40e_vsi_setup_queue_map(vsi, &ctxt, enabled_tc, true); - return 0; break; case I40E_VSI_VMDQ2: @@ -6027,8 +6977,6 @@ if (vsi->netdev) { /* results in a call to i40e_close() */ unregister_netdev(vsi->netdev); - free_netdev(vsi->netdev); - vsi->netdev = NULL; } } else { if (!test_and_set_bit(__I40E_DOWN, &vsi->state)) @@ -6047,6 +6995,10 @@ i40e_vsi_delete(vsi); i40e_vsi_free_q_vectors(vsi); + if (vsi->netdev) { + free_netdev(vsi->netdev); + vsi->netdev = NULL; + } i40e_vsi_clear_rings(vsi); i40e_vsi_clear(vsi); @@ -6101,13 +7053,12 @@ } if (vsi->base_vector) { - dev_info(&pf->pdev->dev, - "VSI %d has non-zero base vector %d\n", + dev_info(&pf->pdev->dev, "VSI %d has non-zero base vector %d\n", vsi->seid, vsi->base_vector); return -EEXIST; } - ret = i40e_alloc_q_vectors(vsi); + ret = i40e_vsi_alloc_q_vectors(vsi); if (ret) { dev_info(&pf->pdev->dev, "failed to allocate %d q_vector for VSI %d, ret=%d\n", @@ -6121,7 +7072,7 @@ vsi->num_q_vectors, vsi->idx); if (vsi->base_vector < 0) { dev_info(&pf->pdev->dev, - "failed to get q tracking for VSI %d, err=%d\n", + "failed to get queue tracking for VSI %d, err=%d\n", vsi->seid, vsi->base_vector); i40e_vsi_free_q_vectors(vsi); ret = -ENOENT; @@ -6133,6 +7084,69 @@ } /** + * i40e_vsi_reinit_setup - return and reallocate resources for a VSI + * @vsi: pointer to the vsi. + * + * This re-allocates a vsi's queue resources. + * + * Returns pointer to the successfully allocated and configured VSI sw struct + * on success, otherwise returns NULL on failure. + **/ +static struct i40e_vsi *i40e_vsi_reinit_setup(struct i40e_vsi *vsi) +{ + struct i40e_pf *pf = vsi->back; + u8 enabled_tc; + int ret; + + i40e_put_lump(pf->qp_pile, vsi->base_queue, vsi->idx); + i40e_vsi_clear_rings(vsi); + + i40e_vsi_free_arrays(vsi, false); + i40e_set_num_rings_in_vsi(vsi); + ret = i40e_vsi_alloc_arrays(vsi, false); + if (ret) + goto err_vsi; + + ret = i40e_get_lump(pf, pf->qp_pile, vsi->alloc_queue_pairs, vsi->idx); + if (ret < 0) { + dev_info(&pf->pdev->dev, "VSI %d get_lump failed %d\n", + vsi->seid, ret); + goto err_vsi; + } + vsi->base_queue = ret; + + /* Update the FW view of the VSI. Force a reset of TC and queue + * layout configurations. + */ + enabled_tc = pf->vsi[pf->lan_vsi]->tc_config.enabled_tc; + pf->vsi[pf->lan_vsi]->tc_config.enabled_tc = 0; + pf->vsi[pf->lan_vsi]->seid = pf->main_vsi_seid; + i40e_vsi_config_tc(pf->vsi[pf->lan_vsi], enabled_tc); + + /* assign it some queues */ + ret = i40e_alloc_rings(vsi); + if (ret) + goto err_rings; + + /* map all of the rings to the q_vectors */ + i40e_vsi_map_rings_to_vectors(vsi); + return vsi; + +err_rings: + i40e_vsi_free_q_vectors(vsi); + if (vsi->netdev_registered) { + vsi->netdev_registered = false; + unregister_netdev(vsi->netdev); + free_netdev(vsi->netdev); + vsi->netdev = NULL; + } + i40e_aq_delete_element(&pf->hw, vsi->seid, NULL); +err_vsi: + i40e_vsi_clear(vsi); + return NULL; +} + +/** * i40e_vsi_setup - Set up a VSI by a given type * @pf: board private structure * @type: VSI type @@ -6212,6 +7226,8 @@ if (v_idx < 0) goto err_alloc; vsi = pf->vsi[v_idx]; + if (!vsi) + goto err_alloc; vsi->type = type; vsi->veb_idx = (veb ? veb->idx : I40E_NO_VEB); @@ -6220,7 +7236,8 @@ else if (type == I40E_VSI_SRIOV) vsi->vf_id = param1; /* assign it some queues */ - ret = i40e_get_lump(pf, pf->qp_pile, vsi->alloc_queue_pairs, vsi->idx); + ret = i40e_get_lump(pf, pf->qp_pile, vsi->alloc_queue_pairs, + vsi->idx); if (ret < 0) { dev_info(&pf->pdev->dev, "VSI %d get_lump failed %d\n", vsi->seid, ret); @@ -6246,6 +7263,10 @@ goto err_netdev; vsi->netdev_registered = true; netif_carrier_off(vsi->netdev); +#ifdef CONFIG_I40E_DCB + /* Setup DCB netlink interface */ + i40e_dcbnl_setup(vsi); +#endif /* CONFIG_I40E_DCB */ /* fall through */ case I40E_VSI_FDIR: @@ -6503,12 +7524,14 @@ **/ static int i40e_add_veb(struct i40e_veb *veb, struct i40e_vsi *vsi) { - bool is_default = (vsi->idx == vsi->back->lan_vsi); + bool is_default = false; + bool is_cloud = false; int ret; /* get a VEB from the hardware */ ret = i40e_aq_add_veb(&veb->pf->hw, veb->uplink_seid, vsi->seid, - veb->enabled_tc, is_default, &veb->seid, NULL); + veb->enabled_tc, is_default, + is_cloud, &veb->seid, NULL); if (ret) { dev_info(&veb->pf->pdev->dev, "couldn't add VEB, err %d, aq_err %d\n", @@ -6773,11 +7796,13 @@ /** * i40e_setup_pf_switch - Setup the HW switch on startup or after reset * @pf: board private structure + * @reinit: if the Main VSI needs to re-initialized. * * Returns 0 on success, negative value on failure **/ -static int i40e_setup_pf_switch(struct i40e_pf *pf) +static int i40e_setup_pf_switch(struct i40e_pf *pf, bool reinit) { + u32 rxfc = 0, txfc = 0, rxfc_reg; int ret; /* find out what's out there already */ @@ -6790,14 +7815,8 @@ } i40e_pf_reset_stats(pf); - /* fdir VSI must happen first to be sure it gets queue 0, but only - * if there is enough room for the fdir VSI - */ - if (pf->num_lan_qps > 1) - i40e_fdir_setup(pf); - /* first time setup */ - if (pf->lan_vsi == I40E_NO_VSI) { + if (pf->lan_vsi == I40E_NO_VSI || reinit) { struct i40e_vsi *vsi = NULL; u16 uplink_seid; @@ -6808,19 +7827,15 @@ uplink_seid = pf->veb[pf->lan_veb]->seid; else uplink_seid = pf->mac_seid; - - vsi = i40e_vsi_setup(pf, I40E_VSI_MAIN, uplink_seid, 0); + if (pf->lan_vsi == I40E_NO_VSI) + vsi = i40e_vsi_setup(pf, I40E_VSI_MAIN, uplink_seid, 0); + else if (reinit) + vsi = i40e_vsi_reinit_setup(pf->vsi[pf->lan_vsi]); if (!vsi) { dev_info(&pf->pdev->dev, "setup of MAIN VSI failed\n"); i40e_fdir_teardown(pf); return -EAGAIN; } - /* accommodate kcompat by copying the main VSI queue count - * into the pf, since this newer code pushes the pf queue - * info down a level into a VSI - */ - pf->num_rx_queues = vsi->alloc_queue_pairs; - pf->num_tx_queues = vsi->alloc_queue_pairs; } else { /* force a reset of TC and queue layout configurations */ u8 enabled_tc = pf->vsi[pf->lan_vsi]->tc_config.enabled_tc; @@ -6830,6 +7845,8 @@ } i40e_vlan_stripping_disable(pf->vsi[pf->lan_vsi]); + i40e_fdir_sb_setup(pf); + /* Setup static PF queue filter control settings */ ret = i40e_setup_pf_filter_control(pf); if (ret) { @@ -6848,37 +7865,68 @@ i40e_aq_get_link_info(&pf->hw, true, NULL, NULL); i40e_link_event(pf); - /* Initialize user-specifics link properties */ + /* Initialize user-specific link properties */ pf->fc_autoneg_status = ((pf->hw.phy.link_info.an_info & I40E_AQ_AN_COMPLETED) ? true : false); - pf->hw.fc.requested_mode = I40E_FC_DEFAULT; - if (pf->hw.phy.link_info.an_info & - (I40E_AQ_LINK_PAUSE_TX | I40E_AQ_LINK_PAUSE_RX)) + /* requested_mode is set in probe or by ethtool */ + if (!pf->fc_autoneg_status) + goto no_autoneg; + + if ((pf->hw.phy.link_info.an_info & I40E_AQ_LINK_PAUSE_TX) && + (pf->hw.phy.link_info.an_info & I40E_AQ_LINK_PAUSE_RX)) pf->hw.fc.current_mode = I40E_FC_FULL; else if (pf->hw.phy.link_info.an_info & I40E_AQ_LINK_PAUSE_TX) pf->hw.fc.current_mode = I40E_FC_TX_PAUSE; else if (pf->hw.phy.link_info.an_info & I40E_AQ_LINK_PAUSE_RX) pf->hw.fc.current_mode = I40E_FC_RX_PAUSE; else - pf->hw.fc.current_mode = I40E_FC_DEFAULT; + pf->hw.fc.current_mode = I40E_FC_NONE; - return ret; -} + /* sync the flow control settings with the auto-neg values */ + switch (pf->hw.fc.current_mode) { + case I40E_FC_FULL: + txfc = 1; + rxfc = 1; + break; + case I40E_FC_TX_PAUSE: + txfc = 1; + rxfc = 0; + break; + case I40E_FC_RX_PAUSE: + txfc = 0; + rxfc = 1; + break; + case I40E_FC_NONE: + case I40E_FC_DEFAULT: + txfc = 0; + rxfc = 0; + break; + case I40E_FC_PFC: + /* TBD */ + break; + /* no default case, we have to handle all possibilities here */ + } -/** - * i40e_set_rss_size - helper to set rss_size - * @pf: board private structure - * @queues_left: how many queues - */ -static u16 i40e_set_rss_size(struct i40e_pf *pf, int queues_left) -{ - int num_tc0; + wr32(&pf->hw, I40E_PRTDCB_FCCFG, txfc << I40E_PRTDCB_FCCFG_TFCE_SHIFT); + + rxfc_reg = rd32(&pf->hw, I40E_PRTDCB_MFLCN) & + ~I40E_PRTDCB_MFLCN_RFCE_MASK; + rxfc_reg |= (rxfc << I40E_PRTDCB_MFLCN_RFCE_SHIFT); - num_tc0 = min_t(int, queues_left, pf->rss_size_max); - num_tc0 = min_t(int, num_tc0, nr_cpus_node(numa_node_id())); - num_tc0 = rounddown_pow_of_two(num_tc0); + wr32(&pf->hw, I40E_PRTDCB_MFLCN, rxfc_reg); - return num_tc0; + goto fc_complete; + +no_autoneg: + /* disable L2 flow control, user can turn it on if they wish */ + wr32(&pf->hw, I40E_PRTDCB_FCCFG, 0); + wr32(&pf->hw, I40E_PRTDCB_MFLCN, rd32(&pf->hw, I40E_PRTDCB_MFLCN) & + ~I40E_PRTDCB_MFLCN_RFCE_MASK); + +fc_complete: + i40e_ptp_init(pf); + + return ret; } /** @@ -6887,12 +7935,9 @@ **/ static void i40e_determine_queue_usage(struct i40e_pf *pf) { - int accum_tc_size; int queues_left; pf->num_lan_qps = 0; - pf->num_tc_qps = rounddown_pow_of_two(pf->num_tc_qps); - accum_tc_size = (I40E_MAX_TRAFFIC_CLASS - 1) * pf->num_tc_qps; /* Find the max queues to be put into basic use. We'll always be * using TC0, whether or not DCB is running, and TC0 will get the @@ -6900,99 +7945,45 @@ */ queues_left = pf->hw.func_caps.num_tx_qp; - if (!((pf->flags & I40E_FLAG_MSIX_ENABLED) && - (pf->flags & I40E_FLAG_MQ_ENABLED)) || - !(pf->flags & (I40E_FLAG_RSS_ENABLED | - I40E_FLAG_FDIR_ENABLED | I40E_FLAG_DCB_ENABLED)) || - (queues_left == 1)) { - + if ((queues_left == 1) || + !(pf->flags & I40E_FLAG_MSIX_ENABLED) || + !(pf->flags & (I40E_FLAG_RSS_ENABLED | I40E_FLAG_FD_SB_ENABLED | + I40E_FLAG_DCB_ENABLED))) { /* one qp for PF, no queues for anything else */ queues_left = 0; pf->rss_size = pf->num_lan_qps = 1; /* make sure all the fancies are disabled */ - pf->flags &= ~(I40E_FLAG_RSS_ENABLED | - I40E_FLAG_MQ_ENABLED | - I40E_FLAG_FDIR_ENABLED | - I40E_FLAG_FDIR_ATR_ENABLED | - I40E_FLAG_DCB_ENABLED | - I40E_FLAG_SRIOV_ENABLED | - I40E_FLAG_VMDQ_ENABLED); - - } else if (pf->flags & I40E_FLAG_RSS_ENABLED && - !(pf->flags & I40E_FLAG_FDIR_ENABLED) && - !(pf->flags & I40E_FLAG_DCB_ENABLED)) { - - pf->rss_size = i40e_set_rss_size(pf, queues_left); - - queues_left -= pf->rss_size; - pf->num_lan_qps = pf->rss_size; - - } else if (pf->flags & I40E_FLAG_RSS_ENABLED && - !(pf->flags & I40E_FLAG_FDIR_ENABLED) && - (pf->flags & I40E_FLAG_DCB_ENABLED)) { - - /* save num_tc_qps queues for TCs 1 thru 7 and the rest - * are set up for RSS in TC0 - */ - queues_left -= accum_tc_size; - - pf->rss_size = i40e_set_rss_size(pf, queues_left); - - queues_left -= pf->rss_size; - if (queues_left < 0) { - dev_info(&pf->pdev->dev, "not enough queues for DCB\n"); - return; - } - - pf->num_lan_qps = pf->rss_size + accum_tc_size; - - } else if (pf->flags & I40E_FLAG_RSS_ENABLED && - (pf->flags & I40E_FLAG_FDIR_ENABLED) && - !(pf->flags & I40E_FLAG_DCB_ENABLED)) { - - queues_left -= 1; /* save 1 queue for FD */ - - pf->rss_size = i40e_set_rss_size(pf, queues_left); - - queues_left -= pf->rss_size; - if (queues_left < 0) { - dev_info(&pf->pdev->dev, "not enough queues for Flow Director\n"); - return; - } - - pf->num_lan_qps = pf->rss_size; - - } else if (pf->flags & I40E_FLAG_RSS_ENABLED && - (pf->flags & I40E_FLAG_FDIR_ENABLED) && - (pf->flags & I40E_FLAG_DCB_ENABLED)) { - - /* save 1 queue for TCs 1 thru 7, - * 1 queue for flow director, - * and the rest are set up for RSS in TC0 - */ - queues_left -= 1; - queues_left -= accum_tc_size; + pf->flags &= ~(I40E_FLAG_RSS_ENABLED | + I40E_FLAG_FD_SB_ENABLED | + I40E_FLAG_FD_ATR_ENABLED | + I40E_FLAG_DCB_ENABLED | + I40E_FLAG_SRIOV_ENABLED | + I40E_FLAG_VMDQ_ENABLED); + } else { + /* Not enough queues for all TCs */ + if ((pf->flags & I40E_FLAG_DCB_ENABLED) && + (queues_left < I40E_MAX_TRAFFIC_CLASS)) { + pf->flags &= ~I40E_FLAG_DCB_ENABLED; + dev_info(&pf->pdev->dev, "not enough queues for DCB. DCB is disabled.\n"); + } + pf->num_lan_qps = pf->rss_size_max; + queues_left -= pf->num_lan_qps; + } - pf->rss_size = i40e_set_rss_size(pf, queues_left); - queues_left -= pf->rss_size; - if (queues_left < 0) { - dev_info(&pf->pdev->dev, "not enough queues for DCB and Flow Director\n"); - return; + if (pf->flags & I40E_FLAG_FD_SB_ENABLED) { + if (queues_left > 1) { + queues_left -= 1; /* save 1 queue for FD */ + } else { + pf->flags &= ~I40E_FLAG_FD_SB_ENABLED; + dev_info(&pf->pdev->dev, "not enough queues for Flow Director. Flow Director feature is disabled\n"); } - - pf->num_lan_qps = pf->rss_size + accum_tc_size; - - } else { - dev_info(&pf->pdev->dev, - "Invalid configuration, flags=0x%08llx\n", pf->flags); - return; } if ((pf->flags & I40E_FLAG_SRIOV_ENABLED) && pf->num_vf_qps && pf->num_req_vfs && queues_left) { - pf->num_req_vfs = min_t(int, pf->num_req_vfs, (queues_left / - pf->num_vf_qps)); + pf->num_req_vfs = min_t(int, pf->num_req_vfs, + (queues_left / pf->num_vf_qps)); queues_left -= (pf->num_req_vfs * pf->num_vf_qps); } @@ -7003,6 +7994,7 @@ queues_left -= (pf->num_vmdq_vsis * pf->num_vmdq_qps); } + pf->queues_left = queues_left; return; } @@ -7024,7 +8016,7 @@ settings->hash_lut_size = I40E_HASH_LUT_SIZE_128; /* Flow Director is enabled */ - if (pf->flags & (I40E_FLAG_FDIR_ENABLED | I40E_FLAG_FDIR_ATR_ENABLED)) + if (pf->flags & (I40E_FLAG_FD_SB_ENABLED | I40E_FLAG_FD_ATR_ENABLED)) settings->enable_fdir = true; /* Ethtype and MACVLAN filters enabled for PF */ @@ -7037,6 +8029,44 @@ return 0; } +#define INFO_STRING_LEN 255 +static void i40e_print_features(struct i40e_pf *pf) +{ + struct i40e_hw *hw = &pf->hw; + char *buf, *string; + + string = kzalloc(INFO_STRING_LEN, GFP_KERNEL); + if (!string) { + dev_err(&pf->pdev->dev, "Features string allocation failed\n"); + return; + } + + buf = string; + + buf += sprintf(string, "Features: PF-id[%d] ", hw->pf_id); +#ifdef CONFIG_PCI_IOV + buf += sprintf(buf, "VFs: %d ", pf->num_req_vfs); +#endif + buf += sprintf(buf, "VSIs: %d QP: %d ", pf->hw.func_caps.num_vsis, + pf->vsi[pf->lan_vsi]->num_queue_pairs); + + if (pf->flags & I40E_FLAG_RSS_ENABLED) + buf += sprintf(buf, "RSS "); + buf += sprintf(buf, "FDir "); + if (pf->flags & I40E_FLAG_FD_ATR_ENABLED) + buf += sprintf(buf, "ATR "); + if (pf->flags & I40E_FLAG_FD_SB_ENABLED) + buf += sprintf(buf, "NTUPLE "); + if (pf->flags & I40E_FLAG_DCB_ENABLED) + buf += sprintf(buf, "DCB "); + if (pf->flags & I40E_FLAG_PTP) + buf += sprintf(buf, "PTP "); + + BUG_ON(buf > (string + INFO_STRING_LEN)); + dev_info(&pf->pdev->dev, "%s\n", string); + kfree(string); +} + /** * i40e_probe - Device initialization routine * @pdev: PCI device information struct @@ -7053,6 +8083,8 @@ struct i40e_driver_version dv; struct i40e_pf *pf; struct i40e_hw *hw; + static u16 pfs_found; + u16 link_status; int err = 0; u32 len; @@ -7061,17 +8093,14 @@ return err; /* set up for high or low dma */ - if (!dma_set_mask(&pdev->dev, DMA_BIT_MASK(64))) { - /* coherent mask for the same size will always succeed if - * dma_set_mask does - */ - dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(64)); - } else if (!dma_set_mask(&pdev->dev, DMA_BIT_MASK(32))) { - dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32)); - } else { - dev_err(&pdev->dev, "DMA configuration failed: %d\n", err); - err = -EIO; - goto err_dma; + err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64)); + if (err) { + err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32)); + if (err) { + dev_err(&pdev->dev, + "DMA configuration failed: 0x%x\n", err); + goto err_dma; + } } /* set up pci connections */ @@ -7118,6 +8147,18 @@ hw->subsystem_device_id = pdev->subsystem_device; hw->bus.device = PCI_SLOT(pdev->devfn); hw->bus.func = PCI_FUNC(pdev->devfn); + pf->instance = pfs_found; + + /* do a special CORER for clearing PXE mode once at init */ + if (hw->revision_id == 0 && + (rd32(hw, I40E_GLLAN_RCTL_0) & I40E_GLLAN_RCTL_0_PXE_MODE_MASK)) { + wr32(hw, I40E_GLGEN_RTRIG, I40E_GLGEN_RTRIG_CORER_MASK); + i40e_flush(hw); + msleep(200); + pf->corer_count++; + + i40e_clear_pxe_mode(hw); + } /* Reset here to make sure all is clean and to define PF 'n' */ err = i40e_pf_reset(hw); @@ -7142,6 +8183,9 @@ goto err_pf_reset; } + /* set up a default setting for link flow control */ + pf->hw.fc.requested_mode = I40E_FC_NONE; + err = i40e_init_adminq(hw); dev_info(&pdev->dev, "%s\n", i40e_fw_version_str(hw)); if (err) { @@ -7152,6 +8196,9 @@ goto err_pf_reset; } + i40e_verify_eeprom(pf); + + i40e_clear_pxe_mode(hw); err = i40e_get_capabilities(pf); if (err) goto err_adminq_setup; @@ -7178,7 +8225,7 @@ } i40e_get_mac_addr(hw, hw->mac.addr); - if (i40e_validate_mac_addr(hw->mac.addr)) { + if (!is_valid_ether_addr(hw->mac.addr)) { dev_info(&pdev->dev, "invalid MAC address %pM\n", hw->mac.addr); err = -EIO; goto err_mac_addr; @@ -7188,6 +8235,14 @@ pci_set_drvdata(pdev, pf); pci_save_state(pdev); +#ifdef CONFIG_I40E_DCB + err = i40e_init_pf_dcb(pf); + if (err) { + dev_info(&pdev->dev, "init_pf_dcb failed: %d\n", err); + pf->flags &= ~I40E_FLAG_DCB_ENABLED; + goto err_init_dcb; + } +#endif /* CONFIG_I40E_DCB */ /* set up periodic task facility */ setup_timer(&pf->service_timer, i40e_service_timer, (unsigned long)pf); @@ -7198,6 +8253,10 @@ pf->flags |= I40E_FLAG_NEED_LINK_UPDATE; pf->link_check_timeout = jiffies; + /* WoL defaults to disabled */ + pf->wol_en = false; + device_set_wakeup_enable(&pf->pdev->dev, pf->wol_en); + /* set up the main switch operations */ i40e_determine_queue_usage(pf); i40e_init_interrupt_scheme(pf); @@ -7212,7 +8271,7 @@ goto err_switch_setup; } - err = i40e_setup_pf_switch(pf); + err = i40e_setup_pf_switch(pf, false); if (err) { dev_info(&pdev->dev, "setup_pf_switch failed: %d\n", err); goto err_vsis; @@ -7240,7 +8299,8 @@ /* prep for VF support */ if ((pf->flags & I40E_FLAG_SRIOV_ENABLED) && - (pf->flags & I40E_FLAG_MSIX_ENABLED)) { + (pf->flags & I40E_FLAG_MSIX_ENABLED) && + !test_bit(__I40E_BAD_EEPROM, &pf->state)) { u32 val; /* disable link interrupts for VFs */ @@ -7248,8 +8308,20 @@ val &= ~I40E_PFGEN_PORTMDIO_NUM_VFLINK_STAT_ENA_MASK; wr32(hw, I40E_PFGEN_PORTMDIO_NUM, val); i40e_flush(hw); + + if (pci_num_vf(pdev)) { + dev_info(&pdev->dev, + "Active VFs found, allocating resources.\n"); + err = i40e_alloc_vfs(pf, pci_num_vf(pdev)); + if (err) + dev_info(&pdev->dev, + "Error %d allocating resources for existing VFs\n", + err); + } } + pfs_found++; + i40e_dbg_pf_init(pf); /* tell the firmware that we're starting */ @@ -7263,15 +8335,44 @@ mod_timer(&pf->service_timer, round_jiffies(jiffies + pf->service_timer_period)); + /* Get the negotiated link width and speed from PCI config space */ + pcie_capability_read_word(pf->pdev, PCI_EXP_LNKSTA, &link_status); + + i40e_set_pci_config_data(hw, link_status); + + dev_info(&pdev->dev, "PCI-Express: %s %s\n", + (hw->bus.speed == i40e_bus_speed_8000 ? "Speed 8.0GT/s" : + hw->bus.speed == i40e_bus_speed_5000 ? "Speed 5.0GT/s" : + hw->bus.speed == i40e_bus_speed_2500 ? "Speed 2.5GT/s" : + "Unknown"), + (hw->bus.width == i40e_bus_width_pcie_x8 ? "Width x8" : + hw->bus.width == i40e_bus_width_pcie_x4 ? "Width x4" : + hw->bus.width == i40e_bus_width_pcie_x2 ? "Width x2" : + hw->bus.width == i40e_bus_width_pcie_x1 ? "Width x1" : + "Unknown")); + + if (hw->bus.width < i40e_bus_width_pcie_x8 || + hw->bus.speed < i40e_bus_speed_8000) { + dev_warn(&pdev->dev, "PCI-Express bandwidth available for this device may be insufficient for optimal performance.\n"); + dev_warn(&pdev->dev, "Please move the device to a different PCI-e link with more lanes and/or higher transfer rate.\n"); + } + + /* print a string summarizing features */ + i40e_print_features(pf); + return 0; /* Unwind what we've done if something failed in the setup */ err_vsis: set_bit(__I40E_DOWN, &pf->state); -err_switch_setup: i40e_clear_interrupt_scheme(pf); kfree(pf->vsi); +err_switch_setup: + i40e_reset_interrupt_capability(pf); del_timer_sync(&pf->service_timer); +#ifdef CONFIG_I40E_DCB +err_init_dcb: +#endif /* CONFIG_I40E_DCB */ err_mac_addr: err_configure_lan_hmc: (void)i40e_shutdown_lan_hmc(hw); @@ -7313,16 +8414,18 @@ i40e_dbg_pf_exit(pf); - if (pf->flags & I40E_FLAG_SRIOV_ENABLED) { - i40e_free_vfs(pf); - pf->flags &= ~I40E_FLAG_SRIOV_ENABLED; - } + i40e_ptp_stop(pf); /* no more scheduling of any task */ set_bit(__I40E_DOWN, &pf->state); del_timer_sync(&pf->service_timer); cancel_work_sync(&pf->service_task); + if (pf->flags & I40E_FLAG_SRIOV_ENABLED) { + i40e_free_vfs(pf); + pf->flags &= ~I40E_FLAG_SRIOV_ENABLED; + } + i40e_fdir_teardown(pf); /* If there is a switch structure or any orphans, remove them. @@ -7356,7 +8459,6 @@ "Failed to destroy the HMC resources: %d\n", ret_code); /* shutdown the adminq */ - i40e_aq_queue_shutdown(&pf->hw, true); ret_code = i40e_shutdown_adminq(&pf->hw); if (ret_code) dev_warn(&pdev->dev, @@ -7413,7 +8515,11 @@ dev_info(&pdev->dev, "%s: error %d\n", __func__, error); /* shutdown all operations */ - i40e_pf_quiesce_all_vsi(pf); + if (!test_bit(__I40E_SUSPENDED, &pf->state)) { + rtnl_lock(); + i40e_prep_for_reset(pf); + rtnl_unlock(); + } /* Request a slot reset */ return PCI_ERS_RESULT_NEED_RESET; @@ -7476,9 +8582,103 @@ struct i40e_pf *pf = pci_get_drvdata(pdev); dev_info(&pdev->dev, "%s\n", __func__); + if (test_bit(__I40E_SUSPENDED, &pf->state)) + return; + + rtnl_lock(); i40e_handle_reset_warning(pf); + rtnl_lock(); +} + +/** + * i40e_shutdown - PCI callback for shutting down + * @pdev: PCI device information struct + **/ +static void i40e_shutdown(struct pci_dev *pdev) +{ + struct i40e_pf *pf = pci_get_drvdata(pdev); + struct i40e_hw *hw = &pf->hw; + + set_bit(__I40E_SUSPENDED, &pf->state); + set_bit(__I40E_DOWN, &pf->state); + rtnl_lock(); + i40e_prep_for_reset(pf); + rtnl_unlock(); + + wr32(hw, I40E_PFPM_APM, (pf->wol_en ? I40E_PFPM_APM_APME_MASK : 0)); + wr32(hw, I40E_PFPM_WUFC, (pf->wol_en ? I40E_PFPM_WUFC_MAG_MASK : 0)); + + if (system_state == SYSTEM_POWER_OFF) { + pci_wake_from_d3(pdev, pf->wol_en); + pci_set_power_state(pdev, PCI_D3hot); + } +} + +#ifdef CONFIG_PM +/** + * i40e_suspend - PCI callback for moving to D3 + * @pdev: PCI device information struct + **/ +static int i40e_suspend(struct pci_dev *pdev, pm_message_t state) +{ + struct i40e_pf *pf = pci_get_drvdata(pdev); + struct i40e_hw *hw = &pf->hw; + + set_bit(__I40E_SUSPENDED, &pf->state); + set_bit(__I40E_DOWN, &pf->state); + rtnl_lock(); + i40e_prep_for_reset(pf); + rtnl_unlock(); + + wr32(hw, I40E_PFPM_APM, (pf->wol_en ? I40E_PFPM_APM_APME_MASK : 0)); + wr32(hw, I40E_PFPM_WUFC, (pf->wol_en ? I40E_PFPM_WUFC_MAG_MASK : 0)); + + pci_wake_from_d3(pdev, pf->wol_en); + pci_set_power_state(pdev, PCI_D3hot); + + return 0; +} + +/** + * i40e_resume - PCI callback for waking up from D3 + * @pdev: PCI device information struct + **/ +static int i40e_resume(struct pci_dev *pdev) +{ + struct i40e_pf *pf = pci_get_drvdata(pdev); + u32 err; + + pci_set_power_state(pdev, PCI_D0); + pci_restore_state(pdev); + /* pci_restore_state() clears dev->state_saves, so + * call pci_save_state() again to restore it. + */ + pci_save_state(pdev); + + err = pci_enable_device_mem(pdev); + if (err) { + dev_err(&pdev->dev, + "%s: Cannot enable PCI device from suspend\n", + __func__); + return err; + } + pci_set_master(pdev); + + /* no wakeup events while running */ + pci_wake_from_d3(pdev, false); + + /* handling the reset will rebuild the device state */ + if (test_and_clear_bit(__I40E_SUSPENDED, &pf->state)) { + clear_bit(__I40E_DOWN, &pf->state); + rtnl_lock(); + i40e_reset_and_rebuild(pf, false); + rtnl_unlock(); + } + + return 0; } +#endif static const struct pci_error_handlers i40e_err_handler = { .error_detected = i40e_pci_error_detected, .slot_reset = i40e_pci_error_slot_reset, @@ -7490,6 +8690,11 @@ .id_table = i40e_pci_tbl, .probe = i40e_probe, .remove = i40e_remove, +#ifdef CONFIG_PM + .suspend = i40e_suspend, + .resume = i40e_resume, +#endif + .shutdown = i40e_shutdown, .err_handler = &i40e_err_handler, .sriov_configure = i40e_pci_sriov_configure, }; --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40e/i40e_nvm.c +++ linux-3.13.0/drivers/net/ethernet/intel/i40e/i40e_nvm.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Intel Ethernet Controller XL710 Family Linux Driver - * Copyright(c) 2013 Intel Corporation. + * Copyright(c) 2013 - 2014 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, @@ -12,9 +12,8 @@ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * - * You should have 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. + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . * * The full GNU General Public License is included in this distribution in * the file called "COPYING". @@ -28,14 +27,14 @@ #include "i40e_prototype.h" /** - * i40e_init_nvm_ops - Initialize NVM function pointers. - * @hw: pointer to the HW structure. + * i40e_init_nvm_ops - Initialize NVM function pointers + * @hw: pointer to the HW structure * - * Setups the function pointers and the NVM info structure. Should be called - * once per NVM initialization, e.g. inside the i40e_init_shared_code(). - * Please notice that the NVM term is used here (& in all methods covered - * in this file) as an equivalent of the FLASH part mapped into the SR. - * We are accessing FLASH always thru the Shadow RAM. + * Setup the function pointers and the NVM info structure. Should be called + * once per NVM initialization, e.g. inside the i40e_init_shared_code(). + * Please notice that the NVM term is used here (& in all methods covered + * in this file) as an equivalent of the FLASH part mapped into the SR. + * We are accessing FLASH always thru the Shadow RAM. **/ i40e_status i40e_init_nvm(struct i40e_hw *hw) { @@ -50,16 +49,16 @@ gens = rd32(hw, I40E_GLNVM_GENS); sr_size = ((gens & I40E_GLNVM_GENS_SR_SIZE_MASK) >> I40E_GLNVM_GENS_SR_SIZE_SHIFT); - /* Switching to words (sr_size contains power of 2KB). */ + /* Switching to words (sr_size contains power of 2KB) */ nvm->sr_size = (1 << sr_size) * I40E_SR_WORDS_IN_1KB; - /* Check if we are in the normal or blank NVM programming mode. */ + /* Check if we are in the normal or blank NVM programming mode */ fla = rd32(hw, I40E_GLNVM_FLA); - if (fla & I40E_GLNVM_FLA_LOCKED_MASK) { /* Normal programming mode. */ - /* Max NVM timeout. */ + if (fla & I40E_GLNVM_FLA_LOCKED_MASK) { /* Normal programming mode */ + /* Max NVM timeout */ nvm->timeout = I40E_MAX_NVM_TIMEOUT; nvm->blank_nvm_mode = false; - } else { /* Blank programming mode. */ + } else { /* Blank programming mode */ nvm->blank_nvm_mode = true; ret_code = I40E_ERR_NVM_BLANK_MODE; hw_dbg(hw, "NVM init error: unsupported blank mode.\n"); @@ -69,12 +68,12 @@ } /** - * i40e_acquire_nvm - Generic request for acquiring the NVM ownership. - * @hw: pointer to the HW structure. - * @access: NVM access type (read or write). + * i40e_acquire_nvm - Generic request for acquiring the NVM ownership + * @hw: pointer to the HW structure + * @access: NVM access type (read or write) * - * This function will request NVM ownership for reading - * via the proper Admin Command. + * This function will request NVM ownership for reading + * via the proper Admin Command. **/ i40e_status i40e_acquire_nvm(struct i40e_hw *hw, enum i40e_aq_resource_access_type access) @@ -88,20 +87,20 @@ ret_code = i40e_aq_request_resource(hw, I40E_NVM_RESOURCE_ID, access, 0, &time, NULL); - /* Reading the Global Device Timer. */ + /* Reading the Global Device Timer */ gtime = rd32(hw, I40E_GLVFGEN_TIMER); - /* Store the timeout. */ + /* Store the timeout */ hw->nvm.hw_semaphore_timeout = I40E_MS_TO_GTIME(time) + gtime; if (ret_code) { - /* Set the polling timeout. */ + /* Set the polling timeout */ if (time > I40E_MAX_NVM_TIMEOUT) timeout = I40E_MS_TO_GTIME(I40E_MAX_NVM_TIMEOUT) + gtime; else timeout = hw->nvm.hw_semaphore_timeout; - /* Poll until the current NVM owner timeouts. */ + /* Poll until the current NVM owner timeouts */ while (gtime < timeout) { usleep_range(10000, 20000); ret_code = i40e_aq_request_resource(hw, @@ -129,10 +128,10 @@ } /** - * i40e_release_nvm - Generic request for releasing the NVM ownership. - * @hw: pointer to the HW structure. + * i40e_release_nvm - Generic request for releasing the NVM ownership + * @hw: pointer to the HW structure * - * This function will release NVM resource via the proper Admin Command. + * This function will release NVM resource via the proper Admin Command. **/ void i40e_release_nvm(struct i40e_hw *hw) { @@ -141,17 +140,17 @@ } /** - * i40e_poll_sr_srctl_done_bit - Polls the GLNVM_SRCTL done bit. - * @hw: pointer to the HW structure. + * i40e_poll_sr_srctl_done_bit - Polls the GLNVM_SRCTL done bit + * @hw: pointer to the HW structure * - * Polls the SRCTL Shadow RAM register done bit. + * Polls the SRCTL Shadow RAM register done bit. **/ static i40e_status i40e_poll_sr_srctl_done_bit(struct i40e_hw *hw) { i40e_status ret_code = I40E_ERR_TIMEOUT; u32 srctl, wait_cnt; - /* Poll the I40E_GLNVM_SRCTL until the done bit is set. */ + /* Poll the I40E_GLNVM_SRCTL until the done bit is set */ for (wait_cnt = 0; wait_cnt < I40E_SRRD_SRCTL_ATTEMPTS; wait_cnt++) { srctl = rd32(hw, I40E_GLNVM_SRCTL); if (srctl & I40E_GLNVM_SRCTL_DONE_MASK) { @@ -161,20 +160,20 @@ udelay(5); } if (ret_code == I40E_ERR_TIMEOUT) - hw_dbg(hw, "Done bit in GLNVM_SRCTL not set"); + hw_dbg(hw, "Done bit in GLNVM_SRCTL not set\n"); return ret_code; } /** - * i40e_read_nvm_srctl - Reads Shadow RAM. - * @hw: pointer to the HW structure. - * @offset: offset of the Shadow RAM word to read (0x000000 - 0x001FFF). - * @data: word read from the Shadow RAM. + * i40e_read_nvm_word - Reads Shadow RAM + * @hw: pointer to the HW structure + * @offset: offset of the Shadow RAM word to read (0x000000 - 0x001FFF) + * @data: word read from the Shadow RAM * - * Reads 16 bit word from the Shadow RAM using the GLNVM_SRCTL register. + * Reads one 16 bit word from the Shadow RAM using the GLNVM_SRCTL register. **/ -static i40e_status i40e_read_nvm_srctl(struct i40e_hw *hw, u16 offset, - u16 *data) +i40e_status i40e_read_nvm_word(struct i40e_hw *hw, u16 offset, + u16 *data) { i40e_status ret_code = I40E_ERR_TIMEOUT; u32 sr_reg; @@ -185,15 +184,15 @@ goto read_nvm_exit; } - /* Poll the done bit first. */ + /* Poll the done bit first */ ret_code = i40e_poll_sr_srctl_done_bit(hw); if (!ret_code) { - /* Write the address and start reading. */ + /* Write the address and start reading */ sr_reg = (u32)(offset << I40E_GLNVM_SRCTL_ADDR_SHIFT) | (1 << I40E_GLNVM_SRCTL_START_SHIFT); wr32(hw, I40E_GLNVM_SRCTL, sr_reg); - /* Poll I40E_GLNVM_SRCTL until the done bit is set. */ + /* Poll I40E_GLNVM_SRCTL until the done bit is set */ ret_code = i40e_poll_sr_srctl_done_bit(hw); if (!ret_code) { sr_reg = rd32(hw, I40E_GLNVM_SRDATA); @@ -211,80 +210,45 @@ } /** - * i40e_read_nvm_word - Reads Shadow RAM word. - * @hw: pointer to the HW structure. - * @offset: offset of the Shadow RAM word to read (0x000000 - 0x001FFF). - * @data: word read from the Shadow RAM. - * - * Reads 16 bit word from the Shadow RAM. Each read is preceded - * with the NVM ownership taking and followed by the release. - **/ -i40e_status i40e_read_nvm_word(struct i40e_hw *hw, u16 offset, - u16 *data) -{ - i40e_status ret_code = 0; - - ret_code = i40e_acquire_nvm(hw, I40E_RESOURCE_READ); - if (!ret_code) { - ret_code = i40e_read_nvm_srctl(hw, offset, data); - i40e_release_nvm(hw); - } - - return ret_code; -} - -/** - * i40e_read_nvm_buffer - Reads Shadow RAM buffer. - * @hw: pointer to the HW structure. - * @offset: offset of the Shadow RAM word to read (0x000000 - 0x001FFF). - * @words: number of words to read (in) & - * number of words read before the NVM ownership timeout (out). - * @data: words read from the Shadow RAM. - * - * Reads 16 bit words (data buffer) from the SR using the i40e_read_nvm_srrd() - * method. The buffer read is preceded by the NVM ownership take - * and followed by the release. + * i40e_read_nvm_buffer - Reads Shadow RAM buffer + * @hw: pointer to the HW structure + * @offset: offset of the Shadow RAM word to read (0x000000 - 0x001FFF). + * @words: (in) number of words to read; (out) number of words actually read + * @data: words read from the Shadow RAM + * + * Reads 16 bit words (data buffer) from the SR using the i40e_read_nvm_srrd() + * method. The buffer read is preceded by the NVM ownership take + * and followed by the release. **/ i40e_status i40e_read_nvm_buffer(struct i40e_hw *hw, u16 offset, u16 *words, u16 *data) { i40e_status ret_code = 0; u16 index, word; - u32 time; - ret_code = i40e_acquire_nvm(hw, I40E_RESOURCE_READ); - if (!ret_code) { - /* Loop thru the selected region. */ - for (word = 0; word < *words; word++) { - index = offset + word; - ret_code = i40e_read_nvm_srctl(hw, index, &data[word]); - if (ret_code) - break; - /* Check if we didn't exceeded the semaphore timeout. */ - time = rd32(hw, I40E_GLVFGEN_TIMER); - if (time >= hw->nvm.hw_semaphore_timeout) { - ret_code = I40E_ERR_TIMEOUT; - hw_dbg(hw, "NVM read error: timeout.\n"); - break; - } - } - /* Update the number of words read from the Shadow RAM. */ - *words = word; - /* Release the NVM ownership. */ - i40e_release_nvm(hw); + /* Loop thru the selected region */ + for (word = 0; word < *words; word++) { + index = offset + word; + ret_code = i40e_read_nvm_word(hw, index, &data[word]); + if (ret_code) + break; } + /* Update the number of words read from the Shadow RAM */ + *words = word; + return ret_code; } /** - * i40e_calc_nvm_checksum - Calculates and returns the checksum - * @hw: pointer to hardware structure - * - * This function calculate SW Checksum that covers the whole 64kB shadow RAM - * except the VPD and PCIe ALT Auto-load modules. The structure and size of VPD - * is customer specific and unknown. Therefore, this function skips all maximum - * possible size of VPD (1kB). + * i40e_calc_nvm_checksum - Calculates and returns the checksum + * @hw: pointer to hardware structure + * @checksum: pointer to the checksum + * + * This function calculates SW Checksum that covers the whole 64kB shadow RAM + * except the VPD and PCIe ALT Auto-load modules. The structure and size of VPD + * is customer specific and unknown. Therefore, this function skips all maximum + * possible size of VPD (1kB). **/ static i40e_status i40e_calc_nvm_checksum(struct i40e_hw *hw, u16 *checksum) @@ -297,14 +261,14 @@ u32 i = 0; /* read pointer to VPD area */ - ret_code = i40e_read_nvm_srctl(hw, I40E_SR_VPD_PTR, &vpd_module); + ret_code = i40e_read_nvm_word(hw, I40E_SR_VPD_PTR, &vpd_module); if (ret_code) { ret_code = I40E_ERR_NVM_CHECKSUM; goto i40e_calc_nvm_checksum_exit; } /* read pointer to PCIe Alt Auto-load module */ - ret_code = i40e_read_nvm_srctl(hw, I40E_SR_PCIE_ALT_AUTO_LOAD_PTR, + ret_code = i40e_read_nvm_word(hw, I40E_SR_PCIE_ALT_AUTO_LOAD_PTR, &pcie_alt_module); if (ret_code) { ret_code = I40E_ERR_NVM_CHECKSUM; @@ -331,7 +295,7 @@ break; } - ret_code = i40e_read_nvm_srctl(hw, (u16)i, &word); + ret_code = i40e_read_nvm_word(hw, (u16)i, &word); if (ret_code) { ret_code = I40E_ERR_NVM_CHECKSUM; goto i40e_calc_nvm_checksum_exit; @@ -346,19 +310,19 @@ } /** - * i40e_validate_nvm_checksum - Validate EEPROM checksum - * @hw: pointer to hardware structure - * @checksum: calculated checksum + * i40e_validate_nvm_checksum - Validate EEPROM checksum + * @hw: pointer to hardware structure + * @checksum: calculated checksum * - * Performs checksum calculation and validates the NVM SW checksum. If the - * caller does not need checksum, the value can be NULL. + * Performs checksum calculation and validates the NVM SW checksum. If the + * caller does not need checksum, the value can be NULL. **/ i40e_status i40e_validate_nvm_checksum(struct i40e_hw *hw, u16 *checksum) { i40e_status ret_code = 0; u16 checksum_sr = 0; - u16 checksum_local; + u16 checksum_local = 0; ret_code = i40e_acquire_nvm(hw, I40E_RESOURCE_READ); if (ret_code) @@ -371,7 +335,7 @@ /* Do not use i40e_read_nvm_word() because we do not want to take * the synchronization semaphores twice here. */ - i40e_read_nvm_srctl(hw, I40E_SR_SW_CHECKSUM_WORD, &checksum_sr); + i40e_read_nvm_word(hw, I40E_SR_SW_CHECKSUM_WORD, &checksum_sr); /* Verify read checksum from EEPROM is the same as * calculated checksum --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40e/i40e_osdep.h +++ linux-3.13.0/drivers/net/ethernet/intel/i40e/i40e_osdep.h @@ -1,7 +1,7 @@ /******************************************************************************* * * Intel Ethernet Controller XL710 Family Linux Driver - * Copyright(c) 2013 Intel Corporation. + * Copyright(c) 2013 - 2014 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, @@ -12,9 +12,8 @@ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * - * You should have 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. + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . * * The full GNU General Public License is included in this distribution in * the file called "COPYING". --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40e/i40e_prototype.h +++ linux-3.13.0/drivers/net/ethernet/intel/i40e/i40e_prototype.h @@ -1,7 +1,7 @@ /******************************************************************************* * * Intel Ethernet Controller XL710 Family Linux Driver - * Copyright(c) 2013 Intel Corporation. + * Copyright(c) 2013 - 2014 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, @@ -12,9 +12,8 @@ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * - * You should have 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. + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . * * The full GNU General Public License is included in this distribution in * the file called "COPYING". @@ -51,7 +50,6 @@ void *buff, /* can be NULL */ u16 buff_size, struct i40e_asq_cmd_details *cmd_details); -bool i40e_asq_done(struct i40e_hw *hw); /* debug function for adminq */ void i40e_debug_aq(struct i40e_hw *hw, @@ -60,10 +58,11 @@ void *buffer); void i40e_idle_aq(struct i40e_hw *hw); -void i40e_resume_aq(struct i40e_hw *hw); +bool i40e_check_asq_alive(struct i40e_hw *hw); +i40e_status i40e_aq_queue_shutdown(struct i40e_hw *hw, bool unloading); u32 i40e_led_get(struct i40e_hw *hw); -void i40e_led_set(struct i40e_hw *hw, u32 mode); +void i40e_led_set(struct i40e_hw *hw, u32 mode, bool blink); /* admin send queue commands */ @@ -71,8 +70,6 @@ u16 *fw_major_version, u16 *fw_minor_version, u16 *api_major_version, u16 *api_minor_version, struct i40e_asq_cmd_details *cmd_details); -i40e_status i40e_aq_queue_shutdown(struct i40e_hw *hw, - bool unloading); i40e_status i40e_aq_set_phy_reset(struct i40e_hw *hw, struct i40e_asq_cmd_details *cmd_details); i40e_status i40e_aq_set_default_vsi(struct i40e_hw *hw, u16 vsi_id, @@ -95,9 +92,9 @@ u16 vsi_id, bool set_filter, struct i40e_asq_cmd_details *cmd_details); i40e_status i40e_aq_set_vsi_unicast_promiscuous(struct i40e_hw *hw, - u16 vsi_id, bool set, struct i40e_asq_cmd_details *cmd_details); + u16 vsi_id, bool set, struct i40e_asq_cmd_details *cmd_details); i40e_status i40e_aq_set_vsi_multicast_promiscuous(struct i40e_hw *hw, - u16 vsi_id, bool set, struct i40e_asq_cmd_details *cmd_details); + u16 vsi_id, bool set, struct i40e_asq_cmd_details *cmd_details); i40e_status i40e_aq_get_vsi_params(struct i40e_hw *hw, struct i40e_vsi_context *vsi_ctx, struct i40e_asq_cmd_details *cmd_details); @@ -106,7 +103,8 @@ struct i40e_asq_cmd_details *cmd_details); i40e_status i40e_aq_add_veb(struct i40e_hw *hw, u16 uplink_seid, u16 downlink_seid, u8 enabled_tc, - bool default_port, u16 *pveb_seid, + bool default_port, bool enable_l2_filtering, + u16 *pveb_seid, struct i40e_asq_cmd_details *cmd_details); i40e_status i40e_aq_get_veb_parameters(struct i40e_hw *hw, u16 veb_seid, u16 *switch_id, bool *floating, @@ -119,12 +117,6 @@ i40e_status i40e_aq_remove_macvlan(struct i40e_hw *hw, u16 vsi_id, struct i40e_aqc_remove_macvlan_element_data *mv_list, u16 count, struct i40e_asq_cmd_details *cmd_details); -i40e_status i40e_aq_add_vlan(struct i40e_hw *hw, u16 vsi_id, - struct i40e_aqc_add_remove_vlan_element_data *v_list, - u8 count, struct i40e_asq_cmd_details *cmd_details); -i40e_status i40e_aq_remove_vlan(struct i40e_hw *hw, u16 vsi_id, - struct i40e_aqc_add_remove_vlan_element_data *v_list, - u8 count, struct i40e_asq_cmd_details *cmd_details); i40e_status i40e_aq_send_msg_to_vf(struct i40e_hw *hw, u16 vfid, u32 v_opcode, u32 v_retval, u8 *msg, u16 msglen, struct i40e_asq_cmd_details *cmd_details); @@ -164,11 +156,19 @@ struct i40e_asq_cmd_details *cmd_details); i40e_status i40e_aq_start_lldp(struct i40e_hw *hw, struct i40e_asq_cmd_details *cmd_details); +i40e_status i40e_aq_add_udp_tunnel(struct i40e_hw *hw, + u16 udp_port, u8 header_len, + u8 protocol_index, u8 *filter_index, + struct i40e_asq_cmd_details *cmd_details); +i40e_status i40e_aq_del_udp_tunnel(struct i40e_hw *hw, u8 index, + struct i40e_asq_cmd_details *cmd_details); i40e_status i40e_aq_delete_element(struct i40e_hw *hw, u16 seid, struct i40e_asq_cmd_details *cmd_details); i40e_status i40e_aq_mac_address_write(struct i40e_hw *hw, u16 flags, u8 *mac_addr, struct i40e_asq_cmd_details *cmd_details); +i40e_status i40e_aq_dcb_updated(struct i40e_hw *hw, + struct i40e_asq_cmd_details *cmd_details); i40e_status i40e_aq_set_hmc_resource_profile(struct i40e_hw *hw, enum i40e_aq_hmc_profile profile, u8 pe_vf_enabled_count, @@ -179,6 +179,15 @@ i40e_status i40e_aq_config_vsi_tc_bw(struct i40e_hw *hw, u16 seid, struct i40e_aqc_configure_vsi_tc_bw_data *bw_data, struct i40e_asq_cmd_details *cmd_details); +i40e_status i40e_aq_config_switch_comp_ets(struct i40e_hw *hw, + u16 seid, + struct i40e_aqc_configure_switching_comp_ets_data *ets_data, + enum i40e_admin_queue_opc opcode, + struct i40e_asq_cmd_details *cmd_details); +i40e_status i40e_aq_config_switch_comp_bw_config(struct i40e_hw *hw, + u16 seid, + struct i40e_aqc_configure_switching_comp_bw_config_data *bw_data, + struct i40e_asq_cmd_details *cmd_details); i40e_status i40e_aq_query_vsi_bw_config(struct i40e_hw *hw, u16 seid, struct i40e_aqc_query_vsi_bw_config_resp *bw_data, @@ -207,8 +216,6 @@ i40e_status i40e_get_mac_addr(struct i40e_hw *hw, u8 *mac_addr); i40e_status i40e_validate_mac_addr(u8 *mac_addr); -i40e_status i40e_read_lldp_cfg(struct i40e_hw *hw, - struct i40e_lldp_variables *lldp_cfg); /* prototype for functions used for NVM access */ i40e_status i40e_init_nvm(struct i40e_hw *hw); i40e_status i40e_acquire_nvm(struct i40e_hw *hw, @@ -222,6 +229,14 @@ u16 *words, u16 *data); i40e_status i40e_validate_nvm_checksum(struct i40e_hw *hw, u16 *checksum); +void i40e_set_pci_config_data(struct i40e_hw *hw, u16 link_status); + +extern struct i40e_rx_ptype_decoded i40e_ptype_lookup[]; + +static inline struct i40e_rx_ptype_decoded decode_rx_desc_ptype(u8 ptype) +{ + return i40e_ptype_lookup[ptype]; +} /* prototype for functions used for SW locks */ @@ -236,4 +251,9 @@ struct i40e_asq_cmd_details *cmd_details); i40e_status i40e_set_filter_control(struct i40e_hw *hw, struct i40e_filter_control_settings *settings); +i40e_status i40e_aq_add_rem_control_packet_filter(struct i40e_hw *hw, + u8 *mac_addr, u16 ethtype, u16 flags, + u16 vsi_seid, u16 queue, bool is_add, + struct i40e_control_filter_stats *stats, + struct i40e_asq_cmd_details *cmd_details); #endif /* _I40E_PROTOTYPE_H_ */ --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40e/i40e_ptp.c +++ linux-3.13.0/drivers/net/ethernet/intel/i40e/i40e_ptp.c @@ -0,0 +1,662 @@ +/******************************************************************************* + * + * Intel Ethernet Controller XL710 Family Linux Driver + * Copyright(c) 2013 - 2014 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. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + * + * The full GNU General Public License is included in this distribution in + * the file called "COPYING". + * + * Contact Information: + * e1000-devel Mailing List + * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 + * + ******************************************************************************/ + +#include "i40e.h" +#include +#include + +/* The XL710 timesync is very much like Intel's 82599 design when it comes to + * the fundamental clock design. However, the clock operations are much simpler + * in the XL710 because the device supports a full 64 bits of nanoseconds. + * Because the field is so wide, we can forgo the cycle counter and just + * operate with the nanosecond field directly without fear of overflow. + * + * Much like the 82599, the update period is dependent upon the link speed: + * At 40Gb link or no link, the period is 1.6ns. + * At 10Gb link, the period is multiplied by 2. (3.2ns) + * At 1Gb link, the period is multiplied by 20. (32ns) + * 1588 functionality is not supported at 100Mbps. + */ +#define I40E_PTP_40GB_INCVAL 0x0199999999ULL +#define I40E_PTP_10GB_INCVAL 0x0333333333ULL +#define I40E_PTP_1GB_INCVAL 0x2000000000ULL + +#define I40E_PRTTSYN_CTL1_TSYNTYPE_V1 (0x1 << \ + I40E_PRTTSYN_CTL1_TSYNTYPE_SHIFT) +#define I40E_PRTTSYN_CTL1_TSYNTYPE_V2 (0x2 << \ + I40E_PRTTSYN_CTL1_TSYNTYPE_SHIFT) +#define I40E_PTP_TX_TIMEOUT (HZ * 15) + +/** + * i40e_ptp_read - Read the PHC time from the device + * @pf: Board private structure + * @ts: timespec structure to hold the current time value + * + * This function reads the PRTTSYN_TIME registers and stores them in a + * timespec. However, since the registers are 64 bits of nanoseconds, we must + * convert the result to a timespec before we can return. + **/ +static void i40e_ptp_read(struct i40e_pf *pf, struct timespec *ts) +{ + struct i40e_hw *hw = &pf->hw; + u32 hi, lo; + u64 ns; + + /* The timer latches on the lowest register read. */ + lo = rd32(hw, I40E_PRTTSYN_TIME_L); + hi = rd32(hw, I40E_PRTTSYN_TIME_H); + + ns = (((u64)hi) << 32) | lo; + + *ts = ns_to_timespec(ns); +} + +/** + * i40e_ptp_write - Write the PHC time to the device + * @pf: Board private structure + * @ts: timespec structure that holds the new time value + * + * This function writes the PRTTSYN_TIME registers with the user value. Since + * we receive a timespec from the stack, we must convert that timespec into + * nanoseconds before programming the registers. + **/ +static void i40e_ptp_write(struct i40e_pf *pf, const struct timespec *ts) +{ + struct i40e_hw *hw = &pf->hw; + u64 ns = timespec_to_ns(ts); + + /* The timer will not update until the high register is written, so + * write the low register first. + */ + wr32(hw, I40E_PRTTSYN_TIME_L, ns & 0xFFFFFFFF); + wr32(hw, I40E_PRTTSYN_TIME_H, ns >> 32); +} + +/** + * i40e_ptp_convert_to_hwtstamp - Convert device clock to system time + * @hwtstamps: Timestamp structure to update + * @timestamp: Timestamp from the hardware + * + * We need to convert the NIC clock value into a hwtstamp which can be used by + * the upper level timestamping functions. Since the timestamp is simply a 64- + * bit nanosecond value, we can call ns_to_ktime directly to handle this. + **/ +static void i40e_ptp_convert_to_hwtstamp(struct skb_shared_hwtstamps *hwtstamps, + u64 timestamp) +{ + memset(hwtstamps, 0, sizeof(*hwtstamps)); + + hwtstamps->hwtstamp = ns_to_ktime(timestamp); +} + +/** + * i40e_ptp_adjfreq - Adjust the PHC frequency + * @ptp: The PTP clock structure + * @ppb: Parts per billion adjustment from the base + * + * Adjust the frequency of the PHC by the indicated parts per billion from the + * base frequency. + **/ +static int i40e_ptp_adjfreq(struct ptp_clock_info *ptp, s32 ppb) +{ + struct i40e_pf *pf = container_of(ptp, struct i40e_pf, ptp_caps); + struct i40e_hw *hw = &pf->hw; + u64 adj, freq, diff; + int neg_adj = 0; + + if (ppb < 0) { + neg_adj = 1; + ppb = -ppb; + } + + smp_mb(); /* Force any pending update before accessing. */ + adj = ACCESS_ONCE(pf->ptp_base_adj); + + freq = adj; + freq *= ppb; + diff = div_u64(freq, 1000000000ULL); + + if (neg_adj) + adj -= diff; + else + adj += diff; + + wr32(hw, I40E_PRTTSYN_INC_L, adj & 0xFFFFFFFF); + wr32(hw, I40E_PRTTSYN_INC_H, adj >> 32); + + return 0; +} + +/** + * i40e_ptp_adjtime - Adjust the PHC time + * @ptp: The PTP clock structure + * @delta: Offset in nanoseconds to adjust the PHC time by + * + * Adjust the frequency of the PHC by the indicated parts per billion from the + * base frequency. + **/ +static int i40e_ptp_adjtime(struct ptp_clock_info *ptp, s64 delta) +{ + struct i40e_pf *pf = container_of(ptp, struct i40e_pf, ptp_caps); + struct timespec now, then = ns_to_timespec(delta); + unsigned long flags; + + spin_lock_irqsave(&pf->tmreg_lock, flags); + + i40e_ptp_read(pf, &now); + now = timespec_add(now, then); + i40e_ptp_write(pf, (const struct timespec *)&now); + + spin_unlock_irqrestore(&pf->tmreg_lock, flags); + + return 0; +} + +/** + * i40e_ptp_gettime - Get the time of the PHC + * @ptp: The PTP clock structure + * @ts: timespec structure to hold the current time value + * + * Read the device clock and return the correct value on ns, after converting it + * into a timespec struct. + **/ +static int i40e_ptp_gettime(struct ptp_clock_info *ptp, struct timespec *ts) +{ + struct i40e_pf *pf = container_of(ptp, struct i40e_pf, ptp_caps); + unsigned long flags; + + spin_lock_irqsave(&pf->tmreg_lock, flags); + i40e_ptp_read(pf, ts); + spin_unlock_irqrestore(&pf->tmreg_lock, flags); + + return 0; +} + +/** + * i40e_ptp_settime - Set the time of the PHC + * @ptp: The PTP clock structure + * @ts: timespec structure that holds the new time value + * + * Set the device clock to the user input value. The conversion from timespec + * to ns happens in the write function. + **/ +static int i40e_ptp_settime(struct ptp_clock_info *ptp, + const struct timespec *ts) +{ + struct i40e_pf *pf = container_of(ptp, struct i40e_pf, ptp_caps); + unsigned long flags; + + spin_lock_irqsave(&pf->tmreg_lock, flags); + i40e_ptp_write(pf, ts); + spin_unlock_irqrestore(&pf->tmreg_lock, flags); + + return 0; +} + +/** + * i40e_ptp_tx_work + * @work: pointer to work struct + * + * This work function polls the PRTTSYN_STAT_0.TXTIME bit to determine when a + * Tx timestamp event has occurred, in order to pass the Tx timestamp value up + * the stack in the skb. + */ +static void i40e_ptp_tx_work(struct work_struct *work) +{ + struct i40e_pf *pf = container_of(work, struct i40e_pf, + ptp_tx_work); + struct i40e_hw *hw = &pf->hw; + u32 prttsyn_stat_0; + + if (!pf->ptp_tx_skb) + return; + + if (time_is_before_jiffies(pf->ptp_tx_start + + I40E_PTP_TX_TIMEOUT)) { + dev_kfree_skb_any(pf->ptp_tx_skb); + pf->ptp_tx_skb = NULL; + pf->tx_hwtstamp_timeouts++; + dev_warn(&pf->pdev->dev, "clearing Tx timestamp hang\n"); + return; + } + + prttsyn_stat_0 = rd32(hw, I40E_PRTTSYN_STAT_0); + if (prttsyn_stat_0 & I40E_PRTTSYN_STAT_0_TXTIME_MASK) + i40e_ptp_tx_hwtstamp(pf); + else + schedule_work(&pf->ptp_tx_work); +} + +/** + * i40e_ptp_enable - Enable/disable ancillary features of the PHC subsystem + * @ptp: The PTP clock structure + * @rq: The requested feature to change + * @on: Enable/disable flag + * + * The XL710 does not support any of the ancillary features of the PHC + * subsystem, so this function may just return. + **/ +static int i40e_ptp_enable(struct ptp_clock_info *ptp, + struct ptp_clock_request *rq, int on) +{ + return -EOPNOTSUPP; +} + +/** + * i40e_ptp_rx_hang - Detect error case when Rx timestamp registers are hung + * @vsi: The VSI with the rings relevant to 1588 + * + * This watchdog task is scheduled to detect error case where hardware has + * dropped an Rx packet that was timestamped when the ring is full. The + * particular error is rare but leaves the device in a state unable to timestamp + * any future packets. + **/ +void i40e_ptp_rx_hang(struct i40e_vsi *vsi) +{ + struct i40e_pf *pf = vsi->back; + struct i40e_hw *hw = &pf->hw; + struct i40e_ring *rx_ring; + unsigned long rx_event; + u32 prttsyn_stat; + int n; + + if (pf->flags & I40E_FLAG_PTP) + return; + + prttsyn_stat = rd32(hw, I40E_PRTTSYN_STAT_1); + + /* Unless all four receive timestamp registers are latched, we are not + * concerned about a possible PTP Rx hang, so just update the timeout + * counter and exit. + */ + if (!(prttsyn_stat & ((I40E_PRTTSYN_STAT_1_RXT0_MASK << + I40E_PRTTSYN_STAT_1_RXT0_SHIFT) | + (I40E_PRTTSYN_STAT_1_RXT1_MASK << + I40E_PRTTSYN_STAT_1_RXT1_SHIFT) | + (I40E_PRTTSYN_STAT_1_RXT2_MASK << + I40E_PRTTSYN_STAT_1_RXT2_SHIFT) | + (I40E_PRTTSYN_STAT_1_RXT3_MASK << + I40E_PRTTSYN_STAT_1_RXT3_SHIFT)))) { + pf->last_rx_ptp_check = jiffies; + return; + } + + /* Determine the most recent watchdog or rx_timestamp event. */ + rx_event = pf->last_rx_ptp_check; + for (n = 0; n < vsi->num_queue_pairs; n++) { + rx_ring = vsi->rx_rings[n]; + if (time_after(rx_ring->last_rx_timestamp, rx_event)) + rx_event = rx_ring->last_rx_timestamp; + } + + /* Only need to read the high RXSTMP register to clear the lock */ + if (time_is_before_jiffies(rx_event + 5 * HZ)) { + rd32(hw, I40E_PRTTSYN_RXTIME_H(0)); + rd32(hw, I40E_PRTTSYN_RXTIME_H(1)); + rd32(hw, I40E_PRTTSYN_RXTIME_H(2)); + rd32(hw, I40E_PRTTSYN_RXTIME_H(3)); + pf->last_rx_ptp_check = jiffies; + pf->rx_hwtstamp_cleared++; + dev_warn(&vsi->back->pdev->dev, + "%s: clearing Rx timestamp hang\n", + __func__); + } +} + +/** + * i40e_ptp_tx_hwtstamp - Utility function which returns the Tx timestamp + * @pf: Board private structure + * + * Read the value of the Tx timestamp from the registers, convert it into a + * value consumable by the stack, and store that result into the shhwtstamps + * struct before returning it up the stack. + **/ +void i40e_ptp_tx_hwtstamp(struct i40e_pf *pf) +{ + struct skb_shared_hwtstamps shhwtstamps; + struct i40e_hw *hw = &pf->hw; + u32 hi, lo; + u64 ns; + + lo = rd32(hw, I40E_PRTTSYN_TXTIME_L); + hi = rd32(hw, I40E_PRTTSYN_TXTIME_H); + + ns = (((u64)hi) << 32) | lo; + + i40e_ptp_convert_to_hwtstamp(&shhwtstamps, ns); + skb_tstamp_tx(pf->ptp_tx_skb, &shhwtstamps); + dev_kfree_skb_any(pf->ptp_tx_skb); + pf->ptp_tx_skb = NULL; +} + +/** + * i40e_ptp_rx_hwtstamp - Utility function which checks for an Rx timestamp + * @pf: Board private structure + * @skb: Particular skb to send timestamp with + * @index: Index into the receive timestamp registers for the timestamp + * + * The XL710 receives a notification in the receive descriptor with an offset + * into the set of RXTIME registers where the timestamp is for that skb. This + * function goes and fetches the receive timestamp from that offset, if a valid + * one exists. The RXTIME registers are in ns, so we must convert the result + * first. + **/ +void i40e_ptp_rx_hwtstamp(struct i40e_pf *pf, struct sk_buff *skb, u8 index) +{ + u32 prttsyn_stat, hi, lo; + struct i40e_hw *hw; + u64 ns; + + /* Since we cannot turn off the Rx timestamp logic if the device is + * doing Tx timestamping, check if Rx timestamping is configured. + */ + if (!pf->ptp_rx) + return; + + hw = &pf->hw; + + prttsyn_stat = rd32(hw, I40E_PRTTSYN_STAT_1); + + if (!(prttsyn_stat & (1 << index))) + return; + + lo = rd32(hw, I40E_PRTTSYN_RXTIME_L(index)); + hi = rd32(hw, I40E_PRTTSYN_RXTIME_H(index)); + + ns = (((u64)hi) << 32) | lo; + + i40e_ptp_convert_to_hwtstamp(skb_hwtstamps(skb), ns); +} + +/** + * i40e_ptp_set_increment - Utility function to update clock increment rate + * @pf: Board private structure + * + * During a link change, the DMA frequency that drives the 1588 logic will + * change. In order to keep the PRTTSYN_TIME registers in units of nanoseconds, + * we must update the increment value per clock tick. + **/ +void i40e_ptp_set_increment(struct i40e_pf *pf) +{ + struct i40e_link_status *hw_link_info; + struct i40e_hw *hw = &pf->hw; + u64 incval; + + hw_link_info = &hw->phy.link_info; + + i40e_aq_get_link_info(&pf->hw, true, NULL, NULL); + + switch (hw_link_info->link_speed) { + case I40E_LINK_SPEED_10GB: + incval = I40E_PTP_10GB_INCVAL; + break; + case I40E_LINK_SPEED_1GB: + incval = I40E_PTP_1GB_INCVAL; + break; + case I40E_LINK_SPEED_100MB: + dev_warn(&pf->pdev->dev, + "%s: 1588 functionality is not supported at 100 Mbps. Stopping the PHC.\n", + __func__); + incval = 0; + break; + case I40E_LINK_SPEED_40GB: + default: + incval = I40E_PTP_40GB_INCVAL; + break; + } + + /* Write the new increment value into the increment register. The + * hardware will not update the clock until both registers have been + * written. + */ + wr32(hw, I40E_PRTTSYN_INC_L, incval & 0xFFFFFFFF); + wr32(hw, I40E_PRTTSYN_INC_H, incval >> 32); + + /* Update the base adjustement value. */ + ACCESS_ONCE(pf->ptp_base_adj) = incval; + smp_mb(); /* Force the above update. */ +} + +/** + * i40e_ptp_get_ts_config - ioctl interface to read the HW timestamping + * @pf: Board private structure + * @ifreq: ioctl data + * + * Obtain the current hardware timestamping settigs as requested. To do this, + * keep a shadow copy of the timestamp settings rather than attempting to + * deconstruct it from the registers. + **/ +int i40e_ptp_get_ts_config(struct i40e_pf *pf, struct ifreq *ifr) +{ + struct hwtstamp_config *config = &pf->tstamp_config; + + return copy_to_user(ifr->ifr_data, config, sizeof(*config)) ? + -EFAULT : 0; +} + +/** + * i40e_ptp_set_ts_config - ioctl interface to control the HW timestamping + * @pf: Board private structure + * @ifreq: ioctl data + * + * Respond to the user filter requests and make the appropriate hardware + * changes here. The XL710 cannot support splitting of the Tx/Rx timestamping + * logic, so keep track in software of whether to indicate these timestamps + * or not. + * + * It is permissible to "upgrade" the user request to a broader filter, as long + * as the user receives the timestamps they care about and the user is notified + * the filter has been broadened. + **/ +int i40e_ptp_set_ts_config(struct i40e_pf *pf, struct ifreq *ifr) +{ + struct i40e_hw *hw = &pf->hw; + struct hwtstamp_config *config = &pf->tstamp_config; + u32 pf_id, tsyntype, regval; + + if (copy_from_user(config, ifr->ifr_data, sizeof(*config))) + return -EFAULT; + + /* Reserved for future extensions. */ + if (config->flags) + return -EINVAL; + + /* Confirm that 1588 is supported on this PF. */ + pf_id = (rd32(hw, I40E_PRTTSYN_CTL0) & I40E_PRTTSYN_CTL0_PF_ID_MASK) >> + I40E_PRTTSYN_CTL0_PF_ID_SHIFT; + if (hw->pf_id != pf_id) + return -EINVAL; + + switch (config->tx_type) { + case HWTSTAMP_TX_OFF: + pf->ptp_tx = false; + break; + case HWTSTAMP_TX_ON: + pf->ptp_tx = true; + break; + default: + return -ERANGE; + } + + switch (config->rx_filter) { + case HWTSTAMP_FILTER_NONE: + pf->ptp_rx = false; + tsyntype = 0; + break; + case HWTSTAMP_FILTER_PTP_V1_L4_SYNC: + case HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ: + case HWTSTAMP_FILTER_PTP_V1_L4_EVENT: + pf->ptp_rx = true; + tsyntype = I40E_PRTTSYN_CTL1_V1MESSTYPE0_MASK | + I40E_PRTTSYN_CTL1_TSYNTYPE_V1 | + I40E_PRTTSYN_CTL1_UDP_ENA_MASK; + config->rx_filter = HWTSTAMP_FILTER_PTP_V1_L4_EVENT; + break; + case HWTSTAMP_FILTER_PTP_V2_EVENT: + case HWTSTAMP_FILTER_PTP_V2_L2_EVENT: + case HWTSTAMP_FILTER_PTP_V2_L4_EVENT: + case HWTSTAMP_FILTER_PTP_V2_SYNC: + case HWTSTAMP_FILTER_PTP_V2_L2_SYNC: + case HWTSTAMP_FILTER_PTP_V2_L4_SYNC: + case HWTSTAMP_FILTER_PTP_V2_DELAY_REQ: + case HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ: + case HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ: + pf->ptp_rx = true; + tsyntype = I40E_PRTTSYN_CTL1_V2MESSTYPE0_MASK | + I40E_PRTTSYN_CTL1_TSYNTYPE_V2 | + I40E_PRTTSYN_CTL1_UDP_ENA_MASK; + config->rx_filter = HWTSTAMP_FILTER_PTP_V2_EVENT; + break; + case HWTSTAMP_FILTER_ALL: + default: + return -ERANGE; + } + + /* Clear out all 1588-related registers to clear and unlatch them. */ + rd32(hw, I40E_PRTTSYN_STAT_0); + rd32(hw, I40E_PRTTSYN_TXTIME_H); + rd32(hw, I40E_PRTTSYN_RXTIME_H(0)); + rd32(hw, I40E_PRTTSYN_RXTIME_H(1)); + rd32(hw, I40E_PRTTSYN_RXTIME_H(2)); + rd32(hw, I40E_PRTTSYN_RXTIME_H(3)); + + /* Enable/disable the Tx timestamp interrupt based on user input. */ + regval = rd32(hw, I40E_PRTTSYN_CTL0); + if (pf->ptp_tx) + regval |= I40E_PRTTSYN_CTL0_TXTIME_INT_ENA_MASK; + else + regval &= ~I40E_PRTTSYN_CTL0_TXTIME_INT_ENA_MASK; + wr32(hw, I40E_PRTTSYN_CTL0, regval); + + regval = rd32(hw, I40E_PFINT_ICR0_ENA); + if (pf->ptp_tx) + regval |= I40E_PFINT_ICR0_ENA_TIMESYNC_MASK; + else + regval &= ~I40E_PFINT_ICR0_ENA_TIMESYNC_MASK; + wr32(hw, I40E_PFINT_ICR0_ENA, regval); + + /* There is no simple on/off switch for Rx. To "disable" Rx support, + * ignore any received timestamps, rather than turn off the clock. + */ + if (pf->ptp_rx) { + regval = rd32(hw, I40E_PRTTSYN_CTL1); + /* clear everything but the enable bit */ + regval &= I40E_PRTTSYN_CTL1_TSYNENA_MASK; + /* now enable bits for desired Rx timestamps */ + regval |= tsyntype; + wr32(hw, I40E_PRTTSYN_CTL1, regval); + } + + return copy_to_user(ifr->ifr_data, config, sizeof(*config)) ? + -EFAULT : 0; +} + +/** + * i40e_ptp_init - Initialize the 1588 support and register the PHC + * @pf: Board private structure + * + * This function registers the device clock as a PHC. If it is successful, it + * starts the clock in the hardware. + **/ +void i40e_ptp_init(struct i40e_pf *pf) +{ + struct i40e_hw *hw = &pf->hw; + struct net_device *netdev = pf->vsi[pf->lan_vsi]->netdev; + + strncpy(pf->ptp_caps.name, "i40e", sizeof(pf->ptp_caps.name)); + pf->ptp_caps.owner = THIS_MODULE; + pf->ptp_caps.max_adj = 999999999; + pf->ptp_caps.n_ext_ts = 0; + pf->ptp_caps.pps = 0; + pf->ptp_caps.adjfreq = i40e_ptp_adjfreq; + pf->ptp_caps.adjtime = i40e_ptp_adjtime; + pf->ptp_caps.gettime = i40e_ptp_gettime; + pf->ptp_caps.settime = i40e_ptp_settime; + pf->ptp_caps.enable = i40e_ptp_enable; + + /* Attempt to register the clock before enabling the hardware. */ + pf->ptp_clock = ptp_clock_register(&pf->ptp_caps, &pf->pdev->dev); + if (IS_ERR(pf->ptp_clock)) { + pf->ptp_clock = NULL; + dev_err(&pf->pdev->dev, "%s: ptp_clock_register failed\n", + __func__); + } else { + struct timespec ts; + u32 regval; + + spin_lock_init(&pf->tmreg_lock); + INIT_WORK(&pf->ptp_tx_work, i40e_ptp_tx_work); + + dev_info(&pf->pdev->dev, "%s: added PHC on %s\n", __func__, + netdev->name); + pf->flags |= I40E_FLAG_PTP; + + /* Ensure the clocks are running. */ + regval = rd32(hw, I40E_PRTTSYN_CTL0); + regval |= I40E_PRTTSYN_CTL0_TSYNENA_MASK; + wr32(hw, I40E_PRTTSYN_CTL0, regval); + regval = rd32(hw, I40E_PRTTSYN_CTL1); + regval |= I40E_PRTTSYN_CTL1_TSYNENA_MASK; + wr32(hw, I40E_PRTTSYN_CTL1, regval); + + /* Set the increment value per clock tick. */ + i40e_ptp_set_increment(pf); + + /* reset the tstamp_config */ + memset(&pf->tstamp_config, 0, sizeof(pf->tstamp_config)); + + /* Set the clock value. */ + ts = ktime_to_timespec(ktime_get_real()); + i40e_ptp_settime(&pf->ptp_caps, &ts); + } +} + +/** + * i40e_ptp_stop - Disable the driver/hardware support and unregister the PHC + * @pf: Board private structure + * + * This function handles the cleanup work required from the initialization by + * clearing out the important information and unregistering the PHC. + **/ +void i40e_ptp_stop(struct i40e_pf *pf) +{ + pf->flags &= ~I40E_FLAG_PTP; + pf->ptp_tx = false; + pf->ptp_rx = false; + + cancel_work_sync(&pf->ptp_tx_work); + if (pf->ptp_tx_skb) { + dev_kfree_skb_any(pf->ptp_tx_skb); + pf->ptp_tx_skb = NULL; + } + + if (pf->ptp_clock) { + ptp_clock_unregister(pf->ptp_clock); + pf->ptp_clock = NULL; + dev_info(&pf->pdev->dev, "%s: removed PHC on %s\n", __func__, + pf->vsi[pf->lan_vsi]->netdev->name); + } +} --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40e/i40e_register.h +++ linux-3.13.0/drivers/net/ethernet/intel/i40e/i40e_register.h @@ -1,7 +1,7 @@ /******************************************************************************* * * Intel Ethernet Controller XL710 Family Linux Driver - * Copyright(c) 2013 Intel Corporation. + * Copyright(c) 2013 - 2014 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, @@ -12,9 +12,8 @@ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * - * You should have 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. + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . * * The full GNU General Public License is included in this distribution in * the file called "COPYING". @@ -28,6 +27,10 @@ #ifndef _I40E_REGISTER_H_ #define _I40E_REGISTER_H_ +#define I40E_GL_GP_FUSE(_i) (0x0009400C + ((_i) * 4)) /* _i=0...28 */ +#define I40E_GL_GP_FUSE_MAX_INDEX 28 +#define I40E_GL_GP_FUSE_GL_GP_FUSE_SHIFT 0 +#define I40E_GL_GP_FUSE_GL_GP_FUSE_MASK (0xFFFFFFFF << I40E_GL_GP_FUSE_GL_GP_FUSE_SHIFT) #define I40E_GLPCI_PM_MUX_NPQ 0x0009C4F4 #define I40E_GLPCI_PM_MUX_NPQ_NPQ_NUM_PORT_SEL_SHIFT 0 #define I40E_GLPCI_PM_MUX_NPQ_NPQ_NUM_PORT_SEL_MASK (0x7 << I40E_GLPCI_PM_MUX_NPQ_NPQ_NUM_PORT_SEL_SHIFT) @@ -38,6 +41,11 @@ #define I40E_GLPCI_PM_MUX_PFB_PFB_PORT_SEL_MASK (0x1F << I40E_GLPCI_PM_MUX_PFB_PFB_PORT_SEL_SHIFT) #define I40E_GLPCI_PM_MUX_PFB_INNER_PORT_SEL_SHIFT 16 #define I40E_GLPCI_PM_MUX_PFB_INNER_PORT_SEL_MASK (0x7 << I40E_GLPCI_PM_MUX_PFB_INNER_PORT_SEL_SHIFT) +#define I40E_GLPCI_PQ_MAX_USED_SPC 0x0009C4EC +#define I40E_GLPCI_PQ_MAX_USED_SPC_GLPCI_PQ_MAX_USED_SPC_12_SHIFT 0 +#define I40E_GLPCI_PQ_MAX_USED_SPC_GLPCI_PQ_MAX_USED_SPC_12_MASK (0xFF << I40E_GLPCI_PQ_MAX_USED_SPC_GLPCI_PQ_MAX_USED_SPC_12_SHIFT) +#define I40E_GLPCI_PQ_MAX_USED_SPC_GLPCI_PQ_MAX_USED_SPC_13_SHIFT 8 +#define I40E_GLPCI_PQ_MAX_USED_SPC_GLPCI_PQ_MAX_USED_SPC_13_MASK (0xFF << I40E_GLPCI_PQ_MAX_USED_SPC_GLPCI_PQ_MAX_USED_SPC_13_SHIFT) #define I40E_GLPCI_SPARE_BITS_0 0x0009C4F8 #define I40E_GLPCI_SPARE_BITS_0_SPARE_BITS_SHIFT 0 #define I40E_GLPCI_SPARE_BITS_0_SPARE_BITS_MASK (0xFFFFFFFF << I40E_GLPCI_SPARE_BITS_0_SPARE_BITS_SHIFT) @@ -50,9 +58,14 @@ #define I40E_PFPCI_VF_FLUSH_DONE 0x0009C600 #define I40E_PFPCI_VF_FLUSH_DONE_FLUSH_DONE_SHIFT 0 #define I40E_PFPCI_VF_FLUSH_DONE_FLUSH_DONE_MASK (0x1 << I40E_PFPCI_VF_FLUSH_DONE_FLUSH_DONE_SHIFT) +#define I40E_PFPCI_VF_FLUSH_DONE1(_VF) (0x0009C600 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_PFPCI_VF_FLUSH_DONE1_MAX_INDEX 127 +#define I40E_PFPCI_VF_FLUSH_DONE1_FLUSH_DONE_SHIFT 0 +#define I40E_PFPCI_VF_FLUSH_DONE1_FLUSH_DONE_MASK (0x1 << I40E_PFPCI_VF_FLUSH_DONE1_FLUSH_DONE_SHIFT) #define I40E_PFPCI_VM_FLUSH_DONE 0x0009C880 #define I40E_PFPCI_VM_FLUSH_DONE_FLUSH_DONE_SHIFT 0 #define I40E_PFPCI_VM_FLUSH_DONE_FLUSH_DONE_MASK (0x1 << I40E_PFPCI_VM_FLUSH_DONE_FLUSH_DONE_SHIFT) + #define I40E_PF_ARQBAH 0x00080180 #define I40E_PF_ARQBAH_ARQBAH_SHIFT 0 #define I40E_PF_ARQBAH_ARQBAH_MASK (0xFFFFFFFF << I40E_PF_ARQBAH_ARQBAH_SHIFT) @@ -837,7 +850,7 @@ #define I40E_GLHMC_PEQ1FLCNT_FPMPEQ1FLCNT_MASK (0x1FFFFFFF << I40E_GLHMC_PEQ1FLCNT_FPMPEQ1FLCNT_SHIFT) #define I40E_GLHMC_PEQ1FLMAX 0x000C2058 #define I40E_GLHMC_PEQ1FLMAX_PMPEQ1FLMAX_SHIFT 0 -#define I40E_GLHMC_PEQ1FLMAX_PMPEQ1FLMAX_MASK (0x3FFFFF << I40E_GLHMC_PEQ1FLMAX_PMPEQ1FLMAX_SHIFT) +#define I40E_GLHMC_PEQ1FLMAX_PMPEQ1FLMAX_MASK (0x3FFFFFF << I40E_GLHMC_PEQ1FLMAX_PMPEQ1FLMAX_SHIFT) #define I40E_GLHMC_PEQ1MAX 0x000C2054 #define I40E_GLHMC_PEQ1MAX_PMPEQ1MAX_SHIFT 0 #define I40E_GLHMC_PEQ1MAX_PMPEQ1MAX_MASK (0x3FFFFFF << I40E_GLHMC_PEQ1MAX_PMPEQ1MAX_SHIFT) @@ -903,7 +916,7 @@ #define I40E_GLHMC_PEXFFLCNT_FPMPEXFFLCNT_MASK (0x1FFFFFFF << I40E_GLHMC_PEXFFLCNT_FPMPEXFFLCNT_SHIFT) #define I40E_GLHMC_PEXFFLMAX 0x000C204c #define I40E_GLHMC_PEXFFLMAX_PMPEXFFLMAX_SHIFT 0 -#define I40E_GLHMC_PEXFFLMAX_PMPEXFFLMAX_MASK (0x3FFFFF << I40E_GLHMC_PEXFFLMAX_PMPEXFFLMAX_SHIFT) +#define I40E_GLHMC_PEXFFLMAX_PMPEXFFLMAX_MASK (0x1FFFFFF << I40E_GLHMC_PEXFFLMAX_PMPEXFFLMAX_SHIFT) #define I40E_GLHMC_PEXFMAX 0x000C2048 #define I40E_GLHMC_PEXFMAX_PMPEXFMAX_SHIFT 0 #define I40E_GLHMC_PEXFMAX_PMPEXFMAX_MASK (0x3FFFFFF << I40E_GLHMC_PEXFMAX_PMPEXFMAX_SHIFT) @@ -1636,7 +1649,7 @@ #define I40E_VSILAN_QBASE_VSIQTABLE_ENA_SHIFT 11 #define I40E_VSILAN_QBASE_VSIQTABLE_ENA_MASK (0x1 << I40E_VSILAN_QBASE_VSIQTABLE_ENA_SHIFT) #define I40E_VSILAN_QTABLE(_i, _VSI) (0x00200000 + ((_i) * 2048 + (_VSI) * 4)) -#define I40E_VSILAN_QTABLE_MAX_INDEX 15 +#define I40E_VSILAN_QTABLE_MAX_INDEX 7 #define I40E_VSILAN_QTABLE_QINDEX_0_SHIFT 0 #define I40E_VSILAN_QTABLE_QINDEX_0_MASK (0x7FF << I40E_VSILAN_QTABLE_QINDEX_0_SHIFT) #define I40E_VSILAN_QTABLE_QINDEX_1_SHIFT 16 @@ -1773,16 +1786,20 @@ #define I40E_PRTMAC_PCS_XAUI_SWAP_B_SWAP_RX_LANE0_SHIFT 14 #define I40E_PRTMAC_PCS_XAUI_SWAP_B_SWAP_RX_LANE0_MASK (0x3 << I40E_PRTMAC_PCS_XAUI_SWAP_B_SWAP_RX_LANE0_SHIFT) #define I40E_GL_MNG_FWSM 0x000B6134 -#define I40E_GL_MNG_FWSM_FW_MODES_SHIFT 0 -#define I40E_GL_MNG_FWSM_FW_MODES_MASK (0x3FF << I40E_GL_MNG_FWSM_FW_MODES_SHIFT) -#define I40E_GL_MNG_FWSM_EEP_RELOAD_IND_SHIFT 10 +#define I40E_GL_MNG_FWSM_FW_MODES_SHIFT 1 +#define I40E_GL_MNG_FWSM_FW_MODES_MASK (0x7 << I40E_GL_MNG_FWSM_FW_MODES_SHIFT) +#define I40E_GL_MNG_FWSM_EEP_RELOAD_IND_SHIFT 6 #define I40E_GL_MNG_FWSM_EEP_RELOAD_IND_MASK (0x1 << I40E_GL_MNG_FWSM_EEP_RELOAD_IND_SHIFT) #define I40E_GL_MNG_FWSM_CRC_ERROR_MODULE_SHIFT 11 #define I40E_GL_MNG_FWSM_CRC_ERROR_MODULE_MASK (0xF << I40E_GL_MNG_FWSM_CRC_ERROR_MODULE_SHIFT) #define I40E_GL_MNG_FWSM_FW_STATUS_VALID_SHIFT 15 #define I40E_GL_MNG_FWSM_FW_STATUS_VALID_MASK (0x1 << I40E_GL_MNG_FWSM_FW_STATUS_VALID_SHIFT) +#define I40E_GL_MNG_FWSM_RESET_CNT_SHIFT 16 +#define I40E_GL_MNG_FWSM_RESET_CNT_MASK (0x7 << I40E_GL_MNG_FWSM_RESET_CNT_SHIFT) #define I40E_GL_MNG_FWSM_EXT_ERR_IND_SHIFT 19 #define I40E_GL_MNG_FWSM_EXT_ERR_IND_MASK (0x3F << I40E_GL_MNG_FWSM_EXT_ERR_IND_SHIFT) +#define I40E_GL_MNG_FWSM_RSVD_SHIFT 25 +#define I40E_GL_MNG_FWSM_RSVD_MASK (0x1 << I40E_GL_MNG_FWSM_RSVD_SHIFT) #define I40E_GL_MNG_FWSM_PHY_SERDES0_CONFIG_ERR_SHIFT 26 #define I40E_GL_MNG_FWSM_PHY_SERDES0_CONFIG_ERR_MASK (0x1 << I40E_GL_MNG_FWSM_PHY_SERDES0_CONFIG_ERR_SHIFT) #define I40E_GL_MNG_FWSM_PHY_SERDES1_CONFIG_ERR_SHIFT 27 @@ -2035,6 +2052,28 @@ #define I40E_GLNVM_SRDATA_WRDATA_MASK (0xFFFF << I40E_GLNVM_SRDATA_WRDATA_SHIFT) #define I40E_GLNVM_SRDATA_RDDATA_SHIFT 16 #define I40E_GLNVM_SRDATA_RDDATA_MASK (0xFFFF << I40E_GLNVM_SRDATA_RDDATA_SHIFT) +#define I40E_GLNVM_ULD 0x000B6008 +#define I40E_GLNVM_ULD_CONF_PCIR_DONE_SHIFT 0 +#define I40E_GLNVM_ULD_CONF_PCIR_DONE_MASK (0x1 << I40E_GLNVM_ULD_CONF_PCIR_DONE_SHIFT) +#define I40E_GLNVM_ULD_CONF_PCIRTL_DONE_SHIFT 1 +#define I40E_GLNVM_ULD_CONF_PCIRTL_DONE_MASK (0x1 << I40E_GLNVM_ULD_CONF_PCIRTL_DONE_SHIFT) +#define I40E_GLNVM_ULD_CONF_LCB_DONE_SHIFT 2 +#define I40E_GLNVM_ULD_CONF_LCB_DONE_MASK (0x1 << I40E_GLNVM_ULD_CONF_LCB_DONE_SHIFT) +#define I40E_GLNVM_ULD_CONF_CORE_DONE_SHIFT 3 +#define I40E_GLNVM_ULD_CONF_CORE_DONE_MASK (0x1 << I40E_GLNVM_ULD_CONF_CORE_DONE_SHIFT) +#define I40E_GLNVM_ULD_CONF_GLOBAL_DONE_SHIFT 4 +#define I40E_GLNVM_ULD_CONF_GLOBAL_DONE_MASK (0x1 << I40E_GLNVM_ULD_CONF_GLOBAL_DONE_SHIFT) +#define I40E_GLNVM_ULD_CONF_POR_DONE_SHIFT 5 +#define I40E_GLNVM_ULD_CONF_POR_DONE_MASK (0x1 << I40E_GLNVM_ULD_CONF_POR_DONE_SHIFT) +#define I40E_GLNVM_ULD_CONF_PCIE_ANA_DONE_SHIFT 6 +#define I40E_GLNVM_ULD_CONF_PCIE_ANA_DONE_MASK (0x1 << I40E_GLNVM_ULD_CONF_PCIE_ANA_DONE_SHIFT) +#define I40E_GLNVM_ULD_CONF_PHY_ANA_DONE_SHIFT 7 +#define I40E_GLNVM_ULD_CONF_PHY_ANA_DONE_MASK (0x1 << I40E_GLNVM_ULD_CONF_PHY_ANA_DONE_SHIFT) +#define I40E_GLNVM_ULD_CONF_EMP_DONE_SHIFT 8 +#define I40E_GLNVM_ULD_CONF_EMP_DONE_MASK (0x1 << I40E_GLNVM_ULD_CONF_EMP_DONE_SHIFT) +#define I40E_GLNVM_ULD_CONF_PCIALT_DONE_SHIFT 9 +#define I40E_GLNVM_ULD_CONF_PCIALT_DONE_MASK (0x1 << I40E_GLNVM_ULD_CONF_PCIALT_DONE_SHIFT) + #define I40E_GLPCI_BYTCTH 0x0009C484 #define I40E_GLPCI_BYTCTH_PCI_COUNT_BW_BCT_SHIFT 0 #define I40E_GLPCI_BYTCTH_PCI_COUNT_BW_BCT_MASK (0xFFFFFFFF << I40E_GLPCI_BYTCTH_PCI_COUNT_BW_BCT_SHIFT) @@ -2170,6 +2209,12 @@ #define I40E_GLPCI_PCIERR 0x000BE4FC #define I40E_GLPCI_PCIERR_PCIE_ERR_REP_SHIFT 0 #define I40E_GLPCI_PCIERR_PCIE_ERR_REP_MASK (0xFFFFFFFF << I40E_GLPCI_PCIERR_PCIE_ERR_REP_SHIFT) +#define I40E_GLPCI_PCITEST2 0x000BE4BC +#define I40E_GLPCI_PCITEST2_IOV_TEST_MODE_SHIFT 0 +#define I40E_GLPCI_PCITEST2_IOV_TEST_MODE_MASK (0x1 << I40E_GLPCI_PCITEST2_IOV_TEST_MODE_SHIFT) +#define I40E_GLPCI_PCITEST2_TAG_ALLOC_SHIFT 1 +#define I40E_GLPCI_PCITEST2_TAG_ALLOC_MASK (0x1 << I40E_GLPCI_PCITEST2_TAG_ALLOC_SHIFT) + #define I40E_GLPCI_PKTCT 0x0009C4BC #define I40E_GLPCI_PKTCT_PCI_COUNT_BW_PCT_SHIFT 0 #define I40E_GLPCI_PKTCT_PCI_COUNT_BW_PCT_MASK (0xFFFFFFFF << I40E_GLPCI_PKTCT_PCI_COUNT_BW_PCT_SHIFT) @@ -2380,8 +2425,7 @@ #define I40E_PFPE_IPCONFIG0_PEIPID_MASK (0xFFFF << I40E_PFPE_IPCONFIG0_PEIPID_SHIFT) #define I40E_PFPE_IPCONFIG0_USEENTIREIDRANGE_SHIFT 16 #define I40E_PFPE_IPCONFIG0_USEENTIREIDRANGE_MASK (0x1 << I40E_PFPE_IPCONFIG0_USEENTIREIDRANGE_SHIFT) -#define I40E_PFPE_IPCONFIG0_USEUPPERIDRANGE_SHIFT 17 -#define I40E_PFPE_IPCONFIG0_USEUPPERIDRANGE_MASK (0x1 << I40E_PFPE_IPCONFIG0_USEUPPERIDRANGE_SHIFT) + #define I40E_PFPE_MRTEIDXMASK 0x00008600 #define I40E_PFPE_MRTEIDXMASK_MRTEIDXMASKBITS_SHIFT 0 #define I40E_PFPE_MRTEIDXMASK_MRTEIDXMASKBITS_MASK (0x1F << I40E_PFPE_MRTEIDXMASK_MRTEIDXMASKBITS_SHIFT) @@ -2460,8 +2504,6 @@ #define I40E_VFPE_IPCONFIG0_PEIPID_MASK (0xFFFF << I40E_VFPE_IPCONFIG0_PEIPID_SHIFT) #define I40E_VFPE_IPCONFIG0_USEENTIREIDRANGE_SHIFT 16 #define I40E_VFPE_IPCONFIG0_USEENTIREIDRANGE_MASK (0x1 << I40E_VFPE_IPCONFIG0_USEENTIREIDRANGE_SHIFT) -#define I40E_VFPE_IPCONFIG0_USEUPPERIDRANGE_SHIFT 17 -#define I40E_VFPE_IPCONFIG0_USEUPPERIDRANGE_MASK (0x1 << I40E_VFPE_IPCONFIG0_USEUPPERIDRANGE_SHIFT) #define I40E_VFPE_MRTEIDXMASK(_VF) (0x00003000 + ((_VF) * 4)) /* _i=0...127 */ #define I40E_VFPE_MRTEIDXMASK_MAX_INDEX 127 #define I40E_VFPE_MRTEIDXMASK_MRTEIDXMASKBITS_SHIFT 0 @@ -3141,30 +3183,6 @@ #define I40E_GLPES_VFUDPTXPKTSLO_MAX_INDEX 31 #define I40E_GLPES_VFUDPTXPKTSLO_UDPTXPKTSLO_SHIFT 0 #define I40E_GLPES_VFUDPTXPKTSLO_UDPTXPKTSLO_MASK (0xFFFFFFFF << I40E_GLPES_VFUDPTXPKTSLO_UDPTXPKTSLO_SHIFT) -#define I40E_GLPM_DMACR 0x000881F4 -#define I40E_GLPM_DMACR_DMACWT_SHIFT 0 -#define I40E_GLPM_DMACR_DMACWT_MASK (0xFFFF << I40E_GLPM_DMACR_DMACWT_SHIFT) -#define I40E_GLPM_DMACR_EXIT_DC_SHIFT 29 -#define I40E_GLPM_DMACR_EXIT_DC_MASK (0x1 << I40E_GLPM_DMACR_EXIT_DC_SHIFT) -#define I40E_GLPM_DMACR_LX_COALESCING_INDICATION_SHIFT 30 -#define I40E_GLPM_DMACR_LX_COALESCING_INDICATION_MASK (0x1 << I40E_GLPM_DMACR_LX_COALESCING_INDICATION_SHIFT) -#define I40E_GLPM_DMACR_DMAC_EN_SHIFT 31 -#define I40E_GLPM_DMACR_DMAC_EN_MASK (0x1 << I40E_GLPM_DMACR_DMAC_EN_SHIFT) -#define I40E_GLPM_LTRC 0x000BE500 -#define I40E_GLPM_LTRC_SLTRV_SHIFT 0 -#define I40E_GLPM_LTRC_SLTRV_MASK (0x3FF << I40E_GLPM_LTRC_SLTRV_SHIFT) -#define I40E_GLPM_LTRC_SSCALE_SHIFT 10 -#define I40E_GLPM_LTRC_SSCALE_MASK (0x7 << I40E_GLPM_LTRC_SSCALE_SHIFT) -#define I40E_GLPM_LTRC_LTRS_REQUIREMENT_SHIFT 15 -#define I40E_GLPM_LTRC_LTRS_REQUIREMENT_MASK (0x1 << I40E_GLPM_LTRC_LTRS_REQUIREMENT_SHIFT) -#define I40E_GLPM_LTRC_NSLTRV_SHIFT 16 -#define I40E_GLPM_LTRC_NSLTRV_MASK (0x3FF << I40E_GLPM_LTRC_NSLTRV_SHIFT) -#define I40E_GLPM_LTRC_NSSCALE_SHIFT 26 -#define I40E_GLPM_LTRC_NSSCALE_MASK (0x7 << I40E_GLPM_LTRC_NSSCALE_SHIFT) -#define I40E_GLPM_LTRC_LTR_SEND_SHIFT 30 -#define I40E_GLPM_LTRC_LTR_SEND_MASK (0x1 << I40E_GLPM_LTRC_LTR_SEND_SHIFT) -#define I40E_GLPM_LTRC_LTRNS_REQUIREMENT_SHIFT 31 -#define I40E_GLPM_LTRC_LTRNS_REQUIREMENT_MASK (0x1 << I40E_GLPM_LTRC_LTRNS_REQUIREMENT_SHIFT) #define I40E_PRTPM_EEE_STAT 0x001E4320 #define I40E_PRTPM_EEE_STAT_EEE_NEG_SHIFT 29 #define I40E_PRTPM_EEE_STAT_EEE_NEG_MASK (0x1 << I40E_PRTPM_EEE_STAT_EEE_NEG_SHIFT) @@ -3201,9 +3219,6 @@ #define I40E_PRTPM_GC_LCDMP_MASK (0x1 << I40E_PRTPM_GC_LCDMP_SHIFT) #define I40E_PRTPM_GC_LPLU_ASSERTED_SHIFT 31 #define I40E_PRTPM_GC_LPLU_ASSERTED_MASK (0x1 << I40E_PRTPM_GC_LPLU_ASSERTED_SHIFT) -#define I40E_PRTPM_HPTC 0x000AC800 -#define I40E_PRTPM_HPTC_HIGH_PRI_TC_SHIFT 0 -#define I40E_PRTPM_HPTC_HIGH_PRI_TC_MASK (0xFF << I40E_PRTPM_HPTC_HIGH_PRI_TC_SHIFT) #define I40E_PRTPM_RLPIC 0x001E43A0 #define I40E_PRTPM_RLPIC_ERLPIC_SHIFT 0 #define I40E_PRTPM_RLPIC_ERLPIC_MASK (0xFFFFFFFF << I40E_PRTPM_RLPIC_ERLPIC_SHIFT) @@ -3265,8 +3280,8 @@ #define I40E_GLQF_CTL_HTOEP_FCOE_MASK (0x1 << I40E_GLQF_CTL_HTOEP_FCOE_SHIFT) #define I40E_GLQF_CTL_PCNT_ALLOC_SHIFT 3 #define I40E_GLQF_CTL_PCNT_ALLOC_MASK (0x7 << I40E_GLQF_CTL_PCNT_ALLOC_SHIFT) -#define I40E_GLQF_CTL_DDPLPEN_SHIFT 7 -#define I40E_GLQF_CTL_DDPLPEN_MASK (0x1 << I40E_GLQF_CTL_DDPLPEN_SHIFT) +#define I40E_GLQF_CTL_RSVD_SHIFT 7 +#define I40E_GLQF_CTL_RSVD_MASK (0x1 << I40E_GLQF_CTL_RSVD_SHIFT) #define I40E_GLQF_CTL_MAXPEBLEN_SHIFT 8 #define I40E_GLQF_CTL_MAXPEBLEN_MASK (0x7 << I40E_GLQF_CTL_MAXPEBLEN_SHIFT) #define I40E_GLQF_CTL_MAXFCBLEN_SHIFT 11 @@ -3416,9 +3431,9 @@ #define I40E_PRTQF_FLX_PIT(_i) (0x00255200 + ((_i) * 32)) /* _i=0...8 */ #define I40E_PRTQF_FLX_PIT_MAX_INDEX 8 #define I40E_PRTQF_FLX_PIT_SOURCE_OFF_SHIFT 0 -#define I40E_PRTQF_FLX_PIT_SOURCE_OFF_MASK (0x3F << I40E_PRTQF_FLX_PIT_SOURCE_OFF_SHIFT) -#define I40E_PRTQF_FLX_PIT_FSIZE_SHIFT 6 -#define I40E_PRTQF_FLX_PIT_FSIZE_MASK (0xF << I40E_PRTQF_FLX_PIT_FSIZE_SHIFT) +#define I40E_PRTQF_FLX_PIT_SOURCE_OFF_MASK (0x1F << I40E_PRTQF_FLX_PIT_SOURCE_OFF_SHIFT) +#define I40E_PRTQF_FLX_PIT_FSIZE_SHIFT 5 +#define I40E_PRTQF_FLX_PIT_FSIZE_MASK (0x1F << I40E_PRTQF_FLX_PIT_FSIZE_SHIFT) #define I40E_PRTQF_FLX_PIT_DEST_OFF_SHIFT 10 #define I40E_PRTQF_FLX_PIT_DEST_OFF_MASK (0x3F << I40E_PRTQF_FLX_PIT_DEST_OFF_SHIFT) #define I40E_VFQF_HENA1(_i, _VF) (0x00230800 + ((_i) * 1024 + (_VF) * 4)) @@ -3504,7 +3519,7 @@ #define I40E_VSIQF_CTL_PEMFRAG_ENA_SHIFT 5 #define I40E_VSIQF_CTL_PEMFRAG_ENA_MASK (0x1 << I40E_VSIQF_CTL_PEMFRAG_ENA_SHIFT) #define I40E_VSIQF_TCREGION(_i, _VSI) (0x00206000 + ((_i) * 2048 + (_VSI) * 4)) -#define I40E_VSIQF_TCREGION_MAX_INDEX 7 +#define I40E_VSIQF_TCREGION_MAX_INDEX 3 #define I40E_VSIQF_TCREGION_TC_OFFSET_SHIFT 0 #define I40E_VSIQF_TCREGION_TC_OFFSET_MASK (0x1FF << I40E_VSIQF_TCREGION_TC_OFFSET_SHIFT) #define I40E_VSIQF_TCREGION_TC_SIZE_SHIFT 9 @@ -3521,10 +3536,7 @@ #define I40E_GL_FCOEDDPC_MAX_INDEX 143 #define I40E_GL_FCOEDDPC_FCOEDDPC_SHIFT 0 #define I40E_GL_FCOEDDPC_FCOEDDPC_MASK (0xFFFFFFFF << I40E_GL_FCOEDDPC_FCOEDDPC_SHIFT) -#define I40E_GL_FCOEDDPEC(_i) (0x00314900 + ((_i) * 8)) /* _i=0...143 */ -#define I40E_GL_FCOEDDPEC_MAX_INDEX 143 -#define I40E_GL_FCOEDDPEC_CFOEDDPEC_SHIFT 0 -#define I40E_GL_FCOEDDPEC_CFOEDDPEC_MASK (0xFFFFFFFF << I40E_GL_FCOEDDPEC_CFOEDDPEC_SHIFT) +/* _i=0...143 */ #define I40E_GL_FCOEDIFEC(_i) (0x00318480 + ((_i) * 8)) /* _i=0...143 */ #define I40E_GL_FCOEDIFEC_MAX_INDEX 143 #define I40E_GL_FCOEDIFEC_FCOEDIFRC_SHIFT 0 @@ -4276,46 +4288,10 @@ #define I40E_PFPM_APM 0x000B8080 #define I40E_PFPM_APM_APME_SHIFT 0 #define I40E_PFPM_APM_APME_MASK (0x1 << I40E_PFPM_APM_APME_SHIFT) -#define I40E_PFPM_FHFT_DATA(_i, _j) (0x00060000 + ((_i) * 4096 + (_j) * 128)) -#define I40E_PFPM_FHFT_DATA_MAX_INDEX 7 -#define I40E_PFPM_FHFT_DATA_DWORD_SHIFT 0 -#define I40E_PFPM_FHFT_DATA_DWORD_MASK (0xFFFFFFFF << I40E_PFPM_FHFT_DATA_DWORD_SHIFT) #define I40E_PFPM_FHFT_LENGTH(_i) (0x0006A000 + ((_i) * 128)) /* _i=0...7 */ #define I40E_PFPM_FHFT_LENGTH_MAX_INDEX 7 #define I40E_PFPM_FHFT_LENGTH_LENGTH_SHIFT 0 #define I40E_PFPM_FHFT_LENGTH_LENGTH_MASK (0xFF << I40E_PFPM_FHFT_LENGTH_LENGTH_SHIFT) -#define I40E_PFPM_FHFT_MASK(_i, _j) (0x00068000 + ((_i) * 1024 + (_j) * 128)) -#define I40E_PFPM_FHFT_MASK_MAX_INDEX 7 -#define I40E_PFPM_FHFT_MASK_MASK_SHIFT 0 -#define I40E_PFPM_FHFT_MASK_MASK_MASK (0xFFFF << I40E_PFPM_FHFT_MASK_MASK_SHIFT) -#define I40E_PFPM_PROXYFC 0x00245A80 -#define I40E_PFPM_PROXYFC_PPROXYE_SHIFT 0 -#define I40E_PFPM_PROXYFC_PPROXYE_MASK (0x1 << I40E_PFPM_PROXYFC_PPROXYE_SHIFT) -#define I40E_PFPM_PROXYFC_EX_SHIFT 1 -#define I40E_PFPM_PROXYFC_EX_MASK (0x1 << I40E_PFPM_PROXYFC_EX_SHIFT) -#define I40E_PFPM_PROXYFC_ARP_SHIFT 4 -#define I40E_PFPM_PROXYFC_ARP_MASK (0x1 << I40E_PFPM_PROXYFC_ARP_SHIFT) -#define I40E_PFPM_PROXYFC_ARP_DIRECTED_SHIFT 5 -#define I40E_PFPM_PROXYFC_ARP_DIRECTED_MASK (0x1 << I40E_PFPM_PROXYFC_ARP_DIRECTED_SHIFT) -#define I40E_PFPM_PROXYFC_NS_SHIFT 9 -#define I40E_PFPM_PROXYFC_NS_MASK (0x1 << I40E_PFPM_PROXYFC_NS_SHIFT) -#define I40E_PFPM_PROXYFC_NS_DIRECTED_SHIFT 10 -#define I40E_PFPM_PROXYFC_NS_DIRECTED_MASK (0x1 << I40E_PFPM_PROXYFC_NS_DIRECTED_SHIFT) -#define I40E_PFPM_PROXYFC_MLD_SHIFT 12 -#define I40E_PFPM_PROXYFC_MLD_MASK (0x1 << I40E_PFPM_PROXYFC_MLD_SHIFT) -#define I40E_PFPM_PROXYS 0x00245B80 -#define I40E_PFPM_PROXYS_EX_SHIFT 1 -#define I40E_PFPM_PROXYS_EX_MASK (0x1 << I40E_PFPM_PROXYS_EX_SHIFT) -#define I40E_PFPM_PROXYS_ARP_SHIFT 4 -#define I40E_PFPM_PROXYS_ARP_MASK (0x1 << I40E_PFPM_PROXYS_ARP_SHIFT) -#define I40E_PFPM_PROXYS_ARP_DIRECTED_SHIFT 5 -#define I40E_PFPM_PROXYS_ARP_DIRECTED_MASK (0x1 << I40E_PFPM_PROXYS_ARP_DIRECTED_SHIFT) -#define I40E_PFPM_PROXYS_NS_SHIFT 9 -#define I40E_PFPM_PROXYS_NS_MASK (0x1 << I40E_PFPM_PROXYS_NS_SHIFT) -#define I40E_PFPM_PROXYS_NS_DIRECTED_SHIFT 10 -#define I40E_PFPM_PROXYS_NS_DIRECTED_MASK (0x1 << I40E_PFPM_PROXYS_NS_DIRECTED_SHIFT) -#define I40E_PFPM_PROXYS_MLD_SHIFT 12 -#define I40E_PFPM_PROXYS_MLD_MASK (0x1 << I40E_PFPM_PROXYS_MLD_SHIFT) #define I40E_PFPM_WUC 0x0006B200 #define I40E_PFPM_WUC_EN_APM_D0_SHIFT 5 #define I40E_PFPM_WUC_EN_APM_D0_MASK (0x1 << I40E_PFPM_WUC_EN_APM_D0_SHIFT) @@ -4536,21 +4512,21 @@ #define I40E_VFMSIX_PBA 0x00002000 #define I40E_VFMSIX_PBA_PENBIT_SHIFT 0 #define I40E_VFMSIX_PBA_PENBIT_MASK (0xFFFFFFFF << I40E_VFMSIX_PBA_PENBIT_SHIFT) -#define I40E_VFMSIX_TADD(_i) (0x00000008 + ((_i) * 16)) /* _i=0...16 */ +#define I40E_VFMSIX_TADD(_i) (0x00000000 + ((_i) * 16)) /* _i=0...16 */ #define I40E_VFMSIX_TADD_MAX_INDEX 16 #define I40E_VFMSIX_TADD_MSIXTADD10_SHIFT 0 #define I40E_VFMSIX_TADD_MSIXTADD10_MASK (0x3 << I40E_VFMSIX_TADD_MSIXTADD10_SHIFT) #define I40E_VFMSIX_TADD_MSIXTADD_SHIFT 2 #define I40E_VFMSIX_TADD_MSIXTADD_MASK (0x3FFFFFFF << I40E_VFMSIX_TADD_MSIXTADD_SHIFT) -#define I40E_VFMSIX_TMSG(_i) (0x0000000C + ((_i) * 16)) /* _i=0...16 */ +#define I40E_VFMSIX_TMSG(_i) (0x00000008 + ((_i) * 16)) /* _i=0...16 */ #define I40E_VFMSIX_TMSG_MAX_INDEX 16 #define I40E_VFMSIX_TMSG_MSIXTMSG_SHIFT 0 #define I40E_VFMSIX_TMSG_MSIXTMSG_MASK (0xFFFFFFFF << I40E_VFMSIX_TMSG_MSIXTMSG_SHIFT) -#define I40E_VFMSIX_TUADD(_i) (0x00000000 + ((_i) * 16)) /* _i=0...16 */ +#define I40E_VFMSIX_TUADD(_i) (0x00000004 + ((_i) * 16)) /* _i=0...16 */ #define I40E_VFMSIX_TUADD_MAX_INDEX 16 #define I40E_VFMSIX_TUADD_MSIXTUADD_SHIFT 0 #define I40E_VFMSIX_TUADD_MSIXTUADD_MASK (0xFFFFFFFF << I40E_VFMSIX_TUADD_MSIXTUADD_SHIFT) -#define I40E_VFMSIX_TVCTRL(_i) (0x00000004 + ((_i) * 16)) /* _i=0...16 */ +#define I40E_VFMSIX_TVCTRL(_i) (0x0000000C + ((_i) * 16)) /* _i=0...16 */ #define I40E_VFMSIX_TVCTRL_MAX_INDEX 16 #define I40E_VFMSIX_TVCTRL_MASK_SHIFT 0 #define I40E_VFMSIX_TVCTRL_MASK_MASK (0x1 << I40E_VFMSIX_TVCTRL_MASK_SHIFT) @@ -4610,8 +4586,6 @@ #define I40E_VFPE_IPCONFIG01_PEIPID_MASK (0xFFFF << I40E_VFPE_IPCONFIG01_PEIPID_SHIFT) #define I40E_VFPE_IPCONFIG01_USEENTIREIDRANGE_SHIFT 16 #define I40E_VFPE_IPCONFIG01_USEENTIREIDRANGE_MASK (0x1 << I40E_VFPE_IPCONFIG01_USEENTIREIDRANGE_SHIFT) -#define I40E_VFPE_IPCONFIG01_USEUPPERIDRANGE_SHIFT 17 -#define I40E_VFPE_IPCONFIG01_USEUPPERIDRANGE_MASK (0x1 << I40E_VFPE_IPCONFIG01_USEUPPERIDRANGE_SHIFT) #define I40E_VFPE_MRTEIDXMASK1 0x00009000 #define I40E_VFPE_MRTEIDXMASK1_MRTEIDXMASKBITS_SHIFT 0 #define I40E_VFPE_MRTEIDXMASK1_MRTEIDXMASKBITS_MASK (0x1F << I40E_VFPE_MRTEIDXMASK1_MRTEIDXMASKBITS_SHIFT) @@ -4684,5 +4658,13 @@ #define I40E_VFQF_HREGION_OVERRIDE_ENA_7_MASK (0x1 << I40E_VFQF_HREGION_OVERRIDE_ENA_7_SHIFT) #define I40E_VFQF_HREGION_REGION_7_SHIFT 29 #define I40E_VFQF_HREGION_REGION_7_MASK (0x7 << I40E_VFQF_HREGION_REGION_7_SHIFT) - +#define I40E_RCU_PST_FOC_ACCESS_STATUS 0x00270110 +#define I40E_RCU_PST_FOC_ACCESS_STATUS_WR_ACCESS_CNT_SHIFT 0 +#define I40E_RCU_PST_FOC_ACCESS_STATUS_WR_ACCESS_CNT_MASK (0xFF << I40E_RCU_PST_FOC_ACCESS_STATUS_WR_ACCESS_CNT_SHIFT) +#define I40E_RCU_PST_FOC_ACCESS_STATUS_RD_ACCESS_CNT_SHIFT 8 +#define I40E_RCU_PST_FOC_ACCESS_STATUS_RD_ACCESS_CNT_MASK (0xFF << I40E_RCU_PST_FOC_ACCESS_STATUS_RD_ACCESS_CNT_SHIFT) +#define I40E_RCU_PST_FOC_ACCESS_STATUS_ERR_CNT_SHIFT 16 +#define I40E_RCU_PST_FOC_ACCESS_STATUS_ERR_CNT_MASK (0xFF << I40E_RCU_PST_FOC_ACCESS_STATUS_ERR_CNT_SHIFT) +#define I40E_RCU_PST_FOC_ACCESS_STATUS_LAST_ERR_CODE_SHIFT 24 +#define I40E_RCU_PST_FOC_ACCESS_STATUS_LAST_ERR_CODE_MASK (0x7 << I40E_RCU_PST_FOC_ACCESS_STATUS_LAST_ERR_CODE_SHIFT) #endif --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40e/i40e_status.h +++ linux-3.13.0/drivers/net/ethernet/intel/i40e/i40e_status.h @@ -1,7 +1,7 @@ /******************************************************************************* * * Intel Ethernet Controller XL710 Family Linux Driver - * Copyright(c) 2013 Intel Corporation. + * Copyright(c) 2013 - 2014 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, @@ -12,9 +12,8 @@ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * - * You should have 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. + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . * * The full GNU General Public License is included in this distribution in * the file called "COPYING". --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40e/i40e_txrx.c +++ linux-3.13.0/drivers/net/ethernet/intel/i40e/i40e_txrx.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Intel Ethernet Controller XL710 Family Linux Driver - * Copyright(c) 2013 Intel Corporation. + * Copyright(c) 2013 - 2014 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, @@ -12,9 +12,8 @@ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * - * You should have 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. + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . * * The full GNU General Public License is included in this distribution in * the file called "COPYING". @@ -26,6 +25,7 @@ ******************************************************************************/ #include "i40e.h" +#include "i40e_prototype.h" static inline __le64 build_ctob(u32 td_cmd, u32 td_offset, unsigned int size, u32 td_tag) @@ -40,11 +40,12 @@ #define I40E_TXD_CMD (I40E_TX_DESC_CMD_EOP | I40E_TX_DESC_CMD_RS) /** * i40e_program_fdir_filter - Program a Flow Director filter - * @fdir_input: Packet data that will be filter parameters + * @fdir_data: Packet data that will be filter parameters + * @raw_packet: the pre-allocated packet buffer for FDir * @pf: The pf pointer * @add: True for add/update, False for remove **/ -int i40e_program_fdir_filter(struct i40e_fdir_data *fdir_data, +int i40e_program_fdir_filter(struct i40e_fdir_filter *fdir_data, u8 *raw_packet, struct i40e_pf *pf, bool add) { struct i40e_filter_program_desc *fdir_desc; @@ -69,15 +70,14 @@ tx_ring = vsi->tx_rings[0]; dev = tx_ring->dev; - dma = dma_map_single(dev, fdir_data->raw_packet, - I40E_FDIR_MAX_RAW_PACKET_LOOKUP, DMA_TO_DEVICE); + dma = dma_map_single(dev, raw_packet, + I40E_FDIR_MAX_RAW_PACKET_SIZE, DMA_TO_DEVICE); if (dma_mapping_error(dev, dma)) goto dma_fail; /* grab the next descriptor */ i = tx_ring->next_to_use; fdir_desc = I40E_TX_FDIRDESC(tx_ring, i); - tx_buf = &tx_ring->tx_bi[i]; tx_ring->next_to_use = (i + 1 < tx_ring->count) ? i + 1 : 0; @@ -129,14 +129,22 @@ /* Now program a dummy descriptor */ i = tx_ring->next_to_use; tx_desc = I40E_TX_DESC(tx_ring, i); + tx_buf = &tx_ring->tx_bi[i]; tx_ring->next_to_use = (i + 1 < tx_ring->count) ? i + 1 : 0; + /* record length, and DMA address */ + dma_unmap_len_set(tx_buf, len, I40E_FDIR_MAX_RAW_PACKET_SIZE); + dma_unmap_addr_set(tx_buf, dma, dma); + tx_desc->buffer_addr = cpu_to_le64(dma); td_cmd = I40E_TXD_CMD | I40E_TX_DESC_CMD_DUMMY; tx_desc->cmd_type_offset_bsz = - build_ctob(td_cmd, 0, I40E_FDIR_MAX_RAW_PACKET_LOOKUP, 0); + build_ctob(td_cmd, 0, I40E_FDIR_MAX_RAW_PACKET_SIZE, 0); + + /* set the timestamp */ + tx_buf->time_stamp = jiffies; /* Force memory writes to complete before letting h/w * know there are new descriptors to fetch. (Only @@ -155,26 +163,329 @@ return -1; } +#define IP_HEADER_OFFSET 14 +#define I40E_UDPIP_DUMMY_PACKET_LEN 42 +/** + * i40e_add_del_fdir_udpv4 - Add/Remove UDPv4 filters + * @vsi: pointer to the targeted VSI + * @fd_data: the flow director data required for the FDir descriptor + * @raw_packet: the pre-allocated packet buffer for FDir + * @add: true adds a filter, false removes it + * + * Returns 0 if the filters were successfully added or removed + **/ +static int i40e_add_del_fdir_udpv4(struct i40e_vsi *vsi, + struct i40e_fdir_filter *fd_data, + u8 *raw_packet, bool add) +{ + struct i40e_pf *pf = vsi->back; + struct udphdr *udp; + struct iphdr *ip; + bool err = false; + int ret; + int i; + static char packet[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x08, 0, + 0x45, 0, 0, 0x1c, 0, 0, 0x40, 0, 0x40, 0x11, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + memcpy(raw_packet, packet, I40E_UDPIP_DUMMY_PACKET_LEN); + + ip = (struct iphdr *)(raw_packet + IP_HEADER_OFFSET); + udp = (struct udphdr *)(raw_packet + IP_HEADER_OFFSET + + sizeof(struct iphdr)); + + ip->daddr = fd_data->dst_ip[0]; + udp->dest = fd_data->dst_port; + ip->saddr = fd_data->src_ip[0]; + udp->source = fd_data->src_port; + + for (i = I40E_FILTER_PCTYPE_NONF_UNICAST_IPV4_UDP; + i <= I40E_FILTER_PCTYPE_NONF_IPV4_UDP; i++) { + fd_data->pctype = i; + ret = i40e_program_fdir_filter(fd_data, raw_packet, pf, add); + + if (ret) { + dev_info(&pf->pdev->dev, + "Filter command send failed for PCTYPE %d (ret = %d)\n", + fd_data->pctype, ret); + err = true; + } else { + dev_info(&pf->pdev->dev, + "Filter OK for PCTYPE %d (ret = %d)\n", + fd_data->pctype, ret); + } + } + + return err ? -EOPNOTSUPP : 0; +} + +#define I40E_TCPIP_DUMMY_PACKET_LEN 54 +/** + * i40e_add_del_fdir_tcpv4 - Add/Remove TCPv4 filters + * @vsi: pointer to the targeted VSI + * @fd_data: the flow director data required for the FDir descriptor + * @raw_packet: the pre-allocated packet buffer for FDir + * @add: true adds a filter, false removes it + * + * Returns 0 if the filters were successfully added or removed + **/ +static int i40e_add_del_fdir_tcpv4(struct i40e_vsi *vsi, + struct i40e_fdir_filter *fd_data, + u8 *raw_packet, bool add) +{ + struct i40e_pf *pf = vsi->back; + struct tcphdr *tcp; + struct iphdr *ip; + bool err = false; + int ret; + /* Dummy packet */ + static char packet[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x08, 0, + 0x45, 0, 0, 0x28, 0, 0, 0x40, 0, 0x40, 0x6, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x80, 0x11, + 0x0, 0x72, 0, 0, 0, 0}; + + memcpy(raw_packet, packet, I40E_TCPIP_DUMMY_PACKET_LEN); + + ip = (struct iphdr *)(raw_packet + IP_HEADER_OFFSET); + tcp = (struct tcphdr *)(raw_packet + IP_HEADER_OFFSET + + sizeof(struct iphdr)); + + ip->daddr = fd_data->dst_ip[0]; + tcp->dest = fd_data->dst_port; + ip->saddr = fd_data->src_ip[0]; + tcp->source = fd_data->src_port; + + if (add) { + if (pf->flags & I40E_FLAG_FD_ATR_ENABLED) { + dev_info(&pf->pdev->dev, "Forcing ATR off, sideband rules for TCP/IPv4 flow being applied\n"); + pf->flags &= ~I40E_FLAG_FD_ATR_ENABLED; + } + } + + fd_data->pctype = I40E_FILTER_PCTYPE_NONF_IPV4_TCP_SYN; + ret = i40e_program_fdir_filter(fd_data, raw_packet, pf, add); + + if (ret) { + dev_info(&pf->pdev->dev, + "Filter command send failed for PCTYPE %d (ret = %d)\n", + fd_data->pctype, ret); + err = true; + } else { + dev_info(&pf->pdev->dev, "Filter OK for PCTYPE %d (ret = %d)\n", + fd_data->pctype, ret); + } + + fd_data->pctype = I40E_FILTER_PCTYPE_NONF_IPV4_TCP; + + ret = i40e_program_fdir_filter(fd_data, raw_packet, pf, add); + if (ret) { + dev_info(&pf->pdev->dev, + "Filter command send failed for PCTYPE %d (ret = %d)\n", + fd_data->pctype, ret); + err = true; + } else { + dev_info(&pf->pdev->dev, "Filter OK for PCTYPE %d (ret = %d)\n", + fd_data->pctype, ret); + } + + return err ? -EOPNOTSUPP : 0; +} + +/** + * i40e_add_del_fdir_sctpv4 - Add/Remove SCTPv4 Flow Director filters for + * a specific flow spec + * @vsi: pointer to the targeted VSI + * @fd_data: the flow director data required for the FDir descriptor + * @raw_packet: the pre-allocated packet buffer for FDir + * @add: true adds a filter, false removes it + * + * Always returns -EOPNOTSUPP + **/ +static int i40e_add_del_fdir_sctpv4(struct i40e_vsi *vsi, + struct i40e_fdir_filter *fd_data, + u8 *raw_packet, bool add) +{ + return -EOPNOTSUPP; +} + +#define I40E_IP_DUMMY_PACKET_LEN 34 +/** + * i40e_add_del_fdir_ipv4 - Add/Remove IPv4 Flow Director filters for + * a specific flow spec + * @vsi: pointer to the targeted VSI + * @fd_data: the flow director data required for the FDir descriptor + * @raw_packet: the pre-allocated packet buffer for FDir + * @add: true adds a filter, false removes it + * + * Returns 0 if the filters were successfully added or removed + **/ +static int i40e_add_del_fdir_ipv4(struct i40e_vsi *vsi, + struct i40e_fdir_filter *fd_data, + u8 *raw_packet, bool add) +{ + struct i40e_pf *pf = vsi->back; + struct iphdr *ip; + bool err = false; + int ret; + int i; + static char packet[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x08, 0, + 0x45, 0, 0, 0x14, 0, 0, 0x40, 0, 0x40, 0x10, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0}; + + memcpy(raw_packet, packet, I40E_IP_DUMMY_PACKET_LEN); + ip = (struct iphdr *)(raw_packet + IP_HEADER_OFFSET); + + ip->saddr = fd_data->src_ip[0]; + ip->daddr = fd_data->dst_ip[0]; + ip->protocol = 0; + + for (i = I40E_FILTER_PCTYPE_NONF_IPV4_OTHER; + i <= I40E_FILTER_PCTYPE_FRAG_IPV4; i++) { + fd_data->pctype = i; + ret = i40e_program_fdir_filter(fd_data, raw_packet, pf, add); + + if (ret) { + dev_info(&pf->pdev->dev, + "Filter command send failed for PCTYPE %d (ret = %d)\n", + fd_data->pctype, ret); + err = true; + } else { + dev_info(&pf->pdev->dev, + "Filter OK for PCTYPE %d (ret = %d)\n", + fd_data->pctype, ret); + } + } + + return err ? -EOPNOTSUPP : 0; +} + +/** + * i40e_add_del_fdir - Build raw packets to add/del fdir filter + * @vsi: pointer to the targeted VSI + * @cmd: command to get or set RX flow classification rules + * @add: true adds a filter, false removes it + * + **/ +int i40e_add_del_fdir(struct i40e_vsi *vsi, + struct i40e_fdir_filter *input, bool add) +{ + struct i40e_pf *pf = vsi->back; + u8 *raw_packet; + int ret; + + /* Populate the Flow Director that we have at the moment + * and allocate the raw packet buffer for the calling functions + */ + raw_packet = kzalloc(I40E_FDIR_MAX_RAW_PACKET_SIZE, GFP_KERNEL); + if (!raw_packet) + return -ENOMEM; + + switch (input->flow_type & ~FLOW_EXT) { + case TCP_V4_FLOW: + ret = i40e_add_del_fdir_tcpv4(vsi, input, raw_packet, + add); + break; + case UDP_V4_FLOW: + ret = i40e_add_del_fdir_udpv4(vsi, input, raw_packet, + add); + break; + case SCTP_V4_FLOW: + ret = i40e_add_del_fdir_sctpv4(vsi, input, raw_packet, + add); + break; + case IPV4_FLOW: + ret = i40e_add_del_fdir_ipv4(vsi, input, raw_packet, + add); + break; + case IP_USER_FLOW: + switch (input->ip4_proto) { + case IPPROTO_TCP: + ret = i40e_add_del_fdir_tcpv4(vsi, input, + raw_packet, add); + break; + case IPPROTO_UDP: + ret = i40e_add_del_fdir_udpv4(vsi, input, + raw_packet, add); + break; + case IPPROTO_SCTP: + ret = i40e_add_del_fdir_sctpv4(vsi, input, + raw_packet, add); + break; + default: + ret = i40e_add_del_fdir_ipv4(vsi, input, + raw_packet, add); + break; + } + break; + default: + dev_info(&pf->pdev->dev, "Could not specify spec type %d\n", + input->flow_type); + ret = -EINVAL; + } + + kfree(raw_packet); + return ret; +} + /** * i40e_fd_handle_status - check the Programming Status for FD * @rx_ring: the Rx ring for this descriptor - * @qw: the descriptor data + * @rx_desc: the Rx descriptor for programming Status, not a packet descriptor. * @prog_id: the id originally used for programming * * This is used to verify if the FD programming or invalidation * requested by SW to the HW is successful or not and take actions accordingly. **/ -static void i40e_fd_handle_status(struct i40e_ring *rx_ring, u32 qw, u8 prog_id) +static void i40e_fd_handle_status(struct i40e_ring *rx_ring, + union i40e_rx_desc *rx_desc, u8 prog_id) { - struct pci_dev *pdev = rx_ring->vsi->back->pdev; + struct i40e_pf *pf = rx_ring->vsi->back; + struct pci_dev *pdev = pf->pdev; + u32 fcnt_prog, fcnt_avail; u32 error; + u64 qw; + qw = le64_to_cpu(rx_desc->wb.qword1.status_error_len); error = (qw & I40E_RX_PROG_STATUS_DESC_QW1_ERROR_MASK) >> I40E_RX_PROG_STATUS_DESC_QW1_ERROR_SHIFT; - /* for now just print the Status */ - dev_info(&pdev->dev, "FD programming id %02x, Status %08x\n", - prog_id, error); + if (error == (0x1 << I40E_RX_PROG_STATUS_DESC_FD_TBL_FULL_SHIFT)) { + dev_warn(&pdev->dev, "ntuple filter loc = %d, could not be added\n", + rx_desc->wb.qword0.hi_dword.fd_id); + + /* filter programming failed most likely due to table full */ + fcnt_prog = i40e_get_current_fd_count(pf); + fcnt_avail = pf->hw.fdir_shared_filter_count + + pf->fdir_pf_filter_count; + + /* If ATR is running fcnt_prog can quickly change, + * if we are very close to full, it makes sense to disable + * FD ATR/SB and then re-enable it when there is room. + */ + if (fcnt_prog >= (fcnt_avail - I40E_FDIR_BUFFER_FULL_MARGIN)) { + /* Turn off ATR first */ + if (pf->flags | I40E_FLAG_FD_ATR_ENABLED) { + pf->flags &= ~I40E_FLAG_FD_ATR_ENABLED; + dev_warn(&pdev->dev, "FD filter space full, ATR for further flows will be turned off\n"); + pf->auto_disable_flags |= + I40E_FLAG_FD_ATR_ENABLED; + pf->flags |= I40E_FLAG_FDIR_REQUIRES_REINIT; + } else if (pf->flags | I40E_FLAG_FD_SB_ENABLED) { + pf->flags &= ~I40E_FLAG_FD_SB_ENABLED; + dev_warn(&pdev->dev, "FD filter space full, new ntuple rules will not be added\n"); + pf->auto_disable_flags |= + I40E_FLAG_FD_SB_ENABLED; + pf->flags |= I40E_FLAG_FDIR_REQUIRES_REINIT; + } + } else { + dev_info(&pdev->dev, "FD filter programming error\n"); + } + } else if (error == + (0x1 << I40E_RX_PROG_STATUS_DESC_NO_FD_ENTRY_SHIFT)) { + if (I40E_DEBUG_FD & pf->hw.debug_mask) + dev_info(&pdev->dev, "ntuple filter loc = %d, could not be removed\n", + rx_desc->wb.qword0.hi_dword.fd_id); + } } /** @@ -309,6 +620,20 @@ } /** + * i40e_get_head - Retrieve head from head writeback + * @tx_ring: tx ring to fetch head of + * + * Returns value of Tx ring head based on value stored + * in head write-back location + **/ +static inline u32 i40e_get_head(struct i40e_ring *tx_ring) +{ + void *head = (struct i40e_tx_desc *)tx_ring->desc + tx_ring->count; + + return le32_to_cpu(*(volatile __le32 *)head); +} + +/** * i40e_clean_tx_irq - Reclaim resources after transmit completes * @tx_ring: tx ring to clean * @budget: how many cleans we're allowed @@ -319,6 +644,7 @@ { u16 i = tx_ring->next_to_clean; struct i40e_tx_buffer *tx_buf; + struct i40e_tx_desc *tx_head; struct i40e_tx_desc *tx_desc; unsigned int total_packets = 0; unsigned int total_bytes = 0; @@ -327,6 +653,8 @@ tx_desc = I40E_TX_DESC(tx_ring, i); i -= tx_ring->count; + tx_head = I40E_TX_DESC(tx_ring, i40e_get_head(tx_ring)); + do { struct i40e_tx_desc *eop_desc = tx_buf->next_to_watch; @@ -337,9 +665,8 @@ /* prevent any other reads prior to eop_desc */ read_barrier_depends(); - /* if the descriptor isn't done, no work yet to do */ - if (!(eop_desc->cmd_type_offset_bsz & - cpu_to_le64(I40E_TX_DESC_DTYPE_DESC_DONE))) + /* we have caught up to head, no work left to do */ + if (tx_head == tx_desc) break; /* clear next_to_watch to prevent false hangs */ @@ -571,7 +898,7 @@ I40E_RX_PROG_STATUS_DESC_QW1_PROGID_SHIFT; if (id == I40E_RX_PROG_STATUS_DESC_FD_FILTER_STATUS) - i40e_fd_handle_status(rx_ring, qw, id); + i40e_fd_handle_status(rx_ring, rx_desc, id); } /** @@ -595,6 +922,10 @@ /* round up to nearest 4K */ tx_ring->size = tx_ring->count * sizeof(struct i40e_tx_desc); + /* add u32 for head writeback, align after this takes care of + * guaranteeing this is at least one cache line in size + */ + tx_ring->size += sizeof(u32); tx_ring->size = ALIGN(tx_ring->size, 4096); tx_ring->desc = dma_alloc_coherent(dev, tx_ring->size, &tx_ring->dma, GFP_KERNEL); @@ -768,7 +1099,7 @@ skb = netdev_alloc_skb_ip_align(rx_ring->netdev, rx_ring->rx_buf_len); if (!skb) { - rx_ring->rx_stats.alloc_rx_buff_failed++; + rx_ring->rx_stats.alloc_buff_failed++; goto no_buffers; } /* initialize queue mapping */ @@ -782,7 +1113,7 @@ rx_ring->rx_buf_len, DMA_FROM_DEVICE); if (dma_mapping_error(rx_ring->dev, bi->dma)) { - rx_ring->rx_stats.alloc_rx_buff_failed++; + rx_ring->rx_stats.alloc_buff_failed++; bi->dma = 0; goto no_buffers; } @@ -792,7 +1123,7 @@ if (!bi->page) { bi->page = alloc_page(GFP_ATOMIC); if (!bi->page) { - rx_ring->rx_stats.alloc_rx_page_failed++; + rx_ring->rx_stats.alloc_page_failed++; goto no_buffers; } } @@ -807,7 +1138,7 @@ DMA_FROM_DEVICE); if (dma_mapping_error(rx_ring->dev, bi->page_dma)) { - rx_ring->rx_stats.alloc_rx_page_failed++; + rx_ring->rx_stats.alloc_page_failed++; bi->page_dma = 0; goto no_buffers; } @@ -860,12 +1191,25 @@ * @skb: skb currently being received and modified * @rx_status: status value of last descriptor in packet * @rx_error: error value of last descriptor in packet + * @rx_ptype: ptype value of last descriptor in packet **/ static inline void i40e_rx_checksum(struct i40e_vsi *vsi, struct sk_buff *skb, u32 rx_status, - u32 rx_error) + u32 rx_error, + u16 rx_ptype) { + bool ipv4_tunnel, ipv6_tunnel; + __wsum rx_udp_csum; + __sum16 csum; + struct iphdr *iph; + + ipv4_tunnel = (rx_ptype > I40E_RX_PTYPE_GRENAT4_MAC_PAY3) && + (rx_ptype < I40E_RX_PTYPE_GRENAT4_MACVLAN_IPV6_ICMP_PAY4); + ipv6_tunnel = (rx_ptype > I40E_RX_PTYPE_GRENAT6_MAC_PAY3) && + (rx_ptype < I40E_RX_PTYPE_GRENAT6_MACVLAN_IPV6_ICMP_PAY4); + + skb->encapsulation = ipv4_tunnel || ipv6_tunnel; skb->ip_summed = CHECKSUM_NONE; /* Rx csum enabled and ip headers found? */ @@ -873,13 +1217,47 @@ rx_status & (1 << I40E_RX_DESC_STATUS_L3L4P_SHIFT))) return; - /* IP or L4 checksum error */ + /* likely incorrect csum if alternate IP extension headers found */ + if (rx_status & (1 << I40E_RX_DESC_STATUS_IPV6EXADD_SHIFT)) + return; + + /* IP or L4 or outmost IP checksum error */ if (rx_error & ((1 << I40E_RX_DESC_ERROR_IPE_SHIFT) | - (1 << I40E_RX_DESC_ERROR_L4E_SHIFT))) { + (1 << I40E_RX_DESC_ERROR_L4E_SHIFT) | + (1 << I40E_RX_DESC_ERROR_EIPE_SHIFT))) { vsi->back->hw_csum_rx_error++; return; } + if (ipv4_tunnel && + !(rx_status & (1 << I40E_RX_DESC_STATUS_UDP_0_SHIFT))) { + /* If VXLAN traffic has an outer UDPv4 checksum we need to check + * it in the driver, hardware does not do it for us. + * Since L3L4P bit was set we assume a valid IHL value (>=5) + * so the total length of IPv4 header is IHL*4 bytes + */ + skb->transport_header = skb->mac_header + + sizeof(struct ethhdr) + + (ip_hdr(skb)->ihl * 4); + + /* Add 4 bytes for VLAN tagged packets */ + skb->transport_header += (skb->protocol == htons(ETH_P_8021Q) || + skb->protocol == htons(ETH_P_8021AD)) + ? VLAN_HLEN : 0; + + rx_udp_csum = udp_csum(skb); + iph = ip_hdr(skb); + csum = csum_tcpudp_magic( + iph->saddr, iph->daddr, + (skb->len - skb_transport_offset(skb)), + IPPROTO_UDP, rx_udp_csum); + + if (udp_hdr(skb)->check != csum) { + vsi->back->hw_csum_rx_error++; + return; + } + } + skb->ip_summed = CHECKSUM_UNNECESSARY; } @@ -891,13 +1269,38 @@ static inline u32 i40e_rx_hash(struct i40e_ring *ring, union i40e_rx_desc *rx_desc) { - if (ring->netdev->features & NETIF_F_RXHASH) { - if ((le64_to_cpu(rx_desc->wb.qword1.status_error_len) >> - I40E_RX_DESC_STATUS_FLTSTAT_SHIFT) & - I40E_RX_DESC_FLTSTAT_RSS_HASH) - return le32_to_cpu(rx_desc->wb.qword0.hi_dword.rss); - } - return 0; + const __le64 rss_mask = + cpu_to_le64((u64)I40E_RX_DESC_FLTSTAT_RSS_HASH << + I40E_RX_DESC_STATUS_FLTSTAT_SHIFT); + + if ((ring->netdev->features & NETIF_F_RXHASH) && + (rx_desc->wb.qword1.status_error_len & rss_mask) == rss_mask) + return le32_to_cpu(rx_desc->wb.qword0.hi_dword.rss); + else + return 0; +} + +/** + * i40e_ptype_to_hash - get a hash type + * @ptype: the ptype value from the descriptor + * + * Returns a hash type to be used by skb_set_hash + **/ +static inline enum pkt_hash_types i40e_ptype_to_hash(u8 ptype) +{ + struct i40e_rx_ptype_decoded decoded = decode_rx_desc_ptype(ptype); + + if (!decoded.known) + return PKT_HASH_TYPE_NONE; + + if (decoded.outer_ip == I40E_RX_PTYPE_OUTER_IP && + decoded.payload_layer == I40E_RX_PTYPE_PAYLOAD_LAYER_PAY4) + return PKT_HASH_TYPE_L4; + else if (decoded.outer_ip == I40E_RX_PTYPE_OUTER_IP && + decoded.payload_layer == I40E_RX_PTYPE_PAYLOAD_LAYER_PAY3) + return PKT_HASH_TYPE_L3; + else + return PKT_HASH_TYPE_L2; } /** @@ -917,12 +1320,16 @@ u16 i = rx_ring->next_to_clean; union i40e_rx_desc *rx_desc; u32 rx_error, rx_status; + u8 rx_ptype; u64 qword; + if (budget <= 0) + return 0; + rx_desc = I40E_RX_DESC(rx_ring, i); qword = le64_to_cpu(rx_desc->wb.qword1.status_error_len); - rx_status = (qword & I40E_RXD_QW1_STATUS_MASK) - >> I40E_RXD_QW1_STATUS_SHIFT; + rx_status = (qword & I40E_RXD_QW1_STATUS_MASK) >> + I40E_RXD_QW1_STATUS_SHIFT; while (rx_status & (1 << I40E_RX_DESC_STATUS_DD_SHIFT)) { union i40e_rx_desc *next_rxd; @@ -938,18 +1345,20 @@ skb = rx_bi->skb; prefetch(skb->data); - rx_packet_len = (qword & I40E_RXD_QW1_LENGTH_PBUF_MASK) - >> I40E_RXD_QW1_LENGTH_PBUF_SHIFT; - rx_header_len = (qword & I40E_RXD_QW1_LENGTH_HBUF_MASK) - >> I40E_RXD_QW1_LENGTH_HBUF_SHIFT; - rx_sph = (qword & I40E_RXD_QW1_LENGTH_SPH_MASK) - >> I40E_RXD_QW1_LENGTH_SPH_SHIFT; + rx_packet_len = (qword & I40E_RXD_QW1_LENGTH_PBUF_MASK) >> + I40E_RXD_QW1_LENGTH_PBUF_SHIFT; + rx_header_len = (qword & I40E_RXD_QW1_LENGTH_HBUF_MASK) >> + I40E_RXD_QW1_LENGTH_HBUF_SHIFT; + rx_sph = (qword & I40E_RXD_QW1_LENGTH_SPH_MASK) >> + I40E_RXD_QW1_LENGTH_SPH_SHIFT; - rx_error = (qword & I40E_RXD_QW1_ERROR_MASK) - >> I40E_RXD_QW1_ERROR_SHIFT; + rx_error = (qword & I40E_RXD_QW1_ERROR_MASK) >> + I40E_RXD_QW1_ERROR_SHIFT; rx_hbo = rx_error & (1 << I40E_RX_DESC_ERROR_HBO_SHIFT); rx_error &= ~(1 << I40E_RX_DESC_ERROR_HBO_SHIFT); + rx_ptype = (qword & I40E_RXD_QW1_PTYPE_MASK) >> + I40E_RXD_QW1_PTYPE_SHIFT; rx_bi->skb = NULL; /* This memory barrier is needed to keep us from reading @@ -1029,14 +1438,23 @@ goto next_desc; } - skb->rxhash = i40e_rx_hash(rx_ring, rx_desc); - i40e_rx_checksum(vsi, skb, rx_status, rx_error); + skb_set_hash(skb, i40e_rx_hash(rx_ring, rx_desc), + i40e_ptype_to_hash(rx_ptype)); + if (unlikely(rx_status & I40E_RXD_QW1_STATUS_TSYNVALID_MASK)) { + i40e_ptp_rx_hwtstamp(vsi->back, skb, (rx_status & + I40E_RXD_QW1_STATUS_TSYNINDX_MASK) >> + I40E_RXD_QW1_STATUS_TSYNINDX_SHIFT); + rx_ring->last_rx_timestamp = jiffies; + } /* probably a little skewed due to removing CRC */ total_rx_bytes += skb->len; total_rx_packets++; skb->protocol = eth_type_trans(skb, rx_ring->netdev); + + i40e_rx_checksum(vsi, skb, rx_status, rx_error, rx_ptype); + vlan_tag = rx_status & (1 << I40E_RX_DESC_STATUS_L2TAG1P_SHIFT) ? le16_to_cpu(rx_desc->wb.qword0.lo_dword.l2tag1) : 0; @@ -1059,8 +1477,8 @@ /* use prefetched values */ rx_desc = next_rxd; qword = le64_to_cpu(rx_desc->wb.qword1.status_error_len); - rx_status = (qword & I40E_RXD_QW1_STATUS_MASK) - >> I40E_RXD_QW1_STATUS_SHIFT; + rx_status = (qword & I40E_RXD_QW1_STATUS_MASK) >> + I40E_RXD_QW1_STATUS_SHIFT; } rx_ring->next_to_clean = i; @@ -1173,15 +1591,13 @@ u16 i; /* make sure ATR is enabled */ - if (!(pf->flags & I40E_FLAG_FDIR_ATR_ENABLED)) + if (!(pf->flags & I40E_FLAG_FD_ATR_ENABLED)) return; /* if sampling is disabled do nothing */ if (!tx_ring->atr_sample_rate) return; - tx_ring->atr_count++; - /* snag network header to get L4 type and address */ hdr.network = skb_network_header(skb); @@ -1203,8 +1619,17 @@ th = (struct tcphdr *)(hdr.network + hlen); - /* sample on all syn/fin packets or once every atr sample rate */ - if (!th->fin && !th->syn && (tx_ring->atr_count < tx_ring->atr_sample_rate)) + /* Due to lack of space, no more new filters can be programmed */ + if (th->syn && (pf->auto_disable_flags & I40E_FLAG_FD_ATR_ENABLED)) + return; + + tx_ring->atr_count++; + + /* sample on all syn/fin/rst packets or once every atr sample rate */ + if (!th->fin && + !th->syn && + !th->rst && + (tx_ring->atr_count < tx_ring->atr_sample_rate)) return; tx_ring->atr_count = 0; @@ -1228,7 +1653,7 @@ dtype_cmd = I40E_TX_DESC_DTYPE_FILTER_PROG; - dtype_cmd |= th->fin ? + dtype_cmd |= (th->fin || th->rst) ? (I40E_FILTER_PROGRAM_DESC_PCMD_REMOVE << I40E_TXD_FLTR_QW1_PCMD_SHIFT) : (I40E_FILTER_PROGRAM_DESC_PCMD_ADD_UPDATE << @@ -1268,7 +1693,7 @@ tx_flags |= vlan_tx_tag_get(skb) << I40E_TX_FLAGS_VLAN_SHIFT; tx_flags |= I40E_TX_FLAGS_HW_VLAN; /* else if it is a SW VLAN, check the next protocol and store the tag */ - } else if (protocol == __constant_htons(ETH_P_8021Q)) { + } else if (protocol == htons(ETH_P_8021Q)) { struct vlan_hdr *vhdr, _vhdr; vhdr = skb_header_pointer(skb, ETH_HLEN, sizeof(_vhdr), &_vhdr); if (!vhdr) @@ -1288,9 +1713,11 @@ I40E_TX_FLAGS_VLAN_PRIO_SHIFT; if (tx_flags & I40E_TX_FLAGS_SW_VLAN) { struct vlan_ethhdr *vhdr; - if (skb_header_cloned(skb) && - pskb_expand_head(skb, 0, 0, GFP_ATOMIC)) - return -ENOMEM; + int rc; + + rc = skb_cow_head(skb, 0); + if (rc < 0) + return rc; vhdr = (struct vlan_ethhdr *)skb->data; vhdr->h_vlan_TCI = htons(tx_flags >> I40E_TX_FLAGS_VLAN_SHIFT); @@ -1318,22 +1745,20 @@ u64 *cd_type_cmd_tso_mss, u32 *cd_tunneling) { u32 cd_cmd, cd_tso_len, cd_mss; + struct ipv6hdr *ipv6h; struct tcphdr *tcph; struct iphdr *iph; u32 l4len; int err; - struct ipv6hdr *ipv6h; if (!skb_is_gso(skb)) return 0; - if (skb_header_cloned(skb)) { - err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC); - if (err) - return err; - } + err = skb_cow_head(skb, 0); + if (err < 0) + return err; - if (protocol == __constant_htons(ETH_P_IP)) { + if (protocol == htons(ETH_P_IP)) { iph = skb->encapsulation ? inner_ip_hdr(skb) : ip_hdr(skb); tcph = skb->encapsulation ? inner_tcp_hdr(skb) : tcp_hdr(skb); iph->tot_len = 0; @@ -1359,10 +1784,50 @@ cd_cmd = I40E_TX_CTX_DESC_TSO; cd_tso_len = skb->len - *hdr_len; cd_mss = skb_shinfo(skb)->gso_size; - *cd_type_cmd_tso_mss |= ((u64)cd_cmd << I40E_TXD_CTX_QW1_CMD_SHIFT) - | ((u64)cd_tso_len - << I40E_TXD_CTX_QW1_TSO_LEN_SHIFT) - | ((u64)cd_mss << I40E_TXD_CTX_QW1_MSS_SHIFT); + *cd_type_cmd_tso_mss |= ((u64)cd_cmd << I40E_TXD_CTX_QW1_CMD_SHIFT) | + ((u64)cd_tso_len << + I40E_TXD_CTX_QW1_TSO_LEN_SHIFT) | + ((u64)cd_mss << I40E_TXD_CTX_QW1_MSS_SHIFT); + return 1; +} + +/** + * i40e_tsyn - set up the tsyn context descriptor + * @tx_ring: ptr to the ring to send + * @skb: ptr to the skb we're sending + * @tx_flags: the collected send information + * + * Returns 0 if no Tx timestamp can happen and 1 if the timestamp will happen + **/ +static int i40e_tsyn(struct i40e_ring *tx_ring, struct sk_buff *skb, + u32 tx_flags, u64 *cd_type_cmd_tso_mss) +{ + struct i40e_pf *pf; + + if (likely(!(skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP))) + return 0; + + /* Tx timestamps cannot be sampled when doing TSO */ + if (tx_flags & I40E_TX_FLAGS_TSO) + return 0; + + /* only timestamp the outbound packet if the user has requested it and + * we are not already transmitting a packet to be timestamped + */ + pf = i40e_netdev_to_pf(tx_ring->netdev); + if (pf->ptp_tx && !pf->ptp_tx_skb) { + skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS; + pf->ptp_tx_skb = skb_get(skb); + } else { + return 0; + } + + *cd_type_cmd_tso_mss |= (u64)I40E_TX_CTX_DESC_TSYN << + I40E_TXD_CTX_QW1_CMD_SHIFT; + + pf->ptp_tx_start = jiffies; + schedule_work(&pf->ptp_tx_work); + return 1; } @@ -1490,7 +1955,8 @@ struct i40e_tx_context_desc *context_desc; int i = tx_ring->next_to_use; - if (!cd_type_cmd_tso_mss && !cd_tunneling && !cd_l2tag2) + if ((cd_type_cmd_tso_mss == I40E_TX_DESC_DTYPE_CONTEXT) && + !cd_tunneling && !cd_l2tag2) return; /* grab the next descriptor */ @@ -1601,9 +2067,23 @@ tx_bi = &tx_ring->tx_bi[i]; } - tx_desc->cmd_type_offset_bsz = - build_ctob(td_cmd, td_offset, size, td_tag) | - cpu_to_le64((u64)I40E_TXD_CMD << I40E_TXD_QW1_CMD_SHIFT); + /* Place RS bit on last descriptor of any packet that spans across the + * 4th descriptor (WB_STRIDE aka 0x3) in a 64B cacheline. + */ +#define WB_STRIDE 0x3 + if (((i & WB_STRIDE) != WB_STRIDE) && + (first <= &tx_ring->tx_bi[i]) && + (first >= &tx_ring->tx_bi[i & ~WB_STRIDE])) { + tx_desc->cmd_type_offset_bsz = + build_ctob(td_cmd, td_offset, size, td_tag) | + cpu_to_le64((u64)I40E_TX_DESC_CMD_EOP << + I40E_TXD_QW1_CMD_SHIFT); + } else { + tx_desc->cmd_type_offset_bsz = + build_ctob(td_cmd, td_offset, size, td_tag) | + cpu_to_le64((u64)I40E_TXD_CMD << + I40E_TXD_QW1_CMD_SHIFT); + } netdev_tx_sent_queue(netdev_get_tx_queue(tx_ring->netdev, tx_ring->queue_index), @@ -1660,6 +2140,7 @@ static inline int __i40e_maybe_stop_tx(struct i40e_ring *tx_ring, int size) { netif_stop_subqueue(tx_ring->netdev, tx_ring->queue_index); + /* Memory barrier before checking head and tail */ smp_mb(); /* Check again in a case another CPU has just made room available. */ @@ -1705,7 +2186,7 @@ /* need: 1 descriptor per page * PAGE_SIZE/I40E_MAX_DATA_PER_TXD, * + 1 desc for skb_head_len/I40E_MAX_DATA_PER_TXD, - * + 2 desc gap to keep tail from touching head, + * + 4 desc gap to avoid the cache line where head is, * + 1 desc for context descriptor, * otherwise try next time */ @@ -1716,7 +2197,7 @@ count += skb_shinfo(skb)->nr_frags; #endif count += TXD_USE_COUNT(skb_headlen(skb)); - if (i40e_maybe_stop_tx(tx_ring, count + 3)) { + if (i40e_maybe_stop_tx(tx_ring, count + 4 + 1)) { tx_ring->tx_stats.tx_busy++; return 0; } @@ -1741,6 +2222,7 @@ __be16 protocol; u32 td_cmd = 0; u8 hdr_len = 0; + int tsyn; int tso; if (0 == i40e_xmit_descriptor_count(skb, tx_ring)) return NETDEV_TX_BUSY; @@ -1756,9 +2238,9 @@ first = &tx_ring->tx_bi[tx_ring->next_to_use]; /* setup IPv4/IPv6 offloads */ - if (protocol == __constant_htons(ETH_P_IP)) + if (protocol == htons(ETH_P_IP)) tx_flags |= I40E_TX_FLAGS_IPV4; - else if (protocol == __constant_htons(ETH_P_IPV6)) + else if (protocol == htons(ETH_P_IPV6)) tx_flags |= I40E_TX_FLAGS_IPV6; tso = i40e_tso(tx_ring, skb, tx_flags, protocol, &hdr_len, @@ -1771,6 +2253,11 @@ skb_tx_timestamp(skb); + tsyn = i40e_tsyn(tx_ring, skb, tx_flags, &cd_type_cmd_tso_mss); + + if (tsyn) + tx_flags |= I40E_TX_FLAGS_TSYN; + /* always enable CRC insertion offload */ td_cmd |= I40E_TX_DESC_CMD_ICRC; --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40e/i40e_txrx.h +++ linux-3.13.0/drivers/net/ethernet/intel/i40e/i40e_txrx.h @@ -1,7 +1,7 @@ /******************************************************************************* * * Intel Ethernet Controller XL710 Family Linux Driver - * Copyright(c) 2013 Intel Corporation. + * Copyright(c) 2013 - 2014 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, @@ -12,9 +12,8 @@ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * - * You should have 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. + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . * * The full GNU General Public License is included in this distribution in * the file called "COPYING". @@ -25,11 +24,13 @@ * ******************************************************************************/ +#ifndef _I40E_TXRX_H_ +#define _I40E_TXRX_H_ + /* Interrupt Throttling and Rate Limiting (storm control) Goodies */ -#define I40E_MAX_ITR 0x07FF -#define I40E_MIN_ITR 0x0001 -#define I40E_ITR_USEC_RESOLUTION 2 +#define I40E_MAX_ITR 0x0FF0 /* reg uses 2 usec resolution */ +#define I40E_MIN_ITR 0x0004 /* reg uses 2 usec resolution */ #define I40E_MAX_IRATE 0x03F #define I40E_MIN_IRATE 0x001 #define I40E_IRATE_USEC_RESOLUTION 4 @@ -49,10 +50,43 @@ #define I40E_QUEUE_END_OF_LIST 0x7FF -#define I40E_ITR_NONE 3 -#define I40E_RX_ITR 0 -#define I40E_TX_ITR 1 -#define I40E_PE_ITR 2 +/* this enum matches hardware bits and is meant to be used by DYN_CTLN + * registers and QINT registers or more generally anywhere in the manual + * mentioning ITR_INDX, ITR_NONE cannot be used as an index 'n' into any + * register but instead is a special value meaning "don't update" ITR0/1/2. + */ +enum i40e_dyn_idx_t { + I40E_IDX_ITR0 = 0, + I40E_IDX_ITR1 = 1, + I40E_IDX_ITR2 = 2, + I40E_ITR_NONE = 3 /* ITR_NONE must not be used as an index */ +}; + +/* these are indexes into ITRN registers */ +#define I40E_RX_ITR I40E_IDX_ITR0 +#define I40E_TX_ITR I40E_IDX_ITR1 +#define I40E_PE_ITR I40E_IDX_ITR2 + +/* Supported RSS offloads */ +#define I40E_DEFAULT_RSS_HENA ( \ + ((u64)1 << I40E_FILTER_PCTYPE_NONF_UNICAST_IPV4_UDP) | \ + ((u64)1 << I40E_FILTER_PCTYPE_NONF_MULTICAST_IPV4_UDP) | \ + ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV4_UDP) | \ + ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV4_SCTP) | \ + ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV4_TCP_SYN) | \ + ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV4_TCP) | \ + ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV4_OTHER) | \ + ((u64)1 << I40E_FILTER_PCTYPE_FRAG_IPV4) | \ + ((u64)1 << I40E_FILTER_PCTYPE_NONF_UNICAST_IPV6_UDP) | \ + ((u64)1 << I40E_FILTER_PCTYPE_NONF_MULTICAST_IPV6_UDP) | \ + ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV6_UDP) | \ + ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV6_TCP_SYN) | \ + ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV6_TCP) | \ + ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV6_SCTP) | \ + ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV6_OTHER) | \ + ((u64)1 << I40E_FILTER_PCTYPE_FRAG_IPV6) | \ + ((u64)1 << I40E_FILTER_PCTYPE_L2_PAYLOAD)) + /* Supported Rx Buffer Sizes */ #define I40E_RXBUFFER_512 512 /* Used for packet split */ #define I40E_RXBUFFER_2048 2048 @@ -102,6 +136,7 @@ #define I40E_TX_FLAGS_IPV6 (u32)(1 << 5) #define I40E_TX_FLAGS_FCCRC (u32)(1 << 6) #define I40E_TX_FLAGS_FSO (u32)(1 << 7) +#define I40E_TX_FLAGS_TSYN (u32)(1 << 8) #define I40E_TX_FLAGS_VLAN_MASK 0xffff0000 #define I40E_TX_FLAGS_VLAN_PRIO_MASK 0xe0000000 #define I40E_TX_FLAGS_VLAN_PRIO_SHIFT 29 @@ -139,8 +174,8 @@ struct i40e_rx_queue_stats { u64 non_eop_descs; - u64 alloc_rx_page_failed; - u64 alloc_rx_buff_failed; + u64 alloc_page_failed; + u64 alloc_buff_failed; }; enum i40e_ring_state_t { @@ -214,6 +249,8 @@ u8 atr_sample_rate; u8 atr_count; + unsigned long last_rx_timestamp; + bool ring_active; /* is ring online or not */ /* stats structs */ @@ -262,3 +299,4 @@ void i40e_free_tx_resources(struct i40e_ring *tx_ring); void i40e_free_rx_resources(struct i40e_ring *rx_ring); int i40e_napi_poll(struct napi_struct *napi, int budget); +#endif /* _I40E_TXRX_H_ */ --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40e/i40e_type.h +++ linux-3.13.0/drivers/net/ethernet/intel/i40e/i40e_type.h @@ -1,7 +1,7 @@ /******************************************************************************* * * Intel Ethernet Controller XL710 Family Linux Driver - * Copyright(c) 2013 Intel Corporation. + * Copyright(c) 2013 - 2014 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, @@ -12,9 +12,8 @@ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * - * You should have 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. + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . * * The full GNU General Public License is included in this distribution in * the file called "COPYING". @@ -36,38 +35,31 @@ #include "i40e_lan_hmc.h" /* Device IDs */ -#define I40E_SFP_XL710_DEVICE_ID 0x1572 -#define I40E_SFP_X710_DEVICE_ID 0x1573 -#define I40E_QEMU_DEVICE_ID 0x1574 -#define I40E_KX_A_DEVICE_ID 0x157F -#define I40E_KX_B_DEVICE_ID 0x1580 -#define I40E_KX_C_DEVICE_ID 0x1581 -#define I40E_KX_D_DEVICE_ID 0x1582 -#define I40E_QSFP_A_DEVICE_ID 0x1583 -#define I40E_QSFP_B_DEVICE_ID 0x1584 -#define I40E_QSFP_C_DEVICE_ID 0x1585 -#define I40E_VF_DEVICE_ID 0x154C -#define I40E_VF_HV_DEVICE_ID 0x1571 - -#define I40E_FW_API_VERSION_MAJOR 0x0001 -#define I40E_FW_API_VERSION_MINOR 0x0000 +#define I40E_DEV_ID_SFP_XL710 0x1572 +#define I40E_DEV_ID_SFP_X710 0x1573 +#define I40E_DEV_ID_QEMU 0x1574 +#define I40E_DEV_ID_KX_A 0x157F +#define I40E_DEV_ID_KX_B 0x1580 +#define I40E_DEV_ID_KX_C 0x1581 +#define I40E_DEV_ID_KX_D 0x1582 +#define I40E_DEV_ID_QSFP_A 0x1583 +#define I40E_DEV_ID_QSFP_B 0x1584 +#define I40E_DEV_ID_QSFP_C 0x1585 +#define I40E_DEV_ID_VF 0x154C +#define I40E_DEV_ID_VF_HV 0x1571 + +#define i40e_is_40G_device(d) ((d) == I40E_DEV_ID_QSFP_A || \ + (d) == I40E_DEV_ID_QSFP_B || \ + (d) == I40E_DEV_ID_QSFP_C) #define I40E_MAX_VSI_QP 16 #define I40E_MAX_VF_VSI 3 #define I40E_MAX_CHAINED_RX_BUFFERS 5 +#define I40E_MAX_PF_UDP_OFFLOAD_PORTS 16 /* Max default timeout in ms, */ #define I40E_MAX_NVM_TIMEOUT 18000 -/* Check whether address is multicast. This is little-endian specific check.*/ -#define I40E_IS_MULTICAST(address) \ - (bool)(((u8 *)(address))[0] & ((u8)0x01)) - -/* Check whether an address is broadcast. */ -#define I40E_IS_BROADCAST(address) \ - ((((u8 *)(address))[0] == ((u8)0xff)) && \ - (((u8 *)(address))[1] == ((u8)0xff))) - /* Switch from mc to the 2usec global time (this is the GTIME resolution) */ #define I40E_MS_TO_GTIME(time) (((time) * 1000) / 2) @@ -75,8 +67,6 @@ struct i40e_hw; typedef void (*I40E_ADMINQ_CALLBACK)(struct i40e_hw *, struct i40e_aq_desc *); -#define I40E_ETH_LENGTH_OF_ADDRESS 6 - /* Data type manipulation macros. */ #define I40E_DESC_UNUSED(R) \ @@ -85,9 +75,10 @@ /* bitfields for Tx queue mapping in QTX_CTL */ #define I40E_QTX_CTL_VF_QUEUE 0x0 +#define I40E_QTX_CTL_VM_QUEUE 0x1 #define I40E_QTX_CTL_PF_QUEUE 0x2 -/* debug masks */ +/* debug masks - set these bits in hw->debug_mask to control output */ enum i40e_debug_mask { I40E_DEBUG_INIT = 0x00000001, I40E_DEBUG_RELEASE = 0x00000002, @@ -100,11 +91,12 @@ I40E_DEBUG_FLOW = 0x00000200, I40E_DEBUG_DCB = 0x00000400, I40E_DEBUG_DIAG = 0x00000800, + I40E_DEBUG_FD = 0x00001000, - I40E_DEBUG_AQ_MESSAGE = 0x01000000, /* for i40e_debug() */ + I40E_DEBUG_AQ_MESSAGE = 0x01000000, I40E_DEBUG_AQ_DESCRIPTOR = 0x02000000, I40E_DEBUG_AQ_DESC_BUFFER = 0x04000000, - I40E_DEBUG_AQ_COMMAND = 0x06000000, /* for i40e_debug_aq() */ + I40E_DEBUG_AQ_COMMAND = 0x06000000, I40E_DEBUG_AQ = 0x0F000000, I40E_DEBUG_USER = 0xF0000000, @@ -134,6 +126,7 @@ I40E_MEDIA_TYPE_BASET, I40E_MEDIA_TYPE_BACKPLANE, I40E_MEDIA_TYPE_CX4, + I40E_MEDIA_TYPE_DA, I40E_MEDIA_TYPE_VIRTUAL }; @@ -171,6 +164,7 @@ u8 link_info; u8 an_info; u8 ext_info; + u8 loopback; /* is Link Status Event notification to SW enabled */ bool lse_enable; }; @@ -236,9 +230,9 @@ struct i40e_mac_info { enum i40e_mac_type type; - u8 addr[I40E_ETH_LENGTH_OF_ADDRESS]; - u8 perm_addr[I40E_ETH_LENGTH_OF_ADDRESS]; - u8 san_addr[I40E_ETH_LENGTH_OF_ADDRESS]; + u8 addr[ETH_ALEN]; + u8 perm_addr[ETH_ALEN]; + u8 san_addr[ETH_ALEN]; u16 max_fcoeq; }; @@ -465,6 +459,10 @@ union { __le32 rss; /* RSS Hash */ __le32 fcoe_param; /* FCoE DDP Context id */ + /* Flow director filter id in case of + * Programming status desc WB + */ + __le32 fd_id; } hi_dword; } qword0; struct { @@ -500,18 +498,26 @@ I40E_RX_DESC_STATUS_L2TAG1P_SHIFT = 2, I40E_RX_DESC_STATUS_L3L4P_SHIFT = 3, I40E_RX_DESC_STATUS_CRCP_SHIFT = 4, - I40E_RX_DESC_STATUS_TSYNINDX_SHIFT = 5, /* 3 BITS */ + I40E_RX_DESC_STATUS_TSYNINDX_SHIFT = 5, /* 2 BITS */ + I40E_RX_DESC_STATUS_TSYNVALID_SHIFT = 7, I40E_RX_DESC_STATUS_PIF_SHIFT = 8, I40E_RX_DESC_STATUS_UMBCAST_SHIFT = 9, /* 2 BITS */ I40E_RX_DESC_STATUS_FLM_SHIFT = 11, I40E_RX_DESC_STATUS_FLTSTAT_SHIFT = 12, /* 2 BITS */ - I40E_RX_DESC_STATUS_LPBK_SHIFT = 14 + I40E_RX_DESC_STATUS_LPBK_SHIFT = 14, + I40E_RX_DESC_STATUS_IPV6EXADD_SHIFT = 15, + I40E_RX_DESC_STATUS_RESERVED_SHIFT = 16, /* 2 BITS */ + I40E_RX_DESC_STATUS_UDP_0_SHIFT = 18 }; #define I40E_RXD_QW1_STATUS_TSYNINDX_SHIFT I40E_RX_DESC_STATUS_TSYNINDX_SHIFT -#define I40E_RXD_QW1_STATUS_TSYNINDX_MASK (0x7UL << \ +#define I40E_RXD_QW1_STATUS_TSYNINDX_MASK (0x3UL << \ I40E_RXD_QW1_STATUS_TSYNINDX_SHIFT) +#define I40E_RXD_QW1_STATUS_TSYNVALID_SHIFT I40E_RX_DESC_STATUS_TSYNVALID_SHIFT +#define I40E_RXD_QW1_STATUS_TSYNVALID_MASK (0x1UL << \ + I40E_RXD_QW1_STATUS_TSYNVALID_SHIFT) + enum i40e_rx_desc_fltstat_values { I40E_RX_DESC_FLTSTAT_NO_DATA = 0, I40E_RX_DESC_FLTSTAT_RSV_FD_ID = 1, /* 16byte desc? FD_ID : RSV */ @@ -547,28 +553,32 @@ /* Packet type non-ip values */ enum i40e_rx_l2_ptype { - I40E_RX_PTYPE_L2_RESERVED = 0, - I40E_RX_PTYPE_L2_MAC_PAY2 = 1, - I40E_RX_PTYPE_L2_TIMESYNC_PAY2 = 2, - I40E_RX_PTYPE_L2_FIP_PAY2 = 3, - I40E_RX_PTYPE_L2_OUI_PAY2 = 4, - I40E_RX_PTYPE_L2_MACCNTRL_PAY2 = 5, - I40E_RX_PTYPE_L2_LLDP_PAY2 = 6, - I40E_RX_PTYPE_L2_ECP_PAY2 = 7, - I40E_RX_PTYPE_L2_EVB_PAY2 = 8, - I40E_RX_PTYPE_L2_QCN_PAY2 = 9, - I40E_RX_PTYPE_L2_EAPOL_PAY2 = 10, - I40E_RX_PTYPE_L2_ARP = 11, - I40E_RX_PTYPE_L2_FCOE_PAY3 = 12, - I40E_RX_PTYPE_L2_FCOE_FCDATA_PAY3 = 13, - I40E_RX_PTYPE_L2_FCOE_FCRDY_PAY3 = 14, - I40E_RX_PTYPE_L2_FCOE_FCRSP_PAY3 = 15, - I40E_RX_PTYPE_L2_FCOE_FCOTHER_PA = 16, - I40E_RX_PTYPE_L2_FCOE_VFT_PAY3 = 17, - I40E_RX_PTYPE_L2_FCOE_VFT_FCDATA = 18, - I40E_RX_PTYPE_L2_FCOE_VFT_FCRDY = 19, - I40E_RX_PTYPE_L2_FCOE_VFT_FCRSP = 20, - I40E_RX_PTYPE_L2_FCOE_VFT_FCOTHER = 21 + I40E_RX_PTYPE_L2_RESERVED = 0, + I40E_RX_PTYPE_L2_MAC_PAY2 = 1, + I40E_RX_PTYPE_L2_TIMESYNC_PAY2 = 2, + I40E_RX_PTYPE_L2_FIP_PAY2 = 3, + I40E_RX_PTYPE_L2_OUI_PAY2 = 4, + I40E_RX_PTYPE_L2_MACCNTRL_PAY2 = 5, + I40E_RX_PTYPE_L2_LLDP_PAY2 = 6, + I40E_RX_PTYPE_L2_ECP_PAY2 = 7, + I40E_RX_PTYPE_L2_EVB_PAY2 = 8, + I40E_RX_PTYPE_L2_QCN_PAY2 = 9, + I40E_RX_PTYPE_L2_EAPOL_PAY2 = 10, + I40E_RX_PTYPE_L2_ARP = 11, + I40E_RX_PTYPE_L2_FCOE_PAY3 = 12, + I40E_RX_PTYPE_L2_FCOE_FCDATA_PAY3 = 13, + I40E_RX_PTYPE_L2_FCOE_FCRDY_PAY3 = 14, + I40E_RX_PTYPE_L2_FCOE_FCRSP_PAY3 = 15, + I40E_RX_PTYPE_L2_FCOE_FCOTHER_PA = 16, + I40E_RX_PTYPE_L2_FCOE_VFT_PAY3 = 17, + I40E_RX_PTYPE_L2_FCOE_VFT_FCDATA = 18, + I40E_RX_PTYPE_L2_FCOE_VFT_FCRDY = 19, + I40E_RX_PTYPE_L2_FCOE_VFT_FCRSP = 20, + I40E_RX_PTYPE_L2_FCOE_VFT_FCOTHER = 21, + I40E_RX_PTYPE_GRENAT4_MAC_PAY3 = 58, + I40E_RX_PTYPE_GRENAT4_MACVLAN_IPV6_ICMP_PAY4 = 87, + I40E_RX_PTYPE_GRENAT6_MAC_PAY3 = 124, + I40E_RX_PTYPE_GRENAT6_MACVLAN_IPV6_ICMP_PAY4 = 153 }; struct i40e_rx_ptype_decoded { @@ -693,7 +703,7 @@ enum i40e_rx_prog_status_desc_error_bits { /* Note: These are predefined bit offsets */ I40E_RX_PROG_STATUS_DESC_FD_TBL_FULL_SHIFT = 0, - I40E_RX_PROG_STATUS_DESC_NO_FD_QUOTA_SHIFT = 1, + I40E_RX_PROG_STATUS_DESC_NO_FD_ENTRY_SHIFT = 1, I40E_RX_PROG_STATUS_DESC_FCOE_TBL_FULL_SHIFT = 2, I40E_RX_PROG_STATUS_DESC_FCOE_CONFLICT_SHIFT = 3 }; @@ -852,10 +862,7 @@ /* Packet Classifier Types for filters */ enum i40e_filter_pctype { - /* Note: Value 0-25 are reserved for future use */ - I40E_FILTER_PCTYPE_IPV4_TEREDO_UDP = 26, - I40E_FILTER_PCTYPE_IPV6_TEREDO_UDP = 27, - I40E_FILTER_PCTYPE_NONF_IPV4_1588_UDP = 28, + /* Note: Values 0-28 are reserved for future use */ I40E_FILTER_PCTYPE_NONF_UNICAST_IPV4_UDP = 29, I40E_FILTER_PCTYPE_NONF_MULTICAST_IPV4_UDP = 30, I40E_FILTER_PCTYPE_NONF_IPV4_UDP = 31, @@ -864,8 +871,7 @@ I40E_FILTER_PCTYPE_NONF_IPV4_SCTP = 34, I40E_FILTER_PCTYPE_NONF_IPV4_OTHER = 35, I40E_FILTER_PCTYPE_FRAG_IPV4 = 36, - /* Note: Value 37 is reserved for future use */ - I40E_FILTER_PCTYPE_NONF_IPV6_1588_UDP = 38, + /* Note: Values 37-38 are reserved for future use */ I40E_FILTER_PCTYPE_NONF_UNICAST_IPV6_UDP = 39, I40E_FILTER_PCTYPE_NONF_MULTICAST_IPV6_UDP = 40, I40E_FILTER_PCTYPE_NONF_IPV6_UDP = 41, @@ -877,7 +883,8 @@ /* Note: Value 47 is reserved for future use */ I40E_FILTER_PCTYPE_FCOE_OX = 48, I40E_FILTER_PCTYPE_FCOE_RX = 49, - /* Note: Value 50-62 are reserved for future use */ + I40E_FILTER_PCTYPE_FCOE_OTHER = 50, + /* Note: Values 51-62 are reserved for future use */ I40E_FILTER_PCTYPE_L2_PAYLOAD = 63, }; @@ -1008,12 +1015,18 @@ u64 tx_size_big; /* ptc9522 */ u64 mac_short_packet_dropped; /* mspdc */ u64 checksum_error; /* xec */ + /* EEE LPI */ + bool tx_lpi_status; + bool rx_lpi_status; + u64 tx_lpi_count; /* etlpic */ + u64 rx_lpi_count; /* erlpic */ }; /* Checksum and Shadow RAM pointers */ #define I40E_SR_NVM_CONTROL_WORD 0x00 #define I40E_SR_EMP_MODULE_PTR 0x0F #define I40E_SR_NVM_IMAGE_VERSION 0x18 +#define I40E_SR_NVM_WAKE_ON_LAN 0x19 #define I40E_SR_ALTERNATE_SAN_MAC_ADDRESS_PTR 0x27 #define I40E_SR_NVM_EETRACK_LO 0x2D #define I40E_SR_NVM_EETRACK_HI 0x2E @@ -1138,17 +1151,4 @@ I40E_RESET_GLOBR = 2, I40E_RESET_EMPR = 3, }; - -/* IEEE 802.1AB LLDP Agent Variables from NVM */ -#define I40E_NVM_LLDP_CFG_PTR 0xF -struct i40e_lldp_variables { - u16 length; - u16 adminstatus; - u16 msgfasttx; - u16 msgtxinterval; - u16 txparams; - u16 timers; - u16 crc8; -}; - #endif /* _I40E_TYPE_H_ */ --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40e/i40e_virtchnl.h +++ linux-3.13.0/drivers/net/ethernet/intel/i40e/i40e_virtchnl.h @@ -1,7 +1,7 @@ /******************************************************************************* * * Intel Ethernet Controller XL710 Family Linux Driver - * Copyright(c) 2013 Intel Corporation. + * Copyright(c) 2013 - 2014 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, @@ -12,9 +12,8 @@ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * - * You should have 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. + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . * * The full GNU General Public License is included in this distribution in * the file called "COPYING". @@ -142,7 +141,7 @@ u16 num_queue_pairs; enum i40e_vsi_type vsi_type; u16 qset_handle; - u8 default_mac_addr[I40E_ETH_LENGTH_OF_ADDRESS]; + u8 default_mac_addr[ETH_ALEN]; }; /* VF offload flags */ #define I40E_VIRTCHNL_VF_OFFLOAD_L2 0x00000001 @@ -265,7 +264,7 @@ */ struct i40e_virtchnl_ether_addr { - u8 addr[I40E_ETH_LENGTH_OF_ADDRESS]; + u8 addr[ETH_ALEN]; u8 pad[2]; }; --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c +++ linux-3.13.0/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Intel Ethernet Controller XL710 Family Linux Driver - * Copyright(c) 2013 Intel Corporation. + * Copyright(c) 2013 - 2014 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, @@ -12,9 +12,8 @@ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * - * You should have 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. + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . * * The full GNU General Public License is included in this distribution in * the file called "COPYING". @@ -102,130 +101,6 @@ } /** - * i40e_ctrl_vsi_tx_queue - * @vf: pointer to the vf info - * @vsi_idx: index of VSI in PF struct - * @vsi_queue_id: vsi relative queue index - * @ctrl: control flags - * - * enable/disable/enable check/disable check - **/ -static int i40e_ctrl_vsi_tx_queue(struct i40e_vf *vf, u16 vsi_idx, - u16 vsi_queue_id, - enum i40e_queue_ctrl ctrl) -{ - struct i40e_pf *pf = vf->pf; - struct i40e_hw *hw = &pf->hw; - bool writeback = false; - u16 pf_queue_id; - int ret = 0; - u32 reg; - - pf_queue_id = i40e_vc_get_pf_queue_id(vf, vsi_idx, vsi_queue_id); - reg = rd32(hw, I40E_QTX_ENA(pf_queue_id)); - - switch (ctrl) { - case I40E_QUEUE_CTRL_ENABLE: - reg |= I40E_QTX_ENA_QENA_REQ_MASK; - writeback = true; - break; - case I40E_QUEUE_CTRL_ENABLECHECK: - ret = (reg & I40E_QTX_ENA_QENA_STAT_MASK) ? 0 : -EPERM; - break; - case I40E_QUEUE_CTRL_DISABLE: - reg &= ~I40E_QTX_ENA_QENA_REQ_MASK; - writeback = true; - break; - case I40E_QUEUE_CTRL_DISABLECHECK: - ret = (reg & I40E_QTX_ENA_QENA_STAT_MASK) ? -EPERM : 0; - break; - case I40E_QUEUE_CTRL_FASTDISABLE: - reg |= I40E_QTX_ENA_FAST_QDIS_MASK; - writeback = true; - break; - case I40E_QUEUE_CTRL_FASTDISABLECHECK: - ret = (reg & I40E_QTX_ENA_QENA_STAT_MASK) ? -EPERM : 0; - if (!ret) { - reg &= ~I40E_QTX_ENA_FAST_QDIS_MASK; - writeback = true; - } - break; - default: - ret = -EINVAL; - break; - } - - if (writeback) { - wr32(hw, I40E_QTX_ENA(pf_queue_id), reg); - i40e_flush(hw); - } - - return ret; -} - -/** - * i40e_ctrl_vsi_rx_queue - * @vf: pointer to the vf info - * @vsi_idx: index of VSI in PF struct - * @vsi_queue_id: vsi relative queue index - * @ctrl: control flags - * - * enable/disable/enable check/disable check - **/ -static int i40e_ctrl_vsi_rx_queue(struct i40e_vf *vf, u16 vsi_idx, - u16 vsi_queue_id, - enum i40e_queue_ctrl ctrl) -{ - struct i40e_pf *pf = vf->pf; - struct i40e_hw *hw = &pf->hw; - bool writeback = false; - u16 pf_queue_id; - int ret = 0; - u32 reg; - - pf_queue_id = i40e_vc_get_pf_queue_id(vf, vsi_idx, vsi_queue_id); - reg = rd32(hw, I40E_QRX_ENA(pf_queue_id)); - - switch (ctrl) { - case I40E_QUEUE_CTRL_ENABLE: - reg |= I40E_QRX_ENA_QENA_REQ_MASK; - writeback = true; - break; - case I40E_QUEUE_CTRL_ENABLECHECK: - ret = (reg & I40E_QRX_ENA_QENA_STAT_MASK) ? 0 : -EPERM; - break; - case I40E_QUEUE_CTRL_DISABLE: - reg &= ~I40E_QRX_ENA_QENA_REQ_MASK; - writeback = true; - break; - case I40E_QUEUE_CTRL_DISABLECHECK: - ret = (reg & I40E_QRX_ENA_QENA_STAT_MASK) ? -EPERM : 0; - break; - case I40E_QUEUE_CTRL_FASTDISABLE: - reg |= I40E_QRX_ENA_FAST_QDIS_MASK; - writeback = true; - break; - case I40E_QUEUE_CTRL_FASTDISABLECHECK: - ret = (reg & I40E_QRX_ENA_QENA_STAT_MASK) ? -EPERM : 0; - if (!ret) { - reg &= ~I40E_QRX_ENA_FAST_QDIS_MASK; - writeback = true; - } - break; - default: - ret = -EINVAL; - break; - } - - if (writeback) { - wr32(hw, I40E_QRX_ENA(pf_queue_id), reg); - i40e_flush(hw); - } - - return ret; -} - -/** * i40e_config_irq_link_list * @vf: pointer to the vf info * @vsi_idx: index of VSI in PF struct @@ -251,8 +126,8 @@ reg_idx = I40E_VPINT_LNKLST0(vf->vf_id); else reg_idx = I40E_VPINT_LNKLSTN( - (pf->hw.func_caps.num_msix_vectors_vf - * vf->vf_id) + (vector_id - 1)); + ((pf->hw.func_caps.num_msix_vectors_vf - 1) * vf->vf_id) + + (vector_id - 1)); if (vecmap->rxq_map == 0 && vecmap->txq_map == 0) { /* Special case - No queues mapped on this vector */ @@ -260,23 +135,17 @@ goto irq_list_done; } tempmap = vecmap->rxq_map; - vsi_queue_id = find_first_bit(&tempmap, I40E_MAX_VSI_QP); - while (vsi_queue_id < I40E_MAX_VSI_QP) { + for_each_set_bit(vsi_queue_id, &tempmap, I40E_MAX_VSI_QP) { linklistmap |= (1 << (I40E_VIRTCHNL_SUPPORTED_QTYPES * vsi_queue_id)); - vsi_queue_id = - find_next_bit(&tempmap, I40E_MAX_VSI_QP, vsi_queue_id + 1); } tempmap = vecmap->txq_map; - vsi_queue_id = find_first_bit(&tempmap, I40E_MAX_VSI_QP); - while (vsi_queue_id < I40E_MAX_VSI_QP) { + for_each_set_bit(vsi_queue_id, &tempmap, I40E_MAX_VSI_QP) { linklistmap |= (1 << (I40E_VIRTCHNL_SUPPORTED_QTYPES * vsi_queue_id + 1)); - vsi_queue_id = find_next_bit(&tempmap, I40E_MAX_VSI_QP, - vsi_queue_id + 1); } next_q = find_first_bit(&linklistmap, @@ -307,7 +176,8 @@ (I40E_MAX_VSI_QP * I40E_VIRTCHNL_SUPPORTED_QTYPES), next_q + 1); - if (next_q < (I40E_MAX_VSI_QP * I40E_VIRTCHNL_SUPPORTED_QTYPES)) { + if (next_q < + (I40E_MAX_VSI_QP * I40E_VIRTCHNL_SUPPORTED_QTYPES)) { vsi_queue_id = next_q / I40E_VIRTCHNL_SUPPORTED_QTYPES; qtype = next_q % I40E_VIRTCHNL_SUPPORTED_QTYPES; pf_queue_id = i40e_vc_get_pf_queue_id(vf, vsi_idx, @@ -360,6 +230,9 @@ tx_ctx.qlen = info->ring_len; tx_ctx.rdylist = le16_to_cpu(pf->vsi[vsi_idx]->info.qs_handle[0]); tx_ctx.rdylist_act = 0; + tx_ctx.head_wb_ena = 1; + tx_ctx.head_wb_addr = info->dma_ring_addr + + (info->ring_len * sizeof(struct i40e_tx_desc)); /* clear the context in the HMC */ ret = i40e_clear_lan_tx_queue_context(hw, pf_queue_id); @@ -499,7 +372,6 @@ { struct i40e_mac_filter *f = NULL; struct i40e_pf *pf = vf->pf; - struct i40e_hw *hw = &pf->hw; struct i40e_vsi *vsi; int ret = 0; @@ -513,171 +385,42 @@ goto error_alloc_vsi_res; } if (type == I40E_VSI_SRIOV) { + u8 brdcast[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; vf->lan_vsi_index = vsi->idx; vf->lan_vsi_id = vsi->id; dev_info(&pf->pdev->dev, - "LAN VSI index %d, VSI id %d\n", - vsi->idx, vsi->id); + "VF %d assigned LAN VSI index %d, VSI id %d\n", + vf->vf_id, vsi->idx, vsi->id); + /* If the port VLAN has been configured and then the + * VF driver was removed then the VSI port VLAN + * configuration was destroyed. Check if there is + * a port VLAN and restore the VSI configuration if + * needed. + */ + if (vf->port_vlan_id) + i40e_vsi_add_pvid(vsi, vf->port_vlan_id); f = i40e_add_filter(vsi, vf->default_lan_addr.addr, - 0, true, false); - } - if (!f) { - dev_err(&pf->pdev->dev, "Unable to add ucast filter\n"); - ret = -ENOMEM; - goto error_alloc_vsi_res; + vf->port_vlan_id, true, false); + if (!f) + dev_info(&pf->pdev->dev, + "Could not allocate VF MAC addr\n"); + f = i40e_add_filter(vsi, brdcast, vf->port_vlan_id, + true, false); + if (!f) + dev_info(&pf->pdev->dev, + "Could not allocate VF broadcast filter\n"); } /* program mac filter */ ret = i40e_sync_vsi_filters(vsi); - if (ret) { + if (ret) dev_err(&pf->pdev->dev, "Unable to program ucast filters\n"); - goto error_alloc_vsi_res; - } - - /* accept bcast pkts. by default */ - ret = i40e_aq_set_vsi_broadcast(hw, vsi->seid, true, NULL); - if (ret) { - dev_err(&pf->pdev->dev, - "set vsi bcast failed for vf %d, vsi %d, aq_err %d\n", - vf->vf_id, vsi->idx, pf->hw.aq.asq_last_status); - ret = -EINVAL; - } error_alloc_vsi_res: return ret; } /** - * i40e_reset_vf - * @vf: pointer to the vf structure - * @flr: VFLR was issued or not - * - * reset the vf - **/ -int i40e_reset_vf(struct i40e_vf *vf, bool flr) -{ - int ret = -ENOENT; - struct i40e_pf *pf = vf->pf; - struct i40e_hw *hw = &pf->hw; - u32 reg, reg_idx, msix_vf; - bool rsd = false; - u16 pf_queue_id; - int i, j; - - /* warn the VF */ - wr32(hw, I40E_VFGEN_RSTAT1(vf->vf_id), I40E_VFR_INPROGRESS); - - clear_bit(I40E_VF_STAT_ACTIVE, &vf->vf_states); - - /* PF triggers VFR only when VF requests, in case of - * VFLR, HW triggers VFR - */ - if (!flr) { - /* reset vf using VPGEN_VFRTRIG reg */ - reg = I40E_VPGEN_VFRTRIG_VFSWR_MASK; - wr32(hw, I40E_VPGEN_VFRTRIG(vf->vf_id), reg); - i40e_flush(hw); - } - - /* poll VPGEN_VFRSTAT reg to make sure - * that reset is complete - */ - for (i = 0; i < 4; i++) { - /* vf reset requires driver to first reset the - * vf & than poll the status register to make sure - * that the requested op was completed - * successfully - */ - udelay(10); - reg = rd32(hw, I40E_VPGEN_VFRSTAT(vf->vf_id)); - if (reg & I40E_VPGEN_VFRSTAT_VFRD_MASK) { - rsd = true; - break; - } - } - - if (!rsd) - dev_err(&pf->pdev->dev, "VF reset check timeout %d\n", - vf->vf_id); - - /* fast disable qps */ - for (j = 0; j < pf->vsi[vf->lan_vsi_index]->num_queue_pairs; j++) { - ret = i40e_ctrl_vsi_tx_queue(vf, vf->lan_vsi_index, j, - I40E_QUEUE_CTRL_FASTDISABLE); - ret = i40e_ctrl_vsi_rx_queue(vf, vf->lan_vsi_index, j, - I40E_QUEUE_CTRL_FASTDISABLE); - } - - /* Queue enable/disable requires driver to - * first reset the vf & than poll the status register - * to make sure that the requested op was completed - * successfully - */ - udelay(10); - for (j = 0; j < pf->vsi[vf->lan_vsi_index]->num_queue_pairs; j++) { - ret = i40e_ctrl_vsi_tx_queue(vf, vf->lan_vsi_index, j, - I40E_QUEUE_CTRL_FASTDISABLECHECK); - if (ret) - dev_info(&pf->pdev->dev, - "Queue control check failed on Tx queue %d of VSI %d VF %d\n", - vf->lan_vsi_index, j, vf->vf_id); - ret = i40e_ctrl_vsi_rx_queue(vf, vf->lan_vsi_index, j, - I40E_QUEUE_CTRL_FASTDISABLECHECK); - if (ret) - dev_info(&pf->pdev->dev, - "Queue control check failed on Rx queue %d of VSI %d VF %d\n", - vf->lan_vsi_index, j, vf->vf_id); - } - - /* clear the irq settings */ - msix_vf = pf->hw.func_caps.num_msix_vectors_vf; - for (i = 0; i < msix_vf; i++) { - /* format is same for both registers */ - if (0 == i) - reg_idx = I40E_VPINT_LNKLST0(vf->vf_id); - else - reg_idx = I40E_VPINT_LNKLSTN(((msix_vf - 1) * - (vf->vf_id)) - + (i - 1)); - reg = (I40E_VPINT_LNKLSTN_FIRSTQ_TYPE_MASK | - I40E_VPINT_LNKLSTN_FIRSTQ_INDX_MASK); - wr32(hw, reg_idx, reg); - i40e_flush(hw); - } - /* disable interrupts so the VF starts in a known state */ - for (i = 0; i < msix_vf; i++) { - /* format is same for both registers */ - if (0 == i) - reg_idx = I40E_VFINT_DYN_CTL0(vf->vf_id); - else - reg_idx = I40E_VFINT_DYN_CTLN(((msix_vf - 1) * - (vf->vf_id)) - + (i - 1)); - wr32(hw, reg_idx, I40E_VFINT_DYN_CTLN_CLEARPBA_MASK); - i40e_flush(hw); - } - - /* set the defaults for the rqctl & tqctl registers */ - reg = (I40E_QINT_RQCTL_NEXTQ_INDX_MASK | I40E_QINT_RQCTL_ITR_INDX_MASK | - I40E_QINT_RQCTL_NEXTQ_TYPE_MASK); - for (j = 0; j < pf->vsi[vf->lan_vsi_index]->num_queue_pairs; j++) { - pf_queue_id = i40e_vc_get_pf_queue_id(vf, vf->lan_vsi_index, j); - wr32(hw, I40E_QINT_RQCTL(pf_queue_id), reg); - wr32(hw, I40E_QINT_TQCTL(pf_queue_id), reg); - } - - /* clear the reset bit in the VPGEN_VFRTRIG reg */ - reg = rd32(hw, I40E_VPGEN_VFRTRIG(vf->vf_id)); - reg &= ~I40E_VPGEN_VFRTRIG_VFSWR_MASK; - wr32(hw, I40E_VPGEN_VFRTRIG(vf->vf_id), reg); - /* tell the VF the reset is done */ - wr32(hw, I40E_VFGEN_RSTAT1(vf->vf_id), I40E_VFR_COMPLETED); - i40e_flush(hw); - - return ret; -} - -/** * i40e_enable_vf_mappings * @vf: pointer to the vf info * @@ -756,6 +499,9 @@ static void i40e_free_vf_res(struct i40e_vf *vf) { struct i40e_pf *pf = vf->pf; + struct i40e_hw *hw = &pf->hw; + u32 reg_idx, reg; + int i, msix_vf; /* free vsi & disconnect it from the parent uplink */ if (vf->lan_vsi_index) { @@ -763,6 +509,35 @@ vf->lan_vsi_index = 0; vf->lan_vsi_id = 0; } + msix_vf = pf->hw.func_caps.num_msix_vectors_vf; + + /* disable interrupts so the VF starts in a known state */ + for (i = 0; i < msix_vf; i++) { + /* format is same for both registers */ + if (0 == i) + reg_idx = I40E_VFINT_DYN_CTL0(vf->vf_id); + else + reg_idx = I40E_VFINT_DYN_CTLN(((msix_vf - 1) * + (vf->vf_id)) + + (i - 1)); + wr32(hw, reg_idx, I40E_VFINT_DYN_CTLN_CLEARPBA_MASK); + i40e_flush(hw); + } + + /* clear the irq settings */ + for (i = 0; i < msix_vf; i++) { + /* format is same for both registers */ + if (0 == i) + reg_idx = I40E_VPINT_LNKLST0(vf->vf_id); + else + reg_idx = I40E_VPINT_LNKLSTN(((msix_vf - 1) * + (vf->vf_id)) + + (i - 1)); + reg = (I40E_VPINT_LNKLSTN_FIRSTQ_TYPE_MASK | + I40E_VPINT_LNKLSTN_FIRSTQ_INDX_MASK); + wr32(hw, reg_idx, reg); + i40e_flush(hw); + } /* reset some of the state varibles keeping * track of the resources */ @@ -804,6 +579,111 @@ return ret; } +#define VF_DEVICE_STATUS 0xAA +#define VF_TRANS_PENDING_MASK 0x20 +/** + * i40e_quiesce_vf_pci + * @vf: pointer to the vf structure + * + * Wait for VF PCI transactions to be cleared after reset. Returns -EIO + * if the transactions never clear. + **/ +static int i40e_quiesce_vf_pci(struct i40e_vf *vf) +{ + struct i40e_pf *pf = vf->pf; + struct i40e_hw *hw = &pf->hw; + int vf_abs_id, i; + u32 reg; + + vf_abs_id = vf->vf_id + hw->func_caps.vf_base_id; + + wr32(hw, I40E_PF_PCI_CIAA, + VF_DEVICE_STATUS | (vf_abs_id << I40E_PF_PCI_CIAA_VF_NUM_SHIFT)); + for (i = 0; i < 100; i++) { + reg = rd32(hw, I40E_PF_PCI_CIAD); + if ((reg & VF_TRANS_PENDING_MASK) == 0) + return 0; + udelay(1); + } + return -EIO; +} + +/** + * i40e_reset_vf + * @vf: pointer to the vf structure + * @flr: VFLR was issued or not + * + * reset the vf + **/ +void i40e_reset_vf(struct i40e_vf *vf, bool flr) +{ + struct i40e_pf *pf = vf->pf; + struct i40e_hw *hw = &pf->hw; + bool rsd = false; + int i; + u32 reg; + + /* warn the VF */ + clear_bit(I40E_VF_STAT_ACTIVE, &vf->vf_states); + + /* In the case of a VFLR, the HW has already reset the VF and we + * just need to clean up, so don't hit the VFRTRIG register. + */ + if (!flr) { + /* reset vf using VPGEN_VFRTRIG reg */ + reg = rd32(hw, I40E_VPGEN_VFRTRIG(vf->vf_id)); + reg |= I40E_VPGEN_VFRTRIG_VFSWR_MASK; + wr32(hw, I40E_VPGEN_VFRTRIG(vf->vf_id), reg); + i40e_flush(hw); + } + + if (i40e_quiesce_vf_pci(vf)) + dev_err(&pf->pdev->dev, "VF %d PCI transactions stuck\n", + vf->vf_id); + + /* poll VPGEN_VFRSTAT reg to make sure + * that reset is complete + */ + for (i = 0; i < 100; i++) { + /* vf reset requires driver to first reset the + * vf & than poll the status register to make sure + * that the requested op was completed + * successfully + */ + udelay(10); + reg = rd32(hw, I40E_VPGEN_VFRSTAT(vf->vf_id)); + if (reg & I40E_VPGEN_VFRSTAT_VFRD_MASK) { + rsd = true; + break; + } + } + + if (!rsd) + dev_err(&pf->pdev->dev, "VF reset check timeout on VF %d\n", + vf->vf_id); + wr32(hw, I40E_VFGEN_RSTAT1(vf->vf_id), I40E_VFR_COMPLETED); + /* clear the reset bit in the VPGEN_VFRTRIG reg */ + reg = rd32(hw, I40E_VPGEN_VFRTRIG(vf->vf_id)); + reg &= ~I40E_VPGEN_VFRTRIG_VFSWR_MASK; + wr32(hw, I40E_VPGEN_VFRTRIG(vf->vf_id), reg); + + /* On initial reset, we won't have any queues */ + if (vf->lan_vsi_index == 0) + goto complete_reset; + + i40e_vsi_control_rings(pf->vsi[vf->lan_vsi_index], false); +complete_reset: + /* reallocate vf resources to reset the VSI state */ + i40e_free_vf_res(vf); + i40e_alloc_vf_res(vf); + i40e_enable_vf_mappings(vf); + set_bit(I40E_VF_STAT_ACTIVE, &vf->vf_states); + + /* tell the VF the reset is done */ + wr32(hw, I40E_VFGEN_RSTAT1(vf->vf_id), I40E_VFR_VFACTIVE); + i40e_flush(hw); +} + /** * i40e_vfs_are_assigned * @pf: pointer to the pf structure @@ -816,7 +696,7 @@ struct pci_dev *vfdev; /* loop through all the VFs to see if we own any that are assigned */ - vfdev = pci_get_device(PCI_VENDOR_ID_INTEL, I40E_VF_DEVICE_ID , NULL); + vfdev = pci_get_device(PCI_VENDOR_ID_INTEL, I40E_DEV_ID_VF , NULL); while (vfdev) { /* if we don't own it we don't care */ if (vfdev->is_virtfn && pci_physfn(vfdev) == pdev) { @@ -826,12 +706,82 @@ } vfdev = pci_get_device(PCI_VENDOR_ID_INTEL, - I40E_VF_DEVICE_ID, + I40E_DEV_ID_VF, vfdev); } return false; } +#ifdef CONFIG_PCI_IOV + +/** + * i40e_enable_pf_switch_lb + * @pf: pointer to the pf structure + * + * enable switch loop back or die - no point in a return value + **/ +static void i40e_enable_pf_switch_lb(struct i40e_pf *pf) +{ + struct i40e_vsi *vsi = pf->vsi[pf->lan_vsi]; + struct i40e_vsi_context ctxt; + int aq_ret; + + ctxt.seid = pf->main_vsi_seid; + ctxt.pf_num = pf->hw.pf_id; + ctxt.vf_num = 0; + aq_ret = i40e_aq_get_vsi_params(&pf->hw, &ctxt, NULL); + if (aq_ret) { + dev_info(&pf->pdev->dev, + "%s couldn't get pf vsi config, err %d, aq_err %d\n", + __func__, aq_ret, pf->hw.aq.asq_last_status); + return; + } + ctxt.flags = I40E_AQ_VSI_TYPE_PF; + ctxt.info.valid_sections = cpu_to_le16(I40E_AQ_VSI_PROP_SWITCH_VALID); + ctxt.info.switch_id |= cpu_to_le16(I40E_AQ_VSI_SW_ID_FLAG_ALLOW_LB); + + aq_ret = i40e_aq_update_vsi_params(&vsi->back->hw, &ctxt, NULL); + if (aq_ret) { + dev_info(&pf->pdev->dev, + "%s: update vsi switch failed, aq_err=%d\n", + __func__, vsi->back->hw.aq.asq_last_status); + } +} +#endif + +/** + * i40e_disable_pf_switch_lb + * @pf: pointer to the pf structure + * + * disable switch loop back or die - no point in a return value + **/ +static void i40e_disable_pf_switch_lb(struct i40e_pf *pf) +{ + struct i40e_vsi *vsi = pf->vsi[pf->lan_vsi]; + struct i40e_vsi_context ctxt; + int aq_ret; + + ctxt.seid = pf->main_vsi_seid; + ctxt.pf_num = pf->hw.pf_id; + ctxt.vf_num = 0; + aq_ret = i40e_aq_get_vsi_params(&pf->hw, &ctxt, NULL); + if (aq_ret) { + dev_info(&pf->pdev->dev, + "%s couldn't get pf vsi config, err %d, aq_err %d\n", + __func__, aq_ret, pf->hw.aq.asq_last_status); + return; + } + ctxt.flags = I40E_AQ_VSI_TYPE_PF; + ctxt.info.valid_sections = cpu_to_le16(I40E_AQ_VSI_PROP_SWITCH_VALID); + ctxt.info.switch_id &= ~cpu_to_le16(I40E_AQ_VSI_SW_ID_FLAG_ALLOW_LB); + + aq_ret = i40e_aq_update_vsi_params(&vsi->back->hw, &ctxt, NULL); + if (aq_ret) { + dev_info(&pf->pdev->dev, + "%s: update vsi switch failed, aq_err=%d\n", + __func__, vsi->back->hw.aq.asq_last_status); + } +} /** * i40e_free_vfs @@ -842,17 +792,20 @@ void i40e_free_vfs(struct i40e_pf *pf) { struct i40e_hw *hw = &pf->hw; - int i; + u32 reg_idx, bit_idx; + int i, tmp, vf_id; if (!pf->vf) return; /* Disable interrupt 0 so we don't try to handle the VFLR. */ - wr32(hw, I40E_PFINT_DYN_CTL0, 0); - i40e_flush(hw); + i40e_irq_dynamic_disable_icr0(pf); + mdelay(10); /* let any messages in transit get finished up */ /* free up vf resources */ - for (i = 0; i < pf->num_alloc_vfs; i++) { + tmp = pf->num_alloc_vfs; + pf->num_alloc_vfs = 0; + for (i = 0; i < tmp; i++) { if (test_bit(I40E_VF_STAT_INIT, &pf->vf[i].vf_states)) i40e_free_vf_res(&pf->vf[i]); /* disable qp mappings */ @@ -861,20 +814,25 @@ kfree(pf->vf); pf->vf = NULL; - pf->num_alloc_vfs = 0; - if (!i40e_vfs_are_assigned(pf)) + if (!i40e_vfs_are_assigned(pf)) { pci_disable_sriov(pf->pdev); - else + /* Acknowledge VFLR for all VFS. Without this, VFs will fail to + * work correctly when SR-IOV gets re-enabled. + */ + for (vf_id = 0; vf_id < tmp; vf_id++) { + reg_idx = (hw->func_caps.vf_base_id + vf_id) / 32; + bit_idx = (hw->func_caps.vf_base_id + vf_id) % 32; + wr32(hw, I40E_GLGEN_VFLRSTAT(reg_idx), (1 << bit_idx)); + } + i40e_disable_pf_switch_lb(pf); + } else { dev_warn(&pf->pdev->dev, "unable to disable SR-IOV because VFs are assigned.\n"); + } /* Re-enable interrupt 0. */ - wr32(hw, I40E_PFINT_DYN_CTL0, - I40E_PFINT_DYN_CTL0_INTENA_MASK | - I40E_PFINT_DYN_CTL0_CLEARPBA_MASK | - (I40E_ITR_NONE << I40E_PFINT_DYN_CTL0_ITR_INDX_SHIFT)); - i40e_flush(hw); + i40e_irq_dynamic_enable_icr0(pf); } #ifdef CONFIG_PCI_IOV @@ -885,21 +843,26 @@ * * allocate vf resources **/ -static int i40e_alloc_vfs(struct i40e_pf *pf, u16 num_alloc_vfs) +int i40e_alloc_vfs(struct i40e_pf *pf, u16 num_alloc_vfs) { struct i40e_vf *vfs; int i, ret = 0; - ret = pci_enable_sriov(pf->pdev, num_alloc_vfs); - if (ret) { - dev_err(&pf->pdev->dev, - "pci_enable_sriov failed with error %d!\n", ret); - pf->num_alloc_vfs = 0; - goto err_iov; - } + /* Disable interrupt 0 so we don't try to handle the VFLR. */ + i40e_irq_dynamic_disable_icr0(pf); + /* Check to see if we're just allocating resources for extant VFs */ + if (pci_num_vf(pf->pdev) != num_alloc_vfs) { + ret = pci_enable_sriov(pf->pdev, num_alloc_vfs); + if (ret) { + dev_err(&pf->pdev->dev, + "Failed to enable SR-IOV, error %d.\n", ret); + pf->num_alloc_vfs = 0; + goto err_iov; + } + } /* allocate memory */ - vfs = kzalloc(num_alloc_vfs * sizeof(struct i40e_vf), GFP_KERNEL); + vfs = kcalloc(num_alloc_vfs, sizeof(struct i40e_vf), GFP_KERNEL); if (!vfs) { ret = -ENOMEM; goto err_alloc; @@ -913,11 +876,8 @@ /* assign default capabilities */ set_bit(I40E_VIRTCHNL_VF_CAP_L2, &vfs[i].vf_caps); - - ret = i40e_alloc_vf_res(&vfs[i]); - i40e_reset_vf(&vfs[i], true); - if (ret) - break; + /* vf resources get allocated during reset */ + i40e_reset_vf(&vfs[i], false); /* enable vf vplan_qtable mappings */ i40e_enable_vf_mappings(&vfs[i]); @@ -925,10 +885,13 @@ pf->vf = vfs; pf->num_alloc_vfs = num_alloc_vfs; + i40e_enable_pf_switch_lb(pf); err_alloc: if (ret) i40e_free_vfs(pf); err_iov: + /* Re-enable interrupt 0. */ + i40e_irq_dynamic_enable_icr0(pf); return ret; } @@ -1009,6 +972,7 @@ { struct i40e_pf *pf = vf->pf; struct i40e_hw *hw = &pf->hw; + int true_vf_id = vf->vf_id + hw->func_caps.vf_base_id; i40e_status aq_ret; /* single place to detect unsuccessful return values */ @@ -1028,8 +992,8 @@ vf->num_valid_msgs++; } - aq_ret = i40e_aq_send_msg_to_vf(hw, vf->vf_id, v_opcode, v_retval, - msg, msglen, NULL); + aq_ret = i40e_aq_send_msg_to_vf(hw, true_vf_id, v_opcode, v_retval, + msg, msglen, NULL); if (aq_ret) { dev_err(&pf->pdev->dev, "Unable to send the message to VF %d aq_err %d\n", @@ -1144,12 +1108,10 @@ * unlike other virtchnl messages, pf driver * doesn't send the response back to the vf **/ -static int i40e_vc_reset_vf_msg(struct i40e_vf *vf) +static void i40e_vc_reset_vf_msg(struct i40e_vf *vf) { - if (!test_bit(I40E_VF_STAT_ACTIVE, &vf->vf_states)) - return -ENOENT; - - return i40e_reset_vf(vf, false); + if (test_bit(I40E_VF_STAT_ACTIVE, &vf->vf_states)) + i40e_reset_vf(vf, false); } /** @@ -1291,27 +1253,21 @@ /* lookout for the invalid queue index */ tempmap = map->rxq_map; - vsi_queue_id = find_first_bit(&tempmap, I40E_MAX_VSI_QP); - while (vsi_queue_id < I40E_MAX_VSI_QP) { + for_each_set_bit(vsi_queue_id, &tempmap, I40E_MAX_VSI_QP) { if (!i40e_vc_isvalid_queue_id(vf, vsi_id, vsi_queue_id)) { aq_ret = I40E_ERR_PARAM; goto error_param; } - vsi_queue_id = find_next_bit(&tempmap, I40E_MAX_VSI_QP, - vsi_queue_id + 1); } tempmap = map->txq_map; - vsi_queue_id = find_first_bit(&tempmap, I40E_MAX_VSI_QP); - while (vsi_queue_id < I40E_MAX_VSI_QP) { + for_each_set_bit(vsi_queue_id, &tempmap, I40E_MAX_VSI_QP) { if (!i40e_vc_isvalid_queue_id(vf, vsi_id, vsi_queue_id)) { aq_ret = I40E_ERR_PARAM; goto error_param; } - vsi_queue_id = find_next_bit(&tempmap, I40E_MAX_VSI_QP, - vsi_queue_id + 1); } i40e_config_irq_link_list(vf, vsi_id, map); @@ -1337,8 +1293,6 @@ struct i40e_pf *pf = vf->pf; u16 vsi_id = vqs->vsi_id; i40e_status aq_ret = 0; - unsigned long tempmap; - u16 queue_id; if (!test_bit(I40E_VF_STAT_ACTIVE, &vf->vf_states)) { aq_ret = I40E_ERR_PARAM; @@ -1354,66 +1308,8 @@ aq_ret = I40E_ERR_PARAM; goto error_param; } - - tempmap = vqs->rx_queues; - queue_id = find_first_bit(&tempmap, I40E_MAX_VSI_QP); - while (queue_id < I40E_MAX_VSI_QP) { - if (!i40e_vc_isvalid_queue_id(vf, vsi_id, queue_id)) { - aq_ret = I40E_ERR_PARAM; - goto error_param; - } - i40e_ctrl_vsi_rx_queue(vf, vsi_id, queue_id, - I40E_QUEUE_CTRL_ENABLE); - - queue_id = find_next_bit(&tempmap, I40E_MAX_VSI_QP, - queue_id + 1); - } - - tempmap = vqs->tx_queues; - queue_id = find_first_bit(&tempmap, I40E_MAX_VSI_QP); - while (queue_id < I40E_MAX_VSI_QP) { - if (!i40e_vc_isvalid_queue_id(vf, vsi_id, queue_id)) { - aq_ret = I40E_ERR_PARAM; - goto error_param; - } - i40e_ctrl_vsi_tx_queue(vf, vsi_id, queue_id, - I40E_QUEUE_CTRL_ENABLE); - - queue_id = find_next_bit(&tempmap, I40E_MAX_VSI_QP, - queue_id + 1); - } - - /* Poll the status register to make sure that the - * requested op was completed successfully - */ - udelay(10); - - tempmap = vqs->rx_queues; - queue_id = find_first_bit(&tempmap, I40E_MAX_VSI_QP); - while (queue_id < I40E_MAX_VSI_QP) { - if (i40e_ctrl_vsi_rx_queue(vf, vsi_id, queue_id, - I40E_QUEUE_CTRL_ENABLECHECK)) { - dev_err(&pf->pdev->dev, - "Queue control check failed on RX queue %d of VSI %d VF %d\n", - queue_id, vsi_id, vf->vf_id); - } - queue_id = find_next_bit(&tempmap, I40E_MAX_VSI_QP, - queue_id + 1); - } - - tempmap = vqs->tx_queues; - queue_id = find_first_bit(&tempmap, I40E_MAX_VSI_QP); - while (queue_id < I40E_MAX_VSI_QP) { - if (i40e_ctrl_vsi_tx_queue(vf, vsi_id, queue_id, - I40E_QUEUE_CTRL_ENABLECHECK)) { - dev_err(&pf->pdev->dev, - "Queue control check failed on TX queue %d of VSI %d VF %d\n", - queue_id, vsi_id, vf->vf_id); - } - queue_id = find_next_bit(&tempmap, I40E_MAX_VSI_QP, - queue_id + 1); - } - + if (i40e_vsi_control_rings(pf->vsi[vsi_id], true)) + aq_ret = I40E_ERR_TIMEOUT; error_param: /* send the response to the vf */ return i40e_vc_send_resp_to_vf(vf, I40E_VIRTCHNL_OP_ENABLE_QUEUES, @@ -1436,8 +1332,6 @@ struct i40e_pf *pf = vf->pf; u16 vsi_id = vqs->vsi_id; i40e_status aq_ret = 0; - unsigned long tempmap; - u16 queue_id; if (!test_bit(I40E_VF_STAT_ACTIVE, &vf->vf_states)) { aq_ret = I40E_ERR_PARAM; @@ -1453,65 +1347,8 @@ aq_ret = I40E_ERR_PARAM; goto error_param; } - - tempmap = vqs->rx_queues; - queue_id = find_first_bit(&tempmap, I40E_MAX_VSI_QP); - while (queue_id < I40E_MAX_VSI_QP) { - if (!i40e_vc_isvalid_queue_id(vf, vsi_id, queue_id)) { - aq_ret = I40E_ERR_PARAM; - goto error_param; - } - i40e_ctrl_vsi_rx_queue(vf, vsi_id, queue_id, - I40E_QUEUE_CTRL_DISABLE); - - queue_id = find_next_bit(&tempmap, I40E_MAX_VSI_QP, - queue_id + 1); - } - - tempmap = vqs->tx_queues; - queue_id = find_first_bit(&tempmap, I40E_MAX_VSI_QP); - while (queue_id < I40E_MAX_VSI_QP) { - if (!i40e_vc_isvalid_queue_id(vf, vsi_id, queue_id)) { - aq_ret = I40E_ERR_PARAM; - goto error_param; - } - i40e_ctrl_vsi_tx_queue(vf, vsi_id, queue_id, - I40E_QUEUE_CTRL_DISABLE); - - queue_id = find_next_bit(&tempmap, I40E_MAX_VSI_QP, - queue_id + 1); - } - - /* Poll the status register to make sure that the - * requested op was completed successfully - */ - udelay(10); - - tempmap = vqs->rx_queues; - queue_id = find_first_bit(&tempmap, I40E_MAX_VSI_QP); - while (queue_id < I40E_MAX_VSI_QP) { - if (i40e_ctrl_vsi_rx_queue(vf, vsi_id, queue_id, - I40E_QUEUE_CTRL_DISABLECHECK)) { - dev_err(&pf->pdev->dev, - "Queue control check failed on RX queue %d of VSI %d VF %d\n", - queue_id, vsi_id, vf->vf_id); - } - queue_id = find_next_bit(&tempmap, I40E_MAX_VSI_QP, - queue_id + 1); - } - - tempmap = vqs->tx_queues; - queue_id = find_first_bit(&tempmap, I40E_MAX_VSI_QP); - while (queue_id < I40E_MAX_VSI_QP) { - if (i40e_ctrl_vsi_tx_queue(vf, vsi_id, queue_id, - I40E_QUEUE_CTRL_DISABLECHECK)) { - dev_err(&pf->pdev->dev, - "Queue control check failed on TX queue %d of VSI %d VF %d\n", - queue_id, vsi_id, vf->vf_id); - } - queue_id = find_next_bit(&tempmap, I40E_MAX_VSI_QP, - queue_id + 1); - } + if (i40e_vsi_control_rings(pf->vsi[vsi_id], false)) + aq_ret = I40E_ERR_TIMEOUT; error_param: /* send the response to the vf */ @@ -1554,7 +1391,7 @@ goto error_param; } i40e_update_eth_stats(vsi); - memcpy(&stats, &vsi->eth_stats, sizeof(struct i40e_eth_stats)); + stats = vsi->eth_stats; error_param: /* send the response back to the vf */ @@ -1563,6 +1400,40 @@ } /** + * i40e_check_vf_permission + * @vf: pointer to the vf info + * @macaddr: pointer to the MAC Address being checked + * + * Check if the VF has permission to add or delete unicast MAC address + * filters and return error code -EPERM if not. Then check if the + * address filter requested is broadcast or zero and if so return + * an invalid MAC address error code. + **/ +static inline int i40e_check_vf_permission(struct i40e_vf *vf, u8 *macaddr) +{ + struct i40e_pf *pf = vf->pf; + int ret = 0; + + if (is_broadcast_ether_addr(macaddr) || + is_zero_ether_addr(macaddr)) { + dev_err(&pf->pdev->dev, "invalid VF MAC addr %pM\n", macaddr); + ret = I40E_ERR_INVALID_MAC_ADDR; + } else if (vf->pf_set_mac && !is_multicast_ether_addr(macaddr) && + !ether_addr_equal(macaddr, vf->default_lan_addr.addr)) { + /* If the host VMM administrator has set the VF MAC address + * administratively via the ndo_set_vf_mac command then deny + * permission to the VF to add or delete unicast MAC addresses. + * The VF may request to set the MAC address filter already + * assigned to it so do not return an error in that case. + */ + dev_err(&pf->pdev->dev, + "VF attempting to override administratively set MAC address\nPlease reload the VF driver to resume normal operation\n"); + ret = -EPERM; + } + return ret; +} + +/** * i40e_vc_add_mac_addr_msg * @vf: pointer to the vf info * @msg: pointer to the msg buffer @@ -1577,24 +1448,20 @@ struct i40e_pf *pf = vf->pf; struct i40e_vsi *vsi = NULL; u16 vsi_id = al->vsi_id; - i40e_status aq_ret = 0; + i40e_status ret = 0; int i; if (!test_bit(I40E_VF_STAT_ACTIVE, &vf->vf_states) || !test_bit(I40E_VIRTCHNL_VF_CAP_PRIVILEGE, &vf->vf_caps) || !i40e_vc_isvalid_vsi_id(vf, vsi_id)) { - aq_ret = I40E_ERR_PARAM; + ret = I40E_ERR_PARAM; goto error_param; } for (i = 0; i < al->num_elements; i++) { - if (is_broadcast_ether_addr(al->list[i].addr) || - is_zero_ether_addr(al->list[i].addr)) { - dev_err(&pf->pdev->dev, "invalid VF MAC addr %pMAC\n", - al->list[i].addr); - aq_ret = I40E_ERR_PARAM; + ret = i40e_check_vf_permission(vf, al->list[i].addr); + if (ret) goto error_param; - } } vsi = pf->vsi[vsi_id]; @@ -1603,7 +1470,7 @@ struct i40e_mac_filter *f; f = i40e_find_mac(vsi, al->list[i].addr, true, false); - if (f) { + if (!f) { if (i40e_is_vsi_in_vlan(vsi)) f = i40e_put_mac_in_vlan(vsi, al->list[i].addr, true, false); @@ -1615,7 +1482,7 @@ if (!f) { dev_err(&pf->pdev->dev, "Unable to add VF MAC filter\n"); - aq_ret = I40E_ERR_PARAM; + ret = I40E_ERR_PARAM; goto error_param; } } @@ -1627,7 +1494,7 @@ error_param: /* send the response to the vf */ return i40e_vc_send_resp_to_vf(vf, I40E_VIRTCHNL_OP_ADD_ETHER_ADDRESS, - aq_ret); + ret); } /** @@ -1645,15 +1512,25 @@ struct i40e_pf *pf = vf->pf; struct i40e_vsi *vsi = NULL; u16 vsi_id = al->vsi_id; - i40e_status aq_ret = 0; + i40e_status ret = 0; int i; if (!test_bit(I40E_VF_STAT_ACTIVE, &vf->vf_states) || !test_bit(I40E_VIRTCHNL_VF_CAP_PRIVILEGE, &vf->vf_caps) || !i40e_vc_isvalid_vsi_id(vf, vsi_id)) { - aq_ret = I40E_ERR_PARAM; + ret = I40E_ERR_PARAM; goto error_param; } + + for (i = 0; i < al->num_elements; i++) { + if (is_broadcast_ether_addr(al->list[i].addr) || + is_zero_ether_addr(al->list[i].addr)) { + dev_err(&pf->pdev->dev, "invalid VF MAC addr %pM\n", + al->list[i].addr); + ret = I40E_ERR_INVALID_MAC_ADDR; + goto error_param; + } + } vsi = pf->vsi[vsi_id]; /* delete addresses from the list */ @@ -1668,7 +1545,7 @@ error_param: /* send the response to the vf */ return i40e_vc_send_resp_to_vf(vf, I40E_VIRTCHNL_OP_DEL_ETHER_ADDRESS, - aq_ret); + ret); } /** @@ -1777,30 +1654,6 @@ } /** - * i40e_vc_fcoe_msg - * @vf: pointer to the vf info - * @msg: pointer to the msg buffer - * @msglen: msg length - * - * called from the vf for the fcoe msgs - **/ -static int i40e_vc_fcoe_msg(struct i40e_vf *vf, u8 *msg, u16 msglen) -{ - i40e_status aq_ret = 0; - - if (!test_bit(I40E_VF_STAT_ACTIVE, &vf->vf_states) || - !test_bit(I40E_VF_STAT_FCOEENA, &vf->vf_states)) { - aq_ret = I40E_ERR_PARAM; - goto error_param; - } - aq_ret = I40E_ERR_NOT_IMPLEMENTED; - -error_param: - /* send the response to the vf */ - return i40e_vc_send_resp_to_vf(vf, I40E_VIRTCHNL_OP_FCOE, aq_ret); -} - -/** * i40e_vc_validate_vf_msg * @vf: pointer to the vf info * @msg: pointer to the msg buffer @@ -1920,19 +1773,24 @@ int i40e_vc_process_vf_msg(struct i40e_pf *pf, u16 vf_id, u32 v_opcode, u32 v_retval, u8 *msg, u16 msglen) { - struct i40e_vf *vf = &(pf->vf[vf_id]); struct i40e_hw *hw = &pf->hw; + unsigned int local_vf_id = vf_id - hw->func_caps.vf_base_id; + struct i40e_vf *vf; int ret; pf->vf_aq_requests++; + if (local_vf_id >= pf->num_alloc_vfs) + return -EINVAL; + vf = &(pf->vf[local_vf_id]); /* perform basic checks on the msg */ ret = i40e_vc_validate_vf_msg(vf, v_opcode, v_retval, msg, msglen); if (ret) { - dev_err(&pf->pdev->dev, "invalid message from vf %d\n", vf_id); + dev_err(&pf->pdev->dev, "Invalid message from vf %d, opcode %d, len %d\n", + local_vf_id, v_opcode, msglen); return ret; } - wr32(hw, I40E_VFGEN_RSTAT1(vf_id), I40E_VFR_VFACTIVE); + switch (v_opcode) { case I40E_VIRTCHNL_OP_VERSION: ret = i40e_vc_get_version_msg(vf); @@ -1941,7 +1799,8 @@ ret = i40e_vc_get_vf_resources_msg(vf); break; case I40E_VIRTCHNL_OP_RESET_VF: - ret = i40e_vc_reset_vf_msg(vf); + i40e_vc_reset_vf_msg(vf); + ret = 0; break; case I40E_VIRTCHNL_OP_CONFIG_PROMISCUOUS_MODE: ret = i40e_vc_config_promiscuous_mode_msg(vf, msg, msglen); @@ -1973,13 +1832,10 @@ case I40E_VIRTCHNL_OP_GET_STATS: ret = i40e_vc_get_stats_msg(vf, msg, msglen); break; - case I40E_VIRTCHNL_OP_FCOE: - ret = i40e_vc_fcoe_msg(vf, msg, msglen); - break; case I40E_VIRTCHNL_OP_UNKNOWN: default: - dev_err(&pf->pdev->dev, - "Unsupported opcode %d from vf %d\n", v_opcode, vf_id); + dev_err(&pf->pdev->dev, "Unsupported opcode %d from vf %d\n", + v_opcode, local_vf_id); ret = i40e_vc_send_resp_to_vf(vf, v_opcode, I40E_ERR_NOT_IMPLEMENTED); break; @@ -2015,19 +1871,8 @@ /* clear the bit in GLGEN_VFLRSTAT */ wr32(hw, I40E_GLGEN_VFLRSTAT(reg_idx), (1 << bit_idx)); - if (i40e_reset_vf(vf, true)) - dev_err(&pf->pdev->dev, - "Unable to reset the VF %d\n", vf_id); - /* free up vf resources to destroy vsi state */ - i40e_free_vf_res(vf); - - /* allocate new vf resources with the default state */ - if (i40e_alloc_vf_res(vf)) - dev_err(&pf->pdev->dev, - "Unable to allocate VF resources %d\n", - vf_id); - - i40e_enable_vf_mappings(vf); + if (!test_bit(__I40E_DOWN, &pf->state)) + i40e_reset_vf(vf, true); } } @@ -2078,15 +1923,28 @@ void i40e_vc_notify_link_state(struct i40e_pf *pf) { struct i40e_virtchnl_pf_event pfe; + struct i40e_hw *hw = &pf->hw; + struct i40e_vf *vf = pf->vf; + struct i40e_link_status *ls = &pf->hw.phy.link_info; + int i; pfe.event = I40E_VIRTCHNL_EVENT_LINK_CHANGE; pfe.severity = I40E_PF_EVENT_SEVERITY_INFO; - pfe.event_data.link_event.link_status = - pf->hw.phy.link_info.link_info & I40E_AQ_LINK_UP; - pfe.event_data.link_event.link_speed = pf->hw.phy.link_info.link_speed; - - i40e_vc_vf_broadcast(pf, I40E_VIRTCHNL_OP_EVENT, I40E_SUCCESS, - (u8 *)&pfe, sizeof(struct i40e_virtchnl_pf_event)); + for (i = 0; i < pf->num_alloc_vfs; i++) { + if (vf->link_forced) { + pfe.event_data.link_event.link_status = vf->link_up; + pfe.event_data.link_event.link_speed = + (vf->link_up ? I40E_LINK_SPEED_40GB : 0); + } else { + pfe.event_data.link_event.link_status = + ls->link_info & I40E_AQ_LINK_UP; + pfe.event_data.link_event.link_speed = ls->link_speed; + } + i40e_aq_send_msg_to_vf(hw, vf->vf_id, I40E_VIRTCHNL_OP_EVENT, + 0, (u8 *)&pfe, sizeof(pfe), + NULL); + vf++; + } } /** @@ -2183,6 +2041,7 @@ goto error_param; } memcpy(vf->default_lan_addr.addr, mac, ETH_ALEN); + vf->pf_set_mac = true; dev_info(&pf->pdev->dev, "Reload the VF driver to make this change effective.\n"); ret = 0; @@ -2229,6 +2088,20 @@ goto error_pvid; } + if (vsi->info.pvid == 0 && i40e_is_vsi_in_vlan(vsi)) + dev_err(&pf->pdev->dev, + "VF %d has already configured VLAN filters and the administrator is requesting a port VLAN override.\nPlease unload and reload the VF driver for this change to take effect.\n", + vf_id); + + /* Check for condition where there was already a port VLAN ID + * filter set and now it is being deleted by setting it to zero. + * Before deleting all the old VLAN filters we must add new ones + * with -1 (I40E_VLAN_ANY) or otherwise we're left with all our + * MAC addresses deleted. + */ + if (!(vlan_id || qos) && vsi->info.pvid) + ret = i40e_vsi_add_vlan(vsi, I40E_VLAN_ANY); + if (vsi->info.pvid) { /* kill old VLAN */ ret = i40e_vsi_kill_vlan(vsi, (le16_to_cpu(vsi->info.pvid) & @@ -2243,7 +2116,7 @@ ret = i40e_vsi_add_pvid(vsi, vlan_id | (qos << I40E_VLAN_PRIORITY_SHIFT)); else - i40e_vlan_stripping_disable(vsi); + i40e_vsi_remove_pvid(vsi); if (vlan_id) { dev_info(&pf->pdev->dev, "Setting VLAN %d, QOS 0x%x on VF %d\n", @@ -2257,12 +2130,20 @@ vsi->back->hw.aq.asq_last_status); goto error_pvid; } + /* Kill non-vlan MAC filters - ignore error return since + * there might not be any non-vlan MAC filters. + */ + i40e_vsi_kill_vlan(vsi, I40E_VLAN_ANY); } if (ret) { dev_err(&pf->pdev->dev, "Unable to update VF vsi context\n"); goto error_pvid; } + /* The Port VLAN needs to be saved across resets the same as the + * default LAN MAC address. + */ + vf->port_vlan_id = le16_to_cpu(vsi->info.pvid); ret = 0; error_pvid: @@ -2294,7 +2175,6 @@ int vf_id, struct ifla_vf_info *ivi) { struct i40e_netdev_priv *np = netdev_priv(netdev); - struct i40e_mac_filter *f, *ftmp; struct i40e_vsi *vsi = np->vsi; struct i40e_pf *pf = vsi->back; struct i40e_vf *vf; @@ -2318,11 +2198,7 @@ ivi->vf = vf_id; - /* first entry of the list is the default ethernet address */ - list_for_each_entry_safe(f, ftmp, &vsi->mac_filter_list, list) { - memcpy(&ivi->mac, f->macaddr, I40E_ETH_LENGTH_OF_ADDRESS); - break; - } + memcpy(&ivi->mac, vf->default_lan_addr.addr, ETH_ALEN); ivi->tx_rate = 0; ivi->vlan = le16_to_cpu(vsi->info.pvid) & I40E_VLAN_MASK; @@ -2333,3 +2209,64 @@ error_param: return ret; } + +/** + * i40e_ndo_set_vf_link_state + * @netdev: network interface device structure + * @vf_id: vf identifier + * @link: required link state + * + * Set the link state of a specified VF, regardless of physical link state + **/ +int i40e_ndo_set_vf_link_state(struct net_device *netdev, int vf_id, int link) +{ + struct i40e_netdev_priv *np = netdev_priv(netdev); + struct i40e_pf *pf = np->vsi->back; + struct i40e_virtchnl_pf_event pfe; + struct i40e_hw *hw = &pf->hw; + struct i40e_vf *vf; + int ret = 0; + + /* validate the request */ + if (vf_id >= pf->num_alloc_vfs) { + dev_err(&pf->pdev->dev, "Invalid VF Identifier %d\n", vf_id); + ret = -EINVAL; + goto error_out; + } + + vf = &pf->vf[vf_id]; + + pfe.event = I40E_VIRTCHNL_EVENT_LINK_CHANGE; + pfe.severity = I40E_PF_EVENT_SEVERITY_INFO; + + switch (link) { + case IFLA_VF_LINK_STATE_AUTO: + vf->link_forced = false; + pfe.event_data.link_event.link_status = + pf->hw.phy.link_info.link_info & I40E_AQ_LINK_UP; + pfe.event_data.link_event.link_speed = + pf->hw.phy.link_info.link_speed; + break; + case IFLA_VF_LINK_STATE_ENABLE: + vf->link_forced = true; + vf->link_up = true; + pfe.event_data.link_event.link_status = true; + pfe.event_data.link_event.link_speed = I40E_LINK_SPEED_40GB; + break; + case IFLA_VF_LINK_STATE_DISABLE: + vf->link_forced = true; + vf->link_up = false; + pfe.event_data.link_event.link_status = false; + pfe.event_data.link_event.link_speed = 0; + break; + default: + ret = -EINVAL; + goto error_out; + } + /* Notify the VF of its new link state */ + i40e_aq_send_msg_to_vf(hw, vf->vf_id, I40E_VIRTCHNL_OP_EVENT, + 0, (u8 *)&pfe, sizeof(pfe), NULL); + +error_out: + return ret; +} --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h +++ linux-3.13.0/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h @@ -1,7 +1,7 @@ /******************************************************************************* * * Intel Ethernet Controller XL710 Family Linux Driver - * Copyright(c) 2013 Intel Corporation. + * Copyright(c) 2013 - 2014 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, @@ -12,9 +12,8 @@ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * - * You should have 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. + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . * * The full GNU General Public License is included in this distribution in * the file called "COPYING". @@ -82,6 +81,8 @@ struct i40e_virtchnl_ether_addr default_lan_addr; struct i40e_virtchnl_ether_addr default_fcoe_addr; + u16 port_vlan_id; + bool pf_set_mac; /* The VMM admin set the VF MAC address */ /* VSI indices - actual VSI pointers are maintained in the PF structure * When assigned, these will be non-zero, because VSI 0 is always @@ -97,14 +98,17 @@ unsigned long vf_caps; /* vf's adv. capabilities */ unsigned long vf_states; /* vf's runtime states */ + bool link_forced; + bool link_up; /* only valid if vf link is forced */ }; void i40e_free_vfs(struct i40e_pf *pf); int i40e_pci_sriov_configure(struct pci_dev *dev, int num_vfs); +int i40e_alloc_vfs(struct i40e_pf *pf, u16 num_alloc_vfs); int i40e_vc_process_vf_msg(struct i40e_pf *pf, u16 vf_id, u32 v_opcode, u32 v_retval, u8 *msg, u16 msglen); int i40e_vc_process_vflr_event(struct i40e_pf *pf); -int i40e_reset_vf(struct i40e_vf *vf, bool flr); +void i40e_reset_vf(struct i40e_vf *vf, bool flr); void i40e_vc_notify_vf_reset(struct i40e_vf *vf); /* vf configuration related iplink handlers */ @@ -114,6 +118,8 @@ int i40e_ndo_set_vf_bw(struct net_device *netdev, int vf_id, int tx_rate); int i40e_ndo_get_vf_config(struct net_device *netdev, int vf_id, struct ifla_vf_info *ivi); +int i40e_ndo_set_vf_link_state(struct net_device *netdev, int vf_id, int link); + void i40e_vc_notify_link_state(struct i40e_pf *pf); void i40e_vc_notify_reset(struct i40e_pf *pf); --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40evf/Makefile +++ linux-3.13.0/drivers/net/ethernet/intel/i40evf/Makefile @@ -0,0 +1,33 @@ +################################################################################ +# +# Intel Ethernet Controller XL710 Family Linux Virtual Function Driver +# Copyright(c) 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. +# +# The full GNU General Public License is included in this distribution in +# the file called "COPYING". +# +# Contact Information: +# e1000-devel Mailing List +# Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 +# +################################################################################ + +# +## Makefile for the Intel(R) 40GbE VF driver +# +# + +obj-$(CONFIG_I40EVF) += i40evf.o + +i40evf-objs := i40evf_main.o i40evf_ethtool.o i40evf_virtchnl.o \ + i40e_txrx.o i40e_common.o i40e_adminq.o + --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40evf/i40e_adminq.c +++ linux-3.13.0/drivers/net/ethernet/intel/i40evf/i40e_adminq.c @@ -0,0 +1,927 @@ +/******************************************************************************* + * + * Intel Ethernet Controller XL710 Family Linux Virtual Function Driver + * Copyright(c) 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. + * + * The full GNU General Public License is included in this distribution in + * the file called "COPYING". + * + * Contact Information: + * e1000-devel Mailing List + * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 + * + ******************************************************************************/ + +#include "i40e_status.h" +#include "i40e_type.h" +#include "i40e_register.h" +#include "i40e_adminq.h" +#include "i40e_prototype.h" + +/** + * i40e_adminq_init_regs - Initialize AdminQ registers + * @hw: pointer to the hardware structure + * + * This assumes the alloc_asq and alloc_arq functions have already been called + **/ +static void i40e_adminq_init_regs(struct i40e_hw *hw) +{ + /* set head and tail registers in our local struct */ + if (hw->mac.type == I40E_MAC_VF) { + hw->aq.asq.tail = I40E_VF_ATQT1; + hw->aq.asq.head = I40E_VF_ATQH1; + hw->aq.asq.len = I40E_VF_ATQLEN1; + hw->aq.arq.tail = I40E_VF_ARQT1; + hw->aq.arq.head = I40E_VF_ARQH1; + hw->aq.arq.len = I40E_VF_ARQLEN1; + } else { + hw->aq.asq.tail = I40E_PF_ATQT; + hw->aq.asq.head = I40E_PF_ATQH; + hw->aq.asq.len = I40E_PF_ATQLEN; + hw->aq.arq.tail = I40E_PF_ARQT; + hw->aq.arq.head = I40E_PF_ARQH; + hw->aq.arq.len = I40E_PF_ARQLEN; + } +} + +/** + * i40e_alloc_adminq_asq_ring - Allocate Admin Queue send rings + * @hw: pointer to the hardware structure + **/ +static i40e_status i40e_alloc_adminq_asq_ring(struct i40e_hw *hw) +{ + i40e_status ret_code; + + ret_code = i40e_allocate_dma_mem(hw, &hw->aq.asq.desc_buf, + i40e_mem_atq_ring, + (hw->aq.num_asq_entries * + sizeof(struct i40e_aq_desc)), + I40E_ADMINQ_DESC_ALIGNMENT); + if (ret_code) + return ret_code; + + ret_code = i40e_allocate_virt_mem(hw, &hw->aq.asq.cmd_buf, + (hw->aq.num_asq_entries * + sizeof(struct i40e_asq_cmd_details))); + if (ret_code) { + i40e_free_dma_mem(hw, &hw->aq.asq.desc_buf); + return ret_code; + } + + return ret_code; +} + +/** + * i40e_alloc_adminq_arq_ring - Allocate Admin Queue receive rings + * @hw: pointer to the hardware structure + **/ +static i40e_status i40e_alloc_adminq_arq_ring(struct i40e_hw *hw) +{ + i40e_status ret_code; + + ret_code = i40e_allocate_dma_mem(hw, &hw->aq.arq.desc_buf, + i40e_mem_arq_ring, + (hw->aq.num_arq_entries * + sizeof(struct i40e_aq_desc)), + I40E_ADMINQ_DESC_ALIGNMENT); + + return ret_code; +} + +/** + * i40e_free_adminq_asq - Free Admin Queue send rings + * @hw: pointer to the hardware structure + * + * This assumes the posted send buffers have already been cleaned + * and de-allocated + **/ +static void i40e_free_adminq_asq(struct i40e_hw *hw) +{ + i40e_free_dma_mem(hw, &hw->aq.asq.desc_buf); +} + +/** + * i40e_free_adminq_arq - Free Admin Queue receive rings + * @hw: pointer to the hardware structure + * + * This assumes the posted receive buffers have already been cleaned + * and de-allocated + **/ +static void i40e_free_adminq_arq(struct i40e_hw *hw) +{ + i40e_free_dma_mem(hw, &hw->aq.arq.desc_buf); +} + +/** + * i40e_alloc_arq_bufs - Allocate pre-posted buffers for the receive queue + * @hw: pointer to the hardware structure + **/ +static i40e_status i40e_alloc_arq_bufs(struct i40e_hw *hw) +{ + i40e_status ret_code; + struct i40e_aq_desc *desc; + struct i40e_dma_mem *bi; + int i; + + /* We'll be allocating the buffer info memory first, then we can + * allocate the mapped buffers for the event processing + */ + + /* buffer_info structures do not need alignment */ + ret_code = i40e_allocate_virt_mem(hw, &hw->aq.arq.dma_head, + (hw->aq.num_arq_entries * sizeof(struct i40e_dma_mem))); + if (ret_code) + goto alloc_arq_bufs; + hw->aq.arq.r.arq_bi = (struct i40e_dma_mem *)hw->aq.arq.dma_head.va; + + /* allocate the mapped buffers */ + for (i = 0; i < hw->aq.num_arq_entries; i++) { + bi = &hw->aq.arq.r.arq_bi[i]; + ret_code = i40e_allocate_dma_mem(hw, bi, + i40e_mem_arq_buf, + hw->aq.arq_buf_size, + I40E_ADMINQ_DESC_ALIGNMENT); + if (ret_code) + goto unwind_alloc_arq_bufs; + + /* now configure the descriptors for use */ + desc = I40E_ADMINQ_DESC(hw->aq.arq, i); + + desc->flags = cpu_to_le16(I40E_AQ_FLAG_BUF); + if (hw->aq.arq_buf_size > I40E_AQ_LARGE_BUF) + desc->flags |= cpu_to_le16(I40E_AQ_FLAG_LB); + desc->opcode = 0; + /* This is in accordance with Admin queue design, there is no + * register for buffer size configuration + */ + desc->datalen = cpu_to_le16((u16)bi->size); + desc->retval = 0; + desc->cookie_high = 0; + desc->cookie_low = 0; + desc->params.external.addr_high = + cpu_to_le32(upper_32_bits(bi->pa)); + desc->params.external.addr_low = + cpu_to_le32(lower_32_bits(bi->pa)); + desc->params.external.param0 = 0; + desc->params.external.param1 = 0; + } + +alloc_arq_bufs: + return ret_code; + +unwind_alloc_arq_bufs: + /* don't try to free the one that failed... */ + i--; + for (; i >= 0; i--) + i40e_free_dma_mem(hw, &hw->aq.arq.r.arq_bi[i]); + i40e_free_virt_mem(hw, &hw->aq.arq.dma_head); + + return ret_code; +} + +/** + * i40e_alloc_asq_bufs - Allocate empty buffer structs for the send queue + * @hw: pointer to the hardware structure + **/ +static i40e_status i40e_alloc_asq_bufs(struct i40e_hw *hw) +{ + i40e_status ret_code; + struct i40e_dma_mem *bi; + int i; + + /* No mapped memory needed yet, just the buffer info structures */ + ret_code = i40e_allocate_virt_mem(hw, &hw->aq.asq.dma_head, + (hw->aq.num_asq_entries * sizeof(struct i40e_dma_mem))); + if (ret_code) + goto alloc_asq_bufs; + hw->aq.asq.r.asq_bi = (struct i40e_dma_mem *)hw->aq.asq.dma_head.va; + + /* allocate the mapped buffers */ + for (i = 0; i < hw->aq.num_asq_entries; i++) { + bi = &hw->aq.asq.r.asq_bi[i]; + ret_code = i40e_allocate_dma_mem(hw, bi, + i40e_mem_asq_buf, + hw->aq.asq_buf_size, + I40E_ADMINQ_DESC_ALIGNMENT); + if (ret_code) + goto unwind_alloc_asq_bufs; + } +alloc_asq_bufs: + return ret_code; + +unwind_alloc_asq_bufs: + /* don't try to free the one that failed... */ + i--; + for (; i >= 0; i--) + i40e_free_dma_mem(hw, &hw->aq.asq.r.asq_bi[i]); + i40e_free_virt_mem(hw, &hw->aq.asq.dma_head); + + return ret_code; +} + +/** + * i40e_free_arq_bufs - Free receive queue buffer info elements + * @hw: pointer to the hardware structure + **/ +static void i40e_free_arq_bufs(struct i40e_hw *hw) +{ + int i; + + /* free descriptors */ + for (i = 0; i < hw->aq.num_arq_entries; i++) + i40e_free_dma_mem(hw, &hw->aq.arq.r.arq_bi[i]); + + /* free the descriptor memory */ + i40e_free_dma_mem(hw, &hw->aq.arq.desc_buf); + + /* free the dma header */ + i40e_free_virt_mem(hw, &hw->aq.arq.dma_head); +} + +/** + * i40e_free_asq_bufs - Free send queue buffer info elements + * @hw: pointer to the hardware structure + **/ +static void i40e_free_asq_bufs(struct i40e_hw *hw) +{ + int i; + + /* only unmap if the address is non-NULL */ + for (i = 0; i < hw->aq.num_asq_entries; i++) + if (hw->aq.asq.r.asq_bi[i].pa) + i40e_free_dma_mem(hw, &hw->aq.asq.r.asq_bi[i]); + + /* free the buffer info list */ + i40e_free_virt_mem(hw, &hw->aq.asq.cmd_buf); + + /* free the descriptor memory */ + i40e_free_dma_mem(hw, &hw->aq.asq.desc_buf); + + /* free the dma header */ + i40e_free_virt_mem(hw, &hw->aq.asq.dma_head); +} + +/** + * i40e_config_asq_regs - configure ASQ registers + * @hw: pointer to the hardware structure + * + * Configure base address and length registers for the transmit queue + **/ +static void i40e_config_asq_regs(struct i40e_hw *hw) +{ + if (hw->mac.type == I40E_MAC_VF) { + /* configure the transmit queue */ + wr32(hw, I40E_VF_ATQBAH1, + upper_32_bits(hw->aq.asq.desc_buf.pa)); + wr32(hw, I40E_VF_ATQBAL1, + lower_32_bits(hw->aq.asq.desc_buf.pa)); + wr32(hw, I40E_VF_ATQLEN1, (hw->aq.num_asq_entries | + I40E_VF_ATQLEN1_ATQENABLE_MASK)); + } else { + /* configure the transmit queue */ + wr32(hw, I40E_PF_ATQBAH, + upper_32_bits(hw->aq.asq.desc_buf.pa)); + wr32(hw, I40E_PF_ATQBAL, + lower_32_bits(hw->aq.asq.desc_buf.pa)); + wr32(hw, I40E_PF_ATQLEN, (hw->aq.num_asq_entries | + I40E_PF_ATQLEN_ATQENABLE_MASK)); + } +} + +/** + * i40e_config_arq_regs - ARQ register configuration + * @hw: pointer to the hardware structure + * + * Configure base address and length registers for the receive (event queue) + **/ +static void i40e_config_arq_regs(struct i40e_hw *hw) +{ + if (hw->mac.type == I40E_MAC_VF) { + /* configure the receive queue */ + wr32(hw, I40E_VF_ARQBAH1, + upper_32_bits(hw->aq.arq.desc_buf.pa)); + wr32(hw, I40E_VF_ARQBAL1, + lower_32_bits(hw->aq.arq.desc_buf.pa)); + wr32(hw, I40E_VF_ARQLEN1, (hw->aq.num_arq_entries | + I40E_VF_ARQLEN1_ARQENABLE_MASK)); + } else { + /* configure the receive queue */ + wr32(hw, I40E_PF_ARQBAH, + upper_32_bits(hw->aq.arq.desc_buf.pa)); + wr32(hw, I40E_PF_ARQBAL, + lower_32_bits(hw->aq.arq.desc_buf.pa)); + wr32(hw, I40E_PF_ARQLEN, (hw->aq.num_arq_entries | + I40E_PF_ARQLEN_ARQENABLE_MASK)); + } + + /* Update tail in the HW to post pre-allocated buffers */ + wr32(hw, hw->aq.arq.tail, hw->aq.num_arq_entries - 1); +} + +/** + * i40e_init_asq - main initialization routine for ASQ + * @hw: pointer to the hardware structure + * + * This is the main initialization routine for the Admin Send Queue + * Prior to calling this function, drivers *MUST* set the following fields + * in the hw->aq structure: + * - hw->aq.num_asq_entries + * - hw->aq.arq_buf_size + * + * Do *NOT* hold the lock when calling this as the memory allocation routines + * called are not going to be atomic context safe + **/ +static i40e_status i40e_init_asq(struct i40e_hw *hw) +{ + i40e_status ret_code = 0; + + if (hw->aq.asq.count > 0) { + /* queue already initialized */ + ret_code = I40E_ERR_NOT_READY; + goto init_adminq_exit; + } + + /* verify input for valid configuration */ + if ((hw->aq.num_asq_entries == 0) || + (hw->aq.asq_buf_size == 0)) { + ret_code = I40E_ERR_CONFIG; + goto init_adminq_exit; + } + + hw->aq.asq.next_to_use = 0; + hw->aq.asq.next_to_clean = 0; + hw->aq.asq.count = hw->aq.num_asq_entries; + + /* allocate the ring memory */ + ret_code = i40e_alloc_adminq_asq_ring(hw); + if (ret_code) + goto init_adminq_exit; + + /* allocate buffers in the rings */ + ret_code = i40e_alloc_asq_bufs(hw); + if (ret_code) + goto init_adminq_free_rings; + + /* initialize base registers */ + i40e_config_asq_regs(hw); + + /* success! */ + goto init_adminq_exit; + +init_adminq_free_rings: + i40e_free_adminq_asq(hw); + +init_adminq_exit: + return ret_code; +} + +/** + * i40e_init_arq - initialize ARQ + * @hw: pointer to the hardware structure + * + * The main initialization routine for the Admin Receive (Event) Queue. + * Prior to calling this function, drivers *MUST* set the following fields + * in the hw->aq structure: + * - hw->aq.num_asq_entries + * - hw->aq.arq_buf_size + * + * Do *NOT* hold the lock when calling this as the memory allocation routines + * called are not going to be atomic context safe + **/ +static i40e_status i40e_init_arq(struct i40e_hw *hw) +{ + i40e_status ret_code = 0; + + if (hw->aq.arq.count > 0) { + /* queue already initialized */ + ret_code = I40E_ERR_NOT_READY; + goto init_adminq_exit; + } + + /* verify input for valid configuration */ + if ((hw->aq.num_arq_entries == 0) || + (hw->aq.arq_buf_size == 0)) { + ret_code = I40E_ERR_CONFIG; + goto init_adminq_exit; + } + + hw->aq.arq.next_to_use = 0; + hw->aq.arq.next_to_clean = 0; + hw->aq.arq.count = hw->aq.num_arq_entries; + + /* allocate the ring memory */ + ret_code = i40e_alloc_adminq_arq_ring(hw); + if (ret_code) + goto init_adminq_exit; + + /* allocate buffers in the rings */ + ret_code = i40e_alloc_arq_bufs(hw); + if (ret_code) + goto init_adminq_free_rings; + + /* initialize base registers */ + i40e_config_arq_regs(hw); + + /* success! */ + goto init_adminq_exit; + +init_adminq_free_rings: + i40e_free_adminq_arq(hw); + +init_adminq_exit: + return ret_code; +} + +/** + * i40e_shutdown_asq - shutdown the ASQ + * @hw: pointer to the hardware structure + * + * The main shutdown routine for the Admin Send Queue + **/ +static i40e_status i40e_shutdown_asq(struct i40e_hw *hw) +{ + i40e_status ret_code = 0; + + if (hw->aq.asq.count == 0) + return I40E_ERR_NOT_READY; + + /* Stop firmware AdminQ processing */ + wr32(hw, hw->aq.asq.head, 0); + wr32(hw, hw->aq.asq.tail, 0); + wr32(hw, hw->aq.asq.len, 0); + + /* make sure lock is available */ + mutex_lock(&hw->aq.asq_mutex); + + hw->aq.asq.count = 0; /* to indicate uninitialized queue */ + + /* free ring buffers */ + i40e_free_asq_bufs(hw); + + mutex_unlock(&hw->aq.asq_mutex); + + return ret_code; +} + +/** + * i40e_shutdown_arq - shutdown ARQ + * @hw: pointer to the hardware structure + * + * The main shutdown routine for the Admin Receive Queue + **/ +static i40e_status i40e_shutdown_arq(struct i40e_hw *hw) +{ + i40e_status ret_code = 0; + + if (hw->aq.arq.count == 0) + return I40E_ERR_NOT_READY; + + /* Stop firmware AdminQ processing */ + wr32(hw, hw->aq.arq.head, 0); + wr32(hw, hw->aq.arq.tail, 0); + wr32(hw, hw->aq.arq.len, 0); + + /* make sure lock is available */ + mutex_lock(&hw->aq.arq_mutex); + + hw->aq.arq.count = 0; /* to indicate uninitialized queue */ + + /* free ring buffers */ + i40e_free_arq_bufs(hw); + + mutex_unlock(&hw->aq.arq_mutex); + + return ret_code; +} + +/** + * i40evf_init_adminq - main initialization routine for Admin Queue + * @hw: pointer to the hardware structure + * + * Prior to calling this function, drivers *MUST* set the following fields + * in the hw->aq structure: + * - hw->aq.num_asq_entries + * - hw->aq.num_arq_entries + * - hw->aq.arq_buf_size + * - hw->aq.asq_buf_size + **/ +i40e_status i40evf_init_adminq(struct i40e_hw *hw) +{ + i40e_status ret_code; + + /* verify input for valid configuration */ + if ((hw->aq.num_arq_entries == 0) || + (hw->aq.num_asq_entries == 0) || + (hw->aq.arq_buf_size == 0) || + (hw->aq.asq_buf_size == 0)) { + ret_code = I40E_ERR_CONFIG; + goto init_adminq_exit; + } + + /* initialize locks */ + mutex_init(&hw->aq.asq_mutex); + mutex_init(&hw->aq.arq_mutex); + + /* Set up register offsets */ + i40e_adminq_init_regs(hw); + + /* allocate the ASQ */ + ret_code = i40e_init_asq(hw); + if (ret_code) + goto init_adminq_destroy_locks; + + /* allocate the ARQ */ + ret_code = i40e_init_arq(hw); + if (ret_code) + goto init_adminq_free_asq; + + /* success! */ + goto init_adminq_exit; + +init_adminq_free_asq: + i40e_shutdown_asq(hw); +init_adminq_destroy_locks: + +init_adminq_exit: + return ret_code; +} + +/** + * i40evf_shutdown_adminq - shutdown routine for the Admin Queue + * @hw: pointer to the hardware structure + **/ +i40e_status i40evf_shutdown_adminq(struct i40e_hw *hw) +{ + i40e_status ret_code = 0; + + if (i40evf_check_asq_alive(hw)) + i40evf_aq_queue_shutdown(hw, true); + + i40e_shutdown_asq(hw); + i40e_shutdown_arq(hw); + + /* destroy the locks */ + + return ret_code; +} + +/** + * i40e_clean_asq - cleans Admin send queue + * @hw: pointer to the hardware structure + * + * returns the number of free desc + **/ +static u16 i40e_clean_asq(struct i40e_hw *hw) +{ + struct i40e_adminq_ring *asq = &(hw->aq.asq); + struct i40e_asq_cmd_details *details; + u16 ntc = asq->next_to_clean; + struct i40e_aq_desc desc_cb; + struct i40e_aq_desc *desc; + + desc = I40E_ADMINQ_DESC(*asq, ntc); + details = I40E_ADMINQ_DETAILS(*asq, ntc); + while (rd32(hw, hw->aq.asq.head) != ntc) { + if (details->callback) { + I40E_ADMINQ_CALLBACK cb_func = + (I40E_ADMINQ_CALLBACK)details->callback; + desc_cb = *desc; + cb_func(hw, &desc_cb); + } + memset((void *)desc, 0, sizeof(struct i40e_aq_desc)); + memset((void *)details, 0, + sizeof(struct i40e_asq_cmd_details)); + ntc++; + if (ntc == asq->count) + ntc = 0; + desc = I40E_ADMINQ_DESC(*asq, ntc); + details = I40E_ADMINQ_DETAILS(*asq, ntc); + } + + asq->next_to_clean = ntc; + + return I40E_DESC_UNUSED(asq); +} + +/** + * i40evf_asq_done - check if FW has processed the Admin Send Queue + * @hw: pointer to the hw struct + * + * Returns true if the firmware has processed all descriptors on the + * admin send queue. Returns false if there are still requests pending. + **/ +bool i40evf_asq_done(struct i40e_hw *hw) +{ + /* AQ designers suggest use of head for better + * timing reliability than DD bit + */ + return rd32(hw, hw->aq.asq.head) == hw->aq.asq.next_to_use; + +} + +/** + * i40evf_asq_send_command - send command to Admin Queue + * @hw: pointer to the hw struct + * @desc: prefilled descriptor describing the command (non DMA mem) + * @buff: buffer to use for indirect commands + * @buff_size: size of buffer for indirect commands + * @cmd_details: pointer to command details structure + * + * This is the main send command driver routine for the Admin Queue send + * queue. It runs the queue, cleans the queue, etc + **/ +i40e_status i40evf_asq_send_command(struct i40e_hw *hw, + struct i40e_aq_desc *desc, + void *buff, /* can be NULL */ + u16 buff_size, + struct i40e_asq_cmd_details *cmd_details) +{ + i40e_status status = 0; + struct i40e_dma_mem *dma_buff = NULL; + struct i40e_asq_cmd_details *details; + struct i40e_aq_desc *desc_on_ring; + bool cmd_completed = false; + u16 retval = 0; + + if (hw->aq.asq.count == 0) { + i40e_debug(hw, I40E_DEBUG_AQ_MESSAGE, + "AQTX: Admin queue not initialized.\n"); + status = I40E_ERR_QUEUE_EMPTY; + goto asq_send_command_exit; + } + + details = I40E_ADMINQ_DETAILS(hw->aq.asq, hw->aq.asq.next_to_use); + if (cmd_details) { + *details = *cmd_details; + + /* If the cmd_details are defined copy the cookie. The + * cpu_to_le32 is not needed here because the data is ignored + * by the FW, only used by the driver + */ + if (details->cookie) { + desc->cookie_high = + cpu_to_le32(upper_32_bits(details->cookie)); + desc->cookie_low = + cpu_to_le32(lower_32_bits(details->cookie)); + } + } else { + memset(details, 0, sizeof(struct i40e_asq_cmd_details)); + } + + /* clear requested flags and then set additional flags if defined */ + desc->flags &= ~cpu_to_le16(details->flags_dis); + desc->flags |= cpu_to_le16(details->flags_ena); + + mutex_lock(&hw->aq.asq_mutex); + + if (buff_size > hw->aq.asq_buf_size) { + i40e_debug(hw, + I40E_DEBUG_AQ_MESSAGE, + "AQTX: Invalid buffer size: %d.\n", + buff_size); + status = I40E_ERR_INVALID_SIZE; + goto asq_send_command_error; + } + + if (details->postpone && !details->async) { + i40e_debug(hw, + I40E_DEBUG_AQ_MESSAGE, + "AQTX: Async flag not set along with postpone flag"); + status = I40E_ERR_PARAM; + goto asq_send_command_error; + } + + /* call clean and check queue available function to reclaim the + * descriptors that were processed by FW, the function returns the + * number of desc available + */ + /* the clean function called here could be called in a separate thread + * in case of asynchronous completions + */ + if (i40e_clean_asq(hw) == 0) { + i40e_debug(hw, + I40E_DEBUG_AQ_MESSAGE, + "AQTX: Error queue is full.\n"); + status = I40E_ERR_ADMIN_QUEUE_FULL; + goto asq_send_command_error; + } + + /* initialize the temp desc pointer with the right desc */ + desc_on_ring = I40E_ADMINQ_DESC(hw->aq.asq, hw->aq.asq.next_to_use); + + /* if the desc is available copy the temp desc to the right place */ + *desc_on_ring = *desc; + + /* if buff is not NULL assume indirect command */ + if (buff != NULL) { + dma_buff = &(hw->aq.asq.r.asq_bi[hw->aq.asq.next_to_use]); + /* copy the user buff into the respective DMA buff */ + memcpy(dma_buff->va, buff, buff_size); + desc_on_ring->datalen = cpu_to_le16(buff_size); + + /* Update the address values in the desc with the pa value + * for respective buffer + */ + desc_on_ring->params.external.addr_high = + cpu_to_le32(upper_32_bits(dma_buff->pa)); + desc_on_ring->params.external.addr_low = + cpu_to_le32(lower_32_bits(dma_buff->pa)); + } + + /* bump the tail */ + i40evf_debug_aq(hw, I40E_DEBUG_AQ_COMMAND, (void *)desc_on_ring, buff); + (hw->aq.asq.next_to_use)++; + if (hw->aq.asq.next_to_use == hw->aq.asq.count) + hw->aq.asq.next_to_use = 0; + if (!details->postpone) + wr32(hw, hw->aq.asq.tail, hw->aq.asq.next_to_use); + + /* if cmd_details are not defined or async flag is not set, + * we need to wait for desc write back + */ + if (!details->async && !details->postpone) { + u32 total_delay = 0; + u32 delay_len = 10; + + do { + /* AQ designers suggest use of head for better + * timing reliability than DD bit + */ + if (i40evf_asq_done(hw)) + break; + /* ugh! delay while spin_lock */ + udelay(delay_len); + total_delay += delay_len; + } while (total_delay < I40E_ASQ_CMD_TIMEOUT); + } + + /* if ready, copy the desc back to temp */ + if (i40evf_asq_done(hw)) { + *desc = *desc_on_ring; + if (buff != NULL) + memcpy(buff, dma_buff->va, buff_size); + retval = le16_to_cpu(desc->retval); + if (retval != 0) { + i40e_debug(hw, + I40E_DEBUG_AQ_MESSAGE, + "AQTX: Command completed with error 0x%X.\n", + retval); + /* strip off FW internal code */ + retval &= 0xff; + } + cmd_completed = true; + if ((enum i40e_admin_queue_err)retval == I40E_AQ_RC_OK) + status = 0; + else + status = I40E_ERR_ADMIN_QUEUE_ERROR; + hw->aq.asq_last_status = (enum i40e_admin_queue_err)retval; + } + + /* update the error if time out occurred */ + if ((!cmd_completed) && + (!details->async && !details->postpone)) { + i40e_debug(hw, + I40E_DEBUG_AQ_MESSAGE, + "AQTX: Writeback timeout.\n"); + status = I40E_ERR_ADMIN_QUEUE_TIMEOUT; + } + +asq_send_command_error: + mutex_unlock(&hw->aq.asq_mutex); +asq_send_command_exit: + return status; +} + +/** + * i40evf_fill_default_direct_cmd_desc - AQ descriptor helper function + * @desc: pointer to the temp descriptor (non DMA mem) + * @opcode: the opcode can be used to decide which flags to turn off or on + * + * Fill the desc with default values + **/ +void i40evf_fill_default_direct_cmd_desc(struct i40e_aq_desc *desc, + u16 opcode) +{ + /* zero out the desc */ + memset((void *)desc, 0, sizeof(struct i40e_aq_desc)); + desc->opcode = cpu_to_le16(opcode); + desc->flags = cpu_to_le16(I40E_AQ_FLAG_SI); +} + +/** + * i40evf_clean_arq_element + * @hw: pointer to the hw struct + * @e: event info from the receive descriptor, includes any buffers + * @pending: number of events that could be left to process + * + * This function cleans one Admin Receive Queue element and returns + * the contents through e. It can also return how many events are + * left to process through 'pending' + **/ +i40e_status i40evf_clean_arq_element(struct i40e_hw *hw, + struct i40e_arq_event_info *e, + u16 *pending) +{ + i40e_status ret_code = 0; + u16 ntc = hw->aq.arq.next_to_clean; + struct i40e_aq_desc *desc; + struct i40e_dma_mem *bi; + u16 desc_idx; + u16 datalen; + u16 flags; + u16 ntu; + + /* take the lock before we start messing with the ring */ + mutex_lock(&hw->aq.arq_mutex); + + /* set next_to_use to head */ + ntu = (rd32(hw, hw->aq.arq.head) & I40E_PF_ARQH_ARQH_MASK); + if (ntu == ntc) { + /* nothing to do - shouldn't need to update ring's values */ + i40e_debug(hw, + I40E_DEBUG_AQ_MESSAGE, + "AQRX: Queue is empty.\n"); + ret_code = I40E_ERR_ADMIN_QUEUE_NO_WORK; + goto clean_arq_element_out; + } + + /* now clean the next descriptor */ + desc = I40E_ADMINQ_DESC(hw->aq.arq, ntc); + desc_idx = ntc; + i40evf_debug_aq(hw, + I40E_DEBUG_AQ_COMMAND, + (void *)desc, + hw->aq.arq.r.arq_bi[desc_idx].va); + + flags = le16_to_cpu(desc->flags); + if (flags & I40E_AQ_FLAG_ERR) { + ret_code = I40E_ERR_ADMIN_QUEUE_ERROR; + hw->aq.arq_last_status = + (enum i40e_admin_queue_err)le16_to_cpu(desc->retval); + i40e_debug(hw, + I40E_DEBUG_AQ_MESSAGE, + "AQRX: Event received with error 0x%X.\n", + hw->aq.arq_last_status); + } else { + e->desc = *desc; + datalen = le16_to_cpu(desc->datalen); + e->msg_size = min(datalen, e->msg_size); + if (e->msg_buf != NULL && (e->msg_size != 0)) + memcpy(e->msg_buf, hw->aq.arq.r.arq_bi[desc_idx].va, + e->msg_size); + } + + /* Restore the original datalen and buffer address in the desc, + * FW updates datalen to indicate the event message + * size + */ + bi = &hw->aq.arq.r.arq_bi[ntc]; + memset((void *)desc, 0, sizeof(struct i40e_aq_desc)); + + desc->flags = cpu_to_le16(I40E_AQ_FLAG_BUF); + if (hw->aq.arq_buf_size > I40E_AQ_LARGE_BUF) + desc->flags |= cpu_to_le16(I40E_AQ_FLAG_LB); + desc->datalen = cpu_to_le16((u16)bi->size); + desc->params.external.addr_high = cpu_to_le32(upper_32_bits(bi->pa)); + desc->params.external.addr_low = cpu_to_le32(lower_32_bits(bi->pa)); + + /* set tail = the last cleaned desc index. */ + wr32(hw, hw->aq.arq.tail, ntc); + /* ntc is updated to tail + 1 */ + ntc++; + if (ntc == hw->aq.num_arq_entries) + ntc = 0; + hw->aq.arq.next_to_clean = ntc; + hw->aq.arq.next_to_use = ntu; + +clean_arq_element_out: + /* Set pending if needed, unlock and return */ + if (pending != NULL) + *pending = (ntc > ntu ? hw->aq.arq.count : 0) + (ntu - ntc); + mutex_unlock(&hw->aq.arq_mutex); + + return ret_code; +} + +void i40evf_resume_aq(struct i40e_hw *hw) +{ + /* Registers are reset after PF reset */ + hw->aq.asq.next_to_use = 0; + hw->aq.asq.next_to_clean = 0; + + i40e_config_asq_regs(hw); + + hw->aq.arq.next_to_use = 0; + hw->aq.arq.next_to_clean = 0; + + i40e_config_arq_regs(hw); +} --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40evf/i40e_adminq.h +++ linux-3.13.0/drivers/net/ethernet/intel/i40evf/i40e_adminq.h @@ -0,0 +1,106 @@ +/******************************************************************************* + * + * Intel Ethernet Controller XL710 Family Linux Virtual Function Driver + * Copyright(c) 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. + * + * The full GNU General Public License is included in this distribution in + * the file called "COPYING". + * + * Contact Information: + * e1000-devel Mailing List + * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 + * + ******************************************************************************/ + +#ifndef _I40E_ADMINQ_H_ +#define _I40E_ADMINQ_H_ + +#include "i40e_osdep.h" +#include "i40e_adminq_cmd.h" + +#define I40E_ADMINQ_DESC(R, i) \ + (&(((struct i40e_aq_desc *)((R).desc_buf.va))[i])) + +#define I40E_ADMINQ_DESC_ALIGNMENT 4096 + +struct i40e_adminq_ring { + struct i40e_virt_mem dma_head; /* space for dma structures */ + struct i40e_dma_mem desc_buf; /* descriptor ring memory */ + struct i40e_virt_mem cmd_buf; /* command buffer memory */ + + union { + struct i40e_dma_mem *asq_bi; + struct i40e_dma_mem *arq_bi; + } r; + + u16 count; /* Number of descriptors */ + u16 rx_buf_len; /* Admin Receive Queue buffer length */ + + /* used for interrupt processing */ + u16 next_to_use; + u16 next_to_clean; + + /* used for queue tracking */ + u32 head; + u32 tail; + u32 len; +}; + +/* ASQ transaction details */ +struct i40e_asq_cmd_details { + void *callback; /* cast from type I40E_ADMINQ_CALLBACK */ + u64 cookie; + u16 flags_ena; + u16 flags_dis; + bool async; + bool postpone; +}; + +#define I40E_ADMINQ_DETAILS(R, i) \ + (&(((struct i40e_asq_cmd_details *)((R).cmd_buf.va))[i])) + +/* ARQ event information */ +struct i40e_arq_event_info { + struct i40e_aq_desc desc; + u16 msg_size; + u8 *msg_buf; +}; + +/* Admin Queue information */ +struct i40e_adminq_info { + struct i40e_adminq_ring arq; /* receive queue */ + struct i40e_adminq_ring asq; /* send queue */ + u16 num_arq_entries; /* receive queue depth */ + u16 num_asq_entries; /* send queue depth */ + u16 arq_buf_size; /* receive queue buffer size */ + u16 asq_buf_size; /* send queue buffer size */ + u16 fw_maj_ver; /* firmware major version */ + u16 fw_min_ver; /* firmware minor version */ + u16 api_maj_ver; /* api major version */ + u16 api_min_ver; /* api minor version */ + + struct mutex asq_mutex; /* Send queue lock */ + struct mutex arq_mutex; /* Receive queue lock */ + + /* last status values on send and receive queues */ + enum i40e_admin_queue_err asq_last_status; + enum i40e_admin_queue_err arq_last_status; +}; + +/* general information */ +#define I40E_AQ_LARGE_BUF 512 +#define I40E_ASQ_CMD_TIMEOUT 100000 /* usecs */ + +void i40evf_fill_default_direct_cmd_desc(struct i40e_aq_desc *desc, + u16 opcode); + +#endif /* _I40E_ADMINQ_H_ */ --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40evf/i40e_adminq_cmd.h +++ linux-3.13.0/drivers/net/ethernet/intel/i40evf/i40e_adminq_cmd.h @@ -0,0 +1,2153 @@ +/******************************************************************************* + * + * Intel Ethernet Controller XL710 Family Linux Virtual Function Driver + * Copyright(c) 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. + * + * The full GNU General Public License is included in this distribution in + * the file called "COPYING". + * + * Contact Information: + * e1000-devel Mailing List + * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 + * + ******************************************************************************/ + +#ifndef _I40E_ADMINQ_CMD_H_ +#define _I40E_ADMINQ_CMD_H_ + +/* This header file defines the i40e Admin Queue commands and is shared between + * i40e Firmware and Software. + * + * This file needs to comply with the Linux Kernel coding style. + */ + +#define I40E_FW_API_VERSION_MAJOR 0x0001 +#define I40E_FW_API_VERSION_MINOR 0x0001 +#define I40E_FW_API_VERSION_A0_MINOR 0x0000 + +struct i40e_aq_desc { + __le16 flags; + __le16 opcode; + __le16 datalen; + __le16 retval; + __le32 cookie_high; + __le32 cookie_low; + union { + struct { + __le32 param0; + __le32 param1; + __le32 param2; + __le32 param3; + } internal; + struct { + __le32 param0; + __le32 param1; + __le32 addr_high; + __le32 addr_low; + } external; + u8 raw[16]; + } params; +}; + +/* Flags sub-structure + * |0 |1 |2 |3 |4 |5 |6 |7 |8 |9 |10 |11 |12 |13 |14 |15 | + * |DD |CMP|ERR|VFE| * * RESERVED * * |LB |RD |VFC|BUF|SI |EI |FE | + */ + +/* command flags and offsets*/ +#define I40E_AQ_FLAG_DD_SHIFT 0 +#define I40E_AQ_FLAG_CMP_SHIFT 1 +#define I40E_AQ_FLAG_ERR_SHIFT 2 +#define I40E_AQ_FLAG_VFE_SHIFT 3 +#define I40E_AQ_FLAG_LB_SHIFT 9 +#define I40E_AQ_FLAG_RD_SHIFT 10 +#define I40E_AQ_FLAG_VFC_SHIFT 11 +#define I40E_AQ_FLAG_BUF_SHIFT 12 +#define I40E_AQ_FLAG_SI_SHIFT 13 +#define I40E_AQ_FLAG_EI_SHIFT 14 +#define I40E_AQ_FLAG_FE_SHIFT 15 + +#define I40E_AQ_FLAG_DD (1 << I40E_AQ_FLAG_DD_SHIFT) /* 0x1 */ +#define I40E_AQ_FLAG_CMP (1 << I40E_AQ_FLAG_CMP_SHIFT) /* 0x2 */ +#define I40E_AQ_FLAG_ERR (1 << I40E_AQ_FLAG_ERR_SHIFT) /* 0x4 */ +#define I40E_AQ_FLAG_VFE (1 << I40E_AQ_FLAG_VFE_SHIFT) /* 0x8 */ +#define I40E_AQ_FLAG_LB (1 << I40E_AQ_FLAG_LB_SHIFT) /* 0x200 */ +#define I40E_AQ_FLAG_RD (1 << I40E_AQ_FLAG_RD_SHIFT) /* 0x400 */ +#define I40E_AQ_FLAG_VFC (1 << I40E_AQ_FLAG_VFC_SHIFT) /* 0x800 */ +#define I40E_AQ_FLAG_BUF (1 << I40E_AQ_FLAG_BUF_SHIFT) /* 0x1000 */ +#define I40E_AQ_FLAG_SI (1 << I40E_AQ_FLAG_SI_SHIFT) /* 0x2000 */ +#define I40E_AQ_FLAG_EI (1 << I40E_AQ_FLAG_EI_SHIFT) /* 0x4000 */ +#define I40E_AQ_FLAG_FE (1 << I40E_AQ_FLAG_FE_SHIFT) /* 0x8000 */ + +/* error codes */ +enum i40e_admin_queue_err { + I40E_AQ_RC_OK = 0, /* success */ + I40E_AQ_RC_EPERM = 1, /* Operation not permitted */ + I40E_AQ_RC_ENOENT = 2, /* No such element */ + I40E_AQ_RC_ESRCH = 3, /* Bad opcode */ + I40E_AQ_RC_EINTR = 4, /* operation interrupted */ + I40E_AQ_RC_EIO = 5, /* I/O error */ + I40E_AQ_RC_ENXIO = 6, /* No such resource */ + I40E_AQ_RC_E2BIG = 7, /* Arg too long */ + I40E_AQ_RC_EAGAIN = 8, /* Try again */ + I40E_AQ_RC_ENOMEM = 9, /* Out of memory */ + I40E_AQ_RC_EACCES = 10, /* Permission denied */ + I40E_AQ_RC_EFAULT = 11, /* Bad address */ + I40E_AQ_RC_EBUSY = 12, /* Device or resource busy */ + I40E_AQ_RC_EEXIST = 13, /* object already exists */ + I40E_AQ_RC_EINVAL = 14, /* Invalid argument */ + I40E_AQ_RC_ENOTTY = 15, /* Not a typewriter */ + I40E_AQ_RC_ENOSPC = 16, /* No space left or alloc failure */ + I40E_AQ_RC_ENOSYS = 17, /* Function not implemented */ + I40E_AQ_RC_ERANGE = 18, /* Parameter out of range */ + I40E_AQ_RC_EFLUSHED = 19, /* Cmd flushed because of prev cmd error */ + I40E_AQ_RC_BAD_ADDR = 20, /* Descriptor contains a bad pointer */ + I40E_AQ_RC_EMODE = 21, /* Op not allowed in current dev mode */ + I40E_AQ_RC_EFBIG = 22, /* File too large */ +}; + +/* Admin Queue command opcodes */ +enum i40e_admin_queue_opc { + /* aq commands */ + i40e_aqc_opc_get_version = 0x0001, + i40e_aqc_opc_driver_version = 0x0002, + i40e_aqc_opc_queue_shutdown = 0x0003, + + /* resource ownership */ + i40e_aqc_opc_request_resource = 0x0008, + i40e_aqc_opc_release_resource = 0x0009, + + i40e_aqc_opc_list_func_capabilities = 0x000A, + i40e_aqc_opc_list_dev_capabilities = 0x000B, + + i40e_aqc_opc_set_cppm_configuration = 0x0103, + i40e_aqc_opc_set_arp_proxy_entry = 0x0104, + i40e_aqc_opc_set_ns_proxy_entry = 0x0105, + + /* LAA */ + i40e_aqc_opc_mng_laa = 0x0106, /* AQ obsolete */ + i40e_aqc_opc_mac_address_read = 0x0107, + i40e_aqc_opc_mac_address_write = 0x0108, + + /* PXE */ + i40e_aqc_opc_clear_pxe_mode = 0x0110, + + /* internal switch commands */ + i40e_aqc_opc_get_switch_config = 0x0200, + i40e_aqc_opc_add_statistics = 0x0201, + i40e_aqc_opc_remove_statistics = 0x0202, + i40e_aqc_opc_set_port_parameters = 0x0203, + i40e_aqc_opc_get_switch_resource_alloc = 0x0204, + + i40e_aqc_opc_add_vsi = 0x0210, + i40e_aqc_opc_update_vsi_parameters = 0x0211, + i40e_aqc_opc_get_vsi_parameters = 0x0212, + + i40e_aqc_opc_add_pv = 0x0220, + i40e_aqc_opc_update_pv_parameters = 0x0221, + i40e_aqc_opc_get_pv_parameters = 0x0222, + + i40e_aqc_opc_add_veb = 0x0230, + i40e_aqc_opc_update_veb_parameters = 0x0231, + i40e_aqc_opc_get_veb_parameters = 0x0232, + + i40e_aqc_opc_delete_element = 0x0243, + + i40e_aqc_opc_add_macvlan = 0x0250, + i40e_aqc_opc_remove_macvlan = 0x0251, + i40e_aqc_opc_add_vlan = 0x0252, + i40e_aqc_opc_remove_vlan = 0x0253, + i40e_aqc_opc_set_vsi_promiscuous_modes = 0x0254, + i40e_aqc_opc_add_tag = 0x0255, + i40e_aqc_opc_remove_tag = 0x0256, + i40e_aqc_opc_add_multicast_etag = 0x0257, + i40e_aqc_opc_remove_multicast_etag = 0x0258, + i40e_aqc_opc_update_tag = 0x0259, + i40e_aqc_opc_add_control_packet_filter = 0x025A, + i40e_aqc_opc_remove_control_packet_filter = 0x025B, + i40e_aqc_opc_add_cloud_filters = 0x025C, + i40e_aqc_opc_remove_cloud_filters = 0x025D, + + i40e_aqc_opc_add_mirror_rule = 0x0260, + i40e_aqc_opc_delete_mirror_rule = 0x0261, + + i40e_aqc_opc_set_storm_control_config = 0x0280, + i40e_aqc_opc_get_storm_control_config = 0x0281, + + /* DCB commands */ + i40e_aqc_opc_dcb_ignore_pfc = 0x0301, + i40e_aqc_opc_dcb_updated = 0x0302, + + /* TX scheduler */ + i40e_aqc_opc_configure_vsi_bw_limit = 0x0400, + i40e_aqc_opc_configure_vsi_ets_sla_bw_limit = 0x0406, + i40e_aqc_opc_configure_vsi_tc_bw = 0x0407, + i40e_aqc_opc_query_vsi_bw_config = 0x0408, + i40e_aqc_opc_query_vsi_ets_sla_config = 0x040A, + i40e_aqc_opc_configure_switching_comp_bw_limit = 0x0410, + + i40e_aqc_opc_enable_switching_comp_ets = 0x0413, + i40e_aqc_opc_modify_switching_comp_ets = 0x0414, + i40e_aqc_opc_disable_switching_comp_ets = 0x0415, + i40e_aqc_opc_configure_switching_comp_ets_bw_limit = 0x0416, + i40e_aqc_opc_configure_switching_comp_bw_config = 0x0417, + i40e_aqc_opc_query_switching_comp_ets_config = 0x0418, + i40e_aqc_opc_query_port_ets_config = 0x0419, + i40e_aqc_opc_query_switching_comp_bw_config = 0x041A, + i40e_aqc_opc_suspend_port_tx = 0x041B, + i40e_aqc_opc_resume_port_tx = 0x041C, + + /* hmc */ + i40e_aqc_opc_query_hmc_resource_profile = 0x0500, + i40e_aqc_opc_set_hmc_resource_profile = 0x0501, + + /* phy commands*/ + i40e_aqc_opc_get_phy_abilities = 0x0600, + i40e_aqc_opc_set_phy_config = 0x0601, + i40e_aqc_opc_set_mac_config = 0x0603, + i40e_aqc_opc_set_link_restart_an = 0x0605, + i40e_aqc_opc_get_link_status = 0x0607, + i40e_aqc_opc_set_phy_int_mask = 0x0613, + i40e_aqc_opc_get_local_advt_reg = 0x0614, + i40e_aqc_opc_set_local_advt_reg = 0x0615, + i40e_aqc_opc_get_partner_advt = 0x0616, + i40e_aqc_opc_set_lb_modes = 0x0618, + i40e_aqc_opc_get_phy_wol_caps = 0x0621, + i40e_aqc_opc_set_phy_reset = 0x0622, + i40e_aqc_opc_upload_ext_phy_fm = 0x0625, + + /* NVM commands */ + i40e_aqc_opc_nvm_read = 0x0701, + i40e_aqc_opc_nvm_erase = 0x0702, + i40e_aqc_opc_nvm_update = 0x0703, + + /* virtualization commands */ + i40e_aqc_opc_send_msg_to_pf = 0x0801, + i40e_aqc_opc_send_msg_to_vf = 0x0802, + i40e_aqc_opc_send_msg_to_peer = 0x0803, + + /* alternate structure */ + i40e_aqc_opc_alternate_write = 0x0900, + i40e_aqc_opc_alternate_write_indirect = 0x0901, + i40e_aqc_opc_alternate_read = 0x0902, + i40e_aqc_opc_alternate_read_indirect = 0x0903, + i40e_aqc_opc_alternate_write_done = 0x0904, + i40e_aqc_opc_alternate_set_mode = 0x0905, + i40e_aqc_opc_alternate_clear_port = 0x0906, + + /* LLDP commands */ + i40e_aqc_opc_lldp_get_mib = 0x0A00, + i40e_aqc_opc_lldp_update_mib = 0x0A01, + i40e_aqc_opc_lldp_add_tlv = 0x0A02, + i40e_aqc_opc_lldp_update_tlv = 0x0A03, + i40e_aqc_opc_lldp_delete_tlv = 0x0A04, + i40e_aqc_opc_lldp_stop = 0x0A05, + i40e_aqc_opc_lldp_start = 0x0A06, + + /* Tunnel commands */ + i40e_aqc_opc_add_udp_tunnel = 0x0B00, + i40e_aqc_opc_del_udp_tunnel = 0x0B01, + i40e_aqc_opc_tunnel_key_structure = 0x0B10, + + /* Async Events */ + i40e_aqc_opc_event_lan_overflow = 0x1001, + + /* OEM commands */ + i40e_aqc_opc_oem_parameter_change = 0xFE00, + i40e_aqc_opc_oem_device_status_change = 0xFE01, + + /* debug commands */ + i40e_aqc_opc_debug_get_deviceid = 0xFF00, + i40e_aqc_opc_debug_set_mode = 0xFF01, + i40e_aqc_opc_debug_read_reg = 0xFF03, + i40e_aqc_opc_debug_write_reg = 0xFF04, + i40e_aqc_opc_debug_read_reg_sg = 0xFF05, + i40e_aqc_opc_debug_write_reg_sg = 0xFF06, + i40e_aqc_opc_debug_modify_reg = 0xFF07, + i40e_aqc_opc_debug_dump_internals = 0xFF08, + i40e_aqc_opc_debug_modify_internals = 0xFF09, +}; + +/* command structures and indirect data structures */ + +/* Structure naming conventions: + * - no suffix for direct command descriptor structures + * - _data for indirect sent data + * - _resp for indirect return data (data which is both will use _data) + * - _completion for direct return data + * - _element_ for repeated elements (may also be _data or _resp) + * + * Command structures are expected to overlay the params.raw member of the basic + * descriptor, and as such cannot exceed 16 bytes in length. + */ + +/* This macro is used to generate a compilation error if a structure + * is not exactly the correct length. It gives a divide by zero error if the + * structure is not of the correct size, otherwise it creates an enum that is + * never used. + */ +#define I40E_CHECK_STRUCT_LEN(n, X) enum i40e_static_assert_enum_##X \ + { i40e_static_assert_##X = (n)/((sizeof(struct X) == (n)) ? 1 : 0) } + +/* This macro is used extensively to ensure that command structures are 16 + * bytes in length as they have to map to the raw array of that size. + */ +#define I40E_CHECK_CMD_LENGTH(X) I40E_CHECK_STRUCT_LEN(16, X) + +/* internal (0x00XX) commands */ + +/* Get version (direct 0x0001) */ +struct i40e_aqc_get_version { + __le32 rom_ver; + __le32 fw_build; + __le16 fw_major; + __le16 fw_minor; + __le16 api_major; + __le16 api_minor; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_get_version); + +/* Send driver version (indirect 0x0002) */ +struct i40e_aqc_driver_version { + u8 driver_major_ver; + u8 driver_minor_ver; + u8 driver_build_ver; + u8 driver_subbuild_ver; + u8 reserved[4]; + __le32 address_high; + __le32 address_low; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_driver_version); + +/* Queue Shutdown (direct 0x0003) */ +struct i40e_aqc_queue_shutdown { + __le32 driver_unloading; +#define I40E_AQ_DRIVER_UNLOADING 0x1 + u8 reserved[12]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_queue_shutdown); + +/* Request resource ownership (direct 0x0008) + * Release resource ownership (direct 0x0009) + */ +#define I40E_AQ_RESOURCE_NVM 1 +#define I40E_AQ_RESOURCE_SDP 2 +#define I40E_AQ_RESOURCE_ACCESS_READ 1 +#define I40E_AQ_RESOURCE_ACCESS_WRITE 2 +#define I40E_AQ_RESOURCE_NVM_READ_TIMEOUT 3000 +#define I40E_AQ_RESOURCE_NVM_WRITE_TIMEOUT 180000 + +struct i40e_aqc_request_resource { + __le16 resource_id; + __le16 access_type; + __le32 timeout; + __le32 resource_number; + u8 reserved[4]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_request_resource); + +/* Get function capabilities (indirect 0x000A) + * Get device capabilities (indirect 0x000B) + */ +struct i40e_aqc_list_capabilites { + u8 command_flags; +#define I40E_AQ_LIST_CAP_PF_INDEX_EN 1 + u8 pf_index; + u8 reserved[2]; + __le32 count; + __le32 addr_high; + __le32 addr_low; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_list_capabilites); + +struct i40e_aqc_list_capabilities_element_resp { + __le16 id; + u8 major_rev; + u8 minor_rev; + __le32 number; + __le32 logical_id; + __le32 phys_id; + u8 reserved[16]; +}; + +/* list of caps */ + +#define I40E_AQ_CAP_ID_SWITCH_MODE 0x0001 +#define I40E_AQ_CAP_ID_MNG_MODE 0x0002 +#define I40E_AQ_CAP_ID_NPAR_ACTIVE 0x0003 +#define I40E_AQ_CAP_ID_OS2BMC_CAP 0x0004 +#define I40E_AQ_CAP_ID_FUNCTIONS_VALID 0x0005 +#define I40E_AQ_CAP_ID_ALTERNATE_RAM 0x0006 +#define I40E_AQ_CAP_ID_SRIOV 0x0012 +#define I40E_AQ_CAP_ID_VF 0x0013 +#define I40E_AQ_CAP_ID_VMDQ 0x0014 +#define I40E_AQ_CAP_ID_8021QBG 0x0015 +#define I40E_AQ_CAP_ID_8021QBR 0x0016 +#define I40E_AQ_CAP_ID_VSI 0x0017 +#define I40E_AQ_CAP_ID_DCB 0x0018 +#define I40E_AQ_CAP_ID_FCOE 0x0021 +#define I40E_AQ_CAP_ID_RSS 0x0040 +#define I40E_AQ_CAP_ID_RXQ 0x0041 +#define I40E_AQ_CAP_ID_TXQ 0x0042 +#define I40E_AQ_CAP_ID_MSIX 0x0043 +#define I40E_AQ_CAP_ID_VF_MSIX 0x0044 +#define I40E_AQ_CAP_ID_FLOW_DIRECTOR 0x0045 +#define I40E_AQ_CAP_ID_1588 0x0046 +#define I40E_AQ_CAP_ID_IWARP 0x0051 +#define I40E_AQ_CAP_ID_LED 0x0061 +#define I40E_AQ_CAP_ID_SDP 0x0062 +#define I40E_AQ_CAP_ID_MDIO 0x0063 +#define I40E_AQ_CAP_ID_FLEX10 0x00F1 +#define I40E_AQ_CAP_ID_CEM 0x00F2 + +/* Set CPPM Configuration (direct 0x0103) */ +struct i40e_aqc_cppm_configuration { + __le16 command_flags; +#define I40E_AQ_CPPM_EN_LTRC 0x0800 +#define I40E_AQ_CPPM_EN_DMCTH 0x1000 +#define I40E_AQ_CPPM_EN_DMCTLX 0x2000 +#define I40E_AQ_CPPM_EN_HPTC 0x4000 +#define I40E_AQ_CPPM_EN_DMARC 0x8000 + __le16 ttlx; + __le32 dmacr; + __le16 dmcth; + u8 hptc; + u8 reserved; + __le32 pfltrc; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_cppm_configuration); + +/* Set ARP Proxy command / response (indirect 0x0104) */ +struct i40e_aqc_arp_proxy_data { + __le16 command_flags; +#define I40E_AQ_ARP_INIT_IPV4 0x0008 +#define I40E_AQ_ARP_UNSUP_CTL 0x0010 +#define I40E_AQ_ARP_ENA 0x0020 +#define I40E_AQ_ARP_ADD_IPV4 0x0040 +#define I40E_AQ_ARP_DEL_IPV4 0x0080 + __le16 table_id; + __le32 pfpm_proxyfc; + __le32 ip_addr; + u8 mac_addr[6]; +}; + +/* Set NS Proxy Table Entry Command (indirect 0x0105) */ +struct i40e_aqc_ns_proxy_data { + __le16 table_idx_mac_addr_0; + __le16 table_idx_mac_addr_1; + __le16 table_idx_ipv6_0; + __le16 table_idx_ipv6_1; + __le16 control; +#define I40E_AQ_NS_PROXY_ADD_0 0x0100 +#define I40E_AQ_NS_PROXY_DEL_0 0x0200 +#define I40E_AQ_NS_PROXY_ADD_1 0x0400 +#define I40E_AQ_NS_PROXY_DEL_1 0x0800 +#define I40E_AQ_NS_PROXY_ADD_IPV6_0 0x1000 +#define I40E_AQ_NS_PROXY_DEL_IPV6_0 0x2000 +#define I40E_AQ_NS_PROXY_ADD_IPV6_1 0x4000 +#define I40E_AQ_NS_PROXY_DEL_IPV6_1 0x8000 +#define I40E_AQ_NS_PROXY_COMMAND_SEQ 0x0001 +#define I40E_AQ_NS_PROXY_INIT_IPV6_TBL 0x0002 +#define I40E_AQ_NS_PROXY_INIT_MAC_TBL 0x0004 + u8 mac_addr_0[6]; + u8 mac_addr_1[6]; + u8 local_mac_addr[6]; + u8 ipv6_addr_0[16]; /* Warning! spec specifies BE byte order */ + u8 ipv6_addr_1[16]; +}; + +/* Manage LAA Command (0x0106) - obsolete */ +struct i40e_aqc_mng_laa { + __le16 command_flags; +#define I40E_AQ_LAA_FLAG_WR 0x8000 + u8 reserved[2]; + __le32 sal; + __le16 sah; + u8 reserved2[6]; +}; + +/* Manage MAC Address Read Command (indirect 0x0107) */ +struct i40e_aqc_mac_address_read { + __le16 command_flags; +#define I40E_AQC_LAN_ADDR_VALID 0x10 +#define I40E_AQC_SAN_ADDR_VALID 0x20 +#define I40E_AQC_PORT_ADDR_VALID 0x40 +#define I40E_AQC_WOL_ADDR_VALID 0x80 +#define I40E_AQC_ADDR_VALID_MASK 0xf0 + u8 reserved[6]; + __le32 addr_high; + __le32 addr_low; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_mac_address_read); + +struct i40e_aqc_mac_address_read_data { + u8 pf_lan_mac[6]; + u8 pf_san_mac[6]; + u8 port_mac[6]; + u8 pf_wol_mac[6]; +}; + +I40E_CHECK_STRUCT_LEN(24, i40e_aqc_mac_address_read_data); + +/* Manage MAC Address Write Command (0x0108) */ +struct i40e_aqc_mac_address_write { + __le16 command_flags; +#define I40E_AQC_WRITE_TYPE_LAA_ONLY 0x0000 +#define I40E_AQC_WRITE_TYPE_LAA_WOL 0x4000 +#define I40E_AQC_WRITE_TYPE_PORT 0x8000 +#define I40E_AQC_WRITE_TYPE_MASK 0xc000 + __le16 mac_sah; + __le32 mac_sal; + u8 reserved[8]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_mac_address_write); + +/* PXE commands (0x011x) */ + +/* Clear PXE Command and response (direct 0x0110) */ +struct i40e_aqc_clear_pxe { + u8 rx_cnt; + u8 reserved[15]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_clear_pxe); + +/* Switch configuration commands (0x02xx) */ + +/* Used by many indirect commands that only pass an seid and a buffer in the + * command + */ +struct i40e_aqc_switch_seid { + __le16 seid; + u8 reserved[6]; + __le32 addr_high; + __le32 addr_low; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_switch_seid); + +/* Get Switch Configuration command (indirect 0x0200) + * uses i40e_aqc_switch_seid for the descriptor + */ +struct i40e_aqc_get_switch_config_header_resp { + __le16 num_reported; + __le16 num_total; + u8 reserved[12]; +}; + +struct i40e_aqc_switch_config_element_resp { + u8 element_type; +#define I40E_AQ_SW_ELEM_TYPE_MAC 1 +#define I40E_AQ_SW_ELEM_TYPE_PF 2 +#define I40E_AQ_SW_ELEM_TYPE_VF 3 +#define I40E_AQ_SW_ELEM_TYPE_EMP 4 +#define I40E_AQ_SW_ELEM_TYPE_BMC 5 +#define I40E_AQ_SW_ELEM_TYPE_PV 16 +#define I40E_AQ_SW_ELEM_TYPE_VEB 17 +#define I40E_AQ_SW_ELEM_TYPE_PA 18 +#define I40E_AQ_SW_ELEM_TYPE_VSI 19 + u8 revision; +#define I40E_AQ_SW_ELEM_REV_1 1 + __le16 seid; + __le16 uplink_seid; + __le16 downlink_seid; + u8 reserved[3]; + u8 connection_type; +#define I40E_AQ_CONN_TYPE_REGULAR 0x1 +#define I40E_AQ_CONN_TYPE_DEFAULT 0x2 +#define I40E_AQ_CONN_TYPE_CASCADED 0x3 + __le16 scheduler_id; + __le16 element_info; +}; + +/* Get Switch Configuration (indirect 0x0200) + * an array of elements are returned in the response buffer + * the first in the array is the header, remainder are elements + */ +struct i40e_aqc_get_switch_config_resp { + struct i40e_aqc_get_switch_config_header_resp header; + struct i40e_aqc_switch_config_element_resp element[1]; +}; + +/* Add Statistics (direct 0x0201) + * Remove Statistics (direct 0x0202) + */ +struct i40e_aqc_add_remove_statistics { + __le16 seid; + __le16 vlan; + __le16 stat_index; + u8 reserved[10]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_add_remove_statistics); + +/* Set Port Parameters command (direct 0x0203) */ +struct i40e_aqc_set_port_parameters { + __le16 command_flags; +#define I40E_AQ_SET_P_PARAMS_SAVE_BAD_PACKETS 1 +#define I40E_AQ_SET_P_PARAMS_PAD_SHORT_PACKETS 2 /* must set! */ +#define I40E_AQ_SET_P_PARAMS_DOUBLE_VLAN_ENA 4 + __le16 bad_frame_vsi; + __le16 default_seid; /* reserved for command */ + u8 reserved[10]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_set_port_parameters); + +/* Get Switch Resource Allocation (indirect 0x0204) */ +struct i40e_aqc_get_switch_resource_alloc { + u8 num_entries; /* reserved for command */ + u8 reserved[7]; + __le32 addr_high; + __le32 addr_low; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_get_switch_resource_alloc); + +/* expect an array of these structs in the response buffer */ +struct i40e_aqc_switch_resource_alloc_element_resp { + u8 resource_type; +#define I40E_AQ_RESOURCE_TYPE_VEB 0x0 +#define I40E_AQ_RESOURCE_TYPE_VSI 0x1 +#define I40E_AQ_RESOURCE_TYPE_MACADDR 0x2 +#define I40E_AQ_RESOURCE_TYPE_STAG 0x3 +#define I40E_AQ_RESOURCE_TYPE_ETAG 0x4 +#define I40E_AQ_RESOURCE_TYPE_MULTICAST_HASH 0x5 +#define I40E_AQ_RESOURCE_TYPE_UNICAST_HASH 0x6 +#define I40E_AQ_RESOURCE_TYPE_VLAN 0x7 +#define I40E_AQ_RESOURCE_TYPE_VSI_LIST_ENTRY 0x8 +#define I40E_AQ_RESOURCE_TYPE_ETAG_LIST_ENTRY 0x9 +#define I40E_AQ_RESOURCE_TYPE_VLAN_STAT_POOL 0xA +#define I40E_AQ_RESOURCE_TYPE_MIRROR_RULE 0xB +#define I40E_AQ_RESOURCE_TYPE_QUEUE_SETS 0xC +#define I40E_AQ_RESOURCE_TYPE_VLAN_FILTERS 0xD +#define I40E_AQ_RESOURCE_TYPE_INNER_MAC_FILTERS 0xF +#define I40E_AQ_RESOURCE_TYPE_IP_FILTERS 0x10 +#define I40E_AQ_RESOURCE_TYPE_GRE_VN_KEYS 0x11 +#define I40E_AQ_RESOURCE_TYPE_VN2_KEYS 0x12 +#define I40E_AQ_RESOURCE_TYPE_TUNNEL_PORTS 0x13 + u8 reserved1; + __le16 guaranteed; + __le16 total; + __le16 used; + __le16 total_unalloced; + u8 reserved2[6]; +}; + +/* Add VSI (indirect 0x0210) + * this indirect command uses struct i40e_aqc_vsi_properties_data + * as the indirect buffer (128 bytes) + * + * Update VSI (indirect 0x211) + * uses the same data structure as Add VSI + * + * Get VSI (indirect 0x0212) + * uses the same completion and data structure as Add VSI + */ +struct i40e_aqc_add_get_update_vsi { + __le16 uplink_seid; + u8 connection_type; +#define I40E_AQ_VSI_CONN_TYPE_NORMAL 0x1 +#define I40E_AQ_VSI_CONN_TYPE_DEFAULT 0x2 +#define I40E_AQ_VSI_CONN_TYPE_CASCADED 0x3 + u8 reserved1; + u8 vf_id; + u8 reserved2; + __le16 vsi_flags; +#define I40E_AQ_VSI_TYPE_SHIFT 0x0 +#define I40E_AQ_VSI_TYPE_MASK (0x3 << I40E_AQ_VSI_TYPE_SHIFT) +#define I40E_AQ_VSI_TYPE_VF 0x0 +#define I40E_AQ_VSI_TYPE_VMDQ2 0x1 +#define I40E_AQ_VSI_TYPE_PF 0x2 +#define I40E_AQ_VSI_TYPE_EMP_MNG 0x3 +#define I40E_AQ_VSI_FLAG_CASCADED_PV 0x4 +#define I40E_AQ_VSI_FLAG_CLOUD_VSI 0x8 + __le32 addr_high; + __le32 addr_low; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_add_get_update_vsi); + +struct i40e_aqc_add_get_update_vsi_completion { + __le16 seid; + __le16 vsi_number; + __le16 vsi_used; + __le16 vsi_free; + __le32 addr_high; + __le32 addr_low; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_add_get_update_vsi_completion); + +struct i40e_aqc_vsi_properties_data { + /* first 96 byte are written by SW */ + __le16 valid_sections; +#define I40E_AQ_VSI_PROP_SWITCH_VALID 0x0001 +#define I40E_AQ_VSI_PROP_SECURITY_VALID 0x0002 +#define I40E_AQ_VSI_PROP_VLAN_VALID 0x0004 +#define I40E_AQ_VSI_PROP_CAS_PV_VALID 0x0008 +#define I40E_AQ_VSI_PROP_INGRESS_UP_VALID 0x0010 +#define I40E_AQ_VSI_PROP_EGRESS_UP_VALID 0x0020 +#define I40E_AQ_VSI_PROP_QUEUE_MAP_VALID 0x0040 +#define I40E_AQ_VSI_PROP_QUEUE_OPT_VALID 0x0080 +#define I40E_AQ_VSI_PROP_OUTER_UP_VALID 0x0100 +#define I40E_AQ_VSI_PROP_SCHED_VALID 0x0200 + /* switch section */ + __le16 switch_id; /* 12bit id combined with flags below */ +#define I40E_AQ_VSI_SW_ID_SHIFT 0x0000 +#define I40E_AQ_VSI_SW_ID_MASK (0xFFF << I40E_AQ_VSI_SW_ID_SHIFT) +#define I40E_AQ_VSI_SW_ID_FLAG_NOT_STAG 0x1000 +#define I40E_AQ_VSI_SW_ID_FLAG_ALLOW_LB 0x2000 +#define I40E_AQ_VSI_SW_ID_FLAG_LOCAL_LB 0x4000 + u8 sw_reserved[2]; + /* security section */ + u8 sec_flags; +#define I40E_AQ_VSI_SEC_FLAG_ALLOW_DEST_OVRD 0x01 +#define I40E_AQ_VSI_SEC_FLAG_ENABLE_VLAN_CHK 0x02 +#define I40E_AQ_VSI_SEC_FLAG_ENABLE_MAC_CHK 0x04 + u8 sec_reserved; + /* VLAN section */ + __le16 pvid; /* VLANS include priority bits */ + __le16 fcoe_pvid; + u8 port_vlan_flags; +#define I40E_AQ_VSI_PVLAN_MODE_SHIFT 0x00 +#define I40E_AQ_VSI_PVLAN_MODE_MASK (0x03 << \ + I40E_AQ_VSI_PVLAN_MODE_SHIFT) +#define I40E_AQ_VSI_PVLAN_MODE_TAGGED 0x01 +#define I40E_AQ_VSI_PVLAN_MODE_UNTAGGED 0x02 +#define I40E_AQ_VSI_PVLAN_MODE_ALL 0x03 +#define I40E_AQ_VSI_PVLAN_INSERT_PVID 0x04 +#define I40E_AQ_VSI_PVLAN_EMOD_SHIFT 0x03 +#define I40E_AQ_VSI_PVLAN_EMOD_MASK (0x3 << \ + I40E_AQ_VSI_PVLAN_EMOD_SHIFT) +#define I40E_AQ_VSI_PVLAN_EMOD_STR_BOTH 0x0 +#define I40E_AQ_VSI_PVLAN_EMOD_STR_UP 0x08 +#define I40E_AQ_VSI_PVLAN_EMOD_STR 0x10 +#define I40E_AQ_VSI_PVLAN_EMOD_NOTHING 0x18 + u8 pvlan_reserved[3]; + /* ingress egress up sections */ + __le32 ingress_table; /* bitmap, 3 bits per up */ +#define I40E_AQ_VSI_UP_TABLE_UP0_SHIFT 0 +#define I40E_AQ_VSI_UP_TABLE_UP0_MASK (0x7 << \ + I40E_AQ_VSI_UP_TABLE_UP0_SHIFT) +#define I40E_AQ_VSI_UP_TABLE_UP1_SHIFT 3 +#define I40E_AQ_VSI_UP_TABLE_UP1_MASK (0x7 << \ + I40E_AQ_VSI_UP_TABLE_UP1_SHIFT) +#define I40E_AQ_VSI_UP_TABLE_UP2_SHIFT 6 +#define I40E_AQ_VSI_UP_TABLE_UP2_MASK (0x7 << \ + I40E_AQ_VSI_UP_TABLE_UP2_SHIFT) +#define I40E_AQ_VSI_UP_TABLE_UP3_SHIFT 9 +#define I40E_AQ_VSI_UP_TABLE_UP3_MASK (0x7 << \ + I40E_AQ_VSI_UP_TABLE_UP3_SHIFT) +#define I40E_AQ_VSI_UP_TABLE_UP4_SHIFT 12 +#define I40E_AQ_VSI_UP_TABLE_UP4_MASK (0x7 << \ + I40E_AQ_VSI_UP_TABLE_UP4_SHIFT) +#define I40E_AQ_VSI_UP_TABLE_UP5_SHIFT 15 +#define I40E_AQ_VSI_UP_TABLE_UP5_MASK (0x7 << \ + I40E_AQ_VSI_UP_TABLE_UP5_SHIFT) +#define I40E_AQ_VSI_UP_TABLE_UP6_SHIFT 18 +#define I40E_AQ_VSI_UP_TABLE_UP6_MASK (0x7 << \ + I40E_AQ_VSI_UP_TABLE_UP6_SHIFT) +#define I40E_AQ_VSI_UP_TABLE_UP7_SHIFT 21 +#define I40E_AQ_VSI_UP_TABLE_UP7_MASK (0x7 << \ + I40E_AQ_VSI_UP_TABLE_UP7_SHIFT) + __le32 egress_table; /* same defines as for ingress table */ + /* cascaded PV section */ + __le16 cas_pv_tag; + u8 cas_pv_flags; +#define I40E_AQ_VSI_CAS_PV_TAGX_SHIFT 0x00 +#define I40E_AQ_VSI_CAS_PV_TAGX_MASK (0x03 << \ + I40E_AQ_VSI_CAS_PV_TAGX_SHIFT) +#define I40E_AQ_VSI_CAS_PV_TAGX_LEAVE 0x00 +#define I40E_AQ_VSI_CAS_PV_TAGX_REMOVE 0x01 +#define I40E_AQ_VSI_CAS_PV_TAGX_COPY 0x02 +#define I40E_AQ_VSI_CAS_PV_INSERT_TAG 0x10 +#define I40E_AQ_VSI_CAS_PV_ETAG_PRUNE 0x20 +#define I40E_AQ_VSI_CAS_PV_ACCEPT_HOST_TAG 0x40 + u8 cas_pv_reserved; + /* queue mapping section */ + __le16 mapping_flags; +#define I40E_AQ_VSI_QUE_MAP_CONTIG 0x0 +#define I40E_AQ_VSI_QUE_MAP_NONCONTIG 0x1 + __le16 queue_mapping[16]; +#define I40E_AQ_VSI_QUEUE_SHIFT 0x0 +#define I40E_AQ_VSI_QUEUE_MASK (0x7FF << I40E_AQ_VSI_QUEUE_SHIFT) + __le16 tc_mapping[8]; +#define I40E_AQ_VSI_TC_QUE_OFFSET_SHIFT 0 +#define I40E_AQ_VSI_TC_QUE_OFFSET_MASK (0x1FF << \ + I40E_AQ_VSI_TC_QUE_OFFSET_SHIFT) +#define I40E_AQ_VSI_TC_QUE_NUMBER_SHIFT 9 +#define I40E_AQ_VSI_TC_QUE_NUMBER_MASK (0x7 << \ + I40E_AQ_VSI_TC_QUE_NUMBER_SHIFT) + /* queueing option section */ + u8 queueing_opt_flags; +#define I40E_AQ_VSI_QUE_OPT_TCP_ENA 0x10 +#define I40E_AQ_VSI_QUE_OPT_FCOE_ENA 0x20 + u8 queueing_opt_reserved[3]; + /* scheduler section */ + u8 up_enable_bits; + u8 sched_reserved; + /* outer up section */ + __le32 outer_up_table; /* same structure and defines as ingress table */ + u8 cmd_reserved[8]; + /* last 32 bytes are written by FW */ + __le16 qs_handle[8]; +#define I40E_AQ_VSI_QS_HANDLE_INVALID 0xFFFF + __le16 stat_counter_idx; + __le16 sched_id; + u8 resp_reserved[12]; +}; + +I40E_CHECK_STRUCT_LEN(128, i40e_aqc_vsi_properties_data); + +/* Add Port Virtualizer (direct 0x0220) + * also used for update PV (direct 0x0221) but only flags are used + * (IS_CTRL_PORT only works on add PV) + */ +struct i40e_aqc_add_update_pv { + __le16 command_flags; +#define I40E_AQC_PV_FLAG_PV_TYPE 0x1 +#define I40E_AQC_PV_FLAG_FWD_UNKNOWN_STAG_EN 0x2 +#define I40E_AQC_PV_FLAG_FWD_UNKNOWN_ETAG_EN 0x4 +#define I40E_AQC_PV_FLAG_IS_CTRL_PORT 0x8 + __le16 uplink_seid; + __le16 connected_seid; + u8 reserved[10]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_add_update_pv); + +struct i40e_aqc_add_update_pv_completion { + /* reserved for update; for add also encodes error if rc == ENOSPC */ + __le16 pv_seid; +#define I40E_AQC_PV_ERR_FLAG_NO_PV 0x1 +#define I40E_AQC_PV_ERR_FLAG_NO_SCHED 0x2 +#define I40E_AQC_PV_ERR_FLAG_NO_COUNTER 0x4 +#define I40E_AQC_PV_ERR_FLAG_NO_ENTRY 0x8 + u8 reserved[14]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_add_update_pv_completion); + +/* Get PV Params (direct 0x0222) + * uses i40e_aqc_switch_seid for the descriptor + */ + +struct i40e_aqc_get_pv_params_completion { + __le16 seid; + __le16 default_stag; + __le16 pv_flags; /* same flags as add_pv */ +#define I40E_AQC_GET_PV_PV_TYPE 0x1 +#define I40E_AQC_GET_PV_FRWD_UNKNOWN_STAG 0x2 +#define I40E_AQC_GET_PV_FRWD_UNKNOWN_ETAG 0x4 + u8 reserved[8]; + __le16 default_port_seid; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_get_pv_params_completion); + +/* Add VEB (direct 0x0230) */ +struct i40e_aqc_add_veb { + __le16 uplink_seid; + __le16 downlink_seid; + __le16 veb_flags; +#define I40E_AQC_ADD_VEB_FLOATING 0x1 +#define I40E_AQC_ADD_VEB_PORT_TYPE_SHIFT 1 +#define I40E_AQC_ADD_VEB_PORT_TYPE_MASK (0x3 << \ + I40E_AQC_ADD_VEB_PORT_TYPE_SHIFT) +#define I40E_AQC_ADD_VEB_PORT_TYPE_DEFAULT 0x2 +#define I40E_AQC_ADD_VEB_PORT_TYPE_DATA 0x4 +#define I40E_AQC_ADD_VEB_ENABLE_L2_FILTER 0x8 + u8 enable_tcs; + u8 reserved[9]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_add_veb); + +struct i40e_aqc_add_veb_completion { + u8 reserved[6]; + __le16 switch_seid; + /* also encodes error if rc == ENOSPC; codes are the same as add_pv */ + __le16 veb_seid; +#define I40E_AQC_VEB_ERR_FLAG_NO_VEB 0x1 +#define I40E_AQC_VEB_ERR_FLAG_NO_SCHED 0x2 +#define I40E_AQC_VEB_ERR_FLAG_NO_COUNTER 0x4 +#define I40E_AQC_VEB_ERR_FLAG_NO_ENTRY 0x8 + __le16 statistic_index; + __le16 vebs_used; + __le16 vebs_free; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_add_veb_completion); + +/* Get VEB Parameters (direct 0x0232) + * uses i40e_aqc_switch_seid for the descriptor + */ +struct i40e_aqc_get_veb_parameters_completion { + __le16 seid; + __le16 switch_id; + __le16 veb_flags; /* only the first/last flags from 0x0230 is valid */ + __le16 statistic_index; + __le16 vebs_used; + __le16 vebs_free; + u8 reserved[4]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_get_veb_parameters_completion); + +/* Delete Element (direct 0x0243) + * uses the generic i40e_aqc_switch_seid + */ + +/* Add MAC-VLAN (indirect 0x0250) */ + +/* used for the command for most vlan commands */ +struct i40e_aqc_macvlan { + __le16 num_addresses; + __le16 seid[3]; +#define I40E_AQC_MACVLAN_CMD_SEID_NUM_SHIFT 0 +#define I40E_AQC_MACVLAN_CMD_SEID_NUM_MASK (0x3FF << \ + I40E_AQC_MACVLAN_CMD_SEID_NUM_SHIFT) +#define I40E_AQC_MACVLAN_CMD_SEID_VALID 0x8000 + __le32 addr_high; + __le32 addr_low; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_macvlan); + +/* indirect data for command and response */ +struct i40e_aqc_add_macvlan_element_data { + u8 mac_addr[6]; + __le16 vlan_tag; + __le16 flags; +#define I40E_AQC_MACVLAN_ADD_PERFECT_MATCH 0x0001 +#define I40E_AQC_MACVLAN_ADD_HASH_MATCH 0x0002 +#define I40E_AQC_MACVLAN_ADD_IGNORE_VLAN 0x0004 +#define I40E_AQC_MACVLAN_ADD_TO_QUEUE 0x0008 + __le16 queue_number; +#define I40E_AQC_MACVLAN_CMD_QUEUE_SHIFT 0 +#define I40E_AQC_MACVLAN_CMD_QUEUE_MASK (0x7FF << \ + I40E_AQC_MACVLAN_CMD_SEID_NUM_SHIFT) + /* response section */ + u8 match_method; +#define I40E_AQC_MM_PERFECT_MATCH 0x01 +#define I40E_AQC_MM_HASH_MATCH 0x02 +#define I40E_AQC_MM_ERR_NO_RES 0xFF + u8 reserved1[3]; +}; + +struct i40e_aqc_add_remove_macvlan_completion { + __le16 perfect_mac_used; + __le16 perfect_mac_free; + __le16 unicast_hash_free; + __le16 multicast_hash_free; + __le32 addr_high; + __le32 addr_low; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_add_remove_macvlan_completion); + +/* Remove MAC-VLAN (indirect 0x0251) + * uses i40e_aqc_macvlan for the descriptor + * data points to an array of num_addresses of elements + */ + +struct i40e_aqc_remove_macvlan_element_data { + u8 mac_addr[6]; + __le16 vlan_tag; + u8 flags; +#define I40E_AQC_MACVLAN_DEL_PERFECT_MATCH 0x01 +#define I40E_AQC_MACVLAN_DEL_HASH_MATCH 0x02 +#define I40E_AQC_MACVLAN_DEL_IGNORE_VLAN 0x08 +#define I40E_AQC_MACVLAN_DEL_ALL_VSIS 0x10 + u8 reserved[3]; + /* reply section */ + u8 error_code; +#define I40E_AQC_REMOVE_MACVLAN_SUCCESS 0x0 +#define I40E_AQC_REMOVE_MACVLAN_FAIL 0xFF + u8 reply_reserved[3]; +}; + +/* Add VLAN (indirect 0x0252) + * Remove VLAN (indirect 0x0253) + * use the generic i40e_aqc_macvlan for the command + */ +struct i40e_aqc_add_remove_vlan_element_data { + __le16 vlan_tag; + u8 vlan_flags; +/* flags for add VLAN */ +#define I40E_AQC_ADD_VLAN_LOCAL 0x1 +#define I40E_AQC_ADD_PVLAN_TYPE_SHIFT 1 +#define I40E_AQC_ADD_PVLAN_TYPE_MASK (0x3 << \ + I40E_AQC_ADD_PVLAN_TYPE_SHIFT) +#define I40E_AQC_ADD_PVLAN_TYPE_REGULAR 0x0 +#define I40E_AQC_ADD_PVLAN_TYPE_PRIMARY 0x2 +#define I40E_AQC_ADD_PVLAN_TYPE_SECONDARY 0x4 +#define I40E_AQC_VLAN_PTYPE_SHIFT 3 +#define I40E_AQC_VLAN_PTYPE_MASK (0x3 << I40E_AQC_VLAN_PTYPE_SHIFT) +#define I40E_AQC_VLAN_PTYPE_REGULAR_VSI 0x0 +#define I40E_AQC_VLAN_PTYPE_PROMISC_VSI 0x8 +#define I40E_AQC_VLAN_PTYPE_COMMUNITY_VSI 0x10 +#define I40E_AQC_VLAN_PTYPE_ISOLATED_VSI 0x18 +/* flags for remove VLAN */ +#define I40E_AQC_REMOVE_VLAN_ALL 0x1 + u8 reserved; + u8 result; +/* flags for add VLAN */ +#define I40E_AQC_ADD_VLAN_SUCCESS 0x0 +#define I40E_AQC_ADD_VLAN_FAIL_REQUEST 0xFE +#define I40E_AQC_ADD_VLAN_FAIL_RESOURCE 0xFF +/* flags for remove VLAN */ +#define I40E_AQC_REMOVE_VLAN_SUCCESS 0x0 +#define I40E_AQC_REMOVE_VLAN_FAIL 0xFF + u8 reserved1[3]; +}; + +struct i40e_aqc_add_remove_vlan_completion { + u8 reserved[4]; + __le16 vlans_used; + __le16 vlans_free; + __le32 addr_high; + __le32 addr_low; +}; + +/* Set VSI Promiscuous Modes (direct 0x0254) */ +struct i40e_aqc_set_vsi_promiscuous_modes { + __le16 promiscuous_flags; + __le16 valid_flags; +/* flags used for both fields above */ +#define I40E_AQC_SET_VSI_PROMISC_UNICAST 0x01 +#define I40E_AQC_SET_VSI_PROMISC_MULTICAST 0x02 +#define I40E_AQC_SET_VSI_PROMISC_BROADCAST 0x04 +#define I40E_AQC_SET_VSI_DEFAULT 0x08 +#define I40E_AQC_SET_VSI_PROMISC_VLAN 0x10 + __le16 seid; +#define I40E_AQC_VSI_PROM_CMD_SEID_MASK 0x3FF + u8 reserved[10]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_set_vsi_promiscuous_modes); + +/* Add S/E-tag command (direct 0x0255) + * Uses generic i40e_aqc_add_remove_tag_completion for completion + */ +struct i40e_aqc_add_tag { + __le16 flags; +#define I40E_AQC_ADD_TAG_FLAG_TO_QUEUE 0x0001 + __le16 seid; +#define I40E_AQC_ADD_TAG_CMD_SEID_NUM_SHIFT 0 +#define I40E_AQC_ADD_TAG_CMD_SEID_NUM_MASK (0x3FF << \ + I40E_AQC_ADD_TAG_CMD_SEID_NUM_SHIFT) + __le16 tag; + __le16 queue_number; + u8 reserved[8]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_add_tag); + +struct i40e_aqc_add_remove_tag_completion { + u8 reserved[12]; + __le16 tags_used; + __le16 tags_free; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_add_remove_tag_completion); + +/* Remove S/E-tag command (direct 0x0256) + * Uses generic i40e_aqc_add_remove_tag_completion for completion + */ +struct i40e_aqc_remove_tag { + __le16 seid; +#define I40E_AQC_REMOVE_TAG_CMD_SEID_NUM_SHIFT 0 +#define I40E_AQC_REMOVE_TAG_CMD_SEID_NUM_MASK (0x3FF << \ + I40E_AQC_REMOVE_TAG_CMD_SEID_NUM_SHIFT) + __le16 tag; + u8 reserved[12]; +}; + +/* Add multicast E-Tag (direct 0x0257) + * del multicast E-Tag (direct 0x0258) only uses pv_seid and etag fields + * and no external data + */ +struct i40e_aqc_add_remove_mcast_etag { + __le16 pv_seid; + __le16 etag; + u8 num_unicast_etags; + u8 reserved[3]; + __le32 addr_high; /* address of array of 2-byte s-tags */ + __le32 addr_low; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_add_remove_mcast_etag); + +struct i40e_aqc_add_remove_mcast_etag_completion { + u8 reserved[4]; + __le16 mcast_etags_used; + __le16 mcast_etags_free; + __le32 addr_high; + __le32 addr_low; + +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_add_remove_mcast_etag_completion); + +/* Update S/E-Tag (direct 0x0259) */ +struct i40e_aqc_update_tag { + __le16 seid; +#define I40E_AQC_UPDATE_TAG_CMD_SEID_NUM_SHIFT 0 +#define I40E_AQC_UPDATE_TAG_CMD_SEID_NUM_MASK (0x3FF << \ + I40E_AQC_UPDATE_TAG_CMD_SEID_NUM_SHIFT) + __le16 old_tag; + __le16 new_tag; + u8 reserved[10]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_update_tag); + +struct i40e_aqc_update_tag_completion { + u8 reserved[12]; + __le16 tags_used; + __le16 tags_free; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_update_tag_completion); + +/* Add Control Packet filter (direct 0x025A) + * Remove Control Packet filter (direct 0x025B) + * uses the i40e_aqc_add_oveb_cloud, + * and the generic direct completion structure + */ +struct i40e_aqc_add_remove_control_packet_filter { + u8 mac[6]; + __le16 etype; + __le16 flags; +#define I40E_AQC_ADD_CONTROL_PACKET_FLAGS_IGNORE_MAC 0x0001 +#define I40E_AQC_ADD_CONTROL_PACKET_FLAGS_DROP 0x0002 +#define I40E_AQC_ADD_CONTROL_PACKET_FLAGS_TO_QUEUE 0x0004 +#define I40E_AQC_ADD_CONTROL_PACKET_FLAGS_TX 0x0008 +#define I40E_AQC_ADD_CONTROL_PACKET_FLAGS_RX 0x0000 + __le16 seid; +#define I40E_AQC_ADD_CONTROL_PACKET_CMD_SEID_NUM_SHIFT 0 +#define I40E_AQC_ADD_CONTROL_PACKET_CMD_SEID_NUM_MASK (0x3FF << \ + I40E_AQC_ADD_CONTROL_PACKET_CMD_SEID_NUM_SHIFT) + __le16 queue; + u8 reserved[2]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_add_remove_control_packet_filter); + +struct i40e_aqc_add_remove_control_packet_filter_completion { + __le16 mac_etype_used; + __le16 etype_used; + __le16 mac_etype_free; + __le16 etype_free; + u8 reserved[8]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_add_remove_control_packet_filter_completion); + +/* Add Cloud filters (indirect 0x025C) + * Remove Cloud filters (indirect 0x025D) + * uses the i40e_aqc_add_remove_cloud_filters, + * and the generic indirect completion structure + */ +struct i40e_aqc_add_remove_cloud_filters { + u8 num_filters; + u8 reserved; + __le16 seid; +#define I40E_AQC_ADD_CLOUD_CMD_SEID_NUM_SHIFT 0 +#define I40E_AQC_ADD_CLOUD_CMD_SEID_NUM_MASK (0x3FF << \ + I40E_AQC_ADD_CLOUD_CMD_SEID_NUM_SHIFT) + u8 reserved2[4]; + __le32 addr_high; + __le32 addr_low; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_add_remove_cloud_filters); + +struct i40e_aqc_add_remove_cloud_filters_element_data { + u8 outer_mac[6]; + u8 inner_mac[6]; + __le16 inner_vlan; + union { + struct { + u8 reserved[12]; + u8 data[4]; + } v4; + struct { + u8 data[16]; + } v6; + } ipaddr; + __le16 flags; +#define I40E_AQC_ADD_CLOUD_FILTER_SHIFT 0 +#define I40E_AQC_ADD_CLOUD_FILTER_MASK (0x3F << \ + I40E_AQC_ADD_CLOUD_FILTER_SHIFT) +#define I40E_AQC_ADD_CLOUD_FILTER_OIP_GRE 0x0002 +#define I40E_AQC_ADD_CLOUD_FILTER_IMAC_IVLAN_GRE 0x0004 +#define I40E_AQC_ADD_CLOUD_FILTER_IMAC_IVLAN_VNL 0x0007 +/* 0x0000 reserved */ +#define I40E_AQC_ADD_CLOUD_FILTER_OIP 0x0001 +/* 0x0002 reserved */ +#define I40E_AQC_ADD_CLOUD_FILTER_IMAC_IVLAN 0x0003 +#define I40E_AQC_ADD_CLOUD_FILTER_IMAC_IVLAN_TEN_ID 0x0004 +/* 0x0005 reserved */ +#define I40E_AQC_ADD_CLOUD_FILTER_IMAC_TEN_ID 0x0006 +/* 0x0007 reserved */ +/* 0x0008 reserved */ +#define I40E_AQC_ADD_CLOUD_FILTER_OMAC 0x0009 +#define I40E_AQC_ADD_CLOUD_FILTER_IMAC 0x000A +#define I40E_AQC_ADD_CLOUD_FILTER_OMAC_TEN_ID_IMAC 0x000B +#define I40E_AQC_ADD_CLOUD_FILTER_IIP 0x000C + +#define I40E_AQC_ADD_CLOUD_FLAGS_TO_QUEUE 0x0080 +#define I40E_AQC_ADD_CLOUD_VNK_SHIFT 6 +#define I40E_AQC_ADD_CLOUD_VNK_MASK 0x00C0 +#define I40E_AQC_ADD_CLOUD_FLAGS_IPV4 0 +#define I40E_AQC_ADD_CLOUD_FLAGS_IPV6 0x0100 + +#define I40E_AQC_ADD_CLOUD_TNL_TYPE_SHIFT 9 +#define I40E_AQC_ADD_CLOUD_TNL_TYPE_MASK 0x1E00 +#define I40E_AQC_ADD_CLOUD_TNL_TYPE_XVLAN 0 +#define I40E_AQC_ADD_CLOUD_TNL_TYPE_NVGRE_OMAC 1 +#define I40E_AQC_ADD_CLOUD_TNL_TYPE_NGE 2 +#define I40E_AQC_ADD_CLOUD_TNL_TYPE_IP 3 + + __le32 tenant_id; + u8 reserved[4]; + __le16 queue_number; +#define I40E_AQC_ADD_CLOUD_QUEUE_SHIFT 0 +#define I40E_AQC_ADD_CLOUD_QUEUE_MASK (0x3F << \ + I40E_AQC_ADD_CLOUD_QUEUE_SHIFT) + u8 reserved2[14]; + /* response section */ + u8 allocation_result; +#define I40E_AQC_ADD_CLOUD_FILTER_SUCCESS 0x0 +#define I40E_AQC_ADD_CLOUD_FILTER_FAIL 0xFF + u8 response_reserved[7]; +}; + +struct i40e_aqc_remove_cloud_filters_completion { + __le16 perfect_ovlan_used; + __le16 perfect_ovlan_free; + __le16 vlan_used; + __le16 vlan_free; + __le32 addr_high; + __le32 addr_low; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_remove_cloud_filters_completion); + +/* Add Mirror Rule (indirect or direct 0x0260) + * Delete Mirror Rule (indirect or direct 0x0261) + * note: some rule types (4,5) do not use an external buffer. + * take care to set the flags correctly. + */ +struct i40e_aqc_add_delete_mirror_rule { + __le16 seid; + __le16 rule_type; +#define I40E_AQC_MIRROR_RULE_TYPE_SHIFT 0 +#define I40E_AQC_MIRROR_RULE_TYPE_MASK (0x7 << \ + I40E_AQC_MIRROR_RULE_TYPE_SHIFT) +#define I40E_AQC_MIRROR_RULE_TYPE_VPORT_INGRESS 1 +#define I40E_AQC_MIRROR_RULE_TYPE_VPORT_EGRESS 2 +#define I40E_AQC_MIRROR_RULE_TYPE_VLAN 3 +#define I40E_AQC_MIRROR_RULE_TYPE_ALL_INGRESS 4 +#define I40E_AQC_MIRROR_RULE_TYPE_ALL_EGRESS 5 + __le16 num_entries; + __le16 destination; /* VSI for add, rule id for delete */ + __le32 addr_high; /* address of array of 2-byte VSI or VLAN ids */ + __le32 addr_low; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_add_delete_mirror_rule); + +struct i40e_aqc_add_delete_mirror_rule_completion { + u8 reserved[2]; + __le16 rule_id; /* only used on add */ + __le16 mirror_rules_used; + __le16 mirror_rules_free; + __le32 addr_high; + __le32 addr_low; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_add_delete_mirror_rule_completion); + +/* Set Storm Control Configuration (direct 0x0280) + * Get Storm Control Configuration (direct 0x0281) + * the command and response use the same descriptor structure + */ +struct i40e_aqc_set_get_storm_control_config { + __le32 broadcast_threshold; + __le32 multicast_threshold; + __le32 control_flags; +#define I40E_AQC_STORM_CONTROL_MDIPW 0x01 +#define I40E_AQC_STORM_CONTROL_MDICW 0x02 +#define I40E_AQC_STORM_CONTROL_BDIPW 0x04 +#define I40E_AQC_STORM_CONTROL_BDICW 0x08 +#define I40E_AQC_STORM_CONTROL_BIDU 0x10 +#define I40E_AQC_STORM_CONTROL_INTERVAL_SHIFT 8 +#define I40E_AQC_STORM_CONTROL_INTERVAL_MASK (0x3FF << \ + I40E_AQC_STORM_CONTROL_INTERVAL_SHIFT) + u8 reserved[4]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_set_get_storm_control_config); + +/* DCB 0x03xx*/ + +/* PFC Ignore (direct 0x0301) + * the command and response use the same descriptor structure + */ +struct i40e_aqc_pfc_ignore { + u8 tc_bitmap; + u8 command_flags; /* unused on response */ +#define I40E_AQC_PFC_IGNORE_SET 0x80 +#define I40E_AQC_PFC_IGNORE_CLEAR 0x0 + u8 reserved[14]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_pfc_ignore); + +/* DCB Update (direct 0x0302) uses the i40e_aq_desc structure + * with no parameters + */ + +/* TX scheduler 0x04xx */ + +/* Almost all the indirect commands use + * this generic struct to pass the SEID in param0 + */ +struct i40e_aqc_tx_sched_ind { + __le16 vsi_seid; + u8 reserved[6]; + __le32 addr_high; + __le32 addr_low; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_tx_sched_ind); + +/* Several commands respond with a set of queue set handles */ +struct i40e_aqc_qs_handles_resp { + __le16 qs_handles[8]; +}; + +/* Configure VSI BW limits (direct 0x0400) */ +struct i40e_aqc_configure_vsi_bw_limit { + __le16 vsi_seid; + u8 reserved[2]; + __le16 credit; + u8 reserved1[2]; + u8 max_credit; /* 0-3, limit = 2^max */ + u8 reserved2[7]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_configure_vsi_bw_limit); + +/* Configure VSI Bandwidth Limit per Traffic Type (indirect 0x0406) + * responds with i40e_aqc_qs_handles_resp + */ +struct i40e_aqc_configure_vsi_ets_sla_bw_data { + u8 tc_valid_bits; + u8 reserved[15]; + __le16 tc_bw_credits[8]; /* FW writesback QS handles here */ + + /* 4 bits per tc 0-7, 4th bit is reserved, limit = 2^max */ + __le16 tc_bw_max[2]; + u8 reserved1[28]; +}; + +/* Configure VSI Bandwidth Allocation per Traffic Type (indirect 0x0407) + * responds with i40e_aqc_qs_handles_resp + */ +struct i40e_aqc_configure_vsi_tc_bw_data { + u8 tc_valid_bits; + u8 reserved[3]; + u8 tc_bw_credits[8]; + u8 reserved1[4]; + __le16 qs_handles[8]; +}; + +/* Query vsi bw configuration (indirect 0x0408) */ +struct i40e_aqc_query_vsi_bw_config_resp { + u8 tc_valid_bits; + u8 tc_suspended_bits; + u8 reserved[14]; + __le16 qs_handles[8]; + u8 reserved1[4]; + __le16 port_bw_limit; + u8 reserved2[2]; + u8 max_bw; /* 0-3, limit = 2^max */ + u8 reserved3[23]; +}; + +/* Query VSI Bandwidth Allocation per Traffic Type (indirect 0x040A) */ +struct i40e_aqc_query_vsi_ets_sla_config_resp { + u8 tc_valid_bits; + u8 reserved[3]; + u8 share_credits[8]; + __le16 credits[8]; + + /* 4 bits per tc 0-7, 4th bit is reserved, limit = 2^max */ + __le16 tc_bw_max[2]; +}; + +/* Configure Switching Component Bandwidth Limit (direct 0x0410) */ +struct i40e_aqc_configure_switching_comp_bw_limit { + __le16 seid; + u8 reserved[2]; + __le16 credit; + u8 reserved1[2]; + u8 max_bw; /* 0-3, limit = 2^max */ + u8 reserved2[7]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_configure_switching_comp_bw_limit); + +/* Enable Physical Port ETS (indirect 0x0413) + * Modify Physical Port ETS (indirect 0x0414) + * Disable Physical Port ETS (indirect 0x0415) + */ +struct i40e_aqc_configure_switching_comp_ets_data { + u8 reserved[4]; + u8 tc_valid_bits; + u8 reserved1; + u8 tc_strict_priority_flags; + u8 reserved2[17]; + u8 tc_bw_share_credits[8]; + u8 reserved3[96]; +}; + +/* Configure Switching Component Bandwidth Limits per Tc (indirect 0x0416) */ +struct i40e_aqc_configure_switching_comp_ets_bw_limit_data { + u8 tc_valid_bits; + u8 reserved[15]; + __le16 tc_bw_credit[8]; + + /* 4 bits per tc 0-7, 4th bit is reserved, limit = 2^max */ + __le16 tc_bw_max[2]; + u8 reserved1[28]; +}; + +/* Configure Switching Component Bandwidth Allocation per Tc + * (indirect 0x0417) + */ +struct i40e_aqc_configure_switching_comp_bw_config_data { + u8 tc_valid_bits; + u8 reserved[2]; + u8 absolute_credits; /* bool */ + u8 tc_bw_share_credits[8]; + u8 reserved1[20]; +}; + +/* Query Switching Component Configuration (indirect 0x0418) */ +struct i40e_aqc_query_switching_comp_ets_config_resp { + u8 tc_valid_bits; + u8 reserved[35]; + __le16 port_bw_limit; + u8 reserved1[2]; + u8 tc_bw_max; /* 0-3, limit = 2^max */ + u8 reserved2[23]; +}; + +/* Query PhysicalPort ETS Configuration (indirect 0x0419) */ +struct i40e_aqc_query_port_ets_config_resp { + u8 reserved[4]; + u8 tc_valid_bits; + u8 reserved1; + u8 tc_strict_priority_bits; + u8 reserved2; + u8 tc_bw_share_credits[8]; + __le16 tc_bw_limits[8]; + + /* 4 bits per tc 0-7, 4th bit reserved, limit = 2^max */ + __le16 tc_bw_max[2]; + u8 reserved3[32]; +}; + +/* Query Switching Component Bandwidth Allocation per Traffic Type + * (indirect 0x041A) + */ +struct i40e_aqc_query_switching_comp_bw_config_resp { + u8 tc_valid_bits; + u8 reserved[2]; + u8 absolute_credits_enable; /* bool */ + u8 tc_bw_share_credits[8]; + __le16 tc_bw_limits[8]; + + /* 4 bits per tc 0-7, 4th bit is reserved, limit = 2^max */ + __le16 tc_bw_max[2]; +}; + +/* Suspend/resume port TX traffic + * (direct 0x041B and 0x041C) uses the generic SEID struct + */ + +/* Get and set the active HMC resource profile and status. + * (direct 0x0500) and (direct 0x0501) + */ +struct i40e_aq_get_set_hmc_resource_profile { + u8 pm_profile; + u8 pe_vf_enabled; + u8 reserved[14]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aq_get_set_hmc_resource_profile); + +enum i40e_aq_hmc_profile { + /* I40E_HMC_PROFILE_NO_CHANGE = 0, reserved */ + I40E_HMC_PROFILE_DEFAULT = 1, + I40E_HMC_PROFILE_FAVOR_VF = 2, + I40E_HMC_PROFILE_EQUAL = 3, +}; + +#define I40E_AQ_GET_HMC_RESOURCE_PROFILE_PM_MASK 0xF +#define I40E_AQ_GET_HMC_RESOURCE_PROFILE_COUNT_MASK 0x3F + +/* Get PHY Abilities (indirect 0x0600) uses the generic indirect struct */ + +/* set in param0 for get phy abilities to report qualified modules */ +#define I40E_AQ_PHY_REPORT_QUALIFIED_MODULES 0x0001 +#define I40E_AQ_PHY_REPORT_INITIAL_VALUES 0x0002 + +enum i40e_aq_phy_type { + I40E_PHY_TYPE_SGMII = 0x0, + I40E_PHY_TYPE_1000BASE_KX = 0x1, + I40E_PHY_TYPE_10GBASE_KX4 = 0x2, + I40E_PHY_TYPE_10GBASE_KR = 0x3, + I40E_PHY_TYPE_40GBASE_KR4 = 0x4, + I40E_PHY_TYPE_XAUI = 0x5, + I40E_PHY_TYPE_XFI = 0x6, + I40E_PHY_TYPE_SFI = 0x7, + I40E_PHY_TYPE_XLAUI = 0x8, + I40E_PHY_TYPE_XLPPI = 0x9, + I40E_PHY_TYPE_40GBASE_CR4_CU = 0xA, + I40E_PHY_TYPE_10GBASE_CR1_CU = 0xB, + I40E_PHY_TYPE_100BASE_TX = 0x11, + I40E_PHY_TYPE_1000BASE_T = 0x12, + I40E_PHY_TYPE_10GBASE_T = 0x13, + I40E_PHY_TYPE_10GBASE_SR = 0x14, + I40E_PHY_TYPE_10GBASE_LR = 0x15, + I40E_PHY_TYPE_10GBASE_SFPP_CU = 0x16, + I40E_PHY_TYPE_10GBASE_CR1 = 0x17, + I40E_PHY_TYPE_40GBASE_CR4 = 0x18, + I40E_PHY_TYPE_40GBASE_SR4 = 0x19, + I40E_PHY_TYPE_40GBASE_LR4 = 0x1A, + I40E_PHY_TYPE_20GBASE_KR2 = 0x1B, + I40E_PHY_TYPE_MAX +}; + +#define I40E_LINK_SPEED_100MB_SHIFT 0x1 +#define I40E_LINK_SPEED_1000MB_SHIFT 0x2 +#define I40E_LINK_SPEED_10GB_SHIFT 0x3 +#define I40E_LINK_SPEED_40GB_SHIFT 0x4 +#define I40E_LINK_SPEED_20GB_SHIFT 0x5 + +enum i40e_aq_link_speed { + I40E_LINK_SPEED_UNKNOWN = 0, + I40E_LINK_SPEED_100MB = (1 << I40E_LINK_SPEED_100MB_SHIFT), + I40E_LINK_SPEED_1GB = (1 << I40E_LINK_SPEED_1000MB_SHIFT), + I40E_LINK_SPEED_10GB = (1 << I40E_LINK_SPEED_10GB_SHIFT), + I40E_LINK_SPEED_40GB = (1 << I40E_LINK_SPEED_40GB_SHIFT), + I40E_LINK_SPEED_20GB = (1 << I40E_LINK_SPEED_20GB_SHIFT) +}; + +struct i40e_aqc_module_desc { + u8 oui[3]; + u8 reserved1; + u8 part_number[16]; + u8 revision[4]; + u8 reserved2[8]; +}; + +struct i40e_aq_get_phy_abilities_resp { + __le32 phy_type; /* bitmap using the above enum for offsets */ + u8 link_speed; /* bitmap using the above enum bit patterns */ + u8 abilities; +#define I40E_AQ_PHY_FLAG_PAUSE_TX 0x01 +#define I40E_AQ_PHY_FLAG_PAUSE_RX 0x02 +#define I40E_AQ_PHY_FLAG_LOW_POWER 0x04 +#define I40E_AQ_PHY_FLAG_AN_SHIFT 3 +#define I40E_AQ_PHY_FLAG_AN_MASK (0x3 << I40E_AQ_PHY_FLAG_AN_SHIFT) +#define I40E_AQ_PHY_FLAG_AN_OFF 0x00 /* link forced on */ +#define I40E_AQ_PHY_FLAG_AN_OFF_LINK_DOWN 0x01 +#define I40E_AQ_PHY_FLAG_AN_ON 0x02 +#define I40E_AQ_PHY_FLAG_MODULE_QUAL 0x20 + __le16 eee_capability; +#define I40E_AQ_EEE_100BASE_TX 0x0002 +#define I40E_AQ_EEE_1000BASE_T 0x0004 +#define I40E_AQ_EEE_10GBASE_T 0x0008 +#define I40E_AQ_EEE_1000BASE_KX 0x0010 +#define I40E_AQ_EEE_10GBASE_KX4 0x0020 +#define I40E_AQ_EEE_10GBASE_KR 0x0040 + __le32 eeer_val; + u8 d3_lpan; +#define I40E_AQ_SET_PHY_D3_LPAN_ENA 0x01 + u8 reserved[3]; + u8 phy_id[4]; + u8 module_type[3]; + u8 qualified_module_count; +#define I40E_AQ_PHY_MAX_QMS 16 + struct i40e_aqc_module_desc qualified_module[I40E_AQ_PHY_MAX_QMS]; +}; + +/* Set PHY Config (direct 0x0601) */ +struct i40e_aq_set_phy_config { /* same bits as above in all */ + __le32 phy_type; + u8 link_speed; + u8 abilities; +/* bits 0-2 use the values from get_phy_abilities_resp */ +#define I40E_AQ_PHY_ENABLE_LINK 0x08 +#define I40E_AQ_PHY_ENABLE_AN 0x10 +#define I40E_AQ_PHY_ENABLE_ATOMIC_LINK 0x20 + __le16 eee_capability; + __le32 eeer; + u8 low_power_ctrl; + u8 reserved[3]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aq_set_phy_config); + +/* Set MAC Config command data structure (direct 0x0603) */ +struct i40e_aq_set_mac_config { + __le16 max_frame_size; + u8 params; +#define I40E_AQ_SET_MAC_CONFIG_CRC_EN 0x04 +#define I40E_AQ_SET_MAC_CONFIG_PACING_MASK 0x78 +#define I40E_AQ_SET_MAC_CONFIG_PACING_SHIFT 3 +#define I40E_AQ_SET_MAC_CONFIG_PACING_NONE 0x0 +#define I40E_AQ_SET_MAC_CONFIG_PACING_1B_13TX 0xF +#define I40E_AQ_SET_MAC_CONFIG_PACING_1DW_9TX 0x9 +#define I40E_AQ_SET_MAC_CONFIG_PACING_1DW_4TX 0x8 +#define I40E_AQ_SET_MAC_CONFIG_PACING_3DW_7TX 0x7 +#define I40E_AQ_SET_MAC_CONFIG_PACING_2DW_3TX 0x6 +#define I40E_AQ_SET_MAC_CONFIG_PACING_1DW_1TX 0x5 +#define I40E_AQ_SET_MAC_CONFIG_PACING_3DW_2TX 0x4 +#define I40E_AQ_SET_MAC_CONFIG_PACING_7DW_3TX 0x3 +#define I40E_AQ_SET_MAC_CONFIG_PACING_4DW_1TX 0x2 +#define I40E_AQ_SET_MAC_CONFIG_PACING_9DW_1TX 0x1 + u8 tx_timer_priority; /* bitmap */ + __le16 tx_timer_value; + __le16 fc_refresh_threshold; + u8 reserved[8]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aq_set_mac_config); + +/* Restart Auto-Negotiation (direct 0x605) */ +struct i40e_aqc_set_link_restart_an { + u8 command; +#define I40E_AQ_PHY_RESTART_AN 0x02 +#define I40E_AQ_PHY_LINK_ENABLE 0x04 + u8 reserved[15]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_set_link_restart_an); + +/* Get Link Status cmd & response data structure (direct 0x0607) */ +struct i40e_aqc_get_link_status { + __le16 command_flags; /* only field set on command */ +#define I40E_AQ_LSE_MASK 0x3 +#define I40E_AQ_LSE_NOP 0x0 +#define I40E_AQ_LSE_DISABLE 0x2 +#define I40E_AQ_LSE_ENABLE 0x3 +/* only response uses this flag */ +#define I40E_AQ_LSE_IS_ENABLED 0x1 + u8 phy_type; /* i40e_aq_phy_type */ + u8 link_speed; /* i40e_aq_link_speed */ + u8 link_info; +#define I40E_AQ_LINK_UP 0x01 +#define I40E_AQ_LINK_FAULT 0x02 +#define I40E_AQ_LINK_FAULT_TX 0x04 +#define I40E_AQ_LINK_FAULT_RX 0x08 +#define I40E_AQ_LINK_FAULT_REMOTE 0x10 +#define I40E_AQ_MEDIA_AVAILABLE 0x40 +#define I40E_AQ_SIGNAL_DETECT 0x80 + u8 an_info; +#define I40E_AQ_AN_COMPLETED 0x01 +#define I40E_AQ_LP_AN_ABILITY 0x02 +#define I40E_AQ_PD_FAULT 0x04 +#define I40E_AQ_FEC_EN 0x08 +#define I40E_AQ_PHY_LOW_POWER 0x10 +#define I40E_AQ_LINK_PAUSE_TX 0x20 +#define I40E_AQ_LINK_PAUSE_RX 0x40 +#define I40E_AQ_QUALIFIED_MODULE 0x80 + u8 ext_info; +#define I40E_AQ_LINK_PHY_TEMP_ALARM 0x01 +#define I40E_AQ_LINK_XCESSIVE_ERRORS 0x02 +#define I40E_AQ_LINK_TX_SHIFT 0x02 +#define I40E_AQ_LINK_TX_MASK (0x03 << I40E_AQ_LINK_TX_SHIFT) +#define I40E_AQ_LINK_TX_ACTIVE 0x00 +#define I40E_AQ_LINK_TX_DRAINED 0x01 +#define I40E_AQ_LINK_TX_FLUSHED 0x03 + u8 loopback; /* use defines from i40e_aqc_set_lb_mode */ + __le16 max_frame_size; + u8 config; +#define I40E_AQ_CONFIG_CRC_ENA 0x04 +#define I40E_AQ_CONFIG_PACING_MASK 0x78 + u8 reserved[5]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_get_link_status); + +/* Set event mask command (direct 0x613) */ +struct i40e_aqc_set_phy_int_mask { + u8 reserved[8]; + __le16 event_mask; +#define I40E_AQ_EVENT_LINK_UPDOWN 0x0002 +#define I40E_AQ_EVENT_MEDIA_NA 0x0004 +#define I40E_AQ_EVENT_LINK_FAULT 0x0008 +#define I40E_AQ_EVENT_PHY_TEMP_ALARM 0x0010 +#define I40E_AQ_EVENT_EXCESSIVE_ERRORS 0x0020 +#define I40E_AQ_EVENT_SIGNAL_DETECT 0x0040 +#define I40E_AQ_EVENT_AN_COMPLETED 0x0080 +#define I40E_AQ_EVENT_MODULE_QUAL_FAIL 0x0100 +#define I40E_AQ_EVENT_PORT_TX_SUSPENDED 0x0200 + u8 reserved1[6]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_set_phy_int_mask); + +/* Get Local AN advt register (direct 0x0614) + * Set Local AN advt register (direct 0x0615) + * Get Link Partner AN advt register (direct 0x0616) + */ +struct i40e_aqc_an_advt_reg { + __le32 local_an_reg0; + __le16 local_an_reg1; + u8 reserved[10]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_an_advt_reg); + +/* Set Loopback mode (0x0618) */ +struct i40e_aqc_set_lb_mode { + __le16 lb_mode; +#define I40E_AQ_LB_PHY_LOCAL 0x01 +#define I40E_AQ_LB_PHY_REMOTE 0x02 +#define I40E_AQ_LB_MAC_LOCAL 0x04 + u8 reserved[14]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_set_lb_mode); + +/* Set PHY Reset command (0x0622) */ +struct i40e_aqc_set_phy_reset { + u8 reset_flags; +#define I40E_AQ_PHY_RESET_REQUEST 0x02 + u8 reserved[15]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_set_phy_reset); + +enum i40e_aq_phy_reg_type { + I40E_AQC_PHY_REG_INTERNAL = 0x1, + I40E_AQC_PHY_REG_EXERNAL_BASET = 0x2, + I40E_AQC_PHY_REG_EXERNAL_MODULE = 0x3 +}; + +/* NVM Read command (indirect 0x0701) + * NVM Erase commands (direct 0x0702) + * NVM Update commands (indirect 0x0703) + */ +struct i40e_aqc_nvm_update { + u8 command_flags; +#define I40E_AQ_NVM_LAST_CMD 0x01 +#define I40E_AQ_NVM_FLASH_ONLY 0x80 + u8 module_pointer; + __le16 length; + __le32 offset; + __le32 addr_high; + __le32 addr_low; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_nvm_update); + +/* Send to PF command (indirect 0x0801) id is only used by PF + * Send to VF command (indirect 0x0802) id is only used by PF + * Send to Peer PF command (indirect 0x0803) + */ +struct i40e_aqc_pf_vf_message { + __le32 id; + u8 reserved[4]; + __le32 addr_high; + __le32 addr_low; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_pf_vf_message); + +/* Alternate structure */ + +/* Direct write (direct 0x0900) + * Direct read (direct 0x0902) + */ +struct i40e_aqc_alternate_write { + __le32 address0; + __le32 data0; + __le32 address1; + __le32 data1; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_alternate_write); + +/* Indirect write (indirect 0x0901) + * Indirect read (indirect 0x0903) + */ + +struct i40e_aqc_alternate_ind_write { + __le32 address; + __le32 length; + __le32 addr_high; + __le32 addr_low; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_alternate_ind_write); + +/* Done alternate write (direct 0x0904) + * uses i40e_aq_desc + */ +struct i40e_aqc_alternate_write_done { + __le16 cmd_flags; +#define I40E_AQ_ALTERNATE_MODE_BIOS_MASK 1 +#define I40E_AQ_ALTERNATE_MODE_BIOS_LEGACY 0 +#define I40E_AQ_ALTERNATE_MODE_BIOS_UEFI 1 +#define I40E_AQ_ALTERNATE_RESET_NEEDED 2 + u8 reserved[14]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_alternate_write_done); + +/* Set OEM mode (direct 0x0905) */ +struct i40e_aqc_alternate_set_mode { + __le32 mode; +#define I40E_AQ_ALTERNATE_MODE_NONE 0 +#define I40E_AQ_ALTERNATE_MODE_OEM 1 + u8 reserved[12]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_alternate_set_mode); + +/* Clear port Alternate RAM (direct 0x0906) uses i40e_aq_desc */ + +/* async events 0x10xx */ + +/* Lan Queue Overflow Event (direct, 0x1001) */ +struct i40e_aqc_lan_overflow { + __le32 prtdcb_rupto; + __le32 otx_ctl; + u8 reserved[8]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_lan_overflow); + +/* Get LLDP MIB (indirect 0x0A00) */ +struct i40e_aqc_lldp_get_mib { + u8 type; + u8 reserved1; +#define I40E_AQ_LLDP_MIB_TYPE_MASK 0x3 +#define I40E_AQ_LLDP_MIB_LOCAL 0x0 +#define I40E_AQ_LLDP_MIB_REMOTE 0x1 +#define I40E_AQ_LLDP_MIB_LOCAL_AND_REMOTE 0x2 +#define I40E_AQ_LLDP_BRIDGE_TYPE_MASK 0xC +#define I40E_AQ_LLDP_BRIDGE_TYPE_SHIFT 0x2 +#define I40E_AQ_LLDP_BRIDGE_TYPE_NEAREST_BRIDGE 0x0 +#define I40E_AQ_LLDP_BRIDGE_TYPE_NON_TPMR 0x1 +#define I40E_AQ_LLDP_TX_SHIFT 0x4 +#define I40E_AQ_LLDP_TX_MASK (0x03 << I40E_AQ_LLDP_TX_SHIFT) +/* TX pause flags use I40E_AQ_LINK_TX_* above */ + __le16 local_len; + __le16 remote_len; + u8 reserved2[2]; + __le32 addr_high; + __le32 addr_low; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_lldp_get_mib); + +/* Configure LLDP MIB Change Event (direct 0x0A01) + * also used for the event (with type in the command field) + */ +struct i40e_aqc_lldp_update_mib { + u8 command; +#define I40E_AQ_LLDP_MIB_UPDATE_ENABLE 0x0 +#define I40E_AQ_LLDP_MIB_UPDATE_DISABLE 0x1 + u8 reserved[7]; + __le32 addr_high; + __le32 addr_low; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_lldp_update_mib); + +/* Add LLDP TLV (indirect 0x0A02) + * Delete LLDP TLV (indirect 0x0A04) + */ +struct i40e_aqc_lldp_add_tlv { + u8 type; /* only nearest bridge and non-TPMR from 0x0A00 */ + u8 reserved1[1]; + __le16 len; + u8 reserved2[4]; + __le32 addr_high; + __le32 addr_low; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_lldp_add_tlv); + +/* Update LLDP TLV (indirect 0x0A03) */ +struct i40e_aqc_lldp_update_tlv { + u8 type; /* only nearest bridge and non-TPMR from 0x0A00 */ + u8 reserved; + __le16 old_len; + __le16 new_offset; + __le16 new_len; + __le32 addr_high; + __le32 addr_low; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_lldp_update_tlv); + +/* Stop LLDP (direct 0x0A05) */ +struct i40e_aqc_lldp_stop { + u8 command; +#define I40E_AQ_LLDP_AGENT_STOP 0x0 +#define I40E_AQ_LLDP_AGENT_SHUTDOWN 0x1 + u8 reserved[15]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_lldp_stop); + +/* Start LLDP (direct 0x0A06) */ + +struct i40e_aqc_lldp_start { + u8 command; +#define I40E_AQ_LLDP_AGENT_START 0x1 + u8 reserved[15]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_lldp_start); + +/* Apply MIB changes (0x0A07) + * uses the generic struc as it contains no data + */ + +/* Add Udp Tunnel command and completion (direct 0x0B00) */ +struct i40e_aqc_add_udp_tunnel { + __le16 udp_port; + u8 header_len; /* in DWords, 1 to 15 */ + u8 protocol_type; +#define I40E_AQC_TUNNEL_TYPE_TEREDO 0x0 +#define I40E_AQC_TUNNEL_TYPE_VXLAN 0x2 +#define I40E_AQC_TUNNEL_TYPE_NGE 0x3 + u8 variable_udp_length; +#define I40E_AQC_TUNNEL_FIXED_UDP_LENGTH 0x0 +#define I40E_AQC_TUNNEL_VARIABLE_UDP_LENGTH 0x1 + u8 udp_key_index; +#define I40E_AQC_TUNNEL_KEY_INDEX_VXLAN 0x0 +#define I40E_AQC_TUNNEL_KEY_INDEX_NGE 0x1 +#define I40E_AQC_TUNNEL_KEY_INDEX_PROPRIETARY_UDP 0x2 + u8 reserved[10]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_add_udp_tunnel); + +struct i40e_aqc_add_udp_tunnel_completion { + __le16 udp_port; + u8 filter_entry_index; + u8 multiple_pfs; +#define I40E_AQC_SINGLE_PF 0x0 +#define I40E_AQC_MULTIPLE_PFS 0x1 + u8 total_filters; + u8 reserved[11]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_add_udp_tunnel_completion); + +/* remove UDP Tunnel command (0x0B01) */ +struct i40e_aqc_remove_udp_tunnel { + u8 reserved[2]; + u8 index; /* 0 to 15 */ + u8 pf_filters; + u8 total_filters; + u8 reserved2[11]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_remove_udp_tunnel); + +struct i40e_aqc_del_udp_tunnel_completion { + __le16 udp_port; + u8 index; /* 0 to 15 */ + u8 multiple_pfs; + u8 total_filters_used; + u8 reserved; + u8 tunnels_free; + u8 reserved1[9]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_del_udp_tunnel_completion); + +/* tunnel key structure 0x0B10 */ + +struct i40e_aqc_tunnel_key_structure_A0 { + __le16 key1_off; + __le16 key1_len; + __le16 key2_off; + __le16 key2_len; + __le16 flags; +#define I40E_AQC_TUNNEL_KEY_STRUCT_OVERRIDE 0x01 +/* response flags */ +#define I40E_AQC_TUNNEL_KEY_STRUCT_SUCCESS 0x01 +#define I40E_AQC_TUNNEL_KEY_STRUCT_MODIFIED 0x02 +#define I40E_AQC_TUNNEL_KEY_STRUCT_OVERRIDDEN 0x03 + u8 resreved[6]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_tunnel_key_structure_A0); + +struct i40e_aqc_tunnel_key_structure { + u8 key1_off; + u8 key2_off; + u8 key1_len; /* 0 to 15 */ + u8 key2_len; /* 0 to 15 */ + u8 flags; +#define I40E_AQC_TUNNEL_KEY_STRUCT_OVERRIDE 0x01 +/* response flags */ +#define I40E_AQC_TUNNEL_KEY_STRUCT_SUCCESS 0x01 +#define I40E_AQC_TUNNEL_KEY_STRUCT_MODIFIED 0x02 +#define I40E_AQC_TUNNEL_KEY_STRUCT_OVERRIDDEN 0x03 + u8 network_key_index; +#define I40E_AQC_NETWORK_KEY_INDEX_VXLAN 0x0 +#define I40E_AQC_NETWORK_KEY_INDEX_NGE 0x1 +#define I40E_AQC_NETWORK_KEY_INDEX_FLEX_MAC_IN_UDP 0x2 +#define I40E_AQC_NETWORK_KEY_INDEX_GRE 0x3 + u8 reserved[10]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_tunnel_key_structure); + +/* OEM mode commands (direct 0xFE0x) */ +struct i40e_aqc_oem_param_change { + __le32 param_type; +#define I40E_AQ_OEM_PARAM_TYPE_PF_CTL 0 +#define I40E_AQ_OEM_PARAM_TYPE_BW_CTL 1 +#define I40E_AQ_OEM_PARAM_MAC 2 + __le32 param_value1; + u8 param_value2[8]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_oem_param_change); + +struct i40e_aqc_oem_state_change { + __le32 state; +#define I40E_AQ_OEM_STATE_LINK_DOWN 0x0 +#define I40E_AQ_OEM_STATE_LINK_UP 0x1 + u8 reserved[12]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_oem_state_change); + +/* debug commands */ + +/* get device id (0xFF00) uses the generic structure */ + +/* set test more (0xFF01, internal) */ + +struct i40e_acq_set_test_mode { + u8 mode; +#define I40E_AQ_TEST_PARTIAL 0 +#define I40E_AQ_TEST_FULL 1 +#define I40E_AQ_TEST_NVM 2 + u8 reserved[3]; + u8 command; +#define I40E_AQ_TEST_OPEN 0 +#define I40E_AQ_TEST_CLOSE 1 +#define I40E_AQ_TEST_INC 2 + u8 reserved2[3]; + __le32 address_high; + __le32 address_low; +}; + +I40E_CHECK_CMD_LENGTH(i40e_acq_set_test_mode); + +/* Debug Read Register command (0xFF03) + * Debug Write Register command (0xFF04) + */ +struct i40e_aqc_debug_reg_read_write { + __le32 reserved; + __le32 address; + __le32 value_high; + __le32 value_low; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_debug_reg_read_write); + +/* Scatter/gather Reg Read (indirect 0xFF05) + * Scatter/gather Reg Write (indirect 0xFF06) + */ + +/* i40e_aq_desc is used for the command */ +struct i40e_aqc_debug_reg_sg_element_data { + __le32 address; + __le32 value; +}; + +/* Debug Modify register (direct 0xFF07) */ +struct i40e_aqc_debug_modify_reg { + __le32 address; + __le32 value; + __le32 clear_mask; + __le32 set_mask; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_debug_modify_reg); + +/* dump internal data (0xFF08, indirect) */ + +#define I40E_AQ_CLUSTER_ID_AUX 0 +#define I40E_AQ_CLUSTER_ID_SWITCH_FLU 1 +#define I40E_AQ_CLUSTER_ID_TXSCHED 2 +#define I40E_AQ_CLUSTER_ID_HMC 3 +#define I40E_AQ_CLUSTER_ID_MAC0 4 +#define I40E_AQ_CLUSTER_ID_MAC1 5 +#define I40E_AQ_CLUSTER_ID_MAC2 6 +#define I40E_AQ_CLUSTER_ID_MAC3 7 +#define I40E_AQ_CLUSTER_ID_DCB 8 +#define I40E_AQ_CLUSTER_ID_EMP_MEM 9 +#define I40E_AQ_CLUSTER_ID_PKT_BUF 10 +#define I40E_AQ_CLUSTER_ID_ALTRAM 11 + +struct i40e_aqc_debug_dump_internals { + u8 cluster_id; + u8 table_id; + __le16 data_size; + __le32 idx; + __le32 address_high; + __le32 address_low; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_debug_dump_internals); + +struct i40e_aqc_debug_modify_internals { + u8 cluster_id; + u8 cluster_specific_params[7]; + __le32 address_high; + __le32 address_low; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_debug_modify_internals); + +#endif --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40evf/i40e_alloc.h +++ linux-3.13.0/drivers/net/ethernet/intel/i40evf/i40e_alloc.h @@ -0,0 +1,55 @@ +/******************************************************************************* + * + * Intel Ethernet Controller XL710 Family Linux Virtual Function Driver + * Copyright(c) 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. + * + * The full GNU General Public License is included in this distribution in + * the file called "COPYING". + * + * Contact Information: + * e1000-devel Mailing List + * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 + * + ******************************************************************************/ + +#ifndef _I40E_ALLOC_H_ +#define _I40E_ALLOC_H_ + +struct i40e_hw; + +/* Memory allocation types */ +enum i40e_memory_type { + i40e_mem_arq_buf = 0, /* ARQ indirect command buffer */ + i40e_mem_asq_buf = 1, + i40e_mem_atq_buf = 2, /* ATQ indirect command buffer */ + i40e_mem_arq_ring = 3, /* ARQ descriptor ring */ + i40e_mem_atq_ring = 4, /* ATQ descriptor ring */ + i40e_mem_pd = 5, /* Page Descriptor */ + i40e_mem_bp = 6, /* Backing Page - 4KB */ + i40e_mem_bp_jumbo = 7, /* Backing Page - > 4KB */ + i40e_mem_reserved +}; + +/* prototype for functions used for dynamic memory allocation */ +i40e_status i40e_allocate_dma_mem(struct i40e_hw *hw, + struct i40e_dma_mem *mem, + enum i40e_memory_type type, + u64 size, u32 alignment); +i40e_status i40e_free_dma_mem(struct i40e_hw *hw, + struct i40e_dma_mem *mem); +i40e_status i40e_allocate_virt_mem(struct i40e_hw *hw, + struct i40e_virt_mem *mem, + u32 size); +i40e_status i40e_free_virt_mem(struct i40e_hw *hw, + struct i40e_virt_mem *mem); + +#endif /* _I40E_ALLOC_H_ */ --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40evf/i40e_common.c +++ linux-3.13.0/drivers/net/ethernet/intel/i40evf/i40e_common.c @@ -0,0 +1,619 @@ +/******************************************************************************* + * + * Intel Ethernet Controller XL710 Family Linux Virtual Function Driver + * Copyright(c) 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. + * + * The full GNU General Public License is included in this distribution in + * the file called "COPYING". + * + * Contact Information: + * e1000-devel Mailing List + * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 + * + ******************************************************************************/ + +#include "i40e_type.h" +#include "i40e_adminq.h" +#include "i40e_prototype.h" +#include "i40e_virtchnl.h" + +/** + * i40e_set_mac_type - Sets MAC type + * @hw: pointer to the HW structure + * + * This function sets the mac type of the adapter based on the + * vendor ID and device ID stored in the hw structure. + **/ +i40e_status i40e_set_mac_type(struct i40e_hw *hw) +{ + i40e_status status = 0; + + if (hw->vendor_id == PCI_VENDOR_ID_INTEL) { + switch (hw->device_id) { + case I40E_DEV_ID_SFP_XL710: + case I40E_DEV_ID_SFP_X710: + case I40E_DEV_ID_QEMU: + case I40E_DEV_ID_KX_A: + case I40E_DEV_ID_KX_B: + case I40E_DEV_ID_KX_C: + case I40E_DEV_ID_KX_D: + case I40E_DEV_ID_QSFP_A: + case I40E_DEV_ID_QSFP_B: + case I40E_DEV_ID_QSFP_C: + hw->mac.type = I40E_MAC_XL710; + break; + case I40E_DEV_ID_VF: + case I40E_DEV_ID_VF_HV: + hw->mac.type = I40E_MAC_VF; + break; + default: + hw->mac.type = I40E_MAC_GENERIC; + break; + } + } else { + status = I40E_ERR_DEVICE_NOT_SUPPORTED; + } + + hw_dbg(hw, "i40e_set_mac_type found mac: %d, returns: %d\n", + hw->mac.type, status); + return status; +} + +/** + * i40evf_debug_aq + * @hw: debug mask related to admin queue + * @mask: debug mask + * @desc: pointer to admin queue descriptor + * @buffer: pointer to command buffer + * + * Dumps debug log about adminq command with descriptor contents. + **/ +void i40evf_debug_aq(struct i40e_hw *hw, enum i40e_debug_mask mask, void *desc, + void *buffer) +{ + struct i40e_aq_desc *aq_desc = (struct i40e_aq_desc *)desc; + u8 *aq_buffer = (u8 *)buffer; + u32 data[4]; + u32 i = 0; + + if ((!(mask & hw->debug_mask)) || (desc == NULL)) + return; + + i40e_debug(hw, mask, + "AQ CMD: opcode 0x%04X, flags 0x%04X, datalen 0x%04X, retval 0x%04X\n", + aq_desc->opcode, aq_desc->flags, aq_desc->datalen, + aq_desc->retval); + i40e_debug(hw, mask, "\tcookie (h,l) 0x%08X 0x%08X\n", + aq_desc->cookie_high, aq_desc->cookie_low); + i40e_debug(hw, mask, "\tparam (0,1) 0x%08X 0x%08X\n", + aq_desc->params.internal.param0, + aq_desc->params.internal.param1); + i40e_debug(hw, mask, "\taddr (h,l) 0x%08X 0x%08X\n", + aq_desc->params.external.addr_high, + aq_desc->params.external.addr_low); + + if ((buffer != NULL) && (aq_desc->datalen != 0)) { + memset(data, 0, sizeof(data)); + i40e_debug(hw, mask, "AQ CMD Buffer:\n"); + for (i = 0; i < le16_to_cpu(aq_desc->datalen); i++) { + data[((i % 16) / 4)] |= + ((u32)aq_buffer[i]) << (8 * (i % 4)); + if ((i % 16) == 15) { + i40e_debug(hw, mask, + "\t0x%04X %08X %08X %08X %08X\n", + i - 15, data[0], data[1], data[2], + data[3]); + memset(data, 0, sizeof(data)); + } + } + if ((i % 16) != 0) + i40e_debug(hw, mask, "\t0x%04X %08X %08X %08X %08X\n", + i - (i % 16), data[0], data[1], data[2], + data[3]); + } +} + +/** + * i40evf_check_asq_alive + * @hw: pointer to the hw struct + * + * Returns true if Queue is enabled else false. + **/ +bool i40evf_check_asq_alive(struct i40e_hw *hw) +{ + return !!(rd32(hw, hw->aq.asq.len) & I40E_PF_ATQLEN_ATQENABLE_MASK); +} + +/** + * i40evf_aq_queue_shutdown + * @hw: pointer to the hw struct + * @unloading: is the driver unloading itself + * + * Tell the Firmware that we're shutting down the AdminQ and whether + * or not the driver is unloading as well. + **/ +i40e_status i40evf_aq_queue_shutdown(struct i40e_hw *hw, + bool unloading) +{ + struct i40e_aq_desc desc; + struct i40e_aqc_queue_shutdown *cmd = + (struct i40e_aqc_queue_shutdown *)&desc.params.raw; + i40e_status status; + + i40evf_fill_default_direct_cmd_desc(&desc, + i40e_aqc_opc_queue_shutdown); + + if (unloading) + cmd->driver_unloading = cpu_to_le32(I40E_AQ_DRIVER_UNLOADING); + status = i40evf_asq_send_command(hw, &desc, NULL, 0, NULL); + + return status; +} + + +/* The i40evf_ptype_lookup table is used to convert from the 8-bit ptype in the + * hardware to a bit-field that can be used by SW to more easily determine the + * packet type. + * + * Macros are used to shorten the table lines and make this table human + * readable. + * + * We store the PTYPE in the top byte of the bit field - this is just so that + * we can check that the table doesn't have a row missing, as the index into + * the table should be the PTYPE. + * + * Typical work flow: + * + * IF NOT i40evf_ptype_lookup[ptype].known + * THEN + * Packet is unknown + * ELSE IF i40evf_ptype_lookup[ptype].outer_ip == I40E_RX_PTYPE_OUTER_IP + * Use the rest of the fields to look at the tunnels, inner protocols, etc + * ELSE + * Use the enum i40e_rx_l2_ptype to decode the packet type + * ENDIF + */ + +/* macro to make the table lines short */ +#define I40E_PTT(PTYPE, OUTER_IP, OUTER_IP_VER, OUTER_FRAG, T, TE, TEF, I, PL)\ + { PTYPE, \ + 1, \ + I40E_RX_PTYPE_OUTER_##OUTER_IP, \ + I40E_RX_PTYPE_OUTER_##OUTER_IP_VER, \ + I40E_RX_PTYPE_##OUTER_FRAG, \ + I40E_RX_PTYPE_TUNNEL_##T, \ + I40E_RX_PTYPE_TUNNEL_END_##TE, \ + I40E_RX_PTYPE_##TEF, \ + I40E_RX_PTYPE_INNER_PROT_##I, \ + I40E_RX_PTYPE_PAYLOAD_LAYER_##PL } + +#define I40E_PTT_UNUSED_ENTRY(PTYPE) \ + { PTYPE, 0, 0, 0, 0, 0, 0, 0, 0, 0 } + +/* shorter macros makes the table fit but are terse */ +#define I40E_RX_PTYPE_NOF I40E_RX_PTYPE_NOT_FRAG +#define I40E_RX_PTYPE_FRG I40E_RX_PTYPE_FRAG +#define I40E_RX_PTYPE_INNER_PROT_TS I40E_RX_PTYPE_INNER_PROT_TIMESYNC + +/* Lookup table mapping the HW PTYPE to the bit field for decoding */ +struct i40e_rx_ptype_decoded i40evf_ptype_lookup[] = { + /* L2 Packet types */ + I40E_PTT_UNUSED_ENTRY(0), + I40E_PTT(1, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY2), + I40E_PTT(2, L2, NONE, NOF, NONE, NONE, NOF, TS, PAY2), + I40E_PTT(3, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY2), + I40E_PTT_UNUSED_ENTRY(4), + I40E_PTT_UNUSED_ENTRY(5), + I40E_PTT(6, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY2), + I40E_PTT(7, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY2), + I40E_PTT_UNUSED_ENTRY(8), + I40E_PTT_UNUSED_ENTRY(9), + I40E_PTT(10, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY2), + I40E_PTT(11, L2, NONE, NOF, NONE, NONE, NOF, NONE, NONE), + I40E_PTT(12, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3), + I40E_PTT(13, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3), + I40E_PTT(14, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3), + I40E_PTT(15, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3), + I40E_PTT(16, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3), + I40E_PTT(17, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3), + I40E_PTT(18, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3), + I40E_PTT(19, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3), + I40E_PTT(20, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3), + I40E_PTT(21, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3), + + /* Non Tunneled IPv4 */ + I40E_PTT(22, IP, IPV4, FRG, NONE, NONE, NOF, NONE, PAY3), + I40E_PTT(23, IP, IPV4, NOF, NONE, NONE, NOF, NONE, PAY3), + I40E_PTT(24, IP, IPV4, NOF, NONE, NONE, NOF, UDP, PAY4), + I40E_PTT_UNUSED_ENTRY(25), + I40E_PTT(26, IP, IPV4, NOF, NONE, NONE, NOF, TCP, PAY4), + I40E_PTT(27, IP, IPV4, NOF, NONE, NONE, NOF, SCTP, PAY4), + I40E_PTT(28, IP, IPV4, NOF, NONE, NONE, NOF, ICMP, PAY4), + + /* IPv4 --> IPv4 */ + I40E_PTT(29, IP, IPV4, NOF, IP_IP, IPV4, FRG, NONE, PAY3), + I40E_PTT(30, IP, IPV4, NOF, IP_IP, IPV4, NOF, NONE, PAY3), + I40E_PTT(31, IP, IPV4, NOF, IP_IP, IPV4, NOF, UDP, PAY4), + I40E_PTT_UNUSED_ENTRY(32), + I40E_PTT(33, IP, IPV4, NOF, IP_IP, IPV4, NOF, TCP, PAY4), + I40E_PTT(34, IP, IPV4, NOF, IP_IP, IPV4, NOF, SCTP, PAY4), + I40E_PTT(35, IP, IPV4, NOF, IP_IP, IPV4, NOF, ICMP, PAY4), + + /* IPv4 --> IPv6 */ + I40E_PTT(36, IP, IPV4, NOF, IP_IP, IPV6, FRG, NONE, PAY3), + I40E_PTT(37, IP, IPV4, NOF, IP_IP, IPV6, NOF, NONE, PAY3), + I40E_PTT(38, IP, IPV4, NOF, IP_IP, IPV6, NOF, UDP, PAY4), + I40E_PTT_UNUSED_ENTRY(39), + I40E_PTT(40, IP, IPV4, NOF, IP_IP, IPV6, NOF, TCP, PAY4), + I40E_PTT(41, IP, IPV4, NOF, IP_IP, IPV6, NOF, SCTP, PAY4), + I40E_PTT(42, IP, IPV4, NOF, IP_IP, IPV6, NOF, ICMP, PAY4), + + /* IPv4 --> GRE/NAT */ + I40E_PTT(43, IP, IPV4, NOF, IP_GRENAT, NONE, NOF, NONE, PAY3), + + /* IPv4 --> GRE/NAT --> IPv4 */ + I40E_PTT(44, IP, IPV4, NOF, IP_GRENAT, IPV4, FRG, NONE, PAY3), + I40E_PTT(45, IP, IPV4, NOF, IP_GRENAT, IPV4, NOF, NONE, PAY3), + I40E_PTT(46, IP, IPV4, NOF, IP_GRENAT, IPV4, NOF, UDP, PAY4), + I40E_PTT_UNUSED_ENTRY(47), + I40E_PTT(48, IP, IPV4, NOF, IP_GRENAT, IPV4, NOF, TCP, PAY4), + I40E_PTT(49, IP, IPV4, NOF, IP_GRENAT, IPV4, NOF, SCTP, PAY4), + I40E_PTT(50, IP, IPV4, NOF, IP_GRENAT, IPV4, NOF, ICMP, PAY4), + + /* IPv4 --> GRE/NAT --> IPv6 */ + I40E_PTT(51, IP, IPV4, NOF, IP_GRENAT, IPV6, FRG, NONE, PAY3), + I40E_PTT(52, IP, IPV4, NOF, IP_GRENAT, IPV6, NOF, NONE, PAY3), + I40E_PTT(53, IP, IPV4, NOF, IP_GRENAT, IPV6, NOF, UDP, PAY4), + I40E_PTT_UNUSED_ENTRY(54), + I40E_PTT(55, IP, IPV4, NOF, IP_GRENAT, IPV6, NOF, TCP, PAY4), + I40E_PTT(56, IP, IPV4, NOF, IP_GRENAT, IPV6, NOF, SCTP, PAY4), + I40E_PTT(57, IP, IPV4, NOF, IP_GRENAT, IPV6, NOF, ICMP, PAY4), + + /* IPv4 --> GRE/NAT --> MAC */ + I40E_PTT(58, IP, IPV4, NOF, IP_GRENAT_MAC, NONE, NOF, NONE, PAY3), + + /* IPv4 --> GRE/NAT --> MAC --> IPv4 */ + I40E_PTT(59, IP, IPV4, NOF, IP_GRENAT_MAC, IPV4, FRG, NONE, PAY3), + I40E_PTT(60, IP, IPV4, NOF, IP_GRENAT_MAC, IPV4, NOF, NONE, PAY3), + I40E_PTT(61, IP, IPV4, NOF, IP_GRENAT_MAC, IPV4, NOF, UDP, PAY4), + I40E_PTT_UNUSED_ENTRY(62), + I40E_PTT(63, IP, IPV4, NOF, IP_GRENAT_MAC, IPV4, NOF, TCP, PAY4), + I40E_PTT(64, IP, IPV4, NOF, IP_GRENAT_MAC, IPV4, NOF, SCTP, PAY4), + I40E_PTT(65, IP, IPV4, NOF, IP_GRENAT_MAC, IPV4, NOF, ICMP, PAY4), + + /* IPv4 --> GRE/NAT -> MAC --> IPv6 */ + I40E_PTT(66, IP, IPV4, NOF, IP_GRENAT_MAC, IPV6, FRG, NONE, PAY3), + I40E_PTT(67, IP, IPV4, NOF, IP_GRENAT_MAC, IPV6, NOF, NONE, PAY3), + I40E_PTT(68, IP, IPV4, NOF, IP_GRENAT_MAC, IPV6, NOF, UDP, PAY4), + I40E_PTT_UNUSED_ENTRY(69), + I40E_PTT(70, IP, IPV4, NOF, IP_GRENAT_MAC, IPV6, NOF, TCP, PAY4), + I40E_PTT(71, IP, IPV4, NOF, IP_GRENAT_MAC, IPV6, NOF, SCTP, PAY4), + I40E_PTT(72, IP, IPV4, NOF, IP_GRENAT_MAC, IPV6, NOF, ICMP, PAY4), + + /* IPv4 --> GRE/NAT --> MAC/VLAN */ + I40E_PTT(73, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, NONE, NOF, NONE, PAY3), + + /* IPv4 ---> GRE/NAT -> MAC/VLAN --> IPv4 */ + I40E_PTT(74, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV4, FRG, NONE, PAY3), + I40E_PTT(75, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, NONE, PAY3), + I40E_PTT(76, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, UDP, PAY4), + I40E_PTT_UNUSED_ENTRY(77), + I40E_PTT(78, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, TCP, PAY4), + I40E_PTT(79, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, SCTP, PAY4), + I40E_PTT(80, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, ICMP, PAY4), + + /* IPv4 -> GRE/NAT -> MAC/VLAN --> IPv6 */ + I40E_PTT(81, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV6, FRG, NONE, PAY3), + I40E_PTT(82, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, NONE, PAY3), + I40E_PTT(83, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, UDP, PAY4), + I40E_PTT_UNUSED_ENTRY(84), + I40E_PTT(85, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, TCP, PAY4), + I40E_PTT(86, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, SCTP, PAY4), + I40E_PTT(87, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, ICMP, PAY4), + + /* Non Tunneled IPv6 */ + I40E_PTT(88, IP, IPV6, FRG, NONE, NONE, NOF, NONE, PAY3), + I40E_PTT(89, IP, IPV6, NOF, NONE, NONE, NOF, NONE, PAY3), + I40E_PTT(90, IP, IPV6, NOF, NONE, NONE, NOF, UDP, PAY3), + I40E_PTT_UNUSED_ENTRY(91), + I40E_PTT(92, IP, IPV6, NOF, NONE, NONE, NOF, TCP, PAY4), + I40E_PTT(93, IP, IPV6, NOF, NONE, NONE, NOF, SCTP, PAY4), + I40E_PTT(94, IP, IPV6, NOF, NONE, NONE, NOF, ICMP, PAY4), + + /* IPv6 --> IPv4 */ + I40E_PTT(95, IP, IPV6, NOF, IP_IP, IPV4, FRG, NONE, PAY3), + I40E_PTT(96, IP, IPV6, NOF, IP_IP, IPV4, NOF, NONE, PAY3), + I40E_PTT(97, IP, IPV6, NOF, IP_IP, IPV4, NOF, UDP, PAY4), + I40E_PTT_UNUSED_ENTRY(98), + I40E_PTT(99, IP, IPV6, NOF, IP_IP, IPV4, NOF, TCP, PAY4), + I40E_PTT(100, IP, IPV6, NOF, IP_IP, IPV4, NOF, SCTP, PAY4), + I40E_PTT(101, IP, IPV6, NOF, IP_IP, IPV4, NOF, ICMP, PAY4), + + /* IPv6 --> IPv6 */ + I40E_PTT(102, IP, IPV6, NOF, IP_IP, IPV6, FRG, NONE, PAY3), + I40E_PTT(103, IP, IPV6, NOF, IP_IP, IPV6, NOF, NONE, PAY3), + I40E_PTT(104, IP, IPV6, NOF, IP_IP, IPV6, NOF, UDP, PAY4), + I40E_PTT_UNUSED_ENTRY(105), + I40E_PTT(106, IP, IPV6, NOF, IP_IP, IPV6, NOF, TCP, PAY4), + I40E_PTT(107, IP, IPV6, NOF, IP_IP, IPV6, NOF, SCTP, PAY4), + I40E_PTT(108, IP, IPV6, NOF, IP_IP, IPV6, NOF, ICMP, PAY4), + + /* IPv6 --> GRE/NAT */ + I40E_PTT(109, IP, IPV6, NOF, IP_GRENAT, NONE, NOF, NONE, PAY3), + + /* IPv6 --> GRE/NAT -> IPv4 */ + I40E_PTT(110, IP, IPV6, NOF, IP_GRENAT, IPV4, FRG, NONE, PAY3), + I40E_PTT(111, IP, IPV6, NOF, IP_GRENAT, IPV4, NOF, NONE, PAY3), + I40E_PTT(112, IP, IPV6, NOF, IP_GRENAT, IPV4, NOF, UDP, PAY4), + I40E_PTT_UNUSED_ENTRY(113), + I40E_PTT(114, IP, IPV6, NOF, IP_GRENAT, IPV4, NOF, TCP, PAY4), + I40E_PTT(115, IP, IPV6, NOF, IP_GRENAT, IPV4, NOF, SCTP, PAY4), + I40E_PTT(116, IP, IPV6, NOF, IP_GRENAT, IPV4, NOF, ICMP, PAY4), + + /* IPv6 --> GRE/NAT -> IPv6 */ + I40E_PTT(117, IP, IPV6, NOF, IP_GRENAT, IPV6, FRG, NONE, PAY3), + I40E_PTT(118, IP, IPV6, NOF, IP_GRENAT, IPV6, NOF, NONE, PAY3), + I40E_PTT(119, IP, IPV6, NOF, IP_GRENAT, IPV6, NOF, UDP, PAY4), + I40E_PTT_UNUSED_ENTRY(120), + I40E_PTT(121, IP, IPV6, NOF, IP_GRENAT, IPV6, NOF, TCP, PAY4), + I40E_PTT(122, IP, IPV6, NOF, IP_GRENAT, IPV6, NOF, SCTP, PAY4), + I40E_PTT(123, IP, IPV6, NOF, IP_GRENAT, IPV6, NOF, ICMP, PAY4), + + /* IPv6 --> GRE/NAT -> MAC */ + I40E_PTT(124, IP, IPV6, NOF, IP_GRENAT_MAC, NONE, NOF, NONE, PAY3), + + /* IPv6 --> GRE/NAT -> MAC -> IPv4 */ + I40E_PTT(125, IP, IPV6, NOF, IP_GRENAT_MAC, IPV4, FRG, NONE, PAY3), + I40E_PTT(126, IP, IPV6, NOF, IP_GRENAT_MAC, IPV4, NOF, NONE, PAY3), + I40E_PTT(127, IP, IPV6, NOF, IP_GRENAT_MAC, IPV4, NOF, UDP, PAY4), + I40E_PTT_UNUSED_ENTRY(128), + I40E_PTT(129, IP, IPV6, NOF, IP_GRENAT_MAC, IPV4, NOF, TCP, PAY4), + I40E_PTT(130, IP, IPV6, NOF, IP_GRENAT_MAC, IPV4, NOF, SCTP, PAY4), + I40E_PTT(131, IP, IPV6, NOF, IP_GRENAT_MAC, IPV4, NOF, ICMP, PAY4), + + /* IPv6 --> GRE/NAT -> MAC -> IPv6 */ + I40E_PTT(132, IP, IPV6, NOF, IP_GRENAT_MAC, IPV6, FRG, NONE, PAY3), + I40E_PTT(133, IP, IPV6, NOF, IP_GRENAT_MAC, IPV6, NOF, NONE, PAY3), + I40E_PTT(134, IP, IPV6, NOF, IP_GRENAT_MAC, IPV6, NOF, UDP, PAY4), + I40E_PTT_UNUSED_ENTRY(135), + I40E_PTT(136, IP, IPV6, NOF, IP_GRENAT_MAC, IPV6, NOF, TCP, PAY4), + I40E_PTT(137, IP, IPV6, NOF, IP_GRENAT_MAC, IPV6, NOF, SCTP, PAY4), + I40E_PTT(138, IP, IPV6, NOF, IP_GRENAT_MAC, IPV6, NOF, ICMP, PAY4), + + /* IPv6 --> GRE/NAT -> MAC/VLAN */ + I40E_PTT(139, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, NONE, NOF, NONE, PAY3), + + /* IPv6 --> GRE/NAT -> MAC/VLAN --> IPv4 */ + I40E_PTT(140, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV4, FRG, NONE, PAY3), + I40E_PTT(141, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, NONE, PAY3), + I40E_PTT(142, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, UDP, PAY4), + I40E_PTT_UNUSED_ENTRY(143), + I40E_PTT(144, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, TCP, PAY4), + I40E_PTT(145, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, SCTP, PAY4), + I40E_PTT(146, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, ICMP, PAY4), + + /* IPv6 --> GRE/NAT -> MAC/VLAN --> IPv6 */ + I40E_PTT(147, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV6, FRG, NONE, PAY3), + I40E_PTT(148, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, NONE, PAY3), + I40E_PTT(149, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, UDP, PAY4), + I40E_PTT_UNUSED_ENTRY(150), + I40E_PTT(151, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, TCP, PAY4), + I40E_PTT(152, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, SCTP, PAY4), + I40E_PTT(153, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, ICMP, PAY4), + + /* unused entries */ + I40E_PTT_UNUSED_ENTRY(154), + I40E_PTT_UNUSED_ENTRY(155), + I40E_PTT_UNUSED_ENTRY(156), + I40E_PTT_UNUSED_ENTRY(157), + I40E_PTT_UNUSED_ENTRY(158), + I40E_PTT_UNUSED_ENTRY(159), + + I40E_PTT_UNUSED_ENTRY(160), + I40E_PTT_UNUSED_ENTRY(161), + I40E_PTT_UNUSED_ENTRY(162), + I40E_PTT_UNUSED_ENTRY(163), + I40E_PTT_UNUSED_ENTRY(164), + I40E_PTT_UNUSED_ENTRY(165), + I40E_PTT_UNUSED_ENTRY(166), + I40E_PTT_UNUSED_ENTRY(167), + I40E_PTT_UNUSED_ENTRY(168), + I40E_PTT_UNUSED_ENTRY(169), + + I40E_PTT_UNUSED_ENTRY(170), + I40E_PTT_UNUSED_ENTRY(171), + I40E_PTT_UNUSED_ENTRY(172), + I40E_PTT_UNUSED_ENTRY(173), + I40E_PTT_UNUSED_ENTRY(174), + I40E_PTT_UNUSED_ENTRY(175), + I40E_PTT_UNUSED_ENTRY(176), + I40E_PTT_UNUSED_ENTRY(177), + I40E_PTT_UNUSED_ENTRY(178), + I40E_PTT_UNUSED_ENTRY(179), + + I40E_PTT_UNUSED_ENTRY(180), + I40E_PTT_UNUSED_ENTRY(181), + I40E_PTT_UNUSED_ENTRY(182), + I40E_PTT_UNUSED_ENTRY(183), + I40E_PTT_UNUSED_ENTRY(184), + I40E_PTT_UNUSED_ENTRY(185), + I40E_PTT_UNUSED_ENTRY(186), + I40E_PTT_UNUSED_ENTRY(187), + I40E_PTT_UNUSED_ENTRY(188), + I40E_PTT_UNUSED_ENTRY(189), + + I40E_PTT_UNUSED_ENTRY(190), + I40E_PTT_UNUSED_ENTRY(191), + I40E_PTT_UNUSED_ENTRY(192), + I40E_PTT_UNUSED_ENTRY(193), + I40E_PTT_UNUSED_ENTRY(194), + I40E_PTT_UNUSED_ENTRY(195), + I40E_PTT_UNUSED_ENTRY(196), + I40E_PTT_UNUSED_ENTRY(197), + I40E_PTT_UNUSED_ENTRY(198), + I40E_PTT_UNUSED_ENTRY(199), + + I40E_PTT_UNUSED_ENTRY(200), + I40E_PTT_UNUSED_ENTRY(201), + I40E_PTT_UNUSED_ENTRY(202), + I40E_PTT_UNUSED_ENTRY(203), + I40E_PTT_UNUSED_ENTRY(204), + I40E_PTT_UNUSED_ENTRY(205), + I40E_PTT_UNUSED_ENTRY(206), + I40E_PTT_UNUSED_ENTRY(207), + I40E_PTT_UNUSED_ENTRY(208), + I40E_PTT_UNUSED_ENTRY(209), + + I40E_PTT_UNUSED_ENTRY(210), + I40E_PTT_UNUSED_ENTRY(211), + I40E_PTT_UNUSED_ENTRY(212), + I40E_PTT_UNUSED_ENTRY(213), + I40E_PTT_UNUSED_ENTRY(214), + I40E_PTT_UNUSED_ENTRY(215), + I40E_PTT_UNUSED_ENTRY(216), + I40E_PTT_UNUSED_ENTRY(217), + I40E_PTT_UNUSED_ENTRY(218), + I40E_PTT_UNUSED_ENTRY(219), + + I40E_PTT_UNUSED_ENTRY(220), + I40E_PTT_UNUSED_ENTRY(221), + I40E_PTT_UNUSED_ENTRY(222), + I40E_PTT_UNUSED_ENTRY(223), + I40E_PTT_UNUSED_ENTRY(224), + I40E_PTT_UNUSED_ENTRY(225), + I40E_PTT_UNUSED_ENTRY(226), + I40E_PTT_UNUSED_ENTRY(227), + I40E_PTT_UNUSED_ENTRY(228), + I40E_PTT_UNUSED_ENTRY(229), + + I40E_PTT_UNUSED_ENTRY(230), + I40E_PTT_UNUSED_ENTRY(231), + I40E_PTT_UNUSED_ENTRY(232), + I40E_PTT_UNUSED_ENTRY(233), + I40E_PTT_UNUSED_ENTRY(234), + I40E_PTT_UNUSED_ENTRY(235), + I40E_PTT_UNUSED_ENTRY(236), + I40E_PTT_UNUSED_ENTRY(237), + I40E_PTT_UNUSED_ENTRY(238), + I40E_PTT_UNUSED_ENTRY(239), + + I40E_PTT_UNUSED_ENTRY(240), + I40E_PTT_UNUSED_ENTRY(241), + I40E_PTT_UNUSED_ENTRY(242), + I40E_PTT_UNUSED_ENTRY(243), + I40E_PTT_UNUSED_ENTRY(244), + I40E_PTT_UNUSED_ENTRY(245), + I40E_PTT_UNUSED_ENTRY(246), + I40E_PTT_UNUSED_ENTRY(247), + I40E_PTT_UNUSED_ENTRY(248), + I40E_PTT_UNUSED_ENTRY(249), + + I40E_PTT_UNUSED_ENTRY(250), + I40E_PTT_UNUSED_ENTRY(251), + I40E_PTT_UNUSED_ENTRY(252), + I40E_PTT_UNUSED_ENTRY(253), + I40E_PTT_UNUSED_ENTRY(254), + I40E_PTT_UNUSED_ENTRY(255) +}; + + +/** + * i40e_aq_send_msg_to_pf + * @hw: pointer to the hardware structure + * @v_opcode: opcodes for VF-PF communication + * @v_retval: return error code + * @msg: pointer to the msg buffer + * @msglen: msg length + * @cmd_details: pointer to command details + * + * Send message to PF driver using admin queue. By default, this message + * is sent asynchronously, i.e. i40evf_asq_send_command() does not wait for + * completion before returning. + **/ +i40e_status i40e_aq_send_msg_to_pf(struct i40e_hw *hw, + enum i40e_virtchnl_ops v_opcode, + i40e_status v_retval, + u8 *msg, u16 msglen, + struct i40e_asq_cmd_details *cmd_details) +{ + struct i40e_aq_desc desc; + i40e_status status; + + i40evf_fill_default_direct_cmd_desc(&desc, i40e_aqc_opc_send_msg_to_pf); + desc.flags |= cpu_to_le16((u16)I40E_AQ_FLAG_SI); + desc.cookie_high = cpu_to_le32(v_opcode); + desc.cookie_low = cpu_to_le32(v_retval); + if (msglen) { + desc.flags |= cpu_to_le16((u16)(I40E_AQ_FLAG_BUF + | I40E_AQ_FLAG_RD)); + if (msglen > I40E_AQ_LARGE_BUF) + desc.flags |= cpu_to_le16((u16)I40E_AQ_FLAG_LB); + desc.datalen = cpu_to_le16(msglen); + } + if (!cmd_details) { + struct i40e_asq_cmd_details details; + memset(&details, 0, sizeof(details)); + details.async = true; + cmd_details = &details; + } + status = i40evf_asq_send_command(hw, &desc, msg, msglen, cmd_details); + return status; +} + +/** + * i40e_vf_parse_hw_config + * @hw: pointer to the hardware structure + * @msg: pointer to the virtual channel VF resource structure + * + * Given a VF resource message from the PF, populate the hw struct + * with appropriate information. + **/ +void i40e_vf_parse_hw_config(struct i40e_hw *hw, + struct i40e_virtchnl_vf_resource *msg) +{ + struct i40e_virtchnl_vsi_resource *vsi_res; + int i; + + vsi_res = &msg->vsi_res[0]; + + hw->dev_caps.num_vsis = msg->num_vsis; + hw->dev_caps.num_rx_qp = msg->num_queue_pairs; + hw->dev_caps.num_tx_qp = msg->num_queue_pairs; + hw->dev_caps.num_msix_vectors_vf = msg->max_vectors; + hw->dev_caps.dcb = msg->vf_offload_flags & + I40E_VIRTCHNL_VF_OFFLOAD_L2; + hw->dev_caps.fcoe = (msg->vf_offload_flags & + I40E_VIRTCHNL_VF_OFFLOAD_FCOE) ? 1 : 0; + for (i = 0; i < msg->num_vsis; i++) { + if (vsi_res->vsi_type == I40E_VSI_SRIOV) { + memcpy(hw->mac.perm_addr, vsi_res->default_mac_addr, + ETH_ALEN); + memcpy(hw->mac.addr, vsi_res->default_mac_addr, + ETH_ALEN); + } + vsi_res++; + } +} + +/** + * i40e_vf_reset + * @hw: pointer to the hardware structure + * + * Send a VF_RESET message to the PF. Does not wait for response from PF + * as none will be forthcoming. Immediately after calling this function, + * the admin queue should be shut down and (optionally) reinitialized. + **/ +i40e_status i40e_vf_reset(struct i40e_hw *hw) +{ + return i40e_aq_send_msg_to_pf(hw, I40E_VIRTCHNL_OP_RESET_VF, + 0, NULL, 0, NULL); +} --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40evf/i40e_hmc.h +++ linux-3.13.0/drivers/net/ethernet/intel/i40evf/i40e_hmc.h @@ -0,0 +1,238 @@ +/******************************************************************************* + * + * Intel Ethernet Controller XL710 Family Linux Virtual Function Driver + * Copyright(c) 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. + * + * The full GNU General Public License is included in this distribution in + * the file called "COPYING". + * + * Contact Information: + * e1000-devel Mailing List + * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 + * + ******************************************************************************/ + +#ifndef _I40E_HMC_H_ +#define _I40E_HMC_H_ + +#define I40E_HMC_MAX_BP_COUNT 512 + +/* forward-declare the HW struct for the compiler */ +struct i40e_hw; + +#define I40E_HMC_INFO_SIGNATURE 0x484D5347 /* HMSG */ +#define I40E_HMC_PD_CNT_IN_SD 512 +#define I40E_HMC_DIRECT_BP_SIZE 0x200000 /* 2M */ +#define I40E_HMC_PAGED_BP_SIZE 4096 +#define I40E_HMC_PD_BP_BUF_ALIGNMENT 4096 +#define I40E_FIRST_VF_FPM_ID 16 + +struct i40e_hmc_obj_info { + u64 base; /* base addr in FPM */ + u32 max_cnt; /* max count available for this hmc func */ + u32 cnt; /* count of objects driver actually wants to create */ + u64 size; /* size in bytes of one object */ +}; + +enum i40e_sd_entry_type { + I40E_SD_TYPE_INVALID = 0, + I40E_SD_TYPE_PAGED = 1, + I40E_SD_TYPE_DIRECT = 2 +}; + +struct i40e_hmc_bp { + enum i40e_sd_entry_type entry_type; + struct i40e_dma_mem addr; /* populate to be used by hw */ + u32 sd_pd_index; + u32 ref_cnt; +}; + +struct i40e_hmc_pd_entry { + struct i40e_hmc_bp bp; + u32 sd_index; + bool valid; +}; + +struct i40e_hmc_pd_table { + struct i40e_dma_mem pd_page_addr; /* populate to be used by hw */ + struct i40e_hmc_pd_entry *pd_entry; /* [512] for sw book keeping */ + struct i40e_virt_mem pd_entry_virt_mem; /* virt mem for pd_entry */ + + u32 ref_cnt; + u32 sd_index; +}; + +struct i40e_hmc_sd_entry { + enum i40e_sd_entry_type entry_type; + bool valid; + + union { + struct i40e_hmc_pd_table pd_table; + struct i40e_hmc_bp bp; + } u; +}; + +struct i40e_hmc_sd_table { + struct i40e_virt_mem addr; /* used to track sd_entry allocations */ + u32 sd_cnt; + u32 ref_cnt; + struct i40e_hmc_sd_entry *sd_entry; /* (sd_cnt*512) entries max */ +}; + +struct i40e_hmc_info { + u32 signature; + /* equals to pci func num for PF and dynamically allocated for VFs */ + u8 hmc_fn_id; + u16 first_sd_index; /* index of the first available SD */ + + /* hmc objects */ + struct i40e_hmc_obj_info *hmc_obj; + struct i40e_virt_mem hmc_obj_virt_mem; + struct i40e_hmc_sd_table sd_table; +}; + +#define I40E_INC_SD_REFCNT(sd_table) ((sd_table)->ref_cnt++) +#define I40E_INC_PD_REFCNT(pd_table) ((pd_table)->ref_cnt++) +#define I40E_INC_BP_REFCNT(bp) ((bp)->ref_cnt++) + +#define I40E_DEC_SD_REFCNT(sd_table) ((sd_table)->ref_cnt--) +#define I40E_DEC_PD_REFCNT(pd_table) ((pd_table)->ref_cnt--) +#define I40E_DEC_BP_REFCNT(bp) ((bp)->ref_cnt--) + +/** + * I40E_SET_PF_SD_ENTRY - marks the sd entry as valid in the hardware + * @hw: pointer to our hw struct + * @pa: pointer to physical address + * @sd_index: segment descriptor index + * @type: if sd entry is direct or paged + **/ +#define I40E_SET_PF_SD_ENTRY(hw, pa, sd_index, type) \ +{ \ + u32 val1, val2, val3; \ + val1 = (u32)(upper_32_bits(pa)); \ + val2 = (u32)(pa) | (I40E_HMC_MAX_BP_COUNT << \ + I40E_PFHMC_SDDATALOW_PMSDBPCOUNT_SHIFT) | \ + ((((type) == I40E_SD_TYPE_PAGED) ? 0 : 1) << \ + I40E_PFHMC_SDDATALOW_PMSDTYPE_SHIFT) | \ + (1 << I40E_PFHMC_SDDATALOW_PMSDVALID_SHIFT); \ + val3 = (sd_index) | (1 << I40E_PFHMC_SDCMD_PMSDWR_SHIFT); \ + wr32((hw), I40E_PFHMC_SDDATAHIGH, val1); \ + wr32((hw), I40E_PFHMC_SDDATALOW, val2); \ + wr32((hw), I40E_PFHMC_SDCMD, val3); \ +} + +/** + * I40E_CLEAR_PF_SD_ENTRY - marks the sd entry as invalid in the hardware + * @hw: pointer to our hw struct + * @sd_index: segment descriptor index + * @type: if sd entry is direct or paged + **/ +#define I40E_CLEAR_PF_SD_ENTRY(hw, sd_index, type) \ +{ \ + u32 val2, val3; \ + val2 = (I40E_HMC_MAX_BP_COUNT << \ + I40E_PFHMC_SDDATALOW_PMSDBPCOUNT_SHIFT) | \ + ((((type) == I40E_SD_TYPE_PAGED) ? 0 : 1) << \ + I40E_PFHMC_SDDATALOW_PMSDTYPE_SHIFT); \ + val3 = (sd_index) | (1 << I40E_PFHMC_SDCMD_PMSDWR_SHIFT); \ + wr32((hw), I40E_PFHMC_SDDATAHIGH, 0); \ + wr32((hw), I40E_PFHMC_SDDATALOW, val2); \ + wr32((hw), I40E_PFHMC_SDCMD, val3); \ +} + +/** + * I40E_INVALIDATE_PF_HMC_PD - Invalidates the pd cache in the hardware + * @hw: pointer to our hw struct + * @sd_idx: segment descriptor index + * @pd_idx: page descriptor index + **/ +#define I40E_INVALIDATE_PF_HMC_PD(hw, sd_idx, pd_idx) \ + wr32((hw), I40E_PFHMC_PDINV, \ + (((sd_idx) << I40E_PFHMC_PDINV_PMSDIDX_SHIFT) | \ + ((pd_idx) << I40E_PFHMC_PDINV_PMPDIDX_SHIFT))) + +#define I40E_INVALIDATE_VF_HMC_PD(hw, sd_idx, pd_idx, hmc_fn_id) \ + wr32((hw), I40E_GLHMC_VFPDINV((hmc_fn_id) - I40E_FIRST_VF_FPM_ID), \ + (((sd_idx) << I40E_PFHMC_PDINV_PMSDIDX_SHIFT) | \ + ((pd_idx) << I40E_PFHMC_PDINV_PMPDIDX_SHIFT))) + +/** + * I40E_FIND_SD_INDEX_LIMIT - finds segment descriptor index limit + * @hmc_info: pointer to the HMC configuration information structure + * @type: type of HMC resources we're searching + * @index: starting index for the object + * @cnt: number of objects we're trying to create + * @sd_idx: pointer to return index of the segment descriptor in question + * @sd_limit: pointer to return the maximum number of segment descriptors + * + * This function calculates the segment descriptor index and index limit + * for the resource defined by i40e_hmc_rsrc_type. + **/ +#define I40E_FIND_SD_INDEX_LIMIT(hmc_info, type, index, cnt, sd_idx, sd_limit)\ +{ \ + u64 fpm_addr, fpm_limit; \ + fpm_addr = (hmc_info)->hmc_obj[(type)].base + \ + (hmc_info)->hmc_obj[(type)].size * (index); \ + fpm_limit = fpm_addr + (hmc_info)->hmc_obj[(type)].size * (cnt);\ + *(sd_idx) = (u32)(fpm_addr / I40E_HMC_DIRECT_BP_SIZE); \ + *(sd_limit) = (u32)((fpm_limit - 1) / I40E_HMC_DIRECT_BP_SIZE); \ + /* add one more to the limit to correct our range */ \ + *(sd_limit) += 1; \ +} + +/** + * I40E_FIND_PD_INDEX_LIMIT - finds page descriptor index limit + * @hmc_info: pointer to the HMC configuration information struct + * @type: HMC resource type we're examining + * @idx: starting index for the object + * @cnt: number of objects we're trying to create + * @pd_index: pointer to return page descriptor index + * @pd_limit: pointer to return page descriptor index limit + * + * Calculates the page descriptor index and index limit for the resource + * defined by i40e_hmc_rsrc_type. + **/ +#define I40E_FIND_PD_INDEX_LIMIT(hmc_info, type, idx, cnt, pd_index, pd_limit)\ +{ \ + u64 fpm_adr, fpm_limit; \ + fpm_adr = (hmc_info)->hmc_obj[(type)].base + \ + (hmc_info)->hmc_obj[(type)].size * (idx); \ + fpm_limit = fpm_adr + (hmc_info)->hmc_obj[(type)].size * (cnt); \ + *(pd_index) = (u32)(fpm_adr / I40E_HMC_PAGED_BP_SIZE); \ + *(pd_limit) = (u32)((fpm_limit - 1) / I40E_HMC_PAGED_BP_SIZE); \ + /* add one more to the limit to correct our range */ \ + *(pd_limit) += 1; \ +} +i40e_status i40e_add_sd_table_entry(struct i40e_hw *hw, + struct i40e_hmc_info *hmc_info, + u32 sd_index, + enum i40e_sd_entry_type type, + u64 direct_mode_sz); + +i40e_status i40e_add_pd_table_entry(struct i40e_hw *hw, + struct i40e_hmc_info *hmc_info, + u32 pd_index); +i40e_status i40e_remove_pd_bp(struct i40e_hw *hw, + struct i40e_hmc_info *hmc_info, + u32 idx, bool is_pf); +i40e_status i40e_prep_remove_sd_bp(struct i40e_hmc_info *hmc_info, + u32 idx); +i40e_status i40e_remove_sd_bp_new(struct i40e_hw *hw, + struct i40e_hmc_info *hmc_info, + u32 idx, bool is_pf); +i40e_status i40e_prep_remove_pd_page(struct i40e_hmc_info *hmc_info, + u32 idx); +i40e_status i40e_remove_pd_page_new(struct i40e_hw *hw, + struct i40e_hmc_info *hmc_info, + u32 idx, bool is_pf); + +#endif /* _I40E_HMC_H_ */ --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40evf/i40e_lan_hmc.h +++ linux-3.13.0/drivers/net/ethernet/intel/i40evf/i40e_lan_hmc.h @@ -0,0 +1,165 @@ +/******************************************************************************* + * + * Intel Ethernet Controller XL710 Family Linux Virtual Function Driver + * Copyright(c) 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. + * + * The full GNU General Public License is included in this distribution in + * the file called "COPYING". + * + * Contact Information: + * e1000-devel Mailing List + * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 + * + ******************************************************************************/ + +#ifndef _I40E_LAN_HMC_H_ +#define _I40E_LAN_HMC_H_ + +/* forward-declare the HW struct for the compiler */ +struct i40e_hw; + +/* HMC element context information */ + +/* Rx queue context data */ +struct i40e_hmc_obj_rxq { + u16 head; + u8 cpuid; + u64 base; + u16 qlen; +#define I40E_RXQ_CTX_DBUFF_SHIFT 7 + u8 dbuff; +#define I40E_RXQ_CTX_HBUFF_SHIFT 6 + u8 hbuff; + u8 dtype; + u8 dsize; + u8 crcstrip; + u8 fc_ena; + u8 l2tsel; + u8 hsplit_0; + u8 hsplit_1; + u8 showiv; + u16 rxmax; + u8 tphrdesc_ena; + u8 tphwdesc_ena; + u8 tphdata_ena; + u8 tphhead_ena; + u8 lrxqthresh; +}; + +/* Tx queue context data */ +struct i40e_hmc_obj_txq { + u16 head; + u8 new_context; + u64 base; + u8 fc_ena; + u8 timesync_ena; + u8 fd_ena; + u8 alt_vlan_ena; + u16 thead_wb; + u16 cpuid; + u8 head_wb_ena; + u16 qlen; + u8 tphrdesc_ena; + u8 tphrpacket_ena; + u8 tphwdesc_ena; + u64 head_wb_addr; + u32 crc; + u16 rdylist; + u8 rdylist_act; +}; + +/* for hsplit_0 field of Rx HMC context */ +enum i40e_hmc_obj_rx_hsplit_0 { + I40E_HMC_OBJ_RX_HSPLIT_0_NO_SPLIT = 0, + I40E_HMC_OBJ_RX_HSPLIT_0_SPLIT_L2 = 1, + I40E_HMC_OBJ_RX_HSPLIT_0_SPLIT_IP = 2, + I40E_HMC_OBJ_RX_HSPLIT_0_SPLIT_TCP_UDP = 4, + I40E_HMC_OBJ_RX_HSPLIT_0_SPLIT_SCTP = 8, +}; + +/* fcoe_cntx and fcoe_filt are for debugging purpose only */ +struct i40e_hmc_obj_fcoe_cntx { + u32 rsv[32]; +}; + +struct i40e_hmc_obj_fcoe_filt { + u32 rsv[8]; +}; + +/* Context sizes for LAN objects */ +enum i40e_hmc_lan_object_size { + I40E_HMC_LAN_OBJ_SZ_8 = 0x3, + I40E_HMC_LAN_OBJ_SZ_16 = 0x4, + I40E_HMC_LAN_OBJ_SZ_32 = 0x5, + I40E_HMC_LAN_OBJ_SZ_64 = 0x6, + I40E_HMC_LAN_OBJ_SZ_128 = 0x7, + I40E_HMC_LAN_OBJ_SZ_256 = 0x8, + I40E_HMC_LAN_OBJ_SZ_512 = 0x9, +}; + +#define I40E_HMC_L2OBJ_BASE_ALIGNMENT 512 +#define I40E_HMC_OBJ_SIZE_TXQ 128 +#define I40E_HMC_OBJ_SIZE_RXQ 32 +#define I40E_HMC_OBJ_SIZE_FCOE_CNTX 128 +#define I40E_HMC_OBJ_SIZE_FCOE_FILT 64 + +enum i40e_hmc_lan_rsrc_type { + I40E_HMC_LAN_FULL = 0, + I40E_HMC_LAN_TX = 1, + I40E_HMC_LAN_RX = 2, + I40E_HMC_FCOE_CTX = 3, + I40E_HMC_FCOE_FILT = 4, + I40E_HMC_LAN_MAX = 5 +}; + +enum i40e_hmc_model { + I40E_HMC_MODEL_DIRECT_PREFERRED = 0, + I40E_HMC_MODEL_DIRECT_ONLY = 1, + I40E_HMC_MODEL_PAGED_ONLY = 2, + I40E_HMC_MODEL_UNKNOWN, +}; + +struct i40e_hmc_lan_create_obj_info { + struct i40e_hmc_info *hmc_info; + u32 rsrc_type; + u32 start_idx; + u32 count; + enum i40e_sd_entry_type entry_type; + u64 direct_mode_sz; +}; + +struct i40e_hmc_lan_delete_obj_info { + struct i40e_hmc_info *hmc_info; + u32 rsrc_type; + u32 start_idx; + u32 count; +}; + +i40e_status i40e_init_lan_hmc(struct i40e_hw *hw, u32 txq_num, + u32 rxq_num, u32 fcoe_cntx_num, + u32 fcoe_filt_num); +i40e_status i40e_configure_lan_hmc(struct i40e_hw *hw, + enum i40e_hmc_model model); +i40e_status i40e_shutdown_lan_hmc(struct i40e_hw *hw); + +i40e_status i40e_clear_lan_tx_queue_context(struct i40e_hw *hw, + u16 queue); +i40e_status i40e_set_lan_tx_queue_context(struct i40e_hw *hw, + u16 queue, + struct i40e_hmc_obj_txq *s); +i40e_status i40e_clear_lan_rx_queue_context(struct i40e_hw *hw, + u16 queue); +i40e_status i40e_set_lan_rx_queue_context(struct i40e_hw *hw, + u16 queue, + struct i40e_hmc_obj_rxq *s); + +#endif /* _I40E_LAN_HMC_H_ */ --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40evf/i40e_osdep.h +++ linux-3.13.0/drivers/net/ethernet/intel/i40evf/i40e_osdep.h @@ -0,0 +1,72 @@ +/******************************************************************************* + * + * Intel Ethernet Controller XL710 Family Linux Virtual Function Driver + * Copyright(c) 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. + * + * The full GNU General Public License is included in this distribution in + * the file called "COPYING". + * + * Contact Information: + * e1000-devel Mailing List + * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 + * + ******************************************************************************/ + +#ifndef _I40E_OSDEP_H_ +#define _I40E_OSDEP_H_ + +#include +#include +#include +#include +#include + +/* get readq/writeq support for 32 bit kernels, use the low-first version */ +#include + +/* File to be the magic between shared code and + * actual OS primitives + */ + +#define hw_dbg(hw, S, A...) do {} while (0) + +#define wr32(a, reg, value) writel((value), ((a)->hw_addr + (reg))) +#define rd32(a, reg) readl((a)->hw_addr + (reg)) + +#define wr64(a, reg, value) writeq((value), ((a)->hw_addr + (reg))) +#define rd64(a, reg) readq((a)->hw_addr + (reg)) +#define i40e_flush(a) readl((a)->hw_addr + I40E_VFGEN_RSTAT) + +/* memory allocation tracking */ +struct i40e_dma_mem { + void *va; + dma_addr_t pa; + u32 size; +} __packed; + +#define i40e_allocate_dma_mem(h, m, unused, s, a) \ + i40evf_allocate_dma_mem_d(h, m, s, a) +#define i40e_free_dma_mem(h, m) i40evf_free_dma_mem_d(h, m) + +struct i40e_virt_mem { + void *va; + u32 size; +} __packed; +#define i40e_allocate_virt_mem(h, m, s) i40evf_allocate_virt_mem_d(h, m, s) +#define i40e_free_virt_mem(h, m) i40evf_free_virt_mem_d(h, m) + +#define i40e_debug(h, m, s, ...) i40evf_debug_d(h, m, s, ##__VA_ARGS__) +extern void i40evf_debug_d(void *hw, u32 mask, char *fmt_str, ...) + __attribute__ ((format(gnu_printf, 3, 4))); + +typedef enum i40e_status_code i40e_status; +#endif /* _I40E_OSDEP_H_ */ --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40evf/i40e_prototype.h +++ linux-3.13.0/drivers/net/ethernet/intel/i40evf/i40e_prototype.h @@ -0,0 +1,91 @@ +/******************************************************************************* + * + * Intel Ethernet Controller XL710 Family Linux Virtual Function Driver + * Copyright(c) 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. + * + * The full GNU General Public License is included in this distribution in + * the file called "COPYING". + * + * Contact Information: + * e1000-devel Mailing List + * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 + * + ******************************************************************************/ + +#ifndef _I40E_PROTOTYPE_H_ +#define _I40E_PROTOTYPE_H_ + +#include "i40e_type.h" +#include "i40e_alloc.h" +#include "i40e_virtchnl.h" + +/* Prototypes for shared code functions that are not in + * the standard function pointer structures. These are + * mostly because they are needed even before the init + * has happened and will assist in the early SW and FW + * setup. + */ + +/* adminq functions */ +i40e_status i40evf_init_adminq(struct i40e_hw *hw); +i40e_status i40evf_shutdown_adminq(struct i40e_hw *hw); +void i40e_adminq_init_ring_data(struct i40e_hw *hw); +i40e_status i40evf_clean_arq_element(struct i40e_hw *hw, + struct i40e_arq_event_info *e, + u16 *events_pending); +i40e_status i40evf_asq_send_command(struct i40e_hw *hw, + struct i40e_aq_desc *desc, + void *buff, /* can be NULL */ + u16 buff_size, + struct i40e_asq_cmd_details *cmd_details); +bool i40evf_asq_done(struct i40e_hw *hw); + +/* debug function for adminq */ +void i40evf_debug_aq(struct i40e_hw *hw, + enum i40e_debug_mask mask, + void *desc, + void *buffer); + +void i40e_idle_aq(struct i40e_hw *hw); +void i40evf_resume_aq(struct i40e_hw *hw); +bool i40evf_check_asq_alive(struct i40e_hw *hw); +i40e_status i40evf_aq_queue_shutdown(struct i40e_hw *hw, + bool unloading); + +i40e_status i40e_set_mac_type(struct i40e_hw *hw); + +extern struct i40e_rx_ptype_decoded i40evf_ptype_lookup[]; + +static inline struct i40e_rx_ptype_decoded decode_rx_desc_ptype(u8 ptype) +{ + return i40evf_ptype_lookup[ptype]; +} + +/* prototype for functions used for SW locks */ + +/* i40e_common for VF drivers*/ +void i40e_vf_parse_hw_config(struct i40e_hw *hw, + struct i40e_virtchnl_vf_resource *msg); +i40e_status i40e_vf_reset(struct i40e_hw *hw); +i40e_status i40e_aq_send_msg_to_pf(struct i40e_hw *hw, + enum i40e_virtchnl_ops v_opcode, + i40e_status v_retval, + u8 *msg, u16 msglen, + struct i40e_asq_cmd_details *cmd_details); +i40e_status i40e_set_filter_control(struct i40e_hw *hw, + struct i40e_filter_control_settings *settings); +i40e_status i40e_aq_add_rem_control_packet_filter(struct i40e_hw *hw, + u8 *mac_addr, u16 ethtype, u16 flags, + u16 vsi_seid, u16 queue, bool is_add, + struct i40e_control_filter_stats *stats, + struct i40e_asq_cmd_details *cmd_details); +#endif /* _I40E_PROTOTYPE_H_ */ --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40evf/i40e_register.h +++ linux-3.13.0/drivers/net/ethernet/intel/i40evf/i40e_register.h @@ -0,0 +1,4667 @@ +/******************************************************************************* + * + * Intel Ethernet Controller XL710 Family Linux Virtual Function Driver + * Copyright(c) 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. + * + * The full GNU General Public License is included in this distribution in + * the file called "COPYING". + * + * Contact Information: + * e1000-devel Mailing List + * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 + * + ******************************************************************************/ + +#ifndef _I40E_REGISTER_H_ +#define _I40E_REGISTER_H_ + +#define I40E_GL_GP_FUSE(_i) (0x0009400C + ((_i) * 4)) /* _i=0...28 */ +#define I40E_GL_GP_FUSE_MAX_INDEX 28 +#define I40E_GL_GP_FUSE_GL_GP_FUSE_SHIFT 0 +#define I40E_GL_GP_FUSE_GL_GP_FUSE_MASK (0xFFFFFFFF << I40E_GL_GP_FUSE_GL_GP_FUSE_SHIFT) +#define I40E_GLPCI_PM_MUX_NPQ 0x0009C4F4 +#define I40E_GLPCI_PM_MUX_NPQ_NPQ_NUM_PORT_SEL_SHIFT 0 +#define I40E_GLPCI_PM_MUX_NPQ_NPQ_NUM_PORT_SEL_MASK (0x7 << I40E_GLPCI_PM_MUX_NPQ_NPQ_NUM_PORT_SEL_SHIFT) +#define I40E_GLPCI_PM_MUX_NPQ_INNER_NPQ_SEL_SHIFT 16 +#define I40E_GLPCI_PM_MUX_NPQ_INNER_NPQ_SEL_MASK (0x1F << I40E_GLPCI_PM_MUX_NPQ_INNER_NPQ_SEL_SHIFT) +#define I40E_GLPCI_PM_MUX_PFB 0x0009C4F0 +#define I40E_GLPCI_PM_MUX_PFB_PFB_PORT_SEL_SHIFT 0 +#define I40E_GLPCI_PM_MUX_PFB_PFB_PORT_SEL_MASK (0x1F << I40E_GLPCI_PM_MUX_PFB_PFB_PORT_SEL_SHIFT) +#define I40E_GLPCI_PM_MUX_PFB_INNER_PORT_SEL_SHIFT 16 +#define I40E_GLPCI_PM_MUX_PFB_INNER_PORT_SEL_MASK (0x7 << I40E_GLPCI_PM_MUX_PFB_INNER_PORT_SEL_SHIFT) +#define I40E_GLPCI_PQ_MAX_USED_SPC 0x0009C4EC +#define I40E_GLPCI_PQ_MAX_USED_SPC_GLPCI_PQ_MAX_USED_SPC_12_SHIFT 0 +#define I40E_GLPCI_PQ_MAX_USED_SPC_GLPCI_PQ_MAX_USED_SPC_12_MASK (0xFF << I40E_GLPCI_PQ_MAX_USED_SPC_GLPCI_PQ_MAX_USED_SPC_12_SHIFT) +#define I40E_GLPCI_PQ_MAX_USED_SPC_GLPCI_PQ_MAX_USED_SPC_13_SHIFT 8 +#define I40E_GLPCI_PQ_MAX_USED_SPC_GLPCI_PQ_MAX_USED_SPC_13_MASK (0xFF << I40E_GLPCI_PQ_MAX_USED_SPC_GLPCI_PQ_MAX_USED_SPC_13_SHIFT) +#define I40E_GLPCI_SPARE_BITS_0 0x0009C4F8 +#define I40E_GLPCI_SPARE_BITS_0_SPARE_BITS_SHIFT 0 +#define I40E_GLPCI_SPARE_BITS_0_SPARE_BITS_MASK (0xFFFFFFFF << I40E_GLPCI_SPARE_BITS_0_SPARE_BITS_SHIFT) +#define I40E_GLPCI_SPARE_BITS_1 0x0009C4FC +#define I40E_GLPCI_SPARE_BITS_1_SPARE_BITS_SHIFT 0 +#define I40E_GLPCI_SPARE_BITS_1_SPARE_BITS_MASK (0xFFFFFFFF << I40E_GLPCI_SPARE_BITS_1_SPARE_BITS_SHIFT) +#define I40E_PFPCI_PF_FLUSH_DONE 0x0009C800 +#define I40E_PFPCI_PF_FLUSH_DONE_FLUSH_DONE_SHIFT 0 +#define I40E_PFPCI_PF_FLUSH_DONE_FLUSH_DONE_MASK (0x1 << I40E_PFPCI_PF_FLUSH_DONE_FLUSH_DONE_SHIFT) +#define I40E_PFPCI_VF_FLUSH_DONE 0x0009C600 +#define I40E_PFPCI_VF_FLUSH_DONE_FLUSH_DONE_SHIFT 0 +#define I40E_PFPCI_VF_FLUSH_DONE_FLUSH_DONE_MASK (0x1 << I40E_PFPCI_VF_FLUSH_DONE_FLUSH_DONE_SHIFT) +#define I40E_PFPCI_VF_FLUSH_DONE1(_VF) (0x0009C600 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_PFPCI_VF_FLUSH_DONE1_MAX_INDEX 127 +#define I40E_PFPCI_VF_FLUSH_DONE1_FLUSH_DONE_SHIFT 0 +#define I40E_PFPCI_VF_FLUSH_DONE1_FLUSH_DONE_MASK (0x1 << I40E_PFPCI_VF_FLUSH_DONE1_FLUSH_DONE_SHIFT) +#define I40E_PFPCI_VM_FLUSH_DONE 0x0009C880 +#define I40E_PFPCI_VM_FLUSH_DONE_FLUSH_DONE_SHIFT 0 +#define I40E_PFPCI_VM_FLUSH_DONE_FLUSH_DONE_MASK (0x1 << I40E_PFPCI_VM_FLUSH_DONE_FLUSH_DONE_SHIFT) + +#define I40E_PF_ARQBAH 0x00080180 +#define I40E_PF_ARQBAH_ARQBAH_SHIFT 0 +#define I40E_PF_ARQBAH_ARQBAH_MASK (0xFFFFFFFF << I40E_PF_ARQBAH_ARQBAH_SHIFT) +#define I40E_PF_ARQBAL 0x00080080 +#define I40E_PF_ARQBAL_ARQBAL_SHIFT 0 +#define I40E_PF_ARQBAL_ARQBAL_MASK (0xFFFFFFFF << I40E_PF_ARQBAL_ARQBAL_SHIFT) +#define I40E_PF_ARQH 0x00080380 +#define I40E_PF_ARQH_ARQH_SHIFT 0 +#define I40E_PF_ARQH_ARQH_MASK (0x3FF << I40E_PF_ARQH_ARQH_SHIFT) +#define I40E_PF_ARQLEN 0x00080280 +#define I40E_PF_ARQLEN_ARQLEN_SHIFT 0 +#define I40E_PF_ARQLEN_ARQLEN_MASK (0x3FF << I40E_PF_ARQLEN_ARQLEN_SHIFT) +#define I40E_PF_ARQLEN_ARQVFE_SHIFT 28 +#define I40E_PF_ARQLEN_ARQVFE_MASK (0x1 << I40E_PF_ARQLEN_ARQVFE_SHIFT) +#define I40E_PF_ARQLEN_ARQOVFL_SHIFT 29 +#define I40E_PF_ARQLEN_ARQOVFL_MASK (0x1 << I40E_PF_ARQLEN_ARQOVFL_SHIFT) +#define I40E_PF_ARQLEN_ARQCRIT_SHIFT 30 +#define I40E_PF_ARQLEN_ARQCRIT_MASK (0x1 << I40E_PF_ARQLEN_ARQCRIT_SHIFT) +#define I40E_PF_ARQLEN_ARQENABLE_SHIFT 31 +#define I40E_PF_ARQLEN_ARQENABLE_MASK (0x1 << I40E_PF_ARQLEN_ARQENABLE_SHIFT) +#define I40E_PF_ARQT 0x00080480 +#define I40E_PF_ARQT_ARQT_SHIFT 0 +#define I40E_PF_ARQT_ARQT_MASK (0x3FF << I40E_PF_ARQT_ARQT_SHIFT) +#define I40E_PF_ATQBAH 0x00080100 +#define I40E_PF_ATQBAH_ATQBAH_SHIFT 0 +#define I40E_PF_ATQBAH_ATQBAH_MASK (0xFFFFFFFF << I40E_PF_ATQBAH_ATQBAH_SHIFT) +#define I40E_PF_ATQBAL 0x00080000 +#define I40E_PF_ATQBAL_ATQBAL_SHIFT 0 +#define I40E_PF_ATQBAL_ATQBAL_MASK (0xFFFFFFFF << I40E_PF_ATQBAL_ATQBAL_SHIFT) +#define I40E_PF_ATQH 0x00080300 +#define I40E_PF_ATQH_ATQH_SHIFT 0 +#define I40E_PF_ATQH_ATQH_MASK (0x3FF << I40E_PF_ATQH_ATQH_SHIFT) +#define I40E_PF_ATQLEN 0x00080200 +#define I40E_PF_ATQLEN_ATQLEN_SHIFT 0 +#define I40E_PF_ATQLEN_ATQLEN_MASK (0x3FF << I40E_PF_ATQLEN_ATQLEN_SHIFT) +#define I40E_PF_ATQLEN_ATQVFE_SHIFT 28 +#define I40E_PF_ATQLEN_ATQVFE_MASK (0x1 << I40E_PF_ATQLEN_ATQVFE_SHIFT) +#define I40E_PF_ATQLEN_ATQOVFL_SHIFT 29 +#define I40E_PF_ATQLEN_ATQOVFL_MASK (0x1 << I40E_PF_ATQLEN_ATQOVFL_SHIFT) +#define I40E_PF_ATQLEN_ATQCRIT_SHIFT 30 +#define I40E_PF_ATQLEN_ATQCRIT_MASK (0x1 << I40E_PF_ATQLEN_ATQCRIT_SHIFT) +#define I40E_PF_ATQLEN_ATQENABLE_SHIFT 31 +#define I40E_PF_ATQLEN_ATQENABLE_MASK (0x1 << I40E_PF_ATQLEN_ATQENABLE_SHIFT) +#define I40E_PF_ATQT 0x00080400 +#define I40E_PF_ATQT_ATQT_SHIFT 0 +#define I40E_PF_ATQT_ATQT_MASK (0x3FF << I40E_PF_ATQT_ATQT_SHIFT) +#define I40E_VF_ARQBAH(_VF) (0x00081400 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_VF_ARQBAH_MAX_INDEX 127 +#define I40E_VF_ARQBAH_ARQBAH_SHIFT 0 +#define I40E_VF_ARQBAH_ARQBAH_MASK (0xFFFFFFFF << I40E_VF_ARQBAH_ARQBAH_SHIFT) +#define I40E_VF_ARQBAL(_VF) (0x00080C00 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_VF_ARQBAL_MAX_INDEX 127 +#define I40E_VF_ARQBAL_ARQBAL_SHIFT 0 +#define I40E_VF_ARQBAL_ARQBAL_MASK (0xFFFFFFFF << I40E_VF_ARQBAL_ARQBAL_SHIFT) +#define I40E_VF_ARQH(_VF) (0x00082400 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_VF_ARQH_MAX_INDEX 127 +#define I40E_VF_ARQH_ARQH_SHIFT 0 +#define I40E_VF_ARQH_ARQH_MASK (0x3FF << I40E_VF_ARQH_ARQH_SHIFT) +#define I40E_VF_ARQLEN(_VF) (0x00081C00 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_VF_ARQLEN_MAX_INDEX 127 +#define I40E_VF_ARQLEN_ARQLEN_SHIFT 0 +#define I40E_VF_ARQLEN_ARQLEN_MASK (0x3FF << I40E_VF_ARQLEN_ARQLEN_SHIFT) +#define I40E_VF_ARQLEN_ARQVFE_SHIFT 28 +#define I40E_VF_ARQLEN_ARQVFE_MASK (0x1 << I40E_VF_ARQLEN_ARQVFE_SHIFT) +#define I40E_VF_ARQLEN_ARQOVFL_SHIFT 29 +#define I40E_VF_ARQLEN_ARQOVFL_MASK (0x1 << I40E_VF_ARQLEN_ARQOVFL_SHIFT) +#define I40E_VF_ARQLEN_ARQCRIT_SHIFT 30 +#define I40E_VF_ARQLEN_ARQCRIT_MASK (0x1 << I40E_VF_ARQLEN_ARQCRIT_SHIFT) +#define I40E_VF_ARQLEN_ARQENABLE_SHIFT 31 +#define I40E_VF_ARQLEN_ARQENABLE_MASK (0x1 << I40E_VF_ARQLEN_ARQENABLE_SHIFT) +#define I40E_VF_ARQT(_VF) (0x00082C00 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_VF_ARQT_MAX_INDEX 127 +#define I40E_VF_ARQT_ARQT_SHIFT 0 +#define I40E_VF_ARQT_ARQT_MASK (0x3FF << I40E_VF_ARQT_ARQT_SHIFT) +#define I40E_VF_ATQBAH(_VF) (0x00081000 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_VF_ATQBAH_MAX_INDEX 127 +#define I40E_VF_ATQBAH_ATQBAH_SHIFT 0 +#define I40E_VF_ATQBAH_ATQBAH_MASK (0xFFFFFFFF << I40E_VF_ATQBAH_ATQBAH_SHIFT) +#define I40E_VF_ATQBAL(_VF) (0x00080800 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_VF_ATQBAL_MAX_INDEX 127 +#define I40E_VF_ATQBAL_ATQBAL_SHIFT 0 +#define I40E_VF_ATQBAL_ATQBAL_MASK (0xFFFFFFFF << I40E_VF_ATQBAL_ATQBAL_SHIFT) +#define I40E_VF_ATQH(_VF) (0x00082000 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_VF_ATQH_MAX_INDEX 127 +#define I40E_VF_ATQH_ATQH_SHIFT 0 +#define I40E_VF_ATQH_ATQH_MASK (0x3FF << I40E_VF_ATQH_ATQH_SHIFT) +#define I40E_VF_ATQLEN(_VF) (0x00081800 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_VF_ATQLEN_MAX_INDEX 127 +#define I40E_VF_ATQLEN_ATQLEN_SHIFT 0 +#define I40E_VF_ATQLEN_ATQLEN_MASK (0x3FF << I40E_VF_ATQLEN_ATQLEN_SHIFT) +#define I40E_VF_ATQLEN_ATQVFE_SHIFT 28 +#define I40E_VF_ATQLEN_ATQVFE_MASK (0x1 << I40E_VF_ATQLEN_ATQVFE_SHIFT) +#define I40E_VF_ATQLEN_ATQOVFL_SHIFT 29 +#define I40E_VF_ATQLEN_ATQOVFL_MASK (0x1 << I40E_VF_ATQLEN_ATQOVFL_SHIFT) +#define I40E_VF_ATQLEN_ATQCRIT_SHIFT 30 +#define I40E_VF_ATQLEN_ATQCRIT_MASK (0x1 << I40E_VF_ATQLEN_ATQCRIT_SHIFT) +#define I40E_VF_ATQLEN_ATQENABLE_SHIFT 31 +#define I40E_VF_ATQLEN_ATQENABLE_MASK (0x1 << I40E_VF_ATQLEN_ATQENABLE_SHIFT) +#define I40E_VF_ATQT(_VF) (0x00082800 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_VF_ATQT_MAX_INDEX 127 +#define I40E_VF_ATQT_ATQT_SHIFT 0 +#define I40E_VF_ATQT_ATQT_MASK (0x3FF << I40E_VF_ATQT_ATQT_SHIFT) +#define I40E_PRT_L2TAGSEN 0x001C0B20 +#define I40E_PRT_L2TAGSEN_ENABLE_SHIFT 0 +#define I40E_PRT_L2TAGSEN_ENABLE_MASK (0xFF << I40E_PRT_L2TAGSEN_ENABLE_SHIFT) +#define I40E_PFCM_LAN_ERRDATA 0x0010C080 +#define I40E_PFCM_LAN_ERRDATA_ERROR_CODE_SHIFT 0 +#define I40E_PFCM_LAN_ERRDATA_ERROR_CODE_MASK (0xF << I40E_PFCM_LAN_ERRDATA_ERROR_CODE_SHIFT) +#define I40E_PFCM_LAN_ERRDATA_Q_TYPE_SHIFT 4 +#define I40E_PFCM_LAN_ERRDATA_Q_TYPE_MASK (0x7 << I40E_PFCM_LAN_ERRDATA_Q_TYPE_SHIFT) +#define I40E_PFCM_LAN_ERRDATA_Q_NUM_SHIFT 8 +#define I40E_PFCM_LAN_ERRDATA_Q_NUM_MASK (0xFFF << I40E_PFCM_LAN_ERRDATA_Q_NUM_SHIFT) +#define I40E_PFCM_LAN_ERRINFO 0x0010C000 +#define I40E_PFCM_LAN_ERRINFO_ERROR_VALID_SHIFT 0 +#define I40E_PFCM_LAN_ERRINFO_ERROR_VALID_MASK (0x1 << I40E_PFCM_LAN_ERRINFO_ERROR_VALID_SHIFT) +#define I40E_PFCM_LAN_ERRINFO_ERROR_INST_SHIFT 4 +#define I40E_PFCM_LAN_ERRINFO_ERROR_INST_MASK (0x7 << I40E_PFCM_LAN_ERRINFO_ERROR_INST_SHIFT) +#define I40E_PFCM_LAN_ERRINFO_DBL_ERROR_CNT_SHIFT 8 +#define I40E_PFCM_LAN_ERRINFO_DBL_ERROR_CNT_MASK (0xFF << I40E_PFCM_LAN_ERRINFO_DBL_ERROR_CNT_SHIFT) +#define I40E_PFCM_LAN_ERRINFO_RLU_ERROR_CNT_SHIFT 16 +#define I40E_PFCM_LAN_ERRINFO_RLU_ERROR_CNT_MASK (0xFF << I40E_PFCM_LAN_ERRINFO_RLU_ERROR_CNT_SHIFT) +#define I40E_PFCM_LAN_ERRINFO_RLS_ERROR_CNT_SHIFT 24 +#define I40E_PFCM_LAN_ERRINFO_RLS_ERROR_CNT_MASK (0xFF << I40E_PFCM_LAN_ERRINFO_RLS_ERROR_CNT_SHIFT) +#define I40E_PFCM_LANCTXCTL(_pf) (0x0010C300 + ((_pf) * 4))/* _pf=0..15 */ +#define I40E_PFCM_LANCTXCTL_QUEUE_NUM_SHIFT 0 +#define I40E_PFCM_LANCTXCTL_QUEUE_NUM_MASK (0xFFF << I40E_PFCM_LANCTXCTL_QUEUE_NUM_SHIFT) +#define I40E_PFCM_LANCTXCTL_SUB_LINE_SHIFT 12 +#define I40E_PFCM_LANCTXCTL_SUB_LINE_MASK (0x7 << I40E_PFCM_LANCTXCTL_SUB_LINE_SHIFT) +#define I40E_PFCM_LANCTXCTL_QUEUE_TYPE_SHIFT 15 +#define I40E_PFCM_LANCTXCTL_QUEUE_TYPE_MASK (0x3 << I40E_PFCM_LANCTXCTL_QUEUE_TYPE_SHIFT) +#define I40E_PFCM_LANCTXCTL_OP_CODE_SHIFT 17 +#define I40E_PFCM_LANCTXCTL_OP_CODE_MASK (0x3 << I40E_PFCM_LANCTXCTL_OP_CODE_SHIFT) +#define I40E_PFCM_LANCTXDATA(_i, _pf) (0x0010C100 + ((_i) * 4) + ((_pf) * 16))/* _i=0...3 _pf=0..15 */ +#define I40E_PFCM_LANCTXDATA_MAX_INDEX 3 +#define I40E_PFCM_LANCTXDATA_DATA_SHIFT 0 +#define I40E_PFCM_LANCTXDATA_DATA_MASK (0xFFFFFFFF << I40E_PFCM_LANCTXDATA_DATA_SHIFT) +#define I40E_PFCM_LANCTXSTAT(_pf) (0x0010C380 + ((_pf) * 4))/* _pf=0..15 */ +#define I40E_PFCM_LANCTXSTAT_CTX_DONE_SHIFT 0 +#define I40E_PFCM_LANCTXSTAT_CTX_DONE_MASK (0x1 << I40E_PFCM_LANCTXSTAT_CTX_DONE_SHIFT) +#define I40E_PFCM_LANCTXSTAT_CTX_MISS_SHIFT 1 +#define I40E_PFCM_LANCTXSTAT_CTX_MISS_MASK (0x1 << I40E_PFCM_LANCTXSTAT_CTX_MISS_SHIFT) +#define I40E_PFCM_PE_ERRDATA 0x00138D00 +#define I40E_PFCM_PE_ERRDATA_ERROR_CODE_SHIFT 0 +#define I40E_PFCM_PE_ERRDATA_ERROR_CODE_MASK (0xF << I40E_PFCM_PE_ERRDATA_ERROR_CODE_SHIFT) +#define I40E_PFCM_PE_ERRDATA_Q_TYPE_SHIFT 4 +#define I40E_PFCM_PE_ERRDATA_Q_TYPE_MASK (0x7 << I40E_PFCM_PE_ERRDATA_Q_TYPE_SHIFT) +#define I40E_PFCM_PE_ERRDATA_Q_NUM_SHIFT 8 +#define I40E_PFCM_PE_ERRDATA_Q_NUM_MASK (0x3FFFF << I40E_PFCM_PE_ERRDATA_Q_NUM_SHIFT) +#define I40E_PFCM_PE_ERRINFO 0x00138C80 +#define I40E_PFCM_PE_ERRINFO_ERROR_VALID_SHIFT 0 +#define I40E_PFCM_PE_ERRINFO_ERROR_VALID_MASK (0x1 << I40E_PFCM_PE_ERRINFO_ERROR_VALID_SHIFT) +#define I40E_PFCM_PE_ERRINFO_ERROR_INST_SHIFT 4 +#define I40E_PFCM_PE_ERRINFO_ERROR_INST_MASK (0x7 << I40E_PFCM_PE_ERRINFO_ERROR_INST_SHIFT) +#define I40E_PFCM_PE_ERRINFO_DBL_ERROR_CNT_SHIFT 8 +#define I40E_PFCM_PE_ERRINFO_DBL_ERROR_CNT_MASK (0xFF << I40E_PFCM_PE_ERRINFO_DBL_ERROR_CNT_SHIFT) +#define I40E_PFCM_PE_ERRINFO_RLU_ERROR_CNT_SHIFT 16 +#define I40E_PFCM_PE_ERRINFO_RLU_ERROR_CNT_MASK (0xFF << I40E_PFCM_PE_ERRINFO_RLU_ERROR_CNT_SHIFT) +#define I40E_PFCM_PE_ERRINFO_RLS_ERROR_CNT_SHIFT 24 +#define I40E_PFCM_PE_ERRINFO_RLS_ERROR_CNT_MASK (0xFF << I40E_PFCM_PE_ERRINFO_RLS_ERROR_CNT_SHIFT) +#define I40E_VFCM_PE_ERRDATA1(_VF) (0x00138800 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_VFCM_PE_ERRDATA1_MAX_INDEX 127 +#define I40E_VFCM_PE_ERRDATA1_ERROR_CODE_SHIFT 0 +#define I40E_VFCM_PE_ERRDATA1_ERROR_CODE_MASK (0xF << I40E_VFCM_PE_ERRDATA1_ERROR_CODE_SHIFT) +#define I40E_VFCM_PE_ERRDATA1_Q_TYPE_SHIFT 4 +#define I40E_VFCM_PE_ERRDATA1_Q_TYPE_MASK (0x7 << I40E_VFCM_PE_ERRDATA1_Q_TYPE_SHIFT) +#define I40E_VFCM_PE_ERRDATA1_Q_NUM_SHIFT 8 +#define I40E_VFCM_PE_ERRDATA1_Q_NUM_MASK (0x3FFFF << I40E_VFCM_PE_ERRDATA1_Q_NUM_SHIFT) +#define I40E_VFCM_PE_ERRINFO1(_VF) (0x00138400 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_VFCM_PE_ERRINFO1_MAX_INDEX 127 +#define I40E_VFCM_PE_ERRINFO1_ERROR_VALID_SHIFT 0 +#define I40E_VFCM_PE_ERRINFO1_ERROR_VALID_MASK (0x1 << I40E_VFCM_PE_ERRINFO1_ERROR_VALID_SHIFT) +#define I40E_VFCM_PE_ERRINFO1_ERROR_INST_SHIFT 4 +#define I40E_VFCM_PE_ERRINFO1_ERROR_INST_MASK (0x7 << I40E_VFCM_PE_ERRINFO1_ERROR_INST_SHIFT) +#define I40E_VFCM_PE_ERRINFO1_DBL_ERROR_CNT_SHIFT 8 +#define I40E_VFCM_PE_ERRINFO1_DBL_ERROR_CNT_MASK (0xFF << I40E_VFCM_PE_ERRINFO1_DBL_ERROR_CNT_SHIFT) +#define I40E_VFCM_PE_ERRINFO1_RLU_ERROR_CNT_SHIFT 16 +#define I40E_VFCM_PE_ERRINFO1_RLU_ERROR_CNT_MASK (0xFF << I40E_VFCM_PE_ERRINFO1_RLU_ERROR_CNT_SHIFT) +#define I40E_VFCM_PE_ERRINFO1_RLS_ERROR_CNT_SHIFT 24 +#define I40E_VFCM_PE_ERRINFO1_RLS_ERROR_CNT_MASK (0xFF << I40E_VFCM_PE_ERRINFO1_RLS_ERROR_CNT_SHIFT) +#define I40E_GLDCB_GENC 0x00083044 +#define I40E_GLDCB_GENC_PCIRTT_SHIFT 0 +#define I40E_GLDCB_GENC_PCIRTT_MASK (0xFFFF << I40E_GLDCB_GENC_PCIRTT_SHIFT) +#define I40E_GLDCB_RUPTI 0x00122618 +#define I40E_GLDCB_RUPTI_PFCTIMEOUT_UP_SHIFT 0 +#define I40E_GLDCB_RUPTI_PFCTIMEOUT_UP_MASK (0xFFFFFFFF << I40E_GLDCB_RUPTI_PFCTIMEOUT_UP_SHIFT) +#define I40E_PRTDCB_FCCFG 0x001E4640 +#define I40E_PRTDCB_FCCFG_TFCE_SHIFT 3 +#define I40E_PRTDCB_FCCFG_TFCE_MASK (0x3 << I40E_PRTDCB_FCCFG_TFCE_SHIFT) +#define I40E_PRTDCB_FCRTV 0x001E4600 +#define I40E_PRTDCB_FCRTV_FC_REFRESH_TH_SHIFT 0 +#define I40E_PRTDCB_FCRTV_FC_REFRESH_TH_MASK (0xFFFF << I40E_PRTDCB_FCRTV_FC_REFRESH_TH_SHIFT) +#define I40E_PRTDCB_FCTTVN(_i) (0x001E4580 + ((_i) * 32)) /* _i=0...3 */ +#define I40E_PRTDCB_FCTTVN_MAX_INDEX 3 +#define I40E_PRTDCB_FCTTVN_TTV_2N_SHIFT 0 +#define I40E_PRTDCB_FCTTVN_TTV_2N_MASK (0xFFFF << I40E_PRTDCB_FCTTVN_TTV_2N_SHIFT) +#define I40E_PRTDCB_FCTTVN_TTV_2N_P1_SHIFT 16 +#define I40E_PRTDCB_FCTTVN_TTV_2N_P1_MASK (0xFFFF << I40E_PRTDCB_FCTTVN_TTV_2N_P1_SHIFT) +#define I40E_PRTDCB_GENC 0x00083000 +#define I40E_PRTDCB_GENC_RESERVED_1_SHIFT 0 +#define I40E_PRTDCB_GENC_RESERVED_1_MASK (0x3 << I40E_PRTDCB_GENC_RESERVED_1_SHIFT) +#define I40E_PRTDCB_GENC_NUMTC_SHIFT 2 +#define I40E_PRTDCB_GENC_NUMTC_MASK (0xF << I40E_PRTDCB_GENC_NUMTC_SHIFT) +#define I40E_PRTDCB_GENC_FCOEUP_SHIFT 6 +#define I40E_PRTDCB_GENC_FCOEUP_MASK (0x7 << I40E_PRTDCB_GENC_FCOEUP_SHIFT) +#define I40E_PRTDCB_GENC_FCOEUP_VALID_SHIFT 9 +#define I40E_PRTDCB_GENC_FCOEUP_VALID_MASK (0x1 << I40E_PRTDCB_GENC_FCOEUP_VALID_SHIFT) +#define I40E_PRTDCB_GENC_PFCLDA_SHIFT 16 +#define I40E_PRTDCB_GENC_PFCLDA_MASK (0xFFFF << I40E_PRTDCB_GENC_PFCLDA_SHIFT) +#define I40E_PRTDCB_GENS 0x00083020 +#define I40E_PRTDCB_GENS_DCBX_STATUS_SHIFT 0 +#define I40E_PRTDCB_GENS_DCBX_STATUS_MASK (0x7 << I40E_PRTDCB_GENS_DCBX_STATUS_SHIFT) +#define I40E_PRTDCB_MFLCN 0x001E2400 +#define I40E_PRTDCB_MFLCN_PMCF_SHIFT 0 +#define I40E_PRTDCB_MFLCN_PMCF_MASK (0x1 << I40E_PRTDCB_MFLCN_PMCF_SHIFT) +#define I40E_PRTDCB_MFLCN_DPF_SHIFT 1 +#define I40E_PRTDCB_MFLCN_DPF_MASK (0x1 << I40E_PRTDCB_MFLCN_DPF_SHIFT) +#define I40E_PRTDCB_MFLCN_RPFCM_SHIFT 2 +#define I40E_PRTDCB_MFLCN_RPFCM_MASK (0x1 << I40E_PRTDCB_MFLCN_RPFCM_SHIFT) +#define I40E_PRTDCB_MFLCN_RFCE_SHIFT 3 +#define I40E_PRTDCB_MFLCN_RFCE_MASK (0x1 << I40E_PRTDCB_MFLCN_RFCE_SHIFT) +#define I40E_PRTDCB_MFLCN_RPFCE_SHIFT 4 +#define I40E_PRTDCB_MFLCN_RPFCE_MASK (0xFF << I40E_PRTDCB_MFLCN_RPFCE_SHIFT) +#define I40E_PRTDCB_RETSC 0x001223E0 +#define I40E_PRTDCB_RETSC_ETS_MODE_SHIFT 0 +#define I40E_PRTDCB_RETSC_ETS_MODE_MASK (0x1 << I40E_PRTDCB_RETSC_ETS_MODE_SHIFT) +#define I40E_PRTDCB_RETSC_NON_ETS_MODE_SHIFT 1 +#define I40E_PRTDCB_RETSC_NON_ETS_MODE_MASK (0x1 << I40E_PRTDCB_RETSC_NON_ETS_MODE_SHIFT) +#define I40E_PRTDCB_RETSC_ETS_MAX_EXP_SHIFT 2 +#define I40E_PRTDCB_RETSC_ETS_MAX_EXP_MASK (0xF << I40E_PRTDCB_RETSC_ETS_MAX_EXP_SHIFT) +#define I40E_PRTDCB_RETSC_LLTC_SHIFT 8 +#define I40E_PRTDCB_RETSC_LLTC_MASK (0xFF << I40E_PRTDCB_RETSC_LLTC_SHIFT) +#define I40E_PRTDCB_RETSTCC(_i) (0x00122180 + ((_i) * 32)) /* _i=0...7 */ +#define I40E_PRTDCB_RETSTCC_MAX_INDEX 7 +#define I40E_PRTDCB_RETSTCC_BWSHARE_SHIFT 0 +#define I40E_PRTDCB_RETSTCC_BWSHARE_MASK (0x7F << I40E_PRTDCB_RETSTCC_BWSHARE_SHIFT) +#define I40E_PRTDCB_RETSTCC_UPINTC_MODE_SHIFT 30 +#define I40E_PRTDCB_RETSTCC_UPINTC_MODE_MASK (0x1 << I40E_PRTDCB_RETSTCC_UPINTC_MODE_SHIFT) +#define I40E_PRTDCB_RETSTCC_ETSTC_SHIFT 31 +#define I40E_PRTDCB_RETSTCC_ETSTC_MASK (0x1 << I40E_PRTDCB_RETSTCC_ETSTC_SHIFT) +#define I40E_PRTDCB_RPPMC 0x001223A0 +#define I40E_PRTDCB_RPPMC_LANRPPM_SHIFT 0 +#define I40E_PRTDCB_RPPMC_LANRPPM_MASK (0xFF << I40E_PRTDCB_RPPMC_LANRPPM_SHIFT) +#define I40E_PRTDCB_RPPMC_RDMARPPM_SHIFT 8 +#define I40E_PRTDCB_RPPMC_RDMARPPM_MASK (0xFF << I40E_PRTDCB_RPPMC_RDMARPPM_SHIFT) +#define I40E_PRTDCB_RPPMC_RX_FIFO_SIZE_SHIFT 16 +#define I40E_PRTDCB_RPPMC_RX_FIFO_SIZE_MASK (0xFF << I40E_PRTDCB_RPPMC_RX_FIFO_SIZE_SHIFT) +#define I40E_PRTDCB_RUP 0x001C0B00 +#define I40E_PRTDCB_RUP_NOVLANUP_SHIFT 0 +#define I40E_PRTDCB_RUP_NOVLANUP_MASK (0x7 << I40E_PRTDCB_RUP_NOVLANUP_SHIFT) +#define I40E_PRTDCB_RUP2TC 0x001C09A0 +#define I40E_PRTDCB_RUP2TC_UP0TC_SHIFT 0 +#define I40E_PRTDCB_RUP2TC_UP0TC_MASK (0x7 << I40E_PRTDCB_RUP2TC_UP0TC_SHIFT) +#define I40E_PRTDCB_RUP2TC_UP1TC_SHIFT 3 +#define I40E_PRTDCB_RUP2TC_UP1TC_MASK (0x7 << I40E_PRTDCB_RUP2TC_UP1TC_SHIFT) +#define I40E_PRTDCB_RUP2TC_UP2TC_SHIFT 6 +#define I40E_PRTDCB_RUP2TC_UP2TC_MASK (0x7 << I40E_PRTDCB_RUP2TC_UP2TC_SHIFT) +#define I40E_PRTDCB_RUP2TC_UP3TC_SHIFT 9 +#define I40E_PRTDCB_RUP2TC_UP3TC_MASK (0x7 << I40E_PRTDCB_RUP2TC_UP3TC_SHIFT) +#define I40E_PRTDCB_RUP2TC_UP4TC_SHIFT 12 +#define I40E_PRTDCB_RUP2TC_UP4TC_MASK (0x7 << I40E_PRTDCB_RUP2TC_UP4TC_SHIFT) +#define I40E_PRTDCB_RUP2TC_UP5TC_SHIFT 15 +#define I40E_PRTDCB_RUP2TC_UP5TC_MASK (0x7 << I40E_PRTDCB_RUP2TC_UP5TC_SHIFT) +#define I40E_PRTDCB_RUP2TC_UP6TC_SHIFT 18 +#define I40E_PRTDCB_RUP2TC_UP6TC_MASK (0x7 << I40E_PRTDCB_RUP2TC_UP6TC_SHIFT) +#define I40E_PRTDCB_RUP2TC_UP7TC_SHIFT 21 +#define I40E_PRTDCB_RUP2TC_UP7TC_MASK (0x7 << I40E_PRTDCB_RUP2TC_UP7TC_SHIFT) +#define I40E_PRTDCB_TC2PFC 0x001C0980 +#define I40E_PRTDCB_TC2PFC_TC2PFC_SHIFT 0 +#define I40E_PRTDCB_TC2PFC_TC2PFC_MASK (0xFF << I40E_PRTDCB_TC2PFC_TC2PFC_SHIFT) +#define I40E_PRTDCB_TCPMC 0x000A21A0 +#define I40E_PRTDCB_TCPMC_CPM_SHIFT 0 +#define I40E_PRTDCB_TCPMC_CPM_MASK (0x1FFF << I40E_PRTDCB_TCPMC_CPM_SHIFT) +#define I40E_PRTDCB_TCPMC_LLTC_SHIFT 13 +#define I40E_PRTDCB_TCPMC_LLTC_MASK (0xFF << I40E_PRTDCB_TCPMC_LLTC_SHIFT) +#define I40E_PRTDCB_TCPMC_TCPM_MODE_SHIFT 30 +#define I40E_PRTDCB_TCPMC_TCPM_MODE_MASK (0x1 << I40E_PRTDCB_TCPMC_TCPM_MODE_SHIFT) +#define I40E_PRTDCB_TCWSTC(_i) (0x000A2040 + ((_i) * 32)) /* _i=0...7 */ +#define I40E_PRTDCB_TCWSTC_MAX_INDEX 7 +#define I40E_PRTDCB_TCWSTC_MSTC_SHIFT 0 +#define I40E_PRTDCB_TCWSTC_MSTC_MASK (0xFFFFF << I40E_PRTDCB_TCWSTC_MSTC_SHIFT) +#define I40E_PRTDCB_TDPMC 0x000A0180 +#define I40E_PRTDCB_TDPMC_DPM_SHIFT 0 +#define I40E_PRTDCB_TDPMC_DPM_MASK (0xFF << I40E_PRTDCB_TDPMC_DPM_SHIFT) +#define I40E_PRTDCB_TDPMC_TCPM_MODE_SHIFT 30 +#define I40E_PRTDCB_TDPMC_TCPM_MODE_MASK (0x1 << I40E_PRTDCB_TDPMC_TCPM_MODE_SHIFT) +#define I40E_PRTDCB_TDPUC 0x00044100 +#define I40E_PRTDCB_TDPUC_MAX_TXFRAME_SHIFT 0 +#define I40E_PRTDCB_TDPUC_MAX_TXFRAME_MASK (0xFFFF << I40E_PRTDCB_TDPUC_MAX_TXFRAME_SHIFT) +#define I40E_PRTDCB_TETSC_TCB 0x000AE060 +#define I40E_PRTDCB_TETSC_TCB_EN_LL_STRICT_PRIORITY_SHIFT 0 +#define I40E_PRTDCB_TETSC_TCB_EN_LL_STRICT_PRIORITY_MASK (0x1 << I40E_PRTDCB_TETSC_TCB_EN_LL_STRICT_PRIORITY_SHIFT) +#define I40E_PRTDCB_TETSC_TCB_LLTC_SHIFT 8 +#define I40E_PRTDCB_TETSC_TCB_LLTC_MASK (0xFF << I40E_PRTDCB_TETSC_TCB_LLTC_SHIFT) +#define I40E_PRTDCB_TETSC_TPB 0x00098060 +#define I40E_PRTDCB_TETSC_TPB_EN_LL_STRICT_PRIORITY_SHIFT 0 +#define I40E_PRTDCB_TETSC_TPB_EN_LL_STRICT_PRIORITY_MASK (0x1 << I40E_PRTDCB_TETSC_TPB_EN_LL_STRICT_PRIORITY_SHIFT) +#define I40E_PRTDCB_TETSC_TPB_LLTC_SHIFT 8 +#define I40E_PRTDCB_TETSC_TPB_LLTC_MASK (0xFF << I40E_PRTDCB_TETSC_TPB_LLTC_SHIFT) +#define I40E_PRTDCB_TFCS 0x001E4560 +#define I40E_PRTDCB_TFCS_TXOFF_SHIFT 0 +#define I40E_PRTDCB_TFCS_TXOFF_MASK (0x1 << I40E_PRTDCB_TFCS_TXOFF_SHIFT) +#define I40E_PRTDCB_TFCS_TXOFF0_SHIFT 8 +#define I40E_PRTDCB_TFCS_TXOFF0_MASK (0x1 << I40E_PRTDCB_TFCS_TXOFF0_SHIFT) +#define I40E_PRTDCB_TFCS_TXOFF1_SHIFT 9 +#define I40E_PRTDCB_TFCS_TXOFF1_MASK (0x1 << I40E_PRTDCB_TFCS_TXOFF1_SHIFT) +#define I40E_PRTDCB_TFCS_TXOFF2_SHIFT 10 +#define I40E_PRTDCB_TFCS_TXOFF2_MASK (0x1 << I40E_PRTDCB_TFCS_TXOFF2_SHIFT) +#define I40E_PRTDCB_TFCS_TXOFF3_SHIFT 11 +#define I40E_PRTDCB_TFCS_TXOFF3_MASK (0x1 << I40E_PRTDCB_TFCS_TXOFF3_SHIFT) +#define I40E_PRTDCB_TFCS_TXOFF4_SHIFT 12 +#define I40E_PRTDCB_TFCS_TXOFF4_MASK (0x1 << I40E_PRTDCB_TFCS_TXOFF4_SHIFT) +#define I40E_PRTDCB_TFCS_TXOFF5_SHIFT 13 +#define I40E_PRTDCB_TFCS_TXOFF5_MASK (0x1 << I40E_PRTDCB_TFCS_TXOFF5_SHIFT) +#define I40E_PRTDCB_TFCS_TXOFF6_SHIFT 14 +#define I40E_PRTDCB_TFCS_TXOFF6_MASK (0x1 << I40E_PRTDCB_TFCS_TXOFF6_SHIFT) +#define I40E_PRTDCB_TFCS_TXOFF7_SHIFT 15 +#define I40E_PRTDCB_TFCS_TXOFF7_MASK (0x1 << I40E_PRTDCB_TFCS_TXOFF7_SHIFT) +#define I40E_PRTDCB_TFWSTC(_i) (0x000A0040 + ((_i) * 32)) /* _i=0...7 */ +#define I40E_PRTDCB_TFWSTC_MAX_INDEX 7 +#define I40E_PRTDCB_TFWSTC_MSTC_SHIFT 0 +#define I40E_PRTDCB_TFWSTC_MSTC_MASK (0xFFFFF << I40E_PRTDCB_TFWSTC_MSTC_SHIFT) +#define I40E_PRTDCB_TPFCTS(_i) (0x001E4660 + ((_i) * 32)) /* _i=0...7 */ +#define I40E_PRTDCB_TPFCTS_MAX_INDEX 7 +#define I40E_PRTDCB_TPFCTS_PFCTIMER_SHIFT 0 +#define I40E_PRTDCB_TPFCTS_PFCTIMER_MASK (0x3FFF << I40E_PRTDCB_TPFCTS_PFCTIMER_SHIFT) +#define I40E_GLFCOE_RCTL 0x00269B94 +#define I40E_GLFCOE_RCTL_FCOEVER_SHIFT 0 +#define I40E_GLFCOE_RCTL_FCOEVER_MASK (0xF << I40E_GLFCOE_RCTL_FCOEVER_SHIFT) +#define I40E_GLFCOE_RCTL_SAVBAD_SHIFT 4 +#define I40E_GLFCOE_RCTL_SAVBAD_MASK (0x1 << I40E_GLFCOE_RCTL_SAVBAD_SHIFT) +#define I40E_GLFCOE_RCTL_ICRC_SHIFT 5 +#define I40E_GLFCOE_RCTL_ICRC_MASK (0x1 << I40E_GLFCOE_RCTL_ICRC_SHIFT) +#define I40E_GLFCOE_RCTL_MAX_SIZE_SHIFT 16 +#define I40E_GLFCOE_RCTL_MAX_SIZE_MASK (0x3FFF << I40E_GLFCOE_RCTL_MAX_SIZE_SHIFT) +#define I40E_GL_FWSTS 0x00083048 +#define I40E_GL_FWSTS_FWS0B_SHIFT 0 +#define I40E_GL_FWSTS_FWS0B_MASK (0xFF << I40E_GL_FWSTS_FWS0B_SHIFT) +#define I40E_GL_FWSTS_FWRI_SHIFT 9 +#define I40E_GL_FWSTS_FWRI_MASK (0x1 << I40E_GL_FWSTS_FWRI_SHIFT) +#define I40E_GL_FWSTS_FWS1B_SHIFT 16 +#define I40E_GL_FWSTS_FWS1B_MASK (0xFF << I40E_GL_FWSTS_FWS1B_SHIFT) +#define I40E_GLGEN_CLKSTAT 0x000B8184 +#define I40E_GLGEN_CLKSTAT_CLKMODE_SHIFT 0 +#define I40E_GLGEN_CLKSTAT_CLKMODE_MASK (0x1 << I40E_GLGEN_CLKSTAT_CLKMODE_SHIFT) +#define I40E_GLGEN_CLKSTAT_U_CLK_SPEED_SHIFT 4 +#define I40E_GLGEN_CLKSTAT_U_CLK_SPEED_MASK (0x3 << I40E_GLGEN_CLKSTAT_U_CLK_SPEED_SHIFT) +#define I40E_GLGEN_CLKSTAT_P0_CLK_SPEED_SHIFT 8 +#define I40E_GLGEN_CLKSTAT_P0_CLK_SPEED_MASK (0x7 << I40E_GLGEN_CLKSTAT_P0_CLK_SPEED_SHIFT) +#define I40E_GLGEN_CLKSTAT_P1_CLK_SPEED_SHIFT 12 +#define I40E_GLGEN_CLKSTAT_P1_CLK_SPEED_MASK (0x7 << I40E_GLGEN_CLKSTAT_P1_CLK_SPEED_SHIFT) +#define I40E_GLGEN_CLKSTAT_P2_CLK_SPEED_SHIFT 16 +#define I40E_GLGEN_CLKSTAT_P2_CLK_SPEED_MASK (0x7 << I40E_GLGEN_CLKSTAT_P2_CLK_SPEED_SHIFT) +#define I40E_GLGEN_CLKSTAT_P3_CLK_SPEED_SHIFT 20 +#define I40E_GLGEN_CLKSTAT_P3_CLK_SPEED_MASK (0x7 << I40E_GLGEN_CLKSTAT_P3_CLK_SPEED_SHIFT) +#define I40E_GLGEN_GPIO_CTL(_i) (0x00088100 + ((_i) * 4)) /* _i=0...29 */ +#define I40E_GLGEN_GPIO_CTL_MAX_INDEX 29 +#define I40E_GLGEN_GPIO_CTL_PRT_NUM_SHIFT 0 +#define I40E_GLGEN_GPIO_CTL_PRT_NUM_MASK (0x3 << I40E_GLGEN_GPIO_CTL_PRT_NUM_SHIFT) +#define I40E_GLGEN_GPIO_CTL_PRT_NUM_NA_SHIFT 3 +#define I40E_GLGEN_GPIO_CTL_PRT_NUM_NA_MASK (0x1 << I40E_GLGEN_GPIO_CTL_PRT_NUM_NA_SHIFT) +#define I40E_GLGEN_GPIO_CTL_PIN_DIR_SHIFT 4 +#define I40E_GLGEN_GPIO_CTL_PIN_DIR_MASK (0x1 << I40E_GLGEN_GPIO_CTL_PIN_DIR_SHIFT) +#define I40E_GLGEN_GPIO_CTL_TRI_CTL_SHIFT 5 +#define I40E_GLGEN_GPIO_CTL_TRI_CTL_MASK (0x1 << I40E_GLGEN_GPIO_CTL_TRI_CTL_SHIFT) +#define I40E_GLGEN_GPIO_CTL_OUT_CTL_SHIFT 6 +#define I40E_GLGEN_GPIO_CTL_OUT_CTL_MASK (0x1 << I40E_GLGEN_GPIO_CTL_OUT_CTL_SHIFT) +#define I40E_GLGEN_GPIO_CTL_PIN_FUNC_SHIFT 7 +#define I40E_GLGEN_GPIO_CTL_PIN_FUNC_MASK (0x7 << I40E_GLGEN_GPIO_CTL_PIN_FUNC_SHIFT) +#define I40E_GLGEN_GPIO_CTL_LED_INVRT_SHIFT 10 +#define I40E_GLGEN_GPIO_CTL_LED_INVRT_MASK (0x1 << I40E_GLGEN_GPIO_CTL_LED_INVRT_SHIFT) +#define I40E_GLGEN_GPIO_CTL_LED_BLINK_SHIFT 11 +#define I40E_GLGEN_GPIO_CTL_LED_BLINK_MASK (0x1 << I40E_GLGEN_GPIO_CTL_LED_BLINK_SHIFT) +#define I40E_GLGEN_GPIO_CTL_LED_MODE_SHIFT 12 +#define I40E_GLGEN_GPIO_CTL_LED_MODE_MASK (0xF << I40E_GLGEN_GPIO_CTL_LED_MODE_SHIFT) +#define I40E_GLGEN_GPIO_CTL_INT_MODE_SHIFT 17 +#define I40E_GLGEN_GPIO_CTL_INT_MODE_MASK (0x3 << I40E_GLGEN_GPIO_CTL_INT_MODE_SHIFT) +#define I40E_GLGEN_GPIO_CTL_OUT_DEFAULT_SHIFT 19 +#define I40E_GLGEN_GPIO_CTL_OUT_DEFAULT_MASK (0x1 << I40E_GLGEN_GPIO_CTL_OUT_DEFAULT_SHIFT) +#define I40E_GLGEN_GPIO_CTL_PHY_PIN_NAME_SHIFT 20 +#define I40E_GLGEN_GPIO_CTL_PHY_PIN_NAME_MASK (0x3F << I40E_GLGEN_GPIO_CTL_PHY_PIN_NAME_SHIFT) +#define I40E_GLGEN_GPIO_SET 0x00088184 +#define I40E_GLGEN_GPIO_SET_GPIO_INDX_SHIFT 0 +#define I40E_GLGEN_GPIO_SET_GPIO_INDX_MASK (0x1F << I40E_GLGEN_GPIO_SET_GPIO_INDX_SHIFT) +#define I40E_GLGEN_GPIO_SET_SDP_DATA_SHIFT 5 +#define I40E_GLGEN_GPIO_SET_SDP_DATA_MASK (0x1 << I40E_GLGEN_GPIO_SET_SDP_DATA_SHIFT) +#define I40E_GLGEN_GPIO_SET_DRIVE_SDP_SHIFT 6 +#define I40E_GLGEN_GPIO_SET_DRIVE_SDP_MASK (0x1 << I40E_GLGEN_GPIO_SET_DRIVE_SDP_SHIFT) +#define I40E_GLGEN_GPIO_STAT 0x0008817C +#define I40E_GLGEN_GPIO_STAT_GPIO_VALUE_SHIFT 0 +#define I40E_GLGEN_GPIO_STAT_GPIO_VALUE_MASK (0x3FFFFFFF << I40E_GLGEN_GPIO_STAT_GPIO_VALUE_SHIFT) +#define I40E_GLGEN_GPIO_TRANSIT 0x00088180 +#define I40E_GLGEN_GPIO_TRANSIT_GPIO_TRANSITION_SHIFT 0 +#define I40E_GLGEN_GPIO_TRANSIT_GPIO_TRANSITION_MASK (0x3FFFFFFF << I40E_GLGEN_GPIO_TRANSIT_GPIO_TRANSITION_SHIFT) +#define I40E_GLGEN_I2CCMD(_i) (0x000881E0 + ((_i) * 4)) /* _i=0...3 */ +#define I40E_GLGEN_I2CCMD_MAX_INDEX 3 +#define I40E_GLGEN_I2CCMD_DATA_SHIFT 0 +#define I40E_GLGEN_I2CCMD_DATA_MASK (0xFFFF << I40E_GLGEN_I2CCMD_DATA_SHIFT) +#define I40E_GLGEN_I2CCMD_REGADD_SHIFT 16 +#define I40E_GLGEN_I2CCMD_REGADD_MASK (0xFF << I40E_GLGEN_I2CCMD_REGADD_SHIFT) +#define I40E_GLGEN_I2CCMD_PHYADD_SHIFT 24 +#define I40E_GLGEN_I2CCMD_PHYADD_MASK (0x7 << I40E_GLGEN_I2CCMD_PHYADD_SHIFT) +#define I40E_GLGEN_I2CCMD_OP_SHIFT 27 +#define I40E_GLGEN_I2CCMD_OP_MASK (0x1 << I40E_GLGEN_I2CCMD_OP_SHIFT) +#define I40E_GLGEN_I2CCMD_RESET_SHIFT 28 +#define I40E_GLGEN_I2CCMD_RESET_MASK (0x1 << I40E_GLGEN_I2CCMD_RESET_SHIFT) +#define I40E_GLGEN_I2CCMD_R_SHIFT 29 +#define I40E_GLGEN_I2CCMD_R_MASK (0x1 << I40E_GLGEN_I2CCMD_R_SHIFT) +#define I40E_GLGEN_I2CCMD_E_SHIFT 31 +#define I40E_GLGEN_I2CCMD_E_MASK (0x1 << I40E_GLGEN_I2CCMD_E_SHIFT) +#define I40E_GLGEN_I2CPARAMS(_i) (0x000881AC + ((_i) * 4)) /* _i=0...3 */ +#define I40E_GLGEN_I2CPARAMS_MAX_INDEX 3 +#define I40E_GLGEN_I2CPARAMS_WRITE_TIME_SHIFT 0 +#define I40E_GLGEN_I2CPARAMS_WRITE_TIME_MASK (0x1F << I40E_GLGEN_I2CPARAMS_WRITE_TIME_SHIFT) +#define I40E_GLGEN_I2CPARAMS_READ_TIME_SHIFT 5 +#define I40E_GLGEN_I2CPARAMS_READ_TIME_MASK (0x7 << I40E_GLGEN_I2CPARAMS_READ_TIME_SHIFT) +#define I40E_GLGEN_I2CPARAMS_I2CBB_EN_SHIFT 8 +#define I40E_GLGEN_I2CPARAMS_I2CBB_EN_MASK (0x1 << I40E_GLGEN_I2CPARAMS_I2CBB_EN_SHIFT) +#define I40E_GLGEN_I2CPARAMS_CLK_SHIFT 9 +#define I40E_GLGEN_I2CPARAMS_CLK_MASK (0x1 << I40E_GLGEN_I2CPARAMS_CLK_SHIFT) +#define I40E_GLGEN_I2CPARAMS_DATA_OUT_SHIFT 10 +#define I40E_GLGEN_I2CPARAMS_DATA_OUT_MASK (0x1 << I40E_GLGEN_I2CPARAMS_DATA_OUT_SHIFT) +#define I40E_GLGEN_I2CPARAMS_DATA_OE_N_SHIFT 11 +#define I40E_GLGEN_I2CPARAMS_DATA_OE_N_MASK (0x1 << I40E_GLGEN_I2CPARAMS_DATA_OE_N_SHIFT) +#define I40E_GLGEN_I2CPARAMS_DATA_IN_SHIFT 12 +#define I40E_GLGEN_I2CPARAMS_DATA_IN_MASK (0x1 << I40E_GLGEN_I2CPARAMS_DATA_IN_SHIFT) +#define I40E_GLGEN_I2CPARAMS_CLK_OE_N_SHIFT 13 +#define I40E_GLGEN_I2CPARAMS_CLK_OE_N_MASK (0x1 << I40E_GLGEN_I2CPARAMS_CLK_OE_N_SHIFT) +#define I40E_GLGEN_I2CPARAMS_CLK_IN_SHIFT 14 +#define I40E_GLGEN_I2CPARAMS_CLK_IN_MASK (0x1 << I40E_GLGEN_I2CPARAMS_CLK_IN_SHIFT) +#define I40E_GLGEN_I2CPARAMS_CLK_STRETCH_DIS_SHIFT 15 +#define I40E_GLGEN_I2CPARAMS_CLK_STRETCH_DIS_MASK (0x1 << I40E_GLGEN_I2CPARAMS_CLK_STRETCH_DIS_SHIFT) +#define I40E_GLGEN_I2CPARAMS_I2C_DATA_ORDER_SHIFT 31 +#define I40E_GLGEN_I2CPARAMS_I2C_DATA_ORDER_MASK (0x1 << I40E_GLGEN_I2CPARAMS_I2C_DATA_ORDER_SHIFT) +#define I40E_GLGEN_LED_CTL 0x00088178 +#define I40E_GLGEN_LED_CTL_GLOBAL_BLINK_MODE_SHIFT 0 +#define I40E_GLGEN_LED_CTL_GLOBAL_BLINK_MODE_MASK (0x1 << I40E_GLGEN_LED_CTL_GLOBAL_BLINK_MODE_SHIFT) +#define I40E_GLGEN_MDIO_CTRL(_i) (0x000881D0 + ((_i) * 4)) /* _i=0...3 */ +#define I40E_GLGEN_MDIO_CTRL_MAX_INDEX 3 +#define I40E_GLGEN_MDIO_CTRL_LEGACY_RSVD2_SHIFT 0 +#define I40E_GLGEN_MDIO_CTRL_LEGACY_RSVD2_MASK (0x1FFFF << I40E_GLGEN_MDIO_CTRL_LEGACY_RSVD2_SHIFT) +#define I40E_GLGEN_MDIO_CTRL_CONTMDC_SHIFT 17 +#define I40E_GLGEN_MDIO_CTRL_CONTMDC_MASK (0x1 << I40E_GLGEN_MDIO_CTRL_CONTMDC_SHIFT) +#define I40E_GLGEN_MDIO_CTRL_LEGACY_RSVD1_SHIFT 18 +#define I40E_GLGEN_MDIO_CTRL_LEGACY_RSVD1_MASK (0x3FFF << I40E_GLGEN_MDIO_CTRL_LEGACY_RSVD1_SHIFT) +#define I40E_GLGEN_MDIO_I2C_SEL(_i) (0x000881C0 + ((_i) * 4)) /* _i=0...3 */ +#define I40E_GLGEN_MDIO_I2C_SEL_MAX_INDEX 3 +#define I40E_GLGEN_MDIO_I2C_SEL_MDIO_I2C_SEL_SHIFT 0 +#define I40E_GLGEN_MDIO_I2C_SEL_MDIO_I2C_SEL_MASK (0x1 << I40E_GLGEN_MDIO_I2C_SEL_MDIO_I2C_SEL_SHIFT) +#define I40E_GLGEN_MDIO_I2C_SEL_PHY_PORT_NUM_SHIFT 1 +#define I40E_GLGEN_MDIO_I2C_SEL_PHY_PORT_NUM_MASK (0xF << I40E_GLGEN_MDIO_I2C_SEL_PHY_PORT_NUM_SHIFT) +#define I40E_GLGEN_MDIO_I2C_SEL_PHY0_ADDRESS_SHIFT 5 +#define I40E_GLGEN_MDIO_I2C_SEL_PHY0_ADDRESS_MASK (0x1F << I40E_GLGEN_MDIO_I2C_SEL_PHY0_ADDRESS_SHIFT) +#define I40E_GLGEN_MDIO_I2C_SEL_PHY1_ADDRESS_SHIFT 10 +#define I40E_GLGEN_MDIO_I2C_SEL_PHY1_ADDRESS_MASK (0x1F << I40E_GLGEN_MDIO_I2C_SEL_PHY1_ADDRESS_SHIFT) +#define I40E_GLGEN_MDIO_I2C_SEL_PHY2_ADDRESS_SHIFT 15 +#define I40E_GLGEN_MDIO_I2C_SEL_PHY2_ADDRESS_MASK (0x1F << I40E_GLGEN_MDIO_I2C_SEL_PHY2_ADDRESS_SHIFT) +#define I40E_GLGEN_MDIO_I2C_SEL_PHY3_ADDRESS_SHIFT 20 +#define I40E_GLGEN_MDIO_I2C_SEL_PHY3_ADDRESS_MASK (0x1F << I40E_GLGEN_MDIO_I2C_SEL_PHY3_ADDRESS_SHIFT) +#define I40E_GLGEN_MDIO_I2C_SEL_MDIO_IF_MODE_SHIFT 25 +#define I40E_GLGEN_MDIO_I2C_SEL_MDIO_IF_MODE_MASK (0xF << I40E_GLGEN_MDIO_I2C_SEL_MDIO_IF_MODE_SHIFT) +#define I40E_GLGEN_MDIO_I2C_SEL_EN_FAST_MODE_SHIFT 31 +#define I40E_GLGEN_MDIO_I2C_SEL_EN_FAST_MODE_MASK (0x1 << I40E_GLGEN_MDIO_I2C_SEL_EN_FAST_MODE_SHIFT) +#define I40E_GLGEN_MSCA(_i) (0x0008818C + ((_i) * 4)) /* _i=0...3 */ +#define I40E_GLGEN_MSCA_MAX_INDEX 3 +#define I40E_GLGEN_MSCA_MDIADD_SHIFT 0 +#define I40E_GLGEN_MSCA_MDIADD_MASK (0xFFFF << I40E_GLGEN_MSCA_MDIADD_SHIFT) +#define I40E_GLGEN_MSCA_DEVADD_SHIFT 16 +#define I40E_GLGEN_MSCA_DEVADD_MASK (0x1F << I40E_GLGEN_MSCA_DEVADD_SHIFT) +#define I40E_GLGEN_MSCA_PHYADD_SHIFT 21 +#define I40E_GLGEN_MSCA_PHYADD_MASK (0x1F << I40E_GLGEN_MSCA_PHYADD_SHIFT) +#define I40E_GLGEN_MSCA_OPCODE_SHIFT 26 +#define I40E_GLGEN_MSCA_OPCODE_MASK (0x3 << I40E_GLGEN_MSCA_OPCODE_SHIFT) +#define I40E_GLGEN_MSCA_STCODE_SHIFT 28 +#define I40E_GLGEN_MSCA_STCODE_MASK (0x3 << I40E_GLGEN_MSCA_STCODE_SHIFT) +#define I40E_GLGEN_MSCA_MDICMD_SHIFT 30 +#define I40E_GLGEN_MSCA_MDICMD_MASK (0x1 << I40E_GLGEN_MSCA_MDICMD_SHIFT) +#define I40E_GLGEN_MSCA_MDIINPROGEN_SHIFT 31 +#define I40E_GLGEN_MSCA_MDIINPROGEN_MASK (0x1 << I40E_GLGEN_MSCA_MDIINPROGEN_SHIFT) +#define I40E_GLGEN_MSRWD(_i) (0x0008819C + ((_i) * 4)) /* _i=0...3 */ +#define I40E_GLGEN_MSRWD_MAX_INDEX 3 +#define I40E_GLGEN_MSRWD_MDIWRDATA_SHIFT 0 +#define I40E_GLGEN_MSRWD_MDIWRDATA_MASK (0xFFFF << I40E_GLGEN_MSRWD_MDIWRDATA_SHIFT) +#define I40E_GLGEN_MSRWD_MDIRDDATA_SHIFT 16 +#define I40E_GLGEN_MSRWD_MDIRDDATA_MASK (0xFFFF << I40E_GLGEN_MSRWD_MDIRDDATA_SHIFT) +#define I40E_GLGEN_PCIFCNCNT 0x001C0AB4 +#define I40E_GLGEN_PCIFCNCNT_PCIPFCNT_SHIFT 0 +#define I40E_GLGEN_PCIFCNCNT_PCIPFCNT_MASK (0x1F << I40E_GLGEN_PCIFCNCNT_PCIPFCNT_SHIFT) +#define I40E_GLGEN_PCIFCNCNT_PCIVFCNT_SHIFT 16 +#define I40E_GLGEN_PCIFCNCNT_PCIVFCNT_MASK (0xFF << I40E_GLGEN_PCIFCNCNT_PCIVFCNT_SHIFT) +#define I40E_GLGEN_PE_ENA 0x000B81A0 +#define I40E_GLGEN_PE_ENA_PE_ENA_SHIFT 0 +#define I40E_GLGEN_PE_ENA_PE_ENA_MASK (0x1 << I40E_GLGEN_PE_ENA_PE_ENA_SHIFT) +#define I40E_GLGEN_PE_ENA_PE_CLK_SRC_SEL_SHIFT 1 +#define I40E_GLGEN_PE_ENA_PE_CLK_SRC_SEL_MASK (0x3 << I40E_GLGEN_PE_ENA_PE_CLK_SRC_SEL_SHIFT) +#define I40E_GLGEN_RSTAT 0x000B8188 +#define I40E_GLGEN_RSTAT_DEVSTATE_SHIFT 0 +#define I40E_GLGEN_RSTAT_DEVSTATE_MASK (0x3 << I40E_GLGEN_RSTAT_DEVSTATE_SHIFT) +#define I40E_GLGEN_RSTAT_RESET_TYPE_SHIFT 2 +#define I40E_GLGEN_RSTAT_RESET_TYPE_MASK (0x3 << I40E_GLGEN_RSTAT_RESET_TYPE_SHIFT) +#define I40E_GLGEN_RSTAT_CORERCNT_SHIFT 4 +#define I40E_GLGEN_RSTAT_CORERCNT_MASK (0x3 << I40E_GLGEN_RSTAT_CORERCNT_SHIFT) +#define I40E_GLGEN_RSTAT_GLOBRCNT_SHIFT 6 +#define I40E_GLGEN_RSTAT_GLOBRCNT_MASK (0x3 << I40E_GLGEN_RSTAT_GLOBRCNT_SHIFT) +#define I40E_GLGEN_RSTAT_EMPRCNT_SHIFT 8 +#define I40E_GLGEN_RSTAT_EMPRCNT_MASK (0x3 << I40E_GLGEN_RSTAT_EMPRCNT_SHIFT) +#define I40E_GLGEN_RSTAT_TIME_TO_RST_SHIFT 10 +#define I40E_GLGEN_RSTAT_TIME_TO_RST_MASK (0x3F << I40E_GLGEN_RSTAT_TIME_TO_RST_SHIFT) +#define I40E_GLGEN_RSTCTL 0x000B8180 +#define I40E_GLGEN_RSTCTL_GRSTDEL_SHIFT 0 +#define I40E_GLGEN_RSTCTL_GRSTDEL_MASK (0x3F << I40E_GLGEN_RSTCTL_GRSTDEL_SHIFT) +#define I40E_GLGEN_RSTCTL_ECC_RST_ENA_SHIFT 8 +#define I40E_GLGEN_RSTCTL_ECC_RST_ENA_MASK (0x1 << I40E_GLGEN_RSTCTL_ECC_RST_ENA_SHIFT) +#define I40E_GLGEN_RSTENA_EMP 0x000B818C +#define I40E_GLGEN_RSTENA_EMP_EMP_RST_ENA_SHIFT 0 +#define I40E_GLGEN_RSTENA_EMP_EMP_RST_ENA_MASK (0x1 << I40E_GLGEN_RSTENA_EMP_EMP_RST_ENA_SHIFT) +#define I40E_GLGEN_RTRIG 0x000B8190 +#define I40E_GLGEN_RTRIG_CORER_SHIFT 0 +#define I40E_GLGEN_RTRIG_CORER_MASK (0x1 << I40E_GLGEN_RTRIG_CORER_SHIFT) +#define I40E_GLGEN_RTRIG_GLOBR_SHIFT 1 +#define I40E_GLGEN_RTRIG_GLOBR_MASK (0x1 << I40E_GLGEN_RTRIG_GLOBR_SHIFT) +#define I40E_GLGEN_RTRIG_EMPFWR_SHIFT 2 +#define I40E_GLGEN_RTRIG_EMPFWR_MASK (0x1 << I40E_GLGEN_RTRIG_EMPFWR_SHIFT) +#define I40E_GLGEN_STAT 0x000B612C +#define I40E_GLGEN_STAT_HWRSVD0_SHIFT 0 +#define I40E_GLGEN_STAT_HWRSVD0_MASK (0x3 << I40E_GLGEN_STAT_HWRSVD0_SHIFT) +#define I40E_GLGEN_STAT_DCBEN_SHIFT 2 +#define I40E_GLGEN_STAT_DCBEN_MASK (0x1 << I40E_GLGEN_STAT_DCBEN_SHIFT) +#define I40E_GLGEN_STAT_VTEN_SHIFT 3 +#define I40E_GLGEN_STAT_VTEN_MASK (0x1 << I40E_GLGEN_STAT_VTEN_SHIFT) +#define I40E_GLGEN_STAT_FCOEN_SHIFT 4 +#define I40E_GLGEN_STAT_FCOEN_MASK (0x1 << I40E_GLGEN_STAT_FCOEN_SHIFT) +#define I40E_GLGEN_STAT_EVBEN_SHIFT 5 +#define I40E_GLGEN_STAT_EVBEN_MASK (0x1 << I40E_GLGEN_STAT_EVBEN_SHIFT) +#define I40E_GLGEN_STAT_HWRSVD1_SHIFT 6 +#define I40E_GLGEN_STAT_HWRSVD1_MASK (0x3 << I40E_GLGEN_STAT_HWRSVD1_SHIFT) +#define I40E_GLGEN_VFLRSTAT(_i) (0x00092600 + ((_i) * 4)) /* _i=0...3 */ +#define I40E_GLGEN_VFLRSTAT_MAX_INDEX 3 +#define I40E_GLGEN_VFLRSTAT_VFLRE_SHIFT 0 +#define I40E_GLGEN_VFLRSTAT_VFLRE_MASK (0xFFFFFFFF << I40E_GLGEN_VFLRSTAT_VFLRE_SHIFT) +#define I40E_GLVFGEN_TIMER 0x000881BC +#define I40E_GLVFGEN_TIMER_GTIME_SHIFT 0 +#define I40E_GLVFGEN_TIMER_GTIME_MASK (0xFFFFFFFF << I40E_GLVFGEN_TIMER_GTIME_SHIFT) +#define I40E_PFGEN_CTRL 0x00092400 +#define I40E_PFGEN_CTRL_PFSWR_SHIFT 0 +#define I40E_PFGEN_CTRL_PFSWR_MASK (0x1 << I40E_PFGEN_CTRL_PFSWR_SHIFT) +#define I40E_PFGEN_DRUN 0x00092500 +#define I40E_PFGEN_DRUN_DRVUNLD_SHIFT 0 +#define I40E_PFGEN_DRUN_DRVUNLD_MASK (0x1 << I40E_PFGEN_DRUN_DRVUNLD_SHIFT) +#define I40E_PFGEN_PORTNUM 0x001C0480 +#define I40E_PFGEN_PORTNUM_PORT_NUM_SHIFT 0 +#define I40E_PFGEN_PORTNUM_PORT_NUM_MASK (0x3 << I40E_PFGEN_PORTNUM_PORT_NUM_SHIFT) +#define I40E_PFGEN_STATE 0x00088000 +#define I40E_PFGEN_STATE_PFPEEN_SHIFT 0 +#define I40E_PFGEN_STATE_PFPEEN_MASK (0x1 << I40E_PFGEN_STATE_PFPEEN_SHIFT) +#define I40E_PFGEN_STATE_PFFCEN_SHIFT 1 +#define I40E_PFGEN_STATE_PFFCEN_MASK (0x1 << I40E_PFGEN_STATE_PFFCEN_SHIFT) +#define I40E_PFGEN_STATE_PFLINKEN_SHIFT 2 +#define I40E_PFGEN_STATE_PFLINKEN_MASK (0x1 << I40E_PFGEN_STATE_PFLINKEN_SHIFT) +#define I40E_PFGEN_STATE_PFSCEN_SHIFT 3 +#define I40E_PFGEN_STATE_PFSCEN_MASK (0x1 << I40E_PFGEN_STATE_PFSCEN_SHIFT) +#define I40E_PRTGEN_CNF 0x000B8120 +#define I40E_PRTGEN_CNF_PORT_DIS_SHIFT 0 +#define I40E_PRTGEN_CNF_PORT_DIS_MASK (0x1 << I40E_PRTGEN_CNF_PORT_DIS_SHIFT) +#define I40E_PRTGEN_CNF_ALLOW_PORT_DIS_SHIFT 1 +#define I40E_PRTGEN_CNF_ALLOW_PORT_DIS_MASK (0x1 << I40E_PRTGEN_CNF_ALLOW_PORT_DIS_SHIFT) +#define I40E_PRTGEN_CNF_EMP_PORT_DIS_SHIFT 2 +#define I40E_PRTGEN_CNF_EMP_PORT_DIS_MASK (0x1 << I40E_PRTGEN_CNF_EMP_PORT_DIS_SHIFT) +#define I40E_PRTGEN_CNF2 0x000B8160 +#define I40E_PRTGEN_CNF2_ACTIVATE_PORT_LINK_SHIFT 0 +#define I40E_PRTGEN_CNF2_ACTIVATE_PORT_LINK_MASK (0x1 << I40E_PRTGEN_CNF2_ACTIVATE_PORT_LINK_SHIFT) +#define I40E_PRTGEN_STATUS 0x000B8100 +#define I40E_PRTGEN_STATUS_PORT_VALID_SHIFT 0 +#define I40E_PRTGEN_STATUS_PORT_VALID_MASK (0x1 << I40E_PRTGEN_STATUS_PORT_VALID_SHIFT) +#define I40E_PRTGEN_STATUS_PORT_ACTIVE_SHIFT 1 +#define I40E_PRTGEN_STATUS_PORT_ACTIVE_MASK (0x1 << I40E_PRTGEN_STATUS_PORT_ACTIVE_SHIFT) +#define I40E_VFGEN_RSTAT1(_VF) (0x00074400 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_VFGEN_RSTAT1_MAX_INDEX 127 +#define I40E_VFGEN_RSTAT1_VFR_STATE_SHIFT 0 +#define I40E_VFGEN_RSTAT1_VFR_STATE_MASK (0x3 << I40E_VFGEN_RSTAT1_VFR_STATE_SHIFT) +#define I40E_VPGEN_VFRSTAT(_VF) (0x00091C00 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_VPGEN_VFRSTAT_MAX_INDEX 127 +#define I40E_VPGEN_VFRSTAT_VFRD_SHIFT 0 +#define I40E_VPGEN_VFRSTAT_VFRD_MASK (0x1 << I40E_VPGEN_VFRSTAT_VFRD_SHIFT) +#define I40E_VPGEN_VFRTRIG(_VF) (0x00091800 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_VPGEN_VFRTRIG_MAX_INDEX 127 +#define I40E_VPGEN_VFRTRIG_VFSWR_SHIFT 0 +#define I40E_VPGEN_VFRTRIG_VFSWR_MASK (0x1 << I40E_VPGEN_VFRTRIG_VFSWR_SHIFT) +#define I40E_VSIGEN_RSTAT(_VSI) (0x00090800 + ((_VSI) * 4)) /* _i=0...383 */ +#define I40E_VSIGEN_RSTAT_MAX_INDEX 383 +#define I40E_VSIGEN_RSTAT_VMRD_SHIFT 0 +#define I40E_VSIGEN_RSTAT_VMRD_MASK (0x1 << I40E_VSIGEN_RSTAT_VMRD_SHIFT) +#define I40E_VSIGEN_RTRIG(_VSI) (0x00090000 + ((_VSI) * 4)) /* _i=0...383 */ +#define I40E_VSIGEN_RTRIG_MAX_INDEX 383 +#define I40E_VSIGEN_RTRIG_VMSWR_SHIFT 0 +#define I40E_VSIGEN_RTRIG_VMSWR_MASK (0x1 << I40E_VSIGEN_RTRIG_VMSWR_SHIFT) +#define I40E_GLHMC_APBVTINUSEBASE(_i) (0x000C4a00 + ((_i) * 4)) +#define I40E_GLHMC_APBVTINUSEBASE_MAX_INDEX 15 +#define I40E_GLHMC_APBVTINUSEBASE_FPMAPBINUSEBASE_SHIFT 0 +#define I40E_GLHMC_APBVTINUSEBASE_FPMAPBINUSEBASE_MASK (0xFFFFFF << I40E_GLHMC_APBVTINUSEBASE_FPMAPBINUSEBASE_SHIFT) +#define I40E_GLHMC_CEQPART(_i) (0x001312C0 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_CEQPART_MAX_INDEX 15 +#define I40E_GLHMC_CEQPART_PMCEQBASE_SHIFT 0 +#define I40E_GLHMC_CEQPART_PMCEQBASE_MASK (0xFF << I40E_GLHMC_CEQPART_PMCEQBASE_SHIFT) +#define I40E_GLHMC_CEQPART_PMCEQSIZE_SHIFT 16 +#define I40E_GLHMC_CEQPART_PMCEQSIZE_MASK (0x1FF << I40E_GLHMC_CEQPART_PMCEQSIZE_SHIFT) +#define I40E_GLHMC_DBCQPART(_i) (0x00131240 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_DBCQPART_MAX_INDEX 15 +#define I40E_GLHMC_DBCQPART_PMDBCQBASE_SHIFT 0 +#define I40E_GLHMC_DBCQPART_PMDBCQBASE_MASK (0x3FFF << I40E_GLHMC_DBCQPART_PMDBCQBASE_SHIFT) +#define I40E_GLHMC_DBCQPART_PMDBCQSIZE_SHIFT 16 +#define I40E_GLHMC_DBCQPART_PMDBCQSIZE_MASK (0x7FFF << I40E_GLHMC_DBCQPART_PMDBCQSIZE_SHIFT) +#define I40E_GLHMC_DBQPPART(_i) (0x00138D80 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_DBQPPART_MAX_INDEX 15 +#define I40E_GLHMC_DBQPPART_PMDBQPBASE_SHIFT 0 +#define I40E_GLHMC_DBQPPART_PMDBQPBASE_MASK (0x3FFF << I40E_GLHMC_DBQPPART_PMDBQPBASE_SHIFT) +#define I40E_GLHMC_DBQPPART_PMDBQPSIZE_SHIFT 16 +#define I40E_GLHMC_DBQPPART_PMDBQPSIZE_MASK (0x7FFF << I40E_GLHMC_DBQPPART_PMDBQPSIZE_SHIFT) +#define I40E_GLHMC_FCOEDDPBASE(_i) (0x000C6600 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_FCOEDDPBASE_MAX_INDEX 15 +#define I40E_GLHMC_FCOEDDPBASE_FPMFCOEDDPBASE_SHIFT 0 +#define I40E_GLHMC_FCOEDDPBASE_FPMFCOEDDPBASE_MASK (0xFFFFFF << I40E_GLHMC_FCOEDDPBASE_FPMFCOEDDPBASE_SHIFT) +#define I40E_GLHMC_FCOEDDPCNT(_i) (0x000C6700 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_FCOEDDPCNT_MAX_INDEX 15 +#define I40E_GLHMC_FCOEDDPCNT_FPMFCOEDDPCNT_SHIFT 0 +#define I40E_GLHMC_FCOEDDPCNT_FPMFCOEDDPCNT_MASK (0xFFFFF << I40E_GLHMC_FCOEDDPCNT_FPMFCOEDDPCNT_SHIFT) +#define I40E_GLHMC_FCOEDDPOBJSZ 0x000C2010 +#define I40E_GLHMC_FCOEDDPOBJSZ_PMFCOEDDPOBJSZ_SHIFT 0 +#define I40E_GLHMC_FCOEDDPOBJSZ_PMFCOEDDPOBJSZ_MASK (0xF << I40E_GLHMC_FCOEDDPOBJSZ_PMFCOEDDPOBJSZ_SHIFT) +#define I40E_GLHMC_FCOEFBASE(_i) (0x000C6800 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_FCOEFBASE_MAX_INDEX 15 +#define I40E_GLHMC_FCOEFBASE_FPMFCOEFBASE_SHIFT 0 +#define I40E_GLHMC_FCOEFBASE_FPMFCOEFBASE_MASK (0xFFFFFF << I40E_GLHMC_FCOEFBASE_FPMFCOEFBASE_SHIFT) +#define I40E_GLHMC_FCOEFCNT(_i) (0x000C6900 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_FCOEFCNT_MAX_INDEX 15 +#define I40E_GLHMC_FCOEFCNT_FPMFCOEFCNT_SHIFT 0 +#define I40E_GLHMC_FCOEFCNT_FPMFCOEFCNT_MASK (0x7FFFFF << I40E_GLHMC_FCOEFCNT_FPMFCOEFCNT_SHIFT) +#define I40E_GLHMC_FCOEFMAX 0x000C20D0 +#define I40E_GLHMC_FCOEFMAX_PMFCOEFMAX_SHIFT 0 +#define I40E_GLHMC_FCOEFMAX_PMFCOEFMAX_MASK (0xFFFF << I40E_GLHMC_FCOEFMAX_PMFCOEFMAX_SHIFT) +#define I40E_GLHMC_FCOEFOBJSZ 0x000C2018 +#define I40E_GLHMC_FCOEFOBJSZ_PMFCOEFOBJSZ_SHIFT 0 +#define I40E_GLHMC_FCOEFOBJSZ_PMFCOEFOBJSZ_MASK (0xF << I40E_GLHMC_FCOEFOBJSZ_PMFCOEFOBJSZ_SHIFT) +#define I40E_GLHMC_FCOEMAX 0x000C2014 +#define I40E_GLHMC_FCOEMAX_PMFCOEMAX_SHIFT 0 +#define I40E_GLHMC_FCOEMAX_PMFCOEMAX_MASK (0x1FFF << I40E_GLHMC_FCOEMAX_PMFCOEMAX_SHIFT) +#define I40E_GLHMC_FSIAVBASE(_i) (0x000C5600 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_FSIAVBASE_MAX_INDEX 15 +#define I40E_GLHMC_FSIAVBASE_FPMFSIAVBASE_SHIFT 0 +#define I40E_GLHMC_FSIAVBASE_FPMFSIAVBASE_MASK (0xFFFFFF << I40E_GLHMC_FSIAVBASE_FPMFSIAVBASE_SHIFT) +#define I40E_GLHMC_FSIAVCNT(_i) (0x000C5700 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_FSIAVCNT_MAX_INDEX 15 +#define I40E_GLHMC_FSIAVCNT_FPMFSIAVCNT_SHIFT 0 +#define I40E_GLHMC_FSIAVCNT_FPMFSIAVCNT_MASK (0x1FFFFFFF << I40E_GLHMC_FSIAVCNT_FPMFSIAVCNT_SHIFT) +#define I40E_GLHMC_FSIAVCNT_RSVD_SHIFT 29 +#define I40E_GLHMC_FSIAVCNT_RSVD_MASK (0x7 << I40E_GLHMC_FSIAVCNT_RSVD_SHIFT) +#define I40E_GLHMC_FSIAVMAX 0x000C2068 +#define I40E_GLHMC_FSIAVMAX_PMFSIAVMAX_SHIFT 0 +#define I40E_GLHMC_FSIAVMAX_PMFSIAVMAX_MASK (0x1FFFF << I40E_GLHMC_FSIAVMAX_PMFSIAVMAX_SHIFT) +#define I40E_GLHMC_FSIAVOBJSZ 0x000C2064 +#define I40E_GLHMC_FSIAVOBJSZ_PMFSIAVOBJSZ_SHIFT 0 +#define I40E_GLHMC_FSIAVOBJSZ_PMFSIAVOBJSZ_MASK (0xF << I40E_GLHMC_FSIAVOBJSZ_PMFSIAVOBJSZ_SHIFT) +#define I40E_GLHMC_FSIMCBASE(_i) (0x000C6000 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_FSIMCBASE_MAX_INDEX 15 +#define I40E_GLHMC_FSIMCBASE_FPMFSIMCBASE_SHIFT 0 +#define I40E_GLHMC_FSIMCBASE_FPMFSIMCBASE_MASK (0xFFFFFF << I40E_GLHMC_FSIMCBASE_FPMFSIMCBASE_SHIFT) +#define I40E_GLHMC_FSIMCCNT(_i) (0x000C6100 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_FSIMCCNT_MAX_INDEX 15 +#define I40E_GLHMC_FSIMCCNT_FPMFSIMCSZ_SHIFT 0 +#define I40E_GLHMC_FSIMCCNT_FPMFSIMCSZ_MASK (0x1FFFFFFF << I40E_GLHMC_FSIMCCNT_FPMFSIMCSZ_SHIFT) +#define I40E_GLHMC_FSIMCMAX 0x000C2060 +#define I40E_GLHMC_FSIMCMAX_PMFSIMCMAX_SHIFT 0 +#define I40E_GLHMC_FSIMCMAX_PMFSIMCMAX_MASK (0x3FFF << I40E_GLHMC_FSIMCMAX_PMFSIMCMAX_SHIFT) +#define I40E_GLHMC_FSIMCOBJSZ 0x000C205c +#define I40E_GLHMC_FSIMCOBJSZ_PMFSIMCOBJSZ_SHIFT 0 +#define I40E_GLHMC_FSIMCOBJSZ_PMFSIMCOBJSZ_MASK (0xF << I40E_GLHMC_FSIMCOBJSZ_PMFSIMCOBJSZ_SHIFT) +#define I40E_GLHMC_LANQMAX 0x000C2008 +#define I40E_GLHMC_LANQMAX_PMLANQMAX_SHIFT 0 +#define I40E_GLHMC_LANQMAX_PMLANQMAX_MASK (0x7FF << I40E_GLHMC_LANQMAX_PMLANQMAX_SHIFT) +#define I40E_GLHMC_LANRXBASE(_i) (0x000C6400 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_LANRXBASE_MAX_INDEX 15 +#define I40E_GLHMC_LANRXBASE_FPMLANRXBASE_SHIFT 0 +#define I40E_GLHMC_LANRXBASE_FPMLANRXBASE_MASK (0xFFFFFF << I40E_GLHMC_LANRXBASE_FPMLANRXBASE_SHIFT) +#define I40E_GLHMC_LANRXCNT(_i) (0x000C6500 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_LANRXCNT_MAX_INDEX 15 +#define I40E_GLHMC_LANRXCNT_FPMLANRXCNT_SHIFT 0 +#define I40E_GLHMC_LANRXCNT_FPMLANRXCNT_MASK (0x7FF << I40E_GLHMC_LANRXCNT_FPMLANRXCNT_SHIFT) +#define I40E_GLHMC_LANRXOBJSZ 0x000C200c +#define I40E_GLHMC_LANRXOBJSZ_PMLANRXOBJSZ_SHIFT 0 +#define I40E_GLHMC_LANRXOBJSZ_PMLANRXOBJSZ_MASK (0xF << I40E_GLHMC_LANRXOBJSZ_PMLANRXOBJSZ_SHIFT) +#define I40E_GLHMC_LANTXBASE(_i) (0x000C6200 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_LANTXBASE_MAX_INDEX 15 +#define I40E_GLHMC_LANTXBASE_FPMLANTXBASE_SHIFT 0 +#define I40E_GLHMC_LANTXBASE_FPMLANTXBASE_MASK (0xFFFFFF << I40E_GLHMC_LANTXBASE_FPMLANTXBASE_SHIFT) +#define I40E_GLHMC_LANTXBASE_RSVD_SHIFT 24 +#define I40E_GLHMC_LANTXBASE_RSVD_MASK (0xFF << I40E_GLHMC_LANTXBASE_RSVD_SHIFT) +#define I40E_GLHMC_LANTXCNT(_i) (0x000C6300 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_LANTXCNT_MAX_INDEX 15 +#define I40E_GLHMC_LANTXCNT_FPMLANTXCNT_SHIFT 0 +#define I40E_GLHMC_LANTXCNT_FPMLANTXCNT_MASK (0x7FF << I40E_GLHMC_LANTXCNT_FPMLANTXCNT_SHIFT) +#define I40E_GLHMC_LANTXOBJSZ 0x000C2004 +#define I40E_GLHMC_LANTXOBJSZ_PMLANTXOBJSZ_SHIFT 0 +#define I40E_GLHMC_LANTXOBJSZ_PMLANTXOBJSZ_MASK (0xF << I40E_GLHMC_LANTXOBJSZ_PMLANTXOBJSZ_SHIFT) +#define I40E_GLHMC_PEARPBASE(_i) (0x000C4800 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_PEARPBASE_MAX_INDEX 15 +#define I40E_GLHMC_PEARPBASE_FPMPEARPBASE_SHIFT 0 +#define I40E_GLHMC_PEARPBASE_FPMPEARPBASE_MASK (0xFFFFFF << I40E_GLHMC_PEARPBASE_FPMPEARPBASE_SHIFT) +#define I40E_GLHMC_PEARPCNT(_i) (0x000C4900 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_PEARPCNT_MAX_INDEX 15 +#define I40E_GLHMC_PEARPCNT_FPMPEARPCNT_SHIFT 0 +#define I40E_GLHMC_PEARPCNT_FPMPEARPCNT_MASK (0x1FFFFFFF << I40E_GLHMC_PEARPCNT_FPMPEARPCNT_SHIFT) +#define I40E_GLHMC_PEARPMAX 0x000C2038 +#define I40E_GLHMC_PEARPMAX_PMPEARPMAX_SHIFT 0 +#define I40E_GLHMC_PEARPMAX_PMPEARPMAX_MASK (0x1FFFF << I40E_GLHMC_PEARPMAX_PMPEARPMAX_SHIFT) +#define I40E_GLHMC_PEARPOBJSZ 0x000C2034 +#define I40E_GLHMC_PEARPOBJSZ_PMPEARPOBJSZ_SHIFT 0 +#define I40E_GLHMC_PEARPOBJSZ_PMPEARPOBJSZ_MASK (0x7 << I40E_GLHMC_PEARPOBJSZ_PMPEARPOBJSZ_SHIFT) +#define I40E_GLHMC_PECQBASE(_i) (0x000C4200 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_PECQBASE_MAX_INDEX 15 +#define I40E_GLHMC_PECQBASE_FPMPECQBASE_SHIFT 0 +#define I40E_GLHMC_PECQBASE_FPMPECQBASE_MASK (0xFFFFFF << I40E_GLHMC_PECQBASE_FPMPECQBASE_SHIFT) +#define I40E_GLHMC_PECQCNT(_i) (0x000C4300 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_PECQCNT_MAX_INDEX 15 +#define I40E_GLHMC_PECQCNT_FPMPECQCNT_SHIFT 0 +#define I40E_GLHMC_PECQCNT_FPMPECQCNT_MASK (0x1FFFFFFF << I40E_GLHMC_PECQCNT_FPMPECQCNT_SHIFT) +#define I40E_GLHMC_PECQOBJSZ 0x000C2020 +#define I40E_GLHMC_PECQOBJSZ_PMPECQOBJSZ_SHIFT 0 +#define I40E_GLHMC_PECQOBJSZ_PMPECQOBJSZ_MASK (0xF << I40E_GLHMC_PECQOBJSZ_PMPECQOBJSZ_SHIFT) +#define I40E_GLHMC_PEHTCNT(_i) (0x000C4700 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_PEHTCNT_MAX_INDEX 15 +#define I40E_GLHMC_PEHTCNT_FPMPEHTCNT_SHIFT 0 +#define I40E_GLHMC_PEHTCNT_FPMPEHTCNT_MASK (0x1FFFFFFF << I40E_GLHMC_PEHTCNT_FPMPEHTCNT_SHIFT) +#define I40E_GLHMC_PEHTEBASE(_i) (0x000C4600 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_PEHTEBASE_MAX_INDEX 15 +#define I40E_GLHMC_PEHTEBASE_FPMPEHTEBASE_SHIFT 0 +#define I40E_GLHMC_PEHTEBASE_FPMPEHTEBASE_MASK (0xFFFFFF << I40E_GLHMC_PEHTEBASE_FPMPEHTEBASE_SHIFT) +#define I40E_GLHMC_PEHTEOBJSZ 0x000C202c +#define I40E_GLHMC_PEHTEOBJSZ_PMPEHTEOBJSZ_SHIFT 0 +#define I40E_GLHMC_PEHTEOBJSZ_PMPEHTEOBJSZ_MASK (0xF << I40E_GLHMC_PEHTEOBJSZ_PMPEHTEOBJSZ_SHIFT) +#define I40E_GLHMC_PEHTMAX 0x000C2030 +#define I40E_GLHMC_PEHTMAX_PMPEHTMAX_SHIFT 0 +#define I40E_GLHMC_PEHTMAX_PMPEHTMAX_MASK (0x1FFFFF << I40E_GLHMC_PEHTMAX_PMPEHTMAX_SHIFT) +#define I40E_GLHMC_PEMRBASE(_i) (0x000C4c00 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_PEMRBASE_MAX_INDEX 15 +#define I40E_GLHMC_PEMRBASE_FPMPEMRBASE_SHIFT 0 +#define I40E_GLHMC_PEMRBASE_FPMPEMRBASE_MASK (0xFFFFFF << I40E_GLHMC_PEMRBASE_FPMPEMRBASE_SHIFT) +#define I40E_GLHMC_PEMRCNT(_i) (0x000C4d00 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_PEMRCNT_MAX_INDEX 15 +#define I40E_GLHMC_PEMRCNT_FPMPEMRSZ_SHIFT 0 +#define I40E_GLHMC_PEMRCNT_FPMPEMRSZ_MASK (0x1FFFFFFF << I40E_GLHMC_PEMRCNT_FPMPEMRSZ_SHIFT) +#define I40E_GLHMC_PEMRMAX 0x000C2040 +#define I40E_GLHMC_PEMRMAX_PMPEMRMAX_SHIFT 0 +#define I40E_GLHMC_PEMRMAX_PMPEMRMAX_MASK (0x7FFFFF << I40E_GLHMC_PEMRMAX_PMPEMRMAX_SHIFT) +#define I40E_GLHMC_PEMROBJSZ 0x000C203c +#define I40E_GLHMC_PEMROBJSZ_PMPEMROBJSZ_SHIFT 0 +#define I40E_GLHMC_PEMROBJSZ_PMPEMROBJSZ_MASK (0xF << I40E_GLHMC_PEMROBJSZ_PMPEMROBJSZ_SHIFT) +#define I40E_GLHMC_PEPBLBASE(_i) (0x000C5800 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_PEPBLBASE_MAX_INDEX 15 +#define I40E_GLHMC_PEPBLBASE_FPMPEPBLBASE_SHIFT 0 +#define I40E_GLHMC_PEPBLBASE_FPMPEPBLBASE_MASK (0xFFFFFF << I40E_GLHMC_PEPBLBASE_FPMPEPBLBASE_SHIFT) +#define I40E_GLHMC_PEPBLCNT(_i) (0x000C5900 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_PEPBLCNT_MAX_INDEX 15 +#define I40E_GLHMC_PEPBLCNT_FPMPEPBLCNT_SHIFT 0 +#define I40E_GLHMC_PEPBLCNT_FPMPEPBLCNT_MASK (0x1FFFFFFF << I40E_GLHMC_PEPBLCNT_FPMPEPBLCNT_SHIFT) +#define I40E_GLHMC_PEPBLMAX 0x000C206c +#define I40E_GLHMC_PEPBLMAX_PMPEPBLMAX_SHIFT 0 +#define I40E_GLHMC_PEPBLMAX_PMPEPBLMAX_MASK (0x1FFFFFFF << I40E_GLHMC_PEPBLMAX_PMPEPBLMAX_SHIFT) +#define I40E_GLHMC_PEQ1BASE(_i) (0x000C5200 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_PEQ1BASE_MAX_INDEX 15 +#define I40E_GLHMC_PEQ1BASE_FPMPEQ1BASE_SHIFT 0 +#define I40E_GLHMC_PEQ1BASE_FPMPEQ1BASE_MASK (0xFFFFFF << I40E_GLHMC_PEQ1BASE_FPMPEQ1BASE_SHIFT) +#define I40E_GLHMC_PEQ1CNT(_i) (0x000C5300 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_PEQ1CNT_MAX_INDEX 15 +#define I40E_GLHMC_PEQ1CNT_FPMPEQ1CNT_SHIFT 0 +#define I40E_GLHMC_PEQ1CNT_FPMPEQ1CNT_MASK (0x1FFFFFFF << I40E_GLHMC_PEQ1CNT_FPMPEQ1CNT_SHIFT) +#define I40E_GLHMC_PEQ1FLBASE(_i) (0x000C5400 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_PEQ1FLBASE_MAX_INDEX 15 +#define I40E_GLHMC_PEQ1FLBASE_FPMPEQ1FLBASE_SHIFT 0 +#define I40E_GLHMC_PEQ1FLBASE_FPMPEQ1FLBASE_MASK (0xFFFFFF << I40E_GLHMC_PEQ1FLBASE_FPMPEQ1FLBASE_SHIFT) +#define I40E_GLHMC_PEQ1FLCNT(_i) (0x000C5500 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_PEQ1FLCNT_MAX_INDEX 15 +#define I40E_GLHMC_PEQ1FLCNT_FPMPEQ1FLCNT_SHIFT 0 +#define I40E_GLHMC_PEQ1FLCNT_FPMPEQ1FLCNT_MASK (0x1FFFFFFF << I40E_GLHMC_PEQ1FLCNT_FPMPEQ1FLCNT_SHIFT) +#define I40E_GLHMC_PEQ1FLMAX 0x000C2058 +#define I40E_GLHMC_PEQ1FLMAX_PMPEQ1FLMAX_SHIFT 0 +#define I40E_GLHMC_PEQ1FLMAX_PMPEQ1FLMAX_MASK (0x3FFFFFF << I40E_GLHMC_PEQ1FLMAX_PMPEQ1FLMAX_SHIFT) +#define I40E_GLHMC_PEQ1MAX 0x000C2054 +#define I40E_GLHMC_PEQ1MAX_PMPEQ1MAX_SHIFT 0 +#define I40E_GLHMC_PEQ1MAX_PMPEQ1MAX_MASK (0x3FFFFFF << I40E_GLHMC_PEQ1MAX_PMPEQ1MAX_SHIFT) +#define I40E_GLHMC_PEQ1OBJSZ 0x000C2050 +#define I40E_GLHMC_PEQ1OBJSZ_PMPEQ1OBJSZ_SHIFT 0 +#define I40E_GLHMC_PEQ1OBJSZ_PMPEQ1OBJSZ_MASK (0xF << I40E_GLHMC_PEQ1OBJSZ_PMPEQ1OBJSZ_SHIFT) +#define I40E_GLHMC_PEQPBASE(_i) (0x000C4000 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_PEQPBASE_MAX_INDEX 15 +#define I40E_GLHMC_PEQPBASE_FPMPEQPBASE_SHIFT 0 +#define I40E_GLHMC_PEQPBASE_FPMPEQPBASE_MASK (0xFFFFFF << I40E_GLHMC_PEQPBASE_FPMPEQPBASE_SHIFT) +#define I40E_GLHMC_PEQPCNT(_i) (0x000C4100 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_PEQPCNT_MAX_INDEX 15 +#define I40E_GLHMC_PEQPCNT_FPMPEQPCNT_SHIFT 0 +#define I40E_GLHMC_PEQPCNT_FPMPEQPCNT_MASK (0x1FFFFFFF << I40E_GLHMC_PEQPCNT_FPMPEQPCNT_SHIFT) +#define I40E_GLHMC_PEQPOBJSZ 0x000C201c +#define I40E_GLHMC_PEQPOBJSZ_PMPEQPOBJSZ_SHIFT 0 +#define I40E_GLHMC_PEQPOBJSZ_PMPEQPOBJSZ_MASK (0xF << I40E_GLHMC_PEQPOBJSZ_PMPEQPOBJSZ_SHIFT) +#define I40E_GLHMC_PESRQBASE(_i) (0x000C4400 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_PESRQBASE_MAX_INDEX 15 +#define I40E_GLHMC_PESRQBASE_FPMPESRQBASE_SHIFT 0 +#define I40E_GLHMC_PESRQBASE_FPMPESRQBASE_MASK (0xFFFFFF << I40E_GLHMC_PESRQBASE_FPMPESRQBASE_SHIFT) +#define I40E_GLHMC_PESRQCNT(_i) (0x000C4500 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_PESRQCNT_MAX_INDEX 15 +#define I40E_GLHMC_PESRQCNT_FPMPESRQCNT_SHIFT 0 +#define I40E_GLHMC_PESRQCNT_FPMPESRQCNT_MASK (0x1FFFFFFF << I40E_GLHMC_PESRQCNT_FPMPESRQCNT_SHIFT) +#define I40E_GLHMC_PESRQMAX 0x000C2028 +#define I40E_GLHMC_PESRQMAX_PMPESRQMAX_SHIFT 0 +#define I40E_GLHMC_PESRQMAX_PMPESRQMAX_MASK (0xFFFF << I40E_GLHMC_PESRQMAX_PMPESRQMAX_SHIFT) +#define I40E_GLHMC_PESRQOBJSZ 0x000C2024 +#define I40E_GLHMC_PESRQOBJSZ_PMPESRQOBJSZ_SHIFT 0 +#define I40E_GLHMC_PESRQOBJSZ_PMPESRQOBJSZ_MASK (0xF << I40E_GLHMC_PESRQOBJSZ_PMPESRQOBJSZ_SHIFT) +#define I40E_GLHMC_PESRQOBJSZ_RSVD_SHIFT 4 +#define I40E_GLHMC_PESRQOBJSZ_RSVD_MASK (0xFFFFFFF << I40E_GLHMC_PESRQOBJSZ_RSVD_SHIFT) +#define I40E_GLHMC_PETIMERBASE(_i) (0x000C5A00 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_PETIMERBASE_MAX_INDEX 15 +#define I40E_GLHMC_PETIMERBASE_FPMPETIMERBASE_SHIFT 0 +#define I40E_GLHMC_PETIMERBASE_FPMPETIMERBASE_MASK (0xFFFFFF << I40E_GLHMC_PETIMERBASE_FPMPETIMERBASE_SHIFT) +#define I40E_GLHMC_PETIMERCNT(_i) (0x000C5B00 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_PETIMERCNT_MAX_INDEX 15 +#define I40E_GLHMC_PETIMERCNT_FPMPETIMERCNT_SHIFT 0 +#define I40E_GLHMC_PETIMERCNT_FPMPETIMERCNT_MASK (0x1FFFFFFF << I40E_GLHMC_PETIMERCNT_FPMPETIMERCNT_SHIFT) +#define I40E_GLHMC_PETIMERMAX 0x000C2084 +#define I40E_GLHMC_PETIMERMAX_PMPETIMERMAX_SHIFT 0 +#define I40E_GLHMC_PETIMERMAX_PMPETIMERMAX_MASK (0x1FFFFFFF << I40E_GLHMC_PETIMERMAX_PMPETIMERMAX_SHIFT) +#define I40E_GLHMC_PETIMEROBJSZ 0x000C2080 +#define I40E_GLHMC_PETIMEROBJSZ_PMPETIMEROBJSZ_SHIFT 0 +#define I40E_GLHMC_PETIMEROBJSZ_PMPETIMEROBJSZ_MASK (0xF << I40E_GLHMC_PETIMEROBJSZ_PMPETIMEROBJSZ_SHIFT) +#define I40E_GLHMC_PEXFBASE(_i) (0x000C4e00 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_PEXFBASE_MAX_INDEX 15 +#define I40E_GLHMC_PEXFBASE_FPMPEXFBASE_SHIFT 0 +#define I40E_GLHMC_PEXFBASE_FPMPEXFBASE_MASK (0xFFFFFF << I40E_GLHMC_PEXFBASE_FPMPEXFBASE_SHIFT) +#define I40E_GLHMC_PEXFCNT(_i) (0x000C4f00 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_PEXFCNT_MAX_INDEX 15 +#define I40E_GLHMC_PEXFCNT_FPMPEXFCNT_SHIFT 0 +#define I40E_GLHMC_PEXFCNT_FPMPEXFCNT_MASK (0x1FFFFFFF << I40E_GLHMC_PEXFCNT_FPMPEXFCNT_SHIFT) +#define I40E_GLHMC_PEXFFLBASE(_i) (0x000C5000 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_PEXFFLBASE_MAX_INDEX 15 +#define I40E_GLHMC_PEXFFLBASE_FPMPEXFFLBASE_SHIFT 0 +#define I40E_GLHMC_PEXFFLBASE_FPMPEXFFLBASE_MASK (0xFFFFFF << I40E_GLHMC_PEXFFLBASE_FPMPEXFFLBASE_SHIFT) +#define I40E_GLHMC_PEXFFLCNT(_i) (0x000C5100 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_PEXFFLCNT_MAX_INDEX 15 +#define I40E_GLHMC_PEXFFLCNT_FPMPEXFFLCNT_SHIFT 0 +#define I40E_GLHMC_PEXFFLCNT_FPMPEXFFLCNT_MASK (0x1FFFFFFF << I40E_GLHMC_PEXFFLCNT_FPMPEXFFLCNT_SHIFT) +#define I40E_GLHMC_PEXFFLMAX 0x000C204c +#define I40E_GLHMC_PEXFFLMAX_PMPEXFFLMAX_SHIFT 0 +#define I40E_GLHMC_PEXFFLMAX_PMPEXFFLMAX_MASK (0x1FFFFFF << I40E_GLHMC_PEXFFLMAX_PMPEXFFLMAX_SHIFT) +#define I40E_GLHMC_PEXFMAX 0x000C2048 +#define I40E_GLHMC_PEXFMAX_PMPEXFMAX_SHIFT 0 +#define I40E_GLHMC_PEXFMAX_PMPEXFMAX_MASK (0x3FFFFFF << I40E_GLHMC_PEXFMAX_PMPEXFMAX_SHIFT) +#define I40E_GLHMC_PEXFOBJSZ 0x000C2044 +#define I40E_GLHMC_PEXFOBJSZ_PMPEXFOBJSZ_SHIFT 0 +#define I40E_GLHMC_PEXFOBJSZ_PMPEXFOBJSZ_MASK (0xF << I40E_GLHMC_PEXFOBJSZ_PMPEXFOBJSZ_SHIFT) +#define I40E_GLHMC_PEXFOBJSZ_RSVD_SHIFT 4 +#define I40E_GLHMC_PEXFOBJSZ_RSVD_MASK (0xFFFFFFF << I40E_GLHMC_PEXFOBJSZ_RSVD_SHIFT) +#define I40E_GLHMC_PFASSIGN(_i) (0x000C0c00 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_PFASSIGN_MAX_INDEX 15 +#define I40E_GLHMC_PFASSIGN_PMFCNPFASSIGN_SHIFT 0 +#define I40E_GLHMC_PFASSIGN_PMFCNPFASSIGN_MASK (0xF << I40E_GLHMC_PFASSIGN_PMFCNPFASSIGN_SHIFT) +#define I40E_GLHMC_SDPART(_i) (0x000C0800 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLHMC_SDPART_MAX_INDEX 15 +#define I40E_GLHMC_SDPART_PMSDBASE_SHIFT 0 +#define I40E_GLHMC_SDPART_PMSDBASE_MASK (0xFFF << I40E_GLHMC_SDPART_PMSDBASE_SHIFT) +#define I40E_GLHMC_SDPART_PMSDSIZE_SHIFT 16 +#define I40E_GLHMC_SDPART_PMSDSIZE_MASK (0x1FFF << I40E_GLHMC_SDPART_PMSDSIZE_SHIFT) +#define I40E_GLHMC_VFAPBVTINUSEBASE(_i) (0x000Cca00 + ((_i) * 4)) +#define I40E_GLHMC_VFAPBVTINUSEBASE_MAX_INDEX 31 +#define I40E_GLHMC_VFAPBVTINUSEBASE_FPMAPBINUSEBASE_SHIFT 0 +#define I40E_GLHMC_VFAPBVTINUSEBASE_FPMAPBINUSEBASE_MASK (0xFFFFFF << I40E_GLHMC_VFAPBVTINUSEBASE_FPMAPBINUSEBASE_SHIFT) +#define I40E_GLHMC_VFCEQPART(_i) (0x00132240 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLHMC_VFCEQPART_MAX_INDEX 31 +#define I40E_GLHMC_VFCEQPART_PMCEQBASE_SHIFT 0 +#define I40E_GLHMC_VFCEQPART_PMCEQBASE_MASK (0xFF << I40E_GLHMC_VFCEQPART_PMCEQBASE_SHIFT) +#define I40E_GLHMC_VFCEQPART_PMCEQSIZE_SHIFT 16 +#define I40E_GLHMC_VFCEQPART_PMCEQSIZE_MASK (0x1FF << I40E_GLHMC_VFCEQPART_PMCEQSIZE_SHIFT) +#define I40E_GLHMC_VFDBCQPART(_i) (0x00132140 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLHMC_VFDBCQPART_MAX_INDEX 31 +#define I40E_GLHMC_VFDBCQPART_PMDBCQBASE_SHIFT 0 +#define I40E_GLHMC_VFDBCQPART_PMDBCQBASE_MASK (0x3FFF << I40E_GLHMC_VFDBCQPART_PMDBCQBASE_SHIFT) +#define I40E_GLHMC_VFDBCQPART_PMDBCQSIZE_SHIFT 16 +#define I40E_GLHMC_VFDBCQPART_PMDBCQSIZE_MASK (0x7FFF << I40E_GLHMC_VFDBCQPART_PMDBCQSIZE_SHIFT) +#define I40E_GLHMC_VFDBQPPART(_i) (0x00138E00 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLHMC_VFDBQPPART_MAX_INDEX 31 +#define I40E_GLHMC_VFDBQPPART_PMDBQPBASE_SHIFT 0 +#define I40E_GLHMC_VFDBQPPART_PMDBQPBASE_MASK (0x3FFF << I40E_GLHMC_VFDBQPPART_PMDBQPBASE_SHIFT) +#define I40E_GLHMC_VFDBQPPART_PMDBQPSIZE_SHIFT 16 +#define I40E_GLHMC_VFDBQPPART_PMDBQPSIZE_MASK (0x7FFF << I40E_GLHMC_VFDBQPPART_PMDBQPSIZE_SHIFT) +#define I40E_GLHMC_VFFSIAVBASE(_i) (0x000Cd600 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLHMC_VFFSIAVBASE_MAX_INDEX 31 +#define I40E_GLHMC_VFFSIAVBASE_FPMFSIAVBASE_SHIFT 0 +#define I40E_GLHMC_VFFSIAVBASE_FPMFSIAVBASE_MASK (0xFFFFFF << I40E_GLHMC_VFFSIAVBASE_FPMFSIAVBASE_SHIFT) +#define I40E_GLHMC_VFFSIAVCNT(_i) (0x000Cd700 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLHMC_VFFSIAVCNT_MAX_INDEX 31 +#define I40E_GLHMC_VFFSIAVCNT_FPMFSIAVCNT_SHIFT 0 +#define I40E_GLHMC_VFFSIAVCNT_FPMFSIAVCNT_MASK (0x1FFFFFFF << I40E_GLHMC_VFFSIAVCNT_FPMFSIAVCNT_SHIFT) +#define I40E_GLHMC_VFFSIAVCNT_RSVD_SHIFT 29 +#define I40E_GLHMC_VFFSIAVCNT_RSVD_MASK (0x7 << I40E_GLHMC_VFFSIAVCNT_RSVD_SHIFT) +#define I40E_GLHMC_VFPDINV(_i) (0x000C8300 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLHMC_VFPDINV_MAX_INDEX 31 +#define I40E_GLHMC_VFPDINV_PMSDIDX_SHIFT 0 +#define I40E_GLHMC_VFPDINV_PMSDIDX_MASK (0xFFF << I40E_GLHMC_VFPDINV_PMSDIDX_SHIFT) +#define I40E_GLHMC_VFPDINV_PMPDIDX_SHIFT 16 +#define I40E_GLHMC_VFPDINV_PMPDIDX_MASK (0x1FF << I40E_GLHMC_VFPDINV_PMPDIDX_SHIFT) +#define I40E_GLHMC_VFPEARPBASE(_i) (0x000Cc800 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLHMC_VFPEARPBASE_MAX_INDEX 31 +#define I40E_GLHMC_VFPEARPBASE_FPMPEARPBASE_SHIFT 0 +#define I40E_GLHMC_VFPEARPBASE_FPMPEARPBASE_MASK (0xFFFFFF << I40E_GLHMC_VFPEARPBASE_FPMPEARPBASE_SHIFT) +#define I40E_GLHMC_VFPEARPCNT(_i) (0x000Cc900 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLHMC_VFPEARPCNT_MAX_INDEX 31 +#define I40E_GLHMC_VFPEARPCNT_FPMPEARPCNT_SHIFT 0 +#define I40E_GLHMC_VFPEARPCNT_FPMPEARPCNT_MASK (0x1FFFFFFF << I40E_GLHMC_VFPEARPCNT_FPMPEARPCNT_SHIFT) +#define I40E_GLHMC_VFPECQBASE(_i) (0x000Cc200 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLHMC_VFPECQBASE_MAX_INDEX 31 +#define I40E_GLHMC_VFPECQBASE_FPMPECQBASE_SHIFT 0 +#define I40E_GLHMC_VFPECQBASE_FPMPECQBASE_MASK (0xFFFFFF << I40E_GLHMC_VFPECQBASE_FPMPECQBASE_SHIFT) +#define I40E_GLHMC_VFPECQCNT(_i) (0x000Cc300 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLHMC_VFPECQCNT_MAX_INDEX 31 +#define I40E_GLHMC_VFPECQCNT_FPMPECQCNT_SHIFT 0 +#define I40E_GLHMC_VFPECQCNT_FPMPECQCNT_MASK (0x1FFFFFFF << I40E_GLHMC_VFPECQCNT_FPMPECQCNT_SHIFT) +#define I40E_GLHMC_VFPEHTCNT(_i) (0x000Cc700 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLHMC_VFPEHTCNT_MAX_INDEX 31 +#define I40E_GLHMC_VFPEHTCNT_FPMPEHTCNT_SHIFT 0 +#define I40E_GLHMC_VFPEHTCNT_FPMPEHTCNT_MASK (0x1FFFFFFF << I40E_GLHMC_VFPEHTCNT_FPMPEHTCNT_SHIFT) +#define I40E_GLHMC_VFPEHTEBASE(_i) (0x000Cc600 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLHMC_VFPEHTEBASE_MAX_INDEX 31 +#define I40E_GLHMC_VFPEHTEBASE_FPMPEHTEBASE_SHIFT 0 +#define I40E_GLHMC_VFPEHTEBASE_FPMPEHTEBASE_MASK (0xFFFFFF << I40E_GLHMC_VFPEHTEBASE_FPMPEHTEBASE_SHIFT) +#define I40E_GLHMC_VFPEMRBASE(_i) (0x000Ccc00 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLHMC_VFPEMRBASE_MAX_INDEX 31 +#define I40E_GLHMC_VFPEMRBASE_FPMPEMRBASE_SHIFT 0 +#define I40E_GLHMC_VFPEMRBASE_FPMPEMRBASE_MASK (0xFFFFFF << I40E_GLHMC_VFPEMRBASE_FPMPEMRBASE_SHIFT) +#define I40E_GLHMC_VFPEMRCNT(_i) (0x000Ccd00 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLHMC_VFPEMRCNT_MAX_INDEX 31 +#define I40E_GLHMC_VFPEMRCNT_FPMPEMRSZ_SHIFT 0 +#define I40E_GLHMC_VFPEMRCNT_FPMPEMRSZ_MASK (0x1FFFFFFF << I40E_GLHMC_VFPEMRCNT_FPMPEMRSZ_SHIFT) +#define I40E_GLHMC_VFPEPBLBASE(_i) (0x000Cd800 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLHMC_VFPEPBLBASE_MAX_INDEX 31 +#define I40E_GLHMC_VFPEPBLBASE_FPMPEPBLBASE_SHIFT 0 +#define I40E_GLHMC_VFPEPBLBASE_FPMPEPBLBASE_MASK (0xFFFFFF << I40E_GLHMC_VFPEPBLBASE_FPMPEPBLBASE_SHIFT) +#define I40E_GLHMC_VFPEPBLCNT(_i) (0x000Cd900 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLHMC_VFPEPBLCNT_MAX_INDEX 31 +#define I40E_GLHMC_VFPEPBLCNT_FPMPEPBLCNT_SHIFT 0 +#define I40E_GLHMC_VFPEPBLCNT_FPMPEPBLCNT_MASK (0x1FFFFFFF << I40E_GLHMC_VFPEPBLCNT_FPMPEPBLCNT_SHIFT) +#define I40E_GLHMC_VFPEQ1BASE(_i) (0x000Cd200 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLHMC_VFPEQ1BASE_MAX_INDEX 31 +#define I40E_GLHMC_VFPEQ1BASE_FPMPEQ1BASE_SHIFT 0 +#define I40E_GLHMC_VFPEQ1BASE_FPMPEQ1BASE_MASK (0xFFFFFF << I40E_GLHMC_VFPEQ1BASE_FPMPEQ1BASE_SHIFT) +#define I40E_GLHMC_VFPEQ1CNT(_i) (0x000Cd300 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLHMC_VFPEQ1CNT_MAX_INDEX 31 +#define I40E_GLHMC_VFPEQ1CNT_FPMPEQ1CNT_SHIFT 0 +#define I40E_GLHMC_VFPEQ1CNT_FPMPEQ1CNT_MASK (0x1FFFFFFF << I40E_GLHMC_VFPEQ1CNT_FPMPEQ1CNT_SHIFT) +#define I40E_GLHMC_VFPEQ1FLBASE(_i) (0x000Cd400 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLHMC_VFPEQ1FLBASE_MAX_INDEX 31 +#define I40E_GLHMC_VFPEQ1FLBASE_FPMPEQ1FLBASE_SHIFT 0 +#define I40E_GLHMC_VFPEQ1FLBASE_FPMPEQ1FLBASE_MASK (0xFFFFFF << I40E_GLHMC_VFPEQ1FLBASE_FPMPEQ1FLBASE_SHIFT) +#define I40E_GLHMC_VFPEQ1FLCNT(_i) (0x000Cd500 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLHMC_VFPEQ1FLCNT_MAX_INDEX 31 +#define I40E_GLHMC_VFPEQ1FLCNT_FPMPEQ1FLCNT_SHIFT 0 +#define I40E_GLHMC_VFPEQ1FLCNT_FPMPEQ1FLCNT_MASK (0x1FFFFFFF << I40E_GLHMC_VFPEQ1FLCNT_FPMPEQ1FLCNT_SHIFT) +#define I40E_GLHMC_VFPEQPBASE(_i) (0x000Cc000 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLHMC_VFPEQPBASE_MAX_INDEX 31 +#define I40E_GLHMC_VFPEQPBASE_FPMPEQPBASE_SHIFT 0 +#define I40E_GLHMC_VFPEQPBASE_FPMPEQPBASE_MASK (0xFFFFFF << I40E_GLHMC_VFPEQPBASE_FPMPEQPBASE_SHIFT) +#define I40E_GLHMC_VFPEQPCNT(_i) (0x000Cc100 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLHMC_VFPEQPCNT_MAX_INDEX 31 +#define I40E_GLHMC_VFPEQPCNT_FPMPEQPCNT_SHIFT 0 +#define I40E_GLHMC_VFPEQPCNT_FPMPEQPCNT_MASK (0x1FFFFFFF << I40E_GLHMC_VFPEQPCNT_FPMPEQPCNT_SHIFT) +#define I40E_GLHMC_VFPESRQBASE(_i) (0x000Cc400 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLHMC_VFPESRQBASE_MAX_INDEX 31 +#define I40E_GLHMC_VFPESRQBASE_FPMPESRQBASE_SHIFT 0 +#define I40E_GLHMC_VFPESRQBASE_FPMPESRQBASE_MASK (0xFFFFFF << I40E_GLHMC_VFPESRQBASE_FPMPESRQBASE_SHIFT) +#define I40E_GLHMC_VFPESRQCNT(_i) (0x000Cc500 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLHMC_VFPESRQCNT_MAX_INDEX 31 +#define I40E_GLHMC_VFPESRQCNT_FPMPESRQCNT_SHIFT 0 +#define I40E_GLHMC_VFPESRQCNT_FPMPESRQCNT_MASK (0x1FFFFFFF << I40E_GLHMC_VFPESRQCNT_FPMPESRQCNT_SHIFT) +#define I40E_GLHMC_VFPETIMERBASE(_i) (0x000CDA00 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLHMC_VFPETIMERBASE_MAX_INDEX 31 +#define I40E_GLHMC_VFPETIMERBASE_FPMPETIMERBASE_SHIFT 0 +#define I40E_GLHMC_VFPETIMERBASE_FPMPETIMERBASE_MASK (0xFFFFFF << I40E_GLHMC_VFPETIMERBASE_FPMPETIMERBASE_SHIFT) +#define I40E_GLHMC_VFPETIMERCNT(_i) (0x000CDB00 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLHMC_VFPETIMERCNT_MAX_INDEX 31 +#define I40E_GLHMC_VFPETIMERCNT_FPMPETIMERCNT_SHIFT 0 +#define I40E_GLHMC_VFPETIMERCNT_FPMPETIMERCNT_MASK (0x1FFFFFFF << I40E_GLHMC_VFPETIMERCNT_FPMPETIMERCNT_SHIFT) +#define I40E_GLHMC_VFPEXFBASE(_i) (0x000Cce00 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLHMC_VFPEXFBASE_MAX_INDEX 31 +#define I40E_GLHMC_VFPEXFBASE_FPMPEXFBASE_SHIFT 0 +#define I40E_GLHMC_VFPEXFBASE_FPMPEXFBASE_MASK (0xFFFFFF << I40E_GLHMC_VFPEXFBASE_FPMPEXFBASE_SHIFT) +#define I40E_GLHMC_VFPEXFCNT(_i) (0x000Ccf00 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLHMC_VFPEXFCNT_MAX_INDEX 31 +#define I40E_GLHMC_VFPEXFCNT_FPMPEXFCNT_SHIFT 0 +#define I40E_GLHMC_VFPEXFCNT_FPMPEXFCNT_MASK (0x1FFFFFFF << I40E_GLHMC_VFPEXFCNT_FPMPEXFCNT_SHIFT) +#define I40E_GLHMC_VFPEXFFLBASE(_i) (0x000Cd000 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLHMC_VFPEXFFLBASE_MAX_INDEX 31 +#define I40E_GLHMC_VFPEXFFLBASE_FPMPEXFFLBASE_SHIFT 0 +#define I40E_GLHMC_VFPEXFFLBASE_FPMPEXFFLBASE_MASK (0xFFFFFF << I40E_GLHMC_VFPEXFFLBASE_FPMPEXFFLBASE_SHIFT) +#define I40E_GLHMC_VFPEXFFLCNT(_i) (0x000Cd100 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLHMC_VFPEXFFLCNT_MAX_INDEX 31 +#define I40E_GLHMC_VFPEXFFLCNT_FPMPEXFFLCNT_SHIFT 0 +#define I40E_GLHMC_VFPEXFFLCNT_FPMPEXFFLCNT_MASK (0x1FFFFFFF << I40E_GLHMC_VFPEXFFLCNT_FPMPEXFFLCNT_SHIFT) +#define I40E_GLHMC_VFSDPART(_i) (0x000C8800 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLHMC_VFSDPART_MAX_INDEX 31 +#define I40E_GLHMC_VFSDPART_PMSDBASE_SHIFT 0 +#define I40E_GLHMC_VFSDPART_PMSDBASE_MASK (0xFFF << I40E_GLHMC_VFSDPART_PMSDBASE_SHIFT) +#define I40E_GLHMC_VFSDPART_PMSDSIZE_SHIFT 16 +#define I40E_GLHMC_VFSDPART_PMSDSIZE_MASK (0x1FFF << I40E_GLHMC_VFSDPART_PMSDSIZE_SHIFT) +#define I40E_PFHMC_ERRORDATA 0x000C0500 +#define I40E_PFHMC_ERRORDATA_HMC_ERROR_DATA_SHIFT 0 +#define I40E_PFHMC_ERRORDATA_HMC_ERROR_DATA_MASK (0x3FFFFFFF << I40E_PFHMC_ERRORDATA_HMC_ERROR_DATA_SHIFT) +#define I40E_PFHMC_ERRORINFO 0x000C0400 +#define I40E_PFHMC_ERRORINFO_PMF_INDEX_SHIFT 0 +#define I40E_PFHMC_ERRORINFO_PMF_INDEX_MASK (0x1F << I40E_PFHMC_ERRORINFO_PMF_INDEX_SHIFT) +#define I40E_PFHMC_ERRORINFO_PMF_ISVF_SHIFT 7 +#define I40E_PFHMC_ERRORINFO_PMF_ISVF_MASK (0x1 << I40E_PFHMC_ERRORINFO_PMF_ISVF_SHIFT) +#define I40E_PFHMC_ERRORINFO_HMC_ERROR_TYPE_SHIFT 8 +#define I40E_PFHMC_ERRORINFO_HMC_ERROR_TYPE_MASK (0xF << I40E_PFHMC_ERRORINFO_HMC_ERROR_TYPE_SHIFT) +#define I40E_PFHMC_ERRORINFO_HMC_OBJECT_TYPE_SHIFT 16 +#define I40E_PFHMC_ERRORINFO_HMC_OBJECT_TYPE_MASK (0x1F << I40E_PFHMC_ERRORINFO_HMC_OBJECT_TYPE_SHIFT) +#define I40E_PFHMC_ERRORINFO_ERROR_DETECTED_SHIFT 31 +#define I40E_PFHMC_ERRORINFO_ERROR_DETECTED_MASK (0x1 << I40E_PFHMC_ERRORINFO_ERROR_DETECTED_SHIFT) +#define I40E_PFHMC_PDINV 0x000C0300 +#define I40E_PFHMC_PDINV_PMSDIDX_SHIFT 0 +#define I40E_PFHMC_PDINV_PMSDIDX_MASK (0xFFF << I40E_PFHMC_PDINV_PMSDIDX_SHIFT) +#define I40E_PFHMC_PDINV_PMPDIDX_SHIFT 16 +#define I40E_PFHMC_PDINV_PMPDIDX_MASK (0x1FF << I40E_PFHMC_PDINV_PMPDIDX_SHIFT) +#define I40E_PFHMC_SDCMD 0x000C0000 +#define I40E_PFHMC_SDCMD_PMSDIDX_SHIFT 0 +#define I40E_PFHMC_SDCMD_PMSDIDX_MASK (0xFFF << I40E_PFHMC_SDCMD_PMSDIDX_SHIFT) +#define I40E_PFHMC_SDCMD_PMSDWR_SHIFT 31 +#define I40E_PFHMC_SDCMD_PMSDWR_MASK (0x1 << I40E_PFHMC_SDCMD_PMSDWR_SHIFT) +#define I40E_PFHMC_SDDATAHIGH 0x000C0200 +#define I40E_PFHMC_SDDATAHIGH_PMSDDATAHIGH_SHIFT 0 +#define I40E_PFHMC_SDDATAHIGH_PMSDDATAHIGH_MASK (0xFFFFFFFF << I40E_PFHMC_SDDATAHIGH_PMSDDATAHIGH_SHIFT) +#define I40E_PFHMC_SDDATALOW 0x000C0100 +#define I40E_PFHMC_SDDATALOW_PMSDVALID_SHIFT 0 +#define I40E_PFHMC_SDDATALOW_PMSDVALID_MASK (0x1 << I40E_PFHMC_SDDATALOW_PMSDVALID_SHIFT) +#define I40E_PFHMC_SDDATALOW_PMSDTYPE_SHIFT 1 +#define I40E_PFHMC_SDDATALOW_PMSDTYPE_MASK (0x1 << I40E_PFHMC_SDDATALOW_PMSDTYPE_SHIFT) +#define I40E_PFHMC_SDDATALOW_PMSDBPCOUNT_SHIFT 2 +#define I40E_PFHMC_SDDATALOW_PMSDBPCOUNT_MASK (0x3FF << I40E_PFHMC_SDDATALOW_PMSDBPCOUNT_SHIFT) +#define I40E_PFHMC_SDDATALOW_PMSDDATALOW_SHIFT 12 +#define I40E_PFHMC_SDDATALOW_PMSDDATALOW_MASK (0xFFFFF << I40E_PFHMC_SDDATALOW_PMSDDATALOW_SHIFT) +#define I40E_GL_UFUSE 0x00094008 +#define I40E_GL_UFUSE_FOUR_PORT_ENABLE_SHIFT 1 +#define I40E_GL_UFUSE_FOUR_PORT_ENABLE_MASK (0x1 << I40E_GL_UFUSE_FOUR_PORT_ENABLE_SHIFT) +#define I40E_GL_UFUSE_NIC_ID_SHIFT 2 +#define I40E_GL_UFUSE_NIC_ID_MASK (0x1 << I40E_GL_UFUSE_NIC_ID_SHIFT) +#define I40E_GL_UFUSE_ULT_LOCKOUT_SHIFT 10 +#define I40E_GL_UFUSE_ULT_LOCKOUT_MASK (0x1 << I40E_GL_UFUSE_ULT_LOCKOUT_SHIFT) +#define I40E_GL_UFUSE_CLS_LOCKOUT_SHIFT 11 +#define I40E_GL_UFUSE_CLS_LOCKOUT_MASK (0x1 << I40E_GL_UFUSE_CLS_LOCKOUT_SHIFT) +#define I40E_EMPINT_GPIO_ENA 0x00088188 +#define I40E_EMPINT_GPIO_ENA_GPIO0_ENA_SHIFT 0 +#define I40E_EMPINT_GPIO_ENA_GPIO0_ENA_MASK (0x1 << I40E_EMPINT_GPIO_ENA_GPIO0_ENA_SHIFT) +#define I40E_EMPINT_GPIO_ENA_GPIO1_ENA_SHIFT 1 +#define I40E_EMPINT_GPIO_ENA_GPIO1_ENA_MASK (0x1 << I40E_EMPINT_GPIO_ENA_GPIO1_ENA_SHIFT) +#define I40E_EMPINT_GPIO_ENA_GPIO2_ENA_SHIFT 2 +#define I40E_EMPINT_GPIO_ENA_GPIO2_ENA_MASK (0x1 << I40E_EMPINT_GPIO_ENA_GPIO2_ENA_SHIFT) +#define I40E_EMPINT_GPIO_ENA_GPIO3_ENA_SHIFT 3 +#define I40E_EMPINT_GPIO_ENA_GPIO3_ENA_MASK (0x1 << I40E_EMPINT_GPIO_ENA_GPIO3_ENA_SHIFT) +#define I40E_EMPINT_GPIO_ENA_GPIO4_ENA_SHIFT 4 +#define I40E_EMPINT_GPIO_ENA_GPIO4_ENA_MASK (0x1 << I40E_EMPINT_GPIO_ENA_GPIO4_ENA_SHIFT) +#define I40E_EMPINT_GPIO_ENA_GPIO5_ENA_SHIFT 5 +#define I40E_EMPINT_GPIO_ENA_GPIO5_ENA_MASK (0x1 << I40E_EMPINT_GPIO_ENA_GPIO5_ENA_SHIFT) +#define I40E_EMPINT_GPIO_ENA_GPIO6_ENA_SHIFT 6 +#define I40E_EMPINT_GPIO_ENA_GPIO6_ENA_MASK (0x1 << I40E_EMPINT_GPIO_ENA_GPIO6_ENA_SHIFT) +#define I40E_EMPINT_GPIO_ENA_GPIO7_ENA_SHIFT 7 +#define I40E_EMPINT_GPIO_ENA_GPIO7_ENA_MASK (0x1 << I40E_EMPINT_GPIO_ENA_GPIO7_ENA_SHIFT) +#define I40E_EMPINT_GPIO_ENA_GPIO8_ENA_SHIFT 8 +#define I40E_EMPINT_GPIO_ENA_GPIO8_ENA_MASK (0x1 << I40E_EMPINT_GPIO_ENA_GPIO8_ENA_SHIFT) +#define I40E_EMPINT_GPIO_ENA_GPIO9_ENA_SHIFT 9 +#define I40E_EMPINT_GPIO_ENA_GPIO9_ENA_MASK (0x1 << I40E_EMPINT_GPIO_ENA_GPIO9_ENA_SHIFT) +#define I40E_EMPINT_GPIO_ENA_GPIO10_ENA_SHIFT 10 +#define I40E_EMPINT_GPIO_ENA_GPIO10_ENA_MASK (0x1 << I40E_EMPINT_GPIO_ENA_GPIO10_ENA_SHIFT) +#define I40E_EMPINT_GPIO_ENA_GPIO11_ENA_SHIFT 11 +#define I40E_EMPINT_GPIO_ENA_GPIO11_ENA_MASK (0x1 << I40E_EMPINT_GPIO_ENA_GPIO11_ENA_SHIFT) +#define I40E_EMPINT_GPIO_ENA_GPIO12_ENA_SHIFT 12 +#define I40E_EMPINT_GPIO_ENA_GPIO12_ENA_MASK (0x1 << I40E_EMPINT_GPIO_ENA_GPIO12_ENA_SHIFT) +#define I40E_EMPINT_GPIO_ENA_GPIO13_ENA_SHIFT 13 +#define I40E_EMPINT_GPIO_ENA_GPIO13_ENA_MASK (0x1 << I40E_EMPINT_GPIO_ENA_GPIO13_ENA_SHIFT) +#define I40E_EMPINT_GPIO_ENA_GPIO14_ENA_SHIFT 14 +#define I40E_EMPINT_GPIO_ENA_GPIO14_ENA_MASK (0x1 << I40E_EMPINT_GPIO_ENA_GPIO14_ENA_SHIFT) +#define I40E_EMPINT_GPIO_ENA_GPIO15_ENA_SHIFT 15 +#define I40E_EMPINT_GPIO_ENA_GPIO15_ENA_MASK (0x1 << I40E_EMPINT_GPIO_ENA_GPIO15_ENA_SHIFT) +#define I40E_EMPINT_GPIO_ENA_GPIO16_ENA_SHIFT 16 +#define I40E_EMPINT_GPIO_ENA_GPIO16_ENA_MASK (0x1 << I40E_EMPINT_GPIO_ENA_GPIO16_ENA_SHIFT) +#define I40E_EMPINT_GPIO_ENA_GPIO17_ENA_SHIFT 17 +#define I40E_EMPINT_GPIO_ENA_GPIO17_ENA_MASK (0x1 << I40E_EMPINT_GPIO_ENA_GPIO17_ENA_SHIFT) +#define I40E_EMPINT_GPIO_ENA_GPIO18_ENA_SHIFT 18 +#define I40E_EMPINT_GPIO_ENA_GPIO18_ENA_MASK (0x1 << I40E_EMPINT_GPIO_ENA_GPIO18_ENA_SHIFT) +#define I40E_EMPINT_GPIO_ENA_GPIO19_ENA_SHIFT 19 +#define I40E_EMPINT_GPIO_ENA_GPIO19_ENA_MASK (0x1 << I40E_EMPINT_GPIO_ENA_GPIO19_ENA_SHIFT) +#define I40E_EMPINT_GPIO_ENA_GPIO20_ENA_SHIFT 20 +#define I40E_EMPINT_GPIO_ENA_GPIO20_ENA_MASK (0x1 << I40E_EMPINT_GPIO_ENA_GPIO20_ENA_SHIFT) +#define I40E_EMPINT_GPIO_ENA_GPIO21_ENA_SHIFT 21 +#define I40E_EMPINT_GPIO_ENA_GPIO21_ENA_MASK (0x1 << I40E_EMPINT_GPIO_ENA_GPIO21_ENA_SHIFT) +#define I40E_EMPINT_GPIO_ENA_GPIO22_ENA_SHIFT 22 +#define I40E_EMPINT_GPIO_ENA_GPIO22_ENA_MASK (0x1 << I40E_EMPINT_GPIO_ENA_GPIO22_ENA_SHIFT) +#define I40E_EMPINT_GPIO_ENA_GPIO23_ENA_SHIFT 23 +#define I40E_EMPINT_GPIO_ENA_GPIO23_ENA_MASK (0x1 << I40E_EMPINT_GPIO_ENA_GPIO23_ENA_SHIFT) +#define I40E_EMPINT_GPIO_ENA_GPIO24_ENA_SHIFT 24 +#define I40E_EMPINT_GPIO_ENA_GPIO24_ENA_MASK (0x1 << I40E_EMPINT_GPIO_ENA_GPIO24_ENA_SHIFT) +#define I40E_EMPINT_GPIO_ENA_GPIO25_ENA_SHIFT 25 +#define I40E_EMPINT_GPIO_ENA_GPIO25_ENA_MASK (0x1 << I40E_EMPINT_GPIO_ENA_GPIO25_ENA_SHIFT) +#define I40E_EMPINT_GPIO_ENA_GPIO26_ENA_SHIFT 26 +#define I40E_EMPINT_GPIO_ENA_GPIO26_ENA_MASK (0x1 << I40E_EMPINT_GPIO_ENA_GPIO26_ENA_SHIFT) +#define I40E_EMPINT_GPIO_ENA_GPIO27_ENA_SHIFT 27 +#define I40E_EMPINT_GPIO_ENA_GPIO27_ENA_MASK (0x1 << I40E_EMPINT_GPIO_ENA_GPIO27_ENA_SHIFT) +#define I40E_EMPINT_GPIO_ENA_GPIO28_ENA_SHIFT 28 +#define I40E_EMPINT_GPIO_ENA_GPIO28_ENA_MASK (0x1 << I40E_EMPINT_GPIO_ENA_GPIO28_ENA_SHIFT) +#define I40E_EMPINT_GPIO_ENA_GPIO29_ENA_SHIFT 29 +#define I40E_EMPINT_GPIO_ENA_GPIO29_ENA_MASK (0x1 << I40E_EMPINT_GPIO_ENA_GPIO29_ENA_SHIFT) +#define I40E_PFGEN_PORTMDIO_NUM 0x0003F100 +#define I40E_PFGEN_PORTMDIO_NUM_PORT_NUM_SHIFT 0 +#define I40E_PFGEN_PORTMDIO_NUM_PORT_NUM_MASK (0x3 << I40E_PFGEN_PORTMDIO_NUM_PORT_NUM_SHIFT) +#define I40E_PFGEN_PORTMDIO_NUM_VFLINK_STAT_ENA_SHIFT 4 +#define I40E_PFGEN_PORTMDIO_NUM_VFLINK_STAT_ENA_MASK (0x1 << I40E_PFGEN_PORTMDIO_NUM_VFLINK_STAT_ENA_SHIFT) +#define I40E_PFINT_AEQCTL 0x00038700 +#define I40E_PFINT_AEQCTL_MSIX_INDX_SHIFT 0 +#define I40E_PFINT_AEQCTL_MSIX_INDX_MASK (0xFF << I40E_PFINT_AEQCTL_MSIX_INDX_SHIFT) +#define I40E_PFINT_AEQCTL_ITR_INDX_SHIFT 11 +#define I40E_PFINT_AEQCTL_ITR_INDX_MASK (0x3 << I40E_PFINT_AEQCTL_ITR_INDX_SHIFT) +#define I40E_PFINT_AEQCTL_MSIX0_INDX_SHIFT 13 +#define I40E_PFINT_AEQCTL_MSIX0_INDX_MASK (0x7 << I40E_PFINT_AEQCTL_MSIX0_INDX_SHIFT) +#define I40E_PFINT_AEQCTL_CAUSE_ENA_SHIFT 30 +#define I40E_PFINT_AEQCTL_CAUSE_ENA_MASK (0x1 << I40E_PFINT_AEQCTL_CAUSE_ENA_SHIFT) +#define I40E_PFINT_AEQCTL_INTEVENT_SHIFT 31 +#define I40E_PFINT_AEQCTL_INTEVENT_MASK (0x1 << I40E_PFINT_AEQCTL_INTEVENT_SHIFT) +#define I40E_PFINT_CEQCTL(_INTPF) (0x00036800 + ((_INTPF) * 4)) /* _i=0...511 */ +#define I40E_PFINT_CEQCTL_MAX_INDEX 511 +#define I40E_PFINT_CEQCTL_MSIX_INDX_SHIFT 0 +#define I40E_PFINT_CEQCTL_MSIX_INDX_MASK (0xFF << I40E_PFINT_CEQCTL_MSIX_INDX_SHIFT) +#define I40E_PFINT_CEQCTL_ITR_INDX_SHIFT 11 +#define I40E_PFINT_CEQCTL_ITR_INDX_MASK (0x3 << I40E_PFINT_CEQCTL_ITR_INDX_SHIFT) +#define I40E_PFINT_CEQCTL_MSIX0_INDX_SHIFT 13 +#define I40E_PFINT_CEQCTL_MSIX0_INDX_MASK (0x7 << I40E_PFINT_CEQCTL_MSIX0_INDX_SHIFT) +#define I40E_PFINT_CEQCTL_NEXTQ_INDX_SHIFT 16 +#define I40E_PFINT_CEQCTL_NEXTQ_INDX_MASK (0x7FF << I40E_PFINT_CEQCTL_NEXTQ_INDX_SHIFT) +#define I40E_PFINT_CEQCTL_NEXTQ_TYPE_SHIFT 27 +#define I40E_PFINT_CEQCTL_NEXTQ_TYPE_MASK (0x3 << I40E_PFINT_CEQCTL_NEXTQ_TYPE_SHIFT) +#define I40E_PFINT_CEQCTL_CAUSE_ENA_SHIFT 30 +#define I40E_PFINT_CEQCTL_CAUSE_ENA_MASK (0x1 << I40E_PFINT_CEQCTL_CAUSE_ENA_SHIFT) +#define I40E_PFINT_CEQCTL_INTEVENT_SHIFT 31 +#define I40E_PFINT_CEQCTL_INTEVENT_MASK (0x1 << I40E_PFINT_CEQCTL_INTEVENT_SHIFT) +#define I40E_PFINT_DYN_CTL0 0x00038480 +#define I40E_PFINT_DYN_CTL0_INTENA_SHIFT 0 +#define I40E_PFINT_DYN_CTL0_INTENA_MASK (0x1 << I40E_PFINT_DYN_CTL0_INTENA_SHIFT) +#define I40E_PFINT_DYN_CTL0_CLEARPBA_SHIFT 1 +#define I40E_PFINT_DYN_CTL0_CLEARPBA_MASK (0x1 << I40E_PFINT_DYN_CTL0_CLEARPBA_SHIFT) +#define I40E_PFINT_DYN_CTL0_SWINT_TRIG_SHIFT 2 +#define I40E_PFINT_DYN_CTL0_SWINT_TRIG_MASK (0x1 << I40E_PFINT_DYN_CTL0_SWINT_TRIG_SHIFT) +#define I40E_PFINT_DYN_CTL0_ITR_INDX_SHIFT 3 +#define I40E_PFINT_DYN_CTL0_ITR_INDX_MASK (0x3 << I40E_PFINT_DYN_CTL0_ITR_INDX_SHIFT) +#define I40E_PFINT_DYN_CTL0_INTERVAL_SHIFT 5 +#define I40E_PFINT_DYN_CTL0_INTERVAL_MASK (0xFFF << I40E_PFINT_DYN_CTL0_INTERVAL_SHIFT) +#define I40E_PFINT_DYN_CTL0_SW_ITR_INDX_ENA_SHIFT 24 +#define I40E_PFINT_DYN_CTL0_SW_ITR_INDX_ENA_MASK (0x1 << I40E_PFINT_DYN_CTL0_SW_ITR_INDX_ENA_SHIFT) +#define I40E_PFINT_DYN_CTL0_SW_ITR_INDX_SHIFT 25 +#define I40E_PFINT_DYN_CTL0_SW_ITR_INDX_MASK (0x3 << I40E_PFINT_DYN_CTL0_SW_ITR_INDX_SHIFT) +#define I40E_PFINT_DYN_CTL0_INTENA_MSK_SHIFT 31 +#define I40E_PFINT_DYN_CTL0_INTENA_MSK_MASK (0x1 << I40E_PFINT_DYN_CTL0_INTENA_MSK_SHIFT) +#define I40E_PFINT_DYN_CTLN(_INTPF) (0x00034800 + ((_INTPF) * 4)) /* _i=0...511 */ +#define I40E_PFINT_DYN_CTLN_MAX_INDEX 511 +#define I40E_PFINT_DYN_CTLN_INTENA_SHIFT 0 +#define I40E_PFINT_DYN_CTLN_INTENA_MASK (0x1 << I40E_PFINT_DYN_CTLN_INTENA_SHIFT) +#define I40E_PFINT_DYN_CTLN_CLEARPBA_SHIFT 1 +#define I40E_PFINT_DYN_CTLN_CLEARPBA_MASK (0x1 << I40E_PFINT_DYN_CTLN_CLEARPBA_SHIFT) +#define I40E_PFINT_DYN_CTLN_SWINT_TRIG_SHIFT 2 +#define I40E_PFINT_DYN_CTLN_SWINT_TRIG_MASK (0x1 << I40E_PFINT_DYN_CTLN_SWINT_TRIG_SHIFT) +#define I40E_PFINT_DYN_CTLN_ITR_INDX_SHIFT 3 +#define I40E_PFINT_DYN_CTLN_ITR_INDX_MASK (0x3 << I40E_PFINT_DYN_CTLN_ITR_INDX_SHIFT) +#define I40E_PFINT_DYN_CTLN_INTERVAL_SHIFT 5 +#define I40E_PFINT_DYN_CTLN_INTERVAL_MASK (0xFFF << I40E_PFINT_DYN_CTLN_INTERVAL_SHIFT) +#define I40E_PFINT_DYN_CTLN_SW_ITR_INDX_ENA_SHIFT 24 +#define I40E_PFINT_DYN_CTLN_SW_ITR_INDX_ENA_MASK (0x1 << I40E_PFINT_DYN_CTLN_SW_ITR_INDX_ENA_SHIFT) +#define I40E_PFINT_DYN_CTLN_SW_ITR_INDX_SHIFT 25 +#define I40E_PFINT_DYN_CTLN_SW_ITR_INDX_MASK (0x3 << I40E_PFINT_DYN_CTLN_SW_ITR_INDX_SHIFT) +#define I40E_PFINT_DYN_CTLN_INTENA_MSK_SHIFT 31 +#define I40E_PFINT_DYN_CTLN_INTENA_MSK_MASK (0x1 << I40E_PFINT_DYN_CTLN_INTENA_MSK_SHIFT) +#define I40E_PFINT_GPIO_ENA 0x00088080 +#define I40E_PFINT_GPIO_ENA_GPIO0_ENA_SHIFT 0 +#define I40E_PFINT_GPIO_ENA_GPIO0_ENA_MASK (0x1 << I40E_PFINT_GPIO_ENA_GPIO0_ENA_SHIFT) +#define I40E_PFINT_GPIO_ENA_GPIO1_ENA_SHIFT 1 +#define I40E_PFINT_GPIO_ENA_GPIO1_ENA_MASK (0x1 << I40E_PFINT_GPIO_ENA_GPIO1_ENA_SHIFT) +#define I40E_PFINT_GPIO_ENA_GPIO2_ENA_SHIFT 2 +#define I40E_PFINT_GPIO_ENA_GPIO2_ENA_MASK (0x1 << I40E_PFINT_GPIO_ENA_GPIO2_ENA_SHIFT) +#define I40E_PFINT_GPIO_ENA_GPIO3_ENA_SHIFT 3 +#define I40E_PFINT_GPIO_ENA_GPIO3_ENA_MASK (0x1 << I40E_PFINT_GPIO_ENA_GPIO3_ENA_SHIFT) +#define I40E_PFINT_GPIO_ENA_GPIO4_ENA_SHIFT 4 +#define I40E_PFINT_GPIO_ENA_GPIO4_ENA_MASK (0x1 << I40E_PFINT_GPIO_ENA_GPIO4_ENA_SHIFT) +#define I40E_PFINT_GPIO_ENA_GPIO5_ENA_SHIFT 5 +#define I40E_PFINT_GPIO_ENA_GPIO5_ENA_MASK (0x1 << I40E_PFINT_GPIO_ENA_GPIO5_ENA_SHIFT) +#define I40E_PFINT_GPIO_ENA_GPIO6_ENA_SHIFT 6 +#define I40E_PFINT_GPIO_ENA_GPIO6_ENA_MASK (0x1 << I40E_PFINT_GPIO_ENA_GPIO6_ENA_SHIFT) +#define I40E_PFINT_GPIO_ENA_GPIO7_ENA_SHIFT 7 +#define I40E_PFINT_GPIO_ENA_GPIO7_ENA_MASK (0x1 << I40E_PFINT_GPIO_ENA_GPIO7_ENA_SHIFT) +#define I40E_PFINT_GPIO_ENA_GPIO8_ENA_SHIFT 8 +#define I40E_PFINT_GPIO_ENA_GPIO8_ENA_MASK (0x1 << I40E_PFINT_GPIO_ENA_GPIO8_ENA_SHIFT) +#define I40E_PFINT_GPIO_ENA_GPIO9_ENA_SHIFT 9 +#define I40E_PFINT_GPIO_ENA_GPIO9_ENA_MASK (0x1 << I40E_PFINT_GPIO_ENA_GPIO9_ENA_SHIFT) +#define I40E_PFINT_GPIO_ENA_GPIO10_ENA_SHIFT 10 +#define I40E_PFINT_GPIO_ENA_GPIO10_ENA_MASK (0x1 << I40E_PFINT_GPIO_ENA_GPIO10_ENA_SHIFT) +#define I40E_PFINT_GPIO_ENA_GPIO11_ENA_SHIFT 11 +#define I40E_PFINT_GPIO_ENA_GPIO11_ENA_MASK (0x1 << I40E_PFINT_GPIO_ENA_GPIO11_ENA_SHIFT) +#define I40E_PFINT_GPIO_ENA_GPIO12_ENA_SHIFT 12 +#define I40E_PFINT_GPIO_ENA_GPIO12_ENA_MASK (0x1 << I40E_PFINT_GPIO_ENA_GPIO12_ENA_SHIFT) +#define I40E_PFINT_GPIO_ENA_GPIO13_ENA_SHIFT 13 +#define I40E_PFINT_GPIO_ENA_GPIO13_ENA_MASK (0x1 << I40E_PFINT_GPIO_ENA_GPIO13_ENA_SHIFT) +#define I40E_PFINT_GPIO_ENA_GPIO14_ENA_SHIFT 14 +#define I40E_PFINT_GPIO_ENA_GPIO14_ENA_MASK (0x1 << I40E_PFINT_GPIO_ENA_GPIO14_ENA_SHIFT) +#define I40E_PFINT_GPIO_ENA_GPIO15_ENA_SHIFT 15 +#define I40E_PFINT_GPIO_ENA_GPIO15_ENA_MASK (0x1 << I40E_PFINT_GPIO_ENA_GPIO15_ENA_SHIFT) +#define I40E_PFINT_GPIO_ENA_GPIO16_ENA_SHIFT 16 +#define I40E_PFINT_GPIO_ENA_GPIO16_ENA_MASK (0x1 << I40E_PFINT_GPIO_ENA_GPIO16_ENA_SHIFT) +#define I40E_PFINT_GPIO_ENA_GPIO17_ENA_SHIFT 17 +#define I40E_PFINT_GPIO_ENA_GPIO17_ENA_MASK (0x1 << I40E_PFINT_GPIO_ENA_GPIO17_ENA_SHIFT) +#define I40E_PFINT_GPIO_ENA_GPIO18_ENA_SHIFT 18 +#define I40E_PFINT_GPIO_ENA_GPIO18_ENA_MASK (0x1 << I40E_PFINT_GPIO_ENA_GPIO18_ENA_SHIFT) +#define I40E_PFINT_GPIO_ENA_GPIO19_ENA_SHIFT 19 +#define I40E_PFINT_GPIO_ENA_GPIO19_ENA_MASK (0x1 << I40E_PFINT_GPIO_ENA_GPIO19_ENA_SHIFT) +#define I40E_PFINT_GPIO_ENA_GPIO20_ENA_SHIFT 20 +#define I40E_PFINT_GPIO_ENA_GPIO20_ENA_MASK (0x1 << I40E_PFINT_GPIO_ENA_GPIO20_ENA_SHIFT) +#define I40E_PFINT_GPIO_ENA_GPIO21_ENA_SHIFT 21 +#define I40E_PFINT_GPIO_ENA_GPIO21_ENA_MASK (0x1 << I40E_PFINT_GPIO_ENA_GPIO21_ENA_SHIFT) +#define I40E_PFINT_GPIO_ENA_GPIO22_ENA_SHIFT 22 +#define I40E_PFINT_GPIO_ENA_GPIO22_ENA_MASK (0x1 << I40E_PFINT_GPIO_ENA_GPIO22_ENA_SHIFT) +#define I40E_PFINT_GPIO_ENA_GPIO23_ENA_SHIFT 23 +#define I40E_PFINT_GPIO_ENA_GPIO23_ENA_MASK (0x1 << I40E_PFINT_GPIO_ENA_GPIO23_ENA_SHIFT) +#define I40E_PFINT_GPIO_ENA_GPIO24_ENA_SHIFT 24 +#define I40E_PFINT_GPIO_ENA_GPIO24_ENA_MASK (0x1 << I40E_PFINT_GPIO_ENA_GPIO24_ENA_SHIFT) +#define I40E_PFINT_GPIO_ENA_GPIO25_ENA_SHIFT 25 +#define I40E_PFINT_GPIO_ENA_GPIO25_ENA_MASK (0x1 << I40E_PFINT_GPIO_ENA_GPIO25_ENA_SHIFT) +#define I40E_PFINT_GPIO_ENA_GPIO26_ENA_SHIFT 26 +#define I40E_PFINT_GPIO_ENA_GPIO26_ENA_MASK (0x1 << I40E_PFINT_GPIO_ENA_GPIO26_ENA_SHIFT) +#define I40E_PFINT_GPIO_ENA_GPIO27_ENA_SHIFT 27 +#define I40E_PFINT_GPIO_ENA_GPIO27_ENA_MASK (0x1 << I40E_PFINT_GPIO_ENA_GPIO27_ENA_SHIFT) +#define I40E_PFINT_GPIO_ENA_GPIO28_ENA_SHIFT 28 +#define I40E_PFINT_GPIO_ENA_GPIO28_ENA_MASK (0x1 << I40E_PFINT_GPIO_ENA_GPIO28_ENA_SHIFT) +#define I40E_PFINT_GPIO_ENA_GPIO29_ENA_SHIFT 29 +#define I40E_PFINT_GPIO_ENA_GPIO29_ENA_MASK (0x1 << I40E_PFINT_GPIO_ENA_GPIO29_ENA_SHIFT) +#define I40E_PFINT_ICR0 0x00038780 +#define I40E_PFINT_ICR0_INTEVENT_SHIFT 0 +#define I40E_PFINT_ICR0_INTEVENT_MASK (0x1 << I40E_PFINT_ICR0_INTEVENT_SHIFT) +#define I40E_PFINT_ICR0_QUEUE_0_SHIFT 1 +#define I40E_PFINT_ICR0_QUEUE_0_MASK (0x1 << I40E_PFINT_ICR0_QUEUE_0_SHIFT) +#define I40E_PFINT_ICR0_QUEUE_1_SHIFT 2 +#define I40E_PFINT_ICR0_QUEUE_1_MASK (0x1 << I40E_PFINT_ICR0_QUEUE_1_SHIFT) +#define I40E_PFINT_ICR0_QUEUE_2_SHIFT 3 +#define I40E_PFINT_ICR0_QUEUE_2_MASK (0x1 << I40E_PFINT_ICR0_QUEUE_2_SHIFT) +#define I40E_PFINT_ICR0_QUEUE_3_SHIFT 4 +#define I40E_PFINT_ICR0_QUEUE_3_MASK (0x1 << I40E_PFINT_ICR0_QUEUE_3_SHIFT) +#define I40E_PFINT_ICR0_QUEUE_4_SHIFT 5 +#define I40E_PFINT_ICR0_QUEUE_4_MASK (0x1 << I40E_PFINT_ICR0_QUEUE_4_SHIFT) +#define I40E_PFINT_ICR0_QUEUE_5_SHIFT 6 +#define I40E_PFINT_ICR0_QUEUE_5_MASK (0x1 << I40E_PFINT_ICR0_QUEUE_5_SHIFT) +#define I40E_PFINT_ICR0_QUEUE_6_SHIFT 7 +#define I40E_PFINT_ICR0_QUEUE_6_MASK (0x1 << I40E_PFINT_ICR0_QUEUE_6_SHIFT) +#define I40E_PFINT_ICR0_QUEUE_7_SHIFT 8 +#define I40E_PFINT_ICR0_QUEUE_7_MASK (0x1 << I40E_PFINT_ICR0_QUEUE_7_SHIFT) +#define I40E_PFINT_ICR0_ECC_ERR_SHIFT 16 +#define I40E_PFINT_ICR0_ECC_ERR_MASK (0x1 << I40E_PFINT_ICR0_ECC_ERR_SHIFT) +#define I40E_PFINT_ICR0_MAL_DETECT_SHIFT 19 +#define I40E_PFINT_ICR0_MAL_DETECT_MASK (0x1 << I40E_PFINT_ICR0_MAL_DETECT_SHIFT) +#define I40E_PFINT_ICR0_GRST_SHIFT 20 +#define I40E_PFINT_ICR0_GRST_MASK (0x1 << I40E_PFINT_ICR0_GRST_SHIFT) +#define I40E_PFINT_ICR0_PCI_EXCEPTION_SHIFT 21 +#define I40E_PFINT_ICR0_PCI_EXCEPTION_MASK (0x1 << I40E_PFINT_ICR0_PCI_EXCEPTION_SHIFT) +#define I40E_PFINT_ICR0_GPIO_SHIFT 22 +#define I40E_PFINT_ICR0_GPIO_MASK (0x1 << I40E_PFINT_ICR0_GPIO_SHIFT) +#define I40E_PFINT_ICR0_TIMESYNC_SHIFT 23 +#define I40E_PFINT_ICR0_TIMESYNC_MASK (0x1 << I40E_PFINT_ICR0_TIMESYNC_SHIFT) +#define I40E_PFINT_ICR0_STORM_DETECT_SHIFT 24 +#define I40E_PFINT_ICR0_STORM_DETECT_MASK (0x1 << I40E_PFINT_ICR0_STORM_DETECT_SHIFT) +#define I40E_PFINT_ICR0_LINK_STAT_CHANGE_SHIFT 25 +#define I40E_PFINT_ICR0_LINK_STAT_CHANGE_MASK (0x1 << I40E_PFINT_ICR0_LINK_STAT_CHANGE_SHIFT) +#define I40E_PFINT_ICR0_HMC_ERR_SHIFT 26 +#define I40E_PFINT_ICR0_HMC_ERR_MASK (0x1 << I40E_PFINT_ICR0_HMC_ERR_SHIFT) +#define I40E_PFINT_ICR0_PE_CRITERR_SHIFT 28 +#define I40E_PFINT_ICR0_PE_CRITERR_MASK (0x1 << I40E_PFINT_ICR0_PE_CRITERR_SHIFT) +#define I40E_PFINT_ICR0_VFLR_SHIFT 29 +#define I40E_PFINT_ICR0_VFLR_MASK (0x1 << I40E_PFINT_ICR0_VFLR_SHIFT) +#define I40E_PFINT_ICR0_ADMINQ_SHIFT 30 +#define I40E_PFINT_ICR0_ADMINQ_MASK (0x1 << I40E_PFINT_ICR0_ADMINQ_SHIFT) +#define I40E_PFINT_ICR0_SWINT_SHIFT 31 +#define I40E_PFINT_ICR0_SWINT_MASK (0x1 << I40E_PFINT_ICR0_SWINT_SHIFT) +#define I40E_PFINT_ICR0_ENA 0x00038800 +#define I40E_PFINT_ICR0_ENA_ECC_ERR_SHIFT 16 +#define I40E_PFINT_ICR0_ENA_ECC_ERR_MASK (0x1 << I40E_PFINT_ICR0_ENA_ECC_ERR_SHIFT) +#define I40E_PFINT_ICR0_ENA_MAL_DETECT_SHIFT 19 +#define I40E_PFINT_ICR0_ENA_MAL_DETECT_MASK (0x1 << I40E_PFINT_ICR0_ENA_MAL_DETECT_SHIFT) +#define I40E_PFINT_ICR0_ENA_GRST_SHIFT 20 +#define I40E_PFINT_ICR0_ENA_GRST_MASK (0x1 << I40E_PFINT_ICR0_ENA_GRST_SHIFT) +#define I40E_PFINT_ICR0_ENA_PCI_EXCEPTION_SHIFT 21 +#define I40E_PFINT_ICR0_ENA_PCI_EXCEPTION_MASK (0x1 << I40E_PFINT_ICR0_ENA_PCI_EXCEPTION_SHIFT) +#define I40E_PFINT_ICR0_ENA_GPIO_SHIFT 22 +#define I40E_PFINT_ICR0_ENA_GPIO_MASK (0x1 << I40E_PFINT_ICR0_ENA_GPIO_SHIFT) +#define I40E_PFINT_ICR0_ENA_TIMESYNC_SHIFT 23 +#define I40E_PFINT_ICR0_ENA_TIMESYNC_MASK (0x1 << I40E_PFINT_ICR0_ENA_TIMESYNC_SHIFT) +#define I40E_PFINT_ICR0_ENA_STORM_DETECT_SHIFT 24 +#define I40E_PFINT_ICR0_ENA_STORM_DETECT_MASK (0x1 << I40E_PFINT_ICR0_ENA_STORM_DETECT_SHIFT) +#define I40E_PFINT_ICR0_ENA_LINK_STAT_CHANGE_SHIFT 25 +#define I40E_PFINT_ICR0_ENA_LINK_STAT_CHANGE_MASK (0x1 << I40E_PFINT_ICR0_ENA_LINK_STAT_CHANGE_SHIFT) +#define I40E_PFINT_ICR0_ENA_HMC_ERR_SHIFT 26 +#define I40E_PFINT_ICR0_ENA_HMC_ERR_MASK (0x1 << I40E_PFINT_ICR0_ENA_HMC_ERR_SHIFT) +#define I40E_PFINT_ICR0_ENA_PE_CRITERR_SHIFT 28 +#define I40E_PFINT_ICR0_ENA_PE_CRITERR_MASK (0x1 << I40E_PFINT_ICR0_ENA_PE_CRITERR_SHIFT) +#define I40E_PFINT_ICR0_ENA_VFLR_SHIFT 29 +#define I40E_PFINT_ICR0_ENA_VFLR_MASK (0x1 << I40E_PFINT_ICR0_ENA_VFLR_SHIFT) +#define I40E_PFINT_ICR0_ENA_ADMINQ_SHIFT 30 +#define I40E_PFINT_ICR0_ENA_ADMINQ_MASK (0x1 << I40E_PFINT_ICR0_ENA_ADMINQ_SHIFT) +#define I40E_PFINT_ICR0_ENA_RSVD_SHIFT 31 +#define I40E_PFINT_ICR0_ENA_RSVD_MASK (0x1 << I40E_PFINT_ICR0_ENA_RSVD_SHIFT) +#define I40E_PFINT_ITR0(_i) (0x00038000 + ((_i) * 128)) /* _i=0...2 */ +#define I40E_PFINT_ITR0_MAX_INDEX 2 +#define I40E_PFINT_ITR0_INTERVAL_SHIFT 0 +#define I40E_PFINT_ITR0_INTERVAL_MASK (0xFFF << I40E_PFINT_ITR0_INTERVAL_SHIFT) +#define I40E_PFINT_ITRN(_i, _INTPF) (0x00030000 + ((_i) * 2048 + (_INTPF) * 4)) +#define I40E_PFINT_ITRN_MAX_INDEX 2 +#define I40E_PFINT_ITRN_INTERVAL_SHIFT 0 +#define I40E_PFINT_ITRN_INTERVAL_MASK (0xFFF << I40E_PFINT_ITRN_INTERVAL_SHIFT) +#define I40E_PFINT_LNKLST0 0x00038500 +#define I40E_PFINT_LNKLST0_FIRSTQ_INDX_SHIFT 0 +#define I40E_PFINT_LNKLST0_FIRSTQ_INDX_MASK (0x7FF << I40E_PFINT_LNKLST0_FIRSTQ_INDX_SHIFT) +#define I40E_PFINT_LNKLST0_FIRSTQ_TYPE_SHIFT 11 +#define I40E_PFINT_LNKLST0_FIRSTQ_TYPE_MASK (0x3 << I40E_PFINT_LNKLST0_FIRSTQ_TYPE_SHIFT) +#define I40E_PFINT_LNKLSTN(_INTPF) (0x00035000 + ((_INTPF) * 4)) /* _i=0...511 */ +#define I40E_PFINT_LNKLSTN_MAX_INDEX 511 +#define I40E_PFINT_LNKLSTN_FIRSTQ_INDX_SHIFT 0 +#define I40E_PFINT_LNKLSTN_FIRSTQ_INDX_MASK (0x7FF << I40E_PFINT_LNKLSTN_FIRSTQ_INDX_SHIFT) +#define I40E_PFINT_LNKLSTN_FIRSTQ_TYPE_SHIFT 11 +#define I40E_PFINT_LNKLSTN_FIRSTQ_TYPE_MASK (0x3 << I40E_PFINT_LNKLSTN_FIRSTQ_TYPE_SHIFT) +#define I40E_PFINT_RATE0 0x00038580 +#define I40E_PFINT_RATE0_INTERVAL_SHIFT 0 +#define I40E_PFINT_RATE0_INTERVAL_MASK (0x3F << I40E_PFINT_RATE0_INTERVAL_SHIFT) +#define I40E_PFINT_RATE0_INTRL_ENA_SHIFT 6 +#define I40E_PFINT_RATE0_INTRL_ENA_MASK (0x1 << I40E_PFINT_RATE0_INTRL_ENA_SHIFT) +#define I40E_PFINT_RATEN(_INTPF) (0x00035800 + ((_INTPF) * 4)) /* _i=0...511 */ +#define I40E_PFINT_RATEN_MAX_INDEX 511 +#define I40E_PFINT_RATEN_INTERVAL_SHIFT 0 +#define I40E_PFINT_RATEN_INTERVAL_MASK (0x3F << I40E_PFINT_RATEN_INTERVAL_SHIFT) +#define I40E_PFINT_RATEN_INTRL_ENA_SHIFT 6 +#define I40E_PFINT_RATEN_INTRL_ENA_MASK (0x1 << I40E_PFINT_RATEN_INTRL_ENA_SHIFT) +#define I40E_PFINT_STAT_CTL0 0x00038400 +#define I40E_PFINT_STAT_CTL0_OTHER_ITR_INDX_SHIFT 2 +#define I40E_PFINT_STAT_CTL0_OTHER_ITR_INDX_MASK (0x3 << I40E_PFINT_STAT_CTL0_OTHER_ITR_INDX_SHIFT) +#define I40E_QINT_RQCTL(_Q) (0x0003A000 + ((_Q) * 4)) /* _i=0...1535 */ +#define I40E_QINT_RQCTL_MAX_INDEX 1535 +#define I40E_QINT_RQCTL_MSIX_INDX_SHIFT 0 +#define I40E_QINT_RQCTL_MSIX_INDX_MASK (0xFF << I40E_QINT_RQCTL_MSIX_INDX_SHIFT) +#define I40E_QINT_RQCTL_ITR_INDX_SHIFT 11 +#define I40E_QINT_RQCTL_ITR_INDX_MASK (0x3 << I40E_QINT_RQCTL_ITR_INDX_SHIFT) +#define I40E_QINT_RQCTL_MSIX0_INDX_SHIFT 13 +#define I40E_QINT_RQCTL_MSIX0_INDX_MASK (0x7 << I40E_QINT_RQCTL_MSIX0_INDX_SHIFT) +#define I40E_QINT_RQCTL_NEXTQ_INDX_SHIFT 16 +#define I40E_QINT_RQCTL_NEXTQ_INDX_MASK (0x7FF << I40E_QINT_RQCTL_NEXTQ_INDX_SHIFT) +#define I40E_QINT_RQCTL_NEXTQ_TYPE_SHIFT 27 +#define I40E_QINT_RQCTL_NEXTQ_TYPE_MASK (0x3 << I40E_QINT_RQCTL_NEXTQ_TYPE_SHIFT) +#define I40E_QINT_RQCTL_CAUSE_ENA_SHIFT 30 +#define I40E_QINT_RQCTL_CAUSE_ENA_MASK (0x1 << I40E_QINT_RQCTL_CAUSE_ENA_SHIFT) +#define I40E_QINT_RQCTL_INTEVENT_SHIFT 31 +#define I40E_QINT_RQCTL_INTEVENT_MASK (0x1 << I40E_QINT_RQCTL_INTEVENT_SHIFT) +#define I40E_QINT_TQCTL(_Q) (0x0003C000 + ((_Q) * 4)) /* _i=0...1535 */ +#define I40E_QINT_TQCTL_MAX_INDEX 1535 +#define I40E_QINT_TQCTL_MSIX_INDX_SHIFT 0 +#define I40E_QINT_TQCTL_MSIX_INDX_MASK (0xFF << I40E_QINT_TQCTL_MSIX_INDX_SHIFT) +#define I40E_QINT_TQCTL_ITR_INDX_SHIFT 11 +#define I40E_QINT_TQCTL_ITR_INDX_MASK (0x3 << I40E_QINT_TQCTL_ITR_INDX_SHIFT) +#define I40E_QINT_TQCTL_MSIX0_INDX_SHIFT 13 +#define I40E_QINT_TQCTL_MSIX0_INDX_MASK (0x7 << I40E_QINT_TQCTL_MSIX0_INDX_SHIFT) +#define I40E_QINT_TQCTL_NEXTQ_INDX_SHIFT 16 +#define I40E_QINT_TQCTL_NEXTQ_INDX_MASK (0x7FF << I40E_QINT_TQCTL_NEXTQ_INDX_SHIFT) +#define I40E_QINT_TQCTL_NEXTQ_TYPE_SHIFT 27 +#define I40E_QINT_TQCTL_NEXTQ_TYPE_MASK (0x3 << I40E_QINT_TQCTL_NEXTQ_TYPE_SHIFT) +#define I40E_QINT_TQCTL_CAUSE_ENA_SHIFT 30 +#define I40E_QINT_TQCTL_CAUSE_ENA_MASK (0x1 << I40E_QINT_TQCTL_CAUSE_ENA_SHIFT) +#define I40E_QINT_TQCTL_INTEVENT_SHIFT 31 +#define I40E_QINT_TQCTL_INTEVENT_MASK (0x1 << I40E_QINT_TQCTL_INTEVENT_SHIFT) +#define I40E_VFINT_DYN_CTL0(_VF) (0x0002A400 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_VFINT_DYN_CTL0_MAX_INDEX 127 +#define I40E_VFINT_DYN_CTL0_INTENA_SHIFT 0 +#define I40E_VFINT_DYN_CTL0_INTENA_MASK (0x1 << I40E_VFINT_DYN_CTL0_INTENA_SHIFT) +#define I40E_VFINT_DYN_CTL0_CLEARPBA_SHIFT 1 +#define I40E_VFINT_DYN_CTL0_CLEARPBA_MASK (0x1 << I40E_VFINT_DYN_CTL0_CLEARPBA_SHIFT) +#define I40E_VFINT_DYN_CTL0_SWINT_TRIG_SHIFT 2 +#define I40E_VFINT_DYN_CTL0_SWINT_TRIG_MASK (0x1 << I40E_VFINT_DYN_CTL0_SWINT_TRIG_SHIFT) +#define I40E_VFINT_DYN_CTL0_ITR_INDX_SHIFT 3 +#define I40E_VFINT_DYN_CTL0_ITR_INDX_MASK (0x3 << I40E_VFINT_DYN_CTL0_ITR_INDX_SHIFT) +#define I40E_VFINT_DYN_CTL0_INTERVAL_SHIFT 5 +#define I40E_VFINT_DYN_CTL0_INTERVAL_MASK (0xFFF << I40E_VFINT_DYN_CTL0_INTERVAL_SHIFT) +#define I40E_VFINT_DYN_CTL0_SW_ITR_INDX_ENA_SHIFT 24 +#define I40E_VFINT_DYN_CTL0_SW_ITR_INDX_ENA_MASK (0x1 << I40E_VFINT_DYN_CTL0_SW_ITR_INDX_ENA_SHIFT) +#define I40E_VFINT_DYN_CTL0_SW_ITR_INDX_SHIFT 25 +#define I40E_VFINT_DYN_CTL0_SW_ITR_INDX_MASK (0x3 << I40E_VFINT_DYN_CTL0_SW_ITR_INDX_SHIFT) +#define I40E_VFINT_DYN_CTL0_INTENA_MSK_SHIFT 31 +#define I40E_VFINT_DYN_CTL0_INTENA_MSK_MASK (0x1 << I40E_VFINT_DYN_CTL0_INTENA_MSK_SHIFT) +#define I40E_VFINT_DYN_CTLN(_INTVF) (0x00024800 + ((_INTVF) * 4)) /* _i=0...511 */ +#define I40E_VFINT_DYN_CTLN_MAX_INDEX 511 +#define I40E_VFINT_DYN_CTLN_INTENA_SHIFT 0 +#define I40E_VFINT_DYN_CTLN_INTENA_MASK (0x1 << I40E_VFINT_DYN_CTLN_INTENA_SHIFT) +#define I40E_VFINT_DYN_CTLN_CLEARPBA_SHIFT 1 +#define I40E_VFINT_DYN_CTLN_CLEARPBA_MASK (0x1 << I40E_VFINT_DYN_CTLN_CLEARPBA_SHIFT) +#define I40E_VFINT_DYN_CTLN_SWINT_TRIG_SHIFT 2 +#define I40E_VFINT_DYN_CTLN_SWINT_TRIG_MASK (0x1 << I40E_VFINT_DYN_CTLN_SWINT_TRIG_SHIFT) +#define I40E_VFINT_DYN_CTLN_ITR_INDX_SHIFT 3 +#define I40E_VFINT_DYN_CTLN_ITR_INDX_MASK (0x3 << I40E_VFINT_DYN_CTLN_ITR_INDX_SHIFT) +#define I40E_VFINT_DYN_CTLN_INTERVAL_SHIFT 5 +#define I40E_VFINT_DYN_CTLN_INTERVAL_MASK (0xFFF << I40E_VFINT_DYN_CTLN_INTERVAL_SHIFT) +#define I40E_VFINT_DYN_CTLN_SW_ITR_INDX_ENA_SHIFT 24 +#define I40E_VFINT_DYN_CTLN_SW_ITR_INDX_ENA_MASK (0x1 << I40E_VFINT_DYN_CTLN_SW_ITR_INDX_ENA_SHIFT) +#define I40E_VFINT_DYN_CTLN_SW_ITR_INDX_SHIFT 25 +#define I40E_VFINT_DYN_CTLN_SW_ITR_INDX_MASK (0x3 << I40E_VFINT_DYN_CTLN_SW_ITR_INDX_SHIFT) +#define I40E_VFINT_DYN_CTLN_INTENA_MSK_SHIFT 31 +#define I40E_VFINT_DYN_CTLN_INTENA_MSK_MASK (0x1 << I40E_VFINT_DYN_CTLN_INTENA_MSK_SHIFT) +#define I40E_VFINT_ICR0(_VF) (0x0002BC00 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_VFINT_ICR0_MAX_INDEX 127 +#define I40E_VFINT_ICR0_INTEVENT_SHIFT 0 +#define I40E_VFINT_ICR0_INTEVENT_MASK (0x1 << I40E_VFINT_ICR0_INTEVENT_SHIFT) +#define I40E_VFINT_ICR0_QUEUE_0_SHIFT 1 +#define I40E_VFINT_ICR0_QUEUE_0_MASK (0x1 << I40E_VFINT_ICR0_QUEUE_0_SHIFT) +#define I40E_VFINT_ICR0_QUEUE_1_SHIFT 2 +#define I40E_VFINT_ICR0_QUEUE_1_MASK (0x1 << I40E_VFINT_ICR0_QUEUE_1_SHIFT) +#define I40E_VFINT_ICR0_QUEUE_2_SHIFT 3 +#define I40E_VFINT_ICR0_QUEUE_2_MASK (0x1 << I40E_VFINT_ICR0_QUEUE_2_SHIFT) +#define I40E_VFINT_ICR0_QUEUE_3_SHIFT 4 +#define I40E_VFINT_ICR0_QUEUE_3_MASK (0x1 << I40E_VFINT_ICR0_QUEUE_3_SHIFT) +#define I40E_VFINT_ICR0_LINK_STAT_CHANGE_SHIFT 25 +#define I40E_VFINT_ICR0_LINK_STAT_CHANGE_MASK (0x1 << I40E_VFINT_ICR0_LINK_STAT_CHANGE_SHIFT) +#define I40E_VFINT_ICR0_ADMINQ_SHIFT 30 +#define I40E_VFINT_ICR0_ADMINQ_MASK (0x1 << I40E_VFINT_ICR0_ADMINQ_SHIFT) +#define I40E_VFINT_ICR0_SWINT_SHIFT 31 +#define I40E_VFINT_ICR0_SWINT_MASK (0x1 << I40E_VFINT_ICR0_SWINT_SHIFT) +#define I40E_VFINT_ICR0_ENA(_VF) (0x0002C000 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_VFINT_ICR0_ENA_MAX_INDEX 127 +#define I40E_VFINT_ICR0_ENA_LINK_STAT_CHANGE_SHIFT 25 +#define I40E_VFINT_ICR0_ENA_LINK_STAT_CHANGE_MASK (0x1 << I40E_VFINT_ICR0_ENA_LINK_STAT_CHANGE_SHIFT) +#define I40E_VFINT_ICR0_ENA_ADMINQ_SHIFT 30 +#define I40E_VFINT_ICR0_ENA_ADMINQ_MASK (0x1 << I40E_VFINT_ICR0_ENA_ADMINQ_SHIFT) +#define I40E_VFINT_ICR0_ENA_RSVD_SHIFT 31 +#define I40E_VFINT_ICR0_ENA_RSVD_MASK (0x1 << I40E_VFINT_ICR0_ENA_RSVD_SHIFT) +#define I40E_VFINT_ITR0(_i, _VF) (0x00028000 + ((_i) * 1024 + (_VF) * 4)) /* _i=0...2, _VF=0...127 */ +#define I40E_VFINT_ITR0_MAX_INDEX 2 +#define I40E_VFINT_ITR0_INTERVAL_SHIFT 0 +#define I40E_VFINT_ITR0_INTERVAL_MASK (0xFFF << I40E_VFINT_ITR0_INTERVAL_SHIFT) +#define I40E_VFINT_ITRN(_i, _INTVF) (0x00020000 + ((_i) * 2048 + (_INTVF) * 4)) +#define I40E_VFINT_ITRN_MAX_INDEX 2 +#define I40E_VFINT_ITRN_INTERVAL_SHIFT 0 +#define I40E_VFINT_ITRN_INTERVAL_MASK (0xFFF << I40E_VFINT_ITRN_INTERVAL_SHIFT) +#define I40E_VFINT_STAT_CTL0(_VF) (0x0002A000 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_VFINT_STAT_CTL0_MAX_INDEX 127 +#define I40E_VFINT_STAT_CTL0_OTHER_ITR_INDX_SHIFT 2 +#define I40E_VFINT_STAT_CTL0_OTHER_ITR_INDX_MASK (0x3 << I40E_VFINT_STAT_CTL0_OTHER_ITR_INDX_SHIFT) +#define I40E_VPINT_AEQCTL(_VF) (0x0002B800 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_VPINT_AEQCTL_MAX_INDEX 127 +#define I40E_VPINT_AEQCTL_MSIX_INDX_SHIFT 0 +#define I40E_VPINT_AEQCTL_MSIX_INDX_MASK (0xFF << I40E_VPINT_AEQCTL_MSIX_INDX_SHIFT) +#define I40E_VPINT_AEQCTL_ITR_INDX_SHIFT 11 +#define I40E_VPINT_AEQCTL_ITR_INDX_MASK (0x3 << I40E_VPINT_AEQCTL_ITR_INDX_SHIFT) +#define I40E_VPINT_AEQCTL_MSIX0_INDX_SHIFT 13 +#define I40E_VPINT_AEQCTL_MSIX0_INDX_MASK (0x7 << I40E_VPINT_AEQCTL_MSIX0_INDX_SHIFT) +#define I40E_VPINT_AEQCTL_CAUSE_ENA_SHIFT 30 +#define I40E_VPINT_AEQCTL_CAUSE_ENA_MASK (0x1 << I40E_VPINT_AEQCTL_CAUSE_ENA_SHIFT) +#define I40E_VPINT_AEQCTL_INTEVENT_SHIFT 31 +#define I40E_VPINT_AEQCTL_INTEVENT_MASK (0x1 << I40E_VPINT_AEQCTL_INTEVENT_SHIFT) +#define I40E_VPINT_CEQCTL(_INTVF) (0x00026800 + ((_INTVF) * 4)) /* _i=0...511 */ +#define I40E_VPINT_CEQCTL_MAX_INDEX 511 +#define I40E_VPINT_CEQCTL_MSIX_INDX_SHIFT 0 +#define I40E_VPINT_CEQCTL_MSIX_INDX_MASK (0xFF << I40E_VPINT_CEQCTL_MSIX_INDX_SHIFT) +#define I40E_VPINT_CEQCTL_ITR_INDX_SHIFT 11 +#define I40E_VPINT_CEQCTL_ITR_INDX_MASK (0x3 << I40E_VPINT_CEQCTL_ITR_INDX_SHIFT) +#define I40E_VPINT_CEQCTL_MSIX0_INDX_SHIFT 13 +#define I40E_VPINT_CEQCTL_MSIX0_INDX_MASK (0x7 << I40E_VPINT_CEQCTL_MSIX0_INDX_SHIFT) +#define I40E_VPINT_CEQCTL_NEXTQ_INDX_SHIFT 16 +#define I40E_VPINT_CEQCTL_NEXTQ_INDX_MASK (0x7FF << I40E_VPINT_CEQCTL_NEXTQ_INDX_SHIFT) +#define I40E_VPINT_CEQCTL_NEXTQ_TYPE_SHIFT 27 +#define I40E_VPINT_CEQCTL_NEXTQ_TYPE_MASK (0x3 << I40E_VPINT_CEQCTL_NEXTQ_TYPE_SHIFT) +#define I40E_VPINT_CEQCTL_CAUSE_ENA_SHIFT 30 +#define I40E_VPINT_CEQCTL_CAUSE_ENA_MASK (0x1 << I40E_VPINT_CEQCTL_CAUSE_ENA_SHIFT) +#define I40E_VPINT_CEQCTL_INTEVENT_SHIFT 31 +#define I40E_VPINT_CEQCTL_INTEVENT_MASK (0x1 << I40E_VPINT_CEQCTL_INTEVENT_SHIFT) +#define I40E_VPINT_LNKLST0(_VF) (0x0002A800 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_VPINT_LNKLST0_MAX_INDEX 127 +#define I40E_VPINT_LNKLST0_FIRSTQ_INDX_SHIFT 0 +#define I40E_VPINT_LNKLST0_FIRSTQ_INDX_MASK (0x7FF << I40E_VPINT_LNKLST0_FIRSTQ_INDX_SHIFT) +#define I40E_VPINT_LNKLST0_FIRSTQ_TYPE_SHIFT 11 +#define I40E_VPINT_LNKLST0_FIRSTQ_TYPE_MASK (0x3 << I40E_VPINT_LNKLST0_FIRSTQ_TYPE_SHIFT) +#define I40E_VPINT_LNKLSTN(_INTVF) (0x00025000 + ((_INTVF) * 4)) /* _i=0...511 */ +#define I40E_VPINT_LNKLSTN_MAX_INDEX 511 +#define I40E_VPINT_LNKLSTN_FIRSTQ_INDX_SHIFT 0 +#define I40E_VPINT_LNKLSTN_FIRSTQ_INDX_MASK (0x7FF << I40E_VPINT_LNKLSTN_FIRSTQ_INDX_SHIFT) +#define I40E_VPINT_LNKLSTN_FIRSTQ_TYPE_SHIFT 11 +#define I40E_VPINT_LNKLSTN_FIRSTQ_TYPE_MASK (0x3 << I40E_VPINT_LNKLSTN_FIRSTQ_TYPE_SHIFT) +#define I40E_VPINT_RATE0(_VF) (0x0002AC00 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_VPINT_RATE0_MAX_INDEX 127 +#define I40E_VPINT_RATE0_INTERVAL_SHIFT 0 +#define I40E_VPINT_RATE0_INTERVAL_MASK (0x3F << I40E_VPINT_RATE0_INTERVAL_SHIFT) +#define I40E_VPINT_RATE0_INTRL_ENA_SHIFT 6 +#define I40E_VPINT_RATE0_INTRL_ENA_MASK (0x1 << I40E_VPINT_RATE0_INTRL_ENA_SHIFT) +#define I40E_VPINT_RATEN(_INTVF) (0x00025800 + ((_INTVF) * 4)) /* _i=0...511 */ +#define I40E_VPINT_RATEN_MAX_INDEX 511 +#define I40E_VPINT_RATEN_INTERVAL_SHIFT 0 +#define I40E_VPINT_RATEN_INTERVAL_MASK (0x3F << I40E_VPINT_RATEN_INTERVAL_SHIFT) +#define I40E_VPINT_RATEN_INTRL_ENA_SHIFT 6 +#define I40E_VPINT_RATEN_INTRL_ENA_MASK (0x1 << I40E_VPINT_RATEN_INTRL_ENA_SHIFT) +#define I40E_GL_RDPU_CNTRL 0x00051060 +#define I40E_GL_RDPU_CNTRL_RX_PAD_EN_SHIFT 0 +#define I40E_GL_RDPU_CNTRL_RX_PAD_EN_MASK (0x1 << I40E_GL_RDPU_CNTRL_RX_PAD_EN_SHIFT) +#define I40E_GL_RDPU_CNTRL_ECO_SHIFT 1 +#define I40E_GL_RDPU_CNTRL_ECO_MASK (0x7FFFFFFF << I40E_GL_RDPU_CNTRL_ECO_SHIFT) +#define I40E_GLLAN_RCTL_0 0x0012A500 +#define I40E_GLLAN_RCTL_0_PXE_MODE_SHIFT 0 +#define I40E_GLLAN_RCTL_0_PXE_MODE_MASK (0x1 << I40E_GLLAN_RCTL_0_PXE_MODE_SHIFT) +#define I40E_GLLAN_TSOMSK_F 0x000442D8 +#define I40E_GLLAN_TSOMSK_F_TCPMSKF_SHIFT 0 +#define I40E_GLLAN_TSOMSK_F_TCPMSKF_MASK (0xFFF << I40E_GLLAN_TSOMSK_F_TCPMSKF_SHIFT) +#define I40E_GLLAN_TSOMSK_L 0x000442E0 +#define I40E_GLLAN_TSOMSK_L_TCPMSKL_SHIFT 0 +#define I40E_GLLAN_TSOMSK_L_TCPMSKL_MASK (0xFFF << I40E_GLLAN_TSOMSK_L_TCPMSKL_SHIFT) +#define I40E_GLLAN_TSOMSK_M 0x000442DC +#define I40E_GLLAN_TSOMSK_M_TCPMSKM_SHIFT 0 +#define I40E_GLLAN_TSOMSK_M_TCPMSKM_MASK (0xFFF << I40E_GLLAN_TSOMSK_M_TCPMSKM_SHIFT) +#define I40E_PFLAN_QALLOC 0x001C0400 +#define I40E_PFLAN_QALLOC_FIRSTQ_SHIFT 0 +#define I40E_PFLAN_QALLOC_FIRSTQ_MASK (0x7FF << I40E_PFLAN_QALLOC_FIRSTQ_SHIFT) +#define I40E_PFLAN_QALLOC_LASTQ_SHIFT 16 +#define I40E_PFLAN_QALLOC_LASTQ_MASK (0x7FF << I40E_PFLAN_QALLOC_LASTQ_SHIFT) +#define I40E_PFLAN_QALLOC_VALID_SHIFT 31 +#define I40E_PFLAN_QALLOC_VALID_MASK (0x1 << I40E_PFLAN_QALLOC_VALID_SHIFT) +#define I40E_QRX_ENA(_Q) (0x00120000 + ((_Q) * 4)) /* _i=0...1535 */ +#define I40E_QRX_ENA_MAX_INDEX 1535 +#define I40E_QRX_ENA_QENA_REQ_SHIFT 0 +#define I40E_QRX_ENA_QENA_REQ_MASK (0x1 << I40E_QRX_ENA_QENA_REQ_SHIFT) +#define I40E_QRX_ENA_FAST_QDIS_SHIFT 1 +#define I40E_QRX_ENA_FAST_QDIS_MASK (0x1 << I40E_QRX_ENA_FAST_QDIS_SHIFT) +#define I40E_QRX_ENA_QENA_STAT_SHIFT 2 +#define I40E_QRX_ENA_QENA_STAT_MASK (0x1 << I40E_QRX_ENA_QENA_STAT_SHIFT) +#define I40E_QRX_TAIL(_Q) (0x00128000 + ((_Q) * 4)) /* _i=0...1535 */ +#define I40E_QRX_TAIL_MAX_INDEX 1535 +#define I40E_QRX_TAIL_TAIL_SHIFT 0 +#define I40E_QRX_TAIL_TAIL_MASK (0x1FFF << I40E_QRX_TAIL_TAIL_SHIFT) +#define I40E_QTX_CTL(_Q) (0x00104000 + ((_Q) * 4)) /* _i=0...1535 */ +#define I40E_QTX_CTL_MAX_INDEX 1535 +#define I40E_QTX_CTL_PFVF_Q_SHIFT 0 +#define I40E_QTX_CTL_PFVF_Q_MASK (0x3 << I40E_QTX_CTL_PFVF_Q_SHIFT) +#define I40E_QTX_CTL_PF_INDX_SHIFT 2 +#define I40E_QTX_CTL_PF_INDX_MASK (0xF << I40E_QTX_CTL_PF_INDX_SHIFT) +#define I40E_QTX_CTL_VFVM_INDX_SHIFT 7 +#define I40E_QTX_CTL_VFVM_INDX_MASK (0x1FF << I40E_QTX_CTL_VFVM_INDX_SHIFT) +#define I40E_QTX_ENA(_Q) (0x00100000 + ((_Q) * 4)) /* _i=0...1535 */ +#define I40E_QTX_ENA_MAX_INDEX 1535 +#define I40E_QTX_ENA_QENA_REQ_SHIFT 0 +#define I40E_QTX_ENA_QENA_REQ_MASK (0x1 << I40E_QTX_ENA_QENA_REQ_SHIFT) +#define I40E_QTX_ENA_FAST_QDIS_SHIFT 1 +#define I40E_QTX_ENA_FAST_QDIS_MASK (0x1 << I40E_QTX_ENA_FAST_QDIS_SHIFT) +#define I40E_QTX_ENA_QENA_STAT_SHIFT 2 +#define I40E_QTX_ENA_QENA_STAT_MASK (0x1 << I40E_QTX_ENA_QENA_STAT_SHIFT) +#define I40E_QTX_HEAD(_Q) (0x000E4000 + ((_Q) * 4)) /* _i=0...1535 */ +#define I40E_QTX_HEAD_MAX_INDEX 1535 +#define I40E_QTX_HEAD_HEAD_SHIFT 0 +#define I40E_QTX_HEAD_HEAD_MASK (0x1FFF << I40E_QTX_HEAD_HEAD_SHIFT) +#define I40E_QTX_HEAD_RS_PENDING_SHIFT 16 +#define I40E_QTX_HEAD_RS_PENDING_MASK (0x1 << I40E_QTX_HEAD_RS_PENDING_SHIFT) +#define I40E_QTX_TAIL(_Q) (0x00108000 + ((_Q) * 4)) /* _i=0...1535 */ +#define I40E_QTX_TAIL_MAX_INDEX 1535 +#define I40E_QTX_TAIL_TAIL_SHIFT 0 +#define I40E_QTX_TAIL_TAIL_MASK (0x1FFF << I40E_QTX_TAIL_TAIL_SHIFT) +#define I40E_VPLAN_MAPENA(_VF) (0x00074000 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_VPLAN_MAPENA_MAX_INDEX 127 +#define I40E_VPLAN_MAPENA_TXRX_ENA_SHIFT 0 +#define I40E_VPLAN_MAPENA_TXRX_ENA_MASK (0x1 << I40E_VPLAN_MAPENA_TXRX_ENA_SHIFT) +#define I40E_VPLAN_QTABLE(_i, _VF) (0x00070000 + ((_i) * 1024 + (_VF) * 4)) /* _i=0...15, _VF=0...127 */ +#define I40E_VPLAN_QTABLE_MAX_INDEX 15 +#define I40E_VPLAN_QTABLE_QINDEX_SHIFT 0 +#define I40E_VPLAN_QTABLE_QINDEX_MASK (0x7FF << I40E_VPLAN_QTABLE_QINDEX_SHIFT) +#define I40E_VSILAN_QBASE(_VSI) (0x0020C800 + ((_VSI) * 4)) /* _i=0...383 */ +#define I40E_VSILAN_QBASE_MAX_INDEX 383 +#define I40E_VSILAN_QBASE_VSIBASE_SHIFT 0 +#define I40E_VSILAN_QBASE_VSIBASE_MASK (0x7FF << I40E_VSILAN_QBASE_VSIBASE_SHIFT) +#define I40E_VSILAN_QBASE_VSIQTABLE_ENA_SHIFT 11 +#define I40E_VSILAN_QBASE_VSIQTABLE_ENA_MASK (0x1 << I40E_VSILAN_QBASE_VSIQTABLE_ENA_SHIFT) +#define I40E_VSILAN_QTABLE(_i, _VSI) (0x00200000 + ((_i) * 2048 + (_VSI) * 4)) +#define I40E_VSILAN_QTABLE_MAX_INDEX 7 +#define I40E_VSILAN_QTABLE_QINDEX_0_SHIFT 0 +#define I40E_VSILAN_QTABLE_QINDEX_0_MASK (0x7FF << I40E_VSILAN_QTABLE_QINDEX_0_SHIFT) +#define I40E_VSILAN_QTABLE_QINDEX_1_SHIFT 16 +#define I40E_VSILAN_QTABLE_QINDEX_1_MASK (0x7FF << I40E_VSILAN_QTABLE_QINDEX_1_SHIFT) +#define I40E_PRTGL_SAH 0x001E2140 +#define I40E_PRTGL_SAH_FC_SAH_SHIFT 0 +#define I40E_PRTGL_SAH_FC_SAH_MASK (0xFFFF << I40E_PRTGL_SAH_FC_SAH_SHIFT) +#define I40E_PRTGL_SAH_MFS_SHIFT 16 +#define I40E_PRTGL_SAH_MFS_MASK (0xFFFF << I40E_PRTGL_SAH_MFS_SHIFT) +#define I40E_PRTGL_SAL 0x001E2120 +#define I40E_PRTGL_SAL_FC_SAL_SHIFT 0 +#define I40E_PRTGL_SAL_FC_SAL_MASK (0xFFFFFFFF << I40E_PRTGL_SAL_FC_SAL_SHIFT) +#define I40E_PRTMAC_HLCTLA 0x001E4760 +#define I40E_PRTMAC_HLCTLA_DROP_US_PKTS_SHIFT 0 +#define I40E_PRTMAC_HLCTLA_DROP_US_PKTS_MASK (0x1 << I40E_PRTMAC_HLCTLA_DROP_US_PKTS_SHIFT) +#define I40E_PRTMAC_HLCTLA_RX_FWRD_CTRL_SHIFT 1 +#define I40E_PRTMAC_HLCTLA_RX_FWRD_CTRL_MASK (0x1 << I40E_PRTMAC_HLCTLA_RX_FWRD_CTRL_SHIFT) +#define I40E_PRTMAC_HLCTLA_CHOP_OS_PKT_SHIFT 2 +#define I40E_PRTMAC_HLCTLA_CHOP_OS_PKT_MASK (0x1 << I40E_PRTMAC_HLCTLA_CHOP_OS_PKT_SHIFT) +#define I40E_PRTMAC_HLCTLA_TX_HYSTERESIS_SHIFT 4 +#define I40E_PRTMAC_HLCTLA_TX_HYSTERESIS_MASK (0x7 << I40E_PRTMAC_HLCTLA_TX_HYSTERESIS_SHIFT) +#define I40E_PRTMAC_HLCTLA_HYS_FLUSH_PKT_SHIFT 7 +#define I40E_PRTMAC_HLCTLA_HYS_FLUSH_PKT_MASK (0x1 << I40E_PRTMAC_HLCTLA_HYS_FLUSH_PKT_SHIFT) +#define I40E_PRTMAC_HSEC_CTL_RX_CHECK_SA_GCP 0x001E3130 +#define I40E_PRTMAC_HSEC_CTL_RX_CHECK_SA_GCP_HSEC_CTL_RX_CHECK_SA_GCP_SHIFT 0 +#define I40E_PRTMAC_HSEC_CTL_RX_CHECK_SA_GCP_HSEC_CTL_RX_CHECK_SA_GCP_MASK (0x1 << I40E_PRTMAC_HSEC_CTL_RX_CHECK_SA_GCP_HSEC_CTL_RX_CHECK_SA_GCP_SHIFT) +#define I40E_PRTMAC_HSEC_CTL_RX_CHECK_SA_GPP 0x001E3290 +#define I40E_PRTMAC_HSEC_CTL_RX_CHECK_SA_GPP_HSEC_CTL_RX_CHECK_SA_GPP_SHIFT 0 +#define I40E_PRTMAC_HSEC_CTL_RX_CHECK_SA_GPP_HSEC_CTL_RX_CHECK_SA_GPP_MASK (0x1 << I40E_PRTMAC_HSEC_CTL_RX_CHECK_SA_GPP_HSEC_CTL_RX_CHECK_SA_GPP_SHIFT) +#define I40E_PRTMAC_HSEC_CTL_RX_CHECK_SA_PPP 0x001E3310 +#define I40E_PRTMAC_HSEC_CTL_RX_CHECK_SA_PPP_HSEC_CTL_RX_CHECK_SA_PPP_SHIFT 0 +#define I40E_PRTMAC_HSEC_CTL_RX_CHECK_SA_PPP_HSEC_CTL_RX_CHECK_SA_PPP_MASK (0x1 << I40E_PRTMAC_HSEC_CTL_RX_CHECK_SA_PPP_HSEC_CTL_RX_CHECK_SA_PPP_SHIFT) +#define I40E_PRTMAC_HSEC_CTL_RX_CHECK_UCAST_GCP 0x001E3100 +#define I40E_PRTMAC_HSEC_CTL_RX_CHECK_UCAST_GCP_HSEC_CTL_RX_CHECK_UCAST_GCP_SHIFT 0 +#define I40E_PRTMAC_HSEC_CTL_RX_CHECK_UCAST_GCP_HSEC_CTL_RX_CHECK_UCAST_GCP_MASK (0x1 << I40E_PRTMAC_HSEC_CTL_RX_CHECK_UCAST_GCP_HSEC_CTL_RX_CHECK_UCAST_GCP_SHIFT) +#define I40E_PRTMAC_HSEC_CTL_RX_CHECK_UCAST_GPP 0x001E3280 +#define I40E_PRTMAC_HSEC_CTL_RX_CHECK_UCAST_GPP_HSEC_CTL_RX_CHECK_UCAST_GPP_SHIFT 0 +#define I40E_PRTMAC_HSEC_CTL_RX_CHECK_UCAST_GPP_HSEC_CTL_RX_CHECK_UCAST_GPP_MASK (0x1 << I40E_PRTMAC_HSEC_CTL_RX_CHECK_UCAST_GPP_HSEC_CTL_RX_CHECK_UCAST_GPP_SHIFT) +#define I40E_PRTMAC_HSEC_CTL_RX_CHECK_UCAST_PPP 0x001E3300 +#define I40E_PRTMAC_HSEC_CTL_RX_CHECK_UCAST_PPP_HSEC_CTL_RX_CHECK_UCAST_PPP_SHIFT 0 +#define I40E_PRTMAC_HSEC_CTL_RX_CHECK_UCAST_PPP_HSEC_CTL_RX_CHECK_UCAST_PPP_MASK (0x1 << I40E_PRTMAC_HSEC_CTL_RX_CHECK_UCAST_PPP_HSEC_CTL_RX_CHECK_UCAST_PPP_SHIFT) +#define I40E_PRTMAC_HSEC_CTL_RX_ENABLE_GCP 0x001E30E0 +#define I40E_PRTMAC_HSEC_CTL_RX_ENABLE_GCP_HSEC_CTL_RX_ENABLE_GCP_SHIFT 0 +#define I40E_PRTMAC_HSEC_CTL_RX_ENABLE_GCP_HSEC_CTL_RX_ENABLE_GCP_MASK (0x1 << I40E_PRTMAC_HSEC_CTL_RX_ENABLE_GCP_HSEC_CTL_RX_ENABLE_GCP_SHIFT) +#define I40E_PRTMAC_HSEC_CTL_RX_ENABLE_GPP 0x001E3260 +#define I40E_PRTMAC_HSEC_CTL_RX_ENABLE_GPP_HSEC_CTL_RX_ENABLE_GPP_SHIFT 0 +#define I40E_PRTMAC_HSEC_CTL_RX_ENABLE_GPP_HSEC_CTL_RX_ENABLE_GPP_MASK (0x1 << I40E_PRTMAC_HSEC_CTL_RX_ENABLE_GPP_HSEC_CTL_RX_ENABLE_GPP_SHIFT) +#define I40E_PRTMAC_HSEC_CTL_RX_ENABLE_PPP 0x001E32E0 +#define I40E_PRTMAC_HSEC_CTL_RX_ENABLE_PPP_HSEC_CTL_RX_ENABLE_PPP_SHIFT 0 +#define I40E_PRTMAC_HSEC_CTL_RX_ENABLE_PPP_HSEC_CTL_RX_ENABLE_PPP_MASK (0x1 << I40E_PRTMAC_HSEC_CTL_RX_ENABLE_PPP_HSEC_CTL_RX_ENABLE_PPP_SHIFT) +#define I40E_PRTMAC_HSEC_CTL_RX_FORWARD_CONTROL 0x001E3360 +#define I40E_PRTMAC_HSEC_CTL_RX_FORWARD_CONTROL_HSEC_CTL_RX_FORWARD_CONTROL_SHIFT 0 +#define I40E_PRTMAC_HSEC_CTL_RX_FORWARD_CONTROL_HSEC_CTL_RX_FORWARD_CONTROL_MASK (0x1 << I40E_PRTMAC_HSEC_CTL_RX_FORWARD_CONTROL_HSEC_CTL_RX_FORWARD_CONTROL_SHIFT) +#define I40E_PRTMAC_HSEC_CTL_RX_PAUSE_DA_UCAST_PART1 0x001E3110 +#define I40E_PRTMAC_HSEC_CTL_RX_PAUSE_DA_UCAST_PART1_HSEC_CTL_RX_PAUSE_DA_UCAST_PART1_SHIFT 0 +#define I40E_PRTMAC_HSEC_CTL_RX_PAUSE_DA_UCAST_PART1_HSEC_CTL_RX_PAUSE_DA_UCAST_PART1_MASK (0xFFFFFFFF << I40E_PRTMAC_HSEC_CTL_RX_PAUSE_DA_UCAST_PART1_HSEC_CTL_RX_PAUSE_DA_UCAST_PART1_SHIFT) +#define I40E_PRTMAC_HSEC_CTL_RX_PAUSE_DA_UCAST_PART2 0x001E3120 +#define I40E_PRTMAC_HSEC_CTL_RX_PAUSE_DA_UCAST_PART2_HSEC_CTL_RX_PAUSE_DA_UCAST_PART2_SHIFT 0 +#define I40E_PRTMAC_HSEC_CTL_RX_PAUSE_DA_UCAST_PART2_HSEC_CTL_RX_PAUSE_DA_UCAST_PART2_MASK (0xFFFF << I40E_PRTMAC_HSEC_CTL_RX_PAUSE_DA_UCAST_PART2_HSEC_CTL_RX_PAUSE_DA_UCAST_PART2_SHIFT) +#define I40E_PRTMAC_HSEC_CTL_RX_PAUSE_ENABLE 0x001E30C0 +#define I40E_PRTMAC_HSEC_CTL_RX_PAUSE_ENABLE_HSEC_CTL_RX_PAUSE_ENABLE_SHIFT 0 +#define I40E_PRTMAC_HSEC_CTL_RX_PAUSE_ENABLE_HSEC_CTL_RX_PAUSE_ENABLE_MASK (0x1FF << I40E_PRTMAC_HSEC_CTL_RX_PAUSE_ENABLE_HSEC_CTL_RX_PAUSE_ENABLE_SHIFT) +#define I40E_PRTMAC_HSEC_CTL_RX_PAUSE_SA_PART1 0x001E3140 +#define I40E_PRTMAC_HSEC_CTL_RX_PAUSE_SA_PART1_HSEC_CTL_RX_PAUSE_SA_PART1_SHIFT 0 +#define I40E_PRTMAC_HSEC_CTL_RX_PAUSE_SA_PART1_HSEC_CTL_RX_PAUSE_SA_PART1_MASK (0xFFFFFFFF << I40E_PRTMAC_HSEC_CTL_RX_PAUSE_SA_PART1_HSEC_CTL_RX_PAUSE_SA_PART1_SHIFT) +#define I40E_PRTMAC_HSEC_CTL_RX_PAUSE_SA_PART2 0x001E3150 +#define I40E_PRTMAC_HSEC_CTL_RX_PAUSE_SA_PART2_HSEC_CTL_RX_PAUSE_SA_PART2_SHIFT 0 +#define I40E_PRTMAC_HSEC_CTL_RX_PAUSE_SA_PART2_HSEC_CTL_RX_PAUSE_SA_PART2_MASK (0xFFFF << I40E_PRTMAC_HSEC_CTL_RX_PAUSE_SA_PART2_HSEC_CTL_RX_PAUSE_SA_PART2_SHIFT) +#define I40E_PRTMAC_HSEC_CTL_TX_ENABLE 0x001E3000 +#define I40E_PRTMAC_HSEC_CTL_TX_ENABLE_HSEC_CTL_TX_ENABLE_SHIFT 0 +#define I40E_PRTMAC_HSEC_CTL_TX_ENABLE_HSEC_CTL_TX_ENABLE_MASK (0x1 << I40E_PRTMAC_HSEC_CTL_TX_ENABLE_HSEC_CTL_TX_ENABLE_SHIFT) +#define I40E_PRTMAC_HSEC_CTL_TX_PAUSE_ENABLE 0x001E30D0 +#define I40E_PRTMAC_HSEC_CTL_TX_PAUSE_ENABLE_HSEC_CTL_TX_PAUSE_ENABLE_SHIFT 0 +#define I40E_PRTMAC_HSEC_CTL_TX_PAUSE_ENABLE_HSEC_CTL_TX_PAUSE_ENABLE_MASK (0x1FF << I40E_PRTMAC_HSEC_CTL_TX_PAUSE_ENABLE_HSEC_CTL_TX_PAUSE_ENABLE_SHIFT) +#define I40E_PRTMAC_HSEC_CTL_TX_PAUSE_QUANTA(_i) (0x001E3370 + ((_i) * 16)) +#define I40E_PRTMAC_HSEC_CTL_TX_PAUSE_QUANTA_MAX_INDEX 8 +#define I40E_PRTMAC_HSEC_CTL_TX_PAUSE_QUANTA_HSEC_CTL_TX_PAUSE_QUANTA_SHIFT 0 +#define I40E_PRTMAC_HSEC_CTL_TX_PAUSE_QUANTA_HSEC_CTL_TX_PAUSE_QUANTA_MASK (0xFFFF << I40E_PRTMAC_HSEC_CTL_TX_PAUSE_QUANTA_HSEC_CTL_TX_PAUSE_QUANTA_SHIFT) +#define I40E_PRTMAC_HSEC_CTL_TX_PAUSE_REFRESH_TIMER(_i) (0x001E3400 + ((_i) * 16)) +#define I40E_PRTMAC_HSEC_CTL_TX_PAUSE_REFRESH_TIMER_MAX_INDEX 8 +#define I40E_PRTMAC_HSEC_CTL_TX_PAUSE_REFRESH_TIMER_HSEC_CTL_TX_PAUSE_REFRESH_TIMER_SHIFT 0 +#define I40E_PRTMAC_HSEC_CTL_TX_PAUSE_REFRESH_TIMER_HSEC_CTL_TX_PAUSE_REFRESH_TIMER_MASK (0xFFFF << I40E_PRTMAC_HSEC_CTL_TX_PAUSE_REFRESH_TIMER_HSEC_CTL_TX_PAUSE_REFRESH_TIMER_SHIFT) +#define I40E_PRTMAC_HSEC_CTL_TX_SA_PART1 0x001E34B0 +#define I40E_PRTMAC_HSEC_CTL_TX_SA_PART1_HSEC_CTL_TX_SA_PART1_SHIFT 0 +#define I40E_PRTMAC_HSEC_CTL_TX_SA_PART1_HSEC_CTL_TX_SA_PART1_MASK (0xFFFFFFFF << I40E_PRTMAC_HSEC_CTL_TX_SA_PART1_HSEC_CTL_TX_SA_PART1_SHIFT) +#define I40E_PRTMAC_HSEC_CTL_TX_SA_PART2 0x001E34C0 +#define I40E_PRTMAC_HSEC_CTL_TX_SA_PART2_HSEC_CTL_TX_SA_PART2_SHIFT 0 +#define I40E_PRTMAC_HSEC_CTL_TX_SA_PART2_HSEC_CTL_TX_SA_PART2_MASK (0xFFFF << I40E_PRTMAC_HSEC_CTL_TX_SA_PART2_HSEC_CTL_TX_SA_PART2_SHIFT) +#define I40E_PRTMAC_HSECTL1 0x001E3560 +#define I40E_PRTMAC_HSECTL1_DROP_US_PKTS_SHIFT 0 +#define I40E_PRTMAC_HSECTL1_DROP_US_PKTS_MASK (0x1 << I40E_PRTMAC_HSECTL1_DROP_US_PKTS_SHIFT) +#define I40E_PRTMAC_HSECTL1_PAD_US_PKT_SHIFT 3 +#define I40E_PRTMAC_HSECTL1_PAD_US_PKT_MASK (0x1 << I40E_PRTMAC_HSECTL1_PAD_US_PKT_SHIFT) +#define I40E_PRTMAC_HSECTL1_TX_HYSTERESIS_SHIFT 4 +#define I40E_PRTMAC_HSECTL1_TX_HYSTERESIS_MASK (0x7 << I40E_PRTMAC_HSECTL1_TX_HYSTERESIS_SHIFT) +#define I40E_PRTMAC_HSECTL1_HYS_FLUSH_PKT_SHIFT 7 +#define I40E_PRTMAC_HSECTL1_HYS_FLUSH_PKT_MASK (0x1 << I40E_PRTMAC_HSECTL1_HYS_FLUSH_PKT_SHIFT) +#define I40E_PRTMAC_HSECTL1_EN_SFD_CHECK_SHIFT 30 +#define I40E_PRTMAC_HSECTL1_EN_SFD_CHECK_MASK (0x1 << I40E_PRTMAC_HSECTL1_EN_SFD_CHECK_SHIFT) +#define I40E_PRTMAC_HSECTL1_EN_PREAMBLE_CHECK_SHIFT 31 +#define I40E_PRTMAC_HSECTL1_EN_PREAMBLE_CHECK_MASK (0x1 << I40E_PRTMAC_HSECTL1_EN_PREAMBLE_CHECK_SHIFT) +#define I40E_PRTMAC_PCS_XAUI_SWAP_A 0x0008C480 +#define I40E_PRTMAC_PCS_XAUI_SWAP_A_SWAP_TX_LANE3_SHIFT 0 +#define I40E_PRTMAC_PCS_XAUI_SWAP_A_SWAP_TX_LANE3_MASK (0x3 << I40E_PRTMAC_PCS_XAUI_SWAP_A_SWAP_TX_LANE3_SHIFT) +#define I40E_PRTMAC_PCS_XAUI_SWAP_A_SWAP_TX_LANE2_SHIFT 2 +#define I40E_PRTMAC_PCS_XAUI_SWAP_A_SWAP_TX_LANE2_MASK (0x3 << I40E_PRTMAC_PCS_XAUI_SWAP_A_SWAP_TX_LANE2_SHIFT) +#define I40E_PRTMAC_PCS_XAUI_SWAP_A_SWAP_TX_LANE1_SHIFT 4 +#define I40E_PRTMAC_PCS_XAUI_SWAP_A_SWAP_TX_LANE1_MASK (0x3 << I40E_PRTMAC_PCS_XAUI_SWAP_A_SWAP_TX_LANE1_SHIFT) +#define I40E_PRTMAC_PCS_XAUI_SWAP_A_SWAP_TX_LANE0_SHIFT 6 +#define I40E_PRTMAC_PCS_XAUI_SWAP_A_SWAP_TX_LANE0_MASK (0x3 << I40E_PRTMAC_PCS_XAUI_SWAP_A_SWAP_TX_LANE0_SHIFT) +#define I40E_PRTMAC_PCS_XAUI_SWAP_A_SWAP_RX_LANE3_SHIFT 8 +#define I40E_PRTMAC_PCS_XAUI_SWAP_A_SWAP_RX_LANE3_MASK (0x3 << I40E_PRTMAC_PCS_XAUI_SWAP_A_SWAP_RX_LANE3_SHIFT) +#define I40E_PRTMAC_PCS_XAUI_SWAP_A_SWAP_RX_LANE2_SHIFT 10 +#define I40E_PRTMAC_PCS_XAUI_SWAP_A_SWAP_RX_LANE2_MASK (0x3 << I40E_PRTMAC_PCS_XAUI_SWAP_A_SWAP_RX_LANE2_SHIFT) +#define I40E_PRTMAC_PCS_XAUI_SWAP_A_SWAP_RX_LANE1_SHIFT 12 +#define I40E_PRTMAC_PCS_XAUI_SWAP_A_SWAP_RX_LANE1_MASK (0x3 << I40E_PRTMAC_PCS_XAUI_SWAP_A_SWAP_RX_LANE1_SHIFT) +#define I40E_PRTMAC_PCS_XAUI_SWAP_A_SWAP_RX_LANE0_SHIFT 14 +#define I40E_PRTMAC_PCS_XAUI_SWAP_A_SWAP_RX_LANE0_MASK (0x3 << I40E_PRTMAC_PCS_XAUI_SWAP_A_SWAP_RX_LANE0_SHIFT) +#define I40E_PRTMAC_PCS_XAUI_SWAP_B 0x0008C484 +#define I40E_PRTMAC_PCS_XAUI_SWAP_B_SWAP_TX_LANE3_SHIFT 0 +#define I40E_PRTMAC_PCS_XAUI_SWAP_B_SWAP_TX_LANE3_MASK (0x3 << I40E_PRTMAC_PCS_XAUI_SWAP_B_SWAP_TX_LANE3_SHIFT) +#define I40E_PRTMAC_PCS_XAUI_SWAP_B_SWAP_TX_LANE2_SHIFT 2 +#define I40E_PRTMAC_PCS_XAUI_SWAP_B_SWAP_TX_LANE2_MASK (0x3 << I40E_PRTMAC_PCS_XAUI_SWAP_B_SWAP_TX_LANE2_SHIFT) +#define I40E_PRTMAC_PCS_XAUI_SWAP_B_SWAP_TX_LANE1_SHIFT 4 +#define I40E_PRTMAC_PCS_XAUI_SWAP_B_SWAP_TX_LANE1_MASK (0x3 << I40E_PRTMAC_PCS_XAUI_SWAP_B_SWAP_TX_LANE1_SHIFT) +#define I40E_PRTMAC_PCS_XAUI_SWAP_B_SWAP_TX_LANE0_SHIFT 6 +#define I40E_PRTMAC_PCS_XAUI_SWAP_B_SWAP_TX_LANE0_MASK (0x3 << I40E_PRTMAC_PCS_XAUI_SWAP_B_SWAP_TX_LANE0_SHIFT) +#define I40E_PRTMAC_PCS_XAUI_SWAP_B_SWAP_RX_LANE3_SHIFT 8 +#define I40E_PRTMAC_PCS_XAUI_SWAP_B_SWAP_RX_LANE3_MASK (0x3 << I40E_PRTMAC_PCS_XAUI_SWAP_B_SWAP_RX_LANE3_SHIFT) +#define I40E_PRTMAC_PCS_XAUI_SWAP_B_SWAP_RX_LANE2_SHIFT 10 +#define I40E_PRTMAC_PCS_XAUI_SWAP_B_SWAP_RX_LANE2_MASK (0x3 << I40E_PRTMAC_PCS_XAUI_SWAP_B_SWAP_RX_LANE2_SHIFT) +#define I40E_PRTMAC_PCS_XAUI_SWAP_B_SWAP_RX_LANE1_SHIFT 12 +#define I40E_PRTMAC_PCS_XAUI_SWAP_B_SWAP_RX_LANE1_MASK (0x3 << I40E_PRTMAC_PCS_XAUI_SWAP_B_SWAP_RX_LANE1_SHIFT) +#define I40E_PRTMAC_PCS_XAUI_SWAP_B_SWAP_RX_LANE0_SHIFT 14 +#define I40E_PRTMAC_PCS_XAUI_SWAP_B_SWAP_RX_LANE0_MASK (0x3 << I40E_PRTMAC_PCS_XAUI_SWAP_B_SWAP_RX_LANE0_SHIFT) +#define I40E_GL_MNG_FWSM 0x000B6134 +#define I40E_GL_MNG_FWSM_FW_MODES_SHIFT 1 +#define I40E_GL_MNG_FWSM_FW_MODES_MASK (0x7 << I40E_GL_MNG_FWSM_FW_MODES_SHIFT) +#define I40E_GL_MNG_FWSM_EEP_RELOAD_IND_SHIFT 6 +#define I40E_GL_MNG_FWSM_EEP_RELOAD_IND_MASK (0x1 << I40E_GL_MNG_FWSM_EEP_RELOAD_IND_SHIFT) +#define I40E_GL_MNG_FWSM_CRC_ERROR_MODULE_SHIFT 11 +#define I40E_GL_MNG_FWSM_CRC_ERROR_MODULE_MASK (0xF << I40E_GL_MNG_FWSM_CRC_ERROR_MODULE_SHIFT) +#define I40E_GL_MNG_FWSM_FW_STATUS_VALID_SHIFT 15 +#define I40E_GL_MNG_FWSM_FW_STATUS_VALID_MASK (0x1 << I40E_GL_MNG_FWSM_FW_STATUS_VALID_SHIFT) +#define I40E_GL_MNG_FWSM_RESET_CNT_SHIFT 16 +#define I40E_GL_MNG_FWSM_RESET_CNT_MASK (0x7 << I40E_GL_MNG_FWSM_RESET_CNT_SHIFT) +#define I40E_GL_MNG_FWSM_EXT_ERR_IND_SHIFT 19 +#define I40E_GL_MNG_FWSM_EXT_ERR_IND_MASK (0x3F << I40E_GL_MNG_FWSM_EXT_ERR_IND_SHIFT) +#define I40E_GL_MNG_FWSM_RSVD_SHIFT 25 +#define I40E_GL_MNG_FWSM_RSVD_MASK (0x1 << I40E_GL_MNG_FWSM_RSVD_SHIFT) +#define I40E_GL_MNG_FWSM_PHY_SERDES0_CONFIG_ERR_SHIFT 26 +#define I40E_GL_MNG_FWSM_PHY_SERDES0_CONFIG_ERR_MASK (0x1 << I40E_GL_MNG_FWSM_PHY_SERDES0_CONFIG_ERR_SHIFT) +#define I40E_GL_MNG_FWSM_PHY_SERDES1_CONFIG_ERR_SHIFT 27 +#define I40E_GL_MNG_FWSM_PHY_SERDES1_CONFIG_ERR_MASK (0x1 << I40E_GL_MNG_FWSM_PHY_SERDES1_CONFIG_ERR_SHIFT) +#define I40E_GL_MNG_FWSM_PHY_SERDES2_CONFIG_ERR_SHIFT 28 +#define I40E_GL_MNG_FWSM_PHY_SERDES2_CONFIG_ERR_MASK (0x1 << I40E_GL_MNG_FWSM_PHY_SERDES2_CONFIG_ERR_SHIFT) +#define I40E_GL_MNG_FWSM_PHY_SERDES3_CONFIG_ERR_SHIFT 29 +#define I40E_GL_MNG_FWSM_PHY_SERDES3_CONFIG_ERR_MASK (0x1 << I40E_GL_MNG_FWSM_PHY_SERDES3_CONFIG_ERR_SHIFT) +#define I40E_GL_MNG_HWARB_CTRL 0x000B6130 +#define I40E_GL_MNG_HWARB_CTRL_NCSI_ARB_EN_SHIFT 0 +#define I40E_GL_MNG_HWARB_CTRL_NCSI_ARB_EN_MASK (0x1 << I40E_GL_MNG_HWARB_CTRL_NCSI_ARB_EN_SHIFT) +#define I40E_PRT_MNG_FTFT_DATA(_i) (0x000852A0 + ((_i) * 32)) /* _i=0...31 */ +#define I40E_PRT_MNG_FTFT_DATA_MAX_INDEX 31 +#define I40E_PRT_MNG_FTFT_DATA_DWORD_SHIFT 0 +#define I40E_PRT_MNG_FTFT_DATA_DWORD_MASK (0xFFFFFFFF << I40E_PRT_MNG_FTFT_DATA_DWORD_SHIFT) +#define I40E_PRT_MNG_FTFT_LENGTH 0x00085260 +#define I40E_PRT_MNG_FTFT_LENGTH_LENGTH_SHIFT 0 +#define I40E_PRT_MNG_FTFT_LENGTH_LENGTH_MASK (0xFF << I40E_PRT_MNG_FTFT_LENGTH_LENGTH_SHIFT) +#define I40E_PRT_MNG_FTFT_MASK(_i) (0x00085160 + ((_i) * 32)) /* _i=0...7 */ +#define I40E_PRT_MNG_FTFT_MASK_MAX_INDEX 7 +#define I40E_PRT_MNG_FTFT_MASK_MASK_SHIFT 0 +#define I40E_PRT_MNG_FTFT_MASK_MASK_MASK (0xFFFF << I40E_PRT_MNG_FTFT_MASK_MASK_SHIFT) +#define I40E_PRT_MNG_MANC 0x00256A20 +#define I40E_PRT_MNG_MANC_FLOW_CONTROL_DISCARD_SHIFT 0 +#define I40E_PRT_MNG_MANC_FLOW_CONTROL_DISCARD_MASK (0x1 << I40E_PRT_MNG_MANC_FLOW_CONTROL_DISCARD_SHIFT) +#define I40E_PRT_MNG_MANC_NCSI_DISCARD_SHIFT 1 +#define I40E_PRT_MNG_MANC_NCSI_DISCARD_MASK (0x1 << I40E_PRT_MNG_MANC_NCSI_DISCARD_SHIFT) +#define I40E_PRT_MNG_MANC_RCV_TCO_EN_SHIFT 17 +#define I40E_PRT_MNG_MANC_RCV_TCO_EN_MASK (0x1 << I40E_PRT_MNG_MANC_RCV_TCO_EN_SHIFT) +#define I40E_PRT_MNG_MANC_RCV_ALL_SHIFT 19 +#define I40E_PRT_MNG_MANC_RCV_ALL_MASK (0x1 << I40E_PRT_MNG_MANC_RCV_ALL_SHIFT) +#define I40E_PRT_MNG_MANC_FIXED_NET_TYPE_SHIFT 25 +#define I40E_PRT_MNG_MANC_FIXED_NET_TYPE_MASK (0x1 << I40E_PRT_MNG_MANC_FIXED_NET_TYPE_SHIFT) +#define I40E_PRT_MNG_MANC_NET_TYPE_SHIFT 26 +#define I40E_PRT_MNG_MANC_NET_TYPE_MASK (0x1 << I40E_PRT_MNG_MANC_NET_TYPE_SHIFT) +#define I40E_PRT_MNG_MANC_EN_BMC2OS_SHIFT 28 +#define I40E_PRT_MNG_MANC_EN_BMC2OS_MASK (0x1 << I40E_PRT_MNG_MANC_EN_BMC2OS_SHIFT) +#define I40E_PRT_MNG_MANC_EN_BMC2NET_SHIFT 29 +#define I40E_PRT_MNG_MANC_EN_BMC2NET_MASK (0x1 << I40E_PRT_MNG_MANC_EN_BMC2NET_SHIFT) +#define I40E_PRT_MNG_MAVTV(_i) (0x00255900 + ((_i) * 32)) /* _i=0...7 */ +#define I40E_PRT_MNG_MAVTV_MAX_INDEX 7 +#define I40E_PRT_MNG_MAVTV_VID_SHIFT 0 +#define I40E_PRT_MNG_MAVTV_VID_MASK (0xFFF << I40E_PRT_MNG_MAVTV_VID_SHIFT) +#define I40E_PRT_MNG_MDEF(_i) (0x00255D00 + ((_i) * 32)) +#define I40E_PRT_MNG_MDEF_MAX_INDEX 7 +#define I40E_PRT_MNG_MDEF_MAC_EXACT_AND_SHIFT 0 +#define I40E_PRT_MNG_MDEF_MAC_EXACT_AND_MASK (0xF << I40E_PRT_MNG_MDEF_MAC_EXACT_AND_SHIFT) +#define I40E_PRT_MNG_MDEF_BROADCAST_AND_SHIFT 4 +#define I40E_PRT_MNG_MDEF_BROADCAST_AND_MASK (0x1 << I40E_PRT_MNG_MDEF_BROADCAST_AND_SHIFT) +#define I40E_PRT_MNG_MDEF_VLAN_AND_SHIFT 5 +#define I40E_PRT_MNG_MDEF_VLAN_AND_MASK (0xFF << I40E_PRT_MNG_MDEF_VLAN_AND_SHIFT) +#define I40E_PRT_MNG_MDEF_IPV4_ADDRESS_AND_SHIFT 13 +#define I40E_PRT_MNG_MDEF_IPV4_ADDRESS_AND_MASK (0xF << I40E_PRT_MNG_MDEF_IPV4_ADDRESS_AND_SHIFT) +#define I40E_PRT_MNG_MDEF_IPV6_ADDRESS_AND_SHIFT 17 +#define I40E_PRT_MNG_MDEF_IPV6_ADDRESS_AND_MASK (0xF << I40E_PRT_MNG_MDEF_IPV6_ADDRESS_AND_SHIFT) +#define I40E_PRT_MNG_MDEF_MAC_EXACT_OR_SHIFT 21 +#define I40E_PRT_MNG_MDEF_MAC_EXACT_OR_MASK (0xF << I40E_PRT_MNG_MDEF_MAC_EXACT_OR_SHIFT) +#define I40E_PRT_MNG_MDEF_BROADCAST_OR_SHIFT 25 +#define I40E_PRT_MNG_MDEF_BROADCAST_OR_MASK (0x1 << I40E_PRT_MNG_MDEF_BROADCAST_OR_SHIFT) +#define I40E_PRT_MNG_MDEF_MULTICAST_AND_SHIFT 26 +#define I40E_PRT_MNG_MDEF_MULTICAST_AND_MASK (0x1 << I40E_PRT_MNG_MDEF_MULTICAST_AND_SHIFT) +#define I40E_PRT_MNG_MDEF_ARP_REQUEST_OR_SHIFT 27 +#define I40E_PRT_MNG_MDEF_ARP_REQUEST_OR_MASK (0x1 << I40E_PRT_MNG_MDEF_ARP_REQUEST_OR_SHIFT) +#define I40E_PRT_MNG_MDEF_ARP_RESPONSE_OR_SHIFT 28 +#define I40E_PRT_MNG_MDEF_ARP_RESPONSE_OR_MASK (0x1 << I40E_PRT_MNG_MDEF_ARP_RESPONSE_OR_SHIFT) +#define I40E_PRT_MNG_MDEF_NEIGHBOR_DISCOVERY_134_OR_SHIFT 29 +#define I40E_PRT_MNG_MDEF_NEIGHBOR_DISCOVERY_134_OR_MASK (0x1 << I40E_PRT_MNG_MDEF_NEIGHBOR_DISCOVERY_134_OR_SHIFT) +#define I40E_PRT_MNG_MDEF_PORT_0X298_OR_SHIFT 30 +#define I40E_PRT_MNG_MDEF_PORT_0X298_OR_MASK (0x1 << I40E_PRT_MNG_MDEF_PORT_0X298_OR_SHIFT) +#define I40E_PRT_MNG_MDEF_PORT_0X26F_OR_SHIFT 31 +#define I40E_PRT_MNG_MDEF_PORT_0X26F_OR_MASK (0x1 << I40E_PRT_MNG_MDEF_PORT_0X26F_OR_SHIFT) +#define I40E_PRT_MNG_MDEF_EXT(_i) (0x00255F00 + ((_i) * 32)) +#define I40E_PRT_MNG_MDEF_EXT_MAX_INDEX 7 +#define I40E_PRT_MNG_MDEF_EXT_L2_ETHERTYPE_AND_SHIFT 0 +#define I40E_PRT_MNG_MDEF_EXT_L2_ETHERTYPE_AND_MASK (0xF << I40E_PRT_MNG_MDEF_EXT_L2_ETHERTYPE_AND_SHIFT) +#define I40E_PRT_MNG_MDEF_EXT_L2_ETHERTYPE_OR_SHIFT 4 +#define I40E_PRT_MNG_MDEF_EXT_L2_ETHERTYPE_OR_MASK (0xF << I40E_PRT_MNG_MDEF_EXT_L2_ETHERTYPE_OR_SHIFT) +#define I40E_PRT_MNG_MDEF_EXT_FLEX_PORT_OR_SHIFT 8 +#define I40E_PRT_MNG_MDEF_EXT_FLEX_PORT_OR_MASK (0xFFFF << I40E_PRT_MNG_MDEF_EXT_FLEX_PORT_OR_SHIFT) +#define I40E_PRT_MNG_MDEF_EXT_FLEX_TCO_SHIFT 24 +#define I40E_PRT_MNG_MDEF_EXT_FLEX_TCO_MASK (0x1 << I40E_PRT_MNG_MDEF_EXT_FLEX_TCO_SHIFT) +#define I40E_PRT_MNG_MDEF_EXT_NEIGHBOR_DISCOVERY_135_OR_SHIFT 25 +#define I40E_PRT_MNG_MDEF_EXT_NEIGHBOR_DISCOVERY_135_OR_MASK (0x1 << I40E_PRT_MNG_MDEF_EXT_NEIGHBOR_DISCOVERY_135_OR_SHIFT) +#define I40E_PRT_MNG_MDEF_EXT_NEIGHBOR_DISCOVERY_136_OR_SHIFT 26 +#define I40E_PRT_MNG_MDEF_EXT_NEIGHBOR_DISCOVERY_136_OR_MASK (0x1 << I40E_PRT_MNG_MDEF_EXT_NEIGHBOR_DISCOVERY_136_OR_SHIFT) +#define I40E_PRT_MNG_MDEF_EXT_NEIGHBOR_DISCOVERY_137_OR_SHIFT 27 +#define I40E_PRT_MNG_MDEF_EXT_NEIGHBOR_DISCOVERY_137_OR_MASK (0x1 << I40E_PRT_MNG_MDEF_EXT_NEIGHBOR_DISCOVERY_137_OR_SHIFT) +#define I40E_PRT_MNG_MDEF_EXT_ICMP_OR_SHIFT 28 +#define I40E_PRT_MNG_MDEF_EXT_ICMP_OR_MASK (0x1 << I40E_PRT_MNG_MDEF_EXT_ICMP_OR_SHIFT) +#define I40E_PRT_MNG_MDEF_EXT_MLD_SHIFT 29 +#define I40E_PRT_MNG_MDEF_EXT_MLD_MASK (0x1 << I40E_PRT_MNG_MDEF_EXT_MLD_SHIFT) +#define I40E_PRT_MNG_MDEF_EXT_APPLY_TO_NETWORK_TRAFFIC_SHIFT 30 +#define I40E_PRT_MNG_MDEF_EXT_APPLY_TO_NETWORK_TRAFFIC_MASK (0x1 << I40E_PRT_MNG_MDEF_EXT_APPLY_TO_NETWORK_TRAFFIC_SHIFT) +#define I40E_PRT_MNG_MDEF_EXT_APPLY_TO_HOST_TRAFFIC_SHIFT 31 +#define I40E_PRT_MNG_MDEF_EXT_APPLY_TO_HOST_TRAFFIC_MASK (0x1 << I40E_PRT_MNG_MDEF_EXT_APPLY_TO_HOST_TRAFFIC_SHIFT) +#define I40E_PRT_MNG_MDEFVSI(_i) (0x00256580 + ((_i) * 32)) /* _i=0...3 */ +#define I40E_PRT_MNG_MDEFVSI_MAX_INDEX 3 +#define I40E_PRT_MNG_MDEFVSI_MDEFVSI_2N_SHIFT 0 +#define I40E_PRT_MNG_MDEFVSI_MDEFVSI_2N_MASK (0xFFFF << I40E_PRT_MNG_MDEFVSI_MDEFVSI_2N_SHIFT) +#define I40E_PRT_MNG_MDEFVSI_MDEFVSI_2NP1_SHIFT 16 +#define I40E_PRT_MNG_MDEFVSI_MDEFVSI_2NP1_MASK (0xFFFF << I40E_PRT_MNG_MDEFVSI_MDEFVSI_2NP1_SHIFT) +#define I40E_PRT_MNG_METF(_i) (0x00256780 + ((_i) * 32)) /* _i=0...3 */ +#define I40E_PRT_MNG_METF_MAX_INDEX 3 +#define I40E_PRT_MNG_METF_ETYPE_SHIFT 0 +#define I40E_PRT_MNG_METF_ETYPE_MASK (0xFFFF << I40E_PRT_MNG_METF_ETYPE_SHIFT) +#define I40E_PRT_MNG_METF_POLARITY_SHIFT 30 +#define I40E_PRT_MNG_METF_POLARITY_MASK (0x1 << I40E_PRT_MNG_METF_POLARITY_SHIFT) +#define I40E_PRT_MNG_MFUTP(_i) (0x00254E00 + ((_i) * 32)) /* _i=0...15 */ +#define I40E_PRT_MNG_MFUTP_MAX_INDEX 15 +#define I40E_PRT_MNG_MFUTP_MFUTP_N_SHIFT 0 +#define I40E_PRT_MNG_MFUTP_MFUTP_N_MASK (0xFFFF << I40E_PRT_MNG_MFUTP_MFUTP_N_SHIFT) +#define I40E_PRT_MNG_MFUTP_UDP_SHIFT 16 +#define I40E_PRT_MNG_MFUTP_UDP_MASK (0x1 << I40E_PRT_MNG_MFUTP_UDP_SHIFT) +#define I40E_PRT_MNG_MFUTP_TCP_SHIFT 17 +#define I40E_PRT_MNG_MFUTP_TCP_MASK (0x1 << I40E_PRT_MNG_MFUTP_TCP_SHIFT) +#define I40E_PRT_MNG_MFUTP_SOURCE_DESTINATION_SHIFT 18 +#define I40E_PRT_MNG_MFUTP_SOURCE_DESTINATION_MASK (0x1 << I40E_PRT_MNG_MFUTP_SOURCE_DESTINATION_SHIFT) +#define I40E_PRT_MNG_MIPAF4(_i) (0x00256280 + ((_i) * 32)) /* _i=0...3 */ +#define I40E_PRT_MNG_MIPAF4_MAX_INDEX 3 +#define I40E_PRT_MNG_MIPAF4_MIPAF_SHIFT 0 +#define I40E_PRT_MNG_MIPAF4_MIPAF_MASK (0xFFFFFFFF << I40E_PRT_MNG_MIPAF4_MIPAF_SHIFT) +#define I40E_PRT_MNG_MIPAF6(_i) (0x00254200 + ((_i) * 32)) /* _i=0...15 */ +#define I40E_PRT_MNG_MIPAF6_MAX_INDEX 15 +#define I40E_PRT_MNG_MIPAF6_MIPAF_SHIFT 0 +#define I40E_PRT_MNG_MIPAF6_MIPAF_MASK (0xFFFFFFFF << I40E_PRT_MNG_MIPAF6_MIPAF_SHIFT) +#define I40E_PRT_MNG_MMAH(_i) (0x00256380 + ((_i) * 32)) /* _i=0...3 */ +#define I40E_PRT_MNG_MMAH_MAX_INDEX 3 +#define I40E_PRT_MNG_MMAH_MMAH_SHIFT 0 +#define I40E_PRT_MNG_MMAH_MMAH_MASK (0xFFFF << I40E_PRT_MNG_MMAH_MMAH_SHIFT) +#define I40E_PRT_MNG_MMAL(_i) (0x00256480 + ((_i) * 32)) /* _i=0...3 */ +#define I40E_PRT_MNG_MMAL_MAX_INDEX 3 +#define I40E_PRT_MNG_MMAL_MMAL_SHIFT 0 +#define I40E_PRT_MNG_MMAL_MMAL_MASK (0xFFFFFFFF << I40E_PRT_MNG_MMAL_MMAL_SHIFT) +#define I40E_PRT_MNG_MNGONLY 0x00256A60 +#define I40E_PRT_MNG_MNGONLY_EXCLUSIVE_TO_MANAGEABILITY_SHIFT 0 +#define I40E_PRT_MNG_MNGONLY_EXCLUSIVE_TO_MANAGEABILITY_MASK (0xFF << I40E_PRT_MNG_MNGONLY_EXCLUSIVE_TO_MANAGEABILITY_SHIFT) +#define I40E_PRT_MNG_MSFM 0x00256AA0 +#define I40E_PRT_MNG_MSFM_PORT_26F_UDP_SHIFT 0 +#define I40E_PRT_MNG_MSFM_PORT_26F_UDP_MASK (0x1 << I40E_PRT_MNG_MSFM_PORT_26F_UDP_SHIFT) +#define I40E_PRT_MNG_MSFM_PORT_26F_TCP_SHIFT 1 +#define I40E_PRT_MNG_MSFM_PORT_26F_TCP_MASK (0x1 << I40E_PRT_MNG_MSFM_PORT_26F_TCP_SHIFT) +#define I40E_PRT_MNG_MSFM_PORT_298_UDP_SHIFT 2 +#define I40E_PRT_MNG_MSFM_PORT_298_UDP_MASK (0x1 << I40E_PRT_MNG_MSFM_PORT_298_UDP_SHIFT) +#define I40E_PRT_MNG_MSFM_PORT_298_TCP_SHIFT 3 +#define I40E_PRT_MNG_MSFM_PORT_298_TCP_MASK (0x1 << I40E_PRT_MNG_MSFM_PORT_298_TCP_SHIFT) +#define I40E_PRT_MNG_MSFM_IPV6_0_MASK_SHIFT 4 +#define I40E_PRT_MNG_MSFM_IPV6_0_MASK_MASK (0x1 << I40E_PRT_MNG_MSFM_IPV6_0_MASK_SHIFT) +#define I40E_PRT_MNG_MSFM_IPV6_1_MASK_SHIFT 5 +#define I40E_PRT_MNG_MSFM_IPV6_1_MASK_MASK (0x1 << I40E_PRT_MNG_MSFM_IPV6_1_MASK_SHIFT) +#define I40E_PRT_MNG_MSFM_IPV6_2_MASK_SHIFT 6 +#define I40E_PRT_MNG_MSFM_IPV6_2_MASK_MASK (0x1 << I40E_PRT_MNG_MSFM_IPV6_2_MASK_SHIFT) +#define I40E_PRT_MNG_MSFM_IPV6_3_MASK_SHIFT 7 +#define I40E_PRT_MNG_MSFM_IPV6_3_MASK_MASK (0x1 << I40E_PRT_MNG_MSFM_IPV6_3_MASK_SHIFT) +#define I40E_MSIX_PBA(_i) (0x00004900 + ((_i) * 4)) /* _i=0...5 */ +#define I40E_MSIX_PBA_MAX_INDEX 5 +#define I40E_MSIX_PBA_PENBIT_SHIFT 0 +#define I40E_MSIX_PBA_PENBIT_MASK (0xFFFFFFFF << I40E_MSIX_PBA_PENBIT_SHIFT) +#define I40E_MSIX_TADD(_i) (0x00000000 + ((_i) * 16)) /* _i=0...128 */ +#define I40E_MSIX_TADD_MAX_INDEX 128 +#define I40E_MSIX_TADD_MSIXTADD10_SHIFT 0 +#define I40E_MSIX_TADD_MSIXTADD10_MASK (0x3 << I40E_MSIX_TADD_MSIXTADD10_SHIFT) +#define I40E_MSIX_TADD_MSIXTADD_SHIFT 2 +#define I40E_MSIX_TADD_MSIXTADD_MASK (0x3FFFFFFF << I40E_MSIX_TADD_MSIXTADD_SHIFT) +#define I40E_MSIX_TMSG(_i) (0x00000008 + ((_i) * 16)) /* _i=0...128 */ +#define I40E_MSIX_TMSG_MAX_INDEX 128 +#define I40E_MSIX_TMSG_MSIXTMSG_SHIFT 0 +#define I40E_MSIX_TMSG_MSIXTMSG_MASK (0xFFFFFFFF << I40E_MSIX_TMSG_MSIXTMSG_SHIFT) +#define I40E_MSIX_TUADD(_i) (0x00000004 + ((_i) * 16)) /* _i=0...128 */ +#define I40E_MSIX_TUADD_MAX_INDEX 128 +#define I40E_MSIX_TUADD_MSIXTUADD_SHIFT 0 +#define I40E_MSIX_TUADD_MSIXTUADD_MASK (0xFFFFFFFF << I40E_MSIX_TUADD_MSIXTUADD_SHIFT) +#define I40E_MSIX_TVCTRL(_i) (0x0000000C + ((_i) * 16)) /* _i=0...128 */ +#define I40E_MSIX_TVCTRL_MAX_INDEX 128 +#define I40E_MSIX_TVCTRL_MASK_SHIFT 0 +#define I40E_MSIX_TVCTRL_MASK_MASK (0x1 << I40E_MSIX_TVCTRL_MASK_SHIFT) +#define I40E_VFMSIX_PBA1(_i) (0x00004944 + ((_i) * 4)) /* _i=0...19 */ +#define I40E_VFMSIX_PBA1_MAX_INDEX 19 +#define I40E_VFMSIX_PBA1_PENBIT_SHIFT 0 +#define I40E_VFMSIX_PBA1_PENBIT_MASK (0xFFFFFFFF << I40E_VFMSIX_PBA1_PENBIT_SHIFT) +#define I40E_VFMSIX_TADD1(_i) (0x00002100 + ((_i) * 16)) /* _i=0...639 */ +#define I40E_VFMSIX_TADD1_MAX_INDEX 639 +#define I40E_VFMSIX_TADD1_MSIXTADD10_SHIFT 0 +#define I40E_VFMSIX_TADD1_MSIXTADD10_MASK (0x3 << I40E_VFMSIX_TADD1_MSIXTADD10_SHIFT) +#define I40E_VFMSIX_TADD1_MSIXTADD_SHIFT 2 +#define I40E_VFMSIX_TADD1_MSIXTADD_MASK (0x3FFFFFFF << I40E_VFMSIX_TADD1_MSIXTADD_SHIFT) +#define I40E_VFMSIX_TMSG1(_i) (0x00002108 + ((_i) * 16)) /* _i=0...639 */ +#define I40E_VFMSIX_TMSG1_MAX_INDEX 639 +#define I40E_VFMSIX_TMSG1_MSIXTMSG_SHIFT 0 +#define I40E_VFMSIX_TMSG1_MSIXTMSG_MASK (0xFFFFFFFF << I40E_VFMSIX_TMSG1_MSIXTMSG_SHIFT) +#define I40E_VFMSIX_TUADD1(_i) (0x00002104 + ((_i) * 16)) /* _i=0...639 */ +#define I40E_VFMSIX_TUADD1_MAX_INDEX 639 +#define I40E_VFMSIX_TUADD1_MSIXTUADD_SHIFT 0 +#define I40E_VFMSIX_TUADD1_MSIXTUADD_MASK (0xFFFFFFFF << I40E_VFMSIX_TUADD1_MSIXTUADD_SHIFT) +#define I40E_VFMSIX_TVCTRL1(_i) (0x0000210C + ((_i) * 16)) /* _i=0...639 */ +#define I40E_VFMSIX_TVCTRL1_MAX_INDEX 639 +#define I40E_VFMSIX_TVCTRL1_MASK_SHIFT 0 +#define I40E_VFMSIX_TVCTRL1_MASK_MASK (0x1 << I40E_VFMSIX_TVCTRL1_MASK_SHIFT) +#define I40E_GLNVM_FLA 0x000B6108 +#define I40E_GLNVM_FLA_FL_SCK_SHIFT 0 +#define I40E_GLNVM_FLA_FL_SCK_MASK (0x1 << I40E_GLNVM_FLA_FL_SCK_SHIFT) +#define I40E_GLNVM_FLA_FL_CE_SHIFT 1 +#define I40E_GLNVM_FLA_FL_CE_MASK (0x1 << I40E_GLNVM_FLA_FL_CE_SHIFT) +#define I40E_GLNVM_FLA_FL_SI_SHIFT 2 +#define I40E_GLNVM_FLA_FL_SI_MASK (0x1 << I40E_GLNVM_FLA_FL_SI_SHIFT) +#define I40E_GLNVM_FLA_FL_SO_SHIFT 3 +#define I40E_GLNVM_FLA_FL_SO_MASK (0x1 << I40E_GLNVM_FLA_FL_SO_SHIFT) +#define I40E_GLNVM_FLA_FL_REQ_SHIFT 4 +#define I40E_GLNVM_FLA_FL_REQ_MASK (0x1 << I40E_GLNVM_FLA_FL_REQ_SHIFT) +#define I40E_GLNVM_FLA_FL_GNT_SHIFT 5 +#define I40E_GLNVM_FLA_FL_GNT_MASK (0x1 << I40E_GLNVM_FLA_FL_GNT_SHIFT) +#define I40E_GLNVM_FLA_LOCKED_SHIFT 6 +#define I40E_GLNVM_FLA_LOCKED_MASK (0x1 << I40E_GLNVM_FLA_LOCKED_SHIFT) +#define I40E_GLNVM_FLA_FL_SADDR_SHIFT 18 +#define I40E_GLNVM_FLA_FL_SADDR_MASK (0x7FF << I40E_GLNVM_FLA_FL_SADDR_SHIFT) +#define I40E_GLNVM_FLA_FL_BUSY_SHIFT 30 +#define I40E_GLNVM_FLA_FL_BUSY_MASK (0x1 << I40E_GLNVM_FLA_FL_BUSY_SHIFT) +#define I40E_GLNVM_FLA_FL_DER_SHIFT 31 +#define I40E_GLNVM_FLA_FL_DER_MASK (0x1 << I40E_GLNVM_FLA_FL_DER_SHIFT) +#define I40E_GLNVM_FLASHID 0x000B6104 +#define I40E_GLNVM_FLASHID_FLASHID_SHIFT 0 +#define I40E_GLNVM_FLASHID_FLASHID_MASK (0xFFFFFF << I40E_GLNVM_FLASHID_FLASHID_SHIFT) +#define I40E_GLNVM_GENS 0x000B6100 +#define I40E_GLNVM_GENS_NVM_PRES_SHIFT 0 +#define I40E_GLNVM_GENS_NVM_PRES_MASK (0x1 << I40E_GLNVM_GENS_NVM_PRES_SHIFT) +#define I40E_GLNVM_GENS_SR_SIZE_SHIFT 5 +#define I40E_GLNVM_GENS_SR_SIZE_MASK (0x7 << I40E_GLNVM_GENS_SR_SIZE_SHIFT) +#define I40E_GLNVM_GENS_BANK1VAL_SHIFT 8 +#define I40E_GLNVM_GENS_BANK1VAL_MASK (0x1 << I40E_GLNVM_GENS_BANK1VAL_SHIFT) +#define I40E_GLNVM_GENS_ALT_PRST_SHIFT 23 +#define I40E_GLNVM_GENS_ALT_PRST_MASK (0x1 << I40E_GLNVM_GENS_ALT_PRST_SHIFT) +#define I40E_GLNVM_GENS_FL_AUTO_RD_SHIFT 25 +#define I40E_GLNVM_GENS_FL_AUTO_RD_MASK (0x1 << I40E_GLNVM_GENS_FL_AUTO_RD_SHIFT) +#define I40E_GLNVM_PROTCSR(_i) (0x000B6010 + ((_i) * 4)) /* _i=0...59 */ +#define I40E_GLNVM_PROTCSR_MAX_INDEX 59 +#define I40E_GLNVM_PROTCSR_ADDR_BLOCK_SHIFT 0 +#define I40E_GLNVM_PROTCSR_ADDR_BLOCK_MASK (0xFFFFFF << I40E_GLNVM_PROTCSR_ADDR_BLOCK_SHIFT) +#define I40E_GLNVM_SRCTL 0x000B6110 +#define I40E_GLNVM_SRCTL_SRBUSY_SHIFT 0 +#define I40E_GLNVM_SRCTL_SRBUSY_MASK (0x1 << I40E_GLNVM_SRCTL_SRBUSY_SHIFT) +#define I40E_GLNVM_SRCTL_ADDR_SHIFT 14 +#define I40E_GLNVM_SRCTL_ADDR_MASK (0x7FFF << I40E_GLNVM_SRCTL_ADDR_SHIFT) +#define I40E_GLNVM_SRCTL_WRITE_SHIFT 29 +#define I40E_GLNVM_SRCTL_WRITE_MASK (0x1 << I40E_GLNVM_SRCTL_WRITE_SHIFT) +#define I40E_GLNVM_SRCTL_START_SHIFT 30 +#define I40E_GLNVM_SRCTL_START_MASK (0x1 << I40E_GLNVM_SRCTL_START_SHIFT) +#define I40E_GLNVM_SRCTL_DONE_SHIFT 31 +#define I40E_GLNVM_SRCTL_DONE_MASK (0x1 << I40E_GLNVM_SRCTL_DONE_SHIFT) +#define I40E_GLNVM_SRDATA 0x000B6114 +#define I40E_GLNVM_SRDATA_WRDATA_SHIFT 0 +#define I40E_GLNVM_SRDATA_WRDATA_MASK (0xFFFF << I40E_GLNVM_SRDATA_WRDATA_SHIFT) +#define I40E_GLNVM_SRDATA_RDDATA_SHIFT 16 +#define I40E_GLNVM_SRDATA_RDDATA_MASK (0xFFFF << I40E_GLNVM_SRDATA_RDDATA_SHIFT) +#define I40E_GLNVM_ULD 0x000B6008 +#define I40E_GLNVM_ULD_CONF_PCIR_DONE_SHIFT 0 +#define I40E_GLNVM_ULD_CONF_PCIR_DONE_MASK (0x1 << I40E_GLNVM_ULD_CONF_PCIR_DONE_SHIFT) +#define I40E_GLNVM_ULD_CONF_PCIRTL_DONE_SHIFT 1 +#define I40E_GLNVM_ULD_CONF_PCIRTL_DONE_MASK (0x1 << I40E_GLNVM_ULD_CONF_PCIRTL_DONE_SHIFT) +#define I40E_GLNVM_ULD_CONF_LCB_DONE_SHIFT 2 +#define I40E_GLNVM_ULD_CONF_LCB_DONE_MASK (0x1 << I40E_GLNVM_ULD_CONF_LCB_DONE_SHIFT) +#define I40E_GLNVM_ULD_CONF_CORE_DONE_SHIFT 3 +#define I40E_GLNVM_ULD_CONF_CORE_DONE_MASK (0x1 << I40E_GLNVM_ULD_CONF_CORE_DONE_SHIFT) +#define I40E_GLNVM_ULD_CONF_GLOBAL_DONE_SHIFT 4 +#define I40E_GLNVM_ULD_CONF_GLOBAL_DONE_MASK (0x1 << I40E_GLNVM_ULD_CONF_GLOBAL_DONE_SHIFT) +#define I40E_GLNVM_ULD_CONF_POR_DONE_SHIFT 5 +#define I40E_GLNVM_ULD_CONF_POR_DONE_MASK (0x1 << I40E_GLNVM_ULD_CONF_POR_DONE_SHIFT) +#define I40E_GLNVM_ULD_CONF_PCIE_ANA_DONE_SHIFT 6 +#define I40E_GLNVM_ULD_CONF_PCIE_ANA_DONE_MASK (0x1 << I40E_GLNVM_ULD_CONF_PCIE_ANA_DONE_SHIFT) +#define I40E_GLNVM_ULD_CONF_PHY_ANA_DONE_SHIFT 7 +#define I40E_GLNVM_ULD_CONF_PHY_ANA_DONE_MASK (0x1 << I40E_GLNVM_ULD_CONF_PHY_ANA_DONE_SHIFT) +#define I40E_GLNVM_ULD_CONF_EMP_DONE_SHIFT 8 +#define I40E_GLNVM_ULD_CONF_EMP_DONE_MASK (0x1 << I40E_GLNVM_ULD_CONF_EMP_DONE_SHIFT) +#define I40E_GLNVM_ULD_CONF_PCIALT_DONE_SHIFT 9 +#define I40E_GLNVM_ULD_CONF_PCIALT_DONE_MASK (0x1 << I40E_GLNVM_ULD_CONF_PCIALT_DONE_SHIFT) + +#define I40E_GLPCI_BYTCTH 0x0009C484 +#define I40E_GLPCI_BYTCTH_PCI_COUNT_BW_BCT_SHIFT 0 +#define I40E_GLPCI_BYTCTH_PCI_COUNT_BW_BCT_MASK (0xFFFFFFFF << I40E_GLPCI_BYTCTH_PCI_COUNT_BW_BCT_SHIFT) +#define I40E_GLPCI_BYTCTL 0x0009C488 +#define I40E_GLPCI_BYTCTL_PCI_COUNT_BW_BCT_SHIFT 0 +#define I40E_GLPCI_BYTCTL_PCI_COUNT_BW_BCT_MASK (0xFFFFFFFF << I40E_GLPCI_BYTCTL_PCI_COUNT_BW_BCT_SHIFT) +#define I40E_GLPCI_CAPCTRL 0x000BE4A4 +#define I40E_GLPCI_CAPCTRL_VPD_EN_SHIFT 0 +#define I40E_GLPCI_CAPCTRL_VPD_EN_MASK (0x1 << I40E_GLPCI_CAPCTRL_VPD_EN_SHIFT) +#define I40E_GLPCI_CAPSUP 0x000BE4A8 +#define I40E_GLPCI_CAPSUP_PCIE_VER_SHIFT 0 +#define I40E_GLPCI_CAPSUP_PCIE_VER_MASK (0x1 << I40E_GLPCI_CAPSUP_PCIE_VER_SHIFT) +#define I40E_GLPCI_CAPSUP_LTR_EN_SHIFT 2 +#define I40E_GLPCI_CAPSUP_LTR_EN_MASK (0x1 << I40E_GLPCI_CAPSUP_LTR_EN_SHIFT) +#define I40E_GLPCI_CAPSUP_TPH_EN_SHIFT 3 +#define I40E_GLPCI_CAPSUP_TPH_EN_MASK (0x1 << I40E_GLPCI_CAPSUP_TPH_EN_SHIFT) +#define I40E_GLPCI_CAPSUP_ARI_EN_SHIFT 4 +#define I40E_GLPCI_CAPSUP_ARI_EN_MASK (0x1 << I40E_GLPCI_CAPSUP_ARI_EN_SHIFT) +#define I40E_GLPCI_CAPSUP_IOV_EN_SHIFT 5 +#define I40E_GLPCI_CAPSUP_IOV_EN_MASK (0x1 << I40E_GLPCI_CAPSUP_IOV_EN_SHIFT) +#define I40E_GLPCI_CAPSUP_ACS_EN_SHIFT 6 +#define I40E_GLPCI_CAPSUP_ACS_EN_MASK (0x1 << I40E_GLPCI_CAPSUP_ACS_EN_SHIFT) +#define I40E_GLPCI_CAPSUP_SEC_EN_SHIFT 7 +#define I40E_GLPCI_CAPSUP_SEC_EN_MASK (0x1 << I40E_GLPCI_CAPSUP_SEC_EN_SHIFT) +#define I40E_GLPCI_CAPSUP_ECRC_GEN_EN_SHIFT 16 +#define I40E_GLPCI_CAPSUP_ECRC_GEN_EN_MASK (0x1 << I40E_GLPCI_CAPSUP_ECRC_GEN_EN_SHIFT) +#define I40E_GLPCI_CAPSUP_ECRC_CHK_EN_SHIFT 17 +#define I40E_GLPCI_CAPSUP_ECRC_CHK_EN_MASK (0x1 << I40E_GLPCI_CAPSUP_ECRC_CHK_EN_SHIFT) +#define I40E_GLPCI_CAPSUP_IDO_EN_SHIFT 18 +#define I40E_GLPCI_CAPSUP_IDO_EN_MASK (0x1 << I40E_GLPCI_CAPSUP_IDO_EN_SHIFT) +#define I40E_GLPCI_CAPSUP_MSI_MASK_SHIFT 19 +#define I40E_GLPCI_CAPSUP_MSI_MASK_MASK (0x1 << I40E_GLPCI_CAPSUP_MSI_MASK_SHIFT) +#define I40E_GLPCI_CAPSUP_CSR_CONF_EN_SHIFT 20 +#define I40E_GLPCI_CAPSUP_CSR_CONF_EN_MASK (0x1 << I40E_GLPCI_CAPSUP_CSR_CONF_EN_SHIFT) +#define I40E_GLPCI_CAPSUP_LOAD_SUBSYS_ID_SHIFT 30 +#define I40E_GLPCI_CAPSUP_LOAD_SUBSYS_ID_MASK (0x1 << I40E_GLPCI_CAPSUP_LOAD_SUBSYS_ID_SHIFT) +#define I40E_GLPCI_CAPSUP_LOAD_DEV_ID_SHIFT 31 +#define I40E_GLPCI_CAPSUP_LOAD_DEV_ID_MASK (0x1 << I40E_GLPCI_CAPSUP_LOAD_DEV_ID_SHIFT) +#define I40E_GLPCI_CNF 0x000BE4C0 +#define I40E_GLPCI_CNF_FLEX10_SHIFT 1 +#define I40E_GLPCI_CNF_FLEX10_MASK (0x1 << I40E_GLPCI_CNF_FLEX10_SHIFT) +#define I40E_GLPCI_CNF_WAKE_PIN_EN_SHIFT 2 +#define I40E_GLPCI_CNF_WAKE_PIN_EN_MASK (0x1 << I40E_GLPCI_CNF_WAKE_PIN_EN_SHIFT) +#define I40E_GLPCI_CNF2 0x000BE494 +#define I40E_GLPCI_CNF2_RO_DIS_SHIFT 0 +#define I40E_GLPCI_CNF2_RO_DIS_MASK (0x1 << I40E_GLPCI_CNF2_RO_DIS_SHIFT) +#define I40E_GLPCI_CNF2_CACHELINE_SIZE_SHIFT 1 +#define I40E_GLPCI_CNF2_CACHELINE_SIZE_MASK (0x1 << I40E_GLPCI_CNF2_CACHELINE_SIZE_SHIFT) +#define I40E_GLPCI_CNF2_MSI_X_PF_N_SHIFT 2 +#define I40E_GLPCI_CNF2_MSI_X_PF_N_MASK (0x7FF << I40E_GLPCI_CNF2_MSI_X_PF_N_SHIFT) +#define I40E_GLPCI_CNF2_MSI_X_VF_N_SHIFT 13 +#define I40E_GLPCI_CNF2_MSI_X_VF_N_MASK (0x7FF << I40E_GLPCI_CNF2_MSI_X_VF_N_SHIFT) +#define I40E_GLPCI_DREVID 0x0009C480 +#define I40E_GLPCI_DREVID_DEFAULT_REVID_SHIFT 0 +#define I40E_GLPCI_DREVID_DEFAULT_REVID_MASK (0xFF << I40E_GLPCI_DREVID_DEFAULT_REVID_SHIFT) +#define I40E_GLPCI_GSCL_1 0x0009C48C +#define I40E_GLPCI_GSCL_1_GIO_COUNT_EN_0_SHIFT 0 +#define I40E_GLPCI_GSCL_1_GIO_COUNT_EN_0_MASK (0x1 << I40E_GLPCI_GSCL_1_GIO_COUNT_EN_0_SHIFT) +#define I40E_GLPCI_GSCL_1_GIO_COUNT_EN_1_SHIFT 1 +#define I40E_GLPCI_GSCL_1_GIO_COUNT_EN_1_MASK (0x1 << I40E_GLPCI_GSCL_1_GIO_COUNT_EN_1_SHIFT) +#define I40E_GLPCI_GSCL_1_GIO_COUNT_EN_2_SHIFT 2 +#define I40E_GLPCI_GSCL_1_GIO_COUNT_EN_2_MASK (0x1 << I40E_GLPCI_GSCL_1_GIO_COUNT_EN_2_SHIFT) +#define I40E_GLPCI_GSCL_1_GIO_COUNT_EN_3_SHIFT 3 +#define I40E_GLPCI_GSCL_1_GIO_COUNT_EN_3_MASK (0x1 << I40E_GLPCI_GSCL_1_GIO_COUNT_EN_3_SHIFT) +#define I40E_GLPCI_GSCL_1_LBC_ENABLE_0_SHIFT 4 +#define I40E_GLPCI_GSCL_1_LBC_ENABLE_0_MASK (0x1 << I40E_GLPCI_GSCL_1_LBC_ENABLE_0_SHIFT) +#define I40E_GLPCI_GSCL_1_LBC_ENABLE_1_SHIFT 5 +#define I40E_GLPCI_GSCL_1_LBC_ENABLE_1_MASK (0x1 << I40E_GLPCI_GSCL_1_LBC_ENABLE_1_SHIFT) +#define I40E_GLPCI_GSCL_1_LBC_ENABLE_2_SHIFT 6 +#define I40E_GLPCI_GSCL_1_LBC_ENABLE_2_MASK (0x1 << I40E_GLPCI_GSCL_1_LBC_ENABLE_2_SHIFT) +#define I40E_GLPCI_GSCL_1_LBC_ENABLE_3_SHIFT 7 +#define I40E_GLPCI_GSCL_1_LBC_ENABLE_3_MASK (0x1 << I40E_GLPCI_GSCL_1_LBC_ENABLE_3_SHIFT) +#define I40E_GLPCI_GSCL_1_PCI_COUNT_LAT_EN_SHIFT 8 +#define I40E_GLPCI_GSCL_1_PCI_COUNT_LAT_EN_MASK (0x1 << I40E_GLPCI_GSCL_1_PCI_COUNT_LAT_EN_SHIFT) +#define I40E_GLPCI_GSCL_1_PCI_COUNT_LAT_EV_SHIFT 9 +#define I40E_GLPCI_GSCL_1_PCI_COUNT_LAT_EV_MASK (0x1F << I40E_GLPCI_GSCL_1_PCI_COUNT_LAT_EV_SHIFT) +#define I40E_GLPCI_GSCL_1_PCI_COUNT_BW_EN_SHIFT 14 +#define I40E_GLPCI_GSCL_1_PCI_COUNT_BW_EN_MASK (0x1 << I40E_GLPCI_GSCL_1_PCI_COUNT_BW_EN_SHIFT) +#define I40E_GLPCI_GSCL_1_PCI_COUNT_BW_EV_SHIFT 15 +#define I40E_GLPCI_GSCL_1_PCI_COUNT_BW_EV_MASK (0x1F << I40E_GLPCI_GSCL_1_PCI_COUNT_BW_EV_SHIFT) +#define I40E_GLPCI_GSCL_1_GIO_64_BIT_EN_SHIFT 28 +#define I40E_GLPCI_GSCL_1_GIO_64_BIT_EN_MASK (0x1 << I40E_GLPCI_GSCL_1_GIO_64_BIT_EN_SHIFT) +#define I40E_GLPCI_GSCL_1_GIO_COUNT_RESET_SHIFT 29 +#define I40E_GLPCI_GSCL_1_GIO_COUNT_RESET_MASK (0x1 << I40E_GLPCI_GSCL_1_GIO_COUNT_RESET_SHIFT) +#define I40E_GLPCI_GSCL_1_GIO_COUNT_STOP_SHIFT 30 +#define I40E_GLPCI_GSCL_1_GIO_COUNT_STOP_MASK (0x1 << I40E_GLPCI_GSCL_1_GIO_COUNT_STOP_SHIFT) +#define I40E_GLPCI_GSCL_1_GIO_COUNT_START_SHIFT 31 +#define I40E_GLPCI_GSCL_1_GIO_COUNT_START_MASK (0x1 << I40E_GLPCI_GSCL_1_GIO_COUNT_START_SHIFT) +#define I40E_GLPCI_GSCL_2 0x0009C490 +#define I40E_GLPCI_GSCL_2_GIO_EVENT_NUM_0_SHIFT 0 +#define I40E_GLPCI_GSCL_2_GIO_EVENT_NUM_0_MASK (0xFF << I40E_GLPCI_GSCL_2_GIO_EVENT_NUM_0_SHIFT) +#define I40E_GLPCI_GSCL_2_GIO_EVENT_NUM_1_SHIFT 8 +#define I40E_GLPCI_GSCL_2_GIO_EVENT_NUM_1_MASK (0xFF << I40E_GLPCI_GSCL_2_GIO_EVENT_NUM_1_SHIFT) +#define I40E_GLPCI_GSCL_2_GIO_EVENT_NUM_2_SHIFT 16 +#define I40E_GLPCI_GSCL_2_GIO_EVENT_NUM_2_MASK (0xFF << I40E_GLPCI_GSCL_2_GIO_EVENT_NUM_2_SHIFT) +#define I40E_GLPCI_GSCL_2_GIO_EVENT_NUM_3_SHIFT 24 +#define I40E_GLPCI_GSCL_2_GIO_EVENT_NUM_3_MASK (0xFF << I40E_GLPCI_GSCL_2_GIO_EVENT_NUM_3_SHIFT) +#define I40E_GLPCI_GSCL_5_8(_i) (0x0009C494 + ((_i) * 4)) /* _i=0...3 */ +#define I40E_GLPCI_GSCL_5_8_MAX_INDEX 3 +#define I40E_GLPCI_GSCL_5_8_LBC_THRESHOLD_N_SHIFT 0 +#define I40E_GLPCI_GSCL_5_8_LBC_THRESHOLD_N_MASK (0xFFFF << I40E_GLPCI_GSCL_5_8_LBC_THRESHOLD_N_SHIFT) +#define I40E_GLPCI_GSCL_5_8_LBC_TIMER_N_SHIFT 16 +#define I40E_GLPCI_GSCL_5_8_LBC_TIMER_N_MASK (0xFFFF << I40E_GLPCI_GSCL_5_8_LBC_TIMER_N_SHIFT) +#define I40E_GLPCI_GSCN_0_3(_i) (0x0009C4A4 + ((_i) * 4)) /* _i=0...3 */ +#define I40E_GLPCI_GSCN_0_3_MAX_INDEX 3 +#define I40E_GLPCI_GSCN_0_3_EVENT_COUNTER_SHIFT 0 +#define I40E_GLPCI_GSCN_0_3_EVENT_COUNTER_MASK (0xFFFFFFFF << I40E_GLPCI_GSCN_0_3_EVENT_COUNTER_SHIFT) +#define I40E_GLPCI_LATCT 0x0009C4B4 +#define I40E_GLPCI_LATCT_PCI_COUNT_LAT_CT_SHIFT 0 +#define I40E_GLPCI_LATCT_PCI_COUNT_LAT_CT_MASK (0xFFFFFFFF << I40E_GLPCI_LATCT_PCI_COUNT_LAT_CT_SHIFT) +#define I40E_GLPCI_LBARCTRL 0x000BE484 +#define I40E_GLPCI_LBARCTRL_PREFBAR_SHIFT 0 +#define I40E_GLPCI_LBARCTRL_PREFBAR_MASK (0x1 << I40E_GLPCI_LBARCTRL_PREFBAR_SHIFT) +#define I40E_GLPCI_LBARCTRL_BAR32_SHIFT 1 +#define I40E_GLPCI_LBARCTRL_BAR32_MASK (0x1 << I40E_GLPCI_LBARCTRL_BAR32_SHIFT) +#define I40E_GLPCI_LBARCTRL_FLASH_EXPOSE_SHIFT 3 +#define I40E_GLPCI_LBARCTRL_FLASH_EXPOSE_MASK (0x1 << I40E_GLPCI_LBARCTRL_FLASH_EXPOSE_SHIFT) +#define I40E_GLPCI_LBARCTRL_PE_DB_SIZE_SHIFT 4 +#define I40E_GLPCI_LBARCTRL_PE_DB_SIZE_MASK (0x3 << I40E_GLPCI_LBARCTRL_PE_DB_SIZE_SHIFT) +#define I40E_GLPCI_LBARCTRL_FL_SIZE_SHIFT 6 +#define I40E_GLPCI_LBARCTRL_FL_SIZE_MASK (0x7 << I40E_GLPCI_LBARCTRL_FL_SIZE_SHIFT) +#define I40E_GLPCI_LBARCTRL_VF_PE_DB_SIZE_SHIFT 10 +#define I40E_GLPCI_LBARCTRL_VF_PE_DB_SIZE_MASK (0x1 << I40E_GLPCI_LBARCTRL_VF_PE_DB_SIZE_SHIFT) +#define I40E_GLPCI_LBARCTRL_EXROM_SIZE_SHIFT 11 +#define I40E_GLPCI_LBARCTRL_EXROM_SIZE_MASK (0x7 << I40E_GLPCI_LBARCTRL_EXROM_SIZE_SHIFT) +#define I40E_GLPCI_LINKCAP 0x000BE4AC +#define I40E_GLPCI_LINKCAP_LINK_SPEEDS_VECTOR_SHIFT 0 +#define I40E_GLPCI_LINKCAP_LINK_SPEEDS_VECTOR_MASK (0x3F << I40E_GLPCI_LINKCAP_LINK_SPEEDS_VECTOR_SHIFT) +#define I40E_GLPCI_LINKCAP_MAX_PAYLOAD_SHIFT 6 +#define I40E_GLPCI_LINKCAP_MAX_PAYLOAD_MASK (0x7 << I40E_GLPCI_LINKCAP_MAX_PAYLOAD_SHIFT) +#define I40E_GLPCI_LINKCAP_MAX_LINK_WIDTH_SHIFT 9 +#define I40E_GLPCI_LINKCAP_MAX_LINK_WIDTH_MASK (0xF << I40E_GLPCI_LINKCAP_MAX_LINK_WIDTH_SHIFT) +#define I40E_GLPCI_PCIERR 0x000BE4FC +#define I40E_GLPCI_PCIERR_PCIE_ERR_REP_SHIFT 0 +#define I40E_GLPCI_PCIERR_PCIE_ERR_REP_MASK (0xFFFFFFFF << I40E_GLPCI_PCIERR_PCIE_ERR_REP_SHIFT) +#define I40E_GLPCI_PCITEST2 0x000BE4BC +#define I40E_GLPCI_PCITEST2_IOV_TEST_MODE_SHIFT 0 +#define I40E_GLPCI_PCITEST2_IOV_TEST_MODE_MASK (0x1 << I40E_GLPCI_PCITEST2_IOV_TEST_MODE_SHIFT) +#define I40E_GLPCI_PCITEST2_TAG_ALLOC_SHIFT 1 +#define I40E_GLPCI_PCITEST2_TAG_ALLOC_MASK (0x1 << I40E_GLPCI_PCITEST2_TAG_ALLOC_SHIFT) + +#define I40E_GLPCI_PKTCT 0x0009C4BC +#define I40E_GLPCI_PKTCT_PCI_COUNT_BW_PCT_SHIFT 0 +#define I40E_GLPCI_PKTCT_PCI_COUNT_BW_PCT_MASK (0xFFFFFFFF << I40E_GLPCI_PKTCT_PCI_COUNT_BW_PCT_SHIFT) +#define I40E_GLPCI_PMSUP 0x000BE4B0 +#define I40E_GLPCI_PMSUP_ASPM_SUP_SHIFT 0 +#define I40E_GLPCI_PMSUP_ASPM_SUP_MASK (0x3 << I40E_GLPCI_PMSUP_ASPM_SUP_SHIFT) +#define I40E_GLPCI_PMSUP_L0S_EXIT_LAT_SHIFT 2 +#define I40E_GLPCI_PMSUP_L0S_EXIT_LAT_MASK (0x7 << I40E_GLPCI_PMSUP_L0S_EXIT_LAT_SHIFT) +#define I40E_GLPCI_PMSUP_L1_EXIT_LAT_SHIFT 5 +#define I40E_GLPCI_PMSUP_L1_EXIT_LAT_MASK (0x7 << I40E_GLPCI_PMSUP_L1_EXIT_LAT_SHIFT) +#define I40E_GLPCI_PMSUP_L0S_ACC_LAT_SHIFT 8 +#define I40E_GLPCI_PMSUP_L0S_ACC_LAT_MASK (0x7 << I40E_GLPCI_PMSUP_L0S_ACC_LAT_SHIFT) +#define I40E_GLPCI_PMSUP_L1_ACC_LAT_SHIFT 11 +#define I40E_GLPCI_PMSUP_L1_ACC_LAT_MASK (0x7 << I40E_GLPCI_PMSUP_L1_ACC_LAT_SHIFT) +#define I40E_GLPCI_PMSUP_SLOT_CLK_SHIFT 14 +#define I40E_GLPCI_PMSUP_SLOT_CLK_MASK (0x1 << I40E_GLPCI_PMSUP_SLOT_CLK_SHIFT) +#define I40E_GLPCI_PMSUP_OBFF_SUP_SHIFT 15 +#define I40E_GLPCI_PMSUP_OBFF_SUP_MASK (0x3 << I40E_GLPCI_PMSUP_OBFF_SUP_SHIFT) +#define I40E_GLPCI_PWRDATA 0x000BE490 +#define I40E_GLPCI_PWRDATA_D0_POWER_SHIFT 0 +#define I40E_GLPCI_PWRDATA_D0_POWER_MASK (0xFF << I40E_GLPCI_PWRDATA_D0_POWER_SHIFT) +#define I40E_GLPCI_PWRDATA_COMM_POWER_SHIFT 8 +#define I40E_GLPCI_PWRDATA_COMM_POWER_MASK (0xFF << I40E_GLPCI_PWRDATA_COMM_POWER_SHIFT) +#define I40E_GLPCI_PWRDATA_D3_POWER_SHIFT 16 +#define I40E_GLPCI_PWRDATA_D3_POWER_MASK (0xFF << I40E_GLPCI_PWRDATA_D3_POWER_SHIFT) +#define I40E_GLPCI_PWRDATA_DATA_SCALE_SHIFT 24 +#define I40E_GLPCI_PWRDATA_DATA_SCALE_MASK (0x3 << I40E_GLPCI_PWRDATA_DATA_SCALE_SHIFT) +#define I40E_GLPCI_REVID 0x000BE4B4 +#define I40E_GLPCI_REVID_NVM_REVID_SHIFT 0 +#define I40E_GLPCI_REVID_NVM_REVID_MASK (0xFF << I40E_GLPCI_REVID_NVM_REVID_SHIFT) +#define I40E_GLPCI_SERH 0x000BE49C +#define I40E_GLPCI_SERH_SER_NUM_H_SHIFT 0 +#define I40E_GLPCI_SERH_SER_NUM_H_MASK (0xFFFF << I40E_GLPCI_SERH_SER_NUM_H_SHIFT) +#define I40E_GLPCI_SERL 0x000BE498 +#define I40E_GLPCI_SERL_SER_NUM_L_SHIFT 0 +#define I40E_GLPCI_SERL_SER_NUM_L_MASK (0xFFFFFFFF << I40E_GLPCI_SERL_SER_NUM_L_SHIFT) +#define I40E_GLPCI_SUBSYSID 0x000BE48C +#define I40E_GLPCI_SUBSYSID_SUB_VEN_ID_SHIFT 0 +#define I40E_GLPCI_SUBSYSID_SUB_VEN_ID_MASK (0xFFFF << I40E_GLPCI_SUBSYSID_SUB_VEN_ID_SHIFT) +#define I40E_GLPCI_SUBSYSID_SUB_ID_SHIFT 16 +#define I40E_GLPCI_SUBSYSID_SUB_ID_MASK (0xFFFF << I40E_GLPCI_SUBSYSID_SUB_ID_SHIFT) +#define I40E_GLPCI_UPADD 0x000BE4F8 +#define I40E_GLPCI_UPADD_ADDRESS_SHIFT 1 +#define I40E_GLPCI_UPADD_ADDRESS_MASK (0x7FFFFFFF << I40E_GLPCI_UPADD_ADDRESS_SHIFT) +#define I40E_GLPCI_VFSUP 0x000BE4B8 +#define I40E_GLPCI_VFSUP_VF_PREFETCH_SHIFT 0 +#define I40E_GLPCI_VFSUP_VF_PREFETCH_MASK (0x1 << I40E_GLPCI_VFSUP_VF_PREFETCH_SHIFT) +#define I40E_GLPCI_VFSUP_VR_BAR_TYPE_SHIFT 1 +#define I40E_GLPCI_VFSUP_VR_BAR_TYPE_MASK (0x1 << I40E_GLPCI_VFSUP_VR_BAR_TYPE_SHIFT) +#define I40E_PF_FUNC_RID 0x0009C000 +#define I40E_PF_FUNC_RID_FUNCTION_NUMBER_SHIFT 0 +#define I40E_PF_FUNC_RID_FUNCTION_NUMBER_MASK (0x7 << I40E_PF_FUNC_RID_FUNCTION_NUMBER_SHIFT) +#define I40E_PF_FUNC_RID_DEVICE_NUMBER_SHIFT 3 +#define I40E_PF_FUNC_RID_DEVICE_NUMBER_MASK (0x1F << I40E_PF_FUNC_RID_DEVICE_NUMBER_SHIFT) +#define I40E_PF_FUNC_RID_BUS_NUMBER_SHIFT 8 +#define I40E_PF_FUNC_RID_BUS_NUMBER_MASK (0xFF << I40E_PF_FUNC_RID_BUS_NUMBER_SHIFT) +#define I40E_PF_PCI_CIAA 0x0009C080 +#define I40E_PF_PCI_CIAA_ADDRESS_SHIFT 0 +#define I40E_PF_PCI_CIAA_ADDRESS_MASK (0xFFF << I40E_PF_PCI_CIAA_ADDRESS_SHIFT) +#define I40E_PF_PCI_CIAA_VF_NUM_SHIFT 12 +#define I40E_PF_PCI_CIAA_VF_NUM_MASK (0x7F << I40E_PF_PCI_CIAA_VF_NUM_SHIFT) +#define I40E_PF_PCI_CIAD 0x0009C100 +#define I40E_PF_PCI_CIAD_DATA_SHIFT 0 +#define I40E_PF_PCI_CIAD_DATA_MASK (0xFFFFFFFF << I40E_PF_PCI_CIAD_DATA_SHIFT) +#define I40E_PFPCI_CLASS 0x000BE400 +#define I40E_PFPCI_CLASS_STORAGE_CLASS_SHIFT 0 +#define I40E_PFPCI_CLASS_STORAGE_CLASS_MASK (0x1 << I40E_PFPCI_CLASS_STORAGE_CLASS_SHIFT) +#define I40E_PFPCI_CNF 0x000BE000 +#define I40E_PFPCI_CNF_MSI_EN_SHIFT 2 +#define I40E_PFPCI_CNF_MSI_EN_MASK (0x1 << I40E_PFPCI_CNF_MSI_EN_SHIFT) +#define I40E_PFPCI_CNF_EXROM_DIS_SHIFT 3 +#define I40E_PFPCI_CNF_EXROM_DIS_MASK (0x1 << I40E_PFPCI_CNF_EXROM_DIS_SHIFT) +#define I40E_PFPCI_CNF_IO_BAR_SHIFT 4 +#define I40E_PFPCI_CNF_IO_BAR_MASK (0x1 << I40E_PFPCI_CNF_IO_BAR_SHIFT) +#define I40E_PFPCI_CNF_INT_PIN_SHIFT 5 +#define I40E_PFPCI_CNF_INT_PIN_MASK (0x3 << I40E_PFPCI_CNF_INT_PIN_SHIFT) +#define I40E_PFPCI_FACTPS 0x0009C180 +#define I40E_PFPCI_FACTPS_FUNC_POWER_STATE_SHIFT 0 +#define I40E_PFPCI_FACTPS_FUNC_POWER_STATE_MASK (0x3 << I40E_PFPCI_FACTPS_FUNC_POWER_STATE_SHIFT) +#define I40E_PFPCI_FACTPS_FUNC_AUX_EN_SHIFT 3 +#define I40E_PFPCI_FACTPS_FUNC_AUX_EN_MASK (0x1 << I40E_PFPCI_FACTPS_FUNC_AUX_EN_SHIFT) +#define I40E_PFPCI_FUNC 0x000BE200 +#define I40E_PFPCI_FUNC_FUNC_DIS_SHIFT 0 +#define I40E_PFPCI_FUNC_FUNC_DIS_MASK (0x1 << I40E_PFPCI_FUNC_FUNC_DIS_SHIFT) +#define I40E_PFPCI_FUNC_ALLOW_FUNC_DIS_SHIFT 1 +#define I40E_PFPCI_FUNC_ALLOW_FUNC_DIS_MASK (0x1 << I40E_PFPCI_FUNC_ALLOW_FUNC_DIS_SHIFT) +#define I40E_PFPCI_FUNC_DIS_FUNC_ON_PORT_DIS_SHIFT 2 +#define I40E_PFPCI_FUNC_DIS_FUNC_ON_PORT_DIS_MASK (0x1 << I40E_PFPCI_FUNC_DIS_FUNC_ON_PORT_DIS_SHIFT) +#define I40E_PFPCI_FUNC2 0x000BE180 +#define I40E_PFPCI_FUNC2_EMP_FUNC_DIS_SHIFT 0 +#define I40E_PFPCI_FUNC2_EMP_FUNC_DIS_MASK (0x1 << I40E_PFPCI_FUNC2_EMP_FUNC_DIS_SHIFT) +#define I40E_PFPCI_ICAUSE 0x0009C200 +#define I40E_PFPCI_ICAUSE_PCIE_ERR_CAUSE_SHIFT 0 +#define I40E_PFPCI_ICAUSE_PCIE_ERR_CAUSE_MASK (0xFFFFFFFF << I40E_PFPCI_ICAUSE_PCIE_ERR_CAUSE_SHIFT) +#define I40E_PFPCI_IENA 0x0009C280 +#define I40E_PFPCI_IENA_PCIE_ERR_EN_SHIFT 0 +#define I40E_PFPCI_IENA_PCIE_ERR_EN_MASK (0xFFFFFFFF << I40E_PFPCI_IENA_PCIE_ERR_EN_SHIFT) +#define I40E_PFPCI_PFDEVID 0x000BE080 +#define I40E_PFPCI_PFDEVID_PF_DEV_ID_LAN_SHIFT 0 +#define I40E_PFPCI_PFDEVID_PF_DEV_ID_LAN_MASK (0xFFFF << I40E_PFPCI_PFDEVID_PF_DEV_ID_LAN_SHIFT) +#define I40E_PFPCI_PFDEVID_PF_DEV_ID_SAN_SHIFT 16 +#define I40E_PFPCI_PFDEVID_PF_DEV_ID_SAN_MASK (0xFFFF << I40E_PFPCI_PFDEVID_PF_DEV_ID_SAN_SHIFT) +#define I40E_PFPCI_PM 0x000BE300 +#define I40E_PFPCI_PM_PME_EN_SHIFT 0 +#define I40E_PFPCI_PM_PME_EN_MASK (0x1 << I40E_PFPCI_PM_PME_EN_SHIFT) +#define I40E_PFPCI_STATUS1 0x000BE280 +#define I40E_PFPCI_STATUS1_FUNC_VALID_SHIFT 0 +#define I40E_PFPCI_STATUS1_FUNC_VALID_MASK (0x1 << I40E_PFPCI_STATUS1_FUNC_VALID_SHIFT) +#define I40E_PFPCI_VFDEVID 0x000BE100 +#define I40E_PFPCI_VFDEVID_VF_DEV_ID_LAN_SHIFT 0 +#define I40E_PFPCI_VFDEVID_VF_DEV_ID_LAN_MASK (0xFFFF << I40E_PFPCI_VFDEVID_VF_DEV_ID_LAN_SHIFT) +#define I40E_PFPCI_VFDEVID_VF_DEV_ID_SAN_SHIFT 16 +#define I40E_PFPCI_VFDEVID_VF_DEV_ID_SAN_MASK (0xFFFF << I40E_PFPCI_VFDEVID_VF_DEV_ID_SAN_SHIFT) +#define I40E_PFPCI_VMINDEX 0x0009C300 +#define I40E_PFPCI_VMINDEX_VMINDEX_SHIFT 0 +#define I40E_PFPCI_VMINDEX_VMINDEX_MASK (0x1FF << I40E_PFPCI_VMINDEX_VMINDEX_SHIFT) +#define I40E_PFPCI_VMPEND 0x0009C380 +#define I40E_PFPCI_VMPEND_PENDING_SHIFT 0 +#define I40E_PFPCI_VMPEND_PENDING_MASK (0x1 << I40E_PFPCI_VMPEND_PENDING_SHIFT) +#define I40E_GLPE_CPUSTATUS0 0x0000D040 +#define I40E_GLPE_CPUSTATUS0_PECPUSTATUS0_SHIFT 0 +#define I40E_GLPE_CPUSTATUS0_PECPUSTATUS0_MASK (0xFFFFFFFF << I40E_GLPE_CPUSTATUS0_PECPUSTATUS0_SHIFT) +#define I40E_GLPE_CPUSTATUS1 0x0000D044 +#define I40E_GLPE_CPUSTATUS1_PECPUSTATUS1_SHIFT 0 +#define I40E_GLPE_CPUSTATUS1_PECPUSTATUS1_MASK (0xFFFFFFFF << I40E_GLPE_CPUSTATUS1_PECPUSTATUS1_SHIFT) +#define I40E_GLPE_CPUSTATUS2 0x0000D048 +#define I40E_GLPE_CPUSTATUS2_PECPUSTATUS2_SHIFT 0 +#define I40E_GLPE_CPUSTATUS2_PECPUSTATUS2_MASK (0xFFFFFFFF << I40E_GLPE_CPUSTATUS2_PECPUSTATUS2_SHIFT) +#define I40E_GLPE_PFFLMOBJCTRL(_i) (0x0000D480 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLPE_PFFLMOBJCTRL_MAX_INDEX 15 +#define I40E_GLPE_PFFLMOBJCTRL_XMIT_BLOCKSIZE_SHIFT 0 +#define I40E_GLPE_PFFLMOBJCTRL_XMIT_BLOCKSIZE_MASK (0x7 << I40E_GLPE_PFFLMOBJCTRL_XMIT_BLOCKSIZE_SHIFT) +#define I40E_GLPE_PFFLMOBJCTRL_Q1_BLOCKSIZE_SHIFT 8 +#define I40E_GLPE_PFFLMOBJCTRL_Q1_BLOCKSIZE_MASK (0x7 << I40E_GLPE_PFFLMOBJCTRL_Q1_BLOCKSIZE_SHIFT) +#define I40E_GLPE_VFFLMOBJCTRL(_i) (0x0000D400 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPE_VFFLMOBJCTRL_MAX_INDEX 31 +#define I40E_GLPE_VFFLMOBJCTRL_XMIT_BLOCKSIZE_SHIFT 0 +#define I40E_GLPE_VFFLMOBJCTRL_XMIT_BLOCKSIZE_MASK (0x7 << I40E_GLPE_VFFLMOBJCTRL_XMIT_BLOCKSIZE_SHIFT) +#define I40E_GLPE_VFFLMOBJCTRL_Q1_BLOCKSIZE_SHIFT 8 +#define I40E_GLPE_VFFLMOBJCTRL_Q1_BLOCKSIZE_MASK (0x7 << I40E_GLPE_VFFLMOBJCTRL_Q1_BLOCKSIZE_SHIFT) +#define I40E_GLPE_VFFLMQ1ALLOCERR(_i) (0x0000C700 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPE_VFFLMQ1ALLOCERR_MAX_INDEX 31 +#define I40E_GLPE_VFFLMQ1ALLOCERR_ERROR_COUNT_SHIFT 0 +#define I40E_GLPE_VFFLMQ1ALLOCERR_ERROR_COUNT_MASK (0xFFFF << I40E_GLPE_VFFLMQ1ALLOCERR_ERROR_COUNT_SHIFT) +#define I40E_GLPE_VFFLMXMITALLOCERR(_i) (0x0000C600 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPE_VFFLMXMITALLOCERR_MAX_INDEX 31 +#define I40E_GLPE_VFFLMXMITALLOCERR_ERROR_COUNT_SHIFT 0 +#define I40E_GLPE_VFFLMXMITALLOCERR_ERROR_COUNT_MASK (0xFFFF << I40E_GLPE_VFFLMXMITALLOCERR_ERROR_COUNT_SHIFT) +#define I40E_GLPE_VFUDACTRL(_i) (0x0000C000 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPE_VFUDACTRL_MAX_INDEX 31 +#define I40E_GLPE_VFUDACTRL_IPV4MCFRAGRESBP_SHIFT 0 +#define I40E_GLPE_VFUDACTRL_IPV4MCFRAGRESBP_MASK (0x1 << I40E_GLPE_VFUDACTRL_IPV4MCFRAGRESBP_SHIFT) +#define I40E_GLPE_VFUDACTRL_IPV4UCFRAGRESBP_SHIFT 1 +#define I40E_GLPE_VFUDACTRL_IPV4UCFRAGRESBP_MASK (0x1 << I40E_GLPE_VFUDACTRL_IPV4UCFRAGRESBP_SHIFT) +#define I40E_GLPE_VFUDACTRL_IPV6MCFRAGRESBP_SHIFT 2 +#define I40E_GLPE_VFUDACTRL_IPV6MCFRAGRESBP_MASK (0x1 << I40E_GLPE_VFUDACTRL_IPV6MCFRAGRESBP_SHIFT) +#define I40E_GLPE_VFUDACTRL_IPV6UCFRAGRESBP_SHIFT 3 +#define I40E_GLPE_VFUDACTRL_IPV6UCFRAGRESBP_MASK (0x1 << I40E_GLPE_VFUDACTRL_IPV6UCFRAGRESBP_SHIFT) +#define I40E_GLPE_VFUDACTRL_UDPMCFRAGRESFAIL_SHIFT 4 +#define I40E_GLPE_VFUDACTRL_UDPMCFRAGRESFAIL_MASK (0x1 << I40E_GLPE_VFUDACTRL_UDPMCFRAGRESFAIL_SHIFT) +#define I40E_GLPE_VFUDAUCFBQPN(_i) (0x0000C100 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPE_VFUDAUCFBQPN_MAX_INDEX 31 +#define I40E_GLPE_VFUDAUCFBQPN_QPN_SHIFT 0 +#define I40E_GLPE_VFUDAUCFBQPN_QPN_MASK (0x3FFFF << I40E_GLPE_VFUDAUCFBQPN_QPN_SHIFT) +#define I40E_GLPE_VFUDAUCFBQPN_VALID_SHIFT 31 +#define I40E_GLPE_VFUDAUCFBQPN_VALID_MASK (0x1 << I40E_GLPE_VFUDAUCFBQPN_VALID_SHIFT) +#define I40E_PFPE_AEQALLOC 0x00131180 +#define I40E_PFPE_AEQALLOC_AECOUNT_SHIFT 0 +#define I40E_PFPE_AEQALLOC_AECOUNT_MASK (0xFFFFFFFF << I40E_PFPE_AEQALLOC_AECOUNT_SHIFT) +#define I40E_PFPE_CCQPHIGH 0x00008200 +#define I40E_PFPE_CCQPHIGH_PECCQPHIGH_SHIFT 0 +#define I40E_PFPE_CCQPHIGH_PECCQPHIGH_MASK (0xFFFFFFFF << I40E_PFPE_CCQPHIGH_PECCQPHIGH_SHIFT) +#define I40E_PFPE_CCQPLOW 0x00008180 +#define I40E_PFPE_CCQPLOW_PECCQPLOW_SHIFT 0 +#define I40E_PFPE_CCQPLOW_PECCQPLOW_MASK (0xFFFFFFFF << I40E_PFPE_CCQPLOW_PECCQPLOW_SHIFT) +#define I40E_PFPE_CCQPSTATUS 0x00008100 +#define I40E_PFPE_CCQPSTATUS_CCQP_DONE_SHIFT 0 +#define I40E_PFPE_CCQPSTATUS_CCQP_DONE_MASK (0x1 << I40E_PFPE_CCQPSTATUS_CCQP_DONE_SHIFT) +#define I40E_PFPE_CCQPSTATUS_CCQP_ERR_SHIFT 31 +#define I40E_PFPE_CCQPSTATUS_CCQP_ERR_MASK (0x1 << I40E_PFPE_CCQPSTATUS_CCQP_ERR_SHIFT) +#define I40E_PFPE_CQACK 0x00131100 +#define I40E_PFPE_CQACK_PECQID_SHIFT 0 +#define I40E_PFPE_CQACK_PECQID_MASK (0x1FFFF << I40E_PFPE_CQACK_PECQID_SHIFT) +#define I40E_PFPE_CQARM 0x00131080 +#define I40E_PFPE_CQARM_PECQID_SHIFT 0 +#define I40E_PFPE_CQARM_PECQID_MASK (0x1FFFF << I40E_PFPE_CQARM_PECQID_SHIFT) +#define I40E_PFPE_CQPDB 0x00008000 +#define I40E_PFPE_CQPDB_WQHEAD_SHIFT 0 +#define I40E_PFPE_CQPDB_WQHEAD_MASK (0x7FF << I40E_PFPE_CQPDB_WQHEAD_SHIFT) +#define I40E_PFPE_CQPERRCODES 0x00008880 +#define I40E_PFPE_CQPERRCODES_CQP_MINOR_CODE_SHIFT 0 +#define I40E_PFPE_CQPERRCODES_CQP_MINOR_CODE_MASK (0xFFFF << I40E_PFPE_CQPERRCODES_CQP_MINOR_CODE_SHIFT) +#define I40E_PFPE_CQPERRCODES_CQP_MAJOR_CODE_SHIFT 16 +#define I40E_PFPE_CQPERRCODES_CQP_MAJOR_CODE_MASK (0xFFFF << I40E_PFPE_CQPERRCODES_CQP_MAJOR_CODE_SHIFT) +#define I40E_PFPE_CQPTAIL 0x00008080 +#define I40E_PFPE_CQPTAIL_WQTAIL_SHIFT 0 +#define I40E_PFPE_CQPTAIL_WQTAIL_MASK (0x7FF << I40E_PFPE_CQPTAIL_WQTAIL_SHIFT) +#define I40E_PFPE_CQPTAIL_CQP_OP_ERR_SHIFT 31 +#define I40E_PFPE_CQPTAIL_CQP_OP_ERR_MASK (0x1 << I40E_PFPE_CQPTAIL_CQP_OP_ERR_SHIFT) +#define I40E_PFPE_FLMQ1ALLOCERR 0x00008980 +#define I40E_PFPE_FLMQ1ALLOCERR_ERROR_COUNT_SHIFT 0 +#define I40E_PFPE_FLMQ1ALLOCERR_ERROR_COUNT_MASK (0xFFFF << I40E_PFPE_FLMQ1ALLOCERR_ERROR_COUNT_SHIFT) +#define I40E_PFPE_FLMXMITALLOCERR 0x00008900 +#define I40E_PFPE_FLMXMITALLOCERR_ERROR_COUNT_SHIFT 0 +#define I40E_PFPE_FLMXMITALLOCERR_ERROR_COUNT_MASK (0xFFFF << I40E_PFPE_FLMXMITALLOCERR_ERROR_COUNT_SHIFT) +#define I40E_PFPE_IPCONFIG0 0x00008280 +#define I40E_PFPE_IPCONFIG0_PEIPID_SHIFT 0 +#define I40E_PFPE_IPCONFIG0_PEIPID_MASK (0xFFFF << I40E_PFPE_IPCONFIG0_PEIPID_SHIFT) +#define I40E_PFPE_IPCONFIG0_USEENTIREIDRANGE_SHIFT 16 +#define I40E_PFPE_IPCONFIG0_USEENTIREIDRANGE_MASK (0x1 << I40E_PFPE_IPCONFIG0_USEENTIREIDRANGE_SHIFT) + +#define I40E_PFPE_MRTEIDXMASK 0x00008600 +#define I40E_PFPE_MRTEIDXMASK_MRTEIDXMASKBITS_SHIFT 0 +#define I40E_PFPE_MRTEIDXMASK_MRTEIDXMASKBITS_MASK (0x1F << I40E_PFPE_MRTEIDXMASK_MRTEIDXMASKBITS_SHIFT) +#define I40E_PFPE_RCVUNEXPECTEDERROR 0x00008680 +#define I40E_PFPE_RCVUNEXPECTEDERROR_TCP_RX_UNEXP_ERR_SHIFT 0 +#define I40E_PFPE_RCVUNEXPECTEDERROR_TCP_RX_UNEXP_ERR_MASK (0xFFFFFF << I40E_PFPE_RCVUNEXPECTEDERROR_TCP_RX_UNEXP_ERR_SHIFT) +#define I40E_PFPE_TCPNOWTIMER 0x00008580 +#define I40E_PFPE_TCPNOWTIMER_TCP_NOW_SHIFT 0 +#define I40E_PFPE_TCPNOWTIMER_TCP_NOW_MASK (0xFFFFFFFF << I40E_PFPE_TCPNOWTIMER_TCP_NOW_SHIFT) +#define I40E_PFPE_UDACTRL 0x00008700 +#define I40E_PFPE_UDACTRL_IPV4MCFRAGRESBP_SHIFT 0 +#define I40E_PFPE_UDACTRL_IPV4MCFRAGRESBP_MASK (0x1 << I40E_PFPE_UDACTRL_IPV4MCFRAGRESBP_SHIFT) +#define I40E_PFPE_UDACTRL_IPV4UCFRAGRESBP_SHIFT 1 +#define I40E_PFPE_UDACTRL_IPV4UCFRAGRESBP_MASK (0x1 << I40E_PFPE_UDACTRL_IPV4UCFRAGRESBP_SHIFT) +#define I40E_PFPE_UDACTRL_IPV6MCFRAGRESBP_SHIFT 2 +#define I40E_PFPE_UDACTRL_IPV6MCFRAGRESBP_MASK (0x1 << I40E_PFPE_UDACTRL_IPV6MCFRAGRESBP_SHIFT) +#define I40E_PFPE_UDACTRL_IPV6UCFRAGRESBP_SHIFT 3 +#define I40E_PFPE_UDACTRL_IPV6UCFRAGRESBP_MASK (0x1 << I40E_PFPE_UDACTRL_IPV6UCFRAGRESBP_SHIFT) +#define I40E_PFPE_UDACTRL_UDPMCFRAGRESFAIL_SHIFT 4 +#define I40E_PFPE_UDACTRL_UDPMCFRAGRESFAIL_MASK (0x1 << I40E_PFPE_UDACTRL_UDPMCFRAGRESFAIL_SHIFT) +#define I40E_PFPE_UDAUCFBQPN 0x00008780 +#define I40E_PFPE_UDAUCFBQPN_QPN_SHIFT 0 +#define I40E_PFPE_UDAUCFBQPN_QPN_MASK (0x3FFFF << I40E_PFPE_UDAUCFBQPN_QPN_SHIFT) +#define I40E_PFPE_UDAUCFBQPN_VALID_SHIFT 31 +#define I40E_PFPE_UDAUCFBQPN_VALID_MASK (0x1 << I40E_PFPE_UDAUCFBQPN_VALID_SHIFT) +#define I40E_PFPE_WQEALLOC 0x00138C00 +#define I40E_PFPE_WQEALLOC_PEQPID_SHIFT 0 +#define I40E_PFPE_WQEALLOC_PEQPID_MASK (0x3FFFF << I40E_PFPE_WQEALLOC_PEQPID_SHIFT) +#define I40E_PFPE_WQEALLOC_WQE_DESC_INDEX_SHIFT 20 +#define I40E_PFPE_WQEALLOC_WQE_DESC_INDEX_MASK (0xFFF << I40E_PFPE_WQEALLOC_WQE_DESC_INDEX_SHIFT) +#define I40E_VFPE_AEQALLOC(_VF) (0x00130C00 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_VFPE_AEQALLOC_MAX_INDEX 127 +#define I40E_VFPE_AEQALLOC_AECOUNT_SHIFT 0 +#define I40E_VFPE_AEQALLOC_AECOUNT_MASK (0xFFFFFFFF << I40E_VFPE_AEQALLOC_AECOUNT_SHIFT) +#define I40E_VFPE_CCQPHIGH(_VF) (0x00001000 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_VFPE_CCQPHIGH_MAX_INDEX 127 +#define I40E_VFPE_CCQPHIGH_PECCQPHIGH_SHIFT 0 +#define I40E_VFPE_CCQPHIGH_PECCQPHIGH_MASK (0xFFFFFFFF << I40E_VFPE_CCQPHIGH_PECCQPHIGH_SHIFT) +#define I40E_VFPE_CCQPLOW(_VF) (0x00000C00 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_VFPE_CCQPLOW_MAX_INDEX 127 +#define I40E_VFPE_CCQPLOW_PECCQPLOW_SHIFT 0 +#define I40E_VFPE_CCQPLOW_PECCQPLOW_MASK (0xFFFFFFFF << I40E_VFPE_CCQPLOW_PECCQPLOW_SHIFT) +#define I40E_VFPE_CCQPSTATUS(_VF) (0x00000800 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_VFPE_CCQPSTATUS_MAX_INDEX 127 +#define I40E_VFPE_CCQPSTATUS_CCQP_DONE_SHIFT 0 +#define I40E_VFPE_CCQPSTATUS_CCQP_DONE_MASK (0x1 << I40E_VFPE_CCQPSTATUS_CCQP_DONE_SHIFT) +#define I40E_VFPE_CCQPSTATUS_CCQP_ERR_SHIFT 31 +#define I40E_VFPE_CCQPSTATUS_CCQP_ERR_MASK (0x1 << I40E_VFPE_CCQPSTATUS_CCQP_ERR_SHIFT) +#define I40E_VFPE_CQACK(_VF) (0x00130800 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_VFPE_CQACK_MAX_INDEX 127 +#define I40E_VFPE_CQACK_PECQID_SHIFT 0 +#define I40E_VFPE_CQACK_PECQID_MASK (0x1FFFF << I40E_VFPE_CQACK_PECQID_SHIFT) +#define I40E_VFPE_CQARM(_VF) (0x00130400 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_VFPE_CQARM_MAX_INDEX 127 +#define I40E_VFPE_CQARM_PECQID_SHIFT 0 +#define I40E_VFPE_CQARM_PECQID_MASK (0x1FFFF << I40E_VFPE_CQARM_PECQID_SHIFT) +#define I40E_VFPE_CQPDB(_VF) (0x00000000 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_VFPE_CQPDB_MAX_INDEX 127 +#define I40E_VFPE_CQPDB_WQHEAD_SHIFT 0 +#define I40E_VFPE_CQPDB_WQHEAD_MASK (0x7FF << I40E_VFPE_CQPDB_WQHEAD_SHIFT) +#define I40E_VFPE_CQPERRCODES(_VF) (0x00001800 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_VFPE_CQPERRCODES_MAX_INDEX 127 +#define I40E_VFPE_CQPERRCODES_CQP_MINOR_CODE_SHIFT 0 +#define I40E_VFPE_CQPERRCODES_CQP_MINOR_CODE_MASK (0xFFFF << I40E_VFPE_CQPERRCODES_CQP_MINOR_CODE_SHIFT) +#define I40E_VFPE_CQPERRCODES_CQP_MAJOR_CODE_SHIFT 16 +#define I40E_VFPE_CQPERRCODES_CQP_MAJOR_CODE_MASK (0xFFFF << I40E_VFPE_CQPERRCODES_CQP_MAJOR_CODE_SHIFT) +#define I40E_VFPE_CQPTAIL(_VF) (0x00000400 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_VFPE_CQPTAIL_MAX_INDEX 127 +#define I40E_VFPE_CQPTAIL_WQTAIL_SHIFT 0 +#define I40E_VFPE_CQPTAIL_WQTAIL_MASK (0x7FF << I40E_VFPE_CQPTAIL_WQTAIL_SHIFT) +#define I40E_VFPE_CQPTAIL_CQP_OP_ERR_SHIFT 31 +#define I40E_VFPE_CQPTAIL_CQP_OP_ERR_MASK (0x1 << I40E_VFPE_CQPTAIL_CQP_OP_ERR_SHIFT) +#define I40E_VFPE_IPCONFIG0(_VF) (0x00001400 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_VFPE_IPCONFIG0_MAX_INDEX 127 +#define I40E_VFPE_IPCONFIG0_PEIPID_SHIFT 0 +#define I40E_VFPE_IPCONFIG0_PEIPID_MASK (0xFFFF << I40E_VFPE_IPCONFIG0_PEIPID_SHIFT) +#define I40E_VFPE_IPCONFIG0_USEENTIREIDRANGE_SHIFT 16 +#define I40E_VFPE_IPCONFIG0_USEENTIREIDRANGE_MASK (0x1 << I40E_VFPE_IPCONFIG0_USEENTIREIDRANGE_SHIFT) +#define I40E_VFPE_MRTEIDXMASK(_VF) (0x00003000 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_VFPE_MRTEIDXMASK_MAX_INDEX 127 +#define I40E_VFPE_MRTEIDXMASK_MRTEIDXMASKBITS_SHIFT 0 +#define I40E_VFPE_MRTEIDXMASK_MRTEIDXMASKBITS_MASK (0x1F << I40E_VFPE_MRTEIDXMASK_MRTEIDXMASKBITS_SHIFT) +#define I40E_VFPE_RCVUNEXPECTEDERROR(_VF) (0x00003400 + ((_VF) * 4)) +#define I40E_VFPE_RCVUNEXPECTEDERROR_MAX_INDEX 127 +#define I40E_VFPE_RCVUNEXPECTEDERROR_TCP_RX_UNEXP_ERR_SHIFT 0 +#define I40E_VFPE_RCVUNEXPECTEDERROR_TCP_RX_UNEXP_ERR_MASK (0xFFFFFF << I40E_VFPE_RCVUNEXPECTEDERROR_TCP_RX_UNEXP_ERR_SHIFT) +#define I40E_VFPE_TCPNOWTIMER(_VF) (0x00002C00 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_VFPE_TCPNOWTIMER_MAX_INDEX 127 +#define I40E_VFPE_TCPNOWTIMER_TCP_NOW_SHIFT 0 +#define I40E_VFPE_TCPNOWTIMER_TCP_NOW_MASK (0xFFFFFFFF << I40E_VFPE_TCPNOWTIMER_TCP_NOW_SHIFT) +#define I40E_VFPE_WQEALLOC(_VF) (0x00138000 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_VFPE_WQEALLOC_MAX_INDEX 127 +#define I40E_VFPE_WQEALLOC_PEQPID_SHIFT 0 +#define I40E_VFPE_WQEALLOC_PEQPID_MASK (0x3FFFF << I40E_VFPE_WQEALLOC_PEQPID_SHIFT) +#define I40E_VFPE_WQEALLOC_WQE_DESC_INDEX_SHIFT 20 +#define I40E_VFPE_WQEALLOC_WQE_DESC_INDEX_MASK (0xFFF << I40E_VFPE_WQEALLOC_WQE_DESC_INDEX_SHIFT) +#define I40E_GLPES_PFIP4RXDISCARD(_i) (0x00010600 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLPES_PFIP4RXDISCARD_MAX_INDEX 15 +#define I40E_GLPES_PFIP4RXDISCARD_IP4RXDISCARD_SHIFT 0 +#define I40E_GLPES_PFIP4RXDISCARD_IP4RXDISCARD_MASK (0xFFFFFFFF << I40E_GLPES_PFIP4RXDISCARD_IP4RXDISCARD_SHIFT) +#define I40E_GLPES_PFIP4RXFRAGSHI(_i) (0x00010804 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFIP4RXFRAGSHI_MAX_INDEX 15 +#define I40E_GLPES_PFIP4RXFRAGSHI_IP4RXFRAGSHI_SHIFT 0 +#define I40E_GLPES_PFIP4RXFRAGSHI_IP4RXFRAGSHI_MASK (0xFFFF << I40E_GLPES_PFIP4RXFRAGSHI_IP4RXFRAGSHI_SHIFT) +#define I40E_GLPES_PFIP4RXFRAGSLO(_i) (0x00010800 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFIP4RXFRAGSLO_MAX_INDEX 15 +#define I40E_GLPES_PFIP4RXFRAGSLO_IP4RXFRAGSLO_SHIFT 0 +#define I40E_GLPES_PFIP4RXFRAGSLO_IP4RXFRAGSLO_MASK (0xFFFFFFFF << I40E_GLPES_PFIP4RXFRAGSLO_IP4RXFRAGSLO_SHIFT) +#define I40E_GLPES_PFIP4RXMCOCTSHI(_i) (0x00010A04 + ((_i) * 8)) +#define I40E_GLPES_PFIP4RXMCOCTSHI_MAX_INDEX 15 +#define I40E_GLPES_PFIP4RXMCOCTSHI_IP4RXMCOCTSHI_SHIFT 0 +#define I40E_GLPES_PFIP4RXMCOCTSHI_IP4RXMCOCTSHI_MASK (0xFFFF << I40E_GLPES_PFIP4RXMCOCTSHI_IP4RXMCOCTSHI_SHIFT) +#define I40E_GLPES_PFIP4RXMCOCTSLO(_i) (0x00010A00 + ((_i) * 8)) +#define I40E_GLPES_PFIP4RXMCOCTSLO_MAX_INDEX 15 +#define I40E_GLPES_PFIP4RXMCOCTSLO_IP4RXMCOCTSLO_SHIFT 0 +#define I40E_GLPES_PFIP4RXMCOCTSLO_IP4RXMCOCTSLO_MASK (0xFFFFFFFF << I40E_GLPES_PFIP4RXMCOCTSLO_IP4RXMCOCTSLO_SHIFT) +#define I40E_GLPES_PFIP4RXMCPKTSHI(_i) (0x00010C04 + ((_i) * 8)) +#define I40E_GLPES_PFIP4RXMCPKTSHI_MAX_INDEX 15 +#define I40E_GLPES_PFIP4RXMCPKTSHI_IP4RXMCPKTSHI_SHIFT 0 +#define I40E_GLPES_PFIP4RXMCPKTSHI_IP4RXMCPKTSHI_MASK (0xFFFF << I40E_GLPES_PFIP4RXMCPKTSHI_IP4RXMCPKTSHI_SHIFT) +#define I40E_GLPES_PFIP4RXMCPKTSLO(_i) (0x00010C00 + ((_i) * 8)) +#define I40E_GLPES_PFIP4RXMCPKTSLO_MAX_INDEX 15 +#define I40E_GLPES_PFIP4RXMCPKTSLO_IP4RXMCPKTSLO_SHIFT 0 +#define I40E_GLPES_PFIP4RXMCPKTSLO_IP4RXMCPKTSLO_MASK (0xFFFFFFFF << I40E_GLPES_PFIP4RXMCPKTSLO_IP4RXMCPKTSLO_SHIFT) +#define I40E_GLPES_PFIP4RXOCTSHI(_i) (0x00010204 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFIP4RXOCTSHI_MAX_INDEX 15 +#define I40E_GLPES_PFIP4RXOCTSHI_IP4RXOCTSHI_SHIFT 0 +#define I40E_GLPES_PFIP4RXOCTSHI_IP4RXOCTSHI_MASK (0xFFFF << I40E_GLPES_PFIP4RXOCTSHI_IP4RXOCTSHI_SHIFT) +#define I40E_GLPES_PFIP4RXOCTSLO(_i) (0x00010200 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFIP4RXOCTSLO_MAX_INDEX 15 +#define I40E_GLPES_PFIP4RXOCTSLO_IP4RXOCTSLO_SHIFT 0 +#define I40E_GLPES_PFIP4RXOCTSLO_IP4RXOCTSLO_MASK (0xFFFFFFFF << I40E_GLPES_PFIP4RXOCTSLO_IP4RXOCTSLO_SHIFT) +#define I40E_GLPES_PFIP4RXPKTSHI(_i) (0x00010404 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFIP4RXPKTSHI_MAX_INDEX 15 +#define I40E_GLPES_PFIP4RXPKTSHI_IP4RXPKTSHI_SHIFT 0 +#define I40E_GLPES_PFIP4RXPKTSHI_IP4RXPKTSHI_MASK (0xFFFF << I40E_GLPES_PFIP4RXPKTSHI_IP4RXPKTSHI_SHIFT) +#define I40E_GLPES_PFIP4RXPKTSLO(_i) (0x00010400 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFIP4RXPKTSLO_MAX_INDEX 15 +#define I40E_GLPES_PFIP4RXPKTSLO_IP4RXPKTSLO_SHIFT 0 +#define I40E_GLPES_PFIP4RXPKTSLO_IP4RXPKTSLO_MASK (0xFFFFFFFF << I40E_GLPES_PFIP4RXPKTSLO_IP4RXPKTSLO_SHIFT) +#define I40E_GLPES_PFIP4RXTRUNC(_i) (0x00010700 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLPES_PFIP4RXTRUNC_MAX_INDEX 15 +#define I40E_GLPES_PFIP4RXTRUNC_IP4RXTRUNC_SHIFT 0 +#define I40E_GLPES_PFIP4RXTRUNC_IP4RXTRUNC_MASK (0xFFFFFFFF << I40E_GLPES_PFIP4RXTRUNC_IP4RXTRUNC_SHIFT) +#define I40E_GLPES_PFIP4TXFRAGSHI(_i) (0x00011E04 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFIP4TXFRAGSHI_MAX_INDEX 15 +#define I40E_GLPES_PFIP4TXFRAGSHI_IP4TXFRAGSHI_SHIFT 0 +#define I40E_GLPES_PFIP4TXFRAGSHI_IP4TXFRAGSHI_MASK (0xFFFF << I40E_GLPES_PFIP4TXFRAGSHI_IP4TXFRAGSHI_SHIFT) +#define I40E_GLPES_PFIP4TXFRAGSLO(_i) (0x00011E00 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFIP4TXFRAGSLO_MAX_INDEX 15 +#define I40E_GLPES_PFIP4TXFRAGSLO_IP4TXFRAGSLO_SHIFT 0 +#define I40E_GLPES_PFIP4TXFRAGSLO_IP4TXFRAGSLO_MASK (0xFFFFFFFF << I40E_GLPES_PFIP4TXFRAGSLO_IP4TXFRAGSLO_SHIFT) +#define I40E_GLPES_PFIP4TXMCOCTSHI(_i) (0x00012004 + ((_i) * 8)) +#define I40E_GLPES_PFIP4TXMCOCTSHI_MAX_INDEX 15 +#define I40E_GLPES_PFIP4TXMCOCTSHI_IP4TXMCOCTSHI_SHIFT 0 +#define I40E_GLPES_PFIP4TXMCOCTSHI_IP4TXMCOCTSHI_MASK (0xFFFF << I40E_GLPES_PFIP4TXMCOCTSHI_IP4TXMCOCTSHI_SHIFT) +#define I40E_GLPES_PFIP4TXMCOCTSLO(_i) (0x00012000 + ((_i) * 8)) +#define I40E_GLPES_PFIP4TXMCOCTSLO_MAX_INDEX 15 +#define I40E_GLPES_PFIP4TXMCOCTSLO_IP4TXMCOCTSLO_SHIFT 0 +#define I40E_GLPES_PFIP4TXMCOCTSLO_IP4TXMCOCTSLO_MASK (0xFFFFFFFF << I40E_GLPES_PFIP4TXMCOCTSLO_IP4TXMCOCTSLO_SHIFT) +#define I40E_GLPES_PFIP4TXMCPKTSHI(_i) (0x00012204 + ((_i) * 8)) +#define I40E_GLPES_PFIP4TXMCPKTSHI_MAX_INDEX 15 +#define I40E_GLPES_PFIP4TXMCPKTSHI_IP4TXMCPKTSHI_SHIFT 0 +#define I40E_GLPES_PFIP4TXMCPKTSHI_IP4TXMCPKTSHI_MASK (0xFFFF << I40E_GLPES_PFIP4TXMCPKTSHI_IP4TXMCPKTSHI_SHIFT) +#define I40E_GLPES_PFIP4TXMCPKTSLO(_i) (0x00012200 + ((_i) * 8)) +#define I40E_GLPES_PFIP4TXMCPKTSLO_MAX_INDEX 15 +#define I40E_GLPES_PFIP4TXMCPKTSLO_IP4TXMCPKTSLO_SHIFT 0 +#define I40E_GLPES_PFIP4TXMCPKTSLO_IP4TXMCPKTSLO_MASK (0xFFFFFFFF << I40E_GLPES_PFIP4TXMCPKTSLO_IP4TXMCPKTSLO_SHIFT) +#define I40E_GLPES_PFIP4TXNOROUTE(_i) (0x00012E00 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLPES_PFIP4TXNOROUTE_MAX_INDEX 15 +#define I40E_GLPES_PFIP4TXNOROUTE_IP4TXNOROUTE_SHIFT 0 +#define I40E_GLPES_PFIP4TXNOROUTE_IP4TXNOROUTE_MASK (0xFFFFFF << I40E_GLPES_PFIP4TXNOROUTE_IP4TXNOROUTE_SHIFT) +#define I40E_GLPES_PFIP4TXOCTSHI(_i) (0x00011A04 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFIP4TXOCTSHI_MAX_INDEX 15 +#define I40E_GLPES_PFIP4TXOCTSHI_IP4TXOCTSHI_SHIFT 0 +#define I40E_GLPES_PFIP4TXOCTSHI_IP4TXOCTSHI_MASK (0xFFFF << I40E_GLPES_PFIP4TXOCTSHI_IP4TXOCTSHI_SHIFT) +#define I40E_GLPES_PFIP4TXOCTSLO(_i) (0x00011A00 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFIP4TXOCTSLO_MAX_INDEX 15 +#define I40E_GLPES_PFIP4TXOCTSLO_IP4TXOCTSLO_SHIFT 0 +#define I40E_GLPES_PFIP4TXOCTSLO_IP4TXOCTSLO_MASK (0xFFFFFFFF << I40E_GLPES_PFIP4TXOCTSLO_IP4TXOCTSLO_SHIFT) +#define I40E_GLPES_PFIP4TXPKTSHI(_i) (0x00011C04 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFIP4TXPKTSHI_MAX_INDEX 15 +#define I40E_GLPES_PFIP4TXPKTSHI_IP4TXPKTSHI_SHIFT 0 +#define I40E_GLPES_PFIP4TXPKTSHI_IP4TXPKTSHI_MASK (0xFFFF << I40E_GLPES_PFIP4TXPKTSHI_IP4TXPKTSHI_SHIFT) +#define I40E_GLPES_PFIP4TXPKTSLO(_i) (0x00011C00 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFIP4TXPKTSLO_MAX_INDEX 15 +#define I40E_GLPES_PFIP4TXPKTSLO_IP4TXPKTSLO_SHIFT 0 +#define I40E_GLPES_PFIP4TXPKTSLO_IP4TXPKTSLO_MASK (0xFFFFFFFF << I40E_GLPES_PFIP4TXPKTSLO_IP4TXPKTSLO_SHIFT) +#define I40E_GLPES_PFIP6RXDISCARD(_i) (0x00011200 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLPES_PFIP6RXDISCARD_MAX_INDEX 15 +#define I40E_GLPES_PFIP6RXDISCARD_IP6RXDISCARD_SHIFT 0 +#define I40E_GLPES_PFIP6RXDISCARD_IP6RXDISCARD_MASK (0xFFFFFFFF << I40E_GLPES_PFIP6RXDISCARD_IP6RXDISCARD_SHIFT) +#define I40E_GLPES_PFIP6RXFRAGSHI(_i) (0x00011404 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFIP6RXFRAGSHI_MAX_INDEX 15 +#define I40E_GLPES_PFIP6RXFRAGSHI_IP6RXFRAGSHI_SHIFT 0 +#define I40E_GLPES_PFIP6RXFRAGSHI_IP6RXFRAGSHI_MASK (0xFFFF << I40E_GLPES_PFIP6RXFRAGSHI_IP6RXFRAGSHI_SHIFT) +#define I40E_GLPES_PFIP6RXFRAGSLO(_i) (0x00011400 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFIP6RXFRAGSLO_MAX_INDEX 15 +#define I40E_GLPES_PFIP6RXFRAGSLO_IP6RXFRAGSLO_SHIFT 0 +#define I40E_GLPES_PFIP6RXFRAGSLO_IP6RXFRAGSLO_MASK (0xFFFFFFFF << I40E_GLPES_PFIP6RXFRAGSLO_IP6RXFRAGSLO_SHIFT) +#define I40E_GLPES_PFIP6RXMCOCTSHI(_i) (0x00011604 + ((_i) * 8)) +#define I40E_GLPES_PFIP6RXMCOCTSHI_MAX_INDEX 15 +#define I40E_GLPES_PFIP6RXMCOCTSHI_IP6RXMCOCTSHI_SHIFT 0 +#define I40E_GLPES_PFIP6RXMCOCTSHI_IP6RXMCOCTSHI_MASK (0xFFFF << I40E_GLPES_PFIP6RXMCOCTSHI_IP6RXMCOCTSHI_SHIFT) +#define I40E_GLPES_PFIP6RXMCOCTSLO(_i) (0x00011600 + ((_i) * 8)) +#define I40E_GLPES_PFIP6RXMCOCTSLO_MAX_INDEX 15 +#define I40E_GLPES_PFIP6RXMCOCTSLO_IP6RXMCOCTSLO_SHIFT 0 +#define I40E_GLPES_PFIP6RXMCOCTSLO_IP6RXMCOCTSLO_MASK (0xFFFFFFFF << I40E_GLPES_PFIP6RXMCOCTSLO_IP6RXMCOCTSLO_SHIFT) +#define I40E_GLPES_PFIP6RXMCPKTSHI(_i) (0x00011804 + ((_i) * 8)) +#define I40E_GLPES_PFIP6RXMCPKTSHI_MAX_INDEX 15 +#define I40E_GLPES_PFIP6RXMCPKTSHI_IP6RXMCPKTSHI_SHIFT 0 +#define I40E_GLPES_PFIP6RXMCPKTSHI_IP6RXMCPKTSHI_MASK (0xFFFF << I40E_GLPES_PFIP6RXMCPKTSHI_IP6RXMCPKTSHI_SHIFT) +#define I40E_GLPES_PFIP6RXMCPKTSLO(_i) (0x00011800 + ((_i) * 8)) +#define I40E_GLPES_PFIP6RXMCPKTSLO_MAX_INDEX 15 +#define I40E_GLPES_PFIP6RXMCPKTSLO_IP6RXMCPKTSLO_SHIFT 0 +#define I40E_GLPES_PFIP6RXMCPKTSLO_IP6RXMCPKTSLO_MASK (0xFFFFFFFF << I40E_GLPES_PFIP6RXMCPKTSLO_IP6RXMCPKTSLO_SHIFT) +#define I40E_GLPES_PFIP6RXOCTSHI(_i) (0x00010E04 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFIP6RXOCTSHI_MAX_INDEX 15 +#define I40E_GLPES_PFIP6RXOCTSHI_IP6RXOCTSHI_SHIFT 0 +#define I40E_GLPES_PFIP6RXOCTSHI_IP6RXOCTSHI_MASK (0xFFFF << I40E_GLPES_PFIP6RXOCTSHI_IP6RXOCTSHI_SHIFT) +#define I40E_GLPES_PFIP6RXOCTSLO(_i) (0x00010E00 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFIP6RXOCTSLO_MAX_INDEX 15 +#define I40E_GLPES_PFIP6RXOCTSLO_IP6RXOCTSLO_SHIFT 0 +#define I40E_GLPES_PFIP6RXOCTSLO_IP6RXOCTSLO_MASK (0xFFFFFFFF << I40E_GLPES_PFIP6RXOCTSLO_IP6RXOCTSLO_SHIFT) +#define I40E_GLPES_PFIP6RXPKTSHI(_i) (0x00011004 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFIP6RXPKTSHI_MAX_INDEX 15 +#define I40E_GLPES_PFIP6RXPKTSHI_IP6RXPKTSHI_SHIFT 0 +#define I40E_GLPES_PFIP6RXPKTSHI_IP6RXPKTSHI_MASK (0xFFFF << I40E_GLPES_PFIP6RXPKTSHI_IP6RXPKTSHI_SHIFT) +#define I40E_GLPES_PFIP6RXPKTSLO(_i) (0x00011000 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFIP6RXPKTSLO_MAX_INDEX 15 +#define I40E_GLPES_PFIP6RXPKTSLO_IP6RXPKTSLO_SHIFT 0 +#define I40E_GLPES_PFIP6RXPKTSLO_IP6RXPKTSLO_MASK (0xFFFFFFFF << I40E_GLPES_PFIP6RXPKTSLO_IP6RXPKTSLO_SHIFT) +#define I40E_GLPES_PFIP6RXTRUNC(_i) (0x00011300 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLPES_PFIP6RXTRUNC_MAX_INDEX 15 +#define I40E_GLPES_PFIP6RXTRUNC_IP6RXTRUNC_SHIFT 0 +#define I40E_GLPES_PFIP6RXTRUNC_IP6RXTRUNC_MASK (0xFFFFFFFF << I40E_GLPES_PFIP6RXTRUNC_IP6RXTRUNC_SHIFT) +#define I40E_GLPES_PFIP6TXFRAGSHI(_i) (0x00012804 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFIP6TXFRAGSHI_MAX_INDEX 15 +#define I40E_GLPES_PFIP6TXFRAGSHI_IP6TXFRAGSHI_SHIFT 0 +#define I40E_GLPES_PFIP6TXFRAGSHI_IP6TXFRAGSHI_MASK (0xFFFF << I40E_GLPES_PFIP6TXFRAGSHI_IP6TXFRAGSHI_SHIFT) +#define I40E_GLPES_PFIP6TXFRAGSLO(_i) (0x00012800 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFIP6TXFRAGSLO_MAX_INDEX 15 +#define I40E_GLPES_PFIP6TXFRAGSLO_IP6TXFRAGSLO_SHIFT 0 +#define I40E_GLPES_PFIP6TXFRAGSLO_IP6TXFRAGSLO_MASK (0xFFFFFFFF << I40E_GLPES_PFIP6TXFRAGSLO_IP6TXFRAGSLO_SHIFT) +#define I40E_GLPES_PFIP6TXMCOCTSHI(_i) (0x00012A04 + ((_i) * 8)) +#define I40E_GLPES_PFIP6TXMCOCTSHI_MAX_INDEX 15 +#define I40E_GLPES_PFIP6TXMCOCTSHI_IP6TXMCOCTSHI_SHIFT 0 +#define I40E_GLPES_PFIP6TXMCOCTSHI_IP6TXMCOCTSHI_MASK (0xFFFF << I40E_GLPES_PFIP6TXMCOCTSHI_IP6TXMCOCTSHI_SHIFT) +#define I40E_GLPES_PFIP6TXMCOCTSLO(_i) (0x00012A00 + ((_i) * 8)) +#define I40E_GLPES_PFIP6TXMCOCTSLO_MAX_INDEX 15 +#define I40E_GLPES_PFIP6TXMCOCTSLO_IP6TXMCOCTSLO_SHIFT 0 +#define I40E_GLPES_PFIP6TXMCOCTSLO_IP6TXMCOCTSLO_MASK (0xFFFFFFFF << I40E_GLPES_PFIP6TXMCOCTSLO_IP6TXMCOCTSLO_SHIFT) +#define I40E_GLPES_PFIP6TXMCPKTSHI(_i) (0x00012C04 + ((_i) * 8)) +#define I40E_GLPES_PFIP6TXMCPKTSHI_MAX_INDEX 15 +#define I40E_GLPES_PFIP6TXMCPKTSHI_IP6TXMCPKTSHI_SHIFT 0 +#define I40E_GLPES_PFIP6TXMCPKTSHI_IP6TXMCPKTSHI_MASK (0xFFFF << I40E_GLPES_PFIP6TXMCPKTSHI_IP6TXMCPKTSHI_SHIFT) +#define I40E_GLPES_PFIP6TXMCPKTSLO(_i) (0x00012C00 + ((_i) * 8)) +#define I40E_GLPES_PFIP6TXMCPKTSLO_MAX_INDEX 15 +#define I40E_GLPES_PFIP6TXMCPKTSLO_IP6TXMCPKTSLO_SHIFT 0 +#define I40E_GLPES_PFIP6TXMCPKTSLO_IP6TXMCPKTSLO_MASK (0xFFFFFFFF << I40E_GLPES_PFIP6TXMCPKTSLO_IP6TXMCPKTSLO_SHIFT) +#define I40E_GLPES_PFIP6TXNOROUTE(_i) (0x00012F00 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLPES_PFIP6TXNOROUTE_MAX_INDEX 15 +#define I40E_GLPES_PFIP6TXNOROUTE_IP6TXNOROUTE_SHIFT 0 +#define I40E_GLPES_PFIP6TXNOROUTE_IP6TXNOROUTE_MASK (0xFFFFFF << I40E_GLPES_PFIP6TXNOROUTE_IP6TXNOROUTE_SHIFT) +#define I40E_GLPES_PFIP6TXOCTSHI(_i) (0x00012404 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFIP6TXOCTSHI_MAX_INDEX 15 +#define I40E_GLPES_PFIP6TXOCTSHI_IP6TXOCTSHI_SHIFT 0 +#define I40E_GLPES_PFIP6TXOCTSHI_IP6TXOCTSHI_MASK (0xFFFF << I40E_GLPES_PFIP6TXOCTSHI_IP6TXOCTSHI_SHIFT) +#define I40E_GLPES_PFIP6TXOCTSLO(_i) (0x00012400 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFIP6TXOCTSLO_MAX_INDEX 15 +#define I40E_GLPES_PFIP6TXOCTSLO_IP6TXOCTSLO_SHIFT 0 +#define I40E_GLPES_PFIP6TXOCTSLO_IP6TXOCTSLO_MASK (0xFFFFFFFF << I40E_GLPES_PFIP6TXOCTSLO_IP6TXOCTSLO_SHIFT) +#define I40E_GLPES_PFIP6TXPKTSHI(_i) (0x00012604 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFIP6TXPKTSHI_MAX_INDEX 15 +#define I40E_GLPES_PFIP6TXPKTSHI_IP6TXPKTSHI_SHIFT 0 +#define I40E_GLPES_PFIP6TXPKTSHI_IP6TXPKTSHI_MASK (0xFFFF << I40E_GLPES_PFIP6TXPKTSHI_IP6TXPKTSHI_SHIFT) +#define I40E_GLPES_PFIP6TXPKTSLO(_i) (0x00012600 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFIP6TXPKTSLO_MAX_INDEX 15 +#define I40E_GLPES_PFIP6TXPKTSLO_IP6TXPKTSLO_SHIFT 0 +#define I40E_GLPES_PFIP6TXPKTSLO_IP6TXPKTSLO_MASK (0xFFFFFFFF << I40E_GLPES_PFIP6TXPKTSLO_IP6TXPKTSLO_SHIFT) +#define I40E_GLPES_PFRDMARXRDSHI(_i) (0x00013E04 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFRDMARXRDSHI_MAX_INDEX 15 +#define I40E_GLPES_PFRDMARXRDSHI_RDMARXRDSHI_SHIFT 0 +#define I40E_GLPES_PFRDMARXRDSHI_RDMARXRDSHI_MASK (0xFFFF << I40E_GLPES_PFRDMARXRDSHI_RDMARXRDSHI_SHIFT) +#define I40E_GLPES_PFRDMARXRDSLO(_i) (0x00013E00 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFRDMARXRDSLO_MAX_INDEX 15 +#define I40E_GLPES_PFRDMARXRDSLO_RDMARXRDSLO_SHIFT 0 +#define I40E_GLPES_PFRDMARXRDSLO_RDMARXRDSLO_MASK (0xFFFFFFFF << I40E_GLPES_PFRDMARXRDSLO_RDMARXRDSLO_SHIFT) +#define I40E_GLPES_PFRDMARXSNDSHI(_i) (0x00014004 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFRDMARXSNDSHI_MAX_INDEX 15 +#define I40E_GLPES_PFRDMARXSNDSHI_RDMARXSNDSHI_SHIFT 0 +#define I40E_GLPES_PFRDMARXSNDSHI_RDMARXSNDSHI_MASK (0xFFFF << I40E_GLPES_PFRDMARXSNDSHI_RDMARXSNDSHI_SHIFT) +#define I40E_GLPES_PFRDMARXSNDSLO(_i) (0x00014000 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFRDMARXSNDSLO_MAX_INDEX 15 +#define I40E_GLPES_PFRDMARXSNDSLO_RDMARXSNDSLO_SHIFT 0 +#define I40E_GLPES_PFRDMARXSNDSLO_RDMARXSNDSLO_MASK (0xFFFFFFFF << I40E_GLPES_PFRDMARXSNDSLO_RDMARXSNDSLO_SHIFT) +#define I40E_GLPES_PFRDMARXWRSHI(_i) (0x00013C04 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFRDMARXWRSHI_MAX_INDEX 15 +#define I40E_GLPES_PFRDMARXWRSHI_RDMARXWRSHI_SHIFT 0 +#define I40E_GLPES_PFRDMARXWRSHI_RDMARXWRSHI_MASK (0xFFFF << I40E_GLPES_PFRDMARXWRSHI_RDMARXWRSHI_SHIFT) +#define I40E_GLPES_PFRDMARXWRSLO(_i) (0x00013C00 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFRDMARXWRSLO_MAX_INDEX 15 +#define I40E_GLPES_PFRDMARXWRSLO_RDMARXWRSLO_SHIFT 0 +#define I40E_GLPES_PFRDMARXWRSLO_RDMARXWRSLO_MASK (0xFFFFFFFF << I40E_GLPES_PFRDMARXWRSLO_RDMARXWRSLO_SHIFT) +#define I40E_GLPES_PFRDMATXRDSHI(_i) (0x00014404 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFRDMATXRDSHI_MAX_INDEX 15 +#define I40E_GLPES_PFRDMATXRDSHI_RDMARXRDSHI_SHIFT 0 +#define I40E_GLPES_PFRDMATXRDSHI_RDMARXRDSHI_MASK (0xFFFF << I40E_GLPES_PFRDMATXRDSHI_RDMARXRDSHI_SHIFT) +#define I40E_GLPES_PFRDMATXRDSLO(_i) (0x00014400 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFRDMATXRDSLO_MAX_INDEX 15 +#define I40E_GLPES_PFRDMATXRDSLO_RDMARXRDSLO_SHIFT 0 +#define I40E_GLPES_PFRDMATXRDSLO_RDMARXRDSLO_MASK (0xFFFFFFFF << I40E_GLPES_PFRDMATXRDSLO_RDMARXRDSLO_SHIFT) +#define I40E_GLPES_PFRDMATXSNDSHI(_i) (0x00014604 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFRDMATXSNDSHI_MAX_INDEX 15 +#define I40E_GLPES_PFRDMATXSNDSHI_RDMARXSNDSHI_SHIFT 0 +#define I40E_GLPES_PFRDMATXSNDSHI_RDMARXSNDSHI_MASK (0xFFFF << I40E_GLPES_PFRDMATXSNDSHI_RDMARXSNDSHI_SHIFT) +#define I40E_GLPES_PFRDMATXSNDSLO(_i) (0x00014600 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFRDMATXSNDSLO_MAX_INDEX 15 +#define I40E_GLPES_PFRDMATXSNDSLO_RDMARXSNDSLO_SHIFT 0 +#define I40E_GLPES_PFRDMATXSNDSLO_RDMARXSNDSLO_MASK (0xFFFFFFFF << I40E_GLPES_PFRDMATXSNDSLO_RDMARXSNDSLO_SHIFT) +#define I40E_GLPES_PFRDMATXWRSHI(_i) (0x00014204 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFRDMATXWRSHI_MAX_INDEX 15 +#define I40E_GLPES_PFRDMATXWRSHI_RDMARXWRSHI_SHIFT 0 +#define I40E_GLPES_PFRDMATXWRSHI_RDMARXWRSHI_MASK (0xFFFF << I40E_GLPES_PFRDMATXWRSHI_RDMARXWRSHI_SHIFT) +#define I40E_GLPES_PFRDMATXWRSLO(_i) (0x00014200 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFRDMATXWRSLO_MAX_INDEX 15 +#define I40E_GLPES_PFRDMATXWRSLO_RDMARXWRSLO_SHIFT 0 +#define I40E_GLPES_PFRDMATXWRSLO_RDMARXWRSLO_MASK (0xFFFFFFFF << I40E_GLPES_PFRDMATXWRSLO_RDMARXWRSLO_SHIFT) +#define I40E_GLPES_PFRDMAVBNDHI(_i) (0x00014804 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFRDMAVBNDHI_MAX_INDEX 15 +#define I40E_GLPES_PFRDMAVBNDHI_RDMAVBNDHI_SHIFT 0 +#define I40E_GLPES_PFRDMAVBNDHI_RDMAVBNDHI_MASK (0xFFFFFFFF << I40E_GLPES_PFRDMAVBNDHI_RDMAVBNDHI_SHIFT) +#define I40E_GLPES_PFRDMAVBNDLO(_i) (0x00014800 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFRDMAVBNDLO_MAX_INDEX 15 +#define I40E_GLPES_PFRDMAVBNDLO_RDMAVBNDLO_SHIFT 0 +#define I40E_GLPES_PFRDMAVBNDLO_RDMAVBNDLO_MASK (0xFFFFFFFF << I40E_GLPES_PFRDMAVBNDLO_RDMAVBNDLO_SHIFT) +#define I40E_GLPES_PFRDMAVINVHI(_i) (0x00014A04 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFRDMAVINVHI_MAX_INDEX 15 +#define I40E_GLPES_PFRDMAVINVHI_RDMAVINVHI_SHIFT 0 +#define I40E_GLPES_PFRDMAVINVHI_RDMAVINVHI_MASK (0xFFFFFFFF << I40E_GLPES_PFRDMAVINVHI_RDMAVINVHI_SHIFT) +#define I40E_GLPES_PFRDMAVINVLO(_i) (0x00014A00 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFRDMAVINVLO_MAX_INDEX 15 +#define I40E_GLPES_PFRDMAVINVLO_RDMAVINVLO_SHIFT 0 +#define I40E_GLPES_PFRDMAVINVLO_RDMAVINVLO_MASK (0xFFFFFFFF << I40E_GLPES_PFRDMAVINVLO_RDMAVINVLO_SHIFT) +#define I40E_GLPES_PFRXVLANERR(_i) (0x00010000 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLPES_PFRXVLANERR_MAX_INDEX 15 +#define I40E_GLPES_PFRXVLANERR_RXVLANERR_SHIFT 0 +#define I40E_GLPES_PFRXVLANERR_RXVLANERR_MASK (0xFFFFFF << I40E_GLPES_PFRXVLANERR_RXVLANERR_SHIFT) +#define I40E_GLPES_PFTCPRTXSEG(_i) (0x00013600 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLPES_PFTCPRTXSEG_MAX_INDEX 15 +#define I40E_GLPES_PFTCPRTXSEG_TCPRTXSEG_SHIFT 0 +#define I40E_GLPES_PFTCPRTXSEG_TCPRTXSEG_MASK (0xFFFFFFFF << I40E_GLPES_PFTCPRTXSEG_TCPRTXSEG_SHIFT) +#define I40E_GLPES_PFTCPRXOPTERR(_i) (0x00013200 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_GLPES_PFTCPRXOPTERR_MAX_INDEX 15 +#define I40E_GLPES_PFTCPRXOPTERR_TCPRXOPTERR_SHIFT 0 +#define I40E_GLPES_PFTCPRXOPTERR_TCPRXOPTERR_MASK (0xFFFFFF << I40E_GLPES_PFTCPRXOPTERR_TCPRXOPTERR_SHIFT) +#define I40E_GLPES_PFTCPRXPROTOERR(_i) (0x00013300 + ((_i) * 4)) +#define I40E_GLPES_PFTCPRXPROTOERR_MAX_INDEX 15 +#define I40E_GLPES_PFTCPRXPROTOERR_TCPRXPROTOERR_SHIFT 0 +#define I40E_GLPES_PFTCPRXPROTOERR_TCPRXPROTOERR_MASK (0xFFFFFF << I40E_GLPES_PFTCPRXPROTOERR_TCPRXPROTOERR_SHIFT) +#define I40E_GLPES_PFTCPRXSEGSHI(_i) (0x00013004 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFTCPRXSEGSHI_MAX_INDEX 15 +#define I40E_GLPES_PFTCPRXSEGSHI_TCPRXSEGSHI_SHIFT 0 +#define I40E_GLPES_PFTCPRXSEGSHI_TCPRXSEGSHI_MASK (0xFFFF << I40E_GLPES_PFTCPRXSEGSHI_TCPRXSEGSHI_SHIFT) +#define I40E_GLPES_PFTCPRXSEGSLO(_i) (0x00013000 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFTCPRXSEGSLO_MAX_INDEX 15 +#define I40E_GLPES_PFTCPRXSEGSLO_TCPRXSEGSLO_SHIFT 0 +#define I40E_GLPES_PFTCPRXSEGSLO_TCPRXSEGSLO_MASK (0xFFFFFFFF << I40E_GLPES_PFTCPRXSEGSLO_TCPRXSEGSLO_SHIFT) +#define I40E_GLPES_PFTCPTXSEGHI(_i) (0x00013404 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFTCPTXSEGHI_MAX_INDEX 15 +#define I40E_GLPES_PFTCPTXSEGHI_TCPTXSEGHI_SHIFT 0 +#define I40E_GLPES_PFTCPTXSEGHI_TCPTXSEGHI_MASK (0xFFFF << I40E_GLPES_PFTCPTXSEGHI_TCPTXSEGHI_SHIFT) +#define I40E_GLPES_PFTCPTXSEGLO(_i) (0x00013400 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFTCPTXSEGLO_MAX_INDEX 15 +#define I40E_GLPES_PFTCPTXSEGLO_TCPTXSEGLO_SHIFT 0 +#define I40E_GLPES_PFTCPTXSEGLO_TCPTXSEGLO_MASK (0xFFFFFFFF << I40E_GLPES_PFTCPTXSEGLO_TCPTXSEGLO_SHIFT) +#define I40E_GLPES_PFUDPRXPKTSHI(_i) (0x00013804 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFUDPRXPKTSHI_MAX_INDEX 15 +#define I40E_GLPES_PFUDPRXPKTSHI_UDPRXPKTSHI_SHIFT 0 +#define I40E_GLPES_PFUDPRXPKTSHI_UDPRXPKTSHI_MASK (0xFFFF << I40E_GLPES_PFUDPRXPKTSHI_UDPRXPKTSHI_SHIFT) +#define I40E_GLPES_PFUDPRXPKTSLO(_i) (0x00013800 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFUDPRXPKTSLO_MAX_INDEX 15 +#define I40E_GLPES_PFUDPRXPKTSLO_UDPRXPKTSLO_SHIFT 0 +#define I40E_GLPES_PFUDPRXPKTSLO_UDPRXPKTSLO_MASK (0xFFFFFFFF << I40E_GLPES_PFUDPRXPKTSLO_UDPRXPKTSLO_SHIFT) +#define I40E_GLPES_PFUDPTXPKTSHI(_i) (0x00013A04 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFUDPTXPKTSHI_MAX_INDEX 15 +#define I40E_GLPES_PFUDPTXPKTSHI_UDPTXPKTSHI_SHIFT 0 +#define I40E_GLPES_PFUDPTXPKTSHI_UDPTXPKTSHI_MASK (0xFFFF << I40E_GLPES_PFUDPTXPKTSHI_UDPTXPKTSHI_SHIFT) +#define I40E_GLPES_PFUDPTXPKTSLO(_i) (0x00013A00 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLPES_PFUDPTXPKTSLO_MAX_INDEX 15 +#define I40E_GLPES_PFUDPTXPKTSLO_UDPTXPKTSLO_SHIFT 0 +#define I40E_GLPES_PFUDPTXPKTSLO_UDPTXPKTSLO_MASK (0xFFFFFFFF << I40E_GLPES_PFUDPTXPKTSLO_UDPTXPKTSLO_SHIFT) +#define I40E_GLPES_RDMARXMULTFPDUSHI 0x0001E014 +#define I40E_GLPES_RDMARXMULTFPDUSHI_RDMARXMULTFPDUSHI_SHIFT 0 +#define I40E_GLPES_RDMARXMULTFPDUSHI_RDMARXMULTFPDUSHI_MASK (0xFFFFFF << I40E_GLPES_RDMARXMULTFPDUSHI_RDMARXMULTFPDUSHI_SHIFT) +#define I40E_GLPES_RDMARXMULTFPDUSLO 0x0001E010 +#define I40E_GLPES_RDMARXMULTFPDUSLO_RDMARXMULTFPDUSLO_SHIFT 0 +#define I40E_GLPES_RDMARXMULTFPDUSLO_RDMARXMULTFPDUSLO_MASK (0xFFFFFFFF << I40E_GLPES_RDMARXMULTFPDUSLO_RDMARXMULTFPDUSLO_SHIFT) +#define I40E_GLPES_RDMARXOOODDPHI 0x0001E01C +#define I40E_GLPES_RDMARXOOODDPHI_RDMARXOOODDPHI_SHIFT 0 +#define I40E_GLPES_RDMARXOOODDPHI_RDMARXOOODDPHI_MASK (0xFFFFFF << I40E_GLPES_RDMARXOOODDPHI_RDMARXOOODDPHI_SHIFT) +#define I40E_GLPES_RDMARXOOODDPLO 0x0001E018 +#define I40E_GLPES_RDMARXOOODDPLO_RDMARXOOODDPLO_SHIFT 0 +#define I40E_GLPES_RDMARXOOODDPLO_RDMARXOOODDPLO_MASK (0xFFFFFFFF << I40E_GLPES_RDMARXOOODDPLO_RDMARXOOODDPLO_SHIFT) +#define I40E_GLPES_RDMARXOOONOMARK 0x0001E004 +#define I40E_GLPES_RDMARXOOONOMARK_RDMAOOONOMARK_SHIFT 0 +#define I40E_GLPES_RDMARXOOONOMARK_RDMAOOONOMARK_MASK (0xFFFFFFFF << I40E_GLPES_RDMARXOOONOMARK_RDMAOOONOMARK_SHIFT) +#define I40E_GLPES_RDMARXUNALIGN 0x0001E000 +#define I40E_GLPES_RDMARXUNALIGN_RDMRXAUNALIGN_SHIFT 0 +#define I40E_GLPES_RDMARXUNALIGN_RDMRXAUNALIGN_MASK (0xFFFFFFFF << I40E_GLPES_RDMARXUNALIGN_RDMRXAUNALIGN_SHIFT) +#define I40E_GLPES_TCPRXFOURHOLEHI 0x0001E044 +#define I40E_GLPES_TCPRXFOURHOLEHI_TCPRXFOURHOLEHI_SHIFT 0 +#define I40E_GLPES_TCPRXFOURHOLEHI_TCPRXFOURHOLEHI_MASK (0xFFFFFF << I40E_GLPES_TCPRXFOURHOLEHI_TCPRXFOURHOLEHI_SHIFT) +#define I40E_GLPES_TCPRXFOURHOLELO 0x0001E040 +#define I40E_GLPES_TCPRXFOURHOLELO_TCPRXFOURHOLELO_SHIFT 0 +#define I40E_GLPES_TCPRXFOURHOLELO_TCPRXFOURHOLELO_MASK (0xFFFFFFFF << I40E_GLPES_TCPRXFOURHOLELO_TCPRXFOURHOLELO_SHIFT) +#define I40E_GLPES_TCPRXONEHOLEHI 0x0001E02C +#define I40E_GLPES_TCPRXONEHOLEHI_TCPRXONEHOLEHI_SHIFT 0 +#define I40E_GLPES_TCPRXONEHOLEHI_TCPRXONEHOLEHI_MASK (0xFFFFFF << I40E_GLPES_TCPRXONEHOLEHI_TCPRXONEHOLEHI_SHIFT) +#define I40E_GLPES_TCPRXONEHOLELO 0x0001E028 +#define I40E_GLPES_TCPRXONEHOLELO_TCPRXONEHOLELO_SHIFT 0 +#define I40E_GLPES_TCPRXONEHOLELO_TCPRXONEHOLELO_MASK (0xFFFFFFFF << I40E_GLPES_TCPRXONEHOLELO_TCPRXONEHOLELO_SHIFT) +#define I40E_GLPES_TCPRXPUREACKHI 0x0001E024 +#define I40E_GLPES_TCPRXPUREACKHI_TCPRXPUREACKSHI_SHIFT 0 +#define I40E_GLPES_TCPRXPUREACKHI_TCPRXPUREACKSHI_MASK (0xFFFFFF << I40E_GLPES_TCPRXPUREACKHI_TCPRXPUREACKSHI_SHIFT) +#define I40E_GLPES_TCPRXPUREACKSLO 0x0001E020 +#define I40E_GLPES_TCPRXPUREACKSLO_TCPRXPUREACKLO_SHIFT 0 +#define I40E_GLPES_TCPRXPUREACKSLO_TCPRXPUREACKLO_MASK (0xFFFFFFFF << I40E_GLPES_TCPRXPUREACKSLO_TCPRXPUREACKLO_SHIFT) +#define I40E_GLPES_TCPRXTHREEHOLEHI 0x0001E03C +#define I40E_GLPES_TCPRXTHREEHOLEHI_TCPRXTHREEHOLEHI_SHIFT 0 +#define I40E_GLPES_TCPRXTHREEHOLEHI_TCPRXTHREEHOLEHI_MASK (0xFFFFFF << I40E_GLPES_TCPRXTHREEHOLEHI_TCPRXTHREEHOLEHI_SHIFT) +#define I40E_GLPES_TCPRXTHREEHOLELO 0x0001E038 +#define I40E_GLPES_TCPRXTHREEHOLELO_TCPRXTHREEHOLELO_SHIFT 0 +#define I40E_GLPES_TCPRXTHREEHOLELO_TCPRXTHREEHOLELO_MASK (0xFFFFFFFF << I40E_GLPES_TCPRXTHREEHOLELO_TCPRXTHREEHOLELO_SHIFT) +#define I40E_GLPES_TCPRXTWOHOLEHI 0x0001E034 +#define I40E_GLPES_TCPRXTWOHOLEHI_TCPRXTWOHOLEHI_SHIFT 0 +#define I40E_GLPES_TCPRXTWOHOLEHI_TCPRXTWOHOLEHI_MASK (0xFFFFFF << I40E_GLPES_TCPRXTWOHOLEHI_TCPRXTWOHOLEHI_SHIFT) +#define I40E_GLPES_TCPRXTWOHOLELO 0x0001E030 +#define I40E_GLPES_TCPRXTWOHOLELO_TCPRXTWOHOLELO_SHIFT 0 +#define I40E_GLPES_TCPRXTWOHOLELO_TCPRXTWOHOLELO_MASK (0xFFFFFFFF << I40E_GLPES_TCPRXTWOHOLELO_TCPRXTWOHOLELO_SHIFT) +#define I40E_GLPES_TCPRXUNEXPERR 0x0001E008 +#define I40E_GLPES_TCPRXUNEXPERR_TCPRXUNEXPERR_SHIFT 0 +#define I40E_GLPES_TCPRXUNEXPERR_TCPRXUNEXPERR_MASK (0xFFFFFF << I40E_GLPES_TCPRXUNEXPERR_TCPRXUNEXPERR_SHIFT) +#define I40E_GLPES_TCPTXRETRANSFASTHI 0x0001E04C +#define I40E_GLPES_TCPTXRETRANSFASTHI_TCPTXRETRANSFASTHI_SHIFT 0 +#define I40E_GLPES_TCPTXRETRANSFASTHI_TCPTXRETRANSFASTHI_MASK (0xFFFFFF << I40E_GLPES_TCPTXRETRANSFASTHI_TCPTXRETRANSFASTHI_SHIFT) +#define I40E_GLPES_TCPTXRETRANSFASTLO 0x0001E048 +#define I40E_GLPES_TCPTXRETRANSFASTLO_TCPTXRETRANSFASTLO_SHIFT 0 +#define I40E_GLPES_TCPTXRETRANSFASTLO_TCPTXRETRANSFASTLO_MASK (0xFFFFFFFF << I40E_GLPES_TCPTXRETRANSFASTLO_TCPTXRETRANSFASTLO_SHIFT) +#define I40E_GLPES_TCPTXTOUTSFASTHI 0x0001E054 +#define I40E_GLPES_TCPTXTOUTSFASTHI_TCPTXTOUTSFASTHI_SHIFT 0 +#define I40E_GLPES_TCPTXTOUTSFASTHI_TCPTXTOUTSFASTHI_MASK (0xFFFFFF << I40E_GLPES_TCPTXTOUTSFASTHI_TCPTXTOUTSFASTHI_SHIFT) +#define I40E_GLPES_TCPTXTOUTSFASTLO 0x0001E050 +#define I40E_GLPES_TCPTXTOUTSFASTLO_TCPTXTOUTSFASTLO_SHIFT 0 +#define I40E_GLPES_TCPTXTOUTSFASTLO_TCPTXTOUTSFASTLO_MASK (0xFFFFFFFF << I40E_GLPES_TCPTXTOUTSFASTLO_TCPTXTOUTSFASTLO_SHIFT) +#define I40E_GLPES_TCPTXTOUTSHI 0x0001E05C +#define I40E_GLPES_TCPTXTOUTSHI_TCPTXTOUTSHI_SHIFT 0 +#define I40E_GLPES_TCPTXTOUTSHI_TCPTXTOUTSHI_MASK (0xFFFFFF << I40E_GLPES_TCPTXTOUTSHI_TCPTXTOUTSHI_SHIFT) +#define I40E_GLPES_TCPTXTOUTSLO 0x0001E058 +#define I40E_GLPES_TCPTXTOUTSLO_TCPTXTOUTSLO_SHIFT 0 +#define I40E_GLPES_TCPTXTOUTSLO_TCPTXTOUTSLO_MASK (0xFFFFFFFF << I40E_GLPES_TCPTXTOUTSLO_TCPTXTOUTSLO_SHIFT) +#define I40E_GLPES_VFIP4RXDISCARD(_i) (0x00018600 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFIP4RXDISCARD_MAX_INDEX 31 +#define I40E_GLPES_VFIP4RXDISCARD_IP4RXDISCARD_SHIFT 0 +#define I40E_GLPES_VFIP4RXDISCARD_IP4RXDISCARD_MASK (0xFFFFFFFF << I40E_GLPES_VFIP4RXDISCARD_IP4RXDISCARD_SHIFT) +#define I40E_GLPES_VFIP4RXFRAGSHI(_i) (0x00018804 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFIP4RXFRAGSHI_MAX_INDEX 31 +#define I40E_GLPES_VFIP4RXFRAGSHI_IP4RXFRAGSHI_SHIFT 0 +#define I40E_GLPES_VFIP4RXFRAGSHI_IP4RXFRAGSHI_MASK (0xFFFF << I40E_GLPES_VFIP4RXFRAGSHI_IP4RXFRAGSHI_SHIFT) +#define I40E_GLPES_VFIP4RXFRAGSLO(_i) (0x00018800 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFIP4RXFRAGSLO_MAX_INDEX 31 +#define I40E_GLPES_VFIP4RXFRAGSLO_IP4RXFRAGSLO_SHIFT 0 +#define I40E_GLPES_VFIP4RXFRAGSLO_IP4RXFRAGSLO_MASK (0xFFFFFFFF << I40E_GLPES_VFIP4RXFRAGSLO_IP4RXFRAGSLO_SHIFT) +#define I40E_GLPES_VFIP4RXMCOCTSHI(_i) (0x00018A04 + ((_i) * 4)) +#define I40E_GLPES_VFIP4RXMCOCTSHI_MAX_INDEX 31 +#define I40E_GLPES_VFIP4RXMCOCTSHI_IP4RXMCOCTSHI_SHIFT 0 +#define I40E_GLPES_VFIP4RXMCOCTSHI_IP4RXMCOCTSHI_MASK (0xFFFF << I40E_GLPES_VFIP4RXMCOCTSHI_IP4RXMCOCTSHI_SHIFT) +#define I40E_GLPES_VFIP4RXMCOCTSLO(_i) (0x00018A00 + ((_i) * 4)) +#define I40E_GLPES_VFIP4RXMCOCTSLO_MAX_INDEX 31 +#define I40E_GLPES_VFIP4RXMCOCTSLO_IP4RXMCOCTSLO_SHIFT 0 +#define I40E_GLPES_VFIP4RXMCOCTSLO_IP4RXMCOCTSLO_MASK (0xFFFFFFFF << I40E_GLPES_VFIP4RXMCOCTSLO_IP4RXMCOCTSLO_SHIFT) +#define I40E_GLPES_VFIP4RXMCPKTSHI(_i) (0x00018C04 + ((_i) * 4)) +#define I40E_GLPES_VFIP4RXMCPKTSHI_MAX_INDEX 31 +#define I40E_GLPES_VFIP4RXMCPKTSHI_IP4RXMCPKTSHI_SHIFT 0 +#define I40E_GLPES_VFIP4RXMCPKTSHI_IP4RXMCPKTSHI_MASK (0xFFFF << I40E_GLPES_VFIP4RXMCPKTSHI_IP4RXMCPKTSHI_SHIFT) +#define I40E_GLPES_VFIP4RXMCPKTSLO(_i) (0x00018C00 + ((_i) * 4)) +#define I40E_GLPES_VFIP4RXMCPKTSLO_MAX_INDEX 31 +#define I40E_GLPES_VFIP4RXMCPKTSLO_IP4RXMCPKTSLO_SHIFT 0 +#define I40E_GLPES_VFIP4RXMCPKTSLO_IP4RXMCPKTSLO_MASK (0xFFFFFFFF << I40E_GLPES_VFIP4RXMCPKTSLO_IP4RXMCPKTSLO_SHIFT) +#define I40E_GLPES_VFIP4RXOCTSHI(_i) (0x00018204 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFIP4RXOCTSHI_MAX_INDEX 31 +#define I40E_GLPES_VFIP4RXOCTSHI_IP4RXOCTSHI_SHIFT 0 +#define I40E_GLPES_VFIP4RXOCTSHI_IP4RXOCTSHI_MASK (0xFFFF << I40E_GLPES_VFIP4RXOCTSHI_IP4RXOCTSHI_SHIFT) +#define I40E_GLPES_VFIP4RXOCTSLO(_i) (0x00018200 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFIP4RXOCTSLO_MAX_INDEX 31 +#define I40E_GLPES_VFIP4RXOCTSLO_IP4RXOCTSLO_SHIFT 0 +#define I40E_GLPES_VFIP4RXOCTSLO_IP4RXOCTSLO_MASK (0xFFFFFFFF << I40E_GLPES_VFIP4RXOCTSLO_IP4RXOCTSLO_SHIFT) +#define I40E_GLPES_VFIP4RXPKTSHI(_i) (0x00018404 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFIP4RXPKTSHI_MAX_INDEX 31 +#define I40E_GLPES_VFIP4RXPKTSHI_IP4RXPKTSHI_SHIFT 0 +#define I40E_GLPES_VFIP4RXPKTSHI_IP4RXPKTSHI_MASK (0xFFFF << I40E_GLPES_VFIP4RXPKTSHI_IP4RXPKTSHI_SHIFT) +#define I40E_GLPES_VFIP4RXPKTSLO(_i) (0x00018400 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFIP4RXPKTSLO_MAX_INDEX 31 +#define I40E_GLPES_VFIP4RXPKTSLO_IP4RXPKTSLO_SHIFT 0 +#define I40E_GLPES_VFIP4RXPKTSLO_IP4RXPKTSLO_MASK (0xFFFFFFFF << I40E_GLPES_VFIP4RXPKTSLO_IP4RXPKTSLO_SHIFT) +#define I40E_GLPES_VFIP4RXTRUNC(_i) (0x00018700 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFIP4RXTRUNC_MAX_INDEX 31 +#define I40E_GLPES_VFIP4RXTRUNC_IP4RXTRUNC_SHIFT 0 +#define I40E_GLPES_VFIP4RXTRUNC_IP4RXTRUNC_MASK (0xFFFFFFFF << I40E_GLPES_VFIP4RXTRUNC_IP4RXTRUNC_SHIFT) +#define I40E_GLPES_VFIP4TXFRAGSHI(_i) (0x00019E04 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFIP4TXFRAGSHI_MAX_INDEX 31 +#define I40E_GLPES_VFIP4TXFRAGSHI_IP4TXFRAGSHI_SHIFT 0 +#define I40E_GLPES_VFIP4TXFRAGSHI_IP4TXFRAGSHI_MASK (0xFFFF << I40E_GLPES_VFIP4TXFRAGSHI_IP4TXFRAGSHI_SHIFT) +#define I40E_GLPES_VFIP4TXFRAGSLO(_i) (0x00019E00 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFIP4TXFRAGSLO_MAX_INDEX 31 +#define I40E_GLPES_VFIP4TXFRAGSLO_IP4TXFRAGSLO_SHIFT 0 +#define I40E_GLPES_VFIP4TXFRAGSLO_IP4TXFRAGSLO_MASK (0xFFFFFFFF << I40E_GLPES_VFIP4TXFRAGSLO_IP4TXFRAGSLO_SHIFT) +#define I40E_GLPES_VFIP4TXMCOCTSHI(_i) (0x0001A004 + ((_i) * 4)) +#define I40E_GLPES_VFIP4TXMCOCTSHI_MAX_INDEX 31 +#define I40E_GLPES_VFIP4TXMCOCTSHI_IP4TXMCOCTSHI_SHIFT 0 +#define I40E_GLPES_VFIP4TXMCOCTSHI_IP4TXMCOCTSHI_MASK (0xFFFF << I40E_GLPES_VFIP4TXMCOCTSHI_IP4TXMCOCTSHI_SHIFT) +#define I40E_GLPES_VFIP4TXMCOCTSLO(_i) (0x0001A000 + ((_i) * 4)) +#define I40E_GLPES_VFIP4TXMCOCTSLO_MAX_INDEX 31 +#define I40E_GLPES_VFIP4TXMCOCTSLO_IP4TXMCOCTSLO_SHIFT 0 +#define I40E_GLPES_VFIP4TXMCOCTSLO_IP4TXMCOCTSLO_MASK (0xFFFFFFFF << I40E_GLPES_VFIP4TXMCOCTSLO_IP4TXMCOCTSLO_SHIFT) +#define I40E_GLPES_VFIP4TXMCPKTSHI(_i) (0x0001A204 + ((_i) * 4)) +#define I40E_GLPES_VFIP4TXMCPKTSHI_MAX_INDEX 31 +#define I40E_GLPES_VFIP4TXMCPKTSHI_IP4TXMCPKTSHI_SHIFT 0 +#define I40E_GLPES_VFIP4TXMCPKTSHI_IP4TXMCPKTSHI_MASK (0xFFFF << I40E_GLPES_VFIP4TXMCPKTSHI_IP4TXMCPKTSHI_SHIFT) +#define I40E_GLPES_VFIP4TXMCPKTSLO(_i) (0x0001A200 + ((_i) * 4)) +#define I40E_GLPES_VFIP4TXMCPKTSLO_MAX_INDEX 31 +#define I40E_GLPES_VFIP4TXMCPKTSLO_IP4TXMCPKTSLO_SHIFT 0 +#define I40E_GLPES_VFIP4TXMCPKTSLO_IP4TXMCPKTSLO_MASK (0xFFFFFFFF << I40E_GLPES_VFIP4TXMCPKTSLO_IP4TXMCPKTSLO_SHIFT) +#define I40E_GLPES_VFIP4TXNOROUTE(_i) (0x0001AE00 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFIP4TXNOROUTE_MAX_INDEX 31 +#define I40E_GLPES_VFIP4TXNOROUTE_IP4TXNOROUTE_SHIFT 0 +#define I40E_GLPES_VFIP4TXNOROUTE_IP4TXNOROUTE_MASK (0xFFFFFF << I40E_GLPES_VFIP4TXNOROUTE_IP4TXNOROUTE_SHIFT) +#define I40E_GLPES_VFIP4TXOCTSHI(_i) (0x00019A04 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFIP4TXOCTSHI_MAX_INDEX 31 +#define I40E_GLPES_VFIP4TXOCTSHI_IP4TXOCTSHI_SHIFT 0 +#define I40E_GLPES_VFIP4TXOCTSHI_IP4TXOCTSHI_MASK (0xFFFF << I40E_GLPES_VFIP4TXOCTSHI_IP4TXOCTSHI_SHIFT) +#define I40E_GLPES_VFIP4TXOCTSLO(_i) (0x00019A00 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFIP4TXOCTSLO_MAX_INDEX 31 +#define I40E_GLPES_VFIP4TXOCTSLO_IP4TXOCTSLO_SHIFT 0 +#define I40E_GLPES_VFIP4TXOCTSLO_IP4TXOCTSLO_MASK (0xFFFFFFFF << I40E_GLPES_VFIP4TXOCTSLO_IP4TXOCTSLO_SHIFT) +#define I40E_GLPES_VFIP4TXPKTSHI(_i) (0x00019C04 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFIP4TXPKTSHI_MAX_INDEX 31 +#define I40E_GLPES_VFIP4TXPKTSHI_IP4TXPKTSHI_SHIFT 0 +#define I40E_GLPES_VFIP4TXPKTSHI_IP4TXPKTSHI_MASK (0xFFFF << I40E_GLPES_VFIP4TXPKTSHI_IP4TXPKTSHI_SHIFT) +#define I40E_GLPES_VFIP4TXPKTSLO(_i) (0x00019C00 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFIP4TXPKTSLO_MAX_INDEX 31 +#define I40E_GLPES_VFIP4TXPKTSLO_IP4TXPKTSLO_SHIFT 0 +#define I40E_GLPES_VFIP4TXPKTSLO_IP4TXPKTSLO_MASK (0xFFFFFFFF << I40E_GLPES_VFIP4TXPKTSLO_IP4TXPKTSLO_SHIFT) +#define I40E_GLPES_VFIP6RXDISCARD(_i) (0x00019200 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFIP6RXDISCARD_MAX_INDEX 31 +#define I40E_GLPES_VFIP6RXDISCARD_IP6RXDISCARD_SHIFT 0 +#define I40E_GLPES_VFIP6RXDISCARD_IP6RXDISCARD_MASK (0xFFFFFFFF << I40E_GLPES_VFIP6RXDISCARD_IP6RXDISCARD_SHIFT) +#define I40E_GLPES_VFIP6RXFRAGSHI(_i) (0x00019404 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFIP6RXFRAGSHI_MAX_INDEX 31 +#define I40E_GLPES_VFIP6RXFRAGSHI_IP6RXFRAGSHI_SHIFT 0 +#define I40E_GLPES_VFIP6RXFRAGSHI_IP6RXFRAGSHI_MASK (0xFFFF << I40E_GLPES_VFIP6RXFRAGSHI_IP6RXFRAGSHI_SHIFT) +#define I40E_GLPES_VFIP6RXFRAGSLO(_i) (0x00019400 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFIP6RXFRAGSLO_MAX_INDEX 31 +#define I40E_GLPES_VFIP6RXFRAGSLO_IP6RXFRAGSLO_SHIFT 0 +#define I40E_GLPES_VFIP6RXFRAGSLO_IP6RXFRAGSLO_MASK (0xFFFFFFFF << I40E_GLPES_VFIP6RXFRAGSLO_IP6RXFRAGSLO_SHIFT) +#define I40E_GLPES_VFIP6RXMCOCTSHI(_i) (0x00019604 + ((_i) * 4)) +#define I40E_GLPES_VFIP6RXMCOCTSHI_MAX_INDEX 31 +#define I40E_GLPES_VFIP6RXMCOCTSHI_IP6RXMCOCTSHI_SHIFT 0 +#define I40E_GLPES_VFIP6RXMCOCTSHI_IP6RXMCOCTSHI_MASK (0xFFFF << I40E_GLPES_VFIP6RXMCOCTSHI_IP6RXMCOCTSHI_SHIFT) +#define I40E_GLPES_VFIP6RXMCOCTSLO(_i) (0x00019600 + ((_i) * 4)) +#define I40E_GLPES_VFIP6RXMCOCTSLO_MAX_INDEX 31 +#define I40E_GLPES_VFIP6RXMCOCTSLO_IP6RXMCOCTSLO_SHIFT 0 +#define I40E_GLPES_VFIP6RXMCOCTSLO_IP6RXMCOCTSLO_MASK (0xFFFFFFFF << I40E_GLPES_VFIP6RXMCOCTSLO_IP6RXMCOCTSLO_SHIFT) +#define I40E_GLPES_VFIP6RXMCPKTSHI(_i) (0x00019804 + ((_i) * 4)) +#define I40E_GLPES_VFIP6RXMCPKTSHI_MAX_INDEX 31 +#define I40E_GLPES_VFIP6RXMCPKTSHI_IP6RXMCPKTSHI_SHIFT 0 +#define I40E_GLPES_VFIP6RXMCPKTSHI_IP6RXMCPKTSHI_MASK (0xFFFF << I40E_GLPES_VFIP6RXMCPKTSHI_IP6RXMCPKTSHI_SHIFT) +#define I40E_GLPES_VFIP6RXMCPKTSLO(_i) (0x00019800 + ((_i) * 4)) +#define I40E_GLPES_VFIP6RXMCPKTSLO_MAX_INDEX 31 +#define I40E_GLPES_VFIP6RXMCPKTSLO_IP6RXMCPKTSLO_SHIFT 0 +#define I40E_GLPES_VFIP6RXMCPKTSLO_IP6RXMCPKTSLO_MASK (0xFFFFFFFF << I40E_GLPES_VFIP6RXMCPKTSLO_IP6RXMCPKTSLO_SHIFT) +#define I40E_GLPES_VFIP6RXOCTSHI(_i) (0x00018E04 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFIP6RXOCTSHI_MAX_INDEX 31 +#define I40E_GLPES_VFIP6RXOCTSHI_IP6RXOCTSHI_SHIFT 0 +#define I40E_GLPES_VFIP6RXOCTSHI_IP6RXOCTSHI_MASK (0xFFFF << I40E_GLPES_VFIP6RXOCTSHI_IP6RXOCTSHI_SHIFT) +#define I40E_GLPES_VFIP6RXOCTSLO(_i) (0x00018E00 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFIP6RXOCTSLO_MAX_INDEX 31 +#define I40E_GLPES_VFIP6RXOCTSLO_IP6RXOCTSLO_SHIFT 0 +#define I40E_GLPES_VFIP6RXOCTSLO_IP6RXOCTSLO_MASK (0xFFFFFFFF << I40E_GLPES_VFIP6RXOCTSLO_IP6RXOCTSLO_SHIFT) +#define I40E_GLPES_VFIP6RXPKTSHI(_i) (0x00019004 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFIP6RXPKTSHI_MAX_INDEX 31 +#define I40E_GLPES_VFIP6RXPKTSHI_IP6RXPKTSHI_SHIFT 0 +#define I40E_GLPES_VFIP6RXPKTSHI_IP6RXPKTSHI_MASK (0xFFFF << I40E_GLPES_VFIP6RXPKTSHI_IP6RXPKTSHI_SHIFT) +#define I40E_GLPES_VFIP6RXPKTSLO(_i) (0x00019000 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFIP6RXPKTSLO_MAX_INDEX 31 +#define I40E_GLPES_VFIP6RXPKTSLO_IP6RXPKTSLO_SHIFT 0 +#define I40E_GLPES_VFIP6RXPKTSLO_IP6RXPKTSLO_MASK (0xFFFFFFFF << I40E_GLPES_VFIP6RXPKTSLO_IP6RXPKTSLO_SHIFT) +#define I40E_GLPES_VFIP6RXTRUNC(_i) (0x00019300 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFIP6RXTRUNC_MAX_INDEX 31 +#define I40E_GLPES_VFIP6RXTRUNC_IP6RXTRUNC_SHIFT 0 +#define I40E_GLPES_VFIP6RXTRUNC_IP6RXTRUNC_MASK (0xFFFFFFFF << I40E_GLPES_VFIP6RXTRUNC_IP6RXTRUNC_SHIFT) +#define I40E_GLPES_VFIP6TXFRAGSHI(_i) (0x0001A804 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFIP6TXFRAGSHI_MAX_INDEX 31 +#define I40E_GLPES_VFIP6TXFRAGSHI_IP6TXFRAGSHI_SHIFT 0 +#define I40E_GLPES_VFIP6TXFRAGSHI_IP6TXFRAGSHI_MASK (0xFFFF << I40E_GLPES_VFIP6TXFRAGSHI_IP6TXFRAGSHI_SHIFT) +#define I40E_GLPES_VFIP6TXFRAGSLO(_i) (0x0001A800 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFIP6TXFRAGSLO_MAX_INDEX 31 +#define I40E_GLPES_VFIP6TXFRAGSLO_IP6TXFRAGSLO_SHIFT 0 +#define I40E_GLPES_VFIP6TXFRAGSLO_IP6TXFRAGSLO_MASK (0xFFFFFFFF << I40E_GLPES_VFIP6TXFRAGSLO_IP6TXFRAGSLO_SHIFT) +#define I40E_GLPES_VFIP6TXMCOCTSHI(_i) (0x0001AA04 + ((_i) * 4)) +#define I40E_GLPES_VFIP6TXMCOCTSHI_MAX_INDEX 31 +#define I40E_GLPES_VFIP6TXMCOCTSHI_IP6TXMCOCTSHI_SHIFT 0 +#define I40E_GLPES_VFIP6TXMCOCTSHI_IP6TXMCOCTSHI_MASK (0xFFFF << I40E_GLPES_VFIP6TXMCOCTSHI_IP6TXMCOCTSHI_SHIFT) +#define I40E_GLPES_VFIP6TXMCOCTSLO(_i) (0x0001AA00 + ((_i) * 4)) +#define I40E_GLPES_VFIP6TXMCOCTSLO_MAX_INDEX 31 +#define I40E_GLPES_VFIP6TXMCOCTSLO_IP6TXMCOCTSLO_SHIFT 0 +#define I40E_GLPES_VFIP6TXMCOCTSLO_IP6TXMCOCTSLO_MASK (0xFFFFFFFF << I40E_GLPES_VFIP6TXMCOCTSLO_IP6TXMCOCTSLO_SHIFT) +#define I40E_GLPES_VFIP6TXMCPKTSHI(_i) (0x0001AC04 + ((_i) * 4)) +#define I40E_GLPES_VFIP6TXMCPKTSHI_MAX_INDEX 31 +#define I40E_GLPES_VFIP6TXMCPKTSHI_IP6TXMCPKTSHI_SHIFT 0 +#define I40E_GLPES_VFIP6TXMCPKTSHI_IP6TXMCPKTSHI_MASK (0xFFFF << I40E_GLPES_VFIP6TXMCPKTSHI_IP6TXMCPKTSHI_SHIFT) +#define I40E_GLPES_VFIP6TXMCPKTSLO(_i) (0x0001AC00 + ((_i) * 4)) +#define I40E_GLPES_VFIP6TXMCPKTSLO_MAX_INDEX 31 +#define I40E_GLPES_VFIP6TXMCPKTSLO_IP6TXMCPKTSLO_SHIFT 0 +#define I40E_GLPES_VFIP6TXMCPKTSLO_IP6TXMCPKTSLO_MASK (0xFFFFFFFF << I40E_GLPES_VFIP6TXMCPKTSLO_IP6TXMCPKTSLO_SHIFT) +#define I40E_GLPES_VFIP6TXNOROUTE(_i) (0x0001AF00 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFIP6TXNOROUTE_MAX_INDEX 31 +#define I40E_GLPES_VFIP6TXNOROUTE_IP6TXNOROUTE_SHIFT 0 +#define I40E_GLPES_VFIP6TXNOROUTE_IP6TXNOROUTE_MASK (0xFFFFFF << I40E_GLPES_VFIP6TXNOROUTE_IP6TXNOROUTE_SHIFT) +#define I40E_GLPES_VFIP6TXOCTSHI(_i) (0x0001A404 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFIP6TXOCTSHI_MAX_INDEX 31 +#define I40E_GLPES_VFIP6TXOCTSHI_IP6TXOCTSHI_SHIFT 0 +#define I40E_GLPES_VFIP6TXOCTSHI_IP6TXOCTSHI_MASK (0xFFFF << I40E_GLPES_VFIP6TXOCTSHI_IP6TXOCTSHI_SHIFT) +#define I40E_GLPES_VFIP6TXOCTSLO(_i) (0x0001A400 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFIP6TXOCTSLO_MAX_INDEX 31 +#define I40E_GLPES_VFIP6TXOCTSLO_IP6TXOCTSLO_SHIFT 0 +#define I40E_GLPES_VFIP6TXOCTSLO_IP6TXOCTSLO_MASK (0xFFFFFFFF << I40E_GLPES_VFIP6TXOCTSLO_IP6TXOCTSLO_SHIFT) +#define I40E_GLPES_VFIP6TXPKTSHI(_i) (0x0001A604 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFIP6TXPKTSHI_MAX_INDEX 31 +#define I40E_GLPES_VFIP6TXPKTSHI_IP6TXPKTSHI_SHIFT 0 +#define I40E_GLPES_VFIP6TXPKTSHI_IP6TXPKTSHI_MASK (0xFFFF << I40E_GLPES_VFIP6TXPKTSHI_IP6TXPKTSHI_SHIFT) +#define I40E_GLPES_VFIP6TXPKTSLO(_i) (0x0001A600 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFIP6TXPKTSLO_MAX_INDEX 31 +#define I40E_GLPES_VFIP6TXPKTSLO_IP6TXPKTSLO_SHIFT 0 +#define I40E_GLPES_VFIP6TXPKTSLO_IP6TXPKTSLO_MASK (0xFFFFFFFF << I40E_GLPES_VFIP6TXPKTSLO_IP6TXPKTSLO_SHIFT) +#define I40E_GLPES_VFRDMARXRDSHI(_i) (0x0001BE04 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFRDMARXRDSHI_MAX_INDEX 31 +#define I40E_GLPES_VFRDMARXRDSHI_RDMARXRDSHI_SHIFT 0 +#define I40E_GLPES_VFRDMARXRDSHI_RDMARXRDSHI_MASK (0xFFFF << I40E_GLPES_VFRDMARXRDSHI_RDMARXRDSHI_SHIFT) +#define I40E_GLPES_VFRDMARXRDSLO(_i) (0x0001BE00 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFRDMARXRDSLO_MAX_INDEX 31 +#define I40E_GLPES_VFRDMARXRDSLO_RDMARXRDSLO_SHIFT 0 +#define I40E_GLPES_VFRDMARXRDSLO_RDMARXRDSLO_MASK (0xFFFFFFFF << I40E_GLPES_VFRDMARXRDSLO_RDMARXRDSLO_SHIFT) +#define I40E_GLPES_VFRDMARXSNDSHI(_i) (0x0001C004 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFRDMARXSNDSHI_MAX_INDEX 31 +#define I40E_GLPES_VFRDMARXSNDSHI_RDMARXSNDSHI_SHIFT 0 +#define I40E_GLPES_VFRDMARXSNDSHI_RDMARXSNDSHI_MASK (0xFFFF << I40E_GLPES_VFRDMARXSNDSHI_RDMARXSNDSHI_SHIFT) +#define I40E_GLPES_VFRDMARXSNDSLO(_i) (0x0001C000 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFRDMARXSNDSLO_MAX_INDEX 31 +#define I40E_GLPES_VFRDMARXSNDSLO_RDMARXSNDSLO_SHIFT 0 +#define I40E_GLPES_VFRDMARXSNDSLO_RDMARXSNDSLO_MASK (0xFFFFFFFF << I40E_GLPES_VFRDMARXSNDSLO_RDMARXSNDSLO_SHIFT) +#define I40E_GLPES_VFRDMARXWRSHI(_i) (0x0001BC04 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFRDMARXWRSHI_MAX_INDEX 31 +#define I40E_GLPES_VFRDMARXWRSHI_RDMARXWRSHI_SHIFT 0 +#define I40E_GLPES_VFRDMARXWRSHI_RDMARXWRSHI_MASK (0xFFFF << I40E_GLPES_VFRDMARXWRSHI_RDMARXWRSHI_SHIFT) +#define I40E_GLPES_VFRDMARXWRSLO(_i) (0x0001BC00 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFRDMARXWRSLO_MAX_INDEX 31 +#define I40E_GLPES_VFRDMARXWRSLO_RDMARXWRSLO_SHIFT 0 +#define I40E_GLPES_VFRDMARXWRSLO_RDMARXWRSLO_MASK (0xFFFFFFFF << I40E_GLPES_VFRDMARXWRSLO_RDMARXWRSLO_SHIFT) +#define I40E_GLPES_VFRDMATXRDSHI(_i) (0x0001C404 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFRDMATXRDSHI_MAX_INDEX 31 +#define I40E_GLPES_VFRDMATXRDSHI_RDMARXRDSHI_SHIFT 0 +#define I40E_GLPES_VFRDMATXRDSHI_RDMARXRDSHI_MASK (0xFFFF << I40E_GLPES_VFRDMATXRDSHI_RDMARXRDSHI_SHIFT) +#define I40E_GLPES_VFRDMATXRDSLO(_i) (0x0001C400 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFRDMATXRDSLO_MAX_INDEX 31 +#define I40E_GLPES_VFRDMATXRDSLO_RDMARXRDSLO_SHIFT 0 +#define I40E_GLPES_VFRDMATXRDSLO_RDMARXRDSLO_MASK (0xFFFFFFFF << I40E_GLPES_VFRDMATXRDSLO_RDMARXRDSLO_SHIFT) +#define I40E_GLPES_VFRDMATXSNDSHI(_i) (0x0001C604 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFRDMATXSNDSHI_MAX_INDEX 31 +#define I40E_GLPES_VFRDMATXSNDSHI_RDMARXSNDSHI_SHIFT 0 +#define I40E_GLPES_VFRDMATXSNDSHI_RDMARXSNDSHI_MASK (0xFFFF << I40E_GLPES_VFRDMATXSNDSHI_RDMARXSNDSHI_SHIFT) +#define I40E_GLPES_VFRDMATXSNDSLO(_i) (0x0001C600 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFRDMATXSNDSLO_MAX_INDEX 31 +#define I40E_GLPES_VFRDMATXSNDSLO_RDMARXSNDSLO_SHIFT 0 +#define I40E_GLPES_VFRDMATXSNDSLO_RDMARXSNDSLO_MASK (0xFFFFFFFF << I40E_GLPES_VFRDMATXSNDSLO_RDMARXSNDSLO_SHIFT) +#define I40E_GLPES_VFRDMATXWRSHI(_i) (0x0001C204 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFRDMATXWRSHI_MAX_INDEX 31 +#define I40E_GLPES_VFRDMATXWRSHI_RDMARXWRSHI_SHIFT 0 +#define I40E_GLPES_VFRDMATXWRSHI_RDMARXWRSHI_MASK (0xFFFF << I40E_GLPES_VFRDMATXWRSHI_RDMARXWRSHI_SHIFT) +#define I40E_GLPES_VFRDMATXWRSLO(_i) (0x0001C200 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFRDMATXWRSLO_MAX_INDEX 31 +#define I40E_GLPES_VFRDMATXWRSLO_RDMARXWRSLO_SHIFT 0 +#define I40E_GLPES_VFRDMATXWRSLO_RDMARXWRSLO_MASK (0xFFFFFFFF << I40E_GLPES_VFRDMATXWRSLO_RDMARXWRSLO_SHIFT) +#define I40E_GLPES_VFRDMAVBNDHI(_i) (0x0001C804 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFRDMAVBNDHI_MAX_INDEX 31 +#define I40E_GLPES_VFRDMAVBNDHI_RDMAVBNDHI_SHIFT 0 +#define I40E_GLPES_VFRDMAVBNDHI_RDMAVBNDHI_MASK (0xFFFFFFFF << I40E_GLPES_VFRDMAVBNDHI_RDMAVBNDHI_SHIFT) +#define I40E_GLPES_VFRDMAVBNDLO(_i) (0x0001C800 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFRDMAVBNDLO_MAX_INDEX 31 +#define I40E_GLPES_VFRDMAVBNDLO_RDMAVBNDLO_SHIFT 0 +#define I40E_GLPES_VFRDMAVBNDLO_RDMAVBNDLO_MASK (0xFFFFFFFF << I40E_GLPES_VFRDMAVBNDLO_RDMAVBNDLO_SHIFT) +#define I40E_GLPES_VFRDMAVINVHI(_i) (0x0001CA04 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFRDMAVINVHI_MAX_INDEX 31 +#define I40E_GLPES_VFRDMAVINVHI_RDMAVINVHI_SHIFT 0 +#define I40E_GLPES_VFRDMAVINVHI_RDMAVINVHI_MASK (0xFFFFFFFF << I40E_GLPES_VFRDMAVINVHI_RDMAVINVHI_SHIFT) +#define I40E_GLPES_VFRDMAVINVLO(_i) (0x0001CA00 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFRDMAVINVLO_MAX_INDEX 31 +#define I40E_GLPES_VFRDMAVINVLO_RDMAVINVLO_SHIFT 0 +#define I40E_GLPES_VFRDMAVINVLO_RDMAVINVLO_MASK (0xFFFFFFFF << I40E_GLPES_VFRDMAVINVLO_RDMAVINVLO_SHIFT) +#define I40E_GLPES_VFRXVLANERR(_i) (0x00018000 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFRXVLANERR_MAX_INDEX 31 +#define I40E_GLPES_VFRXVLANERR_RXVLANERR_SHIFT 0 +#define I40E_GLPES_VFRXVLANERR_RXVLANERR_MASK (0xFFFFFF << I40E_GLPES_VFRXVLANERR_RXVLANERR_SHIFT) +#define I40E_GLPES_VFTCPRTXSEG(_i) (0x0001B600 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFTCPRTXSEG_MAX_INDEX 31 +#define I40E_GLPES_VFTCPRTXSEG_TCPRTXSEG_SHIFT 0 +#define I40E_GLPES_VFTCPRTXSEG_TCPRTXSEG_MASK (0xFFFFFFFF << I40E_GLPES_VFTCPRTXSEG_TCPRTXSEG_SHIFT) +#define I40E_GLPES_VFTCPRXOPTERR(_i) (0x0001B200 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFTCPRXOPTERR_MAX_INDEX 31 +#define I40E_GLPES_VFTCPRXOPTERR_TCPRXOPTERR_SHIFT 0 +#define I40E_GLPES_VFTCPRXOPTERR_TCPRXOPTERR_MASK (0xFFFFFF << I40E_GLPES_VFTCPRXOPTERR_TCPRXOPTERR_SHIFT) +#define I40E_GLPES_VFTCPRXPROTOERR(_i) (0x0001B300 + ((_i) * 4)) +#define I40E_GLPES_VFTCPRXPROTOERR_MAX_INDEX 31 +#define I40E_GLPES_VFTCPRXPROTOERR_TCPRXPROTOERR_SHIFT 0 +#define I40E_GLPES_VFTCPRXPROTOERR_TCPRXPROTOERR_MASK (0xFFFFFF << I40E_GLPES_VFTCPRXPROTOERR_TCPRXPROTOERR_SHIFT) +#define I40E_GLPES_VFTCPRXSEGSHI(_i) (0x0001B004 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFTCPRXSEGSHI_MAX_INDEX 31 +#define I40E_GLPES_VFTCPRXSEGSHI_TCPRXSEGSHI_SHIFT 0 +#define I40E_GLPES_VFTCPRXSEGSHI_TCPRXSEGSHI_MASK (0xFFFF << I40E_GLPES_VFTCPRXSEGSHI_TCPRXSEGSHI_SHIFT) +#define I40E_GLPES_VFTCPRXSEGSLO(_i) (0x0001B000 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFTCPRXSEGSLO_MAX_INDEX 31 +#define I40E_GLPES_VFTCPRXSEGSLO_TCPRXSEGSLO_SHIFT 0 +#define I40E_GLPES_VFTCPRXSEGSLO_TCPRXSEGSLO_MASK (0xFFFFFFFF << I40E_GLPES_VFTCPRXSEGSLO_TCPRXSEGSLO_SHIFT) +#define I40E_GLPES_VFTCPTXSEGHI(_i) (0x0001B404 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFTCPTXSEGHI_MAX_INDEX 31 +#define I40E_GLPES_VFTCPTXSEGHI_TCPTXSEGHI_SHIFT 0 +#define I40E_GLPES_VFTCPTXSEGHI_TCPTXSEGHI_MASK (0xFFFF << I40E_GLPES_VFTCPTXSEGHI_TCPTXSEGHI_SHIFT) +#define I40E_GLPES_VFTCPTXSEGLO(_i) (0x0001B400 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFTCPTXSEGLO_MAX_INDEX 31 +#define I40E_GLPES_VFTCPTXSEGLO_TCPTXSEGLO_SHIFT 0 +#define I40E_GLPES_VFTCPTXSEGLO_TCPTXSEGLO_MASK (0xFFFFFFFF << I40E_GLPES_VFTCPTXSEGLO_TCPTXSEGLO_SHIFT) +#define I40E_GLPES_VFUDPRXPKTSHI(_i) (0x0001B804 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFUDPRXPKTSHI_MAX_INDEX 31 +#define I40E_GLPES_VFUDPRXPKTSHI_UDPRXPKTSHI_SHIFT 0 +#define I40E_GLPES_VFUDPRXPKTSHI_UDPRXPKTSHI_MASK (0xFFFF << I40E_GLPES_VFUDPRXPKTSHI_UDPRXPKTSHI_SHIFT) +#define I40E_GLPES_VFUDPRXPKTSLO(_i) (0x0001B800 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFUDPRXPKTSLO_MAX_INDEX 31 +#define I40E_GLPES_VFUDPRXPKTSLO_UDPRXPKTSLO_SHIFT 0 +#define I40E_GLPES_VFUDPRXPKTSLO_UDPRXPKTSLO_MASK (0xFFFFFFFF << I40E_GLPES_VFUDPRXPKTSLO_UDPRXPKTSLO_SHIFT) +#define I40E_GLPES_VFUDPTXPKTSHI(_i) (0x0001BA04 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFUDPTXPKTSHI_MAX_INDEX 31 +#define I40E_GLPES_VFUDPTXPKTSHI_UDPTXPKTSHI_SHIFT 0 +#define I40E_GLPES_VFUDPTXPKTSHI_UDPTXPKTSHI_MASK (0xFFFF << I40E_GLPES_VFUDPTXPKTSHI_UDPTXPKTSHI_SHIFT) +#define I40E_GLPES_VFUDPTXPKTSLO(_i) (0x0001BA00 + ((_i) * 4)) /* _i=0...31 */ +#define I40E_GLPES_VFUDPTXPKTSLO_MAX_INDEX 31 +#define I40E_GLPES_VFUDPTXPKTSLO_UDPTXPKTSLO_SHIFT 0 +#define I40E_GLPES_VFUDPTXPKTSLO_UDPTXPKTSLO_MASK (0xFFFFFFFF << I40E_GLPES_VFUDPTXPKTSLO_UDPTXPKTSLO_SHIFT) +#define I40E_PRTPM_EEE_STAT 0x001E4320 +#define I40E_PRTPM_EEE_STAT_EEE_NEG_SHIFT 29 +#define I40E_PRTPM_EEE_STAT_EEE_NEG_MASK (0x1 << I40E_PRTPM_EEE_STAT_EEE_NEG_SHIFT) +#define I40E_PRTPM_EEE_STAT_RX_LPI_STATUS_SHIFT 30 +#define I40E_PRTPM_EEE_STAT_RX_LPI_STATUS_MASK (0x1 << I40E_PRTPM_EEE_STAT_RX_LPI_STATUS_SHIFT) +#define I40E_PRTPM_EEE_STAT_TX_LPI_STATUS_SHIFT 31 +#define I40E_PRTPM_EEE_STAT_TX_LPI_STATUS_MASK (0x1 << I40E_PRTPM_EEE_STAT_TX_LPI_STATUS_SHIFT) +#define I40E_PRTPM_EEEC 0x001E4380 +#define I40E_PRTPM_EEEC_TW_WAKE_MIN_SHIFT 16 +#define I40E_PRTPM_EEEC_TW_WAKE_MIN_MASK (0x3F << I40E_PRTPM_EEEC_TW_WAKE_MIN_SHIFT) +#define I40E_PRTPM_EEEC_TX_LU_LPI_DLY_SHIFT 24 +#define I40E_PRTPM_EEEC_TX_LU_LPI_DLY_MASK (0x3 << I40E_PRTPM_EEEC_TX_LU_LPI_DLY_SHIFT) +#define I40E_PRTPM_EEEC_TEEE_DLY_SHIFT 26 +#define I40E_PRTPM_EEEC_TEEE_DLY_MASK (0x3F << I40E_PRTPM_EEEC_TEEE_DLY_SHIFT) +#define I40E_PRTPM_EEEFWD 0x001E4400 +#define I40E_PRTPM_EEEFWD_EEE_FW_CONFIG_DONE_SHIFT 31 +#define I40E_PRTPM_EEEFWD_EEE_FW_CONFIG_DONE_MASK (0x1 << I40E_PRTPM_EEEFWD_EEE_FW_CONFIG_DONE_SHIFT) +#define I40E_PRTPM_EEER 0x001E4360 +#define I40E_PRTPM_EEER_TW_SYSTEM_SHIFT 0 +#define I40E_PRTPM_EEER_TW_SYSTEM_MASK (0xFFFF << I40E_PRTPM_EEER_TW_SYSTEM_SHIFT) +#define I40E_PRTPM_EEER_TX_LPI_EN_SHIFT 16 +#define I40E_PRTPM_EEER_TX_LPI_EN_MASK (0x1 << I40E_PRTPM_EEER_TX_LPI_EN_SHIFT) +#define I40E_PRTPM_EEETXC 0x001E43E0 +#define I40E_PRTPM_EEETXC_TW_PHY_SHIFT 0 +#define I40E_PRTPM_EEETXC_TW_PHY_MASK (0xFFFF << I40E_PRTPM_EEETXC_TW_PHY_SHIFT) +#define I40E_PRTPM_GC 0x000B8140 +#define I40E_PRTPM_GC_EMP_LINK_ON_SHIFT 0 +#define I40E_PRTPM_GC_EMP_LINK_ON_MASK (0x1 << I40E_PRTPM_GC_EMP_LINK_ON_SHIFT) +#define I40E_PRTPM_GC_MNG_VETO_SHIFT 1 +#define I40E_PRTPM_GC_MNG_VETO_MASK (0x1 << I40E_PRTPM_GC_MNG_VETO_SHIFT) +#define I40E_PRTPM_GC_RATD_SHIFT 2 +#define I40E_PRTPM_GC_RATD_MASK (0x1 << I40E_PRTPM_GC_RATD_SHIFT) +#define I40E_PRTPM_GC_LCDMP_SHIFT 3 +#define I40E_PRTPM_GC_LCDMP_MASK (0x1 << I40E_PRTPM_GC_LCDMP_SHIFT) +#define I40E_PRTPM_GC_LPLU_ASSERTED_SHIFT 31 +#define I40E_PRTPM_GC_LPLU_ASSERTED_MASK (0x1 << I40E_PRTPM_GC_LPLU_ASSERTED_SHIFT) +#define I40E_PRTPM_RLPIC 0x001E43A0 +#define I40E_PRTPM_RLPIC_ERLPIC_SHIFT 0 +#define I40E_PRTPM_RLPIC_ERLPIC_MASK (0xFFFFFFFF << I40E_PRTPM_RLPIC_ERLPIC_SHIFT) +#define I40E_PRTPM_TLPIC 0x001E43C0 +#define I40E_PRTPM_TLPIC_ETLPIC_SHIFT 0 +#define I40E_PRTPM_TLPIC_ETLPIC_MASK (0xFFFFFFFF << I40E_PRTPM_TLPIC_ETLPIC_SHIFT) +#define I40E_GLRPB_DPSS 0x000AC828 +#define I40E_GLRPB_DPSS_DPS_TCN_SHIFT 0 +#define I40E_GLRPB_DPSS_DPS_TCN_MASK (0xFFFFF << I40E_GLRPB_DPSS_DPS_TCN_SHIFT) +#define I40E_GLRPB_GHW 0x000AC830 +#define I40E_GLRPB_GHW_GHW_SHIFT 0 +#define I40E_GLRPB_GHW_GHW_MASK (0xFFFFF << I40E_GLRPB_GHW_GHW_SHIFT) +#define I40E_GLRPB_GLW 0x000AC834 +#define I40E_GLRPB_GLW_GLW_SHIFT 0 +#define I40E_GLRPB_GLW_GLW_MASK (0xFFFFF << I40E_GLRPB_GLW_GLW_SHIFT) +#define I40E_GLRPB_PHW 0x000AC844 +#define I40E_GLRPB_PHW_PHW_SHIFT 0 +#define I40E_GLRPB_PHW_PHW_MASK (0xFFFFF << I40E_GLRPB_PHW_PHW_SHIFT) +#define I40E_GLRPB_PLW 0x000AC848 +#define I40E_GLRPB_PLW_PLW_SHIFT 0 +#define I40E_GLRPB_PLW_PLW_MASK (0xFFFFF << I40E_GLRPB_PLW_PLW_SHIFT) +#define I40E_PRTRPB_DHW(_i) (0x000AC100 + ((_i) * 32)) /* _i=0...7 */ +#define I40E_PRTRPB_DHW_MAX_INDEX 7 +#define I40E_PRTRPB_DHW_DHW_TCN_SHIFT 0 +#define I40E_PRTRPB_DHW_DHW_TCN_MASK (0xFFFFF << I40E_PRTRPB_DHW_DHW_TCN_SHIFT) +#define I40E_PRTRPB_DLW(_i) (0x000AC220 + ((_i) * 32)) /* _i=0...7 */ +#define I40E_PRTRPB_DLW_MAX_INDEX 7 +#define I40E_PRTRPB_DLW_DLW_TCN_SHIFT 0 +#define I40E_PRTRPB_DLW_DLW_TCN_MASK (0xFFFFF << I40E_PRTRPB_DLW_DLW_TCN_SHIFT) +#define I40E_PRTRPB_DPS(_i) (0x000AC320 + ((_i) * 32)) /* _i=0...7 */ +#define I40E_PRTRPB_DPS_MAX_INDEX 7 +#define I40E_PRTRPB_DPS_DPS_TCN_SHIFT 0 +#define I40E_PRTRPB_DPS_DPS_TCN_MASK (0xFFFFF << I40E_PRTRPB_DPS_DPS_TCN_SHIFT) +#define I40E_PRTRPB_SHT(_i) (0x000AC480 + ((_i) * 32)) /* _i=0...7 */ +#define I40E_PRTRPB_SHT_MAX_INDEX 7 +#define I40E_PRTRPB_SHT_SHT_TCN_SHIFT 0 +#define I40E_PRTRPB_SHT_SHT_TCN_MASK (0xFFFFF << I40E_PRTRPB_SHT_SHT_TCN_SHIFT) +#define I40E_PRTRPB_SHW 0x000AC580 +#define I40E_PRTRPB_SHW_SHW_SHIFT 0 +#define I40E_PRTRPB_SHW_SHW_MASK (0xFFFFF << I40E_PRTRPB_SHW_SHW_SHIFT) +#define I40E_PRTRPB_SLT(_i) (0x000AC5A0 + ((_i) * 32)) /* _i=0...7 */ +#define I40E_PRTRPB_SLT_MAX_INDEX 7 +#define I40E_PRTRPB_SLT_SLT_TCN_SHIFT 0 +#define I40E_PRTRPB_SLT_SLT_TCN_MASK (0xFFFFF << I40E_PRTRPB_SLT_SLT_TCN_SHIFT) +#define I40E_PRTRPB_SLW 0x000AC6A0 +#define I40E_PRTRPB_SLW_SLW_SHIFT 0 +#define I40E_PRTRPB_SLW_SLW_MASK (0xFFFFF << I40E_PRTRPB_SLW_SLW_SHIFT) +#define I40E_PRTRPB_SPS 0x000AC7C0 +#define I40E_PRTRPB_SPS_SPS_SHIFT 0 +#define I40E_PRTRPB_SPS_SPS_MASK (0xFFFFF << I40E_PRTRPB_SPS_SPS_SHIFT) +#define I40E_GLQF_APBVT(_i) (0x00260000 + ((_i) * 4)) /* _i=0...2047 */ +#define I40E_GLQF_APBVT_MAX_INDEX 2047 +#define I40E_GLQF_APBVT_APBVT_SHIFT 0 +#define I40E_GLQF_APBVT_APBVT_MASK (0xFFFFFFFF << I40E_GLQF_APBVT_APBVT_SHIFT) +#define I40E_GLQF_CTL 0x00269BA4 +#define I40E_GLQF_CTL_HTOEP_SHIFT 1 +#define I40E_GLQF_CTL_HTOEP_MASK (0x1 << I40E_GLQF_CTL_HTOEP_SHIFT) +#define I40E_GLQF_CTL_HTOEP_FCOE_SHIFT 2 +#define I40E_GLQF_CTL_HTOEP_FCOE_MASK (0x1 << I40E_GLQF_CTL_HTOEP_FCOE_SHIFT) +#define I40E_GLQF_CTL_PCNT_ALLOC_SHIFT 3 +#define I40E_GLQF_CTL_PCNT_ALLOC_MASK (0x7 << I40E_GLQF_CTL_PCNT_ALLOC_SHIFT) +#define I40E_GLQF_CTL_RSVD_SHIFT 7 +#define I40E_GLQF_CTL_RSVD_MASK (0x1 << I40E_GLQF_CTL_RSVD_SHIFT) +#define I40E_GLQF_CTL_MAXPEBLEN_SHIFT 8 +#define I40E_GLQF_CTL_MAXPEBLEN_MASK (0x7 << I40E_GLQF_CTL_MAXPEBLEN_SHIFT) +#define I40E_GLQF_CTL_MAXFCBLEN_SHIFT 11 +#define I40E_GLQF_CTL_MAXFCBLEN_MASK (0x7 << I40E_GLQF_CTL_MAXFCBLEN_SHIFT) +#define I40E_GLQF_CTL_MAXFDBLEN_SHIFT 14 +#define I40E_GLQF_CTL_MAXFDBLEN_MASK (0x7 << I40E_GLQF_CTL_MAXFDBLEN_SHIFT) +#define I40E_GLQF_CTL_FDBEST_SHIFT 17 +#define I40E_GLQF_CTL_FDBEST_MASK (0xFF << I40E_GLQF_CTL_FDBEST_SHIFT) +#define I40E_GLQF_CTL_PROGPRIO_SHIFT 25 +#define I40E_GLQF_CTL_PROGPRIO_MASK (0x1 << I40E_GLQF_CTL_PROGPRIO_SHIFT) +#define I40E_GLQF_CTL_INVALPRIO_SHIFT 26 +#define I40E_GLQF_CTL_INVALPRIO_MASK (0x1 << I40E_GLQF_CTL_INVALPRIO_SHIFT) +#define I40E_GLQF_CTL_IGNORE_IP_SHIFT 27 +#define I40E_GLQF_CTL_IGNORE_IP_MASK (0x1 << I40E_GLQF_CTL_IGNORE_IP_SHIFT) +#define I40E_GLQF_FDCNT_0 0x00269BAC +#define I40E_GLQF_FDCNT_0_GUARANT_CNT_SHIFT 0 +#define I40E_GLQF_FDCNT_0_GUARANT_CNT_MASK (0x1FFF << I40E_GLQF_FDCNT_0_GUARANT_CNT_SHIFT) +#define I40E_GLQF_FDCNT_0_BESTCNT_SHIFT 13 +#define I40E_GLQF_FDCNT_0_BESTCNT_MASK (0x1FFF << I40E_GLQF_FDCNT_0_BESTCNT_SHIFT) +#define I40E_GLQF_HSYM(_i) (0x00269D00 + ((_i) * 4)) /* _i=0...63 */ +#define I40E_GLQF_HSYM_MAX_INDEX 63 +#define I40E_GLQF_HSYM_SYMH_ENA_SHIFT 0 +#define I40E_GLQF_HSYM_SYMH_ENA_MASK (0x1 << I40E_GLQF_HSYM_SYMH_ENA_SHIFT) +#define I40E_GLQF_PCNT(_i) (0x00266800 + ((_i) * 4)) /* _i=0...511 */ +#define I40E_GLQF_PCNT_MAX_INDEX 511 +#define I40E_GLQF_PCNT_PCNT_SHIFT 0 +#define I40E_GLQF_PCNT_PCNT_MASK (0xFFFFFFFF << I40E_GLQF_PCNT_PCNT_SHIFT) +#define I40E_GLQF_SWAP(_i, _j) (0x00267E00 + ((_i) * 4 + (_j) * 8)) /* _i=0...1, _j=0...63 */ +#define I40E_GLQF_SWAP_MAX_INDEX 1 +#define I40E_GLQF_SWAP_OFF0_SRC0_SHIFT 0 +#define I40E_GLQF_SWAP_OFF0_SRC0_MASK (0x3F << I40E_GLQF_SWAP_OFF0_SRC0_SHIFT) +#define I40E_GLQF_SWAP_OFF0_SRC1_SHIFT 6 +#define I40E_GLQF_SWAP_OFF0_SRC1_MASK (0x3F << I40E_GLQF_SWAP_OFF0_SRC1_SHIFT) +#define I40E_GLQF_SWAP_FLEN0_SHIFT 12 +#define I40E_GLQF_SWAP_FLEN0_MASK (0xF << I40E_GLQF_SWAP_FLEN0_SHIFT) +#define I40E_GLQF_SWAP_OFF1_SRC0_SHIFT 16 +#define I40E_GLQF_SWAP_OFF1_SRC0_MASK (0x3F << I40E_GLQF_SWAP_OFF1_SRC0_SHIFT) +#define I40E_GLQF_SWAP_OFF1_SRC1_SHIFT 22 +#define I40E_GLQF_SWAP_OFF1_SRC1_MASK (0x3F << I40E_GLQF_SWAP_OFF1_SRC1_SHIFT) +#define I40E_GLQF_SWAP_FLEN1_SHIFT 28 +#define I40E_GLQF_SWAP_FLEN1_MASK (0xF << I40E_GLQF_SWAP_FLEN1_SHIFT) +#define I40E_PFQF_CTL_0 0x001C0AC0 +#define I40E_PFQF_CTL_0_PEHSIZE_SHIFT 0 +#define I40E_PFQF_CTL_0_PEHSIZE_MASK (0x1F << I40E_PFQF_CTL_0_PEHSIZE_SHIFT) +#define I40E_PFQF_CTL_0_PEDSIZE_SHIFT 5 +#define I40E_PFQF_CTL_0_PEDSIZE_MASK (0x1F << I40E_PFQF_CTL_0_PEDSIZE_SHIFT) +#define I40E_PFQF_CTL_0_PFFCHSIZE_SHIFT 10 +#define I40E_PFQF_CTL_0_PFFCHSIZE_MASK (0xF << I40E_PFQF_CTL_0_PFFCHSIZE_SHIFT) +#define I40E_PFQF_CTL_0_PFFCDSIZE_SHIFT 14 +#define I40E_PFQF_CTL_0_PFFCDSIZE_MASK (0x3 << I40E_PFQF_CTL_0_PFFCDSIZE_SHIFT) +#define I40E_PFQF_CTL_0_HASHLUTSIZE_SHIFT 16 +#define I40E_PFQF_CTL_0_HASHLUTSIZE_MASK (0x1 << I40E_PFQF_CTL_0_HASHLUTSIZE_SHIFT) +#define I40E_PFQF_CTL_0_FD_ENA_SHIFT 17 +#define I40E_PFQF_CTL_0_FD_ENA_MASK (0x1 << I40E_PFQF_CTL_0_FD_ENA_SHIFT) +#define I40E_PFQF_CTL_0_ETYPE_ENA_SHIFT 18 +#define I40E_PFQF_CTL_0_ETYPE_ENA_MASK (0x1 << I40E_PFQF_CTL_0_ETYPE_ENA_SHIFT) +#define I40E_PFQF_CTL_0_MACVLAN_ENA_SHIFT 19 +#define I40E_PFQF_CTL_0_MACVLAN_ENA_MASK (0x1 << I40E_PFQF_CTL_0_MACVLAN_ENA_SHIFT) +#define I40E_PFQF_CTL_0_VFFCHSIZE_SHIFT 20 +#define I40E_PFQF_CTL_0_VFFCHSIZE_MASK (0xF << I40E_PFQF_CTL_0_VFFCHSIZE_SHIFT) +#define I40E_PFQF_CTL_0_VFFCDSIZE_SHIFT 24 +#define I40E_PFQF_CTL_0_VFFCDSIZE_MASK (0x3 << I40E_PFQF_CTL_0_VFFCDSIZE_SHIFT) +#define I40E_PFQF_CTL_1 0x00245D80 +#define I40E_PFQF_CTL_1_CLEARFDTABLE_SHIFT 0 +#define I40E_PFQF_CTL_1_CLEARFDTABLE_MASK (0x1 << I40E_PFQF_CTL_1_CLEARFDTABLE_SHIFT) +#define I40E_PFQF_FDALLOC 0x00246280 +#define I40E_PFQF_FDALLOC_FDALLOC_SHIFT 0 +#define I40E_PFQF_FDALLOC_FDALLOC_MASK (0xFF << I40E_PFQF_FDALLOC_FDALLOC_SHIFT) +#define I40E_PFQF_FDALLOC_FDBEST_SHIFT 8 +#define I40E_PFQF_FDALLOC_FDBEST_MASK (0xFF << I40E_PFQF_FDALLOC_FDBEST_SHIFT) +#define I40E_PFQF_FDSTAT 0x00246380 +#define I40E_PFQF_FDSTAT_GUARANT_CNT_SHIFT 0 +#define I40E_PFQF_FDSTAT_GUARANT_CNT_MASK (0x1FFF << I40E_PFQF_FDSTAT_GUARANT_CNT_SHIFT) +#define I40E_PFQF_FDSTAT_BEST_CNT_SHIFT 16 +#define I40E_PFQF_FDSTAT_BEST_CNT_MASK (0x1FFF << I40E_PFQF_FDSTAT_BEST_CNT_SHIFT) +#define I40E_PFQF_HENA(_i) (0x00245900 + ((_i) * 128)) /* _i=0...1 */ +#define I40E_PFQF_HENA_MAX_INDEX 1 +#define I40E_PFQF_HENA_PTYPE_ENA_SHIFT 0 +#define I40E_PFQF_HENA_PTYPE_ENA_MASK (0xFFFFFFFF << I40E_PFQF_HENA_PTYPE_ENA_SHIFT) +#define I40E_PFQF_HKEY(_i) (0x00244800 + ((_i) * 128)) /* _i=0...12 */ +#define I40E_PFQF_HKEY_MAX_INDEX 12 +#define I40E_PFQF_HKEY_KEY_0_SHIFT 0 +#define I40E_PFQF_HKEY_KEY_0_MASK (0xFF << I40E_PFQF_HKEY_KEY_0_SHIFT) +#define I40E_PFQF_HKEY_KEY_1_SHIFT 8 +#define I40E_PFQF_HKEY_KEY_1_MASK (0xFF << I40E_PFQF_HKEY_KEY_1_SHIFT) +#define I40E_PFQF_HKEY_KEY_2_SHIFT 16 +#define I40E_PFQF_HKEY_KEY_2_MASK (0xFF << I40E_PFQF_HKEY_KEY_2_SHIFT) +#define I40E_PFQF_HKEY_KEY_3_SHIFT 24 +#define I40E_PFQF_HKEY_KEY_3_MASK (0xFF << I40E_PFQF_HKEY_KEY_3_SHIFT) +#define I40E_PFQF_HLUT(_i) (0x00240000 + ((_i) * 128)) /* _i=0...127 */ +#define I40E_PFQF_HLUT_MAX_INDEX 127 +#define I40E_PFQF_HLUT_LUT0_SHIFT 0 +#define I40E_PFQF_HLUT_LUT0_MASK (0x3F << I40E_PFQF_HLUT_LUT0_SHIFT) +#define I40E_PFQF_HLUT_LUT1_SHIFT 8 +#define I40E_PFQF_HLUT_LUT1_MASK (0x3F << I40E_PFQF_HLUT_LUT1_SHIFT) +#define I40E_PFQF_HLUT_LUT2_SHIFT 16 +#define I40E_PFQF_HLUT_LUT2_MASK (0x3F << I40E_PFQF_HLUT_LUT2_SHIFT) +#define I40E_PFQF_HLUT_LUT3_SHIFT 24 +#define I40E_PFQF_HLUT_LUT3_MASK (0x3F << I40E_PFQF_HLUT_LUT3_SHIFT) +#define I40E_PFQF_HREGION(_i) (0x00245400 + ((_i) * 128)) /* _i=0...7 */ +#define I40E_PFQF_HREGION_MAX_INDEX 7 +#define I40E_PFQF_HREGION_OVERRIDE_ENA_0_SHIFT 0 +#define I40E_PFQF_HREGION_OVERRIDE_ENA_0_MASK (0x1 << I40E_PFQF_HREGION_OVERRIDE_ENA_0_SHIFT) +#define I40E_PFQF_HREGION_REGION_0_SHIFT 1 +#define I40E_PFQF_HREGION_REGION_0_MASK (0x7 << I40E_PFQF_HREGION_REGION_0_SHIFT) +#define I40E_PFQF_HREGION_OVERRIDE_ENA_1_SHIFT 4 +#define I40E_PFQF_HREGION_OVERRIDE_ENA_1_MASK (0x1 << I40E_PFQF_HREGION_OVERRIDE_ENA_1_SHIFT) +#define I40E_PFQF_HREGION_REGION_1_SHIFT 5 +#define I40E_PFQF_HREGION_REGION_1_MASK (0x7 << I40E_PFQF_HREGION_REGION_1_SHIFT) +#define I40E_PFQF_HREGION_OVERRIDE_ENA_2_SHIFT 8 +#define I40E_PFQF_HREGION_OVERRIDE_ENA_2_MASK (0x1 << I40E_PFQF_HREGION_OVERRIDE_ENA_2_SHIFT) +#define I40E_PFQF_HREGION_REGION_2_SHIFT 9 +#define I40E_PFQF_HREGION_REGION_2_MASK (0x7 << I40E_PFQF_HREGION_REGION_2_SHIFT) +#define I40E_PFQF_HREGION_OVERRIDE_ENA_3_SHIFT 12 +#define I40E_PFQF_HREGION_OVERRIDE_ENA_3_MASK (0x1 << I40E_PFQF_HREGION_OVERRIDE_ENA_3_SHIFT) +#define I40E_PFQF_HREGION_REGION_3_SHIFT 13 +#define I40E_PFQF_HREGION_REGION_3_MASK (0x7 << I40E_PFQF_HREGION_REGION_3_SHIFT) +#define I40E_PFQF_HREGION_OVERRIDE_ENA_4_SHIFT 16 +#define I40E_PFQF_HREGION_OVERRIDE_ENA_4_MASK (0x1 << I40E_PFQF_HREGION_OVERRIDE_ENA_4_SHIFT) +#define I40E_PFQF_HREGION_REGION_4_SHIFT 17 +#define I40E_PFQF_HREGION_REGION_4_MASK (0x7 << I40E_PFQF_HREGION_REGION_4_SHIFT) +#define I40E_PFQF_HREGION_OVERRIDE_ENA_5_SHIFT 20 +#define I40E_PFQF_HREGION_OVERRIDE_ENA_5_MASK (0x1 << I40E_PFQF_HREGION_OVERRIDE_ENA_5_SHIFT) +#define I40E_PFQF_HREGION_REGION_5_SHIFT 21 +#define I40E_PFQF_HREGION_REGION_5_MASK (0x7 << I40E_PFQF_HREGION_REGION_5_SHIFT) +#define I40E_PFQF_HREGION_OVERRIDE_ENA_6_SHIFT 24 +#define I40E_PFQF_HREGION_OVERRIDE_ENA_6_MASK (0x1 << I40E_PFQF_HREGION_OVERRIDE_ENA_6_SHIFT) +#define I40E_PFQF_HREGION_REGION_6_SHIFT 25 +#define I40E_PFQF_HREGION_REGION_6_MASK (0x7 << I40E_PFQF_HREGION_REGION_6_SHIFT) +#define I40E_PFQF_HREGION_OVERRIDE_ENA_7_SHIFT 28 +#define I40E_PFQF_HREGION_OVERRIDE_ENA_7_MASK (0x1 << I40E_PFQF_HREGION_OVERRIDE_ENA_7_SHIFT) +#define I40E_PFQF_HREGION_REGION_7_SHIFT 29 +#define I40E_PFQF_HREGION_REGION_7_MASK (0x7 << I40E_PFQF_HREGION_REGION_7_SHIFT) +#define I40E_PRTQF_CTL_0 0x00256E60 +#define I40E_PRTQF_CTL_0_HSYM_ENA_SHIFT 0 +#define I40E_PRTQF_CTL_0_HSYM_ENA_MASK (0x1 << I40E_PRTQF_CTL_0_HSYM_ENA_SHIFT) +#define I40E_PRTQF_FD_FLXINSET(_i) (0x00253800 + ((_i) * 32)) /* _i=0...63 */ +#define I40E_PRTQF_FD_FLXINSET_MAX_INDEX 63 +#define I40E_PRTQF_FD_FLXINSET_INSET_SHIFT 0 +#define I40E_PRTQF_FD_FLXINSET_INSET_MASK (0xFF << I40E_PRTQF_FD_FLXINSET_INSET_SHIFT) +#define I40E_PRTQF_FD_MSK(_i, _j) (0x00252000 + ((_i) * 64 + (_j) * 32)) /* _i=0...63, _j=0...1 */ +#define I40E_PRTQF_FD_MSK_MAX_INDEX 63 +#define I40E_PRTQF_FD_MSK_MASK_SHIFT 0 +#define I40E_PRTQF_FD_MSK_MASK_MASK (0xFFFF << I40E_PRTQF_FD_MSK_MASK_SHIFT) +#define I40E_PRTQF_FD_MSK_OFFSET_SHIFT 16 +#define I40E_PRTQF_FD_MSK_OFFSET_MASK (0x3F << I40E_PRTQF_FD_MSK_OFFSET_SHIFT) +#define I40E_PRTQF_FLX_PIT(_i) (0x00255200 + ((_i) * 32)) /* _i=0...8 */ +#define I40E_PRTQF_FLX_PIT_MAX_INDEX 8 +#define I40E_PRTQF_FLX_PIT_SOURCE_OFF_SHIFT 0 +#define I40E_PRTQF_FLX_PIT_SOURCE_OFF_MASK (0x1F << I40E_PRTQF_FLX_PIT_SOURCE_OFF_SHIFT) +#define I40E_PRTQF_FLX_PIT_FSIZE_SHIFT 5 +#define I40E_PRTQF_FLX_PIT_FSIZE_MASK (0x1F << I40E_PRTQF_FLX_PIT_FSIZE_SHIFT) +#define I40E_PRTQF_FLX_PIT_DEST_OFF_SHIFT 10 +#define I40E_PRTQF_FLX_PIT_DEST_OFF_MASK (0x3F << I40E_PRTQF_FLX_PIT_DEST_OFF_SHIFT) +#define I40E_VFQF_HENA1(_i, _VF) (0x00230800 + ((_i) * 1024 + (_VF) * 4)) +#define I40E_VFQF_HENA1_MAX_INDEX 1 +#define I40E_VFQF_HENA1_PTYPE_ENA_SHIFT 0 +#define I40E_VFQF_HENA1_PTYPE_ENA_MASK (0xFFFFFFFF << I40E_VFQF_HENA1_PTYPE_ENA_SHIFT) +#define I40E_VFQF_HKEY1(_i, _VF) (0x00228000 + ((_i) * 1024 + (_VF) * 4)) /* _i=0...12, _VF=0...127 */ +#define I40E_VFQF_HKEY1_MAX_INDEX 12 +#define I40E_VFQF_HKEY1_KEY_0_SHIFT 0 +#define I40E_VFQF_HKEY1_KEY_0_MASK (0xFF << I40E_VFQF_HKEY1_KEY_0_SHIFT) +#define I40E_VFQF_HKEY1_KEY_1_SHIFT 8 +#define I40E_VFQF_HKEY1_KEY_1_MASK (0xFF << I40E_VFQF_HKEY1_KEY_1_SHIFT) +#define I40E_VFQF_HKEY1_KEY_2_SHIFT 16 +#define I40E_VFQF_HKEY1_KEY_2_MASK (0xFF << I40E_VFQF_HKEY1_KEY_2_SHIFT) +#define I40E_VFQF_HKEY1_KEY_3_SHIFT 24 +#define I40E_VFQF_HKEY1_KEY_3_MASK (0xFF << I40E_VFQF_HKEY1_KEY_3_SHIFT) +#define I40E_VFQF_HLUT1(_i, _VF) (0x00220000 + ((_i) * 1024 + (_VF) * 4)) /* _i=0...15, _VF=0...127 */ +#define I40E_VFQF_HLUT1_MAX_INDEX 15 +#define I40E_VFQF_HLUT1_LUT0_SHIFT 0 +#define I40E_VFQF_HLUT1_LUT0_MASK (0xF << I40E_VFQF_HLUT1_LUT0_SHIFT) +#define I40E_VFQF_HLUT1_LUT1_SHIFT 8 +#define I40E_VFQF_HLUT1_LUT1_MASK (0xF << I40E_VFQF_HLUT1_LUT1_SHIFT) +#define I40E_VFQF_HLUT1_LUT2_SHIFT 16 +#define I40E_VFQF_HLUT1_LUT2_MASK (0xF << I40E_VFQF_HLUT1_LUT2_SHIFT) +#define I40E_VFQF_HLUT1_LUT3_SHIFT 24 +#define I40E_VFQF_HLUT1_LUT3_MASK (0xF << I40E_VFQF_HLUT1_LUT3_SHIFT) +#define I40E_VFQF_HREGION1(_i, _VF) (0x0022E000 + ((_i) * 1024 + (_VF) * 4)) +#define I40E_VFQF_HREGION1_MAX_INDEX 7 +#define I40E_VFQF_HREGION1_OVERRIDE_ENA_0_SHIFT 0 +#define I40E_VFQF_HREGION1_OVERRIDE_ENA_0_MASK (0x1 << I40E_VFQF_HREGION1_OVERRIDE_ENA_0_SHIFT) +#define I40E_VFQF_HREGION1_REGION_0_SHIFT 1 +#define I40E_VFQF_HREGION1_REGION_0_MASK (0x7 << I40E_VFQF_HREGION1_REGION_0_SHIFT) +#define I40E_VFQF_HREGION1_OVERRIDE_ENA_1_SHIFT 4 +#define I40E_VFQF_HREGION1_OVERRIDE_ENA_1_MASK (0x1 << I40E_VFQF_HREGION1_OVERRIDE_ENA_1_SHIFT) +#define I40E_VFQF_HREGION1_REGION_1_SHIFT 5 +#define I40E_VFQF_HREGION1_REGION_1_MASK (0x7 << I40E_VFQF_HREGION1_REGION_1_SHIFT) +#define I40E_VFQF_HREGION1_OVERRIDE_ENA_2_SHIFT 8 +#define I40E_VFQF_HREGION1_OVERRIDE_ENA_2_MASK (0x1 << I40E_VFQF_HREGION1_OVERRIDE_ENA_2_SHIFT) +#define I40E_VFQF_HREGION1_REGION_2_SHIFT 9 +#define I40E_VFQF_HREGION1_REGION_2_MASK (0x7 << I40E_VFQF_HREGION1_REGION_2_SHIFT) +#define I40E_VFQF_HREGION1_OVERRIDE_ENA_3_SHIFT 12 +#define I40E_VFQF_HREGION1_OVERRIDE_ENA_3_MASK (0x1 << I40E_VFQF_HREGION1_OVERRIDE_ENA_3_SHIFT) +#define I40E_VFQF_HREGION1_REGION_3_SHIFT 13 +#define I40E_VFQF_HREGION1_REGION_3_MASK (0x7 << I40E_VFQF_HREGION1_REGION_3_SHIFT) +#define I40E_VFQF_HREGION1_OVERRIDE_ENA_4_SHIFT 16 +#define I40E_VFQF_HREGION1_OVERRIDE_ENA_4_MASK (0x1 << I40E_VFQF_HREGION1_OVERRIDE_ENA_4_SHIFT) +#define I40E_VFQF_HREGION1_REGION_4_SHIFT 17 +#define I40E_VFQF_HREGION1_REGION_4_MASK (0x7 << I40E_VFQF_HREGION1_REGION_4_SHIFT) +#define I40E_VFQF_HREGION1_OVERRIDE_ENA_5_SHIFT 20 +#define I40E_VFQF_HREGION1_OVERRIDE_ENA_5_MASK (0x1 << I40E_VFQF_HREGION1_OVERRIDE_ENA_5_SHIFT) +#define I40E_VFQF_HREGION1_REGION_5_SHIFT 21 +#define I40E_VFQF_HREGION1_REGION_5_MASK (0x7 << I40E_VFQF_HREGION1_REGION_5_SHIFT) +#define I40E_VFQF_HREGION1_OVERRIDE_ENA_6_SHIFT 24 +#define I40E_VFQF_HREGION1_OVERRIDE_ENA_6_MASK (0x1 << I40E_VFQF_HREGION1_OVERRIDE_ENA_6_SHIFT) +#define I40E_VFQF_HREGION1_REGION_6_SHIFT 25 +#define I40E_VFQF_HREGION1_REGION_6_MASK (0x7 << I40E_VFQF_HREGION1_REGION_6_SHIFT) +#define I40E_VFQF_HREGION1_OVERRIDE_ENA_7_SHIFT 28 +#define I40E_VFQF_HREGION1_OVERRIDE_ENA_7_MASK (0x1 << I40E_VFQF_HREGION1_OVERRIDE_ENA_7_SHIFT) +#define I40E_VFQF_HREGION1_REGION_7_SHIFT 29 +#define I40E_VFQF_HREGION1_REGION_7_MASK (0x7 << I40E_VFQF_HREGION1_REGION_7_SHIFT) +#define I40E_VPQF_CTL(_VF) (0x001C0000 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_VPQF_CTL_MAX_INDEX 127 +#define I40E_VPQF_CTL_PEHSIZE_SHIFT 0 +#define I40E_VPQF_CTL_PEHSIZE_MASK (0x1F << I40E_VPQF_CTL_PEHSIZE_SHIFT) +#define I40E_VPQF_CTL_PEDSIZE_SHIFT 5 +#define I40E_VPQF_CTL_PEDSIZE_MASK (0x1F << I40E_VPQF_CTL_PEDSIZE_SHIFT) +#define I40E_VPQF_CTL_FCHSIZE_SHIFT 10 +#define I40E_VPQF_CTL_FCHSIZE_MASK (0xF << I40E_VPQF_CTL_FCHSIZE_SHIFT) +#define I40E_VPQF_CTL_FCDSIZE_SHIFT 14 +#define I40E_VPQF_CTL_FCDSIZE_MASK (0x3 << I40E_VPQF_CTL_FCDSIZE_SHIFT) +#define I40E_VSIQF_CTL(_VSI) (0x0020D800 + ((_VSI) * 4)) /* _i=0...383 */ +#define I40E_VSIQF_CTL_MAX_INDEX 383 +#define I40E_VSIQF_CTL_FCOE_ENA_SHIFT 0 +#define I40E_VSIQF_CTL_FCOE_ENA_MASK (0x1 << I40E_VSIQF_CTL_FCOE_ENA_SHIFT) +#define I40E_VSIQF_CTL_PETCP_ENA_SHIFT 1 +#define I40E_VSIQF_CTL_PETCP_ENA_MASK (0x1 << I40E_VSIQF_CTL_PETCP_ENA_SHIFT) +#define I40E_VSIQF_CTL_PEUUDP_ENA_SHIFT 2 +#define I40E_VSIQF_CTL_PEUUDP_ENA_MASK (0x1 << I40E_VSIQF_CTL_PEUUDP_ENA_SHIFT) +#define I40E_VSIQF_CTL_PEMUDP_ENA_SHIFT 3 +#define I40E_VSIQF_CTL_PEMUDP_ENA_MASK (0x1 << I40E_VSIQF_CTL_PEMUDP_ENA_SHIFT) +#define I40E_VSIQF_CTL_PEUFRAG_ENA_SHIFT 4 +#define I40E_VSIQF_CTL_PEUFRAG_ENA_MASK (0x1 << I40E_VSIQF_CTL_PEUFRAG_ENA_SHIFT) +#define I40E_VSIQF_CTL_PEMFRAG_ENA_SHIFT 5 +#define I40E_VSIQF_CTL_PEMFRAG_ENA_MASK (0x1 << I40E_VSIQF_CTL_PEMFRAG_ENA_SHIFT) +#define I40E_VSIQF_TCREGION(_i, _VSI) (0x00206000 + ((_i) * 2048 + (_VSI) * 4)) +#define I40E_VSIQF_TCREGION_MAX_INDEX 3 +#define I40E_VSIQF_TCREGION_TC_OFFSET_SHIFT 0 +#define I40E_VSIQF_TCREGION_TC_OFFSET_MASK (0x1FF << I40E_VSIQF_TCREGION_TC_OFFSET_SHIFT) +#define I40E_VSIQF_TCREGION_TC_SIZE_SHIFT 9 +#define I40E_VSIQF_TCREGION_TC_SIZE_MASK (0x7 << I40E_VSIQF_TCREGION_TC_SIZE_SHIFT) +#define I40E_VSIQF_TCREGION_TC_OFFSET2_SHIFT 16 +#define I40E_VSIQF_TCREGION_TC_OFFSET2_MASK (0x1FF << I40E_VSIQF_TCREGION_TC_OFFSET2_SHIFT) +#define I40E_VSIQF_TCREGION_TC_SIZE2_SHIFT 25 +#define I40E_VSIQF_TCREGION_TC_SIZE2_MASK (0x7 << I40E_VSIQF_TCREGION_TC_SIZE2_SHIFT) +#define I40E_GL_FCOECRC(_i) (0x00314d80 + ((_i) * 8)) /* _i=0...143 */ +#define I40E_GL_FCOECRC_MAX_INDEX 143 +#define I40E_GL_FCOECRC_FCOECRC_SHIFT 0 +#define I40E_GL_FCOECRC_FCOECRC_MASK (0xFFFFFFFF << I40E_GL_FCOECRC_FCOECRC_SHIFT) +#define I40E_GL_FCOEDDPC(_i) (0x00314480 + ((_i) * 8)) /* _i=0...143 */ +#define I40E_GL_FCOEDDPC_MAX_INDEX 143 +#define I40E_GL_FCOEDDPC_FCOEDDPC_SHIFT 0 +#define I40E_GL_FCOEDDPC_FCOEDDPC_MASK (0xFFFFFFFF << I40E_GL_FCOEDDPC_FCOEDDPC_SHIFT) +/* _i=0...143 */ +#define I40E_GL_FCOEDIFEC(_i) (0x00318480 + ((_i) * 8)) /* _i=0...143 */ +#define I40E_GL_FCOEDIFEC_MAX_INDEX 143 +#define I40E_GL_FCOEDIFEC_FCOEDIFRC_SHIFT 0 +#define I40E_GL_FCOEDIFEC_FCOEDIFRC_MASK (0xFFFFFFFF << I40E_GL_FCOEDIFEC_FCOEDIFRC_SHIFT) +#define I40E_GL_FCOEDIFRC(_i) (0x00318000 + ((_i) * 8)) /* _i=0...143 */ +#define I40E_GL_FCOEDIFRC_MAX_INDEX 143 +#define I40E_GL_FCOEDIFRC_FCOEDIFRC_SHIFT 0 +#define I40E_GL_FCOEDIFRC_FCOEDIFRC_MASK (0xFFFFFFFF << I40E_GL_FCOEDIFRC_FCOEDIFRC_SHIFT) +#define I40E_GL_FCOEDIFTCL(_i) (0x00354000 + ((_i) * 8)) /* _i=0...143 */ +#define I40E_GL_FCOEDIFTCL_MAX_INDEX 143 +#define I40E_GL_FCOEDIFTCL_FCOEDIFTC_SHIFT 0 +#define I40E_GL_FCOEDIFTCL_FCOEDIFTC_MASK (0xFFFFFFFF << I40E_GL_FCOEDIFTCL_FCOEDIFTC_SHIFT) +#define I40E_GL_FCOEDIXAC(_i) (0x0031c000 + ((_i) * 8)) /* _i=0...143 */ +#define I40E_GL_FCOEDIXAC_MAX_INDEX 143 +#define I40E_GL_FCOEDIXAC_FCOEDIXAC_SHIFT 0 +#define I40E_GL_FCOEDIXAC_FCOEDIXAC_MASK (0xFFFFFFFF << I40E_GL_FCOEDIXAC_FCOEDIXAC_SHIFT) +#define I40E_GL_FCOEDIXEC(_i) (0x0034c000 + ((_i) * 8)) /* _i=0...143 */ +#define I40E_GL_FCOEDIXEC_MAX_INDEX 143 +#define I40E_GL_FCOEDIXEC_FCOEDIXEC_SHIFT 0 +#define I40E_GL_FCOEDIXEC_FCOEDIXEC_MASK (0xFFFFFFFF << I40E_GL_FCOEDIXEC_FCOEDIXEC_SHIFT) +#define I40E_GL_FCOEDIXVC(_i) (0x00350000 + ((_i) * 8)) /* _i=0...143 */ +#define I40E_GL_FCOEDIXVC_MAX_INDEX 143 +#define I40E_GL_FCOEDIXVC_FCOEDIXVC_SHIFT 0 +#define I40E_GL_FCOEDIXVC_FCOEDIXVC_MASK (0xFFFFFFFF << I40E_GL_FCOEDIXVC_FCOEDIXVC_SHIFT) +#define I40E_GL_FCOEDWRCH(_i) (0x00320004 + ((_i) * 8)) /* _i=0...143 */ +#define I40E_GL_FCOEDWRCH_MAX_INDEX 143 +#define I40E_GL_FCOEDWRCH_FCOEDWRCH_SHIFT 0 +#define I40E_GL_FCOEDWRCH_FCOEDWRCH_MASK (0xFFFF << I40E_GL_FCOEDWRCH_FCOEDWRCH_SHIFT) +#define I40E_GL_FCOEDWRCL(_i) (0x00320000 + ((_i) * 8)) /* _i=0...143 */ +#define I40E_GL_FCOEDWRCL_MAX_INDEX 143 +#define I40E_GL_FCOEDWRCL_FCOEDWRCL_SHIFT 0 +#define I40E_GL_FCOEDWRCL_FCOEDWRCL_MASK (0xFFFFFFFF << I40E_GL_FCOEDWRCL_FCOEDWRCL_SHIFT) +#define I40E_GL_FCOEDWTCH(_i) (0x00348084 + ((_i) * 8)) /* _i=0...143 */ +#define I40E_GL_FCOEDWTCH_MAX_INDEX 143 +#define I40E_GL_FCOEDWTCH_FCOEDWTCH_SHIFT 0 +#define I40E_GL_FCOEDWTCH_FCOEDWTCH_MASK (0xFFFF << I40E_GL_FCOEDWTCH_FCOEDWTCH_SHIFT) +#define I40E_GL_FCOEDWTCL(_i) (0x00348080 + ((_i) * 8)) /* _i=0...143 */ +#define I40E_GL_FCOEDWTCL_MAX_INDEX 143 +#define I40E_GL_FCOEDWTCL_FCOEDWTCL_SHIFT 0 +#define I40E_GL_FCOEDWTCL_FCOEDWTCL_MASK (0xFFFFFFFF << I40E_GL_FCOEDWTCL_FCOEDWTCL_SHIFT) +#define I40E_GL_FCOELAST(_i) (0x00314000 + ((_i) * 8)) /* _i=0...143 */ +#define I40E_GL_FCOELAST_MAX_INDEX 143 +#define I40E_GL_FCOELAST_FCOELAST_SHIFT 0 +#define I40E_GL_FCOELAST_FCOELAST_MASK (0xFFFFFFFF << I40E_GL_FCOELAST_FCOELAST_SHIFT) +#define I40E_GL_FCOEPRC(_i) (0x00315200 + ((_i) * 8)) /* _i=0...143 */ +#define I40E_GL_FCOEPRC_MAX_INDEX 143 +#define I40E_GL_FCOEPRC_FCOEPRC_SHIFT 0 +#define I40E_GL_FCOEPRC_FCOEPRC_MASK (0xFFFFFFFF << I40E_GL_FCOEPRC_FCOEPRC_SHIFT) +#define I40E_GL_FCOEPTC(_i) (0x00344C00 + ((_i) * 8)) /* _i=0...143 */ +#define I40E_GL_FCOEPTC_MAX_INDEX 143 +#define I40E_GL_FCOEPTC_FCOEPTC_SHIFT 0 +#define I40E_GL_FCOEPTC_FCOEPTC_MASK (0xFFFFFFFF << I40E_GL_FCOEPTC_FCOEPTC_SHIFT) +#define I40E_GL_FCOERPDC(_i) (0x00324000 + ((_i) * 8)) /* _i=0...143 */ +#define I40E_GL_FCOERPDC_MAX_INDEX 143 +#define I40E_GL_FCOERPDC_FCOERPDC_SHIFT 0 +#define I40E_GL_FCOERPDC_FCOERPDC_MASK (0xFFFFFFFF << I40E_GL_FCOERPDC_FCOERPDC_SHIFT) +#define I40E_GLPRT_BPRCH(_i) (0x003005E4 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_BPRCH_MAX_INDEX 3 +#define I40E_GLPRT_BPRCH_UPRCH_SHIFT 0 +#define I40E_GLPRT_BPRCH_UPRCH_MASK (0xFFFF << I40E_GLPRT_BPRCH_UPRCH_SHIFT) +#define I40E_GLPRT_BPRCL(_i) (0x003005E0 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_BPRCL_MAX_INDEX 3 +#define I40E_GLPRT_BPRCL_UPRCH_SHIFT 0 +#define I40E_GLPRT_BPRCL_UPRCH_MASK (0xFFFFFFFF << I40E_GLPRT_BPRCL_UPRCH_SHIFT) +#define I40E_GLPRT_BPTCH(_i) (0x00300A04 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_BPTCH_MAX_INDEX 3 +#define I40E_GLPRT_BPTCH_UPRCH_SHIFT 0 +#define I40E_GLPRT_BPTCH_UPRCH_MASK (0xFFFF << I40E_GLPRT_BPTCH_UPRCH_SHIFT) +#define I40E_GLPRT_BPTCL(_i) (0x00300A00 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_BPTCL_MAX_INDEX 3 +#define I40E_GLPRT_BPTCL_UPRCH_SHIFT 0 +#define I40E_GLPRT_BPTCL_UPRCH_MASK (0xFFFFFFFF << I40E_GLPRT_BPTCL_UPRCH_SHIFT) +#define I40E_GLPRT_CRCERRS(_i) (0x00300080 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_CRCERRS_MAX_INDEX 3 +#define I40E_GLPRT_CRCERRS_CRCERRS_SHIFT 0 +#define I40E_GLPRT_CRCERRS_CRCERRS_MASK (0xFFFFFFFF << I40E_GLPRT_CRCERRS_CRCERRS_SHIFT) +#define I40E_GLPRT_GORCH(_i) (0x00300004 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_GORCH_MAX_INDEX 3 +#define I40E_GLPRT_GORCH_GORCH_SHIFT 0 +#define I40E_GLPRT_GORCH_GORCH_MASK (0xFFFF << I40E_GLPRT_GORCH_GORCH_SHIFT) +#define I40E_GLPRT_GORCL(_i) (0x00300000 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_GORCL_MAX_INDEX 3 +#define I40E_GLPRT_GORCL_GORCL_SHIFT 0 +#define I40E_GLPRT_GORCL_GORCL_MASK (0xFFFFFFFF << I40E_GLPRT_GORCL_GORCL_SHIFT) +#define I40E_GLPRT_GOTCH(_i) (0x00300684 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_GOTCH_MAX_INDEX 3 +#define I40E_GLPRT_GOTCH_GOTCH_SHIFT 0 +#define I40E_GLPRT_GOTCH_GOTCH_MASK (0xFFFF << I40E_GLPRT_GOTCH_GOTCH_SHIFT) +#define I40E_GLPRT_GOTCL(_i) (0x00300680 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_GOTCL_MAX_INDEX 3 +#define I40E_GLPRT_GOTCL_GOTCL_SHIFT 0 +#define I40E_GLPRT_GOTCL_GOTCL_MASK (0xFFFFFFFF << I40E_GLPRT_GOTCL_GOTCL_SHIFT) +#define I40E_GLPRT_ILLERRC(_i) (0x003000E0 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_ILLERRC_MAX_INDEX 3 +#define I40E_GLPRT_ILLERRC_ILLERRC_SHIFT 0 +#define I40E_GLPRT_ILLERRC_ILLERRC_MASK (0xFFFFFFFF << I40E_GLPRT_ILLERRC_ILLERRC_SHIFT) +#define I40E_GLPRT_LDPC(_i) (0x00300620 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_LDPC_MAX_INDEX 3 +#define I40E_GLPRT_LDPC_LDPC_SHIFT 0 +#define I40E_GLPRT_LDPC_LDPC_MASK (0xFFFFFFFF << I40E_GLPRT_LDPC_LDPC_SHIFT) +#define I40E_GLPRT_LXOFFRXC(_i) (0x00300160 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_LXOFFRXC_MAX_INDEX 3 +#define I40E_GLPRT_LXOFFRXC_LXOFFRXCNT_SHIFT 0 +#define I40E_GLPRT_LXOFFRXC_LXOFFRXCNT_MASK (0xFFFFFFFF << I40E_GLPRT_LXOFFRXC_LXOFFRXCNT_SHIFT) +#define I40E_GLPRT_LXOFFTXC(_i) (0x003009A0 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_LXOFFTXC_MAX_INDEX 3 +#define I40E_GLPRT_LXOFFTXC_LXOFFTXC_SHIFT 0 +#define I40E_GLPRT_LXOFFTXC_LXOFFTXC_MASK (0xFFFFFFFF << I40E_GLPRT_LXOFFTXC_LXOFFTXC_SHIFT) +#define I40E_GLPRT_LXONRXC(_i) (0x00300140 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_LXONRXC_MAX_INDEX 3 +#define I40E_GLPRT_LXONRXC_LXONRXCNT_SHIFT 0 +#define I40E_GLPRT_LXONRXC_LXONRXCNT_MASK (0xFFFFFFFF << I40E_GLPRT_LXONRXC_LXONRXCNT_SHIFT) +#define I40E_GLPRT_LXONTXC(_i) (0x00300980 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_LXONTXC_MAX_INDEX 3 +#define I40E_GLPRT_LXONTXC_LXONTXC_SHIFT 0 +#define I40E_GLPRT_LXONTXC_LXONTXC_MASK (0xFFFFFFFF << I40E_GLPRT_LXONTXC_LXONTXC_SHIFT) +#define I40E_GLPRT_MLFC(_i) (0x00300020 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_MLFC_MAX_INDEX 3 +#define I40E_GLPRT_MLFC_MLFC_SHIFT 0 +#define I40E_GLPRT_MLFC_MLFC_MASK (0xFFFFFFFF << I40E_GLPRT_MLFC_MLFC_SHIFT) +#define I40E_GLPRT_MPRCH(_i) (0x003005C4 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_MPRCH_MAX_INDEX 3 +#define I40E_GLPRT_MPRCH_MPRCH_SHIFT 0 +#define I40E_GLPRT_MPRCH_MPRCH_MASK (0xFFFF << I40E_GLPRT_MPRCH_MPRCH_SHIFT) +#define I40E_GLPRT_MPRCL(_i) (0x003005C0 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_MPRCL_MAX_INDEX 3 +#define I40E_GLPRT_MPRCL_MPRCL_SHIFT 0 +#define I40E_GLPRT_MPRCL_MPRCL_MASK (0xFFFFFFFF << I40E_GLPRT_MPRCL_MPRCL_SHIFT) +#define I40E_GLPRT_MPTCH(_i) (0x003009E4 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_MPTCH_MAX_INDEX 3 +#define I40E_GLPRT_MPTCH_MPTCH_SHIFT 0 +#define I40E_GLPRT_MPTCH_MPTCH_MASK (0xFFFF << I40E_GLPRT_MPTCH_MPTCH_SHIFT) +#define I40E_GLPRT_MPTCL(_i) (0x003009E0 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_MPTCL_MAX_INDEX 3 +#define I40E_GLPRT_MPTCL_MPTCL_SHIFT 0 +#define I40E_GLPRT_MPTCL_MPTCL_MASK (0xFFFFFFFF << I40E_GLPRT_MPTCL_MPTCL_SHIFT) +#define I40E_GLPRT_MRFC(_i) (0x00300040 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_MRFC_MAX_INDEX 3 +#define I40E_GLPRT_MRFC_MRFC_SHIFT 0 +#define I40E_GLPRT_MRFC_MRFC_MASK (0xFFFFFFFF << I40E_GLPRT_MRFC_MRFC_SHIFT) +#define I40E_GLPRT_PRC1023H(_i) (0x00300504 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_PRC1023H_MAX_INDEX 3 +#define I40E_GLPRT_PRC1023H_PRC1023H_SHIFT 0 +#define I40E_GLPRT_PRC1023H_PRC1023H_MASK (0xFFFF << I40E_GLPRT_PRC1023H_PRC1023H_SHIFT) +#define I40E_GLPRT_PRC1023L(_i) (0x00300500 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_PRC1023L_MAX_INDEX 3 +#define I40E_GLPRT_PRC1023L_PRC1023L_SHIFT 0 +#define I40E_GLPRT_PRC1023L_PRC1023L_MASK (0xFFFFFFFF << I40E_GLPRT_PRC1023L_PRC1023L_SHIFT) +#define I40E_GLPRT_PRC127H(_i) (0x003004A4 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_PRC127H_MAX_INDEX 3 +#define I40E_GLPRT_PRC127H_PRC127H_SHIFT 0 +#define I40E_GLPRT_PRC127H_PRC127H_MASK (0xFFFF << I40E_GLPRT_PRC127H_PRC127H_SHIFT) +#define I40E_GLPRT_PRC127L(_i) (0x003004A0 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_PRC127L_MAX_INDEX 3 +#define I40E_GLPRT_PRC127L_PRC127L_SHIFT 0 +#define I40E_GLPRT_PRC127L_PRC127L_MASK (0xFFFFFFFF << I40E_GLPRT_PRC127L_PRC127L_SHIFT) +#define I40E_GLPRT_PRC1522H(_i) (0x00300524 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_PRC1522H_MAX_INDEX 3 +#define I40E_GLPRT_PRC1522H_PRC1522H_SHIFT 0 +#define I40E_GLPRT_PRC1522H_PRC1522H_MASK (0xFFFF << I40E_GLPRT_PRC1522H_PRC1522H_SHIFT) +#define I40E_GLPRT_PRC1522L(_i) (0x00300520 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_PRC1522L_MAX_INDEX 3 +#define I40E_GLPRT_PRC1522L_PRC1522L_SHIFT 0 +#define I40E_GLPRT_PRC1522L_PRC1522L_MASK (0xFFFFFFFF << I40E_GLPRT_PRC1522L_PRC1522L_SHIFT) +#define I40E_GLPRT_PRC255H(_i) (0x003004C4 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_PRC255H_MAX_INDEX 3 +#define I40E_GLPRT_PRC255H_PRTPRC255H_SHIFT 0 +#define I40E_GLPRT_PRC255H_PRTPRC255H_MASK (0xFFFF << I40E_GLPRT_PRC255H_PRTPRC255H_SHIFT) +#define I40E_GLPRT_PRC255L(_i) (0x003004C0 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_PRC255L_MAX_INDEX 3 +#define I40E_GLPRT_PRC255L_PRC255L_SHIFT 0 +#define I40E_GLPRT_PRC255L_PRC255L_MASK (0xFFFFFFFF << I40E_GLPRT_PRC255L_PRC255L_SHIFT) +#define I40E_GLPRT_PRC511H(_i) (0x003004E4 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_PRC511H_MAX_INDEX 3 +#define I40E_GLPRT_PRC511H_PRC511H_SHIFT 0 +#define I40E_GLPRT_PRC511H_PRC511H_MASK (0xFFFF << I40E_GLPRT_PRC511H_PRC511H_SHIFT) +#define I40E_GLPRT_PRC511L(_i) (0x003004E0 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_PRC511L_MAX_INDEX 3 +#define I40E_GLPRT_PRC511L_PRC511L_SHIFT 0 +#define I40E_GLPRT_PRC511L_PRC511L_MASK (0xFFFFFFFF << I40E_GLPRT_PRC511L_PRC511L_SHIFT) +#define I40E_GLPRT_PRC64H(_i) (0x00300484 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_PRC64H_MAX_INDEX 3 +#define I40E_GLPRT_PRC64H_PRC64H_SHIFT 0 +#define I40E_GLPRT_PRC64H_PRC64H_MASK (0xFFFF << I40E_GLPRT_PRC64H_PRC64H_SHIFT) +#define I40E_GLPRT_PRC64L(_i) (0x00300480 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_PRC64L_MAX_INDEX 3 +#define I40E_GLPRT_PRC64L_PRC64L_SHIFT 0 +#define I40E_GLPRT_PRC64L_PRC64L_MASK (0xFFFFFFFF << I40E_GLPRT_PRC64L_PRC64L_SHIFT) +#define I40E_GLPRT_PRC9522H(_i) (0x00300544 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_PRC9522H_MAX_INDEX 3 +#define I40E_GLPRT_PRC9522H_PRC1522H_SHIFT 0 +#define I40E_GLPRT_PRC9522H_PRC1522H_MASK (0xFFFF << I40E_GLPRT_PRC9522H_PRC1522H_SHIFT) +#define I40E_GLPRT_PRC9522L(_i) (0x00300540 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_PRC9522L_MAX_INDEX 3 +#define I40E_GLPRT_PRC9522L_PRC1522L_SHIFT 0 +#define I40E_GLPRT_PRC9522L_PRC1522L_MASK (0xFFFFFFFF << I40E_GLPRT_PRC9522L_PRC1522L_SHIFT) +#define I40E_GLPRT_PTC1023H(_i) (0x00300724 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_PTC1023H_MAX_INDEX 3 +#define I40E_GLPRT_PTC1023H_PTC1023H_SHIFT 0 +#define I40E_GLPRT_PTC1023H_PTC1023H_MASK (0xFFFF << I40E_GLPRT_PTC1023H_PTC1023H_SHIFT) +#define I40E_GLPRT_PTC1023L(_i) (0x00300720 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_PTC1023L_MAX_INDEX 3 +#define I40E_GLPRT_PTC1023L_PTC1023L_SHIFT 0 +#define I40E_GLPRT_PTC1023L_PTC1023L_MASK (0xFFFFFFFF << I40E_GLPRT_PTC1023L_PTC1023L_SHIFT) +#define I40E_GLPRT_PTC127H(_i) (0x003006C4 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_PTC127H_MAX_INDEX 3 +#define I40E_GLPRT_PTC127H_PTC127H_SHIFT 0 +#define I40E_GLPRT_PTC127H_PTC127H_MASK (0xFFFF << I40E_GLPRT_PTC127H_PTC127H_SHIFT) +#define I40E_GLPRT_PTC127L(_i) (0x003006C0 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_PTC127L_MAX_INDEX 3 +#define I40E_GLPRT_PTC127L_PTC127L_SHIFT 0 +#define I40E_GLPRT_PTC127L_PTC127L_MASK (0xFFFFFFFF << I40E_GLPRT_PTC127L_PTC127L_SHIFT) +#define I40E_GLPRT_PTC1522H(_i) (0x00300744 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_PTC1522H_MAX_INDEX 3 +#define I40E_GLPRT_PTC1522H_PTC1522H_SHIFT 0 +#define I40E_GLPRT_PTC1522H_PTC1522H_MASK (0xFFFF << I40E_GLPRT_PTC1522H_PTC1522H_SHIFT) +#define I40E_GLPRT_PTC1522L(_i) (0x00300740 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_PTC1522L_MAX_INDEX 3 +#define I40E_GLPRT_PTC1522L_PTC1522L_SHIFT 0 +#define I40E_GLPRT_PTC1522L_PTC1522L_MASK (0xFFFFFFFF << I40E_GLPRT_PTC1522L_PTC1522L_SHIFT) +#define I40E_GLPRT_PTC255H(_i) (0x003006E4 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_PTC255H_MAX_INDEX 3 +#define I40E_GLPRT_PTC255H_PTC255H_SHIFT 0 +#define I40E_GLPRT_PTC255H_PTC255H_MASK (0xFFFF << I40E_GLPRT_PTC255H_PTC255H_SHIFT) +#define I40E_GLPRT_PTC255L(_i) (0x003006E0 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_PTC255L_MAX_INDEX 3 +#define I40E_GLPRT_PTC255L_PTC255L_SHIFT 0 +#define I40E_GLPRT_PTC255L_PTC255L_MASK (0xFFFFFFFF << I40E_GLPRT_PTC255L_PTC255L_SHIFT) +#define I40E_GLPRT_PTC511H(_i) (0x00300704 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_PTC511H_MAX_INDEX 3 +#define I40E_GLPRT_PTC511H_PTC511H_SHIFT 0 +#define I40E_GLPRT_PTC511H_PTC511H_MASK (0xFFFF << I40E_GLPRT_PTC511H_PTC511H_SHIFT) +#define I40E_GLPRT_PTC511L(_i) (0x00300700 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_PTC511L_MAX_INDEX 3 +#define I40E_GLPRT_PTC511L_PTC511L_SHIFT 0 +#define I40E_GLPRT_PTC511L_PTC511L_MASK (0xFFFFFFFF << I40E_GLPRT_PTC511L_PTC511L_SHIFT) +#define I40E_GLPRT_PTC64H(_i) (0x003006A4 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_PTC64H_MAX_INDEX 3 +#define I40E_GLPRT_PTC64H_PTC64H_SHIFT 0 +#define I40E_GLPRT_PTC64H_PTC64H_MASK (0xFFFF << I40E_GLPRT_PTC64H_PTC64H_SHIFT) +#define I40E_GLPRT_PTC64L(_i) (0x003006A0 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_PTC64L_MAX_INDEX 3 +#define I40E_GLPRT_PTC64L_PTC64L_SHIFT 0 +#define I40E_GLPRT_PTC64L_PTC64L_MASK (0xFFFFFFFF << I40E_GLPRT_PTC64L_PTC64L_SHIFT) +#define I40E_GLPRT_PTC9522H(_i) (0x00300764 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_PTC9522H_MAX_INDEX 3 +#define I40E_GLPRT_PTC9522H_PTC9522H_SHIFT 0 +#define I40E_GLPRT_PTC9522H_PTC9522H_MASK (0xFFFF << I40E_GLPRT_PTC9522H_PTC9522H_SHIFT) +#define I40E_GLPRT_PTC9522L(_i) (0x00300760 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_PTC9522L_MAX_INDEX 3 +#define I40E_GLPRT_PTC9522L_PTC9522L_SHIFT 0 +#define I40E_GLPRT_PTC9522L_PTC9522L_MASK (0xFFFFFFFF << I40E_GLPRT_PTC9522L_PTC9522L_SHIFT) +#define I40E_GLPRT_PXOFFRXC(_i, _j) (0x00300280 + ((_i) * 8 + (_j) * 32)) +#define I40E_GLPRT_PXOFFRXC_MAX_INDEX 3 +#define I40E_GLPRT_PXOFFRXC_PRPXOFFRXCNT_SHIFT 0 +#define I40E_GLPRT_PXOFFRXC_PRPXOFFRXCNT_MASK (0xFFFFFFFF << I40E_GLPRT_PXOFFRXC_PRPXOFFRXCNT_SHIFT) +#define I40E_GLPRT_PXOFFTXC(_i, _j) (0x00300880 + ((_i) * 8 + (_j) * 32)) +#define I40E_GLPRT_PXOFFTXC_MAX_INDEX 3 +#define I40E_GLPRT_PXOFFTXC_PRPXOFFTXCNT_SHIFT 0 +#define I40E_GLPRT_PXOFFTXC_PRPXOFFTXCNT_MASK (0xFFFFFFFF << I40E_GLPRT_PXOFFTXC_PRPXOFFTXCNT_SHIFT) +#define I40E_GLPRT_PXONRXC(_i, _j) (0x00300180 + ((_i) * 8 + (_j) * 32)) +#define I40E_GLPRT_PXONRXC_MAX_INDEX 3 +#define I40E_GLPRT_PXONRXC_PRPXONRXCNT_SHIFT 0 +#define I40E_GLPRT_PXONRXC_PRPXONRXCNT_MASK (0xFFFFFFFF << I40E_GLPRT_PXONRXC_PRPXONRXCNT_SHIFT) +#define I40E_GLPRT_PXONTXC(_i, _j) (0x00300780 + ((_i) * 8 + (_j) * 32)) +#define I40E_GLPRT_PXONTXC_MAX_INDEX 3 +#define I40E_GLPRT_PXONTXC_PRPXONTXC_SHIFT 0 +#define I40E_GLPRT_PXONTXC_PRPXONTXC_MASK (0xFFFFFFFF << I40E_GLPRT_PXONTXC_PRPXONTXC_SHIFT) +#define I40E_GLPRT_RDPC(_i) (0x00300600 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_RDPC_MAX_INDEX 3 +#define I40E_GLPRT_RDPC_RDPC_SHIFT 0 +#define I40E_GLPRT_RDPC_RDPC_MASK (0xFFFFFFFF << I40E_GLPRT_RDPC_RDPC_SHIFT) +#define I40E_GLPRT_RFC(_i) (0x00300560 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_RFC_MAX_INDEX 3 +#define I40E_GLPRT_RFC_RFC_SHIFT 0 +#define I40E_GLPRT_RFC_RFC_MASK (0xFFFFFFFF << I40E_GLPRT_RFC_RFC_SHIFT) +#define I40E_GLPRT_RJC(_i) (0x00300580 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_RJC_MAX_INDEX 3 +#define I40E_GLPRT_RJC_RJC_SHIFT 0 +#define I40E_GLPRT_RJC_RJC_MASK (0xFFFFFFFF << I40E_GLPRT_RJC_RJC_SHIFT) +#define I40E_GLPRT_RLEC(_i) (0x003000A0 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_RLEC_MAX_INDEX 3 +#define I40E_GLPRT_RLEC_RLEC_SHIFT 0 +#define I40E_GLPRT_RLEC_RLEC_MASK (0xFFFFFFFF << I40E_GLPRT_RLEC_RLEC_SHIFT) +#define I40E_GLPRT_ROC(_i) (0x00300120 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_ROC_MAX_INDEX 3 +#define I40E_GLPRT_ROC_ROC_SHIFT 0 +#define I40E_GLPRT_ROC_ROC_MASK (0xFFFFFFFF << I40E_GLPRT_ROC_ROC_SHIFT) +#define I40E_GLPRT_RUC(_i) (0x00300100 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_RUC_MAX_INDEX 3 +#define I40E_GLPRT_RUC_RUC_SHIFT 0 +#define I40E_GLPRT_RUC_RUC_MASK (0xFFFFFFFF << I40E_GLPRT_RUC_RUC_SHIFT) +#define I40E_GLPRT_RUPP(_i) (0x00300660 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_RUPP_MAX_INDEX 3 +#define I40E_GLPRT_RUPP_RUPP_SHIFT 0 +#define I40E_GLPRT_RUPP_RUPP_MASK (0xFFFFFFFF << I40E_GLPRT_RUPP_RUPP_SHIFT) +#define I40E_GLPRT_RXON2OFFCNT(_i, _j) (0x00300380 + ((_i) * 8 + (_j) * 32)) +#define I40E_GLPRT_RXON2OFFCNT_MAX_INDEX 3 +#define I40E_GLPRT_RXON2OFFCNT_PRRXON2OFFCNT_SHIFT 0 +#define I40E_GLPRT_RXON2OFFCNT_PRRXON2OFFCNT_MASK (0xFFFFFFFF << I40E_GLPRT_RXON2OFFCNT_PRRXON2OFFCNT_SHIFT) +#define I40E_GLPRT_STDC(_i) (0x00300640 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_STDC_MAX_INDEX 3 +#define I40E_GLPRT_STDC_STDC_SHIFT 0 +#define I40E_GLPRT_STDC_STDC_MASK (0xFFFFFFFF << I40E_GLPRT_STDC_STDC_SHIFT) +#define I40E_GLPRT_TDOLD(_i) (0x00300A20 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_TDOLD_MAX_INDEX 3 +#define I40E_GLPRT_TDOLD_GLPRT_TDOLD_SHIFT 0 +#define I40E_GLPRT_TDOLD_GLPRT_TDOLD_MASK (0xFFFFFFFF << I40E_GLPRT_TDOLD_GLPRT_TDOLD_SHIFT) +#define I40E_GLPRT_TDPC(_i) (0x00375400 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_TDPC_MAX_INDEX 3 +#define I40E_GLPRT_TDPC_TDPC_SHIFT 0 +#define I40E_GLPRT_TDPC_TDPC_MASK (0xFFFFFFFF << I40E_GLPRT_TDPC_TDPC_SHIFT) +#define I40E_GLPRT_UPRCH(_i) (0x003005A4 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_UPRCH_MAX_INDEX 3 +#define I40E_GLPRT_UPRCH_UPRCH_SHIFT 0 +#define I40E_GLPRT_UPRCH_UPRCH_MASK (0xFFFF << I40E_GLPRT_UPRCH_UPRCH_SHIFT) +#define I40E_GLPRT_UPRCL(_i) (0x003005A0 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_UPRCL_MAX_INDEX 3 +#define I40E_GLPRT_UPRCL_UPRCL_SHIFT 0 +#define I40E_GLPRT_UPRCL_UPRCL_MASK (0xFFFFFFFF << I40E_GLPRT_UPRCL_UPRCL_SHIFT) +#define I40E_GLPRT_UPTCH(_i) (0x003009C4 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_UPTCH_MAX_INDEX 3 +#define I40E_GLPRT_UPTCH_UPTCH_SHIFT 0 +#define I40E_GLPRT_UPTCH_UPTCH_MASK (0xFFFF << I40E_GLPRT_UPTCH_UPTCH_SHIFT) +#define I40E_GLPRT_UPTCL(_i) (0x003009C0 + ((_i) * 8)) /* _i=0...3 */ +#define I40E_GLPRT_UPTCL_MAX_INDEX 3 +#define I40E_GLPRT_UPTCL_VUPTCH_SHIFT 0 +#define I40E_GLPRT_UPTCL_VUPTCH_MASK (0xFFFFFFFF << I40E_GLPRT_UPTCL_VUPTCH_SHIFT) +#define I40E_GLSW_BPRCH(_i) (0x00370104 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLSW_BPRCH_MAX_INDEX 15 +#define I40E_GLSW_BPRCH_BPRCH_SHIFT 0 +#define I40E_GLSW_BPRCH_BPRCH_MASK (0xFFFF << I40E_GLSW_BPRCH_BPRCH_SHIFT) +#define I40E_GLSW_BPRCL(_i) (0x00370100 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLSW_BPRCL_MAX_INDEX 15 +#define I40E_GLSW_BPRCL_BPRCL_SHIFT 0 +#define I40E_GLSW_BPRCL_BPRCL_MASK (0xFFFFFFFF << I40E_GLSW_BPRCL_BPRCL_SHIFT) +#define I40E_GLSW_BPTCH(_i) (0x00340104 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLSW_BPTCH_MAX_INDEX 15 +#define I40E_GLSW_BPTCH_BPTCH_SHIFT 0 +#define I40E_GLSW_BPTCH_BPTCH_MASK (0xFFFF << I40E_GLSW_BPTCH_BPTCH_SHIFT) +#define I40E_GLSW_BPTCL(_i) (0x00340100 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLSW_BPTCL_MAX_INDEX 15 +#define I40E_GLSW_BPTCL_BPTCL_SHIFT 0 +#define I40E_GLSW_BPTCL_BPTCL_MASK (0xFFFFFFFF << I40E_GLSW_BPTCL_BPTCL_SHIFT) +#define I40E_GLSW_GORCH(_i) (0x0035C004 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLSW_GORCH_MAX_INDEX 15 +#define I40E_GLSW_GORCH_GORCH_SHIFT 0 +#define I40E_GLSW_GORCH_GORCH_MASK (0xFFFF << I40E_GLSW_GORCH_GORCH_SHIFT) +#define I40E_GLSW_GORCL(_i) (0x0035c000 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLSW_GORCL_MAX_INDEX 15 +#define I40E_GLSW_GORCL_GORCL_SHIFT 0 +#define I40E_GLSW_GORCL_GORCL_MASK (0xFFFFFFFF << I40E_GLSW_GORCL_GORCL_SHIFT) +#define I40E_GLSW_GOTCH(_i) (0x0032C004 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLSW_GOTCH_MAX_INDEX 15 +#define I40E_GLSW_GOTCH_GOTCH_SHIFT 0 +#define I40E_GLSW_GOTCH_GOTCH_MASK (0xFFFF << I40E_GLSW_GOTCH_GOTCH_SHIFT) +#define I40E_GLSW_GOTCL(_i) (0x0032c000 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLSW_GOTCL_MAX_INDEX 15 +#define I40E_GLSW_GOTCL_GOTCL_SHIFT 0 +#define I40E_GLSW_GOTCL_GOTCL_MASK (0xFFFFFFFF << I40E_GLSW_GOTCL_GOTCL_SHIFT) +#define I40E_GLSW_MPRCH(_i) (0x00370084 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLSW_MPRCH_MAX_INDEX 15 +#define I40E_GLSW_MPRCH_MPRCH_SHIFT 0 +#define I40E_GLSW_MPRCH_MPRCH_MASK (0xFFFF << I40E_GLSW_MPRCH_MPRCH_SHIFT) +#define I40E_GLSW_MPRCL(_i) (0x00370080 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLSW_MPRCL_MAX_INDEX 15 +#define I40E_GLSW_MPRCL_MPRCL_SHIFT 0 +#define I40E_GLSW_MPRCL_MPRCL_MASK (0xFFFFFFFF << I40E_GLSW_MPRCL_MPRCL_SHIFT) +#define I40E_GLSW_MPTCH(_i) (0x00340084 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLSW_MPTCH_MAX_INDEX 15 +#define I40E_GLSW_MPTCH_MPTCH_SHIFT 0 +#define I40E_GLSW_MPTCH_MPTCH_MASK (0xFFFF << I40E_GLSW_MPTCH_MPTCH_SHIFT) +#define I40E_GLSW_MPTCL(_i) (0x00340080 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLSW_MPTCL_MAX_INDEX 15 +#define I40E_GLSW_MPTCL_MPTCL_SHIFT 0 +#define I40E_GLSW_MPTCL_MPTCL_MASK (0xFFFFFFFF << I40E_GLSW_MPTCL_MPTCL_SHIFT) +#define I40E_GLSW_RUPP(_i) (0x00370180 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLSW_RUPP_MAX_INDEX 15 +#define I40E_GLSW_RUPP_RUPP_SHIFT 0 +#define I40E_GLSW_RUPP_RUPP_MASK (0xFFFFFFFF << I40E_GLSW_RUPP_RUPP_SHIFT) +#define I40E_GLSW_TDPC(_i) (0x00348000 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLSW_TDPC_MAX_INDEX 15 +#define I40E_GLSW_TDPC_TDPC_SHIFT 0 +#define I40E_GLSW_TDPC_TDPC_MASK (0xFFFFFFFF << I40E_GLSW_TDPC_TDPC_SHIFT) +#define I40E_GLSW_UPRCH(_i) (0x00370004 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLSW_UPRCH_MAX_INDEX 15 +#define I40E_GLSW_UPRCH_UPRCH_SHIFT 0 +#define I40E_GLSW_UPRCH_UPRCH_MASK (0xFFFF << I40E_GLSW_UPRCH_UPRCH_SHIFT) +#define I40E_GLSW_UPRCL(_i) (0x00370000 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLSW_UPRCL_MAX_INDEX 15 +#define I40E_GLSW_UPRCL_UPRCL_SHIFT 0 +#define I40E_GLSW_UPRCL_UPRCL_MASK (0xFFFFFFFF << I40E_GLSW_UPRCL_UPRCL_SHIFT) +#define I40E_GLSW_UPTCH(_i) (0x00340004 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLSW_UPTCH_MAX_INDEX 15 +#define I40E_GLSW_UPTCH_UPTCH_SHIFT 0 +#define I40E_GLSW_UPTCH_UPTCH_MASK (0xFFFF << I40E_GLSW_UPTCH_UPTCH_SHIFT) +#define I40E_GLSW_UPTCL(_i) (0x00340000 + ((_i) * 8)) /* _i=0...15 */ +#define I40E_GLSW_UPTCL_MAX_INDEX 15 +#define I40E_GLSW_UPTCL_UPTCL_SHIFT 0 +#define I40E_GLSW_UPTCL_UPTCL_MASK (0xFFFFFFFF << I40E_GLSW_UPTCL_UPTCL_SHIFT) +#define I40E_GLV_BPRCH(_i) (0x0036D804 + ((_i) * 8)) /* _i=0...383 */ +#define I40E_GLV_BPRCH_MAX_INDEX 383 +#define I40E_GLV_BPRCH_BPRCH_SHIFT 0 +#define I40E_GLV_BPRCH_BPRCH_MASK (0xFFFF << I40E_GLV_BPRCH_BPRCH_SHIFT) +#define I40E_GLV_BPRCL(_i) (0x0036d800 + ((_i) * 8)) /* _i=0...383 */ +#define I40E_GLV_BPRCL_MAX_INDEX 383 +#define I40E_GLV_BPRCL_BPRCL_SHIFT 0 +#define I40E_GLV_BPRCL_BPRCL_MASK (0xFFFFFFFF << I40E_GLV_BPRCL_BPRCL_SHIFT) +#define I40E_GLV_BPTCH(_i) (0x0033D804 + ((_i) * 8)) /* _i=0...383 */ +#define I40E_GLV_BPTCH_MAX_INDEX 383 +#define I40E_GLV_BPTCH_BPTCH_SHIFT 0 +#define I40E_GLV_BPTCH_BPTCH_MASK (0xFFFF << I40E_GLV_BPTCH_BPTCH_SHIFT) +#define I40E_GLV_BPTCL(_i) (0x0033d800 + ((_i) * 8)) /* _i=0...383 */ +#define I40E_GLV_BPTCL_MAX_INDEX 383 +#define I40E_GLV_BPTCL_BPTCL_SHIFT 0 +#define I40E_GLV_BPTCL_BPTCL_MASK (0xFFFFFFFF << I40E_GLV_BPTCL_BPTCL_SHIFT) +#define I40E_GLV_GORCH(_i) (0x00358004 + ((_i) * 8)) /* _i=0...383 */ +#define I40E_GLV_GORCH_MAX_INDEX 383 +#define I40E_GLV_GORCH_GORCH_SHIFT 0 +#define I40E_GLV_GORCH_GORCH_MASK (0xFFFF << I40E_GLV_GORCH_GORCH_SHIFT) +#define I40E_GLV_GORCL(_i) (0x00358000 + ((_i) * 8)) /* _i=0...383 */ +#define I40E_GLV_GORCL_MAX_INDEX 383 +#define I40E_GLV_GORCL_GORCL_SHIFT 0 +#define I40E_GLV_GORCL_GORCL_MASK (0xFFFFFFFF << I40E_GLV_GORCL_GORCL_SHIFT) +#define I40E_GLV_GOTCH(_i) (0x00328004 + ((_i) * 8)) /* _i=0...383 */ +#define I40E_GLV_GOTCH_MAX_INDEX 383 +#define I40E_GLV_GOTCH_GOTCH_SHIFT 0 +#define I40E_GLV_GOTCH_GOTCH_MASK (0xFFFF << I40E_GLV_GOTCH_GOTCH_SHIFT) +#define I40E_GLV_GOTCL(_i) (0x00328000 + ((_i) * 8)) /* _i=0...383 */ +#define I40E_GLV_GOTCL_MAX_INDEX 383 +#define I40E_GLV_GOTCL_GOTCL_SHIFT 0 +#define I40E_GLV_GOTCL_GOTCL_MASK (0xFFFFFFFF << I40E_GLV_GOTCL_GOTCL_SHIFT) +#define I40E_GLV_MPRCH(_i) (0x0036CC04 + ((_i) * 8)) /* _i=0...383 */ +#define I40E_GLV_MPRCH_MAX_INDEX 383 +#define I40E_GLV_MPRCH_MPRCH_SHIFT 0 +#define I40E_GLV_MPRCH_MPRCH_MASK (0xFFFF << I40E_GLV_MPRCH_MPRCH_SHIFT) +#define I40E_GLV_MPRCL(_i) (0x0036cc00 + ((_i) * 8)) /* _i=0...383 */ +#define I40E_GLV_MPRCL_MAX_INDEX 383 +#define I40E_GLV_MPRCL_MPRCL_SHIFT 0 +#define I40E_GLV_MPRCL_MPRCL_MASK (0xFFFFFFFF << I40E_GLV_MPRCL_MPRCL_SHIFT) +#define I40E_GLV_MPTCH(_i) (0x0033CC04 + ((_i) * 8)) /* _i=0...383 */ +#define I40E_GLV_MPTCH_MAX_INDEX 383 +#define I40E_GLV_MPTCH_MPTCH_SHIFT 0 +#define I40E_GLV_MPTCH_MPTCH_MASK (0xFFFF << I40E_GLV_MPTCH_MPTCH_SHIFT) +#define I40E_GLV_MPTCL(_i) (0x0033cc00 + ((_i) * 8)) /* _i=0...383 */ +#define I40E_GLV_MPTCL_MAX_INDEX 383 +#define I40E_GLV_MPTCL_MPTCL_SHIFT 0 +#define I40E_GLV_MPTCL_MPTCL_MASK (0xFFFFFFFF << I40E_GLV_MPTCL_MPTCL_SHIFT) +#define I40E_GLV_RDPC(_i) (0x00310000 + ((_i) * 8)) /* _i=0...383 */ +#define I40E_GLV_RDPC_MAX_INDEX 383 +#define I40E_GLV_RDPC_RDPC_SHIFT 0 +#define I40E_GLV_RDPC_RDPC_MASK (0xFFFFFFFF << I40E_GLV_RDPC_RDPC_SHIFT) +#define I40E_GLV_RUPP(_i) (0x0036E400 + ((_i) * 8)) /* _i=0...383 */ +#define I40E_GLV_RUPP_MAX_INDEX 383 +#define I40E_GLV_RUPP_RUPP_SHIFT 0 +#define I40E_GLV_RUPP_RUPP_MASK (0xFFFFFFFF << I40E_GLV_RUPP_RUPP_SHIFT) +#define I40E_GLV_TEPC(_VSI) (0x00344000 + ((_VSI) * 8)) /* _i=0...383 */ +#define I40E_GLV_TEPC_MAX_INDEX 383 +#define I40E_GLV_TEPC_TEPC_SHIFT 0 +#define I40E_GLV_TEPC_TEPC_MASK (0xFFFFFFFF << I40E_GLV_TEPC_TEPC_SHIFT) +#define I40E_GLV_UPRCH(_i) (0x0036C004 + ((_i) * 8)) /* _i=0...383 */ +#define I40E_GLV_UPRCH_MAX_INDEX 383 +#define I40E_GLV_UPRCH_UPRCH_SHIFT 0 +#define I40E_GLV_UPRCH_UPRCH_MASK (0xFFFF << I40E_GLV_UPRCH_UPRCH_SHIFT) +#define I40E_GLV_UPRCL(_i) (0x0036c000 + ((_i) * 8)) /* _i=0...383 */ +#define I40E_GLV_UPRCL_MAX_INDEX 383 +#define I40E_GLV_UPRCL_UPRCL_SHIFT 0 +#define I40E_GLV_UPRCL_UPRCL_MASK (0xFFFFFFFF << I40E_GLV_UPRCL_UPRCL_SHIFT) +#define I40E_GLV_UPTCH(_i) (0x0033C004 + ((_i) * 8)) /* _i=0...383 */ +#define I40E_GLV_UPTCH_MAX_INDEX 383 +#define I40E_GLV_UPTCH_GLVUPTCH_SHIFT 0 +#define I40E_GLV_UPTCH_GLVUPTCH_MASK (0xFFFF << I40E_GLV_UPTCH_GLVUPTCH_SHIFT) +#define I40E_GLV_UPTCL(_i) (0x0033c000 + ((_i) * 8)) /* _i=0...383 */ +#define I40E_GLV_UPTCL_MAX_INDEX 383 +#define I40E_GLV_UPTCL_UPTCL_SHIFT 0 +#define I40E_GLV_UPTCL_UPTCL_MASK (0xFFFFFFFF << I40E_GLV_UPTCL_UPTCL_SHIFT) +#define I40E_GLVEBTC_RBCH(_i, _j) (0x00364004 + ((_i) * 8 + (_j) * 64)) /* _i=0...7, _j=0...15 */ +#define I40E_GLVEBTC_RBCH_MAX_INDEX 7 +#define I40E_GLVEBTC_RBCH_TCBCH_SHIFT 0 +#define I40E_GLVEBTC_RBCH_TCBCH_MASK (0xFFFF << I40E_GLVEBTC_RBCH_TCBCH_SHIFT) +#define I40E_GLVEBTC_RBCL(_i, _j) (0x00364000 + ((_i) * 8 + (_j) * 64)) /* _i=0...7, _j=0...15 */ +#define I40E_GLVEBTC_RBCL_MAX_INDEX 7 +#define I40E_GLVEBTC_RBCL_TCBCL_SHIFT 0 +#define I40E_GLVEBTC_RBCL_TCBCL_MASK (0xFFFFFFFF << I40E_GLVEBTC_RBCL_TCBCL_SHIFT) +#define I40E_GLVEBTC_RPCH(_i, _j) (0x00368004 + ((_i) * 8 + (_j) * 64)) /* _i=0...7, _j=0...15 */ +#define I40E_GLVEBTC_RPCH_MAX_INDEX 7 +#define I40E_GLVEBTC_RPCH_TCPCH_SHIFT 0 +#define I40E_GLVEBTC_RPCH_TCPCH_MASK (0xFFFF << I40E_GLVEBTC_RPCH_TCPCH_SHIFT) +#define I40E_GLVEBTC_RPCL(_i, _j) (0x00368000 + ((_i) * 8 + (_j) * 64)) /* _i=0...7, _j=0...15 */ +#define I40E_GLVEBTC_RPCL_MAX_INDEX 7 +#define I40E_GLVEBTC_RPCL_TCPCL_SHIFT 0 +#define I40E_GLVEBTC_RPCL_TCPCL_MASK (0xFFFFFFFF << I40E_GLVEBTC_RPCL_TCPCL_SHIFT) +#define I40E_GLVEBTC_TBCH(_i, _j) (0x00334004 + ((_i) * 8 + (_j) * 64)) /* _i=0...7, _j=0...15 */ +#define I40E_GLVEBTC_TBCH_MAX_INDEX 7 +#define I40E_GLVEBTC_TBCH_TCBCH_SHIFT 0 +#define I40E_GLVEBTC_TBCH_TCBCH_MASK (0xFFFF << I40E_GLVEBTC_TBCH_TCBCH_SHIFT) +#define I40E_GLVEBTC_TBCL(_i, _j) (0x00334000 + ((_i) * 8 + (_j) * 64)) /* _i=0...7, _j=0...15 */ +#define I40E_GLVEBTC_TBCL_MAX_INDEX 7 +#define I40E_GLVEBTC_TBCL_TCBCL_SHIFT 0 +#define I40E_GLVEBTC_TBCL_TCBCL_MASK (0xFFFFFFFF << I40E_GLVEBTC_TBCL_TCBCL_SHIFT) +#define I40E_GLVEBTC_TPCH(_i, _j) (0x00338004 + ((_i) * 8 + (_j) * 64)) /* _i=0...7, _j=0...15 */ +#define I40E_GLVEBTC_TPCH_MAX_INDEX 7 +#define I40E_GLVEBTC_TPCH_TCPCH_SHIFT 0 +#define I40E_GLVEBTC_TPCH_TCPCH_MASK (0xFFFF << I40E_GLVEBTC_TPCH_TCPCH_SHIFT) +#define I40E_GLVEBTC_TPCL(_i, _j) (0x00338000 + ((_i) * 8 + (_j) * 64)) /* _i=0...7, _j=0...15 */ +#define I40E_GLVEBTC_TPCL_MAX_INDEX 7 +#define I40E_GLVEBTC_TPCL_TCPCL_SHIFT 0 +#define I40E_GLVEBTC_TPCL_TCPCL_MASK (0xFFFFFFFF << I40E_GLVEBTC_TPCL_TCPCL_SHIFT) +#define I40E_GLVEBVL_BPCH(_i) (0x00374804 + ((_i) * 8)) /* _i=0...127 */ +#define I40E_GLVEBVL_BPCH_MAX_INDEX 127 +#define I40E_GLVEBVL_BPCH_VLBPCH_SHIFT 0 +#define I40E_GLVEBVL_BPCH_VLBPCH_MASK (0xFFFF << I40E_GLVEBVL_BPCH_VLBPCH_SHIFT) +#define I40E_GLVEBVL_BPCL(_i) (0x00374800 + ((_i) * 8)) /* _i=0...127 */ +#define I40E_GLVEBVL_BPCL_MAX_INDEX 127 +#define I40E_GLVEBVL_BPCL_VLBPCL_SHIFT 0 +#define I40E_GLVEBVL_BPCL_VLBPCL_MASK (0xFFFFFFFF << I40E_GLVEBVL_BPCL_VLBPCL_SHIFT) +#define I40E_GLVEBVL_GORCH(_i) (0x00360004 + ((_i) * 8)) /* _i=0...127 */ +#define I40E_GLVEBVL_GORCH_MAX_INDEX 127 +#define I40E_GLVEBVL_GORCH_VLBCH_SHIFT 0 +#define I40E_GLVEBVL_GORCH_VLBCH_MASK (0xFFFF << I40E_GLVEBVL_GORCH_VLBCH_SHIFT) +#define I40E_GLVEBVL_GORCL(_i) (0x00360000 + ((_i) * 8)) /* _i=0...127 */ +#define I40E_GLVEBVL_GORCL_MAX_INDEX 127 +#define I40E_GLVEBVL_GORCL_VLBCL_SHIFT 0 +#define I40E_GLVEBVL_GORCL_VLBCL_MASK (0xFFFFFFFF << I40E_GLVEBVL_GORCL_VLBCL_SHIFT) +#define I40E_GLVEBVL_GOTCH(_i) (0x00330004 + ((_i) * 8)) /* _i=0...127 */ +#define I40E_GLVEBVL_GOTCH_MAX_INDEX 127 +#define I40E_GLVEBVL_GOTCH_VLBCH_SHIFT 0 +#define I40E_GLVEBVL_GOTCH_VLBCH_MASK (0xFFFF << I40E_GLVEBVL_GOTCH_VLBCH_SHIFT) +#define I40E_GLVEBVL_GOTCL(_i) (0x00330000 + ((_i) * 8)) /* _i=0...127 */ +#define I40E_GLVEBVL_GOTCL_MAX_INDEX 127 +#define I40E_GLVEBVL_GOTCL_VLBCL_SHIFT 0 +#define I40E_GLVEBVL_GOTCL_VLBCL_MASK (0xFFFFFFFF << I40E_GLVEBVL_GOTCL_VLBCL_SHIFT) +#define I40E_GLVEBVL_MPCH(_i) (0x00374404 + ((_i) * 8)) /* _i=0...127 */ +#define I40E_GLVEBVL_MPCH_MAX_INDEX 127 +#define I40E_GLVEBVL_MPCH_VLMPCH_SHIFT 0 +#define I40E_GLVEBVL_MPCH_VLMPCH_MASK (0xFFFF << I40E_GLVEBVL_MPCH_VLMPCH_SHIFT) +#define I40E_GLVEBVL_MPCL(_i) (0x00374400 + ((_i) * 8)) /* _i=0...127 */ +#define I40E_GLVEBVL_MPCL_MAX_INDEX 127 +#define I40E_GLVEBVL_MPCL_VLMPCL_SHIFT 0 +#define I40E_GLVEBVL_MPCL_VLMPCL_MASK (0xFFFFFFFF << I40E_GLVEBVL_MPCL_VLMPCL_SHIFT) +#define I40E_GLVEBVL_UPCH(_i) (0x00374004 + ((_i) * 8)) /* _i=0...127 */ +#define I40E_GLVEBVL_UPCH_MAX_INDEX 127 +#define I40E_GLVEBVL_UPCH_VLUPCH_SHIFT 0 +#define I40E_GLVEBVL_UPCH_VLUPCH_MASK (0xFFFF << I40E_GLVEBVL_UPCH_VLUPCH_SHIFT) +#define I40E_GLVEBVL_UPCL(_i) (0x00374000 + ((_i) * 8)) /* _i=0...127 */ +#define I40E_GLVEBVL_UPCL_MAX_INDEX 127 +#define I40E_GLVEBVL_UPCL_VLUPCL_SHIFT 0 +#define I40E_GLVEBVL_UPCL_VLUPCL_MASK (0xFFFFFFFF << I40E_GLVEBVL_UPCL_VLUPCL_SHIFT) +#define I40E_GL_MTG_FLU_MSK_H 0x00269F4C +#define I40E_GL_MTG_FLU_MSK_H_MASK_HIGH_SHIFT 0 +#define I40E_GL_MTG_FLU_MSK_H_MASK_HIGH_MASK (0xFFFF << I40E_GL_MTG_FLU_MSK_H_MASK_HIGH_SHIFT) +#define I40E_GL_MTG_FLU_MSK_L 0x00269F44 +#define I40E_GL_MTG_FLU_MSK_L_MASK_LOW_SHIFT 0 +#define I40E_GL_MTG_FLU_MSK_L_MASK_LOW_MASK (0xFFFFFFFF << I40E_GL_MTG_FLU_MSK_L_MASK_LOW_SHIFT) +#define I40E_GL_SWR_DEF_ACT(_i) (0x0026CF00 + ((_i) * 4)) /* _i=0...25 */ +#define I40E_GL_SWR_DEF_ACT_MAX_INDEX 25 +#define I40E_GL_SWR_DEF_ACT_DEF_ACTION_SHIFT 0 +#define I40E_GL_SWR_DEF_ACT_DEF_ACTION_MASK (0xFFFFFFFF << I40E_GL_SWR_DEF_ACT_DEF_ACTION_SHIFT) +#define I40E_GL_SWR_DEF_ACT_EN 0x0026CF84 +#define I40E_GL_SWR_DEF_ACT_EN_DEF_ACT_EN_BITMAP_SHIFT 0 +#define I40E_GL_SWR_DEF_ACT_EN_DEF_ACT_EN_BITMAP_MASK (0xFFFFFFFF << I40E_GL_SWR_DEF_ACT_EN_DEF_ACT_EN_BITMAP_SHIFT) +#define I40E_PRT_MSCCNT 0x00256BA0 +#define I40E_PRT_MSCCNT_CCOUNT_SHIFT 0 +#define I40E_PRT_MSCCNT_CCOUNT_MASK (0x1FFFFFF << I40E_PRT_MSCCNT_CCOUNT_SHIFT) +#define I40E_PRT_SCSTS 0x00256C20 +#define I40E_PRT_SCSTS_BSCA_SHIFT 0 +#define I40E_PRT_SCSTS_BSCA_MASK (0x1 << I40E_PRT_SCSTS_BSCA_SHIFT) +#define I40E_PRT_SCSTS_BSCAP_SHIFT 1 +#define I40E_PRT_SCSTS_BSCAP_MASK (0x1 << I40E_PRT_SCSTS_BSCAP_SHIFT) +#define I40E_PRT_SCSTS_MSCA_SHIFT 2 +#define I40E_PRT_SCSTS_MSCA_MASK (0x1 << I40E_PRT_SCSTS_MSCA_SHIFT) +#define I40E_PRT_SCSTS_MSCAP_SHIFT 3 +#define I40E_PRT_SCSTS_MSCAP_MASK (0x1 << I40E_PRT_SCSTS_MSCAP_SHIFT) +#define I40E_PRT_SWT_BSCCNT 0x00256C60 +#define I40E_PRT_SWT_BSCCNT_CCOUNT_SHIFT 0 +#define I40E_PRT_SWT_BSCCNT_CCOUNT_MASK (0x1FFFFFF << I40E_PRT_SWT_BSCCNT_CCOUNT_SHIFT) +#define I40E_PRTTSYN_ADJ 0x001E4280 +#define I40E_PRTTSYN_ADJ_TSYNADJ_SHIFT 0 +#define I40E_PRTTSYN_ADJ_TSYNADJ_MASK (0x7FFFFFFF << I40E_PRTTSYN_ADJ_TSYNADJ_SHIFT) +#define I40E_PRTTSYN_ADJ_SIGN_SHIFT 31 +#define I40E_PRTTSYN_ADJ_SIGN_MASK (0x1 << I40E_PRTTSYN_ADJ_SIGN_SHIFT) +#define I40E_PRTTSYN_AUX_0(_i) (0x001E42A0 + ((_i) * 32)) /* _i=0...1 */ +#define I40E_PRTTSYN_AUX_0_MAX_INDEX 1 +#define I40E_PRTTSYN_AUX_0_OUT_ENA_SHIFT 0 +#define I40E_PRTTSYN_AUX_0_OUT_ENA_MASK (0x1 << I40E_PRTTSYN_AUX_0_OUT_ENA_SHIFT) +#define I40E_PRTTSYN_AUX_0_OUTMOD_SHIFT 1 +#define I40E_PRTTSYN_AUX_0_OUTMOD_MASK (0x3 << I40E_PRTTSYN_AUX_0_OUTMOD_SHIFT) +#define I40E_PRTTSYN_AUX_0_OUTLVL_SHIFT 3 +#define I40E_PRTTSYN_AUX_0_OUTLVL_MASK (0x1 << I40E_PRTTSYN_AUX_0_OUTLVL_SHIFT) +#define I40E_PRTTSYN_AUX_0_PULSEW_SHIFT 8 +#define I40E_PRTTSYN_AUX_0_PULSEW_MASK (0xF << I40E_PRTTSYN_AUX_0_PULSEW_SHIFT) +#define I40E_PRTTSYN_AUX_0_EVNTLVL_SHIFT 16 +#define I40E_PRTTSYN_AUX_0_EVNTLVL_MASK (0x3 << I40E_PRTTSYN_AUX_0_EVNTLVL_SHIFT) +#define I40E_PRTTSYN_AUX_1(_i) (0x001E42E0 + ((_i) * 32)) /* _i=0...1 */ +#define I40E_PRTTSYN_AUX_1_MAX_INDEX 1 +#define I40E_PRTTSYN_AUX_1_INSTNT_SHIFT 0 +#define I40E_PRTTSYN_AUX_1_INSTNT_MASK (0x1 << I40E_PRTTSYN_AUX_1_INSTNT_SHIFT) +#define I40E_PRTTSYN_AUX_1_SAMPLE_TIME_SHIFT 1 +#define I40E_PRTTSYN_AUX_1_SAMPLE_TIME_MASK (0x1 << I40E_PRTTSYN_AUX_1_SAMPLE_TIME_SHIFT) +#define I40E_PRTTSYN_CLKO(_i) (0x001E4240 + ((_i) * 32)) /* _i=0...1 */ +#define I40E_PRTTSYN_CLKO_MAX_INDEX 1 +#define I40E_PRTTSYN_CLKO_TSYNCLKO_SHIFT 0 +#define I40E_PRTTSYN_CLKO_TSYNCLKO_MASK (0xFFFFFFFF << I40E_PRTTSYN_CLKO_TSYNCLKO_SHIFT) +#define I40E_PRTTSYN_CTL0 0x001E4200 +#define I40E_PRTTSYN_CTL0_CLEAR_TSYNTIMER_SHIFT 0 +#define I40E_PRTTSYN_CTL0_CLEAR_TSYNTIMER_MASK (0x1 << I40E_PRTTSYN_CTL0_CLEAR_TSYNTIMER_SHIFT) +#define I40E_PRTTSYN_CTL0_TXTIME_INT_ENA_SHIFT 1 +#define I40E_PRTTSYN_CTL0_TXTIME_INT_ENA_MASK (0x1 << I40E_PRTTSYN_CTL0_TXTIME_INT_ENA_SHIFT) +#define I40E_PRTTSYN_CTL0_EVENT_INT_ENA_SHIFT 2 +#define I40E_PRTTSYN_CTL0_EVENT_INT_ENA_MASK (0x1 << I40E_PRTTSYN_CTL0_EVENT_INT_ENA_SHIFT) +#define I40E_PRTTSYN_CTL0_TGT_INT_ENA_SHIFT 3 +#define I40E_PRTTSYN_CTL0_TGT_INT_ENA_MASK (0x1 << I40E_PRTTSYN_CTL0_TGT_INT_ENA_SHIFT) +#define I40E_PRTTSYN_CTL0_PF_ID_SHIFT 8 +#define I40E_PRTTSYN_CTL0_PF_ID_MASK (0xF << I40E_PRTTSYN_CTL0_PF_ID_SHIFT) +#define I40E_PRTTSYN_CTL0_TSYNACT_SHIFT 12 +#define I40E_PRTTSYN_CTL0_TSYNACT_MASK (0x3 << I40E_PRTTSYN_CTL0_TSYNACT_SHIFT) +#define I40E_PRTTSYN_CTL0_TSYNENA_SHIFT 31 +#define I40E_PRTTSYN_CTL0_TSYNENA_MASK (0x1 << I40E_PRTTSYN_CTL0_TSYNENA_SHIFT) +#define I40E_PRTTSYN_CTL1 0x00085020 +#define I40E_PRTTSYN_CTL1_V1MESSTYPE0_SHIFT 0 +#define I40E_PRTTSYN_CTL1_V1MESSTYPE0_MASK (0xFF << I40E_PRTTSYN_CTL1_V1MESSTYPE0_SHIFT) +#define I40E_PRTTSYN_CTL1_V1MESSTYPE1_SHIFT 8 +#define I40E_PRTTSYN_CTL1_V1MESSTYPE1_MASK (0xFF << I40E_PRTTSYN_CTL1_V1MESSTYPE1_SHIFT) +#define I40E_PRTTSYN_CTL1_V2MESSTYPE0_SHIFT 16 +#define I40E_PRTTSYN_CTL1_V2MESSTYPE0_MASK (0xF << I40E_PRTTSYN_CTL1_V2MESSTYPE0_SHIFT) +#define I40E_PRTTSYN_CTL1_V2MESSTYPE1_SHIFT 20 +#define I40E_PRTTSYN_CTL1_V2MESSTYPE1_MASK (0xF << I40E_PRTTSYN_CTL1_V2MESSTYPE1_SHIFT) +#define I40E_PRTTSYN_CTL1_TSYNTYPE_SHIFT 24 +#define I40E_PRTTSYN_CTL1_TSYNTYPE_MASK (0x3 << I40E_PRTTSYN_CTL1_TSYNTYPE_SHIFT) +#define I40E_PRTTSYN_CTL1_UDP_ENA_SHIFT 26 +#define I40E_PRTTSYN_CTL1_UDP_ENA_MASK (0x3 << I40E_PRTTSYN_CTL1_UDP_ENA_SHIFT) +#define I40E_PRTTSYN_CTL1_TSYNENA_SHIFT 31 +#define I40E_PRTTSYN_CTL1_TSYNENA_MASK (0x1 << I40E_PRTTSYN_CTL1_TSYNENA_SHIFT) +#define I40E_PRTTSYN_EVNT_H(_i) (0x001E40C0 + ((_i) * 32)) /* _i=0...1 */ +#define I40E_PRTTSYN_EVNT_H_MAX_INDEX 1 +#define I40E_PRTTSYN_EVNT_H_TSYNEVNT_H_SHIFT 0 +#define I40E_PRTTSYN_EVNT_H_TSYNEVNT_H_MASK (0xFFFFFFFF << I40E_PRTTSYN_EVNT_H_TSYNEVNT_H_SHIFT) +#define I40E_PRTTSYN_EVNT_L(_i) (0x001E4080 + ((_i) * 32)) /* _i=0...1 */ +#define I40E_PRTTSYN_EVNT_L_MAX_INDEX 1 +#define I40E_PRTTSYN_EVNT_L_TSYNEVNT_L_SHIFT 0 +#define I40E_PRTTSYN_EVNT_L_TSYNEVNT_L_MASK (0xFFFFFFFF << I40E_PRTTSYN_EVNT_L_TSYNEVNT_L_SHIFT) +#define I40E_PRTTSYN_INC_H 0x001E4060 +#define I40E_PRTTSYN_INC_H_TSYNINC_H_SHIFT 0 +#define I40E_PRTTSYN_INC_H_TSYNINC_H_MASK (0x3F << I40E_PRTTSYN_INC_H_TSYNINC_H_SHIFT) +#define I40E_PRTTSYN_INC_L 0x001E4040 +#define I40E_PRTTSYN_INC_L_TSYNINC_L_SHIFT 0 +#define I40E_PRTTSYN_INC_L_TSYNINC_L_MASK (0xFFFFFFFF << I40E_PRTTSYN_INC_L_TSYNINC_L_SHIFT) +#define I40E_PRTTSYN_RXTIME_H(_i) (0x00085040 + ((_i) * 32)) /* _i=0...3 */ +#define I40E_PRTTSYN_RXTIME_H_MAX_INDEX 3 +#define I40E_PRTTSYN_RXTIME_H_RXTIEM_H_SHIFT 0 +#define I40E_PRTTSYN_RXTIME_H_RXTIEM_H_MASK (0xFFFFFFFF << I40E_PRTTSYN_RXTIME_H_RXTIEM_H_SHIFT) +#define I40E_PRTTSYN_RXTIME_L(_i) (0x000850C0 + ((_i) * 32)) /* _i=0...3 */ +#define I40E_PRTTSYN_RXTIME_L_MAX_INDEX 3 +#define I40E_PRTTSYN_RXTIME_L_RXTIEM_L_SHIFT 0 +#define I40E_PRTTSYN_RXTIME_L_RXTIEM_L_MASK (0xFFFFFFFF << I40E_PRTTSYN_RXTIME_L_RXTIEM_L_SHIFT) +#define I40E_PRTTSYN_STAT_0 0x001E4220 +#define I40E_PRTTSYN_STAT_0_EVENT0_SHIFT 0 +#define I40E_PRTTSYN_STAT_0_EVENT0_MASK (0x1 << I40E_PRTTSYN_STAT_0_EVENT0_SHIFT) +#define I40E_PRTTSYN_STAT_0_EVENT1_SHIFT 1 +#define I40E_PRTTSYN_STAT_0_EVENT1_MASK (0x1 << I40E_PRTTSYN_STAT_0_EVENT1_SHIFT) +#define I40E_PRTTSYN_STAT_0_TGT0_SHIFT 2 +#define I40E_PRTTSYN_STAT_0_TGT0_MASK (0x1 << I40E_PRTTSYN_STAT_0_TGT0_SHIFT) +#define I40E_PRTTSYN_STAT_0_TGT1_SHIFT 3 +#define I40E_PRTTSYN_STAT_0_TGT1_MASK (0x1 << I40E_PRTTSYN_STAT_0_TGT1_SHIFT) +#define I40E_PRTTSYN_STAT_0_TXTIME_SHIFT 4 +#define I40E_PRTTSYN_STAT_0_TXTIME_MASK (0x1 << I40E_PRTTSYN_STAT_0_TXTIME_SHIFT) +#define I40E_PRTTSYN_STAT_1 0x00085140 +#define I40E_PRTTSYN_STAT_1_RXT0_SHIFT 0 +#define I40E_PRTTSYN_STAT_1_RXT0_MASK (0x1 << I40E_PRTTSYN_STAT_1_RXT0_SHIFT) +#define I40E_PRTTSYN_STAT_1_RXT1_SHIFT 1 +#define I40E_PRTTSYN_STAT_1_RXT1_MASK (0x1 << I40E_PRTTSYN_STAT_1_RXT1_SHIFT) +#define I40E_PRTTSYN_STAT_1_RXT2_SHIFT 2 +#define I40E_PRTTSYN_STAT_1_RXT2_MASK (0x1 << I40E_PRTTSYN_STAT_1_RXT2_SHIFT) +#define I40E_PRTTSYN_STAT_1_RXT3_SHIFT 3 +#define I40E_PRTTSYN_STAT_1_RXT3_MASK (0x1 << I40E_PRTTSYN_STAT_1_RXT3_SHIFT) +#define I40E_PRTTSYN_TGT_H(_i) (0x001E4180 + ((_i) * 32)) /* _i=0...1 */ +#define I40E_PRTTSYN_TGT_H_MAX_INDEX 1 +#define I40E_PRTTSYN_TGT_H_TSYNTGTT_H_SHIFT 0 +#define I40E_PRTTSYN_TGT_H_TSYNTGTT_H_MASK (0xFFFFFFFF << I40E_PRTTSYN_TGT_H_TSYNTGTT_H_SHIFT) +#define I40E_PRTTSYN_TGT_L(_i) (0x001E4140 + ((_i) * 32)) /* _i=0...1 */ +#define I40E_PRTTSYN_TGT_L_MAX_INDEX 1 +#define I40E_PRTTSYN_TGT_L_TSYNTGTT_L_SHIFT 0 +#define I40E_PRTTSYN_TGT_L_TSYNTGTT_L_MASK (0xFFFFFFFF << I40E_PRTTSYN_TGT_L_TSYNTGTT_L_SHIFT) +#define I40E_PRTTSYN_TIME_H 0x001E4120 +#define I40E_PRTTSYN_TIME_H_TSYNTIME_H_SHIFT 0 +#define I40E_PRTTSYN_TIME_H_TSYNTIME_H_MASK (0xFFFFFFFF << I40E_PRTTSYN_TIME_H_TSYNTIME_H_SHIFT) +#define I40E_PRTTSYN_TIME_L 0x001E4100 +#define I40E_PRTTSYN_TIME_L_TSYNTIME_L_SHIFT 0 +#define I40E_PRTTSYN_TIME_L_TSYNTIME_L_MASK (0xFFFFFFFF << I40E_PRTTSYN_TIME_L_TSYNTIME_L_SHIFT) +#define I40E_PRTTSYN_TXTIME_H 0x001E41E0 +#define I40E_PRTTSYN_TXTIME_H_TXTIEM_H_SHIFT 0 +#define I40E_PRTTSYN_TXTIME_H_TXTIEM_H_MASK (0xFFFFFFFF << I40E_PRTTSYN_TXTIME_H_TXTIEM_H_SHIFT) +#define I40E_PRTTSYN_TXTIME_L 0x001E41C0 +#define I40E_PRTTSYN_TXTIME_L_TXTIEM_L_SHIFT 0 +#define I40E_PRTTSYN_TXTIME_L_TXTIEM_L_MASK (0xFFFFFFFF << I40E_PRTTSYN_TXTIME_L_TXTIEM_L_SHIFT) +#define I40E_GLSCD_QUANTA 0x000B2080 +#define I40E_GLSCD_QUANTA_TSCDQUANTA_SHIFT 0 +#define I40E_GLSCD_QUANTA_TSCDQUANTA_MASK (0x7 << I40E_GLSCD_QUANTA_TSCDQUANTA_SHIFT) +#define I40E_GL_MDET_RX 0x0012A510 +#define I40E_GL_MDET_RX_FUNCTION_SHIFT 0 +#define I40E_GL_MDET_RX_FUNCTION_MASK (0xFF << I40E_GL_MDET_RX_FUNCTION_SHIFT) +#define I40E_GL_MDET_RX_EVENT_SHIFT 8 +#define I40E_GL_MDET_RX_EVENT_MASK (0x1FF << I40E_GL_MDET_RX_EVENT_SHIFT) +#define I40E_GL_MDET_RX_QUEUE_SHIFT 17 +#define I40E_GL_MDET_RX_QUEUE_MASK (0x3FFF << I40E_GL_MDET_RX_QUEUE_SHIFT) +#define I40E_GL_MDET_RX_VALID_SHIFT 31 +#define I40E_GL_MDET_RX_VALID_MASK (0x1 << I40E_GL_MDET_RX_VALID_SHIFT) +#define I40E_GL_MDET_TX 0x000E6480 +#define I40E_GL_MDET_TX_FUNCTION_SHIFT 0 +#define I40E_GL_MDET_TX_FUNCTION_MASK (0xFF << I40E_GL_MDET_TX_FUNCTION_SHIFT) +#define I40E_GL_MDET_TX_EVENT_SHIFT 8 +#define I40E_GL_MDET_TX_EVENT_MASK (0x1FF << I40E_GL_MDET_TX_EVENT_SHIFT) +#define I40E_GL_MDET_TX_QUEUE_SHIFT 17 +#define I40E_GL_MDET_TX_QUEUE_MASK (0x3FFF << I40E_GL_MDET_TX_QUEUE_SHIFT) +#define I40E_GL_MDET_TX_VALID_SHIFT 31 +#define I40E_GL_MDET_TX_VALID_MASK (0x1 << I40E_GL_MDET_TX_VALID_SHIFT) +#define I40E_PF_MDET_RX 0x0012A400 +#define I40E_PF_MDET_RX_VALID_SHIFT 0 +#define I40E_PF_MDET_RX_VALID_MASK (0x1 << I40E_PF_MDET_RX_VALID_SHIFT) +#define I40E_PF_MDET_TX 0x000E6400 +#define I40E_PF_MDET_TX_VALID_SHIFT 0 +#define I40E_PF_MDET_TX_VALID_MASK (0x1 << I40E_PF_MDET_TX_VALID_SHIFT) +#define I40E_PF_VT_PFALLOC 0x001C0500 +#define I40E_PF_VT_PFALLOC_FIRSTVF_SHIFT 0 +#define I40E_PF_VT_PFALLOC_FIRSTVF_MASK (0xFF << I40E_PF_VT_PFALLOC_FIRSTVF_SHIFT) +#define I40E_PF_VT_PFALLOC_LASTVF_SHIFT 8 +#define I40E_PF_VT_PFALLOC_LASTVF_MASK (0xFF << I40E_PF_VT_PFALLOC_LASTVF_SHIFT) +#define I40E_PF_VT_PFALLOC_VALID_SHIFT 31 +#define I40E_PF_VT_PFALLOC_VALID_MASK (0x1 << I40E_PF_VT_PFALLOC_VALID_SHIFT) +#define I40E_VP_MDET_RX(_VF) (0x0012A000 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_VP_MDET_RX_MAX_INDEX 127 +#define I40E_VP_MDET_RX_VALID_SHIFT 0 +#define I40E_VP_MDET_RX_VALID_MASK (0x1 << I40E_VP_MDET_RX_VALID_SHIFT) +#define I40E_VP_MDET_TX(_VF) (0x000E6000 + ((_VF) * 4)) /* _i=0...127 */ +#define I40E_VP_MDET_TX_MAX_INDEX 127 +#define I40E_VP_MDET_TX_VALID_SHIFT 0 +#define I40E_VP_MDET_TX_VALID_MASK (0x1 << I40E_VP_MDET_TX_VALID_SHIFT) +#define I40E_GLPM_WUMC 0x0006C800 +#define I40E_GLPM_WUMC_NOTCO_SHIFT 0 +#define I40E_GLPM_WUMC_NOTCO_MASK (0x1 << I40E_GLPM_WUMC_NOTCO_SHIFT) +#define I40E_GLPM_WUMC_SRST_PIN_VAL_SHIFT 1 +#define I40E_GLPM_WUMC_SRST_PIN_VAL_MASK (0x1 << I40E_GLPM_WUMC_SRST_PIN_VAL_SHIFT) +#define I40E_GLPM_WUMC_ROL_MODE_SHIFT 2 +#define I40E_GLPM_WUMC_ROL_MODE_MASK (0x1 << I40E_GLPM_WUMC_ROL_MODE_SHIFT) +#define I40E_GLPM_WUMC_RESERVED_4_SHIFT 3 +#define I40E_GLPM_WUMC_RESERVED_4_MASK (0x1FFF << I40E_GLPM_WUMC_RESERVED_4_SHIFT) +#define I40E_GLPM_WUMC_MNG_WU_PF_SHIFT 16 +#define I40E_GLPM_WUMC_MNG_WU_PF_MASK (0xFFFF << I40E_GLPM_WUMC_MNG_WU_PF_SHIFT) +#define I40E_PFPM_APM 0x000B8080 +#define I40E_PFPM_APM_APME_SHIFT 0 +#define I40E_PFPM_APM_APME_MASK (0x1 << I40E_PFPM_APM_APME_SHIFT) +#define I40E_PFPM_FHFT_LENGTH(_i) (0x0006A000 + ((_i) * 128)) /* _i=0...7 */ +#define I40E_PFPM_FHFT_LENGTH_MAX_INDEX 7 +#define I40E_PFPM_FHFT_LENGTH_LENGTH_SHIFT 0 +#define I40E_PFPM_FHFT_LENGTH_LENGTH_MASK (0xFF << I40E_PFPM_FHFT_LENGTH_LENGTH_SHIFT) +#define I40E_PFPM_WUC 0x0006B200 +#define I40E_PFPM_WUC_EN_APM_D0_SHIFT 5 +#define I40E_PFPM_WUC_EN_APM_D0_MASK (0x1 << I40E_PFPM_WUC_EN_APM_D0_SHIFT) +#define I40E_PFPM_WUFC 0x0006B400 +#define I40E_PFPM_WUFC_LNKC_SHIFT 0 +#define I40E_PFPM_WUFC_LNKC_MASK (0x1 << I40E_PFPM_WUFC_LNKC_SHIFT) +#define I40E_PFPM_WUFC_MAG_SHIFT 1 +#define I40E_PFPM_WUFC_MAG_MASK (0x1 << I40E_PFPM_WUFC_MAG_SHIFT) +#define I40E_PFPM_WUFC_MNG_SHIFT 3 +#define I40E_PFPM_WUFC_MNG_MASK (0x1 << I40E_PFPM_WUFC_MNG_SHIFT) +#define I40E_PFPM_WUFC_FLX0_ACT_SHIFT 4 +#define I40E_PFPM_WUFC_FLX0_ACT_MASK (0x1 << I40E_PFPM_WUFC_FLX0_ACT_SHIFT) +#define I40E_PFPM_WUFC_FLX1_ACT_SHIFT 5 +#define I40E_PFPM_WUFC_FLX1_ACT_MASK (0x1 << I40E_PFPM_WUFC_FLX1_ACT_SHIFT) +#define I40E_PFPM_WUFC_FLX2_ACT_SHIFT 6 +#define I40E_PFPM_WUFC_FLX2_ACT_MASK (0x1 << I40E_PFPM_WUFC_FLX2_ACT_SHIFT) +#define I40E_PFPM_WUFC_FLX3_ACT_SHIFT 7 +#define I40E_PFPM_WUFC_FLX3_ACT_MASK (0x1 << I40E_PFPM_WUFC_FLX3_ACT_SHIFT) +#define I40E_PFPM_WUFC_FLX4_ACT_SHIFT 8 +#define I40E_PFPM_WUFC_FLX4_ACT_MASK (0x1 << I40E_PFPM_WUFC_FLX4_ACT_SHIFT) +#define I40E_PFPM_WUFC_FLX5_ACT_SHIFT 9 +#define I40E_PFPM_WUFC_FLX5_ACT_MASK (0x1 << I40E_PFPM_WUFC_FLX5_ACT_SHIFT) +#define I40E_PFPM_WUFC_FLX6_ACT_SHIFT 10 +#define I40E_PFPM_WUFC_FLX6_ACT_MASK (0x1 << I40E_PFPM_WUFC_FLX6_ACT_SHIFT) +#define I40E_PFPM_WUFC_FLX7_ACT_SHIFT 11 +#define I40E_PFPM_WUFC_FLX7_ACT_MASK (0x1 << I40E_PFPM_WUFC_FLX7_ACT_SHIFT) +#define I40E_PFPM_WUFC_FLX0_SHIFT 16 +#define I40E_PFPM_WUFC_FLX0_MASK (0x1 << I40E_PFPM_WUFC_FLX0_SHIFT) +#define I40E_PFPM_WUFC_FLX1_SHIFT 17 +#define I40E_PFPM_WUFC_FLX1_MASK (0x1 << I40E_PFPM_WUFC_FLX1_SHIFT) +#define I40E_PFPM_WUFC_FLX2_SHIFT 18 +#define I40E_PFPM_WUFC_FLX2_MASK (0x1 << I40E_PFPM_WUFC_FLX2_SHIFT) +#define I40E_PFPM_WUFC_FLX3_SHIFT 19 +#define I40E_PFPM_WUFC_FLX3_MASK (0x1 << I40E_PFPM_WUFC_FLX3_SHIFT) +#define I40E_PFPM_WUFC_FLX4_SHIFT 20 +#define I40E_PFPM_WUFC_FLX4_MASK (0x1 << I40E_PFPM_WUFC_FLX4_SHIFT) +#define I40E_PFPM_WUFC_FLX5_SHIFT 21 +#define I40E_PFPM_WUFC_FLX5_MASK (0x1 << I40E_PFPM_WUFC_FLX5_SHIFT) +#define I40E_PFPM_WUFC_FLX6_SHIFT 22 +#define I40E_PFPM_WUFC_FLX6_MASK (0x1 << I40E_PFPM_WUFC_FLX6_SHIFT) +#define I40E_PFPM_WUFC_FLX7_SHIFT 23 +#define I40E_PFPM_WUFC_FLX7_MASK (0x1 << I40E_PFPM_WUFC_FLX7_SHIFT) +#define I40E_PFPM_WUFC_FW_RST_WK_SHIFT 31 +#define I40E_PFPM_WUFC_FW_RST_WK_MASK (0x1 << I40E_PFPM_WUFC_FW_RST_WK_SHIFT) +#define I40E_PFPM_WUS 0x0006B600 +#define I40E_PFPM_WUS_LNKC_SHIFT 0 +#define I40E_PFPM_WUS_LNKC_MASK (0x1 << I40E_PFPM_WUS_LNKC_SHIFT) +#define I40E_PFPM_WUS_MAG_SHIFT 1 +#define I40E_PFPM_WUS_MAG_MASK (0x1 << I40E_PFPM_WUS_MAG_SHIFT) +#define I40E_PFPM_WUS_PME_STATUS_SHIFT 2 +#define I40E_PFPM_WUS_PME_STATUS_MASK (0x1 << I40E_PFPM_WUS_PME_STATUS_SHIFT) +#define I40E_PFPM_WUS_MNG_SHIFT 3 +#define I40E_PFPM_WUS_MNG_MASK (0x1 << I40E_PFPM_WUS_MNG_SHIFT) +#define I40E_PFPM_WUS_FLX0_SHIFT 16 +#define I40E_PFPM_WUS_FLX0_MASK (0x1 << I40E_PFPM_WUS_FLX0_SHIFT) +#define I40E_PFPM_WUS_FLX1_SHIFT 17 +#define I40E_PFPM_WUS_FLX1_MASK (0x1 << I40E_PFPM_WUS_FLX1_SHIFT) +#define I40E_PFPM_WUS_FLX2_SHIFT 18 +#define I40E_PFPM_WUS_FLX2_MASK (0x1 << I40E_PFPM_WUS_FLX2_SHIFT) +#define I40E_PFPM_WUS_FLX3_SHIFT 19 +#define I40E_PFPM_WUS_FLX3_MASK (0x1 << I40E_PFPM_WUS_FLX3_SHIFT) +#define I40E_PFPM_WUS_FLX4_SHIFT 20 +#define I40E_PFPM_WUS_FLX4_MASK (0x1 << I40E_PFPM_WUS_FLX4_SHIFT) +#define I40E_PFPM_WUS_FLX5_SHIFT 21 +#define I40E_PFPM_WUS_FLX5_MASK (0x1 << I40E_PFPM_WUS_FLX5_SHIFT) +#define I40E_PFPM_WUS_FLX6_SHIFT 22 +#define I40E_PFPM_WUS_FLX6_MASK (0x1 << I40E_PFPM_WUS_FLX6_SHIFT) +#define I40E_PFPM_WUS_FLX7_SHIFT 23 +#define I40E_PFPM_WUS_FLX7_MASK (0x1 << I40E_PFPM_WUS_FLX7_SHIFT) +#define I40E_PFPM_WUS_FW_RST_WK_SHIFT 31 +#define I40E_PFPM_WUS_FW_RST_WK_MASK (0x1 << I40E_PFPM_WUS_FW_RST_WK_SHIFT) +#define I40E_PRTPM_FHFHR 0x0006C000 +#define I40E_PRTPM_FHFHR_UNICAST_SHIFT 0 +#define I40E_PRTPM_FHFHR_UNICAST_MASK (0x1 << I40E_PRTPM_FHFHR_UNICAST_SHIFT) +#define I40E_PRTPM_FHFHR_MULTICAST_SHIFT 1 +#define I40E_PRTPM_FHFHR_MULTICAST_MASK (0x1 << I40E_PRTPM_FHFHR_MULTICAST_SHIFT) +#define I40E_PRTPM_SAH(_i) (0x001E44C0 + ((_i) * 32)) /* _i=0...3 */ +#define I40E_PRTPM_SAH_MAX_INDEX 3 +#define I40E_PRTPM_SAH_PFPM_SAH_SHIFT 0 +#define I40E_PRTPM_SAH_PFPM_SAH_MASK (0xFFFF << I40E_PRTPM_SAH_PFPM_SAH_SHIFT) +#define I40E_PRTPM_SAH_PF_NUM_SHIFT 26 +#define I40E_PRTPM_SAH_PF_NUM_MASK (0xF << I40E_PRTPM_SAH_PF_NUM_SHIFT) +#define I40E_PRTPM_SAH_MC_MAG_EN_SHIFT 30 +#define I40E_PRTPM_SAH_MC_MAG_EN_MASK (0x1 << I40E_PRTPM_SAH_MC_MAG_EN_SHIFT) +#define I40E_PRTPM_SAH_AV_SHIFT 31 +#define I40E_PRTPM_SAH_AV_MASK (0x1 << I40E_PRTPM_SAH_AV_SHIFT) +#define I40E_PRTPM_SAL(_i) (0x001E4440 + ((_i) * 32)) /* _i=0...3 */ +#define I40E_PRTPM_SAL_MAX_INDEX 3 +#define I40E_PRTPM_SAL_PFPM_SAL_SHIFT 0 +#define I40E_PRTPM_SAL_PFPM_SAL_MASK (0xFFFFFFFF << I40E_PRTPM_SAL_PFPM_SAL_SHIFT) +#define I40E_VF_ARQBAH1 0x00006000 +#define I40E_VF_ARQBAH1_ARQBAH_SHIFT 0 +#define I40E_VF_ARQBAH1_ARQBAH_MASK (0xFFFFFFFF << I40E_VF_ARQBAH1_ARQBAH_SHIFT) +#define I40E_VF_ARQBAL1 0x00006C00 +#define I40E_VF_ARQBAL1_ARQBAL_SHIFT 0 +#define I40E_VF_ARQBAL1_ARQBAL_MASK (0xFFFFFFFF << I40E_VF_ARQBAL1_ARQBAL_SHIFT) +#define I40E_VF_ARQH1 0x00007400 +#define I40E_VF_ARQH1_ARQH_SHIFT 0 +#define I40E_VF_ARQH1_ARQH_MASK (0x3FF << I40E_VF_ARQH1_ARQH_SHIFT) +#define I40E_VF_ARQLEN1 0x00008000 +#define I40E_VF_ARQLEN1_ARQLEN_SHIFT 0 +#define I40E_VF_ARQLEN1_ARQLEN_MASK (0x3FF << I40E_VF_ARQLEN1_ARQLEN_SHIFT) +#define I40E_VF_ARQLEN1_ARQVFE_SHIFT 28 +#define I40E_VF_ARQLEN1_ARQVFE_MASK (0x1 << I40E_VF_ARQLEN1_ARQVFE_SHIFT) +#define I40E_VF_ARQLEN1_ARQOVFL_SHIFT 29 +#define I40E_VF_ARQLEN1_ARQOVFL_MASK (0x1 << I40E_VF_ARQLEN1_ARQOVFL_SHIFT) +#define I40E_VF_ARQLEN1_ARQCRIT_SHIFT 30 +#define I40E_VF_ARQLEN1_ARQCRIT_MASK (0x1 << I40E_VF_ARQLEN1_ARQCRIT_SHIFT) +#define I40E_VF_ARQLEN1_ARQENABLE_SHIFT 31 +#define I40E_VF_ARQLEN1_ARQENABLE_MASK (0x1 << I40E_VF_ARQLEN1_ARQENABLE_SHIFT) +#define I40E_VF_ARQT1 0x00007000 +#define I40E_VF_ARQT1_ARQT_SHIFT 0 +#define I40E_VF_ARQT1_ARQT_MASK (0x3FF << I40E_VF_ARQT1_ARQT_SHIFT) +#define I40E_VF_ATQBAH1 0x00007800 +#define I40E_VF_ATQBAH1_ATQBAH_SHIFT 0 +#define I40E_VF_ATQBAH1_ATQBAH_MASK (0xFFFFFFFF << I40E_VF_ATQBAH1_ATQBAH_SHIFT) +#define I40E_VF_ATQBAL1 0x00007C00 +#define I40E_VF_ATQBAL1_ATQBAL_SHIFT 0 +#define I40E_VF_ATQBAL1_ATQBAL_MASK (0xFFFFFFFF << I40E_VF_ATQBAL1_ATQBAL_SHIFT) +#define I40E_VF_ATQH1 0x00006400 +#define I40E_VF_ATQH1_ATQH_SHIFT 0 +#define I40E_VF_ATQH1_ATQH_MASK (0x3FF << I40E_VF_ATQH1_ATQH_SHIFT) +#define I40E_VF_ATQLEN1 0x00006800 +#define I40E_VF_ATQLEN1_ATQLEN_SHIFT 0 +#define I40E_VF_ATQLEN1_ATQLEN_MASK (0x3FF << I40E_VF_ATQLEN1_ATQLEN_SHIFT) +#define I40E_VF_ATQLEN1_ATQVFE_SHIFT 28 +#define I40E_VF_ATQLEN1_ATQVFE_MASK (0x1 << I40E_VF_ATQLEN1_ATQVFE_SHIFT) +#define I40E_VF_ATQLEN1_ATQOVFL_SHIFT 29 +#define I40E_VF_ATQLEN1_ATQOVFL_MASK (0x1 << I40E_VF_ATQLEN1_ATQOVFL_SHIFT) +#define I40E_VF_ATQLEN1_ATQCRIT_SHIFT 30 +#define I40E_VF_ATQLEN1_ATQCRIT_MASK (0x1 << I40E_VF_ATQLEN1_ATQCRIT_SHIFT) +#define I40E_VF_ATQLEN1_ATQENABLE_SHIFT 31 +#define I40E_VF_ATQLEN1_ATQENABLE_MASK (0x1 << I40E_VF_ATQLEN1_ATQENABLE_SHIFT) +#define I40E_VF_ATQT1 0x00008400 +#define I40E_VF_ATQT1_ATQT_SHIFT 0 +#define I40E_VF_ATQT1_ATQT_MASK (0x3FF << I40E_VF_ATQT1_ATQT_SHIFT) +#define I40E_VFGEN_RSTAT 0x00008800 +#define I40E_VFGEN_RSTAT_VFR_STATE_SHIFT 0 +#define I40E_VFGEN_RSTAT_VFR_STATE_MASK (0x3 << I40E_VFGEN_RSTAT_VFR_STATE_SHIFT) +#define I40E_VFINT_DYN_CTL01 0x00005C00 +#define I40E_VFINT_DYN_CTL01_INTENA_SHIFT 0 +#define I40E_VFINT_DYN_CTL01_INTENA_MASK (0x1 << I40E_VFINT_DYN_CTL01_INTENA_SHIFT) +#define I40E_VFINT_DYN_CTL01_CLEARPBA_SHIFT 1 +#define I40E_VFINT_DYN_CTL01_CLEARPBA_MASK (0x1 << I40E_VFINT_DYN_CTL01_CLEARPBA_SHIFT) +#define I40E_VFINT_DYN_CTL01_SWINT_TRIG_SHIFT 2 +#define I40E_VFINT_DYN_CTL01_SWINT_TRIG_MASK (0x1 << I40E_VFINT_DYN_CTL01_SWINT_TRIG_SHIFT) +#define I40E_VFINT_DYN_CTL01_ITR_INDX_SHIFT 3 +#define I40E_VFINT_DYN_CTL01_ITR_INDX_MASK (0x3 << I40E_VFINT_DYN_CTL01_ITR_INDX_SHIFT) +#define I40E_VFINT_DYN_CTL01_INTERVAL_SHIFT 5 +#define I40E_VFINT_DYN_CTL01_INTERVAL_MASK (0xFFF << I40E_VFINT_DYN_CTL01_INTERVAL_SHIFT) +#define I40E_VFINT_DYN_CTL01_SW_ITR_INDX_ENA_SHIFT 24 +#define I40E_VFINT_DYN_CTL01_SW_ITR_INDX_ENA_MASK (0x1 << I40E_VFINT_DYN_CTL01_SW_ITR_INDX_ENA_SHIFT) +#define I40E_VFINT_DYN_CTL01_SW_ITR_INDX_SHIFT 25 +#define I40E_VFINT_DYN_CTL01_SW_ITR_INDX_MASK (0x3 << I40E_VFINT_DYN_CTL01_SW_ITR_INDX_SHIFT) +#define I40E_VFINT_DYN_CTL01_INTENA_MSK_SHIFT 31 +#define I40E_VFINT_DYN_CTL01_INTENA_MSK_MASK (0x1 << I40E_VFINT_DYN_CTL01_INTENA_MSK_SHIFT) +#define I40E_VFINT_DYN_CTLN1(_INTVF) (0x00003800 + ((_INTVF) * 4)) +#define I40E_VFINT_DYN_CTLN1_MAX_INDEX 15 +#define I40E_VFINT_DYN_CTLN1_INTENA_SHIFT 0 +#define I40E_VFINT_DYN_CTLN1_INTENA_MASK (0x1 << I40E_VFINT_DYN_CTLN1_INTENA_SHIFT) +#define I40E_VFINT_DYN_CTLN1_CLEARPBA_SHIFT 1 +#define I40E_VFINT_DYN_CTLN1_CLEARPBA_MASK (0x1 << I40E_VFINT_DYN_CTLN1_CLEARPBA_SHIFT) +#define I40E_VFINT_DYN_CTLN1_SWINT_TRIG_SHIFT 2 +#define I40E_VFINT_DYN_CTLN1_SWINT_TRIG_MASK (0x1 << I40E_VFINT_DYN_CTLN1_SWINT_TRIG_SHIFT) +#define I40E_VFINT_DYN_CTLN1_ITR_INDX_SHIFT 3 +#define I40E_VFINT_DYN_CTLN1_ITR_INDX_MASK (0x3 << I40E_VFINT_DYN_CTLN1_ITR_INDX_SHIFT) +#define I40E_VFINT_DYN_CTLN1_INTERVAL_SHIFT 5 +#define I40E_VFINT_DYN_CTLN1_INTERVAL_MASK (0xFFF << I40E_VFINT_DYN_CTLN1_INTERVAL_SHIFT) +#define I40E_VFINT_DYN_CTLN1_SW_ITR_INDX_ENA_SHIFT 24 +#define I40E_VFINT_DYN_CTLN1_SW_ITR_INDX_ENA_MASK (0x1 << I40E_VFINT_DYN_CTLN1_SW_ITR_INDX_ENA_SHIFT) +#define I40E_VFINT_DYN_CTLN1_SW_ITR_INDX_SHIFT 25 +#define I40E_VFINT_DYN_CTLN1_SW_ITR_INDX_MASK (0x3 << I40E_VFINT_DYN_CTLN1_SW_ITR_INDX_SHIFT) +#define I40E_VFINT_DYN_CTLN1_INTENA_MSK_SHIFT 31 +#define I40E_VFINT_DYN_CTLN1_INTENA_MSK_MASK (0x1 << I40E_VFINT_DYN_CTLN1_INTENA_MSK_SHIFT) +#define I40E_VFINT_ICR0_ENA1 0x00005000 +#define I40E_VFINT_ICR0_ENA1_LINK_STAT_CHANGE_SHIFT 25 +#define I40E_VFINT_ICR0_ENA1_LINK_STAT_CHANGE_MASK (0x1 << I40E_VFINT_ICR0_ENA1_LINK_STAT_CHANGE_SHIFT) +#define I40E_VFINT_ICR0_ENA1_ADMINQ_SHIFT 30 +#define I40E_VFINT_ICR0_ENA1_ADMINQ_MASK (0x1 << I40E_VFINT_ICR0_ENA1_ADMINQ_SHIFT) +#define I40E_VFINT_ICR0_ENA1_RSVD_SHIFT 31 +#define I40E_VFINT_ICR0_ENA1_RSVD_MASK (0x1 << I40E_VFINT_ICR0_ENA1_RSVD_SHIFT) +#define I40E_VFINT_ICR01 0x00004800 +#define I40E_VFINT_ICR01_INTEVENT_SHIFT 0 +#define I40E_VFINT_ICR01_INTEVENT_MASK (0x1 << I40E_VFINT_ICR01_INTEVENT_SHIFT) +#define I40E_VFINT_ICR01_QUEUE_0_SHIFT 1 +#define I40E_VFINT_ICR01_QUEUE_0_MASK (0x1 << I40E_VFINT_ICR01_QUEUE_0_SHIFT) +#define I40E_VFINT_ICR01_QUEUE_1_SHIFT 2 +#define I40E_VFINT_ICR01_QUEUE_1_MASK (0x1 << I40E_VFINT_ICR01_QUEUE_1_SHIFT) +#define I40E_VFINT_ICR01_QUEUE_2_SHIFT 3 +#define I40E_VFINT_ICR01_QUEUE_2_MASK (0x1 << I40E_VFINT_ICR01_QUEUE_2_SHIFT) +#define I40E_VFINT_ICR01_QUEUE_3_SHIFT 4 +#define I40E_VFINT_ICR01_QUEUE_3_MASK (0x1 << I40E_VFINT_ICR01_QUEUE_3_SHIFT) +#define I40E_VFINT_ICR01_LINK_STAT_CHANGE_SHIFT 25 +#define I40E_VFINT_ICR01_LINK_STAT_CHANGE_MASK (0x1 << I40E_VFINT_ICR01_LINK_STAT_CHANGE_SHIFT) +#define I40E_VFINT_ICR01_ADMINQ_SHIFT 30 +#define I40E_VFINT_ICR01_ADMINQ_MASK (0x1 << I40E_VFINT_ICR01_ADMINQ_SHIFT) +#define I40E_VFINT_ICR01_SWINT_SHIFT 31 +#define I40E_VFINT_ICR01_SWINT_MASK (0x1 << I40E_VFINT_ICR01_SWINT_SHIFT) +#define I40E_VFINT_ITR01(_i) (0x00004C00 + ((_i) * 4)) /* _i=0...2 */ +#define I40E_VFINT_ITR01_MAX_INDEX 2 +#define I40E_VFINT_ITR01_INTERVAL_SHIFT 0 +#define I40E_VFINT_ITR01_INTERVAL_MASK (0xFFF << I40E_VFINT_ITR01_INTERVAL_SHIFT) +#define I40E_VFINT_ITRN1(_i, _INTVF) (0x00002800 + ((_i) * 64 + (_INTVF) * 4)) +#define I40E_VFINT_ITRN1_MAX_INDEX 2 +#define I40E_VFINT_ITRN1_INTERVAL_SHIFT 0 +#define I40E_VFINT_ITRN1_INTERVAL_MASK (0xFFF << I40E_VFINT_ITRN1_INTERVAL_SHIFT) +#define I40E_VFINT_STAT_CTL01 0x00005400 +#define I40E_VFINT_STAT_CTL01_OTHER_ITR_INDX_SHIFT 2 +#define I40E_VFINT_STAT_CTL01_OTHER_ITR_INDX_MASK (0x3 << I40E_VFINT_STAT_CTL01_OTHER_ITR_INDX_SHIFT) +#define I40E_QRX_TAIL1(_Q) (0x00002000 + ((_Q) * 4)) /* _i=0...15 */ +#define I40E_QRX_TAIL1_MAX_INDEX 15 +#define I40E_QRX_TAIL1_TAIL_SHIFT 0 +#define I40E_QRX_TAIL1_TAIL_MASK (0x1FFF << I40E_QRX_TAIL1_TAIL_SHIFT) +#define I40E_QTX_TAIL1(_Q) (0x00000000 + ((_Q) * 4)) /* _i=0...15 */ +#define I40E_QTX_TAIL1_MAX_INDEX 15 +#define I40E_QTX_TAIL1_TAIL_SHIFT 0 +#define I40E_QTX_TAIL1_TAIL_MASK (0x1FFF << I40E_QTX_TAIL1_TAIL_SHIFT) +#define I40E_VFMSIX_PBA 0x00002000 +#define I40E_VFMSIX_PBA_PENBIT_SHIFT 0 +#define I40E_VFMSIX_PBA_PENBIT_MASK (0xFFFFFFFF << I40E_VFMSIX_PBA_PENBIT_SHIFT) +#define I40E_VFMSIX_TADD(_i) (0x00000000 + ((_i) * 16)) /* _i=0...16 */ +#define I40E_VFMSIX_TADD_MAX_INDEX 16 +#define I40E_VFMSIX_TADD_MSIXTADD10_SHIFT 0 +#define I40E_VFMSIX_TADD_MSIXTADD10_MASK (0x3 << I40E_VFMSIX_TADD_MSIXTADD10_SHIFT) +#define I40E_VFMSIX_TADD_MSIXTADD_SHIFT 2 +#define I40E_VFMSIX_TADD_MSIXTADD_MASK (0x3FFFFFFF << I40E_VFMSIX_TADD_MSIXTADD_SHIFT) +#define I40E_VFMSIX_TMSG(_i) (0x00000008 + ((_i) * 16)) /* _i=0...16 */ +#define I40E_VFMSIX_TMSG_MAX_INDEX 16 +#define I40E_VFMSIX_TMSG_MSIXTMSG_SHIFT 0 +#define I40E_VFMSIX_TMSG_MSIXTMSG_MASK (0xFFFFFFFF << I40E_VFMSIX_TMSG_MSIXTMSG_SHIFT) +#define I40E_VFMSIX_TUADD(_i) (0x00000004 + ((_i) * 16)) /* _i=0...16 */ +#define I40E_VFMSIX_TUADD_MAX_INDEX 16 +#define I40E_VFMSIX_TUADD_MSIXTUADD_SHIFT 0 +#define I40E_VFMSIX_TUADD_MSIXTUADD_MASK (0xFFFFFFFF << I40E_VFMSIX_TUADD_MSIXTUADD_SHIFT) +#define I40E_VFMSIX_TVCTRL(_i) (0x0000000C + ((_i) * 16)) /* _i=0...16 */ +#define I40E_VFMSIX_TVCTRL_MAX_INDEX 16 +#define I40E_VFMSIX_TVCTRL_MASK_SHIFT 0 +#define I40E_VFMSIX_TVCTRL_MASK_MASK (0x1 << I40E_VFMSIX_TVCTRL_MASK_SHIFT) +#define I40E_VFCM_PE_ERRDATA 0x0000DC00 +#define I40E_VFCM_PE_ERRDATA_ERROR_CODE_SHIFT 0 +#define I40E_VFCM_PE_ERRDATA_ERROR_CODE_MASK (0xF << I40E_VFCM_PE_ERRDATA_ERROR_CODE_SHIFT) +#define I40E_VFCM_PE_ERRDATA_Q_TYPE_SHIFT 4 +#define I40E_VFCM_PE_ERRDATA_Q_TYPE_MASK (0x7 << I40E_VFCM_PE_ERRDATA_Q_TYPE_SHIFT) +#define I40E_VFCM_PE_ERRDATA_Q_NUM_SHIFT 8 +#define I40E_VFCM_PE_ERRDATA_Q_NUM_MASK (0x3FFFF << I40E_VFCM_PE_ERRDATA_Q_NUM_SHIFT) +#define I40E_VFCM_PE_ERRINFO 0x0000D800 +#define I40E_VFCM_PE_ERRINFO_ERROR_VALID_SHIFT 0 +#define I40E_VFCM_PE_ERRINFO_ERROR_VALID_MASK (0x1 << I40E_VFCM_PE_ERRINFO_ERROR_VALID_SHIFT) +#define I40E_VFCM_PE_ERRINFO_ERROR_INST_SHIFT 4 +#define I40E_VFCM_PE_ERRINFO_ERROR_INST_MASK (0x7 << I40E_VFCM_PE_ERRINFO_ERROR_INST_SHIFT) +#define I40E_VFCM_PE_ERRINFO_DBL_ERROR_CNT_SHIFT 8 +#define I40E_VFCM_PE_ERRINFO_DBL_ERROR_CNT_MASK (0xFF << I40E_VFCM_PE_ERRINFO_DBL_ERROR_CNT_SHIFT) +#define I40E_VFCM_PE_ERRINFO_RLU_ERROR_CNT_SHIFT 16 +#define I40E_VFCM_PE_ERRINFO_RLU_ERROR_CNT_MASK (0xFF << I40E_VFCM_PE_ERRINFO_RLU_ERROR_CNT_SHIFT) +#define I40E_VFCM_PE_ERRINFO_RLS_ERROR_CNT_SHIFT 24 +#define I40E_VFCM_PE_ERRINFO_RLS_ERROR_CNT_MASK (0xFF << I40E_VFCM_PE_ERRINFO_RLS_ERROR_CNT_SHIFT) +#define I40E_VFPE_AEQALLOC1 0x0000A400 +#define I40E_VFPE_AEQALLOC1_AECOUNT_SHIFT 0 +#define I40E_VFPE_AEQALLOC1_AECOUNT_MASK (0xFFFFFFFF << I40E_VFPE_AEQALLOC1_AECOUNT_SHIFT) +#define I40E_VFPE_CCQPHIGH1 0x00009800 +#define I40E_VFPE_CCQPHIGH1_PECCQPHIGH_SHIFT 0 +#define I40E_VFPE_CCQPHIGH1_PECCQPHIGH_MASK (0xFFFFFFFF << I40E_VFPE_CCQPHIGH1_PECCQPHIGH_SHIFT) +#define I40E_VFPE_CCQPLOW1 0x0000AC00 +#define I40E_VFPE_CCQPLOW1_PECCQPLOW_SHIFT 0 +#define I40E_VFPE_CCQPLOW1_PECCQPLOW_MASK (0xFFFFFFFF << I40E_VFPE_CCQPLOW1_PECCQPLOW_SHIFT) +#define I40E_VFPE_CCQPSTATUS1 0x0000B800 +#define I40E_VFPE_CCQPSTATUS1_CCQP_DONE_SHIFT 0 +#define I40E_VFPE_CCQPSTATUS1_CCQP_DONE_MASK (0x1 << I40E_VFPE_CCQPSTATUS1_CCQP_DONE_SHIFT) +#define I40E_VFPE_CCQPSTATUS1_CCQP_ERR_SHIFT 31 +#define I40E_VFPE_CCQPSTATUS1_CCQP_ERR_MASK (0x1 << I40E_VFPE_CCQPSTATUS1_CCQP_ERR_SHIFT) +#define I40E_VFPE_CQACK1 0x0000B000 +#define I40E_VFPE_CQACK1_PECQID_SHIFT 0 +#define I40E_VFPE_CQACK1_PECQID_MASK (0x1FFFF << I40E_VFPE_CQACK1_PECQID_SHIFT) +#define I40E_VFPE_CQARM1 0x0000B400 +#define I40E_VFPE_CQARM1_PECQID_SHIFT 0 +#define I40E_VFPE_CQARM1_PECQID_MASK (0x1FFFF << I40E_VFPE_CQARM1_PECQID_SHIFT) +#define I40E_VFPE_CQPDB1 0x0000BC00 +#define I40E_VFPE_CQPDB1_WQHEAD_SHIFT 0 +#define I40E_VFPE_CQPDB1_WQHEAD_MASK (0x7FF << I40E_VFPE_CQPDB1_WQHEAD_SHIFT) +#define I40E_VFPE_CQPERRCODES1 0x00009C00 +#define I40E_VFPE_CQPERRCODES1_CQP_MINOR_CODE_SHIFT 0 +#define I40E_VFPE_CQPERRCODES1_CQP_MINOR_CODE_MASK (0xFFFF << I40E_VFPE_CQPERRCODES1_CQP_MINOR_CODE_SHIFT) +#define I40E_VFPE_CQPERRCODES1_CQP_MAJOR_CODE_SHIFT 16 +#define I40E_VFPE_CQPERRCODES1_CQP_MAJOR_CODE_MASK (0xFFFF << I40E_VFPE_CQPERRCODES1_CQP_MAJOR_CODE_SHIFT) +#define I40E_VFPE_CQPTAIL1 0x0000A000 +#define I40E_VFPE_CQPTAIL1_WQTAIL_SHIFT 0 +#define I40E_VFPE_CQPTAIL1_WQTAIL_MASK (0x7FF << I40E_VFPE_CQPTAIL1_WQTAIL_SHIFT) +#define I40E_VFPE_CQPTAIL1_CQP_OP_ERR_SHIFT 31 +#define I40E_VFPE_CQPTAIL1_CQP_OP_ERR_MASK (0x1 << I40E_VFPE_CQPTAIL1_CQP_OP_ERR_SHIFT) +#define I40E_VFPE_IPCONFIG01 0x00008C00 +#define I40E_VFPE_IPCONFIG01_PEIPID_SHIFT 0 +#define I40E_VFPE_IPCONFIG01_PEIPID_MASK (0xFFFF << I40E_VFPE_IPCONFIG01_PEIPID_SHIFT) +#define I40E_VFPE_IPCONFIG01_USEENTIREIDRANGE_SHIFT 16 +#define I40E_VFPE_IPCONFIG01_USEENTIREIDRANGE_MASK (0x1 << I40E_VFPE_IPCONFIG01_USEENTIREIDRANGE_SHIFT) +#define I40E_VFPE_MRTEIDXMASK1 0x00009000 +#define I40E_VFPE_MRTEIDXMASK1_MRTEIDXMASKBITS_SHIFT 0 +#define I40E_VFPE_MRTEIDXMASK1_MRTEIDXMASKBITS_MASK (0x1F << I40E_VFPE_MRTEIDXMASK1_MRTEIDXMASKBITS_SHIFT) +#define I40E_VFPE_RCVUNEXPECTEDERROR1 0x00009400 +#define I40E_VFPE_RCVUNEXPECTEDERROR1_TCP_RX_UNEXP_ERR_SHIFT 0 +#define I40E_VFPE_RCVUNEXPECTEDERROR1_TCP_RX_UNEXP_ERR_MASK (0xFFFFFF << I40E_VFPE_RCVUNEXPECTEDERROR1_TCP_RX_UNEXP_ERR_SHIFT) +#define I40E_VFPE_TCPNOWTIMER1 0x0000A800 +#define I40E_VFPE_TCPNOWTIMER1_TCP_NOW_SHIFT 0 +#define I40E_VFPE_TCPNOWTIMER1_TCP_NOW_MASK (0xFFFFFFFF << I40E_VFPE_TCPNOWTIMER1_TCP_NOW_SHIFT) +#define I40E_VFPE_WQEALLOC1 0x0000C000 +#define I40E_VFPE_WQEALLOC1_PEQPID_SHIFT 0 +#define I40E_VFPE_WQEALLOC1_PEQPID_MASK (0x3FFFF << I40E_VFPE_WQEALLOC1_PEQPID_SHIFT) +#define I40E_VFPE_WQEALLOC1_WQE_DESC_INDEX_SHIFT 20 +#define I40E_VFPE_WQEALLOC1_WQE_DESC_INDEX_MASK (0xFFF << I40E_VFPE_WQEALLOC1_WQE_DESC_INDEX_SHIFT) +#define I40E_VFQF_HENA(_i) (0x0000C400 + ((_i) * 4)) /* _i=0...1 */ +#define I40E_VFQF_HENA_MAX_INDEX 1 +#define I40E_VFQF_HENA_PTYPE_ENA_SHIFT 0 +#define I40E_VFQF_HENA_PTYPE_ENA_MASK (0xFFFFFFFF << I40E_VFQF_HENA_PTYPE_ENA_SHIFT) +#define I40E_VFQF_HKEY(_i) (0x0000CC00 + ((_i) * 4)) /* _i=0...12 */ +#define I40E_VFQF_HKEY_MAX_INDEX 12 +#define I40E_VFQF_HKEY_KEY_0_SHIFT 0 +#define I40E_VFQF_HKEY_KEY_0_MASK (0xFF << I40E_VFQF_HKEY_KEY_0_SHIFT) +#define I40E_VFQF_HKEY_KEY_1_SHIFT 8 +#define I40E_VFQF_HKEY_KEY_1_MASK (0xFF << I40E_VFQF_HKEY_KEY_1_SHIFT) +#define I40E_VFQF_HKEY_KEY_2_SHIFT 16 +#define I40E_VFQF_HKEY_KEY_2_MASK (0xFF << I40E_VFQF_HKEY_KEY_2_SHIFT) +#define I40E_VFQF_HKEY_KEY_3_SHIFT 24 +#define I40E_VFQF_HKEY_KEY_3_MASK (0xFF << I40E_VFQF_HKEY_KEY_3_SHIFT) +#define I40E_VFQF_HLUT(_i) (0x0000D000 + ((_i) * 4)) /* _i=0...15 */ +#define I40E_VFQF_HLUT_MAX_INDEX 15 +#define I40E_VFQF_HLUT_LUT0_SHIFT 0 +#define I40E_VFQF_HLUT_LUT0_MASK (0xF << I40E_VFQF_HLUT_LUT0_SHIFT) +#define I40E_VFQF_HLUT_LUT1_SHIFT 8 +#define I40E_VFQF_HLUT_LUT1_MASK (0xF << I40E_VFQF_HLUT_LUT1_SHIFT) +#define I40E_VFQF_HLUT_LUT2_SHIFT 16 +#define I40E_VFQF_HLUT_LUT2_MASK (0xF << I40E_VFQF_HLUT_LUT2_SHIFT) +#define I40E_VFQF_HLUT_LUT3_SHIFT 24 +#define I40E_VFQF_HLUT_LUT3_MASK (0xF << I40E_VFQF_HLUT_LUT3_SHIFT) +#define I40E_VFQF_HREGION(_i) (0x0000D400 + ((_i) * 4)) /* _i=0...7 */ +#define I40E_VFQF_HREGION_MAX_INDEX 7 +#define I40E_VFQF_HREGION_OVERRIDE_ENA_0_SHIFT 0 +#define I40E_VFQF_HREGION_OVERRIDE_ENA_0_MASK (0x1 << I40E_VFQF_HREGION_OVERRIDE_ENA_0_SHIFT) +#define I40E_VFQF_HREGION_REGION_0_SHIFT 1 +#define I40E_VFQF_HREGION_REGION_0_MASK (0x7 << I40E_VFQF_HREGION_REGION_0_SHIFT) +#define I40E_VFQF_HREGION_OVERRIDE_ENA_1_SHIFT 4 +#define I40E_VFQF_HREGION_OVERRIDE_ENA_1_MASK (0x1 << I40E_VFQF_HREGION_OVERRIDE_ENA_1_SHIFT) +#define I40E_VFQF_HREGION_REGION_1_SHIFT 5 +#define I40E_VFQF_HREGION_REGION_1_MASK (0x7 << I40E_VFQF_HREGION_REGION_1_SHIFT) +#define I40E_VFQF_HREGION_OVERRIDE_ENA_2_SHIFT 8 +#define I40E_VFQF_HREGION_OVERRIDE_ENA_2_MASK (0x1 << I40E_VFQF_HREGION_OVERRIDE_ENA_2_SHIFT) +#define I40E_VFQF_HREGION_REGION_2_SHIFT 9 +#define I40E_VFQF_HREGION_REGION_2_MASK (0x7 << I40E_VFQF_HREGION_REGION_2_SHIFT) +#define I40E_VFQF_HREGION_OVERRIDE_ENA_3_SHIFT 12 +#define I40E_VFQF_HREGION_OVERRIDE_ENA_3_MASK (0x1 << I40E_VFQF_HREGION_OVERRIDE_ENA_3_SHIFT) +#define I40E_VFQF_HREGION_REGION_3_SHIFT 13 +#define I40E_VFQF_HREGION_REGION_3_MASK (0x7 << I40E_VFQF_HREGION_REGION_3_SHIFT) +#define I40E_VFQF_HREGION_OVERRIDE_ENA_4_SHIFT 16 +#define I40E_VFQF_HREGION_OVERRIDE_ENA_4_MASK (0x1 << I40E_VFQF_HREGION_OVERRIDE_ENA_4_SHIFT) +#define I40E_VFQF_HREGION_REGION_4_SHIFT 17 +#define I40E_VFQF_HREGION_REGION_4_MASK (0x7 << I40E_VFQF_HREGION_REGION_4_SHIFT) +#define I40E_VFQF_HREGION_OVERRIDE_ENA_5_SHIFT 20 +#define I40E_VFQF_HREGION_OVERRIDE_ENA_5_MASK (0x1 << I40E_VFQF_HREGION_OVERRIDE_ENA_5_SHIFT) +#define I40E_VFQF_HREGION_REGION_5_SHIFT 21 +#define I40E_VFQF_HREGION_REGION_5_MASK (0x7 << I40E_VFQF_HREGION_REGION_5_SHIFT) +#define I40E_VFQF_HREGION_OVERRIDE_ENA_6_SHIFT 24 +#define I40E_VFQF_HREGION_OVERRIDE_ENA_6_MASK (0x1 << I40E_VFQF_HREGION_OVERRIDE_ENA_6_SHIFT) +#define I40E_VFQF_HREGION_REGION_6_SHIFT 25 +#define I40E_VFQF_HREGION_REGION_6_MASK (0x7 << I40E_VFQF_HREGION_REGION_6_SHIFT) +#define I40E_VFQF_HREGION_OVERRIDE_ENA_7_SHIFT 28 +#define I40E_VFQF_HREGION_OVERRIDE_ENA_7_MASK (0x1 << I40E_VFQF_HREGION_OVERRIDE_ENA_7_SHIFT) +#define I40E_VFQF_HREGION_REGION_7_SHIFT 29 +#define I40E_VFQF_HREGION_REGION_7_MASK (0x7 << I40E_VFQF_HREGION_REGION_7_SHIFT) +#define I40E_RCU_PST_FOC_ACCESS_STATUS 0x00270110 +#define I40E_RCU_PST_FOC_ACCESS_STATUS_WR_ACCESS_CNT_SHIFT 0 +#define I40E_RCU_PST_FOC_ACCESS_STATUS_WR_ACCESS_CNT_MASK (0xFF << I40E_RCU_PST_FOC_ACCESS_STATUS_WR_ACCESS_CNT_SHIFT) +#define I40E_RCU_PST_FOC_ACCESS_STATUS_RD_ACCESS_CNT_SHIFT 8 +#define I40E_RCU_PST_FOC_ACCESS_STATUS_RD_ACCESS_CNT_MASK (0xFF << I40E_RCU_PST_FOC_ACCESS_STATUS_RD_ACCESS_CNT_SHIFT) +#define I40E_RCU_PST_FOC_ACCESS_STATUS_ERR_CNT_SHIFT 16 +#define I40E_RCU_PST_FOC_ACCESS_STATUS_ERR_CNT_MASK (0xFF << I40E_RCU_PST_FOC_ACCESS_STATUS_ERR_CNT_SHIFT) +#define I40E_RCU_PST_FOC_ACCESS_STATUS_LAST_ERR_CODE_SHIFT 24 +#define I40E_RCU_PST_FOC_ACCESS_STATUS_LAST_ERR_CODE_MASK (0x7 << I40E_RCU_PST_FOC_ACCESS_STATUS_LAST_ERR_CODE_SHIFT) +#endif --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40evf/i40e_status.h +++ linux-3.13.0/drivers/net/ethernet/intel/i40evf/i40e_status.h @@ -0,0 +1,97 @@ +/******************************************************************************* + * + * Intel Ethernet Controller XL710 Family Linux Virtual Function Driver + * Copyright(c) 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. + * + * The full GNU General Public License is included in this distribution in + * the file called "COPYING". + * + * Contact Information: + * e1000-devel Mailing List + * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 + * + ******************************************************************************/ + +#ifndef _I40E_STATUS_H_ +#define _I40E_STATUS_H_ + +/* Error Codes */ +enum i40e_status_code { + I40E_SUCCESS = 0, + I40E_ERR_NVM = -1, + I40E_ERR_NVM_CHECKSUM = -2, + I40E_ERR_PHY = -3, + I40E_ERR_CONFIG = -4, + I40E_ERR_PARAM = -5, + I40E_ERR_MAC_TYPE = -6, + I40E_ERR_UNKNOWN_PHY = -7, + I40E_ERR_LINK_SETUP = -8, + I40E_ERR_ADAPTER_STOPPED = -9, + I40E_ERR_INVALID_MAC_ADDR = -10, + I40E_ERR_DEVICE_NOT_SUPPORTED = -11, + I40E_ERR_MASTER_REQUESTS_PENDING = -12, + I40E_ERR_INVALID_LINK_SETTINGS = -13, + I40E_ERR_AUTONEG_NOT_COMPLETE = -14, + I40E_ERR_RESET_FAILED = -15, + I40E_ERR_SWFW_SYNC = -16, + I40E_ERR_NO_AVAILABLE_VSI = -17, + I40E_ERR_NO_MEMORY = -18, + I40E_ERR_BAD_PTR = -19, + I40E_ERR_RING_FULL = -20, + I40E_ERR_INVALID_PD_ID = -21, + I40E_ERR_INVALID_QP_ID = -22, + I40E_ERR_INVALID_CQ_ID = -23, + I40E_ERR_INVALID_CEQ_ID = -24, + I40E_ERR_INVALID_AEQ_ID = -25, + I40E_ERR_INVALID_SIZE = -26, + I40E_ERR_INVALID_ARP_INDEX = -27, + I40E_ERR_INVALID_FPM_FUNC_ID = -28, + I40E_ERR_QP_INVALID_MSG_SIZE = -29, + I40E_ERR_QP_TOOMANY_WRS_POSTED = -30, + I40E_ERR_INVALID_FRAG_COUNT = -31, + I40E_ERR_QUEUE_EMPTY = -32, + I40E_ERR_INVALID_ALIGNMENT = -33, + I40E_ERR_FLUSHED_QUEUE = -34, + I40E_ERR_INVALID_PUSH_PAGE_INDEX = -35, + I40E_ERR_INVALID_IMM_DATA_SIZE = -36, + I40E_ERR_TIMEOUT = -37, + I40E_ERR_OPCODE_MISMATCH = -38, + I40E_ERR_CQP_COMPL_ERROR = -39, + I40E_ERR_INVALID_VF_ID = -40, + I40E_ERR_INVALID_HMCFN_ID = -41, + I40E_ERR_BACKING_PAGE_ERROR = -42, + I40E_ERR_NO_PBLCHUNKS_AVAILABLE = -43, + I40E_ERR_INVALID_PBLE_INDEX = -44, + I40E_ERR_INVALID_SD_INDEX = -45, + I40E_ERR_INVALID_PAGE_DESC_INDEX = -46, + I40E_ERR_INVALID_SD_TYPE = -47, + I40E_ERR_MEMCPY_FAILED = -48, + I40E_ERR_INVALID_HMC_OBJ_INDEX = -49, + I40E_ERR_INVALID_HMC_OBJ_COUNT = -50, + I40E_ERR_INVALID_SRQ_ARM_LIMIT = -51, + I40E_ERR_SRQ_ENABLED = -52, + I40E_ERR_ADMIN_QUEUE_ERROR = -53, + I40E_ERR_ADMIN_QUEUE_TIMEOUT = -54, + I40E_ERR_BUF_TOO_SHORT = -55, + I40E_ERR_ADMIN_QUEUE_FULL = -56, + I40E_ERR_ADMIN_QUEUE_NO_WORK = -57, + I40E_ERR_BAD_IWARP_CQE = -58, + I40E_ERR_NVM_BLANK_MODE = -59, + I40E_ERR_NOT_IMPLEMENTED = -60, + I40E_ERR_PE_DOORBELL_NOT_ENABLED = -61, + I40E_ERR_DIAG_TEST_FAILED = -62, + I40E_ERR_NOT_READY = -63, + I40E_NOT_SUPPORTED = -64, + I40E_ERR_FIRMWARE_API_VERSION = -65, +}; + +#endif /* _I40E_STATUS_H_ */ --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40evf/i40e_txrx.c +++ linux-3.13.0/drivers/net/ethernet/intel/i40evf/i40e_txrx.c @@ -0,0 +1,1633 @@ +/******************************************************************************* + * + * Intel Ethernet Controller XL710 Family Linux Virtual Function Driver + * Copyright(c) 2013 - 2014 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. + * + * The full GNU General Public License is included in this distribution in + * the file called "COPYING". + * + * Contact Information: + * e1000-devel Mailing List + * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 + * + ******************************************************************************/ + +#include + +#include "i40evf.h" +#include "i40e_prototype.h" + +static inline __le64 build_ctob(u32 td_cmd, u32 td_offset, unsigned int size, + u32 td_tag) +{ + return cpu_to_le64(I40E_TX_DESC_DTYPE_DATA | + ((u64)td_cmd << I40E_TXD_QW1_CMD_SHIFT) | + ((u64)td_offset << I40E_TXD_QW1_OFFSET_SHIFT) | + ((u64)size << I40E_TXD_QW1_TX_BUF_SZ_SHIFT) | + ((u64)td_tag << I40E_TXD_QW1_L2TAG1_SHIFT)); +} + +#define I40E_TXD_CMD (I40E_TX_DESC_CMD_EOP | I40E_TX_DESC_CMD_RS) + +/** + * i40e_unmap_and_free_tx_resource - Release a Tx buffer + * @ring: the ring that owns the buffer + * @tx_buffer: the buffer to free + **/ +static void i40e_unmap_and_free_tx_resource(struct i40e_ring *ring, + struct i40e_tx_buffer *tx_buffer) +{ + if (tx_buffer->skb) { + dev_kfree_skb_any(tx_buffer->skb); + if (dma_unmap_len(tx_buffer, len)) + dma_unmap_single(ring->dev, + dma_unmap_addr(tx_buffer, dma), + dma_unmap_len(tx_buffer, len), + DMA_TO_DEVICE); + } else if (dma_unmap_len(tx_buffer, len)) { + dma_unmap_page(ring->dev, + dma_unmap_addr(tx_buffer, dma), + dma_unmap_len(tx_buffer, len), + DMA_TO_DEVICE); + } + tx_buffer->next_to_watch = NULL; + tx_buffer->skb = NULL; + dma_unmap_len_set(tx_buffer, len, 0); + /* tx_buffer must be completely set up in the transmit path */ +} + +/** + * i40evf_clean_tx_ring - Free any empty Tx buffers + * @tx_ring: ring to be cleaned + **/ +void i40evf_clean_tx_ring(struct i40e_ring *tx_ring) +{ + unsigned long bi_size; + u16 i; + + /* ring already cleared, nothing to do */ + if (!tx_ring->tx_bi) + return; + + /* Free all the Tx ring sk_buffs */ + for (i = 0; i < tx_ring->count; i++) + i40e_unmap_and_free_tx_resource(tx_ring, &tx_ring->tx_bi[i]); + + bi_size = sizeof(struct i40e_tx_buffer) * tx_ring->count; + memset(tx_ring->tx_bi, 0, bi_size); + + /* Zero out the descriptor ring */ + memset(tx_ring->desc, 0, tx_ring->size); + + tx_ring->next_to_use = 0; + tx_ring->next_to_clean = 0; + + if (!tx_ring->netdev) + return; + + /* cleanup Tx queue statistics */ + netdev_tx_reset_queue(netdev_get_tx_queue(tx_ring->netdev, + tx_ring->queue_index)); +} + +/** + * i40evf_free_tx_resources - Free Tx resources per queue + * @tx_ring: Tx descriptor ring for a specific queue + * + * Free all transmit software resources + **/ +void i40evf_free_tx_resources(struct i40e_ring *tx_ring) +{ + i40evf_clean_tx_ring(tx_ring); + kfree(tx_ring->tx_bi); + tx_ring->tx_bi = NULL; + + if (tx_ring->desc) { + dma_free_coherent(tx_ring->dev, tx_ring->size, + tx_ring->desc, tx_ring->dma); + tx_ring->desc = NULL; + } +} + +/** + * i40e_get_tx_pending - how many tx descriptors not processed + * @tx_ring: the ring of descriptors + * + * Since there is no access to the ring head register + * in XL710, we need to use our local copies + **/ +static u32 i40e_get_tx_pending(struct i40e_ring *ring) +{ + u32 ntu = ((ring->next_to_clean <= ring->next_to_use) + ? ring->next_to_use + : ring->next_to_use + ring->count); + return ntu - ring->next_to_clean; +} + +/** + * i40e_check_tx_hang - Is there a hang in the Tx queue + * @tx_ring: the ring of descriptors + **/ +static bool i40e_check_tx_hang(struct i40e_ring *tx_ring) +{ + u32 tx_pending = i40e_get_tx_pending(tx_ring); + bool ret = false; + + clear_check_for_tx_hang(tx_ring); + + /* Check for a hung queue, but be thorough. This verifies + * that a transmit has been completed since the previous + * check AND there is at least one packet pending. The + * ARMED bit is set to indicate a potential hang. The + * bit is cleared if a pause frame is received to remove + * false hang detection due to PFC or 802.3x frames. By + * requiring this to fail twice we avoid races with + * PFC clearing the ARMED bit and conditions where we + * run the check_tx_hang logic with a transmit completion + * pending but without time to complete it yet. + */ + if ((tx_ring->tx_stats.tx_done_old == tx_ring->stats.packets) && + tx_pending) { + /* make sure it is true for two checks in a row */ + ret = test_and_set_bit(__I40E_HANG_CHECK_ARMED, + &tx_ring->state); + } else { + /* update completed stats and disarm the hang check */ + tx_ring->tx_stats.tx_done_old = tx_ring->stats.packets; + clear_bit(__I40E_HANG_CHECK_ARMED, &tx_ring->state); + } + + return ret; +} + +/** + * i40e_get_head - Retrieve head from head writeback + * @tx_ring: tx ring to fetch head of + * + * Returns value of Tx ring head based on value stored + * in head write-back location + **/ +static inline u32 i40e_get_head(struct i40e_ring *tx_ring) +{ + void *head = (struct i40e_tx_desc *)tx_ring->desc + tx_ring->count; + + return le32_to_cpu(*(volatile __le32 *)head); +} + +/** + * i40e_clean_tx_irq - Reclaim resources after transmit completes + * @tx_ring: tx ring to clean + * @budget: how many cleans we're allowed + * + * Returns true if there's any budget left (e.g. the clean is finished) + **/ +static bool i40e_clean_tx_irq(struct i40e_ring *tx_ring, int budget) +{ + u16 i = tx_ring->next_to_clean; + struct i40e_tx_buffer *tx_buf; + struct i40e_tx_desc *tx_head; + struct i40e_tx_desc *tx_desc; + unsigned int total_packets = 0; + unsigned int total_bytes = 0; + + tx_buf = &tx_ring->tx_bi[i]; + tx_desc = I40E_TX_DESC(tx_ring, i); + i -= tx_ring->count; + + tx_head = I40E_TX_DESC(tx_ring, i40e_get_head(tx_ring)); + + do { + struct i40e_tx_desc *eop_desc = tx_buf->next_to_watch; + + /* if next_to_watch is not set then there is no work pending */ + if (!eop_desc) + break; + + /* prevent any other reads prior to eop_desc */ + read_barrier_depends(); + + /* we have caught up to head, no work left to do */ + if (tx_head == tx_desc) + break; + + /* clear next_to_watch to prevent false hangs */ + tx_buf->next_to_watch = NULL; + + /* update the statistics for this packet */ + total_bytes += tx_buf->bytecount; + total_packets += tx_buf->gso_segs; + + /* free the skb */ + dev_kfree_skb_any(tx_buf->skb); + + /* unmap skb header data */ + dma_unmap_single(tx_ring->dev, + dma_unmap_addr(tx_buf, dma), + dma_unmap_len(tx_buf, len), + DMA_TO_DEVICE); + + /* clear tx_buffer data */ + tx_buf->skb = NULL; + dma_unmap_len_set(tx_buf, len, 0); + + /* unmap remaining buffers */ + while (tx_desc != eop_desc) { + + tx_buf++; + tx_desc++; + i++; + if (unlikely(!i)) { + i -= tx_ring->count; + tx_buf = tx_ring->tx_bi; + tx_desc = I40E_TX_DESC(tx_ring, 0); + } + + /* unmap any remaining paged data */ + if (dma_unmap_len(tx_buf, len)) { + dma_unmap_page(tx_ring->dev, + dma_unmap_addr(tx_buf, dma), + dma_unmap_len(tx_buf, len), + DMA_TO_DEVICE); + dma_unmap_len_set(tx_buf, len, 0); + } + } + + /* move us one more past the eop_desc for start of next pkt */ + tx_buf++; + tx_desc++; + i++; + if (unlikely(!i)) { + i -= tx_ring->count; + tx_buf = tx_ring->tx_bi; + tx_desc = I40E_TX_DESC(tx_ring, 0); + } + + /* update budget accounting */ + budget--; + } while (likely(budget)); + + i += tx_ring->count; + tx_ring->next_to_clean = i; + u64_stats_update_begin(&tx_ring->syncp); + tx_ring->stats.bytes += total_bytes; + tx_ring->stats.packets += total_packets; + u64_stats_update_end(&tx_ring->syncp); + tx_ring->q_vector->tx.total_bytes += total_bytes; + tx_ring->q_vector->tx.total_packets += total_packets; + + if (check_for_tx_hang(tx_ring) && i40e_check_tx_hang(tx_ring)) { + /* schedule immediate reset if we believe we hung */ + dev_info(tx_ring->dev, "Detected Tx Unit Hang\n" + " VSI <%d>\n" + " Tx Queue <%d>\n" + " next_to_use <%x>\n" + " next_to_clean <%x>\n", + tx_ring->vsi->seid, + tx_ring->queue_index, + tx_ring->next_to_use, i); + dev_info(tx_ring->dev, "tx_bi[next_to_clean]\n" + " time_stamp <%lx>\n" + " jiffies <%lx>\n", + tx_ring->tx_bi[i].time_stamp, jiffies); + + netif_stop_subqueue(tx_ring->netdev, tx_ring->queue_index); + + dev_info(tx_ring->dev, + "tx hang detected on queue %d, resetting adapter\n", + tx_ring->queue_index); + + tx_ring->netdev->netdev_ops->ndo_tx_timeout(tx_ring->netdev); + + /* the adapter is about to reset, no point in enabling stuff */ + return true; + } + + netdev_tx_completed_queue(netdev_get_tx_queue(tx_ring->netdev, + tx_ring->queue_index), + total_packets, total_bytes); + +#define TX_WAKE_THRESHOLD (DESC_NEEDED * 2) + if (unlikely(total_packets && netif_carrier_ok(tx_ring->netdev) && + (I40E_DESC_UNUSED(tx_ring) >= TX_WAKE_THRESHOLD))) { + /* Make sure that anybody stopping the queue after this + * sees the new next_to_clean. + */ + smp_mb(); + if (__netif_subqueue_stopped(tx_ring->netdev, + tx_ring->queue_index) && + !test_bit(__I40E_DOWN, &tx_ring->vsi->state)) { + netif_wake_subqueue(tx_ring->netdev, + tx_ring->queue_index); + ++tx_ring->tx_stats.restart_queue; + } + } + + return budget > 0; +} + +/** + * i40e_set_new_dynamic_itr - Find new ITR level + * @rc: structure containing ring performance data + * + * Stores a new ITR value based on packets and byte counts during + * the last interrupt. The advantage of per interrupt computation + * is faster updates and more accurate ITR for the current traffic + * pattern. Constants in this function were computed based on + * theoretical maximum wire speed and thresholds were set based on + * testing data as well as attempting to minimize response time + * while increasing bulk throughput. + **/ +static void i40e_set_new_dynamic_itr(struct i40e_ring_container *rc) +{ + enum i40e_latency_range new_latency_range = rc->latency_range; + u32 new_itr = rc->itr; + int bytes_per_int; + + if (rc->total_packets == 0 || !rc->itr) + return; + + /* simple throttlerate management + * 0-10MB/s lowest (100000 ints/s) + * 10-20MB/s low (20000 ints/s) + * 20-1249MB/s bulk (8000 ints/s) + */ + bytes_per_int = rc->total_bytes / rc->itr; + switch (rc->itr) { + case I40E_LOWEST_LATENCY: + if (bytes_per_int > 10) + new_latency_range = I40E_LOW_LATENCY; + break; + case I40E_LOW_LATENCY: + if (bytes_per_int > 20) + new_latency_range = I40E_BULK_LATENCY; + else if (bytes_per_int <= 10) + new_latency_range = I40E_LOWEST_LATENCY; + break; + case I40E_BULK_LATENCY: + if (bytes_per_int <= 20) + rc->latency_range = I40E_LOW_LATENCY; + break; + } + + switch (new_latency_range) { + case I40E_LOWEST_LATENCY: + new_itr = I40E_ITR_100K; + break; + case I40E_LOW_LATENCY: + new_itr = I40E_ITR_20K; + break; + case I40E_BULK_LATENCY: + new_itr = I40E_ITR_8K; + break; + default: + break; + } + + if (new_itr != rc->itr) { + /* do an exponential smoothing */ + new_itr = (10 * new_itr * rc->itr) / + ((9 * new_itr) + rc->itr); + rc->itr = new_itr & I40E_MAX_ITR; + } + + rc->total_bytes = 0; + rc->total_packets = 0; +} + +/** + * i40e_update_dynamic_itr - Adjust ITR based on bytes per int + * @q_vector: the vector to adjust + **/ +static void i40e_update_dynamic_itr(struct i40e_q_vector *q_vector) +{ + u16 vector = q_vector->vsi->base_vector + q_vector->v_idx; + struct i40e_hw *hw = &q_vector->vsi->back->hw; + u32 reg_addr; + u16 old_itr; + + reg_addr = I40E_VFINT_ITRN1(I40E_RX_ITR, vector - 1); + old_itr = q_vector->rx.itr; + i40e_set_new_dynamic_itr(&q_vector->rx); + if (old_itr != q_vector->rx.itr) + wr32(hw, reg_addr, q_vector->rx.itr); + + reg_addr = I40E_VFINT_ITRN1(I40E_TX_ITR, vector - 1); + old_itr = q_vector->tx.itr; + i40e_set_new_dynamic_itr(&q_vector->tx); + if (old_itr != q_vector->tx.itr) + wr32(hw, reg_addr, q_vector->tx.itr); +} + +/** + * i40evf_setup_tx_descriptors - Allocate the Tx descriptors + * @tx_ring: the tx ring to set up + * + * Return 0 on success, negative on error + **/ +int i40evf_setup_tx_descriptors(struct i40e_ring *tx_ring) +{ + struct device *dev = tx_ring->dev; + int bi_size; + + if (!dev) + return -ENOMEM; + + bi_size = sizeof(struct i40e_tx_buffer) * tx_ring->count; + tx_ring->tx_bi = kzalloc(bi_size, GFP_KERNEL); + if (!tx_ring->tx_bi) + goto err; + + /* round up to nearest 4K */ + tx_ring->size = tx_ring->count * sizeof(struct i40e_tx_desc); + /* add u32 for head writeback, align after this takes care of + * guaranteeing this is at least one cache line in size + */ + tx_ring->size += sizeof(u32); + tx_ring->size = ALIGN(tx_ring->size, 4096); + tx_ring->desc = dma_alloc_coherent(dev, tx_ring->size, + &tx_ring->dma, GFP_KERNEL); + if (!tx_ring->desc) { + dev_info(dev, "Unable to allocate memory for the Tx descriptor ring, size=%d\n", + tx_ring->size); + goto err; + } + + tx_ring->next_to_use = 0; + tx_ring->next_to_clean = 0; + return 0; + +err: + kfree(tx_ring->tx_bi); + tx_ring->tx_bi = NULL; + return -ENOMEM; +} + +/** + * i40evf_clean_rx_ring - Free Rx buffers + * @rx_ring: ring to be cleaned + **/ +void i40evf_clean_rx_ring(struct i40e_ring *rx_ring) +{ + struct device *dev = rx_ring->dev; + struct i40e_rx_buffer *rx_bi; + unsigned long bi_size; + u16 i; + + /* ring already cleared, nothing to do */ + if (!rx_ring->rx_bi) + return; + + /* Free all the Rx ring sk_buffs */ + for (i = 0; i < rx_ring->count; i++) { + rx_bi = &rx_ring->rx_bi[i]; + if (rx_bi->dma) { + dma_unmap_single(dev, + rx_bi->dma, + rx_ring->rx_buf_len, + DMA_FROM_DEVICE); + rx_bi->dma = 0; + } + if (rx_bi->skb) { + dev_kfree_skb(rx_bi->skb); + rx_bi->skb = NULL; + } + if (rx_bi->page) { + if (rx_bi->page_dma) { + dma_unmap_page(dev, + rx_bi->page_dma, + PAGE_SIZE / 2, + DMA_FROM_DEVICE); + rx_bi->page_dma = 0; + } + __free_page(rx_bi->page); + rx_bi->page = NULL; + rx_bi->page_offset = 0; + } + } + + bi_size = sizeof(struct i40e_rx_buffer) * rx_ring->count; + memset(rx_ring->rx_bi, 0, bi_size); + + /* Zero out the descriptor ring */ + memset(rx_ring->desc, 0, rx_ring->size); + + rx_ring->next_to_clean = 0; + rx_ring->next_to_use = 0; +} + +/** + * i40evf_free_rx_resources - Free Rx resources + * @rx_ring: ring to clean the resources from + * + * Free all receive software resources + **/ +void i40evf_free_rx_resources(struct i40e_ring *rx_ring) +{ + i40evf_clean_rx_ring(rx_ring); + kfree(rx_ring->rx_bi); + rx_ring->rx_bi = NULL; + + if (rx_ring->desc) { + dma_free_coherent(rx_ring->dev, rx_ring->size, + rx_ring->desc, rx_ring->dma); + rx_ring->desc = NULL; + } +} + +/** + * i40evf_setup_rx_descriptors - Allocate Rx descriptors + * @rx_ring: Rx descriptor ring (for a specific queue) to setup + * + * Returns 0 on success, negative on failure + **/ +int i40evf_setup_rx_descriptors(struct i40e_ring *rx_ring) +{ + struct device *dev = rx_ring->dev; + int bi_size; + + bi_size = sizeof(struct i40e_rx_buffer) * rx_ring->count; + rx_ring->rx_bi = kzalloc(bi_size, GFP_KERNEL); + if (!rx_ring->rx_bi) + goto err; + + /* Round up to nearest 4K */ + rx_ring->size = ring_is_16byte_desc_enabled(rx_ring) + ? rx_ring->count * sizeof(union i40e_16byte_rx_desc) + : rx_ring->count * sizeof(union i40e_32byte_rx_desc); + rx_ring->size = ALIGN(rx_ring->size, 4096); + rx_ring->desc = dma_alloc_coherent(dev, rx_ring->size, + &rx_ring->dma, GFP_KERNEL); + + if (!rx_ring->desc) { + dev_info(dev, "Unable to allocate memory for the Rx descriptor ring, size=%d\n", + rx_ring->size); + goto err; + } + + rx_ring->next_to_clean = 0; + rx_ring->next_to_use = 0; + + return 0; +err: + kfree(rx_ring->rx_bi); + rx_ring->rx_bi = NULL; + return -ENOMEM; +} + +/** + * i40e_release_rx_desc - Store the new tail and head values + * @rx_ring: ring to bump + * @val: new head index + **/ +static inline void i40e_release_rx_desc(struct i40e_ring *rx_ring, u32 val) +{ + rx_ring->next_to_use = val; + /* Force memory writes to complete before letting h/w + * know there are new descriptors to fetch. (Only + * applicable for weak-ordered memory model archs, + * such as IA-64). + */ + wmb(); + writel(val, rx_ring->tail); +} + +/** + * i40evf_alloc_rx_buffers - Replace used receive buffers; packet split + * @rx_ring: ring to place buffers on + * @cleaned_count: number of buffers to replace + **/ +void i40evf_alloc_rx_buffers(struct i40e_ring *rx_ring, u16 cleaned_count) +{ + u16 i = rx_ring->next_to_use; + union i40e_rx_desc *rx_desc; + struct i40e_rx_buffer *bi; + struct sk_buff *skb; + + /* do nothing if no valid netdev defined */ + if (!rx_ring->netdev || !cleaned_count) + return; + + while (cleaned_count--) { + rx_desc = I40E_RX_DESC(rx_ring, i); + bi = &rx_ring->rx_bi[i]; + skb = bi->skb; + + if (!skb) { + skb = netdev_alloc_skb_ip_align(rx_ring->netdev, + rx_ring->rx_buf_len); + if (!skb) { + rx_ring->rx_stats.alloc_buff_failed++; + goto no_buffers; + } + /* initialize queue mapping */ + skb_record_rx_queue(skb, rx_ring->queue_index); + bi->skb = skb; + } + + if (!bi->dma) { + bi->dma = dma_map_single(rx_ring->dev, + skb->data, + rx_ring->rx_buf_len, + DMA_FROM_DEVICE); + if (dma_mapping_error(rx_ring->dev, bi->dma)) { + rx_ring->rx_stats.alloc_buff_failed++; + bi->dma = 0; + goto no_buffers; + } + } + + if (ring_is_ps_enabled(rx_ring)) { + if (!bi->page) { + bi->page = alloc_page(GFP_ATOMIC); + if (!bi->page) { + rx_ring->rx_stats.alloc_page_failed++; + goto no_buffers; + } + } + + if (!bi->page_dma) { + /* use a half page if we're re-using */ + bi->page_offset ^= PAGE_SIZE / 2; + bi->page_dma = dma_map_page(rx_ring->dev, + bi->page, + bi->page_offset, + PAGE_SIZE / 2, + DMA_FROM_DEVICE); + if (dma_mapping_error(rx_ring->dev, + bi->page_dma)) { + rx_ring->rx_stats.alloc_page_failed++; + bi->page_dma = 0; + goto no_buffers; + } + } + + /* Refresh the desc even if buffer_addrs didn't change + * because each write-back erases this info. + */ + rx_desc->read.pkt_addr = cpu_to_le64(bi->page_dma); + rx_desc->read.hdr_addr = cpu_to_le64(bi->dma); + } else { + rx_desc->read.pkt_addr = cpu_to_le64(bi->dma); + rx_desc->read.hdr_addr = 0; + } + i++; + if (i == rx_ring->count) + i = 0; + } + +no_buffers: + if (rx_ring->next_to_use != i) + i40e_release_rx_desc(rx_ring, i); +} + +/** + * i40e_receive_skb - Send a completed packet up the stack + * @rx_ring: rx ring in play + * @skb: packet to send up + * @vlan_tag: vlan tag for packet + **/ +static void i40e_receive_skb(struct i40e_ring *rx_ring, + struct sk_buff *skb, u16 vlan_tag) +{ + struct i40e_q_vector *q_vector = rx_ring->q_vector; + struct i40e_vsi *vsi = rx_ring->vsi; + u64 flags = vsi->back->flags; + + if (vlan_tag & VLAN_VID_MASK) + __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), vlan_tag); + + if (flags & I40E_FLAG_IN_NETPOLL) + netif_rx(skb); + else + napi_gro_receive(&q_vector->napi, skb); +} + +/** + * i40e_rx_checksum - Indicate in skb if hw indicated a good cksum + * @vsi: the VSI we care about + * @skb: skb currently being received and modified + * @rx_status: status value of last descriptor in packet + * @rx_error: error value of last descriptor in packet + * @rx_ptype: ptype value of last descriptor in packet + **/ +static inline void i40e_rx_checksum(struct i40e_vsi *vsi, + struct sk_buff *skb, + u32 rx_status, + u32 rx_error, + u16 rx_ptype) +{ + bool ipv4_tunnel, ipv6_tunnel; + __wsum rx_udp_csum; + __sum16 csum; + struct iphdr *iph; + + ipv4_tunnel = (rx_ptype > I40E_RX_PTYPE_GRENAT4_MAC_PAY3) && + (rx_ptype < I40E_RX_PTYPE_GRENAT4_MACVLAN_IPV6_ICMP_PAY4); + ipv6_tunnel = (rx_ptype > I40E_RX_PTYPE_GRENAT6_MAC_PAY3) && + (rx_ptype < I40E_RX_PTYPE_GRENAT6_MACVLAN_IPV6_ICMP_PAY4); + + skb->encapsulation = ipv4_tunnel || ipv6_tunnel; + skb->ip_summed = CHECKSUM_NONE; + + /* Rx csum enabled and ip headers found? */ + if (!(vsi->netdev->features & NETIF_F_RXCSUM && + rx_status & (1 << I40E_RX_DESC_STATUS_L3L4P_SHIFT))) + return; + + /* likely incorrect csum if alternate IP extension headers found */ + if (rx_status & (1 << I40E_RX_DESC_STATUS_IPV6EXADD_SHIFT)) + return; + + /* IP or L4 or outmost IP checksum error */ + if (rx_error & ((1 << I40E_RX_DESC_ERROR_IPE_SHIFT) | + (1 << I40E_RX_DESC_ERROR_L4E_SHIFT) | + (1 << I40E_RX_DESC_ERROR_EIPE_SHIFT))) { + vsi->back->hw_csum_rx_error++; + return; + } + + if (ipv4_tunnel && + !(rx_status & (1 << I40E_RX_DESC_STATUS_UDP_0_SHIFT))) { + /* If VXLAN traffic has an outer UDPv4 checksum we need to check + * it in the driver, hardware does not do it for us. + * Since L3L4P bit was set we assume a valid IHL value (>=5) + * so the total length of IPv4 header is IHL*4 bytes + */ + skb->transport_header = skb->mac_header + + sizeof(struct ethhdr) + + (ip_hdr(skb)->ihl * 4); + + /* Add 4 bytes for VLAN tagged packets */ + skb->transport_header += (skb->protocol == htons(ETH_P_8021Q) || + skb->protocol == htons(ETH_P_8021AD)) + ? VLAN_HLEN : 0; + + rx_udp_csum = udp_csum(skb); + iph = ip_hdr(skb); + csum = csum_tcpudp_magic( + iph->saddr, iph->daddr, + (skb->len - skb_transport_offset(skb)), + IPPROTO_UDP, rx_udp_csum); + + if (udp_hdr(skb)->check != csum) { + vsi->back->hw_csum_rx_error++; + return; + } + } + + skb->ip_summed = CHECKSUM_UNNECESSARY; +} + +/** + * i40e_rx_hash - returns the hash value from the Rx descriptor + * @ring: descriptor ring + * @rx_desc: specific descriptor + **/ +static inline u32 i40e_rx_hash(struct i40e_ring *ring, + union i40e_rx_desc *rx_desc) +{ + const __le64 rss_mask = + cpu_to_le64((u64)I40E_RX_DESC_FLTSTAT_RSS_HASH << + I40E_RX_DESC_STATUS_FLTSTAT_SHIFT); + + if ((ring->netdev->features & NETIF_F_RXHASH) && + (rx_desc->wb.qword1.status_error_len & rss_mask) == rss_mask) + return le32_to_cpu(rx_desc->wb.qword0.hi_dword.rss); + else + return 0; +} + +/** + * i40e_ptype_to_hash - get a hash type + * @ptype: the ptype value from the descriptor + * + * Returns a hash type to be used by skb_set_hash + **/ +static inline enum pkt_hash_types i40e_ptype_to_hash(u8 ptype) +{ + struct i40e_rx_ptype_decoded decoded = decode_rx_desc_ptype(ptype); + + if (!decoded.known) + return PKT_HASH_TYPE_NONE; + + if (decoded.outer_ip == I40E_RX_PTYPE_OUTER_IP && + decoded.payload_layer == I40E_RX_PTYPE_PAYLOAD_LAYER_PAY4) + return PKT_HASH_TYPE_L4; + else if (decoded.outer_ip == I40E_RX_PTYPE_OUTER_IP && + decoded.payload_layer == I40E_RX_PTYPE_PAYLOAD_LAYER_PAY3) + return PKT_HASH_TYPE_L3; + else + return PKT_HASH_TYPE_L2; +} + +/** + * i40e_clean_rx_irq - Reclaim resources after receive completes + * @rx_ring: rx ring to clean + * @budget: how many cleans we're allowed + * + * Returns true if there's any budget left (e.g. the clean is finished) + **/ +static int i40e_clean_rx_irq(struct i40e_ring *rx_ring, int budget) +{ + unsigned int total_rx_bytes = 0, total_rx_packets = 0; + u16 rx_packet_len, rx_header_len, rx_sph, rx_hbo; + u16 cleaned_count = I40E_DESC_UNUSED(rx_ring); + const int current_node = numa_node_id(); + struct i40e_vsi *vsi = rx_ring->vsi; + u16 i = rx_ring->next_to_clean; + union i40e_rx_desc *rx_desc; + u32 rx_error, rx_status; + u8 rx_ptype; + u64 qword; + + rx_desc = I40E_RX_DESC(rx_ring, i); + qword = le64_to_cpu(rx_desc->wb.qword1.status_error_len); + rx_status = (qword & I40E_RXD_QW1_STATUS_MASK) >> + I40E_RXD_QW1_STATUS_SHIFT; + + while (rx_status & (1 << I40E_RX_DESC_STATUS_DD_SHIFT)) { + union i40e_rx_desc *next_rxd; + struct i40e_rx_buffer *rx_bi; + struct sk_buff *skb; + u16 vlan_tag; + rx_bi = &rx_ring->rx_bi[i]; + skb = rx_bi->skb; + prefetch(skb->data); + + rx_packet_len = (qword & I40E_RXD_QW1_LENGTH_PBUF_MASK) >> + I40E_RXD_QW1_LENGTH_PBUF_SHIFT; + rx_header_len = (qword & I40E_RXD_QW1_LENGTH_HBUF_MASK) >> + I40E_RXD_QW1_LENGTH_HBUF_SHIFT; + rx_sph = (qword & I40E_RXD_QW1_LENGTH_SPH_MASK) >> + I40E_RXD_QW1_LENGTH_SPH_SHIFT; + + rx_error = (qword & I40E_RXD_QW1_ERROR_MASK) >> + I40E_RXD_QW1_ERROR_SHIFT; + rx_hbo = rx_error & (1 << I40E_RX_DESC_ERROR_HBO_SHIFT); + rx_error &= ~(1 << I40E_RX_DESC_ERROR_HBO_SHIFT); + + rx_ptype = (qword & I40E_RXD_QW1_PTYPE_MASK) >> + I40E_RXD_QW1_PTYPE_SHIFT; + rx_bi->skb = NULL; + + /* This memory barrier is needed to keep us from reading + * any other fields out of the rx_desc until we know the + * STATUS_DD bit is set + */ + rmb(); + + /* Get the header and possibly the whole packet + * If this is an skb from previous receive dma will be 0 + */ + if (rx_bi->dma) { + u16 len; + + if (rx_hbo) + len = I40E_RX_HDR_SIZE; + else if (rx_sph) + len = rx_header_len; + else if (rx_packet_len) + len = rx_packet_len; /* 1buf/no split found */ + else + len = rx_header_len; /* split always mode */ + + skb_put(skb, len); + dma_unmap_single(rx_ring->dev, + rx_bi->dma, + rx_ring->rx_buf_len, + DMA_FROM_DEVICE); + rx_bi->dma = 0; + } + + /* Get the rest of the data if this was a header split */ + if (ring_is_ps_enabled(rx_ring) && rx_packet_len) { + + skb_fill_page_desc(skb, skb_shinfo(skb)->nr_frags, + rx_bi->page, + rx_bi->page_offset, + rx_packet_len); + + skb->len += rx_packet_len; + skb->data_len += rx_packet_len; + skb->truesize += rx_packet_len; + + if ((page_count(rx_bi->page) == 1) && + (page_to_nid(rx_bi->page) == current_node)) + get_page(rx_bi->page); + else + rx_bi->page = NULL; + + dma_unmap_page(rx_ring->dev, + rx_bi->page_dma, + PAGE_SIZE / 2, + DMA_FROM_DEVICE); + rx_bi->page_dma = 0; + } + I40E_RX_NEXT_DESC_PREFETCH(rx_ring, i, next_rxd); + + if (unlikely( + !(rx_status & (1 << I40E_RX_DESC_STATUS_EOF_SHIFT)))) { + struct i40e_rx_buffer *next_buffer; + + next_buffer = &rx_ring->rx_bi[i]; + + if (ring_is_ps_enabled(rx_ring)) { + rx_bi->skb = next_buffer->skb; + rx_bi->dma = next_buffer->dma; + next_buffer->skb = skb; + next_buffer->dma = 0; + } + rx_ring->rx_stats.non_eop_descs++; + goto next_desc; + } + + /* ERR_MASK will only have valid bits if EOP set */ + if (unlikely(rx_error & (1 << I40E_RX_DESC_ERROR_RXE_SHIFT))) { + dev_kfree_skb_any(skb); + goto next_desc; + } + + skb_set_hash(skb, i40e_rx_hash(rx_ring, rx_desc), + i40e_ptype_to_hash(rx_ptype)); + /* probably a little skewed due to removing CRC */ + total_rx_bytes += skb->len; + total_rx_packets++; + + skb->protocol = eth_type_trans(skb, rx_ring->netdev); + + i40e_rx_checksum(vsi, skb, rx_status, rx_error, rx_ptype); + + vlan_tag = rx_status & (1 << I40E_RX_DESC_STATUS_L2TAG1P_SHIFT) + ? le16_to_cpu(rx_desc->wb.qword0.lo_dword.l2tag1) + : 0; + i40e_receive_skb(rx_ring, skb, vlan_tag); + + rx_ring->netdev->last_rx = jiffies; + budget--; +next_desc: + rx_desc->wb.qword1.status_error_len = 0; + if (!budget) + break; + + cleaned_count++; + /* return some buffers to hardware, one at a time is too slow */ + if (cleaned_count >= I40E_RX_BUFFER_WRITE) { + i40evf_alloc_rx_buffers(rx_ring, cleaned_count); + cleaned_count = 0; + } + + /* use prefetched values */ + rx_desc = next_rxd; + qword = le64_to_cpu(rx_desc->wb.qword1.status_error_len); + rx_status = (qword & I40E_RXD_QW1_STATUS_MASK) >> + I40E_RXD_QW1_STATUS_SHIFT; + } + + rx_ring->next_to_clean = i; + u64_stats_update_begin(&rx_ring->syncp); + rx_ring->stats.packets += total_rx_packets; + rx_ring->stats.bytes += total_rx_bytes; + u64_stats_update_end(&rx_ring->syncp); + rx_ring->q_vector->rx.total_packets += total_rx_packets; + rx_ring->q_vector->rx.total_bytes += total_rx_bytes; + + if (cleaned_count) + i40evf_alloc_rx_buffers(rx_ring, cleaned_count); + + return budget > 0; +} + +/** + * i40evf_napi_poll - NAPI polling Rx/Tx cleanup routine + * @napi: napi struct with our devices info in it + * @budget: amount of work driver is allowed to do this pass, in packets + * + * This function will clean all queues associated with a q_vector. + * + * Returns the amount of work done + **/ +int i40evf_napi_poll(struct napi_struct *napi, int budget) +{ + struct i40e_q_vector *q_vector = + container_of(napi, struct i40e_q_vector, napi); + struct i40e_vsi *vsi = q_vector->vsi; + struct i40e_ring *ring; + bool clean_complete = true; + int budget_per_ring; + + if (test_bit(__I40E_DOWN, &vsi->state)) { + napi_complete(napi); + return 0; + } + + /* Since the actual Tx work is minimal, we can give the Tx a larger + * budget and be more aggressive about cleaning up the Tx descriptors. + */ + i40e_for_each_ring(ring, q_vector->tx) + clean_complete &= i40e_clean_tx_irq(ring, vsi->work_limit); + + /* We attempt to distribute budget to each Rx queue fairly, but don't + * allow the budget to go below 1 because that would exit polling early. + */ + budget_per_ring = max(budget/q_vector->num_ringpairs, 1); + + i40e_for_each_ring(ring, q_vector->rx) + clean_complete &= i40e_clean_rx_irq(ring, budget_per_ring); + + /* If work not completed, return budget and polling will return */ + if (!clean_complete) + return budget; + + /* Work is done so exit the polling mode and re-enable the interrupt */ + napi_complete(napi); + if (ITR_IS_DYNAMIC(vsi->rx_itr_setting) || + ITR_IS_DYNAMIC(vsi->tx_itr_setting)) + i40e_update_dynamic_itr(q_vector); + + if (!test_bit(__I40E_DOWN, &vsi->state)) + i40evf_irq_enable_queues(vsi->back, 1 << q_vector->v_idx); + + return 0; +} + +/** + * i40e_tx_prepare_vlan_flags - prepare generic TX VLAN tagging flags for HW + * @skb: send buffer + * @tx_ring: ring to send buffer on + * @flags: the tx flags to be set + * + * Checks the skb and set up correspondingly several generic transmit flags + * related to VLAN tagging for the HW, such as VLAN, DCB, etc. + * + * Returns error code indicate the frame should be dropped upon error and the + * otherwise returns 0 to indicate the flags has been set properly. + **/ +static int i40e_tx_prepare_vlan_flags(struct sk_buff *skb, + struct i40e_ring *tx_ring, + u32 *flags) +{ + __be16 protocol = skb->protocol; + u32 tx_flags = 0; + + /* if we have a HW VLAN tag being added, default to the HW one */ + if (vlan_tx_tag_present(skb)) { + tx_flags |= vlan_tx_tag_get(skb) << I40E_TX_FLAGS_VLAN_SHIFT; + tx_flags |= I40E_TX_FLAGS_HW_VLAN; + /* else if it is a SW VLAN, check the next protocol and store the tag */ + } else if (protocol == htons(ETH_P_8021Q)) { + struct vlan_hdr *vhdr, _vhdr; + vhdr = skb_header_pointer(skb, ETH_HLEN, sizeof(_vhdr), &_vhdr); + if (!vhdr) + return -EINVAL; + + protocol = vhdr->h_vlan_encapsulated_proto; + tx_flags |= ntohs(vhdr->h_vlan_TCI) << I40E_TX_FLAGS_VLAN_SHIFT; + tx_flags |= I40E_TX_FLAGS_SW_VLAN; + } + + *flags = tx_flags; + return 0; +} + +/** + * i40e_tso - set up the tso context descriptor + * @tx_ring: ptr to the ring to send + * @skb: ptr to the skb we're sending + * @tx_flags: the collected send information + * @protocol: the send protocol + * @hdr_len: ptr to the size of the packet header + * @cd_tunneling: ptr to context descriptor bits + * + * Returns 0 if no TSO can happen, 1 if tso is going, or error + **/ +static int i40e_tso(struct i40e_ring *tx_ring, struct sk_buff *skb, + u32 tx_flags, __be16 protocol, u8 *hdr_len, + u64 *cd_type_cmd_tso_mss, u32 *cd_tunneling) +{ + u32 cd_cmd, cd_tso_len, cd_mss; + struct ipv6hdr *ipv6h; + struct tcphdr *tcph; + struct iphdr *iph; + u32 l4len; + int err; + + if (!skb_is_gso(skb)) + return 0; + + err = skb_cow_head(skb, 0); + if (err < 0) + return err; + + if (protocol == htons(ETH_P_IP)) { + iph = skb->encapsulation ? inner_ip_hdr(skb) : ip_hdr(skb); + tcph = skb->encapsulation ? inner_tcp_hdr(skb) : tcp_hdr(skb); + iph->tot_len = 0; + iph->check = 0; + tcph->check = ~csum_tcpudp_magic(iph->saddr, iph->daddr, + 0, IPPROTO_TCP, 0); + } else if (skb_is_gso_v6(skb)) { + + ipv6h = skb->encapsulation ? inner_ipv6_hdr(skb) + : ipv6_hdr(skb); + tcph = skb->encapsulation ? inner_tcp_hdr(skb) : tcp_hdr(skb); + ipv6h->payload_len = 0; + tcph->check = ~csum_ipv6_magic(&ipv6h->saddr, &ipv6h->daddr, + 0, IPPROTO_TCP, 0); + } + + l4len = skb->encapsulation ? inner_tcp_hdrlen(skb) : tcp_hdrlen(skb); + *hdr_len = (skb->encapsulation + ? (skb_inner_transport_header(skb) - skb->data) + : skb_transport_offset(skb)) + l4len; + + /* find the field values */ + cd_cmd = I40E_TX_CTX_DESC_TSO; + cd_tso_len = skb->len - *hdr_len; + cd_mss = skb_shinfo(skb)->gso_size; + *cd_type_cmd_tso_mss |= ((u64)cd_cmd << I40E_TXD_CTX_QW1_CMD_SHIFT) | + ((u64)cd_tso_len << + I40E_TXD_CTX_QW1_TSO_LEN_SHIFT) | + ((u64)cd_mss << I40E_TXD_CTX_QW1_MSS_SHIFT); + return 1; +} + +/** + * i40e_tx_enable_csum - Enable Tx checksum offloads + * @skb: send buffer + * @tx_flags: Tx flags currently set + * @td_cmd: Tx descriptor command bits to set + * @td_offset: Tx descriptor header offsets to set + * @cd_tunneling: ptr to context desc bits + **/ +static void i40e_tx_enable_csum(struct sk_buff *skb, u32 tx_flags, + u32 *td_cmd, u32 *td_offset, + struct i40e_ring *tx_ring, + u32 *cd_tunneling) +{ + struct ipv6hdr *this_ipv6_hdr; + unsigned int this_tcp_hdrlen; + struct iphdr *this_ip_hdr; + u32 network_hdr_len; + u8 l4_hdr = 0; + + if (skb->encapsulation) { + network_hdr_len = skb_inner_network_header_len(skb); + this_ip_hdr = inner_ip_hdr(skb); + this_ipv6_hdr = inner_ipv6_hdr(skb); + this_tcp_hdrlen = inner_tcp_hdrlen(skb); + + if (tx_flags & I40E_TX_FLAGS_IPV4) { + + if (tx_flags & I40E_TX_FLAGS_TSO) { + *cd_tunneling |= I40E_TX_CTX_EXT_IP_IPV4; + ip_hdr(skb)->check = 0; + } else { + *cd_tunneling |= + I40E_TX_CTX_EXT_IP_IPV4_NO_CSUM; + } + } else if (tx_flags & I40E_TX_FLAGS_IPV6) { + if (tx_flags & I40E_TX_FLAGS_TSO) { + *cd_tunneling |= I40E_TX_CTX_EXT_IP_IPV6; + ip_hdr(skb)->check = 0; + } else { + *cd_tunneling |= + I40E_TX_CTX_EXT_IP_IPV4_NO_CSUM; + } + } + + /* Now set the ctx descriptor fields */ + *cd_tunneling |= (skb_network_header_len(skb) >> 2) << + I40E_TXD_CTX_QW0_EXT_IPLEN_SHIFT | + I40E_TXD_CTX_UDP_TUNNELING | + ((skb_inner_network_offset(skb) - + skb_transport_offset(skb)) >> 1) << + I40E_TXD_CTX_QW0_NATLEN_SHIFT; + + } else { + network_hdr_len = skb_network_header_len(skb); + this_ip_hdr = ip_hdr(skb); + this_ipv6_hdr = ipv6_hdr(skb); + this_tcp_hdrlen = tcp_hdrlen(skb); + } + + /* Enable IP checksum offloads */ + if (tx_flags & I40E_TX_FLAGS_IPV4) { + l4_hdr = this_ip_hdr->protocol; + /* the stack computes the IP header already, the only time we + * need the hardware to recompute it is in the case of TSO. + */ + if (tx_flags & I40E_TX_FLAGS_TSO) { + *td_cmd |= I40E_TX_DESC_CMD_IIPT_IPV4_CSUM; + this_ip_hdr->check = 0; + } else { + *td_cmd |= I40E_TX_DESC_CMD_IIPT_IPV4; + } + /* Now set the td_offset for IP header length */ + *td_offset = (network_hdr_len >> 2) << + I40E_TX_DESC_LENGTH_IPLEN_SHIFT; + } else if (tx_flags & I40E_TX_FLAGS_IPV6) { + l4_hdr = this_ipv6_hdr->nexthdr; + *td_cmd |= I40E_TX_DESC_CMD_IIPT_IPV6; + /* Now set the td_offset for IP header length */ + *td_offset = (network_hdr_len >> 2) << + I40E_TX_DESC_LENGTH_IPLEN_SHIFT; + } + /* words in MACLEN + dwords in IPLEN + dwords in L4Len */ + *td_offset |= (skb_network_offset(skb) >> 1) << + I40E_TX_DESC_LENGTH_MACLEN_SHIFT; + + /* Enable L4 checksum offloads */ + switch (l4_hdr) { + case IPPROTO_TCP: + /* enable checksum offloads */ + *td_cmd |= I40E_TX_DESC_CMD_L4T_EOFT_TCP; + *td_offset |= (this_tcp_hdrlen >> 2) << + I40E_TX_DESC_LENGTH_L4_FC_LEN_SHIFT; + break; + case IPPROTO_SCTP: + /* enable SCTP checksum offload */ + *td_cmd |= I40E_TX_DESC_CMD_L4T_EOFT_SCTP; + *td_offset |= (sizeof(struct sctphdr) >> 2) << + I40E_TX_DESC_LENGTH_L4_FC_LEN_SHIFT; + break; + case IPPROTO_UDP: + /* enable UDP checksum offload */ + *td_cmd |= I40E_TX_DESC_CMD_L4T_EOFT_UDP; + *td_offset |= (sizeof(struct udphdr) >> 2) << + I40E_TX_DESC_LENGTH_L4_FC_LEN_SHIFT; + break; + default: + break; + } +} + +/** + * i40e_create_tx_ctx Build the Tx context descriptor + * @tx_ring: ring to create the descriptor on + * @cd_type_cmd_tso_mss: Quad Word 1 + * @cd_tunneling: Quad Word 0 - bits 0-31 + * @cd_l2tag2: Quad Word 0 - bits 32-63 + **/ +static void i40e_create_tx_ctx(struct i40e_ring *tx_ring, + const u64 cd_type_cmd_tso_mss, + const u32 cd_tunneling, const u32 cd_l2tag2) +{ + struct i40e_tx_context_desc *context_desc; + int i = tx_ring->next_to_use; + + if ((cd_type_cmd_tso_mss == I40E_TX_DESC_DTYPE_CONTEXT) && + !cd_tunneling && !cd_l2tag2) + return; + + /* grab the next descriptor */ + context_desc = I40E_TX_CTXTDESC(tx_ring, i); + + i++; + tx_ring->next_to_use = (i < tx_ring->count) ? i : 0; + + /* cpu_to_le32 and assign to struct fields */ + context_desc->tunneling_params = cpu_to_le32(cd_tunneling); + context_desc->l2tag2 = cpu_to_le16(cd_l2tag2); + context_desc->type_cmd_tso_mss = cpu_to_le64(cd_type_cmd_tso_mss); +} + +/** + * i40e_tx_map - Build the Tx descriptor + * @tx_ring: ring to send buffer on + * @skb: send buffer + * @first: first buffer info buffer to use + * @tx_flags: collected send information + * @hdr_len: size of the packet header + * @td_cmd: the command field in the descriptor + * @td_offset: offset for checksum or crc + **/ +static void i40e_tx_map(struct i40e_ring *tx_ring, struct sk_buff *skb, + struct i40e_tx_buffer *first, u32 tx_flags, + const u8 hdr_len, u32 td_cmd, u32 td_offset) +{ + unsigned int data_len = skb->data_len; + unsigned int size = skb_headlen(skb); + struct skb_frag_struct *frag; + struct i40e_tx_buffer *tx_bi; + struct i40e_tx_desc *tx_desc; + u16 i = tx_ring->next_to_use; + u32 td_tag = 0; + dma_addr_t dma; + u16 gso_segs; + + if (tx_flags & I40E_TX_FLAGS_HW_VLAN) { + td_cmd |= I40E_TX_DESC_CMD_IL2TAG1; + td_tag = (tx_flags & I40E_TX_FLAGS_VLAN_MASK) >> + I40E_TX_FLAGS_VLAN_SHIFT; + } + + if (tx_flags & (I40E_TX_FLAGS_TSO | I40E_TX_FLAGS_FSO)) + gso_segs = skb_shinfo(skb)->gso_segs; + else + gso_segs = 1; + + /* multiply data chunks by size of headers */ + first->bytecount = skb->len - hdr_len + (gso_segs * hdr_len); + first->gso_segs = gso_segs; + first->skb = skb; + first->tx_flags = tx_flags; + + dma = dma_map_single(tx_ring->dev, skb->data, size, DMA_TO_DEVICE); + + tx_desc = I40E_TX_DESC(tx_ring, i); + tx_bi = first; + + for (frag = &skb_shinfo(skb)->frags[0];; frag++) { + if (dma_mapping_error(tx_ring->dev, dma)) + goto dma_error; + + /* record length, and DMA address */ + dma_unmap_len_set(tx_bi, len, size); + dma_unmap_addr_set(tx_bi, dma, dma); + + tx_desc->buffer_addr = cpu_to_le64(dma); + + while (unlikely(size > I40E_MAX_DATA_PER_TXD)) { + tx_desc->cmd_type_offset_bsz = + build_ctob(td_cmd, td_offset, + I40E_MAX_DATA_PER_TXD, td_tag); + + tx_desc++; + i++; + if (i == tx_ring->count) { + tx_desc = I40E_TX_DESC(tx_ring, 0); + i = 0; + } + + dma += I40E_MAX_DATA_PER_TXD; + size -= I40E_MAX_DATA_PER_TXD; + + tx_desc->buffer_addr = cpu_to_le64(dma); + } + + if (likely(!data_len)) + break; + + tx_desc->cmd_type_offset_bsz = build_ctob(td_cmd, td_offset, + size, td_tag); + + tx_desc++; + i++; + if (i == tx_ring->count) { + tx_desc = I40E_TX_DESC(tx_ring, 0); + i = 0; + } + + size = skb_frag_size(frag); + data_len -= size; + + dma = skb_frag_dma_map(tx_ring->dev, frag, 0, size, + DMA_TO_DEVICE); + + tx_bi = &tx_ring->tx_bi[i]; + } + + /* Place RS bit on last descriptor of any packet that spans across the + * 4th descriptor (WB_STRIDE aka 0x3) in a 64B cacheline. + */ +#define WB_STRIDE 0x3 + if (((i & WB_STRIDE) != WB_STRIDE) && + (first <= &tx_ring->tx_bi[i]) && + (first >= &tx_ring->tx_bi[i & ~WB_STRIDE])) { + tx_desc->cmd_type_offset_bsz = + build_ctob(td_cmd, td_offset, size, td_tag) | + cpu_to_le64((u64)I40E_TX_DESC_CMD_EOP << + I40E_TXD_QW1_CMD_SHIFT); + } else { + tx_desc->cmd_type_offset_bsz = + build_ctob(td_cmd, td_offset, size, td_tag) | + cpu_to_le64((u64)I40E_TXD_CMD << + I40E_TXD_QW1_CMD_SHIFT); + } + + netdev_tx_sent_queue(netdev_get_tx_queue(tx_ring->netdev, + tx_ring->queue_index), + first->bytecount); + + /* set the timestamp */ + first->time_stamp = jiffies; + + /* Force memory writes to complete before letting h/w + * know there are new descriptors to fetch. (Only + * applicable for weak-ordered memory model archs, + * such as IA-64). + */ + wmb(); + + /* set next_to_watch value indicating a packet is present */ + first->next_to_watch = tx_desc; + + i++; + if (i == tx_ring->count) + i = 0; + + tx_ring->next_to_use = i; + + /* notify HW of packet */ + writel(i, tx_ring->tail); + + return; + +dma_error: + dev_info(tx_ring->dev, "TX DMA map failed\n"); + + /* clear dma mappings for failed tx_bi map */ + for (;;) { + tx_bi = &tx_ring->tx_bi[i]; + i40e_unmap_and_free_tx_resource(tx_ring, tx_bi); + if (tx_bi == first) + break; + if (i == 0) + i = tx_ring->count; + i--; + } + + tx_ring->next_to_use = i; +} + +/** + * __i40e_maybe_stop_tx - 2nd level check for tx stop conditions + * @tx_ring: the ring to be checked + * @size: the size buffer we want to assure is available + * + * Returns -EBUSY if a stop is needed, else 0 + **/ +static inline int __i40e_maybe_stop_tx(struct i40e_ring *tx_ring, int size) +{ + netif_stop_subqueue(tx_ring->netdev, tx_ring->queue_index); + /* Memory barrier before checking head and tail */ + smp_mb(); + + /* Check again in a case another CPU has just made room available. */ + if (likely(I40E_DESC_UNUSED(tx_ring) < size)) + return -EBUSY; + + /* A reprieve! - use start_queue because it doesn't call schedule */ + netif_start_subqueue(tx_ring->netdev, tx_ring->queue_index); + ++tx_ring->tx_stats.restart_queue; + return 0; +} + +/** + * i40e_maybe_stop_tx - 1st level check for tx stop conditions + * @tx_ring: the ring to be checked + * @size: the size buffer we want to assure is available + * + * Returns 0 if stop is not needed + **/ +static int i40e_maybe_stop_tx(struct i40e_ring *tx_ring, int size) +{ + if (likely(I40E_DESC_UNUSED(tx_ring) >= size)) + return 0; + return __i40e_maybe_stop_tx(tx_ring, size); +} + +/** + * i40e_xmit_descriptor_count - calculate number of tx descriptors needed + * @skb: send buffer + * @tx_ring: ring to send buffer on + * + * Returns number of data descriptors needed for this skb. Returns 0 to indicate + * there is not enough descriptors available in this ring since we need at least + * one descriptor. + **/ +static int i40e_xmit_descriptor_count(struct sk_buff *skb, + struct i40e_ring *tx_ring) +{ +#if PAGE_SIZE > I40E_MAX_DATA_PER_TXD + unsigned int f; +#endif + int count = 0; + + /* need: 1 descriptor per page * PAGE_SIZE/I40E_MAX_DATA_PER_TXD, + * + 1 desc for skb_head_len/I40E_MAX_DATA_PER_TXD, + * + 4 desc gap to avoid the cache line where head is, + * + 1 desc for context descriptor, + * otherwise try next time + */ +#if PAGE_SIZE > I40E_MAX_DATA_PER_TXD + for (f = 0; f < skb_shinfo(skb)->nr_frags; f++) + count += TXD_USE_COUNT(skb_shinfo(skb)->frags[f].size); +#else + count += skb_shinfo(skb)->nr_frags; +#endif + count += TXD_USE_COUNT(skb_headlen(skb)); + if (i40e_maybe_stop_tx(tx_ring, count + 4 + 1)) { + tx_ring->tx_stats.tx_busy++; + return 0; + } + return count; +} + +/** + * i40e_xmit_frame_ring - Sends buffer on Tx ring + * @skb: send buffer + * @tx_ring: ring to send buffer on + * + * Returns NETDEV_TX_OK if sent, else an error code + **/ +static netdev_tx_t i40e_xmit_frame_ring(struct sk_buff *skb, + struct i40e_ring *tx_ring) +{ + u64 cd_type_cmd_tso_mss = I40E_TX_DESC_DTYPE_CONTEXT; + u32 cd_tunneling = 0, cd_l2tag2 = 0; + struct i40e_tx_buffer *first; + u32 td_offset = 0; + u32 tx_flags = 0; + __be16 protocol; + u32 td_cmd = 0; + u8 hdr_len = 0; + int tso; + if (0 == i40e_xmit_descriptor_count(skb, tx_ring)) + return NETDEV_TX_BUSY; + + /* prepare the xmit flags */ + if (i40e_tx_prepare_vlan_flags(skb, tx_ring, &tx_flags)) + goto out_drop; + + /* obtain protocol of skb */ + protocol = skb->protocol; + + /* record the location of the first descriptor for this packet */ + first = &tx_ring->tx_bi[tx_ring->next_to_use]; + + /* setup IPv4/IPv6 offloads */ + if (protocol == htons(ETH_P_IP)) + tx_flags |= I40E_TX_FLAGS_IPV4; + else if (protocol == htons(ETH_P_IPV6)) + tx_flags |= I40E_TX_FLAGS_IPV6; + + tso = i40e_tso(tx_ring, skb, tx_flags, protocol, &hdr_len, + &cd_type_cmd_tso_mss, &cd_tunneling); + + if (tso < 0) + goto out_drop; + else if (tso) + tx_flags |= I40E_TX_FLAGS_TSO; + + skb_tx_timestamp(skb); + + /* always enable CRC insertion offload */ + td_cmd |= I40E_TX_DESC_CMD_ICRC; + + /* Always offload the checksum, since it's in the data descriptor */ + if (skb->ip_summed == CHECKSUM_PARTIAL) { + tx_flags |= I40E_TX_FLAGS_CSUM; + + i40e_tx_enable_csum(skb, tx_flags, &td_cmd, &td_offset, + tx_ring, &cd_tunneling); + } + + i40e_create_tx_ctx(tx_ring, cd_type_cmd_tso_mss, + cd_tunneling, cd_l2tag2); + + i40e_tx_map(tx_ring, skb, first, tx_flags, hdr_len, + td_cmd, td_offset); + + i40e_maybe_stop_tx(tx_ring, DESC_NEEDED); + + return NETDEV_TX_OK; + +out_drop: + dev_kfree_skb_any(skb); + return NETDEV_TX_OK; +} + +/** + * i40evf_xmit_frame - Selects the correct VSI and Tx queue to send buffer + * @skb: send buffer + * @netdev: network interface device structure + * + * Returns NETDEV_TX_OK if sent, else an error code + **/ +netdev_tx_t i40evf_xmit_frame(struct sk_buff *skb, struct net_device *netdev) +{ + struct i40evf_adapter *adapter = netdev_priv(netdev); + struct i40e_ring *tx_ring = adapter->tx_rings[skb->queue_mapping]; + + /* hardware can't handle really short frames, hardware padding works + * beyond this point + */ + if (unlikely(skb->len < I40E_MIN_TX_LEN)) { + if (skb_pad(skb, I40E_MIN_TX_LEN - skb->len)) + return NETDEV_TX_OK; + skb->len = I40E_MIN_TX_LEN; + skb_set_tail_pointer(skb, I40E_MIN_TX_LEN); + } + + return i40e_xmit_frame_ring(skb, tx_ring); +} --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40evf/i40e_txrx.h +++ linux-3.13.0/drivers/net/ethernet/intel/i40evf/i40e_txrx.h @@ -0,0 +1,296 @@ +/******************************************************************************* + * + * Intel Ethernet Controller XL710 Family Linux Virtual Function Driver + * Copyright(c) 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. + * + * The full GNU General Public License is included in this distribution in + * the file called "COPYING". + * + * Contact Information: + * e1000-devel Mailing List + * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 + * + ******************************************************************************/ + +#ifndef _I40E_TXRX_H_ +#define _I40E_TXRX_H_ + +/* Interrupt Throttling and Rate Limiting (storm control) Goodies */ + +#define I40E_MAX_ITR 0x0FF0 /* reg uses 2 usec resolution */ +#define I40E_MIN_ITR 0x0004 /* reg uses 2 usec resolution */ +#define I40E_MAX_IRATE 0x03F +#define I40E_MIN_IRATE 0x001 +#define I40E_IRATE_USEC_RESOLUTION 4 +#define I40E_ITR_100K 0x0005 +#define I40E_ITR_20K 0x0019 +#define I40E_ITR_8K 0x003E +#define I40E_ITR_4K 0x007A +#define I40E_ITR_RX_DEF I40E_ITR_8K +#define I40E_ITR_TX_DEF I40E_ITR_4K +#define I40E_ITR_DYNAMIC 0x8000 /* use top bit as a flag */ +#define I40E_MIN_INT_RATE 250 /* ~= 1000000 / (I40E_MAX_ITR * 2) */ +#define I40E_MAX_INT_RATE 500000 /* == 1000000 / (I40E_MIN_ITR * 2) */ +#define I40E_DEFAULT_IRQ_WORK 256 +#define ITR_TO_REG(setting) ((setting & ~I40E_ITR_DYNAMIC) >> 1) +#define ITR_IS_DYNAMIC(setting) (!!(setting & I40E_ITR_DYNAMIC)) +#define ITR_REG_TO_USEC(itr_reg) (itr_reg << 1) + +#define I40E_QUEUE_END_OF_LIST 0x7FF + +/* this enum matches hardware bits and is meant to be used by DYN_CTLN + * registers and QINT registers or more generally anywhere in the manual + * mentioning ITR_INDX, ITR_NONE cannot be used as an index 'n' into any + * register but instead is a special value meaning "don't update" ITR0/1/2. + */ +enum i40e_dyn_idx_t { + I40E_IDX_ITR0 = 0, + I40E_IDX_ITR1 = 1, + I40E_IDX_ITR2 = 2, + I40E_ITR_NONE = 3 /* ITR_NONE must not be used as an index */ +}; + +/* these are indexes into ITRN registers */ +#define I40E_RX_ITR I40E_IDX_ITR0 +#define I40E_TX_ITR I40E_IDX_ITR1 +#define I40E_PE_ITR I40E_IDX_ITR2 + +/* Supported RSS offloads */ +#define I40E_DEFAULT_RSS_HENA ( \ + ((u64)1 << I40E_FILTER_PCTYPE_NONF_UNICAST_IPV4_UDP) | \ + ((u64)1 << I40E_FILTER_PCTYPE_NONF_MULTICAST_IPV4_UDP) | \ + ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV4_UDP) | \ + ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV4_SCTP) | \ + ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV4_TCP_SYN) | \ + ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV4_TCP) | \ + ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV4_OTHER) | \ + ((u64)1 << I40E_FILTER_PCTYPE_FRAG_IPV4) | \ + ((u64)1 << I40E_FILTER_PCTYPE_NONF_UNICAST_IPV6_UDP) | \ + ((u64)1 << I40E_FILTER_PCTYPE_NONF_MULTICAST_IPV6_UDP) | \ + ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV6_UDP) | \ + ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV6_TCP_SYN) | \ + ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV6_TCP) | \ + ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV6_SCTP) | \ + ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV6_OTHER) | \ + ((u64)1 << I40E_FILTER_PCTYPE_FRAG_IPV6) | \ + ((u64)1 << I40E_FILTER_PCTYPE_L2_PAYLOAD)) + +/* Supported Rx Buffer Sizes */ +#define I40E_RXBUFFER_512 512 /* Used for packet split */ +#define I40E_RXBUFFER_2048 2048 +#define I40E_RXBUFFER_3072 3072 /* For FCoE MTU of 2158 */ +#define I40E_RXBUFFER_4096 4096 +#define I40E_RXBUFFER_8192 8192 +#define I40E_MAX_RXBUFFER 9728 /* largest size for single descriptor */ + +/* NOTE: netdev_alloc_skb reserves up to 64 bytes, NET_IP_ALIGN means we + * reserve 2 more, and skb_shared_info adds an additional 384 bytes more, + * this adds up to 512 bytes of extra data meaning the smallest allocation + * we could have is 1K. + * i.e. RXBUFFER_512 --> size-1024 slab + */ +#define I40E_RX_HDR_SIZE I40E_RXBUFFER_512 + +/* How many Rx Buffers do we bundle into one write to the hardware ? */ +#define I40E_RX_BUFFER_WRITE 16 /* Must be power of 2 */ +#define I40E_RX_NEXT_DESC(r, i, n) \ + do { \ + (i)++; \ + if ((i) == (r)->count) \ + i = 0; \ + (n) = I40E_RX_DESC((r), (i)); \ + } while (0) + +#define I40E_RX_NEXT_DESC_PREFETCH(r, i, n) \ + do { \ + I40E_RX_NEXT_DESC((r), (i), (n)); \ + prefetch((n)); \ + } while (0) + +#define i40e_rx_desc i40e_32byte_rx_desc + +#define I40E_MIN_TX_LEN 17 +#define I40E_MAX_DATA_PER_TXD 16383 /* aka 16kB - 1 */ + +/* Tx Descriptors needed, worst case */ +#define TXD_USE_COUNT(S) DIV_ROUND_UP((S), I40E_MAX_DATA_PER_TXD) +#define DESC_NEEDED ((MAX_SKB_FRAGS * TXD_USE_COUNT(PAGE_SIZE)) + 4) + +#define I40E_TX_FLAGS_CSUM (u32)(1) +#define I40E_TX_FLAGS_HW_VLAN (u32)(1 << 1) +#define I40E_TX_FLAGS_SW_VLAN (u32)(1 << 2) +#define I40E_TX_FLAGS_TSO (u32)(1 << 3) +#define I40E_TX_FLAGS_IPV4 (u32)(1 << 4) +#define I40E_TX_FLAGS_IPV6 (u32)(1 << 5) +#define I40E_TX_FLAGS_FCCRC (u32)(1 << 6) +#define I40E_TX_FLAGS_FSO (u32)(1 << 7) +#define I40E_TX_FLAGS_VLAN_MASK 0xffff0000 +#define I40E_TX_FLAGS_VLAN_PRIO_MASK 0xe0000000 +#define I40E_TX_FLAGS_VLAN_PRIO_SHIFT 29 +#define I40E_TX_FLAGS_VLAN_SHIFT 16 + +struct i40e_tx_buffer { + struct i40e_tx_desc *next_to_watch; + unsigned long time_stamp; + struct sk_buff *skb; + unsigned int bytecount; + unsigned short gso_segs; + DEFINE_DMA_UNMAP_ADDR(dma); + DEFINE_DMA_UNMAP_LEN(len); + u32 tx_flags; +}; + +struct i40e_rx_buffer { + struct sk_buff *skb; + dma_addr_t dma; + struct page *page; + dma_addr_t page_dma; + unsigned int page_offset; +}; + +struct i40e_queue_stats { + u64 packets; + u64 bytes; +}; + +struct i40e_tx_queue_stats { + u64 restart_queue; + u64 tx_busy; + u64 tx_done_old; +}; + +struct i40e_rx_queue_stats { + u64 non_eop_descs; + u64 alloc_page_failed; + u64 alloc_buff_failed; +}; + +enum i40e_ring_state_t { + __I40E_TX_FDIR_INIT_DONE, + __I40E_TX_XPS_INIT_DONE, + __I40E_TX_DETECT_HANG, + __I40E_HANG_CHECK_ARMED, + __I40E_RX_PS_ENABLED, + __I40E_RX_LRO_ENABLED, + __I40E_RX_16BYTE_DESC_ENABLED, +}; + +#define ring_is_ps_enabled(ring) \ + test_bit(__I40E_RX_PS_ENABLED, &(ring)->state) +#define set_ring_ps_enabled(ring) \ + set_bit(__I40E_RX_PS_ENABLED, &(ring)->state) +#define clear_ring_ps_enabled(ring) \ + clear_bit(__I40E_RX_PS_ENABLED, &(ring)->state) +#define check_for_tx_hang(ring) \ + test_bit(__I40E_TX_DETECT_HANG, &(ring)->state) +#define set_check_for_tx_hang(ring) \ + set_bit(__I40E_TX_DETECT_HANG, &(ring)->state) +#define clear_check_for_tx_hang(ring) \ + clear_bit(__I40E_TX_DETECT_HANG, &(ring)->state) +#define ring_is_lro_enabled(ring) \ + test_bit(__I40E_RX_LRO_ENABLED, &(ring)->state) +#define set_ring_lro_enabled(ring) \ + set_bit(__I40E_RX_LRO_ENABLED, &(ring)->state) +#define clear_ring_lro_enabled(ring) \ + clear_bit(__I40E_RX_LRO_ENABLED, &(ring)->state) +#define ring_is_16byte_desc_enabled(ring) \ + test_bit(__I40E_RX_16BYTE_DESC_ENABLED, &(ring)->state) +#define set_ring_16byte_desc_enabled(ring) \ + set_bit(__I40E_RX_16BYTE_DESC_ENABLED, &(ring)->state) +#define clear_ring_16byte_desc_enabled(ring) \ + clear_bit(__I40E_RX_16BYTE_DESC_ENABLED, &(ring)->state) + +/* struct that defines a descriptor ring, associated with a VSI */ +struct i40e_ring { + struct i40e_ring *next; /* pointer to next ring in q_vector */ + void *desc; /* Descriptor ring memory */ + struct device *dev; /* Used for DMA mapping */ + struct net_device *netdev; /* netdev ring maps to */ + union { + struct i40e_tx_buffer *tx_bi; + struct i40e_rx_buffer *rx_bi; + }; + unsigned long state; + u16 queue_index; /* Queue number of ring */ + u8 dcb_tc; /* Traffic class of ring */ + u8 __iomem *tail; + + u16 count; /* Number of descriptors */ + u16 reg_idx; /* HW register index of the ring */ + u16 rx_hdr_len; + u16 rx_buf_len; + u8 dtype; +#define I40E_RX_DTYPE_NO_SPLIT 0 +#define I40E_RX_DTYPE_SPLIT_ALWAYS 1 +#define I40E_RX_DTYPE_HEADER_SPLIT 2 + u8 hsplit; +#define I40E_RX_SPLIT_L2 0x1 +#define I40E_RX_SPLIT_IP 0x2 +#define I40E_RX_SPLIT_TCP_UDP 0x4 +#define I40E_RX_SPLIT_SCTP 0x8 + + /* used in interrupt processing */ + u16 next_to_use; + u16 next_to_clean; + + u8 atr_sample_rate; + u8 atr_count; + + bool ring_active; /* is ring online or not */ + + /* stats structs */ + struct i40e_queue_stats stats; + struct u64_stats_sync syncp; + union { + struct i40e_tx_queue_stats tx_stats; + struct i40e_rx_queue_stats rx_stats; + }; + + unsigned int size; /* length of descriptor ring in bytes */ + dma_addr_t dma; /* physical address of ring */ + + struct i40e_vsi *vsi; /* Backreference to associated VSI */ + struct i40e_q_vector *q_vector; /* Backreference to associated vector */ + + struct rcu_head rcu; /* to avoid race on free */ +} ____cacheline_internodealigned_in_smp; + +enum i40e_latency_range { + I40E_LOWEST_LATENCY = 0, + I40E_LOW_LATENCY = 1, + I40E_BULK_LATENCY = 2, +}; + +struct i40e_ring_container { + /* array of pointers to rings */ + struct i40e_ring *ring; + unsigned int total_bytes; /* total bytes processed this int */ + unsigned int total_packets; /* total packets processed this int */ + u16 count; + enum i40e_latency_range latency_range; + u16 itr; +}; + +/* iterator for handling rings in ring container */ +#define i40e_for_each_ring(pos, head) \ + for (pos = (head).ring; pos != NULL; pos = pos->next) + +void i40evf_alloc_rx_buffers(struct i40e_ring *rxr, u16 cleaned_count); +netdev_tx_t i40evf_xmit_frame(struct sk_buff *skb, struct net_device *netdev); +void i40evf_clean_tx_ring(struct i40e_ring *tx_ring); +void i40evf_clean_rx_ring(struct i40e_ring *rx_ring); +int i40evf_setup_tx_descriptors(struct i40e_ring *tx_ring); +int i40evf_setup_rx_descriptors(struct i40e_ring *rx_ring); +void i40evf_free_tx_resources(struct i40e_ring *tx_ring); +void i40evf_free_rx_resources(struct i40e_ring *rx_ring); +int i40evf_napi_poll(struct napi_struct *napi, int budget); +#endif /* _I40E_TXRX_H_ */ --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40evf/i40e_type.h +++ linux-3.13.0/drivers/net/ethernet/intel/i40evf/i40e_type.h @@ -0,0 +1,1160 @@ +/******************************************************************************* + * + * Intel Ethernet Controller XL710 Family Linux Virtual Function Driver + * Copyright(c) 2013 - 2014 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. + * + * The full GNU General Public License is included in this distribution in + * the file called "COPYING". + * + * Contact Information: + * e1000-devel Mailing List + * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 + * + ******************************************************************************/ + +#ifndef _I40E_TYPE_H_ +#define _I40E_TYPE_H_ + +#include "i40e_status.h" +#include "i40e_osdep.h" +#include "i40e_register.h" +#include "i40e_adminq.h" +#include "i40e_hmc.h" +#include "i40e_lan_hmc.h" + +/* Device IDs */ +#define I40E_DEV_ID_SFP_XL710 0x1572 +#define I40E_DEV_ID_SFP_X710 0x1573 +#define I40E_DEV_ID_QEMU 0x1574 +#define I40E_DEV_ID_KX_A 0x157F +#define I40E_DEV_ID_KX_B 0x1580 +#define I40E_DEV_ID_KX_C 0x1581 +#define I40E_DEV_ID_KX_D 0x1582 +#define I40E_DEV_ID_QSFP_A 0x1583 +#define I40E_DEV_ID_QSFP_B 0x1584 +#define I40E_DEV_ID_QSFP_C 0x1585 +#define I40E_DEV_ID_VF 0x154C +#define I40E_DEV_ID_VF_HV 0x1571 + +#define i40e_is_40G_device(d) ((d) == I40E_DEV_ID_QSFP_A || \ + (d) == I40E_DEV_ID_QSFP_B || \ + (d) == I40E_DEV_ID_QSFP_C) + +#define I40E_MAX_VSI_QP 16 +#define I40E_MAX_VF_VSI 3 +#define I40E_MAX_CHAINED_RX_BUFFERS 5 +#define I40E_MAX_PF_UDP_OFFLOAD_PORTS 16 + +/* Max default timeout in ms, */ +#define I40E_MAX_NVM_TIMEOUT 18000 + +/* Switch from mc to the 2usec global time (this is the GTIME resolution) */ +#define I40E_MS_TO_GTIME(time) (((time) * 1000) / 2) + +/* forward declaration */ +struct i40e_hw; +typedef void (*I40E_ADMINQ_CALLBACK)(struct i40e_hw *, struct i40e_aq_desc *); + +/* Data type manipulation macros. */ + +#define I40E_DESC_UNUSED(R) \ + ((((R)->next_to_clean > (R)->next_to_use) ? 0 : (R)->count) + \ + (R)->next_to_clean - (R)->next_to_use - 1) + +/* bitfields for Tx queue mapping in QTX_CTL */ +#define I40E_QTX_CTL_VF_QUEUE 0x0 +#define I40E_QTX_CTL_VM_QUEUE 0x1 +#define I40E_QTX_CTL_PF_QUEUE 0x2 + +/* debug masks - set these bits in hw->debug_mask to control output */ +enum i40e_debug_mask { + I40E_DEBUG_INIT = 0x00000001, + I40E_DEBUG_RELEASE = 0x00000002, + + I40E_DEBUG_LINK = 0x00000010, + I40E_DEBUG_PHY = 0x00000020, + I40E_DEBUG_HMC = 0x00000040, + I40E_DEBUG_NVM = 0x00000080, + I40E_DEBUG_LAN = 0x00000100, + I40E_DEBUG_FLOW = 0x00000200, + I40E_DEBUG_DCB = 0x00000400, + I40E_DEBUG_DIAG = 0x00000800, + I40E_DEBUG_FD = 0x00001000, + + I40E_DEBUG_AQ_MESSAGE = 0x01000000, + I40E_DEBUG_AQ_DESCRIPTOR = 0x02000000, + I40E_DEBUG_AQ_DESC_BUFFER = 0x04000000, + I40E_DEBUG_AQ_COMMAND = 0x06000000, + I40E_DEBUG_AQ = 0x0F000000, + + I40E_DEBUG_USER = 0xF0000000, + + I40E_DEBUG_ALL = 0xFFFFFFFF +}; + +/* PCI Bus Info */ +#define I40E_PCI_LINK_WIDTH_1 0x10 +#define I40E_PCI_LINK_WIDTH_2 0x20 +#define I40E_PCI_LINK_WIDTH_4 0x40 +#define I40E_PCI_LINK_WIDTH_8 0x80 +#define I40E_PCI_LINK_SPEED_2500 0x1 +#define I40E_PCI_LINK_SPEED_5000 0x2 +#define I40E_PCI_LINK_SPEED_8000 0x3 + +/* These are structs for managing the hardware information and the operations. + * The structures of function pointers are filled out at init time when we + * know for sure exactly which hardware we're working with. This gives us the + * flexibility of using the same main driver code but adapting to slightly + * different hardware needs as new parts are developed. For this architecture, + * the Firmware and AdminQ are intended to insulate the driver from most of the + * future changes, but these structures will also do part of the job. + */ +enum i40e_mac_type { + I40E_MAC_UNKNOWN = 0, + I40E_MAC_X710, + I40E_MAC_XL710, + I40E_MAC_VF, + I40E_MAC_GENERIC, +}; + +enum i40e_media_type { + I40E_MEDIA_TYPE_UNKNOWN = 0, + I40E_MEDIA_TYPE_FIBER, + I40E_MEDIA_TYPE_BASET, + I40E_MEDIA_TYPE_BACKPLANE, + I40E_MEDIA_TYPE_CX4, + I40E_MEDIA_TYPE_DA, + I40E_MEDIA_TYPE_VIRTUAL +}; + +enum i40e_fc_mode { + I40E_FC_NONE = 0, + I40E_FC_RX_PAUSE, + I40E_FC_TX_PAUSE, + I40E_FC_FULL, + I40E_FC_PFC, + I40E_FC_DEFAULT +}; + +enum i40e_vsi_type { + I40E_VSI_MAIN = 0, + I40E_VSI_VMDQ1, + I40E_VSI_VMDQ2, + I40E_VSI_CTRL, + I40E_VSI_FCOE, + I40E_VSI_MIRROR, + I40E_VSI_SRIOV, + I40E_VSI_FDIR, + I40E_VSI_TYPE_UNKNOWN +}; + +enum i40e_queue_type { + I40E_QUEUE_TYPE_RX = 0, + I40E_QUEUE_TYPE_TX, + I40E_QUEUE_TYPE_PE_CEQ, + I40E_QUEUE_TYPE_UNKNOWN +}; + +struct i40e_link_status { + enum i40e_aq_phy_type phy_type; + enum i40e_aq_link_speed link_speed; + u8 link_info; + u8 an_info; + u8 ext_info; + u8 loopback; + /* is Link Status Event notification to SW enabled */ + bool lse_enable; +}; + +struct i40e_phy_info { + struct i40e_link_status link_info; + struct i40e_link_status link_info_old; + u32 autoneg_advertised; + u32 phy_id; + u32 module_type; + bool get_link_info; + enum i40e_media_type media_type; +}; + +#define I40E_HW_CAP_MAX_GPIO 30 +/* Capabilities of a PF or a VF or the whole device */ +struct i40e_hw_capabilities { + u32 switch_mode; +#define I40E_NVM_IMAGE_TYPE_EVB 0x0 +#define I40E_NVM_IMAGE_TYPE_CLOUD 0x2 +#define I40E_NVM_IMAGE_TYPE_UDP_CLOUD 0x3 + + u32 management_mode; + u32 npar_enable; + u32 os2bmc; + u32 valid_functions; + bool sr_iov_1_1; + bool vmdq; + bool evb_802_1_qbg; /* Edge Virtual Bridging */ + bool evb_802_1_qbh; /* Bridge Port Extension */ + bool dcb; + bool fcoe; + bool mfp_mode_1; + bool mgmt_cem; + bool ieee_1588; + bool iwarp; + bool fd; + u32 fd_filters_guaranteed; + u32 fd_filters_best_effort; + bool rss; + u32 rss_table_size; + u32 rss_table_entry_width; + bool led[I40E_HW_CAP_MAX_GPIO]; + bool sdp[I40E_HW_CAP_MAX_GPIO]; + u32 nvm_image_type; + u32 num_flow_director_filters; + u32 num_vfs; + u32 vf_base_id; + u32 num_vsis; + u32 num_rx_qp; + u32 num_tx_qp; + u32 base_queue; + u32 num_msix_vectors; + u32 num_msix_vectors_vf; + u32 led_pin_num; + u32 sdp_pin_num; + u32 mdio_port_num; + u32 mdio_port_mode; + u8 rx_buf_chain_len; + u32 enabled_tcmap; + u32 maxtc; +}; + +struct i40e_mac_info { + enum i40e_mac_type type; + u8 addr[ETH_ALEN]; + u8 perm_addr[ETH_ALEN]; + u8 san_addr[ETH_ALEN]; + u16 max_fcoeq; +}; + +enum i40e_aq_resources_ids { + I40E_NVM_RESOURCE_ID = 1 +}; + +enum i40e_aq_resource_access_type { + I40E_RESOURCE_READ = 1, + I40E_RESOURCE_WRITE +}; + +struct i40e_nvm_info { + u64 hw_semaphore_timeout; /* 2usec global time (GTIME resolution) */ + u64 hw_semaphore_wait; /* - || - */ + u32 timeout; /* [ms] */ + u16 sr_size; /* Shadow RAM size in words */ + bool blank_nvm_mode; /* is NVM empty (no FW present)*/ + u16 version; /* NVM package version */ + u32 eetrack; /* NVM data version */ +}; + +/* PCI bus types */ +enum i40e_bus_type { + i40e_bus_type_unknown = 0, + i40e_bus_type_pci, + i40e_bus_type_pcix, + i40e_bus_type_pci_express, + i40e_bus_type_reserved +}; + +/* PCI bus speeds */ +enum i40e_bus_speed { + i40e_bus_speed_unknown = 0, + i40e_bus_speed_33 = 33, + i40e_bus_speed_66 = 66, + i40e_bus_speed_100 = 100, + i40e_bus_speed_120 = 120, + i40e_bus_speed_133 = 133, + i40e_bus_speed_2500 = 2500, + i40e_bus_speed_5000 = 5000, + i40e_bus_speed_8000 = 8000, + i40e_bus_speed_reserved +}; + +/* PCI bus widths */ +enum i40e_bus_width { + i40e_bus_width_unknown = 0, + i40e_bus_width_pcie_x1 = 1, + i40e_bus_width_pcie_x2 = 2, + i40e_bus_width_pcie_x4 = 4, + i40e_bus_width_pcie_x8 = 8, + i40e_bus_width_32 = 32, + i40e_bus_width_64 = 64, + i40e_bus_width_reserved +}; + +/* Bus parameters */ +struct i40e_bus_info { + enum i40e_bus_speed speed; + enum i40e_bus_width width; + enum i40e_bus_type type; + + u16 func; + u16 device; + u16 lan_id; +}; + +/* Flow control (FC) parameters */ +struct i40e_fc_info { + enum i40e_fc_mode current_mode; /* FC mode in effect */ + enum i40e_fc_mode requested_mode; /* FC mode requested by caller */ +}; + +#define I40E_MAX_TRAFFIC_CLASS 8 +#define I40E_MAX_USER_PRIORITY 8 +#define I40E_DCBX_MAX_APPS 32 +#define I40E_LLDPDU_SIZE 1500 + +/* IEEE 802.1Qaz ETS Configuration data */ +struct i40e_ieee_ets_config { + u8 willing; + u8 cbs; + u8 maxtcs; + u8 prioritytable[I40E_MAX_TRAFFIC_CLASS]; + u8 tcbwtable[I40E_MAX_TRAFFIC_CLASS]; + u8 tsatable[I40E_MAX_TRAFFIC_CLASS]; +}; + +/* IEEE 802.1Qaz ETS Recommendation data */ +struct i40e_ieee_ets_recommend { + u8 prioritytable[I40E_MAX_TRAFFIC_CLASS]; + u8 tcbwtable[I40E_MAX_TRAFFIC_CLASS]; + u8 tsatable[I40E_MAX_TRAFFIC_CLASS]; +}; + +/* IEEE 802.1Qaz PFC Configuration data */ +struct i40e_ieee_pfc_config { + u8 willing; + u8 mbc; + u8 pfccap; + u8 pfcenable; +}; + +/* IEEE 802.1Qaz Application Priority data */ +struct i40e_ieee_app_priority_table { + u8 priority; + u8 selector; + u16 protocolid; +}; + +struct i40e_dcbx_config { + u32 numapps; + struct i40e_ieee_ets_config etscfg; + struct i40e_ieee_ets_recommend etsrec; + struct i40e_ieee_pfc_config pfc; + struct i40e_ieee_app_priority_table app[I40E_DCBX_MAX_APPS]; +}; + +/* Port hardware description */ +struct i40e_hw { + u8 __iomem *hw_addr; + void *back; + + /* function pointer structs */ + struct i40e_phy_info phy; + struct i40e_mac_info mac; + struct i40e_bus_info bus; + struct i40e_nvm_info nvm; + struct i40e_fc_info fc; + + /* pci info */ + u16 device_id; + u16 vendor_id; + u16 subsystem_device_id; + u16 subsystem_vendor_id; + u8 revision_id; + u8 port; + bool adapter_stopped; + + /* capabilities for entire device and PCI func */ + struct i40e_hw_capabilities dev_caps; + struct i40e_hw_capabilities func_caps; + + /* Flow Director shared filter space */ + u16 fdir_shared_filter_count; + + /* device profile info */ + u8 pf_id; + u16 main_vsi_seid; + + /* Closest numa node to the device */ + u16 numa_node; + + /* Admin Queue info */ + struct i40e_adminq_info aq; + + /* HMC info */ + struct i40e_hmc_info hmc; /* HMC info struct */ + + /* LLDP/DCBX Status */ + u16 dcbx_status; + + /* DCBX info */ + struct i40e_dcbx_config local_dcbx_config; + struct i40e_dcbx_config remote_dcbx_config; + + /* debug mask */ + u32 debug_mask; +}; + +struct i40e_driver_version { + u8 major_version; + u8 minor_version; + u8 build_version; + u8 subbuild_version; +}; + +/* RX Descriptors */ +union i40e_16byte_rx_desc { + struct { + __le64 pkt_addr; /* Packet buffer address */ + __le64 hdr_addr; /* Header buffer address */ + } read; + struct { + struct { + struct { + union { + __le16 mirroring_status; + __le16 fcoe_ctx_id; + } mirr_fcoe; + __le16 l2tag1; + } lo_dword; + union { + __le32 rss; /* RSS Hash */ + __le32 fd_id; /* Flow director filter id */ + __le32 fcoe_param; /* FCoE DDP Context id */ + } hi_dword; + } qword0; + struct { + /* ext status/error/pktype/length */ + __le64 status_error_len; + } qword1; + } wb; /* writeback */ +}; + +union i40e_32byte_rx_desc { + struct { + __le64 pkt_addr; /* Packet buffer address */ + __le64 hdr_addr; /* Header buffer address */ + /* bit 0 of hdr_buffer_addr is DD bit */ + __le64 rsvd1; + __le64 rsvd2; + } read; + struct { + struct { + struct { + union { + __le16 mirroring_status; + __le16 fcoe_ctx_id; + } mirr_fcoe; + __le16 l2tag1; + } lo_dword; + union { + __le32 rss; /* RSS Hash */ + __le32 fcoe_param; /* FCoE DDP Context id */ + /* Flow director filter id in case of + * Programming status desc WB + */ + __le32 fd_id; + } hi_dword; + } qword0; + struct { + /* status/error/pktype/length */ + __le64 status_error_len; + } qword1; + struct { + __le16 ext_status; /* extended status */ + __le16 rsvd; + __le16 l2tag2_1; + __le16 l2tag2_2; + } qword2; + struct { + union { + __le32 flex_bytes_lo; + __le32 pe_status; + } lo_dword; + union { + __le32 flex_bytes_hi; + __le32 fd_id; + } hi_dword; + } qword3; + } wb; /* writeback */ +}; + +#define I40E_RXD_QW1_STATUS_SHIFT 0 +#define I40E_RXD_QW1_STATUS_MASK (0x7FFFUL << I40E_RXD_QW1_STATUS_SHIFT) + +enum i40e_rx_desc_status_bits { + /* Note: These are predefined bit offsets */ + I40E_RX_DESC_STATUS_DD_SHIFT = 0, + I40E_RX_DESC_STATUS_EOF_SHIFT = 1, + I40E_RX_DESC_STATUS_L2TAG1P_SHIFT = 2, + I40E_RX_DESC_STATUS_L3L4P_SHIFT = 3, + I40E_RX_DESC_STATUS_CRCP_SHIFT = 4, + I40E_RX_DESC_STATUS_TSYNINDX_SHIFT = 5, /* 2 BITS */ + I40E_RX_DESC_STATUS_TSYNVALID_SHIFT = 7, + I40E_RX_DESC_STATUS_PIF_SHIFT = 8, + I40E_RX_DESC_STATUS_UMBCAST_SHIFT = 9, /* 2 BITS */ + I40E_RX_DESC_STATUS_FLM_SHIFT = 11, + I40E_RX_DESC_STATUS_FLTSTAT_SHIFT = 12, /* 2 BITS */ + I40E_RX_DESC_STATUS_LPBK_SHIFT = 14, + I40E_RX_DESC_STATUS_IPV6EXADD_SHIFT = 15, + I40E_RX_DESC_STATUS_RESERVED_SHIFT = 16, /* 2 BITS */ + I40E_RX_DESC_STATUS_UDP_0_SHIFT = 18 +}; + +#define I40E_RXD_QW1_STATUS_TSYNINDX_SHIFT I40E_RX_DESC_STATUS_TSYNINDX_SHIFT +#define I40E_RXD_QW1_STATUS_TSYNINDX_MASK (0x3UL << \ + I40E_RXD_QW1_STATUS_TSYNINDX_SHIFT) + +#define I40E_RXD_QW1_STATUS_TSYNVALID_SHIFT I40E_RX_DESC_STATUS_TSYNVALID_SHIFT +#define I40E_RXD_QW1_STATUS_TSYNVALID_MASK (0x1UL << \ + I40E_RXD_QW1_STATUS_TSYNVALID_SHIFT) + +enum i40e_rx_desc_fltstat_values { + I40E_RX_DESC_FLTSTAT_NO_DATA = 0, + I40E_RX_DESC_FLTSTAT_RSV_FD_ID = 1, /* 16byte desc? FD_ID : RSV */ + I40E_RX_DESC_FLTSTAT_RSV = 2, + I40E_RX_DESC_FLTSTAT_RSS_HASH = 3, +}; + +#define I40E_RXD_QW1_ERROR_SHIFT 19 +#define I40E_RXD_QW1_ERROR_MASK (0xFFUL << I40E_RXD_QW1_ERROR_SHIFT) + +enum i40e_rx_desc_error_bits { + /* Note: These are predefined bit offsets */ + I40E_RX_DESC_ERROR_RXE_SHIFT = 0, + I40E_RX_DESC_ERROR_RECIPE_SHIFT = 1, + I40E_RX_DESC_ERROR_HBO_SHIFT = 2, + I40E_RX_DESC_ERROR_L3L4E_SHIFT = 3, /* 3 BITS */ + I40E_RX_DESC_ERROR_IPE_SHIFT = 3, + I40E_RX_DESC_ERROR_L4E_SHIFT = 4, + I40E_RX_DESC_ERROR_EIPE_SHIFT = 5, + I40E_RX_DESC_ERROR_OVERSIZE_SHIFT = 6 +}; + +enum i40e_rx_desc_error_l3l4e_fcoe_masks { + I40E_RX_DESC_ERROR_L3L4E_NONE = 0, + I40E_RX_DESC_ERROR_L3L4E_PROT = 1, + I40E_RX_DESC_ERROR_L3L4E_FC = 2, + I40E_RX_DESC_ERROR_L3L4E_DMAC_ERR = 3, + I40E_RX_DESC_ERROR_L3L4E_DMAC_WARN = 4 +}; + +#define I40E_RXD_QW1_PTYPE_SHIFT 30 +#define I40E_RXD_QW1_PTYPE_MASK (0xFFULL << I40E_RXD_QW1_PTYPE_SHIFT) + +/* Packet type non-ip values */ +enum i40e_rx_l2_ptype { + I40E_RX_PTYPE_L2_RESERVED = 0, + I40E_RX_PTYPE_L2_MAC_PAY2 = 1, + I40E_RX_PTYPE_L2_TIMESYNC_PAY2 = 2, + I40E_RX_PTYPE_L2_FIP_PAY2 = 3, + I40E_RX_PTYPE_L2_OUI_PAY2 = 4, + I40E_RX_PTYPE_L2_MACCNTRL_PAY2 = 5, + I40E_RX_PTYPE_L2_LLDP_PAY2 = 6, + I40E_RX_PTYPE_L2_ECP_PAY2 = 7, + I40E_RX_PTYPE_L2_EVB_PAY2 = 8, + I40E_RX_PTYPE_L2_QCN_PAY2 = 9, + I40E_RX_PTYPE_L2_EAPOL_PAY2 = 10, + I40E_RX_PTYPE_L2_ARP = 11, + I40E_RX_PTYPE_L2_FCOE_PAY3 = 12, + I40E_RX_PTYPE_L2_FCOE_FCDATA_PAY3 = 13, + I40E_RX_PTYPE_L2_FCOE_FCRDY_PAY3 = 14, + I40E_RX_PTYPE_L2_FCOE_FCRSP_PAY3 = 15, + I40E_RX_PTYPE_L2_FCOE_FCOTHER_PA = 16, + I40E_RX_PTYPE_L2_FCOE_VFT_PAY3 = 17, + I40E_RX_PTYPE_L2_FCOE_VFT_FCDATA = 18, + I40E_RX_PTYPE_L2_FCOE_VFT_FCRDY = 19, + I40E_RX_PTYPE_L2_FCOE_VFT_FCRSP = 20, + I40E_RX_PTYPE_L2_FCOE_VFT_FCOTHER = 21, + I40E_RX_PTYPE_GRENAT4_MAC_PAY3 = 58, + I40E_RX_PTYPE_GRENAT4_MACVLAN_IPV6_ICMP_PAY4 = 87, + I40E_RX_PTYPE_GRENAT6_MAC_PAY3 = 124, + I40E_RX_PTYPE_GRENAT6_MACVLAN_IPV6_ICMP_PAY4 = 153 +}; + +struct i40e_rx_ptype_decoded { + u32 ptype:8; + u32 known:1; + u32 outer_ip:1; + u32 outer_ip_ver:1; + u32 outer_frag:1; + u32 tunnel_type:3; + u32 tunnel_end_prot:2; + u32 tunnel_end_frag:1; + u32 inner_prot:4; + u32 payload_layer:3; +}; + +enum i40e_rx_ptype_outer_ip { + I40E_RX_PTYPE_OUTER_L2 = 0, + I40E_RX_PTYPE_OUTER_IP = 1 +}; + +enum i40e_rx_ptype_outer_ip_ver { + I40E_RX_PTYPE_OUTER_NONE = 0, + I40E_RX_PTYPE_OUTER_IPV4 = 0, + I40E_RX_PTYPE_OUTER_IPV6 = 1 +}; + +enum i40e_rx_ptype_outer_fragmented { + I40E_RX_PTYPE_NOT_FRAG = 0, + I40E_RX_PTYPE_FRAG = 1 +}; + +enum i40e_rx_ptype_tunnel_type { + I40E_RX_PTYPE_TUNNEL_NONE = 0, + I40E_RX_PTYPE_TUNNEL_IP_IP = 1, + I40E_RX_PTYPE_TUNNEL_IP_GRENAT = 2, + I40E_RX_PTYPE_TUNNEL_IP_GRENAT_MAC = 3, + I40E_RX_PTYPE_TUNNEL_IP_GRENAT_MAC_VLAN = 4, +}; + +enum i40e_rx_ptype_tunnel_end_prot { + I40E_RX_PTYPE_TUNNEL_END_NONE = 0, + I40E_RX_PTYPE_TUNNEL_END_IPV4 = 1, + I40E_RX_PTYPE_TUNNEL_END_IPV6 = 2, +}; + +enum i40e_rx_ptype_inner_prot { + I40E_RX_PTYPE_INNER_PROT_NONE = 0, + I40E_RX_PTYPE_INNER_PROT_UDP = 1, + I40E_RX_PTYPE_INNER_PROT_TCP = 2, + I40E_RX_PTYPE_INNER_PROT_SCTP = 3, + I40E_RX_PTYPE_INNER_PROT_ICMP = 4, + I40E_RX_PTYPE_INNER_PROT_TIMESYNC = 5 +}; + +enum i40e_rx_ptype_payload_layer { + I40E_RX_PTYPE_PAYLOAD_LAYER_NONE = 0, + I40E_RX_PTYPE_PAYLOAD_LAYER_PAY2 = 1, + I40E_RX_PTYPE_PAYLOAD_LAYER_PAY3 = 2, + I40E_RX_PTYPE_PAYLOAD_LAYER_PAY4 = 3, +}; + +#define I40E_RXD_QW1_LENGTH_PBUF_SHIFT 38 +#define I40E_RXD_QW1_LENGTH_PBUF_MASK (0x3FFFULL << \ + I40E_RXD_QW1_LENGTH_PBUF_SHIFT) + +#define I40E_RXD_QW1_LENGTH_HBUF_SHIFT 52 +#define I40E_RXD_QW1_LENGTH_HBUF_MASK (0x7FFULL << \ + I40E_RXD_QW1_LENGTH_HBUF_SHIFT) + +#define I40E_RXD_QW1_LENGTH_SPH_SHIFT 63 +#define I40E_RXD_QW1_LENGTH_SPH_MASK (0x1ULL << \ + I40E_RXD_QW1_LENGTH_SPH_SHIFT) + +enum i40e_rx_desc_ext_status_bits { + /* Note: These are predefined bit offsets */ + I40E_RX_DESC_EXT_STATUS_L2TAG2P_SHIFT = 0, + I40E_RX_DESC_EXT_STATUS_L2TAG3P_SHIFT = 1, + I40E_RX_DESC_EXT_STATUS_FLEXBL_SHIFT = 2, /* 2 BITS */ + I40E_RX_DESC_EXT_STATUS_FLEXBH_SHIFT = 4, /* 2 BITS */ + I40E_RX_DESC_EXT_STATUS_FTYPE_SHIFT = 6, /* 3 BITS */ + I40E_RX_DESC_EXT_STATUS_FDLONGB_SHIFT = 9, + I40E_RX_DESC_EXT_STATUS_FCOELONGB_SHIFT = 10, + I40E_RX_DESC_EXT_STATUS_PELONGB_SHIFT = 11, +}; + +enum i40e_rx_desc_pe_status_bits { + /* Note: These are predefined bit offsets */ + I40E_RX_DESC_PE_STATUS_QPID_SHIFT = 0, /* 18 BITS */ + I40E_RX_DESC_PE_STATUS_L4PORT_SHIFT = 0, /* 16 BITS */ + I40E_RX_DESC_PE_STATUS_IPINDEX_SHIFT = 16, /* 8 BITS */ + I40E_RX_DESC_PE_STATUS_QPIDHIT_SHIFT = 24, + I40E_RX_DESC_PE_STATUS_APBVTHIT_SHIFT = 25, + I40E_RX_DESC_PE_STATUS_PORTV_SHIFT = 26, + I40E_RX_DESC_PE_STATUS_URG_SHIFT = 27, + I40E_RX_DESC_PE_STATUS_IPFRAG_SHIFT = 28, + I40E_RX_DESC_PE_STATUS_IPOPT_SHIFT = 29 +}; + +#define I40E_RX_PROG_STATUS_DESC_LENGTH_SHIFT 38 +#define I40E_RX_PROG_STATUS_DESC_LENGTH 0x2000000 + +#define I40E_RX_PROG_STATUS_DESC_QW1_PROGID_SHIFT 2 +#define I40E_RX_PROG_STATUS_DESC_QW1_PROGID_MASK (0x7UL << \ + I40E_RX_PROG_STATUS_DESC_QW1_PROGID_SHIFT) + +#define I40E_RX_PROG_STATUS_DESC_QW1_ERROR_SHIFT 19 +#define I40E_RX_PROG_STATUS_DESC_QW1_ERROR_MASK (0x3FUL << \ + I40E_RX_PROG_STATUS_DESC_QW1_ERROR_SHIFT) + +enum i40e_rx_prog_status_desc_status_bits { + /* Note: These are predefined bit offsets */ + I40E_RX_PROG_STATUS_DESC_DD_SHIFT = 0, + I40E_RX_PROG_STATUS_DESC_PROG_ID_SHIFT = 2 /* 3 BITS */ +}; + +enum i40e_rx_prog_status_desc_prog_id_masks { + I40E_RX_PROG_STATUS_DESC_FD_FILTER_STATUS = 1, + I40E_RX_PROG_STATUS_DESC_FCOE_CTXT_PROG_STATUS = 2, + I40E_RX_PROG_STATUS_DESC_FCOE_CTXT_INVL_STATUS = 4, +}; + +enum i40e_rx_prog_status_desc_error_bits { + /* Note: These are predefined bit offsets */ + I40E_RX_PROG_STATUS_DESC_FD_TBL_FULL_SHIFT = 0, + I40E_RX_PROG_STATUS_DESC_NO_FD_ENTRY_SHIFT = 1, + I40E_RX_PROG_STATUS_DESC_FCOE_TBL_FULL_SHIFT = 2, + I40E_RX_PROG_STATUS_DESC_FCOE_CONFLICT_SHIFT = 3 +}; + +/* TX Descriptor */ +struct i40e_tx_desc { + __le64 buffer_addr; /* Address of descriptor's data buf */ + __le64 cmd_type_offset_bsz; +}; + +#define I40E_TXD_QW1_DTYPE_SHIFT 0 +#define I40E_TXD_QW1_DTYPE_MASK (0xFUL << I40E_TXD_QW1_DTYPE_SHIFT) + +enum i40e_tx_desc_dtype_value { + I40E_TX_DESC_DTYPE_DATA = 0x0, + I40E_TX_DESC_DTYPE_NOP = 0x1, /* same as Context desc */ + I40E_TX_DESC_DTYPE_CONTEXT = 0x1, + I40E_TX_DESC_DTYPE_FCOE_CTX = 0x2, + I40E_TX_DESC_DTYPE_FILTER_PROG = 0x8, + I40E_TX_DESC_DTYPE_DDP_CTX = 0x9, + I40E_TX_DESC_DTYPE_FLEX_DATA = 0xB, + I40E_TX_DESC_DTYPE_FLEX_CTX_1 = 0xC, + I40E_TX_DESC_DTYPE_FLEX_CTX_2 = 0xD, + I40E_TX_DESC_DTYPE_DESC_DONE = 0xF +}; + +#define I40E_TXD_QW1_CMD_SHIFT 4 +#define I40E_TXD_QW1_CMD_MASK (0x3FFUL << I40E_TXD_QW1_CMD_SHIFT) + +enum i40e_tx_desc_cmd_bits { + I40E_TX_DESC_CMD_EOP = 0x0001, + I40E_TX_DESC_CMD_RS = 0x0002, + I40E_TX_DESC_CMD_ICRC = 0x0004, + I40E_TX_DESC_CMD_IL2TAG1 = 0x0008, + I40E_TX_DESC_CMD_DUMMY = 0x0010, + I40E_TX_DESC_CMD_IIPT_NONIP = 0x0000, /* 2 BITS */ + I40E_TX_DESC_CMD_IIPT_IPV6 = 0x0020, /* 2 BITS */ + I40E_TX_DESC_CMD_IIPT_IPV4 = 0x0040, /* 2 BITS */ + I40E_TX_DESC_CMD_IIPT_IPV4_CSUM = 0x0060, /* 2 BITS */ + I40E_TX_DESC_CMD_FCOET = 0x0080, + I40E_TX_DESC_CMD_L4T_EOFT_UNK = 0x0000, /* 2 BITS */ + I40E_TX_DESC_CMD_L4T_EOFT_TCP = 0x0100, /* 2 BITS */ + I40E_TX_DESC_CMD_L4T_EOFT_SCTP = 0x0200, /* 2 BITS */ + I40E_TX_DESC_CMD_L4T_EOFT_UDP = 0x0300, /* 2 BITS */ + I40E_TX_DESC_CMD_L4T_EOFT_EOF_N = 0x0000, /* 2 BITS */ + I40E_TX_DESC_CMD_L4T_EOFT_EOF_T = 0x0100, /* 2 BITS */ + I40E_TX_DESC_CMD_L4T_EOFT_EOF_NI = 0x0200, /* 2 BITS */ + I40E_TX_DESC_CMD_L4T_EOFT_EOF_A = 0x0300, /* 2 BITS */ +}; + +#define I40E_TXD_QW1_OFFSET_SHIFT 16 +#define I40E_TXD_QW1_OFFSET_MASK (0x3FFFFULL << \ + I40E_TXD_QW1_OFFSET_SHIFT) + +enum i40e_tx_desc_length_fields { + /* Note: These are predefined bit offsets */ + I40E_TX_DESC_LENGTH_MACLEN_SHIFT = 0, /* 7 BITS */ + I40E_TX_DESC_LENGTH_IPLEN_SHIFT = 7, /* 7 BITS */ + I40E_TX_DESC_LENGTH_L4_FC_LEN_SHIFT = 14 /* 4 BITS */ +}; + +#define I40E_TXD_QW1_TX_BUF_SZ_SHIFT 34 +#define I40E_TXD_QW1_TX_BUF_SZ_MASK (0x3FFFULL << \ + I40E_TXD_QW1_TX_BUF_SZ_SHIFT) + +#define I40E_TXD_QW1_L2TAG1_SHIFT 48 +#define I40E_TXD_QW1_L2TAG1_MASK (0xFFFFULL << I40E_TXD_QW1_L2TAG1_SHIFT) + +/* Context descriptors */ +struct i40e_tx_context_desc { + __le32 tunneling_params; + __le16 l2tag2; + __le16 rsvd; + __le64 type_cmd_tso_mss; +}; + +#define I40E_TXD_CTX_QW1_DTYPE_SHIFT 0 +#define I40E_TXD_CTX_QW1_DTYPE_MASK (0xFUL << I40E_TXD_CTX_QW1_DTYPE_SHIFT) + +#define I40E_TXD_CTX_QW1_CMD_SHIFT 4 +#define I40E_TXD_CTX_QW1_CMD_MASK (0xFFFFUL << I40E_TXD_CTX_QW1_CMD_SHIFT) + +enum i40e_tx_ctx_desc_cmd_bits { + I40E_TX_CTX_DESC_TSO = 0x01, + I40E_TX_CTX_DESC_TSYN = 0x02, + I40E_TX_CTX_DESC_IL2TAG2 = 0x04, + I40E_TX_CTX_DESC_IL2TAG2_IL2H = 0x08, + I40E_TX_CTX_DESC_SWTCH_NOTAG = 0x00, + I40E_TX_CTX_DESC_SWTCH_UPLINK = 0x10, + I40E_TX_CTX_DESC_SWTCH_LOCAL = 0x20, + I40E_TX_CTX_DESC_SWTCH_VSI = 0x30, + I40E_TX_CTX_DESC_SWPE = 0x40 +}; + +#define I40E_TXD_CTX_QW1_TSO_LEN_SHIFT 30 +#define I40E_TXD_CTX_QW1_TSO_LEN_MASK (0x3FFFFULL << \ + I40E_TXD_CTX_QW1_TSO_LEN_SHIFT) + +#define I40E_TXD_CTX_QW1_MSS_SHIFT 50 +#define I40E_TXD_CTX_QW1_MSS_MASK (0x3FFFULL << \ + I40E_TXD_CTX_QW1_MSS_SHIFT) + +#define I40E_TXD_CTX_QW1_VSI_SHIFT 50 +#define I40E_TXD_CTX_QW1_VSI_MASK (0x1FFULL << I40E_TXD_CTX_QW1_VSI_SHIFT) + +#define I40E_TXD_CTX_QW0_EXT_IP_SHIFT 0 +#define I40E_TXD_CTX_QW0_EXT_IP_MASK (0x3ULL << \ + I40E_TXD_CTX_QW0_EXT_IP_SHIFT) + +enum i40e_tx_ctx_desc_eipt_offload { + I40E_TX_CTX_EXT_IP_NONE = 0x0, + I40E_TX_CTX_EXT_IP_IPV6 = 0x1, + I40E_TX_CTX_EXT_IP_IPV4_NO_CSUM = 0x2, + I40E_TX_CTX_EXT_IP_IPV4 = 0x3 +}; + +#define I40E_TXD_CTX_QW0_EXT_IPLEN_SHIFT 2 +#define I40E_TXD_CTX_QW0_EXT_IPLEN_MASK (0x3FULL << \ + I40E_TXD_CTX_QW0_EXT_IPLEN_SHIFT) + +#define I40E_TXD_CTX_QW0_NATT_SHIFT 9 +#define I40E_TXD_CTX_QW0_NATT_MASK (0x3ULL << I40E_TXD_CTX_QW0_NATT_SHIFT) + +#define I40E_TXD_CTX_UDP_TUNNELING (0x1ULL << I40E_TXD_CTX_QW0_NATT_SHIFT) +#define I40E_TXD_CTX_GRE_TUNNELING (0x2ULL << I40E_TXD_CTX_QW0_NATT_SHIFT) + +#define I40E_TXD_CTX_QW0_EIP_NOINC_SHIFT 11 +#define I40E_TXD_CTX_QW0_EIP_NOINC_MASK (0x1ULL << \ + I40E_TXD_CTX_QW0_EIP_NOINC_SHIFT) + +#define I40E_TXD_CTX_EIP_NOINC_IPID_CONST I40E_TXD_CTX_QW0_EIP_NOINC_MASK + +#define I40E_TXD_CTX_QW0_NATLEN_SHIFT 12 +#define I40E_TXD_CTX_QW0_NATLEN_MASK (0X7FULL << \ + I40E_TXD_CTX_QW0_NATLEN_SHIFT) + +#define I40E_TXD_CTX_QW0_DECTTL_SHIFT 19 +#define I40E_TXD_CTX_QW0_DECTTL_MASK (0xFULL << \ + I40E_TXD_CTX_QW0_DECTTL_SHIFT) + +struct i40e_filter_program_desc { + __le32 qindex_flex_ptype_vsi; + __le32 rsvd; + __le32 dtype_cmd_cntindex; + __le32 fd_id; +}; +#define I40E_TXD_FLTR_QW0_QINDEX_SHIFT 0 +#define I40E_TXD_FLTR_QW0_QINDEX_MASK (0x7FFUL << \ + I40E_TXD_FLTR_QW0_QINDEX_SHIFT) +#define I40E_TXD_FLTR_QW0_FLEXOFF_SHIFT 11 +#define I40E_TXD_FLTR_QW0_FLEXOFF_MASK (0x7UL << \ + I40E_TXD_FLTR_QW0_FLEXOFF_SHIFT) +#define I40E_TXD_FLTR_QW0_PCTYPE_SHIFT 17 +#define I40E_TXD_FLTR_QW0_PCTYPE_MASK (0x3FUL << \ + I40E_TXD_FLTR_QW0_PCTYPE_SHIFT) + +/* Packet Classifier Types for filters */ +enum i40e_filter_pctype { + /* Note: Values 0-28 are reserved for future use */ + I40E_FILTER_PCTYPE_NONF_UNICAST_IPV4_UDP = 29, + I40E_FILTER_PCTYPE_NONF_MULTICAST_IPV4_UDP = 30, + I40E_FILTER_PCTYPE_NONF_IPV4_UDP = 31, + I40E_FILTER_PCTYPE_NONF_IPV4_TCP_SYN = 32, + I40E_FILTER_PCTYPE_NONF_IPV4_TCP = 33, + I40E_FILTER_PCTYPE_NONF_IPV4_SCTP = 34, + I40E_FILTER_PCTYPE_NONF_IPV4_OTHER = 35, + I40E_FILTER_PCTYPE_FRAG_IPV4 = 36, + /* Note: Values 37-38 are reserved for future use */ + I40E_FILTER_PCTYPE_NONF_UNICAST_IPV6_UDP = 39, + I40E_FILTER_PCTYPE_NONF_MULTICAST_IPV6_UDP = 40, + I40E_FILTER_PCTYPE_NONF_IPV6_UDP = 41, + I40E_FILTER_PCTYPE_NONF_IPV6_TCP_SYN = 42, + I40E_FILTER_PCTYPE_NONF_IPV6_TCP = 43, + I40E_FILTER_PCTYPE_NONF_IPV6_SCTP = 44, + I40E_FILTER_PCTYPE_NONF_IPV6_OTHER = 45, + I40E_FILTER_PCTYPE_FRAG_IPV6 = 46, + /* Note: Value 47 is reserved for future use */ + I40E_FILTER_PCTYPE_FCOE_OX = 48, + I40E_FILTER_PCTYPE_FCOE_RX = 49, + I40E_FILTER_PCTYPE_FCOE_OTHER = 50, + /* Note: Values 51-62 are reserved for future use */ + I40E_FILTER_PCTYPE_L2_PAYLOAD = 63, +}; + +enum i40e_filter_program_desc_dest { + I40E_FILTER_PROGRAM_DESC_DEST_DROP_PACKET = 0x0, + I40E_FILTER_PROGRAM_DESC_DEST_DIRECT_PACKET_QINDEX = 0x1, + I40E_FILTER_PROGRAM_DESC_DEST_DIRECT_PACKET_OTHER = 0x2, +}; + +enum i40e_filter_program_desc_fd_status { + I40E_FILTER_PROGRAM_DESC_FD_STATUS_NONE = 0x0, + I40E_FILTER_PROGRAM_DESC_FD_STATUS_FD_ID = 0x1, + I40E_FILTER_PROGRAM_DESC_FD_STATUS_FD_ID_4FLEX_BYTES = 0x2, + I40E_FILTER_PROGRAM_DESC_FD_STATUS_8FLEX_BYTES = 0x3, +}; + +#define I40E_TXD_FLTR_QW0_DEST_VSI_SHIFT 23 +#define I40E_TXD_FLTR_QW0_DEST_VSI_MASK (0x1FFUL << \ + I40E_TXD_FLTR_QW0_DEST_VSI_SHIFT) + +#define I40E_TXD_FLTR_QW1_CMD_SHIFT 4 +#define I40E_TXD_FLTR_QW1_CMD_MASK (0xFFFFULL << \ + I40E_TXD_FLTR_QW1_CMD_SHIFT) + +#define I40E_TXD_FLTR_QW1_PCMD_SHIFT (0x0ULL + I40E_TXD_FLTR_QW1_CMD_SHIFT) +#define I40E_TXD_FLTR_QW1_PCMD_MASK (0x7ULL << I40E_TXD_FLTR_QW1_PCMD_SHIFT) + +enum i40e_filter_program_desc_pcmd { + I40E_FILTER_PROGRAM_DESC_PCMD_ADD_UPDATE = 0x1, + I40E_FILTER_PROGRAM_DESC_PCMD_REMOVE = 0x2, +}; + +#define I40E_TXD_FLTR_QW1_DEST_SHIFT (0x3ULL + I40E_TXD_FLTR_QW1_CMD_SHIFT) +#define I40E_TXD_FLTR_QW1_DEST_MASK (0x3ULL << I40E_TXD_FLTR_QW1_DEST_SHIFT) + +#define I40E_TXD_FLTR_QW1_CNT_ENA_SHIFT (0x7ULL + I40E_TXD_FLTR_QW1_CMD_SHIFT) +#define I40E_TXD_FLTR_QW1_CNT_ENA_MASK (0x1ULL << \ + I40E_TXD_FLTR_QW1_CNT_ENA_SHIFT) + +#define I40E_TXD_FLTR_QW1_FD_STATUS_SHIFT (0x9ULL + \ + I40E_TXD_FLTR_QW1_CMD_SHIFT) +#define I40E_TXD_FLTR_QW1_FD_STATUS_MASK (0x3ULL << \ + I40E_TXD_FLTR_QW1_FD_STATUS_SHIFT) + +#define I40E_TXD_FLTR_QW1_CNTINDEX_SHIFT 20 +#define I40E_TXD_FLTR_QW1_CNTINDEX_MASK (0x1FFUL << \ + I40E_TXD_FLTR_QW1_CNTINDEX_SHIFT) + +enum i40e_filter_type { + I40E_FLOW_DIRECTOR_FLTR = 0, + I40E_PE_QUAD_HASH_FLTR = 1, + I40E_ETHERTYPE_FLTR, + I40E_FCOE_CTX_FLTR, + I40E_MAC_VLAN_FLTR, + I40E_HASH_FLTR +}; + +struct i40e_vsi_context { + u16 seid; + u16 uplink_seid; + u16 vsi_number; + u16 vsis_allocated; + u16 vsis_unallocated; + u16 flags; + u8 pf_num; + u8 vf_num; + u8 connection_type; + struct i40e_aqc_vsi_properties_data info; +}; + +/* Statistics collected by each port, VSI, VEB, and S-channel */ +struct i40e_eth_stats { + u64 rx_bytes; /* gorc */ + u64 rx_unicast; /* uprc */ + u64 rx_multicast; /* mprc */ + u64 rx_broadcast; /* bprc */ + u64 rx_discards; /* rdpc */ + u64 rx_errors; /* repc */ + u64 rx_missed; /* rmpc */ + u64 rx_unknown_protocol; /* rupp */ + u64 tx_bytes; /* gotc */ + u64 tx_unicast; /* uptc */ + u64 tx_multicast; /* mptc */ + u64 tx_broadcast; /* bptc */ + u64 tx_discards; /* tdpc */ + u64 tx_errors; /* tepc */ +}; + +/* Statistics collected by the MAC */ +struct i40e_hw_port_stats { + /* eth stats collected by the port */ + struct i40e_eth_stats eth; + + /* additional port specific stats */ + u64 tx_dropped_link_down; /* tdold */ + u64 crc_errors; /* crcerrs */ + u64 illegal_bytes; /* illerrc */ + u64 error_bytes; /* errbc */ + u64 mac_local_faults; /* mlfc */ + u64 mac_remote_faults; /* mrfc */ + u64 rx_length_errors; /* rlec */ + u64 link_xon_rx; /* lxonrxc */ + u64 link_xoff_rx; /* lxoffrxc */ + u64 priority_xon_rx[8]; /* pxonrxc[8] */ + u64 priority_xoff_rx[8]; /* pxoffrxc[8] */ + u64 link_xon_tx; /* lxontxc */ + u64 link_xoff_tx; /* lxofftxc */ + u64 priority_xon_tx[8]; /* pxontxc[8] */ + u64 priority_xoff_tx[8]; /* pxofftxc[8] */ + u64 priority_xon_2_xoff[8]; /* pxon2offc[8] */ + u64 rx_size_64; /* prc64 */ + u64 rx_size_127; /* prc127 */ + u64 rx_size_255; /* prc255 */ + u64 rx_size_511; /* prc511 */ + u64 rx_size_1023; /* prc1023 */ + u64 rx_size_1522; /* prc1522 */ + u64 rx_size_big; /* prc9522 */ + u64 rx_undersize; /* ruc */ + u64 rx_fragments; /* rfc */ + u64 rx_oversize; /* roc */ + u64 rx_jabber; /* rjc */ + u64 tx_size_64; /* ptc64 */ + u64 tx_size_127; /* ptc127 */ + u64 tx_size_255; /* ptc255 */ + u64 tx_size_511; /* ptc511 */ + u64 tx_size_1023; /* ptc1023 */ + u64 tx_size_1522; /* ptc1522 */ + u64 tx_size_big; /* ptc9522 */ + u64 mac_short_packet_dropped; /* mspdc */ + u64 checksum_error; /* xec */ + /* EEE LPI */ + bool tx_lpi_status; + bool rx_lpi_status; + u64 tx_lpi_count; /* etlpic */ + u64 rx_lpi_count; /* erlpic */ +}; + +/* Checksum and Shadow RAM pointers */ +#define I40E_SR_NVM_CONTROL_WORD 0x00 +#define I40E_SR_EMP_MODULE_PTR 0x0F +#define I40E_SR_NVM_IMAGE_VERSION 0x18 +#define I40E_SR_NVM_WAKE_ON_LAN 0x19 +#define I40E_SR_ALTERNATE_SAN_MAC_ADDRESS_PTR 0x27 +#define I40E_SR_NVM_EETRACK_LO 0x2D +#define I40E_SR_NVM_EETRACK_HI 0x2E +#define I40E_SR_VPD_PTR 0x2F +#define I40E_SR_PCIE_ALT_AUTO_LOAD_PTR 0x3E +#define I40E_SR_SW_CHECKSUM_WORD 0x3F + +/* Auxiliary field, mask and shift definition for Shadow RAM and NVM Flash */ +#define I40E_SR_VPD_MODULE_MAX_SIZE 1024 +#define I40E_SR_PCIE_ALT_MODULE_MAX_SIZE 1024 +#define I40E_SR_CONTROL_WORD_1_SHIFT 0x06 +#define I40E_SR_CONTROL_WORD_1_MASK (0x03 << I40E_SR_CONTROL_WORD_1_SHIFT) + +/* Shadow RAM related */ +#define I40E_SR_SECTOR_SIZE_IN_WORDS 0x800 +#define I40E_SR_WORDS_IN_1KB 512 +/* Checksum should be calculated such that after adding all the words, + * including the checksum word itself, the sum should be 0xBABA. + */ +#define I40E_SR_SW_CHECKSUM_BASE 0xBABA + +#define I40E_SRRD_SRCTL_ATTEMPTS 100000 + +enum i40e_switch_element_types { + I40E_SWITCH_ELEMENT_TYPE_MAC = 1, + I40E_SWITCH_ELEMENT_TYPE_PF = 2, + I40E_SWITCH_ELEMENT_TYPE_VF = 3, + I40E_SWITCH_ELEMENT_TYPE_EMP = 4, + I40E_SWITCH_ELEMENT_TYPE_BMC = 6, + I40E_SWITCH_ELEMENT_TYPE_PE = 16, + I40E_SWITCH_ELEMENT_TYPE_VEB = 17, + I40E_SWITCH_ELEMENT_TYPE_PA = 18, + I40E_SWITCH_ELEMENT_TYPE_VSI = 19, +}; + +/* Supported EtherType filters */ +enum i40e_ether_type_index { + I40E_ETHER_TYPE_1588 = 0, + I40E_ETHER_TYPE_FIP = 1, + I40E_ETHER_TYPE_OUI_EXTENDED = 2, + I40E_ETHER_TYPE_MAC_CONTROL = 3, + I40E_ETHER_TYPE_LLDP = 4, + I40E_ETHER_TYPE_EVB_PROTOCOL1 = 5, + I40E_ETHER_TYPE_EVB_PROTOCOL2 = 6, + I40E_ETHER_TYPE_QCN_CNM = 7, + I40E_ETHER_TYPE_8021X = 8, + I40E_ETHER_TYPE_ARP = 9, + I40E_ETHER_TYPE_RSV1 = 10, + I40E_ETHER_TYPE_RSV2 = 11, +}; + +/* Filter context base size is 1K */ +#define I40E_HASH_FILTER_BASE_SIZE 1024 +/* Supported Hash filter values */ +enum i40e_hash_filter_size { + I40E_HASH_FILTER_SIZE_1K = 0, + I40E_HASH_FILTER_SIZE_2K = 1, + I40E_HASH_FILTER_SIZE_4K = 2, + I40E_HASH_FILTER_SIZE_8K = 3, + I40E_HASH_FILTER_SIZE_16K = 4, + I40E_HASH_FILTER_SIZE_32K = 5, + I40E_HASH_FILTER_SIZE_64K = 6, + I40E_HASH_FILTER_SIZE_128K = 7, + I40E_HASH_FILTER_SIZE_256K = 8, + I40E_HASH_FILTER_SIZE_512K = 9, + I40E_HASH_FILTER_SIZE_1M = 10, +}; + +/* DMA context base size is 0.5K */ +#define I40E_DMA_CNTX_BASE_SIZE 512 +/* Supported DMA context values */ +enum i40e_dma_cntx_size { + I40E_DMA_CNTX_SIZE_512 = 0, + I40E_DMA_CNTX_SIZE_1K = 1, + I40E_DMA_CNTX_SIZE_2K = 2, + I40E_DMA_CNTX_SIZE_4K = 3, + I40E_DMA_CNTX_SIZE_8K = 4, + I40E_DMA_CNTX_SIZE_16K = 5, + I40E_DMA_CNTX_SIZE_32K = 6, + I40E_DMA_CNTX_SIZE_64K = 7, + I40E_DMA_CNTX_SIZE_128K = 8, + I40E_DMA_CNTX_SIZE_256K = 9, +}; + +/* Supported Hash look up table (LUT) sizes */ +enum i40e_hash_lut_size { + I40E_HASH_LUT_SIZE_128 = 0, + I40E_HASH_LUT_SIZE_512 = 1, +}; + +/* Structure to hold a per PF filter control settings */ +struct i40e_filter_control_settings { + /* number of PE Quad Hash filter buckets */ + enum i40e_hash_filter_size pe_filt_num; + /* number of PE Quad Hash contexts */ + enum i40e_dma_cntx_size pe_cntx_num; + /* number of FCoE filter buckets */ + enum i40e_hash_filter_size fcoe_filt_num; + /* number of FCoE DDP contexts */ + enum i40e_dma_cntx_size fcoe_cntx_num; + /* size of the Hash LUT */ + enum i40e_hash_lut_size hash_lut_size; + /* enable FDIR filters for PF and its VFs */ + bool enable_fdir; + /* enable Ethertype filters for PF and its VFs */ + bool enable_ethtype; + /* enable MAC/VLAN filters for PF and its VFs */ + bool enable_macvlan; +}; + +/* Structure to hold device level control filter counts */ +struct i40e_control_filter_stats { + u16 mac_etype_used; /* Used perfect match MAC/EtherType filters */ + u16 etype_used; /* Used perfect EtherType filters */ + u16 mac_etype_free; /* Un-used perfect match MAC/EtherType filters */ + u16 etype_free; /* Un-used perfect EtherType filters */ +}; + +enum i40e_reset_type { + I40E_RESET_POR = 0, + I40E_RESET_CORER = 1, + I40E_RESET_GLOBR = 2, + I40E_RESET_EMPR = 3, +}; +#endif /* _I40E_TYPE_H_ */ --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40evf/i40e_virtchnl.h +++ linux-3.13.0/drivers/net/ethernet/intel/i40evf/i40e_virtchnl.h @@ -0,0 +1,364 @@ +/******************************************************************************* + * + * Intel Ethernet Controller XL710 Family Linux Virtual Function Driver + * Copyright(c) 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. + * + * The full GNU General Public License is included in this distribution in + * the file called "COPYING". + * + * Contact Information: + * e1000-devel Mailing List + * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 + * + ******************************************************************************/ + +#ifndef _I40E_VIRTCHNL_H_ +#define _I40E_VIRTCHNL_H_ + +#include "i40e_type.h" + +/* Description: + * This header file describes the VF-PF communication protocol used + * by the various i40e drivers. + * + * Admin queue buffer usage: + * desc->opcode is always i40e_aqc_opc_send_msg_to_pf + * flags, retval, datalen, and data addr are all used normally. + * Firmware copies the cookie fields when sending messages between the PF and + * VF, but uses all other fields internally. Due to this limitation, we + * must send all messages as "indirect", i.e. using an external buffer. + * + * All the vsi indexes are relative to the VF. Each VF can have maximum of + * three VSIs. All the queue indexes are relative to the VSI. Each VF can + * have a maximum of sixteen queues for all of its VSIs. + * + * The PF is required to return a status code in v_retval for all messages + * except RESET_VF, which does not require any response. The return value is of + * i40e_status_code type, defined in the i40e_type.h. + * + * In general, VF driver initialization should roughly follow the order of these + * opcodes. The VF driver must first validate the API version of the PF driver, + * then request a reset, then get resources, then configure queues and + * interrupts. After these operations are complete, the VF driver may start + * its queues, optionally add MAC and VLAN filters, and process traffic. + */ + +/* Opcodes for VF-PF communication. These are placed in the v_opcode field + * of the virtchnl_msg structure. + */ +enum i40e_virtchnl_ops { +/* VF sends req. to pf for the following + * ops. + */ + I40E_VIRTCHNL_OP_UNKNOWN = 0, + I40E_VIRTCHNL_OP_VERSION = 1, /* must ALWAYS be 1 */ + I40E_VIRTCHNL_OP_RESET_VF, + I40E_VIRTCHNL_OP_GET_VF_RESOURCES, + I40E_VIRTCHNL_OP_CONFIG_TX_QUEUE, + I40E_VIRTCHNL_OP_CONFIG_RX_QUEUE, + I40E_VIRTCHNL_OP_CONFIG_VSI_QUEUES, + I40E_VIRTCHNL_OP_CONFIG_IRQ_MAP, + I40E_VIRTCHNL_OP_ENABLE_QUEUES, + I40E_VIRTCHNL_OP_DISABLE_QUEUES, + I40E_VIRTCHNL_OP_ADD_ETHER_ADDRESS, + I40E_VIRTCHNL_OP_DEL_ETHER_ADDRESS, + I40E_VIRTCHNL_OP_ADD_VLAN, + I40E_VIRTCHNL_OP_DEL_VLAN, + I40E_VIRTCHNL_OP_CONFIG_PROMISCUOUS_MODE, + I40E_VIRTCHNL_OP_GET_STATS, + I40E_VIRTCHNL_OP_FCOE, +/* PF sends status change events to vfs using + * the following op. + */ + I40E_VIRTCHNL_OP_EVENT, +}; + +/* Virtual channel message descriptor. This overlays the admin queue + * descriptor. All other data is passed in external buffers. + */ + +struct i40e_virtchnl_msg { + u8 pad[8]; /* AQ flags/opcode/len/retval fields */ + enum i40e_virtchnl_ops v_opcode; /* avoid confusion with desc->opcode */ + i40e_status v_retval; /* ditto for desc->retval */ + u32 vfid; /* used by PF when sending to VF */ +}; + +/* Message descriptions and data structures.*/ + +/* I40E_VIRTCHNL_OP_VERSION + * VF posts its version number to the PF. PF responds with its version number + * in the same format, along with a return code. + * Reply from PF has its major/minor versions also in param0 and param1. + * If there is a major version mismatch, then the VF cannot operate. + * If there is a minor version mismatch, then the VF can operate but should + * add a warning to the system log. + * + * This enum element MUST always be specified as == 1, regardless of other + * changes in the API. The PF must always respond to this message without + * error regardless of version mismatch. + */ +#define I40E_VIRTCHNL_VERSION_MAJOR 1 +#define I40E_VIRTCHNL_VERSION_MINOR 0 +struct i40e_virtchnl_version_info { + u32 major; + u32 minor; +}; + +/* I40E_VIRTCHNL_OP_RESET_VF + * VF sends this request to PF with no parameters + * PF does NOT respond! VF driver must delay then poll VFGEN_RSTAT register + * until reset completion is indicated. The admin queue must be reinitialized + * after this operation. + * + * When reset is complete, PF must ensure that all queues in all VSIs associated + * with the VF are stopped, all queue configurations in the HMC are set to 0, + * and all MAC and VLAN filters (except the default MAC address) on all VSIs + * are cleared. + */ + +/* I40E_VIRTCHNL_OP_GET_VF_RESOURCES + * VF sends this request to PF with no parameters + * PF responds with an indirect message containing + * i40e_virtchnl_vf_resource and one or more + * i40e_virtchnl_vsi_resource structures. + */ + +struct i40e_virtchnl_vsi_resource { + u16 vsi_id; + u16 num_queue_pairs; + enum i40e_vsi_type vsi_type; + u16 qset_handle; + u8 default_mac_addr[ETH_ALEN]; +}; +/* VF offload flags */ +#define I40E_VIRTCHNL_VF_OFFLOAD_L2 0x00000001 +#define I40E_VIRTCHNL_VF_OFFLOAD_FCOE 0x00000004 +#define I40E_VIRTCHNL_VF_OFFLOAD_VLAN 0x00010000 + +struct i40e_virtchnl_vf_resource { + u16 num_vsis; + u16 num_queue_pairs; + u16 max_vectors; + u16 max_mtu; + + u32 vf_offload_flags; + u32 max_fcoe_contexts; + u32 max_fcoe_filters; + + struct i40e_virtchnl_vsi_resource vsi_res[1]; +}; + +/* I40E_VIRTCHNL_OP_CONFIG_TX_QUEUE + * VF sends this message to set up parameters for one TX queue. + * External data buffer contains one instance of i40e_virtchnl_txq_info. + * PF configures requested queue and returns a status code. + */ + +/* Tx queue config info */ +struct i40e_virtchnl_txq_info { + u16 vsi_id; + u16 queue_id; + u16 ring_len; /* number of descriptors, multiple of 8 */ + u16 headwb_enabled; + u64 dma_ring_addr; + u64 dma_headwb_addr; +}; + +/* I40E_VIRTCHNL_OP_CONFIG_RX_QUEUE + * VF sends this message to set up parameters for one RX queue. + * External data buffer contains one instance of i40e_virtchnl_rxq_info. + * PF configures requested queue and returns a status code. + */ + +/* Rx queue config info */ +struct i40e_virtchnl_rxq_info { + u16 vsi_id; + u16 queue_id; + u32 ring_len; /* number of descriptors, multiple of 32 */ + u16 hdr_size; + u16 splithdr_enabled; + u32 databuffer_size; + u32 max_pkt_size; + u64 dma_ring_addr; + enum i40e_hmc_obj_rx_hsplit_0 rx_split_pos; +}; + +/* I40E_VIRTCHNL_OP_CONFIG_VSI_QUEUES + * VF sends this message to set parameters for all active TX and RX queues + * associated with the specified VSI. + * PF configures queues and returns status. + * If the number of queues specified is greater than the number of queues + * associated with the VSI, an error is returned and no queues are configured. + */ +struct i40e_virtchnl_queue_pair_info { + /* NOTE: vsi_id and queue_id should be identical for both queues. */ + struct i40e_virtchnl_txq_info txq; + struct i40e_virtchnl_rxq_info rxq; +}; + +struct i40e_virtchnl_vsi_queue_config_info { + u16 vsi_id; + u16 num_queue_pairs; + struct i40e_virtchnl_queue_pair_info qpair[1]; +}; + +/* I40E_VIRTCHNL_OP_CONFIG_IRQ_MAP + * VF uses this message to map vectors to queues. + * The rxq_map and txq_map fields are bitmaps used to indicate which queues + * are to be associated with the specified vector. + * The "other" causes are always mapped to vector 0. + * PF configures interrupt mapping and returns status. + */ +struct i40e_virtchnl_vector_map { + u16 vsi_id; + u16 vector_id; + u16 rxq_map; + u16 txq_map; + u16 rxitr_idx; + u16 txitr_idx; +}; + +struct i40e_virtchnl_irq_map_info { + u16 num_vectors; + struct i40e_virtchnl_vector_map vecmap[1]; +}; + +/* I40E_VIRTCHNL_OP_ENABLE_QUEUES + * I40E_VIRTCHNL_OP_DISABLE_QUEUES + * VF sends these message to enable or disable TX/RX queue pairs. + * The queues fields are bitmaps indicating which queues to act upon. + * (Currently, we only support 16 queues per VF, but we make the field + * u32 to allow for expansion.) + * PF performs requested action and returns status. + */ +struct i40e_virtchnl_queue_select { + u16 vsi_id; + u16 pad; + u32 rx_queues; + u32 tx_queues; +}; + +/* I40E_VIRTCHNL_OP_ADD_ETHER_ADDRESS + * VF sends this message in order to add one or more unicast or multicast + * address filters for the specified VSI. + * PF adds the filters and returns status. + */ + +/* I40E_VIRTCHNL_OP_DEL_ETHER_ADDRESS + * VF sends this message in order to remove one or more unicast or multicast + * filters for the specified VSI. + * PF removes the filters and returns status. + */ + +struct i40e_virtchnl_ether_addr { + u8 addr[ETH_ALEN]; + u8 pad[2]; +}; + +struct i40e_virtchnl_ether_addr_list { + u16 vsi_id; + u16 num_elements; + struct i40e_virtchnl_ether_addr list[1]; +}; + +/* I40E_VIRTCHNL_OP_ADD_VLAN + * VF sends this message to add one or more VLAN tag filters for receives. + * PF adds the filters and returns status. + * If a port VLAN is configured by the PF, this operation will return an + * error to the VF. + */ + +/* I40E_VIRTCHNL_OP_DEL_VLAN + * VF sends this message to remove one or more VLAN tag filters for receives. + * PF removes the filters and returns status. + * If a port VLAN is configured by the PF, this operation will return an + * error to the VF. + */ + +struct i40e_virtchnl_vlan_filter_list { + u16 vsi_id; + u16 num_elements; + u16 vlan_id[1]; +}; + +/* I40E_VIRTCHNL_OP_CONFIG_PROMISCUOUS_MODE + * VF sends VSI id and flags. + * PF returns status code in retval. + * Note: we assume that broadcast accept mode is always enabled. + */ +struct i40e_virtchnl_promisc_info { + u16 vsi_id; + u16 flags; +}; + +#define I40E_FLAG_VF_UNICAST_PROMISC 0x00000001 +#define I40E_FLAG_VF_MULTICAST_PROMISC 0x00000002 + +/* I40E_VIRTCHNL_OP_GET_STATS + * VF sends this message to request stats for the selected VSI. VF uses + * the i40e_virtchnl_queue_select struct to specify the VSI. The queue_id + * field is ignored by the PF. + * + * PF replies with struct i40e_eth_stats in an external buffer. + */ + +/* I40E_VIRTCHNL_OP_EVENT + * PF sends this message to inform the VF driver of events that may affect it. + * No direct response is expected from the VF, though it may generate other + * messages in response to this one. + */ +enum i40e_virtchnl_event_codes { + I40E_VIRTCHNL_EVENT_UNKNOWN = 0, + I40E_VIRTCHNL_EVENT_LINK_CHANGE, + I40E_VIRTCHNL_EVENT_RESET_IMPENDING, + I40E_VIRTCHNL_EVENT_PF_DRIVER_CLOSE, +}; +#define I40E_PF_EVENT_SEVERITY_INFO 0 +#define I40E_PF_EVENT_SEVERITY_CERTAIN_DOOM 255 + +struct i40e_virtchnl_pf_event { + enum i40e_virtchnl_event_codes event; + union { + struct { + enum i40e_aq_link_speed link_speed; + bool link_status; + } link_event; + } event_data; + + int severity; +}; + +/* The following are TBD, not necessary for LAN functionality. + * I40E_VIRTCHNL_OP_FCOE + */ + +/* VF reset states - these are written into the RSTAT register: + * I40E_VFGEN_RSTAT1 on the PF + * I40E_VFGEN_RSTAT on the VF + * When the PF initiates a reset, it writes 0 + * When the reset is complete, it writes 1 + * When the PF detects that the VF has recovered, it writes 2 + * VF checks this register periodically to determine if a reset has occurred, + * then polls it to know when the reset is complete. + * If either the PF or VF reads the register while the hardware + * is in a reset state, it will return DEADBEEF, which, when masked + * will result in 3. + */ +enum i40e_vfr_states { + I40E_VFR_INPROGRESS = 0, + I40E_VFR_COMPLETED, + I40E_VFR_VFACTIVE, + I40E_VFR_UNKNOWN, +}; + +#endif /* _I40E_VIRTCHNL_H_ */ --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40evf/i40evf.h +++ linux-3.13.0/drivers/net/ethernet/intel/i40evf/i40evf.h @@ -0,0 +1,293 @@ +/******************************************************************************* + * + * Intel Ethernet Controller XL710 Family Linux Virtual Function Driver + * Copyright(c) 2013 - 2014 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. + * + * The full GNU General Public License is included in this distribution in + * the file called "COPYING". + * + * Contact Information: + * e1000-devel Mailing List + * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 + * + ******************************************************************************/ + +#ifndef _I40EVF_H_ +#define _I40EVF_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "i40e_type.h" +#include "i40e_virtchnl.h" +#include "i40e_txrx.h" + +#define DEFAULT_DEBUG_LEVEL_SHIFT 3 +#define PFX "i40evf: " +#define DPRINTK(nlevel, klevel, fmt, args...) \ + ((void)((NETIF_MSG_##nlevel & adapter->msg_enable) && \ + printk(KERN_##klevel PFX "%s: %s: " fmt, adapter->netdev->name, \ + __func__ , ## args))) + +/* dummy struct to make common code less painful */ +struct i40e_vsi { + struct i40evf_adapter *back; + struct net_device *netdev; + unsigned long active_vlans[BITS_TO_LONGS(VLAN_N_VID)]; + u16 seid; + u16 id; + unsigned long state; + int base_vector; + u16 work_limit; + /* high bit set means dynamic, use accessor routines to read/write. + * hardware only supports 2us resolution for the ITR registers. + * these values always store the USER setting, and must be converted + * before programming to a register. + */ + u16 rx_itr_setting; + u16 tx_itr_setting; +}; + +/* How many Rx Buffers do we bundle into one write to the hardware ? */ +#define I40EVF_RX_BUFFER_WRITE 16 /* Must be power of 2 */ +#define I40EVF_DEFAULT_TXD 512 +#define I40EVF_DEFAULT_RXD 512 +#define I40EVF_MAX_TXD 4096 +#define I40EVF_MIN_TXD 64 +#define I40EVF_MAX_RXD 4096 +#define I40EVF_MIN_RXD 64 +#define I40EVF_REQ_DESCRIPTOR_MULTIPLE 8 + +/* Supported Rx Buffer Sizes */ +#define I40EVF_RXBUFFER_64 64 /* Used for packet split */ +#define I40EVF_RXBUFFER_128 128 /* Used for packet split */ +#define I40EVF_RXBUFFER_256 256 /* Used for packet split */ +#define I40EVF_RXBUFFER_2048 2048 +#define I40EVF_MAX_RXBUFFER 16384 /* largest size for single descriptor */ +#define I40EVF_MAX_AQ_BUF_SIZE 4096 +#define I40EVF_AQ_LEN 32 +#define I40EVF_AQ_MAX_ERR 10 /* times to try before resetting AQ */ + +#define MAXIMUM_ETHERNET_VLAN_SIZE (VLAN_ETH_FRAME_LEN + ETH_FCS_LEN) + +#define I40E_RX_DESC(R, i) (&(((union i40e_32byte_rx_desc *)((R)->desc))[i])) +#define I40E_TX_DESC(R, i) (&(((struct i40e_tx_desc *)((R)->desc))[i])) +#define I40E_TX_CTXTDESC(R, i) \ + (&(((struct i40e_tx_context_desc *)((R)->desc))[i])) +#define MAX_RX_QUEUES 8 +#define MAX_TX_QUEUES MAX_RX_QUEUES + +/* MAX_MSIX_Q_VECTORS of these are allocated, + * but we only use one per queue-specific vector. + */ +struct i40e_q_vector { + struct i40evf_adapter *adapter; + struct i40e_vsi *vsi; + struct napi_struct napi; + unsigned long reg_idx; + struct i40e_ring_container rx; + struct i40e_ring_container tx; + u32 ring_mask; + u8 num_ringpairs; /* total number of ring pairs in vector */ + int v_idx; /* vector index in list */ + char name[IFNAMSIZ + 9]; + cpumask_var_t affinity_mask; +}; + +/* Helper macros to switch between ints/sec and what the register uses. + * And yes, it's the same math going both ways. The lowest value + * supported by all of the i40e hardware is 8. + */ +#define EITR_INTS_PER_SEC_TO_REG(_eitr) \ + ((_eitr) ? (1000000000 / ((_eitr) * 256)) : 8) +#define EITR_REG_TO_INTS_PER_SEC EITR_INTS_PER_SEC_TO_REG + +#define I40EVF_DESC_UNUSED(R) \ + ((((R)->next_to_clean > (R)->next_to_use) ? 0 : (R)->count) + \ + (R)->next_to_clean - (R)->next_to_use - 1) + +#define I40EVF_RX_DESC_ADV(R, i) \ + (&(((union i40e_adv_rx_desc *)((R).desc))[i])) +#define I40EVF_TX_DESC_ADV(R, i) \ + (&(((union i40e_adv_tx_desc *)((R).desc))[i])) +#define I40EVF_TX_CTXTDESC_ADV(R, i) \ + (&(((struct i40e_adv_tx_context_desc *)((R).desc))[i])) + +#define OTHER_VECTOR 1 +#define NONQ_VECS (OTHER_VECTOR) + +#define MAX_MSIX_Q_VECTORS 4 +#define MAX_MSIX_COUNT 5 + +#define MIN_MSIX_Q_VECTORS 1 +#define MIN_MSIX_COUNT (MIN_MSIX_Q_VECTORS + NONQ_VECS) + +#define I40EVF_QUEUE_END_OF_LIST 0x7FF +#define I40EVF_FREE_VECTOR 0x7FFF +struct i40evf_mac_filter { + struct list_head list; + u8 macaddr[ETH_ALEN]; + bool remove; /* filter needs to be removed */ + bool add; /* filter needs to be added */ +}; + +struct i40evf_vlan_filter { + struct list_head list; + u16 vlan; + bool remove; /* filter needs to be removed */ + bool add; /* filter needs to be added */ +}; + +/* Driver state. The order of these is important! */ +enum i40evf_state_t { + __I40EVF_STARTUP, /* driver loaded, probe complete */ + __I40EVF_REMOVE, /* driver is being unloaded */ + __I40EVF_INIT_VERSION_CHECK, /* aq msg sent, awaiting reply */ + __I40EVF_INIT_GET_RESOURCES, /* aq msg sent, awaiting reply */ + __I40EVF_INIT_SW, /* got resources, setting up structs */ + __I40EVF_RESETTING, /* in reset */ + /* Below here, watchdog is running */ + __I40EVF_DOWN, /* ready, can be opened */ + __I40EVF_TESTING, /* in ethtool self-test */ + __I40EVF_RUNNING, /* opened, working */ +}; + +enum i40evf_critical_section_t { + __I40EVF_IN_CRITICAL_TASK, /* cannot be interrupted */ +}; +/* make common code happy */ +#define __I40E_DOWN __I40EVF_DOWN + +/* board specific private data structure */ +struct i40evf_adapter { + struct timer_list watchdog_timer; + struct work_struct reset_task; + struct work_struct adminq_task; + struct delayed_work init_task; + struct i40e_q_vector *q_vector[MAX_MSIX_Q_VECTORS]; + struct list_head vlan_filter_list; + char misc_vector_name[IFNAMSIZ + 9]; + + /* TX */ + struct i40e_ring *tx_rings[I40E_MAX_VSI_QP]; + u32 tx_timeout_count; + struct list_head mac_filter_list; + + /* RX */ + struct i40e_ring *rx_rings[I40E_MAX_VSI_QP]; + u64 hw_csum_rx_error; + int num_msix_vectors; + struct msix_entry *msix_entries; + + u32 flags; +#define I40EVF_FLAG_RX_CSUM_ENABLED (u32)(1) +#define I40EVF_FLAG_RX_1BUF_CAPABLE (u32)(1 << 1) +#define I40EVF_FLAG_RX_PS_CAPABLE (u32)(1 << 2) +#define I40EVF_FLAG_RX_PS_ENABLED (u32)(1 << 3) +#define I40EVF_FLAG_IN_NETPOLL (u32)(1 << 4) +#define I40EVF_FLAG_IMIR_ENABLED (u32)(1 << 5) +#define I40EVF_FLAG_MQ_CAPABLE (u32)(1 << 6) +#define I40EVF_FLAG_NEED_LINK_UPDATE (u32)(1 << 7) +#define I40EVF_FLAG_PF_COMMS_FAILED (u32)(1 << 8) +#define I40EVF_FLAG_RESET_PENDING (u32)(1 << 9) +#define I40EVF_FLAG_RESET_NEEDED (u32)(1 << 10) +/* duplcates for common code */ +#define I40E_FLAG_FDIR_ATR_ENABLED 0 +#define I40E_FLAG_DCB_ENABLED 0 +#define I40E_FLAG_IN_NETPOLL I40EVF_FLAG_IN_NETPOLL +#define I40E_FLAG_RX_CSUM_ENABLED I40EVF_FLAG_RX_CSUM_ENABLED + /* flags for admin queue service task */ + u32 aq_required; + u32 aq_pending; +#define I40EVF_FLAG_AQ_ENABLE_QUEUES (u32)(1) +#define I40EVF_FLAG_AQ_DISABLE_QUEUES (u32)(1 << 1) +#define I40EVF_FLAG_AQ_ADD_MAC_FILTER (u32)(1 << 2) +#define I40EVF_FLAG_AQ_ADD_VLAN_FILTER (u32)(1 << 3) +#define I40EVF_FLAG_AQ_DEL_MAC_FILTER (u32)(1 << 4) +#define I40EVF_FLAG_AQ_DEL_VLAN_FILTER (u32)(1 << 5) +#define I40EVF_FLAG_AQ_CONFIGURE_QUEUES (u32)(1 << 6) +#define I40EVF_FLAG_AQ_MAP_VECTORS (u32)(1 << 7) +#define I40EVF_FLAG_AQ_HANDLE_RESET (u32)(1 << 8) + + /* OS defined structs */ + struct net_device *netdev; + struct pci_dev *pdev; + struct net_device_stats net_stats; + + struct i40e_hw hw; /* defined in i40e_type.h */ + + enum i40evf_state_t state; + volatile unsigned long crit_section; + + struct work_struct watchdog_task; + bool netdev_registered; + bool link_up; + enum i40e_virtchnl_ops current_op; + struct i40e_virtchnl_vf_resource *vf_res; /* incl. all VSIs */ + struct i40e_virtchnl_vsi_resource *vsi_res; /* our LAN VSI */ + u16 msg_enable; + struct i40e_eth_stats current_stats; + struct i40e_vsi vsi; + u32 aq_wait_count; +}; + + +/* needed by i40evf_ethtool.c */ +extern char i40evf_driver_name[]; +extern const char i40evf_driver_version[]; + +int i40evf_up(struct i40evf_adapter *adapter); +void i40evf_down(struct i40evf_adapter *adapter); +void i40evf_reinit_locked(struct i40evf_adapter *adapter); +void i40evf_reset(struct i40evf_adapter *adapter); +void i40evf_set_ethtool_ops(struct net_device *netdev); +void i40evf_update_stats(struct i40evf_adapter *adapter); +void i40evf_reset_interrupt_capability(struct i40evf_adapter *adapter); +int i40evf_init_interrupt_scheme(struct i40evf_adapter *adapter); +void i40evf_irq_enable_queues(struct i40evf_adapter *adapter, u32 mask); + +void i40e_napi_add_all(struct i40evf_adapter *adapter); +void i40e_napi_del_all(struct i40evf_adapter *adapter); + +int i40evf_send_api_ver(struct i40evf_adapter *adapter); +int i40evf_verify_api_ver(struct i40evf_adapter *adapter); +int i40evf_send_vf_config_msg(struct i40evf_adapter *adapter); +int i40evf_get_vf_config(struct i40evf_adapter *adapter); +void i40evf_irq_enable(struct i40evf_adapter *adapter, bool flush); +void i40evf_configure_queues(struct i40evf_adapter *adapter); +void i40evf_deconfigure_queues(struct i40evf_adapter *adapter); +void i40evf_enable_queues(struct i40evf_adapter *adapter); +void i40evf_disable_queues(struct i40evf_adapter *adapter); +void i40evf_map_queues(struct i40evf_adapter *adapter); +void i40evf_add_ether_addrs(struct i40evf_adapter *adapter); +void i40evf_del_ether_addrs(struct i40evf_adapter *adapter); +void i40evf_add_vlans(struct i40evf_adapter *adapter); +void i40evf_del_vlans(struct i40evf_adapter *adapter); +void i40evf_set_promiscuous(struct i40evf_adapter *adapter, int flags); +void i40evf_request_stats(struct i40evf_adapter *adapter); +void i40evf_request_reset(struct i40evf_adapter *adapter); +void i40evf_virtchnl_completion(struct i40evf_adapter *adapter, + enum i40e_virtchnl_ops v_opcode, + i40e_status v_retval, u8 *msg, u16 msglen); +#endif /* _I40EVF_H_ */ --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40evf/i40evf_ethtool.c +++ linux-3.13.0/drivers/net/ethernet/intel/i40evf/i40evf_ethtool.c @@ -0,0 +1,393 @@ +/******************************************************************************* + * + * Intel Ethernet Controller XL710 Family Linux Virtual Function Driver + * Copyright(c) 2013 - 2014 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. + * + * The full GNU General Public License is included in this distribution in + * the file called "COPYING". + * + * Contact Information: + * e1000-devel Mailing List + * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 + * + ******************************************************************************/ + +/* ethtool support for i40evf */ +#include "i40evf.h" + +#include + + +struct i40evf_stats { + char stat_string[ETH_GSTRING_LEN]; + int stat_offset; +}; + +#define I40EVF_STAT(_name, _stat) { \ + .stat_string = _name, \ + .stat_offset = offsetof(struct i40evf_adapter, _stat) \ +} + +/* All stats are u64, so we don't need to track the size of the field. */ +static const struct i40evf_stats i40evf_gstrings_stats[] = { + I40EVF_STAT("rx_bytes", current_stats.rx_bytes), + I40EVF_STAT("rx_unicast", current_stats.rx_unicast), + I40EVF_STAT("rx_multicast", current_stats.rx_multicast), + I40EVF_STAT("rx_broadcast", current_stats.rx_broadcast), + I40EVF_STAT("rx_discards", current_stats.rx_discards), + I40EVF_STAT("rx_errors", current_stats.rx_errors), + I40EVF_STAT("rx_missed", current_stats.rx_missed), + I40EVF_STAT("rx_unknown_protocol", current_stats.rx_unknown_protocol), + I40EVF_STAT("tx_bytes", current_stats.tx_bytes), + I40EVF_STAT("tx_unicast", current_stats.tx_unicast), + I40EVF_STAT("tx_multicast", current_stats.tx_multicast), + I40EVF_STAT("tx_broadcast", current_stats.tx_broadcast), + I40EVF_STAT("tx_discards", current_stats.tx_discards), + I40EVF_STAT("tx_errors", current_stats.tx_errors), +}; + +#define I40EVF_GLOBAL_STATS_LEN ARRAY_SIZE(i40evf_gstrings_stats) +#define I40EVF_QUEUE_STATS_LEN \ + (((struct i40evf_adapter *) \ + netdev_priv(netdev))->vsi_res->num_queue_pairs * 4) +#define I40EVF_STATS_LEN (I40EVF_GLOBAL_STATS_LEN + I40EVF_QUEUE_STATS_LEN) + +/** + * i40evf_get_settings - Get Link Speed and Duplex settings + * @netdev: network interface device structure + * @ecmd: ethtool command + * + * Reports speed/duplex settings. Because this is a VF, we don't know what + * kind of link we really have, so we fake it. + **/ +static int i40evf_get_settings(struct net_device *netdev, + struct ethtool_cmd *ecmd) +{ + /* In the future the VF will be able to query the PF for + * some information - for now use a dummy value + */ + ecmd->supported = SUPPORTED_10000baseT_Full; + ecmd->autoneg = AUTONEG_DISABLE; + ecmd->transceiver = XCVR_DUMMY1; + ecmd->port = PORT_NONE; + + return 0; +} + +/** + * i40evf_get_sset_count - Get length of string set + * @netdev: network interface device structure + * @sset: id of string set + * + * Reports size of string table. This driver only supports + * strings for statistics. + **/ +static int i40evf_get_sset_count(struct net_device *netdev, int sset) +{ + if (sset == ETH_SS_STATS) + return I40EVF_STATS_LEN; + else + return -ENOTSUPP; +} + +/** + * i40evf_get_ethtool_stats - report device statistics + * @netdev: network interface device structure + * @stats: ethtool statistics structure + * @data: pointer to data buffer + * + * All statistics are added to the data buffer as an array of u64. + **/ +static void i40evf_get_ethtool_stats(struct net_device *netdev, + struct ethtool_stats *stats, u64 *data) +{ + struct i40evf_adapter *adapter = netdev_priv(netdev); + int i, j; + char *p; + + for (i = 0; i < I40EVF_GLOBAL_STATS_LEN; i++) { + p = (char *)adapter + i40evf_gstrings_stats[i].stat_offset; + data[i] = *(u64 *)p; + } + for (j = 0; j < adapter->vsi_res->num_queue_pairs; j++) { + data[i++] = adapter->tx_rings[j]->stats.packets; + data[i++] = adapter->tx_rings[j]->stats.bytes; + } + for (j = 0; j < adapter->vsi_res->num_queue_pairs; j++) { + data[i++] = adapter->rx_rings[j]->stats.packets; + data[i++] = adapter->rx_rings[j]->stats.bytes; + } +} + +/** + * i40evf_get_strings - Get string set + * @netdev: network interface device structure + * @sset: id of string set + * @data: buffer for string data + * + * Builds stats string table. + **/ +static void i40evf_get_strings(struct net_device *netdev, u32 sset, u8 *data) +{ + struct i40evf_adapter *adapter = netdev_priv(netdev); + u8 *p = data; + int i; + + if (sset == ETH_SS_STATS) { + for (i = 0; i < I40EVF_GLOBAL_STATS_LEN; i++) { + memcpy(p, i40evf_gstrings_stats[i].stat_string, + ETH_GSTRING_LEN); + p += ETH_GSTRING_LEN; + } + for (i = 0; i < adapter->vsi_res->num_queue_pairs; i++) { + snprintf(p, ETH_GSTRING_LEN, "tx-%u.packets", i); + p += ETH_GSTRING_LEN; + snprintf(p, ETH_GSTRING_LEN, "tx-%u.bytes", i); + p += ETH_GSTRING_LEN; + } + for (i = 0; i < adapter->vsi_res->num_queue_pairs; i++) { + snprintf(p, ETH_GSTRING_LEN, "rx-%u.packets", i); + p += ETH_GSTRING_LEN; + snprintf(p, ETH_GSTRING_LEN, "rx-%u.bytes", i); + p += ETH_GSTRING_LEN; + } + } +} + +/** + * i40evf_get_msglevel - Get debug message level + * @netdev: network interface device structure + * + * Returns current debug message level. + **/ +static u32 i40evf_get_msglevel(struct net_device *netdev) +{ + struct i40evf_adapter *adapter = netdev_priv(netdev); + return adapter->msg_enable; +} + +/** + * i40evf_get_msglevel - Set debug message level + * @netdev: network interface device structure + * @data: message level + * + * Set current debug message level. Higher values cause the driver to + * be noisier. + **/ +static void i40evf_set_msglevel(struct net_device *netdev, u32 data) +{ + struct i40evf_adapter *adapter = netdev_priv(netdev); + adapter->msg_enable = data; +} + +/** + * i40evf_get_drvinto - Get driver info + * @netdev: network interface device structure + * @drvinfo: ethool driver info structure + * + * Returns information about the driver and device for display to the user. + **/ +static void i40evf_get_drvinfo(struct net_device *netdev, + struct ethtool_drvinfo *drvinfo) +{ + struct i40evf_adapter *adapter = netdev_priv(netdev); + + strlcpy(drvinfo->driver, i40evf_driver_name, 32); + strlcpy(drvinfo->version, i40evf_driver_version, 32); + + strlcpy(drvinfo->bus_info, pci_name(adapter->pdev), 32); +} + +/** + * i40evf_get_ringparam - Get ring parameters + * @netdev: network interface device structure + * @ring: ethtool ringparam structure + * + * Returns current ring parameters. TX and RX rings are reported separately, + * but the number of rings is not reported. + **/ +static void i40evf_get_ringparam(struct net_device *netdev, + struct ethtool_ringparam *ring) +{ + struct i40evf_adapter *adapter = netdev_priv(netdev); + struct i40e_ring *tx_ring = adapter->tx_rings[0]; + struct i40e_ring *rx_ring = adapter->rx_rings[0]; + + ring->rx_max_pending = I40EVF_MAX_RXD; + ring->tx_max_pending = I40EVF_MAX_TXD; + ring->rx_pending = rx_ring->count; + ring->tx_pending = tx_ring->count; +} + +/** + * i40evf_set_ringparam - Set ring parameters + * @netdev: network interface device structure + * @ring: ethtool ringparam structure + * + * Sets ring parameters. TX and RX rings are controlled separately, but the + * number of rings is not specified, so all rings get the same settings. + **/ +static int i40evf_set_ringparam(struct net_device *netdev, + struct ethtool_ringparam *ring) +{ + struct i40evf_adapter *adapter = netdev_priv(netdev); + u32 new_rx_count, new_tx_count; + int i; + + if ((ring->rx_mini_pending) || (ring->rx_jumbo_pending)) + return -EINVAL; + + new_tx_count = clamp_t(u32, ring->tx_pending, + I40EVF_MIN_TXD, + I40EVF_MAX_TXD); + new_tx_count = ALIGN(new_tx_count, I40EVF_REQ_DESCRIPTOR_MULTIPLE); + + new_rx_count = clamp_t(u32, ring->rx_pending, + I40EVF_MIN_RXD, + I40EVF_MAX_RXD); + new_rx_count = ALIGN(new_rx_count, I40EVF_REQ_DESCRIPTOR_MULTIPLE); + + /* if nothing to do return success */ + if ((new_tx_count == adapter->tx_rings[0]->count) && + (new_rx_count == adapter->rx_rings[0]->count)) + return 0; + + for (i = 0; i < adapter->vsi_res->num_queue_pairs; i++) { + adapter->tx_rings[0]->count = new_tx_count; + adapter->rx_rings[0]->count = new_rx_count; + } + + if (netif_running(netdev)) + i40evf_reinit_locked(adapter); + return 0; +} + +/** + * i40evf_get_coalesce - Get interrupt coalescing settings + * @netdev: network interface device structure + * @ec: ethtool coalesce structure + * + * Returns current coalescing settings. This is referred to elsewhere in the + * driver as Interrupt Throttle Rate, as this is how the hardware describes + * this functionality. + **/ +static int i40evf_get_coalesce(struct net_device *netdev, + struct ethtool_coalesce *ec) +{ + struct i40evf_adapter *adapter = netdev_priv(netdev); + struct i40e_vsi *vsi = &adapter->vsi; + + ec->tx_max_coalesced_frames = vsi->work_limit; + ec->rx_max_coalesced_frames = vsi->work_limit; + + if (ITR_IS_DYNAMIC(vsi->rx_itr_setting)) + ec->rx_coalesce_usecs = 1; + else + ec->rx_coalesce_usecs = vsi->rx_itr_setting; + + if (ITR_IS_DYNAMIC(vsi->tx_itr_setting)) + ec->tx_coalesce_usecs = 1; + else + ec->tx_coalesce_usecs = vsi->tx_itr_setting; + + return 0; +} + +/** + * i40evf_set_coalesce - Set interrupt coalescing settings + * @netdev: network interface device structure + * @ec: ethtool coalesce structure + * + * Change current coalescing settings. + **/ +static int i40evf_set_coalesce(struct net_device *netdev, + struct ethtool_coalesce *ec) +{ + struct i40evf_adapter *adapter = netdev_priv(netdev); + struct i40e_hw *hw = &adapter->hw; + struct i40e_vsi *vsi = &adapter->vsi; + struct i40e_q_vector *q_vector; + int i; + + if (ec->tx_max_coalesced_frames || ec->rx_max_coalesced_frames) + vsi->work_limit = ec->tx_max_coalesced_frames; + + switch (ec->rx_coalesce_usecs) { + case 0: + vsi->rx_itr_setting = 0; + break; + case 1: + vsi->rx_itr_setting = (I40E_ITR_DYNAMIC + | ITR_REG_TO_USEC(I40E_ITR_RX_DEF)); + break; + default: + if ((ec->rx_coalesce_usecs < (I40E_MIN_ITR << 1)) || + (ec->rx_coalesce_usecs > (I40E_MAX_ITR << 1))) + return -EINVAL; + vsi->rx_itr_setting = ec->rx_coalesce_usecs; + break; + } + + switch (ec->tx_coalesce_usecs) { + case 0: + vsi->tx_itr_setting = 0; + break; + case 1: + vsi->tx_itr_setting = (I40E_ITR_DYNAMIC + | ITR_REG_TO_USEC(I40E_ITR_TX_DEF)); + break; + default: + if ((ec->tx_coalesce_usecs < (I40E_MIN_ITR << 1)) || + (ec->tx_coalesce_usecs > (I40E_MAX_ITR << 1))) + return -EINVAL; + vsi->tx_itr_setting = ec->tx_coalesce_usecs; + break; + } + + for (i = 0; i < adapter->num_msix_vectors - NONQ_VECS; i++) { + q_vector = adapter->q_vector[i]; + q_vector->rx.itr = ITR_TO_REG(vsi->rx_itr_setting); + wr32(hw, I40E_VFINT_ITRN1(0, i), q_vector->rx.itr); + q_vector->tx.itr = ITR_TO_REG(vsi->tx_itr_setting); + wr32(hw, I40E_VFINT_ITRN1(1, i), q_vector->tx.itr); + i40e_flush(hw); + } + + return 0; +} + +static struct ethtool_ops i40evf_ethtool_ops = { + .get_settings = i40evf_get_settings, + .get_drvinfo = i40evf_get_drvinfo, + .get_link = ethtool_op_get_link, + .get_ringparam = i40evf_get_ringparam, + .set_ringparam = i40evf_set_ringparam, + .get_strings = i40evf_get_strings, + .get_ethtool_stats = i40evf_get_ethtool_stats, + .get_sset_count = i40evf_get_sset_count, + .get_msglevel = i40evf_get_msglevel, + .set_msglevel = i40evf_set_msglevel, + .get_coalesce = i40evf_get_coalesce, + .set_coalesce = i40evf_set_coalesce, +}; + +/** + * i40evf_set_ethtool_ops - Initialize ethtool ops struct + * @netdev: network interface device structure + * + * Sets ethtool ops struct in our netdev so that ethtool can call + * our functions. + **/ +void i40evf_set_ethtool_ops(struct net_device *netdev) +{ + SET_ETHTOOL_OPS(netdev, &i40evf_ethtool_ops); +} --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40evf/i40evf_main.c +++ linux-3.13.0/drivers/net/ethernet/intel/i40evf/i40evf_main.c @@ -0,0 +1,2456 @@ +/******************************************************************************* + * + * Intel Ethernet Controller XL710 Family Linux Virtual Function Driver + * Copyright(c) 2013 - 2014 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. + * + * The full GNU General Public License is included in this distribution in + * the file called "COPYING". + * + * Contact Information: + * e1000-devel Mailing List + * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 + * + ******************************************************************************/ + +#include "i40evf.h" +#include "i40e_prototype.h" +static int i40evf_setup_all_tx_resources(struct i40evf_adapter *adapter); +static int i40evf_setup_all_rx_resources(struct i40evf_adapter *adapter); +static int i40evf_close(struct net_device *netdev); + +char i40evf_driver_name[] = "i40evf"; +static const char i40evf_driver_string[] = + "Intel(R) XL710 X710 Virtual Function Network Driver"; + +#define DRV_VERSION "0.9.16" +const char i40evf_driver_version[] = DRV_VERSION; +static const char i40evf_copyright[] = + "Copyright (c) 2013 - 2014 Intel Corporation."; + +/* i40evf_pci_tbl - PCI Device ID Table + * + * Wildcard entries (PCI_ANY_ID) should come last + * Last entry must be all 0s + * + * { Vendor ID, Device ID, SubVendor ID, SubDevice ID, + * Class, Class Mask, private data (not used) } + */ +static DEFINE_PCI_DEVICE_TABLE(i40evf_pci_tbl) = { + {PCI_VDEVICE(INTEL, I40E_DEV_ID_VF), 0}, + /* required last entry */ + {0, } +}; + +MODULE_DEVICE_TABLE(pci, i40evf_pci_tbl); + +MODULE_AUTHOR("Intel Corporation, "); +MODULE_DESCRIPTION("Intel(R) XL710 X710 Virtual Function Network Driver"); +MODULE_LICENSE("GPL"); +MODULE_VERSION(DRV_VERSION); + +/** + * i40evf_allocate_dma_mem_d - OS specific memory alloc for shared code + * @hw: pointer to the HW structure + * @mem: ptr to mem struct to fill out + * @size: size of memory requested + * @alignment: what to align the allocation to + **/ +i40e_status i40evf_allocate_dma_mem_d(struct i40e_hw *hw, + struct i40e_dma_mem *mem, + u64 size, u32 alignment) +{ + struct i40evf_adapter *adapter = (struct i40evf_adapter *)hw->back; + + if (!mem) + return I40E_ERR_PARAM; + + mem->size = ALIGN(size, alignment); + mem->va = dma_alloc_coherent(&adapter->pdev->dev, mem->size, + (dma_addr_t *)&mem->pa, GFP_KERNEL); + if (mem->va) + return 0; + else + return I40E_ERR_NO_MEMORY; +} + +/** + * i40evf_free_dma_mem_d - OS specific memory free for shared code + * @hw: pointer to the HW structure + * @mem: ptr to mem struct to free + **/ +i40e_status i40evf_free_dma_mem_d(struct i40e_hw *hw, struct i40e_dma_mem *mem) +{ + struct i40evf_adapter *adapter = (struct i40evf_adapter *)hw->back; + + if (!mem || !mem->va) + return I40E_ERR_PARAM; + dma_free_coherent(&adapter->pdev->dev, mem->size, + mem->va, (dma_addr_t)mem->pa); + return 0; +} + +/** + * i40evf_allocate_virt_mem_d - OS specific memory alloc for shared code + * @hw: pointer to the HW structure + * @mem: ptr to mem struct to fill out + * @size: size of memory requested + **/ +i40e_status i40evf_allocate_virt_mem_d(struct i40e_hw *hw, + struct i40e_virt_mem *mem, u32 size) +{ + if (!mem) + return I40E_ERR_PARAM; + + mem->size = size; + mem->va = kzalloc(size, GFP_KERNEL); + + if (mem->va) + return 0; + else + return I40E_ERR_NO_MEMORY; +} + +/** + * i40evf_free_virt_mem_d - OS specific memory free for shared code + * @hw: pointer to the HW structure + * @mem: ptr to mem struct to free + **/ +i40e_status i40evf_free_virt_mem_d(struct i40e_hw *hw, + struct i40e_virt_mem *mem) +{ + if (!mem) + return I40E_ERR_PARAM; + + /* it's ok to kfree a NULL pointer */ + kfree(mem->va); + + return 0; +} + +/** + * i40evf_debug_d - OS dependent version of debug printing + * @hw: pointer to the HW structure + * @mask: debug level mask + * @fmt_str: printf-type format description + **/ +void i40evf_debug_d(void *hw, u32 mask, char *fmt_str, ...) +{ + char buf[512]; + va_list argptr; + + if (!(mask & ((struct i40e_hw *)hw)->debug_mask)) + return; + + va_start(argptr, fmt_str); + vsnprintf(buf, sizeof(buf), fmt_str, argptr); + va_end(argptr); + + /* the debug string is already formatted with a newline */ + pr_info("%s", buf); +} + +/** + * i40evf_tx_timeout - Respond to a Tx Hang + * @netdev: network interface device structure + **/ +static void i40evf_tx_timeout(struct net_device *netdev) +{ + struct i40evf_adapter *adapter = netdev_priv(netdev); + + adapter->tx_timeout_count++; + dev_info(&adapter->pdev->dev, "TX timeout detected.\n"); + if (!(adapter->flags & I40EVF_FLAG_RESET_PENDING)) { + adapter->flags |= I40EVF_FLAG_RESET_NEEDED; + schedule_work(&adapter->reset_task); + } +} + +/** + * i40evf_misc_irq_disable - Mask off interrupt generation on the NIC + * @adapter: board private structure + **/ +static void i40evf_misc_irq_disable(struct i40evf_adapter *adapter) +{ + struct i40e_hw *hw = &adapter->hw; + wr32(hw, I40E_VFINT_DYN_CTL01, 0); + + /* read flush */ + rd32(hw, I40E_VFGEN_RSTAT); + + synchronize_irq(adapter->msix_entries[0].vector); +} + +/** + * i40evf_misc_irq_enable - Enable default interrupt generation settings + * @adapter: board private structure + **/ +static void i40evf_misc_irq_enable(struct i40evf_adapter *adapter) +{ + struct i40e_hw *hw = &adapter->hw; + wr32(hw, I40E_VFINT_DYN_CTL01, I40E_VFINT_DYN_CTL01_INTENA_MASK | + I40E_VFINT_DYN_CTL01_ITR_INDX_MASK); + wr32(hw, I40E_VFINT_ICR0_ENA1, I40E_VFINT_ICR0_ENA_ADMINQ_MASK); + + /* read flush */ + rd32(hw, I40E_VFGEN_RSTAT); +} + +/** + * i40evf_irq_disable - Mask off interrupt generation on the NIC + * @adapter: board private structure + **/ +static void i40evf_irq_disable(struct i40evf_adapter *adapter) +{ + int i; + struct i40e_hw *hw = &adapter->hw; + + if (!adapter->msix_entries) + return; + + for (i = 1; i < adapter->num_msix_vectors; i++) { + wr32(hw, I40E_VFINT_DYN_CTLN1(i - 1), 0); + synchronize_irq(adapter->msix_entries[i].vector); + } + /* read flush */ + rd32(hw, I40E_VFGEN_RSTAT); + +} + +/** + * i40evf_irq_enable_queues - Enable interrupt for specified queues + * @adapter: board private structure + * @mask: bitmap of queues to enable + **/ +void i40evf_irq_enable_queues(struct i40evf_adapter *adapter, u32 mask) +{ + struct i40e_hw *hw = &adapter->hw; + int i; + + for (i = 1; i < adapter->num_msix_vectors; i++) { + if (mask & (1 << (i - 1))) { + wr32(hw, I40E_VFINT_DYN_CTLN1(i - 1), + I40E_VFINT_DYN_CTLN1_INTENA_MASK | + I40E_VFINT_DYN_CTLN_CLEARPBA_MASK); + } + } +} + +/** + * i40evf_fire_sw_int - Generate SW interrupt for specified vectors + * @adapter: board private structure + * @mask: bitmap of vectors to trigger + **/ +static void i40evf_fire_sw_int(struct i40evf_adapter *adapter, + u32 mask) +{ + struct i40e_hw *hw = &adapter->hw; + int i; + uint32_t dyn_ctl; + + for (i = 1; i < adapter->num_msix_vectors; i++) { + if (mask & (1 << i)) { + dyn_ctl = rd32(hw, I40E_VFINT_DYN_CTLN1(i - 1)); + dyn_ctl |= I40E_VFINT_DYN_CTLN_SWINT_TRIG_MASK | + I40E_VFINT_DYN_CTLN_CLEARPBA_MASK; + wr32(hw, I40E_VFINT_DYN_CTLN1(i - 1), dyn_ctl); + } + } +} + +/** + * i40evf_irq_enable - Enable default interrupt generation settings + * @adapter: board private structure + **/ +void i40evf_irq_enable(struct i40evf_adapter *adapter, bool flush) +{ + struct i40e_hw *hw = &adapter->hw; + + i40evf_irq_enable_queues(adapter, ~0); + + if (flush) + rd32(hw, I40E_VFGEN_RSTAT); +} + +/** + * i40evf_msix_aq - Interrupt handler for vector 0 + * @irq: interrupt number + * @data: pointer to netdev + **/ +static irqreturn_t i40evf_msix_aq(int irq, void *data) +{ + struct net_device *netdev = data; + struct i40evf_adapter *adapter = netdev_priv(netdev); + struct i40e_hw *hw = &adapter->hw; + u32 val; + u32 ena_mask; + + /* handle non-queue interrupts */ + val = rd32(hw, I40E_VFINT_ICR01); + ena_mask = rd32(hw, I40E_VFINT_ICR0_ENA1); + + + val = rd32(hw, I40E_VFINT_DYN_CTL01); + val = val | I40E_PFINT_DYN_CTL0_CLEARPBA_MASK; + wr32(hw, I40E_VFINT_DYN_CTL01, val); + + /* re-enable interrupt causes */ + wr32(hw, I40E_VFINT_ICR0_ENA1, ena_mask); + wr32(hw, I40E_VFINT_DYN_CTL01, I40E_VFINT_DYN_CTL01_INTENA_MASK); + + /* schedule work on the private workqueue */ + schedule_work(&adapter->adminq_task); + + return IRQ_HANDLED; +} + +/** + * i40evf_msix_clean_rings - MSIX mode Interrupt Handler + * @irq: interrupt number + * @data: pointer to a q_vector + **/ +static irqreturn_t i40evf_msix_clean_rings(int irq, void *data) +{ + struct i40e_q_vector *q_vector = data; + + if (!q_vector->tx.ring && !q_vector->rx.ring) + return IRQ_HANDLED; + + napi_schedule(&q_vector->napi); + + return IRQ_HANDLED; +} + +/** + * i40evf_map_vector_to_rxq - associate irqs with rx queues + * @adapter: board private structure + * @v_idx: interrupt number + * @r_idx: queue number + **/ +static void +i40evf_map_vector_to_rxq(struct i40evf_adapter *adapter, int v_idx, int r_idx) +{ + struct i40e_q_vector *q_vector = adapter->q_vector[v_idx]; + struct i40e_ring *rx_ring = adapter->rx_rings[r_idx]; + + rx_ring->q_vector = q_vector; + rx_ring->next = q_vector->rx.ring; + rx_ring->vsi = &adapter->vsi; + q_vector->rx.ring = rx_ring; + q_vector->rx.count++; + q_vector->rx.latency_range = I40E_LOW_LATENCY; +} + +/** + * i40evf_map_vector_to_txq - associate irqs with tx queues + * @adapter: board private structure + * @v_idx: interrupt number + * @t_idx: queue number + **/ +static void +i40evf_map_vector_to_txq(struct i40evf_adapter *adapter, int v_idx, int t_idx) +{ + struct i40e_q_vector *q_vector = adapter->q_vector[v_idx]; + struct i40e_ring *tx_ring = adapter->tx_rings[t_idx]; + + tx_ring->q_vector = q_vector; + tx_ring->next = q_vector->tx.ring; + tx_ring->vsi = &adapter->vsi; + q_vector->tx.ring = tx_ring; + q_vector->tx.count++; + q_vector->tx.latency_range = I40E_LOW_LATENCY; + q_vector->num_ringpairs++; + q_vector->ring_mask |= (1 << t_idx); +} + +/** + * i40evf_map_rings_to_vectors - Maps descriptor rings to vectors + * @adapter: board private structure to initialize + * + * This function maps descriptor rings to the queue-specific vectors + * we were allotted through the MSI-X enabling code. Ideally, we'd have + * one vector per ring/queue, but on a constrained vector budget, we + * group the rings as "efficiently" as possible. You would add new + * mapping configurations in here. + **/ +static int i40evf_map_rings_to_vectors(struct i40evf_adapter *adapter) +{ + int q_vectors; + int v_start = 0; + int rxr_idx = 0, txr_idx = 0; + int rxr_remaining = adapter->vsi_res->num_queue_pairs; + int txr_remaining = adapter->vsi_res->num_queue_pairs; + int i, j; + int rqpv, tqpv; + int err = 0; + + q_vectors = adapter->num_msix_vectors - NONQ_VECS; + + /* The ideal configuration... + * We have enough vectors to map one per queue. + */ + if (q_vectors == (rxr_remaining * 2)) { + for (; rxr_idx < rxr_remaining; v_start++, rxr_idx++) + i40evf_map_vector_to_rxq(adapter, v_start, rxr_idx); + + for (; txr_idx < txr_remaining; v_start++, txr_idx++) + i40evf_map_vector_to_txq(adapter, v_start, txr_idx); + goto out; + } + + /* If we don't have enough vectors for a 1-to-1 + * mapping, we'll have to group them so there are + * multiple queues per vector. + * Re-adjusting *qpv takes care of the remainder. + */ + for (i = v_start; i < q_vectors; i++) { + rqpv = DIV_ROUND_UP(rxr_remaining, q_vectors - i); + for (j = 0; j < rqpv; j++) { + i40evf_map_vector_to_rxq(adapter, i, rxr_idx); + rxr_idx++; + rxr_remaining--; + } + } + for (i = v_start; i < q_vectors; i++) { + tqpv = DIV_ROUND_UP(txr_remaining, q_vectors - i); + for (j = 0; j < tqpv; j++) { + i40evf_map_vector_to_txq(adapter, i, txr_idx); + txr_idx++; + txr_remaining--; + } + } + +out: + adapter->aq_required |= I40EVF_FLAG_AQ_MAP_VECTORS; + + return err; +} + +/** + * i40evf_request_traffic_irqs - Initialize MSI-X interrupts + * @adapter: board private structure + * + * Allocates MSI-X vectors for tx and rx handling, and requests + * interrupts from the kernel. + **/ +static int +i40evf_request_traffic_irqs(struct i40evf_adapter *adapter, char *basename) +{ + int vector, err, q_vectors; + int rx_int_idx = 0, tx_int_idx = 0; + + i40evf_irq_disable(adapter); + /* Decrement for Other and TCP Timer vectors */ + q_vectors = adapter->num_msix_vectors - NONQ_VECS; + + for (vector = 0; vector < q_vectors; vector++) { + struct i40e_q_vector *q_vector = adapter->q_vector[vector]; + + if (q_vector->tx.ring && q_vector->rx.ring) { + snprintf(q_vector->name, sizeof(q_vector->name) - 1, + "i40evf-%s-%s-%d", basename, + "TxRx", rx_int_idx++); + tx_int_idx++; + } else if (q_vector->rx.ring) { + snprintf(q_vector->name, sizeof(q_vector->name) - 1, + "i40evf-%s-%s-%d", basename, + "rx", rx_int_idx++); + } else if (q_vector->tx.ring) { + snprintf(q_vector->name, sizeof(q_vector->name) - 1, + "i40evf-%s-%s-%d", basename, + "tx", tx_int_idx++); + } else { + /* skip this unused q_vector */ + continue; + } + err = request_irq( + adapter->msix_entries[vector + NONQ_VECS].vector, + i40evf_msix_clean_rings, + 0, + q_vector->name, + q_vector); + if (err) { + dev_info(&adapter->pdev->dev, + "%s: request_irq failed, error: %d\n", + __func__, err); + goto free_queue_irqs; + } + /* assign the mask for this irq */ + irq_set_affinity_hint( + adapter->msix_entries[vector + NONQ_VECS].vector, + q_vector->affinity_mask); + } + + return 0; + +free_queue_irqs: + while (vector) { + vector--; + irq_set_affinity_hint( + adapter->msix_entries[vector + NONQ_VECS].vector, + NULL); + free_irq(adapter->msix_entries[vector + NONQ_VECS].vector, + adapter->q_vector[vector]); + } + return err; +} + +/** + * i40evf_request_misc_irq - Initialize MSI-X interrupts + * @adapter: board private structure + * + * Allocates MSI-X vector 0 and requests interrupts from the kernel. This + * vector is only for the admin queue, and stays active even when the netdev + * is closed. + **/ +static int i40evf_request_misc_irq(struct i40evf_adapter *adapter) +{ + struct net_device *netdev = adapter->netdev; + int err; + + sprintf(adapter->misc_vector_name, "i40evf:mbx"); + err = request_irq(adapter->msix_entries[0].vector, + &i40evf_msix_aq, 0, + adapter->misc_vector_name, netdev); + if (err) { + dev_err(&adapter->pdev->dev, + "request_irq for %s failed: %d\n", + adapter->misc_vector_name, err); + free_irq(adapter->msix_entries[0].vector, netdev); + } + return err; +} + +/** + * i40evf_free_traffic_irqs - Free MSI-X interrupts + * @adapter: board private structure + * + * Frees all MSI-X vectors other than 0. + **/ +static void i40evf_free_traffic_irqs(struct i40evf_adapter *adapter) +{ + int i; + int q_vectors; + q_vectors = adapter->num_msix_vectors - NONQ_VECS; + + for (i = 0; i < q_vectors; i++) { + irq_set_affinity_hint(adapter->msix_entries[i+1].vector, + NULL); + free_irq(adapter->msix_entries[i+1].vector, + adapter->q_vector[i]); + } +} + +/** + * i40evf_free_misc_irq - Free MSI-X miscellaneous vector + * @adapter: board private structure + * + * Frees MSI-X vector 0. + **/ +static void i40evf_free_misc_irq(struct i40evf_adapter *adapter) +{ + struct net_device *netdev = adapter->netdev; + + free_irq(adapter->msix_entries[0].vector, netdev); +} + +/** + * i40evf_configure_tx - Configure Transmit Unit after Reset + * @adapter: board private structure + * + * Configure the Tx unit of the MAC after a reset. + **/ +static void i40evf_configure_tx(struct i40evf_adapter *adapter) +{ + struct i40e_hw *hw = &adapter->hw; + int i; + for (i = 0; i < adapter->vsi_res->num_queue_pairs; i++) + adapter->tx_rings[i]->tail = hw->hw_addr + I40E_QTX_TAIL1(i); +} + +/** + * i40evf_configure_rx - Configure Receive Unit after Reset + * @adapter: board private structure + * + * Configure the Rx unit of the MAC after a reset. + **/ +static void i40evf_configure_rx(struct i40evf_adapter *adapter) +{ + struct i40e_hw *hw = &adapter->hw; + struct net_device *netdev = adapter->netdev; + int max_frame = netdev->mtu + ETH_HLEN + ETH_FCS_LEN; + int i; + int rx_buf_len; + + + adapter->flags &= ~I40EVF_FLAG_RX_PS_CAPABLE; + adapter->flags |= I40EVF_FLAG_RX_1BUF_CAPABLE; + + /* Decide whether to use packet split mode or not */ + if (netdev->mtu > ETH_DATA_LEN) { + if (adapter->flags & I40EVF_FLAG_RX_PS_CAPABLE) + adapter->flags |= I40EVF_FLAG_RX_PS_ENABLED; + else + adapter->flags &= ~I40EVF_FLAG_RX_PS_ENABLED; + } else { + if (adapter->flags & I40EVF_FLAG_RX_1BUF_CAPABLE) + adapter->flags &= ~I40EVF_FLAG_RX_PS_ENABLED; + else + adapter->flags |= I40EVF_FLAG_RX_PS_ENABLED; + } + + /* Set the RX buffer length according to the mode */ + if (adapter->flags & I40EVF_FLAG_RX_PS_ENABLED) { + rx_buf_len = I40E_RX_HDR_SIZE; + } else { + if (netdev->mtu <= ETH_DATA_LEN) + rx_buf_len = I40EVF_RXBUFFER_2048; + else + rx_buf_len = ALIGN(max_frame, 1024); + } + + for (i = 0; i < adapter->vsi_res->num_queue_pairs; i++) { + adapter->rx_rings[i]->tail = hw->hw_addr + I40E_QRX_TAIL1(i); + adapter->rx_rings[i]->rx_buf_len = rx_buf_len; + } +} + +/** + * i40evf_find_vlan - Search filter list for specific vlan filter + * @adapter: board private structure + * @vlan: vlan tag + * + * Returns ptr to the filter object or NULL + **/ +static struct +i40evf_vlan_filter *i40evf_find_vlan(struct i40evf_adapter *adapter, u16 vlan) +{ + struct i40evf_vlan_filter *f; + + list_for_each_entry(f, &adapter->vlan_filter_list, list) { + if (vlan == f->vlan) + return f; + } + return NULL; +} + +/** + * i40evf_add_vlan - Add a vlan filter to the list + * @adapter: board private structure + * @vlan: VLAN tag + * + * Returns ptr to the filter object or NULL when no memory available. + **/ +static struct +i40evf_vlan_filter *i40evf_add_vlan(struct i40evf_adapter *adapter, u16 vlan) +{ + struct i40evf_vlan_filter *f; + + f = i40evf_find_vlan(adapter, vlan); + if (NULL == f) { + f = kzalloc(sizeof(*f), GFP_ATOMIC); + if (NULL == f) { + dev_info(&adapter->pdev->dev, + "%s: no memory for new VLAN filter\n", + __func__); + return NULL; + } + f->vlan = vlan; + + INIT_LIST_HEAD(&f->list); + list_add(&f->list, &adapter->vlan_filter_list); + f->add = true; + adapter->aq_required |= I40EVF_FLAG_AQ_ADD_VLAN_FILTER; + } + + return f; +} + +/** + * i40evf_del_vlan - Remove a vlan filter from the list + * @adapter: board private structure + * @vlan: VLAN tag + **/ +static void i40evf_del_vlan(struct i40evf_adapter *adapter, u16 vlan) +{ + struct i40evf_vlan_filter *f; + + f = i40evf_find_vlan(adapter, vlan); + if (f) { + f->remove = true; + adapter->aq_required |= I40EVF_FLAG_AQ_DEL_VLAN_FILTER; + } + return; +} + +/** + * i40evf_vlan_rx_add_vid - Add a VLAN filter to a device + * @netdev: network device struct + * @vid: VLAN tag + **/ +static int i40evf_vlan_rx_add_vid(struct net_device *netdev, + __always_unused __be16 proto, u16 vid) +{ + struct i40evf_adapter *adapter = netdev_priv(netdev); + + if (i40evf_add_vlan(adapter, vid) == NULL) + return -ENOMEM; + return 0; +} + +/** + * i40evf_vlan_rx_kill_vid - Remove a VLAN filter from a device + * @netdev: network device struct + * @vid: VLAN tag + **/ +static int i40evf_vlan_rx_kill_vid(struct net_device *netdev, + __always_unused __be16 proto, u16 vid) +{ + struct i40evf_adapter *adapter = netdev_priv(netdev); + + i40evf_del_vlan(adapter, vid); + return 0; +} + +/** + * i40evf_find_filter - Search filter list for specific mac filter + * @adapter: board private structure + * @macaddr: the MAC address + * + * Returns ptr to the filter object or NULL + **/ +static struct +i40evf_mac_filter *i40evf_find_filter(struct i40evf_adapter *adapter, + u8 *macaddr) +{ + struct i40evf_mac_filter *f; + + if (!macaddr) + return NULL; + + list_for_each_entry(f, &adapter->mac_filter_list, list) { + if (ether_addr_equal(macaddr, f->macaddr)) + return f; + } + return NULL; +} + +/** + * i40e_add_filter - Add a mac filter to the filter list + * @adapter: board private structure + * @macaddr: the MAC address + * + * Returns ptr to the filter object or NULL when no memory available. + **/ +static struct +i40evf_mac_filter *i40evf_add_filter(struct i40evf_adapter *adapter, + u8 *macaddr) +{ + struct i40evf_mac_filter *f; + + if (!macaddr) + return NULL; + + while (test_and_set_bit(__I40EVF_IN_CRITICAL_TASK, + &adapter->crit_section)) + mdelay(1); + + f = i40evf_find_filter(adapter, macaddr); + if (NULL == f) { + f = kzalloc(sizeof(*f), GFP_ATOMIC); + if (NULL == f) { + dev_info(&adapter->pdev->dev, + "%s: no memory for new filter\n", __func__); + clear_bit(__I40EVF_IN_CRITICAL_TASK, + &adapter->crit_section); + return NULL; + } + + memcpy(f->macaddr, macaddr, ETH_ALEN); + + list_add(&f->list, &adapter->mac_filter_list); + f->add = true; + adapter->aq_required |= I40EVF_FLAG_AQ_ADD_MAC_FILTER; + } + + clear_bit(__I40EVF_IN_CRITICAL_TASK, &adapter->crit_section); + return f; +} + +/** + * i40evf_set_mac - NDO callback to set port mac address + * @netdev: network interface device structure + * @p: pointer to an address structure + * + * Returns 0 on success, negative on failure + **/ +static int i40evf_set_mac(struct net_device *netdev, void *p) +{ + struct i40evf_adapter *adapter = netdev_priv(netdev); + struct i40e_hw *hw = &adapter->hw; + struct i40evf_mac_filter *f; + struct sockaddr *addr = p; + + if (!is_valid_ether_addr(addr->sa_data)) + return -EADDRNOTAVAIL; + + if (ether_addr_equal(netdev->dev_addr, addr->sa_data)) + return 0; + + f = i40evf_add_filter(adapter, addr->sa_data); + if (f) { + memcpy(hw->mac.addr, addr->sa_data, netdev->addr_len); + memcpy(netdev->dev_addr, adapter->hw.mac.addr, + netdev->addr_len); + } + + return (f == NULL) ? -ENOMEM : 0; +} + +/** + * i40evf_set_rx_mode - NDO callback to set the netdev filters + * @netdev: network interface device structure + **/ +static void i40evf_set_rx_mode(struct net_device *netdev) +{ + struct i40evf_adapter *adapter = netdev_priv(netdev); + struct i40evf_mac_filter *f, *ftmp; + struct netdev_hw_addr *uca; + struct netdev_hw_addr *mca; + + /* add addr if not already in the filter list */ + netdev_for_each_uc_addr(uca, netdev) { + i40evf_add_filter(adapter, uca->addr); + } + netdev_for_each_mc_addr(mca, netdev) { + i40evf_add_filter(adapter, mca->addr); + } + + while (test_and_set_bit(__I40EVF_IN_CRITICAL_TASK, + &adapter->crit_section)) + mdelay(1); + /* remove filter if not in netdev list */ + list_for_each_entry_safe(f, ftmp, &adapter->mac_filter_list, list) { + bool found = false; + + if (f->macaddr[0] & 0x01) { + netdev_for_each_mc_addr(mca, netdev) { + if (ether_addr_equal(mca->addr, f->macaddr)) { + found = true; + break; + } + } + } else { + netdev_for_each_uc_addr(uca, netdev) { + if (ether_addr_equal(uca->addr, f->macaddr)) { + found = true; + break; + } + } + } + if (found) { + f->remove = true; + adapter->aq_required |= I40EVF_FLAG_AQ_DEL_MAC_FILTER; + } + } + clear_bit(__I40EVF_IN_CRITICAL_TASK, &adapter->crit_section); +} + +/** + * i40evf_napi_enable_all - enable NAPI on all queue vectors + * @adapter: board private structure + **/ +static void i40evf_napi_enable_all(struct i40evf_adapter *adapter) +{ + int q_idx; + struct i40e_q_vector *q_vector; + int q_vectors = adapter->num_msix_vectors - NONQ_VECS; + + for (q_idx = 0; q_idx < q_vectors; q_idx++) { + struct napi_struct *napi; + q_vector = adapter->q_vector[q_idx]; + napi = &q_vector->napi; + napi_enable(napi); + } +} + +/** + * i40evf_napi_disable_all - disable NAPI on all queue vectors + * @adapter: board private structure + **/ +static void i40evf_napi_disable_all(struct i40evf_adapter *adapter) +{ + int q_idx; + struct i40e_q_vector *q_vector; + int q_vectors = adapter->num_msix_vectors - NONQ_VECS; + + for (q_idx = 0; q_idx < q_vectors; q_idx++) { + q_vector = adapter->q_vector[q_idx]; + napi_disable(&q_vector->napi); + } +} + +/** + * i40evf_configure - set up transmit and receive data structures + * @adapter: board private structure + **/ +static void i40evf_configure(struct i40evf_adapter *adapter) +{ + struct net_device *netdev = adapter->netdev; + int i; + + i40evf_set_rx_mode(netdev); + + i40evf_configure_tx(adapter); + i40evf_configure_rx(adapter); + adapter->aq_required |= I40EVF_FLAG_AQ_CONFIGURE_QUEUES; + + for (i = 0; i < adapter->vsi_res->num_queue_pairs; i++) { + struct i40e_ring *ring = adapter->rx_rings[i]; + i40evf_alloc_rx_buffers(ring, ring->count); + ring->next_to_use = ring->count - 1; + writel(ring->next_to_use, ring->tail); + } +} + +/** + * i40evf_up_complete - Finish the last steps of bringing up a connection + * @adapter: board private structure + **/ +static int i40evf_up_complete(struct i40evf_adapter *adapter) +{ + adapter->state = __I40EVF_RUNNING; + clear_bit(__I40E_DOWN, &adapter->vsi.state); + + i40evf_napi_enable_all(adapter); + + adapter->aq_required |= I40EVF_FLAG_AQ_ENABLE_QUEUES; + mod_timer_pending(&adapter->watchdog_timer, jiffies + 1); + return 0; +} + +/** + * i40evf_clean_all_rx_rings - Free Rx Buffers for all queues + * @adapter: board private structure + **/ +static void i40evf_clean_all_rx_rings(struct i40evf_adapter *adapter) +{ + int i; + + for (i = 0; i < adapter->vsi_res->num_queue_pairs; i++) + i40evf_clean_rx_ring(adapter->rx_rings[i]); +} + +/** + * i40evf_clean_all_tx_rings - Free Tx Buffers for all queues + * @adapter: board private structure + **/ +static void i40evf_clean_all_tx_rings(struct i40evf_adapter *adapter) +{ + int i; + + for (i = 0; i < adapter->vsi_res->num_queue_pairs; i++) + i40evf_clean_tx_ring(adapter->tx_rings[i]); +} + +/** + * i40e_down - Shutdown the connection processing + * @adapter: board private structure + **/ +void i40evf_down(struct i40evf_adapter *adapter) +{ + struct net_device *netdev = adapter->netdev; + struct i40evf_mac_filter *f; + + /* remove all MAC filters */ + list_for_each_entry(f, &adapter->mac_filter_list, list) { + f->remove = true; + } + /* remove all VLAN filters */ + list_for_each_entry(f, &adapter->vlan_filter_list, list) { + f->remove = true; + } + if (!(adapter->flags & I40EVF_FLAG_PF_COMMS_FAILED) && + adapter->state != __I40EVF_RESETTING) { + adapter->aq_required |= I40EVF_FLAG_AQ_DEL_MAC_FILTER; + adapter->aq_required |= I40EVF_FLAG_AQ_DEL_VLAN_FILTER; + /* disable receives */ + adapter->aq_required |= I40EVF_FLAG_AQ_DISABLE_QUEUES; + mod_timer_pending(&adapter->watchdog_timer, jiffies + 1); + msleep(20); + } + netif_tx_disable(netdev); + + netif_tx_stop_all_queues(netdev); + + i40evf_irq_disable(adapter); + + i40evf_napi_disable_all(adapter); + + netif_carrier_off(netdev); + + i40evf_clean_all_tx_rings(adapter); + i40evf_clean_all_rx_rings(adapter); +} + +/** + * i40evf_acquire_msix_vectors - Setup the MSIX capability + * @adapter: board private structure + * @vectors: number of vectors to request + * + * Work with the OS to set up the MSIX vectors needed. + * + * Returns 0 on success, negative on failure + **/ +static int +i40evf_acquire_msix_vectors(struct i40evf_adapter *adapter, int vectors) +{ + int err, vector_threshold; + + /* We'll want at least 3 (vector_threshold): + * 0) Other (Admin Queue and link, mostly) + * 1) TxQ[0] Cleanup + * 2) RxQ[0] Cleanup + */ + vector_threshold = MIN_MSIX_COUNT; + + /* The more we get, the more we will assign to Tx/Rx Cleanup + * for the separate queues...where Rx Cleanup >= Tx Cleanup. + * Right now, we simply care about how many we'll get; we'll + * set them up later while requesting irq's. + */ + while (vectors >= vector_threshold) { + err = pci_enable_msix(adapter->pdev, adapter->msix_entries, + vectors); + if (!err) /* Success in acquiring all requested vectors. */ + break; + else if (err < 0) + vectors = 0; /* Nasty failure, quit now */ + else /* err == number of vectors we should try again with */ + vectors = err; + } + + if (vectors < vector_threshold) { + dev_err(&adapter->pdev->dev, "Unable to allocate MSI-X interrupts.\n"); + kfree(adapter->msix_entries); + adapter->msix_entries = NULL; + err = -EIO; + } else { + /* Adjust for only the vectors we'll use, which is minimum + * of max_msix_q_vectors + NONQ_VECS, or the number of + * vectors we were allocated. + */ + adapter->num_msix_vectors = vectors; + } + return err; +} + +/** + * i40evf_free_queues - Free memory for all rings + * @adapter: board private structure to initialize + * + * Free all of the memory associated with queue pairs. + **/ +static void i40evf_free_queues(struct i40evf_adapter *adapter) +{ + int i; + + if (!adapter->vsi_res) + return; + for (i = 0; i < adapter->vsi_res->num_queue_pairs; i++) { + if (adapter->tx_rings[i]) + kfree_rcu(adapter->tx_rings[i], rcu); + adapter->tx_rings[i] = NULL; + adapter->rx_rings[i] = NULL; + } +} + +/** + * i40evf_alloc_queues - Allocate memory for all rings + * @adapter: board private structure to initialize + * + * We allocate one ring per queue at run-time since we don't know the + * number of queues at compile-time. The polling_netdev array is + * intended for Multiqueue, but should work fine with a single queue. + **/ +static int i40evf_alloc_queues(struct i40evf_adapter *adapter) +{ + int i; + + for (i = 0; i < adapter->vsi_res->num_queue_pairs; i++) { + struct i40e_ring *tx_ring; + struct i40e_ring *rx_ring; + + tx_ring = kzalloc(sizeof(struct i40e_ring) * 2, GFP_KERNEL); + if (!tx_ring) + goto err_out; + + tx_ring->queue_index = i; + tx_ring->netdev = adapter->netdev; + tx_ring->dev = &adapter->pdev->dev; + tx_ring->count = I40EVF_DEFAULT_TXD; + adapter->tx_rings[i] = tx_ring; + + rx_ring = &tx_ring[1]; + rx_ring->queue_index = i; + rx_ring->netdev = adapter->netdev; + rx_ring->dev = &adapter->pdev->dev; + rx_ring->count = I40EVF_DEFAULT_RXD; + adapter->rx_rings[i] = rx_ring; + } + + return 0; + +err_out: + i40evf_free_queues(adapter); + return -ENOMEM; +} + +/** + * i40evf_set_interrupt_capability - set MSI-X or FAIL if not supported + * @adapter: board private structure to initialize + * + * Attempt to configure the interrupts using the best available + * capabilities of the hardware and the kernel. + **/ +static int i40evf_set_interrupt_capability(struct i40evf_adapter *adapter) +{ + int vector, v_budget; + int pairs = 0; + int err = 0; + + if (!adapter->vsi_res) { + err = -EIO; + goto out; + } + pairs = adapter->vsi_res->num_queue_pairs; + + /* It's easy to be greedy for MSI-X vectors, but it really + * doesn't do us much good if we have a lot more vectors + * than CPU's. So let's be conservative and only ask for + * (roughly) twice the number of vectors as there are CPU's. + */ + v_budget = min_t(int, pairs, (int)(num_online_cpus() * 2)) + NONQ_VECS; + v_budget = min_t(int, v_budget, (int)adapter->vf_res->max_vectors); + + /* A failure in MSI-X entry allocation isn't fatal, but it does + * mean we disable MSI-X capabilities of the adapter. + */ + adapter->msix_entries = kcalloc(v_budget, + sizeof(struct msix_entry), GFP_KERNEL); + if (!adapter->msix_entries) { + err = -ENOMEM; + goto out; + } + + for (vector = 0; vector < v_budget; vector++) + adapter->msix_entries[vector].entry = vector; + + i40evf_acquire_msix_vectors(adapter, v_budget); + +out: + adapter->netdev->real_num_tx_queues = pairs; + return err; +} + +/** + * i40evf_alloc_q_vectors - Allocate memory for interrupt vectors + * @adapter: board private structure to initialize + * + * We allocate one q_vector per queue interrupt. If allocation fails we + * return -ENOMEM. + **/ +static int i40evf_alloc_q_vectors(struct i40evf_adapter *adapter) +{ + int q_idx, num_q_vectors; + struct i40e_q_vector *q_vector; + + num_q_vectors = adapter->num_msix_vectors - NONQ_VECS; + + for (q_idx = 0; q_idx < num_q_vectors; q_idx++) { + q_vector = kzalloc(sizeof(struct i40e_q_vector), GFP_KERNEL); + if (!q_vector) + goto err_out; + q_vector->adapter = adapter; + q_vector->vsi = &adapter->vsi; + q_vector->v_idx = q_idx; + netif_napi_add(adapter->netdev, &q_vector->napi, + i40evf_napi_poll, 64); + adapter->q_vector[q_idx] = q_vector; + } + + return 0; + +err_out: + while (q_idx) { + q_idx--; + q_vector = adapter->q_vector[q_idx]; + netif_napi_del(&q_vector->napi); + kfree(q_vector); + adapter->q_vector[q_idx] = NULL; + } + return -ENOMEM; +} + +/** + * i40evf_free_q_vectors - Free memory allocated for interrupt vectors + * @adapter: board private structure to initialize + * + * This function frees the memory allocated to the q_vectors. In addition if + * NAPI is enabled it will delete any references to the NAPI struct prior + * to freeing the q_vector. + **/ +static void i40evf_free_q_vectors(struct i40evf_adapter *adapter) +{ + int q_idx, num_q_vectors; + int napi_vectors; + + num_q_vectors = adapter->num_msix_vectors - NONQ_VECS; + napi_vectors = adapter->vsi_res->num_queue_pairs; + + for (q_idx = 0; q_idx < num_q_vectors; q_idx++) { + struct i40e_q_vector *q_vector = adapter->q_vector[q_idx]; + + adapter->q_vector[q_idx] = NULL; + if (q_idx < napi_vectors) + netif_napi_del(&q_vector->napi); + kfree(q_vector); + } +} + +/** + * i40evf_reset_interrupt_capability - Reset MSIX setup + * @adapter: board private structure + * + **/ +void i40evf_reset_interrupt_capability(struct i40evf_adapter *adapter) +{ + pci_disable_msix(adapter->pdev); + kfree(adapter->msix_entries); + adapter->msix_entries = NULL; + + return; +} + +/** + * i40evf_init_interrupt_scheme - Determine if MSIX is supported and init + * @adapter: board private structure to initialize + * + **/ +int i40evf_init_interrupt_scheme(struct i40evf_adapter *adapter) +{ + int err; + + err = i40evf_set_interrupt_capability(adapter); + if (err) { + dev_err(&adapter->pdev->dev, + "Unable to setup interrupt capabilities\n"); + goto err_set_interrupt; + } + + err = i40evf_alloc_q_vectors(adapter); + if (err) { + dev_err(&adapter->pdev->dev, + "Unable to allocate memory for queue vectors\n"); + goto err_alloc_q_vectors; + } + + err = i40evf_alloc_queues(adapter); + if (err) { + dev_err(&adapter->pdev->dev, + "Unable to allocate memory for queues\n"); + goto err_alloc_queues; + } + + dev_info(&adapter->pdev->dev, "Multiqueue %s: Queue pair count = %u", + (adapter->vsi_res->num_queue_pairs > 1) ? "Enabled" : + "Disabled", adapter->vsi_res->num_queue_pairs); + + return 0; +err_alloc_queues: + i40evf_free_q_vectors(adapter); +err_alloc_q_vectors: + i40evf_reset_interrupt_capability(adapter); +err_set_interrupt: + return err; +} + +/** + * i40evf_watchdog_timer - Periodic call-back timer + * @data: pointer to adapter disguised as unsigned long + **/ +static void i40evf_watchdog_timer(unsigned long data) +{ + struct i40evf_adapter *adapter = (struct i40evf_adapter *)data; + schedule_work(&adapter->watchdog_task); + /* timer will be rescheduled in watchdog task */ +} + +/** + * i40evf_watchdog_task - Periodic call-back task + * @work: pointer to work_struct + **/ +static void i40evf_watchdog_task(struct work_struct *work) +{ + struct i40evf_adapter *adapter = container_of(work, + struct i40evf_adapter, + watchdog_task); + struct i40e_hw *hw = &adapter->hw; + + if (test_and_set_bit(__I40EVF_IN_CRITICAL_TASK, &adapter->crit_section)) + goto restart_watchdog; + + if (adapter->flags & I40EVF_FLAG_PF_COMMS_FAILED) { + dev_info(&adapter->pdev->dev, "Checking for redemption\n"); + if ((rd32(hw, I40E_VFGEN_RSTAT) & 0x3) == I40E_VFR_VFACTIVE) { + /* A chance for redemption! */ + dev_err(&adapter->pdev->dev, "Hardware came out of reset. Attempting reinit.\n"); + adapter->state = __I40EVF_STARTUP; + adapter->flags &= ~I40EVF_FLAG_PF_COMMS_FAILED; + schedule_delayed_work(&adapter->init_task, 10); + clear_bit(__I40EVF_IN_CRITICAL_TASK, + &adapter->crit_section); + /* Don't reschedule the watchdog, since we've restarted + * the init task. When init_task contacts the PF and + * gets everything set up again, it'll restart the + * watchdog for us. Down, boy. Sit. Stay. Woof. + */ + return; + } + adapter->aq_pending = 0; + adapter->aq_required = 0; + adapter->current_op = I40E_VIRTCHNL_OP_UNKNOWN; + goto watchdog_done; + } + + if ((adapter->state < __I40EVF_DOWN) || + (adapter->flags & I40EVF_FLAG_RESET_PENDING)) + goto watchdog_done; + + /* check for reset */ + if (!(adapter->flags & I40EVF_FLAG_RESET_PENDING) && + (rd32(hw, I40E_VFGEN_RSTAT) & 0x3) != I40E_VFR_VFACTIVE) { + adapter->state = __I40EVF_RESETTING; + adapter->flags |= I40EVF_FLAG_RESET_PENDING; + dev_err(&adapter->pdev->dev, "Hardware reset detected.\n"); + dev_info(&adapter->pdev->dev, "Scheduling reset task\n"); + schedule_work(&adapter->reset_task); + adapter->aq_pending = 0; + adapter->aq_required = 0; + adapter->current_op = I40E_VIRTCHNL_OP_UNKNOWN; + goto watchdog_done; + } + + /* Process admin queue tasks. After init, everything gets done + * here so we don't race on the admin queue. + */ + if (adapter->aq_pending) + goto watchdog_done; + + if (adapter->aq_required & I40EVF_FLAG_AQ_MAP_VECTORS) { + i40evf_map_queues(adapter); + goto watchdog_done; + } + + if (adapter->aq_required & I40EVF_FLAG_AQ_ADD_MAC_FILTER) { + i40evf_add_ether_addrs(adapter); + goto watchdog_done; + } + + if (adapter->aq_required & I40EVF_FLAG_AQ_ADD_VLAN_FILTER) { + i40evf_add_vlans(adapter); + goto watchdog_done; + } + + if (adapter->aq_required & I40EVF_FLAG_AQ_DEL_MAC_FILTER) { + i40evf_del_ether_addrs(adapter); + goto watchdog_done; + } + + if (adapter->aq_required & I40EVF_FLAG_AQ_DEL_VLAN_FILTER) { + i40evf_del_vlans(adapter); + goto watchdog_done; + } + + if (adapter->aq_required & I40EVF_FLAG_AQ_DISABLE_QUEUES) { + i40evf_disable_queues(adapter); + goto watchdog_done; + } + + if (adapter->aq_required & I40EVF_FLAG_AQ_CONFIGURE_QUEUES) { + i40evf_configure_queues(adapter); + goto watchdog_done; + } + + if (adapter->aq_required & I40EVF_FLAG_AQ_ENABLE_QUEUES) { + i40evf_enable_queues(adapter); + goto watchdog_done; + } + + if (adapter->state == __I40EVF_RUNNING) + i40evf_request_stats(adapter); + + i40evf_irq_enable(adapter, true); + i40evf_fire_sw_int(adapter, 0xFF); + +watchdog_done: + clear_bit(__I40EVF_IN_CRITICAL_TASK, &adapter->crit_section); +restart_watchdog: + if (adapter->aq_required) + mod_timer(&adapter->watchdog_timer, + jiffies + msecs_to_jiffies(20)); + else + mod_timer(&adapter->watchdog_timer, jiffies + (HZ * 2)); + schedule_work(&adapter->adminq_task); +} + +/** + * i40evf_configure_rss - increment to next available tx queue + * @adapter: board private structure + * @j: queue counter + * + * Helper function for RSS programming to increment through available + * queus. Returns the next queue value. + **/ +static int next_queue(struct i40evf_adapter *adapter, int j) +{ + j += 1; + + return j >= adapter->vsi_res->num_queue_pairs ? 0 : j; +} + +/** + * i40evf_configure_rss - Prepare for RSS if used + * @adapter: board private structure + **/ +static void i40evf_configure_rss(struct i40evf_adapter *adapter) +{ + struct i40e_hw *hw = &adapter->hw; + u32 lut = 0; + int i, j; + u64 hena; + + /* Set of random keys generated using kernel random number generator */ + static const u32 seed[I40E_VFQF_HKEY_MAX_INDEX + 1] = { + 0x794221b4, 0xbca0c5ab, 0x6cd5ebd9, 0x1ada6127, + 0x983b3aa1, 0x1c4e71eb, 0x7f6328b2, 0xfcdc0da0, + 0xc135cafa, 0x7a6f7e2d, 0xe7102d28, 0x163cd12e, + 0x4954b126 }; + + /* Hash type is configured by the PF - we just supply the key */ + + /* Fill out hash function seed */ + for (i = 0; i <= I40E_VFQF_HKEY_MAX_INDEX; i++) + wr32(hw, I40E_VFQF_HKEY(i), seed[i]); + + /* Enable PCTYPES for RSS, TCP/UDP with IPv4/IPv6 */ + hena = I40E_DEFAULT_RSS_HENA; + wr32(hw, I40E_VFQF_HENA(0), (u32)hena); + wr32(hw, I40E_VFQF_HENA(1), (u32)(hena >> 32)); + + /* Populate the LUT with max no. of queues in round robin fashion */ + j = adapter->vsi_res->num_queue_pairs; + for (i = 0; i <= I40E_VFQF_HLUT_MAX_INDEX; i++) { + j = next_queue(adapter, j); + lut = j; + j = next_queue(adapter, j); + lut |= j << 8; + j = next_queue(adapter, j); + lut |= j << 16; + j = next_queue(adapter, j); + lut |= j << 24; + wr32(hw, I40E_VFQF_HLUT(i), lut); + } + i40e_flush(hw); +} + +#define I40EVF_RESET_WAIT_MS 100 +#define I40EVF_RESET_WAIT_COUNT 200 +/** + * i40evf_reset_task - Call-back task to handle hardware reset + * @work: pointer to work_struct + * + * During reset we need to shut down and reinitialize the admin queue + * before we can use it to communicate with the PF again. We also clear + * and reinit the rings because that context is lost as well. + **/ +static void i40evf_reset_task(struct work_struct *work) +{ + struct i40evf_adapter *adapter = container_of(work, + struct i40evf_adapter, + reset_task); + struct i40e_hw *hw = &adapter->hw; + int i = 0, err; + uint32_t rstat_val; + + while (test_and_set_bit(__I40EVF_IN_CRITICAL_TASK, + &adapter->crit_section)) + udelay(500); + + if (adapter->flags & I40EVF_FLAG_RESET_NEEDED) { + dev_info(&adapter->pdev->dev, "Requesting reset from PF\n"); + i40evf_request_reset(adapter); + } + + /* poll until we see the reset actually happen */ + for (i = 0; i < I40EVF_RESET_WAIT_COUNT; i++) { + rstat_val = rd32(hw, I40E_VFGEN_RSTAT) & + I40E_VFGEN_RSTAT_VFR_STATE_MASK; + if (rstat_val != I40E_VFR_VFACTIVE) { + dev_info(&adapter->pdev->dev, "Reset now occurring\n"); + break; + } else { + msleep(I40EVF_RESET_WAIT_MS); + } + } + if (i == I40EVF_RESET_WAIT_COUNT) { + dev_err(&adapter->pdev->dev, "Reset was not detected\n"); + adapter->flags &= ~I40EVF_FLAG_RESET_PENDING; + goto continue_reset; /* act like the reset happened */ + } + + /* wait until the reset is complete and the PF is responding to us */ + for (i = 0; i < I40EVF_RESET_WAIT_COUNT; i++) { + rstat_val = rd32(hw, I40E_VFGEN_RSTAT) & + I40E_VFGEN_RSTAT_VFR_STATE_MASK; + if (rstat_val == I40E_VFR_VFACTIVE) { + dev_info(&adapter->pdev->dev, "Reset is complete. Reinitializing.\n"); + break; + } else { + msleep(I40EVF_RESET_WAIT_MS); + } + } + if (i == I40EVF_RESET_WAIT_COUNT) { + /* reset never finished */ + dev_err(&adapter->pdev->dev, "Reset never finished (%x). PF driver is dead, and so am I.\n", + rstat_val); + adapter->flags |= I40EVF_FLAG_PF_COMMS_FAILED; + + if (netif_running(adapter->netdev)) + i40evf_close(adapter->netdev); + + i40evf_free_misc_irq(adapter); + i40evf_reset_interrupt_capability(adapter); + i40evf_free_queues(adapter); + kfree(adapter->vf_res); + i40evf_shutdown_adminq(hw); + adapter->netdev->flags &= ~IFF_UP; + clear_bit(__I40EVF_IN_CRITICAL_TASK, &adapter->crit_section); + return; /* Do not attempt to reinit. It's dead, Jim. */ + } + +continue_reset: + adapter->flags &= ~I40EVF_FLAG_RESET_PENDING; + + i40evf_down(adapter); + adapter->state = __I40EVF_RESETTING; + + /* kill and reinit the admin queue */ + if (i40evf_shutdown_adminq(hw)) + dev_warn(&adapter->pdev->dev, + "%s: Failed to destroy the Admin Queue resources\n", + __func__); + err = i40evf_init_adminq(hw); + if (err) + dev_info(&adapter->pdev->dev, "%s: init_adminq failed: %d\n", + __func__, err); + + adapter->aq_pending = 0; + adapter->aq_required = 0; + i40evf_map_queues(adapter); + clear_bit(__I40EVF_IN_CRITICAL_TASK, &adapter->crit_section); + + mod_timer(&adapter->watchdog_timer, jiffies + 2); + + if (netif_running(adapter->netdev)) { + /* allocate transmit descriptors */ + err = i40evf_setup_all_tx_resources(adapter); + if (err) + goto reset_err; + + /* allocate receive descriptors */ + err = i40evf_setup_all_rx_resources(adapter); + if (err) + goto reset_err; + + i40evf_configure(adapter); + + err = i40evf_up_complete(adapter); + if (err) + goto reset_err; + + i40evf_irq_enable(adapter, true); + } + return; +reset_err: + dev_err(&adapter->pdev->dev, "failed to allocate resources during reinit.\n"); + i40evf_close(adapter->netdev); +} + +/** + * i40evf_adminq_task - worker thread to clean the admin queue + * @work: pointer to work_struct containing our data + **/ +static void i40evf_adminq_task(struct work_struct *work) +{ + struct i40evf_adapter *adapter = + container_of(work, struct i40evf_adapter, adminq_task); + struct i40e_hw *hw = &adapter->hw; + struct i40e_arq_event_info event; + struct i40e_virtchnl_msg *v_msg; + i40e_status ret; + u16 pending; + + if (adapter->flags & I40EVF_FLAG_PF_COMMS_FAILED) + return; + + event.msg_size = I40EVF_MAX_AQ_BUF_SIZE; + event.msg_buf = kzalloc(event.msg_size, GFP_KERNEL); + if (!event.msg_buf) { + dev_info(&adapter->pdev->dev, "%s: no memory for ARQ clean\n", + __func__); + return; + } + v_msg = (struct i40e_virtchnl_msg *)&event.desc; + do { + ret = i40evf_clean_arq_element(hw, &event, &pending); + if (ret) + break; /* No event to process or error cleaning ARQ */ + + i40evf_virtchnl_completion(adapter, v_msg->v_opcode, + v_msg->v_retval, event.msg_buf, + event.msg_size); + if (pending != 0) { + dev_info(&adapter->pdev->dev, + "%s: ARQ: Pending events %d\n", + __func__, pending); + memset(event.msg_buf, 0, I40EVF_MAX_AQ_BUF_SIZE); + } + } while (pending); + + /* re-enable Admin queue interrupt cause */ + i40evf_misc_irq_enable(adapter); + + kfree(event.msg_buf); +} + +/** + * i40evf_free_all_tx_resources - Free Tx Resources for All Queues + * @adapter: board private structure + * + * Free all transmit software resources + **/ +static void i40evf_free_all_tx_resources(struct i40evf_adapter *adapter) +{ + int i; + + for (i = 0; i < adapter->vsi_res->num_queue_pairs; i++) + if (adapter->tx_rings[i]->desc) + i40evf_free_tx_resources(adapter->tx_rings[i]); + +} + +/** + * i40evf_setup_all_tx_resources - allocate all queues Tx resources + * @adapter: board private structure + * + * If this function returns with an error, then it's possible one or + * more of the rings is populated (while the rest are not). It is the + * callers duty to clean those orphaned rings. + * + * Return 0 on success, negative on failure + **/ +static int i40evf_setup_all_tx_resources(struct i40evf_adapter *adapter) +{ + int i, err = 0; + + for (i = 0; i < adapter->vsi_res->num_queue_pairs; i++) { + err = i40evf_setup_tx_descriptors(adapter->tx_rings[i]); + if (!err) + continue; + dev_err(&adapter->pdev->dev, + "%s: Allocation for Tx Queue %u failed\n", + __func__, i); + break; + } + + return err; +} + +/** + * i40evf_setup_all_rx_resources - allocate all queues Rx resources + * @adapter: board private structure + * + * If this function returns with an error, then it's possible one or + * more of the rings is populated (while the rest are not). It is the + * callers duty to clean those orphaned rings. + * + * Return 0 on success, negative on failure + **/ +static int i40evf_setup_all_rx_resources(struct i40evf_adapter *adapter) +{ + int i, err = 0; + + for (i = 0; i < adapter->vsi_res->num_queue_pairs; i++) { + err = i40evf_setup_rx_descriptors(adapter->rx_rings[i]); + if (!err) + continue; + dev_err(&adapter->pdev->dev, + "%s: Allocation for Rx Queue %u failed\n", + __func__, i); + break; + } + return err; +} + +/** + * i40evf_free_all_rx_resources - Free Rx Resources for All Queues + * @adapter: board private structure + * + * Free all receive software resources + **/ +static void i40evf_free_all_rx_resources(struct i40evf_adapter *adapter) +{ + int i; + + for (i = 0; i < adapter->vsi_res->num_queue_pairs; i++) + if (adapter->rx_rings[i]->desc) + i40evf_free_rx_resources(adapter->rx_rings[i]); +} + +/** + * i40evf_open - Called when a network interface is made active + * @netdev: network interface device structure + * + * Returns 0 on success, negative value on failure + * + * The open entry point is called when a network interface is made + * active by the system (IFF_UP). At this point all resources needed + * for transmit and receive operations are allocated, the interrupt + * handler is registered with the OS, the watchdog timer is started, + * and the stack is notified that the interface is ready. + **/ +static int i40evf_open(struct net_device *netdev) +{ + struct i40evf_adapter *adapter = netdev_priv(netdev); + int err; + + if (adapter->flags & I40EVF_FLAG_PF_COMMS_FAILED) { + dev_err(&adapter->pdev->dev, "Unable to open device due to PF driver failure.\n"); + return -EIO; + } + if (adapter->state != __I40EVF_DOWN) + return -EBUSY; + + /* allocate transmit descriptors */ + err = i40evf_setup_all_tx_resources(adapter); + if (err) + goto err_setup_tx; + + /* allocate receive descriptors */ + err = i40evf_setup_all_rx_resources(adapter); + if (err) + goto err_setup_rx; + + /* clear any pending interrupts, may auto mask */ + err = i40evf_request_traffic_irqs(adapter, netdev->name); + if (err) + goto err_req_irq; + + i40evf_configure(adapter); + + err = i40evf_up_complete(adapter); + if (err) + goto err_req_irq; + + i40evf_irq_enable(adapter, true); + + return 0; + +err_req_irq: + i40evf_down(adapter); + i40evf_free_traffic_irqs(adapter); +err_setup_rx: + i40evf_free_all_rx_resources(adapter); +err_setup_tx: + i40evf_free_all_tx_resources(adapter); + + return err; +} + +/** + * i40evf_close - Disables a network interface + * @netdev: network interface device structure + * + * Returns 0, this is not allowed to fail + * + * The close entry point is called when an interface is de-activated + * by the OS. The hardware is still under the drivers control, but + * needs to be disabled. All IRQs except vector 0 (reserved for admin queue) + * are freed, along with all transmit and receive resources. + **/ +static int i40evf_close(struct net_device *netdev) +{ + struct i40evf_adapter *adapter = netdev_priv(netdev); + + if (adapter->state <= __I40EVF_DOWN) + return 0; + + /* signal that we are down to the interrupt handler */ + adapter->state = __I40EVF_DOWN; + + set_bit(__I40E_DOWN, &adapter->vsi.state); + + i40evf_down(adapter); + i40evf_free_traffic_irqs(adapter); + + i40evf_free_all_tx_resources(adapter); + i40evf_free_all_rx_resources(adapter); + + return 0; +} + +/** + * i40evf_get_stats - Get System Network Statistics + * @netdev: network interface device structure + * + * Returns the address of the device statistics structure. + * The statistics are actually updated from the timer callback. + **/ +static struct net_device_stats *i40evf_get_stats(struct net_device *netdev) +{ + struct i40evf_adapter *adapter = netdev_priv(netdev); + + /* only return the current stats */ + return &adapter->net_stats; +} + +/** + * i40evf_reinit_locked - Software reinit + * @adapter: board private structure + * + * Reinititalizes the ring structures in response to a software configuration + * change. Roughly the same as close followed by open, but skips releasing + * and reallocating the interrupts. + **/ +void i40evf_reinit_locked(struct i40evf_adapter *adapter) +{ + struct net_device *netdev = adapter->netdev; + int err; + + WARN_ON(in_interrupt()); + + adapter->state = __I40EVF_RESETTING; + + i40evf_down(adapter); + + /* allocate transmit descriptors */ + err = i40evf_setup_all_tx_resources(adapter); + if (err) + goto err_reinit; + + /* allocate receive descriptors */ + err = i40evf_setup_all_rx_resources(adapter); + if (err) + goto err_reinit; + + i40evf_configure(adapter); + + err = i40evf_up_complete(adapter); + if (err) + goto err_reinit; + + i40evf_irq_enable(adapter, true); + return; + +err_reinit: + dev_err(&adapter->pdev->dev, "failed to allocate resources during reinit.\n"); + i40evf_close(netdev); +} + +/** + * i40evf_change_mtu - Change the Maximum Transfer Unit + * @netdev: network interface device structure + * @new_mtu: new value for maximum frame size + * + * Returns 0 on success, negative on failure + **/ +static int i40evf_change_mtu(struct net_device *netdev, int new_mtu) +{ + struct i40evf_adapter *adapter = netdev_priv(netdev); + int max_frame = new_mtu + ETH_HLEN + ETH_FCS_LEN; + + if ((new_mtu < 68) || (max_frame > I40E_MAX_RXBUFFER)) + return -EINVAL; + + /* must set new MTU before calling down or up */ + netdev->mtu = new_mtu; + i40evf_reinit_locked(adapter); + return 0; +} + +static const struct net_device_ops i40evf_netdev_ops = { + .ndo_open = i40evf_open, + .ndo_stop = i40evf_close, + .ndo_start_xmit = i40evf_xmit_frame, + .ndo_get_stats = i40evf_get_stats, + .ndo_set_rx_mode = i40evf_set_rx_mode, + .ndo_validate_addr = eth_validate_addr, + .ndo_set_mac_address = i40evf_set_mac, + .ndo_change_mtu = i40evf_change_mtu, + .ndo_tx_timeout = i40evf_tx_timeout, + .ndo_vlan_rx_add_vid = i40evf_vlan_rx_add_vid, + .ndo_vlan_rx_kill_vid = i40evf_vlan_rx_kill_vid, +}; + +/** + * i40evf_check_reset_complete - check that VF reset is complete + * @hw: pointer to hw struct + * + * Returns 0 if device is ready to use, or -EBUSY if it's in reset. + **/ +static int i40evf_check_reset_complete(struct i40e_hw *hw) +{ + u32 rstat; + int i; + + for (i = 0; i < 100; i++) { + rstat = rd32(hw, I40E_VFGEN_RSTAT); + if (rstat == I40E_VFR_VFACTIVE) + return 0; + udelay(10); + } + return -EBUSY; +} + +/** + * i40evf_init_task - worker thread to perform delayed initialization + * @work: pointer to work_struct containing our data + * + * This task completes the work that was begun in probe. Due to the nature + * of VF-PF communications, we may need to wait tens of milliseconds to get + * reponses back from the PF. Rather than busy-wait in probe and bog down the + * whole system, we'll do it in a task so we can sleep. + * This task only runs during driver init. Once we've established + * communications with the PF driver and set up our netdev, the watchdog + * takes over. + **/ +static void i40evf_init_task(struct work_struct *work) +{ + struct i40evf_adapter *adapter = container_of(work, + struct i40evf_adapter, + init_task.work); + struct net_device *netdev = adapter->netdev; + struct i40evf_mac_filter *f; + struct i40e_hw *hw = &adapter->hw; + struct pci_dev *pdev = adapter->pdev; + int i, err, bufsz; + + switch (adapter->state) { + case __I40EVF_STARTUP: + /* driver loaded, probe complete */ + adapter->flags &= ~I40EVF_FLAG_PF_COMMS_FAILED; + adapter->flags &= ~I40EVF_FLAG_RESET_PENDING; + err = i40e_set_mac_type(hw); + if (err) { + dev_err(&pdev->dev, "Failed to set MAC type (%d)\n", + err); + goto err; + } + err = i40evf_check_reset_complete(hw); + if (err) { + dev_err(&pdev->dev, "Device is still in reset (%d)\n", + err); + goto err; + } + hw->aq.num_arq_entries = I40EVF_AQ_LEN; + hw->aq.num_asq_entries = I40EVF_AQ_LEN; + hw->aq.arq_buf_size = I40EVF_MAX_AQ_BUF_SIZE; + hw->aq.asq_buf_size = I40EVF_MAX_AQ_BUF_SIZE; + + err = i40evf_init_adminq(hw); + if (err) { + dev_err(&pdev->dev, "Failed to init Admin Queue (%d)\n", + err); + goto err; + } + err = i40evf_send_api_ver(adapter); + if (err) { + dev_err(&pdev->dev, "Unable to send to PF (%d)\n", err); + i40evf_shutdown_adminq(hw); + goto err; + } + adapter->state = __I40EVF_INIT_VERSION_CHECK; + goto restart; + break; + case __I40EVF_INIT_VERSION_CHECK: + if (!i40evf_asq_done(hw)) { + dev_err(&pdev->dev, "Admin queue command never completed.\n"); + goto err; + } + + /* aq msg sent, awaiting reply */ + err = i40evf_verify_api_ver(adapter); + if (err) { + dev_err(&pdev->dev, "Unable to verify API version (%d)\n", + err); + goto err; + } + err = i40evf_send_vf_config_msg(adapter); + if (err) { + dev_err(&pdev->dev, "Unable send config request (%d)\n", + err); + goto err; + } + adapter->state = __I40EVF_INIT_GET_RESOURCES; + goto restart; + break; + case __I40EVF_INIT_GET_RESOURCES: + /* aq msg sent, awaiting reply */ + if (!adapter->vf_res) { + bufsz = sizeof(struct i40e_virtchnl_vf_resource) + + (I40E_MAX_VF_VSI * + sizeof(struct i40e_virtchnl_vsi_resource)); + adapter->vf_res = kzalloc(bufsz, GFP_KERNEL); + if (!adapter->vf_res) + goto err; + } + err = i40evf_get_vf_config(adapter); + if (err == I40E_ERR_ADMIN_QUEUE_NO_WORK) + goto restart; + if (err) { + dev_err(&pdev->dev, "Unable to get VF config (%d)\n", + err); + goto err_alloc; + } + adapter->state = __I40EVF_INIT_SW; + break; + default: + goto err_alloc; + } + /* got VF config message back from PF, now we can parse it */ + for (i = 0; i < adapter->vf_res->num_vsis; i++) { + if (adapter->vf_res->vsi_res[i].vsi_type == I40E_VSI_SRIOV) + adapter->vsi_res = &adapter->vf_res->vsi_res[i]; + } + if (!adapter->vsi_res) { + dev_err(&pdev->dev, "No LAN VSI found\n"); + goto err_alloc; + } + + adapter->flags |= I40EVF_FLAG_RX_CSUM_ENABLED; + + netdev->netdev_ops = &i40evf_netdev_ops; + i40evf_set_ethtool_ops(netdev); + netdev->watchdog_timeo = 5 * HZ; + netdev->features |= NETIF_F_HIGHDMA | + NETIF_F_SG | + NETIF_F_IP_CSUM | + NETIF_F_SCTP_CSUM | + NETIF_F_IPV6_CSUM | + NETIF_F_TSO | + NETIF_F_TSO6 | + NETIF_F_RXCSUM | + NETIF_F_GRO; + + if (adapter->vf_res->vf_offload_flags + & I40E_VIRTCHNL_VF_OFFLOAD_VLAN) { + netdev->vlan_features = netdev->features; + netdev->features |= NETIF_F_HW_VLAN_CTAG_TX | + NETIF_F_HW_VLAN_CTAG_RX | + NETIF_F_HW_VLAN_CTAG_FILTER; + } + + /* copy netdev features into list of user selectable features */ + netdev->hw_features |= netdev->features; + netdev->hw_features &= ~NETIF_F_RXCSUM; + + if (!is_valid_ether_addr(adapter->hw.mac.addr)) { + dev_info(&pdev->dev, "Invalid MAC address %pMAC, using random\n", + adapter->hw.mac.addr); + random_ether_addr(adapter->hw.mac.addr); + } + memcpy(netdev->dev_addr, adapter->hw.mac.addr, netdev->addr_len); + memcpy(netdev->perm_addr, adapter->hw.mac.addr, netdev->addr_len); + + INIT_LIST_HEAD(&adapter->mac_filter_list); + INIT_LIST_HEAD(&adapter->vlan_filter_list); + f = kzalloc(sizeof(*f), GFP_ATOMIC); + if (NULL == f) + goto err_sw_init; + + memcpy(f->macaddr, adapter->hw.mac.addr, ETH_ALEN); + f->add = true; + adapter->aq_required |= I40EVF_FLAG_AQ_ADD_MAC_FILTER; + + list_add(&f->list, &adapter->mac_filter_list); + + init_timer(&adapter->watchdog_timer); + adapter->watchdog_timer.function = &i40evf_watchdog_timer; + adapter->watchdog_timer.data = (unsigned long)adapter; + mod_timer(&adapter->watchdog_timer, jiffies + 1); + + err = i40evf_init_interrupt_scheme(adapter); + if (err) + goto err_sw_init; + i40evf_map_rings_to_vectors(adapter); + i40evf_configure_rss(adapter); + err = i40evf_request_misc_irq(adapter); + if (err) + goto err_sw_init; + + netif_carrier_off(netdev); + + adapter->vsi.id = adapter->vsi_res->vsi_id; + adapter->vsi.seid = adapter->vsi_res->vsi_id; /* dummy */ + adapter->vsi.back = adapter; + adapter->vsi.base_vector = 1; + adapter->vsi.work_limit = I40E_DEFAULT_IRQ_WORK; + adapter->vsi.rx_itr_setting = I40E_ITR_DYNAMIC; + adapter->vsi.tx_itr_setting = I40E_ITR_DYNAMIC; + adapter->vsi.netdev = adapter->netdev; + + if (!adapter->netdev_registered) { + err = register_netdev(netdev); + if (err) + goto err_register; + } + + adapter->netdev_registered = true; + + netif_tx_stop_all_queues(netdev); + + dev_info(&pdev->dev, "MAC address: %pMAC\n", adapter->hw.mac.addr); + if (netdev->features & NETIF_F_GRO) + dev_info(&pdev->dev, "GRO is enabled\n"); + + dev_info(&pdev->dev, "%s\n", i40evf_driver_string); + adapter->state = __I40EVF_DOWN; + set_bit(__I40E_DOWN, &adapter->vsi.state); + i40evf_misc_irq_enable(adapter); + return; +restart: + schedule_delayed_work(&adapter->init_task, + msecs_to_jiffies(50)); + return; + +err_register: + i40evf_free_misc_irq(adapter); +err_sw_init: + i40evf_reset_interrupt_capability(adapter); +err_alloc: + kfree(adapter->vf_res); + adapter->vf_res = NULL; +err: + /* Things went into the weeds, so try again later */ + if (++adapter->aq_wait_count > I40EVF_AQ_MAX_ERR) { + dev_err(&pdev->dev, "Failed to communicate with PF; giving up.\n"); + adapter->flags |= I40EVF_FLAG_PF_COMMS_FAILED; + return; /* do not reschedule */ + } + schedule_delayed_work(&adapter->init_task, HZ * 3); + return; +} + +/** + * i40evf_shutdown - Shutdown the device in preparation for a reboot + * @pdev: pci device structure + **/ +static void i40evf_shutdown(struct pci_dev *pdev) +{ + struct net_device *netdev = pci_get_drvdata(pdev); + + netif_device_detach(netdev); + + if (netif_running(netdev)) + i40evf_close(netdev); + +#ifdef CONFIG_PM + pci_save_state(pdev); + +#endif + pci_disable_device(pdev); +} + +/** + * i40evf_probe - Device Initialization Routine + * @pdev: PCI device information struct + * @ent: entry in i40evf_pci_tbl + * + * Returns 0 on success, negative on failure + * + * i40evf_probe initializes an adapter identified by a pci_dev structure. + * The OS initialization, configuring of the adapter private structure, + * and a hardware reset occur. + **/ +static int i40evf_probe(struct pci_dev *pdev, const struct pci_device_id *ent) +{ + struct net_device *netdev; + struct i40evf_adapter *adapter = NULL; + struct i40e_hw *hw = NULL; + int err; + + err = pci_enable_device(pdev); + if (err) + return err; + + err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64)); + if (err) { + err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32)); + if (err) { + dev_err(&pdev->dev, + "DMA configuration failed: 0x%x\n", err); + goto err_dma; + } + } + + err = pci_request_regions(pdev, i40evf_driver_name); + if (err) { + dev_err(&pdev->dev, + "pci_request_regions failed 0x%x\n", err); + goto err_pci_reg; + } + + pci_enable_pcie_error_reporting(pdev); + + pci_set_master(pdev); + + netdev = alloc_etherdev_mq(sizeof(struct i40evf_adapter), + MAX_TX_QUEUES); + if (!netdev) { + err = -ENOMEM; + goto err_alloc_etherdev; + } + + SET_NETDEV_DEV(netdev, &pdev->dev); + + pci_set_drvdata(pdev, netdev); + adapter = netdev_priv(netdev); + + adapter->netdev = netdev; + adapter->pdev = pdev; + + hw = &adapter->hw; + hw->back = adapter; + + adapter->msg_enable = (1 << DEFAULT_DEBUG_LEVEL_SHIFT) - 1; + adapter->state = __I40EVF_STARTUP; + + /* Call save state here because it relies on the adapter struct. */ + pci_save_state(pdev); + + hw->hw_addr = ioremap(pci_resource_start(pdev, 0), + pci_resource_len(pdev, 0)); + if (!hw->hw_addr) { + err = -EIO; + goto err_ioremap; + } + hw->vendor_id = pdev->vendor; + hw->device_id = pdev->device; + pci_read_config_byte(pdev, PCI_REVISION_ID, &hw->revision_id); + hw->subsystem_vendor_id = pdev->subsystem_vendor; + hw->subsystem_device_id = pdev->subsystem_device; + hw->bus.device = PCI_SLOT(pdev->devfn); + hw->bus.func = PCI_FUNC(pdev->devfn); + + INIT_WORK(&adapter->reset_task, i40evf_reset_task); + INIT_WORK(&adapter->adminq_task, i40evf_adminq_task); + INIT_WORK(&adapter->watchdog_task, i40evf_watchdog_task); + INIT_DELAYED_WORK(&adapter->init_task, i40evf_init_task); + schedule_delayed_work(&adapter->init_task, 10); + + return 0; + +err_ioremap: + free_netdev(netdev); +err_alloc_etherdev: + pci_release_regions(pdev); +err_pci_reg: +err_dma: + pci_disable_device(pdev); + return err; +} + +#ifdef CONFIG_PM +/** + * i40evf_suspend - Power management suspend routine + * @pdev: PCI device information struct + * @state: unused + * + * Called when the system (VM) is entering sleep/suspend. + **/ +static int i40evf_suspend(struct pci_dev *pdev, pm_message_t state) +{ + struct net_device *netdev = pci_get_drvdata(pdev); + struct i40evf_adapter *adapter = netdev_priv(netdev); + int retval = 0; + + netif_device_detach(netdev); + + if (netif_running(netdev)) { + rtnl_lock(); + i40evf_down(adapter); + rtnl_unlock(); + } + i40evf_free_misc_irq(adapter); + i40evf_reset_interrupt_capability(adapter); + + retval = pci_save_state(pdev); + if (retval) + return retval; + + pci_disable_device(pdev); + + return 0; +} + +/** + * i40evf_resume - Power managment resume routine + * @pdev: PCI device information struct + * + * Called when the system (VM) is resumed from sleep/suspend. + **/ +static int i40evf_resume(struct pci_dev *pdev) +{ + struct i40evf_adapter *adapter = pci_get_drvdata(pdev); + struct net_device *netdev = adapter->netdev; + u32 err; + + pci_set_power_state(pdev, PCI_D0); + pci_restore_state(pdev); + /* pci_restore_state clears dev->state_saved so call + * pci_save_state to restore it. + */ + pci_save_state(pdev); + + err = pci_enable_device_mem(pdev); + if (err) { + dev_err(&pdev->dev, "Cannot enable PCI device from suspend.\n"); + return err; + } + pci_set_master(pdev); + + rtnl_lock(); + err = i40evf_set_interrupt_capability(adapter); + if (err) { + dev_err(&pdev->dev, "Cannot enable MSI-X interrupts.\n"); + return err; + } + err = i40evf_request_misc_irq(adapter); + rtnl_unlock(); + if (err) { + dev_err(&pdev->dev, "Cannot get interrupt vector.\n"); + return err; + } + + schedule_work(&adapter->reset_task); + + netif_device_attach(netdev); + + return err; +} + +#endif /* CONFIG_PM */ +/** + * i40evf_remove - Device Removal Routine + * @pdev: PCI device information struct + * + * i40evf_remove is called by the PCI subsystem to alert the driver + * that it should release a PCI device. The could be caused by a + * Hot-Plug event, or because the driver is going to be removed from + * memory. + **/ +static void i40evf_remove(struct pci_dev *pdev) +{ + struct net_device *netdev = pci_get_drvdata(pdev); + struct i40evf_adapter *adapter = netdev_priv(netdev); + struct i40e_hw *hw = &adapter->hw; + + cancel_delayed_work_sync(&adapter->init_task); + cancel_work_sync(&adapter->reset_task); + + if (adapter->netdev_registered) { + unregister_netdev(netdev); + adapter->netdev_registered = false; + } + adapter->state = __I40EVF_REMOVE; + + if (adapter->msix_entries) { + i40evf_misc_irq_disable(adapter); + i40evf_free_misc_irq(adapter); + i40evf_reset_interrupt_capability(adapter); + } + + del_timer_sync(&adapter->watchdog_timer); + flush_scheduled_work(); + + if (hw->aq.asq.count) + i40evf_shutdown_adminq(hw); + + iounmap(hw->hw_addr); + pci_release_regions(pdev); + + i40evf_free_queues(adapter); + kfree(adapter->vf_res); + + free_netdev(netdev); + + pci_disable_pcie_error_reporting(pdev); + + pci_disable_device(pdev); +} + +static struct pci_driver i40evf_driver = { + .name = i40evf_driver_name, + .id_table = i40evf_pci_tbl, + .probe = i40evf_probe, + .remove = i40evf_remove, +#ifdef CONFIG_PM + .suspend = i40evf_suspend, + .resume = i40evf_resume, +#endif + .shutdown = i40evf_shutdown, +}; + +/** + * i40e_init_module - Driver Registration Routine + * + * i40e_init_module is the first routine called when the driver is + * loaded. All it does is register with the PCI subsystem. + **/ +static int __init i40evf_init_module(void) +{ + int ret; + pr_info("i40evf: %s - version %s\n", i40evf_driver_string, + i40evf_driver_version); + + pr_info("%s\n", i40evf_copyright); + + ret = pci_register_driver(&i40evf_driver); + return ret; +} + +module_init(i40evf_init_module); + +/** + * i40e_exit_module - Driver Exit Cleanup Routine + * + * i40e_exit_module is called just before the driver is removed + * from memory. + **/ +static void __exit i40evf_exit_module(void) +{ + pci_unregister_driver(&i40evf_driver); +} + +module_exit(i40evf_exit_module); + +/* i40evf_main.c */ --- linux-3.13.0.orig/drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c +++ linux-3.13.0/drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c @@ -0,0 +1,789 @@ +/******************************************************************************* + * + * Intel Ethernet Controller XL710 Family Linux Virtual Function Driver + * Copyright(c) 2013 - 2014 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. + * + * The full GNU General Public License is included in this distribution in + * the file called "COPYING". + * + * Contact Information: + * e1000-devel Mailing List + * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 + * + ******************************************************************************/ + +#include "i40evf.h" +#include "i40e_prototype.h" + +/* busy wait delay in msec */ +#define I40EVF_BUSY_WAIT_DELAY 10 +#define I40EVF_BUSY_WAIT_COUNT 50 + +/** + * i40evf_send_pf_msg + * @adapter: adapter structure + * @op: virtual channel opcode + * @msg: pointer to message buffer + * @len: message length + * + * Send message to PF and print status if failure. + **/ +static int i40evf_send_pf_msg(struct i40evf_adapter *adapter, + enum i40e_virtchnl_ops op, u8 *msg, u16 len) +{ + struct i40e_hw *hw = &adapter->hw; + i40e_status err; + + if (adapter->flags & I40EVF_FLAG_PF_COMMS_FAILED) + return 0; /* nothing to see here, move along */ + + err = i40e_aq_send_msg_to_pf(hw, op, 0, msg, len, NULL); + if (err) + dev_err(&adapter->pdev->dev, "Unable to send opcode %d to PF, error %d, aq status %d\n", + op, err, hw->aq.asq_last_status); + return err; +} + +/** + * i40evf_send_api_ver + * @adapter: adapter structure + * + * Send API version admin queue message to the PF. The reply is not checked + * in this function. Returns 0 if the message was successfully + * sent, or one of the I40E_ADMIN_QUEUE_ERROR_ statuses if not. + **/ +int i40evf_send_api_ver(struct i40evf_adapter *adapter) +{ + struct i40e_virtchnl_version_info vvi; + + vvi.major = I40E_VIRTCHNL_VERSION_MAJOR; + vvi.minor = I40E_VIRTCHNL_VERSION_MINOR; + + return i40evf_send_pf_msg(adapter, I40E_VIRTCHNL_OP_VERSION, (u8 *)&vvi, + sizeof(vvi)); +} + +/** + * i40evf_verify_api_ver + * @adapter: adapter structure + * + * Compare API versions with the PF. Must be called after admin queue is + * initialized. Returns 0 if API versions match, -EIO if + * they do not, or I40E_ERR_ADMIN_QUEUE_NO_WORK if the admin queue is empty. + **/ +int i40evf_verify_api_ver(struct i40evf_adapter *adapter) +{ + struct i40e_virtchnl_version_info *pf_vvi; + struct i40e_hw *hw = &adapter->hw; + struct i40e_arq_event_info event; + i40e_status err; + + event.msg_size = I40EVF_MAX_AQ_BUF_SIZE; + event.msg_buf = kzalloc(event.msg_size, GFP_KERNEL); + if (!event.msg_buf) { + err = -ENOMEM; + goto out; + } + + err = i40evf_clean_arq_element(hw, &event, NULL); + if (err == I40E_ERR_ADMIN_QUEUE_NO_WORK) + goto out_alloc; + + err = (i40e_status)le32_to_cpu(event.desc.cookie_low); + if (err) { + err = -EIO; + goto out_alloc; + } + + if ((enum i40e_virtchnl_ops)le32_to_cpu(event.desc.cookie_high) != + I40E_VIRTCHNL_OP_VERSION) { + err = -EIO; + goto out_alloc; + } + + pf_vvi = (struct i40e_virtchnl_version_info *)event.msg_buf; + if ((pf_vvi->major != I40E_VIRTCHNL_VERSION_MAJOR) || + (pf_vvi->minor != I40E_VIRTCHNL_VERSION_MINOR)) + err = -EIO; + +out_alloc: + kfree(event.msg_buf); +out: + return err; +} + +/** + * i40evf_send_vf_config_msg + * @adapter: adapter structure + * + * Send VF configuration request admin queue message to the PF. The reply + * is not checked in this function. Returns 0 if the message was + * successfully sent, or one of the I40E_ADMIN_QUEUE_ERROR_ statuses if not. + **/ +int i40evf_send_vf_config_msg(struct i40evf_adapter *adapter) +{ + return i40evf_send_pf_msg(adapter, I40E_VIRTCHNL_OP_GET_VF_RESOURCES, + NULL, 0); +} + +/** + * i40evf_get_vf_config + * @hw: pointer to the hardware structure + * @len: length of buffer + * + * Get VF configuration from PF and populate hw structure. Must be called after + * admin queue is initialized. Busy waits until response is received from PF, + * with maximum timeout. Response from PF is returned in the buffer for further + * processing by the caller. + **/ +int i40evf_get_vf_config(struct i40evf_adapter *adapter) +{ + struct i40e_hw *hw = &adapter->hw; + struct i40e_arq_event_info event; + u16 len; + i40e_status err; + + len = sizeof(struct i40e_virtchnl_vf_resource) + + I40E_MAX_VF_VSI * sizeof(struct i40e_virtchnl_vsi_resource); + event.msg_size = len; + event.msg_buf = kzalloc(event.msg_size, GFP_KERNEL); + if (!event.msg_buf) { + err = -ENOMEM; + goto out; + } + + err = i40evf_clean_arq_element(hw, &event, NULL); + if (err == I40E_ERR_ADMIN_QUEUE_NO_WORK) + goto out_alloc; + + err = (i40e_status)le32_to_cpu(event.desc.cookie_low); + if (err) { + dev_err(&adapter->pdev->dev, + "%s: Error returned from PF, %d, %d\n", __func__, + le32_to_cpu(event.desc.cookie_high), + le32_to_cpu(event.desc.cookie_low)); + err = -EIO; + goto out_alloc; + } + + if ((enum i40e_virtchnl_ops)le32_to_cpu(event.desc.cookie_high) != + I40E_VIRTCHNL_OP_GET_VF_RESOURCES) { + dev_err(&adapter->pdev->dev, + "%s: Invalid response from PF, %d, %d\n", __func__, + le32_to_cpu(event.desc.cookie_high), + le32_to_cpu(event.desc.cookie_low)); + err = -EIO; + goto out_alloc; + } + memcpy(adapter->vf_res, event.msg_buf, min(event.msg_size, len)); + + i40e_vf_parse_hw_config(hw, adapter->vf_res); +out_alloc: + kfree(event.msg_buf); +out: + return err; +} + +/** + * i40evf_configure_queues + * @adapter: adapter structure + * + * Request that the PF set up our (previously allocated) queues. + **/ +void i40evf_configure_queues(struct i40evf_adapter *adapter) +{ + struct i40e_virtchnl_vsi_queue_config_info *vqci; + struct i40e_virtchnl_queue_pair_info *vqpi; + int pairs = adapter->vsi_res->num_queue_pairs; + int i, len; + + if (adapter->current_op != I40E_VIRTCHNL_OP_UNKNOWN) { + /* bail because we already have a command pending */ + dev_err(&adapter->pdev->dev, "%s: command %d pending\n", + __func__, adapter->current_op); + return; + } + adapter->current_op = I40E_VIRTCHNL_OP_CONFIG_VSI_QUEUES; + len = sizeof(struct i40e_virtchnl_vsi_queue_config_info) + + (sizeof(struct i40e_virtchnl_queue_pair_info) * pairs); + vqci = kzalloc(len, GFP_ATOMIC); + if (!vqci) { + dev_err(&adapter->pdev->dev, "%s: unable to allocate memory\n", + __func__); + return; + } + vqci->vsi_id = adapter->vsi_res->vsi_id; + vqci->num_queue_pairs = pairs; + vqpi = vqci->qpair; + /* Size check is not needed here - HW max is 16 queue pairs, and we + * can fit info for 31 of them into the AQ buffer before it overflows. + */ + for (i = 0; i < pairs; i++) { + vqpi->txq.vsi_id = vqci->vsi_id; + vqpi->txq.queue_id = i; + vqpi->txq.ring_len = adapter->tx_rings[i]->count; + vqpi->txq.dma_ring_addr = adapter->tx_rings[i]->dma; + + vqpi->rxq.vsi_id = vqci->vsi_id; + vqpi->rxq.queue_id = i; + vqpi->rxq.ring_len = adapter->rx_rings[i]->count; + vqpi->rxq.dma_ring_addr = adapter->rx_rings[i]->dma; + vqpi->rxq.max_pkt_size = adapter->netdev->mtu + + ETH_HLEN + VLAN_HLEN + ETH_FCS_LEN; + vqpi->rxq.databuffer_size = adapter->rx_rings[i]->rx_buf_len; + vqpi++; + } + + i40evf_send_pf_msg(adapter, I40E_VIRTCHNL_OP_CONFIG_VSI_QUEUES, + (u8 *)vqci, len); + kfree(vqci); + adapter->aq_pending |= I40EVF_FLAG_AQ_CONFIGURE_QUEUES; + adapter->aq_required &= ~I40EVF_FLAG_AQ_CONFIGURE_QUEUES; +} + +/** + * i40evf_enable_queues + * @adapter: adapter structure + * + * Request that the PF enable all of our queues. + **/ +void i40evf_enable_queues(struct i40evf_adapter *adapter) +{ + struct i40e_virtchnl_queue_select vqs; + + if (adapter->current_op != I40E_VIRTCHNL_OP_UNKNOWN) { + /* bail because we already have a command pending */ + dev_err(&adapter->pdev->dev, "%s: command %d pending\n", + __func__, adapter->current_op); + return; + } + adapter->current_op = I40E_VIRTCHNL_OP_ENABLE_QUEUES; + vqs.vsi_id = adapter->vsi_res->vsi_id; + vqs.tx_queues = (1 << adapter->vsi_res->num_queue_pairs) - 1; + vqs.rx_queues = vqs.tx_queues; + i40evf_send_pf_msg(adapter, I40E_VIRTCHNL_OP_ENABLE_QUEUES, + (u8 *)&vqs, sizeof(vqs)); + adapter->aq_pending |= I40EVF_FLAG_AQ_ENABLE_QUEUES; + adapter->aq_required &= ~I40EVF_FLAG_AQ_ENABLE_QUEUES; +} + +/** + * i40evf_disable_queues + * @adapter: adapter structure + * + * Request that the PF disable all of our queues. + **/ +void i40evf_disable_queues(struct i40evf_adapter *adapter) +{ + struct i40e_virtchnl_queue_select vqs; + + if (adapter->current_op != I40E_VIRTCHNL_OP_UNKNOWN) { + /* bail because we already have a command pending */ + dev_err(&adapter->pdev->dev, "%s: command %d pending\n", + __func__, adapter->current_op); + return; + } + adapter->current_op = I40E_VIRTCHNL_OP_DISABLE_QUEUES; + vqs.vsi_id = adapter->vsi_res->vsi_id; + vqs.tx_queues = (1 << adapter->vsi_res->num_queue_pairs) - 1; + vqs.rx_queues = vqs.tx_queues; + i40evf_send_pf_msg(adapter, I40E_VIRTCHNL_OP_DISABLE_QUEUES, + (u8 *)&vqs, sizeof(vqs)); + adapter->aq_pending |= I40EVF_FLAG_AQ_DISABLE_QUEUES; + adapter->aq_required &= ~I40EVF_FLAG_AQ_DISABLE_QUEUES; +} + +/** + * i40evf_map_queues + * @adapter: adapter structure + * + * Request that the PF map queues to interrupt vectors. Misc causes, including + * admin queue, are always mapped to vector 0. + **/ +void i40evf_map_queues(struct i40evf_adapter *adapter) +{ + struct i40e_virtchnl_irq_map_info *vimi; + int v_idx, q_vectors, len; + struct i40e_q_vector *q_vector; + + if (adapter->current_op != I40E_VIRTCHNL_OP_UNKNOWN) { + /* bail because we already have a command pending */ + dev_err(&adapter->pdev->dev, "%s: command %d pending\n", + __func__, adapter->current_op); + return; + } + adapter->current_op = I40E_VIRTCHNL_OP_CONFIG_IRQ_MAP; + + q_vectors = adapter->num_msix_vectors - NONQ_VECS; + + len = sizeof(struct i40e_virtchnl_irq_map_info) + + (adapter->num_msix_vectors * + sizeof(struct i40e_virtchnl_vector_map)); + vimi = kzalloc(len, GFP_ATOMIC); + if (!vimi) { + dev_err(&adapter->pdev->dev, "%s: unable to allocate memory\n", + __func__); + return; + } + + vimi->num_vectors = adapter->num_msix_vectors; + /* Queue vectors first */ + for (v_idx = 0; v_idx < q_vectors; v_idx++) { + q_vector = adapter->q_vector[v_idx]; + vimi->vecmap[v_idx].vsi_id = adapter->vsi_res->vsi_id; + vimi->vecmap[v_idx].vector_id = v_idx + NONQ_VECS; + vimi->vecmap[v_idx].txq_map = q_vector->ring_mask; + vimi->vecmap[v_idx].rxq_map = q_vector->ring_mask; + } + /* Misc vector last - this is only for AdminQ messages */ + vimi->vecmap[v_idx].vsi_id = adapter->vsi_res->vsi_id; + vimi->vecmap[v_idx].vector_id = 0; + vimi->vecmap[v_idx].txq_map = 0; + vimi->vecmap[v_idx].rxq_map = 0; + + i40evf_send_pf_msg(adapter, I40E_VIRTCHNL_OP_CONFIG_IRQ_MAP, + (u8 *)vimi, len); + kfree(vimi); + adapter->aq_pending |= I40EVF_FLAG_AQ_MAP_VECTORS; + adapter->aq_required &= ~I40EVF_FLAG_AQ_MAP_VECTORS; +} + +/** + * i40evf_add_ether_addrs + * @adapter: adapter structure + * @addrs: the MAC address filters to add (contiguous) + * @count: number of filters + * + * Request that the PF add one or more addresses to our filters. + **/ +void i40evf_add_ether_addrs(struct i40evf_adapter *adapter) +{ + struct i40e_virtchnl_ether_addr_list *veal; + int len, i = 0, count = 0; + struct i40evf_mac_filter *f; + + if (adapter->current_op != I40E_VIRTCHNL_OP_UNKNOWN) { + /* bail because we already have a command pending */ + dev_err(&adapter->pdev->dev, "%s: command %d pending\n", + __func__, adapter->current_op); + return; + } + list_for_each_entry(f, &adapter->mac_filter_list, list) { + if (f->add) + count++; + } + if (!count) { + adapter->aq_required &= ~I40EVF_FLAG_AQ_ADD_MAC_FILTER; + return; + } + adapter->current_op = I40E_VIRTCHNL_OP_ADD_ETHER_ADDRESS; + + len = sizeof(struct i40e_virtchnl_ether_addr_list) + + (count * sizeof(struct i40e_virtchnl_ether_addr)); + if (len > I40EVF_MAX_AQ_BUF_SIZE) { + dev_warn(&adapter->pdev->dev, "%s: Too many MAC address changes in one request.\n", + __func__); + count = (I40EVF_MAX_AQ_BUF_SIZE - + sizeof(struct i40e_virtchnl_ether_addr_list)) / + sizeof(struct i40e_virtchnl_ether_addr); + len = I40EVF_MAX_AQ_BUF_SIZE; + } + + veal = kzalloc(len, GFP_ATOMIC); + if (!veal) { + dev_err(&adapter->pdev->dev, "%s: unable to allocate memory\n", + __func__); + return; + } + veal->vsi_id = adapter->vsi_res->vsi_id; + veal->num_elements = count; + list_for_each_entry(f, &adapter->mac_filter_list, list) { + if (f->add) { + memcpy(veal->list[i].addr, f->macaddr, ETH_ALEN); + i++; + f->add = false; + } + } + i40evf_send_pf_msg(adapter, I40E_VIRTCHNL_OP_ADD_ETHER_ADDRESS, + (u8 *)veal, len); + kfree(veal); + adapter->aq_pending |= I40EVF_FLAG_AQ_ADD_MAC_FILTER; + adapter->aq_required &= ~I40EVF_FLAG_AQ_ADD_MAC_FILTER; + +} + +/** + * i40evf_del_ether_addrs + * @adapter: adapter structure + * @addrs: the MAC address filters to remove (contiguous) + * @count: number of filtes + * + * Request that the PF remove one or more addresses from our filters. + **/ +void i40evf_del_ether_addrs(struct i40evf_adapter *adapter) +{ + struct i40e_virtchnl_ether_addr_list *veal; + struct i40evf_mac_filter *f, *ftmp; + int len, i = 0, count = 0; + + if (adapter->current_op != I40E_VIRTCHNL_OP_UNKNOWN) { + /* bail because we already have a command pending */ + dev_err(&adapter->pdev->dev, "%s: command %d pending\n", + __func__, adapter->current_op); + return; + } + list_for_each_entry(f, &adapter->mac_filter_list, list) { + if (f->remove) + count++; + } + if (!count) { + adapter->aq_required &= ~I40EVF_FLAG_AQ_DEL_MAC_FILTER; + return; + } + adapter->current_op = I40E_VIRTCHNL_OP_DEL_ETHER_ADDRESS; + + len = sizeof(struct i40e_virtchnl_ether_addr_list) + + (count * sizeof(struct i40e_virtchnl_ether_addr)); + if (len > I40EVF_MAX_AQ_BUF_SIZE) { + dev_warn(&adapter->pdev->dev, "%s: Too many MAC address changes in one request.\n", + __func__); + count = (I40EVF_MAX_AQ_BUF_SIZE - + sizeof(struct i40e_virtchnl_ether_addr_list)) / + sizeof(struct i40e_virtchnl_ether_addr); + len = I40EVF_MAX_AQ_BUF_SIZE; + } + veal = kzalloc(len, GFP_ATOMIC); + if (!veal) { + dev_err(&adapter->pdev->dev, "%s: unable to allocate memory\n", + __func__); + return; + } + veal->vsi_id = adapter->vsi_res->vsi_id; + veal->num_elements = count; + list_for_each_entry_safe(f, ftmp, &adapter->mac_filter_list, list) { + if (f->remove) { + memcpy(veal->list[i].addr, f->macaddr, ETH_ALEN); + i++; + list_del(&f->list); + kfree(f); + } + } + i40evf_send_pf_msg(adapter, I40E_VIRTCHNL_OP_DEL_ETHER_ADDRESS, + (u8 *)veal, len); + kfree(veal); + adapter->aq_pending |= I40EVF_FLAG_AQ_DEL_MAC_FILTER; + adapter->aq_required &= ~I40EVF_FLAG_AQ_DEL_MAC_FILTER; +} + +/** + * i40evf_add_vlans + * @adapter: adapter structure + * @vlans: the VLANs to add + * @count: number of VLANs + * + * Request that the PF add one or more VLAN filters to our VSI. + **/ +void i40evf_add_vlans(struct i40evf_adapter *adapter) +{ + struct i40e_virtchnl_vlan_filter_list *vvfl; + int len, i = 0, count = 0; + struct i40evf_vlan_filter *f; + + if (adapter->current_op != I40E_VIRTCHNL_OP_UNKNOWN) { + /* bail because we already have a command pending */ + dev_err(&adapter->pdev->dev, "%s: command %d pending\n", + __func__, adapter->current_op); + return; + } + + list_for_each_entry(f, &adapter->vlan_filter_list, list) { + if (f->add) + count++; + } + if (!count) { + adapter->aq_required &= ~I40EVF_FLAG_AQ_ADD_VLAN_FILTER; + return; + } + adapter->current_op = I40E_VIRTCHNL_OP_ADD_VLAN; + + len = sizeof(struct i40e_virtchnl_vlan_filter_list) + + (count * sizeof(u16)); + if (len > I40EVF_MAX_AQ_BUF_SIZE) { + dev_warn(&adapter->pdev->dev, "%s: Too many VLAN changes in one request.\n", + __func__); + count = (I40EVF_MAX_AQ_BUF_SIZE - + sizeof(struct i40e_virtchnl_vlan_filter_list)) / + sizeof(u16); + len = I40EVF_MAX_AQ_BUF_SIZE; + } + vvfl = kzalloc(len, GFP_ATOMIC); + if (!vvfl) { + dev_err(&adapter->pdev->dev, "%s: unable to allocate memory\n", + __func__); + return; + } + vvfl->vsi_id = adapter->vsi_res->vsi_id; + vvfl->num_elements = count; + list_for_each_entry(f, &adapter->vlan_filter_list, list) { + if (f->add) { + vvfl->vlan_id[i] = f->vlan; + i++; + f->add = false; + } + } + i40evf_send_pf_msg(adapter, I40E_VIRTCHNL_OP_ADD_VLAN, (u8 *)vvfl, len); + kfree(vvfl); + adapter->aq_pending |= I40EVF_FLAG_AQ_ADD_VLAN_FILTER; + adapter->aq_required &= ~I40EVF_FLAG_AQ_ADD_VLAN_FILTER; +} + +/** + * i40evf_del_vlans + * @adapter: adapter structure + * @vlans: the VLANs to remove + * @count: number of VLANs + * + * Request that the PF remove one or more VLAN filters from our VSI. + **/ +void i40evf_del_vlans(struct i40evf_adapter *adapter) +{ + struct i40e_virtchnl_vlan_filter_list *vvfl; + struct i40evf_vlan_filter *f, *ftmp; + int len, i = 0, count = 0; + + if (adapter->current_op != I40E_VIRTCHNL_OP_UNKNOWN) { + /* bail because we already have a command pending */ + dev_err(&adapter->pdev->dev, "%s: command %d pending\n", + __func__, adapter->current_op); + return; + } + + list_for_each_entry(f, &adapter->vlan_filter_list, list) { + if (f->remove) + count++; + } + if (!count) { + adapter->aq_required &= ~I40EVF_FLAG_AQ_DEL_VLAN_FILTER; + return; + } + adapter->current_op = I40E_VIRTCHNL_OP_DEL_VLAN; + + len = sizeof(struct i40e_virtchnl_vlan_filter_list) + + (count * sizeof(u16)); + if (len > I40EVF_MAX_AQ_BUF_SIZE) { + dev_warn(&adapter->pdev->dev, "%s: Too many VLAN changes in one request.\n", + __func__); + count = (I40EVF_MAX_AQ_BUF_SIZE - + sizeof(struct i40e_virtchnl_vlan_filter_list)) / + sizeof(u16); + len = I40EVF_MAX_AQ_BUF_SIZE; + } + vvfl = kzalloc(len, GFP_ATOMIC); + if (!vvfl) { + dev_err(&adapter->pdev->dev, "%s: unable to allocate memory\n", + __func__); + return; + } + vvfl->vsi_id = adapter->vsi_res->vsi_id; + vvfl->num_elements = count; + list_for_each_entry_safe(f, ftmp, &adapter->vlan_filter_list, list) { + if (f->remove) { + vvfl->vlan_id[i] = f->vlan; + i++; + list_del(&f->list); + kfree(f); + } + } + i40evf_send_pf_msg(adapter, I40E_VIRTCHNL_OP_DEL_VLAN, (u8 *)vvfl, len); + kfree(vvfl); + adapter->aq_pending |= I40EVF_FLAG_AQ_DEL_VLAN_FILTER; + adapter->aq_required &= ~I40EVF_FLAG_AQ_DEL_VLAN_FILTER; +} + +/** + * i40evf_set_promiscuous + * @adapter: adapter structure + * @flags: bitmask to control unicast/multicast promiscuous. + * + * Request that the PF enable promiscuous mode for our VSI. + **/ +void i40evf_set_promiscuous(struct i40evf_adapter *adapter, int flags) +{ + struct i40e_virtchnl_promisc_info vpi; + + if (adapter->current_op != I40E_VIRTCHNL_OP_UNKNOWN) { + /* bail because we already have a command pending */ + dev_err(&adapter->pdev->dev, "%s: command %d pending\n", + __func__, adapter->current_op); + return; + } + adapter->current_op = I40E_VIRTCHNL_OP_CONFIG_PROMISCUOUS_MODE; + vpi.vsi_id = adapter->vsi_res->vsi_id; + vpi.flags = flags; + i40evf_send_pf_msg(adapter, I40E_VIRTCHNL_OP_CONFIG_PROMISCUOUS_MODE, + (u8 *)&vpi, sizeof(vpi)); +} + +/** + * i40evf_request_stats + * @adapter: adapter structure + * + * Request VSI statistics from PF. + **/ +void i40evf_request_stats(struct i40evf_adapter *adapter) +{ + struct i40e_virtchnl_queue_select vqs; + if (adapter->current_op != I40E_VIRTCHNL_OP_UNKNOWN) { + /* no error message, this isn't crucial */ + return; + } + adapter->current_op = I40E_VIRTCHNL_OP_GET_STATS; + vqs.vsi_id = adapter->vsi_res->vsi_id; + /* queue maps are ignored for this message - only the vsi is used */ + if (i40evf_send_pf_msg(adapter, I40E_VIRTCHNL_OP_GET_STATS, + (u8 *)&vqs, sizeof(vqs))) + /* if the request failed, don't lock out others */ + adapter->current_op = I40E_VIRTCHNL_OP_UNKNOWN; +} +/** + * i40evf_request_reset + * @adapter: adapter structure + * + * Request that the PF reset this VF. No response is expected. + **/ +void i40evf_request_reset(struct i40evf_adapter *adapter) +{ + /* Don't check CURRENT_OP - this is always higher priority */ + i40evf_send_pf_msg(adapter, I40E_VIRTCHNL_OP_RESET_VF, NULL, 0); + adapter->current_op = I40E_VIRTCHNL_OP_UNKNOWN; +} + +/** + * i40evf_virtchnl_completion + * @adapter: adapter structure + * @v_opcode: opcode sent by PF + * @v_retval: retval sent by PF + * @msg: message sent by PF + * @msglen: message length + * + * Asynchronous completion function for admin queue messages. Rather than busy + * wait, we fire off our requests and assume that no errors will be returned. + * This function handles the reply messages. + **/ +void i40evf_virtchnl_completion(struct i40evf_adapter *adapter, + enum i40e_virtchnl_ops v_opcode, + i40e_status v_retval, + u8 *msg, u16 msglen) +{ + struct net_device *netdev = adapter->netdev; + + if (v_opcode == I40E_VIRTCHNL_OP_EVENT) { + struct i40e_virtchnl_pf_event *vpe = + (struct i40e_virtchnl_pf_event *)msg; + switch (vpe->event) { + case I40E_VIRTCHNL_EVENT_LINK_CHANGE: + adapter->link_up = + vpe->event_data.link_event.link_status; + if (adapter->link_up && !netif_carrier_ok(netdev)) { + dev_info(&adapter->pdev->dev, "NIC Link is Up\n"); + netif_carrier_on(netdev); + netif_tx_wake_all_queues(netdev); + } else if (!adapter->link_up) { + dev_info(&adapter->pdev->dev, "NIC Link is Down\n"); + netif_carrier_off(netdev); + netif_tx_stop_all_queues(netdev); + } + break; + case I40E_VIRTCHNL_EVENT_RESET_IMPENDING: + dev_info(&adapter->pdev->dev, "PF reset warning received\n"); + if (!(adapter->flags & I40EVF_FLAG_RESET_PENDING)) { + adapter->flags |= I40EVF_FLAG_RESET_PENDING; + dev_info(&adapter->pdev->dev, "Scheduling reset task\n"); + schedule_work(&adapter->reset_task); + } + break; + default: + dev_err(&adapter->pdev->dev, + "%s: Unknown event %d from pf\n", + __func__, vpe->event); + break; + + } + return; + } + if (v_opcode != adapter->current_op) { + dev_err(&adapter->pdev->dev, "%s: Pending op is %d, received %d.\n", + __func__, adapter->current_op, v_opcode); + /* We're probably completely screwed at this point, but clear + * the current op and try to carry on.... + */ + adapter->current_op = I40E_VIRTCHNL_OP_UNKNOWN; + return; + } + if (v_retval) { + dev_err(&adapter->pdev->dev, "%s: PF returned error %d to our request %d!\n", + __func__, v_retval, v_opcode); + } + switch (v_opcode) { + case I40E_VIRTCHNL_OP_GET_STATS: { + struct i40e_eth_stats *stats = + (struct i40e_eth_stats *)msg; + adapter->net_stats.rx_packets = stats->rx_unicast + + stats->rx_multicast + + stats->rx_broadcast; + adapter->net_stats.tx_packets = stats->tx_unicast + + stats->tx_multicast + + stats->tx_broadcast; + adapter->net_stats.rx_bytes = stats->rx_bytes; + adapter->net_stats.tx_bytes = stats->tx_bytes; + adapter->net_stats.rx_errors = stats->rx_errors; + adapter->net_stats.tx_errors = stats->tx_errors; + adapter->net_stats.rx_dropped = stats->rx_missed; + adapter->net_stats.tx_dropped = stats->tx_discards; + adapter->current_stats = *stats; + } + break; + case I40E_VIRTCHNL_OP_ADD_ETHER_ADDRESS: + adapter->aq_pending &= ~(I40EVF_FLAG_AQ_ADD_MAC_FILTER); + break; + case I40E_VIRTCHNL_OP_DEL_ETHER_ADDRESS: + adapter->aq_pending &= ~(I40EVF_FLAG_AQ_DEL_MAC_FILTER); + break; + case I40E_VIRTCHNL_OP_ADD_VLAN: + adapter->aq_pending &= ~(I40EVF_FLAG_AQ_ADD_VLAN_FILTER); + break; + case I40E_VIRTCHNL_OP_DEL_VLAN: + adapter->aq_pending &= ~(I40EVF_FLAG_AQ_DEL_VLAN_FILTER); + break; + case I40E_VIRTCHNL_OP_ENABLE_QUEUES: + adapter->aq_pending &= ~(I40EVF_FLAG_AQ_ENABLE_QUEUES); + /* enable transmits */ + i40evf_irq_enable(adapter, true); + netif_tx_start_all_queues(adapter->netdev); + netif_carrier_on(adapter->netdev); + break; + case I40E_VIRTCHNL_OP_DISABLE_QUEUES: + adapter->aq_pending &= ~(I40EVF_FLAG_AQ_DISABLE_QUEUES); + break; + case I40E_VIRTCHNL_OP_CONFIG_VSI_QUEUES: + adapter->aq_pending &= ~(I40EVF_FLAG_AQ_CONFIGURE_QUEUES); + break; + case I40E_VIRTCHNL_OP_CONFIG_IRQ_MAP: + adapter->aq_pending &= ~(I40EVF_FLAG_AQ_MAP_VECTORS); + break; + default: + dev_warn(&adapter->pdev->dev, "%s: Received unexpected message %d from PF.\n", + __func__, v_opcode); + break; + } /* switch v_opcode */ + adapter->current_op = I40E_VIRTCHNL_OP_UNKNOWN; +} --- linux-3.13.0.orig/drivers/net/ethernet/intel/igb/e1000_82575.c +++ linux-3.13.0/drivers/net/ethernet/intel/igb/e1000_82575.c @@ -1403,6 +1403,13 @@ s32 ret_val; u16 i, rar_count = mac->rar_entry_count; + if ((hw->mac.type >= e1000_i210) && + !(igb_get_flash_presence_i210(hw))) { + ret_val = igb_pll_workaround_i210(hw); + if (ret_val) + return ret_val; + } + /* Initialize identification LED */ ret_val = igb_id_led_init(hw); if (ret_val) { --- linux-3.13.0.orig/drivers/net/ethernet/intel/igb/e1000_defines.h +++ linux-3.13.0/drivers/net/ethernet/intel/igb/e1000_defines.h @@ -46,14 +46,15 @@ /* Extended Device Control */ #define E1000_CTRL_EXT_SDP3_DATA 0x00000080 /* Value of SW Defineable Pin 3 */ /* Physical Func Reset Done Indication */ -#define E1000_CTRL_EXT_PFRSTD 0x00004000 -#define E1000_CTRL_EXT_LINK_MODE_MASK 0x00C00000 -#define E1000_CTRL_EXT_LINK_MODE_PCIE_SERDES 0x00C00000 -#define E1000_CTRL_EXT_LINK_MODE_1000BASE_KX 0x00400000 -#define E1000_CTRL_EXT_LINK_MODE_SGMII 0x00800000 -#define E1000_CTRL_EXT_LINK_MODE_GMII 0x00000000 -#define E1000_CTRL_EXT_EIAME 0x01000000 -#define E1000_CTRL_EXT_IRCA 0x00000001 +#define E1000_CTRL_EXT_PFRSTD 0x00004000 +#define E1000_CTRL_EXT_SDLPE 0X00040000 /* SerDes Low Power Enable */ +#define E1000_CTRL_EXT_LINK_MODE_MASK 0x00C00000 +#define E1000_CTRL_EXT_LINK_MODE_PCIE_SERDES 0x00C00000 +#define E1000_CTRL_EXT_LINK_MODE_1000BASE_KX 0x00400000 +#define E1000_CTRL_EXT_LINK_MODE_SGMII 0x00800000 +#define E1000_CTRL_EXT_LINK_MODE_GMII 0x00000000 +#define E1000_CTRL_EXT_EIAME 0x01000000 +#define E1000_CTRL_EXT_IRCA 0x00000001 /* Interrupt delay cancellation */ /* Driver loaded bit for FW */ #define E1000_CTRL_EXT_DRV_LOAD 0x10000000 @@ -62,6 +63,7 @@ /* packet buffer parity error detection enabled */ /* descriptor FIFO parity error detection enable */ #define E1000_CTRL_EXT_PBA_CLR 0x80000000 /* PBA Clear */ +#define E1000_CTRL_EXT_PHYPDEN 0x00100000 #define E1000_I2CCMD_REG_ADDR_SHIFT 16 #define E1000_I2CCMD_PHY_ADDR_SHIFT 24 #define E1000_I2CCMD_OPCODE_READ 0x08000000 --- linux-3.13.0.orig/drivers/net/ethernet/intel/igb/e1000_hw.h +++ linux-3.13.0/drivers/net/ethernet/intel/igb/e1000_hw.h @@ -569,4 +569,7 @@ /* These functions must be implemented by drivers */ s32 igb_read_pcie_cap_reg(struct e1000_hw *hw, u32 reg, u16 *value); s32 igb_write_pcie_cap_reg(struct e1000_hw *hw, u32 reg, u16 *value); + +void igb_read_pci_cfg(struct e1000_hw *hw, u32 reg, u16 *value); +void igb_write_pci_cfg(struct e1000_hw *hw, u32 reg, u16 *value); #endif /* _E1000_HW_H_ */ --- linux-3.13.0.orig/drivers/net/ethernet/intel/igb/e1000_i210.c +++ linux-3.13.0/drivers/net/ethernet/intel/igb/e1000_i210.c @@ -364,7 +364,7 @@ word_address = INVM_DWORD_TO_WORD_ADDRESS(invm_dword); if (word_address == address) { *data = INVM_DWORD_TO_WORD_DATA(invm_dword); - hw_dbg("Read INVM Word 0x%02x = %x", + hw_dbg("Read INVM Word 0x%02x = %x\n", address, *data); status = E1000_SUCCESS; break; @@ -835,3 +835,69 @@ } return ret_val; } + +/** + * igb_pll_workaround_i210 + * @hw: pointer to the HW structure + * + * Works around an errata in the PLL circuit where it occasionally + * provides the wrong clock frequency after power up. + **/ +s32 igb_pll_workaround_i210(struct e1000_hw *hw) +{ + s32 ret_val; + u32 wuc, mdicnfg, ctrl, ctrl_ext, reg_val; + u16 nvm_word, phy_word, pci_word, tmp_nvm; + int i; + + /* Get and set needed register values */ + wuc = rd32(E1000_WUC); + mdicnfg = rd32(E1000_MDICNFG); + reg_val = mdicnfg & ~E1000_MDICNFG_EXT_MDIO; + wr32(E1000_MDICNFG, reg_val); + + /* Get data from NVM, or set default */ + ret_val = igb_read_invm_word_i210(hw, E1000_INVM_AUTOLOAD, + &nvm_word); + if (ret_val) + nvm_word = E1000_INVM_DEFAULT_AL; + tmp_nvm = nvm_word | E1000_INVM_PLL_WO_VAL; + for (i = 0; i < E1000_MAX_PLL_TRIES; i++) { + /* check current state directly from internal PHY */ + igb_read_phy_reg_gs40g(hw, (E1000_PHY_PLL_FREQ_PAGE | + E1000_PHY_PLL_FREQ_REG), &phy_word); + if ((phy_word & E1000_PHY_PLL_UNCONF) + != E1000_PHY_PLL_UNCONF) { + ret_val = 0; + break; + } else { + ret_val = -E1000_ERR_PHY; + } + /* directly reset the internal PHY */ + ctrl = rd32(E1000_CTRL); + wr32(E1000_CTRL, ctrl|E1000_CTRL_PHY_RST); + + ctrl_ext = rd32(E1000_CTRL_EXT); + ctrl_ext |= (E1000_CTRL_EXT_PHYPDEN | E1000_CTRL_EXT_SDLPE); + wr32(E1000_CTRL_EXT, ctrl_ext); + + wr32(E1000_WUC, 0); + reg_val = (E1000_INVM_AUTOLOAD << 4) | (tmp_nvm << 16); + wr32(E1000_EEARBC_I210, reg_val); + + igb_read_pci_cfg(hw, E1000_PCI_PMCSR, &pci_word); + pci_word |= E1000_PCI_PMCSR_D3; + igb_write_pci_cfg(hw, E1000_PCI_PMCSR, &pci_word); + usleep_range(1000, 2000); + pci_word &= ~E1000_PCI_PMCSR_D3; + igb_write_pci_cfg(hw, E1000_PCI_PMCSR, &pci_word); + reg_val = (E1000_INVM_AUTOLOAD << 4) | (nvm_word << 16); + wr32(E1000_EEARBC_I210, reg_val); + + /* restore WUC register */ + wr32(E1000_WUC, wuc); + } + /* restore MDICNFG setting */ + wr32(E1000_MDICNFG, mdicnfg); + return ret_val; +} --- linux-3.13.0.orig/drivers/net/ethernet/intel/igb/e1000_i210.h +++ linux-3.13.0/drivers/net/ethernet/intel/igb/e1000_i210.h @@ -46,6 +46,7 @@ s32 igb_write_xmdio_reg(struct e1000_hw *hw, u16 addr, u8 dev_addr, u16 data); s32 igb_init_nvm_params_i210(struct e1000_hw *hw); bool igb_get_flash_presence_i210(struct e1000_hw *hw); +s32 igb_pll_workaround_i210(struct e1000_hw *hw); #define E1000_STM_OPCODE 0xDB00 #define E1000_EEPROM_FLASH_SIZE_WORD 0x11 @@ -91,4 +92,15 @@ #define NVM_LED_1_CFG_DEFAULT_I211 0x0184 #define NVM_LED_0_2_CFG_DEFAULT_I211 0x200C +/* PLL Defines */ +#define E1000_PCI_PMCSR 0x44 +#define E1000_PCI_PMCSR_D3 0x03 +#define E1000_MAX_PLL_TRIES 5 +#define E1000_PHY_PLL_UNCONF 0xFF +#define E1000_PHY_PLL_FREQ_PAGE 0xFC0000 +#define E1000_PHY_PLL_FREQ_REG 0x000E +#define E1000_INVM_DEFAULT_AL 0x202F +#define E1000_INVM_AUTOLOAD 0x0A +#define E1000_INVM_PLL_WO_VAL 0x0010 + #endif --- linux-3.13.0.orig/drivers/net/ethernet/intel/igb/e1000_mac.c +++ linux-3.13.0/drivers/net/ethernet/intel/igb/e1000_mac.c @@ -930,11 +930,10 @@ */ if (hw->fc.requested_mode == e1000_fc_full) { hw->fc.current_mode = e1000_fc_full; - hw_dbg("Flow Control = FULL.\r\n"); + hw_dbg("Flow Control = FULL.\n"); } else { hw->fc.current_mode = e1000_fc_rx_pause; - hw_dbg("Flow Control = " - "RX PAUSE frames only.\r\n"); + hw_dbg("Flow Control = RX PAUSE frames only.\n"); } } /* For receiving PAUSE frames ONLY. @@ -949,7 +948,7 @@ (mii_nway_lp_ability_reg & NWAY_LPAR_PAUSE) && (mii_nway_lp_ability_reg & NWAY_LPAR_ASM_DIR)) { hw->fc.current_mode = e1000_fc_tx_pause; - hw_dbg("Flow Control = TX PAUSE frames only.\r\n"); + hw_dbg("Flow Control = TX PAUSE frames only.\n"); } /* For transmitting PAUSE frames ONLY. * @@ -963,7 +962,7 @@ !(mii_nway_lp_ability_reg & NWAY_LPAR_PAUSE) && (mii_nway_lp_ability_reg & NWAY_LPAR_ASM_DIR)) { hw->fc.current_mode = e1000_fc_rx_pause; - hw_dbg("Flow Control = RX PAUSE frames only.\r\n"); + hw_dbg("Flow Control = RX PAUSE frames only.\n"); } /* Per the IEEE spec, at this point flow control should be * disabled. However, we want to consider that we could @@ -989,10 +988,10 @@ (hw->fc.requested_mode == e1000_fc_tx_pause) || (hw->fc.strict_ieee)) { hw->fc.current_mode = e1000_fc_none; - hw_dbg("Flow Control = NONE.\r\n"); + hw_dbg("Flow Control = NONE.\n"); } else { hw->fc.current_mode = e1000_fc_rx_pause; - hw_dbg("Flow Control = RX PAUSE frames only.\r\n"); + hw_dbg("Flow Control = RX PAUSE frames only.\n"); } /* Now we need to do one last check... If we auto- --- linux-3.13.0.orig/drivers/net/ethernet/intel/igb/e1000_regs.h +++ linux-3.13.0/drivers/net/ethernet/intel/igb/e1000_regs.h @@ -69,6 +69,7 @@ #define E1000_PBA 0x01000 /* Packet Buffer Allocation - RW */ #define E1000_PBS 0x01008 /* Packet Buffer Size */ #define E1000_EEMNGCTL 0x01010 /* MNG EEprom Control */ +#define E1000_EEARBC_I210 0x12024 /* EEPROM Auto Read Bus Control */ #define E1000_EEWR 0x0102C /* EEPROM Write Register - RW */ #define E1000_I2CCMD 0x01028 /* SFPI2C Command Register - RW */ #define E1000_FRTIMER 0x01048 /* Free Running Timer - RW */ --- linux-3.13.0.orig/drivers/net/ethernet/intel/igb/igb_ethtool.c +++ linux-3.13.0/drivers/net/ethernet/intel/igb/igb_ethtool.c @@ -2270,15 +2270,15 @@ ring = adapter->tx_ring[j]; do { - start = u64_stats_fetch_begin_bh(&ring->tx_syncp); + start = u64_stats_fetch_begin_irq(&ring->tx_syncp); data[i] = ring->tx_stats.packets; data[i+1] = ring->tx_stats.bytes; data[i+2] = ring->tx_stats.restart_queue; - } while (u64_stats_fetch_retry_bh(&ring->tx_syncp, start)); + } while (u64_stats_fetch_retry_irq(&ring->tx_syncp, start)); do { - start = u64_stats_fetch_begin_bh(&ring->tx_syncp2); + start = u64_stats_fetch_begin_irq(&ring->tx_syncp2); restart2 = ring->tx_stats.restart_queue2; - } while (u64_stats_fetch_retry_bh(&ring->tx_syncp2, start)); + } while (u64_stats_fetch_retry_irq(&ring->tx_syncp2, start)); data[i+2] += restart2; i += IGB_TX_QUEUE_STATS_LEN; @@ -2286,13 +2286,13 @@ for (j = 0; j < adapter->num_rx_queues; j++) { ring = adapter->rx_ring[j]; do { - start = u64_stats_fetch_begin_bh(&ring->rx_syncp); + start = u64_stats_fetch_begin_irq(&ring->rx_syncp); data[i] = ring->rx_stats.packets; data[i+1] = ring->rx_stats.bytes; data[i+2] = ring->rx_stats.drops; data[i+3] = ring->rx_stats.csum_err; data[i+4] = ring->rx_stats.alloc_failed; - } while (u64_stats_fetch_retry_bh(&ring->rx_syncp, start)); + } while (u64_stats_fetch_retry_irq(&ring->rx_syncp, start)); i += IGB_RX_QUEUE_STATS_LEN; } spin_unlock(&adapter->stats64_lock); --- linux-3.13.0.orig/drivers/net/ethernet/intel/igb/igb_main.c +++ linux-3.13.0/drivers/net/ethernet/intel/igb/igb_main.c @@ -1011,7 +1011,7 @@ adapter->tx_ring[q_vector->tx.ring->queue_index] = NULL; if (q_vector->rx.ring) - adapter->tx_ring[q_vector->rx.ring->queue_index] = NULL; + adapter->rx_ring[q_vector->rx.ring->queue_index] = NULL; adapter->q_vector[v_idx] = NULL; netif_napi_del(&q_vector->napi); @@ -4909,8 +4909,10 @@ rcu_read_lock(); for (i = 0; i < adapter->num_rx_queues; i++) { - u32 rqdpc = rd32(E1000_RQDPC(i)); struct igb_ring *ring = adapter->rx_ring[i]; + u32 rqdpc = rd32(E1000_RQDPC(i)); + if (hw->mac.type >= e1000_i210) + wr32(E1000_RQDPC(i), 0); if (rqdpc) { ring->rx_stats.drops += rqdpc; @@ -4918,10 +4920,10 @@ } do { - start = u64_stats_fetch_begin_bh(&ring->rx_syncp); + start = u64_stats_fetch_begin_irq(&ring->rx_syncp); _bytes = ring->rx_stats.bytes; _packets = ring->rx_stats.packets; - } while (u64_stats_fetch_retry_bh(&ring->rx_syncp, start)); + } while (u64_stats_fetch_retry_irq(&ring->rx_syncp, start)); bytes += _bytes; packets += _packets; } @@ -4934,10 +4936,10 @@ for (i = 0; i < adapter->num_tx_queues; i++) { struct igb_ring *ring = adapter->tx_ring[i]; do { - start = u64_stats_fetch_begin_bh(&ring->tx_syncp); + start = u64_stats_fetch_begin_irq(&ring->tx_syncp); _bytes = ring->tx_stats.bytes; _packets = ring->tx_stats.packets; - } while (u64_stats_fetch_retry_bh(&ring->tx_syncp, start)); + } while (u64_stats_fetch_retry_irq(&ring->tx_syncp, start)); bytes += _bytes; packets += _packets; } @@ -6912,6 +6914,20 @@ } } +void igb_read_pci_cfg(struct e1000_hw *hw, u32 reg, u16 *value) +{ + struct igb_adapter *adapter = hw->back; + + pci_read_config_word(adapter->pdev, reg, value); +} + +void igb_write_pci_cfg(struct e1000_hw *hw, u32 reg, u16 *value) +{ + struct igb_adapter *adapter = hw->back; + + pci_write_config_word(adapter->pdev, reg, *value); +} + s32 igb_read_pcie_cap_reg(struct e1000_hw *hw, u32 reg, u16 *value) { struct igb_adapter *adapter = hw->back; @@ -7841,6 +7857,8 @@ if (netif_running(netdev)) igb_close(netdev); + else + igb_reset(adapter); igb_clear_interrupt_scheme(adapter); --- linux-3.13.0.orig/drivers/net/ethernet/intel/igb/igb_ptp.c +++ linux-3.13.0/drivers/net/ethernet/intel/igb/igb_ptp.c @@ -387,7 +387,7 @@ dev_kfree_skb_any(adapter->ptp_tx_skb); adapter->ptp_tx_skb = NULL; adapter->tx_hwtstamp_timeouts++; - dev_warn(&adapter->pdev->dev, "clearing Tx timestamp hang"); + dev_warn(&adapter->pdev->dev, "clearing Tx timestamp hang\n"); return; } @@ -454,7 +454,7 @@ rd32(E1000_RXSTMPH); adapter->last_rx_ptp_check = jiffies; adapter->rx_hwtstamp_cleared++; - dev_warn(&adapter->pdev->dev, "clearing Rx timestamp hang"); + dev_warn(&adapter->pdev->dev, "clearing Rx timestamp hang\n"); } } --- linux-3.13.0.orig/drivers/net/ethernet/intel/ixgb/ixgb_main.c +++ linux-3.13.0/drivers/net/ethernet/intel/ixgb/ixgb_main.c @@ -1521,12 +1521,12 @@ int tso; if (test_bit(__IXGB_DOWN, &adapter->flags)) { - dev_kfree_skb(skb); + dev_kfree_skb_any(skb); return NETDEV_TX_OK; } if (skb->len <= 0) { - dev_kfree_skb(skb); + dev_kfree_skb_any(skb); return NETDEV_TX_OK; } @@ -1543,7 +1543,7 @@ tso = ixgb_tso(adapter, skb); if (tso < 0) { - dev_kfree_skb(skb); + dev_kfree_skb_any(skb); return NETDEV_TX_OK; } --- linux-3.13.0.orig/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c +++ linux-3.13.0/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c @@ -1208,7 +1208,7 @@ */ hw->eeprom.word_page_size = IXGBE_EEPROM_PAGE_SIZE_MAX - data[0]; - hw_dbg(hw, "Detected EEPROM page size = %d words.", + hw_dbg(hw, "Detected EEPROM page size = %d words.\n", hw->eeprom.word_page_size); out: return status; --- linux-3.13.0.orig/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c +++ linux-3.13.0/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c @@ -1127,10 +1127,10 @@ } do { - start = u64_stats_fetch_begin_bh(&ring->syncp); + start = u64_stats_fetch_begin_irq(&ring->syncp); data[i] = ring->stats.packets; data[i+1] = ring->stats.bytes; - } while (u64_stats_fetch_retry_bh(&ring->syncp, start)); + } while (u64_stats_fetch_retry_irq(&ring->syncp, start)); i += 2; #ifdef BP_EXTENDED_STATS data[i] = ring->stats.yields; @@ -1155,10 +1155,10 @@ } do { - start = u64_stats_fetch_begin_bh(&ring->syncp); + start = u64_stats_fetch_begin_irq(&ring->syncp); data[i] = ring->stats.packets; data[i+1] = ring->stats.bytes; - } while (u64_stats_fetch_retry_bh(&ring->syncp, start)); + } while (u64_stats_fetch_retry_irq(&ring->syncp, start)); i += 2; #ifdef BP_EXTENDED_STATS data[i] = ring->stats.yields; --- linux-3.13.0.orig/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +++ linux-3.13.0/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c @@ -6828,7 +6828,7 @@ } static u16 ixgbe_select_queue(struct net_device *dev, struct sk_buff *skb, - void *accel_priv) + void *accel_priv, select_queue_fallback_t fallback) { struct ixgbe_fwd_adapter *fwd_adapter = accel_priv; #ifdef IXGBE_FCOE @@ -6854,7 +6854,7 @@ if (adapter->flags & IXGBE_FLAG_FCOE_ENABLED) break; default: - return __netdev_pick_tx(dev, skb); + return fallback(dev, skb); } f = &adapter->ring_feature[RING_F_FCOE]; @@ -6867,7 +6867,7 @@ return txq + f->offset; #else - return __netdev_pick_tx(dev, skb); + return fallback(dev, skb); #endif } @@ -7181,10 +7181,10 @@ if (ring) { do { - start = u64_stats_fetch_begin_bh(&ring->syncp); + start = u64_stats_fetch_begin_irq(&ring->syncp); packets = ring->stats.packets; bytes = ring->stats.bytes; - } while (u64_stats_fetch_retry_bh(&ring->syncp, start)); + } while (u64_stats_fetch_retry_irq(&ring->syncp, start)); stats->rx_packets += packets; stats->rx_bytes += bytes; } @@ -7197,10 +7197,10 @@ if (ring) { do { - start = u64_stats_fetch_begin_bh(&ring->syncp); + start = u64_stats_fetch_begin_irq(&ring->syncp); packets = ring->stats.packets; bytes = ring->stats.bytes; - } while (u64_stats_fetch_retry_bh(&ring->syncp, start)); + } while (u64_stats_fetch_retry_irq(&ring->syncp, start)); stats->tx_packets += packets; stats->tx_bytes += bytes; } --- linux-3.13.0.orig/drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c +++ linux-3.13.0/drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c @@ -501,7 +501,7 @@ if (time_out == max_time_out) { status = IXGBE_ERR_LINK_SETUP; - hw_dbg(hw, "ixgbe_setup_phy_link_generic: time out"); + hw_dbg(hw, "ixgbe_setup_phy_link_generic: time out\n"); } return status; @@ -706,7 +706,7 @@ if (time_out == max_time_out) { status = IXGBE_ERR_LINK_SETUP; - hw_dbg(hw, "ixgbe_setup_phy_link_tnx: time out"); + hw_dbg(hw, "ixgbe_setup_phy_link_tnx: time out\n"); } return status; @@ -1132,7 +1132,7 @@ status = 0; } else { if (hw->allow_unsupported_sfp) { - e_warn(drv, "WARNING: Intel (R) Network Connections are quality tested using Intel (R) Ethernet Optics. Using untested modules is not supported and may cause unstable operation or damage to the module or the adapter. Intel Corporation is not responsible for any harm caused by using untested modules."); + e_warn(drv, "WARNING: Intel (R) Network Connections are quality tested using Intel (R) Ethernet Optics. Using untested modules is not supported and may cause unstable operation or damage to the module or the adapter. Intel Corporation is not responsible for any harm caused by using untested modules.\n"); status = 0; } else { hw_dbg(hw, --- linux-3.13.0.orig/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c +++ linux-3.13.0/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c @@ -460,7 +460,7 @@ IXGBE_READ_REG(hw, IXGBE_RXSTMPH); adapter->last_rx_ptp_check = jiffies; - e_warn(drv, "clearing RX Timestamp hang"); + e_warn(drv, "clearing RX Timestamp hang\n"); } } @@ -518,7 +518,7 @@ if (timeout) { dev_kfree_skb_any(adapter->ptp_tx_skb); adapter->ptp_tx_skb = NULL; - e_warn(drv, "clearing Tx Timestamp hang"); + e_warn(drv, "clearing Tx Timestamp hang\n"); return; } --- linux-3.13.0.orig/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c +++ linux-3.13.0/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c @@ -3351,10 +3351,10 @@ for (i = 0; i < adapter->num_rx_queues; i++) { ring = &adapter->rx_ring[i]; do { - start = u64_stats_fetch_begin_bh(&ring->syncp); + start = u64_stats_fetch_begin_irq(&ring->syncp); bytes = ring->total_bytes; packets = ring->total_packets; - } while (u64_stats_fetch_retry_bh(&ring->syncp, start)); + } while (u64_stats_fetch_retry_irq(&ring->syncp, start)); stats->rx_bytes += bytes; stats->rx_packets += packets; } @@ -3362,10 +3362,10 @@ for (i = 0; i < adapter->num_tx_queues; i++) { ring = &adapter->tx_ring[i]; do { - start = u64_stats_fetch_begin_bh(&ring->syncp); + start = u64_stats_fetch_begin_irq(&ring->syncp); bytes = ring->total_bytes; packets = ring->total_packets; - } while (u64_stats_fetch_retry_bh(&ring->syncp, start)); + } while (u64_stats_fetch_retry_irq(&ring->syncp, start)); stats->tx_bytes += bytes; stats->tx_packets += packets; } --- linux-3.13.0.orig/drivers/net/ethernet/lantiq_etop.c +++ linux-3.13.0/drivers/net/ethernet/lantiq_etop.c @@ -620,7 +620,7 @@ static u16 ltq_etop_select_queue(struct net_device *dev, struct sk_buff *skb, - void *accel_priv) + void *accel_priv, select_queue_fallback_t fallback) { /* we are currently only using the first queue */ return 0; --- linux-3.13.0.orig/drivers/net/ethernet/marvell/mvneta.c +++ linux-3.13.0/drivers/net/ethernet/marvell/mvneta.c @@ -32,7 +32,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)) @@ -58,6 +58,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) @@ -101,16 +102,56 @@ #define MVNETA_CPU_RXQ_ACCESS_ALL_MASK 0x000000ff #define MVNETA_CPU_TXQ_ACCESS_ALL_MASK 0x0000ff00 #define MVNETA_RXQ_TIME_COAL_REG(q) (0x2580 + ((q) << 2)) + +/* Exception Interrupt Port/Queue Cause register */ + #define MVNETA_INTR_NEW_CAUSE 0x25a0 -#define MVNETA_RX_INTR_MASK(nr_rxqs) (((1 << nr_rxqs) - 1) << 8) #define MVNETA_INTR_NEW_MASK 0x25a4 + +/* bits 0..7 = TXQ SENT, one bit per queue. + * bits 8..15 = RXQ OCCUP, one bit per queue. + * bits 16..23 = RXQ FREE, one bit per queue. + * bit 29 = OLD_REG_SUM, see old reg ? + * bit 30 = TX_ERR_SUM, one bit for 4 ports + * bit 31 = MISC_SUM, one bit for 4 ports + */ +#define MVNETA_TX_INTR_MASK(nr_txqs) (((1 << nr_txqs) - 1) << 0) +#define MVNETA_TX_INTR_MASK_ALL (0xff << 0) +#define MVNETA_RX_INTR_MASK(nr_rxqs) (((1 << nr_rxqs) - 1) << 8) +#define MVNETA_RX_INTR_MASK_ALL (0xff << 8) + #define MVNETA_INTR_OLD_CAUSE 0x25a8 #define MVNETA_INTR_OLD_MASK 0x25ac + +/* Data Path Port/Queue Cause Register */ #define MVNETA_INTR_MISC_CAUSE 0x25b0 #define MVNETA_INTR_MISC_MASK 0x25b4 + +#define MVNETA_CAUSE_PHY_STATUS_CHANGE BIT(0) +#define MVNETA_CAUSE_LINK_CHANGE BIT(1) +#define MVNETA_CAUSE_PTP BIT(4) + +#define MVNETA_CAUSE_INTERNAL_ADDR_ERR BIT(7) +#define MVNETA_CAUSE_RX_OVERRUN BIT(8) +#define MVNETA_CAUSE_RX_CRC_ERROR BIT(9) +#define MVNETA_CAUSE_RX_LARGE_PKT BIT(10) +#define MVNETA_CAUSE_TX_UNDERUN BIT(11) +#define MVNETA_CAUSE_PRBS_ERR BIT(12) +#define MVNETA_CAUSE_PSC_SYNC_CHANGE BIT(13) +#define MVNETA_CAUSE_SERDES_SYNC_ERR BIT(14) + +#define MVNETA_CAUSE_BMU_ALLOC_ERR_SHIFT 16 +#define MVNETA_CAUSE_BMU_ALLOC_ERR_ALL_MASK (0xF << MVNETA_CAUSE_BMU_ALLOC_ERR_SHIFT) +#define MVNETA_CAUSE_BMU_ALLOC_ERR_MASK(pool) (1 << (MVNETA_CAUSE_BMU_ALLOC_ERR_SHIFT + (pool))) + +#define MVNETA_CAUSE_TXQ_ERROR_SHIFT 24 +#define MVNETA_CAUSE_TXQ_ERROR_ALL_MASK (0xFF << MVNETA_CAUSE_TXQ_ERROR_SHIFT) +#define MVNETA_CAUSE_TXQ_ERROR_MASK(q) (1 << (MVNETA_CAUSE_TXQ_ERROR_SHIFT + (q))) + #define MVNETA_INTR_ENABLE 0x25b8 #define MVNETA_TXQ_INTR_ENABLE_ALL_MASK 0x0000ff00 -#define MVNETA_RXQ_INTR_ENABLE_ALL_MASK 0xff000000 +#define MVNETA_RXQ_INTR_ENABLE_ALL_MASK 0x000000ff + #define MVNETA_RXQ_CMD 0x2680 #define MVNETA_RXQ_DISABLE_SHIFT 8 #define MVNETA_RXQ_ENABLE_MASK 0x000000ff @@ -121,7 +162,7 @@ #define MVNETA_GMAC_MAX_RX_SIZE_MASK 0x7ffc #define MVNETA_GMAC0_PORT_ENABLE BIT(0) #define MVNETA_GMAC_CTRL_2 0x2c08 -#define MVNETA_GMAC2_PSC_ENABLE BIT(3) +#define MVNETA_GMAC2_PCS_ENABLE BIT(3) #define MVNETA_GMAC2_PORT_RGMII BIT(4) #define MVNETA_GMAC2_PORT_RESET BIT(6) #define MVNETA_GMAC_STATUS 0x2c10 @@ -172,13 +213,10 @@ /* Various constants */ /* Coalescing */ -#define MVNETA_TXDONE_COAL_PKTS 16 +#define MVNETA_TXDONE_COAL_PKTS 1 #define MVNETA_RX_COAL_PKTS 32 #define MVNETA_RX_COAL_USEC 100 -/* Timer */ -#define MVNETA_TX_DONE_TIMER_PERIOD 10 - /* Napi polling weight */ #define MVNETA_RX_POLL_WEIGHT 64 @@ -221,10 +259,12 @@ #define MVNETA_RX_BUF_SIZE(pkt_size) ((pkt_size) + NET_SKB_PAD) -struct mvneta_stats { +struct mvneta_pcpu_stats { struct u64_stats_sync syncp; - u64 packets; - u64 bytes; + u64 rx_packets; + u64 rx_bytes; + u64 tx_packets; + u64 tx_bytes; }; struct mvneta_port { @@ -232,16 +272,11 @@ void __iomem *base; struct mvneta_rx_queue *rxqs; struct mvneta_tx_queue *txqs; - struct timer_list tx_done_timer; struct net_device *dev; u32 cause_rx_tx; struct napi_struct napi; - /* Flags */ - unsigned long flags; -#define MVNETA_F_TX_DONE_TIMER_BIT 0 - /* Napi weight */ int weight; @@ -250,8 +285,7 @@ u8 mcast_count[256]; u16 tx_ring_size; u16 rx_ring_size; - struct mvneta_stats tx_stats; - struct mvneta_stats rx_stats; + struct mvneta_pcpu_stats *stats; struct mii_bus *mii_bus; struct phy_device *phy_dev; @@ -260,6 +294,7 @@ unsigned int link; unsigned int duplex; unsigned int speed; + unsigned int tx_csum_limit; }; /* The mvneta_tx_desc and mvneta_rx_desc structures describe the @@ -461,21 +496,29 @@ { struct mvneta_port *pp = netdev_priv(dev); unsigned int start; + int cpu; - memset(stats, 0, sizeof(struct rtnl_link_stats64)); - - do { - start = u64_stats_fetch_begin_bh(&pp->rx_stats.syncp); - stats->rx_packets = pp->rx_stats.packets; - stats->rx_bytes = pp->rx_stats.bytes; - } while (u64_stats_fetch_retry_bh(&pp->rx_stats.syncp, start)); - - - do { - start = u64_stats_fetch_begin_bh(&pp->tx_stats.syncp); - stats->tx_packets = pp->tx_stats.packets; - stats->tx_bytes = pp->tx_stats.bytes; - } while (u64_stats_fetch_retry_bh(&pp->tx_stats.syncp, start)); + for_each_possible_cpu(cpu) { + struct mvneta_pcpu_stats *cpu_stats; + u64 rx_packets; + u64 rx_bytes; + u64 tx_packets; + u64 tx_bytes; + + cpu_stats = per_cpu_ptr(pp->stats, cpu); + do { + start = u64_stats_fetch_begin_irq(&cpu_stats->syncp); + rx_packets = cpu_stats->rx_packets; + rx_bytes = cpu_stats->rx_bytes; + tx_packets = cpu_stats->tx_packets; + tx_bytes = cpu_stats->tx_bytes; + } while (u64_stats_fetch_retry_irq(&cpu_stats->syncp, start)); + + stats->rx_packets += rx_packets; + stats->rx_bytes += rx_bytes; + stats->tx_packets += tx_packets; + stats->tx_bytes += tx_bytes; + } stats->rx_errors = dev->stats.rx_errors; stats->rx_dropped = dev->stats.rx_dropped; @@ -688,7 +731,7 @@ u32 val; val = mvreg_read(pp, MVNETA_GMAC_CTRL_2); - val |= MVNETA_GMAC2_PSC_ENABLE; + val |= MVNETA_GMAC2_PCS_ENABLE; mvreg_write(pp, MVNETA_GMAC_CTRL_2, val); mvreg_write(pp, MVNETA_SGMII_SERDES_CFG, MVNETA_SGMII_SERDES_PROTO); @@ -904,7 +947,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)); @@ -1100,17 +1143,6 @@ txq->done_pkts_coal = value; } -/* Trigger tx done timer in MVNETA_TX_DONE_TIMER_PERIOD msecs */ -static void mvneta_add_tx_done_timer(struct mvneta_port *pp) -{ - if (test_and_set_bit(MVNETA_F_TX_DONE_TIMER_BIT, &pp->flags) == 0) { - pp->tx_done_timer.expires = jiffies + - msecs_to_jiffies(MVNETA_TX_DONE_TIMER_PERIOD); - add_timer(&pp->tx_done_timer); - } -} - - /* Handle rx descriptor fill by setting buf_cookie and buf_phys_addr */ static void mvneta_rx_desc_fill(struct mvneta_rx_desc *rx_desc, u32 phys_addr, u32 cookie) @@ -1182,7 +1214,7 @@ command = l3_offs << MVNETA_TX_L3_OFF_SHIFT; command |= ip_hdr_len << MVNETA_TX_IP_HLEN_SHIFT; - if (l3_proto == swab16(ETH_P_IP)) + if (l3_proto == htons(ETH_P_IP)) command |= MVNETA_TXD_IP_CSUM; else command |= MVNETA_TX_L3_IP6; @@ -1391,6 +1423,8 @@ { struct net_device *dev = pp->dev; int rx_done, rx_filled; + u32 rcvd_pkts = 0; + u32 rcvd_bytes = 0; /* Get number of received packets */ rx_done = mvneta_rxq_busy_desc_num_get(pp, rxq); @@ -1428,10 +1462,8 @@ rx_bytes = rx_desc->data_size - (ETH_FCS_LEN + MVNETA_MH_SIZE); - u64_stats_update_begin(&pp->rx_stats.syncp); - pp->rx_stats.packets++; - pp->rx_stats.bytes += rx_bytes; - u64_stats_update_end(&pp->rx_stats.syncp); + rcvd_pkts++; + rcvd_bytes += rx_bytes; /* Linux processing */ skb_reserve(skb, MVNETA_MH_SIZE); @@ -1452,6 +1484,15 @@ } } + if (rcvd_pkts) { + struct mvneta_pcpu_stats *stats = this_cpu_ptr(pp->stats); + + u64_stats_update_begin(&stats->syncp); + stats->rx_packets += rcvd_pkts; + stats->rx_bytes += rcvd_bytes; + u64_stats_update_end(&stats->syncp); + } + /* Update rxq management counters */ mvneta_rxq_desc_num_update(pp, rxq, rx_done, rx_filled); @@ -1523,6 +1564,7 @@ u16 txq_id = skb_get_queue_mapping(skb); struct mvneta_tx_queue *txq = &pp->txqs[txq_id]; struct mvneta_tx_desc *tx_desc; + int len = skb->len; struct netdev_queue *nq; int frags = 0; u32 tx_cmd; @@ -1582,25 +1624,17 @@ out: if (frags > 0) { - u64_stats_update_begin(&pp->tx_stats.syncp); - pp->tx_stats.packets++; - pp->tx_stats.bytes += skb->len; - u64_stats_update_end(&pp->tx_stats.syncp); + struct mvneta_pcpu_stats *stats = this_cpu_ptr(pp->stats); + u64_stats_update_begin(&stats->syncp); + stats->tx_packets++; + stats->tx_bytes += len; + u64_stats_update_end(&stats->syncp); } else { dev->stats.tx_dropped++; dev_kfree_skb_any(skb); } - if (txq->count >= MVNETA_TXDONE_COAL_PKTS) - mvneta_txq_done(pp, txq); - - /* If after calling mvneta_txq_done, count equals - * frags, we need to set the timer - */ - if (txq->count == frags && frags > 0) - mvneta_add_tx_done_timer(pp); - return NETDEV_TX_OK; } @@ -1876,14 +1910,22 @@ /* Read cause register */ cause_rx_tx = mvreg_read(pp, MVNETA_INTR_NEW_CAUSE) & - MVNETA_RX_INTR_MASK(rxq_number); + (MVNETA_RX_INTR_MASK(rxq_number) | MVNETA_TX_INTR_MASK(txq_number)); + + /* Release Tx descriptors */ + if (cause_rx_tx & MVNETA_TX_INTR_MASK_ALL) { + int tx_todo = 0; + + mvneta_tx_done_gbe(pp, (cause_rx_tx & MVNETA_TX_INTR_MASK_ALL), &tx_todo); + cause_rx_tx &= ~MVNETA_TX_INTR_MASK_ALL; + } /* For the case where the last mvneta_poll did not process all * RX packets */ cause_rx_tx |= pp->cause_rx_tx; if (rxq_number > 1) { - while ((cause_rx_tx != 0) && (budget > 0)) { + while ((cause_rx_tx & MVNETA_RX_INTR_MASK_ALL) && (budget > 0)) { int count; struct mvneta_rx_queue *rxq; /* get rx queue number from cause_rx_tx */ @@ -1915,7 +1957,7 @@ napi_complete(napi); local_irq_save(flags); mvreg_write(pp, MVNETA_INTR_NEW_MASK, - MVNETA_RX_INTR_MASK(rxq_number)); + MVNETA_RX_INTR_MASK(rxq_number) | MVNETA_TX_INTR_MASK(txq_number)); local_irq_restore(flags); } @@ -1923,26 +1965,6 @@ return rx_done; } -/* tx done timer callback */ -static void mvneta_tx_done_timer_callback(unsigned long data) -{ - struct net_device *dev = (struct net_device *)data; - struct mvneta_port *pp = netdev_priv(dev); - int tx_done = 0, tx_todo = 0; - - if (!netif_running(dev)) - return ; - - clear_bit(MVNETA_F_TX_DONE_TIMER_BIT, &pp->flags); - - tx_done = mvneta_tx_done_gbe(pp, - (((1 << txq_number) - 1) & - MVNETA_CAUSE_TXQ_SENT_DESC_ALL_MASK), - &tx_todo); - if (tx_todo > 0) - mvneta_add_tx_done_timer(pp); -} - /* Handle rxq fill: allocates rxq skbs; called when initializing a port */ static int mvneta_rxq_fill(struct mvneta_port *pp, struct mvneta_rx_queue *rxq, int num) @@ -2192,7 +2214,7 @@ /* Unmask interrupts */ mvreg_write(pp, MVNETA_INTR_NEW_MASK, - MVNETA_RX_INTR_MASK(rxq_number)); + MVNETA_RX_INTR_MASK(rxq_number) | MVNETA_TX_INTR_MASK(txq_number)); phy_start(pp->phy_dev); netif_tx_start_all_queues(pp->dev); @@ -2225,16 +2247,6 @@ mvneta_rx_reset(pp); } -/* tx timeout callback - display a message and stop/start the network device */ -static void mvneta_tx_timeout(struct net_device *dev) -{ - struct mvneta_port *pp = netdev_priv(dev); - - netdev_info(dev, "tx timeout\n"); - mvneta_stop_dev(pp); - mvneta_start_dev(pp); -} - /* Return positive if MTU is valid */ static int mvneta_check_mtu_valid(struct net_device *dev, int mtu) { @@ -2270,8 +2282,10 @@ dev->mtu = mtu; - if (!netif_running(dev)) + if (!netif_running(dev)) { + netdev_update_features(dev); return 0; + } /* The interface is running, so we have to force a * reallocation of the RXQs @@ -2294,9 +2308,26 @@ mvneta_start_dev(pp); mvneta_port_up(pp); + netdev_update_features(dev); + return 0; } +static netdev_features_t mvneta_fix_features(struct net_device *dev, + netdev_features_t features) +{ + struct mvneta_port *pp = netdev_priv(dev); + + if (pp->tx_csum_limit && dev->mtu > pp->tx_csum_limit) { + features &= ~(NETIF_F_IP_CSUM | NETIF_F_TSO); + netdev_info(dev, + "Disable IP checksum for MTU greater than %dB\n", + pp->tx_csum_limit); + } + + return features; +} + /* Get mac address */ static void mvneta_get_mac_addr(struct mvneta_port *pp, unsigned char *addr) { @@ -2358,7 +2389,7 @@ if (phydev->speed == SPEED_1000) val |= MVNETA_GMAC_CONFIG_GMII_SPEED; - else + else if (phydev->speed == SPEED_100) val |= MVNETA_GMAC_CONFIG_MII_SPEED; mvreg_write(pp, MVNETA_GMAC_AUTONEG_CONFIG, val); @@ -2478,8 +2509,6 @@ free_irq(dev->irq, pp); mvneta_cleanup_rxqs(pp); mvneta_cleanup_txqs(pp); - del_timer(&pp->tx_done_timer); - clear_bit(MVNETA_F_TX_DONE_TIMER_BIT, &pp->flags); return 0; } @@ -2615,7 +2644,7 @@ .ndo_set_rx_mode = mvneta_set_rx_mode, .ndo_set_mac_address = mvneta_set_mac_addr, .ndo_change_mtu = mvneta_change_mtu, - .ndo_tx_timeout = mvneta_tx_timeout, + .ndo_fix_features = mvneta_fix_features, .ndo_get_stats64 = mvneta_get_stats64, .ndo_do_ioctl = mvneta_ioctl, }; @@ -2712,6 +2741,7 @@ } mvreg_write(pp, MVNETA_BASE_ADDR_ENABLE, win_enable); + mvreg_write(pp, MVNETA_ACCESS_PROTECT_ENABLE, win_protect); } /* Power up the port */ @@ -2751,6 +2781,7 @@ const char *mac_from; int phy_mode; int err; + int cpu; /* Our multiqueue support is not complete, so for now, only * allow the usage of the first RX queue @@ -2792,9 +2823,6 @@ pp = netdev_priv(dev); - u64_stats_init(&pp->tx_stats.syncp); - u64_stats_init(&pp->rx_stats.syncp); - pp->weight = MVNETA_RX_POLL_WEIGHT; pp->phy_node = phy_node; pp->phy_interface = phy_mode; @@ -2813,6 +2841,19 @@ goto err_clk; } + /* Alloc per-cpu stats */ + pp->stats = alloc_percpu(struct mvneta_pcpu_stats); + if (!pp->stats) { + err = -ENOMEM; + goto err_unmap; + } + + for_each_possible_cpu(cpu) { + struct mvneta_pcpu_stats *stats; + stats = per_cpu_ptr(pp->stats, cpu); + u64_stats_init(&stats->syncp); + } + dt_mac_addr = of_get_mac_address(dn); if (dt_mac_addr) { mac_from = "device tree"; @@ -2828,10 +2869,8 @@ } } - pp->tx_done_timer.data = (unsigned long)dev; - pp->tx_done_timer.function = mvneta_tx_done_timer_callback; - init_timer(&pp->tx_done_timer); - clear_bit(MVNETA_F_TX_DONE_TIMER_BIT, &pp->flags); + if (of_device_is_compatible(dn, "marvell,armada-370-neta")) + pp->tx_csum_limit = 1600; pp->tx_ring_size = MVNETA_MAX_TXD; pp->rx_ring_size = MVNETA_MAX_RXD; @@ -2842,7 +2881,7 @@ err = mvneta_init(pp, phy_addr); if (err < 0) { dev_err(&pdev->dev, "can't init eth hal\n"); - goto err_unmap; + goto err_free_stats; } mvneta_port_power_up(pp, phy_mode); @@ -2855,7 +2894,7 @@ dev->features = NETIF_F_SG | NETIF_F_IP_CSUM; dev->hw_features |= NETIF_F_SG | NETIF_F_IP_CSUM; dev->vlan_features |= NETIF_F_SG | NETIF_F_IP_CSUM; - dev->priv_flags |= IFF_UNICAST_FLT; + dev->priv_flags |= IFF_UNICAST_FLT | IFF_LIVE_ADDR_CHANGE; err = register_netdev(dev); if (err < 0) { @@ -2872,6 +2911,8 @@ err_deinit: mvneta_deinit(pp); +err_free_stats: + free_percpu(pp->stats); err_unmap: iounmap(pp->base); err_clk: @@ -2892,6 +2933,7 @@ unregister_netdev(dev); mvneta_deinit(pp); clk_disable_unprepare(pp->clk); + free_percpu(pp->stats); iounmap(pp->base); irq_dispose_mapping(dev->irq); free_netdev(dev); @@ -2901,6 +2943,7 @@ static const struct of_device_id mvneta_match[] = { { .compatible = "marvell,armada-370-neta" }, + { .compatible = "marvell,armada-xp-neta" }, { } }; MODULE_DEVICE_TABLE(of, mvneta_match); --- linux-3.13.0.orig/drivers/net/ethernet/marvell/sky2.c +++ linux-3.13.0/drivers/net/ethernet/marvell/sky2.c @@ -3906,19 +3906,19 @@ u64 _bytes, _packets; do { - start = u64_stats_fetch_begin_bh(&sky2->rx_stats.syncp); + start = u64_stats_fetch_begin_irq(&sky2->rx_stats.syncp); _bytes = sky2->rx_stats.bytes; _packets = sky2->rx_stats.packets; - } while (u64_stats_fetch_retry_bh(&sky2->rx_stats.syncp, start)); + } while (u64_stats_fetch_retry_irq(&sky2->rx_stats.syncp, start)); stats->rx_packets = _packets; stats->rx_bytes = _bytes; do { - start = u64_stats_fetch_begin_bh(&sky2->tx_stats.syncp); + start = u64_stats_fetch_begin_irq(&sky2->tx_stats.syncp); _bytes = sky2->tx_stats.bytes; _packets = sky2->tx_stats.packets; - } while (u64_stats_fetch_retry_bh(&sky2->tx_stats.syncp, start)); + } while (u64_stats_fetch_retry_irq(&sky2->tx_stats.syncp, start)); stats->tx_packets = _packets; stats->tx_bytes = _bytes; --- linux-3.13.0.orig/drivers/net/ethernet/mellanox/mlx4/Kconfig +++ linux-3.13.0/drivers/net/ethernet/mellanox/mlx4/Kconfig @@ -3,9 +3,10 @@ # config MLX4_EN - tristate "Mellanox Technologies 10Gbit Ethernet support" + tristate "Mellanox Technologies 1/10/40Gbit Ethernet support" depends on PCI select MLX4_CORE + select PTP_1588_CLOCK ---help--- This driver supports Mellanox Technologies ConnectX Ethernet devices. @@ -22,6 +23,13 @@ If unsure, set to Y +config MLX4_EN_VXLAN + bool "VXLAN offloads Support" + default y + depends on MLX4_EN && VXLAN && !(MLX4_EN=y && VXLAN=m) + ---help--- + Say Y here if you want to use VXLAN offloads in the driver. + config MLX4_CORE tristate depends on PCI --- linux-3.13.0.orig/drivers/net/ethernet/mellanox/mlx4/alloc.c +++ linux-3.13.0/drivers/net/ethernet/mellanox/mlx4/alloc.c @@ -71,9 +71,9 @@ return obj; } -void mlx4_bitmap_free(struct mlx4_bitmap *bitmap, u32 obj) +void mlx4_bitmap_free(struct mlx4_bitmap *bitmap, u32 obj, int use_rr) { - mlx4_bitmap_free_range(bitmap, obj, 1); + mlx4_bitmap_free_range(bitmap, obj, 1, use_rr); } u32 mlx4_bitmap_alloc_range(struct mlx4_bitmap *bitmap, int cnt, int align) @@ -118,11 +118,17 @@ return bitmap->avail; } -void mlx4_bitmap_free_range(struct mlx4_bitmap *bitmap, u32 obj, int cnt) +void mlx4_bitmap_free_range(struct mlx4_bitmap *bitmap, u32 obj, int cnt, + int use_rr) { obj &= bitmap->max + bitmap->reserved_top - 1; spin_lock(&bitmap->lock); + if (!use_rr) { + bitmap->last = min(bitmap->last, obj); + bitmap->top = (bitmap->top + bitmap->max + bitmap->reserved_top) + & bitmap->mask; + } bitmap_clear(bitmap->table, obj, cnt); bitmap->avail += cnt; spin_unlock(&bitmap->lock); --- linux-3.13.0.orig/drivers/net/ethernet/mellanox/mlx4/cmd.c +++ linux-3.13.0/drivers/net/ethernet/mellanox/mlx4/cmd.c @@ -800,16 +800,7 @@ vhcr->op, MLX4_CMD_TIME_CLASS_C, MLX4_CMD_NATIVE); } -static int MLX4_CMD_UPDATE_QP_wrapper(struct mlx4_dev *dev, int slave, - struct mlx4_vhcr *vhcr, - struct mlx4_cmd_mailbox *inbox, - struct mlx4_cmd_mailbox *outbox, - struct mlx4_cmd_info *cmd) -{ - return -EPERM; -} - -static int MLX4_CMD_GET_OP_REQ_wrapper(struct mlx4_dev *dev, int slave, +static int mlx4_CMD_EPERM_wrapper(struct mlx4_dev *dev, int slave, struct mlx4_vhcr *vhcr, struct mlx4_cmd_mailbox *inbox, struct mlx4_cmd_mailbox *outbox, @@ -964,6 +955,15 @@ .wrapper = NULL }, { + .opcode = MLX4_CMD_CONFIG_DEV, + .has_inbox = false, + .has_outbox = false, + .out_is_imm = false, + .encode_slave_id = false, + .verify = NULL, + .wrapper = mlx4_CMD_EPERM_wrapper + }, + { .opcode = MLX4_CMD_ALLOC_RES, .has_inbox = false, .has_outbox = false, @@ -1253,12 +1253,12 @@ }, { .opcode = MLX4_CMD_UPDATE_QP, - .has_inbox = false, + .has_inbox = true, .has_outbox = false, .out_is_imm = false, .encode_slave_id = false, .verify = NULL, - .wrapper = MLX4_CMD_UPDATE_QP_wrapper + .wrapper = mlx4_UPDATE_QP_wrapper }, { .opcode = MLX4_CMD_GET_OP_REQ, @@ -1267,7 +1267,7 @@ .out_is_imm = false, .encode_slave_id = false, .verify = NULL, - .wrapper = MLX4_CMD_GET_OP_REQ_wrapper, + .wrapper = mlx4_CMD_EPERM_wrapper, }, { .opcode = MLX4_CMD_CONF_SPECIAL_QP, @@ -1296,6 +1296,15 @@ .verify = NULL, .wrapper = mlx4_QUERY_IF_STAT_wrapper }, + { + .opcode = MLX4_CMD_ACCESS_REG, + .has_inbox = true, + .has_outbox = true, + .out_is_imm = false, + .encode_slave_id = false, + .verify = NULL, + .wrapper = mlx4_ACCESS_REG_wrapper, + }, /* Native multicast commands are not available for guests */ { .opcode = MLX4_CMD_QP_ATTACH, @@ -1371,6 +1380,15 @@ .verify = NULL, .wrapper = mlx4_QP_FLOW_STEERING_DETACH_wrapper }, + { + .opcode = MLX4_FLOW_STEERING_IB_UC_QP_RANGE, + .has_inbox = false, + .has_outbox = false, + .out_is_imm = false, + .encode_slave_id = false, + .verify = NULL, + .wrapper = mlx4_CMD_EPERM_wrapper + }, }; static int mlx4_master_process_vhcr(struct mlx4_dev *dev, int slave, @@ -1634,8 +1652,16 @@ int port, err; struct mlx4_vport_state *vp_admin; struct mlx4_vport_oper_state *vp_oper; - - for (port = 1; port <= MLX4_MAX_PORTS; port++) { + struct mlx4_active_ports actv_ports = mlx4_get_active_ports( + &priv->dev, slave); + int min_port = find_first_bit(actv_ports.ports, + priv->dev.caps.num_ports) + 1; + int max_port = min_port - 1 + + bitmap_weight(actv_ports.ports, priv->dev.caps.num_ports); + + for (port = min_port; port <= max_port; port++) { + if (!test_bit(port - 1, actv_ports.ports)) + continue; vp_oper = &priv->mfunc.master.vf_oper[slave].vport[port]; vp_admin = &priv->mfunc.master.vf_admin[slave].vport[port]; vp_oper->state = *vp_admin; @@ -1676,8 +1702,17 @@ { int port; struct mlx4_vport_oper_state *vp_oper; + struct mlx4_active_ports actv_ports = mlx4_get_active_ports( + &priv->dev, slave); + int min_port = find_first_bit(actv_ports.ports, + priv->dev.caps.num_ports) + 1; + int max_port = min_port - 1 + + bitmap_weight(actv_ports.ports, priv->dev.caps.num_ports); + - for (port = 1; port <= MLX4_MAX_PORTS; port++) { + for (port = min_port; port <= max_port; port++) { + if (!test_bit(port - 1, actv_ports.ports)) + continue; vp_oper = &priv->mfunc.master.vf_oper[slave].vport[port]; if (NO_INDX != vp_oper->vlan_idx) { __mlx4_unregister_vlan(&priv->dev, @@ -1978,7 +2013,7 @@ spin_lock_init(&s_state->lock); } - 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); @@ -2225,6 +2260,112 @@ return vf+1; } +int mlx4_get_vf_indx(struct mlx4_dev *dev, int slave) +{ + if (slave < 1 || slave > dev->num_vfs) { + mlx4_err(dev, + "Bad slave number:%d (number of activated slaves: %lu)\n", + slave, dev->num_slaves); + return -EINVAL; + } + return slave - 1; +} + +struct mlx4_active_ports mlx4_get_active_ports(struct mlx4_dev *dev, int slave) +{ + struct mlx4_active_ports actv_ports; + int vf; + + bitmap_zero(actv_ports.ports, MLX4_MAX_PORTS); + + if (slave == 0) { + bitmap_fill(actv_ports.ports, dev->caps.num_ports); + return actv_ports; + } + + vf = mlx4_get_vf_indx(dev, slave); + if (vf < 0) + return actv_ports; + + bitmap_set(actv_ports.ports, dev->dev_vfs[vf].min_port - 1, + min((int)dev->dev_vfs[mlx4_get_vf_indx(dev, slave)].n_ports, + dev->caps.num_ports)); + + return actv_ports; +} +EXPORT_SYMBOL_GPL(mlx4_get_active_ports); + +int mlx4_slave_convert_port(struct mlx4_dev *dev, int slave, int port) +{ + unsigned n; + struct mlx4_active_ports actv_ports = mlx4_get_active_ports(dev, slave); + unsigned m = bitmap_weight(actv_ports.ports, dev->caps.num_ports); + + if (port <= 0 || port > m) + return -EINVAL; + + n = find_first_bit(actv_ports.ports, dev->caps.num_ports); + if (port <= n) + port = n + 1; + + return port; +} +EXPORT_SYMBOL_GPL(mlx4_slave_convert_port); + +int mlx4_phys_to_slave_port(struct mlx4_dev *dev, int slave, int port) +{ + struct mlx4_active_ports actv_ports = mlx4_get_active_ports(dev, slave); + if (test_bit(port - 1, actv_ports.ports)) + return port - + find_first_bit(actv_ports.ports, dev->caps.num_ports); + + return -1; +} +EXPORT_SYMBOL_GPL(mlx4_phys_to_slave_port); + +struct mlx4_slaves_pport mlx4_phys_to_slaves_pport(struct mlx4_dev *dev, + int port) +{ + unsigned i; + struct mlx4_slaves_pport slaves_pport; + + bitmap_zero(slaves_pport.slaves, MLX4_MFUNC_MAX); + + if (port <= 0 || port > dev->caps.num_ports) + return slaves_pport; + + for (i = 0; i < dev->num_vfs + 1; i++) { + struct mlx4_active_ports actv_ports = + mlx4_get_active_ports(dev, i); + if (test_bit(port - 1, actv_ports.ports)) + set_bit(i, slaves_pport.slaves); + } + + return slaves_pport; +} +EXPORT_SYMBOL_GPL(mlx4_phys_to_slaves_pport); + +struct mlx4_slaves_pport mlx4_phys_to_slaves_pport_actv( + struct mlx4_dev *dev, + const struct mlx4_active_ports *crit_ports) +{ + unsigned i; + struct mlx4_slaves_pport slaves_pport; + + bitmap_zero(slaves_pport.slaves, MLX4_MFUNC_MAX); + + for (i = 0; i < dev->num_vfs + 1; i++) { + struct mlx4_active_ports actv_ports = + mlx4_get_active_ports(dev, i); + if (bitmap_equal(crit_ports->ports, actv_ports.ports, + dev->caps.num_ports)) + set_bit(i, slaves_pport.slaves); + } + + return slaves_pport; +} +EXPORT_SYMBOL_GPL(mlx4_phys_to_slaves_pport_actv); + int mlx4_set_vf_mac(struct mlx4_dev *dev, int port, int vf, u64 mac) { struct mlx4_priv *priv = mlx4_priv(dev); @@ -2280,6 +2421,30 @@ } EXPORT_SYMBOL_GPL(mlx4_set_vf_vlan); + /* mlx4_get_slave_default_vlan - + * return true if VST ( default vlan) + * if VST, will return vlan & qos (if not NULL) + */ +bool mlx4_get_slave_default_vlan(struct mlx4_dev *dev, int port, int slave, + u16 *vlan, u8 *qos) +{ + struct mlx4_vport_oper_state *vp_oper; + struct mlx4_priv *priv; + + priv = mlx4_priv(dev); + vp_oper = &priv->mfunc.master.vf_oper[slave].vport[port]; + + if (MLX4_VGT != vp_oper->state.default_vlan) { + if (vlan) + *vlan = vp_oper->state.default_vlan; + if (qos) + *qos = vp_oper->state.default_qos; + return true; + } + return false; +} +EXPORT_SYMBOL_GPL(mlx4_get_slave_default_vlan); + int mlx4_set_vf_spoofchk(struct mlx4_dev *dev, int port, int vf, bool setting) { struct mlx4_priv *priv = mlx4_priv(dev); --- linux-3.13.0.orig/drivers/net/ethernet/mellanox/mlx4/cq.c +++ linux-3.13.0/drivers/net/ethernet/mellanox/mlx4/cq.c @@ -187,7 +187,7 @@ mlx4_table_put(dev, &cq_table->table, *cqn); err_out: - mlx4_bitmap_free(&cq_table->bitmap, *cqn); + mlx4_bitmap_free(&cq_table->bitmap, *cqn, MLX4_NO_RR); return err; } @@ -217,7 +217,7 @@ mlx4_table_put(dev, &cq_table->cmpt_table, cqn); mlx4_table_put(dev, &cq_table->table, cqn); - mlx4_bitmap_free(&cq_table->bitmap, cqn); + mlx4_bitmap_free(&cq_table->bitmap, cqn, MLX4_NO_RR); } static void mlx4_cq_free_icm(struct mlx4_dev *dev, int cqn) @@ -294,6 +294,7 @@ atomic_set(&cq->refcount, 1); init_completion(&cq->free); + cq->irq = priv->eq_table.eq[cq->vector].irq; return 0; err_radix: --- linux-3.13.0.orig/drivers/net/ethernet/mellanox/mlx4/en_clock.c +++ linux-3.13.0/drivers/net/ethernet/mellanox/mlx4/en_clock.c @@ -35,48 +35,6 @@ #include "mlx4_en.h" -int mlx4_en_timestamp_config(struct net_device *dev, int tx_type, int rx_filter) -{ - struct mlx4_en_priv *priv = netdev_priv(dev); - struct mlx4_en_dev *mdev = priv->mdev; - int port_up = 0; - int err = 0; - - mutex_lock(&mdev->state_lock); - if (priv->port_up) { - port_up = 1; - mlx4_en_stop_port(dev, 1); - } - - mlx4_en_free_resources(priv); - - en_warn(priv, "Changing Time Stamp configuration\n"); - - priv->hwtstamp_config.tx_type = tx_type; - priv->hwtstamp_config.rx_filter = rx_filter; - - if (rx_filter != HWTSTAMP_FILTER_NONE) - dev->features &= ~NETIF_F_HW_VLAN_CTAG_RX; - else - dev->features |= NETIF_F_HW_VLAN_CTAG_RX; - - err = mlx4_en_alloc_resources(priv); - if (err) { - en_err(priv, "Failed reallocating port resources\n"); - goto out; - } - if (port_up) { - err = mlx4_en_start_port(dev); - if (err) - en_err(priv, "Failed starting port\n"); - } - -out: - mutex_unlock(&mdev->state_lock); - netdev_features_change(dev); - return err; -} - /* mlx4_en_read_clock - read raw cycle counter (to be used by time counter) */ static cycle_t mlx4_en_read_clock(const struct cyclecounter *tc) @@ -103,33 +61,228 @@ struct skb_shared_hwtstamps *hwts, u64 timestamp) { + unsigned long flags; u64 nsec; + read_lock_irqsave(&mdev->clock_lock, flags); nsec = timecounter_cyc2time(&mdev->clock, timestamp); + read_unlock_irqrestore(&mdev->clock_lock, flags); memset(hwts, 0, sizeof(struct skb_shared_hwtstamps)); hwts->hwtstamp = ns_to_ktime(nsec); } +/** + * mlx4_en_remove_timestamp - disable PTP device + * @mdev: board private structure + * + * Stop the PTP support. + **/ +void mlx4_en_remove_timestamp(struct mlx4_en_dev *mdev) +{ + if (mdev->ptp_clock) { + ptp_clock_unregister(mdev->ptp_clock); + mdev->ptp_clock = NULL; + mlx4_info(mdev, "removed PHC\n"); + } +} + +void mlx4_en_ptp_overflow_check(struct mlx4_en_dev *mdev) +{ + bool timeout = time_is_before_jiffies(mdev->last_overflow_check + + mdev->overflow_period); + unsigned long flags; + + if (timeout) { + write_lock_irqsave(&mdev->clock_lock, flags); + timecounter_read(&mdev->clock); + write_unlock_irqrestore(&mdev->clock_lock, flags); + mdev->last_overflow_check = jiffies; + } +} + +/** + * mlx4_en_phc_adjfreq - adjust the frequency of the hardware clock + * @ptp: ptp clock structure + * @delta: Desired frequency change in parts per billion + * + * Adjust the frequency of the PHC cycle counter by the indicated delta from + * the base frequency. + **/ +static int mlx4_en_phc_adjfreq(struct ptp_clock_info *ptp, s32 delta) +{ + u64 adj; + u32 diff, mult; + int neg_adj = 0; + unsigned long flags; + struct mlx4_en_dev *mdev = container_of(ptp, struct mlx4_en_dev, + ptp_clock_info); + + if (delta < 0) { + neg_adj = 1; + delta = -delta; + } + mult = mdev->nominal_c_mult; + adj = mult; + adj *= delta; + diff = div_u64(adj, 1000000000ULL); + + write_lock_irqsave(&mdev->clock_lock, flags); + timecounter_read(&mdev->clock); + mdev->cycles.mult = neg_adj ? mult - diff : mult + diff; + write_unlock_irqrestore(&mdev->clock_lock, flags); + + return 0; +} + +/** + * mlx4_en_phc_adjtime - Shift the time of the hardware clock + * @ptp: ptp clock structure + * @delta: Desired change in nanoseconds + * + * Adjust the timer by resetting the timecounter structure. + **/ +static int mlx4_en_phc_adjtime(struct ptp_clock_info *ptp, s64 delta) +{ + struct mlx4_en_dev *mdev = container_of(ptp, struct mlx4_en_dev, + ptp_clock_info); + unsigned long flags; + s64 now; + + write_lock_irqsave(&mdev->clock_lock, flags); + now = timecounter_read(&mdev->clock); + now += delta; + timecounter_init(&mdev->clock, &mdev->cycles, now); + write_unlock_irqrestore(&mdev->clock_lock, flags); + + return 0; +} + +/** + * mlx4_en_phc_gettime - Reads the current time from the hardware clock + * @ptp: ptp clock structure + * @ts: timespec structure to hold the current time value + * + * Read the timecounter and return the correct value in ns after converting + * it into a struct timespec. + **/ +static int mlx4_en_phc_gettime(struct ptp_clock_info *ptp, struct timespec *ts) +{ + struct mlx4_en_dev *mdev = container_of(ptp, struct mlx4_en_dev, + ptp_clock_info); + unsigned long flags; + u32 remainder; + u64 ns; + + write_lock_irqsave(&mdev->clock_lock, flags); + ns = timecounter_read(&mdev->clock); + write_unlock_irqrestore(&mdev->clock_lock, flags); + + ts->tv_sec = div_u64_rem(ns, NSEC_PER_SEC, &remainder); + ts->tv_nsec = remainder; + + return 0; +} + +/** + * mlx4_en_phc_settime - Set the current time on the hardware clock + * @ptp: ptp clock structure + * @ts: timespec containing the new time for the cycle counter + * + * Reset the timecounter to use a new base value instead of the kernel + * wall timer value. + **/ +static int mlx4_en_phc_settime(struct ptp_clock_info *ptp, + const struct timespec *ts) +{ + struct mlx4_en_dev *mdev = container_of(ptp, struct mlx4_en_dev, + ptp_clock_info); + u64 ns = timespec_to_ns(ts); + unsigned long flags; + + /* reset the timecounter */ + write_lock_irqsave(&mdev->clock_lock, flags); + timecounter_init(&mdev->clock, &mdev->cycles, ns); + write_unlock_irqrestore(&mdev->clock_lock, flags); + + return 0; +} + +/** + * mlx4_en_phc_enable - enable or disable an ancillary feature + * @ptp: ptp clock structure + * @request: Desired resource to enable or disable + * @on: Caller passes one to enable or zero to disable + * + * Enable (or disable) ancillary features of the PHC subsystem. + * Currently, no ancillary features are supported. + **/ +static int mlx4_en_phc_enable(struct ptp_clock_info __always_unused *ptp, + struct ptp_clock_request __always_unused *request, + int __always_unused on) +{ + return -EOPNOTSUPP; +} + +static const struct ptp_clock_info mlx4_en_ptp_clock_info = { + .owner = THIS_MODULE, + .max_adj = 100000000, + .n_alarm = 0, + .n_ext_ts = 0, + .n_per_out = 0, + .pps = 0, + .adjfreq = mlx4_en_phc_adjfreq, + .adjtime = mlx4_en_phc_adjtime, + .gettime = mlx4_en_phc_gettime, + .settime = mlx4_en_phc_settime, + .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; + /* 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; + write_lock_irqsave(&mdev->clock_lock, flags); timecounter_init(&mdev->clock, &mdev->cycles, ktime_to_ns(ktime_get_real())); + write_unlock_irqrestore(&mdev->clock_lock, flags); /* Calculate period in seconds to call the overflow watchdog - to make * sure counter is checked at least once every wrap around. @@ -137,15 +290,18 @@ ns = cyclecounter_cyc2ns(&mdev->cycles, mdev->cycles.mask); do_div(ns, NSEC_PER_SEC / 2 / HZ); mdev->overflow_period = ns; -} -void mlx4_en_ptp_overflow_check(struct mlx4_en_dev *mdev) -{ - bool timeout = time_is_before_jiffies(mdev->last_overflow_check + - mdev->overflow_period); - - if (timeout) { - timecounter_read(&mdev->clock); - mdev->last_overflow_check = jiffies; + /* Configure the PHC */ + mdev->ptp_clock_info = mlx4_en_ptp_clock_info; + snprintf(mdev->ptp_clock_info.name, 16, "mlx4 ptp"); + + mdev->ptp_clock = ptp_clock_register(&mdev->ptp_clock_info, + &mdev->pdev->dev); + if (IS_ERR(mdev->ptp_clock)) { + mdev->ptp_clock = NULL; + mlx4_err(mdev, "ptp_clock_register failed\n"); + } else { + mlx4_info(mdev, "registered PHC clock\n"); } + } --- linux-3.13.0.orig/drivers/net/ethernet/mellanox/mlx4/en_cq.c +++ linux-3.13.0/drivers/net/ethernet/mellanox/mlx4/en_cq.c @@ -31,6 +31,7 @@ * */ +#include #include #include #include @@ -66,7 +67,6 @@ cq->ring = ring; cq->is_tx = mode; - spin_lock_init(&cq->lock); /* Allocate HW buffers on provided NUMA node. * dev->numa_node is used in mtt range allocation flow. @@ -130,11 +130,16 @@ "%s ,Falling back to legacy EQ's\n", name); } + } } else { cq->vector = (cq->ring + 1 + priv->port) % mdev->dev->caps.num_comp_vectors; } + + cq->irq_desc = + irq_to_desc(mlx4_eq_get_irq(mdev->dev, + cq->vector)); } else { /* For TX we use the same irq per ring we assigned for the RX */ @@ -161,12 +166,23 @@ cq->mcq.comp = cq->is_tx ? mlx4_en_tx_irq : mlx4_en_rx_irq; cq->mcq.event = mlx4_en_cq_event; - if (!cq->is_tx) { + if (cq->is_tx) { + netif_napi_add(cq->dev, &cq->napi, mlx4_en_poll_tx_cq, + NAPI_POLL_WEIGHT); + } else { + struct mlx4_en_rx_ring *ring = priv->rx_ring[cq->ring]; + + err = irq_set_affinity_hint(cq->mcq.irq, + ring->affinity_mask); + if (err) + mlx4_warn(mdev, "Failed setting affinity hint\n"); + netif_napi_add(cq->dev, &cq->napi, mlx4_en_poll_rx_cq, 64); napi_hash_add(&cq->napi); - napi_enable(&cq->napi); } + napi_enable(&cq->napi); + return 0; } @@ -177,8 +193,9 @@ mlx4_en_unmap_buffer(&cq->wqres.buf); mlx4_free_hwq_res(mdev->dev, &cq->wqres, cq->buf_size); - if (priv->mdev->dev->caps.comp_pool && cq->vector) + if (priv->mdev->dev->caps.comp_pool && cq->vector) { mlx4_release_eq(priv->mdev->dev, cq->vector); + } cq->vector = 0; cq->buf_size = 0; cq->buf = NULL; @@ -188,12 +205,13 @@ void mlx4_en_deactivate_cq(struct mlx4_en_priv *priv, struct mlx4_en_cq *cq) { + napi_disable(&cq->napi); if (!cq->is_tx) { - napi_disable(&cq->napi); napi_hash_del(&cq->napi); synchronize_rcu(); - netif_napi_del(&cq->napi); + irq_set_affinity_hint(cq->mcq.irq, NULL); } + netif_napi_del(&cq->napi); mlx4_cq_free(priv->mdev->dev, &cq->mcq); } --- linux-3.13.0.orig/drivers/net/ethernet/mellanox/mlx4/en_dcb_nl.c +++ linux-3.13.0/drivers/net/ethernet/mellanox/mlx4/en_dcb_nl.c @@ -62,7 +62,7 @@ int has_ets_tc = 0; for (i = 0; i < IEEE_8021QAZ_MAX_TCS; i++) { - if (ets->prio_tc[i] > MLX4_EN_NUM_UP) { + if (ets->prio_tc[i] >= MLX4_EN_NUM_UP) { en_err(priv, "Bad priority in UP <=> TC mapping. TC: %d, UP: %d\n", i, ets->prio_tc[i]); return -EINVAL; --- linux-3.13.0.orig/drivers/net/ethernet/mellanox/mlx4/en_ethtool.c +++ linux-3.13.0/drivers/net/ethernet/mellanox/mlx4/en_ethtool.c @@ -35,6 +35,7 @@ #include #include #include +#include #include #include @@ -98,6 +99,10 @@ drvinfo->eedump_len = 0; } +static const char mlx4_en_priv_flags[][ETH_GSTRING_LEN] = { + "blueflame", +}; + static const char main_strings[][ETH_GSTRING_LEN] = { "rx_packets", "tx_packets", "rx_bytes", "tx_bytes", "rx_errors", "tx_errors", "rx_dropped", "tx_dropped", "multicast", "collisions", @@ -235,6 +240,8 @@ case ETH_SS_TEST: return MLX4_EN_NUM_SELF_TEST - !(priv->mdev->dev->caps.flags & MLX4_DEV_CAP_FLAG_UC_LOOPBACK) * 2; + case ETH_SS_PRIV_FLAGS: + return ARRAY_SIZE(mlx4_en_priv_flags); default: return -EOPNOTSUPP; } @@ -358,10 +365,311 @@ #endif } break; + case ETH_SS_PRIV_FLAGS: + for (i = 0; i < ARRAY_SIZE(mlx4_en_priv_flags); i++) + strcpy(data + i * ETH_GSTRING_LEN, + mlx4_en_priv_flags[i]); + break; + } } -static int mlx4_en_get_settings(struct net_device *dev, struct ethtool_cmd *cmd) +static u32 mlx4_en_autoneg_get(struct net_device *dev) +{ + struct mlx4_en_priv *priv = netdev_priv(dev); + struct mlx4_en_dev *mdev = priv->mdev; + u32 autoneg = AUTONEG_DISABLE; + + if ((mdev->dev->caps.flags2 & MLX4_DEV_CAP_FLAG2_ETH_BACKPL_AN_REP) && + (priv->port_state.flags & MLX4_EN_PORT_ANE)) + autoneg = AUTONEG_ENABLE; + + return autoneg; +} + +static u32 ptys_get_supported_port(struct mlx4_ptys_reg *ptys_reg) +{ + u32 eth_proto = be32_to_cpu(ptys_reg->eth_proto_cap); + + if (eth_proto & (MLX4_PROT_MASK(MLX4_10GBASE_T) + | MLX4_PROT_MASK(MLX4_1000BASE_T) + | MLX4_PROT_MASK(MLX4_100BASE_TX))) { + return SUPPORTED_TP; + } + + if (eth_proto & (MLX4_PROT_MASK(MLX4_10GBASE_CR) + | MLX4_PROT_MASK(MLX4_10GBASE_SR) + | MLX4_PROT_MASK(MLX4_56GBASE_SR4) + | MLX4_PROT_MASK(MLX4_40GBASE_CR4) + | MLX4_PROT_MASK(MLX4_40GBASE_SR4) + | MLX4_PROT_MASK(MLX4_1000BASE_CX_SGMII))) { + return SUPPORTED_FIBRE; + } + + if (eth_proto & (MLX4_PROT_MASK(MLX4_56GBASE_KR4) + | MLX4_PROT_MASK(MLX4_40GBASE_KR4) + | MLX4_PROT_MASK(MLX4_20GBASE_KR2) + | MLX4_PROT_MASK(MLX4_10GBASE_KR) + | MLX4_PROT_MASK(MLX4_10GBASE_KX4) + | MLX4_PROT_MASK(MLX4_1000BASE_KX))) { + return SUPPORTED_Backplane; + } + return 0; +} + +static u32 ptys_get_active_port(struct mlx4_ptys_reg *ptys_reg) +{ + u32 eth_proto = be32_to_cpu(ptys_reg->eth_proto_oper); + + if (!eth_proto) /* link down */ + eth_proto = be32_to_cpu(ptys_reg->eth_proto_cap); + + if (eth_proto & (MLX4_PROT_MASK(MLX4_10GBASE_T) + | MLX4_PROT_MASK(MLX4_1000BASE_T) + | MLX4_PROT_MASK(MLX4_100BASE_TX))) { + return PORT_TP; + } + + if (eth_proto & (MLX4_PROT_MASK(MLX4_10GBASE_SR) + | MLX4_PROT_MASK(MLX4_56GBASE_SR4) + | MLX4_PROT_MASK(MLX4_40GBASE_SR4) + | MLX4_PROT_MASK(MLX4_1000BASE_CX_SGMII))) { + return PORT_FIBRE; + } + + if (eth_proto & (MLX4_PROT_MASK(MLX4_10GBASE_CR) + | MLX4_PROT_MASK(MLX4_56GBASE_CR4) + | MLX4_PROT_MASK(MLX4_40GBASE_CR4))) { + return PORT_DA; + } + + if (eth_proto & (MLX4_PROT_MASK(MLX4_56GBASE_KR4) + | MLX4_PROT_MASK(MLX4_40GBASE_KR4) + | MLX4_PROT_MASK(MLX4_20GBASE_KR2) + | MLX4_PROT_MASK(MLX4_10GBASE_KR) + | MLX4_PROT_MASK(MLX4_10GBASE_KX4) + | MLX4_PROT_MASK(MLX4_1000BASE_KX))) { + return PORT_NONE; + } + return PORT_OTHER; +} + +#define MLX4_LINK_MODES_SZ \ + (FIELD_SIZEOF(struct mlx4_ptys_reg, eth_proto_cap) * 8) + +enum ethtool_report { + SUPPORTED = 0, + ADVERTISED = 1, + SPEED = 2 +}; + +/* Translates mlx4 link mode to equivalent ethtool Link modes/speed */ +static u32 ptys2ethtool_map[MLX4_LINK_MODES_SZ][3] = { + [MLX4_100BASE_TX] = { + SUPPORTED_100baseT_Full, + ADVERTISED_100baseT_Full, + SPEED_100 + }, + + [MLX4_1000BASE_T] = { + SUPPORTED_1000baseT_Full, + ADVERTISED_1000baseT_Full, + SPEED_1000 + }, + [MLX4_1000BASE_CX_SGMII] = { + SUPPORTED_1000baseKX_Full, + ADVERTISED_1000baseKX_Full, + SPEED_1000 + }, + [MLX4_1000BASE_KX] = { + SUPPORTED_1000baseKX_Full, + ADVERTISED_1000baseKX_Full, + SPEED_1000 + }, + + [MLX4_10GBASE_T] = { + SUPPORTED_10000baseT_Full, + ADVERTISED_10000baseT_Full, + SPEED_10000 + }, + [MLX4_10GBASE_CX4] = { + SUPPORTED_10000baseKX4_Full, + ADVERTISED_10000baseKX4_Full, + SPEED_10000 + }, + [MLX4_10GBASE_KX4] = { + SUPPORTED_10000baseKX4_Full, + ADVERTISED_10000baseKX4_Full, + SPEED_10000 + }, + [MLX4_10GBASE_KR] = { + SUPPORTED_10000baseKR_Full, + ADVERTISED_10000baseKR_Full, + SPEED_10000 + }, + [MLX4_10GBASE_CR] = { + SUPPORTED_10000baseKR_Full, + ADVERTISED_10000baseKR_Full, + SPEED_10000 + }, + [MLX4_10GBASE_SR] = { + SUPPORTED_10000baseKR_Full, + ADVERTISED_10000baseKR_Full, + SPEED_10000 + }, + + [MLX4_20GBASE_KR2] = { + SUPPORTED_20000baseMLD2_Full | SUPPORTED_20000baseKR2_Full, + ADVERTISED_20000baseMLD2_Full | ADVERTISED_20000baseKR2_Full, + SPEED_20000 + }, + + [MLX4_40GBASE_CR4] = { + SUPPORTED_40000baseCR4_Full, + ADVERTISED_40000baseCR4_Full, + SPEED_40000 + }, + [MLX4_40GBASE_KR4] = { + SUPPORTED_40000baseKR4_Full, + ADVERTISED_40000baseKR4_Full, + SPEED_40000 + }, + [MLX4_40GBASE_SR4] = { + SUPPORTED_40000baseSR4_Full, + ADVERTISED_40000baseSR4_Full, + SPEED_40000 + }, + + [MLX4_56GBASE_KR4] = { + SUPPORTED_56000baseKR4_Full, + ADVERTISED_56000baseKR4_Full, + SPEED_56000 + }, + [MLX4_56GBASE_CR4] = { + SUPPORTED_56000baseCR4_Full, + ADVERTISED_56000baseCR4_Full, + SPEED_56000 + }, + [MLX4_56GBASE_SR4] = { + SUPPORTED_56000baseSR4_Full, + ADVERTISED_56000baseSR4_Full, + SPEED_56000 + }, +}; + +static u32 ptys2ethtool_link_modes(u32 eth_proto, enum ethtool_report report) +{ + int i; + u32 link_modes = 0; + + for (i = 0; i < MLX4_LINK_MODES_SZ; i++) { + if (eth_proto & MLX4_PROT_MASK(i)) + link_modes |= ptys2ethtool_map[i][report]; + } + return link_modes; +} + +static u32 ethtool2ptys_link_modes(u32 link_modes, enum ethtool_report report) +{ + int i; + u32 ptys_modes = 0; + + for (i = 0; i < MLX4_LINK_MODES_SZ; i++) { + if (ptys2ethtool_map[i][report] & link_modes) + ptys_modes |= 1 << i; + } + return ptys_modes; +} + +/* Convert actual speed (SPEED_XXX) to ptys link modes */ +static u32 speed2ptys_link_modes(u32 speed) +{ + int i; + u32 ptys_modes = 0; + + for (i = 0; i < MLX4_LINK_MODES_SZ; i++) { + if (ptys2ethtool_map[i][SPEED] == speed) + ptys_modes |= 1 << i; + } + return ptys_modes; +} + +static int ethtool_get_ptys_settings(struct net_device *dev, + struct ethtool_cmd *cmd) +{ + struct mlx4_en_priv *priv = netdev_priv(dev); + struct mlx4_ptys_reg ptys_reg; + u32 eth_proto; + int ret; + + memset(&ptys_reg, 0, sizeof(ptys_reg)); + ptys_reg.local_port = priv->port; + ptys_reg.proto_mask = MLX4_PTYS_EN; + ret = mlx4_ACCESS_PTYS_REG(priv->mdev->dev, + MLX4_ACCESS_REG_QUERY, &ptys_reg); + if (ret) { + en_warn(priv, "Failed to run mlx4_ACCESS_PTYS_REG status(%x)", + ret); + return ret; + } + en_dbg(DRV, priv, "ptys_reg.proto_mask %x\n", + ptys_reg.proto_mask); + en_dbg(DRV, priv, "ptys_reg.eth_proto_cap %x\n", + be32_to_cpu(ptys_reg.eth_proto_cap)); + en_dbg(DRV, priv, "ptys_reg.eth_proto_admin %x\n", + be32_to_cpu(ptys_reg.eth_proto_admin)); + en_dbg(DRV, priv, "ptys_reg.eth_proto_oper %x\n", + be32_to_cpu(ptys_reg.eth_proto_oper)); + en_dbg(DRV, priv, "ptys_reg.eth_proto_lp_adv %x\n", + be32_to_cpu(ptys_reg.eth_proto_lp_adv)); + + cmd->supported = 0; + cmd->advertising = 0; + + cmd->supported |= ptys_get_supported_port(&ptys_reg); + + eth_proto = be32_to_cpu(ptys_reg.eth_proto_cap); + cmd->supported |= ptys2ethtool_link_modes(eth_proto, SUPPORTED); + + eth_proto = be32_to_cpu(ptys_reg.eth_proto_admin); + cmd->advertising |= ptys2ethtool_link_modes(eth_proto, ADVERTISED); + + cmd->supported |= SUPPORTED_Pause | SUPPORTED_Asym_Pause; + cmd->advertising |= (priv->prof->tx_pause) ? ADVERTISED_Pause : 0; + + cmd->advertising |= (priv->prof->tx_pause ^ priv->prof->rx_pause) ? + ADVERTISED_Asym_Pause : 0; + + cmd->port = ptys_get_active_port(&ptys_reg); + cmd->transceiver = (SUPPORTED_TP & cmd->supported) ? + XCVR_EXTERNAL : XCVR_INTERNAL; + + if (mlx4_en_autoneg_get(dev)) { + cmd->supported |= SUPPORTED_Autoneg; + cmd->advertising |= ADVERTISED_Autoneg; + } + + cmd->autoneg = (priv->port_state.flags & MLX4_EN_PORT_ANC) ? + AUTONEG_ENABLE : AUTONEG_DISABLE; + + eth_proto = be32_to_cpu(ptys_reg.eth_proto_lp_adv); + cmd->lp_advertising = ptys2ethtool_link_modes(eth_proto, ADVERTISED); + + cmd->lp_advertising |= (priv->port_state.flags & MLX4_EN_PORT_ANC) ? + ADVERTISED_Autoneg : 0; + + cmd->phy_address = 0; + cmd->mdio_support = 0; + cmd->maxtxpkt = 0; + cmd->maxrxpkt = 0; + cmd->eth_tp_mdix = ETH_TP_MDI_INVALID; + cmd->eth_tp_mdix_ctrl = ETH_TP_MDI_AUTO; + + return ret; +} + +static void ethtool_get_default_settings(struct net_device *dev, + struct ethtool_cmd *cmd) { struct mlx4_en_priv *priv = netdev_priv(dev); int trans_type; @@ -369,18 +677,7 @@ cmd->autoneg = AUTONEG_DISABLE; cmd->supported = SUPPORTED_10000baseT_Full; cmd->advertising = ADVERTISED_10000baseT_Full; - - if (mlx4_en_QUERY_PORT(priv->mdev, priv->port)) - return -ENOMEM; - - trans_type = priv->port_state.transciver; - if (netif_carrier_ok(dev)) { - ethtool_cmd_speed_set(cmd, priv->port_state.link_speed); - cmd->duplex = DUPLEX_FULL; - } else { - ethtool_cmd_speed_set(cmd, -1); - cmd->duplex = -1; - } + trans_type = priv->port_state.transceiver; if (trans_type > 0 && trans_type <= 0xC) { cmd->port = PORT_FIBRE; @@ -396,17 +693,118 @@ cmd->port = -1; cmd->transceiver = -1; } +} + +static int mlx4_en_get_settings(struct net_device *dev, struct ethtool_cmd *cmd) +{ + struct mlx4_en_priv *priv = netdev_priv(dev); + int ret = -EINVAL; + + if (mlx4_en_QUERY_PORT(priv->mdev, priv->port)) + return -ENOMEM; + + en_dbg(DRV, priv, "query port state.flags ANC(%x) ANE(%x)\n", + priv->port_state.flags & MLX4_EN_PORT_ANC, + priv->port_state.flags & MLX4_EN_PORT_ANE); + + if (priv->mdev->dev->caps.flags2 & MLX4_DEV_CAP_FLAG2_ETH_PROT_CTRL) + ret = ethtool_get_ptys_settings(dev, cmd); + if (ret) /* ETH PROT CRTL is not supported or PTYS CMD failed */ + ethtool_get_default_settings(dev, cmd); + + if (netif_carrier_ok(dev)) { + ethtool_cmd_speed_set(cmd, priv->port_state.link_speed); + cmd->duplex = DUPLEX_FULL; + } else { + ethtool_cmd_speed_set(cmd, SPEED_UNKNOWN); + cmd->duplex = DUPLEX_UNKNOWN; + } return 0; } +/* Calculate PTYS admin according ethtool speed (SPEED_XXX) */ +static __be32 speed_set_ptys_admin(struct mlx4_en_priv *priv, u32 speed, + __be32 proto_cap) +{ + __be32 proto_admin = 0; + + if (!speed) { /* Speed = 0 ==> Reset Link modes */ + proto_admin = proto_cap; + en_info(priv, "Speed was set to 0, Reset advertised Link Modes to default (%x)\n", + be32_to_cpu(proto_cap)); + } else { + u32 ptys_link_modes = speed2ptys_link_modes(speed); + + proto_admin = cpu_to_be32(ptys_link_modes) & proto_cap; + en_info(priv, "Setting Speed to %d\n", speed); + } + return proto_admin; +} + static int mlx4_en_set_settings(struct net_device *dev, struct ethtool_cmd *cmd) { - if ((cmd->autoneg == AUTONEG_ENABLE) || - (ethtool_cmd_speed(cmd) != SPEED_10000) || - (cmd->duplex != DUPLEX_FULL)) + struct mlx4_en_priv *priv = netdev_priv(dev); + struct mlx4_ptys_reg ptys_reg; + __be32 proto_admin; + int ret; + + u32 ptys_adv = ethtool2ptys_link_modes(cmd->advertising, ADVERTISED); + int speed = ethtool_cmd_speed(cmd); + + en_dbg(DRV, priv, "Set Speed=%d adv=0x%x autoneg=%d duplex=%d\n", + speed, cmd->advertising, cmd->autoneg, cmd->duplex); + + if (!(priv->mdev->dev->caps.flags2 & MLX4_DEV_CAP_FLAG2_ETH_PROT_CTRL) || + (cmd->duplex == DUPLEX_HALF)) return -EINVAL; - /* Nothing to change */ + memset(&ptys_reg, 0, sizeof(ptys_reg)); + ptys_reg.local_port = priv->port; + ptys_reg.proto_mask = MLX4_PTYS_EN; + ret = mlx4_ACCESS_PTYS_REG(priv->mdev->dev, + MLX4_ACCESS_REG_QUERY, &ptys_reg); + if (ret) { + en_warn(priv, "Failed to QUERY mlx4_ACCESS_PTYS_REG status(%x)\n", + ret); + return 0; + } + + proto_admin = cpu_to_be32(ptys_adv); + if (speed >= 0 && speed != priv->port_state.link_speed) + /* If speed was set then speed decides :-) */ + proto_admin = speed_set_ptys_admin(priv, speed, + ptys_reg.eth_proto_cap); + + proto_admin &= ptys_reg.eth_proto_cap; + + if (proto_admin == ptys_reg.eth_proto_admin) + return 0; /* Nothing to change */ + + if (!proto_admin) { + en_warn(priv, "Not supported link mode(s) requested, check supported link modes.\n"); + return -EINVAL; /* nothing to change due to bad input */ + } + + en_dbg(DRV, priv, "mlx4_ACCESS_PTYS_REG SET: ptys_reg.eth_proto_admin = 0x%x\n", + be32_to_cpu(proto_admin)); + + ptys_reg.eth_proto_admin = proto_admin; + ret = mlx4_ACCESS_PTYS_REG(priv->mdev->dev, MLX4_ACCESS_REG_WRITE, + &ptys_reg); + if (ret) { + en_warn(priv, "Failed to write mlx4_ACCESS_PTYS_REG eth_proto_admin(0x%x) status(0x%x)", + be32_to_cpu(ptys_reg.eth_proto_admin), ret); + return ret; + } + + en_warn(priv, "Port link mode changed, restarting port...\n"); + mutex_lock(&priv->mdev->state_lock); + if (priv->port_up) { + mlx4_en_stop_port(dev, 1); + if (mlx4_en_start_port(dev)) + en_err(priv, "Failed restarting port %d\n", priv->port); + } + mutex_unlock(&priv->mdev->state_lock); return 0; } @@ -1193,11 +1591,137 @@ info->rx_filters = (1 << HWTSTAMP_FILTER_NONE) | (1 << HWTSTAMP_FILTER_ALL); + + if (mdev->ptp_clock) + info->phc_index = ptp_clock_index(mdev->ptp_clock); } return ret; } +int mlx4_en_set_priv_flags(struct net_device *dev, u32 flags) +{ + struct mlx4_en_priv *priv = netdev_priv(dev); + bool bf_enabled_new = !!(flags & MLX4_EN_PRIV_FLAGS_BLUEFLAME); + bool bf_enabled_old = !!(priv->pflags & MLX4_EN_PRIV_FLAGS_BLUEFLAME); + int i; + + if (bf_enabled_new == bf_enabled_old) + return 0; /* Nothing to do */ + + if (bf_enabled_new) { + bool bf_supported = true; + + for (i = 0; i < priv->tx_ring_num; i++) + bf_supported &= priv->tx_ring[i]->bf_alloced; + + if (!bf_supported) { + en_err(priv, "BlueFlame is not supported\n"); + return -EINVAL; + } + + priv->pflags |= MLX4_EN_PRIV_FLAGS_BLUEFLAME; + } else { + priv->pflags &= ~MLX4_EN_PRIV_FLAGS_BLUEFLAME; + } + + for (i = 0; i < priv->tx_ring_num; i++) + priv->tx_ring[i]->bf_enabled = bf_enabled_new; + + en_info(priv, "BlueFlame %s\n", + bf_enabled_new ? "Enabled" : "Disabled"); + + return 0; +} + +u32 mlx4_en_get_priv_flags(struct net_device *dev) +{ + struct mlx4_en_priv *priv = netdev_priv(dev); + + return priv->pflags; +} + +static int mlx4_en_get_module_info(struct net_device *dev, + struct ethtool_modinfo *modinfo) +{ + struct mlx4_en_priv *priv = netdev_priv(dev); + struct mlx4_en_dev *mdev = priv->mdev; + int ret; + u8 data[4]; + + /* Read first 2 bytes to get Module & REV ID */ + ret = mlx4_get_module_info(mdev->dev, priv->port, + 0/*offset*/, 2/*size*/, data); + if (ret < 2) + return -EIO; + + switch (data[0] /* identifier */) { + case MLX4_MODULE_ID_QSFP: + modinfo->type = ETH_MODULE_SFF_8436; + modinfo->eeprom_len = ETH_MODULE_SFF_8436_LEN; + break; + case MLX4_MODULE_ID_QSFP_PLUS: + if (data[1] >= 0x3) { /* revision id */ + modinfo->type = ETH_MODULE_SFF_8636; + modinfo->eeprom_len = ETH_MODULE_SFF_8636_LEN; + } else { + modinfo->type = ETH_MODULE_SFF_8436; + modinfo->eeprom_len = ETH_MODULE_SFF_8436_LEN; + } + break; + case MLX4_MODULE_ID_QSFP28: + modinfo->type = ETH_MODULE_SFF_8636; + modinfo->eeprom_len = ETH_MODULE_SFF_8636_LEN; + break; + case MLX4_MODULE_ID_SFP: + modinfo->type = ETH_MODULE_SFF_8472; + modinfo->eeprom_len = ETH_MODULE_SFF_8472_LEN; + break; + default: + return -ENOSYS; + } + + return 0; +} + +static int mlx4_en_get_module_eeprom(struct net_device *dev, + struct ethtool_eeprom *ee, + u8 *data) +{ + struct mlx4_en_priv *priv = netdev_priv(dev); + struct mlx4_en_dev *mdev = priv->mdev; + int offset = ee->offset; + int i = 0, ret; + + if (ee->len == 0) + return -EINVAL; + + memset(data, 0, ee->len); + + while (i < ee->len) { + en_dbg(DRV, priv, + "mlx4_get_module_info i(%d) offset(%d) len(%d)\n", + i, offset, ee->len - i); + + ret = mlx4_get_module_info(mdev->dev, priv->port, + offset, ee->len - i, data + i); + + if (!ret) /* Done reading */ + return 0; + + if (ret < 0) { + en_err(priv, + "mlx4_get_module_info i(%d) offset(%d) bytes_to_read(%d) - FAILED (0x%x)\n", + i, offset, ee->len - i, ret); + return 0; + } + + i += ret; + offset += ret; + } + return 0; +} + const struct ethtool_ops mlx4_en_ethtool_ops = { .get_drvinfo = mlx4_en_get_drvinfo, .get_settings = mlx4_en_get_settings, @@ -1225,6 +1749,10 @@ .get_channels = mlx4_en_get_channels, .set_channels = mlx4_en_set_channels, .get_ts_info = mlx4_en_get_ts_info, + .set_priv_flags = mlx4_en_set_priv_flags, + .get_priv_flags = mlx4_en_get_priv_flags, + .get_module_info = mlx4_en_get_module_info, + .get_module_eeprom = mlx4_en_get_module_eeprom }; --- linux-3.13.0.orig/drivers/net/ethernet/mellanox/mlx4/en_main.c +++ linux-3.13.0/drivers/net/ethernet/mellanox/mlx4/en_main.c @@ -72,6 +72,12 @@ MLX4_EN_PARM_INT(pfcrx, 0, "Priority based Flow Control policy on RX[7:0]." " Per priority bit mask"); +MLX4_EN_PARM_INT(inline_thold, MAX_INLINE, + "Threshold for using inline data (range: 17-104, default: 104)"); + +#define MAX_PFC_TX 0xff +#define MAX_PFC_RX 0xff + int en_print(const char *level, const struct mlx4_en_priv *priv, const char *format, ...) { @@ -123,8 +129,10 @@ int i; params->udp_rss = udp_rss; - params->num_tx_rings_p_up = min_t(int, num_online_cpus(), - MLX4_EN_MAX_TX_RING_P_UP); + params->num_tx_rings_p_up = mlx4_low_memory_profile() ? + MLX4_EN_MIN_TX_RING_P_UP : + min_t(int, num_online_cpus(), MLX4_EN_MAX_TX_RING_P_UP); + if (params->udp_rss && !(mdev->dev->caps.flags & MLX4_DEV_CAP_FLAG_UDP_RSS)) { mlx4_warn(mdev, "UDP RSS is not supported on this device.\n"); @@ -140,6 +148,7 @@ params->prof[i].tx_ring_num = params->num_tx_rings_p_up * MLX4_EN_NUM_UP; params->prof[i].rss_rings = 0; + params->prof[i].inline_thold = inline_thold; } return 0; @@ -174,6 +183,9 @@ mlx4_err(mdev, "Internal error detected, restarting device\n"); break; + case MLX4_DEV_EVENT_SLAVE_INIT: + case MLX4_DEV_EVENT_SLAVE_SHUTDOWN: + break; default: if (port < 1 || port > dev->caps.num_ports || !mdev->pndev[port]) @@ -264,23 +276,8 @@ 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); - - mlx4_foreach_port(i, dev, MLX4_PORT_TYPE_ETH) { - if (!dev->caps.comp_pool) { - mdev->profile.prof[i].rx_ring_num = - rounddown_pow_of_two(max_t(int, MIN_RX_RINGS, - min_t(int, - dev->caps.num_comp_vectors, - DEF_RX_RINGS))); - } else { - mdev->profile.prof[i].rx_ring_num = rounddown_pow_of_two( - min_t(int, dev->caps.comp_pool/ - dev->caps.num_ports - 1 , MAX_MSIX_P_PORT - 1)); - } - } + /* Set default number of RX rings*/ + mlx4_en_set_num_rx_rings(mdev); /* Create our own workqueue for reset/multicast tasks * Note: we cannot use the shared workqueue because of deadlocks caused @@ -330,8 +327,31 @@ .protocol = MLX4_PROT_ETH, }; +static void mlx4_en_verify_params(void) +{ + if (pfctx > MAX_PFC_TX) { + pr_warn("mlx4_en: WARNING: illegal module parameter pfctx 0x%x - should be in range 0-0x%x, will be changed to default (0)\n", + pfctx, MAX_PFC_TX); + pfctx = 0; + } + + if (pfcrx > MAX_PFC_RX) { + pr_warn("mlx4_en: WARNING: illegal module parameter pfcrx 0x%x - should be in range 0-0x%x, will be changed to default (0)\n", + pfcrx, MAX_PFC_RX); + pfcrx = 0; + } + + if (inline_thold < MIN_PKT_LEN || inline_thold > MAX_INLINE) { + pr_warn("mlx4_en: WARNING: illegal module parameter inline_thold %d - should be in range %d-%d, will be changed to default (%d)\n", + inline_thold, MIN_PKT_LEN, MAX_INLINE, MAX_INLINE); + inline_thold = MAX_INLINE; + } +} + static int __init mlx4_en_init(void) { + mlx4_en_verify_params(); + return mlx4_register_interface(&mlx4_en_interface); } --- linux-3.13.0.orig/drivers/net/ethernet/mellanox/mlx4/en_netdev.c +++ linux-3.13.0/drivers/net/ethernet/mellanox/mlx4/en_netdev.c @@ -39,6 +39,7 @@ #include #include #include +#include #include #include @@ -468,6 +469,53 @@ memset(&dst_mac[ETH_ALEN], 0, 2); } + +static int mlx4_en_tunnel_steer_add(struct mlx4_en_priv *priv, unsigned char *addr, + int qpn, u64 *reg_id) +{ + int err; + struct mlx4_spec_list spec_eth_outer = { {NULL} }; + struct mlx4_spec_list spec_vxlan = { {NULL} }; + struct mlx4_spec_list spec_eth_inner = { {NULL} }; + + struct mlx4_net_trans_rule rule = { + .queue_mode = MLX4_NET_TRANS_Q_FIFO, + .exclusive = 0, + .allow_loopback = 1, + .promisc_mode = MLX4_FS_REGULAR, + .priority = MLX4_DOMAIN_NIC, + }; + + __be64 mac_mask = cpu_to_be64(MLX4_MAC_MASK << 16); + + if (priv->mdev->dev->caps.tunnel_offload_mode != MLX4_TUNNEL_OFFLOAD_MODE_VXLAN) + return 0; /* do nothing */ + + rule.port = priv->port; + rule.qpn = qpn; + INIT_LIST_HEAD(&rule.list); + + spec_eth_outer.id = MLX4_NET_TRANS_RULE_ID_ETH; + memcpy(spec_eth_outer.eth.dst_mac, addr, ETH_ALEN); + memcpy(spec_eth_outer.eth.dst_mac_msk, &mac_mask, ETH_ALEN); + + spec_vxlan.id = MLX4_NET_TRANS_RULE_ID_VXLAN; /* any vxlan header */ + spec_eth_inner.id = MLX4_NET_TRANS_RULE_ID_ETH; /* any inner eth header */ + + list_add_tail(&spec_eth_outer.list, &rule.list); + list_add_tail(&spec_vxlan.list, &rule.list); + list_add_tail(&spec_eth_inner.list, &rule.list); + + err = mlx4_flow_attach(priv->mdev->dev, &rule, reg_id); + if (err) { + en_err(priv, "failed to add vxlan steering rule, err %d\n", err); + return err; + } + en_dbg(DRV, priv, "added vxlan steering rule, mac %pM reg_id %llx\n", addr, *reg_id); + return 0; +} + + static int mlx4_en_uc_steer_add(struct mlx4_en_priv *priv, unsigned char *mac, int *qpn, u64 *reg_id) { @@ -556,7 +604,7 @@ int err = 0; u64 reg_id; int *qpn = &priv->base_qpn; - u64 mac = mlx4_en_mac_to_u64(priv->dev->dev_addr); + u64 mac = mlx4_mac_to_u64(priv->dev->dev_addr); en_dbg(DRV, priv, "Registering MAC: %pM for adding\n", priv->dev->dev_addr); @@ -585,12 +633,18 @@ if (err) goto steer_err; + err = mlx4_en_tunnel_steer_add(priv, priv->dev->dev_addr, *qpn, + &priv->tunnel_reg_id); + if (err) + goto tunnel_err; + entry = kmalloc(sizeof(*entry), GFP_KERNEL); if (!entry) { err = -ENOMEM; goto alloc_err; } memcpy(entry->mac, priv->dev->dev_addr, sizeof(entry->mac)); + memcpy(priv->current_mac, entry->mac, sizeof(priv->current_mac)); entry->reg_id = reg_id; hlist_add_head_rcu(&entry->hlist, @@ -599,6 +653,9 @@ return 0; alloc_err: + if (priv->tunnel_reg_id) + mlx4_flow_detach(priv->mdev->dev, priv->tunnel_reg_id); +tunnel_err: mlx4_en_uc_steer_release(priv, priv->dev->dev_addr, *qpn, reg_id); steer_err: @@ -617,7 +674,7 @@ u64 mac; if (dev->caps.steering_mode == MLX4_STEERING_MODE_A0) { - mac = mlx4_en_mac_to_u64(priv->dev->dev_addr); + mac = mlx4_mac_to_u64(priv->dev->dev_addr); en_dbg(DRV, priv, "Registering MAC: %pM for deleting\n", priv->dev->dev_addr); mlx4_unregister_mac(dev, priv->port, mac); @@ -630,7 +687,7 @@ for (i = 0; i < MLX4_EN_MAC_HASH_SIZE; ++i) { bucket = &priv->mac_hash[i]; hlist_for_each_entry_safe(entry, tmp, bucket, hlist) { - mac = mlx4_en_mac_to_u64(entry->mac); + mac = mlx4_mac_to_u64(entry->mac); en_dbg(DRV, priv, "Registering MAC: %pM for deleting\n", entry->mac); mlx4_en_uc_steer_release(priv, entry->mac, @@ -642,6 +699,11 @@ } } + if (priv->tunnel_reg_id) { + mlx4_flow_detach(priv->mdev->dev, priv->tunnel_reg_id); + priv->tunnel_reg_id = 0; + } + en_dbg(DRV, priv, "Releasing qp: port %d, qpn %d\n", priv->port, qpn); mlx4_qp_release_range(dev, qpn, 1); @@ -655,14 +717,14 @@ struct mlx4_en_dev *mdev = priv->mdev; struct mlx4_dev *dev = mdev->dev; int err = 0; - u64 new_mac_u64 = mlx4_en_mac_to_u64(new_mac); + u64 new_mac_u64 = mlx4_mac_to_u64(new_mac); if (dev->caps.steering_mode != MLX4_STEERING_MODE_A0) { struct hlist_head *bucket; unsigned int mac_hash; struct mlx4_mac_entry *entry; struct hlist_node *tmp; - u64 prev_mac_u64 = mlx4_en_mac_to_u64(prev_mac); + u64 prev_mac_u64 = mlx4_mac_to_u64(prev_mac); bucket = &priv->mac_hash[prev_mac[MLX4_EN_MAC_HASH_IDX]]; hlist_for_each_entry_safe(entry, tmp, bucket, hlist) { @@ -682,6 +744,14 @@ err = mlx4_en_uc_steer_add(priv, new_mac, &qpn, &entry->reg_id); + if (err) + return err; + if (priv->tunnel_reg_id) { + mlx4_flow_detach(priv->mdev->dev, priv->tunnel_reg_id); + priv->tunnel_reg_id = 0; + } + err = mlx4_en_tunnel_steer_add(priv, new_mac, qpn, + &priv->tunnel_reg_id); return err; } } @@ -691,33 +761,23 @@ return __mlx4_replace_mac(dev, priv->port, qpn, new_mac_u64); } -u64 mlx4_en_mac_to_u64(u8 *addr) -{ - u64 mac = 0; - int i; - - for (i = 0; i < ETH_ALEN; i++) { - mac <<= 8; - mac |= addr[i]; - } - return mac; -} - -static int mlx4_en_do_set_mac(struct mlx4_en_priv *priv) +static int mlx4_en_do_set_mac(struct mlx4_en_priv *priv, + unsigned char new_mac[ETH_ALEN + 2]) { int err = 0; if (priv->port_up) { /* Remove old MAC and insert the new one */ err = mlx4_en_replace_mac(priv, priv->base_qpn, - priv->dev->dev_addr, priv->prev_mac); + new_mac, priv->current_mac); if (err) en_err(priv, "Failed changing HW MAC address\n"); - memcpy(priv->prev_mac, priv->dev->dev_addr, - sizeof(priv->prev_mac)); } else en_dbg(HW, priv, "Port is down while registering mac, exiting...\n"); + if (!err) + memcpy(priv->current_mac, new_mac, sizeof(priv->current_mac)); + return err; } @@ -726,15 +786,17 @@ struct mlx4_en_priv *priv = netdev_priv(dev); struct mlx4_en_dev *mdev = priv->mdev; struct sockaddr *saddr = addr; + unsigned char new_mac[ETH_ALEN + 2]; int err; if (!is_valid_ether_addr(saddr->sa_data)) return -EADDRNOTAVAIL; - memcpy(dev->dev_addr, saddr->sa_data, ETH_ALEN); - mutex_lock(&mdev->state_lock); - err = mlx4_en_do_set_mac(priv); + memcpy(new_mac, saddr->sa_data, ETH_ALEN); + err = mlx4_en_do_set_mac(priv, new_mac); + if (!err) + memcpy(dev->dev_addr, saddr->sa_data, ETH_ALEN); mutex_unlock(&mdev->state_lock); return err; @@ -782,7 +844,7 @@ list_for_each_entry(dst_tmp, dst, list) { found = false; list_for_each_entry(src_tmp, src, list) { - if (!memcmp(dst_tmp->addr, src_tmp->addr, ETH_ALEN)) { + if (ether_addr_equal(dst_tmp->addr, src_tmp->addr)) { found = true; break; } @@ -797,7 +859,7 @@ list_for_each_entry(src_tmp, src, list) { found = false; list_for_each_entry(dst_tmp, dst, list) { - if (!memcmp(dst_tmp->addr, src_tmp->addr, ETH_ALEN)) { + if (ether_addr_equal(dst_tmp->addr, src_tmp->addr)) { dst_tmp->action = MCLIST_NONE; found = true; break; @@ -1021,7 +1083,7 @@ mlx4_en_cache_mclist(dev); netif_addr_unlock_bh(dev); list_for_each_entry(mclist, &priv->mc_list, list) { - mcast_addr = mlx4_en_mac_to_u64(mclist->addr); + mcast_addr = mlx4_mac_to_u64(mclist->addr); mlx4_SET_MCAST_FLTR(mdev->dev, priv->port, mcast_addr, 0, MLX4_MCAST_CONFIG); } @@ -1044,6 +1106,12 @@ if (err) en_err(priv, "Fail to detach multicast address\n"); + if (mclist->tunnel_reg_id) { + err = mlx4_flow_detach(priv->mdev->dev, mclist->tunnel_reg_id); + if (err) + en_err(priv, "Failed to detach multicast address\n"); + } + /* remove from list */ list_del(&mclist->list); kfree(mclist); @@ -1061,6 +1129,10 @@ if (err) en_err(priv, "Fail to attach multicast address\n"); + err = mlx4_en_tunnel_steer_add(priv, &mc_list[10], priv->base_qpn, + &mclist->tunnel_reg_id); + if (err) + en_err(priv, "Failed to attach multicast address\n"); } } } @@ -1099,11 +1171,12 @@ } /* MAC address of the port is not in uc list */ - if (ether_addr_equal_64bits(entry->mac, dev->dev_addr)) + if (ether_addr_equal_64bits(entry->mac, + priv->current_mac)) found = true; if (!found) { - mac = mlx4_en_mac_to_u64(entry->mac); + mac = mlx4_mac_to_u64(entry->mac); mlx4_en_uc_steer_release(priv, entry->mac, priv->base_qpn, entry->reg_id); @@ -1146,7 +1219,7 @@ priv->flags |= MLX4_EN_FLAG_FORCE_PROMISC; break; } - mac = mlx4_en_mac_to_u64(ha->addr); + mac = mlx4_mac_to_u64(ha->addr); memcpy(entry->mac, ha->addr, ETH_ALEN); err = mlx4_register_mac(mdev->dev, priv->port, mac); if (err < 0) { @@ -1237,15 +1310,11 @@ { struct mlx4_en_priv *priv = netdev_priv(dev); struct mlx4_en_cq *cq; - unsigned long flags; int i; for (i = 0; i < priv->rx_ring_num; i++) { cq = priv->rx_cq[i]; - spin_lock_irqsave(&cq->lock, flags); - napi_synchronize(&cq->napi); - mlx4_en_process_rx_cq(dev, cq, 0); - spin_unlock_irqrestore(&cq->lock, flags); + napi_schedule(&cq->napi); } } #endif @@ -1413,7 +1482,7 @@ queue_delayed_work(mdev->workqueue, &priv->stats_task, STATS_DELAY); } if (mdev->mac_removed[MLX4_MAX_PORTS + 1 - priv->port]) { - mlx4_en_do_set_mac(priv); + mlx4_en_do_set_mac(priv, priv->current_mac); mdev->mac_removed[MLX4_MAX_PORTS + 1 - priv->port] = 0; } mutex_unlock(&mdev->state_lock); @@ -1463,6 +1532,27 @@ mutex_unlock(&mdev->state_lock); } +static int mlx4_en_init_affinity_hint(struct mlx4_en_priv *priv, int ring_idx) +{ + struct mlx4_en_rx_ring *ring = priv->rx_ring[ring_idx]; + int numa_node = priv->mdev->dev->numa_node; + int ret = 0; + + if (!zalloc_cpumask_var(&ring->affinity_mask, GFP_KERNEL)) + return -ENOMEM; + + ret = cpumask_set_cpu_local_first(ring_idx, numa_node, + ring->affinity_mask); + if (ret) + free_cpumask_var(ring->affinity_mask); + + return ret; +} + +static void mlx4_en_free_affinity_hint(struct mlx4_en_priv *priv, int ring_idx) +{ + free_cpumask_var(priv->rx_ring[ring_idx]->affinity_mask); +} int mlx4_en_start_port(struct net_device *dev) { @@ -1504,9 +1594,16 @@ mlx4_en_cq_init_lock(cq); + err = mlx4_en_init_affinity_hint(priv, i); + if (err) { + en_err(priv, "Failed preparing IRQ affinity hint\n"); + goto cq_err; + } + err = mlx4_en_activate_cq(priv, cq, i); if (err) { en_err(priv, "Failed activating Rx CQ\n"); + mlx4_en_free_affinity_hint(priv, i); goto cq_err; } for (j = 0; j < cq->size; j++) @@ -1515,6 +1612,7 @@ if (err) { en_err(priv, "Failed setting cq moderation parameters"); mlx4_en_deactivate_cq(priv, cq); + mlx4_en_free_affinity_hint(priv, i); goto cq_err; } mlx4_en_arm_cq(priv, cq); @@ -1598,6 +1696,15 @@ goto tx_err; } + if (mdev->dev->caps.tunnel_offload_mode == MLX4_TUNNEL_OFFLOAD_MODE_VXLAN) { + err = mlx4_SET_PORT_VXLAN(mdev->dev, priv->port, VXLAN_STEER_BY_OUTER_MAC, 1); + if (err) { + en_err(priv, "Failed setting port L2 tunnel configuration, err %d\n", + err); + goto tx_err; + } + } + /* Init port */ en_dbg(HW, priv, "Initializing port\n"); err = mlx4_INIT_PORT(mdev->dev, priv->port); @@ -1622,6 +1729,10 @@ mlx4_set_stats_bitmap(mdev->dev, &priv->stats_bitmap); +#ifdef CONFIG_MLX4_EN_VXLAN + if (priv->mdev->dev->caps.tunnel_offload_mode == MLX4_TUNNEL_OFFLOAD_MODE_VXLAN) + vxlan_get_rx_port(dev); +#endif priv->port_up = true; netif_tx_start_all_queues(dev); netif_device_attach(dev); @@ -1639,8 +1750,10 @@ mac_err: mlx4_en_put_qp(priv); cq_err: - while (rx_index--) + while (rx_index--) { mlx4_en_deactivate_cq(priv, priv->rx_cq[rx_index]); + mlx4_en_free_affinity_hint(priv, i); + } for (i = 0; i < priv->rx_ring_num; i++) mlx4_en_deactivate_rx_ring(priv, priv->rx_ring[i]); @@ -1713,6 +1826,8 @@ mc_list[5] = priv->port; mlx4_multicast_detach(mdev->dev, &priv->rss_map.indir_qp, mc_list, MLX4_PROT_ETH, mclist->reg_id); + if (mclist->tunnel_reg_id) + mlx4_flow_detach(mdev->dev, mclist->tunnel_reg_id); } mlx4_en_clear_list(dev); list_for_each_entry_safe(mclist, tmp, &priv->curr_list, list) { @@ -1769,6 +1884,8 @@ msleep(1); mlx4_en_deactivate_rx_ring(priv, priv->rx_ring[i]); mlx4_en_deactivate_cq(priv, cq); + + mlx4_en_free_affinity_hint(priv, i); } } @@ -1910,8 +2027,10 @@ prof->tx_ring_size, i, TX, node)) goto err; - if (mlx4_en_create_tx_ring(priv, &priv->tx_ring[i], priv->base_tx_qpn + i, - prof->tx_ring_size, TXBB_SIZE, node)) + if (mlx4_en_create_tx_ring(priv, &priv->tx_ring[i], + priv->base_tx_qpn + i, + prof->tx_ring_size, TXBB_SIZE, + node, i)) goto err; } @@ -1977,6 +2096,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; @@ -2075,7 +2197,7 @@ return -ERANGE; } - if (mlx4_en_timestamp_config(dev, config.tx_type, config.rx_filter)) { + if (mlx4_en_reset_config(dev, config, dev->features)) { config.tx_type = HWTSTAMP_TX_OFF; config.rx_filter = HWTSTAMP_FILTER_NONE; } @@ -2098,6 +2220,16 @@ netdev_features_t features) { struct mlx4_en_priv *priv = netdev_priv(netdev); + int ret = 0; + + if (DEV_FEATURE_CHANGED(netdev, features, NETIF_F_HW_VLAN_CTAG_RX)) { + en_info(priv, "Turn %s RX vlan strip offload\n", + (features & NETIF_F_HW_VLAN_CTAG_RX) ? "ON" : "OFF"); + ret = mlx4_en_reset_config(netdev, priv->hwtstamp_config, + features); + if (ret) + return ret; + } if (features & NETIF_F_LOOPBACK) priv->ctrl_flags |= cpu_to_be32(MLX4_WQE_CTRL_FORCE_LOOPBACK); @@ -2115,9 +2247,9 @@ { struct mlx4_en_priv *en_priv = netdev_priv(dev); struct mlx4_en_dev *mdev = en_priv->mdev; - u64 mac_u64 = mlx4_en_mac_to_u64(mac); + 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); @@ -2154,6 +2286,104 @@ return mlx4_set_vf_link_state(mdev->dev, en_priv->port, vf, link_state); } + +#define PORT_ID_BYTE_LEN 8 +static int mlx4_en_get_phys_port_id(struct net_device *dev, + struct netdev_phys_port_id *ppid) +{ + struct mlx4_en_priv *priv = netdev_priv(dev); + struct mlx4_dev *mdev = priv->mdev->dev; + int i; + u64 phys_port_id = mdev->caps.phys_port_id[priv->port]; + + if (!phys_port_id) + return -EOPNOTSUPP; + + ppid->id_len = sizeof(phys_port_id); + for (i = PORT_ID_BYTE_LEN - 1; i >= 0; --i) { + ppid->id[i] = phys_port_id & 0xff; + phys_port_id >>= 8; + } + return 0; +} + +#ifdef CONFIG_MLX4_EN_VXLAN +static void mlx4_en_add_vxlan_offloads(struct work_struct *work) +{ + int ret; + struct mlx4_en_priv *priv = container_of(work, struct mlx4_en_priv, + vxlan_add_task); + + ret = mlx4_config_vxlan_port(priv->mdev->dev, priv->vxlan_port); + if (ret) + goto out; + + ret = mlx4_SET_PORT_VXLAN(priv->mdev->dev, priv->port, + VXLAN_STEER_BY_OUTER_MAC, 1); +out: + if (ret) + en_err(priv, "failed setting L2 tunnel configuration ret %d\n", ret); +} + +static void mlx4_en_del_vxlan_offloads(struct work_struct *work) +{ + int ret; + struct mlx4_en_priv *priv = container_of(work, struct mlx4_en_priv, + vxlan_del_task); + + ret = mlx4_SET_PORT_VXLAN(priv->mdev->dev, priv->port, + VXLAN_STEER_BY_OUTER_MAC, 0); + if (ret) + en_err(priv, "failed setting L2 tunnel configuration ret %d\n", ret); + + priv->vxlan_port = 0; +} + +static void mlx4_en_add_vxlan_port(struct net_device *dev, + sa_family_t sa_family, __be16 port) +{ + struct mlx4_en_priv *priv = netdev_priv(dev); + __be16 current_port; + + if (priv->mdev->dev->caps.tunnel_offload_mode != MLX4_TUNNEL_OFFLOAD_MODE_VXLAN) + return; + + if (sa_family == AF_INET6) + return; + + current_port = priv->vxlan_port; + if (current_port && current_port != port) { + en_warn(priv, "vxlan port %d configured, can't add port %d\n", + ntohs(current_port), ntohs(port)); + return; + } + + priv->vxlan_port = port; + queue_work(priv->mdev->workqueue, &priv->vxlan_add_task); +} + +static void mlx4_en_del_vxlan_port(struct net_device *dev, + sa_family_t sa_family, __be16 port) +{ + struct mlx4_en_priv *priv = netdev_priv(dev); + __be16 current_port; + + if (priv->mdev->dev->caps.tunnel_offload_mode != MLX4_TUNNEL_OFFLOAD_MODE_VXLAN) + return; + + if (sa_family == AF_INET6) + return; + + current_port = priv->vxlan_port; + if (current_port != port) { + en_dbg(DRV, priv, "vxlan port %d isn't configured, ignoring\n", ntohs(port)); + return; + } + + queue_work(priv->mdev->workqueue, &priv->vxlan_del_task); +} +#endif + static const struct net_device_ops mlx4_netdev_ops = { .ndo_open = mlx4_en_open, .ndo_stop = mlx4_en_close, @@ -2179,6 +2409,11 @@ #ifdef CONFIG_NET_RX_BUSY_POLL .ndo_busy_poll = mlx4_en_low_latency_recv, #endif + .ndo_get_phys_port_id = mlx4_en_get_phys_port_id, +#ifdef CONFIG_MLX4_EN_VXLAN + .ndo_add_vxlan_port = mlx4_en_add_vxlan_port, + .ndo_del_vxlan_port = mlx4_en_del_vxlan_port, +#endif }; static const struct net_device_ops mlx4_netdev_ops_master = { @@ -2207,6 +2442,11 @@ #ifdef CONFIG_RFS_ACCEL .ndo_rx_flow_steer = mlx4_en_filter_rfs, #endif + .ndo_get_phys_port_id = mlx4_en_get_phys_port_id, +#ifdef CONFIG_MLX4_EN_VXLAN + .ndo_add_vxlan_port = mlx4_en_add_vxlan_port, + .ndo_del_vxlan_port = mlx4_en_del_vxlan_port, +#endif }; int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int port, @@ -2242,6 +2482,7 @@ priv->port = port; priv->port_up = false; priv->flags = prof->flags; + priv->pflags = MLX4_EN_PRIV_FLAGS_BLUEFLAME; priv->ctrl_flags = cpu_to_be32(MLX4_WQE_CTRL_CQ_UPDATE | MLX4_WQE_CTRL_SOLICITED); priv->num_tx_rings_p_up = mdev->profile.num_tx_rings_p_up; @@ -2261,6 +2502,7 @@ } priv->rx_ring_num = prof->rx_ring_num; priv->cqe_factor = (mdev->dev->caps.cqe_size == 64) ? 1 : 0; + priv->cqe_size = mdev->dev->caps.cqe_size; priv->mac_index = -1; priv->msg_enable = MLX4_EN_MSG_LEVEL; spin_lock_init(&priv->stats_lock); @@ -2269,6 +2511,10 @@ INIT_WORK(&priv->linkstate_task, mlx4_en_linkstate); INIT_DELAYED_WORK(&priv->stats_task, mlx4_en_do_get_stats); INIT_DELAYED_WORK(&priv->service_task, mlx4_en_service_task); +#ifdef CONFIG_MLX4_EN_VXLAN + INIT_WORK(&priv->vxlan_add_task, mlx4_en_add_vxlan_offloads); + INIT_WORK(&priv->vxlan_del_task, mlx4_en_del_vxlan_offloads); +#endif #ifdef CONFIG_MLX4_EN_DCB if (!mlx4_is_slave(priv->mdev->dev)) { if (mdev->dev->caps.flags & MLX4_DEV_CAP_FLAG_SET_ETH_SCHED) { @@ -2293,7 +2539,7 @@ if (mlx4_is_slave(priv->mdev->dev)) { eth_hw_addr_random(dev); en_warn(priv, "Assigned random MAC address %pM\n", dev->dev_addr); - mac_u64 = mlx4_en_mac_to_u64(dev->dev_addr); + mac_u64 = mlx4_mac_to_u64(dev->dev_addr); mdev->dev->caps.def_mac[priv->port] = mac_u64; } else { en_err(priv, "Port: %d, invalid mac burned: %pM, quiting\n", @@ -2303,7 +2549,7 @@ } } - memcpy(priv->prev_mac, dev->dev_addr, sizeof(priv->prev_mac)); + memcpy(priv->current_mac, dev->dev_addr, sizeof(priv->current_mac)); priv->stride = roundup_pow_of_two(sizeof(struct mlx4_en_rx_desc) + DS_SIZE * MLX4_EN_MAX_RX_FRAGS); @@ -2356,7 +2602,8 @@ dev->features = dev->hw_features | NETIF_F_HIGHDMA | NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_HW_VLAN_CTAG_RX | NETIF_F_HW_VLAN_CTAG_FILTER; - dev->hw_features |= NETIF_F_LOOPBACK; + dev->hw_features |= NETIF_F_LOOPBACK | + NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_HW_VLAN_CTAG_RX; if (mdev->dev->caps.steering_mode == MLX4_STEERING_MODE_DEVICE_MANAGED) @@ -2365,18 +2612,18 @@ if (mdev->dev->caps.steering_mode != MLX4_STEERING_MODE_A0) dev->priv_flags |= IFF_UNICAST_FLT; + if (mdev->dev->caps.tunnel_offload_mode == MLX4_TUNNEL_OFFLOAD_MODE_VXLAN) { + dev->hw_enc_features |= NETIF_F_IP_CSUM | NETIF_F_RXCSUM | + NETIF_F_TSO | NETIF_F_GSO_UDP_TUNNEL; + dev->hw_features |= NETIF_F_GSO_UDP_TUNNEL; + dev->features |= NETIF_F_GSO_UDP_TUNNEL; + } + mdev->pndev[port] = dev; netif_carrier_off(dev); mlx4_en_set_default_moderation(priv); - err = register_netdev(dev); - if (err) { - en_err(priv, "Netdev registration failed for port %d\n", port); - goto out; - } - priv->registered = 1; - en_warn(priv, "Using %d TX rings\n", prof->tx_ring_num); en_warn(priv, "Using %d RX rings\n", prof->rx_ring_num); @@ -2394,6 +2641,15 @@ goto out; } + if (mdev->dev->caps.tunnel_offload_mode == MLX4_TUNNEL_OFFLOAD_MODE_VXLAN) { + err = mlx4_SET_PORT_VXLAN(mdev->dev, priv->port, VXLAN_STEER_BY_OUTER_MAC, 1); + if (err) { + en_err(priv, "Failed setting port L2 tunnel configuration, err %d\n", + err); + goto out; + } + } + /* Init port */ en_warn(priv, "Initializing port\n"); err = mlx4_INIT_PORT(mdev->dev, priv->port); @@ -2403,9 +2659,20 @@ } 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); + + err = register_netdev(dev); + if (err) { + en_err(priv, "Netdev registration failed for port %d\n", port); + goto out; + } + + priv->registered = 1; return 0; @@ -2414,3 +2681,79 @@ return err; } +int mlx4_en_reset_config(struct net_device *dev, + struct hwtstamp_config ts_config, + netdev_features_t features) +{ + struct mlx4_en_priv *priv = netdev_priv(dev); + struct mlx4_en_dev *mdev = priv->mdev; + int port_up = 0; + int err = 0; + + if (priv->hwtstamp_config.tx_type == ts_config.tx_type && + priv->hwtstamp_config.rx_filter == ts_config.rx_filter && + !DEV_FEATURE_CHANGED(dev, features, NETIF_F_HW_VLAN_CTAG_RX)) + return 0; /* Nothing to change */ + + if (DEV_FEATURE_CHANGED(dev, features, NETIF_F_HW_VLAN_CTAG_RX) && + (features & NETIF_F_HW_VLAN_CTAG_RX) && + (priv->hwtstamp_config.rx_filter != HWTSTAMP_FILTER_NONE)) { + en_warn(priv, "Can't turn ON rx vlan offload while time-stamping rx filter is ON\n"); + return -EINVAL; + } + + mutex_lock(&mdev->state_lock); + if (priv->port_up) { + port_up = 1; + mlx4_en_stop_port(dev, 1); + } + + mlx4_en_free_resources(priv); + + en_warn(priv, "Changing device configuration rx filter(%x) rx vlan(%x)\n", + ts_config.rx_filter, !!(features & NETIF_F_HW_VLAN_CTAG_RX)); + + priv->hwtstamp_config.tx_type = ts_config.tx_type; + priv->hwtstamp_config.rx_filter = ts_config.rx_filter; + + if (DEV_FEATURE_CHANGED(dev, features, NETIF_F_HW_VLAN_CTAG_RX)) { + if (features & NETIF_F_HW_VLAN_CTAG_RX) + dev->features |= NETIF_F_HW_VLAN_CTAG_RX; + else + dev->features &= ~NETIF_F_HW_VLAN_CTAG_RX; + } else if (ts_config.rx_filter == HWTSTAMP_FILTER_NONE) { + /* RX time-stamping is OFF, update the RX vlan offload + * to the latest wanted state + */ + if (dev->wanted_features & NETIF_F_HW_VLAN_CTAG_RX) + dev->features |= NETIF_F_HW_VLAN_CTAG_RX; + else + dev->features &= ~NETIF_F_HW_VLAN_CTAG_RX; + } + + /* RX vlan offload and RX time-stamping can't co-exist ! + * Regardless of the caller's choice, + * Turn Off RX vlan offload in case of time-stamping is ON + */ + if (ts_config.rx_filter != HWTSTAMP_FILTER_NONE) { + if (dev->features & NETIF_F_HW_VLAN_CTAG_RX) + en_warn(priv, "Turning off RX vlan offload since RX time-stamping is ON\n"); + dev->features &= ~NETIF_F_HW_VLAN_CTAG_RX; + } + + err = mlx4_en_alloc_resources(priv); + if (err) { + en_err(priv, "Failed reallocating port resources\n"); + goto out; + } + if (port_up) { + err = mlx4_en_start_port(dev); + if (err) + en_err(priv, "Failed starting port\n"); + } + +out: + mutex_unlock(&mdev->state_lock); + netdev_features_change(dev); + return err; +} --- linux-3.13.0.orig/drivers/net/ethernet/mellanox/mlx4/en_port.c +++ linux-3.13.0/drivers/net/ethernet/mellanox/mlx4/en_port.c @@ -91,21 +91,37 @@ * already synchronized, no need in locking */ state->link_state = !!(qport_context->link_up & MLX4_EN_LINK_UP_MASK); switch (qport_context->link_speed & MLX4_EN_SPEED_MASK) { + case MLX4_EN_100M_SPEED: + state->link_speed = SPEED_100; + break; case MLX4_EN_1G_SPEED: - state->link_speed = 1000; + state->link_speed = SPEED_1000; break; case MLX4_EN_10G_SPEED_XAUI: case MLX4_EN_10G_SPEED_XFI: - state->link_speed = 10000; + state->link_speed = SPEED_10000; + break; + case MLX4_EN_20G_SPEED: + state->link_speed = SPEED_20000; break; case MLX4_EN_40G_SPEED: - state->link_speed = 40000; + state->link_speed = SPEED_40000; + break; + case MLX4_EN_56G_SPEED: + state->link_speed = SPEED_56000; break; default: state->link_speed = -1; break; } - state->transciver = qport_context->transceiver; + + state->transceiver = qport_context->transceiver; + + state->flags = 0; /* Reset and recalculate the port flags */ + state->flags |= (qport_context->link_up & MLX4_EN_ANC_MASK) ? + MLX4_EN_PORT_ANC : 0; + state->flags |= (qport_context->autoneg & MLX4_EN_AUTONEG_MASK) ? + MLX4_EN_PORT_ANE : 0; out: mlx4_free_cmd_mailbox(mdev->dev, mailbox); @@ -148,10 +164,16 @@ stats->tx_packets = 0; stats->tx_bytes = 0; priv->port_stats.tx_chksum_offload = 0; + priv->port_stats.queue_stopped = 0; + priv->port_stats.wake_queue = 0; + for (i = 0; i < priv->tx_ring_num; i++) { stats->tx_packets += priv->tx_ring[i]->packets; stats->tx_bytes += priv->tx_ring[i]->bytes; priv->port_stats.tx_chksum_offload += priv->tx_ring[i]->tx_csum; + priv->port_stats.queue_stopped += + priv->tx_ring[i]->queue_stopped; + priv->port_stats.wake_queue += priv->tx_ring[i]->wake_queue; } stats->rx_errors = be64_to_cpu(mlx4_en_stats->PCS) + @@ -171,11 +193,11 @@ be64_to_cpu(mlx4_en_stats->MCAST_novlan); stats->collisions = 0; 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-3.13.0.orig/drivers/net/ethernet/mellanox/mlx4/en_port.h +++ linux-3.13.0/drivers/net/ethernet/mellanox/mlx4/en_port.h @@ -53,22 +53,49 @@ MLX4_MCAST_ENABLE = 2, }; +enum mlx4_link_mode { + MLX4_1000BASE_CX_SGMII = 0, + MLX4_1000BASE_KX = 1, + MLX4_10GBASE_CX4 = 2, + MLX4_10GBASE_KX4 = 3, + MLX4_10GBASE_KR = 4, + MLX4_20GBASE_KR2 = 5, + MLX4_40GBASE_CR4 = 6, + MLX4_40GBASE_KR4 = 7, + MLX4_56GBASE_KR4 = 8, + MLX4_10GBASE_CR = 12, + MLX4_10GBASE_SR = 13, + MLX4_40GBASE_SR4 = 15, + MLX4_56GBASE_CR4 = 17, + MLX4_56GBASE_SR4 = 18, + MLX4_100BASE_TX = 24, + MLX4_1000BASE_T = 25, + MLX4_10GBASE_T = 26, +}; + +#define MLX4_PROT_MASK(link_mode) (1<db_rec_addr = cpu_to_be64(priv->res.db.dma << 2); if (!(dev->features & NETIF_F_HW_VLAN_CTAG_RX)) context->param3 |= cpu_to_be32(1 << 30); + + if (!is_tx && !rss && + (mdev->dev->caps.tunnel_offload_mode == MLX4_TUNNEL_OFFLOAD_MODE_VXLAN)) { + en_dbg(HW, priv, "Setting RX qp %x tunnel mode to RX tunneled & non-tunneled\n", qpn); + context->srqn = cpu_to_be32(7 << 28); /* this fills bits 30:28 */ + } } --- linux-3.13.0.orig/drivers/net/ethernet/mellanox/mlx4/en_rx.c +++ linux-3.13.0/drivers/net/ethernet/mellanox/mlx4/en_rx.c @@ -40,6 +40,7 @@ #include #include #include +#include #include "mlx4_en.h" @@ -318,6 +319,32 @@ } } +void mlx4_en_set_num_rx_rings(struct mlx4_en_dev *mdev) +{ + int i; + int num_of_eqs; + int num_rx_rings; + struct mlx4_dev *dev = mdev->dev; + + mlx4_foreach_port(i, dev, MLX4_PORT_TYPE_ETH) { + if (!dev->caps.comp_pool) + num_of_eqs = max_t(int, MIN_RX_RINGS, + min_t(int, + dev->caps.num_comp_vectors, + DEF_RX_RINGS)); + else + num_of_eqs = min_t(int, MAX_MSIX_P_PORT, + dev->caps.comp_pool/ + dev->caps.num_ports) - 1; + + num_rx_rings = mlx4_low_memory_profile() ? MIN_RX_RINGS : + min_t(int, num_of_eqs, + netif_get_num_default_rss_queues()); + mdev->profile.prof[i].rx_ring_num = + rounddown_pow_of_two(num_rx_rings); + } +} + int mlx4_en_create_rx_ring(struct mlx4_en_priv *priv, struct mlx4_en_rx_ring **pring, u32 size, u16 stride, int node) @@ -631,15 +658,19 @@ int ip_summed; int factor = priv->cqe_factor; u64 timestamp; + bool l2_tunnel; if (!priv->port_up) return 0; + if (budget <= 0) + return polled; + /* We assume a 1:1 mapping between CQEs and Rx descriptors, so Rx * descriptor offset can be deduced from the CQE index instead of * reading 'cqe->index' */ index = cq->mcq.cons_index & ring->size_mask; - cqe = &cq->buf[(index << factor) + factor]; + cqe = mlx4_en_get_cqe(cq->buf, index, priv->cqe_size) + factor; /* Process all completed CQEs */ while (XNOR(cqe->owner_sr_opcode & MLX4_CQE_OWNER_MASK, @@ -709,6 +740,8 @@ length -= ring->fcs_del; ring->bytes += length; ring->packets++; + l2_tunnel = (dev->hw_enc_features & NETIF_F_RXCSUM) && + (cqe->vlan_my_qpn & cpu_to_be32(MLX4_CQE_L2_TUNNEL)); if (likely(dev->features & NETIF_F_RXCSUM)) { if ((cqe->status & cpu_to_be16(MLX4_CQE_STATUS_IPOK)) && @@ -721,7 +754,7 @@ * - not an IP fragment * - no LLS polling in progress */ - if (!mlx4_en_cq_ll_polling(cq) && + if (!mlx4_en_cq_busy_polling(cq) && (dev->features & NETIF_F_GRO)) { struct sk_buff *gro_skb = napi_get_frags(&cq->napi); if (!gro_skb) @@ -738,6 +771,8 @@ gro_skb->data_len = length; gro_skb->ip_summed = CHECKSUM_UNNECESSARY; + if (l2_tunnel) + gro_skb->encapsulation = 1; if ((cqe->vlan_my_qpn & cpu_to_be32(MLX4_CQE_VLAN_PRESENT_MASK)) && (dev->features & NETIF_F_HW_VLAN_CTAG_RX)) { @@ -788,6 +823,9 @@ skb->protocol = eth_type_trans(skb, dev); skb_record_rx_queue(skb, cq->ring); + if (l2_tunnel) + skb->encapsulation = 1; + if (dev->features & NETIF_F_RXHASH) skb->rxhash = be32_to_cpu(cqe->immed_rss_invalid); @@ -804,8 +842,10 @@ skb_mark_napi_id(skb, &cq->napi); - /* Push it up the stack */ - netif_receive_skb(skb); + if (!mlx4_en_cq_busy_polling(cq)) + napi_gro_receive(&cq->napi, skb); + else + netif_receive_skb(skb); next: for (nr = 0; nr < priv->num_frags; nr++) @@ -813,7 +853,7 @@ ++cq->mcq.cons_index; index = (cq->mcq.cons_index) & ring->size_mask; - cqe = &cq->buf[(index << factor) + factor]; + cqe = mlx4_en_get_cqe(cq->buf, index, priv->cqe_size) + factor; if (++polled == budget) goto out; } @@ -856,9 +896,25 @@ mlx4_en_cq_unlock_napi(cq); /* If we used up all the quota - we're probably not done yet... */ - if (done == budget) + if (done == budget) { + int cpu_curr; + const struct cpumask *aff; + INC_PERF_COUNTER(priv->pstats.napi_quota); - else { + + cpu_curr = smp_processor_id(); + aff = irq_desc_get_irq_data(cq->irq_desc)->affinity; + + if (unlikely(!cpumask_test_cpu(cpu_curr, aff))) { + /* Current cpu is not according to smp_irq_affinity - + * probably affinity changed. need to stop this NAPI + * poll, and restart it on the right CPU + */ + napi_complete(napi); + mlx4_en_arm_cq(priv, cq); + return 0; + } + } else { /* Done for now */ napi_complete(napi); mlx4_en_arm_cq(priv, cq); @@ -1053,6 +1109,12 @@ rss_mask |= MLX4_RSS_UDP_IPV4 | MLX4_RSS_UDP_IPV6; rss_context->base_qpn_udp = rss_context->default_qpn; } + + if (mdev->dev->caps.tunnel_offload_mode == MLX4_TUNNEL_OFFLOAD_MODE_VXLAN) { + en_info(priv, "Setting RSS context tunnel type to RSS on inner headers\n"); + rss_mask |= MLX4_RSS_BY_INNER_HEADERS; + } + rss_context->flags = rss_mask; rss_context->hash_fn = MLX4_RSS_HASH_TOP; for (i = 0; i < 10; i++) --- linux-3.13.0.orig/drivers/net/ethernet/mellanox/mlx4/en_selftest.c +++ linux-3.13.0/drivers/net/ethernet/mellanox/mlx4/en_selftest.c @@ -129,9 +129,15 @@ if (mlx4_en_QUERY_PORT(priv->mdev, priv->port)) return -ENOMEM; - /* The device currently only supports 10G speed */ - if (priv->port_state.link_speed != SPEED_10000) + /* The device supports 100M, 1G, 10G, 20G, 40G and 56G speed */ + if (priv->port_state.link_speed != SPEED_100 && + priv->port_state.link_speed != SPEED_1000 && + priv->port_state.link_speed != SPEED_10000 && + priv->port_state.link_speed != SPEED_20000 && + priv->port_state.link_speed != SPEED_40000 && + priv->port_state.link_speed != SPEED_56000) return priv->port_state.link_speed; + return 0; } --- linux-3.13.0.orig/drivers/net/ethernet/mellanox/mlx4/en_tx.c +++ linux-3.13.0/drivers/net/ethernet/mellanox/mlx4/en_tx.c @@ -39,23 +39,14 @@ #include #include #include +#include #include #include "mlx4_en.h" -enum { - MAX_INLINE = 104, /* 128 - 16 - 4 - 4 */ - MAX_BF = 256, -}; - -static int inline_thold __read_mostly = MAX_INLINE; - -module_param_named(inline_thold, inline_thold, int, 0444); -MODULE_PARM_DESC(inline_thold, "threshold for using inline data"); - int mlx4_en_create_tx_ring(struct mlx4_en_priv *priv, struct mlx4_en_tx_ring **pring, int qpn, u32 size, - u16 stride, int node) + u16 stride, int node, int queue_index) { struct mlx4_en_dev *mdev = priv->mdev; struct mlx4_en_tx_ring *ring; @@ -74,8 +65,7 @@ ring->size = size; ring->size_mask = size - 1; ring->stride = stride; - - inline_thold = min(inline_thold, MAX_INLINE); + ring->inline_thold = priv->prof->inline_thold; tmp = size * sizeof(struct mlx4_en_tx_info); ring->tx_info = vmalloc_node(tmp, node); @@ -136,10 +126,19 @@ ring->bf.uar = &mdev->priv_uar; ring->bf.uar->map = mdev->uar_map; ring->bf_enabled = false; - } else - ring->bf_enabled = true; + ring->bf_alloced = false; + priv->pflags &= ~MLX4_EN_PRIV_FLAGS_BLUEFLAME; + } else { + ring->bf_alloced = true; + ring->bf_enabled = !!(priv->pflags & + MLX4_EN_PRIV_FLAGS_BLUEFLAME); + } ring->hwtstamp_tx_type = priv->hwtstamp_config.tx_type; + ring->queue_index = queue_index; + + if (queue_index < priv->num_tx_rings_p_up && cpu_online(queue_index)) + cpumask_set_cpu(queue_index, &ring->affinity_mask); *pring = ring; return 0; @@ -167,7 +166,7 @@ struct mlx4_en_tx_ring *ring = *pring; en_dbg(DRV, priv, "Destroying tx ring, qpn: %d\n", ring->qpn); - if (ring->bf_enabled) + if (ring->bf_alloced) mlx4_bf_free(mdev->dev, &ring->bf); mlx4_qp_remove(mdev->dev, &ring->qp); mlx4_qp_free(mdev->dev, &ring->qp); @@ -201,11 +200,14 @@ mlx4_en_fill_qp_context(priv, ring->size, ring->stride, 1, 0, ring->qpn, ring->cqn, user_prio, &ring->context); - if (ring->bf_enabled) + if (ring->bf_alloced) ring->context.usr_page = cpu_to_be32(ring->bf.uar->index); err = mlx4_qp_to_ready(mdev->dev, &ring->wqres.mtt, &ring->context, &ring->qp, &ring->qp_state); + if (!user_prio && cpu_online(ring->queue_index)) + netif_set_xps_queue(priv->dev, &ring->affinity_mask, + ring->queue_index); return err; } @@ -354,7 +356,9 @@ return cnt; } -static void mlx4_en_process_tx_cq(struct net_device *dev, struct mlx4_en_cq *cq) +static int mlx4_en_process_tx_cq(struct net_device *dev, + struct mlx4_en_cq *cq, + int budget) { struct mlx4_en_priv *priv = netdev_priv(dev); struct mlx4_cq *mcq = &cq->mcq; @@ -372,18 +376,19 @@ u32 bytes = 0; int factor = priv->cqe_factor; u64 timestamp = 0; + int done = 0; if (!priv->port_up) - return; + return 0; index = cons_index & size_mask; - cqe = &buf[(index << factor) + factor]; + cqe = mlx4_en_get_cqe(buf, index, priv->cqe_size) + factor; ring_index = ring->cons & size_mask; stamp_index = ring_index; /* Process all completed CQEs */ while (XNOR(cqe->owner_sr_opcode & MLX4_CQE_OWNER_MASK, - cons_index & size)) { + cons_index & size) && (done < budget)) { /* * make sure we read the CQE after we read the * ownership bit @@ -421,11 +426,11 @@ txbbs_stamp = txbbs_skipped; packets++; bytes += ring->tx_info[ring_index].nr_bytes; - } while (ring_index != new_index); + } while ((++done < budget) && (ring_index != new_index)); ++cons_index; index = cons_index & size_mask; - cqe = &buf[(index << factor) + factor]; + cqe = mlx4_en_get_cqe(buf, index, priv->cqe_size) + factor; } @@ -445,8 +450,9 @@ */ if (netif_tx_queue_stopped(ring->tx_queue) && txbbs_skipped > 0) { netif_tx_wake_queue(ring->tx_queue); - priv->port_stats.wake_queue++; + ring->wake_queue++; } + return done; } void mlx4_en_tx_irq(struct mlx4_cq *mcq) @@ -454,10 +460,31 @@ struct mlx4_en_cq *cq = container_of(mcq, struct mlx4_en_cq, mcq); struct mlx4_en_priv *priv = netdev_priv(cq->dev); - mlx4_en_process_tx_cq(cq->dev, cq); - mlx4_en_arm_cq(priv, cq); + if (priv->port_up) + napi_schedule(&cq->napi); + else + mlx4_en_arm_cq(priv, cq); } +/* TX CQ polling - called by NAPI */ +int mlx4_en_poll_tx_cq(struct napi_struct *napi, int budget) +{ + struct mlx4_en_cq *cq = container_of(napi, struct mlx4_en_cq, napi); + struct net_device *dev = cq->dev; + struct mlx4_en_priv *priv = netdev_priv(dev); + int done; + + done = mlx4_en_process_tx_cq(dev, cq, budget); + + /* If we used up all the quota - we're probably not done yet... */ + if (done < budget) { + /* Done for now */ + napi_complete(napi); + mlx4_en_arm_cq(priv, cq); + return done; + } + return budget; +} static struct mlx4_en_tx_desc *mlx4_en_bounce_to_desc(struct mlx4_en_priv *priv, struct mlx4_en_tx_ring *ring, @@ -487,7 +514,7 @@ return ring->buf + index * TXBB_SIZE; } -static int is_inline(struct sk_buff *skb, void **pfrag) +static int is_inline(int inline_thold, struct sk_buff *skb, void **pfrag) { void *ptr; @@ -528,7 +555,10 @@ int real_size; if (skb_is_gso(skb)) { - *lso_header_size = skb_transport_offset(skb) + tcp_hdrlen(skb); + if (skb->encapsulation) + *lso_header_size = (skb_inner_transport_header(skb) - skb->data) + inner_tcp_hdrlen(skb); + else + *lso_header_size = skb_transport_offset(skb) + tcp_hdrlen(skb); real_size = CTRL_SIZE + skb_shinfo(skb)->nr_frags * DS_SIZE + ALIGN(*lso_header_size + 4, DS_SIZE); if (unlikely(*lso_header_size != skb_headlen(skb))) { @@ -544,7 +574,7 @@ } } else { *lso_header_size = 0; - if (!is_inline(skb, NULL)) + if (!is_inline(priv->prof->inline_thold, skb, NULL)) real_size = CTRL_SIZE + (skb_shinfo(skb)->nr_frags + 1) * DS_SIZE; else real_size = inline_size(skb); @@ -560,7 +590,13 @@ int spc = MLX4_INLINE_ALIGN - CTRL_SIZE - sizeof *inl; if (skb->len <= spc) { - inl->byte_count = cpu_to_be32(1 << 31 | skb->len); + if (likely(skb->len >= MIN_PKT_LEN)) { + inl->byte_count = cpu_to_be32(1 << 31 | skb->len); + } else { + inl->byte_count = cpu_to_be32(1 << 31 | MIN_PKT_LEN); + memset(((void *)(inl + 1)) + skb->len, 0, + MIN_PKT_LEN - skb->len); + } skb_copy_from_linear_data(skb, inl + 1, skb_headlen(skb)); if (skb_shinfo(skb)->nr_frags) memcpy(((void *)(inl + 1)) + skb_headlen(skb), fragptr, @@ -593,7 +629,7 @@ } u16 mlx4_en_select_queue(struct net_device *dev, struct sk_buff *skb, - void *accel_priv) + void *accel_priv, select_queue_fallback_t fallback) { struct mlx4_en_priv *priv = netdev_priv(dev); u16 rings_p_up = priv->num_tx_rings_p_up; @@ -605,7 +641,7 @@ if (vlan_tx_tag_present(skb)) up = vlan_tx_tag_get(skb) >> VLAN_PRIO_SHIFT; - return __netdev_pick_tx(dev, skb) % rings_p_up + up * rings_p_up; + return fallback(dev, skb) % rings_p_up + up * rings_p_up; } static void mlx4_bf_copy(void __iomem *dst, unsigned long *src, unsigned bytecnt) @@ -660,7 +696,7 @@ ring->size - HEADROOM - MAX_DESC_TXBBS)) { /* every full Tx ring stops queue */ netif_tx_stop_queue(ring->tx_queue); - priv->port_stats.queue_stopped++; + ring->queue_stopped++; /* If queue was emptied after the if, and before the * stop_queue - need to wake the queue, or else it will remain @@ -673,7 +709,7 @@ if (unlikely(((int)(ring->prod - ring->cons)) <= ring->size - HEADROOM - MAX_DESC_TXBBS)) { netif_tx_wake_queue(ring->tx_queue); - priv->port_stats.wake_queue++; + ring->wake_queue++; } else { return NETDEV_TX_BUSY; } @@ -711,11 +747,11 @@ tx_info->data_offset = (void *)data - (void *)tx_desc; tx_info->linear = (lso_header_size < skb_headlen(skb) && - !is_inline(skb, NULL)) ? 1 : 0; + !is_inline(ring->inline_thold, skb, NULL)) ? 1 : 0; data += skb_shinfo(skb)->nr_frags + tx_info->linear - 1; - if (is_inline(skb, &fragptr)) { + if (is_inline(ring->inline_thold, skb, &fragptr)) { tx_info->inl = 1; } else { /* Map fragments */ @@ -828,6 +864,14 @@ tx_info->inl = 1; } + if (skb->encapsulation) { + struct iphdr *ipv4 = (struct iphdr *)skb_inner_network_header(skb); + if (ipv4->protocol == IPPROTO_TCP || ipv4->protocol == IPPROTO_UDP) + op_own |= cpu_to_be32(MLX4_WQE_CTRL_IIP | MLX4_WQE_CTRL_ILP); + else + op_own |= cpu_to_be32(MLX4_WQE_CTRL_IIP); + } + ring->prod += nr_txbb; /* If we used a bounce buffer then copy descriptor back into place */ @@ -837,7 +881,8 @@ skb_tx_timestamp(skb); if (ring->bf_enabled && desc_size <= MAX_BF && !bounce && !vlan_tx_tag_present(skb)) { - *(__be32 *) (&tx_desc->ctrl.vlan_tag) |= cpu_to_be32(ring->doorbell_qpn); + tx_desc->ctrl.bf_qpn |= cpu_to_be32(ring->doorbell_qpn); + op_own |= htonl((bf_index & 0xffff) << 8); /* Ensure new descirptor hits memory * before setting ownership of this descriptor to HW */ --- linux-3.13.0.orig/drivers/net/ethernet/mellanox/mlx4/eq.c +++ linux-3.13.0/drivers/net/ethernet/mellanox/mlx4/eq.c @@ -102,21 +102,24 @@ mb(); } -static struct mlx4_eqe *get_eqe(struct mlx4_eq *eq, u32 entry, u8 eqe_factor) +static struct mlx4_eqe *get_eqe(struct mlx4_eq *eq, u32 entry, u8 eqe_factor, + u8 eqe_size) { /* (entry & (eq->nent - 1)) gives us a cyclic array */ - unsigned long offset = (entry & (eq->nent - 1)) * (MLX4_EQ_ENTRY_SIZE << eqe_factor); - /* CX3 is capable of extending the EQE from 32 to 64 bytes. - * When this feature is enabled, the first (in the lower addresses) + unsigned long offset = (entry & (eq->nent - 1)) * eqe_size; + /* CX3 is capable of extending the EQE from 32 to 64 bytes with + * strides of 64B,128B and 256B. + * When 64B EQE is used, the first (in the lower addresses) * 32 bytes in the 64 byte EQE are reserved and the next 32 bytes * contain the legacy EQE information. + * In all other cases, the first 32B contains the legacy EQE info. */ return eq->page_list[offset / PAGE_SIZE].buf + (offset + (eqe_factor ? MLX4_EQ_ENTRY_SIZE : 0)) % PAGE_SIZE; } -static struct mlx4_eqe *next_eqe_sw(struct mlx4_eq *eq, u8 eqe_factor) +static struct mlx4_eqe *next_eqe_sw(struct mlx4_eq *eq, u8 eqe_factor, u8 size) { - struct mlx4_eqe *eqe = get_eqe(eq, eq->cons_index, eqe_factor); + struct mlx4_eqe *eqe = get_eqe(eq, eq->cons_index, eqe_factor, size); return !!(eqe->owner & 0x80) ^ !!(eq->cons_index & eq->nent) ? NULL : eqe; } @@ -184,7 +187,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 */ wmb(); @@ -272,7 +275,10 @@ { struct mlx4_priv *priv = mlx4_priv(dev); struct mlx4_slave_state *s_state = priv->mfunc.master.slave_state; - if (slave >= dev->num_slaves || port > MLX4_MAX_PORTS) { + struct mlx4_active_ports actv_ports = mlx4_get_active_ports(dev, slave); + + if (slave >= dev->num_slaves || port > dev->caps.num_ports || + port <= 0 || !test_bit(port - 1, actv_ports.ports)) { pr_err("%s: Error: asking for slave:%d, port:%d\n", __func__, slave, port); return SLAVE_PORT_DOWN; @@ -286,8 +292,10 @@ { struct mlx4_priv *priv = mlx4_priv(dev); struct mlx4_slave_state *s_state = priv->mfunc.master.slave_state; + struct mlx4_active_ports actv_ports = mlx4_get_active_ports(dev, slave); - if (slave >= dev->num_slaves || port > MLX4_MAX_PORTS || port == 0) { + if (slave >= dev->num_slaves || port > dev->caps.num_ports || + port <= 0 || !test_bit(port - 1, actv_ports.ports)) { pr_err("%s: Error: asking for slave:%d, port:%d\n", __func__, slave, port); return -1; @@ -301,9 +309,13 @@ { int i; enum slave_port_gen_event gen_event; + struct mlx4_slaves_pport slaves_pport = mlx4_phys_to_slaves_pport(dev, + port); - for (i = 0; i < dev->num_slaves; i++) - set_and_calc_slave_port_state(dev, i, port, event, &gen_event); + for (i = 0; i < dev->num_vfs + 1; i++) + if (test_bit(i, slaves_pport.slaves)) + set_and_calc_slave_port_state(dev, i, port, + event, &gen_event); } /************************************************************************** The function get as input the new event to that port, @@ -322,12 +334,14 @@ struct mlx4_slave_state *ctx = NULL; unsigned long flags; int ret = -1; + struct mlx4_active_ports actv_ports = mlx4_get_active_ports(dev, slave); enum slave_port_state cur_state = mlx4_get_slave_port_state(dev, slave, port); *gen_event = SLAVE_PORT_GEN_EVENT_NONE; - if (slave >= dev->num_slaves || port > MLX4_MAX_PORTS || port == 0) { + if (slave >= dev->num_slaves || port > dev->caps.num_ports || + port <= 0 || !test_bit(port - 1, actv_ports.ports)) { pr_err("%s: Error: asking for slave:%d, port:%d\n", __func__, slave, port); return ret; @@ -450,8 +464,9 @@ enum slave_port_gen_event gen_event; unsigned long flags; struct mlx4_vport_state *s_info; + int eqe_size = dev->caps.eqe_size; - while ((eqe = next_eqe_sw(eq, dev->caps.eqe_factor))) { + while ((eqe = next_eqe_sw(eq, dev->caps.eqe_factor, eqe_size))) { /* * Make sure we read EQ entry contents after we've * checked the ownership bit. @@ -543,24 +558,33 @@ be64_to_cpu(eqe->event.cmd.out_param)); break; - case MLX4_EVENT_TYPE_PORT_CHANGE: + case MLX4_EVENT_TYPE_PORT_CHANGE: { + struct mlx4_slaves_pport slaves_port; port = be32_to_cpu(eqe->event.port_change.port) >> 28; + slaves_port = mlx4_phys_to_slaves_pport(dev, port); if (eqe->subtype == MLX4_PORT_CHANGE_SUBTYPE_DOWN) { mlx4_dispatch_event(dev, MLX4_DEV_EVENT_PORT_DOWN, port); mlx4_priv(dev)->sense.do_sense_port[port] = 1; if (!mlx4_is_master(dev)) break; - for (i = 0; i < dev->num_slaves; i++) { + for (i = 0; i < dev->num_vfs + 1; i++) { + if (!test_bit(i, slaves_port.slaves)) + continue; if (dev->caps.port_type[port] == MLX4_PORT_TYPE_ETH) { if (i == mlx4_master_func_num(dev)) continue; mlx4_dbg(dev, "%s: Sending MLX4_PORT_CHANGE_SUBTYPE_DOWN" " to slave: %d, port:%d\n", __func__, i, port); - s_info = &priv->mfunc.master.vf_oper[slave].vport[port].state; - if (IFLA_VF_LINK_STATE_AUTO == s_info->link_state) + s_info = &priv->mfunc.master.vf_oper[i].vport[port].state; + if (IFLA_VF_LINK_STATE_AUTO == s_info->link_state) { + eqe->event.port_change.port = + cpu_to_be32( + (be32_to_cpu(eqe->event.port_change.port) & 0xFFFFFFF) + | (mlx4_phys_to_slave_port(dev, i, port) << 28)); mlx4_slave_event(dev, i, eqe); + } } else { /* IB port */ set_and_calc_slave_port_state(dev, i, port, MLX4_PORT_STATE_DEV_EVENT_PORT_DOWN, @@ -581,12 +605,19 @@ if (!mlx4_is_master(dev)) break; if (dev->caps.port_type[port] == MLX4_PORT_TYPE_ETH) - for (i = 0; i < dev->num_slaves; i++) { + for (i = 0; i < dev->num_vfs + 1; i++) { + if (!test_bit(i, slaves_port.slaves)) + continue; if (i == mlx4_master_func_num(dev)) continue; - s_info = &priv->mfunc.master.vf_oper[slave].vport[port].state; - if (IFLA_VF_LINK_STATE_AUTO == s_info->link_state) + s_info = &priv->mfunc.master.vf_oper[i].vport[port].state; + if (IFLA_VF_LINK_STATE_AUTO == s_info->link_state) { + eqe->event.port_change.port = + cpu_to_be32( + (be32_to_cpu(eqe->event.port_change.port) & 0xFFFFFFF) + | (mlx4_phys_to_slave_port(dev, i, port) << 28)); mlx4_slave_event(dev, i, eqe); + } } else /* IB port */ /* port-up event will be sent to a slave when the @@ -595,6 +626,7 @@ set_all_slave_state(dev, port, MLX4_DEV_EVENT_PORT_UP); } break; + } case MLX4_EVENT_TYPE_CQ_ERROR: mlx4_warn(dev, "CQ %s on CQN %06x\n", @@ -886,8 +918,10 @@ eq->dev = dev; eq->nent = roundup_pow_of_two(max(nent, 2)); - /* CX3 is capable of extending the CQE/EQE from 32 to 64 bytes */ - npages = PAGE_ALIGN(eq->nent * (MLX4_EQ_ENTRY_SIZE << dev->caps.eqe_factor)) / PAGE_SIZE; + /* CX3 is capable of extending the CQE/EQE from 32 to 64 bytes, with + * strides of 64B,128B and 256B. + */ + npages = PAGE_ALIGN(eq->nent * dev->caps.eqe_size) / PAGE_SIZE; eq->page_list = kmalloc(npages * sizeof *eq->page_list, GFP_KERNEL); @@ -963,7 +997,7 @@ mlx4_mtt_cleanup(dev, &eq->mtt); err_out_free_eq: - mlx4_bitmap_free(&priv->eq_table.bitmap, eq->eqn); + mlx4_bitmap_free(&priv->eq_table.bitmap, eq->eqn, MLX4_USE_RR); err_out_free_pages: for (i = 0; i < npages; ++i) @@ -989,8 +1023,10 @@ struct mlx4_cmd_mailbox *mailbox; int err; int i; - /* CX3 is capable of extending the CQE/EQE from 32 to 64 bytes */ - int npages = PAGE_ALIGN((MLX4_EQ_ENTRY_SIZE << dev->caps.eqe_factor) * eq->nent) / PAGE_SIZE; + /* CX3 is capable of extending the CQE/EQE from 32 to 64 bytes, with + * strides of 64B,128B and 256B + */ + int npages = PAGE_ALIGN(dev->caps.eqe_size * eq->nent) / PAGE_SIZE; mailbox = mlx4_alloc_cmd_mailbox(dev); if (IS_ERR(mailbox)) @@ -1018,7 +1054,7 @@ eq->page_list[i].map); kfree(eq->page_list); - mlx4_bitmap_free(&priv->eq_table.bitmap, eq->eqn); + mlx4_bitmap_free(&priv->eq_table.bitmap, eq->eqn, MLX4_USE_RR); mlx4_free_cmd_mailbox(dev, mailbox); } @@ -1345,6 +1381,7 @@ continue; /*we dont want to break here*/ } + eq_set_ci(&priv->eq_table.eq[vec], 1); } } @@ -1360,6 +1397,14 @@ } EXPORT_SYMBOL(mlx4_assign_eq); +int mlx4_eq_get_irq(struct mlx4_dev *dev, int vec) +{ + struct mlx4_priv *priv = mlx4_priv(dev); + + return priv->eq_table.eq[vec].irq; +} +EXPORT_SYMBOL(mlx4_eq_get_irq); + void mlx4_release_eq(struct mlx4_dev *dev, int vec) { struct mlx4_priv *priv = mlx4_priv(dev); --- linux-3.13.0.orig/drivers/net/ethernet/mellanox/mlx4/fw.c +++ linux-3.13.0/drivers/net/ethernet/mellanox/mlx4/fw.c @@ -129,12 +129,19 @@ [0] = "RSS support", [1] = "RSS Toeplitz Hash Function support", [2] = "RSS XOR Hash Function support", - [3] = "Device manage flow steering support", + [3] = "Device managed flow steering support", [4] = "Automatic MAC reassignment support", [5] = "Time stamping support", [6] = "VST (control vlan insertion/stripping) support", [7] = "FSM (MAC anti-spoofing) support", - [8] = "Dynamic QP updates support" + [8] = "Dynamic QP updates support", + [9] = "Device managed flow steering IPoIB support", + [10] = "TCP/IP offloads/flow-steering for VXLAN support", + [11] = "MAD DEMUX (Secure-Host) support", + [12] = "Large cache line (>64B) CQE stride support", + [13] = "Large cache line (>64B) EQE stride support", + [14] = "Ethernet protocol control support", + [15] = "Ethernet Backplane autoneg support" }; int i; @@ -207,29 +214,41 @@ /* when opcode modifier = 1 */ #define QUERY_FUNC_CAP_PHYS_PORT_OFFSET 0x3 -#define QUERY_FUNC_CAP_RDMA_PROPS_OFFSET 0x8 -#define QUERY_FUNC_CAP_ETH_PROPS_OFFSET 0xc +#define QUERY_FUNC_CAP_FLAGS0_OFFSET 0x8 +#define QUERY_FUNC_CAP_FLAGS1_OFFSET 0xc #define QUERY_FUNC_CAP_QP0_TUNNEL 0x10 #define QUERY_FUNC_CAP_QP0_PROXY 0x14 #define QUERY_FUNC_CAP_QP1_TUNNEL 0x18 #define QUERY_FUNC_CAP_QP1_PROXY 0x1c +#define QUERY_FUNC_CAP_PHYS_PORT_ID 0x28 -#define QUERY_FUNC_CAP_ETH_PROPS_FORCE_MAC 0x40 -#define QUERY_FUNC_CAP_ETH_PROPS_FORCE_VLAN 0x80 +#define QUERY_FUNC_CAP_FLAGS1_FORCE_MAC 0x40 +#define QUERY_FUNC_CAP_FLAGS1_FORCE_VLAN 0x80 +#define QUERY_FUNC_CAP_FLAGS1_NIC_INFO 0x10 -#define QUERY_FUNC_CAP_RDMA_PROPS_FORCE_PHY_WQE_GID 0x80 +#define QUERY_FUNC_CAP_FLAGS0_FORCE_PHY_WQE_GID 0x80 if (vhcr->op_modifier == 1) { - field = 0; - /* ensure force vlan and force mac bits are not set */ - MLX4_PUT(outbox->buf, field, QUERY_FUNC_CAP_ETH_PROPS_OFFSET); - /* ensure that phy_wqe_gid bit is not set */ - MLX4_PUT(outbox->buf, field, QUERY_FUNC_CAP_RDMA_PROPS_OFFSET); - - field = vhcr->in_modifier; /* phys-port = logical-port */ + struct mlx4_active_ports actv_ports = + mlx4_get_active_ports(dev, slave); + int converted_port = mlx4_slave_convert_port( + dev, slave, vhcr->in_modifier); + + if (converted_port < 0) + return -EINVAL; + + vhcr->in_modifier = converted_port; + /* Set nic_info bit to mark new fields support */ + field = QUERY_FUNC_CAP_FLAGS1_NIC_INFO; + MLX4_PUT(outbox->buf, field, QUERY_FUNC_CAP_FLAGS1_OFFSET); + + /* phys-port = logical-port */ + field = vhcr->in_modifier - + find_first_bit(actv_ports.ports, dev->caps.num_ports); MLX4_PUT(outbox->buf, field, QUERY_FUNC_CAP_PHYS_PORT_OFFSET); + field = vhcr->in_modifier; /* size is now the QP number */ size = dev->phys_caps.base_tunnel_sqpn + 8 * slave + field - 1; MLX4_PUT(outbox->buf, size, QUERY_FUNC_CAP_QP0_TUNNEL); @@ -243,13 +262,20 @@ size += 2; MLX4_PUT(outbox->buf, size, QUERY_FUNC_CAP_QP1_PROXY); + MLX4_PUT(outbox->buf, dev->caps.phys_port_id[vhcr->in_modifier], + QUERY_FUNC_CAP_PHYS_PORT_ID); + } else if (vhcr->op_modifier == 0) { + struct mlx4_active_ports actv_ports = + mlx4_get_active_ports(dev, slave); /* enable rdma and ethernet interfaces, and new quota locations */ field = (QUERY_FUNC_CAP_FLAG_ETH | QUERY_FUNC_CAP_FLAG_RDMA | QUERY_FUNC_CAP_FLAG_QUOTAS); MLX4_PUT(outbox->buf, field, QUERY_FUNC_CAP_FLAGS_OFFSET); - field = dev->caps.num_ports; + field = min( + bitmap_weight(actv_ports.ports, dev->caps.num_ports), + dev->caps.num_ports); MLX4_PUT(outbox->buf, field, QUERY_FUNC_CAP_NUM_PORTS_OFFSET); size = dev->caps.function_caps; /* set PF behaviours */ @@ -391,22 +417,22 @@ goto out; } + MLX4_GET(func_cap->flags1, outbox, QUERY_FUNC_CAP_FLAGS1_OFFSET); if (dev->caps.port_type[gen_or_port] == MLX4_PORT_TYPE_ETH) { - MLX4_GET(field, outbox, QUERY_FUNC_CAP_ETH_PROPS_OFFSET); - if (field & QUERY_FUNC_CAP_ETH_PROPS_FORCE_VLAN) { + if (func_cap->flags1 & QUERY_FUNC_CAP_FLAGS1_OFFSET) { mlx4_err(dev, "VLAN is enforced on this port\n"); err = -EPROTONOSUPPORT; goto out; } - if (field & QUERY_FUNC_CAP_ETH_PROPS_FORCE_MAC) { + if (func_cap->flags1 & QUERY_FUNC_CAP_FLAGS1_FORCE_MAC) { mlx4_err(dev, "Force mac is enabled on this port\n"); err = -EPROTONOSUPPORT; goto out; } } else if (dev->caps.port_type[gen_or_port] == MLX4_PORT_TYPE_IB) { - MLX4_GET(field, outbox, QUERY_FUNC_CAP_RDMA_PROPS_OFFSET); - if (field & QUERY_FUNC_CAP_RDMA_PROPS_FORCE_PHY_WQE_GID) { + MLX4_GET(field, outbox, QUERY_FUNC_CAP_FLAGS0_OFFSET); + if (field & QUERY_FUNC_CAP_FLAGS0_FORCE_PHY_WQE_GID) { mlx4_err(dev, "phy_wqe_gid is " "enforced on this ib port\n"); err = -EPROTONOSUPPORT; @@ -433,6 +459,10 @@ MLX4_GET(size, outbox, QUERY_FUNC_CAP_QP1_PROXY); func_cap->qp1_proxy_qpn = size & 0xFFFFFF; + if (func_cap->flags1 & QUERY_FUNC_CAP_FLAGS1_NIC_INFO) + MLX4_GET(func_cap->phys_port_id, outbox, + QUERY_FUNC_CAP_PHYS_PORT_ID); + /* All other resources are allocated by the master, but we still report * 'num' and 'reserved' capabilities as follows: * - num remains the maximum resource index @@ -513,8 +543,11 @@ #define QUERY_DEV_CAP_MAX_XRC_OFFSET 0x67 #define QUERY_DEV_CAP_MAX_COUNTERS_OFFSET 0x68 #define QUERY_DEV_CAP_EXT_2_FLAGS_OFFSET 0x70 +#define QUERY_DEV_CAP_FLOW_STEERING_IPOIB_OFFSET 0x74 #define QUERY_DEV_CAP_FLOW_STEERING_RANGE_EN_OFFSET 0x76 #define QUERY_DEV_CAP_FLOW_STEERING_MAX_QP_OFFSET 0x77 +#define QUERY_DEV_CAP_CQ_EQ_CACHE_LINE_STRIDE 0x7a +#define QUERY_DEV_CAP_ETH_PROT_CTRL_OFFSET 0x7a #define QUERY_DEV_CAP_RDMARC_ENTRY_SZ_OFFSET 0x80 #define QUERY_DEV_CAP_QPC_ENTRY_SZ_OFFSET 0x82 #define QUERY_DEV_CAP_AUX_ENTRY_SZ_OFFSET 0x84 @@ -528,7 +561,9 @@ #define QUERY_DEV_CAP_BMME_FLAGS_OFFSET 0x94 #define QUERY_DEV_CAP_RSVD_LKEY_OFFSET 0x98 #define QUERY_DEV_CAP_MAX_ICM_SZ_OFFSET 0xa0 +#define QUERY_DEV_CAP_ETH_BACKPL_OFFSET 0x9c #define QUERY_DEV_CAP_FW_REASSIGN_MAC 0x9d +#define QUERY_DEV_CAP_VXLAN 0x9e dev_cap->flags2 = 0; mailbox = mlx4_alloc_cmd_mailbox(dev); @@ -603,6 +638,9 @@ if (field & 0x80) dev_cap->flags2 |= MLX4_DEV_CAP_FLAG2_FS_EN; dev_cap->fs_log_max_ucast_qp_range_size = field & 0x1f; + MLX4_GET(field, outbox, QUERY_DEV_CAP_FLOW_STEERING_IPOIB_OFFSET); + if (field & 0x80) + dev_cap->flags2 |= MLX4_DEV_CAP_FLAG2_DMFS_IPOIB; MLX4_GET(field, outbox, QUERY_DEV_CAP_FLOW_STEERING_MAX_QP_OFFSET); dev_cap->fs_max_num_qp_per_entry = field; MLX4_GET(stat_rate, outbox, QUERY_DEV_CAP_RATE_SUPPORT_OFFSET); @@ -686,14 +724,26 @@ dev_cap->max_rq_sg = field; MLX4_GET(size, outbox, QUERY_DEV_CAP_MAX_DESC_SZ_RQ_OFFSET); dev_cap->max_rq_desc_sz = size; - + MLX4_GET(field, outbox, QUERY_DEV_CAP_CQ_EQ_CACHE_LINE_STRIDE); + if (field & (1 << 5)) + dev_cap->flags2 |= MLX4_DEV_CAP_FLAG2_ETH_PROT_CTRL; + if (field & (1 << 6)) + dev_cap->flags2 |= MLX4_DEV_CAP_FLAG2_CQE_STRIDE; + if (field & (1 << 7)) + dev_cap->flags2 |= MLX4_DEV_CAP_FLAG2_EQE_STRIDE; MLX4_GET(dev_cap->bmme_flags, outbox, QUERY_DEV_CAP_BMME_FLAGS_OFFSET); MLX4_GET(dev_cap->reserved_lkey, outbox, QUERY_DEV_CAP_RSVD_LKEY_OFFSET); + MLX4_GET(field32, outbox, QUERY_DEV_CAP_ETH_BACKPL_OFFSET); + if (field32 & (1 << 0)) + dev_cap->flags2 |= MLX4_DEV_CAP_FLAG2_ETH_BACKPL_AN_REP; MLX4_GET(field, outbox, QUERY_DEV_CAP_FW_REASSIGN_MAC); if (field & 1<<6) dev_cap->flags2 |= MLX4_DEV_CAP_FLAG2_REASSIGN_MAC_EN; + MLX4_GET(field, outbox, QUERY_DEV_CAP_VXLAN); + if (field & 1<<3) + dev_cap->flags2 |= MLX4_DEV_CAP_FLAG2_VXLAN_OFFLOADS; MLX4_GET(dev_cap->max_icm_sz, outbox, QUERY_DEV_CAP_MAX_ICM_SZ_OFFSET); if (dev_cap->flags & MLX4_DEV_CAP_FLAG_COUNTERS) @@ -823,6 +873,10 @@ int err = 0; u8 field; u32 bmme_flags; + int real_port; + int slave_port; + int first_port; + struct mlx4_active_ports actv_ports; err = mlx4_cmd_box(dev, 0, outbox->dma, 0, 0, MLX4_CMD_QUERY_DEV_CAP, MLX4_CMD_TIME_CLASS_A, MLX4_CMD_NATIVE); @@ -835,20 +889,43 @@ MLX4_GET(flags, outbox->buf, QUERY_DEV_CAP_EXT_FLAGS_OFFSET); flags |= MLX4_DEV_CAP_FLAG_PORT_MNG_CHG_EV; flags &= ~MLX4_DEV_CAP_FLAG_MEM_WINDOW; + actv_ports = mlx4_get_active_ports(dev, slave); + first_port = find_first_bit(actv_ports.ports, dev->caps.num_ports); + for (slave_port = 0, real_port = first_port; + real_port < first_port + + bitmap_weight(actv_ports.ports, dev->caps.num_ports); + ++real_port, ++slave_port) { + if (flags & (MLX4_DEV_CAP_FLAG_WOL_PORT1 << real_port)) + flags |= MLX4_DEV_CAP_FLAG_WOL_PORT1 << slave_port; + else + flags &= ~(MLX4_DEV_CAP_FLAG_WOL_PORT1 << slave_port); + } + for (; slave_port < dev->caps.num_ports; ++slave_port) + flags &= ~(MLX4_DEV_CAP_FLAG_WOL_PORT1 << slave_port); MLX4_PUT(outbox->buf, flags, QUERY_DEV_CAP_EXT_FLAGS_OFFSET); + MLX4_GET(field, outbox->buf, QUERY_DEV_CAP_VL_PORT_OFFSET); + field &= ~0x0F; + field |= bitmap_weight(actv_ports.ports, dev->caps.num_ports) & 0x0F; + MLX4_PUT(outbox->buf, field, QUERY_DEV_CAP_VL_PORT_OFFSET); + /* For guests, disable timestamp */ MLX4_GET(field, outbox->buf, QUERY_DEV_CAP_CQ_TS_SUPPORT_OFFSET); field &= 0x7f; MLX4_PUT(outbox->buf, field, QUERY_DEV_CAP_CQ_TS_SUPPORT_OFFSET); + /* For guests, disable vxlan tunneling */ + MLX4_GET(field, outbox->buf, QUERY_DEV_CAP_VXLAN); + field &= 0xf7; + MLX4_PUT(outbox->buf, field, QUERY_DEV_CAP_VXLAN); + /* For guests, report Blueflame disabled */ MLX4_GET(field, outbox->buf, QUERY_DEV_CAP_BF_OFFSET); field &= 0x7f; MLX4_PUT(outbox->buf, field, QUERY_DEV_CAP_BF_OFFSET); /* For guests, disable mw type 2 */ - MLX4_GET(bmme_flags, outbox, QUERY_DEV_CAP_BMME_FLAGS_OFFSET); + MLX4_GET(bmme_flags, outbox->buf, QUERY_DEV_CAP_BMME_FLAGS_OFFSET); bmme_flags &= ~MLX4_BMME_FLAG_TYPE_2_WIN; MLX4_PUT(outbox->buf, bmme_flags, QUERY_DEV_CAP_BMME_FLAGS_OFFSET); @@ -860,6 +937,12 @@ MLX4_PUT(outbox->buf, field, QUERY_DEV_CAP_FLOW_STEERING_RANGE_EN_OFFSET); } + + /* turn off ipoib managed steering for guests */ + MLX4_GET(field, outbox->buf, QUERY_DEV_CAP_FLOW_STEERING_IPOIB_OFFSET); + field &= ~0x80; + MLX4_PUT(outbox->buf, field, QUERY_DEV_CAP_FLOW_STEERING_IPOIB_OFFSET); + return 0; } @@ -875,12 +958,20 @@ u16 short_field; int err; int admin_link_state; + int port = mlx4_slave_convert_port(dev, slave, + vhcr->in_modifier & 0xFF); #define MLX4_VF_PORT_NO_LINK_SENSE_MASK 0xE0 #define MLX4_PORT_LINK_UP_MASK 0x80 #define QUERY_PORT_CUR_MAX_PKEY_OFFSET 0x0c #define QUERY_PORT_CUR_MAX_GID_OFFSET 0x0e + if (port < 0) + return -EINVAL; + + vhcr->in_modifier = (vhcr->in_modifier & ~0xFF) | + (port & 0xFF); + err = mlx4_cmd_box(dev, 0, outbox->dma, vhcr->in_modifier, 0, MLX4_CMD_QUERY_PORT, MLX4_CMD_TIME_CLASS_B, MLX4_CMD_NATIVE); @@ -907,7 +998,10 @@ MLX4_PUT(outbox->buf, port_type, QUERY_PORT_SUPPORTED_TYPE_OFFSET); - short_field = 1; /* slave max gids */ + if (dev->caps.port_type[vhcr->in_modifier] == MLX4_PORT_TYPE_ETH) + short_field = mlx4_get_slave_num_gids(dev, slave, port); + else + short_field = 1; /* slave max gids */ MLX4_PUT(outbox->buf, short_field, QUERY_PORT_CUR_MAX_GID_OFFSET); @@ -1267,6 +1361,7 @@ #define INIT_HCA_IN_SIZE 0x200 #define INIT_HCA_VERSION_OFFSET 0x000 #define INIT_HCA_VERSION 2 +#define INIT_HCA_VXLAN_OFFSET 0x0c #define INIT_HCA_CACHELINE_SZ_OFFSET 0x0e #define INIT_HCA_FLAGS_OFFSET 0x014 #define INIT_HCA_QPC_OFFSET 0x020 @@ -1277,6 +1372,7 @@ #define INIT_HCA_CQC_BASE_OFFSET (INIT_HCA_QPC_OFFSET + 0x30) #define INIT_HCA_LOG_CQ_OFFSET (INIT_HCA_QPC_OFFSET + 0x37) #define INIT_HCA_EQE_CQE_OFFSETS (INIT_HCA_QPC_OFFSET + 0x38) +#define INIT_HCA_EQE_CQE_STRIDE_OFFSET (INIT_HCA_QPC_OFFSET + 0x3b) #define INIT_HCA_ALTC_BASE_OFFSET (INIT_HCA_QPC_OFFSET + 0x40) #define INIT_HCA_AUXC_BASE_OFFSET (INIT_HCA_QPC_OFFSET + 0x50) #define INIT_HCA_EQC_BASE_OFFSET (INIT_HCA_QPC_OFFSET + 0x60) @@ -1353,11 +1449,25 @@ if (dev->caps.flags & MLX4_DEV_CAP_FLAG_64B_CQE) { *(inbox + INIT_HCA_EQE_CQE_OFFSETS / 4) |= cpu_to_be32(1 << 30); dev->caps.cqe_size = 64; - dev->caps.userspace_caps |= MLX4_USER_DEV_CAP_64B_CQE; + dev->caps.userspace_caps |= MLX4_USER_DEV_CAP_LARGE_CQE; } else { dev->caps.cqe_size = 32; } + /* CX3 is capable of extending CQEs\EQEs to strides larger than 64B */ + if ((dev->caps.flags2 & MLX4_DEV_CAP_FLAG2_EQE_STRIDE) && + (dev->caps.flags2 & MLX4_DEV_CAP_FLAG2_CQE_STRIDE)) { + dev->caps.eqe_size = cache_line_size(); + dev->caps.cqe_size = cache_line_size(); + dev->caps.eqe_factor = 0; + MLX4_PUT(inbox, (u8)((ilog2(dev->caps.eqe_size) - 5) << 4 | + (ilog2(dev->caps.eqe_size) - 5)), + INIT_HCA_EQE_CQE_STRIDE_OFFSET); + + /* User still need to know to support CQE > 32B */ + dev->caps.userspace_caps |= MLX4_USER_DEV_CAP_LARGE_CQE; + } + /* QPC/EEC/CQC/EQC/RDMARC attributes */ MLX4_PUT(inbox, param->qpc_base, INIT_HCA_QPC_BASE_OFFSET); @@ -1425,8 +1535,14 @@ MLX4_PUT(inbox, param->uar_page_sz, INIT_HCA_UAR_PAGE_SZ_OFFSET); MLX4_PUT(inbox, param->log_uar_sz, INIT_HCA_LOG_UAR_SZ_OFFSET); - err = mlx4_cmd(dev, mailbox->dma, 0, 0, MLX4_CMD_INIT_HCA, 10000, - MLX4_CMD_NATIVE); + /* set parser VXLAN attributes */ + if (dev->caps.flags2 & MLX4_DEV_CAP_FLAG2_VXLAN_OFFLOADS) { + u8 parser_params = 0; + MLX4_PUT(inbox, parser_params, INIT_HCA_VXLAN_OFFSET); + } + + err = mlx4_cmd(dev, mailbox->dma, 0, 0, MLX4_CMD_INIT_HCA, + MLX4_CMD_TIME_CLASS_C, MLX4_CMD_NATIVE); if (err) mlx4_err(dev, "INIT_HCA returns %d\n", err); @@ -1511,6 +1627,17 @@ if (byte_field & 0x40) /* 64-bytes cqe enabled */ param->dev_cap_enabled |= MLX4_DEV_CAP_64B_CQE_ENABLED; + /* CX3 is capable of extending CQEs\EQEs to strides larger than 64B */ + MLX4_GET(byte_field, outbox, INIT_HCA_EQE_CQE_STRIDE_OFFSET); + if (byte_field) { + param->dev_cap_enabled |= MLX4_DEV_CAP_64B_EQE_ENABLED; + param->dev_cap_enabled |= MLX4_DEV_CAP_64B_CQE_ENABLED; + param->cqe_size = 1 << ((byte_field & + MLX4_CQE_SIZE_MASK_STRIDE) + 5); + param->eqe_size = 1 << (((byte_field & + MLX4_EQE_SIZE_MASK_STRIDE) >> 4) + 5); + } + /* TPT attributes */ MLX4_GET(param->dmpt_base, outbox, INIT_HCA_DMPT_BASE_OFFSET); @@ -1550,9 +1677,12 @@ struct mlx4_cmd_info *cmd) { struct mlx4_priv *priv = mlx4_priv(dev); - int port = vhcr->in_modifier; + int port = mlx4_slave_convert_port(dev, slave, vhcr->in_modifier); int err; + if (port < 0) + return -EINVAL; + if (priv->mfunc.master.slave_state[slave].init_port_mask & (1 << port)) return 0; @@ -1642,9 +1772,12 @@ struct mlx4_cmd_info *cmd) { struct mlx4_priv *priv = mlx4_priv(dev); - int port = vhcr->in_modifier; + int port = mlx4_slave_convert_port(dev, slave, vhcr->in_modifier); int err; + if (port < 0) + return -EINVAL; + if (!(priv->mfunc.master.slave_state[slave].init_port_mask & (1 << port))) return 0; @@ -1652,7 +1785,7 @@ if (dev->caps.port_mask[port] != MLX4_PORT_TYPE_IB) { if (priv->mfunc.master.init_port_ref[port] == 1) { err = mlx4_cmd(dev, 0, port, 0, MLX4_CMD_CLOSE_PORT, - 1000, MLX4_CMD_NATIVE); + MLX4_CMD_TIME_CLASS_A, MLX4_CMD_NATIVE); if (err) return err; } @@ -1663,7 +1796,7 @@ if (!priv->mfunc.master.qp0_state[port].qp0_active && priv->mfunc.master.qp0_state[port].port_active) { err = mlx4_cmd(dev, 0, port, 0, MLX4_CMD_CLOSE_PORT, - 1000, MLX4_CMD_NATIVE); + MLX4_CMD_TIME_CLASS_A, MLX4_CMD_NATIVE); if (err) return err; priv->mfunc.master.slave_state[slave].init_port_mask &= ~(1 << port); @@ -1678,17 +1811,57 @@ int mlx4_CLOSE_PORT(struct mlx4_dev *dev, int port) { - return mlx4_cmd(dev, 0, port, 0, MLX4_CMD_CLOSE_PORT, 1000, - MLX4_CMD_WRAPPED); + return mlx4_cmd(dev, 0, port, 0, MLX4_CMD_CLOSE_PORT, + MLX4_CMD_TIME_CLASS_A, MLX4_CMD_WRAPPED); } EXPORT_SYMBOL_GPL(mlx4_CLOSE_PORT); int mlx4_CLOSE_HCA(struct mlx4_dev *dev, int panic) { - return mlx4_cmd(dev, 0, 0, panic, MLX4_CMD_CLOSE_HCA, 1000, - MLX4_CMD_NATIVE); + return mlx4_cmd(dev, 0, 0, panic, MLX4_CMD_CLOSE_HCA, + MLX4_CMD_TIME_CLASS_C, MLX4_CMD_NATIVE); } +struct mlx4_config_dev { + __be32 update_flags; + __be32 rsdv1[3]; + __be16 vxlan_udp_dport; + __be16 rsvd2; +}; + +#define MLX4_VXLAN_UDP_DPORT (1 << 0) + +static int mlx4_CONFIG_DEV(struct mlx4_dev *dev, struct mlx4_config_dev *config_dev) +{ + int err; + struct mlx4_cmd_mailbox *mailbox; + + mailbox = mlx4_alloc_cmd_mailbox(dev); + if (IS_ERR(mailbox)) + return PTR_ERR(mailbox); + + memcpy(mailbox->buf, config_dev, sizeof(*config_dev)); + + err = mlx4_cmd(dev, mailbox->dma, 0, 0, MLX4_CMD_CONFIG_DEV, + MLX4_CMD_TIME_CLASS_B, MLX4_CMD_NATIVE); + + mlx4_free_cmd_mailbox(dev, mailbox); + return err; +} + +int mlx4_config_vxlan_port(struct mlx4_dev *dev, __be16 udp_port) +{ + struct mlx4_config_dev config_dev; + + memset(&config_dev, 0, sizeof(config_dev)); + config_dev.update_flags = cpu_to_be32(MLX4_VXLAN_UDP_DPORT); + config_dev.vxlan_udp_dport = udp_port; + + return mlx4_CONFIG_DEV(dev, &config_dev); +} +EXPORT_SYMBOL_GPL(mlx4_config_vxlan_port); + + int mlx4_SET_ICM_SIZE(struct mlx4_dev *dev, u64 icm_size, u64 *aux_pages) { int ret = mlx4_cmd_imm(dev, icm_size, aux_pages, 0, 0, @@ -1710,7 +1883,45 @@ int mlx4_NOP(struct mlx4_dev *dev) { /* Input modifier of 0x1f means "finish as soon as possible." */ - return mlx4_cmd(dev, 0, 0x1f, 0, MLX4_CMD_NOP, 100, MLX4_CMD_NATIVE); + return mlx4_cmd(dev, 0, 0x1f, 0, MLX4_CMD_NOP, MLX4_CMD_TIME_CLASS_A, + MLX4_CMD_NATIVE); +} + +int mlx4_get_phys_port_id(struct mlx4_dev *dev) +{ + u8 port; + u32 *outbox; + struct mlx4_cmd_mailbox *mailbox; + u32 in_mod; + u32 guid_hi, guid_lo; + int err, ret = 0; +#define MOD_STAT_CFG_PORT_OFFSET 8 +#define MOD_STAT_CFG_GUID_H 0X14 +#define MOD_STAT_CFG_GUID_L 0X1c + + mailbox = mlx4_alloc_cmd_mailbox(dev); + if (IS_ERR(mailbox)) + return PTR_ERR(mailbox); + outbox = mailbox->buf; + + for (port = 1; port <= dev->caps.num_ports; port++) { + in_mod = port << MOD_STAT_CFG_PORT_OFFSET; + err = mlx4_cmd_box(dev, 0, mailbox->dma, in_mod, 0x2, + MLX4_CMD_MOD_STAT_CFG, MLX4_CMD_TIME_CLASS_A, + MLX4_CMD_NATIVE); + if (err) { + mlx4_err(dev, "Fail to get port %d uplink guid\n", + port); + ret = err; + } else { + MLX4_GET(guid_hi, outbox, MOD_STAT_CFG_GUID_H); + MLX4_GET(guid_lo, outbox, MOD_STAT_CFG_GUID_L); + dev->caps.phys_port_id[port] = (u64)guid_lo | + (u64)guid_hi << 32; + } + } + mlx4_free_cmd_mailbox(dev, mailbox); + return ret; } #define MLX4_WOL_SETUP_MODE (5 << 28) @@ -1819,7 +2030,8 @@ err = EINVAL; break; } - err = mlx4_cmd(dev, 0, ((u32) err | cpu_to_be32(token) << 16), + err = mlx4_cmd(dev, 0, ((u32) err | + (__force u32)cpu_to_be32(token) << 16), 1, MLX4_CMD_GET_OP_REQ, MLX4_CMD_TIME_CLASS_A, MLX4_CMD_NATIVE); if (err) { @@ -1834,3 +2046,142 @@ out: mlx4_free_cmd_mailbox(dev, mailbox); } + +/* Access Reg commands */ +enum mlx4_access_reg_masks { + MLX4_ACCESS_REG_STATUS_MASK = 0x7f, + MLX4_ACCESS_REG_METHOD_MASK = 0x7f, + MLX4_ACCESS_REG_LEN_MASK = 0x7ff +}; + +struct mlx4_access_reg { + __be16 constant1; + u8 status; + u8 resrvd1; + __be16 reg_id; + u8 method; + u8 constant2; + __be32 resrvd2[2]; + __be16 len_const; + __be16 resrvd3; +#define MLX4_ACCESS_REG_HEADER_SIZE (20) + u8 reg_data[MLX4_MAILBOX_SIZE-MLX4_ACCESS_REG_HEADER_SIZE]; +} __attribute__((__packed__)); + +/** + * mlx4_ACCESS_REG - Generic access reg command. + * @dev: mlx4_dev. + * @reg_id: register ID to access. + * @method: Access method Read/Write. + * @reg_len: register length to Read/Write in bytes. + * @reg_data: reg_data pointer to Read/Write From/To. + * + * Access ConnectX registers FW command. + * Returns 0 on success and copies outbox mlx4_access_reg data + * field into reg_data or a negative error code. + */ +static int mlx4_ACCESS_REG(struct mlx4_dev *dev, u16 reg_id, + enum mlx4_access_reg_method method, + u16 reg_len, void *reg_data) +{ + struct mlx4_cmd_mailbox *inbox, *outbox; + struct mlx4_access_reg *inbuf, *outbuf; + int err; + + inbox = mlx4_alloc_cmd_mailbox(dev); + if (IS_ERR(inbox)) + return PTR_ERR(inbox); + + outbox = mlx4_alloc_cmd_mailbox(dev); + if (IS_ERR(outbox)) { + mlx4_free_cmd_mailbox(dev, inbox); + return PTR_ERR(outbox); + } + + inbuf = inbox->buf; + outbuf = outbox->buf; + + inbuf->constant1 = cpu_to_be16(0x1<<11 | 0x4); + inbuf->constant2 = 0x1; + inbuf->reg_id = cpu_to_be16(reg_id); + inbuf->method = method & MLX4_ACCESS_REG_METHOD_MASK; + + reg_len = min(reg_len, (u16)(sizeof(inbuf->reg_data))); + inbuf->len_const = + cpu_to_be16(((reg_len/4 + 1) & MLX4_ACCESS_REG_LEN_MASK) | + ((0x3) << 12)); + + memcpy(inbuf->reg_data, reg_data, reg_len); + err = mlx4_cmd_box(dev, inbox->dma, outbox->dma, 0, 0, + MLX4_CMD_ACCESS_REG, MLX4_CMD_TIME_CLASS_C, + MLX4_CMD_WRAPPED); + if (err) + goto out; + + if (outbuf->status & MLX4_ACCESS_REG_STATUS_MASK) { + err = outbuf->status & MLX4_ACCESS_REG_STATUS_MASK; + mlx4_err(dev, + "MLX4_CMD_ACCESS_REG(%x) returned REG status (%x)\n", + reg_id, err); + goto out; + } + + memcpy(reg_data, outbuf->reg_data, reg_len); +out: + mlx4_free_cmd_mailbox(dev, inbox); + mlx4_free_cmd_mailbox(dev, outbox); + return err; +} + +/* ConnectX registers IDs */ +enum mlx4_reg_id { + MLX4_REG_ID_PTYS = 0x5004, +}; + +/** + * mlx4_ACCESS_PTYS_REG - Access PTYs (Port Type and Speed) + * register + * @dev: mlx4_dev. + * @method: Access method Read/Write. + * @ptys_reg: PTYS register data pointer. + * + * Access ConnectX PTYS register, to Read/Write Port Type/Speed + * configuration + * Returns 0 on success or a negative error code. + */ +int mlx4_ACCESS_PTYS_REG(struct mlx4_dev *dev, + enum mlx4_access_reg_method method, + struct mlx4_ptys_reg *ptys_reg) +{ + return mlx4_ACCESS_REG(dev, MLX4_REG_ID_PTYS, + method, sizeof(*ptys_reg), ptys_reg); +} +EXPORT_SYMBOL_GPL(mlx4_ACCESS_PTYS_REG); + +int mlx4_ACCESS_REG_wrapper(struct mlx4_dev *dev, int slave, + struct mlx4_vhcr *vhcr, + struct mlx4_cmd_mailbox *inbox, + struct mlx4_cmd_mailbox *outbox, + struct mlx4_cmd_info *cmd) +{ + struct mlx4_access_reg *inbuf = inbox->buf; + u8 method = inbuf->method & MLX4_ACCESS_REG_METHOD_MASK; + u16 reg_id = be16_to_cpu(inbuf->reg_id); + + if (slave != mlx4_master_func_num(dev) && + method == MLX4_ACCESS_REG_WRITE) + return -EPERM; + + if (reg_id == MLX4_REG_ID_PTYS) { + struct mlx4_ptys_reg *ptys_reg = + (struct mlx4_ptys_reg *)inbuf->reg_data; + + ptys_reg->local_port = + mlx4_slave_convert_port(dev, slave, + ptys_reg->local_port); + } + + return mlx4_cmd_box(dev, inbox->dma, outbox->dma, vhcr->in_modifier, + 0, MLX4_CMD_ACCESS_REG, MLX4_CMD_TIME_CLASS_C, + MLX4_CMD_NATIVE); +} --- linux-3.13.0.orig/drivers/net/ethernet/mellanox/mlx4/fw.h +++ linux-3.13.0/drivers/net/ethernet/mellanox/mlx4/fw.h @@ -140,6 +140,8 @@ u32 qp1_proxy_qpn; u8 physical_port; u8 port_flags; + u8 flags1; + u64 phys_port_id; }; struct mlx4_adapter { @@ -175,6 +177,8 @@ u8 uar_page_sz; /* log pg sz in 4k chunks */ u8 steering_mode; /* for QUERY_HCA */ u64 dev_cap_enabled; + u16 cqe_size; /* For use only when CQE stride feature enabled */ + u16 eqe_size; /* For use only when EQE stride feature enabled */ }; struct mlx4_init_ib_param { --- linux-3.13.0.orig/drivers/net/ethernet/mellanox/mlx4/main.c +++ linux-3.13.0/drivers/net/ethernet/mellanox/mlx4/main.c @@ -41,7 +41,6 @@ #include #include #include -#include #include #include @@ -78,13 +77,17 @@ #endif /* CONFIG_PCI_MSI */ -static int num_vfs; -module_param(num_vfs, int, 0444); -MODULE_PARM_DESC(num_vfs, "enable #num_vfs functions if num_vfs > 0"); - -static int probe_vf; -module_param(probe_vf, int, 0644); -MODULE_PARM_DESC(probe_vf, "number of vfs to probe by pf driver (num_vfs > 0)"); +static uint8_t num_vfs[3] = {0, 0, 0}; +static int num_vfs_argc = 3; +module_param_array(num_vfs, byte , &num_vfs_argc, 0444); +MODULE_PARM_DESC(num_vfs, "enable #num_vfs functions if num_vfs > 0\n" + "num_vfs=port1,port2,port1+2"); + +static uint8_t probe_vf[3] = {0, 0, 0}; +static int probe_vfs_argc = 3; +module_param_array(probe_vf, byte, &probe_vfs_argc, 0444); +MODULE_PARM_DESC(probe_vf, "number of vfs to probe by pf driver (num_vfs > 0)\n" + "probe_vf=port1,port2,port1+2"); int mlx4_log_num_mgm_entry_size = MLX4_DEFAULT_MGM_LOG_ENTRY_SIZE; module_param_named(log_num_mgm_entry_size, @@ -96,14 +99,15 @@ " To activate device managed" " flow steering when available, set to -1"); -static bool enable_64b_cqe_eqe; +static bool enable_64b_cqe_eqe = true; module_param(enable_64b_cqe_eqe, bool, 0444); MODULE_PARM_DESC(enable_64b_cqe_eqe, - "Enable 64 byte CQEs/EQEs when the FW supports this"); + "Enable 64 byte CQEs/EQEs when the FW supports this (default: True)"); #define HCA_GLOBAL_CAP_MASK 0 -#define PF_CONTEXT_BEHAVIOUR_MASK MLX4_FUNC_CAP_64B_EQE_CQE +#define PF_CONTEXT_BEHAVIOUR_MASK (MLX4_FUNC_CAP_64B_EQE_CQE | \ + MLX4_FUNC_CAP_EQE_CQE_STRIDE) static char mlx4_version[] = DRV_NAME ": Mellanox ConnectX core driver v" @@ -119,6 +123,16 @@ .num_mtt = 1 << 20, /* It is really num mtt segements */ }; +static struct mlx4_profile low_mem_profile = { + .num_qp = 1 << 17, + .num_srq = 1 << 6, + .rdmarc_per_qp = 1 << 4, + .num_cq = 1 << 8, + .num_mcg = 1 << 8, + .num_mpt = 1 << 9, + .num_mtt = 1 << 7, +}; + static int log_num_mac = 7; module_param_named(log_num_mac, log_num_mac, int, 0444); MODULE_PARM_DESC(log_num_mac, "Log2 max number of MACs per ETH port (1-7)"); @@ -128,6 +142,8 @@ MODULE_PARM_DESC(log_num_vlan, "Log2 max number of VLANs per ETH port (0-7)"); /* Log2 max number of VLANs per ETH port (0-7) */ #define MLX4_LOG_NUM_VLANS 7 +#define MLX4_MIN_LOG_NUM_VLANS 0 +#define MLX4_MIN_LOG_NUM_MAC 1 static bool use_prio; module_param_named(use_prio, use_prio, bool, 0444); @@ -150,6 +166,8 @@ struct pci_dev *pdev; }; +static atomic_t pf_loading = ATOMIC_INIT(0); + int mlx4_check_port_params(struct mlx4_dev *dev, enum mlx4_port_type *port_type) { @@ -183,6 +201,40 @@ dev->caps.port_mask[i] = dev->caps.port_type[i]; } +static void mlx4_enable_cqe_eqe_stride(struct mlx4_dev *dev) +{ + struct mlx4_caps *dev_cap = &dev->caps; + + /* FW not supporting or cancelled by user */ + if (!(dev_cap->flags2 & MLX4_DEV_CAP_FLAG2_EQE_STRIDE) || + !(dev_cap->flags2 & MLX4_DEV_CAP_FLAG2_CQE_STRIDE)) + return; + + /* Must have 64B CQE_EQE enabled by FW to use bigger stride + * When FW has NCSI it may decide not to report 64B CQE/EQEs + */ + if (!(dev_cap->flags & MLX4_DEV_CAP_FLAG_64B_EQE) || + !(dev_cap->flags & MLX4_DEV_CAP_FLAG_64B_CQE)) { + dev_cap->flags2 &= ~MLX4_DEV_CAP_FLAG2_CQE_STRIDE; + dev_cap->flags2 &= ~MLX4_DEV_CAP_FLAG2_EQE_STRIDE; + return; + } + + if (cache_line_size() == 128 || cache_line_size() == 256) { + mlx4_dbg(dev, "Enabling CQE stride cacheLine supported\n"); + /* Changing the real data inside CQE size to 32B */ + dev_cap->flags &= ~MLX4_DEV_CAP_FLAG_64B_CQE; + dev_cap->flags &= ~MLX4_DEV_CAP_FLAG_64B_EQE; + + if (mlx4_is_master(dev)) + dev_cap->function_caps |= MLX4_FUNC_CAP_EQE_CQE_STRIDE; + } else { + mlx4_dbg(dev, "Disabling CQE stride cacheLine unsupported\n"); + dev_cap->flags2 &= ~MLX4_DEV_CAP_FLAG2_CQE_STRIDE; + dev_cap->flags2 &= ~MLX4_DEV_CAP_FLAG2_EQE_STRIDE; + } +} + static int mlx4_dev_cap(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap) { int err; @@ -289,9 +341,14 @@ if (mlx4_is_mfunc(dev)) dev->caps.flags &= ~MLX4_DEV_CAP_FLAG_SENSE_SUPPORT; - dev->caps.log_num_macs = log_num_mac; - dev->caps.log_num_vlans = MLX4_LOG_NUM_VLANS; dev->caps.log_num_prios = use_prio ? 3 : 0; + if (mlx4_low_memory_profile()) { + dev->caps.log_num_macs = MLX4_MIN_LOG_NUM_MAC; + dev->caps.log_num_vlans = MLX4_MIN_LOG_NUM_VLANS; + } else { + dev->caps.log_num_macs = log_num_mac; + dev->caps.log_num_vlans = MLX4_LOG_NUM_VLANS; + } for (i = 1; i <= dev->caps.num_ports; ++i) { dev->caps.port_type[i] = MLX4_PORT_TYPE_NONE; @@ -379,6 +436,14 @@ dev->caps.flags &= ~MLX4_DEV_CAP_FLAG_64B_CQE; dev->caps.flags &= ~MLX4_DEV_CAP_FLAG_64B_EQE; } + + if (dev_cap->flags2 & + (MLX4_DEV_CAP_FLAG2_CQE_STRIDE | + MLX4_DEV_CAP_FLAG2_EQE_STRIDE)) { + mlx4_warn(dev, "Disabling EQE/CQE stride per user request\n"); + dev_cap->flags2 &= ~MLX4_DEV_CAP_FLAG2_CQE_STRIDE; + dev_cap->flags2 &= ~MLX4_DEV_CAP_FLAG2_EQE_STRIDE; + } } if ((dev->caps.flags & @@ -386,8 +451,89 @@ mlx4_is_master(dev)) dev->caps.function_caps |= MLX4_FUNC_CAP_64B_EQE_CQE; + if (!mlx4_is_slave(dev)) + mlx4_enable_cqe_eqe_stride(dev); + return 0; } + +static int mlx4_get_pcie_dev_link_caps(struct mlx4_dev *dev, + enum pci_bus_speed *speed, + enum pcie_link_width *width) +{ + u32 lnkcap1, lnkcap2; + int err1, err2; + +#define PCIE_MLW_CAP_SHIFT 4 /* start of MLW mask in link capabilities */ + + *speed = PCI_SPEED_UNKNOWN; + *width = PCIE_LNK_WIDTH_UNKNOWN; + + err1 = pcie_capability_read_dword(dev->pdev, PCI_EXP_LNKCAP, &lnkcap1); + err2 = pcie_capability_read_dword(dev->pdev, PCI_EXP_LNKCAP2, &lnkcap2); + if (!err2 && lnkcap2) { /* PCIe r3.0-compliant */ + if (lnkcap2 & PCI_EXP_LNKCAP2_SLS_8_0GB) + *speed = PCIE_SPEED_8_0GT; + else if (lnkcap2 & PCI_EXP_LNKCAP2_SLS_5_0GB) + *speed = PCIE_SPEED_5_0GT; + else if (lnkcap2 & PCI_EXP_LNKCAP2_SLS_2_5GB) + *speed = PCIE_SPEED_2_5GT; + } + if (!err1) { + *width = (lnkcap1 & PCI_EXP_LNKCAP_MLW) >> PCIE_MLW_CAP_SHIFT; + if (!lnkcap2) { /* pre-r3.0 */ + if (lnkcap1 & PCI_EXP_LNKCAP_SLS_5_0GB) + *speed = PCIE_SPEED_5_0GT; + else if (lnkcap1 & PCI_EXP_LNKCAP_SLS_2_5GB) + *speed = PCIE_SPEED_2_5GT; + } + } + + if (*speed == PCI_SPEED_UNKNOWN || *width == PCIE_LNK_WIDTH_UNKNOWN) { + return err1 ? err1 : + err2 ? err2 : -EINVAL; + } + return 0; +} + +static void mlx4_check_pcie_caps(struct mlx4_dev *dev) +{ + enum pcie_link_width width, width_cap; + enum pci_bus_speed speed, speed_cap; + int err; + +#define PCIE_SPEED_STR(speed) \ + (speed == PCIE_SPEED_8_0GT ? "8.0GT/s" : \ + speed == PCIE_SPEED_5_0GT ? "5.0GT/s" : \ + speed == PCIE_SPEED_2_5GT ? "2.5GT/s" : \ + "Unknown") + + err = mlx4_get_pcie_dev_link_caps(dev, &speed_cap, &width_cap); + if (err) { + mlx4_warn(dev, + "Unable to determine PCIe device BW capabilities\n"); + return; + } + + err = pcie_get_minimum_link(dev->pdev, &speed, &width); + if (err || speed == PCI_SPEED_UNKNOWN || + width == PCIE_LNK_WIDTH_UNKNOWN) { + mlx4_warn(dev, + "Unable to determine PCI device chain minimum BW\n"); + return; + } + + if (width != width_cap || speed != speed_cap) + mlx4_warn(dev, + "PCIe BW is different than device's capability\n"); + + mlx4_info(dev, "PCIe link speed is %s, device supports %s\n", + PCIE_SPEED_STR(speed), PCIE_SPEED_STR(speed_cap)); + mlx4_info(dev, "PCIe link width is x%d, device supports x%d\n", + width, width_cap); + return; +} + /*The function checks if there are live vf, return the num of them*/ static int mlx4_how_many_lives_vf(struct mlx4_dev *dev) { @@ -606,9 +752,11 @@ dev->caps.qp1_tunnel[i - 1] = func_cap.qp1_tunnel_qpn; dev->caps.qp1_proxy[i - 1] = func_cap.qp1_proxy_qpn; dev->caps.port_mask[i] = dev->caps.port_type[i]; - if (mlx4_get_slave_pkey_gid_tbl_len(dev, i, - &dev->caps.gid_table_len[i], - &dev->caps.pkey_table_len[i])) + dev->caps.phys_port_id[i] = func_cap.phys_port_id; + 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; } @@ -619,6 +767,7 @@ "PCI resource 2 size of 0x%llx, aborting.\n", dev->caps.uar_page_size * dev->caps.num_uars, (unsigned long long) pci_resource_len(dev->pdev, 2)); + err = -ENOMEM; goto err_mem; } @@ -632,11 +781,22 @@ if (hca_param.dev_cap_enabled & MLX4_DEV_CAP_64B_CQE_ENABLED) { dev->caps.cqe_size = 64; - dev->caps.userspace_caps |= MLX4_USER_DEV_CAP_64B_CQE; + dev->caps.userspace_caps |= MLX4_USER_DEV_CAP_LARGE_CQE; } else { dev->caps.cqe_size = 32; } + if (hca_param.dev_cap_enabled & MLX4_DEV_CAP_EQE_STRIDE_ENABLED) { + dev->caps.eqe_size = hca_param.eqe_size; + dev->caps.eqe_factor = 0; + } + + if (hca_param.dev_cap_enabled & MLX4_DEV_CAP_CQE_STRIDE_ENABLED) { + dev->caps.cqe_size = hca_param.cqe_size; + /* User still need to know when CQE > 32B */ + dev->caps.userspace_caps |= MLX4_USER_DEV_CAP_LARGE_CQE; + } + dev->caps.flags2 &= ~MLX4_DEV_CAP_FLAG2_TS; mlx4_warn(dev, "Timestamping is not supported in slave mode.\n"); @@ -670,10 +830,10 @@ has_eth_port = true; } - if (has_ib_port) - request_module_nowait(IB_DRV_NAME); if (has_eth_port) request_module_nowait(EN_DRV_NAME); + if (has_ib_port || (dev->caps.flags & MLX4_DEV_CAP_FLAG_IBOE)) + request_module_nowait(IB_DRV_NAME); } /* @@ -1328,6 +1488,11 @@ u32 slave_read; u32 cmd_channel_ver; + if (atomic_read(&pf_loading)) { + mlx4_warn(dev, "PF is not ready. Deferring probe\n"); + return -EPROBE_DEFER; + } + mutex_lock(&priv->cmd.slave_cmd_mutex); priv->cmd.max_cmds = 1; mlx4_warn(dev, "Sending reset\n"); @@ -1384,7 +1549,11 @@ int i; for (i = 1; i <= dev->caps.num_ports; i++) { - dev->caps.gid_table_len[i] = 1; + if (dev->caps.port_type[i] == MLX4_PORT_TYPE_ETH) + dev->caps.gid_table_len[i] = + mlx4_get_slave_num_gids(dev, 0, i); + else + dev->caps.gid_table_len[i] = 1; dev->caps.pkey_table_len[i] = dev->phys_caps.pkey_phys_table_len[i] - 1; } @@ -1409,7 +1578,7 @@ if (mlx4_log_num_mgm_entry_size == -1 && dev_cap->flags2 & MLX4_DEV_CAP_FLAG2_FS_EN && (!mlx4_is_mfunc(dev) || - (dev_cap->fs_max_num_qp_per_entry >= (num_vfs + 1))) && + (dev_cap->fs_max_num_qp_per_entry >= (dev->num_vfs + 1))) && choose_log_fs_mgm_entry_size(dev_cap->fs_max_num_qp_per_entry) >= MLX4_MIN_MGM_LOG_ENTRY_SIZE) { dev->oper_log_mgm_entry_size = @@ -1443,6 +1612,19 @@ mlx4_log_num_mgm_entry_size); } +static void choose_tunnel_offload_mode(struct mlx4_dev *dev, + struct mlx4_dev_cap *dev_cap) +{ + if (dev->caps.steering_mode == MLX4_STEERING_MODE_DEVICE_MANAGED && + dev_cap->flags2 & MLX4_DEV_CAP_FLAG2_VXLAN_OFFLOADS) + dev->caps.tunnel_offload_mode = MLX4_TUNNEL_OFFLOAD_MODE_VXLAN; + else + dev->caps.tunnel_offload_mode = MLX4_TUNNEL_OFFLOAD_MODE_NONE; + + mlx4_dbg(dev, "Tunneling offload mode is: %s\n", (dev->caps.tunnel_offload_mode + == MLX4_TUNNEL_OFFLOAD_MODE_VXLAN) ? "vxlan" : "none"); +} + static int mlx4_init_hca(struct mlx4_dev *dev) { struct mlx4_priv *priv = mlx4_priv(dev); @@ -1483,11 +1665,21 @@ } choose_steering_mode(dev, &dev_cap); + choose_tunnel_offload_mode(dev, &dev_cap); + + err = mlx4_get_phys_port_id(dev); + if (err) + mlx4_err(dev, "Fail to get physical port id\n"); if (mlx4_is_master(dev)) mlx4_parav_master_pf_caps(dev); - profile = default_profile; + if (mlx4_low_memory_profile()) { + mlx4_info(dev, "Running from within kdump kernel. Using low memory profile\n"); + profile = low_mem_profile; + } else { + profile = default_profile; + } if (dev->caps.steering_mode == MLX4_STEERING_MODE_DEVICE_MANAGED) profile.num_mcg = MLX4_FS_NUM_MCG; @@ -1654,7 +1846,7 @@ void __mlx4_counter_free(struct mlx4_dev *dev, u32 idx) { - mlx4_bitmap_free(&mlx4_priv(dev)->counters_bitmap, idx); + mlx4_bitmap_free(&mlx4_priv(dev)->counters_bitmap, idx, MLX4_USE_RR); return; } @@ -1877,7 +2069,7 @@ struct mlx4_priv *priv = mlx4_priv(dev); struct msix_entry *entries; int nreq = min_t(int, dev->caps.num_ports * - min_t(int, netif_get_num_default_rss_queues() + 1, + min_t(int, num_online_cpus() + 1, MAX_MSIX_P_PORT) + MSIX_LEGACY_SZ, MAX_MSIX); int err; int i; @@ -1944,6 +2136,7 @@ if (!mlx4_is_slave(dev)) { mlx4_init_mac_table(dev, &info->mac_table); mlx4_init_vlan_table(dev, &info->vlan_table); + mlx4_init_roce_gid_table(dev, &info->gid_table); info->base_qpn = mlx4_get_base_qpn(dev, port); } @@ -2097,6 +2290,13 @@ struct mlx4_dev *dev; int err; int port; + int nvfs[MLX4_MAX_PORTS + 1] = {0, 0, 0}; + int prb_vf[MLX4_MAX_PORTS + 1] = {0, 0, 0}; + const int param_map[MLX4_MAX_PORTS + 1][MLX4_MAX_PORTS + 1] = { + {2, 0, 0}, {0, 1, 2}, {0, 1, 2} }; + unsigned total_vfs = 0; + int sriov_initialized = 0; + unsigned int i; pr_info(DRV_NAME ": Initializing %s\n", pci_name(pdev)); @@ -2111,17 +2311,40 @@ * per port, we must limit the number of VFs to 63 (since their are * 128 MACs) */ - if (num_vfs >= MLX4_MAX_NUM_VF) { + for (i = 0; i < sizeof(nvfs)/sizeof(nvfs[0]) && i < num_vfs_argc; + total_vfs += nvfs[param_map[num_vfs_argc - 1][i]], i++) { + nvfs[param_map[num_vfs_argc - 1][i]] = num_vfs[i]; + if (nvfs[i] < 0) { + dev_err(&pdev->dev, "num_vfs module parameter cannot be negative\n"); + return -EINVAL; + } + } + for (i = 0; i < sizeof(prb_vf)/sizeof(prb_vf[0]) && i < probe_vfs_argc; + i++) { + prb_vf[param_map[probe_vfs_argc - 1][i]] = probe_vf[i]; + if (prb_vf[i] < 0 || prb_vf[i] > nvfs[i]) { + dev_err(&pdev->dev, "probe_vf module parameter cannot be negative or greater than num_vfs\n"); + return -EINVAL; + } + } + if (total_vfs >= MLX4_MAX_NUM_VF) { dev_err(&pdev->dev, "Requested more VF's (%d) than allowed (%d)\n", - num_vfs, MLX4_MAX_NUM_VF - 1); + total_vfs, MLX4_MAX_NUM_VF - 1); return -EINVAL; } - if (num_vfs < 0) { - pr_err("num_vfs module parameter cannot be negative\n"); - return -EINVAL; + for (i = 0; i < MLX4_MAX_PORTS; i++) { + if (nvfs[i] + nvfs[2] >= MLX4_MAX_NUM_VF_P_PORT) { + dev_err(&pdev->dev, + "Requested more VF's (%d) for port (%d) than allowed (%d)\n", + nvfs[i] + nvfs[2], i + 1, + MLX4_MAX_NUM_VF_P_PORT - 1); + return -EINVAL; + } } + + /* * Check for BARs. */ @@ -2171,13 +2394,8 @@ /* Allow large DMA segments, up to the firmware limit of 1 GB */ dma_set_max_seg_size(&pdev->dev, 1024 * 1024 * 1024); - priv = kzalloc(sizeof(*priv), GFP_KERNEL); - if (!priv) { - err = -ENOMEM; - goto err_release_regions; - } - - dev = &priv->dev; + dev = pci_get_drvdata(pdev); + priv = mlx4_priv(dev); dev->pdev = pdev; INIT_LIST_HEAD(&priv->ctx_list); spin_lock_init(&priv->ctx_lock); @@ -2196,11 +2414,23 @@ if (pci_dev_data & MLX4_PCI_DEV_IS_VF) { /* When acting as pf, we normally skip vfs unless explicitly * requested to probe them. */ - if (num_vfs && extended_func_num(pdev) > probe_vf) { - mlx4_warn(dev, "Skipping virtual function:%d\n", - extended_func_num(pdev)); - err = -ENODEV; - goto err_free_dev; + if (total_vfs) { + unsigned vfs_offset = 0; + for (i = 0; i < sizeof(nvfs)/sizeof(nvfs[0]) && + vfs_offset + nvfs[i] < extended_func_num(pdev); + vfs_offset += nvfs[i], i++) + ; + if (i == sizeof(nvfs)/sizeof(nvfs[0])) { + err = -ENODEV; + goto err_free_dev; + } + if ((extended_func_num(pdev) - vfs_offset) + > prb_vf[i]) { + mlx4_warn(dev, "Skipping virtual function:%d\n", + extended_func_num(pdev)); + err = -ENODEV; + goto err_free_dev; + } } mlx4_warn(dev, "Detected virtual function - running in slave mode\n"); dev->flags |= MLX4_FLAG_SLAVE; @@ -2220,18 +2450,30 @@ } } - if (num_vfs) { - mlx4_warn(dev, "Enabling SR-IOV with %d VFs\n", num_vfs); - err = pci_enable_sriov(pdev, num_vfs); - if (err) { - mlx4_err(dev, "Failed to enable SR-IOV, continuing without SR-IOV (err = %d).\n", - err); + if (total_vfs) { + mlx4_warn(dev, "Enabling SR-IOV with %d VFs\n", + total_vfs); + dev->dev_vfs = kzalloc( + total_vfs * sizeof(*dev->dev_vfs), + GFP_KERNEL); + if (NULL == dev->dev_vfs) { + mlx4_err(dev, "Failed to allocate memory for VFs\n"); err = 0; } else { - mlx4_warn(dev, "Running in master mode\n"); - dev->flags |= MLX4_FLAG_SRIOV | - MLX4_FLAG_MASTER; - dev->num_vfs = num_vfs; + atomic_inc(&pf_loading); + err = pci_enable_sriov(pdev, total_vfs); + if (err) { + mlx4_err(dev, "Failed to enable SR-IOV, continuing without SR-IOV (err = %d).\n", + err); + atomic_dec(&pf_loading); + err = 0; + } else { + mlx4_warn(dev, "Running in master mode\n"); + dev->flags |= MLX4_FLAG_SRIOV | + MLX4_FLAG_MASTER; + dev->num_vfs = total_vfs; + sriov_initialized = 1; + } } } @@ -2287,15 +2529,45 @@ goto err_mfunc; } + /* check if the device is functioning at its maximum possible speed. + * No return code for this call, just warn the user in case of PCI + * express device capabilities are under-satisfied by the bus. + */ + if (!mlx4_is_slave(dev)) + mlx4_check_pcie_caps(dev); + /* In master functions, the communication channel must be initialized * after obtaining its address from fw */ if (mlx4_is_master(dev)) { + unsigned sum = 0; err = mlx4_multi_func_init(dev); if (err) { mlx4_err(dev, "Failed to init master mfunc" "interface, aborting.\n"); goto err_close; } + if (sriov_initialized) { + int ib_ports = 0; + mlx4_foreach_port(i, dev, MLX4_PORT_TYPE_IB) + ib_ports++; + + if (ib_ports && + (num_vfs_argc > 1 || probe_vfs_argc > 1)) { + mlx4_err(dev, + "Invalid syntax of num_vfs/probe_vfs with IB port - single port VFs syntax is only supported when all ports are configured as ethernet\n"); + err = -EINVAL; + goto err_master_mfunc; + } + for (i = 0; i < sizeof(nvfs)/sizeof(nvfs[0]); i++) { + unsigned j; + for (j = 0; j < nvfs[i]; ++sum, ++j) { + dev->dev_vfs[sum].min_port = + i < 2 ? i + 1 : 1; + dev->dev_vfs[sum].n_ports = i < 2 ? 1 : + dev->caps.num_ports; + } + } + } } err = mlx4_alloc_eq_table(dev); @@ -2350,8 +2622,10 @@ mlx4_sense_init(dev); mlx4_start_sense(dev); - priv->pci_dev_data = pci_dev_data; - pci_set_drvdata(pdev, dev); + priv->removed = 0; + + if (mlx4_is_master(dev) && dev->num_vfs) + atomic_dec(&pf_loading); return 0; @@ -2403,6 +2677,11 @@ if (!mlx4_is_slave(dev)) mlx4_free_ownership(dev); + if (mlx4_is_master(dev) && dev->num_vfs) + atomic_dec(&pf_loading); + + kfree(priv->dev.dev_vfs); + err_free_dev: kfree(priv); @@ -2417,84 +2696,110 @@ static int mlx4_init_one(struct pci_dev *pdev, const struct pci_device_id *id) { + struct mlx4_priv *priv; + struct mlx4_dev *dev; + printk_once(KERN_INFO "%s", mlx4_version); + priv = kzalloc(sizeof(*priv), GFP_KERNEL); + if (!priv) + return -ENOMEM; + + dev = &priv->dev; + pci_set_drvdata(pdev, dev); + priv->pci_dev_data = id->driver_data; + return __mlx4_init_one(pdev, id->driver_data); } -static void mlx4_remove_one(struct pci_dev *pdev) +static void __mlx4_remove_one(struct pci_dev *pdev) { struct mlx4_dev *dev = pci_get_drvdata(pdev); struct mlx4_priv *priv = mlx4_priv(dev); + int pci_dev_data; int p; - if (dev) { - /* in SRIOV it is not allowed to unload the pf's - * driver while there are alive vf's */ - if (mlx4_is_master(dev)) { - if (mlx4_how_many_lives_vf(dev)) - printk(KERN_ERR "Removing PF when there are assigned VF's !!!\n"); - } - mlx4_stop_sense(dev); - mlx4_unregister_device(dev); + if (priv->removed) + return; - for (p = 1; p <= dev->caps.num_ports; p++) { - mlx4_cleanup_port_info(&priv->port[p]); - mlx4_CLOSE_PORT(dev, p); - } + pci_dev_data = priv->pci_dev_data; - if (mlx4_is_master(dev)) - mlx4_free_resource_tracker(dev, - RES_TR_FREE_SLAVES_ONLY); + /* in SRIOV it is not allowed to unload the pf's + * driver while there are alive vf's */ + if (mlx4_is_master(dev) && mlx4_how_many_lives_vf(dev)) + printk(KERN_ERR "Removing PF when there are assigned VF's !!!\n"); + mlx4_stop_sense(dev); + mlx4_unregister_device(dev); + + for (p = 1; p <= dev->caps.num_ports; p++) { + mlx4_cleanup_port_info(&priv->port[p]); + mlx4_CLOSE_PORT(dev, p); + } - mlx4_cleanup_counters_table(dev); - mlx4_cleanup_qp_table(dev); - mlx4_cleanup_srq_table(dev); - mlx4_cleanup_cq_table(dev); - mlx4_cmd_use_polling(dev); - mlx4_cleanup_eq_table(dev); - mlx4_cleanup_mcg_table(dev); - mlx4_cleanup_mr_table(dev); - mlx4_cleanup_xrcd_table(dev); - mlx4_cleanup_pd_table(dev); + if (mlx4_is_master(dev)) + mlx4_free_resource_tracker(dev, + RES_TR_FREE_SLAVES_ONLY); - if (mlx4_is_master(dev)) - mlx4_free_resource_tracker(dev, - RES_TR_FREE_STRUCTS_ONLY); + mlx4_cleanup_counters_table(dev); + mlx4_cleanup_qp_table(dev); + mlx4_cleanup_srq_table(dev); + mlx4_cleanup_cq_table(dev); + mlx4_cmd_use_polling(dev); + mlx4_cleanup_eq_table(dev); + mlx4_cleanup_mcg_table(dev); + mlx4_cleanup_mr_table(dev); + mlx4_cleanup_xrcd_table(dev); + mlx4_cleanup_pd_table(dev); - iounmap(priv->kar); - mlx4_uar_free(dev, &priv->driver_uar); - mlx4_cleanup_uar_table(dev); - if (!mlx4_is_slave(dev)) - mlx4_clear_steering(dev); - mlx4_free_eq_table(dev); - if (mlx4_is_master(dev)) - mlx4_multi_func_cleanup(dev); - mlx4_close_hca(dev); - if (mlx4_is_slave(dev)) - mlx4_multi_func_cleanup(dev); - mlx4_cmd_cleanup(dev); - - if (dev->flags & MLX4_FLAG_MSI_X) - pci_disable_msix(pdev); - if (dev->flags & MLX4_FLAG_SRIOV) { - mlx4_warn(dev, "Disabling SR-IOV\n"); - pci_disable_sriov(pdev); - } - - if (!mlx4_is_slave(dev)) - mlx4_free_ownership(dev); - - kfree(dev->caps.qp0_tunnel); - kfree(dev->caps.qp0_proxy); - kfree(dev->caps.qp1_tunnel); - kfree(dev->caps.qp1_proxy); - - kfree(priv); - pci_release_regions(pdev); - pci_disable_device(pdev); - pci_set_drvdata(pdev, NULL); + if (mlx4_is_master(dev)) + mlx4_free_resource_tracker(dev, + RES_TR_FREE_STRUCTS_ONLY); + + iounmap(priv->kar); + mlx4_uar_free(dev, &priv->driver_uar); + mlx4_cleanup_uar_table(dev); + if (!mlx4_is_slave(dev)) + mlx4_clear_steering(dev); + mlx4_free_eq_table(dev); + if (mlx4_is_master(dev)) + mlx4_multi_func_cleanup(dev); + mlx4_close_hca(dev); + if (mlx4_is_slave(dev)) + mlx4_multi_func_cleanup(dev); + mlx4_cmd_cleanup(dev); + + if (dev->flags & MLX4_FLAG_MSI_X) + pci_disable_msix(pdev); + if (dev->flags & MLX4_FLAG_SRIOV) { + mlx4_warn(dev, "Disabling SR-IOV\n"); + pci_disable_sriov(pdev); + dev->num_vfs = 0; } + + if (!mlx4_is_slave(dev)) + mlx4_free_ownership(dev); + + kfree(dev->caps.qp0_tunnel); + kfree(dev->caps.qp0_proxy); + kfree(dev->caps.qp1_tunnel); + kfree(dev->caps.qp1_proxy); + kfree(dev->dev_vfs); + + pci_release_regions(pdev); + pci_disable_device(pdev); + memset(priv, 0, sizeof(*priv)); + priv->pci_dev_data = pci_dev_data; + priv->removed = 1; +} + +static void mlx4_remove_one(struct pci_dev *pdev) +{ + struct mlx4_dev *dev = pci_get_drvdata(pdev); + struct mlx4_priv *priv = mlx4_priv(dev); + + __mlx4_remove_one(pdev); + kfree(priv); + pci_set_drvdata(pdev, NULL); } int mlx4_restart_one(struct pci_dev *pdev) @@ -2504,7 +2809,7 @@ int pci_dev_data; pci_dev_data = priv->pci_dev_data; - mlx4_remove_one(pdev); + __mlx4_remove_one(pdev); return __mlx4_init_one(pdev, pci_dev_data); } @@ -2559,7 +2864,7 @@ static pci_ers_result_t mlx4_pci_err_detected(struct pci_dev *pdev, pci_channel_state_t state) { - mlx4_remove_one(pdev); + __mlx4_remove_one(pdev); return state == pci_channel_io_perm_failure ? PCI_ERS_RESULT_DISCONNECT : PCI_ERS_RESULT_NEED_RESET; @@ -2567,7 +2872,11 @@ static pci_ers_result_t mlx4_pci_slot_reset(struct pci_dev *pdev) { - int ret = __mlx4_init_one(pdev, 0); + struct mlx4_dev *dev = pci_get_drvdata(pdev); + struct mlx4_priv *priv = mlx4_priv(dev); + int ret; + + ret = __mlx4_init_one(pdev, priv->pci_dev_data); return ret ? PCI_ERS_RESULT_DISCONNECT : PCI_ERS_RESULT_RECOVERED; } @@ -2581,6 +2890,7 @@ .name = DRV_NAME, .id_table = mlx4_pci_table, .probe = mlx4_init_one, + .shutdown = __mlx4_remove_one, .remove = mlx4_remove_one, .err_handler = &mlx4_err_handler, }; --- linux-3.13.0.orig/drivers/net/ethernet/mellanox/mlx4/mcg.c +++ linux-3.13.0/drivers/net/ethernet/mellanox/mlx4/mcg.c @@ -125,9 +125,14 @@ enum mlx4_steer_type steer, u32 qpn) { - struct mlx4_steer *s_steer = &mlx4_priv(dev)->steer[port - 1]; + struct mlx4_steer *s_steer; struct mlx4_promisc_qp *pqp; + if (port < 1 || port > dev->caps.num_ports) + return NULL; + + s_steer = &mlx4_priv(dev)->steer[port - 1]; + list_for_each_entry(pqp, &s_steer->promisc_qps[steer], list) { if (pqp->qpn == qpn) return pqp; @@ -154,6 +159,9 @@ u32 prot; int err; + if (port < 1 || port > dev->caps.num_ports) + return -EINVAL; + s_steer = &mlx4_priv(dev)->steer[port - 1]; new_entry = kzalloc(sizeof *new_entry, GFP_KERNEL); if (!new_entry) @@ -238,6 +246,9 @@ struct mlx4_promisc_qp *pqp; struct mlx4_promisc_qp *dqp; + if (port < 1 || port > dev->caps.num_ports) + return -EINVAL; + s_steer = &mlx4_priv(dev)->steer[port - 1]; pqp = get_promisc_qp(dev, port, steer, qpn); @@ -283,6 +294,9 @@ struct mlx4_steer_index *tmp_entry, *entry = NULL; struct mlx4_promisc_qp *dqp, *tmp_dqp; + if (port < 1 || port > dev->caps.num_ports) + return NULL; + s_steer = &mlx4_priv(dev)->steer[port - 1]; /* if qp is not promisc, it cannot be duplicated */ @@ -324,6 +338,9 @@ bool ret = false; int i; + if (port < 1 || port > dev->caps.num_ports) + return NULL; + s_steer = &mlx4_priv(dev)->steer[port - 1]; mailbox = mlx4_alloc_cmd_mailbox(dev); @@ -378,6 +395,9 @@ int err; struct mlx4_priv *priv = mlx4_priv(dev); + if (port < 1 || port > dev->caps.num_ports) + return -EINVAL; + s_steer = &mlx4_priv(dev)->steer[port - 1]; mutex_lock(&priv->mcg_table.mutex); @@ -484,6 +504,9 @@ int loc, i; int err; + if (port < 1 || port > dev->caps.num_ports) + return -EINVAL; + s_steer = &mlx4_priv(dev)->steer[port - 1]; mutex_lock(&priv->mcg_table.mutex); @@ -674,7 +697,8 @@ [MLX4_NET_TRANS_RULE_ID_IPV6] = 0xE003, [MLX4_NET_TRANS_RULE_ID_IPV4] = 0xE002, [MLX4_NET_TRANS_RULE_ID_TCP] = 0xE004, - [MLX4_NET_TRANS_RULE_ID_UDP] = 0xE006 + [MLX4_NET_TRANS_RULE_ID_UDP] = 0xE006, + [MLX4_NET_TRANS_RULE_ID_VXLAN] = 0xE008 }; int mlx4_map_sw_to_hw_steering_id(struct mlx4_dev *dev, @@ -699,7 +723,9 @@ [MLX4_NET_TRANS_RULE_ID_TCP] = sizeof(struct mlx4_net_trans_rule_hw_tcp_udp), [MLX4_NET_TRANS_RULE_ID_UDP] = - sizeof(struct mlx4_net_trans_rule_hw_tcp_udp) + sizeof(struct mlx4_net_trans_rule_hw_tcp_udp), + [MLX4_NET_TRANS_RULE_ID_VXLAN] = + sizeof(struct mlx4_net_trans_rule_hw_vxlan) }; int mlx4_hw_rule_sz(struct mlx4_dev *dev, @@ -764,6 +790,13 @@ rule_hw->tcp_udp.src_port_msk = spec->tcp_udp.src_port_msk; break; + case MLX4_NET_TRANS_RULE_ID_VXLAN: + rule_hw->vxlan.vni = + cpu_to_be32(be32_to_cpu(spec->vxlan.vni) << 8); + rule_hw->vxlan.vni_mask = + cpu_to_be32(be32_to_cpu(spec->vxlan.vni_mask) << 8); + break; + default: return -EINVAL; } @@ -895,6 +928,23 @@ } EXPORT_SYMBOL_GPL(mlx4_flow_detach); +int mlx4_FLOW_STEERING_IB_UC_QP_RANGE(struct mlx4_dev *dev, u32 min_range_qpn, + u32 max_range_qpn) +{ + int err; + u64 in_param; + + in_param = ((u64) min_range_qpn) << 32; + in_param |= ((u64) max_range_qpn) & 0xFFFFFFFF; + + err = mlx4_cmd(dev, in_param, 0, 0, + MLX4_FLOW_STEERING_IB_UC_QP_RANGE, + MLX4_CMD_TIME_CLASS_A, MLX4_CMD_NATIVE); + + return err; +} +EXPORT_SYMBOL_GPL(mlx4_FLOW_STEERING_IB_UC_QP_RANGE); + int mlx4_qp_attach_common(struct mlx4_dev *dev, struct mlx4_qp *qp, u8 gid[16], int block_mcast_loopback, enum mlx4_protocol prot, enum mlx4_steer_type steer) @@ -996,7 +1046,7 @@ index, dev->caps.num_mgms); else mlx4_bitmap_free(&priv->mcg_table.bitmap, - index - dev->caps.num_mgms); + index - dev->caps.num_mgms, MLX4_USE_RR); } mutex_unlock(&priv->mcg_table.mutex); @@ -1087,7 +1137,7 @@ index, amgm_index, dev->caps.num_mgms); else mlx4_bitmap_free(&priv->mcg_table.bitmap, - amgm_index - dev->caps.num_mgms); + amgm_index - dev->caps.num_mgms, MLX4_USE_RR); } } else { /* Remove entry from AMGM */ @@ -1107,7 +1157,7 @@ prev, index, dev->caps.num_mgms); else mlx4_bitmap_free(&priv->mcg_table.bitmap, - index - dev->caps.num_mgms); + index - dev->caps.num_mgms, MLX4_USE_RR); } out: @@ -1337,9 +1387,12 @@ struct mlx4_cmd_info *cmd) { u32 qpn = (u32) vhcr->in_param & 0xffffffff; - u8 port = vhcr->in_param >> 62; + int port = mlx4_slave_convert_port(dev, slave, vhcr->in_param >> 62); enum mlx4_steer_type steer = vhcr->in_modifier; + if (port < 0) + return -EINVAL; + /* Promiscuous unicast is not allowed in mfunc */ if (mlx4_is_mfunc(dev) && steer == MLX4_UC_STEER) return 0; --- linux-3.13.0.orig/drivers/net/ethernet/mellanox/mlx4/mlx4.h +++ linux-3.13.0/drivers/net/ethernet/mellanox/mlx4/mlx4.h @@ -51,8 +51,8 @@ #define DRV_NAME "mlx4_core" #define PFX DRV_NAME ": " -#define DRV_VERSION "1.1" -#define DRV_RELDATE "Dec, 2011" +#define DRV_VERSION "2.2-1" +#define DRV_RELDATE "Feb, 2014" #define MLX4_FS_UDP_UC_EN (1 << 1) #define MLX4_FS_TCP_UC_EN (1 << 2) @@ -282,6 +282,9 @@ #define MLX4_MPT_STATUS_SW 0xF0 #define MLX4_MPT_STATUS_HW 0x00 +#define MLX4_CQE_SIZE_MASK_STRIDE 0x3 +#define MLX4_EQE_SIZE_MASK_STRIDE 0x30 + /* * Must be packed because mtt_seg is 64 bits but only aligned to 32 bits. */ @@ -695,6 +698,17 @@ int max; }; +#define MLX4_ROCE_GID_ENTRY_SIZE 16 + +struct mlx4_roce_gid_entry { + u8 raw[MLX4_ROCE_GID_ENTRY_SIZE]; +}; + +struct mlx4_roce_gid_table { + struct mlx4_roce_gid_entry roce_gids[MLX4_ROCE_MAX_GIDS]; + struct mutex mutex; +}; + #define MLX4_MAX_VLAN_NUM 128 #define MLX4_VLAN_TABLE_SIZE (MLX4_MAX_VLAN_NUM << 2) @@ -758,6 +772,7 @@ struct device_attribute port_mtu_attr; struct mlx4_mac_table mac_table; struct mlx4_vlan_table vlan_table; + struct mlx4_roce_gid_table gid_table; int base_qpn; }; @@ -783,6 +798,11 @@ MLX4_PCI_DEV_FORCE_SENSE_PORT = 1 << 1, }; +enum { + MLX4_NO_RR = 0, + MLX4_USE_RR = 1, +}; + struct mlx4_priv { struct mlx4_dev dev; @@ -791,6 +811,7 @@ spinlock_t ctx_lock; int pci_dev_data; + int removed; struct list_head pgdir_list; struct mutex pgdir_mutex; @@ -844,9 +865,10 @@ extern struct workqueue_struct *mlx4_wq; u32 mlx4_bitmap_alloc(struct mlx4_bitmap *bitmap); -void mlx4_bitmap_free(struct mlx4_bitmap *bitmap, u32 obj); +void mlx4_bitmap_free(struct mlx4_bitmap *bitmap, u32 obj, int use_rr); u32 mlx4_bitmap_alloc_range(struct mlx4_bitmap *bitmap, int cnt, int align); -void mlx4_bitmap_free_range(struct mlx4_bitmap *bitmap, u32 obj, int cnt); +void mlx4_bitmap_free_range(struct mlx4_bitmap *bitmap, u32 obj, int cnt, + int use_rr); u32 mlx4_bitmap_avail(struct mlx4_bitmap *bitmap); int mlx4_bitmap_init(struct mlx4_bitmap *bitmap, u32 num, u32 mask, u32 reserved_bot, u32 resetrved_top); @@ -1128,6 +1150,8 @@ void mlx4_init_mac_table(struct mlx4_dev *dev, struct mlx4_mac_table *table); void mlx4_init_vlan_table(struct mlx4_dev *dev, struct mlx4_vlan_table *table); +void mlx4_init_roce_gid_table(struct mlx4_dev *dev, + struct mlx4_roce_gid_table *table); void __mlx4_unregister_vlan(struct mlx4_dev *dev, u8 port, u16 vlan); int __mlx4_register_vlan(struct mlx4_dev *dev, u8 port, u16 vlan, int *index); @@ -1137,6 +1161,7 @@ enum mlx4_resource resource_type, u64 resource_id, int *slave); void mlx4_delete_all_resources_for_slave(struct mlx4_dev *dev, int slave_id); +void mlx4_reset_roce_gids(struct mlx4_dev *dev, int slave); int mlx4_init_resource_tracker(struct mlx4_dev *dev); void mlx4_free_resource_tracker(struct mlx4_dev *dev, @@ -1183,6 +1208,12 @@ struct mlx4_cmd_mailbox *outbox, struct mlx4_cmd_info *cmd); +int mlx4_UPDATE_QP_wrapper(struct mlx4_dev *dev, int slave, + struct mlx4_vhcr *vhcr, + struct mlx4_cmd_mailbox *inbox, + struct mlx4_cmd_mailbox *outbox, + struct mlx4_cmd_info *cmd); + int mlx4_PROMISC_wrapper(struct mlx4_dev *dev, int slave, struct mlx4_vhcr *vhcr, struct mlx4_cmd_mailbox *inbox, @@ -1236,6 +1267,11 @@ struct mlx4_cmd_mailbox *inbox, struct mlx4_cmd_mailbox *outbox, struct mlx4_cmd_info *cmd); +int mlx4_ACCESS_REG_wrapper(struct mlx4_dev *dev, int slave, + struct mlx4_vhcr *vhcr, + struct mlx4_cmd_mailbox *inbox, + struct mlx4_cmd_mailbox *outbox, + struct mlx4_cmd_info *cmd); int mlx4_get_mgm_entry_size(struct mlx4_dev *dev); int mlx4_get_qp_per_mgm(struct mlx4_dev *dev); @@ -1271,4 +1307,8 @@ void mlx4_init_quotas(struct mlx4_dev *dev); +int mlx4_get_slave_num_gids(struct mlx4_dev *dev, int slave, int port); +/* Returns the VF index of slave */ +int mlx4_get_vf_indx(struct mlx4_dev *dev, int slave); + #endif /* MLX4_H */ --- linux-3.13.0.orig/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h +++ linux-3.13.0/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h @@ -45,6 +45,7 @@ #include #endif #include +#include #include #include @@ -56,8 +57,8 @@ #include "en_port.h" #define DRV_NAME "mlx4_en" -#define DRV_VERSION "2.0" -#define DRV_RELDATE "Dec 2011" +#define DRV_VERSION "2.2-1" +#define DRV_RELDATE "Feb 2014" #define MLX4_EN_MSG_LEVEL (NETIF_MSG_LINK | NETIF_MSG_IFDOWN) @@ -92,6 +93,8 @@ * OS related constants and tunables */ +#define MLX4_EN_PRIV_FLAGS_BLUEFLAME 1 + #define MLX4_EN_WATCHDOG_TIMEOUT (15 * HZ) /* Use the maximum between 16384 and a single page */ @@ -118,6 +121,7 @@ #define MLX4_EN_MIN_TX_SIZE (4096 / TXBB_SIZE) #define MLX4_EN_SMALL_PKT_SIZE 64 +#define MLX4_EN_MIN_TX_RING_P_UP 1 #define MLX4_EN_MAX_TX_RING_P_UP 32 #define MLX4_EN_NUM_UP 8 #define MLX4_EN_DEF_TX_RING_SIZE 512 @@ -186,6 +190,13 @@ #define GET_AVG_PERF_COUNTER(cnt) (0) #endif /* MLX4_EN_PERF_STAT */ +/* Constants for TX flow */ +enum { + MAX_INLINE = 104, /* 128 - 16 - 4 - 4 */ + MAX_BF = 256, + MIN_PKT_LEN = 17, +}; + /* * Configurables */ @@ -255,6 +266,8 @@ u16 poll_cnt; struct mlx4_en_tx_info *tx_info; u8 *bounce_buf; + u8 queue_index; + cpumask_t affinity_mask; u32 last_nr_txbb; struct mlx4_qp qp; struct mlx4_qp_context context; @@ -264,10 +277,14 @@ unsigned long bytes; unsigned long packets; unsigned long tx_csum; + unsigned long queue_stopped; + unsigned long wake_queue; struct mlx4_bf bf; bool bf_enabled; + bool bf_alloced; struct netdev_queue *tx_queue; int hwtstamp_tx_type; + int inline_thold; }; struct mlx4_en_rx_desc { @@ -300,13 +317,13 @@ unsigned long csum_ok; unsigned long csum_none; int hwtstamp_rx_filter; + cpumask_var_t affinity_mask; }; struct mlx4_en_cq { struct mlx4_cq mcq; struct mlx4_hwq_resources wqres; int ring; - spinlock_t lock; struct net_device *dev; struct napi_struct napi; int size; @@ -330,6 +347,7 @@ #define CQ_USER_PEND (MLX4_EN_CQ_STATE_POLL | MLX4_EN_CQ_STATE_POLL_YIELD) spinlock_t poll_lock; /* protects from LLS/napi conflicts */ #endif /* CONFIG_NET_RX_BUSY_POLL */ + struct irq_desc *irq_desc; }; struct mlx4_en_port_profile { @@ -343,6 +361,7 @@ u8 tx_pause; u8 tx_ppp; int rss_rings; + int inline_thold; }; struct mlx4_en_profile { @@ -373,10 +392,14 @@ u32 priv_pdn; spinlock_t uar_lock; u8 mac_removed[MLX4_MAX_PORTS + 1]; + rwlock_t clock_lock; + u32 nominal_c_mult; struct cyclecounter cycles; struct timecounter clock; unsigned long last_overflow_check; unsigned long overflow_period; + struct ptp_clock *ptp_clock; + struct ptp_clock_info ptp_clock_info; }; @@ -388,10 +411,16 @@ enum mlx4_qp_state indir_state; }; +enum mlx4_en_port_flag { + MLX4_EN_PORT_ANC = 1<<0, /* Auto-negotiation complete */ + MLX4_EN_PORT_ANE = 1<<1, /* Auto-negotiation enabled */ +}; + struct mlx4_en_port_state { int link_state; int link_speed; - int transciver; + int transceiver; + u32 flags; }; struct mlx4_en_pkt_stats { @@ -434,6 +463,7 @@ enum mlx4_en_mclist_act action; u8 addr[ETH_ALEN]; u64 reg_id; + u64 tunnel_reg_id; }; struct mlx4_en_frag_info { @@ -513,11 +543,12 @@ int registered; int allocated; int stride; - unsigned char prev_mac[ETH_ALEN + 2]; + unsigned char current_mac[ETH_ALEN + 2]; int mac_index; unsigned max_mtu; int base_qpn; int cqe_factor; + int cqe_size; struct mlx4_en_rss_map rss_map; __be32 ctrl_flags; @@ -540,6 +571,10 @@ struct work_struct linkstate_task; struct delayed_work stats_task; struct delayed_work service_task; +#ifdef CONFIG_MLX4_EN_VXLAN + struct work_struct vxlan_add_task; + struct work_struct vxlan_del_task; +#endif struct mlx4_en_perf_stats pstats; struct mlx4_en_pkt_stats pkstats; struct mlx4_en_port_stats port_stats; @@ -565,7 +600,10 @@ struct list_head filters; struct hlist_head filter_hash[1 << MLX4_EN_FILTER_HASH_SHIFT]; #endif + u64 tunnel_reg_id; + __be16 vxlan_port; + u32 pflags; }; enum mlx4_en_wol { @@ -580,6 +618,11 @@ struct rcu_head rcu; }; +static inline struct mlx4_cqe *mlx4_en_get_cqe(void *buf, int idx, int cqe_sz) +{ + return buf + idx * cqe_sz; +} + #ifdef CONFIG_NET_RX_BUSY_POLL static inline void mlx4_en_cq_init_lock(struct mlx4_en_cq *cq) { @@ -653,7 +696,7 @@ } /* true if a socket is polling, even if it did not get the lock */ -static inline bool mlx4_en_cq_ll_polling(struct mlx4_en_cq *cq) +static inline bool mlx4_en_cq_busy_polling(struct mlx4_en_cq *cq) { WARN_ON(!(cq->state & MLX4_CQ_LOCKED)); return cq->state & CQ_USER_PEND; @@ -683,7 +726,7 @@ return false; } -static inline bool mlx4_en_cq_ll_polling(struct mlx4_en_cq *cq) +static inline bool mlx4_en_cq_busy_polling(struct mlx4_en_cq *cq) { return false; } @@ -715,12 +758,13 @@ void mlx4_en_tx_irq(struct mlx4_cq *mcq); u16 mlx4_en_select_queue(struct net_device *dev, struct sk_buff *skb, - void *accel_priv); + void *accel_priv, select_queue_fallback_t fallback); netdev_tx_t mlx4_en_xmit(struct sk_buff *skb, struct net_device *dev); int mlx4_en_create_tx_ring(struct mlx4_en_priv *priv, struct mlx4_en_tx_ring **pring, - int qpn, u32 size, u16 stride, int node); + int qpn, u32 size, u16 stride, + int node, int queue_index); void mlx4_en_destroy_tx_ring(struct mlx4_en_priv *priv, struct mlx4_en_tx_ring **pring); int mlx4_en_activate_tx_ring(struct mlx4_en_priv *priv, @@ -728,7 +772,7 @@ int cq, int user_prio); void mlx4_en_deactivate_tx_ring(struct mlx4_en_priv *priv, struct mlx4_en_tx_ring *ring); - +void mlx4_en_set_num_rx_rings(struct mlx4_en_dev *mdev); int mlx4_en_create_rx_ring(struct mlx4_en_priv *priv, struct mlx4_en_rx_ring **pring, u32 size, u16 stride, int node); @@ -742,6 +786,7 @@ struct mlx4_en_cq *cq, int budget); int mlx4_en_poll_rx_cq(struct napi_struct *napi, int budget); +int mlx4_en_poll_tx_cq(struct napi_struct *napi, int budget); void mlx4_en_fill_qp_context(struct mlx4_en_priv *priv, int size, int stride, int is_tx, int rss, int qpn, int cqn, int user_prio, struct mlx4_qp_context *context); @@ -776,9 +821,15 @@ #define MLX4_EN_NUM_SELF_TEST 5 void mlx4_en_ex_selftest(struct net_device *dev, u32 *flags, u64 *buf); -u64 mlx4_en_mac_to_u64(u8 *addr); void mlx4_en_ptp_overflow_check(struct mlx4_en_dev *mdev); +#define DEV_FEATURE_CHANGED(dev, new_features, feature) \ + ((dev->features & feature) ^ (new_features & feature)) + +int mlx4_en_reset_config(struct net_device *dev, + struct hwtstamp_config ts_config, + netdev_features_t new_features); + /* * Functions for time stamping */ @@ -787,9 +838,7 @@ struct skb_shared_hwtstamps *hwts, u64 timestamp); void mlx4_en_init_timestamp(struct mlx4_en_dev *mdev); -int mlx4_en_timestamp_config(struct net_device *dev, - int tx_type, - int rx_filter); +void mlx4_en_remove_timestamp(struct mlx4_en_dev *mdev); /* Globals */ --- linux-3.13.0.orig/drivers/net/ethernet/mellanox/mlx4/mr.c +++ linux-3.13.0/drivers/net/ethernet/mellanox/mlx4/mr.c @@ -346,7 +346,7 @@ { struct mlx4_priv *priv = mlx4_priv(dev); - mlx4_bitmap_free(&priv->mr_table.mpt_bitmap, index); + mlx4_bitmap_free(&priv->mr_table.mpt_bitmap, index, MLX4_NO_RR); } static void mlx4_mpt_release(struct mlx4_dev *dev, u32 index) @@ -991,7 +991,7 @@ int mlx4_SYNC_TPT(struct mlx4_dev *dev) { - return mlx4_cmd(dev, 0, 0, 0, MLX4_CMD_SYNC_TPT, 1000, - MLX4_CMD_NATIVE); + return mlx4_cmd(dev, 0, 0, 0, MLX4_CMD_SYNC_TPT, + MLX4_CMD_TIME_CLASS_A, MLX4_CMD_NATIVE); } EXPORT_SYMBOL_GPL(mlx4_SYNC_TPT); --- linux-3.13.0.orig/drivers/net/ethernet/mellanox/mlx4/pd.c +++ linux-3.13.0/drivers/net/ethernet/mellanox/mlx4/pd.c @@ -59,7 +59,7 @@ void mlx4_pd_free(struct mlx4_dev *dev, u32 pdn) { - mlx4_bitmap_free(&mlx4_priv(dev)->pd_bitmap, pdn); + mlx4_bitmap_free(&mlx4_priv(dev)->pd_bitmap, pdn, MLX4_USE_RR); } EXPORT_SYMBOL_GPL(mlx4_pd_free); @@ -96,7 +96,7 @@ void __mlx4_xrcd_free(struct mlx4_dev *dev, u32 xrcdn) { - mlx4_bitmap_free(&mlx4_priv(dev)->xrcd_bitmap, xrcdn); + mlx4_bitmap_free(&mlx4_priv(dev)->xrcd_bitmap, xrcdn, MLX4_USE_RR); } void mlx4_xrcd_free(struct mlx4_dev *dev, u32 xrcdn) @@ -164,7 +164,7 @@ void mlx4_uar_free(struct mlx4_dev *dev, struct mlx4_uar *uar) { - mlx4_bitmap_free(&mlx4_priv(dev)->uar_table.bitmap, uar->index); + mlx4_bitmap_free(&mlx4_priv(dev)->uar_table.bitmap, uar->index, MLX4_USE_RR); } EXPORT_SYMBOL_GPL(mlx4_uar_free); --- linux-3.13.0.orig/drivers/net/ethernet/mellanox/mlx4/port.c +++ linux-3.13.0/drivers/net/ethernet/mellanox/mlx4/port.c @@ -75,6 +75,16 @@ table->total = 0; } +void mlx4_init_roce_gid_table(struct mlx4_dev *dev, + struct mlx4_roce_gid_table *table) +{ + int i; + + mutex_init(&table->mutex); + for (i = 0; i < MLX4_ROCE_MAX_GIDS; i++) + memset(table->roce_gids[i].raw, 0, MLX4_ROCE_GID_ENTRY_SIZE); +} + static int validate_index(struct mlx4_dev *dev, struct mlx4_mac_table *table, int index) { @@ -123,6 +133,26 @@ return err; } +int mlx4_find_cached_mac(struct mlx4_dev *dev, u8 port, u64 mac, int *idx) +{ + struct mlx4_port_info *info = &mlx4_priv(dev)->port[port]; + struct mlx4_mac_table *table = &info->mac_table; + int i; + + for (i = 0; i < MLX4_MAX_MAC_NUM; i++) { + if (!table->refs[i]) + continue; + + if (mac == (MLX4_MAC_MASK & be64_to_cpu(table->entries[i]))) { + *idx = i; + return 0; + } + } + + return -ENOENT; +} +EXPORT_SYMBOL_GPL(mlx4_find_cached_mac); + int __mlx4_register_mac(struct mlx4_dev *dev, u8 port, u64 mac) { struct mlx4_port_info *info = &mlx4_priv(dev)->port[port]; @@ -485,6 +515,162 @@ mlx4_free_cmd_mailbox(dev, outmailbox); return err; } +static struct mlx4_roce_gid_entry zgid_entry; + +int mlx4_get_slave_num_gids(struct mlx4_dev *dev, int slave, int port) +{ + int vfs; + int slave_gid = slave; + unsigned i; + struct mlx4_slaves_pport slaves_pport; + struct mlx4_active_ports actv_ports; + unsigned max_port_p_one; + + if (slave == 0) + return MLX4_ROCE_PF_GIDS; + + /* Slave is a VF */ + slaves_pport = mlx4_phys_to_slaves_pport(dev, port); + actv_ports = mlx4_get_active_ports(dev, slave); + max_port_p_one = find_first_bit(actv_ports.ports, dev->caps.num_ports) + + bitmap_weight(actv_ports.ports, dev->caps.num_ports) + 1; + + for (i = 1; i < max_port_p_one; i++) { + struct mlx4_active_ports exclusive_ports; + struct mlx4_slaves_pport slaves_pport_actv; + bitmap_zero(exclusive_ports.ports, dev->caps.num_ports); + set_bit(i - 1, exclusive_ports.ports); + if (i == port) + continue; + slaves_pport_actv = mlx4_phys_to_slaves_pport_actv( + dev, &exclusive_ports); + slave_gid -= bitmap_weight(slaves_pport_actv.slaves, + dev->num_vfs + 1); + } + vfs = bitmap_weight(slaves_pport.slaves, dev->num_vfs + 1) - 1; + if (slave_gid <= ((MLX4_ROCE_MAX_GIDS - MLX4_ROCE_PF_GIDS) % vfs)) + return ((MLX4_ROCE_MAX_GIDS - MLX4_ROCE_PF_GIDS) / vfs) + 1; + return (MLX4_ROCE_MAX_GIDS - MLX4_ROCE_PF_GIDS) / vfs; +} + +int mlx4_get_base_gid_ix(struct mlx4_dev *dev, int slave, int port) +{ + int gids; + unsigned i; + int slave_gid = slave; + int vfs; + + struct mlx4_slaves_pport slaves_pport; + struct mlx4_active_ports actv_ports; + unsigned max_port_p_one; + + if (slave == 0) + return 0; + + slaves_pport = mlx4_phys_to_slaves_pport(dev, port); + actv_ports = mlx4_get_active_ports(dev, slave); + max_port_p_one = find_first_bit(actv_ports.ports, dev->caps.num_ports) + + bitmap_weight(actv_ports.ports, dev->caps.num_ports) + 1; + + for (i = 1; i < max_port_p_one; i++) { + struct mlx4_active_ports exclusive_ports; + struct mlx4_slaves_pport slaves_pport_actv; + bitmap_zero(exclusive_ports.ports, dev->caps.num_ports); + set_bit(i - 1, exclusive_ports.ports); + if (i == port) + continue; + slaves_pport_actv = mlx4_phys_to_slaves_pport_actv( + dev, &exclusive_ports); + slave_gid -= bitmap_weight(slaves_pport_actv.slaves, + dev->num_vfs + 1); + } + gids = MLX4_ROCE_MAX_GIDS - MLX4_ROCE_PF_GIDS; + vfs = bitmap_weight(slaves_pport.slaves, dev->num_vfs + 1) - 1; + if (slave_gid <= gids % vfs) + return MLX4_ROCE_PF_GIDS + ((gids / vfs) + 1) * (slave_gid - 1); + + return MLX4_ROCE_PF_GIDS + (gids % vfs) + + ((gids / vfs) * (slave_gid - 1)); +} +EXPORT_SYMBOL_GPL(mlx4_get_base_gid_ix); + +static int mlx4_reset_roce_port_gids(struct mlx4_dev *dev, int slave, + int port, struct mlx4_cmd_mailbox *mailbox) +{ + struct mlx4_roce_gid_entry *gid_entry_mbox; + struct mlx4_priv *priv = mlx4_priv(dev); + int num_gids, base, offset; + int i, err; + + num_gids = mlx4_get_slave_num_gids(dev, slave, port); + base = mlx4_get_base_gid_ix(dev, slave, port); + + memset(mailbox->buf, 0, MLX4_MAILBOX_SIZE); + + mutex_lock(&(priv->port[port].gid_table.mutex)); + /* Zero-out gids belonging to that slave in the port GID table */ + for (i = 0, offset = base; i < num_gids; offset++, i++) + memcpy(priv->port[port].gid_table.roce_gids[offset].raw, + zgid_entry.raw, MLX4_ROCE_GID_ENTRY_SIZE); + + /* Now, copy roce port gids table to mailbox for passing to FW */ + gid_entry_mbox = (struct mlx4_roce_gid_entry *)mailbox->buf; + for (i = 0; i < MLX4_ROCE_MAX_GIDS; gid_entry_mbox++, i++) + memcpy(gid_entry_mbox->raw, + priv->port[port].gid_table.roce_gids[i].raw, + MLX4_ROCE_GID_ENTRY_SIZE); + + err = mlx4_cmd(dev, mailbox->dma, + ((u32)port) | (MLX4_SET_PORT_GID_TABLE << 8), 1, + MLX4_CMD_SET_PORT, MLX4_CMD_TIME_CLASS_B, + MLX4_CMD_NATIVE); + mutex_unlock(&(priv->port[port].gid_table.mutex)); + return err; +} + + +void mlx4_reset_roce_gids(struct mlx4_dev *dev, int slave) +{ + struct mlx4_active_ports actv_ports; + struct mlx4_cmd_mailbox *mailbox; + int num_eth_ports, err; + int i; + + if (slave < 0 || slave > dev->num_vfs) + return; + + actv_ports = mlx4_get_active_ports(dev, slave); + + for (i = 0, num_eth_ports = 0; i < dev->caps.num_ports; i++) { + if (test_bit(i, actv_ports.ports)) { + if (dev->caps.port_type[i + 1] != MLX4_PORT_TYPE_ETH) + continue; + num_eth_ports++; + } + } + + if (!num_eth_ports) + return; + + /* have ETH ports. Alloc mailbox for SET_PORT command */ + mailbox = mlx4_alloc_cmd_mailbox(dev); + if (IS_ERR(mailbox)) + return; + + for (i = 0; i < dev->caps.num_ports; i++) { + if (test_bit(i, actv_ports.ports)) { + if (dev->caps.port_type[i + 1] != MLX4_PORT_TYPE_ETH) + continue; + err = mlx4_reset_roce_port_gids(dev, slave, i + 1, mailbox); + if (err) + mlx4_warn(dev, "Could not reset ETH port GID table for slave %d, port %d (%d)\n", + slave, i + 1, err); + } + } + + mlx4_free_cmd_mailbox(dev, mailbox); + return; +} static int mlx4_common_set_port(struct mlx4_dev *dev, int slave, u32 in_mod, u8 op_mod, struct mlx4_cmd_mailbox *inbox) @@ -495,14 +681,18 @@ struct mlx4_slave_state *slave_st = &master->slave_state[slave]; struct mlx4_set_port_rqp_calc_context *qpn_context; struct mlx4_set_port_general_context *gen_context; + struct mlx4_roce_gid_entry *gid_entry_tbl, *gid_entry_mbox, *gid_entry_mb1; int reset_qkey_viols; int port; int is_eth; + int num_gids; + int base; u32 in_modifier; u32 promisc; u16 mtu, prev_mtu; int err; - int i; + int i, j; + int offset; __be32 agg_cap_mask; __be32 slave_cap_mask; __be32 new_cap_mask; @@ -515,7 +705,8 @@ /* Slaves cannot perform SET_PORT operations except changing MTU */ if (is_eth) { if (slave != dev->caps.function && - in_modifier != MLX4_SET_PORT_GENERAL) { + in_modifier != MLX4_SET_PORT_GENERAL && + in_modifier != MLX4_SET_PORT_GID_TABLE) { mlx4_warn(dev, "denying SET_PORT for slave:%d\n", slave); return -EINVAL; @@ -561,8 +752,80 @@ gen_context->mtu = cpu_to_be16(master->max_mtu[port]); break; + case MLX4_SET_PORT_GID_TABLE: + /* change to MULTIPLE entries: number of guest's gids + * need a FOR-loop here over number of gids the guest has. + * 1. Check no duplicates in gids passed by slave + */ + num_gids = mlx4_get_slave_num_gids(dev, slave, port); + base = mlx4_get_base_gid_ix(dev, slave, port); + gid_entry_mbox = (struct mlx4_roce_gid_entry *)(inbox->buf); + for (i = 0; i < num_gids; gid_entry_mbox++, i++) { + if (!memcmp(gid_entry_mbox->raw, zgid_entry.raw, + sizeof(zgid_entry))) + continue; + gid_entry_mb1 = gid_entry_mbox + 1; + for (j = i + 1; j < num_gids; gid_entry_mb1++, j++) { + if (!memcmp(gid_entry_mb1->raw, + zgid_entry.raw, sizeof(zgid_entry))) + continue; + if (!memcmp(gid_entry_mb1->raw, gid_entry_mbox->raw, + sizeof(gid_entry_mbox->raw))) { + /* found duplicate */ + return -EINVAL; + } + } + } + + /* 2. Check that do not have duplicates in OTHER + * entries in the port GID table + */ + + mutex_lock(&(priv->port[port].gid_table.mutex)); + for (i = 0; i < MLX4_ROCE_MAX_GIDS; i++) { + if (i >= base && i < base + num_gids) + continue; /* don't compare to slave's current gids */ + gid_entry_tbl = &priv->port[port].gid_table.roce_gids[i]; + if (!memcmp(gid_entry_tbl->raw, zgid_entry.raw, sizeof(zgid_entry))) + continue; + gid_entry_mbox = (struct mlx4_roce_gid_entry *)(inbox->buf); + for (j = 0; j < num_gids; gid_entry_mbox++, j++) { + if (!memcmp(gid_entry_mbox->raw, zgid_entry.raw, + sizeof(zgid_entry))) + continue; + if (!memcmp(gid_entry_mbox->raw, gid_entry_tbl->raw, + sizeof(gid_entry_tbl->raw))) { + /* found duplicate */ + mlx4_warn(dev, "requested gid entry for slave:%d " + "is a duplicate of gid at index %d\n", + slave, i); + mutex_unlock(&(priv->port[port].gid_table.mutex)); + return -EINVAL; + } + } + } + + /* insert slave GIDs with memcpy, starting at slave's base index */ + gid_entry_mbox = (struct mlx4_roce_gid_entry *)(inbox->buf); + for (i = 0, offset = base; i < num_gids; gid_entry_mbox++, offset++, i++) + memcpy(priv->port[port].gid_table.roce_gids[offset].raw, + gid_entry_mbox->raw, MLX4_ROCE_GID_ENTRY_SIZE); + + /* Now, copy roce port gids table to current mailbox for passing to FW */ + gid_entry_mbox = (struct mlx4_roce_gid_entry *)(inbox->buf); + for (i = 0; i < MLX4_ROCE_MAX_GIDS; gid_entry_mbox++, i++) + memcpy(gid_entry_mbox->raw, + priv->port[port].gid_table.roce_gids[i].raw, + MLX4_ROCE_GID_ENTRY_SIZE); + + err = mlx4_cmd(dev, inbox->dma, in_mod & 0xffff, op_mod, + MLX4_CMD_SET_PORT, MLX4_CMD_TIME_CLASS_B, + MLX4_CMD_NATIVE); + mutex_unlock(&(priv->port[port].gid_table.mutex)); + return err; } - return mlx4_cmd(dev, inbox->dma, in_mod, op_mod, + + return mlx4_cmd(dev, inbox->dma, in_mod & 0xffff, op_mod, MLX4_CMD_SET_PORT, MLX4_CMD_TIME_CLASS_B, MLX4_CMD_NATIVE); } @@ -626,6 +889,15 @@ struct mlx4_cmd_mailbox *outbox, struct mlx4_cmd_info *cmd) { + int port = mlx4_slave_convert_port( + dev, slave, vhcr->in_modifier & 0xFF); + + if (port < 0) + return -EINVAL; + + vhcr->in_modifier = (vhcr->in_modifier & ~0xFF) | + (port & 0xFF); + return mlx4_common_set_port(dev, slave, vhcr->in_modifier, vhcr->op_modifier, inbox); } @@ -800,6 +1072,48 @@ } EXPORT_SYMBOL(mlx4_SET_PORT_SCHEDULER); +enum { + VXLAN_ENABLE_MODIFY = 1 << 7, + VXLAN_STEERING_MODIFY = 1 << 6, + + VXLAN_ENABLE = 1 << 7, +}; + +struct mlx4_set_port_vxlan_context { + u32 reserved1; + u8 modify_flags; + u8 reserved2; + u8 enable_flags; + u8 steering; +}; + +int mlx4_SET_PORT_VXLAN(struct mlx4_dev *dev, u8 port, u8 steering, int enable) +{ + int err; + u32 in_mod; + struct mlx4_cmd_mailbox *mailbox; + struct mlx4_set_port_vxlan_context *context; + + mailbox = mlx4_alloc_cmd_mailbox(dev); + if (IS_ERR(mailbox)) + return PTR_ERR(mailbox); + context = mailbox->buf; + memset(context, 0, sizeof(*context)); + + context->modify_flags = VXLAN_ENABLE_MODIFY | VXLAN_STEERING_MODIFY; + if (enable) + context->enable_flags = VXLAN_ENABLE; + context->steering = steering; + + in_mod = MLX4_SET_PORT_VXLAN << 8 | port; + err = mlx4_cmd(dev, mailbox->dma, in_mod, 1, MLX4_CMD_SET_PORT, + MLX4_CMD_TIME_CLASS_B, MLX4_CMD_NATIVE); + + mlx4_free_cmd_mailbox(dev, mailbox); + return err; +} +EXPORT_SYMBOL(mlx4_SET_PORT_VXLAN); + int mlx4_SET_MCAST_FLTR_wrapper(struct mlx4_dev *dev, int slave, struct mlx4_vhcr *vhcr, struct mlx4_cmd_mailbox *inbox, @@ -866,3 +1180,271 @@ *stats_bitmap |= MLX4_STATS_ERROR_COUNTERS_MASK; } EXPORT_SYMBOL(mlx4_set_stats_bitmap); + +int mlx4_get_slave_from_roce_gid(struct mlx4_dev *dev, int port, u8 *gid, + int *slave_id) +{ + struct mlx4_priv *priv = mlx4_priv(dev); + int i, found_ix = -1; + int vf_gids = MLX4_ROCE_MAX_GIDS - MLX4_ROCE_PF_GIDS; + struct mlx4_slaves_pport slaves_pport; + unsigned num_vfs; + int slave_gid; + + if (!mlx4_is_mfunc(dev)) + return -EINVAL; + + slaves_pport = mlx4_phys_to_slaves_pport(dev, port); + num_vfs = bitmap_weight(slaves_pport.slaves, dev->num_vfs + 1) - 1; + + for (i = 0; i < MLX4_ROCE_MAX_GIDS; i++) { + if (!memcmp(priv->port[port].gid_table.roce_gids[i].raw, gid, + MLX4_ROCE_GID_ENTRY_SIZE)) { + found_ix = i; + break; + } + } + + if (found_ix >= 0) { + /* Calculate a slave_gid which is the slave number in the gid + * table and not a globally unique slave number. + */ + if (found_ix < MLX4_ROCE_PF_GIDS) + slave_gid = 0; + else if (found_ix < MLX4_ROCE_PF_GIDS + (vf_gids % num_vfs) * + (vf_gids / num_vfs + 1)) + slave_gid = ((found_ix - MLX4_ROCE_PF_GIDS) / + (vf_gids / num_vfs + 1)) + 1; + else + slave_gid = + ((found_ix - MLX4_ROCE_PF_GIDS - + ((vf_gids % num_vfs) * ((vf_gids / num_vfs + 1)))) / + (vf_gids / num_vfs)) + vf_gids % num_vfs + 1; + + /* Calculate the globally unique slave id */ + if (slave_gid) { + struct mlx4_active_ports exclusive_ports; + struct mlx4_active_ports actv_ports; + struct mlx4_slaves_pport slaves_pport_actv; + unsigned max_port_p_one; + int num_vfs_before = 0; + int candidate_slave_gid; + + /* Calculate how many VFs are on the previous port, if exists */ + for (i = 1; i < port; i++) { + bitmap_zero(exclusive_ports.ports, dev->caps.num_ports); + set_bit(i - 1, exclusive_ports.ports); + slaves_pport_actv = + mlx4_phys_to_slaves_pport_actv( + dev, &exclusive_ports); + num_vfs_before += bitmap_weight( + slaves_pport_actv.slaves, + dev->num_vfs + 1); + } + + /* candidate_slave_gid isn't necessarily the correct slave, but + * it has the same number of ports and is assigned to the same + * ports as the real slave we're looking for. On dual port VF, + * slave_gid = [single port VFs on port ] + + * [offset of the current slave from the first dual port VF] + + * 1 (for the PF). + */ + candidate_slave_gid = slave_gid + num_vfs_before; + + actv_ports = mlx4_get_active_ports(dev, candidate_slave_gid); + max_port_p_one = find_first_bit( + actv_ports.ports, dev->caps.num_ports) + + bitmap_weight(actv_ports.ports, + dev->caps.num_ports) + 1; + + /* Calculate the real slave number */ + for (i = 1; i < max_port_p_one; i++) { + if (i == port) + continue; + bitmap_zero(exclusive_ports.ports, + dev->caps.num_ports); + set_bit(i - 1, exclusive_ports.ports); + slaves_pport_actv = + mlx4_phys_to_slaves_pport_actv( + dev, &exclusive_ports); + slave_gid += bitmap_weight( + slaves_pport_actv.slaves, + dev->num_vfs + 1); + } + } + *slave_id = slave_gid; + } + + return (found_ix >= 0) ? 0 : -EINVAL; +} +EXPORT_SYMBOL(mlx4_get_slave_from_roce_gid); + +int mlx4_get_roce_gid_from_slave(struct mlx4_dev *dev, int port, int slave_id, + u8 *gid) +{ + struct mlx4_priv *priv = mlx4_priv(dev); + + if (!mlx4_is_master(dev)) + return -EINVAL; + + memcpy(gid, priv->port[port].gid_table.roce_gids[slave_id].raw, + MLX4_ROCE_GID_ENTRY_SIZE); + return 0; +} +EXPORT_SYMBOL(mlx4_get_roce_gid_from_slave); + +/* Cable Module Info */ +#define MODULE_INFO_MAX_READ 48 + +#define I2C_ADDR_LOW 0x50 +#define I2C_ADDR_HIGH 0x51 +#define I2C_PAGE_SIZE 256 + +/* Module Info Data */ +struct mlx4_cable_info { + u8 i2c_addr; + u8 page_num; + __be16 dev_mem_address; + __be16 reserved1; + __be16 size; + __be32 reserved2[2]; + u8 data[MODULE_INFO_MAX_READ]; +}; + +enum cable_info_err { + CABLE_INF_INV_PORT = 0x1, + CABLE_INF_OP_NOSUP = 0x2, + CABLE_INF_NOT_CONN = 0x3, + CABLE_INF_NO_EEPRM = 0x4, + CABLE_INF_PAGE_ERR = 0x5, + CABLE_INF_INV_ADDR = 0x6, + CABLE_INF_I2C_ADDR = 0x7, + CABLE_INF_QSFP_VIO = 0x8, + CABLE_INF_I2C_BUSY = 0x9, +}; + +#define MAD_STATUS_2_CABLE_ERR(mad_status) ((mad_status >> 8) & 0xFF) + +static inline const char *cable_info_mad_err_str(u16 mad_status) +{ + u8 err = MAD_STATUS_2_CABLE_ERR(mad_status); + + switch (err) { + case CABLE_INF_INV_PORT: + return "invalid port selected"; + case CABLE_INF_OP_NOSUP: + return "operation not supported for this port (the port is of type CX4 or internal)"; + case CABLE_INF_NOT_CONN: + return "cable is not connected"; + case CABLE_INF_NO_EEPRM: + return "the connected cable has no EPROM (passive copper cable)"; + case CABLE_INF_PAGE_ERR: + return "page number is greater than 15"; + case CABLE_INF_INV_ADDR: + return "invalid device_address or size (that is, size equals 0 or address+size is greater than 256)"; + case CABLE_INF_I2C_ADDR: + return "invalid I2C slave address"; + case CABLE_INF_QSFP_VIO: + return "at least one cable violates the QSFP specification and ignores the modsel signal"; + case CABLE_INF_I2C_BUSY: + return "I2C bus is constantly busy"; + } + return "Unknown Error"; +} + +/** + * mlx4_get_module_info - Read cable module eeprom data + * @dev: mlx4_dev. + * @port: port number. + * @offset: byte offset in eeprom to start reading data from. + * @size: num of bytes to read. + * @data: output buffer to put the requested data into. + * + * Reads cable module eeprom data, puts the outcome data into + * data pointer paramer. + * Returns num of read bytes on success or a negative error + * code. + */ +int mlx4_get_module_info(struct mlx4_dev *dev, u8 port, + u16 offset, u16 size, u8 *data) +{ + struct mlx4_cmd_mailbox *inbox, *outbox; + struct mlx4_mad_ifc *inmad, *outmad; + struct mlx4_cable_info *cable_info; + u16 i2c_addr; + int ret; + + if (size > MODULE_INFO_MAX_READ) + size = MODULE_INFO_MAX_READ; + + inbox = mlx4_alloc_cmd_mailbox(dev); + if (IS_ERR(inbox)) + return PTR_ERR(inbox); + + outbox = mlx4_alloc_cmd_mailbox(dev); + if (IS_ERR(outbox)) { + mlx4_free_cmd_mailbox(dev, inbox); + return PTR_ERR(outbox); + } + + inmad = (struct mlx4_mad_ifc *)(inbox->buf); + outmad = (struct mlx4_mad_ifc *)(outbox->buf); + + inmad->method = 0x1; /* Get */ + inmad->class_version = 0x1; + inmad->mgmt_class = 0x1; + inmad->base_version = 0x1; + inmad->attr_id = cpu_to_be16(0xFF60); /* Module Info */ + + if (offset < I2C_PAGE_SIZE && offset + size > I2C_PAGE_SIZE) + /* Cross pages reads are not allowed + * read until offset 256 in low page + */ + size -= offset + size - I2C_PAGE_SIZE; + + i2c_addr = I2C_ADDR_LOW; + if (offset >= I2C_PAGE_SIZE) { + /* Reset offset to high page */ + i2c_addr = I2C_ADDR_HIGH; + offset -= I2C_PAGE_SIZE; + } + + cable_info = (struct mlx4_cable_info *)inmad->data; + cable_info->dev_mem_address = cpu_to_be16(offset); + cable_info->page_num = 0; + cable_info->i2c_addr = i2c_addr; + cable_info->size = cpu_to_be16(size); + + ret = mlx4_cmd_box(dev, inbox->dma, outbox->dma, port, 3, + MLX4_CMD_MAD_IFC, MLX4_CMD_TIME_CLASS_C, + MLX4_CMD_NATIVE); + if (ret) + goto out; + + if (be16_to_cpu(outmad->status)) { + /* Mad returned with bad status */ + ret = be16_to_cpu(outmad->status); + mlx4_warn(dev, + "MLX4_CMD_MAD_IFC Get Module info attr(%x) port(%d) i2c_addr(%x) offset(%d) size(%d): Response Mad Status(%x) - %s\n", + 0xFF60, port, i2c_addr, offset, size, + ret, cable_info_mad_err_str(ret)); + + if (i2c_addr == I2C_ADDR_HIGH && + MAD_STATUS_2_CABLE_ERR(ret) == CABLE_INF_I2C_ADDR) + /* Some SFP cables do not support i2c slave + * address 0x51 (high page), abort silently. + */ + ret = 0; + else + ret = -ret; + goto out; + } + cable_info = (struct mlx4_cable_info *)outmad->data; + memcpy(data, cable_info->data, size); + ret = size; +out: + mlx4_free_cmd_mailbox(dev, inbox); + mlx4_free_cmd_mailbox(dev, outbox); + return ret; +} +EXPORT_SYMBOL(mlx4_get_module_info); --- linux-3.13.0.orig/drivers/net/ethernet/mellanox/mlx4/qp.c +++ linux-3.13.0/drivers/net/ethernet/mellanox/mlx4/qp.c @@ -250,7 +250,7 @@ if (mlx4_is_qp_reserved(dev, (u32) base_qpn)) return; - mlx4_bitmap_free_range(&qp_table->bitmap, base_qpn, cnt); + mlx4_bitmap_free_range(&qp_table->bitmap, base_qpn, cnt, MLX4_USE_RR); } void mlx4_qp_release_range(struct mlx4_dev *dev, int base_qpn, int cnt) @@ -390,6 +390,41 @@ EXPORT_SYMBOL_GPL(mlx4_qp_alloc); +#define MLX4_UPDATE_QP_SUPPORTED_ATTRS MLX4_UPDATE_QP_SMAC +int mlx4_update_qp(struct mlx4_dev *dev, struct mlx4_qp *qp, + enum mlx4_update_qp_attr attr, + struct mlx4_update_qp_params *params) +{ + struct mlx4_cmd_mailbox *mailbox; + struct mlx4_update_qp_context *cmd; + u64 pri_addr_path_mask = 0; + int err = 0; + + mailbox = mlx4_alloc_cmd_mailbox(dev); + if (IS_ERR(mailbox)) + return PTR_ERR(mailbox); + + cmd = (struct mlx4_update_qp_context *)mailbox->buf; + + if (!attr || (attr & ~MLX4_UPDATE_QP_SUPPORTED_ATTRS)) + return -EINVAL; + + if (attr & MLX4_UPDATE_QP_SMAC) { + pri_addr_path_mask |= 1ULL << MLX4_UPD_QP_PATH_MASK_MAC_INDEX; + cmd->qp_context.pri_path.grh_mylmc = params->smac_index; + } + + cmd->primary_addr_path_mask = cpu_to_be64(pri_addr_path_mask); + + err = mlx4_cmd(dev, mailbox->dma, qp->qpn & 0xffffff, 0, + MLX4_CMD_UPDATE_QP, MLX4_CMD_TIME_CLASS_A, + MLX4_CMD_NATIVE); + + mlx4_free_cmd_mailbox(dev, mailbox); + return err; +} +EXPORT_SYMBOL_GPL(mlx4_update_qp); + void mlx4_qp_remove(struct mlx4_dev *dev, struct mlx4_qp *qp) { struct mlx4_qp_table *qp_table = &mlx4_priv(dev)->qp_table; --- linux-3.13.0.orig/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c +++ linux-3.13.0/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c @@ -52,6 +52,8 @@ struct mac_res { struct list_head list; u64 mac; + int ref_count; + u8 smac_index; u8 port; }; @@ -219,6 +221,11 @@ int qpn; }; +static int mlx4_is_eth(struct mlx4_dev *dev, int port) +{ + return dev->caps.port_mask[port] == MLX4_PORT_TYPE_IB ? 0 : 1; +} + static void *res_tracker_lookup(struct rb_root *root, u64 res_id) { struct rb_node *node = root->rb_node; @@ -461,6 +468,8 @@ spin_lock_init(&res_alloc->alloc_lock); for (t = 0; t < dev->num_vfs + 1; t++) { + struct mlx4_active_ports actv_ports = + mlx4_get_active_ports(dev, t); switch (i) { case RES_QP: initialize_res_quotas(dev, res_alloc, RES_QP, @@ -490,10 +499,27 @@ break; case RES_MAC: if (t == mlx4_master_func_num(dev)) { - res_alloc->quota[t] = MLX4_MAX_MAC_NUM; + int max_vfs_pport = 0; + /* Calculate the max vfs per port for */ + /* both ports. */ + for (j = 0; j < dev->caps.num_ports; + j++) { + struct mlx4_slaves_pport slaves_pport = + mlx4_phys_to_slaves_pport(dev, j + 1); + unsigned current_slaves = + bitmap_weight(slaves_pport.slaves, + dev->caps.num_ports) - 1; + if (max_vfs_pport < current_slaves) + max_vfs_pport = + current_slaves; + } + res_alloc->quota[t] = + MLX4_MAX_MAC_NUM - + 2 * max_vfs_pport; res_alloc->guaranteed[t] = 2; for (j = 0; j < MLX4_MAX_PORTS; j++) - res_alloc->res_port_free[j] = MLX4_MAX_MAC_NUM; + res_alloc->res_port_free[j] = + MLX4_MAX_MAC_NUM; } else { res_alloc->quota[t] = MLX4_MAX_MAC_NUM; res_alloc->guaranteed[t] = 2; @@ -521,9 +547,10 @@ break; } if (i == RES_MAC || i == RES_VLAN) { - for (j = 0; j < MLX4_MAX_PORTS; j++) - res_alloc->res_port_rsvd[j] += - res_alloc->guaranteed[t]; + for (j = 0; j < dev->caps.num_ports; j++) + if (test_bit(j, actv_ports.ports)) + res_alloc->res_port_rsvd[j] += + res_alloc->guaranteed[t]; } else { res_alloc->res_reserved += res_alloc->guaranteed[t]; } @@ -559,6 +586,7 @@ } /* free master's vlans */ i = dev->caps.function; + mlx4_reset_roce_gids(dev, i); mutex_lock(&priv->mfunc.master.res_tracker.slave_list[i].mutex); rem_slave_vlans(dev, i); mutex_unlock(&priv->mfunc.master.res_tracker.slave_list[i].mutex); @@ -600,15 +628,37 @@ struct mlx4_qp_context *qp_ctx = inbox->buf + 8; enum mlx4_qp_optpar optpar = be32_to_cpu(*(__be32 *) inbox->buf); u32 ts = (be32_to_cpu(qp_ctx->flags) >> 16) & 0xff; + int port; - if (MLX4_QP_ST_UD == ts) - qp_ctx->pri_path.mgid_index = 0x80 | slave; + if (MLX4_QP_ST_UD == ts) { + port = (qp_ctx->pri_path.sched_queue >> 6 & 1) + 1; + if (mlx4_is_eth(dev, port)) + qp_ctx->pri_path.mgid_index = + mlx4_get_base_gid_ix(dev, slave, port) | 0x80; + else + qp_ctx->pri_path.mgid_index = slave | 0x80; - if (MLX4_QP_ST_RC == ts || MLX4_QP_ST_UC == ts) { - if (optpar & MLX4_QP_OPTPAR_PRIMARY_ADDR_PATH) - qp_ctx->pri_path.mgid_index = slave & 0x7F; - if (optpar & MLX4_QP_OPTPAR_ALT_ADDR_PATH) - qp_ctx->alt_path.mgid_index = slave & 0x7F; + } else if (MLX4_QP_ST_RC == ts || MLX4_QP_ST_XRC == ts || MLX4_QP_ST_UC == ts) { + if (optpar & MLX4_QP_OPTPAR_PRIMARY_ADDR_PATH) { + port = (qp_ctx->pri_path.sched_queue >> 6 & 1) + 1; + if (mlx4_is_eth(dev, port)) { + qp_ctx->pri_path.mgid_index += + mlx4_get_base_gid_ix(dev, slave, port); + qp_ctx->pri_path.mgid_index &= 0x7f; + } else { + qp_ctx->pri_path.mgid_index = slave & 0x7F; + } + } + if (optpar & MLX4_QP_OPTPAR_ALT_ADDR_PATH) { + port = (qp_ctx->alt_path.sched_queue >> 6 & 1) + 1; + if (mlx4_is_eth(dev, port)) { + qp_ctx->alt_path.mgid_index += + mlx4_get_base_gid_ix(dev, slave, port); + qp_ctx->alt_path.mgid_index &= 0x7f; + } else { + qp_ctx->alt_path.mgid_index = slave & 0x7F; + } + } } } @@ -619,7 +669,6 @@ struct mlx4_qp_context *qpc = inbox->buf + 8; struct mlx4_vport_oper_state *vp_oper; struct mlx4_priv *priv; - u32 qp_type; int port; port = (qpc->pri_path.sched_queue & 0x40) ? 2 : 1; @@ -627,12 +676,6 @@ vp_oper = &priv->mfunc.master.vf_oper[slave].vport[port]; if (MLX4_VGT != vp_oper->state.default_vlan) { - qp_type = (be32_to_cpu(qpc->flags) >> 16) & 0xff; - if (MLX4_QP_ST_RC == qp_type || - (MLX4_QP_ST_UD == qp_type && - !mlx4_is_qp_reserved(dev, qpn))) - return -EINVAL; - /* the reserved QPs (special, proxy, tunnel) * do not operate over vlans */ @@ -1340,43 +1383,29 @@ spin_lock_irq(mlx4_tlock(dev)); r = res_tracker_lookup(&tracker->res_tree[RES_CQ], cqn); - if (!r) + if (!r) { err = -ENOENT; - else if (r->com.owner != slave) + } else if (r->com.owner != slave) { err = -EPERM; - else { - switch (state) { - case RES_CQ_BUSY: - err = -EBUSY; - break; - - case RES_CQ_ALLOCATED: - if (r->com.state != RES_CQ_HW) - err = -EINVAL; - else if (atomic_read(&r->ref_count)) - err = -EBUSY; - else - err = 0; - break; - - case RES_CQ_HW: - if (r->com.state != RES_CQ_ALLOCATED) - err = -EINVAL; - else - err = 0; - break; - - default: + } else if (state == RES_CQ_ALLOCATED) { + if (r->com.state != RES_CQ_HW) err = -EINVAL; - } + else if (atomic_read(&r->ref_count)) + err = -EBUSY; + else + err = 0; + } else if (state != RES_CQ_HW || r->com.state != RES_CQ_ALLOCATED) { + err = -EINVAL; + } else { + err = 0; + } - if (!err) { - r->com.from_state = r->com.state; - r->com.to_state = state; - r->com.state = RES_CQ_BUSY; - if (cq) - *cq = r; - } + if (!err) { + r->com.from_state = r->com.state; + r->com.to_state = state; + r->com.state = RES_CQ_BUSY; + if (cq) + *cq = r; } spin_unlock_irq(mlx4_tlock(dev)); @@ -1385,7 +1414,7 @@ } static int srq_res_start_move_to(struct mlx4_dev *dev, int slave, int index, - enum res_cq_states state, struct res_srq **srq) + enum res_srq_states state, struct res_srq **srq) { struct mlx4_priv *priv = mlx4_priv(dev); struct mlx4_resource_tracker *tracker = &priv->mfunc.master.res_tracker; @@ -1394,39 +1423,25 @@ spin_lock_irq(mlx4_tlock(dev)); r = res_tracker_lookup(&tracker->res_tree[RES_SRQ], index); - if (!r) + if (!r) { err = -ENOENT; - else if (r->com.owner != slave) + } else if (r->com.owner != slave) { err = -EPERM; - else { - switch (state) { - case RES_SRQ_BUSY: - err = -EINVAL; - break; - - case RES_SRQ_ALLOCATED: - if (r->com.state != RES_SRQ_HW) - err = -EINVAL; - else if (atomic_read(&r->ref_count)) - err = -EBUSY; - break; - - case RES_SRQ_HW: - if (r->com.state != RES_SRQ_ALLOCATED) - err = -EINVAL; - break; - - default: + } else if (state == RES_SRQ_ALLOCATED) { + if (r->com.state != RES_SRQ_HW) err = -EINVAL; - } + else if (atomic_read(&r->ref_count)) + err = -EBUSY; + } else if (state != RES_SRQ_HW || r->com.state != RES_SRQ_ALLOCATED) { + err = -EINVAL; + } - if (!err) { - r->com.from_state = r->com.state; - r->com.to_state = state; - r->com.state = RES_SRQ_BUSY; - if (srq) - *srq = r; - } + if (!err) { + r->com.from_state = r->com.state; + r->com.to_state = state; + r->com.state = RES_SRQ_BUSY; + if (srq) + *srq = r; } spin_unlock_irq(mlx4_tlock(dev)); @@ -1484,7 +1499,7 @@ switch (op) { case RES_OP_RESERVE: - count = get_param_l(&in_param); + count = get_param_l(&in_param) & 0xffffff; align = get_param_h(&in_param); err = mlx4_grant_resource(dev, slave, RES_QP, count, 0); if (err) @@ -1687,11 +1702,39 @@ return err; } -static int mac_add_to_slave(struct mlx4_dev *dev, int slave, u64 mac, int port) +static int mac_find_smac_ix_in_slave(struct mlx4_dev *dev, int slave, int port, + u8 smac_index, u64 *mac) { struct mlx4_priv *priv = mlx4_priv(dev); struct mlx4_resource_tracker *tracker = &priv->mfunc.master.res_tracker; - struct mac_res *res; + struct list_head *mac_list = + &tracker->slave_list[slave].res_list[RES_MAC]; + struct mac_res *res, *tmp; + + list_for_each_entry_safe(res, tmp, mac_list, list) { + if (res->smac_index == smac_index && res->port == (u8) port) { + *mac = res->mac; + return 0; + } + } + return -ENOENT; +} + +static int mac_add_to_slave(struct mlx4_dev *dev, int slave, u64 mac, int port, u8 smac_index) +{ + struct mlx4_priv *priv = mlx4_priv(dev); + struct mlx4_resource_tracker *tracker = &priv->mfunc.master.res_tracker; + struct list_head *mac_list = + &tracker->slave_list[slave].res_list[RES_MAC]; + struct mac_res *res, *tmp; + + list_for_each_entry_safe(res, tmp, mac_list, list) { + if (res->mac == mac && res->port == (u8) port) { + /* mac found. update ref count */ + ++res->ref_count; + return 0; + } + } if (mlx4_grant_resource(dev, slave, RES_MAC, 1, port)) return -EINVAL; @@ -1702,6 +1745,8 @@ } res->mac = mac; res->port = (u8) port; + res->smac_index = smac_index; + res->ref_count = 1; list_add_tail(&res->list, &tracker->slave_list[slave].res_list[RES_MAC]); return 0; @@ -1718,9 +1763,11 @@ list_for_each_entry_safe(res, tmp, mac_list, list) { if (res->mac == mac && res->port == (u8) port) { - list_del(&res->list); - mlx4_release_resource(dev, slave, RES_MAC, 1, port); - kfree(res); + if (!--res->ref_count) { + list_del(&res->list); + mlx4_release_resource(dev, slave, RES_MAC, 1, port); + kfree(res); + } break; } } @@ -1733,10 +1780,13 @@ struct list_head *mac_list = &tracker->slave_list[slave].res_list[RES_MAC]; struct mac_res *res, *tmp; + int i; list_for_each_entry_safe(res, tmp, mac_list, list) { list_del(&res->list); - __mlx4_unregister_mac(dev, res->port, res->mac); + /* dereference the mac the num times the slave referenced it */ + for (i = 0; i < res->ref_count; i++) + __mlx4_unregister_mac(dev, res->port, res->mac); mlx4_release_resource(dev, slave, RES_MAC, 1, res->port); kfree(res); } @@ -1748,21 +1798,28 @@ int err = -EINVAL; int port; u64 mac; + u8 smac_index; if (op != RES_OP_RESERVE_AND_MAP) return err; port = !in_port ? get_param_l(out_param) : in_port; + port = mlx4_slave_convert_port( + dev, slave, port); + + if (port < 0) + return -EINVAL; mac = in_param; err = __mlx4_register_mac(dev, port, mac); if (err >= 0) { + smac_index = err; set_param_l(out_param, err); err = 0; } if (!err) { - err = mac_add_to_slave(dev, slave, mac, port); + err = mac_add_to_slave(dev, slave, mac, port, smac_index); if (err) __mlx4_unregister_mac(dev, port, mac); } @@ -1859,6 +1916,11 @@ if (!port || op != RES_OP_RESERVE_AND_MAP) return -EINVAL; + port = mlx4_slave_convert_port( + dev, slave, port); + + if (port < 0) + return -EINVAL; /* upstream kernels had NOP for reg/unreg vlan. Continue this. */ if (!in_port && port > 0 && port <= dev->caps.num_ports) { slave_state[slave].old_vlan_api = true; @@ -2156,6 +2218,11 @@ switch (op) { case RES_OP_RESERVE_AND_MAP: port = !in_port ? get_param_l(out_param) : in_port; + port = mlx4_slave_convert_port( + dev, slave, port); + + if (port < 0) + return -EINVAL; mac_del_from_slave(dev, slave, in_param, port); __mlx4_unregister_mac(dev, port, in_param); break; @@ -2175,6 +2242,11 @@ struct mlx4_slave_state *slave_state = priv->mfunc.master.slave_state; int err = 0; + port = mlx4_slave_convert_port( + dev, slave, port); + + if (port < 0) + return -EINVAL; switch (op) { case RES_OP_RESERVE_AND_MAP: if (slave_state[slave].old_vlan_api) @@ -2762,6 +2834,8 @@ u32 qp_type; struct mlx4_qp_context *qp_ctx; enum mlx4_qp_optpar optpar; + int port; + int num_gids; qp_ctx = inbox->buf + 8; qp_type = (be32_to_cpu(qp_ctx->flags) >> 16) & 0xff; @@ -2769,6 +2843,7 @@ switch (qp_type) { case MLX4_QP_ST_RC: + case MLX4_QP_ST_XRC: case MLX4_QP_ST_UC: switch (transition) { case QP_TRANS_INIT2RTR: @@ -2777,13 +2852,24 @@ case QP_TRANS_SQD2SQD: case QP_TRANS_SQD2RTS: if (slave != mlx4_master_func_num(dev)) - /* slaves have only gid index 0 */ - if (optpar & MLX4_QP_OPTPAR_PRIMARY_ADDR_PATH) - if (qp_ctx->pri_path.mgid_index) + 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) + num_gids = mlx4_get_slave_num_gids(dev, slave, port); + else + num_gids = 1; + if (qp_ctx->pri_path.mgid_index >= num_gids) return -EINVAL; - if (optpar & MLX4_QP_OPTPAR_ALT_ADDR_PATH) - if (qp_ctx->alt_path.mgid_index) + } + if (optpar & MLX4_QP_OPTPAR_ALT_ADDR_PATH) { + port = (qp_ctx->alt_path.sched_queue >> 6 & 1) + 1; + if (dev->caps.port_mask[port] != MLX4_PORT_TYPE_IB) + num_gids = mlx4_get_slave_num_gids(dev, slave, port); + else + num_gids = 1; + if (qp_ctx->alt_path.mgid_index >= num_gids) return -EINVAL; + } break; default: break; @@ -3296,6 +3382,58 @@ return mlx4_GEN_QP_wrapper(dev, slave, vhcr, inbox, outbox, cmd); } +static int adjust_qp_sched_queue(struct mlx4_dev *dev, int slave, + struct mlx4_qp_context *qpc, + struct mlx4_cmd_mailbox *inbox) +{ + enum mlx4_qp_optpar optpar = be32_to_cpu(*(__be32 *)inbox->buf); + u8 pri_sched_queue; + int port = mlx4_slave_convert_port( + dev, slave, (qpc->pri_path.sched_queue >> 6 & 1) + 1) - 1; + + if (port < 0) + return -EINVAL; + + pri_sched_queue = (qpc->pri_path.sched_queue & ~(1 << 6)) | + ((port & 1) << 6); + + if (optpar & MLX4_QP_OPTPAR_PRIMARY_ADDR_PATH || + mlx4_is_eth(dev, port + 1)) { + qpc->pri_path.sched_queue = pri_sched_queue; + } + + if (optpar & MLX4_QP_OPTPAR_ALT_ADDR_PATH) { + port = mlx4_slave_convert_port( + dev, slave, (qpc->alt_path.sched_queue >> 6 & 1) + + 1) - 1; + if (port < 0) + return -EINVAL; + qpc->alt_path.sched_queue = + (qpc->alt_path.sched_queue & ~(1 << 6)) | + (port & 1) << 6; + } + return 0; +} + +static int roce_verify_mac(struct mlx4_dev *dev, int slave, + struct mlx4_qp_context *qpc, + struct mlx4_cmd_mailbox *inbox) +{ + u64 mac; + int port; + u32 ts = (be32_to_cpu(qpc->flags) >> 16) & 0xff; + u8 sched = *(u8 *)(inbox->buf + 64); + u8 smac_ix; + + port = (sched >> 6 & 1) + 1; + if (mlx4_is_eth(dev, port) && (ts != MLX4_QP_ST_MLX)) { + smac_ix = qpc->pri_path.grh_mylmc & 0x7f; + if (mac_find_smac_ix_in_slave(dev, slave, port, smac_ix, &mac)) + return -ENOENT; + } + return 0; +} + int mlx4_INIT2RTR_QP_wrapper(struct mlx4_dev *dev, int slave, struct mlx4_vhcr *vhcr, struct mlx4_cmd_mailbox *inbox, @@ -3314,10 +3452,16 @@ u8 orig_vlan_index = qpc->pri_path.vlan_index; u8 orig_feup = qpc->pri_path.feup; + err = adjust_qp_sched_queue(dev, slave, qpc, inbox); + if (err) + return err; err = verify_qp_parameters(dev, inbox, QP_TRANS_INIT2RTR, slave); if (err) return err; + if (roce_verify_mac(dev, slave, qpc, inbox)) + return -EINVAL; + update_pkey_index(dev, slave, inbox); update_gid(dev, inbox, (u8)slave); adjust_proxy_tun_qkey(dev, vhcr, qpc); @@ -3362,6 +3506,9 @@ int err; struct mlx4_qp_context *context = inbox->buf + 8; + err = adjust_qp_sched_queue(dev, slave, context, inbox); + if (err) + return err; err = verify_qp_parameters(dev, inbox, QP_TRANS_RTR2RTS, slave); if (err) return err; @@ -3381,6 +3528,9 @@ int err; struct mlx4_qp_context *context = inbox->buf + 8; + err = adjust_qp_sched_queue(dev, slave, context, inbox); + if (err) + return err; err = verify_qp_parameters(dev, inbox, QP_TRANS_RTS2RTS, slave); if (err) return err; @@ -3399,6 +3549,9 @@ struct mlx4_cmd_info *cmd) { struct mlx4_qp_context *context = inbox->buf + 8; + int err = adjust_qp_sched_queue(dev, slave, context, inbox); + if (err) + return err; adjust_proxy_tun_qkey(dev, vhcr, context); return mlx4_GEN_QP_wrapper(dev, slave, vhcr, inbox, outbox, cmd); } @@ -3412,6 +3565,9 @@ int err; struct mlx4_qp_context *context = inbox->buf + 8; + err = adjust_qp_sched_queue(dev, slave, context, inbox); + if (err) + return err; err = verify_qp_parameters(dev, inbox, QP_TRANS_SQD2SQD, slave); if (err) return err; @@ -3431,6 +3587,9 @@ int err; struct mlx4_qp_context *context = inbox->buf + 8; + err = adjust_qp_sched_queue(dev, slave, context, inbox); + if (err) + return err; err = verify_qp_parameters(dev, inbox, QP_TRANS_SQD2RTS, slave); if (err) return err; @@ -3534,16 +3693,26 @@ return err; } -static int qp_attach(struct mlx4_dev *dev, struct mlx4_qp *qp, u8 gid[16], - int block_loopback, enum mlx4_protocol prot, +static int qp_attach(struct mlx4_dev *dev, int slave, struct mlx4_qp *qp, + u8 gid[16], int block_loopback, enum mlx4_protocol prot, enum mlx4_steer_type type, u64 *reg_id) { switch (dev->caps.steering_mode) { - case MLX4_STEERING_MODE_DEVICE_MANAGED: - return mlx4_trans_to_dmfs_attach(dev, qp, gid, gid[5], + case MLX4_STEERING_MODE_DEVICE_MANAGED: { + int port = mlx4_slave_convert_port(dev, slave, gid[5]); + if (port < 0) + return port; + return mlx4_trans_to_dmfs_attach(dev, qp, gid, port, block_loopback, prot, reg_id); + } case MLX4_STEERING_MODE_B0: + if (prot == MLX4_PROT_ETH) { + int port = mlx4_slave_convert_port(dev, slave, gid[5]); + if (port < 0) + return port; + gid[5] = port; + } return mlx4_qp_attach_common(dev, qp, gid, block_loopback, prot, type); default: @@ -3551,9 +3720,9 @@ } } -static int qp_detach(struct mlx4_dev *dev, struct mlx4_qp *qp, u8 gid[16], - enum mlx4_protocol prot, enum mlx4_steer_type type, - u64 reg_id) +static int qp_detach(struct mlx4_dev *dev, struct mlx4_qp *qp, + u8 gid[16], enum mlx4_protocol prot, + enum mlx4_steer_type type, u64 reg_id) { switch (dev->caps.steering_mode) { case MLX4_STEERING_MODE_DEVICE_MANAGED: @@ -3565,6 +3734,25 @@ } } +static int mlx4_adjust_port(struct mlx4_dev *dev, int slave, + u8 *gid, enum mlx4_protocol prot) +{ + int real_port; + + if (prot != MLX4_PROT_ETH) + return 0; + + if (dev->caps.steering_mode == MLX4_STEERING_MODE_B0 || + dev->caps.steering_mode == MLX4_STEERING_MODE_DEVICE_MANAGED) { + real_port = mlx4_slave_convert_port(dev, slave, gid[5]); + if (real_port < 0) + return -EINVAL; + gid[5] = real_port; + } + + return 0; +} + int mlx4_QP_ATTACH_wrapper(struct mlx4_dev *dev, int slave, struct mlx4_vhcr *vhcr, struct mlx4_cmd_mailbox *inbox, @@ -3590,7 +3778,7 @@ qp.qpn = qpn; if (attach) { - err = qp_attach(dev, &qp, gid, block_loopback, prot, + err = qp_attach(dev, slave, &qp, gid, block_loopback, prot, type, ®_id); if (err) { pr_err("Fail to attach rule to qp 0x%x\n", qpn); @@ -3600,6 +3788,10 @@ if (err) goto ex_detach; } else { + err = mlx4_adjust_port(dev, slave, gid, prot); + if (err) + goto ex_put; + err = rem_mcg_res(dev, slave, rqp, gid, prot, type, ®_id); if (err) goto ex_put; @@ -3634,7 +3826,7 @@ !is_broadcast_ether_addr(eth_header->eth.dst_mac)) { list_for_each_entry_safe(res, tmp, rlist, list) { be_mac = cpu_to_be64(res->mac << 16); - if (!memcmp(&be_mac, eth_header->eth.dst_mac, ETH_ALEN)) + if (ether_addr_equal((u8 *)&be_mac, eth_header->eth.dst_mac)) return 0; } pr_err("MAC %pM doesn't belong to VF %d, Steering rule rejected\n", @@ -3704,6 +3896,60 @@ } +#define MLX4_UPD_QP_PATH_MASK_SUPPORTED (1ULL << MLX4_UPD_QP_PATH_MASK_MAC_INDEX) +int mlx4_UPDATE_QP_wrapper(struct mlx4_dev *dev, int slave, + struct mlx4_vhcr *vhcr, + struct mlx4_cmd_mailbox *inbox, + struct mlx4_cmd_mailbox *outbox, + struct mlx4_cmd_info *cmd_info) +{ + int err; + u32 qpn = vhcr->in_modifier & 0xffffff; + struct res_qp *rqp; + u64 mac; + unsigned port; + u64 pri_addr_path_mask; + struct mlx4_update_qp_context *cmd; + int smac_index; + + cmd = (struct mlx4_update_qp_context *)inbox->buf; + + pri_addr_path_mask = be64_to_cpu(cmd->primary_addr_path_mask); + if (cmd->qp_mask || cmd->secondary_addr_path_mask || + (pri_addr_path_mask & ~MLX4_UPD_QP_PATH_MASK_SUPPORTED)) + return -EPERM; + + /* Just change the smac for the QP */ + err = get_res(dev, slave, qpn, RES_QP, &rqp); + if (err) { + mlx4_err(dev, "Updating qpn 0x%x for slave %d rejected\n", qpn, slave); + return err; + } + + port = (rqp->sched_queue >> 6 & 1) + 1; + smac_index = cmd->qp_context.pri_path.grh_mylmc; + err = mac_find_smac_ix_in_slave(dev, slave, port, + smac_index, &mac); + if (err) { + mlx4_err(dev, "Failed to update qpn 0x%x, MAC is invalid. smac_ix: %d\n", + qpn, smac_index); + goto err_mac; + } + + err = mlx4_cmd(dev, inbox->dma, + vhcr->in_modifier, 0, + MLX4_CMD_UPDATE_QP, MLX4_CMD_TIME_CLASS_A, + MLX4_CMD_NATIVE); + if (err) { + mlx4_err(dev, "Failed to update qpn on qpn 0x%x, command failed\n", qpn); + goto err_mac; + } + +err_mac: + put_res(dev, slave, qpn, RES_QP); + return err; +} + int mlx4_QP_FLOW_STEERING_ATTACH_wrapper(struct mlx4_dev *dev, int slave, struct mlx4_vhcr *vhcr, struct mlx4_cmd_mailbox *inbox, @@ -3726,6 +3972,9 @@ return -EOPNOTSUPP; ctrl = (struct mlx4_net_trans_rule_hw_ctrl *)inbox->buf; + ctrl->port = mlx4_slave_convert_port(dev, slave, ctrl->port); + if (ctrl->port <= 0) + return -EINVAL; qpn = be32_to_cpu(ctrl->qpn) & 0xffffff; err = get_res(dev, slave, qpn, RES_QP, &rqp); if (err) { @@ -4433,7 +4682,7 @@ void mlx4_delete_all_resources_for_slave(struct mlx4_dev *dev, int slave) { struct mlx4_priv *priv = mlx4_priv(dev); - + mlx4_reset_roce_gids(dev, slave); mutex_lock(&priv->mfunc.master.res_tracker.slave_list[slave].mutex); rem_slave_vlans(dev, slave); rem_slave_macs(dev, slave); --- linux-3.13.0.orig/drivers/net/ethernet/mellanox/mlx4/srq.c +++ linux-3.13.0/drivers/net/ethernet/mellanox/mlx4/srq.c @@ -117,7 +117,7 @@ mlx4_table_put(dev, &srq_table->table, *srqn); err_out: - mlx4_bitmap_free(&srq_table->bitmap, *srqn); + mlx4_bitmap_free(&srq_table->bitmap, *srqn, MLX4_NO_RR); return err; } @@ -145,7 +145,7 @@ mlx4_table_put(dev, &srq_table->cmpt_table, srqn); mlx4_table_put(dev, &srq_table->table, srqn); - mlx4_bitmap_free(&srq_table->bitmap, srqn); + mlx4_bitmap_free(&srq_table->bitmap, srqn, MLX4_NO_RR); } static void mlx4_srq_free_icm(struct mlx4_dev *dev, int srqn) --- linux-3.13.0.orig/drivers/net/ethernet/mellanox/mlx5/core/Kconfig +++ linux-3.13.0/drivers/net/ethernet/mellanox/mlx5/core/Kconfig @@ -4,5 +4,5 @@ config MLX5_CORE tristate - depends on PCI && X86 + depends on PCI default n --- linux-3.13.0.orig/drivers/net/ethernet/mellanox/mlx5/core/cq.c +++ linux-3.13.0/drivers/net/ethernet/mellanox/mlx5/core/cq.c @@ -201,10 +201,23 @@ int mlx5_core_modify_cq(struct mlx5_core_dev *dev, struct mlx5_core_cq *cq, - int type, struct mlx5_cq_modify_params *params) + struct mlx5_modify_cq_mbox_in *in, int in_sz) { - return -ENOSYS; + struct mlx5_modify_cq_mbox_out out; + int err; + + memset(&out, 0, sizeof(out)); + in->hdr.opcode = cpu_to_be16(MLX5_CMD_OP_MODIFY_CQ); + err = mlx5_cmd_exec(dev, in, in_sz, &out, sizeof(out)); + if (err) + return err; + + if (out.hdr.status) + return mlx5_cmd_status_to_err(&out.hdr); + + return 0; } +EXPORT_SYMBOL(mlx5_core_modify_cq); int mlx5_init_cq_table(struct mlx5_core_dev *dev) { --- linux-3.13.0.orig/drivers/net/ethernet/mellanox/mlx5/core/debugfs.c +++ linux-3.13.0/drivers/net/ethernet/mellanox/mlx5/core/debugfs.c @@ -275,7 +275,7 @@ } static u64 qp_read_field(struct mlx5_core_dev *dev, struct mlx5_core_qp *qp, - int index) + int index, int *is_str) { struct mlx5_query_qp_mbox_out *out; struct mlx5_qp_context *ctx; @@ -293,19 +293,40 @@ goto out; } + *is_str = 0; ctx = &out->ctx; switch (index) { case QP_PID: param = qp->pid; break; case QP_STATE: - param = be32_to_cpu(ctx->flags) >> 28; + param = (u64)mlx5_qp_state_str(be32_to_cpu(ctx->flags) >> 28); + *is_str = 1; break; case QP_XPORT: - param = (be32_to_cpu(ctx->flags) >> 16) & 0xff; + param = (u64)mlx5_qp_type_str((be32_to_cpu(ctx->flags) >> 16) & 0xff); + *is_str = 1; break; case QP_MTU: - param = ctx->mtu_msgmax >> 5; + switch (ctx->mtu_msgmax >> 5) { + case IB_MTU_256: + param = 256; + break; + case IB_MTU_512: + param = 512; + break; + case IB_MTU_1024: + param = 1024; + break; + case IB_MTU_2048: + param = 2048; + break; + case IB_MTU_4096: + param = 4096; + break; + default: + param = 0; + } break; case QP_N_RECV: param = 1 << ((ctx->rq_size_stride >> 3) & 0xf); @@ -414,6 +435,7 @@ struct mlx5_field_desc *desc; struct mlx5_rsc_debug *d; char tbuf[18]; + int is_str = 0; u64 field; int ret; @@ -424,7 +446,7 @@ d = (void *)(desc - desc->i) - sizeof(*d); switch (d->type) { case MLX5_DBG_RSC_QP: - field = qp_read_field(d->dev, d->object, desc->i); + field = qp_read_field(d->dev, d->object, desc->i, &is_str); break; case MLX5_DBG_RSC_EQ: @@ -440,7 +462,12 @@ return -EINVAL; } - ret = snprintf(tbuf, sizeof(tbuf), "0x%llx\n", field); + + if (is_str) + ret = snprintf(tbuf, sizeof(tbuf), "%s\n", (const char *)field); + else + ret = snprintf(tbuf, sizeof(tbuf), "0x%llx\n", field); + if (ret > 0) { if (copy_to_user(buf, tbuf, ret)) return -EFAULT; --- linux-3.13.0.orig/drivers/net/ethernet/mellanox/mlx5/core/main.c +++ linux-3.13.0/drivers/net/ethernet/mellanox/mlx5/core/main.c @@ -46,8 +46,8 @@ #include "mlx5_core.h" #define DRIVER_NAME "mlx5_core" -#define DRIVER_VERSION "1.0" -#define DRIVER_RELDATE "June 2013" +#define DRIVER_VERSION "2.2-1" +#define DRIVER_RELDATE "Feb 2014" MODULE_AUTHOR("Eli Cohen "); MODULE_DESCRIPTION("Mellanox ConnectX-IB HCA core library"); @@ -460,7 +460,10 @@ err_stop_poll: mlx5_stop_health_poll(dev); - mlx5_cmd_teardown_hca(dev); + if (mlx5_cmd_teardown_hca(dev)) { + dev_err(&dev->pdev->dev, "tear_down_hca failed, skip cleanup\n"); + return err; + } err_pagealloc_stop: mlx5_pagealloc_stop(dev); @@ -503,7 +506,10 @@ mlx5_eq_cleanup(dev); mlx5_disable_msix(dev); mlx5_stop_health_poll(dev); - mlx5_cmd_teardown_hca(dev); + if (mlx5_cmd_teardown_hca(dev)) { + dev_err(&dev->pdev->dev, "tear_down_hca failed, skip cleanup\n"); + return; + } mlx5_pagealloc_stop(dev); mlx5_reclaim_startup_pages(dev); mlx5_core_disable_hca(dev); @@ -531,7 +537,6 @@ return 0; - mlx5_health_cleanup(); err_debug: mlx5_unregister_debugfs(); return err; --- linux-3.13.0.orig/drivers/net/ethernet/mellanox/mlx5/core/pagealloc.c +++ linux-3.13.0/drivers/net/ethernet/mellanox/mlx5/core/pagealloc.c @@ -99,7 +99,7 @@ enum { MLX5_MAX_RECLAIM_TIME_MILI = 5000, - MLX5_NUM_4K_IN_PAGE = PAGE_SIZE / 4096, + MLX5_NUM_4K_IN_PAGE = PAGE_SIZE / MLX5_ADAPTER_PAGE_SIZE, }; static int insert_page(struct mlx5_core_dev *dev, u64 addr, struct page *page, u16 func_id) @@ -192,10 +192,8 @@ struct fw_page *fp; unsigned n; - if (list_empty(&dev->priv.free_list)) { + if (list_empty(&dev->priv.free_list)) return -ENOMEM; - mlx5_core_warn(dev, "\n"); - } fp = list_entry(dev->priv.free_list.next, struct fw_page, list); n = find_first_bit(&fp->bitmask, 8 * sizeof(fp->bitmask)); @@ -208,30 +206,33 @@ if (!fp->free_count) list_del(&fp->list); - *addr = fp->addr + n * 4096; + *addr = fp->addr + n * MLX5_ADAPTER_PAGE_SIZE; return 0; } +#define MLX5_U64_4K_PAGE_MASK ((~(u64)0U) << PAGE_SHIFT) + static void free_4k(struct mlx5_core_dev *dev, u64 addr) { struct fw_page *fwp; int n; - fwp = find_fw_page(dev, addr & PAGE_MASK); + fwp = find_fw_page(dev, addr & MLX5_U64_4K_PAGE_MASK); if (!fwp) { mlx5_core_warn(dev, "page not found\n"); return; } - n = (addr & ~PAGE_MASK) % 4096; + n = (addr & ~MLX5_U64_4K_PAGE_MASK) >> MLX5_ADAPTER_PAGE_SHIFT; fwp->free_count++; set_bit(n, &fwp->bitmask); if (fwp->free_count == MLX5_NUM_4K_IN_PAGE) { rb_erase(&fwp->rb_node, &dev->priv.page_root); if (fwp->free_count != 1) list_del(&fwp->list); - dma_unmap_page(&dev->pdev->dev, addr, PAGE_SIZE, DMA_BIDIRECTIONAL); + dma_unmap_page(&dev->pdev->dev, addr & MLX5_U64_4K_PAGE_MASK, + PAGE_SIZE, DMA_BIDIRECTIONAL); __free_page(fwp->page); kfree(fwp); } else if (fwp->free_count == 1) { --- linux-3.13.0.orig/drivers/net/ethernet/mellanox/mlx5/core/port.c +++ linux-3.13.0/drivers/net/ethernet/mellanox/mlx5/core/port.c @@ -57,7 +57,7 @@ in->arg = cpu_to_be32(arg); in->register_id = cpu_to_be16(reg_num); err = mlx5_cmd_exec(dev, in, sizeof(*in) + size_in, out, - sizeof(out) + size_out); + sizeof(*out) + size_out); if (err) goto ex2; --- linux-3.13.0.orig/drivers/net/ethernet/mellanox/mlx5/core/qp.c +++ linux-3.13.0/drivers/net/ethernet/mellanox/mlx5/core/qp.c @@ -74,7 +74,7 @@ struct mlx5_destroy_qp_mbox_out dout; int err; - memset(&dout, 0, sizeof(dout)); + memset(&out, 0, sizeof(out)); in->hdr.opcode = cpu_to_be16(MLX5_CMD_OP_CREATE_QP); err = mlx5_cmd_exec(dev, in, inlen, &out, sizeof(out)); @@ -84,7 +84,8 @@ } if (out.hdr.status) { - pr_warn("current num of QPs 0x%x\n", atomic_read(&dev->num_qps)); + mlx5_core_warn(dev, "current num of QPs 0x%x\n", + atomic_read(&dev->num_qps)); return mlx5_cmd_status_to_err(&out.hdr); } --- linux-3.13.0.orig/drivers/net/ethernet/micrel/ks8842.c +++ linux-3.13.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-3.13.0.orig/drivers/net/ethernet/micrel/ks8851.c +++ linux-3.13.0/drivers/net/ethernet/micrel/ks8851.c @@ -23,6 +23,7 @@ #include #include #include +#include #include @@ -83,6 +84,7 @@ * @rc_rxqcr: Cached copy of KS_RXQCR. * @eeprom_size: Companion eeprom size in Bytes, 0 if no eeprom * @eeprom: 93CX6 EEPROM state for accessing on-board EEPROM. + * @vdd_reg: Optional regulator supplying the chip * * The @lock ensures that the chip is protected when certain operations are * in progress. When the read or write packet transfer is in progress, most @@ -130,6 +132,7 @@ struct spi_transfer spi_xfer2[2]; struct eeprom_93cx6 eeprom; + struct regulator *vdd_reg; }; static int msg_enable; @@ -1414,6 +1417,21 @@ ks->spidev = spi; ks->tx_space = 6144; + ks->vdd_reg = regulator_get_optional(&spi->dev, "vdd"); + if (IS_ERR(ks->vdd_reg)) { + ret = PTR_ERR(ks->vdd_reg); + if (ret == -EPROBE_DEFER) + goto err_reg; + } else { + ret = regulator_enable(ks->vdd_reg); + if (ret) { + dev_err(&spi->dev, "regulator enable fail: %d\n", + ret); + goto err_reg_en; + } + } + + mutex_init(&ks->lock); spin_lock_init(&ks->statelock); @@ -1508,8 +1526,14 @@ err_netdev: free_irq(ndev->irq, ks); -err_id: err_irq: +err_id: + if (!IS_ERR(ks->vdd_reg)) + regulator_disable(ks->vdd_reg); +err_reg_en: + if (!IS_ERR(ks->vdd_reg)) + regulator_put(ks->vdd_reg); +err_reg: free_netdev(ndev); return ret; } @@ -1523,6 +1547,10 @@ unregister_netdev(priv->netdev); free_irq(spi->irq, priv); + if (!IS_ERR(priv->vdd_reg)) { + regulator_disable(priv->vdd_reg); + regulator_put(priv->vdd_reg); + } free_netdev(priv->netdev); return 0; --- linux-3.13.0.orig/drivers/net/ethernet/moxa/moxart_ether.c +++ linux-3.13.0/drivers/net/ethernet/moxa/moxart_ether.c @@ -457,9 +457,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-3.13.0.orig/drivers/net/ethernet/myricom/myri10ge/myri10ge.c +++ linux-3.13.0/drivers/net/ethernet/myricom/myri10ge/myri10ge.c @@ -872,6 +872,10 @@ return -ENOMEM; dmatest_bus = pci_map_page(mgp->pdev, dmatest_page, 0, PAGE_SIZE, DMA_BIDIRECTIONAL); + if (unlikely(pci_dma_mapping_error(mgp->pdev, dmatest_bus))) { + __free_page(dmatest_page); + return -ENOMEM; + } /* Run a small DMA test. * The magic multipliers to the length tell the firmware @@ -1293,6 +1297,7 @@ int bytes, int watchdog) { struct page *page; + dma_addr_t bus; int idx; #if MYRI10GE_ALLOC_SIZE > 4096 int end_offset; @@ -1317,11 +1322,21 @@ rx->watchdog_needed = 1; return; } + + bus = pci_map_page(mgp->pdev, page, 0, + MYRI10GE_ALLOC_SIZE, + PCI_DMA_FROMDEVICE); + if (unlikely(pci_dma_mapping_error(mgp->pdev, bus))) { + __free_pages(page, MYRI10GE_ALLOC_ORDER); + if (rx->fill_cnt - rx->cnt < 16) + rx->watchdog_needed = 1; + return; + } + rx->page = page; rx->page_offset = 0; - rx->bus = pci_map_page(mgp->pdev, page, 0, - MYRI10GE_ALLOC_SIZE, - PCI_DMA_FROMDEVICE); + rx->bus = bus; + } rx->info[idx].page = rx->page; rx->info[idx].page_offset = rx->page_offset; @@ -2765,6 +2780,35 @@ mb(); } +static void myri10ge_unmap_tx_dma(struct myri10ge_priv *mgp, + struct myri10ge_tx_buf *tx, int idx) +{ + unsigned int len; + int last_idx; + + /* Free any DMA resources we've alloced and clear out the skb slot */ + last_idx = (idx + 1) & tx->mask; + idx = tx->req & tx->mask; + do { + len = dma_unmap_len(&tx->info[idx], len); + if (len) { + if (tx->info[idx].skb != NULL) + pci_unmap_single(mgp->pdev, + dma_unmap_addr(&tx->info[idx], + bus), len, + PCI_DMA_TODEVICE); + else + pci_unmap_page(mgp->pdev, + dma_unmap_addr(&tx->info[idx], + bus), len, + PCI_DMA_TODEVICE); + dma_unmap_len_set(&tx->info[idx], len, 0); + tx->info[idx].skb = NULL; + } + idx = (idx + 1) & tx->mask; + } while (idx != last_idx); +} + /* * Transmit a packet. We need to split the packet so that a single * segment does not cross myri10ge->tx_boundary, so this makes segment @@ -2788,7 +2832,7 @@ u32 low; __be32 high_swapped; unsigned int len; - int idx, last_idx, avail, frag_cnt, frag_idx, count, mss, max_segments; + int idx, avail, frag_cnt, frag_idx, count, mss, max_segments; u16 pseudo_hdr_offset, cksum_offset, queue; int cum_len, seglen, boundary, rdma_count; u8 flags, odd_flag; @@ -2885,9 +2929,12 @@ /* map the skb for DMA */ len = skb_headlen(skb); + bus = pci_map_single(mgp->pdev, skb->data, len, PCI_DMA_TODEVICE); + if (unlikely(pci_dma_mapping_error(mgp->pdev, bus))) + goto drop; + idx = tx->req & tx->mask; tx->info[idx].skb = skb; - bus = pci_map_single(mgp->pdev, skb->data, len, PCI_DMA_TODEVICE); dma_unmap_addr_set(&tx->info[idx], bus, bus); dma_unmap_len_set(&tx->info[idx], len, len); @@ -2986,12 +3033,16 @@ break; /* map next fragment for DMA */ - idx = (count + tx->req) & tx->mask; frag = &skb_shinfo(skb)->frags[frag_idx]; frag_idx++; len = skb_frag_size(frag); bus = skb_frag_dma_map(&mgp->pdev->dev, frag, 0, len, DMA_TO_DEVICE); + if (unlikely(pci_dma_mapping_error(mgp->pdev, bus))) { + myri10ge_unmap_tx_dma(mgp, tx, idx); + goto drop; + } + idx = (count + tx->req) & tx->mask; dma_unmap_addr_set(&tx->info[idx], bus, bus); dma_unmap_len_set(&tx->info[idx], len, len); } @@ -3022,31 +3073,8 @@ return NETDEV_TX_OK; abort_linearize: - /* Free any DMA resources we've alloced and clear out the skb - * slot so as to not trip up assertions, and to avoid a - * double-free if linearizing fails */ + myri10ge_unmap_tx_dma(mgp, tx, idx); - last_idx = (idx + 1) & tx->mask; - idx = tx->req & tx->mask; - tx->info[idx].skb = NULL; - do { - len = dma_unmap_len(&tx->info[idx], len); - if (len) { - if (tx->info[idx].skb != NULL) - pci_unmap_single(mgp->pdev, - dma_unmap_addr(&tx->info[idx], - bus), len, - PCI_DMA_TODEVICE); - else - pci_unmap_page(mgp->pdev, - dma_unmap_addr(&tx->info[idx], - bus), len, - PCI_DMA_TODEVICE); - dma_unmap_len_set(&tx->info[idx], len, 0); - tx->info[idx].skb = NULL; - } - idx = (idx + 1) & tx->mask; - } while (idx != last_idx); if (skb_is_gso(skb)) { netdev_err(mgp->dev, "TSO but wanted to linearize?!?!?\n"); goto drop; --- linux-3.13.0.orig/drivers/net/ethernet/neterion/vxge/vxge-main.c +++ linux-3.13.0/drivers/net/ethernet/neterion/vxge/vxge-main.c @@ -3135,12 +3135,12 @@ u64 packets, bytes, multicast; do { - start = u64_stats_fetch_begin_bh(&rxstats->syncp); + start = u64_stats_fetch_begin_irq(&rxstats->syncp); packets = rxstats->rx_frms; multicast = rxstats->rx_mcast; bytes = rxstats->rx_bytes; - } while (u64_stats_fetch_retry_bh(&rxstats->syncp, start)); + } while (u64_stats_fetch_retry_irq(&rxstats->syncp, start)); net_stats->rx_packets += packets; net_stats->rx_bytes += bytes; @@ -3150,11 +3150,11 @@ net_stats->rx_dropped += rxstats->rx_dropped; do { - start = u64_stats_fetch_begin_bh(&txstats->syncp); + start = u64_stats_fetch_begin_irq(&txstats->syncp); packets = txstats->tx_frms; bytes = txstats->tx_bytes; - } while (u64_stats_fetch_retry_bh(&txstats->syncp, start)); + } while (u64_stats_fetch_retry_irq(&txstats->syncp, start)); net_stats->tx_packets += packets; net_stats->tx_bytes += bytes; @@ -4206,6 +4206,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; @@ -4248,9 +4251,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 @@ -4855,3 +4858,5 @@ } module_init(vxge_starter); module_exit(vxge_closer); +MODULE_FIRMWARE(VXGE_PXE_FIRMWARE); +MODULE_FIRMWARE(VXGE_FIRMWARE); --- linux-3.13.0.orig/drivers/net/ethernet/nvidia/forcedeth.c +++ linux-3.13.0/drivers/net/ethernet/nvidia/forcedeth.c @@ -1755,19 +1755,19 @@ /* software stats */ do { - syncp_start = u64_stats_fetch_begin_bh(&np->swstats_rx_syncp); + syncp_start = u64_stats_fetch_begin_irq(&np->swstats_rx_syncp); storage->rx_packets = np->stat_rx_packets; storage->rx_bytes = np->stat_rx_bytes; storage->rx_dropped = np->stat_rx_dropped; storage->rx_missed_errors = np->stat_rx_missed_errors; - } while (u64_stats_fetch_retry_bh(&np->swstats_rx_syncp, syncp_start)); + } while (u64_stats_fetch_retry_irq(&np->swstats_rx_syncp, syncp_start)); do { - syncp_start = u64_stats_fetch_begin_bh(&np->swstats_tx_syncp); + syncp_start = u64_stats_fetch_begin_irq(&np->swstats_tx_syncp); storage->tx_packets = np->stat_tx_packets; storage->tx_bytes = np->stat_tx_bytes; storage->tx_dropped = np->stat_tx_dropped; - } while (u64_stats_fetch_retry_bh(&np->swstats_tx_syncp, syncp_start)); + } while (u64_stats_fetch_retry_irq(&np->swstats_tx_syncp, syncp_start)); /* If the nic supports hw counters then retrieve latest values */ if (np->driver_data & DEV_HAS_STATISTICS_V123) { --- linux-3.13.0.orig/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c +++ linux-3.13.0/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c @@ -2392,7 +2392,10 @@ work_done = netxen_process_rcv_ring(sds_ring, budget); - if ((work_done < budget) && tx_complete) { + if (!tx_complete) + work_done = budget; + + if (work_done < budget) { napi_complete(&sds_ring->napi); if (test_bit(__NX_DEV_UP, &adapter->state)) netxen_nic_enable_int(sds_ring); --- linux-3.13.0.orig/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_vnic.c +++ linux-3.13.0/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_vnic.c @@ -242,7 +242,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-3.13.0.orig/drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.c +++ linux-3.13.0/drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.c @@ -1047,6 +1047,7 @@ struct qlcnic_dcb_cee *peer; int i; + memset(info, 0, sizeof(*info)); *app_count = 0; if (!test_bit(QLCNIC_DCB_STATE, &adapter->dcb->state)) --- linux-3.13.0.orig/drivers/net/ethernet/qlogic/qlge/qlge_main.c +++ linux-3.13.0/drivers/net/ethernet/qlogic/qlge/qlge_main.c @@ -2352,23 +2352,29 @@ { struct ql_adapter *qdev = netdev_priv(ndev); int status = 0; + bool need_restart = netif_running(ndev); - status = ql_adapter_down(qdev); - if (status) { - netif_err(qdev, link, qdev->ndev, - "Failed to bring down the adapter\n"); - return status; + if (need_restart) { + status = ql_adapter_down(qdev); + if (status) { + netif_err(qdev, link, qdev->ndev, + "Failed to bring down the adapter\n"); + return status; + } } /* update the features with resent change */ ndev->features = features; - status = ql_adapter_up(qdev); - if (status) { - netif_err(qdev, link, qdev->ndev, - "Failed to bring up the adapter\n"); - return status; + if (need_restart) { + status = ql_adapter_up(qdev); + if (status) { + netif_err(qdev, link, qdev->ndev, + "Failed to bring up the adapter\n"); + return status; + } } + return status; } --- linux-3.13.0.orig/drivers/net/ethernet/realtek/8139cp.c +++ linux-3.13.0/drivers/net/ethernet/realtek/8139cp.c @@ -899,7 +899,7 @@ return NETDEV_TX_OK; out_dma_error: - kfree_skb(skb); + dev_kfree_skb_any(skb); cp->dev->stats.tx_dropped++; goto out_unlock; } --- linux-3.13.0.orig/drivers/net/ethernet/realtek/8139too.c +++ linux-3.13.0/drivers/net/ethernet/realtek/8139too.c @@ -1717,9 +1717,9 @@ if (len < ETH_ZLEN) memset(tp->tx_buf[entry], 0, ETH_ZLEN); skb_copy_and_csum_dev(skb, tp->tx_buf[entry]); - dev_kfree_skb(skb); + dev_kfree_skb_any(skb); } else { - dev_kfree_skb(skb); + dev_kfree_skb_any(skb); dev->stats.tx_dropped++; return NETDEV_TX_OK; } @@ -2522,16 +2522,16 @@ netdev_stats_to_stats64(stats, &dev->stats); do { - start = u64_stats_fetch_begin_bh(&tp->rx_stats.syncp); + start = u64_stats_fetch_begin_irq(&tp->rx_stats.syncp); stats->rx_packets = tp->rx_stats.packets; stats->rx_bytes = tp->rx_stats.bytes; - } while (u64_stats_fetch_retry_bh(&tp->rx_stats.syncp, start)); + } while (u64_stats_fetch_retry_irq(&tp->rx_stats.syncp, start)); do { - start = u64_stats_fetch_begin_bh(&tp->tx_stats.syncp); + start = u64_stats_fetch_begin_irq(&tp->tx_stats.syncp); stats->tx_packets = tp->tx_stats.packets; stats->tx_bytes = tp->tx_stats.bytes; - } while (u64_stats_fetch_retry_bh(&tp->tx_stats.syncp, start)); + } while (u64_stats_fetch_retry_irq(&tp->tx_stats.syncp, start)); return stats; } --- linux-3.13.0.orig/drivers/net/ethernet/realtek/r8169.c +++ linux-3.13.0/drivers/net/ethernet/realtek/r8169.c @@ -5835,7 +5835,7 @@ tp->TxDescArray + entry); if (skb) { tp->dev->stats.tx_dropped++; - dev_kfree_skb(skb); + dev_kfree_skb_any(skb); tx_skb->skb = NULL; } } @@ -6060,7 +6060,7 @@ err_dma_1: rtl8169_unmap_tx_skb(d, tp->tx_skb + entry, txd); err_dma_0: - dev_kfree_skb(skb); + dev_kfree_skb_any(skb); err_update_stats: dev->stats.tx_dropped++; return NETDEV_TX_OK; @@ -6143,7 +6143,7 @@ tp->tx_stats.packets++; tp->tx_stats.bytes += tx_skb->skb->len; u64_stats_update_end(&tp->tx_stats.syncp); - dev_kfree_skb(tx_skb->skb); + dev_kfree_skb_any(tx_skb->skb); tx_skb->skb = NULL; } dirty_tx++; @@ -6591,17 +6591,17 @@ rtl8169_rx_missed(dev, ioaddr); do { - start = u64_stats_fetch_begin_bh(&tp->rx_stats.syncp); + start = u64_stats_fetch_begin_irq(&tp->rx_stats.syncp); stats->rx_packets = tp->rx_stats.packets; stats->rx_bytes = tp->rx_stats.bytes; - } while (u64_stats_fetch_retry_bh(&tp->rx_stats.syncp, start)); + } while (u64_stats_fetch_retry_irq(&tp->rx_stats.syncp, start)); do { - start = u64_stats_fetch_begin_bh(&tp->tx_stats.syncp); + start = u64_stats_fetch_begin_irq(&tp->tx_stats.syncp); stats->tx_packets = tp->tx_stats.packets; stats->tx_bytes = tp->tx_stats.bytes; - } while (u64_stats_fetch_retry_bh(&tp->tx_stats.syncp, start)); + } while (u64_stats_fetch_retry_irq(&tp->tx_stats.syncp, start)); stats->rx_dropped = dev->stats.rx_dropped; stats->tx_dropped = dev->stats.tx_dropped; --- linux-3.13.0.orig/drivers/net/ethernet/renesas/sh_eth.c +++ linux-3.13.0/drivers/net/ethernet/renesas/sh_eth.c @@ -247,6 +247,27 @@ }; static const u16 sh_eth_offset_fast_sh3_sh2[SH_ETH_MAX_REGISTER_OFFSET] = { + [EDMR] = 0x0000, + [EDTRR] = 0x0004, + [EDRRR] = 0x0008, + [TDLAR] = 0x000c, + [RDLAR] = 0x0010, + [EESR] = 0x0014, + [EESIPR] = 0x0018, + [TRSCER] = 0x001c, + [RMFCR] = 0x0020, + [TFTR] = 0x0024, + [FDR] = 0x0028, + [RMCR] = 0x002c, + [EDOCR] = 0x0030, + [FCFTR] = 0x0034, + [RPADIR] = 0x0038, + [TRIMD] = 0x003c, + [RBWAR] = 0x0040, + [RDFAR] = 0x0044, + [TBRAR] = 0x004c, + [TDFAR] = 0x0050, + [ECMR] = 0x0160, [ECSR] = 0x0164, [ECSIPR] = 0x0168, @@ -483,7 +504,6 @@ .register_type = SH_ETH_REG_FAST_SH4, .eesipr_value = DMAC_M_RFRMER | DMAC_M_ECI | 0x003fffff, - .rmcr_value = RMCR_RNC, .tx_check = EESR_FTC | EESR_CND | EESR_DLC | EESR_CD | EESR_RTO, .eesr_err_check = EESR_TWB | EESR_TABT | EESR_RABT | EESR_RFE | @@ -561,7 +581,6 @@ EESR_RFE | EESR_RDE | EESR_RFRMER | EESR_TFE | EESR_TDE | EESR_ECI, .fdr_value = 0x0000072f, - .rmcr_value = RMCR_RNC, .irq_flags = IRQF_SHARED, .apr = 1, @@ -689,7 +708,6 @@ EESR_RFE | EESR_RDE | EESR_RFRMER | EESR_TFE | EESR_TDE | EESR_ECI, .fdr_value = 0x0000070f, - .rmcr_value = RMCR_RNC, .apr = 1, .mpr = 1, @@ -738,9 +756,6 @@ if (!cd->fdr_value) cd->fdr_value = DEFAULT_FDR_INIT; - if (!cd->rmcr_value) - cd->rmcr_value = DEFAULT_RMCR_VALUE; - if (!cd->tx_check) cd->tx_check = DEFAULT_TX_CHECK; @@ -1193,8 +1208,8 @@ sh_eth_write(ndev, mdp->cd->fdr_value, FDR); sh_eth_write(ndev, 0, TFTR); - /* Frame recv control */ - sh_eth_write(ndev, mdp->cd->rmcr_value, RMCR); + /* Frame recv control (enable multiple-packets per rx irq) */ + sh_eth_write(ndev, RMCR_RNC, RMCR); sh_eth_write(ndev, DESC_I_RINT8 | DESC_I_RINT5 | DESC_I_TINT2, TRSCER); @@ -1323,6 +1338,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++; @@ -1338,12 +1354,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); @@ -2004,8 +2019,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 (skb->len < ETHERSMALL) --- linux-3.13.0.orig/drivers/net/ethernet/renesas/sh_eth.h +++ linux-3.13.0/drivers/net/ethernet/renesas/sh_eth.h @@ -324,7 +324,6 @@ enum RMCR_BIT { RMCR_RNC = 0x00000001, }; -#define DEFAULT_RMCR_VALUE 0x00000000 /* ECMR */ enum FELIC_MODE_BIT { @@ -473,7 +472,6 @@ unsigned long fdr_value; unsigned long fcftr_value; unsigned long rpadir_value; - unsigned long rmcr_value; /* interrupt checking mask */ unsigned long tx_check; --- linux-3.13.0.orig/drivers/net/ethernet/sfc/ef10.c +++ linux-3.13.0/drivers/net/ethernet/sfc/ef10.c @@ -555,10 +555,17 @@ * several of each (in fact that's the only option if host * page size is >4K). So we may allocate some extra VIs just * for writing PIO buffers through. + * + * The UC mapping contains (min_vis - 1) complete VIs and the + * first half of the next VI. Then the WC mapping begins with + * the second half of this last VI. */ uc_mem_map_size = PAGE_ALIGN((min_vis - 1) * EFX_VI_PAGE_SIZE + ER_DZ_TX_PIOBUF); if (nic_data->n_piobufs) { + /* pio_write_vi_base rounds down to give the number of complete + * VIs inside the UC mapping. + */ pio_write_vi_base = uc_mem_map_size / EFX_VI_PAGE_SIZE; wc_mem_map_size = (PAGE_ALIGN((pio_write_vi_base + nic_data->n_piobufs) * --- linux-3.13.0.orig/drivers/net/ethernet/sfc/efx.c +++ linux-3.13.0/drivers/net/ethernet/sfc/efx.c @@ -1514,6 +1514,8 @@ if (rc) goto fail1; + efx_set_channels(efx); + rc = efx->type->dimension_resources(efx); if (rc) goto fail2; @@ -1524,7 +1526,6 @@ efx->rx_indir_table[i] = ethtool_rxfh_indir_default(i, efx->rss_spread); - efx_set_channels(efx); netif_set_real_num_tx_queues(efx->net_dev, efx->n_tx_channels); netif_set_real_num_rx_queues(efx->net_dev, efx->n_rx_channels); --- linux-3.13.0.orig/drivers/net/ethernet/sfc/efx.h +++ linux-3.13.0/drivers/net/ethernet/sfc/efx.h @@ -66,6 +66,9 @@ #define EFX_RXQ_MIN_ENT 128U #define EFX_TXQ_MIN_ENT(efx) (2 * efx_tx_max_skb_descs(efx)) +#define EFX_TXQ_MAX_ENT(efx) (EFX_WORKAROUND_35388(efx) ? \ + EFX_MAX_DMAQ_SIZE / 2 : EFX_MAX_DMAQ_SIZE) + /* Filters */ /** --- linux-3.13.0.orig/drivers/net/ethernet/sfc/ethtool.c +++ linux-3.13.0/drivers/net/ethernet/sfc/ethtool.c @@ -583,7 +583,7 @@ struct efx_nic *efx = netdev_priv(net_dev); ring->rx_max_pending = EFX_MAX_DMAQ_SIZE; - ring->tx_max_pending = EFX_MAX_DMAQ_SIZE; + ring->tx_max_pending = EFX_TXQ_MAX_ENT(efx); ring->rx_pending = efx->rxq_entries; ring->tx_pending = efx->txq_entries; } @@ -596,7 +596,7 @@ if (ring->rx_mini_pending || ring->rx_jumbo_pending || ring->rx_pending > EFX_MAX_DMAQ_SIZE || - ring->tx_pending > EFX_MAX_DMAQ_SIZE) + ring->tx_pending > EFX_TXQ_MAX_ENT(efx)) return -EINVAL; if (ring->rx_pending < EFX_RXQ_MIN_ENT) { --- linux-3.13.0.orig/drivers/net/ethernet/sfc/io.h +++ linux-3.13.0/drivers/net/ethernet/sfc/io.h @@ -66,10 +66,17 @@ #define EFX_USE_QWORD_IO 1 #endif +/* Hardware issue requires that only 64-bit naturally aligned writes + * are seen by hardware. Its not strictly necessary to restrict to + * x86_64 arch, but done for safety since unusual write combining behaviour + * can break PIO. + */ +#ifdef CONFIG_X86_64 /* PIO is a win only if write-combining is possible */ #ifdef ARCH_HAS_IOREMAP_WC #define EFX_USE_PIO 1 #endif +#endif #ifdef EFX_USE_QWORD_IO static inline void _efx_writeq(struct efx_nic *efx, __le64 value, --- linux-3.13.0.orig/drivers/net/ethernet/sfc/nic.c +++ linux-3.13.0/drivers/net/ethernet/sfc/nic.c @@ -156,13 +156,15 @@ efx->net_dev->rx_cpu_rmap = NULL; #endif - /* Disable MSI/MSI-X interrupts */ - efx_for_each_channel(channel, efx) - free_irq(channel->irq, &efx->msi_context[channel->channel]); - - /* Disable legacy interrupt */ - if (efx->legacy_irq) + if (EFX_INT_MODE_USE_MSI(efx)) { + /* Disable MSI/MSI-X interrupts */ + efx_for_each_channel(channel, efx) + free_irq(channel->irq, + &efx->msi_context[channel->channel]); + } else { + /* Disable legacy interrupt */ free_irq(efx->legacy_irq, efx); + } } /* Register dump */ --- linux-3.13.0.orig/drivers/net/ethernet/sfc/ptp.c +++ linux-3.13.0/drivers/net/ethernet/sfc/ptp.c @@ -1360,6 +1360,13 @@ struct efx_ptp_data *ptp = efx->ptp_data; int code = EFX_QWORD_FIELD(*ev, MCDI_EVENT_CODE); + if (!ptp) { + if (net_ratelimit()) + netif_warn(efx, drv, efx->net_dev, + "Received PTP event but PTP not set up\n"); + return; + } + if (!ptp->enabled) return; --- linux-3.13.0.orig/drivers/net/ethernet/sfc/tx.c +++ linux-3.13.0/drivers/net/ethernet/sfc/tx.c @@ -189,6 +189,18 @@ u8 buf[L1_CACHE_BYTES]; }; +/* Copy in explicit 64-bit writes. */ +static void efx_memcpy_64(void __iomem *dest, void *src, size_t len) +{ + u64 *src64 = src; + u64 __iomem *dest64 = dest; + size_t l64 = len / 8; + size_t i; + + for (i = 0; i < l64; i++) + writeq(src64[i], &dest64[i]); +} + /* Copy to PIO, respecting that writes to PIO buffers must be dword aligned. * Advances piobuf pointer. Leaves additional data in the copy buffer. */ @@ -198,7 +210,7 @@ { int block_len = len & ~(sizeof(copy_buf->buf) - 1); - memcpy_toio(*piobuf, data, block_len); + efx_memcpy_64(*piobuf, data, block_len); *piobuf += block_len; len -= block_len; @@ -230,7 +242,7 @@ if (copy_buf->used < sizeof(copy_buf->buf)) return; - memcpy_toio(*piobuf, copy_buf->buf, sizeof(copy_buf->buf)); + efx_memcpy_64(*piobuf, copy_buf->buf, sizeof(copy_buf->buf)); *piobuf += sizeof(copy_buf->buf); data += copy_to_buf; len -= copy_to_buf; @@ -245,7 +257,7 @@ { /* if there's anything in it, write the whole buffer, including junk */ if (copy_buf->used) - memcpy_toio(piobuf, copy_buf->buf, sizeof(copy_buf->buf)); + efx_memcpy_64(piobuf, copy_buf->buf, sizeof(copy_buf->buf)); } /* Traverse skb structure and copy fragments in to PIO buffer. @@ -304,8 +316,8 @@ */ BUILD_BUG_ON(L1_CACHE_BYTES > SKB_DATA_ALIGN(sizeof(struct skb_shared_info))); - memcpy_toio(tx_queue->piobuf, skb->data, - ALIGN(skb->len, L1_CACHE_BYTES)); + efx_memcpy_64(tx_queue->piobuf, skb->data, + ALIGN(skb->len, L1_CACHE_BYTES)); } EFX_POPULATE_QWORD_5(buffer->option, --- linux-3.13.0.orig/drivers/net/ethernet/smsc/smsc911x.c +++ linux-3.13.0/drivers/net/ethernet/smsc/smsc911x.c @@ -1342,6 +1342,42 @@ spin_unlock(&pdata->mac_lock); } +static int smsc911x_phy_general_power_up(struct smsc911x_data *pdata) +{ + int rc = 0; + + if (!pdata->phy_dev) + return rc; + + /* If the internal PHY is in General Power-Down mode, all, except the + * management interface, is powered-down and stays in that condition as + * long as Phy register bit 0.11 is HIGH. + * + * In that case, clear the bit 0.11, so the PHY powers up and we can + * access to the phy registers. + */ + rc = phy_read(pdata->phy_dev, MII_BMCR); + if (rc < 0) { + SMSC_WARN(pdata, drv, "Failed reading PHY control reg"); + return rc; + } + + /* If the PHY general power-down bit is not set is not necessary to + * disable the general power down-mode. + */ + if (rc & BMCR_PDOWN) { + rc = phy_write(pdata->phy_dev, MII_BMCR, rc & ~BMCR_PDOWN); + if (rc < 0) { + SMSC_WARN(pdata, drv, "Failed writing PHY control reg"); + return rc; + } + + usleep_range(1000, 1500); + } + + return 0; +} + static int smsc911x_phy_disable_energy_detect(struct smsc911x_data *pdata) { int rc = 0; @@ -1415,6 +1451,16 @@ int ret; /* + * Make sure to power-up the PHY chip before doing a reset, otherwise + * the reset fails. + */ + ret = smsc911x_phy_general_power_up(pdata); + if (ret) { + SMSC_WARN(pdata, drv, "Failed to power-up the PHY chip"); + return ret; + } + + /* * LAN9210/LAN9211/LAN9220/LAN9221 chips have an internal PHY that * are initialized in a Energy Detect Power-Down mode that prevents * the MAC chip to be software reseted. So we have to wakeup the PHY --- linux-3.13.0.orig/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c +++ linux-3.13.0/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c @@ -731,10 +731,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-3.13.0.orig/drivers/net/ethernet/sun/niu.c +++ linux-3.13.0/drivers/net/ethernet/sun/niu.c @@ -6663,10 +6663,8 @@ struct sk_buff *skb_new; skb_new = skb_realloc_headroom(skb, len); - if (!skb_new) { - rp->tx_errors++; + if (!skb_new) goto out_drop; - } kfree_skb(skb); skb = skb_new; } else --- linux-3.13.0.orig/drivers/net/ethernet/sun/sunvnet.c +++ linux-3.13.0/drivers/net/ethernet/sun/sunvnet.c @@ -656,7 +656,7 @@ spin_lock_irqsave(&port->vio.lock, flags); dr = &port->vio.drings[VIO_DRIVER_TX_RING]; - if (unlikely(vnet_tx_dring_avail(dr) < 2)) { + if (unlikely(vnet_tx_dring_avail(dr) < 1)) { if (!netif_queue_stopped(dev)) { netif_stop_queue(dev); @@ -704,7 +704,7 @@ dev->stats.tx_bytes += skb->len; dr->prod = (dr->prod + 1) & (VNET_TX_RING_SIZE - 1); - if (unlikely(vnet_tx_dring_avail(dr) < 2)) { + if (unlikely(vnet_tx_dring_avail(dr) < 1)) { netif_stop_queue(dev); if (vnet_tx_dring_avail(dr) > VNET_TX_WAKEUP_THRESH(dr)) netif_wake_queue(dev); @@ -1083,6 +1083,24 @@ return vp; } +static void vnet_cleanup(void) +{ + struct vnet *vp; + struct net_device *dev; + + mutex_lock(&vnet_list_mutex); + while (!list_empty(&vnet_list)) { + vp = list_first_entry(&vnet_list, struct vnet, list); + list_del(&vp->list); + dev = vp->dev; + /* vio_unregister_driver() should have cleaned up port_list */ + BUG_ON(!list_empty(&vp->port_list)); + unregister_netdev(dev); + free_netdev(dev); + } + mutex_unlock(&vnet_list_mutex); +} + static const char *local_mac_prop = "local-mac-address"; static struct vnet *vnet_find_parent(struct mdesc_handle *hp, @@ -1240,7 +1258,6 @@ kfree(port); - unregister_netdev(vp->dev); } return 0; } @@ -1268,6 +1285,7 @@ static void __exit vnet_exit(void) { vio_unregister_driver(&vnet_port_driver); + vnet_cleanup(); } module_init(vnet_init); --- linux-3.13.0.orig/drivers/net/ethernet/ti/Kconfig +++ linux-3.13.0/drivers/net/ethernet/ti/Kconfig @@ -62,6 +62,8 @@ select TI_DAVINCI_CPDMA select TI_DAVINCI_MDIO select TI_CPSW_PHY_SEL + select MFD_SYSCON + select REGMAP ---help--- This driver supports TI's CPSW Ethernet Switch. --- linux-3.13.0.orig/drivers/net/ethernet/ti/cpsw.c +++ linux-3.13.0/drivers/net/ethernet/ti/cpsw.c @@ -33,6 +33,8 @@ #include #include #include +#include +#include #include @@ -497,9 +499,11 @@ (func)(slave++, ##arg); \ } while (0) #define cpsw_get_slave_ndev(priv, __slave_no__) \ - (priv->slaves[__slave_no__].ndev) + ((__slave_no__ < priv->data.slaves) ? \ + priv->slaves[__slave_no__].ndev : NULL) #define cpsw_get_slave_priv(priv, __slave_no__) \ - ((priv->slaves[__slave_no__].ndev) ? \ + (((__slave_no__ < priv->data.slaves) && \ + (priv->slaves[__slave_no__].ndev)) ? \ netdev_priv(priv->slaves[__slave_no__].ndev) : NULL) \ #define cpsw_dual_emac_src_port_detect(status, priv, ndev, skb) \ @@ -637,6 +641,14 @@ static irqreturn_t cpsw_interrupt(int irq, void *dev_id) { struct cpsw_priv *priv = dev_id; + int value = irq - priv->irqs_table[0]; + + /* NOTICE: Ending IRQ here. The trick with the 'value' variable above + * is to make sure we will always write the correct value to the EOI + * register. Namely 0 for RX_THRESH Interrupt, 1 for RX Interrupt, 2 + * for TX Interrupt and 3 for MISC Interrupt. + */ + cpdma_ctlr_eoi(priv->dma, value); cpsw_intr_disable(priv); if (priv->irq_enabled == true) { @@ -666,8 +678,6 @@ int num_tx, num_rx; num_tx = cpdma_chan_process(priv->txch, 128); - if (num_tx) - cpdma_ctlr_eoi(priv->dma, CPDMA_EOI_TX); num_rx = cpdma_chan_process(priv->rxch, budget); if (num_rx < budget) { @@ -675,7 +685,6 @@ napi_complete(napi); cpsw_intr_enable(priv); - cpdma_ctlr_eoi(priv->dma, CPDMA_EOI_RX); prim_cpsw = cpsw_get_slave_priv(priv, 0); if (prim_cpsw->irq_enabled == false) { prim_cpsw->irq_enabled = true; @@ -1169,6 +1178,10 @@ cpsw_set_coalesce(ndev, &coal); } + napi_enable(&priv->napi); + cpdma_ctlr_start(priv->dma); + cpsw_intr_enable(priv); + prim_cpsw = cpsw_get_slave_priv(priv, 0); if (prim_cpsw->irq_enabled == false) { if ((priv == prim_cpsw) || !netif_running(prim_cpsw->ndev)) { @@ -1177,12 +1190,6 @@ } } - napi_enable(&priv->napi); - cpdma_ctlr_start(priv->dma); - cpsw_intr_enable(priv); - cpdma_ctlr_eoi(priv->dma, CPDMA_EOI_RX); - cpdma_ctlr_eoi(priv->dma, CPDMA_EOI_TX); - if (priv->data.dual_emac) priv->slaves[priv->emac_port].open_stat = true; return 0; @@ -1430,9 +1437,6 @@ cpdma_chan_start(priv->txch); cpdma_ctlr_int_ctrl(priv->dma, true); cpsw_intr_enable(priv); - cpdma_ctlr_eoi(priv->dma, CPDMA_EOI_RX); - cpdma_ctlr_eoi(priv->dma, CPDMA_EOI_TX); - } static int cpsw_ndo_set_mac_address(struct net_device *ndev, void *p) @@ -1478,9 +1482,6 @@ cpsw_interrupt(ndev->irq, priv); cpdma_ctlr_int_ctrl(priv->dma, true); cpsw_intr_enable(priv); - cpdma_ctlr_eoi(priv->dma, CPDMA_EOI_RX); - cpdma_ctlr_eoi(priv->dma, CPDMA_EOI_TX); - } #endif @@ -1524,6 +1525,19 @@ if (vid == priv->data.default_vlan) return 0; + if (priv->data.dual_emac) { + /* In dual EMAC, reserved VLAN id should not be used for + * creating VLAN interfaces as this can break the dual + * EMAC port separation + */ + int i; + + for (i = 0; i < priv->data.slaves; i++) { + if (vid == priv->slaves[i].port_vlan) + return -EINVAL; + } + } + dev_info(priv->dev, "Adding vlanid %d to vlan filter\n", vid); return cpsw_add_vlan_ale_entry(priv, vid); } @@ -1537,6 +1551,15 @@ if (vid == priv->data.default_vlan) return 0; + if (priv->data.dual_emac) { + int i; + + for (i = 0; i < priv->data.slaves; i++) { + if (vid == priv->slaves[i].port_vlan) + return -EINVAL; + } + } + dev_info(priv->dev, "removing vlanid %d from vlan filter\n", vid); ret = cpsw_ale_del_vlan(priv->ale, vid, 0); if (ret != 0) @@ -1700,6 +1723,36 @@ slave->port_vlan = data->dual_emac_res_vlan; } +#define AM33XX_CTRL_MAC_LO_REG(id) (0x630 + 0x8 * id) +#define AM33XX_CTRL_MAC_HI_REG(id) (0x630 + 0x8 * id + 0x4) + +static int cpsw_am33xx_cm_get_macid(struct device *dev, int slave, + u8 *mac_addr) +{ + u32 macid_lo; + u32 macid_hi; + struct regmap *syscon; + + syscon = syscon_regmap_lookup_by_phandle(dev->of_node, "syscon"); + if (IS_ERR(syscon)) { + if (PTR_ERR(syscon) == -ENODEV) + return 0; + return PTR_ERR(syscon); + } + + regmap_read(syscon, AM33XX_CTRL_MAC_LO_REG(slave), &macid_lo); + regmap_read(syscon, AM33XX_CTRL_MAC_HI_REG(slave), &macid_hi); + + mac_addr[5] = (macid_lo >> 8) & 0xff; + mac_addr[4] = macid_lo & 0xff; + mac_addr[3] = (macid_hi >> 24) & 0xff; + mac_addr[2] = (macid_hi >> 16) & 0xff; + mac_addr[1] = (macid_hi >> 8) & 0xff; + mac_addr[0] = macid_hi & 0xff; + + return 0; +} + static int cpsw_probe_dt(struct cpsw_platform_data *data, struct platform_device *pdev) { @@ -1807,8 +1860,16 @@ PHY_ID_FMT, mdio->name, phyid); mac_addr = of_get_mac_address(slave_node); - if (mac_addr) + if (mac_addr) { memcpy(slave_data->mac_addr, mac_addr, ETH_ALEN); + } else { + if (of_machine_is_compatible("ti,am33xx")) { + ret = cpsw_am33xx_cm_get_macid(&pdev->dev, i, + slave_data->mac_addr); + if (ret) + return ret; + } + } slave_data->phy_if = of_get_phy_mode(slave_node); @@ -1937,6 +1998,7 @@ priv->irq_enabled = true; if (!priv->cpts) { pr_err("error allocating cpts\n"); + ret = -ENOMEM; goto clean_ndev_ret; } @@ -2133,10 +2195,6 @@ goto clean_ale_ret; } - if (cpts_register(&pdev->dev, priv->cpts, - data->cpts_clock_mult, data->cpts_clock_shift)) - dev_err(priv->dev, "error registering cpts device\n"); - cpsw_notice(priv, probe, "initialized device (regs %x, irq %d)\n", ss_res->start, ndev->irq); --- linux-3.13.0.orig/drivers/net/ethernet/ti/cpsw.h +++ linux-3.13.0/drivers/net/ethernet/ti/cpsw.h @@ -15,6 +15,7 @@ #define __CPSW_H__ #include +#include struct cpsw_slave_data { char phy_id[MII_BUS_ID_SIZE]; --- linux-3.13.0.orig/drivers/net/ethernet/ti/davinci_emac.c +++ linux-3.13.0/drivers/net/ethernet/ti/davinci_emac.c @@ -1532,7 +1532,7 @@ struct device *emac_dev = &ndev->dev; u32 cnt; struct resource *res; - int ret; + int q, m, ret; int i = 0; int k = 0; struct emac_priv *priv = netdev_priv(ndev); @@ -1567,8 +1567,7 @@ while ((res = platform_get_resource(priv->pdev, IORESOURCE_IRQ, k))) { for (i = res->start; i <= res->end; i++) { - if (devm_request_irq(&priv->pdev->dev, i, emac_irq, - 0, ndev->name, ndev)) + if (request_irq(i, emac_irq, 0, ndev->name, ndev)) goto rollback; } k++; @@ -1641,7 +1640,15 @@ rollback: - dev_err(emac_dev, "DaVinci EMAC: devm_request_irq() failed"); + dev_err(emac_dev, "DaVinci EMAC: request_irq() failed"); + + for (q = k; k >= 0; k--) { + for (m = i; m >= res->start; m--) + free_irq(m, ndev); + res = platform_get_resource(priv->pdev, IORESOURCE_IRQ, k-1); + m = res->end; + } + ret = -EBUSY; err: pm_runtime_put(&priv->pdev->dev); @@ -1659,6 +1666,9 @@ */ static int emac_dev_stop(struct net_device *ndev) { + struct resource *res; + int i = 0; + int irq_num; struct emac_priv *priv = netdev_priv(ndev); struct device *emac_dev = &ndev->dev; @@ -1674,6 +1684,13 @@ if (priv->phydev) phy_disconnect(priv->phydev); + /* Free IRQ */ + while ((res = platform_get_resource(priv->pdev, IORESOURCE_IRQ, i))) { + for (irq_num = res->start; irq_num <= res->end; irq_num++) + free_irq(irq_num, priv->ndev); + i++; + } + if (netif_msg_drv(priv)) dev_notice(emac_dev, "DaVinci EMAC: %s stopped\n", ndev->name); --- linux-3.13.0.orig/drivers/net/ethernet/tile/tilegx.c +++ linux-3.13.0/drivers/net/ethernet/tile/tilegx.c @@ -2081,7 +2081,7 @@ /* Return subqueue id on this core (one per core). */ static u16 tile_net_select_queue(struct net_device *dev, struct sk_buff *skb, - void *accel_priv) + void *accel_priv, select_queue_fallback_t fallback) { return smp_processor_id(); } --- linux-3.13.0.orig/drivers/net/ethernet/tile/tilepro.c +++ linux-3.13.0/drivers/net/ethernet/tile/tilepro.c @@ -2068,14 +2068,14 @@ cpu_stats = &priv->cpu[i]->stats; do { - start = u64_stats_fetch_begin_bh(&cpu_stats->syncp); + start = u64_stats_fetch_begin_irq(&cpu_stats->syncp); trx_packets = cpu_stats->rx_packets; ttx_packets = cpu_stats->tx_packets; trx_bytes = cpu_stats->rx_bytes; ttx_bytes = cpu_stats->tx_bytes; trx_errors = cpu_stats->rx_errors; trx_dropped = cpu_stats->rx_dropped; - } while (u64_stats_fetch_retry_bh(&cpu_stats->syncp, start)); + } while (u64_stats_fetch_retry_irq(&cpu_stats->syncp, start)); rx_packets += trx_packets; tx_packets += ttx_packets; --- linux-3.13.0.orig/drivers/net/ethernet/via/via-rhine.c +++ linux-3.13.0/drivers/net/ethernet/via/via-rhine.c @@ -2070,16 +2070,16 @@ netdev_stats_to_stats64(stats, &dev->stats); do { - start = u64_stats_fetch_begin_bh(&rp->rx_stats.syncp); + start = u64_stats_fetch_begin_irq(&rp->rx_stats.syncp); stats->rx_packets = rp->rx_stats.packets; stats->rx_bytes = rp->rx_stats.bytes; - } while (u64_stats_fetch_retry_bh(&rp->rx_stats.syncp, start)); + } while (u64_stats_fetch_retry_irq(&rp->rx_stats.syncp, start)); do { - start = u64_stats_fetch_begin_bh(&rp->tx_stats.syncp); + start = u64_stats_fetch_begin_irq(&rp->tx_stats.syncp); stats->tx_packets = rp->tx_stats.packets; stats->tx_bytes = rp->tx_stats.bytes; - } while (u64_stats_fetch_retry_bh(&rp->tx_stats.syncp, start)); + } while (u64_stats_fetch_retry_irq(&rp->tx_stats.syncp, start)); return stats; } --- linux-3.13.0.orig/drivers/net/hyperv/hyperv_net.h +++ linux-3.13.0/drivers/net/hyperv/hyperv_net.h @@ -463,7 +463,8 @@ #define NETVSC_MTU 65536 -#define NETVSC_RECEIVE_BUFFER_SIZE (1024*1024*2) /* 2MB */ +#define NETVSC_RECEIVE_BUFFER_SIZE (1024*1024*16) /* 16MB */ +#define NETVSC_RECEIVE_BUFFER_SIZE_LEGACY (1024*1024*15) /* 15MB */ #define NETVSC_RECEIVE_BUFFER_ID 0xcafe --- linux-3.13.0.orig/drivers/net/hyperv/netvsc.c +++ linux-3.13.0/drivers/net/hyperv/netvsc.c @@ -137,8 +137,7 @@ if (net_device->recv_buf) { /* Free up the receive buffer */ - free_pages((unsigned long)net_device->recv_buf, - get_order(net_device->recv_buf_size)); + vfree(net_device->recv_buf); net_device->recv_buf = NULL; } @@ -164,9 +163,7 @@ return -ENODEV; ndev = net_device->ndev; - net_device->recv_buf = - (void *)__get_free_pages(GFP_KERNEL|__GFP_ZERO, - get_order(net_device->recv_buf_size)); + net_device->recv_buf = vzalloc(net_device->recv_buf_size); if (!net_device->recv_buf) { netdev_err(ndev, "unable to allocate receive " "buffer of size %d\n", net_device->recv_buf_size); @@ -362,6 +359,11 @@ goto cleanup; /* Post the big receive buffer to NetVSP */ + if (net_device->nvsp_version <= NVSP_PROTOCOL_VERSION_2) + net_device->recv_buf_size = NETVSC_RECEIVE_BUFFER_SIZE_LEGACY; + else + net_device->recv_buf_size = NETVSC_RECEIVE_BUFFER_SIZE; + ret = netvsc_init_recv_buf(device); cleanup: @@ -911,7 +913,6 @@ ndev = net_device->ndev; /* Initialize the NetVSC channel extension */ - net_device->recv_buf_size = NETVSC_RECEIVE_BUFFER_SIZE; spin_lock_init(&net_device->recv_pkt_list_lock); INIT_LIST_HEAD(&net_device->recv_pkt_list); --- linux-3.13.0.orig/drivers/net/hyperv/netvsc_drv.c +++ linux-3.13.0/drivers/net/hyperv/netvsc_drv.c @@ -89,8 +89,12 @@ { struct net_device_context *net_device_ctx = netdev_priv(net); struct hv_device *device_obj = net_device_ctx->device_ctx; + struct netvsc_device *nvdev; + struct rndis_device *rdev; int ret = 0; + netif_carrier_off(net); + /* Open up the device */ ret = rndis_filter_open(device_obj); if (ret != 0) { @@ -100,6 +104,11 @@ netif_start_queue(net); + nvdev = hv_get_drvdata(device_obj); + rdev = nvdev->extension; + if (!rdev->link_state) + netif_carrier_on(net); + return ret; } @@ -138,6 +147,7 @@ struct hv_netvsc_packet *packet; int ret; unsigned int i, num_pages, npg_data; + u32 skb_length = skb->len; /* Add multipages for skb->data and additional 2 for RNDIS */ npg_data = (((unsigned long)skb->data + skb_headlen(skb) - 1) @@ -208,7 +218,7 @@ ret = rndis_filter_send(net_device_ctx->device_ctx, packet); if (ret == 0) { - net->stats.tx_bytes += skb->len; + net->stats.tx_bytes += skb_length; net->stats.tx_packets++; } else { kfree(packet); @@ -230,23 +240,24 @@ struct net_device *net; struct net_device_context *ndev_ctx; struct netvsc_device *net_device; + struct rndis_device *rdev; net_device = hv_get_drvdata(device_obj); + rdev = net_device->extension; + + rdev->link_state = status != 1; + net = net_device->ndev; - if (!net) { - netdev_err(net, "got link status but net device " - "not initialized yet\n"); + if (!net || net->reg_state != NETREG_REGISTERED) return; - } + ndev_ctx = netdev_priv(net); if (status == 1) { - netif_carrier_on(net); - ndev_ctx = netdev_priv(net); schedule_delayed_work(&ndev_ctx->dwork, 0); schedule_delayed_work(&ndev_ctx->dwork, msecs_to_jiffies(20)); } else { - netif_carrier_off(net); + schedule_delayed_work(&ndev_ctx->dwork, 0); } } @@ -389,17 +400,35 @@ * current context when receiving RNDIS_STATUS_MEDIA_CONNECT event. So, add * another netif_notify_peers() into a delayed work, otherwise GARP packet * will not be sent after quick migration, and cause network disconnection. + * Also, we update the carrier status here. */ -static void netvsc_send_garp(struct work_struct *w) +static void netvsc_link_change(struct work_struct *w) { struct net_device_context *ndev_ctx; struct net_device *net; struct netvsc_device *net_device; + struct rndis_device *rdev; + bool notify; + + rtnl_lock(); ndev_ctx = container_of(w, struct net_device_context, dwork.work); net_device = hv_get_drvdata(ndev_ctx->device_ctx); + rdev = net_device->extension; net = net_device->ndev; - netdev_notify_peers(net); + + if (rdev->link_state) { + netif_carrier_off(net); + notify = false; + } else { + netif_carrier_on(net); + notify = true; + } + + rtnl_unlock(); + + if (notify) + netdev_notify_peers(net); } @@ -415,13 +444,10 @@ if (!net) return -ENOMEM; - /* Set initial state */ - netif_carrier_off(net); - net_device_ctx = netdev_priv(net); net_device_ctx->device_ctx = dev; hv_set_drvdata(dev, net); - INIT_DELAYED_WORK(&net_device_ctx->dwork, netvsc_send_garp); + INIT_DELAYED_WORK(&net_device_ctx->dwork, netvsc_link_change); INIT_WORK(&net_device_ctx->work, do_set_multicast); net->netdev_ops = &device_ops; @@ -444,8 +470,6 @@ } memcpy(net->dev_addr, device_info.mac_adr, ETH_ALEN); - netif_carrier_on(net); - ret = register_netdev(net); if (ret != 0) { pr_err("Unable to register netdev.\n"); --- linux-3.13.0.orig/drivers/net/ieee802154/fakehard.c +++ linux-3.13.0/drivers/net/ieee802154/fakehard.c @@ -376,17 +376,20 @@ err = wpan_phy_register(phy); if (err) - goto out; + goto err_phy_reg; err = register_netdev(dev); - if (err < 0) - goto out; + if (err) + goto err_netdev_reg; dev_info(&pdev->dev, "Added ieee802154 HardMAC hardware\n"); return 0; -out: - unregister_netdev(dev); +err_netdev_reg: + wpan_phy_unregister(phy); +err_phy_reg: + free_netdev(dev); + wpan_phy_free(phy); return err; } --- linux-3.13.0.orig/drivers/net/ifb.c +++ linux-3.13.0/drivers/net/ifb.c @@ -136,18 +136,18 @@ unsigned int start; do { - start = u64_stats_fetch_begin_bh(&dp->rsync); + start = u64_stats_fetch_begin_irq(&dp->rsync); stats->rx_packets = dp->rx_packets; stats->rx_bytes = dp->rx_bytes; - } while (u64_stats_fetch_retry_bh(&dp->rsync, start)); + } while (u64_stats_fetch_retry_irq(&dp->rsync, start)); do { - start = u64_stats_fetch_begin_bh(&dp->tsync); + start = u64_stats_fetch_begin_irq(&dp->tsync); stats->tx_packets = dp->tx_packets; stats->tx_bytes = dp->tx_bytes; - } while (u64_stats_fetch_retry_bh(&dp->tsync, start)); + } while (u64_stats_fetch_retry_irq(&dp->tsync, start)); stats->rx_dropped = dev->stats.rx_dropped; stats->tx_dropped = dev->stats.tx_dropped; --- linux-3.13.0.orig/drivers/net/irda/irtty-sir.c +++ linux-3.13.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-3.13.0.orig/drivers/net/loopback.c +++ linux-3.13.0/drivers/net/loopback.c @@ -112,10 +112,10 @@ lb_stats = per_cpu_ptr(dev->lstats, i); do { - start = u64_stats_fetch_begin_bh(&lb_stats->syncp); + start = u64_stats_fetch_begin_irq(&lb_stats->syncp); tbytes = lb_stats->bytes; tpackets = lb_stats->packets; - } while (u64_stats_fetch_retry_bh(&lb_stats->syncp, start)); + } while (u64_stats_fetch_retry_irq(&lb_stats->syncp, start)); bytes += tbytes; packets += tpackets; } --- linux-3.13.0.orig/drivers/net/macvlan.c +++ linux-3.13.0/drivers/net/macvlan.c @@ -263,11 +263,9 @@ const struct macvlan_dev *vlan = netdev_priv(dev); const struct macvlan_port *port = vlan->port; const struct macvlan_dev *dest; - __u8 ip_summed = skb->ip_summed; if (vlan->mode == MACVLAN_MODE_BRIDGE) { const struct ethhdr *eth = (void *)skb->data; - skb->ip_summed = CHECKSUM_UNNECESSARY; /* send to other bridge ports directly */ if (is_multicast_ether_addr(eth->h_dest)) { @@ -285,7 +283,6 @@ } xmit_world: - skb->ip_summed = ip_summed; skb->dev = vlan->lowerdev; return dev_queue_xmit(skb); } @@ -462,8 +459,10 @@ struct macvlan_dev *vlan = netdev_priv(dev); struct net_device *lowerdev = vlan->lowerdev; - if (change & IFF_ALLMULTI) - dev_set_allmulti(lowerdev, dev->flags & IFF_ALLMULTI ? 1 : -1); + if (dev->flags & IFF_UP) { + if (change & IFF_ALLMULTI) + dev_set_allmulti(lowerdev, dev->flags & IFF_ALLMULTI ? 1 : -1); + } } static void macvlan_set_mac_lists(struct net_device *dev) @@ -507,6 +506,9 @@ static struct lock_class_key macvlan_netdev_xmit_lock_key; static struct lock_class_key macvlan_netdev_addr_lock_key; +#define ALWAYS_ON_FEATURES \ + (NETIF_F_SG | NETIF_F_GEN_CSUM | NETIF_F_GSO_SOFTWARE | NETIF_F_LLTX) + #define MACVLAN_FEATURES \ (NETIF_F_SG | NETIF_F_ALL_CSUM | NETIF_F_HIGHDMA | NETIF_F_FRAGLIST | \ NETIF_F_GSO | NETIF_F_TSO | NETIF_F_UFO | NETIF_F_GSO_ROBUST | \ @@ -516,6 +518,11 @@ #define MACVLAN_STATE_MASK \ ((1<<__LINK_STATE_NOCARRIER) | (1<<__LINK_STATE_DORMANT)) +static int macvlan_get_nest_level(struct net_device *dev) +{ + return ((struct macvlan_dev *)netdev_priv(dev))->nest_level; +} + static void macvlan_set_lockdep_class_one(struct net_device *dev, struct netdev_queue *txq, void *_unused) @@ -526,8 +533,9 @@ static void macvlan_set_lockdep_class(struct net_device *dev) { - lockdep_set_class(&dev->addr_list_lock, - &macvlan_netdev_addr_lock_key); + lockdep_set_class_and_subclass(&dev->addr_list_lock, + &macvlan_netdev_addr_lock_key, + macvlan_get_nest_level(dev)); netdev_for_each_tx_queue(dev, macvlan_set_lockdep_class_one, NULL); } @@ -540,7 +548,8 @@ dev->state = (dev->state & ~MACVLAN_STATE_MASK) | (lowerdev->state & MACVLAN_STATE_MASK); dev->features = lowerdev->features & MACVLAN_FEATURES; - dev->features |= NETIF_F_LLTX; + dev->features |= ALWAYS_ON_FEATURES; + dev->vlan_features = lowerdev->vlan_features & MACVLAN_FEATURES; dev->gso_max_size = lowerdev->gso_max_size; dev->iflink = lowerdev->ifindex; dev->hard_header_len = lowerdev->hard_header_len; @@ -587,13 +596,13 @@ for_each_possible_cpu(i) { p = per_cpu_ptr(vlan->pcpu_stats, i); do { - start = u64_stats_fetch_begin_bh(&p->syncp); + start = u64_stats_fetch_begin_irq(&p->syncp); rx_packets = p->rx_packets; rx_bytes = p->rx_bytes; rx_multicast = p->rx_multicast; tx_packets = p->tx_packets; tx_bytes = p->tx_bytes; - } while (u64_stats_fetch_retry_bh(&p->syncp, start)); + } while (u64_stats_fetch_retry_irq(&p->syncp, start)); stats->rx_packets += rx_packets; stats->rx_bytes += rx_bytes; @@ -700,7 +709,8 @@ features = netdev_increment_features(vlan->lowerdev->features, features, mask); - features |= NETIF_F_LLTX; + features |= ALWAYS_ON_FEATURES; + features &= ~NETIF_F_NETNS_LOCAL; return features; } @@ -729,6 +739,7 @@ .ndo_fdb_add = macvlan_fdb_add, .ndo_fdb_del = macvlan_fdb_del, .ndo_fdb_dump = ndo_dflt_fdb_dump, + .ndo_get_lock_subclass = macvlan_get_nest_level, }; void macvlan_common_setup(struct net_device *dev) @@ -864,6 +875,7 @@ vlan->receive = receive; vlan->forward = forward; vlan->set_features = MACVLAN_FEATURES; + vlan->nest_level = dev_get_nest_level(lowerdev, netif_is_macvlan) + 1; vlan->mode = MACVLAN_MODE_VEPA; if (data && data[IFLA_MACVLAN_MODE]) @@ -887,14 +899,15 @@ dev->priv_flags |= IFF_MACVLAN; err = netdev_upper_dev_link(lowerdev, dev); if (err) - goto destroy_port; - + goto unregister_netdev; list_add_tail_rcu(&vlan->list, &port->vlans); netif_stacked_transfer_operstate(lowerdev, dev); return 0; +unregister_netdev: + unregister_netdevice(dev); destroy_port: port->count -= 1; if (!port->count) @@ -1042,7 +1055,6 @@ list_for_each_entry_safe(vlan, next, &port->vlans, list) vlan->dev->rtnl_link_ops->dellink(vlan->dev, &list_kill); unregister_netdevice_many(&list_kill); - list_del(&list_kill); break; case NETDEV_PRE_TYPE_CHANGE: /* Forbid underlaying device to change its type. */ --- linux-3.13.0.orig/drivers/net/macvtap.c +++ linux-3.13.0/drivers/net/macvtap.c @@ -17,6 +17,7 @@ #include #include +#include #include #include #include @@ -68,7 +69,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) /* * RCU usage: @@ -108,17 +109,15 @@ return err; } +/* Requires RTNL */ static int macvtap_set_queue(struct net_device *dev, struct file *file, struct macvtap_queue *q) { struct macvlan_dev *vlan = netdev_priv(dev); - int err = -EBUSY; - rtnl_lock(); if (vlan->numqueues == MAX_MACVTAP_QUEUES) - goto out; + return -EBUSY; - err = 0; rcu_assign_pointer(q->vlan, vlan); rcu_assign_pointer(vlan->taps[vlan->numvtaps], q); sock_hold(&q->sk); @@ -132,9 +131,7 @@ vlan->numvtaps++; vlan->numqueues++; -out: - rtnl_unlock(); - return err; + return 0; } static int macvtap_disable_queue(struct macvtap_queue *q) @@ -219,7 +216,7 @@ goto out; /* Check if we can use flow to select a queue */ - rxq = skb_get_rxhash(skb); + rxq = skb_get_hash(skb); if (rxq) { tap = rcu_dereference(vlan->taps[rxq % numvtaps]); goto out; @@ -315,6 +312,15 @@ segs = nskb; } } else { + /* If we receive a partial checksum and the tap side + * doesn't support checksum offload, compute the checksum. + * Note: it doesn't matter which checksum feature to + * check, we either support them all or none. + */ + if (skb->ip_summed == CHECKSUM_PARTIAL && + !(features & NETIF_F_ALL_CSUM) && + skb_checksum_help(skb)) + goto drop; skb_queue_tail(&q->sk.sk_receive_queue, skb); } @@ -441,11 +447,12 @@ static int macvtap_open(struct inode *inode, struct file *file) { struct net *net = current->nsproxy->net_ns; - struct net_device *dev = dev_get_by_macvtap_minor(iminor(inode)); + struct net_device *dev; struct macvtap_queue *q; - int err; + int err = -ENODEV; - err = -ENODEV; + rtnl_lock(); + dev = dev_get_by_macvtap_minor(iminor(inode)); if (!dev) goto out; @@ -485,6 +492,7 @@ if (dev) dev_put(dev); + rtnl_unlock(); return err; } @@ -559,6 +567,8 @@ break; case VIRTIO_NET_HDR_GSO_UDP: gso_type = SKB_GSO_UDP; + if (skb->protocol == htons(ETH_P_IPV6)) + ipv6_proxy_select_ident(skb); break; default: return -EINVAL; @@ -615,6 +625,8 @@ if (skb->ip_summed == CHECKSUM_PARTIAL) { vnet_hdr->flags = VIRTIO_NET_HDR_F_NEEDS_CSUM; vnet_hdr->csum_start = skb_checksum_start_offset(skb); + if (vlan_tx_tag_present(skb)) + vnet_hdr->csum_start += VLAN_HLEN; vnet_hdr->csum_offset = skb->csum_offset; } else if (skb->ip_summed == CHECKSUM_UNNECESSARY) { vnet_hdr->flags = VIRTIO_NET_HDR_F_DATA_VALID; @@ -623,12 +635,15 @@ return 0; } +/* Neighbour code has some assumptions on HH_DATA_MOD alignment */ +#define MACVTAP_RESERVE HH_DATA_OFF(ETH_HLEN) + /* Get packet from user space buffer */ static ssize_t macvtap_get_user(struct macvtap_queue *q, struct msghdr *m, const struct iovec *iv, unsigned long total_len, size_t count, int noblock) { - int good_linear = SKB_MAX_HEAD(NET_IP_ALIGN); + int good_linear = SKB_MAX_HEAD(MACVTAP_RESERVE); struct sk_buff *skb; struct macvlan_dev *vlan; unsigned long len = total_len; @@ -687,7 +702,7 @@ linear = vnet_hdr.hdr_len; } - skb = macvtap_alloc_skb(&q->sk, NET_IP_ALIGN, copylen, + skb = macvtap_alloc_skb(&q->sk, MACVTAP_RESERVE, copylen, linear, noblock, &err); if (!skb) goto err; --- linux-3.13.0.orig/drivers/net/nlmon.c +++ linux-3.13.0/drivers/net/nlmon.c @@ -99,10 +99,10 @@ nl_stats = per_cpu_ptr(dev->lstats, i); do { - start = u64_stats_fetch_begin_bh(&nl_stats->syncp); + start = u64_stats_fetch_begin_irq(&nl_stats->syncp); tbytes = nl_stats->bytes; tpackets = nl_stats->packets; - } while (u64_stats_fetch_retry_bh(&nl_stats->syncp, start)); + } while (u64_stats_fetch_retry_irq(&nl_stats->syncp, start)); packets += tpackets; bytes += tbytes; --- linux-3.13.0.orig/drivers/net/phy/broadcom.c +++ linux-3.13.0/drivers/net/phy/broadcom.c @@ -848,7 +848,7 @@ { PHY_ID_BCM5421, 0xfffffff0 }, { PHY_ID_BCM5461, 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-3.13.0.orig/drivers/net/phy/dp83640.c +++ linux-3.13.0/drivers/net/phy/dp83640.c @@ -45,7 +45,7 @@ #define PSF_TX 0x1000 #define EXT_EVENT 1 #define CAL_EVENT 7 -#define CAL_TRIGGER 7 +#define CAL_TRIGGER 1 #define PER_TRIGGER 6 #define MII_DP83640_MICR 0x11 @@ -698,6 +698,11 @@ { struct rxts *rxts; 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); @@ -721,6 +726,7 @@ struct skb_shared_hwtstamps shhwtstamps; struct sk_buff *skb; u64 ns; + u8 overflow; /* We must already have the skb that triggered this. */ @@ -730,6 +736,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-3.13.0.orig/drivers/net/phy/fixed.c +++ linux-3.13.0/drivers/net/phy/fixed.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 @@ -55,6 +57,9 @@ 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; @@ -75,6 +80,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; --- linux-3.13.0.orig/drivers/net/phy/mdio-mux.c +++ linux-3.13.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-3.13.0.orig/drivers/net/phy/mdio-sun4i.c +++ linux-3.13.0/drivers/net/phy/mdio-sun4i.c @@ -139,6 +139,7 @@ return -EPROBE_DEFER; dev_info(&pdev->dev, "no regulator found\n"); + data->regulator = NULL; } else { ret = regulator_enable(data->regulator); if (ret) @@ -154,7 +155,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-3.13.0.orig/drivers/net/phy/phy.c +++ linux-3.13.0/drivers/net/phy/phy.c @@ -203,6 +203,25 @@ } /** + * phy_check_valid - check if there is a valid PHY setting which matches + * speed, duplex, and feature mask + * @speed: speed to match + * @duplex: duplex to match + * @features: A mask of the valid settings + * + * Description: Returns true if there is a valid setting, false otherwise. + */ +static inline bool phy_check_valid(int speed, int duplex, u32 features) +{ + unsigned int idx; + + idx = phy_find_valid(phy_find_setting(speed, duplex), features); + + return settings[idx].speed == speed && settings[idx].duplex == duplex && + (settings[idx].setting & features); +} + +/** * phy_sanitize_settings - make sure the PHY is set to supported speed and duplex * @phydev: the target phy_device struct * @@ -1008,15 +1027,17 @@ /* According to 802.3az,the EEE is supported only in full duplex-mode. * Also EEE feature is active when core is operating with MII, GMII - * or RGMII. + * or RGMII (all kinds). Internal PHYs are also allowed to proceed and + * should return an error if they do not support EEE. */ if ((phydev->duplex == DUPLEX_FULL) && ((phydev->interface == PHY_INTERFACE_MODE_MII) || (phydev->interface == PHY_INTERFACE_MODE_GMII) || - (phydev->interface == PHY_INTERFACE_MODE_RGMII))) { + (phydev->interface >= PHY_INTERFACE_MODE_RGMII && + phydev->interface <= PHY_INTERFACE_MODE_RGMII_TXID))) { int eee_lp, eee_cap, eee_adv; u32 lp, cap, adv; - int idx, status; + int status; /* Read phy status to properly get the right settings */ status = phy_read_status(phydev); @@ -1048,8 +1069,7 @@ adv = mmd_eee_adv_to_ethtool_adv_t(eee_adv); lp = mmd_eee_adv_to_ethtool_adv_t(eee_lp); - idx = phy_find_setting(phydev->speed, phydev->duplex); - if (!(lp & adv & settings[idx].setting)) + if (!phy_check_valid(phydev->speed, phydev->duplex, lp & adv)) goto eee_exit; if (clk_stop_enable) { --- linux-3.13.0.orig/drivers/net/phy/phy_device.c +++ linux-3.13.0/drivers/net/phy/phy_device.c @@ -32,6 +32,7 @@ #include #include #include +#include #include #include @@ -54,15 +55,13 @@ } static struct phy_driver genphy_driver; +static struct phy_driver gen10g_driver; extern int mdio_bus_init(void); extern void mdio_bus_exit(void); static LIST_HEAD(phy_fixup_list); static DEFINE_MUTEX(phy_fixup_lock); -static int phy_attach_direct(struct net_device *dev, struct phy_device *phydev, - u32 flags, phy_interface_t interface); - /* * Creates a new phy_fixup and adds it to the list * @bus_id: A string which matches phydev->dev.bus_id (or PHY_ANY_ID) @@ -520,13 +519,13 @@ * * Description: Called by drivers to attach to a particular PHY * device. The phy_device is found, and properly hooked up - * to the phy_driver. If no driver is attached, then the - * genphy_driver is used. The phy_device is given a ptr to + * to the phy_driver. If no driver is attached, then a + * generic driver is used. The phy_device is given a ptr to * the attaching device, and given a callback for link status * change. The phy_device is returned to the attaching driver. */ -static int phy_attach_direct(struct net_device *dev, struct phy_device *phydev, - u32 flags, phy_interface_t interface) +int phy_attach_direct(struct net_device *dev, struct phy_device *phydev, + u32 flags, phy_interface_t interface) { struct device *d = &phydev->dev; int err; @@ -534,12 +533,10 @@ /* Assume that if there is no driver, that it doesn't * exist, and we should use the genphy driver. */ if (NULL == d->driver) { - if (phydev->is_c45) { - pr_err("No driver for phy %x\n", phydev->phy_id); - return -ENODEV; - } - - d->driver = &genphy_driver.driver; + if (phydev->is_c45) + d->driver = &gen10g_driver.driver; + else + d->driver = &genphy_driver.driver; err = d->driver->probe(d); if (err >= 0) @@ -572,6 +569,7 @@ return err; } +EXPORT_SYMBOL(phy_attach_direct); /** * phy_attach - attach a network device to a particular PHY device @@ -622,6 +620,8 @@ * real driver could be loaded */ if (phydev->dev.driver == &genphy_driver.driver) device_release_driver(&phydev->dev); + else if (phydev->dev.driver == &gen10g_driver.driver) + device_release_driver(&phydev->dev); } EXPORT_SYMBOL(phy_detach); @@ -689,6 +689,13 @@ return changed; } +int gen10g_config_advert(struct phy_device *dev) +{ + return 0; +} +EXPORT_SYMBOL(gen10g_config_advert); + + /** * genphy_setup_forced - configures/forces speed/duplex from @phydev * @phydev: target phy_device struct @@ -742,6 +749,12 @@ } EXPORT_SYMBOL(genphy_restart_aneg); +int gen10g_restart_aneg(struct phy_device *phydev) +{ + return 0; +} +EXPORT_SYMBOL(gen10g_restart_aneg); + /** * genphy_config_aneg - restart auto-negotiation or write BMCR @@ -784,6 +797,13 @@ } EXPORT_SYMBOL(genphy_config_aneg); +int gen10g_config_aneg(struct phy_device *phydev) +{ + return 0; +} +EXPORT_SYMBOL(gen10g_config_aneg); + + /** * genphy_update_link - update link status in @phydev * @phydev: target phy_device struct @@ -867,6 +887,16 @@ lpa &= adv; + err = phy_read(phydev, MII_BMSR); + + if (err < 0) + return err; + + /* if the link changed while reading speed and duplex + * abort the speed and duplex update */ + if (((err & BMSR_LSTATUS) == 0) != (phydev->link == 0)) + return 0; + phydev->speed = SPEED_10; phydev->duplex = DUPLEX_HALF; phydev->pause = phydev->asym_pause = 0; @@ -913,6 +943,34 @@ } EXPORT_SYMBOL(genphy_read_status); +int gen10g_read_status(struct phy_device *phydev) +{ + int devad, reg; + u32 mmd_mask = phydev->c45_ids.devices_in_package; + + phydev->link = 1; + + /* For now just lie and say it's 10G all the time */ + phydev->speed = 10000; + phydev->duplex = DUPLEX_FULL; + + for (devad = 0; mmd_mask; devad++, mmd_mask = mmd_mask >> 1) { + if (!mmd_mask & 1) + continue; + + /* Read twice because link state is latched and a + * read moves the current state into the register */ + phy_read_mmd(phydev, devad, MDIO_STAT1); + reg = phy_read_mmd(phydev, devad, MDIO_STAT1); + if (reg < 0 || !(reg & MDIO_STAT1_LSTATUS)) + phydev->link = 0; + } + + return 0; +} +EXPORT_SYMBOL(gen10g_read_status); + + static int genphy_config_init(struct phy_device *phydev) { int val; @@ -959,6 +1017,15 @@ return 0; } + +static int gen10g_config_init(struct phy_device *phydev) +{ + /* Temporarily just say we support everything */ + phydev->supported = phydev->advertising = SUPPORTED_10000baseT_Full; + + return 0; +} + int genphy_suspend(struct phy_device *phydev) { int value; @@ -974,6 +1041,13 @@ } EXPORT_SYMBOL(genphy_suspend); +int gen10g_suspend(struct phy_device *phydev) +{ + return 0; +} +EXPORT_SYMBOL(gen10g_suspend); + + int genphy_resume(struct phy_device *phydev) { int value; @@ -989,6 +1063,13 @@ } EXPORT_SYMBOL(genphy_resume); +int gen10g_resume(struct phy_device *phydev) +{ + return 0; +} +EXPORT_SYMBOL(gen10g_resume); + + /** * phy_probe - probe and init a PHY device * @dev: device to probe and init @@ -1129,6 +1210,20 @@ .driver = {.owner= THIS_MODULE, }, }; +static struct phy_driver gen10g_driver = { + .phy_id = 0xffffffff, + .phy_id_mask = 0xffffffff, + .name = "Generic 10G PHY", + .config_init = gen10g_config_init, + .features = 0, + .config_aneg = gen10g_config_aneg, + .read_status = gen10g_read_status, + .suspend = gen10g_suspend, + .resume = gen10g_resume, + .driver = {.owner = THIS_MODULE, }, +}; + + static int __init phy_init(void) { int rc; @@ -1139,13 +1234,25 @@ rc = phy_driver_register(&genphy_driver); if (rc) - mdio_bus_exit(); + goto genphy_register_failed; + + rc = phy_driver_register(&gen10g_driver); + if (rc) + goto gen10g_register_failed; + + return rc; + +gen10g_register_failed: + phy_driver_unregister(&genphy_driver); +genphy_register_failed: + mdio_bus_exit(); return rc; } static void __exit phy_exit(void) { + phy_driver_unregister(&gen10g_driver); phy_driver_unregister(&genphy_driver); mdio_bus_exit(); } --- linux-3.13.0.orig/drivers/net/phy/vitesse.c +++ linux-3.13.0/drivers/net/phy/vitesse.c @@ -74,7 +74,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; @@ -94,6 +94,7 @@ return err; } +EXPORT_SYMBOL(vsc824x_add_skew); static int vsc824x_config_init(struct phy_device *phydev) { --- linux-3.13.0.orig/drivers/net/ppp/ppp_deflate.c +++ linux-3.13.0/drivers/net/ppp/ppp_deflate.c @@ -246,7 +246,7 @@ /* * See if we managed to reduce the size of the packet. */ - if (olen < isize) { + if (olen < isize && olen <= osize) { state->stats.comp_bytes += olen; state->stats.comp_packets++; } else { --- linux-3.13.0.orig/drivers/net/ppp/ppp_generic.c +++ linux-3.13.0/drivers/net/ppp/ppp_generic.c @@ -568,7 +568,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; @@ -578,9 +578,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) { /* @@ -595,27 +600,24 @@ * this fd and reopening /dev/ppp. */ err = -EINVAL; - mutex_lock(&ppp_mutex); if (pf->kind == INTERFACE) { ppp = PF_TO_PPP(pf); if (file == ppp->owner) ppp_shutdown_interface(ppp); } - if (atomic_long_read(&file->f_count) <= 2) { + if (atomic_long_read(&file->f_count) < 2) { ppp_release(NULL, file); err = 0; } 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) { @@ -637,17 +639,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: @@ -716,10 +717,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); @@ -796,7 +795,10 @@ default: err = -ENOTTY; } + +out: mutex_unlock(&ppp_mutex); + return err; } @@ -809,7 +811,6 @@ struct ppp_net *pn; int __user *p = (int __user *)arg; - mutex_lock(&ppp_mutex); switch (cmd) { case PPPIOCNEWUNIT: /* Create a new ppp unit */ @@ -860,7 +861,7 @@ default: err = -ENOTTY; } - mutex_unlock(&ppp_mutex); + return err; } @@ -2222,7 +2223,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; @@ -2319,6 +2320,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); --- linux-3.13.0.orig/drivers/net/ppp/pppoe.c +++ linux-3.13.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); @@ -393,6 +392,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; @@ -570,7 +571,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; } @@ -675,7 +676,7 @@ po->chan.hdrlen = (sizeof(struct pppoe_hdr) + dev->hard_header_len); - po->chan.mtu = dev->mtu - sizeof(struct pppoe_hdr); + po->chan.mtu = dev->mtu - sizeof(struct pppoe_hdr) - 2; po->chan.private = sk; po->chan.ops = &pppoe_chan_ops; --- linux-3.13.0.orig/drivers/net/ppp/pptp.c +++ linux-3.13.0/drivers/net/ppp/pptp.c @@ -131,24 +131,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; @@ -281,7 +284,7 @@ nf_reset(skb); skb->ip_summed = CHECKSUM_NONE; - ip_select_ident(skb, &rt->dst, NULL); + ip_select_ident(skb, NULL); ip_send_check(iph); ip_local_out(skb); @@ -417,15 +420,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; } @@ -441,6 +458,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; @@ -493,7 +513,7 @@ } opt->dst_addr = sp->sa_addr.pptp; - sk->sk_state = PPPOX_CONNECTED; + sk->sk_state |= PPPOX_CONNECTED; end: release_sock(sk); @@ -506,7 +526,9 @@ int len = sizeof(struct sockaddr_pppox); struct sockaddr_pppox sp; - sp.sa_family = AF_PPPOX; + memset(&sp.sa_addr, 0, sizeof(sp.sa_addr)); + + sp.sa_family = AF_PPPOX; sp.sa_protocol = PX_PROTO_PPTP; sp.sa_addr.pptp = pppox_sk(sock->sk)->proto.pptp.src_addr; --- linux-3.13.0.orig/drivers/net/rionet.c +++ linux-3.13.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-3.13.0.orig/drivers/net/slip/slhc.c +++ linux-3.13.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-3.13.0.orig/drivers/net/slip/slip.c +++ linux-3.13.0/drivers/net/slip/slip.c @@ -83,6 +83,7 @@ #include #include #include +#include #include "slip.h" #ifdef CONFIG_INET #include @@ -163,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); @@ -416,34 +417,44 @@ #endif } -/* - * Called by the driver when there's room for more data. If we have - * more packets to send, we send them here. - */ -static void slip_write_wakeup(struct tty_struct *tty) +/* Write out any remaining transmit buffer. Scheduled when tty is writable */ +static void slip_transmit(struct work_struct *work) { + struct slip *sl = container_of(work, struct slip, tx_work); int actual; - struct slip *sl = tty->disc_data; + spin_lock_bh(&sl->lock); /* First make sure we're connected. */ - if (!sl || sl->magic != SLIP_MAGIC || !netif_running(sl->dev)) + if (!sl->tty || sl->magic != SLIP_MAGIC || !netif_running(sl->dev)) { + spin_unlock_bh(&sl->lock); return; + } - spin_lock(&sl->lock); if (sl->xleft <= 0) { /* Now serial buffer is almost free & we can start * transmission of another packet */ sl->dev->stats.tx_packets++; - clear_bit(TTY_DO_WRITE_WAKEUP, &tty->flags); - spin_unlock(&sl->lock); + clear_bit(TTY_DO_WRITE_WAKEUP, &sl->tty->flags); + spin_unlock_bh(&sl->lock); sl_unlock(sl); return; } - actual = tty->ops->write(tty, sl->xhead, sl->xleft); + actual = sl->tty->ops->write(sl->tty, sl->xhead, sl->xleft); sl->xleft -= actual; sl->xhead += actual; - spin_unlock(&sl->lock); + spin_unlock_bh(&sl->lock); +} + +/* + * Called by the driver when there's room for more data. + * Schedule the transmit. + */ +static void slip_write_wakeup(struct tty_struct *tty) +{ + struct slip *sl = tty->disc_data; + + schedule_work(&sl->tx_work); } static void sl_tx_timeout(struct net_device *dev) @@ -749,6 +760,7 @@ sl->magic = SLIP_MAGIC; sl->dev = dev; spin_lock_init(&sl->lock); + INIT_WORK(&sl->tx_work, slip_transmit); sl->mode = SL_MODE_DEFAULT; #ifdef CONFIG_SLIP_SMART /* initialize timer_list struct */ @@ -872,8 +884,12 @@ if (!sl || sl->magic != SLIP_MAGIC || sl->tty != tty) return; + spin_lock_bh(&sl->lock); tty->disc_data = NULL; sl->tty = NULL; + spin_unlock_bh(&sl->lock); + + flush_work(&sl->tx_work); /* VSV = very important to remove timers */ #ifdef CONFIG_SLIP_SMART --- linux-3.13.0.orig/drivers/net/slip/slip.h +++ linux-3.13.0/drivers/net/slip/slip.h @@ -53,6 +53,7 @@ struct tty_struct *tty; /* ptr to TTY structure */ struct net_device *dev; /* easy for intr handling */ spinlock_t lock; + struct work_struct tx_work; /* Flushes transmit buffer */ #ifdef SL_INCLUDE_CSLIP struct slcompress *slcomp; /* for header compression */ --- linux-3.13.0.orig/drivers/net/team/team.c +++ linux-3.13.0/drivers/net/team/team.c @@ -42,9 +42,7 @@ static struct team_port *team_port_get_rcu(const struct net_device *dev) { - struct team_port *port = rcu_dereference(dev->rx_handler_data); - - return team_port_exists(dev) ? port : NULL; + return rcu_dereference(dev->rx_handler_data); } static struct team_port *team_port_get_rtnl(const struct net_device *dev) @@ -629,6 +627,7 @@ static void team_notify_peers_work(struct work_struct *work) { struct team *team; + int val; team = container_of(work, struct team, notify_peers.dw.work); @@ -636,9 +635,14 @@ schedule_delayed_work(&team->notify_peers.dw, 0); return; } + val = atomic_dec_if_positive(&team->notify_peers.count_pending); + if (val < 0) { + rtnl_unlock(); + return; + } call_netdevice_notifiers(NETDEV_NOTIFY_PEERS, team->dev); rtnl_unlock(); - if (!atomic_dec_and_test(&team->notify_peers.count_pending)) + if (val) schedule_delayed_work(&team->notify_peers.dw, msecs_to_jiffies(team->notify_peers.interval)); } @@ -647,7 +651,7 @@ { if (!team->notify_peers.count || !netif_running(team->dev)) return; - atomic_set(&team->notify_peers.count_pending, team->notify_peers.count); + atomic_add(team->notify_peers.count, &team->notify_peers.count_pending); schedule_delayed_work(&team->notify_peers.dw, 0); } @@ -669,6 +673,7 @@ static void team_mcast_rejoin_work(struct work_struct *work) { struct team *team; + int val; team = container_of(work, struct team, mcast_rejoin.dw.work); @@ -676,9 +681,14 @@ schedule_delayed_work(&team->mcast_rejoin.dw, 0); return; } + val = atomic_dec_if_positive(&team->mcast_rejoin.count_pending); + if (val < 0) { + rtnl_unlock(); + return; + } call_netdevice_notifiers(NETDEV_RESEND_IGMP, team->dev); rtnl_unlock(); - if (!atomic_dec_and_test(&team->mcast_rejoin.count_pending)) + if (val) schedule_delayed_work(&team->mcast_rejoin.dw, msecs_to_jiffies(team->mcast_rejoin.interval)); } @@ -687,7 +697,7 @@ { if (!team->mcast_rejoin.count || !netif_running(team->dev)) return; - atomic_set(&team->mcast_rejoin.count_pending, team->mcast_rejoin.count); + atomic_add(team->mcast_rejoin.count, &team->mcast_rejoin.count_pending); schedule_delayed_work(&team->mcast_rejoin.dw, 0); } @@ -1170,6 +1180,9 @@ goto err_set_upper_link; } + if (!(dev->features & NETIF_F_LRO)) + dev_disable_lro(port_dev); + err = netdev_rx_handler_register(port_dev, team_handle_frame, port); if (err) { @@ -1648,7 +1661,7 @@ } static u16 team_select_queue(struct net_device *dev, struct sk_buff *skb, - void *accel_priv) + void *accel_priv, select_queue_fallback_t fallback) { /* * This helper function exists to help dev_pick_tx get the correct @@ -1713,11 +1726,11 @@ if (dev->type == ARPHRD_ETHER && !is_valid_ether_addr(addr->sa_data)) return -EADDRNOTAVAIL; memcpy(dev->dev_addr, addr->sa_data, dev->addr_len); - 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) if (team->ops.port_change_dev_addr) team->ops.port_change_dev_addr(team, port); - rcu_read_unlock(); + mutex_unlock(&team->lock); return 0; } @@ -1732,6 +1745,7 @@ * to traverse list in reverse under rcu_read_lock */ mutex_lock(&team->lock); + team->port_mtu_change_allowed = true; list_for_each_entry(port, &team->port_list, list) { err = dev_set_mtu(port->dev, new_mtu); if (err) { @@ -1740,6 +1754,7 @@ goto unwind; } } + team->port_mtu_change_allowed = false; mutex_unlock(&team->lock); dev->mtu = new_mtu; @@ -1749,6 +1764,7 @@ unwind: list_for_each_entry_continue_reverse(port, &team->port_list, list) dev_set_mtu(port->dev, dev->mtu); + team->port_mtu_change_allowed = false; mutex_unlock(&team->lock); return err; @@ -1767,13 +1783,13 @@ for_each_possible_cpu(i) { p = per_cpu_ptr(team->pcpu_stats, i); do { - start = u64_stats_fetch_begin_bh(&p->syncp); + start = u64_stats_fetch_begin_irq(&p->syncp); rx_packets = p->rx_packets; rx_bytes = p->rx_bytes; rx_multicast = p->rx_multicast; tx_packets = p->tx_packets; tx_bytes = p->tx_bytes; - } while (u64_stats_fetch_retry_bh(&p->syncp, start)); + } while (u64_stats_fetch_retry_irq(&p->syncp, start)); stats->rx_packets += rx_packets; stats->rx_bytes += rx_bytes; @@ -1825,10 +1841,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; } @@ -2853,7 +2869,9 @@ break; case NETDEV_CHANGEMTU: /* Forbid to change mtu of underlaying device */ - return NOTIFY_BAD; + if (!port->team->port_mtu_change_allowed) + return NOTIFY_BAD; + break; case NETDEV_PRE_TYPE_CHANGE: /* Forbid to change type of underlaying device */ return NOTIFY_BAD; --- linux-3.13.0.orig/drivers/net/team/team_mode_loadbalance.c +++ linux-3.13.0/drivers/net/team/team_mode_loadbalance.c @@ -432,9 +432,9 @@ struct lb_stats tmp; do { - start = u64_stats_fetch_begin_bh(syncp); + start = u64_stats_fetch_begin_irq(syncp); tmp.tx_bytes = cpu_stats->tx_bytes; - } while (u64_stats_fetch_retry_bh(syncp, start)); + } while (u64_stats_fetch_retry_irq(syncp, start)); acc_stats->tx_bytes += tmp.tx_bytes; } --- linux-3.13.0.orig/drivers/net/tun.c +++ linux-3.13.0/drivers/net/tun.c @@ -65,6 +65,7 @@ #include #include #include +#include #include #include #include @@ -349,7 +350,7 @@ * hope the rxq no. may help here. */ static u16 tun_select_queue(struct net_device *dev, struct sk_buff *skb, - void *accel_priv) + void *accel_priv, select_queue_fallback_t fallback) { struct tun_struct *tun = netdev_priv(dev); struct tun_flow_entry *e; @@ -359,7 +360,7 @@ rcu_read_lock(); numqueues = ACCESS_ONCE(tun->numqueues); - txq = skb_get_rxhash(skb); + txq = skb_get_hash(skb); if (txq) { e = tun_flow_find(&tun->flows[tun_hashfn(txq)], txq); if (e) @@ -1104,6 +1105,8 @@ break; } + skb_reset_network_header(skb); + if (gso.gso_type != VIRTIO_NET_HDR_GSO_NONE) { pr_debug("GSO!\n"); switch (gso.gso_type & ~VIRTIO_NET_HDR_GSO_ECN) { @@ -1115,6 +1118,8 @@ break; case VIRTIO_NET_HDR_GSO_UDP: skb_shinfo(skb)->gso_type = SKB_GSO_UDP; + if (skb->protocol == htons(ETH_P_IPV6)) + ipv6_proxy_select_ident(skb); break; default: tun->dev->stats.rx_frame_errors++; @@ -1144,10 +1149,9 @@ skb_shinfo(skb)->tx_flags |= SKBTX_SHARED_FRAG; } - skb_reset_network_header(skb); skb_probe_transport_header(skb, 0); - rxhash = skb_get_rxhash(skb); + rxhash = skb_get_hash(skb); netif_rx_ni(skb); tun->dev->stats.rx_packets++; @@ -1186,6 +1190,10 @@ struct tun_pi pi = { 0, skb->protocol }; ssize_t total = 0; int vlan_offset = 0, copied; + int vlan_hlen = 0; + + if (vlan_tx_tag_present(skb)) + vlan_hlen = VLAN_HLEN; if (!(tun->flags & TUN_NO_PI)) { if ((len -= sizeof(pi)) < 0) @@ -1237,7 +1245,8 @@ if (skb->ip_summed == CHECKSUM_PARTIAL) { gso.flags = VIRTIO_NET_HDR_F_NEEDS_CSUM; - gso.csum_start = skb_checksum_start_offset(skb); + gso.csum_start = skb_checksum_start_offset(skb) + + vlan_hlen; gso.csum_offset = skb->csum_offset; } else if (skb->ip_summed == CHECKSUM_UNNECESSARY) { gso.flags = VIRTIO_NET_HDR_F_DATA_VALID; @@ -1250,10 +1259,9 @@ } copied = total; - total += skb->len; - if (!vlan_tx_tag_present(skb)) { - len = min_t(int, skb->len, len); - } else { + len = min_t(int, skb->len + vlan_hlen, len); + total += skb->len + vlan_hlen; + if (vlan_hlen) { int copy, ret; struct { __be16 h_vlan_proto; @@ -1264,8 +1272,6 @@ veth.h_vlan_TCI = htons(vlan_tx_tag_get(skb)); vlan_offset = offsetof(struct vlan_ethhdr, h_vlan_proto); - len = min_t(int, skb->len + VLAN_HLEN, len); - total += VLAN_HLEN; copy = min_t(int, vlan_offset, len); ret = skb_copy_datagram_const_iovec(skb, 0, iv, copied, copy); @@ -1651,7 +1657,9 @@ TUN_USER_FEATURES | NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_HW_VLAN_STAG_TX; dev->features = dev->hw_features; - dev->vlan_features = dev->features; + dev->vlan_features = dev->features & + ~(NETIF_F_HW_VLAN_CTAG_TX | + NETIF_F_HW_VLAN_STAG_TX); INIT_LIST_HEAD(&tun->disabled); err = tun_attach(tun, file, false); --- linux-3.13.0.orig/drivers/net/usb/asix_devices.c +++ linux-3.13.0/drivers/net/usb/asix_devices.c @@ -466,19 +466,7 @@ return ret; } - ret = asix_sw_reset(dev, AX_SWRESET_IPPD | AX_SWRESET_PRL); - if (ret < 0) - return ret; - - msleep(150); - - ret = asix_sw_reset(dev, AX_SWRESET_CLEAR); - if (ret < 0) - return ret; - - msleep(150); - - ret = asix_sw_reset(dev, embd_phy ? AX_SWRESET_IPRL : AX_SWRESET_PRTE); + ax88772_reset(dev); /* Read PHYID register *AFTER* the PHY was reset properly */ phyid = asix_get_phyid(dev); @@ -891,7 +879,7 @@ .unbind = ax88772_unbind, .status = asix_status, .link_reset = ax88772_link_reset, - .reset = ax88772_reset, + .reset = ax88772_link_reset, .flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_LINK_INTR | FLAG_MULTI_PACKET, .rx_fixup = asix_rx_fixup_common, .tx_fixup = asix_tx_fixup, @@ -918,7 +906,8 @@ .status = asix_status, .link_reset = ax88178_link_reset, .reset = ax88178_reset, - .flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_LINK_INTR, + .flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_LINK_INTR | + FLAG_MULTI_PACKET, .rx_fixup = asix_rx_fixup_common, .tx_fixup = asix_tx_fixup, }; --- linux-3.13.0.orig/drivers/net/usb/ax88179_178a.c +++ linux-3.13.0/drivers/net/usb/ax88179_178a.c @@ -697,6 +697,7 @@ { struct usbnet *dev = netdev_priv(net); struct sockaddr *addr = p; + int ret; if (netif_running(net)) return -EBUSY; @@ -706,8 +707,12 @@ memcpy(net->dev_addr, addr->sa_data, ETH_ALEN); /* Set the MAC address */ - return ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_NODE_ID, ETH_ALEN, + ret = ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_NODE_ID, ETH_ALEN, ETH_ALEN, net->dev_addr); + if (ret < 0) + return ret; + + return 0; } static const struct net_device_ops ax88179_netdev_ops = { @@ -1030,20 +1035,12 @@ dev->mii.phy_id = 0x03; dev->mii.supports_gmii = 1; - if (usb_device_no_sg_constraint(dev->udev)) - dev->can_dma_sg = 1; - dev->net->features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM | NETIF_F_RXCSUM; dev->net->hw_features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM | NETIF_F_RXCSUM; - if (dev->can_dma_sg) { - dev->net->features |= NETIF_F_SG | NETIF_F_TSO; - dev->net->hw_features |= NETIF_F_SG | NETIF_F_TSO; - } - /* Enable checksum offload */ *tmp = AX_RXCOE_IP | AX_RXCOE_TCP | AX_RXCOE_UDP | AX_RXCOE_TCPV6 | AX_RXCOE_UDPV6; @@ -1119,6 +1116,10 @@ u16 hdr_off; u32 *pkt_hdr; + /* This check is no longer done by usbnet */ + if (skb->len < dev->net->hard_header_len) + return 0; + skb_trim(skb, skb->len - 4); memcpy(&rx_hdr, skb_tail_pointer(skb), 4); le32_to_cpus(&rx_hdr); @@ -1418,6 +1419,19 @@ .tx_fixup = ax88179_tx_fixup, }; +static const struct driver_info lenovo_info = { + .description = "Lenovo OneLinkDock Gigabit LAN", + .bind = ax88179_bind, + .unbind = ax88179_unbind, + .status = ax88179_status, + .link_reset = ax88179_link_reset, + .reset = ax88179_reset, + .stop = ax88179_stop, + .flags = FLAG_ETHER | FLAG_FRAMING_AX, + .rx_fixup = ax88179_rx_fixup, + .tx_fixup = ax88179_tx_fixup, +}; + static const struct usb_device_id products[] = { { /* ASIX AX88179 10/100/1000 */ @@ -1435,6 +1449,10 @@ /* Samsung USB Ethernet Adapter */ USB_DEVICE(0x04e8, 0xa100), .driver_info = (unsigned long)&samsung_info, +}, { + /* Lenovo OneLinkDock Gigabit LAN */ + USB_DEVICE(0x17ef, 0x304b), + .driver_info = (unsigned long)&lenovo_info, }, { }, }; --- linux-3.13.0.orig/drivers/net/usb/cdc_mbim.c +++ linux-3.13.0/drivers/net/usb/cdc_mbim.c @@ -120,6 +120,16 @@ cdc_ncm_unbind(dev, intf); } +/* verify that the ethernet protocol is IPv4 or IPv6 */ +static bool is_ip_proto(__be16 proto) +{ + switch (proto) { + case htons(ETH_P_IP): + case htons(ETH_P_IPV6): + return true; + } + return false; +} static struct sk_buff *cdc_mbim_tx_fixup(struct usbnet *dev, struct sk_buff *skb, gfp_t flags) { @@ -128,6 +138,7 @@ struct cdc_ncm_ctx *ctx = info->ctx; __le32 sign = cpu_to_le32(USB_CDC_MBIM_NDP16_IPS_SIGN); u16 tci = 0; + bool is_ip; u8 *c; if (!ctx) @@ -137,25 +148,32 @@ if (skb->len <= ETH_HLEN) goto error; + /* Some applications using e.g. packet sockets will + * bypass the VLAN acceleration and create tagged + * ethernet frames directly. We primarily look for + * the accelerated out-of-band tag, but fall back if + * required + */ + skb_reset_mac_header(skb); + if (vlan_get_tag(skb, &tci) < 0 && skb->len > VLAN_ETH_HLEN && + __vlan_get_tag(skb, &tci) == 0) { + is_ip = is_ip_proto(vlan_eth_hdr(skb)->h_vlan_encapsulated_proto); + skb_pull(skb, VLAN_ETH_HLEN); + } else { + is_ip = is_ip_proto(eth_hdr(skb)->h_proto); + skb_pull(skb, ETH_HLEN); + } + /* mapping VLANs to MBIM sessions: * no tag => IPS session <0> * 1 - 255 => IPS session * 256 - 511 => DSS session * 512 - 4095 => unsupported, drop */ - vlan_get_tag(skb, &tci); - switch (tci & 0x0f00) { case 0x0000: /* VLAN ID 0 - 255 */ - /* verify that datagram is IPv4 or IPv6 */ - skb_reset_mac_header(skb); - switch (eth_hdr(skb)->h_proto) { - case htons(ETH_P_IP): - case htons(ETH_P_IPV6): - break; - default: + if (!is_ip) goto error; - } c = (u8 *)&sign; c[3] = tci; break; @@ -169,7 +187,6 @@ "unsupported tci=0x%04x\n", tci); goto error; } - skb_pull(skb, ETH_HLEN); } spin_lock_bh(&ctx->mtx); @@ -204,17 +221,23 @@ return; /* need to send the NA on the VLAN dev, if any */ - if (tci) + rcu_read_lock(); + if (tci) { netdev = __vlan_find_dev_deep(dev->net, htons(ETH_P_8021Q), tci); - else + if (!netdev) { + rcu_read_unlock(); + return; + } + } else { netdev = dev->net; - if (!netdev) - return; + } + dev_hold(netdev); + rcu_read_unlock(); in6_dev = in6_dev_get(netdev); if (!in6_dev) - return; + goto out; is_router = !!in6_dev->cnf.forwarding; in6_dev_put(in6_dev); @@ -224,6 +247,8 @@ true /* solicited */, false /* override */, true /* inc_opt */); +out: + dev_put(netdev); } static bool is_neigh_solicit(u8 *buf, size_t len) --- linux-3.13.0.orig/drivers/net/usb/cdc_ncm.c +++ linux-3.13.0/drivers/net/usb/cdc_ncm.c @@ -69,7 +69,6 @@ static int cdc_ncm_setup(struct usbnet *dev) { struct cdc_ncm_ctx *ctx = (struct cdc_ncm_ctx *)dev->data[0]; - struct usb_cdc_ncm_ntb_parameters ncm_parm; u32 val; u8 flags; u8 iface_no; @@ -83,22 +82,22 @@ err = usbnet_read_cmd(dev, USB_CDC_GET_NTB_PARAMETERS, USB_TYPE_CLASS | USB_DIR_IN |USB_RECIP_INTERFACE, - 0, iface_no, &ncm_parm, - sizeof(ncm_parm)); + 0, iface_no, &ctx->ncm_parm, + sizeof(ctx->ncm_parm)); if (err < 0) { dev_err(&dev->intf->dev, "failed GET_NTB_PARAMETERS\n"); return err; /* GET_NTB_PARAMETERS is required */ } /* read correct set of parameters according to device mode */ - ctx->rx_max = le32_to_cpu(ncm_parm.dwNtbInMaxSize); - ctx->tx_max = le32_to_cpu(ncm_parm.dwNtbOutMaxSize); - ctx->tx_remainder = le16_to_cpu(ncm_parm.wNdpOutPayloadRemainder); - ctx->tx_modulus = le16_to_cpu(ncm_parm.wNdpOutDivisor); - ctx->tx_ndp_modulus = le16_to_cpu(ncm_parm.wNdpOutAlignment); + ctx->rx_max = le32_to_cpu(ctx->ncm_parm.dwNtbInMaxSize); + ctx->tx_max = le32_to_cpu(ctx->ncm_parm.dwNtbOutMaxSize); + ctx->tx_remainder = le16_to_cpu(ctx->ncm_parm.wNdpOutPayloadRemainder); + ctx->tx_modulus = le16_to_cpu(ctx->ncm_parm.wNdpOutDivisor); + ctx->tx_ndp_modulus = le16_to_cpu(ctx->ncm_parm.wNdpOutAlignment); /* devices prior to NCM Errata shall set this field to zero */ - ctx->tx_max_datagrams = le16_to_cpu(ncm_parm.wNtbOutMaxDatagrams); - ntb_fmt_supported = le16_to_cpu(ncm_parm.bmNtbFormatsSupported); + ctx->tx_max_datagrams = le16_to_cpu(ctx->ncm_parm.wNtbOutMaxDatagrams); + ntb_fmt_supported = le16_to_cpu(ctx->ncm_parm.bmNtbFormatsSupported); /* there are some minor differences in NCM and MBIM defaults */ if (cdc_ncm_comm_intf_is_mbim(ctx->control->cur_altsetting)) { @@ -147,7 +146,7 @@ } /* inform device about NTB input size changes */ - if (ctx->rx_max != le32_to_cpu(ncm_parm.dwNtbInMaxSize)) { + if (ctx->rx_max != le32_to_cpu(ctx->ncm_parm.dwNtbInMaxSize)) { __le32 dwNtbInMaxSize = cpu_to_le32(ctx->rx_max); err = usbnet_write_cmd(dev, USB_CDC_SET_NTB_INPUT_SIZE, @@ -163,14 +162,6 @@ dev_dbg(&dev->intf->dev, "Using default maximum transmit length=%d\n", CDC_NCM_NTB_MAX_SIZE_TX); ctx->tx_max = CDC_NCM_NTB_MAX_SIZE_TX; - - /* Adding a pad byte here simplifies the handling in - * cdc_ncm_fill_tx_frame, by making tx_max always - * represent the real skb max size. - */ - if (ctx->tx_max % usb_maxpacket(dev->udev, dev->out, 1) == 0) - ctx->tx_max++; - } /* @@ -440,6 +431,10 @@ goto error2; } + /* initialize data interface */ + if (cdc_ncm_setup(dev)) + goto error2; + /* configure data interface */ temp = usb_set_interface(dev->udev, iface_no, data_altsetting); if (temp) { @@ -454,12 +449,6 @@ goto error2; } - /* initialize data interface */ - if (cdc_ncm_setup(dev)) { - dev_dbg(&intf->dev, "cdc_ncm_setup() failed\n"); - goto error2; - } - usb_set_intfdata(ctx->data, dev); usb_set_intfdata(ctx->control, dev); @@ -476,6 +465,15 @@ dev->hard_mtu = ctx->tx_max; dev->rx_urb_size = ctx->rx_max; + /* cdc_ncm_setup will override dwNtbOutMaxSize if it is + * outside the sane range. Adding a pad byte here if necessary + * simplifies the handling in cdc_ncm_fill_tx_frame, making + * tx_max always represent the real skb max size. + */ + if (ctx->tx_max != le32_to_cpu(ctx->ncm_parm.dwNtbOutMaxSize) && + ctx->tx_max % usb_maxpacket(dev->udev, dev->out, 1) == 0) + ctx->tx_max++; + return 0; error2: @@ -563,24 +561,12 @@ static int cdc_ncm_bind(struct usbnet *dev, struct usb_interface *intf) { - int ret; - /* MBIM backwards compatible function? */ cdc_ncm_select_altsetting(dev, intf); if (cdc_ncm_comm_intf_is_mbim(intf->cur_altsetting)) return -ENODEV; - /* NCM data altsetting is always 1 */ - ret = cdc_ncm_bind_common(dev, intf, 1); - - /* - * 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, 1); } static void cdc_ncm_align_tail(struct sk_buff *skb, size_t modulus, size_t remainder, size_t max) @@ -771,7 +757,7 @@ skb_out->len > CDC_NCM_MIN_TX_PKT) memset(skb_put(skb_out, ctx->tx_max - skb_out->len), 0, ctx->tx_max - skb_out->len); - else if ((skb_out->len % dev->maxpacket) == 0) + else if (skb_out->len < ctx->tx_max && (skb_out->len % dev->maxpacket) == 0) *skb_put(skb_out, 1) = 0; /* force short packet */ /* set final frame length */ @@ -1109,7 +1095,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, .check_connect = cdc_ncm_check_connect, @@ -1123,7 +1110,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, .check_connect = cdc_ncm_check_connect, @@ -1137,7 +1124,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, .check_connect = cdc_ncm_check_connect, --- linux-3.13.0.orig/drivers/net/usb/cx82310_eth.c +++ linux-3.13.0/drivers/net/usb/cx82310_eth.c @@ -302,9 +302,18 @@ .tx_fixup = cx82310_tx_fixup, }; +#define USB_DEVICE_CLASS(vend, prod, cl, sc, pr) \ + .match_flags = USB_DEVICE_ID_MATCH_DEVICE | \ + USB_DEVICE_ID_MATCH_DEV_INFO, \ + .idVendor = (vend), \ + .idProduct = (prod), \ + .bDeviceClass = (cl), \ + .bDeviceSubClass = (sc), \ + .bDeviceProtocol = (pr) + static const struct usb_device_id products[] = { { - USB_DEVICE_AND_INTERFACE_INFO(0x0572, 0xcb01, 0xff, 0, 0), + USB_DEVICE_CLASS(0x0572, 0xcb01, 0xff, 0, 0), .driver_info = (unsigned long) &cx82310_info }, { }, --- linux-3.13.0.orig/drivers/net/usb/gl620a.c +++ linux-3.13.0/drivers/net/usb/gl620a.c @@ -86,6 +86,10 @@ u32 size; u32 count; + /* This check is no longer done by usbnet */ + if (skb->len < dev->net->hard_header_len) + return 0; + header = (struct gl_header *) skb->data; // get the packet count of the received skb --- linux-3.13.0.orig/drivers/net/usb/huawei_cdc_ncm.c +++ linux-3.13.0/drivers/net/usb/huawei_cdc_ncm.c @@ -84,12 +84,13 @@ ctx = drvstate->ctx; if (usbnet_dev->status) - /* CDC-WMC r1.1 requires wMaxCommand to be "at least 256 - * decimal (0x100)" + /* The wMaxCommand buffer must be big enough to hold + * any message from the modem. Experience has shown + * that some replies are more than 256 bytes long */ subdriver = usb_cdc_wdm_register(ctx->control, &usbnet_dev->status->desc, - 256, /* wMaxCommand */ + 1024, /* wMaxCommand */ huawei_cdc_ncm_wdm_manage_power); if (IS_ERR(subdriver)) { ret = PTR_ERR(subdriver); @@ -206,6 +207,9 @@ { USB_VENDOR_AND_INTERFACE_INFO(0x12d1, 0xff, 0x02, 0x76), .driver_info = (unsigned long)&huawei_cdc_ncm_info, }, + { USB_VENDOR_AND_INTERFACE_INFO(0x12d1, 0xff, 0x03, 0x16), + .driver_info = (unsigned long)&huawei_cdc_ncm_info, + }, /* Terminating entry */ { --- linux-3.13.0.orig/drivers/net/usb/mcs7830.c +++ linux-3.13.0/drivers/net/usb/mcs7830.c @@ -528,8 +528,9 @@ { u8 status; - if (skb->len == 0) { - dev_err(&dev->udev->dev, "unexpected empty rx frame\n"); + /* This check is no longer done by usbnet */ + if (skb->len < dev->net->hard_header_len) { + dev_err(&dev->udev->dev, "unexpected tiny rx frame\n"); return 0; } --- linux-3.13.0.orig/drivers/net/usb/net1080.c +++ linux-3.13.0/drivers/net/usb/net1080.c @@ -366,6 +366,10 @@ struct nc_trailer *trailer; u16 hdr_len, packet_len; + /* This check is no longer done by usbnet */ + if (skb->len < dev->net->hard_header_len) + return 0; + if (!(skb->len & 0x01)) { netdev_dbg(dev->net, "rx framesize %d range %d..%d mtu %d\n", skb->len, dev->net->hard_header_len, dev->hard_mtu, --- linux-3.13.0.orig/drivers/net/usb/plusb.c +++ linux-3.13.0/drivers/net/usb/plusb.c @@ -136,6 +136,11 @@ }, { USB_DEVICE(0x050d, 0x258a), /* Belkin F5U258/F5U279 (PL-25A1) */ .driver_info = (unsigned long) &prolific_info, +}, { + USB_DEVICE(0x3923, 0x7825), /* National Instruments USB + * Host-to-Host Cable + */ + .driver_info = (unsigned long) &prolific_info, }, { }, // END --- linux-3.13.0.orig/drivers/net/usb/qmi_wwan.c +++ linux-3.13.0/drivers/net/usb/qmi_wwan.c @@ -80,10 +80,10 @@ { __be16 proto; - /* usbnet rx_complete guarantees that skb->len is at least - * hard_header_len, so we can inspect the dest address without - * checking skb->len - */ + /* This check is no longer done by usbnet */ + if (skb->len < dev->net->hard_header_len) + return 0; + switch (skb->data[0] & 0xf0) { case 0x40: proto = htons(ETH_P_IP); @@ -528,9 +528,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)}, @@ -660,8 +665,25 @@ {QMI_FIXED_INTF(0x05c6, 0x9084, 4)}, {QMI_FIXED_INTF(0x05c6, 0x920d, 0)}, {QMI_FIXED_INTF(0x05c6, 0x920d, 5)}, + {QMI_FIXED_INTF(0x0846, 0x68a2, 8)}, {QMI_FIXED_INTF(0x12d1, 0x140c, 1)}, /* Huawei E173 */ {QMI_FIXED_INTF(0x12d1, 0x14ac, 1)}, /* Huawei E1820 */ + {QMI_FIXED_INTF(0x16d8, 0x6003, 0)}, /* CMOTech 6003 */ + {QMI_FIXED_INTF(0x16d8, 0x6007, 0)}, /* CMOTech CHE-628S */ + {QMI_FIXED_INTF(0x16d8, 0x6008, 0)}, /* CMOTech CMU-301 */ + {QMI_FIXED_INTF(0x16d8, 0x6280, 0)}, /* CMOTech CHU-628 */ + {QMI_FIXED_INTF(0x16d8, 0x7001, 0)}, /* CMOTech CHU-720S */ + {QMI_FIXED_INTF(0x16d8, 0x7002, 0)}, /* CMOTech 7002 */ + {QMI_FIXED_INTF(0x16d8, 0x7003, 4)}, /* CMOTech CHU-629K */ + {QMI_FIXED_INTF(0x16d8, 0x7004, 3)}, /* CMOTech 7004 */ + {QMI_FIXED_INTF(0x16d8, 0x7006, 5)}, /* CMOTech CGU-629 */ + {QMI_FIXED_INTF(0x16d8, 0x700a, 4)}, /* CMOTech CHU-629S */ + {QMI_FIXED_INTF(0x16d8, 0x7211, 0)}, /* CMOTech CHU-720I */ + {QMI_FIXED_INTF(0x16d8, 0x7212, 0)}, /* CMOTech 7212 */ + {QMI_FIXED_INTF(0x16d8, 0x7213, 0)}, /* CMOTech 7213 */ + {QMI_FIXED_INTF(0x16d8, 0x7251, 1)}, /* CMOTech 7251 */ + {QMI_FIXED_INTF(0x16d8, 0x7252, 1)}, /* CMOTech 7252 */ + {QMI_FIXED_INTF(0x16d8, 0x7253, 1)}, /* CMOTech 7253 */ {QMI_FIXED_INTF(0x19d2, 0x0002, 1)}, {QMI_FIXED_INTF(0x19d2, 0x0012, 1)}, {QMI_FIXED_INTF(0x19d2, 0x0017, 3)}, @@ -717,19 +739,39 @@ {QMI_FIXED_INTF(0x19d2, 0x1424, 2)}, {QMI_FIXED_INTF(0x19d2, 0x1425, 2)}, {QMI_FIXED_INTF(0x19d2, 0x1426, 2)}, /* ZTE MF91 */ + {QMI_FIXED_INTF(0x19d2, 0x1428, 2)}, /* Telewell TW-LTE 4G v2 */ {QMI_FIXED_INTF(0x19d2, 0x2002, 4)}, /* ZTE (Vodafone) K3765-Z */ {QMI_FIXED_INTF(0x0f3d, 0x68a2, 8)}, /* Sierra Wireless MC7700 */ {QMI_FIXED_INTF(0x114f, 0x68a2, 8)}, /* Sierra Wireless MC7750 */ {QMI_FIXED_INTF(0x1199, 0x68a2, 8)}, /* Sierra Wireless MC7710 in QMI mode */ {QMI_FIXED_INTF(0x1199, 0x68a2, 19)}, /* Sierra Wireless MC7710 in QMI mode */ + {QMI_FIXED_INTF(0x1199, 0x68c0, 8)}, /* Sierra Wireless MC73xx */ + {QMI_FIXED_INTF(0x1199, 0x68c0, 10)}, /* Sierra Wireless MC73xx */ + {QMI_FIXED_INTF(0x1199, 0x68c0, 11)}, /* Sierra Wireless MC73xx */ {QMI_FIXED_INTF(0x1199, 0x901c, 8)}, /* Sierra Wireless EM7700 */ + {QMI_FIXED_INTF(0x1199, 0x901f, 8)}, /* Sierra Wireless EM7355 */ + {QMI_FIXED_INTF(0x1199, 0x9041, 8)}, /* Sierra Wireless MC7305/MC7355 */ + {QMI_FIXED_INTF(0x1199, 0x9051, 8)}, /* Netgear AirCard 340U */ + {QMI_FIXED_INTF(0x1199, 0x9057, 8)}, {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(0x0b3c, 0xc005, 6)}, /* Olivetti Olicard 200 */ + {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 */ + {QMI_FIXED_INTF(0x0b3c, 0xc004, 6)}, /* Olivetti Olicard 155 */ + {QMI_FIXED_INTF(0x0b3c, 0xc005, 6)}, /* Olivetti Olicard 200 */ + {QMI_FIXED_INTF(0x0b3c, 0xc00a, 6)}, /* Olivetti Olicard 160 */ + {QMI_FIXED_INTF(0x0b3c, 0xc00b, 4)}, /* Olivetti Olicard 500 */ {QMI_FIXED_INTF(0x1e2d, 0x0060, 4)}, /* Cinterion PLxx */ + {QMI_FIXED_INTF(0x413c, 0x81a2, 8)}, /* Dell Wireless 5806 Gobi(TM) 4G LTE Mobile Broadband Card */ + {QMI_FIXED_INTF(0x413c, 0x81a3, 8)}, /* Dell Wireless 5570 HSPA+ (42Mbps) Mobile Broadband Card */ + {QMI_FIXED_INTF(0x413c, 0x81a4, 8)}, /* Dell Wireless 5570e HSPA+ (42Mbps) Mobile Broadband Card */ + {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 */ /* 4. Gobi 1000 devices */ {QMI_GOBI1K_DEVICE(0x05c6, 0x9212)}, /* Acer Gobi Modem Device */ --- linux-3.13.0.orig/drivers/net/usb/rndis_host.c +++ linux-3.13.0/drivers/net/usb/rndis_host.c @@ -494,6 +494,10 @@ */ int rndis_rx_fixup(struct usbnet *dev, struct sk_buff *skb) { + /* This check is no longer done by usbnet */ + if (skb->len < dev->net->hard_header_len) + return 0; + /* peripheral may have batched packets to us... */ while (likely(skb->len)) { struct rndis_data_hdr *hdr = (void *)skb->data; --- linux-3.13.0.orig/drivers/net/usb/smsc75xx.c +++ linux-3.13.0/drivers/net/usb/smsc75xx.c @@ -2108,6 +2108,10 @@ static int smsc75xx_rx_fixup(struct usbnet *dev, struct sk_buff *skb) { + /* This check is no longer done by usbnet */ + if (skb->len < dev->net->hard_header_len) + return 0; + while (skb->len > 0) { u32 rx_cmd_a, rx_cmd_b, align_count, size; struct sk_buff *ax_skb; --- linux-3.13.0.orig/drivers/net/usb/smsc95xx.c +++ linux-3.13.0/drivers/net/usb/smsc95xx.c @@ -1725,6 +1725,10 @@ static int smsc95xx_rx_fixup(struct usbnet *dev, struct sk_buff *skb) { + /* This check is no longer done by usbnet */ + if (skb->len < dev->net->hard_header_len) + return 0; + while (skb->len > 0) { u32 header, align_count; struct sk_buff *ax_skb; --- linux-3.13.0.orig/drivers/net/usb/usbnet.c +++ linux-3.13.0/drivers/net/usb/usbnet.c @@ -543,17 +543,19 @@ } // else network stack removes extra byte if we forced a short packet - if (skb->len) { - /* all data was already cloned from skb inside the driver */ - if (dev->driver_info->flags & FLAG_MULTI_PACKET) - dev_kfree_skb_any(skb); - else - usbnet_skb_return(dev, skb); + /* all data was already cloned from skb inside the driver */ + if (dev->driver_info->flags & FLAG_MULTI_PACKET) + goto done; + + if (skb->len < ETH_HLEN) { + dev->net->stats.rx_errors++; + dev->net->stats.rx_length_errors++; + netif_dbg(dev, rx_err, dev->net, "rx length %d\n", skb->len); + } else { + usbnet_skb_return(dev, skb); return; } - netif_dbg(dev, rx_err, dev->net, "drop\n"); - dev->net->stats.rx_errors++; done: skb_queue_tail(&dev->done, skb); } @@ -575,13 +577,6 @@ switch (urb_status) { /* success */ case 0: - if (skb->len < dev->net->hard_header_len) { - state = rx_cleanup; - dev->net->stats.rx_errors++; - dev->net->stats.rx_length_errors++; - netif_dbg(dev, rx_err, dev->net, - "rx length %d\n", skb->len); - } break; /* stalls need manual reset. this is rare ... except that @@ -758,14 +753,12 @@ // precondition: never called in_interrupt static void usbnet_terminate_urbs(struct usbnet *dev) { - DECLARE_WAIT_QUEUE_HEAD_ONSTACK(unlink_wakeup); DECLARE_WAITQUEUE(wait, current); int temp; /* ensure there are no more active urbs */ - add_wait_queue(&unlink_wakeup, &wait); + add_wait_queue(&dev->wait, &wait); set_current_state(TASK_UNINTERRUPTIBLE); - dev->wait = &unlink_wakeup; temp = unlink_urbs(dev, &dev->txq) + unlink_urbs(dev, &dev->rxq); @@ -779,15 +772,14 @@ "waited for %d urb completions\n", temp); } set_current_state(TASK_RUNNING); - dev->wait = NULL; - remove_wait_queue(&unlink_wakeup, &wait); + remove_wait_queue(&dev->wait, &wait); } int usbnet_stop (struct net_device *net) { struct usbnet *dev = netdev_priv(net); struct driver_info *info = dev->driver_info; - int retval; + int retval, pm, mpn; clear_bit(EVENT_DEV_OPEN, &dev->flags); netif_stop_queue (net); @@ -797,6 +789,8 @@ net->stats.rx_packets, net->stats.tx_packets, net->stats.rx_errors, net->stats.tx_errors); + /* to not race resume */ + pm = usb_autopm_get_interface(dev->intf); /* allow minidriver to stop correctly (wireless devices to turn off * radio etc) */ if (info->stop) { @@ -816,6 +810,8 @@ usbnet_purge_paused_rxq(dev); + mpn = !test_and_clear_bit(EVENT_NO_RUNTIME_PM, &dev->flags); + /* deferred work (task, timer, softirq) must also stop. * can't flush_scheduled_work() until we drop rtnl (later), * else workers could deadlock; so make workers a NOP. @@ -823,8 +819,10 @@ dev->flags = 0; del_timer_sync (&dev->delay); tasklet_kill (&dev->bh); - if (info->manage_power && - !test_and_clear_bit(EVENT_NO_RUNTIME_PM, &dev->flags)) + if (!pm) + usb_autopm_put_interface(dev->intf); + + if (info->manage_power && mpn) info->manage_power(dev, 0); else usb_autopm_put_interface(dev->intf); @@ -1443,11 +1441,12 @@ /* restart RX again after disabling due to high error rate */ clear_bit(EVENT_RX_KILL, &dev->flags); - // waiting for all pending urbs to complete? - if (dev->wait) { - if ((dev->txq.qlen + dev->rxq.qlen + dev->done.qlen) == 0) { - wake_up (dev->wait); - } + /* waiting for all pending urbs to complete? + * only then can we forgo submitting anew + */ + if (waitqueue_active(&dev->wait)) { + if (dev->txq.qlen + dev->rxq.qlen + dev->done.qlen == 0) + wake_up_all(&dev->wait); // or are we maybe short a few urbs? } else if (netif_running (dev->net) && @@ -1586,6 +1585,7 @@ dev->driver_name = name; dev->msg_enable = netif_msg_init (msg_level, NETIF_MSG_DRV | NETIF_MSG_PROBE | NETIF_MSG_LINK); + init_waitqueue_head(&dev->wait); skb_queue_head_init (&dev->rxq); skb_queue_head_init (&dev->txq); skb_queue_head_init (&dev->done); @@ -1719,6 +1719,13 @@ if (info->unbind) info->unbind (dev, udev); out1: + /* subdrivers must undo all they did in bind() if they + * fail it, but we may fail later and a deferred kevent + * may trigger an error resubmitting itself and, worse, + * schedule a timer. So we kill it all just in case. + */ + cancel_work_sync(&dev->kevent); + del_timer_sync(&dev->delay); free_netdev(net); out: return status; @@ -1797,9 +1804,10 @@ spin_unlock_irq(&dev->txq.lock); if (test_bit(EVENT_DEV_OPEN, &dev->flags)) { - /* handle remote wakeup ASAP */ - if (!dev->wait && - netif_device_present(dev->net) && + /* handle remote wakeup ASAP + * we cannot race against stop + */ + if (netif_device_present(dev->net) && !timer_pending(&dev->delay) && !test_bit(EVENT_RX_HALT, &dev->flags)) rx_alloc_submit(dev, GFP_NOIO); --- linux-3.13.0.orig/drivers/net/veth.c +++ linux-3.13.0/drivers/net/veth.c @@ -116,12 +116,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); @@ -155,10 +149,10 @@ unsigned int start; do { - start = u64_stats_fetch_begin_bh(&stats->syncp); + start = u64_stats_fetch_begin_irq(&stats->syncp); packets = stats->packets; bytes = stats->bytes; - } while (u64_stats_fetch_retry_bh(&stats->syncp, start)); + } while (u64_stats_fetch_retry_irq(&stats->syncp, start)); result->packets += packets; result->bytes += bytes; } @@ -285,7 +279,8 @@ dev->ethtool_ops = &veth_ethtool_ops; dev->features |= NETIF_F_LLTX; dev->features |= VETH_FEATURES; - dev->vlan_features = dev->features; + dev->vlan_features = dev->features & + ~(NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_HW_VLAN_STAG_TX); dev->destructor = veth_dev_free; dev->hw_features = VETH_FEATURES; --- linux-3.13.0.orig/drivers/net/virtio_net.c +++ linux-3.13.0/drivers/net/virtio_net.c @@ -633,8 +633,7 @@ } while (rq->vq->num_free); if (unlikely(rq->num > rq->max)) rq->max = rq->num; - if (unlikely(!virtqueue_kick(rq->vq))) - return false; + virtqueue_kick(rq->vq); return !oom; } @@ -840,7 +839,7 @@ err = xmit_skb(sq, skb); /* This should not happen! */ - if (unlikely(err) || unlikely(!virtqueue_kick(sq->vq))) { + if (unlikely(err)) { dev->stats.tx_fifo_errors++; if (net_ratelimit()) dev_warn(&dev->dev, @@ -849,6 +848,7 @@ kfree_skb(skb); return NETDEV_TX_OK; } + virtqueue_kick(sq->vq); /* Don't wait up for transmitted skbs to be freed. */ skb_orphan(skb); @@ -968,16 +968,16 @@ u64 tpackets, tbytes, rpackets, rbytes; do { - start = u64_stats_fetch_begin_bh(&stats->tx_syncp); + start = u64_stats_fetch_begin_irq(&stats->tx_syncp); tpackets = stats->tx_packets; tbytes = stats->tx_bytes; - } while (u64_stats_fetch_retry_bh(&stats->tx_syncp, start)); + } while (u64_stats_fetch_retry_irq(&stats->tx_syncp, start)); do { - start = u64_stats_fetch_begin_bh(&stats->rx_syncp); + start = u64_stats_fetch_begin_irq(&stats->rx_syncp); rpackets = stats->rx_packets; rbytes = stats->rx_bytes; - } while (u64_stats_fetch_retry_bh(&stats->rx_syncp, start)); + } while (u64_stats_fetch_retry_irq(&stats->rx_syncp, start)); tot->rx_packets += rpackets; tot->tx_packets += tpackets; @@ -1586,9 +1586,9 @@ /* Do we support "hardware" checksums? */ if (virtio_has_feature(vdev, VIRTIO_NET_F_CSUM)) { /* This opens up the world of extra features. */ - dev->hw_features |= NETIF_F_HW_CSUM|NETIF_F_SG|NETIF_F_FRAGLIST; + dev->hw_features |= NETIF_F_HW_CSUM | NETIF_F_SG; if (csum) - dev->features |= NETIF_F_HW_CSUM|NETIF_F_SG|NETIF_F_FRAGLIST; + dev->features |= NETIF_F_HW_CSUM | NETIF_F_SG; if (virtio_has_feature(vdev, VIRTIO_NET_F_GSO)) { dev->hw_features |= NETIF_F_TSO | NETIF_F_UFO @@ -1645,7 +1645,8 @@ /* If we can receive ANY GSO packets, we must allocate large ones. */ if (virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_TSO4) || virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_TSO6) || - virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_ECN)) + virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_ECN) || + virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_UFO)) vi->big_packets = true; if (virtio_has_feature(vdev, VIRTIO_NET_F_MRG_RXBUF)) --- linux-3.13.0.orig/drivers/net/vmxnet3/vmxnet3_drv.c +++ linux-3.13.0/drivers/net/vmxnet3/vmxnet3_drv.c @@ -1760,11 +1760,20 @@ { struct vmxnet3_adapter *adapter = netdev_priv(netdev); - if (adapter->intr.mask_mode == VMXNET3_IMM_ACTIVE) - vmxnet3_disable_all_intrs(adapter); - - vmxnet3_do_poll(adapter, adapter->rx_queue[0].rx_ring[0].size); - vmxnet3_enable_all_intrs(adapter); + switch (adapter->intr.type) { +#ifdef CONFIG_PCI_MSI + case VMXNET3_IT_MSIX: { + int i; + for (i = 0; i < adapter->num_rx_queues; i++) + vmxnet3_msix_rx(0, &adapter->rx_queue[i]); + break; + } +#endif + case VMXNET3_IT_MSI: + default: + vmxnet3_intr(0, adapter->netdev); + break; + } } #endif /* CONFIG_NET_POLL_CONTROLLER */ --- linux-3.13.0.orig/drivers/net/vxlan.c +++ linux-3.13.0/drivers/net/vxlan.c @@ -40,6 +40,7 @@ #include #include #include +#include #if IS_ENABLED(CONFIG_IPV6) #include #include @@ -278,13 +279,15 @@ return list_first_entry(&fdb->remotes, struct vxlan_rdst, list); } -/* Find VXLAN socket based on network namespace and UDP port */ -static struct vxlan_sock *vxlan_find_sock(struct net *net, __be16 port) +/* Find VXLAN socket based on network namespace, address family and UDP port */ +static struct vxlan_sock *vxlan_find_sock(struct net *net, + sa_family_t family, __be16 port) { struct vxlan_sock *vs; hlist_for_each_entry_rcu(vs, vs_head(net, port), hlist) { - if (inet_sk(vs->sock->sk)->inet_sport == port) + if (inet_sk(vs->sock->sk)->inet_sport == port && + inet_sk(vs->sock->sk)->sk.sk_family == family) return vs; } return NULL; @@ -303,11 +306,12 @@ } /* Look up VNI in a per net namespace table */ -static struct vxlan_dev *vxlan_find_vni(struct net *net, u32 id, __be16 port) +static struct vxlan_dev *vxlan_find_vni(struct net *net, u32 id, + sa_family_t family, __be16 port) { struct vxlan_sock *vs; - vs = vxlan_find_sock(net, port); + vs = vxlan_find_sock(net, family, port); if (!vs) return NULL; @@ -554,13 +558,104 @@ return 1; } +static struct sk_buff **vxlan_gro_receive(struct sk_buff **head, struct sk_buff *skb) +{ + struct sk_buff *p, **pp = NULL; + struct vxlanhdr *vh, *vh2; + struct ethhdr *eh, *eh2; + unsigned int hlen, off_vx, off_eth; + const struct packet_offload *ptype; + __be16 type; + int flush = 1; + + off_vx = skb_gro_offset(skb); + hlen = off_vx + sizeof(*vh); + vh = skb_gro_header_fast(skb, off_vx); + if (skb_gro_header_hard(skb, hlen)) { + vh = skb_gro_header_slow(skb, hlen, off_vx); + if (unlikely(!vh)) + goto out; + } + skb_gro_pull(skb, sizeof(struct vxlanhdr)); /* pull vxlan header */ + + off_eth = skb_gro_offset(skb); + hlen = off_eth + sizeof(*eh); + eh = skb_gro_header_fast(skb, off_eth); + if (skb_gro_header_hard(skb, hlen)) { + eh = skb_gro_header_slow(skb, hlen, off_eth); + if (unlikely(!eh)) + goto out; + } + + flush = 0; + + for (p = *head; p; p = p->next) { + if (!NAPI_GRO_CB(p)->same_flow) + continue; + + vh2 = (struct vxlanhdr *)(p->data + off_vx); + eh2 = (struct ethhdr *)(p->data + off_eth); + if (vh->vx_vni != vh2->vx_vni || compare_ether_header(eh, eh2)) { + NAPI_GRO_CB(p)->same_flow = 0; + continue; + } + } + + type = eh->h_proto; + + rcu_read_lock(); + ptype = gro_find_receive_by_type(type); + if (ptype == NULL) { + flush = 1; + goto out_unlock; + } + + skb_gro_pull(skb, sizeof(*eh)); /* pull inner eth header */ + pp = call_gro_receive(ptype->callbacks.gro_receive, head, skb); + +out_unlock: + rcu_read_unlock(); +out: + NAPI_GRO_CB(skb)->flush |= flush; + + return pp; +} + +static int vxlan_gro_complete(struct sk_buff *skb, int nhoff) +{ + struct ethhdr *eh; + struct packet_offload *ptype; + __be16 type; + int vxlan_len = sizeof(struct vxlanhdr) + sizeof(struct ethhdr); + int err = -ENOSYS; + + eh = (struct ethhdr *)(skb->data + nhoff + sizeof(struct vxlanhdr)); + type = eh->h_proto; + + rcu_read_lock(); + ptype = gro_find_complete_by_type(type); + if (ptype != NULL) + err = ptype->callbacks.gro_complete(skb, nhoff + vxlan_len); + + rcu_read_unlock(); + return err; +} + /* Notify netdevs that UDP port started listening */ -static void vxlan_notify_add_rx_port(struct sock *sk) +static void vxlan_notify_add_rx_port(struct vxlan_sock *vs) { struct net_device *dev; + struct sock *sk = vs->sock->sk; struct net *net = sock_net(sk); sa_family_t sa_family = sk->sk_family; __be16 port = inet_sk(sk)->inet_sport; + int err; + + if (sa_family == AF_INET) { + err = udp_add_offload(&vs->udp_offloads); + if (err) + pr_warn("vxlan: udp_add_offload failed with status %d\n", err); + } rcu_read_lock(); for_each_netdev_rcu(net, dev) { @@ -572,9 +667,10 @@ } /* Notify netdevs that UDP port is no more listening */ -static void vxlan_notify_del_rx_port(struct sock *sk) +static void vxlan_notify_del_rx_port(struct vxlan_sock *vs) { struct net_device *dev; + struct sock *sk = vs->sock->sk; struct net *net = sock_net(sk); sa_family_t sa_family = sk->sk_family; __be16 port = inet_sk(sk)->inet_sport; @@ -586,6 +682,9 @@ port); } rcu_read_unlock(); + + if (sa_family == AF_INET) + udp_del_offload(&vs->udp_offloads); } /* Add new entry to forwarding table -- assumes lock held */ @@ -777,6 +876,9 @@ if (err) return err; + if (vxlan->default_dst.remote_ip.sa.sa_family != ip.sa.sa_family) + return -EAFNOSUPPORT; + spin_lock_bh(&vxlan->hash_lock); err = vxlan_fdb_create(vxlan, addr, &ip, ndm->ndm_state, flags, port, vni, ifindex, ndm->ndm_flags); @@ -949,7 +1051,7 @@ spin_lock(&vn->sock_lock); hlist_del_rcu(&vs->hlist); rcu_assign_sk_user_data(vs->sock->sk, NULL); - vxlan_notify_del_rx_port(sk); + vxlan_notify_del_rx_port(vs); spin_unlock(&vn->sock_lock); queue_work(vxlan_wq, &vs->del_work); @@ -1047,6 +1149,15 @@ if (!vs) goto drop; + /* If the NIC driver gave us an encapsulated packet + * with the encapsulation mark, the device checksummed it + * for us. Otherwise force the upper layers to verify it. + */ + if (skb->ip_summed != CHECKSUM_UNNECESSARY || !skb->encapsulation) + skb->ip_summed = CHECKSUM_NONE; + + skb->encapsulation = 0; + vs->rcv(vs, skb, vxh->vx_vni); return 0; @@ -1110,8 +1221,8 @@ * leave the CHECKSUM_UNNECESSARY, the device checksummed it * for us. Otherwise force the upper layers to verify it. */ - if (skb->ip_summed != CHECKSUM_UNNECESSARY || !skb->encapsulation || - !(vxlan->dev->features & NETIF_F_RXCSUM)) + if ((skb->ip_summed != CHECKSUM_UNNECESSARY && skb->ip_summed != CHECKSUM_PARTIAL) || + !skb->encapsulation || !(vxlan->dev->features & NETIF_F_RXCSUM)) skb->ip_summed = CHECKSUM_NONE; skb->encapsulation = 0; @@ -1210,6 +1321,9 @@ neigh_release(n); + if (reply == NULL) + goto out; + skb_reset_mac_header(reply); __skb_pull(reply, skb_network_offset(reply)); reply->ip_summed = CHECKSUM_UNNECESSARY; @@ -1220,7 +1334,7 @@ } else if (vxlan->flags & VXLAN_F_L3MISS) { union vxlan_addr ipa = { .sin.sin_addr.s_addr = tip, - .sa.sa_family = AF_INET, + .sin.sin_family = AF_INET, }; vxlan_ip_miss(dev, &ipa); @@ -1231,40 +1345,126 @@ } #if IS_ENABLED(CONFIG_IPV6) + +static struct sk_buff *vxlan_na_create(struct sk_buff *request, + struct neighbour *n, bool isrouter) +{ + struct net_device *dev = request->dev; + struct sk_buff *reply; + struct nd_msg *ns, *na; + struct ipv6hdr *pip6; + u8 *daddr; + int na_olen = 8; /* opt hdr + ETH_ALEN for target */ + int ns_olen; + int i, len; + + if (dev == NULL) + return NULL; + + len = LL_RESERVED_SPACE(dev) + sizeof(struct ipv6hdr) + + sizeof(*na) + na_olen + dev->needed_tailroom; + reply = alloc_skb(len, GFP_ATOMIC); + if (reply == NULL) + return NULL; + + reply->protocol = htons(ETH_P_IPV6); + reply->dev = dev; + skb_reserve(reply, LL_RESERVED_SPACE(request->dev)); + skb_push(reply, sizeof(struct ethhdr)); + skb_set_mac_header(reply, 0); + + ns = (struct nd_msg *)skb_transport_header(request); + + daddr = eth_hdr(request)->h_source; + ns_olen = request->len - skb_transport_offset(request) - sizeof(*ns); + for (i = 0; i < ns_olen-1; i += (ns->opt[i+1]<<3)) { + if (ns->opt[i] == ND_OPT_SOURCE_LL_ADDR) { + daddr = ns->opt + i + sizeof(struct nd_opt_hdr); + break; + } + } + + /* Ethernet header */ + memcpy(eth_hdr(reply)->h_dest, daddr, ETH_ALEN); + memcpy(eth_hdr(reply)->h_source, n->ha, ETH_ALEN); + eth_hdr(reply)->h_proto = htons(ETH_P_IPV6); + reply->protocol = htons(ETH_P_IPV6); + + skb_pull(reply, sizeof(struct ethhdr)); + skb_set_network_header(reply, 0); + skb_put(reply, sizeof(struct ipv6hdr)); + + /* IPv6 header */ + + pip6 = ipv6_hdr(reply); + memset(pip6, 0, sizeof(struct ipv6hdr)); + pip6->version = 6; + pip6->priority = ipv6_hdr(request)->priority; + pip6->nexthdr = IPPROTO_ICMPV6; + pip6->hop_limit = 255; + pip6->daddr = ipv6_hdr(request)->saddr; + pip6->saddr = *(struct in6_addr *)n->primary_key; + + skb_pull(reply, sizeof(struct ipv6hdr)); + skb_set_transport_header(reply, 0); + + na = (struct nd_msg *)skb_put(reply, sizeof(*na) + na_olen); + + /* Neighbor Advertisement */ + memset(na, 0, sizeof(*na)+na_olen); + na->icmph.icmp6_type = NDISC_NEIGHBOUR_ADVERTISEMENT; + na->icmph.icmp6_router = isrouter; + na->icmph.icmp6_override = 1; + na->icmph.icmp6_solicited = 1; + na->target = ns->target; + memcpy(&na->opt[2], n->ha, ETH_ALEN); + na->opt[0] = ND_OPT_TARGET_LL_ADDR; + na->opt[1] = na_olen >> 3; + + na->icmph.icmp6_cksum = csum_ipv6_magic(&pip6->saddr, + &pip6->daddr, sizeof(*na)+na_olen, IPPROTO_ICMPV6, + csum_partial(na, sizeof(*na)+na_olen, 0)); + + pip6->payload_len = htons(sizeof(*na)+na_olen); + + skb_push(reply, sizeof(struct ipv6hdr)); + + reply->ip_summed = CHECKSUM_UNNECESSARY; + + return reply; +} + static int neigh_reduce(struct net_device *dev, struct sk_buff *skb) { struct vxlan_dev *vxlan = netdev_priv(dev); - struct neighbour *n; - union vxlan_addr ipa; + struct nd_msg *msg; const struct ipv6hdr *iphdr; const struct in6_addr *saddr, *daddr; - struct nd_msg *msg; - struct inet6_dev *in6_dev = NULL; + struct neighbour *n; + struct inet6_dev *in6_dev; in6_dev = __in6_dev_get(dev); if (!in6_dev) goto out; - if (!pskb_may_pull(skb, skb->len)) - goto out; - iphdr = ipv6_hdr(skb); saddr = &iphdr->saddr; daddr = &iphdr->daddr; - if (ipv6_addr_loopback(daddr) || - ipv6_addr_is_multicast(daddr)) - goto out; - msg = (struct nd_msg *)skb_transport_header(skb); if (msg->icmph.icmp6_code != 0 || msg->icmph.icmp6_type != NDISC_NEIGHBOUR_SOLICITATION) goto out; - n = neigh_lookup(ipv6_stub->nd_tbl, daddr, dev); + if (ipv6_addr_loopback(daddr) || + ipv6_addr_is_multicast(&msg->target)) + goto out; + + n = neigh_lookup(ipv6_stub->nd_tbl, &msg->target, dev); if (n) { struct vxlan_fdb *f; + struct sk_buff *reply; if (!(n->nud_state & NUD_CONNECTED)) { neigh_release(n); @@ -1278,13 +1478,23 @@ goto out; } - ipv6_stub->ndisc_send_na(dev, n, saddr, &msg->target, - !!in6_dev->cnf.forwarding, - true, false, false); + reply = vxlan_na_create(skb, n, + !!(f ? f->flags & NTF_ROUTER : 0)); + neigh_release(n); + + if (reply == NULL) + goto out; + + if (netif_rx_ni(reply) == NET_RX_DROP) + dev->stats.rx_dropped++; + } else if (vxlan->flags & VXLAN_F_L3MISS) { - ipa.sin6.sin6_addr = *daddr; - ipa.sa.sa_family = AF_INET6; + union vxlan_addr ipa = { + .sin6.sin6_addr = msg->target, + .sin6.sin6_family = AF_INET6, + }; + vxlan_ip_miss(dev, &ipa); } @@ -1315,7 +1525,7 @@ if (!n && (vxlan->flags & VXLAN_F_L3MISS)) { union vxlan_addr ipa = { .sin.sin_addr.s_addr = pip->daddr, - .sa.sa_family = AF_INET, + .sin.sin_family = AF_INET, }; vxlan_ip_miss(dev, &ipa); @@ -1336,7 +1546,7 @@ if (!n && (vxlan->flags & VXLAN_F_L3MISS)) { union vxlan_addr ipa = { .sin6.sin6_addr = pip6->daddr, - .sa.sa_family = AF_INET6, + .sin6.sin6_family = AF_INET6, }; vxlan_ip_miss(dev, &ipa); @@ -1390,7 +1600,7 @@ unsigned int range = (port_max - port_min) + 1; u32 hash; - hash = skb_get_rxhash(skb); + hash = skb_get_hash(skb); if (!hash) hash = jhash(skb->data, 2 * ETH_ALEN, (__force u32) skb->protocol); @@ -1576,6 +1786,8 @@ struct pcpu_tstats *rx_stats = this_cpu_ptr(dst_vxlan->dev->tstats); union vxlan_addr loopback; union vxlan_addr *remote_ip = &dst_vxlan->default_dst.remote_ip; + struct net_device *dev = skb->dev; + int len = skb->len; skb->pkt_type = PACKET_HOST; skb->encapsulation = 0; @@ -1597,16 +1809,16 @@ u64_stats_update_begin(&tx_stats->syncp); tx_stats->tx_packets++; - tx_stats->tx_bytes += skb->len; + tx_stats->tx_bytes += len; u64_stats_update_end(&tx_stats->syncp); if (netif_rx(skb) == NET_RX_SUCCESS) { u64_stats_update_begin(&rx_stats->syncp); rx_stats->rx_packets++; - rx_stats->rx_bytes += skb->len; + rx_stats->rx_bytes += len; u64_stats_update_end(&rx_stats->syncp); } else { - skb->dev->stats.rx_dropped++; + dev->stats.rx_dropped++; } } @@ -1677,7 +1889,8 @@ struct vxlan_dev *dst_vxlan; ip_rt_put(rt); - dst_vxlan = vxlan_find_vni(dev_net(dev), vni, dst_port); + dst_vxlan = vxlan_find_vni(dev_net(dev), vni, + dst->sa.sa_family, dst_port); if (!dst_vxlan) goto tx_error; vxlan_encap_bypass(skb, vxlan, dst_vxlan); @@ -1730,7 +1943,8 @@ struct vxlan_dev *dst_vxlan; dst_release(ndst); - dst_vxlan = vxlan_find_vni(dev_net(dev), vni, dst_port); + dst_vxlan = vxlan_find_vni(dev_net(dev), vni, + dst->sa.sa_family, dst_port); if (!dst_vxlan) goto tx_error; vxlan_encap_bypass(skb, vxlan, dst_vxlan); @@ -1781,7 +1995,8 @@ return arp_reduce(dev, skb); #if IS_ENABLED(CONFIG_IPV6) else if (ntohs(eth->h_proto) == ETH_P_IPV6 && - skb->len >= sizeof(struct ipv6hdr) + sizeof(struct nd_msg) && + pskb_may_pull(skb, sizeof(struct ipv6hdr) + + sizeof(struct nd_msg)) && ipv6_hdr(skb)->nexthdr == IPPROTO_ICMPV6) { struct nd_msg *msg; @@ -1790,6 +2005,7 @@ msg->icmph.icmp6_type == NDISC_NEIGHBOUR_SOLICITATION) return neigh_reduce(dev, skb); } + eth = eth_hdr(skb); #endif } @@ -1879,6 +2095,7 @@ { struct vxlan_dev *vxlan = netdev_priv(dev); struct vxlan_net *vn = net_generic(dev_net(dev), vxlan_net_id); + bool ipv6 = vxlan->flags & VXLAN_F_IPV6; struct vxlan_sock *vs; int i; @@ -1894,10 +2111,10 @@ spin_lock(&vn->sock_lock); - vs = vxlan_find_sock(dev_net(dev), vxlan->dst_port); - if (vs) { + vs = vxlan_find_sock(dev_net(dev), ipv6 ? AF_INET6 : AF_INET, + vxlan->dst_port); + if (vs && atomic_add_unless(&vs->refcnt, 1, 0)) { /* If we have a socket with same port already, reuse it */ - atomic_inc(&vs->refcnt); vxlan_vs_add_dev(vs, vxlan); } else { /* otherwise make new socket outside of RTNL */ @@ -2057,10 +2274,6 @@ eth_hw_addr_random(dev); ether_setup(dev); - if (vxlan->default_dst.remote_ip.sa.sa_family == AF_INET6) - dev->hard_header_len = ETH_HLEN + VXLAN6_HEADROOM; - else - dev->hard_header_len = ETH_HLEN + VXLAN_HEADROOM; dev->netdev_ops = &vxlan_netdev_ops; dev->destructor = free_netdev; @@ -2278,7 +2491,7 @@ struct sock *sk; unsigned int h; - vs = kmalloc(sizeof(*vs), GFP_KERNEL); + vs = kzalloc(sizeof(*vs), GFP_KERNEL); if (!vs) return ERR_PTR(-ENOMEM); @@ -2303,9 +2516,14 @@ vs->data = data; rcu_assign_sk_user_data(vs->sock->sk, vs); + /* Initialize the vxlan udp offloads structure */ + vs->udp_offloads.port = port; + vs->udp_offloads.callbacks.gro_receive = vxlan_gro_receive; + vs->udp_offloads.callbacks.gro_complete = vxlan_gro_complete; + spin_lock(&vn->sock_lock); hlist_add_head_rcu(&vs->hlist, vs_head(net, port)); - vxlan_notify_add_rx_port(sk); + vxlan_notify_add_rx_port(vs); spin_unlock(&vn->sock_lock); /* Mark socket as an encapsulation socket. */ @@ -2336,13 +2554,10 @@ return vs; spin_lock(&vn->sock_lock); - vs = vxlan_find_sock(net, port); - if (vs) { - if (vs->rcv == rcv) - atomic_inc(&vs->refcnt); - else + vs = vxlan_find_sock(net, ipv6 ? AF_INET6 : AF_INET, port); + if (vs && ((vs->rcv != rcv) || + !atomic_add_unless(&vs->refcnt, 1, 0))) vs = ERR_PTR(-EBUSY); - } spin_unlock(&vn->sock_lock); if (!vs) @@ -2386,9 +2601,10 @@ vni = nla_get_u32(data[IFLA_VXLAN_ID]); dst->remote_vni = vni; + /* Unless IPv6 is explicitly requested, assume IPv4 */ + dst->remote_ip.sa.sa_family = AF_INET; if (data[IFLA_VXLAN_GROUP]) { dst->remote_ip.sin.sin_addr.s_addr = nla_get_be32(data[IFLA_VXLAN_GROUP]); - dst->remote_ip.sa.sa_family = AF_INET; } else if (data[IFLA_VXLAN_GROUP6]) { if (!IS_ENABLED(CONFIG_IPV6)) return -EPFNOSUPPORT; @@ -2437,11 +2653,14 @@ if (!tb[IFLA_MTU]) dev->mtu = lowerdev->mtu - (use_ipv6 ? VXLAN6_HEADROOM : VXLAN_HEADROOM); - /* update header length based on lower device */ - dev->hard_header_len = lowerdev->hard_header_len + + 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]); @@ -2482,7 +2701,8 @@ if (data[IFLA_VXLAN_PORT]) vxlan->dst_port = nla_get_be16(data[IFLA_VXLAN_PORT]); - if (vxlan_find_vni(net, vni, vxlan->dst_port)) { + if (vxlan_find_vni(net, vni, use_ipv6 ? AF_INET6 : AF_INET, + vxlan->dst_port)) { pr_info("duplicate VNI %u\n", vni); return -EEXIST; } --- linux-3.13.0.orig/drivers/net/wan/x25_asy.c +++ linux-3.13.0/drivers/net/wan/x25_asy.c @@ -545,16 +545,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-3.13.0.orig/drivers/net/wireless/ath/ar5523/ar5523.c +++ linux-3.13.0/drivers/net/wireless/ath/ar5523/ar5523.c @@ -1091,7 +1091,8 @@ return ret; } -static void ar5523_flush(struct ieee80211_hw *hw, u32 queues, bool drop) +static void ar5523_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif, + u32 queues, bool drop) { struct ar5523 *ar = hw->priv; @@ -1765,7 +1766,7 @@ AR5523_DEVICE_UG(0x07d1, 0x3a07), /* D-Link / WUA-2340 rev A1 */ AR5523_DEVICE_UG(0x1690, 0x0712), /* Gigaset / AR5523 */ AR5523_DEVICE_UG(0x1690, 0x0710), /* Gigaset / SMCWUSBTG */ - AR5523_DEVICE_UG(0x129b, 0x160c), /* Gigaset / USB stick 108 + AR5523_DEVICE_UG(0x129b, 0x160b), /* Gigaset / USB stick 108 (CyberTAN Technology) */ AR5523_DEVICE_UG(0x16ab, 0x7801), /* Globalsun / AR5523_1 */ AR5523_DEVICE_UX(0x16ab, 0x7811), /* Globalsun / AR5523_2 */ --- linux-3.13.0.orig/drivers/net/wireless/ath/ath10k/mac.c +++ linux-3.13.0/drivers/net/wireless/ath/ath10k/mac.c @@ -2939,7 +2939,8 @@ return ret; } -static void ath10k_flush(struct ieee80211_hw *hw, u32 queues, bool drop) +static void ath10k_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif, + u32 queues, bool drop) { struct ath10k *ar = hw->priv; bool skip; --- linux-3.13.0.orig/drivers/net/wireless/ath/ath5k/qcu.c +++ linux-3.13.0/drivers/net/wireless/ath/ath5k/qcu.c @@ -225,13 +225,7 @@ } else { switch (queue_type) { case AR5K_TX_QUEUE_DATA: - for (queue = AR5K_TX_QUEUE_ID_DATA_MIN; - ah->ah_txq[queue].tqi_type != - AR5K_TX_QUEUE_INACTIVE; queue++) { - - if (queue > AR5K_TX_QUEUE_ID_DATA_MAX) - return -EINVAL; - } + queue = queue_info->tqi_subtype; break; case AR5K_TX_QUEUE_UAPSD: queue = AR5K_TX_QUEUE_ID_UAPSD; --- linux-3.13.0.orig/drivers/net/wireless/ath/ath5k/reset.c +++ linux-3.13.0/drivers/net/wireless/ath/ath5k/reset.c @@ -478,7 +478,7 @@ regval = ioread32(reg); iowrite32(regval | val, reg); regval = ioread32(reg); - usleep_range(100, 150); + udelay(100); /* NB: should be atomic */ /* Bring BB/MAC out of reset */ iowrite32(regval & ~val, reg); --- linux-3.13.0.orig/drivers/net/wireless/ath/ath9k/ar9003_phy.c +++ linux-3.13.0/drivers/net/wireless/ath/ath9k/ar9003_phy.c @@ -646,6 +646,19 @@ else ah->enabled_cals &= ~TX_CL_CAL; } + + if (AR_SREV_9340(ah) || AR_SREV_9531(ah) || AR_SREV_9550(ah)) { + if (ah->is_clk_25mhz) { + REG_WRITE(ah, AR_RTC_DERIVED_CLK, 0x17c << 1); + REG_WRITE(ah, AR_SLP32_MODE, 0x0010f3d7); + REG_WRITE(ah, AR_SLP32_INC, 0x0001e7ae); + } else { + REG_WRITE(ah, AR_RTC_DERIVED_CLK, 0x261 << 1); + REG_WRITE(ah, AR_SLP32_MODE, 0x0010f400); + REG_WRITE(ah, AR_SLP32_INC, 0x0001e800); + } + udelay(100); + } } static void ar9003_hw_prog_ini(struct ath_hw *ah, --- linux-3.13.0.orig/drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h +++ linux-3.13.0/drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h @@ -56,7 +56,7 @@ {0x00009e14, 0x37b95d5e, 0x37b9605e, 0x3236605e, 0x32365a5e}, {0x00009e18, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, {0x00009e1c, 0x0001cf9c, 0x0001cf9c, 0x00021f9c, 0x00021f9c}, - {0x00009e20, 0x000003b5, 0x000003b5, 0x000003ce, 0x000003ce}, + {0x00009e20, 0x000003a5, 0x000003a5, 0x000003a5, 0x000003a5}, {0x00009e2c, 0x0000001c, 0x0000001c, 0x00000021, 0x00000021}, {0x00009e3c, 0xcf946220, 0xcf946220, 0xcfd5c782, 0xcfd5c282}, {0x00009e44, 0x62321e27, 0x62321e27, 0xfe291e27, 0xfe291e27}, @@ -95,7 +95,7 @@ {0x0000ae04, 0x001c0000, 0x001c0000, 0x001c0000, 0x00100000}, {0x0000ae18, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, {0x0000ae1c, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c}, - {0x0000ae20, 0x000001b5, 0x000001b5, 0x000001ce, 0x000001ce}, + {0x0000ae20, 0x000001a6, 0x000001a6, 0x000001aa, 0x000001aa}, {0x0000b284, 0x00000000, 0x00000000, 0x00000550, 0x00000550}, }; --- linux-3.13.0.orig/drivers/net/wireless/ath/ath9k/eeprom.c +++ linux-3.13.0/drivers/net/wireless/ath/ath9k/eeprom.c @@ -408,10 +408,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], @@ -421,7 +420,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], @@ -431,7 +430,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-3.13.0.orig/drivers/net/wireless/ath/ath9k/htc_drv_init.c +++ linux-3.13.0/drivers/net/wireless/ath/ath9k/htc_drv_init.c @@ -34,6 +34,10 @@ module_param_named(btcoex_enable, ath9k_htc_btcoex_enable, int, 0444); MODULE_PARM_DESC(btcoex_enable, "Enable wifi-BT coexistence"); +static int ath9k_ps_enable; +module_param_named(ps_enable, ath9k_ps_enable, int, 0444); +MODULE_PARM_DESC(ps_enable, "Enable WLAN PowerSave"); + #define CHAN2G(_freq, _idx) { \ .center_freq = (_freq), \ .hw_value = (_idx), \ @@ -725,12 +729,14 @@ IEEE80211_HW_SPECTRUM_MGMT | IEEE80211_HW_HAS_RATE_CONTROL | IEEE80211_HW_RX_INCLUDES_FCS | - IEEE80211_HW_SUPPORTS_PS | IEEE80211_HW_PS_NULLFUNC_STACK | IEEE80211_HW_REPORTS_TX_ACK_STATUS | IEEE80211_HW_MFP_CAPABLE | IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING; + if (ath9k_ps_enable) + hw->flags |= IEEE80211_HW_SUPPORTS_PS; + hw->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) | BIT(NL80211_IFTYPE_ADHOC) | --- linux-3.13.0.orig/drivers/net/wireless/ath/ath9k/htc_drv_main.c +++ linux-3.13.0/drivers/net/wireless/ath/ath9k/htc_drv_main.c @@ -1315,21 +1315,22 @@ struct ath_common *common = ath9k_hw_common(priv->ah); struct ath9k_htc_target_rate trate; + if (!(changed & IEEE80211_RC_SUPP_RATES_CHANGED)) + return; + mutex_lock(&priv->mutex); ath9k_htc_ps_wakeup(priv); - if (changed & IEEE80211_RC_SUPP_RATES_CHANGED) { - memset(&trate, 0, sizeof(struct ath9k_htc_target_rate)); - ath9k_htc_setup_rate(priv, sta, &trate); - if (!ath9k_htc_send_rate_cmd(priv, &trate)) - ath_dbg(common, CONFIG, - "Supported rates for sta: %pM updated, rate caps: 0x%X\n", - sta->addr, be32_to_cpu(trate.capflags)); - else - ath_dbg(common, CONFIG, - "Unable to update supported rates for sta: %pM\n", - sta->addr); - } + memset(&trate, 0, sizeof(struct ath9k_htc_target_rate)); + ath9k_htc_setup_rate(priv, sta, &trate); + if (!ath9k_htc_send_rate_cmd(priv, &trate)) + ath_dbg(common, CONFIG, + "Supported rates for sta: %pM updated, rate caps: 0x%X\n", + sta->addr, be32_to_cpu(trate.capflags)); + else + ath_dbg(common, CONFIG, + "Unable to update supported rates for sta: %pM\n", + sta->addr); ath9k_htc_ps_restore(priv); mutex_unlock(&priv->mutex); --- linux-3.13.0.orig/drivers/net/wireless/ath/ath9k/htc_hst.c +++ linux-3.13.0/drivers/net/wireless/ath/ath9k/htc_hst.c @@ -379,7 +379,7 @@ htc_hdr = (struct htc_frame_hdr *) skb->data; epid = htc_hdr->endpoint_id; - if (epid >= ENDPOINT_MAX) { + if (epid < 0 || epid >= ENDPOINT_MAX) { if (pipe_id != USB_REG_IN_PIPE) dev_kfree_skb_any(skb); else --- linux-3.13.0.orig/drivers/net/wireless/ath/ath9k/hw.c +++ linux-3.13.0/drivers/net/wireless/ath/ath9k/hw.c @@ -923,19 +923,6 @@ udelay(RTC_PLL_SETTLE_DELAY); REG_WRITE(ah, AR_RTC_SLEEP_CLK, AR_RTC_FORCE_DERIVED_CLK); - - if (AR_SREV_9340(ah) || AR_SREV_9550(ah)) { - if (ah->is_clk_25mhz) { - REG_WRITE(ah, AR_RTC_DERIVED_CLK, 0x17c << 1); - REG_WRITE(ah, AR_SLP32_MODE, 0x0010f3d7); - REG_WRITE(ah, AR_SLP32_INC, 0x0001e7ae); - } else { - REG_WRITE(ah, AR_RTC_DERIVED_CLK, 0x261 << 1); - REG_WRITE(ah, AR_SLP32_MODE, 0x0010f400); - REG_WRITE(ah, AR_SLP32_INC, 0x0001e800); - } - udelay(100); - } } static void ath9k_hw_init_interrupt_masks(struct ath_hw *ah, @@ -2608,13 +2595,6 @@ ah->eep_ops->get_eeprom(ah, EEP_PAPRD)) pCap->hw_caps |= ATH9K_HW_CAP_PAPRD; - /* - * Fast channel change across bands is available - * only for AR9462 and AR9565. - */ - if (AR_SREV_9462(ah) || AR_SREV_9565(ah)) - pCap->hw_caps |= ATH9K_HW_CAP_FCC_BAND_SWITCH; - return 0; } --- linux-3.13.0.orig/drivers/net/wireless/ath/ath9k/hw.h +++ linux-3.13.0/drivers/net/wireless/ath/ath9k/hw.h @@ -215,8 +215,8 @@ #define AH_WOW_BEACON_MISS BIT(3) enum ath_hw_txq_subtype { - ATH_TXQ_AC_BE = 0, - ATH_TXQ_AC_BK = 1, + ATH_TXQ_AC_BK = 0, + ATH_TXQ_AC_BE = 1, ATH_TXQ_AC_VI = 2, ATH_TXQ_AC_VO = 3, }; --- linux-3.13.0.orig/drivers/net/wireless/ath/ath9k/init.c +++ linux-3.13.0/drivers/net/wireless/ath/ath9k/init.c @@ -57,6 +57,10 @@ module_param_named(bt_ant_diversity, ath9k_bt_ant_diversity, int, 0444); MODULE_PARM_DESC(bt_ant_diversity, "Enable WLAN/BT RX antenna diversity"); +static int ath9k_ps_enable; +module_param_named(ps_enable, ath9k_ps_enable, int, 0444); +MODULE_PARM_DESC(ps_enable, "Enable WLAN PowerSave"); + bool is_ath9k_unloaded; /* We use the hw_value as an index into our private channel structure */ @@ -890,13 +894,15 @@ hw->flags = IEEE80211_HW_RX_INCLUDES_FCS | IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING | IEEE80211_HW_SIGNAL_DBM | - IEEE80211_HW_SUPPORTS_PS | IEEE80211_HW_PS_NULLFUNC_STACK | IEEE80211_HW_SPECTRUM_MGMT | IEEE80211_HW_REPORTS_TX_ACK_STATUS | IEEE80211_HW_SUPPORTS_RC_TABLE | IEEE80211_HW_SUPPORTS_HT_CCK_RATES; + if (ath9k_ps_enable) + hw->flags |= IEEE80211_HW_SUPPORTS_PS; + if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_HT) { hw->flags |= IEEE80211_HW_AMPDU_AGGREGATION; @@ -948,6 +954,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-3.13.0.orig/drivers/net/wireless/ath/ath9k/mac.c +++ linux-3.13.0/drivers/net/wireless/ath/ath9k/mac.c @@ -311,14 +311,7 @@ q = ATH9K_NUM_TX_QUEUES - 3; break; case ATH9K_TX_QUEUE_DATA: - for (q = 0; q < ATH9K_NUM_TX_QUEUES; q++) - if (ah->txq[q].tqi_type == - ATH9K_TX_QUEUE_INACTIVE) - break; - if (q == ATH9K_NUM_TX_QUEUES) { - ath_err(common, "No available TX queue\n"); - return -1; - } + q = qinfo->tqi_subtype; break; default: ath_err(common, "Invalid TX queue type: %u\n", type); --- linux-3.13.0.orig/drivers/net/wireless/ath/ath9k/main.c +++ linux-3.13.0/drivers/net/wireless/ath/ath9k/main.c @@ -194,11 +194,13 @@ ath9k_hw_disable_interrupts(ah); - if (!ath_drain_all_txq(sc)) - ret = false; - - if (!ath_stoprecv(sc)) - ret = false; + if (AR_SREV_9300_20_OR_LATER(ah)) { + ret &= ath_stoprecv(sc); + ret &= ath_drain_all_txq(sc); + } else { + ret &= ath_drain_all_txq(sc); + ret &= ath_stoprecv(sc); + } return ret; } @@ -1818,7 +1820,8 @@ mutex_unlock(&sc->mutex); } -static void ath9k_flush(struct ieee80211_hw *hw, u32 queues, bool drop) +static void ath9k_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif, + u32 queues, bool drop) { struct ath_softc *sc = hw->priv; struct ath_hw *ah = sc->sc_ah; --- linux-3.13.0.orig/drivers/net/wireless/ath/ath9k/recv.c +++ linux-3.13.0/drivers/net/wireless/ath/ath9k/recv.c @@ -733,11 +733,18 @@ return NULL; /* - * mark descriptor as zero-length and set the 'more' - * flag to ensure that both buffers get discarded + * Re-check previous descriptor, in case it has been filled + * in the mean time. */ - rs->rs_datalen = 0; - rs->rs_more = true; + ret = ath9k_hw_rxprocdesc(ah, ds, rs); + if (ret == -EINPROGRESS) { + /* + * mark descriptor as zero-length and set the 'more' + * flag to ensure that both buffers get discarded + */ + rs->rs_datalen = 0; + rs->rs_more = true; + } } list_del(&bf->list); @@ -851,20 +858,15 @@ enum ieee80211_band band; unsigned int i = 0; struct ath_softc __maybe_unused *sc = common->priv; + struct ath_hw *ah = sc->sc_ah; - band = hw->conf.chandef.chan->band; + band = ah->curchan->chan->band; sband = hw->wiphy->bands[band]; - switch (hw->conf.chandef.width) { - case NL80211_CHAN_WIDTH_5: + if (IS_CHAN_QUARTER_RATE(ah->curchan)) rxs->flag |= RX_FLAG_5MHZ; - break; - case NL80211_CHAN_WIDTH_10: + else if (IS_CHAN_HALF_RATE(ah->curchan)) rxs->flag |= RX_FLAG_10MHZ; - break; - default: - break; - } if (rx_stats->rs_rate & 0x80) { /* HT rate */ @@ -1171,32 +1173,32 @@ struct ath_common *common = ath9k_hw_common(ah); struct ieee80211_hdr *hdr; bool discard_current = sc->rx.discard_next; - int ret = 0; /* * Discard corrupt descriptors which are marked in * ath_get_next_rx_buf(). */ - sc->rx.discard_next = rx_stats->rs_more; if (discard_current) - return -EINVAL; + goto corrupt; + + sc->rx.discard_next = false; /* * Discard zero-length packets. */ if (!rx_stats->rs_datalen) { RX_STAT_INC(rx_len_err); - return -EINVAL; + goto corrupt; } - /* - * rs_status follows rs_datalen so if rs_datalen is too large - * we can take a hint that hardware corrupted it, so ignore - * those frames. - */ + /* + * rs_status follows rs_datalen so if rs_datalen is too large + * we can take a hint that hardware corrupted it, so ignore + * those frames. + */ if (rx_stats->rs_datalen > (common->rx_bufsize - ah->caps.rx_status_len)) { RX_STAT_INC(rx_len_err); - return -EINVAL; + goto corrupt; } /* Only use status info from the last fragment */ @@ -1210,10 +1212,8 @@ * This is different from the other corrupt descriptor * condition handled above. */ - if (rx_stats->rs_status & ATH9K_RXERR_CORRUPT_DESC) { - ret = -EINVAL; - goto exit; - } + if (rx_stats->rs_status & ATH9K_RXERR_CORRUPT_DESC) + goto corrupt; hdr = (struct ieee80211_hdr *) (skb->data + ah->caps.rx_status_len); @@ -1229,18 +1229,15 @@ if (ath_process_fft(sc, hdr, rx_stats, rx_status->mactime)) RX_STAT_INC(rx_spectral); - ret = -EINVAL; - goto exit; + return -EINVAL; } /* * everything but the rate is checked here, the rate check is done * separately to avoid doing two lookups for a rate for each frame. */ - if (!ath9k_rx_accept(common, hdr, rx_status, rx_stats, decrypt_error)) { - ret = -EINVAL; - goto exit; - } + if (!ath9k_rx_accept(common, hdr, rx_status, rx_stats, decrypt_error)) + return -EINVAL; rx_stats->is_mybeacon = ath9k_is_mybeacon(sc, hdr); if (rx_stats->is_mybeacon) { @@ -1248,15 +1245,19 @@ ath_start_rx_poll(sc, 3); } - if (ath9k_process_rate(common, hw, rx_stats, rx_status)) { - ret =-EINVAL; - goto exit; - } + /* + * This shouldn't happen, but have a safety check anyway. + */ + if (WARN_ON(!ah->curchan)) + return -EINVAL; + + if (ath9k_process_rate(common, hw, rx_stats, rx_status)) + return -EINVAL; ath9k_process_rssi(common, hw, rx_stats, rx_status); - rx_status->band = hw->conf.chandef.chan->band; - rx_status->freq = hw->conf.chandef.chan->center_freq; + rx_status->band = ah->curchan->chan->band; + rx_status->freq = ah->curchan->chan->center_freq; rx_status->antenna = rx_stats->rs_antenna; rx_status->flag |= RX_FLAG_MACTIME_END; @@ -1266,9 +1267,11 @@ sc->rx.num_pkts++; #endif -exit: - sc->rx.discard_next = false; - return ret; + return 0; + +corrupt: + sc->rx.discard_next = rx_stats->rs_more; + return -EINVAL; } static void ath9k_rx_skb_postprocess(struct ath_common *common, --- linux-3.13.0.orig/drivers/net/wireless/ath/ath9k/reg.h +++ linux-3.13.0/drivers/net/wireless/ath/ath9k/reg.h @@ -810,6 +810,9 @@ #define AR_SREV_VERSION_9565 0x2C0 #define AR_SREV_REVISION_9565_10 0 #define AR_SREV_VERSION_9550 0x400 +#define AR_SREV_VERSION_9531 0x500 +#define AR_SREV_REVISION_9531_10 0 +#define AR_SREV_REVISION_9531_11 1 #define AR_SREV_5416(_ah) \ (((_ah)->hw_version.macVersion == AR_SREV_VERSION_5416_PCI) || \ @@ -938,11 +941,19 @@ #define AR_SREV_9580(_ah) \ (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9580) && \ ((_ah)->hw_version.macRev >= AR_SREV_REVISION_9580_10)) - #define AR_SREV_9580_10(_ah) \ (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9580) && \ ((_ah)->hw_version.macRev == AR_SREV_REVISION_9580_10)) +#define AR_SREV_9531(_ah) \ + (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9531)) +#define AR_SREV_9531_10(_ah) \ + (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9531) && \ + ((_ah)->hw_version.macRev == AR_SREV_REVISION_9531_10)) +#define AR_SREV_9531_11(_ah) \ + (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9531) && \ + ((_ah)->hw_version.macRev == AR_SREV_REVISION_9531_11)) + /* NOTE: When adding chips newer than Peacock, add chip check here */ #define AR_SREV_9580_10_OR_LATER(_ah) \ (AR_SREV_9580(_ah)) --- linux-3.13.0.orig/drivers/net/wireless/ath/ath9k/xmit.c +++ linux-3.13.0/drivers/net/wireless/ath/ath9k/xmit.c @@ -904,6 +904,15 @@ tx_info = IEEE80211_SKB_CB(skb); tx_info->flags &= ~IEEE80211_TX_CTL_CLEAR_PS_FILT; + + /* + * No aggregation session is running, but there may be frames + * from a previous session or a failed attempt in the queue. + * Send them out as normal data frames + */ + if (!tid->active) + tx_info->flags &= ~IEEE80211_TX_CTL_AMPDU; + if (!(tx_info->flags & IEEE80211_TX_CTL_AMPDU)) { bf->bf_state.bf_type = 0; return bf; @@ -1458,14 +1467,16 @@ for (tidno = 0, tid = &an->tid[tidno]; tidno < IEEE80211_NUM_TIDS; tidno++, tid++) { - if (!tid->sched) - continue; - ac = tid->ac; txq = ac->txq; ath_txq_lock(sc, txq); + if (!tid->sched) { + ath_txq_unlock(sc, txq); + continue; + } + buffered = ath_tid_has_buffered(tid); tid->sched = false; @@ -1710,7 +1721,7 @@ ath9k_hw_get_txq_props(sc->sc_ah, qnum, &qi); - qi.tqi_readyTime = (cur_conf->beacon_interval * + qi.tqi_readyTime = (TU_TO_USEC(cur_conf->beacon_interval) * ATH_CABQ_READY_TIME) / 100; ath_txq_update(sc, qnum, &qi); @@ -2072,7 +2083,7 @@ ATH_TXBUF_RESET(bf); - if (tid) { + if (tid && ieee80211_is_data_present(hdr->frame_control)) { fragno = le16_to_cpu(hdr->seq_ctrl) & IEEE80211_SCTL_FRAG; seqno = tid->seq_next; hdr->seq_ctrl = cpu_to_le16(tid->seq_next << IEEE80211_SEQ_SEQ_SHIFT); @@ -2195,14 +2206,15 @@ txq->stopped = true; } + if (txctl->an && ieee80211_is_data_present(hdr->frame_control)) + tid = ath_get_skb_tid(sc, txctl->an, skb); + if (info->flags & IEEE80211_TX_CTL_PS_RESPONSE) { ath_txq_unlock(sc, txq); txq = sc->tx.uapsdq; ath_txq_lock(sc, txq); } else if (txctl->an && ieee80211_is_data_present(hdr->frame_control)) { - tid = ath_get_skb_tid(sc, txctl->an, skb); - WARN_ON(tid->ac->txq != txctl->txq); if (info->flags & IEEE80211_TX_CTL_CLEAR_PS_FILT) --- linux-3.13.0.orig/drivers/net/wireless/ath/carl9170/carl9170.h +++ linux-3.13.0/drivers/net/wireless/ath/carl9170/carl9170.h @@ -256,6 +256,7 @@ atomic_t rx_work_urbs; atomic_t rx_pool_urbs; kernel_ulong_t features; + bool usb_ep_cmd_is_bulk; /* firmware settings */ struct completion fw_load_wait; --- linux-3.13.0.orig/drivers/net/wireless/ath/carl9170/main.c +++ linux-3.13.0/drivers/net/wireless/ath/carl9170/main.c @@ -1708,7 +1708,9 @@ return 0; } -static void carl9170_op_flush(struct ieee80211_hw *hw, u32 queues, bool drop) +static void carl9170_op_flush(struct ieee80211_hw *hw, + struct ieee80211_vif *vif, + u32 queues, bool drop) { struct ar9170 *ar = hw->priv; unsigned int vid; --- linux-3.13.0.orig/drivers/net/wireless/ath/carl9170/usb.c +++ linux-3.13.0/drivers/net/wireless/ath/carl9170/usb.c @@ -621,9 +621,16 @@ goto err_free; } - usb_fill_int_urb(urb, ar->udev, usb_sndintpipe(ar->udev, - AR9170_USB_EP_CMD), cmd, cmd->hdr.len + 4, - carl9170_usb_cmd_complete, ar, 1); + if (ar->usb_ep_cmd_is_bulk) + usb_fill_bulk_urb(urb, ar->udev, + usb_sndbulkpipe(ar->udev, AR9170_USB_EP_CMD), + cmd, cmd->hdr.len + 4, + carl9170_usb_cmd_complete, ar); + else + usb_fill_int_urb(urb, ar->udev, + usb_sndintpipe(ar->udev, AR9170_USB_EP_CMD), + cmd, cmd->hdr.len + 4, + carl9170_usb_cmd_complete, ar, 1); if (free_buf) urb->transfer_flags |= URB_FREE_BUFFER; @@ -1032,9 +1039,10 @@ static int carl9170_usb_probe(struct usb_interface *intf, const struct usb_device_id *id) { + struct usb_endpoint_descriptor *ep; struct ar9170 *ar; struct usb_device *udev; - int err; + int i, err; err = usb_reset_device(interface_to_usbdev(intf)); if (err) @@ -1050,6 +1058,21 @@ ar->intf = intf; ar->features = id->driver_info; + /* We need to remember the type of endpoint 4 because it differs + * between high- and full-speed configuration. The high-speed + * configuration specifies it as interrupt and the full-speed + * configuration as bulk endpoint. This information is required + * later when sending urbs to that endpoint. + */ + for (i = 0; i < intf->cur_altsetting->desc.bNumEndpoints; ++i) { + ep = &intf->cur_altsetting->endpoint[i].desc; + + if (usb_endpoint_num(ep) == AR9170_USB_EP_CMD && + usb_endpoint_dir_out(ep) && + usb_endpoint_type(ep) == USB_ENDPOINT_XFER_BULK) + ar->usb_ep_cmd_is_bulk = true; + } + usb_set_intfdata(intf, ar); SET_IEEE80211_DEV(ar->hw, &intf->dev); --- linux-3.13.0.orig/drivers/net/wireless/b43/b43.h +++ linux-3.13.0/drivers/net/wireless/b43/b43.h @@ -731,8 +731,6 @@ struct b43_request_fw_context { /* The device we are requesting the fw for. */ struct b43_wldev *dev; - /* a completion event structure needed if this call is asynchronous */ - struct completion fw_load_complete; /* a pointer to the firmware object */ const struct firmware *blob; /* The type of firmware to request. */ @@ -809,6 +807,8 @@ struct b43_wldev { struct b43_bus_dev *dev; struct b43_wl *wl; + /* a completion event structure needed if this call is asynchronous */ + struct completion fw_load_complete; /* The device initialization status. * Use b43_status() to query. */ --- linux-3.13.0.orig/drivers/net/wireless/b43/main.c +++ linux-3.13.0/drivers/net/wireless/b43/main.c @@ -2070,6 +2070,7 @@ static void b43_release_firmware(struct b43_wldev *dev) { + complete(&dev->fw_load_complete); b43_do_release_fw(&dev->fw.ucode); b43_do_release_fw(&dev->fw.pcm); b43_do_release_fw(&dev->fw.initvals); @@ -2095,7 +2096,7 @@ struct b43_request_fw_context *ctx = context; ctx->blob = firmware; - complete(&ctx->fw_load_complete); + complete(&ctx->dev->fw_load_complete); } int b43_do_request_fw(struct b43_request_fw_context *ctx, @@ -2142,7 +2143,7 @@ } if (async) { /* do this part asynchronously */ - init_completion(&ctx->fw_load_complete); + init_completion(&ctx->dev->fw_load_complete); err = request_firmware_nowait(THIS_MODULE, 1, ctx->fwname, ctx->dev->dev->dev, GFP_KERNEL, ctx, b43_fw_cb); @@ -2150,12 +2151,11 @@ pr_err("Unable to load firmware\n"); return err; } - /* stall here until fw ready */ - wait_for_completion(&ctx->fw_load_complete); + wait_for_completion(&ctx->dev->fw_load_complete); if (ctx->blob) goto fw_ready; /* On some ARM systems, the async request will fail, but the next sync - * request works. For this reason, we dall through here + * request works. For this reason, we fall through here */ } err = request_firmware(&ctx->blob, ctx->fwname, @@ -2424,6 +2424,7 @@ static int b43_one_core_attach(struct b43_bus_dev *dev, struct b43_wl *wl); static void b43_one_core_detach(struct b43_bus_dev *dev); +static int b43_rng_init(struct b43_wl *wl); static void b43_request_firmware(struct work_struct *work) { @@ -2475,6 +2476,10 @@ goto err_one_core_detach; wl->hw_registred = true; b43_leds_register(wl->current_dev); + + /* Register HW RNG driver */ + b43_rng_init(wl); + goto out; err_one_core_detach: @@ -4636,9 +4641,6 @@ if (!dev || b43_status(dev) != B43_STAT_INITIALIZED) return; - /* Unregister HW RNG driver */ - b43_rng_exit(dev->wl); - b43_set_status(dev, B43_STAT_UNINIT); /* Stop the microcode PSM. */ @@ -4795,9 +4797,6 @@ b43_set_status(dev, B43_STAT_INITIALIZED); - /* Register HW RNG driver */ - b43_rng_init(dev->wl); - out: return err; @@ -5464,6 +5463,9 @@ b43_one_core_detach(wldev->dev); + /* Unregister HW RNG driver */ + b43_rng_exit(wl); + b43_leds_unregister(wl); ieee80211_free_hw(wl->hw); @@ -5541,6 +5543,9 @@ b43_one_core_detach(dev); + /* Unregister HW RNG driver */ + b43_rng_exit(wl); + if (list_empty(&wl->devlist)) { b43_leds_unregister(wl); /* Last core on the chip unregistered. --- linux-3.13.0.orig/drivers/net/wireless/b43/phy_n.c +++ linux-3.13.0/drivers/net/wireless/b43/phy_n.c @@ -5176,22 +5176,22 @@ int ch = new_channel->hw_value; u16 old_band_5ghz; - u32 tmp32; + u16 tmp16; old_band_5ghz = b43_phy_read(dev, B43_NPHY_BANDCTL) & B43_NPHY_BANDCTL_5GHZ; if (new_channel->band == IEEE80211_BAND_5GHZ && !old_band_5ghz) { - tmp32 = b43_read32(dev, B43_MMIO_PSM_PHY_HDR); - b43_write32(dev, B43_MMIO_PSM_PHY_HDR, tmp32 | 4); + tmp16 = b43_read16(dev, B43_MMIO_PSM_PHY_HDR); + b43_write16(dev, B43_MMIO_PSM_PHY_HDR, tmp16 | 4); b43_phy_set(dev, B43_PHY_B_BBCFG, 0xC000); - b43_write32(dev, B43_MMIO_PSM_PHY_HDR, tmp32); + b43_write16(dev, B43_MMIO_PSM_PHY_HDR, tmp16); b43_phy_set(dev, B43_NPHY_BANDCTL, B43_NPHY_BANDCTL_5GHZ); } else if (new_channel->band == IEEE80211_BAND_2GHZ && old_band_5ghz) { b43_phy_mask(dev, B43_NPHY_BANDCTL, ~B43_NPHY_BANDCTL_5GHZ); - tmp32 = b43_read32(dev, B43_MMIO_PSM_PHY_HDR); - b43_write32(dev, B43_MMIO_PSM_PHY_HDR, tmp32 | 4); + tmp16 = b43_read16(dev, B43_MMIO_PSM_PHY_HDR); + b43_write16(dev, B43_MMIO_PSM_PHY_HDR, tmp16 | 4); b43_phy_mask(dev, B43_PHY_B_BBCFG, 0x3FFF); - b43_write32(dev, B43_MMIO_PSM_PHY_HDR, tmp32); + b43_write16(dev, B43_MMIO_PSM_PHY_HDR, tmp16); } b43_chantab_phy_upload(dev, e); --- linux-3.13.0.orig/drivers/net/wireless/b43/xmit.c +++ linux-3.13.0/drivers/net/wireless/b43/xmit.c @@ -810,9 +810,13 @@ break; case B43_PHYTYPE_G: status.band = IEEE80211_BAND_2GHZ; - /* chanid is the radio channel cookie value as used - * to tune the radio. */ - status.freq = chanid + 2400; + /* Somewhere between 478.104 and 508.1084 firmware for G-PHY + * has been modified to be compatible with N-PHY and others. + */ + if (dev->fw.rev >= 508) + status.freq = ieee80211_channel_to_frequency(chanid, status.band); + else + status.freq = chanid + 2400; break; case B43_PHYTYPE_N: case B43_PHYTYPE_LP: @@ -821,10 +825,10 @@ * channel number in b43. */ if (chanstat & B43_RX_CHAN_5GHZ) { status.band = IEEE80211_BAND_5GHZ; - status.freq = b43_freq_to_channel_5ghz(chanid); + status.freq = b43_channel_to_freq_5ghz(chanid); } else { status.band = IEEE80211_BAND_2GHZ; - status.freq = b43_freq_to_channel_2ghz(chanid); + status.freq = b43_channel_to_freq_2ghz(chanid); } break; default: --- linux-3.13.0.orig/drivers/net/wireless/b43legacy/main.c +++ linux-3.13.0/drivers/net/wireless/b43legacy/main.c @@ -3919,6 +3919,7 @@ * as the ieee80211 unreg will destroy the workqueue. */ cancel_work_sync(&wldev->restart_work); cancel_work_sync(&wl->firmware_load); + complete(&wldev->fw_load_complete); B43legacy_WARN_ON(!wl); if (!wldev->fw.ucode) --- linux-3.13.0.orig/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c +++ linux-3.13.0/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c @@ -426,6 +426,12 @@ bool blocked; int err; + if (!wl->ucode.bcm43xx_bomminor) { + err = brcms_request_fw(wl, wl->wlc->hw->d11core); + if (err) + return -ENOENT; + } + ieee80211_wake_queues(hw); spin_lock_bh(&wl->lock); blocked = brcms_rfkill_set_hw_state(wl); @@ -433,14 +439,6 @@ if (!blocked) wiphy_rfkill_stop_polling(wl->pub->ieee_hw->wiphy); - if (!wl->ucode.bcm43xx_bomminor) { - err = brcms_request_fw(wl, wl->wlc->hw->d11core); - if (err) { - brcms_remove(wl->wlc->hw->d11core); - return -ENOENT; - } - } - spin_lock_bh(&wl->lock); /* avoid acknowledging frames before a non-monitor device is added */ wl->mute_tx = true; @@ -899,7 +897,8 @@ return result; } -static void brcms_ops_flush(struct ieee80211_hw *hw, u32 queues, bool drop) +static void brcms_ops_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif, + u32 queues, bool drop) { struct brcms_info *wl = hw->priv; int ret; --- linux-3.13.0.orig/drivers/net/wireless/cw1200/sta.c +++ linux-3.13.0/drivers/net/wireless/cw1200/sta.c @@ -935,7 +935,8 @@ return ret; } -void cw1200_flush(struct ieee80211_hw *hw, u32 queues, bool drop) +void cw1200_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif, + u32 queues, bool drop) { struct cw1200_common *priv = hw->priv; --- linux-3.13.0.orig/drivers/net/wireless/cw1200/sta.h +++ linux-3.13.0/drivers/net/wireless/cw1200/sta.h @@ -40,7 +40,8 @@ int cw1200_set_rts_threshold(struct ieee80211_hw *hw, u32 value); -void cw1200_flush(struct ieee80211_hw *hw, u32 queues, bool drop); +void cw1200_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif, + u32 queues, bool drop); u64 cw1200_prepare_multicast(struct ieee80211_hw *hw, struct netdev_hw_addr_list *mc_list); --- linux-3.13.0.orig/drivers/net/wireless/hostap/hostap_hw.c +++ linux-3.13.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-3.13.0.orig/drivers/net/wireless/iwlegacy/common.c +++ linux-3.13.0/drivers/net/wireless/iwlegacy/common.c @@ -4702,7 +4702,8 @@ } EXPORT_SYMBOL(il_mac_change_interface); -void il_mac_flush(struct ieee80211_hw *hw, u32 queues, bool drop) +void il_mac_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif, + u32 queues, bool drop) { struct il_priv *il = hw->priv; unsigned long timeout = jiffies + msecs_to_jiffies(500); --- linux-3.13.0.orig/drivers/net/wireless/iwlegacy/common.h +++ linux-3.13.0/drivers/net/wireless/iwlegacy/common.h @@ -1722,7 +1722,8 @@ struct ieee80211_vif *vif); int il_mac_change_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif, enum nl80211_iftype newtype, bool newp2p); -void il_mac_flush(struct ieee80211_hw *hw, u32 queues, bool drop); +void il_mac_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif, + u32 queues, bool drop); int il_alloc_txq_mem(struct il_priv *il); void il_free_txq_mem(struct il_priv *il); --- linux-3.13.0.orig/drivers/net/wireless/iwlwifi/dvm/commands.h +++ linux-3.13.0/drivers/net/wireless/iwlwifi/dvm/commands.h @@ -966,21 +966,21 @@ /* WiFi queues mask */ -#define IWL_SCD_BK_MSK cpu_to_le32(BIT(0)) -#define IWL_SCD_BE_MSK cpu_to_le32(BIT(1)) -#define IWL_SCD_VI_MSK cpu_to_le32(BIT(2)) -#define IWL_SCD_VO_MSK cpu_to_le32(BIT(3)) -#define IWL_SCD_MGMT_MSK cpu_to_le32(BIT(3)) +#define IWL_SCD_BK_MSK BIT(0) +#define IWL_SCD_BE_MSK BIT(1) +#define IWL_SCD_VI_MSK BIT(2) +#define IWL_SCD_VO_MSK BIT(3) +#define IWL_SCD_MGMT_MSK BIT(3) /* PAN queues mask */ -#define IWL_PAN_SCD_BK_MSK cpu_to_le32(BIT(4)) -#define IWL_PAN_SCD_BE_MSK cpu_to_le32(BIT(5)) -#define IWL_PAN_SCD_VI_MSK cpu_to_le32(BIT(6)) -#define IWL_PAN_SCD_VO_MSK cpu_to_le32(BIT(7)) -#define IWL_PAN_SCD_MGMT_MSK cpu_to_le32(BIT(7)) -#define IWL_PAN_SCD_MULTICAST_MSK cpu_to_le32(BIT(8)) +#define IWL_PAN_SCD_BK_MSK BIT(4) +#define IWL_PAN_SCD_BE_MSK BIT(5) +#define IWL_PAN_SCD_VI_MSK BIT(6) +#define IWL_PAN_SCD_VO_MSK BIT(7) +#define IWL_PAN_SCD_MGMT_MSK BIT(7) +#define IWL_PAN_SCD_MULTICAST_MSK BIT(8) -#define IWL_AGG_TX_QUEUE_MSK cpu_to_le32(0xffc00) +#define IWL_AGG_TX_QUEUE_MSK 0xffc00 #define IWL_DROP_ALL BIT(1) @@ -1005,12 +1005,17 @@ * 1: Dump multiple MSDU according to PS, INVALID STA, TTL, TID disable. * 2: Dump all FIFO */ -struct iwl_txfifo_flush_cmd { +struct iwl_txfifo_flush_cmd_v3 { __le32 queue_control; __le16 flush_control; __le16 reserved; } __packed; +struct iwl_txfifo_flush_cmd_v2 { + __le16 queue_control; + __le16 flush_control; +} __packed; + /* * REPLY_WEP_KEY = 0x20 */ --- linux-3.13.0.orig/drivers/net/wireless/iwlwifi/dvm/dev.h +++ linux-3.13.0/drivers/net/wireless/iwlwifi/dvm/dev.h @@ -708,7 +708,6 @@ unsigned long reload_jiffies; int reload_count; bool ucode_loaded; - bool init_ucode_run; /* Don't run init uCode again */ u8 plcp_delta_threshold; --- linux-3.13.0.orig/drivers/net/wireless/iwlwifi/dvm/lib.c +++ linux-3.13.0/drivers/net/wireless/iwlwifi/dvm/lib.c @@ -138,38 +138,38 @@ */ int iwlagn_txfifo_flush(struct iwl_priv *priv, u32 scd_q_msk) { - struct iwl_txfifo_flush_cmd flush_cmd; - struct iwl_host_cmd cmd = { - .id = REPLY_TXFIFO_FLUSH, - .len = { sizeof(struct iwl_txfifo_flush_cmd), }, - .flags = CMD_SYNC, - .data = { &flush_cmd, }, + struct iwl_txfifo_flush_cmd_v3 flush_cmd_v3 = { + .flush_control = cpu_to_le16(IWL_DROP_ALL), + }; + struct iwl_txfifo_flush_cmd_v2 flush_cmd_v2 = { + .flush_control = cpu_to_le16(IWL_DROP_ALL), }; - memset(&flush_cmd, 0, sizeof(flush_cmd)); + u32 queue_control = IWL_SCD_VO_MSK | IWL_SCD_VI_MSK | + IWL_SCD_BE_MSK | IWL_SCD_BK_MSK | IWL_SCD_MGMT_MSK; - flush_cmd.queue_control = IWL_SCD_VO_MSK | IWL_SCD_VI_MSK | - IWL_SCD_BE_MSK | IWL_SCD_BK_MSK | - IWL_SCD_MGMT_MSK; if ((priv->valid_contexts != BIT(IWL_RXON_CTX_BSS))) - flush_cmd.queue_control |= IWL_PAN_SCD_VO_MSK | - IWL_PAN_SCD_VI_MSK | - IWL_PAN_SCD_BE_MSK | - IWL_PAN_SCD_BK_MSK | - IWL_PAN_SCD_MGMT_MSK | - IWL_PAN_SCD_MULTICAST_MSK; + queue_control |= IWL_PAN_SCD_VO_MSK | IWL_PAN_SCD_VI_MSK | + IWL_PAN_SCD_BE_MSK | IWL_PAN_SCD_BK_MSK | + IWL_PAN_SCD_MGMT_MSK | + IWL_PAN_SCD_MULTICAST_MSK; if (priv->nvm_data->sku_cap_11n_enable) - flush_cmd.queue_control |= IWL_AGG_TX_QUEUE_MSK; + queue_control |= IWL_AGG_TX_QUEUE_MSK; if (scd_q_msk) - flush_cmd.queue_control = cpu_to_le32(scd_q_msk); - - IWL_DEBUG_INFO(priv, "queue control: 0x%x\n", - flush_cmd.queue_control); - flush_cmd.flush_control = cpu_to_le16(IWL_DROP_ALL); + queue_control = scd_q_msk; - return iwl_dvm_send_cmd(priv, &cmd); + IWL_DEBUG_INFO(priv, "queue control: 0x%x\n", queue_control); + flush_cmd_v3.queue_control = cpu_to_le32(queue_control); + flush_cmd_v2.queue_control = cpu_to_le16((u16)queue_control); + + if (IWL_UCODE_API(priv->fw->ucode_ver) > 2) + return iwl_dvm_send_cmd_pdu(priv, REPLY_TXFIFO_FLUSH, 0, + sizeof(flush_cmd_v3), + &flush_cmd_v3); + return iwl_dvm_send_cmd_pdu(priv, REPLY_TXFIFO_FLUSH, 0, + sizeof(flush_cmd_v2), &flush_cmd_v2); } void iwlagn_dev_txfifo_flush(struct iwl_priv *priv) @@ -1023,7 +1023,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-3.13.0.orig/drivers/net/wireless/iwlwifi/dvm/mac80211.c +++ linux-3.13.0/drivers/net/wireless/iwlwifi/dvm/mac80211.c @@ -704,6 +704,24 @@ return ret; } +static inline bool iwl_enable_rx_ampdu(const struct iwl_cfg *cfg) +{ + if (iwlwifi_mod_params.disable_11n & IWL_DISABLE_HT_RXAGG) + return false; + return true; +} + +static inline bool iwl_enable_tx_ampdu(const struct iwl_cfg *cfg) +{ + if (iwlwifi_mod_params.disable_11n & IWL_DISABLE_HT_TXAGG) + return false; + if (iwlwifi_mod_params.disable_11n & IWL_ENABLE_HT_TXAGG) + return true; + + /* disabled by default */ + return false; +} + static int iwlagn_mac_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif, enum ieee80211_ampdu_mlme_action action, @@ -725,7 +743,7 @@ switch (action) { case IEEE80211_AMPDU_RX_START: - if (iwlwifi_mod_params.disable_11n & IWL_DISABLE_HT_RXAGG) + if (!iwl_enable_rx_ampdu(priv->cfg)) break; IWL_DEBUG_HT(priv, "start Rx\n"); ret = iwl_sta_rx_agg_start(priv, sta, tid, *ssn); @@ -737,7 +755,7 @@ case IEEE80211_AMPDU_TX_START: if (!priv->trans->ops->txq_enable) break; - if (iwlwifi_mod_params.disable_11n & IWL_DISABLE_HT_TXAGG) + if (!iwl_enable_tx_ampdu(priv->cfg)) break; IWL_DEBUG_HT(priv, "start Tx\n"); ret = iwlagn_tx_agg_start(priv, vif, sta, tid, ssn); @@ -1081,9 +1099,11 @@ FIF_BCN_PRBRESP_PROMISC | FIF_CONTROL; } -static void iwlagn_mac_flush(struct ieee80211_hw *hw, u32 queues, bool drop) +static void iwlagn_mac_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif, + u32 queues, bool drop) { struct iwl_priv *priv = IWL_MAC80211_GET_DVM(hw); + u32 scd_queues; mutex_lock(&priv->mutex); IWL_DEBUG_MAC80211(priv, "enter\n"); @@ -1097,18 +1117,19 @@ goto done; } - /* - * mac80211 will not push any more frames for transmit - * until the flush is completed - */ - if (drop) { - IWL_DEBUG_MAC80211(priv, "send flush command\n"); - if (iwlagn_txfifo_flush(priv, 0)) { - IWL_ERR(priv, "flush request fail\n"); - goto done; - } + scd_queues = BIT(priv->cfg->base_params->num_of_queues) - 1; + scd_queues &= ~(BIT(IWL_IPAN_CMD_QUEUE_NUM) | + BIT(IWL_DEFAULT_CMD_QUEUE_NUM)); + + if (vif) + scd_queues &= ~BIT(vif->hw_queue[IEEE80211_AC_VO]); + + IWL_DEBUG_TX_QUEUES(priv, "Flushing SCD queues: 0x%x\n", scd_queues); + if (iwlagn_txfifo_flush(priv, scd_queues)) { + IWL_ERR(priv, "flush request fail\n"); + goto done; } - IWL_DEBUG_MAC80211(priv, "wait transmit/flush all frames\n"); + IWL_DEBUG_TX_QUEUES(priv, "wait transmit/flush all frames\n"); iwl_trans_wait_tx_queue_empty(priv->trans); done: mutex_unlock(&priv->mutex); --- linux-3.13.0.orig/drivers/net/wireless/iwlwifi/dvm/main.c +++ linux-3.13.0/drivers/net/wireless/iwlwifi/dvm/main.c @@ -252,13 +252,17 @@ struct iwl_priv *priv = container_of(work, struct iwl_priv, bt_runtime_config); + mutex_lock(&priv->mutex); if (test_bit(STATUS_EXIT_PENDING, &priv->status)) - return; + goto out; /* dont send host command if rf-kill is on */ if (!iwl_is_ready_rf(priv)) - return; + goto out; + iwlagn_send_advance_bt_config(priv); +out: + mutex_unlock(&priv->mutex); } static void iwl_bg_bt_full_concurrency(struct work_struct *work) --- linux-3.13.0.orig/drivers/net/wireless/iwlwifi/dvm/sta.c +++ linux-3.13.0/drivers/net/wireless/iwlwifi/dvm/sta.c @@ -590,6 +590,7 @@ sizeof(priv->tid_data[sta_id][tid])); priv->stations[sta_id].used &= ~IWL_STA_DRIVER_ACTIVE; + priv->stations[sta_id].used &= ~IWL_STA_UCODE_INPROGRESS; priv->num_stations--; --- linux-3.13.0.orig/drivers/net/wireless/iwlwifi/dvm/tx.c +++ linux-3.13.0/drivers/net/wireless/iwlwifi/dvm/tx.c @@ -1291,8 +1291,6 @@ struct iwl_compressed_ba_resp *ba_resp = (void *)pkt->data; struct iwl_ht_agg *agg; struct sk_buff_head reclaimed_skbs; - struct ieee80211_tx_info *info; - struct ieee80211_hdr *hdr; struct sk_buff *skb; int sta_id; int tid; @@ -1379,22 +1377,28 @@ freed = 0; skb_queue_walk(&reclaimed_skbs, skb) { - hdr = (struct ieee80211_hdr *)skb->data; + struct ieee80211_hdr *hdr = (void *)skb->data; + struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); if (ieee80211_is_data_qos(hdr->frame_control)) freed++; else WARN_ON_ONCE(1); - info = IEEE80211_SKB_CB(skb); iwl_trans_free_tx_cmd(priv->trans, info->driver_data[1]); + memset(&info->status, 0, sizeof(info->status)); + /* Packet was transmitted successfully, failures come as single + * frames because before failing a frame the firmware transmits + * it without aggregation at least once. + */ + info->flags |= IEEE80211_TX_STAT_ACK; + if (freed == 1) { /* this is the first skb we deliver in this batch */ /* put the rate scaling data there */ info = IEEE80211_SKB_CB(skb); memset(&info->status, 0, sizeof(info->status)); - info->flags |= IEEE80211_TX_STAT_ACK; info->flags |= IEEE80211_TX_STAT_AMPDU; info->status.ampdu_ack_len = ba_resp->txed_2_done; info->status.ampdu_len = ba_resp->txed; --- linux-3.13.0.orig/drivers/net/wireless/iwlwifi/dvm/ucode.c +++ linux-3.13.0/drivers/net/wireless/iwlwifi/dvm/ucode.c @@ -424,9 +424,6 @@ if (!priv->fw->img[IWL_UCODE_INIT].sec[0].len) return 0; - if (priv->init_ucode_run) - return 0; - iwl_init_notification_wait(&priv->notif_wait, &calib_wait, calib_complete, ARRAY_SIZE(calib_complete), iwlagn_wait_calib, priv); @@ -446,8 +443,6 @@ */ ret = iwl_wait_notification(&priv->notif_wait, &calib_wait, UCODE_CALIB_TIMEOUT); - if (!ret) - priv->init_ucode_run = true; goto out; --- linux-3.13.0.orig/drivers/net/wireless/iwlwifi/iwl-7000.c +++ linux-3.13.0/drivers/net/wireless/iwlwifi/iwl-7000.c @@ -222,4 +222,5 @@ }; 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)); --- linux-3.13.0.orig/drivers/net/wireless/iwlwifi/iwl-config.h +++ linux-3.13.0/drivers/net/wireless/iwlwifi/iwl-config.h @@ -119,6 +119,8 @@ #define IWL_LONG_WD_TIMEOUT 10000 #define IWL_MAX_WD_TIMEOUT 120000 +#define IWL_DEFAULT_MAX_TX_POWER 22 + /* Antenna presence definitions */ #define ANT_NONE 0x0 #define ANT_A BIT(0) --- linux-3.13.0.orig/drivers/net/wireless/iwlwifi/iwl-drv.c +++ linux-3.13.0/drivers/net/wireless/iwlwifi/iwl-drv.c @@ -1247,7 +1247,7 @@ MODULE_PARM_DESC(swcrypto, "using crypto in software (default 0 [hardware])"); module_param_named(11n_disable, iwlwifi_mod_params.disable_11n, uint, S_IRUGO); MODULE_PARM_DESC(11n_disable, - "disable 11n functionality, bitmap: 1: full, 2: agg TX, 4: agg RX"); + "disable 11n functionality, bitmap: 1: full, 2: disable agg TX, 4: disable agg RX, 8 enable agg TX"); module_param_named(amsdu_size_8K, iwlwifi_mod_params.amsdu_size_8K, int, S_IRUGO); MODULE_PARM_DESC(amsdu_size_8K, "enable 8K amsdu size (default 0)"); --- linux-3.13.0.orig/drivers/net/wireless/iwlwifi/iwl-fw.h +++ linux-3.13.0/drivers/net/wireless/iwlwifi/iwl-fw.h @@ -88,7 +88,6 @@ * connection when going back to D0 * @IWL_UCODE_TLV_FLAGS_NEW_NSOFFL_SMALL: new NS offload (small version) * @IWL_UCODE_TLV_FLAGS_NEW_NSOFFL_LARGE: new NS offload (large version) - * @IWL_UCODE_TLV_FLAGS_SCHED_SCAN: this uCode image supports scheduled scan. * @IWL_UCODE_TLV_FLAGS_STA_KEY_CMD: new ADD_STA and ADD_STA_KEY command API * @IWL_UCODE_TLV_FLAGS_DEVICE_PS_CMD: support device wide power command * containing CAM (Continuous Active Mode) indication. @@ -110,7 +109,6 @@ IWL_UCODE_TLV_FLAGS_D3_CONTINUITY_API = BIT(14), IWL_UCODE_TLV_FLAGS_NEW_NSOFFL_SMALL = BIT(15), IWL_UCODE_TLV_FLAGS_NEW_NSOFFL_LARGE = BIT(16), - IWL_UCODE_TLV_FLAGS_SCHED_SCAN = BIT(17), IWL_UCODE_TLV_FLAGS_STA_KEY_CMD = BIT(19), IWL_UCODE_TLV_FLAGS_DEVICE_PS_CMD = BIT(20), IWL_UCODE_TLV_FLAGS_UAPSD_SUPPORT = BIT(24), --- linux-3.13.0.orig/drivers/net/wireless/iwlwifi/iwl-modparams.h +++ linux-3.13.0/drivers/net/wireless/iwlwifi/iwl-modparams.h @@ -79,9 +79,12 @@ IWL_POWER_NUM }; -#define IWL_DISABLE_HT_ALL BIT(0) -#define IWL_DISABLE_HT_TXAGG BIT(1) -#define IWL_DISABLE_HT_RXAGG BIT(2) +enum iwl_disable_11n { + IWL_DISABLE_HT_ALL = BIT(0), + IWL_DISABLE_HT_TXAGG = BIT(1), + IWL_DISABLE_HT_RXAGG = BIT(2), + IWL_ENABLE_HT_TXAGG = BIT(3), +}; /** * struct iwl_mod_params @@ -90,7 +93,7 @@ * * @sw_crypto: using hardware encryption, default = 0 * @disable_11n: disable 11n capabilities, default = 0, - * use IWL_DISABLE_HT_* constants + * use IWL_[DIS,EN]ABLE_HT_* constants * @amsdu_size_8K: enable 8K amsdu size, default = 0 * @restart_fw: restart firmware, default = 1 * @wd_disable: enable stuck queue check, default = 0 --- linux-3.13.0.orig/drivers/net/wireless/iwlwifi/iwl-nvm-parse.c +++ linux-3.13.0/drivers/net/wireless/iwlwifi/iwl-nvm-parse.c @@ -118,8 +118,6 @@ #define LAST_2GHZ_HT_PLUS 9 #define LAST_5GHZ_HT 161 -#define DEFAULT_MAX_TX_POWER 16 - /* rate data (static) */ static struct ieee80211_rate iwl_cfg80211_rates[] = { { .bitrate = 1 * 10, .hw_value = 0, .hw_value_short = 0, }, @@ -182,6 +180,11 @@ for (ch_idx = 0; ch_idx < IWL_NUM_CHANNELS; ch_idx++) { ch_flags = __le16_to_cpup(nvm_ch_flags + ch_idx); + + if (ch_idx >= NUM_2GHZ_CHANNELS && + !data->sku_cap_band_52GHz_enable) + ch_flags &= ~NVM_CHANNEL_VALID; + if (!(ch_flags & NVM_CHANNEL_VALID)) { IWL_DEBUG_EEPROM(dev, "Ch. %d Flags %x [%sGHz] - No traffic\n", @@ -237,7 +240,7 @@ * Default value - highest tx power value. max_power * is not used in mvm, and is used for backwards compatibility */ - channel->max_power = DEFAULT_MAX_TX_POWER; + channel->max_power = IWL_DEFAULT_MAX_TX_POWER; is_5ghz = channel->band == IEEE80211_BAND_5GHZ; IWL_DEBUG_EEPROM(dev, "Ch. %d [%sGHz] %s%s%s%s%s%s(0x%02x %ddBm): Ad-Hoc %ssupported\n", --- linux-3.13.0.orig/drivers/net/wireless/iwlwifi/iwl-prph.h +++ linux-3.13.0/drivers/net/wireless/iwlwifi/iwl-prph.h @@ -274,4 +274,8 @@ /*********************** END TX SCHEDULER *************************************/ +/* Oscillator clock */ +#define OSC_CLK (0xa04068) +#define OSC_CLK_FORCE_CONTROL (0x8) + #endif /* __iwl_prph_h__ */ --- linux-3.13.0.orig/drivers/net/wireless/iwlwifi/iwl-trans.h +++ linux-3.13.0/drivers/net/wireless/iwlwifi/iwl-trans.h @@ -484,6 +484,7 @@ * Set during transport allocation. * @hw_id_str: a string with info about HW ID. Set during transport allocation. * @pm_support: set to true in start_hw if link pm is supported + * @ltr_enabled: set to true if the LTR is enabled * @dev_cmd_pool: pool for Tx cmd allocation - for internal use only. * The user should use iwl_trans_{alloc,free}_tx_cmd. * @dev_cmd_headroom: room needed for the transport's private use before the @@ -508,6 +509,7 @@ u8 rx_mpdu_cmd, rx_mpdu_cmd_hdr_size; bool pm_support; + bool ltr_enabled; /* The following fields are internal only */ struct kmem_cache *dev_cmd_pool; --- linux-3.13.0.orig/drivers/net/wireless/iwlwifi/mvm/bt-coex.c +++ linux-3.13.0/drivers/net/wireless/iwlwifi/mvm/bt-coex.c @@ -871,8 +871,11 @@ lockdep_assert_held(&mvm->mutex); - /* Rssi update while not associated ?! */ - if (WARN_ON_ONCE(mvmvif->ap_sta_id == IWL_MVM_STATION_COUNT)) + /* + * Rssi update while not associated - can happen since the statistics + * are handled asynchronously + */ + if (mvmvif->ap_sta_id == IWL_MVM_STATION_COUNT) return; /* No BT - reports should be disabled */ --- linux-3.13.0.orig/drivers/net/wireless/iwlwifi/mvm/d3.c +++ linux-3.13.0/drivers/net/wireless/iwlwifi/mvm/d3.c @@ -297,12 +297,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; --- linux-3.13.0.orig/drivers/net/wireless/iwlwifi/mvm/debugfs.c +++ linux-3.13.0/drivers/net/wireless/iwlwifi/mvm/debugfs.c @@ -63,6 +63,7 @@ #include "mvm.h" #include "sta.h" #include "iwl-io.h" +#include "fw-error-dump.h" struct iwl_dbgfs_mvm_ctx { struct iwl_mvm *mvm; @@ -139,6 +140,48 @@ return ret; } +static int iwl_dbgfs_fw_error_dump_open(struct inode *inode, struct file *file) +{ + struct iwl_mvm *mvm = inode->i_private; + int ret; + + if (!mvm) + return -EINVAL; + + mutex_lock(&mvm->mutex); + if (!mvm->fw_error_dump) { + ret = -ENODATA; + goto out; + } + + file->private_data = mvm->fw_error_dump; + mvm->fw_error_dump = NULL; + ret = 0; + +out: + mutex_unlock(&mvm->mutex); + return ret; +} + +static ssize_t iwl_dbgfs_fw_error_dump_read(struct file *file, + char __user *user_buf, + size_t count, loff_t *ppos) +{ + struct iwl_fw_error_dump_file *dump_file = file->private_data; + + return simple_read_from_buffer(user_buf, count, ppos, + dump_file, + le32_to_cpu(dump_file->file_len)); +} + +static int iwl_dbgfs_fw_error_dump_release(struct inode *inode, + struct file *file) +{ + vfree(file->private_data); + + return 0; +} + static ssize_t iwl_dbgfs_sram_read(struct file *file, char __user *user_buf, size_t count, loff_t *ppos) { @@ -1170,6 +1213,12 @@ MVM_DEBUGFS_WRITE_FILE_OPS(fw_restart); MVM_DEBUGFS_READ_WRITE_FILE_OPS(scan_ant_rxchain); +static const struct file_operations iwl_dbgfs_fw_error_dump_ops = { + .open = iwl_dbgfs_fw_error_dump_open, + .read = iwl_dbgfs_fw_error_dump_read, + .release = iwl_dbgfs_fw_error_dump_release, +}; + #ifdef CONFIG_PM_SLEEP MVM_DEBUGFS_READ_WRITE_FILE_OPS(d3_sram); #endif @@ -1189,6 +1238,7 @@ MVM_DEBUGFS_ADD_FILE(sta_drain, mvm->debugfs_dir, S_IWUSR); MVM_DEBUGFS_ADD_FILE(sram, mvm->debugfs_dir, S_IWUSR | S_IRUSR); MVM_DEBUGFS_ADD_FILE(stations, dbgfs_dir, S_IRUSR); + MVM_DEBUGFS_ADD_FILE(fw_error_dump, dbgfs_dir, S_IRUSR); MVM_DEBUGFS_ADD_FILE(bt_notif, dbgfs_dir, S_IRUSR); MVM_DEBUGFS_ADD_FILE(bt_cmd, dbgfs_dir, S_IRUSR); if (mvm->fw->ucode_capa.flags & IWL_UCODE_TLV_FLAGS_DEVICE_PS_CMD) --- linux-3.13.0.orig/drivers/net/wireless/iwlwifi/mvm/fw-api-power.h +++ linux-3.13.0/drivers/net/wireless/iwlwifi/mvm/fw-api-power.h @@ -66,13 +66,46 @@ /* Power Management Commands, Responses, Notifications */ +/** + * enum iwl_ltr_config_flags - masks for LTR config command flags + * @LTR_CFG_FLAG_FEATURE_ENABLE: Feature operational status + * @LTR_CFG_FLAG_HW_DIS_ON_SHADOW_REG_ACCESS: allow LTR change on shadow + * memory access + * @LTR_CFG_FLAG_HW_EN_SHRT_WR_THROUGH: allow LTR msg send on ANY LTR + * reg change + * @LTR_CFG_FLAG_HW_DIS_ON_D0_2_D3: allow LTR msg send on transition from + * D0 to D3 + * @LTR_CFG_FLAG_SW_SET_SHORT: fixed static short LTR register + * @LTR_CFG_FLAG_SW_SET_LONG: fixed static short LONG register + * @LTR_CFG_FLAG_DENIE_C10_ON_PD: allow going into C10 on PD + */ +enum iwl_ltr_config_flags { + LTR_CFG_FLAG_FEATURE_ENABLE = BIT(0), + LTR_CFG_FLAG_HW_DIS_ON_SHADOW_REG_ACCESS = BIT(1), + LTR_CFG_FLAG_HW_EN_SHRT_WR_THROUGH = BIT(2), + LTR_CFG_FLAG_HW_DIS_ON_D0_2_D3 = BIT(3), + LTR_CFG_FLAG_SW_SET_SHORT = BIT(4), + LTR_CFG_FLAG_SW_SET_LONG = BIT(5), + LTR_CFG_FLAG_DENIE_C10_ON_PD = BIT(6), +}; + +/** + * struct iwl_ltr_config_cmd - configures the LTR + * @flags: See %enum iwl_ltr_config_flags + */ +struct iwl_ltr_config_cmd { + __le32 flags; + __le32 static_long; + __le32 static_short; +} __packed; + /* Radio LP RX Energy Threshold measured in dBm */ #define POWER_LPRX_RSSI_THRESHOLD 75 #define POWER_LPRX_RSSI_THRESHOLD_MAX 94 #define POWER_LPRX_RSSI_THRESHOLD_MIN 30 /** - * enum iwl_scan_flags - masks for power table command flags + * enum iwl_power_flags - masks for power table command flags * @POWER_FLAGS_POWER_SAVE_ENA_MSK: '1' Allow to save power by turning off * receiver and transmitter. '0' - does not allow. * @POWER_FLAGS_POWER_MANAGEMENT_ENA_MSK: '0' Driver disables power management, --- linux-3.13.0.orig/drivers/net/wireless/iwlwifi/mvm/fw-api.h +++ linux-3.13.0/drivers/net/wireless/iwlwifi/mvm/fw-api.h @@ -141,6 +141,7 @@ /* Power - legacy power table command */ POWER_TABLE_CMD = 0x77, + LTR_CONFIG = 0xee, /* Thermal Throttling*/ REPLY_THERMAL_MNG_BACKOFF = 0x7e, --- linux-3.13.0.orig/drivers/net/wireless/iwlwifi/mvm/fw-error-dump.h +++ linux-3.13.0/drivers/net/wireless/iwlwifi/mvm/fw-error-dump.h @@ -0,0 +1,106 @@ +/****************************************************************************** + * + * This file is provided under a dual BSD/GPLv2 license. When using or + * redistributing this file, you may do so under either license. + * + * GPL LICENSE SUMMARY + * + * Copyright(c) 2014 Intel Corporation. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution + * in the file called COPYING. + * + * Contact Information: + * Intel Linux Wireless + * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 + * + * BSD LICENSE + * + * Copyright(c) 2014 Intel Corporation. All rights reserved. + * 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 Intel Corporation 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 + * 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 __fw_error_dump_h__ +#define __fw_error_dump_h__ + +#include + +#define IWL_FW_ERROR_DUMP_BARKER 0x14789632 + +/** + * enum iwl_fw_error_dump_type - types of data in the dump file + * @IWL_FW_ERROR_DUMP_SRAM: + * @IWL_FW_ERROR_DUMP_REG: + */ +enum iwl_fw_error_dump_type { + IWL_FW_ERROR_DUMP_SRAM = 0, + IWL_FW_ERROR_DUMP_REG = 1, + + IWL_FW_ERROR_DUMP_MAX, +}; + +/** + * struct iwl_fw_error_dump_data - data for one type + * @type: %enum iwl_fw_error_dump_type + * @len: the length starting from %data - must be a multiplier of 4. + * @data: the data itself padded to be a multiplier of 4. + */ +struct iwl_fw_error_dump_data { + __le32 type; + __le32 len; + __u8 data[]; +} __packed __aligned(4); + +/** + * struct iwl_fw_error_dump_file - the layout of the header of the file + * @barker: must be %IWL_FW_ERROR_DUMP_BARKER + * @file_len: the length of all the file starting from %barker + * @data: array of %struct iwl_fw_error_dump_data + */ +struct iwl_fw_error_dump_file { + __le32 barker; + __le32 file_len; + u8 data[0]; +} __packed __aligned(4); + +#endif /* __fw_error_dump_h__ */ --- linux-3.13.0.orig/drivers/net/wireless/iwlwifi/mvm/fw.c +++ linux-3.13.0/drivers/net/wireless/iwlwifi/mvm/fw.c @@ -431,6 +431,15 @@ goto error; } + if (mvm->trans->ltr_enabled) { + struct iwl_ltr_config_cmd cmd = { + .flags = cpu_to_le32(LTR_CFG_FLAG_FEATURE_ENABLE), + }; + + WARN_ON(iwl_mvm_send_cmd_pdu(mvm, LTR_CONFIG, 0, + sizeof(cmd), &cmd)); + } + ret = iwl_mvm_power_update_device_mode(mvm); if (ret) goto error; --- linux-3.13.0.orig/drivers/net/wireless/iwlwifi/mvm/mac-ctxt.c +++ linux-3.13.0/drivers/net/wireless/iwlwifi/mvm/mac-ctxt.c @@ -566,13 +566,8 @@ if (vif->bss_conf.qos) cmd->qos_flags |= cpu_to_le32(MAC_QOS_FLG_UPDATE_EDCA); - /* Don't use cts to self as the fw doesn't support it currently. */ - if (vif->bss_conf.use_cts_prot) { + if (vif->bss_conf.use_cts_prot) cmd->protection_flags |= cpu_to_le32(MAC_PROT_FLG_TGG_PROTECT); - if (IWL_UCODE_API(mvm->fw->ucode_ver) >= 8) - cmd->protection_flags |= - cpu_to_le32(MAC_PROT_FLG_SELF_CTS_EN); - } /* * I think that we should enable these 2 flags regardless the HT PROT @@ -1153,10 +1148,18 @@ static void iwl_mvm_beacon_loss_iterator(void *_data, u8 *mac, struct ieee80211_vif *vif) { - u16 *id = _data; + struct iwl_missed_beacons_notif *missed_beacons = _data; struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); - if (mvmvif->id == *id) + if (mvmvif->id != (u16)le32_to_cpu(missed_beacons->mac_id)) + return; + + /* + * TODO: the threshold should be adjusted based on latency conditions, + * and/or in case of a CS flow on one of the other AP vifs. + */ + if (le32_to_cpu(missed_beacons->consec_missed_beacons_since_last_rx) > + IWL_MVM_MISSED_BEACONS_THRESHOLD) ieee80211_beacon_loss(vif); } @@ -1165,12 +1168,19 @@ struct iwl_device_cmd *cmd) { struct iwl_rx_packet *pkt = rxb_addr(rxb); - struct iwl_missed_beacons_notif *missed_beacons = (void *)pkt->data; - u16 id = (u16)le32_to_cpu(missed_beacons->mac_id); + struct iwl_missed_beacons_notif *mb = (void *)pkt->data; + + IWL_DEBUG_INFO(mvm, + "missed bcn mac_id=%u, consecutive=%u (%u, %u, %u)\n", + le32_to_cpu(mb->mac_id), + le32_to_cpu(mb->consec_missed_beacons), + le32_to_cpu(mb->consec_missed_beacons_since_last_rx), + le32_to_cpu(mb->num_recvd_beacons), + le32_to_cpu(mb->num_expected_beacons)); ieee80211_iterate_active_interfaces_atomic(mvm->hw, IEEE80211_IFACE_ITER_NORMAL, iwl_mvm_beacon_loss_iterator, - &id); + mb); return 0; } --- linux-3.13.0.orig/drivers/net/wireless/iwlwifi/mvm/mac80211.c +++ linux-3.13.0/drivers/net/wireless/iwlwifi/mvm/mac80211.c @@ -179,7 +179,7 @@ !iwlwifi_mod_params.sw_crypto) hw->flags |= IEEE80211_HW_MFP_CAPABLE; - if (mvm->fw->ucode_capa.flags & IWL_UCODE_TLV_FLAGS_UAPSD_SUPPORT) { + if (0 && mvm->fw->ucode_capa.flags & IWL_UCODE_TLV_FLAGS_UAPSD_SUPPORT) { hw->flags |= IEEE80211_HW_SUPPORTS_UAPSD; hw->uapsd_queues = IWL_UAPSD_AC_INFO; hw->uapsd_max_sp_len = IWL_UAPSD_MAX_SP; @@ -246,13 +246,13 @@ else hw->wiphy->flags &= ~WIPHY_FLAG_PS_ON_BY_DEFAULT; - if (mvm->fw->ucode_capa.flags & IWL_UCODE_TLV_FLAGS_SCHED_SCAN) { + if (IWL_UCODE_API(mvm->fw->ucode_ver) >= 10) { hw->wiphy->flags |= WIPHY_FLAG_SUPPORTS_SCHED_SCAN; hw->wiphy->max_sched_scan_ssids = PROBE_OPTION_MAX; hw->wiphy->max_match_sets = IWL_SCAN_MAX_PROFILES; /* we create the 802.11 header and zero length SSID IE. */ hw->wiphy->max_sched_scan_ie_len = - SCAN_OFFLOAD_PROBE_REQ_SIZE - 24 - 2; + SCAN_OFFLOAD_PROBE_REQ_SIZE - 24 - 2; } hw->wiphy->features |= NL80211_FEATURE_P2P_GO_CTWIN | @@ -321,6 +321,24 @@ ieee80211_free_txskb(hw, skb); } +static inline bool iwl_enable_rx_ampdu(const struct iwl_cfg *cfg) +{ + if (iwlwifi_mod_params.disable_11n & IWL_DISABLE_HT_RXAGG) + return false; + return true; +} + +static inline bool iwl_enable_tx_ampdu(const struct iwl_cfg *cfg) +{ + if (iwlwifi_mod_params.disable_11n & IWL_DISABLE_HT_TXAGG) + return false; + if (iwlwifi_mod_params.disable_11n & IWL_ENABLE_HT_TXAGG) + return true; + + /* enabled by default */ + return true; +} + static int iwl_mvm_mac_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif, enum ieee80211_ampdu_mlme_action action, @@ -340,7 +358,7 @@ switch (action) { case IEEE80211_AMPDU_RX_START: - if (iwlwifi_mod_params.disable_11n & IWL_DISABLE_HT_RXAGG) { + if (!iwl_enable_rx_ampdu(mvm->cfg)) { ret = -EINVAL; break; } @@ -350,7 +368,7 @@ ret = iwl_mvm_sta_rx_agg(mvm, sta, tid, 0, false); break; case IEEE80211_AMPDU_TX_START: - if (iwlwifi_mod_params.disable_11n & IWL_DISABLE_HT_TXAGG) { + if (!iwl_enable_tx_ampdu(mvm->cfg)) { ret = -EINVAL; break; } @@ -385,9 +403,6 @@ mvmvif->uploaded = false; mvmvif->ap_sta_id = IWL_MVM_STATION_COUNT; - /* does this make sense at all? */ - mvmvif->color++; - spin_lock_bh(&mvm->time_event_lock); iwl_mvm_te_clear_data(mvm, &mvmvif->time_event_data); spin_unlock_bh(&mvm->time_event_lock); @@ -397,6 +412,14 @@ static void iwl_mvm_restart_cleanup(struct iwl_mvm *mvm) { +#ifdef CONFIG_IWLWIFI_DEBUGFS + static char *env[] = { "DRIVER=iwlwifi", "EVENT=error_dump", NULL }; + + /* notify the userspace about the error we had */ + if (iwl_mvm_fw_error_dump(mvm)) + kobject_uevent_env(&mvm->hw->wiphy->dev.kobj, KOBJ_CHANGE, env); +#endif + iwl_trans_stop_device(mvm->trans); iwl_trans_stop_hw(mvm->trans, false); @@ -601,7 +624,7 @@ if (ret) goto out_remove_mac; - if (!mvm->bf_allowed_vif && + if (!mvm->bf_allowed_vif && false && vif->type == NL80211_IFTYPE_STATION && !vif->p2p && mvm->fw->ucode_capa.flags & IWL_UCODE_TLV_FLAGS_BF_UPDATED){ mvm->bf_allowed_vif = mvmvif; @@ -802,7 +825,7 @@ memcpy(mcast_filter_cmd.bssid, vif->bss_conf.bssid, ETH_ALEN); - return iwl_mvm_send_cmd_pdu(mvm, MCAST_FILTER_CMD, CMD_SYNC, + return iwl_mvm_send_cmd_pdu(mvm, MCAST_FILTER_CMD, CMD_ASYNC, sizeof(mcast_filter_cmd), &mcast_filter_cmd); } --- linux-3.13.0.orig/drivers/net/wireless/iwlwifi/mvm/mvm.h +++ linux-3.13.0/drivers/net/wireless/iwlwifi/mvm/mvm.h @@ -68,6 +68,7 @@ #include #include #include +#include #include "iwl-op-mode.h" #include "iwl-trans.h" @@ -81,6 +82,7 @@ #define IWL_MVM_MAX_ADDRESSES 5 /* RSSI offset for WkP */ #define IWL_RSSI_OFFSET 50 +#define IWL_MVM_MISSED_BEACONS_THRESHOLD 8 enum iwl_mvm_tx_fifo { IWL_MVM_TX_FIFO_BK = 0, @@ -151,7 +153,7 @@ IWL_POWER_SCHEME_LP }; -#define IWL_CONN_MAX_LISTEN_INTERVAL 70 +#define IWL_CONN_MAX_LISTEN_INTERVAL 10 #define IWL_UAPSD_AC_INFO (IEEE80211_WMM_IE_STA_QOSINFO_AC_VO |\ IEEE80211_WMM_IE_STA_QOSINFO_AC_VI |\ IEEE80211_WMM_IE_STA_QOSINFO_AC_BK |\ @@ -517,6 +519,9 @@ /* -1 for always, 0 for never, >0 for that many times */ s8 restart_fw; + void *fw_error_dump; + void *fw_error_sram; + u32 fw_error_sram_len; struct led_classdev led; @@ -600,7 +605,10 @@ struct ieee80211_tx_rate *r); u8 iwl_mvm_mac80211_idx_to_hwrate(int rate_idx); void iwl_mvm_dump_nic_error_log(struct iwl_mvm *mvm); -void iwl_mvm_dump_sram(struct iwl_mvm *mvm); +#ifdef CONFIG_IWLWIFI_DEBUGFS +bool iwl_mvm_fw_error_dump(struct iwl_mvm *mvm); +void iwl_mvm_fw_error_sram_dump(struct iwl_mvm *mvm); +#endif u8 first_antenna(u8 mask); u8 iwl_mvm_next_antenna(struct iwl_mvm *mvm, u8 valid, u8 last_idx); --- linux-3.13.0.orig/drivers/net/wireless/iwlwifi/mvm/ops.c +++ linux-3.13.0/drivers/net/wireless/iwlwifi/mvm/ops.c @@ -61,6 +61,7 @@ * *****************************************************************************/ #include +#include #include #include "iwl-notif-wait.h" @@ -78,6 +79,7 @@ #include "iwl-prph.h" #include "rs.h" #include "fw-api-scan.h" +#include "fw-error-dump.h" #include "time-event.h" /* @@ -310,6 +312,7 @@ CMD(REPLY_BEACON_FILTERING_CMD), CMD(REPLY_THERMAL_MNG_BACKOFF), CMD(MAC_PM_POWER_TABLE), + CMD(LTR_CONFIG), CMD(BT_COEX_CI), }; #undef CMD @@ -470,6 +473,7 @@ out_unregister: ieee80211_unregister_hw(mvm->hw); + iwl_mvm_leds_exit(mvm); out_free: iwl_phy_db_free(mvm->phy_db); kfree(mvm->scan_cmd); @@ -491,6 +495,8 @@ ieee80211_unregister_hw(mvm->hw); kfree(mvm->scan_cmd); + vfree(mvm->fw_error_dump); + kfree(mvm->fw_error_sram); #if defined(CONFIG_PM_SLEEP) && defined(CONFIG_IWLWIFI_DEBUGFS) kfree(mvm->d3_resume_sram); @@ -751,13 +757,66 @@ } } +#ifdef CONFIG_IWLWIFI_DEBUGFS +/* Returns true if a dump was created */ +bool iwl_mvm_fw_error_dump(struct iwl_mvm *mvm) +{ + struct iwl_fw_error_dump_file *dump_file; + struct iwl_fw_error_dump_data *dump_data; + u32 file_len; + + lockdep_assert_held(&mvm->mutex); + + /* + * Don't create an error dump if we'v already got one, but return + * true to trigger a (re-?)notification to userspace that there's + * something there to read. + */ + if (mvm->fw_error_dump) + return true; + + if (!mvm->fw_error_sram) + return false; + + file_len = mvm->fw_error_sram_len + + sizeof(*dump_file) + + sizeof(*dump_data); + + dump_file = vmalloc(file_len); + if (!dump_file) + return false; + + mvm->fw_error_dump = dump_file; + + dump_file->barker = cpu_to_le32(IWL_FW_ERROR_DUMP_BARKER); + dump_file->file_len = cpu_to_le32(file_len); + dump_data = (void *)dump_file->data; + dump_data->type = IWL_FW_ERROR_DUMP_SRAM; + dump_data->len = cpu_to_le32(mvm->fw_error_sram_len); + + /* + * No need for lock since at the stage the FW isn't loaded. So it + * can't assert - we are the only one who can possibly be accessing + * mvm->fw_error_sram right now. + */ + memcpy(dump_data->data, mvm->fw_error_sram, mvm->fw_error_sram_len); + kfree(mvm->fw_error_sram); + mvm->fw_error_sram = NULL; + mvm->fw_error_sram_len = 0; + + return true; +} +#endif + static void iwl_mvm_nic_error(struct iwl_op_mode *op_mode) { struct iwl_mvm *mvm = IWL_OP_MODE_GET_MVM(op_mode); iwl_mvm_dump_nic_error_log(mvm); - if (!mvm->restart_fw) - iwl_mvm_dump_sram(mvm); + +#ifdef CONFIG_IWLWIFI_DEBUGFS + iwl_mvm_fw_error_sram_dump(mvm); +#endif iwl_mvm_nic_restart(mvm); } --- linux-3.13.0.orig/drivers/net/wireless/iwlwifi/mvm/scan.c +++ linux-3.13.0/drivers/net/wireless/iwlwifi/mvm/scan.c @@ -325,7 +325,8 @@ iwl_mvm_scan_fill_ssids(cmd, req, basic_ssid ? 1 : 0); - cmd->tx_cmd.tx_flags = cpu_to_le32(TX_CMD_FLG_SEQ_CTL); + cmd->tx_cmd.tx_flags = cpu_to_le32(TX_CMD_FLG_SEQ_CTL | + TX_CMD_FLG_BT_DIS); cmd->tx_cmd.sta_id = mvm->aux_sta.sta_id; cmd->tx_cmd.life_time = cpu_to_le32(TX_CMD_LIFE_TIME_INFINITE); cmd->tx_cmd.rate_n_flags = --- linux-3.13.0.orig/drivers/net/wireless/iwlwifi/mvm/tx.c +++ linux-3.13.0/drivers/net/wireless/iwlwifi/mvm/tx.c @@ -822,16 +822,12 @@ struct iwl_mvm_ba_notif *ba_notif = (void *)pkt->data; struct sk_buff_head reclaimed_skbs; struct iwl_mvm_tid_data *tid_data; - struct ieee80211_tx_info *info; struct ieee80211_sta *sta; struct iwl_mvm_sta *mvmsta; - struct ieee80211_hdr *hdr; struct sk_buff *skb; int sta_id, tid, freed; - /* "flow" corresponds to Tx queue */ u16 scd_flow = le16_to_cpu(ba_notif->scd_flow); - /* "ssn" is start of block-ack Tx window, corresponds to index * (in Tx queue's circular buffer) of first TFD/frame in window */ u16 ba_resp_scd_ssn = le16_to_cpu(ba_notif->scd_ssn); @@ -839,6 +835,11 @@ sta_id = ba_notif->sta_id; tid = ba_notif->tid; + if (WARN_ONCE(sta_id >= IWL_MVM_STATION_COUNT || + tid >= IWL_MAX_TID_COUNT, + "sta_id %d tid %d", sta_id, tid)) + return 0; + rcu_read_lock(); sta = rcu_dereference(mvm->fw_id_to_mac_id[sta_id]); @@ -888,22 +889,26 @@ freed = 0; skb_queue_walk(&reclaimed_skbs, skb) { - hdr = (struct ieee80211_hdr *)skb->data; + struct ieee80211_hdr *hdr = (void *)skb->data; + struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); if (ieee80211_is_data_qos(hdr->frame_control)) freed++; else WARN_ON_ONCE(1); - info = IEEE80211_SKB_CB(skb); iwl_trans_free_tx_cmd(mvm->trans, info->driver_data[1]); + memset(&info->status, 0, sizeof(info->status)); + /* Packet was transmitted successfully, failures come as single + * frames because before failing a frame the firmware transmits + * it without aggregation at least once. + */ + info->flags |= IEEE80211_TX_STAT_ACK; + if (freed == 1) { /* this is the first skb we deliver in this batch */ /* put the rate scaling data there */ - info = IEEE80211_SKB_CB(skb); - memset(&info->status, 0, sizeof(info->status)); - info->flags |= IEEE80211_TX_STAT_ACK; info->flags |= IEEE80211_TX_STAT_AMPDU; info->status.ampdu_ack_len = ba_notif->txed_2_done; info->status.ampdu_len = ba_notif->txed; --- linux-3.13.0.orig/drivers/net/wireless/iwlwifi/mvm/utils.c +++ linux-3.13.0/drivers/net/wireless/iwlwifi/mvm/utils.c @@ -411,6 +411,8 @@ mvm->status, table.valid); } + IWL_ERR(mvm, "Loaded firmware version: %s\n", mvm->fw->fw_version); + trace_iwlwifi_dev_ucode_error(trans->dev, table.error_id, table.tsf_low, table.data1, table.data2, table.data3, table.blink1, table.blink2, table.ilink1, @@ -453,27 +455,26 @@ IWL_ERR(mvm, "0x%08X | flow_handler\n", table.flow_handler); } -void iwl_mvm_dump_sram(struct iwl_mvm *mvm) +void iwl_mvm_fw_error_sram_dump(struct iwl_mvm *mvm) { const struct fw_img *img; - int ofs, len = 0; - u8 *buf; + u32 ofs, sram_len; + void *sram; - if (!mvm->ucode_loaded) + if (!mvm->ucode_loaded || mvm->fw_error_sram) return; img = &mvm->fw->img[mvm->cur_ucode]; ofs = img->sec[IWL_UCODE_SECTION_DATA].offset; - len = img->sec[IWL_UCODE_SECTION_DATA].len; + sram_len = img->sec[IWL_UCODE_SECTION_DATA].len; - buf = kzalloc(len, GFP_ATOMIC); - if (!buf) + sram = kzalloc(sram_len, GFP_ATOMIC); + if (!sram) return; - iwl_trans_read_mem_bytes(mvm->trans, ofs, buf, len); - iwl_print_hex_error(mvm->trans, buf, len); - - kfree(buf); + iwl_trans_read_mem_bytes(mvm->trans, ofs, sram, sram_len); + mvm->fw_error_sram = sram; + mvm->fw_error_sram_len = sram_len; } /** --- linux-3.13.0.orig/drivers/net/wireless/iwlwifi/pcie/drv.c +++ linux-3.13.0/drivers/net/wireless/iwlwifi/pcie/drv.c @@ -272,6 +272,8 @@ {IWL_PCI_DEVICE(0x08B1, 0x4070, iwl7260_2ac_cfg)}, {IWL_PCI_DEVICE(0x08B1, 0x4072, iwl7260_2ac_cfg)}, {IWL_PCI_DEVICE(0x08B1, 0x4170, iwl7260_2ac_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0x4C60, iwl7260_2ac_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0x4C70, iwl7260_2ac_cfg)}, {IWL_PCI_DEVICE(0x08B1, 0x4060, iwl7260_2n_cfg)}, {IWL_PCI_DEVICE(0x08B1, 0x406A, iwl7260_2n_cfg)}, {IWL_PCI_DEVICE(0x08B1, 0x4160, iwl7260_2n_cfg)}, @@ -297,6 +299,9 @@ {IWL_PCI_DEVICE(0x08B2, 0x4370, iwl7260_2ac_cfg)}, {IWL_PCI_DEVICE(0x08B2, 0x4360, iwl7260_2n_cfg)}, {IWL_PCI_DEVICE(0x08B1, 0x5070, iwl7260_2ac_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0x5072, iwl7260_2ac_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0x5170, iwl7260_2ac_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0x5770, iwl7260_2ac_cfg)}, {IWL_PCI_DEVICE(0x08B1, 0x4020, iwl7260_2n_cfg)}, {IWL_PCI_DEVICE(0x08B1, 0x402A, iwl7260_2n_cfg)}, {IWL_PCI_DEVICE(0x08B2, 0x4220, iwl7260_2n_cfg)}, @@ -312,6 +317,8 @@ {IWL_PCI_DEVICE(0x08B1, 0xC770, iwl7260_2ac_cfg)}, {IWL_PCI_DEVICE(0x08B1, 0xC760, iwl7260_2n_cfg)}, {IWL_PCI_DEVICE(0x08B2, 0xC270, iwl7260_2ac_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0xCC70, iwl7260_2ac_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0xCC60, iwl7260_2ac_cfg)}, {IWL_PCI_DEVICE(0x08B2, 0xC272, iwl7260_2ac_cfg)}, {IWL_PCI_DEVICE(0x08B2, 0xC260, iwl7260_2n_cfg)}, {IWL_PCI_DEVICE(0x08B2, 0xC26A, iwl7260_n_cfg)}, @@ -350,27 +357,37 @@ {IWL_PCI_DEVICE(0x08B4, 0x8270, iwl3160_2ac_cfg)}, {IWL_PCI_DEVICE(0x08B3, 0x8470, iwl3160_2ac_cfg)}, {IWL_PCI_DEVICE(0x08B3, 0x8570, iwl3160_2ac_cfg)}, + {IWL_PCI_DEVICE(0x08B3, 0x1070, iwl3160_2ac_cfg)}, + {IWL_PCI_DEVICE(0x08B3, 0x1170, iwl3160_2ac_cfg)}, /* 7265 Series */ {IWL_PCI_DEVICE(0x095A, 0x5010, iwl7265_2ac_cfg)}, {IWL_PCI_DEVICE(0x095A, 0x5110, iwl7265_2ac_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x5100, iwl7265_2ac_cfg)}, {IWL_PCI_DEVICE(0x095B, 0x5310, iwl7265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x095B, 0x5302, 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, 0x500A, iwl7265_2ac_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x5412, iwl7265_2ac_cfg)}, {IWL_PCI_DEVICE(0x095A, 0x5410, iwl7265_2ac_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x5510, iwl7265_2ac_cfg)}, {IWL_PCI_DEVICE(0x095A, 0x5400, iwl7265_2ac_cfg)}, {IWL_PCI_DEVICE(0x095A, 0x1010, iwl7265_2ac_cfg)}, {IWL_PCI_DEVICE(0x095A, 0x5000, iwl7265_2n_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x500A, iwl7265_2n_cfg)}, {IWL_PCI_DEVICE(0x095B, 0x5200, iwl7265_2n_cfg)}, {IWL_PCI_DEVICE(0x095A, 0x5002, iwl7265_n_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x5102, iwl7265_n_cfg)}, {IWL_PCI_DEVICE(0x095B, 0x5202, iwl7265_n_cfg)}, {IWL_PCI_DEVICE(0x095A, 0x9010, iwl7265_2ac_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x9012, iwl7265_2ac_cfg)}, {IWL_PCI_DEVICE(0x095A, 0x9110, iwl7265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x095A, 0x9210, iwl7265_2ac_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x9112, 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)}, @@ -380,6 +397,11 @@ {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)}, #endif /* CONFIG_IWLMVM */ {0} --- linux-3.13.0.orig/drivers/net/wireless/iwlwifi/pcie/trans.c +++ linux-3.13.0/drivers/net/wireless/iwlwifi/pcie/trans.c @@ -121,6 +121,7 @@ { struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); u16 lctl; + u16 cap; /* * HW bug W/A for instability in PCIe bus L0S->L1 transition. @@ -131,16 +132,17 @@ * power savings, even without L1. */ pcie_capability_read_word(trans_pcie->pci_dev, PCI_EXP_LNKCTL, &lctl); - if (lctl & PCI_EXP_LNKCTL_ASPM_L1) { - /* L1-ASPM enabled; disable(!) L0S */ + if (lctl & PCI_EXP_LNKCTL_ASPM_L1) iwl_set_bit(trans, CSR_GIO_REG, CSR_GIO_REG_VAL_L0S_ENABLED); - dev_info(trans->dev, "L1 Enabled; Disabling L0S\n"); - } else { - /* L1-ASPM disabled; enable(!) L0S */ + else iwl_clear_bit(trans, CSR_GIO_REG, CSR_GIO_REG_VAL_L0S_ENABLED); - dev_info(trans->dev, "L1 Disabled; Enabling L0S\n"); - } trans->pm_support = !(lctl & PCI_EXP_LNKCTL_ASPM_L0S); + + pcie_capability_read_word(trans_pcie->pci_dev, PCI_EXP_DEVCTL2, &cap); + trans->ltr_enabled = cap & PCI_EXP_DEVCTL2_LTR_EN; + dev_info(trans->dev, "L1 %sabled - LTR %sabled\n", + (lctl & PCI_EXP_LNKCTL_ASPM_L1) ? "En" : "Dis", + trans->ltr_enabled ? "En" : "Dis"); } /* @@ -206,6 +208,28 @@ goto out; } + if (trans->cfg->host_interrupt_operation_mode) { + /* + * This is a bit of an abuse - This is needed for 7260 / 3160 + * only check host_interrupt_operation_mode even if this is + * not related to host_interrupt_operation_mode. + * + * Enable the oscillator to count wake up time for L1 exit. This + * consumes slightly more power (100uA) - but allows to be sure + * that we wake up from L1 on time. + * + * This looks weird: read twice the same register, discard the + * value, set a bit, and yet again, read that same register + * just to discard the value. But that's the way the hardware + * seems to like it. + */ + iwl_read_prph(trans, OSC_CLK); + iwl_read_prph(trans, OSC_CLK); + iwl_set_bits_prph(trans, OSC_CLK, OSC_CLK_FORCE_CONTROL); + iwl_read_prph(trans, OSC_CLK); + iwl_read_prph(trans, OSC_CLK); + } + /* * Enable DMA clock and wait for it to stabilize. * @@ -326,6 +350,7 @@ { int ret; int t = 0; + int iter; IWL_DEBUG_INFO(trans, "iwl_trans_prepare_card_hw enter\n"); @@ -334,18 +359,23 @@ if (ret >= 0) return 0; - /* If HW is not ready, prepare the conditions to check again */ - iwl_set_bit(trans, CSR_HW_IF_CONFIG_REG, - CSR_HW_IF_CONFIG_REG_PREPARE); + for (iter = 0; iter < 10; iter++) { + /* If HW is not ready, prepare the conditions to check again */ + iwl_set_bit(trans, CSR_HW_IF_CONFIG_REG, + CSR_HW_IF_CONFIG_REG_PREPARE); + + do { + ret = iwl_pcie_set_hw_ready(trans); + if (ret >= 0) + return 0; + + usleep_range(200, 1000); + t += 200; + } while (t < 150000); + msleep(25); + } - do { - ret = iwl_pcie_set_hw_ready(trans); - if (ret >= 0) - return 0; - - usleep_range(200, 1000); - t += 200; - } while (t < 150000); + IWL_DEBUG_INFO(trans, "got NIC after %d iterations\n", iter); return ret; } --- linux-3.13.0.orig/drivers/net/wireless/iwlwifi/pcie/tx.c +++ linux-3.13.0/drivers/net/wireless/iwlwifi/pcie/tx.c @@ -729,7 +729,12 @@ iwl_write_direct32(trans, FH_KW_MEM_ADDR_REG, trans_pcie->kw.dma >> 4); - iwl_pcie_tx_start(trans, trans_pcie->scd_base_addr); + /* + * Send 0 as the scd_base_addr since the device may have be reset + * while we were in WoWLAN in which case SCD_SRAM_BASE_ADDR will + * contain garbage. + */ + iwl_pcie_tx_start(trans, 0); } /* --- linux-3.13.0.orig/drivers/net/wireless/mac80211_hwsim.c +++ linux-3.13.0/drivers/net/wireless/mac80211_hwsim.c @@ -1466,7 +1466,9 @@ return 0; } -static void mac80211_hwsim_flush(struct ieee80211_hw *hw, u32 queues, bool drop) +static void mac80211_hwsim_flush(struct ieee80211_hw *hw, + struct ieee80211_vif *vif, + u32 queues, bool drop) { /* Not implemented, queues only on kernel side */ } --- linux-3.13.0.orig/drivers/net/wireless/mwifiex/11ac.c +++ linux-3.13.0/drivers/net/wireless/mwifiex/11ac.c @@ -189,8 +189,7 @@ vht_cap->header.len = cpu_to_le16(sizeof(struct ieee80211_vht_cap)); memcpy((u8 *)vht_cap + sizeof(struct mwifiex_ie_types_header), - (u8 *)bss_desc->bcn_vht_cap + - sizeof(struct ieee_types_header), + (u8 *)bss_desc->bcn_vht_cap, le16_to_cpu(vht_cap->header.len)); mwifiex_fill_vht_cap_tlv(priv, vht_cap, bss_desc->bss_band); --- linux-3.13.0.orig/drivers/net/wireless/mwifiex/11n.c +++ linux-3.13.0/drivers/net/wireless/mwifiex/11n.c @@ -308,8 +308,7 @@ ht_cap->header.len = cpu_to_le16(sizeof(struct ieee80211_ht_cap)); memcpy((u8 *) ht_cap + sizeof(struct mwifiex_ie_types_header), - (u8 *) bss_desc->bcn_ht_cap + - sizeof(struct ieee_types_header), + (u8 *)bss_desc->bcn_ht_cap, le16_to_cpu(ht_cap->header.len)); mwifiex_fill_cap_info(priv, radio_type, ht_cap); --- linux-3.13.0.orig/drivers/net/wireless/mwifiex/debugfs.c +++ linux-3.13.0/drivers/net/wireless/mwifiex/debugfs.c @@ -637,7 +637,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) @@ -645,7 +645,7 @@ if (saved_offset == -1) { /* No command has been given */ - pos += snprintf(buf, PAGE_SIZE, "0"); + pos = snprintf(buf, PAGE_SIZE, "0"); goto done; } @@ -654,17 +654,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-3.13.0.orig/drivers/net/wireless/mwifiex/fw.h +++ linux-3.13.0/drivers/net/wireless/mwifiex/fw.h @@ -226,7 +226,7 @@ /* HW_SPEC fw_cap_info */ -#define ISSUPP_11ACENABLED(fw_cap_info) (fw_cap_info & (BIT(13)|BIT(14))) +#define ISSUPP_11ACENABLED(fw_cap_info) (fw_cap_info & (BIT(12)|BIT(13))) #define GET_VHTCAP_CHWDSET(vht_cap_info) ((vht_cap_info >> 2) & 0x3) #define GET_VHTNSSMCS(mcs_mapset, nss) ((mcs_mapset >> (2 * (nss - 1))) & 0x3) --- linux-3.13.0.orig/drivers/net/wireless/mwifiex/main.c +++ linux-3.13.0/drivers/net/wireless/mwifiex/main.c @@ -646,6 +646,7 @@ } tx_info = MWIFIEX_SKB_TXCB(skb); + memset(tx_info, 0, sizeof(*tx_info)); tx_info->bss_num = priv->bss_num; tx_info->bss_type = priv->bss_type; @@ -747,7 +748,7 @@ static u16 mwifiex_netdev_select_wmm_queue(struct net_device *dev, struct sk_buff *skb, - void *accel_priv) + void *accel_priv, select_queue_fallback_t fallback) { skb->priority = cfg80211_classify8021d(skb); return mwifiex_1d_to_wmm_queue[skb->priority]; --- linux-3.13.0.orig/drivers/net/wireless/mwifiex/pcie.c +++ linux-3.13.0/drivers/net/wireless/mwifiex/pcie.c @@ -1211,6 +1211,12 @@ rd_index = card->rxbd_rdptr & reg->rx_mask; skb_data = card->rx_buf_list[rd_index]; + /* If skb allocation was failed earlier for Rx packet, + * rx_buf_list[rd_index] would have been left with a NULL. + */ + if (!skb_data) + return -ENOMEM; + MWIFIEX_SKB_PACB(skb_data, &buf_pa); pci_unmap_single(card->dev, buf_pa, MWIFIEX_RX_DATA_BUF_SIZE, PCI_DMA_FROMDEVICE); @@ -1525,6 +1531,14 @@ if (adapter->ps_state == PS_STATE_SLEEP_CFM) { mwifiex_process_sleep_confirm_resp(adapter, skb->data, skb->len); + mwifiex_pcie_enable_host_int(adapter); + if (mwifiex_write_reg(adapter, + PCIE_CPU_INT_EVENT, + CPU_INTR_SLEEP_CFM_DONE)) { + dev_warn(adapter->dev, + "Write register failed\n"); + return -1; + } while (reg->sleep_cookie && (count++ < 10) && mwifiex_pcie_ok_to_access_hw(adapter)) usleep_range(50, 60); @@ -1993,23 +2007,9 @@ adapter->int_status |= pcie_ireg; spin_unlock_irqrestore(&adapter->int_lock, flags); - if (pcie_ireg & HOST_INTR_CMD_DONE) { - if ((adapter->ps_state == PS_STATE_SLEEP_CFM) || - (adapter->ps_state == PS_STATE_SLEEP)) { - mwifiex_pcie_enable_host_int(adapter); - if (mwifiex_write_reg(adapter, - PCIE_CPU_INT_EVENT, - CPU_INTR_SLEEP_CFM_DONE) - ) { - dev_warn(adapter->dev, - "Write register failed\n"); - return; - - } - } - } else if (!adapter->pps_uapsd_mode && - adapter->ps_state == PS_STATE_SLEEP && - mwifiex_pcie_ok_to_access_hw(adapter)) { + if (!adapter->pps_uapsd_mode && + adapter->ps_state == PS_STATE_SLEEP && + mwifiex_pcie_ok_to_access_hw(adapter)) { /* Potentially for PCIe we could get other * interrupts like shared. Don't change power * state until cookie is set */ --- linux-3.13.0.orig/drivers/net/wireless/mwifiex/scan.c +++ linux-3.13.0/drivers/net/wireless/mwifiex/scan.c @@ -1681,7 +1681,7 @@ const u8 *ie_buf; size_t ie_len; u16 channel = 0; - u64 fw_tsf = 0; + __le64 fw_tsf = 0; u16 beacon_size = 0; u32 curr_bcn_bytes; u32 freq; @@ -1815,7 +1815,7 @@ ie_buf, ie_len, rssi, GFP_KERNEL); bss_priv = (struct mwifiex_bss_priv *)bss->priv; bss_priv->band = band; - bss_priv->fw_tsf = fw_tsf; + bss_priv->fw_tsf = le64_to_cpu(fw_tsf); if (priv->media_connected && !memcmp(bssid, priv->curr_bss_params.bss_descriptor @@ -2101,12 +2101,12 @@ curr_bss->ht_info_offset); if (curr_bss->bcn_vht_cap) - curr_bss->bcn_ht_cap = (void *)(curr_bss->beacon_buf + - curr_bss->vht_cap_offset); + curr_bss->bcn_vht_cap = (void *)(curr_bss->beacon_buf + + curr_bss->vht_cap_offset); if (curr_bss->bcn_vht_oper) - curr_bss->bcn_ht_oper = (void *)(curr_bss->beacon_buf + - curr_bss->vht_info_offset); + curr_bss->bcn_vht_oper = (void *)(curr_bss->beacon_buf + + curr_bss->vht_info_offset); if (curr_bss->bcn_bss_co_2040) curr_bss->bcn_bss_co_2040 = --- linux-3.13.0.orig/drivers/net/wireless/mwifiex/usb.c +++ linux-3.13.0/drivers/net/wireless/mwifiex/usb.c @@ -511,13 +511,6 @@ MWIFIEX_BSS_ROLE_ANY), MWIFIEX_ASYNC_CMD); -#ifdef CONFIG_PM - /* Resume handler may be called due to remote wakeup, - * force to exit suspend anyway - */ - usb_disable_autosuspend(card->udev); -#endif /* CONFIG_PM */ - return 0; } @@ -557,7 +550,6 @@ .id_table = mwifiex_usb_table, .suspend = mwifiex_usb_suspend, .resume = mwifiex_usb_resume, - .supports_autosuspend = 1, }; static int mwifiex_usb_tx_init(struct mwifiex_adapter *adapter) --- linux-3.13.0.orig/drivers/net/wireless/mwifiex/wmm.c +++ linux-3.13.0/drivers/net/wireless/mwifiex/wmm.c @@ -559,7 +559,8 @@ mwifiex_wmm_delete_all_ralist(priv); memcpy(tos_to_tid, ac_to_tid, sizeof(tos_to_tid)); - if (priv->adapter->if_ops.clean_pcie_ring) + if (priv->adapter->if_ops.clean_pcie_ring && + !priv->adapter->surprise_removed) priv->adapter->if_ops.clean_pcie_ring(priv->adapter); spin_unlock_irqrestore(&priv->wmm.ra_list_spinlock, flags); } --- linux-3.13.0.orig/drivers/net/wireless/p54/main.c +++ linux-3.13.0/drivers/net/wireless/p54/main.c @@ -670,7 +670,8 @@ return total; } -static void p54_flush(struct ieee80211_hw *dev, u32 queues, bool drop) +static void p54_flush(struct ieee80211_hw *dev, struct ieee80211_vif *vif, + u32 queues, bool drop) { struct p54_common *priv = dev->priv; unsigned int total, i; --- linux-3.13.0.orig/drivers/net/wireless/p54/txrx.c +++ linux-3.13.0/drivers/net/wireless/p54/txrx.c @@ -587,7 +587,7 @@ chan = priv->curchan; if (chan) { struct survey_info *survey = &priv->survey[chan->hw_value]; - survey->noise = clamp_t(s8, priv->noise, -128, 127); + survey->noise = clamp(priv->noise, -128, 127); survey->channel_time = priv->survey_raw.active; survey->channel_time_tx = priv->survey_raw.tx; survey->channel_time_busy = priv->survey_raw.tx + --- linux-3.13.0.orig/drivers/net/wireless/rndis_wlan.c +++ linux-3.13.0/drivers/net/wireless/rndis_wlan.c @@ -358,9 +358,9 @@ #define CAP_MODE_80211G 4 #define CAP_MODE_MASK 7 -#define WORK_LINK_UP (1<<0) -#define WORK_LINK_DOWN (1<<1) -#define WORK_SET_MULTICAST_LIST (1<<2) +#define WORK_LINK_UP 0 +#define WORK_LINK_DOWN 1 +#define WORK_SET_MULTICAST_LIST 2 #define RNDIS_WLAN_ALG_NONE 0 #define RNDIS_WLAN_ALG_WEP (1<<0) --- linux-3.13.0.orig/drivers/net/wireless/rt2x00/rt2500pci.c +++ linux-3.13.0/drivers/net/wireless/rt2x00/rt2500pci.c @@ -1684,8 +1684,13 @@ /* * Detect if this device has an hardware controlled radio. */ - if (rt2x00_get_field16(eeprom, EEPROM_ANTENNA_HARDWARE_RADIO)) + if (rt2x00_get_field16(eeprom, EEPROM_ANTENNA_HARDWARE_RADIO)) { __set_bit(CAPABILITY_HW_BUTTON, &rt2x00dev->cap_flags); + /* + * On this device RFKILL initialized during probe does not work. + */ + __set_bit(REQUIRE_DELAYED_RFKILL, &rt2x00dev->cap_flags); + } /* * Check if the BBP tuning should be enabled. --- linux-3.13.0.orig/drivers/net/wireless/rt2x00/rt2800.h +++ linux-3.13.0/drivers/net/wireless/rt2x00/rt2800.h @@ -2041,7 +2041,7 @@ * 2 - drop tx power by 12dBm, * 3 - increase tx power by 6dBm */ -#define BBP1_TX_POWER_CTRL FIELD8(0x07) +#define BBP1_TX_POWER_CTRL FIELD8(0x03) #define BBP1_TX_ANTENNA FIELD8(0x18) /* --- linux-3.13.0.orig/drivers/net/wireless/rt2x00/rt2800usb.c +++ linux-3.13.0/drivers/net/wireless/rt2x00/rt2800usb.c @@ -976,6 +976,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) }, @@ -1064,6 +1065,7 @@ /* Ovislink */ { USB_DEVICE(0x1b75, 0x3071) }, { USB_DEVICE(0x1b75, 0x3072) }, + { USB_DEVICE(0x1b75, 0xa200) }, /* Para */ { USB_DEVICE(0x20b8, 0x8888) }, /* Pegatron */ --- linux-3.13.0.orig/drivers/net/wireless/rt2x00/rt2x00.h +++ linux-3.13.0/drivers/net/wireless/rt2x00/rt2x00.h @@ -695,6 +695,7 @@ REQUIRE_SW_SEQNO, REQUIRE_HT_TX_DESC, REQUIRE_PS_AUTOWAKE, + REQUIRE_DELAYED_RFKILL, /* * Capabilities @@ -1450,7 +1451,8 @@ struct ieee80211_vif *vif, u16 queue, const struct ieee80211_tx_queue_params *params); void rt2x00mac_rfkill_poll(struct ieee80211_hw *hw); -void rt2x00mac_flush(struct ieee80211_hw *hw, u32 queues, bool drop); +void rt2x00mac_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif, + u32 queues, bool drop); int rt2x00mac_set_antenna(struct ieee80211_hw *hw, u32 tx_ant, u32 rx_ant); int rt2x00mac_get_antenna(struct ieee80211_hw *hw, u32 *tx_ant, u32 *rx_ant); void rt2x00mac_get_ringparam(struct ieee80211_hw *hw, --- linux-3.13.0.orig/drivers/net/wireless/rt2x00/rt2x00dev.c +++ linux-3.13.0/drivers/net/wireless/rt2x00/rt2x00dev.c @@ -1128,9 +1128,10 @@ return; /* - * Unregister extra components. + * Stop rfkill polling. */ - rt2x00rfkill_unregister(rt2x00dev); + if (test_bit(REQUIRE_DELAYED_RFKILL, &rt2x00dev->cap_flags)) + rt2x00rfkill_unregister(rt2x00dev); /* * Allow the HW to uninitialize. @@ -1168,6 +1169,12 @@ set_bit(DEVICE_STATE_INITIALIZED, &rt2x00dev->flags); + /* + * Start rfkill polling. + */ + if (test_bit(REQUIRE_DELAYED_RFKILL, &rt2x00dev->cap_flags)) + rt2x00rfkill_register(rt2x00dev); + return 0; } @@ -1377,7 +1384,12 @@ rt2x00link_register(rt2x00dev); rt2x00leds_register(rt2x00dev); rt2x00debug_register(rt2x00dev); - rt2x00rfkill_register(rt2x00dev); + + /* + * Start rfkill polling. + */ + if (!test_bit(REQUIRE_DELAYED_RFKILL, &rt2x00dev->cap_flags)) + rt2x00rfkill_register(rt2x00dev); return 0; @@ -1393,6 +1405,12 @@ clear_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags); /* + * Stop rfkill polling. + */ + if (!test_bit(REQUIRE_DELAYED_RFKILL, &rt2x00dev->cap_flags)) + rt2x00rfkill_unregister(rt2x00dev); + + /* * Disable radio. */ rt2x00lib_disable_radio(rt2x00dev); --- linux-3.13.0.orig/drivers/net/wireless/rt2x00/rt2x00mac.c +++ linux-3.13.0/drivers/net/wireless/rt2x00/rt2x00mac.c @@ -489,6 +489,8 @@ crypto.cipher = rt2x00crypto_key_to_cipher(key); if (crypto.cipher == CIPHER_NONE) return -EOPNOTSUPP; + if (crypto.cipher == CIPHER_TKIP && rt2x00_is_usb(rt2x00dev)) + return -EOPNOTSUPP; crypto.cmd = cmd; @@ -623,20 +625,18 @@ bss_conf->bssid); /* - * Update the beacon. This is only required on USB devices. PCI - * devices fetch beacons periodically. - */ - if (changes & BSS_CHANGED_BEACON && rt2x00_is_usb(rt2x00dev)) - rt2x00queue_update_beacon(rt2x00dev, vif); - - /* * Start/stop beaconing. */ if (changes & BSS_CHANGED_BEACON_ENABLED) { if (!bss_conf->enable_beacon && intf->enable_beacon) { - rt2x00queue_clear_beacon(rt2x00dev, vif); rt2x00dev->intf_beaconing--; intf->enable_beacon = false; + /* + * Clear beacon in the H/W for this vif. This is needed + * to disable beaconing on this particular interface + * and keep it running on other interfaces. + */ + rt2x00queue_clear_beacon(rt2x00dev, vif); if (rt2x00dev->intf_beaconing == 0) { /* @@ -647,11 +647,15 @@ rt2x00queue_stop_queue(rt2x00dev->bcn); mutex_unlock(&intf->beacon_skb_mutex); } - - } else if (bss_conf->enable_beacon && !intf->enable_beacon) { rt2x00dev->intf_beaconing++; intf->enable_beacon = true; + /* + * Upload beacon to the H/W. This is only required on + * USB devices. PCI devices fetch beacons periodically. + */ + if (rt2x00_is_usb(rt2x00dev)) + rt2x00queue_update_beacon(rt2x00dev, vif); if (rt2x00dev->intf_beaconing == 1) { /* @@ -749,7 +753,8 @@ } EXPORT_SYMBOL_GPL(rt2x00mac_rfkill_poll); -void rt2x00mac_flush(struct ieee80211_hw *hw, u32 queues, bool drop) +void rt2x00mac_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif, + u32 queues, bool drop) { struct rt2x00_dev *rt2x00dev = hw->priv; struct data_queue *queue; --- linux-3.13.0.orig/drivers/net/wireless/rt2x00/rt2x00queue.c +++ linux-3.13.0/drivers/net/wireless/rt2x00/rt2x00queue.c @@ -160,55 +160,29 @@ skb_trim(skb, frame_length); } -void rt2x00queue_insert_l2pad(struct sk_buff *skb, unsigned int header_length) +/* + * H/W needs L2 padding between the header and the paylod if header size + * is not 4 bytes aligned. + */ +void rt2x00queue_insert_l2pad(struct sk_buff *skb, unsigned int hdr_len) { - unsigned int payload_length = skb->len - header_length; - unsigned int header_align = ALIGN_SIZE(skb, 0); - unsigned int payload_align = ALIGN_SIZE(skb, header_length); - unsigned int l2pad = payload_length ? L2PAD_SIZE(header_length) : 0; - - /* - * Adjust the header alignment if the payload needs to be moved more - * than the header. - */ - if (payload_align > header_align) - header_align += 4; + unsigned int l2pad = (skb->len > hdr_len) ? L2PAD_SIZE(hdr_len) : 0; - /* There is nothing to do if no alignment is needed */ - if (!header_align) + if (!l2pad) return; - /* Reserve the amount of space needed in front of the frame */ - skb_push(skb, header_align); - - /* - * Move the header. - */ - memmove(skb->data, skb->data + header_align, header_length); - - /* Move the payload, if present and if required */ - if (payload_length && payload_align) - memmove(skb->data + header_length + l2pad, - skb->data + header_length + l2pad + payload_align, - payload_length); - - /* Trim the skb to the correct size */ - skb_trim(skb, header_length + l2pad + payload_length); + skb_push(skb, l2pad); + memmove(skb->data, skb->data + l2pad, hdr_len); } -void rt2x00queue_remove_l2pad(struct sk_buff *skb, unsigned int header_length) +void rt2x00queue_remove_l2pad(struct sk_buff *skb, unsigned int hdr_len) { - /* - * L2 padding is only present if the skb contains more than just the - * IEEE 802.11 header. - */ - unsigned int l2pad = (skb->len > header_length) ? - L2PAD_SIZE(header_length) : 0; + unsigned int l2pad = (skb->len > hdr_len) ? L2PAD_SIZE(hdr_len) : 0; if (!l2pad) return; - memmove(skb->data + l2pad, skb->data, header_length); + memmove(skb->data + l2pad, skb->data, hdr_len); skb_pull(skb, l2pad); } --- linux-3.13.0.orig/drivers/net/wireless/rtl818x/rtl8187/rtl8187.h +++ linux-3.13.0/drivers/net/wireless/rtl818x/rtl8187/rtl8187.h @@ -15,6 +15,8 @@ #ifndef RTL8187_H #define RTL8187_H +#include + #include "rtl818x.h" #include "leds.h" @@ -139,7 +141,10 @@ u8 aifsn[4]; u8 rfkill_mask; struct { - __le64 buf; + union { + __le64 buf; + u8 dummy1[L1_CACHE_BYTES]; + } ____cacheline_aligned; struct sk_buff_head queue; } b_tx_status; /* This queue is used by both -b and non-b devices */ struct mutex io_mutex; @@ -147,7 +152,8 @@ u8 bits8; __le16 bits16; __le32 bits32; - } *io_dmabuf; + u8 dummy2[L1_CACHE_BYTES]; + } *io_dmabuf ____cacheline_aligned; bool rfkill_off; u16 seqno; }; --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/Kconfig +++ linux-3.13.0/drivers/net/wireless/rtlwifi/Kconfig @@ -5,7 +5,7 @@ ---help--- This option will enable support for the Realtek mac80211-based wireless drivers. Drivers rtl8192ce, rtl8192cu, rtl8192se, rtl8192de, - rtl8723eu, and rtl8188eu share some common code. + rtl8723ae, rtl8723be, and rtl8188ae share some common code. if RTL_CARDS @@ -48,12 +48,27 @@ depends on PCI select RTLWIFI select RTLWIFI_PCI + select RTL8723_COMMON + select RTLBTCOEXIST ---help--- This is the driver for Realtek RTL8723AE 802.11n PCIe wireless network adapters. If you choose to build it as a module, it will be called rtl8723ae +config RTL8723BE + tristate "Realtek RTL8723BE PCIe Wireless Network Adapter" + depends on PCI + select RTLWIFI + select RTLWIFI_PCI + select RTL8723_COMMON + select RTLBTCOEXIST + ---help--- + This is the driver for Realtek RTL8723BE 802.11n PCIe + wireless network adapters. + + If you choose to build it as a module, it will be called rtl8723be + config RTL8188EE tristate "Realtek RTL8188EE Wireless Network Adapter" depends on PCI @@ -101,4 +116,14 @@ depends on RTL8192CE || RTL8192CU default y +config RTL8723_COMMON + tristate + depends on RTL8723AE || RTL8723BE + default y + +config RTLBTCOEXIST + tristate + depends on RTL8723AE || RTL8723BE + default y + endif --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/Makefile +++ linux-3.13.0/drivers/net/wireless/rtlwifi/Makefile @@ -24,6 +24,9 @@ obj-$(CONFIG_RTL8192SE) += rtl8192se/ obj-$(CONFIG_RTL8192DE) += rtl8192de/ obj-$(CONFIG_RTL8723AE) += rtl8723ae/ +obj-$(CONFIG_RTL8723BE) += rtl8723be/ obj-$(CONFIG_RTL8188EE) += rtl8188ee/ +obj-$(CONFIG_RTLBTCOEXIST) += btcoexist/ +obj-$(CONFIG_RTL8723_COMMON) += rtl8723com/ ccflags-y += -D__CHECK_ENDIAN__ --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/base.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/base.c @@ -1437,7 +1437,8 @@ /* if we can't recv beacon for 6s, we should * reconnect this AP */ - if (rtlpriv->link_info.roam_times >= 3) { + if ((rtlpriv->link_info.roam_times >= 3) && + !is_zero_ether_addr(rtlpriv->mac80211.bssid)) { RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, "AP off, try to reconnect now\n"); rtlpriv->link_info.roam_times = 0; --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/btcoexist/Makefile +++ linux-3.13.0/drivers/net/wireless/rtlwifi/btcoexist/Makefile @@ -0,0 +1,7 @@ +btcoexist-objs := halbtc8723b2ant.o \ + halbtcoutsrc.o \ + rtl_btc.o + +obj-$(CONFIG_RTLBTCOEXIST) += btcoexist.o + +ccflags-y += -D__CHECK_ENDIAN__ --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/btcoexist/halbt_precomp.h +++ linux-3.13.0/drivers/net/wireless/rtlwifi/btcoexist/halbt_precomp.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. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * Larry Finger + * + ******************************************************************************/ + +#ifndef __HALBT_PRECOMP_H__ +#define __HALBT_PRECOMP_H__ +/************************************************************* + * include files + *************************************************************/ +#include "../wifi.h" +#include "../efuse.h" +#include "../base.h" +#include "../regd.h" +#include "../cam.h" +#include "../ps.h" +#include "../pci.h" + +#include "halbtcoutsrc.h" + +#include "halbtc8723b2ant.h" + +#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 + +#define MASKBYTE0 0xff +#define MASKBYTE1 0xff00 +#define MASKBYTE2 0xff0000 +#define MASKBYTE3 0xff000000 +#define MASKHWORD 0xffff0000 +#define MASKLWORD 0x0000ffff +#define MASKDWORD 0xffffffff +#define MASK12BITS 0xfff +#define MASKH4BITS 0xf0000000 +#define MASKOFDM_D 0xffc00000 +#define MASKCCK 0x3f3f3f3f + +#endif /* __HALBT_PRECOMP_H__ */ --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/btcoexist/halbtc8723b2ant.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/btcoexist/halbtc8723b2ant.c @@ -0,0 +1,3698 @@ +/****************************************************************************** + * + * Copyright(c) 2012 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ +/*************************************************************** + * Description: + * + * This file is for RTL8723B Co-exist mechanism + * + * History + * 2012/11/15 Cosa first check in. + * + **************************************************************/ +/************************************************************** + * include files + **************************************************************/ +#include "halbt_precomp.h" +/************************************************************** + * Global variables, these are static variables + **************************************************************/ +static struct coex_dm_8723b_2ant glcoex_dm_8723b_2ant; +static struct coex_dm_8723b_2ant *coex_dm = &glcoex_dm_8723b_2ant; +static struct coex_sta_8723b_2ant glcoex_sta_8723b_2ant; +static struct coex_sta_8723b_2ant *coex_sta = &glcoex_sta_8723b_2ant; + +static const char *const glbt_info_src_8723b_2ant[] = { + "BT Info[wifi fw]", + "BT Info[bt rsp]", + "BT Info[bt auto report]", +}; + +static u32 glcoex_ver_date_8723b_2ant = 20130731; +static u32 glcoex_ver_8723b_2ant = 0x3b; + +/************************************************************** + * local function proto type if needed + **************************************************************/ +/************************************************************** + * local function start with btc8723b2ant_ + **************************************************************/ +static u8 btc8723b2ant_bt_rssi_state(u8 level_num, u8 rssi_thresh, + u8 rssi_thresh1) +{ + s32 bt_rssi = 0; + u8 bt_rssi_state = coex_sta->pre_bt_rssi_state; + + bt_rssi = coex_sta->bt_rssi; + + if (level_num == 2) { + if ((coex_sta->pre_bt_rssi_state == BTC_RSSI_STATE_LOW) || + (coex_sta->pre_bt_rssi_state == BTC_RSSI_STATE_STAY_LOW)) { + if (bt_rssi >= rssi_thresh + + BTC_RSSI_COEX_THRESH_TOL_8723B_2ANT) { + bt_rssi_state = BTC_RSSI_STATE_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "[BTCoex], BT Rssi state " + "switch to High\n"); + } else { + bt_rssi_state = BTC_RSSI_STATE_STAY_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "[BTCoex], BT Rssi state " + "stay at Low\n"); + } + } else { + if (bt_rssi < rssi_thresh) { + bt_rssi_state = BTC_RSSI_STATE_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "[BTCoex], BT Rssi state " + "switch to Low\n"); + } else { + bt_rssi_state = BTC_RSSI_STATE_STAY_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "[BTCoex], BT Rssi state " + "stay at High\n"); + } + } + } else if (level_num == 3) { + if (rssi_thresh > rssi_thresh1) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "[BTCoex], BT Rssi thresh error!!\n"); + return coex_sta->pre_bt_rssi_state; + } + + if ((coex_sta->pre_bt_rssi_state == BTC_RSSI_STATE_LOW) || + (coex_sta->pre_bt_rssi_state == BTC_RSSI_STATE_STAY_LOW)) { + if (bt_rssi >= rssi_thresh + + BTC_RSSI_COEX_THRESH_TOL_8723B_2ANT) { + bt_rssi_state = BTC_RSSI_STATE_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "[BTCoex], BT Rssi state " + "switch to Medium\n"); + } else { + bt_rssi_state = BTC_RSSI_STATE_STAY_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "[BTCoex], BT Rssi state " + "stay at Low\n"); + } + } else if ((coex_sta->pre_bt_rssi_state == + BTC_RSSI_STATE_MEDIUM) || + (coex_sta->pre_bt_rssi_state == + BTC_RSSI_STATE_STAY_MEDIUM)) { + if (bt_rssi >= rssi_thresh1 + + BTC_RSSI_COEX_THRESH_TOL_8723B_2ANT) { + bt_rssi_state = BTC_RSSI_STATE_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "[BTCoex], BT Rssi state " + "switch to High\n"); + } else if (bt_rssi < rssi_thresh) { + bt_rssi_state = BTC_RSSI_STATE_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "[BTCoex], BT Rssi state " + "switch to Low\n"); + } else { + bt_rssi_state = BTC_RSSI_STATE_STAY_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "[BTCoex], BT Rssi state " + "stay at Medium\n"); + } + } else { + if (bt_rssi < rssi_thresh1) { + bt_rssi_state = BTC_RSSI_STATE_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "[BTCoex], BT Rssi state " + "switch to Medium\n"); + } else { + bt_rssi_state = BTC_RSSI_STATE_STAY_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "[BTCoex], BT Rssi state " + "stay at High\n"); + } + } + } + + coex_sta->pre_bt_rssi_state = bt_rssi_state; + + return bt_rssi_state; +} + +static u8 btc8723b2ant_wifi_rssi_state(struct btc_coexist *btcoexist, + u8 index, u8 level_num, + u8 rssi_thresh, u8 rssi_thresh1) +{ + s32 wifi_rssi = 0; + u8 wifi_rssi_state = coex_sta->pre_wifi_rssi_state[index]; + + btcoexist->btc_get(btcoexist, BTC_GET_S4_WIFI_RSSI, &wifi_rssi); + + if (level_num == 2) { + if ((coex_sta->pre_wifi_rssi_state[index] == + BTC_RSSI_STATE_LOW) || + (coex_sta->pre_wifi_rssi_state[index] == + BTC_RSSI_STATE_STAY_LOW)) { + if (wifi_rssi >= rssi_thresh + + BTC_RSSI_COEX_THRESH_TOL_8723B_2ANT) { + wifi_rssi_state = BTC_RSSI_STATE_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "[BTCoex], wifi RSSI state " + "switch to High\n"); + } else { + wifi_rssi_state = BTC_RSSI_STATE_STAY_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "[BTCoex], wifi RSSI state " + "stay at Low\n"); + } + } else { + if (wifi_rssi < rssi_thresh) { + wifi_rssi_state = BTC_RSSI_STATE_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "[BTCoex], wifi RSSI state " + "switch to Low\n"); + } else { + wifi_rssi_state = BTC_RSSI_STATE_STAY_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "[BTCoex], wifi RSSI state " + "stay at High\n"); + } + } + } else if (level_num == 3) { + if (rssi_thresh > rssi_thresh1) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, + "[BTCoex], wifi RSSI thresh error!!\n"); + return coex_sta->pre_wifi_rssi_state[index]; + } + + if ((coex_sta->pre_wifi_rssi_state[index] == + BTC_RSSI_STATE_LOW) || + (coex_sta->pre_wifi_rssi_state[index] == + BTC_RSSI_STATE_STAY_LOW)) { + if (wifi_rssi >= rssi_thresh + + BTC_RSSI_COEX_THRESH_TOL_8723B_2ANT) { + wifi_rssi_state = BTC_RSSI_STATE_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "[BTCoex], wifi RSSI state " + "switch to Medium\n"); + } else { + wifi_rssi_state = BTC_RSSI_STATE_STAY_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "[BTCoex], wifi RSSI state " + "stay at Low\n"); + } + } else if ((coex_sta->pre_wifi_rssi_state[index] == + BTC_RSSI_STATE_MEDIUM) || + (coex_sta->pre_wifi_rssi_state[index] == + BTC_RSSI_STATE_STAY_MEDIUM)) { + if (wifi_rssi >= rssi_thresh1 + + BTC_RSSI_COEX_THRESH_TOL_8723B_2ANT) { + wifi_rssi_state = BTC_RSSI_STATE_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "[BTCoex], wifi RSSI state " + "switch to High\n"); + } else if (wifi_rssi < rssi_thresh) { + wifi_rssi_state = BTC_RSSI_STATE_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "[BTCoex], wifi RSSI state " + "switch to Low\n"); + } else { + wifi_rssi_state = BTC_RSSI_STATE_STAY_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "[BTCoex], wifi RSSI state " + "stay at Medium\n"); + } + } else { + if (wifi_rssi < rssi_thresh1) { + wifi_rssi_state = BTC_RSSI_STATE_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "[BTCoex], wifi RSSI state " + "switch to Medium\n"); + } else { + wifi_rssi_state = BTC_RSSI_STATE_STAY_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "[BTCoex], wifi RSSI state " + "stay at High\n"); + } + } + } + + coex_sta->pre_wifi_rssi_state[index] = wifi_rssi_state; + + return wifi_rssi_state; +} + +static void btc8723b2ant_monitor_bt_ctr(struct btc_coexist *btcoexist) +{ + u32 reg_hp_txrx, reg_lp_txrx, u32tmp; + u32 reg_hp_tx = 0, reg_hp_rx = 0; + u32 reg_lp_tx = 0, reg_lp_rx = 0; + + reg_hp_txrx = 0x770; + reg_lp_txrx = 0x774; + + u32tmp = btcoexist->btc_read_4byte(btcoexist, reg_hp_txrx); + reg_hp_tx = u32tmp & MASKLWORD; + reg_hp_rx = (u32tmp & MASKHWORD) >> 16; + + u32tmp = btcoexist->btc_read_4byte(btcoexist, reg_lp_txrx); + reg_lp_tx = u32tmp & MASKLWORD; + reg_lp_rx = (u32tmp & MASKHWORD) >> 16; + + coex_sta->high_priority_tx = reg_hp_tx; + coex_sta->high_priority_rx = reg_hp_rx; + coex_sta->low_priority_tx = reg_lp_tx; + coex_sta->low_priority_rx = reg_lp_rx; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, + "[BTCoex], High Priority Tx/Rx(reg 0x%x)=0x%x(%d)/0x%x(%d)\n", + reg_hp_txrx, reg_hp_tx, reg_hp_tx, reg_hp_rx, reg_hp_rx); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, + "[BTCoex], Low Priority Tx/Rx(reg 0x%x)=0x%x(%d)/0x%x(%d)\n", + reg_lp_txrx, reg_lp_tx, reg_lp_tx, reg_lp_rx, reg_lp_rx); + + /* reset counter */ + btcoexist->btc_write_1byte(btcoexist, 0x76e, 0xc); +} + +static bool btc8723b2ant_is_wifi_status_changed(struct btc_coexist *btcoexist) +{ + static bool pre_wifi_busy; + static bool pre_under_4way; + static bool pre_bt_hs_on; + bool wifi_busy = false, under_4way = false, bt_hs_on = false; + bool wifi_connected = false; + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_CONNECTED, + &wifi_connected); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_BUSY, &wifi_busy); + btcoexist->btc_get(btcoexist, BTC_GET_BL_HS_OPERATION, &bt_hs_on); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_4_WAY_PROGRESS, + &under_4way); + + if (wifi_connected) { + if (wifi_busy != pre_wifi_busy) { + pre_wifi_busy = wifi_busy; + return true; + } + + if (under_4way != pre_under_4way) { + pre_under_4way = under_4way; + return true; + } + + if (bt_hs_on != pre_bt_hs_on) { + pre_bt_hs_on = bt_hs_on; + return true; + } + } + + return false; +} + +static void btc8723b2ant_update_bt_link_info(struct btc_coexist *btcoexist) +{ + /*struct btc_stack_info *stack_info = &btcoexist->stack_info;*/ + struct btc_bt_link_info *bt_link_info = &btcoexist->bt_link_info; + bool bt_hs_on = false; + +#if (BT_AUTO_REPORT_ONLY_8723B_2ANT == 1) /* profile from bt patch */ + btcoexist->btc_get(btcoexist, BTC_GET_BL_HS_OPERATION, &bt_hs_on); + + bt_link_info->bt_link_exist = coex_sta->bt_link_exist; + bt_link_info->sco_exist = coex_sta->sco_exist; + bt_link_info->a2dp_exist = coex_sta->a2dp_exist; + bt_link_info->pan_exist = coex_sta->pan_exist; + bt_link_info->hid_exist = coex_sta->hid_exist; + + /* work around for HS mode. */ + if (bt_hs_on) { + bt_link_info->pan_exist = true; + bt_link_info->bt_link_exist = true; + } +#else /* profile from bt stack */ + bt_link_info->bt_link_exist = stack_info->bt_link_exist; + bt_link_info->sco_exist = stack_info->sco_exist; + bt_link_info->a2dp_exist = stack_info->a2dp_exist; + bt_link_info->pan_exist = stack_info->pan_exist; + bt_link_info->hid_exist = stack_info->hid_exist; + + /*for win-8 stack HID report error*/ + if (!stack_info->hid_exist) + stack_info->hid_exist = coex_sta->hid_exist; + /*sync BTInfo with BT firmware and stack*/ + /* when stack HID report error, here we use the info from bt fw.*/ + if (!stack_info->bt_link_exist) + stack_info->bt_link_exist = coex_sta->bt_link_exist; +#endif + /* check if Sco only */ + if (bt_link_info->sco_exist && !bt_link_info->a2dp_exist && + !bt_link_info->pan_exist && !bt_link_info->hid_exist) + bt_link_info->sco_only = true; + else + bt_link_info->sco_only = false; + + /* check if A2dp only */ + if (!bt_link_info->sco_exist && bt_link_info->a2dp_exist && + !bt_link_info->pan_exist && !bt_link_info->hid_exist) + bt_link_info->a2dp_only = true; + else + bt_link_info->a2dp_only = false; + + /* check if Pan only */ + if (!bt_link_info->sco_exist && !bt_link_info->a2dp_exist && + bt_link_info->pan_exist && !bt_link_info->hid_exist) + bt_link_info->pan_only = true; + else + bt_link_info->pan_only = false; + + /* check if Hid only */ + if (!bt_link_info->sco_exist && !bt_link_info->a2dp_exist && + !bt_link_info->pan_exist && bt_link_info->hid_exist) + bt_link_info->hid_only = true; + else + bt_link_info->hid_only = false; +} + +static u8 btc8723b2ant_action_algorithm(struct btc_coexist *btcoexist) +{ + struct btc_bt_link_info *bt_link_info = &btcoexist->bt_link_info; + bool bt_hs_on = false; + u8 algorithm = BT_8723B_2ANT_COEX_ALGO_UNDEFINED; + u8 num_of_diff_profile = 0; + + btcoexist->btc_get(btcoexist, BTC_GET_BL_HS_OPERATION, &bt_hs_on); + + if (!bt_link_info->bt_link_exist) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], No BT link exists!!!\n"); + return algorithm; + } + + if (bt_link_info->sco_exist) + num_of_diff_profile++; + if (bt_link_info->hid_exist) + num_of_diff_profile++; + if (bt_link_info->pan_exist) + num_of_diff_profile++; + if (bt_link_info->a2dp_exist) + num_of_diff_profile++; + + if (num_of_diff_profile == 1) { + if (bt_link_info->sco_exist) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], SCO only\n"); + algorithm = BT_8723B_2ANT_COEX_ALGO_SCO; + } else { + if (bt_link_info->hid_exist) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], HID only\n"); + algorithm = BT_8723B_2ANT_COEX_ALGO_HID; + } else if (bt_link_info->a2dp_exist) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], A2DP only\n"); + algorithm = BT_8723B_2ANT_COEX_ALGO_A2DP; + } else if (bt_link_info->pan_exist) { + if (bt_hs_on) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], PAN(HS) only\n"); + algorithm = + BT_8723B_2ANT_COEX_ALGO_PANHS; + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], PAN(EDR) only\n"); + algorithm = + BT_8723B_2ANT_COEX_ALGO_PANEDR; + } + } + } + } else if (num_of_diff_profile == 2) { + if (bt_link_info->sco_exist) { + if (bt_link_info->hid_exist) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], SCO + HID\n"); + algorithm = BT_8723B_2ANT_COEX_ALGO_PANEDR_HID; + } else if (bt_link_info->a2dp_exist) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], SCO + A2DP ==> SCO\n"); + algorithm = BT_8723B_2ANT_COEX_ALGO_PANEDR_HID; + } else if (bt_link_info->pan_exist) { + if (bt_hs_on) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], SCO + PAN(HS)\n"); + algorithm = BT_8723B_2ANT_COEX_ALGO_SCO; + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], SCO + PAN(EDR)\n"); + algorithm = + BT_8723B_2ANT_COEX_ALGO_PANEDR_HID; + } + } + } else { + if (bt_link_info->hid_exist && + bt_link_info->a2dp_exist) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], HID + A2DP\n"); + algorithm = BT_8723B_2ANT_COEX_ALGO_HID_A2DP; + } else if (bt_link_info->hid_exist && + bt_link_info->pan_exist) { + if (bt_hs_on) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], HID + PAN(HS)\n"); + algorithm = BT_8723B_2ANT_COEX_ALGO_HID; + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], HID + PAN(EDR)\n"); + algorithm = + BT_8723B_2ANT_COEX_ALGO_PANEDR_HID; + } + } else if (bt_link_info->pan_exist && + bt_link_info->a2dp_exist) { + if (bt_hs_on) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], A2DP + PAN(HS)\n"); + algorithm = + BT_8723B_2ANT_COEX_ALGO_A2DP_PANHS; + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex],A2DP + PAN(EDR)\n"); + algorithm = + BT_8723B_2ANT_COEX_ALGO_PANEDR_A2DP; + } + } + } + } else if (num_of_diff_profile == 3) { + if (bt_link_info->sco_exist) { + if (bt_link_info->hid_exist && + bt_link_info->a2dp_exist) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], SCO + HID + A2DP" + " ==> HID\n"); + algorithm = BT_8723B_2ANT_COEX_ALGO_PANEDR_HID; + } else if (bt_link_info->hid_exist && + bt_link_info->pan_exist) { + if (bt_hs_on) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], SCO + HID + " + "PAN(HS)\n"); + algorithm = + BT_8723B_2ANT_COEX_ALGO_PANEDR_HID; + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], SCO + HID + " + "PAN(EDR)\n"); + algorithm = + BT_8723B_2ANT_COEX_ALGO_PANEDR_HID; + } + } else if (bt_link_info->pan_exist && + bt_link_info->a2dp_exist) { + if (bt_hs_on) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], SCO + A2DP + " + "PAN(HS)\n"); + algorithm = + BT_8723B_2ANT_COEX_ALGO_PANEDR_HID; + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], SCO + A2DP + " + "PAN(EDR) ==> HID\n"); + algorithm = + BT_8723B_2ANT_COEX_ALGO_PANEDR_HID; + } + } + } else { + if (bt_link_info->hid_exist && + bt_link_info->pan_exist && + bt_link_info->a2dp_exist) { + if (bt_hs_on) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], HID + A2DP + " + "PAN(HS)\n"); + algorithm = + BT_8723B_2ANT_COEX_ALGO_HID_A2DP; + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], HID + A2DP + " + "PAN(EDR)\n"); + algorithm = + BT_8723B_2ANT_COEX_ALGO_HID_A2DP_PANEDR; + } + } + } + } else if (num_of_diff_profile >= 3) { + if (bt_link_info->sco_exist) { + if (bt_link_info->hid_exist && + bt_link_info->pan_exist && + bt_link_info->a2dp_exist) { + if (bt_hs_on) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Error!!! SCO + HID" + " + A2DP + PAN(HS)\n"); + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], SCO + HID + A2DP +" + " PAN(EDR)==>PAN(EDR)+HID\n"); + algorithm = + BT_8723B_2ANT_COEX_ALGO_PANEDR_HID; + } + } + } + } + return algorithm; +} + +static bool btc8723b_need_dec_pwr(struct btc_coexist *btcoexist) +{ + bool ret = false; + bool bt_hs_on = false, wifi_connected = false; + s32 bt_hs_rssi = 0; + u8 bt_rssi_state; + + if (!btcoexist->btc_get(btcoexist, BTC_GET_BL_HS_OPERATION, &bt_hs_on)) + return false; + if (!btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_CONNECTED, + &wifi_connected)) + return false; + if (!btcoexist->btc_get(btcoexist, BTC_GET_S4_HS_RSSI, &bt_hs_rssi)) + return false; + + bt_rssi_state = btc8723b2ant_bt_rssi_state(2, 35, 0); + + if (wifi_connected) { + if (bt_hs_on) { + if (bt_hs_rssi > 37) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, + "[BTCoex], Need to decrease bt " + "power for HS mode!!\n"); + ret = true; + } + } else { + if ((bt_rssi_state == BTC_RSSI_STATE_HIGH) || + (bt_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, + "[BTCoex], Need to decrease bt " + "power for Wifi is connected!!\n"); + ret = true; + } + } + } + + return ret; +} + +static void btc8723b2ant_set_fw_dac_swing_level(struct btc_coexist *btcoexist, + u8 dac_swing_lvl) +{ + u8 h2c_parameter[1] = {0}; + + /* There are several type of dacswing + * 0x18/ 0x10/ 0xc/ 0x8/ 0x4/ 0x6 + */ + h2c_parameter[0] = dac_swing_lvl; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, + "[BTCoex], Set Dac Swing Level=0x%x\n", dac_swing_lvl); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, + "[BTCoex], FW write 0x64=0x%x\n", h2c_parameter[0]); + + btcoexist->btc_fill_h2c(btcoexist, 0x64, 1, h2c_parameter); +} + +static void btc8723b2ant_set_fw_dec_bt_pwr(struct btc_coexist *btcoexist, + bool dec_bt_pwr) +{ + u8 h2c_parameter[1] = {0}; + + h2c_parameter[0] = 0; + + if (dec_bt_pwr) + h2c_parameter[0] |= BIT1; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, + "[BTCoex], decrease Bt Power : %s, FW write 0x62=0x%x\n", + (dec_bt_pwr ? "Yes!!" : "No!!"), h2c_parameter[0]); + + btcoexist->btc_fill_h2c(btcoexist, 0x62, 1, h2c_parameter); +} + +static void btc8723b2ant_dec_bt_pwr(struct btc_coexist *btcoexist, + bool force_exec, bool dec_bt_pwr) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, + "[BTCoex], %s Dec BT power = %s\n", + (force_exec ? "force to" : ""), (dec_bt_pwr ? "ON" : "OFF")); + coex_dm->cur_dec_bt_pwr = dec_bt_pwr; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], bPreDecBtPwr=%d, bCurDecBtPwr=%d\n", + coex_dm->pre_dec_bt_pwr, coex_dm->cur_dec_bt_pwr); + + if (coex_dm->pre_dec_bt_pwr == coex_dm->cur_dec_bt_pwr) + return; + } + btc8723b2ant_set_fw_dec_bt_pwr(btcoexist, coex_dm->cur_dec_bt_pwr); + + coex_dm->pre_dec_bt_pwr = coex_dm->cur_dec_bt_pwr; +} + +static void btc8723b2ant_fw_dac_swing_lvl(struct btc_coexist *btcoexist, + bool force_exec, u8 fw_dac_swing_lvl) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, + "[BTCoex], %s set FW Dac Swing level = %d\n", + (force_exec ? "force to" : ""), fw_dac_swing_lvl); + coex_dm->cur_fw_dac_swing_lvl = fw_dac_swing_lvl; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], preFwDacSwingLvl=%d, " + "curFwDacSwingLvl=%d\n", + coex_dm->pre_fw_dac_swing_lvl, + coex_dm->cur_fw_dac_swing_lvl); + + if (coex_dm->pre_fw_dac_swing_lvl == + coex_dm->cur_fw_dac_swing_lvl) + return; + } + + btc8723b2ant_set_fw_dac_swing_level(btcoexist, + coex_dm->cur_fw_dac_swing_lvl); + coex_dm->pre_fw_dac_swing_lvl = coex_dm->cur_fw_dac_swing_lvl; +} + +static void btc8723b2ant_set_sw_rf_rx_lpf_corner(struct btc_coexist *btcoexist, + bool rx_rf_shrink_on) +{ + if (rx_rf_shrink_on) { + /* Shrink RF Rx LPF corner */ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], Shrink RF Rx LPF corner!!\n"); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1e, + 0xfffff, 0xffffc); + } else { + /* Resume RF Rx LPF corner */ + /* After initialized, we can use coex_dm->btRf0x1eBackup */ + if (btcoexist->initilized) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], Resume RF Rx LPF corner!!\n"); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1e, + 0xfffff, + coex_dm->bt_rf0x1e_backup); + } + } +} + +static void btc8723b2ant_rf_shrink(struct btc_coexist *btcoexist, + bool force_exec, bool rx_rf_shrink_on) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, + "[BTCoex], %s turn Rx RF Shrink = %s\n", + (force_exec ? "force to" : ""), (rx_rf_shrink_on ? + "ON" : "OFF")); + coex_dm->cur_rf_rx_lpf_shrink = rx_rf_shrink_on; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, + "[BTCoex], bPreRfRxLpfShrink=%d, " + "bCurRfRxLpfShrink=%d\n", + coex_dm->pre_rf_rx_lpf_shrink, + coex_dm->cur_rf_rx_lpf_shrink); + + if (coex_dm->pre_rf_rx_lpf_shrink == + coex_dm->cur_rf_rx_lpf_shrink) + return; + } + btc8723b2ant_set_sw_rf_rx_lpf_corner(btcoexist, + coex_dm->cur_rf_rx_lpf_shrink); + + coex_dm->pre_rf_rx_lpf_shrink = coex_dm->cur_rf_rx_lpf_shrink; +} + +static void btc8723b_set_penalty_txrate(struct btc_coexist *btcoexist, + bool low_penalty_ra) +{ + u8 h2c_parameter[6] = {0}; + + h2c_parameter[0] = 0x6; /* opCode, 0x6= Retry_Penalty*/ + + if (low_penalty_ra) { + h2c_parameter[1] |= BIT0; + /*normal rate except MCS7/6/5, OFDM54/48/36*/ + h2c_parameter[2] = 0x00; + h2c_parameter[3] = 0xf7; /*MCS7 or OFDM54*/ + h2c_parameter[4] = 0xf8; /*MCS6 or OFDM48*/ + h2c_parameter[5] = 0xf9; /*MCS5 or OFDM36*/ + } + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, + "[BTCoex], set WiFi Low-Penalty Retry: %s", + (low_penalty_ra ? "ON!!" : "OFF!!")); + + btcoexist->btc_fill_h2c(btcoexist, 0x69, 6, h2c_parameter); +} + +static void btc8723b2ant_low_penalty_ra(struct btc_coexist *btcoexist, + bool force_exec, bool low_penalty_ra) +{ + /*return; */ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, + "[BTCoex], %s turn LowPenaltyRA = %s\n", + (force_exec ? "force to" : ""), (low_penalty_ra ? + "ON" : "OFF")); + coex_dm->cur_low_penalty_ra = low_penalty_ra; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, + "[BTCoex], bPreLowPenaltyRa=%d, " + "bCurLowPenaltyRa=%d\n", + coex_dm->pre_low_penalty_ra, + coex_dm->cur_low_penalty_ra); + + if (coex_dm->pre_low_penalty_ra == coex_dm->cur_low_penalty_ra) + return; + } + btc8723b_set_penalty_txrate(btcoexist, coex_dm->cur_low_penalty_ra); + + coex_dm->pre_low_penalty_ra = coex_dm->cur_low_penalty_ra; +} + +static void btc8723b2ant_set_dac_swing_reg(struct btc_coexist *btcoexist, + u32 level) +{ + u8 val = (u8) level; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], Write SwDacSwing = 0x%x\n", level); + btcoexist->btc_write_1byte_bitmask(btcoexist, 0x883, 0x3e, val); +} + +static void btc8723b2ant_set_sw_fulltime_dac_swing(struct btc_coexist *btcoex, + bool sw_dac_swing_on, + u32 sw_dac_swing_lvl) +{ + if (sw_dac_swing_on) + btc8723b2ant_set_dac_swing_reg(btcoex, sw_dac_swing_lvl); + else + btc8723b2ant_set_dac_swing_reg(btcoex, 0x18); +} + + +static void btc8723b2ant_dac_swing(struct btc_coexist *btcoexist, + bool force_exec, bool dac_swing_on, + u32 dac_swing_lvl) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, + "[BTCoex], %s turn DacSwing=%s, dac_swing_lvl=0x%x\n", + (force_exec ? "force to" : ""), + (dac_swing_on ? "ON" : "OFF"), dac_swing_lvl); + coex_dm->cur_dac_swing_on = dac_swing_on; + coex_dm->cur_dac_swing_lvl = dac_swing_lvl; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, + "[BTCoex], bPreDacSwingOn=%d, preDacSwingLvl=0x%x," + " bCurDacSwingOn=%d, curDacSwingLvl=0x%x\n", + coex_dm->pre_dac_swing_on, coex_dm->pre_dac_swing_lvl, + coex_dm->cur_dac_swing_on, + coex_dm->cur_dac_swing_lvl); + + if ((coex_dm->pre_dac_swing_on == coex_dm->cur_dac_swing_on) && + (coex_dm->pre_dac_swing_lvl == coex_dm->cur_dac_swing_lvl)) + return; + } + mdelay(30); + btc8723b2ant_set_sw_fulltime_dac_swing(btcoexist, dac_swing_on, + dac_swing_lvl); + + coex_dm->pre_dac_swing_on = coex_dm->cur_dac_swing_on; + coex_dm->pre_dac_swing_lvl = coex_dm->cur_dac_swing_lvl; +} + +static void btc8723b2ant_set_agc_table(struct btc_coexist *btcoexist, + bool agc_table_en) +{ + u8 rssi_adjust_val = 0; + + /* BB AGC Gain Table */ + if (agc_table_en) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], BB Agc Table On!\n"); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0x6e1A0001); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0x6d1B0001); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0x6c1C0001); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0x6b1D0001); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0x6a1E0001); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0x691F0001); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0x68200001); + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], BB Agc Table Off!\n"); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0xaa1A0001); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0xa91B0001); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0xa81C0001); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0xa71D0001); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0xa61E0001); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0xa51F0001); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0xa4200001); + } + + + /* RF Gain */ + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0xef, 0xfffff, 0x02000); + if (agc_table_en) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], Agc Table On!\n"); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x3b, + 0xfffff, 0x38fff); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x3b, + 0xfffff, 0x38ffe); + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], Agc Table Off!\n"); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x3b, + 0xfffff, 0x380c3); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x3b, + 0xfffff, 0x28ce6); + } + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0xef, 0xfffff, 0x0); + + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0xed, 0xfffff, 0x1); + + if (agc_table_en) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], Agc Table On!\n"); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x40, + 0xfffff, 0x38fff); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x40, + 0xfffff, 0x38ffe); + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], Agc Table Off!\n"); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x40, + 0xfffff, 0x380c3); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x40, + 0xfffff, 0x28ce6); + } + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0xed, 0xfffff, 0x0); + + /* set rssiAdjustVal for wifi module. */ + if (agc_table_en) + rssi_adjust_val = 8; + btcoexist->btc_set(btcoexist, BTC_SET_U1_RSSI_ADJ_VAL_FOR_AGC_TABLE_ON, + &rssi_adjust_val); +} + +static void btc8723b2ant_agc_table(struct btc_coexist *btcoexist, + bool force_exec, bool agc_table_en) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, + "[BTCoex], %s %s Agc Table\n", + (force_exec ? "force to" : ""), + (agc_table_en ? "Enable" : "Disable")); + coex_dm->cur_agc_table_en = agc_table_en; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, + "[BTCoex], bPreAgcTableEn=%d, bCurAgcTableEn=%d\n", + coex_dm->pre_agc_table_en, coex_dm->cur_agc_table_en); + + if (coex_dm->pre_agc_table_en == coex_dm->cur_agc_table_en) + return; + } + btc8723b2ant_set_agc_table(btcoexist, agc_table_en); + + coex_dm->pre_agc_table_en = coex_dm->cur_agc_table_en; +} + +static void btc8723b2ant_set_coex_table(struct btc_coexist *btcoexist, + u32 val0x6c0, u32 val0x6c4, + u32 val0x6c8, u8 val0x6cc) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], set coex table, set 0x6c0=0x%x\n", val0x6c0); + btcoexist->btc_write_4byte(btcoexist, 0x6c0, val0x6c0); + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], set coex table, set 0x6c4=0x%x\n", val0x6c4); + btcoexist->btc_write_4byte(btcoexist, 0x6c4, val0x6c4); + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], set coex table, set 0x6c8=0x%x\n", val0x6c8); + btcoexist->btc_write_4byte(btcoexist, 0x6c8, val0x6c8); + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], set coex table, set 0x6cc=0x%x\n", val0x6cc); + btcoexist->btc_write_1byte(btcoexist, 0x6cc, val0x6cc); +} + +static void btc8723b2ant_coex_table(struct btc_coexist *btcoexist, + bool force_exec, u32 val0x6c0, + u32 val0x6c4, u32 val0x6c8, + u8 val0x6cc) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, + "[BTCoex], %s write Coex Table 0x6c0=0x%x," + " 0x6c4=0x%x, 0x6c8=0x%x, 0x6cc=0x%x\n", + (force_exec ? "force to" : ""), val0x6c0, + val0x6c4, val0x6c8, val0x6cc); + coex_dm->cur_val0x6c0 = val0x6c0; + coex_dm->cur_val0x6c4 = val0x6c4; + coex_dm->cur_val0x6c8 = val0x6c8; + coex_dm->cur_val0x6cc = val0x6cc; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, + "[BTCoex], preVal0x6c0=0x%x, " + "preVal0x6c4=0x%x, preVal0x6c8=0x%x, " + "preVal0x6cc=0x%x !!\n", + coex_dm->pre_val0x6c0, coex_dm->pre_val0x6c4, + coex_dm->pre_val0x6c8, coex_dm->pre_val0x6cc); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, + "[BTCoex], curVal0x6c0=0x%x, " + "curVal0x6c4=0x%x, curVal0x6c8=0x%x, " + "curVal0x6cc=0x%x !!\n", + coex_dm->cur_val0x6c0, coex_dm->cur_val0x6c4, + coex_dm->cur_val0x6c8, coex_dm->cur_val0x6cc); + + if ((coex_dm->pre_val0x6c0 == coex_dm->cur_val0x6c0) && + (coex_dm->pre_val0x6c4 == coex_dm->cur_val0x6c4) && + (coex_dm->pre_val0x6c8 == coex_dm->cur_val0x6c8) && + (coex_dm->pre_val0x6cc == coex_dm->cur_val0x6cc)) + return; + } + btc8723b2ant_set_coex_table(btcoexist, val0x6c0, val0x6c4, + val0x6c8, val0x6cc); + + coex_dm->pre_val0x6c0 = coex_dm->cur_val0x6c0; + coex_dm->pre_val0x6c4 = coex_dm->cur_val0x6c4; + coex_dm->pre_val0x6c8 = coex_dm->cur_val0x6c8; + coex_dm->pre_val0x6cc = coex_dm->cur_val0x6cc; +} + +static void btc8723b_coex_tbl_type(struct btc_coexist *btcoexist, + bool force_exec, u8 type) +{ + switch (type) { + case 0: + btc8723b2ant_coex_table(btcoexist, force_exec, 0x55555555, + 0x55555555, 0xffff, 0x3); + break; + case 1: + btc8723b2ant_coex_table(btcoexist, force_exec, 0x55555555, + 0x5afa5afa, 0xffff, 0x3); + break; + case 2: + btc8723b2ant_coex_table(btcoexist, force_exec, 0x5a5a5a5a, + 0x5a5a5a5a, 0xffff, 0x3); + break; + case 3: + btc8723b2ant_coex_table(btcoexist, force_exec, 0xaaaaaaaa, + 0xaaaaaaaa, 0xffff, 0x3); + break; + case 4: + btc8723b2ant_coex_table(btcoexist, force_exec, 0xffffffff, + 0xffffffff, 0xffff, 0x3); + break; + case 5: + btc8723b2ant_coex_table(btcoexist, force_exec, 0x5fff5fff, + 0x5fff5fff, 0xffff, 0x3); + break; + case 6: + btc8723b2ant_coex_table(btcoexist, force_exec, 0x55ff55ff, + 0x5a5a5a5a, 0xffff, 0x3); + break; + case 7: + btc8723b2ant_coex_table(btcoexist, force_exec, 0x55ff55ff, + 0x5afa5afa, 0xffff, 0x3); + break; + case 8: + btc8723b2ant_coex_table(btcoexist, force_exec, 0x5aea5aea, + 0x5aea5aea, 0xffff, 0x3); + break; + case 9: + btc8723b2ant_coex_table(btcoexist, force_exec, 0x55ff55ff, + 0x5aea5aea, 0xffff, 0x3); + break; + case 10: + btc8723b2ant_coex_table(btcoexist, force_exec, 0x55ff55ff, + 0x5aff5aff, 0xffff, 0x3); + break; + case 11: + btc8723b2ant_coex_table(btcoexist, force_exec, 0x55ff55ff, + 0x5a5f5a5f, 0xffff, 0x3); + break; + case 12: + btc8723b2ant_coex_table(btcoexist, force_exec, 0x55ff55ff, + 0x5f5f5f5f, 0xffff, 0x3); + break; + default: + break; + } +} + +static void btc8723b2ant_set_fw_ignore_wlan_act(struct btc_coexist *btcoexist, + bool enable) +{ + u8 h2c_parameter[1] = {0}; + + if (enable) + h2c_parameter[0] |= BIT0;/* function enable*/ + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, + "[BTCoex], set FW for BT Ignore Wlan_Act, " + "FW write 0x63=0x%x\n", h2c_parameter[0]); + + btcoexist->btc_fill_h2c(btcoexist, 0x63, 1, h2c_parameter); +} + +static void btc8723b2ant_ignore_wlan_act(struct btc_coexist *btcoexist, + bool force_exec, bool enable) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, + "[BTCoex], %s turn Ignore WlanAct %s\n", + (force_exec ? "force to" : ""), (enable ? "ON" : "OFF")); + coex_dm->cur_ignore_wlan_act = enable; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], bPreIgnoreWlanAct = %d, " + "bCurIgnoreWlanAct = %d!!\n", + coex_dm->pre_ignore_wlan_act, + coex_dm->cur_ignore_wlan_act); + + if (coex_dm->pre_ignore_wlan_act == + coex_dm->cur_ignore_wlan_act) + return; + } + btc8723b2ant_set_fw_ignore_wlan_act(btcoexist, enable); + + coex_dm->pre_ignore_wlan_act = coex_dm->cur_ignore_wlan_act; +} + +static void btc8723b2ant_set_fw_ps_tdma(struct btc_coexist *btcoexist, u8 byte1, + u8 byte2, u8 byte3, u8 byte4, u8 byte5) +{ + u8 h2c_parameter[5]; + + h2c_parameter[0] = byte1; + h2c_parameter[1] = byte2; + h2c_parameter[2] = byte3; + h2c_parameter[3] = byte4; + h2c_parameter[4] = byte5; + + coex_dm->ps_tdma_para[0] = byte1; + coex_dm->ps_tdma_para[1] = byte2; + coex_dm->ps_tdma_para[2] = byte3; + coex_dm->ps_tdma_para[3] = byte4; + coex_dm->ps_tdma_para[4] = byte5; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, + "[BTCoex], FW write 0x60(5bytes)=0x%x%08x\n", + h2c_parameter[0], + h2c_parameter[1] << 24 | h2c_parameter[2] << 16 | + h2c_parameter[3] << 8 | h2c_parameter[4]); + + btcoexist->btc_fill_h2c(btcoexist, 0x60, 5, h2c_parameter); +} + +static void btc8723b2ant_sw_mechanism1(struct btc_coexist *btcoexist, + bool shrink_rx_lpf, bool low_penalty_ra, + bool limited_dig, bool bt_lna_constrain) +{ + btc8723b2ant_rf_shrink(btcoexist, NORMAL_EXEC, shrink_rx_lpf); + btc8723b2ant_low_penalty_ra(btcoexist, NORMAL_EXEC, low_penalty_ra); +} + +static void btc8723b2ant_sw_mechanism2(struct btc_coexist *btcoexist, + bool agc_table_shift, bool adc_backoff, + bool sw_dac_swing, u32 dac_swing_lvl) +{ + btc8723b2ant_agc_table(btcoexist, NORMAL_EXEC, agc_table_shift); + btc8723b2ant_dac_swing(btcoexist, NORMAL_EXEC, sw_dac_swing, + dac_swing_lvl); +} + +static void btc8723b2ant_ps_tdma(struct btc_coexist *btcoexist, bool force_exec, + bool turn_on, u8 type) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, + "[BTCoex], %s turn %s PS TDMA, type=%d\n", + (force_exec ? "force to" : ""), + (turn_on ? "ON" : "OFF"), type); + coex_dm->cur_ps_tdma_on = turn_on; + coex_dm->cur_ps_tdma = type; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], bPrePsTdmaOn = %d, bCurPsTdmaOn = %d!!\n", + coex_dm->pre_ps_tdma_on, coex_dm->cur_ps_tdma_on); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], prePsTdma = %d, curPsTdma = %d!!\n", + coex_dm->pre_ps_tdma, coex_dm->cur_ps_tdma); + + if ((coex_dm->pre_ps_tdma_on == coex_dm->cur_ps_tdma_on) && + (coex_dm->pre_ps_tdma == coex_dm->cur_ps_tdma)) + return; + } + if (turn_on) { + switch (type) { + case 1: + default: + btc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x1a, + 0x1a, 0xe1, 0x90); + break; + case 2: + btc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x12, + 0x12, 0xe1, 0x90); + break; + case 3: + btc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x1c, + 0x3, 0xf1, 0x90); + break; + case 4: + btc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x10, + 0x03, 0xf1, 0x90); + break; + case 5: + btc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x1a, + 0x1a, 0x60, 0x90); + break; + case 6: + btc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x12, + 0x12, 0x60, 0x90); + break; + case 7: + btc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x1c, + 0x3, 0x70, 0x90); + break; + case 8: + btc8723b2ant_set_fw_ps_tdma(btcoexist, 0xa3, 0x10, + 0x3, 0x70, 0x90); + break; + case 9: + btc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x1a, + 0x1a, 0xe1, 0x90); + break; + case 10: + btc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x12, + 0x12, 0xe1, 0x90); + break; + case 11: + btc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0xa, + 0xa, 0xe1, 0x90); + break; + case 12: + btc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x5, + 0x5, 0xe1, 0x90); + break; + case 13: + btc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x1a, + 0x1a, 0x60, 0x90); + break; + case 14: + btc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x12, + 0x12, 0x60, 0x90); + break; + case 15: + btc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0xa, + 0xa, 0x60, 0x90); + break; + case 16: + btc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x5, + 0x5, 0x60, 0x90); + break; + case 17: + btc8723b2ant_set_fw_ps_tdma(btcoexist, 0xa3, 0x2f, + 0x2f, 0x60, 0x90); + break; + case 18: + btc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x5, + 0x5, 0xe1, 0x90); + break; + case 19: + btc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x25, + 0x25, 0xe1, 0x90); + break; + case 20: + btc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x25, + 0x25, 0x60, 0x90); + break; + case 21: + btc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x15, + 0x03, 0x70, 0x90); + break; + case 71: + btc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x1a, + 0x1a, 0xe1, 0x90); + break; + } + } else { + /* disable PS tdma */ + switch (type) { + case 0: + btc8723b2ant_set_fw_ps_tdma(btcoexist, 0x0, 0x0, 0x0, + 0x40, 0x0); + break; + case 1: + btc8723b2ant_set_fw_ps_tdma(btcoexist, 0x0, 0x0, 0x0, + 0x48, 0x0); + break; + default: + btc8723b2ant_set_fw_ps_tdma(btcoexist, 0x0, 0x0, 0x0, + 0x40, 0x0); + break; + } + } + + /* update pre state */ + coex_dm->pre_ps_tdma_on = coex_dm->cur_ps_tdma_on; + coex_dm->pre_ps_tdma = coex_dm->cur_ps_tdma; +} + +static void btc8723b2ant_coex_alloff(struct btc_coexist *btcoexist) +{ + /* fw all off */ + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, false, 1); + btc8723b2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6); + btc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + /* sw all off */ + btc8723b2ant_sw_mechanism1(btcoexist, false, false, false, false); + btc8723b2ant_sw_mechanism2(btcoexist, false, false, false, 0x18); + + /* hw all off */ + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, 0xfffff, 0x0); + btc8723b_coex_tbl_type(btcoexist, NORMAL_EXEC, 0); +} + +static void btc8723b2ant_init_coex_dm(struct btc_coexist *btcoexist) +{ + /* force to reset coex mechanism*/ + + btc8723b2ant_ps_tdma(btcoexist, FORCE_EXEC, false, 1); + btc8723b2ant_fw_dac_swing_lvl(btcoexist, FORCE_EXEC, 6); + btc8723b2ant_dec_bt_pwr(btcoexist, FORCE_EXEC, false); + + btc8723b2ant_sw_mechanism1(btcoexist, false, false, false, false); + btc8723b2ant_sw_mechanism2(btcoexist, false, false, false, 0x18); +} + +static void btc8723b2ant_action_bt_inquiry(struct btc_coexist *btcoexist) +{ + bool wifi_connected = false; + bool low_pwr_disable = true; + + btcoexist->btc_set(btcoexist, BTC_SET_ACT_DISABLE_LOW_POWER, + &low_pwr_disable); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_CONNECTED, + &wifi_connected); + + if (wifi_connected) { + btc8723b_coex_tbl_type(btcoexist, NORMAL_EXEC, 7); + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 3); + } else { + btc8723b_coex_tbl_type(btcoexist, NORMAL_EXEC, 0); + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, false, 1); + } + btc8723b2ant_fw_dac_swing_lvl(btcoexist, FORCE_EXEC, 6); + btc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + btc8723b2ant_sw_mechanism1(btcoexist, false, false, false, false); + btc8723b2ant_sw_mechanism2(btcoexist, false, false, false, 0x18); + + coex_dm->need_recover_0x948 = true; + coex_dm->backup_0x948 = btcoexist->btc_read_2byte(btcoexist, 0x948); + + btcoexist->btc_write_2byte(btcoexist, 0x948, 0x280); +} + +static bool btc8723b2ant_is_common_action(struct btc_coexist *btcoexist) +{ + bool common = false, wifi_connected = false; + bool wifi_busy = false; + bool bt_hs_on = false, low_pwr_disable = false; + + btcoexist->btc_get(btcoexist, BTC_GET_BL_HS_OPERATION, &bt_hs_on); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_CONNECTED, + &wifi_connected); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_BUSY, &wifi_busy); + + if (!wifi_connected) { + low_pwr_disable = false; + btcoexist->btc_set(btcoexist, BTC_SET_ACT_DISABLE_LOW_POWER, + &low_pwr_disable); + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Wifi non-connected idle!!\n"); + + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, 0xfffff, + 0x0); + btc8723b_coex_tbl_type(btcoexist, NORMAL_EXEC, 0); + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, false, 1); + btc8723b2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6); + btc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + btc8723b2ant_sw_mechanism1(btcoexist, false, false, false, + false); + btc8723b2ant_sw_mechanism2(btcoexist, false, false, false, + 0x18); + + common = true; + } else { + if (BT_8723B_2ANT_BT_STATUS_NON_CONNECTED_IDLE == + coex_dm->bt_status) { + low_pwr_disable = false; + btcoexist->btc_set(btcoexist, + BTC_SET_ACT_DISABLE_LOW_POWER, + &low_pwr_disable); + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Wifi connected + " + "BT non connected-idle!!\n"); + + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, + 0xfffff, 0x0); + btc8723b_coex_tbl_type(btcoexist, NORMAL_EXEC, 0); + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, false, 1); + btc8723b2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, + 0xb); + btc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, + false); + + btc8723b2ant_sw_mechanism1(btcoexist, false, false, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + + common = true; + } else if (BT_8723B_2ANT_BT_STATUS_CONNECTED_IDLE == + coex_dm->bt_status) { + low_pwr_disable = true; + btcoexist->btc_set(btcoexist, + BTC_SET_ACT_DISABLE_LOW_POWER, + &low_pwr_disable); + + if (bt_hs_on) + return false; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Wifi connected + " + "BT connected-idle!!\n"); + + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, + 0xfffff, 0x0); + btc8723b_coex_tbl_type(btcoexist, NORMAL_EXEC, 0); + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, false, 1); + btc8723b2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, + 0xb); + btc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, + false); + + btc8723b2ant_sw_mechanism1(btcoexist, true, false, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + + common = true; + } else { + low_pwr_disable = true; + btcoexist->btc_set(btcoexist, + BTC_SET_ACT_DISABLE_LOW_POWER, + &low_pwr_disable); + + if (wifi_busy) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Wifi Connected-Busy + " + "BT Busy!!\n"); + common = false; + } else { + if (bt_hs_on) + return false; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Wifi Connected-Idle + " + "BT Busy!!\n"); + + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, + 0x1, 0xfffff, 0x0); + btc8723b_coex_tbl_type(btcoexist, NORMAL_EXEC, + 7); + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 21); + btc8723b2ant_fw_dac_swing_lvl(btcoexist, + NORMAL_EXEC, + 0xb); + if (btc8723b_need_dec_pwr(btcoexist)) + btc8723b2ant_dec_bt_pwr(btcoexist, + NORMAL_EXEC, + true); + else + btc8723b2ant_dec_bt_pwr(btcoexist, + NORMAL_EXEC, + false); + btc8723b2ant_sw_mechanism1(btcoexist, false, + false, false, + false); + btc8723b2ant_sw_mechanism2(btcoexist, false, + false, false, + 0x18); + common = true; + } + } + } + + return common; +} + +static void set_tdma_int1(struct btc_coexist *btcoexist, bool tx_pause, + s32 result) +{ + /* Set PS TDMA for max interval == 1 */ + if (tx_pause) { + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_TRACE_FW_DETAIL, + "[BTCoex], TxPause = 1\n"); + + if (coex_dm->cur_ps_tdma == 71) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 5); + coex_dm->tdma_adj_type = 5; + } else if (coex_dm->cur_ps_tdma == 1) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 5); + coex_dm->tdma_adj_type = 5; + } else if (coex_dm->cur_ps_tdma == 2) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 6); + coex_dm->tdma_adj_type = 6; + } else if (coex_dm->cur_ps_tdma == 3) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 7); + coex_dm->tdma_adj_type = 7; + } else if (coex_dm->cur_ps_tdma == 4) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 8); + coex_dm->tdma_adj_type = 8; + } else if (coex_dm->cur_ps_tdma == 9) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 13); + coex_dm->tdma_adj_type = 13; + } else if (coex_dm->cur_ps_tdma == 10) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 14); + coex_dm->tdma_adj_type = 14; + } else if (coex_dm->cur_ps_tdma == 11) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 15); + coex_dm->tdma_adj_type = 15; + } else if (coex_dm->cur_ps_tdma == 12) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 16); + coex_dm->tdma_adj_type = 16; + } + + if (result == -1) { + if (coex_dm->cur_ps_tdma == 5) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 6); + coex_dm->tdma_adj_type = 6; + } else if (coex_dm->cur_ps_tdma == 6) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 7); + coex_dm->tdma_adj_type = 7; + } else if (coex_dm->cur_ps_tdma == 7) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 8); + coex_dm->tdma_adj_type = 8; + } else if (coex_dm->cur_ps_tdma == 13) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 14); + coex_dm->tdma_adj_type = 14; + } else if (coex_dm->cur_ps_tdma == 14) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 15); + coex_dm->tdma_adj_type = 15; + } else if (coex_dm->cur_ps_tdma == 15) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 16); + coex_dm->tdma_adj_type = 16; + } + } else if (result == 1) { + if (coex_dm->cur_ps_tdma == 8) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 7); + coex_dm->tdma_adj_type = 7; + } else if (coex_dm->cur_ps_tdma == 7) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 6); + coex_dm->tdma_adj_type = 6; + } else if (coex_dm->cur_ps_tdma == 6) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 5); + coex_dm->tdma_adj_type = 5; + } else if (coex_dm->cur_ps_tdma == 16) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 15); + coex_dm->tdma_adj_type = 15; + } else if (coex_dm->cur_ps_tdma == 15) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 14); + coex_dm->tdma_adj_type = 14; + } else if (coex_dm->cur_ps_tdma == 14) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 13); + coex_dm->tdma_adj_type = 13; + } + } + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_TRACE_FW_DETAIL, + "[BTCoex], TxPause = 0\n"); + if (coex_dm->cur_ps_tdma == 5) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 71); + coex_dm->tdma_adj_type = 71; + } else if (coex_dm->cur_ps_tdma == 6) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 2); + coex_dm->tdma_adj_type = 2; + } else if (coex_dm->cur_ps_tdma == 7) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 3); + coex_dm->tdma_adj_type = 3; + } else if (coex_dm->cur_ps_tdma == 8) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 4); + coex_dm->tdma_adj_type = 4; + } else if (coex_dm->cur_ps_tdma == 13) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 9); + coex_dm->tdma_adj_type = 9; + } else if (coex_dm->cur_ps_tdma == 14) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 10); + coex_dm->tdma_adj_type = 10; + } else if (coex_dm->cur_ps_tdma == 15) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 11); + coex_dm->tdma_adj_type = 11; + } else if (coex_dm->cur_ps_tdma == 16) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 12); + coex_dm->tdma_adj_type = 12; + } + + if (result == -1) { + if (coex_dm->cur_ps_tdma == 71) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 1); + coex_dm->tdma_adj_type = 1; + } else if (coex_dm->cur_ps_tdma == 1) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 2); + coex_dm->tdma_adj_type = 2; + } else if (coex_dm->cur_ps_tdma == 2) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 3); + coex_dm->tdma_adj_type = 3; + } else if (coex_dm->cur_ps_tdma == 3) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 4); + coex_dm->tdma_adj_type = 4; + } else if (coex_dm->cur_ps_tdma == 9) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 10); + coex_dm->tdma_adj_type = 10; + } else if (coex_dm->cur_ps_tdma == 10) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 11); + coex_dm->tdma_adj_type = 11; + } else if (coex_dm->cur_ps_tdma == 11) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 12); + coex_dm->tdma_adj_type = 12; + } + } else if (result == 1) { + int tmp = coex_dm->cur_ps_tdma; + switch (tmp) { + case 4: + case 3: + case 2: + case 12: + case 11: + case 10: + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, tmp - 1); + coex_dm->tdma_adj_type = tmp - 1; + break; + case 1: + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 71); + coex_dm->tdma_adj_type = 71; + break; + } + } + } +} + +static void set_tdma_int2(struct btc_coexist *btcoexist, bool tx_pause, + s32 result) +{ + /* Set PS TDMA for max interval == 2 */ + if (tx_pause) { + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_TRACE_FW_DETAIL, + "[BTCoex], TxPause = 1\n"); + if (coex_dm->cur_ps_tdma == 1) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 6); + coex_dm->tdma_adj_type = 6; + } else if (coex_dm->cur_ps_tdma == 2) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 6); + coex_dm->tdma_adj_type = 6; + } else if (coex_dm->cur_ps_tdma == 3) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 7); + coex_dm->tdma_adj_type = 7; + } else if (coex_dm->cur_ps_tdma == 4) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 8); + coex_dm->tdma_adj_type = 8; + } else if (coex_dm->cur_ps_tdma == 9) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 14); + coex_dm->tdma_adj_type = 14; + } else if (coex_dm->cur_ps_tdma == 10) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 14); + coex_dm->tdma_adj_type = 14; + } else if (coex_dm->cur_ps_tdma == 11) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 15); + coex_dm->tdma_adj_type = 15; + } else if (coex_dm->cur_ps_tdma == 12) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 16); + coex_dm->tdma_adj_type = 16; + } + if (result == -1) { + if (coex_dm->cur_ps_tdma == 5) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 6); + coex_dm->tdma_adj_type = 6; + } else if (coex_dm->cur_ps_tdma == 6) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 7); + coex_dm->tdma_adj_type = 7; + } else if (coex_dm->cur_ps_tdma == 7) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 8); + coex_dm->tdma_adj_type = 8; + } else if (coex_dm->cur_ps_tdma == 13) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 14); + coex_dm->tdma_adj_type = 14; + } else if (coex_dm->cur_ps_tdma == 14) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 15); + coex_dm->tdma_adj_type = 15; + } else if (coex_dm->cur_ps_tdma == 15) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 16); + coex_dm->tdma_adj_type = 16; + } + } else if (result == 1) { + if (coex_dm->cur_ps_tdma == 8) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 7); + coex_dm->tdma_adj_type = 7; + } else if (coex_dm->cur_ps_tdma == 7) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 6); + coex_dm->tdma_adj_type = 6; + } else if (coex_dm->cur_ps_tdma == 6) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 6); + coex_dm->tdma_adj_type = 6; + } else if (coex_dm->cur_ps_tdma == 16) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 15); + coex_dm->tdma_adj_type = 15; + } else if (coex_dm->cur_ps_tdma == 15) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 14); + coex_dm->tdma_adj_type = 14; + } else if (coex_dm->cur_ps_tdma == 14) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 14); + coex_dm->tdma_adj_type = 14; + } + } + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_TRACE_FW_DETAIL, + "[BTCoex], TxPause = 0\n"); + if (coex_dm->cur_ps_tdma == 5) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 2); + coex_dm->tdma_adj_type = 2; + } else if (coex_dm->cur_ps_tdma == 6) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 2); + coex_dm->tdma_adj_type = 2; + } else if (coex_dm->cur_ps_tdma == 7) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 3); + coex_dm->tdma_adj_type = 3; + } else if (coex_dm->cur_ps_tdma == 8) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 4); + coex_dm->tdma_adj_type = 4; + } else if (coex_dm->cur_ps_tdma == 13) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 10); + coex_dm->tdma_adj_type = 10; + } else if (coex_dm->cur_ps_tdma == 14) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 10); + coex_dm->tdma_adj_type = 10; + } else if (coex_dm->cur_ps_tdma == 15) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 11); + coex_dm->tdma_adj_type = 11; + } else if (coex_dm->cur_ps_tdma == 16) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 12); + coex_dm->tdma_adj_type = 12; + } + if (result == -1) { + if (coex_dm->cur_ps_tdma == 1) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 2); + coex_dm->tdma_adj_type = 2; + } else if (coex_dm->cur_ps_tdma == 2) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 3); + coex_dm->tdma_adj_type = 3; + } else if (coex_dm->cur_ps_tdma == 3) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 4); + coex_dm->tdma_adj_type = 4; + } else if (coex_dm->cur_ps_tdma == 9) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 10); + coex_dm->tdma_adj_type = 10; + } else if (coex_dm->cur_ps_tdma == 10) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 11); + coex_dm->tdma_adj_type = 11; + } else if (coex_dm->cur_ps_tdma == 11) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 12); + coex_dm->tdma_adj_type = 12; + } + } else if (result == 1) { + if (coex_dm->cur_ps_tdma == 4) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 3); + coex_dm->tdma_adj_type = 3; + } else if (coex_dm->cur_ps_tdma == 3) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 2); + coex_dm->tdma_adj_type = 2; + } else if (coex_dm->cur_ps_tdma == 2) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 2); + coex_dm->tdma_adj_type = 2; + } else if (coex_dm->cur_ps_tdma == 12) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 11); + coex_dm->tdma_adj_type = 11; + } else if (coex_dm->cur_ps_tdma == 11) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 10); + coex_dm->tdma_adj_type = 10; + } else if (coex_dm->cur_ps_tdma == 10) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 10); + coex_dm->tdma_adj_type = 10; + } + } + } +} + +static void set_tdma_int3(struct btc_coexist *btcoexist, bool tx_pause, + s32 result) +{ + /* Set PS TDMA for max interval == 3 */ + if (tx_pause) { + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_TRACE_FW_DETAIL, + "[BTCoex], TxPause = 1\n"); + if (coex_dm->cur_ps_tdma == 1) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 7); + coex_dm->tdma_adj_type = 7; + } else if (coex_dm->cur_ps_tdma == 2) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 7); + coex_dm->tdma_adj_type = 7; + } else if (coex_dm->cur_ps_tdma == 3) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 7); + coex_dm->tdma_adj_type = 7; + } else if (coex_dm->cur_ps_tdma == 4) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 8); + coex_dm->tdma_adj_type = 8; + } else if (coex_dm->cur_ps_tdma == 9) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 15); + coex_dm->tdma_adj_type = 15; + } else if (coex_dm->cur_ps_tdma == 10) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 15); + coex_dm->tdma_adj_type = 15; + } else if (coex_dm->cur_ps_tdma == 11) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 15); + coex_dm->tdma_adj_type = 15; + } else if (coex_dm->cur_ps_tdma == 12) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 16); + coex_dm->tdma_adj_type = 16; + } + if (result == -1) { + if (coex_dm->cur_ps_tdma == 5) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 7); + coex_dm->tdma_adj_type = 7; + } else if (coex_dm->cur_ps_tdma == 6) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 7); + coex_dm->tdma_adj_type = 7; + } else if (coex_dm->cur_ps_tdma == 7) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 8); + coex_dm->tdma_adj_type = 8; + } else if (coex_dm->cur_ps_tdma == 13) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 15); + coex_dm->tdma_adj_type = 15; + } else if (coex_dm->cur_ps_tdma == 14) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 15); + coex_dm->tdma_adj_type = 15; + } else if (coex_dm->cur_ps_tdma == 15) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 16); + coex_dm->tdma_adj_type = 16; + } + } else if (result == 1) { + if (coex_dm->cur_ps_tdma == 8) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 7); + coex_dm->tdma_adj_type = 7; + } else if (coex_dm->cur_ps_tdma == 7) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 7); + coex_dm->tdma_adj_type = 7; + } else if (coex_dm->cur_ps_tdma == 6) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 7); + coex_dm->tdma_adj_type = 7; + } else if (coex_dm->cur_ps_tdma == 16) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 15); + coex_dm->tdma_adj_type = 15; + } else if (coex_dm->cur_ps_tdma == 15) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 15); + coex_dm->tdma_adj_type = 15; + } else if (coex_dm->cur_ps_tdma == 14) { + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 15); + coex_dm->tdma_adj_type = 15; + } + } + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_TRACE_FW_DETAIL, + "[BTCoex], TxPause = 0\n"); + switch (coex_dm->cur_ps_tdma) { + case 5: + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 3); + coex_dm->tdma_adj_type = 3; + break; + case 6: + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 3); + coex_dm->tdma_adj_type = 3; + break; + case 7: + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 3); + coex_dm->tdma_adj_type = 3; + break; + case 8: + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 4); + coex_dm->tdma_adj_type = 4; + break; + case 13: + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 11); + coex_dm->tdma_adj_type = 11; + break; + case 14: + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 11); + coex_dm->tdma_adj_type = 11; + break; + case 15: + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 11); + coex_dm->tdma_adj_type = 11; + break; + case 16: + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 12); + coex_dm->tdma_adj_type = 12; + break; + } + if (result == -1) { + switch (coex_dm->cur_ps_tdma) { + case 1: + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 3); + coex_dm->tdma_adj_type = 3; + break; + case 2: + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 3); + coex_dm->tdma_adj_type = 3; + break; + case 3: + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 4); + coex_dm->tdma_adj_type = 4; + break; + case 9: + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 11); + coex_dm->tdma_adj_type = 11; + break; + case 10: + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 11); + coex_dm->tdma_adj_type = 11; + break; + case 11: + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 12); + coex_dm->tdma_adj_type = 12; + break; + } + } else if (result == 1) { + switch (coex_dm->cur_ps_tdma) { + case 4: + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 3); + coex_dm->tdma_adj_type = 3; + break; + case 3: + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 3); + coex_dm->tdma_adj_type = 3; + break; + case 2: + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 3); + coex_dm->tdma_adj_type = 3; + break; + case 12: + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 11); + coex_dm->tdma_adj_type = 11; + break; + case 11: + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 11); + coex_dm->tdma_adj_type = 11; + break; + case 10: + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 11); + coex_dm->tdma_adj_type = 11; + } + } + } +} + +static void btc8723b2ant_tdma_duration_adjust(struct btc_coexist *btcoexist, + bool sco_hid, bool tx_pause, + u8 max_interval) +{ + static s32 up, dn, m, n, wait_count; + /*0: no change, +1: increase WiFi duration, -1: decrease WiFi duration*/ + s32 result; + u8 retry_count = 0; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, + "[BTCoex], TdmaDurationAdjust()\n"); + + if (!coex_dm->auto_tdma_adjust) { + coex_dm->auto_tdma_adjust = true; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], first run TdmaDurationAdjust()!!\n"); + if (sco_hid) { + if (tx_pause) { + if (max_interval == 1) { + btc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 13); + coex_dm->tdma_adj_type = 13; + } else if (max_interval == 2) { + btc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 14); + coex_dm->tdma_adj_type = 14; + } else if (max_interval == 3) { + btc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 15); + coex_dm->tdma_adj_type = 15; + } else { + btc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 15); + coex_dm->tdma_adj_type = 15; + } + } else { + if (max_interval == 1) { + btc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 9); + coex_dm->tdma_adj_type = 9; + } else if (max_interval == 2) { + btc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 10); + coex_dm->tdma_adj_type = 10; + } else if (max_interval == 3) { + btc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 11); + coex_dm->tdma_adj_type = 11; + } else { + btc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 11); + coex_dm->tdma_adj_type = 11; + } + } + } else { + if (tx_pause) { + if (max_interval == 1) { + btc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 5); + coex_dm->tdma_adj_type = 5; + } else if (max_interval == 2) { + btc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 6); + coex_dm->tdma_adj_type = 6; + } else if (max_interval == 3) { + btc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 7); + coex_dm->tdma_adj_type = 7; + } else { + btc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 7); + coex_dm->tdma_adj_type = 7; + } + } else { + if (max_interval == 1) { + btc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 1); + coex_dm->tdma_adj_type = 1; + } else if (max_interval == 2) { + btc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 2); + coex_dm->tdma_adj_type = 2; + } else if (max_interval == 3) { + btc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 3); + coex_dm->tdma_adj_type = 3; + } else { + btc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 3); + coex_dm->tdma_adj_type = 3; + } + } + } + + up = 0; + dn = 0; + m = 1; + n = 3; + result = 0; + wait_count = 0; + } else { + /*accquire the BT TRx retry count from BT_Info byte2*/ + retry_count = coex_sta->bt_retry_cnt; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], retry_count = %d\n", retry_count); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], up=%d, dn=%d, m=%d, n=%d, wait_count=%d\n", + up, dn, m, n, wait_count); + result = 0; + wait_count++; + /* no retry in the last 2-second duration*/ + if (retry_count == 0) { + up++; + dn--; + + if (dn <= 0) + dn = 0; + + if (up >= n) { + wait_count = 0; + n = 3; + up = 0; + dn = 0; + result = 1; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_TRACE_FW_DETAIL, + "[BTCoex], Increase wifi " + "duration!!\n"); + } /* <=3 retry in the last 2-second duration*/ + } else if (retry_count <= 3) { + up--; + dn++; + + if (up <= 0) + up = 0; + + if (dn == 2) { + if (wait_count <= 2) + m++; + else + m = 1; + + if (m >= 20) + m = 20; + + n = 3 * m; + up = 0; + dn = 0; + wait_count = 0; + result = -1; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_TRACE_FW_DETAIL, + "[BTCoex], Decrease wifi duration " + "for retry_counter<3!!\n"); + } + } else { + if (wait_count == 1) + m++; + else + m = 1; + + if (m >= 20) + m = 20; + + n = 3 * m; + up = 0; + dn = 0; + wait_count = 0; + result = -1; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], Decrease wifi duration " + "for retry_counter>3!!\n"); + } + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], max Interval = %d\n", max_interval); + if (max_interval == 1) + set_tdma_int1(btcoexist, tx_pause, result); + else if (max_interval == 2) + set_tdma_int2(btcoexist, tx_pause, result); + else if (max_interval == 3) + set_tdma_int3(btcoexist, tx_pause, result); + } + + /*if current PsTdma not match with the recorded one (when scan, dhcp..), + *then we have to adjust it back to the previous recorded one. + */ + if (coex_dm->cur_ps_tdma != coex_dm->tdma_adj_type) { + bool scan = false, link = false, roam = false; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], PsTdma type dismatch!!!, " + "curPsTdma=%d, recordPsTdma=%d\n", + coex_dm->cur_ps_tdma, coex_dm->tdma_adj_type); + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_SCAN, &scan); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_LINK, &link); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_ROAM, &roam); + + if (!scan && !link && !roam) + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, + coex_dm->tdma_adj_type); + else + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], roaming/link/scan is under" + " progress, will adjust next time!!!\n"); + } +} + +/* SCO only or SCO+PAN(HS) */ +static void btc8723b2ant_action_sco(struct btc_coexist *btcoexist) +{ + u8 wifi_rssi_state; + u32 wifi_bw; + + wifi_rssi_state = btc8723b2ant_wifi_rssi_state(btcoexist, + 0, 2, 15, 0); + + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, 0xfffff, 0x0); + + btc8723b2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 4); + + if (btc8723b_need_dec_pwr(btcoexist)) + btc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, true); + else + btc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + + /*for SCO quality at 11b/g mode*/ + if (BTC_WIFI_BW_LEGACY == wifi_bw) + btc8723b_coex_tbl_type(btcoexist, NORMAL_EXEC, 2); + else /*for SCO quality & wifi performance balance at 11n mode*/ + btc8723b_coex_tbl_type(btcoexist, NORMAL_EXEC, 8); + + /*for voice quality */ + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, false, 0); + + /* sw mechanism */ + if (BTC_WIFI_BW_HT40 == wifi_bw) { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + btc8723b2ant_sw_mechanism1(btcoexist, true, true, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, true, false, + true, 0x4); + } else { + btc8723b2ant_sw_mechanism1(btcoexist, true, true, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, false, false, + true, 0x4); + } + } else { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + btc8723b2ant_sw_mechanism1(btcoexist, false, true, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, true, false, + true, 0x4); + } else { + btc8723b2ant_sw_mechanism1(btcoexist, false, true, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, false, false, + true, 0x4); + } + } +} + +static void btc8723b2ant_action_hid(struct btc_coexist *btcoexist) +{ + u8 wifi_rssi_state, bt_rssi_state; + u32 wifi_bw; + + wifi_rssi_state = btc8723b2ant_wifi_rssi_state(btcoexist, + 0, 2, 15, 0); + bt_rssi_state = btc8723b2ant_bt_rssi_state(2, 35, 0); + + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, 0xfffff, 0x0); + + btc8723b2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6); + + if (btc8723b_need_dec_pwr(btcoexist)) + btc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, true); + else + btc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + + if (BTC_WIFI_BW_LEGACY == wifi_bw) /*/for HID at 11b/g mode*/ + btc8723b_coex_tbl_type(btcoexist, NORMAL_EXEC, 7); + else /*for HID quality & wifi performance balance at 11n mode*/ + btc8723b_coex_tbl_type(btcoexist, NORMAL_EXEC, 9); + + if ((bt_rssi_state == BTC_RSSI_STATE_HIGH) || + (bt_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 9); + else + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 13); + + /* sw mechanism */ + if (BTC_WIFI_BW_HT40 == wifi_bw) { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + btc8723b2ant_sw_mechanism1(btcoexist, true, true, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + btc8723b2ant_sw_mechanism1(btcoexist, true, true, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } else { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + btc8723b2ant_sw_mechanism1(btcoexist, false, true, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + btc8723b2ant_sw_mechanism1(btcoexist, false, true, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } +} + +/*A2DP only / PAN(EDR) only/ A2DP+PAN(HS)*/ +static void btc8723b2ant_action_a2dp(struct btc_coexist *btcoexist) +{ + u8 wifi_rssi_state, bt_rssi_state; + u32 wifi_bw; + + wifi_rssi_state = btc8723b2ant_wifi_rssi_state(btcoexist, + 0, 2, 15, 0); + bt_rssi_state = btc8723b2ant_bt_rssi_state(2, 35, 0); + + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, 0xfffff, 0x0); + + btc8723b2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6); + + if (btc8723b_need_dec_pwr(btcoexist)) + btc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, true); + else + btc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + btc8723b_coex_tbl_type(btcoexist, NORMAL_EXEC, 7); + + if ((bt_rssi_state == BTC_RSSI_STATE_HIGH) || + (bt_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) + btc8723b2ant_tdma_duration_adjust(btcoexist, false, + false, 1); + else + btc8723b2ant_tdma_duration_adjust(btcoexist, false, true, 1); + + /* sw mechanism */ + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + if (BTC_WIFI_BW_HT40 == wifi_bw) { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + btc8723b2ant_sw_mechanism1(btcoexist, true, false, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + btc8723b2ant_sw_mechanism1(btcoexist, true, false, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } else { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + btc8723b2ant_sw_mechanism1(btcoexist, false, false, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + btc8723b2ant_sw_mechanism1(btcoexist, false, false, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } +} + +static void btc8723b2ant_action_a2dp_pan_hs(struct btc_coexist *btcoexist) +{ + u8 wifi_rssi_state; + u32 wifi_bw; + + wifi_rssi_state = btc8723b2ant_wifi_rssi_state(btcoexist, + 0, 2, 15, 0); + + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, 0xfffff, 0x0); + + btc8723b2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6); + + if (btc8723b_need_dec_pwr(btcoexist)) + btc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, true); + else + btc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + btc8723b_coex_tbl_type(btcoexist, NORMAL_EXEC, 7); + + btc8723b2ant_tdma_duration_adjust(btcoexist, false, true, 2); + + /* sw mechanism */ + btcoexist->btc_get(btcoexist, + BTC_GET_U4_WIFI_BW, &wifi_bw); + if (BTC_WIFI_BW_HT40 == wifi_bw) { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + btc8723b2ant_sw_mechanism1(btcoexist, true, false, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + btc8723b2ant_sw_mechanism1(btcoexist, true, false, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } else { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + btc8723b2ant_sw_mechanism1(btcoexist, false, false, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + btc8723b2ant_sw_mechanism1(btcoexist, false, false, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } +} + +static void btc8723b2ant_action_pan_edr(struct btc_coexist *btcoexist) +{ + u8 wifi_rssi_state, bt_rssi_state; + u32 wifi_bw; + + wifi_rssi_state = btc8723b2ant_wifi_rssi_state(btcoexist, + 0, 2, 15, 0); + bt_rssi_state = btc8723b2ant_bt_rssi_state(2, 35, 0); + + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, 0xfffff, 0x0); + + btc8723b2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6); + + if (btc8723b_need_dec_pwr(btcoexist)) + btc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, true); + else + btc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + btc8723b_coex_tbl_type(btcoexist, NORMAL_EXEC, 10); + + if ((bt_rssi_state == BTC_RSSI_STATE_HIGH) || + (bt_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 1); + else + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 5); + + /* sw mechanism */ + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + if (BTC_WIFI_BW_HT40 == wifi_bw) { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + btc8723b2ant_sw_mechanism1(btcoexist, true, false, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + btc8723b2ant_sw_mechanism1(btcoexist, true, false, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } else { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + btc8723b2ant_sw_mechanism1(btcoexist, false, false, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + btc8723b2ant_sw_mechanism1(btcoexist, false, false, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } +} + +/*PAN(HS) only*/ +static void btc8723b2ant_action_pan_hs(struct btc_coexist *btcoexist) +{ + u8 wifi_rssi_state; + u32 wifi_bw; + + wifi_rssi_state = btc8723b2ant_wifi_rssi_state(btcoexist, + 0, 2, 15, 0); + + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, 0xfffff, 0x0); + + btc8723b2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6); + + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) + btc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, true); + else + btc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + btc8723b_coex_tbl_type(btcoexist, NORMAL_EXEC, 7); + + btc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, false, 1); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + if (BTC_WIFI_BW_HT40 == wifi_bw) { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + btc8723b2ant_sw_mechanism1(btcoexist, true, false, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + btc8723b2ant_sw_mechanism1(btcoexist, true, false, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } else { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + btc8723b2ant_sw_mechanism1(btcoexist, false, false, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + btc8723b2ant_sw_mechanism1(btcoexist, false, false, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } +} + +/*PAN(EDR)+A2DP*/ +static void btc8723b2ant_action_pan_edr_a2dp(struct btc_coexist *btcoexist) +{ + u8 wifi_rssi_state, bt_rssi_state; + u32 wifi_bw; + + wifi_rssi_state = btc8723b2ant_wifi_rssi_state(btcoexist, + 0, 2, 15, 0); + bt_rssi_state = btc8723b2ant_bt_rssi_state(2, 35, 0); + + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, 0xfffff, 0x0); + + btc8723b2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6); + + if (btc8723b_need_dec_pwr(btcoexist)) + btc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, true); + else + btc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + + if ((bt_rssi_state == BTC_RSSI_STATE_HIGH) || + (bt_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + btc8723b_coex_tbl_type(btcoexist, NORMAL_EXEC, 12); + if (BTC_WIFI_BW_HT40 == wifi_bw) + btc8723b2ant_tdma_duration_adjust(btcoexist, false, + true, 3); + else + btc8723b2ant_tdma_duration_adjust(btcoexist, false, + false, 3); + } else { + btc8723b_coex_tbl_type(btcoexist, NORMAL_EXEC, 7); + btc8723b2ant_tdma_duration_adjust(btcoexist, false, true, 3); + } + + /* sw mechanism */ + if (BTC_WIFI_BW_HT40 == wifi_bw) { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + btc8723b2ant_sw_mechanism1(btcoexist, true, false, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + btc8723b2ant_sw_mechanism1(btcoexist, true, false, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } else { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + btc8723b2ant_sw_mechanism1(btcoexist, false, false, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + btc8723b2ant_sw_mechanism1(btcoexist, false, false, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } +} + +static void btc8723b2ant_action_pan_edr_hid(struct btc_coexist *btcoexist) +{ + u8 wifi_rssi_state, bt_rssi_state; + u32 wifi_bw; + + wifi_rssi_state = btc8723b2ant_wifi_rssi_state(btcoexist, + 0, 2, 15, 0); + bt_rssi_state = btc8723b2ant_bt_rssi_state(2, 35, 0); + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + + if (btc8723b_need_dec_pwr(btcoexist)) + btc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, true); + else + btc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + if ((bt_rssi_state == BTC_RSSI_STATE_HIGH) || + (bt_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + if (BTC_WIFI_BW_HT40 == wifi_bw) { + btc8723b2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, + 3); + btc8723b_coex_tbl_type(btcoexist, NORMAL_EXEC, 11); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, + 0xfffff, 0x780); + } else { + btc8723b2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, + 6); + btc8723b_coex_tbl_type(btcoexist, NORMAL_EXEC, 7); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, + 0xfffff, 0x0); + } + btc8723b2ant_tdma_duration_adjust(btcoexist, true, false, 2); + } else { + btc8723b2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6); + btc8723b_coex_tbl_type(btcoexist, NORMAL_EXEC, 11); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, 0xfffff, + 0x0); + btc8723b2ant_tdma_duration_adjust(btcoexist, true, true, 2); + } + + /* sw mechanism */ + if (BTC_WIFI_BW_HT40 == wifi_bw) { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + btc8723b2ant_sw_mechanism1(btcoexist, true, true, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + btc8723b2ant_sw_mechanism1(btcoexist, true, true, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } else { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + btc8723b2ant_sw_mechanism1(btcoexist, false, true, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + btc8723b2ant_sw_mechanism1(btcoexist, false, true, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } +} + +/* HID+A2DP+PAN(EDR) */ +static void btc8723b2ant_action_hid_a2dp_pan_edr(struct btc_coexist *btcoexist) +{ + u8 wifi_rssi_state, bt_rssi_state; + u32 wifi_bw; + + wifi_rssi_state = btc8723b2ant_wifi_rssi_state(btcoexist, + 0, 2, 15, 0); + bt_rssi_state = btc8723b2ant_bt_rssi_state(2, 35, 0); + + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, 0xfffff, 0x0); + + btc8723b2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6); + + if (btc8723b_need_dec_pwr(btcoexist)) + btc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, true); + else + btc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + + btc8723b_coex_tbl_type(btcoexist, NORMAL_EXEC, 7); + + if ((bt_rssi_state == BTC_RSSI_STATE_HIGH) || + (bt_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + if (BTC_WIFI_BW_HT40 == wifi_bw) + btc8723b2ant_tdma_duration_adjust(btcoexist, true, + true, 2); + else + btc8723b2ant_tdma_duration_adjust(btcoexist, true, + false, 3); + } else { + btc8723b2ant_tdma_duration_adjust(btcoexist, true, true, 3); + } + + /* sw mechanism */ + if (BTC_WIFI_BW_HT40 == wifi_bw) { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + btc8723b2ant_sw_mechanism1(btcoexist, true, true, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + btc8723b2ant_sw_mechanism1(btcoexist, true, true, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } else { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + btc8723b2ant_sw_mechanism1(btcoexist, false, true, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + btc8723b2ant_sw_mechanism1(btcoexist, false, true, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } +} + +static void btc8723b2ant_action_hid_a2dp(struct btc_coexist *btcoexist) +{ + u8 wifi_rssi_state, bt_rssi_state; + u32 wifi_bw; + + wifi_rssi_state = btc8723b2ant_wifi_rssi_state(btcoexist, + 0, 2, 15, 0); + bt_rssi_state = btc8723b2ant_bt_rssi_state(2, 35, 0); + + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, 0xfffff, 0x0); + + btc8723b2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6); + + if (btc8723b_need_dec_pwr(btcoexist)) + btc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, true); + else + btc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + + btc8723b_coex_tbl_type(btcoexist, NORMAL_EXEC, 7); + + if ((bt_rssi_state == BTC_RSSI_STATE_HIGH) || + (bt_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) + btc8723b2ant_tdma_duration_adjust(btcoexist, true, false, 2); + else + btc8723b2ant_tdma_duration_adjust(btcoexist, true, true, 2); + + /* sw mechanism */ + if (BTC_WIFI_BW_HT40 == wifi_bw) { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + btc8723b2ant_sw_mechanism1(btcoexist, true, true, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + btc8723b2ant_sw_mechanism1(btcoexist, true, true, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } else { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + btc8723b2ant_sw_mechanism1(btcoexist, false, true, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + btc8723b2ant_sw_mechanism1(btcoexist, false, true, + false, false); + btc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } +} + +static void btc8723b2ant_run_coexist_mechanism(struct btc_coexist *btcoexist) +{ + u8 algorithm = 0; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], RunCoexistMechanism()===>\n"); + + if (btcoexist->manual_control) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], RunCoexistMechanism(), " + "return for Manual CTRL <===\n"); + return; + } + + if (coex_sta->under_ips) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], wifi is under IPS !!!\n"); + return; + } + + algorithm = btc8723b2ant_action_algorithm(btcoexist); + if (coex_sta->c2h_bt_inquiry_page && + (BT_8723B_2ANT_COEX_ALGO_PANHS != algorithm)) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BT is under inquiry/page scan !!\n"); + btc8723b2ant_action_bt_inquiry(btcoexist); + return; + } else { + if (coex_dm->need_recover_0x948) { + coex_dm->need_recover_0x948 = false; + btcoexist->btc_write_2byte(btcoexist, 0x948, + coex_dm->backup_0x948); + } + } + + coex_dm->cur_algorithm = algorithm; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, "[BTCoex], Algorithm = %d\n", + coex_dm->cur_algorithm); + + if (btc8723b2ant_is_common_action(btcoexist)) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Action 2-Ant common.\n"); + coex_dm->auto_tdma_adjust = false; + } else { + if (coex_dm->cur_algorithm != coex_dm->pre_algorithm) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], preAlgorithm=%d, " + "curAlgorithm=%d\n", coex_dm->pre_algorithm, + coex_dm->cur_algorithm); + coex_dm->auto_tdma_adjust = false; + } + switch (coex_dm->cur_algorithm) { + case BT_8723B_2ANT_COEX_ALGO_SCO: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Action 2-Ant, algorithm = SCO.\n"); + btc8723b2ant_action_sco(btcoexist); + break; + case BT_8723B_2ANT_COEX_ALGO_HID: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Action 2-Ant, algorithm = HID.\n"); + btc8723b2ant_action_hid(btcoexist); + break; + case BT_8723B_2ANT_COEX_ALGO_A2DP: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Action 2-Ant, " + "algorithm = A2DP.\n"); + btc8723b2ant_action_a2dp(btcoexist); + break; + case BT_8723B_2ANT_COEX_ALGO_A2DP_PANHS: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Action 2-Ant, " + "algorithm = A2DP+PAN(HS).\n"); + btc8723b2ant_action_a2dp_pan_hs(btcoexist); + break; + case BT_8723B_2ANT_COEX_ALGO_PANEDR: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Action 2-Ant, " + "algorithm = PAN(EDR).\n"); + btc8723b2ant_action_pan_edr(btcoexist); + break; + case BT_8723B_2ANT_COEX_ALGO_PANHS: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Action 2-Ant, " + "algorithm = HS mode.\n"); + btc8723b2ant_action_pan_hs(btcoexist); + break; + case BT_8723B_2ANT_COEX_ALGO_PANEDR_A2DP: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Action 2-Ant, " + "algorithm = PAN+A2DP.\n"); + btc8723b2ant_action_pan_edr_a2dp(btcoexist); + break; + case BT_8723B_2ANT_COEX_ALGO_PANEDR_HID: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Action 2-Ant, " + "algorithm = PAN(EDR)+HID.\n"); + btc8723b2ant_action_pan_edr_hid(btcoexist); + break; + case BT_8723B_2ANT_COEX_ALGO_HID_A2DP_PANEDR: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Action 2-Ant, " + "algorithm = HID+A2DP+PAN.\n"); + btc8723b2ant_action_hid_a2dp_pan_edr(btcoexist); + break; + case BT_8723B_2ANT_COEX_ALGO_HID_A2DP: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Action 2-Ant, " + "algorithm = HID+A2DP.\n"); + btc8723b2ant_action_hid_a2dp(btcoexist); + break; + default: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Action 2-Ant, " + "algorithm = coexist All Off!!\n"); + btc8723b2ant_coex_alloff(btcoexist); + break; + } + coex_dm->pre_algorithm = coex_dm->cur_algorithm; + } +} + + + +/********************************************************************* + * work around function start with wa_btc8723b2ant_ + *********************************************************************/ +/********************************************************************* + * extern function start with EXbtc8723b2ant_ + *********************************************************************/ +void ex_halbtc8723b2ant_init_hwconfig(struct btc_coexist *btcoexist) +{ + struct btc_board_info *board_info = &btcoexist->board_info; + u32 u32tmp = 0, fw_ver; + u8 u8tmp = 0; + u8 h2c_parameter[2] = {0}; + + + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, + "[BTCoex], 2Ant Init HW Config!!\n"); + + /* backup rf 0x1e value */ + coex_dm->bt_rf0x1e_backup = btcoexist->btc_get_rf_reg(btcoexist, + BTC_RF_A, 0x1e, + 0xfffff); + + /* 0x4c[23]=0, 0x4c[24]=1 Antenna control by WL/BT */ + u32tmp = btcoexist->btc_read_4byte(btcoexist, 0x4c); + u32tmp &= ~BIT23; + u32tmp |= BIT24; + btcoexist->btc_write_4byte(btcoexist, 0x4c, u32tmp); + + btcoexist->btc_write_1byte(btcoexist, 0x974, 0xff); + btcoexist->btc_write_1byte_bitmask(btcoexist, 0x944, 0x3, 0x3); + btcoexist->btc_write_1byte(btcoexist, 0x930, 0x77); + btcoexist->btc_write_1byte_bitmask(btcoexist, 0x67, 0x20, 0x1); + + /* Antenna switch control parameter */ + /* btcoexist->btc_write_4byte(btcoexist, 0x858, 0x55555555);*/ + + /*Force GNT_BT to low*/ + btcoexist->btc_write_1byte_bitmask(btcoexist, 0x765, 0x18, 0x0); + btcoexist->btc_write_2byte(btcoexist, 0x948, 0x0); + + /* 0x790[5:0]=0x5 */ + u8tmp = btcoexist->btc_read_1byte(btcoexist, 0x790); + u8tmp &= 0xc0; + u8tmp |= 0x5; + btcoexist->btc_write_1byte(btcoexist, 0x790, u8tmp); + + + /*Antenna config */ + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_FW_VER, &fw_ver); + + /*ext switch for fw ver < 0xc */ + if (fw_ver < 0xc00) { + if (board_info->btdm_ant_pos == BTC_ANTENNA_AT_MAIN_PORT) { + btcoexist->btc_write_1byte_bitmask(btcoexist, 0x92c, + 0x3, 0x1); + /*Main Ant to BT for IPS case 0x4c[23]=1*/ + btcoexist->btc_write_1byte_bitmask(btcoexist, 0x64, 0x1, + 0x1); + + /*tell firmware "no antenna inverse"*/ + h2c_parameter[0] = 0; + h2c_parameter[1] = 1; /* ext switch type */ + btcoexist->btc_fill_h2c(btcoexist, 0x65, 2, + h2c_parameter); + } else { + btcoexist->btc_write_1byte_bitmask(btcoexist, 0x92c, + 0x3, 0x2); + /*Aux Ant to BT for IPS case 0x4c[23]=1*/ + btcoexist->btc_write_1byte_bitmask(btcoexist, 0x64, 0x1, + 0x0); + + /*tell firmware "antenna inverse"*/ + h2c_parameter[0] = 1; + h2c_parameter[1] = 1; /*ext switch type*/ + btcoexist->btc_fill_h2c(btcoexist, 0x65, 2, + h2c_parameter); + } + } else { + /*ext switch always at s1 (if exist) */ + btcoexist->btc_write_1byte_bitmask(btcoexist, 0x92c, 0x3, 0x1); + /*Main Ant to BT for IPS case 0x4c[23]=1*/ + btcoexist->btc_write_1byte_bitmask(btcoexist, 0x64, 0x1, 0x1); + + if (board_info->btdm_ant_pos == BTC_ANTENNA_AT_MAIN_PORT) { + /*tell firmware "no antenna inverse"*/ + h2c_parameter[0] = 0; + h2c_parameter[1] = 0; /*ext switch type*/ + btcoexist->btc_fill_h2c(btcoexist, 0x65, 2, + h2c_parameter); + } else { + /*tell firmware "antenna inverse"*/ + h2c_parameter[0] = 1; + h2c_parameter[1] = 0; /*ext switch type*/ + btcoexist->btc_fill_h2c(btcoexist, 0x65, 2, + h2c_parameter); + } + } + + /* PTA parameter */ + btc8723b_coex_tbl_type(btcoexist, FORCE_EXEC, 0); + + /* Enable counter statistics */ + /*0x76e[3] =1, WLAN_Act control by PTA*/ + btcoexist->btc_write_1byte(btcoexist, 0x76e, 0xc); + btcoexist->btc_write_1byte(btcoexist, 0x778, 0x3); + btcoexist->btc_write_1byte_bitmask(btcoexist, 0x40, 0x20, 0x1); +} + +void ex_halbtc8723b2ant_init_coex_dm(struct btc_coexist *btcoexist) +{ + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, + "[BTCoex], Coex Mechanism Init!!\n"); + btc8723b2ant_init_coex_dm(btcoexist); +} + +void ex_halbtc8723b2ant_display_coex_info(struct btc_coexist *btcoexist) +{ + struct btc_board_info *board_info = &btcoexist->board_info; + struct btc_stack_info *stack_info = &btcoexist->stack_info; + struct btc_bt_link_info *bt_link_info = &btcoexist->bt_link_info; + u8 *cli_buf = btcoexist->cli_buf; + u8 u8tmp[4], i, bt_info_ext, ps_tdma_case = 0; + u32 u32tmp[4]; + bool roam = false, scan = false; + bool link = false, wifi_under_5g = false; + bool bt_hs_on = false, wifi_busy = false; + s32 wifi_rssi = 0, bt_hs_rssi = 0; + u32 wifi_bw, wifi_traffic_dir, fa_ofdm, fa_cck; + u8 wifi_dot11_chnl, wifi_hs_chnl; + u32 fw_ver = 0, bt_patch_ver = 0; + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, + "\r\n ============[BT Coexist info]============"); + CL_PRINTF(cli_buf); + + if (btcoexist->manual_control) { + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, + "\r\n ==========[Under Manual Control]============"); + CL_PRINTF(cli_buf); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, + "\r\n =========================================="); + CL_PRINTF(cli_buf); + } + + if (!board_info->bt_exist) { + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n BT not exists !!!"); + CL_PRINTF(cli_buf); + return; + } + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d ", + "Ant PG number/ Ant mechanism:", + board_info->pg_ant_num, board_info->btdm_ant_num); + CL_PRINTF(cli_buf); + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %s / %d", + "BT stack/ hci ext ver", + ((stack_info->profile_notified) ? "Yes" : "No"), + stack_info->hci_version); + CL_PRINTF(cli_buf); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_BT_PATCH_VER, &bt_patch_ver); + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_FW_VER, &fw_ver); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, + "\r\n %-35s = %d_%x/ 0x%x/ 0x%x(%d)", + "CoexVer/ FwVer/ PatchVer", + glcoex_ver_date_8723b_2ant, glcoex_ver_8723b_2ant, + fw_ver, bt_patch_ver, bt_patch_ver); + CL_PRINTF(cli_buf); + + btcoexist->btc_get(btcoexist, BTC_GET_BL_HS_OPERATION, &bt_hs_on); + btcoexist->btc_get(btcoexist, BTC_GET_U1_WIFI_DOT11_CHNL, + &wifi_dot11_chnl); + btcoexist->btc_get(btcoexist, BTC_GET_U1_WIFI_HS_CHNL, &wifi_hs_chnl); + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d / %d(%d)", + "Dot11 channel / HsChnl(HsMode)", + wifi_dot11_chnl, wifi_hs_chnl, bt_hs_on); + CL_PRINTF(cli_buf); + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %02x %02x %02x ", + "H2C Wifi inform bt chnl Info", coex_dm->wifi_chnl_info[0], + coex_dm->wifi_chnl_info[1], coex_dm->wifi_chnl_info[2]); + CL_PRINTF(cli_buf); + + btcoexist->btc_get(btcoexist, BTC_GET_S4_WIFI_RSSI, &wifi_rssi); + btcoexist->btc_get(btcoexist, BTC_GET_S4_HS_RSSI, &bt_hs_rssi); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d", + "Wifi rssi/ HS rssi", wifi_rssi, bt_hs_rssi); + CL_PRINTF(cli_buf); + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_SCAN, &scan); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_LINK, &link); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_ROAM, &roam); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d/ %d ", + "Wifi link/ roam/ scan", link, roam, scan); + CL_PRINTF(cli_buf); + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_UNDER_5G, &wifi_under_5g); + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_BUSY, &wifi_busy); + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_TRAFFIC_DIRECTION, + &wifi_traffic_dir); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %s / %s/ %s ", + "Wifi status", (wifi_under_5g ? "5G" : "2.4G"), + ((BTC_WIFI_BW_LEGACY == wifi_bw) ? "Legacy" : + (((BTC_WIFI_BW_HT40 == wifi_bw) ? "HT40" : "HT20"))), + ((!wifi_busy) ? "idle" : + ((BTC_WIFI_TRAFFIC_TX == wifi_traffic_dir) ? + "uplink" : "downlink"))); + CL_PRINTF(cli_buf); + + CL_PRINTF(cli_buf); + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d / %d / %d / %d", + "SCO/HID/PAN/A2DP", + bt_link_info->sco_exist, bt_link_info->hid_exist, + bt_link_info->pan_exist, bt_link_info->a2dp_exist); + CL_PRINTF(cli_buf); + btcoexist->btc_disp_dbg_msg(btcoexist, BTC_DBG_DISP_BT_LINK_INFO); + + bt_info_ext = coex_sta->bt_info_ext; + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %s", + "BT Info A2DP rate", + (bt_info_ext&BIT0) ? "Basic rate" : "EDR rate"); + CL_PRINTF(cli_buf); + + for (i = 0; i < BT_INFO_SRC_8723B_2ANT_MAX; i++) { + if (coex_sta->bt_info_c2h_cnt[i]) { + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, + "\r\n %-35s = %02x %02x %02x " + "%02x %02x %02x %02x(%d)", + glbt_info_src_8723b_2ant[i], + coex_sta->bt_info_c2h[i][0], + coex_sta->bt_info_c2h[i][1], + coex_sta->bt_info_c2h[i][2], + coex_sta->bt_info_c2h[i][3], + coex_sta->bt_info_c2h[i][4], + coex_sta->bt_info_c2h[i][5], + coex_sta->bt_info_c2h[i][6], + coex_sta->bt_info_c2h_cnt[i]); + CL_PRINTF(cli_buf); + } + } + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %s/%s", + "PS state, IPS/LPS", + ((coex_sta->under_ips ? "IPS ON" : "IPS OFF")), + ((coex_sta->under_lps ? "LPS ON" : "LPS OFF"))); + CL_PRINTF(cli_buf); + btcoexist->btc_disp_dbg_msg(btcoexist, BTC_DBG_DISP_FW_PWR_MODE_CMD); + + /* Sw mechanism */ + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, + "\r\n %-35s", "============[Sw mechanism]============"); + CL_PRINTF(cli_buf); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d/ %d ", + "SM1[ShRf/ LpRA/ LimDig]", coex_dm->cur_rf_rx_lpf_shrink, + coex_dm->cur_low_penalty_ra, coex_dm->limited_dig); + CL_PRINTF(cli_buf); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d/ %d(0x%x) ", + "SM2[AgcT/ AdcB/ SwDacSwing(lvl)]", + coex_dm->cur_agc_table_en, coex_dm->cur_adc_back_off, + coex_dm->cur_dac_swing_on, coex_dm->cur_dac_swing_lvl); + CL_PRINTF(cli_buf); + + /* Fw mechanism */ + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s", + "============[Fw mechanism]============"); + CL_PRINTF(cli_buf); + + ps_tdma_case = coex_dm->cur_ps_tdma; + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, + "\r\n %-35s = %02x %02x %02x %02x %02x case-%d (auto:%d)", + "PS TDMA", coex_dm->ps_tdma_para[0], + coex_dm->ps_tdma_para[1], coex_dm->ps_tdma_para[2], + coex_dm->ps_tdma_para[3], coex_dm->ps_tdma_para[4], + ps_tdma_case, coex_dm->auto_tdma_adjust); + CL_PRINTF(cli_buf); + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d ", + "DecBtPwr/ IgnWlanAct", coex_dm->cur_dec_bt_pwr, + coex_dm->cur_ignore_wlan_act); + CL_PRINTF(cli_buf); + + /* Hw setting */ + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s", + "============[Hw setting]============"); + CL_PRINTF(cli_buf); + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x", + "RF-A, 0x1e initVal", coex_dm->bt_rf0x1e_backup); + CL_PRINTF(cli_buf); + + u8tmp[0] = btcoexist->btc_read_1byte(btcoexist, 0x778); + u32tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0x880); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x", + "0x778/0x880[29:25]", u8tmp[0], + (u32tmp[0]&0x3e000000) >> 25); + CL_PRINTF(cli_buf); + + u32tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0x948); + u8tmp[0] = btcoexist->btc_read_1byte(btcoexist, 0x67); + u8tmp[1] = btcoexist->btc_read_1byte(btcoexist, 0x765); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x/ 0x%x", + "0x948/ 0x67[5] / 0x765", + u32tmp[0], ((u8tmp[0]&0x20) >> 5), u8tmp[1]); + CL_PRINTF(cli_buf); + + u32tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0x92c); + u32tmp[1] = btcoexist->btc_read_4byte(btcoexist, 0x930); + u32tmp[2] = btcoexist->btc_read_4byte(btcoexist, 0x944); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x/ 0x%x", + "0x92c[1:0]/ 0x930[7:0]/0x944[1:0]", + u32tmp[0]&0x3, u32tmp[1]&0xff, u32tmp[2]&0x3); + CL_PRINTF(cli_buf); + + + u8tmp[0] = btcoexist->btc_read_1byte(btcoexist, 0x39); + u8tmp[1] = btcoexist->btc_read_1byte(btcoexist, 0x40); + u32tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0x4c); + u8tmp[2] = btcoexist->btc_read_1byte(btcoexist, 0x64); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, + "\r\n %-35s = 0x%x/ 0x%x/ 0x%x/ 0x%x", + "0x38[11]/0x40/0x4c[24:23]/0x64[0]", + ((u8tmp[0] & 0x8)>>3), u8tmp[1], + ((u32tmp[0]&0x01800000)>>23), u8tmp[2]&0x1); + CL_PRINTF(cli_buf); + + u32tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0x550); + u8tmp[0] = btcoexist->btc_read_1byte(btcoexist, 0x522); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x", + "0x550(bcn ctrl)/0x522", u32tmp[0], u8tmp[0]); + CL_PRINTF(cli_buf); + + u32tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0xc50); + u8tmp[0] = btcoexist->btc_read_1byte(btcoexist, 0x49c); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x", + "0xc50(dig)/0x49c(null-drop)", u32tmp[0]&0xff, u8tmp[0]); + CL_PRINTF(cli_buf); + + u32tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0xda0); + u32tmp[1] = btcoexist->btc_read_4byte(btcoexist, 0xda4); + u32tmp[2] = btcoexist->btc_read_4byte(btcoexist, 0xda8); + u32tmp[3] = btcoexist->btc_read_4byte(btcoexist, 0xcf0); + + u8tmp[0] = btcoexist->btc_read_1byte(btcoexist, 0xa5b); + u8tmp[1] = btcoexist->btc_read_1byte(btcoexist, 0xa5c); + + fa_ofdm = ((u32tmp[0]&0xffff0000) >> 16) + + ((u32tmp[1]&0xffff0000) >> 16) + + (u32tmp[1] & 0xffff) + + (u32tmp[2] & 0xffff) + + ((u32tmp[3]&0xffff0000) >> 16) + + (u32tmp[3] & 0xffff); + fa_cck = (u8tmp[0] << 8) + u8tmp[1]; + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x/ 0x%x", + "OFDM-CCA/OFDM-FA/CCK-FA", + u32tmp[0]&0xffff, fa_ofdm, fa_cck); + CL_PRINTF(cli_buf); + + u32tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0x6c0); + u32tmp[1] = btcoexist->btc_read_4byte(btcoexist, 0x6c4); + u32tmp[2] = btcoexist->btc_read_4byte(btcoexist, 0x6c8); + u8tmp[0] = btcoexist->btc_read_1byte(btcoexist, 0x6cc); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, + "\r\n %-35s = 0x%x/ 0x%x/ 0x%x/ 0x%x", + "0x6c0/0x6c4/0x6c8/0x6cc(coexTable)", + u32tmp[0], u32tmp[1], u32tmp[2], u8tmp[0]); + CL_PRINTF(cli_buf); + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d", + "0x770(high-pri rx/tx)", + coex_sta->high_priority_rx, coex_sta->high_priority_tx); + CL_PRINTF(cli_buf); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d", + "0x774(low-pri rx/tx)", coex_sta->low_priority_rx, + coex_sta->low_priority_tx); + CL_PRINTF(cli_buf); +#if (BT_AUTO_REPORT_ONLY_8723B_2ANT == 1) + btc8723b2ant_monitor_bt_ctr(btcoexist); +#endif + btcoexist->btc_disp_dbg_msg(btcoexist, + BTC_DBG_DISP_COEX_STATISTICS); +} + + +void ex_halbtc8723b2ant_ips_notify(struct btc_coexist *btcoexist, u8 type) +{ + if (BTC_IPS_ENTER == type) { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], IPS ENTER notify\n"); + coex_sta->under_ips = true; + btc8723b2ant_coex_alloff(btcoexist); + } else if (BTC_IPS_LEAVE == type) { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], IPS LEAVE notify\n"); + coex_sta->under_ips = false; + } +} + +void ex_halbtc8723b2ant_lps_notify(struct btc_coexist *btcoexist, u8 type) +{ + if (BTC_LPS_ENABLE == type) { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], LPS ENABLE notify\n"); + coex_sta->under_lps = true; + } else if (BTC_LPS_DISABLE == type) { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], LPS DISABLE notify\n"); + coex_sta->under_lps = false; + } +} + +void ex_halbtc8723b2ant_scan_notify(struct btc_coexist *btcoexist, u8 type) +{ + if (BTC_SCAN_START == type) + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], SCAN START notify\n"); + else if (BTC_SCAN_FINISH == type) + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], SCAN FINISH notify\n"); +} + +void ex_halbtc8723b2ant_connect_notify(struct btc_coexist *btcoexist, u8 type) +{ + if (BTC_ASSOCIATE_START == type) + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], CONNECT START notify\n"); + else if (BTC_ASSOCIATE_FINISH == type) + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], CONNECT FINISH notify\n"); +} + +void btc8723b_med_stat_notify(struct btc_coexist *btcoexist, + u8 type) +{ + u8 h2c_parameter[3] = {0}; + u32 wifi_bw; + u8 wifi_central_chnl; + + if (BTC_MEDIA_CONNECT == type) + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], MEDIA connect notify\n"); + else + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], MEDIA disconnect notify\n"); + + /* only 2.4G we need to inform bt the chnl mask */ + btcoexist->btc_get(btcoexist, + BTC_GET_U1_WIFI_CENTRAL_CHNL, &wifi_central_chnl); + if ((BTC_MEDIA_CONNECT == type) && + (wifi_central_chnl <= 14)) { + h2c_parameter[0] = 0x1; + h2c_parameter[1] = wifi_central_chnl; + btcoexist->btc_get(btcoexist, + BTC_GET_U4_WIFI_BW, &wifi_bw); + if (BTC_WIFI_BW_HT40 == wifi_bw) + h2c_parameter[2] = 0x30; + else + h2c_parameter[2] = 0x20; + } + + coex_dm->wifi_chnl_info[0] = h2c_parameter[0]; + coex_dm->wifi_chnl_info[1] = h2c_parameter[1]; + coex_dm->wifi_chnl_info[2] = h2c_parameter[2]; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, + "[BTCoex], FW write 0x66=0x%x\n", + h2c_parameter[0] << 16 | h2c_parameter[1] << 8 | + h2c_parameter[2]); + + btcoexist->btc_fill_h2c(btcoexist, 0x66, 3, h2c_parameter); +} + +void ex_halbtc8723b2ant_special_packet_notify(struct btc_coexist *btcoexist, + u8 type) +{ + if (type == BTC_PACKET_DHCP) + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], DHCP Packet notify\n"); +} + +void ex_halbtc8723b2ant_bt_info_notify(struct btc_coexist *btcoexist, + u8 *tmpbuf, u8 length) +{ + u8 bt_info = 0; + u8 i, rsp_source = 0; + bool bt_busy = false, limited_dig = false; + bool wifi_connected = false; + + coex_sta->c2h_bt_info_req_sent = false; + + rsp_source = tmpbuf[0]&0xf; + if (rsp_source >= BT_INFO_SRC_8723B_2ANT_MAX) + rsp_source = BT_INFO_SRC_8723B_2ANT_WIFI_FW; + coex_sta->bt_info_c2h_cnt[rsp_source]++; + + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], Bt info[%d], length=%d, hex data=[", + rsp_source, length); + for (i = 0; i < length; i++) { + coex_sta->bt_info_c2h[rsp_source][i] = tmpbuf[i]; + if (i == 1) + bt_info = tmpbuf[i]; + if (i == length-1) + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "0x%02x]\n", tmpbuf[i]); + else + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "0x%02x, ", tmpbuf[i]); + } + + if (btcoexist->manual_control) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BtInfoNotify(), " + "return for Manual CTRL<===\n"); + return; + } + + if (BT_INFO_SRC_8723B_2ANT_WIFI_FW != rsp_source) { + coex_sta->bt_retry_cnt = /* [3:0]*/ + coex_sta->bt_info_c2h[rsp_source][2] & 0xf; + + coex_sta->bt_rssi = + coex_sta->bt_info_c2h[rsp_source][3] * 2 + 10; + + coex_sta->bt_info_ext = + coex_sta->bt_info_c2h[rsp_source][4]; + + /* Here we need to resend some wifi info to BT + * because bt is reset and loss of the info. + */ + if ((coex_sta->bt_info_ext & BIT1)) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BT ext info bit1 check," + " send wifi BW&Chnl to BT!!\n"); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_CONNECTED, + &wifi_connected); + if (wifi_connected) + btc8723b_med_stat_notify(btcoexist, + BTC_MEDIA_CONNECT); + else + btc8723b_med_stat_notify(btcoexist, + BTC_MEDIA_DISCONNECT); + } + + if ((coex_sta->bt_info_ext & BIT3)) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BT ext info bit3 check, " + "set BT NOT to ignore Wlan active!!\n"); + btc8723b2ant_ignore_wlan_act(btcoexist, FORCE_EXEC, + false); + } else { + /* BT already NOT ignore Wlan active, do nothing here.*/ + } +#if (BT_AUTO_REPORT_ONLY_8723B_2ANT == 0) + if ((coex_sta->bt_info_ext & BIT4)) { + /* BT auto report already enabled, do nothing*/ + } else { + btc8723b2ant_bt_auto_report(btcoexist, FORCE_EXEC, + true); + } +#endif + } + + /* check BIT2 first ==> check if bt is under inquiry or page scan*/ + if (bt_info & BT_INFO_8723B_2ANT_B_INQ_PAGE) + coex_sta->c2h_bt_inquiry_page = true; + else + coex_sta->c2h_bt_inquiry_page = false; + + /* set link exist status*/ + if (!(bt_info & BT_INFO_8723B_2ANT_B_CONNECTION)) { + coex_sta->bt_link_exist = false; + coex_sta->pan_exist = false; + coex_sta->a2dp_exist = false; + coex_sta->hid_exist = false; + coex_sta->sco_exist = false; + } else { /* connection exists */ + coex_sta->bt_link_exist = true; + if (bt_info & BT_INFO_8723B_2ANT_B_FTP) + coex_sta->pan_exist = true; + else + coex_sta->pan_exist = false; + if (bt_info & BT_INFO_8723B_2ANT_B_A2DP) + coex_sta->a2dp_exist = true; + else + coex_sta->a2dp_exist = false; + if (bt_info & BT_INFO_8723B_2ANT_B_HID) + coex_sta->hid_exist = true; + else + coex_sta->hid_exist = false; + if (bt_info & BT_INFO_8723B_2ANT_B_SCO_ESCO) + coex_sta->sco_exist = true; + else + coex_sta->sco_exist = false; + } + + btc8723b2ant_update_bt_link_info(btcoexist); + + if (!(bt_info & BT_INFO_8723B_2ANT_B_CONNECTION)) { + coex_dm->bt_status = BT_8723B_2ANT_BT_STATUS_NON_CONNECTED_IDLE; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BtInfoNotify(), " + "BT Non-Connected idle!!!\n"); + /* connection exists but no busy */ + } else if (bt_info == BT_INFO_8723B_2ANT_B_CONNECTION) { + coex_dm->bt_status = BT_8723B_2ANT_BT_STATUS_CONNECTED_IDLE; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BtInfoNotify(), BT Connected-idle!!!\n"); + } else if ((bt_info & BT_INFO_8723B_2ANT_B_SCO_ESCO) || + (bt_info & BT_INFO_8723B_2ANT_B_SCO_BUSY)) { + coex_dm->bt_status = BT_8723B_2ANT_BT_STATUS_SCO_BUSY; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BtInfoNotify(), BT SCO busy!!!\n"); + } else if (bt_info & BT_INFO_8723B_2ANT_B_ACL_BUSY) { + coex_dm->bt_status = BT_8723B_2ANT_BT_STATUS_ACL_BUSY; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BtInfoNotify(), BT ACL busy!!!\n"); + } else { + coex_dm->bt_status = BT_8723B_2ANT_BT_STATUS_MAX; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BtInfoNotify(), " + "BT Non-Defined state!!!\n"); + } + + if ((BT_8723B_2ANT_BT_STATUS_ACL_BUSY == coex_dm->bt_status) || + (BT_8723B_2ANT_BT_STATUS_SCO_BUSY == coex_dm->bt_status) || + (BT_8723B_2ANT_BT_STATUS_ACL_SCO_BUSY == coex_dm->bt_status)) { + bt_busy = true; + limited_dig = true; + } else { + bt_busy = false; + limited_dig = false; + } + + btcoexist->btc_set(btcoexist, BTC_SET_BL_BT_TRAFFIC_BUSY, &bt_busy); + + coex_dm->limited_dig = limited_dig; + btcoexist->btc_set(btcoexist, BTC_SET_BL_BT_LIMITED_DIG, &limited_dig); + + btc8723b2ant_run_coexist_mechanism(btcoexist); +} + +void ex_halbtc8723b2ant_stack_operation_notify(struct btc_coexist *btcoexist, + u8 type) +{ + if (BTC_STACK_OP_INQ_PAGE_PAIR_START == type) + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex],StackOP Inquiry/page/pair start notify\n"); + else if (BTC_STACK_OP_INQ_PAGE_PAIR_FINISH == type) + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex],StackOP Inquiry/page/pair finish notify\n"); +} + +void ex_halbtc8723b2ant_halt_notify(struct btc_coexist *btcoexist) +{ + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, "[BTCoex], Halt notify\n"); + + btc8723b2ant_ignore_wlan_act(btcoexist, FORCE_EXEC, true); + btc8723b_med_stat_notify(btcoexist, BTC_MEDIA_DISCONNECT); +} + +void ex_halbtc8723b2ant_periodical(struct btc_coexist *btcoexist) +{ + struct btc_board_info *board_info = &btcoexist->board_info; + struct btc_stack_info *stack_info = &btcoexist->stack_info; + static u8 dis_ver_info_cnt; + u32 fw_ver = 0, bt_patch_ver = 0; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], ==========================" + "Periodical===========================\n"); + + if (dis_ver_info_cnt <= 5) { + dis_ver_info_cnt += 1; + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, + "[BTCoex], ****************************" + "************************************\n"); + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, + "[BTCoex], Ant PG Num/ Ant Mech/ " + "Ant Pos = %d/ %d/ %d\n", board_info->pg_ant_num, + board_info->btdm_ant_num, board_info->btdm_ant_pos); + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, + "[BTCoex], BT stack/ hci ext ver = %s / %d\n", + ((stack_info->profile_notified) ? "Yes" : "No"), + stack_info->hci_version); + btcoexist->btc_get(btcoexist, BTC_GET_U4_BT_PATCH_VER, + &bt_patch_ver); + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_FW_VER, &fw_ver); + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, + "[BTCoex], CoexVer/ FwVer/ PatchVer = " + "%d_%x/ 0x%x/ 0x%x(%d)\n", + glcoex_ver_date_8723b_2ant, glcoex_ver_8723b_2ant, + fw_ver, bt_patch_ver, bt_patch_ver); + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, + "[BTCoex], *****************************" + "***********************************\n"); + } + +#if (BT_AUTO_REPORT_ONLY_8723B_2ANT == 0) + btc8723b2ant_query_bt_info(btcoexist); + btc8723b2ant_monitor_bt_ctr(btcoexist); + btc8723b2ant_monitor_bt_enable_disable(btcoexist); +#else + if (btc8723b2ant_is_wifi_status_changed(btcoexist) || + coex_dm->auto_tdma_adjust) + btc8723b2ant_run_coexist_mechanism(btcoexist); +#endif +} --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/btcoexist/halbtc8723b2ant.h +++ linux-3.13.0/drivers/net/wireless/rtlwifi/btcoexist/halbtc8723b2ant.h @@ -0,0 +1,173 @@ +/****************************************************************************** + * + * Copyright(c) 2012 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ +#ifndef _HAL8723B_2_ANT +#define _HAL8723B_2_ANT + +/************************************************************************ + * The following is for 8723B 2Ant BT Co-exist definition + ************************************************************************/ +#define BT_AUTO_REPORT_ONLY_8723B_2ANT 1 + +#define BT_INFO_8723B_2ANT_B_FTP BIT7 +#define BT_INFO_8723B_2ANT_B_A2DP BIT6 +#define BT_INFO_8723B_2ANT_B_HID BIT5 +#define BT_INFO_8723B_2ANT_B_SCO_BUSY BIT4 +#define BT_INFO_8723B_2ANT_B_ACL_BUSY BIT3 +#define BT_INFO_8723B_2ANT_B_INQ_PAGE BIT2 +#define BT_INFO_8723B_2ANT_B_SCO_ESCO BIT1 +#define BT_INFO_8723B_2ANT_B_CONNECTION BIT0 + +#define BTC_RSSI_COEX_THRESH_TOL_8723B_2ANT 2 + +enum BT_INFO_SRC_8723B_2ANT { + BT_INFO_SRC_8723B_2ANT_WIFI_FW = 0x0, + BT_INFO_SRC_8723B_2ANT_BT_RSP = 0x1, + BT_INFO_SRC_8723B_2ANT_BT_ACTIVE_SEND = 0x2, + BT_INFO_SRC_8723B_2ANT_MAX +}; + +enum BT_8723B_2ANT_BT_STATUS { + BT_8723B_2ANT_BT_STATUS_NON_CONNECTED_IDLE = 0x0, + BT_8723B_2ANT_BT_STATUS_CONNECTED_IDLE = 0x1, + BT_8723B_2ANT_BT_STATUS_INQ_PAGE = 0x2, + BT_8723B_2ANT_BT_STATUS_ACL_BUSY = 0x3, + BT_8723B_2ANT_BT_STATUS_SCO_BUSY = 0x4, + BT_8723B_2ANT_BT_STATUS_ACL_SCO_BUSY = 0x5, + BT_8723B_2ANT_BT_STATUS_MAX +}; + +enum BT_8723B_2ANT_COEX_ALGO { + BT_8723B_2ANT_COEX_ALGO_UNDEFINED = 0x0, + BT_8723B_2ANT_COEX_ALGO_SCO = 0x1, + BT_8723B_2ANT_COEX_ALGO_HID = 0x2, + BT_8723B_2ANT_COEX_ALGO_A2DP = 0x3, + BT_8723B_2ANT_COEX_ALGO_A2DP_PANHS = 0x4, + BT_8723B_2ANT_COEX_ALGO_PANEDR = 0x5, + BT_8723B_2ANT_COEX_ALGO_PANHS = 0x6, + BT_8723B_2ANT_COEX_ALGO_PANEDR_A2DP = 0x7, + BT_8723B_2ANT_COEX_ALGO_PANEDR_HID = 0x8, + BT_8723B_2ANT_COEX_ALGO_HID_A2DP_PANEDR = 0x9, + BT_8723B_2ANT_COEX_ALGO_HID_A2DP = 0xa, + BT_8723B_2ANT_COEX_ALGO_MAX = 0xb, +}; + +struct coex_dm_8723b_2ant { + /* fw mechanism */ + bool pre_dec_bt_pwr; + bool cur_dec_bt_pwr; + u8 pre_fw_dac_swing_lvl; + u8 cur_fw_dac_swing_lvl; + bool cur_ignore_wlan_act; + bool pre_ignore_wlan_act; + u8 pre_ps_tdma; + u8 cur_ps_tdma; + u8 ps_tdma_para[5]; + u8 tdma_adj_type; + bool reset_tdma_adjust; + bool auto_tdma_adjust; + bool pre_ps_tdma_on; + bool cur_ps_tdma_on; + bool pre_bt_auto_report; + bool cur_bt_auto_report; + + /* sw mechanism */ + bool pre_rf_rx_lpf_shrink; + bool cur_rf_rx_lpf_shrink; + u32 bt_rf0x1e_backup; + bool pre_low_penalty_ra; + bool cur_low_penalty_ra; + bool pre_dac_swing_on; + u32 pre_dac_swing_lvl; + bool cur_dac_swing_on; + u32 cur_dac_swing_lvl; + bool pre_adc_back_off; + bool cur_adc_back_off; + bool pre_agc_table_en; + bool cur_agc_table_en; + u32 pre_val0x6c0; + u32 cur_val0x6c0; + u32 pre_val0x6c4; + u32 cur_val0x6c4; + u32 pre_val0x6c8; + u32 cur_val0x6c8; + u8 pre_val0x6cc; + u8 cur_val0x6cc; + bool limited_dig; + + /* algorithm related */ + u8 pre_algorithm; + u8 cur_algorithm; + u8 bt_status; + u8 wifi_chnl_info[3]; + + bool need_recover_0x948; + u16 backup_0x948; +}; + +struct coex_sta_8723b_2ant { + bool bt_link_exist; + bool sco_exist; + bool a2dp_exist; + bool hid_exist; + bool pan_exist; + + bool under_lps; + bool under_ips; + u32 high_priority_tx; + u32 high_priority_rx; + u32 low_priority_tx; + u32 low_priority_rx; + u8 bt_rssi; + u8 pre_bt_rssi_state; + u8 pre_wifi_rssi_state[4]; + bool c2h_bt_info_req_sent; + u8 bt_info_c2h[BT_INFO_SRC_8723B_2ANT_MAX][10]; + u32 bt_info_c2h_cnt[BT_INFO_SRC_8723B_2ANT_MAX]; + bool c2h_bt_inquiry_page; + u8 bt_retry_cnt; + u8 bt_info_ext; +}; + +/********************************************************************* + * The following is interface which will notify coex module. + *********************************************************************/ +void ex_halbtc8723b2ant_init_hwconfig(struct btc_coexist *btcoexist); +void ex_halbtc8723b2ant_init_coex_dm(struct btc_coexist *btcoexist); +void ex_halbtc8723b2ant_ips_notify(struct btc_coexist *btcoexist, u8 type); +void ex_halbtc8723b2ant_lps_notify(struct btc_coexist *btcoexist, u8 type); +void ex_halbtc8723b2ant_scan_notify(struct btc_coexist *btcoexist, u8 type); +void ex_halbtc8723b2ant_connect_notify(struct btc_coexist *btcoexist, u8 type); +void btc8723b_med_stat_notify(struct btc_coexist *btcoexist, u8 type); +void ex_halbtc8723b2ant_special_packet_notify(struct btc_coexist *btcoexist, + u8 type); +void ex_halbtc8723b2ant_bt_info_notify(struct btc_coexist *btcoexist, + u8 *tmpbuf, u8 length); +void ex_halbtc8723b2ant_stack_operation_notify(struct btc_coexist *btcoexist, + u8 type); +void ex_halbtc8723b2ant_halt_notify(struct btc_coexist *btcoexist); +void ex_halbtc8723b2ant_periodical(struct btc_coexist *btcoexist); +void ex_halbtc8723b2ant_display_coex_info(struct btc_coexist *btcoexist); + +#endif --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/btcoexist/halbtcoutsrc.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/btcoexist/halbtcoutsrc.c @@ -0,0 +1,1011 @@ +/****************************************************************************** + * + * 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. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + ******************************************************************************/ + +#include "halbt_precomp.h" + +/*********************************************** + * Global variables + ***********************************************/ + +struct btc_coexist gl_bt_coexist; + +u32 btc_dbg_type[BTC_MSG_MAX]; +static u8 btc_dbg_buf[100]; + +/*************************************************** + * Debug related function + ***************************************************/ +static bool halbtc_is_bt_coexist_available(struct btc_coexist *btcoexist) +{ + if (!btcoexist->binded || NULL == btcoexist->adapter) + return false; + + return true; +} + +static bool halbtc_is_wifi_busy(struct rtl_priv *rtlpriv) +{ + if (rtlpriv->link_info.busytraffic) + return true; + else + return false; +} + +static void halbtc_dbg_init(void) +{ + u8 i; + + for (i = 0; i < BTC_MSG_MAX; i++) + btc_dbg_type[i] = 0; + + btc_dbg_type[BTC_MSG_INTERFACE] = +/* INTF_INIT | */ +/* INTF_NOTIFY | */ + 0; + + btc_dbg_type[BTC_MSG_ALGORITHM] = +/* ALGO_BT_RSSI_STATE | */ +/* ALGO_WIFI_RSSI_STATE | */ +/* ALGO_BT_MONITOR | */ +/* ALGO_TRACE | */ +/* ALGO_TRACE_FW | */ +/* ALGO_TRACE_FW_DETAIL | */ +/* ALGO_TRACE_FW_EXEC | */ +/* ALGO_TRACE_SW | */ +/* ALGO_TRACE_SW_DETAIL | */ +/* ALGO_TRACE_SW_EXEC | */ + 0; +} + +static bool halbtc_is_bt40(struct rtl_priv *adapter) +{ + struct rtl_priv *rtlpriv = adapter; + struct rtl_phy *rtlphy = &(rtlpriv->phy); + bool is_ht40 = true; + enum ht_channel_width bw = rtlphy->current_chan_bw; + + if (bw == HT_CHANNEL_WIDTH_20) + is_ht40 = false; + else if (bw == HT_CHANNEL_WIDTH_20_40) + is_ht40 = true; + + return is_ht40; +} + +static bool halbtc_legacy(struct rtl_priv *adapter) +{ + struct rtl_priv *rtlpriv = adapter; + struct rtl_mac *mac = rtl_mac(rtlpriv); + + bool is_legacy = false; + + if ((mac->mode == WIRELESS_MODE_B) || (mac->mode == WIRELESS_MODE_B)) + is_legacy = true; + + return is_legacy; +} + +bool halbtc_is_wifi_uplink(struct rtl_priv *adapter) +{ + struct rtl_priv *rtlpriv = adapter; + + if (rtlpriv->link_info.tx_busy_traffic) + return true; + else + return false; +} + +static u32 halbtc_get_wifi_bw(struct btc_coexist *btcoexist) +{ + struct rtl_priv *rtlpriv = + (struct rtl_priv *)btcoexist->adapter; + u32 wifi_bw = BTC_WIFI_BW_HT20; + + if (halbtc_is_bt40(rtlpriv)) { + wifi_bw = BTC_WIFI_BW_HT40; + } else { + if (halbtc_legacy(rtlpriv)) + wifi_bw = BTC_WIFI_BW_LEGACY; + else + wifi_bw = BTC_WIFI_BW_HT20; + } + return wifi_bw; +} + +static u8 halbtc_get_wifi_central_chnl(struct btc_coexist *btcoexist) +{ + struct rtl_priv *rtlpriv = btcoexist->adapter; + struct rtl_phy *rtlphy = &(rtlpriv->phy); + u8 chnl = 1; + + if (rtlphy->current_channel != 0) + chnl = rtlphy->current_channel; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "static halbtc_get_wifi_central_chnl:%d\n", chnl); + return chnl; +} + +static void halbtc_leave_lps(struct btc_coexist *btcoexist) +{ + struct rtl_priv *rtlpriv; + struct rtl_ps_ctl *ppsc; + bool ap_enable = false; + + rtlpriv = btcoexist->adapter; + ppsc = rtl_psc(rtlpriv); + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_AP_MODE_ENABLE, + &ap_enable); + + if (ap_enable) { + pr_info("halbtc_leave_lps()<--dont leave lps under AP mode\n"); + return; + } + + btcoexist->bt_info.bt_ctrl_lps = true; + btcoexist->bt_info.bt_lps_on = false; +} + +static void halbtc_enter_lps(struct btc_coexist *btcoexist) +{ + struct rtl_priv *rtlpriv; + struct rtl_ps_ctl *ppsc; + bool ap_enable = false; + + rtlpriv = btcoexist->adapter; + ppsc = rtl_psc(rtlpriv); + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_AP_MODE_ENABLE, + &ap_enable); + + if (ap_enable) { + pr_info("halbtc_enter_lps()<--dont enter lps under AP mode\n"); + return; + } + + btcoexist->bt_info.bt_ctrl_lps = true; + btcoexist->bt_info.bt_lps_on = false; +} + +static void halbtc_normal_lps(struct btc_coexist *btcoexist) +{ + if (btcoexist->bt_info.bt_ctrl_lps) { + btcoexist->bt_info.bt_lps_on = false; + btcoexist->bt_info.bt_ctrl_lps = false; + } +} + +static void halbtc_leave_low_power(void) +{ +} + +static void halbtc_nomal_low_power(void) +{ +} + +static void halbtc_disable_low_power(void) +{ +} + +static void halbtc_aggregation_check(void) +{ +} + +static u32 halbtc_get_bt_patch_version(struct btc_coexist *btcoexist) +{ + return 0; +} + +static s32 halbtc_get_wifi_rssi(struct rtl_priv *adapter) +{ + struct rtl_priv *rtlpriv = adapter; + s32 undec_sm_pwdb = 0; + + if (rtlpriv->mac80211.link_state >= MAC80211_LINKED) + undec_sm_pwdb = rtlpriv->dm.undec_sm_pwdb; + else /* associated entry pwdb */ + undec_sm_pwdb = rtlpriv->dm.undec_sm_pwdb; + return undec_sm_pwdb; +} + +static bool halbtc_get(void *void_btcoexist, u8 get_type, void *out_buf) +{ + struct btc_coexist *btcoexist = (struct btc_coexist *)void_btcoexist; + struct rtl_priv *rtlpriv = btcoexist->adapter; + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct rtl_mac *mac = rtl_mac(rtlpriv); + struct rtl_hal *rtlhal = rtl_hal(rtlpriv); + bool *bool_tmp = (bool *)out_buf; + int *s32_tmp = (int *)out_buf; + u32 *u32_tmp = (u32 *)out_buf; + u8 *u8_tmp = (u8 *)out_buf; + bool tmp = false; + + if (!halbtc_is_bt_coexist_available(btcoexist)) + return false; + + switch (get_type) { + case BTC_GET_BL_HS_OPERATION: + *bool_tmp = false; + break; + case BTC_GET_BL_HS_CONNECTING: + *bool_tmp = false; + break; + case BTC_GET_BL_WIFI_CONNECTED: + if (rtlpriv->mac80211.link_state >= MAC80211_LINKED) + tmp = true; + *bool_tmp = tmp; + break; + case BTC_GET_BL_WIFI_BUSY: + if (halbtc_is_wifi_busy(rtlpriv)) + *bool_tmp = true; + else + *bool_tmp = false; + break; + case BTC_GET_BL_WIFI_SCAN: + if (mac->act_scanning) + *bool_tmp = true; + else + *bool_tmp = false; + break; + case BTC_GET_BL_WIFI_LINK: + if (mac->link_state == MAC80211_LINKING) + *bool_tmp = true; + else + *bool_tmp = false; + break; + case BTC_GET_BL_WIFI_ROAM: /*TODO*/ + if (mac->link_state == MAC80211_LINKING) + *bool_tmp = true; + else + *bool_tmp = false; + break; + case BTC_GET_BL_WIFI_4_WAY_PROGRESS: /*TODO*/ + *bool_tmp = false; + + break; + case BTC_GET_BL_WIFI_UNDER_5G: + *bool_tmp = false; /*TODO*/ + + case BTC_GET_BL_WIFI_DHCP: /*TODO*/ + break; + case BTC_GET_BL_WIFI_SOFTAP_IDLE: + *bool_tmp = true; + break; + case BTC_GET_BL_WIFI_SOFTAP_LINKING: + *bool_tmp = false; + break; + case BTC_GET_BL_WIFI_IN_EARLY_SUSPEND: + *bool_tmp = false; + break; + case BTC_GET_BL_WIFI_AP_MODE_ENABLE: + *bool_tmp = false; + break; + case BTC_GET_BL_WIFI_ENABLE_ENCRYPTION: + if (NO_ENCRYPTION == rtlpriv->sec.pairwise_enc_algorithm) + *bool_tmp = false; + else + *bool_tmp = true; + break; + case BTC_GET_BL_WIFI_UNDER_B_MODE: + *bool_tmp = false; /*TODO*/ + break; + case BTC_GET_BL_EXT_SWITCH: + *bool_tmp = false; + break; + case BTC_GET_S4_WIFI_RSSI: + *s32_tmp = halbtc_get_wifi_rssi(rtlpriv); + break; + case BTC_GET_S4_HS_RSSI: /*TODO*/ + *s32_tmp = halbtc_get_wifi_rssi(rtlpriv); + break; + case BTC_GET_U4_WIFI_BW: + *u32_tmp = halbtc_get_wifi_bw(btcoexist); + break; + case BTC_GET_U4_WIFI_TRAFFIC_DIRECTION: + if (halbtc_is_wifi_uplink(rtlpriv)) + *u32_tmp = BTC_WIFI_TRAFFIC_TX; + else + *u32_tmp = BTC_WIFI_TRAFFIC_RX; + break; + case BTC_GET_U4_WIFI_FW_VER: + *u32_tmp = rtlhal->fw_version; + break; + case BTC_GET_U4_BT_PATCH_VER: + *u32_tmp = halbtc_get_bt_patch_version(btcoexist); + break; + case BTC_GET_U1_WIFI_DOT11_CHNL: + *u8_tmp = rtlphy->current_channel; + break; + case BTC_GET_U1_WIFI_CENTRAL_CHNL: + *u8_tmp = halbtc_get_wifi_central_chnl(btcoexist); + break; + case BTC_GET_U1_WIFI_HS_CHNL: + *u8_tmp = 1;/*BT_OperateChnl(rtlpriv);*/ + break; + case BTC_GET_U1_MAC_PHY_MODE: + *u8_tmp = BTC_MP_UNKNOWN; + break; + + /************* 1Ant **************/ + case BTC_GET_U1_LPS_MODE: + *u8_tmp = btcoexist->pwr_mode_val[0]; + break; + + default: + break; + } + + return true; +} + +static bool halbtc_set(void *void_btcoexist, u8 set_type, void *in_buf) +{ + struct btc_coexist *btcoexist = (struct btc_coexist *)void_btcoexist; + bool *bool_tmp = (bool *)in_buf; + u8 *u8_tmp = (u8 *)in_buf; + u32 *u32_tmp = (u32 *)in_buf; + + if (!halbtc_is_bt_coexist_available(btcoexist)) + return false; + + switch (set_type) { + /* set some bool type variables. */ + case BTC_SET_BL_BT_DISABLE: + btcoexist->bt_info.bt_disabled = *bool_tmp; + break; + case BTC_SET_BL_BT_TRAFFIC_BUSY: + btcoexist->bt_info.bt_busy = *bool_tmp; + break; + case BTC_SET_BL_BT_LIMITED_DIG: + btcoexist->bt_info.limited_dig = *bool_tmp; + break; + case BTC_SET_BL_FORCE_TO_ROAM: + btcoexist->bt_info.force_to_roam = *bool_tmp; + break; + case BTC_SET_BL_TO_REJ_AP_AGG_PKT: + btcoexist->bt_info.reject_agg_pkt = *bool_tmp; + break; + case BTC_SET_BL_BT_CTRL_AGG_SIZE: + btcoexist->bt_info.b_bt_ctrl_buf_size = *bool_tmp; + break; + case BTC_SET_BL_INC_SCAN_DEV_NUM: + btcoexist->bt_info.increase_scan_dev_num = *bool_tmp; + break; + /* set some u1Byte type variables. */ + case BTC_SET_U1_RSSI_ADJ_VAL_FOR_AGC_TABLE_ON: + btcoexist->bt_info.rssi_adjust_for_agc_table_on = *u8_tmp; + break; + case BTC_SET_U1_AGG_BUF_SIZE: + btcoexist->bt_info.agg_buf_size = *u8_tmp; + break; + /* the following are some action which will be triggered */ + case BTC_SET_ACT_GET_BT_RSSI: + /*BTHCI_SendGetBtRssiEvent(rtlpriv);*/ + break; + case BTC_SET_ACT_AGGREGATE_CTRL: + halbtc_aggregation_check(); + break; + + /* 1Ant */ + case BTC_SET_U1_RSSI_ADJ_VAL_FOR_1ANT_COEX_TYPE: + btcoexist->bt_info.rssi_adjust_for_1ant_coex_type = *u8_tmp; + break; + case BTC_SET_UI_SCAN_SIG_COMPENSATION: + /* rtlpriv->mlmepriv.scan_compensation = *u8_tmp; */ + break; + case BTC_SET_U1_1ANT_LPS: + btcoexist->bt_info.lps_1ant = *u8_tmp; + break; + case BTC_SET_U1_1ANT_RPWM: + btcoexist->bt_info.rpwm_1ant = *u8_tmp; + break; + /* the following are some action which will be triggered */ + case BTC_SET_ACT_LEAVE_LPS: + halbtc_leave_lps(btcoexist); + break; + case BTC_SET_ACT_ENTER_LPS: + halbtc_enter_lps(btcoexist); + break; + case BTC_SET_ACT_NORMAL_LPS: + halbtc_normal_lps(btcoexist); + break; + case BTC_SET_ACT_DISABLE_LOW_POWER: + halbtc_disable_low_power(); + break; + case BTC_SET_ACT_UPDATE_ra_mask: + btcoexist->bt_info.ra_mask = *u32_tmp; + break; + case BTC_SET_ACT_SEND_MIMO_PS: + break; + case BTC_SET_ACT_INC_FORCE_EXEC_PWR_CMD_CNT: + btcoexist->bt_info.force_exec_pwr_cmd_cnt++; + break; + case BTC_SET_ACT_CTRL_BT_INFO: /*wait for 8812/8821*/ + break; + case BTC_SET_ACT_CTRL_BT_COEX: + break; + default: + break; + } + + return true; +} + +static void halbtc_display_coex_statistics(struct btc_coexist *btcoexist) +{ +} + +static void halbtc_display_bt_link_info(struct btc_coexist *btcoexist) +{ +} + +static void halbtc_display_bt_fw_info(struct btc_coexist *btcoexist) +{ +} + +static void halbtc_display_fw_pwr_mode_cmd(struct btc_coexist *btcoexist) +{ +} + +/************************************************************ + * IO related function + ************************************************************/ +static u8 halbtc_read_1byte(void *bt_context, u32 reg_addr) +{ + struct btc_coexist *btcoexist = (struct btc_coexist *)bt_context; + struct rtl_priv *rtlpriv = btcoexist->adapter; + + return rtl_read_byte(rtlpriv, reg_addr); +} + +static u16 halbtc_read_2byte(void *bt_context, u32 reg_addr) +{ + struct btc_coexist *btcoexist = (struct btc_coexist *)bt_context; + struct rtl_priv *rtlpriv = btcoexist->adapter; + + return rtl_read_word(rtlpriv, reg_addr); +} + +static u32 halbtc_read_4byte(void *bt_context, u32 reg_addr) +{ + struct btc_coexist *btcoexist = (struct btc_coexist *)bt_context; + struct rtl_priv *rtlpriv = btcoexist->adapter; + + return rtl_read_dword(rtlpriv, reg_addr); +} + +static void halbtc_write_1byte(void *bt_context, u32 reg_addr, u8 data) +{ + struct btc_coexist *btcoexist = (struct btc_coexist *)bt_context; + struct rtl_priv *rtlpriv = btcoexist->adapter; + + rtl_write_byte(rtlpriv, reg_addr, data); +} + +static void halbtc_bitmask_write_1byte(void *bt_context, u32 reg_addr, + u32 bit_mask, u8 data) +{ + struct btc_coexist *btcoexist = (struct btc_coexist *)bt_context; + struct rtl_priv *rtlpriv = btcoexist->adapter; + u8 original_value, bit_shift = 0; + u8 i; + + if (bit_mask != MASKDWORD) {/*if not "double word" write*/ + original_value = rtl_read_byte(rtlpriv, reg_addr); + for (i = 0; i <= 7; i++) { + if ((bit_mask>>i) & 0x1) + break; + } + bit_shift = i; + data = (original_value & (~bit_mask)) | + ((data << bit_shift) & bit_mask); + } + rtl_write_byte(rtlpriv, reg_addr, data); +} + +static void halbtc_write_2byte(void *bt_context, u32 reg_addr, u16 data) +{ + struct btc_coexist *btcoexist = (struct btc_coexist *)bt_context; + struct rtl_priv *rtlpriv = btcoexist->adapter; + + rtl_write_word(rtlpriv, reg_addr, data); +} + +static void halbtc_write_4byte(void *bt_context, u32 reg_addr, u32 data) +{ + struct btc_coexist *btcoexist = + (struct btc_coexist *)bt_context; + struct rtl_priv *rtlpriv = btcoexist->adapter; + + rtl_write_dword(rtlpriv, reg_addr, data); +} + +static void halbtc_set_bbreg(void *bt_context, u32 reg_addr, u32 bit_mask, + u32 data) +{ + struct btc_coexist *btcoexist = (struct btc_coexist *)bt_context; + struct rtl_priv *rtlpriv = btcoexist->adapter; + + rtl_set_bbreg(rtlpriv->mac80211.hw, reg_addr, bit_mask, data); +} + +static u32 halbtc_get_bbreg(void *bt_context, u32 reg_addr, u32 bit_mask) +{ + struct btc_coexist *btcoexist = (struct btc_coexist *)bt_context; + struct rtl_priv *rtlpriv = btcoexist->adapter; + + return rtl_get_bbreg(rtlpriv->mac80211.hw, reg_addr, bit_mask); +} + +static void halbtc_set_rfreg(void *bt_context, u8 rf_path, u32 reg_addr, + u32 bit_mask, u32 data) +{ + struct btc_coexist *btcoexist = (struct btc_coexist *)bt_context; + struct rtl_priv *rtlpriv = btcoexist->adapter; + + rtl_set_rfreg(rtlpriv->mac80211.hw, rf_path, reg_addr, bit_mask, data); +} + +static u32 halbtc_get_rfreg(void *bt_context, u8 rf_path, u32 reg_addr, + u32 bit_mask) +{ + struct btc_coexist *btcoexist = (struct btc_coexist *)bt_context; + struct rtl_priv *rtlpriv = btcoexist->adapter; + + return rtl_get_rfreg(rtlpriv->mac80211.hw, rf_path, reg_addr, bit_mask); +} + +static void halbtc_fill_h2c_cmd(void *bt_context, u8 element_id, + u32 cmd_len, u8 *cmd_buf) +{ + struct btc_coexist *btcoexist = (struct btc_coexist *)bt_context; + struct rtl_priv *rtlpriv = btcoexist->adapter; + + rtlpriv->cfg->ops->fill_h2c_cmd(rtlpriv->mac80211.hw, element_id, + cmd_len, cmd_buf); +} + +static void halbtc_display_dbg_msg(void *bt_context, u8 disp_type) +{ + struct btc_coexist *btcoexist = (struct btc_coexist *)bt_context; + switch (disp_type) { + case BTC_DBG_DISP_COEX_STATISTICS: + halbtc_display_coex_statistics(btcoexist); + break; + case BTC_DBG_DISP_BT_LINK_INFO: + halbtc_display_bt_link_info(btcoexist); + break; + case BTC_DBG_DISP_BT_FW_VER: + halbtc_display_bt_fw_info(btcoexist); + break; + case BTC_DBG_DISP_FW_PWR_MODE_CMD: + halbtc_display_fw_pwr_mode_cmd(btcoexist); + break; + default: + break; + } +} + +/***************************************************************** + * Extern functions called by other module + *****************************************************************/ +bool exhalbtc_initlize_variables(struct rtl_priv *adapter) +{ + struct btc_coexist *btcoexist = &gl_bt_coexist; + + btcoexist->statistics.cnt_bind++; + + halbtc_dbg_init(); + + if (btcoexist->binded) + return false; + else + btcoexist->binded = true; + +#if (defined(CONFIG_PCI_HCI)) + btcoexist->chip_interface = BTC_INTF_PCI; +#elif (defined(CONFIG_USB_HCI)) + btcoexist->chip_interface = BTC_INTF_USB; +#elif (defined(CONFIG_SDIO_HCI)) + btcoexist->chip_interface = BTC_INTF_SDIO; +#elif (defined(CONFIG_GSPI_HCI)) + btcoexist->chip_interface = BTC_INTF_GSPI; +#else + btcoexist->chip_interface = BTC_INTF_UNKNOWN; +#endif + + if (NULL == btcoexist->adapter) + btcoexist->adapter = adapter; + + btcoexist->stack_info.profile_notified = false; + + btcoexist->btc_read_1byte = halbtc_read_1byte; + btcoexist->btc_write_1byte = halbtc_write_1byte; + btcoexist->btc_write_1byte_bitmask = halbtc_bitmask_write_1byte; + btcoexist->btc_read_2byte = halbtc_read_2byte; + btcoexist->btc_write_2byte = halbtc_write_2byte; + btcoexist->btc_read_4byte = halbtc_read_4byte; + btcoexist->btc_write_4byte = halbtc_write_4byte; + + btcoexist->btc_set_bb_reg = halbtc_set_bbreg; + btcoexist->btc_get_bb_reg = halbtc_get_bbreg; + + btcoexist->btc_set_rf_reg = halbtc_set_rfreg; + btcoexist->btc_get_rf_reg = halbtc_get_rfreg; + + btcoexist->btc_fill_h2c = halbtc_fill_h2c_cmd; + btcoexist->btc_disp_dbg_msg = halbtc_display_dbg_msg; + + btcoexist->btc_get = halbtc_get; + btcoexist->btc_set = halbtc_set; + + btcoexist->cli_buf = &btc_dbg_buf[0]; + + btcoexist->bt_info.b_bt_ctrl_buf_size = false; + btcoexist->bt_info.agg_buf_size = 5; + + btcoexist->bt_info.increase_scan_dev_num = false; + return true; +} + +void exhalbtc_init_hw_config(struct btc_coexist *btcoexist) +{ + struct rtl_priv *rtlpriv = btcoexist->adapter; + struct rtl_hal *rtlhal = rtl_hal(rtlpriv); + + if (!halbtc_is_bt_coexist_available(btcoexist)) + return; + + btcoexist->statistics.cnt_init_hw_config++; + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8723BE) + ex_halbtc8723b2ant_init_hwconfig(btcoexist); +} + +void exhalbtc_init_coex_dm(struct btc_coexist *btcoexist) +{ + struct rtl_priv *rtlpriv = btcoexist->adapter; + struct rtl_hal *rtlhal = rtl_hal(rtlpriv); + + if (!halbtc_is_bt_coexist_available(btcoexist)) + return; + + btcoexist->statistics.cnt_init_coex_dm++; + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8723BE) + ex_halbtc8723b2ant_init_coex_dm(btcoexist); + + btcoexist->initilized = true; +} + +void exhalbtc_ips_notify(struct btc_coexist *btcoexist, u8 type) +{ + struct rtl_priv *rtlpriv = btcoexist->adapter; + struct rtl_hal *rtlhal = rtl_hal(rtlpriv); + u8 ips_type; + + if (!halbtc_is_bt_coexist_available(btcoexist)) + return; + btcoexist->statistics.cnt_ips_notify++; + if (btcoexist->manual_control) + return; + + if (ERFOFF == type) + ips_type = BTC_IPS_ENTER; + else + ips_type = BTC_IPS_LEAVE; + + halbtc_leave_low_power(); + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8723BE) + ex_halbtc8723b2ant_ips_notify(btcoexist, ips_type); + + halbtc_nomal_low_power(); +} + +void exhalbtc_lps_notify(struct btc_coexist *btcoexist, u8 type) +{ + struct rtl_priv *rtlpriv = btcoexist->adapter; + struct rtl_hal *rtlhal = rtl_hal(rtlpriv); + u8 lps_type; + + if (!halbtc_is_bt_coexist_available(btcoexist)) + return; + btcoexist->statistics.cnt_lps_notify++; + if (btcoexist->manual_control) + return; + + if (EACTIVE == type) + lps_type = BTC_LPS_DISABLE; + else + lps_type = BTC_LPS_ENABLE; + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8723BE) + ex_halbtc8723b2ant_lps_notify(btcoexist, lps_type); +} + +void exhalbtc_scan_notify(struct btc_coexist *btcoexist, u8 type) +{ + struct rtl_priv *rtlpriv = btcoexist->adapter; + struct rtl_hal *rtlhal = rtl_hal(rtlpriv); + u8 scan_type; + + if (!halbtc_is_bt_coexist_available(btcoexist)) + return; + btcoexist->statistics.cnt_scan_notify++; + if (btcoexist->manual_control) + return; + + if (type) + scan_type = BTC_SCAN_START; + else + scan_type = BTC_SCAN_FINISH; + + halbtc_leave_low_power(); + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8723BE) + ex_halbtc8723b2ant_scan_notify(btcoexist, scan_type); + + halbtc_nomal_low_power(); +} + +void exhalbtc_connect_notify(struct btc_coexist *btcoexist, u8 action) +{ + struct rtl_priv *rtlpriv = btcoexist->adapter; + struct rtl_hal *rtlhal = rtl_hal(rtlpriv); + u8 asso_type; + + if (!halbtc_is_bt_coexist_available(btcoexist)) + return; + btcoexist->statistics.cnt_connect_notify++; + if (btcoexist->manual_control) + return; + + if (action) + asso_type = BTC_ASSOCIATE_START; + else + asso_type = BTC_ASSOCIATE_FINISH; + + halbtc_leave_low_power(); + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8723BE) + ex_halbtc8723b2ant_connect_notify(btcoexist, asso_type); +} + +void exhalbtc_mediastatus_notify(struct btc_coexist *btcoexist, + enum _RT_MEDIA_STATUS media_status) +{ + struct rtl_priv *rtlpriv = btcoexist->adapter; + struct rtl_hal *rtlhal = rtl_hal(rtlpriv); + u8 status; + + if (!halbtc_is_bt_coexist_available(btcoexist)) + return; + btcoexist->statistics.cnt_media_status_notify++; + if (btcoexist->manual_control) + return; + + if (RT_MEDIA_CONNECT == media_status) + status = BTC_MEDIA_CONNECT; + else + status = BTC_MEDIA_DISCONNECT; + + halbtc_leave_low_power(); + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8723BE) + btc8723b_med_stat_notify(btcoexist, status); + + halbtc_nomal_low_power(); +} + +void exhalbtc_special_packet_notify(struct btc_coexist *btcoexist, u8 pkt_type) +{ + struct rtl_priv *rtlpriv = btcoexist->adapter; + struct rtl_hal *rtlhal = rtl_hal(rtlpriv); + u8 packet_type; + + if (!halbtc_is_bt_coexist_available(btcoexist)) + return; + btcoexist->statistics.cnt_special_packet_notify++; + if (btcoexist->manual_control) + return; + + packet_type = BTC_PACKET_DHCP; + + halbtc_leave_low_power(); + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8723BE) + ex_halbtc8723b2ant_special_packet_notify(btcoexist, + packet_type); + + halbtc_nomal_low_power(); +} + +void exhalbtc_bt_info_notify(struct btc_coexist *btcoexist, + u8 *tmp_buf, u8 length) +{ + struct rtl_priv *rtlpriv = btcoexist->adapter; + struct rtl_hal *rtlhal = rtl_hal(rtlpriv); + if (!halbtc_is_bt_coexist_available(btcoexist)) + return; + btcoexist->statistics.cnt_bt_info_notify++; + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8723BE) + ex_halbtc8723b2ant_bt_info_notify(btcoexist, tmp_buf, length); +} + +void exhalbtc_stack_operation_notify(struct btc_coexist *btcoexist, u8 type) +{ + struct rtl_priv *rtlpriv = btcoexist->adapter; + struct rtl_hal *rtlhal = rtl_hal(rtlpriv); + u8 stack_op_type; + + if (!halbtc_is_bt_coexist_available(btcoexist)) + return; + btcoexist->statistics.cnt_stack_operation_notify++; + if (btcoexist->manual_control) + return; + + stack_op_type = BTC_STACK_OP_NONE; + + halbtc_leave_low_power(); + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8723BE) + ex_halbtc8723b2ant_stack_operation_notify(btcoexist, + stack_op_type); + + halbtc_nomal_low_power(); +} + +void exhalbtc_halt_notify(struct btc_coexist *btcoexist) +{ + struct rtl_priv *rtlpriv = btcoexist->adapter; + struct rtl_hal *rtlhal = rtl_hal(rtlpriv); + if (!halbtc_is_bt_coexist_available(btcoexist)) + return; + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8723BE) + ex_halbtc8723b2ant_halt_notify(btcoexist); +} + +void exhalbtc_pnp_notify(struct btc_coexist *btcoexist, u8 pnp_state) +{ + if (!halbtc_is_bt_coexist_available(btcoexist)) + return; +} + +void exhalbtc_periodical(struct btc_coexist *btcoexist) +{ + struct rtl_priv *rtlpriv = btcoexist->adapter; + struct rtl_hal *rtlhal = rtl_hal(rtlpriv); + if (!halbtc_is_bt_coexist_available(btcoexist)) + return; + btcoexist->statistics.cnt_periodical++; + + halbtc_leave_low_power(); + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8723BE) + ex_halbtc8723b2ant_periodical(btcoexist); + + halbtc_nomal_low_power(); +} + +void exhalbtc_dbg_control(struct btc_coexist *btcoexist, + u8 code, u8 len, u8 *data) +{ + if (!halbtc_is_bt_coexist_available(btcoexist)) + return; + btcoexist->statistics.cnt_dbg_ctrl++; +} + +void exhalbtc_stack_update_profile_info(void) +{ +} + +void exhalbtc_update_min_bt_rssi(char bt_rssi) +{ + struct btc_coexist *btcoexist = &gl_bt_coexist; + + if (!halbtc_is_bt_coexist_available(btcoexist)) + return; + + btcoexist->stack_info.min_bt_rssi = bt_rssi; +} + +void exhalbtc_set_hci_version(u16 hci_version) +{ + struct btc_coexist *btcoexist = &gl_bt_coexist; + + if (!halbtc_is_bt_coexist_available(btcoexist)) + return; + + btcoexist->stack_info.hci_version = hci_version; +} + +void exhalbtc_set_bt_patch_version(u16 bt_hci_version, u16 bt_patch_version) +{ + struct btc_coexist *btcoexist = &gl_bt_coexist; + + if (!halbtc_is_bt_coexist_available(btcoexist)) + return; + + btcoexist->bt_info.bt_real_fw_ver = bt_patch_version; + btcoexist->bt_info.bt_hci_ver = bt_hci_version; +} + +void exhalbtc_set_bt_exist(bool bt_exist) +{ + gl_bt_coexist.board_info.bt_exist = bt_exist; +} + +void exhalbtc_set_chip_type(u8 chip_type) +{ + switch (chip_type) { + default: + case BT_2WIRE: + case BT_ISSC_3WIRE: + case BT_ACCEL: + case BT_RTL8756: + gl_bt_coexist.board_info.bt_chip_type = BTC_CHIP_UNDEF; + break; + case BT_CSR_BC4: + gl_bt_coexist.board_info.bt_chip_type = BTC_CHIP_CSR_BC4; + break; + case BT_CSR_BC8: + gl_bt_coexist.board_info.bt_chip_type = BTC_CHIP_CSR_BC8; + break; + case BT_RTL8723A: + gl_bt_coexist.board_info.bt_chip_type = BTC_CHIP_RTL8723A; + break; + case BT_RTL8821: + gl_bt_coexist.board_info.bt_chip_type = BTC_CHIP_RTL8821; + break; + case BT_RTL8723B: + gl_bt_coexist.board_info.bt_chip_type = BTC_CHIP_RTL8723B; + break; + } +} + +void exhalbtc_set_ant_num(u8 type, u8 ant_num) +{ + if (BT_COEX_ANT_TYPE_PG == type) { + gl_bt_coexist.board_info.pg_ant_num = ant_num; + gl_bt_coexist.board_info.btdm_ant_num = ant_num; + } else if (BT_COEX_ANT_TYPE_ANTDIV == type) { + gl_bt_coexist.board_info.btdm_ant_num = ant_num; + } +} + +void exhalbtc_display_bt_coex_info(struct btc_coexist *btcoexist) +{ + struct rtl_priv *rtlpriv = btcoexist->adapter; + struct rtl_hal *rtlhal = rtl_hal(rtlpriv); + if (!halbtc_is_bt_coexist_available(btcoexist)) + return; + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8723BE) + ex_halbtc8723b2ant_display_coex_info(btcoexist); +} --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/btcoexist/halbtcoutsrc.h +++ linux-3.13.0/drivers/net/wireless/rtlwifi/btcoexist/halbtcoutsrc.h @@ -0,0 +1,559 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2012 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ +#ifndef __HALBTC_OUT_SRC_H__ +#define __HALBTC_OUT_SRC_H__ + +#include "../wifi.h" + +#define NORMAL_EXEC false +#define FORCE_EXEC true + +#define BTC_RF_A RF90_PATH_A +#define BTC_RF_B RF90_PATH_B +#define BTC_RF_C RF90_PATH_C +#define BTC_RF_D RF90_PATH_D + +#define BTC_SMSP SINGLEMAC_SINGLEPHY +#define BTC_DMDP DUALMAC_DUALPHY +#define BTC_DMSP DUALMAC_SINGLEPHY +#define BTC_MP_UNKNOWN 0xff + +#define IN +#define OUT + +#define BT_TMP_BUF_SIZE 100 + +#define BT_COEX_ANT_TYPE_PG 0 +#define BT_COEX_ANT_TYPE_ANTDIV 1 +#define BT_COEX_ANT_TYPE_DETECTED 2 + +#define BTC_MIMO_PS_STATIC 0 +#define BTC_MIMO_PS_DYNAMIC 1 + +#define BTC_RATE_DISABLE 0 +#define BTC_RATE_ENABLE 1 + +#define BTC_ANT_PATH_WIFI 0 +#define BTC_ANT_PATH_BT 1 +#define BTC_ANT_PATH_PTA 2 + +enum btc_chip_interface { + BTC_INTF_UNKNOWN = 0, + BTC_INTF_PCI = 1, + BTC_INTF_USB = 2, + BTC_INTF_SDIO = 3, + BTC_INTF_GSPI = 4, + BTC_INTF_MAX +}; + +enum BTC_CHIP_TYPE { + BTC_CHIP_UNDEF = 0, + BTC_CHIP_CSR_BC4 = 1, + BTC_CHIP_CSR_BC8 = 2, + BTC_CHIP_RTL8723A = 3, + BTC_CHIP_RTL8821 = 4, + BTC_CHIP_RTL8723B = 5, + BTC_CHIP_MAX +}; + +enum BTC_MSG_TYPE { + BTC_MSG_INTERFACE = 0x0, + BTC_MSG_ALGORITHM = 0x1, + BTC_MSG_MAX +}; +extern u32 btc_dbg_type[]; + +/* following is for BTC_MSG_INTERFACE */ +#define INTF_INIT BIT0 +#define INTF_NOTIFY BIT2 + +/* following is for BTC_ALGORITHM */ +#define ALGO_BT_RSSI_STATE BIT0 +#define ALGO_WIFI_RSSI_STATE BIT1 +#define ALGO_BT_MONITOR BIT2 +#define ALGO_TRACE BIT3 +#define ALGO_TRACE_FW BIT4 +#define ALGO_TRACE_FW_DETAIL BIT5 +#define ALGO_TRACE_FW_EXEC BIT6 +#define ALGO_TRACE_SW BIT7 +#define ALGO_TRACE_SW_DETAIL BIT8 +#define ALGO_TRACE_SW_EXEC BIT9 + +#define BT_COEX_ANT_TYPE_PG 0 +#define BT_COEX_ANT_TYPE_ANTDIV 1 +#define BT_COEX_ANT_TYPE_DETECTED 2 +#define BTC_MIMO_PS_STATIC 0 +#define BTC_MIMO_PS_DYNAMIC 1 +#define BTC_RATE_DISABLE 0 +#define BTC_RATE_ENABLE 1 +#define BTC_ANT_PATH_WIFI 0 +#define BTC_ANT_PATH_BT 1 +#define BTC_ANT_PATH_PTA 2 + + +#define CL_SPRINTF snprintf +#define CL_PRINTF printk + +#define BTC_PRINT(dbgtype, dbgflag, printstr, ...) \ + do { \ + if (unlikely(btc_dbg_type[dbgtype] & dbgflag)) {\ + printk(printstr, ##__VA_ARGS__); \ + } \ + } while (0) + +#define BTC_PRINT_F(dbgtype, dbgflag, printstr, ...) \ + do { \ + if (unlikely(btc_dbg_type[dbgtype] & dbgflag)) {\ + pr_info("%s: ", __func__); \ + printk(printstr, ##__VA_ARGS__); \ + } \ + } while (0) + +#define BTC_PRINT_ADDR(dbgtype, dbgflag, printstr, _ptr) \ + do { \ + if (unlikely(btc_dbg_type[dbgtype] & dbgflag)) { \ + int __i; \ + u8 *__ptr = (u8 *)_ptr; \ + printk printstr; \ + for (__i = 0; __i < 6; __i++) \ + printk("%02X%s", __ptr[__i], (__i == 5) ? \ + "" : "-"); \ + pr_info("\n"); \ + } \ + } while (0) + +#define BTC_PRINT_DATA(dbgtype, dbgflag, _titlestring, _hexdata, _hexdatalen) \ + do { \ + if (unlikely(btc_dbg_type[dbgtype] & dbgflag)) { \ + int __i; \ + u8 *__ptr = (u8 *)_hexdata; \ + printk(_titlestring); \ + for (__i = 0; __i < (int)_hexdatalen; __i++) { \ + printk("%02X%s", __ptr[__i], (((__i + 1) % 4) \ + == 0) ? " " : " ");\ + if (((__i + 1) % 16) == 0) \ + printk("\n"); \ + } \ + pr_debug("\n"); \ + } \ + } while (0) + +#define BTC_ANT_PATH_WIFI 0 +#define BTC_ANT_PATH_BT 1 +#define BTC_ANT_PATH_PTA 2 + +enum btc_power_save_type { + BTC_PS_WIFI_NATIVE = 0, + BTC_PS_LPS_ON = 1, + BTC_PS_LPS_OFF = 2, + BTC_PS_LPS_MAX +}; + +struct btc_board_info { + /* The following is some board information */ + u8 bt_chip_type; + u8 pg_ant_num; /* pg ant number */ + u8 btdm_ant_num; /* ant number for btdm */ + u8 btdm_ant_pos; + bool bt_exist; +}; + +enum btc_dbg_opcode { + BTC_DBG_SET_COEX_NORMAL = 0x0, + BTC_DBG_SET_COEX_WIFI_ONLY = 0x1, + BTC_DBG_SET_COEX_BT_ONLY = 0x2, + BTC_DBG_MAX +}; + +enum btc_rssi_state { + BTC_RSSI_STATE_HIGH = 0x0, + BTC_RSSI_STATE_MEDIUM = 0x1, + BTC_RSSI_STATE_LOW = 0x2, + BTC_RSSI_STATE_STAY_HIGH = 0x3, + BTC_RSSI_STATE_STAY_MEDIUM = 0x4, + BTC_RSSI_STATE_STAY_LOW = 0x5, + BTC_RSSI_MAX +}; + +enum btc_wifi_role { + BTC_ROLE_STATION = 0x0, + BTC_ROLE_AP = 0x1, + BTC_ROLE_IBSS = 0x2, + BTC_ROLE_HS_MODE = 0x3, + BTC_ROLE_MAX +}; + +enum btc_wifi_bw_mode { + BTC_WIFI_BW_LEGACY = 0x0, + BTC_WIFI_BW_HT20 = 0x1, + BTC_WIFI_BW_HT40 = 0x2, + BTC_WIFI_BW_MAX +}; + +enum btc_wifi_traffic_dir { + BTC_WIFI_TRAFFIC_TX = 0x0, + BTC_WIFI_TRAFFIC_RX = 0x1, + BTC_WIFI_TRAFFIC_MAX +}; + +enum btc_wifi_pnp { + BTC_WIFI_PNP_WAKE_UP = 0x0, + BTC_WIFI_PNP_SLEEP = 0x1, + BTC_WIFI_PNP_MAX +}; + + +enum btc_get_type { + /* type bool */ + BTC_GET_BL_HS_OPERATION, + BTC_GET_BL_HS_CONNECTING, + BTC_GET_BL_WIFI_CONNECTED, + BTC_GET_BL_WIFI_BUSY, + BTC_GET_BL_WIFI_SCAN, + BTC_GET_BL_WIFI_LINK, + BTC_GET_BL_WIFI_DHCP, + BTC_GET_BL_WIFI_SOFTAP_IDLE, + BTC_GET_BL_WIFI_SOFTAP_LINKING, + BTC_GET_BL_WIFI_IN_EARLY_SUSPEND, + BTC_GET_BL_WIFI_ROAM, + BTC_GET_BL_WIFI_4_WAY_PROGRESS, + BTC_GET_BL_WIFI_UNDER_5G, + BTC_GET_BL_WIFI_AP_MODE_ENABLE, + BTC_GET_BL_WIFI_ENABLE_ENCRYPTION, + BTC_GET_BL_WIFI_UNDER_B_MODE, + BTC_GET_BL_EXT_SWITCH, + + /* type s4Byte */ + BTC_GET_S4_WIFI_RSSI, + BTC_GET_S4_HS_RSSI, + + /* type u32 */ + BTC_GET_U4_WIFI_BW, + BTC_GET_U4_WIFI_TRAFFIC_DIRECTION, + BTC_GET_U4_WIFI_FW_VER, + BTC_GET_U4_BT_PATCH_VER, + + /* type u1Byte */ + BTC_GET_U1_WIFI_DOT11_CHNL, + BTC_GET_U1_WIFI_CENTRAL_CHNL, + BTC_GET_U1_WIFI_HS_CHNL, + BTC_GET_U1_MAC_PHY_MODE, + + /* for 1Ant */ + BTC_GET_U1_LPS_MODE, + BTC_GET_BL_BT_SCO_BUSY, + + /* for test mode */ + BTC_GET_DRIVER_TEST_CFG, + BTC_GET_MAX +}; + + +enum btc_set_type { + /* type bool */ + BTC_SET_BL_BT_DISABLE, + BTC_SET_BL_BT_TRAFFIC_BUSY, + BTC_SET_BL_BT_LIMITED_DIG, + BTC_SET_BL_FORCE_TO_ROAM, + BTC_SET_BL_TO_REJ_AP_AGG_PKT, + BTC_SET_BL_BT_CTRL_AGG_SIZE, + BTC_SET_BL_INC_SCAN_DEV_NUM, + + /* type u1Byte */ + BTC_SET_U1_RSSI_ADJ_VAL_FOR_AGC_TABLE_ON, + BTC_SET_U1_RSSI_ADJ_VAL_FOR_1ANT_COEX_TYPE, + BTC_SET_UI_SCAN_SIG_COMPENSATION, + BTC_SET_U1_AGG_BUF_SIZE, + + /* type trigger some action */ + BTC_SET_ACT_GET_BT_RSSI, + BTC_SET_ACT_AGGREGATE_CTRL, + + /********* for 1Ant **********/ + /* type bool */ + BTC_SET_BL_BT_SCO_BUSY, + /* type u1Byte */ + BTC_SET_U1_1ANT_LPS, + BTC_SET_U1_1ANT_RPWM, + /* type trigger some action */ + BTC_SET_ACT_LEAVE_LPS, + BTC_SET_ACT_ENTER_LPS, + BTC_SET_ACT_NORMAL_LPS, + BTC_SET_ACT_INC_FORCE_EXEC_PWR_CMD_CNT, + BTC_SET_ACT_DISABLE_LOW_POWER, + BTC_SET_ACT_UPDATE_ra_mask, + BTC_SET_ACT_SEND_MIMO_PS, + /* BT Coex related */ + BTC_SET_ACT_CTRL_BT_INFO, + BTC_SET_ACT_CTRL_BT_COEX, + /***************************/ + BTC_SET_MAX +}; + +enum btc_dbg_disp_type { + BTC_DBG_DISP_COEX_STATISTICS = 0x0, + BTC_DBG_DISP_BT_LINK_INFO = 0x1, + BTC_DBG_DISP_BT_FW_VER = 0x2, + BTC_DBG_DISP_FW_PWR_MODE_CMD = 0x3, + BTC_DBG_DISP_MAX +}; + +enum btc_notify_type_ips { + BTC_IPS_LEAVE = 0x0, + BTC_IPS_ENTER = 0x1, + BTC_IPS_MAX +}; + +enum btc_notify_type_lps { + BTC_LPS_DISABLE = 0x0, + BTC_LPS_ENABLE = 0x1, + BTC_LPS_MAX +}; + +enum btc_notify_type_scan { + BTC_SCAN_FINISH = 0x0, + BTC_SCAN_START = 0x1, + BTC_SCAN_MAX +}; + +enum btc_notify_type_associate { + BTC_ASSOCIATE_FINISH = 0x0, + BTC_ASSOCIATE_START = 0x1, + BTC_ASSOCIATE_MAX +}; + +enum btc_notify_type_media_status { + BTC_MEDIA_DISCONNECT = 0x0, + BTC_MEDIA_CONNECT = 0x1, + BTC_MEDIA_MAX +}; + +enum btc_notify_type_special_packet { + BTC_PACKET_UNKNOWN = 0x0, + BTC_PACKET_DHCP = 0x1, + BTC_PACKET_ARP = 0x2, + BTC_PACKET_EAPOL = 0x3, + BTC_PACKET_MAX +}; + +enum btc_notify_type_stack_operation { + BTC_STACK_OP_NONE = 0x0, + BTC_STACK_OP_INQ_PAGE_PAIR_START = 0x1, + BTC_STACK_OP_INQ_PAGE_PAIR_FINISH = 0x2, + BTC_STACK_OP_MAX +}; + + +typedef u8 (*bfp_btc_r1)(void *btc_context, u32 reg_addr); + +typedef u16 (*bfp_btc_r2)(void *btc_context, u32 reg_addr); + +typedef u32 (*bfp_btc_r4)(void *btc_context, u32 reg_addr); + +typedef void (*bfp_btc_w1)(void *btc_context, u32 reg_addr, u8 data); + +typedef void (*bfp_btc_w1_bit_mak)(void *btc_context, u32 reg_addr, + u32 bit_mask, u8 data1b); + +typedef void (*bfp_btc_w2)(void *btc_context, u32 reg_addr, u16 data); + +typedef void (*bfp_btc_w4)(void *btc_context, u32 reg_addr, u32 data); + +typedef void (*bfp_btc_wr_1byte_bit_mask)(void *btc_context, u32 reg_addr, + u8 bit_mask, u8 data); + +typedef void (*bfp_btc_set_bb_reg)(void *btc_context, u32 reg_addr, + u32 bit_mask, u32 data); + +typedef u32 (*bfp_btc_get_bb_reg)(void *btc_context, u32 reg_addr, + u32 bit_mask); + +typedef void (*bfp_btc_set_rf_reg)(void *btc_context, u8 rf_path, u32 reg_addr, + u32 bit_mask, u32 data); + +typedef u32 (*bfp_btc_get_rf_reg)(void *btc_context, u8 rf_path, + u32 reg_addr, u32 bit_mask); + +typedef void (*bfp_btc_fill_h2c)(void *btc_context, u8 element_id, + u32 cmd_len, u8 *cmd_buffer); + +typedef bool (*bfp_btc_get)(void *btcoexist, u8 get_type, void *out_buf); + +typedef bool (*bfp_btc_set)(void *btcoexist, u8 set_type, void *in_buf); + +typedef void (*bfp_btc_disp_dbg_msg)(void *btcoexist, u8 disp_type); + +struct btc_bt_info { + bool bt_disabled; + u8 rssi_adjust_for_agc_table_on; + u8 rssi_adjust_for_1ant_coex_type; + bool bt_busy; + u8 agg_buf_size; + bool limited_dig; + bool reject_agg_pkt; + bool b_bt_ctrl_buf_size; + bool increase_scan_dev_num; + u16 bt_hci_ver; + u16 bt_real_fw_ver; + u8 bt_fw_ver; + + /* the following is for 1Ant solution */ + bool bt_ctrl_lps; + bool bt_pwr_save_mode; + bool bt_lps_on; + bool force_to_roam; + u8 force_exec_pwr_cmd_cnt; + u8 lps_1ant; + u8 rpwm_1ant; + u32 ra_mask; +}; + +struct btc_stack_info { + bool profile_notified; + u16 hci_version; /* stack hci version */ + u8 num_of_link; + bool bt_link_exist; + bool sco_exist; + bool acl_exist; + bool a2dp_exist; + bool hid_exist; + u8 num_of_hid; + bool pan_exist; + bool unknown_acl_exist; + char min_bt_rssi; +}; + +struct btc_statistics { + u32 cnt_bind; + u32 cnt_init_hw_config; + u32 cnt_init_coex_dm; + u32 cnt_ips_notify; + u32 cnt_lps_notify; + u32 cnt_scan_notify; + u32 cnt_connect_notify; + u32 cnt_media_status_notify; + u32 cnt_special_packet_notify; + u32 cnt_bt_info_notify; + u32 cnt_periodical; + u32 cnt_stack_operation_notify; + u32 cnt_dbg_ctrl; +}; + +struct btc_bt_link_info { + bool bt_link_exist; + bool sco_exist; + bool sco_only; + bool a2dp_exist; + bool a2dp_only; + bool hid_exist; + bool hid_only; + bool pan_exist; + bool pan_only; +}; + +enum btc_antenna_pos { + BTC_ANTENNA_AT_MAIN_PORT = 0x1, + BTC_ANTENNA_AT_AUX_PORT = 0x2, +}; + +struct btc_coexist { + /* make sure only one adapter can bind the data context */ + bool binded; + /* default adapter */ + void *adapter; + struct btc_board_info board_info; + /* some bt info referenced by non-bt module */ + struct btc_bt_info bt_info; + struct btc_stack_info stack_info; + enum btc_chip_interface chip_interface; + struct btc_bt_link_info bt_link_info; + + bool initilized; + bool stop_coex_dm; + bool manual_control; + u8 *cli_buf; + struct btc_statistics statistics; + u8 pwr_mode_val[10]; + + /* function pointers - io related */ + bfp_btc_r1 btc_read_1byte; + bfp_btc_w1 btc_write_1byte; + bfp_btc_w1_bit_mak btc_write_1byte_bitmask; + bfp_btc_r2 btc_read_2byte; + bfp_btc_w2 btc_write_2byte; + bfp_btc_r4 btc_read_4byte; + bfp_btc_w4 btc_write_4byte; + + bfp_btc_set_bb_reg btc_set_bb_reg; + bfp_btc_get_bb_reg btc_get_bb_reg; + + + bfp_btc_set_rf_reg btc_set_rf_reg; + bfp_btc_get_rf_reg btc_get_rf_reg; + + bfp_btc_fill_h2c btc_fill_h2c; + + bfp_btc_disp_dbg_msg btc_disp_dbg_msg; + + bfp_btc_get btc_get; + bfp_btc_set btc_set; +}; + +bool halbtc_is_wifi_uplink(struct rtl_priv *adapter); + +extern struct btc_coexist gl_bt_coexist; + +bool exhalbtc_initlize_variables(struct rtl_priv *adapter); +void exhalbtc_init_hw_config(struct btc_coexist *btcoexist); +void exhalbtc_init_coex_dm(struct btc_coexist *btcoexist); +void exhalbtc_ips_notify(struct btc_coexist *btcoexist, u8 type); +void exhalbtc_lps_notify(struct btc_coexist *btcoexist, u8 type); +void exhalbtc_scan_notify(struct btc_coexist *btcoexist, u8 type); +void exhalbtc_connect_notify(struct btc_coexist *btcoexist, u8 action); +void exhalbtc_mediastatus_notify(struct btc_coexist *btcoexist, + enum _RT_MEDIA_STATUS media_status); +void exhalbtc_special_packet_notify(struct btc_coexist *btcoexist, u8 pkt_type); +void exhalbtc_bt_info_notify(struct btc_coexist *btcoexist, u8 *tmp_buf, + u8 length); +void exhalbtc_stack_operation_notify(struct btc_coexist *btcoexist, u8 type); +void exhalbtc_halt_notify(struct btc_coexist *btcoexist); +void exhalbtc_pnp_notify(struct btc_coexist *btcoexist, u8 pnp_state); +void exhalbtc_periodical(struct btc_coexist *btcoexist); +void exhalbtc_dbg_control(struct btc_coexist *btcoexist, u8 code, u8 len, + u8 *data); +void exhalbtc_stack_update_profile_info(void); +void exhalbtc_set_hci_version(u16 hci_version); +void exhalbtc_set_bt_patch_version(u16 bt_hci_version, u16 bt_patch_version); +void exhalbtc_update_min_bt_rssi(char bt_rssi); +void exhalbtc_set_bt_exist(bool bt_exist); +void exhalbtc_set_chip_type(u8 chip_type); +void exhalbtc_set_ant_num(u8 type, u8 ant_num); +void exhalbtc_display_bt_coex_info(struct btc_coexist *btcoexist); +void exhalbtc_signal_compensation(struct btc_coexist *btcoexist, + u8 *rssi_wifi, u8 *rssi_bt); +void exhalbtc_lps_leave(struct btc_coexist *btcoexist); +void exhalbtc_low_wifi_traffic_notify(struct btc_coexist *btcoexist); + +#endif --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/btcoexist/rtl_btc.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/btcoexist/rtl_btc.c @@ -0,0 +1,218 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2013 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#include "../wifi.h" +#include "rtl_btc.h" +#include "halbt_precomp.h" + +#include +#include + +static struct rtl_btc_ops rtl_btc_operation = { + .btc_init_variables = rtl_btc_init_variables, + .btc_init_hal_vars = rtl_btc_init_hal_vars, + .btc_init_hw_config = rtl_btc_init_hw_config, + .btc_ips_notify = rtl_btc_ips_notify, + .btc_scan_notify = rtl_btc_scan_notify, + .btc_connect_notify = rtl_btc_connect_notify, + .btc_mediastatus_notify = rtl_btc_mediastatus_notify, + .btc_periodical = rtl_btc_periodical, + .btc_halt_notify = rtl_btc_halt_notify, + .btc_btinfo_notify = rtl_btc_btinfo_notify, + .btc_is_limited_dig = rtl_btc_is_limited_dig, + .btc_is_disable_edca_turbo = rtl_btc_is_disable_edca_turbo, + .btc_is_bt_disabled = rtl_btc_is_bt_disabled, +}; + +void rtl_btc_init_variables(struct rtl_priv *rtlpriv) +{ + exhalbtc_initlize_variables(rtlpriv); +} + +void rtl_btc_init_hal_vars(struct rtl_priv *rtlpriv) +{ + u8 ant_num; + u8 bt_exist; + u8 bt_type; + + ant_num = rtl_get_hwpg_ant_num(rtlpriv); + RT_TRACE(rtlpriv, COMP_INIT, DBG_DMESG, + "%s, antNum is %d\n", __func__, ant_num); + + bt_exist = rtl_get_hwpg_bt_exist(rtlpriv); + RT_TRACE(rtlpriv, COMP_INIT, DBG_DMESG, + "%s, bt_exist is %d\n", __func__, bt_exist); + exhalbtc_set_bt_exist(bt_exist); + + bt_type = rtl_get_hwpg_bt_type(rtlpriv); + RT_TRACE(rtlpriv, COMP_INIT, DBG_DMESG, "%s, bt_type is %d\n", + __func__, bt_type); + exhalbtc_set_chip_type(bt_type); + + exhalbtc_set_ant_num(BT_COEX_ANT_TYPE_PG, ant_num); +} + +void rtl_btc_init_hw_config(struct rtl_priv *rtlpriv) +{ + exhalbtc_init_hw_config(&gl_bt_coexist); + exhalbtc_init_coex_dm(&gl_bt_coexist); +} + +void rtl_btc_ips_notify(struct rtl_priv *rtlpriv, u8 type) +{ + exhalbtc_ips_notify(&gl_bt_coexist, type); +} + +void rtl_btc_scan_notify(struct rtl_priv *rtlpriv, u8 scantype) +{ + exhalbtc_scan_notify(&gl_bt_coexist, scantype); +} + +void rtl_btc_connect_notify(struct rtl_priv *rtlpriv, u8 action) +{ + exhalbtc_connect_notify(&gl_bt_coexist, action); +} + +void rtl_btc_mediastatus_notify(struct rtl_priv *rtlpriv, + enum _RT_MEDIA_STATUS mstatus) +{ + exhalbtc_mediastatus_notify(&gl_bt_coexist, mstatus); +} + +void rtl_btc_periodical(struct rtl_priv *rtlpriv) +{ + exhalbtc_periodical(&gl_bt_coexist); +} + +void rtl_btc_halt_notify(void) +{ + exhalbtc_halt_notify(&gl_bt_coexist); +} + +void rtl_btc_btinfo_notify(struct rtl_priv *rtlpriv, u8 *tmp_buf, u8 length) +{ + exhalbtc_bt_info_notify(&gl_bt_coexist, tmp_buf, length); +} + +bool rtl_btc_is_limited_dig(struct rtl_priv *rtlpriv) +{ + return gl_bt_coexist.bt_info.limited_dig; +} + +bool rtl_btc_is_disable_edca_turbo(struct rtl_priv *rtlpriv) +{ + bool bt_change_edca = false; + u32 cur_edca_val; + u32 edca_bt_hs_uplink = 0x5ea42b, edca_bt_hs_downlink = 0x5ea42b; + u32 edca_hs; + u32 edca_addr = 0x504; + + cur_edca_val = rtl_read_dword(rtlpriv, edca_addr); + if (halbtc_is_wifi_uplink(rtlpriv)) { + if (cur_edca_val != edca_bt_hs_uplink) { + edca_hs = edca_bt_hs_uplink; + bt_change_edca = true; + } + } else { + if (cur_edca_val != edca_bt_hs_downlink) { + edca_hs = edca_bt_hs_downlink; + bt_change_edca = true; + } + } + + if (bt_change_edca) + rtl_write_dword(rtlpriv, edca_addr, edca_hs); + + return true; +} + +bool rtl_btc_is_bt_disabled(struct rtl_priv *rtlpriv) +{ + if (gl_bt_coexist.bt_info.bt_disabled) + return true; + else + return false; +} + +struct rtl_btc_ops *rtl_btc_get_ops_pointer(void) +{ + return &rtl_btc_operation; +} +EXPORT_SYMBOL(rtl_btc_get_ops_pointer); + +u8 rtl_get_hwpg_ant_num(struct rtl_priv *rtlpriv) +{ + u8 num; + + if (rtlpriv->btcoexist.btc_info.ant_num == ANT_X2) + num = 2; + else + num = 1; + + return num; +} + +enum _RT_MEDIA_STATUS mgnt_link_status_query(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + enum _RT_MEDIA_STATUS m_status = RT_MEDIA_DISCONNECT; + + u8 bibss = (mac->opmode == NL80211_IFTYPE_ADHOC) ? 1 : 0; + + if (bibss || rtlpriv->mac80211.link_state >= MAC80211_LINKED) + m_status = RT_MEDIA_CONNECT; + + return m_status; +} + +u8 rtl_get_hwpg_bt_exist(struct rtl_priv *rtlpriv) +{ + return rtlpriv->btcoexist.btc_info.btcoexist; +} + +u8 rtl_get_hwpg_bt_type(struct rtl_priv *rtlpriv) +{ + return rtlpriv->btcoexist.btc_info.bt_type; +} + +MODULE_AUTHOR("Page He "); +MODULE_AUTHOR("Realtek WlanFAE "); +MODULE_AUTHOR("Larry Finger "); +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("Realtek 802.11n PCI wireless core"); + +static int __init rtl_btcoexist_module_init(void) +{ + return 0; +} + +static void __exit rtl_btcoexist_module_exit(void) +{ + return; +} + +module_init(rtl_btcoexist_module_init); +module_exit(rtl_btcoexist_module_exit); --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/btcoexist/rtl_btc.h +++ linux-3.13.0/drivers/net/wireless/rtlwifi/btcoexist/rtl_btc.h @@ -0,0 +1,52 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * Larry Finger + * + *****************************************************************************/ + +#ifndef __RTL_BTC_H__ +#define __RTL_BTC_H__ + +#include "halbt_precomp.h" + +void rtl_btc_init_variables(struct rtl_priv *rtlpriv); +void rtl_btc_init_hal_vars(struct rtl_priv *rtlpriv); +void rtl_btc_init_hw_config(struct rtl_priv *rtlpriv); +void rtl_btc_ips_notify(struct rtl_priv *rtlpriv, u8 type); +void rtl_btc_scan_notify(struct rtl_priv *rtlpriv, u8 scantype); +void rtl_btc_connect_notify(struct rtl_priv *rtlpriv, u8 action); +void rtl_btc_mediastatus_notify(struct rtl_priv *rtlpriv, + enum _RT_MEDIA_STATUS mstatus); +void rtl_btc_periodical(struct rtl_priv *rtlpriv); +void rtl_btc_halt_notify(void); +void rtl_btc_btinfo_notify(struct rtl_priv *rtlpriv, u8 *tmpbuf, u8 length); +bool rtl_btc_is_limited_dig(struct rtl_priv *rtlpriv); +bool rtl_btc_is_disable_edca_turbo(struct rtl_priv *rtlpriv); +bool rtl_btc_is_bt_disabled(struct rtl_priv *rtlpriv); + +struct rtl_btc_ops *rtl_btc_get_ops_pointer(void); + +u8 rtl_get_hwpg_ant_num(struct rtl_priv *rtlpriv); +u8 rtl_get_hwpg_bt_exist(struct rtl_priv *rtlpriv); +u8 rtl_get_hwpg_bt_type(struct rtl_priv *rtlpriv); +enum _RT_MEDIA_STATUS mgnt_link_status_query(struct ieee80211_hw *hw); + +#endif --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/core.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/core.c @@ -46,10 +46,20 @@ "Firmware callback routine entered!\n"); complete(&rtlpriv->firmware_loading_complete); if (!firmware) { + if (rtlpriv->cfg->alt_fw_name) { + err = request_firmware(&firmware, + rtlpriv->cfg->alt_fw_name, + rtlpriv->io.dev); + pr_info("Loading alternative firmware %s\n", + rtlpriv->cfg->alt_fw_name); + if (!err) + goto found_alt; + } pr_err("Firmware %s not available\n", rtlpriv->cfg->fw_name); rtlpriv->max_fw_size = 0; return; } +found_alt: if (firmware->size > rtlpriv->max_fw_size) { RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, "Firmware is too big!\n"); @@ -727,6 +737,11 @@ rtlpriv->cfg->ops->linked_set_reg(hw); rcu_read_lock(); sta = ieee80211_find_sta(vif, (u8 *)bss_conf->bssid); + if (!sta) { + pr_err("ieee80211_find_sta returned NULL\n"); + rcu_read_unlock(); + goto out; + } if (vif->type == NL80211_IFTYPE_STATION && sta) rtlpriv->cfg->ops->update_rate_tbl(hw, sta, 0); @@ -881,7 +896,7 @@ mac->basic_rates = basic_rates; rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_BASIC_RATE, - (u8 *) (&basic_rates)); + (u8 *)(&basic_rates)); } rcu_read_unlock(); } @@ -895,6 +910,11 @@ if (bss_conf->assoc) { if (ppsc->fwctrl_lps) { u8 mstatus = RT_MEDIA_CONNECT; + u8 keep_alive = 10; + rtlpriv->cfg->ops->set_hw_reg(hw, + HW_VAR_KEEP_ALIVE, + (u8 *)(&keep_alive)); + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_H2C_FW_JOINBSSRPT, &mstatus); @@ -1298,7 +1318,8 @@ * before switch channel or power save, or tx buffer packet * maybe send after offchannel or rf sleep, this may cause * dis-association by AP */ -static void rtl_op_flush(struct ieee80211_hw *hw, u32 queues, bool drop) +static void rtl_op_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif, + u32 queues, bool drop) { struct rtl_priv *rtlpriv = rtl_priv(hw); --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/pci.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/pci.c @@ -1068,7 +1068,7 @@ mac->current_ampdu_factor = 3; /*QOS*/ - rtlpci->acm_method = eAcmWay2_SW; + rtlpci->acm_method = EACMWAY2_SW; /*task */ tasklet_init(&rtlpriv->works.irq_tasklet, @@ -1843,6 +1843,65 @@ return true; } +static int rtl_pci_intr_mode_msi(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(pcipriv); + int ret; + + ret = pci_enable_msi(rtlpci->pdev); + if (ret < 0) + return ret; + + ret = request_irq(rtlpci->pdev->irq, &_rtl_pci_interrupt, + IRQF_SHARED, KBUILD_MODNAME, hw); + if (ret < 0) { + pci_disable_msi(rtlpci->pdev); + return ret; + } + + rtlpci->using_msi = true; + + RT_TRACE(rtlpriv, COMP_INIT|COMP_INTR, DBG_DMESG, + "MSI Interrupt Mode!\n"); + return 0; +} + +static int rtl_pci_intr_mode_legacy(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(pcipriv); + int ret; + + ret = request_irq(rtlpci->pdev->irq, &_rtl_pci_interrupt, + IRQF_SHARED, KBUILD_MODNAME, hw); + if (ret < 0) + return ret; + + rtlpci->using_msi = false; + RT_TRACE(rtlpriv, COMP_INIT|COMP_INTR, DBG_DMESG, + "Pin-based Interrupt Mode!\n"); + return 0; +} + +static int rtl_pci_intr_mode_decide(struct ieee80211_hw *hw) +{ + struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(pcipriv); + int ret; + + if (rtlpci->msi_support) { + ret = rtl_pci_intr_mode_msi(hw); + if (ret < 0) + ret = rtl_pci_intr_mode_legacy(hw); + } else { + ret = rtl_pci_intr_mode_legacy(hw); + } + return ret; +} + int rtl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) { @@ -1985,8 +2044,7 @@ } rtlpci = rtl_pcidev(pcipriv); - err = request_irq(rtlpci->pdev->irq, &_rtl_pci_interrupt, - IRQF_SHARED, KBUILD_MODNAME, hw); + err = rtl_pci_intr_mode_decide(hw); if (err) { RT_TRACE(rtlpriv, COMP_INIT, DBG_DMESG, "%s: failed to register IRQ handler\n", @@ -2054,6 +2112,9 @@ rtlpci->irq_alloc = 0; } + if (rtlpci->using_msi) + pci_disable_msi(rtlpci->pdev); + list_del(&rtlpriv->list); if (rtlpriv->io.pci_mem_start != 0) { pci_iounmap(pdev, (void __iomem *)rtlpriv->io.pci_mem_start); --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/pci.h +++ linux-3.13.0/drivers/net/wireless/rtlwifi/pci.h @@ -199,6 +199,10 @@ u16 shortretry_limit; u16 longretry_limit; + + /* MSI support */ + bool msi_support; + bool using_msi; }; struct mp_adapter { --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/ps.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/ps.c @@ -48,7 +48,7 @@ /*<2> Enable Adapter */ if (rtlpriv->cfg->ops->hw_init(hw)) - return 1; + return false; RT_CLEAR_PS_LEVEL(ppsc, RT_RF_OFF_LEVL_HALT_NIC); /*<3> Enable Interrupt */ --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8188ee/dm.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8188ee/dm.c @@ -235,7 +235,7 @@ u8 pwr_val = 0; u8 cck_base = rtldm->swing_idx_cck_base; u8 cck_val = rtldm->swing_idx_cck; - u8 ofdm_base = rtldm->swing_idx_ofdm_base; + u8 ofdm_base = rtldm->swing_idx_ofdm_base[0]; u8 ofdm_val = rtlpriv->dm.swing_idx_ofdm[RF90_PATH_A]; if (type == 0) { @@ -726,7 +726,7 @@ static u64 last_rx; long tmp_entry_max_pwdb = 0, tmp_entry_min_pwdb = 0xff; - if (rtlhal->oem_id == RT_CID_819x_HP) { + if (rtlhal->oem_id == RT_CID_819X_HP) { u64 cur_txok_cnt = 0; u64 cur_rxok_cnt = 0; cur_txok_cnt = rtlpriv->stats.txbytesunicast - last_txok; @@ -912,7 +912,7 @@ for (i = 0; i < OFDM_TABLE_LENGTH; i++) { if (ele_d == (ofdmswing_table[i] & MASKOFDM_D)) { ofdm_old[0] = (u8) i; - rtldm->swing_idx_ofdm_base = (u8)i; + rtldm->swing_idx_ofdm_base[0] = (u8)i; RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, "Initial pathA ele_d reg0x%x = 0x%lx, ofdm_index = 0x%x\n", ROFDM0_XATXIQIMBAL, @@ -1078,7 +1078,7 @@ rtldm->swing_flag_ofdm = true; } - if (rtldm->swing_idx_cck != rtldm->swing_idx_cck) { + if (rtldm->swing_idx_cck_cur != rtldm->swing_idx_cck) { rtldm->swing_idx_cck_cur = rtldm->swing_idx_cck; rtldm->swing_flag_cck = true; } --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8188ee/hw.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8188ee/hw.c @@ -509,7 +509,7 @@ u8 e_aci = *((u8 *)val); rtl88e_dm_init_edca_turbo(hw); - if (rtlpci->acm_method != eAcmWay2_SW) + if (rtlpci->acm_method != EACMWAY2_SW) rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_ACM_CTRL, (u8 *)(&e_aci)); break; } @@ -1025,9 +1025,20 @@ bool rtstatus = true; int err = 0; u8 tmp_u1b, u1byte; + unsigned long flags; RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, "Rtl8188EE hw init\n"); rtlpriv->rtlhal.being_init_adapter = true; + /* As this function can take a very long time (up to 350 ms) + * and can be called with irqs disabled, reenable the irqs + * to let the other devices continue being serviced. + * + * It is safe doing so since our own interrupts will only be enabled + * in a subsequent step. + */ + local_save_flags(flags); + local_irq_enable(); + rtlpriv->intf_ops->disable_aspm(hw); tmp_u1b = rtl_read_byte(rtlpriv, REG_SYS_CLKR+1); @@ -1043,7 +1054,7 @@ if (rtstatus != true) { RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, "Init MAC failed\n"); err = 1; - return err; + goto exit; } err = rtl88e_download_fw(hw, false); @@ -1051,8 +1062,7 @@ RT_TRACE(rtlpriv, COMP_ERR, DBG_WARNING, "Failed to download FW. Init HW without FW now..\n"); err = 1; - rtlhal->fw_ready = false; - return err; + goto exit; } else { rtlhal->fw_ready = true; } @@ -1097,7 +1107,7 @@ if (ppsc->rfpwr_state == ERFON) { if ((rtlefuse->antenna_div_type == CGCS_RX_HW_ANTDIV) || ((rtlefuse->antenna_div_type == CG_TRX_HW_ANTDIV) && - (rtlhal->oem_id == RT_CID_819x_HP))) { + (rtlhal->oem_id == RT_CID_819X_HP))) { rtl88e_phy_set_rfpath_switch(hw, true); rtlpriv->dm.fat_table.rx_idle_ant = MAIN_ANT; } else { @@ -1135,10 +1145,12 @@ } rtl_write_byte(rtlpriv, REG_NAV_CTRL+2, ((30000+127)/128)); rtl88e_dm_init(hw); +exit: + local_irq_restore(flags); rtlpriv->rtlhal.being_init_adapter = false; RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, "end of Rtl8188EE hw init %x\n", err); - return 0; + return err; } static enum version_8188e _rtl88ee_read_chip_version(struct ieee80211_hw *hw) @@ -1872,15 +1884,15 @@ case EEPROM_CID_DEFAULT: if (rtlefuse->eeprom_did == 0x8179) { if (rtlefuse->eeprom_svid == 0x1025) { - rtlhal->oem_id = RT_CID_819x_Acer; + rtlhal->oem_id = RT_CID_819X_ACER; } else if ((rtlefuse->eeprom_svid == 0x10EC && rtlefuse->eeprom_smid == 0x0179) || (rtlefuse->eeprom_svid == 0x17AA && rtlefuse->eeprom_smid == 0x0179)) { - rtlhal->oem_id = RT_CID_819x_Lenovo; + rtlhal->oem_id = RT_CID_819X_LENOVO; } else if (rtlefuse->eeprom_svid == 0x103c && rtlefuse->eeprom_smid == 0x197d) { - rtlhal->oem_id = RT_CID_819x_HP; + rtlhal->oem_id = RT_CID_819X_HP; } else { rtlhal->oem_id = RT_CID_DEFAULT; } @@ -1892,7 +1904,7 @@ rtlhal->oem_id = RT_CID_TOSHIBA; break; case EEPROM_CID_QMI: - rtlhal->oem_id = RT_CID_819x_QMI; + rtlhal->oem_id = RT_CID_819X_QMI; break; case EEPROM_CID_WHQL: default: @@ -1911,14 +1923,14 @@ pcipriv->ledctl.led_opendrain = true; switch (rtlhal->oem_id) { - case RT_CID_819x_HP: + case RT_CID_819X_HP: pcipriv->ledctl.led_opendrain = true; break; - case RT_CID_819x_Lenovo: + case RT_CID_819X_LENOVO: case RT_CID_DEFAULT: case RT_CID_TOSHIBA: case RT_CID_CCX: - case RT_CID_819x_Acer: + case RT_CID_819X_ACER: case RT_CID_WHQL: default: break; --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8188ee/phy.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8188ee/phy.c @@ -1002,7 +1002,7 @@ } } - if (rtlhal->oem_id == RT_CID_819x_HP) + if (rtlhal->oem_id == RT_CID_819X_HP) rtl88_config_s(hw, 0x52, 0x7E4BD); break; --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8188ee/sw.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8188ee/sw.c @@ -93,6 +93,7 @@ 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; @@ -266,6 +267,7 @@ .inactiveps = true, .swctrl_lps = false, .fwctrl_lps = true, + .msi_support = false, .debug = DBG_EMERG, }; @@ -382,10 +384,12 @@ module_param_named(ips, rtl88ee_mod_params.inactiveps, bool, 0444); module_param_named(swlps, rtl88ee_mod_params.swctrl_lps, bool, 0444); module_param_named(fwlps, rtl88ee_mod_params.fwctrl_lps, bool, 0444); +module_param_named(msi, rtl88ee_mod_params.msi_support, 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)"); static SIMPLE_DEV_PM_OPS(rtlwifi_pm_ops, rtl_pci_suspend, rtl_pci_resume); --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8188ee/trx.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8188ee/trx.c @@ -293,7 +293,7 @@ u8 *psaddr; __le16 fc; u16 type, ufc; - bool match_bssid, packet_toself, packet_beacon, addr; + bool match_bssid, packet_toself, packet_beacon = false, addr; tmp_buf = skb->data + pstatus->rx_drvinfo_size + pstatus->rx_bufshift; @@ -452,7 +452,7 @@ /* During testing, hdr was NULL */ return false; } - if ((ieee80211_is_robust_mgmt_frame(hdr)) && + if ((_ieee80211_is_robust_mgmt_frame(hdr)) && (ieee80211_has_protected(hdr->frame_control))) rx_status->flag &= ~RX_FLAG_DECRYPTED; else --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8192c/dm_common.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8192c/dm_common.c @@ -158,6 +158,42 @@ {0x09, 0x08, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00} }; +static u32 power_index_reg[6] = {0xc90, 0xc91, 0xc92, 0xc98, 0xc99, 0xc9a}; + +void dm_restorepowerindex(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 index; + + for (index = 0; index < 6; index++) + rtl_write_byte(rtlpriv, power_index_reg[index], + rtlpriv->dm.powerindex_backup[index]); +} +EXPORT_SYMBOL_GPL(dm_restorepowerindex); + +void dm_writepowerindex(struct ieee80211_hw *hw, u8 value) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 index; + + for (index = 0; index < 6; index++) + rtl_write_byte(rtlpriv, power_index_reg[index], value); +} +EXPORT_SYMBOL_GPL(dm_writepowerindex); + +void dm_savepowerindex(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 index; + u8 tmp; + + for (index = 0; index < 6; index++) { + tmp = rtl_read_byte(rtlpriv, power_index_reg[index]); + rtlpriv->dm.powerindex_backup[index] = tmp; + } +} +EXPORT_SYMBOL_GPL(dm_savepowerindex); + static void rtl92c_dm_diginit(struct ieee80211_hw *hw) { struct rtl_priv *rtlpriv = rtl_priv(hw); @@ -180,7 +216,12 @@ dm_digtable->back_range_max = DM_DIG_BACKOFF_MAX; dm_digtable->back_range_min = DM_DIG_BACKOFF_MIN; dm_digtable->pre_cck_pd_state = CCK_PD_STAGE_MAX; - dm_digtable->cur_cck_pd_state = CCK_PD_STAGE_MAX; + dm_digtable->cur_cck_pd_state = CCK_PD_STAGE_LowRssi; + + dm_digtable->forbidden_igi = DM_DIG_MIN; + dm_digtable->large_fa_hit = 0; + dm_digtable->recover_cnt = 0; + dm_digtable->dig_dynamic_min = 0x25; } static u8 rtl92c_dm_initial_gain_min_pwdb(struct ieee80211_hw *hw) @@ -206,7 +247,9 @@ rssi_val_min = rtlpriv->dm.entry_min_undec_sm_pwdb; } - return (u8) rssi_val_min; + if (rssi_val_min > 100) + rssi_val_min = 100; + return (u8)rssi_val_min; } static void rtl92c_dm_false_alarm_counter_statistics(struct ieee80211_hw *hw) @@ -224,9 +267,17 @@ ret_value = rtl_get_bbreg(hw, ROFDM_PHYCOUNTER3, MASKDWORD); falsealm_cnt->cnt_mcs_fail = (ret_value & 0xffff); + + ret_value = rtl_get_bbreg(hw, ROFDM0_FRAMESYNC, MASKDWORD); + falsealm_cnt->cnt_fast_fsync_fail = (ret_value & 0xffff); + falsealm_cnt->cnt_sb_search_fail = ((ret_value & 0xffff0000) >> 16); + falsealm_cnt->cnt_ofdm_fail = falsealm_cnt->cnt_parity_fail + - falsealm_cnt->cnt_rate_illegal + - falsealm_cnt->cnt_crc8_fail + falsealm_cnt->cnt_mcs_fail; + falsealm_cnt->cnt_rate_illegal + + falsealm_cnt->cnt_crc8_fail + + falsealm_cnt->cnt_mcs_fail + + falsealm_cnt->cnt_fast_fsync_fail + + falsealm_cnt->cnt_sb_search_fail; rtl_set_bbreg(hw, RCCK0_FALSEALARMREPORT, BIT(14), 1); ret_value = rtl_get_bbreg(hw, RCCK0_FACOUNTERLOWER, MASKBYTE0); @@ -271,12 +322,14 @@ value_igi++; else if (rtlpriv->falsealm_cnt.cnt_all >= DM_DIG_FA_TH2) value_igi += 2; + if (value_igi > DM_DIG_FA_UPPER) value_igi = DM_DIG_FA_UPPER; else if (value_igi < DM_DIG_FA_LOWER) value_igi = DM_DIG_FA_LOWER; + if (rtlpriv->falsealm_cnt.cnt_all > 10000) - value_igi = 0x32; + value_igi = DM_DIG_FA_UPPER; dm_digtable->cur_igvalue = value_igi; rtl92c_dm_write_dig(hw); @@ -286,32 +339,80 @@ { struct rtl_priv *rtlpriv = rtl_priv(hw); struct dig_t *digtable = &rtlpriv->dm_digtable; + u32 isbt; - if (rtlpriv->falsealm_cnt.cnt_all > digtable->fa_highthresh) { - if ((digtable->back_val - 2) < digtable->back_range_min) - digtable->back_val = digtable->back_range_min; - else - digtable->back_val -= 2; - } else if (rtlpriv->falsealm_cnt.cnt_all < digtable->fa_lowthresh) { - if ((digtable->back_val + 2) > digtable->back_range_max) - digtable->back_val = digtable->back_range_max; - else - digtable->back_val += 2; + /* modify DIG lower bound, deal with abnorally large false alarm */ + if (rtlpriv->falsealm_cnt.cnt_all > 10000) { + digtable->large_fa_hit++; + if (digtable->forbidden_igi < digtable->cur_igvalue) { + digtable->forbidden_igi = digtable->cur_igvalue; + digtable->large_fa_hit = 1; + } + + if (digtable->large_fa_hit >= 3) { + if ((digtable->forbidden_igi + 1) > + digtable->rx_gain_max) + digtable->rx_gain_min = digtable->rx_gain_max; + else + digtable->rx_gain_min = (digtable->forbidden_igi + 1); + digtable->recover_cnt = 3600; /* 3600=2hr */ + } + } else { + /* Recovery mechanism for IGI lower bound */ + if (digtable->recover_cnt != 0) { + digtable->recover_cnt--; + } else { + if (digtable->large_fa_hit == 0) { + if ((digtable->forbidden_igi-1) < DM_DIG_MIN) { + digtable->forbidden_igi = DM_DIG_MIN; + digtable->rx_gain_min = DM_DIG_MIN; + } else { + digtable->forbidden_igi--; + digtable->rx_gain_min = digtable->forbidden_igi + 1; + } + } else if (digtable->large_fa_hit == 3) { + digtable->large_fa_hit = 0; + } + } } + if (rtlpriv->falsealm_cnt.cnt_all < 250) { + isbt = rtl_read_byte(rtlpriv, 0x4fd) & 0x01; - if ((digtable->rssi_val_min + 10 - digtable->back_val) > - digtable->rx_gain_max) + if (!isbt) { + if (rtlpriv->falsealm_cnt.cnt_all > + digtable->fa_lowthresh) { + if ((digtable->back_val - 2) < + digtable->back_range_min) + digtable->back_val = digtable->back_range_min; + else + digtable->back_val -= 2; + } else if (rtlpriv->falsealm_cnt.cnt_all < + digtable->fa_lowthresh) { + if ((digtable->back_val + 2) > + digtable->back_range_max) + digtable->back_val = digtable->back_range_max; + else + digtable->back_val += 2; + } + } else { + digtable->back_val = DM_DIG_BACKOFF_DEFAULT; + } + } else { + /* Adjust initial gain by false alarm */ + if (rtlpriv->falsealm_cnt.cnt_all > 1000) + digtable->cur_igvalue = digtable->pre_igvalue + 2; + else if (rtlpriv->falsealm_cnt.cnt_all > 750) + digtable->cur_igvalue = digtable->pre_igvalue + 1; + else if (rtlpriv->falsealm_cnt.cnt_all < 500) + digtable->cur_igvalue = digtable->pre_igvalue - 1; + } + + /* Check initial gain by upper/lower bound */ + if (digtable->cur_igvalue > digtable->rx_gain_max) digtable->cur_igvalue = digtable->rx_gain_max; - else if ((digtable->rssi_val_min + 10 - - digtable->back_val) < digtable->rx_gain_min) - digtable->cur_igvalue = digtable->rx_gain_min; - else - digtable->cur_igvalue = digtable->rssi_val_min + 10 - - digtable->back_val; - RT_TRACE(rtlpriv, COMP_DIG, DBG_TRACE, - "rssi_val_min = %x back_val %x\n", - digtable->rssi_val_min, digtable->back_val); + if (digtable->cur_igvalue < digtable->rx_gain_min) + digtable->cur_igvalue = digtable->rx_gain_min; rtl92c_dm_write_dig(hw); } @@ -329,7 +430,7 @@ multi_sta = true; if (!multi_sta || - dm_digtable->cursta_cstate != DIG_STA_DISCONNECT) { + dm_digtable->cursta_cstate == DIG_STA_DISCONNECT) { initialized = false; dm_digtable->dig_ext_port_stage = DIG_EXT_PORT_STAGE_MAX; return; @@ -375,7 +476,6 @@ RT_TRACE(rtlpriv, COMP_DIG, DBG_TRACE, "presta_cstate = %x, cursta_cstate = %x\n", dm_digtable->presta_cstate, dm_digtable->cursta_cstate); - if (dm_digtable->presta_cstate == dm_digtable->cursta_cstate || dm_digtable->cursta_cstate == DIG_STA_BEFORE_CONNECT || dm_digtable->cursta_cstate == DIG_STA_CONNECT) { @@ -383,6 +483,8 @@ if (dm_digtable->cursta_cstate != DIG_STA_DISCONNECT) { dm_digtable->rssi_val_min = rtl92c_dm_initial_gain_min_pwdb(hw); + if (dm_digtable->rssi_val_min > 100) + dm_digtable->rssi_val_min = 100; rtl92c_dm_ctrl_initgain_by_rssi(hw); } } else { @@ -398,11 +500,12 @@ static void rtl92c_dm_cck_packet_detection_thresh(struct ieee80211_hw *hw) { struct rtl_priv *rtlpriv = rtl_priv(hw); - struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); struct dig_t *dm_digtable = &rtlpriv->dm_digtable; if (dm_digtable->cursta_cstate == DIG_STA_CONNECT) { dm_digtable->rssi_val_min = rtl92c_dm_initial_gain_min_pwdb(hw); + if (dm_digtable->rssi_val_min > 100) + dm_digtable->rssi_val_min = 100; if (dm_digtable->pre_cck_pd_state == CCK_PD_STAGE_LowRssi) { if (dm_digtable->rssi_val_min <= 25) @@ -424,48 +527,14 @@ } if (dm_digtable->pre_cck_pd_state != dm_digtable->cur_cck_pd_state) { - if (dm_digtable->cur_cck_pd_state == CCK_PD_STAGE_LowRssi) { - if (rtlpriv->falsealm_cnt.cnt_cck_fail > 800) - dm_digtable->cur_cck_fa_state = - CCK_FA_STAGE_High; - else - dm_digtable->cur_cck_fa_state = CCK_FA_STAGE_Low; - - if (dm_digtable->pre_cck_fa_state != - dm_digtable->cur_cck_fa_state) { - if (dm_digtable->cur_cck_fa_state == - CCK_FA_STAGE_Low) - rtl_set_bbreg(hw, RCCK0_CCA, MASKBYTE2, - 0x83); - else - rtl_set_bbreg(hw, RCCK0_CCA, MASKBYTE2, - 0xcd); - - dm_digtable->pre_cck_fa_state = - dm_digtable->cur_cck_fa_state; - } - - rtl_set_bbreg(hw, RCCK0_SYSTEM, MASKBYTE1, 0x40); - - if (IS_92C_SERIAL(rtlhal->version)) - rtl_set_bbreg(hw, RCCK0_FALSEALARMREPORT, - MASKBYTE2, 0xd7); - } else { + if ((dm_digtable->cur_cck_pd_state == CCK_PD_STAGE_LowRssi) || + (dm_digtable->cur_cck_pd_state == CCK_PD_STAGE_MAX)) + rtl_set_bbreg(hw, RCCK0_CCA, MASKBYTE2, 0x83); + else rtl_set_bbreg(hw, RCCK0_CCA, MASKBYTE2, 0xcd); - rtl_set_bbreg(hw, RCCK0_SYSTEM, MASKBYTE1, 0x47); - if (IS_92C_SERIAL(rtlhal->version)) - rtl_set_bbreg(hw, RCCK0_FALSEALARMREPORT, - MASKBYTE2, 0xd3); - } dm_digtable->pre_cck_pd_state = dm_digtable->cur_cck_pd_state; } - - RT_TRACE(rtlpriv, COMP_DIG, DBG_TRACE, "CCKPDStage=%x\n", - dm_digtable->cur_cck_pd_state); - - RT_TRACE(rtlpriv, COMP_DIG, DBG_TRACE, "is92C=%x\n", - IS_92C_SERIAL(rtlhal->version)); } static void rtl92c_dm_ctrl_initgain_by_twoport(struct ieee80211_hw *hw) @@ -482,6 +551,8 @@ else dm_digtable->cursta_cstate = DIG_STA_DISCONNECT; + dm_digtable->curmultista_cstate = DIG_MULTISTA_DISCONNECT; + rtl92c_dm_initial_gain_sta(hw); rtl92c_dm_initial_gain_multi_sta(hw); rtl92c_dm_cck_packet_detection_thresh(hw); @@ -493,23 +564,26 @@ static void rtl92c_dm_dig(struct ieee80211_hw *hw) { struct rtl_priv *rtlpriv = rtl_priv(hw); - struct dig_t *dm_digtable = &rtlpriv->dm_digtable; if (rtlpriv->dm.dm_initialgain_enable == false) return; - if (dm_digtable->dig_enable_flag == false) + if (!rtlpriv->dm.dm_flag & DYNAMIC_FUNC_DIG) return; rtl92c_dm_ctrl_initgain_by_twoport(hw); - } static void rtl92c_dm_init_dynamic_txpower(struct ieee80211_hw *hw) { struct rtl_priv *rtlpriv = rtl_priv(hw); - rtlpriv->dm.dynamic_txpower_enable = false; - + if (rtlpriv->rtlhal.interface == INTF_USB && + rtlpriv->rtlhal.board_type & 0x1) { + dm_savepowerindex(hw); + rtlpriv->dm.dynamic_txpower_enable = true; + } else { + rtlpriv->dm.dynamic_txpower_enable = false; + } rtlpriv->dm.last_dtp_lvl = TXHIGHPWRLEVEL_NORMAL; rtlpriv->dm.dynamic_txhighpower_lvl = TXHIGHPWRLEVEL_NORMAL; } @@ -524,9 +598,14 @@ dm_digtable->cur_igvalue, dm_digtable->pre_igvalue, dm_digtable->back_val); - dm_digtable->cur_igvalue += 2; - if (dm_digtable->cur_igvalue > 0x3f) - dm_digtable->cur_igvalue = 0x3f; + if (rtlpriv->rtlhal.interface == INTF_USB && + !dm_digtable->dig_enable_flag) { + dm_digtable->pre_igvalue = 0x17; + return; + } + dm_digtable->cur_igvalue -= 1; + if (dm_digtable->cur_igvalue < DM_DIG_MIN) + dm_digtable->cur_igvalue = DM_DIG_MIN; if (dm_digtable->pre_igvalue != dm_digtable->cur_igvalue) { rtl_set_bbreg(hw, ROFDM0_XAAGCCORE1, 0x7f, @@ -536,11 +615,47 @@ dm_digtable->pre_igvalue = dm_digtable->cur_igvalue; } + RT_TRACE(rtlpriv, COMP_DIG, DBG_WARNING, + "dig values 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x\n", + dm_digtable->cur_igvalue, dm_digtable->pre_igvalue, + dm_digtable->rssi_val_min, dm_digtable->back_val, + dm_digtable->rx_gain_max, dm_digtable->rx_gain_min, + dm_digtable->large_fa_hit, dm_digtable->forbidden_igi); } EXPORT_SYMBOL(rtl92c_dm_write_dig); static void rtl92c_dm_pwdb_monitor(struct ieee80211_hw *hw) { + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + long tmpentry_max_pwdb = 0, tmpentry_min_pwdb = 0xff; + + if (mac->link_state != MAC80211_LINKED) + return; + + if (mac->opmode == NL80211_IFTYPE_ADHOC || + mac->opmode == NL80211_IFTYPE_AP) { + /* TODO: Handle ADHOC and AP Mode */ + } + + if (tmpentry_max_pwdb != 0) + rtlpriv->dm.entry_max_undec_sm_pwdb = tmpentry_max_pwdb; + else + rtlpriv->dm.entry_max_undec_sm_pwdb = 0; + + if (tmpentry_min_pwdb != 0xff) + rtlpriv->dm.entry_min_undec_sm_pwdb = tmpentry_min_pwdb; + else + rtlpriv->dm.entry_min_undec_sm_pwdb = 0; + +/* TODO: + * if (mac->opmode == NL80211_IFTYPE_STATION) { + * if (rtlpriv->rtlhal.fw_ready) { + * u32 param = (u32)(rtlpriv->dm.undec_sm_pwdb << 16); + * rtl8192c_set_rssi_cmd(hw, param); + * } + * } + */ } void rtl92c_dm_init_edca_turbo(struct ieee80211_hw *hw) @@ -750,6 +865,7 @@ rtlpriv->dm.ofdm_index[i] = ofdm_index_old[i]; rtlpriv->dm.cck_index = cck_index_old; } + /* Handle USB High PA boards */ delta = (thermalvalue > rtlpriv->dm.thermalvalue) ? (thermalvalue - rtlpriv->dm.thermalvalue) : @@ -1140,22 +1256,22 @@ { struct rtl_priv *rtlpriv = rtl_priv(hw); struct ps_t *dm_pstable = &rtlpriv->dm_pstable; - static u8 initialize; - static u32 reg_874, reg_c70, reg_85c, reg_a74; - if (initialize == 0) { - reg_874 = (rtl_get_bbreg(hw, RFPGA0_XCD_RFINTERFACESW, - MASKDWORD) & 0x1CC000) >> 14; + if (!rtlpriv->reg_init) { + rtlpriv->reg_874 = (rtl_get_bbreg(hw, + RFPGA0_XCD_RFINTERFACESW, + MASKDWORD) & 0x1CC000) >> 14; - reg_c70 = (rtl_get_bbreg(hw, ROFDM0_AGCPARAMETER1, - MASKDWORD) & BIT(3)) >> 3; + rtlpriv->reg_c70 = (rtl_get_bbreg(hw, ROFDM0_AGCPARAMETER1, + MASKDWORD) & BIT(3)) >> 3; - reg_85c = (rtl_get_bbreg(hw, RFPGA0_XCD_SWITCHCONTROL, - MASKDWORD) & 0xFF000000) >> 24; + rtlpriv->reg_85c = (rtl_get_bbreg(hw, RFPGA0_XCD_SWITCHCONTROL, + MASKDWORD) & 0xFF000000) >> 24; - reg_a74 = (rtl_get_bbreg(hw, 0xa74, MASKDWORD) & 0xF000) >> 12; + rtlpriv->reg_a74 = (rtl_get_bbreg(hw, 0xa74, MASKDWORD) & + 0xF000) >> 12; - initialize = 1; + rtlpriv->reg_init = true; } if (!bforce_in_normal) { @@ -1192,12 +1308,12 @@ rtl_set_bbreg(hw, 0x818, BIT(28), 0x1); } else { rtl_set_bbreg(hw, RFPGA0_XCD_RFINTERFACESW, - 0x1CC000, reg_874); + 0x1CC000, rtlpriv->reg_874); rtl_set_bbreg(hw, ROFDM0_AGCPARAMETER1, BIT(3), - reg_c70); + rtlpriv->reg_c70); rtl_set_bbreg(hw, RFPGA0_XCD_SWITCHCONTROL, 0xFF000000, - reg_85c); - rtl_set_bbreg(hw, 0xa74, 0xF000, reg_a74); + rtlpriv->reg_85c); + rtl_set_bbreg(hw, 0xa74, 0xF000, rtlpriv->reg_a74); rtl_set_bbreg(hw, 0x818, BIT(28), 0x0); } @@ -1213,6 +1329,7 @@ struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + /* Determine the minimum RSSI */ if (((mac->link_state == MAC80211_NOLINK)) && (rtlpriv->dm.entry_min_undec_sm_pwdb == 0)) { dm_pstable->rssi_val_min = 0; @@ -1241,6 +1358,7 @@ dm_pstable->rssi_val_min); } + /* Power Saving for 92C */ if (IS_92C_SERIAL(rtlhal->version)) ;/* rtl92c_dm_1r_cca(hw); */ else @@ -1252,12 +1370,23 @@ struct rtl_priv *rtlpriv = rtl_priv(hw); rtlpriv->dm.dm_type = DM_TYPE_BYDRIVER; + rtlpriv->dm.dm_flag = DYNAMIC_FUNC_DISABLE | DYNAMIC_FUNC_DIG; + rtlpriv->dm.undec_sm_pwdb = -1; + rtlpriv->dm.undec_sm_cck = -1; + rtlpriv->dm.dm_initialgain_enable = true; rtl92c_dm_diginit(hw); + + rtlpriv->dm.dm_flag |= HAL_DM_HIPWR_DISABLE; rtl92c_dm_init_dynamic_txpower(hw); + rtl92c_dm_init_edca_turbo(hw); rtl92c_dm_init_rate_adaptive_mask(hw); + rtlpriv->dm.dm_flag |= DYNAMIC_FUNC_SS; rtl92c_dm_initialize_txpower_tracking(hw); rtl92c_dm_init_dynamic_bb_powersaving(hw); + + rtlpriv->dm.ofdm_pkt_cnt = 0; + rtlpriv->dm.dm_rssi_sel = RSSI_DEFAULT; } EXPORT_SYMBOL(rtl92c_dm_init); @@ -1308,7 +1437,7 @@ } if (undec_sm_pwdb >= TX_POWER_NEAR_FIELD_THRESH_LVL2) { - rtlpriv->dm.dynamic_txhighpower_lvl = TXHIGHPWRLEVEL_LEVEL1; + rtlpriv->dm.dynamic_txhighpower_lvl = TXHIGHPWRLEVEL_LEVEL2; RT_TRACE(rtlpriv, COMP_POWER, DBG_LOUD, "TXHIGHPWRLEVEL_LEVEL1 (TxPwr=0x0)\n"); } else if ((undec_sm_pwdb < (TX_POWER_NEAR_FIELD_THRESH_LVL2 - 3)) && @@ -1328,8 +1457,16 @@ "PHY_SetTxPowerLevel8192S() Channel = %d\n", rtlphy->current_channel); rtl92c_phy_set_txpower_level(hw, rtlphy->current_channel); + if (rtlpriv->dm.dynamic_txhighpower_lvl == + TXHIGHPWRLEVEL_NORMAL) + dm_restorepowerindex(hw); + else if (rtlpriv->dm.dynamic_txhighpower_lvl == + TXHIGHPWRLEVEL_LEVEL1) + dm_writepowerindex(hw, 0x14); + else if (rtlpriv->dm.dynamic_txhighpower_lvl == + TXHIGHPWRLEVEL_LEVEL2) + dm_writepowerindex(hw, 0x10); } - rtlpriv->dm.last_dtp_lvl = rtlpriv->dm.dynamic_txhighpower_lvl; } @@ -1400,12 +1537,6 @@ else curr_bt_rssi_state &= (~BT_RSSI_STATE_SPECIAL_LOW); - /* Set Tx Power according to BT status. */ - if (undec_sm_pwdb >= 30) - curr_bt_rssi_state |= BT_RSSI_STATE_TXPOWER_LOW; - else if (undec_sm_pwdb < 25) - curr_bt_rssi_state &= (~BT_RSSI_STATE_TXPOWER_LOW); - /* Check BT state related to BT_Idle in B/G mode. */ if (undec_sm_pwdb < 15) curr_bt_rssi_state |= BT_RSSI_STATE_BG_EDCA_LOW; --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8192c/dm_common.h +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8192c/dm_common.h @@ -91,6 +91,17 @@ #define TX_POWER_NEAR_FIELD_THRESH_LVL2 74 #define TX_POWER_NEAR_FIELD_THRESH_LVL1 67 +#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 RSSI_CCK 0 +#define RSSI_OFDM 1 +#define RSSI_DEFAULT 2 + struct swat_t { u8 failure_cnt; u8 try_flag; @@ -167,5 +178,8 @@ void rtl92c_phy_iq_calibrate(struct ieee80211_hw *hw, bool recovery); void rtl92c_dm_dynamic_txpower(struct ieee80211_hw *hw); void rtl92c_dm_bt_coexist(struct ieee80211_hw *hw); +void dm_savepowerindex(struct ieee80211_hw *hw); +void dm_writepowerindex(struct ieee80211_hw *hw, u8 value); +void dm_restorepowerindex(struct ieee80211_hw *hw); #endif --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8192ce/hw.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8192ce/hw.c @@ -319,7 +319,7 @@ u8 e_aci = *(val); rtl92c_dm_init_edca_turbo(hw); - if (rtlpci->acm_method != eAcmWay2_SW) + if (rtlpci->acm_method != EACMWAY2_SW) rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_ACM_CTRL, (&e_aci)); @@ -937,14 +937,27 @@ bool is92c; int err; u8 tmp_u1b; + unsigned long flags; rtlpci->being_init_adapter = true; + + /* Since this function can take a very long time (up to 350 ms) + * and can be called with irqs disabled, reenable the irqs + * to let the other devices continue being serviced. + * + * It is safe doing so since our own interrupts will only be enabled + * in a subsequent step. + */ + local_save_flags(flags); + local_irq_enable(); + + rtlhal->fw_ready = false; rtlpriv->intf_ops->disable_aspm(hw); rtstatus = _rtl92ce_init_mac(hw); if (!rtstatus) { RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, "Init MAC failed\n"); err = 1; - return err; + goto exit; } err = rtl92c_download_fw(hw); @@ -952,9 +965,10 @@ RT_TRACE(rtlpriv, COMP_ERR, DBG_WARNING, "Failed to download FW. Init HW without FW now..\n"); err = 1; - return err; + goto exit; } + rtlhal->fw_ready = true; rtlhal->last_hmeboxnum = 0; rtl92c_phy_mac_config(hw); /* because last function modify RCR, so we update @@ -1032,6 +1046,8 @@ RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, "under 1.5V\n"); } rtl92c_dm_init(hw); +exit: + local_irq_restore(flags); rtlpci->being_init_adapter = false; return err; } @@ -1720,7 +1736,7 @@ if (rtlefuse->eeprom_did == 0x8176) { if ((rtlefuse->eeprom_svid == 0x103C && rtlefuse->eeprom_smid == 0x1629)) - rtlhal->oem_id = RT_CID_819x_HP; + rtlhal->oem_id = RT_CID_819X_HP; else rtlhal->oem_id = RT_CID_DEFAULT; } else { @@ -1731,7 +1747,7 @@ rtlhal->oem_id = RT_CID_TOSHIBA; break; case EEPROM_CID_QMI: - rtlhal->oem_id = RT_CID_819x_QMI; + rtlhal->oem_id = RT_CID_819X_QMI; break; case EEPROM_CID_WHQL: default: @@ -1750,14 +1766,14 @@ struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); switch (rtlhal->oem_id) { - case RT_CID_819x_HP: + case RT_CID_819X_HP: pcipriv->ledctl.led_opendrain = true; break; - case RT_CID_819x_Lenovo: + case RT_CID_819X_LENOVO: case RT_CID_DEFAULT: case RT_CID_TOSHIBA: case RT_CID_CCX: - case RT_CID_819x_Acer: + case RT_CID_819X_ACER: case RT_CID_WHQL: default: break; --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c @@ -136,6 +136,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-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8192ce/trx.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8192ce/trx.c @@ -393,7 +393,7 @@ /* In testing, hdr was NULL here */ return false; } - if ((ieee80211_is_robust_mgmt_frame(hdr)) && + if ((_ieee80211_is_robust_mgmt_frame(hdr)) && (ieee80211_has_protected(hdr->frame_control))) rx_status->flag &= ~RX_FLAG_DECRYPTED; else --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8192cu/dm.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8192cu/dm.c @@ -101,6 +101,15 @@ "PHY_SetTxPowerLevel8192S() Channel = %d\n", rtlphy->current_channel); rtl92c_phy_set_txpower_level(hw, rtlphy->current_channel); + if (rtlpriv->dm.dynamic_txhighpower_lvl == + TXHIGHPWRLEVEL_NORMAL) + dm_restorepowerindex(hw); + else if (rtlpriv->dm.dynamic_txhighpower_lvl == + TXHIGHPWRLEVEL_LEVEL1) + dm_writepowerindex(hw, 0x14); + else if (rtlpriv->dm.dynamic_txhighpower_lvl == + TXHIGHPWRLEVEL_LEVEL2) + dm_writepowerindex(hw, 0x10); } rtlpriv->dm.last_dtp_lvl = rtlpriv->dm.dynamic_txhighpower_lvl; --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8192cu/dm.h +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8192cu/dm.h @@ -30,3 +30,6 @@ #include "../rtl8192ce/dm.h" void rtl92cu_dm_dynamic_txpower(struct ieee80211_hw *hw); +void dm_savepowerindex(struct ieee80211_hw *hw); +void dm_writepowerindex(struct ieee80211_hw *hw, u8 value); +void dm_restorepowerindex(struct ieee80211_hw *hw); --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c @@ -394,7 +394,7 @@ if (rtlefuse->eeprom_did == 0x8176) { if ((rtlefuse->eeprom_svid == 0x103C && rtlefuse->eeprom_smid == 0x1629)) - rtlhal->oem_id = RT_CID_819x_HP; + rtlhal->oem_id = RT_CID_819X_HP; else rtlhal->oem_id = RT_CID_DEFAULT; } else { @@ -405,7 +405,7 @@ rtlhal->oem_id = RT_CID_TOSHIBA; break; case EEPROM_CID_QMI: - rtlhal->oem_id = RT_CID_819x_QMI; + rtlhal->oem_id = RT_CID_819X_QMI; break; case EEPROM_CID_WHQL: default: @@ -423,14 +423,14 @@ struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); switch (rtlhal->oem_id) { - case RT_CID_819x_HP: + case RT_CID_819X_HP: usb_priv->ledctl.led_opendrain = true; break; - case RT_CID_819x_Lenovo: + case RT_CID_819X_LENOVO: case RT_CID_DEFAULT: case RT_CID_TOSHIBA: case RT_CID_CCX: - case RT_CID_819x_Acer: + case RT_CID_819X_ACER: case RT_CID_WHQL: default: break; @@ -985,19 +985,30 @@ struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); int err = 0; static bool iqk_initialized; + unsigned long flags; + + /* As this function can take a very long time (up to 350 ms) + * and can be called with irqs disabled, reenable the irqs + * to let the other devices continue being serviced. + * + * It is safe doing so since our own interrupts will only be enabled + * in a subsequent step. + */ + local_save_flags(flags); + local_irq_enable(); rtlhal->hw_type = HARDWARE_TYPE_RTL8192CU; err = _rtl92cu_init_mac(hw); if (err) { RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, "init mac failed!\n"); - return err; + goto exit; } err = rtl92c_download_fw(hw); if (err) { RT_TRACE(rtlpriv, COMP_ERR, DBG_WARNING, "Failed to download FW. Init HW without FW now..\n"); err = 1; - return err; + goto exit; } rtlhal->last_hmeboxnum = 0; /* h2c */ _rtl92cu_phy_param_tab_init(hw); @@ -1034,6 +1045,8 @@ _InitPABias(hw); _update_mac_setting(hw); rtl92c_dm_init(hw); +exit: + local_irq_restore(flags); return err; } @@ -1795,7 +1808,7 @@ e_aci); break; } - if (rtlusb->acm_method != eAcmWay2_SW) + if (rtlusb->acm_method != EACMWAY2_SW) rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_ACM_CTRL, &e_aci); break; --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8192cu/rf.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8192cu/rf.c @@ -85,17 +85,15 @@ if (mac->act_scanning) { tx_agc[RF90_PATH_A] = 0x3f3f3f3f; tx_agc[RF90_PATH_B] = 0x3f3f3f3f; - if (turbo_scanoff) { - for (idx1 = RF90_PATH_A; idx1 <= RF90_PATH_B; idx1++) { - tx_agc[idx1] = ppowerlevel[idx1] | - (ppowerlevel[idx1] << 8) | - (ppowerlevel[idx1] << 16) | - (ppowerlevel[idx1] << 24); - if (rtlhal->interface == INTF_USB) { - if (tx_agc[idx1] > 0x20 && - rtlefuse->external_pa) - tx_agc[idx1] = 0x20; - } + for (idx1 = RF90_PATH_A; idx1 <= RF90_PATH_B; idx1++) { + tx_agc[idx1] = ppowerlevel[idx1] | + (ppowerlevel[idx1] << 8) | + (ppowerlevel[idx1] << 16) | + (ppowerlevel[idx1] << 24); + if (rtlhal->interface == INTF_USB) { + if (tx_agc[idx1] > 0x20 && + rtlefuse->external_pa) + tx_agc[idx1] = 0x20; } } } else { @@ -107,7 +105,7 @@ TXHIGHPWRLEVEL_LEVEL2) { tx_agc[RF90_PATH_A] = 0x00000000; tx_agc[RF90_PATH_B] = 0x00000000; - } else{ + } else { for (idx1 = RF90_PATH_A; idx1 <= RF90_PATH_B; idx1++) { tx_agc[idx1] = ppowerlevel[idx1] | (ppowerlevel[idx1] << 8) | @@ -373,7 +371,12 @@ regoffset == RTXAGC_B_MCS07_MCS04) regoffset = 0xc98; for (i = 0; i < 3; i++) { - writeVal = (writeVal > 6) ? (writeVal - 6) : 0; + if (i != 2) + writeVal = (writeVal > 8) ? + (writeVal - 8) : 0; + else + writeVal = (writeVal > 6) ? + (writeVal - 6) : 0; rtl_write_byte(rtlpriv, (u32)(regoffset + i), (u8)writeVal); } --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c @@ -50,6 +50,9 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Realtek 8192C/8188C 802.11n USB wireless"); MODULE_FIRMWARE("rtlwifi/rtl8192cufw.bin"); +MODULE_FIRMWARE("rtlwifi/rtl8192cufw_A.bin"); +MODULE_FIRMWARE("rtlwifi/rtl8192cufw_B.bin"); +MODULE_FIRMWARE("rtlwifi/rtl8192cufw_TMSC.bin"); static int rtl92cu_init_sw_vars(struct ieee80211_hw *hw) { @@ -61,6 +64,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); @@ -69,14 +74,21 @@ "Can't alloc buffer for fw\n"); return 1; } - + if (IS_VENDOR_UMC_A_CUT(rtlpriv->rtlhal.version) && + !IS_92C_SERIAL(rtlpriv->rtlhal.version)) { + rtlpriv->cfg->fw_name = "rtlwifi/rtl8192cufw_A.bin"; + } else if (IS_81xxC_VENDOR_UMC_B_CUT(rtlpriv->rtlhal.version)) { + rtlpriv->cfg->fw_name = "rtlwifi/rtl8192cufw_B.bin"; + } else { + rtlpriv->cfg->fw_name = "rtlwifi/rtl8192cufw_TMSC.bin"; + } + /* provide name of alternative file */ + rtlpriv->cfg->alt_fw_name = "rtlwifi/rtl8192cufw.bin"; pr_info("Loading firmware %s\n", rtlpriv->cfg->fw_name); rtlpriv->max_fw_size = 0x4000; err = request_firmware_nowait(THIS_MODULE, 1, rtlpriv->cfg->fw_name, rtlpriv->io.dev, GFP_KERNEL, hw, rtl_fw_cb); - - return err; } @@ -304,9 +316,13 @@ {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*/ {RTL_USB_DEVICE(0x0df6, 0x005c, rtl92cu_hal_cfg)}, /*Sitecom - Edimax*/ + {RTL_USB_DEVICE(0x0df6, 0x0070, rtl92cu_hal_cfg)}, /*Sitecom - 150N */ + {RTL_USB_DEVICE(0x0df6, 0x0077, rtl92cu_hal_cfg)}, /*Sitecom-WLA2100V2*/ {RTL_USB_DEVICE(0x0eb0, 0x9071, rtl92cu_hal_cfg)}, /*NO Brand - Etop*/ {RTL_USB_DEVICE(0x4856, 0x0091, rtl92cu_hal_cfg)}, /*NetweeN - Feixun*/ /* HP - Lite-On ,8188CUS Slim Combo */ @@ -358,6 +374,7 @@ {RTL_USB_DEVICE(0x2001, 0x3307, rtl92cu_hal_cfg)}, /*D-Link-Cameo*/ {RTL_USB_DEVICE(0x2001, 0x3309, rtl92cu_hal_cfg)}, /*D-Link-Alpha*/ {RTL_USB_DEVICE(0x2001, 0x330a, rtl92cu_hal_cfg)}, /*D-Link-Alpha*/ + {RTL_USB_DEVICE(0x2001, 0x330d, rtl92cu_hal_cfg)}, /*D-Link DWA-131 */ {RTL_USB_DEVICE(0x2019, 0xab2b, rtl92cu_hal_cfg)}, /*Planex -Abocom*/ {RTL_USB_DEVICE(0x20f4, 0x624d, rtl92cu_hal_cfg)}, /*TRENDNet*/ {RTL_USB_DEVICE(0x2357, 0x0100, rtl92cu_hal_cfg)}, /*TP-Link WN8200ND*/ --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8192de/hw.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8192de/hw.c @@ -318,7 +318,7 @@ case HW_VAR_AC_PARAM: { u8 e_aci = *val; rtl92d_dm_init_edca_turbo(hw); - if (rtlpci->acm_method != eAcmWay2_SW) + if (rtlpci->acm_method != EACMWAY2_SW) rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_ACM_CTRL, &e_aci); break; --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8192de/sw.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8192de/sw.c @@ -375,8 +375,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-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8192se/hw.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8192se/hw.c @@ -251,7 +251,7 @@ u8 e_aci = *val; rtl92s_dm_init_edca_turbo(hw); - if (rtlpci->acm_method != eAcmWay2_SW) + if (rtlpci->acm_method != EACMWAY2_SW) rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_ACM_CTRL, &e_aci); @@ -955,7 +955,7 @@ struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); u8 tmp_byte = 0; - + unsigned long flags; bool rtstatus = true; u8 tmp_u1b; int err = false; @@ -967,6 +967,16 @@ rtlpci->being_init_adapter = true; + /* As this function can take a very long time (up to 350 ms) + * and can be called with irqs disabled, reenable the irqs + * to let the other devices continue being serviced. + * + * It is safe doing so since our own interrupts will only be enabled + * in a subsequent step. + */ + local_save_flags(flags); + local_irq_enable(); + rtlpriv->intf_ops->disable_aspm(hw); /* 1. MAC Initialize */ @@ -984,7 +994,8 @@ RT_TRACE(rtlpriv, COMP_ERR, DBG_WARNING, "Failed to download FW. Init HW without FW now... " "Please copy FW into /lib/firmware/rtlwifi\n"); - return 1; + err = 1; + goto exit; } /* After FW download, we have to reset MAC register */ @@ -997,7 +1008,8 @@ /* 3. Initialize MAC/PHY Config by MACPHY_reg.txt */ if (!rtl92s_phy_mac_config(hw)) { RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, "MAC Config failed\n"); - return rtstatus; + err = rtstatus; + goto exit; } /* because last function modify RCR, so we update @@ -1016,7 +1028,8 @@ /* 4. Initialize BB After MAC Config PHY_reg.txt, AGC_Tab.txt */ if (!rtl92s_phy_bb_config(hw)) { RT_TRACE(rtlpriv, COMP_INIT, DBG_EMERG, "BB Config failed\n"); - return rtstatus; + err = rtstatus; + goto exit; } /* 5. Initiailze RF RAIO_A.txt RF RAIO_B.txt */ @@ -1033,7 +1046,8 @@ if (!rtl92s_phy_rf_config(hw)) { RT_TRACE(rtlpriv, COMP_INIT, DBG_DMESG, "RF Config failed\n"); - return rtstatus; + err = rtstatus; + goto exit; } /* After read predefined TXT, we must set BB/MAC/RF @@ -1122,8 +1136,9 @@ rtlpriv->cfg->ops->led_control(hw, LED_CTL_POWER_ON); rtl92s_dm_init(hw); +exit: + local_irq_restore(flags); rtlpci->being_init_adapter = false; - return err; } --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8192se/sw.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8192se/sw.c @@ -204,6 +204,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) @@ -426,8 +428,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-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8192se/trx.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8192se/trx.c @@ -49,6 +49,12 @@ if (ieee80211_is_nullfunc(fc)) return QSLT_HIGH; + /* Kernel commit 1bf4bbb4024dcdab changed EAPOL packets to use + * queue V0 at priority 7; however, the RTL8192SE appears to have + * that queue at priority 6 + */ + if (skb->priority == 7) + return QSLT_VO; return skb->priority; } @@ -310,7 +316,7 @@ /* during testing, hdr was NULL here */ return false; } - if ((ieee80211_is_robust_mgmt_frame(hdr)) && + if ((_ieee80211_is_robust_mgmt_frame(hdr)) && (ieee80211_has_protected(hdr->frame_control))) rx_status->flag &= ~RX_FLAG_DECRYPTED; else --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723ae/def.h +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723ae/def.h @@ -46,11 +46,6 @@ #define E_CUT_VERSION BIT(14) #define RF_RL_ID (BIT(31)|BIT(30)|BIT(29)|BIT(28)) -enum version_8723e { - VERSION_TEST_UMC_CHIP_8723 = 0x0081, - VERSION_NORMAL_UMC_CHIP_8723_1T1R_A_CUT = 0x0089, - VERSION_NORMAL_UMC_CHIP_8723_1T1R_B_CUT = 0x1089, -}; /* MASK */ #define IC_TYPE_MASK (BIT(0)|BIT(1)|BIT(2)) --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723ae/dm.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723ae/dm.c @@ -35,6 +35,7 @@ #include "def.h" #include "phy.h" #include "dm.h" +#include "../rtl8723com/dm_common.h" #include "fw.h" #include "hal_btc.h" @@ -483,16 +484,6 @@ rtl8723ae_dm_ctrl_initgain_by_twoport(hw); } -static void rtl8723ae_dm_init_dynamic_txpower(struct ieee80211_hw *hw) -{ - struct rtl_priv *rtlpriv = rtl_priv(hw); - - rtlpriv->dm.dynamic_txpower_enable = false; - - rtlpriv->dm.last_dtp_lvl = TXHIGHPWRLEVEL_NORMAL; - rtlpriv->dm.dynamic_txhighpower_lvl = TXHIGHPWRLEVEL_NORMAL; -} - static void rtl8723ae_dm_dynamic_txpower(struct ieee80211_hw *hw) { struct rtl_priv *rtlpriv = rtl_priv(hw); @@ -585,19 +576,6 @@ } } -static void rtl8723ae_dm_pwdmonitor(struct ieee80211_hw *hw) -{ -} - -void rtl8723ae_dm_init_edca_turbo(struct ieee80211_hw *hw) -{ - struct rtl_priv *rtlpriv = rtl_priv(hw); - - rtlpriv->dm.current_turbo_edca = false; - rtlpriv->dm.is_any_nonbepkts = false; - rtlpriv->dm.is_cur_rdlstate = false; -} - static void rtl8723ae_dm_check_edca_turbo(struct ieee80211_hw *hw) { struct rtl_priv *rtlpriv = rtl_priv(hw); @@ -778,17 +756,6 @@ } } -static void rtl8723ae_dm_init_dynamic_bpowersaving(struct ieee80211_hw *hw) -{ - struct rtl_priv *rtlpriv = rtl_priv(hw); - - rtlpriv->dm_pstable.pre_ccastate = CCA_MAX; - rtlpriv->dm_pstable.cur_ccasate = CCA_MAX; - rtlpriv->dm_pstable.pre_rfstate = RF_MAX; - rtlpriv->dm_pstable.cur_rfstate = RF_MAX; - rtlpriv->dm_pstable.rssi_val_min = 0; -} - void rtl8723ae_dm_rf_saving(struct ieee80211_hw *hw, u8 force_in_normal) { struct rtl_priv *rtlpriv = rtl_priv(hw); @@ -905,11 +872,11 @@ rtlpriv->dm.dm_type = DM_TYPE_BYDRIVER; rtl8723ae_dm_diginit(hw); - rtl8723ae_dm_init_dynamic_txpower(hw); - rtl8723ae_dm_init_edca_turbo(hw); + rtl8723_dm_init_dynamic_txpower(hw); + rtl8723_dm_init_edca_turbo(hw); rtl8723ae_dm_init_rate_adaptive_mask(hw); rtl8723ae_dm_initialize_txpower_tracking(hw); - rtl8723ae_dm_init_dynamic_bpowersaving(hw); + rtl8723_dm_init_dynamic_bb_powersaving(hw); } void rtl8723ae_dm_watchdog(struct ieee80211_hw *hw) @@ -930,7 +897,6 @@ if ((ppsc->rfpwr_state == ERFON) && ((!fw_current_inpsmode) && fw_ps_awake) && (!ppsc->rfchange_inprogress)) { - rtl8723ae_dm_pwdmonitor(hw); rtl8723ae_dm_dig(hw); rtl8723ae_dm_false_alarm_counter_statistics(hw); rtl8723ae_dm_dynamic_bpowersaving(hw); --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723ae/dm.h +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723ae/dm.h @@ -147,7 +147,6 @@ void rtl8723ae_dm_init(struct ieee80211_hw *hw); void rtl8723ae_dm_watchdog(struct ieee80211_hw *hw); void rtl8723ae_dm_write_dig(struct ieee80211_hw *hw); -void rtl8723ae_dm_init_edca_turbo(struct ieee80211_hw *hw); void rtl8723ae_dm_init_rate_adaptive_mask(struct ieee80211_hw *hw); void rtl8723ae_dm_rf_saving(struct ieee80211_hw *hw, u8 bforce_in_normal); void rtl8723ae_dm_bt_coexist(struct ieee80211_hw *hw); --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723ae/fw.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723ae/fw.c @@ -34,199 +34,7 @@ #include "reg.h" #include "def.h" #include "fw.h" - -static void _rtl8723ae_enable_fw_download(struct ieee80211_hw *hw, bool enable) -{ - struct rtl_priv *rtlpriv = rtl_priv(hw); - u8 tmp; - if (enable) { - tmp = rtl_read_byte(rtlpriv, REG_SYS_FUNC_EN + 1); - rtl_write_byte(rtlpriv, REG_SYS_FUNC_EN + 1, tmp | 0x04); - - tmp = rtl_read_byte(rtlpriv, REG_MCUFWDL); - rtl_write_byte(rtlpriv, REG_MCUFWDL, tmp | 0x01); - - tmp = rtl_read_byte(rtlpriv, REG_MCUFWDL + 2); - rtl_write_byte(rtlpriv, REG_MCUFWDL + 2, tmp & 0xf7); - } else { - tmp = rtl_read_byte(rtlpriv, REG_MCUFWDL); - rtl_write_byte(rtlpriv, REG_MCUFWDL, tmp & 0xfe); - - rtl_write_byte(rtlpriv, REG_MCUFWDL + 1, 0x00); - } -} - -static void _rtl8723ae_fw_block_write(struct ieee80211_hw *hw, - const u8 *buffer, u32 size) -{ - struct rtl_priv *rtlpriv = rtl_priv(hw); - u32 blockSize = sizeof(u32); - u8 *bufferPtr = (u8 *) buffer; - u32 *pu4BytePtr = (u32 *) buffer; - u32 i, offset, blockCount, remainSize; - - blockCount = size / blockSize; - remainSize = size % blockSize; - - for (i = 0; i < blockCount; i++) { - offset = i * blockSize; - rtl_write_dword(rtlpriv, (FW_8192C_START_ADDRESS + offset), - *(pu4BytePtr + i)); - } - - if (remainSize) { - offset = blockCount * blockSize; - bufferPtr += offset; - for (i = 0; i < remainSize; i++) { - rtl_write_byte(rtlpriv, (FW_8192C_START_ADDRESS + - offset + i), *(bufferPtr + i)); - } - } -} - -static void _rtl8723ae_fw_page_write(struct ieee80211_hw *hw, - u32 page, const u8 *buffer, u32 size) -{ - struct rtl_priv *rtlpriv = rtl_priv(hw); - u8 value8; - u8 u8page = (u8) (page & 0x07); - - value8 = (rtl_read_byte(rtlpriv, REG_MCUFWDL + 2) & 0xF8) | u8page; - - rtl_write_byte(rtlpriv, (REG_MCUFWDL + 2), value8); - _rtl8723ae_fw_block_write(hw, buffer, size); -} - -static void _rtl8723ae_write_fw(struct ieee80211_hw *hw, - enum version_8723e version, u8 *buffer, - u32 size) -{ - struct rtl_priv *rtlpriv = rtl_priv(hw); - u8 *bufferPtr = (u8 *) buffer; - u32 page_nums, remain_size; - u32 page, offset; - - RT_TRACE(rtlpriv, COMP_FW, DBG_TRACE, "FW size is %d bytes,\n", size); - - page_nums = size / FW_8192C_PAGE_SIZE; - remain_size = size % FW_8192C_PAGE_SIZE; - - if (page_nums > 6) { - RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, - "Page numbers should not be greater then 6\n"); - } - - for (page = 0; page < page_nums; page++) { - offset = page * FW_8192C_PAGE_SIZE; - _rtl8723ae_fw_page_write(hw, page, (bufferPtr + offset), - FW_8192C_PAGE_SIZE); - } - - if (remain_size) { - offset = page_nums * FW_8192C_PAGE_SIZE; - page = page_nums; - _rtl8723ae_fw_page_write(hw, page, (bufferPtr + offset), - remain_size); - } - - RT_TRACE(rtlpriv, COMP_FW, DBG_TRACE, "FW write done.\n"); -} - -static int _rtl8723ae_fw_free_to_go(struct ieee80211_hw *hw) -{ - struct rtl_priv *rtlpriv = rtl_priv(hw); - int err = -EIO; - u32 counter = 0; - u32 value32; - - do { - value32 = rtl_read_dword(rtlpriv, REG_MCUFWDL); - } while ((counter++ < FW_8192C_POLLING_TIMEOUT_COUNT) && - (!(value32 & FWDL_ChkSum_rpt))); - - if (counter >= FW_8192C_POLLING_TIMEOUT_COUNT) { - RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, - "chksum report faill ! REG_MCUFWDL:0x%08x .\n", - value32); - goto exit; - } - - RT_TRACE(rtlpriv, COMP_FW, DBG_TRACE, - "Checksum report OK ! REG_MCUFWDL:0x%08x .\n", value32); - - value32 = rtl_read_dword(rtlpriv, REG_MCUFWDL); - value32 |= MCUFWDL_RDY; - value32 &= ~WINTINI_RDY; - rtl_write_dword(rtlpriv, REG_MCUFWDL, value32); - - counter = 0; - - do { - value32 = rtl_read_dword(rtlpriv, REG_MCUFWDL); - if (value32 & WINTINI_RDY) { - RT_TRACE(rtlpriv, COMP_FW, DBG_TRACE, - "Polling FW ready success!! REG_MCUFWDL:0x%08x .\n", - value32); - err = 0; - goto exit; - } - - mdelay(FW_8192C_POLLING_DELAY); - - } while (counter++ < FW_8192C_POLLING_TIMEOUT_COUNT); - - RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, - "Polling FW ready fail!! REG_MCUFWDL:0x%08x .\n", value32); - -exit: - return err; -} - -int rtl8723ae_download_fw(struct ieee80211_hw *hw) -{ - struct rtl_priv *rtlpriv = rtl_priv(hw); - struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); - struct rtl8723ae_firmware_header *pfwheader; - u8 *pfwdata; - u32 fwsize; - int err; - enum version_8723e version = rtlhal->version; - - if (!rtlhal->pfirmware) - return 1; - - pfwheader = (struct rtl8723ae_firmware_header *)rtlhal->pfirmware; - pfwdata = (u8 *) rtlhal->pfirmware; - fwsize = rtlhal->fwsize; - - if (IS_FW_HEADER_EXIST(pfwheader)) { - RT_TRACE(rtlpriv, COMP_FW, DBG_DMESG, - "Firmware Version(%d), Signature(%#x),Size(%d)\n", - pfwheader->version, pfwheader->signature, - (int)sizeof(struct rtl8723ae_firmware_header)); - - pfwdata = pfwdata + sizeof(struct rtl8723ae_firmware_header); - fwsize = fwsize - sizeof(struct rtl8723ae_firmware_header); - } - - if (rtl_read_byte(rtlpriv, REG_MCUFWDL)&BIT(7)) { - rtl8723ae_firmware_selfreset(hw); - rtl_write_byte(rtlpriv, REG_MCUFWDL, 0x00); - } - _rtl8723ae_enable_fw_download(hw, true); - _rtl8723ae_write_fw(hw, version, pfwdata, fwsize); - _rtl8723ae_enable_fw_download(hw, false); - - err = _rtl8723ae_fw_free_to_go(hw); - if (err) { - RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, - "Firmware is not ready to run!\n"); - } else { - RT_TRACE(rtlpriv, COMP_FW, DBG_TRACE, - "Firmware is ready to run!\n"); - } - return 0; -} +#include "../rtl8723com/fw_common.h" static bool rtl8723ae_check_fw_read_last_h2c(struct ieee80211_hw *hw, u8 boxnum) { @@ -463,50 +271,6 @@ return; } -void rtl8723ae_firmware_selfreset(struct ieee80211_hw *hw) -{ - u8 u1tmp; - u8 delay = 100; - struct rtl_priv *rtlpriv = rtl_priv(hw); - - rtl_write_byte(rtlpriv, REG_HMETFR + 3, 0x20); - u1tmp = rtl_read_byte(rtlpriv, REG_SYS_FUNC_EN + 1); - - while (u1tmp & BIT(2)) { - delay--; - if (delay == 0) - break; - udelay(50); - u1tmp = rtl_read_byte(rtlpriv, REG_SYS_FUNC_EN + 1); - } - if (delay == 0) { - u1tmp = rtl_read_byte(rtlpriv, REG_SYS_FUNC_EN + 1); - rtl_write_byte(rtlpriv, REG_SYS_FUNC_EN + 1, u1tmp&(~BIT(2))); - } -} - -void rtl8723ae_set_fw_pwrmode_cmd(struct ieee80211_hw *hw, u8 mode) -{ - struct rtl_priv *rtlpriv = rtl_priv(hw); - u8 u1_h2c_set_pwrmode[3] = { 0 }; - struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); - - RT_TRACE(rtlpriv, COMP_POWER, DBG_LOUD, "FW LPS mode = %d\n", mode); - - SET_H2CCMD_PWRMODE_PARM_MODE(u1_h2c_set_pwrmode, mode); - SET_H2CCMD_PWRMODE_PARM_SMART_PS(u1_h2c_set_pwrmode, - (rtlpriv->mac80211.p2p) ? - ppsc->smart_ps : 1); - SET_H2CCMD_PWRMODE_PARM_BCN_PASS_TIME(u1_h2c_set_pwrmode, - ppsc->reg_max_lps_awakeintvl); - - RT_PRINT_DATA(rtlpriv, COMP_CMD, DBG_DMESG, - "rtl8723ae_set_fw_rsvdpagepkt(): u1_h2c_set_pwrmode\n", - u1_h2c_set_pwrmode, 3); - rtl8723ae_fill_h2c_cmd(hw, H2C_SETPWRMODE, 3, u1_h2c_set_pwrmode); - -} - static bool _rtl8723ae_cmd_send_packet(struct ieee80211_hw *hw, struct sk_buff *skb) { @@ -812,7 +576,6 @@ rtl_write_byte(rtlpriv, REG_DUAL_TSF_RST, BIT(4)); p2p_ps_offload->offload_en = 1; - if (P2P_ROLE_GO == rtlpriv->mac80211.p2p) { p2p_ps_offload->role = 1; p2p_ps_offload->allstasleep = 0; @@ -836,3 +599,24 @@ } rtl8723ae_fill_h2c_cmd(hw, H2C_P2P_PS_OFFLOAD, 1, (u8 *)p2p_ps_offload); } + +void rtl8723ae_set_fw_pwrmode_cmd(struct ieee80211_hw *hw, u8 mode) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 u1_h2c_set_pwrmode[3] = { 0 }; + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + + RT_TRACE(rtlpriv, COMP_POWER, DBG_LOUD, "FW LPS mode = %d\n", mode); + + SET_H2CCMD_PWRMODE_PARM_MODE(u1_h2c_set_pwrmode, mode); + SET_H2CCMD_PWRMODE_PARM_SMART_PS_23A(u1_h2c_set_pwrmode, + (rtlpriv->mac80211.p2p) ? + ppsc->smart_ps : 1); + SET_H2CCMD_PWRMODE_PARM_BCN_PASS_TIME(u1_h2c_set_pwrmode, + ppsc->reg_max_lps_awakeintvl); + + RT_PRINT_DATA(rtlpriv, COMP_CMD, DBG_DMESG, + "rtl8723ae_set_fw_rsvdpagepkt(): u1_h2c_set_pwrmode\n", + u1_h2c_set_pwrmode, 3); + rtl8723ae_fill_h2c_cmd(hw, H2C_SETPWRMODE, 3, u1_h2c_set_pwrmode); +} --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723ae/fw.h +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723ae/fw.h @@ -34,7 +34,7 @@ #define FW_8192C_END_ADDRESS 0x3FFF #define FW_8192C_PAGE_SIZE 4096 #define FW_8192C_POLLING_DELAY 5 -#define FW_8192C_POLLING_TIMEOUT_COUNT 1000 +#define FW_8192C_POLLING_TIMEOUT_COUNT 6000 #define BEACON_PG 0 #define PSPOLL_PG 2 @@ -65,21 +65,9 @@ u32 rsvd5; }; -enum rtl8192c_h2c_cmd { - H2C_AP_OFFLOAD = 0, - H2C_SETPWRMODE = 1, - H2C_JOINBSSRPT = 2, - H2C_RSVDPAGE = 3, - H2C_RSSI_REPORT = 4, - H2C_P2P_PS_CTW_CMD = 5, - H2C_P2P_PS_OFFLOAD = 6, - H2C_RA_MASK = 7, - MAX_H2CCMD -}; - #define SET_H2CCMD_PWRMODE_PARM_MODE(__ph2ccmd, __val) \ SET_BITS_TO_LE_1BYTE(__ph2ccmd, 0, 8, __val) -#define SET_H2CCMD_PWRMODE_PARM_SMART_PS(__ph2ccmd, __val) \ +#define SET_H2CCMD_PWRMODE_PARM_SMART_PS_23A(__ph2ccmd, __val) \ SET_BITS_TO_LE_1BYTE((__ph2ccmd)+1, 0, 8, __val) #define SET_H2CCMD_PWRMODE_PARM_BCN_PASS_TIME(__ph2ccmd, __val) \ SET_BITS_TO_LE_1BYTE((__ph2ccmd)+2, 0, 8, __val) @@ -92,10 +80,8 @@ #define SET_H2CCMD_RSVDPAGE_LOC_NULL_DATA(__ph2ccmd, __val) \ SET_BITS_TO_LE_1BYTE((__ph2ccmd)+2, 0, 8, __val) -int rtl8723ae_download_fw(struct ieee80211_hw *hw); void rtl8723ae_fill_h2c_cmd(struct ieee80211_hw *hw, u8 element_id, u32 cmd_len, u8 *p_cmdbuffer); -void rtl8723ae_firmware_selfreset(struct ieee80211_hw *hw); void rtl8723ae_set_fw_pwrmode_cmd(struct ieee80211_hw *hw, u8 mode); void rtl8723ae_set_fw_rsvdpagepkt(struct ieee80211_hw *hw, bool b_dl_finished); void rtl8723ae_set_fw_joinbss_report_cmd(struct ieee80211_hw *hw, u8 mstatus); --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723ae/hal_bt_coexist.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723ae/hal_bt_coexist.c @@ -31,6 +31,8 @@ #include "../pci.h" #include "dm.h" #include "fw.h" +#include "../rtl8723com/fw_common.h" +#include "../rtl8723com/fw_common.h" #include "phy.h" #include "reg.h" #include "hal_btc.h" --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723ae/hal_btc.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723ae/hal_btc.c @@ -30,7 +30,9 @@ #include "hal_btc.h" #include "../pci.h" #include "phy.h" +#include "../rtl8723com/phy_common.h" #include "fw.h" +#include "../rtl8723com/fw_common.h" #include "reg.h" #include "def.h" @@ -391,13 +393,13 @@ if (sw_dac_swing_on) { RT_TRACE(rtlpriv, COMP_BT_COEXIST, DBG_TRACE, "[BTCoex], SwDacSwing = 0x%x\n", sw_dac_swing_lvl); - rtl8723ae_phy_set_bb_reg(hw, 0x880, 0xff000000, - sw_dac_swing_lvl); + rtl8723_phy_set_bb_reg(hw, 0x880, 0xff000000, + sw_dac_swing_lvl); rtlpcipriv->bt_coexist.sw_coexist_all_off = false; } else { RT_TRACE(rtlpriv, COMP_BT_COEXIST, DBG_TRACE, "[BTCoex], SwDacSwing Off!\n"); - rtl8723ae_phy_set_bb_reg(hw, 0x880, 0xff000000, 0xc0); + rtl8723_phy_set_bb_reg(hw, 0x880, 0xff000000, 0xc0); } } --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723ae/hw.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723ae/hw.c @@ -38,7 +38,9 @@ #include "def.h" #include "phy.h" #include "dm.h" +#include "../rtl8723com/dm_common.h" #include "fw.h" +#include "../rtl8723com/fw_common.h" #include "led.h" #include "hw.h" #include "pwrseqcmd.h" @@ -304,9 +306,9 @@ break; } case HW_VAR_AC_PARAM:{ u8 e_aci = *((u8 *) val); - rtl8723ae_dm_init_edca_turbo(hw); + rtl8723_dm_init_edca_turbo(hw); - if (rtlpci->acm_method != eAcmWay2_SW) + if (rtlpci->acm_method != EACMWAY2_SW) rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_ACM_CTRL, (u8 *) (&e_aci)); @@ -880,23 +882,33 @@ bool rtstatus = true; int err; u8 tmp_u1b; + unsigned long flags; rtlpriv->rtlhal.being_init_adapter = true; + /* As this function can take a very long time (up to 350 ms) + * and can be called with irqs disabled, reenable the irqs + * to let the other devices continue being serviced. + * + * It is safe doing so since our own interrupts will only be enabled + * in a subsequent step. + */ + local_save_flags(flags); + local_irq_enable(); + rtlpriv->intf_ops->disable_aspm(hw); rtstatus = _rtl8712e_init_mac(hw); if (rtstatus != true) { RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, "Init MAC failed\n"); err = 1; - return err; + goto exit; } - err = rtl8723ae_download_fw(hw); + err = rtl8723_download_fw(hw, false); if (err) { RT_TRACE(rtlpriv, COMP_ERR, DBG_WARNING, "Failed to download FW. Init HW without FW now..\n"); err = 1; - rtlhal->fw_ready = false; - return err; + goto exit; } else { rtlhal->fw_ready = true; } @@ -971,6 +983,8 @@ RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, "under 1.5V\n"); } rtl8723ae_dm_init(hw); +exit: + local_irq_restore(flags); rtlpriv->rtlhal.being_init_adapter = false; return err; } @@ -1153,7 +1167,7 @@ { struct rtl_priv *rtlpriv = rtl_priv(hw); - rtl8723ae_dm_init_edca_turbo(hw); + rtl8723_dm_init_edca_turbo(hw); switch (aci) { case AC1_BK: rtl_write_dword(rtlpriv, REG_EDCA_BK_PARAM, 0xa44f); @@ -1655,7 +1669,7 @@ CHK_SVID_SMID(0x10EC, 0x9185)) rtlhal->oem_id = RT_CID_TOSHIBA; else if (rtlefuse->eeprom_svid == 0x1025) - rtlhal->oem_id = RT_CID_819x_Acer; + rtlhal->oem_id = RT_CID_819X_ACER; else if (CHK_SVID_SMID(0x10EC, 0x6191) || CHK_SVID_SMID(0x10EC, 0x6192) || CHK_SVID_SMID(0x10EC, 0x6193) || @@ -1665,7 +1679,7 @@ CHK_SVID_SMID(0x10EC, 0x8191) || CHK_SVID_SMID(0x10EC, 0x8192) || CHK_SVID_SMID(0x10EC, 0x8193)) - rtlhal->oem_id = RT_CID_819x_SAMSUNG; + rtlhal->oem_id = RT_CID_819X_SAMSUNG; else if (CHK_SVID_SMID(0x10EC, 0x8195) || CHK_SVID_SMID(0x10EC, 0x9195) || CHK_SVID_SMID(0x10EC, 0x7194) || @@ -1673,24 +1687,24 @@ CHK_SVID_SMID(0x10EC, 0x8201) || CHK_SVID_SMID(0x10EC, 0x8202) || CHK_SVID_SMID(0x10EC, 0x9200)) - rtlhal->oem_id = RT_CID_819x_Lenovo; + rtlhal->oem_id = RT_CID_819X_LENOVO; else if (CHK_SVID_SMID(0x10EC, 0x8197) || CHK_SVID_SMID(0x10EC, 0x9196)) - rtlhal->oem_id = RT_CID_819x_CLEVO; + rtlhal->oem_id = RT_CID_819X_CLEVO; else if (CHK_SVID_SMID(0x1028, 0x8194) || CHK_SVID_SMID(0x1028, 0x8198) || CHK_SVID_SMID(0x1028, 0x9197) || CHK_SVID_SMID(0x1028, 0x9198)) - rtlhal->oem_id = RT_CID_819x_DELL; + rtlhal->oem_id = RT_CID_819X_DELL; else if (CHK_SVID_SMID(0x103C, 0x1629)) - rtlhal->oem_id = RT_CID_819x_HP; + rtlhal->oem_id = RT_CID_819X_HP; else if (CHK_SVID_SMID(0x1A32, 0x2315)) - rtlhal->oem_id = RT_CID_819x_QMI; + rtlhal->oem_id = RT_CID_819X_QMI; else if (CHK_SVID_SMID(0x10EC, 0x8203)) - rtlhal->oem_id = RT_CID_819x_PRONETS; + rtlhal->oem_id = RT_CID_819X_PRONETS; else if (CHK_SVID_SMID(0x1043, 0x84B5)) rtlhal->oem_id = - RT_CID_819x_Edimax_ASUS; + RT_CID_819X_EDIMAX_ASUS; else rtlhal->oem_id = RT_CID_DEFAULT; } else if (rtlefuse->eeprom_did == 0x8178) { @@ -1712,12 +1726,12 @@ CHK_SVID_SMID(0x10EC, 0x9185)) rtlhal->oem_id = RT_CID_TOSHIBA; else if (rtlefuse->eeprom_svid == 0x1025) - rtlhal->oem_id = RT_CID_819x_Acer; + rtlhal->oem_id = RT_CID_819X_ACER; else if (CHK_SVID_SMID(0x10EC, 0x8186)) - rtlhal->oem_id = RT_CID_819x_PRONETS; + rtlhal->oem_id = RT_CID_819X_PRONETS; else if (CHK_SVID_SMID(0x1043, 0x8486)) rtlhal->oem_id = - RT_CID_819x_Edimax_ASUS; + RT_CID_819X_EDIMAX_ASUS; else rtlhal->oem_id = RT_CID_DEFAULT; } else { @@ -1731,7 +1745,7 @@ rtlhal->oem_id = RT_CID_CCX; break; case EEPROM_CID_QMI: - rtlhal->oem_id = RT_CID_819x_QMI; + rtlhal->oem_id = RT_CID_819X_QMI; break; case EEPROM_CID_WHQL: break; --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723ae/phy.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723ae/phy.c @@ -36,6 +36,7 @@ #include "rf.h" #include "dm.h" #include "table.h" +#include "../rtl8723com/phy_common.h" /* static forward definitions */ static u32 _phy_fw_rf_serial_read(struct ieee80211_hw *hw, @@ -43,72 +44,17 @@ static void _phy_fw_rf_serial_write(struct ieee80211_hw *hw, enum radio_path rfpath, u32 offset, u32 data); -static u32 _phy_rf_serial_read(struct ieee80211_hw *hw, - enum radio_path rfpath, u32 offset); -static void _phy_rf_serial_write(struct ieee80211_hw *hw, - enum radio_path rfpath, u32 offset, u32 data); -static u32 _phy_calculate_bit_shift(u32 bitmask); static bool _phy_bb8192c_config_parafile(struct ieee80211_hw *hw); static bool _phy_cfg_mac_w_header(struct ieee80211_hw *hw); static bool _phy_cfg_bb_w_header(struct ieee80211_hw *hw, u8 configtype); static bool _phy_cfg_bb_w_pgheader(struct ieee80211_hw *hw, u8 configtype); -static void _phy_init_bb_rf_reg_def(struct ieee80211_hw *hw); -static bool _phy_set_sw_chnl_cmdarray(struct swchnlcmd *cmdtable, - u32 cmdtableidx, u32 cmdtablesz, - enum swchnlcmd_id cmdid, - u32 para1, u32 para2, - u32 msdelay); static bool _phy_sw_chnl_step_by_step(struct ieee80211_hw *hw, u8 channel, u8 *stage, u8 *step, u32 *delay); static u8 _phy_dbm_to_txpwr_Idx(struct ieee80211_hw *hw, enum wireless_mode wirelessmode, long power_indbm); -static long _phy_txpwr_idx_to_dbm(struct ieee80211_hw *hw, - enum wireless_mode wirelessmode, u8 txpwridx); static void rtl8723ae_phy_set_io(struct ieee80211_hw *hw); -u32 rtl8723ae_phy_query_bb_reg(struct ieee80211_hw *hw, u32 regaddr, - u32 bitmask) -{ - struct rtl_priv *rtlpriv = rtl_priv(hw); - u32 returnvalue, originalvalue, bitshift; - - RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE, - "regaddr(%#x), bitmask(%#x)\n", regaddr, bitmask); - originalvalue = rtl_read_dword(rtlpriv, regaddr); - bitshift = _phy_calculate_bit_shift(bitmask); - returnvalue = (originalvalue & bitmask) >> bitshift; - - RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE, - "BBR MASK=0x%x Addr[0x%x]=0x%x\n", bitmask, regaddr, - originalvalue); - - return returnvalue; -} - -void rtl8723ae_phy_set_bb_reg(struct ieee80211_hw *hw, - u32 regaddr, u32 bitmask, u32 data) -{ - struct rtl_priv *rtlpriv = rtl_priv(hw); - u32 originalvalue, bitshift; - - RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE, - "regaddr(%#x), bitmask(%#x), data(%#x)\n", regaddr, - bitmask, data); - - if (bitmask != MASKDWORD) { - originalvalue = rtl_read_dword(rtlpriv, regaddr); - bitshift = _phy_calculate_bit_shift(bitmask); - data = ((originalvalue & (~bitmask)) | (data << bitshift)); - } - - rtl_write_dword(rtlpriv, regaddr, data); - - RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE, - "regaddr(%#x), bitmask(%#x), data(%#x)\n", - regaddr, bitmask, data); -} - u32 rtl8723ae_phy_query_rf_reg(struct ieee80211_hw *hw, enum radio_path rfpath, u32 regaddr, u32 bitmask) { @@ -124,11 +70,11 @@ spin_lock_irqsave(&rtlpriv->locks.rf_lock, flags); if (rtlphy->rf_mode != RF_OP_BY_FW) - original_value = _phy_rf_serial_read(hw, rfpath, regaddr); + original_value = rtl8723_phy_rf_serial_read(hw, rfpath, regaddr); else original_value = _phy_fw_rf_serial_read(hw, rfpath, regaddr); - bitshift = _phy_calculate_bit_shift(bitmask); + bitshift = rtl8723_phy_calculate_bit_shift(bitmask); readback_value = (original_value & bitmask) >> bitshift; spin_unlock_irqrestore(&rtlpriv->locks.rf_lock, flags); @@ -157,19 +103,19 @@ if (rtlphy->rf_mode != RF_OP_BY_FW) { if (bitmask != RFREG_OFFSET_MASK) { - original_value = _phy_rf_serial_read(hw, rfpath, - regaddr); - bitshift = _phy_calculate_bit_shift(bitmask); + original_value = rtl8723_phy_rf_serial_read(hw, rfpath, + regaddr); + bitshift = rtl8723_phy_calculate_bit_shift(bitmask); data = ((original_value & (~bitmask)) | (data << bitshift)); } - _phy_rf_serial_write(hw, rfpath, regaddr, data); + rtl8723_phy_rf_serial_write(hw, rfpath, regaddr, data); } else { if (bitmask != RFREG_OFFSET_MASK) { original_value = _phy_fw_rf_serial_read(hw, rfpath, regaddr); - bitshift = _phy_calculate_bit_shift(bitmask); + bitshift = rtl8723_phy_calculate_bit_shift(bitmask); data = ((original_value & (~bitmask)) | (data << bitshift)); } @@ -197,87 +143,6 @@ RT_ASSERT(false, "deprecated!\n"); } -static u32 _phy_rf_serial_read(struct ieee80211_hw *hw, - enum radio_path rfpath, u32 offset) -{ - struct rtl_priv *rtlpriv = rtl_priv(hw); - struct rtl_phy *rtlphy = &(rtlpriv->phy); - struct bb_reg_def *pphyreg = &rtlphy->phyreg_def[rfpath]; - u32 newoffset; - u32 tmplong, tmplong2; - u8 rfpi_enable = 0; - u32 retvalue; - - offset &= 0x3f; - newoffset = offset; - if (RT_CANNOT_IO(hw)) { - RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, "return all one\n"); - return 0xFFFFFFFF; - } - tmplong = rtl_get_bbreg(hw, RFPGA0_XA_HSSIPARAMETER2, MASKDWORD); - if (rfpath == RF90_PATH_A) - tmplong2 = tmplong; - else - tmplong2 = rtl_get_bbreg(hw, pphyreg->rfhssi_para2, MASKDWORD); - tmplong2 = (tmplong2 & (~BLSSIREADADDRESS)) | - (newoffset << 23) | BLSSIREADEDGE; - rtl_set_bbreg(hw, RFPGA0_XA_HSSIPARAMETER2, MASKDWORD, - tmplong & (~BLSSIREADEDGE)); - mdelay(1); - rtl_set_bbreg(hw, pphyreg->rfhssi_para2, MASKDWORD, tmplong2); - mdelay(1); - rtl_set_bbreg(hw, RFPGA0_XA_HSSIPARAMETER2, MASKDWORD, - tmplong | BLSSIREADEDGE); - mdelay(1); - if (rfpath == RF90_PATH_A) - rfpi_enable = (u8) rtl_get_bbreg(hw, RFPGA0_XA_HSSIPARAMETER1, - BIT(8)); - else if (rfpath == RF90_PATH_B) - rfpi_enable = (u8) rtl_get_bbreg(hw, RFPGA0_XB_HSSIPARAMETER1, - BIT(8)); - if (rfpi_enable) - retvalue = rtl_get_bbreg(hw, pphyreg->rf_rbpi, - BLSSIREADBACKDATA); - else - retvalue = rtl_get_bbreg(hw, pphyreg->rf_rb, - BLSSIREADBACKDATA); - RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE, "RFR-%d Addr[0x%x]=0x%x\n", - rfpath, pphyreg->rf_rb, retvalue); - return retvalue; -} - -static void _phy_rf_serial_write(struct ieee80211_hw *hw, - enum radio_path rfpath, u32 offset, u32 data) -{ - u32 data_and_addr; - u32 newoffset; - struct rtl_priv *rtlpriv = rtl_priv(hw); - struct rtl_phy *rtlphy = &(rtlpriv->phy); - struct bb_reg_def *pphyreg = &rtlphy->phyreg_def[rfpath]; - - if (RT_CANNOT_IO(hw)) { - RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, "stop\n"); - return; - } - offset &= 0x3f; - newoffset = offset; - data_and_addr = ((newoffset << 20) | (data & 0x000fffff)) & 0x0fffffff; - rtl_set_bbreg(hw, pphyreg->rf3wire_offset, MASKDWORD, data_and_addr); - RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE, "RFW-%d Addr[0x%x]=0x%x\n", - rfpath, pphyreg->rf3wire_offset, data_and_addr); -} - -static u32 _phy_calculate_bit_shift(u32 bitmask) -{ - u32 i; - - for (i = 0; i <= 31; i++) { - if (((bitmask >> i) & 0x1) == 1) - break; - } - return i; -} - static void _rtl8723ae_phy_bb_config_1t(struct ieee80211_hw *hw) { rtl_set_bbreg(hw, RFPGA0_TXINFO, 0x3, 0x2); @@ -307,7 +172,7 @@ u8 tmpu1b; u8 reg_hwparafile = 1; - _phy_init_bb_rf_reg_def(hw); + rtl8723_phy_init_bb_rf_reg_def(hw); /* 1. 0x28[1] = 1 */ tmpu1b = rtl_read_byte(rtlpriv, REG_AFE_PLL_CTRL); @@ -690,92 +555,6 @@ ROFDM0_RXDETECTOR3, rtlphy->framesync); } -static void _phy_init_bb_rf_reg_def(struct ieee80211_hw *hw) -{ - struct rtl_priv *rtlpriv = rtl_priv(hw); - struct rtl_phy *rtlphy = &(rtlpriv->phy); - - rtlphy->phyreg_def[RF90_PATH_A].rfintfs = RFPGA0_XAB_RFINTERFACESW; - rtlphy->phyreg_def[RF90_PATH_B].rfintfs = RFPGA0_XAB_RFINTERFACESW; - rtlphy->phyreg_def[RF90_PATH_C].rfintfs = RFPGA0_XCD_RFINTERFACESW; - rtlphy->phyreg_def[RF90_PATH_D].rfintfs = RFPGA0_XCD_RFINTERFACESW; - - rtlphy->phyreg_def[RF90_PATH_A].rfintfi = RFPGA0_XAB_RFINTERFACERB; - rtlphy->phyreg_def[RF90_PATH_B].rfintfi = RFPGA0_XAB_RFINTERFACERB; - rtlphy->phyreg_def[RF90_PATH_C].rfintfi = RFPGA0_XCD_RFINTERFACERB; - rtlphy->phyreg_def[RF90_PATH_D].rfintfi = RFPGA0_XCD_RFINTERFACERB; - - rtlphy->phyreg_def[RF90_PATH_A].rfintfo = RFPGA0_XA_RFINTERFACEOE; - rtlphy->phyreg_def[RF90_PATH_B].rfintfo = RFPGA0_XB_RFINTERFACEOE; - - rtlphy->phyreg_def[RF90_PATH_A].rfintfe = RFPGA0_XA_RFINTERFACEOE; - rtlphy->phyreg_def[RF90_PATH_B].rfintfe = RFPGA0_XB_RFINTERFACEOE; - - rtlphy->phyreg_def[RF90_PATH_A].rf3wire_offset = - RFPGA0_XA_LSSIPARAMETER; - rtlphy->phyreg_def[RF90_PATH_B].rf3wire_offset = - RFPGA0_XB_LSSIPARAMETER; - - rtlphy->phyreg_def[RF90_PATH_A].rflssi_select = rFPGA0_XAB_RFPARAMETER; - rtlphy->phyreg_def[RF90_PATH_B].rflssi_select = rFPGA0_XAB_RFPARAMETER; - rtlphy->phyreg_def[RF90_PATH_C].rflssi_select = rFPGA0_XCD_RFPARAMETER; - rtlphy->phyreg_def[RF90_PATH_D].rflssi_select = rFPGA0_XCD_RFPARAMETER; - - rtlphy->phyreg_def[RF90_PATH_A].rftxgain_stage = RFPGA0_TXGAINSTAGE; - rtlphy->phyreg_def[RF90_PATH_B].rftxgain_stage = RFPGA0_TXGAINSTAGE; - rtlphy->phyreg_def[RF90_PATH_C].rftxgain_stage = RFPGA0_TXGAINSTAGE; - rtlphy->phyreg_def[RF90_PATH_D].rftxgain_stage = RFPGA0_TXGAINSTAGE; - - rtlphy->phyreg_def[RF90_PATH_A].rfhssi_para1 = RFPGA0_XA_HSSIPARAMETER1; - rtlphy->phyreg_def[RF90_PATH_B].rfhssi_para1 = RFPGA0_XB_HSSIPARAMETER1; - - rtlphy->phyreg_def[RF90_PATH_A].rfhssi_para2 = RFPGA0_XA_HSSIPARAMETER2; - rtlphy->phyreg_def[RF90_PATH_B].rfhssi_para2 = RFPGA0_XB_HSSIPARAMETER2; - - rtlphy->phyreg_def[RF90_PATH_A].rfsw_ctrl = RFPGA0_XAB_SWITCHCONTROL; - rtlphy->phyreg_def[RF90_PATH_B].rfsw_ctrl = RFPGA0_XAB_SWITCHCONTROL; - rtlphy->phyreg_def[RF90_PATH_C].rfsw_ctrl = RFPGA0_XCD_SWITCHCONTROL; - rtlphy->phyreg_def[RF90_PATH_D].rfsw_ctrl = RFPGA0_XCD_SWITCHCONTROL; - - rtlphy->phyreg_def[RF90_PATH_A].rfagc_control1 = ROFDM0_XAAGCCORE1; - rtlphy->phyreg_def[RF90_PATH_B].rfagc_control1 = ROFDM0_XBAGCCORE1; - rtlphy->phyreg_def[RF90_PATH_C].rfagc_control1 = ROFDM0_XCAGCCORE1; - rtlphy->phyreg_def[RF90_PATH_D].rfagc_control1 = ROFDM0_XDAGCCORE1; - - rtlphy->phyreg_def[RF90_PATH_A].rfagc_control2 = ROFDM0_XAAGCCORE2; - rtlphy->phyreg_def[RF90_PATH_B].rfagc_control2 = ROFDM0_XBAGCCORE2; - rtlphy->phyreg_def[RF90_PATH_C].rfagc_control2 = ROFDM0_XCAGCCORE2; - rtlphy->phyreg_def[RF90_PATH_D].rfagc_control2 = ROFDM0_XDAGCCORE2; - - rtlphy->phyreg_def[RF90_PATH_A].rfrxiq_imbal = ROFDM0_XARXIQIMBALANCE; - rtlphy->phyreg_def[RF90_PATH_B].rfrxiq_imbal = ROFDM0_XBRXIQIMBALANCE; - rtlphy->phyreg_def[RF90_PATH_C].rfrxiq_imbal = ROFDM0_XCRXIQIMBANLANCE; - rtlphy->phyreg_def[RF90_PATH_D].rfrxiq_imbal = ROFDM0_XDRXIQIMBALANCE; - - rtlphy->phyreg_def[RF90_PATH_A].rfrx_afe = ROFDM0_XARXAFE; - rtlphy->phyreg_def[RF90_PATH_B].rfrx_afe = ROFDM0_XBRXAFE; - rtlphy->phyreg_def[RF90_PATH_C].rfrx_afe = ROFDM0_XCRXAFE; - rtlphy->phyreg_def[RF90_PATH_D].rfrx_afe = ROFDM0_XDRXAFE; - - rtlphy->phyreg_def[RF90_PATH_A].rftxiq_imbal = ROFDM0_XATXIQIMBALANCE; - rtlphy->phyreg_def[RF90_PATH_B].rftxiq_imbal = ROFDM0_XBTXIQIMBALANCE; - rtlphy->phyreg_def[RF90_PATH_C].rftxiq_imbal = ROFDM0_XCTXIQIMBALANCE; - rtlphy->phyreg_def[RF90_PATH_D].rftxiq_imbal = ROFDM0_XDTXIQIMBALANCE; - - rtlphy->phyreg_def[RF90_PATH_A].rftx_afe = ROFDM0_XATXAFE; - rtlphy->phyreg_def[RF90_PATH_B].rftx_afe = ROFDM0_XBTXAFE; - rtlphy->phyreg_def[RF90_PATH_C].rftx_afe = ROFDM0_XCTXAFE; - rtlphy->phyreg_def[RF90_PATH_D].rftx_afe = ROFDM0_XDTXAFE; - - rtlphy->phyreg_def[RF90_PATH_A].rf_rb = RFPGA0_XA_LSSIREADBACK; - rtlphy->phyreg_def[RF90_PATH_B].rf_rb = RFPGA0_XB_LSSIREADBACK; - rtlphy->phyreg_def[RF90_PATH_C].rf_rb = RFPGA0_XC_LSSIREADBACK; - rtlphy->phyreg_def[RF90_PATH_D].rf_rb = RFPGA0_XD_LSSIREADBACK; - - rtlphy->phyreg_def[RF90_PATH_A].rf_rbpi = TRANSCEIVEA_HSPI_READBACK; - rtlphy->phyreg_def[RF90_PATH_B].rf_rbpi = TRANSCEIVEB_HSPI_READBACK; -} - void rtl8723ae_phy_get_txpower_level(struct ieee80211_hw *hw, long *powerlevel) { struct rtl_priv *rtlpriv = rtl_priv(hw); @@ -785,17 +564,17 @@ long txpwr_dbm; txpwr_level = rtlphy->cur_cck_txpwridx; - txpwr_dbm = _phy_txpwr_idx_to_dbm(hw, WIRELESS_MODE_B, txpwr_level); + txpwr_dbm = rtl8723_phy_txpwr_idx_to_dbm(hw, WIRELESS_MODE_B, txpwr_level); txpwr_level = rtlphy->cur_ofdm24g_txpwridx + rtlefuse->legacy_ht_txpowerdiff; - if (_phy_txpwr_idx_to_dbm(hw, WIRELESS_MODE_G, txpwr_level) > txpwr_dbm) - txpwr_dbm = _phy_txpwr_idx_to_dbm(hw, WIRELESS_MODE_G, + if (rtl8723_phy_txpwr_idx_to_dbm(hw, WIRELESS_MODE_G, txpwr_level) > txpwr_dbm) + txpwr_dbm = rtl8723_phy_txpwr_idx_to_dbm(hw, WIRELESS_MODE_G, txpwr_level); txpwr_level = rtlphy->cur_ofdm24g_txpwridx; - if (_phy_txpwr_idx_to_dbm(hw, WIRELESS_MODE_N_24G, txpwr_level) > + if (rtl8723_phy_txpwr_idx_to_dbm(hw, WIRELESS_MODE_N_24G, txpwr_level) > txpwr_dbm) - txpwr_dbm = _phy_txpwr_idx_to_dbm(hw, WIRELESS_MODE_N_24G, - txpwr_level); + txpwr_dbm = rtl8723_phy_txpwr_idx_to_dbm(hw, WIRELESS_MODE_N_24G, + txpwr_level); *powerlevel = txpwr_dbm; } @@ -912,28 +691,6 @@ return txpwridx; } -static long _phy_txpwr_idx_to_dbm(struct ieee80211_hw *hw, - enum wireless_mode wirelessmode, u8 txpwridx) -{ - long offset; - long pwrout_dbm; - - 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; - } - pwrout_dbm = txpwridx / 2 + offset; - return pwrout_dbm; -} - void rtl8723ae_phy_set_bw_mode_callback(struct ieee80211_hw *hw) { struct rtl_priv *rtlpriv = rtl_priv(hw); @@ -1117,26 +874,26 @@ u8 num_total_rfpath = rtlphy->num_total_rfpath; precommoncmdcnt = 0; - _phy_set_sw_chnl_cmdarray(precommoncmd, precommoncmdcnt++, - MAX_PRECMD_CNT, CMDID_SET_TXPOWEROWER_LEVEL, - 0, 0, 0); - _phy_set_sw_chnl_cmdarray(precommoncmd, precommoncmdcnt++, - MAX_PRECMD_CNT, CMDID_END, 0, 0, 0); + rtl8723_phy_set_sw_chnl_cmdarray(precommoncmd, precommoncmdcnt++, + MAX_PRECMD_CNT, CMDID_SET_TXPOWEROWER_LEVEL, + 0, 0, 0); + rtl8723_phy_set_sw_chnl_cmdarray(precommoncmd, precommoncmdcnt++, + MAX_PRECMD_CNT, CMDID_END, 0, 0, 0); postcommoncmdcnt = 0; - _phy_set_sw_chnl_cmdarray(postcommoncmd, postcommoncmdcnt++, - MAX_POSTCMD_CNT, CMDID_END, 0, 0, 0); + rtl8723_phy_set_sw_chnl_cmdarray(postcommoncmd, postcommoncmdcnt++, + MAX_POSTCMD_CNT, CMDID_END, 0, 0, 0); rfdependcmdcnt = 0; RT_ASSERT((channel >= 1 && channel <= 14), "illegal channel for Zebra: %d\n", channel); - _phy_set_sw_chnl_cmdarray(rfdependcmd, rfdependcmdcnt++, - MAX_RFDEPENDCMD_CNT, CMDID_RF_WRITEREG, + rtl8723_phy_set_sw_chnl_cmdarray(rfdependcmd, rfdependcmdcnt++, + MAX_RFDEPENDCMD_CNT, CMDID_RF_WRITEREG, RF_CHNLBW, channel, 10); - _phy_set_sw_chnl_cmdarray(rfdependcmd, rfdependcmdcnt++, - MAX_RFDEPENDCMD_CNT, CMDID_END, 0, 0, 0); + rtl8723_phy_set_sw_chnl_cmdarray(rfdependcmd, rfdependcmdcnt++, + MAX_RFDEPENDCMD_CNT, CMDID_END, 0, 0, 0); do { switch (*stage) { @@ -1204,29 +961,6 @@ return false; } -static bool _phy_set_sw_chnl_cmdarray(struct swchnlcmd *cmdtable, - u32 cmdtableidx, u32 cmdtablesz, - enum swchnlcmd_id cmdid, u32 para1, - u32 para2, u32 msdelay) -{ - struct swchnlcmd *pcmd; - - if (cmdtable == NULL) { - RT_ASSERT(false, "cmdtable cannot be NULL.\n"); - return false; - } - - if (cmdtableidx >= cmdtablesz) - return false; - - pcmd = cmdtable + cmdtableidx; - pcmd->cmdid = cmdid; - pcmd->para1 = para1; - pcmd->para2 = para2; - pcmd->msdelay = msdelay; - return true; -} - static u8 _rtl8723ae_phy_path_a_iqk(struct ieee80211_hw *hw, bool config_pathb) { u32 reg_eac, reg_e94, reg_e9c, reg_ea4; @@ -1297,136 +1031,6 @@ return result; } -static void phy_path_a_fill_iqk_matrix(struct ieee80211_hw *hw, bool iqk_ok, - long result[][8], u8 final_candidate, - bool btxonly) -{ - u32 oldval_0, x, tx0_a, reg; - long y, tx0_c; - - if (final_candidate == 0xFF) { - return; - } else if (iqk_ok) { - oldval_0 = (rtl_get_bbreg(hw, ROFDM0_XATXIQIMBALANCE, - MASKDWORD) >> 22) & 0x3FF; - x = result[final_candidate][0]; - if ((x & 0x00000200) != 0) - x = x | 0xFFFFFC00; - tx0_a = (x * oldval_0) >> 8; - rtl_set_bbreg(hw, ROFDM0_XATXIQIMBALANCE, 0x3FF, tx0_a); - rtl_set_bbreg(hw, 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; - rtl_set_bbreg(hw, ROFDM0_XCTXAFE, 0xF0000000, - ((tx0_c & 0x3C0) >> 6)); - rtl_set_bbreg(hw, ROFDM0_XATXIQIMBALANCE, 0x003F0000, - (tx0_c & 0x3F)); - rtl_set_bbreg(hw, ROFDM0_ECCATHRESHOLD, BIT(29), - ((y * oldval_0 >> 7) & 0x1)); - if (btxonly) - return; - reg = result[final_candidate][2]; - rtl_set_bbreg(hw, ROFDM0_XARXIQIMBALANCE, 0x3FF, reg); - reg = result[final_candidate][3] & 0x3F; - rtl_set_bbreg(hw, ROFDM0_XARXIQIMBALANCE, 0xFC00, reg); - reg = (result[final_candidate][3] >> 6) & 0xF; - rtl_set_bbreg(hw, 0xca0, 0xF0000000, reg); - } -} - -static void phy_save_adda_regs(struct ieee80211_hw *hw, - u32 *addareg, u32 *addabackup, - u32 registernum) -{ - u32 i; - - for (i = 0; i < registernum; i++) - addabackup[i] = rtl_get_bbreg(hw, addareg[i], MASKDWORD); -} - -static void phy_save_mac_regs(struct ieee80211_hw *hw, u32 *macreg, - u32 *macbackup) -{ - struct rtl_priv *rtlpriv = rtl_priv(hw); - u32 i; - - for (i = 0; i < (IQK_MAC_REG_NUM - 1); i++) - macbackup[i] = rtl_read_byte(rtlpriv, macreg[i]); - macbackup[i] = rtl_read_dword(rtlpriv, macreg[i]); -} - -static void phy_reload_adda_regs(struct ieee80211_hw *hw, u32 *addareg, - u32 *addabackup, u32 regiesternum) -{ - u32 i; - - for (i = 0; i < regiesternum; i++) - rtl_set_bbreg(hw, addareg[i], MASKDWORD, addabackup[i]); -} - -static void phy_reload_mac_regs(struct ieee80211_hw *hw, u32 *macreg, - u32 *macbackup) -{ - struct rtl_priv *rtlpriv = rtl_priv(hw); - u32 i; - - for (i = 0; i < (IQK_MAC_REG_NUM - 1); i++) - rtl_write_byte(rtlpriv, macreg[i], (u8) macbackup[i]); - rtl_write_dword(rtlpriv, macreg[i], macbackup[i]); -} - -static void _rtl8723ae_phy_path_adda_on(struct ieee80211_hw *hw, - u32 *addareg, bool is_patha_on, - bool is2t) -{ - u32 pathOn; - u32 i; - - pathOn = is_patha_on ? 0x04db25a4 : 0x0b1b25a4; - if (false == is2t) { - pathOn = 0x0bdb25a0; - rtl_set_bbreg(hw, addareg[0], MASKDWORD, 0x0b1b25a0); - } else { - rtl_set_bbreg(hw, addareg[0], MASKDWORD, pathOn); - } - - for (i = 1; i < IQK_ADDA_REG_NUM; i++) - rtl_set_bbreg(hw, addareg[i], MASKDWORD, pathOn); -} - -static void _rtl8723ae_phy_mac_setting_calibration(struct ieee80211_hw *hw, - u32 *macreg, u32 *macbackup) -{ - struct rtl_priv *rtlpriv = rtl_priv(hw); - u32 i = 0; - - rtl_write_byte(rtlpriv, macreg[i], 0x3F); - - for (i = 1; i < (IQK_MAC_REG_NUM - 1); i++) - rtl_write_byte(rtlpriv, macreg[i], - (u8) (macbackup[i] & (~BIT(3)))); - rtl_write_byte(rtlpriv, macreg[i], (u8) (macbackup[i] & (~BIT(5)))); -} - -static void _rtl8723ae_phy_path_a_standby(struct ieee80211_hw *hw) -{ - rtl_set_bbreg(hw, 0xe28, MASKDWORD, 0x0); - rtl_set_bbreg(hw, 0x840, MASKDWORD, 0x00010000); - rtl_set_bbreg(hw, 0xe28, MASKDWORD, 0x80800000); -} - -static void _rtl8723ae_phy_pi_mode_switch(struct ieee80211_hw *hw, bool pi_mode) -{ - u32 mode; - - mode = pi_mode ? 0x01000100 : 0x01000000; - rtl_set_bbreg(hw, 0x820, MASKDWORD, mode); - rtl_set_bbreg(hw, 0x828, MASKDWORD, mode); -} - static bool phy_simularity_comp(struct ieee80211_hw *hw, long result[][8], u8 c1, u8 c2) { @@ -1498,10 +1102,12 @@ const u32 retrycount = 2; if (t == 0) { - phy_save_adda_regs(hw, adda_reg, rtlphy->adda_backup, 16); - phy_save_mac_regs(hw, iqk_mac_reg, rtlphy->iqk_mac_backup); + rtl8723_save_adda_registers(hw, adda_reg, rtlphy->adda_backup, + 16); + rtl8723_phy_save_mac_registers(hw, iqk_mac_reg, + rtlphy->iqk_mac_backup); } - _rtl8723ae_phy_path_adda_on(hw, adda_reg, true, is2t); + rtl8723_phy_path_adda_on(hw, adda_reg, true, is2t); if (t == 0) { rtlphy->rfpi_enable = (u8) rtl_get_bbreg(hw, RFPGA0_XA_HSSIPARAMETER1, @@ -1509,7 +1115,7 @@ } if (!rtlphy->rfpi_enable) - _rtl8723ae_phy_pi_mode_switch(hw, true); + rtl8723_phy_pi_mode_switch(hw, true); if (t == 0) { rtlphy->reg_c04 = rtl_get_bbreg(hw, 0xc04, MASKDWORD); rtlphy->reg_c08 = rtl_get_bbreg(hw, 0xc08, MASKDWORD); @@ -1522,7 +1128,7 @@ rtl_set_bbreg(hw, 0x840, MASKDWORD, 0x00010000); rtl_set_bbreg(hw, 0x844, MASKDWORD, 0x00010000); } - _rtl8723ae_phy_mac_setting_calibration(hw, iqk_mac_reg, + rtl8723_phy_mac_setting_calibration(hw, iqk_mac_reg, rtlphy->iqk_mac_backup); rtl_set_bbreg(hw, 0xb68, MASKDWORD, 0x00080000); if (is2t) @@ -1552,8 +1158,8 @@ } if (is2t) { - _rtl8723ae_phy_path_a_standby(hw); - _rtl8723ae_phy_path_adda_on(hw, adda_reg, false, is2t); + rtl8723_phy_path_a_standby(hw); + rtl8723_phy_path_adda_on(hw, adda_reg, false, is2t); for (i = 0; i < retrycount; i++) { pathb_ok = _rtl8723ae_phy_path_b_iqk(hw); if (pathb_ok == 0x03) { @@ -1588,9 +1194,11 @@ rtl_set_bbreg(hw, 0x844, MASKDWORD, 0x00032ed3); if (t != 0) { if (!rtlphy->rfpi_enable) - _rtl8723ae_phy_pi_mode_switch(hw, false); - phy_reload_adda_regs(hw, adda_reg, rtlphy->adda_backup, 16); - phy_reload_mac_regs(hw, iqk_mac_reg, rtlphy->iqk_mac_backup); + rtl8723_phy_pi_mode_switch(hw, false); + rtl8723_phy_reload_adda_registers(hw, adda_reg, + rtlphy->adda_backup, 16); + rtl8723_phy_reload_mac_registers(hw, iqk_mac_reg, + rtlphy->iqk_mac_backup); } } @@ -1691,7 +1299,8 @@ }; if (recovery) { - phy_reload_adda_regs(hw, iqk_bb_reg, rtlphy->iqk_bb_backup, 10); + rtl8723_phy_reload_adda_registers(hw, iqk_bb_reg, + rtlphy->iqk_bb_backup, 10); return; } if (start_conttx || singletone) @@ -1756,9 +1365,10 @@ rtlphy->reg_e9c = rtlphy->reg_ebc = 0x0; } if (reg_e94 != 0) /*&&(reg_ea4 != 0) */ - phy_path_a_fill_iqk_matrix(hw, patha_ok, result, - final_candidate, (reg_ea4 == 0)); - phy_save_adda_regs(hw, iqk_bb_reg, rtlphy->iqk_bb_backup, 10); + rtl8723_phy_path_a_fill_iqk_matrix(hw, patha_ok, result, + final_candidate, + (reg_ea4 == 0)); + rtl8723_save_adda_registers(hw, iqk_bb_reg, rtlphy->iqk_bb_backup, 10); } void rtl8723ae_phy_lc_calibrate(struct ieee80211_hw *hw) --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723ae/phy.h +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723ae/phy.h @@ -76,23 +76,6 @@ #define RTL92C_MAX_PATH_NUM 2 -enum swchnlcmd_id { - CMDID_END, - CMDID_SET_TXPOWEROWER_LEVEL, - CMDID_BBREGWRITE10, - CMDID_WRITEPORT_ULONG, - CMDID_WRITEPORT_USHORT, - CMDID_WRITEPORT_UCHAR, - CMDID_RF_WRITEREG, -}; - -struct swchnlcmd { - enum swchnlcmd_id cmdid; - u32 para1; - u32 para2; - u32 msdelay; -}; - enum hw90_block_e { HW90_BLOCK_MAC = 0, HW90_BLOCK_PHY0 = 1, @@ -183,10 +166,6 @@ u32 mcs_original_offset[4][16]; }; -u32 rtl8723ae_phy_query_bb_reg(struct ieee80211_hw *hw, - u32 regaddr, u32 bitmask); -void rtl8723ae_phy_set_bb_reg(struct ieee80211_hw *hw, - u32 regaddr, u32 bitmask, u32 data); u32 rtl8723ae_phy_query_rf_reg(struct ieee80211_hw *hw, enum radio_path rfpath, u32 regaddr, u32 bitmask); --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723ae/sw.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723ae/sw.c @@ -37,8 +37,11 @@ #include "reg.h" #include "def.h" #include "phy.h" +#include "../rtl8723com/phy_common.h" #include "dm.h" #include "hw.h" +#include "fw.h" +#include "../rtl8723com/fw_common.h" #include "sw.h" #include "trx.h" #include "led.h" @@ -193,6 +196,11 @@ } } +static bool is_fw_header(struct rtl92c_firmware_header *hdr) +{ + return (hdr->signature & 0xfff0) == 0x2300; +} + static struct rtl_hal_ops rtl8723ae_hal_ops = { .init_sw_vars = rtl8723ae_init_sw_vars, .deinit_sw_vars = rtl8723ae_deinit_sw_vars, @@ -231,13 +239,14 @@ .set_key = rtl8723ae_set_key, .init_sw_leds = rtl8723ae_init_sw_leds, .allow_all_destaddr = rtl8723ae_allow_all_destaddr, - .get_bbreg = rtl8723ae_phy_query_bb_reg, - .set_bbreg = rtl8723ae_phy_set_bb_reg, + .get_bbreg = rtl8723_phy_query_bb_reg, + .set_bbreg = rtl8723_phy_set_bb_reg, .get_rfreg = rtl8723ae_phy_query_rf_reg, .set_rfreg = rtl8723ae_phy_set_rf_reg, .c2h_command_handle = rtl_8723e_c2h_command_handle, .bt_wifi_media_status_notify = rtl_8723e_bt_wifi_media_status_notify, .bt_coex_off_before_lps = rtl8723ae_bt_coex_off_before_lps, + .is_fw_header = is_fw_header, }; static struct rtl_mod_params rtl8723ae_mod_params = { --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723ae/trx.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723ae/trx.c @@ -334,7 +334,7 @@ /* during testing, hdr could be NULL here */ return false; } - if ((ieee80211_is_robust_mgmt_frame(hdr)) && + if ((_ieee80211_is_robust_mgmt_frame(hdr)) && (ieee80211_has_protected(hdr->frame_control))) rx_status->flag &= ~RX_FLAG_DECRYPTED; else --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723ae/trx.h +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723ae/trx.h @@ -521,12 +521,6 @@ memset(__pdesc, 0, _size); \ } while (0) -#define RTL8723E_RX_HAL_IS_CCK_RATE(rxmcs) \ - ((rxmcs) == DESC92_RATE1M || \ - (rxmcs) == DESC92_RATE2M || \ - (rxmcs) == DESC92_RATE5_5M || \ - (rxmcs) == DESC92_RATE11M) - struct rx_fwinfo_8723e { u8 gain_trsw[4]; u8 pwdb_all; --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723be/Makefile +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723be/Makefile @@ -0,0 +1,20 @@ +obj-m := rtl8723be.o + + +rtl8723be-objs := \ + dm.o \ + fw.o \ + hw.o \ + led.o \ + phy.o \ + pwrseq.o \ + pwrseqcmd.o \ + rf.o \ + sw.o \ + table.o \ + trx.o \ + + +obj-$(CONFIG_RTL8723BE) += rtl8723be.o + +ccflags-y += -D__CHECK_ENDIAN__ --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723be/def.h +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723be/def.h @@ -0,0 +1,248 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2014 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#ifndef __RTL8723BE_DEF_H__ +#define __RTL8723BE_DEF_H__ + +#define HAL_RETRY_LIMIT_INFRA 48 +#define HAL_RETRY_LIMIT_AP_ADHOC 7 + +#define RESET_DELAY_8185 20 + +#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 NUM_OF_FIRMWARE_QUEUE 10 +#define NUM_OF_PAGES_IN_FW 0x100 +#define NUM_OF_PAGE_IN_FW_QUEUE_BK 0x07 +#define NUM_OF_PAGE_IN_FW_QUEUE_BE 0x07 +#define NUM_OF_PAGE_IN_FW_QUEUE_VI 0x07 +#define NUM_OF_PAGE_IN_FW_QUEUE_VO 0x07 +#define NUM_OF_PAGE_IN_FW_QUEUE_HCCA 0x0 +#define NUM_OF_PAGE_IN_FW_QUEUE_CMD 0x0 +#define NUM_OF_PAGE_IN_FW_QUEUE_MGNT 0x02 +#define NUM_OF_PAGE_IN_FW_QUEUE_HIGH 0x02 +#define NUM_OF_PAGE_IN_FW_QUEUE_BCN 0x2 +#define NUM_OF_PAGE_IN_FW_QUEUE_PUB 0xA1 + +#define NUM_OF_PAGE_IN_FW_QUEUE_BK_DTM 0x026 +#define NUM_OF_PAGE_IN_FW_QUEUE_BE_DTM 0x048 +#define NUM_OF_PAGE_IN_FW_QUEUE_VI_DTM 0x048 +#define NUM_OF_PAGE_IN_FW_QUEUE_VO_DTM 0x026 +#define NUM_OF_PAGE_IN_FW_QUEUE_PUB_DTM 0x00 + +#define MAX_LINES_HWCONFIG_TXT 1000 +#define MAX_BYTES_LINE_HWCONFIG_TXT 256 + +#define SW_THREE_WIRE 0 +#define HW_THREE_WIRE 2 + +#define BT_DEMO_BOARD 0 +#define BT_QA_BOARD 1 +#define BT_FPGA 2 + +#define HAL_PRIME_CHNL_OFFSET_DONT_CARE 0 +#define HAL_PRIME_CHNL_OFFSET_LOWER 1 +#define HAL_PRIME_CHNL_OFFSET_UPPER 2 + +#define MAX_H2C_QUEUE_NUM 10 + +#define RX_MPDU_QUEUE 0 +#define RX_CMD_QUEUE 1 +#define RX_MAX_QUEUE 2 +#define AC2QUEUEID(_AC) (_AC) + +#define C2H_RX_CMD_HDR_LEN 8 +#define GET_C2H_CMD_CMD_LEN(__prxhdr) \ + LE_BITS_TO_4BYTE((__prxhdr), 0, 16) +#define GET_C2H_CMD_ELEMENT_ID(__prxhdr) \ + LE_BITS_TO_4BYTE((__prxhdr), 16, 8) +#define GET_C2H_CMD_CMD_SEQ(__prxhdr) \ + LE_BITS_TO_4BYTE((__prxhdr), 24, 7) +#define GET_C2H_CMD_CONTINUE(__prxhdr) \ + LE_BITS_TO_4BYTE((__prxhdr), 31, 1) +#define GET_C2H_CMD_CONTENT(__prxhdr) \ + ((u8 *)(__prxhdr) + C2H_RX_CMD_HDR_LEN) + +#define GET_C2H_CMD_FEEDBACK_ELEMENT_ID(__pcmdfbhdr) \ + LE_BITS_TO_4BYTE((__pcmdfbhdr), 0, 8) +#define GET_C2H_CMD_FEEDBACK_CCX_LEN(__pcmdfbhdr) \ + LE_BITS_TO_4BYTE((__pcmdfbhdr), 8, 8) +#define GET_C2H_CMD_FEEDBACK_CCX_CMD_CNT(__pcmdfbhdr) \ + LE_BITS_TO_4BYTE((__pcmdfbhdr), 16, 16) +#define GET_C2H_CMD_FEEDBACK_CCX_MAC_ID(__pcmdfbhdr) \ + LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 0, 5) +#define GET_C2H_CMD_FEEDBACK_CCX_VALID(__pcmdfbhdr) \ + LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 7, 1) +#define GET_C2H_CMD_FEEDBACK_CCX_RETRY_CNT(__pcmdfbhdr) \ + LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 8, 5) +#define GET_C2H_CMD_FEEDBACK_CCX_TOK(__pcmdfbhdr) \ + LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 15, 1) +#define GET_C2H_CMD_FEEDBACK_CCX_QSEL(__pcmdfbhdr) \ + LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 16, 4) +#define GET_C2H_CMD_FEEDBACK_CCX_SEQ(__pcmdfbhdr) \ + LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 20, 12) + +#define CHIP_BONDING_IDENTIFIER(_value) (((_value)>>22)&0x3) +#define CHIP_BONDING_92C_1T2R 0x1 + +#define CHIP_8723 BIT(0) +#define CHIP_8723B (BIT(1) | BIT(2)) +#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) +#define RF_RL_ID (BIT(31) | BIT(30) | BIT(29) | BIT(28)) + +/* 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_92C_SERIAL(version) ((IS_81XXC(version) && IS_2T2R(version)) ?\ + true : false) +#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_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) +enum rf_optype { + RF_OP_BY_SW_3WIRE = 0, + RF_OP_BY_FW, + RF_OP_MAX +}; + +enum rf_power_state { + RF_ON, + RF_OFF, + RF_SLEEP, + RF_SHUT_DOWN, +}; + +enum power_save_mode { + POWER_SAVE_MODE_ACTIVE, + POWER_SAVE_MODE_SAVE, +}; + +enum power_polocy_config { + POWERCFG_MAX_POWER_SAVINGS, + POWERCFG_GLOBAL_POWER_SAVINGS, + POWERCFG_LOCAL_POWER_SAVINGS, + POWERCFG_LENOVO, +}; + +enum interface_select_pci { + INTF_SEL1_MINICARD = 0, + INTF_SEL0_PCIE = 1, + INTF_SEL2_RSV = 2, + INTF_SEL3_RSV = 3, +}; + +enum rtl_desc_qsel { + QSLT_BK = 0x2, + QSLT_BE = 0x0, + QSLT_VI = 0x5, + QSLT_VO = 0x7, + QSLT_BEACON = 0x10, + QSLT_HIGH = 0x11, + QSLT_MGNT = 0x12, + QSLT_CMD = 0x13, +}; + +enum rtl_desc8723e_rate { + DESC92C_RATE1M = 0x00, + DESC92C_RATE2M = 0x01, + DESC92C_RATE5_5M = 0x02, + DESC92C_RATE11M = 0x03, + + DESC92C_RATE6M = 0x04, + DESC92C_RATE9M = 0x05, + DESC92C_RATE12M = 0x06, + DESC92C_RATE18M = 0x07, + DESC92C_RATE24M = 0x08, + DESC92C_RATE36M = 0x09, + DESC92C_RATE48M = 0x0a, + DESC92C_RATE54M = 0x0b, + + DESC92C_RATEMCS0 = 0x0c, + DESC92C_RATEMCS1 = 0x0d, + DESC92C_RATEMCS2 = 0x0e, + DESC92C_RATEMCS3 = 0x0f, + DESC92C_RATEMCS4 = 0x10, + DESC92C_RATEMCS5 = 0x11, + DESC92C_RATEMCS6 = 0x12, + DESC92C_RATEMCS7 = 0x13, + DESC92C_RATEMCS8 = 0x14, + DESC92C_RATEMCS9 = 0x15, + DESC92C_RATEMCS10 = 0x16, + DESC92C_RATEMCS11 = 0x17, + DESC92C_RATEMCS12 = 0x18, + DESC92C_RATEMCS13 = 0x19, + DESC92C_RATEMCS14 = 0x1a, + DESC92C_RATEMCS15 = 0x1b, + DESC92C_RATEMCS15_SG = 0x1c, + DESC92C_RATEMCS32 = 0x20, +}; + +enum rx_packet_type { + NORMAL_RX, + TX_REPORT1, + TX_REPORT2, + HIS_REPORT, +}; + +struct phy_sts_cck_8723e_t { + u8 adc_pwdb_X[4]; + u8 sq_rpt; + u8 cck_agc_rpt; +}; + +struct h2c_cmd_8723e { + u8 element_id; + u32 cmd_len; + u8 *p_cmdbuffer; +}; + +#endif --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723be/dm.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723be/dm.c @@ -0,0 +1,1325 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2014 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#include "../wifi.h" +#include "../base.h" +#include "../pci.h" +#include "reg.h" +#include "def.h" +#include "phy.h" +#include "dm.h" +#include "../rtl8723com/dm_common.h" +#include "fw.h" +#include "../rtl8723com/fw_common.h" +#include "trx.h" +#include "../btcoexist/rtl_btc.h" + +static const u32 ofdmswing_table[] = { + 0x0b40002d, /* 0, -15.0dB */ + 0x0c000030, /* 1, -14.5dB */ + 0x0cc00033, /* 2, -14.0dB */ + 0x0d800036, /* 3, -13.5dB */ + 0x0e400039, /* 4, -13.0dB */ + 0x0f00003c, /* 5, -12.5dB */ + 0x10000040, /* 6, -12.0dB */ + 0x11000044, /* 7, -11.5dB */ + 0x12000048, /* 8, -11.0dB */ + 0x1300004c, /* 9, -10.5dB */ + 0x14400051, /* 10, -10.0dB */ + 0x15800056, /* 11, -9.5dB */ + 0x16c0005b, /* 12, -9.0dB */ + 0x18000060, /* 13, -8.5dB */ + 0x19800066, /* 14, -8.0dB */ + 0x1b00006c, /* 15, -7.5dB */ + 0x1c800072, /* 16, -7.0dB */ + 0x1e400079, /* 17, -6.5dB */ + 0x20000080, /* 18, -6.0dB */ + 0x22000088, /* 19, -5.5dB */ + 0x24000090, /* 20, -5.0dB */ + 0x26000098, /* 21, -4.5dB */ + 0x288000a2, /* 22, -4.0dB */ + 0x2ac000ab, /* 23, -3.5dB */ + 0x2d4000b5, /* 24, -3.0dB */ + 0x300000c0, /* 25, -2.5dB */ + 0x32c000cb, /* 26, -2.0dB */ + 0x35c000d7, /* 27, -1.5dB */ + 0x390000e4, /* 28, -1.0dB */ + 0x3c8000f2, /* 29, -0.5dB */ + 0x40000100, /* 30, +0dB */ + 0x43c0010f, /* 31, +0.5dB */ + 0x47c0011f, /* 32, +1.0dB */ + 0x4c000130, /* 33, +1.5dB */ + 0x50800142, /* 34, +2.0dB */ + 0x55400155, /* 35, +2.5dB */ + 0x5a400169, /* 36, +3.0dB */ + 0x5fc0017f, /* 37, +3.5dB */ + 0x65400195, /* 38, +4.0dB */ + 0x6b8001ae, /* 39, +4.5dB */ + 0x71c001c7, /* 40, +5.0dB */ + 0x788001e2, /* 41, +5.5dB */ + 0x7f8001fe /* 42, +6.0dB */ +}; + +static const u8 cckswing_table_ch1ch13[CCK_TABLE_SIZE][8] = { + {0x09, 0x08, 0x07, 0x06, 0x04, 0x03, 0x01, 0x01}, /* 0, -16.0dB */ + {0x09, 0x09, 0x08, 0x06, 0x05, 0x03, 0x01, 0x01}, /* 1, -15.5dB */ + {0x0a, 0x09, 0x08, 0x07, 0x05, 0x03, 0x02, 0x01}, /* 2, -15.0dB */ + {0x0a, 0x0a, 0x09, 0x07, 0x05, 0x03, 0x02, 0x01}, /* 3, -14.5dB */ + {0x0b, 0x0a, 0x09, 0x08, 0x06, 0x04, 0x02, 0x01}, /* 4, -14.0dB */ + {0x0b, 0x0b, 0x0a, 0x08, 0x06, 0x04, 0x02, 0x01}, /* 5, -13.5dB */ + {0x0c, 0x0c, 0x0a, 0x09, 0x06, 0x04, 0x02, 0x01}, /* 6, -13.0dB */ + {0x0d, 0x0c, 0x0b, 0x09, 0x07, 0x04, 0x02, 0x01}, /* 7, -12.5dB */ + {0x0d, 0x0d, 0x0c, 0x0a, 0x07, 0x05, 0x02, 0x01}, /* 8, -12.0dB */ + {0x0e, 0x0e, 0x0c, 0x0a, 0x08, 0x05, 0x02, 0x01}, /* 9, -11.5dB */ + {0x0f, 0x0f, 0x0d, 0x0b, 0x08, 0x05, 0x03, 0x01}, /* 10, -11.0dB */ + {0x10, 0x10, 0x0e, 0x0b, 0x08, 0x05, 0x03, 0x01}, /* 11, -10.5dB */ + {0x11, 0x11, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01}, /* 12, -10.0dB */ + {0x12, 0x12, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01}, /* 13, -9.5dB */ + {0x13, 0x13, 0x10, 0x0d, 0x0a, 0x06, 0x03, 0x01}, /* 14, -9.0dB */ + {0x14, 0x14, 0x11, 0x0e, 0x0b, 0x07, 0x03, 0x02}, /* 15, -8.5dB */ + {0x16, 0x15, 0x12, 0x0f, 0x0b, 0x07, 0x04, 0x01}, /* 16, -8.0dB */ + {0x17, 0x16, 0x13, 0x10, 0x0c, 0x08, 0x04, 0x02}, /* 17, -7.5dB */ + {0x18, 0x17, 0x15, 0x11, 0x0c, 0x08, 0x04, 0x02}, /* 18, -7.0dB */ + {0x1a, 0x19, 0x16, 0x12, 0x0d, 0x09, 0x04, 0x02}, /* 19, -6.5dB */ + {0x1b, 0x1a, 0x17, 0x13, 0x0e, 0x09, 0x04, 0x02}, /* 20, -6.0dB */ + {0x1d, 0x1c, 0x18, 0x14, 0x0f, 0x0a, 0x05, 0x02}, /* 21, -5.5dB */ + {0x1f, 0x1e, 0x1a, 0x15, 0x10, 0x0a, 0x05, 0x02}, /* 22, -5.0dB */ + {0x20, 0x20, 0x1b, 0x16, 0x11, 0x08, 0x05, 0x02}, /* 23, -4.5dB */ + {0x22, 0x21, 0x1d, 0x18, 0x11, 0x0b, 0x06, 0x02}, /* 24, -4.0dB */ + {0x24, 0x23, 0x1f, 0x19, 0x13, 0x0c, 0x06, 0x03}, /* 25, -3.5dB */ + {0x26, 0x25, 0x21, 0x1b, 0x14, 0x0d, 0x06, 0x03}, /* 26, -3.0dB */ + {0x28, 0x28, 0x22, 0x1c, 0x15, 0x0d, 0x07, 0x03}, /* 27, -2.5dB */ + {0x2b, 0x2a, 0x25, 0x1e, 0x16, 0x0e, 0x07, 0x03}, /* 28, -2.0dB */ + {0x2d, 0x2d, 0x27, 0x1f, 0x18, 0x0f, 0x08, 0x03}, /* 29, -1.5dB */ + {0x30, 0x2f, 0x29, 0x21, 0x19, 0x10, 0x08, 0x03}, /* 30, -1.0dB */ + {0x33, 0x32, 0x2b, 0x23, 0x1a, 0x11, 0x08, 0x04}, /* 31, -0.5dB */ + {0x36, 0x35, 0x2e, 0x25, 0x1c, 0x12, 0x09, 0x04} /* 32, +0dB */ +}; + +static const u8 cckswing_table_ch14[CCK_TABLE_SIZE][8] = { + {0x09, 0x08, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00}, /* 0, -16.0dB */ + {0x09, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 1, -15.5dB */ + {0x0a, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 2, -15.0dB */ + {0x0a, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 3, -14.5dB */ + {0x0b, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 4, -14.0dB */ + {0x0b, 0x0b, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00}, /* 5, -13.5dB */ + {0x0c, 0x0c, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00}, /* 6, -13.0dB */ + {0x0d, 0x0c, 0x0b, 0x06, 0x00, 0x00, 0x00, 0x00}, /* 7, -12.5dB */ + {0x0d, 0x0d, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00}, /* 8, -12.0dB */ + {0x0e, 0x0e, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00}, /* 9, -11.5dB */ + {0x0f, 0x0f, 0x0d, 0x08, 0x00, 0x00, 0x00, 0x00}, /* 10, -11.0dB */ + {0x10, 0x10, 0x0e, 0x08, 0x00, 0x00, 0x00, 0x00}, /* 11, -10.5dB */ + {0x11, 0x11, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00}, /* 12, -10.0dB */ + {0x12, 0x12, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00}, /* 13, -9.5dB */ + {0x13, 0x13, 0x10, 0x0a, 0x00, 0x00, 0x00, 0x00}, /* 14, -9.0dB */ + {0x14, 0x14, 0x11, 0x0a, 0x00, 0x00, 0x00, 0x00}, /* 15, -8.5dB */ + {0x16, 0x15, 0x12, 0x0b, 0x00, 0x00, 0x00, 0x00}, /* 16, -8.0dB */ + {0x17, 0x16, 0x13, 0x0b, 0x00, 0x00, 0x00, 0x00}, /* 17, -7.5dB */ + {0x18, 0x17, 0x15, 0x0c, 0x00, 0x00, 0x00, 0x00}, /* 18, -7.0dB */ + {0x1a, 0x19, 0x16, 0x0d, 0x00, 0x00, 0x00, 0x00}, /* 19, -6.5dB */ + {0x1b, 0x1a, 0x17, 0x0e, 0x00, 0x00, 0x00, 0x00}, /* 20, -6.0dB */ + {0x1d, 0x1c, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00}, /* 21, -5.5dB */ + {0x1f, 0x1e, 0x1a, 0x0f, 0x00, 0x00, 0x00, 0x00}, /* 22, -5.0dB */ + {0x20, 0x20, 0x1b, 0x10, 0x00, 0x00, 0x00, 0x00}, /* 23, -4.5dB */ + {0x22, 0x21, 0x1d, 0x11, 0x00, 0x00, 0x00, 0x00}, /* 24, -4.0dB */ + {0x24, 0x23, 0x1f, 0x12, 0x00, 0x00, 0x00, 0x00}, /* 25, -3.5dB */ + {0x26, 0x25, 0x21, 0x13, 0x00, 0x00, 0x00, 0x00}, /* 26, -3.0dB */ + {0x28, 0x28, 0x24, 0x14, 0x00, 0x00, 0x00, 0x00}, /* 27, -2.5dB */ + {0x2b, 0x2a, 0x25, 0x15, 0x00, 0x00, 0x00, 0x00}, /* 28, -2.0dB */ + {0x2d, 0x2d, 0x17, 0x17, 0x00, 0x00, 0x00, 0x00}, /* 29, -1.5dB */ + {0x30, 0x2f, 0x29, 0x18, 0x00, 0x00, 0x00, 0x00}, /* 30, -1.0dB */ + {0x33, 0x32, 0x2b, 0x19, 0x00, 0x00, 0x00, 0x00}, /* 31, -0.5dB */ + {0x36, 0x35, 0x2e, 0x1b, 0x00, 0x00, 0x00, 0x00} /* 32, +0dB */ +}; + +static const u32 edca_setting_dl[PEER_MAX] = { + 0xa44f, /* 0 UNKNOWN */ + 0x5ea44f, /* 1 REALTEK_90 */ + 0x5e4322, /* 2 REALTEK_92SE */ + 0x5ea42b, /* 3 BROAD */ + 0xa44f, /* 4 RAL */ + 0xa630, /* 5 ATH */ + 0x5ea630, /* 6 CISCO */ + 0x5ea42b, /* 7 MARVELL */ +}; + +static const u32 edca_setting_ul[PEER_MAX] = { + 0x5e4322, /* 0 UNKNOWN */ + 0xa44f, /* 1 REALTEK_90 */ + 0x5ea44f, /* 2 REALTEK_92SE */ + 0x5ea32b, /* 3 BROAD */ + 0x5ea422, /* 4 RAL */ + 0x5ea322, /* 5 ATH */ + 0x3ea430, /* 6 CISCO */ + 0x5ea44f, /* 7 MARV */ +}; + +void rtl8723be_dm_txpower_track_adjust(struct ieee80211_hw *hw, u8 type, + u8 *pdirection, u32 *poutwrite_val) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_dm *rtldm = rtl_dm(rtl_priv(hw)); + u8 pwr_val = 0; + u8 ofdm_base = rtlpriv->dm.swing_idx_ofdm_base[RF90_PATH_A]; + u8 ofdm_val = rtlpriv->dm.swing_idx_ofdm[RF90_PATH_A]; + u8 cck_base = rtldm->swing_idx_cck_base; + u8 cck_val = rtldm->swing_idx_cck; + + if (type == 0) { + if (ofdm_val <= ofdm_base) { + *pdirection = 1; + pwr_val = ofdm_base - ofdm_val; + } else { + *pdirection = 2; + pwr_val = ofdm_val - ofdm_base; + } + } else if (type == 1) { + if (cck_val <= cck_base) { + *pdirection = 1; + pwr_val = cck_base - cck_val; + } else { + *pdirection = 2; + pwr_val = cck_val - cck_base; + } + } + + if (pwr_val >= TXPWRTRACK_MAX_IDX && (*pdirection == 1)) + pwr_val = TXPWRTRACK_MAX_IDX; + + *poutwrite_val = pwr_val | (pwr_val << 8) | + (pwr_val << 16) | (pwr_val << 24); +} + +static void rtl8723be_dm_diginit(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct dig_t *dm_digtable = &rtlpriv->dm_digtable; + + dm_digtable->dig_enable_flag = true; + dm_digtable->cur_igvalue = rtl_get_bbreg(hw, + ROFDM0_XAAGCCORE1, 0x7f); + dm_digtable->rssi_lowthresh = DM_DIG_THRESH_LOW; + dm_digtable->rssi_highthresh = DM_DIG_THRESH_HIGH; + dm_digtable->fa_lowthresh = DM_FALSEALARM_THRESH_LOW; + dm_digtable->fa_highthresh = DM_FALSEALARM_THRESH_HIGH; + dm_digtable->rx_gain_max = DM_DIG_MAX; + dm_digtable->rx_gain_min = DM_DIG_MIN; + dm_digtable->back_val = DM_DIG_BACKOFF_DEFAULT; + dm_digtable->back_range_max = DM_DIG_BACKOFF_MAX; + dm_digtable->back_range_min = DM_DIG_BACKOFF_MIN; + dm_digtable->pre_cck_cca_thres = 0xff; + dm_digtable->cur_cck_cca_thres = 0x83; + dm_digtable->forbidden_igi = DM_DIG_MIN; + dm_digtable->large_fa_hit = 0; + dm_digtable->recover_cnt = 0; + dm_digtable->dig_min_0 = DM_DIG_MIN; + dm_digtable->dig_min_1 = DM_DIG_MIN; + dm_digtable->media_connect_0 = false; + dm_digtable->media_connect_1 = false; + rtlpriv->dm.dm_initialgain_enable = true; + dm_digtable->bt30_cur_igi = 0x32; +} + +void rtl8723be_dm_init_rate_adaptive_mask(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rate_adaptive *ra = &(rtlpriv->ra); + + ra->ratr_state = DM_RATR_STA_INIT; + ra->pre_ratr_state = DM_RATR_STA_INIT; + + if (rtlpriv->dm.dm_type == DM_TYPE_BYDRIVER) + rtlpriv->dm.useramask = true; + else + rtlpriv->dm.useramask = false; + + ra->high_rssi_thresh_for_ra = 50; + ra->low_rssi_thresh_for_ra40m = 20; +} + +static void rtl8723be_dm_init_txpower_tracking(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + rtlpriv->dm.txpower_tracking = true; + rtlpriv->dm.txpower_track_control = true; + rtlpriv->dm.thermalvalue = 0; + + rtlpriv->dm.ofdm_index[0] = 30; + rtlpriv->dm.cck_index = 20; + + rtlpriv->dm.swing_idx_cck_base = rtlpriv->dm.cck_index; + + rtlpriv->dm.swing_idx_ofdm_base[0] = rtlpriv->dm.ofdm_index[0]; + rtlpriv->dm.delta_power_index[RF90_PATH_A] = 0; + rtlpriv->dm.delta_power_index_last[RF90_PATH_A] = 0; + rtlpriv->dm.power_index_offset[RF90_PATH_A] = 0; + + RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, + " rtlpriv->dm.txpower_tracking = %d\n", + rtlpriv->dm.txpower_tracking); +} + +static void rtl8723be_dm_init_dynamic_atc_switch(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + rtlpriv->dm.crystal_cap = rtlpriv->efuse.crystalcap; + rtlpriv->dm.atc_status = rtl_get_bbreg(hw, ROFDM1_CFOTRACKING, 0x800); + rtlpriv->dm.cfo_threshold = CFO_THRESHOLD_XTAL; +} + +void rtl8723be_dm_init(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + rtlpriv->dm.dm_type = DM_TYPE_BYDRIVER; + rtl8723be_dm_diginit(hw); + rtl8723be_dm_init_rate_adaptive_mask(hw); + rtl8723_dm_init_edca_turbo(hw); + rtl8723_dm_init_dynamic_bb_powersaving(hw); + rtl8723_dm_init_dynamic_txpower(hw); + rtl8723be_dm_init_txpower_tracking(hw); + rtl8723be_dm_init_dynamic_atc_switch(hw); +} + +static void rtl8723be_dm_find_minimum_rssi(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct dig_t *rtl_dm_dig = &(rtlpriv->dm_digtable); + struct rtl_mac *mac = rtl_mac(rtlpriv); + + /* Determine the minimum RSSI */ + if ((mac->link_state < MAC80211_LINKED) && + (rtlpriv->dm.entry_min_undec_sm_pwdb == 0)) { + rtl_dm_dig->min_undec_pwdb_for_dm = 0; + RT_TRACE(rtlpriv, COMP_BB_POWERSAVING, DBG_LOUD, + "Not connected to any\n"); + } + if (mac->link_state >= MAC80211_LINKED) { + if (mac->opmode == NL80211_IFTYPE_AP || + mac->opmode == NL80211_IFTYPE_ADHOC) { + rtl_dm_dig->min_undec_pwdb_for_dm = + rtlpriv->dm.entry_min_undec_sm_pwdb; + RT_TRACE(rtlpriv, COMP_BB_POWERSAVING, DBG_LOUD, + "AP Client PWDB = 0x%lx\n", + rtlpriv->dm.entry_min_undec_sm_pwdb); + } else { + rtl_dm_dig->min_undec_pwdb_for_dm = + rtlpriv->dm.undec_sm_pwdb; + RT_TRACE(rtlpriv, COMP_BB_POWERSAVING, DBG_LOUD, + "STA Default Port PWDB = 0x%x\n", + rtl_dm_dig->min_undec_pwdb_for_dm); + } + } else { + rtl_dm_dig->min_undec_pwdb_for_dm = + rtlpriv->dm.entry_min_undec_sm_pwdb; + RT_TRACE(rtlpriv, COMP_BB_POWERSAVING, DBG_LOUD, + "AP Ext Port or disconnet PWDB = 0x%x\n", + rtl_dm_dig->min_undec_pwdb_for_dm); + } + RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, "MinUndecoratedPWDBForDM =%d\n", + rtl_dm_dig->min_undec_pwdb_for_dm); +} + +static void rtl8723be_dm_check_rssi_monitor(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_sta_info *drv_priv; + u8 h2c_parameter[3] = { 0 }; + long tmp_entry_max_pwdb = 0, tmp_entry_min_pwdb = 0xff; + + /* AP & ADHOC & MESH */ + spin_lock_bh(&rtlpriv->locks.entry_list_lock); + list_for_each_entry(drv_priv, &rtlpriv->entry_list, list) { + if (drv_priv->rssi_stat.undec_sm_pwdb < + tmp_entry_min_pwdb) + tmp_entry_min_pwdb = + drv_priv->rssi_stat.undec_sm_pwdb; + if (drv_priv->rssi_stat.undec_sm_pwdb > + tmp_entry_max_pwdb) + tmp_entry_max_pwdb = + drv_priv->rssi_stat.undec_sm_pwdb; + } + spin_unlock_bh(&rtlpriv->locks.entry_list_lock); + + /* If associated entry is found */ + if (tmp_entry_max_pwdb != 0) { + rtlpriv->dm.entry_max_undec_sm_pwdb = tmp_entry_max_pwdb; + RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, + "EntryMaxPWDB = 0x%lx(%ld)\n", + tmp_entry_max_pwdb, tmp_entry_max_pwdb); + } else { + rtlpriv->dm.entry_max_undec_sm_pwdb = 0; + } + /* If associated entry is found */ + if (tmp_entry_min_pwdb != 0xff) { + rtlpriv->dm.entry_min_undec_sm_pwdb = tmp_entry_min_pwdb; + RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, + "EntryMinPWDB = 0x%lx(%ld)\n", + tmp_entry_min_pwdb, tmp_entry_min_pwdb); + } else { + rtlpriv->dm.entry_min_undec_sm_pwdb = 0; + } + /* Indicate Rx signal strength to FW. */ + if (rtlpriv->dm.useramask) { + h2c_parameter[2] = (u8) (rtlpriv->dm.undec_sm_pwdb & 0xFF); + h2c_parameter[1] = 0x20; + h2c_parameter[0] = 0; + rtl8723be_fill_h2c_cmd(hw, H2C_RSSI_REPORT, 3, h2c_parameter); + } else { + rtl_write_byte(rtlpriv, 0x4fe, rtlpriv->dm.undec_sm_pwdb); + } + rtl8723be_dm_find_minimum_rssi(hw); + rtlpriv->dm_digtable.rssi_val_min = + rtlpriv->dm_digtable.min_undec_pwdb_for_dm; +} + +void rtl8723be_dm_write_dig(struct ieee80211_hw *hw, u8 current_igi) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + if (rtlpriv->dm_digtable.cur_igvalue != current_igi) { + rtl_set_bbreg(hw, ROFDM0_XAAGCCORE1, 0x7f, current_igi); + if (rtlpriv->phy.rf_type != RF_1T1R) + rtl_set_bbreg(hw, ROFDM0_XBAGCCORE1, 0x7f, current_igi); + } + rtlpriv->dm_digtable.pre_igvalue = rtlpriv->dm_digtable.cur_igvalue; + rtlpriv->dm_digtable.cur_igvalue = current_igi; +} + +static void rtl8723be_dm_dig(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct dig_t *dm_digtable = &(rtlpriv->dm_digtable); + u8 dig_dynamic_min, dig_maxofmin; + bool firstconnect, firstdisconnect; + u8 dm_dig_max, dm_dig_min; + u8 current_igi = dm_digtable->cur_igvalue; + u8 offset; + + /* AP, BT */ + if (mac->act_scanning) + return; + + dig_dynamic_min = dm_digtable->dig_min_0; + firstconnect = (mac->link_state >= MAC80211_LINKED) && + !dm_digtable->media_connect_0; + firstdisconnect = (mac->link_state < MAC80211_LINKED) && + dm_digtable->media_connect_0; + + dm_dig_max = 0x5a; + dm_dig_min = DM_DIG_MIN; + dig_maxofmin = DM_DIG_MAX_AP; + + if (mac->link_state >= MAC80211_LINKED) { + if ((dm_digtable->rssi_val_min + 10) > dm_dig_max) + dm_digtable->rx_gain_max = dm_dig_max; + else if ((dm_digtable->rssi_val_min + 10) < dm_dig_min) + dm_digtable->rx_gain_max = dm_dig_min; + else + dm_digtable->rx_gain_max = + dm_digtable->rssi_val_min + 10; + + if (rtlpriv->dm.one_entry_only) { + offset = 12; + if (dm_digtable->rssi_val_min - offset < dm_dig_min) + dig_dynamic_min = dm_dig_min; + else if (dm_digtable->rssi_val_min - offset > + dig_maxofmin) + dig_dynamic_min = dig_maxofmin; + else + dig_dynamic_min = + dm_digtable->rssi_val_min - offset; + } else { + dig_dynamic_min = dm_dig_min; + } + } else { + dm_digtable->rx_gain_max = dm_dig_max; + dig_dynamic_min = dm_dig_min; + RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, "no link\n"); + } + + if (rtlpriv->falsealm_cnt.cnt_all > 10000) { + if (dm_digtable->large_fa_hit != 3) + dm_digtable->large_fa_hit++; + if (dm_digtable->forbidden_igi < current_igi) { + dm_digtable->forbidden_igi = current_igi; + dm_digtable->large_fa_hit = 1; + } + + if (dm_digtable->large_fa_hit >= 3) { + if ((dm_digtable->forbidden_igi + 1) > + dm_digtable->rx_gain_max) + dm_digtable->rx_gain_min = + dm_digtable->rx_gain_max; + else + dm_digtable->rx_gain_min = + dm_digtable->forbidden_igi + 1; + dm_digtable->recover_cnt = 3600; + } + } else { + if (dm_digtable->recover_cnt != 0) { + dm_digtable->recover_cnt--; + } else { + if (dm_digtable->large_fa_hit < 3) { + if ((dm_digtable->forbidden_igi - 1) < + dig_dynamic_min) { + dm_digtable->forbidden_igi = + dig_dynamic_min; + dm_digtable->rx_gain_min = + dig_dynamic_min; + } else { + dm_digtable->forbidden_igi--; + dm_digtable->rx_gain_min = + dm_digtable->forbidden_igi + 1; + } + } else { + dm_digtable->large_fa_hit = 0; + } + } + } + if (dm_digtable->rx_gain_min > dm_digtable->rx_gain_max) + dm_digtable->rx_gain_min = dm_digtable->rx_gain_max; + + if (mac->link_state >= MAC80211_LINKED) { + if (firstconnect) { + if (dm_digtable->rssi_val_min <= dig_maxofmin) + current_igi = dm_digtable->rssi_val_min; + else + current_igi = dig_maxofmin; + + dm_digtable->large_fa_hit = 0; + } else { + if (rtlpriv->falsealm_cnt.cnt_all > DM_DIG_FA_TH2) + current_igi += 4; + else if (rtlpriv->falsealm_cnt.cnt_all > DM_DIG_FA_TH1) + current_igi += 2; + else if (rtlpriv->falsealm_cnt.cnt_all < DM_DIG_FA_TH0) + current_igi -= 2; + } + } else { + if (firstdisconnect) { + current_igi = dm_digtable->rx_gain_min; + } else { + if (rtlpriv->falsealm_cnt.cnt_all > 10000) + current_igi += 4; + else if (rtlpriv->falsealm_cnt.cnt_all > 8000) + current_igi += 2; + else if (rtlpriv->falsealm_cnt.cnt_all < 500) + current_igi -= 2; + } + } + + if (current_igi > dm_digtable->rx_gain_max) + current_igi = dm_digtable->rx_gain_max; + else if (current_igi < dm_digtable->rx_gain_min) + current_igi = dm_digtable->rx_gain_min; + + rtl8723be_dm_write_dig(hw, current_igi); + dm_digtable->media_connect_0 = + ((mac->link_state >= MAC80211_LINKED) ? true : false); + dm_digtable->dig_min_0 = dig_dynamic_min; +} + +static void rtl8723be_dm_false_alarm_counter_statistics(struct ieee80211_hw *hw) +{ + u32 ret_value; + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct false_alarm_statistics *falsealm_cnt = &(rtlpriv->falsealm_cnt); + + rtl_set_bbreg(hw, DM_REG_OFDM_FA_HOLDC_11N, BIT(31), 1); + rtl_set_bbreg(hw, DM_REG_OFDM_FA_RSTD_11N, BIT(31), 1); + + ret_value = rtl_get_bbreg(hw, DM_REG_OFDM_FA_TYPE1_11N, MASKDWORD); + falsealm_cnt->cnt_fast_fsync_fail = ret_value & 0xffff; + falsealm_cnt->cnt_sb_search_fail = (ret_value & 0xffff0000) >> 16; + + ret_value = rtl_get_bbreg(hw, DM_REG_OFDM_FA_TYPE2_11N, MASKDWORD); + falsealm_cnt->cnt_ofdm_cca = ret_value & 0xffff; + falsealm_cnt->cnt_parity_fail = (ret_value & 0xffff0000) >> 16; + + ret_value = rtl_get_bbreg(hw, DM_REG_OFDM_FA_TYPE3_11N, MASKDWORD); + falsealm_cnt->cnt_rate_illegal = ret_value & 0xffff; + falsealm_cnt->cnt_crc8_fail = (ret_value & 0xffff0000) >> 16; + + ret_value = rtl_get_bbreg(hw, DM_REG_OFDM_FA_TYPE4_11N, MASKDWORD); + falsealm_cnt->cnt_mcs_fail = ret_value & 0xffff; + + falsealm_cnt->cnt_ofdm_fail = falsealm_cnt->cnt_parity_fail + + falsealm_cnt->cnt_rate_illegal + + falsealm_cnt->cnt_crc8_fail + + falsealm_cnt->cnt_mcs_fail + + falsealm_cnt->cnt_fast_fsync_fail + + falsealm_cnt->cnt_sb_search_fail; + + rtl_set_bbreg(hw, DM_REG_CCK_FA_RST_11N, BIT(12), 1); + rtl_set_bbreg(hw, DM_REG_CCK_FA_RST_11N, BIT(14), 1); + + ret_value = rtl_get_bbreg(hw, DM_REG_CCK_FA_RST_11N, MASKBYTE0); + falsealm_cnt->cnt_cck_fail = ret_value; + + ret_value = rtl_get_bbreg(hw, DM_REG_CCK_FA_MSB_11N, MASKBYTE3); + falsealm_cnt->cnt_cck_fail += (ret_value & 0xff) << 8; + + ret_value = rtl_get_bbreg(hw, DM_REG_CCK_CCA_CNT_11N, MASKDWORD); + falsealm_cnt->cnt_cck_cca = ((ret_value & 0xff) << 8) | + ((ret_value & 0xff00) >> 8); + + falsealm_cnt->cnt_all = falsealm_cnt->cnt_fast_fsync_fail + + falsealm_cnt->cnt_sb_search_fail + + falsealm_cnt->cnt_parity_fail + + falsealm_cnt->cnt_rate_illegal + + falsealm_cnt->cnt_crc8_fail + + falsealm_cnt->cnt_mcs_fail + + falsealm_cnt->cnt_cck_fail; + + falsealm_cnt->cnt_cca_all = falsealm_cnt->cnt_ofdm_cca + + falsealm_cnt->cnt_cck_cca; + + rtl_set_bbreg(hw, DM_REG_OFDM_FA_RSTC_11N, BIT(31), 1); + rtl_set_bbreg(hw, DM_REG_OFDM_FA_RSTC_11N, BIT(31), 0); + rtl_set_bbreg(hw, DM_REG_OFDM_FA_RSTD_11N, BIT(27), 1); + rtl_set_bbreg(hw, DM_REG_OFDM_FA_RSTD_11N, BIT(27), 0); + + rtl_set_bbreg(hw, DM_REG_OFDM_FA_HOLDC_11N, BIT(31), 0); + rtl_set_bbreg(hw, DM_REG_OFDM_FA_RSTD_11N, BIT(31), 0); + + rtl_set_bbreg(hw, DM_REG_CCK_FA_RST_11N, BIT(13) | BIT(12), 0); + rtl_set_bbreg(hw, DM_REG_CCK_FA_RST_11N, BIT(13) | BIT(12), 2); + + rtl_set_bbreg(hw, DM_REG_CCK_FA_RST_11N, BIT(15) | BIT(14), 0); + rtl_set_bbreg(hw, DM_REG_CCK_FA_RST_11N, BIT(15) | BIT(14), 2); + + RT_TRACE(rtlpriv, COMP_DIG, DBG_TRACE, + "cnt_parity_fail = %d, cnt_rate_illegal = %d, " + "cnt_crc8_fail = %d, cnt_mcs_fail = %d\n", + falsealm_cnt->cnt_parity_fail, + falsealm_cnt->cnt_rate_illegal, + falsealm_cnt->cnt_crc8_fail, + falsealm_cnt->cnt_mcs_fail); + + RT_TRACE(rtlpriv, COMP_DIG, DBG_TRACE, + "cnt_ofdm_fail = %x, cnt_cck_fail = %x," + " cnt_all = %x\n", + falsealm_cnt->cnt_ofdm_fail, + falsealm_cnt->cnt_cck_fail, + falsealm_cnt->cnt_all); +} + +static void rtl8723be_dm_dynamic_txpower(struct ieee80211_hw *hw) +{ + /* 8723BE does not support ODM_BB_DYNAMIC_TXPWR*/ + return; +} + +static void rtl8723be_set_iqk_matrix(struct ieee80211_hw *hw, u8 ofdm_index, + u8 rfpath, long iqk_result_x, + long iqk_result_y) +{ + long ele_a = 0, ele_d, ele_c = 0, value32; + + if (ofdm_index >= 43) + ofdm_index = 43 - 1; + + ele_d = (ofdmswing_table[ofdm_index] & 0xFFC00000) >> 22; + + if (iqk_result_x != 0) { + if ((iqk_result_x & 0x00000200) != 0) + iqk_result_x = iqk_result_x | 0xFFFFFC00; + ele_a = ((iqk_result_x * ele_d) >> 8) & 0x000003FF; + + if ((iqk_result_y & 0x00000200) != 0) + iqk_result_y = iqk_result_y | 0xFFFFFC00; + ele_c = ((iqk_result_y * ele_d) >> 8) & 0x000003FF; + + switch (rfpath) { + case RF90_PATH_A: + value32 = (ele_d << 22) | + ((ele_c & 0x3F) << 16) | ele_a; + rtl_set_bbreg(hw, ROFDM0_XATXIQIMBALANCE, MASKDWORD, + value32); + value32 = (ele_c & 0x000003C0) >> 6; + rtl_set_bbreg(hw, ROFDM0_XCTXAFE, MASKH4BITS, value32); + value32 = ((iqk_result_x * ele_d) >> 7) & 0x01; + rtl_set_bbreg(hw, ROFDM0_ECCATHRESHOLD, BIT(24), + value32); + break; + default: + break; + } + } else { + switch (rfpath) { + case RF90_PATH_A: + rtl_set_bbreg(hw, ROFDM0_XATXIQIMBALANCE, MASKDWORD, + ofdmswing_table[ofdm_index]); + rtl_set_bbreg(hw, ROFDM0_XCTXAFE, MASKH4BITS, 0x00); + rtl_set_bbreg(hw, ROFDM0_ECCATHRESHOLD, BIT(24), 0x00); + break; + default: + break; + } + } +} + +static void rtl8723be_dm_tx_power_track_set_power(struct ieee80211_hw *hw, + enum pwr_track_control_method method, + u8 rfpath, u8 idx) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct rtl_dm *rtldm = rtl_dm(rtl_priv(hw)); + u8 swing_idx_ofdm_limit = 36; + + if (method == TXAGC) { + rtl8723be_phy_set_txpower_level(hw, rtlphy->current_channel); + } else if (method == BBSWING) { + if (rtldm->swing_idx_cck >= CCK_TABLE_SIZE) + rtldm->swing_idx_cck = CCK_TABLE_SIZE - 1; + + if (!rtldm->cck_inch14) { + rtl_write_byte(rtlpriv, 0xa22, + cckswing_table_ch1ch13[rtldm->swing_idx_cck][0]); + rtl_write_byte(rtlpriv, 0xa23, + cckswing_table_ch1ch13[rtldm->swing_idx_cck][1]); + rtl_write_byte(rtlpriv, 0xa24, + cckswing_table_ch1ch13[rtldm->swing_idx_cck][2]); + rtl_write_byte(rtlpriv, 0xa25, + cckswing_table_ch1ch13[rtldm->swing_idx_cck][3]); + rtl_write_byte(rtlpriv, 0xa26, + cckswing_table_ch1ch13[rtldm->swing_idx_cck][4]); + rtl_write_byte(rtlpriv, 0xa27, + cckswing_table_ch1ch13[rtldm->swing_idx_cck][5]); + rtl_write_byte(rtlpriv, 0xa28, + cckswing_table_ch1ch13[rtldm->swing_idx_cck][6]); + rtl_write_byte(rtlpriv, 0xa29, + cckswing_table_ch1ch13[rtldm->swing_idx_cck][7]); + } else { + rtl_write_byte(rtlpriv, 0xa22, + cckswing_table_ch14[rtldm->swing_idx_cck][0]); + rtl_write_byte(rtlpriv, 0xa23, + cckswing_table_ch14[rtldm->swing_idx_cck][1]); + rtl_write_byte(rtlpriv, 0xa24, + cckswing_table_ch14[rtldm->swing_idx_cck][2]); + rtl_write_byte(rtlpriv, 0xa25, + cckswing_table_ch14[rtldm->swing_idx_cck][3]); + rtl_write_byte(rtlpriv, 0xa26, + cckswing_table_ch14[rtldm->swing_idx_cck][4]); + rtl_write_byte(rtlpriv, 0xa27, + cckswing_table_ch14[rtldm->swing_idx_cck][5]); + rtl_write_byte(rtlpriv, 0xa28, + cckswing_table_ch14[rtldm->swing_idx_cck][6]); + rtl_write_byte(rtlpriv, 0xa29, + cckswing_table_ch14[rtldm->swing_idx_cck][7]); + } + + if (rfpath == RF90_PATH_A) { + if (rtldm->swing_idx_ofdm[RF90_PATH_A] < + swing_idx_ofdm_limit) + swing_idx_ofdm_limit = + rtldm->swing_idx_ofdm[RF90_PATH_A]; + + rtl8723be_set_iqk_matrix(hw, + rtldm->swing_idx_ofdm[rfpath], rfpath, + rtlphy->iqk_matrix[idx].value[0][0], + rtlphy->iqk_matrix[idx].value[0][1]); + } else if (rfpath == RF90_PATH_B) { + if (rtldm->swing_idx_ofdm[RF90_PATH_B] < + swing_idx_ofdm_limit) + swing_idx_ofdm_limit = + rtldm->swing_idx_ofdm[RF90_PATH_B]; + + rtl8723be_set_iqk_matrix(hw, + rtldm->swing_idx_ofdm[rfpath], rfpath, + rtlphy->iqk_matrix[idx].value[0][4], + rtlphy->iqk_matrix[idx].value[0][5]); + } + } else { + return; + } +} + +static void txpwr_track_cb_therm(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + struct rtl_dm *rtldm = rtl_dm(rtl_priv(hw)); + u8 thermalvalue = 0, delta, delta_lck, delta_iqk; + u8 thermalvalue_avg_count = 0; + u32 thermalvalue_avg = 0; + int i = 0; + + u8 ofdm_min_index = 6; + u8 index = 0; + + char delta_swing_table_idx_tup_a[] = { + 0, 0, 1, 2, 2, 2, 3, 3, 3, 4, 5, + 5, 6, 6, 7, 7, 8, 8, 9, 9, 9, 10, + 10, 11, 11, 12, 12, 13, 14, 15}; + char delta_swing_table_idx_tdown_a[] = { + 0, 0, 1, 2, 2, 2, 3, 3, 3, 4, 5, + 5, 6, 6, 6, 6, 7, 7, 7, 8, 8, 9, + 9, 10, 10, 11, 12, 13, 14, 15}; + + /*Initilization ( 7 steps in total)*/ + rtlpriv->dm.txpower_trackinginit = true; + RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, + "rtl8723be_dm_txpower_tracking" + "_callback_thermalmeter\n"); + + thermalvalue = (u8)rtl_get_rfreg(hw, RF90_PATH_A, RF_T_METER, 0xfc00); + if (!rtlpriv->dm.txpower_track_control || thermalvalue == 0 || + rtlefuse->eeprom_thermalmeter == 0xFF) + return; + RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, + "Readback Thermal Meter = 0x%x pre thermal meter 0x%x " + "eeprom_thermalmeter 0x%x\n", + thermalvalue, rtldm->thermalvalue, + rtlefuse->eeprom_thermalmeter); + /*3 Initialize ThermalValues of RFCalibrateInfo*/ + if (!rtldm->thermalvalue) { + rtlpriv->dm.thermalvalue_lck = thermalvalue; + rtlpriv->dm.thermalvalue_iqk = thermalvalue; + } + + /*4 Calculate average thermal meter*/ + rtldm->thermalvalue_avg[rtldm->thermalvalue_avg_index] = thermalvalue; + rtldm->thermalvalue_avg_index++; + if (rtldm->thermalvalue_avg_index == AVG_THERMAL_NUM_8723BE) + rtldm->thermalvalue_avg_index = 0; + + for (i = 0; i < AVG_THERMAL_NUM_8723BE; i++) { + if (rtldm->thermalvalue_avg[i]) { + thermalvalue_avg += rtldm->thermalvalue_avg[i]; + thermalvalue_avg_count++; + } + } + + if (thermalvalue_avg_count) + thermalvalue = (u8)(thermalvalue_avg / thermalvalue_avg_count); + + /* 5 Calculate delta, delta_LCK, delta_IQK.*/ + delta = (thermalvalue > rtlpriv->dm.thermalvalue) ? + (thermalvalue - rtlpriv->dm.thermalvalue) : + (rtlpriv->dm.thermalvalue - thermalvalue); + delta_lck = (thermalvalue > rtlpriv->dm.thermalvalue_lck) ? + (thermalvalue - rtlpriv->dm.thermalvalue_lck) : + (rtlpriv->dm.thermalvalue_lck - thermalvalue); + delta_iqk = (thermalvalue > rtlpriv->dm.thermalvalue_iqk) ? + (thermalvalue - rtlpriv->dm.thermalvalue_iqk) : + (rtlpriv->dm.thermalvalue_iqk - thermalvalue); + + RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, + "Readback Thermal Meter = 0x%x pre thermal meter 0x%x " + "eeprom_thermalmeter 0x%x delta 0x%x " + "delta_lck 0x%x delta_iqk 0x%x\n", + thermalvalue, rtlpriv->dm.thermalvalue, + rtlefuse->eeprom_thermalmeter, delta, delta_lck, delta_iqk); + /* 6 If necessary, do LCK.*/ + if (delta_lck >= IQK_THRESHOLD) { + rtlpriv->dm.thermalvalue_lck = thermalvalue; + rtl8723be_phy_lc_calibrate(hw); + } + + /* 7 If necessary, move the index of + * swing table to adjust Tx power. + */ + if (delta > 0 && rtlpriv->dm.txpower_track_control) { + delta = (thermalvalue > rtlefuse->eeprom_thermalmeter) ? + (thermalvalue - rtlefuse->eeprom_thermalmeter) : + (rtlefuse->eeprom_thermalmeter - thermalvalue); + + if (delta >= TXSCALE_TABLE_SIZE) + delta = TXSCALE_TABLE_SIZE - 1; + /* 7.1 Get the final CCK_index and + * OFDM_index for each swing table. + */ + if (thermalvalue > rtlefuse->eeprom_thermalmeter) { + rtldm->delta_power_index_last[RF90_PATH_A] = + rtldm->delta_power_index[RF90_PATH_A]; + rtldm->delta_power_index[RF90_PATH_A] = + delta_swing_table_idx_tup_a[delta]; + } else { + rtldm->delta_power_index_last[RF90_PATH_A] = + rtldm->delta_power_index[RF90_PATH_A]; + rtldm->delta_power_index[RF90_PATH_A] = + -1 * delta_swing_table_idx_tdown_a[delta]; + } + + /* 7.2 Handle boundary conditions of index.*/ + if (rtldm->delta_power_index[RF90_PATH_A] == + rtldm->delta_power_index_last[RF90_PATH_A]) + rtldm->power_index_offset[RF90_PATH_A] = 0; + else + rtldm->power_index_offset[RF90_PATH_A] = + rtldm->delta_power_index[RF90_PATH_A] - + rtldm->delta_power_index_last[RF90_PATH_A]; + + rtldm->ofdm_index[0] = + rtldm->swing_idx_ofdm_base[RF90_PATH_A] + + rtldm->power_index_offset[RF90_PATH_A]; + rtldm->cck_index = rtldm->swing_idx_cck_base + + rtldm->power_index_offset[RF90_PATH_A]; + + rtldm->swing_idx_cck = rtldm->cck_index; + rtldm->swing_idx_ofdm[0] = rtldm->ofdm_index[0]; + + if (rtldm->ofdm_index[0] > OFDM_TABLE_SIZE - 1) + rtldm->ofdm_index[0] = OFDM_TABLE_SIZE - 1; + else if (rtldm->ofdm_index[0] < ofdm_min_index) + rtldm->ofdm_index[0] = ofdm_min_index; + + if (rtldm->cck_index > CCK_TABLE_SIZE - 1) + rtldm->cck_index = CCK_TABLE_SIZE - 1; + else if (rtldm->cck_index < 0) + rtldm->cck_index = 0; + } else { + rtldm->power_index_offset[RF90_PATH_A] = 0; + } + + if ((rtldm->power_index_offset[RF90_PATH_A] != 0) && + (rtldm->txpower_track_control)) { + rtldm->done_txpower = true; + if (thermalvalue > rtlefuse->eeprom_thermalmeter) + rtl8723be_dm_tx_power_track_set_power(hw, BBSWING, 0, + index); + else + rtl8723be_dm_tx_power_track_set_power(hw, BBSWING, 0, + index); + + rtldm->swing_idx_cck_base = rtldm->swing_idx_cck; + rtldm->swing_idx_ofdm_base[RF90_PATH_A] = + rtldm->swing_idx_ofdm[0]; + rtldm->thermalvalue = thermalvalue; + } + + if (delta_iqk >= IQK_THRESHOLD) { + rtldm->thermalvalue_iqk = thermalvalue; + rtl8723be_phy_iq_calibrate(hw, false); + } + + rtldm->txpowercount = 0; + RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, "end\n"); +} + +void rtl8723be_dm_check_txpower_tracking(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + static u8 tm_trigger; + + if (!rtlpriv->dm.txpower_tracking) + return; + + if (!tm_trigger) { + rtl_set_rfreg(hw, RF90_PATH_A, RF_T_METER, BIT(17) | BIT(16), + 0x03); + RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, + "Trigger 8723be Thermal Meter!!\n"); + tm_trigger = 1; + return; + } else { + RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, + "Schedule TxPowerTracking !!\n"); + txpwr_track_cb_therm(hw); + tm_trigger = 0; + } +} + +static void rtl8723be_dm_refresh_rate_adaptive_mask(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct rate_adaptive *ra = &(rtlpriv->ra); + struct ieee80211_sta *sta = NULL; + u32 low_rssithresh_for_ra = ra->low2high_rssi_thresh_for_ra40m; + u32 high_rssithresh_for_ra = ra->high_rssi_thresh_for_ra; + u8 go_up_gap = 5; + + if (is_hal_stop(rtlhal)) { + RT_TRACE(rtlpriv, COMP_RATE, DBG_LOUD, + "driver is going to unload\n"); + return; + } + + if (!rtlpriv->dm.useramask) { + RT_TRACE(rtlpriv, COMP_RATE, DBG_LOUD, + "driver does not control rate adaptive mask\n"); + return; + } + + if (mac->link_state == MAC80211_LINKED && + mac->opmode == NL80211_IFTYPE_STATION) { + switch (ra->pre_ratr_state) { + case DM_RATR_STA_MIDDLE: + high_rssithresh_for_ra += go_up_gap; + break; + case DM_RATR_STA_LOW: + high_rssithresh_for_ra += go_up_gap; + low_rssithresh_for_ra += go_up_gap; + break; + default: + break; + } + + if (rtlpriv->dm.undec_sm_pwdb > + (long)high_rssithresh_for_ra) + ra->ratr_state = DM_RATR_STA_HIGH; + else if (rtlpriv->dm.undec_sm_pwdb > + (long)low_rssithresh_for_ra) + ra->ratr_state = DM_RATR_STA_MIDDLE; + else + ra->ratr_state = DM_RATR_STA_LOW; + + if (ra->pre_ratr_state != ra->ratr_state) { + RT_TRACE(rtlpriv, COMP_RATE, DBG_LOUD, + "RSSI = %ld\n", + rtlpriv->dm.undec_sm_pwdb); + RT_TRACE(rtlpriv, COMP_RATE, DBG_LOUD, + "RSSI_LEVEL = %d\n", ra->ratr_state); + RT_TRACE(rtlpriv, COMP_RATE, DBG_LOUD, + "PreState = %d, CurState = %d\n", + ra->pre_ratr_state, ra->ratr_state); + + rcu_read_lock(); + sta = rtl_find_sta(hw, mac->bssid); + if (sta) + rtlpriv->cfg->ops->update_rate_tbl(hw, sta, + ra->ratr_state); + rcu_read_unlock(); + + ra->pre_ratr_state = ra->ratr_state; + } + } +} + +static bool rtl8723be_dm_is_edca_turbo_disable(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + if (rtlpriv->cfg->ops->get_btc_status()) { + if (rtlpriv->btcoexist.btc_ops->btc_is_disable_edca_turbo(rtlpriv)) + return true; + } + if (rtlpriv->mac80211.mode == WIRELESS_MODE_B) + return true; + + return false; +} + +static void rtl8723be_dm_check_edca_turbo(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + static u64 last_txok_cnt; + static u64 last_rxok_cnt; + u64 cur_txok_cnt = 0; + u64 cur_rxok_cnt = 0; + u32 edca_be_ul = 0x6ea42b; + u32 edca_be_dl = 0x6ea42b;/*not sure*/ + u32 edca_be = 0x5ea42b; + u32 iot_peer = 0; + bool is_cur_rdlstate; + bool last_is_cur_rdlstate = false; + bool bias_on_rx = false; + bool edca_turbo_on = false; + + last_is_cur_rdlstate = rtlpriv->dm.is_cur_rdlstate; + + cur_txok_cnt = rtlpriv->stats.txbytesunicast - last_txok_cnt; + cur_rxok_cnt = rtlpriv->stats.rxbytesunicast - last_rxok_cnt; + + iot_peer = rtlpriv->mac80211.vendor; + bias_on_rx = (iot_peer == PEER_RAL || iot_peer == PEER_ATH) ? + true : false; + edca_turbo_on = ((!rtlpriv->dm.is_any_nonbepkts) && + (!rtlpriv->dm.disable_framebursting)) ? + true : false; + + if ((iot_peer == PEER_CISCO) && + (mac->mode == WIRELESS_MODE_N_24G)) { + edca_be_dl = edca_setting_dl[iot_peer]; + edca_be_ul = edca_setting_ul[iot_peer]; + } + if (rtl8723be_dm_is_edca_turbo_disable(hw)) + goto exit; + + if (edca_turbo_on) { + if (bias_on_rx) + is_cur_rdlstate = (cur_txok_cnt > cur_rxok_cnt * 4) ? + false : true; + else + is_cur_rdlstate = (cur_rxok_cnt > cur_txok_cnt * 4) ? + true : false; + + edca_be = (is_cur_rdlstate) ? edca_be_dl : edca_be_ul; + rtl_write_dword(rtlpriv, REG_EDCA_BE_PARAM, edca_be); + rtlpriv->dm.is_cur_rdlstate = is_cur_rdlstate; + rtlpriv->dm.current_turbo_edca = true; + } else { + if (rtlpriv->dm.current_turbo_edca) { + u8 tmp = AC0_BE; + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_AC_PARAM, + (u8 *)(&tmp)); + } + rtlpriv->dm.current_turbo_edca = false; + } + +exit: + rtlpriv->dm.is_any_nonbepkts = false; + last_txok_cnt = rtlpriv->stats.txbytesunicast; + last_rxok_cnt = rtlpriv->stats.rxbytesunicast; +} + +static void rtl8723be_dm_cck_packet_detection_thresh(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 cur_cck_cca_thresh; + + if (rtlpriv->mac80211.link_state >= MAC80211_LINKED) { + if (rtlpriv->dm_digtable.rssi_val_min > 25) { + cur_cck_cca_thresh = 0xcd; + } else if ((rtlpriv->dm_digtable.rssi_val_min <= 25) && + (rtlpriv->dm_digtable.rssi_val_min > 10)) { + cur_cck_cca_thresh = 0x83; + } else { + if (rtlpriv->falsealm_cnt.cnt_cck_fail > 1000) + cur_cck_cca_thresh = 0x83; + else + cur_cck_cca_thresh = 0x40; + } + } else { + if (rtlpriv->falsealm_cnt.cnt_cck_fail > 1000) + cur_cck_cca_thresh = 0x83; + else + cur_cck_cca_thresh = 0x40; + } + + if (rtlpriv->dm_digtable.cur_cck_cca_thres != cur_cck_cca_thresh) + rtl_set_bbreg(hw, RCCK0_CCA, MASKBYTE2, cur_cck_cca_thresh); + + rtlpriv->dm_digtable.pre_cck_cca_thres = rtlpriv->dm_digtable.cur_cck_cca_thres; + rtlpriv->dm_digtable.cur_cck_cca_thres = cur_cck_cca_thresh; + RT_TRACE(rtlpriv, COMP_DIG, DBG_TRACE, + "CCK cca thresh hold =%x\n", + rtlpriv->dm_digtable.cur_cck_cca_thres); +} + +static void rtl8723be_dm_dynamic_edcca(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 reg_c50, reg_c58; + bool fw_current_in_ps_mode = false; + + rtlpriv->cfg->ops->get_hw_reg(hw, HW_VAR_FW_PSMODE_STATUS, + (u8 *)(&fw_current_in_ps_mode)); + if (fw_current_in_ps_mode) + return; + + reg_c50 = rtl_get_bbreg(hw, ROFDM0_XAAGCCORE1, MASKBYTE0); + reg_c58 = rtl_get_bbreg(hw, ROFDM0_XBAGCCORE1, MASKBYTE0); + + if (reg_c50 > 0x28 && reg_c58 > 0x28) { + if (!rtlpriv->rtlhal.pre_edcca_enable) { + rtl_write_byte(rtlpriv, ROFDM0_ECCATHRESHOLD, 0x03); + rtl_write_byte(rtlpriv, ROFDM0_ECCATHRESHOLD + 2, 0x00); + } + } else if (reg_c50 < 0x25 && reg_c58 < 0x25) { + if (rtlpriv->rtlhal.pre_edcca_enable) { + rtl_write_byte(rtlpriv, ROFDM0_ECCATHRESHOLD, 0x7f); + rtl_write_byte(rtlpriv, ROFDM0_ECCATHRESHOLD + 2, 0x7f); + } + } +} + +static void rtl8723be_dm_dynamic_atc_switch(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_dm *rtldm = rtl_dm(rtl_priv(hw)); + u8 crystal_cap; + u32 packet_count; + int cfo_khz_a, cfo_khz_b, cfo_ave = 0, adjust_xtal = 0; + int cfo_ave_diff; + + if (rtlpriv->mac80211.link_state < MAC80211_LINKED) { + if (rtldm->atc_status == ATC_STATUS_OFF) { + rtl_set_bbreg(hw, ROFDM1_CFOTRACKING, BIT(11), + ATC_STATUS_ON); + rtldm->atc_status = ATC_STATUS_ON; + } + if (rtlpriv->cfg->ops->get_btc_status()) { + if (!rtlpriv->btcoexist.btc_ops->btc_is_bt_disabled(rtlpriv)) { + RT_TRACE(rtlpriv, COMP_BT_COEXIST, DBG_LOUD, + "odm_DynamicATCSwitch(): Disable" + " CFO tracking for BT!!\n"); + return; + } + } + + if (rtldm->crystal_cap != rtlpriv->efuse.crystalcap) { + rtldm->crystal_cap = rtlpriv->efuse.crystalcap; + crystal_cap = rtldm->crystal_cap & 0x3f; + rtl_set_bbreg(hw, REG_MAC_PHY_CTRL, 0xFFF000, + (crystal_cap | (crystal_cap << 6))); + } + } else { + cfo_khz_a = (int)(rtldm->cfo_tail[0] * 3125) / 1280; + cfo_khz_b = (int)(rtldm->cfo_tail[1] * 3125) / 1280; + packet_count = rtldm->packet_count; + + if (packet_count == rtldm->packet_count_pre) + return; + + rtldm->packet_count_pre = packet_count; + + if (rtlpriv->phy.rf_type == RF_1T1R) + cfo_ave = cfo_khz_a; + else + cfo_ave = (int)(cfo_khz_a + cfo_khz_b) >> 1; + + cfo_ave_diff = (rtldm->cfo_ave_pre >= cfo_ave) ? + (rtldm->cfo_ave_pre - cfo_ave) : + (cfo_ave - rtldm->cfo_ave_pre); + + if (cfo_ave_diff > 20 && rtldm->large_cfo_hit == 0) { + rtldm->large_cfo_hit = 1; + return; + } else { + rtldm->large_cfo_hit = 0; + } + + rtldm->cfo_ave_pre = cfo_ave; + + if (cfo_ave >= -rtldm->cfo_threshold && + cfo_ave <= rtldm->cfo_threshold && rtldm->is_freeze == 0) { + if (rtldm->cfo_threshold == CFO_THRESHOLD_XTAL) { + rtldm->cfo_threshold = CFO_THRESHOLD_XTAL + 10; + rtldm->is_freeze = 1; + } else { + rtldm->cfo_threshold = CFO_THRESHOLD_XTAL; + } + } + + if (cfo_ave > rtldm->cfo_threshold && rtldm->crystal_cap < 0x3f) + adjust_xtal = ((cfo_ave - CFO_THRESHOLD_XTAL) >> 1) + 1; + else if ((cfo_ave < -rtlpriv->dm.cfo_threshold) && + rtlpriv->dm.crystal_cap > 0) + adjust_xtal = ((cfo_ave + CFO_THRESHOLD_XTAL) >> 1) - 1; + + if (adjust_xtal != 0) { + rtldm->is_freeze = 0; + rtldm->crystal_cap += adjust_xtal; + + if (rtldm->crystal_cap > 0x3f) + rtldm->crystal_cap = 0x3f; + else if (rtldm->crystal_cap < 0) + rtldm->crystal_cap = 0; + + crystal_cap = rtldm->crystal_cap & 0x3f; + rtl_set_bbreg(hw, REG_MAC_PHY_CTRL, 0xFFF000, + (crystal_cap | (crystal_cap << 6))); + } + + if (cfo_ave < CFO_THRESHOLD_ATC && + cfo_ave > -CFO_THRESHOLD_ATC) { + if (rtldm->atc_status == ATC_STATUS_ON) { + rtl_set_bbreg(hw, ROFDM1_CFOTRACKING, BIT(11), + ATC_STATUS_OFF); + rtldm->atc_status = ATC_STATUS_OFF; + } + } else { + if (rtldm->atc_status == ATC_STATUS_OFF) { + rtl_set_bbreg(hw, ROFDM1_CFOTRACKING, BIT(11), + ATC_STATUS_ON); + rtldm->atc_status = ATC_STATUS_ON; + } + } + } +} + +static void rtl8723be_dm_common_info_self_update(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_sta_info *drv_priv; + u8 cnt = 0; + + rtlpriv->dm.one_entry_only = false; + + if (rtlpriv->mac80211.opmode == NL80211_IFTYPE_STATION && + rtlpriv->mac80211.link_state >= MAC80211_LINKED) { + rtlpriv->dm.one_entry_only = true; + return; + } + + if (rtlpriv->mac80211.opmode == NL80211_IFTYPE_AP || + rtlpriv->mac80211.opmode == NL80211_IFTYPE_ADHOC || + rtlpriv->mac80211.opmode == NL80211_IFTYPE_MESH_POINT) { + spin_lock_bh(&rtlpriv->locks.entry_list_lock); + list_for_each_entry(drv_priv, &rtlpriv->entry_list, list) { + cnt++; + } + spin_unlock_bh(&rtlpriv->locks.entry_list_lock); + + if (cnt == 1) + rtlpriv->dm.one_entry_only = true; + } +} + +void rtl8723be_dm_watchdog(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + bool fw_current_inpsmode = false; + bool fw_ps_awake = true; + + rtlpriv->cfg->ops->get_hw_reg(hw, HW_VAR_FW_PSMODE_STATUS, + (u8 *)(&fw_current_inpsmode)); + + rtlpriv->cfg->ops->get_hw_reg(hw, HW_VAR_FWLPS_RF_ON, + (u8 *)(&fw_ps_awake)); + + if (ppsc->p2p_ps_info.p2p_ps_mode) + fw_ps_awake = false; + + if ((ppsc->rfpwr_state == ERFON) && + ((!fw_current_inpsmode) && fw_ps_awake) && + (!ppsc->rfchange_inprogress)) { + rtl8723be_dm_common_info_self_update(hw); + rtl8723be_dm_false_alarm_counter_statistics(hw); + rtl8723be_dm_check_rssi_monitor(hw); + rtl8723be_dm_dig(hw); + rtl8723be_dm_dynamic_edcca(hw); + rtl8723be_dm_cck_packet_detection_thresh(hw); + rtl8723be_dm_refresh_rate_adaptive_mask(hw); + rtl8723be_dm_check_edca_turbo(hw); + rtl8723be_dm_dynamic_atc_switch(hw); + rtl8723be_dm_check_txpower_tracking(hw); + rtl8723be_dm_dynamic_txpower(hw); + if (rtlpriv->cfg->ops->get_btc_status()) + rtlpriv->btcoexist.btc_ops->btc_periodical(rtlpriv); + } + rtlpriv->dm.dbginfo.num_qry_beacon_pkt = 0; +} --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723be/dm.h +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723be/dm.h @@ -0,0 +1,310 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2014 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#ifndef __RTL8723BE_DM_H__ +#define __RTL8723BE_DM_H__ + +#define MAIN_ANT 0 +#define AUX_ANT 1 +#define MAIN_ANT_CG_TRX 1 +#define AUX_ANT_CG_TRX 0 +#define MAIN_ANT_CGCS_RX 0 +#define AUX_ANT_CGCS_RX 1 + +#define TXSCALE_TABLE_SIZE 30 + +/*RF REG LIST*/ +#define DM_REG_RF_MODE_11N 0x00 +#define DM_REG_RF_0B_11N 0x0B +#define DM_REG_CHNBW_11N 0x18 +#define DM_REG_T_METER_11N 0x24 +#define DM_REG_RF_25_11N 0x25 +#define DM_REG_RF_26_11N 0x26 +#define DM_REG_RF_27_11N 0x27 +#define DM_REG_RF_2B_11N 0x2B +#define DM_REG_RF_2C_11N 0x2C +#define DM_REG_RXRF_A3_11N 0x3C +#define DM_REG_T_METER_92D_11N 0x42 +#define DM_REG_T_METER_88E_11N 0x42 + +/*BB REG LIST*/ +/*PAGE 8 */ +#define DM_REG_BB_CTRL_11N 0x800 +#define DM_REG_RF_PIN_11N 0x804 +#define DM_REG_PSD_CTRL_11N 0x808 +#define DM_REG_TX_ANT_CTRL_11N 0x80C +#define DM_REG_BB_PWR_SAV5_11N 0x818 +#define DM_REG_CCK_RPT_FORMAT_11N 0x824 +#define DM_REG_RX_DEFUALT_A_11N 0x858 +#define DM_REG_RX_DEFUALT_B_11N 0x85A +#define DM_REG_BB_PWR_SAV3_11N 0x85C +#define DM_REG_ANTSEL_CTRL_11N 0x860 +#define DM_REG_RX_ANT_CTRL_11N 0x864 +#define DM_REG_PIN_CTRL_11N 0x870 +#define DM_REG_BB_PWR_SAV1_11N 0x874 +#define DM_REG_ANTSEL_PATH_11N 0x878 +#define DM_REG_BB_3WIRE_11N 0x88C +#define DM_REG_SC_CNT_11N 0x8C4 +#define DM_REG_PSD_DATA_11N 0x8B4 +/*PAGE 9*/ +#define DM_REG_ANT_MAPPING1_11N 0x914 +#define DM_REG_ANT_MAPPING2_11N 0x918 +/*PAGE A*/ +#define DM_REG_CCK_ANTDIV_PARA1_11N 0xA00 +#define DM_REG_CCK_CCA_11N 0xA0A +#define DM_REG_CCK_ANTDIV_PARA2_11N 0xA0C +#define DM_REG_CCK_ANTDIV_PARA3_11N 0xA10 +#define DM_REG_CCK_ANTDIV_PARA4_11N 0xA14 +#define DM_REG_CCK_FILTER_PARA1_11N 0xA22 +#define DM_REG_CCK_FILTER_PARA2_11N 0xA23 +#define DM_REG_CCK_FILTER_PARA3_11N 0xA24 +#define DM_REG_CCK_FILTER_PARA4_11N 0xA25 +#define DM_REG_CCK_FILTER_PARA5_11N 0xA26 +#define DM_REG_CCK_FILTER_PARA6_11N 0xA27 +#define DM_REG_CCK_FILTER_PARA7_11N 0xA28 +#define DM_REG_CCK_FILTER_PARA8_11N 0xA29 +#define DM_REG_CCK_FA_RST_11N 0xA2C +#define DM_REG_CCK_FA_MSB_11N 0xA58 +#define DM_REG_CCK_FA_LSB_11N 0xA5C +#define DM_REG_CCK_CCA_CNT_11N 0xA60 +#define DM_REG_BB_PWR_SAV4_11N 0xA74 +/*PAGE B */ +#define DM_REG_LNA_SWITCH_11N 0xB2C +#define DM_REG_PATH_SWITCH_11N 0xB30 +#define DM_REG_RSSI_CTRL_11N 0xB38 +#define DM_REG_CONFIG_ANTA_11N 0xB68 +#define DM_REG_RSSI_BT_11N 0xB9C +/*PAGE C */ +#define DM_REG_OFDM_FA_HOLDC_11N 0xC00 +#define DM_REG_RX_PATH_11N 0xC04 +#define DM_REG_TRMUX_11N 0xC08 +#define DM_REG_OFDM_FA_RSTC_11N 0xC0C +#define DM_REG_RXIQI_MATRIX_11N 0xC14 +#define DM_REG_TXIQK_MATRIX_LSB1_11N 0xC4C +#define DM_REG_IGI_A_11N 0xC50 +#define DM_REG_ANTDIV_PARA2_11N 0xC54 +#define DM_REG_IGI_B_11N 0xC58 +#define DM_REG_ANTDIV_PARA3_11N 0xC5C +#define DM_REG_BB_PWR_SAV2_11N 0xC70 +#define DM_REG_RX_OFF_11N 0xC7C +#define DM_REG_TXIQK_MATRIXA_11N 0xC80 +#define DM_REG_TXIQK_MATRIXB_11N 0xC88 +#define DM_REG_TXIQK_MATRIXA_LSB2_11N 0xC94 +#define DM_REG_TXIQK_MATRIXB_LSB2_11N 0xC9C +#define DM_REG_RXIQK_MATRIX_LSB_11N 0xCA0 +#define DM_REG_ANTDIV_PARA1_11N 0xCA4 +#define DM_REG_OFDM_FA_TYPE1_11N 0xCF0 +/*PAGE D */ +#define DM_REG_OFDM_FA_RSTD_11N 0xD00 +#define DM_REG_OFDM_FA_TYPE2_11N 0xDA0 +#define DM_REG_OFDM_FA_TYPE3_11N 0xDA4 +#define DM_REG_OFDM_FA_TYPE4_11N 0xDA8 +/*PAGE E */ +#define DM_REG_TXAGC_A_6_18_11N 0xE00 +#define DM_REG_TXAGC_A_24_54_11N 0xE04 +#define DM_REG_TXAGC_A_1_MCS32_11N 0xE08 +#define DM_REG_TXAGC_A_MCS0_3_11N 0xE10 +#define DM_REG_TXAGC_A_MCS4_7_11N 0xE14 +#define DM_REG_TXAGC_A_MCS8_11_11N 0xE18 +#define DM_REG_TXAGC_A_MCS12_15_11N 0xE1C +#define DM_REG_FPGA0_IQK_11N 0xE28 +#define DM_REG_TXIQK_TONE_A_11N 0xE30 +#define DM_REG_RXIQK_TONE_A_11N 0xE34 +#define DM_REG_TXIQK_PI_A_11N 0xE38 +#define DM_REG_RXIQK_PI_A_11N 0xE3C +#define DM_REG_TXIQK_11N 0xE40 +#define DM_REG_RXIQK_11N 0xE44 +#define DM_REG_IQK_AGC_PTS_11N 0xE48 +#define DM_REG_IQK_AGC_RSP_11N 0xE4C +#define DM_REG_BLUETOOTH_11N 0xE6C +#define DM_REG_RX_WAIT_CCA_11N 0xE70 +#define DM_REG_TX_CCK_RFON_11N 0xE74 +#define DM_REG_TX_CCK_BBON_11N 0xE78 +#define DM_REG_OFDM_RFON_11N 0xE7C +#define DM_REG_OFDM_BBON_11N 0xE80 +#define DM_REG_TX2RX_11N 0xE84 +#define DM_REG_TX2TX_11N 0xE88 +#define DM_REG_RX_CCK_11N 0xE8C +#define DM_REG_RX_OFDM_11N 0xED0 +#define DM_REG_RX_WAIT_RIFS_11N 0xED4 +#define DM_REG_RX2RX_11N 0xED8 +#define DM_REG_STANDBY_11N 0xEDC +#define DM_REG_SLEEP_11N 0xEE0 +#define DM_REG_PMPD_ANAEN_11N 0xEEC + +/*MAC REG LIST*/ +#define DM_REG_BB_RST_11N 0x02 +#define DM_REG_ANTSEL_PIN_11N 0x4C +#define DM_REG_EARLY_MODE_11N 0x4D0 +#define DM_REG_RSSI_MONITOR_11N 0x4FE +#define DM_REG_EDCA_VO_11N 0x500 +#define DM_REG_EDCA_VI_11N 0x504 +#define DM_REG_EDCA_BE_11N 0x508 +#define DM_REG_EDCA_BK_11N 0x50C +#define DM_REG_TXPAUSE_11N 0x522 +#define DM_REG_RESP_TX_11N 0x6D8 +#define DM_REG_ANT_TRAIN_PARA1_11N 0x7b0 +#define DM_REG_ANT_TRAIN_PARA2_11N 0x7b4 + +/*DIG Related*/ +#define DM_BIT_IGI_11N 0x0000007F + +#define HAL_DM_DIG_DISABLE BIT(0) +#define HAL_DM_HIPWR_DISABLE BIT(1) + +#define OFDM_TABLE_LENGTH 43 +#define CCK_TABLE_LENGTH 33 + +#define OFDM_TABLE_SIZE 37 +#define CCK_TABLE_SIZE 33 + +#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 + +#define DM_DIG_MAX_AP 0x32 +#define DM_DIG_MIN_AP 0x20 + +#define DM_DIG_FA_UPPER 0x3e +#define DM_DIG_FA_LOWER 0x1e +#define DM_DIG_FA_TH0 0x200 +#define DM_DIG_FA_TH1 0x300 +#define DM_DIG_FA_TH2 0x400 + +#define DM_DIG_BACKOFF_MAX 12 +#define DM_DIG_BACKOFF_MIN -4 +#define DM_DIG_BACKOFF_DEFAULT 10 + +#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 CTS2SELF_THVAL 30 +#define REGC38_TH 20 + +#define TXHIGHPWRLEVEL_NORMAL 0 +#define TXHIGHPWRLEVEL_LEVEL1 1 +#define TXHIGHPWRLEVEL_LEVEL2 2 +#define TXHIGHPWRLEVEL_BT1 3 +#define TXHIGHPWRLEVEL_BT2 4 + +#define DM_TYPE_BYFW 0 +#define DM_TYPE_BYDRIVER 1 + +#define TX_POWER_NEAR_FIELD_THRESH_LVL2 74 +#define TX_POWER_NEAR_FIELD_THRESH_LVL1 67 +#define TXPWRTRACK_MAX_IDX 6 + +/* Dynamic ATC switch */ +#define ATC_STATUS_OFF 0x0 /* enable */ +#define ATC_STATUS_ON 0x1 /* disable */ +#define CFO_THRESHOLD_XTAL 10 /* kHz */ +#define CFO_THRESHOLD_ATC 80 /* kHz */ + +enum FAT_STATE { + FAT_NORMAL_STATE = 0, + FAT_TRAINING_STATE = 1, +}; + +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 +}; + +enum dm_1r_cca_e { + CCA_1R = 0, + CCA_2R = 1, + CCA_MAX = 2, +}; + +enum dm_rf_e { + RF_SAVE = 0, + RF_NORMAL = 1, + RF_MAX = 2, +}; + +enum dm_sw_ant_switch_e { + ANS_ANTENNA_B = 1, + ANS_ANTENNA_A = 2, + ANS_ANTENNA_MAX = 3, +}; + +enum dm_dig_ext_port_alg_e { + 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, +}; + +enum dm_dig_connect_e { + DIG_STA_DISCONNECT = 0, + DIG_STA_CONNECT = 1, + DIG_STA_BEFORE_CONNECT = 2, + DIG_MULTISTA_DISCONNECT = 3, + DIG_MULTISTA_CONNECT = 4, + DIG_CONNECT_MAX +}; + +enum pwr_track_control_method { + BBSWING, + TXAGC +}; + +#define BT_RSSI_STATE_NORMAL_POWER BIT_OFFSET_LEN_MASK_32(0, 1) +#define BT_RSSI_STATE_AMDPU_OFF BIT_OFFSET_LEN_MASK_32(1, 1) +#define BT_RSSI_STATE_SPECIAL_LOW BIT_OFFSET_LEN_MASK_32(2, 1) +#define BT_RSSI_STATE_BG_EDCA_LOW BIT_OFFSET_LEN_MASK_32(3, 1) +#define BT_RSSI_STATE_TXPOWER_LOW BIT_OFFSET_LEN_MASK_32(4, 1) + +void rtl8723be_dm_set_tx_ant_by_tx_info(struct ieee80211_hw *hw, u8 *pdesc, + u32 mac_id); +void rtl8723be_dm_ant_sel_statistics(struct ieee80211_hw *hw, u8 antsel_tr_mux, + u32 mac_id, u32 rx_pwdb_all); +void rtl8723be_dm_fast_antenna_trainning_callback(unsigned long data); +void rtl8723be_dm_init(struct ieee80211_hw *hw); +void rtl8723be_dm_watchdog(struct ieee80211_hw *hw); +void rtl8723be_dm_write_dig(struct ieee80211_hw *hw, u8 current_igi); +void rtl8723be_dm_check_txpower_tracking(struct ieee80211_hw *hw); +void rtl8723be_dm_init_rate_adaptive_mask(struct ieee80211_hw *hw); +void rtl8723be_dm_txpower_track_adjust(struct ieee80211_hw *hw, u8 type, + u8 *pdirection, u32 *poutwrite_val); +void rtl8723be_dm_init_edca_turbo(struct ieee80211_hw *hw); + +#endif --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723be/fw.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723be/fw.c @@ -0,0 +1,628 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2014 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#include "../wifi.h" +#include "../pci.h" +#include "../base.h" +#include "reg.h" +#include "def.h" +#include "fw.h" +#include "../rtl8723com/fw_common.h" + +static bool _rtl8723be_check_fw_read_last_h2c(struct ieee80211_hw *hw, + u8 boxnum) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 val_hmetfr; + bool result = false; + + val_hmetfr = rtl_read_byte(rtlpriv, REG_HMETFR); + if (((val_hmetfr >> boxnum) & BIT(0)) == 0) + result = true; + return result; +} + +static void _rtl8723be_fill_h2c_command(struct ieee80211_hw *hw, u8 element_id, + u32 cmd_len, u8 *p_cmdbuffer) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + u8 boxnum; + u16 box_reg = 0, box_extreg = 0; + u8 u1b_tmp; + bool isfw_read = false; + u8 buf_index = 0; + bool bwrite_sucess = false; + u8 wait_h2c_limit = 100; + u8 wait_writeh2c_limit = 100; + u8 boxcontent[4], boxextcontent[4]; + u32 h2c_waitcounter = 0; + unsigned long flag; + u8 idx; + + RT_TRACE(rtlpriv, COMP_CMD, DBG_LOUD, "come in\n"); + + while (true) { + spin_lock_irqsave(&rtlpriv->locks.h2c_lock, flag); + if (rtlhal->h2c_setinprogress) { + RT_TRACE(rtlpriv, COMP_CMD, DBG_LOUD, + "H2C set in progress! Wait to set.." + "element_id(%d).\n", element_id); + + while (rtlhal->h2c_setinprogress) { + spin_unlock_irqrestore(&rtlpriv->locks.h2c_lock, + flag); + h2c_waitcounter++; + RT_TRACE(rtlpriv, COMP_CMD, DBG_LOUD, + "Wait 100 us (%d times)...\n", + h2c_waitcounter); + udelay(100); + + if (h2c_waitcounter > 1000) + return; + spin_lock_irqsave(&rtlpriv->locks.h2c_lock, + flag); + } + spin_unlock_irqrestore(&rtlpriv->locks.h2c_lock, flag); + } else { + rtlhal->h2c_setinprogress = true; + spin_unlock_irqrestore(&rtlpriv->locks.h2c_lock, flag); + break; + } + } + while (!bwrite_sucess) { + wait_writeh2c_limit--; + if (wait_writeh2c_limit == 0) { + RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, + "Write H2C fail because no trigger " + "for FW INT!\n"); + break; + } + boxnum = rtlhal->last_hmeboxnum; + switch (boxnum) { + case 0: + box_reg = REG_HMEBOX_0; + box_extreg = REG_HMEBOX_EXT_0; + break; + case 1: + box_reg = REG_HMEBOX_1; + box_extreg = REG_HMEBOX_EXT_1; + break; + case 2: + box_reg = REG_HMEBOX_2; + box_extreg = REG_HMEBOX_EXT_2; + break; + case 3: + box_reg = REG_HMEBOX_3; + box_extreg = REG_HMEBOX_EXT_3; + break; + default: + RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, + "switch case not processed\n"); + break; + } + isfw_read = _rtl8723be_check_fw_read_last_h2c(hw, boxnum); + while (!isfw_read) { + wait_h2c_limit--; + if (wait_h2c_limit == 0) { + RT_TRACE(rtlpriv, COMP_CMD, DBG_LOUD, + "Wating too long for FW read " + "clear HMEBox(%d)!\n", boxnum); + break; + } + udelay(10); + + isfw_read = _rtl8723be_check_fw_read_last_h2c(hw, + boxnum); + u1b_tmp = rtl_read_byte(rtlpriv, 0x130); + RT_TRACE(rtlpriv, COMP_CMD, DBG_LOUD, + "Wating for FW read clear HMEBox(%d)!!! 0x130 = %2x\n", + boxnum, u1b_tmp); + } + if (!isfw_read) { + RT_TRACE(rtlpriv, COMP_CMD, DBG_LOUD, + "Write H2C register BOX[%d] fail!!!!! " + "Fw do not read.\n", boxnum); + break; + } + memset(boxcontent, 0, sizeof(boxcontent)); + memset(boxextcontent, 0, sizeof(boxextcontent)); + boxcontent[0] = element_id; + RT_TRACE(rtlpriv, COMP_CMD, DBG_LOUD, + "Write element_id box_reg(%4x) = %2x\n", + box_reg, element_id); + + switch (cmd_len) { + case 1: + case 2: + case 3: + /*boxcontent[0] &= ~(BIT(7));*/ + memcpy((u8 *)(boxcontent) + 1, + p_cmdbuffer + buf_index, cmd_len); + + for (idx = 0; idx < 4; idx++) { + rtl_write_byte(rtlpriv, box_reg + idx, + boxcontent[idx]); + } + break; + case 4: + case 5: + case 6: + case 7: + /*boxcontent[0] |= (BIT(7));*/ + memcpy((u8 *)(boxextcontent), + p_cmdbuffer + buf_index+3, cmd_len-3); + memcpy((u8 *)(boxcontent) + 1, + p_cmdbuffer + buf_index, 3); + + for (idx = 0; idx < 4; idx++) { + rtl_write_byte(rtlpriv, box_extreg + idx, + boxextcontent[idx]); + } + for (idx = 0; idx < 4; idx++) { + rtl_write_byte(rtlpriv, box_reg + idx, + boxcontent[idx]); + } + break; + default: + RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, + "switch case not process\n"); + break; + } + bwrite_sucess = true; + + rtlhal->last_hmeboxnum = boxnum + 1; + if (rtlhal->last_hmeboxnum == 4) + rtlhal->last_hmeboxnum = 0; + + RT_TRACE(rtlpriv, COMP_CMD, DBG_LOUD, + "pHalData->last_hmeboxnum = %d\n", + rtlhal->last_hmeboxnum); + } + if (!rtlpriv) { + pr_err("rtlpriv bad\n"); + return; + } + if (!rtlhal) { + pr_err("rtlhal bad\n"); + return; + } + spin_lock_irqsave(&rtlpriv->locks.h2c_lock, flag); + rtlhal->h2c_setinprogress = false; + spin_unlock_irqrestore(&rtlpriv->locks.h2c_lock, flag); + + RT_TRACE(rtlpriv, COMP_CMD, DBG_LOUD, "go out\n"); +} + +void rtl8723be_fill_h2c_cmd(struct ieee80211_hw *hw, u8 element_id, + u32 cmd_len, u8 *p_cmdbuffer) +{ + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + u32 tmp_cmdbuf[2]; + + if (!rtlhal->fw_ready) { + RT_ASSERT(false, + "return H2C cmd because of Fw download fail!!!\n"); + return; + } + memset(tmp_cmdbuf, 0, 8); + memcpy(tmp_cmdbuf, p_cmdbuffer, cmd_len); + _rtl8723be_fill_h2c_command(hw, element_id, cmd_len, + (u8 *)&tmp_cmdbuf); + return; +} + +void rtl8723be_set_fw_pwrmode_cmd(struct ieee80211_hw *hw, u8 mode) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 u1_h2c_set_pwrmode[H2C_8723BE_PWEMODE_LENGTH] = { 0 }; + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + u8 rlbm, power_state = 0; + RT_TRACE(rtlpriv, COMP_POWER, DBG_LOUD, "FW LPS mode = %d\n", mode); + + SET_H2CCMD_PWRMODE_PARM_MODE(u1_h2c_set_pwrmode, ((mode) ? 1 : 0)); + rlbm = 0;/*YJ, temp, 120316. FW now not support RLBM = 2.*/ + SET_H2CCMD_PWRMODE_PARM_RLBM(u1_h2c_set_pwrmode, rlbm); + SET_H2CCMD_PWRMODE_PARM_SMART_PS(u1_h2c_set_pwrmode, + (rtlpriv->mac80211.p2p) ? + ppsc->smart_ps : 1); + SET_H2CCMD_PWRMODE_PARM_AWAKE_INTERVAL(u1_h2c_set_pwrmode, + ppsc->reg_max_lps_awakeintvl); + SET_H2CCMD_PWRMODE_PARM_ALL_QUEUE_UAPSD(u1_h2c_set_pwrmode, 0); + if (mode == FW_PS_ACTIVE_MODE) + power_state |= FW_PWR_STATE_ACTIVE; + else + power_state |= FW_PWR_STATE_RF_OFF; + SET_H2CCMD_PWRMODE_PARM_PWR_STATE(u1_h2c_set_pwrmode, power_state); + + RT_PRINT_DATA(rtlpriv, COMP_CMD, DBG_DMESG, + "rtl92c_set_fw_pwrmode(): u1_h2c_set_pwrmode\n", + u1_h2c_set_pwrmode, H2C_8723BE_PWEMODE_LENGTH); + rtl8723be_fill_h2c_cmd(hw, H2C_8723BE_SETPWRMODE, + H2C_8723BE_PWEMODE_LENGTH, + u1_h2c_set_pwrmode); +} + +static bool _rtl8723be_cmd_send_packet(struct ieee80211_hw *hw, + struct sk_buff *skb) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + struct rtl8192_tx_ring *ring; + struct rtl_tx_desc *pdesc; + struct sk_buff *pskb = NULL; + u8 own; + unsigned long flags; + + ring = &rtlpci->tx_ring[BEACON_QUEUE]; + + pskb = __skb_dequeue(&ring->queue); + if (pskb) + kfree_skb(pskb); + + spin_lock_irqsave(&rtlpriv->locks.irq_th_lock, flags); + + pdesc = &ring->desc[0]; + own = (u8) rtlpriv->cfg->ops->get_desc((u8 *)pdesc, true, HW_DESC_OWN); + + rtlpriv->cfg->ops->fill_tx_cmddesc(hw, (u8 *)pdesc, 1, 1, skb); + + __skb_queue_tail(&ring->queue, skb); + + spin_unlock_irqrestore(&rtlpriv->locks.irq_th_lock, flags); + + rtlpriv->cfg->ops->tx_polling(hw, BEACON_QUEUE); + + return true; +} +#define BEACON_PG 0 /* ->1 */ +#define PSPOLL_PG 2 +#define NULL_PG 3 +#define PROBERSP_PG 4 /* ->5 */ + +#define TOTAL_RESERVED_PKT_LEN 768 + +static u8 reserved_page_packet[TOTAL_RESERVED_PKT_LEN] = { + /* page 0 beacon */ + 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0xE0, 0x4C, 0x02, 0xB1, 0x78, + 0xEC, 0x1A, 0x59, 0x0B, 0xAD, 0xD4, 0x20, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x10, 0x04, 0x00, 0x05, 0x54, 0x65, + 0x73, 0x74, 0x32, 0x01, 0x08, 0x82, 0x84, 0x0B, + 0x16, 0x24, 0x30, 0x48, 0x6C, 0x03, 0x01, 0x06, + 0x06, 0x02, 0x00, 0x00, 0x2A, 0x01, 0x02, 0x32, + 0x04, 0x0C, 0x12, 0x18, 0x60, 0x2D, 0x1A, 0x6C, + 0x09, 0x03, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x3D, 0x00, 0xDD, 0x07, 0x00, 0xE0, 0x4C, + 0x02, 0x02, 0x00, 0x00, 0xDD, 0x18, 0x00, 0x50, + 0xF2, 0x01, 0x01, 0x00, 0x00, 0x50, 0xF2, 0x04, + 0x01, 0x00, 0x00, 0x50, 0xF2, 0x04, 0x01, 0x00, + + /* page 1 beacon */ + 0x00, 0x50, 0xF2, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x28, 0x8C, 0x00, 0x12, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + /* page 2 ps-poll */ + 0xA4, 0x10, 0x01, 0xC0, 0xEC, 0x1A, 0x59, 0x0B, + 0xAD, 0xD4, 0x00, 0xE0, 0x4C, 0x02, 0xB1, 0x78, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x28, 0x8C, 0x00, 0x12, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + /* page 3 null */ + 0x48, 0x01, 0x00, 0x00, 0xEC, 0x1A, 0x59, 0x0B, + 0xAD, 0xD4, 0x00, 0xE0, 0x4C, 0x02, 0xB1, 0x78, + 0xEC, 0x1A, 0x59, 0x0B, 0xAD, 0xD4, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x28, 0x8C, 0x00, 0x12, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + /* page 4 probe_resp */ + 0x50, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x10, + 0x00, 0x03, 0x00, 0xE0, 0x4C, 0x76, 0x00, 0x42, + 0x00, 0x40, 0x10, 0x10, 0x00, 0x03, 0x00, 0x00, + 0x9E, 0x46, 0x15, 0x32, 0x27, 0xF2, 0x2D, 0x00, + 0x64, 0x00, 0x00, 0x04, 0x00, 0x0C, 0x6C, 0x69, + 0x6E, 0x6B, 0x73, 0x79, 0x73, 0x5F, 0x77, 0x6C, + 0x61, 0x6E, 0x01, 0x04, 0x82, 0x84, 0x8B, 0x96, + 0x03, 0x01, 0x01, 0x06, 0x02, 0x00, 0x00, 0x2A, + 0x01, 0x00, 0x32, 0x08, 0x24, 0x30, 0x48, 0x6C, + 0x0C, 0x12, 0x18, 0x60, 0x2D, 0x1A, 0x6C, 0x18, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3D, 0x00, 0xDD, 0x06, 0x00, 0xE0, 0x4C, 0x02, + 0x01, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + /* page 5 probe_resp */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +void rtl8723be_set_fw_rsvdpagepkt(struct ieee80211_hw *hw, + bool dl_finished) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct sk_buff *skb = NULL; + + u32 totalpacketlen; + bool rtstatus; + u8 u1rsvdpageloc[5] = { 0 }; + bool dlok = false; + + u8 *beacon; + u8 *p_pspoll; + u8 *nullfunc; + u8 *p_probersp; + /*--------------------------------------------------------- + * (1) beacon + *--------------------------------------------------------- + */ + beacon = &reserved_page_packet[BEACON_PG * 128]; + SET_80211_HDR_ADDRESS2(beacon, mac->mac_addr); + SET_80211_HDR_ADDRESS3(beacon, mac->bssid); + + /*------------------------------------------------------- + * (2) ps-poll + *------------------------------------------------------- + */ + p_pspoll = &reserved_page_packet[PSPOLL_PG * 128]; + SET_80211_PS_POLL_AID(p_pspoll, (mac->assoc_id | 0xc000)); + SET_80211_PS_POLL_BSSID(p_pspoll, mac->bssid); + SET_80211_PS_POLL_TA(p_pspoll, mac->mac_addr); + + SET_H2CCMD_RSVDPAGE_LOC_PSPOLL(u1rsvdpageloc, PSPOLL_PG); + + /*-------------------------------------------------------- + * (3) null data + *-------------------------------------------------------- + */ + nullfunc = &reserved_page_packet[NULL_PG * 128]; + SET_80211_HDR_ADDRESS1(nullfunc, mac->bssid); + SET_80211_HDR_ADDRESS2(nullfunc, mac->mac_addr); + SET_80211_HDR_ADDRESS3(nullfunc, mac->bssid); + + SET_H2CCMD_RSVDPAGE_LOC_NULL_DATA(u1rsvdpageloc, NULL_PG); + + /*--------------------------------------------------------- + * (4) probe response + *--------------------------------------------------------- + */ + p_probersp = &reserved_page_packet[PROBERSP_PG * 128]; + SET_80211_HDR_ADDRESS1(p_probersp, mac->bssid); + SET_80211_HDR_ADDRESS2(p_probersp, mac->mac_addr); + SET_80211_HDR_ADDRESS3(p_probersp, mac->bssid); + + SET_H2CCMD_RSVDPAGE_LOC_PROBE_RSP(u1rsvdpageloc, PROBERSP_PG); + + totalpacketlen = TOTAL_RESERVED_PKT_LEN; + + RT_PRINT_DATA(rtlpriv, COMP_CMD, DBG_LOUD, + "rtl8723be_set_fw_rsvdpagepkt(): " + "HW_VAR_SET_TX_CMD: ALL\n", + &reserved_page_packet[0], totalpacketlen); + RT_PRINT_DATA(rtlpriv, COMP_CMD, DBG_DMESG, + "rtl8723be_set_fw_rsvdpagepkt(): " + "HW_VAR_SET_TX_CMD: ALL\n", u1rsvdpageloc, 3); + + + skb = dev_alloc_skb(totalpacketlen); + memcpy((u8 *)skb_put(skb, totalpacketlen), + &reserved_page_packet, totalpacketlen); + + rtstatus = _rtl8723be_cmd_send_packet(hw, skb); + + if (rtstatus) + dlok = true; + + if (dlok) { + RT_TRACE(rtlpriv, COMP_POWER, DBG_LOUD, + "Set RSVD page location to Fw.\n"); + RT_PRINT_DATA(rtlpriv, COMP_CMD, DBG_DMESG, "H2C_RSVDPAGE:\n", + u1rsvdpageloc, 3); + rtl8723be_fill_h2c_cmd(hw, H2C_8723BE_RSVDPAGE, + sizeof(u1rsvdpageloc), u1rsvdpageloc); + } else { + RT_TRACE(rtlpriv, COMP_ERR, DBG_WARNING, + "Set RSVD page location to Fw FAIL!!!!!!.\n"); + } +} + +/*Should check FW support p2p or not.*/ +static void rtl8723be_set_p2p_ctw_period_cmd(struct ieee80211_hw *hw, + u8 ctwindow) +{ + u8 u1_ctwindow_period[1] = {ctwindow}; + + rtl8723be_fill_h2c_cmd(hw, H2C_8723BE_P2P_PS_CTW_CMD, 1, + u1_ctwindow_period); +} + +void rtl8723be_set_p2p_ps_offload_cmd(struct ieee80211_hw *hw, + u8 p2p_ps_state) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_ps_ctl *rtlps = rtl_psc(rtl_priv(hw)); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + struct rtl_p2p_ps_info *p2pinfo = &(rtlps->p2p_ps_info); + struct p2p_ps_offload_t *p2p_ps_offload = &rtlhal->p2p_ps_offload; + u8 i; + u16 ctwindow; + u32 start_time, tsf_low; + + switch (p2p_ps_state) { + case P2P_PS_DISABLE: + RT_TRACE(rtlpriv, COMP_FW, DBG_LOUD, "P2P_PS_DISABLE\n"); + memset(p2p_ps_offload, 0, sizeof(struct p2p_ps_offload_t)); + break; + case P2P_PS_ENABLE: + RT_TRACE(rtlpriv, COMP_FW, DBG_LOUD, "P2P_PS_ENABLE\n"); + /* update CTWindow value. */ + if (p2pinfo->ctwindow > 0) { + p2p_ps_offload->ctwindow_en = 1; + ctwindow = p2pinfo->ctwindow; + rtl8723be_set_p2p_ctw_period_cmd(hw, ctwindow); + } + /* hw only support 2 set of NoA */ + for (i = 0; i < p2pinfo->noa_num; i++) { + /* To control the register setting + * for which NOA + */ + rtl_write_byte(rtlpriv, 0x5cf, (i << 4)); + if (i == 0) + p2p_ps_offload->noa0_en = 1; + else + p2p_ps_offload->noa1_en = 1; + + /* config P2P NoA Descriptor Register */ + rtl_write_dword(rtlpriv, 0x5E0, + p2pinfo->noa_duration[i]); + rtl_write_dword(rtlpriv, 0x5E4, + p2pinfo->noa_interval[i]); + + /*Get Current TSF value */ + tsf_low = rtl_read_dword(rtlpriv, REG_TSFTR); + + start_time = p2pinfo->noa_start_time[i]; + if (p2pinfo->noa_count_type[i] != 1) { + while (start_time <= (tsf_low + (50 * 1024))) { + start_time += p2pinfo->noa_interval[i]; + if (p2pinfo->noa_count_type[i] != 255) + p2pinfo->noa_count_type[i]--; + } + } + rtl_write_dword(rtlpriv, 0x5E8, start_time); + rtl_write_dword(rtlpriv, 0x5EC, + p2pinfo->noa_count_type[i]); + } + if ((p2pinfo->opp_ps == 1) || + (p2pinfo->noa_num > 0)) { + /* rst p2p circuit */ + rtl_write_byte(rtlpriv, REG_DUAL_TSF_RST, BIT(4)); + + p2p_ps_offload->offload_en = 1; + + if (P2P_ROLE_GO == rtlpriv->mac80211.p2p) { + 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: + RT_TRACE(rtlpriv, COMP_FW, DBG_LOUD, "P2P_PS_SCAN\n"); + p2p_ps_offload->discovery = 1; + break; + case P2P_PS_SCAN_DONE: + RT_TRACE(rtlpriv, COMP_FW, DBG_LOUD, "P2P_PS_SCAN_DONE\n"); + p2p_ps_offload->discovery = 0; + p2pinfo->p2p_ps_state = P2P_PS_ENABLE; + break; + default: + break; + } + rtl8723be_fill_h2c_cmd(hw, H2C_8723BE_P2P_PS_OFFLOAD, 1, + (u8 *)p2p_ps_offload); +} + +void rtl8723be_set_fw_joinbss_report_cmd(struct ieee80211_hw *hw, u8 mstatus) +{ + u8 u1_joinbssrpt_parm[1] = { 0 }; + + SET_H2CCMD_JOINBSSRPT_PARM_OPMODE(u1_joinbssrpt_parm, mstatus); + + rtl8723be_fill_h2c_cmd(hw, H2C_8723BE_JOINBSSRPT, 1, + u1_joinbssrpt_parm); +} + +void rtl8723be_set_fw_ap_off_load_cmd(struct ieee80211_hw *hw, + u8 ap_offload_enable) +{ + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + u8 u1_apoffload_parm[H2C_8723BE_AP_OFFLOAD_LENGTH] = { 0 }; + + SET_H2CCMD_AP_OFFLOAD_ON(u1_apoffload_parm, ap_offload_enable); + SET_H2CCMD_AP_OFFLOAD_HIDDEN(u1_apoffload_parm, mac->hiddenssid); + SET_H2CCMD_AP_OFFLOAD_DENYANY(u1_apoffload_parm, 0); + + rtl8723be_fill_h2c_cmd(hw, H2C_8723BE_AP_OFFLOAD, + H2C_8723BE_AP_OFFLOAD_LENGTH, u1_apoffload_parm); +} --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723be/fw.h +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723be/fw.h @@ -0,0 +1,248 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2014 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * Larry Finger + * + *****************************************************************************/ + +#ifndef __RTL8723BE__FW__H__ +#define __RTL8723BE__FW__H__ + +#define FW_8192C_SIZE 0x8000 +#define FW_8192C_START_ADDRESS 0x1000 +#define FW_8192C_END_ADDRESS 0x5FFF +#define FW_8192C_PAGE_SIZE 4096 +#define FW_8192C_POLLING_DELAY 5 +#define FW_8192C_POLLING_TIMEOUT_COUNT 6000 + +#define IS_FW_HEADER_EXIST(_pfwhdr) \ + ((_pfwhdr->signature&0xFFF0) == 0x5300) +#define USE_OLD_WOWLAN_DEBUG_FW 0 + +#define H2C_8723BE_RSVDPAGE_LOC_LEN 5 +#define H2C_8723BE_PWEMODE_LENGTH 5 +#define H2C_8723BE_JOINBSSRPT_LENGTH 1 +#define H2C_8723BE_AP_OFFLOAD_LENGTH 3 +#define H2C_8723BE_WOWLAN_LENGTH 3 +#define H2C_8723BE_KEEP_ALIVE_CTRL_LENGTH 3 +#if (USE_OLD_WOWLAN_DEBUG_FW == 0) +#define H2C_8723BE_REMOTE_WAKE_CTRL_LEN 1 +#else +#define H2C_8723BE_REMOTE_WAKE_CTRL_LEN 3 +#endif +#define H2C_8723BE_AOAC_GLOBAL_INFO_LEN 2 +#define H2C_8723BE_AOAC_RSVDPAGE_LOC_LEN 7 + + +/* Fw PS state for RPWM. +*BIT[2:0] = HW state +*BIT[3] = Protocol PS state, 1: register active state , 0: register sleep state +*BIT[4] = sub-state +*/ +#define FW_PS_GO_ON BIT(0) +#define FW_PS_TX_NULL BIT(1) +#define FW_PS_RF_ON BIT(2) +#define FW_PS_REGISTER_ACTIVE BIT(3) + +#define FW_PS_DPS BIT(0) +#define FW_PS_LCLK (FW_PS_DPS) +#define FW_PS_RF_OFF BIT(1) +#define FW_PS_ALL_ON BIT(2) +#define FW_PS_ST_ACTIVE BIT(3) +#define FW_PS_ISR_ENABLE BIT(4) +#define FW_PS_IMR_ENABLE BIT(5) + + +#define FW_PS_ACK BIT(6) +#define FW_PS_TOGGLE BIT(7) + + /* 88E RPWM value*/ + /* BIT[0] = 1: 32k, 0: 40M*/ +#define FW_PS_CLOCK_OFF BIT(0) /* 32k*/ +#define FW_PS_CLOCK_ON 0 /*40M*/ + +#define FW_PS_STATE_MASK (0x0F) +#define FW_PS_STATE_HW_MASK (0x07) +/*ISR_ENABLE, IMR_ENABLE, and PS mode should be inherited.*/ +#define FW_PS_STATE_INT_MASK (0x3F) + +#define FW_PS_STATE(x) (FW_PS_STATE_MASK & (x)) +#define FW_PS_STATE_HW(x) (FW_PS_STATE_HW_MASK & (x)) +#define FW_PS_STATE_INT(x) (FW_PS_STATE_INT_MASK & (x)) +#define FW_PS_ISR_VAL(x) ((x) & 0x70) +#define FW_PS_IMR_MASK(x) ((x) & 0xDF) +#define FW_PS_KEEP_IMR(x) ((x) & 0x20) + + +#define FW_PS_STATE_S0 (FW_PS_DPS) +#define FW_PS_STATE_S1 (FW_PS_LCLK) +#define FW_PS_STATE_S2 (FW_PS_RF_OFF) +#define FW_PS_STATE_S3 (FW_PS_ALL_ON) +#define FW_PS_STATE_S4 ((FW_PS_ST_ACTIVE) | (FW_PS_ALL_ON)) + +/* ((FW_PS_RF_ON) | (FW_PS_REGISTER_ACTIVE))*/ +#define FW_PS_STATE_ALL_ON_88E (FW_PS_CLOCK_ON) +/* (FW_PS_RF_ON)*/ +#define FW_PS_STATE_RF_ON_88E (FW_PS_CLOCK_ON) +/* 0x0*/ +#define FW_PS_STATE_RF_OFF_88E (FW_PS_CLOCK_ON) +/* (FW_PS_STATE_RF_OFF)*/ +#define FW_PS_STATE_RF_OFF_LOW_PWR_88E (FW_PS_CLOCK_OFF) + +#define FW_PS_STATE_ALL_ON_92C (FW_PS_STATE_S4) +#define FW_PS_STATE_RF_ON_92C (FW_PS_STATE_S3) +#define FW_PS_STATE_RF_OFF_92C (FW_PS_STATE_S2) +#define FW_PS_STATE_RF_OFF_LOW_PWR_92C (FW_PS_STATE_S1) + + +/* For 88E H2C PwrMode Cmd ID 5.*/ +#define FW_PWR_STATE_ACTIVE ((FW_PS_RF_ON) | (FW_PS_REGISTER_ACTIVE)) +#define FW_PWR_STATE_RF_OFF 0 + +#define FW_PS_IS_ACK(x) ((x) & FW_PS_ACK) +#define FW_PS_IS_CLK_ON(x) ((x) & (FW_PS_RF_OFF | FW_PS_ALL_ON)) +#define FW_PS_IS_RF_ON(x) ((x) & (FW_PS_ALL_ON)) +#define FW_PS_IS_ACTIVE(x) ((x) & (FW_PS_ST_ACTIVE)) +#define FW_PS_IS_CPWM_INT(x) ((x) & 0x40) + +#define FW_CLR_PS_STATE(x) ((x) = ((x) & (0xF0))) + +#define IS_IN_LOW_POWER_STATE_88E(fwpsstate) \ + (FW_PS_STATE(fwpsstate) == FW_PS_CLOCK_OFF) + +#define FW_PWR_STATE_ACTIVE ((FW_PS_RF_ON) | (FW_PS_REGISTER_ACTIVE)) +#define FW_PWR_STATE_RF_OFF 0 + +#define pagenum_128(_len) (u32)(((_len)>>7) + ((_len)&0x7F ? 1 : 0)) + +#define SET_88E_H2CCMD_WOWLAN_FUNC_ENABLE(__ph2ccmd, __val) \ + SET_BITS_TO_LE_1BYTE(__ph2ccmd, 0, 1, __val) +#define SET_88E_H2CCMD_WOWLAN_PATTERN_MATCH_ENABLE(__ph2ccmd, __val) \ + SET_BITS_TO_LE_1BYTE(__ph2ccmd, 1, 1, __val) +#define SET_88E_H2CCMD_WOWLAN_MAGIC_PKT_ENABLE(__ph2ccmd, __val) \ + SET_BITS_TO_LE_1BYTE(__ph2ccmd, 2, 1, __val) +#define SET_88E_H2CCMD_WOWLAN_UNICAST_PKT_ENABLE(__ph2ccmd, __val) \ + SET_BITS_TO_LE_1BYTE(__ph2ccmd, 3, 1, __val) +#define SET_88E_H2CCMD_WOWLAN_ALL_PKT_DROP(__ph2ccmd, __val) \ + SET_BITS_TO_LE_1BYTE(__ph2ccmd, 4, 1, __val) +#define SET_88E_H2CCMD_WOWLAN_GPIO_ACTIVE(__ph2ccmd, __val) \ + SET_BITS_TO_LE_1BYTE(__ph2ccmd, 5, 1, __val) +#define SET_88E_H2CCMD_WOWLAN_REKEY_WAKE_UP(__ph2ccmd, __val) \ + SET_BITS_TO_LE_1BYTE(__ph2ccmd, 6, 1, __val) +#define SET_88E_H2CCMD_WOWLAN_DISCONNECT_WAKE_UP(__ph2ccmd, __val) \ + SET_BITS_TO_LE_1BYTE(__ph2ccmd, 7, 1, __val) +#define SET_88E_H2CCMD_WOWLAN_GPIONUM(__ph2ccmd, __val) \ + SET_BITS_TO_LE_1BYTE((__ph2ccmd)+1, 0, 8, __val) +#define SET_88E_H2CCMD_WOWLAN_GPIO_DURATION(__ph2ccmd, __val) \ + SET_BITS_TO_LE_1BYTE((__ph2ccmd)+2, 0, 8, __val) + + +#define SET_H2CCMD_PWRMODE_PARM_MODE(__ph2ccmd, __val) \ + SET_BITS_TO_LE_1BYTE(__ph2ccmd, 0, 8, __val) +#define SET_H2CCMD_PWRMODE_PARM_RLBM(__ph2ccmd, __val) \ + SET_BITS_TO_LE_1BYTE((__ph2ccmd)+1, 0, 4, __val) +#define SET_H2CCMD_PWRMODE_PARM_SMART_PS(__ph2ccmd, __val) \ + SET_BITS_TO_LE_1BYTE((__ph2ccmd)+1, 4, 4, __val) +#define SET_H2CCMD_PWRMODE_PARM_AWAKE_INTERVAL(__ph2ccmd, __val) \ + SET_BITS_TO_LE_1BYTE((__ph2ccmd)+2, 0, 8, __val) +#define SET_H2CCMD_PWRMODE_PARM_ALL_QUEUE_UAPSD(__ph2ccmd, __val) \ + SET_BITS_TO_LE_1BYTE((__ph2ccmd)+3, 0, 8, __val) +#define SET_H2CCMD_PWRMODE_PARM_PWR_STATE(__ph2ccmd, __val) \ + SET_BITS_TO_LE_1BYTE((__ph2ccmd)+4, 0, 8, __val) +#define GET_88E_H2CCMD_PWRMODE_PARM_MODE(__ph2ccmd) \ + LE_BITS_TO_1BYTE(__ph2ccmd, 0, 8) + +#define SET_H2CCMD_JOINBSSRPT_PARM_OPMODE(__ph2ccmd, __val) \ + SET_BITS_TO_LE_1BYTE(__ph2ccmd, 0, 8, __val) +#define SET_H2CCMD_RSVDPAGE_LOC_PROBE_RSP(__ph2ccmd, __val) \ + SET_BITS_TO_LE_1BYTE(__ph2ccmd, 0, 8, __val) +#define SET_H2CCMD_RSVDPAGE_LOC_PSPOLL(__ph2ccmd, __val) \ + SET_BITS_TO_LE_1BYTE((__ph2ccmd)+1, 0, 8, __val) +#define SET_H2CCMD_RSVDPAGE_LOC_NULL_DATA(__ph2ccmd, __val) \ + SET_BITS_TO_LE_1BYTE((__ph2ccmd)+2, 0, 8, __val) + +/* AP_OFFLOAD */ +#define SET_H2CCMD_AP_OFFLOAD_ON(__ph2ccmd, __val) \ + SET_BITS_TO_LE_1BYTE(__ph2ccmd, 0, 8, __val) +#define SET_H2CCMD_AP_OFFLOAD_HIDDEN(__ph2ccmd, __val) \ + SET_BITS_TO_LE_1BYTE((__ph2ccmd)+1, 0, 8, __val) +#define SET_H2CCMD_AP_OFFLOAD_DENYANY(__ph2ccmd, __val) \ + SET_BITS_TO_LE_1BYTE((__ph2ccmd)+2, 0, 8, __val) +#define SET_H2CCMD_AP_OFFLOAD_WAKEUP_EVT_RPT(__ph2ccmd, __val) \ + SET_BITS_TO_LE_1BYTE((__ph2ccmd)+3, 0, 8, __val) + +/* Keep Alive Control*/ +#define SET_88E_H2CCMD_KEEP_ALIVE_ENABLE(__ph2ccmd, __val) \ + SET_BITS_TO_LE_1BYTE(__ph2ccmd, 0, 1, __val) +#define SET_88E_H2CCMD_KEEP_ALIVE_ACCPEPT_USER_DEFINED(__ph2ccmd, __val)\ + SET_BITS_TO_LE_1BYTE(__ph2ccmd, 1, 1, __val) +#define SET_88E_H2CCMD_KEEP_ALIVE_PERIOD(__ph2ccmd, __val) \ + SET_BITS_TO_LE_1BYTE((__ph2ccmd)+1, 0, 8, __val) + +/*REMOTE_WAKE_CTRL */ +#define SET_88E_H2CCMD_REMOTE_WAKE_CTRL_EN(__ph2ccmd, __val) \ + SET_BITS_TO_LE_1BYTE(__ph2ccmd, 0, 1, __val) +#if (USE_OLD_WOWLAN_DEBUG_FW == 0) +#define SET_88E_H2CCMD_REMOTE_WAKE_CTRL_ARP_OFFLOAD_EN(__ph2ccmd, __val)\ + SET_BITS_TO_LE_1BYTE(__ph2ccmd, 1, 1, __val) +#define SET_88E_H2CCMD_REMOTE_WAKE_CTRL_NDP_OFFLOAD_EN(__ph2ccmd, __val)\ + SET_BITS_TO_LE_1BYTE(__ph2ccmd, 2, 1, __val) +#define SET_88E_H2CCMD_REMOTE_WAKE_CTRL_GTK_OFFLOAD_EN(__ph2ccmd, __val)\ + SET_BITS_TO_LE_1BYTE(__ph2ccmd, 3, 1, __val) +#else +#define SET_88E_H2CCMD_REMOTE_WAKE_CTRL_PAIRWISE_ENC_ALG(__ph2ccmd, __val)\ + SET_BITS_TO_LE_1BYTE((__ph2ccmd)+1, 0, 8, __val) +#define SET_88E_H2CCMD_REMOTE_WAKE_CTRL_GROUP_ENC_ALG(__ph2ccmd, __val) \ + SET_BITS_TO_LE_1BYTE((__ph2ccmd)+2, 0, 8, __val) +#endif + +/* GTK_OFFLOAD */ +#define SET_88E_H2CCMD_AOAC_GLOBAL_INFO_PAIRWISE_ENC_ALG(__ph2ccmd, __val)\ + SET_BITS_TO_LE_1BYTE(__ph2ccmd, 0, 8, __val) +#define SET_88E_H2CCMD_AOAC_GLOBAL_INFO_GROUP_ENC_ALG(__ph2ccmd, __val) \ + SET_BITS_TO_LE_1BYTE((__ph2ccmd)+1, 0, 8, __val) + +/* AOAC_RSVDPAGE_LOC */ +#define SET_88E_H2CCMD_AOAC_RSVDPAGE_LOC_REM_WAKE_CTRL_INFO(__ph2ccmd, __val)\ + SET_BITS_TO_LE_1BYTE((__ph2ccmd), 0, 8, __val) +#define SET_88E_H2CCMD_AOAC_RSVDPAGE_LOC_ARP_RSP(__ph2ccmd, __val) \ + SET_BITS_TO_LE_1BYTE((__ph2ccmd)+1, 0, 8, __val) +#define SET_88E_H2CCMD_AOAC_RSVDPAGE_LOC_NEIGHBOR_ADV(__ph2ccmd, __val) \ + SET_BITS_TO_LE_1BYTE((__ph2ccmd)+2, 0, 8, __val) +#define SET_88E_H2CCMD_AOAC_RSVDPAGE_LOC_GTK_RSP(__ph2ccmd, __val) \ + SET_BITS_TO_LE_1BYTE((__ph2ccmd)+3, 0, 8, __val) +#define SET_88E_H2CCMD_AOAC_RSVDPAGE_LOC_GTK_INFO(__ph2ccmd, __val) \ + SET_BITS_TO_LE_1BYTE((__ph2ccmd)+4, 0, 8, __val) + +void rtl8723be_set_fw_pwrmode_cmd(struct ieee80211_hw *hw, u8 mode); +void rtl8723be_set_fw_ap_off_load_cmd(struct ieee80211_hw *hw, + u8 ap_offload_enable); +void rtl8723be_fill_h2c_cmd(struct ieee80211_hw *hw, u8 element_id, + u32 cmd_len, u8 *p_cmdbuffer); +void rtl8723be_firmware_selfreset(struct ieee80211_hw *hw); +void rtl8723be_set_fw_rsvdpagepkt(struct ieee80211_hw *hw, + bool dl_finished); +void rtl8723be_set_fw_joinbss_report_cmd(struct ieee80211_hw *hw, u8 mstatus); +int rtl8723be_download_fw(struct ieee80211_hw *hw, + bool buse_wake_on_wlan_fw); +void rtl8723be_set_p2p_ps_offload_cmd(struct ieee80211_hw *hw, + u8 p2p_ps_state); + +#endif --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723be/hw.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723be/hw.c @@ -0,0 +1,2529 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2014 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#include "../wifi.h" +#include "../efuse.h" +#include "../base.h" +#include "../regd.h" +#include "../cam.h" +#include "../ps.h" +#include "../pci.h" +#include "reg.h" +#include "def.h" +#include "phy.h" +#include "dm.h" +#include "../rtl8723com/dm_common.h" +#include "fw.h" +#include "../rtl8723com/fw_common.h" +#include "led.h" +#include "hw.h" +#include "pwrseqcmd.h" +#include "pwrseq.h" +#include "../btcoexist/rtl_btc.h" + +#define LLT_CONFIG 5 + +static void _rtl8723be_return_beacon_queue_skb(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + struct rtl8192_tx_ring *ring = &rtlpci->tx_ring[BEACON_QUEUE]; + + while (skb_queue_len(&ring->queue)) { + struct rtl_tx_desc *entry = &ring->desc[ring->idx]; + struct sk_buff *skb = __skb_dequeue(&ring->queue); + + pci_unmap_single(rtlpci->pdev, + rtlpriv->cfg->ops->get_desc( + (u8 *)entry, true, HW_DESC_TXBUFF_ADDR), + skb->len, PCI_DMA_TODEVICE); + kfree_skb(skb); + ring->idx = (ring->idx + 1) % ring->entries; + } +} + +static void _rtl8723be_set_bcn_ctrl_reg(struct ieee80211_hw *hw, + u8 set_bits, u8 clear_bits) +{ + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + struct rtl_priv *rtlpriv = rtl_priv(hw); + + rtlpci->reg_bcn_ctrl_val |= set_bits; + rtlpci->reg_bcn_ctrl_val &= ~clear_bits; + + rtl_write_byte(rtlpriv, REG_BCN_CTRL, (u8) rtlpci->reg_bcn_ctrl_val); +} + +static void _rtl8723be_stop_tx_beacon(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 tmp1byte; + + tmp1byte = rtl_read_byte(rtlpriv, REG_FWHW_TXQ_CTRL + 2); + rtl_write_byte(rtlpriv, REG_FWHW_TXQ_CTRL + 2, tmp1byte & (~BIT(6))); + rtl_write_byte(rtlpriv, REG_TBTT_PROHIBIT + 1, 0x64); + tmp1byte = rtl_read_byte(rtlpriv, REG_TBTT_PROHIBIT + 2); + tmp1byte &= ~(BIT(0)); + rtl_write_byte(rtlpriv, REG_TBTT_PROHIBIT + 2, tmp1byte); +} + +static void _rtl8723be_resume_tx_beacon(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 tmp1byte; + + tmp1byte = rtl_read_byte(rtlpriv, REG_FWHW_TXQ_CTRL + 2); + rtl_write_byte(rtlpriv, REG_FWHW_TXQ_CTRL + 2, tmp1byte | BIT(6)); + rtl_write_byte(rtlpriv, REG_TBTT_PROHIBIT + 1, 0xff); + tmp1byte = rtl_read_byte(rtlpriv, REG_TBTT_PROHIBIT + 2); + tmp1byte |= BIT(1); + rtl_write_byte(rtlpriv, REG_TBTT_PROHIBIT + 2, tmp1byte); +} + +static void _rtl8723be_enable_bcn_sub_func(struct ieee80211_hw *hw) +{ + _rtl8723be_set_bcn_ctrl_reg(hw, 0, BIT(1)); +} + +static void _rtl8723be_disable_bcn_sub_func(struct ieee80211_hw *hw) +{ + _rtl8723be_set_bcn_ctrl_reg(hw, BIT(1), 0); +} + +static void _rtl8723be_set_fw_clock_on(struct ieee80211_hw *hw, u8 rpwm_val, + bool need_turn_off_ckk) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + bool support_remote_wake_up; + u32 count = 0, isr_regaddr, content; + bool schedule_timer = need_turn_off_ckk; + rtlpriv->cfg->ops->get_hw_reg(hw, HAL_DEF_WOWLAN, + (u8 *)(&support_remote_wake_up)); + + if (!rtlhal->fw_ready) + return; + if (!rtlpriv->psc.fw_current_inpsmode) + return; + + while (1) { + spin_lock_bh(&rtlpriv->locks.fw_ps_lock); + if (rtlhal->fw_clk_change_in_progress) { + while (rtlhal->fw_clk_change_in_progress) { + spin_unlock_bh(&rtlpriv->locks.fw_ps_lock); + count++; + udelay(100); + if (count > 1000) + return; + spin_lock_bh(&rtlpriv->locks.fw_ps_lock); + } + spin_unlock_bh(&rtlpriv->locks.fw_ps_lock); + } else { + rtlhal->fw_clk_change_in_progress = false; + spin_unlock_bh(&rtlpriv->locks.fw_ps_lock); + break; + } + } + if (IS_IN_LOW_POWER_STATE_88E(rtlhal->fw_ps_state)) { + rtlpriv->cfg->ops->get_hw_reg(hw, HW_VAR_SET_RPWM, + (u8 *)(&rpwm_val)); + if (FW_PS_IS_ACK(rpwm_val)) { + isr_regaddr = REG_HISR; + content = rtl_read_dword(rtlpriv, isr_regaddr); + while (!(content & IMR_CPWM) && (count < 500)) { + udelay(50); + count++; + content = rtl_read_dword(rtlpriv, isr_regaddr); + } + + if (content & IMR_CPWM) { + rtl_write_word(rtlpriv, isr_regaddr, 0x0100); + rtlhal->fw_ps_state = FW_PS_STATE_RF_ON_88E; + RT_TRACE(rtlpriv, COMP_POWER, DBG_LOUD, + "Receive CPWM INT!!! Set " + "pHalData->FwPSState = %X\n", + rtlhal->fw_ps_state); + } + } + spin_lock_bh(&rtlpriv->locks.fw_ps_lock); + rtlhal->fw_clk_change_in_progress = false; + spin_unlock_bh(&rtlpriv->locks.fw_ps_lock); + if (schedule_timer) { + mod_timer(&rtlpriv->works.fw_clockoff_timer, + jiffies + MSECS(10)); + } + } else { + spin_lock_bh(&rtlpriv->locks.fw_ps_lock); + rtlhal->fw_clk_change_in_progress = false; + spin_unlock_bh(&rtlpriv->locks.fw_ps_lock); + } +} + +static void _rtl8723be_set_fw_clock_off(struct ieee80211_hw *hw, u8 rpwm_val) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + struct rtl8192_tx_ring *ring; + enum rf_pwrstate rtstate; + bool schedule_timer = false; + u8 queue; + + if (!rtlhal->fw_ready) + return; + if (!rtlpriv->psc.fw_current_inpsmode) + return; + if (!rtlhal->allow_sw_to_change_hwclc) + return; + rtlpriv->cfg->ops->get_hw_reg(hw, HW_VAR_RF_STATE, (u8 *)(&rtstate)); + if (rtstate == ERFOFF || rtlpriv->psc.inactive_pwrstate == ERFOFF) + return; + + for (queue = 0; queue < RTL_PCI_MAX_TX_QUEUE_COUNT; queue++) { + ring = &rtlpci->tx_ring[queue]; + if (skb_queue_len(&ring->queue)) { + schedule_timer = true; + break; + } + } + if (schedule_timer) { + mod_timer(&rtlpriv->works.fw_clockoff_timer, + jiffies + MSECS(10)); + return; + } + if (FW_PS_STATE(rtlhal->fw_ps_state) != + FW_PS_STATE_RF_OFF_LOW_PWR_88E) { + spin_lock_bh(&rtlpriv->locks.fw_ps_lock); + if (!rtlhal->fw_clk_change_in_progress) { + rtlhal->fw_clk_change_in_progress = true; + spin_unlock_bh(&rtlpriv->locks.fw_ps_lock); + rtlhal->fw_ps_state = FW_PS_STATE(rpwm_val); + rtl_write_word(rtlpriv, REG_HISR, 0x0100); + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_SET_RPWM, + (u8 *)(&rpwm_val)); + spin_lock_bh(&rtlpriv->locks.fw_ps_lock); + rtlhal->fw_clk_change_in_progress = false; + spin_unlock_bh(&rtlpriv->locks.fw_ps_lock); + } else { + spin_unlock_bh(&rtlpriv->locks.fw_ps_lock); + mod_timer(&rtlpriv->works.fw_clockoff_timer, + jiffies + MSECS(10)); + } + } +} + +static void _rtl8723be_set_fw_ps_rf_on(struct ieee80211_hw *hw) +{ + u8 rpwm_val = 0; + rpwm_val |= (FW_PS_STATE_RF_OFF_88E | FW_PS_ACK); + _rtl8723be_set_fw_clock_on(hw, rpwm_val, true); +} + +static void _rtl8723be_fwlps_leave(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + bool fw_current_inps = false; + u8 rpwm_val = 0, fw_pwrmode = FW_PS_ACTIVE_MODE; + + if (ppsc->low_power_enable) { + rpwm_val = (FW_PS_STATE_ALL_ON_88E | FW_PS_ACK);/* RF on */ + _rtl8723be_set_fw_clock_on(hw, rpwm_val, false); + rtlhal->allow_sw_to_change_hwclc = false; + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_H2C_FW_PWRMODE, + (u8 *)(&fw_pwrmode)); + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_FW_PSMODE_STATUS, + (u8 *)(&fw_current_inps)); + } else { + rpwm_val = FW_PS_STATE_ALL_ON_88E; /* RF on */ + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_SET_RPWM, + (u8 *)(&rpwm_val)); + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_H2C_FW_PWRMODE, + (u8 *)(&fw_pwrmode)); + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_FW_PSMODE_STATUS, + (u8 *)(&fw_current_inps)); + } +} + +static void _rtl8723be_fwlps_enter(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + bool fw_current_inps = true; + u8 rpwm_val; + + if (ppsc->low_power_enable) { + rpwm_val = FW_PS_STATE_RF_OFF_LOW_PWR_88E; /* RF off */ + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_FW_PSMODE_STATUS, + (u8 *)(&fw_current_inps)); + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_H2C_FW_PWRMODE, + (u8 *)(&ppsc->fwctrl_psmode)); + rtlhal->allow_sw_to_change_hwclc = true; + _rtl8723be_set_fw_clock_off(hw, rpwm_val); + + } else { + rpwm_val = FW_PS_STATE_RF_OFF_88E; /* RF off */ + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_FW_PSMODE_STATUS, + (u8 *)(&fw_current_inps)); + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_H2C_FW_PWRMODE, + (u8 *)(&ppsc->fwctrl_psmode)); + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_SET_RPWM, + (u8 *)(&rpwm_val)); + } +} + +void rtl8723be_get_hw_reg(struct ieee80211_hw *hw, u8 variable, u8 *val) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + + switch (variable) { + case HW_VAR_RCR: + *((u32 *)(val)) = rtlpci->receive_config; + break; + case HW_VAR_RF_STATE: + *((enum rf_pwrstate *)(val)) = ppsc->rfpwr_state; + break; + case HW_VAR_FWLPS_RF_ON: { + enum rf_pwrstate rfstate; + u32 val_rcr; + + rtlpriv->cfg->ops->get_hw_reg(hw, HW_VAR_RF_STATE, + (u8 *)(&rfstate)); + if (rfstate == ERFOFF) { + *((bool *)(val)) = true; + } else { + val_rcr = rtl_read_dword(rtlpriv, REG_RCR); + val_rcr &= 0x00070000; + if (val_rcr) + *((bool *)(val)) = false; + else + *((bool *)(val)) = true; + } + break; } + case HW_VAR_FW_PSMODE_STATUS: + *((bool *)(val)) = ppsc->fw_current_inpsmode; + break; + case HW_VAR_CORRECT_TSF: { + u64 tsf; + u32 *ptsf_low = (u32 *)&tsf; + u32 *ptsf_high = ((u32 *)&tsf) + 1; + + *ptsf_high = rtl_read_dword(rtlpriv, (REG_TSFTR + 4)); + *ptsf_low = rtl_read_dword(rtlpriv, REG_TSFTR); + + *((u64 *)(val)) = tsf; + + break; } + default: + RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, + "switch case not process %x\n", variable); + break; + } +} + +void rtl8723be_set_hw_reg(struct ieee80211_hw *hw, u8 variable, u8 *val) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + u8 idx; + + switch (variable) { + case HW_VAR_ETHER_ADDR: + for (idx = 0; idx < ETH_ALEN; idx++) + rtl_write_byte(rtlpriv, (REG_MACID + idx), val[idx]); + break; + case HW_VAR_BASIC_RATE: { + u16 rate_cfg = ((u16 *)val)[0]; + u8 rate_index = 0; + rate_cfg = rate_cfg & 0x15f; + rate_cfg |= 0x01; + rtl_write_byte(rtlpriv, REG_RRSR, rate_cfg & 0xff); + rtl_write_byte(rtlpriv, REG_RRSR + 1, (rate_cfg >> 8) & 0xff); + while (rate_cfg > 0x1) { + rate_cfg = (rate_cfg >> 1); + rate_index++; + } + rtl_write_byte(rtlpriv, REG_INIRTS_RATE_SEL, rate_index); + break; } + case HW_VAR_BSSID: + for (idx = 0; idx < ETH_ALEN; idx++) + rtl_write_byte(rtlpriv, (REG_BSSID + idx), val[idx]); + break; + case HW_VAR_SIFS: + rtl_write_byte(rtlpriv, REG_SIFS_CTX + 1, val[0]); + rtl_write_byte(rtlpriv, REG_SIFS_TRX + 1, val[1]); + + rtl_write_byte(rtlpriv, REG_SPEC_SIFS + 1, val[0]); + rtl_write_byte(rtlpriv, REG_MAC_SPEC_SIFS + 1, val[0]); + + if (!mac->ht_enable) + rtl_write_word(rtlpriv, REG_RESP_SIFS_OFDM, 0x0e0e); + else + rtl_write_word(rtlpriv, REG_RESP_SIFS_OFDM, + *((u16 *)val)); + break; + case HW_VAR_SLOT_TIME: { + u8 e_aci; + + RT_TRACE(rtlpriv, COMP_MLME, DBG_LOUD, + "HW_VAR_SLOT_TIME %x\n", val[0]); + + rtl_write_byte(rtlpriv, REG_SLOT, val[0]); + + for (e_aci = 0; e_aci < AC_MAX; e_aci++) { + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_AC_PARAM, + (u8 *)(&e_aci)); + } + break; } + case HW_VAR_ACK_PREAMBLE: { + u8 reg_tmp; + u8 short_preamble = (bool) (*(u8 *)val); + reg_tmp = rtl_read_byte(rtlpriv, REG_TRXPTCL_CTL + 2); + if (short_preamble) { + reg_tmp |= 0x02; + rtl_write_byte(rtlpriv, REG_TRXPTCL_CTL + 2, reg_tmp); + } else { + reg_tmp &= 0xFD; + rtl_write_byte(rtlpriv, REG_TRXPTCL_CTL + 2, reg_tmp); + } + break; } + case HW_VAR_WPA_CONFIG: + rtl_write_byte(rtlpriv, REG_SECCFG, *((u8 *)val)); + break; + case HW_VAR_AMPDU_MIN_SPACE: { + u8 min_spacing_to_set; + u8 sec_min_space; + + min_spacing_to_set = *((u8 *)val); + if (min_spacing_to_set <= 7) { + sec_min_space = 0; + + if (min_spacing_to_set < sec_min_space) + min_spacing_to_set = sec_min_space; + + mac->min_space_cfg = ((mac->min_space_cfg & 0xf8) | + min_spacing_to_set); + + *val = min_spacing_to_set; + + RT_TRACE(rtlpriv, COMP_MLME, DBG_LOUD, + "Set HW_VAR_AMPDU_MIN_SPACE: %#x\n", + mac->min_space_cfg); + + rtl_write_byte(rtlpriv, REG_AMPDU_MIN_SPACE, + mac->min_space_cfg); + } + break; } + case HW_VAR_SHORTGI_DENSITY: { + u8 density_to_set; + + density_to_set = *((u8 *)val); + mac->min_space_cfg |= (density_to_set << 3); + + RT_TRACE(rtlpriv, COMP_MLME, DBG_LOUD, + "Set HW_VAR_SHORTGI_DENSITY: %#x\n", + mac->min_space_cfg); + + rtl_write_byte(rtlpriv, REG_AMPDU_MIN_SPACE, + mac->min_space_cfg); + break; } + case HW_VAR_AMPDU_FACTOR: { + u8 regtoset_normal[4] = {0x41, 0xa8, 0x72, 0xb9}; + u8 factor_toset; + u8 *p_regtoset = NULL; + u8 index = 0; + + p_regtoset = regtoset_normal; + + factor_toset = *((u8 *)val); + if (factor_toset <= 3) { + factor_toset = (1 << (factor_toset + 2)); + if (factor_toset > 0xf) + factor_toset = 0xf; + + for (index = 0; index < 4; index++) { + if ((p_regtoset[index] & 0xf0) > + (factor_toset << 4)) + p_regtoset[index] = + (p_regtoset[index] & 0x0f) | + (factor_toset << 4); + + if ((p_regtoset[index] & 0x0f) > factor_toset) + p_regtoset[index] = + (p_regtoset[index] & 0xf0) | + (factor_toset); + + rtl_write_byte(rtlpriv, + (REG_AGGLEN_LMT + index), + p_regtoset[index]); + } + RT_TRACE(rtlpriv, COMP_MLME, DBG_LOUD, + "Set HW_VAR_AMPDU_FACTOR: %#x\n", + factor_toset); + } + break; } + case HW_VAR_AC_PARAM: { + u8 e_aci = *((u8 *)val); + rtl8723_dm_init_edca_turbo(hw); + + if (rtlpci->acm_method != EACMWAY2_SW) + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_ACM_CTRL, + (u8 *)(&e_aci)); + break; } + case HW_VAR_ACM_CTRL: { + u8 e_aci = *((u8 *)val); + union aci_aifsn *p_aci_aifsn = + (union aci_aifsn *)(&(mac->ac[0].aifs)); + u8 acm = p_aci_aifsn->f.acm; + u8 acm_ctrl = rtl_read_byte(rtlpriv, REG_ACMHWCTRL); + + acm_ctrl = + acm_ctrl | ((rtlpci->acm_method == 2) ? 0x0 : 0x1); + + if (acm) { + switch (e_aci) { + case AC0_BE: + acm_ctrl |= ACMHW_BEQEN; + break; + case AC2_VI: + acm_ctrl |= ACMHW_VIQEN; + break; + case AC3_VO: + acm_ctrl |= ACMHW_VOQEN; + break; + default: + RT_TRACE(rtlpriv, COMP_ERR, DBG_WARNING, + "HW_VAR_ACM_CTRL acm set " + "failed: eACI is %d\n", acm); + break; + } + } else { + switch (e_aci) { + case AC0_BE: + acm_ctrl &= (~ACMHW_BEQEN); + break; + case AC2_VI: + acm_ctrl &= (~ACMHW_VIQEN); + break; + case AC3_VO: + acm_ctrl &= (~ACMHW_BEQEN); + break; + default: + RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, + "switch case not process\n"); + break; + } + } + RT_TRACE(rtlpriv, COMP_QOS, DBG_TRACE, + "SetHwReg8190pci(): [HW_VAR_ACM_CTRL] " + "Write 0x%X\n", acm_ctrl); + rtl_write_byte(rtlpriv, REG_ACMHWCTRL, acm_ctrl); + break; } + case HW_VAR_RCR: + rtl_write_dword(rtlpriv, REG_RCR, ((u32 *)(val))[0]); + rtlpci->receive_config = ((u32 *)(val))[0]; + break; + case HW_VAR_RETRY_LIMIT: { + u8 retry_limit = ((u8 *)(val))[0]; + + rtl_write_word(rtlpriv, REG_RL, + retry_limit << RETRY_LIMIT_SHORT_SHIFT | + retry_limit << RETRY_LIMIT_LONG_SHIFT); + break; } + case HW_VAR_DUAL_TSF_RST: + rtl_write_byte(rtlpriv, REG_DUAL_TSF_RST, (BIT(0) | BIT(1))); + break; + case HW_VAR_EFUSE_BYTES: + rtlefuse->efuse_usedbytes = *((u16 *)val); + break; + case HW_VAR_EFUSE_USAGE: + rtlefuse->efuse_usedpercentage = *((u8 *)val); + break; + case HW_VAR_IO_CMD: + rtl8723be_phy_set_io_cmd(hw, (*(enum io_type *)val)); + break; + case HW_VAR_SET_RPWM: { + u8 rpwm_val; + + rpwm_val = rtl_read_byte(rtlpriv, REG_PCIE_HRPWM); + udelay(1); + + if (rpwm_val & BIT(7)) { + rtl_write_byte(rtlpriv, REG_PCIE_HRPWM, (*(u8 *)val)); + } else { + rtl_write_byte(rtlpriv, REG_PCIE_HRPWM, + ((*(u8 *)val) | BIT(7))); + } + break; } + case HW_VAR_H2C_FW_PWRMODE: + rtl8723be_set_fw_pwrmode_cmd(hw, (*(u8 *)val)); + break; + case HW_VAR_FW_PSMODE_STATUS: + ppsc->fw_current_inpsmode = *((bool *)val); + break; + case HW_VAR_RESUME_CLK_ON: + _rtl8723be_set_fw_ps_rf_on(hw); + break; + case HW_VAR_FW_LPS_ACTION: { + bool enter_fwlps = *((bool *)val); + + if (enter_fwlps) + _rtl8723be_fwlps_enter(hw); + else + _rtl8723be_fwlps_leave(hw); + + break; } + case HW_VAR_H2C_FW_JOINBSSRPT: { + u8 mstatus = (*(u8 *)val); + u8 tmp_regcr, tmp_reg422, bcnvalid_reg; + u8 count = 0, dlbcn_count = 0; + bool recover = false; + + if (mstatus == RT_MEDIA_CONNECT) { + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_AID, NULL); + + tmp_regcr = rtl_read_byte(rtlpriv, REG_CR + 1); + rtl_write_byte(rtlpriv, REG_CR + 1, + (tmp_regcr | BIT(0))); + + _rtl8723be_set_bcn_ctrl_reg(hw, 0, BIT(3)); + _rtl8723be_set_bcn_ctrl_reg(hw, BIT(4), 0); + + tmp_reg422 = rtl_read_byte(rtlpriv, + REG_FWHW_TXQ_CTRL + 2); + rtl_write_byte(rtlpriv, REG_FWHW_TXQ_CTRL + 2, + tmp_reg422 & (~BIT(6))); + if (tmp_reg422 & BIT(6)) + recover = true; + + do { + bcnvalid_reg = rtl_read_byte(rtlpriv, + REG_TDECTRL + 2); + rtl_write_byte(rtlpriv, REG_TDECTRL + 2, + (bcnvalid_reg | BIT(0))); + _rtl8723be_return_beacon_queue_skb(hw); + + rtl8723be_set_fw_rsvdpagepkt(hw, 0); + bcnvalid_reg = rtl_read_byte(rtlpriv, + REG_TDECTRL + 2); + count = 0; + while (!(bcnvalid_reg & BIT(0)) && count < 20) { + count++; + udelay(10); + bcnvalid_reg = rtl_read_byte(rtlpriv, + REG_TDECTRL + 2); + } + dlbcn_count++; + } while (!(bcnvalid_reg & BIT(0)) && dlbcn_count < 5); + + if (bcnvalid_reg & BIT(0)) + rtl_write_byte(rtlpriv, REG_TDECTRL+2, BIT(0)); + + _rtl8723be_set_bcn_ctrl_reg(hw, BIT(3), 0); + _rtl8723be_set_bcn_ctrl_reg(hw, 0, BIT(4)); + + if (recover) { + rtl_write_byte(rtlpriv, REG_FWHW_TXQ_CTRL + 2, + tmp_reg422); + } + rtl_write_byte(rtlpriv, REG_CR + 1, + (tmp_regcr & ~(BIT(0)))); + } + rtl8723be_set_fw_joinbss_report_cmd(hw, (*(u8 *)val)); + break; } + case HW_VAR_H2C_FW_P2P_PS_OFFLOAD: + rtl8723be_set_p2p_ps_offload_cmd(hw, (*(u8 *)val)); + break; + case HW_VAR_AID: { + u16 u2btmp; + u2btmp = rtl_read_word(rtlpriv, REG_BCN_PSR_RPT); + u2btmp &= 0xC000; + rtl_write_word(rtlpriv, REG_BCN_PSR_RPT, + (u2btmp | mac->assoc_id)); + break; } + case HW_VAR_CORRECT_TSF: { + u8 btype_ibss = ((u8 *)(val))[0]; + + if (btype_ibss) + _rtl8723be_stop_tx_beacon(hw); + + _rtl8723be_set_bcn_ctrl_reg(hw, 0, BIT(3)); + + rtl_write_dword(rtlpriv, REG_TSFTR, + (u32) (mac->tsf & 0xffffffff)); + rtl_write_dword(rtlpriv, REG_TSFTR + 4, + (u32) ((mac->tsf >> 32) & 0xffffffff)); + + _rtl8723be_set_bcn_ctrl_reg(hw, BIT(3), 0); + + if (btype_ibss) + _rtl8723be_resume_tx_beacon(hw); + break; } + case HW_VAR_KEEP_ALIVE: { + u8 array[2]; + array[0] = 0xff; + array[1] = *((u8 *)val); + rtl8723be_fill_h2c_cmd(hw, H2C_8723BE_KEEP_ALIVE_CTRL, + 2, array); + break; } + default: + RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, + "switch case not process %x\n", + variable); + break; + } +} + +static bool _rtl8723be_llt_write(struct ieee80211_hw *hw, u32 address, u32 data) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + bool status = true; + int count = 0; + u32 value = _LLT_INIT_ADDR(address) | _LLT_INIT_DATA(data) | + _LLT_OP(_LLT_WRITE_ACCESS); + + rtl_write_dword(rtlpriv, REG_LLT_INIT, value); + + do { + value = rtl_read_dword(rtlpriv, REG_LLT_INIT); + if (_LLT_NO_ACTIVE == _LLT_OP_VALUE(value)) + break; + + if (count > POLLING_LLT_THRESHOLD) { + RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, + "Failed to polling write LLT done at " + "address %d!\n", address); + status = false; + break; + } + } while (++count); + + return status; +} + +static bool _rtl8723be_llt_table_init(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + unsigned short i; + u8 txpktbuf_bndy; + u8 maxpage; + bool status; + + maxpage = 255; + txpktbuf_bndy = 245; + + rtl_write_dword(rtlpriv, REG_TRXFF_BNDY, + (0x27FF0000 | txpktbuf_bndy)); + rtl_write_byte(rtlpriv, REG_TDECTRL + 1, txpktbuf_bndy); + + rtl_write_byte(rtlpriv, REG_TXPKTBUF_BCNQ_BDNY, txpktbuf_bndy); + rtl_write_byte(rtlpriv, REG_TXPKTBUF_MGQ_BDNY, txpktbuf_bndy); + + rtl_write_byte(rtlpriv, 0x45D, txpktbuf_bndy); + rtl_write_byte(rtlpriv, REG_PBP, 0x31); + rtl_write_byte(rtlpriv, REG_RX_DRVINFO_SZ, 0x4); + + for (i = 0; i < (txpktbuf_bndy - 1); i++) { + status = _rtl8723be_llt_write(hw, i, i + 1); + if (!status) + return status; + } + status = _rtl8723be_llt_write(hw, (txpktbuf_bndy - 1), 0xFF); + + if (!status) + return status; + + for (i = txpktbuf_bndy; i < maxpage; i++) { + status = _rtl8723be_llt_write(hw, i, (i + 1)); + if (!status) + return status; + } + status = _rtl8723be_llt_write(hw, maxpage, txpktbuf_bndy); + if (!status) + return status; + + rtl_write_dword(rtlpriv, REG_RQPN, 0x80e40808); + rtl_write_byte(rtlpriv, REG_RQPN_NPQ, 0x00); + + return true; +} + +static void _rtl8723be_gen_refresh_led_state(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + struct rtl_led *pled0 = &(pcipriv->ledctl.sw_led0); + + if (rtlpriv->rtlhal.up_first_time) + return; + + if (ppsc->rfoff_reason == RF_CHANGE_BY_IPS) + rtl8723be_sw_led_on(hw, pled0); + else if (ppsc->rfoff_reason == RF_CHANGE_BY_INIT) + rtl8723be_sw_led_on(hw, pled0); + else + rtl8723be_sw_led_off(hw, pled0); +} + +static bool _rtl8723be_init_mac(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + + unsigned char bytetmp; + unsigned short wordtmp; + u16 retry = 0; + bool mac_func_enable; + + rtl_write_byte(rtlpriv, REG_RSV_CTRL, 0x00); + + /*Auto Power Down to CHIP-off State*/ + bytetmp = rtl_read_byte(rtlpriv, REG_APS_FSMCO + 1) & (~BIT(7)); + rtl_write_byte(rtlpriv, REG_APS_FSMCO + 1, bytetmp); + + bytetmp = rtl_read_byte(rtlpriv, REG_CR); + if (bytetmp == 0xFF) + mac_func_enable = true; + else + mac_func_enable = false; + + /* HW Power on sequence */ + if (!rtlbe_hal_pwrseqcmdparsing(rtlpriv, PWR_CUT_ALL_MSK, + PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, + RTL8723_NIC_ENABLE_FLOW)) { + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, + "init MAC Fail as power on failure\n"); + return false; + } + bytetmp = rtl_read_byte(rtlpriv, REG_APS_FSMCO) | BIT(4); + rtl_write_byte(rtlpriv, REG_APS_FSMCO, bytetmp); + + bytetmp = rtl_read_byte(rtlpriv, REG_CR); + bytetmp = 0xff; + rtl_write_byte(rtlpriv, REG_CR, bytetmp); + mdelay(2); + + bytetmp = rtl_read_byte(rtlpriv, REG_HWSEQ_CTRL); + bytetmp |= 0x7f; + rtl_write_byte(rtlpriv, REG_HWSEQ_CTRL, bytetmp); + mdelay(2); + + bytetmp = rtl_read_byte(rtlpriv, REG_SYS_CFG + 3); + if (bytetmp & BIT(0)) { + bytetmp = rtl_read_byte(rtlpriv, 0x7c); + bytetmp |= BIT(6); + rtl_write_byte(rtlpriv, 0x7c, bytetmp); + } + bytetmp = rtl_read_byte(rtlpriv, REG_SYS_CLKR); + bytetmp |= BIT(3); + rtl_write_byte(rtlpriv, REG_SYS_CLKR, bytetmp); + bytetmp = rtl_read_byte(rtlpriv, REG_GPIO_MUXCFG + 1); + bytetmp &= ~BIT(4); + rtl_write_byte(rtlpriv, REG_GPIO_MUXCFG + 1, bytetmp); + + bytetmp = rtl_read_byte(rtlpriv, REG_PCIE_CTRL_REG+3); + rtl_write_byte(rtlpriv, REG_PCIE_CTRL_REG+3, bytetmp | 0x77); + + rtl_write_word(rtlpriv, REG_CR, 0x2ff); + + if (!mac_func_enable) { + if (!_rtl8723be_llt_table_init(hw)) + return false; + } + rtl_write_dword(rtlpriv, REG_HISR, 0xffffffff); + rtl_write_dword(rtlpriv, REG_HISRE, 0xffffffff); + + /* Enable FW Beamformer Interrupt */ + bytetmp = rtl_read_byte(rtlpriv, REG_FWIMR + 3); + rtl_write_byte(rtlpriv, REG_FWIMR + 3, bytetmp | BIT(6)); + + wordtmp = rtl_read_word(rtlpriv, REG_TRXDMA_CTRL); + wordtmp &= 0xf; + wordtmp |= 0xF5B1; + rtl_write_word(rtlpriv, REG_TRXDMA_CTRL, wordtmp); + + rtl_write_byte(rtlpriv, REG_FWHW_TXQ_CTRL + 1, 0x1F); + rtl_write_dword(rtlpriv, REG_RCR, rtlpci->receive_config); + rtl_write_word(rtlpriv, REG_RXFLTMAP2, 0xFFFF); + rtl_write_dword(rtlpriv, REG_TCR, rtlpci->transmit_config); + + rtl_write_byte(rtlpriv, 0x4d0, 0x0); + + rtl_write_dword(rtlpriv, REG_BCNQ_DESA, + ((u64) rtlpci->tx_ring[BEACON_QUEUE].dma) & + DMA_BIT_MASK(32)); + rtl_write_dword(rtlpriv, REG_MGQ_DESA, + (u64) rtlpci->tx_ring[MGNT_QUEUE].dma & + DMA_BIT_MASK(32)); + rtl_write_dword(rtlpriv, REG_VOQ_DESA, + (u64) rtlpci->tx_ring[VO_QUEUE].dma & DMA_BIT_MASK(32)); + rtl_write_dword(rtlpriv, REG_VIQ_DESA, + (u64) rtlpci->tx_ring[VI_QUEUE].dma & DMA_BIT_MASK(32)); + rtl_write_dword(rtlpriv, REG_BEQ_DESA, + (u64) rtlpci->tx_ring[BE_QUEUE].dma & DMA_BIT_MASK(32)); + rtl_write_dword(rtlpriv, REG_BKQ_DESA, + (u64) rtlpci->tx_ring[BK_QUEUE].dma & DMA_BIT_MASK(32)); + rtl_write_dword(rtlpriv, REG_HQ_DESA, + (u64) rtlpci->tx_ring[HIGH_QUEUE].dma & + DMA_BIT_MASK(32)); + rtl_write_dword(rtlpriv, REG_RX_DESA, + (u64) rtlpci->rx_ring[RX_MPDU_QUEUE].dma & + DMA_BIT_MASK(32)); + + bytetmp = rtl_read_byte(rtlpriv, REG_PCIE_CTRL_REG + 3); + rtl_write_byte(rtlpriv, REG_PCIE_CTRL_REG + 3, bytetmp | 0x77); + + rtl_write_dword(rtlpriv, REG_INT_MIG, 0); + + bytetmp = rtl_read_byte(rtlpriv, REG_APSD_CTRL); + rtl_write_byte(rtlpriv, REG_APSD_CTRL, bytetmp & ~BIT(6)); + + rtl_write_byte(rtlpriv, REG_SECONDARY_CCA_CTRL, 0x3); + + do { + retry++; + bytetmp = rtl_read_byte(rtlpriv, REG_APSD_CTRL); + } while ((retry < 200) && (bytetmp & BIT(7))); + + _rtl8723be_gen_refresh_led_state(hw); + + rtl_write_dword(rtlpriv, REG_MCUTST_1, 0x0); + + bytetmp = rtl_read_byte(rtlpriv, REG_RXDMA_CONTROL); + rtl_write_byte(rtlpriv, REG_RXDMA_CONTROL, bytetmp & ~BIT(2)); + + return true; +} + +static void _rtl8723be_hw_configure(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 reg_bw_opmode; + u32 reg_ratr, reg_prsr; + + reg_bw_opmode = BW_OPMODE_20MHZ; + reg_ratr = RATE_ALL_CCK | RATE_ALL_OFDM_AG | + RATE_ALL_OFDM_1SS | RATE_ALL_OFDM_2SS; + reg_prsr = RATE_ALL_CCK | RATE_ALL_OFDM_AG; + + rtl_write_dword(rtlpriv, REG_RRSR, reg_prsr); + rtl_write_byte(rtlpriv, REG_HWSEQ_CTRL, 0xFF); +} + +static void _rtl8723be_enable_aspm_back_door(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + + rtl_write_byte(rtlpriv, 0x34b, 0x93); + rtl_write_word(rtlpriv, 0x350, 0x870c); + rtl_write_byte(rtlpriv, 0x352, 0x1); + + if (ppsc->support_backdoor) + rtl_write_byte(rtlpriv, 0x349, 0x1b); + else + rtl_write_byte(rtlpriv, 0x349, 0x03); + + rtl_write_word(rtlpriv, 0x350, 0x2718); + rtl_write_byte(rtlpriv, 0x352, 0x1); +} + +void rtl8723be_enable_hw_security_config(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 sec_reg_value; + + RT_TRACE(rtlpriv, COMP_INIT, DBG_DMESG, + "PairwiseEncAlgorithm = %d GroupEncAlgorithm = %d\n", + rtlpriv->sec.pairwise_enc_algorithm, + rtlpriv->sec.group_enc_algorithm); + + if (rtlpriv->cfg->mod_params->sw_crypto || rtlpriv->sec.use_sw_sec) { + RT_TRACE(rtlpriv, COMP_SEC, DBG_DMESG, + "not open hw encryption\n"); + return; + } + sec_reg_value = SCR_TXENCENABLE | SCR_RXDECENABLE; + + if (rtlpriv->sec.use_defaultkey) { + sec_reg_value |= SCR_TXUSEDK; + sec_reg_value |= SCR_RXUSEDK; + } + sec_reg_value |= (SCR_RXBCUSEDK | SCR_TXBCUSEDK); + + rtl_write_byte(rtlpriv, REG_CR + 1, 0x02); + + RT_TRACE(rtlpriv, COMP_SEC, DBG_DMESG, "The SECR-value %x\n", + sec_reg_value); + + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_WPA_CONFIG, &sec_reg_value); +} + +int rtl8723be_hw_init(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + bool rtstatus = true; + int err; + u8 tmp_u1b; + unsigned long flags; + + /* reenable interrupts to not interfere with other devices */ + local_save_flags(flags); + local_irq_enable(); + + rtlpriv->rtlhal.being_init_adapter = true; + rtlpriv->intf_ops->disable_aspm(hw); + rtstatus = _rtl8723be_init_mac(hw); + if (!rtstatus) { + RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, "Init MAC failed\n"); + err = 1; + goto exit; + } + tmp_u1b = rtl_read_byte(rtlpriv, REG_SYS_CFG); + tmp_u1b &= 0x7F; + rtl_write_byte(rtlpriv, REG_SYS_CFG, tmp_u1b); + + err = rtl8723_download_fw(hw, true); + if (err) { + RT_TRACE(rtlpriv, COMP_ERR, DBG_WARNING, + "Failed to download FW. Init HW without FW now..\n"); + err = 1; + rtlhal->fw_ready = false; + goto exit; + } else { + rtlhal->fw_ready = true; + } + rtlhal->last_hmeboxnum = 0; + rtl8723be_phy_mac_config(hw); + /* because last function modify RCR, so we update + * rcr var here, or TP will unstable for receive_config + * is wrong, RX RCR_ACRC32 will cause TP unstabel & Rx + * RCR_APP_ICV will cause mac80211 unassoc for cisco 1252 + */ + rtlpci->receive_config = rtl_read_dword(rtlpriv, REG_RCR); + rtlpci->receive_config &= ~(RCR_ACRC32 | RCR_AICV); + rtl_write_dword(rtlpriv, REG_RCR, rtlpci->receive_config); + + rtl8723be_phy_bb_config(hw); + rtlphy->rf_mode = RF_OP_BY_SW_3WIRE; + rtl8723be_phy_rf_config(hw); + + rtlphy->rfreg_chnlval[0] = rtl_get_rfreg(hw, (enum radio_path)0, + RF_CHNLBW, RFREG_OFFSET_MASK); + rtlphy->rfreg_chnlval[1] = rtl_get_rfreg(hw, (enum radio_path)1, + RF_CHNLBW, RFREG_OFFSET_MASK); + rtlphy->rfreg_chnlval[0] &= 0xFFF03FF; + rtlphy->rfreg_chnlval[0] |= (BIT(10) | BIT(11)); + + rtl_set_bbreg(hw, RFPGA0_RFMOD, BCCKEN, 0x1); + rtl_set_bbreg(hw, RFPGA0_RFMOD, BOFDMEN, 0x1); + rtl_set_bbreg(hw, RFPGA0_ANALOGPARAMETER2, BIT(10), 1); + _rtl8723be_hw_configure(hw); + rtl_cam_reset_all_entry(hw); + rtl8723be_enable_hw_security_config(hw); + + ppsc->rfpwr_state = ERFON; + + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_ETHER_ADDR, mac->mac_addr); + _rtl8723be_enable_aspm_back_door(hw); + rtlpriv->intf_ops->enable_aspm(hw); + + rtl8723be_bt_hw_init(hw); + + rtl_set_bbreg(hw, 0x64, BIT(20), 0); + rtl_set_bbreg(hw, 0x64, BIT(24), 0); + + rtl_set_bbreg(hw, 0x40, BIT(4), 0); + rtl_set_bbreg(hw, 0x40, BIT(3), 1); + + rtl_set_bbreg(hw, 0x944, BIT(0)|BIT(1), 0x3); + rtl_set_bbreg(hw, 0x930, 0xff, 0x77); + + rtl_set_bbreg(hw, 0x38, BIT(11), 0x1); + + rtl_set_bbreg(hw, 0xb2c, 0xffffffff, 0x80000000); + + if (ppsc->rfpwr_state == ERFON) { + rtl8723be_dm_check_txpower_tracking(hw); + rtl8723be_phy_lc_calibrate(hw); + } + tmp_u1b = efuse_read_1byte(hw, 0x1FA); + if (!(tmp_u1b & BIT(0))) { + rtl_set_rfreg(hw, RF90_PATH_A, 0x15, 0x0F, 0x05); + RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, "PA BIAS path A\n"); + } + if (!(tmp_u1b & BIT(4))) { + tmp_u1b = rtl_read_byte(rtlpriv, 0x16); + tmp_u1b &= 0x0F; + rtl_write_byte(rtlpriv, 0x16, tmp_u1b | 0x80); + udelay(10); + rtl_write_byte(rtlpriv, 0x16, tmp_u1b | 0x90); + RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, "under 1.5V\n"); + } + rtl8723be_dm_init(hw); +exit: + local_irq_restore(flags); + rtlpriv->rtlhal.being_init_adapter = false; + return err; +} + +static enum version_8723e _rtl8723be_read_chip_version(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + enum version_8723e version = VERSION_UNKNOWN; + u8 count = 0; + u8 value8; + u32 value32; + + rtl_write_byte(rtlpriv, REG_RSV_CTRL, 0); + + value8 = rtl_read_byte(rtlpriv, REG_APS_FSMCO + 2); + rtl_write_byte(rtlpriv, REG_APS_FSMCO + 2, value8 | BIT(0)); + + value8 = rtl_read_byte(rtlpriv, REG_APS_FSMCO + 1); + rtl_write_byte(rtlpriv, REG_APS_FSMCO + 1, value8 | BIT(0)); + + value8 = rtl_read_byte(rtlpriv, REG_APS_FSMCO + 1); + while (((value8 & BIT(0))) && (count++ < 100)) { + udelay(10); + value8 = rtl_read_byte(rtlpriv, REG_APS_FSMCO + 1); + } + count = 0; + value8 = rtl_read_byte(rtlpriv, REG_ROM_VERSION); + while ((value8 == 0) && (count++ < 50)) { + value8 = rtl_read_byte(rtlpriv, REG_ROM_VERSION); + mdelay(1); + } + value32 = rtl_read_dword(rtlpriv, REG_SYS_CFG1); + if ((value32 & (CHIP_8723B)) != CHIP_8723B) + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, "unkown chip version\n"); + else + version = (enum version_8723e) VERSION_TEST_CHIP_1T1R_8723B; + + rtlphy->rf_type = RF_1T1R; + + value8 = rtl_read_byte(rtlpriv, REG_ROM_VERSION); + if (value8 >= 0x02) + version |= BIT(3); + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, + "Chip RF Type: %s\n", (rtlphy->rf_type == RF_2T2R) ? + "RF_2T2R" : "RF_1T1R"); + + return version; +} + +static int _rtl8723be_set_media_status(struct ieee80211_hw *hw, + enum nl80211_iftype type) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 bt_msr = rtl_read_byte(rtlpriv, MSR) & 0xfc; + enum led_ctl_mode ledaction = LED_CTL_NO_LINK; + + rtl_write_dword(rtlpriv, REG_BCN_CTRL, 0); + RT_TRACE(rtlpriv, COMP_BEACON, DBG_LOUD, + "clear 0x550 when set HW_VAR_MEDIA_STATUS\n"); + + if (type == NL80211_IFTYPE_UNSPECIFIED || + type == NL80211_IFTYPE_STATION) { + _rtl8723be_stop_tx_beacon(hw); + _rtl8723be_enable_bcn_sub_func(hw); + } else if (type == NL80211_IFTYPE_ADHOC || type == NL80211_IFTYPE_AP) { + _rtl8723be_resume_tx_beacon(hw); + _rtl8723be_disable_bcn_sub_func(hw); + } else { + RT_TRACE(rtlpriv, COMP_ERR, DBG_WARNING, + "Set HW_VAR_MEDIA_STATUS: " + "No such media status(%x).\n", type); + } + switch (type) { + case NL80211_IFTYPE_UNSPECIFIED: + bt_msr |= MSR_NOLINK; + ledaction = LED_CTL_LINK; + RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, + "Set Network type to NO LINK!\n"); + break; + case NL80211_IFTYPE_ADHOC: + bt_msr |= MSR_ADHOC; + RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, + "Set Network type to Ad Hoc!\n"); + break; + case NL80211_IFTYPE_STATION: + bt_msr |= MSR_INFRA; + ledaction = LED_CTL_LINK; + RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, + "Set Network type to STA!\n"); + break; + case NL80211_IFTYPE_AP: + bt_msr |= MSR_AP; + RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, + "Set Network type to AP!\n"); + break; + default: + RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, + "Network type %d not support!\n", type); + return 1; + } + rtl_write_byte(rtlpriv, (MSR), bt_msr); + rtlpriv->cfg->ops->led_control(hw, ledaction); + if ((bt_msr & 0x03) == MSR_AP) + rtl_write_byte(rtlpriv, REG_BCNTCFG + 1, 0x00); + else + rtl_write_byte(rtlpriv, REG_BCNTCFG + 1, 0x66); + return 0; +} + +void rtl8723be_set_check_bssid(struct ieee80211_hw *hw, bool check_bssid) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + u32 reg_rcr = rtlpci->receive_config; + + if (rtlpriv->psc.rfpwr_state != ERFON) + return; + + if (check_bssid) { + reg_rcr |= (RCR_CBSSID_DATA | RCR_CBSSID_BCN); + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_RCR, + (u8 *)(®_rcr)); + _rtl8723be_set_bcn_ctrl_reg(hw, 0, BIT(4)); + } else if (!check_bssid) { + reg_rcr &= (~(RCR_CBSSID_DATA | RCR_CBSSID_BCN)); + _rtl8723be_set_bcn_ctrl_reg(hw, BIT(4), 0); + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_RCR, + (u8 *)(®_rcr)); + } +} + +int rtl8723be_set_network_type(struct ieee80211_hw *hw, + enum nl80211_iftype type) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + if (_rtl8723be_set_media_status(hw, type)) + return -EOPNOTSUPP; + + if (rtlpriv->mac80211.link_state == MAC80211_LINKED) { + if (type != NL80211_IFTYPE_AP) + rtl8723be_set_check_bssid(hw, true); + } else { + rtl8723be_set_check_bssid(hw, false); + } + return 0; +} + +/* don't set REG_EDCA_BE_PARAM here + * because mac80211 will send pkt when scan + */ +void rtl8723be_set_qos(struct ieee80211_hw *hw, int aci) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + rtl8723_dm_init_edca_turbo(hw); + switch (aci) { + case AC1_BK: + rtl_write_dword(rtlpriv, REG_EDCA_BK_PARAM, 0xa44f); + break; + case AC0_BE: + break; + case AC2_VI: + rtl_write_dword(rtlpriv, REG_EDCA_VI_PARAM, 0x5e4322); + break; + case AC3_VO: + rtl_write_dword(rtlpriv, REG_EDCA_VO_PARAM, 0x2f3222); + break; + default: + RT_ASSERT(false, "invalid aci: %d !\n", aci); + break; + } +} + +void rtl8723be_enable_interrupt(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + + 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; + /* there are some C2H CMDs have been sent + * before system interrupt is enabled, e.g., C2H, CPWM. + * So we need to clear all C2H events that FW has notified, + * otherwise FW won't schedule any commands anymore. + */ + rtl_write_byte(rtlpriv, REG_C2HEVT_CLEAR, 0); + /*enable system interrupt*/ + rtl_write_dword(rtlpriv, REG_HSIMR, rtlpci->sys_irq_mask & 0xFFFFFFFF); +} + +void rtl8723be_disable_interrupt(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + + rtl_write_dword(rtlpriv, REG_HIMR, IMR_DISABLED); + rtl_write_dword(rtlpriv, REG_HIMRE, IMR_DISABLED); + rtlpci->irq_enabled = false; + synchronize_irq(rtlpci->pdev->irq); +} + +static void _rtl8723be_poweroff_adapter(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + u8 u1b_tmp; + + /* Combo (PCIe + USB) Card and PCIe-MF Card */ + /* 1. Run LPS WL RFOFF flow */ + rtlbe_hal_pwrseqcmdparsing(rtlpriv, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, + PWR_INTF_PCI_MSK, RTL8723_NIC_LPS_ENTER_FLOW); + + /* 2. 0x1F[7:0] = 0 */ + /* turn off RF */ + rtl_write_byte(rtlpriv, REG_RF_CTRL, 0x00); + if ((rtl_read_byte(rtlpriv, REG_MCUFWDL) & BIT(7)) && + rtlhal->fw_ready) + rtl8723be_firmware_selfreset(hw); + + /* Reset MCU. Suggested by Filen. */ + u1b_tmp = rtl_read_byte(rtlpriv, REG_SYS_FUNC_EN + 1); + rtl_write_byte(rtlpriv, REG_SYS_FUNC_EN + 1, (u1b_tmp & (~BIT(2)))); + + /* g. MCUFWDL 0x80[1:0]= 0 */ + /* reset MCU ready status */ + rtl_write_byte(rtlpriv, REG_MCUFWDL, 0x00); + + /* HW card disable configuration. */ + rtlbe_hal_pwrseqcmdparsing(rtlpriv, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, + PWR_INTF_PCI_MSK, RTL8723_NIC_DISABLE_FLOW); + + /* Reset MCU IO Wrapper */ + u1b_tmp = rtl_read_byte(rtlpriv, REG_RSV_CTRL + 1); + rtl_write_byte(rtlpriv, REG_RSV_CTRL + 1, (u1b_tmp & (~BIT(0)))); + u1b_tmp = rtl_read_byte(rtlpriv, REG_RSV_CTRL + 1); + rtl_write_byte(rtlpriv, REG_RSV_CTRL + 1, u1b_tmp | BIT(0)); + + /* 7. RSV_CTRL 0x1C[7:0] = 0x0E */ + /* lock ISO/CLK/Power control register */ + rtl_write_byte(rtlpriv, REG_RSV_CTRL, 0x0e); +} + +void rtl8723be_card_disable(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + enum nl80211_iftype opmode; + + mac->link_state = MAC80211_NOLINK; + opmode = NL80211_IFTYPE_UNSPECIFIED; + _rtl8723be_set_media_status(hw, opmode); + if (rtlpriv->rtlhal.driver_is_goingto_unload || + ppsc->rfoff_reason > RF_CHANGE_BY_PS) + rtlpriv->cfg->ops->led_control(hw, LED_CTL_POWER_OFF); + RT_SET_PS_LEVEL(ppsc, RT_RF_OFF_LEVL_HALT_NIC); + _rtl8723be_poweroff_adapter(hw); + + /* after power off we should do iqk again */ + rtlpriv->phy.iqk_initialized = false; +} + +void rtl8723be_interrupt_recognized(struct ieee80211_hw *hw, + u32 *p_inta, u32 *p_intb) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + + *p_inta = rtl_read_dword(rtlpriv, ISR) & rtlpci->irq_mask[0]; + rtl_write_dword(rtlpriv, ISR, *p_inta); + + *p_intb = rtl_read_dword(rtlpriv, REG_HISRE) & + rtlpci->irq_mask[1]; + rtl_write_dword(rtlpriv, REG_HISRE, *p_intb); +} + +void rtl8723be_set_beacon_related_registers(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + u16 bcn_interval, atim_window; + + bcn_interval = mac->beacon_interval; + atim_window = 2; /*FIX MERGE */ + rtl8723be_disable_interrupt(hw); + rtl_write_word(rtlpriv, REG_ATIMWND, atim_window); + rtl_write_word(rtlpriv, REG_BCN_INTERVAL, bcn_interval); + rtl_write_word(rtlpriv, REG_BCNTCFG, 0x660f); + rtl_write_byte(rtlpriv, REG_RXTSF_OFFSET_CCK, 0x18); + rtl_write_byte(rtlpriv, REG_RXTSF_OFFSET_OFDM, 0x18); + rtl_write_byte(rtlpriv, 0x606, 0x30); + rtl8723be_enable_interrupt(hw); +} + +void rtl8723be_set_beacon_interval(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + u16 bcn_interval = mac->beacon_interval; + + RT_TRACE(rtlpriv, COMP_BEACON, DBG_DMESG, + "beacon_interval:%d\n", bcn_interval); + rtl8723be_disable_interrupt(hw); + rtl_write_word(rtlpriv, REG_BCN_INTERVAL, bcn_interval); + rtl8723be_enable_interrupt(hw); +} + +void rtl8723be_update_interrupt_mask(struct ieee80211_hw *hw, + u32 add_msr, u32 rm_msr) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + + RT_TRACE(rtlpriv, COMP_INTR, DBG_LOUD, + "add_msr:%x, rm_msr:%x\n", add_msr, rm_msr); + + if (add_msr) + rtlpci->irq_mask[0] |= add_msr; + if (rm_msr) + rtlpci->irq_mask[0] &= (~rm_msr); + rtl8723be_disable_interrupt(hw); + rtl8723be_enable_interrupt(hw); +} + +static u8 _rtl8723be_get_chnl_group(u8 chnl) +{ + u8 group; + + if (chnl < 3) + group = 0; + else if (chnl < 9) + group = 1; + else + group = 2; + return group; +} + +static void _rtl8723be_read_power_value_fromprom(struct ieee80211_hw *hw, + struct txpower_info_2g *pw2g, + struct txpower_info_5g *pw5g, + bool autoload_fail, u8 *hwinfo) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 path, addr = EEPROM_TX_PWR_INX, group, cnt = 0; + + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, + "hal_ReadPowerValueFromPROM8723BE(): " + "PROMContent[0x%x]= 0x%x\n", + (addr + 1), hwinfo[addr + 1]); + if (0xFF == hwinfo[addr + 1]) /*YJ, add, 120316*/ + autoload_fail = true; + + if (autoload_fail) { + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, + "auto load fail : Use Default value!\n"); + for (path = 0; path < MAX_RF_PATH; path++) { + /* 2.4G default value */ + for (group = 0; group < MAX_CHNL_GROUP_24G; group++) { + pw2g->index_cck_base[path][group] = 0x2D; + pw2g->index_bw40_base[path][group] = 0x2D; + } + for (cnt = 0; cnt < MAX_TX_COUNT; cnt++) { + if (cnt == 0) { + pw2g->bw20_diff[path][0] = 0x02; + pw2g->ofdm_diff[path][0] = 0x04; + } else { + pw2g->bw20_diff[path][cnt] = 0xFE; + pw2g->bw40_diff[path][cnt] = 0xFE; + pw2g->cck_diff[path][cnt] = 0xFE; + pw2g->ofdm_diff[path][cnt] = 0xFE; + } + } + } + return; + } + for (path = 0; path < MAX_RF_PATH; path++) { + /*2.4G default value*/ + for (group = 0; group < MAX_CHNL_GROUP_24G; group++) { + pw2g->index_cck_base[path][group] = hwinfo[addr++]; + if (pw2g->index_cck_base[path][group] == 0xFF) + pw2g->index_cck_base[path][group] = 0x2D; + } + for (group = 0; group < MAX_CHNL_GROUP_24G - 1; group++) { + pw2g->index_bw40_base[path][group] = hwinfo[addr++]; + if (pw2g->index_bw40_base[path][group] == 0xFF) + pw2g->index_bw40_base[path][group] = 0x2D; + } + for (cnt = 0; cnt < MAX_TX_COUNT; cnt++) { + if (cnt == 0) { + pw2g->bw40_diff[path][cnt] = 0; + if (hwinfo[addr] == 0xFF) { + pw2g->bw20_diff[path][cnt] = 0x02; + } else { + pw2g->bw20_diff[path][cnt] = + (hwinfo[addr] & 0xf0) >> 4; + /*bit sign number to 8 bit sign number*/ + if (pw2g->bw20_diff[path][cnt] & BIT(3)) + pw2g->bw20_diff[path][cnt] |= 0xF0; + } + if (hwinfo[addr] == 0xFF) { + pw2g->ofdm_diff[path][cnt] = 0x04; + } else { + pw2g->ofdm_diff[path][cnt] = + (hwinfo[addr] & 0x0f); + /*bit sign number to 8 bit sign number*/ + if (pw2g->ofdm_diff[path][cnt] & BIT(3)) + pw2g->ofdm_diff[path][cnt] |= + 0xF0; + } + pw2g->cck_diff[path][cnt] = 0; + addr++; + } else { + if (hwinfo[addr] == 0xFF) { + pw2g->bw40_diff[path][cnt] = 0xFE; + } else { + pw2g->bw40_diff[path][cnt] = + (hwinfo[addr] & 0xf0) >> 4; + if (pw2g->bw40_diff[path][cnt] & BIT(3)) + pw2g->bw40_diff[path][cnt] |= + 0xF0; + } + if (hwinfo[addr] == 0xFF) { + pw2g->bw20_diff[path][cnt] = 0xFE; + } else { + pw2g->bw20_diff[path][cnt] = + (hwinfo[addr] & 0x0f); + if (pw2g->bw20_diff[path][cnt] & BIT(3)) + pw2g->bw20_diff[path][cnt] |= + 0xF0; + } + addr++; + + if (hwinfo[addr] == 0xFF) { + pw2g->ofdm_diff[path][cnt] = 0xFE; + } else { + pw2g->ofdm_diff[path][cnt] = + (hwinfo[addr] & 0xf0) >> 4; + if (pw2g->ofdm_diff[path][cnt] & BIT(3)) + pw2g->ofdm_diff[path][cnt] |= + 0xF0; + } + if (hwinfo[addr] == 0xFF) { + pw2g->cck_diff[path][cnt] = 0xFE; + } else { + pw2g->cck_diff[path][cnt] = + (hwinfo[addr] & 0x0f); + if (pw2g->cck_diff[path][cnt] & BIT(3)) + pw2g->cck_diff[path][cnt] |= + 0xF0; + } + addr++; + } + } + /*5G default value*/ + for (group = 0; group < MAX_CHNL_GROUP_5G; group++) { + pw5g->index_bw40_base[path][group] = hwinfo[addr++]; + if (pw5g->index_bw40_base[path][group] == 0xFF) + pw5g->index_bw40_base[path][group] = 0xFE; + } + for (cnt = 0; cnt < MAX_TX_COUNT; cnt++) { + if (cnt == 0) { + pw5g->bw40_diff[path][cnt] = 0; + + if (hwinfo[addr] == 0xFF) { + pw5g->bw20_diff[path][cnt] = 0; + } else { + pw5g->bw20_diff[path][0] = + (hwinfo[addr] & 0xf0) >> 4; + if (pw5g->bw20_diff[path][cnt] & BIT(3)) + pw5g->bw20_diff[path][cnt] |= + 0xF0; + } + if (hwinfo[addr] == 0xFF) { + pw5g->ofdm_diff[path][cnt] = 0x04; + } else { + pw5g->ofdm_diff[path][0] = + (hwinfo[addr] & 0x0f); + if (pw5g->ofdm_diff[path][cnt] & BIT(3)) + pw5g->ofdm_diff[path][cnt] |= + 0xF0; + } + addr++; + } else { + if (hwinfo[addr] == 0xFF) { + pw5g->bw40_diff[path][cnt] = 0xFE; + } else { + pw5g->bw40_diff[path][cnt] = + (hwinfo[addr] & 0xf0) >> 4; + if (pw5g->bw40_diff[path][cnt] & BIT(3)) + pw5g->bw40_diff[path][cnt] |= 0xF0; + } + if (hwinfo[addr] == 0xFF) { + pw5g->bw20_diff[path][cnt] = 0xFE; + } else { + pw5g->bw20_diff[path][cnt] = + (hwinfo[addr] & 0x0f); + if (pw5g->bw20_diff[path][cnt] & BIT(3)) + pw5g->bw20_diff[path][cnt] |= 0xF0; + } + addr++; + } + } + if (hwinfo[addr] == 0xFF) { + pw5g->ofdm_diff[path][1] = 0xFE; + pw5g->ofdm_diff[path][2] = 0xFE; + } else { + pw5g->ofdm_diff[path][1] = (hwinfo[addr] & 0xf0) >> 4; + pw5g->ofdm_diff[path][2] = (hwinfo[addr] & 0x0f); + } + addr++; + + if (hwinfo[addr] == 0xFF) + pw5g->ofdm_diff[path][3] = 0xFE; + else + pw5g->ofdm_diff[path][3] = (hwinfo[addr] & 0x0f); + addr++; + + for (cnt = 1; cnt < MAX_TX_COUNT; cnt++) { + if (pw5g->ofdm_diff[path][cnt] == 0xFF) + pw5g->ofdm_diff[path][cnt] = 0xFE; + else if (pw5g->ofdm_diff[path][cnt] & BIT(3)) + pw5g->ofdm_diff[path][cnt] |= 0xF0; + } + } +} + +static void _rtl8723be_read_txpower_info_from_hwpg(struct ieee80211_hw *hw, + bool autoload_fail, + u8 *hwinfo) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + struct txpower_info_2g pw2g; + struct txpower_info_5g pw5g; + u8 rf_path, index; + u8 i; + + _rtl8723be_read_power_value_fromprom(hw, &pw2g, &pw5g, autoload_fail, + hwinfo); + + for (rf_path = 0; rf_path < 2; rf_path++) { + for (i = 0; i < 14; i++) { + index = _rtl8723be_get_chnl_group(i+1); + + rtlefuse->txpwrlevel_cck[rf_path][i] = + pw2g.index_cck_base[rf_path][index]; + rtlefuse->txpwrlevel_ht40_1s[rf_path][i] = + pw2g.index_bw40_base[rf_path][index]; + } + for (i = 0; i < MAX_TX_COUNT; i++) { + rtlefuse->txpwr_ht20diff[rf_path][i] = + pw2g.bw20_diff[rf_path][i]; + rtlefuse->txpwr_ht40diff[rf_path][i] = + pw2g.bw40_diff[rf_path][i]; + rtlefuse->txpwr_legacyhtdiff[rf_path][i] = + pw2g.ofdm_diff[rf_path][i]; + } + for (i = 0; i < 14; i++) { + RTPRINT(rtlpriv, FINIT, INIT_EEPROM, + "RF(%d)-Ch(%d) [CCK / HT40_1S ] = " + "[0x%x / 0x%x ]\n", rf_path, i, + rtlefuse->txpwrlevel_cck[rf_path][i], + rtlefuse->txpwrlevel_ht40_1s[rf_path][i]); + } + } + if (!autoload_fail) + rtlefuse->eeprom_thermalmeter = + hwinfo[EEPROM_THERMAL_METER_88E]; + else + rtlefuse->eeprom_thermalmeter = EEPROM_DEFAULT_THERMALMETER; + + if (rtlefuse->eeprom_thermalmeter == 0xff || autoload_fail) { + rtlefuse->apk_thermalmeterignore = true; + rtlefuse->eeprom_thermalmeter = EEPROM_DEFAULT_THERMALMETER; + } + rtlefuse->thermalmeter[0] = rtlefuse->eeprom_thermalmeter; + RTPRINT(rtlpriv, FINIT, INIT_EEPROM, + "thermalmeter = 0x%x\n", rtlefuse->eeprom_thermalmeter); + + if (!autoload_fail) { + rtlefuse->eeprom_regulatory = + hwinfo[EEPROM_RF_BOARD_OPTION_88E] & 0x07;/*bit0~2*/ + if (hwinfo[EEPROM_RF_BOARD_OPTION_88E] == 0xFF) + rtlefuse->eeprom_regulatory = 0; + } else { + rtlefuse->eeprom_regulatory = 0; + } + RTPRINT(rtlpriv, FINIT, INIT_EEPROM, + "eeprom_regulatory = 0x%x\n", rtlefuse->eeprom_regulatory); +} + +static void _rtl8723be_read_adapter_info(struct ieee80211_hw *hw, + bool pseudo_test) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + u16 i, usvalue; + u8 hwinfo[HWSET_MAX_SIZE]; + u16 eeprom_id; + bool is_toshiba_smid1 = false; + bool is_toshiba_smid2 = false; + bool is_samsung_smid = false; + bool is_lenovo_smid = false; + u16 toshiba_smid1[] = { + 0x6151, 0x6152, 0x6154, 0x6155, 0x6177, 0x6178, 0x6179, 0x6180, + 0x7151, 0x7152, 0x7154, 0x7155, 0x7177, 0x7178, 0x7179, 0x7180, + 0x8151, 0x8152, 0x8154, 0x8155, 0x8181, 0x8182, 0x8184, 0x8185, + 0x9151, 0x9152, 0x9154, 0x9155, 0x9181, 0x9182, 0x9184, 0x9185 + }; + u16 toshiba_smid2[] = { + 0x6181, 0x6184, 0x6185, 0x7181, 0x7182, 0x7184, 0x7185, 0x8181, + 0x8182, 0x8184, 0x8185, 0x9181, 0x9182, 0x9184, 0x9185 + }; + u16 samsung_smid[] = { + 0x6191, 0x6192, 0x6193, 0x7191, 0x7192, 0x7193, 0x8191, 0x8192, + 0x8193, 0x9191, 0x9192, 0x9193 + }; + u16 lenovo_smid[] = { + 0x8195, 0x9195, 0x7194, 0x8200, 0x8201, 0x8202, 0x9199, 0x9200 + }; + + if (pseudo_test) { + /* needs to be added */ + return; + } + if (rtlefuse->epromtype == EEPROM_BOOT_EFUSE) { + rtl_efuse_shadow_map_update(hw); + + memcpy(hwinfo, &rtlefuse->efuse_map[EFUSE_INIT_MAP][0], + HWSET_MAX_SIZE); + } else if (rtlefuse->epromtype == EEPROM_93C46) { + RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, + "RTL819X Not boot from eeprom, check it !!"); + } + RT_PRINT_DATA(rtlpriv, COMP_INIT, DBG_DMESG, ("MAP\n"), + hwinfo, HWSET_MAX_SIZE); + + eeprom_id = *((u16 *)&hwinfo[0]); + if (eeprom_id != RTL8723BE_EEPROM_ID) { + RT_TRACE(rtlpriv, COMP_ERR, DBG_WARNING, + "EEPROM ID(%#x) is invalid!!\n", eeprom_id); + rtlefuse->autoload_failflag = true; + } else { + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, "Autoload OK\n"); + rtlefuse->autoload_failflag = false; + } + if (rtlefuse->autoload_failflag) + return; + + rtlefuse->eeprom_vid = *(u16 *)&hwinfo[EEPROM_VID]; + rtlefuse->eeprom_did = *(u16 *)&hwinfo[EEPROM_DID]; + rtlefuse->eeprom_svid = *(u16 *)&hwinfo[EEPROM_SVID]; + rtlefuse->eeprom_smid = *(u16 *)&hwinfo[EEPROM_SMID]; + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, + "EEPROMId = 0x%4x\n", eeprom_id); + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, + "EEPROM VID = 0x%4x\n", rtlefuse->eeprom_vid); + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, + "EEPROM DID = 0x%4x\n", rtlefuse->eeprom_did); + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, + "EEPROM SVID = 0x%4x\n", rtlefuse->eeprom_svid); + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, + "EEPROM SMID = 0x%4x\n", rtlefuse->eeprom_smid); + + for (i = 0; i < 6; i += 2) { + usvalue = *(u16 *)&hwinfo[EEPROM_MAC_ADDR + i]; + *((u16 *)(&rtlefuse->dev_addr[i])) = usvalue; + } + RT_TRACE(rtlpriv, COMP_INIT, DBG_DMESG, "dev_addr: %pM\n", + rtlefuse->dev_addr); + + /*parse xtal*/ + rtlefuse->crystalcap = hwinfo[EEPROM_XTAL_8723BE]; + if (rtlefuse->crystalcap == 0xFF) + rtlefuse->crystalcap = 0x20; + + _rtl8723be_read_txpower_info_from_hwpg(hw, rtlefuse->autoload_failflag, + hwinfo); + + rtl8723be_read_bt_coexist_info_from_hwpg(hw, + rtlefuse->autoload_failflag, + hwinfo); + + rtlefuse->eeprom_channelplan = *(u8 *)&hwinfo[EEPROM_CHANNELPLAN]; + rtlefuse->eeprom_version = *(u16 *)&hwinfo[EEPROM_VERSION]; + rtlefuse->txpwr_fromeprom = true; + rtlefuse->eeprom_oemid = *(u8 *)&hwinfo[EEPROM_CUSTOMER_ID]; + + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, + "EEPROM Customer ID: 0x%2x\n", rtlefuse->eeprom_oemid); + + /* set channel plan to world wide 13 */ + rtlefuse->channel_plan = COUNTRY_CODE_WORLD_WIDE_13; + + if (rtlhal->oem_id == RT_CID_DEFAULT) { + /* Does this one have a Toshiba SMID from group 1? */ + for (i = 0; i < sizeof(toshiba_smid1) / sizeof(u16); i++) { + if (rtlefuse->eeprom_smid == toshiba_smid1[i]) { + is_toshiba_smid1 = true; + break; + } + } + /* Does this one have a Toshiba SMID from group 2? */ + for (i = 0; i < sizeof(toshiba_smid2) / sizeof(u16); i++) { + if (rtlefuse->eeprom_smid == toshiba_smid2[i]) { + is_toshiba_smid2 = true; + break; + } + } + /* Does this one have a Samsung SMID? */ + for (i = 0; i < sizeof(samsung_smid) / sizeof(u16); i++) { + if (rtlefuse->eeprom_smid == samsung_smid[i]) { + is_samsung_smid = true; + break; + } + } + /* Does this one have a Lenovo SMID? */ + for (i = 0; i < sizeof(lenovo_smid) / sizeof(u16); i++) { + if (rtlefuse->eeprom_smid == lenovo_smid[i]) { + is_lenovo_smid = true; + break; + } + } + switch (rtlefuse->eeprom_oemid) { + case EEPROM_CID_DEFAULT: + if (rtlefuse->eeprom_did == 0x8176) { + if (rtlefuse->eeprom_svid == 0x10EC && + is_toshiba_smid1) { + rtlhal->oem_id = RT_CID_TOSHIBA; + } else if (rtlefuse->eeprom_svid == 0x1025) { + rtlhal->oem_id = RT_CID_819X_ACER; + } else if (rtlefuse->eeprom_svid == 0x10EC && + is_samsung_smid) { + rtlhal->oem_id = RT_CID_819X_SAMSUNG; + } else if (rtlefuse->eeprom_svid == 0x10EC && + is_lenovo_smid) { + rtlhal->oem_id = RT_CID_819X_LENOVO; + } else if ((rtlefuse->eeprom_svid == 0x10EC && + rtlefuse->eeprom_smid == 0x8197) || + (rtlefuse->eeprom_svid == 0x10EC && + rtlefuse->eeprom_smid == 0x9196)) { + rtlhal->oem_id = RT_CID_819X_CLEVO; + } else if ((rtlefuse->eeprom_svid == 0x1028 && + rtlefuse->eeprom_smid == 0x8194) || + (rtlefuse->eeprom_svid == 0x1028 && + rtlefuse->eeprom_smid == 0x8198) || + (rtlefuse->eeprom_svid == 0x1028 && + rtlefuse->eeprom_smid == 0x9197) || + (rtlefuse->eeprom_svid == 0x1028 && + rtlefuse->eeprom_smid == 0x9198)) { + rtlhal->oem_id = RT_CID_819X_DELL; + } else if ((rtlefuse->eeprom_svid == 0x103C && + rtlefuse->eeprom_smid == 0x1629)) { + rtlhal->oem_id = RT_CID_819X_HP; + } else if ((rtlefuse->eeprom_svid == 0x1A32 && + rtlefuse->eeprom_smid == 0x2315)) { + rtlhal->oem_id = RT_CID_819X_QMI; + } else if ((rtlefuse->eeprom_svid == 0x10EC && + rtlefuse->eeprom_smid == 0x8203)) { + rtlhal->oem_id = RT_CID_819X_PRONETS; + } else if ((rtlefuse->eeprom_svid == 0x1043 && + rtlefuse->eeprom_smid == 0x84B5)) { + rtlhal->oem_id = RT_CID_819X_EDIMAX_ASUS; + } else { + rtlhal->oem_id = RT_CID_DEFAULT; + } + } else if (rtlefuse->eeprom_did == 0x8178) { + if (rtlefuse->eeprom_svid == 0x10EC && + is_toshiba_smid2) + rtlhal->oem_id = RT_CID_TOSHIBA; + else if (rtlefuse->eeprom_svid == 0x1025) + rtlhal->oem_id = RT_CID_819X_ACER; + else if ((rtlefuse->eeprom_svid == 0x10EC && + rtlefuse->eeprom_smid == 0x8186)) + rtlhal->oem_id = RT_CID_819X_PRONETS; + else if ((rtlefuse->eeprom_svid == 0x1043 && + rtlefuse->eeprom_smid == 0x84B6)) + rtlhal->oem_id = + RT_CID_819X_EDIMAX_ASUS; + else + rtlhal->oem_id = RT_CID_DEFAULT; + } else { + rtlhal->oem_id = RT_CID_DEFAULT; + } + break; + case EEPROM_CID_TOSHIBA: + rtlhal->oem_id = RT_CID_TOSHIBA; + break; + case EEPROM_CID_CCX: + rtlhal->oem_id = RT_CID_CCX; + break; + case EEPROM_CID_QMI: + rtlhal->oem_id = RT_CID_819X_QMI; + break; + case EEPROM_CID_WHQL: + break; + default: + rtlhal->oem_id = RT_CID_DEFAULT; + break; + } + } +} + +static void _rtl8723be_hal_customized_behavior(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + + pcipriv->ledctl.led_opendrain = true; + switch (rtlhal->oem_id) { + case RT_CID_819X_HP: + pcipriv->ledctl.led_opendrain = true; + break; + case RT_CID_819X_LENOVO: + case RT_CID_DEFAULT: + case RT_CID_TOSHIBA: + case RT_CID_CCX: + case RT_CID_819X_ACER: + case RT_CID_WHQL: + default: + break; + } + RT_TRACE(rtlpriv, COMP_INIT, DBG_DMESG, + "RT Customized ID: 0x%02X\n", rtlhal->oem_id); +} + +void rtl8723be_read_eeprom_info(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + u8 tmp_u1b; + + rtlhal->version = _rtl8723be_read_chip_version(hw); + if (get_rf_type(rtlphy) == RF_1T1R) + rtlpriv->dm.rfpath_rxenable[0] = true; + else + rtlpriv->dm.rfpath_rxenable[0] = + rtlpriv->dm.rfpath_rxenable[1] = true; + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, "VersionID = 0x%4x\n", + rtlhal->version); + tmp_u1b = rtl_read_byte(rtlpriv, REG_9346CR); + if (tmp_u1b & BIT(4)) { + RT_TRACE(rtlpriv, COMP_INIT, DBG_DMESG, "Boot from EEPROM\n"); + rtlefuse->epromtype = EEPROM_93C46; + } else { + RT_TRACE(rtlpriv, COMP_INIT, DBG_DMESG, "Boot from EFUSE\n"); + rtlefuse->epromtype = EEPROM_BOOT_EFUSE; + } + if (tmp_u1b & BIT(5)) { + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, "Autoload OK\n"); + rtlefuse->autoload_failflag = false; + _rtl8723be_read_adapter_info(hw, false); + } else { + RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, "Autoload ERR!!\n"); + } + _rtl8723be_hal_customized_behavior(hw); +} + +static void rtl8723be_update_hal_rate_table(struct ieee80211_hw *hw, + struct ieee80211_sta *sta) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + u32 ratr_value; + u8 ratr_index = 0; + u8 nmode = mac->ht_enable; + u8 mimo_ps = IEEE80211_SMPS_OFF; + u16 shortgi_rate; + u32 tmp_ratr_value; + u8 curtxbw_40mhz = mac->bw_40; + u8 curshortgi_40mhz = (sta->ht_cap.cap & IEEE80211_HT_CAP_SGI_40) ? + 1 : 0; + u8 curshortgi_20mhz = (sta->ht_cap.cap & IEEE80211_HT_CAP_SGI_20) ? + 1 : 0; + enum wireless_mode wirelessmode = mac->mode; + + if (rtlhal->current_bandtype == BAND_ON_5G) + ratr_value = sta->supp_rates[1] << 4; + else + ratr_value = sta->supp_rates[0]; + if (mac->opmode == NL80211_IFTYPE_ADHOC) + ratr_value = 0xfff; + ratr_value |= (sta->ht_cap.mcs.rx_mask[1] << 20 | + sta->ht_cap.mcs.rx_mask[0] << 12); + switch (wirelessmode) { + case WIRELESS_MODE_B: + if (ratr_value & 0x0000000c) + ratr_value &= 0x0000000d; + else + ratr_value &= 0x0000000f; + break; + case WIRELESS_MODE_G: + ratr_value &= 0x00000FF5; + break; + case WIRELESS_MODE_N_24G: + case WIRELESS_MODE_N_5G: + nmode = 1; + if (mimo_ps == IEEE80211_SMPS_STATIC) { + ratr_value &= 0x0007F005; + } else { + u32 ratr_mask; + + if (get_rf_type(rtlphy) == RF_1T2R || + get_rf_type(rtlphy) == RF_1T1R) + ratr_mask = 0x000ff005; + else + ratr_mask = 0x0f0ff005; + ratr_value &= ratr_mask; + } + break; + default: + if (rtlphy->rf_type == RF_1T2R) + ratr_value &= 0x000ff0ff; + else + ratr_value &= 0x0f0ff0ff; + break; + } + if ((rtlpriv->btcoexist.bt_coexistence) && + (rtlpriv->btcoexist.bt_coexist_type == BT_CSR_BC4) && + (rtlpriv->btcoexist.bt_cur_state) && + (rtlpriv->btcoexist.bt_ant_isolation) && + ((rtlpriv->btcoexist.bt_service == BT_SCO) || + (rtlpriv->btcoexist.bt_service == BT_BUSY))) + ratr_value &= 0x0fffcfc0; + else + ratr_value &= 0x0FFFFFFF; + + if (nmode && ((curtxbw_40mhz && curshortgi_40mhz) || + (!curtxbw_40mhz && curshortgi_20mhz))) { + ratr_value |= 0x10000000; + tmp_ratr_value = (ratr_value >> 12); + + for (shortgi_rate = 15; shortgi_rate > 0; shortgi_rate--) { + if ((1 << shortgi_rate) & tmp_ratr_value) + break; + } + shortgi_rate = (shortgi_rate << 12) | (shortgi_rate << 8) | + (shortgi_rate << 4) | (shortgi_rate); + } + rtl_write_dword(rtlpriv, REG_ARFR0 + ratr_index * 4, ratr_value); + + RT_TRACE(rtlpriv, COMP_RATR, DBG_DMESG, + "%x\n", rtl_read_dword(rtlpriv, REG_ARFR0)); +} + +static u8 _rtl8723be_mrate_idx_to_arfr_id(struct ieee80211_hw *hw, + u8 rate_index) +{ + u8 ret = 0; + + switch (rate_index) { + case RATR_INX_WIRELESS_NGB: + ret = 1; + break; + case RATR_INX_WIRELESS_N: + case RATR_INX_WIRELESS_NG: + ret = 5; + break; + case RATR_INX_WIRELESS_NB: + ret = 3; + break; + case RATR_INX_WIRELESS_GB: + ret = 6; + break; + case RATR_INX_WIRELESS_G: + ret = 7; + break; + case RATR_INX_WIRELESS_B: + ret = 8; + break; + default: + ret = 0; + break; + } + return ret; +} + +static void rtl8723be_update_hal_rate_mask(struct ieee80211_hw *hw, + struct ieee80211_sta *sta, + u8 rssi_level) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct rtl_sta_info *sta_entry = NULL; + u32 ratr_bitmap; + u8 ratr_index; + u8 curtxbw_40mhz = (sta->ht_cap.cap & + IEEE80211_HT_CAP_SUP_WIDTH_20_40) ? 1 : 0; + u8 curshortgi_40mhz = (sta->ht_cap.cap & IEEE80211_HT_CAP_SGI_40) ? + 1 : 0; + u8 curshortgi_20mhz = (sta->ht_cap.cap & IEEE80211_HT_CAP_SGI_20) ? + 1 : 0; + enum wireless_mode wirelessmode = 0; + bool shortgi = false; + u8 rate_mask[7]; + u8 macid = 0; + u8 mimo_ps = IEEE80211_SMPS_OFF; + + sta_entry = (struct rtl_sta_info *)sta->drv_priv; + wirelessmode = sta_entry->wireless_mode; + if (mac->opmode == NL80211_IFTYPE_STATION || + mac->opmode == NL80211_IFTYPE_MESH_POINT) + curtxbw_40mhz = mac->bw_40; + else if (mac->opmode == NL80211_IFTYPE_AP || + mac->opmode == NL80211_IFTYPE_ADHOC) + macid = sta->aid + 1; + + ratr_bitmap = sta->supp_rates[0]; + + if (mac->opmode == NL80211_IFTYPE_ADHOC) + ratr_bitmap = 0xfff; + + ratr_bitmap |= (sta->ht_cap.mcs.rx_mask[1] << 20 | + sta->ht_cap.mcs.rx_mask[0] << 12); + switch (wirelessmode) { + case WIRELESS_MODE_B: + ratr_index = RATR_INX_WIRELESS_B; + if (ratr_bitmap & 0x0000000c) + ratr_bitmap &= 0x0000000d; + else + ratr_bitmap &= 0x0000000f; + break; + case WIRELESS_MODE_G: + ratr_index = RATR_INX_WIRELESS_GB; + + if (rssi_level == 1) + ratr_bitmap &= 0x00000f00; + else if (rssi_level == 2) + ratr_bitmap &= 0x00000ff0; + else + ratr_bitmap &= 0x00000ff5; + break; + case WIRELESS_MODE_A: + ratr_index = RATR_INX_WIRELESS_A; + ratr_bitmap &= 0x00000ff0; + break; + case WIRELESS_MODE_N_24G: + case WIRELESS_MODE_N_5G: + ratr_index = RATR_INX_WIRELESS_NGB; + + if (mimo_ps == IEEE80211_SMPS_STATIC || + mimo_ps == IEEE80211_SMPS_DYNAMIC) { + if (rssi_level == 1) + ratr_bitmap &= 0x00070000; + else if (rssi_level == 2) + ratr_bitmap &= 0x0007f000; + else + ratr_bitmap &= 0x0007f005; + } else { + if (rtlphy->rf_type == RF_1T1R) { + if (curtxbw_40mhz) { + if (rssi_level == 1) + ratr_bitmap &= 0x000f0000; + else if (rssi_level == 2) + ratr_bitmap &= 0x000ff000; + else + ratr_bitmap &= 0x000ff015; + } else { + if (rssi_level == 1) + ratr_bitmap &= 0x000f0000; + else if (rssi_level == 2) + ratr_bitmap &= 0x000ff000; + else + ratr_bitmap &= 0x000ff005; + } + } else { + if (curtxbw_40mhz) { + if (rssi_level == 1) + ratr_bitmap &= 0x0f8f0000; + else if (rssi_level == 2) + ratr_bitmap &= 0x0f8ff000; + else + ratr_bitmap &= 0x0f8ff015; + } else { + if (rssi_level == 1) + ratr_bitmap &= 0x0f8f0000; + else if (rssi_level == 2) + ratr_bitmap &= 0x0f8ff000; + else + ratr_bitmap &= 0x0f8ff005; + } + } + } + if ((curtxbw_40mhz && curshortgi_40mhz) || + (!curtxbw_40mhz && curshortgi_20mhz)) { + if (macid == 0) + shortgi = true; + else if (macid == 1) + shortgi = false; + } + break; + default: + ratr_index = RATR_INX_WIRELESS_NGB; + + if (rtlphy->rf_type == RF_1T2R) + ratr_bitmap &= 0x000ff0ff; + else + ratr_bitmap &= 0x0f0ff0ff; + break; + } + sta_entry->ratr_index = ratr_index; + + RT_TRACE(rtlpriv, COMP_RATR, DBG_DMESG, + "ratr_bitmap :%x\n", ratr_bitmap); + *(u32 *)&rate_mask = EF4BYTE((ratr_bitmap & 0x0fffffff) | + (ratr_index << 28)); + rate_mask[0] = macid; + rate_mask[1] = _rtl8723be_mrate_idx_to_arfr_id(hw, ratr_index) | + (shortgi ? 0x80 : 0x00); + rate_mask[2] = curtxbw_40mhz; + /* if (prox_priv->proxim_modeinfo->power_output > 0) + * rate_mask[2] |= BIT(6); + */ + + rate_mask[3] = (u8)(ratr_bitmap & 0x000000ff); + rate_mask[4] = (u8)((ratr_bitmap & 0x0000ff00) >> 8); + rate_mask[5] = (u8)((ratr_bitmap & 0x00ff0000) >> 16); + rate_mask[6] = (u8)((ratr_bitmap & 0xff000000) >> 24); + + RT_TRACE(rtlpriv, COMP_RATR, DBG_DMESG, + "Rate_index:%x, ratr_val:%x, %x:%x:%x:%x:%x:%x:%x\n", + ratr_index, ratr_bitmap, + rate_mask[0], rate_mask[1], + rate_mask[2], rate_mask[3], + rate_mask[4], rate_mask[5], + rate_mask[6]); + rtl8723be_fill_h2c_cmd(hw, H2C_8723BE_RA_MASK, 7, rate_mask); + _rtl8723be_set_bcn_ctrl_reg(hw, BIT(3), 0); +} + +void rtl8723be_update_hal_rate_tbl(struct ieee80211_hw *hw, + struct ieee80211_sta *sta, + u8 rssi_level) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + if (rtlpriv->dm.useramask) + rtl8723be_update_hal_rate_mask(hw, sta, rssi_level); + else + rtl8723be_update_hal_rate_table(hw, sta); +} + +void rtl8723be_update_channel_access_setting(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + u16 sifs_timer; + + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_SLOT_TIME, + (u8 *)&mac->slot_time); + if (!mac->ht_enable) + sifs_timer = 0x0a0a; + else + sifs_timer = 0x0e0e; + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_SIFS, (u8 *)&sifs_timer); +} + +bool rtl8723be_gpio_radio_on_off_checking(struct ieee80211_hw *hw, u8 *valid) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + enum rf_pwrstate e_rfpowerstate_toset, cur_rfstate; + u8 u1tmp; + bool actuallyset = false; + + if (rtlpriv->rtlhal.being_init_adapter) + return false; + + if (ppsc->swrf_processing) + return false; + + spin_lock(&rtlpriv->locks.rf_ps_lock); + if (ppsc->rfchange_inprogress) { + spin_unlock(&rtlpriv->locks.rf_ps_lock); + return false; + } else { + ppsc->rfchange_inprogress = true; + spin_unlock(&rtlpriv->locks.rf_ps_lock); + } + cur_rfstate = ppsc->rfpwr_state; + + rtl_write_byte(rtlpriv, REG_GPIO_IO_SEL_2, + rtl_read_byte(rtlpriv, REG_GPIO_IO_SEL_2) & ~(BIT(1))); + + u1tmp = rtl_read_byte(rtlpriv, REG_GPIO_PIN_CTRL_2); + + if (rtlphy->polarity_ctl) + e_rfpowerstate_toset = (u1tmp & BIT(1)) ? ERFOFF : ERFON; + else + e_rfpowerstate_toset = (u1tmp & BIT(1)) ? ERFON : ERFOFF; + + if (ppsc->hwradiooff && + (e_rfpowerstate_toset == ERFON)) { + RT_TRACE(rtlpriv, COMP_RF, DBG_DMESG, + "GPIOChangeRF - HW Radio ON, RF ON\n"); + + e_rfpowerstate_toset = ERFON; + ppsc->hwradiooff = false; + actuallyset = true; + } else if (!ppsc->hwradiooff && + (e_rfpowerstate_toset == ERFOFF)) { + RT_TRACE(rtlpriv, COMP_RF, DBG_DMESG, + "GPIOChangeRF - HW Radio OFF, RF OFF\n"); + + e_rfpowerstate_toset = ERFOFF; + ppsc->hwradiooff = true; + actuallyset = true; + } + if (actuallyset) { + spin_lock(&rtlpriv->locks.rf_ps_lock); + ppsc->rfchange_inprogress = false; + spin_unlock(&rtlpriv->locks.rf_ps_lock); + } else { + if (ppsc->reg_rfps_level & RT_RF_OFF_LEVL_HALT_NIC) + RT_SET_PS_LEVEL(ppsc, RT_RF_OFF_LEVL_HALT_NIC); + + spin_lock(&rtlpriv->locks.rf_ps_lock); + ppsc->rfchange_inprogress = false; + spin_unlock(&rtlpriv->locks.rf_ps_lock); + } + *valid = 1; + return !ppsc->hwradiooff; +} + +void rtl8723be_set_key(struct ieee80211_hw *hw, u32 key_index, + u8 *p_macaddr, bool is_group, u8 enc_algo, + bool is_wepkey, bool clear_all) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + u8 *macaddr = p_macaddr; + u32 entry_id = 0; + bool is_pairwise = false; + + static u8 cam_const_addr[4][6] = { + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x01}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x02}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x03} + }; + static u8 cam_const_broad[] = { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff + }; + + if (clear_all) { + u8 idx = 0; + u8 cam_offset = 0; + u8 clear_number = 5; + + RT_TRACE(rtlpriv, COMP_SEC, DBG_DMESG, "clear_all\n"); + + for (idx = 0; idx < clear_number; idx++) { + rtl_cam_mark_invalid(hw, cam_offset + idx); + rtl_cam_empty_entry(hw, cam_offset + idx); + + if (idx < 5) { + memset(rtlpriv->sec.key_buf[idx], 0, + MAX_KEY_LEN); + rtlpriv->sec.key_len[idx] = 0; + } + } + } else { + switch (enc_algo) { + case WEP40_ENCRYPTION: + enc_algo = CAM_WEP40; + break; + case WEP104_ENCRYPTION: + enc_algo = CAM_WEP104; + break; + case TKIP_ENCRYPTION: + enc_algo = CAM_TKIP; + break; + case AESCCMP_ENCRYPTION: + enc_algo = CAM_AES; + break; + default: + RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, + "switch case not process\n"); + enc_algo = CAM_TKIP; + break; + } + + if (is_wepkey || rtlpriv->sec.use_defaultkey) { + macaddr = cam_const_addr[key_index]; + entry_id = key_index; + } else { + if (is_group) { + macaddr = cam_const_broad; + entry_id = key_index; + } else { + if (mac->opmode == NL80211_IFTYPE_AP) { + entry_id = rtl_cam_get_free_entry(hw, + p_macaddr); + if (entry_id >= TOTAL_CAM_ENTRY) { + RT_TRACE(rtlpriv, COMP_SEC, + DBG_EMERG, + "Can not find free" + " hw security cam " + "entry\n"); + return; + } + } else { + entry_id = CAM_PAIRWISE_KEY_POSITION; + } + key_index = PAIRWISE_KEYIDX; + is_pairwise = true; + } + } + if (rtlpriv->sec.key_len[key_index] == 0) { + RT_TRACE(rtlpriv, COMP_SEC, DBG_DMESG, + "delete one entry, entry_id is %d\n", + entry_id); + if (mac->opmode == NL80211_IFTYPE_AP) + rtl_cam_del_entry(hw, p_macaddr); + rtl_cam_delete_one_entry(hw, p_macaddr, entry_id); + } else { + RT_TRACE(rtlpriv, COMP_SEC, DBG_DMESG, + "add one entry\n"); + if (is_pairwise) { + RT_TRACE(rtlpriv, COMP_SEC, DBG_DMESG, + "set Pairwise key\n"); + + rtl_cam_add_one_entry(hw, macaddr, key_index, + entry_id, enc_algo, + CAM_CONFIG_NO_USEDK, + rtlpriv->sec.key_buf[key_index]); + } else { + RT_TRACE(rtlpriv, COMP_SEC, DBG_DMESG, + "set group key\n"); + + if (mac->opmode == NL80211_IFTYPE_ADHOC) { + rtl_cam_add_one_entry(hw, + rtlefuse->dev_addr, + PAIRWISE_KEYIDX, + CAM_PAIRWISE_KEY_POSITION, + enc_algo, + CAM_CONFIG_NO_USEDK, + rtlpriv->sec.key_buf + [entry_id]); + } + rtl_cam_add_one_entry(hw, macaddr, key_index, + entry_id, enc_algo, + CAM_CONFIG_NO_USEDK, + rtlpriv->sec.key_buf[entry_id]); + } + } + } +} + +void rtl8723be_read_bt_coexist_info_from_hwpg(struct ieee80211_hw *hw, + bool auto_load_fail, u8 *hwinfo) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 value; + u32 tmpu_32; + + if (!auto_load_fail) { + tmpu_32 = rtl_read_dword(rtlpriv, REG_MULTI_FUNC_CTRL); + if (tmpu_32 & BIT(18)) + rtlpriv->btcoexist.btc_info.btcoexist = 1; + else + rtlpriv->btcoexist.btc_info.btcoexist = 0; + value = hwinfo[RF_OPTION4]; + rtlpriv->btcoexist.btc_info.bt_type = BT_RTL8723B; + rtlpriv->btcoexist.btc_info.ant_num = (value & 0x1); + } else { + rtlpriv->btcoexist.btc_info.btcoexist = 0; + rtlpriv->btcoexist.btc_info.bt_type = BT_RTL8723B; + rtlpriv->btcoexist.btc_info.ant_num = ANT_X2; + } +} + +void rtl8723be_bt_reg_init(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + /* 0:Low, 1:High, 2:From Efuse. */ + rtlpriv->btcoexist.reg_bt_iso = 2; + /* 0:Idle, 1:None-SCO, 2:SCO, 3:From Counter. */ + rtlpriv->btcoexist.reg_bt_sco = 3; + /* 0:Disable BT control A-MPDU, 1:Enable BT control A-MPDU. */ + rtlpriv->btcoexist.reg_bt_sco = 0; +} + +void rtl8723be_bt_hw_init(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + if (rtlpriv->cfg->ops->get_btc_status()) + rtlpriv->btcoexist.btc_ops->btc_init_hw_config(rtlpriv); +} + +void rtl8723be_suspend(struct ieee80211_hw *hw) +{ +} + +void rtl8723be_resume(struct ieee80211_hw *hw) +{ +} + +/* Turn on AAP (RCR:bit 0) for promicuous mode. */ +void rtl8723be_allow_all_destaddr(struct ieee80211_hw *hw, bool allow_all_da, + bool write_into_reg) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + + if (allow_all_da) /* Set BIT0 */ + rtlpci->receive_config |= RCR_AAP; + else /* Clear BIT0 */ + rtlpci->receive_config &= ~RCR_AAP; + + if (write_into_reg) + rtl_write_dword(rtlpriv, REG_RCR, rtlpci->receive_config); + + RT_TRACE(rtlpriv, COMP_TURBO | COMP_INIT, DBG_LOUD, + "receive_config = 0x%08X, write_into_reg =%d\n", + rtlpci->receive_config, write_into_reg); +} --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723be/hw.h +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723be/hw.h @@ -0,0 +1,64 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2014 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#ifndef __RTL8723BE_HW_H__ +#define __RTL8723BE_HW_H__ + +void rtl8723be_get_hw_reg(struct ieee80211_hw *hw, u8 variable, u8 *val); +void rtl8723be_read_eeprom_info(struct ieee80211_hw *hw); + +void rtl8723be_interrupt_recognized(struct ieee80211_hw *hw, + u32 *p_inta, u32 *p_intb); +int rtl8723be_hw_init(struct ieee80211_hw *hw); +void rtl8723be_card_disable(struct ieee80211_hw *hw); +void rtl8723be_enable_interrupt(struct ieee80211_hw *hw); +void rtl8723be_disable_interrupt(struct ieee80211_hw *hw); +int rtl8723be_set_network_type(struct ieee80211_hw *hw, + enum nl80211_iftype type); +void rtl8723be_set_check_bssid(struct ieee80211_hw *hw, bool check_bssid); +void rtl8723be_set_qos(struct ieee80211_hw *hw, int aci); +void rtl8723be_set_beacon_related_registers(struct ieee80211_hw *hw); +void rtl8723be_set_beacon_interval(struct ieee80211_hw *hw); +void rtl8723be_update_interrupt_mask(struct ieee80211_hw *hw, + u32 add_msr, u32 rm_msr); +void rtl8723be_set_hw_reg(struct ieee80211_hw *hw, u8 variable, u8 *val); +void rtl8723be_update_hal_rate_tbl(struct ieee80211_hw *hw, + struct ieee80211_sta *sta, + u8 rssi_level); +void rtl8723be_update_channel_access_setting(struct ieee80211_hw *hw); +bool rtl8723be_gpio_radio_on_off_checking(struct ieee80211_hw *hw, u8 *valid); +void rtl8723be_enable_hw_security_config(struct ieee80211_hw *hw); +void rtl8723be_set_key(struct ieee80211_hw *hw, u32 key_index, + u8 *p_macaddr, bool is_group, u8 enc_algo, + bool is_wepkey, bool clear_all); +void rtl8723be_read_bt_coexist_info_from_hwpg(struct ieee80211_hw *hw, + bool autoload_fail, u8 *hwinfo); +void rtl8723be_bt_reg_init(struct ieee80211_hw *hw); +void rtl8723be_bt_hw_init(struct ieee80211_hw *hw); +void rtl8723be_suspend(struct ieee80211_hw *hw); +void rtl8723be_resume(struct ieee80211_hw *hw); +void rtl8723be_allow_all_destaddr(struct ieee80211_hw *hw, bool allow_all_da, + bool write_into_reg); +#endif --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723be/led.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723be/led.c @@ -0,0 +1,153 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2014 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#include "../wifi.h" +#include "../pci.h" +#include "reg.h" +#include "led.h" + +static void _rtl8723be_init_led(struct ieee80211_hw *hw, struct rtl_led *pled, + enum rtl_led_pin ledpin) +{ + pled->hw = hw; + pled->ledpin = ledpin; + pled->ledon = false; +} + +void rtl8723be_sw_led_on(struct ieee80211_hw *hw, struct rtl_led *pled) +{ + u8 ledcfg; + struct rtl_priv *rtlpriv = rtl_priv(hw); + + RT_TRACE(rtlpriv, COMP_LED, DBG_LOUD, + "LedAddr:%X ledpin =%d\n", REG_LEDCFG2, pled->ledpin); + + switch (pled->ledpin) { + case LED_PIN_GPIO0: + break; + case LED_PIN_LED0: + ledcfg = rtl_read_byte(rtlpriv, REG_LEDCFG2); + ledcfg &= ~BIT(6); + rtl_write_byte(rtlpriv, REG_LEDCFG2, (ledcfg & 0xf0) | BIT(5)); + break; + case LED_PIN_LED1: + ledcfg = rtl_read_byte(rtlpriv, REG_LEDCFG1); + rtl_write_byte(rtlpriv, REG_LEDCFG1, ledcfg & 0x10); + break; + default: + RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, + "switch case not process\n"); + break; + } + pled->ledon = true; +} + +void rtl8723be_sw_led_off(struct ieee80211_hw *hw, struct rtl_led *pled) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw); + u8 ledcfg; + + RT_TRACE(rtlpriv, COMP_LED, DBG_LOUD, + "LedAddr:%X ledpin =%d\n", REG_LEDCFG2, pled->ledpin); + + ledcfg = rtl_read_byte(rtlpriv, REG_LEDCFG2); + + switch (pled->ledpin) { + case LED_PIN_GPIO0: + break; + case LED_PIN_LED0: + ledcfg &= 0xf0; + if (pcipriv->ledctl.led_opendrain) { + ledcfg &= 0x90; /* Set to software control. */ + rtl_write_byte(rtlpriv, REG_LEDCFG2, (ledcfg|BIT(3))); + ledcfg = rtl_read_byte(rtlpriv, REG_MAC_PINMUX_CFG); + ledcfg &= 0xFE; + rtl_write_byte(rtlpriv, REG_MAC_PINMUX_CFG, ledcfg); + } else { + ledcfg &= ~BIT(6); + rtl_write_byte(rtlpriv, REG_LEDCFG2, + (ledcfg | BIT(3) | BIT(5))); + } + break; + case LED_PIN_LED1: + ledcfg = rtl_read_byte(rtlpriv, REG_LEDCFG1); + ledcfg &= 0x10; /* Set to software control. */ + rtl_write_byte(rtlpriv, REG_LEDCFG1, ledcfg|BIT(3)); + + break; + default: + RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, + "switch case not processed\n"); + break; + } + pled->ledon = false; +} + +void rtl8723be_init_sw_leds(struct ieee80211_hw *hw) +{ + struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw); + _rtl8723be_init_led(hw, &(pcipriv->ledctl.sw_led0), LED_PIN_LED0); + _rtl8723be_init_led(hw, &(pcipriv->ledctl.sw_led1), LED_PIN_LED1); +} + +static void _rtl8723be_sw_led_control(struct ieee80211_hw *hw, + enum led_ctl_mode ledaction) +{ + struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw); + struct rtl_led *pled0 = &(pcipriv->ledctl.sw_led0); + switch (ledaction) { + case LED_CTL_POWER_ON: + case LED_CTL_LINK: + case LED_CTL_NO_LINK: + rtl8723be_sw_led_on(hw, pled0); + break; + case LED_CTL_POWER_OFF: + rtl8723be_sw_led_off(hw, pled0); + break; + default: + break; + } +} + +void rtl8723be_led_control(struct ieee80211_hw *hw, + enum led_ctl_mode ledaction) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + + if ((ppsc->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_START_TO_LINK || + ledaction == LED_CTL_POWER_ON)) { + return; + } + RT_TRACE(rtlpriv, COMP_LED, DBG_LOUD, "ledaction %d,\n", ledaction); + _rtl8723be_sw_led_control(hw, ledaction); +} --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723be/led.h +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723be/led.h @@ -0,0 +1,35 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2014 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#ifndef __RTL8723BE_LED_H__ +#define __RTL8723BE_LED_H__ + +void rtl8723be_init_sw_leds(struct ieee80211_hw *hw); +void rtl8723be_sw_led_on(struct ieee80211_hw *hw, struct rtl_led *pled); +void rtl8723be_sw_led_off(struct ieee80211_hw *hw, struct rtl_led *pled); +void rtl8723be_led_control(struct ieee80211_hw *hw, + enum led_ctl_mode ledaction); + +#endif --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723be/phy.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723be/phy.c @@ -0,0 +1,2175 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2014 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#include "../wifi.h" +#include "../pci.h" +#include "../ps.h" +#include "reg.h" +#include "def.h" +#include "phy.h" +#include "../rtl8723com/phy_common.h" +#include "rf.h" +#include "dm.h" +#include "table.h" +#include "trx.h" + +static bool _rtl8723be_phy_bb8723b_config_parafile(struct ieee80211_hw *hw); +static bool _rtl8723be_phy_config_bb_with_pgheaderfile(struct ieee80211_hw *hw, + u8 configtype); +static bool rtl8723be_phy_sw_chn_step_by_step(struct ieee80211_hw *hw, + u8 channel, u8 *stage, + u8 *step, u32 *delay); +static void _rtl8723be_config_bb_reg(struct ieee80211_hw *hw, + u32 addr, u32 data); + +static bool _rtl8723be_check_condition(struct ieee80211_hw *hw, + const u32 condition) +{ + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + u32 _board = rtlefuse->board_type; /*need efuse define*/ + u32 _interface = rtlhal->interface; + u32 _platform = 0x08;/*SupportPlatform */ + u32 cond = condition; + + if (condition == 0xCDCDCDCD) + return true; + + cond = condition & 0xFF; + if ((_board & cond) == 0 && cond != 0x1F) + return false; + + cond = condition & 0xFF00; + cond = cond >> 8; + if ((_interface & cond) == 0 && cond != 0x07) + return false; + + cond = condition & 0xFF0000; + cond = cond >> 16; + if ((_platform & cond) == 0 && cond != 0x0F) + return false; + return true; +} + +static bool _rtl8723be_phy_config_mac_with_headerfile(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 i; + u32 arraylength; + u32 *ptrarray; + + RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, "Read rtl8723beMACPHY_Array\n"); + arraylength = RTL8723BEMAC_1T_ARRAYLEN; + ptrarray = RTL8723BEMAC_1T_ARRAY; + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, + "Img:RTL8723bEMAC_1T_ARRAY LEN %d\n", arraylength); + for (i = 0; i < arraylength; i = i + 2) + rtl_write_byte(rtlpriv, ptrarray[i], (u8) ptrarray[i + 1]); + return true; +} + +static bool _rtl8723be_phy_config_bb_with_headerfile(struct ieee80211_hw *hw, + u8 configtype) +{ + #define READ_NEXT_PAIR(v1, v2, i) \ + do { \ + i += 2; \ + v1 = array_table[i];\ + v2 = array_table[i+1]; \ + } while (0) + + int i; + u32 *array_table; + u16 arraylen; + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 v1 = 0, v2 = 0; + + if (configtype == BASEBAND_CONFIG_PHY_REG) { + arraylen = RTL8723BEPHY_REG_1TARRAYLEN; + array_table = RTL8723BEPHY_REG_1TARRAY; + + for (i = 0; i < arraylen; i = i + 2) { + v1 = array_table[i]; + v2 = array_table[i+1]; + if (v1 < 0xcdcdcdcd) { + _rtl8723be_config_bb_reg(hw, v1, v2); + } else {/*This line is the start line of branch.*/ + if (!_rtl8723be_check_condition(hw, array_table[i])) { + /*Discard the following (offset, data) pairs*/ + READ_NEXT_PAIR(v1, v2, i); + while (v2 != 0xDEAD && + v2 != 0xCDEF && + v2 != 0xCDCD && + i < arraylen - 2) { + READ_NEXT_PAIR(v1, v2, i); + } + i -= 2; /* prevent from for-loop += 2*/ + /* Configure matched pairs and + * skip to end of if-else. + */ + } else { + READ_NEXT_PAIR(v1, v2, i); + while (v2 != 0xDEAD && + v2 != 0xCDEF && + v2 != 0xCDCD && + i < arraylen - 2) { + _rtl8723be_config_bb_reg(hw, + v1, v2); + READ_NEXT_PAIR(v1, v2, i); + } + + while (v2 != 0xDEAD && i < arraylen - 2) + READ_NEXT_PAIR(v1, v2, i); + } + } + } + } else if (configtype == BASEBAND_CONFIG_AGC_TAB) { + arraylen = RTL8723BEAGCTAB_1TARRAYLEN; + array_table = RTL8723BEAGCTAB_1TARRAY; + + for (i = 0; i < arraylen; i = i + 2) { + v1 = array_table[i]; + v2 = array_table[i+1]; + if (v1 < 0xCDCDCDCD) { + rtl_set_bbreg(hw, array_table[i], + MASKDWORD, + array_table[i + 1]); + udelay(1); + continue; + } else {/*This line is the start line of branch.*/ + if (!_rtl8723be_check_condition(hw, array_table[i])) { + /* Discard the following + * (offset, data) pairs + */ + READ_NEXT_PAIR(v1, v2, i); + while (v2 != 0xDEAD && + v2 != 0xCDEF && + v2 != 0xCDCD && + i < arraylen - 2) { + READ_NEXT_PAIR(v1, v2, i); + } + i -= 2; /* prevent from for-loop += 2*/ + /*Configure matched pairs and + *skip to end of if-else. + */ + } else { + READ_NEXT_PAIR(v1, v2, i); + while (v2 != 0xDEAD && + v2 != 0xCDEF && + v2 != 0xCDCD && + i < arraylen - 2) { + rtl_set_bbreg(hw, array_table[i], + MASKDWORD, + array_table[i + 1]); + udelay(1); + READ_NEXT_PAIR(v1, v2, i); + } + + while (v2 != 0xDEAD && i < arraylen - 2) + READ_NEXT_PAIR(v1, v2, i); + } + } + RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, + "The agctab_array_table[0] is " + "%x Rtl818EEPHY_REGArray[1] is %x\n", + array_table[i], array_table[i + 1]); + } + } + return true; +} + +static u8 _rtl8723be_get_rate_section_index(u32 regaddr) +{ + u8 index = 0; + + switch (regaddr) { + case RTXAGC_A_RATE18_06: + case RTXAGC_B_RATE18_06: + index = 0; + break; + case RTXAGC_A_RATE54_24: + case RTXAGC_B_RATE54_24: + index = 1; + break; + case RTXAGC_A_CCK1_MCS32: + case RTXAGC_B_CCK1_55_MCS32: + index = 2; + break; + case RTXAGC_B_CCK11_A_CCK2_11: + index = 3; + break; + case RTXAGC_A_MCS03_MCS00: + case RTXAGC_B_MCS03_MCS00: + index = 4; + break; + case RTXAGC_A_MCS07_MCS04: + case RTXAGC_B_MCS07_MCS04: + index = 5; + break; + case RTXAGC_A_MCS11_MCS08: + case RTXAGC_B_MCS11_MCS08: + index = 6; + break; + case RTXAGC_A_MCS15_MCS12: + case RTXAGC_B_MCS15_MCS12: + index = 7; + break; + default: + regaddr &= 0xFFF; + if (regaddr >= 0xC20 && regaddr <= 0xC4C) + index = (u8) ((regaddr - 0xC20) / 4); + else if (regaddr >= 0xE20 && regaddr <= 0xE4C) + index = (u8) ((regaddr - 0xE20) / 4); + break; + }; + return index; +} + +u32 rtl8723be_phy_query_rf_reg(struct ieee80211_hw *hw, enum radio_path rfpath, + u32 regaddr, u32 bitmask) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 original_value, readback_value, bitshift; + unsigned long flags; + + RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE, + "regaddr(%#x), rfpath(%#x), bitmask(%#x)\n", + regaddr, rfpath, bitmask); + + spin_lock_irqsave(&rtlpriv->locks.rf_lock, flags); + + original_value = rtl8723_phy_rf_serial_read(hw, rfpath, regaddr); + bitshift = rtl8723_phy_calculate_bit_shift(bitmask); + readback_value = (original_value & bitmask) >> bitshift; + + spin_unlock_irqrestore(&rtlpriv->locks.rf_lock, flags); + + RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE, + "regaddr(%#x), rfpath(%#x), " + "bitmask(%#x), original_value(%#x)\n", + regaddr, rfpath, bitmask, original_value); + + return readback_value; +} + +void rtl8723be_phy_set_rf_reg(struct ieee80211_hw *hw, enum radio_path path, + u32 regaddr, u32 bitmask, u32 data) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 original_value, bitshift; + unsigned long flags; + + RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE, + "regaddr(%#x), bitmask(%#x), data(%#x), rfpath(%#x)\n", + regaddr, bitmask, data, path); + + spin_lock_irqsave(&rtlpriv->locks.rf_lock, flags); + + if (bitmask != RFREG_OFFSET_MASK) { + original_value = rtl8723_phy_rf_serial_read(hw, path, + regaddr); + bitshift = rtl8723_phy_calculate_bit_shift(bitmask); + data = ((original_value & (~bitmask)) | + (data << bitshift)); + } + + rtl8723_phy_rf_serial_write(hw, path, regaddr, data); + + spin_unlock_irqrestore(&rtlpriv->locks.rf_lock, flags); + + RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE, + "regaddr(%#x), bitmask(%#x), data(%#x), rfpath(%#x)\n", + regaddr, bitmask, data, path); +} + +bool rtl8723be_phy_mac_config(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + bool rtstatus = _rtl8723be_phy_config_mac_with_headerfile(hw); + + rtl_write_byte(rtlpriv, 0x04CA, 0x0B); + return rtstatus; +} + +bool rtl8723be_phy_bb_config(struct ieee80211_hw *hw) +{ + bool rtstatus = true; + struct rtl_priv *rtlpriv = rtl_priv(hw); + u16 regval; + u8 reg_hwparafile = 1; + u32 tmp; + u8 crystalcap = rtlpriv->efuse.crystalcap; + rtl8723_phy_init_bb_rf_reg_def(hw); + regval = rtl_read_word(rtlpriv, REG_SYS_FUNC_EN); + rtl_write_word(rtlpriv, REG_SYS_FUNC_EN, + regval | BIT(13) | BIT(0) | BIT(1)); + + rtl_write_byte(rtlpriv, REG_RF_CTRL, RF_EN | RF_RSTB | RF_SDMRSTB); + rtl_write_byte(rtlpriv, REG_SYS_FUNC_EN, + FEN_PPLL | FEN_PCIEA | FEN_DIO_PCIE | + FEN_BB_GLB_RSTN | FEN_BBRSTB); + tmp = rtl_read_dword(rtlpriv, 0x4c); + rtl_write_dword(rtlpriv, 0x4c, tmp | BIT(23)); + + rtl_write_byte(rtlpriv, REG_AFE_XTAL_CTRL + 1, 0x80); + + if (reg_hwparafile == 1) + rtstatus = _rtl8723be_phy_bb8723b_config_parafile(hw); + + crystalcap = crystalcap & 0x3F; + rtl_set_bbreg(hw, REG_MAC_PHY_CTRL, 0xFFF000, + (crystalcap | crystalcap << 6)); + + return rtstatus; +} + +bool rtl8723be_phy_rf_config(struct ieee80211_hw *hw) +{ + return rtl8723be_phy_rf6052_config(hw); +} + +static void _rtl8723be_config_rf_reg(struct ieee80211_hw *hw, u32 addr, + u32 data, enum radio_path rfpath, + u32 regaddr) +{ + if (addr == 0xfe || addr == 0xffe) { + mdelay(50); + } else { + rtl_set_rfreg(hw, rfpath, regaddr, RFREG_OFFSET_MASK, data); + udelay(1); + } +} + +static void _rtl8723be_config_rf_radio_a(struct ieee80211_hw *hw, + u32 addr, u32 data) +{ + u32 content = 0x1000; /*RF Content: radio_a_txt*/ + u32 maskforphyset = (u32)(content & 0xE000); + + _rtl8723be_config_rf_reg(hw, addr, data, RF90_PATH_A, + addr | maskforphyset); +} + +static void _rtl8723be_phy_init_tx_power_by_rate(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + + u8 band, path, txnum, section; + + for (band = BAND_ON_2_4G; band <= BAND_ON_5G; ++band) + for (path = 0; path < TX_PWR_BY_RATE_NUM_RF; ++path) + for (txnum = 0; txnum < TX_PWR_BY_RATE_NUM_RF; ++txnum) + for (section = 0; + section < TX_PWR_BY_RATE_NUM_SECTION; + ++section) + rtlphy->tx_power_by_rate_offset[band] + [path][txnum][section] = 0; +} + +static void _rtl8723be_config_bb_reg(struct ieee80211_hw *hw, + u32 addr, u32 data) +{ + if (addr == 0xfe) { + mdelay(50); + } else if (addr == 0xfd) { + mdelay(5); + } else if (addr == 0xfc) { + mdelay(1); + } else if (addr == 0xfb) { + udelay(50); + } else if (addr == 0xfa) { + udelay(5); + } else if (addr == 0xf9) { + udelay(1); + } else { + rtl_set_bbreg(hw, addr, MASKDWORD, data); + udelay(1); + } +} + +static void phy_set_txpwr_by_rate_base(struct ieee80211_hw *hw, u8 band, + u8 path, u8 rate_section, + u8 txnum, u8 value) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + + if (path > RF90_PATH_D) { + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, + "Invalid Rf Path %d in phy_SetTxPowerByRatBase()\n", + path); + return; + } + + if (band == BAND_ON_2_4G) { + switch (rate_section) { + case CCK: + rtlphy->txpwr_by_rate_base_24g[path][txnum][0] = value; + break; + case OFDM: + rtlphy->txpwr_by_rate_base_24g[path][txnum][1] = value; + break; + case HT_MCS0_MCS7: + rtlphy->txpwr_by_rate_base_24g[path][txnum][2] = value; + break; + case HT_MCS8_MCS15: + rtlphy->txpwr_by_rate_base_24g[path][txnum][3] = value; + break; + default: + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, + "Invalid RateSection %d in Band 2.4G, Rf Path" + " %d, %dTx in PHY_SetTxPowerByRateBase()\n", + rate_section, path, txnum); + break; + }; + } else { + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, + "Invalid Band %d in PHY_SetTxPowerByRateBase()\n", + band); + } +} + +static u8 phy_get_txpwr_by_rate_base(struct ieee80211_hw *hw, u8 band, u8 path, + u8 txnum, u8 rate_section) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + u8 value = 0; + if (path > RF90_PATH_D) { + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, + "Invalid Rf Path %d in PHY_GetTxPowerByRateBase()\n", + path); + return 0; + } + + if (band == BAND_ON_2_4G) { + switch (rate_section) { + case CCK: + value = rtlphy->txpwr_by_rate_base_24g[path][txnum][0]; + break; + case OFDM: + value = rtlphy->txpwr_by_rate_base_24g[path][txnum][1]; + break; + case HT_MCS0_MCS7: + value = rtlphy->txpwr_by_rate_base_24g[path][txnum][2]; + break; + case HT_MCS8_MCS15: + value = rtlphy->txpwr_by_rate_base_24g[path][txnum][3]; + break; + default: + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, + "Invalid RateSection %d in Band 2.4G, Rf Path" + " %d, %dTx in PHY_GetTxPowerByRateBase()\n", + rate_section, path, txnum); + break; + }; + } else { + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, + "Invalid Band %d in PHY_GetTxPowerByRateBase()\n", + band); + } + + return value; +} + +static void _rtl8723be_phy_store_txpower_by_rate_base(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + u16 raw_value = 0; + u8 base = 0, path = 0; + + for (path = RF90_PATH_A; path <= RF90_PATH_B; ++path) { + if (path == RF90_PATH_A) { + raw_value = (u16) (rtlphy->tx_power_by_rate_offset + [BAND_ON_2_4G][path][RF_1TX][3] >> 24) & 0xFF; + base = (raw_value >> 4) * 10 + (raw_value & 0xF); + phy_set_txpwr_by_rate_base(hw, BAND_ON_2_4G, path, CCK, + RF_1TX, base); + } else if (path == RF90_PATH_B) { + raw_value = (u16) (rtlphy->tx_power_by_rate_offset + [BAND_ON_2_4G][path][RF_1TX][3] >> 0) & 0xFF; + base = (raw_value >> 4) * 10 + (raw_value & 0xF); + phy_set_txpwr_by_rate_base(hw, BAND_ON_2_4G, path, + CCK, RF_1TX, base); + } + raw_value = (u16) (rtlphy->tx_power_by_rate_offset[BAND_ON_2_4G] + [path][RF_1TX][1] >> 24) & 0xFF; + base = (raw_value >> 4) * 10 + (raw_value & 0xF); + phy_set_txpwr_by_rate_base(hw, BAND_ON_2_4G, path, OFDM, RF_1TX, + base); + + raw_value = (u16) (rtlphy->tx_power_by_rate_offset[BAND_ON_2_4G] + [path][RF_1TX][5] >> 24) & 0xFF; + base = (raw_value >> 4) * 10 + (raw_value & 0xF); + phy_set_txpwr_by_rate_base(hw, BAND_ON_2_4G, path, HT_MCS0_MCS7, + RF_1TX, base); + + raw_value = (u16) (rtlphy->tx_power_by_rate_offset[BAND_ON_2_4G] + [path][RF_2TX][7] >> 24) & 0xFF; + base = (raw_value >> 4) * 10 + (raw_value & 0xF); + phy_set_txpwr_by_rate_base(hw, BAND_ON_2_4G, path, + HT_MCS8_MCS15, RF_2TX, base); + } +} + +static void phy_conv_dbm_to_rel(u32 *data, u8 start, u8 end, u8 base_val) +{ + char i = 0; + u8 temp_value = 0; + u32 temp_data = 0; + + for (i = 3; i >= 0; --i) { + if (i >= start && i <= end) { + /* Get the exact value */ + temp_value = (u8) (*data >> (i * 8)) & 0xF; + temp_value += ((u8) ((*data >> (i*8 + 4)) & 0xF)) * 10; + + /* Change the value to a relative value */ + temp_value = (temp_value > base_val) ? + temp_value - base_val : + base_val - temp_value; + } else { + temp_value = (u8) (*data >> (i * 8)) & 0xFF; + } + temp_data <<= 8; + temp_data |= temp_value; + } + *data = temp_data; +} + +static void conv_dbm_to_rel(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + u8 base = 0, rfpath = RF90_PATH_A; + + base = phy_get_txpwr_by_rate_base(hw, BAND_ON_2_4G, rfpath, + RF_1TX, CCK); + phy_conv_dbm_to_rel(&(rtlphy->tx_power_by_rate_offset[BAND_ON_2_4G] + [rfpath][RF_1TX][2]), 1, 1, base); + phy_conv_dbm_to_rel(&(rtlphy->tx_power_by_rate_offset[BAND_ON_2_4G] + [rfpath][RF_1TX][3]), 1, 3, base); + + base = phy_get_txpwr_by_rate_base(hw, BAND_ON_2_4G, rfpath, + RF_1TX, OFDM); + phy_conv_dbm_to_rel(&(rtlphy->tx_power_by_rate_offset[BAND_ON_2_4G] + [rfpath][RF_1TX][0]), 0, 3, base); + phy_conv_dbm_to_rel(&(rtlphy->tx_power_by_rate_offset[BAND_ON_2_4G] + [rfpath][RF_1TX][1]), 0, 3, base); + + base = phy_get_txpwr_by_rate_base(hw, BAND_ON_2_4G, rfpath, + RF_1TX, HT_MCS0_MCS7); + phy_conv_dbm_to_rel(&(rtlphy->tx_power_by_rate_offset[BAND_ON_2_4G] + [rfpath][RF_1TX][4]), 0, 3, base); + phy_conv_dbm_to_rel(&(rtlphy->tx_power_by_rate_offset[BAND_ON_2_4G] + [rfpath][RF_1TX][5]), 0, 3, base); + + base = phy_get_txpwr_by_rate_base(hw, BAND_ON_2_4G, rfpath, + RF_2TX, HT_MCS8_MCS15); + phy_conv_dbm_to_rel(&(rtlphy->tx_power_by_rate_offset[BAND_ON_2_4G] + [rfpath][RF_2TX][6]), 0, 3, base); + + phy_conv_dbm_to_rel(&(rtlphy->tx_power_by_rate_offset[BAND_ON_2_4G] + [rfpath][RF_2TX][7]), 0, 3, base); + + RT_TRACE(rtlpriv, COMP_POWER, DBG_TRACE, + "<=== conv_dbm_to_rel()\n"); +} + +static void _rtl8723be_phy_txpower_by_rate_configuration( + struct ieee80211_hw *hw) +{ + _rtl8723be_phy_store_txpower_by_rate_base(hw); + conv_dbm_to_rel(hw); +} + +static bool _rtl8723be_phy_bb8723b_config_parafile(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + bool rtstatus; + + rtstatus = _rtl8723be_phy_config_bb_with_headerfile(hw, + BASEBAND_CONFIG_PHY_REG); + if (!rtstatus) { + RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, "Write BB Reg Fail!!"); + return false; + } + _rtl8723be_phy_init_tx_power_by_rate(hw); + if (!rtlefuse->autoload_failflag) { + rtlphy->pwrgroup_cnt = 0; + rtstatus = _rtl8723be_phy_config_bb_with_pgheaderfile(hw, + BASEBAND_CONFIG_PHY_REG); + } + _rtl8723be_phy_txpower_by_rate_configuration(hw); + if (!rtstatus) { + RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, "BB_PG Reg Fail!!"); + return false; + } + rtstatus = _rtl8723be_phy_config_bb_with_headerfile(hw, + BASEBAND_CONFIG_AGC_TAB); + if (!rtstatus) { + RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, "AGC Table Fail\n"); + return false; + } + rtlphy->cck_high_power = (bool) (rtl_get_bbreg(hw, + RFPGA0_XA_HSSIPARAMETER2, + 0x200)); + return true; +} + +static void _rtl8723be_store_tx_power_by_rate(struct ieee80211_hw *hw, + u32 band, u32 rfpath, + u32 txnum, u32 regaddr, + u32 bitmask, u32 data) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + u8 rate_section = _rtl8723be_get_rate_section_index(regaddr); + + if (band != BAND_ON_2_4G && band != BAND_ON_5G) + RT_TRACE(rtlpriv, COMP_POWER, PHY_TXPWR, + "Invalid Band %d\n", band); + + if (rfpath > MAX_RF_PATH) + RT_TRACE(rtlpriv, COMP_POWER, PHY_TXPWR, + "Invalid RfPath %d\n", rfpath); + + if (txnum > MAX_RF_PATH) + RT_TRACE(rtlpriv, COMP_POWER, PHY_TXPWR, + "Invalid TxNum %d\n", txnum); + + rtlphy->tx_power_by_rate_offset[band][rfpath][txnum][rate_section] = + data; +} + +static bool _rtl8723be_phy_config_bb_with_pgheaderfile(struct ieee80211_hw *hw, + u8 configtype) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + int i; + u32 *phy_regarray_table_pg; + u16 phy_regarray_pg_len; + u32 v1 = 0, v2 = 0, v3 = 0, v4 = 0, v5 = 0, v6 = 0; + + phy_regarray_pg_len = RTL8723BEPHY_REG_ARRAY_PGLEN; + phy_regarray_table_pg = RTL8723BEPHY_REG_ARRAY_PG; + + if (configtype == BASEBAND_CONFIG_PHY_REG) { + for (i = 0; i < phy_regarray_pg_len; i = i + 6) { + v1 = phy_regarray_table_pg[i]; + v2 = phy_regarray_table_pg[i+1]; + v3 = phy_regarray_table_pg[i+2]; + v4 = phy_regarray_table_pg[i+3]; + v5 = phy_regarray_table_pg[i+4]; + v6 = phy_regarray_table_pg[i+5]; + + if (v1 < 0xcdcdcdcd) { + if (phy_regarray_table_pg[i] == 0xfe || + phy_regarray_table_pg[i] == 0xffe) + mdelay(50); + else + _rtl8723be_store_tx_power_by_rate(hw, + v1, v2, v3, v4, v5, v6); + continue; + } else { + /*don't need the hw_body*/ + if (!_rtl8723be_check_condition(hw, + phy_regarray_table_pg[i])) { + i += 2; /* skip the pair of expression*/ + v1 = phy_regarray_table_pg[i]; + v2 = phy_regarray_table_pg[i+1]; + v3 = phy_regarray_table_pg[i+2]; + while (v2 != 0xDEAD) { + i += 3; + v1 = phy_regarray_table_pg[i]; + v2 = phy_regarray_table_pg[i+1]; + v3 = phy_regarray_table_pg[i+2]; + } + } + } + } + } else { + RT_TRACE(rtlpriv, COMP_SEND, DBG_TRACE, + "configtype != BaseBand_Config_PHY_REG\n"); + } + return true; +} + +bool rtl8723be_phy_config_rf_with_headerfile(struct ieee80211_hw *hw, + enum radio_path rfpath) +{ + #define READ_NEXT_RF_PAIR(v1, v2, i) \ + do { \ + i += 2; \ + v1 = radioa_array_table[i]; \ + v2 = radioa_array_table[i+1]; \ + } while (0) + + int i; + bool rtstatus = true; + u32 *radioa_array_table; + u16 radioa_arraylen; + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + u32 v1 = 0, v2 = 0; + + radioa_arraylen = RTL8723BE_RADIOA_1TARRAYLEN; + radioa_array_table = RTL8723BE_RADIOA_1TARRAY; + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, + "Radio_A:RTL8723BE_RADIOA_1TARRAY %d\n", radioa_arraylen); + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, "Radio No %x\n", rfpath); + rtstatus = true; + switch (rfpath) { + case RF90_PATH_A: + for (i = 0; i < radioa_arraylen; i = i + 2) { + v1 = radioa_array_table[i]; + v2 = radioa_array_table[i+1]; + if (v1 < 0xcdcdcdcd) { + _rtl8723be_config_rf_radio_a(hw, v1, v2); + } else { /*This line is the start line of branch.*/ + if (!_rtl8723be_check_condition(hw, + radioa_array_table[i])) { + /* Discard the following + * (offset, data) pairs + */ + READ_NEXT_RF_PAIR(v1, v2, i); + while (v2 != 0xDEAD && + v2 != 0xCDEF && + v2 != 0xCDCD && + i < radioa_arraylen - 2) + READ_NEXT_RF_PAIR(v1, v2, i); + i -= 2; /* prevent from for-loop += 2*/ + } else { + /* Configure matched pairs + * and skip to end of if-else. + */ + READ_NEXT_RF_PAIR(v1, v2, i); + while (v2 != 0xDEAD && + v2 != 0xCDEF && + v2 != 0xCDCD && + i < radioa_arraylen - 2) { + _rtl8723be_config_rf_radio_a(hw, + v1, v2); + READ_NEXT_RF_PAIR(v1, v2, i); + } + + while (v2 != 0xDEAD && + i < radioa_arraylen - 2) { + READ_NEXT_RF_PAIR(v1, v2, i); + } + } + } + } + + if (rtlhal->oem_id == RT_CID_819X_HP) + _rtl8723be_config_rf_radio_a(hw, 0x52, 0x7E4BD); + + break; + case RF90_PATH_B: + RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, + "switch case not process\n"); + break; + case RF90_PATH_C: + RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, + "switch case not process\n"); + break; + case RF90_PATH_D: + RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, + "switch case not process\n"); + break; + } + return true; +} + +void rtl8723be_phy_get_hw_reg_originalvalue(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + + rtlphy->default_initialgain[0] = + (u8) rtl_get_bbreg(hw, ROFDM0_XAAGCCORE1, MASKBYTE0); + rtlphy->default_initialgain[1] = + (u8) rtl_get_bbreg(hw, ROFDM0_XBAGCCORE1, MASKBYTE0); + rtlphy->default_initialgain[2] = + (u8) rtl_get_bbreg(hw, ROFDM0_XCAGCCORE1, MASKBYTE0); + rtlphy->default_initialgain[3] = + (u8) rtl_get_bbreg(hw, ROFDM0_XDAGCCORE1, MASKBYTE0); + + RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, + "Default initial gain (c50 = 0x%x, " + "c58 = 0x%x, c60 = 0x%x, c68 = 0x%x\n", + rtlphy->default_initialgain[0], + rtlphy->default_initialgain[1], + rtlphy->default_initialgain[2], + rtlphy->default_initialgain[3]); + + rtlphy->framesync = (u8) rtl_get_bbreg(hw, ROFDM0_RXDETECTOR3, + MASKBYTE0); + rtlphy->framesync_c34 = rtl_get_bbreg(hw, ROFDM0_RXDETECTOR2, + MASKDWORD); + + RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, + "Default framesync (0x%x) = 0x%x\n", + ROFDM0_RXDETECTOR3, rtlphy->framesync); +} + +void rtl8723be_phy_get_txpower_level(struct ieee80211_hw *hw, long *powerlevel) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + u8 txpwr_level; + long txpwr_dbm; + + txpwr_level = rtlphy->cur_cck_txpwridx; + txpwr_dbm = rtl8723_phy_txpwr_idx_to_dbm(hw, WIRELESS_MODE_B, + txpwr_level); + txpwr_level = rtlphy->cur_ofdm24g_txpwridx; + if (rtl8723_phy_txpwr_idx_to_dbm(hw, WIRELESS_MODE_G, txpwr_level) > + txpwr_dbm) + txpwr_dbm = + rtl8723_phy_txpwr_idx_to_dbm(hw, WIRELESS_MODE_G, + txpwr_level); + txpwr_level = rtlphy->cur_ofdm24g_txpwridx; + if (rtl8723_phy_txpwr_idx_to_dbm(hw, WIRELESS_MODE_N_24G, + txpwr_level) > txpwr_dbm) + txpwr_dbm = + rtl8723_phy_txpwr_idx_to_dbm(hw, WIRELESS_MODE_N_24G, + txpwr_level); + *powerlevel = txpwr_dbm; +} + +static u8 _rtl8723be_phy_get_ratesection_intxpower_byrate(enum radio_path path, + u8 rate) +{ + u8 rate_section = 0; + + switch (rate) { + case DESC92C_RATE1M: + rate_section = 2; + break; + case DESC92C_RATE2M: + case DESC92C_RATE5_5M: + if (path == RF90_PATH_A) + rate_section = 3; + else if (path == RF90_PATH_B) + rate_section = 2; + break; + case DESC92C_RATE11M: + rate_section = 3; + break; + case DESC92C_RATE6M: + case DESC92C_RATE9M: + case DESC92C_RATE12M: + case DESC92C_RATE18M: + rate_section = 0; + break; + case DESC92C_RATE24M: + case DESC92C_RATE36M: + case DESC92C_RATE48M: + case DESC92C_RATE54M: + rate_section = 1; + break; + case DESC92C_RATEMCS0: + case DESC92C_RATEMCS1: + case DESC92C_RATEMCS2: + case DESC92C_RATEMCS3: + rate_section = 4; + break; + case DESC92C_RATEMCS4: + case DESC92C_RATEMCS5: + case DESC92C_RATEMCS6: + case DESC92C_RATEMCS7: + rate_section = 5; + break; + case DESC92C_RATEMCS8: + case DESC92C_RATEMCS9: + case DESC92C_RATEMCS10: + case DESC92C_RATEMCS11: + rate_section = 6; + break; + case DESC92C_RATEMCS12: + case DESC92C_RATEMCS13: + case DESC92C_RATEMCS14: + case DESC92C_RATEMCS15: + rate_section = 7; + break; + default: + RT_ASSERT(true, "Rate_Section is Illegal\n"); + break; + } + return rate_section; +} + +static u8 _rtl8723be_get_txpower_by_rate(struct ieee80211_hw *hw, + enum band_type band, + enum radio_path rfpath, u8 rate) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + u8 shift = 0, rate_section, tx_num; + char tx_pwr_diff = 0; + + rate_section = _rtl8723be_phy_get_ratesection_intxpower_byrate(rfpath, + rate); + tx_num = RF_TX_NUM_NONIMPLEMENT; + + if (tx_num == RF_TX_NUM_NONIMPLEMENT) { + if (rate >= DESC92C_RATEMCS8 && rate <= DESC92C_RATEMCS15) + tx_num = RF_2TX; + else + tx_num = RF_1TX; + } + + switch (rate) { + case DESC92C_RATE6M: + case DESC92C_RATE24M: + case DESC92C_RATEMCS0: + case DESC92C_RATEMCS4: + case DESC92C_RATEMCS8: + case DESC92C_RATEMCS12: + shift = 0; + break; + case DESC92C_RATE1M: + case DESC92C_RATE2M: + case DESC92C_RATE9M: + case DESC92C_RATE36M: + case DESC92C_RATEMCS1: + case DESC92C_RATEMCS5: + case DESC92C_RATEMCS9: + case DESC92C_RATEMCS13: + shift = 8; + break; + case DESC92C_RATE5_5M: + case DESC92C_RATE12M: + case DESC92C_RATE48M: + case DESC92C_RATEMCS2: + case DESC92C_RATEMCS6: + case DESC92C_RATEMCS10: + case DESC92C_RATEMCS14: + shift = 16; + break; + case DESC92C_RATE11M: + case DESC92C_RATE18M: + case DESC92C_RATE54M: + case DESC92C_RATEMCS3: + case DESC92C_RATEMCS7: + case DESC92C_RATEMCS11: + case DESC92C_RATEMCS15: + shift = 24; + break; + default: + RT_ASSERT(true, "Rate_Section is Illegal\n"); + break; + } + tx_pwr_diff = (u8)(rtlphy->tx_power_by_rate_offset[band][rfpath][tx_num] + [rate_section] >> shift) & 0xff; + + return tx_pwr_diff; +} + +static u8 _rtl8723be_get_txpower_index(struct ieee80211_hw *hw, u8 path, + u8 rate, u8 bandwidth, u8 channel) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + u8 index = (channel - 1); + u8 txpower; + u8 power_diff_byrate = 0; + + if (channel > 14 || channel < 1) { + index = 0; + RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, + "Illegal channel!\n"); + } + if (RTL8723E_RX_HAL_IS_CCK_RATE(rate)) + txpower = rtlefuse->txpwrlevel_cck[path][index]; + else if (DESC92C_RATE6M <= rate) + txpower = rtlefuse->txpwrlevel_ht40_1s[path][index]; + else + RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, + "invalid rate\n"); + + if (DESC92C_RATE6M <= rate && rate <= DESC92C_RATE54M && + !RTL8723E_RX_HAL_IS_CCK_RATE(rate)) + txpower += rtlefuse->txpwr_legacyhtdiff[0][TX_1S]; + + if (bandwidth == HT_CHANNEL_WIDTH_20) { + if (DESC92C_RATEMCS0 <= rate && rate <= DESC92C_RATEMCS15) + txpower += rtlefuse->txpwr_ht20diff[0][TX_1S]; + if (DESC92C_RATEMCS8 <= rate && rate <= DESC92C_RATEMCS15) + txpower += rtlefuse->txpwr_ht20diff[0][TX_2S]; + } else if (bandwidth == HT_CHANNEL_WIDTH_20_40) { + if (DESC92C_RATEMCS0 <= rate && rate <= DESC92C_RATEMCS15) + txpower += rtlefuse->txpwr_ht40diff[0][TX_1S]; + if (DESC92C_RATEMCS8 <= rate && rate <= DESC92C_RATEMCS15) + txpower += rtlefuse->txpwr_ht40diff[0][TX_2S]; + } + if (rtlefuse->eeprom_regulatory != 2) + power_diff_byrate = _rtl8723be_get_txpower_by_rate(hw, + BAND_ON_2_4G, + path, rate); + + txpower += power_diff_byrate; + + if (txpower > MAX_POWER_INDEX) + txpower = MAX_POWER_INDEX; + + return txpower; +} + +static void _rtl8723be_phy_set_txpower_index(struct ieee80211_hw *hw, + u8 power_index, u8 path, u8 rate) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + if (path == RF90_PATH_A) { + switch (rate) { + case DESC92C_RATE1M: + rtl8723_phy_set_bb_reg(hw, RTXAGC_A_CCK1_MCS32, + MASKBYTE1, power_index); + break; + case DESC92C_RATE2M: + rtl8723_phy_set_bb_reg(hw, RTXAGC_B_CCK11_A_CCK2_11, + MASKBYTE1, power_index); + break; + case DESC92C_RATE5_5M: + rtl8723_phy_set_bb_reg(hw, RTXAGC_B_CCK11_A_CCK2_11, + MASKBYTE2, power_index); + break; + case DESC92C_RATE11M: + rtl8723_phy_set_bb_reg(hw, RTXAGC_B_CCK11_A_CCK2_11, + MASKBYTE3, power_index); + break; + case DESC92C_RATE6M: + rtl8723_phy_set_bb_reg(hw, RTXAGC_A_RATE18_06, + MASKBYTE0, power_index); + break; + case DESC92C_RATE9M: + rtl8723_phy_set_bb_reg(hw, RTXAGC_A_RATE18_06, + MASKBYTE1, power_index); + break; + case DESC92C_RATE12M: + rtl8723_phy_set_bb_reg(hw, RTXAGC_A_RATE18_06, + MASKBYTE2, power_index); + break; + case DESC92C_RATE18M: + rtl8723_phy_set_bb_reg(hw, RTXAGC_A_RATE18_06, + MASKBYTE3, power_index); + break; + case DESC92C_RATE24M: + rtl8723_phy_set_bb_reg(hw, RTXAGC_A_RATE54_24, + MASKBYTE0, power_index); + break; + case DESC92C_RATE36M: + rtl8723_phy_set_bb_reg(hw, RTXAGC_A_RATE54_24, + MASKBYTE1, power_index); + break; + case DESC92C_RATE48M: + rtl8723_phy_set_bb_reg(hw, RTXAGC_A_RATE54_24, + MASKBYTE2, power_index); + break; + case DESC92C_RATE54M: + rtl8723_phy_set_bb_reg(hw, RTXAGC_A_RATE54_24, + MASKBYTE3, power_index); + break; + case DESC92C_RATEMCS0: + rtl8723_phy_set_bb_reg(hw, RTXAGC_A_MCS03_MCS00, + MASKBYTE0, power_index); + break; + case DESC92C_RATEMCS1: + rtl8723_phy_set_bb_reg(hw, RTXAGC_A_MCS03_MCS00, + MASKBYTE1, power_index); + break; + case DESC92C_RATEMCS2: + rtl8723_phy_set_bb_reg(hw, RTXAGC_A_MCS03_MCS00, + MASKBYTE2, power_index); + break; + case DESC92C_RATEMCS3: + rtl8723_phy_set_bb_reg(hw, RTXAGC_A_MCS03_MCS00, + MASKBYTE3, power_index); + break; + case DESC92C_RATEMCS4: + rtl8723_phy_set_bb_reg(hw, RTXAGC_A_MCS07_MCS04, + MASKBYTE0, power_index); + break; + case DESC92C_RATEMCS5: + rtl8723_phy_set_bb_reg(hw, RTXAGC_A_MCS07_MCS04, + MASKBYTE1, power_index); + break; + case DESC92C_RATEMCS6: + rtl8723_phy_set_bb_reg(hw, RTXAGC_A_MCS07_MCS04, + MASKBYTE2, power_index); + break; + case DESC92C_RATEMCS7: + rtl8723_phy_set_bb_reg(hw, RTXAGC_A_MCS07_MCS04, + MASKBYTE3, power_index); + break; + case DESC92C_RATEMCS8: + rtl8723_phy_set_bb_reg(hw, RTXAGC_A_MCS11_MCS08, + MASKBYTE0, power_index); + break; + case DESC92C_RATEMCS9: + rtl8723_phy_set_bb_reg(hw, RTXAGC_A_MCS11_MCS08, + MASKBYTE1, power_index); + break; + case DESC92C_RATEMCS10: + rtl8723_phy_set_bb_reg(hw, RTXAGC_A_MCS11_MCS08, + MASKBYTE2, power_index); + break; + case DESC92C_RATEMCS11: + rtl8723_phy_set_bb_reg(hw, RTXAGC_A_MCS11_MCS08, + MASKBYTE3, power_index); + break; + default: + RT_TRACE(rtlpriv, COMP_POWER, DBG_LOUD, + "Invalid Rate!!\n"); + break; + } + } else { + RT_TRACE(rtlpriv, COMP_POWER, DBG_LOUD, "Invalid RFPath!!\n"); + } +} + +void rtl8723be_phy_set_txpower_level(struct ieee80211_hw *hw, u8 channel) +{ + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + u8 cck_rates[] = {DESC92C_RATE1M, DESC92C_RATE2M, + DESC92C_RATE5_5M, DESC92C_RATE11M}; + u8 ofdm_rates[] = {DESC92C_RATE6M, DESC92C_RATE9M, + DESC92C_RATE12M, DESC92C_RATE18M, + DESC92C_RATE24M, DESC92C_RATE36M, + DESC92C_RATE48M, DESC92C_RATE54M}; + u8 ht_rates_1t[] = {DESC92C_RATEMCS0, DESC92C_RATEMCS1, + DESC92C_RATEMCS2, DESC92C_RATEMCS3, + DESC92C_RATEMCS4, DESC92C_RATEMCS5, + DESC92C_RATEMCS6, DESC92C_RATEMCS7}; + u8 i, size; + u8 power_index; + + if (!rtlefuse->txpwr_fromeprom) + return; + + size = sizeof(cck_rates) / sizeof(u8); + for (i = 0; i < size; i++) { + power_index = _rtl8723be_get_txpower_index(hw, RF90_PATH_A, + cck_rates[i], + rtl_priv(hw)->phy.current_chan_bw, + channel); + _rtl8723be_phy_set_txpower_index(hw, power_index, RF90_PATH_A, + cck_rates[i]); + } + size = sizeof(ofdm_rates) / sizeof(u8); + for (i = 0; i < size; i++) { + power_index = _rtl8723be_get_txpower_index(hw, RF90_PATH_A, + ofdm_rates[i], + rtl_priv(hw)->phy.current_chan_bw, + channel); + _rtl8723be_phy_set_txpower_index(hw, power_index, RF90_PATH_A, + ofdm_rates[i]); + } + size = sizeof(ht_rates_1t) / sizeof(u8); + for (i = 0; i < size; i++) { + power_index = _rtl8723be_get_txpower_index(hw, RF90_PATH_A, + ht_rates_1t[i], + rtl_priv(hw)->phy.current_chan_bw, + channel); + _rtl8723be_phy_set_txpower_index(hw, power_index, RF90_PATH_A, + ht_rates_1t[i]); + } +} + +void rtl8723be_phy_scan_operation_backup(struct ieee80211_hw *hw, u8 operation) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + enum io_type iotype; + + if (!is_hal_stop(rtlhal)) { + switch (operation) { + case SCAN_OPT_BACKUP: + iotype = IO_CMD_PAUSE_DM_BY_SCAN; + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_IO_CMD, + (u8 *)&iotype); + break; + case SCAN_OPT_RESTORE: + iotype = IO_CMD_RESUME_DM_BY_SCAN; + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_IO_CMD, + (u8 *)&iotype); + break; + default: + RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, + "Unknown Scan Backup operation.\n"); + break; + } + } +} + +void rtl8723be_phy_set_bw_mode_callback(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + u8 reg_bw_opmode; + u8 reg_prsr_rsc; + + RT_TRACE(rtlpriv, COMP_SCAN, DBG_TRACE, + "Switch to %s bandwidth\n", + rtlphy->current_chan_bw == HT_CHANNEL_WIDTH_20 ? + "20MHz" : "40MHz"); + + if (is_hal_stop(rtlhal)) { + rtlphy->set_bwmode_inprogress = false; + return; + } + + reg_bw_opmode = rtl_read_byte(rtlpriv, REG_BWOPMODE); + reg_prsr_rsc = rtl_read_byte(rtlpriv, REG_RRSR + 2); + + switch (rtlphy->current_chan_bw) { + case HT_CHANNEL_WIDTH_20: + reg_bw_opmode |= BW_OPMODE_20MHZ; + rtl_write_byte(rtlpriv, REG_BWOPMODE, reg_bw_opmode); + break; + case HT_CHANNEL_WIDTH_20_40: + reg_bw_opmode &= ~BW_OPMODE_20MHZ; + rtl_write_byte(rtlpriv, REG_BWOPMODE, reg_bw_opmode); + reg_prsr_rsc = (reg_prsr_rsc & 0x90) | + (mac->cur_40_prime_sc << 5); + rtl_write_byte(rtlpriv, REG_RRSR + 2, reg_prsr_rsc); + break; + default: + RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, + "unknown bandwidth: %#X\n", rtlphy->current_chan_bw); + break; + } + + switch (rtlphy->current_chan_bw) { + case HT_CHANNEL_WIDTH_20: + rtl_set_bbreg(hw, RFPGA0_RFMOD, BRFMOD, 0x0); + rtl_set_bbreg(hw, RFPGA1_RFMOD, BRFMOD, 0x0); + break; + case HT_CHANNEL_WIDTH_20_40: + rtl_set_bbreg(hw, RFPGA0_RFMOD, BRFMOD, 0x1); + rtl_set_bbreg(hw, RFPGA1_RFMOD, BRFMOD, 0x1); + rtl_set_bbreg(hw, RCCK0_SYSTEM, BCCK_SIDEBAND, + (mac->cur_40_prime_sc >> 1)); + rtl_set_bbreg(hw, ROFDM1_LSTF, 0xC00, mac->cur_40_prime_sc); + rtl_set_bbreg(hw, 0x818, (BIT(26) | BIT(27)), + (mac->cur_40_prime_sc == + HAL_PRIME_CHNL_OFFSET_LOWER) ? 2 : 1); + break; + default: + RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, + "unknown bandwidth: %#X\n", rtlphy->current_chan_bw); + break; + } + rtl8723be_phy_rf6052_set_bandwidth(hw, rtlphy->current_chan_bw); + rtlphy->set_bwmode_inprogress = false; + RT_TRACE(rtlpriv, COMP_SCAN, DBG_LOUD, "\n"); +} + +void rtl8723be_phy_set_bw_mode(struct ieee80211_hw *hw, + enum nl80211_channel_type ch_type) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + u8 tmp_bw = rtlphy->current_chan_bw; + + if (rtlphy->set_bwmode_inprogress) + return; + rtlphy->set_bwmode_inprogress = true; + if ((!is_hal_stop(rtlhal)) && !(RT_CANNOT_IO(hw))) { + rtl8723be_phy_set_bw_mode_callback(hw); + } else { + RT_TRACE(rtlpriv, COMP_ERR, DBG_WARNING, + "false driver sleep or unload\n"); + rtlphy->set_bwmode_inprogress = false; + rtlphy->current_chan_bw = tmp_bw; + } +} + +void rtl8723be_phy_sw_chnl_callback(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + u32 delay; + + RT_TRACE(rtlpriv, COMP_SCAN, DBG_TRACE, + "switch to channel%d\n", rtlphy->current_channel); + if (is_hal_stop(rtlhal)) + return; + do { + if (!rtlphy->sw_chnl_inprogress) + break; + if (!rtl8723be_phy_sw_chn_step_by_step(hw, + rtlphy->current_channel, + &rtlphy->sw_chnl_stage, + &rtlphy->sw_chnl_step, + &delay)) { + if (delay > 0) + mdelay(delay); + else + continue; + } else { + rtlphy->sw_chnl_inprogress = false; + } + break; + } while (true); + RT_TRACE(rtlpriv, COMP_SCAN, DBG_TRACE, "\n"); +} + +u8 rtl8723be_phy_sw_chnl(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + + if (rtlphy->sw_chnl_inprogress) + return 0; + if (rtlphy->set_bwmode_inprogress) + return 0; + RT_ASSERT((rtlphy->current_channel <= 14), + "WIRELESS_MODE_G but channel>14"); + rtlphy->sw_chnl_inprogress = true; + rtlphy->sw_chnl_stage = 0; + rtlphy->sw_chnl_step = 0; + if (!(is_hal_stop(rtlhal)) && !(RT_CANNOT_IO(hw))) { + rtl8723be_phy_sw_chnl_callback(hw); + RT_TRACE(rtlpriv, COMP_CHAN, DBG_LOUD, + "sw_chnl_inprogress false schdule " + "workitem current channel %d\n", + rtlphy->current_channel); + rtlphy->sw_chnl_inprogress = false; + } else { + RT_TRACE(rtlpriv, COMP_CHAN, DBG_LOUD, + "sw_chnl_inprogress false driver sleep or" + " unload\n"); + rtlphy->sw_chnl_inprogress = false; + } + return 1; +} + +static bool rtl8723be_phy_sw_chn_step_by_step(struct ieee80211_hw *hw, + u8 channel, u8 *stage, + u8 *step, u32 *delay) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct swchnlcmd precommoncmd[MAX_PRECMD_CNT]; + u32 precommoncmdcnt; + struct swchnlcmd postcommoncmd[MAX_POSTCMD_CNT]; + u32 postcommoncmdcnt; + struct swchnlcmd rfdependcmd[MAX_RFDEPENDCMD_CNT]; + u32 rfdependcmdcnt; + struct swchnlcmd *currentcmd = NULL; + u8 rfpath; + u8 num_total_rfpath = rtlphy->num_total_rfpath; + + precommoncmdcnt = 0; + rtl8723_phy_set_sw_chnl_cmdarray(precommoncmd, precommoncmdcnt++, + MAX_PRECMD_CNT, + CMDID_SET_TXPOWEROWER_LEVEL, + 0, 0, 0); + rtl8723_phy_set_sw_chnl_cmdarray(precommoncmd, precommoncmdcnt++, + MAX_PRECMD_CNT, CMDID_END, 0, 0, 0); + postcommoncmdcnt = 0; + rtl8723_phy_set_sw_chnl_cmdarray(postcommoncmd, postcommoncmdcnt++, + MAX_POSTCMD_CNT, CMDID_END, + 0, 0, 0); + rfdependcmdcnt = 0; + + RT_ASSERT((channel >= 1 && channel <= 14), + "illegal channel for Zebra: %d\n", channel); + + rtl8723_phy_set_sw_chnl_cmdarray(rfdependcmd, rfdependcmdcnt++, + MAX_RFDEPENDCMD_CNT, + CMDID_RF_WRITEREG, + RF_CHNLBW, channel, 10); + + rtl8723_phy_set_sw_chnl_cmdarray(rfdependcmd, rfdependcmdcnt++, + MAX_RFDEPENDCMD_CNT, + CMDID_END, 0, 0, 0); + + 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_SET_TXPOWEROWER_LEVEL: + rtl8723be_phy_set_txpower_level(hw, channel); + break; + case CMDID_WRITEPORT_ULONG: + rtl_write_dword(rtlpriv, currentcmd->para1, + currentcmd->para2); + break; + case CMDID_WRITEPORT_USHORT: + rtl_write_word(rtlpriv, currentcmd->para1, + (u16) currentcmd->para2); + break; + case CMDID_WRITEPORT_UCHAR: + rtl_write_byte(rtlpriv, currentcmd->para1, + (u8) currentcmd->para2); + break; + case CMDID_RF_WRITEREG: + for (rfpath = 0; rfpath < num_total_rfpath; rfpath++) { + rtlphy->rfreg_chnlval[rfpath] = + ((rtlphy->rfreg_chnlval[rfpath] & + 0xfffffc00) | currentcmd->para2); + + rtl_set_rfreg(hw, (enum radio_path)rfpath, + currentcmd->para1, + RFREG_OFFSET_MASK, + rtlphy->rfreg_chnlval[rfpath]); + } + break; + default: + RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, + "switch case not process\n"); + break; + } + + break; + } while (true); + + (*delay) = currentcmd->msdelay; + (*step)++; + return false; +} + +static u8 _rtl8723be_phy_path_a_iqk(struct ieee80211_hw *hw, bool config_pathb) +{ + u32 reg_eac, reg_e94, reg_e9c, reg_ea4; + u8 result = 0x00; + + rtl_set_bbreg(hw, 0xe30, MASKDWORD, 0x10008c1c); + rtl_set_bbreg(hw, 0xe34, MASKDWORD, 0x30008c1c); + rtl_set_bbreg(hw, 0xe38, MASKDWORD, 0x8214032a); + rtl_set_bbreg(hw, 0xe3c, MASKDWORD, 0x28160000); + + rtl_set_bbreg(hw, 0xe4c, MASKDWORD, 0x00462911); + rtl_set_bbreg(hw, 0xe48, MASKDWORD, 0xf9000000); + rtl_set_bbreg(hw, 0xe48, MASKDWORD, 0xf8000000); + + mdelay(IQK_DELAY_TIME); + + reg_eac = rtl_get_bbreg(hw, 0xeac, MASKDWORD); + reg_e94 = rtl_get_bbreg(hw, 0xe94, MASKDWORD); + reg_e9c = rtl_get_bbreg(hw, 0xe9c, MASKDWORD); + reg_ea4 = rtl_get_bbreg(hw, 0xea4, MASKDWORD); + + if (!(reg_eac & BIT(28)) && + (((reg_e94 & 0x03FF0000) >> 16) != 0x142) && + (((reg_e9c & 0x03FF0000) >> 16) != 0x42)) + result |= 0x01; + return result; +} + +static bool phy_similarity_cmp(struct ieee80211_hw *hw, long result[][8], + u8 c1, u8 c2) +{ + u32 i, j, diff, simularity_bitmap, bound; + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + + u8 final_candidate[2] = { 0xFF, 0xFF }; + bool bresult = true, is2t = IS_92C_SERIAL(rtlhal->version); + + if (is2t) + bound = 8; + else + bound = 4; + + simularity_bitmap = 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) && !simularity_bitmap) { + 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 + simularity_bitmap |= (1 << i); + } else { + simularity_bitmap |= (1 << i); + } + } + } + + if (simularity_bitmap == 0) { + for (i = 0; i < (bound / 4); i++) { + if (final_candidate[i] != 0xFF) { + for (j = i * 4; j < (i + 1) * 4 - 2; j++) + result[3][j] = + result[final_candidate[i]][j]; + bresult = false; + } + } + return bresult; + } else if (!(simularity_bitmap & 0x0F)) { + for (i = 0; i < 4; i++) + result[3][i] = result[c1][i]; + return false; + } else if (!(simularity_bitmap & 0xF0) && is2t) { + for (i = 4; i < 8; i++) + result[3][i] = result[c1][i]; + return false; + } else { + return false; + } +} + +static void _rtl8723be_phy_iq_calibrate(struct ieee80211_hw *hw, + long result[][8], u8 t, bool is2t) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + u32 i; + u8 patha_ok; + u32 adda_reg[IQK_ADDA_REG_NUM] = { + 0x85c, 0xe6c, 0xe70, 0xe74, + 0xe78, 0xe7c, 0xe80, 0xe84, + 0xe88, 0xe8c, 0xed0, 0xed4, + 0xed8, 0xedc, 0xee0, 0xeec + }; + + u32 iqk_mac_reg[IQK_MAC_REG_NUM] = { + 0x522, 0x550, 0x551, 0x040 + }; + u32 iqk_bb_reg[IQK_BB_REG_NUM] = { + ROFDM0_TRXPATHENABLE, ROFDM0_TRMUXPAR, + RFPGA0_XCD_RFINTERFACESW, 0xb68, 0xb6c, + 0x870, 0x860, + 0x864, 0x800 + }; + const u32 retrycount = 2; + u32 path_sel_bb, path_sel_rf; + u8 tmp_reg_c50, tmp_reg_c58; + + tmp_reg_c50 = rtl_get_bbreg(hw, 0xc50, MASKBYTE0); + tmp_reg_c58 = rtl_get_bbreg(hw, 0xc58, MASKBYTE0); + + if (t == 0) { + rtl8723_save_adda_registers(hw, adda_reg, + rtlphy->adda_backup, 16); + rtl8723_phy_save_mac_registers(hw, iqk_mac_reg, + rtlphy->iqk_mac_backup); + rtl8723_save_adda_registers(hw, iqk_bb_reg, + rtlphy->iqk_bb_backup, + IQK_BB_REG_NUM); + } + rtl8723_phy_path_adda_on(hw, adda_reg, true, is2t); + if (t == 0) { + rtlphy->rfpi_enable = (u8) rtl_get_bbreg(hw, + RFPGA0_XA_HSSIPARAMETER1, + BIT(8)); + } + if (!rtlphy->rfpi_enable) + rtl8723_phy_pi_mode_switch(hw, true); + + path_sel_bb = rtl_get_bbreg(hw, 0x948, MASKDWORD); + path_sel_rf = rtl_get_rfreg(hw, RF90_PATH_A, 0xb0, 0xfffff); + + /*BB Setting*/ + rtl_set_bbreg(hw, 0x800, BIT(24), 0x00); + rtl_set_bbreg(hw, 0xc04, MASKDWORD, 0x03a05600); + rtl_set_bbreg(hw, 0xc08, MASKDWORD, 0x000800e4); + rtl_set_bbreg(hw, 0x874, MASKDWORD, 0x22204000); + + rtl_set_bbreg(hw, 0x870, BIT(10), 0x01); + rtl_set_bbreg(hw, 0x870, BIT(26), 0x01); + rtl_set_bbreg(hw, 0x860, BIT(10), 0x00); + rtl_set_bbreg(hw, 0x864, BIT(10), 0x00); + + if (is2t) + rtl_set_rfreg(hw, RF90_PATH_B, 0x00, MASKDWORD, 0x10000); + rtl8723_phy_mac_setting_calibration(hw, iqk_mac_reg, + rtlphy->iqk_mac_backup); + rtl_set_bbreg(hw, 0xb68, MASKDWORD, 0x0f600000); + + rtl_set_bbreg(hw, 0xe28, MASKDWORD, 0x80800000); + rtl_set_bbreg(hw, 0xe40, MASKDWORD, 0x01007c00); + rtl_set_bbreg(hw, 0xe44, MASKDWORD, 0x81004800); + for (i = 0; i < retrycount; i++) { + patha_ok = _rtl8723be_phy_path_a_iqk(hw, is2t); + if (patha_ok == 0x01) { + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, + "Path A Tx IQK Success!!\n"); + result[t][0] = (rtl_get_bbreg(hw, 0xe94, MASKDWORD) & + 0x3FF0000) >> 16; + result[t][1] = (rtl_get_bbreg(hw, 0xe9c, MASKDWORD) & + 0x3FF0000) >> 16; + break; + } + } + + if (0 == patha_ok) + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, + "Path A IQK Success!!\n"); + if (is2t) { + rtl8723_phy_path_a_standby(hw); + rtl8723_phy_path_adda_on(hw, adda_reg, false, is2t); + } + + rtl_set_bbreg(hw, 0xe28, MASKDWORD, 0); + + if (t != 0) { + if (!rtlphy->rfpi_enable) + rtl8723_phy_pi_mode_switch(hw, false); + rtl8723_phy_reload_adda_registers(hw, adda_reg, + rtlphy->adda_backup, 16); + rtl8723_phy_reload_mac_registers(hw, iqk_mac_reg, + rtlphy->iqk_mac_backup); + rtl8723_phy_reload_adda_registers(hw, iqk_bb_reg, + rtlphy->iqk_bb_backup, + IQK_BB_REG_NUM); + + rtl_set_bbreg(hw, 0x948, MASKDWORD, path_sel_bb); + rtl_set_rfreg(hw, RF90_PATH_B, 0xb0, 0xfffff, path_sel_rf); + + rtl_set_bbreg(hw, 0xc50, MASKBYTE0, 0x50); + rtl_set_bbreg(hw, 0xc50, MASKBYTE0, tmp_reg_c50); + if (is2t) { + rtl_set_bbreg(hw, 0xc58, MASKBYTE0, 0x50); + rtl_set_bbreg(hw, 0xc58, MASKBYTE0, tmp_reg_c58); + } + rtl_set_bbreg(hw, 0xe30, MASKDWORD, 0x01008c00); + rtl_set_bbreg(hw, 0xe34, MASKDWORD, 0x01008c00); + } + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, "8723be IQK Finish!!\n"); +} + +static void _rtl8723be_phy_lc_calibrate(struct ieee80211_hw *hw, bool is2t) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 tmpreg; + u32 rf_a_mode = 0, rf_b_mode = 0, lc_cal; + + tmpreg = rtl_read_byte(rtlpriv, 0xd03); + + if ((tmpreg & 0x70) != 0) + rtl_write_byte(rtlpriv, 0xd03, tmpreg & 0x8F); + else + rtl_write_byte(rtlpriv, REG_TXPAUSE, 0xFF); + + if ((tmpreg & 0x70) != 0) { + rf_a_mode = rtl_get_rfreg(hw, RF90_PATH_A, 0x00, MASK12BITS); + + if (is2t) + rf_b_mode = rtl_get_rfreg(hw, RF90_PATH_B, 0x00, + MASK12BITS); + + rtl_set_rfreg(hw, RF90_PATH_A, 0x00, MASK12BITS, + (rf_a_mode & 0x8FFFF) | 0x10000); + + if (is2t) + rtl_set_rfreg(hw, RF90_PATH_B, 0x00, MASK12BITS, + (rf_b_mode & 0x8FFFF) | 0x10000); + } + lc_cal = rtl_get_rfreg(hw, RF90_PATH_A, 0x18, MASK12BITS); + + rtl_set_rfreg(hw, RF90_PATH_A, 0xb0, RFREG_OFFSET_MASK, 0xdfbe0); + rtl_set_rfreg(hw, RF90_PATH_A, 0x18, MASK12BITS, 0x8c0a); + + mdelay(100); + + rtl_set_rfreg(hw, RF90_PATH_A, 0xb0, RFREG_OFFSET_MASK, 0xdffe0); + + if ((tmpreg & 0x70) != 0) { + rtl_write_byte(rtlpriv, 0xd03, tmpreg); + rtl_set_rfreg(hw, RF90_PATH_A, 0x00, MASK12BITS, rf_a_mode); + + if (is2t) + rtl_set_rfreg(hw, RF90_PATH_B, 0x00, + MASK12BITS, rf_b_mode); + } else { + rtl_write_byte(rtlpriv, REG_TXPAUSE, 0x00); + } + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, "\n"); +} + +static void _rtl8723be_phy_set_rfpath_switch(struct ieee80211_hw *hw, + bool bmain, bool is2t) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, "\n"); + + if (is_hal_stop(rtlhal)) { + u8 u1btmp; + u1btmp = rtl_read_byte(rtlpriv, REG_LEDCFG0); + rtl_write_byte(rtlpriv, REG_LEDCFG0, u1btmp | BIT(7)); + rtl_set_bbreg(hw, RFPGA0_XAB_RFPARAMETER, BIT(13), 0x01); + } + if (is2t) { + if (bmain) + rtl_set_bbreg(hw, RFPGA0_XB_RFINTERFACEOE, + BIT(5) | BIT(6), 0x1); + else + rtl_set_bbreg(hw, RFPGA0_XB_RFINTERFACEOE, + BIT(5) | BIT(6), 0x2); + } else { + rtl_set_bbreg(hw, RFPGA0_XAB_RFINTERFACESW, BIT(8) | BIT(9), 0); + rtl_set_bbreg(hw, 0x914, MASKLWORD, 0x0201); + + /* We use the RF definition of MAIN and AUX, + * left antenna and right antenna repectively. + * Default output at AUX. + */ + if (bmain) { + rtl_set_bbreg(hw, RFPGA0_XA_RFINTERFACEOE, + BIT(14) | BIT(13) | BIT(12), 0); + rtl_set_bbreg(hw, RFPGA0_XB_RFINTERFACEOE, + BIT(5) | BIT(4) | BIT(3), 0); + if (rtlefuse->antenna_div_type == CGCS_RX_HW_ANTDIV) + rtl_set_bbreg(hw, CONFIG_RAM64X16, BIT(31), 0); + } else { + rtl_set_bbreg(hw, RFPGA0_XA_RFINTERFACEOE, + BIT(14) | BIT(13) | BIT(12), 1); + rtl_set_bbreg(hw, RFPGA0_XB_RFINTERFACEOE, + BIT(5) | BIT(4) | BIT(3), 1); + if (rtlefuse->antenna_div_type == CGCS_RX_HW_ANTDIV) + rtl_set_bbreg(hw, CONFIG_RAM64X16, BIT(31), 1); + } + } +} + +#undef IQK_ADDA_REG_NUM +#undef IQK_DELAY_TIME + +void rtl8723be_phy_iq_calibrate(struct ieee80211_hw *hw, bool recovery) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + long result[4][8]; + u8 i, final_candidate; + bool patha_ok, pathb_ok; + long reg_e94, reg_e9c, reg_ea4, reg_eac, reg_eb4, reg_ebc, reg_ec4, + reg_ecc, reg_tmp = 0; + bool is12simular, is13simular, is23simular; + u32 iqk_bb_reg[9] = { + ROFDM0_XARXIQIMBALANCE, + ROFDM0_XBRXIQIMBALANCE, + ROFDM0_ECCATHRESHOLD, + ROFDM0_AGCRSSITABLE, + ROFDM0_XATXIQIMBALANCE, + ROFDM0_XBTXIQIMBALANCE, + ROFDM0_XCTXAFE, + ROFDM0_XDTXAFE, + ROFDM0_RXIQEXTANTA + }; + + if (recovery) { + rtl8723_phy_reload_adda_registers(hw, iqk_bb_reg, + rtlphy->iqk_bb_backup, 9); + return; + } + + 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; + patha_ok = false; + pathb_ok = false; + is12simular = false; + is23simular = false; + is13simular = false; + for (i = 0; i < 3; i++) { + if (get_rf_type(rtlphy) == RF_2T2R) + _rtl8723be_phy_iq_calibrate(hw, result, i, true); + else + _rtl8723be_phy_iq_calibrate(hw, result, i, false); + if (i == 1) { + is12simular = phy_similarity_cmp(hw, result, 0, 1); + if (is12simular) { + final_candidate = 0; + break; + } + } + if (i == 2) { + is13simular = phy_similarity_cmp(hw, result, 0, 2); + if (is13simular) { + final_candidate = 0; + break; + } + is23simular = phy_similarity_cmp(hw, result, 1, 2); + if (is23simular) { + final_candidate = 1; + } else { + for (i = 0; i < 8; i++) + reg_tmp += result[3][i]; + + if (reg_tmp != 0) + final_candidate = 3; + else + final_candidate = 0xFF; + } + } + } + for (i = 0; i < 4; i++) { + reg_e94 = result[i][0]; + reg_e9c = result[i][1]; + reg_ea4 = result[i][2]; + reg_eac = result[i][3]; + reg_eb4 = result[i][4]; + reg_ebc = result[i][5]; + reg_ec4 = result[i][6]; + reg_ecc = result[i][7]; + } + if (final_candidate != 0xff) { + reg_e94 = result[final_candidate][0]; + rtlphy->reg_e94 = reg_e94; + reg_e9c = result[final_candidate][1]; + rtlphy->reg_e9c = reg_e9c; + reg_ea4 = result[final_candidate][2]; + reg_eac = result[final_candidate][3]; + reg_eb4 = result[final_candidate][4]; + rtlphy->reg_eb4 = reg_eb4; + reg_ebc = result[final_candidate][5]; + rtlphy->reg_ebc = reg_ebc; + reg_ec4 = result[final_candidate][6]; + reg_ecc = result[final_candidate][7]; + patha_ok = true; + pathb_ok = true; + } else { + rtlphy->reg_e94 = 0x100; + rtlphy->reg_eb4 = 0x100; + rtlphy->reg_e9c = 0x0; + rtlphy->reg_ebc = 0x0; + } + if (reg_e94 != 0) /*&&(reg_ea4 != 0) */ + rtl8723_phy_path_a_fill_iqk_matrix(hw, patha_ok, result, + final_candidate, + (reg_ea4 == 0)); + if (final_candidate != 0xFF) { + for (i = 0; i < IQK_MATRIX_REG_NUM; i++) + rtlphy->iqk_matrix[0].value[0][i] = + result[final_candidate][i]; + rtlphy->iqk_matrix[0].iqk_done = true; + } + rtl8723_save_adda_registers(hw, iqk_bb_reg, rtlphy->iqk_bb_backup, 9); +} + +void rtl8723be_phy_lc_calibrate(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct rtl_hal *rtlhal = &(rtlpriv->rtlhal); + u32 timeout = 2000, timecount = 0; + + while (rtlpriv->mac80211.act_scanning && timecount < timeout) { + udelay(50); + timecount += 50; + } + + rtlphy->lck_inprogress = true; + RTPRINT(rtlpriv, FINIT, INIT_EEPROM, + "LCK:Start!!! currentband %x delay %d ms\n", + rtlhal->current_bandtype, timecount); + + _rtl8723be_phy_lc_calibrate(hw, false); + + rtlphy->lck_inprogress = false; +} + +void rtl23b_phy_ap_calibrate(struct ieee80211_hw *hw, char delta) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + + if (rtlphy->apk_done) + return; + + return; +} + +void rtl8723be_phy_set_rfpath_switch(struct ieee80211_hw *hw, bool bmain) +{ + _rtl8723be_phy_set_rfpath_switch(hw, bmain, false); +} + +static void rtl8723be_phy_set_io(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + + RT_TRACE(rtlpriv, COMP_CMD, DBG_TRACE, + "--->Cmd(%#x), set_io_inprogress(%d)\n", + rtlphy->current_io_type, rtlphy->set_io_inprogress); + switch (rtlphy->current_io_type) { + case IO_CMD_RESUME_DM_BY_SCAN: + rtlpriv->dm_digtable.cur_igvalue = + rtlphy->initgain_backup.xaagccore1; + /*rtl92c_dm_write_dig(hw);*/ + rtl8723be_phy_set_txpower_level(hw, rtlphy->current_channel); + rtl_set_bbreg(hw, RCCK0_CCA, 0xff0000, 0x83); + break; + case IO_CMD_PAUSE_DM_BY_SCAN: + rtlphy->initgain_backup.xaagccore1 = + rtlpriv->dm_digtable.cur_igvalue; + rtlpriv->dm_digtable.cur_igvalue = 0x17; + rtl_set_bbreg(hw, RCCK0_CCA, 0xff0000, 0x40); + break; + default: + RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, + "switch case not process\n"); + break; + } + rtlphy->set_io_inprogress = false; + RT_TRACE(rtlpriv, COMP_CMD, DBG_TRACE, + "(%#x)\n", rtlphy->current_io_type); +} + +bool rtl8723be_phy_set_io_cmd(struct ieee80211_hw *hw, enum io_type iotype) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + bool postprocessing = false; + + RT_TRACE(rtlpriv, COMP_CMD, DBG_TRACE, + "-->IO Cmd(%#x), set_io_inprogress(%d)\n", + iotype, rtlphy->set_io_inprogress); + do { + switch (iotype) { + case IO_CMD_RESUME_DM_BY_SCAN: + RT_TRACE(rtlpriv, COMP_CMD, DBG_TRACE, + "[IO CMD] Resume DM after scan.\n"); + postprocessing = true; + break; + case IO_CMD_PAUSE_DM_BY_SCAN: + RT_TRACE(rtlpriv, COMP_CMD, DBG_TRACE, + "[IO CMD] Pause DM before scan.\n"); + postprocessing = true; + break; + default: + RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, + "switch case not process\n"); + break; + } + } while (false); + if (postprocessing && !rtlphy->set_io_inprogress) { + rtlphy->set_io_inprogress = true; + rtlphy->current_io_type = iotype; + } else { + return false; + } + rtl8723be_phy_set_io(hw); + RT_TRACE(rtlpriv, COMP_CMD, DBG_TRACE, "IO Type(%#x)\n", iotype); + return true; +} + +static void rtl8723be_phy_set_rf_on(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + rtl_write_byte(rtlpriv, REG_SPS0_CTRL, 0x2b); + rtl_write_byte(rtlpriv, REG_SYS_FUNC_EN, 0xE3); + rtl_write_byte(rtlpriv, REG_SYS_FUNC_EN, 0xE2); + rtl_write_byte(rtlpriv, REG_SYS_FUNC_EN, 0xE3); + rtl_write_byte(rtlpriv, REG_TXPAUSE, 0x00); +} + +static void _rtl8723be_phy_set_rf_sleep(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + rtl_write_byte(rtlpriv, REG_TXPAUSE, 0xFF); + rtl_set_rfreg(hw, RF90_PATH_A, 0x00, RFREG_OFFSET_MASK, 0x00); + rtl_write_byte(rtlpriv, REG_SYS_FUNC_EN, 0xE2); + rtl_write_byte(rtlpriv, REG_SPS0_CTRL, 0x22); +} + +static bool _rtl8723be_phy_set_rf_power_state(struct ieee80211_hw *hw, + enum rf_pwrstate rfpwr_state) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + bool bresult = true; + u8 i, queue_id; + struct rtl8192_tx_ring *ring = NULL; + + switch (rfpwr_state) { + case ERFON: + if ((ppsc->rfpwr_state == ERFOFF) && + RT_IN_PS_LEVEL(ppsc, RT_RF_OFF_LEVL_HALT_NIC)) { + bool rtstatus; + u32 initialize_count = 0; + do { + initialize_count++; + RT_TRACE(rtlpriv, COMP_RF, DBG_DMESG, + "IPS Set eRf nic enable\n"); + rtstatus = rtl_ps_enable_nic(hw); + } while (!rtstatus && (initialize_count < 10)); + RT_CLEAR_PS_LEVEL(ppsc, + RT_RF_OFF_LEVL_HALT_NIC); + } else { + RT_TRACE(rtlpriv, COMP_RF, DBG_DMESG, + "Set ERFON sleeped:%d ms\n", + jiffies_to_msecs(jiffies - + ppsc->last_sleep_jiffies)); + ppsc->last_awake_jiffies = jiffies; + rtl8723be_phy_set_rf_on(hw); + } + if (mac->link_state == MAC80211_LINKED) + rtlpriv->cfg->ops->led_control(hw, LED_CTL_LINK); + else + rtlpriv->cfg->ops->led_control(hw, LED_CTL_NO_LINK); + break; + case ERFOFF: + for (queue_id = 0, i = 0; + queue_id < RTL_PCI_MAX_TX_QUEUE_COUNT;) { + ring = &pcipriv->dev.tx_ring[queue_id]; + if (skb_queue_len(&ring->queue) == 0) { + queue_id++; + continue; + } else { + RT_TRACE(rtlpriv, COMP_ERR, DBG_WARNING, + "eRf Off/Sleep: %d times " + "TcbBusyQueue[%d] =%d before " + "doze!\n", (i + 1), queue_id, + skb_queue_len(&ring->queue)); + + udelay(10); + i++; + } + if (i >= MAX_DOZE_WAITING_TIMES_9x) { + RT_TRACE(rtlpriv, COMP_ERR, DBG_WARNING, + "\n ERFSLEEP: %d times " + "TcbBusyQueue[%d] = %d !\n", + MAX_DOZE_WAITING_TIMES_9x, + queue_id, + skb_queue_len(&ring->queue)); + break; + } + } + + if (ppsc->reg_rfps_level & RT_RF_OFF_LEVL_HALT_NIC) { + RT_TRACE(rtlpriv, COMP_RF, DBG_DMESG, + "IPS Set eRf nic disable\n"); + rtl_ps_disable_nic(hw); + RT_SET_PS_LEVEL(ppsc, RT_RF_OFF_LEVL_HALT_NIC); + } else { + if (ppsc->rfoff_reason == RF_CHANGE_BY_IPS) { + rtlpriv->cfg->ops->led_control(hw, + LED_CTL_NO_LINK); + } else { + rtlpriv->cfg->ops->led_control(hw, + LED_CTL_POWER_OFF); + } + } + break; + case ERFSLEEP: + if (ppsc->rfpwr_state == ERFOFF) + break; + for (queue_id = 0, i = 0; + queue_id < RTL_PCI_MAX_TX_QUEUE_COUNT;) { + ring = &pcipriv->dev.tx_ring[queue_id]; + if (skb_queue_len(&ring->queue) == 0) { + queue_id++; + continue; + } else { + RT_TRACE(rtlpriv, COMP_ERR, DBG_WARNING, + "eRf Off/Sleep: %d times " + "TcbBusyQueue[%d] =%d before " + "doze!\n", (i + 1), queue_id, + skb_queue_len(&ring->queue)); + + udelay(10); + i++; + } + if (i >= MAX_DOZE_WAITING_TIMES_9x) { + RT_TRACE(rtlpriv, COMP_ERR, DBG_WARNING, + "\n ERFSLEEP: %d times " + "TcbBusyQueue[%d] = %d !\n", + MAX_DOZE_WAITING_TIMES_9x, + queue_id, + skb_queue_len(&ring->queue)); + break; + } + } + RT_TRACE(rtlpriv, COMP_RF, DBG_DMESG, + "Set ERFSLEEP awaked:%d ms\n", + jiffies_to_msecs(jiffies - + ppsc->last_awake_jiffies)); + ppsc->last_sleep_jiffies = jiffies; + _rtl8723be_phy_set_rf_sleep(hw); + break; + default: + RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, + "switch case not process\n"); + bresult = false; + break; + } + if (bresult) + ppsc->rfpwr_state = rfpwr_state; + return bresult; +} + +bool rtl8723be_phy_set_rf_power_state(struct ieee80211_hw *hw, + enum rf_pwrstate rfpwr_state) +{ + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + + bool bresult = false; + + if (rfpwr_state == ppsc->rfpwr_state) + return bresult; + bresult = _rtl8723be_phy_set_rf_power_state(hw, rfpwr_state); + return bresult; +} --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723be/phy.h +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723be/phy.h @@ -0,0 +1,217 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2014 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#ifndef __RTL8723BE_PHY_H__ +#define __RTL8723BE_PHY_H__ + +/*It must always set to 4, otherwise read efuse table secquence will be wrong.*/ +#define MAX_TX_COUNT 4 +#define TX_1S 0 +#define TX_2S 1 + +#define MAX_POWER_INDEX 0x3F + +#define MAX_PRECMD_CNT 16 +#define MAX_RFDEPENDCMD_CNT 16 +#define MAX_POSTCMD_CNT 16 + +#define MAX_DOZE_WAITING_TIMES_9x 64 + +#define RT_CANNOT_IO(hw) false +#define HIGHPOWER_RADIOA_ARRAYLEN 22 + +#define IQK_ADDA_REG_NUM 16 +#define IQK_BB_REG_NUM 9 +#define MAX_TOLERANCE 5 +#define IQK_DELAY_TIME 10 +#define index_mapping_NUM 15 + +#define APK_BB_REG_NUM 5 +#define APK_AFE_REG_NUM 16 +#define APK_CURVE_REG_NUM 4 +#define PATH_NUM 1 + +#define LOOP_LIMIT 5 +#define MAX_STALL_TIME 50 +#define ANTENNADIVERSITYVALUE 0x80 +#define MAX_TXPWR_IDX_NMODE_92S 63 +#define RESET_CNT_LIMIT 3 + +#define IQK_ADDA_REG_NUM 16 +#define IQK_MAC_REG_NUM 4 + +#define RF6052_MAX_PATH 2 + +#define CT_OFFSET_MAC_ADDR 0X16 + +#define CT_OFFSET_CCK_TX_PWR_IDX 0x5A +#define CT_OFFSET_HT401S_TX_PWR_IDX 0x60 +#define CT_OFFSET_HT402S_TX_PWR_IDX_DIFF 0x66 +#define CT_OFFSET_HT20_TX_PWR_IDX_DIFF 0x69 +#define CT_OFFSET_OFDM_TX_PWR_IDX_DIFF 0x6C + +#define CT_OFFSET_HT40_MAX_PWR_OFFSET 0x6F +#define CT_OFFSET_HT20_MAX_PWR_OFFSET 0x72 + +#define CT_OFFSET_CHANNEL_PLAH 0x75 +#define CT_OFFSET_THERMAL_METER 0x78 +#define CT_OFFSET_RF_OPTION 0x79 +#define CT_OFFSET_VERSION 0x7E +#define CT_OFFSET_CUSTOMER_ID 0x7F + +#define RTL92C_MAX_PATH_NUM 2 + +enum hw90_block_e { + HW90_BLOCK_MAC = 0, + HW90_BLOCK_PHY0 = 1, + HW90_BLOCK_PHY1 = 2, + HW90_BLOCK_RF = 3, + HW90_BLOCK_MAXIMUM = 4, +}; + +enum baseband_config_type { + BASEBAND_CONFIG_PHY_REG = 0, + BASEBAND_CONFIG_AGC_TAB = 1, +}; + +enum ra_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, +}; + +enum antenna_path { + ANTENNA_NONE, + 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 +}; + +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; +}; + +struct r_antenna_select_cck { + u8 r_cckrx_enable_2:2; + u8 r_cckrx_enable:2; + u8 r_ccktx_enable:4; +}; + + +struct efuse_contents { + u8 mac_addr[ETH_ALEN]; + u8 cck_tx_power_idx[6]; + u8 ht40_1s_tx_power_idx[6]; + u8 ht40_2s_tx_power_idx_diff[3]; + u8 ht20_tx_power_idx_diff[3]; + u8 ofdm_tx_power_idx_diff[3]; + u8 ht40_max_power_offset[3]; + u8 ht20_max_power_offset[3]; + u8 channel_plan; + u8 thermal_meter; + u8 rf_option[5]; + u8 version; + u8 oem_id; + u8 regulatory; +}; + +struct tx_power_struct { + u8 cck[RTL92C_MAX_PATH_NUM][CHANNEL_MAX_NUMBER]; + u8 ht40_1s[RTL92C_MAX_PATH_NUM][CHANNEL_MAX_NUMBER]; + u8 ht40_2s[RTL92C_MAX_PATH_NUM][CHANNEL_MAX_NUMBER]; + u8 ht20_diff[RTL92C_MAX_PATH_NUM][CHANNEL_MAX_NUMBER]; + u8 legacy_ht_diff[RTL92C_MAX_PATH_NUM][CHANNEL_MAX_NUMBER]; + u8 legacy_ht_txpowerdiff; + u8 groupht20[RTL92C_MAX_PATH_NUM][CHANNEL_MAX_NUMBER]; + u8 groupht40[RTL92C_MAX_PATH_NUM][CHANNEL_MAX_NUMBER]; + u8 pwrgroup_cnt; + u32 mcs_original_offset[4][16]; +}; + +enum _ANT_DIV_TYPE { + NO_ANTDIV = 0xFF, + CG_TRX_HW_ANTDIV = 0x01, + CGCS_RX_HW_ANTDIV = 0x02, + FIXED_HW_ANTDIV = 0x03, + CG_TRX_SMART_ANTDIV = 0x04, + CGCS_RX_SW_ANTDIV = 0x05, +}; + +u32 rtl8723be_phy_query_rf_reg(struct ieee80211_hw *hw, + enum radio_path rfpath, + u32 regaddr, u32 bitmask); +void rtl8723be_phy_set_rf_reg(struct ieee80211_hw *hw, + enum radio_path rfpath, + u32 regaddr, u32 bitmask, u32 data); +bool rtl8723be_phy_mac_config(struct ieee80211_hw *hw); +bool rtl8723be_phy_bb_config(struct ieee80211_hw *hw); +bool rtl8723be_phy_rf_config(struct ieee80211_hw *hw); +void rtl8723be_phy_get_hw_reg_originalvalue(struct ieee80211_hw *hw); +void rtl8723be_phy_get_txpower_level(struct ieee80211_hw *hw, + long *powerlevel); +void rtl8723be_phy_set_txpower_level(struct ieee80211_hw *hw, + u8 channel); +void rtl8723be_phy_scan_operation_backup(struct ieee80211_hw *hw, + u8 operation); +void rtl8723be_phy_set_bw_mode_callback(struct ieee80211_hw *hw); +void rtl8723be_phy_set_bw_mode(struct ieee80211_hw *hw, + enum nl80211_channel_type ch_type); +void rtl8723be_phy_sw_chnl_callback(struct ieee80211_hw *hw); +u8 rtl8723be_phy_sw_chnl(struct ieee80211_hw *hw); +void rtl8723be_phy_iq_calibrate(struct ieee80211_hw *hw, + bool b_recovery); +void rtl23b_phy_ap_calibrate(struct ieee80211_hw *hw, char delta); +void rtl8723be_phy_lc_calibrate(struct ieee80211_hw *hw); +void rtl8723be_phy_set_rfpath_switch(struct ieee80211_hw *hw, bool bmain); +bool rtl8723be_phy_config_rf_with_headerfile(struct ieee80211_hw *hw, + enum radio_path rfpath); +bool rtl8723be_phy_set_io_cmd(struct ieee80211_hw *hw, enum io_type iotype); +bool rtl8723be_phy_set_rf_power_state(struct ieee80211_hw *hw, + enum rf_pwrstate rfpwr_state); +#endif --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723be/pwrseq.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723be/pwrseq.c @@ -0,0 +1,106 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2014 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#include "pwrseqcmd.h" +#include "pwrseq.h" + + +/* drivers should parse below arrays and do the corresponding actions */ +/*3 Power on Array*/ +struct wlan_pwr_cfg rtl8723B_power_on_flow[RTL8723B_TRANS_CARDEMU_TO_ACT_STEPS + + RTL8723B_TRANS_END_STEPS] = { + RTL8723B_TRANS_CARDEMU_TO_ACT + RTL8723B_TRANS_END +}; + +/*3Radio off GPIO Array */ +struct wlan_pwr_cfg rtl8723B_radio_off_flow[RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS + + RTL8723B_TRANS_END_STEPS] = { + RTL8723B_TRANS_ACT_TO_CARDEMU + RTL8723B_TRANS_END +}; + +/*3Card Disable Array*/ +struct wlan_pwr_cfg rtl8723B_card_disable_flow + [RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS + + RTL8723B_TRANS_CARDEMU_TO_PDN_STEPS + + RTL8723B_TRANS_END_STEPS] = { + RTL8723B_TRANS_ACT_TO_CARDEMU + RTL8723B_TRANS_CARDEMU_TO_CARDDIS + RTL8723B_TRANS_END +}; + +/*3 Card Enable Array*/ +struct wlan_pwr_cfg rtl8723B_card_enable_flow + [RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS + + RTL8723B_TRANS_CARDEMU_TO_PDN_STEPS + + RTL8723B_TRANS_END_STEPS] = { + RTL8723B_TRANS_CARDDIS_TO_CARDEMU + RTL8723B_TRANS_CARDEMU_TO_ACT + RTL8723B_TRANS_END +}; + +/*3Suspend Array*/ +struct wlan_pwr_cfg rtl8723B_suspend_flow[RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS + + RTL8723B_TRANS_CARDEMU_TO_SUS_STEPS + + RTL8723B_TRANS_END_STEPS] = { + RTL8723B_TRANS_ACT_TO_CARDEMU + RTL8723B_TRANS_CARDEMU_TO_SUS + RTL8723B_TRANS_END +}; + +/*3 Resume Array*/ +struct wlan_pwr_cfg rtl8723B_resume_flow[RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS + + RTL8723B_TRANS_CARDEMU_TO_SUS_STEPS + + RTL8723B_TRANS_END_STEPS] = { + RTL8723B_TRANS_SUS_TO_CARDEMU + RTL8723B_TRANS_CARDEMU_TO_ACT + RTL8723B_TRANS_END +}; + +/*3HWPDN Array*/ +struct wlan_pwr_cfg rtl8723B_hwpdn_flow[RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS + + RTL8723B_TRANS_CARDEMU_TO_PDN_STEPS + + RTL8723B_TRANS_END_STEPS] = { + RTL8723B_TRANS_ACT_TO_CARDEMU + RTL8723B_TRANS_CARDEMU_TO_PDN + RTL8723B_TRANS_END +}; + +/*3 Enter LPS */ +struct wlan_pwr_cfg rtl8723B_enter_lps_flow[RTL8723B_TRANS_ACT_TO_LPS_STEPS + + RTL8723B_TRANS_END_STEPS] = { + /*FW behavior*/ + RTL8723B_TRANS_ACT_TO_LPS + RTL8723B_TRANS_END +}; + +/*3 Leave LPS */ +struct wlan_pwr_cfg rtl8723B_leave_lps_flow[RTL8723B_TRANS_LPS_TO_ACT_STEPS + + RTL8723B_TRANS_END_STEPS] = { + /*FW behavior*/ + RTL8723B_TRANS_LPS_TO_ACT + RTL8723B_TRANS_END +}; --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723be/pwrseq.h +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723be/pwrseq.h @@ -0,0 +1,305 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2014 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#ifndef __RTL8723BE_PWRSEQ_H__ +#define __RTL8723BE_PWRSEQ_H__ + +#include "pwrseqcmd.h" +/* Check document WM-20130425-JackieLau-RTL8723B_Power_Architecture v05.vsd + * There are 6 HW Power States: + * 0: POFF--Power Off + * 1: PDN--Power Down + * 2: CARDEMU--Card Emulation + * 3: ACT--Active Mode + * 4: LPS--Low Power State + * 5: SUS--Suspend + * + * The transition from different states are defined below + * TRANS_CARDEMU_TO_ACT + * TRANS_ACT_TO_CARDEMU + * TRANS_CARDEMU_TO_SUS + * TRANS_SUS_TO_CARDEMU + * TRANS_CARDEMU_TO_PDN + * TRANS_ACT_TO_LPS + * TRANS_LPS_TO_ACT + * + * TRANS_END + */ +#define RTL8723B_TRANS_CARDEMU_TO_ACT_STEPS 23 +#define RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS 15 +#define RTL8723B_TRANS_CARDEMU_TO_SUS_STEPS 15 +#define RTL8723B_TRANS_SUS_TO_CARDEMU_STEPS 15 +#define RTL8723B_TRANS_CARDEMU_TO_PDN_STEPS 15 +#define RTL8723B_TRANS_PDN_TO_CARDEMU_STEPS 15 +#define RTL8723B_TRANS_ACT_TO_LPS_STEPS 15 +#define RTL8723B_TRANS_LPS_TO_ACT_STEPS 15 +#define RTL8723B_TRANS_END_STEPS 1 + +#define RTL8723B_TRANS_CARDEMU_TO_ACT \ + {0x0020, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \ + PWR_INTF_USB_MSK | PWR_INTF_SDIO_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), BIT(0)}, \ + {0x0067, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \ + PWR_INTF_USB_MSK | PWR_INTF_SDIO_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(4), 0}, \ + {0x0001, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \ + PWR_INTF_USB_MSK | PWR_INTF_SDIO_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_DELAY, 1, PWRSEQ_DELAY_MS}, \ + {0x0000, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \ + PWR_INTF_USB_MSK | PWR_INTF_SDIO_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(5), 0}, \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, (BIT(4)|BIT(3)|BIT(2)), 0}, \ + {0x0075, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0) , 0}, \ + {0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT(1), BIT(1)}, \ + {0x0075, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0) , BIT(0)}, \ + {0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), BIT(0)}, \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(7), 0}, \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, (BIT(4)|BIT(3)), 0}, \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), BIT(0)}, \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT(0), 0}, \ + {0x0010, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(6), BIT(6)}, \ + {0x0049, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(1), BIT(1)}, \ + {0x0063, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(1), BIT(1)}, \ + {0x0062, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(1), 0}, \ + {0x0058, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), BIT(0)}, \ + {0x005A, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(1), BIT(1)}, \ + {0x0068, PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(3), BIT(3)}, \ + {0x0069, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(6), BIT(6)}, + +#define RTL8723B_TRANS_ACT_TO_CARDEMU \ + {0x001F, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0}, \ + {0x004F, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), 0}, \ + {0x0049, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(1), 0}, \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(1), BIT(1)}, \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT(1), 0}, \ + {0x0010, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(6), 0}, \ + {0x0000, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \ + PWR_INTF_USB_MSK | PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, \ + PWR_CMD_WRITE, BIT(5), BIT(5)}, \ + {0x0020, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \ + PWR_INTF_USB_MSK | PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, \ + PWR_CMD_WRITE, BIT(0), 0}, + +#define RTL8723B_TRANS_CARDEMU_TO_SUS \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(4) | BIT(3), (BIT(4) | BIT(3))}, \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \ + PWR_INTF_USB_MSK | PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, \ + PWR_CMD_WRITE, BIT(3) | BIT(4), BIT(3)}, \ + {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(4), BIT(4)}, \ + {0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x20}, \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(3) | BIT(4), BIT(3) | BIT(4)},\ + {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \ + PWR_BASEADDR_SDIO, PWR_CMD_WRITE, BIT(0), BIT(0)}, \ + {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \ + PWR_BASEADDR_SDIO, PWR_CMD_POLLING, BIT(1), 0}, + +#define RTL8723B_TRANS_SUS_TO_CARDEMU \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(3) | BIT(7), 0}, \ + {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \ + PWR_BASEADDR_SDIO, PWR_CMD_WRITE, BIT(0), 0}, \ + {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \ + PWR_BASEADDR_SDIO, PWR_CMD_POLLING, BIT(1), BIT(1)}, \ + {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(4), 0}, \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(3)|BIT(4), 0}, + +#define RTL8723B_TRANS_CARDEMU_TO_CARDDIS \ + {0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x20}, \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \ + PWR_INTF_USB_MSK | PWR_INTF_SDIO_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(3)|BIT(4), BIT(3)}, \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(2), BIT(2)}, \ + {0x004A, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), 1}, \ + {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(4), BIT(4)}, \ + {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \ + PWR_BASEADDR_SDIO, PWR_CMD_WRITE, BIT(0), BIT(0)}, \ + {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \ + PWR_BASEADDR_SDIO, PWR_CMD_POLLING, BIT(1), 0}, + +#define RTL8723B_TRANS_CARDDIS_TO_CARDEMU \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(3) | BIT(7), 0}, \ + {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \ + PWR_BASEADDR_SDIO, PWR_CMD_WRITE, BIT(0), 0}, \ + {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \ + PWR_BASEADDR_SDIO, PWR_CMD_POLLING, BIT(1), BIT(1)}, \ + {0x004A, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), 0}, \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(3)|BIT(4), 0}, \ + {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(4), 0}, \ + {0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0}, + +#define RTL8723B_TRANS_CARDEMU_TO_PDN \ + {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(4), BIT(4)}, \ + {0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \ + PWR_INTF_SDIO_MSK | PWR_INTF_USB_MSK, PWR_BASEADDR_MAC, \ + PWR_CMD_WRITE, 0xFF, 0x20}, \ + {0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), 0}, \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(7), BIT(7)}, + +#define RTL8723B_TRANS_PDN_TO_CARDEMU \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(7), 0}, + +#define RTL8723B_TRANS_ACT_TO_LPS \ + {0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0xFF}, \ + {0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0xFF}, \ + {0x05F8, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_POLLING, 0xFF, 0}, \ + {0x05F9, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_POLLING, 0xFF, 0}, \ + {0x05FA, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_POLLING, 0xFF, 0}, \ + {0x05FB, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_POLLING, 0xFF, 0}, \ + {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), 0}, \ + {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_DELAY, 0, PWRSEQ_DELAY_US}, \ + {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(1), 0}, \ + {0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x03}, \ + {0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(1), 0}, \ + {0x0093, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x00}, \ + {0x0553, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(5), BIT(5)}, + +#define RTL8723B_TRANS_LPS_TO_ACT \ + {0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \ + PWR_BASEADDR_SDIO, PWR_CMD_WRITE, 0xFF, 0x84}, \ + {0xFE58, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x84}, \ + {0x0361, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x84}, \ + {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_DELAY, 0, PWRSEQ_DELAY_MS}, \ + {0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(4), 0}, \ + {0x0109, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT(7), 0}, \ + {0x0029, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(6)|BIT(7), 0}, \ + {0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(1), BIT(1)}, \ + {0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0xFF}, \ + {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(1) | BIT(0), BIT(1) | BIT(0)}, \ + {0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ + PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0}, + +#define RTL8723B_TRANS_END \ + {0xFFFF, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, 0, \ + PWR_CMD_END, 0, 0}, + +extern struct wlan_pwr_cfg rtl8723B_power_on_flow + [RTL8723B_TRANS_CARDEMU_TO_ACT_STEPS + + RTL8723B_TRANS_END_STEPS]; +extern struct wlan_pwr_cfg rtl8723B_radio_off_flow + [RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS + + RTL8723B_TRANS_END_STEPS]; +extern struct wlan_pwr_cfg rtl8723B_card_disable_flow + [RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS + + RTL8723B_TRANS_CARDEMU_TO_PDN_STEPS + + RTL8723B_TRANS_END_STEPS]; +extern struct wlan_pwr_cfg rtl8723B_card_enable_flow + [RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS + + RTL8723B_TRANS_CARDEMU_TO_PDN_STEPS + + RTL8723B_TRANS_END_STEPS]; +extern struct wlan_pwr_cfg rtl8723B_suspend_flow + [RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS + + RTL8723B_TRANS_CARDEMU_TO_SUS_STEPS + + RTL8723B_TRANS_END_STEPS]; +extern struct wlan_pwr_cfg rtl8723B_resume_flow + [RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS + + RTL8723B_TRANS_CARDEMU_TO_SUS_STEPS + + RTL8723B_TRANS_END_STEPS]; +extern struct wlan_pwr_cfg rtl8723B_hwpdn_flow + [RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS + + RTL8723B_TRANS_CARDEMU_TO_PDN_STEPS + + RTL8723B_TRANS_END_STEPS]; +extern struct wlan_pwr_cfg rtl8723B_enter_lps_flow + [RTL8723B_TRANS_ACT_TO_LPS_STEPS + + RTL8723B_TRANS_END_STEPS]; +extern struct wlan_pwr_cfg rtl8723B_leave_lps_flow + [RTL8723B_TRANS_LPS_TO_ACT_STEPS + + RTL8723B_TRANS_END_STEPS]; + +/* RTL8723 Power Configuration CMDs for PCIe interface */ +#define RTL8723_NIC_PWR_ON_FLOW rtl8723B_power_on_flow +#define RTL8723_NIC_RF_OFF_FLOW rtl8723B_radio_off_flow +#define RTL8723_NIC_DISABLE_FLOW rtl8723B_card_disable_flow +#define RTL8723_NIC_ENABLE_FLOW rtl8723B_card_enable_flow +#define RTL8723_NIC_SUSPEND_FLOW rtl8723B_suspend_flow +#define RTL8723_NIC_RESUME_FLOW rtl8723B_resume_flow +#define RTL8723_NIC_PDN_FLOW rtl8723B_hwpdn_flow +#define RTL8723_NIC_LPS_ENTER_FLOW rtl8723B_enter_lps_flow +#define RTL8723_NIC_LPS_LEAVE_FLOW rtl8723B_leave_lps_flow + +#endif --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723be/pwrseqcmd.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723be/pwrseqcmd.c @@ -0,0 +1,140 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2014 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#include "pwrseq.h" + +/* 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. + */ +bool rtlbe_hal_pwrseqcmdparsing(struct rtl_priv *rtlpriv, u8 cut_version, + u8 fab_version, u8 interface_type, + struct wlan_pwr_cfg pwrcfgcmd[]) + +{ + struct wlan_pwr_cfg pwr_cfg_cmd = {0}; + bool b_polling_bit = false; + u32 ary_idx = 0; + u8 value = 0; + u32 offset = 0; + u32 polling_count = 0; + u32 max_polling_cnt = 5000; + + do { + pwr_cfg_cmd = pwrcfgcmd[ary_idx]; + RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, + "rtlbe_hal_pwrseqcmdparsing(): " + "offset(%#x),cut_msk(%#x), fab_msk(%#x)," + "interface_msk(%#x), base(%#x), " + "cmd(%#x), msk(%#x), value(%#x)\n", + GET_PWR_CFG_OFFSET(pwr_cfg_cmd), + GET_PWR_CFG_CUT_MASK(pwr_cfg_cmd), + GET_PWR_CFG_FAB_MASK(pwr_cfg_cmd), + GET_PWR_CFG_INTF_MASK(pwr_cfg_cmd), + GET_PWR_CFG_BASE(pwr_cfg_cmd), + GET_PWR_CFG_CMD(pwr_cfg_cmd), + GET_PWR_CFG_MASK(pwr_cfg_cmd), + GET_PWR_CFG_VALUE(pwr_cfg_cmd)); + + if ((GET_PWR_CFG_FAB_MASK(pwr_cfg_cmd)&fab_version) && + (GET_PWR_CFG_CUT_MASK(pwr_cfg_cmd)&cut_version) && + (GET_PWR_CFG_INTF_MASK(pwr_cfg_cmd)&interface_type)) { + switch (GET_PWR_CFG_CMD(pwr_cfg_cmd)) { + case PWR_CMD_READ: + RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, + "rtlbe_hal_pwrseqcmdparsing(): " + "PWR_CMD_READ\n"); + break; + case PWR_CMD_WRITE: + RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, + "rtlbe_hal_pwrseqcmdparsing(): " + "PWR_CMD_WRITE\n"); + offset = GET_PWR_CFG_OFFSET(pwr_cfg_cmd); + + /*Read the value from system register*/ + value = rtl_read_byte(rtlpriv, offset); + value &= (~(GET_PWR_CFG_MASK(pwr_cfg_cmd))); + value = value | (GET_PWR_CFG_VALUE(pwr_cfg_cmd) + & GET_PWR_CFG_MASK(pwr_cfg_cmd)); + + /*Write the value back to sytem register*/ + rtl_write_byte(rtlpriv, offset, value); + break; + case PWR_CMD_POLLING: + RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, + "rtlbe_hal_pwrseqcmdparsing(): " + "PWR_CMD_POLLING\n"); + b_polling_bit = false; + offset = GET_PWR_CFG_OFFSET(pwr_cfg_cmd); + + do { + value = rtl_read_byte(rtlpriv, offset); + + value &= GET_PWR_CFG_MASK(pwr_cfg_cmd); + if (value == + (GET_PWR_CFG_VALUE(pwr_cfg_cmd) & + GET_PWR_CFG_MASK(pwr_cfg_cmd))) + b_polling_bit = true; + else + udelay(10); + + if (polling_count++ > max_polling_cnt) + return false; + + } while (!b_polling_bit); + break; + case PWR_CMD_DELAY: + RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, + "rtlbe_hal_pwrseqcmdparsing(): " + "PWR_CMD_DELAY\n"); + if (GET_PWR_CFG_VALUE(pwr_cfg_cmd) == + PWRSEQ_DELAY_US) + udelay(GET_PWR_CFG_OFFSET(pwr_cfg_cmd)); + else + mdelay(GET_PWR_CFG_OFFSET(pwr_cfg_cmd)); + break; + case PWR_CMD_END: + RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, + "rtlbe_hal_pwrseqcmdparsing(): " + "PWR_CMD_END\n"); + return true; + break; + default: + RT_ASSERT(false, + "rtlbe_hal_pwrseqcmdparsing(): " + "Unknown CMD!!\n"); + break; + } + } + + ary_idx++; + } while (1); + + return true; +} --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723be/pwrseqcmd.h +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723be/pwrseqcmd.h @@ -0,0 +1,95 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2014 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#ifndef __RTL8723BE_PWRSEQCMD_H__ +#define __RTL8723BE_PWRSEQCMD_H__ + +#include "../wifi.h" +/*---------------------------------------------*/ +/*The value of cmd: 4 bits */ +/*---------------------------------------------*/ +#define PWR_CMD_READ 0x00 +#define PWR_CMD_WRITE 0x01 +#define PWR_CMD_POLLING 0x02 +#define PWR_CMD_DELAY 0x03 +#define PWR_CMD_END 0x04 + +/* 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 + +#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)) + +#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)) + +#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 + + +enum pwrseq_delay_unit { + PWRSEQ_DELAY_US, + PWRSEQ_DELAY_MS, +}; + +struct wlan_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; + +}; + +#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 + +bool rtlbe_hal_pwrseqcmdparsing(struct rtl_priv *rtlpriv, u8 cut_version, + u8 fab_version, u8 interface_type, + struct wlan_pwr_cfg pwrcfgcmd[]); + +#endif --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723be/reg.h +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723be/reg.h @@ -0,0 +1,2293 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2014 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#ifndef __RTL8723BE_REG_H__ +#define __RTL8723BE_REG_H__ + +#define TXPKT_BUF_SELECT 0x69 +#define RXPKT_BUF_SELECT 0xA5 +#define DISABLE_TRXPKT_BUF_ACCESS 0x0 + +#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 +/* 1.5v for 8188EE test chip, 1.4v for MP chip */ +#define REG_AFE_LDO_CTRL 0x0027 +#define REG_AFE_PLL_CTRL 0x0028 +#define REG_MAC_PHY_CTRL 0x002c +#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_FSIMR 0x0050 +#define REG_FSISR 0x0054 +#define REG_HSIMR 0x0058 +#define REG_HSISR 0x005c +#define REG_GPIO_PIN_CTRL_2 0x0060 +#define REG_GPIO_IO_SEL_2 0x0062 +#define REG_MULTI_FUNC_CTRL 0x0068 +#define REG_GPIO_OUTPUT 0x006c +#define REG_AFE_XTAL_CTRL_EXT 0x0078 +#define REG_XCK_OUT_CTRL 0x007c +#define REG_MCUFWDL 0x0080 +#define REG_WOL_EVENT 0x0081 +#define REG_MCUTSTCFG 0x0084 + + +#define REG_HIMR 0x00B0 +#define REG_HISR 0x00B4 +#define REG_HIMRE 0x00B8 +#define REG_HISRE 0x00BC + +#define REG_EFUSE_ACCESS 0x00CF + +#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 +#define REG_SYS_CFG1 0x00F0 +#define REG_ROM_VERSION 0x00FD + +#define REG_CR 0x0100 +#define REG_PBP 0x0104 +#define REG_PKT_BUFF_ACCESS_CTRL 0x0106 +#define REG_TRXDMA_CTRL 0x010C +#define REG_TRXFF_BNDY 0x0114 +#define REG_TRXFF_STATUS 0x0118 +#define REG_RXFF_PTR 0x011C + +#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_RXPKTBUF_CTRL (REG_PKTBUF_DBG_CTRL + 2) + +#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_32K_CTRL 0x0194 +#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 + +#define REG_HMEBOX_EXT_0 0x01F0 +#define REG_HMEBOX_EXT_1 0x01F4 +#define REG_HMEBOX_EXT_2 0x01F8 +#define REG_HMEBOX_EXT_3 0x01FC + +#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 + +#define REG_RXDMA_AGG_PG_TH 0x0280 +/* FW shall update this register before FW write RXPKT_RELEASE_POLL to 1 */ +#define REG_FW_UPD_RDPTR 0x0284 +/* Control the RX DMA.*/ +#define REG_RXDMA_CONTROL 0x0286 +/* The number of packets in RXPKTBUF. */ +#define REG_RXPKT_NUM 0x0287 + +#define REG_PCIE_CTRL_REG 0x0300 +#define REG_INT_MIG 0x0304 +#define REG_BCNQ_DESA 0x0308 +#define REG_HQ_DESA 0x0310 +#define REG_MGQ_DESA 0x0318 +#define REG_VOQ_DESA 0x0320 +#define REG_VIQ_DESA 0x0328 +#define REG_BEQ_DESA 0x0330 +#define REG_BKQ_DESA 0x0338 +#define REG_RX_DESA 0x0340 + +#define REG_DBI 0x0348 +#define REG_MDIO 0x0354 +#define REG_DBG_SEL 0x0360 +#define REG_PCIE_HRPWM 0x0361 +#define REG_PCIE_HCPWM 0x0363 +#define REG_UART_CTRL 0x0364 +#define REG_WATCH_DOG 0x0368 +#define REG_UART_TX_DESA 0x0370 +#define REG_UART_RX_DESA 0x0378 + + +#define REG_HDAQ_DESA_NODEF 0x0000 +#define REG_CMDQ_DESA_NODEF 0x0000 + +#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_TXPKT_EMPTY 0x041A + + +#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_MULTI_BCNQ_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_AMPDU_MAX_TIME 0x0456 +#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_POWER_STATUS 0x04A4 +#define REG_POWER_STAGE1 0x04B4 +#define REG_POWER_STAGE2 0x04B8 +#define REG_PKT_LIFE_TIME 0x04C0 +#define REG_STBC_SETTING 0x04C4 +#define REG_PROT_MODE_CTRL 0x04C8 +#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_TX_RPT_CTRL 0x04EC +#define REG_TX_RPT_TIME 0x04F0 +#define REG_DUMMY 0x04FC + +#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_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_USTIME_TSF 0x0551 +#define REG_MBID_NUM 0x0552 +#define REG_DUAL_TSF_RST 0x0553 +#define REG_BCN_INTERVAL 0x0554 +#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_INIT_TSFTR 0x0564 +#define REG_SECONDARY_CCA_CTRL 0x0577 +#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_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 + +#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_TRXPTCL_CTL 0x0668 + +#define REG_CAMCMD 0x0670 +#define REG_CAMWRITE 0x0674 +#define REG_CAMREAD 0x0678 +#define REG_CAMDBG 0x067C +#define REG_SECCFG 0x0680 + +#define REG_WOW_CTRL 0x0690 +#define REG_PSSTATUS 0x0691 +#define REG_PS_RX_INFO 0x0692 +#define REG_UAPSD_TID 0x0693 +#define REG_LPNAV_CTRL 0x0694 +#define REG_WKFMCAM_NUM 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_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_TEST_USB_TXQS 0xFE48 +#define REG_TEST_SIE_VID 0xFE60 +#define REG_TEST_SIE_PID 0xFE62 +#define REG_TEST_SIE_OPTIONAL 0xFE64 +#define REG_TEST_SIE_CHIRP_K 0xFE65 +#define REG_TEST_SIE_PHY 0xFE66 +#define REG_TEST_SIE_MAC_ADDR 0xFE70 +#define REG_TEST_SIE_STRING 0xFE80 + +#define REG_NORMAL_SIE_VID 0xFE60 +#define REG_NORMAL_SIE_PID 0xFE62 +#define REG_NORMAL_SIE_OPTIONAL 0xFE64 +#define REG_NORMAL_SIE_EP 0xFE65 +#define REG_NORMAL_SIE_PHY 0xFE68 +#define REG_NORMAL_SIE_MAC_ADDR 0xFE70 +#define REG_NORMAL_SIE_STRING 0xFE80 + +#define CR9346 REG_9346CR +#define MSR (REG_CR + 2) +#define ISR REG_HISR +#define TSFR REG_TSFTR + +#define MACIDR0 REG_MACID +#define MACIDR4 (REG_MACID + 4) + +#define PBP REG_PBP + +#define IDR0 MACIDR0 +#define IDR4 MACIDR4 + +#define UNUSED_REGISTER 0x1BF +#define DCAM UNUSED_REGISTER +#define PSR UNUSED_REGISTER +#define BBADDR UNUSED_REGISTER +#define PHYDATAR UNUSED_REGISTER + +#define INVALID_BBRF_VALUE 0x12345678 + +#define MAX_MSS_DENSITY_2T 0x13 +#define MAX_MSS_DENSITY_1T 0x0A + +#define CMDEEPROM_EN BIT(5) +#define CMDEEPROM_SEL BIT(4) +#define CMD9346CR_9356SEL BIT(4) +#define AUTOLOAD_EEPROM (CMDEEPROM_EN | CMDEEPROM_SEL) +#define AUTOLOAD_EFUSE CMDEEPROM_EN + +#define GPIOSEL_GPIO 0 +#define GPIOSEL_ENBT BIT(5) + +#define GPIO_IN REG_GPIO_PIN_CTRL +#define GPIO_OUT (REG_GPIO_PIN_CTRL + 1) +#define GPIO_IO_SEL (REG_GPIO_PIN_CTRL + 2) +#define GPIO_MOD (REG_GPIO_PIN_CTRL + 3) + +/* 8723/8188E Host System Interrupt Mask Register (offset 0x58, 32 byte) */ +#define HSIMR_GPIO12_0_INT_EN BIT(0) +#define HSIMR_SPS_OCP_INT_EN BIT(5) +#define HSIMR_RON_INT_EN BIT(6) +#define HSIMR_PDN_INT_EN BIT(7) +#define HSIMR_GPIO9_INT_EN BIT(25) + +/* 8723/8188E Host System Interrupt Status Register (offset 0x5C, 32 byte) */ + +#define HSISR_GPIO12_0_INT BIT(0) +#define HSISR_SPS_OCP_INT BIT(5) +#define HSISR_RON_INT_EN BIT(6) +#define HSISR_PDNINT BIT(7) +#define HSISR_GPIO9_INT BIT(25) + +#define MSR_NOLINK 0x00 +#define MSR_ADHOC 0x01 +#define MSR_INFRA 0x02 +#define MSR_AP 0x03 + +#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 BIT(0) +#define RRSR_2M BIT(1) +#define RRSR_5_5M BIT(2) +#define RRSR_11M BIT(3) +#define RRSR_6M BIT(4) +#define RRSR_9M BIT(5) +#define RRSR_12M BIT(6) +#define RRSR_18M BIT(7) +#define RRSR_24M BIT(8) +#define RRSR_36M BIT(9) +#define RRSR_48M BIT(10) +#define RRSR_54M BIT(11) +#define RRSR_MCS0 BIT(12) +#define RRSR_MCS1 BIT(13) +#define RRSR_MCS2 BIT(14) +#define RRSR_MCS3 BIT(15) +#define RRSR_MCS4 BIT(16) +#define RRSR_MCS5 BIT(17) +#define RRSR_MCS6 BIT(18) +#define RRSR_MCS7 BIT(19) +#define BRSR_ACKSHORTPMB BIT(23) + +#define RATR_1M 0x00000001 +#define RATR_2M 0x00000002 +#define RATR_55M 0x00000004 +#define RATR_11M 0x00000008 +#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 +#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 +#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 + +#define RATE_1M BIT(0) +#define RATE_2M BIT(1) +#define RATE_5_5M BIT(2) +#define RATE_11M BIT(3) +#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) +#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) +#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) + +#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) + +#define BW_OPMODE_20MHZ BIT(2) +#define BW_OPMODE_5G BIT(1) +#define BW_OPMODE_11J BIT(0) + +#define CAM_VALID BIT(15) +#define CAM_NOTVALID 0x0000 +#define CAM_USEDK BIT(5) + +#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_WRITE BIT(16) +#define CAM_READ 0x00000000 +#define CAM_POLLINIG BIT(31) + +#define SCR_USEDK 0x01 +#define SCR_TXSEC_ENABLE 0x02 +#define SCR_RXSEC_ENABLE 0x04 + +#define WOW_PMEN BIT(0) +#define WOW_WOMEN BIT(1) +#define WOW_MAGIC BIT(2) +#define WOW_UWF BIT(3) + +/********************************************* +* 8723BE IMR/ISR bits +**********************************************/ +#define IMR_DISABLED 0x0 +/* IMR DW0(0x0060-0063) Bit 0-31 */ +#define IMR_TXCCK BIT(30) /* TXRPT interrupt when + * CCX bit of the packet is set + */ +#define IMR_PSTIMEOUT BIT(29) /* Power Save Time Out Interrupt */ +#define IMR_GTINT4 BIT(28) /* When GTIMER4 expires, + * this bit is set to 1 + */ +#define IMR_GTINT3 BIT(27) /* When GTIMER3 expires, + * this bit is set to 1 + */ +#define IMR_TBDER BIT(26) /* Transmit Beacon0 Error */ +#define IMR_TBDOK BIT(25) /* Transmit Beacon0 OK */ +#define IMR_TSF_BIT32_TOGGLE BIT(24) /* TSF Timer BIT32 toggle + * indication interrupt + */ +#define IMR_BCNDMAINT0 BIT(20) /* Beacon DMA Interrupt 0 */ +#define IMR_BCNDOK0 BIT(16) /* Beacon Queue DMA OK0 */ +#define IMR_HSISR_IND_ON_INT BIT(15) /* HSISR Indicator (HSIMR & HSISR is + * true, this bit is set to 1) + */ +#define IMR_BCNDMAINT_E BIT(14) /* Beacon DMA Interrupt + * Extension for Win7 + */ +#define IMR_ATIMEND BIT(12) /* CTWidnow End or ATIM Window End */ +#define IMR_HISR1_IND_INT BIT(11) /* HISR1 Indicator (HISR1 & HIMR1 is + * true, this bit is set to 1) + */ +#define IMR_C2HCMD BIT(10) /* CPU to Host Command INT Status, + * Write 1 clear + */ +#define IMR_CPWM2 BIT(9) /* CPU power Mode exchange INT Status, + * Write 1 clear + */ +#define IMR_CPWM BIT(8) /* CPU power Mode exchange INT Status, + * Write 1 clear + */ +#define IMR_HIGHDOK BIT(7) /* High Queue DMA OK */ +#define IMR_MGNTDOK BIT(6) /* Management Queue DMA OK */ +#define IMR_BKDOK BIT(5) /* AC_BK DMA OK */ +#define IMR_BEDOK BIT(4) /* AC_BE DMA OK */ +#define IMR_VIDOK BIT(3) /* AC_VI DMA OK */ +#define IMR_VODOK BIT(2) /* AC_VO DMA OK */ +#define IMR_RDU BIT(1) /* Rx Descriptor Unavailable */ +#define IMR_ROK BIT(0) /* Receive DMA OK */ + +/* IMR DW1(0x00B4-00B7) Bit 0-31 */ +#define IMR_BCNDMAINT7 BIT(27) /* Beacon DMA Interrupt 7 */ +#define IMR_BCNDMAINT6 BIT(26) /* Beacon DMA Interrupt 6 */ +#define IMR_BCNDMAINT5 BIT(25) /* Beacon DMA Interrupt 5 */ +#define IMR_BCNDMAINT4 BIT(24) /* Beacon DMA Interrupt 4 */ +#define IMR_BCNDMAINT3 BIT(23) /* Beacon DMA Interrupt 3 */ +#define IMR_BCNDMAINT2 BIT(22) /* Beacon DMA Interrupt 2 */ +#define IMR_BCNDMAINT1 BIT(21) /* Beacon DMA Interrupt 1 */ +#define IMR_BCNDOK7 BIT(20) /* Beacon Queue DMA OK Interrup 7 */ +#define IMR_BCNDOK6 BIT(19) /* Beacon Queue DMA OK Interrup 6 */ +#define IMR_BCNDOK5 BIT(18) /* Beacon Queue DMA OK Interrup 5 */ +#define IMR_BCNDOK4 BIT(17) /* Beacon Queue DMA OK Interrup 4 */ +#define IMR_BCNDOK3 BIT(16) /* Beacon Queue DMA OK Interrup 3 */ +#define IMR_BCNDOK2 BIT(15) /* Beacon Queue DMA OK Interrup 2 */ +#define IMR_BCNDOK1 BIT(14) /* Beacon Queue DMA OK Interrup 1 */ +#define IMR_ATIMEND_E BIT(13) /* ATIM Window End Extension for Win7 */ +#define IMR_TXERR BIT(11) /* Tx Error Flag Interrupt Status, + * write 1 clear. + */ +#define IMR_RXERR BIT(10) /* Rx Error Flag INT Status, + * Write 1 clear + */ +#define IMR_TXFOVW BIT(9) /* Transmit FIFO Overflow */ +#define IMR_RXFOVW BIT(8) /* Receive FIFO Overflow */ + +#define HWSET_MAX_SIZE 512 +#define EFUSE_MAX_SECTION 64 +#define EFUSE_REAL_CONTENT_LEN 256 +#define EFUSE_OOB_PROTECT_BYTES 18 /* PG data exclude header, + * dummy 7 bytes frome CP test + * and reserved 1byte. + */ + +#define EEPROM_DEFAULT_TSSI 0x0 +#define EEPROM_DEFAULT_TXPOWERDIFF 0x0 +#define EEPROM_DEFAULT_CRYSTALCAP 0x5 +#define EEPROM_DEFAULT_BOARDTYPE 0x02 +#define EEPROM_DEFAULT_TXPOWER 0x1010 +#define EEPROM_DEFAULT_HT2T_TXPWR 0x10 + +#define EEPROM_DEFAULT_LEGACYHTTXPOWERDIFF 0x3 +#define EEPROM_DEFAULT_THERMALMETER 0x18 +#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 +#define EEPROM_DEFAULT_LEGACYHTTXPOWERDIFF 0x3 +#define EEPROM_DEFAULT_HT40_PWRMAXOFFSET 0 +#define EEPROM_DEFAULT_HT20_PWRMAXOFFSET 0 + +#define RF_OPTION1 0x79 +#define RF_OPTION2 0x7A +#define RF_OPTION3 0x7B +#define RF_OPTION4 0xC3 + +#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_CHANNEL_PLAN_BY_HW_MASK 0x80 + +#define EEPROM_CID_DEFAULT 0x0 +#define EEPROM_CID_TOSHIBA 0x4 +#define EEPROM_CID_CCX 0x10 +#define EEPROM_CID_QMI 0x0D +#define EEPROM_CID_WHQL 0xFE + +#define RTL8723BE_EEPROM_ID 0x8129 + +#define EEPROM_HPON 0x02 +#define EEPROM_CLK 0x06 +#define EEPROM_TESTR 0x08 + + +#define EEPROM_TXPOWERCCK 0x10 +#define EEPROM_TXPOWERHT40_1S 0x16 +#define EEPROM_TXPOWERHT20DIFF 0x1B +#define EEPROM_TXPOWER_OFDMDIFF 0x1B + + + +#define EEPROM_TX_PWR_INX 0x10 + +#define EEPROM_CHANNELPLAN 0xB8 +#define EEPROM_XTAL_8723BE 0xB9 +#define EEPROM_THERMAL_METER_88E 0xBA +#define EEPROM_IQK_LCK_88E 0xBB + +#define EEPROM_RF_BOARD_OPTION_88E 0xC1 +#define EEPROM_RF_FEATURE_OPTION_88E 0xC2 +#define EEPROM_RF_BT_SETTING_88E 0xC3 +#define EEPROM_VERSION 0xC4 +#define EEPROM_CUSTOMER_ID 0xC5 +#define EEPROM_RF_ANTENNA_OPT_88E 0xC9 + +#define EEPROM_MAC_ADDR 0xD0 +#define EEPROM_VID 0xD6 +#define EEPROM_DID 0xD8 +#define EEPROM_SVID 0xDA +#define EEPROM_SMID 0xDC + +#define STOPBECON BIT(6) +#define STOPHIGHT BIT(5) +#define STOPMGT BIT(4) +#define STOPVO BIT(3) +#define STOPVI BIT(2) +#define STOPBE BIT(1) +#define STOPBK BIT(0) + +#define RCR_APPFCS BIT(31) +#define RCR_APP_MIC BIT(30) +#define RCR_APP_ICV BIT(29) +#define RCR_APP_PHYST_RXFF BIT(28) +#define RCR_APP_BA_SSN BIT(27) +#define RCR_ENMBID BIT(24) +#define RCR_LSIGEN BIT(23) +#define RCR_MFBEN BIT(22) +#define RCR_HTC_LOC_CTRL BIT(14) +#define RCR_AMF BIT(13) +#define RCR_ACF BIT(12) +#define RCR_ADF BIT(11) +#define RCR_AICV BIT(9) +#define RCR_ACRC32 BIT(8) +#define RCR_CBSSID_BCN BIT(7) +#define RCR_CBSSID_DATA BIT(6) +#define RCR_CBSSID RCR_CBSSID_DATA +#define RCR_APWRMGT BIT(5) +#define RCR_ADD3 BIT(4) +#define RCR_AB BIT(3) +#define RCR_AM BIT(2) +#define RCR_APM BIT(1) +#define RCR_AAP BIT(0) +#define RCR_MXDMA_OFFSET 8 +#define RCR_FIFO_OFFSET 13 + +#define RSV_CTRL 0x001C +#define RD_CTRL 0x0524 + +#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 SW18_FPWM BIT(3) + +#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) + +#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) + +#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) + +#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) + +#define BOOT_FROM_EEPROM BIT(4) +#define EEPROM_EN BIT(5) + +#define AFE_BGEN BIT(0) +#define AFE_MBEN BIT(1) +#define MAC_ID_EN BIT(7) + +#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) + +#define RF_EN BIT(0) +#define RF_RSTB BIT(1) +#define RF_SDMRSTB BIT(2) + +#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) + +#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) + +#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) + +#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) + +#define ALD_EN BIT(18) +#define EF_PD BIT(19) +#define EF_FLAG BIT(31) + +#define EF_TRPT BIT(7) +#define LDOE25_EN BIT(31) + +#define RSM_EN BIT(0) +#define TIMER_EN BIT(4) + +#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) + +#define LED0PL BIT(4) +#define LED1PL BIT(12) +#define LED0DIS BIT(7) + +#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) + +#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 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 +#define CHIP_VER_RTL_SHIFT 12 + +#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) + +#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 + +#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 + +#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) + +#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 + +#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) + +#define BB_WRITE_READ_MASK (BIT(31) | BIT(30)) +#define BB_WRITE_EN BIT(30) +#define BB_READ_EN BIT(31) + +#define _HPQ(x) ((x) & 0xFF) +#define _LPQ(x) (((x) & 0xFF) << 8) +#define _PUBQ(x) (((x) & 0xFF) << 16) +#define _NPQ(x) ((x) & 0xFF) + +#define HPQ_PUBLIC_DIS BIT(24) +#define LPQ_PUBLIC_DIS BIT(25) +#define LD_RQPN BIT(31) + +#define BCN_VALID BIT(16) +#define BCN_HEAD(x) (((x) & 0xFF) << 8) +#define BCN_HEAD_MASK 0xFF00 + +#define BLK_DESC_NUM_SHIFT 4 +#define BLK_DESC_NUM_MASK 0xF + +#define DROP_DATA_EN BIT(9) + +#define EN_AMPDU_RTY_NEW BIT(7) + +#define _INIRTSMCS_SEL(x) ((x) & 0x3F) + +#define _SPEC_SIFS_CCK(x) ((x) & 0xFF) +#define _SPEC_SIFS_OFDM(x) (((x) & 0xFF) << 8) + +#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 + +#define USE_SHORT_G1 BIT(20) + +#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) + +#define RETRY_LIMIT_SHORT_SHIFT 8 +#define RETRY_LIMIT_LONG_SHIFT 0 + +#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) +#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) + +#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) +#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) + +#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 + +#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) + +#define _SIFS_CCK_CTX(x) ((x) & 0xFF) +#define _SIFS_CCK_TRX(x) (((x) & 0xFF) << 8) + +#define _SIFS_OFDM_CTX(x) ((x) & 0xFF) +#define _SIFS_OFDM_TRX(x) (((x) & 0xFF) << 8) + +#define _TBTT_PROHIBIT_HOLD(x) (((x) & 0xFF) << 8) + +#define DIS_EDCA_CNT_DWN BIT(11) + +#define EN_MBSSID BIT(1) +#define EN_TXBCN_RPT BIT(2) +#define EN_BCN_FUNCTION BIT(3) + +#define TSFTR_RST BIT(0) +#define TSFTR1_RST BIT(1) + +#define STOP_BCNQ BIT(6) + +#define DIS_TSF_UDT0_NORMAL_CHIP BIT(4) +#define DIS_TSF_UDT0_TEST_CHIP BIT(5) + +#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) + +#define APSDOFF BIT(6) +#define APSDOFF_STATUS BIT(7) + +#define BW_20MHZ BIT(2) + +#define RATE_BITMAP_ALL 0xFFFFF + +#define RATE_RRSR_CCK_ONLY_1M 0xFFFF1 + +#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) + +#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_DATA 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) + +#define _MIN_SPACE(x) ((x) & 0x7) +#define _SHORT_GI_PADDING(x) (((x) & 0x1F) << 3) + +#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) + +#define SCR_TXUSEDK BIT(0) +#define SCR_RXUSEDK BIT(1) +#define SCR_TXENCENABLE BIT(2) +#define SCR_RXDECENABLE BIT(3) +#define SCR_SKBYA2 BIT(4) +#define SCR_NOSKMC BIT(5) +#define SCR_TXBCUSEDK BIT(6) +#define SCR_RXBCUSEDK BIT(7) + +#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 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 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 + +#define USB_AGG_EN BIT(3) + +#define MAC_ADDR_LEN 6 +#define LAST_ENTRY_OF_TX_PKT_BUFFER 175/*255 88e*/ + +#define POLLING_LLT_THRESHOLD 20 +#define POLLING_READY_TIMEOUT_COUNT 3000 + +#define MAX_MSS_DENSITY_2T 0x13 +#define MAX_MSS_DENSITY_1T 0x0A + +#define EPROM_CMD_OPERATING_MODE_MASK ((1<<7)|(1<<6)) +#define EPROM_CMD_CONFIG 0x3 +#define EPROM_CMD_LOAD 1 + +#define HWSET_MAX_SIZE_92S HWSET_MAX_SIZE + +#define HAL_8192C_HW_GPIO_WPS_BIT BIT(2) + +#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_TXDADATYPE 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 + +#define RFPGA0_RFMOD 0x800 + +#define RFPGA0_TXINFO 0x804 +#define RFPGA0_PSDFUNCTION 0x808 + +#define RFPGA0_TXGAINSTAGE 0x80c + +#define RFPGA0_RFTIMING1 0x810 +#define RFPGA0_RFTIMING2 0x814 + +#define RFPGA0_XA_HSSIPARAMETER1 0x820 +#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 +#define RFPGA0_RFSLEEPUPPARAMETER 0x854 + +#define RFPGA0_XAB_SWITCHCONTROL 0x858 +#define RFPGA0_XCD_SWITCHCONTROL 0x85c + +#define RFPGA0_XA_RFINTERFACEOE 0x860 +#define RFPGA0_XB_RFINTERFACEOE 0x864 + +#define RFPGA0_XAB_RFINTERFACESW 0x870 +#define RFPGA0_XCD_RFINTERFACESW 0x874 + +#define RFPGA0_XAB_RFPARAMETER 0x878 +#define RFPGA0_XCD_RFPARAMETER 0x87c + +#define RFPGA0_ANALOGPARAMETER1 0x880 +#define RFPGA0_ANALOGPARAMETER2 0x884 +#define RFPGA0_ANALOGPARAMETER3 0x888 +#define RFPGA0_ANALOGPARAMETER4 0x88c + +#define RFPGA0_XA_LSSIREADBACK 0x8a0 +#define RFPGA0_XB_LSSIREADBACK 0x8a4 +#define RFPGA0_XC_LSSIREADBACK 0x8a8 +#define RFPGA0_XD_LSSIREADBACK 0x8ac + +#define RFPGA0_PSDREPORT 0x8b4 +#define TRANSCEIVEA_HSPI_READBACK 0x8b8 +#define TRANSCEIVEB_HSPI_READBACK 0x8bc +#define REG_SC_CNT 0x8c4 +#define RFPGA0_XAB_RFINTERFACERB 0x8e0 +#define RFPGA0_XCD_RFINTERFACERB 0x8e4 + +#define RFPGA1_RFMOD 0x900 + +#define RFPGA1_TXBLOCK 0x904 +#define RFPGA1_DEBUGSELECT 0x908 +#define RFPGA1_TXINFO 0x90c + +#define RCCK0_SYSTEM 0xa00 + +#define RCCK0_AFESETTING 0xa04 +#define RCCK0_CCA 0xa08 + +#define RCCK0_RXAGC1 0xa0c +#define RCCK0_RXAGC2 0xa10 + +#define RCCK0_RXHP 0xa14 + +#define RCCK0_DSPPARAMETER1 0xa18 +#define RCCK0_DSPPARAMETER2 0xa1c + +#define RCCK0_TXFILTER1 0xa20 +#define RCCK0_TXFILTER2 0xa24 +#define RCCK0_DEBUGPORT 0xa28 +#define RCCK0_FALSEALARMREPORT 0xa2c +#define RCCK0_TRSSIREPORT 0xa50 +#define RCCK0_RXREPORT 0xa54 +#define RCCK0_FACOUNTERLOWER 0xa5c +#define RCCK0_FACOUNTERUPPER 0xa58 +#define RCCK0_CCA_CNT 0xa60 + + +/* 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 CONFIG_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 + +/*Page C*/ +#define ROFDM0_LSTF 0xc00 + +#define ROFDM0_TRXPATHENABLE 0xc04 +#define ROFDM0_TRMUXPAR 0xc08 +#define ROFDM0_TRSWISOLATION 0xc0c + +#define ROFDM0_XARXAFE 0xc10 +#define ROFDM0_XARXIQIMBALANCE 0xc14 +#define ROFDM0_XBRXAFE 0xc18 +#define ROFDM0_XBRXIQIMBALANCE 0xc1c +#define ROFDM0_XCRXAFE 0xc20 +#define ROFDM0_XCRXIQIMBANLANCE 0xc24 +#define ROFDM0_XDRXAFE 0xc28 +#define ROFDM0_XDRXIQIMBALANCE 0xc2c + +#define ROFDM0_RXDETECTOR1 0xc30 +#define ROFDM0_RXDETECTOR2 0xc34 +#define ROFDM0_RXDETECTOR3 0xc38 +#define ROFDM0_RXDETECTOR4 0xc3c + +#define ROFDM0_RXDSP 0xc40 +#define ROFDM0_CFOANDDAGC 0xc44 +#define ROFDM0_CCADROPTHRESHOLD 0xc48 +#define ROFDM0_ECCATHRESHOLD 0xc4c + +#define ROFDM0_XAAGCCORE1 0xc50 +#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 +#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 + + +#define ROFDM1_LSTF 0xd00 +#define ROFDM1_TRXPATHENABLE 0xd04 + +#define ROFDM1_CF0 0xd08 +#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 +#define ROFDM_PHYCOUNTER2 0xda4 +#define ROFDM_PHYCOUNTER3 0xda8 + +#define ROFDM_SHORTCFOAB 0xdac +#define ROFDM_SHORTCFOCD 0xdb0 +#define ROFDM_LONGCFOAB 0xdb4 +#define ROFDM_LONGCFOCD 0xdb8 +#define ROFDM_TAILCF0AB 0xdbc +#define ROFDM_TAILCF0CD 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 + +#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 + +#define RZEBRA1_HSSIENABLE 0x0 +#define RZEBRA1_TRXENABLE1 0x1 +#define RZEBRA1_TRXENABLE2 0x2 +#define RZEBRA1_AGC 0x4 +#define RZEBRA1_CHARGEPUMP 0x5 +#define RZEBRA1_CHANNEL 0x7 + +#define RZEBRA1_TXGAIN 0x8 +#define RZEBRA1_TXLPF 0x9 +#define RZEBRA1_RXLPF 0xb +#define RZEBRA1_RXHPFCORNER 0xc + +#define RGLOBALCTRL 0 +#define RRTL8256_TXLPF 19 +#define RRTL8256_RXLPF 11 +#define RRTL8258_TXLPF 0x11 +#define RRTL8258_RXLPF 0x13 +#define RRTL8258_RSSILPF 0xa + +#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 +#define RF_CHNLBW 0x18 +#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 +#define RF_SYN_G2 0x26 +#define RF_SYN_G3 0x27 +#define RF_SYN_G4 0x28 +#define RF_SYN_G5 0x29 +#define RF_SYN_G6 0x2A +#define RF_SYN_G7 0x2B +#define RF_SYN_G8 0x2C + +#define RF_RCK_OS 0x30 +#define RF_TXPA_G1 0x31 +#define RF_TXPA_G2 0x32 +#define RF_TXPA_G3 0x33 + +#define RF_TX_BIAS_A 0x35 +#define RF_TX_BIAS_D 0x36 +#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 + +#define RF_WE_LUT 0xEF + +#define BBBRESETB 0x100 +#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 BCCKTXLENGHT 0xffff0000 +#define BCCKTXCRC16 0xffff +#define BCCKTXSTATUS 0x1 +#define BOFDMTXSTATUS 0x2 +#define IS_BB_REG_OFFSET_92S(_offset) \ + ((_offset >= 0x800) && (_offset <= 0xfff)) + +#define BRFMOD 0x1 +#define BJAPANMODE 0x2 +#define BCCKTXSC 0x30 +#define BCCKEN 0x1000000 +#define BOFDMEN 0x2000000 + +#define BOFDMRXADCPHASE 0x10000 +#define BOFDMTXDACPHASE 0x40000 +#define BXATXAGC 0x3f + +#define BXBTXAGC 0xf00 +#define BXCTXAGC 0xf000 +#define BXDTXAGC 0xf0000 + +#define BPASTART 0xf0000000 +#define BTRSTART 0x00f00000 +#define BRFSTART 0x0000f000 +#define BBBSTART 0x000000f0 +#define BBBCCKSTART 0x0000000f +#define BPAEND 0xf +#define BTREND 0x0f000000 +#define BRFEND 0x000f0000 +#define BCCAMASK 0x000000f0 +#define BR2RCCAMASK 0x00000f00 +#define BHSSI_R2TDELAY 0xf8000000 +#define BHSSI_T2RDELAY 0xf80000 +#define BCONTXHSSI 0x400 +#define BIGFROMCCK 0x200 +#define BAGCADDRESS 0x3f +#define BRXHPTX 0x7000 +#define BRXHP2RX 0x38000 +#define BRXHPCCKINI 0xc0000 +#define BAGCTXCODE 0xc00000 +#define BAGCRXCODE 0x300000 + +#define B3WIREDATALENGTH 0x800 +#define B3WIREADDREAALENGTH 0x400 + +#define B3WIRERFPOWERDOWN 0x1 +#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 + +#define BRFSI_TRSW 0x20 +#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 +#define BLSSIREADEDGE 0x80000000 + +#define BLSSIREADBACKDATA 0xfffff + +#define BLSSIREADOKFLAG 0x1000 +#define BCCKSAMPLERATE 0x8 +#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 +#define B80MCLKDELAY 0x18000000 +#define BAFEWATCHDOGENABLE 0x20000000 + +#define BXTALCAP01 0xc0000000 +#define BXTALCAP23 0x3 +#define BXTALCAP92X 0x0f000000 +#define BXTALCAP 0x0f000000 + +#define BINTDIFCLKENABLE 0x400 +#define BEXTSIGCLKENABLE 0x800 +#define BBANDGAP_MBIAS_POWERUP 0x10000 +#define BAD11SH_GAIN 0xc0000 +#define BAD11NPUT_RANGE 0x700000 +#define BAD110P_CURRENT 0x3800000 +#define BLPATH_LOOPBACK 0x4000000 +#define BQPATH_LOOPBACK 0x8000000 +#define BAFE_LOOPBACK 0x10000000 +#define BDA10_SWING 0x7e0 +#define BDA10_REVERSE 0x800 +#define BDA_CLK_SOURCE 0x1000 +#define BDA7INPUT_RANGE 0x6000 +#define BDA7_GAIN 0x38000 +#define BDA7OUTPUT_CM_MODE 0x40000 +#define BDA7INPUT_CM_MODE 0x380000 +#define BDA7CURRENT 0xc00000 +#define BREGULATOR_ADJUST 0x7000000 +#define BAD11POWERUP_ATTX 0x1 +#define BDA10PS_ATTX 0x10 +#define BAD11POWERUP_ATRX 0x100 +#define BDA10PS_ATRX 0x1000 +#define BCCKRX_AGC_FORMAT 0x200 +#define BPSDFFT_SAMPLE_POINT 0xc000 +#define BPSD_AVERAGE_NUM 0x3000 +#define BIQPATH_CONTROL 0xc00 +#define BPSD_FREQ 0x3ff +#define BPSD_ANTENNA_PATH 0x30 +#define BPSD_IQ_SWITCH 0x40 +#define BPSD_RX_TRIGGER 0x400000 +#define BPSD_TX_TRIGGER 0x80000000 +#define BPSD_SINE_TONE_SCALE 0x7f000000 +#define BPSD_REPORT 0xffff + +#define BOFDM_TXSC 0x30000000 +#define BCCK_TXON 0x1 +#define BOFDM_TXON 0x2 +#define BDEBUG_PAGE 0xfff +#define BDEBUG_ITEM 0xff +#define BANTL 0x10 +#define BANT_NONHT 0x100 +#define BANT_HT1 0x1000 +#define BANT_HT2 0x10000 +#define BANT_HT1S1 0x100000 +#define BANT_NONHTS1 0x1000000 + +#define BCCK_BBMODE 0x3 +#define BCCK_TXPOWERSAVING 0x80 +#define BCCK_RXPOWERSAVING 0x40 + +#define BCCK_SIDEBAND 0x10 + +#define BCCK_SCRAMBLE 0x8 +#define BCCK_ANTDIVERSITY 0x8000 +#define BCCK_CARRIER_RECOVERY 0x4000 +#define BCCK_TXRATE 0x3000 +#define BCCK_DCCANCEL 0x0800 +#define BCCK_ISICANCEL 0x0400 +#define BCCK_MATCH_FILTER 0x0200 +#define BCCK_EQUALIZER 0x0100 +#define BCCK_PREAMBLE_DETECT 0x800000 +#define BCCK_FAST_FALSECCA 0x400000 +#define BCCK_CH_ESTSTART 0x300000 +#define BCCK_CCA_COUNT 0x080000 +#define BCCK_CS_LIM 0x070000 +#define BCCK_BIST_MODE 0x80000000 +#define BCCK_CCAMASK 0x40000000 +#define BCCK_TX_DAC_PHASE 0x4 +#define BCCK_RX_ADC_PHASE 0x20000000 +#define BCCKR_CP_MODE 0x0100 +#define BCCK_TXDC_OFFSET 0xf0 +#define BCCK_RXDC_OFFSET 0xf +#define BCCK_CCA_MODE 0xc000 +#define BCCK_FALSECS_LIM 0x3f00 +#define BCCK_CS_RATIO 0xc00000 +#define BCCK_CORGBIT_SEL 0x300000 +#define BCCK_PD_LIM 0x0f0000 +#define BCCK_NEWCCA 0x80000000 +#define BCCK_RXHP_OF_IG 0x8000 +#define BCCK_RXIG 0x7f00 +#define BCCK_LNA_POLARITY 0x800000 +#define BCCK_RX1ST_BAIN 0x7f0000 +#define BCCK_RF_EXTEND 0x20000000 +#define BCCK_RXAGC_SATLEVEL 0x1f000000 +#define BCCK_RXAGC_SATCOUNT 0xe0 +#define BCCKRXRFSETTLE 0x1f +#define BCCK_FIXED_RXAGC 0x8000 +#define BCCK_ANTENNA_POLARITY 0x2000 +#define BCCK_TXFILTER_TYPE 0x0c00 +#define BCCK_RXAGC_REPORTTYPE 0x0300 +#define BCCK_RXDAGC_EN 0x80000000 +#define BCCK_RXDAGC_PERIOD 0x20000000 +#define BCCK_RXDAGC_SATLEVEL 0x1f000000 +#define BCCK_TIMING_RECOVERY 0x800000 +#define BCCK_TXC0 0x3f0000 +#define BCCK_TXC1 0x3f000000 +#define BCCK_TXC2 0x3f +#define BCCK_TXC3 0x3f00 +#define BCCK_TXC4 0x3f0000 +#define BCCK_TXC5 0x3f000000 +#define BCCK_TXC6 0x3f +#define BCCK_TXC7 0x3f00 +#define BCCK_DEBUGPORT 0xff0000 +#define BCCK_DAC_DEBUG 0x0f000000 +#define BCCK_FALSEALARM_ENABLE 0x8000 +#define BCCK_FALSEALARM_READ 0x4000 +#define BCCK_TRSSI 0x7f +#define BCCK_RXAGC_REPORT 0xfe +#define BCCK_RXREPORT_ANTSEL 0x80000000 +#define BCCK_RXREPORT_MFOFF 0x40000000 +#define BCCK_RXREPORT_SQLOSS 0x20000000 +#define BCCK_RXREPORT_PKTLOSS 0x10000000 +#define BCCK_RXREPORT_LOCKEDBIT 0x08000000 +#define BCCK_RXREPORT_RATEERROR 0x04000000 +#define BCCK_RXREPORT_RXRATE 0x03000000 +#define BCCK_RXFA_COUNTER_LOWER 0xff +#define BCCK_RXFA_COUNTER_UPPER 0xff000000 +#define BCCK_RXHPAGC_START 0xe000 +#define BCCK_RXHPAGC_FINAL 0x1c00 +#define BCCK_RXFALSEALARM_ENABLE 0x8000 +#define BCCK_FACOUNTER_FREEZE 0x4000 +#define BCCK_TXPATH_SEL 0x10000000 +#define BCCK_DEFAULT_RXPATH 0xc000000 +#define BCCK_OPTION_RXPATH 0x3000000 + +#define BNUM_OFSTF 0x3 +#define BSHIFT_L 0xc0 +#define BGI_TH 0xc +#define BRXPATH_A 0x1 +#define BRXPATH_B 0x2 +#define BRXPATH_C 0x4 +#define BRXPATH_D 0x8 +#define BTXPATH_A 0x1 +#define BTXPATH_B 0x2 +#define BTXPATH_C 0x4 +#define BTXPATH_D 0x8 +#define BTRSSI_FREQ 0x200 +#define BADC_BACKOFF 0x3000 +#define BDFIR_BACKOFF 0xc000 +#define BTRSSI_LATCH_PHASE 0x10000 +#define BRX_LDC_OFFSET 0xff +#define BRX_QDC_OFFSET 0xff00 +#define BRX_DFIR_MODE 0x1800000 +#define BRX_DCNF_TYPE 0xe000000 +#define BRXIQIMB_A 0x3ff +#define BRXIQIMB_B 0xfc00 +#define BRXIQIMB_C 0x3f0000 +#define BRXIQIMB_D 0xffc00000 +#define BDC_DC_NOTCH 0x60000 +#define BRXNB_NOTCH 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 BRADIO_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 BCFOLOOPBACK 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 BTXIQDCOFFSET 0xff00 +#define BTXDFIRMODE 0x10000 +#define BTXPESUDO_NOISEON 0x4000000 +#define BTXPESUDO_NOISE_A 0xff +#define BTXPESUDO_NOISE_B 0xff00 +#define BTXPESUDO_NOISE_C 0xff0000 +#define BTXPESUDO_NOISE_D 0xff000000 +#define BCCA_DROPOPTION 0x20000 +#define BCCA_DROPTHRES 0xfff00000 +#define BEDCCA_H 0xf +#define BEDCCA_L 0xf0 +#define BLAMBDA_ED 0x300 +#define BRX_INITIALGAIN 0x7f +#define BRX_ANTDIV_EN 0x80 +#define BRX_AGC_ADDRESS_FOR_LNA 0x7f00 +#define BRX_HIGHPOWER_FLOW 0x8000 +#define BRX_AGC_FREEZE_THRES 0xc0000 +#define BRX_FREEZESTEP_AGC1 0x300000 +#define BRX_FREEZESTEP_AGC2 0xc00000 +#define BRX_FREEZESTEP_AGC3 0x3000000 +#define BRX_FREEZESTEP_AGC0 0xc000000 +#define BRXRSSI_CMP_EN 0x10000000 +#define BRXQUICK_AGCEN 0x20000000 +#define BRXAGC_FREEZE_THRES_MODE 0x40000000 +#define BRX_OVERFLOW_CHECKTYPE 0x80000000 +#define BRX_AGCSHIFT 0x7f +#define BTRSW_TRI_ONLY 0x80 +#define BPOWER_THRES 0x300 +#define BRXAGC_EN 0x1 +#define BRXAGC_TOGETHER_EN 0x2 +#define BRXAGC_MIN 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 +#define BRSSI_GEN 0x7f000000 +#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 BRXPROCESS_TIME_DAGC 0x300000 +#define BRXSETTLE_HSSI 0x400000 +#define BRXPROCESS_TIME_BBPPW 0x800000 +#define BRXANTENNA_POWER_SHIFT 0x3000000 +#define BRSSI_TABLE_SELECT 0xc000000 +#define BRXHP_FINAL 0x7000000 +#define BRXHPSETTLE_BBP 0x7 +#define BRXHTSETTLE_HSSI 0x8 +#define BRXHTSETTLE_RXHP 0x70 +#define BRXHTSETTLE_BBPPW 0x80 +#define BRXHTSETTLE_IDLE 0x300 +#define BRXHTSETTLE_RESERVED 0x1c00 +#define BRXHT_RXHP_EN 0x8000 +#define BRXAGC_FREEZE_THRES 0x30000 +#define BRXAGC_TOGETHEREN 0x40000 +#define BRXHTAGC_MIN 0x80000 +#define BRXHTAGC_EN 0x100000 +#define BRXHTDAGC_EN 0x200000 +#define BRXHT_RXHP_BBP 0x1c00000 +#define BRXHT_RXHP_FINAL 0xe0000000 +#define BRXPW_RADIO_TH 0x3 +#define BRXPW_RADIO_EN 0x4 +#define BRXMF_HOLD 0x3800 +#define BRXPD_DELAY_TH1 0x38 +#define BRXPD_DELAY_TH2 0x1c0 +#define BRXPD_DC_COUNT_MAX 0x600 +#define BRXPD_DELAY_TH 0x8000 +#define BRXPROCESS_DELAY 0xf0000 +#define BRXSEARCHRANGE_GI2_EARLY 0x700000 +#define BRXFRAME_FUARD_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 BMF_WEIGHT_SUM 0x300000 +#define BMINIDX_TH 0x7f000000 +#define BDAFORMAT 0x40000 +#define BTXCH_EMU_ENABLE 0x01000000 +#define BTRSW_ISOLATION_A 0x7f +#define BTRSW_ISOLATION_B 0x7f00 +#define BTRSW_ISOLATION_C 0x7f0000 +#define BTRSW_ISOLATION_D 0x7f000000 +#define BEXT_LNA_GAIN 0x7c00 + +#define BSTBC_EN 0x4 +#define BANTENNA_MAPPING 0x10 +#define BNSS 0x20 +#define BCFO_ANTSUM_ID 0x200 +#define BPHY_COUNTER_RESET 0x8000000 +#define BCFO_REPORT_GET 0x4000000 +#define BOFDM_CONTINUE_TX 0x10000000 +#define BOFDM_SINGLE_CARRIER 0x20000000 +#define BOFDM_SINGLE_TONE 0x40000000 +#define BHT_DETECT 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 BSHORTCFOT_LENGTH 12 +#define BSHORTCFOF_LENGTH 11 +#define BLONGCFO 0x7ff +#define BLONGCFOT_LENGTH 11 +#define BLONGCFOF_LENGTH 11 +#define BTAILCFO 0x1fff +#define BTAILCFOT_LENGTH 13 +#define BTAILCFOF_LENGTH 12 +#define BNOISE_EN_PWDB 0xffff +#define BCC_POWER_DB 0xffff0000 +#define BMOISE_PWDB 0xffff +#define BPOWERMEAST_LENGTH 10 +#define BPOWERMEASF_LENGTH 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 BSNR_EVMT_LENGTH 8 +#define BSNR_EVMF_LENGTH 1 +#define BCSI1ST 0xff +#define BCSI2ND 0xff00 +#define BRXEVM1ST 0xff0000 +#define BRXEVM2ND 0xff000000 +#define BSIGEVM 0xff +#define BPWDB 0xff00 +#define BSGIEN 0x10000 + +#define BSFACTOR_QMA1 0xf +#define BSFACTOR_QMA2 0xf0 +#define BSFACTOR_QMA3 0xf00 +#define BSFACTOR_QMA4 0xf000 +#define BSFACTOR_QMA5 0xf0000 +#define BSFACTOR_QMA6 0xf0000 +#define BSFACTOR_QMA7 0xf00000 +#define BSFACTOR_QMA8 0xf000000 +#define BSFACTOR_QMA9 0xf0000000 +#define BCSI_SCHEME 0x100000 + +#define BNOISE_LVL_TOP_SET 0x3 +#define BCHSMOOTH 0x4 +#define BCHSMOOTH_CFG1 0x38 +#define BCHSMOOTH_CFG2 0x1c0 +#define BCHSMOOTH_CFG3 0xe00 +#define BCHSMOOTH_CFG4 0x7000 +#define BMRCMODE 0x800000 +#define BTHEVMCFG 0x7000000 + +#define BLOOP_FIT_TYPE 0x1 +#define BUPD_CFO 0x40 +#define BUPD_CFO_OFFDATA 0x80 +#define BADV_UPD_CFO 0x100 +#define BADV_TIME_CTRL 0x800 +#define BUPD_CLKO 0x1000 +#define BFC 0x6000 +#define BTRACKING_MODE 0x8000 +#define BPHCMP_ENABLE 0x10000 +#define BUPD_CLKO_LTF 0x20000 +#define BCOM_CH_CFO 0x40000 +#define BCSI_ESTI_MODE 0x80000 +#define BADV_UPD_EQZ 0x100000 +#define BUCHCFG 0x7000000 +#define BUPDEQZ 0x8000000 + +#define BRX_PESUDO_NOISE_ON 0x20000000 +#define BRX_PESUDO_NOISE_A 0xff +#define BRX_PESUDO_NOISE_B 0xff00 +#define BRX_PESUDO_NOISE_C 0xff0000 +#define BRX_PESUDO_NOISE_D 0xff000000 +#define BRX_PESUDO_NOISESTATE_A 0xffff +#define BRX_PESUDO_NOISESTATE_B 0xffff0000 +#define BRX_PESUDO_NOISESTATE_C 0xffff +#define BRX_PESUDO_NOISESTATE_D 0xffff0000 + +#define BZEBRA1_HSSIENABLE 0x8 +#define BZEBRA1_TRXCONTROL 0xc00 +#define BZEBRA1_TRXGAINSETTING 0x07f +#define BZEBRA1_RXCOUNTER 0xc00 +#define BZEBRA1_TXCHANGEPUMP 0x38 +#define BZEBRA1_RXCHANGEPUMP 0x7 +#define BZEBRA1_CHANNEL_NUM 0xf80 +#define BZEBRA1_TXLPFBW 0x400 +#define BZEBRA1_RXLPFBW 0x600 + +#define BRTL8256REG_MODE_CTRL1 0x100 +#define BRTL8256REG_MODE_CTRL0 0x40 +#define BRTL8256REG_TXLPFBW 0x18 +#define BRTL8256REG_RXLPFBW 0x600 + +#define BRTL8258_TXLPFBW 0xc +#define BRTL8258_RXLPFBW 0xc00 +#define BRTL8258_RSSILPFBW 0xc0 + +#define BBYTE0 0x1 +#define BBYTE1 0x2 +#define BBYTE2 0x4 +#define BBYTE3 0x8 +#define BWORD0 0x3 +#define BWORD1 0xc +#define BWORD 0xf + +#define MASKBYTE0 0xff +#define MASKBYTE1 0xff00 +#define MASKBYTE2 0xff0000 +#define MASKBYTE3 0xff000000 +#define MASKHWORD 0xffff0000 +#define MASKLWORD 0x0000ffff +#define MASKDWORD 0xffffffff +#define MASK12BITS 0xfff +#define MASKH4BITS 0xf0000000 +#define MASKOFDM_D 0xffc00000 +#define MASKCCK 0x3f3f3f3f + +#define MASK4BITS 0x0f +#define MASK20BITS 0xfffff +#define RFREG_OFFSET_MASK 0xfffff + +#define BENABLE 0x1 +#define BDISABLE 0x0 + +#define LEFT_ANTENNA 0x0 +#define RIGHT_ANTENNA 0x1 + +#define TCHECK_TXSTATUS 500 +#define TUPDATE_RXCOUNTER 100 + +#define REG_UN_used_register 0x01bf + +/* WOL bit information */ +#define HAL92C_WOL_PTK_UPDATE_EVENT BIT(0) +#define HAL92C_WOL_GTK_UPDATE_EVENT BIT(1) +#define HAL92C_WOL_DISASSOC_EVENT BIT(2) +#define HAL92C_WOL_DEAUTH_EVENT BIT(3) +#define HAL92C_WOL_FW_DISCONNECT_EVENT BIT(4) + +#define WOL_REASON_PTK_UPDATE BIT(0) +#define WOL_REASON_GTK_UPDATE BIT(1) +#define WOL_REASON_DISASSOC BIT(2) +#define WOL_REASON_DEAUTH BIT(3) +#define WOL_REASON_FW_DISCONNECT BIT(4) + +/* 2 EFUSE_TEST (For RTL8723 partially) */ +#define EFUSE_SEL(x) (((x) & 0x3) << 8) +#define EFUSE_SEL_MASK 0x300 +#define EFUSE_WIFI_SEL_0 0x0 + +#define WL_HWPDN_EN BIT(0) /* Enable GPIO[9] as WiFi HW PDn source*/ +#define WL_HWPDN_SL BIT(1) /* WiFi HW PDn polarity control*/ + +#endif --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723be/rf.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723be/rf.c @@ -0,0 +1,504 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2014 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#include "../wifi.h" +#include "reg.h" +#include "def.h" +#include "phy.h" +#include "rf.h" +#include "dm.h" + +static bool _rtl8723be_phy_rf6052_config_parafile(struct ieee80211_hw *hw); + +void rtl8723be_phy_rf6052_set_bandwidth(struct ieee80211_hw *hw, u8 bandwidth) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + + switch (bandwidth) { + case HT_CHANNEL_WIDTH_20: + rtlphy->rfreg_chnlval[0] = ((rtlphy->rfreg_chnlval[0] & + 0xfffff3ff) | BIT(10) | BIT(11)); + rtl_set_rfreg(hw, RF90_PATH_A, RF_CHNLBW, RFREG_OFFSET_MASK, + rtlphy->rfreg_chnlval[0]); + break; + case HT_CHANNEL_WIDTH_20_40: + rtlphy->rfreg_chnlval[0] = ((rtlphy->rfreg_chnlval[0] & + 0xfffff3ff) | BIT(10)); + rtl_set_rfreg(hw, RF90_PATH_A, RF_CHNLBW, RFREG_OFFSET_MASK, + rtlphy->rfreg_chnlval[0]); + break; + default: + RT_TRACE(rtlpriv, COMP_INIT, DBG_EMERG, + "unknown bandwidth: %#X\n", bandwidth); + break; + } +} + +void rtl8723be_phy_rf6052_set_cck_txpower(struct ieee80211_hw *hw, + u8 *ppowerlevel) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + u32 tx_agc[2] = {0, 0}, tmpval; + bool turbo_scanoff = false; + u8 idx1, idx2; + u8 *ptr; + u8 direction; + u32 pwrtrac_value; + + if (rtlefuse->eeprom_regulatory != 0) + turbo_scanoff = true; + + if (mac->act_scanning) { + tx_agc[RF90_PATH_A] = 0x3f3f3f3f; + tx_agc[RF90_PATH_B] = 0x3f3f3f3f; + + if (turbo_scanoff) { + for (idx1 = RF90_PATH_A; idx1 <= RF90_PATH_B; idx1++) { + tx_agc[idx1] = ppowerlevel[idx1] | + (ppowerlevel[idx1] << 8) | + (ppowerlevel[idx1] << 16) | + (ppowerlevel[idx1] << 24); + } + } + } else { + for (idx1 = RF90_PATH_A; idx1 <= RF90_PATH_B; idx1++) { + tx_agc[idx1] = ppowerlevel[idx1] | + (ppowerlevel[idx1] << 8) | + (ppowerlevel[idx1] << 16) | + (ppowerlevel[idx1] << 24); + } + if (rtlefuse->eeprom_regulatory == 0) { + tmpval = + (rtlphy->mcs_offset[0][6]) + + (rtlphy->mcs_offset[0][7] << 8); + tx_agc[RF90_PATH_A] += tmpval; + + tmpval = (rtlphy->mcs_offset[0][14]) + + (rtlphy->mcs_offset[0][15] << + 24); + tx_agc[RF90_PATH_B] += tmpval; + } + } + for (idx1 = RF90_PATH_A; idx1 <= RF90_PATH_B; idx1++) { + ptr = (u8 *)(&(tx_agc[idx1])); + for (idx2 = 0; idx2 < 4; idx2++) { + if (*ptr > RF6052_MAX_TX_PWR) + *ptr = RF6052_MAX_TX_PWR; + ptr++; + } + } + rtl8723be_dm_txpower_track_adjust(hw, 1, &direction, &pwrtrac_value); + if (direction == 1) { + tx_agc[0] += pwrtrac_value; + tx_agc[1] += pwrtrac_value; + } else if (direction == 2) { + tx_agc[0] -= pwrtrac_value; + tx_agc[1] -= pwrtrac_value; + } + tmpval = tx_agc[RF90_PATH_A] & 0xff; + rtl_set_bbreg(hw, RTXAGC_A_CCK1_MCS32, MASKBYTE1, tmpval); + + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, + "CCK PWR 1M (rf-A) = 0x%x (reg 0x%x)\n", tmpval, + RTXAGC_A_CCK1_MCS32); + + tmpval = tx_agc[RF90_PATH_A] >> 8; + + rtl_set_bbreg(hw, RTXAGC_B_CCK11_A_CCK2_11, 0xffffff00, tmpval); + + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, + "CCK PWR 2~11M (rf-A) = 0x%x (reg 0x%x)\n", tmpval, + RTXAGC_B_CCK11_A_CCK2_11); + + tmpval = tx_agc[RF90_PATH_B] >> 24; + rtl_set_bbreg(hw, RTXAGC_B_CCK11_A_CCK2_11, MASKBYTE0, tmpval); + + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, + "CCK PWR 11M (rf-B) = 0x%x (reg 0x%x)\n", tmpval, + RTXAGC_B_CCK11_A_CCK2_11); + + tmpval = tx_agc[RF90_PATH_B] & 0x00ffffff; + rtl_set_bbreg(hw, RTXAGC_B_CCK1_55_MCS32, 0xffffff00, tmpval); + + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, + "CCK PWR 1~5.5M (rf-B) = 0x%x (reg 0x%x)\n", tmpval, + RTXAGC_B_CCK1_55_MCS32); +} + +static void rtl8723be_phy_get_power_base(struct ieee80211_hw *hw, + u8 *ppowerlevel_ofdm, + u8 *ppowerlevel_bw20, + u8 *ppowerlevel_bw40, + u8 channel, u32 *ofdmbase, + u32 *mcsbase) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + u32 powerbase0, powerbase1; + u8 i, powerlevel[2]; + + for (i = 0; i < 2; i++) { + powerbase0 = ppowerlevel_ofdm[i]; + + powerbase0 = (powerbase0 << 24) | (powerbase0 << 16) | + (powerbase0 << 8) | powerbase0; + *(ofdmbase + i) = powerbase0; + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, + " [OFDM power base index rf(%c) = 0x%x]\n", + ((i == 0) ? 'A' : 'B'), *(ofdmbase + i)); + } + + for (i = 0; i < 2; i++) { + if (rtlphy->current_chan_bw == HT_CHANNEL_WIDTH_20) + powerlevel[i] = ppowerlevel_bw20[i]; + else + powerlevel[i] = ppowerlevel_bw40[i]; + powerbase1 = powerlevel[i]; + powerbase1 = (powerbase1 << 24) | (powerbase1 << 16) | + (powerbase1 << 8) | powerbase1; + + *(mcsbase + i) = powerbase1; + + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, + " [MCS power base index rf(%c) = 0x%x]\n", + ((i == 0) ? 'A' : 'B'), *(mcsbase + i)); + } +} + +static void txpwr_by_regulatory(struct ieee80211_hw *hw, u8 channel, u8 index, + u32 *powerbase0, u32 *powerbase1, + u32 *p_outwriteval) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + u8 i, chnlgroup = 0, pwr_diff_limit[4]; + u8 pwr_diff = 0, customer_pwr_diff; + u32 writeval, customer_limit, rf; + + for (rf = 0; rf < 2; rf++) { + switch (rtlefuse->eeprom_regulatory) { + case 0: + chnlgroup = 0; + + writeval = + rtlphy->mcs_offset[chnlgroup][index + (rf ? 8 : 0)] + + ((index < 2) ? powerbase0[rf] : powerbase1[rf]); + + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, + "RTK better performance, " + "writeval(%c) = 0x%x\n", + ((rf == 0) ? 'A' : 'B'), writeval); + break; + case 1: + if (rtlphy->pwrgroup_cnt == 1) { + chnlgroup = 0; + } else { + if (channel < 3) + chnlgroup = 0; + else if (channel < 6) + chnlgroup = 1; + else if (channel < 9) + chnlgroup = 2; + else if (channel < 12) + chnlgroup = 3; + else if (channel < 14) + chnlgroup = 4; + else if (channel == 14) + chnlgroup = 5; + } + writeval = rtlphy->mcs_offset[chnlgroup] + [index + (rf ? 8 : 0)] + ((index < 2) ? + powerbase0[rf] : + powerbase1[rf]); + + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, + "Realtek regulatory, 20MHz, " + "writeval(%c) = 0x%x\n", + ((rf == 0) ? 'A' : 'B'), writeval); + + break; + case 2: + writeval = + ((index < 2) ? powerbase0[rf] : powerbase1[rf]); + + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, + "Better regulatory, " + "writeval(%c) = 0x%x\n", + ((rf == 0) ? 'A' : 'B'), writeval); + break; + case 3: + chnlgroup = 0; + + if (rtlphy->current_chan_bw == HT_CHANNEL_WIDTH_20_40) { + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, + "customer's limit, 40MHz " + "rf(%c) = 0x%x\n", + ((rf == 0) ? 'A' : 'B'), + rtlefuse->pwrgroup_ht40[rf] + [channel-1]); + } else { + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, + "customer's limit, 20MHz " + "rf(%c) = 0x%x\n", + ((rf == 0) ? 'A' : 'B'), + rtlefuse->pwrgroup_ht20[rf] + [channel-1]); + } + + if (index < 2) + pwr_diff = + rtlefuse->txpwr_legacyhtdiff[rf][channel-1]; + else if (rtlphy->current_chan_bw == + HT_CHANNEL_WIDTH_20) + pwr_diff = + rtlefuse->txpwr_ht20diff[rf][channel-1]; + + if (rtlphy->current_chan_bw == HT_CHANNEL_WIDTH_20_40) + customer_pwr_diff = + rtlefuse->pwrgroup_ht40[rf][channel-1]; + else + customer_pwr_diff = + rtlefuse->pwrgroup_ht20[rf][channel-1]; + + if (pwr_diff > customer_pwr_diff) + pwr_diff = 0; + else + pwr_diff = customer_pwr_diff - pwr_diff; + + for (i = 0; i < 4; i++) { + pwr_diff_limit[i] = + (u8)((rtlphy->mcs_offset + [chnlgroup][index + (rf ? 8 : 0)] & + (0x7f << (i * 8))) >> (i * 8)); + + if (pwr_diff_limit[i] > pwr_diff) + pwr_diff_limit[i] = pwr_diff; + } + + customer_limit = (pwr_diff_limit[3] << 24) | + (pwr_diff_limit[2] << 16) | + (pwr_diff_limit[1] << 8) | + (pwr_diff_limit[0]); + + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, + "Customer's limit rf(%c) = 0x%x\n", + ((rf == 0) ? 'A' : 'B'), customer_limit); + + writeval = customer_limit + ((index < 2) ? + powerbase0[rf] : + powerbase1[rf]); + + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, + "Customer, writeval rf(%c)= 0x%x\n", + ((rf == 0) ? 'A' : 'B'), writeval); + break; + default: + chnlgroup = 0; + writeval = + rtlphy->mcs_offset[chnlgroup] + [index + (rf ? 8 : 0)] + + ((index < 2) ? powerbase0[rf] : powerbase1[rf]); + + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, + "RTK better performance, writeval " + "rf(%c) = 0x%x\n", + ((rf == 0) ? 'A' : 'B'), writeval); + break; + } + + if (rtlpriv->dm.dynamic_txhighpower_lvl == TXHIGHPWRLEVEL_BT1) + writeval = writeval - 0x06060606; + else if (rtlpriv->dm.dynamic_txhighpower_lvl == + TXHIGHPWRLEVEL_BT2) + writeval = writeval - 0x0c0c0c0c; + *(p_outwriteval + rf) = writeval; + } +} + +static void _rtl8723be_write_ofdm_power_reg(struct ieee80211_hw *hw, + u8 index, u32 *value) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + 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 = value[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]; + rtl_set_bbreg(hw, regoffset, MASKDWORD, writeval); + + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, + "Set 0x%x = %08x\n", regoffset, writeval); + } +} + +void rtl8723be_phy_rf6052_set_ofdm_txpower(struct ieee80211_hw *hw, + u8 *ppowerlevel_ofdm, + u8 *ppowerlevel_bw20, + u8 *ppowerlevel_bw40, u8 channel) +{ + u32 writeval[2], powerbase0[2], powerbase1[2]; + u8 index; + u8 direction; + u32 pwrtrac_value; + + rtl8723be_phy_get_power_base(hw, ppowerlevel_ofdm, ppowerlevel_bw20, + ppowerlevel_bw40, channel, + &powerbase0[0], &powerbase1[0]); + + rtl8723be_dm_txpower_track_adjust(hw, 1, &direction, &pwrtrac_value); + + for (index = 0; index < 6; index++) { + txpwr_by_regulatory(hw, channel, index, &powerbase0[0], + &powerbase1[0], &writeval[0]); + if (direction == 1) { + writeval[0] += pwrtrac_value; + writeval[1] += pwrtrac_value; + } else if (direction == 2) { + writeval[0] -= pwrtrac_value; + writeval[1] -= pwrtrac_value; + } + _rtl8723be_write_ofdm_power_reg(hw, index, &writeval[0]); + } +} + +bool rtl8723be_phy_rf6052_config(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + + if (rtlphy->rf_type == RF_1T1R) + rtlphy->num_total_rfpath = 1; + else + rtlphy->num_total_rfpath = 2; + + return _rtl8723be_phy_rf6052_config_parafile(hw); +} + +static bool _rtl8723be_phy_rf6052_config_parafile(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct bb_reg_def *pphyreg; + u32 u4_regvalue = 0; + u8 rfpath; + bool rtstatus = true; + + for (rfpath = 0; rfpath < rtlphy->num_total_rfpath; rfpath++) { + pphyreg = &rtlphy->phyreg_def[rfpath]; + + switch (rfpath) { + case RF90_PATH_A: + case RF90_PATH_C: + u4_regvalue = rtl_get_bbreg(hw, pphyreg->rfintfs, + BRFSI_RFENV); + break; + case RF90_PATH_B: + case RF90_PATH_D: + u4_regvalue = rtl_get_bbreg(hw, pphyreg->rfintfs, + BRFSI_RFENV << 16); + break; + } + + rtl_set_bbreg(hw, pphyreg->rfintfe, BRFSI_RFENV << 16, 0x1); + udelay(1); + + rtl_set_bbreg(hw, pphyreg->rfintfo, BRFSI_RFENV, 0x1); + udelay(1); + + rtl_set_bbreg(hw, pphyreg->rfhssi_para2, + B3WIREADDREAALENGTH, 0x0); + udelay(1); + + rtl_set_bbreg(hw, pphyreg->rfhssi_para2, B3WIREDATALENGTH, 0x0); + udelay(1); + + switch (rfpath) { + case RF90_PATH_A: + rtstatus = rtl8723be_phy_config_rf_with_headerfile(hw, + (enum radio_path)rfpath); + break; + case RF90_PATH_B: + rtstatus = rtl8723be_phy_config_rf_with_headerfile(hw, + (enum radio_path)rfpath); + break; + case RF90_PATH_C: + break; + case RF90_PATH_D: + break; + } + + switch (rfpath) { + case RF90_PATH_A: + case RF90_PATH_C: + rtl_set_bbreg(hw, pphyreg->rfintfs, + BRFSI_RFENV, u4_regvalue); + break; + case RF90_PATH_B: + case RF90_PATH_D: + rtl_set_bbreg(hw, pphyreg->rfintfs, + BRFSI_RFENV << 16, u4_regvalue); + break; + } + + if (!rtstatus) { + RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, + "Radio[%d] Fail!!", rfpath); + return false; + } + } + + RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, "\n"); + return rtstatus; +} --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723be/rf.h +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723be/rf.h @@ -0,0 +1,43 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2014 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#ifndef __RTL8723BE_RF_H__ +#define __RTL8723BE_RF_H__ + +#define RF6052_MAX_TX_PWR 0x3F +#define RF6052_MAX_REG 0x3F + +void rtl8723be_phy_rf6052_set_bandwidth(struct ieee80211_hw *hw, + u8 bandwidth); +void rtl8723be_phy_rf6052_set_cck_txpower(struct ieee80211_hw *hw, + u8 *ppowerlevel); +void rtl8723be_phy_rf6052_set_ofdm_txpower(struct ieee80211_hw *hw, + u8 *ppowerlevel_ofdm, + u8 *ppowerlevel_bw20, + u8 *ppowerlevel_bw40, + u8 channel); +bool rtl8723be_phy_rf6052_config(struct ieee80211_hw *hw); + +#endif --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723be/sw.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723be/sw.c @@ -0,0 +1,388 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2014 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#include "../wifi.h" +#include "../core.h" +#include "../pci.h" +#include "reg.h" +#include "def.h" +#include "phy.h" +#include "../rtl8723com/phy_common.h" +#include "dm.h" +#include "hw.h" +#include "fw.h" +#include "../rtl8723com/fw_common.h" +#include "sw.h" +#include "trx.h" +#include "led.h" +#include "table.h" +#include "../btcoexist/rtl_btc.h" + +#include +#include + +static void rtl8723be_init_aspm_vars(struct ieee80211_hw *hw) +{ + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + + /*close ASPM for AMD defaultly */ + rtlpci->const_amdpci_aspm = 0; + + /* ASPM PS mode. + * 0 - Disable ASPM, + * 1 - Enable ASPM without Clock Req, + * 2 - Enable ASPM with Clock Req, + * 3 - Alwyas Enable ASPM with Clock Req, + * 4 - Always Enable ASPM without Clock Req. + * set defult to RTL8192CE:3 RTL8192E:2 + */ + rtlpci->const_pci_aspm = 3; + + /*Setting for PCI-E device */ + rtlpci->const_devicepci_aspm_setting = 0x03; + + /*Setting for PCI-E bridge */ + rtlpci->const_hostpci_aspm_setting = 0x02; + + /* In Hw/Sw Radio Off situation. + * 0 - Default, + * 1 - From ASPM setting without low Mac Pwr, + * 2 - From ASPM setting with low Mac Pwr, + * 3 - Bus D3 + * set default to RTL8192CE:0 RTL8192SE:2 + */ + rtlpci->const_hwsw_rfoff_d3 = 0; + + /* This setting works for those device with + * backdoor ASPM setting such as EPHY setting. + * 0 - Not support ASPM, + * 1 - Support ASPM, + * 2 - According to chipset. + */ + rtlpci->const_support_pciaspm = 1; +} + +int rtl8723be_init_sw_vars(struct ieee80211_hw *hw) +{ + int err = 0; + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + 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; + rtlpriv->dm.dm_flag = 0; + rtlpriv->dm.disable_framebursting = 0; + rtlpriv->dm.thermalvalue = 0; + rtlpci->transmit_config = CFENDFORM | BIT(15) | BIT(24) | BIT(25); + + mac->ht_enable = true; + + /* compatible 5G band 88ce just 2.4G band & smsp */ + rtlpriv->rtlhal.current_bandtype = BAND_ON_2_4G; + rtlpriv->rtlhal.bandset = BAND_ON_2_4G; + rtlpriv->rtlhal.macphymode = SINGLEMAC_SINGLEPHY; + + rtlpci->receive_config = (RCR_APPFCS | + RCR_APP_MIC | + RCR_APP_ICV | + RCR_APP_PHYST_RXFF | + RCR_HTC_LOC_CTRL | + RCR_AMF | + RCR_ACF | + RCR_ADF | + RCR_AICV | + RCR_AB | + RCR_AM | + RCR_APM | + 0); + + rtlpci->irq_mask[0] = (u32) (IMR_PSTIMEOUT | + IMR_HSISR_IND_ON_INT | + IMR_C2HCMD | + IMR_HIGHDOK | + IMR_MGNTDOK | + IMR_BKDOK | + IMR_BEDOK | + IMR_VIDOK | + IMR_VODOK | + IMR_RDU | + IMR_ROK | + 0); + + rtlpci->irq_mask[1] = (u32)(IMR_RXFOVW | 0); + + /* for debug level */ + rtlpriv->dbg.global_debuglevel = rtlpriv->cfg->mod_params->debug; + /* for LPS & IPS */ + 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->psc.reg_fwctrl_lps = 3; + rtlpriv->psc.reg_max_lps_awakeintvl = 5; + /* for ASPM, you can close aspm through + * set const_support_pciaspm = 0 + */ + rtl8723be_init_aspm_vars(hw); + + if (rtlpriv->psc.reg_fwctrl_lps == 1) + rtlpriv->psc.fwctrl_psmode = FW_PS_MIN_MODE; + else if (rtlpriv->psc.reg_fwctrl_lps == 2) + rtlpriv->psc.fwctrl_psmode = FW_PS_MAX_MODE; + else if (rtlpriv->psc.reg_fwctrl_lps == 3) + rtlpriv->psc.fwctrl_psmode = FW_PS_DTIM_MODE; + + /* for firmware buf */ + rtlpriv->rtlhal.pfirmware = vzalloc(0x8000); + if (!rtlpriv->rtlhal.pfirmware) { + RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, + "Can't alloc buffer for fw.\n"); + return 1; + } + + rtlpriv->max_fw_size = 0x8000; + pr_info("Using firmware %s\n", rtlpriv->cfg->fw_name); + err = request_firmware_nowait(THIS_MODULE, 1, rtlpriv->cfg->fw_name, + rtlpriv->io.dev, GFP_KERNEL, hw, + rtl_fw_cb); + if (err) { + RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, + "Failed to request firmware!\n"); + return 1; + } + return 0; +} + +void rtl8723be_deinit_sw_vars(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + if (rtlpriv->cfg->ops->get_btc_status()) + rtlpriv->btcoexist.btc_ops->btc_halt_notify(); + if (rtlpriv->rtlhal.pfirmware) { + vfree(rtlpriv->rtlhal.pfirmware); + rtlpriv->rtlhal.pfirmware = NULL; + } +} + +/* get bt coexist status */ +bool rtl8723be_get_btc_status(void) +{ + return true; +} + +static bool is_fw_header(struct rtl92c_firmware_header *hdr) +{ + return (hdr->signature & 0xfff0) == 0x5300; +} + +static struct rtl_hal_ops rtl8723be_hal_ops = { + .init_sw_vars = rtl8723be_init_sw_vars, + .deinit_sw_vars = rtl8723be_deinit_sw_vars, + .read_eeprom_info = rtl8723be_read_eeprom_info, + .interrupt_recognized = rtl8723be_interrupt_recognized, + .hw_init = rtl8723be_hw_init, + .hw_disable = rtl8723be_card_disable, + .hw_suspend = rtl8723be_suspend, + .hw_resume = rtl8723be_resume, + .enable_interrupt = rtl8723be_enable_interrupt, + .disable_interrupt = rtl8723be_disable_interrupt, + .set_network_type = rtl8723be_set_network_type, + .set_chk_bssid = rtl8723be_set_check_bssid, + .set_qos = rtl8723be_set_qos, + .set_bcn_reg = rtl8723be_set_beacon_related_registers, + .set_bcn_intv = rtl8723be_set_beacon_interval, + .update_interrupt_mask = rtl8723be_update_interrupt_mask, + .get_hw_reg = rtl8723be_get_hw_reg, + .set_hw_reg = rtl8723be_set_hw_reg, + .update_rate_tbl = rtl8723be_update_hal_rate_tbl, + .fill_tx_desc = rtl8723be_tx_fill_desc, + .fill_tx_cmddesc = rtl8723be_tx_fill_cmddesc, + .query_rx_desc = rtl8723be_rx_query_desc, + .set_channel_access = rtl8723be_update_channel_access_setting, + .radio_onoff_checking = rtl8723be_gpio_radio_on_off_checking, + .set_bw_mode = rtl8723be_phy_set_bw_mode, + .switch_channel = rtl8723be_phy_sw_chnl, + .dm_watchdog = rtl8723be_dm_watchdog, + .scan_operation_backup = rtl8723be_phy_scan_operation_backup, + .set_rf_power_state = rtl8723be_phy_set_rf_power_state, + .led_control = rtl8723be_led_control, + .set_desc = rtl8723be_set_desc, + .get_desc = rtl8723be_get_desc, + .is_tx_desc_closed = rtl8723be_is_tx_desc_closed, + .tx_polling = rtl8723be_tx_polling, + .enable_hw_sec = rtl8723be_enable_hw_security_config, + .set_key = rtl8723be_set_key, + .init_sw_leds = rtl8723be_init_sw_leds, + .allow_all_destaddr = rtl8723be_allow_all_destaddr, + .get_bbreg = rtl8723_phy_query_bb_reg, + .set_bbreg = rtl8723_phy_set_bb_reg, + .get_rfreg = rtl8723be_phy_query_rf_reg, + .set_rfreg = rtl8723be_phy_set_rf_reg, + .fill_h2c_cmd = rtl8723be_fill_h2c_cmd, + .get_btc_status = rtl8723be_get_btc_status, + .is_fw_header = is_fw_header, +}; + +static struct rtl_mod_params rtl8723be_mod_params = { + .sw_crypto = false, + .inactiveps = true, + .swctrl_lps = false, + .fwctrl_lps = true, + .msi_support = false, + .debug = DBG_EMERG, +}; + +static struct rtl_hal_cfg rtl8723be_hal_cfg = { + .bar_id = 2, + .write_readback = true, + .name = "rtl8723be_pci", + .fw_name = "rtlwifi/rtl8723befw.bin", + .ops = &rtl8723be_hal_ops, + .mod_params = &rtl8723be_mod_params, + .maps[SYS_ISO_CTRL] = REG_SYS_ISO_CTRL, + .maps[SYS_FUNC_EN] = REG_SYS_FUNC_EN, + .maps[SYS_CLK] = REG_SYS_CLKR, + .maps[MAC_RCR_AM] = AM, + .maps[MAC_RCR_AB] = AB, + .maps[MAC_RCR_ACRC32] = ACRC32, + .maps[MAC_RCR_ACF] = ACF, + .maps[MAC_RCR_AAP] = AAP, + + .maps[EFUSE_ACCESS] = REG_EFUSE_ACCESS, + + .maps[EFUSE_TEST] = REG_EFUSE_TEST, + .maps[EFUSE_CTRL] = REG_EFUSE_CTRL, + .maps[EFUSE_CLK] = 0, + .maps[EFUSE_CLK_CTRL] = REG_EFUSE_CTRL, + .maps[EFUSE_PWC_EV12V] = PWC_EV12V, + .maps[EFUSE_FEN_ELDR] = FEN_ELDR, + .maps[EFUSE_LOADER_CLK_EN] = LOADER_CLK_EN, + .maps[EFUSE_ANA8M] = ANA8M, + .maps[EFUSE_HWSET_MAX_SIZE] = HWSET_MAX_SIZE, + .maps[EFUSE_MAX_SECTION_MAP] = EFUSE_MAX_SECTION, + .maps[EFUSE_REAL_CONTENT_SIZE] = EFUSE_REAL_CONTENT_LEN, + .maps[EFUSE_OOB_PROTECT_BYTES_LEN] = EFUSE_OOB_PROTECT_BYTES, + + .maps[RWCAM] = REG_CAMCMD, + .maps[WCAMI] = REG_CAMWRITE, + .maps[RCAMO] = REG_CAMREAD, + .maps[CAMDBG] = REG_CAMDBG, + .maps[SECR] = REG_SECCFG, + .maps[SEC_CAM_NONE] = CAM_NONE, + .maps[SEC_CAM_WEP40] = CAM_WEP40, + .maps[SEC_CAM_TKIP] = CAM_TKIP, + .maps[SEC_CAM_AES] = CAM_AES, + .maps[SEC_CAM_WEP104] = CAM_WEP104, + + .maps[RTL_IMR_BCNDMAINT6] = IMR_BCNDMAINT6, + .maps[RTL_IMR_BCNDMAINT5] = IMR_BCNDMAINT5, + .maps[RTL_IMR_BCNDMAINT4] = IMR_BCNDMAINT4, + .maps[RTL_IMR_BCNDMAINT3] = IMR_BCNDMAINT3, + .maps[RTL_IMR_BCNDMAINT2] = IMR_BCNDMAINT2, + .maps[RTL_IMR_BCNDMAINT1] = IMR_BCNDMAINT1, + .maps[RTL_IMR_BCNDOK7] = IMR_BCNDOK7, + .maps[RTL_IMR_BCNDOK6] = IMR_BCNDOK6, + .maps[RTL_IMR_BCNDOK5] = IMR_BCNDOK5, + .maps[RTL_IMR_BCNDOK4] = IMR_BCNDOK4, + .maps[RTL_IMR_BCNDOK3] = IMR_BCNDOK3, + .maps[RTL_IMR_BCNDOK2] = IMR_BCNDOK2, + .maps[RTL_IMR_BCNDOK1] = IMR_BCNDOK1, + + .maps[RTL_IMR_TXFOVW] = IMR_TXFOVW, + .maps[RTL_IMR_PSTIMEOUT] = IMR_PSTIMEOUT, + .maps[RTL_IMR_BCNINT] = IMR_BCNDMAINT0, + .maps[RTL_IMR_RXFOVW] = IMR_RXFOVW, + .maps[RTL_IMR_RDU] = IMR_RDU, + .maps[RTL_IMR_ATIMEND] = IMR_ATIMEND, + .maps[RTL_IMR_BDOK] = IMR_BCNDOK0, + .maps[RTL_IMR_MGNTDOK] = IMR_MGNTDOK, + .maps[RTL_IMR_TBDER] = IMR_TBDER, + .maps[RTL_IMR_HIGHDOK] = IMR_HIGHDOK, + .maps[RTL_IMR_TBDOK] = IMR_TBDOK, + .maps[RTL_IMR_BKDOK] = IMR_BKDOK, + .maps[RTL_IMR_BEDOK] = IMR_BEDOK, + .maps[RTL_IMR_VIDOK] = IMR_VIDOK, + .maps[RTL_IMR_VODOK] = IMR_VODOK, + .maps[RTL_IMR_ROK] = IMR_ROK, + .maps[RTL_IBSS_INT_MASKS] = (IMR_BCNDMAINT0 | IMR_TBDOK | IMR_TBDER), + + .maps[RTL_RC_CCK_RATE1M] = DESC92C_RATE1M, + .maps[RTL_RC_CCK_RATE2M] = DESC92C_RATE2M, + .maps[RTL_RC_CCK_RATE5_5M] = DESC92C_RATE5_5M, + .maps[RTL_RC_CCK_RATE11M] = DESC92C_RATE11M, + .maps[RTL_RC_OFDM_RATE6M] = DESC92C_RATE6M, + .maps[RTL_RC_OFDM_RATE9M] = DESC92C_RATE9M, + .maps[RTL_RC_OFDM_RATE12M] = DESC92C_RATE12M, + .maps[RTL_RC_OFDM_RATE18M] = DESC92C_RATE18M, + .maps[RTL_RC_OFDM_RATE24M] = DESC92C_RATE24M, + .maps[RTL_RC_OFDM_RATE36M] = DESC92C_RATE36M, + .maps[RTL_RC_OFDM_RATE48M] = DESC92C_RATE48M, + .maps[RTL_RC_OFDM_RATE54M] = DESC92C_RATE54M, + + .maps[RTL_RC_HT_RATEMCS7] = DESC92C_RATEMCS7, + .maps[RTL_RC_HT_RATEMCS15] = DESC92C_RATEMCS15, +}; + +static DEFINE_PCI_DEVICE_TABLE(rtl8723be_pci_id) = { + {RTL_PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0xb723, rtl8723be_hal_cfg)}, + {}, +}; + +MODULE_DEVICE_TABLE(pci, rtl8723be_pci_id); + +MODULE_AUTHOR("PageHe "); +MODULE_AUTHOR("Realtek WlanFAE "); +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("Realtek 8723BE 802.11n PCI wireless"); +MODULE_FIRMWARE("rtlwifi/rtl8723befw.bin"); + +module_param_named(swenc, rtl8723be_mod_params.sw_crypto, bool, 0444); +module_param_named(debug, rtl8723be_mod_params.debug, int, 0444); +module_param_named(ips, rtl8723be_mod_params.inactiveps, bool, 0444); +module_param_named(swlps, rtl8723be_mod_params.swctrl_lps, bool, 0444); +module_param_named(fwlps, rtl8723be_mod_params.fwctrl_lps, bool, 0444); +module_param_named(msi, rtl8723be_mod_params.msi_support, bool, 0444); +MODULE_PARM_DESC(swenc, "using hardware crypto (default 0 [hardware])\n"); +MODULE_PARM_DESC(ips, "using no link power save (default 1 is open)\n"); +MODULE_PARM_DESC(fwlps, "using linked fw control power save (default 1 is open)\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)"); + +static const SIMPLE_DEV_PM_OPS(rtlwifi_pm_ops, rtl_pci_suspend, rtl_pci_resume); + +static struct pci_driver rtl8723be_driver = { + .name = KBUILD_MODNAME, + .id_table = rtl8723be_pci_id, + .probe = rtl_pci_probe, + .remove = rtl_pci_disconnect, + + .driver.pm = &rtlwifi_pm_ops, +}; + +module_pci_driver(rtl8723be_driver); --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723be/sw.h +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723be/sw.h @@ -0,0 +1,35 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2014 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#ifndef __RTL8723BE_SW_H__ +#define __RTL8723BE_SW_H__ + +int rtl8723be_init_sw_vars(struct ieee80211_hw *hw); +void rtl8723be_deinit_sw_vars(struct ieee80211_hw *hw); +void rtl8723be_init_var_map(struct ieee80211_hw *hw); +bool rtl8723be_get_btc_status(void); + + +#endif --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723be/table.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723be/table.c @@ -0,0 +1,572 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2014 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Created on 2010/ 5/18, 1:41 + * + * Larry Finger + * + *****************************************************************************/ + +#include "table.h" +u32 RTL8723BEPHY_REG_1TARRAY[] = { + 0x800, 0x80040000, + 0x804, 0x00000003, + 0x808, 0x0000FC00, + 0x80C, 0x0000000A, + 0x810, 0x10001331, + 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, 0x569A11A9, + 0x85C, 0x01000014, + 0x860, 0x66F60110, + 0x864, 0x061F0649, + 0x868, 0x00000000, + 0x86C, 0x27272700, + 0x870, 0x07000760, + 0x874, 0x25004000, + 0x878, 0x00000808, + 0x87C, 0x00000000, + 0x880, 0xB0000C1C, + 0x884, 0x00000001, + 0x888, 0x00000000, + 0x88C, 0xCCC000C0, + 0x890, 0x00000800, + 0x894, 0xFFFFFFFE, + 0x898, 0x40302010, + 0x89C, 0x00706050, + 0x900, 0x00000000, + 0x904, 0x00000023, + 0x908, 0x00000000, + 0x90C, 0x81121111, + 0x910, 0x00000002, + 0x914, 0x00000201, + 0x948, 0x00000000, + 0xA00, 0x00D047C8, + 0xA04, 0x80FF000C, + 0xA08, 0x8C838300, + 0xA0C, 0x2E7F120F, + 0xA10, 0x9500BB78, + 0xA14, 0x1114D028, + 0xA18, 0x00881117, + 0xA1C, 0x89140F00, + 0xA20, 0x1A1B0000, + 0xA24, 0x090E1317, + 0xA28, 0x00000204, + 0xA2C, 0x00D30000, + 0xA70, 0x101FBF00, + 0xA74, 0x00000007, + 0xA78, 0x00000900, + 0xA7C, 0x225B0606, + 0xA80, 0x21806490, + 0xB2C, 0x00000000, + 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, 0x469652AF, + 0xC38, 0x49795994, + 0xC3C, 0x0A97971C, + 0xC40, 0x1F7C403F, + 0xC44, 0x000100B7, + 0xC48, 0xEC020107, + 0xC4C, 0x007F037F, + 0xC50, 0x69553420, + 0xC54, 0x43BC0094, + 0xC58, 0x00023169, + 0xC5C, 0x00250492, + 0xC60, 0x00000000, + 0xC64, 0x7112848B, + 0xC68, 0x47C00BFF, + 0xC6C, 0x00000036, + 0xC70, 0x2C7F000D, + 0xC74, 0x020610DB, + 0xC78, 0x0000001F, + 0xC7C, 0x00B91612, + 0xC80, 0x390000E4, + 0xC84, 0x20F60000, + 0xC88, 0x40000100, + 0xC8C, 0x20200000, + 0xC90, 0x00020E1A, + 0xC94, 0x00000000, + 0xC98, 0x00020E1A, + 0xC9C, 0x00007F7F, + 0xCA0, 0x00000000, + 0xCA4, 0x000300A0, + 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, 0x40020401, + 0xD08, 0x0000907F, + 0xD0C, 0x20010201, + 0xD10, 0xA0633333, + 0xD14, 0x3333BC53, + 0xD18, 0x7A8F5B6F, + 0xD2C, 0xCC979975, + 0xD30, 0x00000000, + 0xD34, 0x80608000, + 0xD38, 0x00000000, + 0xD3C, 0x00127353, + 0xD40, 0x00000000, + 0xD44, 0x00000000, + 0xD48, 0x00000000, + 0xD4C, 0x00000000, + 0xD50, 0x6437140A, + 0xD54, 0x00000000, + 0xD58, 0x00000282, + 0xD5C, 0x30032064, + 0xD60, 0x4653DE68, + 0xD64, 0x04518A3C, + 0xD68, 0x00002101, + 0xD6C, 0x2A201C16, + 0xD70, 0x1812362E, + 0xD74, 0x322C2220, + 0xD78, 0x000E3C24, + 0xE00, 0x2D2D2D2D, + 0xE04, 0x2D2D2D2D, + 0xE08, 0x0390272D, + 0xE10, 0x2D2D2D2D, + 0xE14, 0x2D2D2D2D, + 0xE18, 0x2D2D2D2D, + 0xE1C, 0x2D2D2D2D, + 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, 0x001B2556, + 0xE6C, 0x00C00096, + 0xE70, 0x00C00096, + 0xE74, 0x01000056, + 0xE78, 0x01000014, + 0xE7C, 0x01000056, + 0xE80, 0x01000014, + 0xE84, 0x00C00096, + 0xE88, 0x01000056, + 0xE8C, 0x00C00096, + 0xED0, 0x00C00096, + 0xED4, 0x00C00096, + 0xED8, 0x00C00096, + 0xEDC, 0x000000D6, + 0xEE0, 0x000000D6, + 0xEEC, 0x01C00016, + 0xF14, 0x00000003, + 0xF4C, 0x00000000, + 0xF00, 0x00000300, + 0x820, 0x01000100, + 0x800, 0x83040000, +}; + +u32 RTL8723BEPHY_REG_ARRAY_PG[] = { + 0, 0, 0, 0x00000e08, 0x0000ff00, 0x00004000, + 0, 0, 0, 0x0000086c, 0xffffff00, 0x34363800, + 0, 0, 0, 0x00000e00, 0xffffffff, 0x42444646, + 0, 0, 0, 0x00000e04, 0xffffffff, 0x30343840, + 0, 0, 0, 0x00000e10, 0xffffffff, 0x38404244, + 0, 0, 0, 0x00000e14, 0xffffffff, 0x26303436 +}; + +u32 RTL8723BE_RADIOA_1TARRAY[] = { + 0x000, 0x00010000, + 0x0B0, 0x000DFFE0, + 0x0FE, 0x00000000, + 0x0FE, 0x00000000, + 0x0FE, 0x00000000, + 0x0B1, 0x00000018, + 0x0FE, 0x00000000, + 0x0FE, 0x00000000, + 0x0FE, 0x00000000, + 0x0B2, 0x00084C00, + 0x0B5, 0x0000D2CC, + 0x0B6, 0x000925AA, + 0x0B7, 0x00000010, + 0x0B8, 0x0000907F, + 0x05C, 0x00000002, + 0x07C, 0x00000002, + 0x07E, 0x00000005, + 0x08B, 0x0006FC00, + 0x0B0, 0x000FF9F0, + 0x01C, 0x000739D2, + 0x01E, 0x00000000, + 0x0DF, 0x00000780, + 0x050, 0x00067435, + 0x051, 0x0006B04E, + 0x052, 0x000007D2, + 0x053, 0x00000000, + 0x054, 0x00050400, + 0x055, 0x0004026E, + 0x0DD, 0x0000004C, + 0x070, 0x00067435, + 0x071, 0x0006B04E, + 0x072, 0x000007D2, + 0x073, 0x00000000, + 0x074, 0x00050400, + 0x075, 0x0004026E, + 0x0EF, 0x00000100, + 0x034, 0x0000ADD7, + 0x035, 0x00005C00, + 0x034, 0x00009DD4, + 0x035, 0x00005000, + 0x034, 0x00008DD1, + 0x035, 0x00004400, + 0x034, 0x00007DCE, + 0x035, 0x00003800, + 0x034, 0x00006CD1, + 0x035, 0x00004400, + 0x034, 0x00005CCE, + 0x035, 0x00003800, + 0x034, 0x000048CE, + 0x035, 0x00004400, + 0x034, 0x000034CE, + 0x035, 0x00003800, + 0x034, 0x00002451, + 0x035, 0x00004400, + 0x034, 0x0000144E, + 0x035, 0x00003800, + 0x034, 0x00000051, + 0x035, 0x00004400, + 0x0EF, 0x00000000, + 0x0EF, 0x00000100, + 0x0ED, 0x00000010, + 0x044, 0x0000ADD7, + 0x044, 0x00009DD4, + 0x044, 0x00008DD1, + 0x044, 0x00007DCE, + 0x044, 0x00006CC1, + 0x044, 0x00005CCE, + 0x044, 0x000044D1, + 0x044, 0x000034CE, + 0x044, 0x00002451, + 0x044, 0x0000144E, + 0x044, 0x00000051, + 0x0EF, 0x00000000, + 0x0ED, 0x00000000, + 0x0EF, 0x00002000, + 0x03B, 0x000380EF, + 0x03B, 0x000302FE, + 0x03B, 0x00028CE6, + 0x03B, 0x000200BC, + 0x03B, 0x000188A5, + 0x03B, 0x00010FBC, + 0x03B, 0x00008F71, + 0x03B, 0x00000900, + 0x0EF, 0x00000000, + 0x0ED, 0x00000001, + 0x040, 0x000380EF, + 0x040, 0x000302FE, + 0x040, 0x00028CE6, + 0x040, 0x000200BC, + 0x040, 0x000188A5, + 0x040, 0x00010FBC, + 0x040, 0x00008F71, + 0x040, 0x00000900, + 0x0ED, 0x00000000, + 0x082, 0x00080000, + 0x083, 0x00008000, + 0x084, 0x00048D80, + 0x085, 0x00068000, + 0x0A2, 0x00080000, + 0x0A3, 0x00008000, + 0x0A4, 0x00048D80, + 0x0A5, 0x00068000, + 0x000, 0x00033D80, +}; + +u32 RTL8723BEMAC_1T_ARRAY[] = { + 0x02F, 0x00000030, + 0x035, 0x00000000, + 0x428, 0x0000000A, + 0x429, 0x00000010, + 0x430, 0x00000000, + 0x431, 0x00000000, + 0x432, 0x00000000, + 0x433, 0x00000001, + 0x434, 0x00000004, + 0x435, 0x00000005, + 0x436, 0x00000007, + 0x437, 0x00000008, + 0x43C, 0x00000004, + 0x43D, 0x00000005, + 0x43E, 0x00000007, + 0x43F, 0x00000008, + 0x440, 0x0000005D, + 0x441, 0x00000001, + 0x442, 0x00000000, + 0x444, 0x00000010, + 0x445, 0x00000000, + 0x446, 0x00000000, + 0x447, 0x00000000, + 0x448, 0x00000000, + 0x449, 0x000000F0, + 0x44A, 0x0000000F, + 0x44B, 0x0000003E, + 0x44C, 0x00000010, + 0x44D, 0x00000000, + 0x44E, 0x00000000, + 0x44F, 0x00000000, + 0x450, 0x00000000, + 0x451, 0x000000F0, + 0x452, 0x0000000F, + 0x453, 0x00000000, + 0x456, 0x0000005E, + 0x460, 0x00000066, + 0x461, 0x00000066, + 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, + 0x516, 0x0000000A, + 0x525, 0x0000004F, + 0x550, 0x00000010, + 0x551, 0x00000010, + 0x559, 0x00000002, + 0x55C, 0x00000050, + 0x55D, 0x000000FF, + 0x605, 0x00000030, + 0x608, 0x0000000E, + 0x609, 0x0000002A, + 0x620, 0x000000FF, + 0x621, 0x000000FF, + 0x622, 0x000000FF, + 0x623, 0x000000FF, + 0x624, 0x000000FF, + 0x625, 0x000000FF, + 0x626, 0x000000FF, + 0x627, 0x000000FF, + 0x638, 0x00000050, + 0x63C, 0x0000000A, + 0x63D, 0x0000000A, + 0x63E, 0x0000000E, + 0x63F, 0x0000000E, + 0x640, 0x00000040, + 0x642, 0x00000040, + 0x643, 0x00000000, + 0x652, 0x000000C8, + 0x66E, 0x00000005, + 0x700, 0x00000021, + 0x701, 0x00000043, + 0x702, 0x00000065, + 0x703, 0x00000087, + 0x708, 0x00000021, + 0x709, 0x00000043, + 0x70A, 0x00000065, + 0x70B, 0x00000087, +}; + +u32 RTL8723BEAGCTAB_1TARRAY[] = { + 0xC78, 0xFD000001, + 0xC78, 0xFC010001, + 0xC78, 0xFB020001, + 0xC78, 0xFA030001, + 0xC78, 0xF9040001, + 0xC78, 0xF8050001, + 0xC78, 0xF7060001, + 0xC78, 0xF6070001, + 0xC78, 0xF5080001, + 0xC78, 0xF4090001, + 0xC78, 0xF30A0001, + 0xC78, 0xF20B0001, + 0xC78, 0xF10C0001, + 0xC78, 0xF00D0001, + 0xC78, 0xEF0E0001, + 0xC78, 0xEE0F0001, + 0xC78, 0xED100001, + 0xC78, 0xEC110001, + 0xC78, 0xEB120001, + 0xC78, 0xEA130001, + 0xC78, 0xE9140001, + 0xC78, 0xE8150001, + 0xC78, 0xE7160001, + 0xC78, 0xAA170001, + 0xC78, 0xA9180001, + 0xC78, 0xA8190001, + 0xC78, 0xA71A0001, + 0xC78, 0xA61B0001, + 0xC78, 0xA51C0001, + 0xC78, 0xA41D0001, + 0xC78, 0xA31E0001, + 0xC78, 0x671F0001, + 0xC78, 0x66200001, + 0xC78, 0x65210001, + 0xC78, 0x64220001, + 0xC78, 0x63230001, + 0xC78, 0x62240001, + 0xC78, 0x61250001, + 0xC78, 0x47260001, + 0xC78, 0x46270001, + 0xC78, 0x45280001, + 0xC78, 0x44290001, + 0xC78, 0x432A0001, + 0xC78, 0x422B0001, + 0xC78, 0x292C0001, + 0xC78, 0x282D0001, + 0xC78, 0x272E0001, + 0xC78, 0x262F0001, + 0xC78, 0x25300001, + 0xC78, 0x24310001, + 0xC78, 0x09320001, + 0xC78, 0x08330001, + 0xC78, 0x07340001, + 0xC78, 0x06350001, + 0xC78, 0x05360001, + 0xC78, 0x04370001, + 0xC78, 0x03380001, + 0xC78, 0x02390001, + 0xC78, 0x013A0001, + 0xC78, 0x003B0001, + 0xC78, 0x003C0001, + 0xC78, 0x003D0001, + 0xC78, 0x003E0001, + 0xC78, 0x003F0001, + 0xC78, 0xFC400001, + 0xC78, 0xFB410001, + 0xC78, 0xFA420001, + 0xC78, 0xF9430001, + 0xC78, 0xF8440001, + 0xC78, 0xF7450001, + 0xC78, 0xF6460001, + 0xC78, 0xF5470001, + 0xC78, 0xF4480001, + 0xC78, 0xF3490001, + 0xC78, 0xF24A0001, + 0xC78, 0xF14B0001, + 0xC78, 0xF04C0001, + 0xC78, 0xEF4D0001, + 0xC78, 0xEE4E0001, + 0xC78, 0xED4F0001, + 0xC78, 0xEC500001, + 0xC78, 0xEB510001, + 0xC78, 0xEA520001, + 0xC78, 0xE9530001, + 0xC78, 0xE8540001, + 0xC78, 0xE7550001, + 0xC78, 0xE6560001, + 0xC78, 0xE5570001, + 0xC78, 0xAA580001, + 0xC78, 0xA9590001, + 0xC78, 0xA85A0001, + 0xC78, 0xA75B0001, + 0xC78, 0xA65C0001, + 0xC78, 0xA55D0001, + 0xC78, 0xA45E0001, + 0xC78, 0x675F0001, + 0xC78, 0x66600001, + 0xC78, 0x65610001, + 0xC78, 0x64620001, + 0xC78, 0x63630001, + 0xC78, 0x62640001, + 0xC78, 0x61650001, + 0xC78, 0x47660001, + 0xC78, 0x46670001, + 0xC78, 0x45680001, + 0xC78, 0x44690001, + 0xC78, 0x436A0001, + 0xC78, 0x426B0001, + 0xC78, 0x296C0001, + 0xC78, 0x286D0001, + 0xC78, 0x276E0001, + 0xC78, 0x266F0001, + 0xC78, 0x25700001, + 0xC78, 0x24710001, + 0xC78, 0x09720001, + 0xC78, 0x08730001, + 0xC78, 0x07740001, + 0xC78, 0x06750001, + 0xC78, 0x05760001, + 0xC78, 0x04770001, + 0xC78, 0x03780001, + 0xC78, 0x02790001, + 0xC78, 0x017A0001, + 0xC78, 0x007B0001, + 0xC78, 0x007C0001, + 0xC78, 0x007D0001, + 0xC78, 0x007E0001, + 0xC78, 0x007F0001, + 0xC50, 0x69553422, + 0xC50, 0x69553420, +}; --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723be/table.h +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723be/table.h @@ -0,0 +1,43 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2014 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Created on 2010/ 5/18, 1:41 + * + * Larry Finger + * + *****************************************************************************/ + +#ifndef __RTL8723BE_TABLE__H_ +#define __RTL8723BE_TABLE__H_ + +#include +#define RTL8723BEPHY_REG_1TARRAYLEN 388 +extern u32 RTL8723BEPHY_REG_1TARRAY[]; +#define RTL8723BEPHY_REG_ARRAY_PGLEN 36 +extern u32 RTL8723BEPHY_REG_ARRAY_PG[]; +#define RTL8723BE_RADIOA_1TARRAYLEN 206 +extern u32 RTL8723BE_RADIOA_1TARRAY[]; +#define RTL8723BEMAC_1T_ARRAYLEN 194 +extern u32 RTL8723BEMAC_1T_ARRAY[]; +#define RTL8723BEAGCTAB_1TARRAYLEN 260 +extern u32 RTL8723BEAGCTAB_1TARRAY[]; + +#endif --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723be/trx.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723be/trx.c @@ -0,0 +1,959 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2014 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#include "../wifi.h" +#include "../pci.h" +#include "../base.h" +#include "../stats.h" +#include "reg.h" +#include "def.h" +#include "phy.h" +#include "trx.h" +#include "led.h" +#include "dm.h" +#include "phy.h" + +static u8 _rtl8723be_map_hwqueue_to_fwqueue(struct sk_buff *skb, u8 hw_queue) +{ + __le16 fc = rtl_get_fc(skb); + + if (unlikely(ieee80211_is_beacon(fc))) + return QSLT_BEACON; + if (ieee80211_is_mgmt(fc) || ieee80211_is_ctl(fc)) + return QSLT_MGNT; + + return skb->priority; +} + +/* mac80211's rate_idx is like this: + * + * 2.4G band:rx_status->band == IEEE80211_BAND_2GHZ + * + * B/G rate: + * (rx_status->flag & RX_FLAG_HT) = 0, + * DESC92C_RATE1M-->DESC92C_RATE54M ==> idx is 0-->11, + * + * N rate: + * (rx_status->flag & RX_FLAG_HT) = 1, + * DESC92C_RATEMCS0-->DESC92C_RATEMCS15 ==> idx is 0-->15 + * + * 5G band:rx_status->band == IEEE80211_BAND_5GHZ + * A rate: + * (rx_status->flag & RX_FLAG_HT) = 0, + * DESC92C_RATE6M-->DESC92C_RATE54M ==> idx is 0-->7, + * + * N rate: + * (rx_status->flag & RX_FLAG_HT) = 1, + * DESC92C_RATEMCS0-->DESC92C_RATEMCS15 ==> idx is 0-->15 + */ +static int _rtl8723be_rate_mapping(struct ieee80211_hw *hw, + bool isht, u8 desc_rate) +{ + int rate_idx; + + if (!isht) { + if (IEEE80211_BAND_2GHZ == hw->conf.chandef.chan->band) { + switch (desc_rate) { + case DESC92C_RATE1M: + rate_idx = 0; + break; + case DESC92C_RATE2M: + rate_idx = 1; + break; + case DESC92C_RATE5_5M: + rate_idx = 2; + break; + case DESC92C_RATE11M: + rate_idx = 3; + break; + case DESC92C_RATE6M: + rate_idx = 4; + break; + case DESC92C_RATE9M: + rate_idx = 5; + break; + case DESC92C_RATE12M: + rate_idx = 6; + break; + case DESC92C_RATE18M: + rate_idx = 7; + break; + case DESC92C_RATE24M: + rate_idx = 8; + break; + case DESC92C_RATE36M: + rate_idx = 9; + break; + case DESC92C_RATE48M: + rate_idx = 10; + break; + case DESC92C_RATE54M: + rate_idx = 11; + break; + default: + rate_idx = 0; + break; + } + } else { + switch (desc_rate) { + case DESC92C_RATE6M: + rate_idx = 0; + break; + case DESC92C_RATE9M: + rate_idx = 1; + break; + case DESC92C_RATE12M: + rate_idx = 2; + break; + case DESC92C_RATE18M: + rate_idx = 3; + break; + case DESC92C_RATE24M: + rate_idx = 4; + break; + case DESC92C_RATE36M: + rate_idx = 5; + break; + case DESC92C_RATE48M: + rate_idx = 6; + break; + case DESC92C_RATE54M: + rate_idx = 7; + break; + default: + rate_idx = 0; + break; + } + } + } else { + switch (desc_rate) { + case DESC92C_RATEMCS0: + rate_idx = 0; + break; + case DESC92C_RATEMCS1: + rate_idx = 1; + break; + case DESC92C_RATEMCS2: + rate_idx = 2; + break; + case DESC92C_RATEMCS3: + rate_idx = 3; + break; + case DESC92C_RATEMCS4: + rate_idx = 4; + break; + case DESC92C_RATEMCS5: + rate_idx = 5; + break; + case DESC92C_RATEMCS6: + rate_idx = 6; + break; + case DESC92C_RATEMCS7: + rate_idx = 7; + break; + case DESC92C_RATEMCS8: + rate_idx = 8; + break; + case DESC92C_RATEMCS9: + rate_idx = 9; + break; + case DESC92C_RATEMCS10: + rate_idx = 10; + break; + case DESC92C_RATEMCS11: + rate_idx = 11; + break; + case DESC92C_RATEMCS12: + rate_idx = 12; + break; + case DESC92C_RATEMCS13: + rate_idx = 13; + break; + case DESC92C_RATEMCS14: + rate_idx = 14; + break; + case DESC92C_RATEMCS15: + rate_idx = 15; + break; + default: + rate_idx = 0; + break; + } + } + return rate_idx; +} + +static void _rtl8723be_query_rxphystatus(struct ieee80211_hw *hw, + struct rtl_stats *pstatus, u8 *pdesc, + struct rx_fwinfo_8723be *p_drvinfo, + bool packet_match_bssid, + bool packet_toself, + bool packet_beacon) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_ps_ctl *ppsc = rtl_psc(rtlpriv); + struct phy_sts_cck_8723e_t *cck_buf; + struct phy_status_rpt *p_phystrpt = (struct phy_status_rpt *)p_drvinfo; + struct rtl_dm *rtldm = rtl_dm(rtl_priv(hw)); + char rx_pwr_all = 0, rx_pwr[4]; + u8 rf_rx_num = 0, evm, pwdb_all; + u8 i, max_spatial_stream; + u32 rssi, total_rssi = 0; + bool is_cck = pstatus->is_cck; + u8 lan_idx, vga_idx; + + /* Record it for next packet processing */ + pstatus->packet_matchbssid = packet_match_bssid; + pstatus->packet_toself = packet_toself; + pstatus->packet_beacon = packet_beacon; + pstatus->rx_mimo_sig_qual[0] = -1; + pstatus->rx_mimo_sig_qual[1] = -1; + + if (is_cck) { + u8 cck_highpwr; + u8 cck_agc_rpt; + /* CCK Driver info Structure is not the same as OFDM packet. */ + cck_buf = (struct phy_sts_cck_8723e_t *)p_drvinfo; + cck_agc_rpt = cck_buf->cck_agc_rpt; + + /* (1)Hardware does not provide RSSI for CCK + * (2)PWDB, Average PWDB cacluated by + * hardware (for rate adaptive) + */ + if (ppsc->rfpwr_state == ERFON) + cck_highpwr = (u8) rtl_get_bbreg(hw, + RFPGA0_XA_HSSIPARAMETER2, + BIT(9)); + else + cck_highpwr = false; + + lan_idx = ((cck_agc_rpt & 0xE0) >> 5); + vga_idx = (cck_agc_rpt & 0x1f); + switch (lan_idx) { + case 7: + if (vga_idx <= 27)/*VGA_idx = 27~2*/ + rx_pwr_all = -100 + 2 * (27 - vga_idx); + else + rx_pwr_all = -100; + break; + case 6:/*VGA_idx = 2~0*/ + rx_pwr_all = -48 + 2 * (2 - vga_idx); + break; + case 5:/*VGA_idx = 7~5*/ + rx_pwr_all = -42 + 2 * (7 - vga_idx); + break; + case 4:/*VGA_idx = 7~4*/ + rx_pwr_all = -36 + 2 * (7 - vga_idx); + break; + case 3:/*VGA_idx = 7~0*/ + rx_pwr_all = -24 + 2 * (7 - vga_idx); + break; + case 2: + if (cck_highpwr)/*VGA_idx = 5~0*/ + rx_pwr_all = -12 + 2 * (5 - vga_idx); + else + rx_pwr_all = -6 + 2 * (5 - vga_idx); + break; + case 1: + rx_pwr_all = 8 - 2 * vga_idx; + break; + case 0: + rx_pwr_all = 14 - 2 * vga_idx; + break; + default: + break; + } + rx_pwr_all += 6; + pwdb_all = rtl_query_rxpwrpercentage(rx_pwr_all); + /* 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; + if (!cck_highpwr) { + if (pwdb_all >= 80) + pwdb_all = ((pwdb_all - 80) << 1) + + ((pwdb_all - 80) >> 1) + 80; + else if ((pwdb_all <= 78) && (pwdb_all >= 20)) + pwdb_all += 3; + if (pwdb_all > 100) + pwdb_all = 100; + } + + pstatus->rx_pwdb_all = pwdb_all; + pstatus->recvsignalpower = rx_pwr_all; + + /* (3) Get Signal Quality (EVM) */ + if (packet_match_bssid) { + u8 sq; + + if (pstatus->rx_pwdb_all > 40) { + sq = 100; + } else { + sq = cck_buf->sq_rpt; + if (sq > 64) + sq = 0; + else if (sq < 20) + sq = 100; + else + sq = ((64 - sq) * 100) / 44; + } + + pstatus->signalquality = sq; + pstatus->rx_mimo_sig_qual[0] = sq; + pstatus->rx_mimo_sig_qual[1] = -1; + } + } else { + rtlpriv->dm.rfpath_rxenable[0] = true; + rtlpriv->dm.rfpath_rxenable[1] = true; + + /* (1)Get RSSI for HT rate */ + for (i = RF90_PATH_A; i < RF6052_MAX_PATH; i++) { + /* we will judge RF RX path now. */ + if (rtlpriv->dm.rfpath_rxenable[i]) + rf_rx_num++; + + rx_pwr[i] = ((p_drvinfo->gain_trsw[i] & 0x3f)*2) - 110; + + /* Translate DBM to percentage. */ + rssi = rtl_query_rxpwrpercentage(rx_pwr[i]); + total_rssi += rssi; + + /* Get Rx snr value in DB */ + rtlpriv->stats.rx_snr_db[i] = + (long)(p_drvinfo->rxsnr[i] / 2); + + /* Record Signal Strength for next packet */ + if (packet_match_bssid) + pstatus->rx_mimo_signalstrength[i] = (u8) rssi; + } + + /* (2)PWDB, Avg cacluated by hardware (for rate adaptive) */ + rx_pwr_all = ((p_drvinfo->pwdb_all >> 1) & 0x7f) - 110; + + pwdb_all = rtl_query_rxpwrpercentage(rx_pwr_all); + pstatus->rx_pwdb_all = pwdb_all; + pstatus->rxpower = rx_pwr_all; + pstatus->recvsignalpower = rx_pwr_all; + + /* (3)EVM of HT rate */ + if (pstatus->is_ht && pstatus->rate >= DESC92C_RATEMCS8 && + pstatus->rate <= DESC92C_RATEMCS15) + max_spatial_stream = 2; + else + max_spatial_stream = 1; + + for (i = 0; i < max_spatial_stream; i++) { + evm = rtl_evm_db_to_percentage(p_drvinfo->rxevm[i]); + + if (packet_match_bssid) { + /* Fill value in RFD, Get the first + * spatial stream only + */ + if (i == 0) + pstatus->signalquality = + (u8) (evm & 0xff); + pstatus->rx_mimo_sig_qual[i] = + (u8) (evm & 0xff); + } + } + if (packet_match_bssid) { + for (i = RF90_PATH_A; i <= RF90_PATH_B; i++) + rtl_priv(hw)->dm.cfo_tail[i] = + (char)p_phystrpt->path_cfotail[i]; + + rtl_priv(hw)->dm.packet_count++; + if (rtl_priv(hw)->dm.packet_count == 0xffffffff) + rtl_priv(hw)->dm.packet_count = 0; + } + } + + /* UI BSS List signal strength(in percentage), + * make it good looking, from 0~100. + */ + if (is_cck) + pstatus->signalstrength = (u8)(rtl_signal_scale_mapping(hw, + pwdb_all)); + else if (rf_rx_num != 0) + pstatus->signalstrength = (u8)(rtl_signal_scale_mapping(hw, + total_rssi /= rf_rx_num)); + /*HW antenna diversity*/ + rtldm->fat_table.antsel_rx_keep_0 = p_phystrpt->ant_sel; + rtldm->fat_table.antsel_rx_keep_1 = p_phystrpt->ant_sel_b; + rtldm->fat_table.antsel_rx_keep_2 = p_phystrpt->antsel_rx_keep_2; +} + +static void _rtl8723be_translate_rx_signal_stuff(struct ieee80211_hw *hw, + struct sk_buff *skb, + struct rtl_stats *pstatus, + u8 *pdesc, + struct rx_fwinfo_8723be *p_drvinfo) +{ + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + struct ieee80211_hdr *hdr; + u8 *tmp_buf; + u8 *praddr; + u8 *psaddr; + u16 fc, type; + bool packet_matchbssid, packet_toself, packet_beacon; + + tmp_buf = skb->data + pstatus->rx_drvinfo_size + pstatus->rx_bufshift; + + hdr = (struct ieee80211_hdr *)tmp_buf; + fc = le16_to_cpu(hdr->frame_control); + type = WLAN_FC_GET_TYPE(hdr->frame_control); + praddr = hdr->addr1; + psaddr = ieee80211_get_SA(hdr); + memcpy(pstatus->psaddr, psaddr, ETH_ALEN); + + packet_matchbssid = ((IEEE80211_FTYPE_CTL != type) && + (!ether_addr_equal(mac->bssid, (fc & IEEE80211_FCTL_TODS) ? + hdr->addr1 : (fc & IEEE80211_FCTL_FROMDS) ? + hdr->addr2 : hdr->addr3)) && + (!pstatus->hwerror) && + (!pstatus->crc) && (!pstatus->icv)); + + packet_toself = packet_matchbssid && + (!ether_addr_equal(praddr, rtlefuse->dev_addr)); + + /* YP: packet_beacon is not initialized, + * this assignment is neccesary, + * otherwise it counld be true in this case + * the situation is much worse in Kernel 3.10 + */ + if (ieee80211_is_beacon(hdr->frame_control)) + packet_beacon = true; + else + packet_beacon = false; + + if (packet_beacon && packet_matchbssid) + rtl_priv(hw)->dm.dbginfo.num_qry_beacon_pkt++; + + _rtl8723be_query_rxphystatus(hw, pstatus, pdesc, p_drvinfo, + packet_matchbssid, + packet_toself, + packet_beacon); + + rtl_process_phyinfo(hw, tmp_buf, pstatus); +} + +static void _rtl8723be_insert_emcontent(struct rtl_tcb_desc *ptcb_desc, + u8 *virtualaddress) +{ + u32 dwtmp = 0; + memset(virtualaddress, 0, 8); + + SET_EARLYMODE_PKTNUM(virtualaddress, ptcb_desc->empkt_num); + if (ptcb_desc->empkt_num == 1) { + dwtmp = ptcb_desc->empkt_len[0]; + } else { + dwtmp = ptcb_desc->empkt_len[0]; + dwtmp += ((dwtmp % 4) ? (4 - dwtmp % 4) : 0) + 4; + dwtmp += ptcb_desc->empkt_len[1]; + } + SET_EARLYMODE_LEN0(virtualaddress, dwtmp); + + if (ptcb_desc->empkt_num <= 3) { + dwtmp = ptcb_desc->empkt_len[2]; + } else { + dwtmp = ptcb_desc->empkt_len[2]; + dwtmp += ((dwtmp % 4) ? (4 - dwtmp % 4) : 0) + 4; + dwtmp += ptcb_desc->empkt_len[3]; + } + SET_EARLYMODE_LEN1(virtualaddress, dwtmp); + if (ptcb_desc->empkt_num <= 5) { + dwtmp = ptcb_desc->empkt_len[4]; + } else { + dwtmp = ptcb_desc->empkt_len[4]; + dwtmp += ((dwtmp % 4) ? (4 - dwtmp % 4) : 0) + 4; + dwtmp += ptcb_desc->empkt_len[5]; + } + SET_EARLYMODE_LEN2_1(virtualaddress, dwtmp & 0xF); + SET_EARLYMODE_LEN2_2(virtualaddress, dwtmp >> 4); + if (ptcb_desc->empkt_num <= 7) { + dwtmp = ptcb_desc->empkt_len[6]; + } else { + dwtmp = ptcb_desc->empkt_len[6]; + dwtmp += ((dwtmp % 4) ? (4 - dwtmp % 4) : 0) + 4; + dwtmp += ptcb_desc->empkt_len[7]; + } + SET_EARLYMODE_LEN3(virtualaddress, dwtmp); + if (ptcb_desc->empkt_num <= 9) { + dwtmp = ptcb_desc->empkt_len[8]; + } else { + dwtmp = ptcb_desc->empkt_len[8]; + dwtmp += ((dwtmp % 4) ? (4 - dwtmp % 4) : 0) + 4; + dwtmp += ptcb_desc->empkt_len[9]; + } + SET_EARLYMODE_LEN4(virtualaddress, dwtmp); +} + +bool rtl8723be_rx_query_desc(struct ieee80211_hw *hw, + struct rtl_stats *status, + struct ieee80211_rx_status *rx_status, + u8 *pdesc, struct sk_buff *skb) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rx_fwinfo_8723be *p_drvinfo; + struct ieee80211_hdr *hdr; + + u32 phystatus = GET_RX_DESC_PHYST(pdesc); + status->packet_report_type = (u8)GET_RX_STATUS_DESC_RPT_SEL(pdesc); + if (status->packet_report_type == TX_REPORT2) + status->length = (u16) GET_RX_RPT2_DESC_PKT_LEN(pdesc); + else + status->length = (u16) GET_RX_DESC_PKT_LEN(pdesc); + status->rx_drvinfo_size = (u8) GET_RX_DESC_DRV_INFO_SIZE(pdesc) * + RX_DRV_INFO_SIZE_UNIT; + status->rx_bufshift = (u8) (GET_RX_DESC_SHIFT(pdesc) & 0x03); + status->icv = (u16) GET_RX_DESC_ICV(pdesc); + status->crc = (u16) GET_RX_DESC_CRC32(pdesc); + status->hwerror = (status->crc | status->icv); + status->decrypted = !GET_RX_DESC_SWDEC(pdesc); + status->rate = (u8) GET_RX_DESC_RXMCS(pdesc); + status->shortpreamble = (u16) GET_RX_DESC_SPLCP(pdesc); + status->isampdu = (bool) (GET_RX_DESC_PAGGR(pdesc) == 1); + status->isfirst_ampdu = (bool) (GET_RX_DESC_PAGGR(pdesc) == 1); + if (status->packet_report_type == NORMAL_RX) + status->timestamp_low = GET_RX_DESC_TSFL(pdesc); + status->rx_is40Mhzpacket = (bool) GET_RX_DESC_BW(pdesc); + status->is_ht = (bool)GET_RX_DESC_RXHT(pdesc); + + status->is_cck = RTL8723E_RX_HAL_IS_CCK_RATE(status->rate); + + status->macid = GET_RX_DESC_MACID(pdesc); + if (GET_RX_STATUS_DESC_MAGIC_MATCH(pdesc)) + status->wake_match = BIT(2); + else if (GET_RX_STATUS_DESC_MAGIC_MATCH(pdesc)) + status->wake_match = BIT(1); + else if (GET_RX_STATUS_DESC_UNICAST_MATCH(pdesc)) + status->wake_match = BIT(0); + else + status->wake_match = 0; + if (status->wake_match) + RT_TRACE(rtlpriv, COMP_RXDESC, DBG_LOUD, + "GGGGGGGGGGGGGet Wakeup Packet!! WakeMatch=%d\n", + status->wake_match); + rx_status->freq = hw->conf.chandef.chan->center_freq; + rx_status->band = hw->conf.chandef.chan->band; + + + hdr = (struct ieee80211_hdr *)(skb->data + status->rx_drvinfo_size + + status->rx_bufshift); + + if (status->crc) + rx_status->flag |= RX_FLAG_FAILED_FCS_CRC; + + if (status->rx_is40Mhzpacket) + rx_status->flag |= RX_FLAG_40MHZ; + + if (status->is_ht) + rx_status->flag |= RX_FLAG_HT; + + rx_status->flag |= RX_FLAG_MACTIME_START; + + /* hw will set status->decrypted true, if it finds the + * frame is open data frame or mgmt frame. + * So hw will not decryption robust managment frame + * for IEEE80211w but still set status->decrypted + * true, so here we should set it back to undecrypted + * for IEEE80211w frame, and mac80211 sw will help + * to decrypt it + */ + if (status->decrypted) { + if (!hdr) { + WARN_ON_ONCE(true); + pr_err("decrypted is true but hdr NULL in skb %p\n", + rtl_get_hdr(skb)); + return false; + } + + if ((_ieee80211_is_robust_mgmt_frame(hdr)) && + (ieee80211_has_protected(hdr->frame_control))) + rx_status->flag &= ~RX_FLAG_DECRYPTED; + else + rx_status->flag |= RX_FLAG_DECRYPTED; + } + + /* rate_idx: index of data rate into band's + * supported rates or MCS index if HT rates + * are use (RX_FLAG_HT) + * Notice: this is diff with windows define + */ + rx_status->rate_idx = _rtl8723be_rate_mapping(hw, status->is_ht, + status->rate); + + rx_status->mactime = status->timestamp_low; + if (phystatus) { + p_drvinfo = (struct rx_fwinfo_8723be *)(skb->data + + status->rx_bufshift); + + _rtl8723be_translate_rx_signal_stuff(hw, skb, status, + pdesc, p_drvinfo); + } + + /*rx_status->qual = status->signal; */ + rx_status->signal = status->recvsignalpower + 10; + if (status->packet_report_type == TX_REPORT2) { + status->macid_valid_entry[0] = + GET_RX_RPT2_DESC_MACID_VALID_1(pdesc); + status->macid_valid_entry[1] = + GET_RX_RPT2_DESC_MACID_VALID_2(pdesc); + } + return true; +} + +void rtl8723be_tx_fill_desc(struct ieee80211_hw *hw, + struct ieee80211_hdr *hdr, u8 *pdesc_tx, + struct ieee80211_tx_info *info, + struct ieee80211_sta *sta, struct sk_buff *skb, + u8 hw_queue, struct rtl_tcb_desc *ptcb_desc) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + struct rtl_hal *rtlhal = rtl_hal(rtlpriv); + u8 *pdesc = (u8 *)pdesc_tx; + u16 seq_number; + __le16 fc = hdr->frame_control; + unsigned int buf_len = 0; + unsigned int skb_len = skb->len; + u8 fw_qsel = _rtl8723be_map_hwqueue_to_fwqueue(skb, hw_queue); + bool firstseg = ((hdr->seq_ctrl & + cpu_to_le16(IEEE80211_SCTL_FRAG)) == 0); + bool lastseg = ((hdr->frame_control & + cpu_to_le16(IEEE80211_FCTL_MOREFRAGS)) == 0); + dma_addr_t mapping; + u8 bw_40 = 0; + u8 short_gi = 0; + + if (mac->opmode == NL80211_IFTYPE_STATION) { + bw_40 = mac->bw_40; + } else if (mac->opmode == NL80211_IFTYPE_AP || + mac->opmode == NL80211_IFTYPE_ADHOC) { + if (sta) + bw_40 = sta->ht_cap.cap & + IEEE80211_HT_CAP_SUP_WIDTH_20_40; + } + seq_number = (le16_to_cpu(hdr->seq_ctrl) & IEEE80211_SCTL_SEQ) >> 4; + rtl_get_tcb_desc(hw, info, sta, skb, ptcb_desc); + /* reserve 8 byte for AMPDU early mode */ + if (rtlhal->earlymode_enable) { + skb_push(skb, EM_HDR_LEN); + memset(skb->data, 0, EM_HDR_LEN); + } + buf_len = skb->len; + mapping = pci_map_single(rtlpci->pdev, skb->data, skb->len, + PCI_DMA_TODEVICE); + if (pci_dma_mapping_error(rtlpci->pdev, mapping)) { + RT_TRACE(rtlpriv, COMP_SEND, DBG_TRACE, "DMA mapping error"); + return; + } + CLEAR_PCI_TX_DESC_CONTENT(pdesc, sizeof(struct tx_desc_8723be)); + if (ieee80211_is_nullfunc(fc) || ieee80211_is_ctl(fc)) { + firstseg = true; + lastseg = true; + } + if (firstseg) { + if (rtlhal->earlymode_enable) { + SET_TX_DESC_PKT_OFFSET(pdesc, 1); + SET_TX_DESC_OFFSET(pdesc, USB_HWDESC_HEADER_LEN + + EM_HDR_LEN); + if (ptcb_desc->empkt_num) { + RT_TRACE(rtlpriv, COMP_SEND, DBG_TRACE, + "Insert 8 byte.pTcb->EMPktNum:%d\n", + ptcb_desc->empkt_num); + _rtl8723be_insert_emcontent(ptcb_desc, + (u8 *)(skb->data)); + } + } else { + SET_TX_DESC_OFFSET(pdesc, USB_HWDESC_HEADER_LEN); + } + + /* ptcb_desc->use_driver_rate = true; */ + SET_TX_DESC_TX_RATE(pdesc, ptcb_desc->hw_rate); + if (ptcb_desc->hw_rate > DESC92C_RATEMCS0) + short_gi = (ptcb_desc->use_shortgi) ? 1 : 0; + else + short_gi = (ptcb_desc->use_shortpreamble) ? 1 : 0; + + SET_TX_DESC_DATA_SHORTGI(pdesc, short_gi); + + if (info->flags & IEEE80211_TX_CTL_AMPDU) { + SET_TX_DESC_AGG_ENABLE(pdesc, 1); + SET_TX_DESC_MAX_AGG_NUM(pdesc, 0x14); + } + SET_TX_DESC_SEQ(pdesc, seq_number); + SET_TX_DESC_RTS_ENABLE(pdesc, ((ptcb_desc->rts_enable && + !ptcb_desc->cts_enable) ? + 1 : 0)); + SET_TX_DESC_HW_RTS_ENABLE(pdesc, 0); + SET_TX_DESC_CTS2SELF(pdesc, ((ptcb_desc->cts_enable) ? + 1 : 0)); + + SET_TX_DESC_RTS_RATE(pdesc, ptcb_desc->rts_rate); + + SET_TX_DESC_RTS_SC(pdesc, ptcb_desc->rts_sc); + SET_TX_DESC_RTS_SHORT(pdesc, + ((ptcb_desc->rts_rate <= DESC92C_RATE54M) ? + (ptcb_desc->rts_use_shortpreamble ? 1 : 0) : + (ptcb_desc->rts_use_shortgi ? 1 : 0))); + + if (ptcb_desc->btx_enable_sw_calc_duration) + SET_TX_DESC_NAV_USE_HDR(pdesc, 1); + + if (bw_40) { + if (ptcb_desc->packet_bw) { + SET_TX_DESC_DATA_BW(pdesc, 1); + SET_TX_DESC_TX_SUB_CARRIER(pdesc, 3); + } else { + SET_TX_DESC_DATA_BW(pdesc, 0); + SET_TX_DESC_TX_SUB_CARRIER(pdesc, mac->cur_40_prime_sc); + } + } else { + SET_TX_DESC_DATA_BW(pdesc, 0); + SET_TX_DESC_TX_SUB_CARRIER(pdesc, 0); + } + + SET_TX_DESC_LINIP(pdesc, 0); + SET_TX_DESC_PKT_SIZE(pdesc, (u16) skb_len); + if (sta) { + u8 ampdu_density = sta->ht_cap.ampdu_density; + SET_TX_DESC_AMPDU_DENSITY(pdesc, ampdu_density); + } + if (info->control.hw_key) { + struct ieee80211_key_conf *keyconf = + info->control.hw_key; + switch (keyconf->cipher) { + case WLAN_CIPHER_SUITE_WEP40: + case WLAN_CIPHER_SUITE_WEP104: + case WLAN_CIPHER_SUITE_TKIP: + SET_TX_DESC_SEC_TYPE(pdesc, 0x1); + break; + case WLAN_CIPHER_SUITE_CCMP: + SET_TX_DESC_SEC_TYPE(pdesc, 0x3); + break; + default: + SET_TX_DESC_SEC_TYPE(pdesc, 0x0); + break; + } + } + + SET_TX_DESC_QUEUE_SEL(pdesc, fw_qsel); + SET_TX_DESC_DATA_RATE_FB_LIMIT(pdesc, 0x1F); + SET_TX_DESC_RTS_RATE_FB_LIMIT(pdesc, 0xF); + SET_TX_DESC_DISABLE_FB(pdesc, ptcb_desc->disable_ratefallback ? + 1 : 0); + SET_TX_DESC_USE_RATE(pdesc, ptcb_desc->use_driver_rate ? 1 : 0); + + if (ieee80211_is_data_qos(fc)) { + if (mac->rdg_en) { + RT_TRACE(rtlpriv, COMP_SEND, DBG_TRACE, + "Enable RDG function.\n"); + SET_TX_DESC_RDG_ENABLE(pdesc, 1); + SET_TX_DESC_HTC(pdesc, 1); + } + } + } + + SET_TX_DESC_FIRST_SEG(pdesc, (firstseg ? 1 : 0)); + SET_TX_DESC_LAST_SEG(pdesc, (lastseg ? 1 : 0)); + SET_TX_DESC_TX_BUFFER_SIZE(pdesc, (u16) buf_len); + SET_TX_DESC_TX_BUFFER_ADDRESS(pdesc, mapping); + SET_TX_DESC_RATE_ID(pdesc, ptcb_desc->ratr_index); + SET_TX_DESC_MACID(pdesc, ptcb_desc->mac_id); + + if (!ieee80211_is_data_qos(fc)) { + SET_TX_DESC_HWSEQ_EN(pdesc, 1); + SET_TX_DESC_HWSEQ_SEL(pdesc, 0); + } + SET_TX_DESC_MORE_FRAG(pdesc, (lastseg ? 0 : 1)); + if (is_multicast_ether_addr(ieee80211_get_DA(hdr)) || + is_broadcast_ether_addr(ieee80211_get_DA(hdr))) { + SET_TX_DESC_BMC(pdesc, 1); + } + RT_TRACE(rtlpriv, COMP_SEND, DBG_TRACE, "\n"); +} + +void rtl8723be_tx_fill_cmddesc(struct ieee80211_hw *hw, u8 *pdesc, + bool b_firstseg, bool b_lastseg, + struct sk_buff *skb) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + u8 fw_queue = QSLT_BEACON; + + dma_addr_t mapping = pci_map_single(rtlpci->pdev, + skb->data, skb->len, + PCI_DMA_TODEVICE); + + if (pci_dma_mapping_error(rtlpci->pdev, mapping)) { + RT_TRACE(rtlpriv, COMP_SEND, DBG_TRACE, + "DMA mapping error"); + return; + } + CLEAR_PCI_TX_DESC_CONTENT(pdesc, TX_DESC_SIZE); + + SET_TX_DESC_OFFSET(pdesc, USB_HWDESC_HEADER_LEN); + + SET_TX_DESC_TX_RATE(pdesc, DESC92C_RATE1M); + + SET_TX_DESC_SEQ(pdesc, 0); + + SET_TX_DESC_LINIP(pdesc, 0); + + SET_TX_DESC_QUEUE_SEL(pdesc, fw_queue); + + SET_TX_DESC_FIRST_SEG(pdesc, 1); + SET_TX_DESC_LAST_SEG(pdesc, 1); + + SET_TX_DESC_TX_BUFFER_SIZE(pdesc, (u16)(skb->len)); + + SET_TX_DESC_TX_BUFFER_ADDRESS(pdesc, mapping); + + SET_TX_DESC_RATE_ID(pdesc, 0); + SET_TX_DESC_MACID(pdesc, 0); + + SET_TX_DESC_OWN(pdesc, 1); + + SET_TX_DESC_PKT_SIZE((u8 *)pdesc, (u16)(skb->len)); + + SET_TX_DESC_FIRST_SEG(pdesc, 1); + SET_TX_DESC_LAST_SEG(pdesc, 1); + + SET_TX_DESC_USE_RATE(pdesc, 1); +} + +void rtl8723be_set_desc(u8 *pdesc, bool istx, u8 desc_name, u8 *val) +{ + if (istx) { + switch (desc_name) { + case HW_DESC_OWN: + SET_TX_DESC_OWN(pdesc, 1); + break; + case HW_DESC_TX_NEXTDESC_ADDR: + SET_TX_DESC_NEXT_DESC_ADDRESS(pdesc, *(u32 *)val); + break; + default: + RT_ASSERT(false, "ERR txdesc :%d not process\n", + desc_name); + break; + } + } else { + switch (desc_name) { + case HW_DESC_RXOWN: + SET_RX_DESC_OWN(pdesc, 1); + break; + case HW_DESC_RXBUFF_ADDR: + SET_RX_DESC_BUFF_ADDR(pdesc, *(u32 *)val); + break; + case HW_DESC_RXPKT_LEN: + SET_RX_DESC_PKT_LEN(pdesc, *(u32 *)val); + break; + case HW_DESC_RXERO: + SET_RX_DESC_EOR(pdesc, 1); + break; + default: + RT_ASSERT(false, "ERR rxdesc :%d not process\n", + desc_name); + break; + } + } +} + +u32 rtl8723be_get_desc(u8 *pdesc, bool istx, u8 desc_name) +{ + u32 ret = 0; + + if (istx) { + switch (desc_name) { + case HW_DESC_OWN: + ret = GET_TX_DESC_OWN(pdesc); + break; + case HW_DESC_TXBUFF_ADDR: + ret = GET_TX_DESC_TX_BUFFER_ADDRESS(pdesc); + break; + default: + RT_ASSERT(false, "ERR txdesc :%d not process\n", + desc_name); + break; + } + } else { + switch (desc_name) { + case HW_DESC_OWN: + ret = GET_RX_DESC_OWN(pdesc); + break; + case HW_DESC_RXPKT_LEN: + ret = GET_RX_DESC_PKT_LEN(pdesc); + break; + default: + RT_ASSERT(false, "ERR rxdesc :%d not process\n", + desc_name); + break; + } + } + return ret; +} + +bool rtl8723be_is_tx_desc_closed(struct ieee80211_hw *hw, + u8 hw_queue, u16 index) +{ + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + struct rtl8192_tx_ring *ring = &rtlpci->tx_ring[hw_queue]; + u8 *entry = (u8 *)(&ring->desc[ring->idx]); + u8 own = (u8) rtl8723be_get_desc(entry, true, HW_DESC_OWN); + + /*beacon packet will only use the first + *descriptor by default, and the own may not + *be cleared by the hardware + */ + if (own) + return false; + else + return true; +} + +void rtl8723be_tx_polling(struct ieee80211_hw *hw, u8 hw_queue) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + if (hw_queue == BEACON_QUEUE) { + rtl_write_word(rtlpriv, REG_PCIE_CTRL_REG, BIT(4)); + } else { + rtl_write_word(rtlpriv, REG_PCIE_CTRL_REG, + BIT(0) << (hw_queue)); + } +} --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723be/trx.h +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723be/trx.h @@ -0,0 +1,616 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2014 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#ifndef __RTL8723BE_TRX_H__ +#define __RTL8723BE_TRX_H__ + +#define TX_DESC_SIZE 40 +#define TX_DESC_AGGR_SUBFRAME_SIZE 32 + +#define RX_DESC_SIZE 32 +#define RX_DRV_INFO_SIZE_UNIT 8 + +#define TX_DESC_NEXT_DESC_OFFSET 40 +#define USB_HWDESC_HEADER_LEN 40 +#define CRCLENGTH 4 + +#define SET_TX_DESC_PKT_SIZE(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc, 0, 16, __val) +#define SET_TX_DESC_OFFSET(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc, 16, 8, __val) +#define SET_TX_DESC_BMC(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc, 24, 1, __val) +#define SET_TX_DESC_HTC(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc, 25, 1, __val) +#define SET_TX_DESC_LAST_SEG(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc, 26, 1, __val) +#define SET_TX_DESC_FIRST_SEG(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc, 27, 1, __val) +#define SET_TX_DESC_LINIP(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc, 28, 1, __val) +#define SET_TX_DESC_NO_ACM(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc, 29, 1, __val) +#define SET_TX_DESC_GF(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc, 30, 1, __val) +#define SET_TX_DESC_OWN(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc, 31, 1, __val) + +#define GET_TX_DESC_PKT_SIZE(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 0, 16) +#define GET_TX_DESC_OFFSET(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 16, 8) +#define GET_TX_DESC_BMC(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 24, 1) +#define GET_TX_DESC_HTC(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 25, 1) +#define GET_TX_DESC_LAST_SEG(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 26, 1) +#define GET_TX_DESC_FIRST_SEG(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 27, 1) +#define GET_TX_DESC_LINIP(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 28, 1) +#define GET_TX_DESC_NO_ACM(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 29, 1) +#define GET_TX_DESC_GF(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 30, 1) +#define GET_TX_DESC_OWN(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 31, 1) + +#define SET_TX_DESC_MACID(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+4, 0, 7, __val) +#define SET_TX_DESC_QUEUE_SEL(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+4, 8, 5, __val) +#define SET_TX_DESC_RDG_NAV_EXT(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+4, 13, 1, __val) +#define SET_TX_DESC_LSIG_TXOP_EN(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+4, 14, 1, __val) +#define SET_TX_DESC_PIFS(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+4, 15, 1, __val) +#define SET_TX_DESC_RATE_ID(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+4, 16, 5, __val) +#define SET_TX_DESC_EN_DESC_ID(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+4, 21, 1, __val) +#define SET_TX_DESC_SEC_TYPE(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+4, 22, 2, __val) +#define SET_TX_DESC_PKT_OFFSET(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+4, 24, 5, __val) + + +#define SET_TX_DESC_PAID(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+8, 0, 9, __val) +#define SET_TX_DESC_CCA_RTS(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+8, 10, 2, __val) +#define SET_TX_DESC_AGG_ENABLE(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+8, 12, 1, __val) +#define SET_TX_DESC_RDG_ENABLE(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+8, 13, 1, __val) +#define SET_TX_DESC_BAR_RTY_TH(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+8, 14, 2, __val) +#define SET_TX_DESC_AGG_BREAK(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+8, 16, 1, __val) +#define SET_TX_DESC_MORE_FRAG(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+8, 17, 1, __val) +#define SET_TX_DESC_RAW(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+8, 18, 1, __val) +#define SET_TX_DESC_SPE_RPT(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+8, 19, 1, __val) +#define SET_TX_DESC_AMPDU_DENSITY(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+8, 20, 3, __val) +#define SET_TX_DESC_BT_INT(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+8, 23, 1, __val) +#define SET_TX_DESC_GID(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+8, 24, 6, __val) + + +#define SET_TX_DESC_WHEADER_LEN(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+12, 0, 4, __val) +#define SET_TX_DESC_CHK_EN(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+12, 4, 1, __val) +#define SET_TX_DESC_EARLY_MODE(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+12, 5, 1, __val) +#define SET_TX_DESC_HWSEQ_SEL(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+12, 6, 2, __val) +#define SET_TX_DESC_USE_RATE(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+12, 8, 1, __val) +#define SET_TX_DESC_DISABLE_RTS_FB(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+12, 9, 1, __val) +#define SET_TX_DESC_DISABLE_FB(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+12, 10, 1, __val) +#define SET_TX_DESC_CTS2SELF(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+12, 11, 1, __val) +#define SET_TX_DESC_RTS_ENABLE(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+12, 12, 1, __val) +#define SET_TX_DESC_HW_RTS_ENABLE(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+12, 13, 1, __val) +#define SET_TX_DESC_NAV_USE_HDR(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+12, 15, 1, __val) +#define SET_TX_DESC_USE_MAX_LEN(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+12, 16, 1, __val) +#define SET_TX_DESC_MAX_AGG_NUM(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+12, 17, 5, __val) +#define SET_TX_DESC_NDPA(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+12, 22, 2, __val) +#define SET_TX_DESC_AMPDU_MAX_TIME(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+12, 24, 8, __val) + + +#define SET_TX_DESC_TX_RATE(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+16, 0, 7, __val) +#define SET_TX_DESC_DATA_RATE_FB_LIMIT(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+16, 8, 5, __val) +#define SET_TX_DESC_RTS_RATE_FB_LIMIT(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+16, 13, 4, __val) +#define SET_TX_DESC_RETRY_LIMIT_ENABLE(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+16, 17, 1, __val) +#define SET_TX_DESC_DATA_RETRY_LIMIT(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+16, 18, 6, __val) +#define SET_TX_DESC_RTS_RATE(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+16, 24, 5, __val) + + +#define SET_TX_DESC_TX_SUB_CARRIER(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+20, 0, 4, __val) +#define SET_TX_DESC_DATA_SHORTGI(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+20, 4, 1, __val) +#define SET_TX_DESC_DATA_BW(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+20, 5, 2, __val) +#define SET_TX_DESC_DATA_LDPC(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+20, 7, 1, __val) +#define SET_TX_DESC_DATA_STBC(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+20, 8, 2, __val) +#define SET_TX_DESC_CTROL_STBC(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+20, 10, 2, __val) +#define SET_TX_DESC_RTS_SHORT(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+20, 12, 1, __val) +#define SET_TX_DESC_RTS_SC(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+20, 13, 4, __val) + + +#define SET_TX_DESC_TX_BUFFER_SIZE(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+28, 0, 16, __val) + +#define GET_TX_DESC_TX_BUFFER_SIZE(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+28, 0, 16) + +#define SET_TX_DESC_HWSEQ_EN(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+32, 15, 1, __val) + +#define SET_TX_DESC_SEQ(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+36, 12, 12, __val) + +#define SET_TX_DESC_TX_BUFFER_ADDRESS(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+40, 0, 32, __val) + +#define GET_TX_DESC_TX_BUFFER_ADDRESS(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+40, 0, 32) + + +#define SET_TX_DESC_NEXT_DESC_ADDRESS(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+48, 0, 32, __val) + +#define GET_TX_DESC_NEXT_DESC_ADDRESS(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+48, 0, 32) + +#define GET_RX_DESC_PKT_LEN(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 0, 14) +#define GET_RX_DESC_CRC32(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 14, 1) +#define GET_RX_DESC_ICV(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 15, 1) +#define GET_RX_DESC_DRV_INFO_SIZE(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 16, 4) +#define GET_RX_DESC_SECURITY(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 20, 3) +#define GET_RX_DESC_QOS(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 23, 1) +#define GET_RX_DESC_SHIFT(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 24, 2) +#define GET_RX_DESC_PHYST(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 26, 1) +#define GET_RX_DESC_SWDEC(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 27, 1) +#define GET_RX_DESC_LS(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 28, 1) +#define GET_RX_DESC_FS(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 29, 1) +#define GET_RX_DESC_EOR(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 30, 1) +#define GET_RX_DESC_OWN(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 31, 1) + +#define SET_RX_DESC_PKT_LEN(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc, 0, 14, __val) +#define SET_RX_DESC_EOR(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc, 30, 1, __val) +#define SET_RX_DESC_OWN(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc, 31, 1, __val) + +#define GET_RX_DESC_MACID(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+4, 0, 7) +#define GET_RX_DESC_TID(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+4, 8, 4) +#define GET_RX_DESC_AMSDU(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+4, 13, 1) +#define GET_RX_STATUS_DESC_RXID_MATCH(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+4, 14, 1) +#define GET_RX_DESC_PAGGR(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+4, 15, 1) +#define GET_RX_DESC_A1_FIT(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+4, 16, 4) +#define GET_RX_DESC_CHKERR(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+4, 20, 1) +#define GET_RX_DESC_IPVER(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+4, 21, 1) +#define GET_RX_STATUS_DESC_IS_TCPUDP(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+4, 22, 1) +#define GET_RX_STATUS_DESC_CHK_VLD(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+4, 23, 1) +#define GET_RX_DESC_PAM(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+4, 24, 1) +#define GET_RX_DESC_PWR(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+4, 25, 1) +#define GET_RX_DESC_MD(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+4, 26, 1) +#define GET_RX_DESC_MF(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+4, 27, 1) +#define GET_RX_DESC_TYPE(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+4, 28, 2) +#define GET_RX_DESC_MC(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+4, 30, 1) +#define GET_RX_DESC_BC(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+4, 31, 1) + + +#define GET_RX_DESC_SEQ(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+8, 0, 12) +#define GET_RX_DESC_FRAG(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+8, 12, 4) +#define GET_RX_STATUS_DESC_RX_IS_QOS(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+8, 16, 1) +#define GET_RX_STATUS_DESC_WLANHD_IV_LEN(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+8, 18, 6) +#define GET_RX_STATUS_DESC_RPT_SEL(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+8, 28, 1) + + +#define GET_RX_DESC_RXMCS(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+12, 0, 7) +#define GET_RX_DESC_RXHT(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+12, 6, 1) +#define GET_RX_STATUS_DESC_RX_GF(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+12, 7, 1) +#define GET_RX_DESC_HTC(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+12, 10, 1) +#define GET_RX_STATUS_DESC_EOSP(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+12, 11, 1) +#define GET_RX_STATUS_DESC_BSSID_FIT(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+12, 12, 2) + +#define GET_RX_STATUS_DESC_PATTERN_MATCH(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+12, 29, 1) +#define GET_RX_STATUS_DESC_UNICAST_MATCH(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+12, 30, 1) +#define GET_RX_STATUS_DESC_MAGIC_MATCH(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+12, 31, 1) + +#define GET_RX_DESC_SPLCP(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+16, 0, 1) +#define GET_RX_STATUS_DESC_LDPC(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+16, 1, 1) +#define GET_RX_STATUS_DESC_STBC(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+16, 2, 1) +#define GET_RX_DESC_BW(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+16, 4, 2) + +#define GET_RX_DESC_TSFL(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+20, 0, 32) + +#define GET_RX_DESC_BUFF_ADDR(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+24, 0, 32) +#define GET_RX_DESC_BUFF_ADDR64(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+28, 0, 32) + +#define SET_RX_DESC_BUFF_ADDR(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+24, 0, 32, __val) +#define SET_RX_DESC_BUFF_ADDR64(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+28, 0, 32, __val) + + +/* TX report 2 format in Rx desc*/ + +#define GET_RX_RPT2_DESC_PKT_LEN(__rxstatusdesc) \ + LE_BITS_TO_4BYTE(__rxstatusdesc, 0, 9) +#define GET_RX_RPT2_DESC_MACID_VALID_1(__rxstatusdesc) \ + LE_BITS_TO_4BYTE(__rxstatusdesc+16, 0, 32) +#define GET_RX_RPT2_DESC_MACID_VALID_2(__rxstatusdesc) \ + LE_BITS_TO_4BYTE(__rxstatusdesc+20, 0, 32) + +#define SET_EARLYMODE_PKTNUM(__paddr, __value) \ + SET_BITS_TO_LE_4BYTE(__paddr, 0, 4, __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) + +#define CLEAR_PCI_TX_DESC_CONTENT(__pdesc, _size) \ +do { \ + if (_size > TX_DESC_NEXT_DESC_OFFSET) \ + memset(__pdesc, 0, TX_DESC_NEXT_DESC_OFFSET); \ + else \ + memset(__pdesc, 0, _size); \ +} while (0) + +struct phy_rx_agc_info_t { + #ifdef __LITTLE_ENDIAN + u8 gain:7, trsw:1; + #else + u8 trsw:1, gain:7; + #endif +}; +struct phy_status_rpt { + struct phy_rx_agc_info_t path_agc[2]; + u8 ch_corr[2]; + u8 cck_sig_qual_ofdm_pwdb_all; + u8 cck_agc_rpt_ofdm_cfosho_a; + u8 cck_rpt_b_ofdm_cfosho_b; + u8 rsvd_1;/* ch_corr_msb; */ + u8 noise_power_db_msb; + char path_cfotail[2]; + u8 pcts_mask[2]; + char stream_rxevm[2]; + u8 path_rxsnr[2]; + u8 noise_power_db_lsb; + u8 rsvd_2[3]; + u8 stream_csi[2]; + u8 stream_target_csi[2]; + u8 sig_evm; + u8 rsvd_3; +#ifdef __LITTLE_ENDIAN + u8 antsel_rx_keep_2:1; /*ex_intf_flg:1;*/ + u8 sgi_en:1; + u8 rxsc:2; + u8 idle_long:1; + u8 r_ant_train_en:1; + u8 ant_sel_b:1; + u8 ant_sel:1; +#else /* _BIG_ENDIAN_ */ + u8 ant_sel:1; + u8 ant_sel_b:1; + u8 r_ant_train_en:1; + u8 idle_long:1; + u8 rxsc:2; + u8 sgi_en:1; + u8 antsel_rx_keep_2:1; /*ex_intf_flg:1;*/ +#endif +} __packed; + +struct rx_fwinfo_8723be { + u8 gain_trsw[4]; + u8 pwdb_all; + u8 cfosho[4]; + u8 cfotail[4]; + char rxevm[2]; + char rxsnr[4]; + u8 pdsnr[2]; + u8 csi_current[2]; + u8 csi_target[2]; + u8 sigevm; + u8 max_ex_pwr; + u8 ex_intf_flag:1; + u8 sgi_en:1; + u8 rxsc:2; + u8 reserve:4; +} __packed; + +struct tx_desc_8723be { + u32 pktsize:16; + u32 offset:8; + u32 bmc:1; + u32 htc:1; + u32 lastseg:1; + u32 firstseg:1; + u32 linip:1; + u32 noacm:1; + u32 gf:1; + u32 own:1; + + u32 macid:6; + u32 rsvd0:2; + u32 queuesel:5; + u32 rd_nav_ext:1; + u32 lsig_txop_en:1; + u32 pifs:1; + u32 rateid:4; + u32 nav_usehdr:1; + u32 en_descid:1; + u32 sectype:2; + u32 pktoffset:8; + + u32 rts_rc:6; + u32 data_rc:6; + u32 agg_en:1; + u32 rdg_en:1; + u32 bar_retryht:2; + u32 agg_break:1; + u32 morefrag:1; + u32 raw:1; + u32 ccx:1; + u32 ampdudensity:3; + u32 bt_int:1; + u32 ant_sela:1; + u32 ant_selb:1; + u32 txant_cck:2; + u32 txant_l:2; + u32 txant_ht:2; + + u32 nextheadpage:8; + u32 tailpage:8; + u32 seq:12; + u32 cpu_handle:1; + u32 tag1:1; + u32 trigger_int:1; + u32 hwseq_en:1; + + u32 rtsrate:5; + u32 apdcfe:1; + u32 qos:1; + u32 hwseq_ssn:1; + u32 userrate:1; + u32 dis_rtsfb:1; + u32 dis_datafb:1; + u32 cts2self:1; + u32 rts_en:1; + u32 hwrts_en:1; + u32 portid:1; + u32 pwr_status:3; + u32 waitdcts:1; + u32 cts2ap_en:1; + u32 txsc:2; + u32 stbc:2; + u32 txshort:1; + u32 txbw:1; + u32 rtsshort:1; + u32 rtsbw:1; + u32 rtssc:2; + u32 rtsstbc:2; + + u32 txrate:6; + u32 shortgi:1; + u32 ccxt:1; + u32 txrate_fb_lmt:5; + u32 rtsrate_fb_lmt:4; + u32 retrylmt_en:1; + u32 txretrylmt:6; + u32 usb_txaggnum:8; + + u32 txagca:5; + u32 txagcb:5; + u32 usemaxlen:1; + u32 maxaggnum:5; + u32 mcsg1maxlen:4; + u32 mcsg2maxlen:4; + u32 mcsg3maxlen:4; + u32 mcs7sgimaxlen:4; + + u32 txbuffersize:16; + u32 sw_offset30:8; + u32 sw_offset31:4; + u32 rsvd1:1; + u32 antsel_c:1; + u32 null_0:1; + u32 null_1:1; + + u32 txbuffaddr; + u32 txbufferaddr64; + u32 nextdescaddress; + u32 nextdescaddress64; + + u32 reserve_pass_pcie_mm_limit[4]; +} __packed; + +struct rx_desc_8723be { + u32 length:14; + u32 crc32:1; + u32 icverror:1; + u32 drv_infosize:4; + u32 security:3; + u32 qos:1; + u32 shift:2; + u32 phystatus:1; + u32 swdec:1; + u32 lastseg:1; + u32 firstseg:1; + u32 eor:1; + u32 own:1; + + u32 macid:6; + u32 tid:4; + u32 hwrsvd:5; + u32 paggr:1; + u32 faggr:1; + u32 a1_fit:4; + u32 a2_fit:4; + u32 pam:1; + u32 pwr:1; + u32 moredata:1; + u32 morefrag:1; + u32 type:2; + u32 mc:1; + u32 bc:1; + + u32 seq:12; + u32 frag:4; + u32 nextpktlen:14; + u32 nextind:1; + u32 rsvd:1; + + u32 rxmcs:6; + u32 rxht:1; + u32 amsdu:1; + u32 splcp:1; + u32 bandwidth:1; + u32 htc:1; + u32 tcpchk_rpt:1; + u32 ipcchk_rpt:1; + u32 tcpchk_valid:1; + u32 hwpcerr:1; + u32 hwpcind:1; + u32 iv0:16; + + u32 iv1; + + u32 tsfl; + + u32 bufferaddress; + u32 bufferaddress64; + +} __packed; + +void rtl8723be_tx_fill_desc(struct ieee80211_hw *hw, + struct ieee80211_hdr *hdr, u8 *pdesc_tx, + struct ieee80211_tx_info *info, + struct ieee80211_sta *sta, struct sk_buff *skb, + u8 hw_queue, struct rtl_tcb_desc *ptcb_desc); +bool rtl8723be_rx_query_desc(struct ieee80211_hw *hw, + struct rtl_stats *status, + struct ieee80211_rx_status *rx_status, + u8 *pdesc, struct sk_buff *skb); +void rtl8723be_set_desc(u8 *pdesc, bool istx, u8 desc_name, u8 *val); +u32 rtl8723be_get_desc(u8 *pdesc, bool istx, u8 desc_name); +bool rtl8723be_is_tx_desc_closed(struct ieee80211_hw *hw, + u8 hw_queue, u16 index); +void rtl8723be_tx_polling(struct ieee80211_hw *hw, u8 hw_queue); +void rtl8723be_tx_fill_cmddesc(struct ieee80211_hw *hw, u8 *pdesc, + bool b_firstseg, bool b_lastseg, + struct sk_buff *skb); +#endif --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723com/Makefile +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723com/Makefile @@ -0,0 +1,9 @@ +rtl8723-common-objs := \ + main.o \ + dm_common.o \ + fw_common.o \ + phy_common.o + +obj-$(CONFIG_RTL8723_COMMON) += rtl8723-common.o + +ccflags-y += -D__CHECK_ENDIAN__ --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723com/dm_common.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723com/dm_common.c @@ -0,0 +1,65 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2014 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#include "../wifi.h" +#include "dm_common.h" +#include "../rtl8723ae/dm.h" +#include + +/* These routines are common to RTL8723AE and RTL8723bE */ + +void rtl8723_dm_init_dynamic_txpower(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + rtlpriv->dm.dynamic_txpower_enable = false; + + rtlpriv->dm.last_dtp_lvl = TXHIGHPWRLEVEL_NORMAL; + rtlpriv->dm.dynamic_txhighpower_lvl = TXHIGHPWRLEVEL_NORMAL; +} +EXPORT_SYMBOL_GPL(rtl8723_dm_init_dynamic_txpower); + +void rtl8723_dm_init_edca_turbo(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + rtlpriv->dm.current_turbo_edca = false; + rtlpriv->dm.is_any_nonbepkts = false; + rtlpriv->dm.is_cur_rdlstate = false; +} +EXPORT_SYMBOL_GPL(rtl8723_dm_init_edca_turbo); + +void rtl8723_dm_init_dynamic_bb_powersaving(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + rtlpriv->dm_pstable.pre_ccastate = CCA_MAX; + rtlpriv->dm_pstable.cur_ccasate = CCA_MAX; + rtlpriv->dm_pstable.pre_rfstate = RF_MAX; + rtlpriv->dm_pstable.cur_rfstate = RF_MAX; + rtlpriv->dm_pstable.rssi_val_min = 0; + rtlpriv->dm_pstable.initialize = 0; +} +EXPORT_SYMBOL_GPL(rtl8723_dm_init_dynamic_bb_powersaving); --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723com/dm_common.h +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723com/dm_common.h @@ -0,0 +1,33 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2014 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#ifndef __DM_COMMON_H__ +#define __DM_COMMON_H__ + +void rtl8723_dm_init_dynamic_txpower(struct ieee80211_hw *hw); +void rtl8723_dm_init_edca_turbo(struct ieee80211_hw *hw); +void rtl8723_dm_init_dynamic_bb_powersaving(struct ieee80211_hw *hw); + +#endif --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723com/fw_common.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723com/fw_common.c @@ -0,0 +1,329 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2014 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#include "../wifi.h" +#include "../pci.h" +#include "../base.h" +#include "fw_common.h" +#include + +void rtl8723_enable_fw_download(struct ieee80211_hw *hw, bool enable) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 tmp; + + if (enable) { + tmp = rtl_read_byte(rtlpriv, REG_SYS_FUNC_EN + 1); + rtl_write_byte(rtlpriv, REG_SYS_FUNC_EN + 1, tmp | 0x04); + + tmp = rtl_read_byte(rtlpriv, REG_MCUFWDL); + rtl_write_byte(rtlpriv, REG_MCUFWDL, tmp | 0x01); + + tmp = rtl_read_byte(rtlpriv, REG_MCUFWDL + 2); + rtl_write_byte(rtlpriv, REG_MCUFWDL + 2, tmp & 0xf7); + } else { + tmp = rtl_read_byte(rtlpriv, REG_MCUFWDL); + rtl_write_byte(rtlpriv, REG_MCUFWDL, tmp & 0xfe); + + rtl_write_byte(rtlpriv, REG_MCUFWDL + 1, 0x00); + } +} +EXPORT_SYMBOL_GPL(rtl8723_enable_fw_download); + +void rtl8723_fw_block_write(struct ieee80211_hw *hw, + const u8 *buffer, u32 size) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 blocksize = sizeof(u32); + u8 *bufferptr = (u8 *)buffer; + u32 *pu4byteptr = (u32 *)buffer; + u32 i, offset, blockcount, remainsize; + + blockcount = size / blocksize; + remainsize = size % blocksize; + + for (i = 0; i < blockcount; i++) { + offset = i * blocksize; + rtl_write_dword(rtlpriv, (FW_8192C_START_ADDRESS + offset), + *(pu4byteptr + i)); + } + if (remainsize) { + offset = blockcount * blocksize; + bufferptr += offset; + for (i = 0; i < remainsize; i++) { + rtl_write_byte(rtlpriv, + (FW_8192C_START_ADDRESS + offset + i), + *(bufferptr + i)); + } + } +} +EXPORT_SYMBOL_GPL(rtl8723_fw_block_write); + +void rtl8723_fw_page_write(struct ieee80211_hw *hw, + u32 page, const u8 *buffer, u32 size) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 value8; + u8 u8page = (u8) (page & 0x07); + + value8 = (rtl_read_byte(rtlpriv, REG_MCUFWDL + 2) & 0xF8) | u8page; + + rtl_write_byte(rtlpriv, (REG_MCUFWDL + 2), value8); + rtl8723_fw_block_write(hw, buffer, size); +} +EXPORT_SYMBOL_GPL(rtl8723_fw_page_write); + +static void rtl8723_fill_dummy(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; +} + +void rtl8723_write_fw(struct ieee80211_hw *hw, + enum version_8723e version, + u8 *buffer, u32 size) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 *bufferptr = (u8 *)buffer; + u32 pagenums, remainsize; + u32 page, offset; + + RT_TRACE(rtlpriv, COMP_FW, DBG_LOUD, "FW size is %d bytes,\n", size); + + rtl8723_fill_dummy(bufferptr, &size); + + pagenums = size / FW_8192C_PAGE_SIZE; + remainsize = size % FW_8192C_PAGE_SIZE; + + if (pagenums > 8) { + RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, + "Page numbers should not greater then 8\n"); + } + for (page = 0; page < pagenums; page++) { + offset = page * FW_8192C_PAGE_SIZE; + rtl8723_fw_page_write(hw, page, (bufferptr + offset), + FW_8192C_PAGE_SIZE); + } + if (remainsize) { + offset = pagenums * FW_8192C_PAGE_SIZE; + page = pagenums; + rtl8723_fw_page_write(hw, page, (bufferptr + offset), + remainsize); + } +} +EXPORT_SYMBOL_GPL(rtl8723_write_fw); + +void rtl8723ae_firmware_selfreset(struct ieee80211_hw *hw) +{ + u8 u1tmp; + u8 delay = 100; + struct rtl_priv *rtlpriv = rtl_priv(hw); + + rtl_write_byte(rtlpriv, REG_HMETFR + 3, 0x20); + u1tmp = rtl_read_byte(rtlpriv, REG_SYS_FUNC_EN + 1); + + while (u1tmp & BIT(2)) { + delay--; + if (delay == 0) + break; + udelay(50); + u1tmp = rtl_read_byte(rtlpriv, REG_SYS_FUNC_EN + 1); + } + if (delay == 0) { + u1tmp = rtl_read_byte(rtlpriv, REG_SYS_FUNC_EN + 1); + rtl_write_byte(rtlpriv, REG_SYS_FUNC_EN + 1, u1tmp&(~BIT(2))); + } +} +EXPORT_SYMBOL_GPL(rtl8723ae_firmware_selfreset); + +void rtl8723be_firmware_selfreset(struct ieee80211_hw *hw) +{ + u8 u1b_tmp; + struct rtl_priv *rtlpriv = rtl_priv(hw); + + u1b_tmp = rtl_read_byte(rtlpriv, REG_RSV_CTRL + 1); + rtl_write_byte(rtlpriv, REG_RSV_CTRL + 1, (u1b_tmp & (~BIT(0)))); + + u1b_tmp = rtl_read_byte(rtlpriv, REG_SYS_FUNC_EN + 1); + rtl_write_byte(rtlpriv, REG_SYS_FUNC_EN + 1, (u1b_tmp & (~BIT(2)))); + udelay(50); + + u1b_tmp = rtl_read_byte(rtlpriv, REG_RSV_CTRL + 1); + rtl_write_byte(rtlpriv, REG_RSV_CTRL + 1, (u1b_tmp | BIT(0))); + + u1b_tmp = rtl_read_byte(rtlpriv, REG_SYS_FUNC_EN + 1); + rtl_write_byte(rtlpriv, REG_SYS_FUNC_EN + 1, (u1b_tmp | BIT(2))); + + RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, + " _8051Reset8723be(): 8051 reset success .\n"); +} +EXPORT_SYMBOL_GPL(rtl8723be_firmware_selfreset); + +int rtl8723_fw_free_to_go(struct ieee80211_hw *hw, bool is_8723be) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + int err = -EIO; + u32 counter = 0; + u32 value32; + + do { + value32 = rtl_read_dword(rtlpriv, REG_MCUFWDL); + } while ((counter++ < FW_8192C_POLLING_TIMEOUT_COUNT) && + (!(value32 & FWDL_CHKSUM_RPT))); + + if (counter >= FW_8192C_POLLING_TIMEOUT_COUNT) { + RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, + "chksum report fail ! REG_MCUFWDL:0x%08x .\n", + value32); + goto exit; + } + RT_TRACE(rtlpriv, COMP_FW, DBG_TRACE, + "Checksum report OK ! REG_MCUFWDL:0x%08x .\n", value32); + + value32 = rtl_read_dword(rtlpriv, REG_MCUFWDL) | MCUFWDL_RDY; + value32 &= ~WINTINI_RDY; + rtl_write_dword(rtlpriv, REG_MCUFWDL, value32); + + if (is_8723be) + rtl8723be_firmware_selfreset(hw); + counter = 0; + + do { + value32 = rtl_read_dword(rtlpriv, REG_MCUFWDL); + if (value32 & WINTINI_RDY) { + RT_TRACE(rtlpriv, COMP_FW, DBG_TRACE, + "Polling FW ready success!! " + "REG_MCUFWDL:0x%08x .\n", + value32); + err = 0; + goto exit; + } + udelay(FW_8192C_POLLING_DELAY); + + } while (counter++ < FW_8192C_POLLING_TIMEOUT_COUNT); + + RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, + "Polling FW ready fail!! REG_MCUFWDL:0x%08x .\n", + value32); + +exit: + return err; +} +EXPORT_SYMBOL_GPL(rtl8723_fw_free_to_go); + +int rtl8723_download_fw(struct ieee80211_hw *hw, + bool is_8723be) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + struct rtl92c_firmware_header *pfwheader; + u8 *pfwdata; + u32 fwsize; + int err; + enum version_8723e version = rtlhal->version; + + if (!rtlhal->pfirmware) + return 1; + + pfwheader = (struct rtl92c_firmware_header *)rtlhal->pfirmware; + pfwdata = (u8 *)rtlhal->pfirmware; + fwsize = rtlhal->fwsize; + RT_TRACE(rtlpriv, COMP_FW, DBG_DMESG, + "normal Firmware SIZE %d\n", fwsize); + + if (rtlpriv->cfg->ops->is_fw_header(pfwheader)) { + RT_TRACE(rtlpriv, COMP_FW, DBG_EMERG, + "Firmware Version(%d), Signature(%#x), Size(%d)\n", + pfwheader->version, pfwheader->signature, + (int)sizeof(struct rtl92c_firmware_header)); + + pfwdata = pfwdata + sizeof(struct rtl92c_firmware_header); + fwsize = fwsize - sizeof(struct rtl92c_firmware_header); + } + if (rtl_read_byte(rtlpriv, REG_MCUFWDL) & BIT(7)) { + rtl_write_byte(rtlpriv, REG_MCUFWDL, 0); + if (is_8723be) + rtl8723be_firmware_selfreset(hw); + else + rtl8723ae_firmware_selfreset(hw); + } + rtl8723_enable_fw_download(hw, true); + rtl8723_write_fw(hw, version, pfwdata, fwsize); + rtl8723_enable_fw_download(hw, false); + + err = rtl8723_fw_free_to_go(hw, is_8723be); + if (err) { + RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, + "Firmware is not ready to run!\n"); + } else { + RT_TRACE(rtlpriv, COMP_FW, DBG_LOUD, + "Firmware is ready to run!\n"); + } + return 0; +} +EXPORT_SYMBOL_GPL(rtl8723_download_fw); + +bool rtl8723_cmd_send_packet(struct ieee80211_hw *hw, + struct sk_buff *skb) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + struct rtl8192_tx_ring *ring; + struct rtl_tx_desc *pdesc; + struct sk_buff *pskb = NULL; + u8 own; + unsigned long flags; + + ring = &rtlpci->tx_ring[BEACON_QUEUE]; + + pskb = __skb_dequeue(&ring->queue); + if (pskb) + kfree_skb(pskb); + + spin_lock_irqsave(&rtlpriv->locks.irq_th_lock, flags); + + pdesc = &ring->desc[0]; + own = (u8) rtlpriv->cfg->ops->get_desc((u8 *)pdesc, true, HW_DESC_OWN); + + rtlpriv->cfg->ops->fill_tx_cmddesc(hw, (u8 *)pdesc, 1, 1, skb); + + __skb_queue_tail(&ring->queue, skb); + + spin_unlock_irqrestore(&rtlpriv->locks.irq_th_lock, flags); + + rtlpriv->cfg->ops->tx_polling(hw, BEACON_QUEUE); + + return true; +} +EXPORT_SYMBOL_GPL(rtl8723_cmd_send_packet); --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723com/fw_common.h +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723com/fw_common.h @@ -0,0 +1,126 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2014 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#ifndef __FW_COMMON_H__ +#define __FW_COMMON_H__ + +#define REG_SYS_FUNC_EN 0x0002 +#define REG_MCUFWDL 0x0080 +#define FW_8192C_START_ADDRESS 0x1000 +#define FW_8192C_PAGE_SIZE 4096 +#define FW_8192C_POLLING_TIMEOUT_COUNT 6000 +#define FW_8192C_POLLING_DELAY 5 + +#define MCUFWDL_RDY BIT(1) +#define FWDL_CHKSUM_RPT BIT(2) +#define WINTINI_RDY BIT(6) + +#define REG_RSV_CTRL 0x001C +#define REG_HMETFR 0x01CC + +enum version_8723e { + VERSION_TEST_UMC_CHIP_8723 = 0x0081, + VERSION_NORMAL_UMC_CHIP_8723_1T1R_A_CUT = 0x0089, + VERSION_NORMAL_UMC_CHIP_8723_1T1R_B_CUT = 0x1089, + VERSION_TEST_CHIP_1T1R_8723B = 0x0106, + VERSION_NORMAL_SMIC_CHIP_1T1R_8723B = 0x010E, + VERSION_UNKNOWN = 0xFF, +}; + +enum rtl8723ae_h2c_cmd { + H2C_AP_OFFLOAD = 0, + H2C_SETPWRMODE = 1, + H2C_JOINBSSRPT = 2, + H2C_RSVDPAGE = 3, + H2C_RSSI_REPORT = 4, + H2C_P2P_PS_CTW_CMD = 5, + H2C_P2P_PS_OFFLOAD = 6, + H2C_RA_MASK = 7, + MAX_H2CCMD +}; + +enum rtl8723be_cmd { + H2C_8723BE_RSVDPAGE = 0, + H2C_8723BE_JOINBSSRPT = 1, + H2C_8723BE_SCAN = 2, + H2C_8723BE_KEEP_ALIVE_CTRL = 3, + H2C_8723BE_DISCONNECT_DECISION = 4, + H2C_8723BE_INIT_OFFLOAD = 6, + H2C_8723BE_AP_OFFLOAD = 8, + H2C_8723BE_BCN_RSVDPAGE = 9, + H2C_8723BE_PROBERSP_RSVDPAGE = 10, + + H2C_8723BE_SETPWRMODE = 0x20, + H2C_8723BE_PS_TUNING_PARA = 0x21, + H2C_8723BE_PS_TUNING_PARA2 = 0x22, + H2C_8723BE_PS_LPS_PARA = 0x23, + H2C_8723BE_P2P_PS_OFFLOAD = 0x24, + + H2C_8723BE_WO_WLAN = 0x80, + H2C_8723BE_REMOTE_WAKE_CTRL = 0x81, + H2C_8723BE_AOAC_GLOBAL_INFO = 0x82, + H2C_8723BE_AOAC_RSVDPAGE = 0x83, + H2C_8723BE_RSSI_REPORT = 0x42, + H2C_8723BE_RA_MASK = 0x40, + H2C_8723BE_SELECTIVE_SUSPEND_ROF_CMD, + H2C_8723BE_P2P_PS_MODE, + H2C_8723BE_PSD_RESULT, + /*Not defined CTW CMD for P2P yet*/ + H2C_8723BE_P2P_PS_CTW_CMD, + MAX_8723BE_H2CCMD +}; + +struct rtl92c_firmware_header { + u16 signature; + u8 category; + u8 function; + u16 version; + u8 subversion; + u8 rsvd1; + u8 month; + u8 date; + u8 hour; + u8 minute; + u16 ramcodesize; + u16 rsvd2; + u32 svnindex; + u32 rsvd3; + u32 rsvd4; + u32 rsvd5; +}; + +void rtl8723ae_firmware_selfreset(struct ieee80211_hw *hw); +void rtl8723be_firmware_selfreset(struct ieee80211_hw *hw); +void rtl8723_enable_fw_download(struct ieee80211_hw *hw, bool enable); +void rtl8723_fw_block_write(struct ieee80211_hw *hw, + const u8 *buffer, u32 size); +void rtl8723_fw_page_write(struct ieee80211_hw *hw, + u32 page, const u8 *buffer, u32 size); +void rtl8723_write_fw(struct ieee80211_hw *hw, + enum version_8723e version, + u8 *buffer, u32 size); +int rtl8723_fw_free_to_go(struct ieee80211_hw *hw, bool is_8723be); +int rtl8723_download_fw(struct ieee80211_hw *hw, bool is_8723be); +#endif --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723com/main.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723com/main.c @@ -0,0 +1,33 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2014 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#include "../wifi.h" +#include + + +MODULE_AUTHOR("Realtek WlanFAE "); +MODULE_AUTHOR("Larry Finger "); +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("Realtek RTL8723AE/RTL8723BE 802.11n PCI wireless common routines"); --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723com/phy_common.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723com/phy_common.c @@ -0,0 +1,434 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2014 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#include "../wifi.h" +#include "phy_common.h" +#include "../rtl8723ae/reg.h" +#include + +/* These routines are common to RTL8723AE and RTL8723bE */ + +u32 rtl8723_phy_query_bb_reg(struct ieee80211_hw *hw, + u32 regaddr, u32 bitmask) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 returnvalue, originalvalue, bitshift; + + RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE, + "regaddr(%#x), bitmask(%#x)\n", regaddr, bitmask); + originalvalue = rtl_read_dword(rtlpriv, regaddr); + bitshift = rtl8723_phy_calculate_bit_shift(bitmask); + returnvalue = (originalvalue & bitmask) >> bitshift; + + RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE, + "BBR MASK = 0x%x Addr[0x%x]= 0x%x\n", + bitmask, regaddr, originalvalue); + + return returnvalue; +} +EXPORT_SYMBOL_GPL(rtl8723_phy_query_bb_reg); + +void rtl8723_phy_set_bb_reg(struct ieee80211_hw *hw, u32 regaddr, + u32 bitmask, u32 data) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 originalvalue, bitshift; + + RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE, + "regaddr(%#x), bitmask(%#x), data(%#x)\n", + regaddr, bitmask, data); + + if (bitmask != MASKDWORD) { + originalvalue = rtl_read_dword(rtlpriv, regaddr); + bitshift = rtl8723_phy_calculate_bit_shift(bitmask); + data = ((originalvalue & (~bitmask)) | (data << bitshift)); + } + + rtl_write_dword(rtlpriv, regaddr, data); + + RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE, + "regaddr(%#x), bitmask(%#x), data(%#x)\n", + regaddr, bitmask, data); +} +EXPORT_SYMBOL_GPL(rtl8723_phy_set_bb_reg); + +u32 rtl8723_phy_calculate_bit_shift(u32 bitmask) +{ + u32 i; + + for (i = 0; i <= 31; i++) { + if (((bitmask >> i) & 0x1) == 1) + break; + } + return i; +} +EXPORT_SYMBOL_GPL(rtl8723_phy_calculate_bit_shift); + +u32 rtl8723_phy_rf_serial_read(struct ieee80211_hw *hw, + enum radio_path rfpath, u32 offset) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct bb_reg_def *pphyreg = &rtlphy->phyreg_def[rfpath]; + u32 newoffset; + u32 tmplong, tmplong2; + u8 rfpi_enable = 0; + u32 retvalue; + + offset &= 0xff; + newoffset = offset; + if (RT_CANNOT_IO(hw)) { + RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, "return all one\n"); + return 0xFFFFFFFF; + } + tmplong = rtl_get_bbreg(hw, RFPGA0_XA_HSSIPARAMETER2, MASKDWORD); + if (rfpath == RF90_PATH_A) + tmplong2 = tmplong; + else + tmplong2 = rtl_get_bbreg(hw, pphyreg->rfhssi_para2, MASKDWORD); + tmplong2 = (tmplong2 & (~BLSSIREADADDRESS)) | + (newoffset << 23) | BLSSIREADEDGE; + rtl_set_bbreg(hw, RFPGA0_XA_HSSIPARAMETER2, MASKDWORD, + tmplong & (~BLSSIREADEDGE)); + mdelay(1); + rtl_set_bbreg(hw, pphyreg->rfhssi_para2, MASKDWORD, tmplong2); + mdelay(2); + if (rfpath == RF90_PATH_A) + rfpi_enable = (u8) rtl_get_bbreg(hw, RFPGA0_XA_HSSIPARAMETER1, + BIT(8)); + else if (rfpath == RF90_PATH_B) + rfpi_enable = (u8) rtl_get_bbreg(hw, RFPGA0_XB_HSSIPARAMETER1, + BIT(8)); + if (rfpi_enable) + retvalue = rtl_get_bbreg(hw, pphyreg->rf_rbpi, + BLSSIREADBACKDATA); + else + retvalue = rtl_get_bbreg(hw, pphyreg->rf_rb, + BLSSIREADBACKDATA); + RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE, + "RFR-%d Addr[0x%x]= 0x%x\n", + rfpath, pphyreg->rf_rb, retvalue); + return retvalue; +} +EXPORT_SYMBOL_GPL(rtl8723_phy_rf_serial_read); + +void rtl8723_phy_rf_serial_write(struct ieee80211_hw *hw, + enum radio_path rfpath, + u32 offset, u32 data) +{ + u32 data_and_addr; + u32 newoffset; + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct bb_reg_def *pphyreg = &rtlphy->phyreg_def[rfpath]; + + if (RT_CANNOT_IO(hw)) { + RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, "stop\n"); + return; + } + offset &= 0xff; + newoffset = offset; + data_and_addr = ((newoffset << 20) | (data & 0x000fffff)) & 0x0fffffff; + rtl_set_bbreg(hw, pphyreg->rf3wire_offset, MASKDWORD, data_and_addr); + RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE, + "RFW-%d Addr[0x%x]= 0x%x\n", rfpath, + pphyreg->rf3wire_offset, data_and_addr); +} +EXPORT_SYMBOL_GPL(rtl8723_phy_rf_serial_write); + +long rtl8723_phy_txpwr_idx_to_dbm(struct ieee80211_hw *hw, + enum wireless_mode wirelessmode, + u8 txpwridx) +{ + long offset; + long pwrout_dbm; + + switch (wirelessmode) { + case WIRELESS_MODE_B: + offset = -7; + break; + case WIRELESS_MODE_G: + case WIRELESS_MODE_N_24G: + default: + offset = -8; + break; + } + pwrout_dbm = txpwridx / 2 + offset; + return pwrout_dbm; +} +EXPORT_SYMBOL_GPL(rtl8723_phy_txpwr_idx_to_dbm); + +void rtl8723_phy_init_bb_rf_reg_def(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + + rtlphy->phyreg_def[RF90_PATH_A].rfintfs = RFPGA0_XAB_RFINTERFACESW; + rtlphy->phyreg_def[RF90_PATH_B].rfintfs = RFPGA0_XAB_RFINTERFACESW; + rtlphy->phyreg_def[RF90_PATH_C].rfintfs = RFPGA0_XCD_RFINTERFACESW; + rtlphy->phyreg_def[RF90_PATH_D].rfintfs = RFPGA0_XCD_RFINTERFACESW; + + rtlphy->phyreg_def[RF90_PATH_A].rfintfi = RFPGA0_XAB_RFINTERFACERB; + rtlphy->phyreg_def[RF90_PATH_B].rfintfi = RFPGA0_XAB_RFINTERFACERB; + rtlphy->phyreg_def[RF90_PATH_C].rfintfi = RFPGA0_XCD_RFINTERFACERB; + rtlphy->phyreg_def[RF90_PATH_D].rfintfi = RFPGA0_XCD_RFINTERFACERB; + + rtlphy->phyreg_def[RF90_PATH_A].rfintfo = RFPGA0_XA_RFINTERFACEOE; + rtlphy->phyreg_def[RF90_PATH_B].rfintfo = RFPGA0_XB_RFINTERFACEOE; + + rtlphy->phyreg_def[RF90_PATH_A].rfintfe = RFPGA0_XA_RFINTERFACEOE; + rtlphy->phyreg_def[RF90_PATH_B].rfintfe = RFPGA0_XB_RFINTERFACEOE; + + rtlphy->phyreg_def[RF90_PATH_A].rf3wire_offset = + RFPGA0_XA_LSSIPARAMETER; + rtlphy->phyreg_def[RF90_PATH_B].rf3wire_offset = + RFPGA0_XB_LSSIPARAMETER; + + rtlphy->phyreg_def[RF90_PATH_A].rflssi_select = rFPGA0_XAB_RFPARAMETER; + rtlphy->phyreg_def[RF90_PATH_B].rflssi_select = rFPGA0_XAB_RFPARAMETER; + rtlphy->phyreg_def[RF90_PATH_C].rflssi_select = rFPGA0_XCD_RFPARAMETER; + rtlphy->phyreg_def[RF90_PATH_D].rflssi_select = rFPGA0_XCD_RFPARAMETER; + + rtlphy->phyreg_def[RF90_PATH_A].rftxgain_stage = RFPGA0_TXGAINSTAGE; + rtlphy->phyreg_def[RF90_PATH_B].rftxgain_stage = RFPGA0_TXGAINSTAGE; + rtlphy->phyreg_def[RF90_PATH_C].rftxgain_stage = RFPGA0_TXGAINSTAGE; + rtlphy->phyreg_def[RF90_PATH_D].rftxgain_stage = RFPGA0_TXGAINSTAGE; + + rtlphy->phyreg_def[RF90_PATH_A].rfhssi_para1 = RFPGA0_XA_HSSIPARAMETER1; + rtlphy->phyreg_def[RF90_PATH_B].rfhssi_para1 = RFPGA0_XB_HSSIPARAMETER1; + + rtlphy->phyreg_def[RF90_PATH_A].rfhssi_para2 = RFPGA0_XA_HSSIPARAMETER2; + rtlphy->phyreg_def[RF90_PATH_B].rfhssi_para2 = RFPGA0_XB_HSSIPARAMETER2; + + rtlphy->phyreg_def[RF90_PATH_A].rfsw_ctrl = RFPGA0_XAB_SWITCHCONTROL; + rtlphy->phyreg_def[RF90_PATH_B].rfsw_ctrl = RFPGA0_XAB_SWITCHCONTROL; + rtlphy->phyreg_def[RF90_PATH_C].rfsw_ctrl = RFPGA0_XCD_SWITCHCONTROL; + rtlphy->phyreg_def[RF90_PATH_D].rfsw_ctrl = RFPGA0_XCD_SWITCHCONTROL; + + rtlphy->phyreg_def[RF90_PATH_A].rfagc_control1 = ROFDM0_XAAGCCORE1; + rtlphy->phyreg_def[RF90_PATH_B].rfagc_control1 = ROFDM0_XBAGCCORE1; + rtlphy->phyreg_def[RF90_PATH_C].rfagc_control1 = ROFDM0_XCAGCCORE1; + rtlphy->phyreg_def[RF90_PATH_D].rfagc_control1 = ROFDM0_XDAGCCORE1; + + rtlphy->phyreg_def[RF90_PATH_A].rfagc_control2 = ROFDM0_XAAGCCORE2; + rtlphy->phyreg_def[RF90_PATH_B].rfagc_control2 = ROFDM0_XBAGCCORE2; + rtlphy->phyreg_def[RF90_PATH_C].rfagc_control2 = ROFDM0_XCAGCCORE2; + rtlphy->phyreg_def[RF90_PATH_D].rfagc_control2 = ROFDM0_XDAGCCORE2; + + rtlphy->phyreg_def[RF90_PATH_A].rfrxiq_imbal = ROFDM0_XARXIQIMBALANCE; + rtlphy->phyreg_def[RF90_PATH_B].rfrxiq_imbal = ROFDM0_XBRXIQIMBALANCE; + rtlphy->phyreg_def[RF90_PATH_C].rfrxiq_imbal = ROFDM0_XCRXIQIMBANLANCE; + rtlphy->phyreg_def[RF90_PATH_D].rfrxiq_imbal = ROFDM0_XDRXIQIMBALANCE; + + rtlphy->phyreg_def[RF90_PATH_A].rfrx_afe = ROFDM0_XARXAFE; + rtlphy->phyreg_def[RF90_PATH_B].rfrx_afe = ROFDM0_XBRXAFE; + rtlphy->phyreg_def[RF90_PATH_C].rfrx_afe = ROFDM0_XCRXAFE; + rtlphy->phyreg_def[RF90_PATH_D].rfrx_afe = ROFDM0_XDRXAFE; + + rtlphy->phyreg_def[RF90_PATH_A].rftxiq_imbal = ROFDM0_XATXIQIMBALANCE; + rtlphy->phyreg_def[RF90_PATH_B].rftxiq_imbal = ROFDM0_XBTXIQIMBALANCE; + rtlphy->phyreg_def[RF90_PATH_C].rftxiq_imbal = ROFDM0_XCTXIQIMBALANCE; + rtlphy->phyreg_def[RF90_PATH_D].rftxiq_imbal = ROFDM0_XDTXIQIMBALANCE; + + rtlphy->phyreg_def[RF90_PATH_A].rftx_afe = ROFDM0_XATXAFE; + rtlphy->phyreg_def[RF90_PATH_B].rftx_afe = ROFDM0_XBTXAFE; + rtlphy->phyreg_def[RF90_PATH_C].rftx_afe = ROFDM0_XCTXAFE; + rtlphy->phyreg_def[RF90_PATH_D].rftx_afe = ROFDM0_XDTXAFE; + + rtlphy->phyreg_def[RF90_PATH_A].rf_rb = RFPGA0_XA_LSSIREADBACK; + rtlphy->phyreg_def[RF90_PATH_B].rf_rb = RFPGA0_XB_LSSIREADBACK; + rtlphy->phyreg_def[RF90_PATH_C].rf_rb = RFPGA0_XC_LSSIREADBACK; + rtlphy->phyreg_def[RF90_PATH_D].rf_rb = RFPGA0_XD_LSSIREADBACK; + + rtlphy->phyreg_def[RF90_PATH_A].rf_rbpi = TRANSCEIVEA_HSPI_READBACK; + rtlphy->phyreg_def[RF90_PATH_B].rf_rbpi = TRANSCEIVEB_HSPI_READBACK; +} +EXPORT_SYMBOL_GPL(rtl8723_phy_init_bb_rf_reg_def); + +bool rtl8723_phy_set_sw_chnl_cmdarray(struct swchnlcmd *cmdtable, + u32 cmdtableidx, + u32 cmdtablesz, + enum swchnlcmd_id cmdid, + u32 para1, u32 para2, + u32 msdelay) +{ + struct swchnlcmd *pcmd; + + if (cmdtable == NULL) { + RT_ASSERT(false, "cmdtable cannot be NULL.\n"); + return false; + } + + if (cmdtableidx >= cmdtablesz) + return false; + + pcmd = cmdtable + cmdtableidx; + pcmd->cmdid = cmdid; + pcmd->para1 = para1; + pcmd->para2 = para2; + pcmd->msdelay = msdelay; + return true; +} +EXPORT_SYMBOL_GPL(rtl8723_phy_set_sw_chnl_cmdarray); + +void rtl8723_phy_path_a_fill_iqk_matrix(struct ieee80211_hw *hw, + bool iqk_ok, + long result[][8], + u8 final_candidate, + bool btxonly) +{ + u32 oldval_0, x, tx0_a, reg; + long y, tx0_c; + + if (final_candidate == 0xFF) { + return; + } else if (iqk_ok) { + oldval_0 = (rtl_get_bbreg(hw, ROFDM0_XATXIQIMBALANCE, + MASKDWORD) >> 22) & 0x3FF; + x = result[final_candidate][0]; + if ((x & 0x00000200) != 0) + x = x | 0xFFFFFC00; + tx0_a = (x * oldval_0) >> 8; + rtl_set_bbreg(hw, ROFDM0_XATXIQIMBALANCE, 0x3FF, tx0_a); + rtl_set_bbreg(hw, 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; + rtl_set_bbreg(hw, ROFDM0_XCTXAFE, 0xF0000000, + ((tx0_c & 0x3C0) >> 6)); + rtl_set_bbreg(hw, ROFDM0_XATXIQIMBALANCE, 0x003F0000, + (tx0_c & 0x3F)); + rtl_set_bbreg(hw, ROFDM0_ECCATHRESHOLD, BIT(29), + ((y * oldval_0 >> 7) & 0x1)); + if (btxonly) + return; + reg = result[final_candidate][2]; + rtl_set_bbreg(hw, ROFDM0_XARXIQIMBALANCE, 0x3FF, reg); + reg = result[final_candidate][3] & 0x3F; + rtl_set_bbreg(hw, ROFDM0_XARXIQIMBALANCE, 0xFC00, reg); + reg = (result[final_candidate][3] >> 6) & 0xF; + rtl_set_bbreg(hw, 0xca0, 0xF0000000, reg); + } +} +EXPORT_SYMBOL_GPL(rtl8723_phy_path_a_fill_iqk_matrix); + +void rtl8723_save_adda_registers(struct ieee80211_hw *hw, u32 *addareg, + u32 *addabackup, u32 registernum) +{ + u32 i; + + for (i = 0; i < registernum; i++) + addabackup[i] = rtl_get_bbreg(hw, addareg[i], MASKDWORD); +} +EXPORT_SYMBOL_GPL(rtl8723_save_adda_registers); + +void rtl8723_phy_save_mac_registers(struct ieee80211_hw *hw, + u32 *macreg, u32 *macbackup) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 i; + + for (i = 0; i < (IQK_MAC_REG_NUM - 1); i++) + macbackup[i] = rtl_read_byte(rtlpriv, macreg[i]); + macbackup[i] = rtl_read_dword(rtlpriv, macreg[i]); +} +EXPORT_SYMBOL_GPL(rtl8723_phy_save_mac_registers); + +void rtl8723_phy_reload_adda_registers(struct ieee80211_hw *hw, + u32 *addareg, u32 *addabackup, + u32 regiesternum) +{ + u32 i; + + for (i = 0; i < regiesternum; i++) + rtl_set_bbreg(hw, addareg[i], MASKDWORD, addabackup[i]); +} +EXPORT_SYMBOL_GPL(rtl8723_phy_reload_adda_registers); + +void rtl8723_phy_reload_mac_registers(struct ieee80211_hw *hw, + u32 *macreg, u32 *macbackup) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 i; + + for (i = 0; i < (IQK_MAC_REG_NUM - 1); i++) + rtl_write_byte(rtlpriv, macreg[i], (u8) macbackup[i]); + rtl_write_dword(rtlpriv, macreg[i], macbackup[i]); +} +EXPORT_SYMBOL_GPL(rtl8723_phy_reload_mac_registers); + +void rtl8723_phy_path_adda_on(struct ieee80211_hw *hw, u32 *addareg, + bool is_patha_on, bool is2t) +{ + u32 pathon; + u32 i; + + pathon = is_patha_on ? 0x04db25a4 : 0x0b1b25a4; + if (!is2t) { + pathon = 0x0bdb25a0; + rtl_set_bbreg(hw, addareg[0], MASKDWORD, 0x0b1b25a0); + } else { + rtl_set_bbreg(hw, addareg[0], MASKDWORD, pathon); + } + + for (i = 1; i < IQK_ADDA_REG_NUM; i++) + rtl_set_bbreg(hw, addareg[i], MASKDWORD, pathon); +} +EXPORT_SYMBOL_GPL(rtl8723_phy_path_adda_on); + +void rtl8723_phy_mac_setting_calibration(struct ieee80211_hw *hw, + u32 *macreg, u32 *macbackup) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 i = 0; + + rtl_write_byte(rtlpriv, macreg[i], 0x3F); + + for (i = 1; i < (IQK_MAC_REG_NUM - 1); i++) + rtl_write_byte(rtlpriv, macreg[i], + (u8) (macbackup[i] & (~BIT(3)))); + rtl_write_byte(rtlpriv, macreg[i], (u8) (macbackup[i] & (~BIT(5)))); +} +EXPORT_SYMBOL_GPL(rtl8723_phy_mac_setting_calibration); + +void rtl8723_phy_path_a_standby(struct ieee80211_hw *hw) +{ + rtl_set_bbreg(hw, 0xe28, MASKDWORD, 0x0); + rtl_set_bbreg(hw, 0x840, MASKDWORD, 0x00010000); + rtl_set_bbreg(hw, 0xe28, MASKDWORD, 0x80800000); +} +EXPORT_SYMBOL_GPL(rtl8723_phy_path_a_standby); + +void rtl8723_phy_pi_mode_switch(struct ieee80211_hw *hw, bool pi_mode) +{ + u32 mode; + + mode = pi_mode ? 0x01000100 : 0x01000000; + rtl_set_bbreg(hw, 0x820, MASKDWORD, mode); + rtl_set_bbreg(hw, 0x828, MASKDWORD, mode); +} +EXPORT_SYMBOL_GPL(rtl8723_phy_pi_mode_switch); --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/rtl8723com/phy_common.h +++ linux-3.13.0/drivers/net/wireless/rtlwifi/rtl8723com/phy_common.h @@ -0,0 +1,89 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2014 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#ifndef __PHY_COMMON__ +#define __PHY_COMMON__ + +#define RT_CANNOT_IO(hw) false + +enum swchnlcmd_id { + CMDID_END, + CMDID_SET_TXPOWEROWER_LEVEL, + CMDID_BBREGWRITE10, + CMDID_WRITEPORT_ULONG, + CMDID_WRITEPORT_USHORT, + CMDID_WRITEPORT_UCHAR, + CMDID_RF_WRITEREG, +}; + +struct swchnlcmd { + enum swchnlcmd_id cmdid; + u32 para1; + u32 para2; + u32 msdelay; +}; + +u32 rtl8723_phy_query_bb_reg(struct ieee80211_hw *hw, + u32 regaddr, u32 bitmask); +void rtl8723_phy_set_bb_reg(struct ieee80211_hw *hw, u32 regaddr, + u32 bitmask, u32 data); +u32 rtl8723_phy_calculate_bit_shift(u32 bitmask); +u32 rtl8723_phy_rf_serial_read(struct ieee80211_hw *hw, + enum radio_path rfpath, u32 offset); +void rtl8723_phy_rf_serial_write(struct ieee80211_hw *hw, + enum radio_path rfpath, + u32 offset, u32 data); +long rtl8723_phy_txpwr_idx_to_dbm(struct ieee80211_hw *hw, + enum wireless_mode wirelessmode, + u8 txpwridx); +void rtl8723_phy_init_bb_rf_reg_def(struct ieee80211_hw *hw); +bool rtl8723_phy_set_sw_chnl_cmdarray(struct swchnlcmd *cmdtable, + u32 cmdtableidx, + u32 cmdtablesz, + enum swchnlcmd_id cmdid, + u32 para1, u32 para2, + u32 msdelay); +void rtl8723_phy_path_a_fill_iqk_matrix(struct ieee80211_hw *hw, + bool iqk_ok, + long result[][8], + u8 final_candidate, + bool btxonly); +void rtl8723_save_adda_registers(struct ieee80211_hw *hw, u32 *addareg, + u32 *addabackup, u32 registernum); +void rtl8723_phy_save_mac_registers(struct ieee80211_hw *hw, + u32 *macreg, u32 *macbackup); +void rtl8723_phy_reload_adda_registers(struct ieee80211_hw *hw, + u32 *addareg, u32 *addabackup, + u32 regiesternum); +void rtl8723_phy_reload_mac_registers(struct ieee80211_hw *hw, + u32 *macreg, u32 *macbackup); +void rtl8723_phy_path_adda_on(struct ieee80211_hw *hw, u32 *addareg, + bool is_patha_on, bool is2t); +void rtl8723_phy_mac_setting_calibration(struct ieee80211_hw *hw, + u32 *macreg, u32 *macbackup); +void rtl8723_phy_path_a_standby(struct ieee80211_hw *hw); +void rtl8723_phy_pi_mode_switch(struct ieee80211_hw *hw, bool pi_mode); + +#endif --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/stats.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/stats.c @@ -176,6 +176,7 @@ struct rtl_sta_info *drv_priv = NULL; struct ieee80211_sta *sta = NULL; long undec_sm_pwdb; + long undec_sm_cck; rcu_read_lock(); if (rtlpriv->mac80211.opmode != NL80211_IFTYPE_STATION) @@ -185,12 +186,16 @@ if (sta) { drv_priv = (struct rtl_sta_info *) sta->drv_priv; undec_sm_pwdb = drv_priv->rssi_stat.undec_sm_pwdb; + undec_sm_cck = drv_priv->rssi_stat.undec_sm_cck; } else { undec_sm_pwdb = rtlpriv->dm.undec_sm_pwdb; + undec_sm_cck = rtlpriv->dm.undec_sm_cck; } if (undec_sm_pwdb < 0) undec_sm_pwdb = pstatus->rx_pwdb_all; + if (undec_sm_cck < 0) + undec_sm_cck = pstatus->rx_pwdb_all; if (pstatus->rx_pwdb_all > (u32) undec_sm_pwdb) { undec_sm_pwdb = (((undec_sm_pwdb) * (RX_SMOOTH_FACTOR - 1)) + @@ -200,6 +205,15 @@ undec_sm_pwdb = (((undec_sm_pwdb) * (RX_SMOOTH_FACTOR - 1)) + (pstatus->rx_pwdb_all)) / (RX_SMOOTH_FACTOR); } + if (pstatus->rx_pwdb_all > (u32) undec_sm_cck) { + undec_sm_cck = (((undec_sm_pwdb) * + (RX_SMOOTH_FACTOR - 1)) + + (pstatus->rx_pwdb_all)) / (RX_SMOOTH_FACTOR); + undec_sm_cck = undec_sm_cck + 1; + } else { + undec_sm_pwdb = (((undec_sm_cck) * (RX_SMOOTH_FACTOR - 1)) + + (pstatus->rx_pwdb_all)) / (RX_SMOOTH_FACTOR); + } if (sta) { drv_priv->rssi_stat.undec_sm_pwdb = undec_sm_pwdb; --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/usb.c +++ linux-3.13.0/drivers/net/wireless/rtlwifi/usb.c @@ -126,7 +126,7 @@ do { status = usb_control_msg(udev, pipe, request, reqtype, value, - index, pdata, len, 0); /*max. timeout*/ + index, pdata, len, 1000); if (status < 0) { /* firmware download is checksumed, don't retry */ if ((value >= FW_8192C_START_ADDRESS && @@ -410,7 +410,7 @@ mac->current_ampdu_factor = 3; /* QOS */ - rtlusb->acm_method = eAcmWay2_SW; + rtlusb->acm_method = EACMWAY2_SW; /* IRQ */ /* HIMR - turn all on */ @@ -483,6 +483,8 @@ if (unicast) rtlpriv->link_info.num_rx_inperiod++; } + /* static bcn for roaming */ + rtl_beacon_statistic(hw, skb); } } @@ -533,6 +535,8 @@ ieee80211_rx(hw, skb); else dev_kfree_skb_any(skb); + } else { + dev_kfree_skb_any(skb); } } @@ -553,7 +557,7 @@ } } -#define __RX_SKB_MAX_QUEUED 32 +#define __RX_SKB_MAX_QUEUED 64 static void _rtl_rx_work(unsigned long param) { --- linux-3.13.0.orig/drivers/net/wireless/rtlwifi/wifi.h +++ linux-3.13.0/drivers/net/wireless/rtlwifi/wifi.h @@ -49,6 +49,7 @@ #define IQK_ADDA_REG_NUM 16 #define IQK_MAC_REG_NUM 4 +#define IQK_THRESHOLD 8 #define MAX_KEY_LEN 61 #define KEY_BUF_SIZE 5 @@ -96,6 +97,7 @@ #define CHANNEL_MAX_NUMBER_2G 14 #define AVG_THERMAL_NUM 8 #define AVG_THERMAL_NUM_88E 4 +#define AVG_THERMAL_NUM_8723BE 4 #define MAX_TID_COUNT 9 /* for early mode */ @@ -107,6 +109,19 @@ #define MAX_CHNL_GROUP_24G 6 #define MAX_CHNL_GROUP_5G 14 +#define TX_PWR_BY_RATE_NUM_BAND 2 +#define TX_PWR_BY_RATE_NUM_RF 4 +#define TX_PWR_BY_RATE_NUM_SECTION 12 +#define MAX_BASE_NUM_IN_PHY_REG_PG_24G 6 +#define MAX_BASE_NUM_IN_PHY_REG_PG_5G 5 + +enum rf_tx_num { + RF_1TX = 0, + RF_2TX, + RF_MAX_TX_NUM, + RF_TX_NUM_NONIMPLEMENT, +}; + struct txpower_info_2g { u8 index_cck_base[MAX_RF_PATH][MAX_CHNL_GROUP_24G]; u8 index_bw40_base[MAX_RF_PATH][MAX_CHNL_GROUP_24G]; @@ -115,6 +130,8 @@ u8 ofdm_diff[MAX_RF_PATH][MAX_TX_COUNT]; u8 bw20_diff[MAX_RF_PATH][MAX_TX_COUNT]; u8 bw40_diff[MAX_RF_PATH][MAX_TX_COUNT]; + u8 bw80_diff[MAX_RF_PATH][MAX_TX_COUNT]; + u8 bw160_diff[MAX_RF_PATH][MAX_TX_COUNT]; }; struct txpower_info_5g { @@ -125,6 +142,15 @@ u8 bw40_diff[MAX_RF_PATH][MAX_TX_COUNT]; }; +enum rate_section { + CCK = 0, + OFDM, + HT_MCS0_MCS7, + HT_MCS8_MCS15, + VHT_1SSMCS0_1SSMCS9, + VHT_2SSMCS0_2SSMCS9, +}; + enum intf_type { INTF_PCI = 0, INTF_USB = 1, @@ -158,6 +184,7 @@ HARDWARE_TYPE_RTL8192DU, HARDWARE_TYPE_RTL8723AE, HARDWARE_TYPE_RTL8723U, + HARDWARE_TYPE_RTL8723BE, HARDWARE_TYPE_RTL8188EE, /* keep it last */ @@ -195,6 +222,12 @@ _pdesc->rxmcs == DESC92_RATE5_5M || \ _pdesc->rxmcs == DESC92_RATE11M) +#define RTL8723E_RX_HAL_IS_CCK_RATE(rxmcs) \ + ((rxmcs) == DESC92_RATE1M || \ + (rxmcs) == DESC92_RATE2M || \ + (rxmcs) == DESC92_RATE5_5M || \ + (rxmcs) == DESC92_RATE11M) + enum scan_operation_backup_opt { SCAN_OPT_BACKUP = 0, SCAN_OPT_RESTORE, @@ -330,6 +363,7 @@ HAL_DEF_WOWLAN, HW_VAR_MRC, + HW_VAR_KEEP_ALIVE, HW_VAR_MGT_FILTER, HW_VAR_CTRL_FILTER, @@ -348,34 +382,34 @@ 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_819X_CAMEO = 6, + RT_CID_819X_RUNTOP = 7, + RT_CID_819X_SENAO = 8, RT_CID_TOSHIBA = 9, - RT_CID_819x_Netcore = 10, - RT_CID_Nettronix = 11, + RT_CID_819X_NETCORE = 10, + RT_CID_NETTRONIX = 11, RT_CID_DLINK = 12, RT_CID_PRONET = 13, RT_CID_COREGA = 14, - RT_CID_819x_ALPHA = 15, - RT_CID_819x_Sitecom = 16, + RT_CID_819X_ALPHA = 15, + RT_CID_819X_SITECOM = 16, RT_CID_CCX = 17, - RT_CID_819x_Lenovo = 18, - RT_CID_819x_QMI = 19, - RT_CID_819x_Edimax_Belkin = 20, - RT_CID_819x_Sercomm_Belkin = 21, - RT_CID_819x_CAMEO1 = 22, - RT_CID_819x_MSI = 23, - RT_CID_819x_Acer = 24, - RT_CID_819x_HP = 27, - RT_CID_819x_CLEVO = 28, - RT_CID_819x_Arcadyan_Belkin = 29, - RT_CID_819x_SAMSUNG = 30, - RT_CID_819x_WNC_COREGA = 31, - RT_CID_819x_Foxcoon = 32, - RT_CID_819x_DELL = 33, - RT_CID_819x_PRONETS = 34, - RT_CID_819x_Edimax_ASUS = 35, + RT_CID_819X_LENOVO = 18, + RT_CID_819X_QMI = 19, + RT_CID_819X_EDIMAX_BELKIN = 20, + RT_CID_819X_SERCOMM_BELKIN = 21, + RT_CID_819X_CAMEO1 = 22, + RT_CID_819X_MSI = 23, + RT_CID_819X_ACER = 24, + RT_CID_819X_HP = 27, + RT_CID_819X_CLEVO = 28, + RT_CID_819X_ARCADYAN_BELKIN = 29, + RT_CID_819X_SAMSUNG = 30, + RT_CID_819X_WNC_COREGA = 31, + RT_CID_819X_FOXCOON = 32, + RT_CID_819X_DELL = 33, + RT_CID_819X_PRONETS = 34, + RT_CID_819X_EDIMAX_ASUS = 35, RT_CID_NETGEAR = 36, RT_CID_PLANEX = 37, RT_CID_CC_C = 38, @@ -608,7 +642,7 @@ enum acm_method { eAcmWay0_SwAndHw = 0, eAcmWay1_HW = 1, - eAcmWay2_SW = 2, + EACMWAY2_SW = 2, }; enum macphy_mode { @@ -817,9 +851,9 @@ u32 high_rssi_thresh_for_ra; u32 high2low_rssi_thresh_for_ra; u8 low2high_rssi_thresh_for_ra40m; - u32 low_rssi_thresh_for_ra40M; + u32 low_rssi_thresh_for_ra40m; u8 low2high_rssi_thresh_for_ra20m; - u32 low_rssi_thresh_for_ra20M; + u32 low_rssi_thresh_for_ra20m; u32 upper_rssi_threshold_ratr; u32 middleupper_rssi_threshold_ratr; u32 middle_rssi_threshold_ratr; @@ -986,6 +1020,13 @@ u8 cck_high_power; /* MAX_PG_GROUP groups of pwr diff by rates */ u32 mcs_offset[MAX_PG_GROUP][16]; + u32 tx_power_by_rate_offset[TX_PWR_BY_RATE_NUM_BAND] + [TX_PWR_BY_RATE_NUM_RF] + [TX_PWR_BY_RATE_NUM_RF] + [TX_PWR_BY_RATE_NUM_SECTION]; + u8 txpwr_by_rate_base_24g[TX_PWR_BY_RATE_NUM_RF] + [TX_PWR_BY_RATE_NUM_RF] + [MAX_BASE_NUM_IN_PHY_REG_PG_24G]; u8 default_initialgain[4]; /* the current Tx power level */ @@ -1033,6 +1074,7 @@ struct rssi_sta { long undec_sm_pwdb; + long undec_sm_cck; }; struct rtl_tid_data { @@ -1212,6 +1254,7 @@ bool being_init_adapter; bool bbrf_ready; bool mac_func_enable; + bool pre_edcca_enable; struct bt_coexist_8723 hal_coex_8723; enum intf_type interface; @@ -1320,11 +1363,23 @@ bool becomelinked; }; +struct dm_phy_dbg_info { + char rx_snrdb[4]; + u64 num_qry_phy_status; + u64 num_qry_phy_status_cck; + u64 num_qry_phy_status_ofdm; + u16 num_qry_beacon_pkt; + u16 num_non_be_pkt; + s32 rx_evm[4]; +}; + struct rtl_dm { /*PHY status for Dynamic Management */ long entry_min_undec_sm_pwdb; + long undec_sm_cck; long undec_sm_pwdb; /*out dm */ long entry_max_undec_sm_pwdb; + s32 ofdm_pkt_cnt; bool dm_initialgain_enable; bool dynamic_txpower_enable; bool current_turbo_edca; @@ -1339,6 +1394,7 @@ bool inform_fw_driverctrldm; bool current_mrc_switch; u8 txpowercount; + u8 powerindex_backup[6]; u8 thermalvalue_rxgain; u8 thermalvalue_iqk; @@ -1350,20 +1406,36 @@ bool done_txpower; u8 dynamic_txhighpower_lvl; /*Tx high power level */ u8 dm_flag; /*Indicate each dynamic mechanism's status. */ + u8 dm_flag_tmp; u8 dm_type; + u8 dm_rssi_sel; u8 txpower_track_control; bool interrupt_migration; bool disable_tx_int; char ofdm_index[2]; char cck_index; - char delta_power_index; - char delta_power_index_last; - char power_index_offset; + char delta_power_index[MAX_RF_PATH]; + char delta_power_index_last[MAX_RF_PATH]; + char power_index_offset[MAX_RF_PATH]; + + bool one_entry_only; + struct dm_phy_dbg_info dbginfo; + + /* Dynamic ATC switch */ + bool atc_status; + bool large_cfo_hit; + bool is_freeze; + int cfo_tail[2]; + int cfo_ave_pre; + int crystal_cap; + u8 cfo_threshold; + u32 packet_count; + u32 packet_count_pre; /*88e tx power tracking*/ u8 swing_idx_ofdm[2]; u8 swing_idx_ofdm_cur; - u8 swing_idx_ofdm_base; + u8 swing_idx_ofdm_base[MAX_RF_PATH]; bool swing_flag_ofdm; u8 swing_idx_cck; u8 swing_idx_cck_cur; @@ -1416,12 +1488,14 @@ u8 eeprom_tssi_5g[3][2]; /* for 5GL/5GM/5GH band. */ u8 eeprom_pwrlimit_ht20[CHANNEL_GROUP_MAX]; u8 eeprom_pwrlimit_ht40[CHANNEL_GROUP_MAX]; - u8 eeprom_chnlarea_txpwr_cck[2][CHANNEL_GROUP_MAX_2G]; - u8 eeprom_chnlarea_txpwr_ht40_1s[2][CHANNEL_GROUP_MAX]; - u8 eprom_chnl_txpwr_ht40_2sdf[2][CHANNEL_GROUP_MAX]; + u8 eeprom_chnlarea_txpwr_cck[MAX_RF_PATH][CHANNEL_GROUP_MAX_2G]; + u8 eeprom_chnlarea_txpwr_ht40_1s[MAX_RF_PATH][CHANNEL_GROUP_MAX]; + u8 eprom_chnl_txpwr_ht40_2sdf[MAX_RF_PATH][CHANNEL_GROUP_MAX]; u8 txpwrlevel_cck[2][CHANNEL_MAX_NUMBER_2G]; - u8 txpwrlevel_ht40_1s[2][CHANNEL_MAX_NUMBER]; /*For HT 40MHZ pwr */ - u8 txpwrlevel_ht40_2s[2][CHANNEL_MAX_NUMBER]; /*For HT 40MHZ pwr */ + /* For HT 40MHZ pwr */ + u8 txpwrlevel_ht40_1s[MAX_RF_PATH][CHANNEL_MAX_NUMBER]; + u8 txpwrlevel_ht40_2s[MAX_RF_PATH][CHANNEL_MAX_NUMBER]; + u8 txpwr_ht40diff[MAX_RF_PATH][MAX_TX_COUNT];/*BW40_24G_Diff*/ u8 internal_pa_5g[2]; /* pathA / pathB */ u8 eeprom_c9; @@ -1638,6 +1712,8 @@ bool btx_enable_sw_calc_duration; }; +struct rtl92c_firmware_header; + struct rtl_hal_ops { int (*init_sw_vars) (struct ieee80211_hw *hw); void (*deinit_sw_vars) (struct ieee80211_hw *hw); @@ -1694,6 +1770,8 @@ enum led_ctl_mode ledaction); void (*set_desc) (u8 *pdesc, bool istx, u8 desc_name, u8 *val); u32 (*get_desc) (u8 *pdesc, bool istx, u8 desc_name); + bool (*is_tx_desc_closed) (struct ieee80211_hw *hw, + u8 hw_queue, u16 index); void (*tx_polling) (struct ieee80211_hw *hw, u8 hw_queue); void (*enable_hw_sec) (struct ieee80211_hw *hw); void (*set_key) (struct ieee80211_hw *hw, u32 key_index, @@ -1732,6 +1810,8 @@ void (*bt_coex_off_before_lps) (struct ieee80211_hw *hw); void (*fill_h2c_cmd) (struct ieee80211_hw *hw, u8 element_id, u32 cmd_len, u8 *p_cmdbuffer); + bool (*get_btc_status) (void); + bool (*is_fw_header) (struct rtl92c_firmware_header *hdr); }; struct rtl_intf_ops { @@ -1774,6 +1854,10 @@ /* default: 1 = using linked fw power save */ bool fwctrl_lps; + + /* default: 0 = not using MSI interrupts mode */ + /* submodules should set their own defalut value */ + bool msi_support; }; struct rtl_hal_usbint_cfg { @@ -1804,6 +1888,7 @@ bool write_readback; char *name; char *fw_name; + char *alt_fw_name; struct rtl_hal_ops *ops; struct rtl_mod_params *mod_params; struct rtl_hal_usbint_cfg *usb_interface_cfg; @@ -1908,6 +1993,7 @@ u8 cur_ccasate; u8 pre_rfstate; u8 cur_rfstate; + u8 initialize; long rssi_val_min; }; @@ -1948,6 +2034,7 @@ u8 pre_ccastate; u8 cur_ccasate; u8 large_fa_hit; + u8 dig_dynamic_min; u8 forbidden_igi; u8 dig_state; u8 dig_highpwrstate; @@ -1964,6 +2051,7 @@ char backoffval_range_min; u8 dig_min_0; u8 dig_min_1; + u8 bt30_cur_igi; bool media_connect_0; bool media_connect_1; @@ -1978,6 +2066,96 @@ spinlock_t glb_list_lock; }; +struct rtl_btc_info { + u8 bt_type; + u8 btcoexist; + u8 ant_num; +}; + +struct bt_coexist_info { + struct rtl_btc_ops *btc_ops; + struct rtl_btc_info btc_info; + /* EEPROM BT info. */ + u8 eeprom_bt_coexist; + u8 eeprom_bt_type; + u8 eeprom_bt_ant_num; + u8 eeprom_bt_ant_isol; + u8 eeprom_bt_radio_shared; + + u8 bt_coexistence; + u8 bt_ant_num; + u8 bt_coexist_type; + u8 bt_state; + u8 bt_cur_state; /* 0:on, 1:off */ + u8 bt_ant_isolation; /* 0:good, 1:bad */ + u8 bt_pape_ctrl; /* 0:SW, 1:SW/HW dynamic */ + u8 bt_service; + u8 bt_radio_shared_type; + u8 bt_rfreg_origin_1e; + u8 bt_rfreg_origin_1f; + u8 bt_rssi_state; + u32 ratio_tx; + u32 ratio_pri; + u32 bt_edca_ul; + u32 bt_edca_dl; + + bool init_set; + bool bt_busy_traffic; + bool bt_traffic_mode_set; + bool bt_non_traffic_mode_set; + + bool fw_coexist_all_off; + bool sw_coexist_all_off; + bool hw_coexist_all_off; + u32 cstate; + u32 previous_state; + u32 cstate_h; + u32 previous_state_h; + + u8 bt_pre_rssi_state; + u8 bt_pre_rssi_state1; + + u8 reg_bt_iso; + u8 reg_bt_sco; + bool balance_on; + u8 bt_active_zero_cnt; + bool cur_bt_disabled; + bool pre_bt_disabled; + + u8 bt_profile_case; + u8 bt_profile_action; + bool bt_busy; + bool hold_for_bt_operation; + u8 lps_counter; +}; + +struct rtl_btc_ops { + void (*btc_init_variables) (struct rtl_priv *rtlpriv); + void (*btc_init_hal_vars) (struct rtl_priv *rtlpriv); + void (*btc_init_hw_config) (struct rtl_priv *rtlpriv); + void (*btc_ips_notify) (struct rtl_priv *rtlpriv, u8 type); + void (*btc_scan_notify) (struct rtl_priv *rtlpriv, u8 scantype); + void (*btc_connect_notify) (struct rtl_priv *rtlpriv, u8 action); + void (*btc_mediastatus_notify) (struct rtl_priv *rtlpriv, + enum _RT_MEDIA_STATUS mstatus); + void (*btc_periodical) (struct rtl_priv *rtlpriv); + void (*btc_halt_notify) (void); + void (*btc_btinfo_notify) (struct rtl_priv *rtlpriv, + u8 *tmp_buf, u8 length); + bool (*btc_is_limited_dig) (struct rtl_priv *rtlpriv); + bool (*btc_is_disable_edca_turbo) (struct rtl_priv *rtlpriv); + bool (*btc_is_bt_disabled) (struct rtl_priv *rtlpriv); +}; + +struct proxim { + bool proxim_on; + + void *proximity_priv; + int (*proxim_rx)(struct ieee80211_hw *hw, struct rtl_stats *status, + struct sk_buff *skb); + u8 (*proxim_get_var)(struct ieee80211_hw *hw, u8 type); +}; + struct rtl_priv { struct ieee80211_hw *hw; struct completion firmware_loading_complete; @@ -2028,25 +2206,32 @@ struct dig_t dm_digtable; struct ps_t dm_pstable; - /* section shared by individual drivers */ - union { - struct { /* data buffer pointer for USB reads */ - __le32 *usb_data; - int usb_data_index; - bool initialized; - }; - struct { /* section for 8723ae */ - bool reg_init; /* true if regs saved */ - u32 reg_874; - u32 reg_c70; - u32 reg_85c; - u32 reg_a74; - bool bt_operation_on; - }; - }; + u32 reg_874; + u32 reg_c70; + u32 reg_85c; + u32 reg_a74; + bool reg_init; /* true if regs saved */ + bool bt_operation_on; + __le32 *usb_data; + int usb_data_index; + bool initialized; bool enter_ps; /* true when entering PS */ u8 rate_mask[5]; + /* intel Proximity, should be alloc mem + * in intel Proximity module and can only + * be used in intel Proximity mode + */ + struct proxim proximity; + + /*for bt coexist use*/ + struct bt_coexist_info btcoexist; + + /* separate 92ee from other ICs, + * 92ee use new trx flow. + */ + bool use_new_trx_flow; + /*This must be the last item so that it points to the data allocated beyond this structure like: @@ -2078,6 +2263,9 @@ BT_CSR_BC8 = 4, BT_RTL8756 = 5, BT_RTL8723A = 6, + BT_RTL8821 = 7, + BT_RTL8723B = 8, + BT_RTL8192E = 9, }; enum bt_cur_state { @@ -2103,62 +2291,6 @@ BT_RADIO_INDIVIDUAL = 1, }; -struct bt_coexist_info { - - /* EEPROM BT info. */ - u8 eeprom_bt_coexist; - u8 eeprom_bt_type; - u8 eeprom_bt_ant_num; - u8 eeprom_bt_ant_isol; - u8 eeprom_bt_radio_shared; - - u8 bt_coexistence; - u8 bt_ant_num; - u8 bt_coexist_type; - u8 bt_state; - u8 bt_cur_state; /* 0:on, 1:off */ - u8 bt_ant_isolation; /* 0:good, 1:bad */ - u8 bt_pape_ctrl; /* 0:SW, 1:SW/HW dynamic */ - u8 bt_service; - u8 bt_radio_shared_type; - u8 bt_rfreg_origin_1e; - u8 bt_rfreg_origin_1f; - u8 bt_rssi_state; - u32 ratio_tx; - u32 ratio_pri; - u32 bt_edca_ul; - u32 bt_edca_dl; - - bool init_set; - bool bt_busy_traffic; - bool bt_traffic_mode_set; - bool bt_non_traffic_mode_set; - - bool fw_coexist_all_off; - bool sw_coexist_all_off; - bool hw_coexist_all_off; - u32 cstate; - u32 previous_state; - u32 cstate_h; - u32 previous_state_h; - - u8 bt_pre_rssi_state; - u8 bt_pre_rssi_state1; - - u8 reg_bt_iso; - u8 reg_bt_sco; - bool balance_on; - u8 bt_active_zero_cnt; - bool cur_bt_disabled; - bool pre_bt_disabled; - - u8 bt_profile_case; - u8 bt_profile_action; - bool bt_busy; - bool hold_for_bt_operation; - u8 lps_counter; -}; - /**************************************** mem access macro define start --- linux-3.13.0.orig/drivers/net/wireless/ti/wl18xx/debugfs.c +++ linux-3.13.0/drivers/net/wireless/ti/wl18xx/debugfs.c @@ -136,7 +136,7 @@ WL18XX_DEBUGFS_FWSTATS_FILE(rx_filter, accum_arp_pend_requests, "%u"); WL18XX_DEBUGFS_FWSTATS_FILE(rx_filter, max_arp_queue_dep, "%u"); -WL18XX_DEBUGFS_FWSTATS_FILE(rx_rate, rx_frames_per_rates, "%u"); +WL18XX_DEBUGFS_FWSTATS_FILE_ARRAY(rx_rate, rx_frames_per_rates, 50); WL18XX_DEBUGFS_FWSTATS_FILE_ARRAY(aggr_size, tx_agg_vs_rate, AGGR_STATS_TX_AGG*AGGR_STATS_TX_RATE); --- linux-3.13.0.orig/drivers/net/wireless/ti/wlcore/debugfs.h +++ linux-3.13.0/drivers/net/wireless/ti/wlcore/debugfs.h @@ -26,8 +26,8 @@ #include "wlcore.h" -int wl1271_format_buffer(char __user *userbuf, size_t count, - loff_t *ppos, char *fmt, ...); +__printf(4, 5) int wl1271_format_buffer(char __user *userbuf, size_t count, + loff_t *ppos, char *fmt, ...); int wl1271_debugfs_init(struct wl1271 *wl); void wl1271_debugfs_exit(struct wl1271 *wl); --- linux-3.13.0.orig/drivers/net/wireless/ti/wlcore/io.h +++ linux-3.13.0/drivers/net/wireless/ti/wlcore/io.h @@ -203,19 +203,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-3.13.0.orig/drivers/net/wireless/ti/wlcore/main.c +++ linux-3.13.0/drivers/net/wireless/ti/wlcore/main.c @@ -5147,7 +5147,8 @@ mutex_unlock(&wl->mutex); } -static void wlcore_op_flush(struct ieee80211_hw *hw, u32 queues, bool drop) +static void wlcore_op_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif, + u32 queues, bool drop) { struct wl1271 *wl = hw->priv; --- linux-3.13.0.orig/drivers/net/wireless/ti/wlcore/spi.c +++ linux-3.13.0/drivers/net/wireless/ti/wlcore/spi.c @@ -72,7 +72,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; @@ -270,9 +273,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-3.13.0.orig/drivers/net/xen-netback/common.h +++ linux-3.13.0/drivers/net/xen-netback/common.h @@ -113,6 +113,11 @@ domid_t domid; unsigned int handle; + /* Is this interface disabled? True when backend discovers + * frontend is rogue. + */ + bool disabled; + /* Use NAPI for guest TX */ struct napi_struct napi; /* When feature-split-event-channels = 0, tx_irq = rx_irq. */ --- linux-3.13.0.orig/drivers/net/xen-netback/interface.c +++ linux-3.13.0/drivers/net/xen-netback/interface.c @@ -67,6 +67,15 @@ struct xenvif *vif = container_of(napi, struct xenvif, napi); int work_done; + /* This vif is rogue, we pretend we've there is nothing to do + * for this vif to deschedule it from NAPI. But this interface + * will be turned off in thread context later. + */ + if (unlikely(vif->disabled)) { + napi_complete(napi); + return 0; + } + work_done = xenvif_tx_action(vif, budget); if (work_done < budget) { @@ -323,6 +332,8 @@ vif->ip_csum = 1; vif->dev = dev; + vif->disabled = false; + vif->credit_bytes = vif->remaining_credit = ~0UL; vif->credit_usec = 0UL; init_timer(&vif->credit_timeout); --- linux-3.13.0.orig/drivers/net/xen-netback/netback.c +++ linux-3.13.0/drivers/net/xen-netback/netback.c @@ -203,8 +203,8 @@ * into multiple copies tend to give large frags their * own buffers as before. */ - if ((offset + size > MAX_BUFFER_OFFSET) && - (size <= MAX_BUFFER_OFFSET) && offset && !head) + BUG_ON(size > MAX_BUFFER_OFFSET); + if ((offset + size > MAX_BUFFER_OFFSET) && offset && !head) return true; return false; @@ -310,18 +310,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(&vif->rx, vif->rx.req_cons++); + RING_COPY_REQUEST(&vif->rx, vif->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; } @@ -338,7 +338,7 @@ struct gnttab_copy *copy_gop; struct xenvif_rx_meta *meta; unsigned long bytes; - int gso_type; + int gso_type = XEN_NETIF_GSO_TYPE_NONE; /* Data must not cross a page boundary. */ BUG_ON(size + offset > PAGE_SIZE<gso_type & SKB_GSO_TCPV4) - gso_type = XEN_NETIF_GSO_TYPE_TCPV4; - else if (skb_shinfo(skb)->gso_type & SKB_GSO_TCPV6) - gso_type = XEN_NETIF_GSO_TYPE_TCPV6; - else - gso_type = XEN_NETIF_GSO_TYPE_NONE; + if (skb_is_gso(skb)) { + if (skb_shinfo(skb)->gso_type & SKB_GSO_TCPV4) + gso_type = XEN_NETIF_GSO_TYPE_TCPV4; + else if (skb_shinfo(skb)->gso_type & SKB_GSO_TCPV6) + gso_type = XEN_NETIF_GSO_TYPE_TCPV6; + } if (*head && ((1 << gso_type) & vif->gso_mask)) vif->rx.req_cons++; @@ -430,52 +430,48 @@ 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; int old_meta_prod; int gso_type; - int gso_size; old_meta_prod = npo->meta_prod; - if (skb_shinfo(skb)->gso_type & SKB_GSO_TCPV4) { - gso_type = XEN_NETIF_GSO_TYPE_TCPV4; - gso_size = skb_shinfo(skb)->gso_size; - } else if (skb_shinfo(skb)->gso_type & SKB_GSO_TCPV6) { - gso_type = XEN_NETIF_GSO_TYPE_TCPV6; - gso_size = skb_shinfo(skb)->gso_size; - } else { - gso_type = XEN_NETIF_GSO_TYPE_NONE; - gso_size = 0; + gso_type = XEN_NETIF_GSO_TYPE_NONE; + if (skb_is_gso(skb)) { + if (skb_shinfo(skb)->gso_type & SKB_GSO_TCPV4) + gso_type = XEN_NETIF_GSO_TYPE_TCPV4; + else if (skb_shinfo(skb)->gso_type & SKB_GSO_TCPV6) + gso_type = XEN_NETIF_GSO_TYPE_TCPV6; } /* Set up a GSO prefix descriptor, if necessary */ if ((1 << gso_type) & vif->gso_prefix_mask) { - req = RING_GET_REQUEST(&vif->rx, vif->rx.req_cons++); + RING_COPY_REQUEST(&vif->rx, vif->rx.req_cons++, &req); meta = npo->meta + npo->meta_prod++; meta->gso_type = gso_type; - meta->gso_size = gso_size; + meta->gso_size = skb_shinfo(skb)->gso_size; meta->size = 0; - meta->id = req->id; + meta->id = req.id; } - req = RING_GET_REQUEST(&vif->rx, vif->rx.req_cons++); + RING_COPY_REQUEST(&vif->rx, vif->rx.req_cons++, &req); meta = npo->meta + npo->meta_prod++; if ((1 << gso_type) & vif->gso_mask) { meta->gso_type = gso_type; - meta->gso_size = gso_size; + meta->gso_size = skb_shinfo(skb)->gso_size; } else { 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; data = skb->data; while (data < skb_tail_pointer(skb)) { @@ -720,9 +716,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(&vif->tx, vif->tx.req_cons)->size; - max_burst = min(max_burst, 131072UL); - max_burst = max(max_burst, vif->credit_bytes); + max_burst = max(131072UL, vif->credit_bytes); /* Take care that adding a new chunk of credit doesn't wrap to zero. */ max_credit = vif->remaining_credit + vif->credit_bytes; @@ -748,7 +742,7 @@ make_tx_response(vif, txp, XEN_NETIF_RSP_ERROR); if (cons == end) break; - txp = RING_GET_REQUEST(&vif->tx, cons++); + RING_COPY_REQUEST(&vif->tx, cons++, txp); } while (1); vif->tx.req_cons = cons; } @@ -756,7 +750,8 @@ static void xenvif_fatal_tx_err(struct xenvif *vif) { netdev_err(vif->dev, "fatal error; disabling device\n"); - xenvif_carrier_off(vif); + vif->disabled = true; + xenvif_kick_thread(vif); } static int xenvif_count_requests(struct xenvif *vif, @@ -812,8 +807,7 @@ if (drop_err) txp = &dropped_tx; - memcpy(txp, RING_GET_REQUEST(&vif->tx, cons + slots), - sizeof(*txp)); + RING_COPY_REQUEST(&vif->tx, cons + slots, txp); /* If the guest submitted a frame >= 64 KiB then * first->size overflowed and following slots will @@ -1099,8 +1093,7 @@ return -EBADR; } - memcpy(&extra, RING_GET_REQUEST(&vif->tx, cons), - sizeof(extra)); + RING_COPY_REQUEST(&vif->tx, cons, &extra); if (unlikely(!extra.type || extra.type >= XEN_NETIF_EXTRA_TYPE_MAX)) { vif->tx.req_cons = ++cons; @@ -1483,7 +1476,7 @@ vif->tx.sring->req_prod, vif->tx.req_cons, XEN_NETIF_TX_RING_SIZE); xenvif_fatal_tx_err(vif); - continue; + break; } work_to_do = RING_HAS_UNCONSUMED_REQUESTS(&vif->tx); @@ -1492,7 +1485,7 @@ idx = vif->tx.req_cons; rmb(); /* Ensure that we see the request before we copy it. */ - memcpy(&txreq, RING_GET_REQUEST(&vif->tx, idx), sizeof(txreq)); + RING_COPY_REQUEST(&vif->tx, idx, &txreq); /* Credit-based scheduling. */ if (txreq.size > vif->remaining_credit && @@ -1877,7 +1870,18 @@ while (!kthread_should_stop()) { wait_event_interruptible(vif->wq, rx_work_todo(vif) || + vif->disabled || kthread_should_stop()); + + /* This frontend is found to be rogue, disable it in + * kthread context. Currently this is only set when + * netback finds out frontend sends malformed packet, + * but we cannot disable the interface in softirq + * context so we defer it here. + */ + if (unlikely(vif->disabled && netif_carrier_ok(vif->dev))) + xenvif_carrier_off(vif); + if (kthread_should_stop()) break; --- linux-3.13.0.orig/drivers/net/xen-netback/xenbus.c +++ linux-3.13.0/drivers/net/xen-netback/xenbus.c @@ -33,6 +33,8 @@ enum xenbus_state frontend_state; struct xenbus_watch hotplug_status_watch; u8 have_hotplug_status_watch:1; + + const char *hotplug_script; }; static int connect_rings(struct backend_info *); @@ -55,6 +57,7 @@ xenvif_free(be->vif); be->vif = NULL; } + kfree(be->hotplug_script); kfree(be); dev_set_drvdata(&dev->dev, NULL); return 0; @@ -72,6 +75,7 @@ struct xenbus_transaction xbt; int err; int sg; + const char *script; struct backend_info *be = kzalloc(sizeof(struct backend_info), GFP_KERNEL); if (!be) { @@ -158,6 +162,15 @@ if (err) pr_debug("Error writing feature-split-event-channels\n"); + script = xenbus_read(XBT_NIL, dev->nodename, "script", NULL); + if (IS_ERR(script)) { + err = PTR_ERR(script); + xenbus_dev_fatal(dev, err, "reading script"); + goto fail; + } + + be->hotplug_script = script; + err = xenbus_switch_state(dev, XenbusStateInitWait); if (err) goto fail; @@ -188,22 +201,14 @@ struct kobj_uevent_env *env) { struct backend_info *be = dev_get_drvdata(&xdev->dev); - char *val; - val = xenbus_read(XBT_NIL, xdev->nodename, "script", NULL); - if (IS_ERR(val)) { - int err = PTR_ERR(val); - xenbus_dev_fatal(xdev, err, "reading script"); - return err; - } else { - if (add_uevent_var(env, "script=%s", val)) { - kfree(val); - return -ENOMEM; - } - kfree(val); - } + if (!be) + return 0; + + if (add_uevent_var(env, "script=%s", be->hotplug_script)) + return -ENOMEM; - if (!be || !be->vif) + if (!be->vif) return 0; return add_uevent_var(env, "vif=%s", be->vif->dev->name); --- linux-3.13.0.orig/drivers/net/xen-netfront.c +++ linux-3.13.0/drivers/net/xen-netfront.c @@ -117,6 +117,7 @@ } tx_skbs[NET_TX_RING_SIZE]; grant_ref_t gref_tx_head; grant_ref_t grant_tx_ref[NET_TX_RING_SIZE]; + struct page *grant_tx_page[NET_TX_RING_SIZE]; unsigned tx_skb_freelist; spinlock_t rx_lock ____cacheline_aligned_in_smp; @@ -396,6 +397,7 @@ gnttab_release_grant_reference( &np->gref_tx_head, np->grant_tx_ref[id]); np->grant_tx_ref[id] = GRANT_INVALID_REF; + np->grant_tx_page[id] = NULL; add_id_to_freelist(&np->tx_skb_freelist, np->tx_skbs, id); dev_kfree_skb_irq(skb); } @@ -452,6 +454,7 @@ gnttab_grant_foreign_access_ref(ref, np->xbdev->otherend_id, mfn, GNTMAP_readonly); + np->grant_tx_page[id] = virt_to_page(data); tx->gref = np->grant_tx_ref[id] = ref; tx->offset = offset; tx->size = len; @@ -466,9 +469,6 @@ len = skb_frag_size(frag); offset = frag->page_offset; - /* Data must not cross a page boundary. */ - BUG_ON(len + offset > PAGE_SIZE<> PAGE_SHIFT; offset &= ~PAGE_MASK; @@ -476,8 +476,6 @@ while (len > 0) { unsigned long bytes; - BUG_ON(offset >= PAGE_SIZE); - bytes = PAGE_SIZE - offset; if (bytes > len) bytes = len; @@ -497,6 +495,7 @@ np->xbdev->otherend_id, mfn, GNTMAP_readonly); + np->grant_tx_page[id] = page; tx->gref = np->grant_tx_ref[id] = ref; tx->offset = offset; tx->size = bytes; @@ -569,9 +568,13 @@ slots = DIV_ROUND_UP(offset + len, PAGE_SIZE) + xennet_count_skb_frag_slots(skb); if (unlikely(slots > MAX_SKB_FRAGS + 1)) { - net_alert_ratelimited( - "xennet: skb rides the rocket: %d slots\n", slots); - goto drop; + net_dbg_ratelimited("xennet: skb rides the rocket: %d slots, %d bytes\n", + slots, skb->len); + if (skb_linearize(skb)) + goto drop; + data = skb->data; + offset = offset_in_page(data); + len = skb_headlen(skb); } spin_lock_irqsave(&np->tx_lock, flags); @@ -596,6 +599,7 @@ mfn = virt_to_mfn(data); gnttab_grant_foreign_access_ref( ref, np->xbdev->otherend_id, mfn, GNTMAP_readonly); + np->grant_tx_page[id] = virt_to_page(data); tx->gref = np->grant_tx_ref[id] = ref; tx->offset = offset; tx->size = len; @@ -1070,8 +1074,7 @@ static int xennet_change_mtu(struct net_device *dev, int mtu) { - int max = xennet_can_sg(dev) ? - XEN_NETIF_MAX_TX_SIZE - MAX_TCP_HEADER : ETH_DATA_LEN; + int max = xennet_can_sg(dev) ? XEN_NETIF_MAX_TX_SIZE : ETH_DATA_LEN; if (mtu > max) return -EINVAL; @@ -1091,13 +1094,13 @@ unsigned int start; do { - start = u64_stats_fetch_begin_bh(&stats->syncp); + start = u64_stats_fetch_begin_irq(&stats->syncp); rx_packets = stats->rx_packets; tx_packets = stats->tx_packets; rx_bytes = stats->rx_bytes; tx_bytes = stats->tx_bytes; - } while (u64_stats_fetch_retry_bh(&stats->syncp, start)); + } while (u64_stats_fetch_retry_irq(&stats->syncp, start)); tot->rx_packets += rx_packets; tot->tx_packets += tx_packets; @@ -1122,10 +1125,11 @@ continue; skb = np->tx_skbs[i].skb; - gnttab_end_foreign_access_ref(np->grant_tx_ref[i], - GNTMAP_readonly); - gnttab_release_grant_reference(&np->gref_tx_head, - np->grant_tx_ref[i]); + get_page(np->grant_tx_page[i]); + gnttab_end_foreign_access(np->grant_tx_ref[i], + GNTMAP_readonly, + (unsigned long)page_address(np->grant_tx_page[i])); + np->grant_tx_page[i] = NULL; np->grant_tx_ref[i] = GRANT_INVALID_REF; add_id_to_freelist(&np->tx_skb_freelist, np->tx_skbs, i); dev_kfree_skb_irq(skb); @@ -1134,78 +1138,35 @@ static void xennet_release_rx_bufs(struct netfront_info *np) { - struct mmu_update *mmu = np->rx_mmu; - struct multicall_entry *mcl = np->rx_mcl; - struct sk_buff_head free_list; - struct sk_buff *skb; - unsigned long mfn; - int xfer = 0, noxfer = 0, unused = 0; int id, ref; - dev_warn(&np->netdev->dev, "%s: fix me for copying receiver.\n", - __func__); - return; - - skb_queue_head_init(&free_list); - spin_lock_bh(&np->rx_lock); for (id = 0; id < NET_RX_RING_SIZE; id++) { - ref = np->grant_rx_ref[id]; - if (ref == GRANT_INVALID_REF) { - unused++; - continue; - } + struct sk_buff *skb; + struct page *page; skb = np->rx_skbs[id]; - mfn = gnttab_end_foreign_transfer_ref(ref); - gnttab_release_grant_reference(&np->gref_rx_head, ref); - np->grant_rx_ref[id] = GRANT_INVALID_REF; - - if (0 == mfn) { - skb_shinfo(skb)->nr_frags = 0; - dev_kfree_skb(skb); - noxfer++; + if (!skb) continue; - } - - if (!xen_feature(XENFEAT_auto_translated_physmap)) { - /* Remap the page. */ - const struct page *page = - skb_frag_page(&skb_shinfo(skb)->frags[0]); - unsigned long pfn = page_to_pfn(page); - void *vaddr = page_address(page); - MULTI_update_va_mapping(mcl, (unsigned long)vaddr, - mfn_pte(mfn, PAGE_KERNEL), - 0); - mcl++; - mmu->ptr = ((u64)mfn << PAGE_SHIFT) - | MMU_MACHPHYS_UPDATE; - mmu->val = pfn; - mmu++; + ref = np->grant_rx_ref[id]; + if (ref == GRANT_INVALID_REF) + continue; - set_phys_to_machine(pfn, mfn); - } - __skb_queue_tail(&free_list, skb); - xfer++; - } + page = skb_frag_page(&skb_shinfo(skb)->frags[0]); - dev_info(&np->netdev->dev, "%s: %d xfer, %d noxfer, %d unused\n", - __func__, xfer, noxfer, unused); + /* gnttab_end_foreign_access() needs a page ref until + * foreign access is ended (which may be deferred). + */ + get_page(page); + gnttab_end_foreign_access(ref, 0, + (unsigned long)page_address(page)); + np->grant_rx_ref[id] = GRANT_INVALID_REF; - if (xfer) { - if (!xen_feature(XENFEAT_auto_translated_physmap)) { - /* Do all the remapping work and M2P updates. */ - MULTI_mmu_update(mcl, np->rx_mmu, mmu - np->rx_mmu, - NULL, DOMID_SELF); - mcl++; - HYPERVISOR_multicall(np->rx_mcl, mcl - np->rx_mcl); - } + kfree_skb(skb); } - __skb_queue_purge(&free_list); - spin_unlock_bh(&np->rx_lock); } @@ -1358,6 +1319,7 @@ for (i = 0; i < NET_RX_RING_SIZE; i++) { np->rx_skbs[i] = NULL; np->grant_rx_ref[i] = GRANT_INVALID_REF; + np->grant_tx_page[i] = NULL; } /* A grant for every tx ring slot */ @@ -1393,8 +1355,6 @@ SET_ETHTOOL_OPS(netdev, &xennet_ethtool_ops); SET_NETDEV_DEV(netdev, &dev->dev); - netif_set_gso_max_size(netdev, XEN_NETIF_MAX_TX_SIZE - MAX_TCP_HEADER); - np->netdev = netdev; netif_carrier_off(netdev); @@ -2115,7 +2075,7 @@ if (!xen_domain()) return -ENODEV; - if (xen_hvm_domain() && !xen_platform_pci_unplug) + if (!xen_has_pv_nic_devices()) return -ENODEV; pr_info("Initialising Xen virtual ethernet driver\n"); --- linux-3.13.0.orig/drivers/of/address.c +++ linux-3.13.0/drivers/of/address.c @@ -99,11 +99,12 @@ static int of_bus_pci_match(struct device_node *np) { /* + * "pciex" is PCI Express * "vci" is for the /chaos bridge on 1st-gen PCI powermacs * "ht" is hypertransport */ - return !strcmp(np->type, "pci") || !strcmp(np->type, "vci") || - !strcmp(np->type, "ht"); + return !strcmp(np->type, "pci") || !strcmp(np->type, "pciex") || + !strcmp(np->type, "vci") || !strcmp(np->type, "ht"); } static void of_bus_pci_count_cells(struct device_node *np, @@ -400,6 +401,21 @@ return NULL; } +static int of_empty_ranges_quirk(void) +{ + if (IS_ENABLED(CONFIG_PPC)) { + /* To save cycles, we cache the result */ + static int quirk_state = -1; + + if (quirk_state < 0) + quirk_state = + of_machine_is_compatible("Power Macintosh") || + of_machine_is_compatible("MacRISC"); + return quirk_state; + } + return false; +} + static int of_translate_one(struct device_node *parent, struct of_bus *bus, struct of_bus *pbus, __be32 *addr, int na, int ns, int pna, const char *rprop) @@ -425,12 +441,10 @@ * This code is only enabled on powerpc. --gcl */ ranges = of_get_property(parent, rprop, &rlen); -#if !defined(CONFIG_PPC) - if (ranges == NULL) { + if (ranges == NULL && !of_empty_ranges_quirk()) { pr_err("OF: no ranges; cannot translate\n"); return 1; } -#endif /* !defined(CONFIG_PPC) */ if (ranges == NULL || rlen == 0) { offset = of_read_number(addr, na); memset(addr, 0, pna * 4); @@ -690,10 +704,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-3.13.0.orig/drivers/of/base.c +++ linux-3.13.0/drivers/of/base.c @@ -17,6 +17,7 @@ * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ +#include #include #include #include @@ -34,6 +35,7 @@ struct device_node *of_chosen; struct device_node *of_aliases; static struct device_node *of_stdout; +static const char *of_stdout_options; DEFINE_MUTEX(of_aliases_mutex); @@ -77,7 +79,7 @@ #ifdef CONFIG_NUMA int __weak of_node_to_nid(struct device_node *np) { - return numa_node_id(); + return NUMA_NO_NODE; } #endif @@ -342,27 +344,72 @@ } EXPORT_SYMBOL(of_get_cpu_node); -/** Checks if the given "compat" string matches one of the strings in - * the device's "compatible" property +/** + * __of_device_is_compatible() - Check if the node matches given constraints + * @device: pointer to node + * @compat: required compatible string, NULL or "" for any match + * @type: required device_type value, NULL or "" for any match + * @name: required node name, NULL or "" for any match + * + * Checks if the given @compat, @type and @name strings match the + * properties of the given @device. A constraints can be skipped by + * passing NULL or an empty string as the constraint. + * + * Returns 0 for no match, and a positive integer on match. The return + * value is a relative score with larger values indicating better + * matches. The score is weighted for the most specific compatible value + * to get the highest score. Matching type is next, followed by matching + * name. Practically speaking, this results in the following priority + * order for matches: + * + * 1. specific compatible && type && name + * 2. specific compatible && type + * 3. specific compatible && name + * 4. specific compatible + * 5. general compatible && type && name + * 6. general compatible && type + * 7. general compatible && name + * 8. general compatible + * 9. type && name + * 10. type + * 11. name */ static int __of_device_is_compatible(const struct device_node *device, - const char *compat) + const char *compat, const char *type, const char *name) { - const char* cp; - int cplen, l; + struct property *prop; + const char *cp; + int index = 0, score = 0; + + /* Compatible match has highest priority */ + if (compat && compat[0]) { + prop = __of_find_property(device, "compatible", NULL); + for (cp = of_prop_next_string(prop, NULL); cp; + cp = of_prop_next_string(prop, cp), index++) { + if (of_compat_cmp(cp, compat, strlen(compat)) == 0) { + score = INT_MAX/2 - (index << 2); + break; + } + } + if (!score) + return 0; + } - cp = __of_get_property(device, "compatible", &cplen); - if (cp == NULL) - return 0; - while (cplen > 0) { - if (of_compat_cmp(cp, compat, strlen(compat)) == 0) - return 1; - l = strlen(cp) + 1; - cp += l; - cplen -= l; + /* Matching type is better than matching name */ + if (type && type[0]) { + if (!device->type || of_node_cmp(type, device->type)) + return 0; + score += 2; } - return 0; + /* Matching name is a bit better than not */ + if (name && name[0]) { + if (!device->name || of_node_cmp(name, device->name)) + return 0; + score++; + } + + return score; } /** Checks if the given "compat" string matches one of the strings in @@ -375,7 +422,7 @@ int res; raw_spin_lock_irqsave(&devtree_lock, flags); - res = __of_device_is_compatible(device, compat); + res = __of_device_is_compatible(device, compat, NULL, NULL); raw_spin_unlock_irqrestore(&devtree_lock, flags); return res; } @@ -497,6 +544,22 @@ } EXPORT_SYMBOL(of_get_next_parent); +static struct device_node *__of_get_next_child(const struct device_node *node, + struct device_node *prev) +{ + struct device_node *next; + + next = prev ? prev->sibling : node->child; + for (; next; next = next->sibling) + if (of_node_get(next)) + break; + of_node_put(prev); + return next; +} +#define __for_each_child_of_node(parent, child) \ + for (child = __of_get_next_child(parent, NULL); child != NULL; \ + child = __of_get_next_child(parent, child)) + /** * of_get_next_child - Iterate a node childs * @node: parent node @@ -512,11 +575,7 @@ unsigned long flags; raw_spin_lock_irqsave(&devtree_lock, flags); - next = prev ? prev->sibling : node->child; - for (; next; next = next->sibling) - if (of_node_get(next)) - break; - of_node_put(prev); + next = __of_get_next_child(node, prev); raw_spin_unlock_irqrestore(&devtree_lock, flags); return next; } @@ -573,28 +632,95 @@ } EXPORT_SYMBOL(of_get_child_by_name); +static struct device_node *__of_find_node_by_path(struct device_node *parent, + const char *path) +{ + struct device_node *child; + int len = strchrnul(path, '/') - path; + int term; + + if (!len) + return NULL; + + term = strchrnul(path, ':') - path; + if (term < len) + len = term; + + __for_each_child_of_node(parent, child) { + const char *name = strrchr(child->full_name, '/'); + if (WARN(!name, "malformed device_node %s\n", child->full_name)) + continue; + name++; + if (strncmp(path, name, len) == 0 && (strlen(name) == len)) + return child; + } + return NULL; +} + /** - * of_find_node_by_path - Find a node matching a full OF path - * @path: The full path to match + * of_find_node_opts_by_path - Find a node matching a full OF path + * @path: Either the full path to match, or if the path does not + * start with '/', the name of a property of the /aliases + * node (an alias). In the case of an alias, the node + * matching the alias' value will be returned. + * @opts: Address of a pointer into which to store the start of + * an options string appended to the end of the path with + * a ':' separator. + * + * Valid paths: + * /foo/bar Full path + * foo Valid alias + * foo/bar Valid alias + relative path * * Returns a node pointer with refcount incremented, use * of_node_put() on it when done. */ -struct device_node *of_find_node_by_path(const char *path) +struct device_node *of_find_node_opts_by_path(const char *path, const char **opts) { - struct device_node *np = of_allnodes; + struct device_node *np = NULL; + struct property *pp; unsigned long flags; + const char *separator = strchr(path, ':'); + + if (opts) + *opts = separator ? separator + 1 : NULL; + + if (strcmp(path, "/") == 0) + return of_node_get(of_allnodes); + + /* The path could begin with an alias */ + if (*path != '/') { + char *p = strchrnul(path, '/'); + int len = separator ? separator - path : p - path; + + /* of_aliases must not be NULL */ + if (!of_aliases) + return NULL; + + for_each_property_of_node(of_aliases, pp) { + if (strlen(pp->name) == len && !strncmp(pp->name, path, len)) { + np = of_find_node_by_path(pp->value); + break; + } + } + if (!np) + return NULL; + path = p; + } + /* Step down the tree matching path components */ raw_spin_lock_irqsave(&devtree_lock, flags); - for (; np; np = np->allnext) { - if (np->full_name && (of_node_cmp(np->full_name, path) == 0) - && of_node_get(np)) - break; + if (!np) + np = of_node_get(of_allnodes); + while (np && *path == '/') { + path++; /* Increment past '/' delimiter */ + np = __of_find_node_by_path(np, path); + path = strchrnul(path, '/'); } raw_spin_unlock_irqrestore(&devtree_lock, flags); return np; } -EXPORT_SYMBOL(of_find_node_by_path); +EXPORT_SYMBOL(of_find_node_opts_by_path); /** * of_find_node_by_name - Find a node by its "name" property @@ -678,10 +804,7 @@ raw_spin_lock_irqsave(&devtree_lock, flags); np = from ? from->allnext : of_allnodes; for (; np; np = np->allnext) { - if (type - && !(np->type && (of_node_cmp(np->type, type) == 0))) - continue; - if (__of_device_is_compatible(np, compatible) && + if (__of_device_is_compatible(np, compatible, type, NULL) && of_node_get(np)) break; } @@ -731,25 +854,22 @@ const struct of_device_id *__of_match_node(const struct of_device_id *matches, const struct device_node *node) { + const struct of_device_id *best_match = NULL; + int score, best_score = 0; + if (!matches) return NULL; - while (matches->name[0] || matches->type[0] || matches->compatible[0]) { - int match = 1; - if (matches->name[0]) - match &= node->name - && !strcmp(matches->name, node->name); - if (matches->type[0]) - match &= node->type - && !strcmp(matches->type, node->type); - if (matches->compatible[0]) - match &= __of_device_is_compatible(node, - matches->compatible); - if (match) - return matches; - matches++; + for (; matches->name[0] || matches->type[0] || matches->compatible[0]; matches++) { + score = __of_device_is_compatible(node, matches->compatible, + matches->type, matches->name); + if (score > best_score) { + best_match = matches; + best_score = score; + } } - return NULL; + + return best_match; } /** @@ -1075,52 +1195,6 @@ EXPORT_SYMBOL_GPL(of_property_read_string); /** - * of_property_read_string_index - Find and read a string from a multiple - * strings property. - * @np: device node from which the property value is to be read. - * @propname: name of the property to be searched. - * @index: index of the string in the list of strings - * @out_string: pointer to null terminated return string, modified only if - * return value is 0. - * - * Search for a property in a device tree node and retrieve a null - * terminated string value (pointer to data, not a copy) in the list of strings - * contained in that property. - * Returns 0 on success, -EINVAL if the property does not exist, -ENODATA if - * property does not have a value, and -EILSEQ if the string is not - * null-terminated within the length of the property data. - * - * The out_string pointer is modified only if a valid string can be decoded. - */ -int of_property_read_string_index(struct device_node *np, const char *propname, - int index, const char **output) -{ - struct property *prop = of_find_property(np, propname, NULL); - int i = 0; - size_t l = 0, total = 0; - const char *p; - - if (!prop) - return -EINVAL; - if (!prop->value) - return -ENODATA; - if (strnlen(prop->value, prop->length) >= prop->length) - return -EILSEQ; - - p = prop->value; - - for (i = 0; total < prop->length; total += l, p += l) { - l = strlen(p) + 1; - if (i++ == index) { - *output = p; - return 0; - } - } - return -ENODATA; -} -EXPORT_SYMBOL_GPL(of_property_read_string_index); - -/** * of_property_match_string() - Find string in a list and return index * @np: pointer to node containing string list property * @propname: string list property name @@ -1146,7 +1220,7 @@ end = p + prop->length; for (i = 0; p < end; i++, p += l) { - l = strlen(p) + 1; + l = strnlen(p, end - p) + 1; if (p + l > end) return -EILSEQ; pr_debug("comparing %s with %s\n", string, p); @@ -1158,39 +1232,41 @@ EXPORT_SYMBOL_GPL(of_property_match_string); /** - * of_property_count_strings - Find and return the number of strings from a - * multiple strings property. + * of_property_read_string_util() - Utility helper for parsing string properties * @np: device node from which the property value is to be read. * @propname: name of the property to be searched. + * @out_strs: output array of string pointers. + * @sz: number of array elements to read. + * @skip: Number of strings to skip over at beginning of list. * - * Search for a property in a device tree node and retrieve the number of null - * terminated string contain in it. Returns the number of strings on - * success, -EINVAL if the property does not exist, -ENODATA if property - * does not have a value, and -EILSEQ if the string is not null-terminated - * within the length of the property data. + * Don't call this function directly. It is a utility helper for the + * of_property_read_string*() family of functions. */ -int of_property_count_strings(struct device_node *np, const char *propname) +int of_property_read_string_helper(struct device_node *np, const char *propname, + const char **out_strs, size_t sz, int skip) { struct property *prop = of_find_property(np, propname, NULL); - int i = 0; - size_t l = 0, total = 0; - const char *p; + int l = 0, i = 0; + const char *p, *end; if (!prop) return -EINVAL; if (!prop->value) return -ENODATA; - if (strnlen(prop->value, prop->length) >= prop->length) - return -EILSEQ; - p = prop->value; + end = p + prop->length; - for (i = 0; total < prop->length; total += l, p += l, i++) - l = strlen(p) + 1; - - return i; + for (i = 0; p < end && (!out_strs || i < skip + sz); i++, p += l) { + l = strnlen(p, end - p) + 1; + if (p + l > end) + return -EILSEQ; + if (out_strs && i >= skip) + *out_strs++ = p; + } + i -= skip; + return i <= 0 ? -ENODATA : i; } -EXPORT_SYMBOL_GPL(of_property_count_strings); +EXPORT_SYMBOL_GPL(of_property_read_string_helper); void of_print_phandle_args(const char *msg, const struct of_phandle_args *args) { @@ -1777,11 +1853,11 @@ of_chosen = of_find_node_by_path("/chosen@0"); if (of_chosen) { - const char *name; - - name = of_get_property(of_chosen, "linux,stdout-path", NULL); + const char *name = of_get_property(of_chosen, "stdout-path", NULL); + if (!name) + name = of_get_property(of_chosen, "linux,stdout-path", NULL); if (name) - of_stdout = of_find_node_by_path(name); + of_stdout = of_find_node_opts_by_path(name, &of_stdout_options); } of_aliases = of_find_node_by_path("/aliases"); @@ -1895,20 +1971,23 @@ EXPORT_SYMBOL_GPL(of_prop_next_string); /** - * of_device_is_stdout_path - check if a device node matches the - * linux,stdout-path property - * - * Check if this device node matches the linux,stdout-path property - * in the chosen node. return true if yes, false otherwise. + * of_console_check() - Test and setup console for DT setup + * @dn - Pointer to device node + * @name - Name to use for preferred console without index. ex. "ttyS" + * @index - Index to use for preferred console. + * + * Check if the given device node matches the stdout-path property in the + * /chosen node. If it does then register it as the preferred console and return + * TRUE. Otherwise return FALSE. */ -int of_device_is_stdout_path(struct device_node *dn) +bool of_console_check(struct device_node *dn, char *name, int index) { - if (!of_stdout) + if (!dn || dn != of_stdout || console_set_on_cmdline) return false; - - return of_stdout == dn; + return !add_preferred_console(name, index, + kstrdup(of_stdout_options, GFP_KERNEL)); } -EXPORT_SYMBOL_GPL(of_device_is_stdout_path); +EXPORT_SYMBOL_GPL(of_console_check); /** * of_find_next_cache_node - Find a node's subsidiary cache --- linux-3.13.0.orig/drivers/of/irq.c +++ linux-3.13.0/drivers/of/irq.c @@ -287,7 +287,7 @@ struct device_node *p; const __be32 *intspec, *tmp, *addr; u32 intsize, intlen; - int i, res = -EINVAL; + int i, res; pr_debug("of_irq_parse_one: dev=%s, index=%d\n", of_node_full_name(device), index); @@ -298,16 +298,17 @@ /* Get the reg property (if any) */ addr = of_get_property(device, "reg", NULL); + /* Try the new-style interrupts-extended first */ + res = of_parse_phandle_with_args(device, "interrupts-extended", + "#interrupt-cells", index, out_irq); + if (!res) + return of_irq_parse_raw(addr, out_irq); + /* Get the interrupts property */ intspec = of_get_property(device, "interrupts", &intlen); - if (intspec == NULL) { - /* Try the new-style interrupts-extended */ - res = of_parse_phandle_with_args(device, "interrupts-extended", - "#interrupt-cells", index, out_irq); - if (res) - return -EINVAL; - return of_irq_parse_raw(addr, out_irq); - } + if (intspec == NULL) + return -EINVAL; + intlen /= sizeof(*intspec); pr_debug(" intspec=%d intlen=%d\n", be32_to_cpup(intspec), intlen); @@ -319,15 +320,19 @@ /* Get size of interrupt specifier */ tmp = of_get_property(p, "#interrupt-cells", NULL); - if (tmp == NULL) + if (tmp == NULL) { + res = -EINVAL; goto out; + } intsize = be32_to_cpu(*tmp); pr_debug(" intsize=%d intlen=%d\n", intsize, intlen); /* Check index */ - if ((index + 1) * intsize > intlen) + if ((index + 1) * intsize > intlen) { + res = -EINVAL; goto out; + } /* Copy intspec into irq structure */ intspec += index * intsize; @@ -377,6 +382,54 @@ EXPORT_SYMBOL_GPL(of_irq_to_resource); /** + * of_irq_get - Decode a node's IRQ and return it as a Linux irq number + * @dev: pointer to device tree node + * @index: zero-based index of the irq + * + * Returns Linux irq number on success, or -EPROBE_DEFER if the irq domain + * is not yet created. + * + */ +int of_irq_get(struct device_node *dev, int index) +{ + int rc; + struct of_phandle_args oirq; + struct irq_domain *domain; + + rc = of_irq_parse_one(dev, index, &oirq); + if (rc) + return rc; + + domain = irq_find_host(oirq.np); + if (!domain) + return -EPROBE_DEFER; + + return irq_create_of_mapping(&oirq); +} + +/** + * of_irq_get_byname - Decode a node's IRQ and return it as a Linux irq number + * @dev: pointer to device tree node + * @name: irq name + * + * Returns Linux irq number on success, or -EPROBE_DEFER if the irq domain + * is not yet created, or error code in case of any other failure. + */ +int of_irq_get_byname(struct device_node *dev, const char *name) +{ + int index; + + if (unlikely(!name)) + return -EINVAL; + + index = of_property_match_string(dev, "interrupt-names", name); + if (index < 0) + return index; + + return of_irq_get(dev, index); +} + +/** * of_irq_count - Count the number of IRQs a node uses * @dev: pointer to device tree node */ --- linux-3.13.0.orig/drivers/of/of_mdio.c +++ linux-3.13.0/drivers/of/of_mdio.c @@ -247,3 +247,17 @@ return IS_ERR(phy) ? NULL : phy; } EXPORT_SYMBOL(of_phy_connect_fixed_link); + +/* XXX add comment */ +struct phy_device *of_phy_attach(struct net_device *dev, + struct device_node *phy_np, u32 flags, + phy_interface_t iface) +{ + struct phy_device *phy = of_phy_find_device(phy_np); + + if (!phy) + return NULL; + + return phy_attach_direct(dev, phy, flags, iface) ? NULL : phy; +} +EXPORT_SYMBOL(of_phy_attach); --- linux-3.13.0.orig/drivers/of/of_net.c +++ linux-3.13.0/drivers/of/of_net.c @@ -12,32 +12,12 @@ #include /** - * It maps 'enum phy_interface_t' found in include/linux/phy.h - * into the device tree binding of 'phy-mode', so that Ethernet - * device driver can get phy interface from device tree. - */ -static const char *phy_modes[] = { - [PHY_INTERFACE_MODE_NA] = "", - [PHY_INTERFACE_MODE_MII] = "mii", - [PHY_INTERFACE_MODE_GMII] = "gmii", - [PHY_INTERFACE_MODE_SGMII] = "sgmii", - [PHY_INTERFACE_MODE_TBI] = "tbi", - [PHY_INTERFACE_MODE_REVMII] = "rev-mii", - [PHY_INTERFACE_MODE_RMII] = "rmii", - [PHY_INTERFACE_MODE_RGMII] = "rgmii", - [PHY_INTERFACE_MODE_RGMII_ID] = "rgmii-id", - [PHY_INTERFACE_MODE_RGMII_RXID] = "rgmii-rxid", - [PHY_INTERFACE_MODE_RGMII_TXID] = "rgmii-txid", - [PHY_INTERFACE_MODE_RTBI] = "rtbi", - [PHY_INTERFACE_MODE_SMII] = "smii", -}; - -/** * of_get_phy_mode - Get phy mode for given device_node * @np: Pointer to the given device_node * - * The function gets phy interface string from property 'phy-mode', - * and return its index in phy_modes table, or errno in error case. + * The function gets phy interface string from property 'phy-mode' or + * 'phy-connection-type', and return its index in phy_modes table, or errno in + * error case. */ int of_get_phy_mode(struct device_node *np) { @@ -46,10 +26,12 @@ err = of_property_read_string(np, "phy-mode", &pm); if (err < 0) + err = of_property_read_string(np, "phy-connection-type", &pm); + if (err < 0) return err; - for (i = 0; i < ARRAY_SIZE(phy_modes); i++) - if (!strcasecmp(pm, phy_modes[i])) + for (i = 0; i < PHY_INTERFACE_MODE_MAX; i++) + if (!strcasecmp(pm, phy_modes(i))) return i; return -ENODEV; --- linux-3.13.0.orig/drivers/of/platform.c +++ linux-3.13.0/drivers/of/platform.c @@ -168,7 +168,9 @@ rc = of_address_to_resource(np, i, res); WARN_ON(rc); } - WARN_ON(of_irq_to_resource_table(np, res, num_irq) != num_irq); + if (of_irq_to_resource_table(np, res, num_irq) != num_irq) + pr_debug("not all legacy IRQ resources mapped for %s\n", + np->name); } dev->dev.of_node = of_node_get(np); --- linux-3.13.0.orig/drivers/of/selftest.c +++ linux-3.13.0/drivers/of/selftest.c @@ -132,8 +132,9 @@ selftest(rc == -EINVAL, "expected:%i got:%i\n", -EINVAL, rc); } -static void __init of_selftest_property_match_string(void) +static void __init of_selftest_property_string(void) { + const char *strings[4]; struct device_node *np; int rc; @@ -150,13 +151,66 @@ rc = of_property_match_string(np, "phandle-list-names", "third"); selftest(rc == 2, "third expected:0 got:%i\n", rc); rc = of_property_match_string(np, "phandle-list-names", "fourth"); - selftest(rc == -ENODATA, "unmatched string; rc=%i", rc); + selftest(rc == -ENODATA, "unmatched string; rc=%i\n", rc); rc = of_property_match_string(np, "missing-property", "blah"); - selftest(rc == -EINVAL, "missing property; rc=%i", rc); + selftest(rc == -EINVAL, "missing property; rc=%i\n", rc); rc = of_property_match_string(np, "empty-property", "blah"); - selftest(rc == -ENODATA, "empty property; rc=%i", rc); + selftest(rc == -ENODATA, "empty property; rc=%i\n", rc); rc = of_property_match_string(np, "unterminated-string", "blah"); - selftest(rc == -EILSEQ, "unterminated string; rc=%i", rc); + selftest(rc == -EILSEQ, "unterminated string; rc=%i\n", rc); + + /* of_property_count_strings() tests */ + rc = of_property_count_strings(np, "string-property"); + selftest(rc == 1, "Incorrect string count; rc=%i\n", rc); + rc = of_property_count_strings(np, "phandle-list-names"); + selftest(rc == 3, "Incorrect string count; rc=%i\n", rc); + rc = of_property_count_strings(np, "unterminated-string"); + selftest(rc == -EILSEQ, "unterminated string; rc=%i\n", rc); + rc = of_property_count_strings(np, "unterminated-string-list"); + selftest(rc == -EILSEQ, "unterminated string array; rc=%i\n", rc); + + /* of_property_read_string_index() tests */ + rc = of_property_read_string_index(np, "string-property", 0, strings); + selftest(rc == 0 && !strcmp(strings[0], "foobar"), "of_property_read_string_index() failure; rc=%i\n", rc); + strings[0] = NULL; + rc = of_property_read_string_index(np, "string-property", 1, strings); + selftest(rc == -ENODATA && strings[0] == NULL, "of_property_read_string_index() failure; rc=%i\n", rc); + rc = of_property_read_string_index(np, "phandle-list-names", 0, strings); + selftest(rc == 0 && !strcmp(strings[0], "first"), "of_property_read_string_index() failure; rc=%i\n", rc); + rc = of_property_read_string_index(np, "phandle-list-names", 1, strings); + selftest(rc == 0 && !strcmp(strings[0], "second"), "of_property_read_string_index() failure; rc=%i\n", rc); + rc = of_property_read_string_index(np, "phandle-list-names", 2, strings); + selftest(rc == 0 && !strcmp(strings[0], "third"), "of_property_read_string_index() failure; rc=%i\n", rc); + strings[0] = NULL; + rc = of_property_read_string_index(np, "phandle-list-names", 3, strings); + selftest(rc == -ENODATA && strings[0] == NULL, "of_property_read_string_index() failure; rc=%i\n", rc); + strings[0] = NULL; + rc = of_property_read_string_index(np, "unterminated-string", 0, strings); + selftest(rc == -EILSEQ && strings[0] == NULL, "of_property_read_string_index() failure; rc=%i\n", rc); + rc = of_property_read_string_index(np, "unterminated-string-list", 0, strings); + selftest(rc == 0 && !strcmp(strings[0], "first"), "of_property_read_string_index() failure; rc=%i\n", rc); + strings[0] = NULL; + rc = of_property_read_string_index(np, "unterminated-string-list", 2, strings); /* should fail */ + selftest(rc == -EILSEQ && strings[0] == NULL, "of_property_read_string_index() failure; rc=%i\n", rc); + strings[1] = NULL; + + /* of_property_read_string_array() tests */ + rc = of_property_read_string_array(np, "string-property", strings, 4); + selftest(rc == 1, "Incorrect string count; rc=%i\n", rc); + rc = of_property_read_string_array(np, "phandle-list-names", strings, 4); + selftest(rc == 3, "Incorrect string count; rc=%i\n", rc); + rc = of_property_read_string_array(np, "unterminated-string", strings, 4); + selftest(rc == -EILSEQ, "unterminated string; rc=%i\n", rc); + /* -- An incorrectly formed string should cause a failure */ + rc = of_property_read_string_array(np, "unterminated-string-list", strings, 4); + selftest(rc == -EILSEQ, "unterminated string array; rc=%i\n", rc); + /* -- parsing the correctly formed strings should still work: */ + strings[2] = NULL; + rc = of_property_read_string_array(np, "unterminated-string-list", strings, 2); + selftest(rc == 2 && strings[2] == NULL, "of_property_read_string_array() failure; rc=%i\n", rc); + strings[1] = NULL; + rc = of_property_read_string_array(np, "phandle-list-names", strings, 1); + selftest(rc == 1 && strings[1] == NULL, "Overwrote end of string array; rc=%i, str='%s'\n", rc, strings[1]); } static void __init of_selftest_parse_interrupts(void) @@ -313,7 +367,7 @@ pr_info("start of selftest - you will see error messages\n"); of_selftest_parse_phandle_with_args(); - of_selftest_property_match_string(); + of_selftest_property_string(); of_selftest_parse_interrupts(); of_selftest_parse_interrupts_extended(); pr_info("end of selftest - %i passed, %i failed\n", --- linux-3.13.0.orig/drivers/parisc/iommu-helpers.h +++ linux-3.13.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) { @@ -139,14 +143,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-3.13.0.orig/drivers/parport/Kconfig +++ linux-3.13.0/drivers/parport/Kconfig @@ -5,6 +5,12 @@ # Parport configuration. # +config ARCH_MIGHT_HAVE_PC_PARPORT + bool + help + Select this config option from the architecture Kconfig if + the architecture might have PC parallel port hardware. + menuconfig PARPORT tristate "Parallel port support" depends on HAS_IOMEM @@ -31,12 +37,6 @@ If unsure, say Y. -config ARCH_MIGHT_HAVE_PC_PARPORT - bool - help - Select this config option from the architecture Kconfig if - the architecture might have PC parallel port hardware. - if PARPORT config PARPORT_PC --- linux-3.13.0.orig/drivers/parport/parport_pc.c +++ linux-3.13.0/drivers/parport/parport_pc.c @@ -2600,8 +2600,6 @@ syba_2p_epp, syba_1p_ecp, titan_010l, - titan_1284p1, - titan_1284p2, avlab_1p, avlab_2p, oxsemi_952, @@ -2660,8 +2658,6 @@ /* syba_2p_epp AP138B */ { 2, { { 0, 0x078 }, { 0, 0x178 }, } }, /* syba_1p_ecp W83787 */ { 1, { { 0, 0x078 }, } }, /* titan_010l */ { 1, { { 3, -1 }, } }, - /* titan_1284p1 */ { 1, { { 0, 1 }, } }, - /* titan_1284p2 */ { 2, { { 0, 1 }, { 2, 3 }, } }, /* avlab_1p */ { 1, { { 0, 1}, } }, /* avlab_2p */ { 2, { { 0, 1}, { 2, 3 },} }, /* The Oxford Semi cards are unusual: 954 doesn't support ECP, @@ -2677,8 +2673,8 @@ /* netmos_9705 */ { 1, { { 0, -1 }, } }, /* netmos_9715 */ { 2, { { 0, 1 }, { 2, 3 },} }, /* netmos_9755 */ { 2, { { 0, 1 }, { 2, 3 },} }, - /* netmos_9805 */ { 1, { { 0, -1 }, } }, - /* netmos_9815 */ { 2, { { 0, -1 }, { 2, -1 }, } }, + /* netmos_9805 */ { 1, { { 0, 1 }, } }, + /* netmos_9815 */ { 2, { { 0, 1 }, { 2, 3 }, } }, /* netmos_9901 */ { 1, { { 0, -1 }, } }, /* netmos_9865 */ { 1, { { 0, -1 }, } }, /* quatech_sppxp100 */ { 1, { { 0, 1 }, } }, @@ -2722,8 +2718,6 @@ PCI_ANY_ID, PCI_ANY_ID, 0, 0, syba_1p_ecp }, { PCI_VENDOR_ID_TITAN, PCI_DEVICE_ID_TITAN_010L, PCI_ANY_ID, PCI_ANY_ID, 0, 0, titan_010l }, - { 0x9710, 0x9805, 0x1000, 0x0010, 0, 0, titan_1284p1 }, - { 0x9710, 0x9815, 0x1000, 0x0020, 0, 0, titan_1284p2 }, /* PCI_VENDOR_ID_AVLAB/Intek21 has another bunch of cards ...*/ /* AFAVLAB_TK9902 */ { 0x14db, 0x2120, PCI_ANY_ID, PCI_ANY_ID, 0, 0, avlab_1p}, --- linux-3.13.0.orig/drivers/pci/Makefile +++ linux-3.13.0/drivers/pci/Makefile @@ -48,6 +48,7 @@ obj-$(CONFIG_TILE) += setup-bus.o setup-irq.o obj-$(CONFIG_SPARC_LEON) += setup-bus.o setup-irq.o obj-$(CONFIG_M68K) += setup-bus.o setup-irq.o +obj-$(CONFIG_ARM64) += setup-bus.o setup-irq.o # # ACPI Related PCI FW Functions --- linux-3.13.0.orig/drivers/pci/access.c +++ linux-3.13.0/drivers/pci/access.c @@ -359,6 +359,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; @@ -367,12 +403,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-3.13.0.orig/drivers/pci/host/Kconfig +++ linux-3.13.0/drivers/pci/host/Kconfig @@ -33,4 +33,18 @@ There are 3 internal PCI controllers available with a single built-in EHCI/OHCI host controller present on each one. +config PCI_XGENE_MSI + bool + +config PCI_XGENE + bool "X-Gene PCIe controller" + depends on ARCH_XGENE + depends on OF + select PCIEPORTBUS + select PCI_XGENE_MSI if PCI_MSI + help + Say Y here if you want internal PCI support on APM X-Gene SoC. + There are 5 internal PCIe ports available. Each port is GEN3 capable + and have varied lanes from x1 to x8. + endmenu --- linux-3.13.0.orig/drivers/pci/host/Makefile +++ linux-3.13.0/drivers/pci/host/Makefile @@ -4,3 +4,5 @@ obj-$(CONFIG_PCI_MVEBU) += pci-mvebu.o obj-$(CONFIG_PCI_TEGRA) += pci-tegra.o obj-$(CONFIG_PCI_RCAR_GEN2) += pci-rcar-gen2.o +obj-$(CONFIG_PCI_XGENE) += pci-xgene.o +obj-$(CONFIG_PCI_XGENE_MSI) += pci-xgene-msi.o --- linux-3.13.0.orig/drivers/pci/host/pci-exynos.c +++ linux-3.13.0/drivers/pci/host/pci-exynos.c @@ -535,7 +535,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-3.13.0.orig/drivers/pci/host/pci-mvebu.c +++ linux-3.13.0/drivers/pci/host/pci-mvebu.c @@ -60,14 +60,6 @@ #define PCIE_DEBUG_CTRL 0x1a60 #define PCIE_DEBUG_SOFT_RESET BIT(20) -/* - * This product ID is registered by Marvell, and used when the Marvell - * SoC is not the root complex, but an endpoint on the PCIe bus. It is - * therefore safe to re-use this PCI ID for our emulated PCI-to-PCI - * bridge. - */ -#define MARVELL_EMULATED_PCI_PCI_BRIDGE_ID 0x7846 - /* PCI configuration space of a PCI-to-PCI bridge */ struct mvebu_sw_pci_bridge { u16 vendor; @@ -294,6 +286,58 @@ return PCIBIOS_SUCCESSFUL; } +/* + * Remove windows, starting from the largest ones to the smallest + * ones. + */ +static void mvebu_pcie_del_windows(struct mvebu_pcie_port *port, + phys_addr_t base, size_t size) +{ + while (size) { + size_t sz = 1 << (fls(size) - 1); + + mvebu_mbus_del_window(base, sz); + base += sz; + size -= sz; + } +} + +/* + * MBus windows can only have a power of two size, but PCI BARs do not + * have this constraint. Therefore, we have to split the PCI BAR into + * areas each having a power of two size. We start from the largest + * one (i.e highest order bit set in the size). + */ +static void mvebu_pcie_add_windows(struct mvebu_pcie_port *port, + unsigned int target, unsigned int attribute, + phys_addr_t base, size_t size, + phys_addr_t remap) +{ + size_t size_mapped = 0; + + while (size) { + size_t sz = 1 << (fls(size) - 1); + int ret; + + ret = mvebu_mbus_add_window_remap_by_id(target, attribute, base, + sz, remap); + if (ret) { + dev_err(&port->pcie->pdev->dev, + "Could not create MBus window at 0x%x, size 0x%x: %d\n", + base, sz, ret); + mvebu_pcie_del_windows(port, base - size_mapped, + size_mapped); + return; + } + + size -= sz; + size_mapped += sz; + base += sz; + if (remap != MVEBU_MBUS_NO_REMAP) + remap += sz; + } +} + static void mvebu_pcie_handle_iobase_change(struct mvebu_pcie_port *port) { phys_addr_t iobase; @@ -304,8 +348,8 @@ /* If a window was configured, remove it */ if (port->iowin_base) { - mvebu_mbus_del_window(port->iowin_base, - port->iowin_size); + mvebu_pcie_del_windows(port, port->iowin_base, + port->iowin_size); port->iowin_base = 0; port->iowin_size = 0; } @@ -325,11 +369,11 @@ port->iowin_base = port->pcie->io.start + iobase; port->iowin_size = ((0xFFF | ((port->bridge.iolimit & 0xF0) << 8) | (port->bridge.iolimitupper << 16)) - - iobase); + iobase) + 1; - mvebu_mbus_add_window_remap_by_id(port->io_target, port->io_attr, - port->iowin_base, port->iowin_size, - iobase); + mvebu_pcie_add_windows(port, port->io_target, port->io_attr, + port->iowin_base, port->iowin_size, + iobase); pci_ioremap_io(iobase, port->iowin_base); } @@ -341,8 +385,8 @@ /* If a window was configured, remove it */ if (port->memwin_base) { - mvebu_mbus_del_window(port->memwin_base, - port->memwin_size); + mvebu_pcie_del_windows(port, port->memwin_base, + port->memwin_size); port->memwin_base = 0; port->memwin_size = 0; } @@ -359,10 +403,11 @@ port->memwin_base = ((port->bridge.membase & 0xFFF0) << 16); port->memwin_size = (((port->bridge.memlimit & 0xFFF0) << 16) | 0xFFFFF) - - port->memwin_base; + port->memwin_base + 1; - mvebu_mbus_add_window_by_id(port->mem_target, port->mem_attr, - port->memwin_base, port->memwin_size); + mvebu_pcie_add_windows(port, port->mem_target, port->mem_attr, + port->memwin_base, port->memwin_size, + MVEBU_MBUS_NO_REMAP); } /* @@ -377,7 +422,8 @@ bridge->class = PCI_CLASS_BRIDGE_PCI; bridge->vendor = PCI_VENDOR_ID_MARVELL; - bridge->device = MARVELL_EMULATED_PCI_PCI_BRIDGE_ID; + bridge->device = mvebu_readl(port, PCIE_DEV_ID_OFF) >> 16; + bridge->revision = mvebu_readl(port, PCIE_DEV_REV_OFF) & 0xff; bridge->header_type = PCI_HEADER_TYPE_BRIDGE; bridge->cache_line_size = 0x10; @@ -702,14 +748,21 @@ /* * On the PCI-to-PCI bridge side, the I/O windows must have at - * least a 64 KB size and be aligned on their size, and the - * memory windows must have at least a 1 MB size and be - * aligned on their size + * least a 64 KB size and the memory windows must have at + * least a 1 MB size. Moreover, MBus windows need to have a + * base address aligned on their size, and their size must be + * a power of two. This means that if the BAR doesn't have a + * power of two size, several MBus windows will actually be + * created. We need to ensure that the biggest MBus window + * (which will be the first one) is aligned on its size, which + * explains the rounddown_pow_of_two() being done here. */ if (res->flags & IORESOURCE_IO) - return round_up(start, max((resource_size_t)SZ_64K, size)); + return round_up(start, max((resource_size_t)SZ_64K, + rounddown_pow_of_two(size))); else if (res->flags & IORESOURCE_MEM) - return round_up(start, max((resource_size_t)SZ_1M, size)); + return round_up(start, max((resource_size_t)SZ_1M, + rounddown_pow_of_two(size))); else return start; } @@ -771,9 +824,9 @@ rangesz = pna + na + ns; nranges = rlen / sizeof(__be32) / rangesz; - for (i = 0; i < nranges; i++) { + for (i = 0; i < nranges; i++, range += rangesz) { u32 flags = of_read_number(range, 1); - u32 slot = of_read_number(range, 2); + u32 slot = of_read_number(range + 1, 1); u64 cpuaddr = of_read_number(range + na, pna); unsigned long rtype; @@ -781,14 +834,14 @@ rtype = IORESOURCE_IO; else if (DT_FLAGS_TO_TYPE(flags) == DT_TYPE_MEM32) rtype = IORESOURCE_MEM; + else + continue; if (slot == PCI_SLOT(devfn) && type == rtype) { *tgt = DT_CPUADDR_TO_TARGET(cpuaddr); *attr = DT_CPUADDR_TO_ATTR(cpuaddr); return 0; } - - range += rangesz; } return -ENOENT; --- linux-3.13.0.orig/drivers/pci/host/pci-tegra.c +++ linux-3.13.0/drivers/pci/host/pci-tegra.c @@ -1252,7 +1252,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-3.13.0.orig/drivers/pci/host/pci-xgene-msi.c +++ linux-3.13.0/drivers/pci/host/pci-xgene-msi.c @@ -0,0 +1,567 @@ +/* + * XGene MSI Driver + * + * Copyright (c) 2010, Applied Micro Circuits Corporation + * Author: Tanmay Inamdar + * Tuan Phan + * Jim Hull + * + * 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 + +#define NR_MSI_REG 16 +#define IRQS_PER_MSI_INDEX 32 +#define IRQS_PER_MSI_REG 256 +#define NR_MSI_IRQS (NR_MSI_REG * IRQS_PER_MSI_REG) + +#define XGENE_PIC_IP_MASK 0x0000000F +#define XGENE_PIC_IP_GIC 0x00000001 + +/* PCIe MSI Index Registers */ +#define MSI0IR0 0x000000 +#define MSIFIR7 0x7F0000 + +/* PCIe MSI Interrupt Register */ +#define MSI1INT0 0x800000 +#define MSI1INTF 0x8F0000 + +struct xgene_msi { + struct irq_domain *irqhost; + unsigned long cascade_irq; + u32 msiir_offset; + u32 msi_addr_lo; + u32 msi_addr_hi; + void __iomem *msi_regs; + u32 feature; + int msi_virqs[NR_MSI_REG]; + struct msi_bitmap bitmap; + struct list_head list; /* support multiple MSI banks */ + phandle phandle; +}; + +#ifdef CONFIG_ARCH_MSLIM +static inline u64 xgene_pcie_get_iof_addr(u64 addr) +{ + return mslim_pa_to_iof_axi(lower_32_bits(addr)); +} +#else +#define xgene_pcie_get_iof_addr(addr) addr +#endif + +#define MSI_DRIVER_VERSION "0.1" + +struct xgene_msi_feature { + u32 xgene_pic_ip; + u32 msiir_offset; /* Offset of MSIIR, relative to start of MSIR bank */ +}; + +struct xgene_msi_cascade_data { + struct xgene_msi *msi_data; + int index; +}; + +LIST_HEAD(msi_head); + +static const struct xgene_msi_feature gic_msi_feature = { + .xgene_pic_ip = XGENE_PIC_IP_GIC, + .msiir_offset = 0, +}; + +irq_hw_number_t virq_to_hw(unsigned int virq) +{ + struct irq_data *irq_data = irq_get_irq_data(virq); + return WARN_ON(!irq_data) ? 0 : irq_data->hwirq; +} + +static inline u32 xgene_msi_intr_read(phys_addr_t __iomem *base, + unsigned int reg) +{ + u32 irq_reg = MSI1INT0 + (reg << 16); + return readl((void *)((phys_addr_t) base + irq_reg)); +} + +static inline u32 xgene_msi_read(phys_addr_t __iomem *base, unsigned int group, + unsigned int reg) +{ + u32 irq_reg = MSI0IR0 + (group << 19) + (reg << 16); + return readl((void *)((phys_addr_t) base + irq_reg)); +} + +/* + * We do not need this actually. The MSIR register has been read once + * in the cascade interrupt. So, this MSI interrupt has been acked +*/ +static void xgene_msi_end_irq(struct irq_data *d) +{ +} + +#ifdef CONFIG_SMP +static int xgene_msi_set_affinity(struct irq_data *d, + const struct cpumask *mask_val, bool force) +{ + u64 virt_msir; + + virt_msir = (u64)irq_get_handler_data(d->irq); + return irq_set_affinity(virt_msir, mask_val); +} +#endif + +static struct irq_chip xgene_msi_chip = { + .irq_mask = mask_msi_irq, + .irq_unmask = unmask_msi_irq, + .irq_ack = xgene_msi_end_irq, +#ifdef CONFIG_SMP + .irq_set_affinity = xgene_msi_set_affinity, +#endif + .name = "xgene-msi", +}; + +static int xgene_msi_host_map(struct irq_domain *h, unsigned int virq, + irq_hw_number_t hw) +{ + struct xgene_msi *msi_data = h->host_data; + struct irq_chip *chip = &xgene_msi_chip; + + pr_debug("\nENTER %s, virq=%u\n", __func__, virq); + irq_set_status_flags(virq, IRQ_TYPE_LEVEL_HIGH); + irq_set_chip_data(virq, msi_data); + irq_set_chip_and_handler(virq, chip, handle_level_irq); + + return 0; +} + +static const struct irq_domain_ops xgene_msi_host_ops = { + .map = xgene_msi_host_map, +}; + +static int xgene_msi_init_allocator(struct xgene_msi *msi_data) +{ +#ifdef CONFIG_ACPI + if (efi_enabled(EFI_BOOT)) + return msi_bitmap_alloc(&msi_data->bitmap, NR_MSI_IRQS, NULL); + else +#endif + return msi_bitmap_alloc(&msi_data->bitmap, NR_MSI_IRQS, + msi_data->irqhost->of_node); +} + +int arch_msi_check_device(struct pci_dev *dev, int nvec, int type) +{ + pr_debug("ENTER %s\n", __func__); + return 0; +} + +void arch_teardown_msi_irqs(struct pci_dev *dev) +{ + struct msi_desc *entry; + struct xgene_msi *msi_data; + + pr_debug("ENTER %s\n", __func__); + list_for_each_entry(entry, &dev->msi_list, list) { + if (entry->irq == 0) + continue; + + 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); + } +} + +static void xgene_compose_msi_msg(struct pci_dev *dev, int hwirq, + struct msi_msg *msg, + struct xgene_msi *msi_data) +{ + int reg_set, group; + + group = hwirq % NR_MSI_REG; + reg_set = hwirq / (NR_MSI_REG * IRQS_PER_MSI_INDEX); + + pr_debug("group = %d, reg_set : 0x%x\n", group, reg_set); + msg->address_lo = msi_data->msi_addr_lo + + (((8 * group) + reg_set) << 16); + msg->address_hi = msi_data->msi_addr_hi; + msg->data = (hwirq / NR_MSI_REG) % IRQS_PER_MSI_INDEX; + pr_debug("addr : 0x%08x, data : 0x%x\n", msg->address_lo, msg->data); +} + +int arch_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type) +{ + struct device_node *np; + struct msi_desc *entry; + struct msi_msg msg; + u64 gic_irq; + unsigned int virq; + struct xgene_msi *msi_data; + phandle phandle = 0; + int rc = 0; + int hwirq = -1; + + pr_debug("ENTER %s - nvec = %d, type = %d\n", __func__, nvec, type); +#ifdef CONFIG_ACPI + if (!efi_enabled(EFI_BOOT)) +#endif + { + np = pci_device_to_OF_node(pdev); + /* + * If the PCI node has an xgene,msi property, + * then we need to use it to find the specific MSI. + */ + np = of_parse_phandle(np, "xgene,msi", 0); + if (np) { + if (of_device_is_compatible(np, + "xgene,gic-msi-cascade")) + phandle = np->phandle; + else { + dev_err(&pdev->dev, + "node %s has an invalid xgene,msi phandle %u\n", + np->full_name, np->phandle); + rc = -EINVAL; + goto exit; + } + } else + dev_info(&pdev->dev, "Found no xgene,msi phandle\n"); + } + + list_for_each_entry(entry, &pdev->msi_list, list) { + pr_debug("Loop over MSI devices\n"); + /* + * Loop over all the MSI devices until we find one that has an + * available interrupt. + */ + list_for_each_entry(msi_data, &msi_head, list) { + if (phandle && (phandle != msi_data->phandle)) + continue; + pr_debug("Xgene msi pointer : %p\n", msi_data); + hwirq = msi_bitmap_alloc_hwirqs(&msi_data->bitmap, 1); + break; + } + + if (hwirq < 0) { + dev_err(&pdev->dev, + "could not allocate MSI interrupt\n"); + rc = -ENOSPC; + goto exit; + } + + virq = irq_create_mapping(msi_data->irqhost, hwirq); + if (virq == 0) { + dev_err(&pdev->dev, "fail mapping hwirq %i\n", hwirq); + msi_bitmap_free_hwirqs(&msi_data->bitmap, hwirq, 1); + rc = -ENOSPC; + goto exit; + } + + gic_irq = msi_data->msi_virqs[hwirq % NR_MSI_REG]; + pr_debug("Created Mapping HWIRQ %d on GIC IRQ %llu " + "TO VIRQ %d\n", + hwirq, gic_irq, virq); + /* chip_data is msi_data via host->hostdata in host->map() */ + irq_set_msi_desc(virq, entry); + xgene_compose_msi_msg(pdev, hwirq, &msg, msi_data); + irq_set_handler_data(virq, (void *)gic_irq); + write_msi_msg(virq, &msg); + } + +exit: + return rc; +} + +static void xgene_msi_cascade(unsigned int irq, struct irq_desc *desc) +{ + struct irq_chip *chip = irq_desc_get_chip(desc); + struct xgene_msi_cascade_data *cascade_data; + struct xgene_msi *msi_data; + unsigned int cascade_irq; + int msir_index = -1; + u32 msir_value = 0; + u32 intr_index = 0; + u32 msi_intr_reg_value = 0; + u32 msi_intr_reg; + + chained_irq_enter(chip, desc); + cascade_data = irq_get_handler_data(irq); + msi_data = cascade_data->msi_data; + + msi_intr_reg = cascade_data->index; + + if (msi_intr_reg >= NR_MSI_REG) + cascade_irq = 0; + + switch (msi_data->feature & XGENE_PIC_IP_MASK) { + case XGENE_PIC_IP_GIC: + msi_intr_reg_value = xgene_msi_intr_read(msi_data->msi_regs, + msi_intr_reg); + break; + } + + while (msi_intr_reg_value) { + msir_index = ffs(msi_intr_reg_value) - 1; + msir_value = xgene_msi_read(msi_data->msi_regs, msi_intr_reg, + msir_index); + while (msir_value) { + intr_index = ffs(msir_value) - 1; + cascade_irq = irq_linear_revmap(msi_data->irqhost, + msir_index * IRQS_PER_MSI_INDEX * NR_MSI_REG + + intr_index * NR_MSI_REG + msi_intr_reg); + if (cascade_irq != 0) + generic_handle_irq(cascade_irq); + msir_value &= ~(1 << intr_index); + } + msi_intr_reg_value &= ~(1 << msir_index); + } + + chained_irq_exit(chip, desc); +} + +static int xgene_msi_remove(struct platform_device *pdev) +{ + int virq, i; + struct xgene_msi *msi = platform_get_drvdata(pdev); + + pr_debug("ENTER %s\n", __func__); + for (i = 0; i < NR_MSI_REG; i++) { + virq = msi->msi_virqs[i]; + if (virq != 0) + irq_dispose_mapping(virq); + } + + if (msi->bitmap.bitmap) + msi_bitmap_free(&msi->bitmap); + + return 0; +} + +static int xgene_msi_setup_hwirq(struct xgene_msi *msi, + struct platform_device *pdev, + int offset, int irq_index) +{ + int virt_msir; + cpumask_var_t mask; + struct xgene_msi_cascade_data *cascade_data = NULL; + + virt_msir = platform_get_irq(pdev, irq_index); + if (virt_msir < 0) { + dev_err(&pdev->dev, "Cannot translate IRQ index %d\n", + irq_index); + return -EINVAL; + } + + cascade_data = devm_kzalloc(&pdev->dev, + sizeof(struct xgene_msi_cascade_data), GFP_KERNEL); + if (!cascade_data) { + dev_err(&pdev->dev, "No memory for MSI cascade data\n"); + return -ENOMEM; + } + + if (alloc_cpumask_var(&mask, GFP_KERNEL)) { + cpumask_setall(mask); + irq_set_affinity(virt_msir, mask); + free_cpumask_var(mask); + } + + msi->msi_virqs[irq_index] = virt_msir; + cascade_data->index = offset; + cascade_data->msi_data = msi; + irq_set_handler_data(virt_msir, cascade_data); + irq_set_chained_handler(virt_msir, xgene_msi_cascade); + pr_debug("mapped phys irq %d\n", virt_msir); + + return 0; +} + +static int xgene_msi_get_param(struct platform_device *pdev, const char *name, + u32 *buf, int count) +{ + int rc = 0; + +#ifdef CONFIG_ACPI + if (efi_enabled(EFI_BOOT)) { + struct acpi_dsm_entry entry; + + if (acpi_dsm_lookup_value(ACPI_HANDLE(&pdev->dev), + name, 0, &entry) || !entry.value) + return -EINVAL; + + if (count == 2) + sscanf(entry.value, "%d %d", &buf[0], &buf[1]); + else + rc = -EINVAL; + + kfree(entry.key); + kfree(entry.value); + } else +#endif + if (of_property_read_u32_array(pdev->dev.of_node, name, + buf, count)) + rc = -EINVAL; + + return rc; +} + +static int xgene_msi_probe(struct platform_device *pdev) +{ + struct xgene_msi *msi; + struct resource *res; + phys_addr_t msiir_offset; + int rc, j, irq_index, count; + u32 offset; + u32 buf[] = { 0, NR_MSI_IRQS}; + + msi = devm_kzalloc(&pdev->dev, sizeof(struct xgene_msi), GFP_KERNEL); + if (!msi) { + dev_err(&pdev->dev, "No memory for MSI structure\n"); + return -ENOMEM; + } + + platform_set_drvdata(pdev, msi); + +#ifdef CONFIG_ACPI + if (efi_enabled(EFI_BOOT)) + msi->irqhost = irq_domain_add_linear(NULL, + NR_MSI_IRQS, &xgene_msi_host_ops, msi); + else +#endif + msi->irqhost = irq_domain_add_linear(pdev->dev.of_node, + NR_MSI_IRQS, &xgene_msi_host_ops, msi); + if (msi->irqhost == NULL) { + dev_err(&pdev->dev, "No memory for MSI irqhost\n"); + rc = -ENOMEM; + goto error; + } + + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + msi->msi_regs = devm_ioremap_resource(&pdev->dev, res); + if (IS_ERR(msi->msi_regs)) { + dev_err(&pdev->dev, "no reg space\n"); + rc = -EINVAL; + goto error; + } + + pr_debug("mapped 0x%08llx to 0x%p Size : 0x%08llx\n", res->start, + msi->msi_regs, resource_size(res)); + + msiir_offset = lower_32_bits(xgene_pcie_get_iof_addr(res->start)); + msi->msiir_offset = gic_msi_feature.msiir_offset + + (msiir_offset & 0xfffff); + msi->msi_addr_hi = upper_32_bits(res->start); + msi->msi_addr_lo = gic_msi_feature.msiir_offset + + (msiir_offset & 0xffffffff); + msi->feature = gic_msi_feature.xgene_pic_ip; + +#ifdef CONFIG_ACPI + if (efi_enabled(EFI_BOOT)) + msi->phandle = 0; + else +#endif + msi->phandle = pdev->dev.of_node->phandle; + + rc = xgene_msi_init_allocator(msi); + if (rc) { + dev_err(&pdev->dev, "Error allocating MSI bitmap\n"); + goto error; + } + + rc = xgene_msi_get_param(pdev, "msi-available-ranges", buf, 2); + if (rc) { + dev_err(&pdev->dev, "Error getting MSI ranges\n"); + goto error; + } + + pr_debug("buf[0] = 0x%x buf[1] = 0x%x\n", buf[0], buf[1]); + if (buf[0] % IRQS_PER_MSI_REG || buf[1] % IRQS_PER_MSI_REG) { + pr_err_once("msi available range of" + "%u at %u is not IRQ-aligned\n", + buf[1], buf[0]); + rc = -EINVAL; + goto error; + } + + offset = buf[0] / IRQS_PER_MSI_REG; + count = buf[1] / IRQS_PER_MSI_REG; + pr_debug("offset = %d count = %d\n", offset, count); + + for (irq_index = 0, j = 0; j < count; j++, irq_index++) { + rc = xgene_msi_setup_hwirq(msi, pdev, offset + j, irq_index); + if (rc) + goto error; + } + + list_add_tail(&msi->list, &msi_head); + + pr_info("XGene: PCIe MSI driver v%s\n", MSI_DRIVER_VERSION); + + return 0; + +error: + xgene_msi_remove(pdev); + return rc; +} + +static const struct of_device_id xgene_msi_of_ids[] = { + { + .compatible = "xgene,gic-msi", + }, + {} +}; + +#ifdef CONFIG_ACPI +static const struct acpi_device_id xgene_msi_acpi_ids[] = { + {"APMC0D0E", 0}, + {}, +}; +#endif + +static struct platform_driver xgene_msi_driver = { + .driver = { + .name = "xgene-msi", + .owner = THIS_MODULE, + .of_match_table = xgene_msi_of_ids, +#ifdef CONFIG_ACPI + .acpi_match_table = ACPI_PTR(xgene_msi_acpi_ids), +#endif + }, + .probe = xgene_msi_probe, + .remove = xgene_msi_remove, +}; + +static __init int xgene_msi_init(void) +{ + return platform_driver_register(&xgene_msi_driver); +} + +subsys_initcall_sync(xgene_msi_init); --- linux-3.13.0.orig/drivers/pci/host/pci-xgene.c +++ linux-3.13.0/drivers/pci/host/pci-xgene.c @@ -0,0 +1,784 @@ +/** + * APM X-Gene PCIe Driver + * + * Copyright (c) 2013 Applied Micro Circuits Corporation. + * + * Author: Tanmay Inamdar . + * + * 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 + +#define PCIECORE_LTSSM 0x4c +#define PCIECORE_CTLANDSTATUS 0x50 +#define PIPE_PHY_RATE_RD(src) ((0xc000 & (u32)(src)) >> 0xe) +#define INTXSTATUSMASK 0x6c +#define PIM1_1L 0x80 +#define IBAR2 0x98 +#define IR2MSK 0x9c +#define PIM2_1L 0xa0 +#define IBAR3L 0xb4 +#define IR3MSKL 0xbc +#define PIM3_1L 0xc4 +#define OMR1BARL 0x100 +#define OMR2BARL 0x118 +#define CFGBARL 0x154 +#define CFGBARH 0x158 +#define CFGCTL 0x15c +#define RTDID 0x160 +#define BRIDGE_CFG_0 0x2000 +#define BRIDGE_CFG_1 0x2004 +#define BRIDGE_CFG_4 0x2010 +#define BRIDGE_CFG_32 0x2030 +#define BRIDGE_CFG_14 0x2038 +#define BRIDGE_CTRL_1 0x2204 +#define BRIDGE_CTRL_2 0x2208 +#define BRIDGE_CTRL_5 0x2214 +#define BRIDGE_STATUS_0 0x2600 +#define MEM_RAM_SHUTDOWN 0xd070 +#define BLOCK_MEM_RDY 0xd074 + +#define DEVICE_PORT_TYPE_MASK 0x03c00000 +#define PM_FORCE_RP_MODE_MASK 0x00000400 +#define SWITCH_PORT_MODE_MASK 0x00000800 +#define CLASS_CODE_MASK 0xffffff00 +#define LINK_UP_MASK 0x00000100 +#define AER_OPTIONAL_ERROR_EN 0xffc00000 +#define XGENE_PCIE_DEV_CTRL 0x2f02 +#define AXI_EP_CFG_ACCESS 0x10000 +#define ENABLE_ASPM 0x08000000 +#define XGENE_PORT_TYPE_RC 0x05000000 +#define BLOCK_MEM_RDY_VAL 0xFFFFFFFF +#define EN_COHERENCY 0xF0000000 +#define EN_REG 0x00000001 +#define OB_LO_IO 0x00000002 +#define XGENE_PCIE_VENDORID 0xE008 +#define XGENE_PCIE_DEVICEID 0xE004 +#define XGENE_PCIE_TIMEOUT (500*1000) /* us */ +#define XGENE_LTSSM_DETECT_WAIT 20 +#define XGENE_LTSSM_L0_WAIT 4 +#define SZ_1T (SZ_1G*1024ULL) + +struct xgene_res_cfg { + struct resource res; + u64 pci_addr; +}; + +struct xgene_pcie_port { + struct device_node *node; + struct device *dev; + struct clk *clk; + struct xgene_res_cfg mem; + struct xgene_res_cfg io; + struct resource realio; + void __iomem *csr_base; + void __iomem *cfg_base; + u8 link_up; +}; + +static inline u32 pcie_bar_low_val(u32 addr, u32 flags) +{ + return (addr & PCI_BASE_ADDRESS_MEM_MASK) | flags; +} + +static inline struct xgene_pcie_port * +xgene_pcie_bus_to_port(struct pci_bus *bus) +{ + struct pci_sys_data *sys = bus->sysdata; + return sys->private_data; +} + +/* PCIE Configuration Out/In */ +static inline void xgene_pcie_cfg_out32(void __iomem *addr, u32 val) +{ + writel(val, addr); +} + +static inline void xgene_pcie_cfg_out16(void __iomem *addr, u16 val) +{ + u64 temp_addr = (u64)addr & ~0x3; + u32 val32 = readl((void __iomem *)temp_addr); + + switch ((u64) addr & 0x3) { + case 2: + val32 &= ~0xFFFF0000; + val32 |= (u32) val << 16; + break; + case 0: + default: + val32 &= ~0xFFFF; + val32 |= val; + break; + } + writel(val32, (void __iomem *)temp_addr); +} + +static inline void xgene_pcie_cfg_out8(void __iomem *addr, u8 val) +{ + phys_addr_t temp_addr = (u64) addr & ~0x3; + u32 val32 = readl((void __iomem *)temp_addr); + + switch ((u64) addr & 0x3) { + case 0: + val32 &= ~0xFF; + val32 |= val; + break; + case 1: + val32 &= ~0xFF00; + val32 |= (u32) val << 8; + break; + case 2: + val32 &= ~0xFF0000; + val32 |= (u32) val << 16; + break; + case 3: + default: + val32 &= ~0xFF000000; + val32 |= (u32) val << 24; + break; + } + writel(val32, (void __iomem *)temp_addr); +} + +static inline void xgene_pcie_cfg_in32(void __iomem *addr, u32 *val) +{ + *val = readl(addr); +} + +static inline void xgene_pcie_cfg_in16(void __iomem *addr, u16 *val) +{ + u64 temp_addr = (u64)addr & ~0x3; + u32 val32; + + val32 = readl((void __iomem *)temp_addr); + + switch ((u64)addr & 0x3) { + case 2: + *val = val32 >> 16; + break; + case 0: + default: + *val = val32; + break; + } +} + +static inline void xgene_pcie_cfg_in8(void __iomem *addr, u8 *val) +{ + u64 temp_addr = (u64)addr & ~0x3; + u32 val32; + + val32 = readl((void __iomem *)temp_addr); + + switch ((u64)addr & 0x3) { + case 3: + *val = val32 >> 24; + break; + case 2: + *val = val32 >> 16; + break; + case 1: + *val = val32 >> 8; + break; + case 0: + default: + *val = val32; + break; + } +} + +/* When the address bit [17:16] is 2'b01, the Configuration access will be + * treated as Type 1 and it will be forwarded to external PCIe device. + */ +static void __iomem *xgene_pcie_get_cfg_base(struct pci_bus *bus) +{ + struct xgene_pcie_port *port = xgene_pcie_bus_to_port(bus); + + if (bus->number >= (bus->primary + 1)) + return port->cfg_base + AXI_EP_CFG_ACCESS; + + return port->cfg_base; +} + +/* For Configuration request, RTDID register is used as Bus Number, + * Device Number and Function number of the header fields. + */ +static void xgene_pcie_set_rtdid_reg(struct pci_bus *bus, uint devfn) +{ + struct xgene_pcie_port *port = xgene_pcie_bus_to_port(bus); + unsigned int b, d, f; + u32 rtdid_val = 0; + + b = bus->number; + d = PCI_SLOT(devfn); + f = PCI_FUNC(devfn); + + if (!pci_is_root_bus(bus)) + rtdid_val = (b << 8) | (d << 3) | f; + + writel(rtdid_val, port->csr_base + RTDID); + /* read the register back to ensure flush */ + readl(port->csr_base + RTDID); +} + +static int xgene_pcie_read_config(struct pci_bus *bus, unsigned int devfn, + int offset, int len, u32 *val) +{ + struct xgene_pcie_port *port = xgene_pcie_bus_to_port(bus); + void __iomem *addr; + u8 val8; + u16 val16; + + if ((pci_is_root_bus(bus) && devfn != 0) || !port->link_up) + return PCIBIOS_DEVICE_NOT_FOUND; + + xgene_pcie_set_rtdid_reg(bus, devfn); + addr = xgene_pcie_get_cfg_base(bus); + switch (len) { + case 1: + xgene_pcie_cfg_in8(addr + offset, &val8); + *val = val8; + break; + case 2: + xgene_pcie_cfg_in16(addr + offset, &val16); + *val = val16; + break; + default: + xgene_pcie_cfg_in32(addr + offset, val); + break; + } + return PCIBIOS_SUCCESSFUL; +} + +static int xgene_pcie_write_config(struct pci_bus *bus, unsigned int devfn, + int offset, int len, u32 val) +{ + struct xgene_pcie_port *port = xgene_pcie_bus_to_port(bus); + void __iomem *addr; + + if ((pci_is_root_bus(bus) && devfn != 0) || !port->link_up) + return PCIBIOS_DEVICE_NOT_FOUND; + + xgene_pcie_set_rtdid_reg(bus, devfn); + addr = xgene_pcie_get_cfg_base(bus); + switch (len) { + case 1: + xgene_pcie_cfg_out8(addr + offset, (u8) val); + break; + case 2: + xgene_pcie_cfg_out16(addr + offset, (u16) val); + break; + default: + xgene_pcie_cfg_out32(addr + offset, val); + break; + } + return PCIBIOS_SUCCESSFUL; +} + +static struct pci_ops xgene_pcie_ops = { + .read = xgene_pcie_read_config, + .write = xgene_pcie_write_config +}; + +static void xgene_pcie_program_core(void __iomem *csr_base) +{ + u32 val; + + val = readl(csr_base + BRIDGE_CFG_0); + val |= AER_OPTIONAL_ERROR_EN; + writel(val, csr_base + BRIDGE_CFG_0); + writel(0x0, csr_base + INTXSTATUSMASK); + val = readl(csr_base + BRIDGE_CTRL_1); + val = (val & ~0xffff) | XGENE_PCIE_DEV_CTRL; + writel(val, csr_base + BRIDGE_CTRL_1); +} + +static u64 xgene_pcie_set_ib_mask(void __iomem *csr_base, u32 addr, + u32 flags, u64 size) +{ + u64 mask = (~(size - 1) & PCI_BASE_ADDRESS_MEM_MASK) | flags; + u32 val32 = 0; + u32 val; + + val32 = readl(csr_base + addr); + val = (val32 & 0x0000ffff) | (lower_32_bits(mask) << 16); + writel(val, csr_base + addr); + + val32 = readl(csr_base + addr + 0x04); + val = (val32 & 0xffff0000) | (lower_32_bits(mask) >> 16); + writel(val, csr_base + addr + 0x04); + + val32 = readl(csr_base + addr + 0x04); + val = (val32 & 0x0000ffff) | (upper_32_bits(mask) << 16); + writel(val, csr_base + addr + 0x04); + + val32 = readl(csr_base + addr + 0x08); + val = (val32 & 0xffff0000) | (upper_32_bits(mask) >> 16); + writel(val, csr_base + addr + 0x08); + + return mask; +} + +static void xgene_pcie_poll_linkup(struct xgene_pcie_port *port, + u32 *lanes, u32 *speed) +{ + void __iomem *csr_base = port->csr_base; + u32 val32; + u64 start_time, time; + + /* + * A component enters the LTSSM Detect state within + * 20ms of the end of fundamental core reset. + */ + msleep(XGENE_LTSSM_DETECT_WAIT); + port->link_up = 0; + start_time = jiffies; + do { + val32 = readl(csr_base + PCIECORE_CTLANDSTATUS); + if (val32 & LINK_UP_MASK) { + port->link_up = 1; + *speed = PIPE_PHY_RATE_RD(val32); + val32 = readl(csr_base + BRIDGE_STATUS_0); + *lanes = val32 >> 26; + } + time = jiffies_to_msecs(jiffies - start_time); + } while ((!port->link_up) && (time <= XGENE_LTSSM_L0_WAIT)); +} + +static void xgene_pcie_setup_root_complex(struct xgene_pcie_port *port) +{ + void __iomem *csr_base = port->csr_base; + u32 val; + + val = (XGENE_PCIE_DEVICEID << 16) | XGENE_PCIE_VENDORID; + writel(val, csr_base + BRIDGE_CFG_0); + + val = readl(csr_base + BRIDGE_CFG_1); + val &= ~CLASS_CODE_MASK; + val |= PCI_CLASS_BRIDGE_PCI << 16; + writel(val, csr_base + BRIDGE_CFG_1); + + val = readl(csr_base + BRIDGE_CFG_14); + val |= SWITCH_PORT_MODE_MASK; + val &= ~PM_FORCE_RP_MODE_MASK; + writel(val, csr_base + BRIDGE_CFG_14); + + val = readl(csr_base + BRIDGE_CTRL_5); + val &= ~DEVICE_PORT_TYPE_MASK; + val |= XGENE_PORT_TYPE_RC; + writel(val, csr_base + BRIDGE_CTRL_5); + + val = readl(csr_base + BRIDGE_CTRL_2); + val |= ENABLE_ASPM; + writel(val, csr_base + BRIDGE_CTRL_2); + + val = readl(csr_base + BRIDGE_CFG_32); + writel(val | (1 << 19), csr_base + BRIDGE_CFG_32); +} + +/* Return 0 on success */ +static int xgene_pcie_init_ecc(struct xgene_pcie_port *port) +{ + void __iomem *csr_base = port->csr_base; + int timeout = XGENE_PCIE_TIMEOUT; + u32 val; + + val = readl(csr_base + MEM_RAM_SHUTDOWN); + if (val == 0) + return 0; + writel(0x0, csr_base + MEM_RAM_SHUTDOWN); + do { + val = readl(csr_base + BLOCK_MEM_RDY); + udelay(1); + } while ((val != BLOCK_MEM_RDY_VAL) && timeout--); + + return !(timeout > 0); +} + +static int xgene_pcie_init_port(struct xgene_pcie_port *port) +{ + int rc; + + port->clk = clk_get(port->dev, NULL); + if (IS_ERR_OR_NULL(port->clk)) { + dev_err(port->dev, "clock not available\n"); + return -ENODEV; + } + + rc = clk_prepare_enable(port->clk); + if (rc) { + dev_err(port->dev, "clock enable failed\n"); + return rc; + } + + rc = xgene_pcie_init_ecc(port); + if (rc) { + dev_err(port->dev, "memory init failed\n"); + return rc; + } + + return 0; +} + +struct device_node *pcibios_get_phb_of_node(struct pci_bus *bus) +{ + struct xgene_pcie_port *port = xgene_pcie_bus_to_port(bus); + + return of_node_get(port->node); +} + +static void xgene_pcie_fixup_bridge(struct pci_dev *dev) +{ + int i; + + /* Hide the PCI host BARs from the kernel as their content doesn't + * fit well in the resource management + */ + for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) { + dev->resource[i].start = dev->resource[i].end = 0; + dev->resource[i].flags = 0; + } + dev_info(&dev->dev, "Hiding X-Gene pci host bridge resources %s\n", + pci_name(dev)); +} +DECLARE_PCI_FIXUP_HEADER(XGENE_PCIE_VENDORID, XGENE_PCIE_DEVICEID, + xgene_pcie_fixup_bridge); + +static int xgene_pcie_map_reg(struct xgene_pcie_port *port, + struct platform_device *pdev, u64 *cfg_addr) +{ + struct resource *res; + + res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "csr"); + port->csr_base = devm_ioremap_resource(port->dev, res); + if (IS_ERR(port->csr_base)) + return PTR_ERR(port->csr_base); + + res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "cfg"); + port->cfg_base = devm_ioremap_resource(port->dev, res); + if (IS_ERR(port->cfg_base)) + return PTR_ERR(port->cfg_base); + *cfg_addr = res->start; + + return 0; +} + +static void xgene_pcie_setup_ob_reg(struct xgene_pcie_port *port, + u32 addr, u32 restype) +{ + struct resource *res; + void __iomem *base = port->csr_base + addr; + resource_size_t size; + u64 cpu_addr, pci_addr; + u64 mask = 0; + u32 min_size; + u32 flag = EN_REG; + + if (restype == IORESOURCE_MEM) { + res = &port->mem.res; + pci_addr = port->mem.pci_addr; + min_size = SZ_128M; + } else { + res = &port->io.res; + pci_addr = port->io.pci_addr; + min_size = 128; + flag |= OB_LO_IO; + } + size = resource_size(res); + if (size >= min_size) + mask = ~(size - 1) | flag; + else + dev_warn(port->dev, "res size 0x%llx less than minimum 0x%x\n", + (u64)size, min_size); + cpu_addr = res->start; + writel(lower_32_bits(cpu_addr), base); + writel(upper_32_bits(cpu_addr), base + 0x04); + writel(lower_32_bits(mask), base + 0x08); + writel(upper_32_bits(mask), base + 0x0c); + writel(lower_32_bits(pci_addr), base + 0x10); + writel(upper_32_bits(pci_addr), base + 0x14); +} + +static void xgene_pcie_setup_cfg_reg(void __iomem *csr_base, u64 addr) +{ + writel(lower_32_bits(addr), csr_base + CFGBARL); + writel(upper_32_bits(addr), csr_base + CFGBARH); + writel(EN_REG, csr_base + CFGCTL); +} + +static int xgene_pcie_parse_map_ranges(struct xgene_pcie_port *port, + u64 cfg_addr) +{ + struct device_node *np = port->node; + struct of_pci_range range; + struct of_pci_range_parser parser; + struct device *dev = port->dev; + + if (of_pci_range_parser_init(&parser, np)) { + dev_err(dev, "missing ranges property\n"); + return -EINVAL; + } + + /* Get the I/O, memory ranges from DT */ + for_each_of_pci_range(&parser, &range) { + struct resource *res = NULL; + u64 restype = range.flags & IORESOURCE_TYPE_BITS; + u64 end = range.cpu_addr + range.size - 1; + dev_dbg(port->dev, "0x%08x 0x%016llx..0x%016llx -> 0x%016llx\n", + range.flags, range.cpu_addr, end, range.pci_addr); + + switch (restype) { + case IORESOURCE_IO: + res = &port->io.res; + port->io.pci_addr = range.pci_addr; + of_pci_range_to_resource(&range, np, res); + xgene_pcie_setup_ob_reg(port, OMR1BARL, restype); + break; + case IORESOURCE_MEM: + res = &port->mem.res; + port->mem.pci_addr = range.pci_addr; + of_pci_range_to_resource(&range, np, res); + xgene_pcie_setup_ob_reg(port, OMR2BARL, restype); + break; + default: + dev_err(dev, "invalid io resource!"); + return -EINVAL; + } + } + xgene_pcie_setup_cfg_reg(port->csr_base, cfg_addr); + return 0; +} + +static void xgene_pcie_setup_pims(void *addr, u64 pim, u64 size) +{ + writel(lower_32_bits(pim), addr); + writel(upper_32_bits(pim) | EN_COHERENCY, addr + 0x04); + writel(lower_32_bits(size), addr + 0x10); + writel(upper_32_bits(size), addr + 0x14); +} + +/* + * X-Gene PCIe support maximum 3 inbound memory regions + * This function helps to select a region based on size of region + */ +static int xgene_pcie_select_ib_reg(u8 *ib_reg_mask, u64 size) +{ + if ((size > 4) && (size < SZ_16M) && !(*ib_reg_mask & (1 << 1))) { + *ib_reg_mask |= (1 << 1); + return 1; + } + + if ((size > SZ_1K) && (size < SZ_1T) && !(*ib_reg_mask & (1 << 0))) { + *ib_reg_mask |= (1 << 0); + return 0; + } + + if ((size > SZ_1M) && (size < SZ_1T) && !(*ib_reg_mask & (1 << 2))) { + *ib_reg_mask |= (1 << 2); + return 2; + } + return -EINVAL; +} + +static void xgene_pcie_setup_ib_reg(struct xgene_pcie_port *port, + struct of_pci_range *range, u8 *ib_reg_mask) +{ + void __iomem *csr_base = port->csr_base; + void __iomem *cfg_base = port->cfg_base; + void *bar_addr; + void *pim_addr; + u64 restype = range->flags & IORESOURCE_TYPE_BITS; + u64 cpu_addr = range->cpu_addr; + u64 pci_addr = range->pci_addr; + u64 size = range->size; + u64 mask = ~(size - 1) | EN_REG; + u32 flags = PCI_BASE_ADDRESS_MEM_TYPE_64; + u32 bar_low; + int region; + + region = xgene_pcie_select_ib_reg(ib_reg_mask, range->size); + if (region < 0) { + dev_warn(port->dev, "invalid pcie dma-range config\n"); + return; + } + + if (restype == PCI_BASE_ADDRESS_MEM_PREFETCH) + flags |= PCI_BASE_ADDRESS_MEM_PREFETCH; + + bar_low = pcie_bar_low_val((u32)cpu_addr, flags); + switch (region) { + case 0: + xgene_pcie_set_ib_mask(csr_base, BRIDGE_CFG_4, flags, size); + bar_addr = cfg_base + PCI_BASE_ADDRESS_0; + writel(bar_low, bar_addr); + writel(upper_32_bits(cpu_addr), bar_addr + 0x4); + pim_addr = csr_base + PIM1_1L; + break; + case 1: + bar_addr = csr_base + IBAR2; + writel(bar_low, bar_addr); + writel(lower_32_bits(mask), csr_base + IR2MSK); + pim_addr = csr_base + PIM2_1L; + break; + case 2: + bar_addr = csr_base + IBAR3L; + writel(bar_low, bar_addr); + writel(upper_32_bits(cpu_addr), bar_addr + 0x4); + writel(lower_32_bits(mask), csr_base + IR3MSKL); + writel(upper_32_bits(mask), csr_base + IR3MSKL + 0x4); + pim_addr = csr_base + PIM3_1L; + break; + } + + xgene_pcie_setup_pims(pim_addr, pci_addr, size); +} + +static int pci_dma_range_parser_init(struct of_pci_range_parser *parser, + struct device_node *node) +{ + const int na = 3, ns = 2; + int rlen; + + parser->node = node; + parser->pna = of_n_addr_cells(node); + parser->np = parser->pna + na + ns; + + parser->range = of_get_property(node, "ib-ranges", &rlen); + if (!parser->range) + return -ENOENT; + + parser->end = parser->range + rlen / sizeof(__be32); + return 0; +} + +static int xgene_pcie_parse_map_dma_ranges(struct xgene_pcie_port *port) +{ + struct device_node *np = port->node; + struct of_pci_range range; + struct of_pci_range_parser parser; + struct device *dev = port->dev; + u8 ib_reg_mask = 0; + + if (pci_dma_range_parser_init(&parser, np)) { + dev_err(dev, "missing ib-ranges property\n"); + return -EINVAL; + } + + /* Get the ib-ranges from DT */ + for_each_of_pci_range(&parser, &range) { + u64 end = range.cpu_addr + range.size - 1; + dev_dbg(port->dev, "0x%08x 0x%016llx..0x%016llx -> 0x%016llx\n", + range.flags, range.cpu_addr, end, range.pci_addr); + xgene_pcie_setup_ib_reg(port, &range, &ib_reg_mask); + } + return 0; +} + +static int xgene_pcie_setup(int nr, struct pci_sys_data *sys) +{ + struct xgene_pcie_port *pp = sys->private_data; + struct resource *io = &pp->realio; + + io->start = sys->domain * SZ_64K; + io->end = io->start + SZ_64K; + io->flags = pp->io.res.flags; + io->name = "PCI IO"; + pci_ioremap_io(io->start, pp->io.res.start); + + pci_add_resource_offset(&sys->resources, io, sys->io_offset); + sys->mem_offset = pp->mem.res.start - pp->mem.pci_addr; + pci_add_resource_offset(&sys->resources, &pp->mem.res, + sys->mem_offset); + return 1; +} + +static int xgene_pcie_probe_bridge(struct platform_device *pdev) +{ + struct device_node *np = of_node_get(pdev->dev.of_node); + struct xgene_pcie_port *port; + struct hw_pci xgene_pcie_hw; + u32 lanes = 0, speed = 0; + u64 cfg_addr = 0; + static u32 domain; + int ret; + + port = devm_kzalloc(&pdev->dev, sizeof(*port), GFP_KERNEL); + if (!port) + return -ENOMEM; + port->node = np; + port->dev = &pdev->dev; + + ret = xgene_pcie_map_reg(port, pdev, &cfg_addr); + if (ret) + return ret; + + ret = xgene_pcie_init_port(port); + if (ret) + goto skip; + xgene_pcie_program_core(port->csr_base); + xgene_pcie_setup_root_complex(port); + ret = xgene_pcie_parse_map_ranges(port, cfg_addr); + if (ret) + goto skip; + ret = xgene_pcie_parse_map_dma_ranges(port); + if (ret) + goto skip; + xgene_pcie_poll_linkup(port, &lanes, &speed); +skip: + if (!port->link_up) + dev_info(port->dev, "(rc) link down\n"); + else + dev_info(port->dev, "(rc) x%d gen-%d link up\n", + lanes, speed + 1); + platform_set_drvdata(pdev, port); + memset(&xgene_pcie_hw, 0, sizeof(xgene_pcie_hw)); + xgene_pcie_hw.domain = domain++; + xgene_pcie_hw.private_data = (void **)&port; + xgene_pcie_hw.nr_controllers = 1; + xgene_pcie_hw.setup = xgene_pcie_setup; + xgene_pcie_hw.map_irq = of_irq_parse_and_map_pci; + xgene_pcie_hw.ops = &xgene_pcie_ops; + pci_common_init(&xgene_pcie_hw); + return 0; +} + +static const struct of_device_id xgene_pcie_match_table[] = { + {.compatible = "apm,xgene-pcie",}, + {}, +}; + +static struct platform_driver xgene_pcie_driver = { + .driver = { + .name = "xgene-pcie", + .owner = THIS_MODULE, + .of_match_table = of_match_ptr(xgene_pcie_match_table), + }, + .probe = xgene_pcie_probe_bridge, +}; +module_platform_driver(xgene_pcie_driver); + +MODULE_AUTHOR("Tanmay Inamdar "); +MODULE_DESCRIPTION("APM X-Gene PCIe driver"); +MODULE_LICENSE("GPL v2"); --- linux-3.13.0.orig/drivers/pci/host/pcie-designware.c +++ linux-3.13.0/drivers/pci/host/pcie-designware.c @@ -498,13 +498,13 @@ dw_pcie_writel_rc(pp, PCIE_ATU_REGION_OUTBOUND | PCIE_ATU_REGION_INDEX1, PCIE_ATU_VIEWPORT); dw_pcie_writel_rc(pp, PCIE_ATU_TYPE_CFG1, PCIE_ATU_CR1); - dw_pcie_writel_rc(pp, PCIE_ATU_ENABLE, PCIE_ATU_CR2); dw_pcie_writel_rc(pp, pp->cfg1_base, PCIE_ATU_LOWER_BASE); dw_pcie_writel_rc(pp, (pp->cfg1_base >> 32), PCIE_ATU_UPPER_BASE); dw_pcie_writel_rc(pp, pp->cfg1_base + pp->config.cfg1_size - 1, PCIE_ATU_LIMIT); dw_pcie_writel_rc(pp, busdev, PCIE_ATU_LOWER_TARGET); dw_pcie_writel_rc(pp, 0, PCIE_ATU_UPPER_TARGET); + dw_pcie_writel_rc(pp, PCIE_ATU_ENABLE, PCIE_ATU_CR2); } static void dw_pcie_prog_viewport_mem_outbound(struct pcie_port *pp) @@ -513,7 +513,6 @@ dw_pcie_writel_rc(pp, PCIE_ATU_REGION_OUTBOUND | PCIE_ATU_REGION_INDEX0, PCIE_ATU_VIEWPORT); dw_pcie_writel_rc(pp, PCIE_ATU_TYPE_MEM, PCIE_ATU_CR1); - dw_pcie_writel_rc(pp, PCIE_ATU_ENABLE, PCIE_ATU_CR2); dw_pcie_writel_rc(pp, pp->mem_base, PCIE_ATU_LOWER_BASE); dw_pcie_writel_rc(pp, (pp->mem_base >> 32), PCIE_ATU_UPPER_BASE); dw_pcie_writel_rc(pp, pp->mem_base + pp->config.mem_size - 1, @@ -521,6 +520,7 @@ dw_pcie_writel_rc(pp, pp->config.mem_bus_addr, PCIE_ATU_LOWER_TARGET); dw_pcie_writel_rc(pp, upper_32_bits(pp->config.mem_bus_addr), PCIE_ATU_UPPER_TARGET); + dw_pcie_writel_rc(pp, PCIE_ATU_ENABLE, PCIE_ATU_CR2); } static void dw_pcie_prog_viewport_io_outbound(struct pcie_port *pp) @@ -529,7 +529,6 @@ dw_pcie_writel_rc(pp, PCIE_ATU_REGION_OUTBOUND | PCIE_ATU_REGION_INDEX1, PCIE_ATU_VIEWPORT); dw_pcie_writel_rc(pp, PCIE_ATU_TYPE_IO, PCIE_ATU_CR1); - dw_pcie_writel_rc(pp, PCIE_ATU_ENABLE, PCIE_ATU_CR2); dw_pcie_writel_rc(pp, pp->io_base, PCIE_ATU_LOWER_BASE); dw_pcie_writel_rc(pp, (pp->io_base >> 32), PCIE_ATU_UPPER_BASE); dw_pcie_writel_rc(pp, pp->io_base + pp->config.io_size - 1, @@ -537,6 +536,7 @@ dw_pcie_writel_rc(pp, pp->config.io_bus_addr, PCIE_ATU_LOWER_TARGET); dw_pcie_writel_rc(pp, upper_32_bits(pp->config.io_bus_addr), PCIE_ATU_UPPER_TARGET); + dw_pcie_writel_rc(pp, PCIE_ATU_ENABLE, PCIE_ATU_CR2); } static int dw_pcie_rd_other_conf(struct pcie_port *pp, struct pci_bus *bus, @@ -773,7 +773,7 @@ /* setup RC BARs */ dw_pcie_writel_rc(pp, 0x00000004, PCI_BASE_ADDRESS_0); - dw_pcie_writel_rc(pp, 0x00000004, PCI_BASE_ADDRESS_1); + dw_pcie_writel_rc(pp, 0x00000000, PCI_BASE_ADDRESS_1); /* setup interrupt pins */ dw_pcie_readl_rc(pp, PCI_INTERRUPT_LINE, &val); --- linux-3.13.0.orig/drivers/pci/hotplug/acpiphp_glue.c +++ linux-3.13.0/drivers/pci/hotplug/acpiphp_glue.c @@ -706,6 +706,17 @@ return (unsigned int)sta; } +static inline bool device_status_valid(unsigned int sta) +{ + /* + * ACPI spec says that _STA may return bit 0 clear with bit 3 set + * if the device is valid but does not require a device driver to be + * loaded (Section 6.3.7 of ACPI 5.0A). + */ + unsigned int mask = ACPI_STA_DEVICE_ENABLED | ACPI_STA_DEVICE_FUNCTIONING; + return (sta & mask) == mask; +} + /** * trim_stale_devices - remove PCI devices that are not responding. * @dev: PCI device to start walking the hierarchy from. @@ -721,7 +732,7 @@ unsigned long long sta; status = acpi_evaluate_integer(handle, "_STA", NULL, &sta); - alive = (ACPI_SUCCESS(status) && sta == ACPI_STA_ALL) + alive = (ACPI_SUCCESS(status) && device_status_valid(sta)) || acpiphp_no_hotplug(handle); } if (!alive) { @@ -764,7 +775,7 @@ mutex_lock(&slot->crit_sect); if (slot_no_hotplug(slot)) { ; /* do nothing */ - } else if (get_slot_status(slot) == ACPI_STA_ALL) { + } else if (device_status_valid(get_slot_status(slot))) { /* remove stale devices if any */ list_for_each_entry_safe(dev, tmp, &bus->devices, bus_list) --- linux-3.13.0.orig/drivers/pci/hotplug/cpci_hotplug_pci.c +++ linux-3.13.0/drivers/pci/hotplug/cpci_hotplug_pci.c @@ -282,12 +282,13 @@ } parent = slot->dev->bus; - list_for_each_entry(dev, &parent->devices, bus_list) + list_for_each_entry(dev, &parent->devices, bus_list) { if (PCI_SLOT(dev->devfn) != PCI_SLOT(slot->devfn)) continue; if ((dev->hdr_type == PCI_HEADER_TYPE_BRIDGE) || (dev->hdr_type == PCI_HEADER_TYPE_CARDBUS)) pci_hp_add_bridge(dev); + } pci_assign_unassigned_bridge_resources(parent->self); --- linux-3.13.0.orig/drivers/pci/hotplug/shpchp_ctrl.c +++ linux-3.13.0/drivers/pci/hotplug/shpchp_ctrl.c @@ -282,8 +282,8 @@ return WRONG_BUS_FREQUENCY; } - bsp = ctrl->pci_dev->bus->cur_bus_speed; - msp = ctrl->pci_dev->bus->max_bus_speed; + bsp = ctrl->pci_dev->subordinate->cur_bus_speed; + msp = ctrl->pci_dev->subordinate->max_bus_speed; /* Check if there are other slots or devices on the same bus */ if (!list_empty(&ctrl->pci_dev->subordinate->devices)) --- linux-3.13.0.orig/drivers/pci/msi.c +++ linux-3.13.0/drivers/pci/msi.c @@ -563,6 +563,20 @@ return ret; } +static int msi_verify_entries(struct pci_dev *dev) +{ + struct msi_desc *entry; + + list_for_each_entry(entry, &dev->msi_list, list) { + if (!dev->no_64bit_msi || !entry->msg.address_hi) + continue; + dev_err(&dev->dev, "Device has broken 64-bit MSI but arch" + " tried to assign one above 4G\n"); + return -EIO; + } + return 0; +} + /** * msi_capability_init - configure device's MSI capability structure * @dev: pointer to the pci_dev data structure of MSI device function @@ -616,6 +630,13 @@ return ret; } + ret = msi_verify_entries(dev); + if (ret) { + msi_mask_irq(entry, mask, ~mask); + free_msi_irqs(dev); + return ret; + } + ret = populate_msi_sysfs(dev); if (ret) { msi_mask_irq(entry, mask, ~mask); @@ -731,6 +752,11 @@ if (ret) goto error; + /* Check if all MSI entries honor device restrictions */ + ret = msi_verify_entries(dev); + if (ret) + goto error; + /* * Some devices require MSI-X to be enabled before we can touch the * MSI-X registers. We need to mask all the vectors to prevent @@ -1079,3 +1105,77 @@ if (dev->msix_cap) msix_set_enable(dev, 0); } + +/** + * pci_enable_msi_range - configure device's MSI capability structure + * @dev: device to configure + * @minvec: minimal number of interrupts to configure + * @maxvec: maximum number of interrupts to configure + * + * This function tries to allocate a maximum possible number of interrupts in a + * range between @minvec and @maxvec. It returns a negative errno if an error + * occurs. If it succeeds, it returns the actual number of interrupts allocated + * and updates the @dev's irq member to the lowest new interrupt number; + * the other interrupt numbers allocated to this device are consecutive. + **/ +int pci_enable_msi_range(struct pci_dev *dev, int minvec, int maxvec) +{ + int nvec = maxvec; + int rc; + + if (maxvec < minvec) + return -ERANGE; + + do { + rc = pci_enable_msi_block(dev, nvec); + if (rc < 0) { + return rc; + } else if (rc > 0) { + if (rc < minvec) + return -ENOSPC; + nvec = rc; + } + } while (rc); + + return nvec; +} +EXPORT_SYMBOL(pci_enable_msi_range); + +/** + * pci_enable_msix_range - configure device's MSI-X capability structure + * @dev: pointer to the pci_dev data structure of MSI-X device function + * @entries: pointer to an array of MSI-X entries + * @minvec: minimum number of MSI-X irqs requested + * @maxvec: maximum number of MSI-X irqs requested + * + * Setup the MSI-X capability structure of device function with a maximum + * possible number of interrupts in the range between @minvec and @maxvec + * upon its software driver call to request for MSI-X mode enabled on its + * hardware device function. It returns a negative errno if an error occurs. + * If it succeeds, it returns the actual number of interrupts allocated and + * indicates the successful configuration of MSI-X capability structure + * with new allocated MSI-X interrupts. + **/ +int pci_enable_msix_range(struct pci_dev *dev, struct msix_entry *entries, + int minvec, int maxvec) +{ + int nvec = maxvec; + int rc; + + if (maxvec < minvec) + return -ERANGE; + + do { + rc = pci_enable_msix(dev, entries, nvec); + if (rc < 0) { + return rc; + } else if (rc > 0) { + if (rc < minvec) + return -ENOSPC; + nvec = rc; + } + } while (rc); + + return nvec; +} +EXPORT_SYMBOL(pci_enable_msix_range); --- linux-3.13.0.orig/drivers/pci/pci-driver.c +++ linux-3.13.0/drivers/pci/pci-driver.c @@ -1324,7 +1324,7 @@ if (add_uevent_var(env, "PCI_SLOT_NAME=%s", pci_name(pdev))) return -ENOMEM; - if (add_uevent_var(env, "MODALIAS=pci:v%08Xd%08Xsv%08Xsd%08Xbc%02Xsc%02Xi%02x", + if (add_uevent_var(env, "MODALIAS=pci:v%08Xd%08Xsv%08Xsd%08Xbc%02Xsc%02Xi%02X", pdev->vendor, pdev->device, pdev->subsystem_vendor, pdev->subsystem_device, (u8)(pdev->class >> 16), (u8)(pdev->class >> 8), --- linux-3.13.0.orig/drivers/pci/pci-sysfs.c +++ linux-3.13.0/drivers/pci/pci-sysfs.c @@ -178,7 +178,7 @@ { struct pci_dev *pci_dev = to_pci_dev(dev); - return sprintf(buf, "pci:v%08Xd%08Xsv%08Xsd%08Xbc%02Xsc%02Xi%02x\n", + return sprintf(buf, "pci:v%08Xd%08Xsv%08Xsd%08Xbc%02Xsc%02Xi%02X\n", pci_dev->vendor, pci_dev->device, pci_dev->subsystem_vendor, pci_dev->subsystem_device, (u8)(pci_dev->class >> 16), (u8)(pci_dev->class >> 8), @@ -186,7 +186,7 @@ } static DEVICE_ATTR_RO(modalias); -static ssize_t enabled_store(struct device *dev, +static ssize_t enable_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { @@ -212,7 +212,7 @@ return result < 0 ? result : count; } -static ssize_t enabled_show(struct device *dev, +static ssize_t enable_show(struct device *dev, struct device_attribute *attr, char *buf) { struct pci_dev *pdev; @@ -220,7 +220,7 @@ pdev = to_pci_dev (dev); return sprintf (buf, "%u\n", atomic_read(&pdev->enable_cnt)); } -static DEVICE_ATTR_RW(enabled); +static DEVICE_ATTR_RW(enable); #ifdef CONFIG_NUMA static ssize_t @@ -531,7 +531,7 @@ #endif &dev_attr_dma_mask_bits.attr, &dev_attr_consistent_dma_mask_bits.attr, - &dev_attr_enabled.attr, + &dev_attr_enable.attr, &dev_attr_broken_parity_status.attr, &dev_attr_msi_bus.attr, #if defined(CONFIG_PM_RUNTIME) && defined(CONFIG_ACPI) @@ -1354,10 +1354,10 @@ if (!sysfs_initialized) return -EACCES; - if (pdev->cfg_size < PCI_CFG_SPACE_EXP_SIZE) - retval = sysfs_create_bin_file(&pdev->dev.kobj, &pci_config_attr); - else + if (pdev->cfg_size > PCI_CFG_SPACE_SIZE) retval = sysfs_create_bin_file(&pdev->dev.kobj, &pcie_config_attr); + else + retval = sysfs_create_bin_file(&pdev->dev.kobj, &pci_config_attr); if (retval) goto err; @@ -1414,10 +1414,10 @@ err_resource_files: pci_remove_resource_files(pdev); err_config_file: - if (pdev->cfg_size < PCI_CFG_SPACE_EXP_SIZE) - sysfs_remove_bin_file(&pdev->dev.kobj, &pci_config_attr); - else + if (pdev->cfg_size > PCI_CFG_SPACE_SIZE) sysfs_remove_bin_file(&pdev->dev.kobj, &pcie_config_attr); + else + sysfs_remove_bin_file(&pdev->dev.kobj, &pci_config_attr); err: return retval; } @@ -1451,10 +1451,10 @@ pci_remove_capabilities_sysfs(pdev); - if (pdev->cfg_size < PCI_CFG_SPACE_EXP_SIZE) - sysfs_remove_bin_file(&pdev->dev.kobj, &pci_config_attr); - else + if (pdev->cfg_size > PCI_CFG_SPACE_SIZE) sysfs_remove_bin_file(&pdev->dev.kobj, &pcie_config_attr); + else + sysfs_remove_bin_file(&pdev->dev.kobj, &pci_config_attr); pci_remove_resource_files(pdev); --- linux-3.13.0.orig/drivers/pci/pci.c +++ linux-3.13.0/drivers/pci/pci.c @@ -782,12 +782,6 @@ if (!__pci_complete_power_transition(dev, state)) error = 0; - /* - * When aspm_policy is "powersave" this call ensures - * that ASPM is configured. - */ - if (!error && dev->bus->self) - pcie_aspm_powersave_config_link(dev->bus->self); return error; } @@ -1120,15 +1114,34 @@ static int do_pci_enable_device(struct pci_dev *dev, int bars) { int err; + struct pci_dev *bridge; + u16 cmd; + u8 pin; err = pci_set_power_state(dev, PCI_D0); if (err < 0 && err != -EIO) return err; + + bridge = pci_upstream_bridge(dev); + if (bridge) + pcie_aspm_powersave_config_link(bridge); + err = pcibios_enable_device(dev, bars); if (err < 0) return err; pci_fixup_device(pci_fixup_enable, dev); + if (dev->msi_enabled || dev->msix_enabled) + return 0; + + pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &pin); + if (pin) { + pci_read_config_word(dev, PCI_COMMAND, &cmd); + if (cmd & PCI_COMMAND_INTX_DISABLE) + pci_write_config_word(dev, PCI_COMMAND, + cmd & ~PCI_COMMAND_INTX_DISABLE); + } + return 0; } --- linux-3.13.0.orig/drivers/pci/pcie/aer/aerdrv.c +++ linux-3.13.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-3.13.0.orig/drivers/pci/pcie/aer/aerdrv.h +++ linux-3.13.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-3.13.0.orig/drivers/pci/pcie/aer/aerdrv_core.c +++ linux-3.13.0/drivers/pci/pcie/aer/aerdrv_core.c @@ -785,8 +785,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-3.13.0.orig/drivers/pci/pcie/aspm.c +++ linux-3.13.0/drivers/pci/pcie/aspm.c @@ -782,24 +782,6 @@ } EXPORT_SYMBOL(pci_disable_link_state); -void pcie_clear_aspm(struct pci_bus *bus) -{ - struct pci_dev *child; - - if (aspm_force) - return; - - /* - * Clear any ASPM setup that the firmware has carried out on this bus - */ - list_for_each_entry(child, &bus->devices, bus_list) { - __pci_disable_link_state(child, PCIE_LINK_STATE_L0S | - PCIE_LINK_STATE_L1 | - PCIE_LINK_STATE_CLKPM, - false, true); - } -} - static int pcie_aspm_set_policy(const char *val, struct kernel_param *kp) { int i; --- linux-3.13.0.orig/drivers/pci/probe.c +++ linux-3.13.0/drivers/pci/probe.c @@ -175,6 +175,9 @@ struct pci_bus_region region, inverted_region; bool bar_too_big = false, bar_disabled = false; + if (dev->non_compliant_bars) + return 0; + mask = type ? PCI_ROM_ADDRESS_MASK : ~0; /* No printks while decoding is disabled! */ @@ -214,14 +217,17 @@ res->flags |= IORESOURCE_SIZEALIGN; if (res->flags & IORESOURCE_IO) { l &= PCI_BASE_ADDRESS_IO_MASK; + sz &= PCI_BASE_ADDRESS_IO_MASK; mask = PCI_BASE_ADDRESS_IO_MASK & (u32) IO_SPACE_LIMIT; } else { l &= PCI_BASE_ADDRESS_MEM_MASK; + sz &= PCI_BASE_ADDRESS_MEM_MASK; mask = (u32)PCI_BASE_ADDRESS_MEM_MASK; } } else { res->flags |= (l & IORESOURCE_ROM_ENABLE); l &= PCI_ROM_ADDRESS_MASK; + sz &= PCI_ROM_ADDRESS_MASK; mask = (u32)PCI_ROM_ADDRESS_MASK; } @@ -1014,6 +1020,7 @@ int pci_setup_device(struct pci_dev *dev) { u32 class; + u16 cmd; u8 hdr_type; struct pci_slot *slot; int pos = 0; @@ -1061,6 +1068,16 @@ /* 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) --- linux-3.13.0.orig/drivers/pci/quirks.c +++ linux-3.13.0/drivers/pci/quirks.c @@ -24,6 +24,7 @@ #include #include #include +#include #include /* isa_dma_bridge_buggy */ #include "pci.h" @@ -40,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. @@ -288,6 +304,37 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_IBM, PCI_DEVICE_ID_IBM_CITRINE, quirk_citrine); /* + * This chip can cause bus lockups if config addresses above 0x600 + * are read or written. + */ +static void quirk_nfp6000(struct pci_dev *dev) +{ + dev->cfg_size = 0x600; +} +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_NETRONOME, PCI_DEVICE_ID_NETRONOME_NFP4000, quirk_nfp6000); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_NETRONOME, PCI_DEVICE_ID_NETRONOME_NFP6000, quirk_nfp6000); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_NETRONOME, PCI_DEVICE_ID_NETRONOME_NFP6000_VF, quirk_nfp6000); + +/* On IBM Crocodile ipr SAS adapters, expand BAR to system page size */ +static void quirk_extend_bar_to_page(struct pci_dev *dev) +{ + int i; + + for (i = 0; i < PCI_STD_RESOURCE_END; i++) { + struct resource *r = &dev->resource[i]; + + if (r->flags & IORESOURCE_MEM && resource_size(r) < PAGE_SIZE) { + r->end = PAGE_SIZE - 1; + r->start = 0; + r->flags |= IORESOURCE_UNSET; + dev_info(&dev->dev, "expanded BAR %d to page size: %pR\n", + i, r); + } + } +} +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_IBM, 0x034a, quirk_extend_bar_to_page); + +/* * S3 868 and 968 chips report region size equal to 32M, but they decode 64M. * If it's needed, re-allocate the region. */ @@ -303,19 +350,52 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_S3, PCI_DEVICE_ID_S3_868, quirk_s3_64M); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_S3, PCI_DEVICE_ID_S3_968, quirk_s3_64M); +static void quirk_io(struct pci_dev *dev, int pos, unsigned size, + const char *name) +{ + u32 region; + struct pci_bus_region bus_region; + struct resource *res = dev->resource + pos; + + pci_read_config_dword(dev, PCI_BASE_ADDRESS_0 + (pos << 2), ®ion); + + if (!region) + return; + + res->name = pci_name(dev); + res->flags = region & ~PCI_BASE_ADDRESS_IO_MASK; + res->flags |= + (IORESOURCE_IO | IORESOURCE_PCI_FIXED | IORESOURCE_SIZEALIGN); + region &= ~(size - 1); + + /* Convert from PCI bus to resource space */ + bus_region.start = region; + bus_region.end = region + size - 1; + pcibios_bus_to_resource(dev, res, &bus_region); + + dev_info(&dev->dev, FW_BUG "%s quirk: reg 0x%x: %pR\n", + name, PCI_BASE_ADDRESS_0 + (pos << 2), res); +} + /* * Some CS5536 BIOSes (for example, the Soekris NET5501 board w/ comBIOS * ver. 1.33 20070103) don't set the correct ISA PCI region header info. * BAR0 should be 8 bytes; instead, it may be set to something like 8k * (which conflicts w/ BAR1's memory range). + * + * CS553x's ISA PCI BARs may also be read-only (ref: + * https://bugzilla.kernel.org/show_bug.cgi?id=85991 - Comment #4 forward). */ static void quirk_cs5536_vsa(struct pci_dev *dev) { + static char *name = "CS5536 ISA bridge"; + if (pci_resource_len(dev, 0) != 8) { - struct resource *res = &dev->resource[0]; - res->end = res->start + 8 - 1; - dev_info(&dev->dev, "CS5536 ISA bridge bug detected " - "(incorrect header); workaround applied.\n"); + quirk_io(dev, 0, 8, name); /* SMB */ + quirk_io(dev, 1, 256, name); /* GPIO */ + quirk_io(dev, 2, 64, name); /* MFGPT */ + dev_info(&dev->dev, "%s bug detected (incorrect header); workaround applied\n", + name); } } DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_CS5536_ISA, quirk_cs5536_vsa); @@ -1825,6 +1905,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; @@ -2633,6 +2738,26 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_HINT, 0x0020, quirk_hotplug_bridge); /* + * Apple: Avoid programming the memory/io aperture of 00:1c.0 + * + * BIOS does not declare any resource for 00:1c.0, but with + * hotplug flag set, thus the OS allocates: + * [mem 0x7fa00000 - 0x7fbfffff] + * [mem 0x7fc00000-0x7fdfffff 64bit pref] + * which is conflict with an unreported device, which + * causes unpredictable result such as accessing io port. + * So clear the hotplug flag to work around it. + */ +static void quirk_apple_mbp_poweroff(struct pci_dev *dev) +{ + if (dmi_match(DMI_PRODUCT_NAME, "MacBookPro11,4") || + dmi_match(DMI_PRODUCT_NAME, "MacBookPro11,5")) + dev->is_hotplug_bridge = 0; +} + +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x8c10, quirk_apple_mbp_poweroff); + +/* * This is a quirk for the Ricoh MMC controller found as a part of * some mulifunction chips. @@ -2770,12 +2895,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. @@ -2949,6 +3077,7 @@ } DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0102, disable_igfx_irq); DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq); +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq); /* * PCI devices which are on Intel chips can skip the 10ms delay --- linux-3.13.0.orig/drivers/pci/rom.c +++ linux-3.13.0/drivers/pci/rom.c @@ -69,6 +69,7 @@ { void __iomem *image; int last_image; + unsigned length; image = rom; do { @@ -91,9 +92,9 @@ if (readb(pds + 3) != 'R') break; last_image = readb(pds + 21) & 0x80; - /* this length is reliable */ - image += readw(pds + 16) * 512; - } while (!last_image); + length = readw(pds + 16); + image += length * 512; + } while (length && !last_image); /* never return a size larger than the PCI resource window */ /* there are known ROMs that get the size wrong */ --- linux-3.13.0.orig/drivers/pci/xen-pcifront.c +++ linux-3.13.0/drivers/pci/xen-pcifront.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #define INVALID_GRANT_REF (0) @@ -51,7 +52,7 @@ }; struct pcifront_sd { - int domain; + struct pci_sysdata sd; struct pcifront_device *pdev; }; @@ -65,7 +66,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; } @@ -463,8 +466,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; @@ -1138,6 +1141,9 @@ if (!xen_pv_domain() || xen_initial_domain()) return -ENODEV; + if (!xen_has_pv_devices()) + return -ENODEV; + pci_frontend_registrar(1 /* enable */); return xenbus_register_frontend(&xenpci_driver); --- linux-3.13.0.orig/drivers/pcmcia/topic.h +++ linux-3.13.0/drivers/pcmcia/topic.h @@ -104,6 +104,9 @@ #define TOPIC_EXCA_IF_CONTROL 0x3e /* 8 bit */ #define TOPIC_EXCA_IFC_33V_ENA 0x01 +#define TOPIC_PCI_CFG_PPBCN 0x3e /* 16-bit */ +#define TOPIC_PCI_CFG_PPBCN_WBEN 0x0400 + static void topic97_zoom_video(struct pcmcia_socket *sock, int onoff) { struct yenta_socket *socket = container_of(sock, struct yenta_socket, socket); @@ -138,6 +141,7 @@ static int topic95_override(struct yenta_socket *socket) { u8 fctrl; + u16 ppbcn; /* enable 3.3V support for 16bit cards */ fctrl = exca_readb(socket, TOPIC_EXCA_IF_CONTROL); @@ -146,6 +150,18 @@ /* tell yenta to use exca registers to power 16bit cards */ socket->flags |= YENTA_16BIT_POWER_EXCA | YENTA_16BIT_POWER_DF; + /* Disable write buffers to prevent lockups under load with numerous + Cardbus cards, observed on Tecra 500CDT and reported elsewhere on the + net. This is not a power-on default according to the datasheet + but some BIOSes seem to set it. */ + if (pci_read_config_word(socket->dev, TOPIC_PCI_CFG_PPBCN, &ppbcn) == 0 + && socket->dev->revision <= 7 + && (ppbcn & TOPIC_PCI_CFG_PPBCN_WBEN)) { + ppbcn &= ~TOPIC_PCI_CFG_PPBCN_WBEN; + pci_write_config_word(socket->dev, TOPIC_PCI_CFG_PPBCN, ppbcn); + dev_info(&socket->dev->dev, "Disabled ToPIC95 Cardbus write buffers.\n"); + } + return 0; } --- linux-3.13.0.orig/drivers/phy/Kconfig +++ linux-3.13.0/drivers/phy/Kconfig @@ -51,4 +51,11 @@ help Support for Display Port PHY found on Samsung EXYNOS SoCs. +config PHY_XGENE + tristate "APM X-Gene 15Gbps PHY support" + depends on HAS_IOMEM && OF && (ARM64 || COMPILE_TEST) + select GENERIC_PHY + help + This option enables support for APM X-Gene SoC multi-purpose PHY. + endmenu --- linux-3.13.0.orig/drivers/phy/Makefile +++ linux-3.13.0/drivers/phy/Makefile @@ -7,3 +7,4 @@ obj-$(CONFIG_PHY_EXYNOS_MIPI_VIDEO) += phy-exynos-mipi-video.o obj-$(CONFIG_OMAP_USB2) += phy-omap-usb2.o obj-$(CONFIG_TWL4030_USB) += phy-twl4030-usb.o +obj-$(CONFIG_PHY_XGENE) += phy-xgene.o --- linux-3.13.0.orig/drivers/phy/phy-core.c +++ linux-3.13.0/drivers/phy/phy-core.c @@ -50,7 +50,9 @@ static int devm_phy_match(struct device *dev, void *res, void *match_data) { - return res == match_data; + struct phy **phy = res; + + return *phy == match_data; } static struct phy *phy_lookup(struct device *device, const char *port) @@ -161,6 +163,8 @@ dev_err(&phy->dev, "phy init failed --> %d\n", ret); goto out; } + } else { + ret = 0; /* Override possible ret == -ENOTSUPP */ } out: @@ -209,6 +213,8 @@ dev_err(&phy->dev, "phy poweron failed --> %d\n", ret); goto out; } + } else { + ret = 0; /* Override possible ret == -ENOTSUPP */ } out: @@ -477,8 +483,9 @@ return phy; put_dev: - put_device(&phy->dev); - ida_remove(&phy_ida, phy->id); + put_device(&phy->dev); /* calls phy_release() which frees resources */ + return ERR_PTR(ret); + free_phy: kfree(phy); return ERR_PTR(ret); @@ -662,7 +669,7 @@ phy = to_phy(dev); dev_vdbg(dev, "releasing '%s'\n", dev_name(dev)); - ida_remove(&phy_ida, phy->id); + ida_simple_remove(&phy_ida, phy->id); kfree(phy); } --- linux-3.13.0.orig/drivers/phy/phy-twl4030-usb.c +++ linux-3.13.0/drivers/phy/phy-twl4030-usb.c @@ -560,7 +560,15 @@ */ omap_musb_mailbox(status); } - sysfs_notify(&twl->dev->kobj, NULL, "vbus"); + + /* don't schedule during sleep - irq works right then */ + if (status == OMAP_MUSB_ID_GROUND && !twl->asleep) { + cancel_delayed_work(&twl->id_workaround_work); + schedule_delayed_work(&twl->id_workaround_work, HZ); + } + + if (irq) + sysfs_notify(&twl->dev->kobj, NULL, "vbus"); return IRQ_HANDLED; } @@ -569,29 +577,8 @@ { struct twl4030_usb *twl = container_of(work, struct twl4030_usb, id_workaround_work.work); - enum omap_musb_vbus_id_status status; - bool status_changed = false; - status = twl4030_usb_linkstat(twl); - - spin_lock_irq(&twl->lock); - if (status >= 0 && status != twl->linkstat) { - twl->linkstat = status; - status_changed = true; - } - spin_unlock_irq(&twl->lock); - - if (status_changed) { - dev_dbg(twl->dev, "handle missing status change to %d\n", - status); - omap_musb_mailbox(status); - } - - /* don't schedule during sleep - irq works right then */ - if (status == OMAP_MUSB_ID_GROUND && !twl->asleep) { - cancel_delayed_work(&twl->id_workaround_work); - schedule_delayed_work(&twl->id_workaround_work, HZ); - } + twl4030_usb_irq(0, twl); } static int twl4030_phy_init(struct phy *phy) @@ -753,6 +740,7 @@ struct twl4030_usb *twl = platform_get_drvdata(pdev); int val; + usb_remove_phy(&twl->phy); cancel_delayed_work(&twl->id_workaround_work); device_remove_file(twl->dev, &dev_attr_vbus); --- linux-3.13.0.orig/drivers/phy/phy-xgene.c +++ linux-3.13.0/drivers/phy/phy-xgene.c @@ -0,0 +1,1768 @@ +/* + * AppliedMicro X-Gene Multi-purpose PHY driver + * + * Copyright (c) 2014, Applied Micro Circuits Corporation + * Author: Loc Ho + * Tuan Phan + * Suman Tripathi + * + * 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 . + * + * The APM X-Gene PHY consists of two PLL clock macro's (CMU) and lanes. + * The first PLL clock macro is used for internal reference clock. The second + * PLL clock macro is used to generate the clock for the PHY. This driver + * configures the first PLL CMU, the second PLL CMU, and programs the PHY to + * operate according to the mode of operation. The first PLL CMU is only + * required if internal clock is enabled. + * + * Logical Layer Out Of HW module units: + * + * ----------------- + * | Internal | |------| + * | Ref PLL CMU |----| | ------------- --------- + * ------------ ---- | MUX |-----|PHY PLL CMU|----| Serdes| + * | | | | --------- + * External Clock ------| | ------------- + * |------| + * + * The Ref PLL CMU CSR (Configuration System Registers) is accessed + * indirectly from the SDS offset at 0x2000. It is only required for + * internal reference clock. + * The PHY PLL CMU CSR is accessed indirectly from the SDS offset at 0x0000. + * The Serdes CSR is accessed indirectly from the SDS offset at 0x0400. + * + * The Ref PLL CMU can be located within the same PHY IP or outside the PHY IP + * due to shared Ref PLL CMU. For PHY with Ref PLL CMU shared with another IP, + * it is located outside the PHY IP. This is the case for the PHY located + * at 0x1f23a000 (SATA Port 4/5). For such PHY, another resource is required + * to located the SDS/Ref PLL CMU module and its clock for that IP enabled. + * + * Currently, this driver only supports Gen3 SATA mode with external clock. + */ +#include +#include +#include +#include +#include +#include + +/* Max 2 lanes per a PHY unit */ +#define MAX_LANE 2 + +/* Register offset inside the PHY */ +#define SERDES_PLL_INDIRECT_OFFSET 0x0000 +#define SERDES_PLL_REF_INDIRECT_OFFSET 0x2000 +#define SERDES_INDIRECT_OFFSET 0x0400 +#define SERDES_LANE_STRIDE 0x0200 + +/* Some default Serdes parameters */ +#define DEFAULT_SATA_TXBOOST_GAIN { 0x1e, 0x1e, 0x1e } +#define DEFAULT_SATA_TXEYEDIRECTION { 0x0, 0x0, 0x0 } +#define DEFAULT_SATA_TXEYETUNING { 0xa, 0xa, 0xa } +#define DEFAULT_SATA_SPD_SEL { 0x1, 0x3, 0x7 } +#define DEFAULT_SATA_TXAMP { 0x8, 0x8, 0x8 } +#define DEFAULT_SATA_TXCN1 { 0x2, 0x2, 0x2 } +#define DEFAULT_SATA_TXCN2 { 0x0, 0x0, 0x0 } +#define DEFAULT_SATA_TXCP1 { 0xa, 0xa, 0xa } + +#define SATA_SPD_SEL_GEN3 0x7 +#define SATA_SPD_SEL_GEN2 0x3 +#define SATA_SPD_SEL_GEN1 0x1 + +#define SSC_DISABLE 0 +#define SSC_ENABLE 1 + +#define FBDIV_VAL_50M 0x77 +#define REFDIV_VAL_50M 0x1 +#define FBDIV_VAL_100M 0x3B +#define REFDIV_VAL_100M 0x0 + +/* SATA Clock/Reset CSR */ +#define SATACLKENREG 0x00000000 +#define SATA0_CORE_CLKEN 0x00000002 +#define SATA1_CORE_CLKEN 0x00000004 +#define SATASRESETREG 0x00000004 +#define SATA_MEM_RESET_MASK 0x00000020 +#define SATA_MEM_RESET_RD(src) (((src) & 0x00000020) >> 5) +#define SATA_SDS_RESET_MASK 0x00000004 +#define SATA_CSR_RESET_MASK 0x00000001 +#define SATA_CORE_RESET_MASK 0x00000002 +#define SATA_PMCLK_RESET_MASK 0x00000010 +#define SATA_PCLK_RESET_MASK 0x00000008 + +/* SDS CSR used for PHY Indirect access */ +#define SATA_ENET_SDS_PCS_CTL0 0x00000000 +#define REGSPEC_CFG_I_TX_WORDMODE0_SET(dst, src) \ + (((dst) & ~0x00070000) | (((u32) (src) << 16) & 0x00070000)) +#define REGSPEC_CFG_I_RX_WORDMODE0_SET(dst, src) \ + (((dst) & ~0x00e00000) | (((u32) (src) << 21) & 0x00e00000)) +#define SATA_ENET_SDS_CTL0 0x0000000c +#define REGSPEC_CFG_I_CUSTOMER_PIN_MODE0_SET(dst, src) \ + (((dst) & ~0x00007fff) | (((u32) (src)) & 0x00007fff)) +#define SATA_ENET_SDS_CTL1 0x00000010 +#define CFG_I_SPD_SEL_CDR_OVR1_SET(dst, src) \ + (((dst) & ~0x0000000f) | (((u32) (src)) & 0x0000000f)) +#define SATA_ENET_SDS_RST_CTL 0x00000024 +#define SATA_ENET_SDS_IND_CMD_REG 0x0000003c +#define CFG_IND_WR_CMD_MASK 0x00000001 +#define CFG_IND_RD_CMD_MASK 0x00000002 +#define CFG_IND_CMD_DONE_MASK 0x00000004 +#define CFG_IND_ADDR_SET(dst, src) \ + (((dst) & ~0x003ffff0) | (((u32) (src) << 4) & 0x003ffff0)) +#define SATA_ENET_SDS_IND_RDATA_REG 0x00000040 +#define SATA_ENET_SDS_IND_WDATA_REG 0x00000044 +#define SATA_ENET_CLK_MACRO_REG 0x0000004c +#define I_RESET_B_SET(dst, src) \ + (((dst) & ~0x00000001) | (((u32) (src)) & 0x00000001)) +#define I_PLL_FBDIV_SET(dst, src) \ + (((dst) & ~0x001ff000) | (((u32) (src) << 12) & 0x001ff000)) +#define I_CUSTOMEROV_SET(dst, src) \ + (((dst) & ~0x00000f80) | (((u32) (src) << 7) & 0x00000f80)) +#define O_PLL_LOCK_RD(src) (((src) & 0x40000000) >> 30) +#define O_PLL_READY_RD(src) (((src) & 0x80000000) >> 31) + +/* PLL Clock Macro Unit (CMU) CSR accessing from SDS indirectly */ +#define CMU_REG0 0x00000 +#define CMU_REG0_PLL_REF_SEL_MASK 0x00002000 +#define CMU_REG0_PLL_REF_SEL_SET(dst, src) \ + (((dst) & ~0x00002000) | (((u32) (src) << 13) & 0x00002000)) +#define CMU_REG0_PDOWN_MASK 0x00004000 +#define CMU_REG0_CAL_COUNT_RESOL_SET(dst, src) \ + (((dst) & ~0x000000e0) | (((u32) (src) << 5) & 0x000000e0)) +#define CMU_REG1 0x00002 +#define CMU_REG1_PLL_CP_SET(dst, src) \ + (((dst) & ~0x00003c00) | (((u32) (src) << 10) & 0x00003c00)) +#define CMU_REG1_PLL_MANUALCAL_SET(dst, src) \ + (((dst) & ~0x00000008) | (((u32) (src) << 3) & 0x00000008)) +#define CMU_REG1_PLL_CP_SEL_SET(dst, src) \ + (((dst) & ~0x000003e0) | (((u32) (src) << 5) & 0x000003e0)) +#define CMU_REG1_REFCLK_CMOS_SEL_MASK 0x00000001 +#define CMU_REG1_REFCLK_CMOS_SEL_SET(dst, src) \ + (((dst) & ~0x00000001) | (((u32) (src) << 0) & 0x00000001)) +#define CMU_REG2 0x00004 +#define CMU_REG2_PLL_REFDIV_SET(dst, src) \ + (((dst) & ~0x0000c000) | (((u32) (src) << 14) & 0x0000c000)) +#define CMU_REG2_PLL_LFRES_SET(dst, src) \ + (((dst) & ~0x0000001e) | (((u32) (src) << 1) & 0x0000001e)) +#define CMU_REG2_PLL_FBDIV_SET(dst, src) \ + (((dst) & ~0x00003fe0) | (((u32) (src) << 5) & 0x00003fe0)) +#define CMU_REG3 0x00006 +#define CMU_REG3_VCOVARSEL_SET(dst, src) \ + (((dst) & ~0x0000000f) | (((u32) (src) << 0) & 0x0000000f)) +#define CMU_REG3_VCO_MOMSEL_INIT_SET(dst, src) \ + (((dst) & ~0x000003f0) | (((u32) (src) << 4) & 0x000003f0)) +#define CMU_REG3_VCO_MANMOMSEL_SET(dst, src) \ + (((dst) & ~0x0000fc00) | (((u32) (src) << 10) & 0x0000fc00)) +#define CMU_REG4 0x00008 +#define CMU_REG5 0x0000a +#define CMU_REG5_PLL_LFSMCAP_SET(dst, src) \ + (((dst) & ~0x0000c000) | (((u32) (src) << 14) & 0x0000c000)) +#define CMU_REG5_PLL_LOCK_RESOLUTION_SET(dst, src) \ + (((dst) & ~0x0000000e) | (((u32) (src) << 1) & 0x0000000e)) +#define CMU_REG5_PLL_LFCAP_SET(dst, src) \ + (((dst) & ~0x00003000) | (((u32) (src) << 12) & 0x00003000)) +#define CMU_REG5_PLL_RESETB_MASK 0x00000001 +#define CMU_REG6 0x0000c +#define CMU_REG6_PLL_VREGTRIM_SET(dst, src) \ + (((dst) & ~0x00000600) | (((u32) (src) << 9) & 0x00000600)) +#define CMU_REG6_MAN_PVT_CAL_SET(dst, src) \ + (((dst) & ~0x00000004) | (((u32) (src) << 2) & 0x00000004)) +#define CMU_REG7 0x0000e +#define CMU_REG7_PLL_CALIB_DONE_RD(src) ((0x00004000 & (u32) (src)) >> 14) +#define CMU_REG7_VCO_CAL_FAIL_RD(src) ((0x00000c00 & (u32) (src)) >> 10) +#define CMU_REG8 0x00010 +#define CMU_REG9 0x00012 +#define CMU_REG9_WORD_LEN_8BIT 0x000 +#define CMU_REG9_WORD_LEN_10BIT 0x001 +#define CMU_REG9_WORD_LEN_16BIT 0x002 +#define CMU_REG9_WORD_LEN_20BIT 0x003 +#define CMU_REG9_WORD_LEN_32BIT 0x004 +#define CMU_REG9_WORD_LEN_40BIT 0x005 +#define CMU_REG9_WORD_LEN_64BIT 0x006 +#define CMU_REG9_WORD_LEN_66BIT 0x007 +#define CMU_REG9_TX_WORD_MODE_CH1_SET(dst, src) \ + (((dst) & ~0x00000380) | (((u32) (src) << 7) & 0x00000380)) +#define CMU_REG9_TX_WORD_MODE_CH0_SET(dst, src) \ + (((dst) & ~0x00000070) | (((u32) (src) << 4) & 0x00000070)) +#define CMU_REG9_PLL_POST_DIVBY2_SET(dst, src) \ + (((dst) & ~0x00000008) | (((u32) (src) << 3) & 0x00000008)) +#define CMU_REG9_VBG_BYPASSB_SET(dst, src) \ + (((dst) & ~0x00000004) | (((u32) (src) << 2) & 0x00000004)) +#define CMU_REG9_IGEN_BYPASS_SET(dst, src) \ + (((dst) & ~0x00000002) | (((u32) (src) << 1) & 0x00000002)) +#define CMU_REG10 0x00014 +#define CMU_REG10_VREG_REFSEL_SET(dst, src) \ + (((dst) & ~0x00000001) | (((u32) (src) << 0) & 0x00000001)) +#define CMU_REG11 0x00016 +#define CMU_REG12 0x00018 +#define CMU_REG12_STATE_DELAY9_SET(dst, src) \ + (((dst) & ~0x000000f0) | (((u32) (src) << 4) & 0x000000f0)) +#define CMU_REG13 0x0001a +#define CMU_REG14 0x0001c +#define CMU_REG15 0x0001e +#define CMU_REG16 0x00020 +#define CMU_REG16_PVT_DN_MAN_ENA_MASK 0x00000001 +#define CMU_REG16_PVT_UP_MAN_ENA_MASK 0x00000002 +#define CMU_REG16_VCOCAL_WAIT_BTW_CODE_SET(dst, src) \ + (((dst) & ~0x0000001c) | (((u32) (src) << 2) & 0x0000001c)) +#define CMU_REG16_CALIBRATION_DONE_OVERRIDE_SET(dst, src) \ + (((dst) & ~0x00000040) | (((u32) (src) << 6) & 0x00000040)) +#define CMU_REG16_BYPASS_PLL_LOCK_SET(dst, src) \ + (((dst) & ~0x00000020) | (((u32) (src) << 5) & 0x00000020)) +#define CMU_REG17 0x00022 +#define CMU_REG17_PVT_CODE_R2A_SET(dst, src) \ + (((dst) & ~0x00007f00) | (((u32) (src) << 8) & 0x00007f00)) +#define CMU_REG17_RESERVED_7_SET(dst, src) \ + (((dst) & ~0x000000e0) | (((u32) (src) << 5) & 0x000000e0)) +#define CMU_REG17_PVT_TERM_MAN_ENA_MASK 0x00008000 +#define CMU_REG18 0x00024 +#define CMU_REG19 0x00026 +#define CMU_REG20 0x00028 +#define CMU_REG21 0x0002a +#define CMU_REG22 0x0002c +#define CMU_REG23 0x0002e +#define CMU_REG24 0x00030 +#define CMU_REG25 0x00032 +#define CMU_REG26 0x00034 +#define CMU_REG26_FORCE_PLL_LOCK_SET(dst, src) \ + (((dst) & ~0x00000001) | (((u32) (src) << 0) & 0x00000001)) +#define CMU_REG27 0x00036 +#define CMU_REG28 0x00038 +#define CMU_REG29 0x0003a +#define CMU_REG30 0x0003c +#define CMU_REG30_LOCK_COUNT_SET(dst, src) \ + (((dst) & ~0x00000006) | (((u32) (src) << 1) & 0x00000006)) +#define CMU_REG30_PCIE_MODE_SET(dst, src) \ + (((dst) & ~0x00000008) | (((u32) (src) << 3) & 0x00000008)) +#define CMU_REG31 0x0003e +#define CMU_REG32 0x00040 +#define CMU_REG32_FORCE_VCOCAL_START_MASK 0x00004000 +#define CMU_REG32_PVT_CAL_WAIT_SEL_SET(dst, src) \ + (((dst) & ~0x00000006) | (((u32) (src) << 1) & 0x00000006)) +#define CMU_REG32_IREF_ADJ_SET(dst, src) \ + (((dst) & ~0x00000180) | (((u32) (src) << 7) & 0x00000180)) +#define CMU_REG33 0x00042 +#define CMU_REG34 0x00044 +#define CMU_REG34_VCO_CAL_VTH_LO_MAX_SET(dst, src) \ + (((dst) & ~0x0000000f) | (((u32) (src) << 0) & 0x0000000f)) +#define CMU_REG34_VCO_CAL_VTH_HI_MAX_SET(dst, src) \ + (((dst) & ~0x00000f00) | (((u32) (src) << 8) & 0x00000f00)) +#define CMU_REG34_VCO_CAL_VTH_LO_MIN_SET(dst, src) \ + (((dst) & ~0x000000f0) | (((u32) (src) << 4) & 0x000000f0)) +#define CMU_REG34_VCO_CAL_VTH_HI_MIN_SET(dst, src) \ + (((dst) & ~0x0000f000) | (((u32) (src) << 12) & 0x0000f000)) +#define CMU_REG35 0x00046 +#define CMU_REG35_PLL_SSC_MOD_SET(dst, src) \ + (((dst) & ~0x0000fe00) | (((u32) (src) << 9) & 0x0000fe00)) +#define CMU_REG36 0x00048 +#define CMU_REG36_PLL_SSC_EN_SET(dst, src) \ + (((dst) & ~0x00000010) | (((u32) (src) << 4) & 0x00000010)) +#define CMU_REG36_PLL_SSC_VSTEP_SET(dst, src) \ + (((dst) & ~0x0000ffc0) | (((u32) (src) << 6) & 0x0000ffc0)) +#define CMU_REG36_PLL_SSC_DSMSEL_SET(dst, src) \ + (((dst) & ~0x00000020) | (((u32) (src) << 5) & 0x00000020)) +#define CMU_REG37 0x0004a +#define CMU_REG38 0x0004c +#define CMU_REG39 0x0004e + +/* PHY lane CSR accessing from SDS indirectly */ +#define RXTX_REG0 0x000 +#define RXTX_REG0_CTLE_EQ_HR_SET(dst, src) \ + (((dst) & ~0x0000f800) | (((u32) (src) << 11) & 0x0000f800)) +#define RXTX_REG0_CTLE_EQ_QR_SET(dst, src) \ + (((dst) & ~0x000007c0) | (((u32) (src) << 6) & 0x000007c0)) +#define RXTX_REG0_CTLE_EQ_FR_SET(dst, src) \ + (((dst) & ~0x0000003e) | (((u32) (src) << 1) & 0x0000003e)) +#define RXTX_REG1 0x002 +#define RXTX_REG1_RXACVCM_SET(dst, src) \ + (((dst) & ~0x0000f000) | (((u32) (src) << 12) & 0x0000f000)) +#define RXTX_REG1_CTLE_EQ_SET(dst, src) \ + (((dst) & ~0x00000f80) | (((u32) (src) << 7) & 0x00000f80)) +#define RXTX_REG1_RXVREG1_SET(dst, src) \ + (((dst) & ~0x00000060) | (((u32) (src) << 5) & 0x00000060)) +#define RXTX_REG1_RXIREF_ADJ_SET(dst, src) \ + (((dst) & ~0x00000006) | (((u32) (src) << 1) & 0x00000006)) +#define RXTX_REG2 0x004 +#define RXTX_REG2_VTT_ENA_SET(dst, src) \ + (((dst) & ~0x00000100) | (((u32) (src) << 8) & 0x00000100)) +#define RXTX_REG2_TX_FIFO_ENA_SET(dst, src) \ + (((dst) & ~0x00000020) | (((u32) (src) << 5) & 0x00000020)) +#define RXTX_REG2_VTT_SEL_SET(dst, src) \ + (((dst) & ~0x000000c0) | (((u32) (src) << 6) & 0x000000c0)) +#define RXTX_REG4 0x008 +#define RXTX_REG4_TX_LOOPBACK_BUF_EN_MASK 0x00000040 +#define RXTX_REG4_TX_DATA_RATE_SET(dst, src) \ + (((dst) & ~0x0000c000) | (((u32) (src) << 14) & 0x0000c000)) +#define RXTX_REG4_TX_WORD_MODE_SET(dst, src) \ + (((dst) & ~0x00003800) | (((u32) (src) << 11) & 0x00003800)) +#define RXTX_REG5 0x00a +#define RXTX_REG5_TX_CN1_SET(dst, src) \ + (((dst) & ~0x0000f800) | (((u32) (src) << 11) & 0x0000f800)) +#define RXTX_REG5_TX_CP1_SET(dst, src) \ + (((dst) & ~0x000007e0) | (((u32) (src) << 5) & 0x000007e0)) +#define RXTX_REG5_TX_CN2_SET(dst, src) \ + (((dst) & ~0x0000001f) | (((u32) (src) << 0) & 0x0000001f)) +#define RXTX_REG6 0x00c +#define RXTX_REG6_TXAMP_CNTL_SET(dst, src) \ + (((dst) & ~0x00000780) | (((u32) (src) << 7) & 0x00000780)) +#define RXTX_REG6_TXAMP_ENA_SET(dst, src) \ + (((dst) & ~0x00000040) | (((u32) (src) << 6) & 0x00000040)) +#define RXTX_REG6_RX_BIST_ERRCNT_RD_SET(dst, src) \ + (((dst) & ~0x00000001) | (((u32) (src) << 0) & 0x00000001)) +#define RXTX_REG6_TX_IDLE_SET(dst, src) \ + (((dst) & ~0x00000008) | (((u32) (src) << 3) & 0x00000008)) +#define RXTX_REG6_RX_BIST_RESYNC_SET(dst, src) \ + (((dst) & ~0x00000002) | (((u32) (src) << 1) & 0x00000002)) +#define RXTX_REG7 0x00e +#define RXTX_REG7_RESETB_RXD_MASK 0x00000100 +#define RXTX_REG7_RESETB_RXA_MASK 0x00000080 +#define RXTX_REG7_BIST_ENA_RX_SET(dst, src) \ + (((dst) & ~0x00000040) | (((u32) (src) << 6) & 0x00000040)) +#define RXTX_REG7_RX_WORD_MODE_SET(dst, src) \ + (((dst) & ~0x00003800) | (((u32) (src) << 11) & 0x00003800)) +#define RXTX_REG8 0x010 +#define RXTX_REG8_CDR_LOOP_ENA_SET(dst, src) \ + (((dst) & ~0x00004000) | (((u32) (src) << 14) & 0x00004000)) +#define RXTX_REG8_CDR_BYPASS_RXLOS_SET(dst, src) \ + (((dst) & ~0x00000800) | (((u32) (src) << 11) & 0x00000800)) +#define RXTX_REG8_SSC_ENABLE_SET(dst, src) \ + (((dst) & ~0x00000200) | (((u32) (src) << 9) & 0x00000200)) +#define RXTX_REG8_SD_VREF_SET(dst, src) \ + (((dst) & ~0x000000f0) | (((u32) (src) << 4) & 0x000000f0)) +#define RXTX_REG8_SD_DISABLE_SET(dst, src) \ + (((dst) & ~0x00000100) | (((u32) (src) << 8) & 0x00000100)) +#define RXTX_REG7 0x00e +#define RXTX_REG7_RESETB_RXD_SET(dst, src) \ + (((dst) & ~0x00000100) | (((u32) (src) << 8) & 0x00000100)) +#define RXTX_REG7_RESETB_RXA_SET(dst, src) \ + (((dst) & ~0x00000080) | (((u32) (src) << 7) & 0x00000080)) +#define RXTX_REG7_LOOP_BACK_ENA_CTLE_MASK 0x00004000 +#define RXTX_REG7_LOOP_BACK_ENA_CTLE_SET(dst, src) \ + (((dst) & ~0x00004000) | (((u32) (src) << 14) & 0x00004000)) +#define RXTX_REG11 0x016 +#define RXTX_REG11_PHASE_ADJUST_LIMIT_SET(dst, src) \ + (((dst) & ~0x0000f800) | (((u32) (src) << 11) & 0x0000f800)) +#define RXTX_REG12 0x018 +#define RXTX_REG12_LATCH_OFF_ENA_SET(dst, src) \ + (((dst) & ~0x00002000) | (((u32) (src) << 13) & 0x00002000)) +#define RXTX_REG12_SUMOS_ENABLE_SET(dst, src) \ + (((dst) & ~0x00000004) | (((u32) (src) << 2) & 0x00000004)) +#define RXTX_REG12_RX_DET_TERM_ENABLE_MASK 0x00000002 +#define RXTX_REG12_RX_DET_TERM_ENABLE_SET(dst, src) \ + (((dst) & ~0x00000002) | (((u32) (src) << 1) & 0x00000002)) +#define RXTX_REG13 0x01a +#define RXTX_REG14 0x01c +#define RXTX_REG14_CLTE_LATCAL_MAN_PROG_SET(dst, src) \ + (((dst) & ~0x0000003f) | (((u32) (src) << 0) & 0x0000003f)) +#define RXTX_REG14_CTLE_LATCAL_MAN_ENA_SET(dst, src) \ + (((dst) & ~0x00000040) | (((u32) (src) << 6) & 0x00000040)) +#define RXTX_REG26 0x034 +#define RXTX_REG26_PERIOD_ERROR_LATCH_SET(dst, src) \ + (((dst) & ~0x00003800) | (((u32) (src) << 11) & 0x00003800)) +#define RXTX_REG26_BLWC_ENA_SET(dst, src) \ + (((dst) & ~0x00000008) | (((u32) (src) << 3) & 0x00000008)) +#define RXTX_REG21 0x02a +#define RXTX_REG21_DO_LATCH_CALOUT_RD(src) ((0x0000fc00 & (u32) (src)) >> 10) +#define RXTX_REG21_XO_LATCH_CALOUT_RD(src) ((0x000003f0 & (u32) (src)) >> 4) +#define RXTX_REG21_LATCH_CAL_FAIL_ODD_RD(src) ((0x0000000f & (u32)(src))) +#define RXTX_REG22 0x02c +#define RXTX_REG22_SO_LATCH_CALOUT_RD(src) ((0x000003f0 & (u32) (src)) >> 4) +#define RXTX_REG22_EO_LATCH_CALOUT_RD(src) ((0x0000fc00 & (u32) (src)) >> 10) +#define RXTX_REG22_LATCH_CAL_FAIL_EVEN_RD(src) ((0x0000000f & (u32)(src))) +#define RXTX_REG23 0x02e +#define RXTX_REG23_DE_LATCH_CALOUT_RD(src) ((0x0000fc00 & (u32) (src)) >> 10) +#define RXTX_REG23_XE_LATCH_CALOUT_RD(src) ((0x000003f0 & (u32) (src)) >> 4) +#define RXTX_REG24 0x030 +#define RXTX_REG24_EE_LATCH_CALOUT_RD(src) ((0x0000fc00 & (u32) (src)) >> 10) +#define RXTX_REG24_SE_LATCH_CALOUT_RD(src) ((0x000003f0 & (u32) (src)) >> 4) +#define RXTX_REG27 0x036 +#define RXTX_REG28 0x038 +#define RXTX_REG31 0x03e +#define RXTX_REG38 0x04c +#define RXTX_REG38_CUSTOMER_PINMODE_INV_SET(dst, src) \ + (((dst) & 0x0000fffe) | (((u32) (src) << 1) & 0x0000fffe)) +#define RXTX_REG39 0x04e +#define RXTX_REG40 0x050 +#define RXTX_REG41 0x052 +#define RXTX_REG42 0x054 +#define RXTX_REG43 0x056 +#define RXTX_REG44 0x058 +#define RXTX_REG45 0x05a +#define RXTX_REG46 0x05c +#define RXTX_REG47 0x05e +#define RXTX_REG48 0x060 +#define RXTX_REG49 0x062 +#define RXTX_REG50 0x064 +#define RXTX_REG51 0x066 +#define RXTX_REG52 0x068 +#define RXTX_REG53 0x06a +#define RXTX_REG54 0x06c +#define RXTX_REG55 0x06e +#define RXTX_REG61 0x07a +#define RXTX_REG61_ISCAN_INBERT_SET(dst, src) \ + (((dst) & ~0x00000010) | (((u32) (src) << 4) & 0x00000010)) +#define RXTX_REG61_LOADFREQ_SHIFT_SET(dst, src) \ + (((dst) & ~0x00000008) | (((u32) (src) << 3) & 0x00000008)) +#define RXTX_REG61_EYE_COUNT_WIDTH_SEL_SET(dst, src) \ + (((dst) & ~0x000000c0) | (((u32) (src) << 6) & 0x000000c0)) +#define RXTX_REG61_SPD_SEL_CDR_SET(dst, src) \ + (((dst) & ~0x00003c00) | (((u32) (src) << 10) & 0x00003c00)) +#define RXTX_REG62 0x07c +#define RXTX_REG62_PERIOD_H1_QLATCH_SET(dst, src) \ + (((dst) & ~0x00003800) | (((u32) (src) << 11) & 0x00003800)) +#define RXTX_REG81 0x0a2 +#define RXTX_REG89_MU_TH7_SET(dst, src) \ + (((dst) & ~0x0000f800) | (((u32) (src) << 11) & 0x0000f800)) +#define RXTX_REG89_MU_TH8_SET(dst, src) \ + (((dst) & ~0x000007c0) | (((u32) (src) << 6) & 0x000007c0)) +#define RXTX_REG89_MU_TH9_SET(dst, src) \ + (((dst) & ~0x0000003e) | (((u32) (src) << 1) & 0x0000003e)) +#define RXTX_REG96 0x0c0 +#define RXTX_REG96_MU_FREQ1_SET(dst, src) \ + (((dst) & ~0x0000f800) | (((u32) (src) << 11) & 0x0000f800)) +#define RXTX_REG96_MU_FREQ2_SET(dst, src) \ + (((dst) & ~0x000007c0) | (((u32) (src) << 6) & 0x000007c0)) +#define RXTX_REG96_MU_FREQ3_SET(dst, src) \ + (((dst) & ~0x0000003e) | (((u32) (src) << 1) & 0x0000003e)) +#define RXTX_REG99 0x0c6 +#define RXTX_REG99_MU_PHASE1_SET(dst, src) \ + (((dst) & ~0x0000f800) | (((u32) (src) << 11) & 0x0000f800)) +#define RXTX_REG99_MU_PHASE2_SET(dst, src) \ + (((dst) & ~0x000007c0) | (((u32) (src) << 6) & 0x000007c0)) +#define RXTX_REG99_MU_PHASE3_SET(dst, src) \ + (((dst) & ~0x0000003e) | (((u32) (src) << 1) & 0x0000003e)) +#define RXTX_REG102 0x0cc +#define RXTX_REG102_FREQLOOP_LIMIT_SET(dst, src) \ + (((dst) & ~0x00000060) | (((u32) (src) << 5) & 0x00000060)) +#define RXTX_REG114 0x0e4 +#define RXTX_REG121 0x0f2 +#define RXTX_REG121_SUMOS_CAL_CODE_RD(src) ((0x0000003e & (u32)(src)) >> 0x1) +#define RXTX_REG125 0x0fa +#define RXTX_REG125_PQ_REG_SET(dst, src) \ + (((dst) & ~0x0000fe00) | (((u32) (src) << 9) & 0x0000fe00)) +#define RXTX_REG125_SIGN_PQ_SET(dst, src) \ + (((dst) & ~0x00000100) | (((u32) (src) << 8) & 0x00000100)) +#define RXTX_REG125_SIGN_PQ_2C_SET(dst, src) \ + (((dst) & ~0x00000080) | (((u32) (src) << 7) & 0x00000080)) +#define RXTX_REG125_PHZ_MANUALCODE_SET(dst, src) \ + (((dst) & ~0x0000007c) | (((u32) (src) << 2) & 0x0000007c)) +#define RXTX_REG125_PHZ_MANUAL_SET(dst, src) \ + (((dst) & ~0x00000002) | (((u32) (src) << 1) & 0x00000002)) +#define RXTX_REG127 0x0fe +#define RXTX_REG127_FORCE_SUM_CAL_START_MASK 0x00000002 +#define RXTX_REG127_FORCE_LAT_CAL_START_MASK 0x00000004 +#define RXTX_REG127_FORCE_SUM_CAL_START_SET(dst, src) \ + (((dst) & ~0x00000002) | (((u32) (src) << 1) & 0x00000002)) +#define RXTX_REG127_FORCE_LAT_CAL_START_SET(dst, src) \ + (((dst) & ~0x00000004) | (((u32) (src) << 2) & 0x00000004)) +#define RXTX_REG127_LATCH_MAN_CAL_ENA_SET(dst, src) \ + (((dst) & ~0x00000008) | (((u32) (src) << 3) & 0x00000008)) +#define RXTX_REG127_DO_LATCH_MANCAL_SET(dst, src) \ + (((dst) & ~0x0000fc00) | (((u32) (src) << 10) & 0x0000fc00)) +#define RXTX_REG127_XO_LATCH_MANCAL_SET(dst, src) \ + (((dst) & ~0x000003f0) | (((u32) (src) << 4) & 0x000003f0)) +#define RXTX_REG128 0x100 +#define RXTX_REG128_LATCH_CAL_WAIT_SEL_SET(dst, src) \ + (((dst) & ~0x0000000c) | (((u32) (src) << 2) & 0x0000000c)) +#define RXTX_REG128_EO_LATCH_MANCAL_SET(dst, src) \ + (((dst) & ~0x0000fc00) | (((u32) (src) << 10) & 0x0000fc00)) +#define RXTX_REG128_SO_LATCH_MANCAL_SET(dst, src) \ + (((dst) & ~0x000003f0) | (((u32) (src) << 4) & 0x000003f0)) +#define RXTX_REG129 0x102 +#define RXTX_REG129_DE_LATCH_MANCAL_SET(dst, src) \ + (((dst) & ~0x0000fc00) | (((u32) (src) << 10) & 0x0000fc00)) +#define RXTX_REG129_XE_LATCH_MANCAL_SET(dst, src) \ + (((dst) & ~0x000003f0) | (((u32) (src) << 4) & 0x000003f0)) +#define RXTX_REG130 0x104 +#define RXTX_REG130_EE_LATCH_MANCAL_SET(dst, src) \ + (((dst) & ~0x0000fc00) | (((u32) (src) << 10) & 0x0000fc00)) +#define RXTX_REG130_SE_LATCH_MANCAL_SET(dst, src) \ + (((dst) & ~0x000003f0) | (((u32) (src) << 4) & 0x000003f0)) +#define RXTX_REG145 0x122 +#define RXTX_REG145_TX_IDLE_SATA_SET(dst, src) \ + (((dst) & ~0x00000001) | (((u32) (src) << 0) & 0x00000001)) +#define RXTX_REG145_RXES_ENA_SET(dst, src) \ + (((dst) & ~0x00000002) | (((u32) (src) << 1) & 0x00000002)) +#define RXTX_REG145_RXDFE_CONFIG_SET(dst, src) \ + (((dst) & ~0x0000c000) | (((u32) (src) << 14) & 0x0000c000)) +#define RXTX_REG145_RXVWES_LATENA_SET(dst, src) \ + (((dst) & ~0x00000004) | (((u32) (src) << 2) & 0x00000004)) +#define RXTX_REG147 0x126 +#define RXTX_REG148 0x128 + +/* Clock macro type */ +enum cmu_type_t { + REF_CMU = 0, /* Clock macro is the internal reference clock */ + PHY_CMU = 1, /* Clock macro is the PLL for the Serdes */ +}; + +enum mux_type_t { + MUX_SELECT_ATA = 0, /* Switch the MUX to ATA */ + MUX_SELECT_SGMMII = 0, /* Switch the MUX to SGMII */ +}; + +enum clk_type_t { + CLK_EXT_DIFF = 0, /* External differential */ + CLK_INT_DIFF = 1, /* Internal differential */ + CLK_INT_SING = 2, /* Internal single ended */ +}; + +enum phy_mode { + MODE_SATA = 0, /* List them for simple reference */ + MODE_SGMII = 1, + MODE_PCIE = 2, + MODE_USB = 3, + MODE_XFI = 4, + MODE_MAX +}; + +struct xgene_sata_override_param { + u32 speed[MAX_LANE]; /* Index for override parameter per lane */ + u32 txspeed[3]; /* Tx speed */ + u32 txboostgain[MAX_LANE*3]; /* Tx freq boost and gain control */ + u32 txeyetuning[MAX_LANE*3]; /* Tx eye tuning */ + u32 txeyedirection[MAX_LANE*3]; /* Tx eye tuning direction */ + u32 txamplitude[MAX_LANE*3]; /* Tx amplitude control */ + u32 txprecursor_cn1[MAX_LANE*3]; /* Tx emphasis taps 1st pre-cursor */ + u32 txprecursor_cn2[MAX_LANE*3]; /* Tx emphasis taps 2nd pre-cursor */ + u32 txpostcursor_cp1[MAX_LANE*3]; /* Tx emphasis taps post-cursor */ +}; + +struct xgene_phy_ctx { + struct device *dev; + struct phy *phy; + enum phy_mode mode; /* Mode of operation */ + enum clk_type_t clk_type; /* Input clock selection */ + void __iomem *sds_base; /* PHY CSR base addr */ + struct clk *clk; /* Optional clock */ + + /* Override Serdes parameters */ + struct xgene_sata_override_param sata_param; +}; + +/* + * For chip earlier than A3 version, enable this flag. + * To enable, pass boot argument phy_xgene.preA3Chip=1 + */ +static int preA3Chip; +MODULE_PARM_DESC(preA3Chip, "Enable pre-A3 chip support (1=enable 0=disable)"); +module_param_named(preA3Chip, preA3Chip, int, 0444); + +static int is_custom_eval_board(void) +{ + struct device_node *root = of_find_node_by_path("/"); + const char *model; + + if (!root) + return 0; + model = of_get_property(root, "model", NULL); + if (model == NULL) + return 0; + return strstr(model, "Mustang") ? 0 : 1; +} + +static void sds_wr(void __iomem *csr_base, u32 indirect_cmd_reg, + u32 indirect_data_reg, u32 addr, u32 data) +{ + unsigned long deadline = jiffies + HZ; + u32 val; + u32 cmd; + + cmd = CFG_IND_WR_CMD_MASK | CFG_IND_CMD_DONE_MASK; + cmd = CFG_IND_ADDR_SET(cmd, addr); + writel(data, csr_base + indirect_data_reg); + readl(csr_base + indirect_data_reg); /* Force a barrier */ + writel(cmd, csr_base + indirect_cmd_reg); + readl(csr_base + indirect_cmd_reg); /* Force a barrier */ + do { + val = readl(csr_base + indirect_cmd_reg); + } while (!(val & CFG_IND_CMD_DONE_MASK) && + time_before(jiffies, deadline)); + if (!(val & CFG_IND_CMD_DONE_MASK)) + pr_err("SDS WR timeout at 0x%p offset 0x%08X value 0x%08X\n", + csr_base + indirect_cmd_reg, addr, data); +} + +static void sds_rd(void __iomem *csr_base, u32 indirect_cmd_reg, + u32 indirect_data_reg, u32 addr, u32 *data) +{ + unsigned long deadline = jiffies + HZ; + u32 val; + u32 cmd; + + cmd = CFG_IND_RD_CMD_MASK | CFG_IND_CMD_DONE_MASK; + cmd = CFG_IND_ADDR_SET(cmd, addr); + writel(cmd, csr_base + indirect_cmd_reg); + readl(csr_base + indirect_cmd_reg); /* Force a barrier */ + do { + val = readl(csr_base + indirect_cmd_reg); + } while (!(val & CFG_IND_CMD_DONE_MASK) && + time_before(jiffies, deadline)); + *data = readl(csr_base + indirect_data_reg); + if (!(val & CFG_IND_CMD_DONE_MASK)) + pr_err("SDS WR timeout at 0x%p offset 0x%08X value 0x%08X\n", + csr_base + indirect_cmd_reg, addr, *data); +} + +static void cmu_wr(struct xgene_phy_ctx *ctx, enum cmu_type_t cmu_type, + u32 reg, u32 data) +{ + void __iomem *sds_base = ctx->sds_base; + u32 val; + + if (cmu_type == REF_CMU) + reg += SERDES_PLL_REF_INDIRECT_OFFSET; + else + reg += SERDES_PLL_INDIRECT_OFFSET; + sds_wr(sds_base, SATA_ENET_SDS_IND_CMD_REG, + SATA_ENET_SDS_IND_WDATA_REG, reg, data); + sds_rd(sds_base, SATA_ENET_SDS_IND_CMD_REG, + SATA_ENET_SDS_IND_RDATA_REG, reg, &val); + pr_debug("CMU WR addr 0x%X value 0x%08X <-> 0x%08X\n", reg, data, val); +} + +static void cmu_rd(struct xgene_phy_ctx *ctx, enum cmu_type_t cmu_type, + u32 reg, u32 *data) +{ + void __iomem *sds_base = ctx->sds_base; + + if (cmu_type == REF_CMU) + reg += SERDES_PLL_REF_INDIRECT_OFFSET; + else + reg += SERDES_PLL_INDIRECT_OFFSET; + sds_rd(sds_base, SATA_ENET_SDS_IND_CMD_REG, + SATA_ENET_SDS_IND_RDATA_REG, reg, data); + pr_debug("CMU RD addr 0x%X value 0x%08X\n", reg, *data); +} + +static void cmu_toggle1to0(struct xgene_phy_ctx *ctx, enum cmu_type_t cmu_type, + u32 reg, u32 bits) +{ + u32 val; + + cmu_rd(ctx, cmu_type, reg, &val); + val |= bits; + cmu_wr(ctx, cmu_type, reg, val); + cmu_rd(ctx, cmu_type, reg, &val); + val &= ~bits; + cmu_wr(ctx, cmu_type, reg, val); +} + +static void cmu_clrbits(struct xgene_phy_ctx *ctx, enum cmu_type_t cmu_type, + u32 reg, u32 bits) +{ + u32 val; + + cmu_rd(ctx, cmu_type, reg, &val); + val &= ~bits; + cmu_wr(ctx, cmu_type, reg, val); +} + +static void cmu_setbits(struct xgene_phy_ctx *ctx, enum cmu_type_t cmu_type, + u32 reg, u32 bits) +{ + u32 val; + + cmu_rd(ctx, cmu_type, reg, &val); + val |= bits; + cmu_wr(ctx, cmu_type, reg, val); +} + +static void serdes_wr(struct xgene_phy_ctx *ctx, int lane, u32 reg, u32 data) +{ + void __iomem *sds_base = ctx->sds_base; + u32 val; + + reg += SERDES_INDIRECT_OFFSET; + reg += lane * SERDES_LANE_STRIDE; + sds_wr(sds_base, SATA_ENET_SDS_IND_CMD_REG, + SATA_ENET_SDS_IND_WDATA_REG, reg, data); + sds_rd(sds_base, SATA_ENET_SDS_IND_CMD_REG, + SATA_ENET_SDS_IND_RDATA_REG, reg, &val); + pr_debug("SERDES WR addr 0x%X value 0x%08X <-> 0x%08X\n", reg, data, + val); +} + +static void serdes_rd(struct xgene_phy_ctx *ctx, int lane, u32 reg, u32 *data) +{ + void __iomem *sds_base = ctx->sds_base; + + reg += SERDES_INDIRECT_OFFSET; + reg += lane * SERDES_LANE_STRIDE; + sds_rd(sds_base, SATA_ENET_SDS_IND_CMD_REG, + SATA_ENET_SDS_IND_RDATA_REG, reg, data); + pr_debug("SERDES RD addr 0x%X value 0x%08X\n", reg, *data); +} + +static void serdes_clrbits(struct xgene_phy_ctx *ctx, int lane, u32 reg, + u32 bits) +{ + u32 val; + + serdes_rd(ctx, lane, reg, &val); + val &= ~bits; + serdes_wr(ctx, lane, reg, val); +} + +static void serdes_setbits(struct xgene_phy_ctx *ctx, int lane, u32 reg, + u32 bits) +{ + u32 val; + + serdes_rd(ctx, lane, reg, &val); + val |= bits; + serdes_wr(ctx, lane, reg, val); +} + +static void xgene_phy_cfg_cmu_clk_type(struct xgene_phy_ctx *ctx, + enum cmu_type_t cmu_type, + enum clk_type_t clk_type) +{ + u32 val; + + /* Set the reset sequence delay for TX ready assertion */ + cmu_rd(ctx, cmu_type, CMU_REG12, &val); + val = CMU_REG12_STATE_DELAY9_SET(val, 0x1); + cmu_wr(ctx, cmu_type, CMU_REG12, val); + /* Set the programmable stage delays between various enable stages */ + cmu_wr(ctx, cmu_type, CMU_REG13, 0x0222); + cmu_wr(ctx, cmu_type, CMU_REG14, 0x2225); + + /* Configure clock type */ + if (clk_type == CLK_EXT_DIFF) { + /* Select external clock mux */ + cmu_rd(ctx, cmu_type, CMU_REG0, &val); + val = CMU_REG0_PLL_REF_SEL_SET(val, 0x0); + cmu_wr(ctx, cmu_type, CMU_REG0, val); + /* Select CMOS as reference clock */ + cmu_rd(ctx, cmu_type, CMU_REG1, &val); + val = CMU_REG1_REFCLK_CMOS_SEL_SET(val, 0x0); + cmu_wr(ctx, cmu_type, CMU_REG1, val); + dev_dbg(ctx->dev, "Set external reference clock\n"); + } else if (clk_type == CLK_INT_DIFF) { + /* Select internal clock mux */ + cmu_rd(ctx, cmu_type, CMU_REG0, &val); + val = CMU_REG0_PLL_REF_SEL_SET(val, 0x1); + cmu_wr(ctx, cmu_type, CMU_REG0, val); + /* Select CMOS as reference clock */ + cmu_rd(ctx, cmu_type, CMU_REG1, &val); + val = CMU_REG1_REFCLK_CMOS_SEL_SET(val, 0x1); + cmu_wr(ctx, cmu_type, CMU_REG1, val); + dev_dbg(ctx->dev, "Set internal reference clock\n"); + } else if (clk_type == CLK_INT_SING) { + /* + * NOTE: This clock type is NOT support for controller + * whose internal clock shared in the PCIe controller + * + * Select internal clock mux + */ + cmu_rd(ctx, cmu_type, CMU_REG1, &val); + val = CMU_REG1_REFCLK_CMOS_SEL_SET(val, 0x1); + cmu_wr(ctx, cmu_type, CMU_REG1, val); + /* Select CML as reference clock */ + cmu_rd(ctx, cmu_type, CMU_REG1, &val); + val = CMU_REG1_REFCLK_CMOS_SEL_SET(val, 0x0); + cmu_wr(ctx, cmu_type, CMU_REG1, val); + dev_dbg(ctx->dev, + "Set internal single ended reference clock\n"); + } +} + +static void xgene_phy_sata_cfg_cmu_core(struct xgene_phy_ctx *ctx, + enum cmu_type_t cmu_type, + enum clk_type_t clk_type) +{ + u32 val; + int ref_100MHz; + + if (cmu_type == REF_CMU) { + /* Set VCO calibration voltage threshold */ + cmu_rd(ctx, cmu_type, CMU_REG34, &val); + val = CMU_REG34_VCO_CAL_VTH_LO_MAX_SET(val, 0x7); + val = CMU_REG34_VCO_CAL_VTH_HI_MAX_SET(val, 0xc); + val = CMU_REG34_VCO_CAL_VTH_LO_MIN_SET(val, 0x3); + val = CMU_REG34_VCO_CAL_VTH_HI_MIN_SET(val, 0x8); + cmu_wr(ctx, cmu_type, CMU_REG34, val); + } + + /* Set the VCO calibration counter */ + cmu_rd(ctx, cmu_type, CMU_REG0, &val); + if (cmu_type == REF_CMU || preA3Chip) + val = CMU_REG0_CAL_COUNT_RESOL_SET(val, 0x4); + else + val = CMU_REG0_CAL_COUNT_RESOL_SET(val, 0x7); + cmu_wr(ctx, cmu_type, CMU_REG0, val); + + /* Configure PLL for calibration */ + cmu_rd(ctx, cmu_type, CMU_REG1, &val); + val = CMU_REG1_PLL_CP_SET(val, 0x1); + if (cmu_type == REF_CMU || preA3Chip) + val = CMU_REG1_PLL_CP_SEL_SET(val, 0x5); + else + val = CMU_REG1_PLL_CP_SEL_SET(val, 0x3); + if (cmu_type == REF_CMU) + val = CMU_REG1_PLL_MANUALCAL_SET(val, 0x0); + else + val = CMU_REG1_PLL_MANUALCAL_SET(val, 0x1); + cmu_wr(ctx, cmu_type, CMU_REG1, val); + + if (cmu_type != REF_CMU) + cmu_clrbits(ctx, cmu_type, CMU_REG5, CMU_REG5_PLL_RESETB_MASK); + + /* Configure the PLL for either 100MHz or 50MHz */ + cmu_rd(ctx, cmu_type, CMU_REG2, &val); + if (cmu_type == REF_CMU) { + val = CMU_REG2_PLL_LFRES_SET(val, 0xa); + ref_100MHz = 1; + } else { + val = CMU_REG2_PLL_LFRES_SET(val, 0x3); + if (clk_type == CLK_EXT_DIFF) + ref_100MHz = 0; + else + ref_100MHz = 1; + } + if (ref_100MHz) { + val = CMU_REG2_PLL_FBDIV_SET(val, FBDIV_VAL_100M); + val = CMU_REG2_PLL_REFDIV_SET(val, REFDIV_VAL_100M); + } else { + val = CMU_REG2_PLL_FBDIV_SET(val, FBDIV_VAL_50M); + val = CMU_REG2_PLL_REFDIV_SET(val, REFDIV_VAL_50M); + } + cmu_wr(ctx, cmu_type, CMU_REG2, val); + + /* Configure the VCO */ + cmu_rd(ctx, cmu_type, CMU_REG3, &val); + if (cmu_type == REF_CMU) { + val = CMU_REG3_VCOVARSEL_SET(val, 0x3); + val = CMU_REG3_VCO_MOMSEL_INIT_SET(val, 0x10); + } else { + val = CMU_REG3_VCOVARSEL_SET(val, 0xF); + if (preA3Chip) + val = CMU_REG3_VCO_MOMSEL_INIT_SET(val, 0x15); + else + val = CMU_REG3_VCO_MOMSEL_INIT_SET(val, 0x1a); + val = CMU_REG3_VCO_MANMOMSEL_SET(val, 0x15); + } + cmu_wr(ctx, cmu_type, CMU_REG3, val); + + /* Disable force PLL lock */ + cmu_rd(ctx, cmu_type, CMU_REG26, &val); + val = CMU_REG26_FORCE_PLL_LOCK_SET(val, 0x0); + cmu_wr(ctx, cmu_type, CMU_REG26, val); + + /* Setup PLL loop filter */ + cmu_rd(ctx, cmu_type, CMU_REG5, &val); + val = CMU_REG5_PLL_LFSMCAP_SET(val, 0x3); + val = CMU_REG5_PLL_LFCAP_SET(val, 0x3); + if (cmu_type == REF_CMU || !preA3Chip) + val = CMU_REG5_PLL_LOCK_RESOLUTION_SET(val, 0x7); + else + val = CMU_REG5_PLL_LOCK_RESOLUTION_SET(val, 0x4); + cmu_wr(ctx, cmu_type, CMU_REG5, val); + + /* Enable or disable manual calibration */ + cmu_rd(ctx, cmu_type, CMU_REG6, &val); + val = CMU_REG6_PLL_VREGTRIM_SET(val, preA3Chip ? 0x0 : 0x2); + val = CMU_REG6_MAN_PVT_CAL_SET(val, preA3Chip ? 0x1 : 0x0); + cmu_wr(ctx, cmu_type, CMU_REG6, val); + + /* Configure lane for 20-bits */ + if (cmu_type == PHY_CMU) { + cmu_rd(ctx, cmu_type, CMU_REG9, &val); + val = CMU_REG9_TX_WORD_MODE_CH1_SET(val, + CMU_REG9_WORD_LEN_20BIT); + val = CMU_REG9_TX_WORD_MODE_CH0_SET(val, + CMU_REG9_WORD_LEN_20BIT); + val = CMU_REG9_PLL_POST_DIVBY2_SET(val, 0x1); + if (!preA3Chip) { + val = CMU_REG9_VBG_BYPASSB_SET(val, 0x0); + val = CMU_REG9_IGEN_BYPASS_SET(val , 0x0); + } + cmu_wr(ctx, cmu_type, CMU_REG9, val); + + if (!preA3Chip) { + cmu_rd(ctx, cmu_type, CMU_REG10, &val); + if (!is_custom_eval_board()) { + val = CMU_REG10_VREG_REFSEL_SET(val, 0x1); + } else { + val = CMU_REG10_VREG_REFSEL_SET(val, 0x0); + } + cmu_wr(ctx, cmu_type, CMU_REG10, val); + } + } + + cmu_rd(ctx, cmu_type, CMU_REG16, &val); + val = CMU_REG16_CALIBRATION_DONE_OVERRIDE_SET(val, 0x1); + val = CMU_REG16_BYPASS_PLL_LOCK_SET(val, 0x1); + if (cmu_type == REF_CMU || preA3Chip) + val = CMU_REG16_VCOCAL_WAIT_BTW_CODE_SET(val, 0x4); + else + val = CMU_REG16_VCOCAL_WAIT_BTW_CODE_SET(val, 0x7); + cmu_wr(ctx, cmu_type, CMU_REG16, val); + + /* Configure for SATA */ + cmu_rd(ctx, cmu_type, CMU_REG30, &val); + val = CMU_REG30_PCIE_MODE_SET(val, 0x0); + val = CMU_REG30_LOCK_COUNT_SET(val, 0x3); + cmu_wr(ctx, cmu_type, CMU_REG30, val); + + /* Disable state machine bypass */ + cmu_wr(ctx, cmu_type, CMU_REG31, 0xF); + + cmu_rd(ctx, cmu_type, CMU_REG32, &val); + val = CMU_REG32_PVT_CAL_WAIT_SEL_SET(val, 0x3); + if (cmu_type == REF_CMU || preA3Chip || is_custom_eval_board()) { + val = CMU_REG32_IREF_ADJ_SET(val, 0x3); + } else { + val = CMU_REG32_IREF_ADJ_SET(val, 0x1); + } + cmu_wr(ctx, cmu_type, CMU_REG32, val); + + /* Set VCO calibration threshold */ + if (cmu_type != REF_CMU && preA3Chip) + cmu_wr(ctx, cmu_type, CMU_REG34, 0x8d27); + else + cmu_wr(ctx, cmu_type, CMU_REG34, 0x873c); + + /* Set CTLE Override and override waiting from state machine */ + cmu_wr(ctx, cmu_type, CMU_REG37, 0xF00F); +} + +static void xgene_phy_ssc_enable(struct xgene_phy_ctx *ctx, + enum cmu_type_t cmu_type) +{ + u32 val; + + /* Set SSC modulation value */ + cmu_rd(ctx, cmu_type, CMU_REG35, &val); + val = CMU_REG35_PLL_SSC_MOD_SET(val, 98); + cmu_wr(ctx, cmu_type, CMU_REG35, val); + + /* Enable SSC, set vertical step and DSM value */ + cmu_rd(ctx, cmu_type, CMU_REG36, &val); + val = CMU_REG36_PLL_SSC_VSTEP_SET(val, 30); + val = CMU_REG36_PLL_SSC_EN_SET(val, 1); + val = CMU_REG36_PLL_SSC_DSMSEL_SET(val, 1); + cmu_wr(ctx, cmu_type, CMU_REG36, val); + + /* Reset the PLL */ + cmu_clrbits(ctx, cmu_type, CMU_REG5, CMU_REG5_PLL_RESETB_MASK); + cmu_setbits(ctx, cmu_type, CMU_REG5, CMU_REG5_PLL_RESETB_MASK); + + /* Force VCO calibration to restart */ + cmu_toggle1to0(ctx, cmu_type, CMU_REG32, + CMU_REG32_FORCE_VCOCAL_START_MASK); +} + +static void xgene_phy_sata_cfg_lanes(struct xgene_phy_ctx *ctx) +{ + u32 val; + u32 reg; + int i; + int lane; + + for (lane = 0; lane < MAX_LANE; lane++) { + serdes_wr(ctx, lane, RXTX_REG147, 0x6); + + /* Set boost control for quarter, half, and full rate */ + serdes_rd(ctx, lane, RXTX_REG0, &val); + val = RXTX_REG0_CTLE_EQ_HR_SET(val, 0x10); + val = RXTX_REG0_CTLE_EQ_QR_SET(val, 0x10); + val = RXTX_REG0_CTLE_EQ_FR_SET(val, 0x10); + serdes_wr(ctx, lane, RXTX_REG0, val); + + /* Set boost control value */ + serdes_rd(ctx, lane, RXTX_REG1, &val); + val = RXTX_REG1_RXACVCM_SET(val, 0x7); + val = RXTX_REG1_CTLE_EQ_SET(val, + ctx->sata_param.txboostgain[lane * 3 + + ctx->sata_param.speed[lane]]); + serdes_wr(ctx, lane, RXTX_REG1, val); + + /* Latch VTT value based on the termination to ground and + enable TX FIFO */ + serdes_rd(ctx, lane, RXTX_REG2, &val); + val = RXTX_REG2_VTT_ENA_SET(val, 0x1); + val = RXTX_REG2_VTT_SEL_SET(val, 0x1); + val = RXTX_REG2_TX_FIFO_ENA_SET(val, 0x1); + serdes_wr(ctx, lane, RXTX_REG2, val); + + /* Configure Tx for 20-bits */ + serdes_rd(ctx, lane, RXTX_REG4, &val); + val = RXTX_REG4_TX_WORD_MODE_SET(val, CMU_REG9_WORD_LEN_20BIT); + serdes_wr(ctx, lane, RXTX_REG4, val); + + if (!preA3Chip) { + serdes_rd(ctx, lane, RXTX_REG1, &val); + val = RXTX_REG1_RXVREG1_SET(val, 0x2); + val = RXTX_REG1_RXIREF_ADJ_SET(val, 0x2); + serdes_wr(ctx, lane, RXTX_REG1, val); + } + + /* Set pre-emphasis first 1 and 2, and post-emphasis values */ + serdes_rd(ctx, lane, RXTX_REG5, &val); + val = RXTX_REG5_TX_CN1_SET(val, + ctx->sata_param.txprecursor_cn1[lane * 3 + + ctx->sata_param.speed[lane]]); + val = RXTX_REG5_TX_CP1_SET(val, + ctx->sata_param.txpostcursor_cp1[lane * 3 + + ctx->sata_param.speed[lane]]); + val = RXTX_REG5_TX_CN2_SET(val, + ctx->sata_param.txprecursor_cn2[lane * 3 + + ctx->sata_param.speed[lane]]); + serdes_wr(ctx, lane, RXTX_REG5, val); + + /* Set TX amplitude value */ + serdes_rd(ctx, lane, RXTX_REG6, &val); + val = RXTX_REG6_TXAMP_CNTL_SET(val, + ctx->sata_param.txamplitude[lane * 3 + + ctx->sata_param.speed[lane]]); + val = RXTX_REG6_TXAMP_ENA_SET(val, 0x1); + val = RXTX_REG6_TX_IDLE_SET(val, 0x0); + val = RXTX_REG6_RX_BIST_RESYNC_SET(val, 0x0); + val = RXTX_REG6_RX_BIST_ERRCNT_RD_SET(val, 0x0); + serdes_wr(ctx, lane, RXTX_REG6, val); + + /* Configure Rx for 20-bits */ + serdes_rd(ctx, lane, RXTX_REG7, &val); + val = RXTX_REG7_BIST_ENA_RX_SET(val, 0x0); + val = RXTX_REG7_RX_WORD_MODE_SET(val, CMU_REG9_WORD_LEN_20BIT); + serdes_wr(ctx, lane, RXTX_REG7, val); + + /* Set CDR and LOS values and enable Rx SSC */ + serdes_rd(ctx, lane, RXTX_REG8, &val); + val = RXTX_REG8_CDR_LOOP_ENA_SET(val, 0x1); + val = RXTX_REG8_CDR_BYPASS_RXLOS_SET(val, 0x0); + val = RXTX_REG8_SSC_ENABLE_SET(val, 0x1); + val = RXTX_REG8_SD_DISABLE_SET(val, 0x0); + val = RXTX_REG8_SD_VREF_SET(val, 0x4); + serdes_wr(ctx, lane, RXTX_REG8, val); + + /* Set phase adjust upper/lower limits */ + serdes_rd(ctx, lane, RXTX_REG11, &val); + val = RXTX_REG11_PHASE_ADJUST_LIMIT_SET(val, 0x0); + serdes_wr(ctx, lane, RXTX_REG11, val); + + /* Enable Latch Off; disable SUMOS and Tx termination */ + serdes_rd(ctx, lane, RXTX_REG12, &val); + val = RXTX_REG12_LATCH_OFF_ENA_SET(val, 0x1); + val = RXTX_REG12_SUMOS_ENABLE_SET(val, 0x0); + val = RXTX_REG12_RX_DET_TERM_ENABLE_SET(val, 0x0); + serdes_wr(ctx, lane, RXTX_REG12, val); + + /* Set period error latch to 512T and enable BWL */ + serdes_rd(ctx, lane, RXTX_REG26, &val); + val = RXTX_REG26_PERIOD_ERROR_LATCH_SET(val, 0x0); + val = RXTX_REG26_BLWC_ENA_SET(val, 0x1); + serdes_wr(ctx, lane, RXTX_REG26, val); + + serdes_wr(ctx, lane, RXTX_REG28, 0x0); + + /* Set DFE loop preset value */ + serdes_wr(ctx, lane, RXTX_REG31, 0x0); + + /* Set Eye Monitor counter width to 12-bit */ + serdes_rd(ctx, lane, RXTX_REG61, &val); + val = RXTX_REG61_ISCAN_INBERT_SET(val, 0x1); + val = RXTX_REG61_LOADFREQ_SHIFT_SET(val, 0x0); + val = RXTX_REG61_EYE_COUNT_WIDTH_SEL_SET(val, 0x0); + serdes_wr(ctx, lane, RXTX_REG61, val); + + serdes_rd(ctx, lane, RXTX_REG62, &val); + val = RXTX_REG62_PERIOD_H1_QLATCH_SET(val, 0x0); + serdes_wr(ctx, lane, RXTX_REG62, val); + + /* Set BW select tap X for DFE loop */ + for (i = 0; i < 9; i++) { + reg = RXTX_REG81 + i * 2; + serdes_rd(ctx, lane, reg, &val); + val = RXTX_REG89_MU_TH7_SET(val, 0xe); + val = RXTX_REG89_MU_TH8_SET(val, 0xe); + val = RXTX_REG89_MU_TH9_SET(val, 0xe); + serdes_wr(ctx, lane, reg, val); + } + + /* Set BW select tap X for frequency adjust loop */ + for (i = 0; i < 3; i++) { + reg = RXTX_REG96 + i * 2; + serdes_rd(ctx, lane, reg, &val); + val = RXTX_REG96_MU_FREQ1_SET(val, 0x10); + val = RXTX_REG96_MU_FREQ2_SET(val, 0x10); + val = RXTX_REG96_MU_FREQ3_SET(val, 0x10); + serdes_wr(ctx, lane, reg, val); + } + + /* Set BW select tap X for phase adjust loop */ + for (i = 0; i < 3; i++) { + reg = RXTX_REG99 + i * 2; + serdes_rd(ctx, lane, reg, &val); + val = RXTX_REG99_MU_PHASE1_SET(val, 0x7); + val = RXTX_REG99_MU_PHASE2_SET(val, 0x7); + val = RXTX_REG99_MU_PHASE3_SET(val, 0x7); + serdes_wr(ctx, lane, reg, val); + } + + serdes_rd(ctx, lane, RXTX_REG102, &val); + val = RXTX_REG102_FREQLOOP_LIMIT_SET(val, 0x0); + serdes_wr(ctx, lane, RXTX_REG102, val); + + serdes_wr(ctx, lane, RXTX_REG114, 0xffe0); + + serdes_rd(ctx, lane, RXTX_REG125, &val); + val = RXTX_REG125_SIGN_PQ_SET(val, + ctx->sata_param.txeyedirection[lane * 3 + + ctx->sata_param.speed[lane]]); + val = RXTX_REG125_PQ_REG_SET(val, + ctx->sata_param.txeyetuning[lane * 3 + + ctx->sata_param.speed[lane]]); + val = RXTX_REG125_PHZ_MANUAL_SET(val, 0x1); + serdes_wr(ctx, lane, RXTX_REG125, val); + + serdes_rd(ctx, lane, RXTX_REG127, &val); + val = RXTX_REG127_LATCH_MAN_CAL_ENA_SET(val, 0x0); + serdes_wr(ctx, lane, RXTX_REG127, val); + + serdes_rd(ctx, lane, RXTX_REG128, &val); + val = RXTX_REG128_LATCH_CAL_WAIT_SEL_SET(val, 0x3); + serdes_wr(ctx, lane, RXTX_REG128, val); + + serdes_rd(ctx, lane, RXTX_REG145, &val); + val = RXTX_REG145_RXDFE_CONFIG_SET(val, 0x3); + val = RXTX_REG145_TX_IDLE_SATA_SET(val, 0x0); + if (preA3Chip) { + val = RXTX_REG145_RXES_ENA_SET(val, 0x1); + val = RXTX_REG145_RXVWES_LATENA_SET(val, 0x1); + } else { + val = RXTX_REG145_RXES_ENA_SET(val, 0x0); + val = RXTX_REG145_RXVWES_LATENA_SET(val, 0x0); + } + serdes_wr(ctx, lane, RXTX_REG145, val); + + /* + * Set Rx LOS filter clock rate, sample rate, and threshold + * windows + */ + for (i = 0; i < 4; i++) { + reg = RXTX_REG148 + i * 2; + serdes_wr(ctx, lane, reg, 0xFFFF); + } + } +} + +static int xgene_phy_cal_rdy_chk(struct xgene_phy_ctx *ctx, + enum cmu_type_t cmu_type, + enum clk_type_t clk_type) +{ + void __iomem *csr_serdes = ctx->sds_base; + int loop; + u32 val; + + /* Release PHY main reset */ + writel(0xdf, csr_serdes + SATA_ENET_SDS_RST_CTL); + readl(csr_serdes + SATA_ENET_SDS_RST_CTL); /* Force a barrier */ + + if (cmu_type != REF_CMU) { + cmu_setbits(ctx, cmu_type, CMU_REG5, CMU_REG5_PLL_RESETB_MASK); + /* + * As per PHY design spec, the PLL reset requires a minimum + * of 800us. + */ + usleep_range(800, 1000); + + cmu_rd(ctx, cmu_type, CMU_REG1, &val); + val = CMU_REG1_PLL_MANUALCAL_SET(val, 0x0); + cmu_wr(ctx, cmu_type, CMU_REG1, val); + /* + * As per PHY design spec, the PLL auto calibration requires + * a minimum of 800us. + */ + usleep_range(800, 1000); + + cmu_toggle1to0(ctx, cmu_type, CMU_REG32, + CMU_REG32_FORCE_VCOCAL_START_MASK); + /* + * As per PHY design spec, the PLL requires a minimum of + * 800us to settle. + */ + usleep_range(800, 1000); + } + + if (!preA3Chip) + goto skip_manual_cal; + + /* + * Configure the termination resister calibration + * The serial receive pins, RXP/RXN, have TERMination resistor + * that is required to be calibrated. + */ + cmu_rd(ctx, cmu_type, CMU_REG17, &val); + val = CMU_REG17_PVT_CODE_R2A_SET(val, 0x12); + val = CMU_REG17_RESERVED_7_SET(val, 0x0); + cmu_wr(ctx, cmu_type, CMU_REG17, val); + cmu_toggle1to0(ctx, cmu_type, CMU_REG17, + CMU_REG17_PVT_TERM_MAN_ENA_MASK); + /* + * The serial transmit pins, TXP/TXN, have Pull-UP and Pull-DOWN + * resistors that are required to the calibrated. + * Configure the pull DOWN calibration + */ + cmu_rd(ctx, cmu_type, CMU_REG17, &val); + val = CMU_REG17_PVT_CODE_R2A_SET(val, 0x29); + val = CMU_REG17_RESERVED_7_SET(val, 0x0); + cmu_wr(ctx, cmu_type, CMU_REG17, val); + cmu_toggle1to0(ctx, cmu_type, CMU_REG16, + CMU_REG16_PVT_DN_MAN_ENA_MASK); + /* Configure the pull UP calibration */ + cmu_rd(ctx, cmu_type, CMU_REG17, &val); + val = CMU_REG17_PVT_CODE_R2A_SET(val, 0x28); + val = CMU_REG17_RESERVED_7_SET(val, 0x0); + cmu_wr(ctx, cmu_type, CMU_REG17, val); + cmu_toggle1to0(ctx, cmu_type, CMU_REG16, + CMU_REG16_PVT_UP_MAN_ENA_MASK); + +skip_manual_cal: + /* Poll the PLL calibration completion status for at least 1 ms */ + loop = 100; + do { + cmu_rd(ctx, cmu_type, CMU_REG7, &val); + if (CMU_REG7_PLL_CALIB_DONE_RD(val)) + break; + /* + * As per PHY design spec, PLL calibration status requires + * a minimum of 10us to be updated. + */ + usleep_range(10, 100); + } while (--loop > 0); + + cmu_rd(ctx, cmu_type, CMU_REG7, &val); + dev_dbg(ctx->dev, "PLL calibration %s\n", + CMU_REG7_PLL_CALIB_DONE_RD(val) ? "done" : "failed"); + if (CMU_REG7_VCO_CAL_FAIL_RD(val)) { + dev_err(ctx->dev, + "PLL calibration failed due to VCO failure\n"); + return -1; + } + dev_dbg(ctx->dev, "PLL calibration successful\n"); + + cmu_rd(ctx, cmu_type, CMU_REG15, &val); + dev_dbg(ctx->dev, "PHY Tx is %sready\n", val & 0x300 ? "" : "not "); + return 0; +} + +static void xgene_phy_pdwn_force_vco(struct xgene_phy_ctx *ctx, + enum cmu_type_t cmu_type, + enum clk_type_t clk_type) +{ + u32 val; + + dev_dbg(ctx->dev, "Reset VCO and re-start again\n"); + if (cmu_type == PHY_CMU) { + cmu_rd(ctx, cmu_type, CMU_REG16, &val); + val = CMU_REG16_VCOCAL_WAIT_BTW_CODE_SET(val, 0x7); + cmu_wr(ctx, cmu_type, CMU_REG16, val); + } + + cmu_toggle1to0(ctx, cmu_type, CMU_REG0, CMU_REG0_PDOWN_MASK); + cmu_toggle1to0(ctx, cmu_type, CMU_REG32, + CMU_REG32_FORCE_VCOCAL_START_MASK); +} + +static int xgene_phy_hw_init_sata(struct xgene_phy_ctx *ctx, + enum clk_type_t clk_type, int ssc_enable) +{ + void __iomem *sds_base = ctx->sds_base; + u32 val; + int i; + + /* Configure the PHY for operation */ + dev_dbg(ctx->dev, "Reset PHY\n"); + /* Place PHY into reset */ + writel(0x0, sds_base + SATA_ENET_SDS_RST_CTL); + val = readl(sds_base + SATA_ENET_SDS_RST_CTL); /* Force a barrier */ + /* Release PHY lane from reset (active high) */ + writel(0x20, sds_base + SATA_ENET_SDS_RST_CTL); + readl(sds_base + SATA_ENET_SDS_RST_CTL); /* Force a barrier */ + /* Release all PHY module out of reset except PHY main reset */ + writel(0xde, sds_base + SATA_ENET_SDS_RST_CTL); + readl(sds_base + SATA_ENET_SDS_RST_CTL); /* Force a barrier */ + + /* Set the operation speed */ + val = readl(sds_base + SATA_ENET_SDS_CTL1); + val = CFG_I_SPD_SEL_CDR_OVR1_SET(val, + ctx->sata_param.txspeed[ctx->sata_param.speed[0]]); + writel(val, sds_base + SATA_ENET_SDS_CTL1); + + dev_dbg(ctx->dev, "Set the customer pin mode to SATA\n"); + val = readl(sds_base + SATA_ENET_SDS_CTL0); + val = REGSPEC_CFG_I_CUSTOMER_PIN_MODE0_SET(val, 0x4421); + writel(val, sds_base + SATA_ENET_SDS_CTL0); + + /* Configure the clock macro unit (CMU) clock type */ + xgene_phy_cfg_cmu_clk_type(ctx, PHY_CMU, clk_type); + + /* Configure the clock macro */ + xgene_phy_sata_cfg_cmu_core(ctx, PHY_CMU, clk_type); + + /* Enable SSC if enabled */ + if (ssc_enable) + xgene_phy_ssc_enable(ctx, PHY_CMU); + + /* Configure PHY lanes */ + xgene_phy_sata_cfg_lanes(ctx); + + /* Set Rx/Tx 20-bit */ + val = readl(sds_base + SATA_ENET_SDS_PCS_CTL0); + val = REGSPEC_CFG_I_RX_WORDMODE0_SET(val, 0x3); + val = REGSPEC_CFG_I_TX_WORDMODE0_SET(val, 0x3); + writel(val, sds_base + SATA_ENET_SDS_PCS_CTL0); + + /* Start PLL calibration and try for three times */ + i = 10; + do { + if (!xgene_phy_cal_rdy_chk(ctx, PHY_CMU, clk_type)) + break; + /* If failed, toggle the VCO power signal and start again */ + xgene_phy_pdwn_force_vco(ctx, PHY_CMU, clk_type); + } while (--i > 0); + /* Even on failure, allow to continue any way */ + if (i <= 0) + dev_err(ctx->dev, "PLL calibration failed\n"); + + return 0; +} + +static int xgene_phy_hw_initialize(struct xgene_phy_ctx *ctx, + enum clk_type_t clk_type, + int ssc_enable) +{ + int rc; + + dev_dbg(ctx->dev, "PHY init clk type %d\n", clk_type); + + if (ctx->mode == MODE_SATA) { + rc = xgene_phy_hw_init_sata(ctx, clk_type, ssc_enable); + if (rc) + return rc; + } else { + dev_err(ctx->dev, "Un-supported customer pin mode %d\n", + ctx->mode); + return -ENODEV; + } + + return 0; +} + +/* + * Receiver Offset Calibration: + * + * Calibrate the receiver signal path offset in two steps - summar and + * latch calibrations + */ +static void xgene_phy_force_lat_summer_cal(struct xgene_phy_ctx *ctx, int lane) +{ + int i; + struct { + u32 reg; + u32 val; + } serdes_reg[] = { + {RXTX_REG38, 0x0}, + {RXTX_REG39, 0xff00}, + {RXTX_REG40, 0xffff}, + {RXTX_REG41, 0xffff}, + {RXTX_REG42, 0xffff}, + {RXTX_REG43, 0xffff}, + {RXTX_REG44, 0xffff}, + {RXTX_REG45, 0xffff}, + {RXTX_REG46, 0xffff}, + {RXTX_REG47, 0xfffc}, + {RXTX_REG48, 0x0}, + {RXTX_REG49, 0x0}, + {RXTX_REG50, 0x0}, + {RXTX_REG51, 0x0}, + {RXTX_REG52, 0x0}, + {RXTX_REG53, 0x0}, + {RXTX_REG54, 0x0}, + {RXTX_REG55, 0x0}, + }; + + /* Start SUMMER calibration */ + serdes_setbits(ctx, lane, RXTX_REG127, + RXTX_REG127_FORCE_SUM_CAL_START_MASK); + /* + * As per PHY design spec, the Summer calibration requires a minimum + * of 100us to complete. + */ + usleep_range(100, 500); + serdes_clrbits(ctx, lane, RXTX_REG127, + RXTX_REG127_FORCE_SUM_CAL_START_MASK); + /* + * As per PHY design spec, the auto calibration requires a minimum + * of 100us to complete. + */ + usleep_range(100, 500); + + /* Start latch calibration */ + serdes_setbits(ctx, lane, RXTX_REG127, + RXTX_REG127_FORCE_LAT_CAL_START_MASK); + /* + * As per PHY design spec, the latch calibration requires a minimum + * of 100us to complete. + */ + usleep_range(100, 500); + serdes_clrbits(ctx, lane, RXTX_REG127, + RXTX_REG127_FORCE_LAT_CAL_START_MASK); + + /* Configure the PHY lane for calibration */ + serdes_wr(ctx, lane, RXTX_REG28, 0x7); + serdes_wr(ctx, lane, RXTX_REG31, 0x7e00); + serdes_clrbits(ctx, lane, RXTX_REG4, + RXTX_REG4_TX_LOOPBACK_BUF_EN_MASK); + serdes_clrbits(ctx, lane, RXTX_REG7, + RXTX_REG7_LOOP_BACK_ENA_CTLE_MASK); + for (i = 0; i < ARRAY_SIZE(serdes_reg); i++) + serdes_wr(ctx, lane, serdes_reg[i].reg, + serdes_reg[i].val); +} + +static void xgene_phy_reset_rxd(struct xgene_phy_ctx *ctx, int lane) +{ + /* Reset digital Rx */ + serdes_clrbits(ctx, lane, RXTX_REG7, RXTX_REG7_RESETB_RXD_MASK); + /* As per PHY design spec, the reset requires a minimum of 100us. */ + usleep_range(100, 150); + serdes_setbits(ctx, lane, RXTX_REG7, RXTX_REG7_RESETB_RXD_MASK); +} + +static int xgene_phy_get_avg(int accum, int samples) +{ + return (accum + (samples / 2)) / samples; +} + +static void xgene_phy_gen_avg_val(struct xgene_phy_ctx *ctx, int lane) +{ + int max_loop = 10; + int avg_loop = 0; + int lat_do = 0, lat_xo = 0, lat_eo = 0, lat_so = 0; + int lat_de = 0, lat_xe = 0, lat_ee = 0, lat_se = 0; + int sum_cal = 0; + int lat_do_itr, lat_xo_itr, lat_eo_itr, lat_so_itr; + int lat_de_itr, lat_xe_itr, lat_ee_itr, lat_se_itr; + int sum_cal_itr; + int fail_even; + int fail_odd; + u32 val; + + dev_dbg(ctx->dev, "Generating avg calibration value for lane %d\n", + lane); + + /* Enable RX Hi-Z termination */ + serdes_setbits(ctx, lane, RXTX_REG12, + RXTX_REG12_RX_DET_TERM_ENABLE_MASK); + /* Turn off DFE */ + serdes_wr(ctx, lane, RXTX_REG28, 0x0000); + /* DFE Presets to zero */ + serdes_wr(ctx, lane, RXTX_REG31, 0x0000); + + /* + * Receiver Offset Calibration: + * Calibrate the receiver signal path offset in two steps - summar + * and latch calibration. + * Runs the "Receiver Offset Calibration multiple times to determine + * the average value to use. + */ + while (avg_loop < max_loop) { + /* Start the calibration */ + xgene_phy_force_lat_summer_cal(ctx, lane); + + serdes_rd(ctx, lane, RXTX_REG21, &val); + lat_do_itr = RXTX_REG21_DO_LATCH_CALOUT_RD(val); + lat_xo_itr = RXTX_REG21_XO_LATCH_CALOUT_RD(val); + fail_odd = RXTX_REG21_LATCH_CAL_FAIL_ODD_RD(val); + + serdes_rd(ctx, lane, RXTX_REG22, &val); + lat_eo_itr = RXTX_REG22_EO_LATCH_CALOUT_RD(val); + lat_so_itr = RXTX_REG22_SO_LATCH_CALOUT_RD(val); + fail_even = RXTX_REG22_LATCH_CAL_FAIL_EVEN_RD(val); + + serdes_rd(ctx, lane, RXTX_REG23, &val); + lat_de_itr = RXTX_REG23_DE_LATCH_CALOUT_RD(val); + lat_xe_itr = RXTX_REG23_XE_LATCH_CALOUT_RD(val); + + serdes_rd(ctx, lane, RXTX_REG24, &val); + lat_ee_itr = RXTX_REG24_EE_LATCH_CALOUT_RD(val); + lat_se_itr = RXTX_REG24_SE_LATCH_CALOUT_RD(val); + + serdes_rd(ctx, lane, RXTX_REG121, &val); + sum_cal_itr = RXTX_REG121_SUMOS_CAL_CODE_RD(val); + + /* Check for failure. If passed, sum them for averaging */ + if ((fail_even == 0 || fail_even == 1) && + (fail_odd == 0 || fail_odd == 1)) { + lat_do += lat_do_itr; + lat_xo += lat_xo_itr; + lat_eo += lat_eo_itr; + lat_so += lat_so_itr; + lat_de += lat_de_itr; + lat_xe += lat_xe_itr; + lat_ee += lat_ee_itr; + lat_se += lat_se_itr; + sum_cal += sum_cal_itr; + + dev_dbg(ctx->dev, "Iteration %d:\n", avg_loop); + dev_dbg(ctx->dev, "DO 0x%x XO 0x%x EO 0x%x SO 0x%x\n", + lat_do_itr, lat_xo_itr, lat_eo_itr, + lat_so_itr); + dev_dbg(ctx->dev, "DE 0x%x XE 0x%x EE 0x%x SE 0x%x\n", + lat_de_itr, lat_xe_itr, lat_ee_itr, + lat_se_itr); + dev_dbg(ctx->dev, "SUM 0x%x\n", sum_cal_itr); + ++avg_loop; + } else { + dev_err(ctx->dev, + "Receiver calibration failed at %d loop\n", + avg_loop); + } + xgene_phy_reset_rxd(ctx, lane); + } + + /* Update latch manual calibration with average value */ + serdes_rd(ctx, lane, RXTX_REG127, &val); + val = RXTX_REG127_DO_LATCH_MANCAL_SET(val, + xgene_phy_get_avg(lat_do, max_loop)); + val = RXTX_REG127_XO_LATCH_MANCAL_SET(val, + xgene_phy_get_avg(lat_xo, max_loop)); + serdes_wr(ctx, lane, RXTX_REG127, val); + + serdes_rd(ctx, lane, RXTX_REG128, &val); + val = RXTX_REG128_EO_LATCH_MANCAL_SET(val, + xgene_phy_get_avg(lat_eo, max_loop)); + val = RXTX_REG128_SO_LATCH_MANCAL_SET(val, + xgene_phy_get_avg(lat_so, max_loop)); + serdes_wr(ctx, lane, RXTX_REG128, val); + + serdes_rd(ctx, lane, RXTX_REG129, &val); + val = RXTX_REG129_DE_LATCH_MANCAL_SET(val, + xgene_phy_get_avg(lat_de, max_loop)); + val = RXTX_REG129_XE_LATCH_MANCAL_SET(val, + xgene_phy_get_avg(lat_xe, max_loop)); + serdes_wr(ctx, lane, RXTX_REG129, val); + + serdes_rd(ctx, lane, RXTX_REG130, &val); + val = RXTX_REG130_EE_LATCH_MANCAL_SET(val, + xgene_phy_get_avg(lat_ee, max_loop)); + val = RXTX_REG130_SE_LATCH_MANCAL_SET(val, + xgene_phy_get_avg(lat_se, max_loop)); + serdes_wr(ctx, lane, RXTX_REG130, val); + + /* Update SUMMER calibration with average value */ + serdes_rd(ctx, lane, RXTX_REG14, &val); + val = RXTX_REG14_CLTE_LATCAL_MAN_PROG_SET(val, + xgene_phy_get_avg(sum_cal, max_loop)); + serdes_wr(ctx, lane, RXTX_REG14, val); + + dev_dbg(ctx->dev, "Average Value:\n"); + dev_dbg(ctx->dev, "DO 0x%x XO 0x%x EO 0x%x SO 0x%x\n", + xgene_phy_get_avg(lat_do, max_loop), + xgene_phy_get_avg(lat_xo, max_loop), + xgene_phy_get_avg(lat_eo, max_loop), + xgene_phy_get_avg(lat_so, max_loop)); + dev_dbg(ctx->dev, "DE 0x%x XE 0x%x EE 0x%x SE 0x%x\n", + xgene_phy_get_avg(lat_de, max_loop), + xgene_phy_get_avg(lat_xe, max_loop), + xgene_phy_get_avg(lat_ee, max_loop), + xgene_phy_get_avg(lat_se, max_loop)); + dev_dbg(ctx->dev, "SUM 0x%x\n", + xgene_phy_get_avg(sum_cal, max_loop)); + + serdes_rd(ctx, lane, RXTX_REG14, &val); + val = RXTX_REG14_CTLE_LATCAL_MAN_ENA_SET(val, 0x1); + serdes_wr(ctx, lane, RXTX_REG14, val); + dev_dbg(ctx->dev, "Enable Manual Summer calibration\n"); + + serdes_rd(ctx, lane, RXTX_REG127, &val); + val = RXTX_REG127_LATCH_MAN_CAL_ENA_SET(val, 0x1); + dev_dbg(ctx->dev, "Enable Manual Latch calibration\n"); + serdes_wr(ctx, lane, RXTX_REG127, val); + + /* Disable RX Hi-Z termination */ + serdes_rd(ctx, lane, RXTX_REG12, &val); + val = RXTX_REG12_RX_DET_TERM_ENABLE_SET(val, 0); + serdes_wr(ctx, lane, RXTX_REG12, val); + /* Turn on DFE */ + serdes_wr(ctx, lane, RXTX_REG28, 0x0007); + /* Set DFE preset */ + serdes_wr(ctx, lane, RXTX_REG31, 0x7e00); +} + +static int xgene_phy_hw_init(struct phy *phy) +{ + struct xgene_phy_ctx *ctx = phy_get_drvdata(phy); + int rc; + int i; + + rc = xgene_phy_hw_initialize(ctx, CLK_EXT_DIFF, SSC_DISABLE); + if (rc) { + dev_err(ctx->dev, "PHY initialize failed %d\n", rc); + return rc; + } + + /* Setup clock properly after PHY configuration */ + if (!IS_ERR(ctx->clk)) { + /* HW requires an toggle of the clock */ + clk_prepare_enable(ctx->clk); + clk_disable_unprepare(ctx->clk); + clk_prepare_enable(ctx->clk); + } + + /* Compute average value */ + for (i = 0; i < MAX_LANE; i++) + xgene_phy_gen_avg_val(ctx, i); + + dev_dbg(ctx->dev, "PHY initialized\n"); + return 0; +} + +static const struct phy_ops xgene_phy_ops = { + .init = xgene_phy_hw_init, + .owner = THIS_MODULE, +}; + +static struct phy *xgene_phy_xlate(struct device *dev, + struct of_phandle_args *args) +{ + struct xgene_phy_ctx *ctx = dev_get_drvdata(dev); + + if (args->args_count <= 0) + return ERR_PTR(-EINVAL); + if (args->args[0] < MODE_SATA || args->args[0] >= MODE_MAX) + return ERR_PTR(-EINVAL); + + ctx->mode = args->args[0]; + return ctx->phy; +} + +static void xgene_phy_get_param(struct platform_device *pdev, + const char *name, u32 *buffer, + int count, u32 *default_val, + u32 conv_factor) +{ + int i; + + if (!of_property_read_u32_array(pdev->dev.of_node, name, buffer, + count)) { + for (i = 0; i < count; i++) + buffer[i] /= conv_factor; + return; + } + /* Does not exist, load default */ + for (i = 0; i < count; i++) + buffer[i] = default_val[i % 3]; +} + +static int xgene_phy_probe(struct platform_device *pdev) +{ + struct phy_provider *phy_provider; + struct xgene_phy_ctx *ctx; + struct resource *res; + int rc = 0; + u32 default_spd[] = DEFAULT_SATA_SPD_SEL; + u32 default_txboost_gain[] = DEFAULT_SATA_TXBOOST_GAIN; + u32 default_txeye_direction[] = DEFAULT_SATA_TXEYEDIRECTION; + u32 default_txeye_tuning[] = DEFAULT_SATA_TXEYETUNING; + u32 default_txamp[] = DEFAULT_SATA_TXAMP; + u32 default_txcn1[] = DEFAULT_SATA_TXCN1; + u32 default_txcn2[] = DEFAULT_SATA_TXCN2; + u32 default_txcp1[] = DEFAULT_SATA_TXCP1; + int i; + + ctx = devm_kzalloc(&pdev->dev, sizeof(*ctx), GFP_KERNEL); + if (!ctx) + return -ENOMEM; + + ctx->dev = &pdev->dev; + + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + ctx->sds_base = devm_ioremap_resource(&pdev->dev, res); + if (IS_ERR(ctx->sds_base)) { + rc = PTR_ERR(ctx->sds_base); + goto error; + } + + /* Retrieve optional clock */ + ctx->clk = clk_get(&pdev->dev, NULL); + + /* Load override paramaters */ + xgene_phy_get_param(pdev, "apm,tx-eye-tuning", + ctx->sata_param.txeyetuning, 6, default_txeye_tuning, 1); + xgene_phy_get_param(pdev, "apm,tx-eye-direction", + ctx->sata_param.txeyedirection, 6, default_txeye_direction, 1); + xgene_phy_get_param(pdev, "apm,tx-boost-gain", + ctx->sata_param.txboostgain, 6, default_txboost_gain, 1); + xgene_phy_get_param(pdev, "apm,tx-amplitude", + ctx->sata_param.txamplitude, 6, default_txamp, 13300); + xgene_phy_get_param(pdev, "apm,tx-pre-cursor1", + ctx->sata_param.txprecursor_cn1, 6, default_txcn1, 18200); + xgene_phy_get_param(pdev, "apm,tx-pre-cursor2", + ctx->sata_param.txprecursor_cn2, 6, default_txcn2, 18200); + xgene_phy_get_param(pdev, "apm,tx-post-cursor", + ctx->sata_param.txpostcursor_cp1, 6, default_txcp1, 18200); + xgene_phy_get_param(pdev, "apm,tx-speed", + ctx->sata_param.txspeed, 3, default_spd, 1); + for (i = 0; i < MAX_LANE; i++) + ctx->sata_param.speed[i] = 2; /* Default to Gen3 */ + + ctx->dev = &pdev->dev; + platform_set_drvdata(pdev, ctx); + + ctx->phy = devm_phy_create(ctx->dev, &xgene_phy_ops, NULL); + if (IS_ERR(ctx->phy)) { + dev_dbg(&pdev->dev, "Failed to create PHY\n"); + rc = PTR_ERR(ctx->phy); + goto error; + } + phy_set_drvdata(ctx->phy, ctx); + + phy_provider = devm_of_phy_provider_register(ctx->dev, + xgene_phy_xlate); + if (IS_ERR(phy_provider)) { + rc = PTR_ERR(phy_provider); + goto error; + } + + return 0; + +error: + return rc; +} + +static const struct of_device_id xgene_phy_of_match[] = { + {.compatible = "apm,xgene-phy",}, + {}, +}; +MODULE_DEVICE_TABLE(of, xgene_phy_of_match); + +static struct platform_driver xgene_phy_driver = { + .probe = xgene_phy_probe, + .driver = { + .name = "xgene-phy", + .owner = THIS_MODULE, + .of_match_table = xgene_phy_of_match, + }, +}; +module_platform_driver(xgene_phy_driver); + +MODULE_DESCRIPTION("APM X-Gene Multi-Purpose PHY driver"); +MODULE_AUTHOR("Loc Ho "); +MODULE_LICENSE("GPL v2"); +MODULE_VERSION("0.1"); --- linux-3.13.0.orig/drivers/pinctrl/core.c +++ linux-3.13.0/drivers/pinctrl/core.c @@ -851,7 +851,9 @@ kref_init(&p->users); /* Add the pinctrl handle to the global list */ + mutex_lock(&pinctrl_list_mutex); list_add_tail(&p->node, &pinctrl_list); + mutex_unlock(&pinctrl_list_mutex); return p; } @@ -1119,7 +1121,7 @@ EXPORT_SYMBOL_GPL(devm_pinctrl_put); int pinctrl_register_map(struct pinctrl_map const *maps, unsigned num_maps, - bool dup, bool locked) + bool dup) { int i, ret; struct pinctrl_maps *maps_node; @@ -1187,11 +1189,9 @@ maps_node->maps = maps; } - if (!locked) - mutex_lock(&pinctrl_maps_mutex); + mutex_lock(&pinctrl_maps_mutex); list_add_tail(&maps_node->node, &pinctrl_maps); - if (!locked) - mutex_unlock(&pinctrl_maps_mutex); + mutex_unlock(&pinctrl_maps_mutex); return 0; } @@ -1206,7 +1206,7 @@ int pinctrl_register_mappings(struct pinctrl_map const *maps, unsigned num_maps) { - return pinctrl_register_map(maps, num_maps, true, false); + return pinctrl_register_map(maps, num_maps, true); } void pinctrl_unregister_map(struct pinctrl_map const *map) @@ -1808,14 +1808,15 @@ if (pctldev == NULL) return; - mutex_lock(&pinctrldev_list_mutex); mutex_lock(&pctldev->mutex); - pinctrl_remove_device_debugfs(pctldev); + mutex_unlock(&pctldev->mutex); if (!IS_ERR(pctldev->p)) pinctrl_put(pctldev->p); + mutex_lock(&pinctrldev_list_mutex); + mutex_lock(&pctldev->mutex); /* TODO: check that no pinmuxes are still active? */ list_del(&pctldev->node); /* Destroy descriptor tree */ --- linux-3.13.0.orig/drivers/pinctrl/core.h +++ linux-3.13.0/drivers/pinctrl/core.h @@ -183,7 +183,7 @@ } int pinctrl_register_map(struct pinctrl_map const *maps, unsigned num_maps, - bool dup, bool locked); + bool dup); void pinctrl_unregister_map(struct pinctrl_map const *map); extern int pinctrl_force_sleep(struct pinctrl_dev *pctldev); --- linux-3.13.0.orig/drivers/pinctrl/devicetree.c +++ linux-3.13.0/drivers/pinctrl/devicetree.c @@ -92,7 +92,7 @@ dt_map->num_maps = num_maps; list_add_tail(&dt_map->node, &p->dt_maps); - return pinctrl_register_map(map, num_maps, false, true); + return pinctrl_register_map(map, num_maps, false); } struct pinctrl_dev *of_pinctrl_get(struct device_node *np) --- linux-3.13.0.orig/drivers/pinctrl/mvebu/pinctrl-armada-370.c +++ linux-3.13.0/drivers/pinctrl/mvebu/pinctrl-armada-370.c @@ -358,11 +358,11 @@ MPP_MODE(64, MPP_FUNCTION(0x0, "gpio", NULL), MPP_FUNCTION(0x1, "spi0", "miso"), - MPP_FUNCTION(0x2, "spi0-1", "cs1")), + MPP_FUNCTION(0x2, "spi0", "cs1")), MPP_MODE(65, MPP_FUNCTION(0x0, "gpio", NULL), MPP_FUNCTION(0x1, "spi0", "mosi"), - MPP_FUNCTION(0x2, "spi0-1", "cs2")), + MPP_FUNCTION(0x2, "spi0", "cs2")), }; static struct mvebu_pinctrl_soc_info armada_370_pinctrl_info; --- linux-3.13.0.orig/drivers/pinctrl/mvebu/pinctrl-armada-xp.c +++ linux-3.13.0/drivers/pinctrl/mvebu/pinctrl-armada-xp.c @@ -14,10 +14,7 @@ * available: mv78230, mv78260 and mv78460. From a pin muxing * perspective, the mv78230 has 49 MPP pins. The mv78260 and mv78460 * both have 67 MPP pins (more GPIOs and address lines for the memory - * bus mainly). The only difference between the mv78260 and the - * mv78460 in terms of pin muxing is the addition of two functions on - * pins 43 and 56 to access the VDD of the CPU2 and 3 (mv78260 has two - * cores, mv78460 has four cores). + * bus mainly). */ #include @@ -159,20 +156,17 @@ MPP_MODE(24, MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), MPP_VAR_FUNCTION(0x1, "sata1", "prsnt", V_MV78230_PLUS), - MPP_VAR_FUNCTION(0x2, "nf", "bootcs-re", V_MV78230_PLUS), MPP_VAR_FUNCTION(0x3, "tdm", "rst", V_MV78230_PLUS), MPP_VAR_FUNCTION(0x4, "lcd", "hsync", V_MV78230_PLUS)), MPP_MODE(25, MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), MPP_VAR_FUNCTION(0x1, "sata0", "prsnt", V_MV78230_PLUS), - MPP_VAR_FUNCTION(0x2, "nf", "bootcs-we", V_MV78230_PLUS), MPP_VAR_FUNCTION(0x3, "tdm", "pclk", V_MV78230_PLUS), MPP_VAR_FUNCTION(0x4, "lcd", "vsync", V_MV78230_PLUS)), MPP_MODE(26, MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), MPP_VAR_FUNCTION(0x3, "tdm", "fsync", V_MV78230_PLUS), - MPP_VAR_FUNCTION(0x4, "lcd", "clk", V_MV78230_PLUS), - MPP_VAR_FUNCTION(0x5, "vdd", "cpu1-pd", V_MV78230_PLUS)), + MPP_VAR_FUNCTION(0x4, "lcd", "clk", V_MV78230_PLUS)), MPP_MODE(27, MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), MPP_VAR_FUNCTION(0x1, "ptp", "trig", V_MV78230_PLUS), @@ -187,8 +181,7 @@ MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), MPP_VAR_FUNCTION(0x1, "ptp", "clk", V_MV78230_PLUS), MPP_VAR_FUNCTION(0x3, "tdm", "int0", V_MV78230_PLUS), - MPP_VAR_FUNCTION(0x4, "lcd", "ref-clk", V_MV78230_PLUS), - MPP_VAR_FUNCTION(0x5, "vdd", "cpu0-pd", V_MV78230_PLUS)), + MPP_VAR_FUNCTION(0x4, "lcd", "ref-clk", V_MV78230_PLUS)), MPP_MODE(30, MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), MPP_VAR_FUNCTION(0x1, "sd0", "clk", V_MV78230_PLUS), @@ -196,13 +189,11 @@ MPP_MODE(31, MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), MPP_VAR_FUNCTION(0x1, "sd0", "cmd", V_MV78230_PLUS), - MPP_VAR_FUNCTION(0x3, "tdm", "int2", V_MV78230_PLUS), - MPP_VAR_FUNCTION(0x5, "vdd", "cpu0-pd", V_MV78230_PLUS)), + MPP_VAR_FUNCTION(0x3, "tdm", "int2", V_MV78230_PLUS)), MPP_MODE(32, MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), MPP_VAR_FUNCTION(0x1, "sd0", "d0", V_MV78230_PLUS), - MPP_VAR_FUNCTION(0x3, "tdm", "int3", V_MV78230_PLUS), - MPP_VAR_FUNCTION(0x5, "vdd", "cpu1-pd", V_MV78230_PLUS)), + MPP_VAR_FUNCTION(0x3, "tdm", "int3", V_MV78230_PLUS)), MPP_MODE(33, MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), MPP_VAR_FUNCTION(0x1, "sd0", "d1", V_MV78230_PLUS), @@ -234,7 +225,6 @@ MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), MPP_VAR_FUNCTION(0x1, "spi", "cs1", V_MV78230_PLUS), MPP_VAR_FUNCTION(0x2, "uart2", "cts", V_MV78230_PLUS), - MPP_VAR_FUNCTION(0x3, "vdd", "cpu1-pd", V_MV78230_PLUS), MPP_VAR_FUNCTION(0x4, "lcd", "vga-hsync", V_MV78230_PLUS), MPP_VAR_FUNCTION(0x5, "pcie", "clkreq0", V_MV78230_PLUS)), MPP_MODE(41, @@ -249,15 +239,13 @@ MPP_VAR_FUNCTION(0x1, "uart2", "rxd", V_MV78230_PLUS), MPP_VAR_FUNCTION(0x2, "uart0", "cts", V_MV78230_PLUS), MPP_VAR_FUNCTION(0x3, "tdm", "int7", V_MV78230_PLUS), - MPP_VAR_FUNCTION(0x4, "tdm-1", "timer", V_MV78230_PLUS), - MPP_VAR_FUNCTION(0x5, "vdd", "cpu0-pd", V_MV78230_PLUS)), + MPP_VAR_FUNCTION(0x4, "tdm-1", "timer", V_MV78230_PLUS)), MPP_MODE(43, MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), MPP_VAR_FUNCTION(0x1, "uart2", "txd", V_MV78230_PLUS), MPP_VAR_FUNCTION(0x2, "uart0", "rts", V_MV78230_PLUS), MPP_VAR_FUNCTION(0x3, "spi", "cs3", V_MV78230_PLUS), - MPP_VAR_FUNCTION(0x4, "pcie", "rstout", V_MV78230_PLUS), - MPP_VAR_FUNCTION(0x5, "vdd", "cpu2-3-pd", V_MV78460)), + MPP_VAR_FUNCTION(0x4, "pcie", "rstout", V_MV78230_PLUS)), MPP_MODE(44, MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), MPP_VAR_FUNCTION(0x1, "uart2", "cts", V_MV78230_PLUS), @@ -286,7 +274,7 @@ MPP_VAR_FUNCTION(0x5, "pcie", "clkreq3", V_MV78230_PLUS)), MPP_MODE(48, MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), - MPP_VAR_FUNCTION(0x1, "tclk", NULL, V_MV78230_PLUS), + MPP_VAR_FUNCTION(0x1, "dev", "clkout", V_MV78230_PLUS), MPP_VAR_FUNCTION(0x2, "dev", "burst/last", V_MV78230_PLUS)), MPP_MODE(49, MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78260_PLUS), @@ -308,16 +296,13 @@ MPP_VAR_FUNCTION(0x1, "dev", "ad19", V_MV78260_PLUS)), MPP_MODE(55, MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78260_PLUS), - MPP_VAR_FUNCTION(0x1, "dev", "ad20", V_MV78260_PLUS), - MPP_VAR_FUNCTION(0x2, "vdd", "cpu0-pd", V_MV78260_PLUS)), + MPP_VAR_FUNCTION(0x1, "dev", "ad20", V_MV78260_PLUS)), MPP_MODE(56, MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78260_PLUS), - MPP_VAR_FUNCTION(0x1, "dev", "ad21", V_MV78260_PLUS), - MPP_VAR_FUNCTION(0x2, "vdd", "cpu1-pd", V_MV78260_PLUS)), + MPP_VAR_FUNCTION(0x1, "dev", "ad21", V_MV78260_PLUS)), MPP_MODE(57, MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78260_PLUS), - MPP_VAR_FUNCTION(0x1, "dev", "ad22", V_MV78260_PLUS), - MPP_VAR_FUNCTION(0x2, "vdd", "cpu2-3-pd", V_MV78460)), + MPP_VAR_FUNCTION(0x1, "dev", "ad22", V_MV78260_PLUS)), MPP_MODE(58, MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78260_PLUS), MPP_VAR_FUNCTION(0x1, "dev", "ad23", V_MV78260_PLUS)), --- linux-3.13.0.orig/drivers/pinctrl/pinctrl-at91.c +++ linux-3.13.0/drivers/pinctrl/pinctrl-at91.c @@ -1260,22 +1260,22 @@ switch (type) { case IRQ_TYPE_EDGE_RISING: - irq_set_handler(d->irq, handle_simple_irq); + __irq_set_handler_locked(d->irq, handle_simple_irq); writel_relaxed(mask, pio + PIO_ESR); writel_relaxed(mask, pio + PIO_REHLSR); break; case IRQ_TYPE_EDGE_FALLING: - irq_set_handler(d->irq, handle_simple_irq); + __irq_set_handler_locked(d->irq, handle_simple_irq); writel_relaxed(mask, pio + PIO_ESR); writel_relaxed(mask, pio + PIO_FELLSR); break; case IRQ_TYPE_LEVEL_LOW: - irq_set_handler(d->irq, handle_level_irq); + __irq_set_handler_locked(d->irq, handle_level_irq); writel_relaxed(mask, pio + PIO_LSR); writel_relaxed(mask, pio + PIO_FELLSR); break; case IRQ_TYPE_LEVEL_HIGH: - irq_set_handler(d->irq, handle_level_irq); + __irq_set_handler_locked(d->irq, handle_level_irq); writel_relaxed(mask, pio + PIO_LSR); writel_relaxed(mask, pio + PIO_REHLSR); break; @@ -1284,7 +1284,7 @@ * disable additional interrupt modes: * fall back to default behavior */ - irq_set_handler(d->irq, handle_simple_irq); + __irq_set_handler_locked(d->irq, handle_simple_irq); writel_relaxed(mask, pio + PIO_AIMDR); return 0; case IRQ_TYPE_NONE: --- linux-3.13.0.orig/drivers/pinctrl/pinctrl-baytrail.c +++ linux-3.13.0/drivers/pinctrl/pinctrl-baytrail.c @@ -29,7 +29,6 @@ #include #include #include -#include #include #include #include @@ -485,9 +484,6 @@ irq_set_handler_data(hwirq, vg); irq_set_chained_handler(hwirq, byt_gpio_irq_handler); - - /* Register interrupt handlers for gpio signaled acpi events */ - acpi_gpiochip_request_interrupts(gc); } pm_runtime_enable(dev); --- linux-3.13.0.orig/drivers/pinctrl/pinctrl-bcm2835.c +++ linux-3.13.0/drivers/pinctrl/pinctrl-bcm2835.c @@ -352,12 +352,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 +359,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); @@ -778,7 +779,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, @@ -794,7 +795,7 @@ return 0; out: - kfree(maps); + bcm2835_pctl_dt_free_map(pctldev, maps, num_pins * maps_per_pin); return err; } --- linux-3.13.0.orig/drivers/pinctrl/pinctrl-imx.c +++ linux-3.13.0/drivers/pinctrl/pinctrl-imx.c @@ -365,7 +365,7 @@ const struct imx_pin_reg *pin_reg = &info->pin_regs[pin_id]; unsigned long config; - if (!pin_reg || !pin_reg->conf_reg) { + if (!pin_reg || pin_reg->conf_reg == -1) { seq_printf(s, "N/A"); return; } --- linux-3.13.0.orig/drivers/pinctrl/pinctrl-imx1-core.c +++ linux-3.13.0/drivers/pinctrl/pinctrl-imx1-core.c @@ -45,7 +45,7 @@ #define MX1_DDIR 0x00 #define MX1_OCR 0x04 #define MX1_ICONFA 0x0c -#define MX1_ICONFB 0x10 +#define MX1_ICONFB 0x14 #define MX1_GIUS 0x20 #define MX1_GPR 0x38 #define MX1_PUEN 0x40 @@ -97,13 +97,13 @@ u32 old_val; u32 new_val; - dev_dbg(ipctl->dev, "write: register 0x%p offset %d value 0x%x\n", - reg, offset, value); - /* Use the next register if the pin's port pin number is >=16 */ if (pin_id % 32 >= 16) reg += 0x04; + dev_dbg(ipctl->dev, "write: register 0x%p offset %d value 0x%x\n", + reg, offset, value); + /* Get current state of pins */ old_val = readl(reg); old_val &= mask; @@ -139,7 +139,7 @@ u32 reg_offset) { void __iomem *reg = imx1_mem(ipctl, pin_id) + reg_offset; - int offset = pin_id % 16; + int offset = (pin_id % 16) * 2; /* Use the next register if the pin's port pin number is >=16 */ if (pin_id % 32 >= 16) --- linux-3.13.0.orig/drivers/pinctrl/pinctrl-sunxi.c +++ linux-3.13.0/drivers/pinctrl/pinctrl-sunxi.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -469,12 +470,6 @@ return val; } -static int sunxi_pinctrl_gpio_direction_output(struct gpio_chip *chip, - unsigned offset, int value) -{ - return pinctrl_gpio_direction_output(chip->base + offset); -} - static void sunxi_pinctrl_gpio_set(struct gpio_chip *chip, unsigned offset, int value) { @@ -498,6 +493,13 @@ spin_unlock_irqrestore(&pctl->lock, flags); } +static int sunxi_pinctrl_gpio_direction_output(struct gpio_chip *chip, + unsigned offset, int value) +{ + sunxi_pinctrl_gpio_set(chip, offset, value); + return pinctrl_gpio_direction_output(chip->base + offset); +} + static int sunxi_pinctrl_gpio_of_xlate(struct gpio_chip *gc, const struct of_phandle_args *gpiospec, u32 *flags) @@ -664,6 +666,7 @@ static void sunxi_pinctrl_irq_handler(unsigned irq, struct irq_desc *desc) { + struct irq_chip *chip = irq_get_chip(irq); struct sunxi_pinctrl *pctl = irq_get_handler_data(irq); const unsigned long reg = readl(pctl->membase + IRQ_STATUS_REG); @@ -673,10 +676,12 @@ if (reg) { int irqoffset; + chained_irq_enter(chip, desc); for_each_set_bit(irqoffset, ®, SUNXI_IRQ_NUMBER) { int pin_irq = irq_find_mapping(pctl->domain, irqoffset); generic_handle_irq(pin_irq); } + chained_irq_exit(chip, desc); } } --- linux-3.13.0.orig/drivers/pinctrl/vt8500/pinctrl-wmt.c +++ linux-3.13.0/drivers/pinctrl/vt8500/pinctrl-wmt.c @@ -276,7 +276,20 @@ if (!configs) return -ENOMEM; - configs[0] = pull; + switch (pull) { + case 0: + configs[0] = PIN_CONFIG_BIAS_DISABLE; + break; + case 1: + configs[0] = PIN_CONFIG_BIAS_PULL_DOWN; + break; + case 2: + configs[0] = PIN_CONFIG_BIAS_PULL_UP; + break; + default: + configs[0] = PIN_CONFIG_BIAS_DISABLE; + dev_err(data->dev, "invalid pull state %d - disabling\n", pull); + } map->type = PIN_MAP_TYPE_CONFIGS_PIN; map->data.configs.group_or_pin = data->groups[group]; --- linux-3.13.0.orig/drivers/platform/x86/Kconfig +++ linux-3.13.0/drivers/platform/x86/Kconfig @@ -197,6 +197,17 @@ To compile this driver as a module, choose M here: the module will be called hp_accel. +config HP_WIRELESS + tristate "HP wireless button" + depends on ACPI + depends on INPUT + help + This driver provides supports for new HP wireless button for Windows 8. + On such systems the driver should load automatically (via ACPI alias). + + To compile this driver as a module, choose M here: the module will + be called hp-wireless. + config HP_WMI tristate "HP WMI extras" depends on ACPI_WMI --- linux-3.13.0.orig/drivers/platform/x86/Makefile +++ linux-3.13.0/drivers/platform/x86/Makefile @@ -16,6 +16,7 @@ obj-$(CONFIG_ACER_WMI) += acer-wmi.o obj-$(CONFIG_ACERHDF) += acerhdf.o obj-$(CONFIG_HP_ACCEL) += hp_accel.o +obj-$(CONFIG_HP_WIRELESS) += hp-wireless.o obj-$(CONFIG_HP_WMI) += hp-wmi.o obj-$(CONFIG_AMILO_RFKILL) += amilo-rfkill.o obj-$(CONFIG_TC1100_WMI) += tc1100-wmi.o --- linux-3.13.0.orig/drivers/platform/x86/acer-wmi.c +++ linux-3.13.0/drivers/platform/x86/acer-wmi.c @@ -572,6 +572,25 @@ DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5750"), }, }, + { + .callback = video_set_backlight_video_vendor, + .ident = "Acer Aspire 5741", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "Acer"), + DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5741"), + }, + }, + { + /* + * Note no video_set_backlight_video_vendor, we must use the + * acer interface, as there is no native backlight interface. + */ + .ident = "Acer KAV80", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Acer"), + DMI_MATCH(DMI_PRODUCT_NAME, "KAV80"), + }, + }, {} }; --- linux-3.13.0.orig/drivers/platform/x86/compal-laptop.c +++ linux-3.13.0/drivers/platform/x86/compal-laptop.c @@ -1049,7 +1049,13 @@ /* Power supply */ initialize_power_supply_data(data); - power_supply_register(&compal_device->dev, &data->psy); + err = power_supply_register(&compal_device->dev, &data->psy); + if (err < 0) { + hwmon_device_unregister(data->hwmon_dev); + sysfs_remove_group(&pdev->dev.kobj, &compal_attribute_group); + kfree(data); + return err; + } platform_set_drvdata(pdev, data); --- linux-3.13.0.orig/drivers/platform/x86/dell-laptop.c +++ linux-3.13.0/drivers/platform/x86/dell-laptop.c @@ -272,7 +272,6 @@ }; static struct calling_interface_buffer *buffer; -static struct page *bufferpage; static DEFINE_MUTEX(buffer_mutex); static int hwswitch_state; @@ -559,6 +558,29 @@ } static DECLARE_DELAYED_WORK(dell_rfkill_work, dell_update_rfkill); +static bool dell_laptop_i8042_filter(unsigned char data, unsigned char str, + struct serio *port) +{ + static bool extended; + + if (str & 0x20) + return false; + + if (unlikely(data == 0xe0)) { + extended = true; + return false; + } else if (unlikely(extended)) { + switch (data) { + case 0x8: + schedule_delayed_work(&dell_rfkill_work, + round_jiffies_relative(HZ / 4)); + break; + } + extended = false; + } + + return false; +} static int __init dell_setup_rfkill(void) { @@ -633,7 +655,16 @@ goto err_wwan; } + ret = i8042_install_filter(dell_laptop_i8042_filter); + if (ret) { + pr_warn("Unable to install key filter\n"); + goto err_filter; + } + return 0; +err_filter: + if (wwan_rfkill) + rfkill_unregister(wwan_rfkill); err_wwan: rfkill_destroy(wwan_rfkill); if (bluetooth_rfkill) @@ -755,30 +786,6 @@ led_classdev_unregister(&touchpad_led); } -static bool dell_laptop_i8042_filter(unsigned char data, unsigned char str, - struct serio *port) -{ - static bool extended; - - if (str & 0x20) - return false; - - if (unlikely(data == 0xe0)) { - extended = true; - return false; - } else if (unlikely(extended)) { - switch (data) { - case 0x8: - schedule_delayed_work(&dell_rfkill_work, - round_jiffies_relative(HZ / 4)); - break; - } - extended = false; - } - - return false; -} - static int __init dell_init(void) { int max_intensity = 0; @@ -814,12 +821,11 @@ * Allocate buffer below 4GB for SMI data--only 32-bit physical addr * is passed to SMI handler. */ - bufferpage = alloc_page(GFP_KERNEL | GFP_DMA32); - if (!bufferpage) { + buffer = (void *)__get_free_page(GFP_KERNEL | GFP_DMA32); + if (!buffer) { ret = -ENOMEM; goto fail_buffer; } - buffer = page_address(bufferpage); ret = dell_setup_rfkill(); @@ -828,12 +834,6 @@ goto fail_rfkill; } - ret = i8042_install_filter(dell_laptop_i8042_filter); - if (ret) { - pr_warn("Unable to install key filter\n"); - goto fail_filter; - } - if (quirks && quirks->touchpad_led) touchpad_led_init(&platform_device->dev); @@ -885,10 +885,9 @@ fail_backlight: i8042_remove_filter(dell_laptop_i8042_filter); cancel_delayed_work_sync(&dell_rfkill_work); -fail_filter: dell_cleanup_rfkill(); fail_rfkill: - free_page((unsigned long)bufferpage); + free_page((unsigned long)buffer); fail_buffer: platform_device_del(platform_device); fail_platform_device2: --- linux-3.13.0.orig/drivers/platform/x86/dell-wmi.c +++ linux-3.13.0/drivers/platform/x86/dell-wmi.c @@ -166,7 +166,7 @@ u16 *buffer_entry = (u16 *)obj->buffer.pointer; if (dell_new_hk_type && (buffer_entry[1] != 0x10)) { - pr_info("Received unknown WMI event (0x%x)\n", + pr_debug("Received unknown WMI event (0x%x)\n", buffer_entry[1]); kfree(obj); return; --- linux-3.13.0.orig/drivers/platform/x86/hp-wireless.c +++ linux-3.13.0/drivers/platform/x86/hp-wireless.c @@ -0,0 +1,132 @@ +/* + * hp-wireless button for Windows 8 + * + * Copyright (C) 2014 Alex Hung + * + * 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 Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Alex Hung"); +MODULE_ALIAS("acpi*:HPQ6001:*"); + +static struct input_dev *hpwl_input_dev; + +static const struct acpi_device_id hpwl_ids[] = { + {"HPQ6001", 0}, + {"", 0}, +}; + +static int hp_wireless_input_setup(void) +{ + int err; + + hpwl_input_dev = input_allocate_device(); + if (!hpwl_input_dev) + return -ENOMEM; + + hpwl_input_dev->name = "HP Wireless hotkeys"; + hpwl_input_dev->phys = "hpq6001/input0"; + hpwl_input_dev->id.bustype = BUS_HOST; + hpwl_input_dev->evbit[0] = BIT(EV_KEY); + set_bit(KEY_RFKILL, hpwl_input_dev->keybit); + + err = input_register_device(hpwl_input_dev); + if (err) + goto err_free_dev; + + return 0; + +err_free_dev: + input_free_device(hpwl_input_dev); + return err; +} + +static void hp_wireless_input_destroy(void) +{ + input_unregister_device(hpwl_input_dev); +} + +static void hpwl_notify(struct acpi_device *acpi_dev, u32 event) +{ + if (event != 0x80) { + pr_info("Received unknown event (0x%x)\n", event); + return; + } + + input_report_key(hpwl_input_dev, KEY_RFKILL, 1); + input_sync(hpwl_input_dev); + input_report_key(hpwl_input_dev, KEY_RFKILL, 0); + input_sync(hpwl_input_dev); +} + +static int hpwl_add(struct acpi_device *device) +{ + int err; + + err = hp_wireless_input_setup(); + return err; +} + +static int hpwl_remove(struct acpi_device *device) +{ + hp_wireless_input_destroy(); + return 0; +} + +static struct acpi_driver hpwl_driver = { + .name = "hp-wireless", + .owner = THIS_MODULE, + .ids = hpwl_ids, + .ops = { + .add = hpwl_add, + .remove = hpwl_remove, + .notify = hpwl_notify, + }, +}; + +static int __init hpwl_init(void) +{ + int err; + + pr_info("Initializing HPQ6001 module\n"); + err = acpi_bus_register_driver(&hpwl_driver); + if (err) { + pr_err("Unable to register HP wireless control driver.\n"); + goto error_acpi_register; + } + + return 0; + +error_acpi_register: + return err; +} + +static void __exit hpwl_exit(void) +{ + pr_info("Exiting HPQ6001 module\n"); + acpi_bus_unregister_driver(&hpwl_driver); +} + +module_init(hpwl_init); +module_exit(hpwl_exit); --- linux-3.13.0.orig/drivers/platform/x86/hp_accel.c +++ linux-3.13.0/drivers/platform/x86/hp_accel.c @@ -77,6 +77,7 @@ static struct acpi_device_id lis3lv02d_device_ids[] = { {"HPQ0004", 0}, /* HP Mobile Data Protection System PNP */ {"HPQ6000", 0}, /* HP Mobile Data Protection System PNP */ + {"HPQ6007", 0}, /* HP Mobile Data Protection System PNP */ {"", 0}, }; MODULE_DEVICE_TABLE(acpi, lis3lv02d_device_ids); @@ -236,6 +237,7 @@ AXIS_DMI_MATCH("HPB64xx", "HP ProBook 64", xy_swap), AXIS_DMI_MATCH("HPB64xx", "HP EliteBook 84", xy_swap), AXIS_DMI_MATCH("HPB65xx", "HP ProBook 65", x_inverted), + AXIS_DMI_MATCH("HPZBook15", "HP ZBook 15", x_inverted), { NULL, } /* Laptop models without axis info (yet): * "NC6910" "HP Compaq 6910" --- linux-3.13.0.orig/drivers/platform/x86/ideapad-laptop.c +++ linux-3.13.0/drivers/platform/x86/ideapad-laptop.c @@ -462,8 +462,9 @@ static int ideapad_rfk_set(void *data, bool blocked) { struct ideapad_rfk_priv *priv = data; + int opcode = ideapad_rfk_data[priv->dev].opcode; - return write_ec_cmd(priv->priv->adev->handle, priv->dev, !blocked); + return write_ec_cmd(priv->priv->adev->handle, opcode, !blocked); } static struct rfkill_ops ideapad_rfk_ops = { --- linux-3.13.0.orig/drivers/platform/x86/intel_ips.c +++ linux-3.13.0/drivers/platform/x86/intel_ips.c @@ -74,6 +74,7 @@ #include #include #include +#include #include #include #include "intel_ips.h" @@ -250,6 +251,8 @@ static const int IPS_ADJUST_PERIOD = 5000; /* ms */ static bool late_i915_load = false; +int i915_bdw_enabled = 0; +EXPORT_SYMBOL(i915_bdw_enabled); /* For initial average collection */ static const int IPS_SAMPLE_PERIOD = 200; /* ms */ @@ -1421,8 +1424,43 @@ * enable graphics turbo, otherwise we must disable it to avoid exceeding * thermal and power limits in the MCP. */ +static bool ips_get_i915_bdw_syms(struct ips_driver *ips) +{ + ips->read_mch_val = symbol_get(i915_bdw_read_mch_val); + if (!ips->read_mch_val) + goto out_err; + ips->gpu_raise = symbol_get(i915_bdw_gpu_raise); + if (!ips->gpu_raise) + goto out_put_mch; + ips->gpu_lower = symbol_get(i915_bdw_gpu_lower); + if (!ips->gpu_lower) + goto out_put_raise; + ips->gpu_busy = symbol_get(i915_bdw_gpu_busy); + if (!ips->gpu_busy) + goto out_put_lower; + ips->gpu_turbo_disable = symbol_get(i915_bdw_gpu_turbo_disable); + if (!ips->gpu_turbo_disable) + goto out_put_busy; + + return true; + +out_put_busy: + symbol_put(i915_bdw_gpu_busy); +out_put_lower: + symbol_put(i915_bdw_gpu_lower); +out_put_raise: + symbol_put(i915_bdw_gpu_raise); +out_put_mch: + symbol_put(i915_bdw_read_mch_val); +out_err: + return false; +} + static bool ips_get_i915_syms(struct ips_driver *ips) { + if (ips_get_i915_bdw_syms(ips) != false) + return true; + ips->read_mch_val = symbol_get(i915_read_mch_val); if (!ips->read_mch_val) goto out_err; @@ -1501,6 +1539,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-3.13.0.orig/drivers/platform/x86/intel_scu_ipcutil.c +++ linux-3.13.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-3.13.0.orig/drivers/platform/x86/samsung-laptop.c +++ linux-3.13.0/drivers/platform/x86/samsung-laptop.c @@ -1534,6 +1534,16 @@ }, .driver_data = &samsung_broken_acpi_video, }, + { + .callback = samsung_dmi_matched, + .ident = "NC210", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."), + DMI_MATCH(DMI_PRODUCT_NAME, "NC210/NC110"), + DMI_MATCH(DMI_BOARD_NAME, "NC210/NC110"), + }, + .driver_data = &samsung_broken_acpi_video, + }, { }, }; MODULE_DEVICE_TABLE(dmi, samsung_dmi_table); --- linux-3.13.0.orig/drivers/platform/x86/sony-laptop.c +++ linux-3.13.0/drivers/platform/x86/sony-laptop.c @@ -2917,6 +2917,10 @@ struct sonypi_event *events; }; +struct sony_pic_quirk_entry { + u8 set_wwan_power; +}; + struct sony_pic_dev { struct acpi_device *acpi_dev; struct sony_pic_irq *cur_irq; @@ -2927,6 +2931,7 @@ struct sonypi_eventtypes *event_types; int (*handle_irq)(const u8, const u8); int model; + struct sony_pic_quirk_entry *quirks; u16 evport_offset; u8 camera_power; u8 bluetooth_power; @@ -4362,6 +4367,12 @@ if (result) goto err_remove_pf; + if (spic_dev.quirks && spic_dev.quirks->set_wwan_power) { + /* + * Power isn't enabled by default. + */ + __sony_pic_set_wwanpower(1); + } return 0; err_remove_pf: @@ -4436,6 +4447,16 @@ .drv.pm = &sony_pic_pm, }; +static struct sony_pic_quirk_entry sony_pic_vaio_vgn = { + .set_wwan_power = 1, +}; + +static int dmi_matched(const struct dmi_system_id *dmi) +{ + spic_dev.quirks = dmi->driver_data; + return 0; +} + static struct dmi_system_id __initdata sonypi_dmi_table[] = { { .ident = "Sony Vaio", @@ -4450,6 +4471,8 @@ DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), DMI_MATCH(DMI_PRODUCT_NAME, "VGN-"), }, + .callback = dmi_matched, + .driver_data = &sony_pic_vaio_vgn, }, { } }; --- linux-3.13.0.orig/drivers/platform/x86/thinkpad_acpi.c +++ linux-3.13.0/drivers/platform/x86/thinkpad_acpi.c @@ -3440,7 +3440,107 @@ delete_attr_set(hotkey_dev_attributes, &tpacpi_pdev->dev.kobj); hotkey_dev_attributes = NULL; - return (res < 0)? res : 1; + return (res < 0) ? res : 1; +} + +/* Thinkpad X1 Carbon support 5 modes including Home mode, Web browser + * mode, Web conference mode, Function mode and Lay-flat mode. + * We support Home mode and Function mode currently. + * + * Will consider support rest of modes in future. + * + */ +enum ADAPTIVE_KEY_MODE { + HOME_MODE, + WEB_BROWSER_MODE, + WEB_CONFERENCE_MODE, + FUNCTION_MODE, + LAYFLAT_MODE +}; + +const int adaptive_keyboard_modes[] = { + HOME_MODE, +/* WEB_BROWSER_MODE = 2, + WEB_CONFERENCE_MODE = 3, */ + FUNCTION_MODE +}; + +#define DFR_CHANGE_ROW 0x101 +#define DFR_SHOW_QUICKVIEW_ROW 0x102 + +/* press Fn key a while second, it will switch to Function Mode. Then + * release Fn key, previous mode be restored. + */ +static bool adaptive_keyboard_mode_is_saved; +static int adaptive_keyboard_prev_mode; + +static int adaptive_keyboard_get_next_mode(int mode) +{ + size_t i; + size_t max_mode = ARRAY_SIZE(adaptive_keyboard_modes) - 1; + + for (i = 0; i <= max_mode; i++) { + if (adaptive_keyboard_modes[i] == mode) + break; + } + + if (i >= max_mode) + i = 0; + else + i++; + + return adaptive_keyboard_modes[i]; +} + +static bool adaptive_keyboard_hotkey_notify_hotkey(unsigned int scancode) +{ + u32 current_mode = 0; + int new_mode = 0; + + switch (scancode) { + case DFR_CHANGE_ROW: + if (adaptive_keyboard_mode_is_saved) { + new_mode = adaptive_keyboard_prev_mode; + adaptive_keyboard_mode_is_saved = false; + } else { + if (!acpi_evalf( + hkey_handle, ¤t_mode, + "GTRW", "dd", 0)) { + pr_err("Cannot read adaptive keyboard mode\n"); + return false; + } else { + new_mode = adaptive_keyboard_get_next_mode( + current_mode); + } + } + + if (!acpi_evalf(hkey_handle, NULL, "STRW", "vd", new_mode)) { + pr_err("Cannot set adaptive keyboard mode\n"); + return false; + } + + return true; + + case DFR_SHOW_QUICKVIEW_ROW: + if (!acpi_evalf(hkey_handle, + &adaptive_keyboard_prev_mode, + "GTRW", "dd", 0)) { + pr_err("Cannot read adaptive keyboard mode\n"); + return false; + } else { + adaptive_keyboard_mode_is_saved = true; + + if (!acpi_evalf(hkey_handle, + NULL, "STRW", "vd", FUNCTION_MODE)) { + pr_err("Cannot set adaptive keyboard mode\n"); + return false; + } + } + return true; + + default: + return false; + } } static bool hotkey_notify_hotkey(const u32 hkey, @@ -3462,6 +3562,8 @@ *ignore_acpi_ev = true; } return true; + } else { + return adaptive_keyboard_hotkey_notify_hotkey(scancode); } return false; } @@ -3734,13 +3836,28 @@ static void hotkey_suspend(void) { + int hkeyv; + /* Do these on suspend, we get the events on early resume! */ hotkey_wakeup_reason = TP_ACPI_WAKEUP_NONE; hotkey_autosleep_ack = 0; + + /* save previous mode of adaptive keyboard of X1 Carbon */ + if (acpi_evalf(hkey_handle, &hkeyv, "MHKV", "qd")) { + if ((hkeyv >> 8) == 2) { + if (!acpi_evalf(hkey_handle, + &adaptive_keyboard_prev_mode, + "GTRW", "dd", 0)) { + pr_err("Cannot read adaptive keyboard mode.\n"); + } + } + } } static void hotkey_resume(void) { + int hkeyv; + tpacpi_disable_brightness_delay(); if (hotkey_status_set(true) < 0 || @@ -3753,6 +3870,18 @@ hotkey_wakeup_reason_notify_change(); hotkey_wakeup_hotunplug_complete_notify_change(); hotkey_poll_setup_safe(false); + + /* restore previous mode of adapive keyboard of X1 Carbon */ + if (acpi_evalf(hkey_handle, &hkeyv, "MHKV", "qd")) { + if ((hkeyv >> 8) == 2) { + if (!acpi_evalf(hkey_handle, + NULL, + "STRW", "vd", + adaptive_keyboard_prev_mode)) { + pr_err("Cannot set adaptive keyboard mode.\n"); + } + } + } } /* procfs -------------------------------------------------------------- */ @@ -4447,7 +4576,7 @@ str_supported(video_supported != TPACPI_VIDEO_NONE), video_supported); - return (video_supported != TPACPI_VIDEO_NONE)? 0 : 1; + return (video_supported != TPACPI_VIDEO_NONE) ? 0 : 1; } static void video_exit(void) @@ -4540,7 +4669,7 @@ return -ENOSYS; } - return (res)? 0 : -EIO; + return (res) ? 0 : -EIO; } static int video_autosw_get(void) @@ -4566,7 +4695,7 @@ static int video_autosw_set(int enable) { - if (!acpi_evalf(vid_handle, NULL, "_DOS", "vd", (enable)? 1 : 0)) + if (!acpi_evalf(vid_handle, NULL, "_DOS", "vd", (enable) ? 1 : 0)) return -EIO; return 0; } @@ -4601,20 +4730,20 @@ return -EIO; } - return (res)? 0 : -EIO; + return (res) ? 0 : -EIO; } static int video_expand_toggle(void) { switch (video_supported) { case TPACPI_VIDEO_570: - return acpi_evalf(ec_handle, NULL, "_Q17", "v")? + return acpi_evalf(ec_handle, NULL, "_Q17", "v") ? 0 : -EIO; case TPACPI_VIDEO_770: - return acpi_evalf(vid_handle, NULL, "VEXP", "v")? + return acpi_evalf(vid_handle, NULL, "VEXP", "v") ? 0 : -EIO; case TPACPI_VIDEO_NEW: - return acpi_evalf(NULL, NULL, "\\VEXP", "v")? + return acpi_evalf(NULL, NULL, "\\VEXP", "v") ? 0 : -EIO; default: return -ENOSYS; @@ -4758,14 +4887,14 @@ if (tp_features.light) { if (cmos_handle) { rc = acpi_evalf(cmos_handle, NULL, NULL, "vd", - (status)? + (status) ? TP_CMOS_THINKLIGHT_ON : TP_CMOS_THINKLIGHT_OFF); } else { rc = acpi_evalf(lght_handle, NULL, NULL, "vd", - (status)? 1 : 0); + (status) ? 1 : 0); } - return (rc)? 0 : -EIO; + return (rc) ? 0 : -EIO; } return -ENXIO; @@ -4794,7 +4923,7 @@ static enum led_brightness light_sysfs_get(struct led_classdev *led_cdev) { - return (light_get_status() == 1)? LED_FULL : LED_OFF; + return (light_get_status() == 1) ? LED_FULL : LED_OFF; } static struct tpacpi_led_classdev tpacpi_led_thinklight = { @@ -4916,7 +5045,7 @@ return -EINVAL; res = issue_thinkpad_cmos_command(cmos_cmd); - return (res)? res : count; + return (res) ? res : count; } static struct device_attribute dev_attr_cmos_command = @@ -4940,7 +5069,7 @@ if (res) return res; - return (cmos_handle)? 0 : 1; + return (cmos_handle) ? 0 : 1; } static void cmos_exit(void) @@ -5050,9 +5179,9 @@ if (!acpi_evalf(ec_handle, &status, "GLED", "dd", 1 << led)) return -EIO; - led_s = (status == 0)? + led_s = (status == 0) ? TPACPI_LED_OFF : - ((status == 1)? + ((status == 1) ? TPACPI_LED_ON : TPACPI_LED_BLINK); tpacpi_led_state_cache[led] = led_s; @@ -5449,7 +5578,7 @@ tp_features.beep_needs_two_args = !!(quirks & TPACPI_BEEP_Q1); - return (beep_handle)? 0 : 1; + return (beep_handle) ? 0 : 1; } static int beep_read(struct seq_file *m) @@ -6398,7 +6527,7 @@ if (!rc && ibm_backlight_device) backlight_force_update(ibm_backlight_device, BACKLIGHT_UPDATE_SYSFS); - return (rc == -EINTR)? -ERESTARTSYS : rc; + return (rc == -EINTR) ? -ERESTARTSYS : rc; } static struct ibm_struct brightness_driver_data = { @@ -7855,7 +7984,7 @@ } mutex_unlock(&fan_mutex); - return (rc)? rc : count; + return (rc) ? rc : count; } static struct device_attribute dev_attr_fan_pwm1 = @@ -8453,9 +8582,21 @@ tpacpi_led_set(i, false); } +static void mute_led_resume(void) +{ + int i; + + for (i = 0; i < TPACPI_LED_MAX; i++) { + struct tp_led_table *t = &led_tables[i]; + if (t->state >= 0) + mute_led_on_off(t, t->state); + } +} + static struct ibm_struct mute_led_driver_data = { .name = "mute_led", .exit = mute_led_exit, + .resume = mute_led_resume, }; /**************************************************************************** @@ -8521,7 +8662,7 @@ { static char text_unsupported[] __initdata = "not supported"; - return (is_supported)? &text_unsupported[4] : &text_unsupported[0]; + return (is_supported) ? &text_unsupported[4] : &text_unsupported[0]; } #endif /* CONFIG_THINKPAD_ACPI_DEBUG */ @@ -8642,7 +8783,7 @@ ibm->name, ret); ibm_exit(ibm); - return (ret < 0)? ret : 0; + return (ret < 0) ? ret : 0; } /* Probing */ @@ -8652,17 +8793,31 @@ return (c >= '0' && c <= '9') || (c >= 'A' && c <= 'Z'); } -/* Most models: xxyTkkWW (#.##c); Ancient 570/600 and -SL lacks (#.##c) */ -static bool __pure __init tpacpi_is_valid_fw_id(const char* const s, +static bool __pure __init tpacpi_is_valid_fw_id(const char * const s, const char t) { - return s && strlen(s) >= 8 && + /* + * Most models: xxyTkkWW (#.##c) + * Ancient 570/600 and -SL lacks (#.##c) + */ + if (s && strlen(s) >= 8 && tpacpi_is_fw_digit(s[0]) && tpacpi_is_fw_digit(s[1]) && s[2] == t && (s[3] == 'T' || s[3] == 'N') && tpacpi_is_fw_digit(s[4]) && - tpacpi_is_fw_digit(s[5]); + tpacpi_is_fw_digit(s[5])) + return true; + + /* New models: xxxyTkkW (#.##c); T550 and some others */ + return s && strlen(s) >= 8 && + tpacpi_is_fw_digit(s[0]) && + tpacpi_is_fw_digit(s[1]) && + tpacpi_is_fw_digit(s[2]) && + s[3] == t && + (s[4] == 'T' || s[4] == 'N') && + tpacpi_is_fw_digit(s[5]) && + tpacpi_is_fw_digit(s[6]); } /* returns 0 - probe ok, or < 0 - probe error. --- linux-3.13.0.orig/drivers/pnp/isapnp/core.c +++ linux-3.13.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-3.13.0.orig/drivers/pnp/pnpacpi/rsparser.c +++ linux-3.13.0/drivers/pnp/pnpacpi/rsparser.c @@ -183,9 +183,7 @@ struct resource r = {0}; int i, flags; - if (acpi_dev_resource_memory(res, &r) - || acpi_dev_resource_io(res, &r) - || acpi_dev_resource_address_space(res, &r) + if (acpi_dev_resource_address_space(res, &r) || acpi_dev_resource_ext_address_space(res, &r)) { pnp_add_resource(dev, &r); return AE_OK; @@ -217,6 +215,17 @@ } switch (res->type) { + case ACPI_RESOURCE_TYPE_MEMORY24: + case ACPI_RESOURCE_TYPE_MEMORY32: + case ACPI_RESOURCE_TYPE_FIXED_MEMORY32: + if (acpi_dev_resource_memory(res, &r)) + pnp_add_resource(dev, &r); + break; + case ACPI_RESOURCE_TYPE_IO: + case ACPI_RESOURCE_TYPE_FIXED_IO: + if (acpi_dev_resource_io(res, &r)) + pnp_add_resource(dev, &r); + break; case ACPI_RESOURCE_TYPE_DMA: dma = &res->data.dma; if (dma->channel_count > 0 && dma->channels[0] != (u8) -1) --- linux-3.13.0.orig/drivers/power/88pm860x_charger.c +++ linux-3.13.0/drivers/power/88pm860x_charger.c @@ -711,6 +711,7 @@ return 0; out_irq: + power_supply_unregister(&info->usb); while (--i >= 0) free_irq(info->irq[i], info); out: --- linux-3.13.0.orig/drivers/power/bq24190_charger.c +++ linux-3.13.0/drivers/power/bq24190_charger.c @@ -929,7 +929,7 @@ charger->properties = bq24190_charger_properties; charger->num_properties = ARRAY_SIZE(bq24190_charger_properties); charger->supplied_to = bq24190_charger_supplied_to; - charger->num_supplies = ARRAY_SIZE(bq24190_charger_supplied_to); + charger->num_supplicants = ARRAY_SIZE(bq24190_charger_supplied_to); charger->get_property = bq24190_charger_get_property; charger->set_property = bq24190_charger_set_property; charger->property_is_writeable = bq24190_charger_property_is_writeable; --- linux-3.13.0.orig/drivers/power/charger-manager.c +++ linux-3.13.0/drivers/power/charger-manager.c @@ -86,6 +86,7 @@ static bool is_batt_present(struct charger_manager *cm) { union power_supply_propval val; + struct power_supply *psy; bool present = false; int i, ret; @@ -102,10 +103,17 @@ present = true; break; case CM_CHARGER_STAT: - for (i = 0; cm->charger_stat[i]; i++) { - ret = cm->charger_stat[i]->get_property( - cm->charger_stat[i], - POWER_SUPPLY_PROP_PRESENT, &val); + for (i = 0; cm->desc->psy_charger_stat[i]; i++) { + psy = power_supply_get_by_name( + cm->desc->psy_charger_stat[i]); + if (!psy) { + dev_err(cm->dev, "Cannot find power supply \"%s\"\n", + cm->desc->psy_charger_stat[i]); + continue; + } + + ret = psy->get_property(psy, POWER_SUPPLY_PROP_PRESENT, + &val); if (ret == 0 && val.intval) { present = true; break; @@ -128,14 +136,20 @@ static bool is_ext_pwr_online(struct charger_manager *cm) { union power_supply_propval val; + struct power_supply *psy; bool online = false; int i, ret; /* If at least one of them has one, it's yes. */ - for (i = 0; cm->charger_stat[i]; i++) { - ret = cm->charger_stat[i]->get_property( - cm->charger_stat[i], - POWER_SUPPLY_PROP_ONLINE, &val); + for (i = 0; cm->desc->psy_charger_stat[i]; i++) { + psy = power_supply_get_by_name(cm->desc->psy_charger_stat[i]); + if (!psy) { + dev_err(cm->dev, "Cannot find power supply \"%s\"\n", + cm->desc->psy_charger_stat[i]); + continue; + } + + ret = psy->get_property(psy, POWER_SUPPLY_PROP_ONLINE, &val); if (ret == 0 && val.intval) { online = true; break; @@ -178,6 +192,7 @@ { int i, ret; bool charging = false; + struct power_supply *psy; union power_supply_propval val; /* If there is no battery, it cannot be charged */ @@ -185,17 +200,22 @@ return false; /* If at least one of the charger is charging, return yes */ - for (i = 0; cm->charger_stat[i]; i++) { + for (i = 0; cm->desc->psy_charger_stat[i]; i++) { /* 1. The charger sholuld not be DISABLED */ if (cm->emergency_stop) continue; if (!cm->charger_enabled) continue; + psy = power_supply_get_by_name(cm->desc->psy_charger_stat[i]); + if (!psy) { + dev_err(cm->dev, "Cannot find power supply \"%s\"\n", + cm->desc->psy_charger_stat[i]); + continue; + } + /* 2. The charger should be online (ext-power) */ - ret = cm->charger_stat[i]->get_property( - cm->charger_stat[i], - POWER_SUPPLY_PROP_ONLINE, &val); + ret = psy->get_property(psy, POWER_SUPPLY_PROP_ONLINE, &val); if (ret) { dev_warn(cm->dev, "Cannot read ONLINE value from %s\n", cm->desc->psy_charger_stat[i]); @@ -208,9 +228,7 @@ * 3. The charger should not be FULL, DISCHARGING, * or NOT_CHARGING. */ - ret = cm->charger_stat[i]->get_property( - cm->charger_stat[i], - POWER_SUPPLY_PROP_STATUS, &val); + ret = psy->get_property(psy, POWER_SUPPLY_PROP_STATUS, &val); if (ret) { dev_warn(cm->dev, "Cannot read STATUS value from %s\n", cm->desc->psy_charger_stat[i]); @@ -1501,19 +1519,21 @@ return -EINVAL; } + if (!desc->psy_fuel_gauge) { + dev_err(&pdev->dev, "No fuel gauge power supply defined\n"); + return -EINVAL; + } + /* Counting index only */ while (desc->psy_charger_stat[i]) i++; - cm->charger_stat = devm_kzalloc(&pdev->dev, - sizeof(struct power_supply *) * i, GFP_KERNEL); - if (!cm->charger_stat) - return -ENOMEM; - + /* Check if charger's supplies are present at probe */ for (i = 0; desc->psy_charger_stat[i]; i++) { - cm->charger_stat[i] = power_supply_get_by_name( - desc->psy_charger_stat[i]); - if (!cm->charger_stat[i]) { + struct power_supply *psy; + + psy = power_supply_get_by_name(desc->psy_charger_stat[i]); + if (!psy) { dev_err(&pdev->dev, "Cannot find power supply \"%s\"\n", desc->psy_charger_stat[i]); return -ENODEV; @@ -1843,8 +1863,8 @@ int i; bool found = false; - for (i = 0; cm->charger_stat[i]; i++) { - if (psy == cm->charger_stat[i]) { + for (i = 0; cm->desc->psy_charger_stat[i]; i++) { + if (!strcmp(psy->name, cm->desc->psy_charger_stat[i])) { found = true; break; } --- linux-3.13.0.orig/drivers/power/lp8788-charger.c +++ linux-3.13.0/drivers/power/lp8788-charger.c @@ -417,8 +417,10 @@ pchg->battery.num_properties = ARRAY_SIZE(lp8788_battery_prop); pchg->battery.get_property = lp8788_battery_get_property; - if (power_supply_register(&pdev->dev, &pchg->battery)) + if (power_supply_register(&pdev->dev, &pchg->battery)) { + power_supply_unregister(&pchg->charger); return -EPERM; + } return 0; } --- linux-3.13.0.orig/drivers/power/max17040_battery.c +++ linux-3.13.0/drivers/power/max17040_battery.c @@ -148,7 +148,7 @@ { struct max17040_chip *chip = i2c_get_clientdata(client); - if (chip->pdata->battery_online) + if (chip->pdata && chip->pdata->battery_online) chip->online = chip->pdata->battery_online(); else chip->online = 1; @@ -158,7 +158,8 @@ { struct max17040_chip *chip = i2c_get_clientdata(client); - if (!chip->pdata->charger_online || !chip->pdata->charger_enable) { + if (!chip->pdata || !chip->pdata->charger_online + || !chip->pdata->charger_enable) { chip->status = POWER_SUPPLY_STATUS_UNKNOWN; return; } --- linux-3.13.0.orig/drivers/power/reset/Kconfig +++ linux-3.13.0/drivers/power/reset/Kconfig @@ -51,3 +51,11 @@ depends on POWER_RESET help Reboot support for the APM SoC X-Gene Eval boards. + +config POWER_RESET_SYSCON + bool "Generic SYSCON regmap reset driver" + depends on MFD_SYSCON + depends on POWER_RESET + depends on ARCH_XGENE + help + Reboot support for generic SYSCON mapped register reset. --- linux-3.13.0.orig/drivers/power/reset/Makefile +++ linux-3.13.0/drivers/power/reset/Makefile @@ -4,3 +4,4 @@ obj-$(CONFIG_POWER_RESET_RESTART) += restart-poweroff.o obj-$(CONFIG_POWER_RESET_VEXPRESS) += vexpress-poweroff.o obj-$(CONFIG_POWER_RESET_XGENE) += xgene-reboot.o +obj-$(CONFIG_POWER_RESET_SYSCON) += syscon-reboot.o --- linux-3.13.0.orig/drivers/power/reset/syscon-reboot.c +++ linux-3.13.0/drivers/power/reset/syscon-reboot.c @@ -0,0 +1,100 @@ +/* + * Generic Syscon Reboot Driver + * + * Copyright (c) 2013, Applied Micro Circuits Corporation + * Author: Feng Kan + * + * 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 + * + * This driver provides system reboot functionality for APM X-Gene SoC. + * For system shutdown, this is board specify. If a board designer + * implements GPIO shutdown, use the gpio-poweroff.c driver. + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +struct syscon_reboot_context { + struct regmap *map; + u32 offset; + u32 mask; +}; + +static struct syscon_reboot_context *syscon_reboot_ctx; + +static void syscon_restart(enum reboot_mode reboot_mode, const char *cmd) +{ + struct syscon_reboot_context *ctx = syscon_reboot_ctx; + unsigned long timeout; + + /* Issue the reboot */ + if (ctx->map) + regmap_write(ctx->map, ctx->offset, ctx->mask); + + timeout = jiffies + HZ; + while (time_before(jiffies, timeout)) + cpu_relax(); + + pr_emerg("Unable to restart system\n"); +} + +static int syscon_reboot_probe(struct platform_device *pdev) +{ + struct syscon_reboot_context *ctx; + struct device *dev = &pdev->dev; + + ctx = devm_kzalloc(&pdev->dev, sizeof(*ctx), GFP_KERNEL); + if (!ctx) { + dev_err(&pdev->dev, "out of memory for context\n"); + return -ENOMEM; + } + + ctx->map = syscon_regmap_lookup_by_phandle(dev->of_node, "regmap"); + if (IS_ERR(ctx->map)) + return PTR_ERR(ctx->map); + + if (of_property_read_u32(pdev->dev.of_node, "offset", &ctx->offset)) + return -EINVAL; + + if (of_property_read_u32(pdev->dev.of_node, "mask", &ctx->mask)) + return -EINVAL; + + arm_pm_restart = syscon_restart; + syscon_reboot_ctx = ctx; + + return 0; +} + +static struct of_device_id syscon_reboot_of_match[] = { + { .compatible = "syscon-reboot" }, + {} +}; + +static struct platform_driver syscon_reboot_driver = { + .probe = syscon_reboot_probe, + .driver = { + .name = "syscon-reboot", + .of_match_table = syscon_reboot_of_match, + }, +}; +module_platform_driver(syscon_reboot_driver); --- linux-3.13.0.orig/drivers/power/test_power.c +++ linux-3.13.0/drivers/power/test_power.c @@ -275,6 +275,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-3.13.0.orig/drivers/power/twl4030_madc_battery.c +++ linux-3.13.0/drivers/power/twl4030_madc_battery.c @@ -192,6 +192,7 @@ { struct twl4030_madc_battery *twl4030_madc_bat; struct twl4030_madc_bat_platform_data *pdata = pdev->dev.platform_data; + int ret = 0; twl4030_madc_bat = kzalloc(sizeof(*twl4030_madc_bat), GFP_KERNEL); if (!twl4030_madc_bat) @@ -216,9 +217,11 @@ twl4030_madc_bat->pdata = pdata; platform_set_drvdata(pdev, twl4030_madc_bat); - power_supply_register(&pdev->dev, &twl4030_madc_bat->psy); + ret = power_supply_register(&pdev->dev, &twl4030_madc_bat->psy); + if (ret < 0) + kfree(twl4030_madc_bat); - return 0; + return ret; } static int twl4030_madc_battery_remove(struct platform_device *pdev) --- linux-3.13.0.orig/drivers/power/wm831x_power.c +++ linux-3.13.0/drivers/power/wm831x_power.c @@ -567,7 +567,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", @@ -577,7 +577,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", @@ -590,7 +590,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-3.13.0.orig/drivers/powercap/intel_rapl.c +++ linux-3.13.0/drivers/powercap/intel_rapl.c @@ -1194,10 +1194,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-3.13.0.orig/drivers/rapidio/devices/tsi721.h +++ linux-3.13.0/drivers/rapidio/devices/tsi721.h @@ -678,6 +678,7 @@ struct list_head free_list; dma_cookie_t completed_cookie; struct tasklet_struct tasklet; + bool active; }; #endif /* CONFIG_RAPIDIO_DMA_ENGINE */ --- linux-3.13.0.orig/drivers/rapidio/devices/tsi721_dma.c +++ linux-3.13.0/drivers/rapidio/devices/tsi721_dma.c @@ -206,8 +206,8 @@ { /* Disable BDMA channel interrupts */ iowrite32(0, bdma_chan->regs + TSI721_DMAC_INTE); - - tasklet_schedule(&bdma_chan->tasklet); + if (bdma_chan->active) + tasklet_schedule(&bdma_chan->tasklet); } #ifdef CONFIG_PCI_MSI @@ -287,6 +287,12 @@ "desc %p not ACKed\n", tx_desc); } + if (ret == NULL) { + dev_dbg(bdma_chan->dchan.device->dev, + "%s: unable to obtain tx descriptor\n", __func__); + goto err_out; + } + i = bdma_chan->wr_count_next % bdma_chan->bd_num; if (i == bdma_chan->bd_num - 1) { i = 0; @@ -297,7 +303,7 @@ tx_desc->txd.phys = bdma_chan->bd_phys + i * sizeof(struct tsi721_dma_desc); tx_desc->hw_desc = &((struct tsi721_dma_desc *)bdma_chan->bd_base)[i]; - +err_out: spin_unlock_bh(&bdma_chan->lock); return ret; @@ -562,7 +568,7 @@ } #endif /* CONFIG_PCI_MSI */ - tasklet_enable(&bdma_chan->tasklet); + bdma_chan->active = true; tsi721_bdma_interrupt_enable(bdma_chan, 1); return bdma_chan->bd_num - 1; @@ -576,9 +582,7 @@ static void tsi721_free_chan_resources(struct dma_chan *dchan) { struct tsi721_bdma_chan *bdma_chan = to_tsi721_chan(dchan); -#ifdef CONFIG_PCI_MSI struct tsi721_device *priv = to_tsi721(dchan->device); -#endif LIST_HEAD(list); dev_dbg(dchan->device->dev, "%s: Entry\n", __func__); @@ -589,14 +593,25 @@ BUG_ON(!list_empty(&bdma_chan->active_list)); BUG_ON(!list_empty(&bdma_chan->queue)); - tasklet_disable(&bdma_chan->tasklet); + tsi721_bdma_interrupt_enable(bdma_chan, 0); + bdma_chan->active = false; + +#ifdef CONFIG_PCI_MSI + if (priv->flags & TSI721_USING_MSIX) { + synchronize_irq(priv->msix[TSI721_VECT_DMA0_DONE + + bdma_chan->id].vector); + synchronize_irq(priv->msix[TSI721_VECT_DMA0_INT + + bdma_chan->id].vector); + } else +#endif + synchronize_irq(priv->pdev->irq); + + tasklet_kill(&bdma_chan->tasklet); spin_lock_bh(&bdma_chan->lock); list_splice_init(&bdma_chan->free_list, &list); spin_unlock_bh(&bdma_chan->lock); - tsi721_bdma_interrupt_enable(bdma_chan, 0); - #ifdef CONFIG_PCI_MSI if (priv->flags & TSI721_USING_MSIX) { free_irq(priv->msix[TSI721_VECT_DMA0_DONE + @@ -790,6 +805,7 @@ bdma_chan->dchan.cookie = 1; bdma_chan->dchan.chan_id = i; bdma_chan->id = i; + bdma_chan->active = false; spin_lock_init(&bdma_chan->lock); @@ -799,7 +815,6 @@ tasklet_init(&bdma_chan->tasklet, tsi721_dma_tasklet, (unsigned long)bdma_chan); - tasklet_disable(&bdma_chan->tasklet); list_add_tail(&bdma_chan->dchan.device_node, &mport->dma.channels); } --- linux-3.13.0.orig/drivers/regulator/arizona-ldo1.c +++ linux-3.13.0/drivers/regulator/arizona-ldo1.c @@ -141,8 +141,6 @@ .map_voltage = regulator_map_voltage_linear, .get_voltage_sel = regulator_get_voltage_sel_regmap, .set_voltage_sel = regulator_set_voltage_sel_regmap, - .get_bypass = regulator_get_bypass_regmap, - .set_bypass = regulator_set_bypass_regmap, }; static const struct regulator_desc arizona_ldo1 = { @@ -153,11 +151,9 @@ .vsel_reg = ARIZONA_LDO1_CONTROL_1, .vsel_mask = ARIZONA_LDO1_VSEL_MASK, - .bypass_reg = ARIZONA_LDO1_CONTROL_1, - .bypass_mask = ARIZONA_LDO1_BYPASS, .min_uV = 900000, - .uV_step = 50000, - .n_voltages = 7, + .uV_step = 25000, + .n_voltages = 13, .enable_time = 500, .owner = THIS_MODULE, @@ -203,6 +199,7 @@ */ switch (arizona->type) { case WM5102: + case WM8997: desc = &arizona_ldo1_hc; ldo1->init_data = arizona_ldo1_dvfs; break; --- linux-3.13.0.orig/drivers/regulator/core.c +++ linux-3.13.0/drivers/regulator/core.c @@ -773,7 +773,7 @@ static void print_constraints(struct regulator_dev *rdev) { struct regulation_constraints *constraints = rdev->constraints; - char buf[80] = ""; + char buf[160] = ""; int count = 0; int ret; @@ -953,6 +953,8 @@ return 0; } +static int _regulator_do_enable(struct regulator_dev *rdev); + /** * set_machine_constraints - sets regulator constraints * @rdev: regulator source @@ -1013,10 +1015,9 @@ /* If the constraints say the regulator should be on at this point * and we have control then make sure it is enabled. */ - if ((rdev->constraints->always_on || rdev->constraints->boot_on) && - ops->enable) { - ret = ops->enable(rdev); - if (ret < 0) { + if (rdev->constraints->always_on || rdev->constraints->boot_on) { + ret = _regulator_do_enable(rdev); + if (ret < 0 && ret != -EINVAL) { rdev_err(rdev, "failed to enable\n"); goto out; } @@ -1272,6 +1273,8 @@ if (r->dev.parent && node == r->dev.of_node) return r; + *ret = -EPROBE_DEFER; + return NULL; } else { /* * If we couldn't even get the node then it's @@ -1312,7 +1315,7 @@ struct regulator_dev *rdev; struct regulator *regulator = ERR_PTR(-EPROBE_DEFER); const char *devname = NULL; - int ret = -EPROBE_DEFER; + int ret; if (id == NULL) { pr_err("get() with no identifier\n"); @@ -1322,6 +1325,11 @@ if (dev) devname = dev_name(dev); + if (have_full_constraints()) + ret = -ENODEV; + else + ret = -EPROBE_DEFER; + mutex_lock(®ulator_list_mutex); rdev = regulator_dev_lookup(dev, id, &ret); @@ -1352,7 +1360,7 @@ rdev = dummy_regulator_rdev; goto found; } else { - dev_err(dev, "dummy supplies not allowed\n"); + dev_warn(dev, "dummy supplies not allowed\n"); } mutex_unlock(®ulator_list_mutex); @@ -1471,7 +1479,7 @@ } EXPORT_SYMBOL_GPL(regulator_get_optional); -/* Locks held by regulator_put() */ +/* regulator_list_mutex lock held by regulator_put() */ static void _regulator_put(struct regulator *regulator) { struct regulator_dev *rdev; @@ -1486,12 +1494,14 @@ /* remove any sysfs entries */ if (regulator->dev) sysfs_remove_link(&rdev->dev.kobj, regulator->supply_name); + mutex_lock(&rdev->mutex); kfree(regulator->supply_name); list_del(®ulator->list); kfree(regulator); rdev->open_count--; rdev->exclusive = 0; + mutex_unlock(&rdev->mutex); module_put(rdev->owner); } @@ -1754,10 +1764,12 @@ trace_regulator_enable(rdev_get_name(rdev)); if (rdev->ena_pin) { - ret = regulator_ena_gpio_ctrl(rdev, true); - if (ret < 0) - return ret; - rdev->ena_gpio_state = 1; + if (!rdev->ena_gpio_state) { + ret = regulator_ena_gpio_ctrl(rdev, true); + if (ret < 0) + return ret; + rdev->ena_gpio_state = 1; + } } else if (rdev->desc->ops->enable) { ret = rdev->desc->ops->enable(rdev); if (ret < 0) @@ -1887,10 +1899,12 @@ trace_regulator_disable(rdev_get_name(rdev)); if (rdev->ena_pin) { - ret = regulator_ena_gpio_ctrl(rdev, false); - if (ret < 0) - return ret; - rdev->ena_gpio_state = 0; + if (rdev->ena_gpio_state) { + ret = regulator_ena_gpio_ctrl(rdev, false); + if (ret < 0) + return ret; + rdev->ena_gpio_state = 0; + } } else if (rdev->desc->ops->disable) { ret = rdev->desc->ops->disable(rdev); @@ -1900,8 +1914,6 @@ trace_regulator_disable_complete(rdev_get_name(rdev)); - _notifier_call_chain(rdev, REGULATOR_EVENT_DISABLE, - NULL); return 0; } @@ -1925,6 +1937,8 @@ rdev_err(rdev, "failed to disable\n"); return ret; } + _notifier_call_chain(rdev, REGULATOR_EVENT_DISABLE, + NULL); } rdev->use_count = 0; @@ -1977,20 +1991,16 @@ { int ret = 0; - /* force disable */ - if (rdev->desc->ops->disable) { - /* ah well, who wants to live forever... */ - ret = rdev->desc->ops->disable(rdev); - if (ret < 0) { - rdev_err(rdev, "failed to force disable\n"); - return ret; - } - /* notify other consumers that power has been forced off */ - _notifier_call_chain(rdev, REGULATOR_EVENT_FORCE_DISABLE | - REGULATOR_EVENT_DISABLE, NULL); + ret = _regulator_do_disable(rdev); + if (ret < 0) { + rdev_err(rdev, "failed to force disable\n"); + return ret; } - return ret; + _notifier_call_chain(rdev, REGULATOR_EVENT_FORCE_DISABLE | + REGULATOR_EVENT_DISABLE, NULL); + + return 0; } /** @@ -3448,12 +3458,6 @@ config->ena_gpio, ret); goto wash; } - - if (config->ena_gpio_flags & GPIOF_OUT_INIT_HIGH) - rdev->ena_gpio_state = 1; - - if (config->ena_gpio_invert) - rdev->ena_gpio_state = !rdev->ena_gpio_state; } /* set regulator constraints */ @@ -3623,23 +3627,20 @@ mutex_lock(®ulator_list_mutex); list_for_each_entry(rdev, ®ulator_list, list) { - struct regulator_ops *ops = rdev->desc->ops; - mutex_lock(&rdev->mutex); - if ((rdev->use_count > 0 || rdev->constraints->always_on) && - ops->enable) { - error = ops->enable(rdev); - if (error) - ret = error; + if (rdev->use_count > 0 || rdev->constraints->always_on) { + if (!_regulator_is_enabled(rdev)) { + error = _regulator_do_enable(rdev); + if (error) + ret = error; + } } else { if (!have_full_constraints()) goto unlock; - if (!ops->disable) - goto unlock; if (!_regulator_is_enabled(rdev)) goto unlock; - error = ops->disable(rdev); + error = _regulator_do_disable(rdev); if (error) ret = error; } @@ -3813,7 +3814,7 @@ ops = rdev->desc->ops; c = rdev->constraints; - if (!ops->disable || (c && c->always_on)) + if (c && c->always_on) continue; mutex_lock(&rdev->mutex); @@ -3834,7 +3835,7 @@ /* We log since this may kill the system if it * goes wrong. */ rdev_info(rdev, "disabling\n"); - ret = ops->disable(rdev); + ret = _regulator_do_disable(rdev); if (ret != 0) { rdev_err(rdev, "couldn't disable: %d\n", ret); } --- linux-3.13.0.orig/drivers/regulator/da9063-regulator.c +++ linux-3.13.0/drivers/regulator/da9063-regulator.c @@ -1,3 +1,4 @@ + /* * Regulator driver for DA9063 PMIC series * @@ -60,7 +61,8 @@ .desc.ops = &da9063_ldo_ops, \ .desc.min_uV = (min_mV) * 1000, \ .desc.uV_step = (step_mV) * 1000, \ - .desc.n_voltages = (((max_mV) - (min_mV))/(step_mV) + 1), \ + .desc.n_voltages = (((max_mV) - (min_mV))/(step_mV) + 1 \ + + (DA9063_V##regl_name##_BIAS)), \ .desc.enable_reg = DA9063_REG_##regl_name##_CONT, \ .desc.enable_mask = DA9063_LDO_EN, \ .desc.vsel_reg = DA9063_REG_V##regl_name##_A, \ --- linux-3.13.0.orig/drivers/regulator/max77693.c +++ linux-3.13.0/drivers/regulator/max77693.c @@ -231,7 +231,7 @@ struct max77693_pmic_dev *max77693_pmic; struct max77693_regulator_data *rdata = NULL; int num_rdata, i; - struct regulator_config config; + struct regulator_config config = { }; num_rdata = max77693_pmic_init_rdata(&pdev->dev, &rdata); if (!rdata || num_rdata <= 0) { --- linux-3.13.0.orig/drivers/remoteproc/remoteproc_debugfs.c +++ linux-3.13.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-3.13.0.orig/drivers/rtc/Kconfig +++ linux-3.13.0/drivers/rtc/Kconfig @@ -726,7 +726,7 @@ config RTC_DRV_EFI tristate "EFI RTC" - depends on IA64 + depends on EFI && !X86 help If you say yes here you will get support for the EFI Real Time Clock. @@ -1286,6 +1286,15 @@ This driver can also be built as a module. If so, the module will be called rtc-moxart +config RTC_DRV_XGENE + tristate "APM X-Gene RTC" + help + If you say yes here you get support for the APM X-Gene SoC real time + clock. + + This driver can also be built as a module, if so, the module + will be called "rtc-xgene". + comment "HID Sensor RTC drivers" config RTC_DRV_HID_SENSOR_TIME --- linux-3.13.0.orig/drivers/rtc/Makefile +++ linux-3.13.0/drivers/rtc/Makefile @@ -10,6 +10,10 @@ obj-$(CONFIG_RTC_CLASS) += rtc-core.o rtc-core-y := class.o interface.o +ifdef CONFIG_RTC_DRV_EFI +rtc-core-y += rtc-efi-platform.o +endif + rtc-core-$(CONFIG_RTC_INTF_DEV) += rtc-dev.o rtc-core-$(CONFIG_RTC_INTF_PROC) += rtc-proc.o rtc-core-$(CONFIG_RTC_INTF_SYSFS) += rtc-sysfs.o @@ -131,5 +135,6 @@ obj-$(CONFIG_RTC_DRV_WM831X) += rtc-wm831x.o obj-$(CONFIG_RTC_DRV_WM8350) += rtc-wm8350.o obj-$(CONFIG_RTC_DRV_X1205) += rtc-x1205.o +obj-$(CONFIG_RTC_DRV_XGENE) += rtc-xgene.o obj-$(CONFIG_RTC_DRV_SIRFSOC) += rtc-sirfsoc.o obj-$(CONFIG_RTC_DRV_MOXART) += rtc-moxart.o --- linux-3.13.0.orig/drivers/rtc/rtc-at91rm9200.c +++ linux-3.13.0/drivers/rtc/rtc-at91rm9200.c @@ -48,6 +48,7 @@ static const struct at91_rtc_config *at91_rtc_config; static DECLARE_COMPLETION(at91_rtc_updated); +static DECLARE_COMPLETION(at91_rtc_upd_rdy); static unsigned int at91_alarm_year = AT91_RTC_EPOCH; static void __iomem *at91_rtc_regs; static int irq; @@ -161,6 +162,8 @@ 1900 + tm->tm_year, tm->tm_mon, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec); + wait_for_completion(&at91_rtc_upd_rdy); + /* Stop Time/Calendar from counting */ cr = at91_rtc_read(AT91_RTC_CR); at91_rtc_write(AT91_RTC_CR, cr | AT91_RTC_UPDCAL | AT91_RTC_UPDTIM); @@ -183,7 +186,9 @@ /* Restart Time/Calendar */ cr = at91_rtc_read(AT91_RTC_CR); + at91_rtc_write(AT91_RTC_SCCR, AT91_RTC_SECEV); at91_rtc_write(AT91_RTC_CR, cr & ~(AT91_RTC_UPDCAL | AT91_RTC_UPDTIM)); + at91_rtc_write_ier(AT91_RTC_SECEV); return 0; } @@ -290,8 +295,10 @@ if (rtsr) { /* this interrupt is shared! Is it ours? */ if (rtsr & AT91_RTC_ALARM) events |= (RTC_AF | RTC_IRQF); - if (rtsr & AT91_RTC_SECEV) - events |= (RTC_UF | RTC_IRQF); + if (rtsr & AT91_RTC_SECEV) { + complete(&at91_rtc_upd_rdy); + at91_rtc_write_idr(AT91_RTC_SECEV); + } if (rtsr & AT91_RTC_ACKUPD) complete(&at91_rtc_updated); @@ -413,6 +420,11 @@ return PTR_ERR(rtc); platform_set_drvdata(pdev, rtc); + /* enable SECEV interrupt in order to initialize at91_rtc_upd_rdy + * completion. + */ + at91_rtc_write_ier(AT91_RTC_SECEV); + dev_info(&pdev->dev, "AT91 Real Time Clock driver.\n"); return 0; } --- linux-3.13.0.orig/drivers/rtc/rtc-cmos.c +++ linux-3.13.0/drivers/rtc/rtc-cmos.c @@ -34,11 +34,11 @@ #include #include #include -#include #include #include #include #include +#include /* this is for "generic access to PC-style RTC" using CMOS_READ/CMOS_WRITE */ #include @@ -377,6 +377,51 @@ return 0; } +/* + * Do not disable RTC alarm on shutdown - workaround for b0rked BIOSes. + */ +static bool alarm_disable_quirk; + +static int __init set_alarm_disable_quirk(const struct dmi_system_id *id) +{ + alarm_disable_quirk = true; + pr_info("rtc-cmos: BIOS has alarm-disable quirk. "); + pr_info("RTC alarms disabled\n"); + return 0; +} + +static const struct dmi_system_id rtc_quirks[] __initconst = { + /* https://bugzilla.novell.com/show_bug.cgi?id=805740 */ + { + .callback = set_alarm_disable_quirk, + .ident = "IBM Truman", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), + DMI_MATCH(DMI_PRODUCT_NAME, "4852570"), + }, + }, + /* https://bugzilla.novell.com/show_bug.cgi?id=812592 */ + { + .callback = set_alarm_disable_quirk, + .ident = "Gigabyte GA-990XA-UD3", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, + "Gigabyte Technology Co., Ltd."), + DMI_MATCH(DMI_PRODUCT_NAME, "GA-990XA-UD3"), + }, + }, + /* http://permalink.gmane.org/gmane.linux.kernel/1604474 */ + { + .callback = set_alarm_disable_quirk, + .ident = "Toshiba Satellite L300", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), + DMI_MATCH(DMI_PRODUCT_NAME, "Satellite L300"), + }, + }, + {} +}; + static int cmos_alarm_irq_enable(struct device *dev, unsigned int enabled) { struct cmos_rtc *cmos = dev_get_drvdata(dev); @@ -385,6 +430,9 @@ if (!is_valid_irq(cmos->irq)) return -EINVAL; + if (alarm_disable_quirk) + return 0; + spin_lock_irqsave(&rtc_lock, flags); if (enabled) @@ -1157,6 +1205,8 @@ platform_driver_registered = true; } + dmi_check_system(rtc_quirks); + if (retval == 0) return 0; --- linux-3.13.0.orig/drivers/rtc/rtc-efi-platform.c +++ linux-3.13.0/drivers/rtc/rtc-efi-platform.c @@ -0,0 +1,31 @@ +/* + * Moved from arch/ia64/kernel/time.c + * + * Copyright (C) 1998-2003 Hewlett-Packard Co + * Stephane Eranian + * David Mosberger + * Copyright (C) 1999 Don Dugger + * Copyright (C) 1999-2000 VA Linux Systems + * Copyright (C) 1999-2000 Walt Drummond + */ +#include +#include +#include +#include +#include + +static struct platform_device rtc_efi_dev = { + .name = "rtc-efi", + .id = -1, +}; + +static int __init rtc_init(void) +{ + if (efi_enabled(EFI_RUNTIME_SERVICES)) + if (platform_device_register(&rtc_efi_dev) < 0) + pr_err("unable to register rtc device...\n"); + + /* not necessarily an error */ + return 0; +} +module_init(rtc_init); --- linux-3.13.0.orig/drivers/rtc/rtc-max8907.c +++ linux-3.13.0/drivers/rtc/rtc-max8907.c @@ -51,7 +51,7 @@ { struct max8907_rtc *rtc = data; - regmap_update_bits(rtc->regmap, MAX8907_REG_ALARM0_CNTL, 0x7f, 0); + regmap_write(rtc->regmap, MAX8907_REG_ALARM0_CNTL, 0); rtc_update_irq(rtc->rtc_dev, 1, RTC_IRQF | RTC_AF); @@ -64,7 +64,7 @@ bcd2bin(regs[RTC_YEAR1]) - 1900; tm->tm_mon = bcd2bin(regs[RTC_MONTH] & 0x1f) - 1; tm->tm_mday = bcd2bin(regs[RTC_DATE] & 0x3f); - tm->tm_wday = (regs[RTC_WEEKDAY] & 0x07) - 1; + tm->tm_wday = (regs[RTC_WEEKDAY] & 0x07); if (regs[RTC_HOUR] & HOUR_12) { tm->tm_hour = bcd2bin(regs[RTC_HOUR] & 0x01f); if (tm->tm_hour == 12) @@ -88,7 +88,7 @@ regs[RTC_YEAR1] = bin2bcd(low); regs[RTC_MONTH] = bin2bcd(tm->tm_mon + 1); regs[RTC_DATE] = bin2bcd(tm->tm_mday); - regs[RTC_WEEKDAY] = tm->tm_wday + 1; + regs[RTC_WEEKDAY] = tm->tm_wday; regs[RTC_HOUR] = bin2bcd(tm->tm_hour); regs[RTC_MIN] = bin2bcd(tm->tm_min); regs[RTC_SEC] = bin2bcd(tm->tm_sec); @@ -153,7 +153,7 @@ tm_to_regs(&alrm->time, regs); /* Disable alarm while we update the target time */ - ret = regmap_update_bits(rtc->regmap, MAX8907_REG_ALARM0_CNTL, 0x7f, 0); + ret = regmap_write(rtc->regmap, MAX8907_REG_ALARM0_CNTL, 0); if (ret < 0) return ret; @@ -163,8 +163,7 @@ return ret; if (alrm->enabled) - ret = regmap_update_bits(rtc->regmap, MAX8907_REG_ALARM0_CNTL, - 0x7f, 0x7f); + ret = regmap_write(rtc->regmap, MAX8907_REG_ALARM0_CNTL, 0x77); return ret; } --- linux-3.13.0.orig/drivers/rtc/rtc-omap.c +++ linux-3.13.0/drivers/rtc/rtc-omap.c @@ -379,6 +379,8 @@ rtc_writel(KICK1_VALUE, OMAP_RTC_KICK1_REG); } + device_init_wakeup(&pdev->dev, true); + rtc = devm_rtc_device_register(&pdev->dev, pdev->name, &omap_rtc_ops, THIS_MODULE); if (IS_ERR(rtc)) { @@ -441,8 +443,6 @@ * is write-only, and always reads as zero...) */ - device_init_wakeup(&pdev->dev, true); - if (new_ctrl & (u8) OMAP_RTC_CTRL_SPLIT) pr_info("%s: split power mode\n", pdev->name); @@ -452,6 +452,7 @@ return 0; fail0: + device_init_wakeup(&pdev->dev, false); if (id_entry && (id_entry->driver_data & OMAP_RTC_HAS_KICKER)) rtc_writel(0, OMAP_RTC_KICK0_REG); pm_runtime_put_sync(&pdev->dev); --- linux-3.13.0.orig/drivers/rtc/rtc-s5m.c +++ linux-3.13.0/drivers/rtc/rtc-s5m.c @@ -665,6 +665,7 @@ static const struct platform_device_id s5m_rtc_id[] = { { "s5m-rtc", 0 }, + { }, }; static struct platform_driver s5m_rtc_driver = { --- linux-3.13.0.orig/drivers/rtc/rtc-sirfsoc.c +++ linux-3.13.0/drivers/rtc/rtc-sirfsoc.c @@ -290,14 +290,6 @@ rtc_div = ((32768 / RTC_HZ) / 2) - 1; sirfsoc_rtc_iobrg_writel(rtc_div, rtcdrv->rtc_base + RTC_DIV); - rtcdrv->rtc = devm_rtc_device_register(&pdev->dev, pdev->name, - &sirfsoc_rtc_ops, THIS_MODULE); - if (IS_ERR(rtcdrv->rtc)) { - err = PTR_ERR(rtcdrv->rtc); - dev_err(&pdev->dev, "can't register RTC device\n"); - return err; - } - /* 0x3 -> RTC_CLK */ sirfsoc_rtc_iobrg_writel(SIRFSOC_RTC_CLK, rtcdrv->rtc_base + RTC_CLOCK_SWITCH); @@ -312,6 +304,14 @@ rtcdrv->overflow_rtc = sirfsoc_rtc_iobrg_readl(rtcdrv->rtc_base + RTC_SW_VALUE); + rtcdrv->rtc = devm_rtc_device_register(&pdev->dev, pdev->name, + &sirfsoc_rtc_ops, THIS_MODULE); + if (IS_ERR(rtcdrv->rtc)) { + err = PTR_ERR(rtcdrv->rtc); + dev_err(&pdev->dev, "can't register RTC device\n"); + return err; + } + rtcdrv->irq = platform_get_irq(pdev, 0); err = devm_request_irq( &pdev->dev, --- linux-3.13.0.orig/drivers/rtc/rtc-vr41xx.c +++ linux-3.13.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-3.13.0.orig/drivers/rtc/rtc-xgene.c +++ linux-3.13.0/drivers/rtc/rtc-xgene.c @@ -0,0 +1,278 @@ +/* + * APM X-Gene SoC Real Time Clock Driver + * + * Copyright (c) 2014, Applied Micro Circuits Corporation + * Author: Rameshwar Prasad Sahu + * Loc Ho + * + * 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 . + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* RTC CSR Registers */ +#define RTC_CCVR 0x00 +#define RTC_CMR 0x04 +#define RTC_CLR 0x08 +#define RTC_CCR 0x0C +#define RTC_CCR_IE BIT(0) +#define RTC_CCR_MASK BIT(1) +#define RTC_CCR_EN BIT(2) +#define RTC_CCR_WEN BIT(3) +#define RTC_STAT 0x10 +#define RTC_STAT_BIT BIT(0) +#define RTC_RSTAT 0x14 +#define RTC_EOI 0x18 +#define RTC_VER 0x1C + +struct xgene_rtc_dev { + struct rtc_device *rtc; + struct device *dev; + unsigned long alarm_time; + void __iomem *csr_base; + struct clk *clk; + unsigned int irq_wake; +}; + +static int xgene_rtc_read_time(struct device *dev, struct rtc_time *tm) +{ + struct xgene_rtc_dev *pdata = dev_get_drvdata(dev); + + rtc_time_to_tm(readl(pdata->csr_base + RTC_CCVR), tm); + return rtc_valid_tm(tm); +} + +static int xgene_rtc_set_mmss(struct device *dev, unsigned long secs) +{ + struct xgene_rtc_dev *pdata = dev_get_drvdata(dev); + + /* + * NOTE: After the following write, the RTC_CCVR is only reflected + * after the update cycle of 1 seconds. + */ + writel((u32) secs, pdata->csr_base + RTC_CLR); + readl(pdata->csr_base + RTC_CLR); /* Force a barrier */ + + return 0; +} + +static int xgene_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *alrm) +{ + struct xgene_rtc_dev *pdata = dev_get_drvdata(dev); + + rtc_time_to_tm(pdata->alarm_time, &alrm->time); + alrm->enabled = readl(pdata->csr_base + RTC_CCR) & RTC_CCR_IE; + + return 0; +} + +static int xgene_rtc_alarm_irq_enable(struct device *dev, u32 enabled) +{ + struct xgene_rtc_dev *pdata = dev_get_drvdata(dev); + u32 ccr; + + ccr = readl(pdata->csr_base + RTC_CCR); + if (enabled) { + ccr &= ~RTC_CCR_MASK; + ccr |= RTC_CCR_IE; + } else { + ccr &= ~RTC_CCR_IE; + ccr |= RTC_CCR_MASK; + } + writel(ccr, pdata->csr_base + RTC_CCR); + + return 0; +} + +static int xgene_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm) +{ + struct xgene_rtc_dev *pdata = dev_get_drvdata(dev); + unsigned long rtc_time; + unsigned long alarm_time; + + rtc_time = readl(pdata->csr_base + RTC_CCVR); + rtc_tm_to_time(&alrm->time, &alarm_time); + + pdata->alarm_time = alarm_time; + writel((u32) pdata->alarm_time, pdata->csr_base + RTC_CMR); + + xgene_rtc_alarm_irq_enable(dev, alrm->enabled); + + return 0; +} + +static const struct rtc_class_ops xgene_rtc_ops = { + .read_time = xgene_rtc_read_time, + .set_mmss = xgene_rtc_set_mmss, + .read_alarm = xgene_rtc_read_alarm, + .set_alarm = xgene_rtc_set_alarm, + .alarm_irq_enable = xgene_rtc_alarm_irq_enable, +}; + +static irqreturn_t xgene_rtc_interrupt(int irq, void *id) +{ + struct xgene_rtc_dev *pdata = (struct xgene_rtc_dev *) id; + + /* Check if interrupt asserted */ + if (!(readl(pdata->csr_base + RTC_STAT) & RTC_STAT_BIT)) + return IRQ_NONE; + + /* Clear interrupt */ + readl(pdata->csr_base + RTC_EOI); + + rtc_update_irq(pdata->rtc, 1, RTC_IRQF | RTC_AF); + + return IRQ_HANDLED; +} + +static int xgene_rtc_probe(struct platform_device *pdev) +{ + struct xgene_rtc_dev *pdata; + struct resource *res; + int ret; + int irq; + + pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL); + if (!pdata) + return -ENOMEM; + platform_set_drvdata(pdev, pdata); + pdata->dev = &pdev->dev; + + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + pdata->csr_base = devm_ioremap_resource(&pdev->dev, res); + if (IS_ERR(pdata->csr_base)) + return PTR_ERR(pdata->csr_base); + + irq = platform_get_irq(pdev, 0); + if (irq < 0) { + dev_err(&pdev->dev, "No IRQ resource\n"); + return irq; + } + ret = devm_request_irq(&pdev->dev, irq, xgene_rtc_interrupt, 0, + dev_name(&pdev->dev), pdata); + if (ret) { + dev_err(&pdev->dev, "Could not request IRQ\n"); + return ret; + } + + pdata->clk = devm_clk_get(&pdev->dev, NULL); + if (IS_ERR(pdata->clk)) { + dev_err(&pdev->dev, "Couldn't get the clock for RTC\n"); + return -ENODEV; + } + clk_prepare_enable(pdata->clk); + + /* Turn on the clock and the crystal */ + writel(RTC_CCR_EN, pdata->csr_base + RTC_CCR); + + device_init_wakeup(&pdev->dev, 1); + + pdata->rtc = devm_rtc_device_register(&pdev->dev, pdev->name, + &xgene_rtc_ops, THIS_MODULE); + if (IS_ERR(pdata->rtc)) { + clk_disable_unprepare(pdata->clk); + return PTR_ERR(pdata->rtc); + } + + /* HW does not support update faster than 1 seconds */ + pdata->rtc->uie_unsupported = 1; + + return 0; +} + +static int xgene_rtc_remove(struct platform_device *pdev) +{ + struct xgene_rtc_dev *pdata = platform_get_drvdata(pdev); + + xgene_rtc_alarm_irq_enable(&pdev->dev, 0); + device_init_wakeup(&pdev->dev, 0); + clk_disable_unprepare(pdata->clk); + return 0; +} + +#ifdef CONFIG_PM_SLEEP +static int xgene_rtc_suspend(struct device *dev) +{ + struct platform_device *pdev = to_platform_device(dev); + struct xgene_rtc_dev *pdata = platform_get_drvdata(pdev); + int irq; + + irq = platform_get_irq(pdev, 0); + if (device_may_wakeup(&pdev->dev)) { + if (!enable_irq_wake(irq)) + pdata->irq_wake = 1; + } else { + xgene_rtc_alarm_irq_enable(dev, 0); + clk_disable(pdata->clk); + } + + return 0; +} + +static int xgene_rtc_resume(struct device *dev) +{ + struct platform_device *pdev = to_platform_device(dev); + struct xgene_rtc_dev *pdata = platform_get_drvdata(pdev); + int irq; + + irq = platform_get_irq(pdev, 0); + if (device_may_wakeup(&pdev->dev)) { + if (pdata->irq_wake) { + disable_irq_wake(irq); + pdata->irq_wake = 0; + } + } else { + clk_enable(pdata->clk); + xgene_rtc_alarm_irq_enable(dev, 1); + } + + return 0; +} +#endif + +static SIMPLE_DEV_PM_OPS(xgene_rtc_pm_ops, xgene_rtc_suspend, xgene_rtc_resume); + +#ifdef CONFIG_OF +static const struct of_device_id xgene_rtc_of_match[] = { + {.compatible = "apm,xgene-rtc" }, + { } +}; +MODULE_DEVICE_TABLE(of, xgene_rtc_of_match); +#endif + +static struct platform_driver xgene_rtc_driver = { + .probe = xgene_rtc_probe, + .remove = xgene_rtc_remove, + .driver = { + .owner = THIS_MODULE, + .name = "xgene-rtc", + .pm = &xgene_rtc_pm_ops, + .of_match_table = of_match_ptr(xgene_rtc_of_match), + }, +}; + +module_platform_driver(xgene_rtc_driver); + +MODULE_DESCRIPTION("APM X-Gene SoC RTC driver"); +MODULE_AUTHOR("Rameshwar Sahu "); +MODULE_LICENSE("GPL"); --- linux-3.13.0.orig/drivers/s390/block/dasd_alias.c +++ linux-3.13.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; } @@ -722,7 +730,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; @@ -926,6 +934,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); } @@ -985,6 +994,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-3.13.0.orig/drivers/s390/char/con3215.c +++ linux-3.13.0/drivers/s390/char/con3215.c @@ -922,7 +922,7 @@ raw3215_freelist = req; } - cdev = ccw_device_probe_console(); + cdev = ccw_device_probe_console(&raw3215_ccw_driver); if (IS_ERR(cdev)) return -ENODEV; --- linux-3.13.0.orig/drivers/s390/char/con3270.c +++ linux-3.13.0/drivers/s390/char/con3270.c @@ -576,7 +576,6 @@ static int __init con3270_init(void) { - struct ccw_device *cdev; struct raw3270 *rp; void *cbuf; int i; @@ -591,10 +590,7 @@ cpcmd("TERM AUTOCR OFF", NULL, 0, NULL); } - cdev = ccw_device_probe_console(); - if (IS_ERR(cdev)) - return -ENODEV; - rp = raw3270_setup_console(cdev); + rp = raw3270_setup_console(); if (IS_ERR(rp)) return PTR_ERR(rp); --- linux-3.13.0.orig/drivers/s390/char/raw3270.c +++ linux-3.13.0/drivers/s390/char/raw3270.c @@ -776,16 +776,24 @@ } #ifdef CONFIG_TN3270_CONSOLE +/* Tentative definition - see below for actual definition. */ +static struct ccw_driver raw3270_ccw_driver; + /* * Setup 3270 device configured as console. */ -struct raw3270 __init *raw3270_setup_console(struct ccw_device *cdev) +struct raw3270 __init *raw3270_setup_console(void) { + struct ccw_device *cdev; unsigned long flags; struct raw3270 *rp; char *ascebc; int rc; + cdev = ccw_device_probe_console(&raw3270_ccw_driver); + if (IS_ERR(cdev)) + return ERR_CAST(cdev); + rp = kzalloc(sizeof(struct raw3270), GFP_KERNEL | GFP_DMA); ascebc = kzalloc(256, GFP_KERNEL); rc = raw3270_setup_device(cdev, rp, ascebc); --- linux-3.13.0.orig/drivers/s390/char/raw3270.h +++ linux-3.13.0/drivers/s390/char/raw3270.h @@ -190,7 +190,7 @@ wake_up(&raw3270_wait_queue); } -struct raw3270 *raw3270_setup_console(struct ccw_device *cdev); +struct raw3270 *raw3270_setup_console(void); void raw3270_wait_cons_dev(struct raw3270 *); /* Notifier for device addition/removal */ --- linux-3.13.0.orig/drivers/s390/cio/chsc.c +++ linux-3.13.0/drivers/s390/cio/chsc.c @@ -560,18 +560,27 @@ static void chsc_process_event_information(struct chsc_sei *sei, u64 ntsm) { - do { + static int ntsm_unsupported; + + while (true) { memset(sei, 0, sizeof(*sei)); sei->request.length = 0x0010; sei->request.code = 0x000e; - sei->ntsm = ntsm; + if (!ntsm_unsupported) + sei->ntsm = ntsm; if (chsc(sei)) break; if (sei->response.code != 0x0001) { - CIO_CRW_EVENT(2, "chsc: sei failed (rc=%04x)\n", - sei->response.code); + CIO_CRW_EVENT(2, "chsc: sei failed (rc=%04x, ntsm=%llx)\n", + sei->response.code, sei->ntsm); + + if (sei->response.code == 3 && sei->ntsm) { + /* Fallback for old firmware. */ + ntsm_unsupported = 1; + continue; + } break; } @@ -587,7 +596,10 @@ CIO_CRW_EVENT(2, "chsc: unhandled nt: %d\n", sei->nt); break; } - } while (sei->u.nt0_area.flags & 0x80); + + if (!(sei->u.nt0_area.flags & 0x80)) + break; + } } /* --- linux-3.13.0.orig/drivers/s390/cio/device.c +++ linux-3.13.0/drivers/s390/cio/device.c @@ -1610,7 +1610,7 @@ return rc; } -struct ccw_device *ccw_device_probe_console(void) +struct ccw_device *ccw_device_probe_console(struct ccw_driver *drv) { struct io_subchannel_private *io_priv; struct ccw_device *cdev; @@ -1632,6 +1632,7 @@ kfree(io_priv); return cdev; } + cdev->drv = drv; set_io_private(sch, io_priv); ret = ccw_device_console_enable(cdev, sch); if (ret) { --- linux-3.13.0.orig/drivers/s390/crypto/ap_bus.c +++ linux-3.13.0/drivers/s390/crypto/ap_bus.c @@ -44,6 +44,7 @@ #include #include #include +#include #include "ap_bus.h" @@ -71,7 +72,7 @@ MODULE_DESCRIPTION("Adjunct Processor Bus driver, " \ "Copyright IBM Corp. 2006, 2012"); MODULE_LICENSE("GPL"); -MODULE_ALIAS("z90crypt"); +MODULE_ALIAS_CRYPTO("z90crypt"); /* * Module parameter --- linux-3.13.0.orig/drivers/s390/kvm/virtio_ccw.c +++ linux-3.13.0/drivers/s390/kvm/virtio_ccw.c @@ -58,6 +58,7 @@ unsigned long indicators; unsigned long indicators2; struct vq_config_block *config_block; + unsigned int config_ready; }; struct vq_info_block { @@ -504,8 +505,11 @@ if (ret) goto out_free; - memcpy(vcdev->config, config_area, sizeof(vcdev->config)); - memcpy(buf, &vcdev->config[offset], len); + memcpy(vcdev->config, config_area, offset + len); + if (buf) + memcpy(buf, &vcdev->config[offset], len); + if (vcdev->config_ready < offset + len) + vcdev->config_ready = offset + len; out_free: kfree(config_area); @@ -528,6 +532,9 @@ if (!config_area) goto out_free; + /* Make sure we don't overwrite fields. */ + if (vcdev->config_ready < offset) + virtio_ccw_get_config(vdev, 0, NULL, offset); memcpy(&vcdev->config[offset], buf, len); /* Write the config area to the host. */ memcpy(config_area, vcdev->config, sizeof(vcdev->config)); --- linux-3.13.0.orig/drivers/s390/net/qeth_l2_main.c +++ linux-3.13.0/drivers/s390/net/qeth_l2_main.c @@ -898,6 +898,7 @@ qeth_l2_set_offline(cgdev); if (card->dev) { + netif_napi_del(&card->napi); unregister_netdev(card->dev); card->dev = NULL; } @@ -965,6 +966,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-3.13.0.orig/drivers/s390/net/qeth_l3_main.c +++ linux-3.13.0/drivers/s390/net/qeth_l3_main.c @@ -3307,6 +3307,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); } @@ -3333,6 +3334,7 @@ qeth_l3_set_offline(cgdev); if (card->dev) { + netif_napi_del(&card->napi); unregister_netdev(card->dev); card->dev = NULL; } --- linux-3.13.0.orig/drivers/sbus/char/bbc_envctrl.c +++ linux-3.13.0/drivers/sbus/char/bbc_envctrl.c @@ -452,6 +452,9 @@ if (!tp) return; + INIT_LIST_HEAD(&tp->bp_list); + INIT_LIST_HEAD(&tp->glob_list); + tp->client = bbc_i2c_attach(bp, op); if (!tp->client) { kfree(tp); @@ -497,6 +500,9 @@ if (!fp) return; + INIT_LIST_HEAD(&fp->bp_list); + INIT_LIST_HEAD(&fp->glob_list); + fp->client = bbc_i2c_attach(bp, op); if (!fp->client) { kfree(fp); --- linux-3.13.0.orig/drivers/sbus/char/bbc_i2c.c +++ linux-3.13.0/drivers/sbus/char/bbc_i2c.c @@ -301,13 +301,18 @@ if (!bp) return NULL; + INIT_LIST_HEAD(&bp->temps); + INIT_LIST_HEAD(&bp->fans); + bp->i2c_control_regs = of_ioremap(&op->resource[0], 0, 0x2, "bbc_i2c_regs"); if (!bp->i2c_control_regs) goto fail; - bp->i2c_bussel_reg = of_ioremap(&op->resource[1], 0, 0x1, "bbc_i2c_bussel"); - if (!bp->i2c_bussel_reg) - goto fail; + if (op->num_resources == 2) { + bp->i2c_bussel_reg = of_ioremap(&op->resource[1], 0, 0x1, "bbc_i2c_bussel"); + if (!bp->i2c_bussel_reg) + goto fail; + } bp->waiting = 0; init_waitqueue_head(&bp->wq); --- linux-3.13.0.orig/drivers/scsi/3w-9xxx.c +++ linux-3.13.0/drivers/scsi/3w-9xxx.c @@ -149,7 +149,6 @@ static int twa_scsiop_execute_scsi(TW_Device_Extension *tw_dev, int request_id, char *cdb, int use_sg, TW_SG_Entry *sglistarg); static void twa_scsiop_execute_scsi_complete(TW_Device_Extension *tw_dev, int request_id); static char *twa_string_lookup(twa_message_type *table, unsigned int aen_code); -static void twa_unmap_scsi_data(TW_Device_Extension *tw_dev, int request_id); /* Functions */ @@ -226,6 +225,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) { @@ -1352,11 +1362,12 @@ } /* Now complete the io */ + 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); tw_dev->posted_request_count--; - tw_dev->srb[request_id]->scsi_done(tw_dev->srb[request_id]); - twa_unmap_scsi_data(tw_dev, request_id); } /* Check for valid status after each drain */ @@ -1414,26 +1425,6 @@ } } /* End twa_load_sgl() */ -/* This function will perform a pci-dma mapping for a scatter gather list */ -static int twa_map_scsi_sg_data(TW_Device_Extension *tw_dev, int request_id) -{ - int use_sg; - struct scsi_cmnd *cmd = tw_dev->srb[request_id]; - - use_sg = scsi_dma_map(cmd); - if (!use_sg) - return 0; - else if (use_sg < 0) { - TW_PRINTK(tw_dev->host, TW_DRIVER, 0x1c, "Failed to map scatter gather list"); - return 0; - } - - cmd->SCp.phase = TW_PHASE_SGLIST; - cmd->SCp.have_data_in = use_sg; - - return use_sg; -} /* End twa_map_scsi_sg_data() */ - /* This function will poll for a response interrupt of a request */ static int twa_poll_response(TW_Device_Extension *tw_dev, int request_id, int seconds) { @@ -1612,9 +1603,12 @@ (tw_dev->state[i] != TW_S_INITIAL) && (tw_dev->state[i] != TW_S_COMPLETED)) { if (tw_dev->srb[i]) { - tw_dev->srb[i]->result = (DID_RESET << 16); - tw_dev->srb[i]->scsi_done(tw_dev->srb[i]); - twa_unmap_scsi_data(tw_dev, i); + struct scsi_cmnd *cmd = tw_dev->srb[i]; + + cmd->result = (DID_RESET << 16); + if (twa_command_mapped(cmd)) + scsi_dma_unmap(cmd); + cmd->scsi_done(cmd); } } } @@ -1793,21 +1787,20 @@ /* Save the scsi command for use by the ISR */ tw_dev->srb[request_id] = SCpnt; - /* Initialize phase to zero */ - SCpnt->SCp.phase = TW_PHASE_INITIAL; - retval = twa_scsiop_execute_scsi(tw_dev, request_id, NULL, 0, NULL); switch (retval) { case SCSI_MLQUEUE_HOST_BUSY: + if (twa_command_mapped(SCpnt)) + scsi_dma_unmap(SCpnt); twa_free_request_id(tw_dev, request_id); - twa_unmap_scsi_data(tw_dev, request_id); break; case 1: - tw_dev->state[request_id] = TW_S_COMPLETED; - twa_free_request_id(tw_dev, request_id); - twa_unmap_scsi_data(tw_dev, request_id); SCpnt->result = (DID_ERROR << 16); + 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); retval = 0; } out: @@ -1865,8 +1858,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, @@ -1875,8 +1867,8 @@ command_packet->sg_list[0].address = TW_CPU_TO_SGL(tw_dev->generic_buffer_phys[request_id]); command_packet->sg_list[0].length = cpu_to_le32(TW_MIN_SGL_LENGTH); } else { - sg_count = twa_map_scsi_sg_data(tw_dev, request_id); - if (sg_count == 0) + sg_count = scsi_dma_map(srb); + if (sg_count < 0) goto out; scsi_for_each_sg(srb, sg, sg_count, i) { @@ -1939,7 +1931,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) { @@ -1991,15 +1983,6 @@ return(table[index].text); } /* End twa_string_lookup() */ -/* This function will perform a pci-dma unmap */ -static void twa_unmap_scsi_data(TW_Device_Extension *tw_dev, int request_id) -{ - struct scsi_cmnd *cmd = tw_dev->srb[request_id]; - - if (cmd->SCp.phase == TW_PHASE_SGLIST) - scsi_dma_unmap(cmd); -} /* End twa_unmap_scsi_data() */ - /* This function gets called when a disk is coming on-line */ static int twa_slave_configure(struct scsi_device *sdev) { --- linux-3.13.0.orig/drivers/scsi/3w-9xxx.h +++ linux-3.13.0/drivers/scsi/3w-9xxx.h @@ -324,11 +324,6 @@ #define TW_CURRENT_DRIVER_BUILD 0 #define TW_CURRENT_DRIVER_BRANCH 0 -/* Phase defines */ -#define TW_PHASE_INITIAL 0 -#define TW_PHASE_SINGLE 1 -#define TW_PHASE_SGLIST 2 - /* Misc defines */ #define TW_9550SX_DRAIN_COMPLETED 0xFFFF #define TW_SECTOR_SIZE 512 --- linux-3.13.0.orig/drivers/scsi/3w-sas.c +++ linux-3.13.0/drivers/scsi/3w-sas.c @@ -303,26 +303,6 @@ return 0; } /* End twl_post_command_packet() */ -/* This function will perform a pci-dma mapping for a scatter gather list */ -static int twl_map_scsi_sg_data(TW_Device_Extension *tw_dev, int request_id) -{ - int use_sg; - struct scsi_cmnd *cmd = tw_dev->srb[request_id]; - - use_sg = scsi_dma_map(cmd); - if (!use_sg) - return 0; - else if (use_sg < 0) { - TW_PRINTK(tw_dev->host, TW_DRIVER, 0x1, "Failed to map scatter gather list"); - return 0; - } - - cmd->SCp.phase = TW_PHASE_SGLIST; - cmd->SCp.have_data_in = use_sg; - - return use_sg; -} /* End twl_map_scsi_sg_data() */ - /* This function hands scsi cdb's to the firmware */ static int twl_scsiop_execute_scsi(TW_Device_Extension *tw_dev, int request_id, char *cdb, int use_sg, TW_SG_Entry_ISO *sglistarg) { @@ -370,8 +350,8 @@ if (!sglistarg) { /* Map sglist from scsi layer to cmd packet */ if (scsi_sg_count(srb)) { - sg_count = twl_map_scsi_sg_data(tw_dev, request_id); - if (sg_count == 0) + sg_count = scsi_dma_map(srb); + if (sg_count <= 0) goto out; scsi_for_each_sg(srb, sg, sg_count, i) { @@ -1116,15 +1096,6 @@ return retval; } /* End twl_initialize_device_extension() */ -/* This function will perform a pci-dma unmap */ -static void twl_unmap_scsi_data(TW_Device_Extension *tw_dev, int request_id) -{ - struct scsi_cmnd *cmd = tw_dev->srb[request_id]; - - if (cmd->SCp.phase == TW_PHASE_SGLIST) - scsi_dma_unmap(cmd); -} /* End twl_unmap_scsi_data() */ - /* This function will handle attention interrupts */ static int twl_handle_attention_interrupt(TW_Device_Extension *tw_dev) { @@ -1265,11 +1236,11 @@ } /* Now complete the io */ + scsi_dma_unmap(cmd); + cmd->scsi_done(cmd); tw_dev->state[request_id] = TW_S_COMPLETED; twl_free_request_id(tw_dev, request_id); tw_dev->posted_request_count--; - tw_dev->srb[request_id]->scsi_done(tw_dev->srb[request_id]); - twl_unmap_scsi_data(tw_dev, request_id); } /* Check for another response interrupt */ @@ -1414,10 +1385,12 @@ if ((tw_dev->state[i] != TW_S_FINISHED) && (tw_dev->state[i] != TW_S_INITIAL) && (tw_dev->state[i] != TW_S_COMPLETED)) { - if (tw_dev->srb[i]) { - tw_dev->srb[i]->result = (DID_RESET << 16); - tw_dev->srb[i]->scsi_done(tw_dev->srb[i]); - twl_unmap_scsi_data(tw_dev, i); + struct scsi_cmnd *cmd = tw_dev->srb[i]; + + if (cmd) { + cmd->result = (DID_RESET << 16); + scsi_dma_unmap(cmd); + cmd->scsi_done(cmd); } } } @@ -1521,9 +1494,6 @@ /* Save the scsi command for use by the ISR */ tw_dev->srb[request_id] = SCpnt; - /* Initialize phase to zero */ - SCpnt->SCp.phase = TW_PHASE_INITIAL; - retval = twl_scsiop_execute_scsi(tw_dev, request_id, NULL, 0, NULL); if (retval) { tw_dev->state[request_id] = TW_S_COMPLETED; --- linux-3.13.0.orig/drivers/scsi/3w-sas.h +++ linux-3.13.0/drivers/scsi/3w-sas.h @@ -103,10 +103,6 @@ #define TW_CURRENT_DRIVER_BUILD 0 #define TW_CURRENT_DRIVER_BRANCH 0 -/* Phase defines */ -#define TW_PHASE_INITIAL 0 -#define TW_PHASE_SGLIST 2 - /* Misc defines */ #define TW_SECTOR_SIZE 512 #define TW_MAX_UNITS 32 --- linux-3.13.0.orig/drivers/scsi/3w-xxxx.c +++ linux-3.13.0/drivers/scsi/3w-xxxx.c @@ -1284,32 +1284,6 @@ return 0; } /* End tw_initialize_device_extension() */ -static int tw_map_scsi_sg_data(struct pci_dev *pdev, struct scsi_cmnd *cmd) -{ - int use_sg; - - dprintk(KERN_WARNING "3w-xxxx: tw_map_scsi_sg_data()\n"); - - use_sg = scsi_dma_map(cmd); - if (use_sg < 0) { - printk(KERN_WARNING "3w-xxxx: tw_map_scsi_sg_data(): pci_map_sg() failed.\n"); - return 0; - } - - cmd->SCp.phase = TW_PHASE_SGLIST; - cmd->SCp.have_data_in = use_sg; - - return use_sg; -} /* End tw_map_scsi_sg_data() */ - -static void tw_unmap_scsi_data(struct pci_dev *pdev, struct scsi_cmnd *cmd) -{ - dprintk(KERN_WARNING "3w-xxxx: tw_unmap_scsi_data()\n"); - - if (cmd->SCp.phase == TW_PHASE_SGLIST) - scsi_dma_unmap(cmd); -} /* End tw_unmap_scsi_data() */ - /* This function will reset a device extension */ static int tw_reset_device_extension(TW_Device_Extension *tw_dev) { @@ -1332,8 +1306,8 @@ srb = tw_dev->srb[i]; if (srb != NULL) { srb->result = (DID_RESET << 16); - tw_dev->srb[i]->scsi_done(tw_dev->srb[i]); - tw_unmap_scsi_data(tw_dev->tw_pci_dev, tw_dev->srb[i]); + scsi_dma_unmap(srb); + srb->scsi_done(srb); } } } @@ -1780,8 +1754,8 @@ command_packet->byte8.io.lba = lba; command_packet->byte6.block_count = num_sectors; - use_sg = tw_map_scsi_sg_data(tw_dev->tw_pci_dev, tw_dev->srb[request_id]); - if (!use_sg) + use_sg = scsi_dma_map(srb); + if (use_sg <= 0) return 1; scsi_for_each_sg(tw_dev->srb[request_id], sg, use_sg, i) { @@ -1968,9 +1942,6 @@ /* Save the scsi command for use by the ISR */ tw_dev->srb[request_id] = SCpnt; - /* Initialize phase to zero */ - SCpnt->SCp.phase = TW_PHASE_INITIAL; - switch (*command) { case READ_10: case READ_6: @@ -2198,12 +2169,11 @@ /* Now complete the io */ if ((error != TW_ISR_DONT_COMPLETE)) { + scsi_dma_unmap(tw_dev->srb[request_id]); + tw_dev->srb[request_id]->scsi_done(tw_dev->srb[request_id]); tw_dev->state[request_id] = TW_S_COMPLETED; tw_state_request_finish(tw_dev, request_id); tw_dev->posted_request_count--; - tw_dev->srb[request_id]->scsi_done(tw_dev->srb[request_id]); - - tw_unmap_scsi_data(tw_dev->tw_pci_dev, tw_dev->srb[request_id]); } } --- linux-3.13.0.orig/drivers/scsi/3w-xxxx.h +++ linux-3.13.0/drivers/scsi/3w-xxxx.h @@ -195,11 +195,6 @@ #define TW_AEN_SMART_FAIL 0x000F #define TW_AEN_SBUF_FAIL 0x0024 -/* Phase defines */ -#define TW_PHASE_INITIAL 0 -#define TW_PHASE_SINGLE 1 -#define TW_PHASE_SGLIST 2 - /* Misc defines */ #define TW_ALIGNMENT_6000 64 /* 64 bytes */ #define TW_ALIGNMENT_7000 4 /* 4 bytes */ --- linux-3.13.0.orig/drivers/scsi/NCR5380.c +++ linux-3.13.0/drivers/scsi/NCR5380.c @@ -2655,14 +2655,14 @@ * * Purpose : abort a command * - * Inputs : cmd - the Scsi_Cmnd to abort, code - code to set the - * host byte of the result field to, if zero DID_ABORTED is + * Inputs : cmd - the Scsi_Cmnd to abort, code - code to set the + * host byte of the result field to, if zero DID_ABORTED is * used. * - * Returns : 0 - success, -1 on failure. + * Returns : SUCCESS - success, FAILED on failure. * - * XXX - there is no way to abort the command that is currently - * connected, you have to wait for it to complete. If this is + * XXX - there is no way to abort the command that is currently + * connected, you have to wait for it to complete. If this is * a problem, we could implement longjmp() / setjmp(), setjmp() * called where the loop started in NCR5380_main(). * @@ -2712,7 +2712,7 @@ * aborted flag and get back into our main loop. */ - return 0; + return SUCCESS; } #endif --- linux-3.13.0.orig/drivers/scsi/aacraid/commctrl.c +++ linux-3.13.0/drivers/scsi/aacraid/commctrl.c @@ -63,7 +63,7 @@ struct fib *fibptr; struct hw_fib * hw_fib = (struct hw_fib *)0; dma_addr_t hw_fib_pa = (dma_addr_t)0LL; - unsigned size; + unsigned int size, osize; int retval; if (dev->in_reset) { @@ -87,7 +87,8 @@ * will not overrun the buffer when we copy the memory. Return * an error if we would. */ - size = le16_to_cpu(kfib->header.Size) + sizeof(struct aac_fibhdr); + osize = size = le16_to_cpu(kfib->header.Size) + + sizeof(struct aac_fibhdr); if (size < le16_to_cpu(kfib->header.SenderSize)) size = le16_to_cpu(kfib->header.SenderSize); if (size > dev->max_fib_size) { @@ -118,6 +119,14 @@ goto cleanup; } + /* Sanity check the second copy */ + if ((osize != le16_to_cpu(kfib->header.Size) + + sizeof(struct aac_fibhdr)) + || (size < le16_to_cpu(kfib->header.SenderSize))) { + retval = -EINVAL; + goto cleanup; + } + if (kfib->header.Command == cpu_to_le16(TakeABreakPt)) { aac_adapter_interrupt(dev); /* --- linux-3.13.0.orig/drivers/scsi/aacraid/commsup.c +++ linux-3.13.0/drivers/scsi/aacraid/commsup.c @@ -83,9 +83,12 @@ 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; } --- linux-3.13.0.orig/drivers/scsi/aha1740.c +++ linux-3.13.0/drivers/scsi/aha1740.c @@ -531,7 +531,7 @@ * quiet as possible... */ - return 0; + return SUCCESS; } static struct scsi_host_template aha1740_template = { --- linux-3.13.0.orig/drivers/scsi/atari_NCR5380.c +++ linux-3.13.0/drivers/scsi/atari_NCR5380.c @@ -2613,7 +2613,7 @@ * host byte of the result field to, if zero DID_ABORTED is * used. * - * Returns : 0 - success, -1 on failure. + * Returns : SUCCESS - success, FAILED on failure. * * XXX - there is no way to abort the command that is currently * connected, you have to wait for it to complete. If this is --- linux-3.13.0.orig/drivers/scsi/be2iscsi/be.h +++ linux-3.13.0/drivers/scsi/be2iscsi/be.h @@ -83,9 +83,20 @@ /*ISCSI */ +struct be_aic_obj { /* Adaptive interrupt coalescing (AIC) info */ + bool enable; + u32 min_eqd; /* in usecs */ + u32 max_eqd; /* in usecs */ + u32 prev_eqd; /* in usecs */ + u32 et_eqd; /* configured val when aic is off */ + ulong jiffs; + u64 eq_prev; /* Used to calculate eqe */ +}; + struct be_eq_obj { bool todo_mcc_cq; bool todo_cq; + u32 cq_count; struct be_queue_info q; struct beiscsi_hba *phba; struct be_queue_info *cq; @@ -98,6 +109,14 @@ struct be_queue_info cq; }; +struct beiscsi_mcc_tag_state { +#define MCC_TAG_STATE_COMPLETED 0x00 +#define MCC_TAG_STATE_RUNNING 0x01 +#define MCC_TAG_STATE_TIMEOUT 0x02 + uint8_t tag_state; + struct be_dma_mem tag_mem_state; +}; + struct be_ctrl_info { u8 __iomem *csr; u8 __iomem *db; /* Door Bell */ @@ -122,6 +141,8 @@ unsigned short mcc_alloc_index; unsigned short mcc_free_index; unsigned int mcc_tag_available; + + struct beiscsi_mcc_tag_state ptag_state[MAX_MCC_CMD + 1]; }; #include "be_cmds.h" @@ -129,6 +150,7 @@ #define PAGE_SHIFT_4K 12 #define PAGE_SIZE_4K (1 << PAGE_SHIFT_4K) #define mcc_timeout 120000 /* 12s timeout */ +#define BEISCSI_LOGOUT_SYNC_DELAY 250 /* Returns number of pages spanned by the data starting at the given addr */ #define PAGES_4K_SPANNED(_address, size) \ --- linux-3.13.0.orig/drivers/scsi/be2iscsi/be_cmds.c +++ linux-3.13.0/drivers/scsi/be2iscsi/be_cmds.c @@ -138,7 +138,7 @@ * @phba: Driver private structure * @tag: Tag for the MBX Command * @wrb: the WRB used for the MBX Command - * @cmd_hdr: IOCTL Hdr for the MBX Cmd + * @mbx_cmd_mem: ptr to memory allocated for MBX Cmd * * Waits for MBX completion with the passed TAG. * @@ -148,21 +148,26 @@ **/ int beiscsi_mccq_compl(struct beiscsi_hba *phba, uint32_t tag, struct be_mcc_wrb **wrb, - void *cmd_hdr) + struct be_dma_mem *mbx_cmd_mem) { int rc = 0; uint32_t mcc_tag_response; uint16_t status = 0, addl_status = 0, wrb_num = 0; struct be_mcc_wrb *temp_wrb; - struct be_cmd_req_hdr *ioctl_hdr; - struct be_cmd_resp_hdr *ioctl_resp_hdr; + struct be_cmd_req_hdr *mbx_hdr; + struct be_cmd_resp_hdr *mbx_resp_hdr; struct be_queue_info *mccq = &phba->ctrl.mcc_obj.q; if (beiscsi_error(phba)) { free_mcc_tag(&phba->ctrl, tag); - return -EIO; + return -EPERM; } + /* Set MBX Tag state to Active */ + spin_lock(&phba->ctrl.mbox_lock); + phba->ctrl.ptag_state[tag].tag_state = MCC_TAG_STATE_RUNNING; + spin_unlock(&phba->ctrl.mbox_lock); + /* wait for the mccq completion */ rc = wait_event_interruptible_timeout( phba->ctrl.mcc_wait[tag], @@ -171,56 +176,71 @@ BEISCSI_HOST_MBX_TIMEOUT)); if (rc <= 0) { + struct be_dma_mem *tag_mem; + /* Set MBX Tag state to timeout */ + spin_lock(&phba->ctrl.mbox_lock); + phba->ctrl.ptag_state[tag].tag_state = MCC_TAG_STATE_TIMEOUT; + spin_unlock(&phba->ctrl.mbox_lock); + + /* Store resource addr to be freed later */ + tag_mem = &phba->ctrl.ptag_state[tag].tag_mem_state; + if (mbx_cmd_mem) { + tag_mem->size = mbx_cmd_mem->size; + tag_mem->va = mbx_cmd_mem->va; + tag_mem->dma = mbx_cmd_mem->dma; + } else + tag_mem->size = 0; + beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT | BEISCSI_LOG_EH | BEISCSI_LOG_CONFIG, "BC_%d : MBX Cmd Completion timed out\n"); - rc = -EBUSY; - - /* decrement the mccq used count */ - atomic_dec(&phba->ctrl.mcc_obj.q.used); - - goto release_mcc_tag; - } else + return -EBUSY; + } else { rc = 0; + /* Set MBX Tag state to completed */ + spin_lock(&phba->ctrl.mbox_lock); + phba->ctrl.ptag_state[tag].tag_state = MCC_TAG_STATE_COMPLETED; + spin_unlock(&phba->ctrl.mbox_lock); + } mcc_tag_response = phba->ctrl.mcc_numtag[tag]; status = (mcc_tag_response & CQE_STATUS_MASK); addl_status = ((mcc_tag_response & CQE_STATUS_ADDL_MASK) >> CQE_STATUS_ADDL_SHIFT); - if (cmd_hdr) { - ioctl_hdr = (struct be_cmd_req_hdr *)cmd_hdr; + if (mbx_cmd_mem) { + mbx_hdr = (struct be_cmd_req_hdr *)mbx_cmd_mem->va; } else { wrb_num = (mcc_tag_response & CQE_STATUS_WRB_MASK) >> CQE_STATUS_WRB_SHIFT; temp_wrb = (struct be_mcc_wrb *)queue_get_wrb(mccq, wrb_num); - ioctl_hdr = embedded_payload(temp_wrb); + mbx_hdr = embedded_payload(temp_wrb); if (wrb) *wrb = temp_wrb; } if (status || addl_status) { - beiscsi_log(phba, KERN_ERR, + beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_INIT | BEISCSI_LOG_EH | BEISCSI_LOG_CONFIG, "BC_%d : MBX Cmd Failed for " "Subsys : %d Opcode : %d with " "Status : %d and Extd_Status : %d\n", - ioctl_hdr->subsystem, - ioctl_hdr->opcode, + mbx_hdr->subsystem, + mbx_hdr->opcode, status, addl_status); if (status == MCC_STATUS_INSUFFICIENT_BUFFER) { - ioctl_resp_hdr = (struct be_cmd_resp_hdr *) ioctl_hdr; + mbx_resp_hdr = (struct be_cmd_resp_hdr *) mbx_hdr; beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_INIT | BEISCSI_LOG_EH | BEISCSI_LOG_CONFIG, "BC_%d : Insufficent Buffer Error " "Resp_Len : %d Actual_Resp_Len : %d\n", - ioctl_resp_hdr->response_length, - ioctl_resp_hdr->actual_resp_len); + mbx_resp_hdr->response_length, + mbx_resp_hdr->actual_resp_len); rc = -EAGAIN; goto release_mcc_tag; @@ -255,6 +275,19 @@ ASYNC_EVENT_CODE_LINK_STATE); } +static bool is_iscsi_evt(u32 trailer) +{ + return ((trailer >> ASYNC_TRAILER_EVENT_CODE_SHIFT) & + ASYNC_TRAILER_EVENT_CODE_MASK) == + ASYNC_EVENT_CODE_ISCSI; +} + +static int iscsi_evt_type(u32 trailer) +{ + return (trailer >> ASYNC_TRAILER_EVENT_TYPE_SHIFT) & + ASYNC_TRAILER_EVENT_TYPE_MASK; +} + static inline bool be_mcc_compl_is_new(struct be_mcc_compl *compl) { if (compl->flags != 0) { @@ -319,6 +352,7 @@ int be_mcc_compl_process_isr(struct be_ctrl_info *ctrl, struct be_mcc_compl *compl) { + struct beiscsi_hba *phba = pci_get_drvdata(ctrl->pdev); u16 compl_status, extd_status; unsigned short tag; @@ -338,7 +372,32 @@ ctrl->mcc_numtag[tag] |= (compl->tag0 & 0x00FF0000); ctrl->mcc_numtag[tag] |= (extd_status & 0x000000FF) << 8; ctrl->mcc_numtag[tag] |= (compl_status & 0x000000FF); - wake_up_interruptible(&ctrl->mcc_wait[tag]); + + if (ctrl->ptag_state[tag].tag_state == MCC_TAG_STATE_RUNNING) { + wake_up_interruptible(&ctrl->mcc_wait[tag]); + } else if (ctrl->ptag_state[tag].tag_state == MCC_TAG_STATE_TIMEOUT) { + struct be_dma_mem *tag_mem; + tag_mem = &ctrl->ptag_state[tag].tag_mem_state; + + beiscsi_log(phba, KERN_WARNING, + BEISCSI_LOG_MBOX | BEISCSI_LOG_INIT | + BEISCSI_LOG_CONFIG, + "BC_%d : MBX Completion for timeout Command " + "from FW\n"); + /* Check if memory needs to be freed */ + if (tag_mem->size) + pci_free_consistent(ctrl->pdev, tag_mem->size, + tag_mem->va, tag_mem->dma); + + /* Change tag state */ + spin_lock(&phba->ctrl.mbox_lock); + ctrl->ptag_state[tag].tag_state = MCC_TAG_STATE_COMPLETED; + spin_unlock(&phba->ctrl.mbox_lock); + + /* Free MCC Tag */ + free_mcc_tag(ctrl, tag); + } + return 0; } @@ -354,8 +413,23 @@ return NULL; } -static void be2iscsi_fail_session(struct iscsi_cls_session *cls_session) +/** + * be2iscsi_fail_session(): Closing session with appropriate error + * @cls_session: ptr to session + * + * Depending on adapter state appropriate error flag is passed. + **/ +void be2iscsi_fail_session(struct iscsi_cls_session *cls_session) { + struct Scsi_Host *shost = iscsi_session_to_shost(cls_session); + struct beiscsi_hba *phba = iscsi_host_priv(shost); + uint32_t iscsi_err_flag; + + if (phba->state & BE_ADAPTER_STATE_SHUTDOWN) + iscsi_err_flag = ISCSI_ERR_INVALID_HOST; + else + iscsi_err_flag = ISCSI_ERR_CONN_FAILED; + iscsi_session_failure(cls_session->dd_data, ISCSI_ERR_CONN_FAILED); } @@ -377,7 +451,7 @@ } else if ((evt->port_link_status & ASYNC_EVENT_LINK_UP) || ((evt->port_link_status & ASYNC_EVENT_LOGICAL) && (evt->port_fault == BEISCSI_PHY_LINK_FAULT_NONE))) { - phba->state = BE_ADAPTER_LINK_UP; + phba->state = BE_ADAPTER_LINK_UP | BE_ADAPTER_CHECK_BOOT; beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG | BEISCSI_LOG_INIT, @@ -386,18 +460,6 @@ } } -static void beiscsi_cq_notify(struct beiscsi_hba *phba, u16 qid, bool arm, - u16 num_popped) -{ - u32 val = 0; - val |= qid & DB_CQ_RING_ID_MASK; - if (arm) - val |= 1 << DB_CQ_REARM_SHIFT; - val |= num_popped << DB_CQ_NUM_POPPED_SHIFT; - iowrite32(val, phba->db_va + DB_CQ_OFFSET); -} - - int beiscsi_process_mcc(struct beiscsi_hba *phba) { struct be_mcc_compl *compl; @@ -412,7 +474,28 @@ /* Interpret compl as a async link evt */ beiscsi_async_link_state_process(phba, (struct be_async_event_link_state *) compl); - else + else if (is_iscsi_evt(compl->flags)) { + switch (iscsi_evt_type(compl->flags)) { + case ASYNC_EVENT_NEW_ISCSI_TGT_DISC: + case ASYNC_EVENT_NEW_ISCSI_CONN: + case ASYNC_EVENT_NEW_TCP_CONN: + phba->state |= BE_ADAPTER_CHECK_BOOT; + beiscsi_log(phba, KERN_ERR, + BEISCSI_LOG_CONFIG | + BEISCSI_LOG_MBOX, + "BC_%d : Async iscsi Event," + " flags handled = 0x%08x\n", + compl->flags); + break; + default: + beiscsi_log(phba, KERN_ERR, + BEISCSI_LOG_CONFIG | + BEISCSI_LOG_MBOX, + "BC_%d : Unsupported Async" + " Event, flags = 0x%08x\n", + compl->flags); + } + } else beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG | BEISCSI_LOG_MBOX, @@ -428,7 +511,7 @@ } if (num) - beiscsi_cq_notify(phba, phba->ctrl.mcc_obj.cq.id, true, num); + hwi_ring_cq_db(phba, phba->ctrl.mcc_obj.cq.id, num, 1, 0); spin_unlock_bh(&phba->ctrl.mcc_cq_lock); return status; --- linux-3.13.0.orig/drivers/scsi/be2iscsi/be_cmds.h +++ linux-3.13.0/drivers/scsi/be2iscsi/be_cmds.h @@ -26,9 +26,9 @@ * The commands are serviced by the ARM processor in the OneConnect's MPU. */ struct be_sge { - u32 pa_lo; - u32 pa_hi; - u32 len; + __le32 pa_lo; + __le32 pa_hi; + __le32 len; }; #define MCC_WRB_SGE_CNT_SHIFT 3 /* bits 3 - 7 of dword 0 */ @@ -71,6 +71,7 @@ #define BEISCSI_FW_MBX_TIMEOUT 100 /* MBOX Command VER */ +#define MBX_CMD_VER1 0x01 #define MBX_CMD_VER2 0x02 struct be_mcc_compl { @@ -103,7 +104,7 @@ /********** MCC door bell ************/ #define DB_MCCQ_OFFSET 0x140 -#define DB_MCCQ_RING_ID_MASK 0x7FF /* bits 0 - 10 */ +#define DB_MCCQ_RING_ID_MASK 0xFFFF /* bits 0 - 15 */ /* Number of entries posted */ #define DB_MCCQ_NUM_POSTED_SHIFT 16 /* bits 16 - 29 */ @@ -117,6 +118,14 @@ #define ASYNC_TRAILER_EVENT_CODE_SHIFT 8 /* bits 8 - 15 */ #define ASYNC_TRAILER_EVENT_CODE_MASK 0xFF #define ASYNC_EVENT_CODE_LINK_STATE 0x1 +#define ASYNC_EVENT_CODE_ISCSI 0x4 + +#define ASYNC_TRAILER_EVENT_TYPE_SHIFT 16 /* bits 16 - 23 */ +#define ASYNC_TRAILER_EVENT_TYPE_MASK 0xF +#define ASYNC_EVENT_NEW_ISCSI_TGT_DISC 0x4 +#define ASYNC_EVENT_NEW_ISCSI_CONN 0x5 +#define ASYNC_EVENT_NEW_TCP_CONN 0x7 + struct be_async_event_trailer { u32 code; }; @@ -271,6 +280,12 @@ u16 rsvd0; /* sword */ } __packed; +struct be_set_eqd { + u32 eq_id; + u32 phase; + u32 delay_multiplier; +} __packed; + struct mgmt_chap_format { u32 flags; u8 intr_chap_name[256]; @@ -617,12 +632,12 @@ /******************** Modify EQ Delay *******************/ struct be_cmd_req_modify_eq_delay { struct be_cmd_req_hdr hdr; - u32 num_eq; + __le32 num_eq; struct { - u32 eq_id; - u32 phase; - u32 delay_multiplier; - } delay[8]; + __le32 eq_id; + __le32 phase; + __le32 delay_multiplier; + } delay[MAX_CPUS]; } __packed; /******************** Get MAC ADDR *******************/ @@ -708,8 +723,11 @@ void free_mcc_tag(struct be_ctrl_info *ctrl, unsigned int tag); +int be_cmd_modify_eq_delay(struct beiscsi_hba *phba, struct be_set_eqd *, + int num); int beiscsi_mccq_compl(struct beiscsi_hba *phba, - uint32_t tag, struct be_mcc_wrb **wrb, void *cmd_va); + uint32_t tag, struct be_mcc_wrb **wrb, + struct be_dma_mem *mbx_cmd_mem); /*ISCSI Functuions */ int be_cmd_fw_initialize(struct be_ctrl_info *ctrl); int be_cmd_fw_uninit(struct be_ctrl_info *ctrl); @@ -1004,6 +1022,26 @@ u8 rsvd0[3]; } __packed; +struct tcp_connect_and_offload_in_v1 { + struct be_cmd_req_hdr hdr; + struct ip_addr_format ip_address; + u16 tcp_port; + u16 cid; + u16 cq_id; + u16 defq_id; + struct phys_addr dataout_template_pa; + u16 hdr_ring_id; + u16 data_ring_id; + u8 do_offload; + u8 ifd_state; + u8 rsvd0[2]; + u16 tcp_window_size; + u8 tcp_window_scale_count; + u8 rsvd1; + u32 tcp_mss:24; + u8 rsvd2; +} __packed; + struct tcp_connect_and_offload_out { struct be_cmd_resp_hdr hdr; u32 connection_handle; @@ -1017,8 +1055,8 @@ int *users_final_status; } __packed; -#define DB_DEF_PDU_RING_ID_MASK 0x3FF /* bits 0 - 9 */ -#define DB_DEF_PDU_CQPROC_MASK 0x3FFF /* bits 0 - 9 */ +#define DB_DEF_PDU_RING_ID_MASK 0x3FFF /* bits 0 - 13 */ +#define DB_DEF_PDU_CQPROC_MASK 0x3FFF /* bits 16 - 29 */ #define DB_DEF_PDU_REARM_SHIFT 14 #define DB_DEF_PDU_EVENT_SHIFT 15 #define DB_DEF_PDU_CQPROC_SHIFT 16 @@ -1317,4 +1355,5 @@ void be_cmd_hdr_prepare(struct be_cmd_req_hdr *req_hdr, u8 subsystem, u8 opcode, int cmd_len); +void be2iscsi_fail_session(struct iscsi_cls_session *cls_session); #endif /* !BEISCSI_CMDS_H */ --- linux-3.13.0.orig/drivers/scsi/be2iscsi/be_iscsi.c +++ linux-3.13.0/drivers/scsi/be2iscsi/be_iscsi.c @@ -541,10 +541,8 @@ ip_type = BE2_IPV6; len = mgmt_get_if_info(phba, ip_type, &if_info); - if (len) { - kfree(if_info); + if (len) return len; - } switch (param) { case ISCSI_NET_PARAM_IPV4_ADDR: @@ -569,7 +567,7 @@ break; case ISCSI_NET_PARAM_VLAN_ID: if (if_info->vlan_priority == BEISCSI_VLAN_DISABLE) - return -EINVAL; + len = -EINVAL; else len = sprintf(buf, "%d\n", (if_info->vlan_priority & @@ -577,7 +575,7 @@ break; case ISCSI_NET_PARAM_VLAN_PRIORITY: if (if_info->vlan_priority == BEISCSI_VLAN_DISABLE) - return -EINVAL; + len = -EINVAL; else len = sprintf(buf, "%d\n", ((if_info->vlan_priority >> 13) & @@ -1108,7 +1106,7 @@ struct beiscsi_hba *phba = beiscsi_ep->phba; struct tcp_connect_and_offload_out *ptcpcnct_out; struct be_dma_mem nonemb_cmd; - unsigned int tag; + unsigned int tag, req_memsize; int ret = -ENOMEM; beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_CONFIG, @@ -1129,8 +1127,14 @@ (beiscsi_ep->ep_cid)] = ep; beiscsi_ep->cid_vld = 0; + + if (is_chip_be2_be3r(phba)) + req_memsize = sizeof(struct tcp_connect_and_offload_in); + else + req_memsize = sizeof(struct tcp_connect_and_offload_in_v1); + nonemb_cmd.va = pci_alloc_consistent(phba->ctrl.pdev, - sizeof(struct tcp_connect_and_offload_in), + req_memsize, &nonemb_cmd.dma); if (nonemb_cmd.va == NULL) { @@ -1141,7 +1145,7 @@ beiscsi_free_ep(beiscsi_ep); return -ENOMEM; } - nonemb_cmd.size = sizeof(struct tcp_connect_and_offload_in); + nonemb_cmd.size = req_memsize; memset(nonemb_cmd.va, 0, nonemb_cmd.size); tag = mgmt_open_connection(phba, dst_addr, beiscsi_ep, &nonemb_cmd); if (tag <= 0) { @@ -1155,16 +1159,18 @@ return -EAGAIN; } - ret = beiscsi_mccq_compl(phba, tag, NULL, nonemb_cmd.va); + ret = beiscsi_mccq_compl(phba, tag, NULL, &nonemb_cmd); if (ret) { beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG | BEISCSI_LOG_MBOX, "BS_%d : mgmt_open_connection Failed"); - pci_free_consistent(phba->ctrl.pdev, nonemb_cmd.size, - nonemb_cmd.va, nonemb_cmd.dma); + if (ret != -EBUSY) + pci_free_consistent(phba->ctrl.pdev, nonemb_cmd.size, + nonemb_cmd.va, nonemb_cmd.dma); + beiscsi_free_ep(beiscsi_ep); - return -EBUSY; + return ret; } ptcpcnct_out = (struct tcp_connect_and_offload_out *)nonemb_cmd.va; @@ -1268,6 +1274,31 @@ } /** + * beiscsi_flush_cq()- Flush the CQ created. + * @phba: ptr device priv structure. + * + * Before the connection resource are freed flush + * all the CQ enteries + **/ +static void beiscsi_flush_cq(struct beiscsi_hba *phba) +{ + uint16_t i; + struct be_eq_obj *pbe_eq; + struct hwi_controller *phwi_ctrlr; + struct hwi_context_memory *phwi_context; + + phwi_ctrlr = phba->phwi_ctrlr; + phwi_context = phwi_ctrlr->phwi_ctxt; + + for (i = 0; i < phba->num_cpus; i++) { + pbe_eq = &phwi_context->be_eq[i]; + blk_iopoll_disable(&pbe_eq->iopoll); + beiscsi_process_cq(pbe_eq); + blk_iopoll_enable(&pbe_eq->iopoll); + } +} + +/** * beiscsi_close_conn - Upload the connection * @ep: The iscsi endpoint * @flag: The type of connection closure @@ -1288,6 +1319,10 @@ } ret = beiscsi_mccq_compl(phba, tag, NULL, NULL); + + /* Flush the CQ entries */ + beiscsi_flush_cq(phba); + return ret; } @@ -1361,6 +1396,7 @@ beiscsi_mccq_compl(phba, tag, NULL, NULL); beiscsi_close_conn(beiscsi_ep, tcp_upload_flag); free_ep: + msleep(BEISCSI_LOGOUT_SYNC_DELAY); beiscsi_free_ep(beiscsi_ep); beiscsi_unbind_conn_to_cid(phba, beiscsi_ep->ep_cid); iscsi_destroy_endpoint(beiscsi_ep->openiscsi_ep); --- linux-3.13.0.orig/drivers/scsi/be2iscsi/be_main.c +++ linux-3.13.0/drivers/scsi/be2iscsi/be_main.c @@ -228,6 +228,7 @@ struct invalidate_command_table *inv_tbl; struct be_dma_mem nonemb_cmd; unsigned int cid, tag, num_invalidate; + int rc; cls_session = starget_to_session(scsi_target(sc->device)); session = cls_session->dd_data; @@ -285,9 +286,11 @@ return FAILED; } - beiscsi_mccq_compl(phba, tag, NULL, nonemb_cmd.va); - pci_free_consistent(phba->ctrl.pdev, nonemb_cmd.size, - nonemb_cmd.va, nonemb_cmd.dma); + rc = beiscsi_mccq_compl(phba, tag, NULL, &nonemb_cmd); + if (rc != -EBUSY) + pci_free_consistent(phba->ctrl.pdev, nonemb_cmd.size, + nonemb_cmd.va, nonemb_cmd.dma); + return iscsi_eh_abort(sc); } @@ -303,6 +306,7 @@ struct invalidate_command_table *inv_tbl; struct be_dma_mem nonemb_cmd; unsigned int cid, tag, i, num_invalidate; + int rc; /* invalidate iocbs */ cls_session = starget_to_session(scsi_target(sc->device)); @@ -363,9 +367,10 @@ return FAILED; } - beiscsi_mccq_compl(phba, tag, NULL, nonemb_cmd.va); - pci_free_consistent(phba->ctrl.pdev, nonemb_cmd.size, - nonemb_cmd.va, nonemb_cmd.dma); + rc = beiscsi_mccq_compl(phba, tag, NULL, &nonemb_cmd); + if (rc != -EBUSY) + pci_free_consistent(phba->ctrl.pdev, nonemb_cmd.size, + nonemb_cmd.va, nonemb_cmd.dma); return iscsi_eh_device_reset(sc); } @@ -581,7 +586,6 @@ "beiscsi_hba_alloc - iscsi_host_alloc failed\n"); return NULL; } - shost->dma_boundary = pcidev->dma_mask; shost->max_id = BE2_MAX_SESSIONS; shost->max_channel = 0; shost->max_cmd_len = BEISCSI_MAX_CMD_LEN; @@ -594,15 +598,7 @@ pci_set_drvdata(pcidev, phba); phba->interface_handle = 0xFFFFFFFF; - if (iscsi_host_add(shost, &phba->pcidev->dev)) - goto free_devices; - return phba; - -free_devices: - pci_dev_put(phba->pcidev); - iscsi_host_free(phba->shost); - return NULL; } static void beiscsi_unmap_pci_function(struct beiscsi_hba *phba) @@ -674,8 +670,19 @@ } pci_set_master(pcidev); - if (pci_set_consistent_dma_mask(pcidev, DMA_BIT_MASK(64))) { - ret = pci_set_consistent_dma_mask(pcidev, DMA_BIT_MASK(32)); + ret = pci_set_dma_mask(pcidev, DMA_BIT_MASK(64)); + if (ret) { + ret = pci_set_dma_mask(pcidev, DMA_BIT_MASK(32)); + if (ret) { + dev_err(&pcidev->dev, "Could not set PCI DMA Mask\n"); + pci_disable_device(pcidev); + return ret; + } else { + ret = pci_set_consistent_dma_mask(pcidev, + DMA_BIT_MASK(32)); + } + } else { + ret = pci_set_consistent_dma_mask(pcidev, DMA_BIT_MASK(64)); if (ret) { dev_err(&pcidev->dev, "Could not set PCI DMA Mask\n"); pci_disable_device(pcidev); @@ -804,14 +811,23 @@ unsigned char rearm, unsigned char event) { u32 val = 0; - val |= id & DB_EQ_RING_ID_MASK; + if (rearm) val |= 1 << DB_EQ_REARM_SHIFT; if (clr_interrupt) val |= 1 << DB_EQ_CLR_SHIFT; if (event) val |= 1 << DB_EQ_EVNT_SHIFT; + val |= num_processed << DB_EQ_NUM_POPPED_SHIFT; + /* Setting lower order EQ_ID Bits */ + val |= (id & DB_EQ_RING_ID_LOW_MASK); + + /* Setting Higher order EQ_ID Bits */ + val |= (((id >> DB_EQ_HIGH_FEILD_SHIFT) & + DB_EQ_RING_ID_HIGH_MASK) + << DB_EQ_HIGH_SET_SHIFT); + iowrite32(val, phba->db_va + DB_EQ_OFFSET); } @@ -873,7 +889,6 @@ struct be_queue_info *cq; unsigned int num_eq_processed; struct be_eq_obj *pbe_eq; - unsigned long flags; pbe_eq = dev_id; eq = &pbe_eq->q; @@ -882,31 +897,15 @@ phba = pbe_eq->phba; num_eq_processed = 0; - if (blk_iopoll_enabled) { - while (eqe->dw[offsetof(struct amap_eq_entry, valid) / 32] - & EQE_VALID_MASK) { - if (!blk_iopoll_sched_prep(&pbe_eq->iopoll)) - blk_iopoll_sched(&pbe_eq->iopoll); - - AMAP_SET_BITS(struct amap_eq_entry, valid, eqe, 0); - queue_tail_inc(eq); - eqe = queue_tail_node(eq); - num_eq_processed++; - } - } else { - while (eqe->dw[offsetof(struct amap_eq_entry, valid) / 32] - & EQE_VALID_MASK) { - spin_lock_irqsave(&phba->isr_lock, flags); - pbe_eq->todo_cq = true; - spin_unlock_irqrestore(&phba->isr_lock, flags); - AMAP_SET_BITS(struct amap_eq_entry, valid, eqe, 0); - queue_tail_inc(eq); - eqe = queue_tail_node(eq); - num_eq_processed++; - } + while (eqe->dw[offsetof(struct amap_eq_entry, valid) / 32] + & EQE_VALID_MASK) { + if (!blk_iopoll_sched_prep(&pbe_eq->iopoll)) + blk_iopoll_sched(&pbe_eq->iopoll); - if (pbe_eq->todo_cq) - queue_work(phba->wq, &pbe_eq->work_cqs); + AMAP_SET_BITS(struct amap_eq_entry, valid, eqe, 0); + queue_tail_inc(eq); + eqe = queue_tail_node(eq); + num_eq_processed++; } if (num_eq_processed) @@ -927,7 +926,6 @@ struct hwi_context_memory *phwi_context; struct be_eq_entry *eqe = NULL; struct be_queue_info *eq; - struct be_queue_info *cq; struct be_queue_info *mcc; unsigned long flags, index; unsigned int num_mcceq_processed, num_ioeq_processed; @@ -953,72 +951,40 @@ num_ioeq_processed = 0; num_mcceq_processed = 0; - if (blk_iopoll_enabled) { - while (eqe->dw[offsetof(struct amap_eq_entry, valid) / 32] - & EQE_VALID_MASK) { - if (((eqe->dw[offsetof(struct amap_eq_entry, - resource_id) / 32] & - EQE_RESID_MASK) >> 16) == mcc->id) { - spin_lock_irqsave(&phba->isr_lock, flags); - pbe_eq->todo_mcc_cq = true; - spin_unlock_irqrestore(&phba->isr_lock, flags); - num_mcceq_processed++; - } else { - if (!blk_iopoll_sched_prep(&pbe_eq->iopoll)) - blk_iopoll_sched(&pbe_eq->iopoll); - num_ioeq_processed++; - } - AMAP_SET_BITS(struct amap_eq_entry, valid, eqe, 0); - queue_tail_inc(eq); - eqe = queue_tail_node(eq); - } - if (num_ioeq_processed || num_mcceq_processed) { - if (pbe_eq->todo_mcc_cq) - queue_work(phba->wq, &pbe_eq->work_cqs); - - if ((num_mcceq_processed) && (!num_ioeq_processed)) - hwi_ring_eq_db(phba, eq->id, 0, - (num_ioeq_processed + - num_mcceq_processed) , 1, 1); - else - hwi_ring_eq_db(phba, eq->id, 0, - (num_ioeq_processed + - num_mcceq_processed), 0, 1); - - return IRQ_HANDLED; - } else - return IRQ_NONE; - } else { - cq = &phwi_context->be_cq[0]; - while (eqe->dw[offsetof(struct amap_eq_entry, valid) / 32] - & EQE_VALID_MASK) { - - if (((eqe->dw[offsetof(struct amap_eq_entry, - resource_id) / 32] & - EQE_RESID_MASK) >> 16) != cq->id) { - spin_lock_irqsave(&phba->isr_lock, flags); - pbe_eq->todo_mcc_cq = true; - spin_unlock_irqrestore(&phba->isr_lock, flags); - } else { - spin_lock_irqsave(&phba->isr_lock, flags); - pbe_eq->todo_cq = true; - spin_unlock_irqrestore(&phba->isr_lock, flags); - } - AMAP_SET_BITS(struct amap_eq_entry, valid, eqe, 0); - queue_tail_inc(eq); - eqe = queue_tail_node(eq); + while (eqe->dw[offsetof(struct amap_eq_entry, valid) / 32] + & EQE_VALID_MASK) { + if (((eqe->dw[offsetof(struct amap_eq_entry, + resource_id) / 32] & + EQE_RESID_MASK) >> 16) == mcc->id) { + spin_lock_irqsave(&phba->isr_lock, flags); + pbe_eq->todo_mcc_cq = true; + spin_unlock_irqrestore(&phba->isr_lock, flags); + num_mcceq_processed++; + } else { + if (!blk_iopoll_sched_prep(&pbe_eq->iopoll)) + blk_iopoll_sched(&pbe_eq->iopoll); num_ioeq_processed++; } - if (pbe_eq->todo_cq || pbe_eq->todo_mcc_cq) + AMAP_SET_BITS(struct amap_eq_entry, valid, eqe, 0); + queue_tail_inc(eq); + eqe = queue_tail_node(eq); + } + if (num_ioeq_processed || num_mcceq_processed) { + if (pbe_eq->todo_mcc_cq) queue_work(phba->wq, &pbe_eq->work_cqs); - if (num_ioeq_processed) { + if ((num_mcceq_processed) && (!num_ioeq_processed)) hwi_ring_eq_db(phba, eq->id, 0, - num_ioeq_processed, 1, 1); - return IRQ_HANDLED; - } else - return IRQ_NONE; - } + (num_ioeq_processed + + num_mcceq_processed) , 1, 1); + else + hwi_ring_eq_db(phba, eq->id, 0, + (num_ioeq_processed + + num_mcceq_processed), 0, 1); + + return IRQ_HANDLED; + } else + return IRQ_NONE; } static int beiscsi_init_irqs(struct beiscsi_hba *phba) @@ -1093,15 +1059,25 @@ return ret; } -static void hwi_ring_cq_db(struct beiscsi_hba *phba, +void hwi_ring_cq_db(struct beiscsi_hba *phba, unsigned int id, unsigned int num_processed, unsigned char rearm, unsigned char event) { u32 val = 0; - val |= id & DB_CQ_RING_ID_MASK; + if (rearm) val |= 1 << DB_CQ_REARM_SHIFT; + val |= num_processed << DB_CQ_NUM_POPPED_SHIFT; + + /* Setting lower order CQ_ID Bits */ + val |= (id & DB_CQ_RING_ID_LOW_MASK); + + /* Setting Higher order CQ_ID Bits */ + val |= (((id >> DB_CQ_HIGH_FEILD_SHIFT) & + DB_CQ_RING_ID_HIGH_MASK) + << DB_CQ_HIGH_SET_SHIFT); + iowrite32(val, phba->db_va + DB_CQ_OFFSET); } @@ -1342,8 +1318,10 @@ resid = csol_cqe->res_cnt; if (!task->sc) { - if (io_task->scsi_cmnd) + if (io_task->scsi_cmnd) { scsi_dma_unmap(io_task->scsi_cmnd); + io_task->scsi_cmnd = NULL; + } return; } @@ -1380,6 +1358,7 @@ conn->rxdata_octets += resid; unmap: scsi_dma_unmap(io_task->scsi_cmnd); + io_task->scsi_cmnd = NULL; iscsi_complete_scsi_task(task, exp_cmdsn, max_cmdsn); } @@ -2088,7 +2067,7 @@ * return * Number of Completion Entries processed. **/ -static unsigned int beiscsi_process_cq(struct be_eq_obj *pbe_eq) +unsigned int beiscsi_process_cq(struct be_eq_obj *pbe_eq) { struct be_queue_info *cq; struct sol_cqe *sol; @@ -2130,6 +2109,18 @@ cri_index = BE_GET_CRI_FROM_CID(cid); ep = phba->ep_array[cri_index]; + + if (ep == NULL) { + /* connection has already been freed + * just move on to next one + */ + beiscsi_log(phba, KERN_WARNING, + BEISCSI_LOG_INIT, + "BM_%d : proc cqe of disconn ep: cid %d\n", + cid); + goto proc_next_cqe; + } + beiscsi_ep = ep->dd_data; beiscsi_conn = beiscsi_ep->conn; @@ -2239,6 +2230,7 @@ break; } +proc_next_cqe: AMAP_SET_BITS(struct amap_sol_cqe, valid, sol, 0); queue_tail_inc(cq); sol = queue_tail_node(cq); @@ -2291,6 +2283,7 @@ pbe_eq = container_of(iop, struct be_eq_obj, iopoll); ret = beiscsi_process_cq(pbe_eq); + pbe_eq->cq_count += ret; if (ret < budget) { phba = pbe_eq->phba; blk_iopoll_complete(iop); @@ -3704,7 +3697,7 @@ struct hwi_controller *phwi_ctrlr; struct hwi_context_memory *phwi_context; struct hwi_async_pdu_context *pasync_ctx; - int i, eq_num, ulp_num; + int i, eq_for_mcc, ulp_num; phwi_ctrlr = phba->phwi_ctrlr; phwi_context = phwi_ctrlr->phwi_ctxt; @@ -3741,16 +3734,17 @@ if (q->created) beiscsi_cmd_q_destroy(ctrl, q, QTYPE_CQ); } + + be_mcc_queues_destroy(phba); if (phba->msix_enabled) - eq_num = 1; + eq_for_mcc = 1; else - eq_num = 0; - for (i = 0; i < (phba->num_cpus + eq_num); i++) { + eq_for_mcc = 0; + for (i = 0; i < (phba->num_cpus + eq_for_mcc); i++) { q = &phwi_context->be_eq[i].q; if (q->created) beiscsi_cmd_q_destroy(ctrl, q, QTYPE_EQ); } - be_mcc_queues_destroy(phba); be_cmd_fw_uninit(ctrl); } @@ -3845,9 +3839,9 @@ phwi_ctrlr = phba->phwi_ctrlr; phwi_context = phwi_ctrlr->phwi_ctxt; - phwi_context->max_eqd = 0; + phwi_context->max_eqd = 128; phwi_context->min_eqd = 0; - phwi_context->cur_eqd = 64; + phwi_context->cur_eqd = 0; be_cmd_fw_initialize(&phba->ctrl); status = beiscsi_create_eqs(phba, phwi_context); @@ -4216,6 +4210,8 @@ kfree(phba->ep_array); phba->ep_array = NULL; ret = -ENOMEM; + + goto free_memory; } for (i = 0; i < phba->params.cxns_per_ctrl; i++) { @@ -4360,12 +4356,16 @@ goto boot_freemem; } - ret = beiscsi_mccq_compl(phba, tag, NULL, nonemb_cmd.va); + ret = beiscsi_mccq_compl(phba, tag, NULL, &nonemb_cmd); if (ret) { beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT | BEISCSI_LOG_CONFIG, "BM_%d : beiscsi_get_session_info Failed"); - goto boot_freemem; + + if (ret != -EBUSY) + goto boot_freemem; + else + return ret; } session_resp = nonemb_cmd.va ; @@ -4391,6 +4391,10 @@ { struct iscsi_boot_kobj *boot_kobj; + /* it has been created previously */ + if (phba->boot_kset) + return 0; + /* get boot info using mgmt cmd */ if (beiscsi_get_boot_info(phba)) /* Try to see if we can carry on without this */ @@ -4433,6 +4437,7 @@ scsi_host_put(phba->shost); free_kset: iscsi_boot_destroy_kset(phba->boot_kset); + phba->boot_kset = NULL; return -ENOMEM; } @@ -4625,6 +4630,11 @@ spin_unlock(&phba->io_sgl_lock); io_task->psgl_handle = NULL; } + + if (io_task->scsi_cmnd) { + scsi_dma_unmap(io_task->scsi_cmnd); + io_task->scsi_cmnd = NULL; + } } else { if (!beiscsi_conn->login_in_progress) beiscsi_free_mgmt_task_handles(beiscsi_conn, task); @@ -5215,12 +5225,12 @@ free_irq(phba->pcidev->irq, phba); } pci_disable_msix(phba->pcidev); + cancel_delayed_work_sync(&phba->beiscsi_hw_check_task); - if (blk_iopoll_enabled) - for (i = 0; i < phba->num_cpus; i++) { - pbe_eq = &phwi_context->be_eq[i]; - blk_iopoll_disable(&pbe_eq->iopoll); - } + for (i = 0; i < phba->num_cpus; i++) { + pbe_eq = &phwi_context->be_eq[i]; + blk_iopoll_disable(&pbe_eq->iopoll); + } if (unload_state == BEISCSI_CLEAN_UNLOAD) { destroy_workqueue(phba->wq); @@ -5237,7 +5247,6 @@ hwi_cleanup(phba); } - cancel_delayed_work_sync(&phba->beiscsi_hw_check_task); } static void beiscsi_remove(struct pci_dev *pcidev) @@ -5273,6 +5282,8 @@ return; } + phba->state = BE_ADAPTER_STATE_SHUTDOWN; + iscsi_host_for_each_session(phba->shost, be2iscsi_fail_session); beiscsi_quiesce(phba, BEISCSI_CLEAN_UNLOAD); pci_disable_device(pcidev); } @@ -5292,6 +5303,65 @@ return; } +static void be_eqd_update(struct beiscsi_hba *phba) +{ + struct be_set_eqd set_eqd[MAX_CPUS]; + struct be_aic_obj *aic; + struct be_eq_obj *pbe_eq; + struct hwi_controller *phwi_ctrlr; + struct hwi_context_memory *phwi_context; + int eqd, i, num = 0; + ulong now; + u32 pps, delta; + unsigned int tag; + + phwi_ctrlr = phba->phwi_ctrlr; + phwi_context = phwi_ctrlr->phwi_ctxt; + + for (i = 0; i <= phba->num_cpus; i++) { + aic = &phba->aic_obj[i]; + pbe_eq = &phwi_context->be_eq[i]; + now = jiffies; + if (!aic->jiffs || time_before(now, aic->jiffs) || + pbe_eq->cq_count < aic->eq_prev) { + aic->jiffs = now; + aic->eq_prev = pbe_eq->cq_count; + continue; + } + delta = jiffies_to_msecs(now - aic->jiffs); + pps = (((u32)(pbe_eq->cq_count - aic->eq_prev) * 1000) / delta); + eqd = (pps / 1500) << 2; + + if (eqd < 8) + eqd = 0; + eqd = min_t(u32, eqd, phwi_context->max_eqd); + eqd = max_t(u32, eqd, phwi_context->min_eqd); + + aic->jiffs = now; + aic->eq_prev = pbe_eq->cq_count; + + if (eqd != aic->prev_eqd) { + set_eqd[num].delay_multiplier = (eqd * 65)/100; + set_eqd[num].eq_id = pbe_eq->q.id; + aic->prev_eqd = eqd; + num++; + } + } + if (num) { + tag = be_cmd_modify_eq_delay(phba, set_eqd, num); + if (tag) + beiscsi_mccq_compl(phba, tag, NULL, NULL); + } +} + +static void be_check_boot_session(struct beiscsi_hba *phba) +{ + if (beiscsi_setup_boot_info(phba)) + beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT, + "BM_%d : Could not set up " + "iSCSI boot info on async event.\n"); +} + /* * beiscsi_hw_health_check()- Check adapter health * @work: work item to check HW health @@ -5305,6 +5375,13 @@ container_of(work, struct beiscsi_hba, beiscsi_hw_check_task.work); + be_eqd_update(phba); + + if (phba->state & BE_ADAPTER_CHECK_BOOT) { + phba->state &= ~BE_ADAPTER_CHECK_BOOT; + be_check_boot_session(phba); + } + beiscsi_ue_detect(phba); schedule_delayed_work(&phba->beiscsi_hw_check_task, @@ -5429,32 +5506,18 @@ phwi_ctrlr = phba->phwi_ctrlr; phwi_context = phwi_ctrlr->phwi_ctxt; - if (blk_iopoll_enabled) { - for (i = 0; i < phba->num_cpus; i++) { - pbe_eq = &phwi_context->be_eq[i]; - blk_iopoll_init(&pbe_eq->iopoll, be_iopoll_budget, - be_iopoll); - blk_iopoll_enable(&pbe_eq->iopoll); - } - - i = (phba->msix_enabled) ? i : 0; - /* Work item for MCC handling */ + for (i = 0; i < phba->num_cpus; i++) { pbe_eq = &phwi_context->be_eq[i]; - INIT_WORK(&pbe_eq->work_cqs, beiscsi_process_all_cqs); - } else { - if (phba->msix_enabled) { - for (i = 0; i <= phba->num_cpus; i++) { - pbe_eq = &phwi_context->be_eq[i]; - INIT_WORK(&pbe_eq->work_cqs, - beiscsi_process_all_cqs); - } - } else { - pbe_eq = &phwi_context->be_eq[0]; - INIT_WORK(&pbe_eq->work_cqs, - beiscsi_process_all_cqs); - } + blk_iopoll_init(&pbe_eq->iopoll, be_iopoll_budget, + be_iopoll); + blk_iopoll_enable(&pbe_eq->iopoll); } + i = (phba->msix_enabled) ? i : 0; + /* Work item for MCC handling */ + pbe_eq = &phwi_context->be_eq[i]; + INIT_WORK(&pbe_eq->work_cqs, beiscsi_process_all_cqs); + ret = beiscsi_init_irqs(phba); if (ret < 0) { beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT, @@ -5594,6 +5657,8 @@ phba->ctrl.mcc_tag[i] = i + 1; phba->ctrl.mcc_numtag[i + 1] = 0; phba->ctrl.mcc_tag_available++; + memset(&phba->ctrl.ptag_state[i].tag_mem_state, 0, + sizeof(struct be_dma_mem)); } phba->ctrl.mcc_alloc_index = phba->ctrl.mcc_free_index = 0; @@ -5614,32 +5679,18 @@ phwi_ctrlr = phba->phwi_ctrlr; phwi_context = phwi_ctrlr->phwi_ctxt; - if (blk_iopoll_enabled) { - for (i = 0; i < phba->num_cpus; i++) { - pbe_eq = &phwi_context->be_eq[i]; - blk_iopoll_init(&pbe_eq->iopoll, be_iopoll_budget, - be_iopoll); - blk_iopoll_enable(&pbe_eq->iopoll); - } - - i = (phba->msix_enabled) ? i : 0; - /* Work item for MCC handling */ + for (i = 0; i < phba->num_cpus; i++) { pbe_eq = &phwi_context->be_eq[i]; - INIT_WORK(&pbe_eq->work_cqs, beiscsi_process_all_cqs); - } else { - if (phba->msix_enabled) { - for (i = 0; i <= phba->num_cpus; i++) { - pbe_eq = &phwi_context->be_eq[i]; - INIT_WORK(&pbe_eq->work_cqs, - beiscsi_process_all_cqs); - } - } else { - pbe_eq = &phwi_context->be_eq[0]; - INIT_WORK(&pbe_eq->work_cqs, - beiscsi_process_all_cqs); - } + blk_iopoll_init(&pbe_eq->iopoll, be_iopoll_budget, + be_iopoll); + blk_iopoll_enable(&pbe_eq->iopoll); } + i = (phba->msix_enabled) ? i : 0; + /* Work item for MCC handling */ + pbe_eq = &phwi_context->be_eq[i]; + INIT_WORK(&pbe_eq->work_cqs, beiscsi_process_all_cqs); + ret = beiscsi_init_irqs(phba); if (ret < 0) { beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT, @@ -5649,6 +5700,9 @@ } hwi_enable_intr(phba); + if (iscsi_host_add(phba->shost, &phba->pcidev->dev)) + goto free_blkenbld; + if (beiscsi_setup_boot_info(phba)) /* * log error but continue, because we may not be using @@ -5668,11 +5722,10 @@ free_blkenbld: destroy_workqueue(phba->wq); - if (blk_iopoll_enabled) - for (i = 0; i < phba->num_cpus; i++) { - pbe_eq = &phwi_context->be_eq[i]; - blk_iopoll_disable(&pbe_eq->iopoll); - } + for (i = 0; i < phba->num_cpus; i++) { + pbe_eq = &phwi_context->be_eq[i]; + blk_iopoll_disable(&pbe_eq->iopoll); + } free_twq: beiscsi_clean_port(phba); beiscsi_free_mem(phba); @@ -5685,9 +5738,9 @@ hba_free: if (phba->msix_enabled) pci_disable_msix(phba->pcidev); - iscsi_host_remove(phba->shost); pci_dev_put(phba->pcidev); iscsi_host_free(phba->shost); + pci_set_drvdata(pcidev, NULL); disable_pci: pci_disable_device(pcidev); return ret; --- linux-3.13.0.orig/drivers/scsi/be2iscsi/be_main.h +++ linux-3.13.0/drivers/scsi/be2iscsi/be_main.h @@ -71,8 +71,8 @@ #define BEISCSI_SGLIST_ELEMENTS 30 -#define BEISCSI_CMD_PER_LUN 128 /* scsi_host->cmd_per_lun */ -#define BEISCSI_MAX_SECTORS 2048 /* scsi_host->max_sectors */ +#define BEISCSI_CMD_PER_LUN 128 /* scsi_host->cmd_per_lun */ +#define BEISCSI_MAX_SECTORS 1024 /* scsi_host->max_sectors */ #define BEISCSI_TEMPLATE_HDR_PER_CXN_SIZE 128 /* Template size per cxn */ #define BEISCSI_MAX_CMD_LEN 16 /* scsi_host->max_cmd_len */ @@ -97,9 +97,15 @@ #define INVALID_SESS_HANDLE 0xFFFFFFFF +/** + * Adapter States + **/ #define BE_ADAPTER_LINK_UP 0x001 #define BE_ADAPTER_LINK_DOWN 0x002 #define BE_ADAPTER_PCI_ERR 0x004 +#define BE_ADAPTER_STATE_SHUTDOWN 0x008 +#define BE_ADAPTER_CHECK_BOOT 0x010 + #define BEISCSI_CLEAN_UNLOAD 0x01 #define BEISCSI_EEH_UNLOAD 0x02 @@ -135,11 +141,15 @@ #define DB_RXULP0_OFFSET 0xA0 /********* Event Q door bell *************/ #define DB_EQ_OFFSET DB_CQ_OFFSET -#define DB_EQ_RING_ID_MASK 0x1FF /* bits 0 - 8 */ +#define DB_EQ_RING_ID_LOW_MASK 0x1FF /* bits 0 - 8 */ /* Clear the interrupt for this eq */ #define DB_EQ_CLR_SHIFT (9) /* bit 9 */ /* Must be 1 */ #define DB_EQ_EVNT_SHIFT (10) /* bit 10 */ +/* Higher Order EQ_ID bit */ +#define DB_EQ_RING_ID_HIGH_MASK 0x1F /* bits 11 - 15 */ +#define DB_EQ_HIGH_SET_SHIFT 11 +#define DB_EQ_HIGH_FEILD_SHIFT 9 /* Number of event entries processed */ #define DB_EQ_NUM_POPPED_SHIFT (16) /* bits 16 - 28 */ /* Rearm bit */ @@ -147,7 +157,12 @@ /********* Compl Q door bell *************/ #define DB_CQ_OFFSET 0x120 -#define DB_CQ_RING_ID_MASK 0x3FF /* bits 0 - 9 */ +#define DB_CQ_RING_ID_LOW_MASK 0x3FF /* bits 0 - 9 */ +/* Higher Order CQ_ID bit */ +#define DB_CQ_RING_ID_HIGH_MASK 0x1F /* bits 11 - 15 */ +#define DB_CQ_HIGH_SET_SHIFT 11 +#define DB_CQ_HIGH_FEILD_SHIFT 10 + /* Number of event entries processed */ #define DB_CQ_NUM_POPPED_SHIFT (16) /* bits 16 - 28 */ /* Rearm bit */ @@ -413,6 +428,7 @@ struct mgmt_session_info boot_sess; struct invalidate_command_table inv_tbl[128]; + struct be_aic_obj aic_obj[MAX_CPUS]; unsigned int attr_log_enable; int (*iotask_fn)(struct iscsi_task *, struct scatterlist *sg, @@ -821,6 +837,12 @@ void beiscsi_free_mgmt_task_handles(struct beiscsi_conn *beiscsi_conn, struct iscsi_task *task); +void hwi_ring_cq_db(struct beiscsi_hba *phba, + unsigned int id, unsigned int num_processed, + unsigned char rearm, unsigned char event); + +unsigned int beiscsi_process_cq(struct be_eq_obj *pbe_eq); + static inline bool beiscsi_error(struct beiscsi_hba *phba) { return phba->ue_detected || phba->fw_timeout; --- linux-3.13.0.orig/drivers/scsi/be2iscsi/be_mgmt.c +++ linux-3.13.0/drivers/scsi/be2iscsi/be_mgmt.c @@ -155,6 +155,43 @@ } } +int be_cmd_modify_eq_delay(struct beiscsi_hba *phba, + struct be_set_eqd *set_eqd, int num) +{ + struct be_ctrl_info *ctrl = &phba->ctrl; + struct be_mcc_wrb *wrb; + struct be_cmd_req_modify_eq_delay *req; + unsigned int tag = 0; + int i; + + spin_lock(&ctrl->mbox_lock); + tag = alloc_mcc_tag(phba); + if (!tag) { + spin_unlock(&ctrl->mbox_lock); + return tag; + } + + wrb = wrb_from_mccq(phba); + req = embedded_payload(wrb); + + wrb->tag0 |= tag; + be_wrb_hdr_prepare(wrb, sizeof(*req), true, 0); + be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_COMMON, + OPCODE_COMMON_MODIFY_EQ_DELAY, sizeof(*req)); + + req->num_eq = cpu_to_le32(num); + for (i = 0; i < num; i++) { + req->delay[i].eq_id = cpu_to_le32(set_eqd[i].eq_id); + req->delay[i].phase = 0; + req->delay[i].delay_multiplier = + cpu_to_le32(set_eqd[i].delay_multiplier); + } + + be_mcc_notify(phba); + spin_unlock(&ctrl->mbox_lock); + return tag; +} + /** * mgmt_reopen_session()- Reopen a session based on reopen_type * @phba: Device priv structure instance @@ -447,8 +484,8 @@ struct be_dma_mem *nonemb_cmd) { struct be_cmd_resp_hdr *resp; - struct be_mcc_wrb *wrb = wrb_from_mccq(phba); - struct be_sge *mcc_sge = nonembedded_sgl(wrb); + struct be_mcc_wrb *wrb; + struct be_sge *mcc_sge; unsigned int tag = 0; struct iscsi_bsg_request *bsg_req = job->request; struct be_bsg_vendor_cmd *req = nonemb_cmd->va; @@ -465,7 +502,6 @@ req->sector = sector; req->offset = offset; spin_lock(&ctrl->mbox_lock); - memset(wrb, 0, sizeof(*wrb)); switch (bsg_req->rqst_data.h_vendor.vendor_cmd[0]) { case BEISCSI_WRITE_FLASH: @@ -495,6 +531,8 @@ return tag; } + wrb = wrb_from_mccq(phba); + mcc_sge = nonembedded_sgl(wrb); be_wrb_hdr_prepare(wrb, nonemb_cmd->size, false, job->request_payload.sg_cnt); mcc_sge->pa_hi = cpu_to_le32(upper_32_bits(nonemb_cmd->dma)); @@ -525,7 +563,6 @@ int status = 0; spin_lock(&ctrl->mbox_lock); - memset(wrb, 0, sizeof(*wrb)); be_wrb_hdr_prepare(wrb, sizeof(*req), true, 0); be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_ISCSI, @@ -675,7 +712,7 @@ struct sockaddr_in6 *daddr_in6 = (struct sockaddr_in6 *)dst_addr; struct be_ctrl_info *ctrl = &phba->ctrl; struct be_mcc_wrb *wrb; - struct tcp_connect_and_offload_in *req; + struct tcp_connect_and_offload_in_v1 *req; unsigned short def_hdr_id; unsigned short def_data_id; struct phys_addr template_address = { 0, 0 }; @@ -702,17 +739,16 @@ return tag; } wrb = wrb_from_mccq(phba); - memset(wrb, 0, sizeof(*wrb)); sge = nonembedded_sgl(wrb); req = nonemb_cmd->va; memset(req, 0, sizeof(*req)); wrb->tag0 |= tag; - be_wrb_hdr_prepare(wrb, sizeof(*req), false, 1); + be_wrb_hdr_prepare(wrb, nonemb_cmd->size, false, 1); be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_ISCSI, OPCODE_COMMON_ISCSI_TCP_CONNECT_AND_OFFLOAD, - sizeof(*req)); + nonemb_cmd->size); if (dst_addr->sa_family == PF_INET) { __be32 s_addr = daddr_in->sin_addr.s_addr; req->ip_address.ip_type = BE2_IPV4; @@ -758,6 +794,13 @@ sge->pa_hi = cpu_to_le32(upper_32_bits(nonemb_cmd->dma)); sge->pa_lo = cpu_to_le32(nonemb_cmd->dma & 0xFFFFFFFF); sge->len = cpu_to_le32(nonemb_cmd->size); + + if (!is_chip_be2_be3r(phba)) { + req->hdr.version = MBX_CMD_VER1; + req->tcp_window_size = 0; + req->tcp_window_scale_count = 2; + } + be_mcc_notify(phba); spin_unlock(&ctrl->mbox_lock); return tag; @@ -804,7 +847,7 @@ int resp_buf_len) { struct be_ctrl_info *ctrl = &phba->ctrl; - struct be_mcc_wrb *wrb = wrb_from_mccq(phba); + struct be_mcc_wrb *wrb; struct be_sge *sge; unsigned int tag; int rc = 0; @@ -816,7 +859,8 @@ rc = -ENOMEM; goto free_cmd; } - memset(wrb, 0, sizeof(*wrb)); + + wrb = wrb_from_mccq(phba); wrb->tag0 |= tag; sge = nonembedded_sgl(wrb); @@ -828,22 +872,25 @@ be_mcc_notify(phba); spin_unlock(&ctrl->mbox_lock); - rc = beiscsi_mccq_compl(phba, tag, NULL, nonemb_cmd->va); + rc = beiscsi_mccq_compl(phba, tag, NULL, nonemb_cmd); + + if (resp_buf) + memcpy(resp_buf, nonemb_cmd->va, resp_buf_len); + if (rc) { - /* Check if the IOCTL needs to be re-issued */ + /* Check if the MBX Cmd needs to be re-issued */ if (rc == -EAGAIN) return rc; - beiscsi_log(phba, KERN_ERR, + beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_CONFIG | BEISCSI_LOG_MBOX, "BG_%d : mgmt_exec_nonemb_cmd Failed status\n"); - goto free_cmd; + if (rc != -EBUSY) + goto free_cmd; + else + return rc; } - - if (resp_buf) - memcpy(resp_buf, nonemb_cmd->va, resp_buf_len); - free_cmd: pci_free_consistent(ctrl->pdev, nonemb_cmd->size, nonemb_cmd->va, nonemb_cmd->dma); @@ -897,17 +944,20 @@ if (ip_action == IP_ACTION_ADD) { memcpy(req->ip_params.ip_record.ip_addr.addr, ip_param->value, - ip_param->len); + sizeof(req->ip_params.ip_record.ip_addr.addr)); if (subnet_param) memcpy(req->ip_params.ip_record.ip_addr.subnet_mask, - subnet_param->value, subnet_param->len); + subnet_param->value, + sizeof(req->ip_params.ip_record.ip_addr.subnet_mask)); } else { memcpy(req->ip_params.ip_record.ip_addr.addr, - if_info->ip_addr.addr, ip_param->len); + if_info->ip_addr.addr, + sizeof(req->ip_params.ip_record.ip_addr.addr)); memcpy(req->ip_params.ip_record.ip_addr.subnet_mask, - if_info->ip_addr.subnet_mask, ip_param->len); + if_info->ip_addr.subnet_mask, + sizeof(req->ip_params.ip_record.ip_addr.subnet_mask)); } rc = mgmt_exec_nonemb_cmd(phba, &nonemb_cmd, NULL, 0); @@ -935,7 +985,7 @@ req->action = gtway_action; req->ip_addr.ip_type = BE2_IPV4; - memcpy(req->ip_addr.addr, gt_addr, param_len); + memcpy(req->ip_addr.addr, gt_addr, sizeof(req->ip_addr.addr)); return mgmt_exec_nonemb_cmd(phba, &nonemb_cmd, NULL, 0); } @@ -961,16 +1011,14 @@ BE2_IPV6 : BE2_IPV4 ; rc = mgmt_get_if_info(phba, ip_type, &if_info); - if (rc) { - kfree(if_info); + if (rc) return rc; - } if (boot_proto == ISCSI_BOOTPROTO_DHCP) { if (if_info->dhcp_state) { beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_CONFIG, "BG_%d : DHCP Already Enabled\n"); - return 0; + goto exit; } /* The ip_param->len is 1 in DHCP case. Setting proper IP len as this it is used while @@ -988,7 +1036,7 @@ sizeof(*reldhcp)); if (rc) - return rc; + goto exit; reldhcp = nonemb_cmd.va; reldhcp->interface_hndl = phba->interface_handle; @@ -999,7 +1047,7 @@ beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_CONFIG, "BG_%d : Failed to Delete existing dhcp\n"); - return rc; + goto exit; } } } @@ -1009,7 +1057,7 @@ rc = mgmt_static_ip_modify(phba, if_info, ip_param, NULL, IP_ACTION_DEL); if (rc) - return rc; + goto exit; } /* Delete the Gateway settings if mode change is to DHCP */ @@ -1019,7 +1067,7 @@ if (rc) { beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_CONFIG, "BG_%d : Failed to Get Gateway Addr\n"); - return rc; + goto exit; } if (gtway_addr_set.ip_addr.addr[0]) { @@ -1031,7 +1079,7 @@ beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_CONFIG, "BG_%d : Failed to clear Gateway Addr Set\n"); - return rc; + goto exit; } } } @@ -1042,7 +1090,7 @@ OPCODE_COMMON_ISCSI_NTWK_CONFIG_STATELESS_IP_ADDR, sizeof(*dhcpreq)); if (rc) - return rc; + goto exit; dhcpreq = nonemb_cmd.va; dhcpreq->flags = BLOCKING; @@ -1050,12 +1098,14 @@ dhcpreq->interface_hndl = phba->interface_handle; dhcpreq->ip_type = BE2_DHCP_V4; - return mgmt_exec_nonemb_cmd(phba, &nonemb_cmd, NULL, 0); + rc = mgmt_exec_nonemb_cmd(phba, &nonemb_cmd, NULL, 0); } else { - return mgmt_static_ip_modify(phba, if_info, ip_param, + rc = mgmt_static_ip_modify(phba, if_info, ip_param, subnet_param, IP_ACTION_ADD); } +exit: + kfree(if_info); return rc; } @@ -1348,7 +1398,6 @@ { int rc; unsigned int tag; - struct be_mcc_wrb *wrb = NULL; tag = be_cmd_set_vlan(phba, vlan_tag); if (!tag) { @@ -1358,7 +1407,7 @@ return -EBUSY; } - rc = beiscsi_mccq_compl(phba, tag, &wrb, NULL); + rc = beiscsi_mccq_compl(phba, tag, NULL, NULL); if (rc) { beiscsi_log(phba, KERN_ERR, (BEISCSI_LOG_CONFIG | BEISCSI_LOG_MBOX), --- linux-3.13.0.orig/drivers/scsi/be2iscsi/be_mgmt.h +++ linux-3.13.0/drivers/scsi/be2iscsi/be_mgmt.h @@ -335,5 +335,7 @@ void beiscsi_offload_cxn_v2(struct beiscsi_offload_params *params, struct wrb_handle *pwrb_handle); void beiscsi_ue_detect(struct beiscsi_hba *phba); +int be_cmd_modify_eq_delay(struct beiscsi_hba *phba, + struct be_set_eqd *, int num); #endif --- linux-3.13.0.orig/drivers/scsi/bfa/bfa_ioc.h +++ linux-3.13.0/drivers/scsi/bfa/bfa_ioc.h @@ -72,7 +72,7 @@ } while (0) #define bfa_swap_words(_x) ( \ - ((_x) << 32) | ((_x) >> 32)) + ((u64)(_x) << 32) | ((u64)(_x) >> 32)) #ifdef __BIG_ENDIAN #define bfa_sge_to_be(_x) --- linux-3.13.0.orig/drivers/scsi/bfa/bfad.c +++ linux-3.13.0/drivers/scsi/bfa/bfad.c @@ -1802,7 +1802,7 @@ static u32 * bfad_load_fwimg(struct pci_dev *pdev) { - if (pdev->device == BFA_PCI_DEVICE_ID_CT2) { + if (bfa_asic_id_ct2(pdev->device)) { if (bfi_image_ct2_size == 0) bfad_read_firmware(pdev, &bfi_image_ct2, &bfi_image_ct2_size, BFAD_FW_FILE_CT2); @@ -1812,12 +1812,14 @@ bfad_read_firmware(pdev, &bfi_image_ct, &bfi_image_ct_size, BFAD_FW_FILE_CT); return bfi_image_ct; - } else { + } else if (bfa_asic_id_cb(pdev->device)) { if (bfi_image_cb_size == 0) bfad_read_firmware(pdev, &bfi_image_cb, &bfi_image_cb_size, BFAD_FW_FILE_CB); return bfi_image_cb; } + + return NULL; } static void --- linux-3.13.0.orig/drivers/scsi/bnx2fc/bnx2fc_fcoe.c +++ linux-3.13.0/drivers/scsi/bnx2fc/bnx2fc_fcoe.c @@ -411,6 +411,7 @@ struct fc_frame_header *fh; struct fcoe_rcv_info *fr; struct fcoe_percpu_s *bg; + struct sk_buff *tmp_skb; unsigned short oxid; interface = container_of(ptype, struct bnx2fc_interface, @@ -423,6 +424,12 @@ goto err; } + tmp_skb = skb_share_check(skb, GFP_ATOMIC); + if (!tmp_skb) + goto err; + + skb = tmp_skb; + if (unlikely(eth_hdr(skb)->h_proto != htons(ETH_P_FCOE))) { printk(KERN_ERR PFX "bnx2fc_rcv: Wrong FC type frame\n"); goto err; --- linux-3.13.0.orig/drivers/scsi/device_handler/scsi_dh_rdac.c +++ linux-3.13.0/drivers/scsi/device_handler/scsi_dh_rdac.c @@ -569,7 +569,7 @@ /* * Command Lock contention */ - err = SCSI_DH_RETRY; + err = SCSI_DH_IMM_RETRY; break; default: break; @@ -619,6 +619,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-3.13.0.orig/drivers/scsi/esas2r/esas2r_main.c +++ linux-3.13.0/drivers/scsi/esas2r/esas2r_main.c @@ -1057,7 +1057,7 @@ cmd->scsi_done(cmd); - return 0; + return SUCCESS; } spin_lock_irqsave(&a->queue_lock, flags); --- linux-3.13.0.orig/drivers/scsi/hosts.c +++ linux-3.13.0/drivers/scsi/hosts.c @@ -305,6 +305,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->bqt) blk_free_tags(shost->bqt); --- linux-3.13.0.orig/drivers/scsi/hpsa.c +++ linux-3.13.0/drivers/scsi/hpsa.c @@ -117,9 +117,15 @@ {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSI, 0x103C, 0x21C3}, {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSI, 0x103C, 0x21C4}, {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSI, 0x103C, 0x21C5}, + {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSI, 0x103C, 0x21C6}, {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSI, 0x103C, 0x21C7}, {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSI, 0x103C, 0x21C8}, {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSI, 0x103C, 0x21C9}, + {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSI, 0x103C, 0x21CA}, + {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSI, 0x103C, 0x21CB}, + {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSI, 0x103C, 0x21CC}, + {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSI, 0x103C, 0x21CD}, + {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSI, 0x103C, 0x21CE}, {PCI_VENDOR_ID_HP, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_STORAGE_RAID << 8, 0xffff << 8, 0}, {0,} @@ -163,9 +169,15 @@ {0x21C3103C, "Smart Array", &SA5_access}, {0x21C4103C, "Smart Array", &SA5_access}, {0x21C5103C, "Smart Array", &SA5_access}, + {0x21C6103C, "Smart Array", &SA5_access}, {0x21C7103C, "Smart Array", &SA5_access}, {0x21C8103C, "Smart Array", &SA5_access}, {0x21C9103C, "Smart Array", &SA5_access}, + {0x21CA103C, "Smart Array", &SA5_access}, + {0x21CB103C, "Smart Array", &SA5_access}, + {0x21CC103C, "Smart Array", &SA5_access}, + {0x21CD103C, "Smart Array", &SA5_access}, + {0x21CE103C, "Smart Array", &SA5_access}, {0xFFFF103C, "Unknown Smart Array", &SA5_access}, }; @@ -1248,10 +1260,8 @@ } if (ei->ScsiStatus == SAM_STAT_CHECK_CONDITION) { - if (check_for_unit_attention(h, cp)) { - cmd->result = DID_SOFT_ERROR << 16; + if (check_for_unit_attention(h, cp)) break; - } if (sense_key == ILLEGAL_REQUEST) { /* * SCSI REPORT_LUNS is commonly unsupported on @@ -3139,7 +3149,7 @@ } if (ioc->Request.Type.Direction == XFER_WRITE) { if (copy_from_user(buff[sg_used], data_ptr, sz)) { - status = -ENOMEM; + status = -EFAULT; goto cleanup1; } } else --- linux-3.13.0.orig/drivers/scsi/ibmvscsi/ibmvscsi.c +++ linux-3.13.0/drivers/scsi/ibmvscsi/ibmvscsi.c @@ -185,6 +185,11 @@ if (crq->valid & 0x80) { if (++queue->cur == queue->size) queue->cur = 0; + + /* Ensure the read of the valid bit occurs before reading any + * other bits of the CRQ entry + */ + rmb(); } else crq = NULL; spin_unlock_irqrestore(&queue->lock, flags); @@ -203,6 +208,11 @@ { struct vio_dev *vdev = to_vio_dev(hostdata->dev); + /* + * Ensure the command buffer is flushed to memory before handing it + * over to the VIOS to prevent it from fetching any stale data. + */ + mb(); return plpar_hcall_norets(H_SEND_CRQ, vdev->unit_address, word1, word2); } @@ -797,7 +807,8 @@ evt->hostdata->dev); if (evt->cmnd_done) evt->cmnd_done(evt->cmnd); - } else if (evt->done) + } else if (evt->done && evt->crq.format != VIOSRP_MAD_FORMAT && + evt->iu.srp.login_req.opcode != SRP_LOGIN_REQ) evt->done(evt); free_event_struct(&evt->hostdata->pool, evt); spin_lock_irqsave(hostdata->host->host_lock, flags); --- linux-3.13.0.orig/drivers/scsi/initio.c +++ linux-3.13.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-3.13.0.orig/drivers/scsi/ipr.c +++ linux-3.13.0/drivers/scsi/ipr.c @@ -592,9 +592,10 @@ { struct ipr_trace_entry *trace_entry; struct ipr_ioa_cfg *ioa_cfg = ipr_cmd->ioa_cfg; + unsigned int trace_index; - trace_entry = &ioa_cfg->trace[atomic_add_return - (1, &ioa_cfg->trace_index)%IPR_NUM_TRACE_ENTRIES]; + trace_index = atomic_add_return(1, &ioa_cfg->trace_index) & IPR_TRACE_INDEX_MASK; + trace_entry = &ioa_cfg->trace[trace_index]; trace_entry->time = jiffies; trace_entry->op_code = ipr_cmd->ioarcb.cmd_pkt.cdb[0]; trace_entry->type = type; @@ -683,6 +684,7 @@ ipr_reinit_ipr_cmnd(ipr_cmd); ipr_cmd->u.scratch = 0; ipr_cmd->sibling = NULL; + ipr_cmd->eh_comp = NULL; ipr_cmd->fast_done = fast_done; init_timer(&ipr_cmd->timer); } @@ -848,6 +850,8 @@ scsi_dma_unmap(ipr_cmd->scsi_cmd); scsi_cmd->scsi_done(scsi_cmd); + if (ipr_cmd->eh_comp) + complete(ipr_cmd->eh_comp); list_add_tail(&ipr_cmd->queue, &ipr_cmd->hrrq->hrrq_free_q); } @@ -1041,10 +1045,15 @@ static int ipr_get_hrrq_index(struct ipr_ioa_cfg *ioa_cfg) { + unsigned int hrrq; + if (ioa_cfg->hrrq_num == 1) - return 0; - else - return (atomic_add_return(1, &ioa_cfg->hrrq_index) % (ioa_cfg->hrrq_num - 1)) + 1; + hrrq = 0; + else { + hrrq = atomic_add_return(1, &ioa_cfg->hrrq_index); + hrrq = (hrrq % (ioa_cfg->hrrq_num - 1)) + 1; + } + return hrrq; } /** @@ -3630,16 +3639,14 @@ return strlen(buf); } - if (blk_iopoll_enabled && ioa_cfg->iopoll_weight && - ioa_cfg->sis64 && ioa_cfg->nvectors > 1) { + if (ioa_cfg->iopoll_weight && ioa_cfg->sis64 && ioa_cfg->nvectors > 1) { for (i = 1; i < ioa_cfg->hrrq_num; i++) blk_iopoll_disable(&ioa_cfg->hrrq[i].iopoll); } spin_lock_irqsave(shost->host_lock, lock_flags); ioa_cfg->iopoll_weight = user_iopoll_weight; - if (blk_iopoll_enabled && ioa_cfg->iopoll_weight && - ioa_cfg->sis64 && ioa_cfg->nvectors > 1) { + if (ioa_cfg->iopoll_weight && ioa_cfg->sis64 && ioa_cfg->nvectors > 1) { for (i = 1; i < ioa_cfg->hrrq_num; i++) { blk_iopoll_init(&ioa_cfg->hrrq[i].iopoll, ioa_cfg->iopoll_weight, ipr_iopoll); @@ -4805,6 +4812,84 @@ return rc; } +/** + * ipr_match_lun - Match function for specified LUN + * @ipr_cmd: ipr command struct + * @device: device to match (sdev) + * + * Returns: + * 1 if command matches sdev / 0 if command does not match sdev + **/ +static int ipr_match_lun(struct ipr_cmnd *ipr_cmd, void *device) +{ + if (ipr_cmd->scsi_cmd && ipr_cmd->scsi_cmd->device == device) + return 1; + return 0; +} + +/** + * ipr_wait_for_ops - Wait for matching commands to complete + * @ipr_cmd: ipr command struct + * @device: device to match (sdev) + * @match: match function to use + * + * Returns: + * SUCCESS / FAILED + **/ +static int ipr_wait_for_ops(struct ipr_ioa_cfg *ioa_cfg, void *device, + int (*match)(struct ipr_cmnd *, void *)) +{ + struct ipr_cmnd *ipr_cmd; + int wait; + unsigned long flags; + struct ipr_hrr_queue *hrrq; + signed long timeout = IPR_ABORT_TASK_TIMEOUT; + DECLARE_COMPLETION_ONSTACK(comp); + + ENTER; + do { + wait = 0; + + for_each_hrrq(hrrq, ioa_cfg) { + spin_lock_irqsave(hrrq->lock, flags); + list_for_each_entry(ipr_cmd, &hrrq->hrrq_pending_q, queue) { + if (match(ipr_cmd, device)) { + ipr_cmd->eh_comp = ∁ + wait++; + } + } + spin_unlock_irqrestore(hrrq->lock, flags); + } + + if (wait) { + timeout = wait_for_completion_timeout(&comp, timeout); + + if (!timeout) { + wait = 0; + + for_each_hrrq(hrrq, ioa_cfg) { + spin_lock_irqsave(hrrq->lock, flags); + list_for_each_entry(ipr_cmd, &hrrq->hrrq_pending_q, queue) { + if (match(ipr_cmd, device)) { + ipr_cmd->eh_comp = NULL; + wait++; + } + } + spin_unlock_irqrestore(hrrq->lock, flags); + } + + if (wait) + dev_err(&ioa_cfg->pdev->dev, "Timed out waiting for aborted commands\n"); + LEAVE; + return wait ? FAILED : SUCCESS; + } + } + } while (wait); + + LEAVE; + return SUCCESS; +} + static int ipr_eh_host_reset(struct scsi_cmnd *cmd) { struct ipr_ioa_cfg *ioa_cfg; @@ -5023,11 +5108,17 @@ static int ipr_eh_dev_reset(struct scsi_cmnd *cmd) { int rc; + struct ipr_ioa_cfg *ioa_cfg; + + ioa_cfg = (struct ipr_ioa_cfg *) cmd->device->host->hostdata; spin_lock_irq(cmd->device->host->host_lock); rc = __ipr_eh_dev_reset(cmd); spin_unlock_irq(cmd->device->host->host_lock); + if (rc == SUCCESS) + rc = ipr_wait_for_ops(ioa_cfg, cmd->device, ipr_match_lun); + return rc; } @@ -5205,13 +5296,18 @@ { unsigned long flags; int rc; + struct ipr_ioa_cfg *ioa_cfg; ENTER; + ioa_cfg = (struct ipr_ioa_cfg *) scsi_cmd->device->host->hostdata; + spin_lock_irqsave(scsi_cmd->device->host->host_lock, flags); rc = ipr_cancel_op(scsi_cmd); spin_unlock_irqrestore(scsi_cmd->device->host->host_lock, flags); + if (rc == SUCCESS) + rc = ipr_wait_for_ops(ioa_cfg, scsi_cmd->device, ipr_match_lun); LEAVE; return rc; } @@ -5484,8 +5580,7 @@ return IRQ_NONE; } - if (blk_iopoll_enabled && ioa_cfg->iopoll_weight && - ioa_cfg->sis64 && ioa_cfg->nvectors > 1) { + if (ioa_cfg->iopoll_weight && ioa_cfg->sis64 && ioa_cfg->nvectors > 1) { if ((be32_to_cpu(*hrrq->hrrq_curr) & IPR_HRRQ_TOGGLE_BIT) == hrrq->toggle_bit) { if (!blk_iopoll_sched_prep(&hrrq->iopoll)) @@ -6087,21 +6182,23 @@ struct ipr_ioa_cfg *ioa_cfg = ipr_cmd->ioa_cfg; struct scsi_cmnd *scsi_cmd = ipr_cmd->scsi_cmd; u32 ioasc = be32_to_cpu(ipr_cmd->s.ioasa.hdr.ioasc); - unsigned long hrrq_flags; + unsigned long lock_flags; scsi_set_resid(scsi_cmd, be32_to_cpu(ipr_cmd->s.ioasa.hdr.residual_data_len)); if (likely(IPR_IOASC_SENSE_KEY(ioasc) == 0)) { scsi_dma_unmap(scsi_cmd); - spin_lock_irqsave(ipr_cmd->hrrq->lock, hrrq_flags); + spin_lock_irqsave(ipr_cmd->hrrq->lock, lock_flags); list_add_tail(&ipr_cmd->queue, &ipr_cmd->hrrq->hrrq_free_q); scsi_cmd->scsi_done(scsi_cmd); - spin_unlock_irqrestore(ipr_cmd->hrrq->lock, hrrq_flags); + spin_unlock_irqrestore(ipr_cmd->hrrq->lock, lock_flags); } else { - spin_lock_irqsave(ipr_cmd->hrrq->lock, hrrq_flags); + spin_lock_irqsave(ioa_cfg->host->host_lock, lock_flags); + spin_lock(&ipr_cmd->hrrq->_lock); ipr_erp_start(ioa_cfg, ipr_cmd); - spin_unlock_irqrestore(ipr_cmd->hrrq->lock, hrrq_flags); + spin_unlock(&ipr_cmd->hrrq->_lock); + spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags); } } @@ -9859,8 +9956,7 @@ ioa_cfg->host->max_channel = IPR_VSET_BUS; ioa_cfg->iopoll_weight = ioa_cfg->chip_cfg->iopoll_weight; - if (blk_iopoll_enabled && ioa_cfg->iopoll_weight && - ioa_cfg->sis64 && ioa_cfg->nvectors > 1) { + if (ioa_cfg->iopoll_weight && ioa_cfg->sis64 && ioa_cfg->nvectors > 1) { for (i = 1; i < ioa_cfg->hrrq_num; i++) { blk_iopoll_init(&ioa_cfg->hrrq[i].iopoll, ioa_cfg->iopoll_weight, ipr_iopoll); @@ -9889,8 +9985,7 @@ int i; spin_lock_irqsave(ioa_cfg->host->host_lock, lock_flags); - if (blk_iopoll_enabled && ioa_cfg->iopoll_weight && - ioa_cfg->sis64 && ioa_cfg->nvectors > 1) { + if (ioa_cfg->iopoll_weight && ioa_cfg->sis64 && ioa_cfg->nvectors > 1) { ioa_cfg->iopoll_weight = 0; for (i = 1; i < ioa_cfg->hrrq_num; i++) blk_iopoll_disable(&ioa_cfg->hrrq[i].iopoll); --- linux-3.13.0.orig/drivers/scsi/ipr.h +++ linux-3.13.0/drivers/scsi/ipr.h @@ -264,7 +264,7 @@ #define IPR_RUNTIME_RESET 0x40000000 #define IPR_IPL_INIT_MIN_STAGE_TIME 5 -#define IPR_IPL_INIT_DEFAULT_STAGE_TIME 15 +#define IPR_IPL_INIT_DEFAULT_STAGE_TIME 30 #define IPR_IPL_INIT_STAGE_UNKNOWN 0x0 #define IPR_IPL_INIT_STAGE_TRANSOP 0xB0000000 #define IPR_IPL_INIT_STAGE_MASK 0xff000000 @@ -1459,6 +1459,7 @@ #define IPR_NUM_TRACE_INDEX_BITS 8 #define IPR_NUM_TRACE_ENTRIES (1 << IPR_NUM_TRACE_INDEX_BITS) +#define IPR_TRACE_INDEX_MASK (IPR_NUM_TRACE_ENTRIES - 1) #define IPR_TRACE_SIZE (sizeof(struct ipr_trace_entry) * IPR_NUM_TRACE_ENTRIES) char trace_start[8]; #define IPR_TRACE_START_LABEL "trace" @@ -1585,6 +1586,7 @@ struct scsi_device *sdev; } u; + struct completion *eh_comp; struct ipr_hrr_queue *hrrq; struct ipr_ioa_cfg *ioa_cfg; }; --- linux-3.13.0.orig/drivers/scsi/isci/host.h +++ linux-3.13.0/drivers/scsi/isci/host.h @@ -311,9 +311,8 @@ } #define for_each_isci_host(id, ihost, pdev) \ - for (id = 0, ihost = to_pci_info(pdev)->hosts[id]; \ - id < ARRAY_SIZE(to_pci_info(pdev)->hosts) && ihost; \ - ihost = to_pci_info(pdev)->hosts[++id]) + for (id = 0; id < SCI_MAX_CONTROLLERS && \ + (ihost = to_pci_info(pdev)->hosts[id]); id++) static inline void wait_for_start(struct isci_host *ihost) { --- linux-3.13.0.orig/drivers/scsi/isci/port_config.c +++ linux-3.13.0/drivers/scsi/isci/port_config.c @@ -615,13 +615,6 @@ SCIC_SDS_APC_WAIT_LINK_UP_NOTIFICATION); } else { /* the phy is already the part of the port */ - u32 port_state = iport->sm.current_state_id; - - /* if the PORT'S state is resetting then the link up is from - * port hard reset in this case, we need to tell the port - * that link up is recieved - */ - BUG_ON(port_state != SCI_PORT_RESETTING); port_agent->phy_ready_mask |= 1 << phy_index; sci_port_link_up(iport, iphy); } --- linux-3.13.0.orig/drivers/scsi/isci/task.c +++ linux-3.13.0/drivers/scsi/isci/task.c @@ -801,7 +801,7 @@ /* XXX: need to cleanup any ireqs targeting this * domain_device */ - ret = TMF_RESP_FUNC_COMPLETE; + ret = -ENODEV; goto out; } --- linux-3.13.0.orig/drivers/scsi/libfc/fc_exch.c +++ linux-3.13.0/drivers/scsi/libfc/fc_exch.c @@ -733,8 +733,6 @@ if (resp) { resp(sp, fp, arg); res = true; - } else if (!IS_ERR(fp)) { - fc_frame_free(fp); } spin_lock_bh(&ep->ex_lock); @@ -1596,7 +1594,8 @@ * If new exch resp handler is valid then call that * first. */ - fc_invoke_resp(ep, sp, fp); + if (!fc_invoke_resp(ep, sp, fp)) + fc_frame_free(fp); fc_exch_release(ep); return; @@ -1695,7 +1694,8 @@ fc_exch_hold(ep); if (!rc) fc_exch_delete(ep); - fc_invoke_resp(ep, sp, fp); + if (!fc_invoke_resp(ep, sp, fp)) + fc_frame_free(fp); if (has_rec) fc_exch_timer_set(ep, ep->r_a_tov); fc_exch_release(ep); --- linux-3.13.0.orig/drivers/scsi/libfc/fc_fcp.c +++ linux-3.13.0/drivers/scsi/libfc/fc_fcp.c @@ -1039,11 +1039,26 @@ fc_fcp_pkt_hold(fsp); spin_unlock_irqrestore(&si->scsi_queue_lock, flags); - if (!fc_fcp_lock_pkt(fsp)) { + spin_lock_bh(&fsp->scsi_pkt_lock); + if (!(fsp->state & FC_SRB_COMPL)) { + fsp->state |= FC_SRB_COMPL; + /* + * TODO: dropping scsi_pkt_lock and then reacquiring + * again around fc_fcp_cleanup_cmd() is required, + * since fc_fcp_cleanup_cmd() calls into + * fc_seq_set_resp() and that func preempts cpu using + * schedule. May be schedule and related code should be + * removed instead of unlocking here to avoid scheduling + * while atomic bug. + */ + spin_unlock_bh(&fsp->scsi_pkt_lock); + fc_fcp_cleanup_cmd(fsp, error); + + spin_lock_bh(&fsp->scsi_pkt_lock); fc_io_compl(fsp); - fc_fcp_unlock_pkt(fsp); } + spin_unlock_bh(&fsp->scsi_pkt_lock); fc_fcp_pkt_release(fsp); spin_lock_irqsave(&si->scsi_queue_lock, flags); --- linux-3.13.0.orig/drivers/scsi/libiscsi.c +++ linux-3.13.0/drivers/scsi/libiscsi.c @@ -717,11 +717,21 @@ return NULL; } + if (data_size > ISCSI_DEF_MAX_RECV_SEG_LEN) { + iscsi_conn_printk(KERN_ERR, conn, "Invalid buffer len of %u for login task. Max len is %u\n", data_size, ISCSI_DEF_MAX_RECV_SEG_LEN); + return NULL; + } + task = conn->login_task; } else { if (session->state != ISCSI_STATE_LOGGED_IN) return NULL; + if (data_size != 0) { + iscsi_conn_printk(KERN_ERR, conn, "Can not send data buffer of len %u for op 0x%x\n", data_size, opcode); + return NULL; + } + BUG_ON(conn->c_stage == ISCSI_CONN_INITIAL_STAGE); BUG_ON(conn->c_stage == ISCSI_CONN_STOPPED); @@ -2901,10 +2911,10 @@ { struct iscsi_conn *conn = cls_conn->dd_data; struct iscsi_session *session = conn->session; - unsigned long flags; del_timer_sync(&conn->transport_timer); + mutex_lock(&session->eh_mutex); spin_lock_bh(&session->lock); conn->c_stage = ISCSI_CONN_CLEANUP_WAIT; if (session->leadconn == conn) { @@ -2916,28 +2926,6 @@ } spin_unlock_bh(&session->lock); - /* - * Block until all in-progress commands for this connection - * time out or fail. - */ - for (;;) { - spin_lock_irqsave(session->host->host_lock, flags); - if (!session->host->host_busy) { /* OK for ERL == 0 */ - spin_unlock_irqrestore(session->host->host_lock, flags); - break; - } - spin_unlock_irqrestore(session->host->host_lock, flags); - msleep_interruptible(500); - iscsi_conn_printk(KERN_INFO, conn, "iscsi conn_destroy(): " - "host_busy %d host_failed %d\n", - session->host->host_busy, - session->host->host_failed); - /* - * force eh_abort() to unblock - */ - wake_up(&conn->ehwait); - } - /* flush queued up work because we free the connection below */ iscsi_suspend_tx(conn); @@ -2950,6 +2938,7 @@ if (session->leadconn == conn) session->leadconn = NULL; spin_unlock_bh(&session->lock); + mutex_unlock(&session->eh_mutex); iscsi_destroy_conn(cls_conn); } --- linux-3.13.0.orig/drivers/scsi/libsas/sas_discover.c +++ linux-3.13.0/drivers/scsi/libsas/sas_discover.c @@ -500,6 +500,7 @@ struct sas_discovery_event *ev = to_sas_discovery_event(work); struct asd_sas_port *port = ev->port; struct sas_ha_struct *ha = port->ha; + struct domain_device *ddev = port->port_dev; /* prevent revalidation from finding sata links in recovery */ mutex_lock(&ha->disco_mutex); @@ -514,8 +515,9 @@ SAS_DPRINTK("REVALIDATING DOMAIN on port %d, pid:%d\n", port->id, task_pid_nr(current)); - if (port->port_dev) - res = sas_ex_revalidate_domain(port->port_dev); + if (ddev && (ddev->dev_type == SAS_FANOUT_EXPANDER_DEVICE || + ddev->dev_type == SAS_EDGE_EXPANDER_DEVICE)) + res = sas_ex_revalidate_domain(ddev); SAS_DPRINTK("done REVALIDATING DOMAIN on port %d, pid:%d, res 0x%x\n", port->id, task_pid_nr(current), res); --- linux-3.13.0.orig/drivers/scsi/lpfc/lpfc_crtn.h +++ linux-3.13.0/drivers/scsi/lpfc/lpfc_crtn.h @@ -278,6 +278,7 @@ struct lpfc_sli_ring *, uint32_t); void lpfc_sli4_handle_received_buffer(struct lpfc_hba *, struct hbq_dmabuf *); void lpfc_sli_def_mbox_cmpl(struct lpfc_hba *, LPFC_MBOXQ_t *); +void lpfc_sli4_unreg_rpi_cmpl_clr(struct lpfc_hba *, LPFC_MBOXQ_t *); int lpfc_sli_issue_iocb(struct lpfc_hba *, uint32_t, struct lpfc_iocbq *, uint32_t); void lpfc_sli_pcimem_bcopy(void *, void *, uint32_t); --- linux-3.13.0.orig/drivers/scsi/lpfc/lpfc_els.c +++ linux-3.13.0/drivers/scsi/lpfc/lpfc_els.c @@ -3668,6 +3668,11 @@ kfree(mp); mempool_free(pmb, phba->mbox_mem_pool); if (ndlp) { + lpfc_printf_vlog(ndlp->vport, KERN_INFO, LOG_NODE, + "0006 rpi%x DID:%x flg:%x %d map:%x %p\n", + ndlp->nlp_rpi, ndlp->nlp_DID, ndlp->nlp_flag, + atomic_read(&ndlp->kref.refcount), + ndlp->nlp_usg_map, ndlp); if (NLP_CHK_NODE_ACT(ndlp)) { lpfc_nlp_put(ndlp); /* This is the end of the default RPI cleanup logic for --- linux-3.13.0.orig/drivers/scsi/lpfc/lpfc_hbadisc.c +++ linux-3.13.0/drivers/scsi/lpfc/lpfc_hbadisc.c @@ -3413,6 +3413,11 @@ pmb->context1 = NULL; pmb->context2 = NULL; + lpfc_printf_vlog(vport, KERN_INFO, LOG_SLI, + "0002 rpi:%x DID:%x flg:%x %d map:%x %p\n", + ndlp->nlp_rpi, ndlp->nlp_DID, ndlp->nlp_flag, + atomic_read(&ndlp->kref.refcount), + ndlp->nlp_usg_map, ndlp); if (ndlp->nlp_flag & NLP_REG_LOGIN_SEND) ndlp->nlp_flag &= ~NLP_REG_LOGIN_SEND; @@ -3829,6 +3834,11 @@ ndlp->nlp_flag |= NLP_RPI_REGISTERED; ndlp->nlp_type |= NLP_FABRIC; lpfc_nlp_set_state(vport, ndlp, NLP_STE_UNMAPPED_NODE); + lpfc_printf_vlog(vport, KERN_INFO, LOG_SLI, + "0003 rpi:%x DID:%x flg:%x %d map%x %p\n", + ndlp->nlp_rpi, ndlp->nlp_DID, ndlp->nlp_flag, + atomic_read(&ndlp->kref.refcount), + ndlp->nlp_usg_map, ndlp); if (vport->port_state < LPFC_VPORT_READY) { /* Link up discovery requires Fabric registration. */ @@ -4215,8 +4225,15 @@ lpfc_initialize_node(vport, ndlp, did); spin_unlock_irqrestore(&phba->ndlp_lock, flags); - if (vport->phba->sli_rev == LPFC_SLI_REV4) + if (vport->phba->sli_rev == LPFC_SLI_REV4) { ndlp->nlp_rpi = lpfc_sli4_alloc_rpi(vport->phba); + lpfc_printf_vlog(vport, KERN_INFO, LOG_NODE, + "0008 rpi:%x DID:%x flg:%x refcnt:%d " + "map:%x %p\n", ndlp->nlp_rpi, ndlp->nlp_DID, + ndlp->nlp_flag, + atomic_read(&ndlp->kref.refcount), + ndlp->nlp_usg_map, ndlp); + } if (state != NLP_STE_UNUSED_NODE) @@ -4241,8 +4258,11 @@ if (ndlp->nlp_state == NLP_STE_UNUSED_NODE) return; lpfc_nlp_set_state(vport, ndlp, NLP_STE_UNUSED_NODE); - if (vport->phba->sli_rev == LPFC_SLI_REV4) + if (vport->phba->sli_rev == LPFC_SLI_REV4) { lpfc_cleanup_vports_rrqs(vport, ndlp); + lpfc_unreg_rpi(vport, ndlp); + } + lpfc_nlp_put(ndlp); return; } @@ -4480,7 +4500,17 @@ mbox->context1 = ndlp; mbox->mbox_cmpl = lpfc_nlp_logo_unreg; } else { - mbox->mbox_cmpl = lpfc_sli_def_mbox_cmpl; + if (phba->sli_rev == LPFC_SLI_REV4 && + (!(vport->load_flag & FC_UNLOADING)) && + (bf_get(lpfc_sli_intf_if_type, + &phba->sli4_hba.sli_intf) == + LPFC_SLI_INTF_IF_TYPE_2)) { + mbox->context1 = lpfc_nlp_get(ndlp); + mbox->mbox_cmpl = + lpfc_sli4_unreg_rpi_cmpl_clr; + } else + mbox->mbox_cmpl = + lpfc_sli_def_mbox_cmpl; } rc = lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT); @@ -4706,6 +4736,11 @@ /* For this case we need to cleanup the default rpi * allocated by the firmware. */ + lpfc_printf_vlog(vport, KERN_INFO, LOG_NODE, + "0005 rpi:%x DID:%x flg:%x %d map:%x %p\n", + ndlp->nlp_rpi, ndlp->nlp_DID, ndlp->nlp_flag, + atomic_read(&ndlp->kref.refcount), + ndlp->nlp_usg_map, ndlp); if ((mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL)) != NULL) { rc = lpfc_reg_rpi(phba, vport->vpi, ndlp->nlp_DID, @@ -5454,7 +5489,11 @@ ndlp->nlp_flag |= NLP_RPI_REGISTERED; ndlp->nlp_type |= NLP_FABRIC; lpfc_nlp_set_state(vport, ndlp, NLP_STE_UNMAPPED_NODE); - + lpfc_printf_vlog(vport, KERN_INFO, LOG_SLI, + "0004 rpi:%x DID:%x flg:%x %d map:%x %p\n", + ndlp->nlp_rpi, ndlp->nlp_DID, ndlp->nlp_flag, + atomic_read(&ndlp->kref.refcount), + ndlp->nlp_usg_map, ndlp); /* * Start issuing Fabric-Device Management Interface (FDMI) command to * 0xfffffa (FDMI well known port) or Delay issuing FDMI command if @@ -5618,9 +5657,15 @@ lpfc_initialize_node(vport, ndlp, did); INIT_LIST_HEAD(&ndlp->nlp_listp); - if (vport->phba->sli_rev == LPFC_SLI_REV4) + if (vport->phba->sli_rev == LPFC_SLI_REV4) { ndlp->nlp_rpi = lpfc_sli4_alloc_rpi(vport->phba); - + lpfc_printf_vlog(vport, KERN_INFO, LOG_NODE, + "0007 rpi:%x DID:%x flg:%x refcnt:%d " + "map:%x %p\n", ndlp->nlp_rpi, ndlp->nlp_DID, + ndlp->nlp_flag, + atomic_read(&ndlp->kref.refcount), + ndlp->nlp_usg_map, ndlp); + } lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_NODE, "node init: did:x%x", @@ -5646,9 +5691,9 @@ lpfc_printf_vlog(ndlp->vport, KERN_INFO, LOG_NODE, "0279 lpfc_nlp_release: ndlp:x%p did %x " - "usgmap:x%x refcnt:%d\n", + "usgmap:x%x refcnt:%d rpi:%x\n", (void *)ndlp, ndlp->nlp_DID, ndlp->nlp_usg_map, - atomic_read(&ndlp->kref.refcount)); + atomic_read(&ndlp->kref.refcount), ndlp->nlp_rpi); /* remove ndlp from action. */ lpfc_nlp_remove(ndlp->vport, ndlp); --- linux-3.13.0.orig/drivers/scsi/lpfc/lpfc_init.c +++ linux-3.13.0/drivers/scsi/lpfc/lpfc_init.c @@ -2634,9 +2634,19 @@ list_for_each_entry_safe(ndlp, next_ndlp, &vports[i]->fc_nodes, nlp_listp) { - if (NLP_CHK_NODE_ACT(ndlp)) + if (NLP_CHK_NODE_ACT(ndlp)) { ndlp->nlp_rpi = lpfc_sli4_alloc_rpi(phba); + lpfc_printf_vlog(ndlp->vport, KERN_INFO, + LOG_NODE, + "0009 rpi:%x DID:%x " + "flg:%x map:%x %p\n", + ndlp->nlp_rpi, + ndlp->nlp_DID, + ndlp->nlp_flag, + ndlp->nlp_usg_map, + ndlp); + } } } } @@ -2697,7 +2707,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]); @@ -2714,7 +2724,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; @@ -2800,8 +2811,18 @@ * RPI. Get a new RPI when the adapter port * comes back online. */ - if (phba->sli_rev == LPFC_SLI_REV4) + if (phba->sli_rev == LPFC_SLI_REV4) { + lpfc_printf_vlog(ndlp->vport, + KERN_INFO, LOG_NODE, + "0011 lpfc_offline: " + "ndlp:x%p did %x " + "usgmap:x%x rpi:%x\n", + ndlp, ndlp->nlp_DID, + ndlp->nlp_usg_map, + ndlp->nlp_rpi); + lpfc_sli4_free_rpi(phba, ndlp->nlp_rpi); + } lpfc_unreg_rpi(vports[i], ndlp); } } --- linux-3.13.0.orig/drivers/scsi/lpfc/lpfc_sli.c +++ linux-3.13.0/drivers/scsi/lpfc/lpfc_sli.c @@ -265,6 +265,16 @@ return NULL; q->hba_index = idx; + + /* + * insert barrier for instruction interlock : data from the hardware + * must have the valid bit checked before it can be copied and acted + * upon. Given what was seen in lpfc_sli4_cq_get() of speculative + * instructions allowing action on content before valid bit checked, + * add barrier here as well. May not be needed as "content" is a + * single 32-bit entity here (vs multi word structure for cq's). + */ + mb(); return eqe; } @@ -370,6 +380,17 @@ cqe = q->qe[q->hba_index].cqe; q->hba_index = idx; + + /* + * insert barrier for instruction interlock : data from the hardware + * must have the valid bit checked before it can be copied and acted + * upon. Speculative instructions were allowing a bcopy at the start + * of lpfc_sli4_fp_handle_wcqe(), which is called immediately + * after our return, to copy data before the valid bit check above + * was done. As such, some of the copied data was stale. The barrier + * ensures the check is before any data is copied. + */ + mb(); return cqe; } @@ -2219,6 +2240,46 @@ else mempool_free(pmb, phba->mbox_mem_pool); } + /** + * lpfc_sli4_unreg_rpi_cmpl_clr - mailbox completion handler + * @phba: Pointer to HBA context object. + * @pmb: Pointer to mailbox object. + * + * This function is the unreg rpi mailbox completion handler. It + * frees the memory resources associated with the completed mailbox + * command. An additional refrenece is put on the ndlp to prevent + * lpfc_nlp_release from freeing the rpi bit in the bitmask before + * the unreg mailbox command completes, this routine puts the + * reference back. + * + **/ +void +lpfc_sli4_unreg_rpi_cmpl_clr(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb) +{ + struct lpfc_vport *vport = pmb->vport; + struct lpfc_nodelist *ndlp; + + ndlp = pmb->context1; + if (pmb->u.mb.mbxCommand == MBX_UNREG_LOGIN) { + if (phba->sli_rev == LPFC_SLI_REV4 && + (bf_get(lpfc_sli_intf_if_type, + &phba->sli4_hba.sli_intf) == + LPFC_SLI_INTF_IF_TYPE_2)) { + if (ndlp) { + lpfc_printf_vlog(vport, KERN_INFO, LOG_SLI, + "0010 UNREG_LOGIN vpi:%x " + "rpi:%x DID:%x map:%x %p\n", + vport->vpi, ndlp->nlp_rpi, + ndlp->nlp_DID, + ndlp->nlp_usg_map, ndlp); + + lpfc_nlp_put(ndlp); + } + } + } + + mempool_free(pmb, phba->mbox_mem_pool); +} /** * lpfc_sli_handle_mb_event - Handle mailbox completions from firmware @@ -15260,14 +15321,14 @@ struct lpfc_rpi_hdr *rpi_hdr; unsigned long iflag; - max_rpi = phba->sli4_hba.max_cfg_param.max_rpi; - rpi_limit = phba->sli4_hba.next_rpi; - /* * Fetch the next logical rpi. Because this index is logical, * the driver starts at 0 each time. */ spin_lock_irqsave(&phba->hbalock, iflag); + max_rpi = phba->sli4_hba.max_cfg_param.max_rpi; + rpi_limit = phba->sli4_hba.next_rpi; + rpi = find_next_zero_bit(phba->sli4_hba.rpi_bmask, rpi_limit, 0); if (rpi >= rpi_limit) rpi = LPFC_RPI_ALLOC_ERROR; @@ -15276,6 +15337,9 @@ phba->sli4_hba.max_cfg_param.rpi_used++; phba->sli4_hba.rpi_count++; } + lpfc_printf_log(phba, KERN_INFO, LOG_SLI, + "0001 rpi:%x max:%x lim:%x\n", + (int) rpi, max_rpi, rpi_limit); /* * Don't try to allocate more rpi header regions if the device limit --- linux-3.13.0.orig/drivers/scsi/megaraid.c +++ linux-3.13.0/drivers/scsi/megaraid.c @@ -1967,7 +1967,7 @@ cmd->device->id, cmd->device->lun); if(list_empty(&adapter->pending_list)) - return FALSE; + return FAILED; list_for_each_safe(pos, next, &adapter->pending_list) { @@ -1990,7 +1990,7 @@ (aor==SCB_ABORT) ? "ABORTING":"RESET", scb->idx); - return FALSE; + return FAILED; } else { @@ -2015,12 +2015,12 @@ list_add_tail(SCSI_LIST(cmd), &adapter->completed_list); - return TRUE; + return SUCCESS; } } } - return FALSE; + return FAILED; } static inline int --- linux-3.13.0.orig/drivers/scsi/megaraid/megaraid_sas.h +++ linux-3.13.0/drivers/scsi/megaraid/megaraid_sas.h @@ -334,6 +334,8 @@ MR_EVT_ARGS_GENERIC, }; + +#define SGE_BUFFER_SIZE 4096 /* * define constants for device list query options */ @@ -1527,7 +1529,7 @@ u32 *reply_queue; dma_addr_t reply_queue_h; - unsigned long base_addr; + resource_size_t base_addr; struct megasas_register_set __iomem *reg_set; u32 *reply_post_host_index_addr[MR_MAX_MSIX_REG_ARRAY]; struct megasas_pd_list pd_list[MEGASAS_MAX_PD]; --- linux-3.13.0.orig/drivers/scsi/megaraid/megaraid_sas_base.c +++ linux-3.13.0/drivers/scsi/megaraid/megaraid_sas_base.c @@ -953,7 +953,7 @@ cpu_to_le32(upper_32_bits(cmd_to_abort->frame_phys_addr)); cmd->sync_cmd = 1; - cmd->cmd_status = 0xFF; + cmd->cmd_status = ENODATA; instance->instancet->issue_dcmd(instance, cmd); @@ -3820,7 +3820,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; @@ -5280,6 +5280,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; @@ -5297,9 +5300,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-3.13.0.orig/drivers/scsi/megaraid/megaraid_sas_fusion.c +++ linux-3.13.0/drivers/scsi/megaraid/megaraid_sas_fusion.c @@ -92,6 +92,8 @@ { struct megasas_register_set __iomem *regs; regs = instance->reg_set; + + instance->mask_interrupts = 0; /* For Thunderbolt/Invader also clear intr on enable */ writel(~0, ®s->outbound_intr_status); readl(®s->outbound_intr_status); @@ -100,7 +102,6 @@ /* Dummy readl to force pci flush */ readl(®s->outbound_intr_mask); - instance->mask_interrupts = 0; } /** --- linux-3.13.0.orig/drivers/scsi/mpt2sas/mpt2sas_scsih.c +++ linux-3.13.0/drivers/scsi/mpt2sas/mpt2sas_scsih.c @@ -8293,7 +8293,6 @@ mpt2sas_base_free_resources(ioc); pci_save_state(pdev); - pci_disable_device(pdev); pci_set_power_state(pdev, device_state); return 0; } --- linux-3.13.0.orig/drivers/scsi/mpt2sas/mpt2sas_transport.c +++ linux-3.13.0/drivers/scsi/mpt2sas/mpt2sas_transport.c @@ -1006,12 +1006,9 @@ &mpt2sas_phy->remote_identify); _transport_add_phy_to_an_existing_port(ioc, sas_node, mpt2sas_phy, mpt2sas_phy->remote_identify.sas_address); - } else { + } else memset(&mpt2sas_phy->remote_identify, 0 , sizeof(struct sas_identify)); - _transport_del_phy_from_an_existing_port(ioc, sas_node, - mpt2sas_phy); - } if (mpt2sas_phy->phy) mpt2sas_phy->phy->negotiated_linkrate = --- linux-3.13.0.orig/drivers/scsi/mpt3sas/mpt3sas_transport.c +++ linux-3.13.0/drivers/scsi/mpt3sas/mpt3sas_transport.c @@ -1003,12 +1003,9 @@ &mpt3sas_phy->remote_identify); _transport_add_phy_to_an_existing_port(ioc, sas_node, mpt3sas_phy, mpt3sas_phy->remote_identify.sas_address); - } else { + } else memset(&mpt3sas_phy->remote_identify, 0 , sizeof(struct sas_identify)); - _transport_del_phy_from_an_existing_port(ioc, sas_node, - mpt3sas_phy); - } if (mpt3sas_phy->phy) mpt3sas_phy->phy->negotiated_linkrate = --- linux-3.13.0.orig/drivers/scsi/mvsas/mv_sas.c +++ linux-3.13.0/drivers/scsi/mvsas/mv_sas.c @@ -441,14 +441,11 @@ static int mvs_task_prep_ata(struct mvs_info *mvi, struct mvs_task_exec_info *tei) { - struct sas_ha_struct *sha = mvi->sas; struct sas_task *task = tei->task; struct domain_device *dev = task->dev; struct mvs_device *mvi_dev = dev->lldd_dev; struct mvs_cmd_hdr *hdr = tei->hdr; struct asd_sas_port *sas_port = dev->port; - struct sas_phy *sphy = dev->phy; - struct asd_sas_phy *sas_phy = sha->sas_phy[sphy->number]; struct mvs_slot_info *slot; void *buf_prd; u32 tag = tei->tag, hdr_tag; @@ -468,7 +465,7 @@ slot->tx = mvi->tx_prod; del_q = TXQ_MODE_I | tag | (TXQ_CMD_STP << TXQ_CMD_SHIFT) | - (MVS_PHY_ID << TXQ_PHY_SHIFT) | + ((sas_port->phy_mask & TXQ_PHY_MASK) << TXQ_PHY_SHIFT) | (mvi_dev->taskfileset << TXQ_SRS_SHIFT); mvi->tx[mvi->tx_prod] = cpu_to_le32(del_q); @@ -991,6 +988,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-3.13.0.orig/drivers/scsi/qla2xxx/qla_def.h +++ linux-3.13.0/drivers/scsi/qla2xxx/qla_def.h @@ -2993,8 +2993,7 @@ IS_QLA82XX(ha) || IS_QLA83XX(ha) || \ IS_QLA8044(ha)) #define IS_MSIX_NACK_CAPABLE(ha) (IS_QLA81XX(ha) || IS_QLA83XX(ha)) -#define IS_NOPOLLING_TYPE(ha) ((IS_QLA25XX(ha) || IS_QLA81XX(ha) || \ - IS_QLA83XX(ha)) && (ha)->flags.msix_enabled) +#define IS_NOPOLLING_TYPE(ha) (IS_QLA81XX(ha) && (ha)->flags.msix_enabled) #define IS_FAC_REQUIRED(ha) (IS_QLA81XX(ha) || IS_QLA83XX(ha)) #define IS_NOCACHE_VPD_TYPE(ha) (IS_QLA81XX(ha) || IS_QLA83XX(ha)) #define IS_ALOGIO_CAPABLE(ha) (IS_QLA23XX(ha) || IS_FWI2_CAPABLE(ha)) --- linux-3.13.0.orig/drivers/scsi/qla2xxx/qla_gbl.h +++ linux-3.13.0/drivers/scsi/qla2xxx/qla_gbl.h @@ -721,8 +721,6 @@ extern int qla8044_rd_direct(struct scsi_qla_host *vha, const uint32_t crb_reg); extern void qla8044_wr_direct(struct scsi_qla_host *vha, const uint32_t crb_reg, const uint32_t value); -extern inline void qla8044_set_qsnt_ready(struct scsi_qla_host *vha); -extern inline void qla8044_need_reset_handler(struct scsi_qla_host *vha); extern int qla8044_device_state_handler(struct scsi_qla_host *vha); extern void qla8044_clear_qsnt_ready(struct scsi_qla_host *vha); extern void qla8044_clear_drv_active(struct scsi_qla_host *vha); --- linux-3.13.0.orig/drivers/scsi/qla2xxx/qla_isr.c +++ linux-3.13.0/drivers/scsi/qla2xxx/qla_isr.c @@ -2829,6 +2829,7 @@ qla24xx_enable_msix(struct qla_hw_data *ha, struct rsp_que *rsp) { #define MIN_MSIX_COUNT 2 +#define ATIO_VECTOR 2 int i, ret; struct msix_entry *entries; struct qla_msix_entry *qentry; @@ -2885,34 +2886,47 @@ } /* Enable MSI-X vectors for the base queue */ - for (i = 0; i < ha->msix_count; i++) { + for (i = 0; i < 2; i++) { qentry = &ha->msix_entries[i]; - if (QLA_TGT_MODE_ENABLED() && IS_ATIO_MSIX_CAPABLE(ha)) { - ret = request_irq(qentry->vector, - qla83xx_msix_entries[i].handler, - 0, qla83xx_msix_entries[i].name, rsp); - } else if (IS_P3P_TYPE(ha)) { + if (IS_P3P_TYPE(ha)) ret = request_irq(qentry->vector, qla82xx_msix_entries[i].handler, 0, qla82xx_msix_entries[i].name, rsp); - } else { + else ret = request_irq(qentry->vector, msix_entries[i].handler, 0, msix_entries[i].name, rsp); - } - if (ret) { - ql_log(ql_log_fatal, vha, 0x00cb, - "MSI-X: unable to register handler -- %x/%d.\n", - qentry->vector, ret); - qla24xx_disable_msix(ha); - ha->mqenable = 0; - goto msix_out; - } + if (ret) + goto msix_register_fail; qentry->have_irq = 1; qentry->rsp = rsp; rsp->msix = qentry; } + /* + * If target mode is enable, also request the vector for the ATIO + * queue. + */ + if (QLA_TGT_MODE_ENABLED() && IS_ATIO_MSIX_CAPABLE(ha)) { + qentry = &ha->msix_entries[ATIO_VECTOR]; + ret = request_irq(qentry->vector, + qla83xx_msix_entries[ATIO_VECTOR].handler, + 0, qla83xx_msix_entries[ATIO_VECTOR].name, rsp); + qentry->have_irq = 1; + qentry->rsp = rsp; + rsp->msix = qentry; + } + +msix_register_fail: + if (ret) { + ql_log(ql_log_fatal, vha, 0x00cb, + "MSI-X: unable to register handler -- %x/%d.\n", + qentry->vector, ret); + qla24xx_disable_msix(ha); + ha->mqenable = 0; + goto msix_out; + } + /* Enable MSI-X vector for response queue update for queue 0 */ if (IS_QLA83XX(ha)) { if (ha->msixbase && ha->mqiobase && --- linux-3.13.0.orig/drivers/scsi/qla2xxx/qla_nx2.c +++ linux-3.13.0/drivers/scsi/qla2xxx/qla_nx2.c @@ -146,7 +146,7 @@ return; } -inline void +static inline void qla8044_set_qsnt_ready(struct scsi_qla_host *vha) { uint32_t qsnt_state; --- linux-3.13.0.orig/drivers/scsi/qla2xxx/qla_target.c +++ linux-3.13.0/drivers/scsi/qla2xxx/qla_target.c @@ -1361,12 +1361,10 @@ static int qlt_check_reserve_free_req(struct scsi_qla_host *vha, uint32_t req_cnt) { - struct qla_hw_data *ha = vha->hw; - device_reg_t __iomem *reg = ha->iobase; uint32_t cnt; if (vha->req->cnt < (req_cnt + 2)) { - cnt = (uint16_t)RD_REG_DWORD(®->isp24.req_q_out); + cnt = (uint16_t)RD_REG_DWORD(vha->req->req_q_out); ql_dbg(ql_dbg_tgt, vha, 0xe00a, "Request ring circled: cnt=%d, vha->->ring_index=%d, " @@ -3186,7 +3184,8 @@ ql_dbg(ql_dbg_tgt_mgt, vha, 0xf02c, "SRR cmd %p (se_cmd %p, tag %d, op %x), " "sg_cnt=%d, offset=%d", cmd, &cmd->se_cmd, cmd->tag, - se_cmd->t_task_cdb[0], cmd->sg_cnt, cmd->offset); + se_cmd->t_task_cdb ? se_cmd->t_task_cdb[0] : 0, + cmd->sg_cnt, cmd->offset); qlt_handle_srr(vha, sctio, imm); --- linux-3.13.0.orig/drivers/scsi/qla2xxx/tcm_qla2xxx.c +++ linux-3.13.0/drivers/scsi/qla2xxx/tcm_qla2xxx.c @@ -717,6 +717,20 @@ qlt_xmit_tm_rsp(mcmd); } +static void tcm_qla2xxx_aborted_task(struct se_cmd *se_cmd) +{ + struct qla_tgt_cmd *cmd = container_of(se_cmd, + struct qla_tgt_cmd, se_cmd); + struct scsi_qla_host *vha = cmd->vha; + struct qla_hw_data *ha = vha->hw; + + if (!cmd->sg_mapped) + return; + + pci_unmap_sg(ha->pdev, cmd->sg, cmd->sg_cnt, cmd->dma_data_direction); + cmd->sg_mapped = 0; +} + /* Local pointer to allocated TCM configfs fabric module */ struct target_fabric_configfs *tcm_qla2xxx_fabric_configfs; struct target_fabric_configfs *tcm_qla2xxx_npiv_fabric_configfs; @@ -740,7 +754,16 @@ pr_debug("fc_rport domain: port_id 0x%06x\n", nacl->nport_id); node = btree_remove32(&lport->lport_fcport_map, nacl->nport_id); - WARN_ON(node && (node != se_nacl)); + if (WARN_ON(node && (node != se_nacl))) { + /* + * The nacl no longer matches what we think it should be. + * Most likely a new dynamic acl has been added while + * someone dropped the hardware lock. It clearly is a + * bug elsewhere, but this bit can't make things worse. + */ + btree_insert32(&lport->lport_fcport_map, nacl->nport_id, + node, GFP_ATOMIC); + } pr_debug("Removed from fcport_map: %p for WWNN: 0x%016LX, port_id: 0x%06x\n", se_nacl, nacl->nport_wwnn, nacl->nport_id); @@ -1445,7 +1468,7 @@ /* * Finally register the new FC Nexus with TCM */ - __transport_register_session(se_nacl->se_tpg, se_nacl, se_sess, sess); + transport_register_session(se_nacl->se_tpg, se_nacl, se_sess, sess); return 0; } @@ -1744,6 +1767,7 @@ .queue_data_in = tcm_qla2xxx_queue_data_in, .queue_status = tcm_qla2xxx_queue_status, .queue_tm_rsp = tcm_qla2xxx_queue_tm_rsp, + .aborted_task = tcm_qla2xxx_aborted_task, /* * Setup function pointers for generic logic in * target_core_fabric_configfs.c @@ -1791,6 +1815,7 @@ .queue_data_in = tcm_qla2xxx_queue_data_in, .queue_status = tcm_qla2xxx_queue_status, .queue_tm_rsp = tcm_qla2xxx_queue_tm_rsp, + .aborted_task = tcm_qla2xxx_aborted_task, /* * Setup function pointers for generic logic in * target_core_fabric_configfs.c --- linux-3.13.0.orig/drivers/scsi/qla4xxx/ql4_os.c +++ linux-3.13.0/drivers/scsi/qla4xxx/ql4_os.c @@ -802,6 +802,7 @@ int type; int rem = len; int rc = 0; + int size; memset(&chap_rec, 0, sizeof(chap_rec)); @@ -816,12 +817,14 @@ chap_rec.chap_type = param_info->value[0]; break; case ISCSI_CHAP_PARAM_USERNAME: - memcpy(chap_rec.username, param_info->value, - param_info->len); + size = min_t(size_t, sizeof(chap_rec.username), + param_info->len); + memcpy(chap_rec.username, param_info->value, size); break; case ISCSI_CHAP_PARAM_PASSWORD: - memcpy(chap_rec.password, param_info->value, - param_info->len); + size = min_t(size_t, sizeof(chap_rec.password), + param_info->len); + memcpy(chap_rec.password, param_info->value, size); break; case ISCSI_CHAP_PARAM_PASSWORD_LEN: chap_rec.password_length = param_info->value[0]; --- linux-3.13.0.orig/drivers/scsi/scsi.c +++ linux-3.13.0/drivers/scsi/scsi.c @@ -357,46 +357,103 @@ } EXPORT_SYMBOL(scsi_put_command); -static struct scsi_host_cmd_pool *scsi_get_host_cmd_pool(gfp_t gfp_mask) +static struct scsi_host_cmd_pool * +scsi_find_host_cmd_pool(struct Scsi_Host *shost) { + if (shost->hostt->cmd_size) + return shost->hostt->cmd_pool; + if (shost->unchecked_isa_dma) + return &scsi_cmd_dma_pool; + return &scsi_cmd_pool; +} + +static void +scsi_free_host_cmd_pool(struct scsi_host_cmd_pool *pool) +{ + kfree(pool->sense_name); + kfree(pool->cmd_name); + kfree(pool); +} + +static struct scsi_host_cmd_pool * +scsi_alloc_host_cmd_pool(struct Scsi_Host *shost) +{ + struct scsi_host_template *hostt = shost->hostt; + struct scsi_host_cmd_pool *pool; + + pool = kzalloc(sizeof(*pool), GFP_KERNEL); + if (!pool) + return NULL; + + pool->cmd_name = kasprintf(GFP_KERNEL, "%s_cmd", hostt->name); + pool->sense_name = kasprintf(GFP_KERNEL, "%s_sense", hostt->name); + if (!pool->cmd_name || !pool->sense_name) { + scsi_free_host_cmd_pool(pool); + return NULL; + } + + pool->slab_flags = SLAB_HWCACHE_ALIGN; + if (shost->unchecked_isa_dma) { + pool->slab_flags |= SLAB_CACHE_DMA; + pool->gfp_mask = __GFP_DMA; + } + return pool; +} + +static struct scsi_host_cmd_pool * +scsi_get_host_cmd_pool(struct Scsi_Host *shost) +{ + struct scsi_host_template *hostt = shost->hostt; struct scsi_host_cmd_pool *retval = NULL, *pool; + size_t cmd_size = sizeof(struct scsi_cmnd) + hostt->cmd_size; + /* * Select a command slab for this host and create it if not * yet existent. */ mutex_lock(&host_cmd_pool_mutex); - pool = (gfp_mask & __GFP_DMA) ? &scsi_cmd_dma_pool : - &scsi_cmd_pool; + pool = scsi_find_host_cmd_pool(shost); + if (!pool) { + pool = scsi_alloc_host_cmd_pool(shost); + if (!pool) + goto out; + } + if (!pool->users) { - pool->cmd_slab = kmem_cache_create(pool->cmd_name, - sizeof(struct scsi_cmnd), 0, + pool->cmd_slab = kmem_cache_create(pool->cmd_name, cmd_size, 0, pool->slab_flags, NULL); if (!pool->cmd_slab) - goto fail; + goto out_free_pool; pool->sense_slab = kmem_cache_create(pool->sense_name, SCSI_SENSE_BUFFERSIZE, 0, pool->slab_flags, NULL); - if (!pool->sense_slab) { - kmem_cache_destroy(pool->cmd_slab); - goto fail; - } + if (!pool->sense_slab) + goto out_free_slab; } pool->users++; retval = pool; - fail: +out: mutex_unlock(&host_cmd_pool_mutex); return retval; + +out_free_slab: + kmem_cache_destroy(pool->cmd_slab); +out_free_pool: + if (hostt->cmd_size) + scsi_free_host_cmd_pool(pool); + goto out; } -static void scsi_put_host_cmd_pool(gfp_t gfp_mask) +static void scsi_put_host_cmd_pool(struct Scsi_Host *shost) { + struct scsi_host_template *hostt = shost->hostt; struct scsi_host_cmd_pool *pool; mutex_lock(&host_cmd_pool_mutex); - pool = (gfp_mask & __GFP_DMA) ? &scsi_cmd_dma_pool : - &scsi_cmd_pool; + pool = scsi_find_host_cmd_pool(shost); + /* * This may happen if a driver has a mismatched get and put * of the command pool; the driver should be implicated in @@ -407,6 +464,8 @@ if (!--pool->users) { kmem_cache_destroy(pool->cmd_slab); kmem_cache_destroy(pool->sense_slab); + if (hostt->cmd_size) + scsi_free_host_cmd_pool(pool); } mutex_unlock(&host_cmd_pool_mutex); } @@ -479,14 +538,13 @@ */ int scsi_setup_command_freelist(struct Scsi_Host *shost) { - struct scsi_cmnd *cmd; const gfp_t gfp_mask = shost->unchecked_isa_dma ? GFP_DMA : GFP_KERNEL; + struct scsi_cmnd *cmd; spin_lock_init(&shost->free_list_lock); INIT_LIST_HEAD(&shost->free_list); - shost->cmd_pool = scsi_get_host_cmd_pool(gfp_mask); - + shost->cmd_pool = scsi_get_host_cmd_pool(shost); if (!shost->cmd_pool) return -ENOMEM; @@ -495,7 +553,7 @@ */ cmd = scsi_host_alloc_command(shost, gfp_mask); if (!cmd) { - scsi_put_host_cmd_pool(gfp_mask); + scsi_put_host_cmd_pool(shost); shost->cmd_pool = NULL; return -ENOMEM; } @@ -524,7 +582,7 @@ scsi_pool_free_command(shost->cmd_pool, cmd); } shost->cmd_pool = NULL; - scsi_put_host_cmd_pool(shost->unchecked_isa_dma ? GFP_DMA : GFP_KERNEL); + scsi_put_host_cmd_pool(shost); } #ifdef CONFIG_SCSI_LOGGING --- linux-3.13.0.orig/drivers/scsi/scsi_devinfo.c +++ linux-3.13.0/drivers/scsi/scsi_devinfo.c @@ -202,14 +202,17 @@ {"IOMEGA", "Io20S *F", NULL, BLIST_KEY}, {"INSITE", "Floptical F*8I", NULL, BLIST_KEY}, {"INSITE", "I325VM", NULL, BLIST_KEY}, + {"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}, {"Medion", "Flash XL MMC/SD", "2.6D", BLIST_FORCELUN}, {"MegaRAID", "LD", NULL, BLIST_FORCELUN}, {"MICROP", "4110", NULL, BLIST_NOTQ}, + {"MSFT", "Virtual HD", NULL, BLIST_NO_RSOC}, {"MYLEX", "DACARMRB", "*", BLIST_REPORTLUN2}, {"nCipher", "Fastness Crypto", NULL, BLIST_FORCELUN}, {"NAKAMICH", "MJ-4.8S", NULL, BLIST_FORCELUN | BLIST_SINGLELUN}, @@ -222,7 +225,9 @@ {"PIONEER", "CD-ROM DRM-602X", NULL, BLIST_FORCELUN | BLIST_SINGLELUN}, {"PIONEER", "CD-ROM DRM-604X", NULL, BLIST_FORCELUN | BLIST_SINGLELUN}, {"PIONEER", "CD-ROM DRM-624X", NULL, BLIST_FORCELUN | BLIST_SINGLELUN}, + {"Promise", "VTrak E610f", NULL, BLIST_SPARSELUN | BLIST_NO_RSOC}, {"Promise", "", NULL, BLIST_SPARSELUN}, + {"QNAP", "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-3.13.0.orig/drivers/scsi/scsi_error.c +++ linux-3.13.0/drivers/scsi/scsi_error.c @@ -161,7 +161,7 @@ else if (host->hostt->eh_timed_out) rtn = host->hostt->eh_timed_out(scmd); - scmd->result |= DID_TIME_OUT << 16; + set_host_byte(scmd, DID_TIME_OUT); if (unlikely(rtn == BLK_EH_NOT_HANDLED && !scsi_eh_scmd_add(scmd, SCSI_EH_CANCEL_CMD))) @@ -1860,8 +1860,10 @@ * is no point trying to lock the door of an off-line device. */ shost_for_each_device(sdev, shost) { - if (scsi_device_online(sdev) && sdev->locked) + if (scsi_device_online(sdev) && sdev->was_reset && sdev->locked) { scsi_eh_lock_door(sdev); + sdev->was_reset = 0; + } } /* @@ -2023,8 +2025,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 != shost->host_busy) { SCSI_LOG_ERROR_RECOVERY(1, --- linux-3.13.0.orig/drivers/scsi/scsi_lib.c +++ linux-3.13.0/drivers/scsi/scsi_lib.c @@ -787,7 +787,7 @@ int sense_deferred = 0; enum {ACTION_FAIL, ACTION_REPREP, ACTION_RETRY, ACTION_DELAYED_RETRY} action; - char *description = NULL; + unsigned long wait_for = (cmd->allowed + 1) * req->timeout; if (result) { sense_valid = scsi_command_normalize_sense(cmd, &sshdr); @@ -831,6 +831,14 @@ scsi_next_command(cmd); return; } + } else if (blk_rq_bytes(req) == 0 && result && !sense_deferred) { + /* + * Certain non BLOCK_PC requests are commands that don't + * actually transfer anything (FLUSH), so cannot use + * good_bytes != blk_rq_bytes(req) as the signal for an error. + * This sets the error explicitly for the problem case. + */ + error = __scsi_error_from_host_byte(cmd, result); } /* no bidi support for !REQ_TYPE_BLOCK_PC yet */ @@ -888,7 +896,6 @@ * and quietly refuse further access. */ cmd->device->changed = 1; - description = "Media Changed"; action = ACTION_FAIL; } else { /* Must have been a power glitch, or a @@ -916,27 +923,10 @@ cmd->device->use_10_for_rw = 0; action = ACTION_REPREP; } else if (sshdr.asc == 0x10) /* DIX */ { - description = "Host Data Integrity Failure"; action = ACTION_FAIL; error = -EILSEQ; /* INVALID COMMAND OPCODE or INVALID FIELD IN CDB */ } else if (sshdr.asc == 0x20 || sshdr.asc == 0x24) { - switch (cmd->cmnd[0]) { - case UNMAP: - description = "Discard failure"; - break; - case WRITE_SAME: - case WRITE_SAME_16: - if (cmd->cmnd[1] & 0x8) - description = "Discard failure"; - else - description = - "Write same failure"; - break; - default: - description = "Invalid command failure"; - break; - } action = ACTION_FAIL; error = -EREMOTEIO; } else @@ -944,10 +934,8 @@ break; case ABORTED_COMMAND: action = ACTION_FAIL; - if (sshdr.asc == 0x10) { /* DIF */ - description = "Target Data Integrity Failure"; + if (sshdr.asc == 0x10) /* DIF */ error = -EILSEQ; - } break; case NOT_READY: /* If the device is in the process of becoming @@ -966,37 +954,32 @@ action = ACTION_DELAYED_RETRY; break; default: - description = "Device not ready"; action = ACTION_FAIL; break; } - } else { - description = "Device not ready"; + } else action = ACTION_FAIL; - } break; case VOLUME_OVERFLOW: /* See SSC3rXX or current. */ action = ACTION_FAIL; break; default: - description = "Unhandled sense code"; action = ACTION_FAIL; break; } - } else { - description = "Unhandled error code"; + } else + action = ACTION_FAIL; + + if (action != ACTION_FAIL && + time_before(cmd->jiffies_at_alloc + wait_for, jiffies)) action = ACTION_FAIL; - } switch (action) { case ACTION_FAIL: /* Give up and fail the remainder of the request */ scsi_release_buffers(cmd); if (!(req->cmd_flags & REQ_QUIET)) { - if (description) - scmd_printk(KERN_INFO, cmd, "%s\n", - description); scsi_print_result(cmd); if (driver_byte(result) & DRIVER_SENSE) scsi_print_sense("", cmd); @@ -1250,9 +1233,11 @@ "rejecting I/O to dead device\n"); ret = BLKPREP_KILL; break; - case SDEV_QUIESCE: case SDEV_BLOCK: case SDEV_CREATED_BLOCK: + ret = BLKPREP_DEFER; + break; + case SDEV_QUIESCE: /* * If the devices is blocked we defer normal commands. */ @@ -1684,7 +1669,7 @@ host_dev = scsi_get_device(shost); if (host_dev && host_dev->dma_mask) - bounce_limit = dma_max_pfn(host_dev) << PAGE_SHIFT; + bounce_limit = (u64)dma_max_pfn(host_dev) << PAGE_SHIFT; return bounce_limit; } --- linux-3.13.0.orig/drivers/scsi/scsi_netlink.c +++ linux-3.13.0/drivers/scsi/scsi_netlink.c @@ -77,7 +77,7 @@ goto next_msg; } - if (!capable(CAP_SYS_ADMIN)) { + if (!netlink_capable(skb, CAP_SYS_ADMIN)) { err = -EPERM; goto next_msg; } --- linux-3.13.0.orig/drivers/scsi/scsi_scan.c +++ linux-3.13.0/drivers/scsi/scsi_scan.c @@ -320,6 +320,7 @@ struct Scsi_Host *shost = dev_to_shost(dev->parent); unsigned long flags; + starget->state = STARGET_DEL; transport_destroy_device(dev); spin_lock_irqsave(shost->host_lock, flags); if (shost->hostt->target_destroy) @@ -371,6 +372,37 @@ } /** + * scsi_target_reap_ref_release - remove target from visibility + * @kref: the reap_ref in the target being released + * + * Called on last put of reap_ref, which is the indication that no device + * under this target is visible anymore, so render the target invisible in + * sysfs. Note: we have to be in user context here because the target reaps + * should be done in places where the scsi device visibility is being removed. + */ +static void scsi_target_reap_ref_release(struct kref *kref) +{ + struct scsi_target *starget + = container_of(kref, struct scsi_target, reap_ref); + + /* + * if we get here and the target is still in the CREATED state that + * means it was allocated but never made visible (because a scan + * turned up no LUNs), so don't call device_del() on it. + */ + if (starget->state != STARGET_CREATED) { + transport_remove_device(&starget->dev); + device_del(&starget->dev); + } + scsi_target_destroy(starget); +} + +static void scsi_target_reap_ref_put(struct scsi_target *starget) +{ + kref_put(&starget->reap_ref, scsi_target_reap_ref_release); +} + +/** * scsi_alloc_target - allocate a new or find an existing target * @parent: parent of the target (need not be a scsi host) * @channel: target channel number (zero if no channels) @@ -392,7 +424,7 @@ + shost->transportt->target_size; struct scsi_target *starget; struct scsi_target *found_target; - int error; + int error, ref_got; starget = kzalloc(size, GFP_KERNEL); if (!starget) { @@ -401,7 +433,7 @@ } dev = &starget->dev; device_initialize(dev); - starget->reap_ref = 1; + kref_init(&starget->reap_ref); dev->parent = get_device(parent); dev_set_name(dev, "target%d:%d:%d", shost->host_no, channel, id); dev->bus = &scsi_bus_type; @@ -441,29 +473,36 @@ return starget; found: - found_target->reap_ref++; + /* + * release routine already fired if kref is zero, so if we can still + * take the reference, the target must be alive. If we can't, it must + * be dying and we need to wait for a new target + */ + ref_got = kref_get_unless_zero(&found_target->reap_ref); + spin_unlock_irqrestore(shost->host_lock, flags); - if (found_target->state != STARGET_DEL) { + if (ref_got) { put_device(dev); return found_target; } - /* Unfortunately, we found a dying target; need to - * wait until it's dead before we can get a new one */ + /* + * Unfortunately, we found a dying target; need to wait until it's + * dead before we can get a new one. There is an anomaly here. We + * *should* call scsi_target_reap() to balance the kref_get() of the + * reap_ref above. However, since the target being released, it's + * already invisible and the reap_ref is irrelevant. If we call + * scsi_target_reap() we might spuriously do another device_del() on + * an already invisible target. + */ put_device(&found_target->dev); - flush_scheduled_work(); + /* + * length of time is irrelevant here, we just want to yield the CPU + * for a tick to avoid busy waiting for the target to die. + */ + msleep(1); goto retry; } -static void scsi_target_reap_usercontext(struct work_struct *work) -{ - struct scsi_target *starget = - container_of(work, struct scsi_target, ew.work); - - transport_remove_device(&starget->dev); - device_del(&starget->dev); - scsi_target_destroy(starget); -} - /** * scsi_target_reap - check to see if target is in use and destroy if not * @starget: target to be checked @@ -474,28 +513,13 @@ */ void scsi_target_reap(struct scsi_target *starget) { - struct Scsi_Host *shost = dev_to_shost(starget->dev.parent); - unsigned long flags; - enum scsi_target_state state; - int empty = 0; - - spin_lock_irqsave(shost->host_lock, flags); - state = starget->state; - if (--starget->reap_ref == 0 && list_empty(&starget->devices)) { - empty = 1; - starget->state = STARGET_DEL; - } - spin_unlock_irqrestore(shost->host_lock, flags); - - if (!empty) - return; - - BUG_ON(state == STARGET_DEL); - if (state == STARGET_CREATED) - scsi_target_destroy(starget); - else - execute_in_process_context(scsi_target_reap_usercontext, - &starget->ew); + /* + * serious problem if this triggers: STARGET_DEL is only set in the if + * the reap_ref drops to zero, so we're trying to do another final put + * on an already released kref + */ + BUG_ON(starget->state == STARGET_DEL); + scsi_target_reap_ref_put(starget); } /** @@ -876,6 +900,12 @@ */ if (*bflags & BLIST_MAX_512) blk_queue_max_hw_sectors(sdev->request_queue, 512); + /* + * Max 1024 sector transfer length for targets that report incorrect + * max/optimal lengths and relied on the old block layer safe default + */ + else if (*bflags & BLIST_MAX_1024) + blk_queue_max_hw_sectors(sdev->request_queue, 1024); /* * Some devices may not want to have a start command automatically @@ -898,6 +928,12 @@ if (*bflags & BLIST_USE_10_BYTE_MS) sdev->use_10_for_ms = 1; + /* some devices don't like REPORT SUPPORTED OPERATION CODES + * and will simply timeout causing sd_mod init to take a very + * very long time */ + if (*bflags & BLIST_NO_RSOC) + sdev->no_report_opcodes = 1; + /* set the device running here so that slave configure * may do I/O */ ret = scsi_device_set_state(sdev, SDEV_RUNNING); @@ -926,7 +962,9 @@ sdev->eh_timeout = SCSI_DEFAULT_EH_TIMEOUT; - if (*bflags & BLIST_SKIP_VPD_PAGES) + if (*bflags & BLIST_TRY_VPD_PAGES) + sdev->try_vpd_pages = 1; + else if (*bflags & BLIST_SKIP_VPD_PAGES) sdev->skip_vpd_pages = 1; transport_configure_device(&sdev->sdev_gendev); @@ -1532,6 +1570,10 @@ } mutex_unlock(&shost->scan_mutex); scsi_autopm_put_target(starget); + /* + * paired with scsi_alloc_target(). Target will be destroyed unless + * scsi_probe_and_add_lun made an underlying device visible + */ scsi_target_reap(starget); put_device(&starget->dev); @@ -1612,8 +1654,10 @@ out_reap: scsi_autopm_put_target(starget); - /* now determine if the target has any children at all - * and if not, nuke it */ + /* + * paired with scsi_alloc_target(): determine if the target has + * any children at all and if not, nuke it + */ scsi_target_reap(starget); put_device(&starget->dev); --- linux-3.13.0.orig/drivers/scsi/scsi_sysfs.c +++ linux-3.13.0/drivers/scsi/scsi_sysfs.c @@ -369,17 +369,14 @@ { struct scsi_device *sdev; struct device *parent; - struct scsi_target *starget; struct list_head *this, *tmp; unsigned long flags; sdev = container_of(work, struct scsi_device, ew.work); parent = sdev->sdev_gendev.parent; - starget = to_scsi_target(parent); spin_lock_irqsave(sdev->host->host_lock, flags); - starget->reap_ref++; list_del(&sdev->siblings); list_del(&sdev->same_target_siblings); list_del(&sdev->starved_entry); @@ -399,8 +396,6 @@ /* NULL queue means the device can't be used */ sdev->request_queue = NULL; - scsi_target_reap(scsi_target(sdev)); - kfree(sdev->inquiry); kfree(sdev); @@ -873,7 +868,7 @@ return -EINVAL; sdev->queue_ramp_up_period = msecs_to_jiffies(period); - return period; + return count; } static struct device_attribute sdev_attr_queue_ramp_up_period = @@ -1033,6 +1028,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; @@ -1057,6 +1060,13 @@ sdev->host->hostt->slave_destroy(sdev); transport_destroy_device(dev); + /* + * Paired with the kref_get() in scsi_sysfs_initialize(). We have + * remoed sysfs visibility from the device, so make the target + * invisible if this was the last device underneath it. + */ + scsi_target_reap(scsi_target(sdev)); + put_device(dev); } @@ -1119,7 +1129,7 @@ continue; if (starget->dev.parent == dev || &starget->dev == dev) { /* assuming new targets arrive at the end */ - starget->reap_ref++; + kref_get(&starget->reap_ref); spin_unlock_irqrestore(shost->host_lock, flags); if (last) scsi_target_reap(last); @@ -1203,6 +1213,12 @@ list_add_tail(&sdev->same_target_siblings, &starget->devices); list_add_tail(&sdev->siblings, &shost->__devices); spin_unlock_irqrestore(shost->host_lock, flags); + /* + * device can now only be removed via __scsi_remove_device() so hold + * the target. Target will be held in CREATED state until something + * beneath it becomes visible (in which case it moves to RUNNING) + */ + kref_get(&starget->reap_ref); } int scsi_is_sdev_device(const struct device *dev) --- linux-3.13.0.orig/drivers/scsi/scsi_transport_sas.c +++ linux-3.13.0/drivers/scsi/scsi_transport_sas.c @@ -1621,8 +1621,6 @@ list_del(&rphy->list); mutex_unlock(&sas_host->lock); - sas_bsg_remove(shost, rphy); - transport_destroy_device(dev); put_device(dev); @@ -1681,6 +1679,7 @@ } sas_rphy_unlink(rphy); + sas_bsg_remove(NULL, rphy); transport_remove_device(dev); device_del(dev); } --- linux-3.13.0.orig/drivers/scsi/scsi_transport_srp.c +++ linux-3.13.0/drivers/scsi/scsi_transport_srp.c @@ -389,6 +389,36 @@ } } +/** + * scsi_request_fn_active() - number of kernel threads inside scsi_request_fn() + * @shost: SCSI host for which to count the number of scsi_request_fn() callers. + * + * To do: add support for scsi-mq in this function. + */ +static int scsi_request_fn_active(struct Scsi_Host *shost) +{ + struct scsi_device *sdev; + struct request_queue *q; + int request_fn_active = 0; + + shost_for_each_device(sdev, shost) { + q = sdev->request_queue; + + spin_lock_irq(q->queue_lock); + request_fn_active += q->request_fn_active; + spin_unlock_irq(q->queue_lock); + } + + return request_fn_active; +} + +/* Wait until ongoing shost->hostt->queuecommand() calls have finished. */ +static void srp_wait_for_queuecommand(struct Scsi_Host *shost) +{ + while (scsi_request_fn_active(shost)) + msleep(20); +} + static void __rport_fail_io_fast(struct srp_rport *rport) { struct Scsi_Host *shost = rport_to_shost(rport); @@ -402,8 +432,10 @@ /* Involve the LLD if possible to terminate all I/O on the rport. */ i = to_srp_internal(shost->transportt); - if (i->f->terminate_rport_io) + if (i->f->terminate_rport_io) { + srp_wait_for_queuecommand(shost); i->f->terminate_rport_io(rport); + } } /** @@ -501,26 +533,6 @@ EXPORT_SYMBOL(srp_start_tl_fail_timers); /** - * scsi_request_fn_active() - number of kernel threads inside scsi_request_fn() - */ -static int scsi_request_fn_active(struct Scsi_Host *shost) -{ - struct scsi_device *sdev; - struct request_queue *q; - int request_fn_active = 0; - - shost_for_each_device(sdev, shost) { - q = sdev->request_queue; - - spin_lock_irq(q->queue_lock); - request_fn_active += q->request_fn_active; - spin_unlock_irq(q->queue_lock); - } - - return request_fn_active; -} - -/** * srp_reconnect_rport() - reconnect to an SRP target port * * Blocks SCSI command queueing before invoking reconnect() such that @@ -554,8 +566,7 @@ if (res) goto out; scsi_target_block(&shost->shost_gendev); - while (scsi_request_fn_active(shost)) - msleep(20); + srp_wait_for_queuecommand(shost); res = i->f->reconnect(rport); pr_debug("%s (state %d): transport.reconnect() returned %d\n", dev_name(&shost->shost_gendev), rport->state, res); --- linux-3.13.0.orig/drivers/scsi/sd.c +++ linux-3.13.0/drivers/scsi/sd.c @@ -830,7 +830,7 @@ static int scsi_setup_flush_cmnd(struct scsi_device *sdp, struct request *rq) { - rq->timeout *= SD_FLUSH_TIMEOUT_MULTIPLIER; + rq->timeout = rq->q->rq_timeout * SD_FLUSH_TIMEOUT_MULTIPLIER; rq->retries = SD_MAX_RETRIES; rq->cmd[0] = SYNCHRONIZE_CACHE; rq->cmd_len = 10; @@ -1463,8 +1463,8 @@ sd_print_sense_hdr(sdkp, &sshdr); /* we need to evaluate the error return */ if (scsi_sense_valid(&sshdr) && - /* 0x3a is medium not present */ - sshdr.asc == 0x3a) + (sshdr.asc == 0x3a || /* medium not present */ + sshdr.asc == 0x20)) /* invalid command */ /* this is no error here */ return 0; @@ -1601,6 +1601,7 @@ { u64 start_lba = blk_rq_pos(scmd->request); u64 end_lba = blk_rq_pos(scmd->request) + (scsi_bufflen(scmd) / 512); + u64 factor = scmd->device->sector_size / 512; u64 bad_lba; int info_valid; /* @@ -1622,16 +1623,9 @@ if (scsi_bufflen(scmd) <= scmd->device->sector_size) return 0; - if (scmd->device->sector_size < 512) { - /* only legitimate sector_size here is 256 */ - start_lba <<= 1; - end_lba <<= 1; - } else { - /* be careful ... don't want any overflows */ - u64 factor = scmd->device->sector_size / 512; - do_div(start_lba, factor); - do_div(end_lba, factor); - } + /* be careful ... don't want any overflows */ + do_div(start_lba, factor); + do_div(end_lba, factor); /* The bad lba was reported incorrectly, we have no idea where * the error is. @@ -2198,8 +2192,7 @@ if (sector_size != 512 && sector_size != 1024 && sector_size != 2048 && - sector_size != 4096 && - sector_size != 256) { + sector_size != 4096) { sd_printk(KERN_NOTICE, sdkp, "Unsupported sector size %d.\n", sector_size); /* @@ -2250,8 +2243,6 @@ sdkp->capacity <<= 2; else if (sector_size == 1024) sdkp->capacity <<= 1; - else if (sector_size == 256) - sdkp->capacity >>= 1; blk_queue_physical_block_size(sdp->request_queue, sdkp->physical_block_size); @@ -2454,7 +2445,10 @@ } sdkp->DPOFUA = (data.device_specific & 0x10) != 0; - if (sdkp->DPOFUA && !sdkp->device->use_10_for_rw) { + if (sdp->broken_fua) { + sd_printk(KERN_NOTICE, sdkp, "Disabling FUA\n"); + sdkp->DPOFUA = 0; + } else if (sdkp->DPOFUA && !sdkp->device->use_10_for_rw) { sd_printk(KERN_NOTICE, sdkp, "Uses READ/WRITE(6), disabling FUA\n"); sdkp->DPOFUA = 0; @@ -2688,6 +2682,11 @@ static int sd_try_extended_inquiry(struct scsi_device *sdp) { + /* Attempt VPD inquiry if the device blacklist explicitly calls + * for it. + */ + if (sdp->try_vpd_pages) + return 1; /* * Although VPD inquiries can go to SCSI-2 type devices, * some USB ones crash on receiving them, and the pages @@ -3135,8 +3134,8 @@ struct scsi_disk *sdkp = scsi_disk_get_from_dev(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"); @@ -3177,6 +3176,9 @@ struct scsi_disk *sdkp = scsi_disk_get_from_dev(dev); int ret = 0; + if (!sdkp) /* E.g.: runtime resume at the start of sd_probe() */ + return 0; + if (!sdkp->device->manage_start_stop) goto done; --- linux-3.13.0.orig/drivers/scsi/ses.c +++ linux-3.13.0/drivers/scsi/ses.c @@ -70,6 +70,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 */ @@ -78,9 +79,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, @@ -436,7 +454,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-3.13.0.orig/drivers/scsi/sg.c +++ linux-3.13.0/drivers/scsi/sg.c @@ -522,7 +522,7 @@ sg_new_read(Sg_fd * sfp, char __user *buf, size_t count, Sg_request * srp) { sg_io_hdr_t *hp = &srp->header; - int err = 0; + int err = 0, err2; int len; if (count < SZ_SG_IO_HDR) { @@ -551,8 +551,8 @@ goto err_out; } err_out: - err = sg_finish_rem_req(srp); - return (0 == err) ? count : err; + err2 = sg_finish_rem_req(srp); + return err ? : err2 ? : count; } static ssize_t @@ -633,7 +633,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; @@ -1258,7 +1259,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; @@ -1694,6 +1695,9 @@ md->from_user = 0; } + if (unlikely(iov_count > UIO_MAXIOV)) + return -EINVAL; + if (iov_count) { int len, size = sizeof(struct sg_iovec) * iov_count; struct iovec *iov; --- linux-3.13.0.orig/drivers/scsi/sr.c +++ linux-3.13.0/drivers/scsi/sr.c @@ -142,6 +142,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 @@ -1006,6 +1009,7 @@ blk_queue_prep_rq(cd->device->request_queue, scsi_prep_fn); del_gendisk(cd->disk); + dev_set_drvdata(dev, NULL); mutex_lock(&sr_ref_mutex); kref_put(&cd->kref, sr_kref_release); --- linux-3.13.0.orig/drivers/scsi/st.c +++ linux-3.13.0/drivers/scsi/st.c @@ -1262,9 +1262,9 @@ spin_lock(&st_use_lock); STp->in_use = 0; spin_unlock(&st_use_lock); - scsi_tape_put(STp); if (resumed) scsi_autopm_put_device(STp->device); + scsi_tape_put(STp); return retval; } --- linux-3.13.0.orig/drivers/scsi/storvsc_drv.c +++ linux-3.13.0/drivers/scsi/storvsc_drv.c @@ -32,7 +32,7 @@ #include #include #include -#include +#include #include #include #include @@ -308,42 +308,39 @@ * This is the end of Protocol specific defines. */ +static int storvsc_ringbuffer_size = (256 * PAGE_SIZE); +static u32 max_outstanding_req_per_channel; -/* - * We setup a mempool to allocate request structures for this driver - * on a per-lun basis. The following define specifies the number of - * elements in the pool. - */ - -#define STORVSC_MIN_BUF_NR 64 -static int storvsc_ringbuffer_size = (20 * PAGE_SIZE); +static int storvsc_vcpus_per_sub_channel = 4; module_param(storvsc_ringbuffer_size, int, S_IRUGO); MODULE_PARM_DESC(storvsc_ringbuffer_size, "Ring buffer size (bytes)"); +module_param(storvsc_vcpus_per_sub_channel, int, S_IRUGO); +MODULE_PARM_DESC(vcpus_per_sub_channel, "Ratio of VCPUs to subchannels"); /* * Timeout in seconds for all devices managed by this driver. */ static int storvsc_timeout = 180; -#define STORVSC_MAX_IO_REQUESTS 200 - -static void storvsc_on_channel_callback(void *context); +static int msft_blist_flags = BLIST_TRY_VPD_PAGES; -/* - * In Hyper-V, each port/path/target maps to 1 scsi host adapter. In - * reality, the path/target is not used (ie always set to 0) so our - * scsi host adapter essentially has 1 bus with 1 target that contains - * up to 256 luns. - */ -#define STORVSC_MAX_LUNS_PER_TARGET 64 -#define STORVSC_MAX_TARGETS 1 -#define STORVSC_MAX_CHANNELS 1 +static void storvsc_on_channel_callback(void *context); +#define STORVSC_MAX_LUNS_PER_TARGET 255 +#define STORVSC_MAX_TARGETS 2 +#define STORVSC_MAX_CHANNELS 8 + +#define STORVSC_FC_MAX_LUNS_PER_TARGET 255 +#define STORVSC_FC_MAX_TARGETS 128 +#define STORVSC_FC_MAX_CHANNELS 8 + +#define STORVSC_IDE_MAX_LUNS_PER_TARGET 64 +#define STORVSC_IDE_MAX_TARGETS 1 +#define STORVSC_IDE_MAX_CHANNELS 1 struct storvsc_cmd_request { - struct list_head entry; struct scsi_cmnd *cmd; unsigned int bounce_sgl_count; @@ -354,8 +351,10 @@ /* Synchronize the request/response if needed */ struct completion wait_event; - unsigned char *sense_buffer; - struct hv_multipage_buffer data_buffer; + struct vmbus_channel_packet_multipage_buffer mpb; + struct vmbus_packet_mpb_array *payload; + u32 payload_sz; + struct vstor_packet vstor_packet; }; @@ -381,16 +380,15 @@ unsigned char path_id; unsigned char target_id; + /* + * Max I/O, the device can support. + */ + u32 max_transfer_bytes; /* Used for vsc/vsp channel reset process */ struct storvsc_cmd_request init_request; struct storvsc_cmd_request reset_request; }; -struct stor_mem_pools { - struct kmem_cache *request_pool; - mempool_t *request_mempool; -}; - struct hv_host_device { struct hv_device *dev; unsigned int port; @@ -610,19 +608,6 @@ return NULL; } -/* Disgusting wrapper functions */ -static inline unsigned long sg_kmap_atomic(struct scatterlist *sgl, int idx) -{ - void *addr = kmap_atomic(sg_page(sgl + idx)); - return (unsigned long)addr; -} - -static inline void sg_kunmap_atomic(unsigned long addr) -{ - kunmap_atomic((void *)addr); -} - - /* Assume the original sgl has enough room */ static unsigned int copy_from_bounce_buffer(struct scatterlist *orig_sgl, struct scatterlist *bounce_sgl, @@ -637,32 +622,38 @@ unsigned long bounce_addr = 0; unsigned long dest_addr = 0; unsigned long flags; + struct scatterlist *cur_dest_sgl; + struct scatterlist *cur_src_sgl; local_irq_save(flags); - + cur_dest_sgl = orig_sgl; + cur_src_sgl = bounce_sgl; for (i = 0; i < orig_sgl_count; i++) { - dest_addr = sg_kmap_atomic(orig_sgl,i) + orig_sgl[i].offset; + dest_addr = (unsigned long) + kmap_atomic(sg_page(cur_dest_sgl)) + + cur_dest_sgl->offset; dest = dest_addr; - destlen = orig_sgl[i].length; + destlen = cur_dest_sgl->length; if (bounce_addr == 0) - bounce_addr = sg_kmap_atomic(bounce_sgl,j); + bounce_addr = (unsigned long)kmap_atomic( + sg_page(cur_src_sgl)); while (destlen) { - src = bounce_addr + bounce_sgl[j].offset; - srclen = bounce_sgl[j].length - bounce_sgl[j].offset; + src = bounce_addr + cur_src_sgl->offset; + srclen = cur_src_sgl->length - cur_src_sgl->offset; copylen = min(srclen, destlen); memcpy((void *)dest, (void *)src, copylen); total_copied += copylen; - bounce_sgl[j].offset += copylen; + cur_src_sgl->offset += copylen; destlen -= copylen; dest += copylen; - if (bounce_sgl[j].offset == bounce_sgl[j].length) { + if (cur_src_sgl->offset == cur_src_sgl->length) { /* full */ - sg_kunmap_atomic(bounce_addr); + kunmap_atomic((void *)bounce_addr); j++; /* @@ -676,21 +667,27 @@ /* * We are done; cleanup and return. */ - sg_kunmap_atomic(dest_addr - orig_sgl[i].offset); + kunmap_atomic((void *)(dest_addr - + cur_dest_sgl->offset)); local_irq_restore(flags); return total_copied; } /* if we need to use another bounce buffer */ - if (destlen || i != orig_sgl_count - 1) - bounce_addr = sg_kmap_atomic(bounce_sgl,j); + if (destlen || i != orig_sgl_count - 1) { + cur_src_sgl = sg_next(cur_src_sgl); + bounce_addr = (unsigned long) + kmap_atomic( + sg_page(cur_src_sgl)); + } } else if (destlen == 0 && i == orig_sgl_count - 1) { /* unmap the last bounce that is < PAGE_SIZE */ - sg_kunmap_atomic(bounce_addr); + kunmap_atomic((void *)bounce_addr); } } - sg_kunmap_atomic(dest_addr - orig_sgl[i].offset); + kunmap_atomic((void *)(dest_addr - cur_dest_sgl->offset)); + cur_dest_sgl = sg_next(cur_dest_sgl); } local_irq_restore(flags); @@ -711,48 +708,62 @@ unsigned long bounce_addr = 0; unsigned long src_addr = 0; unsigned long flags; + struct scatterlist *cur_src_sgl; + struct scatterlist *cur_dest_sgl; local_irq_save(flags); + cur_src_sgl = orig_sgl; + cur_dest_sgl = bounce_sgl; + for (i = 0; i < orig_sgl_count; i++) { - src_addr = sg_kmap_atomic(orig_sgl,i) + orig_sgl[i].offset; + src_addr = (unsigned long) + kmap_atomic(sg_page(cur_src_sgl)) + + cur_src_sgl->offset; src = src_addr; - srclen = orig_sgl[i].length; + srclen = cur_src_sgl->length; if (bounce_addr == 0) - bounce_addr = sg_kmap_atomic(bounce_sgl,j); + bounce_addr = (unsigned long) + kmap_atomic(sg_page(cur_dest_sgl)); while (srclen) { /* assume bounce offset always == 0 */ - dest = bounce_addr + bounce_sgl[j].length; - destlen = PAGE_SIZE - bounce_sgl[j].length; + dest = bounce_addr + cur_dest_sgl->length; + destlen = PAGE_SIZE - cur_dest_sgl->length; copylen = min(srclen, destlen); memcpy((void *)dest, (void *)src, copylen); total_copied += copylen; - bounce_sgl[j].length += copylen; + cur_dest_sgl->length += copylen; srclen -= copylen; src += copylen; - if (bounce_sgl[j].length == PAGE_SIZE) { + if (cur_dest_sgl->length == PAGE_SIZE) { /* full..move to next entry */ - sg_kunmap_atomic(bounce_addr); + kunmap_atomic((void *)bounce_addr); + bounce_addr = 0; j++; + } - /* if we need to use another bounce buffer */ - if (srclen || i != orig_sgl_count - 1) - bounce_addr = sg_kmap_atomic(bounce_sgl,j); - - } else if (srclen == 0 && i == orig_sgl_count - 1) { - /* unmap the last bounce that is < PAGE_SIZE */ - sg_kunmap_atomic(bounce_addr); + /* if we need to use another bounce buffer */ + if (srclen && bounce_addr == 0) { + cur_dest_sgl = sg_next(cur_dest_sgl); + bounce_addr = (unsigned long) + kmap_atomic( + sg_page(cur_dest_sgl)); } + } - sg_kunmap_atomic(src_addr - orig_sgl[i].offset); + kunmap_atomic((void *)(src_addr - cur_src_sgl->offset)); + cur_src_sgl = sg_next(cur_src_sgl); } + if (bounce_addr) + kunmap_atomic((void *)bounce_addr); + local_irq_restore(flags); return total_copied; @@ -962,6 +973,8 @@ STORAGE_CHANNEL_SUPPORTS_MULTI_CHANNEL) process_sub_channels = true; } + stor_device->max_transfer_bytes = + vstor_packet->storage_channel_properties.max_transfer_bytes; memset(vstor_packet, 0, sizeof(struct vstor_packet)); vstor_packet->operation = VSTOR_OPERATION_END_INITIALIZATION; @@ -1017,6 +1030,13 @@ case ATA_12: set_host_byte(scmnd, DID_PASSTHROUGH); break; + /* + * On Some Windows hosts TEST_UNIT_READY command can return + * SRB_STATUS_ERROR, let the upper level code deal with it + * based on the sense information. + */ + case TEST_UNIT_READY: + break; default: set_host_byte(scmnd, DID_TARGET_FAILURE); } @@ -1060,13 +1080,13 @@ { struct scsi_cmnd *scmnd = cmd_request->cmd; struct hv_host_device *host_dev = shost_priv(scmnd->device->host); - void (*scsi_done_fn)(struct scsi_cmnd *); struct scsi_sense_hdr sense_hdr; struct vmscsi_request *vm_srb; - struct stor_mem_pools *memp = scmnd->device->hostdata; struct Scsi_Host *host; struct storvsc_device *stor_dev; struct hv_device *dev = host_dev->dev; + u32 payload_sz = cmd_request->payload_sz; + void *payload = cmd_request->payload; stor_dev = get_in_stor_device(dev); host = stor_dev->host; @@ -1086,7 +1106,9 @@ if (scmnd->result) { if (scsi_normalize_sense(scmnd->sense_buffer, - SCSI_SENSE_BUFFERSIZE, &sense_hdr)) + SCSI_SENSE_BUFFERSIZE, &sense_hdr) && + !(sense_hdr.sense_key == NOT_READY && + sense_hdr.asc == 0x03A)) scsi_print_sense_hdr("storvsc", &sense_hdr); } @@ -1095,17 +1117,14 @@ sense_hdr.ascq); scsi_set_resid(scmnd, - cmd_request->data_buffer.len - + cmd_request->payload->range.len - vm_srb->data_transfer_length); - scsi_done_fn = scmnd->scsi_done; - - scmnd->host_scribble = NULL; - scmnd->scsi_done = NULL; + scmnd->scsi_done(scmnd); - scsi_done_fn(scmnd); - - mempool_free(cmd_request, memp->request_mempool); + if (payload_sz > + sizeof(struct vmbus_channel_packet_multipage_buffer)) + kfree(payload); } static void storvsc_on_io_completion(struct hv_device *device, @@ -1161,7 +1180,7 @@ request, vstor_packet->vm_srb.sense_info_length); - memcpy(request->sense_buffer, + memcpy(request->cmd->sense_buffer, vstor_packet->vm_srb.sense_data, vstor_packet->vm_srb.sense_info_length); @@ -1319,7 +1338,7 @@ } static int storvsc_do_io(struct hv_device *device, - struct storvsc_cmd_request *request) + struct storvsc_cmd_request *request) { struct storvsc_device *stor_device; struct vstor_packet *vstor_packet; @@ -1351,19 +1370,20 @@ vstor_packet->vm_srb.data_transfer_length = - request->data_buffer.len; + request->payload->range.len; vstor_packet->operation = VSTOR_OPERATION_EXECUTE_SRB; - if (request->data_buffer.len) { - ret = vmbus_sendpacket_multipagebuffer(outgoing_channel, - &request->data_buffer, + if (request->payload->range.len) { + + ret = vmbus_sendpacket_mpb_desc(outgoing_channel, + request->payload, request->payload_sz, vstor_packet, (sizeof(struct vstor_packet) - vmscsi_size_delta), (unsigned long)request); } else { - ret = vmbus_sendpacket(device->channel, vstor_packet, + ret = vmbus_sendpacket(outgoing_channel, vstor_packet, (sizeof(struct vstor_packet) - vmscsi_size_delta), (unsigned long)request, @@ -1379,57 +1399,8 @@ return ret; } -static int storvsc_device_alloc(struct scsi_device *sdevice) -{ - struct stor_mem_pools *memp; - int number = STORVSC_MIN_BUF_NR; - - memp = kzalloc(sizeof(struct stor_mem_pools), GFP_KERNEL); - if (!memp) - return -ENOMEM; - - memp->request_pool = - kmem_cache_create(dev_name(&sdevice->sdev_dev), - sizeof(struct storvsc_cmd_request), 0, - SLAB_HWCACHE_ALIGN, NULL); - - if (!memp->request_pool) - goto err0; - - memp->request_mempool = mempool_create(number, mempool_alloc_slab, - mempool_free_slab, - memp->request_pool); - - if (!memp->request_mempool) - goto err1; - - sdevice->hostdata = memp; - - return 0; - -err1: - kmem_cache_destroy(memp->request_pool); - -err0: - kfree(memp); - return -ENOMEM; -} - -static void storvsc_device_destroy(struct scsi_device *sdevice) -{ - struct stor_mem_pools *memp = sdevice->hostdata; - - mempool_destroy(memp->request_mempool); - kmem_cache_destroy(memp->request_pool); - kfree(memp); - sdevice->hostdata = NULL; -} - static int storvsc_device_configure(struct scsi_device *sdevice) { - scsi_adjust_queue_depth(sdevice, MSG_SIMPLE_TAG, - STORVSC_MAX_IO_REQUESTS); - blk_queue_max_segment_size(sdevice->request_queue, PAGE_SIZE); blk_queue_bounce_limit(sdevice->request_queue, BLK_BOUNCE_ANY); @@ -1438,6 +1409,27 @@ sdevice->no_write_same = 1; + /* + * Add blist flags to permit the reading of the VPD pages even when + * the target may claim SPC-2 compliance. MSFT targets currently + * claim SPC-2 compliance while they implement post SPC-2 features. + * With this patch we can correctly handle WRITE_SAME_16 issues. + */ + sdevice->sdev_bflags |= msft_blist_flags; + + /* + * If the host is WIN8 or WIN8 R2, claim conformance to SPC-3 + * if the device is a MSFT virtual device. + */ + if (!strncmp(sdevice->vendor, "Msft", 4)) { + switch (vmbus_proto_version) { + case VERSION_WIN8: + case VERSION_WIN8_1: + sdevice->scsi_level = SCSI_SPC_3; + break; + } + } + return 0; } @@ -1515,6 +1507,16 @@ return SUCCESS; } +/* + * The host guarantees to respond to each command, although I/O latencies might + * be unbounded on Azure. Reset the timer unconditionally to give the host a + * chance to perform EH. + */ +static enum blk_eh_timer_return storvsc_eh_timed_out(struct scsi_cmnd *scmnd) +{ + return BLK_EH_RESET_TIMER; +} + static bool storvsc_scsi_cmd_ok(struct scsi_cmnd *scmnd) { bool allowed = true; @@ -1542,61 +1544,53 @@ int ret; struct hv_host_device *host_dev = shost_priv(host); struct hv_device *dev = host_dev->dev; - struct storvsc_cmd_request *cmd_request; - unsigned int request_size = 0; + struct storvsc_cmd_request *cmd_request = scsi_cmd_priv(scmnd); int i; struct scatterlist *sgl; unsigned int sg_count = 0; struct vmscsi_request *vm_srb; - struct stor_mem_pools *memp = scmnd->device->hostdata; + struct scatterlist *cur_sgl; + struct vmbus_packet_mpb_array *payload; + u32 payload_sz; + u32 length; - if (!storvsc_scsi_cmd_ok(scmnd)) { - scmnd->scsi_done(scmnd); - return 0; + if (vmstor_current_major <= VMSTOR_WIN8_MAJOR) { + /* + * On legacy hosts filter unimplemented commands. + * Future hosts are expected to correctly handle + * unsupported commands. Furthermore, it is + * possible that some of the currently + * unsupported commands maybe supported in + * future versions of the host. + */ + if (!storvsc_scsi_cmd_ok(scmnd)) { + scmnd->scsi_done(scmnd); + return 0; + } } - request_size = sizeof(struct storvsc_cmd_request); - - cmd_request = mempool_alloc(memp->request_mempool, - GFP_ATOMIC); - - /* - * We might be invoked in an interrupt context; hence - * mempool_alloc() can fail. - */ - if (!cmd_request) - return SCSI_MLQUEUE_DEVICE_BUSY; - - memset(cmd_request, 0, sizeof(struct storvsc_cmd_request)); - /* Setup the cmd request */ cmd_request->cmd = scmnd; - scmnd->host_scribble = (unsigned char *)cmd_request; - vm_srb = &cmd_request->vstor_packet.vm_srb; vm_srb->win8_extension.time_out_value = 60; + vm_srb->win8_extension.srb_flags |= + SRB_FLAGS_DISABLE_SYNCH_TRANSFER; /* Build the SRB */ switch (scmnd->sc_data_direction) { case DMA_TO_DEVICE: vm_srb->data_in = WRITE_TYPE; vm_srb->win8_extension.srb_flags |= SRB_FLAGS_DATA_OUT; - vm_srb->win8_extension.srb_flags |= - (SRB_FLAGS_QUEUE_ACTION_ENABLE | - SRB_FLAGS_DISABLE_SYNCH_TRANSFER); break; case DMA_FROM_DEVICE: vm_srb->data_in = READ_TYPE; vm_srb->win8_extension.srb_flags |= SRB_FLAGS_DATA_IN; - vm_srb->win8_extension.srb_flags |= - (SRB_FLAGS_QUEUE_ACTION_ENABLE | - SRB_FLAGS_DISABLE_SYNCH_TRANSFER); break; default: vm_srb->data_in = UNKNOWN_TYPE; - vm_srb->win8_extension.srb_flags = 0; + vm_srb->win8_extension.srb_flags |= SRB_FLAGS_NO_DATA_TRANSFER; break; } @@ -1610,91 +1604,100 @@ memcpy(vm_srb->cdb, scmnd->cmnd, vm_srb->cdb_length); - cmd_request->sense_buffer = scmnd->sense_buffer; + sgl = (struct scatterlist *)scsi_sglist(scmnd); + sg_count = scsi_sg_count(scmnd); + length = scsi_bufflen(scmnd); + payload = (struct vmbus_packet_mpb_array *)&cmd_request->mpb; + payload_sz = sizeof(cmd_request->mpb); - cmd_request->data_buffer.len = scsi_bufflen(scmnd); - if (scsi_sg_count(scmnd)) { - sgl = (struct scatterlist *)scsi_sglist(scmnd); - sg_count = scsi_sg_count(scmnd); - + if (sg_count) { /* check if we need to bounce the sgl */ if (do_bounce_buffer(sgl, scsi_sg_count(scmnd)) != -1) { cmd_request->bounce_sgl = - create_bounce_buffer(sgl, scsi_sg_count(scmnd), - scsi_bufflen(scmnd), + create_bounce_buffer(sgl, sg_count, + length, vm_srb->data_in); - if (!cmd_request->bounce_sgl) { - ret = SCSI_MLQUEUE_HOST_BUSY; - goto queue_error; - } + if (!cmd_request->bounce_sgl) + return SCSI_MLQUEUE_HOST_BUSY; cmd_request->bounce_sgl_count = - ALIGN(scsi_bufflen(scmnd), PAGE_SIZE) >> - PAGE_SHIFT; + ALIGN(length, PAGE_SIZE) >> PAGE_SHIFT; if (vm_srb->data_in == WRITE_TYPE) copy_to_bounce_buffer(sgl, - cmd_request->bounce_sgl, - scsi_sg_count(scmnd)); + cmd_request->bounce_sgl, sg_count); sgl = cmd_request->bounce_sgl; sg_count = cmd_request->bounce_sgl_count; } - cmd_request->data_buffer.offset = sgl[0].offset; - for (i = 0; i < sg_count; i++) - cmd_request->data_buffer.pfn_array[i] = - page_to_pfn(sg_page((&sgl[i]))); + if (sg_count > MAX_PAGE_BUFFER_COUNT) { + + payload_sz = (sg_count * sizeof(void *) + + sizeof(struct vmbus_packet_mpb_array)); + payload = kmalloc(payload_sz, GFP_ATOMIC); + if (!payload) { + if (cmd_request->bounce_sgl_count) + destroy_bounce_buffer( + cmd_request->bounce_sgl, + cmd_request->bounce_sgl_count); + + return SCSI_MLQUEUE_DEVICE_BUSY; + } + } + + payload->range.len = length; + payload->range.offset = sgl[0].offset; + + cur_sgl = sgl; + for (i = 0; i < sg_count; i++) { + payload->range.pfn_array[i] = + page_to_pfn(sg_page((cur_sgl))); + cur_sgl = sg_next(cur_sgl); + } } else if (scsi_sglist(scmnd)) { - cmd_request->data_buffer.offset = + payload->range.len = length; + payload->range.offset = virt_to_phys(scsi_sglist(scmnd)) & (PAGE_SIZE-1); - cmd_request->data_buffer.pfn_array[0] = + payload->range.pfn_array[0] = virt_to_phys(scsi_sglist(scmnd)) >> PAGE_SHIFT; } + cmd_request->payload = payload; + cmd_request->payload_sz = payload_sz; + /* Invokes the vsc to start an IO */ ret = storvsc_do_io(dev, cmd_request); if (ret == -EAGAIN) { /* no more space */ - if (cmd_request->bounce_sgl_count) { + if (cmd_request->bounce_sgl_count) destroy_bounce_buffer(cmd_request->bounce_sgl, cmd_request->bounce_sgl_count); - ret = SCSI_MLQUEUE_DEVICE_BUSY; - goto queue_error; - } + return SCSI_MLQUEUE_DEVICE_BUSY; } return 0; - -queue_error: - mempool_free(cmd_request, memp->request_mempool); - scmnd->host_scribble = NULL; - return ret; } static struct scsi_host_template scsi_driver = { .module = THIS_MODULE, .name = "storvsc_host_t", + .cmd_size = sizeof(struct storvsc_cmd_request), .bios_param = storvsc_get_chs, .queuecommand = storvsc_queuecommand, .eh_host_reset_handler = storvsc_host_reset_handler, - .slave_alloc = storvsc_device_alloc, - .slave_destroy = storvsc_device_destroy, + .proc_name = "storvsc_host", + .eh_timed_out = storvsc_eh_timed_out, .slave_configure = storvsc_device_configure, - .cmd_per_lun = 1, - /* 64 max_queue * 1 target */ - .can_queue = STORVSC_MAX_IO_REQUESTS*STORVSC_MAX_TARGETS, + .cmd_per_lun = 255, .this_id = -1, - /* no use setting to 0 since ll_blk_rw reset it to 1 */ - /* currently 32 */ - .sg_tablesize = MAX_MULTIPAGE_BUFFER_COUNT, - .use_clustering = DISABLE_CLUSTERING, + .use_clustering = ENABLE_CLUSTERING, /* Make sure we dont get a sg segment crosses a page boundary */ .dma_boundary = PAGE_SIZE-1, .no_write_same = 1, @@ -1729,29 +1732,52 @@ const struct hv_vmbus_device_id *dev_id) { int ret; + int num_cpus = num_online_cpus(); struct Scsi_Host *host; struct hv_host_device *host_dev; bool dev_is_ide = ((dev_id->driver_data == IDE_GUID) ? true : false); int target = 0; struct storvsc_device *stor_device; + int max_luns_per_target; + int max_targets; + int max_channels; + int max_sub_channels = 0; /* * Based on the windows host we are running on, * set state to properly communicate with the host. */ - if (vmbus_proto_version == VERSION_WIN8) { - 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 { + 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; + 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; + max_luns_per_target = STORVSC_MAX_LUNS_PER_TARGET; + max_targets = STORVSC_MAX_TARGETS; + max_channels = STORVSC_MAX_CHANNELS; + /* + * On Windows8 and above, we support sub-channels for storage. + * The number of sub-channels offerred is based on the number of + * VCPUs in the guest. + */ + max_sub_channels = (num_cpus / storvsc_vcpus_per_sub_channel); + break; } + scsi_driver.can_queue = (max_outstanding_req_per_channel * + (max_sub_channels + 1)); host = scsi_host_alloc(&scsi_driver, sizeof(struct hv_host_device)); @@ -1786,15 +1812,39 @@ host_dev->path = stor_device->path_id; host_dev->target = stor_device->target_id; - /* max # of devices per target */ - host->max_lun = STORVSC_MAX_LUNS_PER_TARGET; - /* max # of targets per channel */ - host->max_id = STORVSC_MAX_TARGETS; - /* max # of channels */ - host->max_channel = STORVSC_MAX_CHANNELS - 1; + switch (dev_id->driver_data) { + case SFC_GUID: + host->max_lun = STORVSC_FC_MAX_LUNS_PER_TARGET; + host->max_id = STORVSC_FC_MAX_TARGETS; + host->max_channel = STORVSC_FC_MAX_CHANNELS - 1; + break; + + case SCSI_GUID: + host->max_lun = max_luns_per_target; + host->max_id = max_targets; + host->max_channel = max_channels - 1; + break; + + default: + host->max_lun = STORVSC_IDE_MAX_LUNS_PER_TARGET; + host->max_id = STORVSC_IDE_MAX_TARGETS; + host->max_channel = STORVSC_IDE_MAX_CHANNELS - 1; + break; + } /* max cmd length */ host->max_cmd_len = STORVSC_MAX_CMD_LEN; + /* + * set the table size based on the info we got + * 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); if (ret != 0) @@ -1852,7 +1902,6 @@ static int __init storvsc_drv_init(void) { - u32 max_outstanding_req_per_channel; /* * Divide the ring buffer data size (which is 1 page less @@ -1867,10 +1916,6 @@ vmscsi_size_delta, sizeof(u64))); - if (max_outstanding_req_per_channel < - STORVSC_MAX_IO_REQUESTS) - return -EINVAL; - return vmbus_driver_register(&storvsc_drv); } --- linux-3.13.0.orig/drivers/scsi/sun3_NCR5380.c +++ linux-3.13.0/drivers/scsi/sun3_NCR5380.c @@ -2597,15 +2597,15 @@ * Purpose : abort a command * * Inputs : cmd - the struct scsi_cmnd to abort, code - code to set the - * host byte of the result field to, if zero DID_ABORTED is + * host byte of the result field to, if zero DID_ABORTED is * used. * - * Returns : 0 - success, -1 on failure. + * Returns : SUCCESS - success, FAILED on failure. * - * XXX - there is no way to abort the command that is currently - * connected, you have to wait for it to complete. If this is + * XXX - there is no way to abort the command that is currently + * connected, you have to wait for it to complete. If this is * a problem, we could implement longjmp() / setjmp(), setjmp() - * called where the loop started in NCR5380_main(). + * called where the loop started in NCR5380_main(). */ static int NCR5380_abort(struct scsi_cmnd *cmd) --- linux-3.13.0.orig/drivers/scsi/virtio_scsi.c +++ linux-3.13.0/drivers/scsi/virtio_scsi.c @@ -204,7 +204,6 @@ set_driver_byte(sc, DRIVER_SENSE); } - mempool_free(cmd, virtscsi_cmd_pool); sc->scsi_done(sc); atomic_dec(&tgt->reqs); @@ -273,14 +272,22 @@ virtscsi_vq_done(vscsi, req_vq, virtscsi_complete_cmd); }; +static void virtscsi_poll_requests(struct virtio_scsi *vscsi) +{ + int i, num_vqs; + + num_vqs = vscsi->num_queues; + for (i = 0; i < num_vqs; i++) + virtscsi_vq_done(vscsi, &vscsi->req_vqs[i], + virtscsi_complete_cmd); +} + static void virtscsi_complete_free(struct virtio_scsi *vscsi, void *buf) { struct virtio_scsi_cmd *cmd = buf; if (cmd->comp) complete_all(cmd->comp); - else - mempool_free(cmd, virtscsi_cmd_pool); } static void virtscsi_ctrl_done(struct virtqueue *vq) @@ -291,6 +298,8 @@ virtscsi_vq_done(vscsi, &vscsi->ctrl_vq, virtscsi_complete_free); }; +static void virtscsi_handle_event(struct work_struct *work); + static int virtscsi_kick_event(struct virtio_scsi *vscsi, struct virtio_scsi_event_node *event_node) { @@ -298,6 +307,7 @@ struct scatterlist sg; unsigned long flags; + INIT_WORK(&event_node->work, virtscsi_handle_event); sg_init_one(&sg, &event_node->event, sizeof(struct virtio_scsi_event)); spin_lock_irqsave(&vscsi->event_vq.vq_lock, flags); @@ -415,7 +425,6 @@ { struct virtio_scsi_event_node *event_node = buf; - INIT_WORK(&event_node->work, virtscsi_handle_event); schedule_work(&event_node->work); } @@ -496,10 +505,9 @@ struct virtio_scsi_vq *req_vq, struct scsi_cmnd *sc) { - struct virtio_scsi_cmd *cmd; - int ret; - struct Scsi_Host *shost = virtio_scsi_host(vscsi->vdev); + struct virtio_scsi_cmd *cmd = scsi_cmd_priv(sc); + BUG_ON(scsi_sg_count(sc) > shost->sg_tablesize); /* TODO: check feature bit and fail if unsupported? */ @@ -508,11 +516,6 @@ dev_dbg(&sc->device->sdev_gendev, "cmd %p CDB: %#02x\n", sc, sc->cmnd[0]); - ret = SCSI_MLQUEUE_HOST_BUSY; - cmd = mempool_alloc(virtscsi_cmd_pool, GFP_ATOMIC); - if (!cmd) - goto out; - memset(cmd, 0, sizeof(*cmd)); cmd->sc = sc; cmd->req.cmd = (struct virtio_scsi_cmd_req){ @@ -531,13 +534,9 @@ if (virtscsi_kick_cmd(req_vq, cmd, sizeof cmd->req.cmd, sizeof cmd->resp.cmd, - GFP_ATOMIC) == 0) - ret = 0; - else - mempool_free(cmd, virtscsi_cmd_pool); - -out: - return ret; + GFP_ATOMIC) != 0) + return SCSI_MLQUEUE_HOST_BUSY; + return 0; } static int virtscsi_queuecommand_single(struct Scsi_Host *sh, @@ -605,6 +604,18 @@ cmd->resp.tmf.response == VIRTIO_SCSI_S_FUNCTION_SUCCEEDED) ret = SUCCESS; + /* + * The spec guarantees that all requests related to the TMF have + * been completed, but the callback might not have run yet if + * we're using independent interrupts (e.g. MSI). Poll the + * virtqueues once. + * + * In the abort case, sc->scsi_done will do nothing, because + * the block layer must have detected a timeout and as a result + * REQ_ATOM_COMPLETE has been set. + */ + virtscsi_poll_requests(vscsi); + out: mempool_free(cmd, virtscsi_cmd_pool); return ret; @@ -683,6 +694,7 @@ .name = "Virtio SCSI HBA", .proc_name = "virtio_scsi", .this_id = -1, + .cmd_size = sizeof(struct virtio_scsi_cmd), .queuecommand = virtscsi_queuecommand_single, .eh_abort_handler = virtscsi_abort, .eh_device_reset_handler = virtscsi_device_reset, @@ -699,6 +711,7 @@ .name = "Virtio SCSI HBA", .proc_name = "virtio_scsi", .this_id = -1, + .cmd_size = sizeof(struct virtio_scsi_cmd), .queuecommand = virtscsi_queuecommand_multi, .eh_abort_handler = virtscsi_abort, .eh_device_reset_handler = virtscsi_device_reset, @@ -750,8 +763,12 @@ vscsi->affinity_hint_set = true; } else { - for (i = 0; i < vscsi->num_queues; i++) + for (i = 0; i < vscsi->num_queues; i++) { + if (!vscsi->req_vqs[i].vq) + continue; + virtqueue_set_affinity(vscsi->req_vqs[i].vq, -1); + } vscsi->affinity_hint_set = false; } @@ -956,6 +973,10 @@ #ifdef CONFIG_PM_SLEEP static int virtscsi_freeze(struct virtio_device *vdev) { + struct Scsi_Host *sh = virtio_scsi_host(vdev); + struct virtio_scsi *vscsi = shost_priv(sh); + + unregister_hotcpu_notifier(&vscsi->nb); virtscsi_remove_vqs(vdev); return 0; } @@ -964,8 +985,17 @@ { struct Scsi_Host *sh = virtio_scsi_host(vdev); struct virtio_scsi *vscsi = shost_priv(sh); + int err; + + err = virtscsi_init(vdev, vscsi); + if (err) + return err; - return virtscsi_init(vdev, vscsi); + err = register_hotcpu_notifier(&vscsi->nb); + if (err) + vdev->config->del_vqs(vdev); + + return err; } #endif --- linux-3.13.0.orig/drivers/spi/spi-ath79.c +++ linux-3.13.0/drivers/spi/spi-ath79.c @@ -132,9 +132,9 @@ flags = GPIOF_DIR_OUT; if (spi->mode & SPI_CS_HIGH) - flags |= GPIOF_INIT_HIGH; - else flags |= GPIOF_INIT_LOW; + else + flags |= GPIOF_INIT_HIGH; status = gpio_request_one(cdata->gpio, flags, dev_name(&spi->dev)); --- linux-3.13.0.orig/drivers/spi/spi-atmel.c +++ linux-3.13.0/drivers/spi/spi-atmel.c @@ -606,7 +606,8 @@ *plen = len; - if (atmel_spi_dma_slave_config(as, &slave_config, 8)) + if (atmel_spi_dma_slave_config(as, &slave_config, + xfer->bits_per_word)) goto err_exit; /* Send both scatterlists */ --- linux-3.13.0.orig/drivers/spi/spi-bcm63xx.c +++ linux-3.13.0/drivers/spi/spi-bcm63xx.c @@ -169,8 +169,6 @@ transfer_list); } - len -= prepend_len; - init_completion(&bs->done); /* Fill in the Message control register */ --- linux-3.13.0.orig/drivers/spi/spi-bitbang.c +++ linux-3.13.0/drivers/spi/spi-bitbang.c @@ -185,7 +185,6 @@ { struct spi_bitbang_cs *cs = spi->controller_state; struct spi_bitbang *bitbang; - int retval; unsigned long flags; bitbang = spi_master_get_devdata(spi->master); @@ -202,9 +201,11 @@ if (!cs->txrx_word) return -EINVAL; - retval = bitbang->setup_transfer(spi, NULL); - if (retval < 0) - return retval; + if (bitbang->setup_transfer) { + int retval = bitbang->setup_transfer(spi, NULL); + if (retval < 0) + return retval; + } dev_dbg(&spi->dev, "%s, %u nsec/bit\n", __func__, 2 * cs->nsecs); @@ -300,9 +301,11 @@ /* init (-1) or override (1) transfer params */ if (do_setup != 0) { - status = bitbang->setup_transfer(spi, t); - if (status < 0) - break; + if (bitbang->setup_transfer) { + status = bitbang->setup_transfer(spi, t); + if (status < 0) + break; + } if (do_setup == -1) do_setup = 0; } --- linux-3.13.0.orig/drivers/spi/spi-coldfire-qspi.c +++ linux-3.13.0/drivers/spi/spi-coldfire-qspi.c @@ -539,7 +539,8 @@ #ifdef CONFIG_PM_RUNTIME static int mcfqspi_runtime_suspend(struct device *dev) { - struct mcfqspi *mcfqspi = dev_get_drvdata(dev); + struct spi_master *master = dev_get_drvdata(dev); + struct mcfqspi *mcfqspi = spi_master_get_devdata(master); clk_disable(mcfqspi->clk); @@ -548,7 +549,8 @@ static int mcfqspi_runtime_resume(struct device *dev) { - struct mcfqspi *mcfqspi = dev_get_drvdata(dev); + struct spi_master *master = dev_get_drvdata(dev); + struct mcfqspi *mcfqspi = spi_master_get_devdata(master); clk_enable(mcfqspi->clk); --- linux-3.13.0.orig/drivers/spi/spi-dw-mid.c +++ linux-3.13.0/drivers/spi/spi-dw-mid.c @@ -89,7 +89,10 @@ static void mid_spi_dma_exit(struct dw_spi *dws) { + dmaengine_terminate_all(dws->txchan); dma_release_channel(dws->txchan); + + dmaengine_terminate_all(dws->rxchan); dma_release_channel(dws->rxchan); } @@ -136,7 +139,7 @@ txconf.dst_addr = dws->dma_addr; txconf.dst_maxburst = LNW_DMA_MSIZE_16; txconf.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; - txconf.dst_addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES; + txconf.dst_addr_width = dws->dma_width; txconf.device_fc = false; txchan->device->device_control(txchan, DMA_SLAVE_CONFIG, @@ -159,7 +162,7 @@ rxconf.src_addr = dws->dma_addr; rxconf.src_maxburst = LNW_DMA_MSIZE_16; rxconf.dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; - rxconf.src_addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES; + rxconf.src_addr_width = dws->dma_width; rxconf.device_fc = false; rxchan->device->device_control(rxchan, DMA_SLAVE_CONFIG, @@ -216,7 +219,6 @@ iounmap(clk_reg); dws->num_cs = 16; - dws->fifo_len = 40; /* FIFO has 40 words buffer */ #ifdef CONFIG_SPI_DW_MID_DMA dws->dma_priv = kzalloc(sizeof(struct mid_dma), GFP_KERNEL); --- linux-3.13.0.orig/drivers/spi/spi-dw.c +++ linux-3.13.0/drivers/spi/spi-dw.c @@ -394,9 +394,6 @@ chip = dws->cur_chip; spi = message->spi; - if (unlikely(!chip->clk_div)) - chip->clk_div = dws->max_freq / chip->speed_hz; - if (message->state == ERROR_STATE) { message->status = -EIO; goto early_exit; @@ -438,7 +435,7 @@ if (transfer->speed_hz) { speed = chip->speed_hz; - if (transfer->speed_hz != speed) { + if ((transfer->speed_hz != speed) || (!chip->clk_div)) { speed = transfer->speed_hz; if (speed > dws->max_freq) { printk(KERN_ERR "MRST SPI0: unsupported" @@ -658,7 +655,6 @@ dev_err(&spi->dev, "No max speed HZ parameter\n"); return -EINVAL; } - chip->speed_hz = spi->max_speed_hz; chip->tmode = 0; /* Tx & Rx */ /* Default SPI mode is SCPOL = 0, SCPH = 0 */ @@ -675,6 +671,7 @@ { struct chip_data *chip = spi_get_ctldata(spi); kfree(chip); + spi_set_ctldata(spi, NULL); } static int init_queue(struct dw_spi *dws) @@ -765,13 +762,13 @@ */ if (!dws->fifo_len) { u32 fifo; - for (fifo = 2; fifo <= 257; fifo++) { + for (fifo = 1; fifo < 256; fifo++) { dw_writew(dws, DW_SPI_TXFLTR, fifo); if (fifo != dw_readw(dws, DW_SPI_TXFLTR)) break; } - dws->fifo_len = (fifo == 257) ? 0 : fifo; + dws->fifo_len = (fifo == 1) ? 0 : fifo; dw_writew(dws, DW_SPI_TXFLTR, 0); } } --- linux-3.13.0.orig/drivers/spi/spi-efm32.c +++ linux-3.13.0/drivers/spi/spi-efm32.c @@ -487,6 +487,9 @@ static const struct of_device_id efm32_spi_dt_ids[] = { { + .compatible = "energymicro,efm32-spi", + }, { + /* doesn't follow the "vendor,device" scheme, don't use */ .compatible = "efm32,spi", }, { /* sentinel */ --- linux-3.13.0.orig/drivers/spi/spi-fsl-dspi.c +++ linux-3.13.0/drivers/spi/spi-fsl-dspi.c @@ -45,7 +45,7 @@ #define SPI_TCR 0x08 -#define SPI_CTAR(x) (0x0c + (x * 4)) +#define SPI_CTAR(x) (0x0c + (((x) & 0x3) * 4)) #define SPI_CTAR_FMSZ(x) (((x) & 0x0000000f) << 27) #define SPI_CTAR_CPOL(x) ((x) << 26) #define SPI_CTAR_CPHA(x) ((x) << 25) @@ -69,7 +69,7 @@ #define SPI_PUSHR 0x34 #define SPI_PUSHR_CONT (1 << 31) -#define SPI_PUSHR_CTAS(x) (((x) & 0x00000007) << 28) +#define SPI_PUSHR_CTAS(x) (((x) & 0x00000003) << 28) #define SPI_PUSHR_EOQ (1 << 27) #define SPI_PUSHR_CTCNT (1 << 26) #define SPI_PUSHR_PCS(x) (((1 << x) & 0x0000003f) << 16) @@ -336,7 +336,7 @@ /* Only alloc on first setup */ chip = spi_get_ctldata(spi); if (chip == NULL) { - chip = kcalloc(1, sizeof(struct chip_data), GFP_KERNEL); + chip = kzalloc(sizeof(struct chip_data), GFP_KERNEL); if (!chip) return -ENOMEM; } @@ -347,7 +347,6 @@ fmsz = spi->bits_per_word - 1; } else { pr_err("Invalid wordsize\n"); - kfree(chip); return -ENODEV; } @@ -379,6 +378,16 @@ return dspi_setup_transfer(spi, NULL); } +static void dspi_cleanup(struct spi_device *spi) +{ + struct chip_data *chip = spi_get_ctldata((struct spi_device *)spi); + + dev_dbg(&spi->dev, "spi_device %u.%u cleanup\n", + spi->master->bus_num, spi->chip_select); + + kfree(chip); +} + static irqreturn_t dspi_interrupt(int irq, void *dev_id) { struct fsl_dspi *dspi = (struct fsl_dspi *)dev_id; @@ -421,7 +430,6 @@ static int dspi_resume(struct device *dev) { - struct spi_master *master = dev_get_drvdata(dev); struct fsl_dspi *dspi = spi_master_get_devdata(master); @@ -457,6 +465,7 @@ dspi->bitbang.master->setup = dspi_setup; dspi->bitbang.master->dev.of_node = pdev->dev.of_node; + master->cleanup = dspi_cleanup; master->mode_bits = SPI_CPOL | SPI_CPHA; master->bits_per_word_mask = SPI_BPW_MASK(4) | SPI_BPW_MASK(8) | SPI_BPW_MASK(16); @@ -505,7 +514,7 @@ clk_prepare_enable(dspi->clk); init_waitqueue_head(&dspi->waitq); - platform_set_drvdata(pdev, dspi); + platform_set_drvdata(pdev, master); ret = spi_bitbang_start(&dspi->bitbang); if (ret != 0) { @@ -526,7 +535,8 @@ static int dspi_remove(struct platform_device *pdev) { - struct fsl_dspi *dspi = platform_get_drvdata(pdev); + struct spi_master *master = platform_get_drvdata(pdev); + struct fsl_dspi *dspi = spi_master_get_devdata(master); /* Disconnect from the SPI framework */ spi_bitbang_stop(&dspi->bitbang); --- linux-3.13.0.orig/drivers/spi/spi-fsl-espi.c +++ linux-3.13.0/drivers/spi/spi-fsl-espi.c @@ -456,16 +456,16 @@ int retval; u32 hw_mode; u32 loop_mode; - struct spi_mpc8xxx_cs *cs = spi->controller_state; + struct spi_mpc8xxx_cs *cs = spi_get_ctldata(spi); if (!spi->max_speed_hz) return -EINVAL; if (!cs) { - cs = kzalloc(sizeof *cs, GFP_KERNEL); + cs = kzalloc(sizeof(*cs), GFP_KERNEL); if (!cs) return -ENOMEM; - spi->controller_state = cs; + spi_set_ctldata(spi, cs); } mpc8xxx_spi = spi_master_get_devdata(spi->master); @@ -500,6 +500,14 @@ return 0; } +static void fsl_espi_cleanup(struct spi_device *spi) +{ + struct spi_mpc8xxx_cs *cs = spi_get_ctldata(spi); + + kfree(cs); + spi_set_ctldata(spi, NULL); +} + void fsl_espi_cpu_irq(struct mpc8xxx_spi *mspi, u32 events) { struct fsl_espi_reg *reg_base = mspi->reg_base; @@ -607,6 +615,7 @@ master->bits_per_word_mask = SPI_BPW_RANGE_MASK(4, 16); master->setup = fsl_espi_setup; + master->cleanup = fsl_espi_cleanup; mpc8xxx_spi = spi_master_get_devdata(master); mpc8xxx_spi->spi_do_one_msg = fsl_espi_do_one_msg; --- linux-3.13.0.orig/drivers/spi/spi-fsl-spi.c +++ linux-3.13.0/drivers/spi/spi-fsl-spi.c @@ -420,16 +420,16 @@ struct fsl_spi_reg *reg_base; int retval; u32 hw_mode; - struct spi_mpc8xxx_cs *cs = spi->controller_state; + struct spi_mpc8xxx_cs *cs = spi_get_ctldata(spi); if (!spi->max_speed_hz) return -EINVAL; if (!cs) { - cs = kzalloc(sizeof *cs, GFP_KERNEL); + cs = kzalloc(sizeof(*cs), GFP_KERNEL); if (!cs) return -ENOMEM; - spi->controller_state = cs; + spi_set_ctldata(spi, cs); } mpc8xxx_spi = spi_master_get_devdata(spi->master); @@ -491,9 +491,13 @@ static void fsl_spi_cleanup(struct spi_device *spi) { struct mpc8xxx_spi *mpc8xxx_spi = spi_master_get_devdata(spi->master); + struct spi_mpc8xxx_cs *cs = spi_get_ctldata(spi); if (mpc8xxx_spi->type == TYPE_GRLIB && gpio_is_valid(spi->cs_gpio)) gpio_free(spi->cs_gpio); + + kfree(cs); + spi_set_ctldata(spi, NULL); } static void fsl_spi_cpu_irq(struct mpc8xxx_spi *mspi, u32 events) --- linux-3.13.0.orig/drivers/spi/spi-imx.c +++ linux-3.13.0/drivers/spi/spi-imx.c @@ -925,8 +925,8 @@ spi_bitbang_stop(&spi_imx->bitbang); writel(0, spi_imx->base + MXC_CSPICTRL); - clk_disable_unprepare(spi_imx->clk_ipg); - clk_disable_unprepare(spi_imx->clk_per); + clk_unprepare(spi_imx->clk_ipg); + clk_unprepare(spi_imx->clk_per); spi_master_put(master); return 0; --- linux-3.13.0.orig/drivers/spi/spi-nuc900.c +++ linux-3.13.0/drivers/spi/spi-nuc900.c @@ -363,6 +363,8 @@ init_completion(&hw->done); master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH; + if (hw->pdata->lsb) + master->mode_bits |= SPI_LSB_FIRST; master->num_chipselect = hw->pdata->num_cs; master->bus_num = hw->pdata->bus_num; hw->bitbang.master = hw->master; --- linux-3.13.0.orig/drivers/spi/spi-omap2-mcspi.c +++ linux-3.13.0/drivers/spi/spi-omap2-mcspi.c @@ -320,7 +320,8 @@ disable_fifo: if (t->rx_buf != NULL) chconf &= ~OMAP2_MCSPI_CHCONF_FFER; - else + + if (t->tx_buf != NULL) chconf &= ~OMAP2_MCSPI_CHCONF_FFET; mcspi_write_chconf0(spi, chconf); --- linux-3.13.0.orig/drivers/spi/spi-orion.c +++ linux-3.13.0/drivers/spi/spi-orion.c @@ -404,8 +404,6 @@ struct resource *r; unsigned long tclk_hz; int status = 0; - const u32 *iprop; - int size; master = spi_alloc_master(&pdev->dev, sizeof(*spi)); if (master == NULL) { @@ -416,10 +414,10 @@ if (pdev->id != -1) master->bus_num = pdev->id; if (pdev->dev.of_node) { - iprop = of_get_property(pdev->dev.of_node, "cell-index", - &size); - if (iprop && size == sizeof(*iprop)) - master->bus_num = *iprop; + u32 cell_index; + if (!of_property_read_u32(pdev->dev.of_node, "cell-index", + &cell_index)) + master->bus_num = cell_index; } /* we support only mode 0, and no options */ --- linux-3.13.0.orig/drivers/spi/spi-pl022.c +++ linux-3.13.0/drivers/spi/spi-pl022.c @@ -503,12 +503,12 @@ pl022->cur_msg = NULL; pl022->cur_transfer = NULL; pl022->cur_chip = NULL; - spi_finalize_current_message(pl022->master); /* disable the SPI/SSP operation */ writew((readw(SSP_CR1(pl022->virtbase)) & (~SSP_CR1_MASK_SSE)), SSP_CR1(pl022->virtbase)); + spi_finalize_current_message(pl022->master); } /** @@ -1075,7 +1075,7 @@ pl022->sgt_tx.nents, DMA_TO_DEVICE); err_tx_sgmap: dma_unmap_sg(rxchan->device->dev, pl022->sgt_rx.sgl, - pl022->sgt_tx.nents, DMA_FROM_DEVICE); + pl022->sgt_rx.nents, DMA_FROM_DEVICE); err_rx_sgmap: sg_free_table(&pl022->sgt_tx); err_alloc_tx_sg: --- linux-3.13.0.orig/drivers/spi/spi-pxa2xx.c +++ linux-3.13.0/drivers/spi/spi-pxa2xx.c @@ -400,8 +400,8 @@ cs_deassert(drv_data); } - spi_finalize_current_message(drv_data->master); drv_data->cur_chip = NULL; + spi_finalize_current_message(drv_data->master); } static void reset_sccr1(struct driver_data *drv_data) @@ -562,6 +562,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; @@ -1066,6 +1070,8 @@ pdata->num_chipselect = 1; pdata->enable_dma = true; + pdata->tx_chan_id = -1; + pdata->rx_chan_id = -1; return pdata; } @@ -1076,6 +1082,7 @@ { "INT3430", 0 }, { "INT3431", 0 }, { "80860F0E", 0 }, + { "8086228E", 0 }, { }, }; MODULE_DEVICE_TABLE(acpi, pxa2xx_spi_acpi_match); @@ -1277,7 +1284,9 @@ if (status != 0) return status; write_SSCR0(0, drv_data->ioaddr); - clk_disable_unprepare(ssp->clk); + + if (!pm_runtime_suspended(dev)) + clk_disable_unprepare(ssp->clk); return 0; } @@ -1291,7 +1300,8 @@ pxa2xx_spi_dma_resume(drv_data); /* Enable the SSP clock */ - clk_prepare_enable(ssp->clk); + if (!pm_runtime_suspended(dev)) + clk_prepare_enable(ssp->clk); /* Restore LPSS private register bits */ lpss_ssp_setup(drv_data); --- linux-3.13.0.orig/drivers/spi/spi-sirf.c +++ linux-3.13.0/drivers/spi/spi-sirf.c @@ -366,7 +366,9 @@ writel(SIRFSOC_SPI_RX_OFLOW_INT_EN | SIRFSOC_SPI_TX_UFLOW_INT_EN | SIRFSOC_SPI_RXFIFO_THD_INT_EN | SIRFSOC_SPI_TXFIFO_THD_INT_EN | SIRFSOC_SPI_FRM_END_INT_EN | SIRFSOC_SPI_RXFIFO_FULL_INT_EN | - SIRFSOC_SPI_TXFIFO_EMPTY_INT_EN, sspi->base + SIRFSOC_SPI_INT_EN); + SIRFSOC_SPI_TXFIFO_EMPTY_INT_EN | + SIRFSOC_SPI_RX_IO_DMA_INT_EN, + sspi->base + SIRFSOC_SPI_INT_EN); } writel(SIRFSOC_SPI_RX_EN | SIRFSOC_SPI_TX_EN, sspi->base + SIRFSOC_SPI_TX_RX_EN); --- linux-3.13.0.orig/drivers/spi/spi-ti-qspi.c +++ linux-3.13.0/drivers/spi/spi-ti-qspi.c @@ -381,11 +381,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-3.13.0.orig/drivers/spi/spi.c +++ linux-3.13.0/drivers/spi/spi.c @@ -817,9 +817,6 @@ spin_lock_irqsave(&master->queue_lock, flags); mesg = master->cur_msg; - master->cur_msg = NULL; - - queue_kthread_work(&master->kworker, &master->pump_messages); spin_unlock_irqrestore(&master->queue_lock, flags); if (master->cur_msg_prepared && master->unprepare_message) { @@ -829,13 +826,18 @@ "failed to unprepare message: %d\n", ret); } } + + spin_lock_irqsave(&master->queue_lock, flags); + master->cur_msg = NULL; master->cur_msg_prepared = false; + queue_kthread_work(&master->kworker, &master->pump_messages); + spin_unlock_irqrestore(&master->queue_lock, flags); + + trace_spi_message_done(mesg); mesg->state = NULL; if (mesg->complete) mesg->complete(mesg->context); - - trace_spi_message_done(mesg); } EXPORT_SYMBOL_GPL(spi_finalize_current_message); @@ -1232,8 +1234,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) { @@ -1250,7 +1251,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; @@ -1551,7 +1552,7 @@ */ int spi_setup(struct spi_device *spi) { - unsigned bad_bits; + unsigned bad_bits, ugly_bits; int status = 0; /* check mode to prevent that DUAL and QUAD set at the same time @@ -1571,6 +1572,15 @@ * that aren't supported with their current master */ bad_bits = spi->mode & ~spi->master->mode_bits; + ugly_bits = bad_bits & + (SPI_TX_DUAL | SPI_TX_QUAD | SPI_RX_DUAL | SPI_RX_QUAD); + if (ugly_bits) { + dev_warn(&spi->dev, + "setup: ignoring unsupported mode bits %x\n", + ugly_bits); + spi->mode &= ~ugly_bits; + bad_bits &= ~ugly_bits; + } if (bad_bits) { dev_err(&spi->dev, "setup: unsupported mode bits %x\n", bad_bits); --- linux-3.13.0.orig/drivers/staging/Kconfig +++ linux-3.13.0/drivers/staging/Kconfig @@ -52,6 +52,8 @@ source "drivers/staging/rtl8188eu/Kconfig" +source "drivers/staging/rtl8821ae/Kconfig" + source "drivers/staging/rts5139/Kconfig" source "drivers/staging/frontier/Kconfig" @@ -150,4 +152,8 @@ source "drivers/staging/dgap/Kconfig" +source "drivers/staging/fsl_qbman/Kconfig" + +source "drivers/staging/fsl_pme2/Kconfig" + endif # STAGING --- linux-3.13.0.orig/drivers/staging/Makefile +++ linux-3.13.0/drivers/staging/Makefile @@ -18,6 +18,7 @@ obj-$(CONFIG_RTL8192E) += rtl8192e/ obj-$(CONFIG_R8712U) += rtl8712/ obj-$(CONFIG_R8188EU) += rtl8188eu/ +obj-$(CONFIG_R8821AE) += rtl8821ae/ obj-$(CONFIG_RTS5139) += rts5139/ obj-$(CONFIG_TRANZPORT) += frontier/ obj-$(CONFIG_IDE_PHISON) += phison/ @@ -67,3 +68,5 @@ obj-$(CONFIG_DGNC) += dgnc/ obj-$(CONFIG_DGAP) += dgap/ obj-$(CONFIG_MTD_SPINAND_MT29F) += mt29f_spinand/ +obj-$(CONFIG_FSL_DPA) += fsl_qbman/ +obj-$(CONFIG_FSL_PME2) += fsl_pme2/ --- linux-3.13.0.orig/drivers/staging/android/binder.c +++ linux-3.13.0/drivers/staging/android/binder.c @@ -2017,7 +2017,7 @@ if (get_user(cookie, (void __user * __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); if (tmp_death->cookie == cookie) { @@ -2904,7 +2904,7 @@ refs++; if (!ref->death) - goto out; + continue; death++; @@ -2917,7 +2917,6 @@ BUG(); } -out: binder_debug(BINDER_DEBUG_DEAD_BINDER, "node %d now dead, refs %d, death %d\n", node->debug_id, refs, death); --- linux-3.13.0.orig/drivers/staging/bcm/Bcmnet.c +++ linux-3.13.0/drivers/staging/bcm/Bcmnet.c @@ -40,7 +40,7 @@ } static u16 bcm_select_queue(struct net_device *dev, struct sk_buff *skb, - void *accel_priv) + void *accel_priv, select_queue_fallback_t fallback) { return ClassifyPacket(netdev_priv(dev), skb); } --- linux-3.13.0.orig/drivers/staging/comedi/comedi_compat32.c +++ linux-3.13.0/drivers/staging/comedi/comedi_compat32.c @@ -262,7 +262,7 @@ { struct comedi_cmd __user *cmd; struct comedi32_cmd_struct __user *cmd32; - int rc; + int rc, err; cmd32 = compat_ptr(arg); cmd = compat_alloc_user_space(sizeof(*cmd)); @@ -271,7 +271,15 @@ if (rc) return rc; - return translated_ioctl(file, COMEDI_CMD, (unsigned long)cmd); + rc = translated_ioctl(file, COMEDI_CMD, (unsigned long)cmd); + if (rc == -EAGAIN) { + /* Special case: copy cmd back to user. */ + err = put_compat_cmd(cmd32, cmd); + if (err) + rc = err; + } + + return rc; } /* Handle 32-bit COMEDI_CMDTEST ioctl. */ --- linux-3.13.0.orig/drivers/staging/comedi/comedi_fops.c +++ linux-3.13.0/drivers/staging/comedi/comedi_fops.c @@ -1425,6 +1425,7 @@ async->cmd.chanlist_len * sizeof(int)); if (IS_ERR(async->cmd.chanlist)) { ret = PTR_ERR(async->cmd.chanlist); + async->cmd.chanlist = NULL; DPRINTK("memdup_user failed with code %d\n", ret); goto cleanup; } @@ -1547,6 +1548,7 @@ cmd.chanlist_len * sizeof(int)); if (IS_ERR(chanlist)) { ret = PTR_ERR(chanlist); + chanlist = NULL; DPRINTK("memdup_user exited with code %d", ret); goto cleanup; } --- linux-3.13.0.orig/drivers/staging/comedi/drivers/8255_pci.c +++ linux-3.13.0/drivers/staging/comedi/drivers/8255_pci.c @@ -56,6 +56,7 @@ #include "../comedidev.h" #include "8255.h" +#include "mite.h" enum pci_8255_boardid { BOARD_ADLINK_PCI7224, @@ -79,6 +80,7 @@ const char *name; int dio_badr; int n_8255; + unsigned int has_mite:1; }; static const struct pci_8255_boardinfo pci_8255_boards[] = { @@ -126,36 +128,43 @@ .name = "ni_pci-dio-96", .dio_badr = 1, .n_8255 = 4, + .has_mite = 1, }, [BOARD_NI_PCIDIO96B] = { .name = "ni_pci-dio-96b", .dio_badr = 1, .n_8255 = 4, + .has_mite = 1, }, [BOARD_NI_PXI6508] = { .name = "ni_pxi-6508", .dio_badr = 1, .n_8255 = 4, + .has_mite = 1, }, [BOARD_NI_PCI6503] = { .name = "ni_pci-6503", .dio_badr = 1, .n_8255 = 1, + .has_mite = 1, }, [BOARD_NI_PCI6503B] = { .name = "ni_pci-6503b", .dio_badr = 1, .n_8255 = 1, + .has_mite = 1, }, [BOARD_NI_PCI6503X] = { .name = "ni_pci-6503x", .dio_badr = 1, .n_8255 = 1, + .has_mite = 1, }, [BOARD_NI_PXI_6503] = { .name = "ni_pxi-6503", .dio_badr = 1, .n_8255 = 1, + .has_mite = 1, }, }; @@ -163,6 +172,25 @@ void __iomem *mmio_base; }; +static int pci_8255_mite_init(struct pci_dev *pcidev) +{ + void __iomem *mite_base; + u32 main_phys_addr; + + /* ioremap the MITE registers (BAR 0) temporarily */ + mite_base = pci_ioremap_bar(pcidev, 0); + if (!mite_base) + return -ENOMEM; + + /* set data window to main registers (BAR 1) */ + main_phys_addr = pci_resource_start(pcidev, 1); + writel(main_phys_addr | WENAB, mite_base + MITE_IODWBSR); + + /* finished with MITE registers */ + iounmap(mite_base); + return 0; +} + static int pci_8255_mmio(int dir, int port, int data, unsigned long iobase) { void __iomem *mmio_base = (void __iomem *)iobase; @@ -201,6 +229,12 @@ if (ret) return ret; + if (board->has_mite) { + ret = pci_8255_mite_init(pcidev); + if (ret) + return ret; + } + is_mmio = (pci_resource_flags(pcidev, board->dio_badr) & IORESOURCE_MEM) != 0; if (is_mmio) { --- linux-3.13.0.orig/drivers/staging/comedi/drivers/addi_apci_1032.c +++ linux-3.13.0/drivers/staging/comedi/drivers/addi_apci_1032.c @@ -325,8 +325,8 @@ s = &dev->subdevices[1]; if (dev->irq) { dev->read_subdev = s; - s->type = COMEDI_SUBD_DI | SDF_CMD_READ; - s->subdev_flags = SDF_READABLE; + s->type = COMEDI_SUBD_DI; + s->subdev_flags = SDF_READABLE | SDF_CMD_READ; s->n_chan = 1; s->maxdata = 1; s->range_table = &range_digital; --- linux-3.13.0.orig/drivers/staging/comedi/drivers/adl_pci7x3x.c +++ linux-3.13.0/drivers/staging/comedi/drivers/adl_pci7x3x.c @@ -113,8 +113,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-3.13.0.orig/drivers/staging/comedi/drivers/adl_pci9111.c +++ linux-3.13.0/drivers/staging/comedi/drivers/adl_pci9111.c @@ -859,7 +859,7 @@ pci9111_reset(dev); if (pcidev->irq > 0) { - ret = request_irq(dev->irq, pci9111_interrupt, + ret = request_irq(pcidev->irq, pci9111_interrupt, IRQF_SHARED, dev->board_name, dev); if (ret) return ret; --- linux-3.13.0.orig/drivers/staging/comedi/drivers/adv_pci1710.c +++ linux-3.13.0/drivers/staging/comedi/drivers/adv_pci1710.c @@ -489,6 +489,7 @@ struct comedi_insn *insn, unsigned int *data) { struct pci1710_private *devpriv = dev->private; + unsigned int val; int n, chan, range, ofs; chan = CR_CHAN(insn->chanspec); @@ -504,11 +505,14 @@ outw(devpriv->da_ranges, dev->iobase + PCI171x_DAREF); ofs = PCI171x_DA1; } + val = devpriv->ao_data[chan]; - for (n = 0; n < insn->n; n++) - outw(data[n], dev->iobase + ofs); + for (n = 0; n < insn->n; n++) { + val = data[n]; + outw(val, dev->iobase + ofs); + } - devpriv->ao_data[chan] = data[n]; + devpriv->ao_data[chan] = val; return n; @@ -674,6 +678,7 @@ struct comedi_insn *insn, unsigned int *data) { struct pci1710_private *devpriv = dev->private; + unsigned int val; int n, rangereg, chan; chan = CR_CHAN(insn->chanspec); @@ -683,13 +688,15 @@ outb(rangereg, dev->iobase + PCI1720_RANGE); devpriv->da_ranges = rangereg; } + val = devpriv->ao_data[chan]; for (n = 0; n < insn->n; n++) { - outw(data[n], dev->iobase + PCI1720_DA0 + (chan << 1)); + val = data[n]; + outw(val, dev->iobase + PCI1720_DA0 + (chan << 1)); outb(0, dev->iobase + PCI1720_SYNCOUT); /* update outputs */ } - devpriv->ao_data[chan] = data[n]; + devpriv->ao_data[chan] = val; return n; } --- linux-3.13.0.orig/drivers/staging/dgnc/dgnc_mgmt.c +++ linux-3.13.0/drivers/staging/dgnc/dgnc_mgmt.c @@ -145,6 +145,7 @@ DGNC_LOCK(dgnc_global_lock, lock_flags); + memset(&ddi, 0, sizeof(ddi)); ddi.dinfo_nboards = dgnc_NumBoards; sprintf(ddi.dinfo_version, "%s", DG_PART); --- linux-3.13.0.orig/drivers/staging/dwc2/hcd.c +++ linux-3.13.0/drivers/staging/dwc2/hcd.c @@ -1487,7 +1487,7 @@ dev_dbg(hsotg->dev, "ClearPortFeature USB_PORT_FEAT_SUSPEND\n"); writel(0, hsotg->regs + PCGCTL); - usleep_range(20000, 40000); + msleep(USB_RESUME_TIMEOUT); hprt0 = dwc2_read_hprt0(hsotg); hprt0 |= HPRT0_RES; --- linux-3.13.0.orig/drivers/staging/fsl_pme2/Kconfig +++ linux-3.13.0/drivers/staging/fsl_pme2/Kconfig @@ -0,0 +1,215 @@ +config FSL_PME2 + bool "Freescale Datapath Pattern Matcher support" + depends on HAS_FSL_PME && FSL_QMAN_PORTAL + default y + +menu "Freescale Datapath PME options" + depends on FSL_PME2 + +config FSL_PME2_CTRL + bool "Freescale PME2 (p4080, etc) device control" + default y + ---help--- + This compiles device support for the Freescale PME2 pattern matching + part contained in datapath-enabled SoCs (ie. accessed via Qman and + Bman portal functionality). At least one guest operating system must + have this driver support, together with the appropriate device-tree + entry, for PME2 functionality to be available. It is responsible for + allocating system memory to the device and configuring it for + operation. For this reason, it must be built into the kernel and will + initialise during early kernel boot. + +config FSL_PME2_PDSRSIZE + int "Pattern Description and Stateful Rule default table size" + depends on FSL_PME2_CTRL + range 74240 1048573 + default 131072 + help + Select the default size of the Pattern Description and Stateful Rule + table as the number of 128 byte entries. This only takes effect if + the device tree node doesn't have the 'fsl,pme-pdsr' property. + range 74240-1048573 (9.5MB-134MB) + default 131072 (16MB) + +if FSL_PME2_CTRL +comment "Statefule Rule Engine" +endif + +config FSL_PME2_SRESIZE + int "SRE Session Context Entries table default table size" + depends on FSL_PME2_CTRL + range 0 134217727 + default 327680 + help + Select the default size of the SRE Context Table as the number of 32 + byte entries. This only takes effect if the device tree node doesn't + have the 'fsl,pme-sre' property. + range 0-134217727 (0-4GB) + default 327680 (10MB) + +config FSL_PME2_SRE_AIM + bool "Alternate Inconclusive Mode" + depends on FSL_PME2_CTRL + default n + help + Select the inconclusive match mode treatment. When true the + “alternate” inconclusive mode is used. When false the “default” + inconclusive mode is used. + +config FSL_PME2_SRE_ESR + bool "End of SUI Simple Report" + depends on FSL_PME2_CTRL + default n + help + Select if an End of SUI will produce a Simple End of SUI report. + +config FSL_PME2_SRE_CTX_SIZE_PER_SESSION + int "Default SRE Context Size per Session (16 => 64KB, 17 => 128KB)" + depends on FSL_PME2_CTRL + range 5 17 + default 17 + help + Select SRE context size per session as a power of 2. + range 5-17 + Examples: + 5 => 32 B + 6 => 64 B + 7 => 128 B + 8 => 256 B + 9 => 512 B + 10 => 1 KB + 11 => 2 KB + 12 => 4 KB + 13 => 8 KB + 14 => 16 KB + 15 => 32 KB + 16 => 64 KB + 17 => 128 KB + +config FSL_PME2_SRE_CNR + int "Configured Number of Stateful Rules as a multiple of 256 (128 => 32768 )" + depends on FSL_PME2_CTRL + range 0 128 + default 128 + help + Select number of stateful rules as a multiple of 256. + range 0-128 + Examples: + 0 => 0 + 1 => 256 + 2 => 512 + ... + 127 => 32512 + 128 => 32768 + +config FSL_PME2_SRE_MAX_INSTRUCTION_LIMIT + int "Maximum number of SRE instructions to be executed per reaction." + depends on FSL_PME2_CTRL + range 0 65535 + default 65535 + help + Select the maximum number of SRE instructions to be executed per + reaction. + range 0 65535 + +config FSL_PME2_SRE_MAX_BLOCK_NUMBER + int "Maximum number of Reaction Head blocks to be traversed per pattern match event" + depends on FSL_PME2_CTRL + range 0 32767 + default 32767 + help + Select the maximum number of reaction head blocks to be traversed per + pattern match event (e.g. a matched pattern or an End of SUI event). + range 0-32767 + +config FSL_PME2_PORTAL + tristate "Freescale PME2 (p4080, etc) device usage" + default y + ---help--- + This compiles I/O support for the Freescale PME2 pattern matching + part contained in datapath-enabled SoCs (ie. accessed via Qman and + Bman portal functionality). + +if FSL_PME2_PORTAL + +config FSL_PME2_TEST_HIGH + tristate "PME2 high-level self-test" + default n + ---help--- + This uses the high-level Qman driver (and the cpu-affine portals it + manages) to perform high-level PME2 API testing with it. + +config FSL_PME2_TEST_SCAN + tristate "PME2 scan self-test" + default n + ---help--- + This uses the high-level Qman driver (and the cpu-affine portals it + manages) to perform scan PME2 API testing with it. + +config FSL_PME2_TEST_SCAN_WITH_BPID + bool "PME2 scan self-test with buffer pool" + depends on FSL_PME2_TEST_SCAN && FSL_BMAN_PORTAL + default y + ---help--- + This uses a buffer pool id for scan test + +config FSL_PME2_TEST_SCAN_WITH_BPID_SIZE + int "Buffer Pool size." + depends on FSL_PME2_TEST_SCAN_WITH_BPID + range 0 11 + default 3 + ---help--- + This uses the specified buffer pool size. + +config FSL_PME2_DB + tristate "PME2 Database support" + depends on FSL_PME2_CTRL + default y + ---help--- + This compiles the database driver for PME2. + +config FSL_PME2_DB_QOSOUT_PRIORITY + int "PME DB output frame queue priority." + depends on FSL_PME2_DB + range 0 7 + default 2 + ---help--- + The PME DB has a scheduled output frame queue. The qos priority level is configurable. + range 0-7 + 0 => High Priority 0 + 1 => High Priority 1 + 2 => Medium Priority + 3 => Medium Priority + 4 => Medium Priority + 5 => Low Priority + 6 => Low Priority + 7 => Low Priority + +config FSL_PME2_SCAN + tristate "PME2 Scan support" + default y + ---help--- + This compiles the scan driver for PME2. + +config FSL_PME2_SCAN_DEBUG + bool "Debug Statements" + default n + depends on FSL_PME2_SCAN + ---help--- + The PME2_SCAN driver can optionally trace with more verbosity + of verbosity. + +endif + +config FSL_PME2_STAT_ACCUMULATOR_UPDATE_INTERVAL + int "Configure the pme2 statistics update interval in milliseconds" + depends on FSL_PME2_CTRL + range 0 10000 + default 3400 + help + The pme accumulator reads the current device statistics and add it + to a running counter. The frequency of these updates may be + controlled. If 0 is specified, no automatic updates is done. + range 0-10000 + +endmenu --- linux-3.13.0.orig/drivers/staging/fsl_pme2/Makefile +++ linux-3.13.0/drivers/staging/fsl_pme2/Makefile @@ -0,0 +1,10 @@ +# PME +obj-$(CONFIG_FSL_PME2_CTRL) += pme2_ctrl.o pme2_sysfs.o +obj-$(CONFIG_FSL_PME2_PORTAL) += pme2.o +pme2-y := pme2_low.o pme2_high.o +obj-$(CONFIG_FSL_PME2_TEST_HIGH) += pme2_test_high.o +obj-$(CONFIG_FSL_PME2_TEST_SCAN) += pme2_test_scanning.o +pme2_test_scanning-y = pme2_test_scan.o pme2_sample_db.o +obj-$(CONFIG_FSL_PME2_DB) += pme2_db.o +obj-$(CONFIG_FSL_PME2_SCAN) += pme2_scan.o + --- linux-3.13.0.orig/drivers/staging/fsl_pme2/pme2_ctrl.c +++ linux-3.13.0/drivers/staging/fsl_pme2/pme2_ctrl.c @@ -0,0 +1,1335 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 "pme2_private.h" +#include "pme2_regs.h" + +/* PME HW Revision */ +#define PME_REV(rev1_reg) (rev1_reg & 0x0000FFFF) +#define PME_REV_2_0 0x00000200 +#define PME_REV_2_1 0x00000201 +#define DEC1_MAX_REV_2_0 0x000FFFFC +#define DEC1_MAX_REV_2_1 0x0007FFFC + + +/* Driver Name is used in naming the sysfs directory + * /sys/bus/of_platform/drivers/DRV_NAME + */ +#define DRV_NAME "fsl-pme" + +#define DEFAULT_PDSR_SZ (CONFIG_FSL_PME2_PDSRSIZE << 7) +#define DEFAULT_SRE_SZ (CONFIG_FSL_PME2_SRESIZE << 5) +#define PDSR_TBL_ALIGN (1 << 7) +#define SRE_TBL_ALIGN (1 << 5) +#define DEFAULT_SRFCC 400 + +/* Defaults */ +#define DEFAULT_DEC0_MTE 0x3FFF +#define DEFAULT_DLC_MPM 0xFFFF +#define DEFAULT_DLC_MPE 0xFFFF +/* Boot parameters */ +DECLARE_GLOBAL(max_test_line_per_pat, unsigned int, uint, + DEFAULT_DEC0_MTE, + "Maximum allowed Test Line Executions per pattern, " + "scaled by a factor of 8"); +DECLARE_GLOBAL(max_pat_eval_per_sui, unsigned int, uint, + DEFAULT_DLC_MPE, + "Maximum Pattern Evaluations per SUI, scaled by a factor of 8") +DECLARE_GLOBAL(max_pat_matches_per_sui, unsigned int, uint, + DEFAULT_DLC_MPM, + "Maximum Pattern Matches per SUI"); +/* SRE */ +DECLARE_GLOBAL(sre_rule_num, unsigned int, uint, + CONFIG_FSL_PME2_SRE_CNR, + "Configured Number of Stateful Rules"); +DECLARE_GLOBAL(sre_session_ctx_size, unsigned int, uint, + 1 << CONFIG_FSL_PME2_SRE_CTX_SIZE_PER_SESSION, + "SRE Context Size per Session"); + +/************ + * Section 1 + ************ + * This code is called during kernel early-boot and could never be made + * loadable. + */ +static dma_addr_t dxe_a, sre_a; +static size_t dxe_sz = DEFAULT_PDSR_SZ, sre_sz = DEFAULT_SRE_SZ; + +/* Parse the property to extract the memory location and size and + * memblock_reserve() it. If it isn't supplied, memblock_alloc() the default size. */ +static __init int parse_mem_property(struct device_node *node, const char *name, + dma_addr_t *addr, size_t *sz, u64 align, int zero) +{ + const u32 *pint; + int ret; + + pint = of_get_property(node, name, &ret); + if (!pint || (ret != 16)) { + pr_info("pme: No %s property '%s', using memblock_alloc(0x%016zx)\n", + node->full_name, name, *sz); + *addr = memblock_alloc(*sz, align); + if (zero) + memset(phys_to_virt(*addr), 0, *sz); + return 0; + } + pr_info("pme: Using %s property '%s'\n", node->full_name, name); + /* If using a "zero-pma", don't try to zero it, even if you asked */ + if (zero && of_find_property(node, "zero-pma", &ret)) { + pr_info(" it's a 'zero-pma', not zeroing from s/w\n"); + zero = 0; + } + *addr = ((u64)pint[0] << 32) | (u64)pint[1]; + *sz = ((u64)pint[2] << 32) | (u64)pint[3]; + if((u64)*addr & (align - 1)) { + pr_err("pme: Invalid alignment, address %016llx\n",(u64)*addr); + return -EINVAL; + } + /* Keep things simple, it's either all in the DRAM range or it's all + * outside. */ + if (*addr < memblock_end_of_DRAM()) { + if ((u64)*addr + (u64)*sz > memblock_end_of_DRAM()){ + pr_err("pme: outside DRAM range\n"); + return -EINVAL; + } + if (memblock_reserve(*addr, *sz) < 0) { + pr_err("pme: Failed to reserve %s\n", name); + return -ENOMEM; + } + if (zero) + memset(phys_to_virt(*addr), 0, *sz); + } else if (zero) { + /* map as cacheable, non-guarded */ + void *tmpp = ioremap_prot(*addr, *sz, 0); + memset(tmpp, 0, *sz); + iounmap(tmpp); + } + return 0; +} + +/* No errors/interrupts. Physical addresses are assumed <= 32bits. */ +static int __init fsl_pme2_init(struct device_node *node) +{ + const char *s; + int ret = 0; + + s = of_get_property(node, "fsl,hv-claimable", &ret); + if (s && !strcmp(s, "standby")) { + pr_info(" -> in standby mode\n"); + return 0; + } + /* Check if pdsr memory already allocated */ + if (dxe_a) { + pr_err("pme: Error fsl_pme2_init already done\n"); + return -EINVAL; + } + ret = parse_mem_property(node, "fsl,pme-pdsr", &dxe_a, &dxe_sz, + PDSR_TBL_ALIGN, 0); + if (ret) + return ret; + ret = parse_mem_property(node, "fsl,pme-sre", &sre_a, &sre_sz, + SRE_TBL_ALIGN, 0); + return ret; +} + +__init void pme2_init_early(void) +{ + struct device_node *dn; + int ret; + for_each_compatible_node(dn, NULL, "fsl,pme") { + ret = fsl_pme2_init(dn); + if (ret) + pr_err("pme: Error fsl_pme2_init\n"); + } +} + +/************ + * Section 2 + *********** + * This code is called during driver initialisation. It doesn't do anything with + * the device-tree entries nor the PME device, it simply creates the sysfs stuff + * and gives the user something to hold. This could be made loadable, if there + * was any benefit to doing so - but as the device is already "bound" by static + * code, there's little point to hiding the fact. + */ + +MODULE_AUTHOR("Geoff Thorpe"); +MODULE_LICENSE("Dual BSD/GPL"); +MODULE_DESCRIPTION("FSL PME2 (p4080) device control"); + +/* Opaque pointer target used to represent the PME CCSR map, ... */ +struct pme; + +/* ... and the instance of it. */ +static struct pme *global_pme; +static int pme_err_irq; + +static inline void __pme_out(struct pme *p, u32 offset, u32 val) +{ + u32 __iomem *regs = (void *)p; + out_be32(regs + (offset >> 2), val); +} +#define pme_out(p, r, v) __pme_out(p, PME_REG_##r, v) +static inline u32 __pme_in(struct pme *p, u32 offset) +{ + u32 __iomem *regs = (void *)p; + return in_be32(regs + (offset >> 2)); +} +#define pme_in(p, r) __pme_in(p, PME_REG_##r) + +#define PME_EFQC(en, fq) \ + ({ \ + /* Assume a default delay of 64 cycles */ \ + u8 __i419 = 0x1; \ + u32 __fq419 = (fq) & 0x00ffffff; \ + ((en) ? 0x80000000 : 0) | (__i419 << 28) | __fq419; \ + }) + +#define PME_FACONF_ENABLE 0x00000002 +#define PME_FACONF_RESET 0x00000001 + +/* pme stats accumulator work */ +static void accumulator_update(struct work_struct *work); +void accumulator_update_interval(u32 interval); +static DECLARE_DELAYED_WORK(accumulator_work, accumulator_update); +u32 pme_stat_interval = CONFIG_FSL_PME2_STAT_ACCUMULATOR_UPDATE_INTERVAL; +#define PME_SBE_ERR 0x01000000 +#define PME_DBE_ERR 0x00080000 +#define PME_PME_ERR 0x00000100 +#define PME_ALL_ERR (PME_SBE_ERR | PME_DBE_ERR | PME_PME_ERR) + +static struct of_device_id of_fsl_pme_ids[] = { + { + .compatible = "fsl,pme", + }, + {} +}; +MODULE_DEVICE_TABLE(of, of_fsl_pme_ids); + +/* Pme interrupt handler */ +static irqreturn_t pme_isr(int irq, void *ptr) +{ + static u32 last_isrstate; + u32 isrstate = pme_in(global_pme, ISR) ^ last_isrstate; + + /* What new ISR state has been raise */ + if (!isrstate) + return IRQ_NONE; + if (isrstate & PME_SBE_ERR) + pr_crit("PME: SBE detected\n"); + if (isrstate & PME_DBE_ERR) + pr_crit("PME: DBE detected\n"); + if (isrstate & PME_PME_ERR) + pr_crit("PME: PME serious detected\n"); + /* Clear the ier interrupt bit */ + last_isrstate |= isrstate; + pme_out(global_pme, IER, ~last_isrstate); + return IRQ_HANDLED; +} + +static int of_fsl_pme_remove(struct platform_device *ofdev) +{ + /* Cancel pme accumulator */ + accumulator_update_interval(0); + cancel_delayed_work_sync(&accumulator_work); + /* Disable PME..TODO need to wait till it's quiet */ + pme_out(global_pme, FACONF, PME_FACONF_RESET); + /* Release interrupt */ + if (likely(pme_err_irq != NO_IRQ)) + free_irq(pme_err_irq, &ofdev->dev); + /* Remove sysfs attribute */ + pme2_remove_sysfs_dev_files(ofdev); + /* Unmap controller region */ + iounmap(global_pme); + global_pme = NULL; + return 0; +} + +static int of_fsl_pme_probe(struct platform_device *ofdev) +{ + int ret, err = 0; + void __iomem *regs; + struct device *dev = &ofdev->dev; + struct device_node *nprop = dev->of_node; + u32 clkfreq = DEFAULT_SRFCC * 1000000; + const u32 *value; + const char *s; + int srec_aim = 0, srec_esr = 0; + u32 srecontextsize_code; + u32 dec1; + + /* TODO: This standby handling won't work properly after failover, it's + * just to allow bring up for now. */ + s = of_get_property(nprop, "fsl,hv-claimable", &ret); + if (s && !strcmp(s, "standby")) + return 0; + pme_err_irq = of_irq_to_resource(nprop, 0, NULL); + if (unlikely(pme_err_irq == NO_IRQ)) + dev_warn(dev, "Can't get %s property '%s'\n", nprop->full_name, + "interrupts"); + + /* Get configuration properties from device tree */ + /* First, get register page */ + regs = of_iomap(nprop, 0); + if (regs == NULL) { + dev_err(dev, "of_iomap() failed\n"); + err = -EINVAL; + goto out; + } + + /* Global configuration, leave pme disabled */ + global_pme = (struct pme *)regs; + pme_out(global_pme, FACONF, 0); + pme_out(global_pme, EFQC, PME_EFQC(0, 0)); + + /* TODO: these coherency settings for PMFA, DXE, and SRE force all + * transactions to snoop, as the kernel does not yet support flushing in + * dma_map_***() APIs (ie. h/w can not treat otherwise coherent memory + * in a non-coherent manner, temporarily or otherwise). When the kernel + * supports this, we should tune these settings back to; + * FAMCR = 0x00010001 + * DMCR = 0x00000000 + * SMCR = 0x00000000 + */ + /* PME HW rev 2.1: Added TWC field in FAMCR */ + pme_out(global_pme, FAMCR, 0x11010101); + pme_out(global_pme, DMCR, 0x00000001); + pme_out(global_pme, SMCR, 0x00000211); + + if (likely(pme_err_irq != NO_IRQ)) { + /* Register the pme ISR handler */ + err = request_irq(pme_err_irq, pme_isr, IRQF_SHARED, "pme-err", + dev); + if (err) { + dev_err(dev, "request_irq() failed\n"); + goto out_unmap_ctrl_region; + } + } + +#ifdef CONFIG_FSL_PME2_SRE_AIM + srec_aim = 1; +#endif +#ifdef CONFIG_FSL_PME2_SRE_ESR + srec_esr = 1; +#endif + /* Validate some parameters */ + if (!sre_session_ctx_size || !is_power_of_2(sre_session_ctx_size) || + (sre_session_ctx_size < 32) || + (sre_session_ctx_size > (131072))) { + dev_err(dev, "invalid sre_session_ctx_size\n"); + err = -EINVAL; + goto out_free_irq; + } + srecontextsize_code = ilog2(sre_session_ctx_size); + srecontextsize_code -= 4; + + /* Configure Clock Frequency */ + value = of_get_property(nprop, "clock-frequency", NULL); + if (value) + clkfreq = *value; + pme_out(global_pme, SFRCC, DIV_ROUND_UP(clkfreq, 1000000)); + + pme_out(global_pme, PDSRBAH, upper_32_bits(dxe_a)); + pme_out(global_pme, PDSRBAL, lower_32_bits(dxe_a)); + pme_out(global_pme, SCBARH, upper_32_bits(sre_a)); + pme_out(global_pme, SCBARL, lower_32_bits(sre_a)); + /* Maximum allocated index into the PDSR table available to the DXE + * Rev 2.0: Max 0xF_FFFC + * Rev 2.1: Max 0x7_FFFC + */ + if (PME_REV(pme_in(global_pme, PM_IP_REV1)) == PME_REV_2_0) { + if (((dxe_sz/PDSR_TBL_ALIGN)-1) > DEC1_MAX_REV_2_0) + dec1 = DEC1_MAX_REV_2_0; + else + dec1 = (dxe_sz/PDSR_TBL_ALIGN)-1; + } else { + if (((dxe_sz/PDSR_TBL_ALIGN)-1) > DEC1_MAX_REV_2_1) + dec1 = DEC1_MAX_REV_2_1; + else + dec1 = (dxe_sz/PDSR_TBL_ALIGN)-1; + } + pme_out(global_pme, DEC1, dec1); + /* Maximum allocated index into the PDSR table available to the SRE */ + pme_out(global_pme, SEC2, dec1); + /* Maximum allocated 32-byte offset into SRE Context Table.*/ + if (sre_sz) + pme_out(global_pme, SEC3, (sre_sz/SRE_TBL_ALIGN)-1); + /* Max test line execution */ + pme_out(global_pme, DEC0, max_test_line_per_pat); + pme_out(global_pme, DLC, + (max_pat_eval_per_sui << 16) | max_pat_matches_per_sui); + + /* SREC - SRE Config */ + pme_out(global_pme, SREC, + /* Number of rules in database */ + (sre_rule_num << 0) | + /* Simple Report Enabled */ + ((srec_esr ? 1 : 0) << 18) | + /* Context Size per Session */ + (srecontextsize_code << 19) | + /* Alternate Inclusive Mode */ + ((srec_aim ? 1 : 0) << 29)); + pme_out(global_pme, SEC1, + (CONFIG_FSL_PME2_SRE_MAX_INSTRUCTION_LIMIT << 16) | + CONFIG_FSL_PME2_SRE_MAX_BLOCK_NUMBER); + + /* Setup Accumulator */ + if (pme_stat_interval) + schedule_delayed_work(&accumulator_work, + msecs_to_jiffies(pme_stat_interval)); + /* Create sysfs entries */ + err = pme2_create_sysfs_dev_files(ofdev); + if (err) + goto out_stop_accumulator; + + /* Enable interrupts */ + pme_out(global_pme, IER, PME_ALL_ERR); + dev_info(dev, "ver: 0x%08x\n", pme_in(global_pme, PM_IP_REV1)); + + /* Enable pme */ + pme_out(global_pme, FACONF, PME_FACONF_ENABLE); + return 0; + +out_stop_accumulator: + if (pme_stat_interval) { + accumulator_update_interval(0); + cancel_delayed_work_sync(&accumulator_work); + } +out_free_irq: + if (likely(pme_err_irq != NO_IRQ)) + free_irq(pme_err_irq, &ofdev->dev); +out_unmap_ctrl_region: + pme_out(global_pme, FACONF, PME_FACONF_RESET); + iounmap(global_pme); + global_pme = NULL; +out: + return err; +} + +static struct platform_driver of_fsl_pme_driver = { + .driver = { + .owner = THIS_MODULE, + .name = DRV_NAME, + .of_match_table = of_fsl_pme_ids, + }, + .probe = of_fsl_pme_probe, + .remove = of_fsl_pme_remove, +}; + +static int pme2_ctrl_init(void) +{ + return platform_driver_register(&of_fsl_pme_driver); +} + +static void pme2_ctrl_exit(void) +{ + platform_driver_unregister(&of_fsl_pme_driver); +} + +module_init(pme2_ctrl_init); +module_exit(pme2_ctrl_exit); + +/************ + * Section 3 + ************ + * These APIs are the only functional hooks into the control driver, besides the + * sysfs attributes. + */ + +int pme2_have_control(void) +{ + return global_pme ? 1 : 0; +} +EXPORT_SYMBOL(pme2_have_control); + +int pme2_exclusive_set(struct qman_fq *fq) +{ + if (!pme2_have_control()) + return -ENODEV; + pme_out(global_pme, EFQC, PME_EFQC(1, qman_fq_fqid(fq))); + return 0; +} +EXPORT_SYMBOL(pme2_exclusive_set); + +int pme2_exclusive_unset(void) +{ + if (!pme2_have_control()) + return -ENODEV; + pme_out(global_pme, EFQC, PME_EFQC(0, 0)); + return 0; +} +EXPORT_SYMBOL(pme2_exclusive_unset); + +int pme_attr_set(enum pme_attr attr, u32 val) +{ + u32 mask; + u32 attr_val; + + if (!pme2_have_control()) + return -ENODEV; + + /* Check if Buffer size configuration */ + if (attr >= pme_attr_bsc_first && attr <= pme_attr_bsc_last) { + u32 bsc_pool_id = attr - pme_attr_bsc_first; + u32 bsc_pool_offset = bsc_pool_id % 8; + u32 bsc_pool_mask = ~(0xF << ((7-bsc_pool_offset)*4)); + /* range for val 0..0xB */ + if (val > 0xb) + return -EINVAL; + /* calculate which sky-blue reg */ + /* 0..7 -> bsc_(0..7), PME_REG_BSC0 */ + /* 8..15 -> bsc_(8..15) PME_REG_BSC1*/ + /* ... */ + /* 56..63 -> bsc_(56..63) PME_REG_BSC7*/ + attr_val = pme_in(global_pme, BSC0 + ((bsc_pool_id/8)*4)); + /* Now mask in the new value */ + attr_val = attr_val & bsc_pool_mask; + attr_val = attr_val | (val << ((7-bsc_pool_offset)*4)); + pme_out(global_pme, BSC0 + ((bsc_pool_id/8)*4), attr_val); + return 0; + } + + switch (attr) { + case pme_attr_efqc_int: + if (val > 4) + return -EINVAL; + mask = 0x8FFFFFFF; + attr_val = pme_in(global_pme, EFQC); + /* clear efqc_int */ + attr_val &= mask; + val <<= 28; + val |= attr_val; + pme_out(global_pme, EFQC, val); + break; + + case pme_attr_sw_db: + pme_out(global_pme, SWDB, val); + break; + + case pme_attr_dmcr: + pme_out(global_pme, DMCR, val); + break; + + case pme_attr_smcr: + pme_out(global_pme, SMCR, val); + break; + + case pme_attr_famcr: + pme_out(global_pme, FAMCR, val); + break; + + case pme_attr_kvlts: + if (val < 2 || val > 16) + return -EINVAL; + /* HW range: 1..15, SW range: 2..16 */ + pme_out(global_pme, KVLTS, --val); + break; + + case pme_attr_max_chain_length: + if (val > 0x7FFF) + val = 0x7FFF; + pme_out(global_pme, KEC, val); + break; + + case pme_attr_pattern_range_counter_idx: + if (val > 0x1FFFF) + val = 0x1FFFF; + pme_out(global_pme, DRCIC, val); + break; + + case pme_attr_pattern_range_counter_mask: + if (val > 0x1FFFF) + val = 0x1FFFF; + pme_out(global_pme, DRCMC, val); + break; + + case pme_attr_max_allowed_test_line_per_pattern: + if (val > 0x3FFF) + val = 0x3FFF; + pme_out(global_pme, DEC0, val); + break; + + case pme_attr_max_pattern_matches_per_sui: + /* mpe, mpm */ + if (val > 0xFFFF) + val = 0xFFFF; + mask = 0xFFFF0000; + attr_val = pme_in(global_pme, DLC); + /* clear mpm */ + attr_val &= mask; + val &= ~mask; + val |= attr_val; + pme_out(global_pme, DLC, val); + break; + + case pme_attr_max_pattern_evaluations_per_sui: + /* mpe, mpm */ + if (val > 0xFFFF) + val = 0xFFFF; + mask = 0x0000FFFF; + attr_val = pme_in(global_pme, DLC); + /* clear mpe */ + attr_val &= mask; + /* clear unwanted bits in val*/ + val &= mask; + val <<= 16; + val |= attr_val; + pme_out(global_pme, DLC, val); + break; + + case pme_attr_report_length_limit: + if (val > 0xFFFF) + val = 0xFFFF; + pme_out(global_pme, RLL, val); + break; + + case pme_attr_end_of_simple_sui_report: + /* bit 13 */ + mask = 0x00040000; + attr_val = pme_in(global_pme, SREC); + if (val) + attr_val |= mask; + else + attr_val &= ~mask; + pme_out(global_pme, SREC, attr_val); + break; + + case pme_attr_aim: + /* bit 2 */ + mask = 0x20000000; + attr_val = pme_in(global_pme, SREC); + if (val) + attr_val |= mask; + else + attr_val &= ~mask; + pme_out(global_pme, SREC, attr_val); + break; + + case pme_attr_end_of_sui_reaction_ptr: + if (val > 0xFFFFF) + val = 0xFFFFF; + pme_out(global_pme, ESRP, val); + break; + + case pme_attr_sre_pscl: + pme_out(global_pme, SFRCC, val); + break; + + case pme_attr_sre_max_block_num: + /* bits 17..31 */ + if (val > 0x7FFF) + val = 0x7FFF; + mask = 0xFFFF8000; + attr_val = pme_in(global_pme, SEC1); + /* clear mbn */ + attr_val &= mask; + /* clear unwanted bits in val*/ + val &= ~mask; + val |= attr_val; + pme_out(global_pme, SEC1, val); + break; + + case pme_attr_sre_max_instruction_limit: + /* bits 0..15 */ + if (val > 0xFFFF) + val = 0xFFFF; + mask = 0x0000FFFF; + attr_val = pme_in(global_pme, SEC1); + /* clear mil */ + attr_val &= mask; + /* clear unwanted bits in val*/ + val &= mask; + val <<= 16; + val |= attr_val; + pme_out(global_pme, SEC1, val); + break; + + case pme_attr_srrv0: + pme_out(global_pme, SRRV0, val); + break; + case pme_attr_srrv1: + pme_out(global_pme, SRRV1, val); + break; + case pme_attr_srrv2: + pme_out(global_pme, SRRV2, val); + break; + case pme_attr_srrv3: + pme_out(global_pme, SRRV3, val); + break; + case pme_attr_srrv4: + pme_out(global_pme, SRRV4, val); + break; + case pme_attr_srrv5: + pme_out(global_pme, SRRV5, val); + break; + case pme_attr_srrv6: + pme_out(global_pme, SRRV6, val); + break; + case pme_attr_srrv7: + pme_out(global_pme, SRRV7, val); + break; + case pme_attr_srrfi: + pme_out(global_pme, SRRFI, val); + break; + case pme_attr_srri: + pme_out(global_pme, SRRI, val); + break; + case pme_attr_srrwc: + pme_out(global_pme, SRRWC, val); + break; + case pme_attr_srrr: + pme_out(global_pme, SRRR, val); + break; + case pme_attr_tbt0ecc1th: + pme_out(global_pme, TBT0ECC1TH, val); + break; + case pme_attr_tbt1ecc1th: + pme_out(global_pme, TBT1ECC1TH, val); + break; + case pme_attr_vlt0ecc1th: + pme_out(global_pme, VLT0ECC1TH, val); + break; + case pme_attr_vlt1ecc1th: + pme_out(global_pme, VLT1ECC1TH, val); + break; + case pme_attr_cmecc1th: + pme_out(global_pme, CMECC1TH, val); + break; + case pme_attr_dxcmecc1th: + pme_out(global_pme, DXCMECC1TH, val); + break; + case pme_attr_dxemecc1th: + pme_out(global_pme, DXEMECC1TH, val); + break; + case pme_attr_esr: + pme_out(global_pme, ESR, val); + break; + case pme_attr_pehd: + pme_out(global_pme, PEHD, val); + break; + case pme_attr_ecc1bes: + pme_out(global_pme, ECC1BES, val); + break; + case pme_attr_ecc2bes: + pme_out(global_pme, ECC2BES, val); + break; + case pme_attr_miace: + pme_out(global_pme, MIA_CE, val); + break; + case pme_attr_miacr: + pme_out(global_pme, MIA_CR, val); + break; + case pme_attr_cdcr: + pme_out(global_pme, CDCR, val); + break; + case pme_attr_pmtr: + pme_out(global_pme, PMTR, val); + break; + + default: + pr_err("pme: Unknown attr %u\n", attr); + return -EINVAL; + }; + return 0; +} +EXPORT_SYMBOL(pme_attr_set); + +int pme_attr_get(enum pme_attr attr, u32 *val) +{ + u32 mask; + u32 attr_val; + + if (!pme2_have_control()) + return -ENODEV; + + /* Check if Buffer size configuration */ + if (attr >= pme_attr_bsc_first && attr <= pme_attr_bsc_last) { + u32 bsc_pool_id = attr - pme_attr_bsc_first; + u32 bsc_pool_offset = bsc_pool_id % 8; + /* calculate which sky-blue reg */ + /* 0..7 -> bsc_(0..7), PME_REG_BSC0 */ + /* 8..15 -> bsc_(8..15) PME_REG_BSC1*/ + /* ... */ + /* 56..63 -> bsc_(56..63) PME_REG_BSC7*/ + attr_val = pme_in(global_pme, BSC0 + ((bsc_pool_id/8)*4)); + attr_val = attr_val >> ((7-bsc_pool_offset)*4); + attr_val = attr_val & 0x0000000F; + *val = attr_val; + return 0; + } + + switch (attr) { + case pme_attr_efqc_int: + mask = 0x8FFFFFFF; + attr_val = pme_in(global_pme, EFQC); + attr_val &= ~mask; + attr_val >>= 28; + break; + + case pme_attr_sw_db: + attr_val = pme_in(global_pme, SWDB); + break; + + case pme_attr_dmcr: + attr_val = pme_in(global_pme, DMCR); + break; + + case pme_attr_smcr: + attr_val = pme_in(global_pme, SMCR); + break; + + case pme_attr_famcr: + attr_val = pme_in(global_pme, FAMCR); + break; + + case pme_attr_kvlts: + /* bit 28-31 */ + attr_val = pme_in(global_pme, KVLTS); + attr_val &= 0x0000000F; + /* HW range: 1..15, SW range: 2..16 */ + attr_val += 1; + break; + + case pme_attr_max_chain_length: + /* bit 17-31 */ + attr_val = pme_in(global_pme, KEC); + attr_val &= 0x00007FFF; + break; + + case pme_attr_pattern_range_counter_idx: + /* bit 15-31 */ + attr_val = pme_in(global_pme, DRCIC); + attr_val &= 0x0001FFFF; + break; + + case pme_attr_pattern_range_counter_mask: + /* bit 15-31 */ + attr_val = pme_in(global_pme, DRCMC); + attr_val &= 0x0001FFFF; + break; + + case pme_attr_max_allowed_test_line_per_pattern: + /* bit 18-31 */ + attr_val = pme_in(global_pme, DEC0); + attr_val &= 0x00003FFF; + break; + + case pme_attr_max_pdsr_index: + /* bit 12-31 */ + attr_val = pme_in(global_pme, DEC1); + attr_val &= 0x000FFFFF; + break; + + case pme_attr_max_pattern_matches_per_sui: + attr_val = pme_in(global_pme, DLC); + attr_val &= 0x0000FFFF; + break; + + case pme_attr_max_pattern_evaluations_per_sui: + attr_val = pme_in(global_pme, DLC); + attr_val >>= 16; + break; + + case pme_attr_report_length_limit: + attr_val = pme_in(global_pme, RLL); + /* clear unwanted bits in val*/ + attr_val &= 0x0000FFFF; + break; + + case pme_attr_end_of_simple_sui_report: + /* bit 13 */ + attr_val = pme_in(global_pme, SREC); + attr_val >>= 18; + /* clear unwanted bits in val*/ + attr_val &= 0x00000001; + break; + + case pme_attr_aim: + /* bit 2 */ + attr_val = pme_in(global_pme, SREC); + attr_val >>= 29; + /* clear unwanted bits in val*/ + attr_val &= 0x00000001; + break; + + case pme_attr_sre_context_size: + /* bits 9..12 */ + attr_val = pme_in(global_pme, SREC); + attr_val >>= 19; + /* clear unwanted bits in val*/ + attr_val &= 0x0000000F; + attr_val += 4; + attr_val = 1 << attr_val; + break; + + case pme_attr_sre_rule_num: + /* bits 24..31 */ + attr_val = pme_in(global_pme, SREC); + /* clear unwanted bits in val*/ + attr_val &= 0x000000FF; + /* Multiply by 256 */ + attr_val <<= 8; + break; + + case pme_attr_sre_session_ctx_num: { + u32 ctx_sz = 0; + /* = sre_table_size / sre_session_ctx_size */ + attr_val = pme_in(global_pme, SEC3); + /* clear unwanted bits in val*/ + attr_val &= 0x07FFFFFF; + attr_val += 1; + attr_val *= 32; + ctx_sz = pme_in(global_pme, SREC); + ctx_sz >>= 19; + /* clear unwanted bits in val*/ + ctx_sz &= 0x0000000F; + ctx_sz += 4; + attr_val /= (1 << ctx_sz); + } + break; + + case pme_attr_end_of_sui_reaction_ptr: + /* bits 12..31 */ + attr_val = pme_in(global_pme, ESRP); + /* clear unwanted bits in val*/ + attr_val &= 0x000FFFFF; + break; + + case pme_attr_sre_pscl: + /* bits 22..31 */ + attr_val = pme_in(global_pme, SFRCC); + break; + + case pme_attr_sre_max_block_num: + /* bits 17..31 */ + attr_val = pme_in(global_pme, SEC1); + /* clear unwanted bits in val*/ + attr_val &= 0x00007FFF; + break; + + case pme_attr_sre_max_instruction_limit: + /* bits 0..15 */ + attr_val = pme_in(global_pme, SEC1); + attr_val >>= 16; + break; + + case pme_attr_sre_max_index_size: + /* bits 12..31 */ + attr_val = pme_in(global_pme, SEC2); + /* clear unwanted bits in val*/ + attr_val &= 0x000FFFFF; + break; + + case pme_attr_sre_max_offset_ctrl: + /* bits 5..31 */ + attr_val = pme_in(global_pme, SEC3); + /* clear unwanted bits in val*/ + attr_val &= 0x07FFFFFF; + break; + + case pme_attr_src_id: + /* bits 24..31 */ + attr_val = pme_in(global_pme, SRCIDR); + /* clear unwanted bits in val*/ + attr_val &= 0x000000FF; + break; + + case pme_attr_liodnr: + /* bits 20..31 */ + attr_val = pme_in(global_pme, LIODNR); + /* clear unwanted bits in val*/ + attr_val &= 0x00000FFF; + break; + + case pme_attr_rev1: + /* bits 0..31 */ + attr_val = pme_in(global_pme, PM_IP_REV1); + break; + + case pme_attr_rev2: + /* bits 0..31 */ + attr_val = pme_in(global_pme, PM_IP_REV2); + break; + + case pme_attr_srrr: + attr_val = pme_in(global_pme, SRRR); + break; + + case pme_attr_trunci: + attr_val = pme_in(global_pme, TRUNCI); + break; + + case pme_attr_rbc: + attr_val = pme_in(global_pme, RBC); + break; + + case pme_attr_tbt0ecc1ec: + attr_val = pme_in(global_pme, TBT0ECC1EC); + break; + + case pme_attr_tbt1ecc1ec: + attr_val = pme_in(global_pme, TBT1ECC1EC); + break; + + case pme_attr_vlt0ecc1ec: + attr_val = pme_in(global_pme, VLT0ECC1EC); + break; + + case pme_attr_vlt1ecc1ec: + attr_val = pme_in(global_pme, VLT1ECC1EC); + break; + + case pme_attr_cmecc1ec: + attr_val = pme_in(global_pme, CMECC1EC); + break; + + case pme_attr_dxcmecc1ec: + attr_val = pme_in(global_pme, DXCMECC1EC); + break; + + case pme_attr_dxemecc1ec: + attr_val = pme_in(global_pme, DXEMECC1EC); + break; + + case pme_attr_tbt0ecc1th: + attr_val = pme_in(global_pme, TBT0ECC1TH); + break; + + case pme_attr_tbt1ecc1th: + attr_val = pme_in(global_pme, TBT1ECC1TH); + break; + + case pme_attr_vlt0ecc1th: + attr_val = pme_in(global_pme, VLT0ECC1TH); + break; + + case pme_attr_vlt1ecc1th: + attr_val = pme_in(global_pme, VLT1ECC1TH); + break; + + case pme_attr_cmecc1th: + attr_val = pme_in(global_pme, CMECC1TH); + break; + + case pme_attr_dxcmecc1th: + attr_val = pme_in(global_pme, DXCMECC1TH); + break; + + case pme_attr_dxemecc1th: + attr_val = pme_in(global_pme, DXEMECC1TH); + break; + + case pme_attr_stnib: + attr_val = pme_in(global_pme, STNIB); + break; + + case pme_attr_stnis: + attr_val = pme_in(global_pme, STNIS); + break; + + case pme_attr_stnth1: + attr_val = pme_in(global_pme, STNTH1); + break; + + case pme_attr_stnth2: + attr_val = pme_in(global_pme, STNTH2); + break; + + case pme_attr_stnthv: + attr_val = pme_in(global_pme, STNTHV); + break; + + case pme_attr_stnths: + attr_val = pme_in(global_pme, STNTHS); + break; + + case pme_attr_stnch: + attr_val = pme_in(global_pme, STNCH); + break; + + case pme_attr_stnpm: + attr_val = pme_in(global_pme, STNPM); + break; + + case pme_attr_stns1m: + attr_val = pme_in(global_pme, STNS1M); + break; + + case pme_attr_stnpmr: + attr_val = pme_in(global_pme, STNPMR); + break; + + case pme_attr_stndsr: + attr_val = pme_in(global_pme, STNDSR); + break; + + case pme_attr_stnesr: + attr_val = pme_in(global_pme, STNESR); + break; + + case pme_attr_stns1r: + attr_val = pme_in(global_pme, STNS1R); + break; + + case pme_attr_stnob: + attr_val = pme_in(global_pme, STNOB); + break; + + case pme_attr_mia_byc: + attr_val = pme_in(global_pme, MIA_BYC); + break; + + case pme_attr_mia_blc: + attr_val = pme_in(global_pme, MIA_BLC); + break; + + case pme_attr_isr: + attr_val = pme_in(global_pme, ISR); + break; + + case pme_attr_ecr0: + attr_val = pme_in(global_pme, ECR0); + break; + + case pme_attr_ecr1: + attr_val = pme_in(global_pme, ECR1); + break; + + case pme_attr_esr: + attr_val = pme_in(global_pme, ESR); + break; + + case pme_attr_pmstat: + attr_val = pme_in(global_pme, PMSTAT); + break; + + case pme_attr_pehd: + attr_val = pme_in(global_pme, PEHD); + break; + + case pme_attr_ecc1bes: + attr_val = pme_in(global_pme, ECC1BES); + break; + + case pme_attr_ecc2bes: + attr_val = pme_in(global_pme, ECC2BES); + break; + + case pme_attr_eccaddr: + attr_val = pme_in(global_pme, ECCADDR); + break; + + case pme_attr_ecccode: + attr_val = pme_in(global_pme, ECCCODE); + break; + + case pme_attr_miace: + attr_val = pme_in(global_pme, MIA_CE); + break; + + case pme_attr_miacr: + attr_val = pme_in(global_pme, MIA_CR); + break; + + case pme_attr_cdcr: + attr_val = pme_in(global_pme, CDCR); + break; + + case pme_attr_pmtr: + attr_val = pme_in(global_pme, PMTR); + break; + + case pme_attr_faconf: + attr_val = pme_in(global_pme, FACONF); + break; + + case pme_attr_pdsrbah: + attr_val = pme_in(global_pme, PDSRBAH); + break; + + case pme_attr_pdsrbal: + attr_val = pme_in(global_pme, PDSRBAL); + break; + + case pme_attr_scbarh: + attr_val = pme_in(global_pme, SCBARH); + break; + + case pme_attr_scbarl: + attr_val = pme_in(global_pme, SCBARL); + break; + + case pme_attr_srrv0: + attr_val = pme_in(global_pme, SRRV0); + break; + + case pme_attr_srrv1: + attr_val = pme_in(global_pme, SRRV1); + break; + + case pme_attr_srrv2: + attr_val = pme_in(global_pme, SRRV2); + break; + + case pme_attr_srrv3: + attr_val = pme_in(global_pme, SRRV3); + break; + + case pme_attr_srrv4: + attr_val = pme_in(global_pme, SRRV4); + break; + + case pme_attr_srrv5: + attr_val = pme_in(global_pme, SRRV5); + break; + + case pme_attr_srrv6: + attr_val = pme_in(global_pme, SRRV6); + break; + + case pme_attr_srrv7: + attr_val = pme_in(global_pme, SRRV7); + break; + + case pme_attr_srrfi: + attr_val = pme_in(global_pme, SRRFI); + break; + + case pme_attr_srri: + attr_val = pme_in(global_pme, SRRI); + break; + + case pme_attr_srrwc: + attr_val = pme_in(global_pme, SRRWC); + break; + + default: + pr_err("pme: Unknown attr %u\n", attr); + return -EINVAL; + }; + *val = attr_val; + return 0; +} +EXPORT_SYMBOL(pme_attr_get); + +static enum pme_attr stat_list[] = { + pme_attr_trunci, + pme_attr_rbc, + pme_attr_tbt0ecc1ec, + pme_attr_tbt1ecc1ec, + pme_attr_vlt0ecc1ec, + pme_attr_vlt1ecc1ec, + pme_attr_cmecc1ec, + pme_attr_dxcmecc1ec, + pme_attr_dxemecc1ec, + pme_attr_stnib, + pme_attr_stnis, + pme_attr_stnth1, + pme_attr_stnth2, + pme_attr_stnthv, + pme_attr_stnths, + pme_attr_stnch, + pme_attr_stnpm, + pme_attr_stns1m, + pme_attr_stnpmr, + pme_attr_stndsr, + pme_attr_stnesr, + pme_attr_stns1r, + pme_attr_stnob, + pme_attr_mia_byc, + pme_attr_mia_blc +}; + +static u64 pme_stats[sizeof(stat_list)/sizeof(enum pme_attr)]; +static DEFINE_SPINLOCK(stat_lock); + +int pme_stat_get(enum pme_attr stat, u64 *value, int reset) +{ + int i, ret = 0; + int value_set = 0; + u32 val; + + spin_lock_irq(&stat_lock); + for (i = 0; i < sizeof(stat_list)/sizeof(enum pme_attr); i++) { + if (stat_list[i] == stat) { + ret = pme_attr_get(stat_list[i], &val); + /* Do I need to check ret */ + pme_stats[i] += val; + *value = pme_stats[i]; + value_set = 1; + if (reset) + pme_stats[i] = 0; + break; + } + } + if (!value_set) { + pr_err("pme: Invalid stat request %d\n", stat); + ret = -EINVAL; + } + spin_unlock_irq(&stat_lock); + return ret; +} +EXPORT_SYMBOL(pme_stat_get); + +void accumulator_update_interval(u32 interval) +{ + int schedule = 0; + + spin_lock_irq(&stat_lock); + if (!pme_stat_interval && interval) + schedule = 1; + pme_stat_interval = interval; + spin_unlock_irq(&stat_lock); + if (schedule) + schedule_delayed_work(&accumulator_work, + msecs_to_jiffies(interval)); +} + +static void accumulator_update(struct work_struct *work) +{ + int i, ret; + u32 local_interval; + u32 val; + + spin_lock_irq(&stat_lock); + local_interval = pme_stat_interval; + for (i = 0; i < sizeof(stat_list)/sizeof(enum pme_attr); i++) { + ret = pme_attr_get(stat_list[i], &val); + pme_stats[i] += val; + } + spin_unlock_irq(&stat_lock); + if (local_interval) + schedule_delayed_work(&accumulator_work, + msecs_to_jiffies(local_interval)); +} + --- linux-3.13.0.orig/drivers/staging/fsl_pme2/pme2_db.c +++ linux-3.13.0/drivers/staging/fsl_pme2/pme2_db.c @@ -0,0 +1,572 @@ +/* Copyright 2009-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 "pme2_private.h" +#include + +/* Forward declaration */ +static struct miscdevice fsl_pme2_db_dev; + +/* Global spinlock for handling exclusive inc/dec */ +static DEFINE_SPINLOCK(exclusive_lock); + +/* Private structure that is allocated for each open that is done on the + * pme_db device. This is used to maintain the state of a database session */ +struct db_session { + /* The ctx that is needed to communicate with the pme high level */ + struct pme_ctx ctx; + /* Used to track the EXCLUSIVE_INC and EXCLUSIVE_DEC ioctls */ + unsigned int exclusive_counter; +}; + +struct cmd_token { + /* pme high level token */ + struct pme_ctx_token hl_token; + /* data */ + struct qm_fd rx_fd; + /* Completion interface */ + struct completion cb_done; + u8 ern; +}; + +#ifdef CONFIG_COMPAT +static void compat_to_db(struct pme_db *dst, struct compat_pme_db *src) +{ + dst->flags = src->flags; + dst->status = src->status; + dst->input.data = compat_ptr(src->input.data); + dst->input.size = src->input.size; + dst->output.data = compat_ptr(src->output.data); + dst->output.size = src->output.size; +} + +static void db_to_compat(struct compat_pme_db *dst, struct pme_db *src) +{ + dst->flags = src->flags; + dst->status = src->status; + dst->output.data = ptr_to_compat(src->output.data); + dst->output.size = src->output.size; + dst->input.data = ptr_to_compat(src->input.data); + dst->input.size = src->input.size; +} +#endif + +/* PME Compound Frame Index */ +#define INPUT_FRM 1 +#define OUTPUT_FRM 0 + +/* Callback for database operations */ +static void db_cb(struct pme_ctx *ctx, const struct qm_fd *fd, + struct pme_ctx_token *ctx_token) +{ + struct cmd_token *token = (struct cmd_token *)ctx_token; + token->rx_fd = *fd; + complete(&token->cb_done); +} + +static void db_ern_cb(struct pme_ctx *ctx, const struct qm_mr_entry *mr, + struct pme_ctx_token *ctx_token) +{ + struct cmd_token *token = (struct cmd_token *)ctx_token; + token->ern = 1; + token->rx_fd = mr->ern.fd; + complete(&token->cb_done); +} + +struct ctrl_op { + struct pme_ctx_ctrl_token ctx_ctr; + struct completion cb_done; + enum pme_status cmd_status; + u8 res_flag; + u8 ern; +}; + +static void ctrl_cb(struct pme_ctx *ctx, const struct qm_fd *fd, + struct pme_ctx_ctrl_token *token) +{ + struct ctrl_op *ctrl = (struct ctrl_op *)token; + ctrl->cmd_status = pme_fd_res_status(fd); + ctrl->res_flag = pme_fd_res_flags(fd) & PME_STATUS_UNRELIABLE; + complete(&ctrl->cb_done); +} + +static void ctrl_ern_cb(struct pme_ctx *ctx, const struct qm_mr_entry *mr, + struct pme_ctx_ctrl_token *token) +{ + struct ctrl_op *ctrl = (struct ctrl_op *)token; + ctrl->ern = 1; + complete(&ctrl->cb_done); +} + +static int exclusive_inc(struct file *fp, struct db_session *db) +{ + int ret; + + BUG_ON(!db); + BUG_ON(!(db->ctx.flags & PME_CTX_FLAG_EXCLUSIVE)); + spin_lock(&exclusive_lock); + ret = pme_ctx_exclusive_inc(&db->ctx, + (PME_CTX_OP_WAIT | PME_CTX_OP_WAIT_INT)); + if (!ret) + db->exclusive_counter++; + spin_unlock(&exclusive_lock); + return ret; +} + +static int exclusive_dec(struct file *fp, struct db_session *db) +{ + int ret = 0; + + BUG_ON(!db); + BUG_ON(!(db->ctx.flags & PME_CTX_FLAG_EXCLUSIVE)); + spin_lock(&exclusive_lock); + if (!db->exclusive_counter) { + PMEPRERR("exclusivity counter already zero\n"); + ret = -EINVAL; + } else { + pme_ctx_exclusive_dec(&db->ctx); + db->exclusive_counter--; + } + spin_unlock(&exclusive_lock); + return ret; +} + +static int execute_cmd(struct file *fp, struct db_session *db, + struct pme_db *db_cmd) +{ + int ret = 0; + struct cmd_token token; + struct qm_sg_entry tx_comp[2]; + struct qm_fd tx_fd; + void *tx_data = NULL; + void *rx_data = NULL; + u32 src_sz, dst_sz; + dma_addr_t dma_addr; + + memset(&token, 0, sizeof(struct cmd_token)); + memset(tx_comp, 0, sizeof(tx_comp)); + memset(&tx_fd, 0, sizeof(struct qm_fd)); + init_completion(&token.cb_done); + + PMEPRINFO("Received User Space Contiguous mem\n"); + PMEPRINFO("length = %d\n", db_cmd->input.size); + tx_data = kmalloc(db_cmd->input.size, GFP_KERNEL); + if (!tx_data) { + PMEPRERR("Err alloc %zd byte\n", db_cmd->input.size); + return -ENOMEM; + } + + if (copy_from_user(tx_data, + (void __user *)db_cmd->input.data, + db_cmd->input.size)) { + PMEPRERR("Error copying contigous user data\n"); + ret = -EFAULT; + goto free_tx_data; + } + + /* Setup input frame */ + tx_comp[INPUT_FRM].final = 1; + tx_comp[INPUT_FRM].length = db_cmd->input.size; + dma_addr = pme_map(tx_data); + if (pme_map_error(dma_addr)) { + PMEPRERR("Error pme_map_error\n"); + ret = -EIO; + goto free_tx_data; + } + set_sg_addr(&tx_comp[INPUT_FRM], dma_addr); + /* setup output frame, if output is expected */ + if (db_cmd->output.size) { + PMEPRINFO("expect output %d\n", db_cmd->output.size); + rx_data = kmalloc(db_cmd->output.size, GFP_KERNEL); + if (!rx_data) { + PMEPRERR("Err alloc %zd byte", db_cmd->output.size); + ret = -ENOMEM; + goto unmap_input_frame; + } + /* Setup output frame */ + tx_comp[OUTPUT_FRM].length = db_cmd->output.size; + dma_addr = pme_map(rx_data); + if (pme_map_error(dma_addr)) { + PMEPRERR("Error pme_map_error\n"); + ret = -EIO; + goto comp_frame_free_rx; + } + set_sg_addr(&tx_comp[OUTPUT_FRM], dma_addr); + tx_fd.format = qm_fd_compound; + /* Build compound frame */ + dma_addr = pme_map(tx_comp); + if (pme_map_error(dma_addr)) { + PMEPRERR("Error pme_map_error\n"); + ret = -EIO; + goto comp_frame_unmap_output; + } + set_fd_addr(&tx_fd, dma_addr); + } else { + tx_fd.format = qm_fd_sg_big; + tx_fd.length29 = db_cmd->input.size; + /* Build sg frame */ + dma_addr = pme_map(&tx_comp[INPUT_FRM]); + if (pme_map_error(dma_addr)) { + PMEPRERR("Error pme_map_error\n"); + ret = -EIO; + goto unmap_input_frame; + } + set_fd_addr(&tx_fd, dma_addr); + } + ret = pme_ctx_pmtcc(&db->ctx, PME_CTX_OP_WAIT, &tx_fd, + (struct pme_ctx_token *)&token); + if (unlikely(ret)) { + PMEPRINFO("pme_ctx_pmtcc error %d\n", ret); + goto unmap_frame; + } + PMEPRINFO("Wait for completion\n"); + /* Wait for the command to complete */ + wait_for_completion(&token.cb_done); + + if (token.ern) { + ret = -EIO; + goto unmap_frame; + } + + PMEPRINFO("pme2_db: process_completed_token\n"); + PMEPRINFO("pme2_db: received %d frame type\n", token.rx_fd.format); + if (token.rx_fd.format == qm_fd_compound) { + /* Need to copy output */ + src_sz = tx_comp[OUTPUT_FRM].length; + dst_sz = db_cmd->output.size; + PMEPRINFO("pme gen %u data, have space for %u\n", + src_sz, dst_sz); + db_cmd->output.size = min(dst_sz, src_sz); + /* Doesn't make sense we generated more than available space + * should have got truncation. + */ + BUG_ON(dst_sz < src_sz); + if (copy_to_user((void __user *)db_cmd->output.data, rx_data, + db_cmd->output.size)) { + PMEPRERR("Error copying to user data\n"); + ret = -EFAULT; + goto comp_frame_unmap_cf; + } + } else if (token.rx_fd.format == qm_fd_sg_big) + db_cmd->output.size = 0; + else + panic("unexpected frame type received %d\n", + token.rx_fd.format); + + db_cmd->flags = pme_fd_res_flags(&token.rx_fd); + db_cmd->status = pme_fd_res_status(&token.rx_fd); + +unmap_frame: + if (token.rx_fd.format == qm_fd_sg_big) + goto single_frame_unmap_frame; + +comp_frame_unmap_cf: +comp_frame_unmap_output: +comp_frame_free_rx: + kfree(rx_data); + goto unmap_input_frame; +single_frame_unmap_frame: +unmap_input_frame: +free_tx_data: + kfree(tx_data); + + return ret; +} + +static int execute_nop(struct file *fp, struct db_session *db) +{ + int ret = 0; + struct ctrl_op ctx_ctrl = { + .ctx_ctr.cb = ctrl_cb, + .ctx_ctr.ern_cb = ctrl_ern_cb + }; + init_completion(&ctx_ctrl.cb_done); + + ret = pme_ctx_ctrl_nop(&db->ctx, PME_CTX_OP_WAIT|PME_CTX_OP_WAIT_INT, + &ctx_ctrl.ctx_ctr); + if (!ret) + wait_for_completion(&ctx_ctrl.cb_done); + + if (ctx_ctrl.ern) + ret = -EIO; + return ret; +} + +static atomic_t sre_reset_lock = ATOMIC_INIT(1); +static int ioctl_sre_reset(unsigned long arg) +{ + struct pme_db_sre_reset reset_vals; + int i; + u32 srrr_val; + int ret = 0; + + if (copy_from_user(&reset_vals, (struct pme_db_sre_reset __user *)arg, + sizeof(struct pme_db_sre_reset))) + return -EFAULT; + PMEPRINFO("sre_reset:\n"); + PMEPRINFO(" rule_index = 0x%x:\n", reset_vals.rule_index); + PMEPRINFO(" rule_increment = 0x%x:\n", reset_vals.rule_increment); + PMEPRINFO(" rule_repetitions = 0x%x:\n", reset_vals.rule_repetitions); + PMEPRINFO(" rule_reset_interval = 0x%x:\n", + reset_vals.rule_reset_interval); + PMEPRINFO(" rule_reset_priority = 0x%x:\n", + reset_vals.rule_reset_priority); + + /* Validate ranges */ + if ((reset_vals.rule_index >= PME_PMFA_SRE_INDEX_MAX) || + (reset_vals.rule_increment > PME_PMFA_SRE_INC_MAX) || + (reset_vals.rule_repetitions >= PME_PMFA_SRE_REP_MAX) || + (reset_vals.rule_reset_interval >= + PME_PMFA_SRE_INTERVAL_MAX)) + return -ERANGE; + /* Check and make sure only one caller is present */ + if (!atomic_dec_and_test(&sre_reset_lock)) { + /* Someone else is already in this call */ + atomic_inc(&sre_reset_lock); + return -EBUSY; + }; + /* All validated. Run the command */ + for (i = 0; i < PME_SRE_RULE_VECTOR_SIZE; i++) + pme_attr_set(pme_attr_srrv0 + i, reset_vals.rule_vector[i]); + pme_attr_set(pme_attr_srrfi, reset_vals.rule_index); + pme_attr_set(pme_attr_srri, reset_vals.rule_increment); + pme_attr_set(pme_attr_srrwc, + (0xFFF & reset_vals.rule_reset_interval) << 1 | + (reset_vals.rule_reset_priority ? 1 : 0)); + /* Need to set SRRR last */ + pme_attr_set(pme_attr_srrr, reset_vals.rule_repetitions); + do { + mdelay(PME_PMFA_SRE_POLL_MS); + ret = pme_attr_get(pme_attr_srrr, &srrr_val); + if (ret) { + PMEPRCRIT("pme2: Error reading srrr\n"); + /* bail */ + break; + } + /* Check for error */ + else if (srrr_val & 0x10000000) { + PMEPRERR("pme2: Error in SRRR\n"); + ret = -EIO; + } + PMEPRINFO("pme2: srrr count %d\n", srrr_val); + } while (srrr_val); + atomic_inc(&sre_reset_lock); + return ret; +} + +/** + * fsl_pme2_db_open - open the driver + * + * Open the driver and prepare for requests. + * + * Every time an application opens the driver, we create a db_session object + * for that file handle. + */ +static int fsl_pme2_db_open(struct inode *node, struct file *fp) +{ + int ret; + struct db_session *db = NULL; + + db = kzalloc(sizeof(struct db_session), GFP_KERNEL); + if (!db) + return -ENOMEM; + fp->private_data = db; + db->ctx.cb = db_cb; + db->ctx.ern_cb = db_ern_cb; + + ret = pme_ctx_init(&db->ctx, + PME_CTX_FLAG_EXCLUSIVE | + PME_CTX_FLAG_PMTCC | + PME_CTX_FLAG_DIRECT| + PME_CTX_FLAG_LOCAL, + 0, 4, CONFIG_FSL_PME2_DB_QOSOUT_PRIORITY, 0, NULL); + if (ret) { + PMEPRERR("pme_ctx_init %d\n", ret); + goto free_data; + } + + /* enable the context */ + ret = pme_ctx_enable(&db->ctx); + if (ret) { + PMEPRERR("error enabling ctx %d\n", ret); + pme_ctx_finish(&db->ctx); + goto free_data; + } + PMEPRINFO("pme2_db: Finish pme_db open %d\n", smp_processor_id()); + return 0; +free_data: + kfree(fp->private_data); + fp->private_data = NULL; + return ret; +} + +static int fsl_pme2_db_close(struct inode *node, struct file *fp) +{ + int ret = 0; + struct db_session *db = fp->private_data; + + PMEPRINFO("Start pme_db close\n"); + while (db->exclusive_counter) { + pme_ctx_exclusive_dec(&db->ctx); + db->exclusive_counter--; + } + + /* Disable context. */ + ret = pme_ctx_disable(&db->ctx, PME_CTX_OP_WAIT, NULL); + if (ret) + PMEPRCRIT("Error disabling ctx %d\n", ret); + pme_ctx_finish(&db->ctx); + kfree(db); + PMEPRINFO("Finish pme_db close\n"); + return 0; +} + +/* Main switch loop for ioctl operations */ +static long fsl_pme2_db_ioctl(struct file *fp, unsigned int cmd, + unsigned long arg) +{ + struct db_session *db = fp->private_data; + int ret = 0; + + switch (cmd) { + + case PMEIO_PMTCC: { + int ret; + struct pme_db db_cmd; + + /* Copy the command to kernel space */ + if (copy_from_user(&db_cmd, (void __user *)arg, + sizeof(db_cmd))) + return -EFAULT; + ret = execute_cmd(fp, db, &db_cmd); + if (!ret) + ret = copy_to_user((struct pme_db __user *)arg, + &db_cmd, sizeof(db_cmd)); + return ret; + } + break; + + case PMEIO_EXL_INC: + return exclusive_inc(fp, db); + case PMEIO_EXL_DEC: + return exclusive_dec(fp, db); + case PMEIO_EXL_GET: + BUG_ON(!db); + BUG_ON(!(db->ctx.flags & PME_CTX_FLAG_EXCLUSIVE)); + if (copy_to_user((void __user *)arg, + &db->exclusive_counter, + sizeof(db->exclusive_counter))) + ret = -EFAULT; + return ret; + case PMEIO_NOP: + return execute_nop(fp, db); + case PMEIO_SRE_RESET: + return ioctl_sre_reset(arg); + +#ifdef CONFIG_COMPAT + case PMEIO_PMTCC32: { + int ret; + struct pme_db db_cmd; + struct compat_pme_db db_cmd32; + struct compat_pme_db __user *user_db_cmd = compat_ptr(arg); + + /* Copy the command to kernel space */ + if (copy_from_user(&db_cmd32, user_db_cmd, sizeof(db_cmd32))) + return -EFAULT; + /* Convert to 64-bit struct */ + compat_to_db(&db_cmd, &db_cmd32); + ret = execute_cmd(fp, db, &db_cmd); + if (!ret) { + /* Convert to compat struct */ + db_to_compat(&db_cmd32, &db_cmd); + ret = copy_to_user(user_db_cmd, &db_cmd32, + sizeof(*user_db_cmd)); + } + return ret; + } + break; +#endif + } + pr_info("Unknown pme_db ioctl cmd %u\n", cmd); + return -EINVAL; +} + +static const struct file_operations fsl_pme2_db_fops = { + .owner = THIS_MODULE, + .open = fsl_pme2_db_open, + .release = fsl_pme2_db_close, + .unlocked_ioctl = fsl_pme2_db_ioctl, +#ifdef CONFIG_COMPAT + .compat_ioctl = fsl_pme2_db_ioctl, +#endif +}; + +static struct miscdevice fsl_pme2_db_dev = { + .minor = MISC_DYNAMIC_MINOR, + .name = PME_DEV_DB_NODE, + .fops = &fsl_pme2_db_fops +}; + +static int __init fsl_pme2_db_init(void) +{ + int err = 0; + + pr_info("Freescale pme2 db driver\n"); + if (!pme2_have_control()) { + PMEPRERR("not on ctrl-plane\n"); + return -ENODEV; + } + err = misc_register(&fsl_pme2_db_dev); + if (err) { + PMEPRERR("cannot register device\n"); + return err; + } + PMEPRINFO("device %s registered\n", fsl_pme2_db_dev.name); + return 0; +} + +static void __exit fsl_pme2_db_exit(void) +{ + int err = misc_deregister(&fsl_pme2_db_dev); + if (err) { + PMEPRERR("Failed to deregister device %s, " + "code %d\n", fsl_pme2_db_dev.name, err); + return; + } + PMEPRINFO("device %s deregistered\n", fsl_pme2_db_dev.name); +} + +module_init(fsl_pme2_db_init); +module_exit(fsl_pme2_db_exit); + +MODULE_AUTHOR("Freescale Semiconductor - OTC"); +MODULE_LICENSE("Dual BSD/GPL"); +MODULE_DESCRIPTION("FSL PME2 db driver"); --- linux-3.13.0.orig/drivers/staging/fsl_pme2/pme2_high.c +++ linux-3.13.0/drivers/staging/fsl_pme2/pme2_high.c @@ -0,0 +1,944 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 "pme2_private.h" + +/* The pme_ctx state machine is described via the following list of + * internal PME_CTX_FLAG_*** bits and cross-referenced to the APIs (and + * functionality) they track. + * + * DEAD: set at any point, an error has been hit, doesn't "cause" disabling or + * any autonomous ref-decrement (been there, hit the gotchas, won't do it + * again). + * + * DISABLING: set by pme_ctx_disable() at any point that is not already + * disabling, disabled, or in ctrl, and the ref is decremented. DISABLING is + * unset by pme_ctx_enable(). + * + * DISABLED: once pme_ctx_disable() has set DISABLING and refs==0, DISABLED is + * set before returning. (Any failure will clear DISABLING and increment the ref + * count.) DISABLING is unset by pme_ctx_enable(). + * + * ENABLING: set by pme_ctx_enable() provided the context is disabled, not dead, + * not in RECONFIG, and not already enabling. Once set, the ref is incremented + * and the tx FQ is scheduled (for non-exclusive flows). If this fails, the ref + * is decremented and the context is re-disabled. ENABLING is unset once + * pme_ctx_enable() completes. + * + * RECONFIG: set by pme_ctx_reconfigure_[rt]x() provided the context is + * disabled, not dead, and not already in reconfig. RECONFIG is cleared prior to + * the function returning. + * + * Simplifications: the do_flag() wrapper provides synchronised modifications of + * the ctx 'flags', and callers can rely on the following implications to reduce + * the number of flags in the masks being passed in; + * DISABLED implies DISABLING (and enable will clear both) + */ + +/* Internal-only ctx flags, mustn't conflict with exported ones */ +#define PME_CTX_FLAG_DEAD 0x80000000 +#define PME_CTX_FLAG_DISABLING 0x40000000 +#define PME_CTX_FLAG_DISABLED 0x20000000 +#define PME_CTX_FLAG_ENABLING 0x10000000 +#define PME_CTX_FLAG_RECONFIG 0x08000000 +#define PME_CTX_FLAG_PRIVATE 0xf8000000 /* mask of them all */ + +/* Internal-only cmd flags, musn't conflict with exported ones */ +#define PME_CTX_OP_INSIDE_DISABLE 0x80000000 +#define PME_CTX_OP_PRIVATE 0x80000000 /* mask of them all */ + +struct pme_nostash { + struct qman_fq fqin; + struct pme_ctx *parent; +}; + +/* This wrapper simplifies conditional (and locked) read-modify-writes to + * 'flags'. Inlining should allow the compiler to optimise it based on the + * parameters, eg. if 'must_be_set'/'must_not_be_set' are zero it will + * degenerate to an unconditional read-modify-write, if 'to_set'/'to_unset' are + * zero it will degenerate to a read-only flag-check, etc. */ +static inline int do_flags(struct pme_ctx *ctx, + u32 must_be_set, u32 must_not_be_set, + u32 to_set, u32 to_unset) +{ + int err = -EBUSY; + unsigned long irqflags; + + spin_lock_irqsave(&ctx->lock, irqflags); + if (((ctx->flags & must_be_set) == must_be_set) && + !(ctx->flags & must_not_be_set)) { + ctx->flags |= to_set; + ctx->flags &= ~to_unset; + err = 0; + } + spin_unlock_irqrestore(&ctx->lock, irqflags); + return err; +} + +static enum qman_cb_dqrr_result cb_dqrr(struct qman_portal *, struct qman_fq *, + const struct qm_dqrr_entry *); +static void cb_ern(struct qman_portal *, struct qman_fq *, + const struct qm_mr_entry *); +static void cb_dc_ern(struct qman_portal *, struct qman_fq *, + const struct qm_mr_entry *); +static void cb_fqs(struct qman_portal *, struct qman_fq *, + const struct qm_mr_entry *); +static const struct qman_fq_cb pme_fq_base_in = { + .fqs = cb_fqs, + .ern = cb_ern +}; +static const struct qman_fq_cb pme_fq_base_out = { + .dqrr = cb_dqrr, + .dc_ern = cb_dc_ern, + .fqs = cb_fqs +}; + +/* Globals related to competition for PME_EFQC, ie. exclusivity */ +static DECLARE_WAIT_QUEUE_HEAD(exclusive_queue); +static spinlock_t exclusive_lock = __SPIN_LOCK_UNLOCKED(exclusive_lock); +static unsigned int exclusive_refs; +static struct pme_ctx *exclusive_ctx; + +/* Index 0..255, bools do indicated which errors are serious + * 0x40, 0x41, 0x48, 0x49, 0x4c, 0x4e, 0x4f, 0x50, 0x51, 0x59, 0x5a, 0x5b, + * 0x5c, 0x5d, 0x5f, 0x60, 0x80, 0xc0, 0xc1, 0xc2, 0xc4, 0xd2, + * 0xd4, 0xd5, 0xd7, 0xd9, 0xda, 0xe0, 0xe7 + */ +static u8 serious_error_vec[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +/* TODO: this is hitting the rx FQ with a large blunt instrument, ie. park() + * does a retire, query, oos, and (re)init. It's possible to force-eligible the + * rx FQ instead, then use a DCA_PK within the cb_dqrr() callback to park it. + * Implement this optimisation later if it's an issue (and incur the additional + * complexity in the state-machine). */ +static int park(struct qman_fq *fq, struct qm_mcc_initfq *initfq) +{ + int ret; + u32 flags; + + ret = qman_retire_fq(fq, &flags); + if (ret) + return ret; + BUG_ON(flags & QMAN_FQ_STATE_BLOCKOOS); + /* We can't revert from now on */ + ret = qman_query_fq(fq, &initfq->fqd); + BUG_ON(ret); + ret = qman_oos_fq(fq); + BUG_ON(ret); + /* can't set QM_INITFQ_WE_OAC and QM_INITFQ_WE_TDTHRESH + * at the same time */ + initfq->we_mask = QM_INITFQ_WE_MASK & ~QM_INITFQ_WE_TDTHRESH; + ret = qman_init_fq(fq, 0, initfq); + BUG_ON(ret); + initfq->we_mask = QM_INITFQ_WE_TDTHRESH; + ret = qman_init_fq(fq, 0, initfq); + BUG_ON(ret); + return 0; +} + +static inline int reconfigure_rx(struct pme_ctx *ctx, int to_park, u8 qosout, + enum qm_channel dest, + const struct qm_fqd_stashing *stashing) +{ + struct qm_mcc_initfq initfq; + u32 flags = QMAN_INITFQ_FLAG_SCHED; + int ret; + + ret = do_flags(ctx, PME_CTX_FLAG_DISABLED, + PME_CTX_FLAG_DEAD | PME_CTX_FLAG_RECONFIG, + PME_CTX_FLAG_RECONFIG, 0); + if (ret) + return ret; + if (to_park) { + ret = park(&ctx->fq, &initfq); + if (ret) + goto done; + } + initfq.we_mask = QM_INITFQ_WE_DESTWQ | QM_INITFQ_WE_FQCTRL; + initfq.fqd.dest.wq = qosout; + if (stashing) { + initfq.we_mask |= QM_INITFQ_WE_CONTEXTA; + initfq.fqd.context_a.stashing = *stashing; + initfq.fqd.fq_ctrl = QM_FQCTRL_CTXASTASHING; + } else + initfq.fqd.fq_ctrl = 0; /* disable stashing */ + if (ctx->flags & PME_CTX_FLAG_LOCAL) + flags |= QMAN_INITFQ_FLAG_LOCAL; + else { + initfq.fqd.dest.channel = dest; + /* Set hold-active *IFF* it's a pool channel */ + if (dest >= qm_channel_pool1) + initfq.fqd.fq_ctrl |= QM_FQCTRL_HOLDACTIVE; + } + ret = qman_init_fq(&ctx->fq, flags, &initfq); +done: + do_flags(ctx, 0, 0, 0, PME_CTX_FLAG_RECONFIG); + return ret; +} + +/* this code is factored out of pme_ctx_disable() and get_ctrl() */ +static int empty_pipeline(struct pme_ctx *ctx, __maybe_unused u32 flags) +{ + int ret; +#ifdef CONFIG_FSL_DPA_CAN_WAIT + if (flags & PME_CTX_OP_WAIT) { + if (flags & PME_CTX_OP_WAIT_INT) { + ret = -EINTR; + wait_event_interruptible(ctx->queue, + !(ret = atomic_read(&ctx->refs))); + } else + wait_event(ctx->queue, + !(ret = atomic_read(&ctx->refs))); + } else +#endif + ret = atomic_read(&ctx->refs); + if (ret) + /* convert a +ve ref-count to a -ve error code */ + ret = -EBUSY; + return ret; +} + +int pme_ctx_init(struct pme_ctx *ctx, u32 flags, u32 bpid, u8 qosin, + u8 qosout, enum qm_channel dest, + const struct qm_fqd_stashing *stashing) +{ + u32 fqid_rx = 0, fqid_tx = 0; + int rxinit = 0, ret = -ENOMEM, fqin_inited = 0; + + ctx->fq.cb = pme_fq_base_out; + atomic_set(&ctx->refs, 0); + ctx->flags = (flags & ~PME_CTX_FLAG_PRIVATE) | PME_CTX_FLAG_DISABLED | + PME_CTX_FLAG_DISABLING; + if (ctx->flags & PME_CTX_FLAG_PMTCC) + ctx->flags |= PME_CTX_FLAG_DIRECT | PME_CTX_FLAG_EXCLUSIVE; + spin_lock_init(&ctx->lock); + init_waitqueue_head(&ctx->queue); + INIT_LIST_HEAD(&ctx->tokens); + ctx->hw_flow = NULL; + ctx->hw_residue = NULL; + + ctx->us_data = kzalloc(sizeof(struct pme_nostash), GFP_KERNEL); + if (!ctx->us_data) + goto err; + ctx->us_data->parent = ctx; + fqid_rx = qm_fq_new(); + fqid_tx = qm_fq_new(); + if (!fqid_rx || !fqid_tx || !ctx->us_data) + goto err; + ctx->us_data->fqin.cb = pme_fq_base_in; + if (qman_create_fq(fqid_rx, QMAN_FQ_FLAG_TO_DCPORTAL | + ((flags & PME_CTX_FLAG_LOCKED) ? + QMAN_FQ_FLAG_LOCKED : 0), + &ctx->us_data->fqin)) + goto err; + fqin_inited = 1; + if (qman_create_fq(fqid_tx, QMAN_FQ_FLAG_NO_ENQUEUE | + ((flags & PME_CTX_FLAG_LOCKED) ? + QMAN_FQ_FLAG_LOCKED : 0), &ctx->fq)) + goto err; + rxinit = 1; + /* Input FQ */ + if (!(flags & PME_CTX_FLAG_DIRECT)) { + ctx->hw_flow = pme_hw_flow_new(); + if (!ctx->hw_flow) + goto err; + } + ret = pme_ctx_reconfigure_tx(ctx, bpid, qosin); + if (ret) + goto err; + /* Output FQ */ + ret = reconfigure_rx(ctx, 0, qosout, dest, stashing); + if (ret) { + /* Need to OOS the FQ before it gets free'd */ + ret = qman_oos_fq(&ctx->us_data->fqin); + BUG_ON(ret); + goto err; + } + return 0; +err: + if (fqid_rx) + qm_fq_free(fqid_rx); + if (fqid_tx) + qm_fq_free(fqid_tx); + if (ctx->hw_flow) + pme_hw_flow_free(ctx->hw_flow); + if (ctx->us_data) { + if (fqin_inited) + qman_destroy_fq(&ctx->us_data->fqin, 0); + kfree(ctx->us_data); + } + if (rxinit) + qman_destroy_fq(&ctx->fq, 0); + return ret; +} +EXPORT_SYMBOL(pme_ctx_init); + +/* NB, we don't lock here because there must be no other callers (even if we + * locked, what does the loser do after we win?) */ +void pme_ctx_finish(struct pme_ctx *ctx) +{ + u32 flags, fqid_rx, fqid_tx; + int ret; + + ret = do_flags(ctx, PME_CTX_FLAG_DISABLED, PME_CTX_FLAG_RECONFIG, 0, 0); + BUG_ON(ret); + /* Rx/Tx are empty (coz ctx is disabled) so retirement should be + * immediate */ + ret = qman_retire_fq(&ctx->us_data->fqin, &flags); + BUG_ON(ret); + BUG_ON(flags & QMAN_FQ_STATE_BLOCKOOS); + ret = qman_retire_fq(&ctx->fq, &flags); + BUG_ON(ret); + BUG_ON(flags & QMAN_FQ_STATE_BLOCKOOS); + /* OOS and free (don't kfree fq, it's a static ctx member) */ + ret = qman_oos_fq(&ctx->us_data->fqin); + BUG_ON(ret); + ret = qman_oos_fq(&ctx->fq); + BUG_ON(ret); + fqid_rx = qman_fq_fqid(&ctx->us_data->fqin); + fqid_tx = qman_fq_fqid(&ctx->fq); + qman_destroy_fq(&ctx->us_data->fqin, 0); + qman_destroy_fq(&ctx->fq, 0); + qm_fq_free(fqid_rx); + qm_fq_free(fqid_tx); + kfree(ctx->us_data); + if (ctx->hw_flow) + pme_hw_flow_free(ctx->hw_flow); + if (ctx->hw_residue) + pme_hw_residue_free(ctx->hw_residue); +} +EXPORT_SYMBOL(pme_ctx_finish); + +int pme_ctx_is_disabled(struct pme_ctx *ctx) +{ + return (ctx->flags & PME_CTX_FLAG_DISABLED); +} +EXPORT_SYMBOL(pme_ctx_is_disabled); + +int pme_ctx_is_dead(struct pme_ctx *ctx) +{ + return (ctx->flags & PME_CTX_FLAG_DEAD); +} +EXPORT_SYMBOL(pme_ctx_is_dead); + +/* predeclare this here because pme_ctx_disable() may invoke it in "privileged + * mode". The code is down with the other ctrl commands, where it belongs. */ +static inline int __update_flow(struct pme_ctx *ctx, u32 flags, + struct pme_flow *params, struct pme_ctx_ctrl_token *token, + int is_disabling); + +/* This gets invoked by pme_ctx_disable() if it runs to completion, otherwise + * it's called from cb_helper. */ +static inline void __disable_done(struct pme_ctx *ctx) +{ + struct qm_mcc_initfq initfq; + int ret = 0; + if (!(ctx->flags & PME_CTX_FLAG_EXCLUSIVE)) { + /* Park fqin (exclusive is always parked) */ + ret = park(&ctx->us_data->fqin, &initfq); + /* All the conditions for park() to succeed should be met. If + * this fails, there's a bug (s/w or h/w). */ + if (ret) + pr_crit("pme2: park() should never fail! (%d)\n", ret); + } + do_flags(ctx, 0, 0, PME_CTX_FLAG_DISABLED, 0); +} + +int pme_ctx_disable(struct pme_ctx *ctx, u32 flags, + struct pme_ctx_ctrl_token *token) +{ + int ret; + + /* We must not (already) be DISABLING */ + ret = do_flags(ctx, 0, PME_CTX_FLAG_DISABLING, + PME_CTX_FLAG_DISABLING, 0); + if (ret) + return ret; + /* Make sure the pipeline is empty */ + atomic_dec(&ctx->refs); + ret = empty_pipeline(ctx, flags); + if (ret) + goto err; + /* We're idle, but is the flow context flushed from PME onboard cache? + * If it's not flushed when the system deallocates it, that 32 bytes + * could be in use later when PME decides to flush a write to it. Need + * to make it coherent again... */ + if (!(ctx->flags & PME_CTX_FLAG_DIRECT)) { + /* Pass on wait flags (if any) but cancel any flow-context field + * writes (this is not the pme_ctx_ctrl_update_flow() API). */ + ret = __update_flow(ctx, flags & ~PME_CMD_FCW_ALL, NULL, + token, 1); + if (ret) + goto err; + return 1; + } + __disable_done(ctx); + return 0; +err: + atomic_inc(&ctx->refs); + do_flags(ctx, 0, 0, 0, PME_CTX_FLAG_DISABLING); + wake_up(&ctx->queue); + return ret; +} +EXPORT_SYMBOL(pme_ctx_disable); + +int pme_ctx_enable(struct pme_ctx *ctx) +{ + int ret; + ret = do_flags(ctx, PME_CTX_FLAG_DISABLED, + PME_CTX_FLAG_DEAD | PME_CTX_FLAG_RECONFIG | + PME_CTX_FLAG_ENABLING, + PME_CTX_FLAG_ENABLING, 0); + if (ret) + return ret; + if (!(ctx->flags & PME_CTX_FLAG_EXCLUSIVE)) { + ret = qman_init_fq(&ctx->us_data->fqin, + QMAN_INITFQ_FLAG_SCHED, NULL); + if (ret) { + do_flags(ctx, 0, 0, 0, PME_CTX_FLAG_ENABLING); + return ret; + } + } + atomic_inc(&ctx->refs); + do_flags(ctx, 0, 0, 0, PME_CTX_FLAG_DISABLED | PME_CTX_FLAG_DISABLING | + PME_CTX_FLAG_ENABLING); + return 0; +} +EXPORT_SYMBOL(pme_ctx_enable); + +int pme_ctx_reconfigure_tx(struct pme_ctx *ctx, u32 bpid, u8 qosin) +{ + struct qm_mcc_initfq initfq; + int ret; + + ret = do_flags(ctx, PME_CTX_FLAG_DISABLED, + PME_CTX_FLAG_DEAD | PME_CTX_FLAG_RECONFIG, + PME_CTX_FLAG_RECONFIG, 0); + if (ret) + return ret; + memset(&initfq,0,sizeof(initfq)); + pme_initfq(&initfq, ctx->hw_flow, qosin, bpid, qman_fq_fqid(&ctx->fq)); + ret = qman_init_fq(&ctx->us_data->fqin, 0, &initfq); + do_flags(ctx, 0, 0, 0, PME_CTX_FLAG_RECONFIG); + return ret; +} +EXPORT_SYMBOL(pme_ctx_reconfigure_tx); + +int pme_ctx_reconfigure_rx(struct pme_ctx *ctx, u8 qosout, + enum qm_channel dest, const struct qm_fqd_stashing *stashing) +{ + return reconfigure_rx(ctx, 1, qosout, dest, stashing); +} +EXPORT_SYMBOL(pme_ctx_reconfigure_rx); + +/* Helpers for 'ctrl' and 'work' APIs. These are used when the 'ctx' in question + * is EXCLUSIVE. */ +static inline void release_exclusive(__maybe_unused struct pme_ctx *ctx) +{ + unsigned long irqflags; + + BUG_ON(exclusive_ctx != ctx); + BUG_ON(!exclusive_refs); + spin_lock_irqsave(&exclusive_lock, irqflags); + if (!(--exclusive_refs)) { + exclusive_ctx = NULL; + pme2_exclusive_unset(); + wake_up(&exclusive_queue); + } + spin_unlock_irqrestore(&exclusive_lock, irqflags); +} +static int __try_exclusive(struct pme_ctx *ctx) +{ + int ret = 0; + unsigned long irqflags; + + spin_lock_irqsave(&exclusive_lock, irqflags); + if (exclusive_refs) { + /* exclusivity already held, continue if we're the owner */ + if (exclusive_ctx != ctx) + ret = -EBUSY; + } else { + /* it's not currently held */ + ret = pme2_exclusive_set(&ctx->us_data->fqin); + if (!ret) + exclusive_ctx = ctx; + } + if (!ret) + exclusive_refs++; + spin_unlock_irqrestore(&exclusive_lock, irqflags); + return ret; +} +/* Use this macro as the wait expression because we don't want to continue + * looping if the reason we're failing is that we don't have CCSR access + * (-ENODEV). */ +#define try_exclusive(ret, ctx) \ + (!(ret = __try_exclusive(ctx)) || (ret == -ENODEV)) +static inline int get_exclusive(struct pme_ctx *ctx, __maybe_unused u32 flags) +{ + int ret; +#ifdef CONFIG_FSL_DPA_CAN_WAIT + if (flags & PME_CTX_OP_WAIT) { + if (flags & PME_CTX_OP_WAIT_INT) { + ret = -EINTR; + wait_event_interruptible(exclusive_queue, + try_exclusive(ret, ctx)); + } else + wait_event(exclusive_queue, + try_exclusive(ret, ctx)); + } else +#endif + ret = __try_exclusive(ctx); + return ret; +} + +/* Used for 'work' APIs, convert PME->QMAN wait flags. The PME and + * QMAN "wait" flags have been aligned so that the below conversion should + * compile with good straight-line speed. */ +static inline u32 ctrl2eq(u32 flags) +{ +#ifdef CONFIG_FSL_DPA_CAN_WAIT + return flags & (QMAN_ENQUEUE_FLAG_WAIT | QMAN_ENQUEUE_FLAG_WAIT_INT); +#else + return flags; +#endif +} + +static inline void release_work(struct pme_ctx *ctx) +{ + if (atomic_dec_and_test(&ctx->refs)) + wake_up(&ctx->queue); +} + +#define BLOCK_NORMAL_WORK (PME_CTX_FLAG_DEAD | PME_CTX_FLAG_DISABLING) +static int try_work(struct pme_ctx *ctx, u32 flags) +{ + atomic_inc(&ctx->refs); + if (unlikely(!(flags & PME_CTX_OP_INSIDE_DISABLE) && + (ctx->flags & BLOCK_NORMAL_WORK))) { + release_work(ctx); + return -EIO; + } + return 0; +} + +static int get_work(struct pme_ctx *ctx, u32 flags) +{ + int ret = 0; +#ifdef CONFIG_FSL_DPA_CAN_WAIT + if (flags & PME_CTX_OP_WAIT) { + if (flags & PME_CTX_OP_WAIT_INT) { + ret = -EINTR; + wait_event_interruptible(ctx->queue, + !(ret = try_work(ctx, flags))); + } else + wait_event(ctx->queue, !try_work(ctx, flags)); + } else +#endif + ret = try_work(ctx, flags); + return ret; +} + +static inline int do_work(struct pme_ctx *ctx, u32 flags, struct qm_fd *fd, + struct pme_ctx_token *token, struct qman_fq *orp_fq, u16 seqnum) +{ + unsigned long irqflags; + int ret = get_work(ctx, flags); + if (ret) + return ret; + if (ctx->flags & PME_CTX_FLAG_EXCLUSIVE) { + ret = get_exclusive(ctx, flags); + if (ret) { + release_work(ctx); + return ret; + } + } + BUG_ON(sizeof(*fd) != sizeof(token->blob)); + memcpy(&token->blob, fd, sizeof(*fd)); + + spin_lock_irqsave(&ctx->lock, irqflags); + list_add_tail(&token->node, &ctx->tokens); + spin_unlock_irqrestore(&ctx->lock, irqflags); + + if (!orp_fq) + ret = qman_enqueue(&ctx->us_data->fqin, fd, ctrl2eq(flags)); + else + ret = qman_enqueue_orp(&ctx->us_data->fqin, fd, ctrl2eq(flags), + orp_fq, seqnum); + if (ret) { + spin_lock_irqsave(&ctx->lock, irqflags); + list_del(&token->node); + spin_unlock_irqrestore(&ctx->lock, irqflags); + if (ctx->flags & PME_CTX_FLAG_EXCLUSIVE) + release_exclusive(ctx); + release_work(ctx); + } + return ret; +} + +static inline int __update_flow(struct pme_ctx *ctx, u32 flags, + struct pme_flow *params, struct pme_ctx_ctrl_token *token, + int is_disabling) +{ + struct qm_fd fd; + int ret; + int hw_res_used = 0; + struct pme_hw_residue *hw_res = pme_hw_residue_new(); + unsigned long irqflags; + + BUG_ON(ctx->flags & PME_CTX_FLAG_DIRECT); + if (!hw_res) + return -ENOMEM; + token->internal_flow_ptr = pme_hw_flow_new(); + if (!token->internal_flow_ptr) { + pme_hw_residue_free(hw_res); + return -ENOMEM; + } + token->base_token.cmd_type = pme_cmd_flow_write; + + flags &= ~PME_CTX_OP_PRIVATE; + /* The callback will want to know this */ + token->base_token.is_disable_flush = is_disabling ? 1 : 0; + flags |= (is_disabling ? PME_CTX_OP_INSIDE_DISABLE : 0); + spin_lock_irqsave(&ctx->lock, irqflags); + if (flags & PME_CTX_OP_RESETRESLEN) { + if (ctx->hw_residue) { + params->ren = 1; + flags |= PME_CMD_FCW_RES; + } else + flags &= ~PME_CMD_FCW_RES; + } + /* allocate residue memory if it is being added */ + if ((flags & PME_CMD_FCW_RES) && params->ren && !ctx->hw_residue) { + ctx->hw_residue = hw_res; + hw_res_used = 1; + } + spin_unlock_irqrestore(&ctx->lock, irqflags); + if (!hw_res_used) + pme_hw_residue_free(hw_res); + /* enqueue the FCW command to PME */ + memset(&fd, 0, sizeof(fd)); + if (params) + memcpy(token->internal_flow_ptr, params, + sizeof(struct pme_flow)); + pme_fd_cmd_fcw(&fd, flags & PME_CMD_FCW_ALL, + (struct pme_flow *)token->internal_flow_ptr, + ctx->hw_residue); + ret = do_work(ctx, flags, &fd, &token->base_token, NULL, 0); + return ret; +} + +int pme_ctx_ctrl_update_flow(struct pme_ctx *ctx, u32 flags, + struct pme_flow *params, struct pme_ctx_ctrl_token *token) +{ + return __update_flow(ctx, flags, params, token, 0); +} +EXPORT_SYMBOL(pme_ctx_ctrl_update_flow); + +int pme_ctx_ctrl_read_flow(struct pme_ctx *ctx, u32 flags, + struct pme_flow *params, struct pme_ctx_ctrl_token *token) +{ + struct qm_fd fd; + + BUG_ON(ctx->flags & (PME_CTX_FLAG_DIRECT | PME_CTX_FLAG_PMTCC)); + token->base_token.cmd_type = pme_cmd_flow_read; + /* enqueue the FCR command to PME */ + token->usr_flow_ptr = params; + token->internal_flow_ptr = pme_hw_flow_new(); + if (!token->internal_flow_ptr) + return -ENOMEM; + memset(&fd, 0, sizeof(fd)); + pme_fd_cmd_fcr(&fd, (struct pme_flow *)token->internal_flow_ptr); + return do_work(ctx, flags, &fd, &token->base_token, NULL, 0); +} +EXPORT_SYMBOL(pme_ctx_ctrl_read_flow); + +int pme_ctx_ctrl_nop(struct pme_ctx *ctx, u32 flags, + struct pme_ctx_ctrl_token *token) +{ + struct qm_fd fd; + + token->base_token.cmd_type = pme_cmd_nop; + /* enqueue the NOP command to PME */ + memset(&fd, 0, sizeof(fd)); + qm_fd_addr_set64(&fd, (unsigned long)token); + pme_fd_cmd_nop(&fd); + return do_work(ctx, flags, &fd, &token->base_token, NULL, 0); +} +EXPORT_SYMBOL(pme_ctx_ctrl_nop); + +static inline void __prep_scan(__maybe_unused struct pme_ctx *ctx, + struct qm_fd *fd, u32 args, struct pme_ctx_token *token) +{ + BUG_ON(ctx->flags & PME_CTX_FLAG_PMTCC); + token->cmd_type = pme_cmd_scan; + pme_fd_cmd_scan(fd, args); +} + +int pme_ctx_scan(struct pme_ctx *ctx, u32 flags, struct qm_fd *fd, u32 args, + struct pme_ctx_token *token) +{ + __prep_scan(ctx, fd, args, token); + return do_work(ctx, flags, fd, token, NULL, 0); +} +EXPORT_SYMBOL(pme_ctx_scan); + +int pme_ctx_scan_orp(struct pme_ctx *ctx, u32 flags, struct qm_fd *fd, u32 args, + struct pme_ctx_token *token, struct qman_fq *orp_fq, u16 seqnum) +{ + __prep_scan(ctx, fd, args, token); + return do_work(ctx, flags, fd, token, orp_fq, seqnum); +} +EXPORT_SYMBOL(pme_ctx_scan_orp); + +int pme_ctx_pmtcc(struct pme_ctx *ctx, u32 flags, struct qm_fd *fd, + struct pme_ctx_token *token) +{ + BUG_ON(!(ctx->flags & PME_CTX_FLAG_PMTCC)); + token->cmd_type = pme_cmd_pmtcc; + pme_fd_cmd_pmtcc(fd); + return do_work(ctx, flags, fd, token, NULL, 0); +} +EXPORT_SYMBOL(pme_ctx_pmtcc); + +int pme_ctx_exclusive_inc(struct pme_ctx *ctx, u32 flags) +{ + return get_exclusive(ctx, flags); +} +EXPORT_SYMBOL(pme_ctx_exclusive_inc); + +void pme_ctx_exclusive_dec(struct pme_ctx *ctx) +{ + release_exclusive(ctx); +} +EXPORT_SYMBOL(pme_ctx_exclusive_dec); + +/* The 99.99% case is that enqueues happen in order or they get order-restored + * by the ORP, and so dequeues of responses happen in order too, so our FIFO + * linked-list of tokens is append-on-enqueue and pop-on-dequeue, and all's + * well. + * + * *EXCEPT*, if ever an enqueue gets rejected ... what then happens is that we + * have dequeues and ERNs to deal with, and the order we see them in is not + * necessarily the linked-list order. So we need to handle this in DQRR and MR + * callbacks, without sacrificing fast-path performance. Ouch. + * + * We use pop_matching_token() to take care of the mess (inlined, of course). */ +#define MATCH(fd1,fd2) \ + ((qm_fd_addr_get64(fd1) == qm_fd_addr_get64(fd2)) && \ + ((fd1)->opaque == (fd2)->opaque)) +static inline struct pme_ctx_token *pop_matching_token(struct pme_ctx *ctx, + const struct qm_fd *fd) +{ + struct pme_ctx_token *token; + const struct qm_fd *t_fd; + unsigned long irqflags; + + /* The fast-path case is that the for() loop actually degenerates into; + * token = list_first_entry(); + * if (likely(MATCH())) + * [done] + * The penalty of the slow-path case is the for() loop plus the fact + * we're optimising for a "likely" match first time, which might hurt + * when that assumption is wrong a few times in succession. */ + spin_lock_irqsave(&ctx->lock, irqflags); + list_for_each_entry(token, &ctx->tokens, node) { + t_fd = (const struct qm_fd *)&token->blob[0]; + if (likely(MATCH(t_fd, fd))) { + list_del(&token->node); + goto found; + } + } + token = NULL; + pr_err("PME2 Could not find matching token!\n"); + BUG(); +found: + spin_unlock_irqrestore(&ctx->lock, irqflags); + return token; +} + +static inline void cb_helper(__always_unused struct qman_portal *portal, + struct pme_ctx *ctx, const struct qm_fd *fd, int error) +{ + struct pme_ctx_token *token; + struct pme_ctx_ctrl_token *ctrl_token; + + /* Resist the urge to use "unlikely" - 'error' is a constant param to an + * inline fn, so the compiler can collapse this completely. */ + if (error) + do_flags(ctx, 0, 0, PME_CTX_FLAG_DEAD, 0); + token = pop_matching_token(ctx, fd); + if (likely(token->cmd_type == pme_cmd_scan)) + ctx->cb(ctx, fd, token); + else if (token->cmd_type == pme_cmd_pmtcc) + ctx->cb(ctx, fd, token); + else { + /* outcast ctx and call supplied callback */ + ctrl_token = container_of(token, struct pme_ctx_ctrl_token, + base_token); + if (token->cmd_type == pme_cmd_flow_write) { + /* Release the allocated flow context */ + pme_hw_flow_free(ctrl_token->internal_flow_ptr); + /* Is this pme_ctx_disable() completion? */ + if (token->is_disable_flush) + __disable_done(ctx); + } else if (token->cmd_type == pme_cmd_flow_read) { + /* Copy read result */ + memcpy(ctrl_token->usr_flow_ptr, + ctrl_token->internal_flow_ptr, + sizeof(struct pme_flow)); + /* Release the allocated flow context */ + pme_hw_flow_free(ctrl_token->internal_flow_ptr); + } + ctrl_token->cb(ctx, fd, ctrl_token); + } + /* Consume the frame */ + if (ctx->flags & PME_CTX_FLAG_EXCLUSIVE) + release_exclusive(ctx); + if (atomic_dec_and_test(&ctx->refs)) + wake_up(&ctx->queue); +} + +/* TODO: this scheme does not allow PME receivers to use held-active at all. Eg. + * there's no configuration of held-active for 'fq', and if there was, there's + * (a) nothing in the cb_dqrr() to support "park" or "defer" logic, and (b) + * nothing in cb_fqs() to support a delayed FQPN (DCAP_PK) notification. */ +static enum qman_cb_dqrr_result cb_dqrr(struct qman_portal *portal, + struct qman_fq *fq, const struct qm_dqrr_entry *dq) +{ + u8 status = (u8)pme_fd_res_status(&dq->fd); + u8 flags = pme_fd_res_flags(&dq->fd); + struct pme_ctx *ctx = (struct pme_ctx *)fq; + + /* Put context into dead state is an unreliable or serious error is + * received + */ + if (unlikely(flags & PME_STATUS_UNRELIABLE)) + cb_helper(portal, ctx, &dq->fd, 1); + else if (unlikely((serious_error_vec[status]))) + cb_helper(portal, ctx, &dq->fd, 1); + else + cb_helper(portal, ctx, &dq->fd, 0); + + return qman_cb_dqrr_consume; +} + +static void cb_ern(__always_unused struct qman_portal *portal, + struct qman_fq *fq, const struct qm_mr_entry *mr) +{ + struct pme_ctx *ctx; + struct pme_nostash *data; + struct pme_ctx_token *token; + + data = container_of(fq, struct pme_nostash, fqin); + ctx = data->parent; + + token = pop_matching_token(ctx, &mr->ern.fd); + if (likely(token->cmd_type == pme_cmd_scan)) { + BUG_ON(!ctx->ern_cb); + ctx->ern_cb(ctx, mr, token); + } else if (token->cmd_type == pme_cmd_pmtcc) { + BUG_ON(!ctx->ern_cb); + ctx->ern_cb(ctx, mr, token); + } else { + struct pme_ctx_ctrl_token *ctrl_token; + /* outcast ctx and call supplied callback */ + ctrl_token = container_of(token, struct pme_ctx_ctrl_token, + base_token); + if (token->cmd_type == pme_cmd_flow_write) { + /* Release the allocated flow context */ + pme_hw_flow_free(ctrl_token->internal_flow_ptr); + } else if (token->cmd_type == pme_cmd_flow_read) { + /* Copy read result */ + memcpy(ctrl_token->usr_flow_ptr, + ctrl_token->internal_flow_ptr, + sizeof(struct pme_flow)); + /* Release the allocated flow context */ + pme_hw_flow_free(ctrl_token->internal_flow_ptr); + } + BUG_ON(!ctrl_token->ern_cb); + ctrl_token->ern_cb(ctx, mr, ctrl_token); + } + /* Consume the frame */ + if (ctx->flags & PME_CTX_FLAG_EXCLUSIVE) + release_exclusive(ctx); + if (atomic_dec_and_test(&ctx->refs)) + wake_up(&ctx->queue); +} + +static void cb_dc_ern(struct qman_portal *portal, struct qman_fq *fq, + const struct qm_mr_entry *mr) +{ + struct pme_ctx *ctx = (struct pme_ctx *)fq; + /* This, umm, *shouldn't* happen. It's pretty bad. Things are expected + * to fall apart here, but we'll continue long enough to get out of + * interrupt context and let the user unwind whatever they can. */ + pr_err("PME2 h/w enqueue rejection - expect catastrophe!\n"); + cb_helper(portal, ctx, &mr->dcern.fd, 1); +} + +static void cb_fqs(__always_unused struct qman_portal *portal, + __always_unused struct qman_fq *fq, + const struct qm_mr_entry *mr) +{ + u8 verb = mr->verb & QM_MR_VERB_TYPE_MASK; + if (verb == QM_MR_VERB_FQRNI) + return; + /* nothing else is supposed to occur */ + BUG(); +} + --- linux-3.13.0.orig/drivers/staging/fsl_pme2/pme2_low.c +++ linux-3.13.0/drivers/staging/fsl_pme2/pme2_low.c @@ -0,0 +1,276 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 "pme2_private.h" + +MODULE_AUTHOR("Geoff Thorpe"); +MODULE_LICENSE("Dual BSD/GPL"); +MODULE_DESCRIPTION("FSL PME2 (p4080) device usage"); + +#define PME_RESIDUE_SIZE 128 +#define PME_RESIDUE_ALIGN 64 +#define PME_FLOW_SIZE sizeof(struct pme_flow) +#define PME_FLOW_ALIGN 32 +static struct kmem_cache *slab_residue; +static struct kmem_cache *slab_flow; +static struct kmem_cache *slab_fq; + +/* Hack to support "pme_map()". The point of this is that dma_map_single() now + * requires a non-NULL device, so the idea is that address mapping must be + * device-sensitive. Now the PAMU IO-MMU already takes care of this, as can be + * seen by the device-tree structure generated by the hypervisor (each portal + * node has sub-nodes for each h/w end-point it provides access to, and each + * sub-node has its own LIODN configuration). So we just need to map cpu + * pointers to (guest-)physical address and the PAMU takes care of the rest, so + * this doesn't need to be portal-sensitive nor device-sensitive. */ +static struct platform_device *pdev; + +static int pme2_low_init(void) +{ + int ret = -ENOMEM; + + slab_residue = kmem_cache_create("pme2_residue", PME_RESIDUE_SIZE, + PME_RESIDUE_ALIGN, SLAB_HWCACHE_ALIGN, NULL); + if (!slab_residue) + goto end; + slab_flow = kmem_cache_create("pme2_flow", PME_FLOW_SIZE, + PME_FLOW_ALIGN, 0, NULL); + if (!slab_flow) + goto end; + slab_fq = kmem_cache_create("pme2_fqslab", sizeof(struct qman_fq), + __alignof__(struct qman_fq), SLAB_HWCACHE_ALIGN, NULL); + if (!slab_fq) + goto end; + ret = -ENODEV; + pdev = platform_device_alloc("pme", -1); + if (!pdev) + goto end; + if (dma_set_mask(&pdev->dev, DMA_BIT_MASK(40))) + goto end; + if (platform_device_add(pdev)) + goto end; + return 0; +end: + if (pdev) { + platform_device_put(pdev); + pdev = NULL; + } + if (slab_flow) { + kmem_cache_destroy(slab_flow); + slab_flow = NULL; + } + if (slab_residue) { + kmem_cache_destroy(slab_residue); + slab_residue = NULL; + } + if (slab_fq) { + kmem_cache_destroy(slab_fq); + slab_fq = NULL; + } + return ret; +} + +static void pme2_low_exit(void) +{ + platform_device_del(pdev); + platform_device_put(pdev); + pdev = NULL; + kmem_cache_destroy(slab_fq); + kmem_cache_destroy(slab_flow); + kmem_cache_destroy(slab_residue); + slab_fq = slab_flow = slab_residue = NULL; +} + +module_init(pme2_low_init); +module_exit(pme2_low_exit); + +struct qman_fq *slabfq_alloc(void) +{ + return kmem_cache_alloc(slab_fq, GFP_KERNEL); +} + +void slabfq_free(struct qman_fq *fq) +{ + kmem_cache_free(slab_fq, fq); +} + +/***********************/ +/* low-level functions */ +/***********************/ + +struct pme_hw_residue *pme_hw_residue_new(void) +{ + return kmem_cache_alloc(slab_residue, GFP_KERNEL); +} +EXPORT_SYMBOL(pme_hw_residue_new); + +void pme_hw_residue_free(struct pme_hw_residue *p) +{ + kmem_cache_free(slab_residue, p); +} +EXPORT_SYMBOL(pme_hw_residue_free); + +struct pme_hw_flow *pme_hw_flow_new(void) +{ + struct pme_flow *flow = kmem_cache_zalloc(slab_flow, GFP_KERNEL); + return (struct pme_hw_flow *)flow; +} +EXPORT_SYMBOL(pme_hw_flow_new); + +void pme_hw_flow_free(struct pme_hw_flow *p) +{ + kmem_cache_free(slab_flow, p); +} +EXPORT_SYMBOL(pme_hw_flow_free); + +static const struct pme_flow default_sw_flow = { + .sos = 1, + .srvm = 0, + .esee = 1, + .ren = 0, + .rlen = 0, + .seqnum_hi = 0, + .seqnum_lo = 0, + .sessionid = 0x7ffffff, + .rptr_hi = 0, + .rptr_lo = 0, + .clim = 0xffff, + .mlim = 0xffff +}; + +void pme_sw_flow_init(struct pme_flow *flow) +{ + memcpy(flow, &default_sw_flow, sizeof(*flow)); +} +EXPORT_SYMBOL(pme_sw_flow_init); + +void pme_initfq(struct qm_mcc_initfq *initfq, struct pme_hw_flow *flow, u8 qos, + u8 rbpid, u32 rfqid) +{ + struct pme_context_a *pme_a = + (struct pme_context_a *)&initfq->fqd.context_a; + struct pme_context_b *pme_b = + (struct pme_context_b *)&initfq->fqd.context_b; + + initfq->we_mask = QM_INITFQ_WE_DESTWQ | QM_INITFQ_WE_CONTEXTA | + QM_INITFQ_WE_CONTEXTB; + initfq->fqd.dest.channel = qm_channel_pme; + initfq->fqd.dest.wq = qos; + if (flow) { + dma_addr_t fcp = flow_map((struct pme_flow *)flow); + pme_a->mode = pme_mode_flow; + pme_context_a_set64(pme_a, fcp); + } else { + pme_a->mode = pme_mode_direct; + pme_context_a_set64(pme_a, 0); + } + pme_b->rbpid = rbpid; + pme_b->rfqid = rfqid; +} +EXPORT_SYMBOL(pme_initfq); + +void pme_fd_cmd_nop(struct qm_fd *fd) +{ + struct pme_cmd_nop *nop = (struct pme_cmd_nop *)&fd->cmd; + nop->cmd = pme_cmd_nop; +} +EXPORT_SYMBOL(pme_fd_cmd_nop); + +void pme_fd_cmd_fcw(struct qm_fd *fd, u8 flags, struct pme_flow *flow, + struct pme_hw_residue *residue) +{ + dma_addr_t f; + struct pme_cmd_flow_write *fcw = (struct pme_cmd_flow_write *)&fd->cmd; + + BUG_ON(!flow); + BUG_ON((unsigned long)flow & 31); + fcw->cmd = pme_cmd_flow_write; + fcw->flags = flags; + if (flags & PME_CMD_FCW_RES) { + if (residue) { + dma_addr_t rptr = residue_map(residue); + BUG_ON(!residue); + BUG_ON((unsigned long)residue & 63); + pme_flow_rptr_set64(flow, rptr); + } else + pme_flow_rptr_set64(flow, 0); + } + f = flow_map(flow); + qm_fd_addr_set64(fd, f); + fd->format = qm_fd_contig; + fd->offset = 0; + fd->length20 = sizeof(*flow); +} +EXPORT_SYMBOL(pme_fd_cmd_fcw); + +void pme_fd_cmd_fcr(struct qm_fd *fd, struct pme_flow *flow) +{ + dma_addr_t f; + struct pme_cmd_flow_read *fcr = (struct pme_cmd_flow_read *)&fd->cmd; + + BUG_ON(!flow); + BUG_ON((unsigned long)flow & 31); + fcr->cmd = pme_cmd_flow_read; + f = flow_map(flow); + qm_fd_addr_set64(fd, f); + fd->format = qm_fd_contig; + fd->offset = 0; + fd->length20 = sizeof(*flow); +} +EXPORT_SYMBOL(pme_fd_cmd_fcr); + +void pme_fd_cmd_pmtcc(struct qm_fd *fd) +{ + struct pme_cmd_pmtcc *pmtcc = (struct pme_cmd_pmtcc *)&fd->cmd; + pmtcc->cmd = pme_cmd_pmtcc; +} +EXPORT_SYMBOL(pme_fd_cmd_pmtcc); + +void pme_fd_cmd_scan(struct qm_fd *fd, u32 args) +{ + struct pme_cmd_scan *scan = (struct pme_cmd_scan *)&fd->cmd; + fd->cmd = args; + scan->cmd = pme_cmd_scan; +} +EXPORT_SYMBOL(pme_fd_cmd_scan); + +dma_addr_t pme_map(void *ptr) +{ + return dma_map_single(&pdev->dev, ptr, 1, DMA_BIDIRECTIONAL); +} +EXPORT_SYMBOL(pme_map); + +int pme_map_error(dma_addr_t dma_addr) +{ + return dma_mapping_error(&pdev->dev, dma_addr); +} +EXPORT_SYMBOL(pme_map_error); + --- linux-3.13.0.orig/drivers/staging/fsl_pme2/pme2_private.h +++ linux-3.13.0/drivers/staging/fsl_pme2/pme2_private.h @@ -0,0 +1,180 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 "pme2_sys.h" +#include + +#undef PME2_DEBUG + +#ifdef PME2_DEBUG +#define PMEPRINFO(fmt, args...) pr_info("PME2: %s: " fmt, __func__, ## args) +#else +#define PMEPRINFO(fmt, args...) +#endif + +#define PMEPRERR(fmt, args...) pr_err("PME2: %s: " fmt, __func__, ## args) +#define PMEPRCRIT(fmt, args...) pr_crit("PME2: %s: " fmt, __func__, ## args) + +#ifdef CONFIG_FSL_PME2_CTRL +/* Hooks */ +int pme2_create_sysfs_dev_files(struct platform_device *ofdev); +void pme2_remove_sysfs_dev_files(struct platform_device *ofdev); +void accumulator_update_interval(u32 interval); +#endif + +static inline void set_fd_addr(struct qm_fd *fd, dma_addr_t addr) +{ + qm_fd_addr_set64(fd, addr); +} +static inline dma_addr_t get_fd_addr(const struct qm_fd *fd) +{ + return (dma_addr_t)qm_fd_addr_get64(fd); +} +static inline void set_sg_addr(struct qm_sg_entry *sg, dma_addr_t addr) +{ + qm_sg_entry_set64(sg, addr); +} +static inline dma_addr_t get_sg_addr(const struct qm_sg_entry *sg) +{ + return (dma_addr_t)qm_sg_entry_get64(sg); +} + +/******************/ +/* Datapath types */ +/******************/ + +enum pme_mode { + pme_mode_direct = 0x00, + pme_mode_flow = 0x80 +}; + +struct pme_context_a { + enum pme_mode mode:8; + u8 __reserved; + /* Flow Context pointer (48-bit), ignored if mode==direct */ + u16 flow_hi; + u32 flow_lo; +} __packed; +static inline u64 pme_context_a_get64(const struct pme_context_a *p) +{ + return ((u64)p->flow_hi << 32) | (u64)p->flow_lo; +} +/* Macro, so we compile better if 'v' isn't always 64-bit */ +#define pme_context_a_set64(p, v) \ + do { \ + struct pme_context_a *__p931 = (p); \ + __p931->flow_hi = upper_32_bits(v); \ + __p931->flow_lo = lower_32_bits(v); \ + } while (0) + +struct pme_context_b { + u32 rbpid:8; + u32 rfqid:24; +} __packed; + + +/* This is the 32-bit frame "cmd/status" field, sent to PME */ +union pme_cmd { + struct pme_cmd_nop { + enum pme_cmd_type cmd:3; + } nop; + struct pme_cmd_flow_read { + enum pme_cmd_type cmd:3; + } fcr; + struct pme_cmd_flow_write { + enum pme_cmd_type cmd:3; + u8 __reserved:5; + u8 flags; /* See PME_CMD_FCW_*** */ + } __packed fcw; + struct pme_cmd_pmtcc { + enum pme_cmd_type cmd:3; + } pmtcc; + struct pme_cmd_scan { + union { + struct { + enum pme_cmd_type cmd:3; + u8 flags:5; /* See PME_CMD_SCAN_*** */ + } __packed; + }; + u8 set; + u16 subset; + } __packed scan; +}; + +/* The exported macro forms a "scan_args" u32 from 3 inputs, these private + * inlines do the inverse, if you need to crack one apart. */ +static inline u8 scan_args_get_flags(u32 args) +{ + return args >> 24; +} +static inline u8 scan_args_get_set(u32 args) +{ + return (args >> 16) & 0xff; +} +static inline u16 scan_args_get_subset(u32 args) +{ + return args & 0xffff; +} + +/* Hook from pme2_high to pme2_low */ +struct qman_fq *slabfq_alloc(void); +void slabfq_free(struct qman_fq *fq); + +/* Hook from pme2_high to pme2_ctrl */ +int pme2_have_control(void); +int pme2_exclusive_set(struct qman_fq *fq); +int pme2_exclusive_unset(void); + +#define DECLARE_GLOBAL(name, t, mt, def, desc) \ + static t name = def; \ + module_param(name, mt, 0644); \ + MODULE_PARM_DESC(name, desc ", default: " __stringify(def)); + +/* Constants used by the SRE ioctl. */ +#define PME_PMFA_SRE_POLL_MS 100 +#define PME_PMFA_SRE_INDEX_MAX (1 << 27) +#define PME_PMFA_SRE_INC_MAX (1 << 12) +#define PME_PMFA_SRE_REP_MAX (1 << 28) +#define PME_PMFA_SRE_INTERVAL_MAX (1 << 12) + +/* Encapsulations for mapping */ +#define flow_map(flow) \ +({ \ + struct pme_flow *__f913 = (flow); \ + pme_map(__f913); \ +}) + +#define residue_map(residue) \ +({ \ + struct pme_hw_residue *__f913 = (residue); \ + pme_map(__f913); \ +}) + --- linux-3.13.0.orig/drivers/staging/fsl_pme2/pme2_regs.h +++ linux-3.13.0/drivers/staging/fsl_pme2/pme2_regs.h @@ -0,0 +1,173 @@ +/* Copyright 2009-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 PME2_REGS_H +#define PME2_REGS_H + +#define PME_REG_ISR 0x000 +#define PME_REG_IER 0x004 +#define PME_REG_ISDR 0x008 +#define PME_REG_IIR 0x00C +#define PME_REG_RLL 0x014 +#define PME_REG_CDCR 0x018 +#define PME_REG_TRUNCI 0x024 +#define PME_REG_RBC 0x028 +#define PME_REG_ESR 0x02C +#define PME_REG_ECR0 0x030 +#define PME_REG_ECR1 0x034 +#define PME_REG_EFQC 0x050 +#define PME_REG_FACONF 0x060 +#define PME_REG_PMSTAT 0x064 +#define PME_REG_FAMCR 0x068 +#define PME_REG_PMTR 0x06C +#define PME_REG_PEHD 0x074 +#define PME_REG_BSC0 0x080 +#define PME_REG_BSC1 0x084 +#define PME_REG_BSC2 0x088 +#define PME_REG_BSC3 0x08C +#define PME_REG_BSC4 0x090 +#define PME_REG_BSC5 0x094 +#define PME_REG_BSC6 0x098 +#define PME_REG_BSC7 0x09C +#define PME_REG_QMBFD0 0x0E0 +#define PME_REG_QMBFD1 0x0E4 +#define PME_REG_QMBFD2 0x0E8 +#define PME_REG_QMBFD3 0x0EC +#define PME_REG_QMBCTXTAH 0x0F0 +#define PME_REG_QMBCTXTAL 0x0F4 +#define PME_REG_QMBCTXTB 0x0F8 +#define PME_REG_QMBCTL 0x0FC +#define PME_REG_ECC1BES 0x100 +#define PME_REG_ECC2BES 0x104 +#define PME_REG_ECCADDR 0x110 +#define PME_REG_ECCCODE 0x118 +#define PME_REG_TBT0ECC1TH 0x180 +#define PME_REG_TBT0ECC1EC 0x184 +#define PME_REG_TBT1ECC1TH 0x188 +#define PME_REG_TBT1ECC1EC 0x18C +#define PME_REG_VLT0ECC1TH 0x190 +#define PME_REG_VLT0ECC1EC 0x194 +#define PME_REG_VLT1ECC1TH 0x198 +#define PME_REG_VLT1ECC1EC 0x19C +#define PME_REG_CMECC1TH 0x1A0 +#define PME_REG_CMECC1EC 0x1A4 +#define PME_REG_DXCMECC1TH 0x1B0 +#define PME_REG_DXCMECC1EC 0x1B4 +#define PME_REG_DXEMECC1TH 0x1C0 +#define PME_REG_DXEMECC1EC 0x1C4 +#define PME_REG_STNIB 0x200 +#define PME_REG_STNIS 0x204 +#define PME_REG_STNTH1 0x208 +#define PME_REG_STNTH2 0x20C +#define PME_REG_STNTHV 0x210 +#define PME_REG_STNTHS 0x214 +#define PME_REG_STNCH 0x218 +#define PME_REG_SWDB 0x21C +#define PME_REG_KVLTS 0x220 +#define PME_REG_KEC 0x224 +#define PME_REG_STNPM 0x280 +#define PME_REG_STNS1M 0x284 +#define PME_REG_DRCIC 0x288 +#define PME_REG_DRCMC 0x28C +#define PME_REG_STNPMR 0x290 +#define PME_REG_PDSRBAH 0x2A0 +#define PME_REG_PDSRBAL 0x2A4 +#define PME_REG_DMCR 0x2A8 +#define PME_REG_DEC0 0x2AC +#define PME_REG_DEC1 0x2B0 +#define PME_REG_DLC 0x2C0 +#define PME_REG_STNDSR 0x300 +#define PME_REG_STNESR 0x304 +#define PME_REG_STNS1R 0x308 +#define PME_REG_STNOB 0x30C +#define PME_REG_SCBARH 0x310 +#define PME_REG_SCBARL 0x314 +#define PME_REG_SMCR 0x318 +#define PME_REG_SREC 0x320 +#define PME_REG_ESRP 0x328 +#define PME_REG_SRRV0 0x338 +#define PME_REG_SRRV1 0x33C +#define PME_REG_SRRV2 0x340 +#define PME_REG_SRRV3 0x344 +#define PME_REG_SRRV4 0x348 +#define PME_REG_SRRV5 0x34C +#define PME_REG_SRRV6 0x350 +#define PME_REG_SRRV7 0x354 +#define PME_REG_SRRFI 0x358 +#define PME_REG_SRRI 0x360 +#define PME_REG_SRRR 0x364 +#define PME_REG_SRRWC 0x368 +#define PME_REG_SFRCC 0x36C +#define PME_REG_SEC1 0x370 +#define PME_REG_SEC2 0x374 +#define PME_REG_SEC3 0x378 +#define PME_REG_MIA_BYC 0x380 +#define PME_REG_MIA_BLC 0x384 +#define PME_REG_MIA_CE 0x388 +#define PME_REG_MIA_CR 0x390 +#define PME_REG_PPIDMR0 0x800 +#define PME_REG_PPIDMR1 0x804 +#define PME_REG_PPIDMR2 0x808 +#define PME_REG_PPIDMR3 0x80C +#define PME_REG_PPIDMR4 0x810 +#define PME_REG_PPIDMR5 0x814 +#define PME_REG_PPIDMR6 0x818 +#define PME_REG_PPIDMR7 0x81C +#define PME_REG_PPIDMR8 0x820 +#define PME_REG_PPIDMR9 0x824 +#define PME_REG_PPIDMR10 0x828 +#define PME_REG_PPIDMR11 0x82C +#define PME_REG_PPIDMR12 0x830 +#define PME_REG_PPIDMR13 0x834 +#define PME_REG_PPIDMR14 0x838 +#define PME_REG_PPIDMR15 0x83C +#define PME_REG_PPIDMR16 0x840 +#define PME_REG_PPIDMR17 0x844 +#define PME_REG_PPIDMR18 0x848 +#define PME_REG_PPIDMR19 0x84C +#define PME_REG_PPIDMR20 0x850 +#define PME_REG_PPIDMR21 0x854 +#define PME_REG_PPIDMR22 0x858 +#define PME_REG_PPIDMR23 0x85C +#define PME_REG_PPIDMR24 0x860 +#define PME_REG_PPIDMR25 0x864 +#define PME_REG_PPIDMR26 0x868 +#define PME_REG_PPIDMR27 0x86C +#define PME_REG_PPIDMR28 0x870 +#define PME_REG_PPIDMR29 0x874 +#define PME_REG_PPIDMR30 0x878 +#define PME_REG_PPIDMR31 0x87C +#define PME_REG_SRCIDR 0xA00 +#define PME_REG_LIODNR 0xA0C +#define PME_REG_PM_IP_REV1 0xBF8 +#define PME_REG_PM_IP_REV2 0xBFC + +#endif /* REGS_H */ --- linux-3.13.0.orig/drivers/staging/fsl_pme2/pme2_sample_db.c +++ linux-3.13.0/drivers/staging/fsl_pme2/pme2_sample_db.c @@ -0,0 +1,426 @@ +/* Copyright 2009-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 "pme2_test.h" + +static u8 pme_db[] = { + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* Rev 2.1 */ + 0x00, 0x0c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x90, 0x41, 0x40, 0x20, 0x00, 0x11, +/* Rev 2.0 */ +/* 0x00, 0x0c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, + 0x20, 0x41, 0x40, 0x20, 0x00, 0x11, */ + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* Rev 2.1 */ + 0x00, 0x0d, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, + 0x90, 0x41, 0xff, 0x81, 0x00, 0x00, +/* Rev 2.0 */ +/* 0x00, 0x0d, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, + 0x20, 0x41, 0xff, 0x81, 0x00, 0x00, */ + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, + 0x01, 0xff, 0x80, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x06, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, + 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, + 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, + 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, + 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, + 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, + 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, + 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, + 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, + 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, + 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, + 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, + 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, + 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x7b, + 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, + 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, + 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, + 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, + 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, + 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, + 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, + 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, + 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, + 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, + 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, + 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, + 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, + 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, + 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, + 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, + 0xfc, 0xfd, 0xfe, 0xff +}; + +static u8 db_read[] = { + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, +/* Rev 2.1 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x90, 0x41 +/* Rev 2.0 */ +/* 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, + 0x20, 0x41 */ +}; + +static u8 db_read_expected_result[] = { + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, +/* Rev 2.1 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x90, 0x41, 0x40, 0x20, 0x00, 0x11 +/* Rev 2.0 */ +/* 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, + 0x20, 0x41, 0x40, 0x20, 0x00, 0x11*/ +}; + +struct pmtcc_ctx { + struct pme_ctx base_ctx; + struct qm_fd result_fd; + struct completion done; + u8 ern; +}; + +static void pmtcc_cb(struct pme_ctx *ctx, const struct qm_fd *fd, + struct pme_ctx_token *ctx_token) +{ + struct pmtcc_ctx *my_ctx = (struct pmtcc_ctx *)ctx; + memcpy(&my_ctx->result_fd, fd, sizeof(*fd)); + complete(&my_ctx->done); +} + +static void pmtcc_ern_cb(struct pme_ctx *ctx, const struct qm_mr_entry *mr, + struct pme_ctx_token *ctx_token) +{ + struct pmtcc_ctx *my_ctx = (struct pmtcc_ctx *)ctx; + my_ctx->result_fd = mr->ern.fd; + my_ctx->ern = 1; + complete(&my_ctx->done); +} + +#define FIRST_PMTCC 56 +int pme2_clear_sample_db(void) +{ + struct pmtcc_ctx ctx = { + .base_ctx.cb = pmtcc_cb, + .base_ctx.ern_cb = pmtcc_ern_cb, + .ern = 0 + }; + struct qm_fd fd; + int ret = 0; + enum pme_status status; + struct pme_ctx_token token; + void *mem; + struct cpumask backup_mask = current->cpus_allowed; + struct cpumask new_mask = *qman_affine_cpus(); + + cpumask_and(&new_mask, &new_mask, bman_affine_cpus()); + ret = set_cpus_allowed_ptr(current, &new_mask); + if (ret) { + pr_info("cleanr_sample_db: can't set cpumask\n"); + goto _clear_0; + } + init_completion(&ctx.done); + ret = pme_ctx_init(&ctx.base_ctx, + PME_CTX_FLAG_EXCLUSIVE | + PME_CTX_FLAG_PMTCC | + PME_CTX_FLAG_LOCAL, 0, 4, 4, 0, NULL); + if (ret) { + pr_err("clear_sample_db: can't init ctx\n"); + goto _clear_1; + } + + /* enable the context */ + ret = pme_ctx_enable(&ctx.base_ctx); + if (ret) { + pr_err("clear_sample_db: can't enable ctx\n"); + goto _clear_2; + } + + /* Write the database */ + memset(&fd, 0, sizeof(struct qm_fd)); + mem = kmalloc(FIRST_PMTCC, GFP_KERNEL); + if (!mem) + goto _clear_3; + memcpy(mem, pme_db, FIRST_PMTCC); + + fd.length20 = FIRST_PMTCC; + qm_fd_addr_set64(&fd, pme_map(mem)); + + ret = pme_ctx_pmtcc(&ctx.base_ctx, PME_CTX_OP_WAIT, &fd, &token); + if (ret == -ENODEV) { + pr_err("clear_sample_db: not the control plane, bailing\n"); + goto _clear_4; + } + if (ret) { + pr_err("clear_sample_db: error with pmtcc\n"); + goto _clear_4; + } + wait_for_completion(&ctx.done); + if (ctx.ern) { + pr_err("clear_sample_db: Rx ERN from pmtcc\n"); + goto _clear_4; + } + status = pme_fd_res_status(&ctx.result_fd); + if (status) { + pr_info("clear_sample_db: PMTCC write status failed %d\n", + status); + goto _clear_4; + } +_clear_4: + kfree(mem); +_clear_3: + /* Disable */ + ret = pme_ctx_disable(&ctx.base_ctx, + PME_CTX_OP_WAIT | PME_CTX_OP_WAIT_INT, NULL); +_clear_2: + pme_ctx_finish(&ctx.base_ctx); +_clear_1: + ret = set_cpus_allowed_ptr(current, &backup_mask); + if (ret) + pr_info("clear_sample_db: can't restore cpumask"); +_clear_0: + if (!ret) + pr_info("clear_sample_db: Done\n"); + else + pr_info("clear_sample_db: Error 0x%x\n", ret); + return ret; + +} + +int pme2_sample_db(void) +{ + struct pmtcc_ctx ctx = { + .base_ctx.cb = pmtcc_cb, + .base_ctx.ern_cb = pmtcc_ern_cb, + .ern = 0 + }; + struct qm_fd fd; + struct qm_sg_entry *sg_table = NULL; + int ret = 0; + enum pme_status status; + struct pme_ctx_token token; + void *mem = NULL, *mem_result = NULL; + u32 pme_rev; + struct cpumask backup_mask = current->cpus_allowed; + struct cpumask new_mask = *qman_affine_cpus(); + + cpumask_and(&new_mask, &new_mask, bman_affine_cpus()); + ret = set_cpus_allowed_ptr(current, &new_mask); + if (ret) { + pr_info("sample_db: can't set cpumask\n"); + goto _finish_0; + } + ret = pme_attr_get(pme_attr_rev1, &pme_rev); + if (ret) { + pr_err("sample_db: can't read pme revision %d\n", ret); + goto _finish_1; + } + /* If Rev 2.0...update database */ + if ((pme_rev & 0x0000FFFF) == 0x00000200) { + pr_info("sample_db: db for pme ver 2.0\n"); + pme_db[133] = 0x01; + pme_db[134] = 0x20; + pme_db[161] = 0x01; + pme_db[162] = 0x20; + db_read[21] = 0x01; + db_read[22] = 0x20; + db_read_expected_result[21] = 0x01; + db_read_expected_result[22] = 0x20; + } else + pr_info("sample_db: db for pme ver 2.1 or greater\n"); + init_completion(&ctx.done); + ret = pme_ctx_init(&ctx.base_ctx, + PME_CTX_FLAG_EXCLUSIVE | + PME_CTX_FLAG_PMTCC | + PME_CTX_FLAG_LOCAL, 0, 4, 4, 0, NULL); + if (ret) { + pr_err("sample_db: can't init ctx\n"); + goto _finish_1; + } + + /* enable the context */ + ret = pme_ctx_enable(&ctx.base_ctx); + if (ret) { + pr_err("sample_db: can't enable ctx\n"); + goto _finish_2; + } + + /* Write the database */ + memset(&fd, 0, sizeof(struct qm_fd)); + mem = kmalloc(sizeof(pme_db), GFP_KERNEL); + if (!mem) + goto _finish_3; + memcpy(mem, pme_db, sizeof(pme_db)); + + fd.length20 = sizeof(pme_db); + qm_fd_addr_set64(&fd, pme_map(mem)); + + ret = pme_ctx_pmtcc(&ctx.base_ctx, PME_CTX_OP_WAIT, &fd, &token); + if (ret == -ENODEV) { + pr_err("sample_db: not the control plane, bailing\n"); + goto _finish_4; + } + if (ret) { + pr_err("sample_db: error with pmtcc\n"); + goto _finish_4; + } + wait_for_completion(&ctx.done); + if (ctx.ern) { + pr_err("sample_db: Rx ERN from pmtcc\n"); + goto _finish_4; + } + status = pme_fd_res_status(&ctx.result_fd); + if (status) { + pr_info("sample_db: PMTCC write status failed %d\n", status); + goto _finish_4; + } + kfree(mem); + mem = NULL; + /* Read back the database */ + init_completion(&ctx.done); + memset(&fd, 0, sizeof(struct qm_fd)); + sg_table = kzalloc(2 * sizeof(*sg_table), GFP_KERNEL | GFP_DMA); + mem_result = kmalloc(28, GFP_KERNEL); + mem = kmalloc(sizeof(db_read), GFP_KERNEL); + if (!sg_table || !mem || !mem_result) { + pr_err("sample_db: out of memory\n"); + ret = -ENOMEM; + goto _finish_4; + } + memcpy(mem, db_read, sizeof(db_read)); + qm_sg_entry_set64(&sg_table[0], pme_map(mem_result)); + sg_table[0].length = 28; + qm_sg_entry_set64(&sg_table[1], pme_map(mem)); + sg_table[1].length = sizeof(db_read); + sg_table[1].final = 1; + fd.format = qm_fd_compound; + qm_fd_addr_set64(&fd, pme_map(sg_table)); + ret = pme_ctx_pmtcc(&ctx.base_ctx, PME_CTX_OP_WAIT, &fd, &token); + if (ret) { + pr_err("sample_db: error with pmtcc\n"); + goto _finish_4; + } + wait_for_completion(&ctx.done); + if (ctx.ern) { + ret = -EINVAL; + pr_err("sample_db: Rx ERN from pmtcc\n"); + goto _finish_4; + } + status = pme_fd_res_status(&ctx.result_fd); + if (status) { + ret = -EINVAL; + pr_err("sample_db: PMTCC read status failed %d\n", status); + goto _finish_4; + } + if (pme_fd_res_flags(&ctx.result_fd) & PME_STATUS_UNRELIABLE) { + pr_err("sample_db: flags result set %x\n", + pme_fd_res_flags(&ctx.result_fd)); + ret = -EINVAL; + goto _finish_4; + } + if (memcmp(db_read_expected_result, mem_result, 28) != 0) { + pr_err("sample_db: DB read result not expected\n"); + pr_err("Expected\n"); + hexdump(db_read_expected_result, + sizeof(db_read_expected_result)); + pr_info("Received\n"); + hexdump(mem_result, 28); + ret = -EINVAL; + } +_finish_4: + kfree(mem_result); + kfree(sg_table); + kfree(mem); +_finish_3: + /* Disable */ + ret = pme_ctx_disable(&ctx.base_ctx, + PME_CTX_OP_WAIT | PME_CTX_OP_WAIT_INT, NULL); +_finish_2: + pme_ctx_finish(&ctx.base_ctx); +_finish_1: + if (ret) + set_cpus_allowed_ptr(current, &backup_mask); + else { + ret = set_cpus_allowed_ptr(current, &backup_mask); + if (ret) + pr_info("sample_db: can't restore cpumask"); + } + +_finish_0: + if (!ret) + pr_info("pme: sample DB initialised\n"); + else + pr_info("pme: Error during sample DB 0x%x\n", ret); + return ret; +} + --- linux-3.13.0.orig/drivers/staging/fsl_pme2/pme2_scan.c +++ linux-3.13.0/drivers/staging/fsl_pme2/pme2_scan.c @@ -0,0 +1,1111 @@ +/* Copyright 2009-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 "pme2_private.h" +#include +#include +#include +#include + +#define WAIT_AND_INTERRUPTABLE (PME_CTX_OP_WAIT|PME_CTX_OP_WAIT_INT) +#define INPUT_FRM 1 +#define OUTPUT_FRM 0 +/* Private structure that is allocated for each open that is done on the + * pme_scan device. */ +struct scan_session { + /* The ctx that is needed to communicate with the pme high level */ + struct pme_ctx ctx; + /* Locks completed_commands */ + spinlock_t set_subset_lock; + __u8 set; + __u16 subset; + /* For asynchronous processing */ + wait_queue_head_t waiting_for_completion; + struct list_head completed_commands; + /* Locks completed_commands */ + spinlock_t completed_commands_lock; + u32 completed_count; +}; + +/* Command Token for scan operations. One of these is created for every + * operation on a context. When the context operation is complete cleanup + * is done */ +struct cmd_token { + /* pme high level token */ + struct pme_ctx_token hl_token; + /* The kernels copy of the user op structure */ + struct pme_scan_cmd kernel_op; + /* Set to non zero if this is a synchronous request */ + u8 synchronous; + /* data */ + struct qm_fd tx_fd; + struct qm_sg_entry tx_comp[2]; + struct qm_fd rx_fd; + void *tx_data; + size_t tx_size; + void *rx_data; + size_t rx_size; + /* For blocking requests, we need a wait point and condition */ + wait_queue_head_t *queue; + /* List management for completed async requests */ + struct list_head completed_list; + u8 done; + u8 ern; +}; + +struct ctrl_op { + struct pme_ctx_ctrl_token ctx_ctr; + struct completion cb_done; + enum pme_status cmd_status; + u8 res_flag; + u8 ern; +}; + +#ifdef CONFIG_COMPAT +static void compat_to_scan_cmd(struct pme_scan_cmd *dst, + struct compat_pme_scan_cmd *src) +{ + dst->flags = src->flags; + dst->opaque = compat_ptr(src->opaque); + dst->input.data = compat_ptr(src->input.data); + dst->input.size = src->input.size; + dst->output.data = compat_ptr(src->output.data); + dst->output.size = src->output.size; +} + +static void scan_result_to_compat(struct compat_pme_scan_result *dst, + struct pme_scan_result *src) +{ + dst->flags = src->flags; + dst->opaque = ptr_to_compat(src->opaque); + dst->status = src->status; + dst->output.data = ptr_to_compat(src->output.data); + dst->output.size = src->output.size; +} + +static void compat_to_scan_result(struct pme_scan_result *dst, + struct compat_pme_scan_result *src) +{ + dst->flags = src->flags; + dst->opaque = compat_ptr(src->opaque); + dst->status = src->status; + dst->output.data = compat_ptr(src->output.data); + dst->output.size = src->output.size; +} +#endif + +static void ctrl_cb(struct pme_ctx *ctx, const struct qm_fd *fd, + struct pme_ctx_ctrl_token *token) +{ + struct ctrl_op *ctrl = (struct ctrl_op *)token; + ctrl->cmd_status = pme_fd_res_status(fd); + ctrl->res_flag = pme_fd_res_flags(fd) & PME_STATUS_UNRELIABLE; + complete(&ctrl->cb_done); +} + +static void ctrl_ern_cb(struct pme_ctx *ctx, const struct qm_mr_entry *mr, + struct pme_ctx_ctrl_token *token) +{ + struct ctrl_op *ctrl = (struct ctrl_op *)token; + ctrl->ern = 1; + complete(&ctrl->cb_done); +} + +static inline int scan_data_empty(struct scan_session *session) +{ + return list_empty(&session->completed_commands); +} + +/* Cleanup for the execute_cmd method */ +static inline void cleanup_token(struct cmd_token *token_p) +{ + kfree(token_p->tx_data); + kfree(token_p->rx_data); + return; +} + +/* Callback for scan operations */ +static void scan_cb(struct pme_ctx *ctx, const struct qm_fd *fd, + struct pme_ctx_token *ctx_token) +{ + struct cmd_token *token = (struct cmd_token *)ctx_token; + struct scan_session *session = (struct scan_session *)ctx; + + token->rx_fd = *fd; + /* If this is a asynchronous command, queue the token */ + if (!token->synchronous) { + spin_lock(&session->completed_commands_lock); + list_add_tail(&token->completed_list, + &session->completed_commands); + session->completed_count++; + spin_unlock(&session->completed_commands_lock); + } + /* Wake up the thread that's waiting for us */ + token->done = 1; + wake_up(token->queue); + return; +} + +static void scan_ern_cb(struct pme_ctx *ctx, const struct qm_mr_entry *mr, + struct pme_ctx_token *ctx_token) +{ + struct cmd_token *token = (struct cmd_token *)ctx_token; + struct scan_session *session = (struct scan_session *)ctx; + + token->ern = 1; + token->rx_fd = mr->ern.fd; + /* If this is a asynchronous command, queue the token */ + if (!token->synchronous) { + spin_lock(&session->completed_commands_lock); + list_add_tail(&token->completed_list, + &session->completed_commands); + session->completed_count++; + spin_unlock(&session->completed_commands_lock); + } + /* Wake up the thread that's waiting for us */ + token->done = 1; + wake_up(token->queue); + return; +} + +static int process_completed_token(struct file *fp, struct cmd_token *token_p, + struct pme_scan_result *scan_result) +{ + int ret = 0; + u32 src_sz, dst_sz; + + memset(scan_result, 0, sizeof(struct pme_scan_result)); + if (token_p->ern) { + ret = -EIO; + goto done; + } + scan_result->output.data = token_p->kernel_op.output.data; + + if (token_p->rx_fd.format == qm_fd_compound) { + /* Need to copy output */ + src_sz = token_p->tx_comp[OUTPUT_FRM].length; + dst_sz = token_p->kernel_op.output.size; + scan_result->output.size = min(dst_sz, src_sz); + /* Doesn't make sense we generated more than available space + * should have got truncation. + */ + BUG_ON(dst_sz < src_sz); + if (copy_to_user(scan_result->output.data, token_p->rx_data, + scan_result->output.size)) { + pr_err("Error copying to user data\n"); + cleanup_token(token_p); + return -EFAULT; + } + } else if (token_p->rx_fd.format == qm_fd_sg_big) + scan_result->output.size = 0; + else + pr_err("pme2_scan: unexpected frame type received\n"); + + scan_result->flags |= pme_fd_res_flags(&token_p->rx_fd); + scan_result->status |= pme_fd_res_status(&token_p->rx_fd); +done: + scan_result->opaque = token_p->kernel_op.opaque; + cleanup_token(token_p); + return ret; +} + +static int getscan_cmd(struct file *fp, struct scan_session *session, + struct pme_scan_params __user *user_scan_params) +{ + int ret = 0; + struct pme_flow params; + struct pme_scan_params local_scan_params; + struct ctrl_op ctx_ctrl = { + .ctx_ctr.cb = ctrl_cb, + .ctx_ctr.ern_cb = ctrl_ern_cb, + .cmd_status = 0, + .res_flag = 0, + .ern = 0 + }; + init_completion(&ctx_ctrl.cb_done); + + memset(&local_scan_params, 0, sizeof(local_scan_params)); + + /* must be enabled */ + if (pme_ctx_is_disabled(&session->ctx)) { + pr_err("pme2_scan: ctx is disabled\n"); + ret = -EINVAL; + goto done; + } + ret = pme_ctx_ctrl_read_flow(&session->ctx, WAIT_AND_INTERRUPTABLE, + ¶ms, &ctx_ctrl.ctx_ctr); + if (ret) { + PMEPRINFO("read flow error %d\n", ret); + goto done; + } + wait_for_completion(&ctx_ctrl.cb_done); + + if (ctx_ctrl.ern || ctx_ctrl.cmd_status || ctx_ctrl.res_flag) { + PMEPRINFO("read flow error %d\n", ctx_ctrl.cmd_status); + ret = -EFAULT; + goto done; + } + local_scan_params.residue.enable = params.ren; + local_scan_params.residue.length = params.rlen; + local_scan_params.sre.sessionid = params.sessionid; + local_scan_params.sre.verbose = params.srvm; + local_scan_params.sre.esee = params.esee; + local_scan_params.dxe.clim = params.clim; + local_scan_params.dxe.mlim = params.mlim; + spin_lock(&session->set_subset_lock); + local_scan_params.pattern.set = session->set; + local_scan_params.pattern.subset = session->subset; + spin_unlock(&session->set_subset_lock); + + if (copy_to_user(user_scan_params, &local_scan_params, + sizeof(local_scan_params))) { + pr_err("Error copying to user data\n"); + ret = -EFAULT; + } +done: + return ret; +} + +static int setscan_cmd(struct file *fp, struct scan_session *session, + struct pme_scan_params __user *user_params) +{ + int ret = 0; + u32 flag = WAIT_AND_INTERRUPTABLE; + struct ctrl_op ctx_ctrl = { + .ctx_ctr.cb = ctrl_cb, + .ctx_ctr.ern_cb = ctrl_ern_cb, + .cmd_status = 0, + .res_flag = 0, + .ern = 0 + }; + struct pme_flow params; + struct pme_scan_params local_params; + + pme_sw_flow_init(¶ms); + init_completion(&ctx_ctrl.cb_done); + if (copy_from_user(&local_params, user_params, sizeof(local_params))) + return -EFAULT; + + /* must be enabled */ + if (pme_ctx_is_disabled(&session->ctx)) { + ret = -EINVAL; + goto done; + } + /* Only send a flw_ctx_w if PME_SCAN_PARAMS_{RESIDUE, SRE or DXE} + * is being done */ + if (local_params.flags == PME_SCAN_PARAMS_PATTERN) + goto set_subset; + if (local_params.flags & PME_SCAN_PARAMS_RESIDUE) + flag |= PME_CMD_FCW_RES; + if (local_params.flags & PME_SCAN_PARAMS_SRE) + flag |= PME_CMD_FCW_SRE; + if (local_params.flags & PME_SCAN_PARAMS_DXE) + flag |= PME_CMD_FCW_DXE; + params.ren = local_params.residue.enable; + params.sessionid = local_params.sre.sessionid; + params.srvm = local_params.sre.verbose; + params.esee = local_params.sre.esee; + params.clim = local_params.dxe.clim; + params.mlim = local_params.dxe.mlim; + + ret = pme_ctx_ctrl_update_flow(&session->ctx, flag, ¶ms, + &ctx_ctrl.ctx_ctr); + if (ret) { + PMEPRINFO("update flow error %d\n", ret); + goto done; + } + wait_for_completion(&ctx_ctrl.cb_done); + if (ctx_ctrl.ern || ctx_ctrl.cmd_status || ctx_ctrl.res_flag) { + PMEPRINFO("update flow err %d\n", ctx_ctrl.cmd_status); + ret = -EFAULT; + goto done; + } + +set_subset: + if (local_params.flags & PME_SCAN_PARAMS_PATTERN) { + spin_lock(&session->set_subset_lock); + session->set = local_params.pattern.set; + session->subset = local_params.pattern.subset; + spin_unlock(&session->set_subset_lock); + goto done; + } +done: + return ret; +} + +static int resetseq_cmd(struct file *fp, struct scan_session *session) +{ + int ret = 0; + struct pme_flow params; + struct ctrl_op ctx_ctrl = { + .ctx_ctr.cb = ctrl_cb, + .ctx_ctr.ern_cb = ctrl_ern_cb, + .cmd_status = 0, + .res_flag = 0, + .ern = 0 + }; + init_completion(&ctx_ctrl.cb_done); + pme_sw_flow_init(¶ms); + + /* must be enabled */ + if (pme_ctx_is_disabled(&session->ctx)) { + pr_err("pme2_scan: ctx is disabled\n"); + ret = -EINVAL; + goto done; + } + pme_flow_seqnum_set64(¶ms, 0); + params.sos = 1; + + ret = pme_ctx_ctrl_update_flow(&session->ctx, PME_CMD_FCW_SEQ, ¶ms, + &ctx_ctrl.ctx_ctr); + if (ret) { + pr_err("pme2_scan: update flow error %d\n", ret); + return ret; + } + wait_for_completion(&ctx_ctrl.cb_done); + if (ctx_ctrl.ern || ctx_ctrl.cmd_status || ctx_ctrl.res_flag) { + PMEPRINFO("update flow err %d\n", ctx_ctrl.cmd_status); + ret = -EFAULT; + } +done: + return ret; +} + +static int resetresidue_cmd(struct file *fp, struct scan_session *session) +{ + int ret = 0; + struct pme_flow params; + struct ctrl_op ctx_ctrl = { + .ctx_ctr.cb = ctrl_cb, + .ctx_ctr.ern_cb = ctrl_ern_cb, + .cmd_status = 0, + .res_flag = 0, + .ern = 0 + }; + + init_completion(&ctx_ctrl.cb_done); + pme_sw_flow_init(¶ms); + /* must be enabled */ + if (pme_ctx_is_disabled(&session->ctx)) { + pr_err("pme2_scan: ctx is disabled\n"); + ret = -EINVAL; + goto done; + } + params.rlen = 0; + ret = pme_ctx_ctrl_update_flow(&session->ctx, + WAIT_AND_INTERRUPTABLE | PME_CTX_OP_RESETRESLEN, + ¶ms, &ctx_ctrl.ctx_ctr); + if (ret) + pr_info("pme2_scan: update flow error %d\n", ret); + wait_for_completion(&ctx_ctrl.cb_done); + if (ctx_ctrl.ern || ctx_ctrl.cmd_status || ctx_ctrl.res_flag) { + PMEPRINFO("update flow err %d\n", ctx_ctrl.cmd_status); + ret = -EFAULT; + } +done: + return ret; +} + +static int process_scan_cmd( + struct file *fp, + struct scan_session *session, + struct pme_scan_cmd *user_cmd, + struct pme_scan_result *user_ret, + u8 synchronous) +{ + int ret = 0; + struct cmd_token local_token; + struct cmd_token *token_p = NULL; + DECLARE_WAIT_QUEUE_HEAD(local_waitqueue); + u8 scan_flags = 0; + + BUG_ON(synchronous && !user_ret); + + /* If synchronous, use a local token (from the stack) + * If asynchronous, allocate a token to use */ + if (synchronous) + token_p = &local_token; + else { + token_p = kmalloc(sizeof(*token_p), GFP_KERNEL); + if (!token_p) + return -ENOMEM; + } + memset(token_p, 0, sizeof(*token_p)); + /* Copy the command to kernel space */ + memcpy(&token_p->kernel_op, user_cmd, sizeof(struct pme_scan_cmd)); + /* Copy the input */ + token_p->synchronous = synchronous; + token_p->tx_size = token_p->kernel_op.input.size; + token_p->tx_data = kmalloc(token_p->kernel_op.input.size, GFP_KERNEL); + if (!token_p->tx_data) { + pr_err("pme2_scan: Err alloc %zd byte", token_p->tx_size); + cleanup_token(token_p); + return -ENOMEM; + } + if (copy_from_user(token_p->tx_data, + token_p->kernel_op.input.data, + token_p->kernel_op.input.size)) { + pr_err("Error copying contigous user data\n"); + cleanup_token(token_p); + return -EFAULT; + } + /* Setup input frame */ + token_p->tx_comp[INPUT_FRM].final = 1; + token_p->tx_comp[INPUT_FRM].length = token_p->tx_size; + qm_sg_entry_set64(&token_p->tx_comp[INPUT_FRM], + pme_map(token_p->tx_data)); + /* setup output frame, if output is expected */ + if (token_p->kernel_op.output.size) { + token_p->rx_size = token_p->kernel_op.output.size; + PMEPRINFO("pme2_scan: expect output %d\n", token_p->rx_size); + token_p->rx_data = kmalloc(token_p->rx_size, GFP_KERNEL); + if (!token_p->rx_data) { + pr_err("pme2_scan: Err alloc %zd byte", + token_p->rx_size); + cleanup_token(token_p); + return -ENOMEM; + } + /* Setup output frame */ + token_p->tx_comp[OUTPUT_FRM].length = token_p->rx_size; + qm_sg_entry_set64(&token_p->tx_comp[OUTPUT_FRM], + pme_map(token_p->rx_data)); + token_p->tx_fd.format = qm_fd_compound; + /* Build compound frame */ + qm_fd_addr_set64(&token_p->tx_fd, + pme_map(token_p->tx_comp)); + } else { + token_p->tx_fd.format = qm_fd_sg_big; + /* Build sg frame */ + qm_fd_addr_set64(&token_p->tx_fd, + pme_map(&token_p->tx_comp[INPUT_FRM])); + token_p->tx_fd.length29 = token_p->tx_size; + } + + /* use the local wait queue if synchronous, the shared + * queue if asynchronous */ + if (synchronous) + token_p->queue = &local_waitqueue; + else + token_p->queue = &session->waiting_for_completion; + token_p->done = 0; + + if (token_p->kernel_op.flags & PME_SCAN_CMD_STARTRESET) + scan_flags |= PME_CMD_SCAN_SR; + if (token_p->kernel_op.flags & PME_SCAN_CMD_END) + scan_flags |= PME_CMD_SCAN_E; + ret = pme_ctx_scan(&session->ctx, WAIT_AND_INTERRUPTABLE, + &token_p->tx_fd, + PME_SCAN_ARGS(scan_flags, session->set, session->subset), + &token_p->hl_token); + if (unlikely(ret)) { + cleanup_token(token_p); + return ret; + } + + if (!synchronous) + /* Don't wait. The command is away */ + return 0; + + PMEPRINFO("Wait for completion\n"); + /* Wait for the command to complete */ + /* TODO: Should this be wait_event_interruptible ? + * If so, will need logic to indicate */ + wait_event(*token_p->queue, token_p->done == 1); + return process_completed_token(fp, token_p, user_ret); +} + +/** + * fsl_pme2_scan_open - open the driver + * + * Open the driver and prepare for requests. + * + * Every time an application opens the driver, we create a scan_session object + * for that file handle. + */ +static int fsl_pme2_scan_open(struct inode *node, struct file *fp) +{ + int ret; + struct scan_session *session; + struct pme_flow flow; + struct ctrl_op ctx_ctrl = { + .ctx_ctr.cb = ctrl_cb, + .ctx_ctr.ern_cb = ctrl_ern_cb, + .cmd_status = 0, + .res_flag = 0, + .ern = 0 + }; + + pme_sw_flow_init(&flow); + init_completion(&ctx_ctrl.cb_done); + PMEPRINFO("pme2_scan: open %d\n", smp_processor_id()); + fp->private_data = kzalloc(sizeof(*session), GFP_KERNEL); + if (!fp->private_data) + return -ENOMEM; + session = (struct scan_session *)fp->private_data; + /* Set up the structures used for asynchronous requests */ + init_waitqueue_head(&session->waiting_for_completion); + INIT_LIST_HEAD(&session->completed_commands); + spin_lock_init(&session->completed_commands_lock); + spin_lock_init(&session->set_subset_lock); + PMEPRINFO("kmalloc session %p\n", fp->private_data); + session = fp->private_data; + session->ctx.cb = scan_cb; + session->ctx.ern_cb = scan_ern_cb; + + /* qosin, qosout should be driver attributes */ + ret = pme_ctx_init(&session->ctx, PME_CTX_FLAG_LOCAL, 0, 4, 4, 0, NULL); + if (ret) { + pr_err("pme2_scan: pme_ctx_init %d\n", ret); + goto exit; + } + /* enable the context */ + ret = pme_ctx_enable(&session->ctx); + if (ret) { + PMEPRINFO("error enabling ctx %d\n", ret); + pme_ctx_finish(&session->ctx); + goto exit; + } + /* Update flow to set sane defaults in the flow context */ + ret = pme_ctx_ctrl_update_flow(&session->ctx, + PME_CTX_OP_WAIT | PME_CMD_FCW_ALL, &flow, &ctx_ctrl.ctx_ctr); + if (!ret) { + wait_for_completion(&ctx_ctrl.cb_done); + if (ctx_ctrl.ern || ctx_ctrl.cmd_status || ctx_ctrl.res_flag) + ret = -EFAULT; + } + if (ret) { + int my_ret; + PMEPRINFO("error updating flow ctx %d\n", ret); + my_ret = pme_ctx_disable(&session->ctx, PME_CTX_OP_WAIT, + &ctx_ctrl.ctx_ctr); + if (my_ret > 0) + wait_for_completion(&ctx_ctrl.cb_done); + else if (my_ret < 0) + PMEPRINFO("error disabling ctx %d\n", ret); + pme_ctx_finish(&session->ctx); + goto exit; + } + /* Set up the structures used for asynchronous requests */ + PMEPRINFO("pme2_scan: Finish pme_scan open %d\n", smp_processor_id()); + return 0; +exit: + kfree(fp->private_data); + fp->private_data = NULL; + return ret; +} + +static int fsl_pme2_scan_close(struct inode *node, struct file *fp) +{ + struct ctrl_op ctx_ctrl = { + .ctx_ctr.cb = ctrl_cb, + .ctx_ctr.ern_cb = ctrl_ern_cb, + .cmd_status = 0, + .res_flag = 0, + .ern = 0 + }; + int ret = 0; + struct scan_session *session = fp->private_data; + + init_completion(&ctx_ctrl.cb_done); + /* Before disabling check to see if it's already disabled. This can + * happen if a pme serious error has occurred for instance.*/ + if (!pme_ctx_is_disabled(&session->ctx)) { + ret = pme_ctx_disable(&session->ctx, PME_CTX_OP_WAIT, + &ctx_ctrl.ctx_ctr); + if (ret > 0) { + wait_for_completion(&ctx_ctrl.cb_done); + if (ctx_ctrl.ern) + PMEPRCRIT("Unexpected ERN\n"); + } else if (ret < 0) { + pr_err("pme2_scan: Error disabling ctx %d\n", ret); + return ret; + } + } + pme_ctx_finish(&session->ctx); + kfree(session); + PMEPRINFO("pme2_scan: Finish pme_session close\n"); + return 0; +} + +static unsigned int fsl_pme2_scan_poll(struct file *fp, + struct poll_table_struct *wait) +{ + struct scan_session *session; + unsigned int mask = POLLOUT | POLLWRNORM; + + if (!fp->private_data) + return -EINVAL; + + session = (struct scan_session *)fp->private_data; + + poll_wait(fp, &session->waiting_for_completion, wait); + + if (!scan_data_empty(session)) + mask |= (POLLIN | POLLRDNORM); + return mask; +} + + +/* Main switch loop for ioctl operations */ +static long fsl_pme2_scan_ioctl(struct file *fp, unsigned int cmd, + unsigned long arg) +{ + struct scan_session *session = fp->private_data; + int ret = 0; + + switch (cmd) { + + case PMEIO_GETSCAN: + return getscan_cmd(fp, session, (struct pme_scan_params *)arg); + break; + + case PMEIO_SETSCAN: + return setscan_cmd(fp, session, (struct pme_scan_params *)arg); + break; + + case PMEIO_RESETSEQ: + return resetseq_cmd(fp, session); + break; + + case PMEIO_RESETRES: + return resetresidue_cmd(fp, session); + break; + + case PMEIO_SCAN: + { + int ret; + struct pme_scan scan; + + if (copy_from_user(&scan, (void __user *)arg, sizeof(scan))) + return -EFAULT; + ret = process_scan_cmd(fp, session, &scan.cmd, &scan.result, 1); + if (!ret) { + struct pme_scan_result __user *user_result = + &((struct pme_scan __user *)arg)->result; + ret = copy_to_user(user_result, &scan.result, + sizeof(*user_result)); + } + return ret; + } + break; + + case PMEIO_SCAN_W1: + { + struct pme_scan_cmd scan_cmd; + + if (copy_from_user(&scan_cmd, (void __user *)arg, + sizeof(scan_cmd))) + return -EFAULT; + return process_scan_cmd(fp, session, &scan_cmd, NULL, 0); + } + break; + + case PMEIO_SCAN_R1: + { + struct pme_scan_result result; + struct cmd_token *completed_cmd = NULL; + struct pme_scan_result __user *ur = + (struct pme_scan_result __user *)arg; + int ret; + + if (copy_from_user(&result, (void __user *)arg, + sizeof(result))) + return -EFAULT; + + /* Check to see if any results */ + spin_lock(&session->completed_commands_lock); + if (!list_empty(&session->completed_commands)) { + completed_cmd = list_first_entry( + &session->completed_commands, + struct cmd_token, + completed_list); + list_del(&completed_cmd->completed_list); + session->completed_count--; + } + spin_unlock(&session->completed_commands_lock); + if (completed_cmd) { + ret = process_completed_token(fp, completed_cmd, + &result); + if (!ret) + ret = copy_to_user(ur, &result, sizeof(result)); + return ret; + } else + return -EIO; + } + break; + + case PMEIO_SCAN_Wn: + { + struct pme_scan_cmds scan_cmds; + int i, ret = 0; + + /* Copy the command to kernel space */ + if (copy_from_user(&scan_cmds, (void __user *)arg, + sizeof(scan_cmds))) + return -EFAULT; + PMEPRINFO("Received Wn for %d cmds\n", scan_cmds.num); + for (i = 0; i < scan_cmds.num; i++) { + struct pme_scan_cmd scan_cmd; + + if (copy_from_user(&scan_cmd, &scan_cmds.cmds[i], + sizeof(scan_cmd))) { + pr_err("pme2_scan: Err with %d\n", i); + scan_cmds.num = i; + if (copy_to_user((void __user *)arg, &scan_cmds, + sizeof(scan_cmds))) { + return -EFAULT; + } + return -EFAULT; + } + ret = process_scan_cmd(fp, session, &scan_cmd, NULL, 0); + if (ret) { + pr_err("pme2_scan: Err with %d cmd %d\n", + i, ret); + scan_cmds.num = i; + if (copy_to_user((void *)arg, &scan_cmds, + sizeof(scan_cmds))) { + pr_err("Error copying to user data\n"); + return -EFAULT; + } + return -EINTR; + } + } + return ret; + } + break; + + case PMEIO_SCAN_Rn: + { + struct pme_scan_results results; + struct pme_scan_result result; + struct pme_scan_result __user *ur; + int i = 0, ret = 0; + struct cmd_token *completed_cmd = NULL; + + /* Copy the command to kernel space */ + if (copy_from_user(&results, (void __user *)arg, + sizeof(results))) + return -EFAULT; + ur = ((struct pme_scan_results __user *)arg)->results + PMEPRINFO("pme2_scan: Received Rn for %d res\n", results.num); + if (!results.num) + return 0; + do { + completed_cmd = NULL; + ret = 0; + /* Check to see if any results */ + spin_lock(&session->completed_commands_lock); + if (!list_empty(&session->completed_commands)) { + /* Move to a different list */ + PMEPRINFO("pme2_scan: Pop response\n"); + completed_cmd = list_first_entry( + &session->completed_commands, + struct cmd_token, + completed_list); + list_del(&completed_cmd->completed_list); + session->completed_count--; + } + spin_unlock(&session->completed_commands_lock); + if (completed_cmd) { + if (copy_from_user(&result, (void __user *)ur+i, + sizeof(result))) + return -EFAULT; + ret = process_completed_token(fp, completed_cmd, + &result); + if (!ret) + ret = copy_to_user(ur, &result, + sizeof(struct pme_scan_result)); + if (!ret) { + i++; + ur++; + } + } + } while (!ret && completed_cmd && (i != results.num)); + + if (i != results.num) { + PMEPRINFO("pme2_scan: Only filled %d responses\n", i); + results.num = i; + PMEPRINFO("pme2_scan: results.num = %d\n", results.num); + if (copy_to_user((void __user *)arg, &results, + sizeof(struct pme_scan_results))) { + pr_err("Error copying to user data\n"); + return -EFAULT; + } + } + return ret; + } + break; + + case PMEIO_RELEASE_BUFS: + return -EINVAL; + break; + +#ifdef CONFIG_COMPAT + case PMEIO_SCAN32: + { + int ret; + struct compat_pme_scan scan32; + struct compat_pme_scan __user *user_scan = compat_ptr(arg); + struct pme_scan scan; + + if (copy_from_user(&scan32, user_scan, sizeof(scan32))) + return -EFAULT; + /* Convert to 64-bit structs */ + compat_to_scan_cmd(&scan.cmd, &scan32.cmd); + compat_to_scan_result(&scan.result, &scan32.result); + + ret = process_scan_cmd(fp, session, &scan.cmd, &scan.result, 1); + if (!ret) { + struct compat_pme_scan_result __user *user_result = + &user_scan->result; + /* Convert to 32-bit struct */ + scan_result_to_compat(&scan32.result, &scan.result); + ret = copy_to_user(user_result, &scan32.result, + sizeof(*user_result)); + } + return ret; + } + break; + + case PMEIO_SCAN_W132: + { + struct compat_pme_scan_cmd scan_cmd32; + struct pme_scan_cmd scan_cmd; + + if (copy_from_user(&scan_cmd32, compat_ptr(arg), + sizeof(scan_cmd32))) + return -EFAULT; + /* Convert to 64-bit struct */ + compat_to_scan_cmd(&scan_cmd, &scan_cmd32); + return process_scan_cmd(fp, session, &scan_cmd, NULL, 0); + } + break; + + case PMEIO_SCAN_R132: + { + struct compat_pme_scan_result result32; + struct pme_scan_result result; + struct cmd_token *completed_cmd = NULL; + struct compat_pme_scan_result __user *ur = compat_ptr(arg); + int ret; + + if (copy_from_user(&result32, (void __user *)arg, + sizeof(result32))) + return -EFAULT; + /* copy to 64-bit structure */ + compat_to_scan_result(&result, &result32); + + /* Check to see if any results */ + spin_lock(&session->completed_commands_lock); + if (!list_empty(&session->completed_commands)) { + completed_cmd = list_first_entry( + &session->completed_commands, + struct cmd_token, + completed_list); + list_del(&completed_cmd->completed_list); + session->completed_count--; + } + spin_unlock(&session->completed_commands_lock); + if (completed_cmd) { + ret = process_completed_token(fp, completed_cmd, + &result); + scan_result_to_compat(&result32, &result); + ret = copy_to_user(ur, &result32, sizeof(result32)); + } else + return -EIO; + } + break; + + case PMEIO_SCAN_Wn32: + { + struct compat_pme_scan_cmds scan_cmds32; + int i, ret = 0; + + /* Copy the command to kernel space */ + if (copy_from_user(&scan_cmds32, compat_ptr(arg), + sizeof(scan_cmds32))) + return -EFAULT; + PMEPRINFO("Received Wn for %d cmds\n", scan_cmds32.num); + for (i = 0; i < scan_cmds32.num; i++) { + struct pme_scan_cmd scan_cmd; + struct compat_pme_scan_cmd __user *u_scan_cmd32; + struct compat_pme_scan_cmd scan_cmd32; + + u_scan_cmd32 = compat_ptr(scan_cmds32.cmds); + u_scan_cmd32 += i; + + if (copy_from_user(&scan_cmd32, u_scan_cmd32, + sizeof(scan_cmd32))) { + pr_err("pme2_scan: Err with %d\n", i); + scan_cmds32.num = i; + if (copy_to_user(compat_ptr(arg), &scan_cmds32, + sizeof(scan_cmds32))) + return -EFAULT; + return -EFAULT; + } + compat_to_scan_cmd(&scan_cmd, &scan_cmd32); + ret = process_scan_cmd(fp, session, &scan_cmd, NULL, 0); + if (ret) { + pr_err("pme2_scan: Err with %d cmd %d\n", + i, ret); + scan_cmds32.num = i; + if (copy_to_user(compat_ptr(arg), &scan_cmds32, + sizeof(scan_cmds32))) + return -EFAULT; + return -EINTR; + } + } + return ret; + } + break; + + case PMEIO_SCAN_Rn32: + { + struct compat_pme_scan_results results32; + int i = 0, ret = 0; + struct cmd_token *completed_cmd = NULL; + struct compat_pme_scan_result __user *ur; + + /* Copy the command to kernel space */ + if (copy_from_user(&results32, compat_ptr(arg), + sizeof(results32))) + return -EFAULT; + ur = compat_ptr(results32.results); + PMEPRINFO("pme2_scan: Rx Rn for %d res\n", results32.num); + if (!results32.num) + return 0; + do { + completed_cmd = NULL; + ret = 0; + /* Check to see if any results */ + spin_lock(&session->completed_commands_lock); + if (!list_empty(&session->completed_commands)) { + /* Move to a different list */ + PMEPRINFO("pme2_scan: Pop response\n"); + completed_cmd = list_first_entry( + &session->completed_commands, + struct cmd_token, + completed_list); + list_del(&completed_cmd->completed_list); + session->completed_count--; + } + spin_unlock(&session->completed_commands_lock); + if (completed_cmd) { + struct compat_pme_scan_result l_result32; + struct pme_scan_result result; + + if (copy_from_user(&l_result32, ur+i, + sizeof(l_result32))) + return -EFAULT; + compat_to_scan_result(&result, &l_result32); + ret = process_completed_token(fp, completed_cmd, + &result); + scan_result_to_compat(&l_result32, &result); + ret = copy_to_user(ur+i, &l_result32, + sizeof(l_result32)); + if (!ret) + i++; + } + } while (!ret && completed_cmd && (i != results32.num)); + + if (i != results32.num) { + PMEPRINFO("pme2_scan: Only filled %d responses\n", i); + results32.num = i; + PMEPRINFO("pme2_scan: results32.num = %d\n", + results32.num); + if (copy_to_user(compat_ptr(arg), &results32, + sizeof(struct pme_scan_results))) { + pr_err("Error copying to user data\n"); + return -EFAULT; + } + } + return ret; + } + break; +#endif /* CONFIG_COMPAT */ + + default: + pr_err("UNKNOWN IOCTL cmd 0x%x\n", cmd); + return -EINVAL; + break; + } + + return ret; +} + +static const struct file_operations fsl_pme2_scan_fops = { + .owner = THIS_MODULE, + .open = fsl_pme2_scan_open, + .release = fsl_pme2_scan_close, + .poll = fsl_pme2_scan_poll, + .unlocked_ioctl = fsl_pme2_scan_ioctl, +#ifdef CONFIG_COMPAT + .compat_ioctl = fsl_pme2_scan_ioctl, +#endif +}; + +static struct miscdevice fsl_pme2_scan_dev = { + .minor = MISC_DYNAMIC_MINOR, + .name = PME_DEV_SCAN_NODE, + .fops = &fsl_pme2_scan_fops +}; + +static int __init fsl_pme2_scan_init(void) +{ + int err = 0; + + pr_info("Freescale pme2 scan driver\n"); + err = misc_register(&fsl_pme2_scan_dev); + if (err) { + pr_err("fsl-pme2-scan: cannot register device\n"); + return err; + } + pr_info("fsl-pme2-scan: device %s registered\n", + fsl_pme2_scan_dev.name); + return 0; +} + +static void __exit fsl_pme2_scan_exit(void) +{ + int err = misc_deregister(&fsl_pme2_scan_dev); + if (err) + pr_err("fsl-pme2-scan: Failed to deregister device %s, " + "code %d\n", fsl_pme2_scan_dev.name, err); + pr_info("fsl-pme2-scan: device %s deregistered\n", + fsl_pme2_scan_dev.name); +} + +module_init(fsl_pme2_scan_init); +module_exit(fsl_pme2_scan_exit); + +MODULE_AUTHOR("Jeffrey Ladouceur "); +MODULE_LICENSE("Dual BSD/GPL"); +MODULE_DESCRIPTION("Freescale PME2 scan driver"); --- linux-3.13.0.orig/drivers/staging/fsl_pme2/pme2_sys.h +++ linux-3.13.0/drivers/staging/fsl_pme2/pme2_sys.h @@ -0,0 +1,64 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +int pme2_create_sysfs_dev_files(struct platform_device *ofdev); +void pme2_remove_sysfs_dev_files(struct platform_device *ofdev); +void accumulator_update_interval(u32 interval); + --- linux-3.13.0.orig/drivers/staging/fsl_pme2/pme2_sysfs.c +++ linux-3.13.0/drivers/staging/fsl_pme2/pme2_sysfs.c @@ -0,0 +1,565 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 "pme2_regs.h" +#include "pme2_private.h" + +#define MAX_ACCUMULATOR_INTERVAL 10000 +extern u32 pme_stat_interval; + +/* The pme sysfs contains the following types of attributes + * 1) root level: general pme confuration + * 2) bsc: bufferpool size configuration + * 3) stats: pme statistics + */ +static ssize_t pme_store(struct device *dev, struct device_attribute *dev_attr, + const char *buf, size_t count, enum pme_attr attr) +{ + unsigned long val; + size_t ret; + if (strict_strtoul(buf, 0, &val)) { + dev_dbg(dev, "invalid input %s\n",buf); + return -EINVAL; + } + ret = pme_attr_set(attr, val); + if (ret) { + dev_err(dev, "attr_set err attr=%u, val=%lu\n", attr, val); + return ret; + } + return count; +} + +static ssize_t pme_show(struct device *dev, struct device_attribute *dev_attr, + char *buf, enum pme_attr attr, const char *fmt) +{ + u32 data; + int ret; + + ret = pme_attr_get(attr, &data); + if (!ret) + return snprintf(buf, PAGE_SIZE, fmt, data); + return ret; +} + + +static ssize_t pme_stat_show(struct device *dev, + struct device_attribute *dev_attr, char *buf, enum pme_attr attr) +{ + u64 data = 0; + int ret = 0; + + ret = pme_stat_get(attr, &data, 0); + if (!ret) + return snprintf(buf, PAGE_SIZE, "%llu\n", data); + else + return ret; +} + +static ssize_t pme_stat_store(struct device *dev, + struct device_attribute *dev_attr, const char *buf, + size_t count, enum pme_attr attr) +{ + unsigned long val; + u64 data = 0; + size_t ret = 0; + if (strict_strtoul(buf, 0, &val)) { + pr_err("pme: invalid input %s\n", buf); + return -EINVAL; + } + if (val) { + pr_err("pme: invalid input %s\n", buf); + return -EINVAL; + } + ret = pme_stat_get(attr, &data, 1); + return count; +} + + +#define PME_SYSFS_ATTR(pme_attr, perm, showhex) \ +static ssize_t pme_store_##pme_attr(struct device *dev, \ + struct device_attribute *attr, const char *buf, size_t count) \ +{ \ + return pme_store(dev, attr, buf, count, pme_attr_##pme_attr);\ +} \ +static ssize_t pme_show_##pme_attr(struct device *dev, \ + struct device_attribute *attr, char *buf) \ +{ \ + return pme_show(dev, attr, buf, pme_attr_##pme_attr, showhex);\ +} \ +static DEVICE_ATTR( pme_attr, perm, pme_show_##pme_attr, pme_store_##pme_attr); + + +#define PME_SYSFS_STAT_ATTR(pme_attr, perm) \ +static ssize_t pme_store_##pme_attr(struct device *dev, \ + struct device_attribute *attr, const char *buf, size_t count) \ +{ \ + return pme_stat_store(dev, attr, buf, count, pme_attr_##pme_attr);\ +} \ +static ssize_t pme_show_##pme_attr(struct device *dev, \ + struct device_attribute *attr, char *buf) \ +{ \ + return pme_stat_show(dev, attr, buf, pme_attr_##pme_attr);\ +} \ +static DEVICE_ATTR(pme_attr, perm, pme_show_##pme_attr, pme_store_##pme_attr); + + +#define PME_SYSFS_BSC_ATTR(bsc_id, perm, showhex) \ +static ssize_t pme_store_bsc_##bsc_id(struct device *dev,\ + struct device_attribute *attr, const char *buf, size_t count) \ +{ \ + return pme_store(dev, attr, buf, count, pme_attr_bsc(bsc_id));\ +} \ +static ssize_t pme_show_bsc_##bsc_id(struct device *dev,\ + struct device_attribute *attr, char *buf) \ +{ \ + return pme_show(dev, attr, buf, pme_attr_bsc(bsc_id), showhex);\ +} \ +static DEVICE_ATTR(bsc_id, perm, pme_show_bsc_##bsc_id, \ + pme_store_bsc_##bsc_id); + +/* Statistics Ctrl: update interval */ +static ssize_t pme_store_update_interval(struct device *dev, + struct device_attribute *attr, const char *buf, size_t count) +{ + unsigned long val; + + if (!pme2_have_control()) { + PMEPRERR("not on ctrl-plane\n"); + return -ENODEV; + } + if (strict_strtoul(buf, 0, &val)) { + dev_info(dev, "invalid input %s\n", buf); + return -EINVAL; + } + if (val > MAX_ACCUMULATOR_INTERVAL) { + dev_info(dev, "invalid input %s\n", buf); + return -ERANGE; + } + accumulator_update_interval(val); + return count; +} +static ssize_t pme_show_update_interval(struct device *dev, + struct device_attribute *attr, char *buf) +{ + if (!pme2_have_control()) + return -ENODEV; + return snprintf(buf, PAGE_SIZE, "%u\n", pme_stat_interval); +} + +#define FMT_0HEX "0x%08x\n" +#define FMT_HEX "0x%x\n" +#define FMT_DEC "%u\n" +#define PRIV_RO S_IRUSR +#define PRIV_RW (S_IRUSR | S_IWUSR) + +/* Register Interfaces */ +/* read-write; */ +PME_SYSFS_ATTR(efqc_int, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(sw_db, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(dmcr, PRIV_RW, FMT_0HEX); +PME_SYSFS_ATTR(smcr, PRIV_RW, FMT_0HEX); +PME_SYSFS_ATTR(famcr, PRIV_RW, FMT_0HEX); +PME_SYSFS_ATTR(kvlts, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(max_chain_length, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(pattern_range_counter_idx, PRIV_RW, FMT_0HEX); +PME_SYSFS_ATTR(pattern_range_counter_mask, PRIV_RW, FMT_0HEX); +PME_SYSFS_ATTR(max_allowed_test_line_per_pattern, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(max_pattern_matches_per_sui, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(max_pattern_evaluations_per_sui, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(report_length_limit, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(end_of_simple_sui_report, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(aim, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(end_of_sui_reaction_ptr, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(sre_pscl, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(sre_max_block_num, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(sre_max_instruction_limit, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(esr, PRIV_RW, FMT_0HEX); +PME_SYSFS_ATTR(pehd, PRIV_RW, FMT_0HEX); +PME_SYSFS_ATTR(ecc1bes, PRIV_RW, FMT_0HEX); +PME_SYSFS_ATTR(ecc2bes, PRIV_RW, FMT_0HEX); +PME_SYSFS_ATTR(miace, PRIV_RW, FMT_0HEX); +PME_SYSFS_ATTR(miacr, PRIV_RW, FMT_0HEX); +PME_SYSFS_ATTR(cdcr, PRIV_RW, FMT_0HEX); +PME_SYSFS_ATTR(pmtr, PRIV_RW, FMT_DEC); + +/* read-only; */ +PME_SYSFS_ATTR(max_pdsr_index, PRIV_RO, FMT_DEC); +PME_SYSFS_ATTR(sre_context_size, PRIV_RO, FMT_DEC); +PME_SYSFS_ATTR(sre_rule_num, PRIV_RO, FMT_DEC); +PME_SYSFS_ATTR(sre_session_ctx_num, PRIV_RO, FMT_DEC); +PME_SYSFS_ATTR(sre_max_index_size, PRIV_RO, FMT_DEC); +PME_SYSFS_ATTR(sre_max_offset_ctrl, PRIV_RO, FMT_DEC); +PME_SYSFS_ATTR(src_id, PRIV_RO, FMT_DEC); +PME_SYSFS_ATTR(liodnr, PRIV_RO, FMT_DEC); +PME_SYSFS_ATTR(rev1, PRIV_RO, FMT_0HEX); +PME_SYSFS_ATTR(rev2, PRIV_RO, FMT_0HEX); +PME_SYSFS_ATTR(isr, PRIV_RO, FMT_0HEX); +PME_SYSFS_ATTR(ecr0, PRIV_RO, FMT_0HEX); +PME_SYSFS_ATTR(ecr1, PRIV_RO, FMT_0HEX); +PME_SYSFS_ATTR(pmstat, PRIV_RO, FMT_0HEX); +PME_SYSFS_ATTR(eccaddr, PRIV_RO, FMT_0HEX); +PME_SYSFS_ATTR(ecccode, PRIV_RO, FMT_0HEX); +PME_SYSFS_ATTR(faconf, PRIV_RO, FMT_0HEX); +PME_SYSFS_ATTR(pdsrbah, PRIV_RO, FMT_0HEX); +PME_SYSFS_ATTR(pdsrbal, PRIV_RO, FMT_0HEX); +PME_SYSFS_ATTR(scbarh, PRIV_RO, FMT_0HEX); +PME_SYSFS_ATTR(scbarl, PRIV_RO, FMT_0HEX); + + +/* Buffer Pool Size Configuration */ +PME_SYSFS_BSC_ATTR(0, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(1, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(2, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(3, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(4, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(5, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(6, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(7, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(8, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(9, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(10, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(11, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(12, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(13, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(14, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(15, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(16, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(17, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(18, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(19, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(20, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(21, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(22, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(23, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(24, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(25, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(26, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(27, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(28, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(29, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(30, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(31, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(32, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(33, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(34, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(35, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(36, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(37, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(38, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(39, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(40, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(41, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(42, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(43, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(44, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(45, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(46, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(47, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(48, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(49, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(50, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(51, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(52, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(53, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(54, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(55, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(56, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(57, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(58, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(59, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(60, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(61, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(62, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(63, PRIV_RW, FMT_DEC); + +/* Stats Counters*/ +PME_SYSFS_STAT_ATTR(trunci, PRIV_RW); +PME_SYSFS_STAT_ATTR(rbc, PRIV_RW); +PME_SYSFS_STAT_ATTR(tbt0ecc1ec, PRIV_RW); +PME_SYSFS_STAT_ATTR(tbt1ecc1ec, PRIV_RW); +PME_SYSFS_STAT_ATTR(vlt0ecc1ec, PRIV_RW); +PME_SYSFS_STAT_ATTR(vlt1ecc1ec, PRIV_RW); +PME_SYSFS_STAT_ATTR(cmecc1ec, PRIV_RW); +PME_SYSFS_STAT_ATTR(dxcmecc1ec, PRIV_RW); +PME_SYSFS_STAT_ATTR(dxemecc1ec, PRIV_RW); +PME_SYSFS_STAT_ATTR(stnib, PRIV_RW); +PME_SYSFS_STAT_ATTR(stnis, PRIV_RW); +PME_SYSFS_STAT_ATTR(stnth1, PRIV_RW); +PME_SYSFS_STAT_ATTR(stnth2, PRIV_RW); +PME_SYSFS_STAT_ATTR(stnthv, PRIV_RW); +PME_SYSFS_STAT_ATTR(stnths, PRIV_RW); +PME_SYSFS_STAT_ATTR(stnch, PRIV_RW); +PME_SYSFS_STAT_ATTR(stnpm, PRIV_RW); +PME_SYSFS_STAT_ATTR(stns1m, PRIV_RW); +PME_SYSFS_STAT_ATTR(stnpmr, PRIV_RW); +PME_SYSFS_STAT_ATTR(stndsr, PRIV_RW); +PME_SYSFS_STAT_ATTR(stnesr, PRIV_RW); +PME_SYSFS_STAT_ATTR(stns1r, PRIV_RW); +PME_SYSFS_STAT_ATTR(stnob, PRIV_RW); +PME_SYSFS_STAT_ATTR(mia_byc, PRIV_RW); +PME_SYSFS_STAT_ATTR(mia_blc, PRIV_RW); + +/* Stats Control */ +PME_SYSFS_ATTR(tbt0ecc1th, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(tbt1ecc1th, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(vlt0ecc1th, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(vlt1ecc1th, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(cmecc1th, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(dxcmecc1th, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(dxemecc1th, PRIV_RW, FMT_DEC); + +static DEVICE_ATTR(update_interval, (S_IRUSR | S_IWUSR), + pme_show_update_interval, pme_store_update_interval); + +static struct attribute *pme_dev_bsc_attributes[] = { + &dev_attr_0.attr, + &dev_attr_1.attr, + &dev_attr_2.attr, + &dev_attr_3.attr, + &dev_attr_4.attr, + &dev_attr_5.attr, + &dev_attr_6.attr, + &dev_attr_7.attr, + &dev_attr_8.attr, + &dev_attr_9.attr, + &dev_attr_10.attr, + &dev_attr_11.attr, + &dev_attr_12.attr, + &dev_attr_13.attr, + &dev_attr_14.attr, + &dev_attr_15.attr, + &dev_attr_16.attr, + &dev_attr_17.attr, + &dev_attr_18.attr, + &dev_attr_19.attr, + &dev_attr_20.attr, + &dev_attr_21.attr, + &dev_attr_22.attr, + &dev_attr_23.attr, + &dev_attr_24.attr, + &dev_attr_25.attr, + &dev_attr_26.attr, + &dev_attr_27.attr, + &dev_attr_28.attr, + &dev_attr_29.attr, + &dev_attr_30.attr, + &dev_attr_31.attr, + &dev_attr_32.attr, + &dev_attr_33.attr, + &dev_attr_34.attr, + &dev_attr_35.attr, + &dev_attr_36.attr, + &dev_attr_37.attr, + &dev_attr_38.attr, + &dev_attr_39.attr, + &dev_attr_40.attr, + &dev_attr_41.attr, + &dev_attr_42.attr, + &dev_attr_43.attr, + &dev_attr_44.attr, + &dev_attr_45.attr, + &dev_attr_46.attr, + &dev_attr_47.attr, + &dev_attr_48.attr, + &dev_attr_49.attr, + &dev_attr_50.attr, + &dev_attr_51.attr, + &dev_attr_52.attr, + &dev_attr_53.attr, + &dev_attr_54.attr, + &dev_attr_55.attr, + &dev_attr_56.attr, + &dev_attr_57.attr, + &dev_attr_58.attr, + &dev_attr_59.attr, + &dev_attr_60.attr, + &dev_attr_61.attr, + &dev_attr_62.attr, + &dev_attr_63.attr, + NULL +}; + +static struct attribute *pme_dev_attributes[] = { + &dev_attr_efqc_int.attr, + &dev_attr_sw_db.attr, + &dev_attr_dmcr.attr, + &dev_attr_smcr.attr, + &dev_attr_famcr.attr, + &dev_attr_kvlts.attr, + &dev_attr_max_chain_length.attr, + &dev_attr_pattern_range_counter_idx.attr, + &dev_attr_pattern_range_counter_mask.attr, + &dev_attr_max_allowed_test_line_per_pattern.attr, + &dev_attr_max_pdsr_index.attr, + &dev_attr_max_pattern_matches_per_sui.attr, + &dev_attr_max_pattern_evaluations_per_sui.attr, + &dev_attr_report_length_limit.attr, + &dev_attr_end_of_simple_sui_report.attr, + &dev_attr_aim.attr, + &dev_attr_sre_context_size.attr, + &dev_attr_sre_rule_num.attr, + &dev_attr_sre_session_ctx_num.attr, + &dev_attr_end_of_sui_reaction_ptr.attr, + &dev_attr_sre_pscl.attr, + &dev_attr_sre_max_block_num.attr, + &dev_attr_sre_max_instruction_limit.attr, + &dev_attr_sre_max_index_size.attr, + &dev_attr_sre_max_offset_ctrl.attr, + &dev_attr_src_id.attr, + &dev_attr_liodnr.attr, + &dev_attr_rev1.attr, + &dev_attr_rev2.attr, + &dev_attr_isr.attr, + &dev_attr_ecr0.attr, + &dev_attr_ecr1.attr, + &dev_attr_esr.attr, + &dev_attr_pmstat.attr, + &dev_attr_pehd.attr, + &dev_attr_ecc1bes.attr, + &dev_attr_ecc2bes.attr, + &dev_attr_eccaddr.attr, + &dev_attr_ecccode.attr, + &dev_attr_miace.attr, + &dev_attr_miacr.attr, + &dev_attr_cdcr.attr, + &dev_attr_pmtr.attr, + &dev_attr_faconf.attr, + &dev_attr_pdsrbah.attr, + &dev_attr_pdsrbal.attr, + &dev_attr_scbarh.attr, + &dev_attr_scbarl.attr, + NULL +}; + +static struct attribute *pme_dev_stats_counter_attributes[] = { + &dev_attr_trunci.attr, + &dev_attr_rbc.attr, + &dev_attr_tbt0ecc1ec.attr, + &dev_attr_tbt1ecc1ec.attr, + &dev_attr_vlt0ecc1ec.attr, + &dev_attr_vlt1ecc1ec.attr, + &dev_attr_cmecc1ec.attr, + &dev_attr_dxcmecc1ec.attr, + &dev_attr_dxemecc1ec.attr, + &dev_attr_stnib.attr, + &dev_attr_stnis.attr, + &dev_attr_stnth1.attr, + &dev_attr_stnth2.attr, + &dev_attr_stnthv.attr, + &dev_attr_stnths.attr, + &dev_attr_stnch.attr, + &dev_attr_stnpm.attr, + &dev_attr_stns1m.attr, + &dev_attr_stnpmr.attr, + &dev_attr_stndsr.attr, + &dev_attr_stnesr.attr, + &dev_attr_stns1r.attr, + &dev_attr_stnob.attr, + &dev_attr_mia_byc.attr, + &dev_attr_mia_blc.attr, + NULL +}; + +static struct attribute *pme_dev_stats_ctrl_attributes[] = { + &dev_attr_update_interval.attr, + &dev_attr_tbt0ecc1th.attr, + &dev_attr_tbt1ecc1th.attr, + &dev_attr_vlt0ecc1th.attr, + &dev_attr_vlt1ecc1th.attr, + &dev_attr_cmecc1th.attr, + &dev_attr_dxcmecc1th.attr, + &dev_attr_dxemecc1th.attr, + NULL +}; + +/* root level */ +static const struct attribute_group pme_dev_attr_grp = { + .name = NULL, /* put in device directory */ + .attrs = pme_dev_attributes +}; + +/* root/bsc */ +static struct attribute_group pme_dev_bsc_attr_grp = { + .name = "bsc", + .attrs = pme_dev_bsc_attributes +}; + +/* root/stats */ +static struct attribute_group pme_dev_stats_counters_attr_grp = { + .name = "stats", + .attrs = pme_dev_stats_counter_attributes +}; + +/* root/stats_ctrl */ +static struct attribute_group pme_dev_stats_ctrl_attr_grp = { + .name = "stats_ctrl", + .attrs = pme_dev_stats_ctrl_attributes +}; + + +int pme2_create_sysfs_dev_files(struct platform_device *ofdev) +{ + int ret; + + ret = sysfs_create_group(&ofdev->dev.kobj, &pme_dev_attr_grp); + if (ret) + goto done; + ret = sysfs_create_group(&ofdev->dev.kobj, &pme_dev_bsc_attr_grp); + if (ret) + goto del_group_1; + ret = sysfs_create_group(&ofdev->dev.kobj, &pme_dev_stats_counters_attr_grp); + if (ret) + goto del_group_2; + ret = sysfs_create_group(&ofdev->dev.kobj, &pme_dev_stats_ctrl_attr_grp); + if (ret) + goto del_group_3; + goto done; +del_group_3: + sysfs_remove_group(&ofdev->dev.kobj, &pme_dev_stats_counters_attr_grp); +del_group_2: + sysfs_remove_group(&ofdev->dev.kobj, &pme_dev_bsc_attr_grp); +del_group_1: + sysfs_remove_group(&ofdev->dev.kobj, &pme_dev_attr_grp); +done: + if (ret) + dev_err(&ofdev->dev, + "Cannot create dev attributes ret=%d\n", ret); + return ret; +} + +void pme2_remove_sysfs_dev_files(struct platform_device *ofdev) +{ + sysfs_remove_group(&ofdev->dev.kobj, &pme_dev_stats_ctrl_attr_grp); + sysfs_remove_group(&ofdev->dev.kobj, &pme_dev_stats_counters_attr_grp); + sysfs_remove_group(&ofdev->dev.kobj, &pme_dev_bsc_attr_grp); + sysfs_remove_group(&ofdev->dev.kobj, &pme_dev_attr_grp); +} + + --- linux-3.13.0.orig/drivers/staging/fsl_pme2/pme2_test.h +++ linux-3.13.0/drivers/staging/fsl_pme2/pme2_test.h @@ -0,0 +1,74 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 "pme2_sys.h" + +static inline void __hexdump(unsigned long start, unsigned long end, + unsigned long p, size_t sz, const unsigned char *c) +{ + while (start < end) { + unsigned int pos = 0; + char buf[64]; + int nl = 0; + pos += sprintf(buf + pos, "%08lx: ", start); + do { + if ((start < p) || (start >= (p + sz))) + pos += sprintf(buf + pos, ".."); + else + pos += sprintf(buf + pos, "%02x", *(c++)); + if (!(++start & 15)) { + buf[pos++] = '\n'; + nl = 1; + } else { + nl = 0; + if(!(start & 1)) + buf[pos++] = ' '; + if(!(start & 3)) + buf[pos++] = ' '; + } + } while (start & 15); + if (!nl) + buf[pos++] = '\n'; + buf[pos] = '\0'; + pr_info("%s", buf); + } +} +static inline void hexdump(const void *ptr, size_t sz) +{ + unsigned long p = (unsigned long)ptr; + unsigned long start = p & ~(unsigned long)15; + unsigned long end = (p + sz + 15) & ~(unsigned long)15; + const unsigned char *c = ptr; + __hexdump(start, end, p, sz, c); +} + +int pme2_sample_db(void); +int pme2_clear_sample_db(void); --- linux-3.13.0.orig/drivers/staging/fsl_pme2/pme2_test_high.c +++ linux-3.13.0/drivers/staging/fsl_pme2/pme2_test_high.c @@ -0,0 +1,238 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 "pme2_test.h" + +MODULE_AUTHOR("Geoff Thorpe"); +MODULE_LICENSE("Dual BSD/GPL"); +MODULE_DESCRIPTION("FSL PME2 (p4080) high-level self-test"); + +/* Default Flow Context State */ +static u8 fl_ctx_exp[]={ + 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 +}; + +void scan_cb(struct pme_ctx *ctx, const struct qm_fd *fd, + struct pme_ctx_token *token) +{ + hexdump(fd, sizeof(*fd)); +} + +struct ctrl_op { + struct pme_ctx_ctrl_token ctx_ctr; + struct completion cb_done; + enum pme_status cmd_status; + u8 res_flag; +}; + +static void ctrl_cb(struct pme_ctx *ctx, const struct qm_fd *fd, + struct pme_ctx_ctrl_token *token) +{ + struct ctrl_op *ctrl = (struct ctrl_op *)token; + pr_info("pme2_test_high: ctrl_cb() invoked, fd;!\n"); + ctrl->cmd_status = pme_fd_res_status(fd); + ctrl->res_flag = pme_fd_res_flags(fd); + hexdump(fd, sizeof(*fd)); + complete(&ctrl->cb_done); +} + + +#define POST_CTRL(val) \ +do { \ + if (ret) \ + val = -1;\ + else if (pme_ctx_is_dead(&ctx))\ + val = -1;\ + else if (ctx_ctrl.cmd_status)\ + val = -1;\ + else if (ctx_ctrl.res_flag)\ + val = -1;\ +} while (0) + +void pme2_test_high(void) +{ + int post_ctrl = 0; + struct pme_flow flow; + struct qm_fqd_stashing stashing; + struct pme_ctx ctx = { + .cb = scan_cb + }; + int ret; + struct ctrl_op ctx_ctrl = { + .ctx_ctr.cb = ctrl_cb, + .cmd_status = 0, + .res_flag = 0 + }; + struct cpumask backup_mask = current->cpus_allowed; + struct cpumask new_mask = *qman_affine_cpus(); + + pr_info("PME2: high-level test starting\n"); + + cpumask_and(&new_mask, &new_mask, bman_affine_cpus()); + ret = set_cpus_allowed_ptr(current, &new_mask); + if (ret) { + post_ctrl = -1; + pr_info("PME2: test high: can't set cpumask\n"); + goto done; + } + + pme_sw_flow_init(&flow); + init_completion(&ctx_ctrl.cb_done); + ret = pme_ctx_init(&ctx, PME_CTX_FLAG_LOCAL, 0, 4, 4, 0, NULL); + POST_CTRL(post_ctrl); + if (post_ctrl) + goto restore_mask; + + /* enable the context */ + pme_ctx_enable(&ctx); + pr_info("PME2: pme_ctx_enable done\n"); + ret = pme_ctx_ctrl_update_flow(&ctx, PME_CTX_OP_WAIT | PME_CMD_FCW_ALL, + &flow, &ctx_ctrl.ctx_ctr); + pr_info("PME2: pme_ctx_ctrl_update_flow done\n"); + wait_for_completion(&ctx_ctrl.cb_done); + POST_CTRL(post_ctrl); + if (post_ctrl) + goto disable_ctx; + /* read back flow settings */ + ret = pme_ctx_ctrl_read_flow(&ctx, PME_CTX_OP_WAIT, &flow, + &ctx_ctrl.ctx_ctr); + pr_info("PME2: pme_ctx_ctrl_read_flow done\n"); + wait_for_completion(&ctx_ctrl.cb_done); + POST_CTRL(post_ctrl); + if (post_ctrl) + goto disable_ctx; + if (memcmp(&flow, fl_ctx_exp, sizeof(flow))) { + pr_info("Default Flow Context Read FAIL\n"); + pr_info("Expected:\n"); + hexdump(fl_ctx_exp, sizeof(fl_ctx_exp)); + pr_info("Received:\n"); + hexdump(&flow, sizeof(flow)); + post_ctrl = -1; + goto disable_ctx; + } else + pr_info("Default Flow Context Read OK\n"); + /* start a NOP */ + ret = pme_ctx_ctrl_nop(&ctx, 0, &ctx_ctrl.ctx_ctr); + pr_info("PME2: pme_ctx_ctrl_nop done\n"); + wait_for_completion(&ctx_ctrl.cb_done); + POST_CTRL(post_ctrl); + if (post_ctrl) + goto disable_ctx; + /* start an update to add residue to the context */ + flow.ren = 1; + ret = pme_ctx_ctrl_update_flow(&ctx, PME_CTX_OP_WAIT | PME_CMD_FCW_RES, + &flow, &ctx_ctrl.ctx_ctr); + pr_info("PME2: pme_ctx_ctrl_update_flow done\n"); + wait_for_completion(&ctx_ctrl.cb_done); + POST_CTRL(post_ctrl); + if (post_ctrl) + goto disable_ctx; + /* start a blocking disable */ + ret = pme_ctx_disable(&ctx, PME_CTX_OP_WAIT, &ctx_ctrl.ctx_ctr); + if (ret < 1) { + post_ctrl = -1; + goto finish_ctx; + } + wait_for_completion(&ctx_ctrl.cb_done); + /* do some reconfiguration */ + ret = pme_ctx_reconfigure_tx(&ctx, 63, 7); + if (ret) { + post_ctrl = -1; + goto finish_ctx; + } + stashing.exclusive = 0; + stashing.annotation_cl = 0; + stashing.data_cl = 2; + stashing.context_cl = 2; + ret = pme_ctx_reconfigure_rx(&ctx, 7, 0, &stashing); + if (ret) { + post_ctrl = -1; + goto finish_ctx; + } + /* reenable */ + ret = pme_ctx_enable(&ctx); + if (ret) { + post_ctrl = -1; + goto finish_ctx; + } + /* read back flow settings */ + ret = pme_ctx_ctrl_read_flow(&ctx, + PME_CTX_OP_WAIT | PME_CTX_OP_WAIT_INT | PME_CMD_FCW_RES, &flow, + &ctx_ctrl.ctx_ctr); + pr_info("PME2: pme_ctx_ctrl_read_flow done\n"); + wait_for_completion(&ctx_ctrl.cb_done); + POST_CTRL(post_ctrl); + if (post_ctrl) + goto disable_ctx; + /* blocking NOP */ + ret = pme_ctx_ctrl_nop(&ctx, PME_CTX_OP_WAIT | PME_CTX_OP_WAIT_INT, + &ctx_ctrl.ctx_ctr); + pr_info("PME2: pme_ctx_ctrl_nop done\n"); + wait_for_completion(&ctx_ctrl.cb_done); + POST_CTRL(post_ctrl); + /* Disable, and done */ +disable_ctx: + ret = pme_ctx_disable(&ctx, PME_CTX_OP_WAIT, &ctx_ctrl.ctx_ctr); + BUG_ON(ret < 1); + wait_for_completion(&ctx_ctrl.cb_done); +finish_ctx: + pme_ctx_finish(&ctx); +restore_mask: + ret = set_cpus_allowed_ptr(current, &backup_mask); + if (ret) { + pr_err("PME2 test high: can't restore cpumask"); + post_ctrl = -1; + } +done: + if (post_ctrl) + pr_info("PME2: high-level test failed\n"); + else + pr_info("PME2: high-level test passed\n"); +} + +static int pme2_test_high_init(void) +{ + int big_loop = 2; + while (big_loop--) + pme2_test_high(); + return 0; +} + +static void pme2_test_high_exit(void) +{ +} + +module_init(pme2_test_high_init); +module_exit(pme2_test_high_exit); + --- linux-3.13.0.orig/drivers/staging/fsl_pme2/pme2_test_scan.c +++ linux-3.13.0/drivers/staging/fsl_pme2/pme2_test_scan.c @@ -0,0 +1,653 @@ +/* Copyright 2009-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 "pme2_test.h" + +enum scan_ctrl_mode { + no_scan = 0, + do_scan = 1, +}; + +enum db_ctrl_mode { + create_destroy = 0, + create = 1, + destroy = 2, + nothing = 3 +}; + +MODULE_AUTHOR("Jeffrey Ladouceur"); +MODULE_LICENSE("Dual BSD/GPL"); +MODULE_DESCRIPTION("PME scan testing"); + +static enum db_ctrl_mode db_ctrl; +module_param(db_ctrl, uint, 0644); +MODULE_PARM_DESC(db_ctrl, "PME Database control"); + +static enum scan_ctrl_mode scan_ctrl = 1; +module_param(scan_ctrl, uint, 0644); +MODULE_PARM_DESC(scan_ctrl, "Scan control"); + +static u8 scan_result_direct_mode_inc_mode[] = { + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00 +}; + +static u8 fl_ctx_exp[] = { + 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 +}; + +/* same again with 'sos' bit cleared */ +static u8 fl_ctx_exp_post_scan[] = { + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 +}; + +struct scan_ctx { + struct pme_ctx base_ctx; + struct qm_fd result_fd; +}; + +struct ctrl_op { + struct pme_ctx_ctrl_token ctx_ctr; + struct completion cb_done; + enum pme_status cmd_status; + u8 res_flag; +}; + +static void ctrl_cb(struct pme_ctx *ctx, const struct qm_fd *fd, + struct pme_ctx_ctrl_token *token) +{ + struct ctrl_op *ctrl = (struct ctrl_op *)token; + ctrl->cmd_status = pme_fd_res_status(fd); + ctrl->res_flag = pme_fd_res_flags(fd) & PME_STATUS_UNRELIABLE; + /* hexdump(fd, sizeof(*fd)); */ + complete(&ctrl->cb_done); +} + +static DECLARE_COMPLETION(scan_comp); + +static void scan_cb(struct pme_ctx *ctx, const struct qm_fd *fd, + struct pme_ctx_token *ctx_token) +{ + struct scan_ctx *my_ctx = (struct scan_ctx *)ctx; + memcpy(&my_ctx->result_fd, fd, sizeof(*fd)); + complete(&scan_comp); +} + +#ifdef CONFIG_FSL_PME2_TEST_SCAN_WITH_BPID + +static struct bman_pool *pool; +static u32 pme_bpid; +static void *bman_buffers_virt_base; +static dma_addr_t bman_buffers_phys_base; + +static void release_buffer(dma_addr_t addr) +{ + struct bm_buffer bufs_in; + bm_buffer_set64(&bufs_in, addr); + if (bman_release(pool, &bufs_in, 1, BMAN_RELEASE_FLAG_WAIT)) + panic("bman_release() failed\n"); +} + +static void empty_buffer(void) +{ + struct bm_buffer bufs_in; + int ret; + + do { + ret = bman_acquire(pool, &bufs_in, 1, 0); + } while (!ret); +} +#endif /*CONFIG_FSL_PME2_TEST_SCAN_WITH_BPID*/ + +static int scan_test_direct(int trunc, int use_bp) +{ + struct scan_ctx a_scan_ctx = { + .base_ctx = { + .cb = scan_cb + } + }; + struct ctrl_op ctx_ctrl = { + .ctx_ctr.cb = ctrl_cb, + .cmd_status = 0, + .res_flag = 0 + }; + struct qm_fd fd; + struct qm_sg_entry sg_table[2]; + int ret; + enum pme_status status; + struct pme_ctx_token token; + u8 *scan_result; + u32 scan_result_size; + u8 scan_data[] = { + 0x41, 0x42, 0x43, 0x44, 0x45 + }; + u8 result_data[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00 + }; + + init_completion(&ctx_ctrl.cb_done); + scan_result = scan_result_direct_mode_inc_mode; + scan_result_size = sizeof(scan_result_direct_mode_inc_mode); + + ret = pme_ctx_init(&a_scan_ctx.base_ctx, + PME_CTX_FLAG_DIRECT | PME_CTX_FLAG_LOCAL, + 0, 4, 4, 0, NULL); + if (ret) { + pr_err("pme scan test failed: 0x%x\n", ret); + return ret; + } + /* enable the context */ + ret = pme_ctx_enable(&a_scan_ctx.base_ctx); + if (ret) { + pr_err("pme scan test failed: 0x%x\n", ret); + goto ctx_finish; + } + + /* Do a pre-built output, scan with match test */ + /* Build a frame descriptor */ + memset(&fd, 0, sizeof(struct qm_fd)); + memset(&sg_table, 0, sizeof(sg_table)); + + if (trunc) { + fd.length20 = sizeof(scan_data); + qm_fd_addr_set64(&fd, pme_map(scan_data)); + } else { + /* build the result */ + qm_sg_entry_set64(&sg_table[0], pme_map(result_data)); + sg_table[0].length = sizeof(result_data); + qm_sg_entry_set64(&sg_table[1], pme_map(scan_data)); + sg_table[1].length = sizeof(scan_data); + sg_table[1].final = 1; + fd._format2 = qm_fd_compound; + qm_fd_addr_set64(&fd, pme_map(sg_table)); + } + + ret = pme_ctx_scan(&a_scan_ctx.base_ctx, 0, &fd, + PME_SCAN_ARGS(PME_CMD_SCAN_SR | PME_CMD_SCAN_E, 0, 0xff00), + &token); + if (ret) { + pr_err("pme scan test failed: 0x%x\n", ret); + goto ctx_disable; + } + wait_for_completion(&scan_comp); + + status = pme_fd_res_status(&a_scan_ctx.result_fd); + if (status) { + pr_err("pme scan test failed 0x%x\n", status); + goto ctx_disable; + } + if (trunc) { + int res_flag = pme_fd_res_flags(&a_scan_ctx.result_fd); + /* Check the response...expect truncation bit to be set */ + if (!(res_flag & PME_STATUS_TRUNCATED)) { + pr_err("pme scan test failed, expected truncation\n"); + goto ctx_disable; + } + } else { + if (memcmp(scan_result, result_data, scan_result_size) != 0) { + pr_err("pme scan test result not expected\n"); + hexdump(scan_result, scan_result_size); + pr_err("Received...\n"); + hexdump(result_data, sizeof(result_data)); + goto ctx_disable; + } + } + + ret = pme_ctx_disable(&a_scan_ctx.base_ctx, PME_CTX_OP_WAIT, NULL); + if (ret) { + pr_err("pme scan test failed: 0x%x\n", ret); + goto ctx_finish; + } + if (!use_bp) { + pme_ctx_finish(&a_scan_ctx.base_ctx); + return 0; + } + /* use buffer pool */ + /* Check with bman */ + /* reconfigure */ + +#ifdef CONFIG_FSL_PME2_TEST_SCAN_WITH_BPID + ret = pme_ctx_reconfigure_tx(&a_scan_ctx.base_ctx, pme_bpid, 5); + if (ret) { + pr_err("pme scan test failed: 0x%x\n", ret); + goto ctx_finish; + } + ret = pme_ctx_enable(&a_scan_ctx.base_ctx); + if (ret) { + pr_err("pme scan test failed: 0x%x\n", ret); + goto ctx_finish; + } + /* Do a pre-built output, scan with match test */ + /* Build a frame descriptor */ + memset(&fd, 0, sizeof(struct qm_fd)); + memset(&sg_table, 0, sizeof(sg_table)); + + /* build the result */ + /* result is all zero...use bman */ + qm_sg_entry_set64(&sg_table[1], pme_map(scan_data)); + sg_table[1].length = sizeof(scan_data); + sg_table[1].final = 1; + + fd._format2 = qm_fd_compound; + qm_fd_addr_set64(&fd, pme_map(sg_table)); + + ret = pme_ctx_scan(&a_scan_ctx.base_ctx, 0, &fd, + PME_SCAN_ARGS(PME_CMD_SCAN_SR | PME_CMD_SCAN_E, 0, 0xff00), + &token); + if (ret) { + pr_err("pme scan test failed: 0x%x\n", ret); + goto ctx_disable; + } + wait_for_completion(&scan_comp); + + status = pme_fd_res_status(&a_scan_ctx.result_fd); + if (status) { + pr_err("pme scan test failed 0x%x\n", status); + goto ctx_disable; + } + /* sg result should point to bman buffer */ + if (!qm_sg_entry_get64(&sg_table[0])) { + pr_err("pme scan test failed, sg result not bman buffer\n"); + goto ctx_disable; + } + if (memcmp(scan_result, bman_buffers_virt_base, scan_result_size) + != 0) { + pr_err("pme scan test not expected, Expected\n"); + hexdump(scan_result, scan_result_size); + pr_err("Received...\n"); + hexdump(bman_buffers_virt_base, scan_result_size); + release_buffer(qm_sg_entry_get64(&sg_table[0])); + goto ctx_disable; + } + release_buffer(qm_sg_entry_get64(&sg_table[0])); + ret = pme_ctx_disable(&a_scan_ctx.base_ctx, PME_CTX_OP_WAIT, NULL); + if (ret) { + pr_err("pme scan test failed: 0x%x\n", ret); + goto ctx_finish; + } + pme_ctx_finish(&a_scan_ctx.base_ctx); + return 0; +#endif + +/* failure path */ +ctx_disable: + ret = pme_ctx_disable(&a_scan_ctx.base_ctx, PME_CTX_OP_WAIT, NULL); +ctx_finish: + pme_ctx_finish(&a_scan_ctx.base_ctx); + return (!ret) ? -EINVAL : ret; +} + +static int scan_test_flow(void) +{ + struct pme_flow flow; + struct pme_flow rb_flow; + struct scan_ctx a_scan_ctx = { + .base_ctx = { + .cb = scan_cb + } + }; + struct ctrl_op ctx_ctrl = { + .ctx_ctr.cb = ctrl_cb, + .cmd_status = 0, + .res_flag = 0 + }; + struct qm_fd fd; + struct qm_sg_entry sg_table[2]; + int ret; + enum pme_status status; + struct pme_ctx_token token; + u8 *scan_result; + u32 scan_result_size; + u8 scan_data[] = { + 0x41, 0x42, 0x43, 0x44, 0x45 + }; + u8 result_data[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00 + }; + + pme_sw_flow_init(&flow); + init_completion(&ctx_ctrl.cb_done); + scan_result = scan_result_direct_mode_inc_mode; + scan_result_size = sizeof(scan_result_direct_mode_inc_mode); + + ret = pme_ctx_init(&a_scan_ctx.base_ctx, + PME_CTX_FLAG_LOCAL, 0, 4, 4, 0, NULL); + if (ret) { + pr_err("pme scan test failed: 0x%x\n", ret); + return ret; + } + /* enable the context */ + ret = pme_ctx_enable(&a_scan_ctx.base_ctx); + if (ret) { + pr_err("pme scan test failed: 0x%x\n", ret); + goto flow_ctx_finish; + } + ret = pme_ctx_ctrl_update_flow(&a_scan_ctx.base_ctx, + PME_CTX_OP_WAIT | PME_CMD_FCW_ALL, &flow, &ctx_ctrl.ctx_ctr); + if (ret) { + pr_err("pme scan test failed: 0x%x\n", ret); + goto flow_ctx_disable; + } + wait_for_completion(&ctx_ctrl.cb_done); + if (ctx_ctrl.cmd_status || ctx_ctrl.res_flag) { + pr_err("pme scan test failed: 0x%x\n", ret); + goto flow_ctx_disable; + } + /* read back flow settings */ + ret = pme_ctx_ctrl_read_flow(&a_scan_ctx.base_ctx, + PME_CTX_OP_WAIT, &rb_flow, &ctx_ctrl.ctx_ctr); + if (ret) { + pr_err("pme scan test failed: 0x%x\n", ret); + goto flow_ctx_disable; + } + wait_for_completion(&ctx_ctrl.cb_done); + if (ctx_ctrl.cmd_status || ctx_ctrl.res_flag) { + pr_err("pme scan test failed: 0x%x\n", ret); + goto flow_ctx_disable; + } + if (memcmp(&rb_flow, fl_ctx_exp, sizeof(rb_flow)) != 0) { + pr_err("pme scan test Flow Context Read FAIL\n"); + pr_err("Expected\n"); + hexdump(fl_ctx_exp, sizeof(fl_ctx_exp)); + pr_err("Received...\n"); + hexdump(&rb_flow, sizeof(rb_flow)); + goto flow_ctx_disable; + } + + /* Do a pre-built output, scan with match test */ + /* Build a frame descriptor */ + memset(&fd, 0, sizeof(struct qm_fd)); + memset(&sg_table, 0, sizeof(sg_table)); + + /* build the result */ + qm_sg_entry_set64(&sg_table[0], pme_map(result_data)); + sg_table[0].length = sizeof(result_data); + qm_sg_entry_set64(&sg_table[1], pme_map(scan_data)); + sg_table[1].length = sizeof(scan_data); + sg_table[1].final = 1; + + fd._format2 = qm_fd_compound; + qm_fd_addr_set64(&fd, pme_map(sg_table)); + + ret = pme_ctx_scan(&a_scan_ctx.base_ctx, 0, &fd, + PME_SCAN_ARGS(PME_CMD_SCAN_SR | PME_CMD_SCAN_E, 0, 0xff00), + &token); + if (ret) { + pr_err("pme scan test failed: 0x%x\n", ret); + goto flow_ctx_disable; + } + wait_for_completion(&scan_comp); + + status = pme_fd_res_status(&a_scan_ctx.result_fd); + if (status) { + pr_err("pme scan test failed 0x%x\n", status); + goto flow_ctx_disable; + } + + if (memcmp(scan_result, result_data, scan_result_size) != 0) { + pr_err("pme scan test result not expected\n"); + hexdump(scan_result, scan_result_size); + pr_err("Received...\n"); + hexdump(result_data, sizeof(result_data)); + goto flow_ctx_disable; + } + + /* read back flow settings */ + ret = pme_ctx_ctrl_read_flow(&a_scan_ctx.base_ctx, + PME_CTX_OP_WAIT, &rb_flow, &ctx_ctrl.ctx_ctr); + if (ret) { + pr_err("pme scan test failed 0x%x\n", status); + goto flow_ctx_disable; + } + wait_for_completion(&ctx_ctrl.cb_done); + if (ctx_ctrl.cmd_status || ctx_ctrl.res_flag) { + pr_err("pme scan test failed: 0x%x\n", ret); + goto flow_ctx_disable; + } + if (memcmp(&rb_flow, fl_ctx_exp_post_scan, sizeof(rb_flow)) != 0) { + pr_err("pme scan test Flow Context Read FAIL\n"); + pr_err("Expected\n"); + hexdump(fl_ctx_exp_post_scan, sizeof(fl_ctx_exp_post_scan)); + pr_err("Received\n"); + hexdump(&rb_flow, sizeof(rb_flow)); + goto flow_ctx_disable; + } + + /* Test truncation test */ + /* Build a frame descriptor */ + memset(&fd, 0, sizeof(struct qm_fd)); + + fd.length20 = sizeof(scan_data); + qm_fd_addr_set64(&fd, pme_map(scan_data)); + + ret = pme_ctx_scan(&a_scan_ctx.base_ctx, 0, &fd, + PME_SCAN_ARGS(PME_CMD_SCAN_SR | PME_CMD_SCAN_E, 0, 0xff00), + &token); + if (ret) { + pr_err("pme scan test failed 0x%x\n", status); + goto flow_ctx_disable; + } + wait_for_completion(&scan_comp); + + status = pme_fd_res_status(&a_scan_ctx.result_fd); + if (status) { + pr_err("pme scan test failed 0x%x\n", status); + goto flow_ctx_disable; + } + /* Check the response...expect truncation bit to be set */ + if (!(pme_fd_res_flags(&a_scan_ctx.result_fd) & PME_STATUS_TRUNCATED)) { + pr_err("st: Scan result failed...expected trunc\n"); + goto flow_ctx_disable; + } + + /* read back flow settings */ + ret = pme_ctx_ctrl_read_flow(&a_scan_ctx.base_ctx, + PME_CTX_OP_WAIT, &rb_flow, &ctx_ctrl.ctx_ctr); + if (ret) { + pr_err("pme scan test failed: 0x%x\n", ret); + goto flow_ctx_disable; + } + wait_for_completion(&ctx_ctrl.cb_done); + if (ctx_ctrl.cmd_status || ctx_ctrl.res_flag) { + pr_err("pme scan test failed: 0x%x\n", ret); + goto flow_ctx_disable; + } + if (memcmp(&rb_flow, fl_ctx_exp_post_scan, sizeof(rb_flow)) != 0) { + pr_err("pme scan test Flow Context Read FAIL\n"); + pr_err("Expected\n"); + hexdump(fl_ctx_exp_post_scan, sizeof(fl_ctx_exp_post_scan)); + pr_err("Received\n"); + hexdump(&rb_flow, sizeof(rb_flow)); + goto flow_ctx_disable; + } + + /* Disable */ + ret = pme_ctx_disable(&a_scan_ctx.base_ctx, PME_CTX_OP_WAIT, + &ctx_ctrl.ctx_ctr); + if (ret < 1) { + pr_err("pme scan test failed 0x%x\n", ret); + goto flow_ctx_finish; + } + wait_for_completion(&ctx_ctrl.cb_done); + pme_ctx_finish(&a_scan_ctx.base_ctx); + return 0; + /* error path */ +/* failure path */ +flow_ctx_disable: + ret = pme_ctx_disable(&a_scan_ctx.base_ctx, PME_CTX_OP_WAIT, NULL); +flow_ctx_finish: + pme_ctx_finish(&a_scan_ctx.base_ctx); + return (!ret) ? -EINVAL : ret; +} + +void pme2_test_scan(void) +{ + int ret; + + ret = scan_test_direct(0, 0); + if (ret) + goto done; + ret = scan_test_direct(1, 0); + if (ret) + goto done; +#ifdef CONFIG_FSL_PME2_TEST_SCAN_WITH_BPID + ret = scan_test_direct(0, 1); + if (ret) + goto done; +#endif + ret = scan_test_flow(); +done: + if (ret) + pr_info("pme scan test FAILED 0x%x\n", ret); + else + pr_info("pme Scan Test Passed\n"); +} + +static int setup_buffer_pool(void) +{ +#ifdef CONFIG_FSL_PME2_TEST_SCAN_WITH_BPID + u32 bpid_size = CONFIG_FSL_PME2_TEST_SCAN_WITH_BPID_SIZE; + struct bman_pool_params pparams = { + .flags = BMAN_POOL_FLAG_DYNAMIC_BPID, + .thresholds = { + 0, + 0, + 0, + 0 + } + }; + + if (!pme2_have_control()) { + pr_err("pme scan test: Not the ctrl-plane\n"); + return -EINVAL; + } + pool = bman_new_pool(&pparams); + if (!pool) { + pr_err("pme scan test: can't get buffer pool\n"); + return -EINVAL; + } + pme_bpid = bman_get_params(pool)->bpid; + bman_buffers_virt_base = kmalloc(1<<(bpid_size+5), GFP_KERNEL); + bman_buffers_phys_base = pme_map(bman_buffers_virt_base); + if (pme_map_error(bman_buffers_phys_base)) { + pr_info("pme scan test: pme_map_error\n"); + bman_free_pool(pool); + kfree(bman_buffers_virt_base); + return -ENODEV; + } + release_buffer(bman_buffers_phys_base); + /* Configure the buffer pool */ + pme_attr_set(pme_attr_bsc(pme_bpid), bpid_size); + /* realease to the specified buffer pool */ + return 0; +#endif + return 0; +} + +static int teardown_buffer_pool(void) +{ +#ifdef CONFIG_FSL_PME2_TEST_SCAN_WITH_BPID + pme_attr_set(pme_attr_bsc(pme_bpid), 0); + empty_buffer(); + bman_free_pool(pool); + kfree(bman_buffers_virt_base); +#endif + return 0; +} + +static int pme2_test_scan_init(void) +{ + int big_loop = 2; + int ret = 0; + struct cpumask backup_mask = current->cpus_allowed; + struct cpumask new_mask = *qman_affine_cpus(); + + cpumask_and(&new_mask, &new_mask, bman_affine_cpus()); + ret = set_cpus_allowed_ptr(current, &new_mask); + if (ret) { + pr_info("pme scan test: can't set cpumask\n"); + goto done_all; + } + + ret = setup_buffer_pool(); + if (ret) + goto done_cpu_mask; + + /* create sample database */ + if (db_ctrl == create_destroy || db_ctrl == create) { + if (!pme2_have_control()) { + pr_err("pme scan test: Not the ctrl-plane\n"); + ret = -EINVAL; + goto done_scan; + } + if (pme2_sample_db()) { + pr_err("pme scan test: error creating db\n"); + goto done_scan; + } + } + + if (scan_ctrl == do_scan) { + while (big_loop--) + pme2_test_scan(); + } + + if (db_ctrl == create_destroy || db_ctrl == destroy) { + /* Clear database */ + if (pme2_clear_sample_db()) + pr_err("pme scan test: error clearing db\n"); + } + +done_scan: + teardown_buffer_pool(); +done_cpu_mask: + ret = set_cpus_allowed_ptr(current, &backup_mask); + if (ret) + pr_err("PME2 test high: can't restore cpumask"); +done_all: + return ret; +} + +static void pme2_test_scan_exit(void) +{ +} + +module_init(pme2_test_scan_init); +module_exit(pme2_test_scan_exit); --- linux-3.13.0.orig/drivers/staging/fsl_qbman/Kconfig +++ linux-3.13.0/drivers/staging/fsl_qbman/Kconfig @@ -0,0 +1,278 @@ +config FSL_DPA + bool "Freescale Datapath Queue and Buffer management" + depends on HAS_FSL_QBMAN + default y + select FSL_QMAN_FQ_LOOKUP if PPC64 + +menu "Freescale Datapath QMan/BMan options" + depends on FSL_DPA + +config FSL_DPA_CHECKING + bool "additional driver checking" + default n + ---help--- + Compiles in additional checks to sanity-check the drivers and any + use of it by other code. Not recommended for performance. + +config FSL_DPA_HAVE_IRQ + bool + default y + +config FSL_DPA_CAN_WAIT + bool + default y + +config FSL_DPA_CAN_WAIT_SYNC + bool + default y + +config FSL_DPA_PIRQ_FAST + bool "fast-path processing via IRQ" + depends on FSL_DPA_HAVE_IRQ + default y + ---help--- + By default, configure fast-path handling to be triggered by IRQ. + Drivers can modify this at run-time, but for linux it makes sense + for all handling to be triggered by IRQ, unless a special + run-to-completion application is being built. + +config FSL_DPA_PIRQ_SLOW + bool "slow-path processing via IRQ" + depends on FSL_DPA_HAVE_IRQ + default y + ---help--- + By default, configure slow-path handling to be triggered by IRQ. + Drivers can modify this at run-time, but for linux it makes sense + for all handling to be triggered by IRQ, unless a special + run-to-completion application is being built. + +config FSL_DPA_PORTAL_SHARE + bool "allow portals to be affine to multiple CPUs" + default y + ---help--- + If the kernel, via its device-tree, will be required to use a + single Qman or Bman portal for multiple CPUs, then select this + option. Note however that compiling with this option will result + in a very slight (but non-zero) overhead even when the feature + is not being used. + +config FSL_DPA_UIO + tristate "Export USDPAA portals via UIO" + depends on UIO + default y + ---help--- + Portals are exported as UIO devices for use by USDPAA (User + Space DataPath Acceleration Architecture) applications. + +config FSL_BMAN + bool "Freescale Buffer Manager support" + default y + +if FSL_BMAN + +config FSL_BMAN_PORTAL + bool "Bman portal support" + default y + ---help--- + Compiles support to detect and support Bman software corenet portals + (as provided by the device-tree). + +config FSL_BMAN_CONFIG + bool "Bman device management" + default y + ---help--- + If this linux image is running natively, you need this option. If this + linux image is running as a guest OS under the hypervisor, only one + guest OS ("the control plane") needs this option. + +config FSL_BMAN_TEST + tristate "Bman self-tests" + depends on FSL_BMAN_PORTAL + default n + ---help--- + This option compiles self-test code for Bman. + +config FSL_BMAN_TEST_HIGH + bool "Bman high-level self-test" + depends on FSL_BMAN_TEST + default y + ---help--- + This requires the presence of cpu-affine portals, and performs + high-level API testing with them (whichever portal(s) are affine to + the cpu(s) the test executes on). + +config FSL_BMAN_TEST_THRESH + bool "Bman threshold test" + depends on FSL_BMAN_TEST + default y + ---help--- + Multi-threaded (SMP) test of Bman pool depletion. A pool is seeded + before multiple threads (one per cpu) create pool objects to track + depletion state changes. The pool is then drained to empty by a + "drainer" thread, and the other threads that they observe exactly + the depletion state changes that are expected. + +config FSL_BMAN_DEBUGFS + tristate "Bman debugfs interface" + depends on FSL_BMAN_PORTAL && DEBUG_FS + default y + ---help--- + This option compiles bman debugfs code for Bman. + +endif # FSL_BMAN + +config FSL_QMAN + bool "Freescale Queue Manager support" + default y + +if FSL_QMAN + +config FSL_QMAN_PORTAL + bool "Qman portal support" + default y + ---help--- + Compiles support to detect and support Qman software corenet portals + (as provided by the device-tree). + +config FSL_QMAN_BUG_AND_FEATURE_REV1 + bool "workarounds for errata and missing features in p4080 rev1" + depends on FSL_QMAN_PORTAL + default y + ---help--- + If this option is selected, the driver will be compiled with + workarounds for errata as well as feature limitations (relative to + more recent parts) of p4080 rev1. On unaffected revisions, this + support incurs only a negligable overhead, typically only a couple of + instructions per non-fast-path operation (the fast-path operations are + unaffected). + + If in doubt, say Y. + +config FSL_QMAN_POLL_LIMIT + int + default 32 + +config FSL_QMAN_PORTAL_DISABLEAUTO_DCA + bool "disable discrete-consumption support on cpu-affine portals" + default n + ---help--- + By default, auto-initialised cpu-affine portals support + discrete-consumption acknowledgements, but this may be unimplemented + in the simulation model. + +config FSL_QMAN_NULL_FQ_DEMUX + bool "support NULL demux handlers" + default y + ---help--- + Normally, incoming frame dequeues and messages from Qman to a software + portal provide a direct demux to the owner of the corresponding FQ. + However, exotic "zero-conf" possibilities can be supported if other + cpus (or operating systems) can schedule "NULL" FQs to a receiver's + portal. If this option is selected, the driver will support this + feature, but it adds a small overhead to the hottest-path in the + driver, so it should be disabled unless needed. + +config FSL_QMAN_DQRR_PREFETCHING + bool "support prefetching or DQRR (if stashing disabled)" + default y + ---help--- + Normally, portals are configured to stash DQRR entries, but if this is + not the case, then s/w needs to invalidate and prefetch ring entries. + Selecting this option supports both cases and chooses the best one at + run-time, but introduces a small overhead in some hot paths of the + driver, so disable it if you know stashing will be configured. + +config FSL_QMAN_CONFIG + bool "Qman device management" + default y + ---help--- + If this linux image is running natively, you need this option. If this + linux image is running as a guest OS under the hypervisor, only one + guest OS ("the control plane") needs this option. + +config FSL_QMAN_TEST + tristate "Qman self-tests" + depends on FSL_QMAN_PORTAL + default n + ---help--- + This option compiles self-test code for Qman. + +config FSL_QMAN_TEST_STASH_POTATO + bool "Qman 'hot potato' data-stashing self-test" + depends on FSL_QMAN_TEST + default y + ---help--- + This performs a "hot potato" style test enqueuing/dequeuing a frame + across a series of FQs scheduled to different portals (and cpus), with + DQRR, data and context stashing always on. + +config FSL_QMAN_TEST_HIGH + bool "Qman high-level self-test" + depends on FSL_QMAN_TEST + default y + ---help--- + This requires the presence of cpu-affine portals, and performs + high-level API testing with them (whichever portal(s) are affine to + the cpu(s) the test executes on). + +config FSL_QMAN_TEST_ERRATA + bool "Qman errata-handling self-test" + depends on FSL_QMAN_TEST + default y + ---help--- + This requires the presence of cpu-affine portals, and performs + testing that handling for known hardware-errata is correct. + +config FSL_QMAN_DEBUGFS + tristate "Qman debugfs interface" + depends on FSL_QMAN_PORTAL + default y + ---help--- + This option compiles qman debugfs code for Qman. + +# H/w settings that can be hard-coded for now. +config FSL_QMAN_FQD_SZ + int "Size of Frame Queue Descriptor region" + default 9 + ---help--- + This is the size of the FQD region defined as: PAGE_SIZE * (2^value) + ex: 9 => PAGE_SIZE * (2^9) + +# Corenet initiator settings. Stash request queues are 4-deep to match cores' +# ability to snart. Stash priority is 3, other priorities are 2. +config FSL_QMAN_CI_SCHED_CFG_SRCCIV + int + depends on FSL_QMAN_CONFIG + default 4 +config FSL_QMAN_CI_SCHED_CFG_SRQ_W + int + depends on FSL_QMAN_CONFIG + default 3 +config FSL_QMAN_CI_SCHED_CFG_RW_W + int + depends on FSL_QMAN_CONFIG + default 2 +config FSL_QMAN_CI_SCHED_CFG_BMAN_W + int + depends on FSL_QMAN_CONFIG + default 2 + +# portal interrupt settings +config FSL_QMAN_PIRQ_DQRR_ITHRESH + int + default 12 +config FSL_QMAN_PIRQ_MR_ITHRESH + int + default 4 +config FSL_QMAN_PIRQ_IPERIOD + int + default 100 + +# 64 bit kernel support +config FSL_QMAN_FQ_LOOKUP + bool + default n + +endif # FSL_QMAN + +endmenu --- linux-3.13.0.orig/drivers/staging/fsl_qbman/Makefile +++ linux-3.13.0/drivers/staging/fsl_qbman/Makefile @@ -0,0 +1,23 @@ +# Bman +obj-$(CONFIG_FSL_BMAN_CONFIG) += bman_config.o bman_driver.o +obj-$(CONFIG_FSL_BMAN_PORTAL) += bman_high.o +obj-$(CONFIG_FSL_BMAN_TEST) += bman_tester.o +obj-$(CONFIG_FSL_BMAN_DEBUGFS) += bman_debugfs_interface.o +bman_tester-y = bman_test.o +bman_tester-$(CONFIG_FSL_BMAN_TEST_HIGH) += bman_test_high.o +bman_tester-$(CONFIG_FSL_BMAN_TEST_THRESH) += bman_test_thresh.o +bman_debugfs_interface-y = bman_debugfs.o + +# Qman +obj-$(CONFIG_FSL_QMAN) += qman_utility.o qman_fqalloc.o +obj-$(CONFIG_FSL_QMAN_CONFIG) += qman_config.o qman_driver.o +obj-$(CONFIG_FSL_QMAN_PORTAL) += qman_high.o +obj-$(CONFIG_FSL_QMAN_TEST) += qman_tester.o +qman_tester-y = qman_test.o qman_test_hotpotato.o \ + qman_test_high.o +qman_tester-$(CONFIG_FSL_QMAN_TEST_ERRATA) += qman_test_errata.o +obj-$(CONFIG_FSL_QMAN_DEBUGFS) += qman_debugfs_interface.o +qman_debugfs_interface-y = qman_debugfs.o + +# USDPAA +obj-$(CONFIG_FSL_DPA_UIO) += dpa_uio.o --- linux-3.13.0.orig/drivers/staging/fsl_qbman/bman_config.c +++ linux-3.13.0/drivers/staging/fsl_qbman/bman_config.c @@ -0,0 +1,690 @@ +/* Copyright (c) 2009-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 CONFIG_SMP +#include /* get_hard_smp_processor_id() */ +#endif +#include +#include + +#include "bman_private.h" + +/* Last updated for v00.79 of the BG */ + +struct bman; + +/* Register offsets */ +#define REG_POOL_SWDET(n) (0x0000 + ((n) * 0x04)) +#define REG_POOL_HWDET(n) (0x0100 + ((n) * 0x04)) +#define REG_POOL_SWDXT(n) (0x0200 + ((n) * 0x04)) +#define REG_POOL_HWDXT(n) (0x0300 + ((n) * 0x04)) +#define REG_POOL_CONTENT(n) (0x0600 + ((n) * 0x04)) +#define REG_FBPR_FPC 0x0800 +#define REG_ECSR 0x0a00 +#define REG_ECIR 0x0a04 +#define REG_EADR 0x0a08 +#define REG_EDATA(n) (0x0a10 + ((n) * 0x04)) +#define REG_SBEC(n) (0x0a80 + ((n) * 0x04)) +#define REG_IP_REV_1 0x0bf8 +#define REG_IP_REV_2 0x0bfc +#define REG_FBPR_BARE 0x0c00 +#define REG_FBPR_BAR 0x0c04 +#define REG_FBPR_AR 0x0c10 +#define REG_SRCIDR 0x0d04 +#define REG_LIODNR 0x0d08 +#define REG_ERR_ISR 0x0e00 /* + "enum bm_isr_reg" */ + +/* Used by all error interrupt registers except 'inhibit' */ +#define BM_EIRQ_IVCI 0x00000010 /* Invalid Command Verb */ +#define BM_EIRQ_FLWI 0x00000008 /* FBPR Low Watermark */ +#define BM_EIRQ_MBEI 0x00000004 /* Multi-bit ECC Error */ +#define BM_EIRQ_SBEI 0x00000002 /* Single-bit ECC Error */ +#define BM_EIRQ_BSCN 0x00000001 /* pool State Change Notification */ + +/* BMAN_ECIR valid error bit */ +#define PORTAL_ECSR_ERR (BM_EIRQ_IVCI) + +union bman_ecir { + u32 ecir_raw; + struct { + u32 __reserved1:4; + u32 portal_num:4; + u32 __reserved2:12; + u32 numb:4; + u32 __reserved3:2; + u32 pid:6; + } __packed info; +}; + +union bman_eadr { + u32 eadr_raw; + struct { + u32 __reserved1:5; + u32 memid:3; + u32 __reserved2:14; + u32 eadr:10; + } __packed info; +}; + +struct bman_hwerr_txt { + u32 mask; + const char *txt; +}; + +#define BMAN_HWE_TXT(a, b) { .mask = BM_EIRQ_##a, .txt = b } + +static const struct bman_hwerr_txt bman_hwerr_txts[] = { + BMAN_HWE_TXT(IVCI, "Invalid Command Verb"), + BMAN_HWE_TXT(FLWI, "FBPR Low Watermark"), + BMAN_HWE_TXT(MBEI, "Multi-bit ECC Error"), + BMAN_HWE_TXT(SBEI, "Single-bit ECC Error"), + BMAN_HWE_TXT(BSCN, "Pool State Change Notification"), +}; +#define BMAN_HWE_COUNT (sizeof(bman_hwerr_txts)/sizeof(struct bman_hwerr_txt)) + +struct bman_error_info_mdata { + u16 addr_mask; + u16 bits; + const char *txt; +}; + +#define BMAN_ERR_MDATA(a, b, c) { .addr_mask = a, .bits = b, .txt = c} +static const struct bman_error_info_mdata error_mdata[] = { + BMAN_ERR_MDATA(0x03FF, 192, "Stockpile memory"), + BMAN_ERR_MDATA(0x00FF, 256, "SW portal ring memory port 1"), + BMAN_ERR_MDATA(0x00FF, 256, "SW portal ring memory port 2"), +}; +#define BMAN_ERR_MDATA_COUNT \ + (sizeof(error_mdata)/sizeof(struct bman_error_info_mdata)) + +/* Add this in Kconfig */ +#define BMAN_ERRS_TO_UNENABLE (BM_EIRQ_FLWI) + +/** + * bm_err_isr__ - Manipulate global interrupt registers + * @v: for accessors that write values, this is the 32-bit value + * + * Manipulates BMAN_ERR_ISR, BMAN_ERR_IER, BMAN_ERR_ISDR, BMAN_ERR_IIR. All + * manipulations except bm_err_isr_[un]inhibit() use 32-bit masks composed of + * the BM_EIRQ_*** definitions. Note that "bm_err_isr_enable_write" means + * "write the enable register" rather than "enable the write register"! + */ +#define bm_err_isr_status_read(bm) __bm_err_isr_read(bm, bm_isr_status) +#define bm_err_isr_status_clear(bm, m) __bm_err_isr_write(bm, bm_isr_status,m) +#define bm_err_isr_enable_read(bm) __bm_err_isr_read(bm, bm_isr_enable) +#define bm_err_isr_enable_write(bm, v) __bm_err_isr_write(bm, bm_isr_enable,v) +#define bm_err_isr_disable_read(bm) __bm_err_isr_read(bm, bm_isr_disable) +#define bm_err_isr_disable_write(bm, v) __bm_err_isr_write(bm, bm_isr_disable,v) +#define bm_err_isr_inhibit(bm) __bm_err_isr_write(bm, bm_isr_inhibit,1) +#define bm_err_isr_uninhibit(bm) __bm_err_isr_write(bm, bm_isr_inhibit,0) + +/* + * TODO: unimplemented registers + * + * BMAN_POOLk_SDCNT, BMAN_POOLk_HDCNT, BMAN_FULT, + * BMAN_VLDPL, BMAN_EECC, BMAN_SBET, BMAN_EINJ + */ + +/* Encapsulate "struct bman *" as a cast of the register space address. */ + +static struct bman *bm_create(void *regs) +{ + return (struct bman *)regs; +} + +static inline u32 __bm_in(struct bman *bm, u32 offset) +{ + return in_be32((void *)bm + offset); +} +static inline void __bm_out(struct bman *bm, u32 offset, u32 val) +{ + out_be32((void *)bm + offset, val); +} +#define bm_in(reg) __bm_in(bm, REG_##reg) +#define bm_out(reg, val) __bm_out(bm, REG_##reg, val) + +static u32 __bm_err_isr_read(struct bman *bm, enum bm_isr_reg n) +{ + return __bm_in(bm, REG_ERR_ISR + (n << 2)); +} + +static void __bm_err_isr_write(struct bman *bm, enum bm_isr_reg n, u32 val) +{ + __bm_out(bm, REG_ERR_ISR + (n << 2), val); +} + +#if 0 +static void bm_get_details(struct bman *bm, u8 *int_options, u8 *errata, + u8 *conf_options) +{ + u32 v = bm_in(IP_REV_1); + *int_options = (v >> 16) & 0xff; + *errata = (v >> 8) & 0xff; + *conf_options = v & 0xff; +} + +static u8 bm_get_corenet_sourceid(struct bman *bm) +{ + return bm_in(SRCIDR); +} + +static void bm_set_liodn(struct bman *bm, u16 liodn) +{ + bm_out(LIODNR, liodn & 0xfff); +} + +#endif + +static void bm_get_version(struct bman *bm, u16 *id, u8 *major, u8 *minor) +{ + u32 v = bm_in(IP_REV_1); + *id = (v >> 16); + *major = (v >> 8) & 0xff; + *minor = v & 0xff; +} + +static u32 __generate_thresh(u32 val, int roundup) +{ + u32 e = 0; /* co-efficient, exponent */ + int oddbit = 0; + while(val > 0xff) { + oddbit = val & 1; + val >>= 1; + e++; + if(roundup && oddbit) + val++; + } + DPA_ASSERT(e < 0x10); + return (val | (e << 8)); +} + +static void bm_set_pool(struct bman *bm, u8 pool, u32 swdet, u32 swdxt, + u32 hwdet, u32 hwdxt) +{ + DPA_ASSERT(pool < bman_pool_max); + bm_out(POOL_SWDET(pool), __generate_thresh(swdet, 0)); + bm_out(POOL_SWDXT(pool), __generate_thresh(swdxt, 1)); + bm_out(POOL_HWDET(pool), __generate_thresh(hwdet, 0)); + bm_out(POOL_HWDXT(pool), __generate_thresh(hwdxt, 1)); +} + +static void bm_set_memory(struct bman *bm, u64 ba, int prio, u32 size) +{ + u32 exp = ilog2(size); + /* choke if size isn't within range */ + DPA_ASSERT((size >= 4096) && (size <= 1073741824) && + is_power_of_2(size)); + /* choke if '[e]ba' has lower-alignment than 'size' */ + DPA_ASSERT(!(ba & (size - 1))); + bm_out(FBPR_BARE, upper_32_bits(ba)); + bm_out(FBPR_BAR, lower_32_bits(ba)); + bm_out(FBPR_AR, (prio ? 0x40000000 : 0) | (exp - 1)); +} + +/*****************/ +/* Config driver */ +/*****************/ + +/* We support only one of these. */ +static struct bman *bm; +static struct device_node *bm_node; + +/* TODO: Kconfig these? */ +#define DEFAULT_FBPR_SZ (PAGE_SIZE << 12) + +/* Parse the property to extract the memory location and size and + * memblock_reserve() it. If it isn't supplied, memblock_alloc() the default size. */ +static __init int parse_mem_property(struct device_node *node, const char *name, + dma_addr_t *addr, size_t *sz, int zero) +{ + const u32 *pint; + int ret; + + pint = of_get_property(node, name, &ret); + if (!pint || (ret != 16)) { + pr_info("No %s property '%s', using memblock_alloc(%016zx)\n", + node->full_name, name, *sz); + *addr = memblock_alloc(*sz, *sz); + if (zero) + memset(phys_to_virt(*addr), 0, *sz); + return 0; + } + pr_info("Using %s property '%s'\n", node->full_name, name); + /* If using a "zero-pma", don't try to zero it, even if you asked */ + if (zero && of_find_property(node, "zero-pma", &ret)) { + pr_info(" it's a 'zero-pma', not zeroing from s/w\n"); + zero = 0; + } + *addr = ((u64)pint[0] << 32) | (u64)pint[1]; + *sz = ((u64)pint[2] << 32) | (u64)pint[3]; + /* Keep things simple, it's either all in the DRAM range or it's all + * outside. */ + if (*addr < memblock_end_of_DRAM()) { + BUG_ON((u64)*addr + (u64)*sz > memblock_end_of_DRAM()); + if (memblock_reserve(*addr, *sz) < 0) { + pr_err("Failed to reserve %s\n", name); + return -ENOMEM; + } + if (zero) + memset(phys_to_virt(*addr), 0, *sz); + } else if (zero) { + /* map as cacheable, non-guarded */ + void *tmpp = ioremap_prot(*addr, *sz, 0); + memset(tmpp, 0, *sz); + iounmap(tmpp); + } + return 0; +} + +static int __init fsl_bman_init(struct device_node *node) +{ + struct resource res; + u32 __iomem *regs; + const char *s; + dma_addr_t fbpr_a = 0; /* gcc doesn't know this is unnecessary */ + size_t fbpr_sz = DEFAULT_FBPR_SZ; + int ret, standby = 0; + u16 id; + u8 major, minor; + + ret = of_address_to_resource(node, 0, &res); + if (ret) { + pr_err("Can't get %s property 'reg'\n", + node->full_name); + return ret; + } + s = of_get_property(node, "fsl,hv-claimable", &ret); + if (s && !strcmp(s, "standby")) + standby = 1; + if (!standby) { + ret = parse_mem_property(node, "fsl,bman-fbpr", + &fbpr_a, &fbpr_sz, 0); + BUG_ON(ret); + } + /* Global configuration */ + regs = ioremap(res.start, res.end - res.start + 1); + bm = bm_create(regs); + BUG_ON(!bm); + bm_node = node; + bm_get_version(bm, &id, &major, &minor); + pr_info("Bman ver:%04x,%02x,%02x\n", id, major, minor); + if ((major == 1) && (minor == 0)) { + bman_ip_rev = BMAN_REV10; + bman_pool_max = 64; + } else if ((major == 2) && (minor == 0)) { + bman_ip_rev = BMAN_REV20; + bman_pool_max = 8; + } else { + pr_warning("unknown Bman version, default to rev1.0\n"); + } + + if (standby) { + pr_info(" -> in standby mode\n"); + return 0; + } + /* FBPR memory */ + bm_set_memory(bm, fbpr_a, 0, fbpr_sz); + return 0; +} + +int bman_have_ccsr(void) +{ + return (bm ? 1 : 0); +} + +int bm_pool_set(u32 bpid, const u32 *thresholds) +{ + if (!bm) + return -ENODEV; + bm_set_pool(bm, bpid, thresholds[0], thresholds[1], + thresholds[2], thresholds[3]); + return 0; +} +EXPORT_SYMBOL(bm_pool_set); + +__init void bman_init_early(void) +{ + struct device_node *dn; + for_each_compatible_node(dn, NULL, "fsl,bman") { + if (bm) + pr_err("%s: only one 'fsl,bman' allowed\n", + dn->full_name); + else { + int ret = fsl_bman_init(dn); + BUG_ON(ret); + } + } +} + +static void log_edata_bits(u32 bit_count) +{ + u32 i, j, mask = 0xffffffff; + + pr_warning("Bman ErrInt, EDATA:\n"); + i = bit_count/32; + if (bit_count%32) { + i++; + mask = ~(mask << bit_count%32); + } + j = 16-i; + pr_warning(" 0x%08x\n", bm_in(EDATA(j)) & mask); + j++; + for (; j < 16; j++) + pr_warning(" 0x%08x\n", bm_in(EDATA(j))); +} + +static void log_additional_error_info(u32 isr_val, u32 ecsr_val) +{ + union bman_ecir ecir_val; + union bman_eadr eadr_val; + + ecir_val.ecir_raw = bm_in(ECIR); + /* Is portal info valid */ + if (ecsr_val & PORTAL_ECSR_ERR) { + pr_warning("Bman ErrInt: SWP id %d, numb %d, pid %d\n", + ecir_val.info.portal_num, ecir_val.info.numb, + ecir_val.info.pid); + } + if (ecsr_val & (BM_EIRQ_SBEI|BM_EIRQ_MBEI)) { + eadr_val.eadr_raw = bm_in(EADR); + pr_warning("Bman ErrInt: EADR Memory: %s, 0x%x\n", + error_mdata[eadr_val.info.memid].txt, + error_mdata[eadr_val.info.memid].addr_mask + & eadr_val.info.eadr); + log_edata_bits(error_mdata[eadr_val.info.memid].bits); + } +} + +/* Bman interrupt handler */ +static irqreturn_t bman_isr(int irq, void *ptr) +{ + u32 isr_val, ier_val, ecsr_val, isr_mask, i; + + ier_val = bm_err_isr_enable_read(bm); + isr_val = bm_err_isr_status_read(bm); + ecsr_val = bm_in(ECSR); + isr_mask = isr_val & ier_val; + + if (!isr_mask) + return IRQ_NONE; + for (i = 0; i < BMAN_HWE_COUNT; i++) { + if (bman_hwerr_txts[i].mask & isr_mask) { + pr_warning("Bman ErrInt: %s\n", bman_hwerr_txts[i].txt); + if (bman_hwerr_txts[i].mask & ecsr_val) { + log_additional_error_info(isr_mask, ecsr_val); + /* Re-arm error capture registers */ + bm_out(ECSR, ecsr_val); + } + if (bman_hwerr_txts[i].mask & BMAN_ERRS_TO_UNENABLE) { + pr_devel("Bman un-enabling error 0x%x\n", + bman_hwerr_txts[i].mask); + ier_val &= ~bman_hwerr_txts[i].mask; + bm_err_isr_enable_write(bm, ier_val); + } + } + } + bm_err_isr_status_clear(bm, isr_val); + return IRQ_HANDLED; +} + +static int __bind_irq(void) +{ + int ret, err_irq; + + err_irq = of_irq_to_resource(bm_node, 0, NULL); + if (err_irq == NO_IRQ) { + pr_info("Can't get %s property '%s'\n", bm_node->full_name, + "interrupts"); + return -ENODEV; + } + ret = request_irq(err_irq, bman_isr, IRQF_SHARED, "bman-err", bm_node); + if (ret) { + pr_err("request_irq() failed %d for '%s'\n", ret, + bm_node->full_name); + return -ENODEV; + } + /* Disable Buffer Pool State Change */ + bm_err_isr_disable_write(bm, BM_EIRQ_BSCN); + /* Write-to-clear any stale bits, (eg. starvation being asserted prior + * to resource allocation during driver init). */ + bm_err_isr_status_clear(bm, 0xffffffff); + /* Enable Error Interrupts */ + bm_err_isr_enable_write(bm, 0xffffffff); + return 0; +} + +/* Initialise Error Interrupt Handler */ +int bman_init_error_int(struct device_node *node) +{ + if (!bman_have_ccsr()) + return 0; + if (node != bm_node) + return -EINVAL; + return __bind_irq(); +} + +#ifdef CONFIG_SYSFS + +#define DRV_NAME "fsl-bman" + +static ssize_t show_fbpr_fpc(struct device *dev, + struct device_attribute *dev_attr, char *buf) +{ + return snprintf(buf, PAGE_SIZE, "%u\n", bm_in(FBPR_FPC)); +}; + +static ssize_t show_pool_count(struct device *dev, + struct device_attribute *dev_attr, char *buf) +{ + u32 data; + int i; + + if (!sscanf(dev_attr->attr.name, "%d", &i)) + return -EINVAL; + data = bm_in(POOL_CONTENT(i)); + return snprintf(buf, PAGE_SIZE, "%d\n", data); +}; + +static ssize_t show_err_isr(struct device *dev, + struct device_attribute *dev_attr, char *buf) +{ + return snprintf(buf, PAGE_SIZE, "0x%08x\n", bm_in(ERR_ISR)); +}; + +static ssize_t show_sbec(struct device *dev, + struct device_attribute *dev_attr, char *buf) +{ + int i; + + if (!sscanf(dev_attr->attr.name, "sbec_%d", &i)) + return -EINVAL; + return snprintf(buf, PAGE_SIZE, "%u\n", bm_in(SBEC(i))); +}; + +static DEVICE_ATTR(err_isr, S_IRUSR, show_err_isr, NULL); +static DEVICE_ATTR(fbpr_fpc, S_IRUSR, show_fbpr_fpc, NULL); + +/* Didn't use DEVICE_ATTR as 64 of this would be required. + * Initialize them when needed. */ +static char *name_attrs_pool_count; /* "xx" + null-terminator */ +static struct device_attribute *dev_attr_buffer_pool_count; + +static DEVICE_ATTR(sbec_0, S_IRUSR, show_sbec, NULL); +static DEVICE_ATTR(sbec_1, S_IRUSR, show_sbec, NULL); + +static struct attribute *bman_dev_attributes[] = { + &dev_attr_fbpr_fpc.attr, + &dev_attr_err_isr.attr, + NULL +}; + +static struct attribute *bman_dev_ecr_attributes[] = { + &dev_attr_sbec_0.attr, + &dev_attr_sbec_1.attr, + NULL +}; + +static struct attribute **bman_dev_pool_count_attributes; + + +/* root level */ +static const struct attribute_group bman_dev_attr_grp = { + .name = NULL, + .attrs = bman_dev_attributes +}; +static const struct attribute_group bman_dev_ecr_grp = { + .name = "error_capture", + .attrs = bman_dev_ecr_attributes +}; +static struct attribute_group bman_dev_pool_countent_grp = { + .name = "pool_count", +}; + +static int of_fsl_bman_remove(struct platform_device *ofdev) +{ + sysfs_remove_group(&ofdev->dev.kobj, &bman_dev_attr_grp); + return 0; +}; + +static int of_fsl_bman_probe(struct platform_device *ofdev) +{ + int ret, i; + + ret = sysfs_create_group(&ofdev->dev.kobj, &bman_dev_attr_grp); + if (ret) + goto done; + ret = sysfs_create_group(&ofdev->dev.kobj, &bman_dev_ecr_grp); + if (ret) + goto del_group_0; + + name_attrs_pool_count = kmalloc(sizeof(char) * bman_pool_max * 3, + GFP_KERNEL); + if (!name_attrs_pool_count) { + pr_err("Can't alloc name_attrs_pool_count\n"); + goto del_group_1; + } + + dev_attr_buffer_pool_count = kmalloc(sizeof(struct device_attribute) * + bman_pool_max, GFP_KERNEL); + if (!dev_attr_buffer_pool_count) { + pr_err("Can't alloc dev_attr-buffer_pool_count\n"); + goto del_group_2; + } + + bman_dev_pool_count_attributes = kmalloc(sizeof(struct attribute *) * + (bman_pool_max + 1), GFP_KERNEL); + if (!bman_dev_pool_count_attributes) { + pr_err("can't alloc bman_dev_pool_count_attributes\n"); + goto del_group_3; + } + + for (i = 0; i < (bman_pool_max + 1); i++) { + bman_dev_pool_count_attributes[i] = + kmalloc(sizeof(struct attribute), GFP_KERNEL); + if (!bman_dev_pool_count_attributes[i]) { + pr_err("cannot alloc for each" + " bman_dev_pool_count_attributes\n"); + goto del_group_3; + } + } + + for (i = 0; i < bman_pool_max; i++) { + ret = scnprintf((name_attrs_pool_count + i * 3), 3, "%d", i); + if (!ret) + goto del_group_4; + dev_attr_buffer_pool_count[i].attr.name = + (name_attrs_pool_count + i * 3); + dev_attr_buffer_pool_count[i].attr.mode = S_IRUSR; + dev_attr_buffer_pool_count[i].show = show_pool_count; + bman_dev_pool_count_attributes[i] = + &dev_attr_buffer_pool_count[i].attr; + } + bman_dev_pool_count_attributes[bman_pool_max] = NULL; + + bman_dev_pool_countent_grp.attrs = bman_dev_pool_count_attributes; + + ret = sysfs_create_group(&ofdev->dev.kobj, &bman_dev_pool_countent_grp); + if (ret) + goto del_group_4; + + goto done; + +del_group_4: + for (i = 0; i < (bman_pool_max + 1); i++) + kfree(bman_dev_pool_count_attributes[i]); + kfree(bman_dev_pool_count_attributes); +del_group_3: + kfree(dev_attr_buffer_pool_count); +del_group_2: + kfree(name_attrs_pool_count); +del_group_1: + sysfs_remove_group(&ofdev->dev.kobj, &bman_dev_ecr_grp); +del_group_0: + sysfs_remove_group(&ofdev->dev.kobj, &bman_dev_attr_grp); +done: + if (ret) + dev_err(&ofdev->dev, + "Cannot create dev attributes ret=%d\n", ret); + return ret; +}; + +static struct of_device_id of_fsl_bman_ids[] = { + { + .compatible = "fsl,bman", + }, + {} +}; +MODULE_DEVICE_TABLE(of, of_fsl_bman_ids); + +static struct platform_driver of_fsl_bman_driver = { + .driver = { + .owner = THIS_MODULE, + .name = DRV_NAME, + .of_match_table = of_fsl_bman_ids, + }, + .probe = of_fsl_bman_probe, + .remove = of_fsl_bman_remove, +}; + +static int bman_ctrl_init(void) +{ + return platform_driver_register(&of_fsl_bman_driver); +} + +static void bman_ctrl_exit(void) +{ + platform_driver_unregister(&of_fsl_bman_driver); +} + +module_init(bman_ctrl_init); +module_exit(bman_ctrl_exit); + +#endif /* CONFIG_SYSFS */ --- linux-3.13.0.orig/drivers/staging/fsl_qbman/bman_debugfs.c +++ linux-3.13.0/drivers/staging/fsl_qbman/bman_debugfs.c @@ -0,0 +1,121 @@ +/* Copyright 2010-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 + +static struct dentry *dfs_root; /* debugfs root directory */ + +/******************************************************************************* + * Query Buffer Pool State + ******************************************************************************/ +static int query_bp_state_show(struct seq_file *file, void *offset) +{ + int ret; + struct bm_pool_state state; + int i, j; + u32 mask; + + memset(&state, 0, sizeof(struct bm_pool_state)); + ret = bman_query_pools(&state); + if (ret) { + seq_printf(file, "Error %d\n", ret); + return 0; + } + seq_printf(file, "bp_id free_buffers_avail bp_depleted\n"); + for (i = 0; i < 2; i++) { + mask = 0x80000000; + for (j = 0; j < 32; j++) { + seq_printf(file, + " %-2u %-3s %-3s\n", + (i*32)+j, + (state.as.state.__state[i] & mask) ? "no" : "yes", + (state.ds.state.__state[i] & mask) ? "yes" : "no"); + mask >>= 1; + } + } + return 0; +} + +static int query_bp_state_open(struct inode *inode, struct file *file) +{ + return single_open(file, query_bp_state_show, NULL); +} + +static const struct file_operations query_bp_state_fops = { + .owner = THIS_MODULE, + .open = query_bp_state_open, + .read = seq_read, + .release = single_release, +}; + +static int __init bman_debugfs_module_init(void) +{ + int ret = 0; + struct dentry *d; + + dfs_root = debugfs_create_dir("bman", NULL); + + if (dfs_root == NULL) { + ret = -ENOMEM; + pr_err("Cannot create bman debugfs dir\n"); + goto _return; + } + d = debugfs_create_file("query_bp_state", + S_IRUGO, + dfs_root, + NULL, + &query_bp_state_fops); + if (d == NULL) { + ret = -ENOMEM; + pr_err("Cannot create query_bp_state\n"); + goto _return; + } + return 0; + +_return: + if (dfs_root) + debugfs_remove_recursive(dfs_root); + return ret; +} + +static void __exit bman_debugfs_module_exit(void) +{ + debugfs_remove_recursive(dfs_root); +} + + +module_init(bman_debugfs_module_init); +module_exit(bman_debugfs_module_exit); +MODULE_LICENSE("Dual BSD/GPL"); + --- linux-3.13.0.orig/drivers/staging/fsl_qbman/bman_driver.c +++ linux-3.13.0/drivers/staging/fsl_qbman/bman_driver.c @@ -0,0 +1,588 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 "bman_private.h" + +/* + * Global variables of the max portal/pool number this bman version supported + */ +u16 bman_ip_rev; +EXPORT_SYMBOL(bman_ip_rev); +u16 bman_pool_max; +EXPORT_SYMBOL(bman_pool_max); + +/*****************/ +/* Portal driver */ +/*****************/ + +/* Compatibility behaviour (when no bpool-range is present) is that; + * (a) on a control plane, all pools that aren't explicitly mentioned in the dtb + * are available for allocation, + * (b) on a non-control plane, there is never any allocation possible at all. + * + * New behaviour is that if any "fsl,bpool-range" nodes are declared, they + * declare what is available for allocation, and this is independent of which + * pools are/aren't mentioned in the dtb. Eg. to stipulate that no allocation is + * possible, a fsl,bpool-range should be specified with zero items in it. + * + * This "pools" struct contains the allocator, and "explicit allocator" + * indicates whether the range is seeded explicitly (via at least one range) or + * implicitly (by being the set of pools that aren't declared). + */ +static struct bman_depletion pools; +static u8 num_pools; +static DEFINE_SPINLOCK(pools_lock); +static int explicit_allocator; + +static struct dpa_uio_class bman_uio = { + .list = LIST_HEAD_INIT(bman_uio.list), + .dev_prefix = "bman-uio-" +}; +const struct dpa_uio_class *dpa_uio_bman(void) +{ + return &bman_uio; +} +EXPORT_SYMBOL(dpa_uio_bman); + +static int __bm_pool_add(u32 bpid, u32 *cfg, int triplets) +{ + u64 total = 0; + BUG_ON(bpid >= bman_pool_max); +#ifdef CONFIG_FSL_BMAN_PORTAL + while (triplets--) { + struct bman_pool_params params = { + .bpid = bpid, + .flags = BMAN_POOL_FLAG_ONLY_RELEASE + }; + u64 c = ((u64)cfg[0] << 32) | cfg[1]; + u64 d = ((u64)cfg[2] << 32) | cfg[3]; + u64 b = ((u64)cfg[4] << 32) | cfg[5]; + struct bman_pool *pobj = bman_new_pool(¶ms); + if (!pobj) + return -ENOMEM; + while (c) { + struct bm_buffer bufs[8]; + int ret, num_bufs = 0; + do { + BUG_ON(b > 0xffffffffffffull); + bufs[num_bufs].bpid = bpid; + bm_buffer_set64(&bufs[num_bufs++], b); + b += d; + } while (--c && (num_bufs < 8)); + ret = bman_release(pobj, bufs, num_bufs, + BMAN_RELEASE_FLAG_WAIT); + if (ret) + panic("Seeding reserved buffer pool failed\n"); + total += num_bufs; + } + bman_free_pool(pobj); + cfg += 6; + } +#endif + /* Remove this pool from the allocator (by treating its declaration as + * an implicit "reservation") iff the allocator is *not* being set up + * explicitly defined via "bpool-range" nodes. */ + if (!explicit_allocator && !bman_depletion_get(&pools, bpid)) { + bman_depletion_set(&pools, bpid); + num_pools++; + } + if (total) + pr_info("Bman: reserved bpid %d, seeded %lld items\n", bpid, + total); + else + pr_info("Bman: reserved bpid %d\n", bpid); + return 0; +} + +int bm_pool_new(u32 *bpid) +{ + int ret = 0, b = bman_pool_max; + spin_lock(&pools_lock); + if (num_pools >= bman_pool_max) + ret = -ENOMEM; + else { + while (b-- && bman_depletion_get(&pools, b)) + ; + BUG_ON(b < 0); + bman_depletion_set(&pools, b); + *bpid = b; + num_pools++; + } + spin_unlock(&pools_lock); + return ret; +} +EXPORT_SYMBOL(bm_pool_new); + +void bm_pool_free(u32 bpid) +{ + spin_lock(&pools_lock); + BUG_ON(bpid >= bman_pool_max); + BUG_ON(!bman_depletion_get(&pools, bpid)); + bman_depletion_unset(&pools, bpid); + num_pools--; + spin_unlock(&pools_lock); +} +EXPORT_SYMBOL(bm_pool_free); + +#ifdef CONFIG_FSL_BMAN_PORTAL +/* To understand the use of this structure and the flow of operation for all + * this portal-setup code, please see qman_driver.c. The Bman case is much the + * same, but simpler (no Qman-specific fiddly bits). */ +struct affine_portal_data { + struct completion done; + const struct bm_portal_config *pconfig; + struct bman_portal *redirect; + int recovery_mode; + struct bman_portal *portal; +}; + +static __init int thread_init_affine_portal(void *__data) +{ + struct affine_portal_data *data = __data; + const struct bm_portal_config *pconfig = data->pconfig; + if (data->redirect) + data->portal = bman_create_affine_slave(data->redirect); + else { + data->portal = bman_create_affine_portal(pconfig, + data->recovery_mode); +#ifdef CONFIG_FSL_DPA_PIRQ_SLOW + if (data->portal) + bman_irqsource_add(BM_PIRQ_RCRI | BM_PIRQ_BSCN); +#endif + } + complete(&data->done); + return 0; +} + +static __init struct bman_portal *init_affine_portal( + struct bm_portal_config *pconfig, + int cpu, struct bman_portal *redirect, + int recovery_mode) +{ + struct affine_portal_data data = { + .done = COMPLETION_INITIALIZER_ONSTACK(data.done), + .pconfig = pconfig, + .redirect = redirect, + .recovery_mode = recovery_mode, + .portal = NULL + }; + struct task_struct *k = kthread_create(thread_init_affine_portal, &data, + "bman_affine%d", cpu); + int ret; + if (IS_ERR(k)) { + pr_err("Failed to init %sBman affine portal for cpu %d\n", + redirect ? "(slave) " : "", cpu); + return NULL; + } + kthread_bind(k, cpu); + wake_up_process(k); + wait_for_completion(&data.done); + ret = kthread_stop(k); + if (ret) { + pr_err("Bman portal initialisation failed, cpu %d, code %d\n", + cpu, ret); + return NULL; + } + if (data.portal) + pr_info("Bman portal %sinitialised, cpu %d\n", + redirect ? "(slave) " : + pconfig->public_cfg.is_shared ? "(shared) " : "", cpu); + return data.portal; +} +#endif + +static struct bm_portal_config * __init fsl_bman_portal_init( + struct device_node *node) +{ + struct bm_portal_config *pcfg; + const u32 *index; + const phandle *ph = NULL; + int irq, ret; + + pcfg = kmalloc(sizeof(*pcfg), GFP_KERNEL); + if (!pcfg) { + pr_err("can't allocate portal config"); + return NULL; + } + + if (of_device_is_compatible(node, "fsl,bman-portal-1.0")) { + bman_ip_rev = BMAN_REV10; + bman_pool_max = 64; + } else if (of_device_is_compatible(node, "fsl,bman-portal-2.0")) { + bman_ip_rev = BMAN_REV20; + bman_pool_max = 8; + } + + ret = of_address_to_resource(node, BM_ADDR_CE, + &pcfg->addr_phys[BM_ADDR_CE]); + if (ret) { + pr_err("Can't get %s property 'reg::CE'\n", node->full_name); + goto err; + } + ret = of_address_to_resource(node, BM_ADDR_CI, + &pcfg->addr_phys[BM_ADDR_CI]); + if (ret) { + pr_err("Can't get %s property 'reg::CI'\n", node->full_name); + goto err; + } + index = of_get_property(node, "cell-index", &ret); + if (!index || (ret != 4)) { + pr_err("Can't get %s property '%s'\n", node->full_name, + "cell-index"); + goto err; + } + ph = of_get_property(node, "cpu-handle", &ret); + if (ph) { + if (ret != sizeof(phandle)) { + pr_err("Malformed %s property '%s'\n", node->full_name, + "cpu-handle"); + goto err; + } + ret = check_cpu_phandle(*ph); + if (ret < 0) + goto err; + pcfg->public_cfg.cpu = ret; + } else + pcfg->public_cfg.cpu = -1; + + irq = irq_of_parse_and_map(node, 0); + if (irq == NO_IRQ) { + pr_err("Can't get %s property 'interrupts'\n", node->full_name); + goto err; + } + pcfg->public_cfg.irq = irq; + pcfg->public_cfg.index = *index; + bman_depletion_fill(&pcfg->public_cfg.mask); + + if (of_get_property(node, "fsl,usdpaa-portal", &ret)) { + struct dpa_uio_portal *u = kmalloc(sizeof(*u), GFP_KERNEL); + if (!u) + goto err; + u->type = dpa_uio_portal_bman; + u->bm_cfg = pcfg; + list_add_tail(&u->node, &bman_uio.list); + /* Return NULL, otherwise the kernel may share it on CPUs that + * don't have their own portals, which would be ... *bad*. */ + return NULL; + } + + /* Map the portals now we know they aren't for UIO (the UIO code doesn't + * need the CE mapping, and so will do its own CI-only mapping). */ + pcfg->addr_virt[BM_ADDR_CE] = ioremap_prot( + pcfg->addr_phys[BM_ADDR_CE].start, + resource_size(&pcfg->addr_phys[BM_ADDR_CE]), + 0); + pcfg->addr_virt[BM_ADDR_CI] = ioremap_prot( + pcfg->addr_phys[BM_ADDR_CI].start, + resource_size(&pcfg->addr_phys[BM_ADDR_CI]), + _PAGE_GUARDED | _PAGE_NO_CACHE); + return pcfg; +err: + kfree(pcfg); + return NULL; +} + +static void __init fsl_bman_portal_destroy(struct bm_portal_config *pcfg) +{ + iounmap(pcfg->addr_virt[BM_ADDR_CE]); + iounmap(pcfg->addr_virt[BM_ADDR_CI]); + kfree(pcfg); +} + +static int __init fsl_bpool_init(struct device_node *node) +{ + int ret; + u32 *cfg = NULL, *thresh; + struct device_node *tmp_node; + u32 *bpid = (u32 *)of_get_property(node, "fsl,bpid", &ret); + if (!bpid || (ret!= 4)) { + pr_err("Can't get %s property 'fsl,bpid'\n", node->full_name); + return -ENODEV; + } + thresh = (u32 *)of_get_property(node, "fsl,bpool-thresholds", &ret); + if (thresh) { + if (ret != 16) { + pr_err("Invalid %s property '%s'\n", + node->full_name, "fsl,bpool-thresholds"); + return -ENODEV; + } +#ifndef CONFIG_FSL_BMAN_CONFIG + pr_err("Ignoring %s property '%s', no CCSR support\n", + node->full_name, "fsl,bpool-thresholds"); +#endif + } + /* If rebooted, we should not re-seed any pools via bpool-cfg. */ + /* TODO: parsing hypervisor fields to determine qualitative things like + * "was I rebooted" should probably be wrapped in fsl_hypervisor.h. */ + tmp_node = of_find_node_by_name(NULL, "hypervisor"); + if (!tmp_node || !of_find_property(tmp_node, "fsl,hv-stopped-by", + &ret)) + cfg = (u32 *)of_get_property(node, "fsl,bpool-cfg", &ret); + if (cfg && (!ret || (ret % 24))) { + pr_err("Invalid %s property '%s'\n", node->full_name, + "fsl,bpool-cfg"); + return -ENODEV; + } + if (cfg) + ret = __bm_pool_add(*bpid, cfg, ret / 24); + else + ret = __bm_pool_add(*bpid, NULL, 0); + if (ret) { + pr_err("Can't reserve bpid %d from node %s\n", *bpid, + node->full_name); + return ret; + } +#ifdef CONFIG_FSL_BMAN_CONFIG + if (thresh) { + ret = bm_pool_set(*bpid, thresh); + if (ret) + pr_err("No CCSR node for %s property '%s'\n", + node->full_name, "fsl,bpool-thresholds"); + } +#endif + return ret; +} + +static int __init fsl_bpool_range_init(struct device_node *node, + int recovery_mode) +{ + int ret, warned = 0; + u32 bpid; + u32 *range = (u32 *)of_get_property(node, "fsl,bpool-range", &ret); + if (!range) { + pr_err("No 'fsl,bpool-range' property in node %s\n", + node->full_name); + return -EINVAL; + } + if (ret != 8) { + pr_err("'fsl,bpool-range' is not a 2-cell range in node %s\n", + node->full_name); + return -EINVAL; + } + for (bpid = range[0]; bpid < (range[0] + range[1]); bpid++) { + if (bpid >= bman_pool_max) { + pr_err("BPIDs out of range in node %s\n", + node->full_name); + return -EINVAL; + } + if (!bman_depletion_get(&pools, bpid)) { + if (!warned) { + warned = 1; + pr_err("BPID overlap in node %s, ignoring\n", + node->full_name); + } + } else { + bman_depletion_unset(&pools, bpid); + num_pools--; + } + } +#ifdef CONFIG_FSL_BMAN_PORTAL + /* If in recovery mode *and* we are using a private BPID allocation + * range, then automatically clean up all BPIDs in that range so we can + * automatically exit recovery mode too. */ + if (recovery_mode) { + for (bpid = range[0]; bpid < (range[0] + range[1]); bpid++) { + ret = bman_recovery_cleanup_bpid(bpid); + if (ret) { + pr_err("Failed to recovery BPID %d\n", bpid); + return ret; + } + } + } +#else + BUG_ON(recovery_mode); +#endif + pr_info("Bman: BPID allocator includes range %d:%d%s\n", + range[0], range[1], recovery_mode ? " (recovered)" : ""); + return 0; +} + +#ifdef CONFIG_FSL_BMAN_PORTAL +static __init int __leave_recovery(void *__data) +{ + struct completion *done = __data; + bman_recovery_exit_local(); + complete(done); + return 0; +} + +int bman_recovery_exit(void) +{ + struct completion done = COMPLETION_INITIALIZER_ONSTACK(done); + unsigned int cpu; + + for_each_cpu(cpu, bman_affine_cpus()) { + struct task_struct *k = kthread_create(__leave_recovery, &done, + "bman_recovery"); + int ret; + if (IS_ERR(k)) { + pr_err("Thread failure (recovery) on cpu %d\n", cpu); + return -ENOMEM; + } + kthread_bind(k, cpu); + wake_up_process(k); + wait_for_completion(&done); + ret = kthread_stop(k); + if (ret) { + pr_err("Failed to exit recovery on cpu %d\n", cpu); + return ret; + } + pr_info("Bman portal exited recovery, cpu %d\n", cpu); + } + return 0; +} +EXPORT_SYMBOL(bman_recovery_exit); +#endif + +static __init int bman_init(void) +{ +#ifdef CONFIG_FSL_BMAN_PORTAL + struct cpumask primary_cpus = *cpu_none_mask; + struct cpumask slave_cpus = *cpu_online_mask; + struct bman_portal *sharing_portal = NULL; + int sharing_cpu = -1; +#endif + struct device_node *dn; + struct bm_portal_config *pcfg; + int ret, recovery_mode = 0; + LIST_HEAD(cfg_list); + + for_each_compatible_node(dn, NULL, "fsl,bman") { + if (!bman_init_error_int(dn)) + pr_info("Bman err interrupt handler present\n"); + else + pr_err("Bman err interrupt handler missing\n"); + } + if (!bman_have_ccsr()) { + /* If there's no CCSR, our bpid allocator is empty unless + * fsl,bpool-range nodes are used. */ + bman_depletion_fill(&pools); + num_pools = bman_pool_max; + } +#ifdef CONFIG_FSL_BMAN_PORTAL + if (fsl_dpa_should_recover()) + recovery_mode = 1; + for_each_compatible_node(dn, NULL, "fsl,bman-portal") { + pcfg = fsl_bman_portal_init(dn); + if (pcfg) { + if (pcfg->public_cfg.cpu >= 0) { + cpumask_set_cpu(pcfg->public_cfg.cpu, + &primary_cpus); + list_add(&pcfg->list, &cfg_list); + } else + fsl_bman_portal_destroy(pcfg); + } + } + /* only consider "online" CPUs */ + cpumask_and(&primary_cpus, &primary_cpus, cpu_online_mask); + if (cpumask_empty(&primary_cpus)) + /* No portals, we're done */ + return 0; + if (!cpumask_subset(cpu_online_mask, &primary_cpus)) { + /* Need to do some sharing. In lieu of anything more scientific + * (or configurable), we pick the last-most CPU that has a + * portal and share that one. */ + int next = cpumask_first(&primary_cpus); + while (next < nr_cpu_ids) { + sharing_cpu = next; + next = cpumask_next(next, &primary_cpus); + } + } + /* Parsing is done and sharing decisions are made, now initialise the + * portals and determine which "slave" CPUs are left over. */ + list_for_each_entry(pcfg, &cfg_list, list) { + struct bman_portal *p; + int is_shared = (!sharing_portal && (sharing_cpu >= 0) && + (pcfg->public_cfg.cpu == sharing_cpu)); + pcfg->public_cfg.is_shared = is_shared; + /* If it's not mapped to a CPU, or another portal is already + * initialised to the same CPU, skip this portal. */ + if (pcfg->public_cfg.cpu < 0 || !cpumask_test_cpu( + pcfg->public_cfg.cpu, &slave_cpus)) + continue; + p = init_affine_portal(pcfg, pcfg->public_cfg.cpu, NULL, + recovery_mode); + if (p) { + if (is_shared) + sharing_portal = p; + cpumask_clear_cpu(pcfg->public_cfg.cpu, &slave_cpus); + } + } + + if (sharing_portal) { + int loop; + for_each_cpu(loop, &slave_cpus) { + struct bman_portal *p = init_affine_portal(NULL, loop, + sharing_portal, recovery_mode); + if (!p) + pr_err("Failed slave Bman portal for cpu %d\n", + loop); + } + } +#else + for_each_compatible_node(dn, NULL, "fsl,bman-portal") { + pcfg = fsl_bman_portal_init(dn); + if (pcfg) + /* No kernel portal support, so if USDPAA didn't consume + * the portal, we've no other use for it. */ + fsl_bman_portal_destroy(pcfg); + } +#endif + for_each_compatible_node(dn, NULL, "fsl,bpool-range") { + if (!explicit_allocator) { + explicit_allocator = 1; + bman_depletion_fill(&pools); + num_pools = 64; + } + ret = fsl_bpool_range_init(dn, recovery_mode); + if (ret) + return ret; + } +#ifdef CONFIG_FSL_BMAN_PORTAL + /* If using private BPID allocation, exit recovery mode automatically + * (ie. after automatic recovery) */ + if (recovery_mode && explicit_allocator) { + ret = bman_recovery_exit(); + if (ret) + return ret; + } +#endif + for_each_compatible_node(dn, NULL, "fsl,bpool") { + ret = fsl_bpool_init(dn); + if (ret) + return ret; + } + pr_info("Bman portals initialised\n"); + return 0; +} +subsys_initcall(bman_init); --- linux-3.13.0.orig/drivers/staging/fsl_qbman/bman_high.c +++ linux-3.13.0/drivers/staging/fsl_qbman/bman_high.c @@ -0,0 +1,1043 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 "bman_low.h" + +/* Compilation constants */ +#define RCR_THRESH 2 /* reread h/w CI when running out of space */ +#define IRQNAME "BMan portal %d" +#define MAX_IRQNAME 16 /* big enough for "BMan portal %d" */ + +struct bman_portal { + struct bm_portal p; + /* 2-element array. pools[0] is mask, pools[1] is snapshot. */ + struct bman_depletion *pools; + int thresh_set; + unsigned long irq_sources; + u32 slowpoll; /* only used when interrupts are off */ +#ifdef CONFIG_FSL_DPA_CAN_WAIT_SYNC + struct bman_pool *rcri_owned; /* only 1 release WAIT_SYNC at a time */ +#endif +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE + spinlock_t sharing_lock; /* only used if is_shared */ + int is_shared; + struct bman_portal *sharing_redirect; +#endif + /* When the cpu-affine portal is activated, this is non-NULL */ + const struct bm_portal_config *config; + /* 64-entry hash-table of pool objects that are tracking depletion + * entry/exit (ie. BMAN_POOL_FLAG_DEPLETION). This isn't fast-path, so + * we're not fussy about cache-misses and so forth - whereas the above + * members should all fit in one cacheline. + * BTW, with 64 entries in the hash table and 64 buffer pools to track, + * you'll never guess the hash-function ... */ + struct bman_pool *cb[64]; + char irqname[MAX_IRQNAME]; +}; + +/* For an explanation of the locking, redirection, or affine-portal logic, + * please consult the Qman driver for details. This is the same, only simpler + * (no fiddly Qman-specific bits.) */ +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE +#define PORTAL_IRQ_LOCK(p, irqflags) \ + do { \ + if ((p)->is_shared) \ + spin_lock_irqsave(&(p)->sharing_lock, irqflags); \ + else \ + local_irq_save(irqflags); \ + } while (0) +#define PORTAL_IRQ_UNLOCK(p, irqflags) \ + do { \ + if ((p)->is_shared) \ + spin_unlock_irqrestore(&(p)->sharing_lock, irqflags); \ + else \ + local_irq_restore(irqflags); \ + } while (0) +#else +#define PORTAL_IRQ_LOCK(p, irqflags) local_irq_save(irqflags) +#define PORTAL_IRQ_UNLOCK(p, irqflags) local_irq_restore(irqflags) +#endif + +static cpumask_t affine_mask; +static DEFINE_SPINLOCK(affine_mask_lock); +static DEFINE_PER_CPU(struct bman_portal, bman_affine_portal); +static inline struct bman_portal *get_raw_affine_portal(void) +{ + return &get_cpu_var(bman_affine_portal); +} +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE +static inline struct bman_portal *get_affine_portal(void) +{ + struct bman_portal *p = get_raw_affine_portal(); + if (p->sharing_redirect) + return p->sharing_redirect; + return p; +} +#else +#define get_affine_portal() get_raw_affine_portal() +#endif +static inline void put_affine_portal(void) +{ + put_cpu_var(bman_affine_portal); +} + +/* GOTCHA: this object type refers to a pool, it isn't *the* pool. There may be + * more than one such object per Bman buffer pool, eg. if different users of the + * pool are operating via different portals. */ +struct bman_pool { + struct bman_pool_params params; + /* Used for hash-table admin when using depletion notifications. */ + struct bman_portal *portal; + struct bman_pool *next; + /* stockpile state - NULL unless BMAN_POOL_FLAG_STOCKPILE is set */ + struct bm_buffer *sp; + unsigned int sp_fill; +#ifdef CONFIG_FSL_DPA_CHECKING + atomic_t in_use; +#endif +}; + +/* (De)Registration of depletion notification callbacks */ +static void depletion_link(struct bman_portal *portal, struct bman_pool *pool) +{ + __maybe_unused unsigned long irqflags; + pool->portal = portal; + PORTAL_IRQ_LOCK(portal, irqflags); + pool->next = portal->cb[pool->params.bpid]; + portal->cb[pool->params.bpid] = pool; + if (!pool->next) + /* First object for that bpid on this portal, enable the BSCN + * mask bit. */ + bm_isr_bscn_mask(&portal->p, pool->params.bpid, 1); + PORTAL_IRQ_UNLOCK(portal, irqflags); +} +static void depletion_unlink(struct bman_pool *pool) +{ + struct bman_pool *it, *last = NULL; + struct bman_pool **base = &pool->portal->cb[pool->params.bpid]; + __maybe_unused unsigned long irqflags; + PORTAL_IRQ_LOCK(pool->portal, irqflags); + it = *base; /* <-- gotcha, don't do this prior to the irq_save */ + while (it != pool) { + last = it; + it = it->next; + } + if (!last) + *base = pool->next; + else + last->next = pool->next; + if (!last && !pool->next) { + /* Last object for that bpid on this portal, disable the BSCN + * mask bit. */ + bm_isr_bscn_mask(&pool->portal->p, pool->params.bpid, 0); + /* And "forget" that we last saw this pool as depleted */ + bman_depletion_unset(&pool->portal->pools[1], + pool->params.bpid); + } + PORTAL_IRQ_UNLOCK(pool->portal, irqflags); +} + +/* In the case that the application's core loop calls qman_poll() and + * bman_poll(), we ought to balance how often we incur the overheads of the + * slow-path poll. We'll use two decrementer sources. The idle decrementer + * constant is used when the last slow-poll detected no work to do, and the busy + * decrementer constant when the last slow-poll had work to do. */ +#define SLOW_POLL_IDLE 1000 +#define SLOW_POLL_BUSY 10 +static u32 __poll_portal_slow(struct bman_portal *p, u32 is); + +#ifdef CONFIG_FSL_DPA_HAVE_IRQ +/* Portal interrupt handler */ +static irqreturn_t portal_isr(__always_unused int irq, void *ptr) +{ + struct bman_portal *p = ptr; + u32 clear = p->irq_sources; + u32 is = bm_isr_status_read(&p->p) & p->irq_sources; + clear |= __poll_portal_slow(p, is); + bm_isr_status_clear(&p->p, clear); + return IRQ_HANDLED; +} +#endif + +struct bman_portal *bman_create_affine_portal( + const struct bm_portal_config *config, + int recovery_mode __maybe_unused) +{ + struct bman_portal *portal = get_raw_affine_portal(); + struct bm_portal *__p = &portal->p; + const struct bman_depletion *pools = &config->public_cfg.mask; + int ret; + + /* prep the low-level portal struct with the mapped addresses from the + * config, everything that follows depends on it and "config" is more + * for (de)reference... */ + __p->addr.addr_ce = config->addr_virt[BM_ADDR_CE]; + __p->addr.addr_ci = config->addr_virt[BM_ADDR_CI]; + if (bm_rcr_init(__p, bm_rcr_pvb, bm_rcr_cce)) { + pr_err("Bman RCR initialisation failed\n"); + goto fail_rcr; + } + if (bm_mc_init(__p)) { + pr_err("Bman MC initialisation failed\n"); + goto fail_mc; + } + if (bm_isr_init(__p)) { + pr_err("Bman ISR initialisation failed\n"); + goto fail_isr; + } + if (!pools) + portal->pools = NULL; + else { + u8 bpid = 0; + portal->pools = kmalloc(2 * sizeof(*pools), GFP_KERNEL); + if (!portal->pools) + goto fail_pools; + portal->pools[0] = *pools; + bman_depletion_init(portal->pools + 1); + while (bpid < bman_pool_max) { + /* Default to all BPIDs disabled, we enable as required + * at run-time. */ + bm_isr_bscn_mask(__p, bpid, 0); + bpid++; + } + } + portal->slowpoll = 0; +#ifdef CONFIG_FSL_DPA_CAN_WAIT_SYNC + portal->rcri_owned = NULL; +#endif +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE + spin_lock_init(&portal->sharing_lock); + portal->is_shared = config->public_cfg.is_shared; + portal->sharing_redirect = NULL; +#endif + memset(&portal->cb, 0, sizeof(portal->cb)); + /* Write-to-clear any stale interrupt status bits */ + bm_isr_disable_write(__p, 0xffffffff); + portal->irq_sources = 0; + bm_isr_enable_write(__p, portal->irq_sources); + bm_isr_status_clear(__p, 0xffffffff); +#ifdef CONFIG_FSL_DPA_HAVE_IRQ + snprintf(portal->irqname, MAX_IRQNAME, IRQNAME, config->public_cfg.cpu); + if (request_irq(config->public_cfg.irq, portal_isr, + IRQF_NOBALANCING | IRQF_DISABLED, portal->irqname, + portal)) { + pr_err("request_irq() failed\n"); + goto fail_irq; + } + if (config->public_cfg.cpu != -1) { + disable_irq(config->public_cfg.irq); + irq_set_affinity(config->public_cfg.irq, + cpumask_of(config->public_cfg.cpu)); + } + enable_irq(config->public_cfg.irq); + /* Enable the bits that make sense */ + if (!recovery_mode) + bm_isr_uninhibit(__p); +#endif + /* Need RCR to be empty before continuing */ + bm_isr_disable_write(__p, ~BM_PIRQ_RCRI); + ret = bm_rcr_get_fill(__p); + if (ret) { + pr_err("Bman RCR unclean, need recovery\n"); + goto fail_rcr_empty; + } + /* Success */ + portal->config = config; + spin_lock(&affine_mask_lock); + cpumask_set_cpu(config->public_cfg.cpu, &affine_mask); + spin_unlock(&affine_mask_lock); + bm_isr_disable_write(__p, 0); + put_affine_portal(); + return portal; +fail_rcr_empty: +#ifdef CONFIG_FSL_DPA_HAVE_IRQ + free_irq(config->public_cfg.irq, portal); +fail_irq: +#endif + if (portal->pools) + kfree(portal->pools); +fail_pools: + bm_isr_finish(__p); +fail_isr: + bm_mc_finish(__p); +fail_mc: + bm_rcr_finish(__p); +fail_rcr: + put_affine_portal(); + return NULL; +} + +struct bman_portal *bman_create_affine_slave(struct bman_portal *redirect) +{ +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE + struct bman_portal *p = get_raw_affine_portal(); + BUG_ON(p->config); + BUG_ON(p->is_shared); + BUG_ON(!redirect->config->public_cfg.is_shared); + p->irq_sources = 0; + p->sharing_redirect = redirect; + put_affine_portal(); + return p; +#else + BUG(); + return NULL; +#endif +} + +const struct bm_portal_config *bman_destroy_affine_portal(void) +{ + struct bman_portal *bm = get_raw_affine_portal(); + const struct bm_portal_config *pcfg; +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE + if (bm->sharing_redirect) { + bm->sharing_redirect = NULL; + put_affine_portal(); + return NULL; + } + bm->is_shared = 0; +#endif + pcfg = bm->config; + bm_rcr_cce_update(&bm->p); + bm_rcr_cce_update(&bm->p); +#ifdef CONFIG_FSL_DPA_HAVE_IRQ + free_irq(pcfg->public_cfg.irq, bm); +#endif + kfree(bm->pools); + bm_isr_finish(&bm->p); + bm_mc_finish(&bm->p); + bm_rcr_finish(&bm->p); + bm->config = NULL; + spin_lock(&affine_mask_lock); + cpumask_clear_cpu(pcfg->public_cfg.cpu, &affine_mask); + spin_unlock(&affine_mask_lock); + put_affine_portal(); + return pcfg; +} + +/* When release logic waits on available RCR space, we need a global waitqueue + * in the case of "affine" use (as the waits wake on different cpus which means + * different portals - so we can't wait on any per-portal waitqueue). */ +static DECLARE_WAIT_QUEUE_HEAD(affine_queue); + +static u32 __poll_portal_slow(struct bman_portal *p, u32 is) +{ + struct bman_depletion tmp; + u32 ret = is; + + /* There is a gotcha to be aware of. If we do the query before clearing + * the status register, we may miss state changes that occur between the + * two. If we write to clear the status register before the query, the + * cache-enabled query command may overtake the status register write + * unless we use a heavyweight sync (which we don't want). Instead, we + * write-to-clear the status register then *read it back* before doing + * the query, hence the odd while loop with the 'is' accumulation. */ + if (is & BM_PIRQ_BSCN) { + struct bm_mc_result *mcr; + __maybe_unused unsigned long irqflags; + unsigned int i, j; + u32 __is; + bm_isr_status_clear(&p->p, BM_PIRQ_BSCN); + while ((__is = bm_isr_status_read(&p->p)) & BM_PIRQ_BSCN) { + is |= __is; + bm_isr_status_clear(&p->p, BM_PIRQ_BSCN); + } + is &= ~BM_PIRQ_BSCN; + PORTAL_IRQ_LOCK(p, irqflags); + bm_mc_start(&p->p); + bm_mc_commit(&p->p, BM_MCC_VERB_CMD_QUERY); + while (!(mcr = bm_mc_result(&p->p))) + cpu_relax(); + tmp = mcr->query.ds.state; + PORTAL_IRQ_UNLOCK(p, irqflags); + for (i = 0; i < 2; i++) { + int idx = i * 32; + /* tmp is a mask of currently-depleted pools. + * pools[0] is mask of those we care about. + * pools[1] is our previous view (we only want to + * be told about changes). */ + tmp.__state[i] &= p->pools[0].__state[i]; + if (tmp.__state[i] == p->pools[1].__state[i]) + /* fast-path, nothing to see, move along */ + continue; + for (j = 0; j <= 31; j++, idx++) { + struct bman_pool *pool = p->cb[idx]; + int b4 = bman_depletion_get(&p->pools[1], idx); + int af = bman_depletion_get(&tmp, idx); + if (b4 == af) + continue; + while (pool) { + pool->params.cb(p, pool, + pool->params.cb_ctx, af); + pool = pool->next; + } + } + } + p->pools[1] = tmp; + } + + if (is & BM_PIRQ_RCRI) { + __maybe_unused unsigned long irqflags; + PORTAL_IRQ_LOCK(p, irqflags); + bm_rcr_cce_update(&p->p); +#ifdef CONFIG_FSL_DPA_CAN_WAIT_SYNC + /* If waiting for sync, we only cancel the interrupt threshold + * when the ring utilisation hits zero. */ + if (p->rcri_owned) { + if (!bm_rcr_get_fill(&p->p)) { + p->rcri_owned = NULL; + bm_rcr_set_ithresh(&p->p, 0); + } + } else +#endif + bm_rcr_set_ithresh(&p->p, 0); + PORTAL_IRQ_UNLOCK(p, irqflags); + wake_up(&affine_queue); + bm_isr_status_clear(&p->p, BM_PIRQ_RCRI); + is &= ~BM_PIRQ_RCRI; + } + + /* There should be no status register bits left undefined */ + DPA_ASSERT(!is); + return ret; +} + +const struct bman_portal_config *bman_get_portal_config(void) +{ + struct bman_portal *p = get_affine_portal(); + const struct bman_portal_config *ret = &p->config->public_cfg; + put_affine_portal(); + return ret; +} +EXPORT_SYMBOL(bman_get_portal_config); + +u32 bman_irqsource_get(void) +{ + struct bman_portal *p = get_raw_affine_portal(); + u32 ret = p->irq_sources & BM_PIRQ_VISIBLE; + put_affine_portal(); + return ret; +} +EXPORT_SYMBOL(bman_irqsource_get); + +int bman_irqsource_add(__maybe_unused u32 bits) +{ +#ifdef CONFIG_FSL_DPA_HAVE_IRQ + struct bman_portal *p = get_raw_affine_portal(); + int ret = 0; +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE + if (p->sharing_redirect) + ret = -EINVAL; + else +#endif + { + __maybe_unused unsigned long irqflags; + PORTAL_IRQ_LOCK(p, irqflags); + set_bits(bits & BM_PIRQ_VISIBLE, &p->irq_sources); + bm_isr_enable_write(&p->p, p->irq_sources); + PORTAL_IRQ_UNLOCK(p, irqflags); + } + put_affine_portal(); + return ret; +#else + pr_err("No Bman portal IRQ support, mustn't specify IRQ flags!"); + return -EINVAL; +#endif +} +EXPORT_SYMBOL(bman_irqsource_add); + +int bman_irqsource_remove(u32 bits) +{ +#ifdef CONFIG_FSL_DPA_HAVE_IRQ + struct bman_portal *p = get_raw_affine_portal(); + __maybe_unused unsigned long irqflags; + u32 ier; +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE + if (p->sharing_redirect) { + put_affine_portal(); + return -EINVAL; + } +#endif + /* Our interrupt handler only processes+clears status register bits that + * are in p->irq_sources. As we're trimming that mask, if one of them + * were to assert in the status register just before we remove it from + * the enable register, there would be an interrupt-storm when we + * release the IRQ lock. So we wait for the enable register update to + * take effect in h/w (by reading it back) and then clear all other bits + * in the status register. Ie. we clear them from ISR once it's certain + * IER won't allow them to reassert. */ + PORTAL_IRQ_LOCK(p, irqflags); + bits &= BM_PIRQ_VISIBLE; + clear_bits(bits, &p->irq_sources); + bm_isr_enable_write(&p->p, p->irq_sources); + ier = bm_isr_enable_read(&p->p); + /* Using "~ier" (rather than "bits" or "~p->irq_sources") creates a + * data-dependency, ie. to protect against re-ordering. */ + bm_isr_status_clear(&p->p, ~ier); + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + return 0; +#else + pr_err("No Bman portal IRQ support, mustn't specify IRQ flags!"); + return -EINVAL; +#endif +} +EXPORT_SYMBOL(bman_irqsource_remove); + +const cpumask_t *bman_affine_cpus(void) +{ + return &affine_mask; +} +EXPORT_SYMBOL(bman_affine_cpus); + +u32 bman_poll_slow(void) +{ + struct bman_portal *p = get_raw_affine_portal(); + u32 ret; +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE + if (unlikely(p->sharing_redirect)) + ret = (u32)-1; + else +#endif + { + u32 is = bm_isr_status_read(&p->p) & ~p->irq_sources; + ret = __poll_portal_slow(p, is); + bm_isr_status_clear(&p->p, ret); + } + put_affine_portal(); + return ret; +} +EXPORT_SYMBOL(bman_poll_slow); + +/* Legacy wrapper */ +void bman_poll(void) +{ + struct bman_portal *p = get_raw_affine_portal(); +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE + if (unlikely(p->sharing_redirect)) + goto done; +#endif + if (!(p->slowpoll--)) { + u32 is = bm_isr_status_read(&p->p) & ~p->irq_sources; + u32 active = __poll_portal_slow(p, is); + if (active) + p->slowpoll = SLOW_POLL_BUSY; + else + p->slowpoll = SLOW_POLL_IDLE; + } +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE +done: +#endif + put_affine_portal(); +} +EXPORT_SYMBOL(bman_poll); + +int bman_recovery_cleanup_bpid(u32 bpid) +{ + struct bman_pool pool = { + .params = { + .bpid = bpid + } + }; + struct bm_buffer bufs[8]; + int ret = 0; + unsigned int num_bufs = 0; + do { + /* Acquire is all-or-nothing, so we drain in 8s, then in + * 1s for the remainder. */ + if (ret != 1) + ret = bman_acquire(&pool, bufs, 8, 0); + if (ret < 8) + ret = bman_acquire(&pool, bufs, 1, 0); + if (ret > 0) + num_bufs += ret; + } while (ret > 0); + if (num_bufs) + pr_info("Bman: BPID %d recovered (%d bufs)\n", bpid, num_bufs); + return 0; +} +EXPORT_SYMBOL(bman_recovery_cleanup_bpid); + +/* called from bman_driver.c::bman_recovery_exit() only (if exporting, use + * get_raw_affine_portal() and check for the "SLAVE" bit). */ +void bman_recovery_exit_local(void) +{ + struct bman_portal *p = get_affine_portal(); + bm_isr_status_clear(&p->p, 0xffffffff); + bm_isr_uninhibit(&p->p); + put_affine_portal(); +} + +static const u32 zero_thresholds[4] = {0, 0, 0, 0}; + +struct bman_pool *bman_new_pool(const struct bman_pool_params *params) +{ + struct bman_pool *pool = NULL; + u32 bpid; + + if (params->flags & BMAN_POOL_FLAG_DYNAMIC_BPID) { + int ret = bm_pool_new(&bpid); + if (ret) + return NULL; + } else { + if (params->bpid >= bman_pool_max) + return NULL; + bpid = params->bpid; + } +#ifdef CONFIG_FSL_BMAN_CONFIG + if (params->flags & BMAN_POOL_FLAG_THRESH) { + int ret = bm_pool_set(bpid, params->thresholds); + if (ret) + goto err; + } +#else + if (params->flags & BMAN_POOL_FLAG_THRESH) + goto err; +#endif + pool = kmalloc(sizeof(*pool), GFP_KERNEL); + if (!pool) + goto err; + pool->sp = NULL; + pool->sp_fill = 0; + pool->params = *params; +#ifdef CONFIG_FSL_DPA_CHECKING + atomic_set(&pool->in_use, 1); +#endif + if (params->flags & BMAN_POOL_FLAG_DYNAMIC_BPID) + pool->params.bpid = bpid; + if (params->flags & BMAN_POOL_FLAG_STOCKPILE) { + pool->sp = kmalloc(sizeof(struct bm_buffer) * BMAN_STOCKPILE_SZ, + GFP_KERNEL); + if (!pool->sp) + goto err; + } + if (pool->params.flags & BMAN_POOL_FLAG_DEPLETION) { + struct bman_portal *p = get_affine_portal(); + if (!p->pools || !bman_depletion_get(&p->pools[0], bpid)) { + pr_err("Depletion events disabled for bpid %d\n", bpid); + goto err; + } + depletion_link(p, pool); + put_affine_portal(); + } + return pool; +err: +#ifdef CONFIG_FSL_BMAN_CONFIG + if (params->flags & BMAN_POOL_FLAG_THRESH) + bm_pool_set(bpid, zero_thresholds); +#endif + if (params->flags & BMAN_POOL_FLAG_DYNAMIC_BPID) + bm_pool_free(bpid); + if (pool) { + if (pool->sp) + kfree(pool->sp); + kfree(pool); + } + return NULL; +} +EXPORT_SYMBOL(bman_new_pool); + +void bman_free_pool(struct bman_pool *pool) +{ +#ifdef CONFIG_FSL_BMAN_CONFIG + if (pool->params.flags & BMAN_POOL_FLAG_THRESH) + bm_pool_set(pool->params.bpid, zero_thresholds); +#endif + if (pool->params.flags & BMAN_POOL_FLAG_DEPLETION) + depletion_unlink(pool); + if (pool->params.flags & BMAN_POOL_FLAG_STOCKPILE) { + if (pool->sp_fill) + pr_err("Stockpile not flushed, has %u in bpid %u.\n", + pool->sp_fill, pool->params.bpid); + kfree(pool->sp); + pool->sp = NULL; + pool->params.flags ^= BMAN_POOL_FLAG_STOCKPILE; + } + if (pool->params.flags & BMAN_POOL_FLAG_DYNAMIC_BPID) { + /* When releasing a BPID to the dynamic allocator, that pool + * must be *empty*. This code makes it so by dropping everything + * into the bit-bucket. This ignores whether or not it was a + * mistake (or a leak) on the caller's part not to drain the + * pool beforehand. */ + struct bm_buffer bufs[8]; + int ret = 0; + do { + /* Acquire is all-or-nothing, so we drain in 8s, then in + * 1s for the remainder. */ + if (ret != 1) + ret = bman_acquire(pool, bufs, 8, 0); + if (ret < 8) + ret = bman_acquire(pool, bufs, 1, 0); + } while (ret > 0); + bm_pool_free(pool->params.bpid); + } + kfree(pool); +} +EXPORT_SYMBOL(bman_free_pool); + +const struct bman_pool_params *bman_get_params(const struct bman_pool *pool) +{ + return &pool->params; +} +EXPORT_SYMBOL(bman_get_params); + +static noinline void update_rcr_ci(struct bman_portal *p, u8 avail) +{ + if (avail) + bm_rcr_cce_prefetch(&p->p); + else + bm_rcr_cce_update(&p->p); +} + +int bman_rcr_is_empty(void) +{ + __maybe_unused unsigned long irqflags; + struct bman_portal *p = get_affine_portal(); + u8 avail; + + PORTAL_IRQ_LOCK(p, irqflags); + update_rcr_ci(p, 0); + avail = bm_rcr_get_fill(&p->p); + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + return (avail == 0); +} +EXPORT_SYMBOL(bman_rcr_is_empty); + +static inline struct bm_rcr_entry *try_rel_start(struct bman_portal **p, +#ifdef CONFIG_FSL_DPA_CAN_WAIT + __maybe_unused struct bman_pool *pool, +#endif + __maybe_unused unsigned long *irqflags, + __maybe_unused u32 flags) +{ + struct bm_rcr_entry *r; + u8 avail; + + *p = get_affine_portal(); + PORTAL_IRQ_LOCK(*p, (*irqflags)); +#ifdef CONFIG_FSL_DPA_CAN_WAIT_SYNC + if (unlikely((flags & BMAN_RELEASE_FLAG_WAIT) && + (flags & BMAN_RELEASE_FLAG_WAIT_SYNC))) { + if ((*p)->rcri_owned) { + PORTAL_IRQ_UNLOCK(*p, (*irqflags)); + put_affine_portal(); + return NULL; + } + (*p)->rcri_owned = pool; + } +#endif + avail = bm_rcr_get_avail(&(*p)->p); + if (avail < 2) + update_rcr_ci(*p, avail); + r = bm_rcr_start(&(*p)->p); + if (unlikely(!r)) { +#ifdef CONFIG_FSL_DPA_CAN_WAIT_SYNC + if (unlikely((flags & BMAN_RELEASE_FLAG_WAIT) && + (flags & BMAN_RELEASE_FLAG_WAIT_SYNC))) + (*p)->rcri_owned = NULL; +#endif + PORTAL_IRQ_UNLOCK(*p, (*irqflags)); + put_affine_portal(); + } + return r; +} + +#ifdef CONFIG_FSL_DPA_CAN_WAIT +static noinline struct bm_rcr_entry *__wait_rel_start(struct bman_portal **p, + struct bman_pool *pool, + __maybe_unused unsigned long *irqflags, + u32 flags) +{ + struct bm_rcr_entry *rcr = try_rel_start(p, pool, irqflags, flags); + if (!rcr) + bm_rcr_set_ithresh(&(*p)->p, 1); + return rcr; +} + +static noinline struct bm_rcr_entry *wait_rel_start(struct bman_portal **p, + struct bman_pool *pool, + __maybe_unused unsigned long *irqflags, + u32 flags) +{ + struct bm_rcr_entry *rcr; +#ifndef CONFIG_FSL_DPA_CAN_WAIT_SYNC + pool = NULL; +#endif + if (flags & BMAN_RELEASE_FLAG_WAIT_INT) + wait_event_interruptible(affine_queue, + (rcr = __wait_rel_start(p, pool, irqflags, flags))); + else + wait_event(affine_queue, + (rcr = __wait_rel_start(p, pool, irqflags, flags))); + return rcr; +} +#endif + +/* to facilitate better copying of bufs into the ring without either (a) copying + * noise into the first byte (prematurely triggering the command), nor (b) being + * very inefficient by copying small fields using read-modify-write */ +struct overlay_bm_buffer { + u32 first; + u32 second; +}; + +static inline int __bman_release(struct bman_pool *pool, + const struct bm_buffer *bufs, u8 num, u32 flags) +{ + struct bman_portal *p; + struct bm_rcr_entry *r; + struct overlay_bm_buffer *o_dest; + struct overlay_bm_buffer *o_src = (struct overlay_bm_buffer *)&bufs[0]; + __maybe_unused unsigned long irqflags; + u32 i = num - 1; + +#ifdef CONFIG_FSL_DPA_CAN_WAIT + if (flags & BMAN_RELEASE_FLAG_WAIT) + r = wait_rel_start(&p, pool, &irqflags, flags); + else + r = try_rel_start(&p, pool, &irqflags, flags); +#else + r = try_rel_start(&p, &irqflags, flags); +#endif + if (!r) + return -EBUSY; + /* We can copy all but the first entry, as this can trigger badness + * with the valid-bit. Use the overlay to mask the verb byte. */ + o_dest = (struct overlay_bm_buffer *)&r->bufs[0]; + o_dest->first = (o_src->first & 0x0000ffff) | + (((u32)pool->params.bpid << 16) & 0x00ff0000); + o_dest->second = o_src->second; + if (i) + copy_words(&r->bufs[1], &bufs[1], i * sizeof(bufs[0])); + bm_rcr_pvb_commit(&p->p, BM_RCR_VERB_CMD_BPID_SINGLE | + (num & BM_RCR_VERB_BUFCOUNT_MASK)); +#ifdef CONFIG_FSL_DPA_CAN_WAIT_SYNC + /* if we wish to sync we need to set the threshold after h/w sees the + * new ring entry. As we're mixing cache-enabled and cache-inhibited + * accesses, this requires a heavy-weight sync. */ + if (unlikely((flags & BMAN_RELEASE_FLAG_WAIT) && + (flags & BMAN_RELEASE_FLAG_WAIT_SYNC))) { + hwsync(); + bm_rcr_set_ithresh(&p->p, 1); + } +#endif + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); +#ifdef CONFIG_FSL_DPA_CAN_WAIT_SYNC + if (unlikely((flags & BMAN_RELEASE_FLAG_WAIT) && + (flags & BMAN_RELEASE_FLAG_WAIT_SYNC))) { + if (flags & BMAN_RELEASE_FLAG_WAIT_INT) + wait_event_interruptible(affine_queue, + (p->rcri_owned != pool)); + else + wait_event(affine_queue, (p->rcri_owned != pool)); + } +#endif + return 0; +} + +int bman_release(struct bman_pool *pool, const struct bm_buffer *bufs, u8 num, + u32 flags) +{ + int ret = 0; +#ifdef CONFIG_FSL_DPA_CHECKING + if (!num || (num > 8)) + return -EINVAL; + if (pool->params.flags & BMAN_POOL_FLAG_NO_RELEASE) + return -EINVAL; + if (!atomic_dec_and_test(&pool->in_use)) { + pr_crit("Parallel attempts to enter bman_released() detected."); + panic("only one instance of bman_released/acquired allowed"); + } +#endif + /* Without stockpile, this API is a pass-through to the h/w operation */ + if (!(pool->params.flags & BMAN_POOL_FLAG_STOCKPILE)) { + ret = __bman_release(pool, bufs, num, flags); + goto release_done; + } + /* This needs some explanation. Adding the given buffers may take the + * stockpile over the threshold, but in fact the stockpile may already + * *be* over the threshold if a previous release-to-hw attempt had + * failed. So we have 3 cases to cover; + * 1. we add to the stockpile and don't hit the threshold, + * 2. we add to the stockpile, hit the threshold and release-to-hw, + * 3. we have to release-to-hw before adding to the stockpile + * (not enough room in the stockpile for case 2). + * Our constraints on thresholds guarantee that in case 3, there must be + * at least 8 bufs already in the stockpile, so all release-to-hw ops + * are for 8 bufs. Despite all this, the API must indicate whether the + * given buffers were taken off the caller's hands, irrespective of + * whether a release-to-hw was attempted. */ + while (num) { + /* Add buffers to stockpile if they fit */ + if ((pool->sp_fill + num) < BMAN_STOCKPILE_SZ) { + copy_words(pool->sp + pool->sp_fill, bufs, + sizeof(struct bm_buffer) * num); + pool->sp_fill += num; + num = 0; /* --> will return success no matter what */ + } + /* Do hw op if hitting the high-water threshold */ + if ((pool->sp_fill + num) >= BMAN_STOCKPILE_HIGH) { + ret = __bman_release(pool, + pool->sp + (pool->sp_fill - 8), 8, flags); + if (ret) { + ret = (num ? ret : 0); + goto release_done; + } + pool->sp_fill -= 8; + } + } +release_done: +#ifdef CONFIG_FSL_DPA_CHECKING + atomic_inc(&pool->in_use); +#endif + return ret; +} +EXPORT_SYMBOL(bman_release); + +static inline int __bman_acquire(struct bman_pool *pool, struct bm_buffer *bufs, + u8 num) +{ + struct bman_portal *p = get_affine_portal(); + struct bm_mc_command *mcc; + struct bm_mc_result *mcr; + __maybe_unused unsigned long irqflags; + int ret; + + PORTAL_IRQ_LOCK(p, irqflags); + mcc = bm_mc_start(&p->p); + mcc->acquire.bpid = pool->params.bpid; + bm_mc_commit(&p->p, BM_MCC_VERB_CMD_ACQUIRE | + (num & BM_MCC_VERB_ACQUIRE_BUFCOUNT)); + while (!(mcr = bm_mc_result(&p->p))) + cpu_relax(); + ret = mcr->verb & BM_MCR_VERB_ACQUIRE_BUFCOUNT; + if (bufs) + copy_words(&bufs[0], &mcr->acquire.bufs[0], + num * sizeof(bufs[0])); + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + if (ret != num) + ret = -ENOMEM; + return ret; +} + +int bman_acquire(struct bman_pool *pool, struct bm_buffer *bufs, u8 num, + u32 flags) +{ + int ret = 0; +#ifdef CONFIG_FSL_DPA_CHECKING + if (!num || (num > 8)) + return -EINVAL; + if (pool->params.flags & BMAN_POOL_FLAG_ONLY_RELEASE) + return -EINVAL; + if (!atomic_dec_and_test(&pool->in_use)) { + pr_crit("Parallel attempts to enter bman_acquire() detected."); + panic("only one instance of bman_released/acquired allowed"); + } +#endif + /* Without stockpile, this API is a pass-through to the h/w operation */ + if (!(pool->params.flags & BMAN_POOL_FLAG_STOCKPILE)) { + ret = __bman_acquire(pool, bufs, num); + goto acquire_done; + } + /* Only need a h/w op if we'll hit the low-water thresh */ + if (!(flags & BMAN_ACQUIRE_FLAG_STOCKPILE) && + (pool->sp_fill <= (BMAN_STOCKPILE_LOW + num))) { + /* refill stockpile with max amount, but if max amount + * isn't available, try amount the user wants */ + int bufcount = 8; + ret = __bman_acquire(pool, pool->sp + pool->sp_fill, bufcount); + if (ret < 0 && bufcount != num) { + bufcount = num; + /* Maybe buffer pool has less than 8 */ + ret = __bman_acquire(pool, pool->sp + pool->sp_fill, + bufcount); + } + if (ret < 0) + goto hw_starved; + DPA_ASSERT(ret == bufcount); + pool->sp_fill += bufcount; + } else { +hw_starved: + if (pool->sp_fill < num) { + ret = -ENOMEM; + goto acquire_done; + } + } + copy_words(bufs, pool->sp + (pool->sp_fill - num), + sizeof(struct bm_buffer) * num); + pool->sp_fill -= num; + ret = num; +acquire_done: +#ifdef CONFIG_FSL_DPA_CHECKING + atomic_inc(&pool->in_use); +#endif + return ret; +} +EXPORT_SYMBOL(bman_acquire); + +int bman_flush_stockpile(struct bman_pool *pool, u32 flags) +{ + u8 num; + int ret; + + while (pool->sp_fill) { + num = ((pool->sp_fill > 8) ? 8 : pool->sp_fill); + ret = __bman_release(pool, pool->sp + (pool->sp_fill - num), + num, flags); + if (ret) + return ret; + pool->sp_fill -= num; + } + return 0; +} +EXPORT_SYMBOL(bman_flush_stockpile); + +int bman_query_pools(struct bm_pool_state *state) +{ + struct bman_portal *p = get_affine_portal(); + struct bm_mc_result *mcr; + __maybe_unused unsigned long irqflags; + + PORTAL_IRQ_LOCK(p, irqflags); + bm_mc_start(&p->p); + bm_mc_commit(&p->p, BM_MCC_VERB_CMD_QUERY); + while (!(mcr = bm_mc_result(&p->p))) + cpu_relax(); + DPA_ASSERT((mcr->verb & BM_MCR_VERB_CMD_MASK) == BM_MCR_VERB_CMD_QUERY); + *state = mcr->query; + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + return 0; +} +EXPORT_SYMBOL(bman_query_pools); + --- linux-3.13.0.orig/drivers/staging/fsl_qbman/bman_low.h +++ linux-3.13.0/drivers/staging/fsl_qbman/bman_low.h @@ -0,0 +1,494 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 "bman_private.h" + +/***************************/ +/* Portal register assists */ +/***************************/ + +/* Cache-inhibited register offsets */ +#define REG_RCR_PI_CINH 0x0000 +#define REG_RCR_CI_CINH 0x0004 +#define REG_RCR_ITR 0x0008 +#define REG_CFG 0x0100 +#define REG_SCN(n) (0x0200 + ((n) << 2)) +#define REG_ISR 0x0e00 + +/* Cache-enabled register offsets */ +#define CL_CR 0x0000 +#define CL_RR0 0x0100 +#define CL_RR1 0x0140 +#define CL_RCR 0x1000 +#define CL_RCR_PI_CENA 0x3000 +#define CL_RCR_CI_CENA 0x3100 + +/* BTW, the drivers (and h/w programming model) already obtain the required + * synchronisation for portal accesses via lwsync(), hwsync(), and + * data-dependencies. Use of barrier()s or other order-preserving primitives + * simply degrade performance. Hence the use of the __raw_*() interfaces, which + * simply ensure that the compiler treats the portal registers as volatile (ie. + * non-coherent). */ + +/* Cache-inhibited register access. */ +#define __bm_in(bm, o) __raw_readl((bm)->addr_ci + (o)) +#define __bm_out(bm, o, val) __raw_writel((val), (bm)->addr_ci + (o)) +#define bm_in(reg) __bm_in(&portal->addr, REG_##reg) +#define bm_out(reg, val) __bm_out(&portal->addr, REG_##reg, val) + +/* Cache-enabled (index) register access */ +#define __bm_cl_touch_ro(bm, o) dcbt_ro((bm)->addr_ce + (o)) +#define __bm_cl_touch_rw(bm, o) dcbt_rw((bm)->addr_ce + (o)) +#define __bm_cl_in(bm, o) __raw_readl((bm)->addr_ce + (o)) +#define __bm_cl_out(bm, o, val) \ + do { \ + u32 *__tmpclout = (bm)->addr_ce + (o); \ + __raw_writel((val), __tmpclout); \ + dcbf(__tmpclout); \ + } while (0) +#define __bm_cl_invalidate(bm, o) dcbi((bm)->addr_ce + (o)) +#define bm_cl_touch_ro(reg) __bm_cl_touch_ro(&portal->addr, CL_##reg##_CENA) +#define bm_cl_touch_rw(reg) __bm_cl_touch_rw(&portal->addr, CL_##reg##_CENA) +#define bm_cl_in(reg) __bm_cl_in(&portal->addr, CL_##reg##_CENA) +#define bm_cl_out(reg, val) __bm_cl_out(&portal->addr, CL_##reg##_CENA, val) +#define bm_cl_invalidate(reg) __bm_cl_invalidate(&portal->addr, CL_##reg##_CENA) + +/* Cyclic helper for rings. FIXME: once we are able to do fine-grain perf + * analysis, look at using the "extra" bit in the ring index registers to avoid + * cyclic issues. */ +static inline u8 cyc_diff(u8 ringsize, u8 first, u8 last) +{ + /* 'first' is included, 'last' is excluded */ + if (first <= last) + return last - first; + return ringsize + last - first; +} + +/* Portal modes. + * Enum types; + * pmode == production mode + * cmode == consumption mode, + * Enum values use 3 letter codes. First letter matches the portal mode, + * remaining two letters indicate; + * ci == cache-inhibited portal register + * ce == cache-enabled portal register + * vb == in-band valid-bit (cache-enabled) + */ +enum bm_rcr_pmode { /* matches BCSP_CFG::RPM */ + bm_rcr_pci = 0, /* PI index, cache-inhibited */ + bm_rcr_pce = 1, /* PI index, cache-enabled */ + bm_rcr_pvb = 2 /* valid-bit */ +}; +enum bm_rcr_cmode { /* s/w-only */ + bm_rcr_cci, /* CI index, cache-inhibited */ + bm_rcr_cce /* CI index, cache-enabled */ +}; + + +/* ------------------------- */ +/* --- Portal structures --- */ + +#define BM_RCR_SIZE 8 + +struct bm_rcr { + struct bm_rcr_entry *ring, *cursor; + u8 ci, available, ithresh, vbit; +#ifdef CONFIG_FSL_DPA_CHECKING + u32 busy; + enum bm_rcr_pmode pmode; + enum bm_rcr_cmode cmode; +#endif +}; + +struct bm_mc { + struct bm_mc_command *cr; + struct bm_mc_result *rr; + u8 rridx, vbit; +#ifdef CONFIG_FSL_DPA_CHECKING + enum { + /* Can only be _mc_start()ed */ + mc_idle, + /* Can only be _mc_commit()ed or _mc_abort()ed */ + mc_user, + /* Can only be _mc_retry()ed */ + mc_hw + } state; +#endif +}; + +struct bm_addr { + void __iomem *addr_ce; /* cache-enabled */ + void __iomem *addr_ci; /* cache-inhibited */ +}; + +struct bm_portal { + struct bm_addr addr; + struct bm_rcr rcr; + struct bm_mc mc; + struct bm_portal_config config; +} ____cacheline_aligned; + + +/* --------------- */ +/* --- RCR API --- */ + +/* Bit-wise logic to wrap a ring pointer by clearing the "carry bit" */ +#define RCR_CARRYCLEAR(p) \ + (void *)((unsigned long)(p) & (~(unsigned long)(BM_RCR_SIZE << 6))) + +/* Bit-wise logic to convert a ring pointer to a ring index */ +static inline u8 RCR_PTR2IDX(struct bm_rcr_entry *e) +{ + return ((uintptr_t)e >> 6) & (BM_RCR_SIZE - 1); +} + +/* Increment the 'cursor' ring pointer, taking 'vbit' into account */ +static inline void RCR_INC(struct bm_rcr *rcr) +{ + /* NB: this is odd-looking, but experiments show that it generates + * fast code with essentially no branching overheads. We increment to + * the next RCR pointer and handle overflow and 'vbit'. */ + struct bm_rcr_entry *partial = rcr->cursor + 1; + rcr->cursor = RCR_CARRYCLEAR(partial); + if (partial != rcr->cursor) + rcr->vbit ^= BM_RCR_VERB_VBIT; +} + +static inline int bm_rcr_init(struct bm_portal *portal, enum bm_rcr_pmode pmode, + __maybe_unused enum bm_rcr_cmode cmode) +{ + /* This use of 'register', as well as all other occurances, is because + * it has been observed to generate much faster code with gcc than is + * otherwise the case. */ + register struct bm_rcr *rcr = &portal->rcr; + u32 cfg; + u8 pi; + + rcr->ring = portal->addr.addr_ce + CL_RCR; + rcr->ci = bm_in(RCR_CI_CINH) & (BM_RCR_SIZE - 1); + pi = bm_in(RCR_PI_CINH) & (BM_RCR_SIZE - 1); + rcr->cursor = rcr->ring + pi; + rcr->vbit = (bm_in(RCR_PI_CINH) & BM_RCR_SIZE) ? BM_RCR_VERB_VBIT : 0; + rcr->available = BM_RCR_SIZE - 1 - cyc_diff(BM_RCR_SIZE, rcr->ci, pi); + rcr->ithresh = bm_in(RCR_ITR); +#ifdef CONFIG_FSL_DPA_CHECKING + rcr->busy = 0; + rcr->pmode = pmode; + rcr->cmode = cmode; +#endif + cfg = (bm_in(CFG) & 0xffffffe0) | (pmode & 0x3); /* BCSP_CFG::RPM */ + bm_out(CFG, cfg); + return 0; +} + +static inline void bm_rcr_finish(struct bm_portal *portal) +{ + register struct bm_rcr *rcr = &portal->rcr; + u8 pi = bm_in(RCR_PI_CINH) & (BM_RCR_SIZE - 1); + u8 ci = bm_in(RCR_CI_CINH) & (BM_RCR_SIZE - 1); + DPA_ASSERT(!rcr->busy); + if (pi != RCR_PTR2IDX(rcr->cursor)) + pr_crit("losing uncommited RCR entries\n"); + if (ci != rcr->ci) + pr_crit("missing existing RCR completions\n"); + if (rcr->ci != RCR_PTR2IDX(rcr->cursor)) + pr_crit("RCR destroyed unquiesced\n"); +} + +static inline struct bm_rcr_entry *bm_rcr_start(struct bm_portal *portal) +{ + register struct bm_rcr *rcr = &portal->rcr; + DPA_ASSERT(!rcr->busy); + if (!rcr->available) + return NULL; +#ifdef CONFIG_FSL_DPA_CHECKING + rcr->busy = 1; +#endif + dcbz_64(rcr->cursor); + return rcr->cursor; +} + +static inline void bm_rcr_abort(struct bm_portal *portal) +{ + __maybe_unused register struct bm_rcr *rcr = &portal->rcr; + DPA_ASSERT(rcr->busy); +#ifdef CONFIG_FSL_DPA_CHECKING + rcr->busy = 0; +#endif +} + +static inline struct bm_rcr_entry *bm_rcr_pend_and_next( + struct bm_portal *portal, u8 myverb) +{ + register struct bm_rcr *rcr = &portal->rcr; + DPA_ASSERT(rcr->busy); + DPA_ASSERT(rcr->pmode != bm_rcr_pvb); + if (rcr->available == 1) + return NULL; + rcr->cursor->__dont_write_directly__verb = myverb | rcr->vbit; + dcbf_64(rcr->cursor); + RCR_INC(rcr); + rcr->available--; + dcbz_64(rcr->cursor); + return rcr->cursor; +} + +static inline void bm_rcr_pci_commit(struct bm_portal *portal, u8 myverb) +{ + register struct bm_rcr *rcr = &portal->rcr; + DPA_ASSERT(rcr->busy); + DPA_ASSERT(rcr->pmode == bm_rcr_pci); + rcr->cursor->__dont_write_directly__verb = myverb | rcr->vbit; + RCR_INC(rcr); + rcr->available--; + hwsync(); + bm_out(RCR_PI_CINH, RCR_PTR2IDX(rcr->cursor)); +#ifdef CONFIG_FSL_DPA_CHECKING + rcr->busy = 0; +#endif +} + +static inline void bm_rcr_pce_prefetch(struct bm_portal *portal) +{ + __maybe_unused register struct bm_rcr *rcr = &portal->rcr; + DPA_ASSERT(rcr->pmode == bm_rcr_pce); + bm_cl_invalidate(RCR_PI); + bm_cl_touch_rw(RCR_PI); +} + +static inline void bm_rcr_pce_commit(struct bm_portal *portal, u8 myverb) +{ + register struct bm_rcr *rcr = &portal->rcr; + DPA_ASSERT(rcr->busy); + DPA_ASSERT(rcr->pmode == bm_rcr_pce); + rcr->cursor->__dont_write_directly__verb = myverb | rcr->vbit; + RCR_INC(rcr); + rcr->available--; + lwsync(); + bm_cl_out(RCR_PI, RCR_PTR2IDX(rcr->cursor)); +#ifdef CONFIG_FSL_DPA_CHECKING + rcr->busy = 0; +#endif +} + +static inline void bm_rcr_pvb_commit(struct bm_portal *portal, u8 myverb) +{ + register struct bm_rcr *rcr = &portal->rcr; + struct bm_rcr_entry *rcursor; + DPA_ASSERT(rcr->busy); + DPA_ASSERT(rcr->pmode == bm_rcr_pvb); + lwsync(); + rcursor = rcr->cursor; + rcursor->__dont_write_directly__verb = myverb | rcr->vbit; + dcbf_64(rcursor); + RCR_INC(rcr); + rcr->available--; +#ifdef CONFIG_FSL_DPA_CHECKING + rcr->busy = 0; +#endif +} + +static inline u8 bm_rcr_cci_update(struct bm_portal *portal) +{ + register struct bm_rcr *rcr = &portal->rcr; + u8 diff, old_ci = rcr->ci; + DPA_ASSERT(rcr->cmode == bm_rcr_cci); + rcr->ci = bm_in(RCR_CI_CINH) & (BM_RCR_SIZE - 1); + diff = cyc_diff(BM_RCR_SIZE, old_ci, rcr->ci); + rcr->available += diff; + return diff; +} + +static inline void bm_rcr_cce_prefetch(struct bm_portal *portal) +{ + __maybe_unused register struct bm_rcr *rcr = &portal->rcr; + DPA_ASSERT(rcr->cmode == bm_rcr_cce); + bm_cl_touch_ro(RCR_CI); +} + +static inline u8 bm_rcr_cce_update(struct bm_portal *portal) +{ + register struct bm_rcr *rcr = &portal->rcr; + u8 diff, old_ci = rcr->ci; + DPA_ASSERT(rcr->cmode == bm_rcr_cce); + rcr->ci = bm_cl_in(RCR_CI) & (BM_RCR_SIZE - 1); + bm_cl_invalidate(RCR_CI); + diff = cyc_diff(BM_RCR_SIZE, old_ci, rcr->ci); + rcr->available += diff; + return diff; +} + +static inline u8 bm_rcr_get_ithresh(struct bm_portal *portal) +{ + register struct bm_rcr *rcr = &portal->rcr; + return rcr->ithresh; +} + +static inline void bm_rcr_set_ithresh(struct bm_portal *portal, u8 ithresh) +{ + register struct bm_rcr *rcr = &portal->rcr; + rcr->ithresh = ithresh; + bm_out(RCR_ITR, ithresh); +} + +static inline u8 bm_rcr_get_avail(struct bm_portal *portal) +{ + register struct bm_rcr *rcr = &portal->rcr; + return rcr->available; +} + +static inline u8 bm_rcr_get_fill(struct bm_portal *portal) +{ + register struct bm_rcr *rcr = &portal->rcr; + return BM_RCR_SIZE - 1 - rcr->available; +} + + +/* ------------------------------ */ +/* --- Management command API --- */ + +static inline int bm_mc_init(struct bm_portal *portal) +{ + register struct bm_mc *mc = &portal->mc; + mc->cr = portal->addr.addr_ce + CL_CR; + mc->rr = portal->addr.addr_ce + CL_RR0; + mc->rridx = (__raw_readb(&mc->cr->__dont_write_directly__verb) & + BM_MCC_VERB_VBIT) ? 0 : 1; + mc->vbit = mc->rridx ? BM_MCC_VERB_VBIT : 0; +#ifdef CONFIG_FSL_DPA_CHECKING + mc->state = mc_idle; +#endif + return 0; +} + +static inline void bm_mc_finish(struct bm_portal *portal) +{ + __maybe_unused register struct bm_mc *mc = &portal->mc; + DPA_ASSERT(mc->state == mc_idle); +#ifdef CONFIG_FSL_DPA_CHECKING + if (mc->state != mc_idle) + pr_crit("Losing incomplete MC command\n"); +#endif +} + +static inline struct bm_mc_command *bm_mc_start(struct bm_portal *portal) +{ + register struct bm_mc *mc = &portal->mc; + DPA_ASSERT(mc->state == mc_idle); +#ifdef CONFIG_FSL_DPA_CHECKING + mc->state = mc_user; +#endif + dcbz_64(mc->cr); + return mc->cr; +} + +static inline void bm_mc_abort(struct bm_portal *portal) +{ + __maybe_unused register struct bm_mc *mc = &portal->mc; + DPA_ASSERT(mc->state == mc_user); +#ifdef CONFIG_FSL_DPA_CHECKING + mc->state = mc_idle; +#endif +} + +static inline void bm_mc_commit(struct bm_portal *portal, u8 myverb) +{ + register struct bm_mc *mc = &portal->mc; + struct bm_mc_result *rr = mc->rr + mc->rridx; + DPA_ASSERT(mc->state == mc_user); + lwsync(); + mc->cr->__dont_write_directly__verb = myverb | mc->vbit; + dcbf(mc->cr); + dcbit_ro(rr); +#ifdef CONFIG_FSL_DPA_CHECKING + mc->state = mc_hw; +#endif +} + +static inline struct bm_mc_result *bm_mc_result(struct bm_portal *portal) +{ + register struct bm_mc *mc = &portal->mc; + struct bm_mc_result *rr = mc->rr + mc->rridx; + DPA_ASSERT(mc->state == mc_hw); + /* The inactive response register's verb byte always returns zero until + * its command is submitted and completed. This includes the valid-bit, + * in case you were wondering... */ + if (!__raw_readb(&rr->verb)) { + dcbit_ro(rr); + return NULL; + } + mc->rridx ^= 1; + mc->vbit ^= BM_MCC_VERB_VBIT; +#ifdef CONFIG_FSL_DPA_CHECKING + mc->state = mc_idle; +#endif + return rr; +} + + +/* ------------------------------------- */ +/* --- Portal interrupt register API --- */ + +static inline int bm_isr_init(__always_unused struct bm_portal *portal) +{ + return 0; +} + +static inline void bm_isr_finish(__always_unused struct bm_portal *portal) +{ +} + +#define SCN_REG(bpid) REG_SCN((bpid) / 32) +#define SCN_BIT(bpid) (0x80000000 >> (bpid & 31)) +static inline void bm_isr_bscn_mask(struct bm_portal *portal, u8 bpid, + int enable) +{ + u32 val; + DPA_ASSERT(bpid < bman_pool_max); + /* REG_SCN for bpid=0..31, REG_SCN+4 for bpid=32..63 */ + val = __bm_in(&portal->addr, SCN_REG(bpid)); + if (enable) + val |= SCN_BIT(bpid); + else + val &= ~SCN_BIT(bpid); + __bm_out(&portal->addr, SCN_REG(bpid), val); +} + +static inline u32 __bm_isr_read(struct bm_portal *portal, enum bm_isr_reg n) +{ + return __bm_in(&portal->addr, REG_ISR + (n << 2)); +} + +static inline void __bm_isr_write(struct bm_portal *portal, enum bm_isr_reg n, + u32 val) +{ + __bm_out(&portal->addr, REG_ISR + (n << 2), val); +} --- linux-3.13.0.orig/drivers/staging/fsl_qbman/bman_private.h +++ linux-3.13.0/drivers/staging/fsl_qbman/bman_private.h @@ -0,0 +1,149 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 "dpa_sys.h" +#include + +/* Revision info (for errata and feature handling) */ +#define BMAN_REV10 0x0100 +#define BMAN_REV20 0x0200 +extern u16 bman_ip_rev; /* 0 if uninitialised, otherwise QMAN_REVx */ + +/* + * Global variables of the max portal/pool number this bman version supported + */ +extern u16 bman_pool_max; + +/* used by CCSR and portal interrupt code */ +enum bm_isr_reg { + bm_isr_status = 0, + bm_isr_enable = 1, + bm_isr_disable = 2, + bm_isr_inhibit = 3 +}; + +#define BM_ADDR_CE 0 +#define BM_ADDR_CI 1 +struct bm_portal_config { + /* Corenet portal addresses; + * [0]==cache-enabled, [1]==cache-inhibited. */ + __iomem void *addr_virt[2]; + struct resource addr_phys[2]; + /* Allow these to be joined in lists */ + struct list_head list; + /* User-visible portal configuration settings */ + struct bman_portal_config public_cfg; +}; + +#ifdef CONFIG_FSL_BMAN_CONFIG +/* Hooks from bman_driver.c to bman_config.c */ +int bman_init_error_int(struct device_node *node); +#endif + +/* Hooks from bman_driver.c in to bman_high.c */ +struct bman_portal *bman_create_affine_portal( + const struct bm_portal_config *config, + int recovery_mode); +struct bman_portal *bman_create_affine_slave(struct bman_portal *redirect); +const struct bm_portal_config *bman_destroy_affine_portal(void); +void bman_recovery_exit_local(void); + +/* Pool logic in the portal driver, during initialisation, needs to know if + * there's access to CCSR or not (if not, it'll cripple the pool allocator). */ +#ifdef CONFIG_FSL_BMAN_CONFIG +int bman_have_ccsr(void); +#else +#define bman_have_ccsr() 0 +#endif + +/* Stockpile build constants. The _LOW value: when bman_acquire() is called and + * the stockpile fill-level is <= _LOW, an acquire is attempted from h/w but it + * might fail (if the buffer pool is depleted). So this value provides some + * "stagger" in that the bman_acquire() function will only fail if lots of bufs + * are requested at once or if h/w has been tested a couple of times without + * luck. The _HIGH value: when bman_release() is called and the stockpile + * fill-level is >= _HIGH, a release is attempted to h/w but it might fail (if + * the release ring is full). So this value provides some "stagger" so that + * ring-access is retried a couple of times prior to the API returning a + * failure. The following *must* be true; + * BMAN_STOCKPILE_HIGH-BMAN_STOCKPILE_LOW > 8 + * (to avoid thrashing) + * BMAN_STOCKPILE_SZ >= 16 + * (as the release logic expects to either send 8 buffers to hw prior to + * adding the given buffers to the stockpile or add the buffers to the + * stockpile before sending 8 to hw, as the API must be an all-or-nothing + * success/fail.) + */ +#define BMAN_STOCKPILE_SZ 16u /* number of bufs in per-pool cache */ +#define BMAN_STOCKPILE_LOW 2u /* when fill is <= this, acquire from hw */ +#define BMAN_STOCKPILE_HIGH 14u /* when fill is >= this, release to hw */ + +/*************************************************/ +/* BMan s/w corenet portal, low-level i/face */ +/*************************************************/ + +/* Used by all portal interrupt registers except 'inhibit'. NB, some of these + * definitions are exported for use by the bman_irqsource_***() APIs, so are + * commented-out here. */ +#if 0 +#define BM_PIRQ_RCRI 0x00000002 /* RCR Ring (below threshold) */ +#define BM_PIRQ_BSCN 0x00000001 /* Buffer depletion State Change */ +#endif +/* This mask contains all the "irqsource" bits visible to API users */ +#define BM_PIRQ_VISIBLE (BM_PIRQ_RCRI | BM_PIRQ_BSCN) + +/* These are bm__(). So for example, bm_disable_write() means "write + * the disable register" rather than "disable the ability to write". */ +#define bm_isr_status_read(bm) __bm_isr_read(bm, bm_isr_status) +#define bm_isr_status_clear(bm, m) __bm_isr_write(bm, bm_isr_status, m) +#define bm_isr_enable_read(bm) __bm_isr_read(bm, bm_isr_enable) +#define bm_isr_enable_write(bm, v) __bm_isr_write(bm, bm_isr_enable, v) +#define bm_isr_disable_read(bm) __bm_isr_read(bm, bm_isr_disable) +#define bm_isr_disable_write(bm, v) __bm_isr_write(bm, bm_isr_disable, v) +#define bm_isr_inhibit(bm) __bm_isr_write(bm, bm_isr_inhibit, 1) +#define bm_isr_uninhibit(bm) __bm_isr_write(bm, bm_isr_inhibit, 0) + +/* Allocate/release an unreserved buffer pool id */ +int bm_pool_new(u32 *bpid); +void bm_pool_free(u32 bpid); + +#ifdef CONFIG_FSL_BMAN_CONFIG +/* Set depletion thresholds associated with a buffer pool. Requires that the + * operating system have access to Bman CCSR (ie. compiled in support and + * run-time access courtesy of the device-tree). */ +int bm_pool_set(u32 bpid, const u32 *thresholds); +#define BM_POOL_THRESH_SW_ENTER 0 +#define BM_POOL_THRESH_SW_EXIT 1 +#define BM_POOL_THRESH_HW_ENTER 2 +#define BM_POOL_THRESH_HW_EXIT 3 + +#endif /* CONFIG_FSL_BMAN_CONFIG */ + --- linux-3.13.0.orig/drivers/staging/fsl_qbman/bman_test.c +++ linux-3.13.0/drivers/staging/fsl_qbman/bman_test.c @@ -0,0 +1,57 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 "bman_test.h" + +MODULE_AUTHOR("Geoff Thorpe"); +MODULE_LICENSE("Dual BSD/GPL"); +MODULE_DESCRIPTION("Bman testing"); + +static int test_init(void) +{ +#ifdef CONFIG_FSL_BMAN_TEST_HIGH + int loop = 1; + while (loop--) + bman_test_high(); +#endif +#ifdef CONFIG_FSL_BMAN_TEST_THRESH + bman_test_thresh(); +#endif + return 0; +} + +static void test_exit(void) +{ +} + +module_init(test_init); +module_exit(test_exit); + --- linux-3.13.0.orig/drivers/staging/fsl_qbman/bman_test.h +++ linux-3.13.0/drivers/staging/fsl_qbman/bman_test.h @@ -0,0 +1,92 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 + +void bman_test_high(void); +void bman_test_thresh(void); + +static inline void __hexdump(unsigned long start, unsigned long end, + unsigned long p, size_t sz, unsigned char *c) +{ + while (start < end) { + unsigned int pos = 0; + char buf[64]; + int nl = 0; + pos += sprintf(buf + pos, "%08lx: ", start); + do { + if ((start < p) || (start >= (p + sz))) + pos += sprintf(buf + pos, ".."); + else + pos += sprintf(buf + pos, "%02x", *(c++)); + if (!(++start & 15)) { + buf[pos++] = '\n'; + nl = 1; + } else { + nl = 0; + if(!(start & 1)) + buf[pos++] = ' '; + if(!(start & 3)) + buf[pos++] = ' '; + } + } while (start & 15); + if (!nl) + buf[pos++] = '\n'; + buf[pos] = '\0'; + pr_info("%s", buf); + } +} +static inline void hexdump(void *ptr, size_t sz) +{ + unsigned long p = (unsigned long)ptr; + unsigned long start = p & ~(unsigned long)15; + unsigned long end = (p + sz + 15) & ~(unsigned long)15; + unsigned char *c = ptr; + __hexdump(start, end, p, sz, c); +} +static inline void hexdump_by_cl(void *ptr, size_t sz) +{ + unsigned long p = (unsigned long)ptr; + unsigned long start = p & ~(unsigned long)63; + unsigned long end = (p + sz + 63) & ~(unsigned long)63; + unsigned char *c = ptr; + __hexdump(start, end, p, sz, c); +} + --- linux-3.13.0.orig/drivers/staging/fsl_qbman/bman_test_high.c +++ linux-3.13.0/drivers/staging/fsl_qbman/bman_test_high.c @@ -0,0 +1,181 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 "bman_test.h" +#include "bman_private.h" + +/*************/ +/* constants */ +/*************/ + +#define PORTAL_OPAQUE (void *)0xf00dbeef +#define POOL_OPAQUE (void *)0xdeadabba +#define NUM_BUFS 93 +#define LOOPS 3 +#define BMAN_TOKEN_MASK 0x00FFFFFFFFFFLLU + +/***************/ +/* global vars */ +/***************/ + +static struct bman_pool *pool; +static int depleted; +static struct bm_buffer bufs_in[NUM_BUFS] ____cacheline_aligned; +static struct bm_buffer bufs_out[NUM_BUFS] ____cacheline_aligned; +static int bufs_received; + +/* Predeclare the callback so we can instantiate pool parameters */ +static void depletion_cb(struct bman_portal *, struct bman_pool *, void *, int); + +/**********************/ +/* internal functions */ +/**********************/ + +static void bufs_init(void) +{ + int i; + for (i = 0; i < NUM_BUFS; i++) + bm_buffer_set64(&bufs_in[i], 0xfedc01234567LLU * i); + bufs_received = 0; +} + +static inline int bufs_cmp(const struct bm_buffer *a, const struct bm_buffer *b) +{ + if (bman_ip_rev == BMAN_REV20) { + /* On SoCs with Bman revison 2.0, Bman only respects the 40 + * LS-bits of buffer addresses, masking off the upper 8-bits on + * release commands. The API provides for 48-bit addresses + * because some SoCs support all 48-bits. When generating + * garbage addresses for testing, we either need to zero the + * upper 8-bits when releasing to Bman (otherwise we'll be + * disappointed when the buffers we acquire back from Bman + * don't match), or we need to mask the upper 8-bits off when + * comparing. We do the latter. + */ + if ((bm_buffer_get64(a) & BMAN_TOKEN_MASK) + < (bm_buffer_get64(b) & BMAN_TOKEN_MASK)) + return -1; + if ((bm_buffer_get64(a) & BMAN_TOKEN_MASK) + > (bm_buffer_get64(b) & BMAN_TOKEN_MASK)) + return 1; + } else { + if (bm_buffer_get64(a) < bm_buffer_get64(b)) + return -1; + if (bm_buffer_get64(a) > bm_buffer_get64(b)) + return 1; + } + + return 0; +} + +static void bufs_confirm(void) +{ + int i, j; + for (i = 0; i < NUM_BUFS; i++) { + int matches = 0; + for (j = 0; j < NUM_BUFS; j++) + if (!bufs_cmp(&bufs_in[i], &bufs_out[j])) + matches++; + BUG_ON(matches != 1); + } +} + +/********/ +/* test */ +/********/ + +static void depletion_cb(struct bman_portal *__portal, struct bman_pool *__pool, + void *pool_ctx, int __depleted) +{ + BUG_ON(__pool != pool); + BUG_ON(pool_ctx != POOL_OPAQUE); + depleted = __depleted; +} + +void bman_test_high(void) +{ + struct bman_pool_params pparams = { + .flags = BMAN_POOL_FLAG_DEPLETION | BMAN_POOL_FLAG_DYNAMIC_BPID, + .cb = depletion_cb, + .cb_ctx = POOL_OPAQUE, + }; + int i, loops = LOOPS; + + bufs_init(); + + pr_info("BMAN: --- starting high-level test ---\n"); + + pool = bman_new_pool(&pparams); + BUG_ON(!pool); + + /*******************/ + /* Release buffers */ + /*******************/ +do_loop: + i = 0; + while (i < NUM_BUFS) { + u32 flags = BMAN_RELEASE_FLAG_WAIT; + int num = 8; + if ((i + num) > NUM_BUFS) + num = NUM_BUFS - i; + if ((i + num) == NUM_BUFS) + flags |= BMAN_RELEASE_FLAG_WAIT_SYNC; + if (bman_release(pool, bufs_in + i, num, flags)) + panic("bman_release() failed\n"); + i += num; + } + + /*******************/ + /* Acquire buffers */ + /*******************/ + while (i > 0) { + int tmp, num = 8; + if (num > i) + num = i; + tmp = bman_acquire(pool, bufs_out + i - num, num, 0); + BUG_ON(tmp != num); + i -= num; + } + i = bman_acquire(pool, NULL, 1, 0); + BUG_ON(i > 0); + + bufs_confirm(); + + if (--loops) + goto do_loop; + + /************/ + /* Clean up */ + /************/ + bman_free_pool(pool); + pr_info("BMAN: --- finished high-level test ---\n"); +} + --- linux-3.13.0.orig/drivers/staging/fsl_qbman/bman_test_thresh.c +++ linux-3.13.0/drivers/staging/fsl_qbman/bman_test_thresh.c @@ -0,0 +1,197 @@ +/* Copyright 2010-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 "bman_test.h" + +/* Test constants */ +#define TEST_NUMBUFS 129728 +#define TEST_EXIT 129536 +#define TEST_ENTRY 129024 + +struct affine_test_data { + struct task_struct *t; + int cpu; + int expect_affinity; + int drain; + int num_enter; + int num_exit; + struct list_head node; + struct completion wakethread; + struct completion wakeparent; +}; + +static void cb_depletion(struct bman_portal *portal, + struct bman_pool *pool, + void *opaque, + int depleted) +{ + struct affine_test_data *data = opaque; + int c = smp_processor_id(); + pr_info("cb_depletion: bpid=%d, depleted=%d, cpu=%d, original=%d\n", + bman_get_params(pool)->bpid, depleted, c, data->cpu); + /* We should be executing on the CPU of the thread that owns the pool if + * and that CPU has an affine portal (ie. it isn't slaved). */ + BUG_ON((c != data->cpu) && data->expect_affinity); + BUG_ON((c == data->cpu) && !data->expect_affinity); + if (depleted) + data->num_enter++; + else + data->num_exit++; +} + +/* Params used to set up a pool, this also dynamically allocates a BPID */ +struct bman_pool_params params_nocb = { + .flags = BMAN_POOL_FLAG_DYNAMIC_BPID | BMAN_POOL_FLAG_THRESH, + .thresholds = { TEST_ENTRY, TEST_EXIT, 0, 0 } +}; + +/* Params used to set up each cpu's pool with callbacks enabled */ +struct bman_pool_params params_cb = { + .bpid = 0, /* will be replaced to match pool_nocb */ + .flags = BMAN_POOL_FLAG_DEPLETION, + .cb = cb_depletion +}; + +static struct bman_pool *pool_nocb; +static LIST_HEAD(threads); + +static int affine_test(void *__data) +{ + struct bman_pool *pool; + struct affine_test_data *data = __data; + struct bman_pool_params my_params = params_cb; + + pr_info("thread %d: starting\n", data->cpu); + /* create the pool */ + my_params.cb_ctx = data; + pool = bman_new_pool(&my_params); + BUG_ON(!pool); + complete(&data->wakeparent); + wait_for_completion(&data->wakethread); + init_completion(&data->wakethread); + + /* if we're the drainer, we get signalled for that */ + if (data->drain) { + struct bm_buffer buf; + int ret; + pr_info("thread %d: draining...\n", data->cpu); + do { + ret = bman_acquire(pool, &buf, 1, 0); + } while (ret > 0); + pr_info("thread %d: draining done.\n", data->cpu); + complete(&data->wakeparent); + wait_for_completion(&data->wakethread); + init_completion(&data->wakethread); + } + + /* cleanup */ + bman_free_pool(pool); + while (!kthread_should_stop()) + cpu_relax(); + pr_info("thread %d: exiting\n", data->cpu); + return 0; +} + +static struct affine_test_data *start_affine_test(int cpu, int drain) +{ + struct affine_test_data *data = kmalloc(sizeof(*data), GFP_KERNEL); + + if (!data) + return NULL; + data->cpu = cpu; + data->expect_affinity = cpumask_test_cpu(cpu, bman_affine_cpus()); + data->drain = drain; + data->num_enter = 0; + data->num_exit = 0; + init_completion(&data->wakethread); + init_completion(&data->wakeparent); + list_add_tail(&data->node, &threads); + data->t = kthread_create(affine_test, data, "threshtest%d", cpu); + BUG_ON(IS_ERR(data->t)); + kthread_bind(data->t, cpu); + wake_up_process(data->t); + return data; +} + +void bman_test_thresh(void) +{ + int loop = TEST_NUMBUFS; + int ret, num_cpus = 0; + struct affine_test_data *data, *drainer = NULL; + + pr_info("bman_test_thresh: start\n"); + + /* allocate a BPID and seed it */ + pool_nocb = bman_new_pool(¶ms_nocb); + BUG_ON(!pool_nocb); + while (loop--) { + struct bm_buffer buf; + bm_buffer_set64(&buf, 0x0badbeef + loop); + ret = bman_release(pool_nocb, &buf, 1, + BMAN_RELEASE_FLAG_WAIT); + BUG_ON(ret); + } + while (!bman_rcr_is_empty()) + cpu_relax(); + pr_info("bman_test_thresh: buffers are in\n"); + + /* create threads and wait for them to create pools */ + params_cb.bpid = bman_get_params(pool_nocb)->bpid; + for_each_cpu(loop, cpu_online_mask) { + data = start_affine_test(loop, drainer ? 0 : 1); + BUG_ON(!data); + if (!drainer) + drainer = data; + num_cpus++; + wait_for_completion(&data->wakeparent); + } + + /* signal the drainer to start draining */ + complete(&drainer->wakethread); + wait_for_completion(&drainer->wakeparent); + init_completion(&drainer->wakeparent); + + /* tear down */ + list_for_each_entry_safe(data, drainer, &threads, node) { + complete(&data->wakethread); + ret = kthread_stop(data->t); + BUG_ON(ret); + list_del(&data->node); + /* check that we get the expected callbacks (and no others) */ + BUG_ON(data->num_enter != 1); + BUG_ON(data->num_exit != 0); + kfree(data); + } + bman_free_pool(pool_nocb); + + pr_info("bman_test_thresh: done\n"); +} + --- linux-3.13.0.orig/drivers/staging/fsl_qbman/dpa_sys.h +++ linux-3.13.0/drivers/staging/fsl_qbman/dpa_sys.h @@ -0,0 +1,324 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 DPA_SYS_H +#define DPA_SYS_H + +#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 + +/* When copying aligned words or shorts, try to avoid memcpy() */ +#define CONFIG_TRY_BETTER_MEMCPY + +/* This takes a "phandle" and dereferences to the cpu device-tree node, + * returning the cpu index. Returns negative error codes. */ +static inline int check_cpu_phandle(phandle ph) +{ + const u32 *cpu_val; + struct device_node *tmp_node = of_find_node_by_phandle(ph); + int cpu, ret; + + if (!tmp_node) { + pr_err("Bad 'cpu-handle'\n"); + return -EINVAL; + } + cpu_val = of_get_property(tmp_node, "reg", &ret); + if (!cpu_val || (ret != sizeof(*cpu_val))) { + pr_err("Can't get %s property 'reg'\n", tmp_node->full_name); + return -ENODEV; + } + for_each_present_cpu(cpu) { + if (*cpu_val == get_hard_smp_processor_id(cpu)) + goto done; + } + pr_err("Invalid cpu index %d in %s\n", *cpu_val, tmp_node->full_name); + return -ENODEV; +done: + of_node_put(tmp_node); + return cpu; +} + +/* Handle portals destined for USDPAA (user-space). + * + * The UIO layer is mostly Qman/Bman-agnostic, however the rest of the driver is + * separated along interface and implementation lines. So each Qman/Bman driver + * instantiates a dpa_uio_class and links dpa_uio_portal objects into it. If + * the dpa_uio driver module is built, it queries these two classes and creates + * the UIO devices accordingly. + */ +struct dpa_uio_class { + struct list_head list; + const char *dev_prefix; +}; +struct dpa_uio_portal { + enum { + dpa_uio_portal_bman, + dpa_uio_portal_qman, + } type; + union { + const struct bm_portal_config *bm_cfg; + const struct qm_portal_config *qm_cfg; + }; + struct list_head node; +}; +const struct dpa_uio_class *dpa_uio_bman(void); +const struct dpa_uio_class *dpa_uio_qman(void); + +/* These stubs are re-mapped to hypervisor+failover features in kernel trees + * that contain that support. */ +static inline int fsl_dpa_should_recover(void) +{ + return 0; +} +static inline int pamu_enable_liodn(struct device_node *n, int i) +{ + return 0; +} +/***********************/ +/* Misc inline assists */ +/***********************/ + +/* TODO: NB, we currently assume that hwsync() and lwsync() imply compiler + * barriers and that dcb*() won't fall victim to compiler or execution + * reordering with respect to other code/instructions that manipulate the same + * cacheline. */ +#define hwsync() \ + do { \ + __asm__ __volatile__ ("sync" : : : "memory"); \ + } while(0) +#define lwsync() \ + do { \ + __asm__ __volatile__ (stringify_in_c(LWSYNC) : : : "memory"); \ + } while(0) +#define dcbf(p) \ + do { \ + __asm__ __volatile__ ("dcbf 0,%0" : : "r" (p) : "memory"); \ + } while(0) +#define dcbt_ro(p) \ + do { \ + __asm__ __volatile__ ("dcbt 0,%0" : : "r" (p)); \ + } while(0) +#define dcbt_rw(p) \ + do { \ + __asm__ __volatile__ ("dcbtst 0,%0" : : "r" (p)); \ + } while(0) +#define dcbi(p) dcbf(p) +#ifdef CONFIG_PPC_E500MC +#define dcbzl(p) \ + do { \ + __asm__ __volatile__ ("dcbzl 0,%0" : : "r" (p)); \ + } while (0) +#define dcbz_64(p) \ + do { \ + dcbzl(p); \ + } while (0) +#define dcbf_64(p) \ + do { \ + dcbf(p); \ + } while (0) +/* Commonly used combo */ +#define dcbit_ro(p) \ + do { \ + dcbi(p); \ + dcbt_ro(p); \ + } while (0) +#else +#define dcbz(p) \ + do { \ + __asm__ __volatile__ ("dcbz 0,%0" : : "r" (p)); \ + } while (0) +#define dcbz_64(p) \ + do { \ + dcbz((u32)p + 32); \ + dcbz(p); \ + } while (0) +#define dcbf_64(p) \ + do { \ + dcbf((u32)p + 32); \ + dcbf(p); \ + } while (0) +/* Commonly used combo */ +#define dcbit_ro(p) \ + do { \ + dcbi(p); \ + dcbi((u32)p + 32); \ + dcbt_ro(p); \ + dcbt_ro((u32)p + 32); \ + } while (0) +#endif /* CONFIG_PPC_E500MC */ + +static inline u64 mfatb(void) +{ + u32 hi, lo, chk; + do { + hi = mfspr(SPRN_ATBU); + lo = mfspr(SPRN_ATBL); + chk = mfspr(SPRN_ATBU); + } while (unlikely(hi != chk)); + return ((u64)hi << 32) | (u64)lo; +} + +#ifdef CONFIG_FSL_DPA_CHECKING +#define DPA_ASSERT(x) \ + do { \ + if (!(x)) { \ + pr_crit("ASSERT: (%s:%d) %s\n", __FILE__, __LINE__, \ + __stringify_1(x)); \ + dump_stack(); \ + panic("assertion failure"); \ + } \ + } while(0) +#else +#define DPA_ASSERT(x) +#endif + +/* memcpy() stuff - when you know alignments in advance */ +#ifdef CONFIG_TRY_BETTER_MEMCPY +static inline void copy_words(void *dest, const void *src, size_t sz) +{ + u32 *__dest = dest; + const u32 *__src = src; + size_t __sz = sz >> 2; + BUG_ON((unsigned long)dest & 0x3); + BUG_ON((unsigned long)src & 0x3); + BUG_ON(sz & 0x3); + while (__sz--) + *(__dest++) = *(__src++); +} +static inline void copy_shorts(void *dest, const void *src, size_t sz) +{ + u16 *__dest = dest; + const u16 *__src = src; + size_t __sz = sz >> 1; + BUG_ON((unsigned long)dest & 0x1); + BUG_ON((unsigned long)src & 0x1); + BUG_ON(sz & 0x1); + while (__sz--) + *(__dest++) = *(__src++); +} +static inline void copy_bytes(void *dest, const void *src, size_t sz) +{ + u8 *__dest = dest; + const u8 *__src = src; + while (sz--) + *(__dest++) = *(__src++); +} +#else +#define copy_words memcpy +#define copy_shorts memcpy +#define copy_bytes memcpy +#endif + +/************/ +/* RB-trees */ +/************/ + +/* We encapsulate RB-trees so that its easier to use non-linux forms in + * non-linux systems. This also encapsulates the extra plumbing that linux code + * usually provides when using RB-trees. This encapsulation assumes that the + * data type held by the tree is u32. */ + +struct dpa_rbtree { + struct rb_root root; +}; +#define DPA_RBTREE { .root = RB_ROOT } + +static inline void dpa_rbtree_init(struct dpa_rbtree *tree) +{ + tree->root = RB_ROOT; +} + +#define IMPLEMENT_DPA_RBTREE(name, type, node_field, val_field) \ +static inline int name##_push(struct dpa_rbtree *tree, type *obj) \ +{ \ + struct rb_node *parent = NULL, **p = &tree->root.rb_node; \ + while (*p) { \ + u32 item; \ + parent = *p; \ + item = rb_entry(parent, type, node_field)->val_field; \ + if (obj->val_field < item) \ + p = &parent->rb_left; \ + else if (obj->val_field > item) \ + p = &parent->rb_right; \ + else \ + return -EBUSY; \ + } \ + rb_link_node(&obj->node_field, parent, p); \ + rb_insert_color(&obj->node_field, &tree->root); \ + return 0; \ +} \ +static inline void name##_del(struct dpa_rbtree *tree, type *obj) \ +{ \ + rb_erase(&obj->node_field, &tree->root); \ +} \ +static inline type *name##_find(struct dpa_rbtree *tree, u32 val) \ +{ \ + type *ret; \ + struct rb_node *p = tree->root.rb_node; \ + while (p) { \ + ret = rb_entry(p, type, node_field); \ + if (val < ret->val_field) \ + p = p->rb_left; \ + else if (val > ret->val_field) \ + p = p->rb_right; \ + else \ + return ret; \ + } \ + return NULL; \ +} + +#endif /* DPA_SYS_H */ + --- linux-3.13.0.orig/drivers/staging/fsl_qbman/dpa_uio.c +++ linux-3.13.0/drivers/staging/fsl_qbman/dpa_uio.c @@ -0,0 +1,231 @@ +/* Copyright 2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 "bman_private.h" +#include "qman_private.h" + +static const char dpa_uio_version[] = "USDPAA UIO portal driver v0.2"; + +static LIST_HEAD(uio_portal_list); + +struct dpa_uio_info { + atomic_t ref; /* exclusive, only one open() at a time */ + struct uio_info uio; + void *addr_ci; + char name[16]; /* big enough for "qman-uio-xx" */ + struct platform_device *pdev; + struct list_head node; +}; + +static int dpa_uio_open(struct uio_info *info, struct inode *inode) +{ + struct dpa_uio_info *i = container_of(info, struct dpa_uio_info, uio); + if (!atomic_dec_and_test(&i->ref)) { + atomic_inc(&i->ref); + return -EBUSY; + } + return 0; +} + +static int dpa_uio_release(struct uio_info *info, struct inode *inode) +{ + struct dpa_uio_info *i = container_of(info, struct dpa_uio_info, uio); + atomic_inc(&i->ref); + return 0; +} + +static int dpa_uio_mmap(struct uio_info *info, struct vm_area_struct *vma) +{ + struct uio_mem *mem; + struct dpa_uio_info *i = container_of(info, struct dpa_uio_info, uio); + + if (vma->vm_pgoff == 0) { + /* CENA */ + mem = &i->uio.mem[0]; + vma->vm_page_prot &= + ~(_PAGE_GUARDED | _PAGE_NO_CACHE | _PAGE_COHERENT); + } else if (vma->vm_pgoff == 1) { + /* CINH */ + mem = &i->uio.mem[1]; + vma->vm_page_prot |= _PAGE_GUARDED | _PAGE_NO_CACHE; + } else { + pr_err("%s: unknown mmap offset %d, rejecting\n", + i->name, (int)vma->vm_pgoff); + return -EINVAL; + } + if ((vma->vm_end - vma->vm_start) != mem->size) { + pr_err("%s: invalid mmap() size %d, expect %d\n", + i->name, (int)(vma->vm_end - vma->vm_start), + (int)mem->size); + return -EINVAL; + } + /* FIXME: UIO appears not to support sizeof(phys_addr_t) > sizeof(void*) + * as mem->addr is 32-bit. Also, it would have been more natural (and in + * keeping with UIO's design intent) to have used the UIO_MEM_PHYS type + * for our two memory regions, and to rely on UIO's own mmap() handler + * (by not declaring our own). Unfortunately UIO does not allow any + * specification of pgprots and assumes cache-inhibited mappings for + * anything physical (see drivers/uio/uio.c, eg. uio_mmap_physical()). + * So UIO could use a couple of improvements as it is not saving us much + * on the kernel nor the user side. The first would be to use PFN + * instead of a raw base address in the uio_mem structs (same reason as + * everywhere else, this covers 4096 times as much address space, and + * why waste lower bits given it has to be page-aligned anyway?). The + * second is to add a pgprot field to uio_mem to be used with _PHYS + * mappings. (Or use a new _PHYS_PGPROT type, for backwards + * compatibility?) */ + /* Normally, we'd ">>PAGE_SHIFT" the mem->addr value here, but due to + * the 36-bit issue, it is already stored as a PFN. */ + return io_remap_pfn_range(vma, vma->vm_start, mem->addr, mem->size, + vma->vm_page_prot); +} + +static irqreturn_t dpa_uio_irq_handler(int irq, struct uio_info *info) +{ + struct dpa_uio_info *i = container_of(info, struct dpa_uio_info, uio); + /* This is the only code outside the regular portal driver that + * manipulates any portal register, so rather than breaking that + * encapsulation I am simply hard-coding the offset to the inhibit + * register here. */ + out_be32(i->addr_ci + 0xe0c, ~(u32)0); + return IRQ_HANDLED; +} + +static void __init dpa_uio_portal_init(struct dpa_uio_portal *p, + const struct dpa_uio_class *c) +{ + struct dpa_uio_info *info; + const struct resource *res; + u32 index; + int irq, ret; + + /* allocate 'info' */ + info = kzalloc(sizeof(*info), GFP_KERNEL); + if (!info) + return; + atomic_set(&info->ref, 1); + if (p->type == dpa_uio_portal_bman) { + res = &p->bm_cfg->addr_phys[0]; + index = p->bm_cfg->public_cfg.index; + irq = p->bm_cfg->public_cfg.irq; + } else { + res = &p->qm_cfg->addr_phys[0]; + index = p->qm_cfg->public_cfg.index; + irq = p->qm_cfg->public_cfg.irq; + } + /* We need to map the cache-inhibited region in the kernel for + * interrupt-handling purposes. */ + info->addr_ci = ioremap_prot(res[BM_ADDR_CI].start, + resource_size(&res[BM_ADDR_CI]), + _PAGE_GUARDED | _PAGE_NO_CACHE); + /* Name the UIO device according to the cell-index. It's supposed to be + * unique for each device class (Qman/Bman), and is also a convenient + * way for user-space to find the UIO device that corresponds to a given + * portal device-tree node. */ + sprintf(info->name, "%s%x", c->dev_prefix, index); + info->pdev = platform_device_alloc(info->name, -1); + if (!info->pdev) { + iounmap(info->addr_ci); + kfree(info); + pr_err("dpa_uio_portal: platform_device_alloc() failed\n"); + return; + } + ret = platform_device_add(info->pdev); + if (ret) { + platform_device_put(info->pdev); + iounmap(info->addr_ci); + kfree(info); + pr_err("dpa_uio_portal: platform_device_add() failed\n"); + return; + } + info->uio.name = info->name; + info->uio.version = dpa_uio_version; + /* Work around the 36-bit UIO issue by bit-shifting the addresses */ + info->uio.mem[BM_ADDR_CE].name = "cena"; + info->uio.mem[BM_ADDR_CE].addr = res[BM_ADDR_CE].start >> PAGE_SHIFT; + info->uio.mem[BM_ADDR_CE].size = resource_size(&res[BM_ADDR_CE]); + info->uio.mem[BM_ADDR_CI].name = "cinh"; + info->uio.mem[BM_ADDR_CI].addr = res[BM_ADDR_CI].start >> PAGE_SHIFT; + info->uio.mem[BM_ADDR_CI].size = resource_size(&res[BM_ADDR_CI]); + info->uio.irq = irq; + info->uio.handler = dpa_uio_irq_handler; + info->uio.mmap = dpa_uio_mmap; + info->uio.open = dpa_uio_open; + info->uio.release = dpa_uio_release; + ret = uio_register_device(&info->pdev->dev, &info->uio); + if (ret) { + platform_device_del(info->pdev); + platform_device_put(info->pdev); + iounmap(info->addr_ci); + kfree(info); + pr_err("dpa_uio_portal: UIO registration failed\n"); + return; + } + list_add_tail(&info->node, &uio_portal_list); + pr_info("USDPAA portal initialised, %s\n", info->name); +} + +static int __init dpa_uio_init(void) +{ + const struct dpa_uio_class *classes[3], **c = classes; + classes[0] = dpa_uio_bman(); + classes[1] = dpa_uio_qman(); + classes[2] = NULL; + while (*c) { + struct dpa_uio_portal *p; + list_for_each_entry(p, &(*c)->list, node) + dpa_uio_portal_init(p, *c); + c++; + } + pr_info("USDPAA portal layer loaded\n"); + return 0; +} + +static void __exit dpa_uio_exit(void) +{ + struct dpa_uio_info *info, *tmp; + list_for_each_entry_safe(info, tmp, &uio_portal_list, node) { + list_del(&info->node); + uio_unregister_device(&info->uio); + platform_device_del(info->pdev); + platform_device_put(info->pdev); + iounmap(info->addr_ci); + pr_info("USDPAA portal removed, %s\n", info->name); + kfree(info); + } + pr_info("USDPAA portal layer unloaded\n"); +} + + +module_init(dpa_uio_init) +module_exit(dpa_uio_exit) +MODULE_LICENSE("GPL"); + --- linux-3.13.0.orig/drivers/staging/fsl_qbman/qman_config.c +++ linux-3.13.0/drivers/staging/fsl_qbman/qman_config.c @@ -0,0 +1,1013 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 CONFIG_SMP +#include /* get_hard_smp_processor_id() */ +#endif + +#include +#include + +#include "qman_private.h" + +/* Last updated for v00.800 of the BG */ + +/* Register offsets */ +#define REG_QCSP_PID_CFG(n) (0x0000 + ((n) * 0x10)) +#define REG_QCSP_IO_CFG(n) (0x0004 + ((n) * 0x10)) +#define REG_QCSP_DD_CFG(n) (0x000c + ((n) * 0x10)) +#define REG_DD_CFG 0x0200 +#define REG_DCP_CFG(n) (0x0300 + ((n) * 0x10)) +#define REG_DCP_DD_CFG(n) (0x0304 + ((n) * 0x10)) +#define REG_DCP_DLM_AVG(n) (0x030c + ((n) * 0x10)) +#define REG_PFDR_FPC 0x0400 +#define REG_PFDR_FP_HEAD 0x0404 +#define REG_PFDR_FP_TAIL 0x0408 +#define REG_PFDR_FP_LWIT 0x0410 +#define REG_PFDR_CFG 0x0414 +#define REG_SFDR_CFG 0x0500 +#define REG_SFDR_IN_USE 0x0504 +#define REG_WQ_CS_CFG(n) (0x0600 + ((n) * 0x04)) +#define REG_WQ_DEF_ENC_WQID 0x0630 +#define REG_WQ_SC_DD_CFG(n) (0x640 + ((n) * 0x04)) +#define REG_WQ_PC_DD_CFG(n) (0x680 + ((n) * 0x04)) +#define REG_WQ_DC0_DD_CFG(n) (0x6c0 + ((n) * 0x04)) +#define REG_WQ_DC1_DD_CFG(n) (0x700 + ((n) * 0x04)) +#define REG_WQ_DCn_DD_CFG(n) (0x6c0 + ((n) * 0x40)) /* n=2,3 */ +#define REG_CM_CFG 0x0800 +#define REG_ECSR 0x0a00 +#define REG_ECIR 0x0a04 +#define REG_EADR 0x0a08 +#define REG_EDATA(n) (0x0a10 + ((n) * 0x04)) +#define REG_SBEC(n) (0x0a80 + ((n) * 0x04)) +#define REG_MCR 0x0b00 +#define REG_MCP(n) (0x0b04 + ((n) * 0x04)) +#define REG_HID_CFG 0x0bf0 +#define REG_IDLE_STAT 0x0bf4 +#define REG_IP_REV_1 0x0bf8 +#define REG_IP_REV_2 0x0bfc +#define REG_FQD_BARE 0x0c00 +#define REG_PFDR_BARE 0x0c20 +#define REG_offset_BAR 0x0004 /* relative to REG_[FQD|PFDR]_BARE */ +#define REG_offset_AR 0x0010 /* relative to REG_[FQD|PFDR]_BARE */ +#define REG_QCSP_BARE 0x0c80 +#define REG_QCSP_BAR 0x0c84 +#define REG_CI_SCHED_CFG 0x0d00 +#define REG_SRCIDR 0x0d04 +#define REG_LIODNR 0x0d08 +#define REG_CI_RLM_AVG 0x0d14 +#define REG_ERR_ISR 0x0e00 /* + "enum qm_isr_reg" */ + +/* Assists for QMAN_MCR */ +#define MCR_INIT_PFDR 0x01000000 +#define MCR_get_rslt(v) (u8)((v) >> 24) +#define MCR_rslt_idle(r) (!rslt || (rslt >= 0xf0)) +#define MCR_rslt_ok(r) (rslt == 0xf0) +#define MCR_rslt_eaccess(r) (rslt == 0xf8) +#define MCR_rslt_inval(r) (rslt == 0xff) + +struct qman; + +/* Follows WQ_CS_CFG0-5 */ +enum qm_wq_class { + qm_wq_portal = 0, + qm_wq_pool = 1, + qm_wq_fman0 = 2, + qm_wq_fman1 = 3, + qm_wq_caam = 4, + qm_wq_pme = 5, + qm_wq_first = qm_wq_portal, + qm_wq_last = qm_wq_pme +}; + +/* Follows FQD_[BARE|BAR|AR] and PFDR_[BARE|BAR|AR] */ +enum qm_memory { + qm_memory_fqd, + qm_memory_pfdr +}; + +/* Used by all error interrupt registers except 'inhibit' */ +#define QM_EIRQ_CIDE 0x20000000 /* Corenet Initiator Data Error */ +#define QM_EIRQ_CTDE 0x10000000 /* Corenet Target Data Error */ +#define QM_EIRQ_CITT 0x08000000 /* Corenet Invalid Target Transaction */ +#define QM_EIRQ_PLWI 0x04000000 /* PFDR Low Watermark */ +#define QM_EIRQ_MBEI 0x02000000 /* Multi-bit ECC Error */ +#define QM_EIRQ_SBEI 0x01000000 /* Single-bit ECC Error */ +#define QM_EIRQ_PEBI 0x00800000 /* PFDR Enqueues Blocked Interrupt */ +#define QM_EIRQ_ICVI 0x00010000 /* Invalid Command Verb */ +#define QM_EIRQ_IDDI 0x00000800 /* Invalid Dequeue (Direct-connect) */ +#define QM_EIRQ_IDFI 0x00000400 /* Invalid Dequeue FQ */ +#define QM_EIRQ_IDSI 0x00000200 /* Invalid Dequeue Source */ +#define QM_EIRQ_IDQI 0x00000100 /* Invalid Dequeue Queue */ +#define QM_EIRQ_IEOI 0x00000008 /* Invalid Enqueue Overflow */ +#define QM_EIRQ_IESI 0x00000004 /* Invalid Enqueue State */ +#define QM_EIRQ_IECI 0x00000002 /* Invalid Enqueue Channel */ +#define QM_EIRQ_IEQI 0x00000001 /* Invalid Enqueue Queue */ + +/* QMAN_ECIR valid error bit */ +#define PORTAL_ECSR_ERR (QM_EIRQ_IEQI | QM_EIRQ_IESI | QM_EIRQ_IEOI | \ + QM_EIRQ_IDQI | QM_EIRQ_IDSI | QM_EIRQ_IDFI | \ + QM_EIRQ_IDDI | QM_EIRQ_ICVI) +#define FQID_ECSR_ERR (QM_EIRQ_IEQI | QM_EIRQ_IECI | QM_EIRQ_IESI | \ + QM_EIRQ_IEOI | QM_EIRQ_IDQI | QM_EIRQ_IDFI) + +union qman_ecir { + u32 ecir_raw; + struct { + u32 __reserved:2; + u32 portal_type:1; + u32 portal_num:5; + u32 fqid:24; + } __packed info; +}; + +union qman_eadr { + u32 eadr_raw; + struct { + u32 __reserved1:4; + u32 memid:4; + u32 __reserved2:12; + u32 eadr:12; + } __packed info; +}; + +struct qman_hwerr_txt { + u32 mask; + const char *txt; +}; + +#define QMAN_HWE_TXT(a, b) { .mask = QM_EIRQ_##a, .txt = b } + +static const struct qman_hwerr_txt qman_hwerr_txts[] = { + QMAN_HWE_TXT(CIDE, "Corenet Initiator Data Error"), + QMAN_HWE_TXT(CTDE, "Corenet Target Data Error"), + QMAN_HWE_TXT(CITT, "Corenet Invalid Target Transaction"), + QMAN_HWE_TXT(PLWI, "PFDR Low Watermark"), + QMAN_HWE_TXT(MBEI, "Multi-bit ECC Error"), + QMAN_HWE_TXT(SBEI, "Single-bit ECC Error"), + QMAN_HWE_TXT(PEBI, "PFDR Enqueues Blocked Interrupt"), + QMAN_HWE_TXT(ICVI, "Invalid Command Verb"), + QMAN_HWE_TXT(IDDI, "Invalid Dequeue (Direct-connect)"), + QMAN_HWE_TXT(IDFI, "Invalid Dequeue FQ"), + QMAN_HWE_TXT(IDSI, "Invalid Dequeue Source"), + QMAN_HWE_TXT(IDQI, "Invalid Dequeue Queue"), + QMAN_HWE_TXT(IEOI, "Invalid Enqueue Overflow"), + QMAN_HWE_TXT(IESI, "Invalid Enqueue State"), + QMAN_HWE_TXT(IECI, "Invalid Enqueue Channel"), + QMAN_HWE_TXT(IEQI, "Invalid Enqueue Queue") +}; +#define QMAN_HWE_COUNT (sizeof(qman_hwerr_txts)/sizeof(struct qman_hwerr_txt)) + +struct qman_error_info_mdata { + u16 addr_mask; + u16 bits; + const char *txt; +}; + +#define QMAN_ERR_MDATA(a, b, c) { .addr_mask = a, .bits = b, .txt = c} +static const struct qman_error_info_mdata error_mdata[] = { + QMAN_ERR_MDATA(0x01FF, 24, "FQD cache tag memory 0"), + QMAN_ERR_MDATA(0x01FF, 24, "FQD cache tag memory 1"), + QMAN_ERR_MDATA(0x01FF, 24, "FQD cache tag memory 2"), + QMAN_ERR_MDATA(0x01FF, 24, "FQD cache tag memory 3"), + QMAN_ERR_MDATA(0x0FFF, 512, "FQD cache memory"), + QMAN_ERR_MDATA(0x07FF, 128, "SFDR memory"), + QMAN_ERR_MDATA(0x01FF, 72, "WQ context memory"), + QMAN_ERR_MDATA(0x00FF, 240, "CGR memory"), + QMAN_ERR_MDATA(0x00FF, 302, "Internal Order Restoration List memory"), + QMAN_ERR_MDATA(0x01FF, 256, "SW portal ring memory"), +}; +#define QMAN_ERR_MDATA_COUNT \ + (sizeof(error_mdata)/sizeof(struct qman_error_info_mdata)) + +/* Add this in Kconfig */ +#define QMAN_ERRS_TO_UNENABLE (QM_EIRQ_PLWI | QM_EIRQ_PEBI) + +/** + * qm_err_isr__ - Manipulate global interrupt registers + * @v: for accessors that write values, this is the 32-bit value + * + * Manipulates QMAN_ERR_ISR, QMAN_ERR_IER, QMAN_ERR_ISDR, QMAN_ERR_IIR. All + * manipulations except qm_err_isr_[un]inhibit() use 32-bit masks composed of + * the QM_EIRQ_*** definitions. Note that "qm_err_isr_enable_write" means + * "write the enable register" rather than "enable the write register"! + */ +#define qm_err_isr_status_read(qm) __qm_err_isr_read(qm, qm_isr_status) +#define qm_err_isr_status_clear(qm, m) __qm_err_isr_write(qm, qm_isr_status,m) +#define qm_err_isr_enable_read(qm) __qm_err_isr_read(qm, qm_isr_enable) +#define qm_err_isr_enable_write(qm, v) __qm_err_isr_write(qm, qm_isr_enable,v) +#define qm_err_isr_disable_read(qm) __qm_err_isr_read(qm, qm_isr_disable) +#define qm_err_isr_disable_write(qm, v) __qm_err_isr_write(qm, qm_isr_disable,v) +#define qm_err_isr_inhibit(qm) __qm_err_isr_write(qm, qm_isr_inhibit,1) +#define qm_err_isr_uninhibit(qm) __qm_err_isr_write(qm, qm_isr_inhibit,0) + +/* + * TODO: unimplemented registers + * + * Keeping a list here of Qman registers I have not yet covered; + * QCSP_DD_IHRSR, QCSP_DD_IHRFR, QCSP_DD_HASR, + * DCP_DD_IHRSR, DCP_DD_IHRFR, DCP_DD_HASR, CM_CFG, + * QMAN_EECC, QMAN_SBET, QMAN_EINJ, QMAN_SBEC0-12 + */ + +/* Encapsulate "struct qman *" as a cast of the register space address. */ + +static struct qman *qm_create(void *regs) +{ + return (struct qman *)regs; +} + +static inline u32 __qm_in(struct qman *qm, u32 offset) +{ + return in_be32((void *)qm + offset); +} +static inline void __qm_out(struct qman *qm, u32 offset, u32 val) +{ + out_be32((void *)qm + offset, val); +} +#define qm_in(reg) __qm_in(qm, REG_##reg) +#define qm_out(reg, val) __qm_out(qm, REG_##reg, val) + +static u32 __qm_err_isr_read(struct qman *qm, enum qm_isr_reg n) +{ + return __qm_in(qm, REG_ERR_ISR + (n << 2)); +} + +static void __qm_err_isr_write(struct qman *qm, enum qm_isr_reg n, u32 val) +{ + __qm_out(qm, REG_ERR_ISR + (n << 2), val); +} + +#if 0 + +static void qm_set_portal(struct qman *qm, u8 swportalID, + u16 ec_tp_cfg, u16 ecd_tp_cfg) +{ + qm_out(QCSP_DD_CFG(swportalID), + ((ec_tp_cfg & 0x1ff) << 16) | (ecd_tp_cfg & 0x1ff)); +} + +static void qm_set_ddebug(struct qman *qm, u8 mdd, u8 m_cfg) +{ + qm_out(DD_CFG, ((mdd & 0x3) << 4) | (m_cfg & 0xf)); +} + +static void qm_set_dc_ddebug(struct qman *qm, enum qm_dc_portal portal, u16 ecd_tp_cfg) +{ + qm_out(DCP_DD_CFG(portal), ecd_tp_cfg & 0x1ff); +} + +static u32 qm_get_pfdr_free_pool_count(struct qman *qm) +{ + return qm_in(PFDR_FPC); +} + +static void qm_get_pfdr_free_pool(struct qman *qm, u32 *head, u32 *tail) +{ + *head = qm_in(PFDR_FP_HEAD); + *tail = qm_in(PFDR_FP_TAIL); +} + +static void qm_set_default_wq(struct qman *qm, u16 wqid) +{ + qm_out(WQ_DEF_ENC_WQID, wqid); +} + +static void qm_set_channel_ddebug(struct qman *qm, enum qm_channel channel, + u16 tp_cfg) +{ + u32 offset; + int upperhalf = 0; + if ((channel >= qm_channel_swportal0) && + (channel <= qm_channel_swportal9)) { + offset = (channel - qm_channel_swportal0); + upperhalf = offset & 0x1; + offset = REG_WQ_SC_DD_CFG(offset / 2); + } else if ((channel >= qm_channel_pool1) && + (channel <= qm_channel_pool15)) { + offset = (channel + 1 - qm_channel_pool1); + upperhalf = offset & 0x1; + offset = REG_WQ_PC_DD_CFG(offset / 2); + } else if ((channel >= qm_channel_fman0_sp0) && + (channel <= qm_channel_fman0_sp11)) { + offset = (channel - qm_channel_fman0_sp0); + upperhalf = offset & 0x1; + offset = REG_WQ_DC0_DD_CFG(offset / 2); + } + else if ((channel >= qm_channel_fman1_sp0) && + (channel <= qm_channel_fman1_sp11)) { + offset = (channel - qm_channel_fman1_sp0); + upperhalf = offset & 0x1; + offset = REG_WQ_DC1_DD_CFG(offset / 2); + } + else if (channel == qm_channel_caam) + offset = REG_WQ_DCn_DD_CFG(2); + else if (channel == qm_channel_pme) + offset = REG_WQ_DCn_DD_CFG(3); + else { + pr_crit("Illegal qm_channel type %d\n", channel); + return; + } + __qm_out(qm, offset, upperhalf ? ((u32)tp_cfg << 16) : tp_cfg); +} + +static void qm_get_details(struct qman *qm, u8 *int_options, u8 *errata, + u8 *conf_options) +{ + u32 v = qm_in(IP_REV_1); + *int_options = (v >> 16) & 0xff; + *errata = (v >> 8) & 0xff; + *conf_options = v & 0xff; +} + +static void qm_set_corenet_bar(struct qman *qm, u16 eba, u32 ba) +{ + /* choke if 'ba' isn't properly aligned */ + DPA_ASSERT(!(ba & 0x001fffff)); + qm_out(QCSP_BARE, eba); + qm_out(QCSP_BAR, ba); +} + +static u8 qm_get_corenet_sourceid(struct qman *qm) +{ + return qm_in(SRCIDR); +} + +static u16 qm_get_liodn(struct qman *qm) +{ + return qm_in(LIODNR); +} + +static void qm_set_congestion_config(struct qman *qm, u16 pres) +{ + qm_out(CM_CFG, pres); +} + +#endif + +static void qm_set_dc(struct qman *qm, enum qm_dc_portal portal, + int ed, u8 sernd) +{ + DPA_ASSERT(!ed || (portal == qm_dc_portal_fman0) || + (portal == qm_dc_portal_fman1)); + qm_out(DCP_CFG(portal), (ed ? 0x100 : 0) | (sernd & 0x1f)); +} + +static void qm_set_wq_scheduling(struct qman *qm, enum qm_wq_class wq_class, + u8 cs_elev, u8 csw2, u8 csw3, u8 csw4, u8 csw5, + u8 csw6, u8 csw7) +{ +#ifdef CONFIG_FSL_QMAN_BUG_AND_FEATURE_REV1 +#define csw(x) \ +do { \ + if (++x == 8) \ + x = 7; \ +} while (0) + if (qman_ip_rev == QMAN_REV10) { + csw(csw2); + csw(csw3); + csw(csw4); + csw(csw5); + csw(csw6); + csw(csw7); + } +#endif + qm_out(WQ_CS_CFG(wq_class), ((cs_elev & 0xff) << 24) | + ((csw2 & 0x7) << 20) | ((csw3 & 0x7) << 16) | + ((csw4 & 0x7) << 12) | ((csw5 & 0x7) << 8) | + ((csw6 & 0x7) << 4) | (csw7 & 0x7)); +} + +static void qm_set_hid(struct qman *qm) +{ +#ifdef CONFIG_FSL_QMAN_BUG_AND_FEATURE_REV1 + if (qman_ip_rev == QMAN_REV10) + qm_out(HID_CFG, 3); + else +#endif + qm_out(HID_CFG, 0); +} + +static void qm_set_corenet_initiator(struct qman *qm) +{ + qm_out(CI_SCHED_CFG, + 0x80000000 | /* write srcciv enable */ + (CONFIG_FSL_QMAN_CI_SCHED_CFG_SRCCIV << 24) | + (CONFIG_FSL_QMAN_CI_SCHED_CFG_SRQ_W << 8) | + (CONFIG_FSL_QMAN_CI_SCHED_CFG_RW_W << 4) | + CONFIG_FSL_QMAN_CI_SCHED_CFG_BMAN_W); +} + +static void qm_get_version(struct qman *qm, u16 *id, u8 *major, u8 *minor) +{ + u32 v = qm_in(IP_REV_1); + *id = (v >> 16); + *major = (v >> 8) & 0xff; + *minor = v & 0xff; +} + +static void qm_set_memory(struct qman *qm, enum qm_memory memory, u64 ba, + int enable, int prio, int stash, u32 size) +{ + u32 offset = (memory == qm_memory_fqd) ? REG_FQD_BARE : REG_PFDR_BARE; + u32 exp = ilog2(size); + /* choke if size isn't within range */ + DPA_ASSERT((size >= 4096) && (size <= 1073741824) && + is_power_of_2(size)); + /* choke if 'ba' has lower-alignment than 'size' */ + DPA_ASSERT(!(ba & (size - 1))); + __qm_out(qm, offset, upper_32_bits(ba)); + __qm_out(qm, offset + REG_offset_BAR, lower_32_bits(ba)); + __qm_out(qm, offset + REG_offset_AR, + (enable ? 0x80000000 : 0) | + (prio ? 0x40000000 : 0) | + (stash ? 0x20000000 : 0) | + (exp - 1)); +} + +static void qm_set_pfdr_threshold(struct qman *qm, u32 th, u8 k) +{ + qm_out(PFDR_FP_LWIT, th & 0xffffff); + qm_out(PFDR_CFG, k); +} + +static void qm_set_sfdr_threshold(struct qman *qm, u16 th) +{ + qm_out(SFDR_CFG, th & 0x3ff); +} + +static int qm_init_pfdr(struct qman *qm, u32 pfdr_start, u32 num) +{ + u8 rslt = MCR_get_rslt(qm_in(MCR)); + + DPA_ASSERT(pfdr_start && !(pfdr_start & 7) && !(num & 7) && num); + /* Make sure the command interface is 'idle' */ + if(!MCR_rslt_idle(rslt)) + panic("QMAN_MCR isn't idle"); + + /* Write the MCR command params then the verb */ + qm_out(MCP(0), pfdr_start ); + /* TODO: remove this - it's a workaround for a model bug that is + * corrected in more recent versions. We use the workaround until + * everyone has upgraded. */ + qm_out(MCP(1), (pfdr_start + num - 16)); + lwsync(); + qm_out(MCR, MCR_INIT_PFDR); + + /* Poll for the result */ + do { + rslt = MCR_get_rslt(qm_in(MCR)); + } while(!MCR_rslt_idle(rslt)); + if (MCR_rslt_ok(rslt)) + return 0; + if (MCR_rslt_eaccess(rslt)) + return -EACCES; + if (MCR_rslt_inval(rslt)) + return -EINVAL; + pr_crit("Unexpected result from MCR_INIT_PFDR: %02x\n", rslt); + return -ENOSYS; +} + +/*****************/ +/* Config driver */ +/*****************/ + +/* TODO: Kconfig these? */ +#define DEFAULT_FQD_SZ (PAGE_SIZE << CONFIG_FSL_QMAN_FQD_SZ) +#define DEFAULT_PFDR_SZ (PAGE_SIZE << 12) + +/* We support only one of these */ +static struct qman *qm; +static struct device_node *qm_node; + +/* Parse the property to extract the memory location and size and + * memblock_reserve() it. If it isn't supplied, memblock_alloc() the default size. */ +static __init int parse_mem_property(struct device_node *node, const char *name, + dma_addr_t *addr, size_t *sz, int zero) +{ + const u32 *pint; + int ret; + + pint = of_get_property(node, name, &ret); + if (!pint || (ret != 16)) { + pr_info("No %s property '%s', using memblock_alloc(%016zx)\n", + node->full_name, name, *sz); + *addr = memblock_alloc(*sz, *sz); + if (zero) + memset(phys_to_virt(*addr), 0, *sz); + return 0; + } + pr_info("Using %s property '%s'\n", node->full_name, name); + /* If using a "zero-pma", don't try to zero it, even if you asked */ + if (zero && of_find_property(node, "zero-pma", &ret)) { + pr_info(" it's a 'zero-pma', not zeroing from s/w\n"); + zero = 0; + } + *addr = ((u64)pint[0] << 32) | (u64)pint[1]; + *sz = ((u64)pint[2] << 32) | (u64)pint[3]; + /* Keep things simple, it's either all in the DRAM range or it's all + * outside. */ + if (*addr < memblock_end_of_DRAM()) { + BUG_ON((u64)*addr + (u64)*sz > memblock_end_of_DRAM()); + if (memblock_reserve(*addr, *sz) < 0) { + pr_err("Failed to reserve %s\n", name); + return -ENOMEM; + } + if (zero) + memset(phys_to_virt(*addr), 0, *sz); + } else if (zero) { + /* map as cacheable, non-guarded */ + void *tmpp = ioremap_prot(*addr, *sz, 0); + memset(tmpp, 0, *sz); + iounmap(tmpp); + } + return 0; +} + +/* TODO: + * - there is obviously no handling of errors, + * - the calls to qm_set_memory() hard-code the priority and CPC-stashing for + * both memory resources to zero. + */ +static int __init fsl_qman_init(struct device_node *node) +{ + struct resource res; + u32 __iomem *regs; + const char *s; + dma_addr_t fqd_a = 0, pfdr_a = 0; + size_t fqd_sz = DEFAULT_FQD_SZ, pfdr_sz = DEFAULT_PFDR_SZ; + int ret, standby = 0; + u16 id; + u8 major, minor; + + ret = of_address_to_resource(node, 0, &res); + if (ret) { + pr_err("Can't get %s property '%s'\n", node->full_name, "reg"); + return ret; + } + s = of_get_property(node, "fsl,hv-claimable", &ret); + if (s && !strcmp(s, "standby")) + standby = 1; + if (!standby) { + ret = parse_mem_property(node, "fsl,qman-fqd", + &fqd_a, &fqd_sz, 1); + BUG_ON(ret); + ret = parse_mem_property(node, "fsl,qman-pfdr", + &pfdr_a, &pfdr_sz, 0); + BUG_ON(ret); + } + /* Global configuration */ + regs = ioremap(res.start, res.end - res.start + 1); + qm = qm_create(regs); + qm_node = node; + qm_get_version(qm, &id, &major, &minor); + pr_info("Qman ver:%04x,%02x,%02x\n", id, major, minor); + if (!qman_ip_rev) { + if ((major == 1) && (minor == 0)) + qman_ip_rev = QMAN_REV10; + else if ((major == 1) && (minor == 1)) + qman_ip_rev = QMAN_REV11; + else if ((major == 1) && (minor == 2)) + qman_ip_rev = QMAN_REV12; + else if ((major == 2) && (minor == 0)) + qman_ip_rev = QMAN_REV20; + else { + pr_warning("unknown Qman version, default to rev1.1\n"); + qman_ip_rev = QMAN_REV11; + } + } + + if (standby) { + pr_info(" -> in standby mode\n"); + return 0; + } + /* FQD memory */ + qm_set_memory(qm, qm_memory_fqd, fqd_a, 1, 0, 0, fqd_sz); + /* PFDR memory */ + qm_set_memory(qm, qm_memory_pfdr, pfdr_a, 1, 0, 0, pfdr_sz); + qm_init_pfdr(qm, 8, pfdr_sz / 64 - 8); + /* thresholds */ + qm_set_pfdr_threshold(qm, 512, 64); + qm_set_sfdr_threshold(qm, 128); + /* clear stale PEBI bit from interrupt status register */ + qm_err_isr_status_clear(qm, QM_EIRQ_PEBI); + /* corenet initiator settings */ + qm_set_corenet_initiator(qm); + /* HID settings */ + qm_set_hid(qm); + /* Set scheduling weights to defaults */ + for (ret = qm_wq_first; ret <= qm_wq_last; ret++) + qm_set_wq_scheduling(qm, ret, 0, 0, 0, 0, 0, 0, 0); + /* We are not prepared to accept ERNs for hardware enqueues */ + qm_set_dc(qm, qm_dc_portal_fman0, 1, 0); + qm_set_dc(qm, qm_dc_portal_fman1, 1, 0); + return 0; +} + +int qman_have_ccsr(void) +{ + return qm ? 1 : 0; +} + +__init void qman_init_early(void) +{ + struct device_node *dn; + for_each_compatible_node(dn, NULL, "fsl,qman") { + if (qm) + pr_err("%s: only one 'fsl,qman' allowed\n", + dn->full_name); + else { + int ret = fsl_qman_init(dn); + BUG_ON(ret); + } + } +} + +static void log_edata_bits(u32 bit_count) +{ + u32 i, j, mask = 0xffffffff; + + pr_warning("Qman ErrInt, EDATA:\n"); + i = bit_count/32; + if (bit_count%32) { + i++; + mask = ~(mask << bit_count%32); + } + j = 16-i; + pr_warning(" 0x%08x\n", qm_in(EDATA(j)) & mask); + j++; + for (; j < 16; j++) + pr_warning(" 0x%08x\n", qm_in(EDATA(j))); +} + +static void log_additional_error_info(u32 isr_val, u32 ecsr_val) +{ + union qman_ecir ecir_val; + union qman_eadr eadr_val; + + ecir_val.ecir_raw = qm_in(ECIR); + /* Is portal info valid */ + if (ecsr_val & PORTAL_ECSR_ERR) { + pr_warning("Qman ErrInt: %s id %d\n", + (ecir_val.info.portal_type) ? + "DCP" : "SWP", ecir_val.info.portal_num); + } + if (ecsr_val & FQID_ECSR_ERR) { + pr_warning("Qman ErrInt: ecir.fqid 0x%x\n", + ecir_val.info.fqid); + } + if (ecsr_val & (QM_EIRQ_SBEI|QM_EIRQ_MBEI)) { + eadr_val.eadr_raw = qm_in(EADR); + pr_warning("Qman ErrInt: EADR Memory: %s, 0x%x\n", + error_mdata[eadr_val.info.memid].txt, + error_mdata[eadr_val.info.memid].addr_mask + & eadr_val.info.eadr); + log_edata_bits(error_mdata[eadr_val.info.memid].bits); + } +} + +/* Qman interrupt handler */ +static irqreturn_t qman_isr(int irq, void *ptr) +{ + u32 isr_val, ier_val, ecsr_val, isr_mask, i; + + ier_val = qm_err_isr_enable_read(qm); + isr_val = qm_err_isr_status_read(qm); + ecsr_val = qm_in(ECSR); + isr_mask = isr_val & ier_val; + + if (!isr_mask) + return IRQ_NONE; + for (i = 0; i < QMAN_HWE_COUNT; i++) { + if (qman_hwerr_txts[i].mask & isr_mask) { + pr_warning("Qman ErrInt: %s\n", qman_hwerr_txts[i].txt); + if (qman_hwerr_txts[i].mask & ecsr_val) { + log_additional_error_info(isr_mask, ecsr_val); + /* Re-arm error capture registers */ + qm_out(ECSR, ecsr_val); + } + if (qman_hwerr_txts[i].mask & QMAN_ERRS_TO_UNENABLE) { + pr_devel("Qman un-enabling error 0x%x\n", + qman_hwerr_txts[i].mask); + ier_val &= ~qman_hwerr_txts[i].mask; + qm_err_isr_enable_write(qm, ier_val); + } + } + } + qm_err_isr_status_clear(qm, isr_val); + return IRQ_HANDLED; +} + +static int __bind_irq(void) +{ + int ret, err_irq; + + err_irq = of_irq_to_resource(qm_node, 0, NULL); + if (err_irq == NO_IRQ) { + pr_info("Can't get %s property '%s'\n", qm_node->full_name, + "interrupts"); + return -ENODEV; + } + ret = request_irq(err_irq, qman_isr, IRQF_SHARED, "qman-err", qm_node); + if (ret) { + pr_err("request_irq() failed %d for '%s'\n", ret, + qm_node->full_name); + return -ENODEV; + } + /* Write-to-clear any stale bits, (eg. starvation being asserted prior + * to resource allocation during driver init). */ + qm_err_isr_status_clear(qm, 0xffffffff); + /* Enable Error Interrupts */ + qm_err_isr_enable_write(qm, 0xffffffff); + return 0; +} + +/* Initialise Error Interrupt Handler */ +int qman_init_error_int(struct device_node *node) +{ + if (!qman_have_ccsr()) + return 0; + if (node != qm_node) + return -EINVAL; + return __bind_irq(); +} + +#define PID_CFG_LIODN_MASK 0x0fff0000 +void qman_liodn_fixup(enum qm_channel channel) +{ + static int done; + static u32 liodn_offset; + u32 before, after; + int idx = channel - qm_channel_swportal0; + + if (!qman_have_ccsr()) + return; + before = qm_in(QCSP_PID_CFG(idx)); + if (!done) { + liodn_offset = before & PID_CFG_LIODN_MASK; + done = 1; + return; + } + after = (before & (~PID_CFG_LIODN_MASK)) | liodn_offset; + qm_out(QCSP_PID_CFG(idx), after); +} + +#ifdef CONFIG_SYSFS + +#define DRV_NAME "fsl-qman" + +static ssize_t show_pfdr_fpc(struct device *dev, + struct device_attribute *dev_attr, char *buf) +{ + return snprintf(buf, PAGE_SIZE, "%u\n", qm_in(PFDR_FPC)); +}; + +static ssize_t show_dlm_avg(struct device *dev, + struct device_attribute *dev_attr, char *buf) +{ + u32 data; + int i; + + if (!sscanf(dev_attr->attr.name, "dcp%d_dlm_avg", &i)) + return -EINVAL; + data = qm_in(DCP_DLM_AVG(i)); + return snprintf(buf, PAGE_SIZE, "%d.%08d\n", data>>8, + (data & 0x000000ff)*390625); +}; + +static ssize_t set_dlm_avg(struct device *dev, + struct device_attribute *dev_attr, const char *buf, size_t count) +{ + unsigned long val; + int i; + + if (!sscanf(dev_attr->attr.name, "dcp%d_dlm_avg", &i)) + return -EINVAL; + if (strict_strtoul(buf, 0, &val)) { + dev_dbg(dev, "invalid input %s\n", buf); + return -EINVAL; + } + qm_out(DCP_DLM_AVG(i), val); + return count; +}; + +static ssize_t show_pfdr_cfg(struct device *dev, + struct device_attribute *dev_attr, char *buf) +{ + return snprintf(buf, PAGE_SIZE, "%u\n", qm_in(PFDR_CFG)); +}; + +static ssize_t set_pfdr_cfg(struct device *dev, + struct device_attribute *dev_attr, const char *buf, size_t count) +{ + unsigned long val; + + if (strict_strtoul(buf, 0, &val)) { + dev_dbg(dev, "invalid input %s\n", buf); + return -EINVAL; + } + qm_out(PFDR_CFG, val); + return count; +}; + +static ssize_t show_sfdr_in_use(struct device *dev, + struct device_attribute *dev_attr, char *buf) +{ + return snprintf(buf, PAGE_SIZE, "%u\n", qm_in(SFDR_IN_USE)); +}; + +static ssize_t show_idle_stat(struct device *dev, + struct device_attribute *dev_attr, char *buf) +{ + return snprintf(buf, PAGE_SIZE, "%u\n", qm_in(IDLE_STAT)); +}; + +static ssize_t show_ci_rlm_avg(struct device *dev, + struct device_attribute *dev_attr, char *buf) +{ + u32 data = qm_in(CI_RLM_AVG); + return snprintf(buf, PAGE_SIZE, "%d.%08d\n", data>>8, + (data & 0x000000ff)*390625); +}; + +static ssize_t set_ci_rlm_avg(struct device *dev, + struct device_attribute *dev_attr, const char *buf, size_t count) +{ + unsigned long val; + + if (strict_strtoul(buf, 0, &val)) { + dev_dbg(dev, "invalid input %s\n", buf); + return -EINVAL; + } + qm_out(CI_RLM_AVG, val); + return count; +}; + +static ssize_t show_err_isr(struct device *dev, + struct device_attribute *dev_attr, char *buf) +{ + return snprintf(buf, PAGE_SIZE, "0x%08x\n", qm_in(ERR_ISR)); +}; + + +static ssize_t show_sbec(struct device *dev, + struct device_attribute *dev_attr, char *buf) +{ + int i; + + if (!sscanf(dev_attr->attr.name, "sbec_%d", &i)) + return -EINVAL; + return snprintf(buf, PAGE_SIZE, "%u\n", qm_in(SBEC(i))); +}; + +static DEVICE_ATTR(pfdr_fpc, S_IRUSR, show_pfdr_fpc, NULL); +static DEVICE_ATTR(pfdr_cfg, S_IRUSR, show_pfdr_cfg, set_pfdr_cfg); +static DEVICE_ATTR(idle_stat, S_IRUSR, show_idle_stat, NULL); +static DEVICE_ATTR(ci_rlm_avg, (S_IRUSR|S_IWUGO), + show_ci_rlm_avg, set_ci_rlm_avg); +static DEVICE_ATTR(err_isr, S_IRUSR, show_err_isr, NULL); +static DEVICE_ATTR(sfdr_in_use, S_IRUSR, show_sfdr_in_use, NULL); + +static DEVICE_ATTR(dcp0_dlm_avg, (S_IRUSR|S_IWUGO), show_dlm_avg, set_dlm_avg); +static DEVICE_ATTR(dcp1_dlm_avg, (S_IRUSR|S_IWUGO), show_dlm_avg, set_dlm_avg); +static DEVICE_ATTR(dcp2_dlm_avg, (S_IRUSR|S_IWUGO), show_dlm_avg, set_dlm_avg); +static DEVICE_ATTR(dcp3_dlm_avg, (S_IRUSR|S_IWUGO), show_dlm_avg, set_dlm_avg); + +static DEVICE_ATTR(sbec_0, S_IRUSR, show_sbec, NULL); +static DEVICE_ATTR(sbec_1, S_IRUSR, show_sbec, NULL); +static DEVICE_ATTR(sbec_2, S_IRUSR, show_sbec, NULL); +static DEVICE_ATTR(sbec_3, S_IRUSR, show_sbec, NULL); +static DEVICE_ATTR(sbec_4, S_IRUSR, show_sbec, NULL); +static DEVICE_ATTR(sbec_5, S_IRUSR, show_sbec, NULL); +static DEVICE_ATTR(sbec_6, S_IRUSR, show_sbec, NULL); + + +static struct attribute *qman_dev_attributes[] = { + &dev_attr_pfdr_fpc.attr, + &dev_attr_pfdr_cfg.attr, + &dev_attr_idle_stat.attr, + &dev_attr_ci_rlm_avg.attr, + &dev_attr_err_isr.attr, + &dev_attr_dcp0_dlm_avg.attr, + &dev_attr_dcp1_dlm_avg.attr, + &dev_attr_dcp2_dlm_avg.attr, + &dev_attr_dcp3_dlm_avg.attr, + /* sfdr_in_use will be added if necessary */ + NULL +}; + +static struct attribute *qman_dev_ecr_attributes[] = { + &dev_attr_sbec_0.attr, + &dev_attr_sbec_1.attr, + &dev_attr_sbec_2.attr, + &dev_attr_sbec_3.attr, + &dev_attr_sbec_4.attr, + &dev_attr_sbec_5.attr, + &dev_attr_sbec_6.attr, + NULL +}; + +/* root level */ +static const struct attribute_group qman_dev_attr_grp = { + .name = NULL, + .attrs = qman_dev_attributes +}; +static const struct attribute_group qman_dev_ecr_grp = { + .name = "error_capture", + .attrs = qman_dev_ecr_attributes +}; + +static int of_fsl_qman_remove(struct platform_device *ofdev) +{ + sysfs_remove_group(&ofdev->dev.kobj, &qman_dev_attr_grp); + return 0; +}; + +static int of_fsl_qman_probe(struct platform_device *ofdev) +{ + int ret; + + ret = sysfs_create_group(&ofdev->dev.kobj, &qman_dev_attr_grp); + if (ret) + goto done; + if (qman_ip_rev != QMAN_REV10) { + ret = sysfs_add_file_to_group(&ofdev->dev.kobj, + &dev_attr_sfdr_in_use.attr, qman_dev_attr_grp.name); + if (ret) + goto del_group_0; + } + ret = sysfs_create_group(&ofdev->dev.kobj, &qman_dev_ecr_grp); + if (ret) + goto del_group_0; + + goto done; + +del_group_0: + sysfs_remove_group(&ofdev->dev.kobj, &qman_dev_attr_grp); +done: + if (ret) + dev_err(&ofdev->dev, + "Cannot create dev attributes ret=%d\n", ret); + return ret; +}; + +static struct of_device_id of_fsl_qman_ids[] = { + { + .compatible = "fsl,qman", + }, + {} +}; +MODULE_DEVICE_TABLE(of, of_fsl_qman_ids); + +static struct platform_driver of_fsl_qman_driver = { + .driver = { + .owner = THIS_MODULE, + .name = DRV_NAME, + .of_match_table = of_fsl_qman_ids, + }, + .probe = of_fsl_qman_probe, + .remove = of_fsl_qman_remove, +}; + +static int qman_ctrl_init(void) +{ + return platform_driver_register(&of_fsl_qman_driver); +} + +static void qman_ctrl_exit(void) +{ + platform_driver_unregister(&of_fsl_qman_driver); +} + +module_init(qman_ctrl_init); +module_exit(qman_ctrl_exit); + +#endif /* CONFIG_SYSFS */ --- linux-3.13.0.orig/drivers/staging/fsl_qbman/qman_debugfs.c +++ linux-3.13.0/drivers/staging/fsl_qbman/qman_debugfs.c @@ -0,0 +1,1314 @@ +/* Copyright 2010-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 "qman_private.h" + +#define MAX_FQID (0x00ffffff) +#define QM_FQD_BLOCK_SIZE 64 +#define QM_FQD_AR (0xC10) + +static u32 fqid_max; +static u64 qman_ccsr_start; +static u64 qman_ccsr_size; + +static const char *state_txt[] = { + "Out of Service", + "Retired", + "Tentatively Scheduled", + "Truly Scheduled", + "Parked", + "Active, Active Held or Held Suspended", + "Unknown State 6", + "Unknown State 7", + NULL, +}; + +static const u8 fqd_states[] = { + QM_MCR_NP_STATE_OOS, QM_MCR_NP_STATE_RETIRED, QM_MCR_NP_STATE_TEN_SCHED, + QM_MCR_NP_STATE_TRU_SCHED, QM_MCR_NP_STATE_PARKED, + QM_MCR_NP_STATE_ACTIVE}; +static const u32 fqd_states_count = sizeof(fqd_states)/sizeof(u8); + +struct mask_to_text { + u16 mask; + const char *txt; +}; + +struct mask_filter_s { + u16 mask; + u8 filter; +}; + +static const struct mask_filter_s mask_filter[] = { + {QM_FQCTRL_PREFERINCACHE, 0}, + {QM_FQCTRL_PREFERINCACHE, 1}, + {QM_FQCTRL_HOLDACTIVE, 0}, + {QM_FQCTRL_HOLDACTIVE, 1}, + {QM_FQCTRL_AVOIDBLOCK, 0}, + {QM_FQCTRL_AVOIDBLOCK, 1}, + {QM_FQCTRL_FORCESFDR, 0}, + {QM_FQCTRL_FORCESFDR, 1}, + {QM_FQCTRL_CPCSTASH, 0}, + {QM_FQCTRL_CPCSTASH, 1}, + {QM_FQCTRL_CTXASTASHING, 0}, + {QM_FQCTRL_CTXASTASHING, 1}, + {QM_FQCTRL_ORP, 0}, + {QM_FQCTRL_ORP, 1}, + {QM_FQCTRL_TDE, 0}, + {QM_FQCTRL_TDE, 1}, + {QM_FQCTRL_CGE, 0}, + {QM_FQCTRL_CGE, 1} +}; +static const u32 mask_filter_count = + sizeof(mask_filter)/sizeof(struct mask_filter_s); + +static const struct mask_to_text fq_ctrl_text_list[] = { + { + .mask = QM_FQCTRL_PREFERINCACHE, + .txt = "Prefer in cache", + }, + { + .mask = QM_FQCTRL_HOLDACTIVE, + .txt = "Hold active in portal", + }, + { + .mask = QM_FQCTRL_AVOIDBLOCK, + .txt = "Avoid Blocking", + }, + { + .mask = QM_FQCTRL_FORCESFDR, + .txt = "High-priority SFDRs", + }, + { + .mask = QM_FQCTRL_CPCSTASH, + .txt = "CPC Stash Enable", + }, + { + .mask = QM_FQCTRL_CTXASTASHING, + .txt = "Context-A stashing", + }, + { + .mask = QM_FQCTRL_ORP, + .txt = "ORP Enable", + }, + { + .mask = QM_FQCTRL_TDE, + .txt = "Tail-Drop Enable", + }, + { + .mask = QM_FQCTRL_CGE, + .txt = "Congestion Group Enable", + }, + { + .mask = 0, + .txt = NULL, + } +}; + +static const char *get_fqd_ctrl_text(u16 mask) +{ + int i = 0; + + while (fq_ctrl_text_list[i].txt != NULL) { + if (fq_ctrl_text_list[i].mask == mask) + return fq_ctrl_text_list[i].txt; + i++; + } + return NULL; +} + +static const struct mask_to_text stashing_text_list[] = { + { + .mask = QM_STASHING_EXCL_CTX, + .txt = "FQ Ctx Stash" + }, + { + .mask = QM_STASHING_EXCL_DATA, + .txt = "Frame Data Stash", + }, + { + .mask = QM_STASHING_EXCL_ANNOTATION, + .txt = "Frame Annotation Stash", + }, + { + .mask = 0, + .txt = NULL, + }, +}; + +static int user_input_convert(const char __user *user_buf, size_t count, + unsigned long *val) +{ + char buf[12]; + + if (count > sizeof(buf) - 1) + return -EINVAL; + if (copy_from_user(buf, user_buf, count)) + return -EFAULT; + buf[count] = '\0'; + if (strict_strtoul(buf, 0, val)) + return -EINVAL; + return 0; +} + +struct line_buffer_fq { + u32 buf[8]; + u32 buf_cnt; + int line_cnt; +}; + +static void add_to_line_buffer(struct line_buffer_fq *line_buf, u32 fqid, + struct seq_file *file) +{ + line_buf->buf[line_buf->buf_cnt] = fqid; + line_buf->buf_cnt++; + if (line_buf->buf_cnt == 8) { + /* Buffer is full, flush it */ + if (line_buf->line_cnt != 0) + seq_printf(file, ",\n"); + seq_printf(file, "0x%06x,0x%06x,0x%06x,0x%06x,0x%06x," + "0x%06x,0x%06x,0x%06x", + line_buf->buf[0], line_buf->buf[1], line_buf->buf[2], + line_buf->buf[3], line_buf->buf[4], line_buf->buf[5], + line_buf->buf[6], line_buf->buf[7]); + line_buf->buf_cnt = 0; + line_buf->line_cnt++; + } +} + +static void flush_line_buffer(struct line_buffer_fq *line_buf, + struct seq_file *file) +{ + if (line_buf->buf_cnt) { + int y = 0; + if (line_buf->line_cnt != 0) + seq_printf(file, ",\n"); + while (y != line_buf->buf_cnt) { + if (y+1 == line_buf->buf_cnt) + seq_printf(file, "0x%06x", line_buf->buf[y]); + else + seq_printf(file, "0x%06x,", line_buf->buf[y]); + y++; + } + line_buf->line_cnt++; + } + if (line_buf->line_cnt) + seq_printf(file, "\n"); +} + +static struct dentry *dfs_root; /* debugfs root directory */ + +/******************************************************************************* + * Query Frame Queue Non Programmable Fields + ******************************************************************************/ +struct query_fq_np_fields_data_s { + u32 fqid; +}; +static struct query_fq_np_fields_data_s query_fq_np_fields_data = { + .fqid = 1, +}; + +static int query_fq_np_fields_show(struct seq_file *file, void *offset) +{ + int ret; + struct qm_mcr_queryfq_np np; + struct qman_fq fq; + + fq.fqid = query_fq_np_fields_data.fqid; + ret = qman_query_fq_np(&fq, &np); + if (ret) + return ret; + /* Print state */ + seq_printf(file, "Query FQ Non Programmable Fields Result fqid 0x%x\n", + fq.fqid); + seq_printf(file, " force eligible pending: %s\n", + (np.state & QM_MCR_NP_STATE_FE) ? "yes" : "no"); + seq_printf(file, " retirement pending: %s\n", + (np.state & QM_MCR_NP_STATE_R) ? "yes" : "no"); + seq_printf(file, " state: %s\n", + state_txt[np.state & QM_MCR_NP_STATE_MASK]); + seq_printf(file, " fq_link: 0x%x\n", np.fqd_link); + seq_printf(file, " odp_seq: %u\n", np.odp_seq); + seq_printf(file, " orp_nesn: %u\n", np.orp_nesn); + seq_printf(file, " orp_ea_hseq: %u\n", np.orp_ea_hseq); + seq_printf(file, " orp_ea_tseq: %u\n", np.orp_ea_tseq); + seq_printf(file, " orp_ea_hptr: 0x%x\n", np.orp_ea_hptr); + seq_printf(file, " orp_ea_tptr: 0x%x\n", np.orp_ea_tptr); + seq_printf(file, " pfdr_hptr: 0x%x\n", np.pfdr_hptr); + seq_printf(file, " pfdr_tptr: 0x%x\n", np.pfdr_tptr); + seq_printf(file, " is: ics_surp contains a %s\n", + (np.is) ? "deficit" : "surplus"); + seq_printf(file, " ics_surp: %u\n", np.ics_surp); + seq_printf(file, " byte_cnt: %u\n", np.byte_cnt); + seq_printf(file, " frm_cnt: %u\n", np.frm_cnt); + seq_printf(file, " ra1_sfdr: 0x%x\n", np.ra1_sfdr); + seq_printf(file, " ra2_sfdr: 0x%x\n", np.ra2_sfdr); + seq_printf(file, " od1_sfdr: 0x%x\n", np.od1_sfdr); + seq_printf(file, " od2_sfdr: 0x%x\n", np.od2_sfdr); + seq_printf(file, " od3_sfdr: 0x%x\n", np.od3_sfdr); + return 0; +} + +static int query_fq_np_fields_open(struct inode *inode, + struct file *file) +{ + return single_open(file, query_fq_np_fields_show, NULL); +} + +static ssize_t query_fq_np_fields_write(struct file *f, + const char __user *buf, size_t count, loff_t *off) +{ + int ret; + unsigned long val; + + ret = user_input_convert(buf, count, &val); + if (ret) + return ret; + if (val > MAX_FQID) + return -EINVAL; + query_fq_np_fields_data.fqid = (u32)val; + return count; +} + +static const struct file_operations query_fq_np_fields_fops = { + .owner = THIS_MODULE, + .open = query_fq_np_fields_open, + .read = seq_read, + .write = query_fq_np_fields_write, + .release = single_release, +}; + +/******************************************************************************* + * Frame Queue Programmable Fields + ******************************************************************************/ +struct query_fq_fields_data_s { + u32 fqid; +}; + +static struct query_fq_fields_data_s query_fq_fields_data = { + .fqid = 1, +}; + +static int query_fq_fields_show(struct seq_file *file, void *offset) +{ + int ret; + struct qm_fqd fqd; + struct qman_fq fq; + int i = 0; + + memset(&fqd, 0, sizeof(struct qm_fqd)); + fq.fqid = query_fq_fields_data.fqid; + ret = qman_query_fq(&fq, &fqd); + if (ret) + return ret; + seq_printf(file, "Query FQ Programmable Fields Result fqid 0x%x\n", + fq.fqid); + seq_printf(file, " orprws: %u\n", fqd.orprws); + seq_printf(file, " oa: %u\n", fqd.oa); + seq_printf(file, " olws: %u\n", fqd.olws); + + seq_printf(file, " cgid: %u\n", fqd.cgid); + + if ((fqd.fq_ctrl & QM_FQCTRL_MASK) == 0) + seq_printf(file, " fq_ctrl: None\n"); + else { + i = 0; + seq_printf(file, " fq_ctrl:\n"); + while (fq_ctrl_text_list[i].txt != NULL) { + if ((fqd.fq_ctrl & QM_FQCTRL_MASK) & + fq_ctrl_text_list[i].mask) + seq_printf(file, " %s\n", + fq_ctrl_text_list[i].txt); + i++; + } + } + seq_printf(file, " dest_channel: %u\n", fqd.dest.channel); + seq_printf(file, " dest_wq: %u\n", fqd.dest.wq); + seq_printf(file, " ics_cred: %u\n", fqd.ics_cred); + seq_printf(file, " td_mant: %u\n", fqd.td.mant); + seq_printf(file, " td_exp: %u\n", fqd.td.exp); + + seq_printf(file, " ctx_b: 0x%x\n", fqd.context_b); + + seq_printf(file, " ctx_a: 0x%llx\n", qm_fqd_stashing_get64(&fqd)); + /* Any stashing configured */ + if ((fqd.context_a.stashing.exclusive & 0x7) == 0) + seq_printf(file, " ctx_a_stash_exclusive: None\n"); + else { + seq_printf(file, " ctx_a_stash_exclusive:\n"); + i = 0; + while (stashing_text_list[i].txt != NULL) { + if ((fqd.fq_ctrl & 0x7) & stashing_text_list[i].mask) + seq_printf(file, " %s\n", + stashing_text_list[i].txt); + i++; + } + } + seq_printf(file, " ctx_a_stash_annotation_cl: %u\n", + fqd.context_a.stashing.annotation_cl); + seq_printf(file, " ctx_a_stash_data_cl: %u\n", + fqd.context_a.stashing.data_cl); + seq_printf(file, " ctx_a_stash_context_cl: %u\n", + fqd.context_a.stashing.context_cl); + return 0; +} + +static int query_fq_fields_open(struct inode *inode, + struct file *file) +{ + return single_open(file, query_fq_fields_show, NULL); +} + +static ssize_t query_fq_fields_write(struct file *f, + const char __user *buf, size_t count, loff_t *off) +{ + int ret; + unsigned long val; + + ret = user_input_convert(buf, count, &val); + if (ret) + return ret; + if (val > MAX_FQID) + return -EINVAL; + query_fq_fields_data.fqid = (u32)val; + return count; +} + +static const struct file_operations query_fq_fields_fops = { + .owner = THIS_MODULE, + .open = query_fq_fields_open, + .read = seq_read, + .write = query_fq_fields_write, + .release = single_release, +}; + +/******************************************************************************* + * Query WQ lengths + ******************************************************************************/ +struct query_wq_lengths_data_s { + union { + u16 channel_wq; /* ignores wq (3 lsbits) */ + struct { + u16 id:13; /* enum qm_channel */ + u16 __reserved:3; + } __packed channel; + }; +}; +static struct query_wq_lengths_data_s query_wq_lengths_data; +static int query_wq_lengths_show(struct seq_file *file, void *offset) +{ + int ret; + struct qm_mcr_querywq wq; + int i; + + memset(&wq, 0, sizeof(struct qm_mcr_querywq)); + wq.channel.id = query_wq_lengths_data.channel.id; + ret = qman_query_wq(0, &wq); + if (ret) + return ret; + seq_printf(file, "Query Result For Channel: 0x%x\n", wq.channel.id); + for (i = 0; i < 8; i++) + /* mask out upper 4 bits since they are not part of length */ + seq_printf(file, " wq%d_len : %u\n", i, wq.wq_len[i] & 0x0fff); + return 0; +} + +static int query_wq_lengths_open(struct inode *inode, + struct file *file) +{ + return single_open(file, query_wq_lengths_show, NULL); +} + +static ssize_t query_wq_lengths_write(struct file *f, + const char __user *buf, size_t count, loff_t *off) +{ + int ret; + unsigned long val; + + ret = user_input_convert(buf, count, &val); + if (ret) + return ret; + if (val > 0xfff8) + return -EINVAL; + query_wq_lengths_data.channel.id = (u16)val; + return count; +} + +static const struct file_operations query_wq_lengths_fops = { + .owner = THIS_MODULE, + .open = query_wq_lengths_open, + .read = seq_read, + .write = query_wq_lengths_write, + .release = single_release, +}; + +/******************************************************************************* + * Query CGR + ******************************************************************************/ +struct query_cgr_s { + u8 cgid; +}; +static struct query_cgr_s query_cgr_data; + +static int query_cgr_show(struct seq_file *file, void *offset) +{ + int ret; + struct qm_mcr_querycgr cgrd; + struct qman_cgr cgr; + + memset(&cgr, 0, sizeof(struct qm_mcr_querycgr)); + cgr.cgrid = query_cgr_data.cgid; + ret = qman_query_cgr(&cgr, &cgrd); + if (ret) + return ret; + seq_printf(file, "Query CGR id 0x%x\n", cgr.cgrid); + seq_printf(file, " wr_parm_g MA: %u, Mn: %u, SA: %u, Sn: %u, Pn: %u\n", + cgrd.cgr.wr_parm_g.MA, cgrd.cgr.wr_parm_g.Mn, + cgrd.cgr.wr_parm_g.SA, cgrd.cgr.wr_parm_g.Sn, + cgrd.cgr.wr_parm_g.Pn); + + seq_printf(file, " wr_parm_y MA: %u, Mn: %u, SA: %u, Sn: %u, Pn: %u\n", + cgrd.cgr.wr_parm_y.MA, cgrd.cgr.wr_parm_y.Mn, + cgrd.cgr.wr_parm_y.SA, cgrd.cgr.wr_parm_y.Sn, + cgrd.cgr.wr_parm_y.Pn); + + seq_printf(file, " wr_parm_r MA: %u, Mn: %u, SA: %u, Sn: %u, Pn: %u\n", + cgrd.cgr.wr_parm_r.MA, cgrd.cgr.wr_parm_r.Mn, + cgrd.cgr.wr_parm_r.SA, cgrd.cgr.wr_parm_r.Sn, + cgrd.cgr.wr_parm_r.Pn); + + seq_printf(file, " wr_en_g: %u, wr_en_y: %u, we_en_r: %u\n", + cgrd.cgr.wr_en_g, cgrd.cgr.wr_en_y, cgrd.cgr.wr_en_r); + + seq_printf(file, " cscn_en: %u\n", cgrd.cgr.cscn_en); + seq_printf(file, " cscn_targ: %u\n", cgrd.cgr.cscn_targ); + seq_printf(file, " cstd_en: %u\n", cgrd.cgr.cstd_en); + seq_printf(file, " cs: %u\n", cgrd.cgr.cs); + + seq_printf(file, " cs_thresh_TA: %u, cs_thresh_Tn: %u\n", + cgrd.cgr.cs_thres.TA, cgrd.cgr.cs_thres.Tn); + + if (qman_ip_rev != QMAN_REV10) { + seq_printf(file, " mode: %s\n", + (cgrd.cgr.mode & QMAN_CGR_MODE_FRAME) ? + "frame count" : "byte count"); + } + seq_printf(file, " i_bcnt: %llu\n", qm_mcr_querycgr_i_get64(&cgrd)); + seq_printf(file, " a_bcnt: %llu\n", qm_mcr_querycgr_a_get64(&cgrd)); + + return 0; +} + +static int query_cgr_open(struct inode *inode, struct file *file) +{ + return single_open(file, query_cgr_show, NULL); +} + +static ssize_t query_cgr_write(struct file *f, const char __user *buf, + size_t count, loff_t *off) +{ + int ret; + unsigned long val; + + ret = user_input_convert(buf, count, &val); + if (ret) + return ret; + if (val > 0xff) + return -EINVAL; + query_cgr_data.cgid = (u8)val; + return count; +} + +static const struct file_operations query_cgr_fops = { + .owner = THIS_MODULE, + .open = query_cgr_open, + .read = seq_read, + .write = query_cgr_write, + .release = single_release, +}; + +/******************************************************************************* + * Test Write CGR + ******************************************************************************/ +struct test_write_cgr_s { + u64 i_bcnt; + u8 cgid; +}; +static struct test_write_cgr_s test_write_cgr_data; + +static int testwrite_cgr_show(struct seq_file *file, void *offset) +{ + int ret; + struct qm_mcr_cgrtestwrite result; + struct qman_cgr cgr; + u64 i_bcnt; + + memset(&cgr, 0, sizeof(struct qman_cgr)); + memset(&result, 0, sizeof(struct qm_mcr_cgrtestwrite)); + cgr.cgrid = test_write_cgr_data.cgid; + i_bcnt = test_write_cgr_data.i_bcnt; + ret = qman_testwrite_cgr(&cgr, i_bcnt, &result); + if (ret) + return ret; + seq_printf(file, "CGR Test Write CGR id 0x%x\n", cgr.cgrid); + seq_printf(file, " wr_parm_g MA: %u, Mn: %u, SA: %u, Sn: %u, Pn: %u\n", + result.cgr.wr_parm_g.MA, result.cgr.wr_parm_g.Mn, + result.cgr.wr_parm_g.SA, result.cgr.wr_parm_g.Sn, + result.cgr.wr_parm_g.Pn); + seq_printf(file, " wr_parm_y MA: %u, Mn: %u, SA: %u, Sn: %u, Pn: %u\n", + result.cgr.wr_parm_y.MA, result.cgr.wr_parm_y.Mn, + result.cgr.wr_parm_y.SA, result.cgr.wr_parm_y.Sn, + result.cgr.wr_parm_y.Pn); + seq_printf(file, " wr_parm_r MA: %u, Mn: %u, SA: %u, Sn: %u, Pn: %u\n", + result.cgr.wr_parm_r.MA, result.cgr.wr_parm_r.Mn, + result.cgr.wr_parm_r.SA, result.cgr.wr_parm_r.Sn, + result.cgr.wr_parm_r.Pn); + seq_printf(file, " wr_en_g: %u, wr_en_y: %u, we_en_r: %u\n", + result.cgr.wr_en_g, result.cgr.wr_en_y, result.cgr.wr_en_r); + seq_printf(file, " cscn_en: %u\n", result.cgr.cscn_en); + seq_printf(file, " cscn_targ: %u\n", result.cgr.cscn_targ); + seq_printf(file, " cstd_en: %u\n", result.cgr.cstd_en); + seq_printf(file, " cs: %u\n", result.cgr.cs); + seq_printf(file, " cs_thresh_TA: %u, cs_thresh_Tn: %u\n", + result.cgr.cs_thres.TA, result.cgr.cs_thres.Tn); + + /* Add Mode for Si 2 */ + if (qman_ip_rev != QMAN_REV10) { + seq_printf(file, " mode: %s\n", + (result.cgr.mode & QMAN_CGR_MODE_FRAME) ? + "frame count" : "byte count"); + } + + seq_printf(file, " i_bcnt: %llu\n", + qm_mcr_cgrtestwrite_i_get64(&result)); + seq_printf(file, " a_bcnt: %llu\n", + qm_mcr_cgrtestwrite_a_get64(&result)); + seq_printf(file, " wr_prob_g: %u\n", result.wr_prob_g); + seq_printf(file, " wr_prob_y: %u\n", result.wr_prob_y); + seq_printf(file, " wr_prob_r: %u\n", result.wr_prob_r); + return 0; +} + +static int testwrite_cgr_open(struct inode *inode, struct file *file) +{ + return single_open(file, testwrite_cgr_show, NULL); +} + +static const struct file_operations testwrite_cgr_fops = { + .owner = THIS_MODULE, + .open = testwrite_cgr_open, + .read = seq_read, + .release = single_release, +}; + + +static int testwrite_cgr_ibcnt_show(struct seq_file *file, void *offset) +{ + seq_printf(file, "i_bcnt: %llu\n", test_write_cgr_data.i_bcnt); + return 0; +} +static int testwrite_cgr_ibcnt_open(struct inode *inode, struct file *file) +{ + return single_open(file, testwrite_cgr_ibcnt_show, NULL); +} + +static ssize_t testwrite_cgr_ibcnt_write(struct file *f, const char __user *buf, + size_t count, loff_t *off) +{ + int ret; + unsigned long val; + + ret = user_input_convert(buf, count, &val); + if (ret) + return ret; + test_write_cgr_data.i_bcnt = val; + return count; +} + +static const struct file_operations teswrite_cgr_ibcnt_fops = { + .owner = THIS_MODULE, + .open = testwrite_cgr_ibcnt_open, + .read = seq_read, + .write = testwrite_cgr_ibcnt_write, + .release = single_release, +}; + +static int testwrite_cgr_cgrid_show(struct seq_file *file, void *offset) +{ + seq_printf(file, "cgrid: %u\n", (u32)test_write_cgr_data.cgid); + return 0; +} +static int testwrite_cgr_cgrid_open(struct inode *inode, struct file *file) +{ + return single_open(file, testwrite_cgr_cgrid_show, NULL); +} + +static ssize_t testwrite_cgr_cgrid_write(struct file *f, const char __user *buf, + size_t count, loff_t *off) +{ + int ret; + unsigned long val; + + ret = user_input_convert(buf, count, &val); + if (ret) + return ret; + if (val > 0xff) + return -EINVAL; + test_write_cgr_data.cgid = (u8)val; + return count; +} + +static const struct file_operations teswrite_cgr_cgrid_fops = { + .owner = THIS_MODULE, + .open = testwrite_cgr_cgrid_open, + .read = seq_read, + .write = testwrite_cgr_cgrid_write, + .release = single_release, +}; + +/******************************************************************************* + * Query Congestion State + ******************************************************************************/ +static int query_congestion_show(struct seq_file *file, void *offset) +{ + int ret; + struct qm_mcr_querycongestion cs; + int i, j, in_cong = 0; + u32 mask; + + memset(&cs, 0, sizeof(struct qm_mcr_querycongestion)); + ret = qman_query_congestion(&cs); + if (ret) + return ret; + seq_printf(file, "Query Congestion Result\n"); + for (i = 0; i < 8; i++) { + mask = 0x80000000; + for (j = 0; j < 32; j++) { + if (cs.state.__state[i] & mask) { + in_cong = 1; + seq_printf(file, " cg %u: %s\n", (i*32)+j, + "in congestion"); + } + mask >>= 1; + } + } + if (!in_cong) + seq_printf(file, " All congestion groups not congested.\n"); + return 0; +} + +static int query_congestion_open(struct inode *inode, struct file *file) +{ + return single_open(file, query_congestion_show, NULL); +} + +static const struct file_operations query_congestion_fops = { + .owner = THIS_MODULE, + .open = query_congestion_open, + .read = seq_read, + .release = single_release, +}; + +/******************************************************************************* + * QMan register + ******************************************************************************/ +struct qman_register_s { + u32 val; +}; +static struct qman_register_s qman_register_data; + +static void init_ccsrmempeek(void) +{ + struct device_node *dn; + const u32 *regaddr_p; + + dn = of_find_compatible_node(NULL, NULL, "fsl,qman"); + if (!dn) { + pr_info("No fsl,qman node\n"); + return; + } + regaddr_p = of_get_address(dn, 0, &qman_ccsr_size, NULL); + if (!regaddr_p) { + of_node_put(dn); + return; + } + qman_ccsr_start = of_translate_address(dn, regaddr_p); + of_node_put(dn); +} +/* This function provides access to QMan ccsr memory map */ +static int qman_ccsrmempeek(u32 *val, u32 offset) +{ + void __iomem *addr; + u64 phys_addr; + + if (!qman_ccsr_start) + return -EINVAL; + + if (offset > (qman_ccsr_size - sizeof(u32))) + return -EINVAL; + + phys_addr = qman_ccsr_start + offset; + addr = ioremap(phys_addr, sizeof(u32)); + if (!addr) { + pr_err("ccsrmempeek, ioremap failed\n"); + return -EINVAL; + } + *val = in_be32(addr); + iounmap(addr); + return 0; +} + +static int qman_ccsrmempeek_show(struct seq_file *file, void *offset) +{ + u32 b; + + qman_ccsrmempeek(&b, qman_register_data.val); + seq_printf(file, "QMan register offset = 0x%x\n", + qman_register_data.val); + seq_printf(file, "value = 0x%08x\n", b); + + return 0; +} + +static int qman_ccsrmempeek_open(struct inode *inode, struct file *file) +{ + return single_open(file, qman_ccsrmempeek_show, NULL); +} + +static ssize_t qman_ccsrmempeek_write(struct file *f, const char __user *buf, + size_t count, loff_t *off) +{ + int ret; + unsigned long val; + + ret = user_input_convert(buf, count, &val); + if (ret) + return ret; + /* multiple of 4 */ + if (val > (qman_ccsr_size - sizeof(u32))) { + pr_info("Input 0x%lx > 0x%llx\n", + val, (qman_ccsr_size - sizeof(u32))); + return -EINVAL; + } + if (val & 0x3) { + pr_info("Input 0x%lx not multiple of 4\n", val); + return -EINVAL; + } + qman_register_data.val = val; + return count; +} + +static const struct file_operations qman_ccsrmempeek_fops = { + .owner = THIS_MODULE, + .open = qman_ccsrmempeek_open, + .read = seq_read, + .write = qman_ccsrmempeek_write, +}; + +/******************************************************************************* + * QMan state + ******************************************************************************/ +static int qman_fqd_state_show(struct seq_file *file, void *offset) +{ + struct qm_mcr_queryfq_np np; + struct qman_fq fq; + struct line_buffer_fq line_buf; + int ret, i; + u8 *state = file->private; + u32 qm_fq_state_cnt[fqd_states_count]; + + memset(qm_fq_state_cnt, 0, sizeof(qm_fq_state_cnt)); + memset(&line_buf, 0, sizeof(line_buf)); + + seq_printf(file, "List of fq ids in state: %s\n", state_txt[*state]); + + for (i = 1; i < fqid_max; i++) { + fq.fqid = i; + ret = qman_query_fq_np(&fq, &np); + if (ret) + return ret; + if (*state == (np.state & QM_MCR_NP_STATE_MASK)) + add_to_line_buffer(&line_buf, fq.fqid, file); + /* Keep a summary count of all states */ + if ((np.state & QM_MCR_NP_STATE_MASK) < fqd_states_count) + qm_fq_state_cnt[(np.state & QM_MCR_NP_STATE_MASK)]++; + } + flush_line_buffer(&line_buf, file); + + for (i = 0; i < fqd_states_count; i++) { + seq_printf(file, "%s count = %u\n", state_txt[i], + qm_fq_state_cnt[i]); + } + return 0; +} + +static int qman_fqd_state_open(struct inode *inode, struct file *file) +{ + return single_open(file, qman_fqd_state_show, inode->i_private); +} + +static const struct file_operations qman_fqd_state_fops = { + .owner = THIS_MODULE, + .open = qman_fqd_state_open, + .read = seq_read, +}; + +static int qman_fqd_ctrl_show(struct seq_file *file, void *offset) +{ + struct qm_fqd fqd; + struct qman_fq fq; + u32 fq_en_cnt = 0, fq_di_cnt = 0; + int ret, i; + struct mask_filter_s *data = file->private; + const char *ctrl_txt = get_fqd_ctrl_text(data->mask); + struct line_buffer_fq line_buf; + + memset(&line_buf, 0, sizeof(line_buf)); + seq_printf(file, "List of fq ids with: %s :%s\n", + ctrl_txt, (data->filter) ? "enabled" : "disabled"); + for (i = 1; i < fqid_max; i++) { + fq.fqid = i; + memset(&fqd, 0, sizeof(struct qm_fqd)); + ret = qman_query_fq(&fq, &fqd); + if (ret) + return ret; + if (data->filter) { + if (fqd.fq_ctrl & data->mask) + add_to_line_buffer(&line_buf, fq.fqid, file); + } else { + if (!(fqd.fq_ctrl & data->mask)) + add_to_line_buffer(&line_buf, fq.fqid, file); + } + if (fqd.fq_ctrl & data->mask) + fq_en_cnt++; + else + fq_di_cnt++; + } + flush_line_buffer(&line_buf, file); + + seq_printf(file, "Total FQD with: %s : enabled = %u\n", + ctrl_txt, fq_en_cnt); + seq_printf(file, "Total FQD with: %s : disabled = %u\n", + ctrl_txt, fq_di_cnt); + return 0; +} + +/******************************************************************************* + * QMan ctrl CGE, TDE, ORP, CTX, CPC, SFDR, BLOCK, HOLD, CACHE + ******************************************************************************/ +static int qman_fqd_ctrl_open(struct inode *inode, struct file *file) +{ + return single_open(file, qman_fqd_ctrl_show, inode->i_private); +} + +static const struct file_operations qman_fqd_ctrl_fops = { + .owner = THIS_MODULE, + .open = qman_fqd_ctrl_open, + .read = seq_read, +}; + +/******************************************************************************* + * QMan ctrl summary + ******************************************************************************/ +/******************************************************************************* + * QMan summary state + ******************************************************************************/ +static int qman_fqd_non_prog_summary_show(struct seq_file *file, void *offset) +{ + struct qm_mcr_queryfq_np np; + struct qman_fq fq; + int ret, i; + u32 qm_fq_state_cnt[fqd_states_count]; + + memset(qm_fq_state_cnt, 0, sizeof(qm_fq_state_cnt)); + + for (i = 1; i < fqid_max; i++) { + fq.fqid = i; + ret = qman_query_fq_np(&fq, &np); + if (ret) + return ret; + /* Keep a summary count of all states */ + if ((np.state & QM_MCR_NP_STATE_MASK) < fqd_states_count) + qm_fq_state_cnt[(np.state & QM_MCR_NP_STATE_MASK)]++; + } + + for (i = 0; i < fqd_states_count; i++) { + seq_printf(file, "%s count = %u\n", state_txt[i], + qm_fq_state_cnt[i]); + } + return 0; +} + +static int qman_fqd_prog_summary_show(struct seq_file *file, void *offset) +{ + struct qm_fqd fqd; + struct qman_fq fq; + int ret, i , j; + u32 qm_prog_cnt[mask_filter_count/2]; + + memset(qm_prog_cnt, 0, sizeof(qm_prog_cnt)); + + for (i = 1; i < fqid_max; i++) { + memset(&fqd, 0, sizeof(struct qm_fqd)); + fq.fqid = i; + ret = qman_query_fq(&fq, &fqd); + if (ret) + return ret; + /* Keep a summary count of all states */ + for (j = 0; j < mask_filter_count; j += 2) + if ((fqd.fq_ctrl & QM_FQCTRL_MASK) & + mask_filter[j].mask) + qm_prog_cnt[j/2]++; + } + for (i = 0; i < mask_filter_count/2; i++) { + seq_printf(file, "%s count = %u\n", + get_fqd_ctrl_text(mask_filter[i*2].mask), + qm_prog_cnt[i]); + } + return 0; +} + +static int qman_fqd_summary_show(struct seq_file *file, void *offset) +{ + int ret; + + /* Display summary of non programmable fields */ + ret = qman_fqd_non_prog_summary_show(file, offset); + if (ret) + return ret; + seq_printf(file, "-----------------------------------------\n"); + /* Display programmable fields */ + ret = qman_fqd_prog_summary_show(file, offset); + if (ret) + return ret; + return 0; +} + +static int qman_fqd_summary_open(struct inode *inode, struct file *file) +{ + return single_open(file, qman_fqd_summary_show, NULL); +} + +static const struct file_operations qman_fqd_summary_fops = { + .owner = THIS_MODULE, + .open = qman_fqd_summary_open, + .read = seq_read, +}; + +/******************************************************************************* + * QMan destination work queue + ******************************************************************************/ +struct qman_dest_wq_s { + u16 wq_id; +}; +static struct qman_dest_wq_s qman_dest_wq_data = { + .wq_id = 0, +}; + +static int qman_fqd_dest_wq_show(struct seq_file *file, void *offset) +{ + struct qm_fqd fqd; + struct qman_fq fq; + int ret, i; + u16 *wq, wq_id = qman_dest_wq_data.wq_id; + struct line_buffer_fq line_buf; + + memset(&line_buf, 0, sizeof(line_buf)); + /* use vmalloc : need to allocate large memory region and don't + * require the memory to be physically contiguous. */ + wq = vmalloc(sizeof(u16) * (0xFFFF+1)); + if (!wq) + return -ENOMEM; + memset(wq, 0, sizeof(u16) * (0xFFFF+1)); + + seq_printf(file, "List of fq ids with destination work queue id" + " = 0x%x\n", wq_id); + + for (i = 1; i < fqid_max; i++) { + fq.fqid = i; + memset(&fqd, 0, sizeof(struct qm_fqd)); + ret = qman_query_fq(&fq, &fqd); + if (ret) { + vfree(wq); + return ret; + } + if (wq_id == fqd.dest_wq) + add_to_line_buffer(&line_buf, fq.fqid, file); + wq[fqd.dest_wq]++; + } + flush_line_buffer(&line_buf, file); + + seq_printf(file, "Summary of all FQD destination work queue values\n"); + for (i = 0; i < 0xFFFF; i++) { + if (wq[i]) + seq_printf(file, "Channel: 0x%x WQ: 0x%x WQ_ID: 0x%x, " + "count = %u\n", i >> 3, i & 0x3, i, wq[i]); + } + vfree(wq); + return 0; +} + +static ssize_t qman_fqd_dest_wq_write(struct file *f, const char __user *buf, + size_t count, loff_t *off) +{ + int ret; + unsigned long val; + + ret = user_input_convert(buf, count, &val); + if (ret) + return ret; + if (val > 0xFFFF) + return -EINVAL; + qman_dest_wq_data.wq_id = val; + return count; +} + +static int qman_fqd_dest_wq_open(struct inode *inode, struct file *file) +{ + return single_open(file, qman_fqd_dest_wq_show, NULL); +} + +static const struct file_operations qman_fqd_dest_wq_fops = { + .owner = THIS_MODULE, + .open = qman_fqd_dest_wq_open, + .read = seq_read, + .write = qman_fqd_dest_wq_write, +}; + +/******************************************************************************* + * QMan Intra-Class Scheduling Credit + ******************************************************************************/ +static int qman_fqd_cred_show(struct seq_file *file, void *offset) +{ + struct qm_fqd fqd; + struct qman_fq fq; + int ret, i; + u32 fq_cnt = 0; + struct line_buffer_fq line_buf; + + memset(&line_buf, 0, sizeof(line_buf)); + seq_printf(file, "List of fq ids with Intra-Class Scheduling Credit > 0" + "\n"); + + for (i = 1; i < fqid_max; i++) { + fq.fqid = i; + memset(&fqd, 0, sizeof(struct qm_fqd)); + ret = qman_query_fq(&fq, &fqd); + if (ret) + return ret; + if (fqd.ics_cred > 0) { + add_to_line_buffer(&line_buf, fq.fqid, file); + fq_cnt++; + } + } + flush_line_buffer(&line_buf, file); + + seq_printf(file, "Total FQD with ics_cred > 0 = %d\n", fq_cnt); + return 0; +} + +static int qman_fqd_cred_open(struct inode *inode, struct file *file) +{ + return single_open(file, qman_fqd_cred_show, NULL); +} + +static const struct file_operations qman_fqd_cred_fops = { + .owner = THIS_MODULE, + .open = qman_fqd_cred_open, + .read = seq_read, +}; + +/* helper macros used in qman_debugfs_module_init */ +#define QMAN_DBGFS_ENTRY(name, mode, parent, data, fops) \ + do { \ + d = debugfs_create_file(name, \ + mode, parent, \ + data, \ + fops); \ + if (d == NULL) { \ + ret = -ENOMEM; \ + goto _return; \ + } \ + } while (0) + +/* dfs_root as parent */ +#define QMAN_DBGFS_ENTRY_ROOT(name, mode, data, fops) \ + QMAN_DBGFS_ENTRY(name, mode, dfs_root, data, fops) + +/* fqd_root as parent */ +#define QMAN_DBGFS_ENTRY_FQDROOT(name, mode, data, fops) \ + QMAN_DBGFS_ENTRY(name, mode, fqd_root, data, fops) + +/* fqd state */ +#define QMAN_DBGFS_ENTRY_FQDSTATE(name, index) \ + QMAN_DBGFS_ENTRY_FQDROOT(name, S_IRUGO, \ + (void *)&mask_filter[index], &qman_fqd_ctrl_fops) + +static int __init qman_debugfs_module_init(void) +{ + int ret = 0; + struct dentry *d, *fqd_root; + u32 reg; + + fqid_max = 0; + init_ccsrmempeek(); + if (qman_ccsr_start) { + if (!qman_ccsrmempeek(®, QM_FQD_AR)) { + /* extract the size of the FQD window */ + reg = reg & 0x3f; + /* calculate valid frame queue descriptor range */ + fqid_max = (1 << (reg + 1)) / QM_FQD_BLOCK_SIZE; + } + } + dfs_root = debugfs_create_dir("qman", NULL); + fqd_root = debugfs_create_dir("fqd", dfs_root); + if (dfs_root == NULL || fqd_root == NULL) { + ret = -ENOMEM; + pr_err("Cannot create qman/fqd debugfs dir\n"); + goto _return; + } + if (fqid_max) { + QMAN_DBGFS_ENTRY_ROOT("ccsrmempeek", S_IRUGO | S_IWUGO, + NULL, &qman_ccsrmempeek_fops); + } + QMAN_DBGFS_ENTRY_ROOT("query_fq_np_fields", S_IRUGO | S_IWUGO, + &query_fq_np_fields_data, &query_fq_np_fields_fops); + + QMAN_DBGFS_ENTRY_ROOT("query_fq_fields", S_IRUGO | S_IWUGO, + &query_fq_fields_data, &query_fq_fields_fops); + + QMAN_DBGFS_ENTRY_ROOT("query_wq_lengths", S_IRUGO | S_IWUGO, + &query_wq_lengths_data, &query_wq_lengths_fops); + + QMAN_DBGFS_ENTRY_ROOT("query_cgr", S_IRUGO | S_IWUGO, + &query_cgr_data, &query_cgr_fops); + + QMAN_DBGFS_ENTRY_ROOT("query_congestion", S_IRUGO, + NULL, &query_congestion_fops); + + QMAN_DBGFS_ENTRY_ROOT("testwrite_cgr", S_IRUGO, + NULL, &testwrite_cgr_fops); + + QMAN_DBGFS_ENTRY_ROOT("testwrite_cgr_cgrid", S_IRUGO | S_IWUGO, + NULL, &teswrite_cgr_cgrid_fops); + + QMAN_DBGFS_ENTRY_ROOT("testwrite_cgr_ibcnt", S_IRUGO | S_IWUGO, + NULL, &teswrite_cgr_ibcnt_fops); + + /* Create files with fqd_root as parent */ + + QMAN_DBGFS_ENTRY_FQDROOT("stateoos", S_IRUGO, + (void *)&fqd_states[QM_MCR_NP_STATE_OOS], &qman_fqd_state_fops); + + QMAN_DBGFS_ENTRY_FQDROOT("state_retired", S_IRUGO, + (void *)&fqd_states[QM_MCR_NP_STATE_RETIRED], + &qman_fqd_state_fops); + + QMAN_DBGFS_ENTRY_FQDROOT("state_tentatively_sched", S_IRUGO, + (void *)&fqd_states[QM_MCR_NP_STATE_TEN_SCHED], + &qman_fqd_state_fops); + + QMAN_DBGFS_ENTRY_FQDROOT("state_truly_sched", S_IRUGO, + (void *)&fqd_states[QM_MCR_NP_STATE_TRU_SCHED], + &qman_fqd_state_fops); + + QMAN_DBGFS_ENTRY_FQDROOT("state_parked", S_IRUGO, + (void *)&fqd_states[QM_MCR_NP_STATE_PARKED], + &qman_fqd_state_fops); + + QMAN_DBGFS_ENTRY_FQDROOT("state_active", S_IRUGO, + (void *)&fqd_states[QM_MCR_NP_STATE_ACTIVE], + &qman_fqd_state_fops); + + QMAN_DBGFS_ENTRY_FQDSTATE("cge_enable", 17); + + QMAN_DBGFS_ENTRY_FQDSTATE("cge_disable", 16); + + QMAN_DBGFS_ENTRY_FQDSTATE("tde_enable", 15); + + QMAN_DBGFS_ENTRY_FQDSTATE("tde_disable", 14); + + QMAN_DBGFS_ENTRY_FQDSTATE("orp_enable", 13); + + QMAN_DBGFS_ENTRY_FQDSTATE("orp_disable", 12); + + QMAN_DBGFS_ENTRY_FQDSTATE("ctx_a_stashing_enable", 11); + + QMAN_DBGFS_ENTRY_FQDSTATE("ctx_a_stashing_disable", 10); + + QMAN_DBGFS_ENTRY_FQDSTATE("cpc_enable", 9); + + QMAN_DBGFS_ENTRY_FQDSTATE("cpc_disable", 8); + + QMAN_DBGFS_ENTRY_FQDSTATE("sfdr_enable", 7); + + QMAN_DBGFS_ENTRY_FQDSTATE("sfdr_disable", 6); + + QMAN_DBGFS_ENTRY_FQDSTATE("avoid_blocking_enable", 5); + + QMAN_DBGFS_ENTRY_FQDSTATE("avoid_blocking_disable", 4); + + QMAN_DBGFS_ENTRY_FQDSTATE("hold_active_enable", 3); + + QMAN_DBGFS_ENTRY_FQDSTATE("hold_active_disable", 2); + + QMAN_DBGFS_ENTRY_FQDSTATE("prefer_in_cache_enable", 1); + + QMAN_DBGFS_ENTRY_FQDSTATE("prefer_in_cache_disable", 0); + + QMAN_DBGFS_ENTRY_FQDROOT("summary", S_IRUGO, + NULL, &qman_fqd_summary_fops); + + QMAN_DBGFS_ENTRY_FQDROOT("wq", S_IRUGO | S_IWUGO, + NULL, &qman_fqd_dest_wq_fops); + + QMAN_DBGFS_ENTRY_FQDROOT("cred", S_IRUGO, + NULL, &qman_fqd_cred_fops); + + return 0; + +_return: + if (dfs_root) + debugfs_remove_recursive(dfs_root); + return ret; +} + +static void __exit qman_debugfs_module_exit(void) +{ + debugfs_remove_recursive(dfs_root); +} + +module_init(qman_debugfs_module_init); +module_exit(qman_debugfs_module_exit); +MODULE_LICENSE("Dual BSD/GPL"); + --- linux-3.13.0.orig/drivers/staging/fsl_qbman/qman_driver.c +++ linux-3.13.0/drivers/staging/fsl_qbman/qman_driver.c @@ -0,0 +1,544 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 "qman_private.h" + +/* Global variable containing revision id (even on non-control plane systems + * where CCSR isn't available) */ +u16 qman_ip_rev; +EXPORT_SYMBOL(qman_ip_rev); + +/* size of the fqd region in bytes */ +#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP +static u32 fqd_size = (PAGE_SIZE << CONFIG_FSL_QMAN_FQD_SZ); +#endif + +/*****************/ +/* Portal driver */ +/*****************/ + +static struct dpa_uio_class qman_uio = { + .list = LIST_HEAD_INIT(qman_uio.list), + .dev_prefix = "qman-uio-" +}; +const struct dpa_uio_class *dpa_uio_qman(void) +{ + return &qman_uio; +} +EXPORT_SYMBOL(dpa_uio_qman); + +#ifdef CONFIG_FSL_QMAN_NULL_FQ_DEMUX +/* Handlers for NULL portal callbacks (ie. where the contextB field, normally + * pointing to the corresponding FQ object, is NULL). */ +static enum qman_cb_dqrr_result null_cb_dqrr(struct qman_portal *qm, + struct qman_fq *fq, + const struct qm_dqrr_entry *dqrr) +{ + pr_warning("Ignoring unowned DQRR frame on portal %p.\n", qm); + return qman_cb_dqrr_consume; +} +static void null_cb_mr(struct qman_portal *qm, struct qman_fq *fq, + const struct qm_mr_entry *msg) +{ + pr_warning("Ignoring unowned MR msg on portal %p, verb 0x%02x.\n", + qm, msg->verb); +} +static const struct qman_fq_cb null_cb = { + .dqrr = null_cb_dqrr, + .ern = null_cb_mr, + .dc_ern = null_cb_mr, + .fqs = null_cb_mr +}; +#endif + +#ifdef CONFIG_FSL_QMAN_PORTAL +/* This structure carries parameters from the device-tree handling code that + * wants to set up a portal for use on 1 or more CPUs, and each temporary thread + * created to run on those CPUs. The 'portal' member is the return value. */ +struct affine_portal_data { + struct completion done; + const struct qm_portal_config *pconfig; + struct qman_portal *redirect; + int recovery_mode; + struct qman_portal *portal; +}; + +/* This function is called in a temporary thread for each CPU, to initialise the + * "affine" portal that the CPU should use. The thread is created and run from + * the init_affine_portal() bootstrapper. If the CPU has not been assigned its + * own portal, "redirect" will be non-NULL indicating it should share another + * CPU's portal (it becomes a "slave"). */ +static __init int thread_init_affine_portal(void *__data) +{ + struct affine_portal_data *data = __data; + const struct qm_portal_config *pconfig = data->pconfig; + if (data->redirect) + data->portal = qman_create_affine_slave(data->redirect); + else { + /* TODO: cgrs ?? */ + data->portal = qman_create_affine_portal(pconfig, NULL, +#ifdef CONFIG_FSL_QMAN_NULL_FQ_DEMUX + &null_cb, +#endif + data->recovery_mode); + if (data->portal) { + u32 irq_sources = 0; + /* default: enable all (available) pool channels */ + qman_static_dequeue_add(~0); + /* Determine what should be interrupt-vs-poll driven */ +#ifdef CONFIG_FSL_DPA_PIRQ_SLOW + irq_sources |= QM_PIRQ_EQCI | QM_PIRQ_EQRI | + QM_PIRQ_MRI | QM_PIRQ_CSCI; +#endif +#ifdef CONFIG_FSL_DPA_PIRQ_FAST + irq_sources |= QM_PIRQ_DQRI; +#endif + qman_irqsource_add(irq_sources); + } + } + complete(&data->done); + return 0; +} + +/* This function is just a bootstrap for running thread_init_affine_portal() on + * a given CPU. The parameters are passed in via the (void*) thread-arg (and + * results are received back) using the affine_portal_data struct. */ +static __init struct qman_portal *init_affine_portal( + const struct qm_portal_config *pconfig, + int cpu, struct qman_portal *redirect, + int recovery_mode) +{ + struct affine_portal_data data = { + .done = COMPLETION_INITIALIZER_ONSTACK(data.done), + .pconfig = pconfig, + .redirect = redirect, + .recovery_mode = recovery_mode, + .portal = NULL + }; + struct task_struct *k = kthread_create(thread_init_affine_portal, &data, + "qman_affine%d", cpu); + int ret; + if (IS_ERR(k)) { + pr_err("Failed to init %sQman affine portal for cpu %d\n", + redirect ? "(slave) " : "", cpu); + return NULL; + } + kthread_bind(k, cpu); + wake_up_process(k); + wait_for_completion(&data.done); + ret = kthread_stop(k); + if (ret) { + pr_err("Qman portal initialisation failed, cpu %d, code %d\n", + cpu, ret); + return NULL; + } + if (data.portal) + pr_info("Qman portal %sinitialised, cpu %d\n", + redirect ? "(slave) " : + pconfig->public_cfg.is_shared ? "(shared) " : "", cpu); + return data.portal; +} +#endif + +/* Parses the device-tree node, extracts the configuration, and if appropriate + * initialises the portal for use on one or more CPUs. */ +static __init struct qm_portal_config *fsl_qman_portal_init( + struct device_node *node) +{ + struct qm_portal_config *pcfg; + const u32 *index, *channel; + const phandle *ph; + struct device_node *tmp_node; + int irq, ret, numpools; + u16 ip_rev = 0; + + pcfg = kmalloc(sizeof(*pcfg), GFP_KERNEL); + if (!pcfg) { + pr_err("can't allocate portal config"); + return NULL; + } + + if (of_device_is_compatible(node, "fsl,qman-portal-1.0")) + ip_rev = QMAN_REV10; + else if (of_device_is_compatible(node, "fsl,qman-portal-1.1")) + ip_rev = QMAN_REV11; + else if (of_device_is_compatible(node, "fsl,qman-portal-1.2")) + ip_rev = QMAN_REV12; + else if (of_device_is_compatible(node, "fsl,qman-portal-2.0")) + ip_rev = QMAN_REV20; + + if (!qman_ip_rev) { + if (ip_rev) + qman_ip_rev = ip_rev; + else { + pr_warning("unknown Qman version, default to rev1.1\n"); + qman_ip_rev = QMAN_REV11; + } + } else if (ip_rev && (qman_ip_rev != ip_rev)) + pr_warning("Revision=0x%04x, but portal '%s' has 0x%04x\n", + qman_ip_rev, node->full_name, ip_rev); + + ret = of_address_to_resource(node, QM_ADDR_CE, + &pcfg->addr_phys[QM_ADDR_CE]); + if (ret) { + pr_err("Can't get %s property '%s'\n", node->full_name, + "reg::CE"); + goto err; + } + ret = of_address_to_resource(node, QM_ADDR_CI, + &pcfg->addr_phys[QM_ADDR_CI]); + if (ret) { + pr_err("Can't get %s property '%s'\n", node->full_name, + "reg::CI"); + goto err; + } + index = of_get_property(node, "cell-index", &ret); + if (!index || (ret != 4)) { + pr_err("Can't get %s property '%s'\n", node->full_name, + "cell-index"); + goto err; + } + channel = of_get_property(node, "fsl,qman-channel-id", &ret); + if (!channel || (ret != 4)) { + pr_err("Can't get %s property '%s'\n", node->full_name, + "fsl,qman-channel-id"); + goto err; + } + if (*channel != (*index + qm_channel_swportal0)) + pr_err("Warning: node %s has mismatched %s and %s\n", + node->full_name, "cell-index", "fsl,qman-channel-id"); + pcfg->public_cfg.channel = *channel; + /* Parse cpu associations for this portal. This involves dereferencing + * to the cpu device-tree nodes, but it also ensures we only try to work + * with CPUs that exist. (Eg. under a hypervisor.) */ + ph = of_get_property(node, "cpu-handle", &ret); + if (ph) { + if (ret != sizeof(phandle)) { + pr_err("Malformed %s property '%s'\n", node->full_name, + "cpu-handle"); + return NULL; + } + ret = check_cpu_phandle(*ph); + if (ret < 0) + return NULL; + pcfg->public_cfg.cpu = ret; + } else + pcfg->public_cfg.cpu = -1; + + ph = of_get_property(node, "fsl,qman-pool-channels", &ret); + if (ph && (ret % sizeof(phandle))) { + pr_err("Malformed %s property '%s'\n", node->full_name, + "fsl,qman-pool-channels"); + goto err; + } + numpools = ph ? (ret / sizeof(phandle)) : 0; + irq = irq_of_parse_and_map(node, 0); + if (irq == NO_IRQ) { + pr_err("Can't get %s property '%s'\n", node->full_name, + "interrupts"); + goto err; + } + pcfg->public_cfg.irq = irq; + pcfg->public_cfg.index = *index; + if (of_get_property(node, "fsl,hv-dma-handle", &ret)) + pcfg->public_cfg.has_stashing = 1; + else if (qman_ip_rev == QMAN_REV20) + pcfg->public_cfg.has_stashing = 1; + else +#ifdef CONFIG_FSL_PAMU + pcfg->public_cfg.has_stashing = 1; +#else + pcfg->public_cfg.has_stashing = 0; +#endif + pcfg->public_cfg.pools = 0; + pcfg->node = node; +#ifdef CONFIG_FSL_QMAN_CONFIG + /* We need the same LIODN offset for all portals */ + qman_liodn_fixup(pcfg->public_cfg.channel); +#endif + + if (of_get_property(node, "fsl,usdpaa-portal", &ret)) { + struct dpa_uio_portal *u = kmalloc(sizeof(*u), GFP_KERNEL); + if (!u) + goto err; + u->type = dpa_uio_portal_qman; + u->qm_cfg = pcfg; + list_add_tail(&u->node, &qman_uio.list); + /* Return NULL, otherwise the kernel may share it on CPUs that + * don't have their own portals, which would be ... *bad*. */ + return NULL; + } + + /* Map the portals now we know they aren't for UIO (the UIO code doesn't + * need the CE mapping, and so will do its own CI-only mapping). */ + pcfg->addr_virt[QM_ADDR_CE] = ioremap_prot( + pcfg->addr_phys[QM_ADDR_CE].start, + resource_size(&pcfg->addr_phys[QM_ADDR_CE]), + 0); + pcfg->addr_virt[QM_ADDR_CI] = ioremap_prot( + pcfg->addr_phys[QM_ADDR_CI].start, + resource_size(&pcfg->addr_phys[QM_ADDR_CI]), + _PAGE_GUARDED | _PAGE_NO_CACHE); + + while (numpools--) { + for_each_compatible_node(tmp_node, NULL, + "fsl,qman-pool-channel") { + phandle *lph = (phandle *)of_get_property(tmp_node, + "linux,phandle", &ret); + if (*lph == *ph) { + u32 *index = (u32 *)of_get_property(tmp_node, + "cell-index", &ret); + pcfg->public_cfg.pools |= + QM_SDQCR_CHANNELS_POOL(*index); + } + } + ph++; + } + if (pcfg->public_cfg.pools == 0) + panic("Unrecoverable error linking pool channels"); + + return pcfg; +err: + kfree(pcfg); + return NULL; +} + +static void __init fsl_qman_portal_destroy(struct qm_portal_config *pcfg) +{ + iounmap(pcfg->addr_virt[QM_ADDR_CE]); + iounmap(pcfg->addr_virt[QM_ADDR_CI]); + kfree(pcfg); +} + +static __init int fsl_fqid_range_init(struct device_node *node, + int recovery_mode) +{ + int ret; + u32 *range = (u32 *)of_get_property(node, "fsl,fqid-range", &ret); + if (!range) { + pr_err("No 'fsl,fqid-range' property in node %s\n", + node->full_name); + return -EINVAL; + } + if (ret != 8) { + pr_err("'fsl,fqid-range' is not a 2-cell range in node %s\n", + node->full_name); + return -EINVAL; + } + qman_release_fqid_range(range[0], range[1]); +#ifdef CONFIG_FSL_QMAN_PORTAL + /* If in recovery mode *and* we are using a private FQ allocation range, + * then automatically clean up all FQs in that range so we can + * automatically exit recovery mode too. */ + if (recovery_mode) { + u32 fqid; + for (fqid = range[0]; fqid < (range[0] + range[1]); fqid++) { + ret = qman_recovery_cleanup_fq(fqid); + if (ret) { + pr_err("Failed to recovery FQID %d\n", fqid); + return ret; + } + } + } +#else + BUG_ON(recovery_mode); +#endif + pr_info("Qman: FQID allocator includes range %d:%d%s\n", + range[0], range[1], recovery_mode ? " (recovered)" : ""); + return 0; +} + +#ifdef CONFIG_FSL_QMAN_PORTAL +static __init int __leave_recovery(void *__data) +{ + struct completion *done = __data; + qman_recovery_exit_local(); + complete(done); + return 0; +} + +int qman_recovery_exit(void) +{ + struct completion done = COMPLETION_INITIALIZER_ONSTACK(done); + unsigned int cpu; + + for_each_cpu(cpu, qman_affine_cpus()) { + struct task_struct *k = kthread_create(__leave_recovery, &done, + "qman_recovery"); + int ret; + if (IS_ERR(k)) { + pr_err("Thread failure (recovery) on cpu %d\n", cpu); + return -ENOMEM; + } + kthread_bind(k, cpu); + wake_up_process(k); + wait_for_completion(&done); + ret = kthread_stop(k); + if (ret) { + pr_err("Failed to exit recovery on cpu %d\n", cpu); + return ret; + } + pr_info("Qman portal exited recovery, cpu %d\n", cpu); + } + return 0; +} +EXPORT_SYMBOL(qman_recovery_exit); +#endif + +/***************/ +/* Driver load */ +/***************/ + +static __init int qman_init(void) +{ +#ifdef CONFIG_FSL_QMAN_PORTAL + struct qman_cgr cgr; + struct cpumask primary_cpus = *cpu_none_mask; + struct cpumask slave_cpus = *cpu_online_mask; + struct qman_portal *sharing_portal = NULL; + int sharing_cpu = -1; +#endif + struct device_node *dn; + struct qm_portal_config *pcfg; + int ret, use_bpid0 = 1, recovery_mode = 0; + LIST_HEAD(cfg_list); + + for_each_compatible_node(dn, NULL, "fsl,qman") { + if (!qman_init_error_int(dn)) + pr_info("Qman err interrupt handler present\n"); + else + pr_err("Qman err interrupt handler missing\n"); + } +#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP + ret = qman_setup_fq_lookup_table(fqd_size/64); + if (ret) + return ret; +#endif +#ifdef CONFIG_FSL_QMAN_PORTAL + if (fsl_dpa_should_recover()) + recovery_mode = 1; + for_each_compatible_node(dn, NULL, "fsl,qman-portal") { + pcfg = fsl_qman_portal_init(dn); + if (pcfg) { + if (pcfg->public_cfg.cpu >= 0) { + cpumask_set_cpu(pcfg->public_cfg.cpu, + &primary_cpus); + list_add(&pcfg->list, &cfg_list); + } else + fsl_qman_portal_destroy(pcfg); + } + } + /* only consider "online" CPUs */ + cpumask_and(&primary_cpus, &primary_cpus, cpu_online_mask); + if (cpumask_empty(&primary_cpus)) + /* No portals, we're done */ + return 0; + if (!cpumask_subset(cpu_online_mask, &primary_cpus)) { + /* Need to do some sharing. In lieu of anything more scientific + * (or configurable), we pick the last-most CPU that has a + * portal and share that one. */ + int next = cpumask_first(&primary_cpus); + while (next < nr_cpu_ids) { + sharing_cpu = next; + next = cpumask_next(next, &primary_cpus); + } + } + /* Parsing is done and sharing decisions are made, now initialise the + * portals and determine which "slave" CPUs are left over. */ + list_for_each_entry(pcfg, &cfg_list, list) { + struct qman_portal *p; + int is_shared = (!sharing_portal && (sharing_cpu >= 0) && + (pcfg->public_cfg.cpu == sharing_cpu)); + pcfg->public_cfg.is_shared = is_shared; + /* If it's not mapped to a CPU, or another portal is already + * initialised to the same CPU, skip this portal. */ + if (pcfg->public_cfg.cpu < 0 || !cpumask_test_cpu( + pcfg->public_cfg.cpu, &slave_cpus)) + continue; + p = init_affine_portal(pcfg, pcfg->public_cfg.cpu, NULL, + recovery_mode); + if (p) { + if (is_shared) + sharing_portal = p; + cpumask_clear_cpu(pcfg->public_cfg.cpu, &slave_cpus); + } + } + if (sharing_portal) { + int loop; + for_each_cpu(loop, &slave_cpus) { + struct qman_portal *p = init_affine_portal(NULL, loop, + sharing_portal, recovery_mode); + if (!p) + pr_err("Failed slave Qman portal for cpu %d\n", + loop); + } + } +#else + for_each_compatible_node(dn, NULL, "fsl,qman-portal") { + pcfg = fsl_qman_portal_init(dn); + if (pcfg) + /* No kernel portal support, so if USDPAA didn't consume + * the portal, we've no other use for it. */ + fsl_qman_portal_destroy(pcfg); + } +#endif + for_each_compatible_node(dn, NULL, "fsl,fqid-range") { + use_bpid0 = 0; + ret = fsl_fqid_range_init(dn, recovery_mode); + if (ret) + return ret; + } +#ifdef CONFIG_FSL_QMAN_PORTAL + /* If using private FQ allocation, exit recovery mode automatically (ie. + * after automatic recovery) */ + if (recovery_mode && !use_bpid0) { + ret = qman_recovery_exit(); + if (ret) + return ret; + } + for (cgr.cgrid = 0; cgr.cgrid < __CGR_NUM; cgr.cgrid++) { + /* This is to ensure h/w-internal CGR memory is zeroed out. Note + * that we do this for all conceivable CGRIDs, not all of which + * are necessarily available on the underlying hardware version. + * We ignore any errors for this reason. */ + qman_modify_cgr(&cgr, QMAN_CGR_FLAG_USE_INIT, NULL); + } +#endif + ret = fqalloc_init(use_bpid0); + if (ret) + return ret; + pr_info("Qman portals initialised\n"); + return 0; +} +subsys_initcall(qman_init); --- linux-3.13.0.orig/drivers/staging/fsl_qbman/qman_fqalloc.c +++ linux-3.13.0/drivers/staging/fsl_qbman/qman_fqalloc.c @@ -0,0 +1,264 @@ +/* Copyright 2009-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 "qman_private.h" + +#include + +/****************/ +/* FQ allocator */ +/****************/ + +/* Global flag: use BPID==0 (fq_pool), or use the range-allocator? */ +static int use_bman; + +#ifdef CONFIG_FSL_BMAN_PORTAL +static struct bman_pool *fq_pool; +static const struct bman_pool_params fq_pool_params; +#endif + +__init int fqalloc_init(int __use_bman) +{ + use_bman = __use_bman; +#ifdef CONFIG_FSL_BMAN_PORTAL + if (use_bman) { + fq_pool = bman_new_pool(&fq_pool_params); + if (!fq_pool) + return -ENOMEM; + } +#else + BUG_ON(use_bman); +#endif + return 0; +} + +u32 qm_fq_new(void) +{ +#ifdef CONFIG_FSL_BMAN_PORTAL + struct bm_buffer buf; + int ret; +#endif + + if (!use_bman) { + u32 result; + if (qman_alloc_fqid(&result) < 0) + return 0; + return result; + } +#ifdef CONFIG_FSL_BMAN_PORTAL + BUG_ON(!fq_pool); + ret = bman_acquire(fq_pool, &buf, 1, 0); + if (ret != 1) + return 0; + return (u32)bm_buffer_get64(&buf); +#else + BUG(); +#endif +} +EXPORT_SYMBOL(qm_fq_new); + +int qm_fq_free_flags(u32 fqid, __maybe_unused u32 flags) +{ +#ifdef CONFIG_FSL_BMAN_PORTAL + struct bm_buffer buf; + u32 bflags = 0; + int ret; + bm_buffer_set64(&buf, fqid); +#endif + + if (!use_bman) { + qman_release_fqid(fqid); + return 0; + } +#ifdef CONFIG_FSL_BMAN_PORTAL +#ifdef CONFIG_FSL_DPA_CAN_WAIT + if (flags & QM_FQ_FREE_WAIT) { + bflags |= BMAN_RELEASE_FLAG_WAIT; + if (flags & BMAN_RELEASE_FLAG_WAIT_INT) + bflags |= BMAN_RELEASE_FLAG_WAIT_INT; + if (flags & BMAN_RELEASE_FLAG_WAIT_SYNC) + bflags |= BMAN_RELEASE_FLAG_WAIT_SYNC; + } +#endif + ret = bman_release(fq_pool, &buf, 1, bflags); + return ret; +#else + BUG(); +#endif +} +EXPORT_SYMBOL(qm_fq_free_flags); + +/* Global state for the allocator */ +static DEFINE_SPINLOCK(alloc_lock); +static LIST_HEAD(alloc_list); + +/* The allocator is a (possibly-empty) list of these; */ +struct alloc_node { + struct list_head list; + u32 base; + u32 num; +}; + +/* #define FQRANGE_DEBUG */ + +#ifdef FQRANGE_DEBUG +#define DPRINT pr_info +static void DUMP(void) +{ + int off = 0; + char buf[256]; + struct alloc_node *p; + list_for_each_entry(p, &alloc_list, list) { + if (off < 255) + off += snprintf(buf + off, 255-off, "{%d,%d}", + p->base, p->base + p->num - 1); + } + pr_info("%s\n", buf); +} +#else +#define DPRINT(x...) do { ; } while(0) +#define DUMP() do { ; } while(0) +#endif + +int qman_alloc_fqid_range(u32 *result, u32 count, u32 align, int partial) +{ + struct alloc_node *i = NULL, *next_best = NULL; + u32 base, next_best_base = 0, num = 0, next_best_num = 0; + struct alloc_node *margin_left, *margin_right; + + *result = (u32)-1; + DPRINT("alloc_range(%d,%d,%d)\n", count, align, partial); + DUMP(); + /* If 'align' is 0, it should behave as though it was 1 */ + if (!align) + align = 1; + margin_left = kmalloc(sizeof(*margin_left), GFP_KERNEL); + if (!margin_left) + goto err; + margin_right = kmalloc(sizeof(*margin_right), GFP_KERNEL); + if (!margin_right) { + kfree(margin_left); + goto err; + } + spin_lock_irq(&alloc_lock); + list_for_each_entry(i, &alloc_list, list) { + base = (i->base + align - 1) / align; + base *= align; + if ((base - i->base) >= i->num) + /* alignment is impossible, regardless of count */ + continue; + num = i->num - (base - i->base); + if (num >= count) { + /* this one will do nicely */ + num = count; + goto done; + } + if (num > next_best_num) { + next_best = i; + next_best_base = base; + next_best_num = num; + } + } + if (partial && next_best) { + i = next_best; + base = next_best_base; + num = next_best_num; + } else + i = NULL; +done: + if (i) { + if (base != i->base) { + margin_left->base = i->base; + margin_left->num = base - i->base; + list_add_tail(&margin_left->list, &i->list); + } else + kfree(margin_left); + if ((base + num) < (i->base + i->num)) { + margin_right->base = base + num; + margin_right->num = (i->base + i->num) - + (base + num); + list_add(&margin_right->list, &i->list); + } else + kfree(margin_right); + list_del(&i->list); + kfree(i); + *result = base; + } + spin_unlock_irq(&alloc_lock); +err: + DPRINT("returning %d\n", i ? num : -ENOMEM); + DUMP(); + return i ? (int)num : -ENOMEM; +} +EXPORT_SYMBOL(qman_alloc_fqid_range); + +void qman_release_fqid_range(u32 fqid, u32 count) +{ + struct alloc_node *i, *node = kmalloc(sizeof(*node), GFP_KERNEL); + DPRINT("release_range(%d,%d)\n", fqid, count); + DUMP(); + spin_lock_irq(&alloc_lock); + node->base = fqid; + node->num = count; + list_for_each_entry(i, &alloc_list, list) { + if (i->base >= node->base) { + list_add_tail(&node->list, &i->list); + goto done; + } + } + list_add_tail(&node->list, &alloc_list); +done: + /* Merge to the left */ + i = list_entry(node->list.prev, struct alloc_node, list); + if (node->list.prev != &alloc_list) { + BUG_ON((i->base + i->num) > node->base); + if ((i->base + i->num) == node->base) { + node->base = i->base; + node->num += i->num; + list_del(&i->list); + kfree(i); + } + } + /* Merge to the right */ + i = list_entry(node->list.next, struct alloc_node, list); + if (node->list.next != &alloc_list) { + BUG_ON((node->base + node->num) > i->base); + if ((node->base + node->num) == i->base) { + node->num += i->num; + list_del(&i->list); + kfree(i); + } + } + spin_unlock_irq(&alloc_lock); + DUMP(); +} +EXPORT_SYMBOL(qman_release_fqid_range); + --- linux-3.13.0.orig/drivers/staging/fsl_qbman/qman_high.c +++ linux-3.13.0/drivers/staging/fsl_qbman/qman_high.c @@ -0,0 +1,2360 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 "qman_low.h" + +/* Compilation constants */ +#define DQRR_MAXFILL 15 +#define EQCR_ITHRESH 4 /* if EQCR congests, interrupt threshold */ +#define IRQNAME "QMan portal %d" +#define MAX_IRQNAME 16 /* big enough for "QMan portal %d" */ + +/* Lock/unlock frame queues, subject to the "LOCKED" flag. This is about + * inter-processor locking only. Note, FQLOCK() is always called either under a + * local_irq_save() or from interrupt context - hence there's no need for irq + * protection (and indeed, attempting to nest irq-protection doesn't work, as + * the "irq en/disable" machinery isn't recursive...). */ +#define FQLOCK(fq) \ + do { \ + struct qman_fq *__fq478 = (fq); \ + if (fq_isset(__fq478, QMAN_FQ_FLAG_LOCKED)) \ + spin_lock(&__fq478->fqlock); \ + } while(0) +#define FQUNLOCK(fq) \ + do { \ + struct qman_fq *__fq478 = (fq); \ + if (fq_isset(__fq478, QMAN_FQ_FLAG_LOCKED)) \ + spin_unlock(&__fq478->fqlock); \ + } while(0) + +static inline void fq_set(struct qman_fq *fq, u32 mask) +{ + set_bits(mask, &fq->flags); +} +static inline void fq_clear(struct qman_fq *fq, u32 mask) +{ + clear_bits(mask, &fq->flags); +} +static inline int fq_isset(struct qman_fq *fq, u32 mask) +{ + return fq->flags & mask; +} +static inline int fq_isclear(struct qman_fq *fq, u32 mask) +{ + return !(fq->flags & mask); +} + +#define PORTAL_BITS_CI_PREFETCH 0x00020000 /* EQCR::CI prefetched */ +#define PORTAL_BITS_RECOVERY 0x00040000 /* recovery mode */ + +struct qman_portal { + struct qm_portal p; + unsigned long bits; /* PORTAL_BITS_*** - dynamic, strictly internal */ + unsigned long irq_sources; + u32 slowpoll; /* only used when interrupts are off */ + struct qman_fq *vdqcr_owned; /* only 1 volatile dequeue at a time */ +#ifdef CONFIG_FSL_DPA_CAN_WAIT_SYNC + struct qman_fq *eqci_owned; /* only 1 enqueue WAIT_SYNC at a time */ +#endif +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE + spinlock_t sharing_lock; /* only used if is_shared */ + int is_shared; + struct qman_portal *sharing_redirect; +#endif + u32 sdqcr; + int dqrr_disable_ref; +#ifdef CONFIG_FSL_QMAN_NULL_FQ_DEMUX + /* If we receive a DQRR or MR ring entry for a "null" FQ, ie. for which + * FQD::contextB is NULL rather than pointing to a FQ object, we use + * these handlers. (This is not considered a fast-path mechanism.) */ + struct qman_fq_cb null_cb; +#endif + /* When the cpu-affine portal is activated, this is non-NULL */ + const struct qm_portal_config *config; + /* This is needed for providing a non-NULL device to dma_map_***() */ + struct platform_device *pdev; + struct dpa_rbtree retire_table; + char irqname[MAX_IRQNAME]; + /* 2-element array. cgrs[0] is mask, cgrs[1] is snapshot. */ + struct qman_cgrs *cgrs; + /* 256-element array, each is a linked-list of CSCN handlers. */ + struct list_head cgr_cbs[256]; + /* list lock */ + spinlock_t cgr_lock; +}; + +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE +#define PORTAL_IRQ_LOCK(p, irqflags) \ + do { \ + if ((p)->is_shared) \ + spin_lock_irqsave(&(p)->sharing_lock, irqflags); \ + else \ + local_irq_save(irqflags); \ + } while (0) +#define PORTAL_IRQ_UNLOCK(p, irqflags) \ + do { \ + if ((p)->is_shared) \ + spin_unlock_irqrestore(&(p)->sharing_lock, irqflags); \ + else \ + local_irq_restore(irqflags); \ + } while (0) +#else +#define PORTAL_IRQ_LOCK(p, irqflags) local_irq_save(irqflags) +#define PORTAL_IRQ_UNLOCK(p, irqflags) local_irq_restore(irqflags) +#endif + +static cpumask_t affine_mask; +static DEFINE_SPINLOCK(affine_mask_lock); +static DEFINE_PER_CPU(struct qman_portal, qman_affine_portal); +/* "raw" gets the cpu-local struct whether it's a redirect or not. */ +static inline struct qman_portal *get_raw_affine_portal(void) +{ + return &get_cpu_var(qman_affine_portal); +} +/* For ops that can redirect, this obtains the portal to use */ +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE +static inline struct qman_portal *get_affine_portal(void) +{ + struct qman_portal *p = get_raw_affine_portal(); + if (p->sharing_redirect) + return p->sharing_redirect; + return p; +} +#else +#define get_affine_portal() get_raw_affine_portal() +#endif +/* For every "get", there must be a "put" */ +static inline void put_affine_portal(void) +{ + put_cpu_var(qman_affine_portal); +} + +/* This gives a FQID->FQ lookup to cover the fact that we can't directly demux + * retirement notifications (the fact they are sometimes h/w-consumed means that + * contextB isn't always a s/w demux - and as we can't know which case it is + * when looking at the notification, we have to use the slow lookup for all of + * them). NB, it's possible to have multiple FQ objects refer to the same FQID + * (though at most one of them should be the consumer), so this table isn't for + * all FQs - FQs are added when retirement commands are issued, and removed when + * they complete, which also massively reduces the size of this table. */ +IMPLEMENT_DPA_RBTREE(fqtree, struct qman_fq, node, fqid); + +/* This is what everything can wait on, even if it migrates to a different cpu + * to the one whose affine portal it is waiting on. */ +static DECLARE_WAIT_QUEUE_HEAD(affine_queue); + +static inline int table_push_fq(struct qman_portal *p, struct qman_fq *fq) +{ + int ret = fqtree_push(&p->retire_table, fq); + if (ret) + pr_err("ERROR: double FQ-retirement %d\n", fq->fqid); + return ret; +} + +static inline void table_del_fq(struct qman_portal *p, struct qman_fq *fq) +{ + fqtree_del(&p->retire_table, fq); +} + +static inline struct qman_fq *table_find_fq(struct qman_portal *p, u32 fqid) +{ + return fqtree_find(&p->retire_table, fqid); +} + +#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP +static void **qman_fq_lookup_table; +static size_t qman_fq_lookup_table_size; + +int qman_setup_fq_lookup_table(size_t num_entries) +{ + num_entries++; + /* Allocate 1 more entry since the first entry is not used */ + qman_fq_lookup_table = vmalloc((num_entries * sizeof(void *))); + if (!qman_fq_lookup_table) { + pr_err("QMan: Could not allocate fq lookup table\n"); + return -ENOMEM; + } + memset(qman_fq_lookup_table, 0, num_entries * sizeof(void *)); + qman_fq_lookup_table_size = num_entries; + pr_info("QMan: Allocated lookup table at %p, entry count %lu\n", + qman_fq_lookup_table, + (unsigned long)qman_fq_lookup_table_size); + return 0; +} + +/* global structure that maintains fq object mapping */ +static DEFINE_SPINLOCK(fq_hash_table_lock); + +static int find_empty_fq_table_entry(u32 *entry, struct qman_fq *fq) +{ + u32 i; + + spin_lock(&fq_hash_table_lock); + /* Can't use index zero because this has special meaning + * in context_b field. */ + for (i = 1; i < qman_fq_lookup_table_size; i++) { + if (qman_fq_lookup_table[i] == NULL) { + *entry = i; + qman_fq_lookup_table[i] = fq; + spin_unlock(&fq_hash_table_lock); + return 0; + } + } + spin_unlock(&fq_hash_table_lock); + return -ENOMEM; +} + +static void clear_fq_table_entry(u32 entry) +{ + spin_lock(&fq_hash_table_lock); + BUG_ON(entry >= qman_fq_lookup_table_size); + qman_fq_lookup_table[entry] = NULL; + spin_unlock(&fq_hash_table_lock); +} + +static inline struct qman_fq *get_fq_table_entry(u32 entry) +{ + BUG_ON(entry >= qman_fq_lookup_table_size); + return qman_fq_lookup_table[entry]; +} +#endif + +/* In the case that slow- and fast-path handling are both done by qman_poll() + * (ie. because there is no interrupt handling), we ought to balance how often + * we do the fast-path poll versus the slow-path poll. We'll use two decrementer + * sources, so we call the fast poll 'n' times before calling the slow poll + * once. The idle decrementer constant is used when the last slow-poll detected + * no work to do, and the busy decrementer constant when the last slow-poll had + * work to do. */ +#define SLOW_POLL_IDLE 1000 +#define SLOW_POLL_BUSY 10 +static u32 __poll_portal_slow(struct qman_portal *p, u32 is); +static inline unsigned int __poll_portal_fast(struct qman_portal *p, + unsigned int poll_limit); + +#ifdef CONFIG_FSL_DPA_HAVE_IRQ +/* Portal interrupt handler */ +static irqreturn_t portal_isr(__always_unused int irq, void *ptr) +{ + struct qman_portal *p = ptr; + u32 clear = QM_DQAVAIL_MASK | p->irq_sources; + u32 is = qm_isr_status_read(&p->p) & p->irq_sources; + /* DQRR-handling if it's interrupt-driven */ + if (is & QM_PIRQ_DQRI) + __poll_portal_fast(p, CONFIG_FSL_QMAN_POLL_LIMIT); + /* Handling of anything else that's interrupt-driven */ + clear |= __poll_portal_slow(p, is); + qm_isr_status_clear(&p->p, clear); + return IRQ_HANDLED; +} +#endif + +/* This inner version is used privately by qman_create_affine_portal(), as well + * as by the exported qman_stop_dequeues(). */ +static inline void qman_stop_dequeues_ex(struct qman_portal *p) +{ + unsigned long irqflags __maybe_unused; + PORTAL_IRQ_LOCK(p, irqflags); + if (!(p->dqrr_disable_ref++)) + qm_dqrr_set_maxfill(&p->p, 0); + PORTAL_IRQ_UNLOCK(p, irqflags); +} + +static int drain_mr_fqrni(struct qm_portal *p) +{ + const struct qm_mr_entry *msg; +loop: + msg = qm_mr_current(p); + if (!msg) { + /* if MR was full and h/w had other FQRNI entries to produce, we + * need to allow it time to produce those entries once the + * existing entries are consumed. A worst-case situation + * (fully-loaded system) means h/w sequencers may have to do 3-4 + * other things before servicing the portal's MR pump, each of + * which (if slow) may take ~50 qman cycles (which is ~200 + * processor cycles). So rounding up and then multiplying this + * worst-case estimate by a factor of 10, just to be + * ultra-paranoid, goes as high as 10,000 cycles. NB, we consume + * one entry at a time, so h/w has an opportunity to produce new + * entries well before the ring has been fully consumed, so + * we're being *really* paranoid here. */ + u64 now, then = mfatb(); + do { + now = mfatb(); + } while ((then + 10000) > now); + msg = qm_mr_current(p); + if (!msg) + return 0; + } + if ((msg->verb & QM_MR_VERB_TYPE_MASK) != QM_MR_VERB_FQRNI) + /* We aren't draining anything but FQRNIs */ + return -1; + qm_mr_next(p); + qm_mr_cci_consume(p, 1); + goto loop; +} + +/* this is called from qman_create_affine_portal() if not initialising in + * recovery mode, otherwise from qman_recovery_exit_local() after recovery is + * done. */ +static void post_recovery(struct qman_portal *p __always_unused, + const struct qm_portal_config *config) +{ + struct device_node *tmp_node, *node = config->node; + /* Enable DMA on portal LIODNs (stashing) and those of its sub-nodes + * (Fman TX and SEC/PME accelerators, where available). */ + if (pamu_enable_liodn(node, -1)) + /* If there's a PAMU problem, best to continue anyway and let + * the corresponding traffic hit whatever problems it will hit, + * than to fail portal initialisation and trigger a crash in + * dependent code that has no relationship to the PAMU issue. */ + pr_err("Failed to enable portal LIODN %s\n", + node->full_name); + for_each_child_of_node(node, tmp_node) + if (pamu_enable_liodn(tmp_node, -1)) + pr_err("Failed to enable portal LIODN %s\n", + tmp_node->full_name); +} + +struct qman_portal *qman_create_affine_portal( + const struct qm_portal_config *config, + const struct qman_cgrs *cgrs, + const struct qman_fq_cb *null_cb, + int recovery_mode) +{ + struct qman_portal *portal = get_raw_affine_portal(); + struct qm_portal *__p = &portal->p; + char buf[16]; + int ret; + u32 isdr; + + /* A criteria for calling this function (from qman_driver.c) is that + * we're already affine to the cpu and won't schedule onto another cpu. + * This means we can put_affine_portal() and yet continue to use + * "portal", which in turn means aspects of this routine can sleep. */ + put_affine_portal(); +#ifndef CONFIG_FSL_QMAN_NULL_FQ_DEMUX + if (null_cb) { + pr_err("Driver does not support 'NULL FQ' callbacks\n"); + return NULL; + } +#endif + /* prep the low-level portal struct with the mapped addresses from the + * config, everything that follows depends on it and "config" is more + * for (de)reference... */ + __p->addr.addr_ce = config->addr_virt[QM_ADDR_CE]; + __p->addr.addr_ci = config->addr_virt[QM_ADDR_CI]; + if (qm_eqcr_init(__p, qm_eqcr_pvb, qm_eqcr_cce)) { + pr_err("Qman EQCR initialisation failed\n"); + goto fail_eqcr; + } +#ifdef CONFIG_FSL_QMAN_PORTAL_DISABLEAUTO_DCA +#define QM_DQRR_CMODE qm_dqrr_cci +#else +#define QM_DQRR_CMODE qm_dqrr_cdc +#endif + /* for recovery mode, don't enable stashing yet */ + if (qm_dqrr_init(__p, config, qm_dqrr_dpush, qm_dqrr_pvb, + recovery_mode ? qm_dqrr_cci : QM_DQRR_CMODE, + DQRR_MAXFILL, recovery_mode)) { + pr_err("Qman DQRR initialisation failed\n"); + goto fail_dqrr; + } + if (qm_mr_init(__p, qm_mr_pvb, qm_mr_cci)) { + pr_err("Qman MR initialisation failed\n"); + goto fail_mr; + } + /* for recovery mode, quiesce SDQCR/VDQCR and drain DQRR+MR until h/w + * wraps up anything it was doing (5ms is ample idle time). */ + if (recovery_mode) { + const struct qm_dqrr_entry *dq; + const struct qm_mr_entry *msg; + int idle = 0; + /* quiesce SDQCR/VDQCR, then drain till h/w wraps up anything it + * was doing (5ms is more than enough to ensure it's done). */ + qm_dqrr_sdqcr_set(__p, 0); + qm_dqrr_vdqcr_set(__p, 0); +drain_loop: + qm_dqrr_pvb_update(__p, 0); + dq = qm_dqrr_current(__p); + qm_mr_pvb_update(__p); + msg = qm_mr_current(__p); + if (dq) { + pr_warning("DQRR recovery: dumping dqrr %02x:%02x for " + "FQID %d\n", dq->verb & QM_DQRR_VERB_MASK, + dq->stat, dq->fqid); + qm_dqrr_next(__p); + qm_dqrr_cci_consume(__p, 1); + } + if (msg) { + pr_warning("MR recovery: dumping msg 0x%02x for " + "FQID %d\n", msg->verb & QM_MR_VERB_TYPE_MASK, + msg->fq.fqid); + qm_mr_next(__p); + qm_mr_cci_consume(__p, 1); + } + if (!dq && !msg) { + if (++idle < 5) { + msleep(1); + goto drain_loop; + } + } else { + idle = 0; + goto drain_loop; + } + } + if (qm_mc_init(__p)) { + pr_err("Qman MC initialisation failed\n"); + goto fail_mc; + } + if (qm_isr_init(__p)) { + pr_err("Qman ISR initialisation failed\n"); + goto fail_isr; + } + /* static interrupt-gating controls */ + qm_dqrr_set_ithresh(__p, CONFIG_FSL_QMAN_PIRQ_DQRR_ITHRESH); + qm_mr_set_ithresh(__p, CONFIG_FSL_QMAN_PIRQ_MR_ITHRESH); + qm_isr_set_iperiod(__p, CONFIG_FSL_QMAN_PIRQ_IPERIOD); + portal->cgrs = kmalloc(2 * sizeof(*cgrs), GFP_KERNEL); + if (!portal->cgrs) + goto fail_cgrs; + /* initial snapshot is no-depletion */ + qman_cgrs_init(&portal->cgrs[1]); + if (cgrs) + portal->cgrs[0] = *cgrs; + else + /* if the given mask is NULL, assume all CGRs can be seen */ + qman_cgrs_fill(&portal->cgrs[0]); + for (ret = 0; ret < __CGR_NUM; ret++) + INIT_LIST_HEAD(&portal->cgr_cbs[ret]); + spin_lock_init(&portal->cgr_lock); + portal->bits = recovery_mode ? PORTAL_BITS_RECOVERY : 0; + portal->slowpoll = 0; +#ifdef CONFIG_FSL_DPA_CAN_WAIT_SYNC + portal->eqci_owned = NULL; +#endif +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE + spin_lock_init(&portal->sharing_lock); + portal->is_shared = config->public_cfg.is_shared; + portal->sharing_redirect = NULL; +#endif + portal->sdqcr = QM_SDQCR_SOURCE_CHANNELS | QM_SDQCR_COUNT_UPTO3 | + QM_SDQCR_DEDICATED_PRECEDENCE | QM_SDQCR_TYPE_PRIO_QOS | + QM_SDQCR_TOKEN_SET(0xab) | QM_SDQCR_CHANNELS_DEDICATED; + portal->dqrr_disable_ref = 0; +#ifdef CONFIG_FSL_QMAN_NULL_FQ_DEMUX + if (null_cb) + portal->null_cb = *null_cb; + else + memset(&portal->null_cb, 0, sizeof(*null_cb)); +#endif + sprintf(buf, "qportal-%d", config->public_cfg.channel); + portal->pdev = platform_device_alloc(buf, -1); + if (!portal->pdev) + goto fail_devalloc; + if (dma_set_mask(&portal->pdev->dev, DMA_BIT_MASK(40))) + goto fail_devadd; + ret = platform_device_add(portal->pdev); + if (ret) + goto fail_devadd; + dpa_rbtree_init(&portal->retire_table); + isdr = 0xffffffff; + qm_isr_disable_write(__p, isdr); + portal->irq_sources = 0; + qm_isr_enable_write(__p, portal->irq_sources); + qm_isr_status_clear(__p, 0xffffffff); +#ifdef CONFIG_FSL_DPA_HAVE_IRQ + snprintf(portal->irqname, MAX_IRQNAME, IRQNAME, config->public_cfg.cpu); + if (request_irq(config->public_cfg.irq, portal_isr, + IRQF_NOBALANCING | IRQF_DISABLED, portal->irqname, + portal)) { + pr_err("request_irq() failed\n"); + goto fail_irq; + } + if (config->public_cfg.cpu != -1) { + disable_irq(config->public_cfg.irq); + irq_set_affinity(config->public_cfg.irq, + cpumask_of(config->public_cfg.cpu)); + } + enable_irq(config->public_cfg.irq); + + if (recovery_mode) { + qm_isr_inhibit(__p); + } else { + post_recovery(portal, config); + qm_isr_uninhibit(__p); + } +#endif + /* Need EQCR to be empty before continuing */ + isdr ^= QM_PIRQ_EQCI; + qm_isr_disable_write(__p, isdr); + ret = qm_eqcr_get_fill(__p); + if (ret) { + pr_err("Qman EQCR unclean, need recovery\n"); + goto fail_eqcr_empty; + } + isdr ^= (QM_PIRQ_DQRI | QM_PIRQ_MRI); + qm_isr_disable_write(__p, isdr); + if (qm_dqrr_current(__p) != NULL) { + pr_err("Qman DQRR unclean, need recovery\n"); + goto fail_dqrr_mr_empty; + } + if (qm_mr_current(__p) != NULL) { + /* special handling, drain just in case it's a few FQRNIs */ + if (drain_mr_fqrni(__p)) { + pr_err("Qman MR unclean, need recovery\n"); + goto fail_dqrr_mr_empty; + } + } + /* Success */ + portal->config = config; + spin_lock(&affine_mask_lock); + cpumask_set_cpu(config->public_cfg.cpu, &affine_mask); + spin_unlock(&affine_mask_lock); + qm_isr_disable_write(__p, 0); + /* Write a sane SDQCR */ + qm_dqrr_sdqcr_set(__p, recovery_mode ? 0 : portal->sdqcr); + return portal; +fail_dqrr_mr_empty: +fail_eqcr_empty: +#ifdef CONFIG_FSL_DPA_HAVE_IRQ + free_irq(config->public_cfg.irq, portal); +fail_irq: +#endif + platform_device_del(portal->pdev); +fail_devadd: + platform_device_put(portal->pdev); +fail_devalloc: + if (portal->cgrs) + kfree(portal->cgrs); +fail_cgrs: + qm_isr_finish(__p); +fail_isr: + qm_mc_finish(__p); +fail_mc: + qm_mr_finish(__p); +fail_mr: + qm_dqrr_finish(__p); +fail_dqrr: + qm_eqcr_finish(__p); +fail_eqcr: + put_affine_portal(); + return NULL; +} + +/* These checks are BUG_ON()s because the driver is already supposed to avoid + * these cases. */ +struct qman_portal *qman_create_affine_slave(struct qman_portal *redirect) +{ +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE + struct qman_portal *p = get_raw_affine_portal(); + /* Check that we don't already have our own portal */ + BUG_ON(p->config); + /* Check that we aren't already slaving to another portal */ + BUG_ON(p->is_shared); + /* Check that 'redirect' is prepared to have us */ + BUG_ON(!redirect->config->public_cfg.is_shared); + /* These are the only elements to initialise when redirecting */ + p->irq_sources = 0; + p->sharing_redirect = redirect; + put_affine_portal(); + return p; +#else + BUG(); + return NULL; +#endif +} + +const struct qm_portal_config *qman_destroy_affine_portal(void) +{ + /* We don't want to redirect if we're a slave, use "raw" */ + struct qman_portal *qm = get_raw_affine_portal(); + const struct qm_portal_config *pcfg; + int cpu; +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE + if (qm->sharing_redirect) { + qm->sharing_redirect = NULL; + put_affine_portal(); + return NULL; + } + qm->is_shared = 0; +#endif + pcfg = qm->config; + cpu = pcfg->public_cfg.cpu; + /* NB we do this to "quiesce" EQCR. If we add enqueue-completions or + * something related to QM_PIRQ_EQCI, this may need fixing. + * Also, due to the prefetching model used for CI updates in the enqueue + * path, this update will only invalidate the CI cacheline *after* + * working on it, so we need to call this twice to ensure a full update + * irrespective of where the enqueue processing was at when the teardown + * began. */ + qm_eqcr_cce_update(&qm->p); + qm_eqcr_cce_update(&qm->p); +#ifdef CONFIG_FSL_DPA_HAVE_IRQ + free_irq(pcfg->public_cfg.irq, qm); +#endif + kfree(qm->cgrs); + qm_isr_finish(&qm->p); + qm_mc_finish(&qm->p); + qm_mr_finish(&qm->p); + qm_dqrr_finish(&qm->p); + qm_eqcr_finish(&qm->p); + qm->config = NULL; + spin_lock(&affine_mask_lock); + cpumask_clear_cpu(cpu, &affine_mask); + spin_unlock(&affine_mask_lock); + put_affine_portal(); + return pcfg; +} + +const struct qman_portal_config *qman_get_portal_config(void) +{ + struct qman_portal *p = get_affine_portal(); + const struct qman_portal_config *ret = &p->config->public_cfg; + put_affine_portal(); + return ret; +} +EXPORT_SYMBOL(qman_get_portal_config); + +#ifdef CONFIG_FSL_QMAN_NULL_FQ_DEMUX +void qman_get_null_cb(struct qman_fq_cb *null_cb) +{ + struct qman_portal *p = get_affine_portal(); + *null_cb = p->null_cb; + put_affine_portal(); +} +EXPORT_SYMBOL(qman_get_null_cb); + +void qman_set_null_cb(const struct qman_fq_cb *null_cb) +{ + struct qman_portal *p = get_affine_portal(); + p->null_cb = *null_cb; + put_affine_portal(); +} +EXPORT_SYMBOL(qman_set_null_cb); +#endif + +/* Inline helper to reduce nesting in __poll_portal_slow() */ +static inline void fq_state_change(struct qman_portal *p, struct qman_fq *fq, + const struct qm_mr_entry *msg, u8 verb) +{ + FQLOCK(fq); + switch(verb) { + case QM_MR_VERB_FQRL: + DPA_ASSERT(fq_isset(fq, QMAN_FQ_STATE_ORL)); + fq_clear(fq, QMAN_FQ_STATE_ORL); + table_del_fq(p, fq); + break; + case QM_MR_VERB_FQRN: + DPA_ASSERT((fq->state == qman_fq_state_parked) || + (fq->state == qman_fq_state_sched)); + DPA_ASSERT(fq_isset(fq, QMAN_FQ_STATE_CHANGING)); + fq_clear(fq, QMAN_FQ_STATE_CHANGING); + if (msg->fq.fqs & QM_MR_FQS_NOTEMPTY) + fq_set(fq, QMAN_FQ_STATE_NE); + if (msg->fq.fqs & QM_MR_FQS_ORLPRESENT) + fq_set(fq, QMAN_FQ_STATE_ORL); + else + table_del_fq(p, fq); + fq->state = qman_fq_state_retired; + break; + case QM_MR_VERB_FQPN: + DPA_ASSERT(fq->state == qman_fq_state_sched); + DPA_ASSERT(fq_isclear(fq, QMAN_FQ_STATE_CHANGING)); + fq->state = qman_fq_state_parked; + } + FQUNLOCK(fq); +} + +static u32 __poll_portal_slow(struct qman_portal *p, u32 is) +{ + const struct qm_mr_entry *msg; + + BUG_ON(p->bits & PORTAL_BITS_RECOVERY); + + if (is & QM_PIRQ_CSCI) { + struct qman_cgrs rr, c; + struct qm_mc_result *mcr; + struct qman_cgr *cgr; + int i; + unsigned long irqflags __maybe_unused; + + spin_lock_irqsave(&p->cgr_lock, irqflags); + qm_mc_start(&p->p); + qm_mc_commit(&p->p, QM_MCC_VERB_QUERYCONGESTION); + while (!(mcr = qm_mc_result(&p->p))) + cpu_relax(); + /* mask out the ones I'm not interested in */ + qman_cgrs_and(&rr, (const struct qman_cgrs *) + &mcr->querycongestion.state, &p->cgrs[0]); + /* check previous snapshot for delta, enter/exit congestion */ + qman_cgrs_xor(&c, &rr, &p->cgrs[1]); + /* update snapshot */ + qman_cgrs_cp(&p->cgrs[1], &rr); + /* Invoke callback */ + qman_cgrs_for_each_1(i, &c) + list_for_each_entry(cgr, &p->cgr_cbs[i], node) { + if (cgr->cb) + cgr->cb(p, cgr, qman_cgrs_get(&rr, i)); + } + spin_unlock_irqrestore(&p->cgr_lock, irqflags); + } + +#ifdef CONFIG_FSL_DPA_CAN_WAIT_SYNC + if (is & QM_PIRQ_EQCI) { + unsigned long irqflags; + PORTAL_IRQ_LOCK(p, irqflags); + p->eqci_owned = NULL; + PORTAL_IRQ_UNLOCK(p, irqflags); + wake_up(&affine_queue); + } +#endif + + if (is & QM_PIRQ_EQRI) { + unsigned long irqflags __maybe_unused; + PORTAL_IRQ_LOCK(p, irqflags); + qm_eqcr_cce_update(&p->p); + qm_eqcr_set_ithresh(&p->p, 0); + PORTAL_IRQ_UNLOCK(p, irqflags); + wake_up(&affine_queue); + } + + if (is & QM_PIRQ_MRI) { + u8 num = 0; +mr_loop: + qm_mr_pvb_update(&p->p); + msg = qm_mr_current(&p->p); + if (msg) { + u8 verb = msg->verb & QM_MR_VERB_TYPE_MASK; +#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP + struct qman_fq *fq; +#else + struct qman_fq *fq = (void *)(uintptr_t)msg->ern.tag; +#endif + if (verb == QM_MR_VERB_FQRNI) { + ; /* nada, we drop FQRNIs on the floor */ + } else if ((verb == QM_MR_VERB_FQRN) || + (verb == QM_MR_VERB_FQRL)) { + /* It's retirement related - need a lookup */ + fq = table_find_fq(p, msg->fq.fqid); + if (!fq) + panic("unexpected FQ retirement"); + fq_state_change(p, fq, msg, verb); + if (fq->cb.fqs) + fq->cb.fqs(p, fq, msg); +#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP + } else if (likely(msg->ern.tag)) { + fq = get_fq_table_entry(msg->ern.tag); +#else + } else if (likely(fq)) { +#endif + /* As per the header note, this is the way to + * determine if it's a s/w ERN or not. */ + if (likely(!(verb & QM_MR_VERB_DC_ERN))) + fq->cb.ern(p, fq, msg); + else + fq->cb.dc_ern(p, fq, msg); + } +#ifdef CONFIG_FSL_QMAN_NULL_FQ_DEMUX + else { + /* use portal default handlers for 'null's */ + if (likely(!(verb & QM_MR_VERB_DC_ERN))) + p->null_cb.ern(p, NULL, msg); + else if (verb == QM_MR_VERB_DC_ERN) + p->null_cb.dc_ern(p, NULL, msg); + else if (p->null_cb.fqs) + p->null_cb.fqs(p, NULL, msg); + } +#endif + num++; + qm_mr_next(&p->p); + goto mr_loop; + } + qm_mr_cci_consume(&p->p, num); + } + + return is & (QM_PIRQ_CSCI | QM_PIRQ_EQCI | QM_PIRQ_EQRI | QM_PIRQ_MRI); +} + +/* remove some slowish-path stuff from the "fast path" and make sure it isn't + * inlined. */ +static noinline void clear_vdqcr(struct qman_portal *p, struct qman_fq *fq) +{ + p->vdqcr_owned = NULL; + FQLOCK(fq); + fq_clear(fq, QMAN_FQ_STATE_VDQCR); + FQUNLOCK(fq); + wake_up(&affine_queue); +} + +/* Look: no locks, no irq_save()s, no preempt_disable()s! :-) The only states + * that would conflict with other things if they ran at the same time on the + * same cpu are; + * + * (i) setting/clearing vdqcr_owned, and + * (ii) clearing the NE (Not Empty) flag. + * + * Both are safe. Because; + * + * (i) this clearing can only occur after qman_volatile_dequeue() has set the + * vdqcr_owned field (which it does before setting VDQCR), and + * qman_volatile_dequeue() blocks interrupts and preemption while this is + * done so that we can't interfere. + * (ii) the NE flag is only cleared after qman_retire_fq() has set it, and as + * with (i) that API prevents us from interfering until it's safe. + * + * The good thing is that qman_volatile_dequeue() and qman_retire_fq() run far + * less frequently (ie. per-FQ) than __poll_portal_fast() does, so the nett + * advantage comes from this function not having to "lock" anything at all. + * + * Note also that the callbacks are invoked at points which are safe against the + * above potential conflicts, but that this function itself is not re-entrant + * (this is because the function tracks one end of each FIFO in the portal and + * we do *not* want to lock that). So the consequence is that it is safe for + * user callbacks to call into any Qman API *except* qman_poll() (as that's the + * sole API that could be invoking the callback through this function). + */ +static inline unsigned int __poll_portal_fast(struct qman_portal *p, + unsigned int poll_limit) +{ + const struct qm_dqrr_entry *dq; + struct qman_fq *fq; + enum qman_cb_dqrr_result res; +#ifdef CONFIG_FSL_QMAN_DQRR_PREFETCHING + int coherent = (p->config->public_cfg.has_stashing); +#endif + unsigned int limit = 0; + + BUG_ON(p->bits & PORTAL_BITS_RECOVERY); +loop: +#ifdef CONFIG_FSL_QMAN_DQRR_PREFETCHING + qm_dqrr_pvb_update(&p->p, coherent); +#else + qm_dqrr_pvb_update(&p->p, 1); +#endif + dq = qm_dqrr_current(&p->p); + if (!dq) + goto done; + if (dq->stat & QM_DQRR_STAT_UNSCHEDULED) { + /* VDQCR: don't trust contextB as the FQ may have been + * configured for h/w consumption and we're draining it + * post-retirement. */ + fq = p->vdqcr_owned; + /* We only set QMAN_FQ_STATE_NE when retiring, so we only need + * to check for clearing it when doing volatile dequeues. It's + * one less thing to check in the critical path (SDQCR). */ + if (dq->stat & QM_DQRR_STAT_FQ_EMPTY) + fq_clear(fq, QMAN_FQ_STATE_NE); + /* this is duplicated from the SDQCR code, but we have stuff to + * do before *and* after this callback, and we don't want + * multiple if()s in the critical path (SDQCR). */ + res = fq->cb.dqrr(p, fq, dq); + if (res == qman_cb_dqrr_stop) + goto done; + /* Check for VDQCR completion */ + if (dq->stat & QM_DQRR_STAT_DQCR_EXPIRED) + clear_vdqcr(p, fq); + } else { + /* SDQCR: contextB points to the FQ */ +#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP + fq = get_fq_table_entry(dq->contextB); +#else + fq = (void *)(uintptr_t)dq->contextB; +#endif +#ifdef CONFIG_FSL_QMAN_NULL_FQ_DEMUX + if (unlikely(!fq)) { + /* use portal default handlers */ + res = p->null_cb.dqrr(p, NULL, dq); + DPA_ASSERT(res == qman_cb_dqrr_consume); + res = qman_cb_dqrr_consume; + } else +#endif + { + /* Now let the callback do its stuff */ + res = fq->cb.dqrr(p, fq, dq); + /* The callback can request that we exit without + * consuming this entry nor advancing; */ + if (res == qman_cb_dqrr_stop) + goto done; + } + } + /* Interpret 'dq' from a driver perspective. */ + /* Parking isn't possible unless HELDACTIVE was set. NB, + * FORCEELIGIBLE implies HELDACTIVE, so we only need to + * check for HELDACTIVE to cover both. */ + DPA_ASSERT((dq->stat & QM_DQRR_STAT_FQ_HELDACTIVE) || + (res != qman_cb_dqrr_park)); +#ifdef CONFIG_FSL_QMAN_PORTAL_DISABLEAUTO_DCA + if (res == qman_cb_dqrr_park) + /* The only thing to do for non-DCA is the park-request */ + qm_dqrr_park_current(&p->p); + /* Move forward */ + qm_dqrr_next(&p->p); + qm_dqrr_cci_consume(&p->p, 1); +#else + /* Defer just means "skip it, I'll consume it myself later on" */ + if (res != qman_cb_dqrr_defer) + qm_dqrr_cdc_consume_1ptr(&p->p, dq, (res == qman_cb_dqrr_park)); + /* Move forward */ + qm_dqrr_next(&p->p); +#endif + /* Entry processed and consumed, increment our counter. The callback can + * request that we exit after consuming the entry, and we also exit if + * we reach our processing limit, so loop back only if neither of these + * conditions is met. */ + if ((++limit < poll_limit) && (res != qman_cb_dqrr_consume_stop)) + goto loop; +done: + return limit; +} + +u32 qman_irqsource_get(void) +{ + /* "irqsource" and "poll" APIs mustn't redirect when sharing, they + * should shut the user out if they are not the primary CPU hosting the + * portal. That's why we use the "raw" interface. */ + struct qman_portal *p = get_raw_affine_portal(); + u32 ret = p->irq_sources & QM_PIRQ_VISIBLE; + put_affine_portal(); + return ret; +} +EXPORT_SYMBOL(qman_irqsource_get); + +int qman_irqsource_add(u32 bits __maybe_unused) +{ +#ifdef CONFIG_FSL_DPA_HAVE_IRQ + struct qman_portal *p = get_raw_affine_portal(); + int ret = 0; +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE + if (p->sharing_redirect) + ret = -EINVAL; + else +#endif + { + __maybe_unused unsigned long irqflags; + PORTAL_IRQ_LOCK(p, irqflags); + set_bits(bits & QM_PIRQ_VISIBLE, &p->irq_sources); + qm_isr_enable_write(&p->p, p->irq_sources); + PORTAL_IRQ_UNLOCK(p, irqflags); + } + put_affine_portal(); + return ret; +#else + pr_err("No Qman portal IRQ support, mustn't specify IRQ flags!"); + return -EINVAL; +#endif +} +EXPORT_SYMBOL(qman_irqsource_add); + +int qman_irqsource_remove(u32 bits) +{ +#ifdef CONFIG_FSL_DPA_HAVE_IRQ + struct qman_portal *p = get_raw_affine_portal(); + __maybe_unused unsigned long irqflags; + u32 ier; +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE + if (p->sharing_redirect) { + put_affine_portal(); + return -EINVAL; + } +#endif + /* Our interrupt handler only processes+clears status register bits that + * are in p->irq_sources. As we're trimming that mask, if one of them + * were to assert in the status register just before we remove it from + * the enable register, there would be an interrupt-storm when we + * release the IRQ lock. So we wait for the enable register update to + * take effect in h/w (by reading it back) and then clear all other bits + * in the status register. Ie. we clear them from ISR once it's certain + * IER won't allow them to reassert. */ + PORTAL_IRQ_LOCK(p, irqflags); + bits &= QM_PIRQ_VISIBLE; + clear_bits(bits, &p->irq_sources); + qm_isr_enable_write(&p->p, p->irq_sources); + ier = qm_isr_enable_read(&p->p); + /* Using "~ier" (rather than "bits" or "~p->irq_sources") creates a + * data-dependency, ie. to protect against re-ordering. */ + qm_isr_status_clear(&p->p, ~ier); + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + return 0; +#else + pr_err("No Qman portal IRQ support, mustn't specify IRQ flags!"); + return -EINVAL; +#endif +} +EXPORT_SYMBOL(qman_irqsource_remove); + +const cpumask_t *qman_affine_cpus(void) +{ + return &affine_mask; +} +EXPORT_SYMBOL(qman_affine_cpus); + +int qman_poll_dqrr(unsigned int limit) +{ + /* We need to fail when called for a "slave", so use "raw" */ + struct qman_portal *p = get_raw_affine_portal(); + int ret; +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE + if (unlikely(p->sharing_redirect)) + ret = -EINVAL; + else +#endif + { + BUG_ON(p->irq_sources & QM_PIRQ_DQRI); + ret = __poll_portal_fast(p, limit); + } + put_affine_portal(); + return ret; +} +EXPORT_SYMBOL(qman_poll_dqrr); + +u32 qman_poll_slow(void) +{ + /* We need to fail when called for a "slave", so use "raw" */ + struct qman_portal *p = get_raw_affine_portal(); + u32 ret; +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE + if (unlikely(p->sharing_redirect)) + ret = (u32)-1; + else +#endif + { + u32 is = qm_isr_status_read(&p->p) & ~p->irq_sources; + ret = __poll_portal_slow(p, is); + qm_isr_status_clear(&p->p, ret); + } + put_affine_portal(); + return ret; +} +EXPORT_SYMBOL(qman_poll_slow); + +/* Legacy wrapper */ +void qman_poll(void) +{ + struct qman_portal *p = get_raw_affine_portal(); +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE + if (unlikely(p->sharing_redirect)) + goto done; +#endif + if ((~p->irq_sources) & QM_PIRQ_SLOW) { + if (!(p->slowpoll--)) { + u32 is = qm_isr_status_read(&p->p) & ~p->irq_sources; + u32 active = __poll_portal_slow(p, is); + if (active) { + qm_isr_status_clear(&p->p, active); + p->slowpoll = SLOW_POLL_BUSY; + } else + p->slowpoll = SLOW_POLL_IDLE; + } + } + if ((~p->irq_sources) & QM_PIRQ_DQRI) + __poll_portal_fast(p, CONFIG_FSL_QMAN_POLL_LIMIT); +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE +done: +#endif + put_affine_portal(); +} +EXPORT_SYMBOL(qman_poll); + +/* Recovery processing. */ +static int recovery_poll_mr(struct qman_portal *p, u32 fqid) +{ + const struct qm_mr_entry *msg; + enum { + wait_for_fqrn, + wait_for_fqrl, + done + } state = wait_for_fqrn; + u8 v, fqs = 0; + +loop: + qm_mr_pvb_update(&p->p); + msg = qm_mr_current(&p->p); + if (!msg) { + cpu_relax(); + goto loop; + } + v = msg->verb & QM_MR_VERB_TYPE_MASK; + /* all MR messages have "fqid" in the same place */ + if (msg->fq.fqid != fqid) { +ignore_msg: + pr_warning("recovery_poll_mr(), ignoring msg 0x%02x for " + "FQID %d\n", v, msg->fq.fqid); + goto next_msg; + } + if (state == wait_for_fqrn) { + if ((v != QM_MR_VERB_FQRN) && (v != QM_MR_VERB_FQRNI)) + goto ignore_msg; + fqs = msg->fq.fqs; + if (!(fqs & QM_MR_FQS_ORLPRESENT)) + state = done; + else + state = wait_for_fqrl; + } else { + if (v != QM_MR_VERB_FQRL) + goto ignore_msg; + state = done; + } +next_msg: + qm_mr_next(&p->p); + qm_mr_cci_consume(&p->p, 1); + if (state != done) + goto loop; + return (fqs & QM_MR_FQS_NOTEMPTY) ? 1 : 0; +} +static unsigned int recovery_poll_dqrr(struct qman_portal *p, u32 fqid) +{ + const struct qm_dqrr_entry *dq; + u8 empty = 0, num_fds = 0; + +loop: + qm_dqrr_pvb_update(&p->p, 0); + dq = qm_dqrr_current(&p->p); + if (!dq) { + cpu_relax(); + goto loop; + } + if (!(dq->stat & QM_DQRR_STAT_UNSCHEDULED)) { +ignore_dqrr: + pr_warning("recovery_poll_dqrr(), ignoring dqrr %02x:%02x " + "for FQID %d\n", + dq->verb & QM_DQRR_VERB_MASK, dq->stat, dq->fqid); + goto next_dqrr; + } + if (dq->fqid != fqid) + goto ignore_dqrr; + if (dq->stat & QM_DQRR_STAT_FD_VALID) + num_fds++; + if (dq->stat & QM_DQRR_STAT_FQ_EMPTY) + empty = 1; +next_dqrr: + qm_dqrr_next(&p->p); + qm_dqrr_cci_consume(&p->p, 1); + if (!empty) + goto loop; + return num_fds; +} +int qman_recovery_cleanup_fq(u32 fqid) +{ + struct qm_mc_command *mcc; + struct qm_mc_result *mcr; + struct qman_portal *p = get_affine_portal(); + unsigned long irqflags __maybe_unused; + int ret = 0; + unsigned int num_fds = 0; + const char *s; + u8 state; + + /* Lock this whole flow down via the portal's "vdqcr" */ + PORTAL_IRQ_LOCK(p, irqflags); + BUG_ON(!(p->bits & PORTAL_BITS_RECOVERY)); + if (p->vdqcr_owned) + ret = -EBUSY; + else + p->vdqcr_owned = (void *)1; + PORTAL_IRQ_UNLOCK(p, irqflags); + if (ret) + goto out; + + /* Query the FQ's state */ + mcc = qm_mc_start(&p->p); + mcc->queryfq.fqid = fqid; + qm_mc_commit(&p->p, QM_MCC_VERB_QUERYFQ_NP); + while (!(mcr = qm_mc_result(&p->p))) + cpu_relax(); + DPA_ASSERT((mcr->verb & QM_MCR_VERB_MASK) == QM_MCR_VERB_QUERYFQ_NP); + if (mcr->result != QM_MCR_RESULT_OK) { + ret = -EIO; + goto out; + } + state = mcr->queryfq_np.state & QM_MCR_NP_STATE_MASK; + + /* OOS: nothing to do */ + if (state == QM_MCR_NP_STATE_OOS) + goto out; + /* Otherwise: must be retired */ + if (state != QM_MCR_NP_STATE_RETIRED) { + mcc = qm_mc_start(&p->p); + mcc->alterfq.fqid = fqid; + qm_mc_commit(&p->p, QM_MCC_VERB_ALTER_RETIRE); + while (!(mcr = qm_mc_result(&p->p))) + cpu_relax(); + DPA_ASSERT((mcr->verb & QM_MCR_VERB_MASK) == + QM_MCR_VERB_ALTER_RETIRE); + if ((mcr->result != QM_MCR_RESULT_OK) && + (mcr->result != QM_MCR_RESULT_PENDING)) { + ret = -EIO; + goto out; + } + ret = recovery_poll_mr(p, fqid); + if (!ret) + /* FQ empty */ + goto oos; + } + /* Drain till empty */ + qm_dqrr_vdqcr_set(&p->p, fqid & 0x00ffffff); + num_fds = recovery_poll_dqrr(p, fqid); + +oos: + mcc = qm_mc_start(&p->p); + mcc->alterfq.fqid = fqid; + qm_mc_commit(&p->p, QM_MCC_VERB_ALTER_OOS); + while (!(mcr = qm_mc_result(&p->p))) + cpu_relax(); + DPA_ASSERT((mcr->verb & QM_MCR_VERB_MASK) == QM_MCR_VERB_ALTER_OOS); + if (mcr->result != QM_MCR_RESULT_OK) + ret = -EIO; + /* done */ + s = (state == QM_MCR_NP_STATE_RETIRED) ? "retired" : + (state == QM_MCR_NP_STATE_PARKED) ? "parked" : "scheduled"; + pr_info("Qman: %s FQID %d recovered (%d frames)\n", s, fqid, num_fds); +out: + PORTAL_IRQ_LOCK(p, irqflags); + p->vdqcr_owned = NULL; + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + return ret; +} +EXPORT_SYMBOL(qman_recovery_cleanup_fq); + +/* called from qman_driver.c::qman_recovery_exit() only (if exporting, use + * get_raw_affine_portal() and check for the "SLAVE" bit). */ +void qman_recovery_exit_local(void) +{ + struct qman_portal *p = get_affine_portal(); + BUG_ON(!(p->bits & PORTAL_BITS_RECOVERY)); + /* Reinitialise DQRR using expected settings */ + qm_dqrr_finish(&p->p); + post_recovery(p, p->config); + clear_bits(PORTAL_BITS_RECOVERY, &p->bits); + if (qm_dqrr_init(&p->p, p->config, qm_dqrr_dpush, qm_dqrr_pvb, + QM_DQRR_CMODE, DQRR_MAXFILL, 0)) + panic("Qman DQRR initialisation failed, recovery broken"); + qm_dqrr_sdqcr_set(&p->p, p->sdqcr); + qm_isr_status_clear(&p->p, 0xffffffff); + qm_isr_uninhibit(&p->p); + put_affine_portal(); +} + +void qman_stop_dequeues(void) +{ + struct qman_portal *p = get_affine_portal(); + qman_stop_dequeues_ex(p); + put_affine_portal(); +} +EXPORT_SYMBOL(qman_stop_dequeues); + +void qman_start_dequeues(void) +{ + struct qman_portal *p = get_affine_portal(); + unsigned long irqflags __maybe_unused; + PORTAL_IRQ_LOCK(p, irqflags); + DPA_ASSERT(p->dqrr_disable_ref > 0); + if (!(--p->dqrr_disable_ref)) + qm_dqrr_set_maxfill(&p->p, DQRR_MAXFILL); + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); +} +EXPORT_SYMBOL(qman_start_dequeues); + +void qman_static_dequeue_add(u32 pools) +{ + unsigned long irqflags __maybe_unused; + struct qman_portal *p = get_affine_portal(); + PORTAL_IRQ_LOCK(p, irqflags); + pools &= p->config->public_cfg.pools; + p->sdqcr |= pools; + qm_dqrr_sdqcr_set(&p->p, p->sdqcr); + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); +} +EXPORT_SYMBOL(qman_static_dequeue_add); + +void qman_static_dequeue_del(u32 pools) +{ + struct qman_portal *p = get_affine_portal(); + unsigned long irqflags __maybe_unused; + PORTAL_IRQ_LOCK(p, irqflags); + pools &= p->config->public_cfg.pools; + p->sdqcr &= ~pools; + qm_dqrr_sdqcr_set(&p->p, p->sdqcr); + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); +} +EXPORT_SYMBOL(qman_static_dequeue_del); + +u32 qman_static_dequeue_get(void) +{ + struct qman_portal *p = get_affine_portal(); + u32 ret = p->sdqcr; + put_affine_portal(); + return ret; +} +EXPORT_SYMBOL(qman_static_dequeue_get); + +void qman_dca(struct qm_dqrr_entry *dq, int park_request) +{ + struct qman_portal *p = get_affine_portal(); + qm_dqrr_cdc_consume_1ptr(&p->p, dq, park_request); + put_affine_portal(); +} +EXPORT_SYMBOL(qman_dca); + +/*******************/ +/* Frame queue API */ +/*******************/ + +static const char *mcr_result_str(u8 result) +{ + switch (result) { + case QM_MCR_RESULT_NULL: + return "QM_MCR_RESULT_NULL"; + case QM_MCR_RESULT_OK: + return "QM_MCR_RESULT_OK"; + case QM_MCR_RESULT_ERR_FQID: + return "QM_MCR_RESULT_ERR_FQID"; + case QM_MCR_RESULT_ERR_FQSTATE: + return "QM_MCR_RESULT_ERR_FQSTATE"; + case QM_MCR_RESULT_ERR_NOTEMPTY: + return "QM_MCR_RESULT_ERR_NOTEMPTY"; + case QM_MCR_RESULT_PENDING: + return "QM_MCR_RESULT_PENDING"; + case QM_MCR_RESULT_ERR_BADCOMMAND: + return "QM_MCR_RESULT_ERR_BADCOMMAND"; + } + return ""; +} + +int qman_create_fq(u32 fqid, u32 flags, struct qman_fq *fq) +{ + struct qm_fqd fqd; + struct qm_mcr_queryfq_np np; + struct qm_mc_command *mcc; + struct qm_mc_result *mcr; + struct qman_portal *p; + unsigned long irqflags __maybe_unused; + + if (flags & QMAN_FQ_FLAG_DYNAMIC_FQID) { + fqid = qm_fq_new(); + if (!fqid) + return -ENOMEM; + } + spin_lock_init(&fq->fqlock); + fq->fqid = fqid; + fq->flags = flags; + fq->state = qman_fq_state_oos; + fq->cgr_groupid = 0; +#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP + if (unlikely(find_empty_fq_table_entry(&fq->key, fq))) + return -ENOMEM; +#endif + if (!(flags & QMAN_FQ_FLAG_AS_IS) || (flags & QMAN_FQ_FLAG_NO_MODIFY)) + return 0; + /* Everything else is AS_IS support */ + p = get_affine_portal(); + PORTAL_IRQ_LOCK(p, irqflags); + mcc = qm_mc_start(&p->p); + mcc->queryfq.fqid = fqid; + qm_mc_commit(&p->p, QM_MCC_VERB_QUERYFQ); + while (!(mcr = qm_mc_result(&p->p))) + cpu_relax(); + DPA_ASSERT((mcr->verb & QM_MCR_VERB_MASK) == QM_MCC_VERB_QUERYFQ); + if (mcr->result != QM_MCR_RESULT_OK) { + pr_err("QUERYFQ failed: %s\n", mcr_result_str(mcr->result)); + goto err; + } + fqd = mcr->queryfq.fqd; + mcc = qm_mc_start(&p->p); + mcc->queryfq_np.fqid = fqid; + qm_mc_commit(&p->p, QM_MCC_VERB_QUERYFQ_NP); + while (!(mcr = qm_mc_result(&p->p))) + cpu_relax(); + DPA_ASSERT((mcr->verb & QM_MCR_VERB_MASK) == QM_MCC_VERB_QUERYFQ_NP); + if (mcr->result != QM_MCR_RESULT_OK) { + pr_err("QUERYFQ_NP failed: %s\n", mcr_result_str(mcr->result)); + goto err; + } + np = mcr->queryfq_np; + /* Phew, have queryfq and queryfq_np results, stitch together + * the FQ object from those. */ + fq->cgr_groupid = fqd.cgid; + switch (np.state & QM_MCR_NP_STATE_MASK) { + case QM_MCR_NP_STATE_OOS: + break; + case QM_MCR_NP_STATE_RETIRED: + fq->state = qman_fq_state_retired; + if (np.frm_cnt) + fq_set(fq, QMAN_FQ_STATE_NE); + break; + case QM_MCR_NP_STATE_TEN_SCHED: + case QM_MCR_NP_STATE_TRU_SCHED: + case QM_MCR_NP_STATE_ACTIVE: + fq->state = qman_fq_state_sched; + if (np.state & QM_MCR_NP_STATE_R) + fq_set(fq, QMAN_FQ_STATE_CHANGING); + break; + case QM_MCR_NP_STATE_PARKED: + fq->state = qman_fq_state_parked; + break; + default: + DPA_ASSERT(NULL == "invalid FQ state"); + } + if (fqd.fq_ctrl & QM_FQCTRL_CGE) + fq->state |= QMAN_FQ_STATE_CGR_EN; + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + return 0; +err: + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + if (flags & QMAN_FQ_FLAG_DYNAMIC_FQID) + qm_fq_free(fqid); + return -EIO; +} +EXPORT_SYMBOL(qman_create_fq); + +void qman_destroy_fq(struct qman_fq *fq, u32 flags __maybe_unused) +{ + /* We don't need to lock the FQ as it is a pre-condition that the FQ be + * quiesced. Instead, run some checks. */ + switch (fq->state) { + case qman_fq_state_parked: + DPA_ASSERT(flags & QMAN_FQ_DESTROY_PARKED); + case qman_fq_state_oos: + if (fq_isset(fq, QMAN_FQ_FLAG_DYNAMIC_FQID)) + qm_fq_free(fq->fqid); +#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP + clear_fq_table_entry(fq->key); +#endif + return; + default: + break; + } + DPA_ASSERT(NULL == "qman_free_fq() on unquiesced FQ!"); +} +EXPORT_SYMBOL(qman_destroy_fq); + +u32 qman_fq_fqid(struct qman_fq *fq) +{ + return fq->fqid; +} +EXPORT_SYMBOL(qman_fq_fqid); + +void qman_fq_state(struct qman_fq *fq, enum qman_fq_state *state, u32 *flags) +{ + if (state) + *state = fq->state; + if (flags) + *flags = fq->flags; +} +EXPORT_SYMBOL(qman_fq_state); + +int qman_init_fq(struct qman_fq *fq, u32 flags, struct qm_mcc_initfq *opts) +{ + struct qm_mc_command *mcc; + struct qm_mc_result *mcr; + struct qman_portal *p; + unsigned long irqflags __maybe_unused; + u8 res, myverb = (flags & QMAN_INITFQ_FLAG_SCHED) ? + QM_MCC_VERB_INITFQ_SCHED : QM_MCC_VERB_INITFQ_PARKED; + + DPA_ASSERT((fq->state == qman_fq_state_oos) || + (fq->state == qman_fq_state_parked)); +#ifdef CONFIG_FSL_DPA_CHECKING + if (unlikely(fq_isset(fq, QMAN_FQ_FLAG_NO_MODIFY))) + return -EINVAL; +#endif + if (opts && (opts->we_mask & QM_INITFQ_WE_OAC)) { + /* OAC not supported on rev1.0 */ + if (unlikely(qman_ip_rev == QMAN_REV10)) + return -EINVAL; + /* And can't be set at the same time as TDTHRESH */ + if (opts->we_mask & QM_INITFQ_WE_TDTHRESH) + return -EINVAL; + } + /* Issue an INITFQ_[PARKED|SCHED] management command */ + p = get_affine_portal(); + PORTAL_IRQ_LOCK(p, irqflags); + FQLOCK(fq); + if (unlikely((fq_isset(fq, QMAN_FQ_STATE_CHANGING)) || + ((fq->state != qman_fq_state_oos) && + (fq->state != qman_fq_state_parked)))) { + FQUNLOCK(fq); + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + return -EBUSY; + } + mcc = qm_mc_start(&p->p); + if (opts) + mcc->initfq = *opts; + mcc->initfq.fqid = fq->fqid; + mcc->initfq.count = 0; + /* If INITFQ_FLAG_NULL is passed, contextB is set to zero. Otherwise, + * if the FQ does *not* have the TO_DCPORTAL flag, contextB is set as a + * demux pointer. Otherwise, TO_DCPORTAL is set, so the caller-provided + * value is allowed to stand, don't overwrite it. */ + if ((flags & QMAN_INITFQ_FLAG_NULL) || + fq_isclear(fq, QMAN_FQ_FLAG_TO_DCPORTAL)) { + dma_addr_t phys_fq; + mcc->initfq.we_mask |= QM_INITFQ_WE_CONTEXTB; +#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP + mcc->initfq.fqd.context_b = (flags & QMAN_INITFQ_FLAG_NULL) ? + 0 : fq->key; +#else + mcc->initfq.fqd.context_b = (flags & QMAN_INITFQ_FLAG_NULL) ? + 0 : (u32)(uintptr_t)fq; +#endif + /* and the physical address - NB, if the user wasn't trying to + * set CONTEXTA, clear the stashing settings. */ + if (!(mcc->initfq.we_mask & QM_INITFQ_WE_CONTEXTA)) { + mcc->initfq.we_mask |= QM_INITFQ_WE_CONTEXTA; + memset(&mcc->initfq.fqd.context_a, 0, + sizeof(mcc->initfq.fqd.context_a)); + } else { + phys_fq = dma_map_single(&p->pdev->dev, fq, sizeof(*fq), + DMA_TO_DEVICE); + qm_fqd_stashing_set64(&mcc->initfq.fqd, phys_fq); + } + } + if (flags & QMAN_INITFQ_FLAG_LOCAL) { + mcc->initfq.fqd.dest.channel = p->config->public_cfg.channel; + if (!(mcc->initfq.we_mask & QM_INITFQ_WE_DESTWQ)) { + mcc->initfq.we_mask |= QM_INITFQ_WE_DESTWQ; + mcc->initfq.fqd.dest.wq = 4; + } + } + qm_mc_commit(&p->p, myverb); + while (!(mcr = qm_mc_result(&p->p))) + cpu_relax(); + DPA_ASSERT((mcr->verb & QM_MCR_VERB_MASK) == myverb); + res = mcr->result; + if (res != QM_MCR_RESULT_OK) { + FQUNLOCK(fq); + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + return -EIO; + } + if (opts) { + if (opts->we_mask & QM_INITFQ_WE_FQCTRL) { + if (opts->fqd.fq_ctrl & QM_FQCTRL_CGE) + fq_set(fq, QMAN_FQ_STATE_CGR_EN); + else + fq_clear(fq, QMAN_FQ_STATE_CGR_EN); + } + if (opts->we_mask & QM_INITFQ_WE_CGID) + fq->cgr_groupid = opts->fqd.cgid; + } + fq->state = (flags & QMAN_INITFQ_FLAG_SCHED) ? + qman_fq_state_sched : qman_fq_state_parked; + FQUNLOCK(fq); + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + return 0; +} +EXPORT_SYMBOL(qman_init_fq); + +int qman_schedule_fq(struct qman_fq *fq) +{ + struct qm_mc_command *mcc; + struct qm_mc_result *mcr; + struct qman_portal *p; + unsigned long irqflags __maybe_unused; + int ret = 0; + u8 res; + + DPA_ASSERT(fq->state == qman_fq_state_parked); +#ifdef CONFIG_FSL_DPA_CHECKING + if (unlikely(fq_isset(fq, QMAN_FQ_FLAG_NO_MODIFY))) + return -EINVAL; +#endif + /* Issue a ALTERFQ_SCHED management command */ + p = get_affine_portal(); + PORTAL_IRQ_LOCK(p, irqflags); + FQLOCK(fq); + if (unlikely((fq_isset(fq, QMAN_FQ_STATE_CHANGING)) || + (fq->state != qman_fq_state_parked))) { + ret = -EBUSY; + goto out; + } + mcc = qm_mc_start(&p->p); + mcc->alterfq.fqid = fq->fqid; + qm_mc_commit(&p->p, QM_MCC_VERB_ALTER_SCHED); + while (!(mcr = qm_mc_result(&p->p))) + cpu_relax(); + DPA_ASSERT((mcr->verb & QM_MCR_VERB_MASK) == QM_MCR_VERB_ALTER_SCHED); + res = mcr->result; + if (res != QM_MCR_RESULT_OK) { + ret = -EIO; + goto out; + } + fq->state = qman_fq_state_sched; +out: + FQUNLOCK(fq); + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + return ret; +} +EXPORT_SYMBOL(qman_schedule_fq); + +int qman_retire_fq(struct qman_fq *fq, u32 *flags) +{ + struct qm_mc_command *mcc; + struct qm_mc_result *mcr; + struct qman_portal *p; + unsigned long irqflags __maybe_unused; + int rval; + u8 res; + + DPA_ASSERT((fq->state == qman_fq_state_parked) || + (fq->state == qman_fq_state_sched)); +#ifdef CONFIG_FSL_DPA_CHECKING + if (unlikely(fq_isset(fq, QMAN_FQ_FLAG_NO_MODIFY))) + return -EINVAL; +#endif + p = get_affine_portal(); + PORTAL_IRQ_LOCK(p, irqflags); + FQLOCK(fq); + if (unlikely((fq_isset(fq, QMAN_FQ_STATE_CHANGING)) || + (fq->state == qman_fq_state_retired) || + (fq->state == qman_fq_state_oos))) { + rval = -EBUSY; + goto out; + } + rval = table_push_fq(p, fq); + if (rval) + goto out; + mcc = qm_mc_start(&p->p); + mcc->alterfq.fqid = fq->fqid; + qm_mc_commit(&p->p, QM_MCC_VERB_ALTER_RETIRE); + while (!(mcr = qm_mc_result(&p->p))) + cpu_relax(); + DPA_ASSERT((mcr->verb & QM_MCR_VERB_MASK) == QM_MCR_VERB_ALTER_RETIRE); + res = mcr->result; + /* "Elegant" would be to treat OK/PENDING the same way; set CHANGING, + * and defer the flags until FQRNI or FQRN (respectively) show up. But + * "Friendly" is to process OK immediately, and not set CHANGING. We do + * friendly, otherwise the caller doesn't necessarily have a fully + * "retired" FQ on return even if the retirement was immediate. However + * this does mean some code duplication between here and + * fq_state_change(). */ + if (likely(res == QM_MCR_RESULT_OK)) { + rval = 0; + /* Process 'fq' right away, we'll ignore FQRNI */ + if (mcr->alterfq.fqs & QM_MCR_FQS_NOTEMPTY) + fq_set(fq, QMAN_FQ_STATE_NE); + if (mcr->alterfq.fqs & QM_MCR_FQS_ORLPRESENT) + fq_set(fq, QMAN_FQ_STATE_ORL); + else + table_del_fq(p, fq); + if (flags) + *flags = fq->flags; + fq->state = qman_fq_state_retired; + if (fq->cb.fqs) { + /* Another issue with supporting "immediate" retirement + * is that we're forced to drop FQRNIs, because by the + * time they're seen it may already be "too late" (the + * fq may have been OOS'd and free()'d already). But if + * the upper layer wants a callback whether it's + * immediate or not, we have to fake a "MR" entry to + * look like an FQRNI... */ + struct qm_mr_entry msg; + msg.verb = QM_MR_VERB_FQRNI; + msg.fq.fqs = mcr->alterfq.fqs; + msg.fq.fqid = fq->fqid; +#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP + msg.fq.contextB = fq->key; +#else + msg.fq.contextB = (u32)(uintptr_t)fq; +#endif + fq->cb.fqs(p, fq, &msg); + } + } else if (res == QM_MCR_RESULT_PENDING) { + rval = 1; + fq_set(fq, QMAN_FQ_STATE_CHANGING); + } else { + rval = -EIO; + table_del_fq(p, fq); + } +out: + FQUNLOCK(fq); + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + return rval; +} +EXPORT_SYMBOL(qman_retire_fq); + +int qman_oos_fq(struct qman_fq *fq) +{ + struct qm_mc_command *mcc; + struct qm_mc_result *mcr; + struct qman_portal *p; + unsigned long irqflags __maybe_unused; + int ret = 0; + u8 res; + + DPA_ASSERT(fq->state == qman_fq_state_retired); +#ifdef CONFIG_FSL_DPA_CHECKING + if (unlikely(fq_isset(fq, QMAN_FQ_FLAG_NO_MODIFY))) + return -EINVAL; +#endif + p = get_affine_portal(); + PORTAL_IRQ_LOCK(p, irqflags); + FQLOCK(fq); + if (unlikely((fq_isset(fq, QMAN_FQ_STATE_BLOCKOOS)) || + (fq->state != qman_fq_state_retired))) { + ret = -EBUSY; + goto out; + } + mcc = qm_mc_start(&p->p); + mcc->alterfq.fqid = fq->fqid; + qm_mc_commit(&p->p, QM_MCC_VERB_ALTER_OOS); + while (!(mcr = qm_mc_result(&p->p))) + cpu_relax(); + DPA_ASSERT((mcr->verb & QM_MCR_VERB_MASK) == QM_MCR_VERB_ALTER_OOS); + res = mcr->result; + if (res != QM_MCR_RESULT_OK) { + ret = -EIO; + goto out; + } + fq->state = qman_fq_state_oos; +out: + FQUNLOCK(fq); + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + return ret; +} +EXPORT_SYMBOL(qman_oos_fq); + +int qman_query_fq(struct qman_fq *fq, struct qm_fqd *fqd) +{ + struct qm_mc_command *mcc; + struct qm_mc_result *mcr; + struct qman_portal *p = get_affine_portal(); + unsigned long irqflags __maybe_unused; + u8 res; + + PORTAL_IRQ_LOCK(p, irqflags); + mcc = qm_mc_start(&p->p); + mcc->queryfq.fqid = fq->fqid; + qm_mc_commit(&p->p, QM_MCC_VERB_QUERYFQ); + while (!(mcr = qm_mc_result(&p->p))) + cpu_relax(); + DPA_ASSERT((mcr->verb & QM_MCR_VERB_MASK) == QM_MCR_VERB_QUERYFQ); + res = mcr->result; + if (res == QM_MCR_RESULT_OK) + *fqd = mcr->queryfq.fqd; + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + if (res != QM_MCR_RESULT_OK) + return -EIO; + return 0; +} +EXPORT_SYMBOL(qman_query_fq); + +int qman_query_fq_np(struct qman_fq *fq, struct qm_mcr_queryfq_np *np) +{ + struct qm_mc_command *mcc; + struct qm_mc_result *mcr; + struct qman_portal *p = get_affine_portal(); + unsigned long irqflags __maybe_unused; + u8 res; + + PORTAL_IRQ_LOCK(p, irqflags); + mcc = qm_mc_start(&p->p); + mcc->queryfq.fqid = fq->fqid; + qm_mc_commit(&p->p, QM_MCC_VERB_QUERYFQ_NP); + while (!(mcr = qm_mc_result(&p->p))) + cpu_relax(); + DPA_ASSERT((mcr->verb & QM_MCR_VERB_MASK) == QM_MCR_VERB_QUERYFQ_NP); + res = mcr->result; + if (res == QM_MCR_RESULT_OK) + *np = mcr->queryfq_np; + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + if (res != QM_MCR_RESULT_OK) + return -EIO; + return 0; +} +EXPORT_SYMBOL(qman_query_fq_np); + +int qman_query_wq(u8 query_dedicated, struct qm_mcr_querywq *wq) +{ + struct qm_mc_command *mcc; + struct qm_mc_result *mcr; + struct qman_portal *p = get_affine_portal(); + unsigned long irqflags __maybe_unused; + u8 res, myverb; + + PORTAL_IRQ_LOCK(p, irqflags); + myverb = (query_dedicated) ? QM_MCR_VERB_QUERYWQ_DEDICATED : + QM_MCR_VERB_QUERYWQ; + mcc = qm_mc_start(&p->p); + mcc->querywq.channel.id = wq->channel.id; + qm_mc_commit(&p->p, myverb); + while (!(mcr = qm_mc_result(&p->p))) + cpu_relax(); + DPA_ASSERT((mcr->verb & QM_MCR_VERB_MASK) == myverb); + res = mcr->result; + if (res == QM_MCR_RESULT_OK) + *wq = mcr->querywq; + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + if (res != QM_MCR_RESULT_OK) { + pr_err("QUERYWQ failed: %s\n", mcr_result_str(res)); + return -EIO; + } + return 0; +} +EXPORT_SYMBOL(qman_query_wq); + +int qman_testwrite_cgr(struct qman_cgr *cgr, u64 i_bcnt, + struct qm_mcr_cgrtestwrite *result) +{ + struct qm_mc_command *mcc; + struct qm_mc_result *mcr; + struct qman_portal *p = get_affine_portal(); + unsigned long irqflags __maybe_unused; + u8 res; + + PORTAL_IRQ_LOCK(p, irqflags); + mcc = qm_mc_start(&p->p); + mcc->cgrtestwrite.cgid = cgr->cgrid; + mcc->cgrtestwrite.i_bcnt_hi = (u8)(i_bcnt >> 32); + mcc->cgrtestwrite.i_bcnt_lo = (u32)i_bcnt; + qm_mc_commit(&p->p, QM_MCC_VERB_CGRTESTWRITE); + while (!(mcr = qm_mc_result(&p->p))) + cpu_relax(); + DPA_ASSERT((mcr->verb & QM_MCR_VERB_MASK) == QM_MCC_VERB_CGRTESTWRITE); + res = mcr->result; + if (res == QM_MCR_RESULT_OK) + *result = mcr->cgrtestwrite; + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + if (res != QM_MCR_RESULT_OK) { + pr_err("CGR TEST WRITE failed: %s\n", mcr_result_str(res)); + return -EIO; + } + return 0; +} +EXPORT_SYMBOL(qman_testwrite_cgr); + +int qman_query_cgr(struct qman_cgr *cgr, struct qm_mcr_querycgr *cgrd) +{ + struct qm_mc_command *mcc; + struct qm_mc_result *mcr; + struct qman_portal *p = get_affine_portal(); + unsigned long irqflags __maybe_unused; + u8 res; + + PORTAL_IRQ_LOCK(p, irqflags); + mcc = qm_mc_start(&p->p); + mcc->querycgr.cgid = cgr->cgrid; + qm_mc_commit(&p->p, QM_MCC_VERB_QUERYCGR); + while (!(mcr = qm_mc_result(&p->p))) + cpu_relax(); + DPA_ASSERT((mcr->verb & QM_MCR_VERB_MASK) == QM_MCC_VERB_QUERYCGR); + res = mcr->result; + if (res == QM_MCR_RESULT_OK) + *cgrd = mcr->querycgr; + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + if (res != QM_MCR_RESULT_OK) { + pr_err("QUERY_CGR failed: %s\n", mcr_result_str(res)); + return -EIO; + } + return 0; +} +EXPORT_SYMBOL(qman_query_cgr); + +int qman_query_congestion(struct qm_mcr_querycongestion *congestion) +{ + struct qm_mc_result *mcr; + struct qman_portal *p = get_affine_portal(); + unsigned long irqflags __maybe_unused; + u8 res; + + PORTAL_IRQ_LOCK(p, irqflags); + qm_mc_start(&p->p); + qm_mc_commit(&p->p, QM_MCC_VERB_QUERYCONGESTION); + while (!(mcr = qm_mc_result(&p->p))) + cpu_relax(); + DPA_ASSERT((mcr->verb & QM_MCR_VERB_MASK) == + QM_MCC_VERB_QUERYCONGESTION); + res = mcr->result; + if (res == QM_MCR_RESULT_OK) + *congestion = mcr->querycongestion; + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + if (res != QM_MCR_RESULT_OK) { + pr_err("QUERY_CONGESTION failed: %s\n", mcr_result_str(res)); + return -EIO; + } + return 0; +} +EXPORT_SYMBOL(qman_query_congestion); + +/* internal function used as a wait_event() expression */ +static int set_vdqcr(struct qman_portal **p, struct qman_fq *fq, u32 vdqcr) +{ + unsigned long irqflags __maybe_unused; + int ret = -EBUSY; + *p = get_affine_portal(); + PORTAL_IRQ_LOCK(*p, irqflags); + if (!(*p)->vdqcr_owned) { + FQLOCK(fq); + if (fq_isset(fq, QMAN_FQ_STATE_VDQCR)) + goto escape; + fq_set(fq, QMAN_FQ_STATE_VDQCR); + FQUNLOCK(fq); + (*p)->vdqcr_owned = fq; + ret = 0; + } +escape: + PORTAL_IRQ_UNLOCK(*p, irqflags); + if (!ret) + qm_dqrr_vdqcr_set(&(*p)->p, vdqcr); + put_affine_portal(); + return ret; +} + +#ifdef CONFIG_FSL_DPA_CAN_WAIT +static int wait_vdqcr_start(struct qman_portal **p, struct qman_fq *fq, + u32 vdqcr, u32 flags) +{ + int ret = 0; + if (flags & QMAN_VOLATILE_FLAG_WAIT_INT) + ret = wait_event_interruptible(affine_queue, + !(ret = set_vdqcr(p, fq, vdqcr))); + else + wait_event(affine_queue, !(ret = set_vdqcr(p, fq, vdqcr))); + return ret; +} +#endif + +int qman_volatile_dequeue(struct qman_fq *fq, u32 flags __maybe_unused, + u32 vdqcr) +{ + struct qman_portal *p; + int ret; + + DPA_ASSERT(!fq || (fq->state == qman_fq_state_parked) || + (fq->state == qman_fq_state_retired)); + DPA_ASSERT(!fq || !(vdqcr & QM_VDQCR_FQID_MASK)); + DPA_ASSERT(!fq || !fq_isset(fq, QMAN_FQ_STATE_VDQCR)); + if (fq) + vdqcr = (vdqcr & ~QM_VDQCR_FQID_MASK) | fq->fqid; +#ifdef CONFIG_FSL_DPA_CAN_WAIT + if (flags & QMAN_VOLATILE_FLAG_WAIT) + ret = wait_vdqcr_start(&p, fq, vdqcr, flags); + else +#endif + ret = set_vdqcr(&p, fq, vdqcr); + if (ret) + return ret; + /* VDQCR is set */ +#ifdef CONFIG_FSL_DPA_CAN_WAIT + if (flags & QMAN_VOLATILE_FLAG_FINISH) { + if (flags & QMAN_VOLATILE_FLAG_WAIT_INT) + /* NB: don't propagate any error - the caller wouldn't + * know whether the VDQCR was issued or not. A signal + * could arrive after returning anyway, so the caller + * can check signal_pending() if that's an issue. */ + wait_event_interruptible(affine_queue, + !fq_isset(fq, QMAN_FQ_STATE_VDQCR)); + else + wait_event(affine_queue, + !fq_isset(fq, QMAN_FQ_STATE_VDQCR)); + } +#endif + return 0; +} +EXPORT_SYMBOL(qman_volatile_dequeue); + +static noinline void update_eqcr_ci(struct qman_portal *p, u8 avail) +{ + if (avail) + qm_eqcr_cce_prefetch(&p->p); + else + qm_eqcr_cce_update(&p->p); +} + +int qman_eqcr_is_empty(void) +{ + unsigned long irqflags __maybe_unused; + struct qman_portal *p = get_affine_portal(); + u8 avail; + + PORTAL_IRQ_LOCK(p, irqflags); + update_eqcr_ci(p, 0); + avail = qm_eqcr_get_fill(&p->p); + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + return (avail == 0); +} +EXPORT_SYMBOL(qman_eqcr_is_empty); + +static inline struct qm_eqcr_entry *try_eq_start(struct qman_portal **p, + unsigned long *irqflags __maybe_unused, + struct qman_fq *fq, + const struct qm_fd *fd, + u32 flags) +{ + struct qm_eqcr_entry *eq; + u8 avail; + + *p = get_affine_portal(); + PORTAL_IRQ_LOCK(*p, (*irqflags)); +#ifdef CONFIG_FSL_DPA_CAN_WAIT_SYNC + if (unlikely((flags & QMAN_ENQUEUE_FLAG_WAIT) && + (flags & QMAN_ENQUEUE_FLAG_WAIT_SYNC))) { + if ((*p)->eqci_owned) { + PORTAL_IRQ_UNLOCK(*p, (*irqflags)); + put_affine_portal(); + return NULL; + } + (*p)->eqci_owned = fq; + } +#endif + avail = qm_eqcr_get_avail(&(*p)->p); + if (avail < 2) + update_eqcr_ci(*p, avail); + eq = qm_eqcr_start(&(*p)->p); + if (unlikely(!eq)) { +#ifdef CONFIG_FSL_DPA_CAN_WAIT_SYNC + if (unlikely((flags & QMAN_ENQUEUE_FLAG_WAIT) && + (flags & QMAN_ENQUEUE_FLAG_WAIT_SYNC))) + (*p)->eqci_owned = NULL; +#endif + PORTAL_IRQ_UNLOCK(*p, (*irqflags)); + put_affine_portal(); + return NULL; + } + if (flags & QMAN_ENQUEUE_FLAG_DCA) + eq->dca = QM_EQCR_DCA_ENABLE | + ((flags & QMAN_ENQUEUE_FLAG_DCA_PARK) ? + QM_EQCR_DCA_PARK : 0) | + ((flags >> 8) & QM_EQCR_DCA_IDXMASK); + eq->fqid = fq->fqid; +#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP + eq->tag = fq->key; +#else + eq->tag = (u32)(uintptr_t)fq; +#endif + /* From p4080 rev1 -> rev2, the FD struct's address went from 48-bit to + * 40-bit but rev1 chips will still interpret it as 48-bit, meaning we + * have to scrub the upper 8-bits, just in case the user left noise in + * there. Doing this selectively via a run-time check of the h/w + * revision (as we do for most errata, for example) is too slow in this + * critical path code. The most inexpensive way to handle this is just + * to reinterpret the FD as 4 32-bit words and to mask the first word + * appropriately, irrespecitive of the h/w revision. The struct fields + * corresponding to this word are; + * u8 dd:2; + * u8 liodn_offset:6; + * u8 bpid; + * u8 eliodn_offset:4; + * u8 __reserved:4; + * u8 addr_hi; + * So we mask this word with 0xc0ff00ff, which implicitly scrubs out + * liodn_offset, eliodn_offset, and __reserved - the latter two fields + * are interpreted as the 8 msbits of the 48-bit address in the case of + * rev1. + */ + { + const u32 *src = (const u32 *)fd; + u32 *dest = (u32 *)&eq->fd; + dest[0] = src[0] & 0xc0ff00ff; + dest[1] = src[1]; + dest[2] = src[2]; + dest[3] = src[3]; + } + return eq; +} + +#ifdef CONFIG_FSL_DPA_CAN_WAIT +static noinline struct qm_eqcr_entry *__wait_eq_start(struct qman_portal **p, + unsigned long *irqflags __maybe_unused, + struct qman_fq *fq, + const struct qm_fd *fd, + u32 flags) +{ + struct qm_eqcr_entry *eq = try_eq_start(p, irqflags, fq, fd, flags); + if (!eq) + qm_eqcr_set_ithresh(&(*p)->p, EQCR_ITHRESH); + return eq; +} +static noinline struct qm_eqcr_entry *wait_eq_start(struct qman_portal **p, + unsigned long *irqflags __maybe_unused, + struct qman_fq *fq, + const struct qm_fd *fd, + u32 flags) +{ + struct qm_eqcr_entry *eq; + if (flags & QMAN_ENQUEUE_FLAG_WAIT_INT) + wait_event_interruptible(affine_queue, + (eq = __wait_eq_start(p, irqflags, fq, fd, flags))); + else + wait_event(affine_queue, + (eq = __wait_eq_start(p, irqflags, fq, fd, flags))); + return eq; +} +#endif + +int qman_enqueue(struct qman_fq *fq, const struct qm_fd *fd, u32 flags) +{ + struct qman_portal *p; + struct qm_eqcr_entry *eq; + unsigned long irqflags __maybe_unused; + +#ifdef CONFIG_FSL_DPA_CAN_WAIT + if (flags & QMAN_ENQUEUE_FLAG_WAIT) + eq = wait_eq_start(&p, &irqflags, fq, fd, flags); + else +#endif + eq = try_eq_start(&p, &irqflags, fq, fd, flags); + if (!eq) + return -EBUSY; + /* Note: QM_EQCR_VERB_INTERRUPT == QMAN_ENQUEUE_FLAG_WAIT_SYNC */ + qm_eqcr_pvb_commit(&p->p, QM_EQCR_VERB_CMD_ENQUEUE | + (flags & (QM_EQCR_VERB_COLOUR_MASK | QM_EQCR_VERB_INTERRUPT))); + /* Factor the below out, it's used from qman_enqueue_orp() too */ + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); +#ifdef CONFIG_FSL_DPA_CAN_WAIT_SYNC + if (unlikely((flags & QMAN_ENQUEUE_FLAG_WAIT) && + (flags & QMAN_ENQUEUE_FLAG_WAIT_SYNC))) { + if (flags & QMAN_ENQUEUE_FLAG_WAIT_INT) + wait_event_interruptible(affine_queue, + (p->eqci_owned != fq)); + else + wait_event(affine_queue, (p->eqci_owned != fq)); + } +#endif + return 0; +} +EXPORT_SYMBOL(qman_enqueue); + +int qman_enqueue_orp(struct qman_fq *fq, const struct qm_fd *fd, u32 flags, + struct qman_fq *orp, u16 orp_seqnum) +{ + struct qman_portal *p; + struct qm_eqcr_entry *eq; + unsigned long irqflags __maybe_unused; + +#ifdef CONFIG_FSL_DPA_CAN_WAIT + if (flags & QMAN_ENQUEUE_FLAG_WAIT) + eq = wait_eq_start(&p, &irqflags, fq, fd, flags); + else +#endif + eq = try_eq_start(&p, &irqflags, fq, fd, flags); + if (!eq) + return -EBUSY; + /* Process ORP-specifics here */ + if (flags & QMAN_ENQUEUE_FLAG_NLIS) + orp_seqnum |= QM_EQCR_SEQNUM_NLIS; + else { + orp_seqnum &= ~QM_EQCR_SEQNUM_NLIS; + if (flags & QMAN_ENQUEUE_FLAG_NESN) + orp_seqnum |= QM_EQCR_SEQNUM_NESN; + else + /* No need to check 4 QMAN_ENQUEUE_FLAG_HOLE */ + orp_seqnum &= ~QM_EQCR_SEQNUM_NESN; + } + eq->seqnum = orp_seqnum; + eq->orp = orp->fqid; + /* Note: QM_EQCR_VERB_INTERRUPT == QMAN_ENQUEUE_FLAG_WAIT_SYNC */ + qm_eqcr_pvb_commit(&p->p, QM_EQCR_VERB_ORP | + ((flags & (QMAN_ENQUEUE_FLAG_HOLE | QMAN_ENQUEUE_FLAG_NESN)) ? + 0 : QM_EQCR_VERB_CMD_ENQUEUE) | + (flags & (QM_EQCR_VERB_COLOUR_MASK | QM_EQCR_VERB_INTERRUPT))); + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); +#ifdef CONFIG_FSL_DPA_CAN_WAIT_SYNC + if (unlikely((flags & QMAN_ENQUEUE_FLAG_WAIT) && + (flags & QMAN_ENQUEUE_FLAG_WAIT_SYNC))) { + if (flags & QMAN_ENQUEUE_FLAG_WAIT_INT) + wait_event_interruptible(affine_queue, + (p->eqci_owned != fq)); + else + wait_event(affine_queue, (p->eqci_owned != fq)); + } +#endif + return 0; +} +EXPORT_SYMBOL(qman_enqueue_orp); + +int qman_modify_cgr(struct qman_cgr *cgr, u32 flags, + struct qm_mcc_initcgr *opts) +{ + struct qm_mc_command *mcc; + struct qm_mc_result *mcr; + struct qman_portal *p = get_affine_portal(); + unsigned long irqflags __maybe_unused; + u8 res; + u8 verb = QM_MCC_VERB_MODIFYCGR; + + /* frame mode not supported on rev1.0 */ + if (unlikely(qman_ip_rev == QMAN_REV10)) { + if (opts && (opts->we_mask & QM_CGR_WE_MODE) && + opts->cgr.mode == QMAN_CGR_MODE_FRAME) { + put_affine_portal(); + return -EIO; + } + } + PORTAL_IRQ_LOCK(p, irqflags); + mcc = qm_mc_start(&p->p); + if (opts) + mcc->initcgr = *opts; + mcc->initcgr.cgid = cgr->cgrid; + if (flags & QMAN_CGR_FLAG_USE_INIT) + verb = QM_MCC_VERB_INITCGR; + qm_mc_commit(&p->p, verb); + while (!(mcr = qm_mc_result(&p->p))) + cpu_relax(); + DPA_ASSERT((mcr->verb & QM_MCR_VERB_MASK) == verb); + res = mcr->result; + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + return (res == QM_MCR_RESULT_OK) ? 0 : -EIO; +} +EXPORT_SYMBOL(qman_modify_cgr); + +#define TARG_MASK(n) (0x80000000 >> (n->config->public_cfg.channel - \ + qm_channel_swportal0)) + +int qman_create_cgr(struct qman_cgr *cgr, u32 flags, + struct qm_mcc_initcgr *opts) +{ + unsigned long irqflags __maybe_unused; + struct qm_mcr_querycgr cgr_state; + struct qm_mcc_initcgr local_opts; + int ret; + struct qman_portal *p; + + /* We have to check that the provided CGRID is within the limits of the + * data-structures, for obvious reasons. However we'll let h/w take + * care of determining whether it's within the limits of what exists on + * the SoC. */ + if (cgr->cgrid >= __CGR_NUM) + return -EINVAL; + + p = get_affine_portal(); + + memset(&local_opts, 0, sizeof(struct qm_mcc_initcgr)); + cgr->chan = p->config->public_cfg.channel; + spin_lock_irqsave(&p->cgr_lock, irqflags); + + /* if no opts specified and I'm not the first for this portal, just add + * to the list */ + if ((opts == NULL) && !list_empty(&p->cgr_cbs[cgr->cgrid])) + goto add_list; + + ret = qman_query_cgr(cgr, &cgr_state); + if (ret) + goto release_lock; + if (opts) + local_opts = *opts; + /* Overwrite TARG */ + local_opts.cgr.cscn_targ = cgr_state.cgr.cscn_targ | TARG_MASK(p); + local_opts.we_mask |= QM_CGR_WE_CSCN_TARG; + + /* send init if flags indicate so */ + if (opts && (flags & QMAN_CGR_FLAG_USE_INIT)) + ret = qman_modify_cgr(cgr, QMAN_CGR_FLAG_USE_INIT, &local_opts); + else + ret = qman_modify_cgr(cgr, 0, &local_opts); + if (ret) + goto release_lock; +add_list: + list_add(&cgr->node, &p->cgr_cbs[cgr->cgrid]); + + /* Determine if newly added object requires its callback to be called */ + ret = qman_query_cgr(cgr, &cgr_state); + if (ret) { + /* we can't go back, so proceed and return success, but screen + * and wail to the log file */ + pr_crit("CGR HW state partially modified\n"); + ret = 0; + goto release_lock; + } + if (cgr->cb && cgr_state.cgr.cscn_en && qman_cgrs_get(&p->cgrs[1], + cgr->cgrid)) + cgr->cb(p, cgr, 1); +release_lock: + spin_unlock_irqrestore(&p->cgr_lock, irqflags); + put_affine_portal(); + return ret; +} +EXPORT_SYMBOL(qman_create_cgr); + +int qman_delete_cgr(struct qman_cgr *cgr) +{ + unsigned long irqflags __maybe_unused; + struct qm_mcr_querycgr cgr_state; + struct qm_mcc_initcgr local_opts; + int ret = 0; + struct qman_portal *p = get_affine_portal(); + + if (cgr->chan != p->config->public_cfg.channel) { + pr_crit("Attempting to delete cgr from different portal " + "than it was create: create 0x%x, delete 0x%x\n", + cgr->chan, p->config->public_cfg.channel); + ret = -EINVAL; + goto put_portal; + } + memset(&local_opts, 0, sizeof(struct qm_mcc_initcgr)); + spin_lock_irqsave(&p->cgr_lock, irqflags); + list_del(&cgr->node); + /* If last in list, CSCN_TARG must be set accordingly */ + if (!list_empty(&p->cgr_cbs[cgr->cgrid])) + goto release_lock; + ret = qman_query_cgr(cgr, &cgr_state); + if (ret) { + /* add back to the list */ + list_add(&cgr->node, &p->cgr_cbs[cgr->cgrid]); + goto release_lock; + } + /* Overwrite TARG */ + local_opts.we_mask = QM_CGR_WE_CSCN_TARG; + local_opts.cgr.cscn_targ = cgr_state.cgr.cscn_targ & ~(TARG_MASK(p)); + ret = qman_modify_cgr(cgr, 0, &local_opts); + if (ret) + /* add back to the list */ + list_add(&cgr->node, &p->cgr_cbs[cgr->cgrid]); +release_lock: + spin_unlock_irqrestore(&p->cgr_lock, irqflags); +put_portal: + put_affine_portal(); + return ret; +} +EXPORT_SYMBOL(qman_delete_cgr); + --- linux-3.13.0.orig/drivers/staging/fsl_qbman/qman_low.h +++ linux-3.13.0/drivers/staging/fsl_qbman/qman_low.h @@ -0,0 +1,1186 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 "qman_private.h" + +/***************************/ +/* Portal register assists */ +/***************************/ + +/* Cache-inhibited register offsets */ +#define REG_EQCR_PI_CINH 0x0000 +#define REG_EQCR_CI_CINH 0x0004 +#define REG_EQCR_ITR 0x0008 +#define REG_DQRR_PI_CINH 0x0040 +#define REG_DQRR_CI_CINH 0x0044 +#define REG_DQRR_ITR 0x0048 +#define REG_DQRR_DCAP 0x0050 +#define REG_DQRR_SDQCR 0x0054 +#define REG_DQRR_VDQCR 0x0058 +#define REG_DQRR_PDQCR 0x005c +#define REG_MR_PI_CINH 0x0080 +#define REG_MR_CI_CINH 0x0084 +#define REG_MR_ITR 0x0088 +#define REG_CFG 0x0100 +#define REG_ISR 0x0e00 +#define REG_ITPR 0x0e14 + +/* Cache-enabled register offsets */ +#define CL_EQCR 0x0000 +#define CL_DQRR 0x1000 +#define CL_MR 0x2000 +#define CL_EQCR_PI_CENA 0x3000 +#define CL_EQCR_CI_CENA 0x3100 +#define CL_DQRR_PI_CENA 0x3200 +#define CL_DQRR_CI_CENA 0x3300 +#define CL_MR_PI_CENA 0x3400 +#define CL_MR_CI_CENA 0x3500 +#define CL_CR 0x3800 +#define CL_RR0 0x3900 +#define CL_RR1 0x3940 + +/* BTW, the drivers (and h/w programming model) already obtain the required + * synchronisation for portal accesses via lwsync(), hwsync(), and + * data-dependencies. Use of barrier()s or other order-preserving primitives + * simply degrade performance. Hence the use of the __raw_*() interfaces, which + * simply ensure that the compiler treats the portal registers as volatile (ie. + * non-coherent). */ + +/* Cache-inhibited register access. */ +#define __qm_in(qm, o) __raw_readl((qm)->addr_ci + (o)) +#define __qm_out(qm, o, val) __raw_writel((val), (qm)->addr_ci + (o)) +#define qm_in(reg) __qm_in(&portal->addr, REG_##reg) +#define qm_out(reg, val) __qm_out(&portal->addr, REG_##reg, val) + +/* Cache-enabled (index) register access */ +#define __qm_cl_touch_ro(qm, o) dcbt_ro((qm)->addr_ce + (o)) +#define __qm_cl_touch_rw(qm, o) dcbt_rw((qm)->addr_ce + (o)) +#define __qm_cl_in(qm, o) __raw_readl((qm)->addr_ce + (o)) +#define __qm_cl_out(qm, o, val) \ + do { \ + u32 *__tmpclout = (qm)->addr_ce + (o); \ + __raw_writel((val), __tmpclout); \ + dcbf(__tmpclout); \ + } while (0) +#define __qm_cl_invalidate(qm, o) dcbi((qm)->addr_ce + (o)) +#define qm_cl_touch_ro(reg) __qm_cl_touch_ro(&portal->addr, CL_##reg##_CENA) +#define qm_cl_touch_rw(reg) __qm_cl_touch_rw(&portal->addr, CL_##reg##_CENA) +#define qm_cl_in(reg) __qm_cl_in(&portal->addr, CL_##reg##_CENA) +#define qm_cl_out(reg, val) __qm_cl_out(&portal->addr, CL_##reg##_CENA, val) +#define qm_cl_invalidate(reg) __qm_cl_invalidate(&portal->addr, CL_##reg##_CENA) + +/* Cache-enabled ring access */ +#define qm_cl(base, idx) ((void *)base + ((idx) << 6)) + +/* Cyclic helper for rings. FIXME: once we are able to do fine-grain perf + * analysis, look at using the "extra" bit in the ring index registers to avoid + * cyclic issues. */ +static inline u8 cyc_diff(u8 ringsize, u8 first, u8 last) +{ + /* 'first' is included, 'last' is excluded */ + if (first <= last) + return last - first; + return ringsize + last - first; +} + +/* Portal modes. + * Enum types; + * pmode == production mode + * cmode == consumption mode, + * dmode == h/w dequeue mode. + * Enum values use 3 letter codes. First letter matches the portal mode, + * remaining two letters indicate; + * ci == cache-inhibited portal register + * ce == cache-enabled portal register + * vb == in-band valid-bit (cache-enabled) + * dc == DCA (Discrete Consumption Acknowledgement), DQRR-only + * As for "enum qm_dqrr_dmode", it should be self-explanatory. + */ +enum qm_eqcr_pmode { /* matches QCSP_CFG::EPM */ + qm_eqcr_pci = 0, /* PI index, cache-inhibited */ + qm_eqcr_pce = 1, /* PI index, cache-enabled */ + qm_eqcr_pvb = 2 /* valid-bit */ +}; +enum qm_eqcr_cmode { /* s/w-only */ + qm_eqcr_cci, /* CI index, cache-inhibited */ + qm_eqcr_cce /* CI index, cache-enabled */ +}; +enum qm_dqrr_dmode { /* matches QCSP_CFG::DP */ + qm_dqrr_dpush = 0, /* SDQCR + VDQCR */ + qm_dqrr_dpull = 1 /* PDQCR */ +}; +enum qm_dqrr_pmode { /* s/w-only */ + qm_dqrr_pci, /* reads DQRR_PI_CINH */ + qm_dqrr_pce, /* reads DQRR_PI_CENA */ + qm_dqrr_pvb /* reads valid-bit */ +}; +enum qm_dqrr_cmode { /* matches QCSP_CFG::DCM */ + qm_dqrr_cci = 0, /* CI index, cache-inhibited */ + qm_dqrr_cce = 1, /* CI index, cache-enabled */ + qm_dqrr_cdc = 2 /* Discrete Consumption Acknowledgement */ +}; +enum qm_mr_pmode { /* s/w-only */ + qm_mr_pci, /* reads MR_PI_CINH */ + qm_mr_pce, /* reads MR_PI_CENA */ + qm_mr_pvb /* reads valid-bit */ +}; +enum qm_mr_cmode { /* matches QCSP_CFG::MM */ + qm_mr_cci = 0, /* CI index, cache-inhibited */ + qm_mr_cce = 1 /* CI index, cache-enabled */ +}; + + +/* ------------------------- */ +/* --- Portal structures --- */ + +#define QM_EQCR_SIZE 8 +#define QM_DQRR_SIZE 16 +#define QM_MR_SIZE 8 + +struct qm_eqcr { + struct qm_eqcr_entry *ring, *cursor; + u8 ci, available, ithresh, vbit; +#ifdef CONFIG_FSL_DPA_CHECKING + u32 busy; + enum qm_eqcr_pmode pmode; + enum qm_eqcr_cmode cmode; +#endif +}; + +struct qm_dqrr { + const struct qm_dqrr_entry *ring, *cursor; + u8 pi, ci, fill, ithresh, vbit; +#ifdef CONFIG_FSL_DPA_CHECKING +#define QM_DQRR_FLAG_RE 0x01 /* Stash ring entries */ +#define QM_DQRR_FLAG_SE 0x02 /* Stash data */ + u8 flags; + enum qm_dqrr_dmode dmode; + enum qm_dqrr_pmode pmode; + enum qm_dqrr_cmode cmode; +#endif +}; + +struct qm_mr { + const struct qm_mr_entry *ring, *cursor; + u8 pi, ci, fill, ithresh, vbit; +#ifdef CONFIG_FSL_DPA_CHECKING + enum qm_mr_pmode pmode; + enum qm_mr_cmode cmode; +#endif +}; + +struct qm_mc { + struct qm_mc_command *cr; + struct qm_mc_result *rr; + u8 rridx, vbit; +#ifdef CONFIG_FSL_DPA_CHECKING + enum { + /* Can be _mc_start()ed */ + mc_idle, + /* Can be _mc_commit()ed or _mc_abort()ed */ + mc_user, + /* Can only be _mc_retry()ed */ + mc_hw + } state; +#endif +}; + +#ifdef CONFIG_FSL_QMAN_BUG_AND_FEATURE_REV1 +/* For workarounds that require storage. The struct alignment is required for + * cases where operations on "shadow" structs need the same alignment as is + * present on the corresponding h/w data structs (specifically, there is a + * zero-bit present above the range required to address the ring, so that + * iteration can be achieved by incrementing a ring pointer and clearing the + * carry-bit). The "portal" struct needs the same alignment because this type + * goes at its head, so it has a more radical alignment requirement if this + * structure is used. (NB: "64" instead of "L1_CACHE_BYTES", because this + * alignment relates to the h/w interface, not the CPU cache granularity!)*/ +#define QM_PORTAL_ALIGNMENT __attribute__((aligned(32 * 64))) +struct qm_portal_bugs { + /* shadow MR ring, for QMAN9 workaround, 8-CL-aligned */ + struct qm_mr_entry mr[QM_MR_SIZE]; + /* shadow MC result, for QMAN6 and QMAN7 workarounds, CL-aligned */ + struct qm_mc_result result; + /* boolean switch for QMAN7 workaround */ + int initfq_and_sched; +} QM_PORTAL_ALIGNMENT; +#else +#define QM_PORTAL_ALIGNMENT ____cacheline_aligned +#endif + +struct qm_addr { + void __iomem *addr_ce; /* cache-enabled */ + void __iomem *addr_ci; /* cache-inhibited */ +}; + +struct qm_portal { +#ifdef CONFIG_FSL_QMAN_BUG_AND_FEATURE_REV1 + struct qm_portal_bugs bugs; +#endif + /* In the non-CONFIG_FSL_DPA_CHECKING case, the following stuff up to + * and including 'mc' fits within a cacheline (yay!). The 'config' part + * is setup-only, so isn't a cause for a concern. In other words, don't + * rearrange this structure on a whim, there be dragons ... */ + struct qm_addr addr; + struct qm_eqcr eqcr; + struct qm_dqrr dqrr; + struct qm_mr mr; + struct qm_mc mc; +} QM_PORTAL_ALIGNMENT; + + +/* ---------------- */ +/* --- EQCR API --- */ + +/* Bit-wise logic to wrap a ring pointer by clearing the "carry bit" */ +#define EQCR_CARRYCLEAR(p) \ + (void *)((unsigned long)(p) & (~(unsigned long)(QM_EQCR_SIZE << 6))) + +/* Bit-wise logic to convert a ring pointer to a ring index */ +static inline u8 EQCR_PTR2IDX(struct qm_eqcr_entry *e) +{ + return ((uintptr_t)e >> 6) & (QM_EQCR_SIZE - 1); +} + +/* Increment the 'cursor' ring pointer, taking 'vbit' into account */ +static inline void EQCR_INC(struct qm_eqcr *eqcr) +{ + /* NB: this is odd-looking, but experiments show that it generates fast + * code with essentially no branching overheads. We increment to the + * next EQCR pointer and handle overflow and 'vbit'. */ + struct qm_eqcr_entry *partial = eqcr->cursor + 1; + eqcr->cursor = EQCR_CARRYCLEAR(partial); + if (partial != eqcr->cursor) + eqcr->vbit ^= QM_EQCR_VERB_VBIT; +} + +static inline int qm_eqcr_init(struct qm_portal *portal, + enum qm_eqcr_pmode pmode, + __maybe_unused enum qm_eqcr_cmode cmode) +{ + /* This use of 'register', as well as all other occurances, is because + * it has been observed to generate much faster code with gcc than is + * otherwise the case. */ + register struct qm_eqcr *eqcr = &portal->eqcr; + u32 cfg; + u8 pi; + + eqcr->ring = portal->addr.addr_ce + CL_EQCR; + eqcr->ci = qm_in(EQCR_CI_CINH) & (QM_EQCR_SIZE - 1); + qm_cl_invalidate(EQCR_CI); + pi = qm_in(EQCR_PI_CINH) & (QM_EQCR_SIZE - 1); + eqcr->cursor = eqcr->ring + pi; + eqcr->vbit = (qm_in(EQCR_PI_CINH) & QM_EQCR_SIZE) ? + QM_EQCR_VERB_VBIT : 0; + eqcr->available = QM_EQCR_SIZE - 1 - + cyc_diff(QM_EQCR_SIZE, eqcr->ci, pi); + eqcr->ithresh = qm_in(EQCR_ITR); +#ifdef CONFIG_FSL_DPA_CHECKING + eqcr->busy = 0; + eqcr->pmode = pmode; + eqcr->cmode = cmode; +#endif + cfg = (qm_in(CFG) & 0x00ffffff) | + ((pmode & 0x3) << 24); /* QCSP_CFG::EPM */ + qm_out(CFG, cfg); + return 0; +} + +static inline void qm_eqcr_finish(struct qm_portal *portal) +{ + register struct qm_eqcr *eqcr = &portal->eqcr; + u8 pi = qm_in(EQCR_PI_CINH) & (QM_EQCR_SIZE - 1); + u8 ci = qm_in(EQCR_CI_CINH) & (QM_EQCR_SIZE - 1); + + DPA_ASSERT(!eqcr->busy); + if (pi != EQCR_PTR2IDX(eqcr->cursor)) + pr_crit("losing uncommited EQCR entries\n"); + if (ci != eqcr->ci) + pr_crit("missing existing EQCR completions\n"); + if (eqcr->ci != EQCR_PTR2IDX(eqcr->cursor)) + pr_crit("EQCR destroyed unquiesced\n"); +} + +static inline struct qm_eqcr_entry *qm_eqcr_start(struct qm_portal *portal) +{ + register struct qm_eqcr *eqcr = &portal->eqcr; + DPA_ASSERT(!eqcr->busy); + if (!eqcr->available) + return NULL; +#ifdef CONFIG_FSL_DPA_CHECKING + eqcr->busy = 1; +#endif + dcbz_64(eqcr->cursor); + return eqcr->cursor; +} + +static inline void qm_eqcr_abort(struct qm_portal *portal) +{ + __maybe_unused register struct qm_eqcr *eqcr = &portal->eqcr; + DPA_ASSERT(eqcr->busy); +#ifdef CONFIG_FSL_DPA_CHECKING + eqcr->busy = 0; +#endif +} + +static inline struct qm_eqcr_entry *qm_eqcr_pend_and_next( + struct qm_portal *portal, u8 myverb) +{ + register struct qm_eqcr *eqcr = &portal->eqcr; + DPA_ASSERT(eqcr->busy); + DPA_ASSERT(eqcr->pmode != qm_eqcr_pvb); + if (eqcr->available == 1) + return NULL; + eqcr->cursor->__dont_write_directly__verb = myverb | eqcr->vbit; + dcbf(eqcr->cursor); + EQCR_INC(eqcr); + eqcr->available--; + dcbz_64(eqcr->cursor); + return eqcr->cursor; +} + +#define EQCR_COMMIT_CHECKS(eqcr) \ +do { \ + DPA_ASSERT(eqcr->busy); \ + DPA_ASSERT(eqcr->cursor->orp == (eqcr->cursor->orp & 0x00ffffff)); \ + DPA_ASSERT(eqcr->cursor->fqid == (eqcr->cursor->fqid & 0x00ffffff)); \ +} while(0) + +static inline void qm_eqcr_pci_commit(struct qm_portal *portal, u8 myverb) +{ + register struct qm_eqcr *eqcr = &portal->eqcr; + EQCR_COMMIT_CHECKS(eqcr); + DPA_ASSERT(eqcr->pmode == qm_eqcr_pci); + eqcr->cursor->__dont_write_directly__verb = myverb | eqcr->vbit; + EQCR_INC(eqcr); + eqcr->available--; + dcbf(eqcr->cursor); + hwsync(); + qm_out(EQCR_PI_CINH, EQCR_PTR2IDX(eqcr->cursor)); +#ifdef CONFIG_FSL_DPA_CHECKING + eqcr->busy = 0; +#endif +} + +static inline void qm_eqcr_pce_prefetch(struct qm_portal *portal) +{ + __maybe_unused register struct qm_eqcr *eqcr = &portal->eqcr; + DPA_ASSERT(eqcr->pmode == qm_eqcr_pce); + qm_cl_invalidate(EQCR_PI); + qm_cl_touch_rw(EQCR_PI); +} + +static inline void qm_eqcr_pce_commit(struct qm_portal *portal, u8 myverb) +{ + register struct qm_eqcr *eqcr = &portal->eqcr; + EQCR_COMMIT_CHECKS(eqcr); + DPA_ASSERT(eqcr->pmode == qm_eqcr_pce); + eqcr->cursor->__dont_write_directly__verb = myverb | eqcr->vbit; + EQCR_INC(eqcr); + eqcr->available--; + dcbf(eqcr->cursor); + lwsync(); + qm_cl_out(EQCR_PI, EQCR_PTR2IDX(eqcr->cursor)); +#ifdef CONFIG_FSL_DPA_CHECKING + eqcr->busy = 0; +#endif +} + +static inline void qm_eqcr_pvb_commit(struct qm_portal *portal, u8 myverb) +{ + register struct qm_eqcr *eqcr = &portal->eqcr; + struct qm_eqcr_entry *eqcursor; + EQCR_COMMIT_CHECKS(eqcr); + DPA_ASSERT(eqcr->pmode == qm_eqcr_pvb); + lwsync(); + eqcursor = eqcr->cursor; + eqcursor->__dont_write_directly__verb = myverb | eqcr->vbit; + dcbf(eqcursor); + EQCR_INC(eqcr); + eqcr->available--; +#ifdef CONFIG_FSL_DPA_CHECKING + eqcr->busy = 0; +#endif +} + +static inline u8 qm_eqcr_cci_update(struct qm_portal *portal) +{ + register struct qm_eqcr *eqcr = &portal->eqcr; + u8 diff, old_ci = eqcr->ci; + DPA_ASSERT(eqcr->cmode == qm_eqcr_cci); + eqcr->ci = qm_in(EQCR_CI_CINH) & (QM_EQCR_SIZE - 1); + diff = cyc_diff(QM_EQCR_SIZE, old_ci, eqcr->ci); + eqcr->available += diff; + return diff; +} + +static inline void qm_eqcr_cce_prefetch(struct qm_portal *portal) +{ + __maybe_unused register struct qm_eqcr *eqcr = &portal->eqcr; + DPA_ASSERT(eqcr->cmode == qm_eqcr_cce); + qm_cl_touch_ro(EQCR_CI); +} + +static inline u8 qm_eqcr_cce_update(struct qm_portal *portal) +{ + register struct qm_eqcr *eqcr = &portal->eqcr; + u8 diff, old_ci = eqcr->ci; + DPA_ASSERT(eqcr->cmode == qm_eqcr_cce); + eqcr->ci = qm_cl_in(EQCR_CI) & (QM_EQCR_SIZE - 1); + qm_cl_invalidate(EQCR_CI); + diff = cyc_diff(QM_EQCR_SIZE, old_ci, eqcr->ci); + eqcr->available += diff; + return diff; +} + +static inline u8 qm_eqcr_get_ithresh(struct qm_portal *portal) +{ + register struct qm_eqcr *eqcr = &portal->eqcr; + return eqcr->ithresh; +} + +static inline void qm_eqcr_set_ithresh(struct qm_portal *portal, u8 ithresh) +{ + register struct qm_eqcr *eqcr = &portal->eqcr; + eqcr->ithresh = ithresh; + qm_out(EQCR_ITR, ithresh); +} + +static inline u8 qm_eqcr_get_avail(struct qm_portal *portal) +{ + register struct qm_eqcr *eqcr = &portal->eqcr; + return eqcr->available; +} + +static inline u8 qm_eqcr_get_fill(struct qm_portal *portal) +{ + register struct qm_eqcr *eqcr = &portal->eqcr; + return QM_EQCR_SIZE - 1 - eqcr->available; +} + + +/* ---------------- */ +/* --- DQRR API --- */ + +/* FIXME: many possible improvements; + * - look at changing the API to use pointer rather than index parameters now + * that 'cursor' is a pointer, + * - consider moving other parameters to pointer if it could help (ci) + */ + +#define DQRR_CARRYCLEAR(p) \ + (void *)((unsigned long)(p) & (~(unsigned long)(QM_DQRR_SIZE << 6))) + +static inline u8 DQRR_PTR2IDX(const struct qm_dqrr_entry *e) +{ + return ((uintptr_t)e >> 6) & (QM_DQRR_SIZE - 1); +} + +static inline const struct qm_dqrr_entry *DQRR_INC( + const struct qm_dqrr_entry *e) +{ + return DQRR_CARRYCLEAR(e + 1); +} + +static inline void qm_dqrr_set_maxfill(struct qm_portal *portal, u8 mf) +{ + qm_out(CFG, (qm_in(CFG) & 0xff0fffff) | + ((mf & (QM_DQRR_SIZE - 1)) << 20)); +} + +static inline int qm_dqrr_init(struct qm_portal *portal, + const struct qm_portal_config *config, + enum qm_dqrr_dmode dmode, + __maybe_unused enum qm_dqrr_pmode pmode, + enum qm_dqrr_cmode cmode, u8 max_fill, + int disable_stash) +{ + register struct qm_dqrr *dqrr = &portal->dqrr; + u32 cfg; + + if ((config->public_cfg.has_stashing) && (config->public_cfg.cpu == -1)) + return -EINVAL; + /* Make sure the DQRR will be idle when we enable */ + qm_out(DQRR_SDQCR, 0); + qm_out(DQRR_VDQCR, 0); + qm_out(DQRR_PDQCR, 0); + dqrr->ring = portal->addr.addr_ce + CL_DQRR; + dqrr->pi = qm_in(DQRR_PI_CINH) & (QM_DQRR_SIZE - 1); + dqrr->ci = qm_in(DQRR_CI_CINH) & (QM_DQRR_SIZE - 1); + dqrr->cursor = dqrr->ring + dqrr->ci; + dqrr->fill = cyc_diff(QM_DQRR_SIZE, dqrr->ci, dqrr->pi); + dqrr->vbit = (qm_in(DQRR_PI_CINH) & QM_DQRR_SIZE) ? + QM_DQRR_VERB_VBIT : 0; + dqrr->ithresh = qm_in(DQRR_ITR); +#ifdef CONFIG_FSL_DPA_CHECKING + dqrr->dmode = dmode; + dqrr->pmode = pmode; + dqrr->cmode = cmode; + dqrr->flags = 0; + if (!disable_stash) + dqrr->flags |= QM_DQRR_FLAG_RE | QM_DQRR_FLAG_SE; +#endif + cfg = (qm_in(CFG) & 0xff000f00) | + ((max_fill & (QM_DQRR_SIZE - 1)) << 20) | /* DQRR_MF */ + ((dmode & 1) << 18) | /* DP */ + ((cmode & 3) << 16) | /* DCM */ + (disable_stash ? 0 : /* RE+SE */ + config->public_cfg.has_stashing ? 0xa0 : 0) | + (0 ? 0x40 : 0) | /* Ignore RP */ + (0 ? 0x10 : 0); /* Ignore SP */ + qm_out(CFG, cfg); + qm_dqrr_set_maxfill(portal, max_fill); + return 0; +} + +static inline void qm_dqrr_finish(struct qm_portal *portal) +{ + __maybe_unused register struct qm_dqrr *dqrr = &portal->dqrr; +#ifdef CONFIG_FSL_DPA_CHECKING + if ((dqrr->cmode != qm_dqrr_cdc) && + (dqrr->ci != DQRR_PTR2IDX(dqrr->cursor))) + pr_crit("Ignoring completed DQRR entries\n"); +#endif +} + +static inline const struct qm_dqrr_entry *qm_dqrr_current( + struct qm_portal *portal) +{ + register struct qm_dqrr *dqrr = &portal->dqrr; + if (!dqrr->fill) + return NULL; + return dqrr->cursor; +} + +static inline u8 qm_dqrr_cursor(struct qm_portal *portal) +{ + register struct qm_dqrr *dqrr = &portal->dqrr; + return DQRR_PTR2IDX(dqrr->cursor); +} + +static inline u8 qm_dqrr_next(struct qm_portal *portal) +{ + register struct qm_dqrr *dqrr = &portal->dqrr; + DPA_ASSERT(dqrr->fill); + dqrr->cursor = DQRR_INC(dqrr->cursor); + return --dqrr->fill; +} + +static inline u8 qm_dqrr_pci_update(struct qm_portal *portal) +{ + register struct qm_dqrr *dqrr = &portal->dqrr; + u8 diff, old_pi = dqrr->pi; + DPA_ASSERT(dqrr->pmode == qm_dqrr_pci); + dqrr->pi = qm_in(DQRR_PI_CINH) & (QM_DQRR_SIZE - 1); + diff = cyc_diff(QM_DQRR_SIZE, old_pi, dqrr->pi); + dqrr->fill += diff; + return diff; +} + +static inline void qm_dqrr_pce_prefetch(struct qm_portal *portal) +{ + __maybe_unused register struct qm_dqrr *dqrr = &portal->dqrr; + DPA_ASSERT(dqrr->pmode == qm_dqrr_pce); + qm_cl_invalidate(DQRR_PI); + qm_cl_touch_ro(DQRR_PI); +} + +static inline u8 qm_dqrr_pce_update(struct qm_portal *portal) +{ + register struct qm_dqrr *dqrr = &portal->dqrr; + u8 diff, old_pi = dqrr->pi; + DPA_ASSERT(dqrr->pmode == qm_dqrr_pce); + dqrr->pi = qm_cl_in(DQRR_PI) & (QM_DQRR_SIZE - 1); + diff = cyc_diff(QM_DQRR_SIZE, old_pi, dqrr->pi); + dqrr->fill += diff; + return diff; +} + +static inline void qm_dqrr_pvb_update(struct qm_portal *portal, int coherent) +{ + register struct qm_dqrr *dqrr = &portal->dqrr; + const struct qm_dqrr_entry *res = qm_cl(dqrr->ring, dqrr->pi); + DPA_ASSERT(dqrr->pmode == qm_dqrr_pvb); + /* when accessing 'verb', use __raw_readb() to ensure that compiler + * inlining doesn't try to optimise out "excess reads". */ + if ((__raw_readb(&res->verb) & QM_DQRR_VERB_VBIT) == dqrr->vbit) { + dqrr->pi = (dqrr->pi + 1) & (QM_DQRR_SIZE - 1); + if (!dqrr->pi) + dqrr->vbit ^= QM_DQRR_VERB_VBIT; + dqrr->fill++; + if (!coherent) { + DPA_ASSERT(!(dqrr->flags & QM_DQRR_FLAG_RE)); + dcbit_ro(DQRR_INC(res)); + } + } else if (!coherent) { + DPA_ASSERT(!(dqrr->flags & QM_DQRR_FLAG_RE)); + dcbit_ro(res); + } +} + +static inline void qm_dqrr_cci_consume(struct qm_portal *portal, u8 num) +{ + register struct qm_dqrr *dqrr = &portal->dqrr; + DPA_ASSERT(dqrr->cmode == qm_dqrr_cci); + dqrr->ci = (dqrr->ci + num) & (QM_DQRR_SIZE - 1); + qm_out(DQRR_CI_CINH, dqrr->ci); +} + +static inline void qm_dqrr_cci_consume_to_current(struct qm_portal *portal) +{ + register struct qm_dqrr *dqrr = &portal->dqrr; + DPA_ASSERT(dqrr->cmode == qm_dqrr_cci); + dqrr->ci = DQRR_PTR2IDX(dqrr->cursor); + qm_out(DQRR_CI_CINH, dqrr->ci); +} + +static inline void qm_dqrr_cce_prefetch(struct qm_portal *portal) +{ + __maybe_unused register struct qm_dqrr *dqrr = &portal->dqrr; + DPA_ASSERT(dqrr->cmode == qm_dqrr_cce); + qm_cl_invalidate(DQRR_CI); + qm_cl_touch_rw(DQRR_CI); +} + +static inline void qm_dqrr_cce_consume(struct qm_portal *portal, u8 num) +{ + register struct qm_dqrr *dqrr = &portal->dqrr; + DPA_ASSERT(dqrr->cmode == qm_dqrr_cce); + dqrr->ci = (dqrr->ci + num) & (QM_DQRR_SIZE - 1); + qm_cl_out(DQRR_CI, dqrr->ci); +} + +static inline void qm_dqrr_cce_consume_to_current(struct qm_portal *portal) +{ + register struct qm_dqrr *dqrr = &portal->dqrr; + DPA_ASSERT(dqrr->cmode == qm_dqrr_cce); + dqrr->ci = DQRR_PTR2IDX(dqrr->cursor); + qm_cl_out(DQRR_CI, dqrr->ci); +} + +static inline void qm_dqrr_cdc_consume_1(struct qm_portal *portal, u8 idx, + int park) +{ + __maybe_unused register struct qm_dqrr *dqrr = &portal->dqrr; + DPA_ASSERT(dqrr->cmode == qm_dqrr_cdc); + DPA_ASSERT(idx < QM_DQRR_SIZE); + qm_out(DQRR_DCAP, (0 << 8) | /* S */ + ((park ? 1 : 0) << 6) | /* PK */ + idx); /* DCAP_CI */ +} + +static inline void qm_dqrr_cdc_consume_1ptr(struct qm_portal *portal, + const struct qm_dqrr_entry *dq, + int park) +{ + __maybe_unused register struct qm_dqrr *dqrr = &portal->dqrr; + u8 idx = DQRR_PTR2IDX(dq); + DPA_ASSERT(dqrr->cmode == qm_dqrr_cdc); + DPA_ASSERT((dqrr->ring + idx) == dq); + DPA_ASSERT(idx < QM_DQRR_SIZE); + qm_out(DQRR_DCAP, (0 << 8) | /* DQRR_DCAP::S */ + ((park ? 1 : 0) << 6) | /* DQRR_DCAP::PK */ + idx); /* DQRR_DCAP::DCAP_CI */ +} + +static inline void qm_dqrr_cdc_consume_n(struct qm_portal *portal, u16 bitmask) +{ + __maybe_unused register struct qm_dqrr *dqrr = &portal->dqrr; + DPA_ASSERT(dqrr->cmode == qm_dqrr_cdc); + qm_out(DQRR_DCAP, (1 << 8) | /* DQRR_DCAP::S */ + ((u32)bitmask << 16)); /* DQRR_DCAP::DCAP_CI */ +} + +static inline u8 qm_dqrr_cdc_cci(struct qm_portal *portal) +{ + __maybe_unused register struct qm_dqrr *dqrr = &portal->dqrr; + DPA_ASSERT(dqrr->cmode == qm_dqrr_cdc); + return qm_in(DQRR_CI_CINH) & (QM_DQRR_SIZE - 1); +} + +static inline void qm_dqrr_cdc_cce_prefetch(struct qm_portal *portal) +{ + __maybe_unused register struct qm_dqrr *dqrr = &portal->dqrr; + DPA_ASSERT(dqrr->cmode == qm_dqrr_cdc); + qm_cl_invalidate(DQRR_CI); + qm_cl_touch_ro(DQRR_CI); +} + +static inline u8 qm_dqrr_cdc_cce(struct qm_portal *portal) +{ + __maybe_unused register struct qm_dqrr *dqrr = &portal->dqrr; + DPA_ASSERT(dqrr->cmode == qm_dqrr_cdc); + return qm_cl_in(DQRR_CI) & (QM_DQRR_SIZE - 1); +} + +static inline u8 qm_dqrr_get_ci(struct qm_portal *portal) +{ + register struct qm_dqrr *dqrr = &portal->dqrr; + DPA_ASSERT(dqrr->cmode != qm_dqrr_cdc); + return dqrr->ci; +} + +static inline void qm_dqrr_park(struct qm_portal *portal, u8 idx) +{ + __maybe_unused register struct qm_dqrr *dqrr = &portal->dqrr; + DPA_ASSERT(dqrr->cmode != qm_dqrr_cdc); + qm_out(DQRR_DCAP, (0 << 8) | /* S */ + (1 << 6) | /* PK */ + (idx & (QM_DQRR_SIZE - 1))); /* DCAP_CI */ +} + +static inline void qm_dqrr_park_current(struct qm_portal *portal) +{ + register struct qm_dqrr *dqrr = &portal->dqrr; + DPA_ASSERT(dqrr->cmode != qm_dqrr_cdc); + qm_out(DQRR_DCAP, (0 << 8) | /* S */ + (1 << 6) | /* PK */ + DQRR_PTR2IDX(dqrr->cursor)); /* DCAP_CI */ +} + +static inline void qm_dqrr_sdqcr_set(struct qm_portal *portal, u32 sdqcr) +{ + qm_out(DQRR_SDQCR, sdqcr); +} + +static inline u32 qm_dqrr_sdqcr_get(struct qm_portal *portal) +{ + return qm_in(DQRR_SDQCR); +} + +static inline void qm_dqrr_vdqcr_set(struct qm_portal *portal, u32 vdqcr) +{ + qm_out(DQRR_VDQCR, vdqcr); +} + +static inline u32 qm_dqrr_vdqcr_get(struct qm_portal *portal) +{ + return qm_in(DQRR_VDQCR); +} + +static inline void qm_dqrr_pdqcr_set(struct qm_portal *portal, u32 pdqcr) +{ + qm_out(DQRR_PDQCR, pdqcr); +} + +static inline u32 qm_dqrr_pdqcr_get(struct qm_portal *portal) +{ + return qm_in(DQRR_PDQCR); +} + +static inline u8 qm_dqrr_get_ithresh(struct qm_portal *portal) +{ + register struct qm_dqrr *dqrr = &portal->dqrr; + return dqrr->ithresh; +} + +static inline void qm_dqrr_set_ithresh(struct qm_portal *portal, u8 ithresh) +{ + qm_out(DQRR_ITR, ithresh); +} + +static inline u8 qm_dqrr_get_maxfill(struct qm_portal *portal) +{ + return (qm_in(CFG) & 0x00f00000) >> 20; +} + + +/* -------------- */ +/* --- MR API --- */ + +#define MR_CARRYCLEAR(p) \ + (void *)((unsigned long)(p) & (~(unsigned long)(QM_MR_SIZE << 6))) + +static inline u8 MR_PTR2IDX(const struct qm_mr_entry *e) +{ + return ((uintptr_t)e >> 6) & (QM_MR_SIZE - 1); +} + +static inline const struct qm_mr_entry *MR_INC(const struct qm_mr_entry *e) +{ + return MR_CARRYCLEAR(e + 1); +} + +#ifdef CONFIG_FSL_QMAN_BUG_AND_FEATURE_REV1 +static inline void __mr_copy_and_fixup(struct qm_portal *p, u8 idx) +{ + if (qman_ip_rev == QMAN_REV10) { + struct qm_mr_entry *shadow = qm_cl(p->bugs.mr, idx); + struct qm_mr_entry *res = qm_cl(p->mr.ring, idx); + copy_words(shadow, res, sizeof(*res)); + /* Bypass the QM_MR_RC_*** definitions, and check the byte value + * directly to handle the erratum. */ + if (shadow->ern.rc == 0x06) + shadow->ern.rc = 0x60; + } +} +#else +#define __mr_copy_and_fixup(p, idx) do { ; } while (0) +#endif + +static inline int qm_mr_init(struct qm_portal *portal, enum qm_mr_pmode pmode, + enum qm_mr_cmode cmode) +{ + register struct qm_mr *mr = &portal->mr; + u32 cfg; + int loop; + +#ifdef CONFIG_FSL_QMAN_BUG_AND_FEATURE_REV1 + if ((qman_ip_rev == QMAN_REV10) && (pmode != qm_mr_pvb)) { + pr_err("Qman is rev1, so QMAN9 workaround requires 'pvb'\n"); + return -EINVAL; + } +#endif + mr->ring = portal->addr.addr_ce + CL_MR; + mr->pi = qm_in(MR_PI_CINH) & (QM_MR_SIZE - 1); + mr->ci = qm_in(MR_CI_CINH) & (QM_MR_SIZE - 1); +#ifdef CONFIG_FSL_QMAN_BUG_AND_FEATURE_REV1 + if (qman_ip_rev == QMAN_REV10) + /* Situate the cursor in the shadow ring */ + mr->cursor = portal->bugs.mr + mr->ci; + else +#endif + mr->cursor = mr->ring + mr->ci; + mr->fill = cyc_diff(QM_MR_SIZE, mr->ci, mr->pi); + mr->vbit = (qm_in(MR_PI_CINH) & QM_MR_SIZE) ? QM_MR_VERB_VBIT : 0; + mr->ithresh = qm_in(MR_ITR); +#ifdef CONFIG_FSL_DPA_CHECKING + mr->pmode = pmode; + mr->cmode = cmode; +#endif + /* Only new entries get the copy-and-fixup treatment from + * qm_mr_pvb_update(), so perform it here for any stale entries. */ + for (loop = 0; loop < mr->fill; loop++) + __mr_copy_and_fixup(portal, (mr->ci + loop) & (QM_MR_SIZE - 1)); + cfg = (qm_in(CFG) & 0xfffff0ff) | + ((cmode & 1) << 8); /* QCSP_CFG:MM */ + qm_out(CFG, cfg); + return 0; +} + +static inline void qm_mr_finish(struct qm_portal *portal) +{ + register struct qm_mr *mr = &portal->mr; + if (mr->ci != MR_PTR2IDX(mr->cursor)) + pr_crit("Ignoring completed MR entries\n"); +} + +static inline const struct qm_mr_entry *qm_mr_current(struct qm_portal *portal) +{ + register struct qm_mr *mr = &portal->mr; + if (!mr->fill) + return NULL; + return mr->cursor; +} + +static inline u8 qm_mr_cursor(struct qm_portal *portal) +{ + register struct qm_mr *mr = &portal->mr; + return MR_PTR2IDX(mr->cursor); +} + +static inline u8 qm_mr_next(struct qm_portal *portal) +{ + register struct qm_mr *mr = &portal->mr; + DPA_ASSERT(mr->fill); + mr->cursor = MR_INC(mr->cursor); + return --mr->fill; +} + +static inline u8 qm_mr_pci_update(struct qm_portal *portal) +{ + register struct qm_mr *mr = &portal->mr; + u8 diff, old_pi = mr->pi; + DPA_ASSERT(mr->pmode == qm_mr_pci); + mr->pi = qm_in(MR_PI_CINH); + diff = cyc_diff(QM_MR_SIZE, old_pi, mr->pi); + mr->fill += diff; + return diff; +} + +static inline void qm_mr_pce_prefetch(struct qm_portal *portal) +{ + __maybe_unused register struct qm_mr *mr = &portal->mr; + DPA_ASSERT(mr->pmode == qm_mr_pce); + qm_cl_invalidate(MR_PI); + qm_cl_touch_ro(MR_PI); +} + +static inline u8 qm_mr_pce_update(struct qm_portal *portal) +{ + register struct qm_mr *mr = &portal->mr; + u8 diff, old_pi = mr->pi; + DPA_ASSERT(mr->pmode == qm_mr_pce); + mr->pi = qm_cl_in(MR_PI) & (QM_MR_SIZE - 1); + diff = cyc_diff(QM_MR_SIZE, old_pi, mr->pi); + mr->fill += diff; + return diff; +} + +static inline void qm_mr_pvb_update(struct qm_portal *portal) +{ + register struct qm_mr *mr = &portal->mr; + const struct qm_mr_entry *res = qm_cl(mr->ring, mr->pi); + DPA_ASSERT(mr->pmode == qm_mr_pvb); + /* when accessing 'verb', use __raw_readb() to ensure that compiler + * inlining doesn't try to optimise out "excess reads". */ + if ((__raw_readb(&res->verb) & QM_MR_VERB_VBIT) == mr->vbit) { + __mr_copy_and_fixup(portal, mr->pi); + mr->pi = (mr->pi + 1) & (QM_MR_SIZE - 1); + if (!mr->pi) + mr->vbit ^= QM_MR_VERB_VBIT; + mr->fill++; + res = MR_INC(res); + } + dcbit_ro(res); +} + +static inline void qm_mr_cci_consume(struct qm_portal *portal, u8 num) +{ + register struct qm_mr *mr = &portal->mr; + DPA_ASSERT(mr->cmode == qm_mr_cci); + mr->ci = (mr->ci + num) & (QM_MR_SIZE - 1); + qm_out(MR_CI_CINH, mr->ci); +} + +static inline void qm_mr_cci_consume_to_current(struct qm_portal *portal) +{ + register struct qm_mr *mr = &portal->mr; + DPA_ASSERT(mr->cmode == qm_mr_cci); + mr->ci = MR_PTR2IDX(mr->cursor); + qm_out(MR_CI_CINH, mr->ci); +} + +static inline void qm_mr_cce_prefetch(struct qm_portal *portal) +{ + __maybe_unused register struct qm_mr *mr = &portal->mr; + DPA_ASSERT(mr->cmode == qm_mr_cce); + qm_cl_invalidate(MR_CI); + qm_cl_touch_rw(MR_CI); +} + +static inline void qm_mr_cce_consume(struct qm_portal *portal, u8 num) +{ + register struct qm_mr *mr = &portal->mr; + DPA_ASSERT(mr->cmode == qm_mr_cce); + mr->ci = (mr->ci + num) & (QM_MR_SIZE - 1); + qm_cl_out(MR_CI, mr->ci); +} + +static inline void qm_mr_cce_consume_to_current(struct qm_portal *portal) +{ + register struct qm_mr *mr = &portal->mr; + DPA_ASSERT(mr->cmode == qm_mr_cce); + mr->ci = MR_PTR2IDX(mr->cursor); + qm_cl_out(MR_CI, mr->ci); +} + +static inline u8 qm_mr_get_ci(struct qm_portal *portal) +{ + register struct qm_mr *mr = &portal->mr; + return mr->ci; +} + +static inline u8 qm_mr_get_ithresh(struct qm_portal *portal) +{ + register struct qm_mr *mr = &portal->mr; + return mr->ithresh; +} + +static inline void qm_mr_set_ithresh(struct qm_portal *portal, u8 ithresh) +{ + qm_out(MR_ITR, ithresh); +} + + +/* ------------------------------ */ +/* --- Management command API --- */ + +static inline int qm_mc_init(struct qm_portal *portal) +{ + register struct qm_mc *mc = &portal->mc; + mc->cr = portal->addr.addr_ce + CL_CR; + mc->rr = portal->addr.addr_ce + CL_RR0; + mc->rridx = (__raw_readb(&mc->cr->__dont_write_directly__verb) & + QM_MCC_VERB_VBIT) ? 0 : 1; + mc->vbit = mc->rridx ? QM_MCC_VERB_VBIT : 0; +#ifdef CONFIG_FSL_DPA_CHECKING + mc->state = mc_idle; +#endif + return 0; +} + +static inline void qm_mc_finish(struct qm_portal *portal) +{ + __maybe_unused register struct qm_mc *mc = &portal->mc; + DPA_ASSERT(mc->state == mc_idle); +#ifdef CONFIG_FSL_DPA_CHECKING + if (mc->state != mc_idle) + pr_crit("Losing incomplete MC command\n"); +#endif +} + +static inline struct qm_mc_command *qm_mc_start(struct qm_portal *portal) +{ + register struct qm_mc *mc = &portal->mc; + DPA_ASSERT(mc->state == mc_idle); +#ifdef CONFIG_FSL_DPA_CHECKING + mc->state = mc_user; +#endif + dcbz_64(mc->cr); + return mc->cr; +} + +static inline void qm_mc_abort(struct qm_portal *portal) +{ + __maybe_unused register struct qm_mc *mc = &portal->mc; + DPA_ASSERT(mc->state == mc_user); +#ifdef CONFIG_FSL_DPA_CHECKING + mc->state = mc_idle; +#endif +} + +static inline void qm_mc_commit(struct qm_portal *portal, u8 myverb) +{ + register struct qm_mc *mc = &portal->mc; + struct qm_mc_result *rr = mc->rr + mc->rridx; + DPA_ASSERT(mc->state == mc_user); + lwsync(); +#ifdef CONFIG_FSL_QMAN_BUG_AND_FEATURE_REV1 + if ((qman_ip_rev == QMAN_REV10) && ((myverb & QM_MCC_VERB_MASK) == + QM_MCC_VERB_INITFQ_SCHED)) { + u32 fqid = mc->cr->initfq.fqid; + /* Do two commands to avoid the hw bug. Note, we poll locally + * rather than using qm_mc_result() because from a DPA_CHECKING + * perspective, we don't want to appear to have "finished" until + * both commands are done. */ + mc->cr->__dont_write_directly__verb = mc->vbit | + QM_MCC_VERB_INITFQ_PARKED; + dcbf(mc->cr); + portal->bugs.initfq_and_sched = 1; + do { + dcbit_ro(rr); + } while (!__raw_readb(&rr->verb)); +#ifdef CONFIG_FSL_DPA_CHECKING + mc->state = mc_idle; +#endif + if (rr->result != QM_MCR_RESULT_OK) { +#ifdef CONFIG_FSL_DPA_CHECKING + mc->state = mc_hw; +#endif + return; + } + mc->rridx ^= 1; + mc->vbit ^= QM_MCC_VERB_VBIT; + rr = mc->rr + mc->rridx; + dcbz_64(mc->cr); + mc->cr->alterfq.fqid = fqid; + lwsync(); + myverb = QM_MCC_VERB_ALTER_SCHED; + } else + portal->bugs.initfq_and_sched = 0; +#endif + mc->cr->__dont_write_directly__verb = myverb | mc->vbit; + dcbf(mc->cr); + dcbit_ro(rr); +#ifdef CONFIG_FSL_DPA_CHECKING + mc->state = mc_hw; +#endif +} + +static inline struct qm_mc_result *qm_mc_result(struct qm_portal *portal) +{ + register struct qm_mc *mc = &portal->mc; + struct qm_mc_result *rr = mc->rr + mc->rridx; + DPA_ASSERT(mc->state == mc_hw); + /* The inactive response register's verb byte always returns zero until + * its command is submitted and completed. This includes the valid-bit, + * in case you were wondering... */ + if (!__raw_readb(&rr->verb)) { + dcbit_ro(rr); + return NULL; + } +#ifdef CONFIG_FSL_QMAN_BUG_AND_FEATURE_REV1 + if (qman_ip_rev == QMAN_REV10) { + if ((__raw_readb(&rr->verb) & QM_MCR_VERB_MASK) == + QM_MCR_VERB_QUERYFQ) { + void *misplaced = (void *)rr + 50; + copy_words(&portal->bugs.result, rr, sizeof(*rr)); + rr = &portal->bugs.result; + copy_shorts(&rr->queryfq.fqd.td, misplaced, + sizeof(rr->queryfq.fqd.td)); + } else if (portal->bugs.initfq_and_sched) { + /* We split the user-requested command, make the final + * result match the requested type. */ + copy_words(&portal->bugs.result, rr, sizeof(*rr)); + rr = &portal->bugs.result; + rr->verb = (rr->verb & QM_MCR_VERB_RRID) | + QM_MCR_VERB_INITFQ_SCHED; + } + } +#endif + mc->rridx ^= 1; + mc->vbit ^= QM_MCC_VERB_VBIT; +#ifdef CONFIG_FSL_DPA_CHECKING + mc->state = mc_idle; +#endif + return rr; +} + + +/* ------------------------------------- */ +/* --- Portal interrupt register API --- */ + +static inline int qm_isr_init(__always_unused struct qm_portal *portal) +{ + return 0; +} + +static inline void qm_isr_finish(__always_unused struct qm_portal *portal) +{ +} + +static inline void qm_isr_set_iperiod(struct qm_portal *portal, u16 iperiod) +{ + qm_out(ITPR, iperiod); +} + +static inline u32 __qm_isr_read(struct qm_portal *portal, enum qm_isr_reg n) +{ + return __qm_in(&portal->addr, REG_ISR + (n << 2)); +} + +static inline void __qm_isr_write(struct qm_portal *portal, enum qm_isr_reg n, + u32 val) +{ + __qm_out(&portal->addr, REG_ISR + (n << 2), val); +} + --- linux-3.13.0.orig/drivers/staging/fsl_qbman/qman_private.h +++ linux-3.13.0/drivers/staging/fsl_qbman/qman_private.h @@ -0,0 +1,292 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 "dpa_sys.h" +#include + +#if !defined(CONFIG_FSL_QMAN_FQ_LOOKUP) && defined(CONFIG_PPC64) +#error "_PPC64 requires _FSL_QMAN_FQ_LOOKUP" +#endif + + /* ----------------- */ + /* Congestion Groups */ + /* ----------------- */ +/* This wrapper represents a bit-array for the state of the 256 Qman congestion + * groups. Is also used as a *mask* for congestion groups, eg. so we ignore + * those that don't concern us. We harness the structure and accessor details + * already used in the management command to query congestion groups. */ +struct qman_cgrs { + struct __qm_mcr_querycongestion q; +}; +static inline void qman_cgrs_init(struct qman_cgrs *c) +{ + memset(c, 0, sizeof(*c)); +} +static inline void qman_cgrs_fill(struct qman_cgrs *c) +{ + memset(c, 0xff, sizeof(*c)); +} +static inline int qman_cgrs_get(struct qman_cgrs *c, int num) +{ + return QM_MCR_QUERYCONGESTION(&c->q, num); +} +static inline void qman_cgrs_set(struct qman_cgrs *c, int num) +{ + c->q.__state[__CGR_WORD(num)] |= (0x80000000 >> __CGR_SHIFT(num)); +} +static inline void qman_cgrs_unset(struct qman_cgrs *c, int num) +{ + c->q.__state[__CGR_WORD(num)] &= ~(0x80000000 >> __CGR_SHIFT(num)); +} +static inline int qman_cgrs_next(struct qman_cgrs *c, int num) +{ + while ((++num < __CGR_NUM) && !qman_cgrs_get(c, num)) + ; + return num; +} +static inline void qman_cgrs_cp(struct qman_cgrs *dest, + const struct qman_cgrs *src) +{ + memcpy(dest, src, sizeof(*dest)); +} +static inline void qman_cgrs_and(struct qman_cgrs *dest, + const struct qman_cgrs *a, const struct qman_cgrs *b) +{ + int ret; + u32 *_d = dest->q.__state; + const u32 *_a = a->q.__state; + const u32 *_b = b->q.__state; + for (ret = 0; ret < 8; ret++) + *(_d++) = *(_a++) & *(_b++); +} +static inline void qman_cgrs_xor(struct qman_cgrs *dest, + const struct qman_cgrs *a, const struct qman_cgrs *b) +{ + int ret; + u32 *_d = dest->q.__state; + const u32 *_a = a->q.__state; + const u32 *_b = b->q.__state; + for (ret = 0; ret < 8; ret++) + *(_d++) = *(_a++) ^ *(_b++); +} + +#define qman_cgrs_for_each_1(cgr, cgrs) \ + for ((cgr) = -1; (cgr) = qman_cgrs_next((cgrs), (cgr)),\ + (cgr) < __CGR_NUM;) + +/* used by CCSR and portal interrupt code */ +enum qm_isr_reg { + qm_isr_status = 0, + qm_isr_enable = 1, + qm_isr_disable = 2, + qm_isr_inhibit = 3 +}; + +#define QM_ADDR_CE 0 +#define QM_ADDR_CI 1 +struct qm_portal_config { + /* Corenet portal addresses; + * [0]==cache-enabled, [1]==cache-inhibited. */ + __iomem void *addr_virt[2]; + struct resource addr_phys[2]; + struct device_node *node; + /* Allow these to be joined in lists */ + struct list_head list; + /* User-visible portal configuration settings */ + struct qman_portal_config public_cfg; +}; + +/* Hooks for driver initialisation */ +__init int fqalloc_init(int use_bman); + +/* Revision info (for errata and feature handling) */ +#define QMAN_REV10 0x0100 +#define QMAN_REV11 0x0101 +#define QMAN_REV12 0x0102 +#define QMAN_REV20 0x0200 +extern u16 qman_ip_rev; /* 0 if uninitialised, otherwise QMAN_REVx */ + +#ifdef CONFIG_FSL_QMAN_CONFIG +/* Hooks from qman_driver.c to qman_config.c */ +int qman_init_error_int(struct device_node *node); +void qman_liodn_fixup(enum qm_channel channel); +#endif + +/* Hooks from qman_driver.c in to qman_high.c */ +struct qman_portal *qman_create_affine_portal( + const struct qm_portal_config *config, + const struct qman_cgrs *cgrs, + const struct qman_fq_cb *null_cb, + int recovery_mode); +struct qman_portal *qman_create_affine_slave(struct qman_portal *redirect); +const struct qm_portal_config *qman_destroy_affine_portal(void); +void qman_recovery_exit_local(void); + +/* This CGR feature is supported by h/w and required by unit-tests and the + * debugfs hooks, so is implemented in the driver. However it allows an explicit + * corruption of h/w fields by s/w that are usually incorruptible (because the + * counters are usually maintained entirely within h/w). As such, we declare + * this API internally. */ +int qman_testwrite_cgr(struct qman_cgr *cgr, u64 i_bcnt, + struct qm_mcr_cgrtestwrite *result); + +#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP +/* If the fq object pointer is greater than the size of context_b field, + * than a lookup table is required. */ +int qman_setup_fq_lookup_table(size_t num_entries); +#endif + +/*************************************************/ +/* QMan s/w corenet portal, low-level i/face */ +/*************************************************/ + +/* Note: most functions are only used by the high-level interface, so are + * inlined from qman_low.h. The stuff below is for use by other parts of the + * driver. */ + +/* For qm_dqrr_sdqcr_set(); Choose one SOURCE. Choose one COUNT. Choose one + * dequeue TYPE. Choose TOKEN (8-bit). + * If SOURCE == CHANNELS, + * Choose CHANNELS_DEDICATED and/or CHANNELS_POOL(n). + * You can choose DEDICATED_PRECEDENCE if the portal channel should have + * priority. + * If SOURCE == SPECIFICWQ, + * Either select the work-queue ID with SPECIFICWQ_WQ(), or select the + * channel (SPECIFICWQ_DEDICATED or SPECIFICWQ_POOL()) and specify the + * work-queue priority (0-7) with SPECIFICWQ_WQ() - either way, you get the + * same value. + */ +#define QM_SDQCR_SOURCE_CHANNELS 0x0 +#define QM_SDQCR_SOURCE_SPECIFICWQ 0x40000000 +#define QM_SDQCR_COUNT_EXACT1 0x0 +#define QM_SDQCR_COUNT_UPTO3 0x20000000 +#define QM_SDQCR_DEDICATED_PRECEDENCE 0x10000000 +#define QM_SDQCR_TYPE_MASK 0x03000000 +#define QM_SDQCR_TYPE_NULL 0x0 +#define QM_SDQCR_TYPE_PRIO_QOS 0x01000000 +#define QM_SDQCR_TYPE_ACTIVE_QOS 0x02000000 +#define QM_SDQCR_TYPE_ACTIVE 0x03000000 +#define QM_SDQCR_TOKEN_MASK 0x00ff0000 +#define QM_SDQCR_TOKEN_SET(v) (((v) & 0xff) << 16) +#define QM_SDQCR_TOKEN_GET(v) (((v) >> 16) & 0xff) +#define QM_SDQCR_CHANNELS_DEDICATED 0x00008000 +#if 0 /* These are defined in the external fsl_qman.h API */ +#define QM_SDQCR_CHANNELS_POOL_MASK 0x00007fff +#define QM_SDQCR_CHANNELS_POOL(n) (0x00008000 >> (n)) +#endif +#define QM_SDQCR_SPECIFICWQ_MASK 0x000000f7 +#define QM_SDQCR_SPECIFICWQ_DEDICATED 0x00000000 +#define QM_SDQCR_SPECIFICWQ_POOL(n) ((n) << 4) +#define QM_SDQCR_SPECIFICWQ_WQ(n) (n) + +/* For qm_dqrr_vdqcr_set(); Choose one PRECEDENCE. EXACT is optional. Use + * NUMFRAMES(n) (6-bit) or NUMFRAMES_TILLEMPTY to fill in the frame-count. Use + * FQID(n) to fill in the frame queue ID. */ +#if 0 /* These are defined in the external fsl_qman.h API */ +#define QM_VDQCR_PRECEDENCE_VDQCR 0x0 +#define QM_VDQCR_PRECEDENCE_SDQCR 0x80000000 +#define QM_VDQCR_EXACT 0x40000000 +#define QM_VDQCR_NUMFRAMES_MASK 0x3f000000 +#define QM_VDQCR_NUMFRAMES_SET(n) (((n) & 0x3f) << 24) +#define QM_VDQCR_NUMFRAMES_GET(n) (((n) >> 24) & 0x3f) +#define QM_VDQCR_NUMFRAMES_TILLEMPTY QM_VDQCR_NUMFRAMES_SET(0) +#endif +#define QM_VDQCR_FQID_MASK 0x00ffffff +#define QM_VDQCR_FQID(n) ((n) & QM_VDQCR_FQID_MASK) + +/* For qm_dqrr_pdqcr_set(); Choose one MODE. Choose one COUNT. + * If MODE==SCHEDULED + * Choose SCHEDULED_CHANNELS or SCHEDULED_SPECIFICWQ. Choose one dequeue TYPE. + * If CHANNELS, + * Choose CHANNELS_DEDICATED and/or CHANNELS_POOL() channels. + * You can choose DEDICATED_PRECEDENCE if the portal channel should have + * priority. + * If SPECIFICWQ, + * Either select the work-queue ID with SPECIFICWQ_WQ(), or select the + * channel (SPECIFICWQ_DEDICATED or SPECIFICWQ_POOL()) and specify the + * work-queue priority (0-7) with SPECIFICWQ_WQ() - either way, you get the + * same value. + * If MODE==UNSCHEDULED + * Choose FQID(). + */ +#define QM_PDQCR_MODE_SCHEDULED 0x0 +#define QM_PDQCR_MODE_UNSCHEDULED 0x80000000 +#define QM_PDQCR_SCHEDULED_CHANNELS 0x0 +#define QM_PDQCR_SCHEDULED_SPECIFICWQ 0x40000000 +#define QM_PDQCR_COUNT_EXACT1 0x0 +#define QM_PDQCR_COUNT_UPTO3 0x20000000 +#define QM_PDQCR_DEDICATED_PRECEDENCE 0x10000000 +#define QM_PDQCR_TYPE_MASK 0x03000000 +#define QM_PDQCR_TYPE_NULL 0x0 +#define QM_PDQCR_TYPE_PRIO_QOS 0x01000000 +#define QM_PDQCR_TYPE_ACTIVE_QOS 0x02000000 +#define QM_PDQCR_TYPE_ACTIVE 0x03000000 +#define QM_PDQCR_CHANNELS_DEDICATED 0x00008000 +#define QM_PDQCR_CHANNELS_POOL(n) (0x00008000 >> (n)) +#define QM_PDQCR_SPECIFICWQ_MASK 0x000000f7 +#define QM_PDQCR_SPECIFICWQ_DEDICATED 0x00000000 +#define QM_PDQCR_SPECIFICWQ_POOL(n) ((n) << 4) +#define QM_PDQCR_SPECIFICWQ_WQ(n) (n) +#define QM_PDQCR_FQID(n) ((n) & 0xffffff) + +/* Used by all portal interrupt registers except 'inhibit'. NB, some of these + * definitions are exported for use by the qman_irqsource_***() APIs, so are + * commented-out here. */ +#define QM_PIRQ_DQAVAIL 0x0000ffff /* Channels with frame availability */ +#if 0 +#define QM_PIRQ_CSCI 0x00100000 /* Congestion State Change */ +#define QM_PIRQ_EQCI 0x00080000 /* Enqueue Command Committed */ +#define QM_PIRQ_EQRI 0x00040000 /* EQCR Ring (below threshold) */ +#define QM_PIRQ_DQRI 0x00020000 /* DQRR Ring (non-empty) */ +#define QM_PIRQ_MRI 0x00010000 /* MR Ring (non-empty) */ +/* This mask contains all the interrupt sources that need handling except DQRI, + * ie. that if present should trigger slow-path processing. */ +#define QM_PIRQ_SLOW (QM_PIRQ_CSCI | QM_PIRQ_EQCI | QM_PIRQ_EQRI | \ + QM_PIRQ_MRI) +#endif +/* The DQAVAIL interrupt fields break down into these bits; */ +#define QM_DQAVAIL_PORTAL 0x8000 /* Portal channel */ +#define QM_DQAVAIL_POOL(n) (0x8000 >> (n)) /* Pool channel, n==[1..15] */ +#define QM_DQAVAIL_MASK 0xffff +/* This mask contains all the "irqsource" bits visible to API users */ +#define QM_PIRQ_VISIBLE (QM_PIRQ_SLOW | QM_PIRQ_DQRI) + +/* These are qm__(). So for example, qm_disable_write() means "write + * the disable register" rather than "disable the ability to write". */ +#define qm_isr_status_read(qm) __qm_isr_read(qm, qm_isr_status) +#define qm_isr_status_clear(qm, m) __qm_isr_write(qm, qm_isr_status, m) +#define qm_isr_enable_read(qm) __qm_isr_read(qm, qm_isr_enable) +#define qm_isr_enable_write(qm, v) __qm_isr_write(qm, qm_isr_enable, v) +#define qm_isr_disable_read(qm) __qm_isr_read(qm, qm_isr_disable) +#define qm_isr_disable_write(qm, v) __qm_isr_write(qm, qm_isr_disable, v) +/* TODO: unfortunate name-clash here, reword? */ +#define qm_isr_inhibit(qm) __qm_isr_write(qm, qm_isr_inhibit, 1) +#define qm_isr_uninhibit(qm) __qm_isr_write(qm, qm_isr_inhibit, 0) --- linux-3.13.0.orig/drivers/staging/fsl_qbman/qman_test.c +++ linux-3.13.0/drivers/staging/fsl_qbman/qman_test.c @@ -0,0 +1,61 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 "qman_test.h" + +MODULE_AUTHOR("Geoff Thorpe"); +MODULE_LICENSE("Dual BSD/GPL"); +MODULE_DESCRIPTION("Qman testing"); + +static int test_init(void) +{ + int loop = 1; + while(loop--) { +#ifdef CONFIG_FSL_QMAN_TEST_STASH_POTATO + qman_test_hotpotato(); +#endif +#ifdef CONFIG_FSL_QMAN_TEST_HIGH + qman_test_high(); +#endif +#ifdef CONFIG_FSL_QMAN_TEST_ERRATA + qman_test_errata(); +#endif + } + return 0; +} + +static void test_exit(void) +{ +} + +module_init(test_init); +module_exit(test_exit); + --- linux-3.13.0.orig/drivers/staging/fsl_qbman/qman_test.h +++ linux-3.13.0/drivers/staging/fsl_qbman/qman_test.h @@ -0,0 +1,85 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 + +void qman_test_hotpotato(void); +void qman_test_high(void); +void qman_test_errata(void); +void qman_test_fqrange(void); + +static inline void __hexdump(unsigned long start, unsigned long end, + unsigned long p, size_t sz, const unsigned char *c) +{ + while (start < end) { + unsigned int pos = 0; + char buf[64]; + int nl = 0; + pos += sprintf(buf + pos, "%08lx: ", start); + do { + if ((start < p) || (start >= (p + sz))) + pos += sprintf(buf + pos, ".."); + else + pos += sprintf(buf + pos, "%02x", *(c++)); + if (!(++start & 15)) { + buf[pos++] = '\n'; + nl = 1; + } else { + nl = 0; + if(!(start & 1)) + buf[pos++] = ' '; + if(!(start & 3)) + buf[pos++] = ' '; + } + } while (start & 15); + if (!nl) + buf[pos++] = '\n'; + buf[pos] = '\0'; + pr_info("%s", buf); + } +} +static inline void hexdump(const void *ptr, size_t sz) +{ + unsigned long p = (unsigned long)ptr; + unsigned long start = p & ~(unsigned long)15; + unsigned long end = (p + sz + 15) & ~(unsigned long)15; + const unsigned char *c = ptr; + __hexdump(start, end, p, sz, c); +} + --- linux-3.13.0.orig/drivers/staging/fsl_qbman/qman_test_errata.c +++ linux-3.13.0/drivers/staging/fsl_qbman/qman_test_errata.c @@ -0,0 +1,248 @@ +/* Copyright 2009-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 "qman_test.h" + +/* Waiting on a model fix from virtutech */ +#if 0 +/*********************/ +/* generic utilities */ +/*********************/ + +static int do_enqueues(struct qman_fq *fq, const struct qm_fd *fds, int num) +{ + int ret = 0; + u32 flags = QMAN_ENQUEUE_FLAG_WAIT; + while (num-- && !ret) { + if (!num) + flags |= QMAN_ENQUEUE_FLAG_WAIT_SYNC; + pr_info("about to enqueue\n"); + ret = qman_enqueue(fq, fds++, flags); + } + return ret; +} + +/***************************/ +/* "tdthresh" test (QMAN6) */ +/***************************/ + +/* First thresh == 201 * (2^21) == 421527552 (0x19200000) */ +#define THRESH_MANT 201 +#define THRESH_EXP 21 + +/* first three equal thresh, fourth takes us over */ +static const struct qm_fd td_eq[] = { + QM_FD_FMT_20(0, 0x34, 0x87654321, QM_FD_SG, 0, 79321), + QM_FD_FMT_29(0, 0x34, 0x87654321, QM_FD_COMPOUND, 29923679), + QM_FD_FMT_29(0, 0x0d, 0xacadabba, QM_FD_CONTIG_BIG, 391524552), + QM_FD_FMT_20(0, 0x0b, 0x0fa10ada, QM_FD_CONTIG, 0, 1), + QM_FD_FMT_20(0, 0x0b, 0x0fa10ada, QM_FD_CONTIG, 0, 1), +}; + +struct tdthresh_fq { + struct qman_fq fq; + int got_ern; + int num_dqrr; +}; + +static enum qman_cb_dqrr_result cb_dqrr_tdthresh(struct qman_portal *p, + struct qman_fq *__fq, + const struct qm_dqrr_entry *dqrr) +{ + struct tdthresh_fq *t = (void *)__fq; + t->num_dqrr++; + return qman_cb_dqrr_consume; +} + +static void cb_ern_tdthresh(struct qman_portal *p, struct qman_fq *__fq, + const struct qm_mr_entry *mr) +{ + struct tdthresh_fq *t = (void *)__fq; + t->got_ern = 1; +} + +static void test_tdthresh(void) +{ + struct tdthresh_fq tdfq = { + .fq = { + .cb = { + .dqrr = cb_dqrr_tdthresh, + .ern = cb_ern_tdthresh + } + }, + .got_ern = 0, + .num_dqrr = 0 + }; + struct qman_fq *fq = &tdfq.fq; + struct qm_mcc_initfq opts = { + .we_mask = QM_INITFQ_WE_FQCTRL | QM_INITFQ_WE_TDTHRESH, + .fqd = { + .fq_ctrl = QM_FQCTRL_TDE, + .td = { + .exp = THRESH_EXP, + .mant = THRESH_MANT, + } + } + }; + struct qm_fqd fqd; + u32 flags; + int ret = qman_create_fq(0, QMAN_FQ_FLAG_DYNAMIC_FQID, fq); + BUG_ON(ret); + /* leave it parked, and set it for local dequeue (loopback) */ + ret = qman_init_fq(fq, QMAN_INITFQ_FLAG_LOCAL, &opts); + BUG_ON(ret); + /* query it back and confirm everything is ok */ + ret = qman_query_fq(fq, &fqd); + BUG_ON(ret); + if (fqd.fq_ctrl != opts.fqd.fq_ctrl) { + pr_err("queried fq_ctrl=%x, should be=%x\n", fqd.fq_ctrl, + opts.fqd.fq_ctrl); + panic("fail"); + } + if (memcmp(&fqd.td, &opts.fqd.td, sizeof(fqd.td))) { + pr_err("queried td_thresh=%x:%x, should be=%x:%x\n", + fqd.td.exp, fqd.td.mant, + opts.fqd.td.exp, opts.fqd.td.mant); + panic("fail"); + } + ret = do_enqueues(fq, td_eq, 3); + BUG_ON(ret); + pr_info(" tdthresh: eq[0..2] complete\n"); + /* enqueues are flushed, so if Qman is going to throw an ERN, the irq + * assertion will already be on its way. */ + msleep(500); + BUG_ON(tdfq.got_ern); + pr_info(" tdthresh: eq <= thresh OK\n"); + ret = do_enqueues(fq, td_eq + 3, 1); + BUG_ON(ret); + pr_info(" tdthresh: eq[3] complete\n"); + /* enqueues are flushed, so if Qman is going to throw an ERN, the irq + * assertion will already be on its way. */ + msleep(500); + BUG_ON(tdfq.got_ern); + pr_info(" tdthresh: eq <= thresh OK\n"); + ret = do_enqueues(fq, td_eq + 4, 1); + BUG_ON(ret); + pr_info(" tdthresh: eq[4] complete\n"); + /* enqueues are flushed, so if Qman is going to throw an ERN, the irq + * assertion will already be on its way. */ + msleep(500); + BUG_ON(!tdfq.got_ern); + pr_info(" tdthresh: eq > thresh OK\n"); + ret = qman_volatile_dequeue(fq, + QMAN_VOLATILE_FLAG_WAIT | QMAN_VOLATILE_FLAG_FINISH, + QM_VDQCR_NUMFRAMES_TILLEMPTY); + BUG_ON(ret); + BUG_ON(tdfq.num_dqrr != 4); + ret = qman_retire_fq(fq, &flags); + BUG_ON(ret); + BUG_ON(flags); + ret = qman_oos_fq(fq); + BUG_ON(ret); +} + +/****************************/ +/* "ern code6" test (QMAN9) */ +/****************************/ + +/* Dummy FD to enqueue out-of-sequence and generate an ERN */ +static const struct qm_fd c6_eq = + QM_FD_FMT_29(0, 0xba, 0xdeadbeef, QM_FD_CONTIG_BIG, 1234); + +struct code6_fq { + struct qman_fq fq; + struct qm_mr_entry mr; + struct completion got_ern; +}; + +static void cb_ern_code6(struct qman_portal *p, struct qman_fq *__fq, + const struct qm_mr_entry *mr) +{ + struct code6_fq *c = (void *)__fq; + memcpy(&c->mr, mr, sizeof(*mr)); + complete(&c->got_ern); +} + +static void test_ern_code6(void) +{ + struct code6_fq c6fq = { + .fq = { + .cb = { + .ern = cb_ern_code6 + } + }, + .got_ern = COMPLETION_INITIALIZER(c6fq.got_ern) + }; + struct qman_fq *fq = &c6fq.fq; + struct qm_mcc_initfq opts = { + .we_mask = QM_INITFQ_WE_FQCTRL, + .fqd = { + .fq_ctrl = QM_FQCTRL_ORP + } + }; + u32 flags; + int ret = qman_create_fq(0, QMAN_FQ_FLAG_DYNAMIC_FQID, fq); + BUG_ON(ret); + /* leave it parked, and set it for local dequeue (loopback) */ + ret = qman_init_fq(fq, QMAN_INITFQ_FLAG_LOCAL, &opts); + BUG_ON(ret); + /* enqueue with ORP using a "too early" sequence number */ + ret = qman_enqueue_orp(fq, &c6_eq, + QMAN_ENQUEUE_FLAG_WAIT | QMAN_ENQUEUE_FLAG_WAIT_SYNC, fq, 5); + BUG_ON(ret); + pr_info(" code6: eq complete\n"); + ret = qman_retire_fq(fq, &flags); + BUG_ON(ret); + pr_info(" code6: retire complete, flags=%08x\n", flags); + BUG_ON(flags != QMAN_FQ_STATE_ORL); + wait_for_completion(&c6fq.got_ern); + pr_info(" code6: ERN, VERB=0x%02x, RC==0x%02x\n", + c6fq.mr.verb, c6fq.mr.ern.rc); + BUG_ON(c6fq.mr.verb & 0x20); + BUG_ON((c6fq.mr.ern.rc & QM_MR_RC_MASK) != QM_MR_RC_ORPWINDOW_RETIRED); + ret = qman_oos_fq(fq); + BUG_ON(ret); +} + +void qman_test_errata(void) +{ + pr_info("Testing Qman errata handling ...\n"); + test_tdthresh(); + test_ern_code6(); + pr_info(" ... SUCCESS!\n"); +} +#else +void qman_test_errata(void) +{ + pr_info("Qman errata-handling test disabled, waiting on model fix\n"); +} +#endif + --- linux-3.13.0.orig/drivers/staging/fsl_qbman/qman_test_high.c +++ linux-3.13.0/drivers/staging/fsl_qbman/qman_test_high.c @@ -0,0 +1,222 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 "qman_test.h" + +/*************/ +/* constants */ +/*************/ + +#define CGR_ID 27 +#define POOL_ID 2 +#define FQ_FLAGS QMAN_FQ_FLAG_DYNAMIC_FQID +#define NUM_ENQUEUES 10 +#define NUM_PARTIAL 4 +#define PORTAL_SDQCR (QM_SDQCR_SOURCE_CHANNELS | \ + QM_SDQCR_TYPE_PRIO_QOS | \ + QM_SDQCR_TOKEN_SET(0x98) | \ + QM_SDQCR_CHANNELS_DEDICATED | \ + QM_SDQCR_CHANNELS_POOL(POOL_ID)) +#define PORTAL_OPAQUE (void *)0xf00dbeef +#define VDQCR_FLAGS (QMAN_VOLATILE_FLAG_WAIT | QMAN_VOLATILE_FLAG_FINISH) + +/*************************************/ +/* Predeclarations (eg. for fq_base) */ +/*************************************/ + +static enum qman_cb_dqrr_result cb_dqrr(struct qman_portal *, + struct qman_fq *, + const struct qm_dqrr_entry *); +static void cb_ern(struct qman_portal *, struct qman_fq *, + const struct qm_mr_entry *); +static void cb_dc_ern(struct qman_portal *, struct qman_fq *, + const struct qm_mr_entry *); +static void cb_fqs(struct qman_portal *, struct qman_fq *, + const struct qm_mr_entry *); + +/***************/ +/* global vars */ +/***************/ + +static struct qm_fd fd, fd_dq; +static struct qman_fq fq_base = { + .cb.dqrr = cb_dqrr, + .cb.ern = cb_ern, + .cb.dc_ern = cb_dc_ern, + .cb.fqs = cb_fqs +}; +static DECLARE_WAIT_QUEUE_HEAD(waitqueue); +static int retire_complete, sdqcr_complete; + +/**********************/ +/* internal functions */ +/**********************/ + +/* Helpers for initialising and "incrementing" a frame descriptor */ +static void fd_init(struct qm_fd *__fd) +{ + qm_fd_addr_set64(__fd, 0xabdeadbeefLLU); + __fd->format = qm_fd_contig_big; + __fd->length29 = 0x0000ffff; + __fd->cmd = 0xfeedf00d; +} + +static void fd_inc(struct qm_fd *__fd) +{ + u64 t = qm_fd_addr_get64(__fd); + int z = t >> 40; + t <<= 1; + if (z) + t |= 1; + qm_fd_addr_set64(__fd, t); + __fd->length29--; + __fd->cmd++; +} + +/* The only part of the 'fd' we can't memcmp() is the ppid */ +static int fd_cmp(const struct qm_fd *a, const struct qm_fd *b) +{ + int r = (qm_fd_addr_get64(a) == qm_fd_addr_get64(b)) ? 0 : -1; + if (!r) + r = a->format - b->format; + if (!r) + r = a->opaque - b->opaque; + if (!r) + r = a->cmd - b->cmd; + return r; +} + +/********/ +/* test */ +/********/ + +static void do_enqueues(struct qman_fq *fq) +{ + unsigned int loop; + for (loop = 0; loop < NUM_ENQUEUES; loop++) { + if (qman_enqueue(fq, &fd, QMAN_ENQUEUE_FLAG_WAIT | + (((loop + 1) == NUM_ENQUEUES) ? + QMAN_ENQUEUE_FLAG_WAIT_SYNC : 0))) + panic("qman_enqueue() failed\n"); + fd_inc(&fd); + } +} + +void qman_test_high(void) +{ + int flags, res; + struct qman_fq *fq = &fq_base; + + pr_info("qman_test_high starting\n"); + fd_init(&fd); + fd_init(&fd_dq); + + /* Initialise (parked) FQ */ + if (qman_create_fq(0, FQ_FLAGS, fq)) + panic("qman_create_fq() failed\n"); + if (qman_init_fq(fq, QMAN_INITFQ_FLAG_LOCAL, NULL)) + panic("qman_init_fq() failed\n"); + + /* Do enqueues + VDQCR, twice. (Parked FQ) */ + do_enqueues(fq); + pr_info("VDQCR (till-empty);\n"); + if (qman_volatile_dequeue(fq, VDQCR_FLAGS, + QM_VDQCR_NUMFRAMES_TILLEMPTY)) + panic("qman_volatile_dequeue() failed\n"); + do_enqueues(fq); + pr_info("VDQCR (%d of %d);\n", NUM_PARTIAL, NUM_ENQUEUES); + if (qman_volatile_dequeue(fq, VDQCR_FLAGS, + QM_VDQCR_NUMFRAMES_SET(NUM_PARTIAL))) + panic("qman_volatile_dequeue() failed\n"); + pr_info("VDQCR (%d of %d);\n", NUM_ENQUEUES - NUM_PARTIAL, + NUM_ENQUEUES); + if (qman_volatile_dequeue(fq, VDQCR_FLAGS, + QM_VDQCR_NUMFRAMES_SET(NUM_ENQUEUES - NUM_PARTIAL))) + panic("qman_volatile_dequeue() failed\n"); + + do_enqueues(fq); + pr_info("scheduled dequeue (till-empty)\n"); + if (qman_schedule_fq(fq)) + panic("qman_schedule_fq() failed\n"); + wait_event(waitqueue, sdqcr_complete); + + /* Retire and OOS the FQ */ + res = qman_retire_fq(fq, &flags); + if (res < 0) + panic("qman_retire_fq() failed\n"); + wait_event(waitqueue, retire_complete); + if (flags & QMAN_FQ_STATE_BLOCKOOS) + panic("leaking frames\n"); + if (qman_oos_fq(fq)) + panic("qman_oos_fq() failed\n"); + qman_destroy_fq(fq, 0); + pr_info("qman_test_high finished\n"); +} + +static enum qman_cb_dqrr_result cb_dqrr(struct qman_portal *p, + struct qman_fq *fq, + const struct qm_dqrr_entry *dq) +{ + if (fd_cmp(&fd_dq, &dq->fd)) { + pr_err("BADNESS: dequeued frame doesn't match;\n"); + BUG(); + } + fd_inc(&fd_dq); + if (!(dq->stat & QM_DQRR_STAT_UNSCHEDULED) && !fd_cmp(&fd_dq, &fd)) { + sdqcr_complete = 1; + wake_up(&waitqueue); + } + return qman_cb_dqrr_consume; +} + +static void cb_ern(struct qman_portal *p, struct qman_fq *fq, + const struct qm_mr_entry *msg) +{ + panic("cb_ern() unimplemented"); +} + +static void cb_dc_ern(struct qman_portal *p, struct qman_fq *fq, + const struct qm_mr_entry *msg) +{ + panic("cb_dc_ern() unimplemented"); +} + +static void cb_fqs(struct qman_portal *p, struct qman_fq *fq, + const struct qm_mr_entry *msg) +{ + u8 verb = (msg->verb & QM_MR_VERB_TYPE_MASK); + if ((verb != QM_MR_VERB_FQRN) && (verb != QM_MR_VERB_FQRNI)) + panic("unexpected FQS message"); + pr_info("Retirement message received\n"); + retire_complete = 1; + wake_up(&waitqueue); +} + --- linux-3.13.0.orig/drivers/staging/fsl_qbman/qman_test_hotpotato.c +++ linux-3.13.0/drivers/staging/fsl_qbman/qman_test_hotpotato.c @@ -0,0 +1,497 @@ +/* Copyright 2009-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 "qman_test.h" + +/* Algorithm: + * + * Each cpu will have HP_PER_CPU "handlers" set up, each of which incorporates + * an rx/tx pair of FQ objects (both of which are stashed on dequeue). The + * organisation of FQIDs is such that the HP_PER_CPU*NUM_CPUS handlers will + * shuttle a "hot potato" frame around them such that every forwarding action + * moves it from one cpu to another. (The use of more than one handler per cpu + * is to allow enough handlers/FQs to truly test the significance of caching - + * ie. when cache-expiries are occuring.) + * + * The "hot potato" frame content will be HP_NUM_WORDS*4 bytes in size, and the + * first and last words of the frame data will undergo a transformation step on + * each forwarding action. To achieve this, each handler will be assigned a + * 32-bit "mixer", that is produced using a 32-bit LFSR. When a frame is + * received by a handler, the mixer of the expected sender is XOR'd into all + * words of the entire frame, which is then validated against the original + * values. Then, before forwarding, the entire frame is XOR'd with the mixer of + * the current handler. Apart from validating that the frame is taking the + * expected path, this also provides some quasi-realistic overheads to each + * forwarding action - dereferencing *all* the frame data, computation, and + * conditional branching. There is a "special" handler designated to act as the + * instigator of the test by creating an enqueuing the "hot potato" frame, and + * to determine when the test has completed by counting HP_LOOPS iterations. + * + * Init phases: + * + * 1. prepare each cpu's 'hp_cpu' struct using on_each_cpu(,,1) and link them + * into 'hp_cpu_list'. Specifically, set processor_id, allocate HP_PER_CPU + * handlers and link-list them (but do no other handler setup). + * + * 2. scan over 'hp_cpu_list' HP_PER_CPU times, the first time sets each + * hp_cpu's 'iterator' to point to its first handler. With each loop, + * allocate rx/tx FQIDs and mixer values to the hp_cpu's iterator handler + * and advance the iterator for the next loop. This includes a final fixup, + * which connects the last handler to the first (and which is why phase 2 + * and 3 are separate). + * + * 3. scan over 'hp_cpu_list' HP_PER_CPU times, the first time sets each + * hp_cpu's 'iterator' to point to its first handler. With each loop, + * initialise FQ objects and advance the iterator for the next loop. + * Moreover, do this initialisation on the cpu it applies to so that Rx FQ + * initialisation targets the correct cpu. + */ + +/* helper to run something on all cpus (can't use on_each_cpu(), as that invokes + * the fn from irq context, which is too restrictive). */ +struct bstrap { + void (*fn)(void); + atomic_t started; +}; +static int bstrap_fn(void *__bstrap) +{ + struct bstrap *bstrap = __bstrap; + atomic_inc(&bstrap->started); + bstrap->fn(); + while (!kthread_should_stop()) + msleep(1); + return 0; +} +static int on_all_cpus(void (*fn)(void)) +{ + int cpu; + for_each_cpu(cpu, cpu_online_mask) { + struct bstrap bstrap = { + .fn = fn, + .started = ATOMIC_INIT(0) + }; + struct task_struct *k = kthread_create(bstrap_fn, &bstrap, + "hotpotato%d", cpu); + int ret; + if (IS_ERR(k)) + return -ENOMEM; + kthread_bind(k, cpu); + wake_up_process(k); + /* If we call kthread_stop() before the "wake up" has had an + * effect, then the thread may exit with -EINTR without ever + * running the function. So poll until it's started before + * requesting it to stop. */ + while (!atomic_read(&bstrap.started)) + msleep(10); + ret = kthread_stop(k); + if (ret) + return ret; + } + return 0; +} + +struct hp_handler { + + /* The following data is stashed when 'rx' is dequeued; */ + /* -------------- */ + /* The Rx FQ, dequeues of which will stash the entire hp_handler */ + struct qman_fq rx; + /* The Tx FQ we should forward to */ + struct qman_fq tx; + /* The value we XOR post-dequeue, prior to validating */ + u32 rx_mixer; + /* The value we XOR pre-enqueue, after validating */ + u32 tx_mixer; + /* what the hotpotato address should be on dequeue */ + dma_addr_t addr; + u32 *frame_ptr; + + /* The following data isn't (necessarily) stashed on dequeue; */ + /* -------------- */ + u32 fqid_rx, fqid_tx; + /* list node for linking us into 'hp_cpu' */ + struct list_head node; + /* Just to check ... */ + unsigned int processor_id; +} ____cacheline_aligned; + +struct hp_cpu { + /* identify the cpu we run on; */ + unsigned int processor_id; + /* root node for the per-cpu list of handlers */ + struct list_head handlers; + /* list node for linking us into 'hp_cpu_list' */ + struct list_head node; + /* when repeatedly scanning 'hp_list', each time linking the n'th + * handlers together, this is used as per-cpu iterator state */ + struct hp_handler *iterator; +}; + +/* Each cpu has one of these */ +static DEFINE_PER_CPU(struct hp_cpu, hp_cpus); + +/* links together the hp_cpu structs, in first-come first-serve order. */ +static LIST_HEAD(hp_cpu_list); +static spinlock_t hp_lock = __SPIN_LOCK_UNLOCKED(hp_lock); + +static unsigned int hp_cpu_list_length; + +/* the "special" handler, that starts and terminates the test. */ +static struct hp_handler *special_handler; +static int loop_counter; + +/* handlers are allocated out of this, so they're properly aligned. */ +static struct kmem_cache *hp_handler_slab; + +/* this is the frame data */ +static void *__frame_ptr; +static u32 *frame_ptr; +static dma_addr_t frame_dma; + +/* the main function waits on this */ +static DECLARE_WAIT_QUEUE_HEAD(queue); + +#define HP_PER_CPU 2 +#define HP_LOOPS 8 +/* 80 bytes, like a small ethernet frame, and bleeds into a second cacheline */ +#define HP_NUM_WORDS 80 +/* First word of the LFSR-based frame data */ +#define HP_FIRST_WORD 0xabbaf00d + +static inline u32 do_lfsr(u32 prev) +{ + return (prev >> 1) ^ (-(prev & 1u) & 0xd0000001u); +} + +static void allocate_frame_data(void) +{ + u32 lfsr = HP_FIRST_WORD; + int loop; + struct platform_device *pdev = platform_device_alloc("foobar", -1); + if (!pdev) + panic("platform_device_alloc() failed"); + if (platform_device_add(pdev)) + panic("platform_device_add() failed"); + __frame_ptr = kmalloc(4 * HP_NUM_WORDS, GFP_KERNEL); + if (!__frame_ptr) + panic("kmalloc() failed"); + frame_ptr = (void *)(((unsigned long)__frame_ptr + 63) & + ~(unsigned long)63); + for (loop = 0; loop < HP_NUM_WORDS; loop++) { + frame_ptr[loop] = lfsr; + lfsr = do_lfsr(lfsr); + } + frame_dma = dma_map_single(&pdev->dev, frame_ptr, 4 * HP_NUM_WORDS, + DMA_BIDIRECTIONAL); + platform_device_del(pdev); + platform_device_put(pdev); +} + +static void deallocate_frame_data(void) +{ + kfree(__frame_ptr); +} + +static inline void process_frame_data(struct hp_handler *handler, + const struct qm_fd *fd) +{ + u32 *p = handler->frame_ptr; + u32 lfsr = HP_FIRST_WORD; + int loop; + if (qm_fd_addr_get64(fd) != handler->addr) + panic("bad frame address"); + for (loop = 0; loop < HP_NUM_WORDS; loop++, p++) { + *p ^= handler->rx_mixer; + if (*p != lfsr) + panic("corrupt frame data"); + *p ^= handler->tx_mixer; + lfsr = do_lfsr(lfsr); + } +} + +static enum qman_cb_dqrr_result normal_dqrr(struct qman_portal *portal, + struct qman_fq *fq, + const struct qm_dqrr_entry *dqrr) +{ + struct hp_handler *handler = (struct hp_handler *)fq; + + process_frame_data(handler, &dqrr->fd); + if (qman_enqueue(&handler->tx, &dqrr->fd, 0)) + panic("qman_enqueue() failed"); + return qman_cb_dqrr_consume; +} + +static enum qman_cb_dqrr_result special_dqrr(struct qman_portal *portal, + struct qman_fq *fq, + const struct qm_dqrr_entry *dqrr) +{ + struct hp_handler *handler = (struct hp_handler *)fq; + + process_frame_data(handler, &dqrr->fd); + if (++loop_counter < HP_LOOPS) { + if (qman_enqueue(&handler->tx, &dqrr->fd, 0)) + panic("qman_enqueue() failed"); + } else { + pr_info("Received final (%dth) frame\n", loop_counter); + wake_up(&queue); + } + return qman_cb_dqrr_consume; +} + +static void create_per_cpu_handlers(void) +{ + struct hp_handler *handler; + int loop; + struct hp_cpu *hp_cpu = &__get_cpu_var(hp_cpus); + + hp_cpu->processor_id = smp_processor_id(); + spin_lock(&hp_lock); + list_add_tail(&hp_cpu->node, &hp_cpu_list); + hp_cpu_list_length++; + spin_unlock(&hp_lock); + INIT_LIST_HEAD(&hp_cpu->handlers); + for (loop = 0; loop < HP_PER_CPU; loop++) { + handler = kmem_cache_alloc(hp_handler_slab, GFP_KERNEL); + if (!handler) + panic("kmem_cache_alloc() failed"); + handler->processor_id = hp_cpu->processor_id; + handler->addr = frame_dma; + handler->frame_ptr = frame_ptr; + list_add_tail(&handler->node, &hp_cpu->handlers); + } +} + +static void destroy_per_cpu_handlers(void) +{ + struct list_head *loop, *tmp; + struct hp_cpu *hp_cpu = &__get_cpu_var(hp_cpus); + + spin_lock(&hp_lock); + list_del(&hp_cpu->node); + spin_unlock(&hp_lock); + list_for_each_safe(loop, tmp, &hp_cpu->handlers) { + u32 flags; + struct hp_handler *handler = list_entry(loop, struct hp_handler, + node); + if (qman_retire_fq(&handler->rx, &flags)) + panic("qman_retire_fq(rx) failed"); + BUG_ON(flags & QMAN_FQ_STATE_BLOCKOOS); + if (qman_oos_fq(&handler->rx)) + panic("qman_oos_fq(rx) failed"); + qman_destroy_fq(&handler->rx, 0); + qman_destroy_fq(&handler->tx, 0); + qm_fq_free(handler->fqid_rx); + list_del(&handler->node); + kmem_cache_free(hp_handler_slab, handler); + } +} + +static inline u8 num_cachelines(u32 offset) +{ + u8 res = (offset + (L1_CACHE_BYTES - 1)) + / (L1_CACHE_BYTES); + if (res > 3) + return 3; + return res; +} +#define STASH_DATA_CL \ + num_cachelines(HP_NUM_WORDS * 4) +#define STASH_CTX_CL \ + num_cachelines(offsetof(struct hp_handler,fqid_rx)) + +static void init_handler(void *__handler) +{ + struct qm_mcc_initfq opts; + struct hp_handler *handler = __handler; + BUG_ON(handler->processor_id != smp_processor_id()); + /* Set up rx */ + memset(&handler->rx, 0, sizeof(handler->rx)); + if (handler == special_handler) + handler->rx.cb.dqrr = special_dqrr; + else + handler->rx.cb.dqrr = normal_dqrr; + if (qman_create_fq(handler->fqid_rx, 0, &handler->rx)) + panic("qman_create_fq(rx) failed"); + memset(&opts, 0, sizeof(opts)); + opts.we_mask = QM_INITFQ_WE_FQCTRL | QM_INITFQ_WE_CONTEXTA; + opts.fqd.fq_ctrl = QM_FQCTRL_CTXASTASHING; + opts.fqd.context_a.stashing.data_cl = STASH_DATA_CL; + opts.fqd.context_a.stashing.context_cl = STASH_CTX_CL; + if (qman_init_fq(&handler->rx, QMAN_INITFQ_FLAG_SCHED | + QMAN_INITFQ_FLAG_LOCAL, &opts)) + panic("qman_init_fq(rx) failed"); + /* Set up tx */ + memset(&handler->tx, 0, sizeof(handler->tx)); + if (qman_create_fq(handler->fqid_tx, QMAN_FQ_FLAG_NO_MODIFY, + &handler->tx)) + panic("qman_create_fq(tx) failed"); +} + +static void init_phase2(void) +{ + int loop; + u32 fqid = 0; + u32 lfsr = 0xdeadbeef; + struct hp_cpu *hp_cpu; + struct hp_handler *handler; + + for (loop = 0; loop < HP_PER_CPU; loop++) { + list_for_each_entry(hp_cpu, &hp_cpu_list, node) { + if (!loop) + hp_cpu->iterator = list_first_entry( + &hp_cpu->handlers, + struct hp_handler, node); + else + hp_cpu->iterator = list_entry( + hp_cpu->iterator->node.next, + struct hp_handler, node); + /* Rx FQID is the previous handler's Tx FQID */ + hp_cpu->iterator->fqid_rx = fqid; + /* Allocate new FQID for Tx */ + fqid = qm_fq_new(); + if (!fqid) + panic("qm_fq_new() failed"); + hp_cpu->iterator->fqid_tx = fqid; + /* Rx mixer is the previous handler's Tx mixer */ + hp_cpu->iterator->rx_mixer = lfsr; + /* Get new mixer for Tx */ + lfsr = do_lfsr(lfsr); + hp_cpu->iterator->tx_mixer = lfsr; + } + } + /* Fix up the first handler (fqid_rx==0, rx_mixer=0xdeadbeef) */ + hp_cpu = list_first_entry(&hp_cpu_list, struct hp_cpu, node); + handler = list_first_entry(&hp_cpu->handlers, struct hp_handler, node); + BUG_ON((handler->fqid_rx != 0) || (handler->rx_mixer != 0xdeadbeef)); + handler->fqid_rx = fqid; + handler->rx_mixer = lfsr; + /* and tag it as our "special" handler */ + special_handler = handler; +} + +static void init_phase3(void) +{ + int loop; + struct hp_cpu *hp_cpu; + + for (loop = 0; loop < HP_PER_CPU; loop++) { + list_for_each_entry(hp_cpu, &hp_cpu_list, node) { + if (!loop) + hp_cpu->iterator = list_first_entry( + &hp_cpu->handlers, + struct hp_handler, node); + else + hp_cpu->iterator = list_entry( + hp_cpu->iterator->node.next, + struct hp_handler, node); + preempt_disable(); + if (hp_cpu->processor_id == smp_processor_id()) + init_handler(hp_cpu->iterator); + else + smp_call_function_single(hp_cpu->processor_id, + init_handler, hp_cpu->iterator, 1); + preempt_enable(); + } + } +} + +static void send_first_frame(void *ignore) +{ + u32 *p = special_handler->frame_ptr; + u32 lfsr = HP_FIRST_WORD; + int loop; + struct qm_fd fd; + + BUG_ON(special_handler->processor_id != smp_processor_id()); + memset(&fd, 0, sizeof(fd)); + qm_fd_addr_set64(&fd, special_handler->addr); + fd.format = qm_fd_contig_big; + fd.length29 = HP_NUM_WORDS * 4; + for (loop = 0; loop < HP_NUM_WORDS; loop++, p++) { + if (*p != lfsr) + panic("corrupt frame data"); + *p ^= special_handler->tx_mixer; + lfsr = do_lfsr(lfsr); + } + pr_info("Sending first frame\n"); + if (qman_enqueue(&special_handler->tx, &fd, 0)) + panic("qman_enqueue() failed"); +} + +void qman_test_hotpotato(void) +{ + if (cpumask_weight(cpu_online_mask) < 2) { + pr_info("qman_test_hotpotato, skip - only 1 CPU\n"); + return; + } + + pr_info("qman_test_hotpotato starting\n"); + + hp_cpu_list_length = 0; + loop_counter = 0; + hp_handler_slab = kmem_cache_create("hp_handler_slab", + sizeof(struct hp_handler), L1_CACHE_BYTES, + SLAB_HWCACHE_ALIGN, NULL); + if (!hp_handler_slab) + panic("kmem_cache_create() failed"); + + allocate_frame_data(); + + /* Init phase 1 */ + pr_info("Creating %d handlers per cpu...\n", HP_PER_CPU); + if (on_all_cpus(create_per_cpu_handlers)) + panic("on_each_cpu() failed"); + pr_info("Number of cpus: %d, total of %d handlers\n", + hp_cpu_list_length, hp_cpu_list_length * HP_PER_CPU); + + init_phase2(); + + init_phase3(); + + preempt_disable(); + if (special_handler->processor_id == smp_processor_id()) + send_first_frame(NULL); + else + smp_call_function_single(special_handler->processor_id, + send_first_frame, NULL, 1); + preempt_enable(); + + wait_event(queue, loop_counter == HP_LOOPS); + deallocate_frame_data(); + if (on_all_cpus(destroy_per_cpu_handlers)) + panic("on_each_cpu() failed"); + kmem_cache_destroy(hp_handler_slab); + pr_info("qman_test_hotpotato finished\n"); +} + --- linux-3.13.0.orig/drivers/staging/fsl_qbman/qman_utility.c +++ linux-3.13.0/drivers/staging/fsl_qbman/qman_utility.c @@ -0,0 +1,131 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * 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 Freescale Semiconductor nor the + * names of its contributors may 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 Freescale Semiconductor ``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 Freescale Semiconductor 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 "qman_private.h" + +/* ----------------- */ +/* --- FQID Pool --- */ + +struct qman_fqid_pool { + /* Base and size of the FQID range */ + u32 fqid_base; + u32 total; + /* Number of FQIDs currently "allocated" */ + u32 used; + /* Allocation optimisation. When 'usedfqid_base = fqid_start; + pool->total = num; + pool->used = 0; + pool->next = 0; + pool->bits = kmalloc(QNUM_BYTES(num), GFP_KERNEL); + if (!pool->bits) { + kfree(pool); + return NULL; + } + memset(pool->bits, 0, QNUM_BYTES(num)); + /* If num is not an even multiple of QLONG_BITS (or even 8, for + * byte-oriented searching) then we fill the trailing bits with 1, to + * make them look allocated (permanently). */ + for (i = num + 1; i < QNUM_BITS(num); i++) + set_bit(i, pool->bits); + return pool; +} +EXPORT_SYMBOL(qman_fqid_pool_create); + +int qman_fqid_pool_destroy(struct qman_fqid_pool *pool) +{ + int ret = pool->used; + kfree(pool->bits); + kfree(pool); + return ret; +} +EXPORT_SYMBOL(qman_fqid_pool_destroy); + +int qman_fqid_pool_alloc(struct qman_fqid_pool *pool, u32 *fqid) +{ + int ret; + if (pool->used == pool->total) + return -ENOMEM; + *fqid = pool->fqid_base + pool->next; + ret = test_and_set_bit(pool->next, pool->bits); + BUG_ON(ret); + if (++pool->used == pool->total) + return 0; + pool->next = find_next_zero_bit(pool->bits, pool->total, pool->next); + if (pool->next >= pool->total) + pool->next = find_first_zero_bit(pool->bits, pool->total); + BUG_ON(pool->next >= pool->total); + return 0; +} +EXPORT_SYMBOL(qman_fqid_pool_alloc); + +void qman_fqid_pool_free(struct qman_fqid_pool *pool, u32 fqid) +{ + int ret; + + fqid -= pool->fqid_base; + ret = test_and_clear_bit(fqid, pool->bits); + BUG_ON(!ret); + if (pool->used-- == pool->total) + pool->next = fqid; +} +EXPORT_SYMBOL(qman_fqid_pool_free); + +u32 qman_fqid_pool_used(struct qman_fqid_pool *pool) +{ + return pool->used; +} +EXPORT_SYMBOL(qman_fqid_pool_used); + --- linux-3.13.0.orig/drivers/staging/iio/accel/sca3000_ring.c +++ linux-3.13.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((u16 *)rx + i); if (copy_to_user(buf, rx, num_read)) --- linux-3.13.0.orig/drivers/staging/iio/adc/ad7291.c +++ linux-3.13.0/drivers/staging/iio/adc/ad7291.c @@ -465,7 +465,7 @@ struct ad7291_platform_data *pdata = client->dev.platform_data; struct ad7291_chip_info *chip; struct iio_dev *indio_dev; - int ret = 0; + int ret; indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*chip)); if (!indio_dev) @@ -475,7 +475,7 @@ if (pdata && pdata->use_external_ref) { chip->reg = devm_regulator_get(&client->dev, "vref"); if (IS_ERR(chip->reg)) - return ret; + return PTR_ERR(chip->reg); ret = regulator_enable(chip->reg); if (ret) --- linux-3.13.0.orig/drivers/staging/iio/adc/ad799x_core.c +++ linux-3.13.0/drivers/staging/iio/adc/ad799x_core.c @@ -393,7 +393,7 @@ }, { .type = IIO_EV_TYPE_THRESH, .dir = IIO_EV_DIR_FALLING, - .mask_separate = BIT(IIO_EV_INFO_VALUE), + .mask_separate = BIT(IIO_EV_INFO_VALUE) | BIT(IIO_EV_INFO_ENABLE), }, { .type = IIO_EV_TYPE_THRESH, @@ -588,7 +588,8 @@ return 0; error_free_irq: - free_irq(client->irq, indio_dev); + if (client->irq > 0) + free_irq(client->irq, indio_dev); error_cleanup_ring: ad799x_ring_cleanup(indio_dev); error_disable_reg: --- linux-3.13.0.orig/drivers/staging/iio/adc/lpc32xx_adc.c +++ linux-3.13.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-3.13.0.orig/drivers/staging/iio/adc/mxs-lradc.c +++ linux-3.13.0/drivers/staging/iio/adc/mxs-lradc.c @@ -156,11 +156,17 @@ struct completion completion; /* - * Touchscreen LRADC channels receives a private slot in the CTRL4 - * register, the slot #7. Therefore only 7 slots instead of 8 in the - * CTRL4 register can be mapped to LRADC channels when using the - * touchscreen. - * + * When the touchscreen is enabled, we give it two private virtual + * channels: #6 and #7. This means that only 6 virtual channels (instead + * of 8) will be available for buffered capture. + */ +#define TOUCHSCREEN_VCHANNEL1 7 +#define TOUCHSCREEN_VCHANNEL2 6 +#define BUFFER_VCHANS_LIMITED 0x3f +#define BUFFER_VCHANS_ALL 0xff + u8 buffer_vchans; + + /* * Furthermore, certain LRADC channels are shared between touchscreen * and/or touch-buttons and generic LRADC block. Therefore when using * either of these, these channels are not available for the regular @@ -283,6 +289,9 @@ #define LRADC_CTRL4 0x140 #define LRADC_CTRL4_LRADCSELECT_MASK(n) (0xf << ((n) * 4)) #define LRADC_CTRL4_LRADCSELECT_OFFSET(n) ((n) * 4) +#define LRADC_CTRL4_LRADCSELECT(n, x) \ + (((x) << LRADC_CTRL4_LRADCSELECT_OFFSET(n)) & \ + LRADC_CTRL4_LRADCSELECT_MASK(n)) #define LRADC_RESOLUTION 12 #define LRADC_SINGLE_SAMPLE_MASK ((1 << LRADC_RESOLUTION) - 1) @@ -364,6 +373,14 @@ LRADC_STATUS_TOUCH_DETECT_RAW); } +static void mxs_lradc_map_channel(struct mxs_lradc *lradc, unsigned vch, + unsigned ch) +{ + mxs_lradc_reg_clear(lradc, LRADC_CTRL4_LRADCSELECT_MASK(vch), + LRADC_CTRL4); + mxs_lradc_reg_set(lradc, LRADC_CTRL4_LRADCSELECT(vch, ch), LRADC_CTRL4); +} + static void mxs_lradc_setup_ts_channel(struct mxs_lradc *lradc, unsigned ch) { /* @@ -391,12 +408,8 @@ LRADC_DELAY_DELAY(lradc->over_sample_delay - 1), LRADC_DELAY(3)); - mxs_lradc_reg_clear(lradc, LRADC_CTRL1_LRADC_IRQ(2) | - LRADC_CTRL1_LRADC_IRQ(3) | LRADC_CTRL1_LRADC_IRQ(4) | - LRADC_CTRL1_LRADC_IRQ(5), LRADC_CTRL1); + mxs_lradc_reg_clear(lradc, LRADC_CTRL1_LRADC_IRQ(ch), LRADC_CTRL1); - /* wake us again, when the complete conversion is done */ - mxs_lradc_reg_set(lradc, LRADC_CTRL1_LRADC_IRQ_EN(ch), LRADC_CTRL1); /* * after changing the touchscreen plates setting * the signals need some initial time to settle. Start the @@ -449,12 +462,8 @@ LRADC_DELAY_DELAY(lradc->over_sample_delay - 1), LRADC_DELAY(3)); - mxs_lradc_reg_clear(lradc, LRADC_CTRL1_LRADC_IRQ(2) | - LRADC_CTRL1_LRADC_IRQ(3) | LRADC_CTRL1_LRADC_IRQ(4) | - LRADC_CTRL1_LRADC_IRQ(5), LRADC_CTRL1); + mxs_lradc_reg_clear(lradc, LRADC_CTRL1_LRADC_IRQ(ch2), LRADC_CTRL1); - /* wake us again, when the conversions are done */ - mxs_lradc_reg_set(lradc, LRADC_CTRL1_LRADC_IRQ_EN(ch2), LRADC_CTRL1); /* * after changing the touchscreen plates setting * the signals need some initial time to settle. Start the @@ -519,36 +528,6 @@ #define TS_CH_XM 4 #define TS_CH_YM 5 -static int mxs_lradc_read_ts_channel(struct mxs_lradc *lradc) -{ - u32 reg; - int val; - - reg = readl(lradc->base + LRADC_CTRL1); - - /* only channels 3 to 5 are of interest here */ - if (reg & LRADC_CTRL1_LRADC_IRQ(TS_CH_YP)) { - mxs_lradc_reg_clear(lradc, LRADC_CTRL1_LRADC_IRQ_EN(TS_CH_YP) | - LRADC_CTRL1_LRADC_IRQ(TS_CH_YP), LRADC_CTRL1); - val = mxs_lradc_read_raw_channel(lradc, TS_CH_YP); - } else if (reg & LRADC_CTRL1_LRADC_IRQ(TS_CH_XM)) { - mxs_lradc_reg_clear(lradc, LRADC_CTRL1_LRADC_IRQ_EN(TS_CH_XM) | - LRADC_CTRL1_LRADC_IRQ(TS_CH_XM), LRADC_CTRL1); - val = mxs_lradc_read_raw_channel(lradc, TS_CH_XM); - } else if (reg & LRADC_CTRL1_LRADC_IRQ(TS_CH_YM)) { - mxs_lradc_reg_clear(lradc, LRADC_CTRL1_LRADC_IRQ_EN(TS_CH_YM) | - LRADC_CTRL1_LRADC_IRQ(TS_CH_YM), LRADC_CTRL1); - val = mxs_lradc_read_raw_channel(lradc, TS_CH_YM); - } else { - return -EIO; - } - - mxs_lradc_reg_wrt(lradc, 0, LRADC_DELAY(2)); - mxs_lradc_reg_wrt(lradc, 0, LRADC_DELAY(3)); - - return val; -} - /* * YP(open)--+-------------+ * | |--+ @@ -592,7 +571,8 @@ mxs_lradc_reg_set(lradc, mxs_lradc_drive_x_plate(lradc), LRADC_CTRL0); lradc->cur_plate = LRADC_SAMPLE_X; - mxs_lradc_setup_ts_channel(lradc, TS_CH_YP); + mxs_lradc_map_channel(lradc, TOUCHSCREEN_VCHANNEL1, TS_CH_YP); + mxs_lradc_setup_ts_channel(lradc, TOUCHSCREEN_VCHANNEL1); } /* @@ -613,7 +593,8 @@ mxs_lradc_reg_set(lradc, mxs_lradc_drive_y_plate(lradc), LRADC_CTRL0); lradc->cur_plate = LRADC_SAMPLE_Y; - mxs_lradc_setup_ts_channel(lradc, TS_CH_XM); + mxs_lradc_map_channel(lradc, TOUCHSCREEN_VCHANNEL1, TS_CH_XM); + mxs_lradc_setup_ts_channel(lradc, TOUCHSCREEN_VCHANNEL1); } /* @@ -634,7 +615,10 @@ mxs_lradc_reg_set(lradc, mxs_lradc_drive_pressure(lradc), LRADC_CTRL0); lradc->cur_plate = LRADC_SAMPLE_PRESSURE; - mxs_lradc_setup_ts_pressure(lradc, TS_CH_XP, TS_CH_YM); + mxs_lradc_map_channel(lradc, TOUCHSCREEN_VCHANNEL1, TS_CH_YM); + mxs_lradc_map_channel(lradc, TOUCHSCREEN_VCHANNEL2, TS_CH_XP); + mxs_lradc_setup_ts_pressure(lradc, TOUCHSCREEN_VCHANNEL2, + TOUCHSCREEN_VCHANNEL1); } static void mxs_lradc_enable_touch_detection(struct mxs_lradc *lradc) @@ -647,6 +631,19 @@ mxs_lradc_reg_set(lradc, LRADC_CTRL1_TOUCH_DETECT_IRQ_EN, LRADC_CTRL1); } +static void mxs_lradc_start_touch_event(struct mxs_lradc *lradc) +{ + mxs_lradc_reg_clear(lradc, LRADC_CTRL1_TOUCH_DETECT_IRQ_EN, + LRADC_CTRL1); + mxs_lradc_reg_set(lradc, + LRADC_CTRL1_LRADC_IRQ_EN(TOUCHSCREEN_VCHANNEL1), LRADC_CTRL1); + /* + * start with the Y-pos, because it uses nearly the same plate + * settings like the touch detection + */ + mxs_lradc_prepare_y_pos(lradc); +} + static void mxs_lradc_report_ts_event(struct mxs_lradc *lradc) { input_report_abs(lradc->ts_input, ABS_X, lradc->ts_x_pos); @@ -664,10 +661,12 @@ * start a dummy conversion to burn time to settle the signals * note: we are not interested in the conversion's value */ - mxs_lradc_reg_wrt(lradc, 0, LRADC_CH(5)); - mxs_lradc_reg_clear(lradc, LRADC_CTRL1_LRADC_IRQ(5), LRADC_CTRL1); - mxs_lradc_reg_set(lradc, LRADC_CTRL1_LRADC_IRQ_EN(5), LRADC_CTRL1); - mxs_lradc_reg_wrt(lradc, LRADC_DELAY_TRIGGER(1 << 5) | + mxs_lradc_reg_wrt(lradc, 0, LRADC_CH(TOUCHSCREEN_VCHANNEL1)); + mxs_lradc_reg_clear(lradc, + LRADC_CTRL1_LRADC_IRQ(TOUCHSCREEN_VCHANNEL1) | + LRADC_CTRL1_LRADC_IRQ(TOUCHSCREEN_VCHANNEL2), LRADC_CTRL1); + mxs_lradc_reg_wrt(lradc, + LRADC_DELAY_TRIGGER(1 << TOUCHSCREEN_VCHANNEL1) | LRADC_DELAY_KICK | LRADC_DELAY_DELAY(10), /* waste 5 ms */ LRADC_DELAY(2)); } @@ -698,59 +697,46 @@ } /* if it is released, wait for the next touch via IRQ */ - mxs_lradc_reg_clear(lradc, LRADC_CTRL1_TOUCH_DETECT_IRQ, LRADC_CTRL1); + lradc->cur_plate = LRADC_TOUCH; + mxs_lradc_reg_wrt(lradc, 0, LRADC_DELAY(2)); + mxs_lradc_reg_wrt(lradc, 0, LRADC_DELAY(3)); + mxs_lradc_reg_clear(lradc, LRADC_CTRL1_TOUCH_DETECT_IRQ | + LRADC_CTRL1_LRADC_IRQ_EN(TOUCHSCREEN_VCHANNEL1) | + LRADC_CTRL1_LRADC_IRQ(TOUCHSCREEN_VCHANNEL1), LRADC_CTRL1); mxs_lradc_reg_set(lradc, LRADC_CTRL1_TOUCH_DETECT_IRQ_EN, LRADC_CTRL1); } /* touchscreen's state machine */ static void mxs_lradc_handle_touch(struct mxs_lradc *lradc) { - int val; - switch (lradc->cur_plate) { case LRADC_TOUCH: - /* - * start with the Y-pos, because it uses nearly the same plate - * settings like the touch detection - */ - if (mxs_lradc_check_touch_event(lradc)) { - mxs_lradc_reg_clear(lradc, - LRADC_CTRL1_TOUCH_DETECT_IRQ_EN, - LRADC_CTRL1); - mxs_lradc_prepare_y_pos(lradc); - } + if (mxs_lradc_check_touch_event(lradc)) + mxs_lradc_start_touch_event(lradc); mxs_lradc_reg_clear(lradc, LRADC_CTRL1_TOUCH_DETECT_IRQ, LRADC_CTRL1); return; case LRADC_SAMPLE_Y: - val = mxs_lradc_read_ts_channel(lradc); - if (val < 0) { - mxs_lradc_enable_touch_detection(lradc); /* re-start */ - return; - } - lradc->ts_y_pos = val; + lradc->ts_y_pos = mxs_lradc_read_raw_channel(lradc, + TOUCHSCREEN_VCHANNEL1); mxs_lradc_prepare_x_pos(lradc); return; case LRADC_SAMPLE_X: - val = mxs_lradc_read_ts_channel(lradc); - if (val < 0) { - mxs_lradc_enable_touch_detection(lradc); /* re-start */ - return; - } - lradc->ts_x_pos = val; + lradc->ts_x_pos = mxs_lradc_read_raw_channel(lradc, + TOUCHSCREEN_VCHANNEL1); mxs_lradc_prepare_pressure(lradc); return; case LRADC_SAMPLE_PRESSURE: - lradc->ts_pressure = - mxs_lradc_read_ts_pressure(lradc, TS_CH_XP, TS_CH_YM); + lradc->ts_pressure = mxs_lradc_read_ts_pressure(lradc, + TOUCHSCREEN_VCHANNEL2, + TOUCHSCREEN_VCHANNEL1); mxs_lradc_complete_touch_event(lradc); return; case LRADC_SAMPLE_VALID: - val = mxs_lradc_read_ts_channel(lradc); /* ignore the value */ mxs_lradc_finish_touch_event(lradc, 1); break; } @@ -791,9 +777,9 @@ * used if doing raw sampling. */ if (lradc->soc == IMX28_LRADC) - mxs_lradc_reg_clear(lradc, LRADC_CTRL1_MX28_LRADC_IRQ_EN_MASK, + mxs_lradc_reg_clear(lradc, LRADC_CTRL1_LRADC_IRQ_EN(0), LRADC_CTRL1); - mxs_lradc_reg_clear(lradc, 0xff, LRADC_CTRL0); + mxs_lradc_reg_clear(lradc, 0x1, LRADC_CTRL0); /* Clean the slot's previous content, then set new one. */ mxs_lradc_reg_clear(lradc, LRADC_CTRL4_LRADCSELECT_MASK(0), LRADC_CTRL4); @@ -843,9 +829,8 @@ { /* stop all interrupts from firing */ mxs_lradc_reg_clear(lradc, LRADC_CTRL1_TOUCH_DETECT_IRQ_EN | - LRADC_CTRL1_LRADC_IRQ_EN(2) | LRADC_CTRL1_LRADC_IRQ_EN(3) | - LRADC_CTRL1_LRADC_IRQ_EN(4) | LRADC_CTRL1_LRADC_IRQ_EN(5), - LRADC_CTRL1); + LRADC_CTRL1_LRADC_IRQ_EN(TOUCHSCREEN_VCHANNEL1) | + LRADC_CTRL1_LRADC_IRQ_EN(TOUCHSCREEN_VCHANNEL2), LRADC_CTRL1); /* Power-down touchscreen touch-detect circuitry. */ mxs_lradc_reg_clear(lradc, mxs_lradc_plate_mask(lradc), LRADC_CTRL0); @@ -911,25 +896,31 @@ struct iio_dev *iio = data; struct mxs_lradc *lradc = iio_priv(iio); unsigned long reg = readl(lradc->base + LRADC_CTRL1); + uint32_t clr_irq = mxs_lradc_irq_mask(lradc); const uint32_t ts_irq_mask = LRADC_CTRL1_TOUCH_DETECT_IRQ | - LRADC_CTRL1_LRADC_IRQ(2) | - LRADC_CTRL1_LRADC_IRQ(3) | - LRADC_CTRL1_LRADC_IRQ(4) | - LRADC_CTRL1_LRADC_IRQ(5); + LRADC_CTRL1_LRADC_IRQ(TOUCHSCREEN_VCHANNEL1) | + LRADC_CTRL1_LRADC_IRQ(TOUCHSCREEN_VCHANNEL2); if (!(reg & mxs_lradc_irq_mask(lradc))) return IRQ_NONE; - if (lradc->use_touchscreen && (reg & ts_irq_mask)) + if (lradc->use_touchscreen && (reg & ts_irq_mask)) { mxs_lradc_handle_touch(lradc); - if (iio_buffer_enabled(iio)) - iio_trigger_poll(iio->trig, iio_get_time_ns()); - else if (reg & LRADC_CTRL1_LRADC_IRQ(0)) + /* Make sure we don't clear the next conversion's interrupt. */ + clr_irq &= ~(LRADC_CTRL1_LRADC_IRQ(TOUCHSCREEN_VCHANNEL1) | + LRADC_CTRL1_LRADC_IRQ(TOUCHSCREEN_VCHANNEL2)); + } + + if (iio_buffer_enabled(iio)) { + if (reg & lradc->buffer_vchans) + iio_trigger_poll(iio->trig, iio_get_time_ns()); + } else if (reg & LRADC_CTRL1_LRADC_IRQ(0)) { complete(&lradc->completion); + } - mxs_lradc_reg_clear(lradc, reg & mxs_lradc_irq_mask(lradc), LRADC_CTRL1); + mxs_lradc_reg_clear(lradc, reg & clr_irq, LRADC_CTRL1); return IRQ_HANDLED; } @@ -1040,9 +1031,10 @@ } if (lradc->soc == IMX28_LRADC) - mxs_lradc_reg_clear(lradc, LRADC_CTRL1_MX28_LRADC_IRQ_EN_MASK, - LRADC_CTRL1); - mxs_lradc_reg_clear(lradc, 0xff, LRADC_CTRL0); + mxs_lradc_reg_clear(lradc, + lradc->buffer_vchans << LRADC_CTRL1_LRADC_IRQ_EN_OFFSET, + LRADC_CTRL1); + mxs_lradc_reg_clear(lradc, lradc->buffer_vchans, LRADC_CTRL0); for_each_set_bit(chan, iio->active_scan_mask, LRADC_MAX_TOTAL_CHANS) { ctrl4_set |= chan << LRADC_CTRL4_LRADCSELECT_OFFSET(ofs); @@ -1075,10 +1067,11 @@ mxs_lradc_reg_clear(lradc, LRADC_DELAY_TRIGGER_LRADCS_MASK | LRADC_DELAY_KICK, LRADC_DELAY(0)); - mxs_lradc_reg_clear(lradc, 0xff, LRADC_CTRL0); + mxs_lradc_reg_clear(lradc, lradc->buffer_vchans, LRADC_CTRL0); if (lradc->soc == IMX28_LRADC) - mxs_lradc_reg_clear(lradc, LRADC_CTRL1_MX28_LRADC_IRQ_EN_MASK, - LRADC_CTRL1); + mxs_lradc_reg_clear(lradc, + lradc->buffer_vchans << LRADC_CTRL1_LRADC_IRQ_EN_OFFSET, + LRADC_CTRL1); kfree(lradc->buffer); mutex_unlock(&lradc->lock); @@ -1104,7 +1097,7 @@ if (lradc->use_touchbutton) rsvd_chans++; if (lradc->use_touchscreen) - rsvd_chans++; + rsvd_chans += 2; /* Test for attempts to map channels with special mode of operation. */ if (bitmap_intersects(mask, &rsvd_mask, LRADC_MAX_TOTAL_CHANS)) @@ -1303,17 +1296,24 @@ touch_ret = mxs_lradc_probe_touchscreen(lradc, node); + if (touch_ret == 0) + lradc->buffer_vchans = BUFFER_VCHANS_LIMITED; + else + lradc->buffer_vchans = BUFFER_VCHANS_ALL; + /* Grab all IRQ sources */ for (i = 0; i < of_cfg->irq_count; i++) { lradc->irq[i] = platform_get_irq(pdev, i); - if (lradc->irq[i] < 0) - return -EINVAL; + if (lradc->irq[i] < 0) { + ret = lradc->irq[i]; + goto err_clk; + } ret = devm_request_irq(dev, lradc->irq[i], mxs_lradc_handle_irq, 0, of_cfg->irq_name[i], iio); if (ret) - return ret; + goto err_clk; } platform_set_drvdata(pdev, iio); @@ -1333,7 +1333,7 @@ &mxs_lradc_trigger_handler, &mxs_lradc_buffer_ops); if (ret) - return ret; + goto err_clk; ret = mxs_lradc_trigger_init(iio); if (ret) @@ -1368,6 +1368,8 @@ mxs_lradc_trigger_remove(iio); err_trig: iio_triggered_buffer_cleanup(iio); +err_clk: + clk_disable_unprepare(lradc->clk); return ret; } --- linux-3.13.0.orig/drivers/staging/iio/impedance-analyzer/ad5933.c +++ linux-3.13.0/drivers/staging/iio/impedance-analyzer/ad5933.c @@ -115,6 +115,7 @@ .channel = 0, .info_mask_separate = BIT(IIO_CHAN_INFO_PROCESSED), .address = AD5933_REG_TEMP_DATA, + .scan_index = -1, .scan_type = { .sign = 's', .realbits = 14, @@ -124,9 +125,7 @@ .type = IIO_VOLTAGE, .indexed = 1, .channel = 0, - .extend_name = "real_raw", - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW) | - BIT(IIO_CHAN_INFO_SCALE), + .extend_name = "real", .address = AD5933_REG_REAL_DATA, .scan_index = 0, .scan_type = { @@ -138,9 +137,7 @@ .type = IIO_VOLTAGE, .indexed = 1, .channel = 0, - .extend_name = "imag_raw", - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW) | - BIT(IIO_CHAN_INFO_SCALE), + .extend_name = "imag", .address = AD5933_REG_IMAG_DATA, .scan_index = 1, .scan_type = { @@ -629,7 +626,7 @@ struct iio_buffer *buffer; buffer = iio_kfifo_allocate(indio_dev); - if (buffer) + if (!buffer) return -ENOMEM; iio_device_attach_buffer(indio_dev, buffer); @@ -748,14 +745,14 @@ indio_dev->name = id->name; indio_dev->modes = INDIO_DIRECT_MODE; indio_dev->channels = ad5933_channels; - indio_dev->num_channels = 1; /* only register temp0_input */ + indio_dev->num_channels = ARRAY_SIZE(ad5933_channels); ret = ad5933_register_ring_funcs_and_init(indio_dev); if (ret) goto error_disable_reg; - /* skip temp0_input, register in0_(real|imag)_raw */ - ret = iio_buffer_register(indio_dev, &ad5933_channels[1], 2); + ret = iio_buffer_register(indio_dev, ad5933_channels, + ARRAY_SIZE(ad5933_channels)); if (ret) goto error_unreg_ring; --- linux-3.13.0.orig/drivers/staging/iio/light/tsl2x7x_core.c +++ linux-3.13.0/drivers/staging/iio/light/tsl2x7x_core.c @@ -667,9 +667,13 @@ chip->tsl2x7x_config[TSL2X7X_PRX_COUNT] = chip->tsl2x7x_settings.prox_pulse_count; chip->tsl2x7x_config[TSL2X7X_PRX_MINTHRESHLO] = - chip->tsl2x7x_settings.prox_thres_low; + (chip->tsl2x7x_settings.prox_thres_low) & 0xFF; + chip->tsl2x7x_config[TSL2X7X_PRX_MINTHRESHHI] = + (chip->tsl2x7x_settings.prox_thres_low >> 8) & 0xFF; chip->tsl2x7x_config[TSL2X7X_PRX_MAXTHRESHLO] = - chip->tsl2x7x_settings.prox_thres_high; + (chip->tsl2x7x_settings.prox_thres_high) & 0xFF; + chip->tsl2x7x_config[TSL2X7X_PRX_MAXTHRESHHI] = + (chip->tsl2x7x_settings.prox_thres_high >> 8) & 0xFF; /* and make sure we're not already on */ if (chip->tsl2x7x_chip_status == TSL2X7X_CHIP_WORKING) { --- linux-3.13.0.orig/drivers/staging/iio/meter/ade7758.h +++ linux-3.13.0/drivers/staging/iio/meter/ade7758.h @@ -119,7 +119,6 @@ u8 *tx; u8 *rx; struct mutex buf_lock; - const struct iio_chan_spec *ade7758_ring_channels; struct spi_transfer ring_xfer[4]; struct spi_message ring_msg; /* --- linux-3.13.0.orig/drivers/staging/iio/meter/ade7758_core.c +++ linux-3.13.0/drivers/staging/iio/meter/ade7758_core.c @@ -630,9 +630,6 @@ .type = IIO_VOLTAGE, .indexed = 1, .channel = 0, - .extend_name = "raw", - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), - .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), .address = AD7758_WT(AD7758_PHASE_A, AD7758_VOLTAGE), .scan_index = 0, .scan_type = { @@ -644,9 +641,6 @@ .type = IIO_CURRENT, .indexed = 1, .channel = 0, - .extend_name = "raw", - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), - .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), .address = AD7758_WT(AD7758_PHASE_A, AD7758_CURRENT), .scan_index = 1, .scan_type = { @@ -658,9 +652,7 @@ .type = IIO_POWER, .indexed = 1, .channel = 0, - .extend_name = "apparent_raw", - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), - .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), + .extend_name = "apparent", .address = AD7758_WT(AD7758_PHASE_A, AD7758_APP_PWR), .scan_index = 2, .scan_type = { @@ -672,9 +664,7 @@ .type = IIO_POWER, .indexed = 1, .channel = 0, - .extend_name = "active_raw", - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), - .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), + .extend_name = "active", .address = AD7758_WT(AD7758_PHASE_A, AD7758_ACT_PWR), .scan_index = 3, .scan_type = { @@ -686,9 +676,7 @@ .type = IIO_POWER, .indexed = 1, .channel = 0, - .extend_name = "reactive_raw", - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), - .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), + .extend_name = "reactive", .address = AD7758_WT(AD7758_PHASE_A, AD7758_REACT_PWR), .scan_index = 4, .scan_type = { @@ -700,9 +688,6 @@ .type = IIO_VOLTAGE, .indexed = 1, .channel = 1, - .extend_name = "raw", - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), - .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), .address = AD7758_WT(AD7758_PHASE_B, AD7758_VOLTAGE), .scan_index = 5, .scan_type = { @@ -714,9 +699,6 @@ .type = IIO_CURRENT, .indexed = 1, .channel = 1, - .extend_name = "raw", - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), - .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), .address = AD7758_WT(AD7758_PHASE_B, AD7758_CURRENT), .scan_index = 6, .scan_type = { @@ -728,9 +710,7 @@ .type = IIO_POWER, .indexed = 1, .channel = 1, - .extend_name = "apparent_raw", - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), - .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), + .extend_name = "apparent", .address = AD7758_WT(AD7758_PHASE_B, AD7758_APP_PWR), .scan_index = 7, .scan_type = { @@ -742,9 +722,7 @@ .type = IIO_POWER, .indexed = 1, .channel = 1, - .extend_name = "active_raw", - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), - .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), + .extend_name = "active", .address = AD7758_WT(AD7758_PHASE_B, AD7758_ACT_PWR), .scan_index = 8, .scan_type = { @@ -756,9 +734,7 @@ .type = IIO_POWER, .indexed = 1, .channel = 1, - .extend_name = "reactive_raw", - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), - .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), + .extend_name = "reactive", .address = AD7758_WT(AD7758_PHASE_B, AD7758_REACT_PWR), .scan_index = 9, .scan_type = { @@ -770,9 +746,6 @@ .type = IIO_VOLTAGE, .indexed = 1, .channel = 2, - .extend_name = "raw", - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), - .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), .address = AD7758_WT(AD7758_PHASE_C, AD7758_VOLTAGE), .scan_index = 10, .scan_type = { @@ -784,9 +757,6 @@ .type = IIO_CURRENT, .indexed = 1, .channel = 2, - .extend_name = "raw", - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), - .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), .address = AD7758_WT(AD7758_PHASE_C, AD7758_CURRENT), .scan_index = 11, .scan_type = { @@ -798,9 +768,7 @@ .type = IIO_POWER, .indexed = 1, .channel = 2, - .extend_name = "apparent_raw", - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), - .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), + .extend_name = "apparent", .address = AD7758_WT(AD7758_PHASE_C, AD7758_APP_PWR), .scan_index = 12, .scan_type = { @@ -812,9 +780,7 @@ .type = IIO_POWER, .indexed = 1, .channel = 2, - .extend_name = "active_raw", - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), - .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), + .extend_name = "active", .address = AD7758_WT(AD7758_PHASE_C, AD7758_ACT_PWR), .scan_index = 13, .scan_type = { @@ -826,9 +792,7 @@ .type = IIO_POWER, .indexed = 1, .channel = 2, - .extend_name = "reactive_raw", - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), - .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), + .extend_name = "reactive", .address = AD7758_WT(AD7758_PHASE_C, AD7758_REACT_PWR), .scan_index = 14, .scan_type = { @@ -869,13 +833,14 @@ goto error_free_rx; } st->us = spi; - st->ade7758_ring_channels = &ade7758_channels[0]; mutex_init(&st->buf_lock); indio_dev->name = spi->dev.driver->name; indio_dev->dev.parent = &spi->dev; indio_dev->info = &ade7758_info; indio_dev->modes = INDIO_DIRECT_MODE; + indio_dev->channels = ade7758_channels; + indio_dev->num_channels = ARRAY_SIZE(ade7758_channels); ret = ade7758_configure_ring(indio_dev); if (ret) --- linux-3.13.0.orig/drivers/staging/iio/meter/ade7758_ring.c +++ linux-3.13.0/drivers/staging/iio/meter/ade7758_ring.c @@ -85,17 +85,16 @@ **/ static int ade7758_ring_preenable(struct iio_dev *indio_dev) { - struct ade7758_state *st = iio_priv(indio_dev); unsigned channel; - if (!bitmap_empty(indio_dev->active_scan_mask, indio_dev->masklength)) + if (bitmap_empty(indio_dev->active_scan_mask, indio_dev->masklength)) return -EINVAL; channel = find_first_bit(indio_dev->active_scan_mask, indio_dev->masklength); ade7758_write_waveform_type(&indio_dev->dev, - st->ade7758_ring_channels[channel].address); + indio_dev->channels[channel].address); return 0; } --- linux-3.13.0.orig/drivers/staging/iio/meter/ade7758_trigger.c +++ linux-3.13.0/drivers/staging/iio/meter/ade7758_trigger.c @@ -85,7 +85,7 @@ ret = iio_trigger_register(st->trig); /* select default trigger */ - indio_dev->trig = st->trig; + indio_dev->trig = iio_trigger_get(st->trig); if (ret) goto error_free_irq; --- linux-3.13.0.orig/drivers/staging/imx-drm/ipuv3-plane.c +++ linux-3.13.0/drivers/staging/imx-drm/ipuv3-plane.c @@ -269,7 +269,8 @@ ipu_idmac_put(ipu_plane->ipu_ch); ipu_dmfc_put(ipu_plane->dmfc); - ipu_dp_put(ipu_plane->dp); + if (ipu_plane->dp) + ipu_dp_put(ipu_plane->dp); } } --- linux-3.13.0.orig/drivers/staging/lustre/lustre/llite/dcache.c +++ linux-3.13.0/drivers/staging/lustre/lustre/llite/dcache.c @@ -278,7 +278,7 @@ inode->i_ino, inode->i_generation, inode); ll_lock_dcache(inode); - ll_d_hlist_for_each_entry(dentry, p, &inode->i_dentry, d_alias) { + ll_d_hlist_for_each_entry(dentry, p, &inode->i_dentry, d_u.d_alias) { CDEBUG(D_DENTRY, "dentry in drop %.*s (%p) parent %p " "inode %p flags %d\n", dentry->d_name.len, dentry->d_name.name, dentry, dentry->d_parent, --- linux-3.13.0.orig/drivers/staging/lustre/lustre/llite/dir.c +++ linux-3.13.0/drivers/staging/lustre/lustre/llite/dir.c @@ -1086,7 +1086,7 @@ break; case Q_GETQUOTA: if (((type == USRQUOTA && - uid_eq(current_euid(), make_kuid(&init_user_ns, id))) || + !uid_eq(current_euid(), make_kuid(&init_user_ns, id))) || (type == GRPQUOTA && !in_egroup_p(make_kgid(&init_user_ns, id)))) && (!cfs_capable(CFS_CAP_SYS_ADMIN) || --- linux-3.13.0.orig/drivers/staging/lustre/lustre/llite/llite_lib.c +++ linux-3.13.0/drivers/staging/lustre/lustre/llite/llite_lib.c @@ -665,7 +665,7 @@ return; list_for_each(tmp, &dentry->d_subdirs) { - struct dentry *d = list_entry(tmp, struct dentry, d_u.d_child); + struct dentry *d = list_entry(tmp, struct dentry, d_child); lustre_dump_dentry(d, recur - 1); } } --- linux-3.13.0.orig/drivers/staging/lustre/lustre/llite/namei.c +++ linux-3.13.0/drivers/staging/lustre/lustre/llite/namei.c @@ -175,14 +175,14 @@ struct ll_d_hlist_node *p; ll_lock_dcache(dir); - ll_d_hlist_for_each_entry(dentry, p, &dir->i_dentry, d_alias) { + ll_d_hlist_for_each_entry(dentry, p, &dir->i_dentry, d_u.d_alias) { spin_lock(&dentry->d_lock); if (!list_empty(&dentry->d_subdirs)) { struct dentry *child; list_for_each_entry_safe(child, tmp_subdir, &dentry->d_subdirs, - d_u.d_child) { + d_child) { if (child->d_inode == NULL) d_lustre_invalidate(child, 1); } @@ -363,7 +363,7 @@ discon_alias = invalid_alias = NULL; ll_lock_dcache(inode); - ll_d_hlist_for_each_entry(alias, p, &inode->i_dentry, d_alias) { + ll_d_hlist_for_each_entry(alias, p, &inode->i_dentry, d_u.d_alias) { LASSERT(alias != dentry); spin_lock(&alias->d_lock); @@ -953,7 +953,7 @@ { struct dentry *parent, *child; - parent = ll_d_hlist_entry(dir->i_dentry, struct dentry, d_alias); + parent = ll_d_hlist_entry(dir->i_dentry, struct dentry, d_u.d_alias); child = d_lookup(parent, name); if (child) { if (child->d_inode) --- linux-3.13.0.orig/drivers/staging/lustre/lustre/llite/vvp_io.c +++ linux-3.13.0/drivers/staging/lustre/lustre/llite/vvp_io.c @@ -601,7 +601,7 @@ return 0; } - if (cfio->fault.ft_flags & VM_FAULT_SIGBUS) { + if (cfio->fault.ft_flags & (VM_FAULT_SIGBUS | VM_FAULT_SIGSEGV)) { CDEBUG(D_PAGE, "got addr %p - SIGBUS\n", vmf->virtual_address); return -EFAULT; } --- linux-3.13.0.orig/drivers/staging/lustre/lustre/obdclass/class_obd.c +++ linux-3.13.0/drivers/staging/lustre/lustre/obdclass/class_obd.c @@ -35,7 +35,7 @@ */ #define DEBUG_SUBSYSTEM S_CLASS -# include +# include #include #include --- linux-3.13.0.orig/drivers/staging/lustre/lustre/obdecho/echo_client.c +++ linux-3.13.0/drivers/staging/lustre/lustre/obdecho/echo_client.c @@ -1381,6 +1381,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]); @@ -1390,9 +1391,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; @@ -1400,9 +1402,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)) @@ -1418,11 +1421,10 @@ 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-3.13.0.orig/drivers/staging/lustre/lustre/ptlrpc/niobuf.c +++ linux-3.13.0/drivers/staging/lustre/lustre/ptlrpc/niobuf.c @@ -179,7 +179,7 @@ LNET_UNLINK, LNET_INS_AFTER, &me_h); if (rc != 0) { CERROR("%s: LNetMEAttach failed x"LPU64"/%d: rc = %d\n", - desc->bd_export->exp_obd->obd_name, xid, + desc->bd_import->imp_obd->obd_name, xid, posted_md, rc); break; } @@ -189,7 +189,7 @@ &desc->bd_mds[posted_md]); if (rc != 0) { CERROR("%s: LNetMDAttach failed x"LPU64"/%d: rc = %d\n", - desc->bd_export->exp_obd->obd_name, xid, + desc->bd_import->imp_obd->obd_name, xid, posted_md, rc); rc2 = LNetMEUnlink(me_h); LASSERT(rc2 == 0); @@ -219,7 +219,7 @@ /* Holler if peer manages to touch buffers before he knows the xid */ if (desc->bd_md_count != total_md) CWARN("%s: Peer %s touched %d buffers while I registered\n", - desc->bd_export->exp_obd->obd_name, libcfs_id2str(peer), + desc->bd_import->imp_obd->obd_name, libcfs_id2str(peer), total_md - desc->bd_md_count); spin_unlock(&desc->bd_lock); --- linux-3.13.0.orig/drivers/staging/mt29f_spinand/mt29f_spinand.c +++ linux-3.13.0/drivers/staging/mt29f_spinand/mt29f_spinand.c @@ -924,6 +924,7 @@ static const struct of_device_id spinand_dt[] = { { .compatible = "spinand,mt29f", }, + {} }; /* --- linux-3.13.0.orig/drivers/staging/netlogic/xlr_net.c +++ linux-3.13.0/drivers/staging/netlogic/xlr_net.c @@ -307,7 +307,7 @@ } static u16 xlr_net_select_queue(struct net_device *ndev, struct sk_buff *skb, - void *accel_priv) + void *accel_priv, select_queue_fallback_t fallback) { return (u16)smp_processor_id(); } --- linux-3.13.0.orig/drivers/staging/ozwpan/ozhcd.c +++ linux-3.13.0/drivers/staging/ozwpan/ozhcd.c @@ -799,8 +799,8 @@ /* * Context: softirq */ -void oz_hcd_get_desc_cnf(void *hport, u8 req_id, int status, const u8 *desc, - int length, int offset, int total_size) +void oz_hcd_get_desc_cnf(void *hport, u8 req_id, u8 status, const u8 *desc, + u8 length, u16 offset, u16 total_size) { struct oz_port *port = (struct oz_port *)hport; struct urb *urb; @@ -812,8 +812,8 @@ if (!urb) return; if (status == 0) { - int copy_len; - int required_size = urb->transfer_buffer_length; + unsigned int copy_len; + unsigned int required_size = urb->transfer_buffer_length; if (required_size > total_size) required_size = total_size; copy_len = required_size-offset; --- linux-3.13.0.orig/drivers/staging/ozwpan/ozusbif.h +++ linux-3.13.0/drivers/staging/ozwpan/ozusbif.h @@ -29,8 +29,8 @@ /* Confirmation functions. */ -void oz_hcd_get_desc_cnf(void *hport, u8 req_id, int status, - const u8 *desc, int length, int offset, int total_size); +void oz_hcd_get_desc_cnf(void *hport, u8 req_id, u8 status, + const u8 *desc, u8 length, u16 offset, u16 total_size); void oz_hcd_control_cnf(void *hport, u8 req_id, u8 rcode, const u8 *data, int data_len); --- linux-3.13.0.orig/drivers/staging/ozwpan/ozusbsvc1.c +++ linux-3.13.0/drivers/staging/ozwpan/ozusbsvc1.c @@ -324,7 +324,11 @@ struct oz_multiple_fixed *body = (struct oz_multiple_fixed *)data_hdr; u8 *data = body->data; - int n = (len - sizeof(struct oz_multiple_fixed)+1) + unsigned int n; + if (!body->unit_size || + len < sizeof(struct oz_multiple_fixed) - 1) + break; + n = (len - (sizeof(struct oz_multiple_fixed) - 1)) / body->unit_size; while (n--) { oz_hcd_data_ind(usb_ctx->hport, body->endpoint, @@ -387,10 +391,15 @@ case OZ_GET_DESC_RSP: { struct oz_get_desc_rsp *body = (struct oz_get_desc_rsp *)usb_hdr; - int data_len = elt->length - - sizeof(struct oz_get_desc_rsp) + 1; - u16 offs = le16_to_cpu(get_unaligned(&body->offset)); - u16 total_size = + u16 offs, total_size; + u8 data_len; + + if (elt->length < sizeof(struct oz_get_desc_rsp) - 1) + break; + data_len = elt->length - + (sizeof(struct oz_get_desc_rsp) - 1); + offs = le16_to_cpu(get_unaligned(&body->offset)); + total_size = le16_to_cpu(get_unaligned(&body->total_size)); oz_dbg(ON, "USB_REQ_GET_DESCRIPTOR - cnf\n"); oz_hcd_get_desc_cnf(usb_ctx->hport, body->req_id, --- linux-3.13.0.orig/drivers/staging/panel/panel.c +++ linux-3.13.0/drivers/staging/panel/panel.c @@ -275,11 +275,11 @@ * LCD types */ #define LCD_TYPE_NONE 0 -#define LCD_TYPE_OLD 1 -#define LCD_TYPE_KS0074 2 -#define LCD_TYPE_HANTRONIX 3 -#define LCD_TYPE_NEXCOM 4 -#define LCD_TYPE_CUSTOM 5 +#define LCD_TYPE_CUSTOM 1 +#define LCD_TYPE_OLD 2 +#define LCD_TYPE_KS0074 3 +#define LCD_TYPE_HANTRONIX 4 +#define LCD_TYPE_NEXCOM 5 /* * keypad types @@ -457,8 +457,7 @@ static int lcd_type = -1; module_param(lcd_type, int, 0000); MODULE_PARM_DESC(lcd_type, - "LCD type: 0=none, 1=old //, 2=serial ks0074, " - "3=hantronix //, 4=nexcom //, 5=compiled-in"); + "LCD type: 0=none, 1=compiled-in, 2=old, 3=serial ks0074, 4=hantronix, 5=nexcom"); static int lcd_proto = -1; module_param(lcd_proto, int, 0000); --- linux-3.13.0.orig/drivers/staging/rtl8188eu/core/rtw_recv.c +++ linux-3.13.0/drivers/staging/rtl8188eu/core/rtw_recv.c @@ -558,21 +558,19 @@ /* set the security information in the recv_frame */ static union recv_frame *portctrl(struct adapter *adapter, union recv_frame *precv_frame) { - u8 *psta_addr = NULL, *ptr; + 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 ether_type; u16 eapol_type = 0x888e;/* for Funia BD's WPA issue */ struct rx_pkt_attrib *pattrib; - __be16 be_tmp; _func_enter_; pstapriv = &adapter->stapriv; - psta = rtw_get_stainfo(pstapriv, psta_addr); auth_alg = adapter->securitypriv.dot11AuthAlgrthm; @@ -580,24 +578,23 @@ pfhdr = &precv_frame->u.hdr; pattrib = &pfhdr->attrib; psta_addr = pattrib->ta; + psta = rtw_get_stainfo(pstapriv, psta_addr); prtnframe = NULL; RT_TRACE(_module_rtl871x_recv_c_, _drv_info_, ("########portctrl:adapter->securitypriv.dot11AuthAlgrthm=%d\n", adapter->securitypriv.dot11AuthAlgrthm)); if (auth_alg == 2) { + /* get ether_type */ + ptr = ptr + pfhdr->attrib.hdrlen + LLC_HEADER_SIZE; + memcpy(ðer_type, ptr, 2); + ether_type = ntohs((unsigned short)ether_type); + 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; - memcpy(&be_tmp, ptr, 2); - ether_type = ntohs(be_tmp); - if (ether_type == eapol_type) { prtnframe = precv_frame; } else { --- linux-3.13.0.orig/drivers/staging/rtl8188eu/os_dep/os_intfs.c +++ linux-3.13.0/drivers/staging/rtl8188eu/os_dep/os_intfs.c @@ -653,7 +653,7 @@ } static u16 rtw_select_queue(struct net_device *dev, struct sk_buff *skb, - void *accel_priv) + void *accel_priv, select_queue_fallback_t fallback) { struct adapter *padapter = rtw_netdev_priv(dev); struct mlme_priv *pmlmepriv = &padapter->mlmepriv; --- linux-3.13.0.orig/drivers/staging/rtl8188eu/os_dep/usb_intf.c +++ linux-3.13.0/drivers/staging/rtl8188eu/os_dep/usb_intf.c @@ -53,8 +53,12 @@ {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x0179)}, /* 8188ETV */ /*=== Customer ID ===*/ /****** 8188EUS ********/ - {USB_DEVICE(0x8179, 0x07B8)}, /* Abocom - Abocom */ + {USB_DEVICE(0x056e, 0x4008)}, /* Elecom WDC-150SU2M */ + {USB_DEVICE(0x07b8, 0x8179)}, /* Abocom - Abocom */ {USB_DEVICE(0x2001, 0x330F)}, /* DLink DWA-125 REV D1 */ + {USB_DEVICE(0x2001, 0x3310)}, /* Dlink DWA-123 REV D1 */ + {USB_DEVICE(0x2001, 0x3311)}, /* DLink GO-USB-N150 REV B1 */ + {USB_DEVICE(0x0df6, 0x0076)}, /* Sitecom N150 v2 */ {} /* Terminating entry */ }; --- linux-3.13.0.orig/drivers/staging/rtl8192e/rtllib.h +++ linux-3.13.0/drivers/staging/rtl8192e/rtllib.h @@ -2761,7 +2761,6 @@ extern bool rtllib_act_scanning(struct rtllib_device *ieee, bool sync_scan); extern void rtllib_stop_scan_syncro(struct rtllib_device *ieee); extern void rtllib_start_scan_syncro(struct rtllib_device *ieee, u8 is_mesh); -extern inline struct sk_buff *rtllib_probe_req(struct rtllib_device *ieee); extern u8 MgntQuery_MgntFrameTxRate(struct rtllib_device *ieee); extern void rtllib_sta_ps_send_null_frame(struct rtllib_device *ieee, short pwr); @@ -2943,12 +2942,12 @@ extern const long rtllib_wlan_frequencies[]; -extern inline void rtllib_increment_scans(struct rtllib_device *ieee) +static inline void rtllib_increment_scans(struct rtllib_device *ieee) { ieee->scans++; } -extern inline int rtllib_get_scans(struct rtllib_device *ieee) +static inline int rtllib_get_scans(struct rtllib_device *ieee) { return ieee->scans; } --- linux-3.13.0.orig/drivers/staging/rtl8192e/rtllib_softmac.c +++ linux-3.13.0/drivers/staging/rtl8192e/rtllib_softmac.c @@ -341,7 +341,7 @@ } } -inline struct sk_buff *rtllib_probe_req(struct rtllib_device *ieee) +static inline struct sk_buff *rtllib_probe_req(struct rtllib_device *ieee) { unsigned int len, rate_len; u8 *tag; --- linux-3.13.0.orig/drivers/staging/rtl8192u/ieee80211/ieee80211.h +++ linux-3.13.0/drivers/staging/rtl8192u/ieee80211/ieee80211.h @@ -2250,7 +2250,7 @@ return ((struct ieee80211_device *)netdev_priv(dev))->priv; } -extern inline int ieee80211_is_empty_essid(const char *essid, int essid_len) +static inline int ieee80211_is_empty_essid(const char *essid, int essid_len) { /* Single white space is for Linksys APs */ if (essid_len == 1 && essid[0] == ' ') @@ -2266,7 +2266,7 @@ return 1; } -extern inline int ieee80211_is_valid_mode(struct ieee80211_device *ieee, int mode) +static inline int ieee80211_is_valid_mode(struct ieee80211_device *ieee, int mode) { /* * It is possible for both access points and our device to support @@ -2292,7 +2292,7 @@ return 0; } -extern inline int ieee80211_get_hdrlen(u16 fc) +static inline int ieee80211_get_hdrlen(u16 fc) { int hdrlen = IEEE80211_3ADDR_LEN; @@ -2578,12 +2578,12 @@ extern const long ieee80211_wlan_frequencies[]; -extern inline void ieee80211_increment_scans(struct ieee80211_device *ieee) +static inline void ieee80211_increment_scans(struct ieee80211_device *ieee) { ieee->scans++; } -extern inline int ieee80211_get_scans(struct ieee80211_device *ieee) +static inline int ieee80211_get_scans(struct ieee80211_device *ieee) { return ieee->scans; } --- linux-3.13.0.orig/drivers/staging/rtl8712/ieee80211.h +++ linux-3.13.0/drivers/staging/rtl8712/ieee80211.h @@ -734,7 +734,7 @@ #define IEEE_G (1<<2) #define IEEE_MODE_MASK (IEEE_A|IEEE_B|IEEE_G) -extern inline int ieee80211_is_empty_essid(const char *essid, int essid_len) +static inline int ieee80211_is_empty_essid(const char *essid, int essid_len) { /* Single white space is for Linksys APs */ if (essid_len == 1 && essid[0] == ' ') @@ -748,7 +748,7 @@ return 1; } -extern inline int ieee80211_get_hdrlen(u16 fc) +static inline int ieee80211_get_hdrlen(u16 fc) { int hdrlen = 24; --- linux-3.13.0.orig/drivers/staging/rtl8712/rtl8712_recv.c +++ linux-3.13.0/drivers/staging/rtl8712/rtl8712_recv.c @@ -1075,7 +1075,8 @@ /* for first fragment packet, driver need allocate 1536 + * drvinfo_sz + RXDESC_SIZE to defrag packet. */ if ((mf == 1) && (frag == 0)) - alloc_sz = 1658;/*1658+6=1664, 1664 is 128 alignment.*/ + /*1658+6=1664, 1664 is 128 alignment.*/ + alloc_sz = max_t(u16, tmp_len, 1658); else alloc_sz = tmp_len; /* 2 is for IP header 4 bytes alignment in QoS packet case. --- linux-3.13.0.orig/drivers/staging/rtl8712/rtl871x_recv.c +++ linux-3.13.0/drivers/staging/rtl8712/rtl871x_recv.c @@ -254,7 +254,7 @@ struct sta_info *psta; struct sta_priv *pstapriv; union recv_frame *prtnframe; - u16 ether_type = 0; + u16 ether_type; pstapriv = &adapter->stapriv; ptr = get_recvframe_data(precv_frame); @@ -263,15 +263,14 @@ psta = r8712_get_stainfo(pstapriv, psta_addr); auth_alg = adapter->securitypriv.AuthAlgrthm; if (auth_alg == 2) { + /* get ether_type */ + ptr = ptr + pfhdr->attrib.hdrlen + LLC_HEADER_SIZE; + memcpy(ðer_type, ptr, 2); + ether_type = ntohs((unsigned short)ether_type); + if ((psta != NULL) && (psta->ieee8021x_blocked)) { /* blocked * only accept EAPOL frame */ - prtnframe = precv_frame; - /*get ether_type */ - ptr = ptr + pfhdr->attrib.hdrlen + - pfhdr->attrib.iv_len + LLC_HEADER_SIZE; - memcpy(ðer_type, ptr, 2); - ether_type = ntohs((unsigned short)ether_type); if (ether_type == 0x888e) prtnframe = precv_frame; else { --- linux-3.13.0.orig/drivers/staging/rtl8712/usb_intf.c +++ linux-3.13.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)}, @@ -353,6 +354,10 @@ } } +static const struct device_type wlan_type = { + .name = "wlan", +}; + /* * drv_init() - a device potentially for us * @@ -388,6 +393,7 @@ padapter->pusb_intf = pusb_intf; usb_set_intfdata(pusb_intf, pnetdev); SET_NETDEV_DEV(pnetdev, &pusb_intf->dev); + pnetdev->dev.type = &wlan_type; /* step 2. */ padapter->dvobj_init = &r8712_usb_dvobj_init; padapter->dvobj_deinit = &r8712_usb_dvobj_deinit; --- linux-3.13.0.orig/drivers/staging/rtl8821ae/Kconfig +++ linux-3.13.0/drivers/staging/rtl8821ae/Kconfig @@ -0,0 +1,11 @@ +config R8821AE + tristate "RealTek RTL8821AE Wireless LAN NIC driver" + depends on PCI && WLAN && MAC80211 + depends on m + select WIRELESS_EXT + select WEXT_PRIV + select EEPROM_93CX6 + select CRYPTO + default N + ---help--- + If built as a module, it will be called r8821ae.ko. --- linux-3.13.0.orig/drivers/staging/rtl8821ae/Makefile +++ linux-3.13.0/drivers/staging/rtl8821ae/Makefile @@ -0,0 +1,35 @@ +PCI_MAIN_OBJS := base.o \ + rc.o \ + debug.o \ + regd.o \ + efuse.o \ + cam.o \ + ps.o \ + core.o \ + stats.o \ + pci.o \ + +BT_COEXIST_OBJS:= btcoexist/halbtc8192e2ant.o\ + btcoexist/halbtc8723b1ant.o\ + btcoexist/halbtc8723b2ant.o\ + btcoexist/halbtcoutsrc.o\ + btcoexist/rtl_btc.o \ + +PCI_8821AE_HAL_OBJS:= \ + rtl8821ae/hw.o \ + rtl8821ae/table.o \ + rtl8821ae/sw.o \ + rtl8821ae/trx.o \ + rtl8821ae/led.o \ + rtl8821ae/fw.o \ + rtl8821ae/phy.o \ + rtl8821ae/rf.o \ + rtl8821ae/dm.o \ + rtl8821ae/pwrseq.o \ + rtl8821ae/pwrseqcmd.o \ + rtl8821ae/hal_btc.o \ + rtl8821ae/hal_bt_coexist.o \ + +rtl8821ae-objs += $(BT_COEXIST_OBJS) $(PCI_MAIN_OBJS) $(PCI_8821AE_HAL_OBJS) + +obj-$(CONFIG_R8821AE) += rtl8821ae.o --- linux-3.13.0.orig/drivers/staging/rtl8821ae/TODO +++ linux-3.13.0/drivers/staging/rtl8821ae/TODO @@ -0,0 +1,10 @@ +Realtek 8821AE PCI wifi driver TODO: + - remove built-in btcoexist module when the "real" one gets upstream + - remove built-in rtlwifi code by porting driver to use the "real" one + in the drivers/net/ directory. + - fix up coding style issues + +Please send any patches for this driver to: + Greg Kroah-Hartman +and the mailing list. + --- linux-3.13.0.orig/drivers/staging/rtl8821ae/base.c +++ linux-3.13.0/drivers/staging/rtl8821ae/base.c @@ -0,0 +1,1873 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#include +#include +#include "wifi.h" +#include "rc.h" +#include "base.h" +#include "efuse.h" +#include "cam.h" +#include "ps.h" +#include "regd.h" +#include "pci.h" + +/* + *NOTICE!!!: This file will be very big, we hsould + *keep it clear under follwing roles: + * + *This file include follwing part, so, if you add new + *functions into this file, please check which part it + *should includes. or check if you should add new part + *for this file: + * + *1) mac80211 init functions + *2) tx information functions + *3) functions called by core.c + *4) wq & timer callback functions + *5) frame process functions + *6) IOT functions + *7) sysfs functions + *8) vif functions + *9) ... + */ + +/********************************************************* + * + * mac80211 init functions + * + *********************************************************/ +static struct ieee80211_channel rtl_channeltable_2g[] = { + {.center_freq = 2412,.hw_value = 1,}, + {.center_freq = 2417,.hw_value = 2,}, + {.center_freq = 2422,.hw_value = 3,}, + {.center_freq = 2427,.hw_value = 4,}, + {.center_freq = 2432,.hw_value = 5,}, + {.center_freq = 2437,.hw_value = 6,}, + {.center_freq = 2442,.hw_value = 7,}, + {.center_freq = 2447,.hw_value = 8,}, + {.center_freq = 2452,.hw_value = 9,}, + {.center_freq = 2457,.hw_value = 10,}, + {.center_freq = 2462,.hw_value = 11,}, + {.center_freq = 2467,.hw_value = 12,}, + {.center_freq = 2472,.hw_value = 13,}, + {.center_freq = 2484,.hw_value = 14,}, +}; + +static struct ieee80211_channel rtl_channeltable_5g[] = { + {.center_freq = 5180,.hw_value = 36,}, + {.center_freq = 5200,.hw_value = 40,}, + {.center_freq = 5220,.hw_value = 44,}, + {.center_freq = 5240,.hw_value = 48,}, + {.center_freq = 5260,.hw_value = 52,}, + {.center_freq = 5280,.hw_value = 56,}, + {.center_freq = 5300,.hw_value = 60,}, + {.center_freq = 5320,.hw_value = 64,}, + {.center_freq = 5500,.hw_value = 100,}, + {.center_freq = 5520,.hw_value = 104,}, + {.center_freq = 5540,.hw_value = 108,}, + {.center_freq = 5560,.hw_value = 112,}, + {.center_freq = 5580,.hw_value = 116,}, + {.center_freq = 5600,.hw_value = 120,}, + {.center_freq = 5620,.hw_value = 124,}, + {.center_freq = 5640,.hw_value = 128,}, + {.center_freq = 5660,.hw_value = 132,}, + {.center_freq = 5680,.hw_value = 136,}, + {.center_freq = 5700,.hw_value = 140,}, + {.center_freq = 5745,.hw_value = 149,}, + {.center_freq = 5765,.hw_value = 153,}, + {.center_freq = 5785,.hw_value = 157,}, + {.center_freq = 5805,.hw_value = 161,}, + {.center_freq = 5825,.hw_value = 165,}, +}; + +static struct ieee80211_rate rtl_ratetable_2g[] = { + {.bitrate = 10,.hw_value = 0x00,}, + {.bitrate = 20,.hw_value = 0x01,}, + {.bitrate = 55,.hw_value = 0x02,}, + {.bitrate = 110,.hw_value = 0x03,}, + {.bitrate = 60,.hw_value = 0x04,}, + {.bitrate = 90,.hw_value = 0x05,}, + {.bitrate = 120,.hw_value = 0x06,}, + {.bitrate = 180,.hw_value = 0x07,}, + {.bitrate = 240,.hw_value = 0x08,}, + {.bitrate = 360,.hw_value = 0x09,}, + {.bitrate = 480,.hw_value = 0x0a,}, + {.bitrate = 540,.hw_value = 0x0b,}, +}; + +static struct ieee80211_rate rtl_ratetable_5g[] = { + {.bitrate = 60,.hw_value = 0x04,}, + {.bitrate = 90,.hw_value = 0x05,}, + {.bitrate = 120,.hw_value = 0x06,}, + {.bitrate = 180,.hw_value = 0x07,}, + {.bitrate = 240,.hw_value = 0x08,}, + {.bitrate = 360,.hw_value = 0x09,}, + {.bitrate = 480,.hw_value = 0x0a,}, + {.bitrate = 540,.hw_value = 0x0b,}, +}; + +static const struct ieee80211_supported_band rtl_band_2ghz = { + .band = IEEE80211_BAND_2GHZ, + + .channels = rtl_channeltable_2g, + .n_channels = ARRAY_SIZE(rtl_channeltable_2g), + + .bitrates = rtl_ratetable_2g, + .n_bitrates = ARRAY_SIZE(rtl_ratetable_2g), + + .ht_cap = {0}, +}; + +static struct ieee80211_supported_band rtl_band_5ghz = { + .band = IEEE80211_BAND_5GHZ, + + .channels = rtl_channeltable_5g, + .n_channels = ARRAY_SIZE(rtl_channeltable_5g), + + .bitrates = rtl_ratetable_5g, + .n_bitrates = ARRAY_SIZE(rtl_ratetable_5g), + + .ht_cap = {0}, +}; + +static const u8 tid_to_ac[] = { + 2, /* IEEE80211_AC_BE */ + 3, /* IEEE80211_AC_BK */ + 3, /* IEEE80211_AC_BK */ + 2, /* IEEE80211_AC_BE */ + 1, /* IEEE80211_AC_VI */ + 1, /* IEEE80211_AC_VI */ + 0, /* IEEE80211_AC_VO */ + 0, /* IEEE80211_AC_VO */ +}; + +u8 rtl_tid_to_ac(struct ieee80211_hw *hw, u8 tid) +{ + return tid_to_ac[tid]; +} + +static void _rtl_init_hw_ht_capab(struct ieee80211_hw *hw, + struct ieee80211_sta_ht_cap *ht_cap) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + + 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; + + if (rtlpriv->rtlhal.disable_amsdu_8k) + ht_cap->cap &= ~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 (rtlpriv->dm.supp_phymode_switch) { + RT_TRACE(COMP_INIT, DBG_EMERG, ("Support phy mode switch\n")); + + 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 { + if (get_rf_type(rtlphy) == RF_1T2R || + get_rf_type(rtlphy) == RF_2T2R) { + + RT_TRACE(COMP_INIT, DBG_DMESG, ("1T2R or 2T2R\n")); + + 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 if (get_rf_type(rtlphy) == RF_1T1R) { + + RT_TRACE(COMP_INIT, DBG_DMESG, ("1T1R\n")); + + 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; + } + } +} + +static void _rtl_init_mac80211(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtlpriv); + struct rtl_mac *rtlmac = rtl_mac(rtl_priv(hw)); + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + struct ieee80211_supported_band *sband; + + + if (rtlhal->macphymode == SINGLEMAC_SINGLEPHY && + rtlhal->bandset == BAND_ON_BOTH) { + /* 1: 2.4 G bands */ + /* <1> use mac->bands as mem for hw->wiphy->bands */ + sband = &(rtlmac->bands[IEEE80211_BAND_2GHZ]); + + /* <2> set hw->wiphy->bands[IEEE80211_BAND_2GHZ] + * to default value(1T1R) */ + memcpy(&(rtlmac->bands[IEEE80211_BAND_2GHZ]), &rtl_band_2ghz, + sizeof(struct ieee80211_supported_band)); + + /* <3> init ht cap base on ant_num */ + _rtl_init_hw_ht_capab(hw, &sband->ht_cap); + + /* <4> set mac->sband to wiphy->sband */ + hw->wiphy->bands[IEEE80211_BAND_2GHZ] = sband; + + /* 2: 5 G bands */ + /* <1> use mac->bands as mem for hw->wiphy->bands */ + sband = &(rtlmac->bands[IEEE80211_BAND_5GHZ]); + + /* <2> set hw->wiphy->bands[IEEE80211_BAND_5GHZ] + * to default value(1T1R) */ + memcpy(&(rtlmac->bands[IEEE80211_BAND_5GHZ]), &rtl_band_5ghz, + sizeof(struct ieee80211_supported_band)); + + /* <3> init ht cap base on ant_num */ + _rtl_init_hw_ht_capab(hw, &sband->ht_cap); + + /* <4> set mac->sband to wiphy->sband */ + hw->wiphy->bands[IEEE80211_BAND_5GHZ] = sband; + } else { + if (rtlhal->current_bandtype == BAND_ON_2_4G) { + /* <1> use mac->bands as mem for hw->wiphy->bands */ + sband = &(rtlmac->bands[IEEE80211_BAND_2GHZ]); + + /* <2> set hw->wiphy->bands[IEEE80211_BAND_2GHZ] + * to default value(1T1R) */ + memcpy(&(rtlmac->bands[IEEE80211_BAND_2GHZ]), + &rtl_band_2ghz, + sizeof(struct ieee80211_supported_band)); + + /* <3> init ht cap base on ant_num */ + _rtl_init_hw_ht_capab(hw, &sband->ht_cap); + + /* <4> set mac->sband to wiphy->sband */ + hw->wiphy->bands[IEEE80211_BAND_2GHZ] = sband; + } else if (rtlhal->current_bandtype == BAND_ON_5G) { + /* <1> use mac->bands as mem for hw->wiphy->bands */ + sband = &(rtlmac->bands[IEEE80211_BAND_5GHZ]); + + /* <2> set hw->wiphy->bands[IEEE80211_BAND_5GHZ] + * to default value(1T1R) */ + memcpy(&(rtlmac->bands[IEEE80211_BAND_5GHZ]), + &rtl_band_5ghz, + sizeof(struct ieee80211_supported_band)); + + /* <3> init ht cap base on ant_num */ + _rtl_init_hw_ht_capab(hw, &sband->ht_cap); + + /* <4> set mac->sband to wiphy->sband */ + hw->wiphy->bands[IEEE80211_BAND_5GHZ] = sband; + } else { + RT_TRACE(COMP_INIT, DBG_EMERG, ("Err BAND %d\n", + rtlhal->current_bandtype)); + } + } + /* <5> set hw caps */ + hw->flags = IEEE80211_HW_SIGNAL_DBM | + IEEE80211_HW_RX_INCLUDES_FCS | +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0)) + IEEE80211_HW_BEACON_FILTER | +#endif + IEEE80211_HW_AMPDU_AGGREGATION | + IEEE80211_HW_REPORTS_TX_ACK_STATUS | + IEEE80211_HW_CONNECTION_MONITOR | + /* IEEE80211_HW_SUPPORTS_CQM_RSSI | */ + IEEE80211_HW_MFP_CAPABLE | 0; + + /* swlps or hwlps has been set in diff chip in init_sw_vars */ + if (rtlpriv->psc.b_swctrl_lps) + hw->flags |= IEEE80211_HW_SUPPORTS_PS | + IEEE80211_HW_PS_NULLFUNC_STACK | + /* IEEE80211_HW_SUPPORTS_DYNAMIC_PS | */ + 0; +/**/ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) + hw->wiphy->interface_modes = + BIT(NL80211_IFTYPE_AP) | + BIT(NL80211_IFTYPE_STATION) | + BIT(NL80211_IFTYPE_ADHOC) | + BIT(NL80211_IFTYPE_MESH_POINT) | + BIT(NL80211_IFTYPE_P2P_CLIENT) | + BIT(NL80211_IFTYPE_P2P_GO); +#else +/**/ + hw->wiphy->interface_modes = + BIT(NL80211_IFTYPE_AP) | + BIT(NL80211_IFTYPE_STATION) | + BIT(NL80211_IFTYPE_ADHOC) | + BIT(NL80211_IFTYPE_MESH_POINT) ; +/**/ +#endif +/**/ +#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,39)) + hw->wiphy->flags |= WIPHY_FLAG_IBSS_RSN; +#endif + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0)) + hw->wiphy->flags |= WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL; +#endif + + hw->wiphy->rts_threshold = 2347; + + hw->queues = AC_MAX; + hw->extra_tx_headroom = RTL_TX_HEADER_SIZE; + + /* TODO: Correct this value for our hw */ + /* TODO: define these hard code value */ + hw->max_listen_interval = 10; + hw->max_rate_tries = 4; + /* hw->max_rates = 1; */ + hw->sta_data_size = sizeof(struct rtl_sta_info); +#ifdef VIF_TODO + hw->vif_data_size = sizeof(struct rtl_vif_info); +#endif + + /* <6> mac address */ + if (is_valid_ether_addr(rtlefuse->dev_addr)) { + SET_IEEE80211_PERM_ADDR(hw, rtlefuse->dev_addr); + } else { + u8 rtlmac[] = { 0x00, 0xe0, 0x4c, 0x81, 0x92, 0x00 }; + get_random_bytes((rtlmac + (ETH_ALEN - 1)), 1); + SET_IEEE80211_PERM_ADDR(hw, rtlmac); + } + +} + +static void _rtl_init_deferred_work(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + /* <1> timer */ + init_timer(&rtlpriv->works.watchdog_timer); + setup_timer(&rtlpriv->works.watchdog_timer, + rtl_watch_dog_timer_callback, (unsigned long)hw); + init_timer(&rtlpriv->works.dualmac_easyconcurrent_retrytimer); + setup_timer(&rtlpriv->works.dualmac_easyconcurrent_retrytimer, + rtl_easy_concurrent_retrytimer_callback, (unsigned long)hw); + /* <2> work queue */ + rtlpriv->works.hw = hw; +/**/ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) +/**/ + rtlpriv->works.rtl_wq = alloc_workqueue(rtlpriv->cfg->name, 0, 0); +/**/ +#else + rtlpriv->works.rtl_wq = create_workqueue(rtlpriv->cfg->name); +#endif +/**/ + INIT_DELAYED_WORK(&rtlpriv->works.watchdog_wq, + (void *)rtl_watchdog_wq_callback); + INIT_DELAYED_WORK(&rtlpriv->works.ips_nic_off_wq, + (void *)rtl_ips_nic_off_wq_callback); + INIT_DELAYED_WORK(&rtlpriv->works.ps_work, + (void *)rtl_swlps_wq_callback); + INIT_DELAYED_WORK(&rtlpriv->works.ps_rfon_wq, + (void *)rtl_swlps_rfon_wq_callback); + INIT_DELAYED_WORK(&rtlpriv->works.fwevt_wq, + (void *)rtl_fwevt_wq_callback); + +} + +void rtl_deinit_deferred_work(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + del_timer_sync(&rtlpriv->works.watchdog_timer); + + cancel_delayed_work(&rtlpriv->works.watchdog_wq); + cancel_delayed_work(&rtlpriv->works.ips_nic_off_wq); + cancel_delayed_work(&rtlpriv->works.ps_work); + cancel_delayed_work(&rtlpriv->works.ps_rfon_wq); + cancel_delayed_work(&rtlpriv->works.fwevt_wq); +} + +void rtl_init_rfkill(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + bool radio_state; + bool blocked; + u8 valid = 0; + + /*set init state to on */ + rtlpriv->rfkill.rfkill_state = 1; + wiphy_rfkill_set_hw_state(hw->wiphy, 0); + + radio_state = rtlpriv->cfg->ops->radio_onoff_checking(hw, &valid); + + if (valid) { + printk(KERN_INFO "rtlwifi: wireless switch is %s\n", + rtlpriv->rfkill.rfkill_state ? "on" : "off"); + + rtlpriv->rfkill.rfkill_state = radio_state; + + blocked = (rtlpriv->rfkill.rfkill_state == 1) ? 0 : 1; + wiphy_rfkill_set_hw_state(hw->wiphy, blocked); + } + + wiphy_rfkill_start_polling(hw->wiphy); +} + +void rtl_deinit_rfkill(struct ieee80211_hw *hw) +{ + wiphy_rfkill_stop_polling(hw->wiphy); +} + +#ifdef VIF_TODO +static void rtl_init_vif(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + INIT_LIST_HEAD(&rtlpriv->vif_priv.vif_list); + + rtlpriv->vif_priv.vifs = 0; +} +#endif + +int rtl_init_core(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *rtlmac = rtl_mac(rtl_priv(hw)); + + /* <1> init mac80211 */ + _rtl_init_mac80211(hw); + rtlmac->hw = hw; + rtlmac->link_state = MAC80211_NOLINK; + + /* <2> rate control register */ + hw->rate_control_algorithm = "rtl_rc"; + + /* + * <3> init CRDA must come after init + * mac80211 hw in _rtl_init_mac80211. + */ + if (rtl_regd_init(hw, rtl_reg_notifier)) { + RT_TRACE(COMP_ERR, DBG_EMERG, ("REGD init failed\n")); + return 1; + } + + /* <4> locks */ + mutex_init(&rtlpriv->locks.conf_mutex); + spin_lock_init(&rtlpriv->locks.ips_lock); + spin_lock_init(&rtlpriv->locks.irq_th_lock); + spin_lock_init(&rtlpriv->locks.h2c_lock); + spin_lock_init(&rtlpriv->locks.rf_ps_lock); + spin_lock_init(&rtlpriv->locks.rf_lock); + spin_lock_init(&rtlpriv->locks.lps_lock); + spin_lock_init(&rtlpriv->locks.waitq_lock); + spin_lock_init(&rtlpriv->locks.entry_list_lock); + spin_lock_init(&rtlpriv->locks.cck_and_rw_pagea_lock); + spin_lock_init(&rtlpriv->locks.check_sendpkt_lock); + spin_lock_init(&rtlpriv->locks.fw_ps_lock); + spin_lock_init(&rtlpriv->locks.iqk_lock); + /* <5> init list */ + INIT_LIST_HEAD(&rtlpriv->entry_list); + + /* <6> init deferred work */ + _rtl_init_deferred_work(hw); + + /* <7> */ +#ifdef VIF_TODO + rtl_init_vif(hw); +#endif + + return 0; +} + +void rtl_deinit_core(struct ieee80211_hw *hw) +{ +} + +void rtl_init_rx_config(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + + rtlpriv->cfg->ops->get_hw_reg(hw, HW_VAR_RCR, (u8 *) (&mac->rx_conf)); +} + +/********************************************************* + * + * tx information functions + * + *********************************************************/ +static void _rtl_qurey_shortpreamble_mode(struct ieee80211_hw *hw, + struct rtl_tcb_desc *tcb_desc, + struct ieee80211_tx_info *info) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 rate_flag = info->control.rates[0].flags; + + tcb_desc->use_shortpreamble = false; + + /* 1M can only use Long Preamble. 11B spec */ + if (tcb_desc->hw_rate == rtlpriv->cfg->maps[RTL_RC_CCK_RATE1M]) + return; + else if (rate_flag & IEEE80211_TX_RC_USE_SHORT_PREAMBLE) + tcb_desc->use_shortpreamble = true; + + return; +} + +static void _rtl_query_shortgi(struct ieee80211_hw *hw, + struct ieee80211_sta *sta, + struct rtl_tcb_desc *tcb_desc, + struct ieee80211_tx_info *info) +{ + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + u8 rate_flag = info->control.rates[0].flags; + u8 sgi_40 = 0, sgi_20 = 0, bw_40 = 0; + tcb_desc->use_shortgi = false; + + if (sta == NULL) + return; + + sgi_40 = sta->ht_cap.cap & IEEE80211_HT_CAP_SGI_40; + sgi_20 = sta->ht_cap.cap & IEEE80211_HT_CAP_SGI_20; + + if (!(sta->ht_cap.ht_supported)) + return; + + if (!sgi_40 && !sgi_20) + return; + + if (mac->opmode == NL80211_IFTYPE_STATION) + bw_40 = mac->bw_40; + else if (mac->opmode == NL80211_IFTYPE_AP || + mac->opmode == NL80211_IFTYPE_ADHOC || + mac->opmode == NL80211_IFTYPE_MESH_POINT) + bw_40 = sta->ht_cap.cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40; + + if ((bw_40 == true) && sgi_40) + tcb_desc->use_shortgi = true; + else if ((bw_40 == false) && sgi_20) + tcb_desc->use_shortgi = true; + + if (!(rate_flag & IEEE80211_TX_RC_SHORT_GI)) + tcb_desc->use_shortgi = false; +} + +static void _rtl_query_protection_mode(struct ieee80211_hw *hw, + struct rtl_tcb_desc *tcb_desc, + struct ieee80211_tx_info *info) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 rate_flag = info->control.rates[0].flags; + + /* Common Settings */ + tcb_desc->b_rts_stbc = false; + tcb_desc->b_cts_enable = false; + tcb_desc->rts_sc = 0; + tcb_desc->b_rts_bw = false; + tcb_desc->b_rts_use_shortpreamble = false; + tcb_desc->b_rts_use_shortgi = false; + + if (rate_flag & IEEE80211_TX_RC_USE_CTS_PROTECT) { + /* Use CTS-to-SELF in protection mode. */ + tcb_desc->b_rts_enable = true; + tcb_desc->b_cts_enable = true; + tcb_desc->rts_rate = rtlpriv->cfg->maps[RTL_RC_OFDM_RATE24M]; + } else if (rate_flag & IEEE80211_TX_RC_USE_RTS_CTS) { + /* Use RTS-CTS in protection mode. */ + tcb_desc->b_rts_enable = true; + tcb_desc->rts_rate = rtlpriv->cfg->maps[RTL_RC_OFDM_RATE24M]; + } +} + +static void _rtl_txrate_selectmode(struct ieee80211_hw *hw, + struct ieee80211_sta *sta, + struct rtl_tcb_desc *tcb_desc) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct rtl_sta_info *sta_entry = NULL; + u8 ratr_index = 7; + + if (sta) { + sta_entry = (struct rtl_sta_info *) sta->drv_priv; + ratr_index = sta_entry->ratr_index; + } + if (!tcb_desc->disable_ratefallback || !tcb_desc->use_driver_rate) { + if (mac->opmode == NL80211_IFTYPE_STATION) { + tcb_desc->ratr_index = 0; + } else if (mac->opmode == NL80211_IFTYPE_ADHOC || + mac->opmode == NL80211_IFTYPE_MESH_POINT) { + if (tcb_desc->b_multicast || tcb_desc->b_broadcast) { + tcb_desc->hw_rate = + rtlpriv->cfg->maps[RTL_RC_CCK_RATE2M]; + tcb_desc->use_driver_rate = 1; + tcb_desc->ratr_index = RATR_INX_WIRELESS_MC; + } else { + tcb_desc->ratr_index = ratr_index; + } + } else if (mac->opmode == NL80211_IFTYPE_AP) { + tcb_desc->ratr_index = ratr_index; + } + } + + if (rtlpriv->dm.b_useramask) { + tcb_desc->ratr_index = ratr_index; + /* TODO we will differentiate adhoc and station futrue */ + if (mac->opmode == NL80211_IFTYPE_STATION || + mac->opmode == NL80211_IFTYPE_MESH_POINT) { + tcb_desc->mac_id = 0; + + if (mac->mode == WIRELESS_MODE_N_24G) { + tcb_desc->ratr_index = RATR_INX_WIRELESS_NGB; + } else if (mac->mode == WIRELESS_MODE_N_5G) { + tcb_desc->ratr_index = RATR_INX_WIRELESS_NG; + } else if (mac->mode & WIRELESS_MODE_G) { + tcb_desc->ratr_index = RATR_INX_WIRELESS_GB; + } else if (mac->mode & WIRELESS_MODE_B) { + tcb_desc->ratr_index = RATR_INX_WIRELESS_B; + } else if (mac->mode & WIRELESS_MODE_A) { + tcb_desc->ratr_index = RATR_INX_WIRELESS_G; + } + } else if (mac->opmode == NL80211_IFTYPE_AP || + mac->opmode == NL80211_IFTYPE_ADHOC) { + if (NULL != sta) { + if (sta->aid > 0) { + tcb_desc->mac_id = sta->aid + 1; + } else { + tcb_desc->mac_id = 1; + } + } else { + tcb_desc->mac_id = 0; + } + } + } +} + +static void _rtl_query_bandwidth_mode(struct ieee80211_hw *hw, + struct ieee80211_sta *sta, + struct rtl_tcb_desc *tcb_desc) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + + tcb_desc->b_packet_bw = false; + if (!sta) + return; + if (mac->opmode == NL80211_IFTYPE_AP || + mac->opmode == NL80211_IFTYPE_ADHOC || + mac->opmode == NL80211_IFTYPE_MESH_POINT) { + if (!(sta->ht_cap.ht_supported) || + !(sta->ht_cap.cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40)) + return; + } else if (mac->opmode == NL80211_IFTYPE_STATION) { + if (!mac->bw_40 || !(sta->ht_cap.ht_supported)) + return; + } + if (tcb_desc->b_multicast || tcb_desc->b_broadcast) + return; + + /*use legency rate, shall use 20MHz */ + if (tcb_desc->hw_rate <= rtlpriv->cfg->maps[RTL_RC_OFDM_RATE54M]) + return; + + tcb_desc->b_packet_bw = true; +} + +static u8 _rtl_get_highest_n_rate(struct ieee80211_hw *hw, + struct ieee80211_sta *sta) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + u8 hw_rate; + + if ((get_rf_type(rtlphy) == RF_2T2R) && (sta->ht_cap.mcs.rx_mask[1]!=0)) + hw_rate = rtlpriv->cfg->maps[RTL_RC_HT_RATEMCS15]; + else + hw_rate = rtlpriv->cfg->maps[RTL_RC_HT_RATEMCS7]; + + return hw_rate; +} + +void rtl_get_tcb_desc(struct ieee80211_hw *hw, + struct ieee80211_tx_info *info, + struct ieee80211_sta *sta, + struct sk_buff *skb, struct rtl_tcb_desc *tcb_desc) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *rtlmac = rtl_mac(rtl_priv(hw)); + struct ieee80211_hdr *hdr = rtl_get_hdr(skb); + struct ieee80211_rate *txrate; + u16 fc = rtl_get_fc(skb); + + txrate = ieee80211_get_tx_rate(hw, info); + if (txrate != NULL) + tcb_desc->hw_rate = txrate->hw_value; + + if (ieee80211_is_data(fc)) { + /* + *we set data rate INX 0 + *in rtl_rc.c if skb is special data or + *mgt which need low data rate. + */ + + /* + *So tcb_desc->hw_rate is just used for + *special data and mgt frames + */ + if (info->control.rates[0].idx == 0 || + ieee80211_is_nullfunc(fc)) { + tcb_desc->use_driver_rate = true; + tcb_desc->ratr_index = RATR_INX_WIRELESS_MC; + + tcb_desc->disable_ratefallback = 1; + } else { + /* + *because hw will nerver use hw_rate + *when tcb_desc->use_driver_rate = false + *so we never set highest N rate here, + *and N rate will all be controled by FW + *when tcb_desc->use_driver_rate = false + */ + if (sta && (sta->ht_cap.ht_supported)) { + tcb_desc->hw_rate = _rtl_get_highest_n_rate(hw, sta); + } else { + if(rtlmac->mode == WIRELESS_MODE_B) { + tcb_desc->hw_rate = + rtlpriv->cfg->maps[RTL_RC_CCK_RATE11M]; + } else { + tcb_desc->hw_rate = + rtlpriv->cfg->maps[RTL_RC_OFDM_RATE54M]; + } + } + } + + if (is_multicast_ether_addr(ieee80211_get_DA(hdr))) + tcb_desc->b_multicast = 1; + else if (is_broadcast_ether_addr(ieee80211_get_DA(hdr))) + tcb_desc->b_broadcast = 1; + + _rtl_txrate_selectmode(hw, sta, tcb_desc); + _rtl_query_bandwidth_mode(hw, sta, tcb_desc); + _rtl_qurey_shortpreamble_mode(hw, tcb_desc, info); + _rtl_query_shortgi(hw, sta, tcb_desc, info); + _rtl_query_protection_mode(hw, tcb_desc, info); + } else { + tcb_desc->use_driver_rate = true; + tcb_desc->ratr_index = RATR_INX_WIRELESS_MC; + tcb_desc->disable_ratefallback = 1; + tcb_desc->mac_id = 0; + tcb_desc->b_packet_bw = false; + } +} +//EXPORT_SYMBOL(rtl_get_tcb_desc); + +bool rtl_tx_mgmt_proc(struct ieee80211_hw *hw, struct sk_buff *skb) +{ + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct rtl_priv *rtlpriv = rtl_priv(hw); + u16 fc = rtl_get_fc(skb); + + if (rtlpriv->dm.supp_phymode_switch && + mac->link_state < MAC80211_LINKED && + (ieee80211_is_auth(fc) || ieee80211_is_probe_req(fc))) { + if (rtlpriv->cfg->ops->check_switch_to_dmdp) + rtlpriv->cfg->ops->check_switch_to_dmdp(hw); + } + if (ieee80211_is_auth(fc)) { + RT_TRACE(COMP_SEND, DBG_DMESG, ("MAC80211_LINKING\n")); + rtl_ips_nic_on(hw); + + mac->link_state = MAC80211_LINKING; + /* Dul mac */ + rtlpriv->phy.b_need_iqk = true; + + } + + return true; +} + +struct sk_buff *rtl_make_del_ba(struct ieee80211_hw *hw, u8 *sa, + u8 *bssid, u16 tid); +bool rtl_action_proc(struct ieee80211_hw *hw, struct sk_buff *skb, u8 is_tx) +{ + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct ieee80211_hdr *hdr = rtl_get_hdr(skb); + struct rtl_priv *rtlpriv = rtl_priv(hw); + u16 fc = rtl_get_fc(skb); + u8 *act = (u8 *) (((u8 *) skb->data + MAC80211_3ADDR_LEN)); + u8 category; + + if (!ieee80211_is_action(fc)) + return true; + + category = *act; + act++; + switch (category) { + case ACT_CAT_BA: + switch (*act) { + case ACT_ADDBAREQ: + if (mac->act_scanning) + return false; + + RT_TRACE((COMP_SEND | COMP_RECV), DBG_DMESG, + ("%s ACT_ADDBAREQ From :%pM\n", + is_tx ? "Tx" : "Rx", hdr->addr2)); + RT_PRINT_DATA(rtlpriv, COMP_INIT, DBG_DMESG, ("req \n"), + skb->data, skb->len); + if (!is_tx) { + struct ieee80211_sta *sta = NULL; + struct rtl_sta_info *sta_entry = NULL; + struct ieee80211_mgmt *mgmt = (void *)skb->data; + u16 capab = 0, tid = 0; + struct rtl_tid_data *tid_data; + struct sk_buff *skb_delba = NULL; + struct ieee80211_rx_status rx_status = { 0 }; + + rcu_read_lock(); + sta = rtl_find_sta(hw, hdr->addr3); + if (sta == NULL) { + RT_TRACE((COMP_SEND | COMP_RECV), + DBG_EMERG, ("sta is NULL\n")); + rcu_read_unlock(); + return true; + } + + sta_entry = (struct rtl_sta_info *)sta->drv_priv; + if (!sta_entry) { + rcu_read_unlock(); + return true; + } + capab = le16_to_cpu(mgmt->u.action.u.addba_req.capab); + tid = (capab & IEEE80211_ADDBA_PARAM_TID_MASK) >> 2; + tid_data = &sta_entry->tids[tid]; + if (tid_data->agg.rx_agg_state == + RTL_RX_AGG_START) { + skb_delba = rtl_make_del_ba(hw, + hdr->addr2, + hdr->addr3, + tid); + if (skb_delba) { +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)) + rx_status.freq = hw->conf.chandef.chan->center_freq; + rx_status.band = hw->conf.chandef.chan->band; +#else + rx_status.freq = hw->conf.channel->center_freq; + rx_status.band = hw->conf.channel->band; +#endif + rx_status.flag |= RX_FLAG_DECRYPTED; + rx_status.flag |= RX_FLAG_MACTIME_MPDU; + rx_status.rate_idx = 0; + rx_status.signal = 50 + 10; + memcpy(IEEE80211_SKB_RXCB(skb_delba), &rx_status, + sizeof(rx_status)); + RT_PRINT_DATA(rtlpriv, COMP_INIT, DBG_DMESG, + ("fake del\n"), skb_delba->data, + skb_delba->len); + ieee80211_rx_irqsafe(hw, skb_delba); + } + } + rcu_read_unlock(); + } + break; + case ACT_ADDBARSP: + RT_TRACE((COMP_SEND | COMP_RECV), DBG_DMESG, + ("%s ACT_ADDBARSP From :%pM\n", + is_tx ? "Tx" : "Rx", hdr->addr2)); + break; + case ACT_DELBA: + RT_TRACE((COMP_SEND | COMP_RECV), DBG_DMESG, + ("ACT_ADDBADEL From :%pM\n", hdr->addr2)); + break; + } + break; + default: + break; + } + + return true; +} + +/*should call before software enc*/ +u8 rtl_is_special_data(struct ieee80211_hw *hw, struct sk_buff *skb, u8 is_tx) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + u16 fc = rtl_get_fc(skb); + u16 ether_type; + u8 mac_hdr_len = ieee80211_get_hdrlen_from_skb(skb); + const struct iphdr *ip; + + if (!ieee80211_is_data(fc)) + goto end; + + + ip = (struct iphdr *)((u8 *) skb->data + mac_hdr_len + + SNAP_SIZE + PROTOC_TYPE_SIZE); + ether_type = *(u16 *) ((u8 *) skb->data + mac_hdr_len + SNAP_SIZE); + ether_type = ntohs(ether_type); + + if (ETH_P_IP == ether_type) { + if (IPPROTO_UDP == ip->protocol) { + struct udphdr *udp = (struct udphdr *)((u8 *) ip + + (ip->ihl << 2)); + if (((((u8 *) udp)[1] == 68) && + (((u8 *) udp)[3] == 67)) || + ((((u8 *) udp)[1] == 67) && + (((u8 *) udp)[3] == 68))) { + /* + * 68 : UDP BOOTP client + * 67 : UDP BOOTP server + */ + RT_TRACE((COMP_SEND | COMP_RECV), + DBG_DMESG, ("dhcp %s !!\n", + (is_tx) ? "Tx" : "Rx")); + + if (is_tx) { + rtlpriv->ra.is_special_data = true; + rtl_lps_leave(hw); + ppsc->last_delaylps_stamp_jiffies = + jiffies; + } + + return true; + } + } + } else if (ETH_P_ARP == ether_type) { + if (is_tx) { + rtlpriv->ra.is_special_data = true; + rtl_lps_leave(hw); + ppsc->last_delaylps_stamp_jiffies = jiffies; + } + + return true; + } else if (ETH_P_PAE == ether_type) { + RT_TRACE((COMP_SEND | COMP_RECV), DBG_DMESG, + ("802.1X %s EAPOL pkt!!\n", (is_tx) ? "Tx" : "Rx")); + + if (is_tx) { + rtlpriv->ra.is_special_data = true; + rtl_lps_leave(hw); + ppsc->last_delaylps_stamp_jiffies = jiffies; + } + + return true; + } else if (0x86DD == ether_type) { + return true; + } + +end: + rtlpriv->ra.is_special_data = false; + return false; +} + +/********************************************************* + * + * functions called by core.c + * + *********************************************************/ +int rtl_tx_agg_start(struct ieee80211_hw *hw, struct ieee80211_vif *vif, + struct ieee80211_sta *sta, u16 tid, u16 *ssn) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_tid_data *tid_data; + struct rtl_sta_info *sta_entry = NULL; + + if (sta == NULL) + return -EINVAL; + + if (unlikely(tid >= MAX_TID_COUNT)) + return -EINVAL; + + sta_entry = (struct rtl_sta_info *)sta->drv_priv; + if (!sta_entry) + return -ENXIO; + tid_data = &sta_entry->tids[tid]; + + RT_TRACE(COMP_SEND, DBG_DMESG, + ("on ra = %pM tid = %d seq:%d\n", sta->addr, tid, + tid_data->seq_number)); + + *ssn = tid_data->seq_number; + tid_data->agg.agg_state = RTL_AGG_START; + + ieee80211_start_tx_ba_cb_irqsafe(vif, sta->addr, tid); + return 0; +} + +int rtl_tx_agg_stop(struct ieee80211_hw *hw, struct ieee80211_vif *vif, + struct ieee80211_sta *sta, u16 tid) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_tid_data *tid_data; + struct rtl_sta_info *sta_entry = NULL; + + if (sta == NULL) + return -EINVAL; + + if (!sta->addr) { + RT_TRACE(COMP_ERR, DBG_EMERG, ("ra = NULL\n")); + return -EINVAL; + } + + RT_TRACE(COMP_SEND, DBG_DMESG, + ("on ra = %pM tid = %d\n", sta->addr, tid)); + + if (unlikely(tid >= MAX_TID_COUNT)) + return -EINVAL; + + sta_entry = (struct rtl_sta_info *)sta->drv_priv; + tid_data = &sta_entry->tids[tid]; + sta_entry->tids[tid].agg.agg_state = RTL_AGG_STOP; + + ieee80211_stop_tx_ba_cb_irqsafe(vif, sta->addr, tid); + return 0; +} + +int rtl_rx_agg_start(struct ieee80211_hw *hw, + struct ieee80211_sta *sta, u16 tid) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_tid_data *tid_data; + struct rtl_sta_info *sta_entry = NULL; + + if (sta == NULL) + return -EINVAL; + + if (unlikely(tid >= MAX_TID_COUNT)) + return -EINVAL; + + sta_entry = (struct rtl_sta_info *)sta->drv_priv; + if (!sta_entry) + return -ENXIO; + tid_data = &sta_entry->tids[tid]; + + RT_TRACE(COMP_RECV, DBG_DMESG, + ("on ra = %pM tid = %d seq:%d\n", sta->addr, tid, + tid_data->seq_number)); + + tid_data->agg.rx_agg_state = RTL_RX_AGG_START; + return 0; +} + +int rtl_rx_agg_stop(struct ieee80211_hw *hw, + struct ieee80211_sta *sta, u16 tid) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_tid_data *tid_data; + struct rtl_sta_info *sta_entry = NULL; + + if (sta == NULL) + return -EINVAL; + + if (!sta->addr) { + RT_TRACE(COMP_ERR, DBG_EMERG, ("ra = NULL\n")); + return -EINVAL; + } + + RT_TRACE(COMP_SEND, DBG_DMESG, + ("on ra = %pM tid = %d\n", sta->addr, tid)); + + if (unlikely(tid >= MAX_TID_COUNT)) + return -EINVAL; + + sta_entry = (struct rtl_sta_info *)sta->drv_priv; + tid_data = &sta_entry->tids[tid]; + sta_entry->tids[tid].agg.rx_agg_state = RTL_RX_AGG_STOP; + + return 0; +} +int rtl_tx_agg_oper(struct ieee80211_hw *hw, + struct ieee80211_sta *sta, u16 tid) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_tid_data *tid_data; + struct rtl_sta_info *sta_entry = NULL; + + if (sta == NULL) + return -EINVAL; + + if (!sta->addr) { + RT_TRACE(COMP_ERR, DBG_EMERG, ("ra = NULL\n")); + return -EINVAL; + } + + RT_TRACE(COMP_SEND, DBG_DMESG, + ("on ra = %pM tid = %d\n", sta->addr, tid)); + + if (unlikely(tid >= MAX_TID_COUNT)) + return -EINVAL; + + sta_entry = (struct rtl_sta_info *)sta->drv_priv; + tid_data = &sta_entry->tids[tid]; + sta_entry->tids[tid].agg.agg_state = RTL_AGG_OPERATIONAL; + + return 0; +} + +/********************************************************* + * + * wq & timer callback functions + * + *********************************************************/ +/* this function is used for roaming */ +void rtl_beacon_statistic(struct ieee80211_hw *hw, struct sk_buff *skb) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; + + if (rtlpriv->mac80211.opmode != NL80211_IFTYPE_STATION) + return; + + if (rtlpriv->mac80211.link_state < MAC80211_LINKED) + return; + + /* check if this really is a beacon */ + if (!ieee80211_is_beacon(hdr->frame_control) && + !ieee80211_is_probe_resp(hdr->frame_control)) + return; + + /* min. beacon length + FCS_LEN */ + if (skb->len <= 40 + FCS_LEN) + return; + + /* and only beacons from the associated BSSID, please */ + if (ether_addr_equal(hdr->addr3, rtlpriv->mac80211.bssid)) + return; + + rtlpriv->link_info.bcn_rx_inperiod ++; +} + +void rtl_watchdog_wq_callback(void *data) +{ + struct rtl_works *rtlworks = container_of_dwork_rtl(data, + struct rtl_works, + watchdog_wq); + struct ieee80211_hw *hw = rtlworks->hw; + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + bool b_busytraffic = false; + bool b_tx_busy_traffic = false; + bool b_rx_busy_traffic = false; + bool b_higher_busytraffic = false; + bool b_higher_busyrxtraffic = false; + u8 idx, tid; + u32 rx_cnt_inp4eriod = 0; + u32 tx_cnt_inp4eriod = 0; + u32 aver_rx_cnt_inperiod = 0; + u32 aver_tx_cnt_inperiod = 0; + u32 aver_tidtx_inperiod[MAX_TID_COUNT] = {0}; + u32 tidtx_inp4eriod[MAX_TID_COUNT] = {0}; + bool benter_ps = false; + + if (is_hal_stop(rtlhal)) + return; + + /* <1> Determine if action frame is allowed */ + if (mac->link_state > MAC80211_NOLINK) { + if (mac->cnt_after_linked < 20) + mac->cnt_after_linked++; + } else { + mac->cnt_after_linked = 0; + } + + /* <2> to check if traffic busy, if + * busytraffic we don't change channel */ + if (mac->link_state >= MAC80211_LINKED) { + + /* (1) get aver_rx_cnt_inperiod & aver_tx_cnt_inperiod */ + for (idx = 0; idx <= 2; idx++) { + rtlpriv->link_info.num_rx_in4period[idx] = + rtlpriv->link_info.num_rx_in4period[idx + 1]; + rtlpriv->link_info.num_tx_in4period[idx] = + rtlpriv->link_info.num_tx_in4period[idx + 1]; + } + rtlpriv->link_info.num_rx_in4period[3] = + rtlpriv->link_info.num_rx_inperiod; + rtlpriv->link_info.num_tx_in4period[3] = + rtlpriv->link_info.num_tx_inperiod; + for (idx = 0; idx <= 3; idx++) { + rx_cnt_inp4eriod += + rtlpriv->link_info.num_rx_in4period[idx]; + tx_cnt_inp4eriod += + rtlpriv->link_info.num_tx_in4period[idx]; + } + aver_rx_cnt_inperiod = rx_cnt_inp4eriod / 4; + aver_tx_cnt_inperiod = tx_cnt_inp4eriod / 4; + + /* (2) check traffic busy */ + if (aver_rx_cnt_inperiod > 100 || aver_tx_cnt_inperiod > 100) { + b_busytraffic = true; + if (aver_rx_cnt_inperiod > aver_tx_cnt_inperiod) + b_rx_busy_traffic = true; + else + b_tx_busy_traffic = false; + } + + /* Higher Tx/Rx data. */ + if (aver_rx_cnt_inperiod > 4000 || + aver_tx_cnt_inperiod > 4000) { + b_higher_busytraffic = true; + + /* Extremely high Rx data. */ + if (aver_rx_cnt_inperiod > 5000) + b_higher_busyrxtraffic = true; + } + + /* check every tid's tx traffic */ + for (tid = 0; tid <= 7; tid++) { + for (idx = 0; idx <= 2; idx++) + rtlpriv->link_info.tidtx_in4period[tid][idx] = + rtlpriv->link_info.tidtx_in4period[tid] + [idx + 1]; + rtlpriv->link_info.tidtx_in4period[tid][3] = + rtlpriv->link_info.tidtx_inperiod[tid]; + + for (idx = 0; idx <= 3; idx++) + tidtx_inp4eriod[tid] += + rtlpriv->link_info.tidtx_in4period[tid][idx]; + aver_tidtx_inperiod[tid] = tidtx_inp4eriod[tid] / 4; + if (aver_tidtx_inperiod[tid] > 5000) + rtlpriv->link_info.higher_busytxtraffic[tid] = + true; + else + rtlpriv->link_info.higher_busytxtraffic[tid] = + false; + } + + if (((rtlpriv->link_info.num_rx_inperiod + + rtlpriv->link_info.num_tx_inperiod) > 8) || + (rtlpriv->link_info.num_rx_inperiod > 2)) + benter_ps = false; + else + benter_ps = true; + + /* LeisurePS only work in infra mode. */ + if (benter_ps) + rtl_lps_enter(hw); + else + rtl_lps_leave(hw); + } + + rtlpriv->link_info.num_rx_inperiod = 0; + rtlpriv->link_info.num_tx_inperiod = 0; + for (tid = 0; tid <= 7; tid++) + rtlpriv->link_info.tidtx_inperiod[tid] = 0; + + rtlpriv->link_info.b_busytraffic = b_busytraffic; + rtlpriv->link_info.b_rx_busy_traffic = b_rx_busy_traffic; + rtlpriv->link_info.b_tx_busy_traffic = b_tx_busy_traffic; + rtlpriv->link_info.b_higher_busytraffic = b_higher_busytraffic; + rtlpriv->link_info.b_higher_busyrxtraffic = b_higher_busyrxtraffic; + + /* <3> DM */ + rtlpriv->cfg->ops->dm_watchdog(hw); + + /* <4> roaming */ + if (mac->link_state == MAC80211_LINKED && + mac->opmode == NL80211_IFTYPE_STATION) { + if ((rtlpriv->link_info.bcn_rx_inperiod + + rtlpriv->link_info.num_rx_inperiod) == 0) { + rtlpriv->link_info.roam_times++; + RT_TRACE(COMP_ERR, DBG_DMESG, ("AP off for %d s\n", + (rtlpriv->link_info.roam_times * 2))); + + /* if we can't recv beacon for 10s, + * we should reconnect this AP */ + if (rtlpriv->link_info.roam_times >= 5) { + RT_TRACE(COMP_ERR, DBG_EMERG, + ("AP off, try to reconnect now\n")); + rtlpriv->link_info.roam_times = 0; + ieee80211_connection_loss(rtlpriv->mac80211.vif); + } + } else { + rtlpriv->link_info.roam_times = 0; + } + } + rtlpriv->link_info.bcn_rx_inperiod = 0; +} + +void rtl_watch_dog_timer_callback(unsigned long data) +{ + struct ieee80211_hw *hw = (struct ieee80211_hw *)data; + struct rtl_priv *rtlpriv = rtl_priv(hw); + + queue_delayed_work(rtlpriv->works.rtl_wq, + &rtlpriv->works.watchdog_wq, 0); + + mod_timer(&rtlpriv->works.watchdog_timer, + jiffies + MSECS(RTL_WATCH_DOG_TIME)); +} +void rtl_fwevt_wq_callback(void *data) +{ + struct rtl_works *rtlworks = + container_of_dwork_rtl(data, struct rtl_works, fwevt_wq); + struct ieee80211_hw *hw = rtlworks->hw; + struct rtl_priv *rtlpriv = rtl_priv(hw); + + rtlpriv->cfg->ops->c2h_command_handle(hw); +} +void rtl_easy_concurrent_retrytimer_callback(unsigned long data) +{ + struct ieee80211_hw *hw = (struct ieee80211_hw *)data; + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_priv *buddy_priv = rtlpriv->buddy_priv; + + if(buddy_priv == NULL) + return; + + rtlpriv->cfg->ops->dualmac_easy_concurrent(hw); +} +/********************************************************* + * + * frame process functions + * + *********************************************************/ +u8 *rtl_find_ie(u8 *data, unsigned int len, u8 ie) +{ + struct ieee80211_mgmt *mgmt = (void *)data; + u8 *pos, *end; + + pos = (u8 *)mgmt->u.beacon.variable; + end = data + len; + while (pos < end) { + if (pos + 2 + pos[1] > end) + return NULL; + + if (pos[0] == ie) + return pos; + + pos += 2 + pos[1]; + } + return NULL; +} + +/* when we use 2 rx ants we send IEEE80211_SMPS_OFF */ +/* when we use 1 rx ant we send IEEE80211_SMPS_STATIC */ +struct sk_buff *rtl_make_smps_action(struct ieee80211_hw *hw, + enum ieee80211_smps_mode smps, + u8 *da, u8 *bssid) +{ + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + struct sk_buff *skb; + struct ieee80211_mgmt_compat *action_frame; + + /* 27 = header + category + action + smps mode */ + skb = dev_alloc_skb(27 + hw->extra_tx_headroom); + if (!skb) + return NULL; + + skb_reserve(skb, hw->extra_tx_headroom); + action_frame = (void *)skb_put(skb, 27); + memset(action_frame, 0, 27); + memcpy(action_frame->da, da, ETH_ALEN); + memcpy(action_frame->sa, rtlefuse->dev_addr, ETH_ALEN); + memcpy(action_frame->bssid, bssid, ETH_ALEN); + action_frame->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT | + IEEE80211_STYPE_ACTION); + action_frame->u.action.category = WLAN_CATEGORY_HT; + action_frame->u.action.u.ht_smps.action = WLAN_HT_ACTION_SMPS; + switch (smps) { + case IEEE80211_SMPS_AUTOMATIC:/* 0 */ + case IEEE80211_SMPS_NUM_MODES:/* 4 */ + WARN_ON(1); + case IEEE80211_SMPS_OFF:/* 1 */ /*MIMO_PS_NOLIMIT*/ + action_frame->u.action.u.ht_smps.smps_control = + WLAN_HT_SMPS_CONTROL_DISABLED;/* 0 */ + break; + case IEEE80211_SMPS_STATIC:/* 2 */ /*MIMO_PS_STATIC*/ + action_frame->u.action.u.ht_smps.smps_control = + WLAN_HT_SMPS_CONTROL_STATIC;/* 1 */ + break; + case IEEE80211_SMPS_DYNAMIC:/* 3 */ /*MIMO_PS_DYNAMIC*/ + action_frame->u.action.u.ht_smps.smps_control = + WLAN_HT_SMPS_CONTROL_DYNAMIC;/* 3 */ + break; + } + + return skb; +} + +int rtl_send_smps_action(struct ieee80211_hw *hw, + struct ieee80211_sta *sta, + enum ieee80211_smps_mode smps) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + struct sk_buff *skb = NULL; + struct rtl_tcb_desc tcb_desc; + u8 bssid[ETH_ALEN] = {0}; + + memset(&tcb_desc, 0, sizeof(struct rtl_tcb_desc)); + + if (rtlpriv->mac80211.act_scanning) + goto err_free; + + if (!sta) + goto err_free; + + if (unlikely(is_hal_stop(rtlhal) || ppsc->rfpwr_state != ERFON)) + goto err_free; + + if (!test_bit(RTL_STATUS_INTERFACE_START, &rtlpriv->status)) + goto err_free; + + if (rtlpriv->mac80211.opmode == NL80211_IFTYPE_AP) + memcpy(bssid, rtlpriv->efuse.dev_addr, ETH_ALEN); + else + memcpy(bssid, rtlpriv->mac80211.bssid, ETH_ALEN); + + skb = rtl_make_smps_action(hw, smps, sta->addr, bssid); + /* this is a type = mgmt * stype = action frame */ + if (skb) { + struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); + struct rtl_sta_info *sta_entry = + (struct rtl_sta_info *) sta->drv_priv; + sta_entry->mimo_ps = smps; + /* rtlpriv->cfg->ops->update_rate_tbl(hw, sta, 0); */ + + info->control.rates[0].idx = 0; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)) + info->band = hw->conf.chandef.chan->band; +#else + info->band = hw->conf.channel->band; +#endif +/**/ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0)) + info->control.sta = sta; + rtlpriv->intf_ops->adapter_tx(hw, skb, &tcb_desc); +#else +/**/ + rtlpriv->intf_ops->adapter_tx(hw, sta, skb, &tcb_desc); +/**/ +#endif +/**/ + } + return 1; + +err_free: + return 0; +} +//EXPORT_SYMBOL(rtl_send_smps_action); + +/* because mac80211 have issues when can receive del ba + * so here we just make a fake del_ba if we receive a ba_req + * but rx_agg was opened to let mac80211 release some ba + * related resources, so please this del_ba for tx */ +struct sk_buff *rtl_make_del_ba(struct ieee80211_hw *hw, + u8 *sa, u8 *bssid, u16 tid) +{ + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + struct sk_buff *skb; + struct ieee80211_mgmt *action_frame; + u16 params; + + /* 27 = header + category + action + smps mode */ + skb = dev_alloc_skb(34 + hw->extra_tx_headroom); + if (!skb) + return NULL; + + skb_reserve(skb, hw->extra_tx_headroom); + action_frame = (void *)skb_put(skb, 34); + memset(action_frame, 0, 34); + memcpy(action_frame->sa, sa, ETH_ALEN); + memcpy(action_frame->da, rtlefuse->dev_addr, ETH_ALEN); + memcpy(action_frame->bssid, bssid, ETH_ALEN); + action_frame->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT | + IEEE80211_STYPE_ACTION); + action_frame->u.action.category = WLAN_CATEGORY_BACK; + action_frame->u.action.u.delba.action_code = WLAN_ACTION_DELBA; + params = (u16)(1 << 11); /* bit 11 initiator */ + params |= (u16)(tid << 12); /* bit 15:12 TID number */ + + action_frame->u.action.u.delba.params = cpu_to_le16(params); + action_frame->u.action.u.delba.reason_code = + cpu_to_le16(WLAN_REASON_QSTA_TIMEOUT); + + return skb; +} + +/********************************************************* + * + * IOT functions + * + *********************************************************/ +static bool rtl_chk_vendor_ouisub(struct ieee80211_hw *hw, + struct octet_string vendor_ie) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + bool matched = false; + static u8 athcap_1[] = { 0x00, 0x03, 0x7F }; + static u8 athcap_2[] = { 0x00, 0x13, 0x74 }; + static u8 broadcap_1[] = { 0x00, 0x10, 0x18 }; + static u8 broadcap_2[] = { 0x00, 0x0a, 0xf7 }; + static u8 broadcap_3[] = { 0x00, 0x05, 0xb5 }; + static u8 racap[] = { 0x00, 0x0c, 0x43 }; + static u8 ciscocap[] = { 0x00, 0x40, 0x96 }; + static u8 marvcap[] = { 0x00, 0x50, 0x43 }; + + if (memcmp(vendor_ie.octet, athcap_1, 3) == 0 || + memcmp(vendor_ie.octet, athcap_2, 3) == 0) { + rtlpriv->mac80211.vendor = PEER_ATH; + matched = true; + } else if (memcmp(vendor_ie.octet, broadcap_1, 3) == 0 || + memcmp(vendor_ie.octet, broadcap_2, 3) == 0 || + memcmp(vendor_ie.octet, broadcap_3, 3) == 0) { + rtlpriv->mac80211.vendor = PEER_BROAD; + matched = true; + } else if (memcmp(vendor_ie.octet, racap, 3) == 0) { + rtlpriv->mac80211.vendor = PEER_RAL; + matched = true; + } else if (memcmp(vendor_ie.octet, ciscocap, 3) == 0) { + rtlpriv->mac80211.vendor = PEER_CISCO; + matched = true; + } else if (memcmp(vendor_ie.octet, marvcap, 3) == 0) { + rtlpriv->mac80211.vendor = PEER_MARV; + matched = true; + } + + return matched; +} + +bool rtl_find_221_ie(struct ieee80211_hw *hw, u8 *data, + unsigned int len) +{ + struct ieee80211_mgmt *mgmt = (void *)data; + struct octet_string vendor_ie; + u8 *pos, *end; + + pos = (u8 *)mgmt->u.beacon.variable; + end = data + len; + while (pos < end) { + if (pos[0] == 221) { + vendor_ie.length = pos[1]; + vendor_ie.octet = &pos[2]; + if (rtl_chk_vendor_ouisub(hw, vendor_ie)) + return true; + } + + if (pos + 2 + pos[1] > end) + return false; + + pos += 2 + pos[1]; + } + return false; +} + +void rtl_recognize_peer(struct ieee80211_hw *hw, u8 *data, unsigned int len) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct ieee80211_hdr *hdr = (void *)data; + u32 vendor = PEER_UNKNOWN; + + static u8 ap3_1[3] = { 0x00, 0x14, 0xbf }; + static u8 ap3_2[3] = { 0x00, 0x1a, 0x70 }; + static u8 ap3_3[3] = { 0x00, 0x1d, 0x7e }; + static u8 ap4_1[3] = { 0x00, 0x90, 0xcc }; + static u8 ap4_2[3] = { 0x00, 0x0e, 0x2e }; + static u8 ap4_3[3] = { 0x00, 0x18, 0x02 }; + static u8 ap4_4[3] = { 0x00, 0x17, 0x3f }; + static u8 ap4_5[3] = { 0x00, 0x1c, 0xdf }; + static u8 ap5_1[3] = { 0x00, 0x1c, 0xf0 }; + static u8 ap5_2[3] = { 0x00, 0x21, 0x91 }; + static u8 ap5_3[3] = { 0x00, 0x24, 0x01 }; + static u8 ap5_4[3] = { 0x00, 0x15, 0xe9 }; + static u8 ap5_5[3] = { 0x00, 0x17, 0x9A }; + static u8 ap5_6[3] = { 0x00, 0x18, 0xE7 }; + static u8 ap6_1[3] = { 0x00, 0x17, 0x94 }; + static u8 ap7_1[3] = { 0x00, 0x14, 0xa4 }; + + if (mac->opmode != NL80211_IFTYPE_STATION) + return; + + if (mac->link_state == MAC80211_NOLINK) { + mac->vendor = PEER_UNKNOWN; + return; + } + + if (mac->cnt_after_linked > 2) + return; + + /* check if this really is a beacon */ + if (!ieee80211_is_beacon(hdr->frame_control)) + return; + + /* min. beacon length + FCS_LEN */ + if (len <= 40 + FCS_LEN) + return; + + /* and only beacons from the associated BSSID, please */ + if (ether_addr_equal(hdr->addr3, rtlpriv->mac80211.bssid)) + return; + + if (rtl_find_221_ie(hw, data, len)) { + vendor = mac->vendor; + } + + if ((memcmp(mac->bssid, ap5_1, 3) == 0) || + (memcmp(mac->bssid, ap5_2, 3) == 0) || + (memcmp(mac->bssid, ap5_3, 3) == 0) || + (memcmp(mac->bssid, ap5_4, 3) == 0) || + (memcmp(mac->bssid, ap5_5, 3) == 0) || + (memcmp(mac->bssid, ap5_6, 3) == 0) || + vendor == PEER_ATH) { + vendor = PEER_ATH; + RT_TRACE(COMP_MAC80211, DBG_LOUD, ("=>ath find\n")); + } else if ((memcmp(mac->bssid, ap4_4, 3) == 0) || + (memcmp(mac->bssid, ap4_5, 3) == 0) || + (memcmp(mac->bssid, ap4_1, 3) == 0) || + (memcmp(mac->bssid, ap4_2, 3) == 0) || + (memcmp(mac->bssid, ap4_3, 3) == 0) || + vendor == PEER_RAL) { + RT_TRACE(COMP_MAC80211, DBG_LOUD, ("=>ral findn\n")); + vendor = PEER_RAL; + } else if (memcmp(mac->bssid, ap6_1, 3) == 0 || + vendor == PEER_CISCO) { + vendor = PEER_CISCO; + RT_TRACE(COMP_MAC80211, DBG_LOUD, ("=>cisco find\n")); + } else if ((memcmp(mac->bssid, ap3_1, 3) == 0) || + (memcmp(mac->bssid, ap3_2, 3) == 0) || + (memcmp(mac->bssid, ap3_3, 3) == 0) || + vendor == PEER_BROAD) { + RT_TRACE(COMP_MAC80211, DBG_LOUD, ("=>broad find\n")); + vendor = PEER_BROAD; + } else if (memcmp(mac->bssid, ap7_1, 3) == 0 || + vendor == PEER_MARV) { + vendor = PEER_MARV; + RT_TRACE(COMP_MAC80211, DBG_LOUD, ("=>marv find\n")); + } + + mac->vendor = vendor; +} + +/********************************************************* + * + * sysfs functions + * + *********************************************************/ +static ssize_t rtl_show_debug_level(struct device *d, + struct device_attribute *attr, char *buf) +{ + struct ieee80211_hw *hw = dev_get_drvdata(d); + struct rtl_priv *rtlpriv = rtl_priv(hw); + + return sprintf(buf, "0x%08X\n", rtlpriv->dbg.global_debuglevel); +} + +static ssize_t rtl_store_debug_level(struct device *d, + struct device_attribute *attr, + const char *buf, size_t count) +{ + struct ieee80211_hw *hw = dev_get_drvdata(d); + struct rtl_priv *rtlpriv = rtl_priv(hw); + unsigned long val; + int ret; + + ret = strict_strtoul(buf, 0, &val); + if (ret) { + printk(KERN_DEBUG "%s is not in hex or decimal form.\n", buf); + } else { + rtlpriv->dbg.global_debuglevel = val; + printk(KERN_DEBUG "debuglevel:%x\n", + rtlpriv->dbg.global_debuglevel); + } + + return strnlen(buf, count); +} + +static DEVICE_ATTR(debug_level, S_IWUSR | S_IRUGO, + rtl_show_debug_level, rtl_store_debug_level); + +static struct attribute *rtl_sysfs_entries[] = { + + &dev_attr_debug_level.attr, + + NULL +}; + +/* + * "name" is folder name witch will be + * put in device directory like : + * sys/devices/pci0000:00/0000:00:1c.4/ + * 0000:06:00.0/rtl_sysfs + */ +struct attribute_group rtl_attribute_group = { + .name = "rtlsysfs", + .attrs = rtl_sysfs_entries, +}; + +#ifdef VIF_TODO +/********************************************************* + * + * vif functions + * + *********************************************************/ +static inline struct ieee80211_vif * +rtl_get_vif(struct rtl_vif_info *vif_priv) +{ + return container_of((void *)vif_priv, struct ieee80211_vif, drv_priv); +} + +/* Protected by ar->mutex or RCU */ +struct ieee80211_vif *rtl_get_main_vif(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_vif_info *cvif; + + list_for_each_entry_rcu(cvif, &rtlpriv->vif_priv.vif_list, list) { + if (cvif->active) + return rtl_get_vif(cvif); + } + + return NULL; +} + +static inline bool is_main_vif(struct ieee80211_hw *hw, + struct ieee80211_vif *vif) +{ + bool ret; + + rcu_read_lock(); + ret = (rtl_get_main_vif(hw) == vif); + rcu_read_unlock(); + return ret; +} + +bool rtl_set_vif_info(struct ieee80211_hw *hw, struct ieee80211_vif *vif) +{ + struct rtl_vif_info *vif_info = (void *) vif->drv_priv; + struct rtl_priv *rtlpriv = rtl_priv(hw); + int vif_id = -1; + + if (rtlpriv->vif_priv.vifs >= MAX_VIRTUAL_MAC) { + RT_TRACE(COMP_ERR, DBG_WARNING, + ("vif number can not bigger than %d, now vifs is:%d\n", + MAX_VIRTUAL_MAC, rtlpriv->vif_priv.vifs)); + return false; + } + + rcu_read_lock(); + vif_id = bitmap_find_free_region(&rtlpriv->vif_priv.vif_bitmap, + MAX_VIRTUAL_MAC, 0); + RT_TRACE(COMP_MAC80211, DBG_DMESG, + ("%s vid_id:%d\n", __func__, vif_id)); + + if (vif_id < 0) { + rcu_read_unlock(); + return false; + } + + BUG_ON(rtlpriv->vif_priv.vif[vif_id].id != vif_id); + vif_info->active = true; + vif_info->id = vif_id; + vif_info->enable_beacon = false; + rtlpriv->vif_priv.vifs++; + if (rtlpriv->vif_priv.vifs > 1) { + rtlpriv->psc.b_inactiveps = false; + rtlpriv->psc.b_swctrl_lps = false; + rtlpriv->psc.b_fwctrl_lps = false; + } + + list_add_tail_rcu(&vif_info->list, &rtlpriv->vif_priv.vif_list); + rcu_assign_pointer(rtlpriv->vif_priv.vif[vif_id].vif, vif); + + RT_TRACE(COMP_MAC80211, DBG_DMESG, ("vifaddress:%p %p %p\n", + rtlpriv->vif_priv.vif[vif_id].vif, vif, rtl_get_main_vif(hw))); + + rcu_read_unlock(); + + return true; +} +#endif + + +#if 0 +MODULE_AUTHOR("lizhaoming "); +MODULE_AUTHOR("Realtek WlanFAE "); +MODULE_AUTHOR("Larry Finger "); +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("Realtek 802.11n PCI wireless core"); +#endif +struct rtl_global_var global_var = {}; + +int rtl_core_module_init(void) +{ + if (rtl_rate_control_register()) + printk(KERN_DEBUG "rtl: Unable to register rtl_rc," + "use default RC !!\n"); + + /* add proc for debug */ + rtl_proc_add_topdir(); + + /* init some global vars */ + INIT_LIST_HEAD(&global_var.glb_priv_list); + spin_lock_init(&global_var.glb_list_lock); + + return 0; +} + +void rtl_core_module_exit(void) +{ + /*RC*/ + rtl_rate_control_unregister(); + + /* add proc for debug */ + rtl_proc_remove_topdir(); +} + +#if 0 +module_init(rtl_core_module_init); +module_exit(rtl_core_module_exit); +#endif --- linux-3.13.0.orig/drivers/staging/rtl8821ae/base.h +++ linux-3.13.0/drivers/staging/rtl8821ae/base.h @@ -0,0 +1,159 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#ifndef __RTL_BASE_H__ +#define __RTL_BASE_H__ + +#include "compat.h" + +enum ap_peer { + PEER_UNKNOWN = 0, + PEER_RTL = 1, + PEER_RTL_92SE = 2, + PEER_BROAD = 3, + PEER_RAL = 4, + PEER_ATH = 5, + PEER_CISCO = 6, + PEER_MARV = 7, + PEER_AIRGO = 9, + PEER_MAX = 10, +} ; + +#define RTL_DUMMY_OFFSET 0 +#define RTL_DUMMY_UNIT 8 +#define RTL_TX_DUMMY_SIZE (RTL_DUMMY_OFFSET * RTL_DUMMY_UNIT) +#define RTL_TX_DESC_SIZE 32 +#define RTL_TX_HEADER_SIZE (RTL_TX_DESC_SIZE + RTL_TX_DUMMY_SIZE) + +#define HT_AMSDU_SIZE_4K 3839 +#define HT_AMSDU_SIZE_8K 7935 + +#define MAX_BIT_RATE_40MHZ_MCS15 300 /* Mbps */ +#define MAX_BIT_RATE_40MHZ_MCS7 150 /* Mbps */ + +#define RTL_RATE_COUNT_LEGACY 12 +#define RTL_CHANNEL_COUNT 14 + +#define FRAME_OFFSET_FRAME_CONTROL 0 +#define FRAME_OFFSET_DURATION 2 +#define FRAME_OFFSET_ADDRESS1 4 +#define FRAME_OFFSET_ADDRESS2 10 +#define FRAME_OFFSET_ADDRESS3 16 +#define FRAME_OFFSET_SEQUENCE 22 +#define FRAME_OFFSET_ADDRESS4 24 + +#define SET_80211_HDR_FRAME_CONTROL(_hdr, _val) \ + WRITEEF2BYTE(_hdr, _val) +#define SET_80211_HDR_TYPE_AND_SUBTYPE(_hdr, _val) \ + WRITEEF1BYTE(_hdr, _val) +#define SET_80211_HDR_PWR_MGNT(_hdr, _val) \ + SET_BITS_TO_LE_2BYTE(_hdr, 12, 1, _val) +#define SET_80211_HDR_TO_DS(_hdr, _val) \ + SET_BITS_TO_LE_2BYTE(_hdr, 8, 1, _val) + +#define SET_80211_PS_POLL_AID(_hdr, _val) \ + WRITEEF2BYTE(((u8*)(_hdr))+2, _val) +#define SET_80211_PS_POLL_BSSID(_hdr, _val) \ + CP_MACADDR(((u8*)(_hdr))+4, (u8*)(_val)) +#define SET_80211_PS_POLL_TA(_hdr, _val) \ + CP_MACADDR(((u8*)(_hdr))+10, (u8*)(_val)) + +#define SET_80211_HDR_DURATION(_hdr, _val) \ + WRITEEF2BYTE((u8*)(_hdr)+FRAME_OFFSET_DURATION, _val) +#define SET_80211_HDR_ADDRESS1(_hdr, _val) \ + CP_MACADDR((u8*)(_hdr)+FRAME_OFFSET_ADDRESS1, (u8*)(_val)) +#define SET_80211_HDR_ADDRESS2(_hdr, _val) \ + CP_MACADDR((u8*)(_hdr)+FRAME_OFFSET_ADDRESS2, (u8*)(_val)) +#define SET_80211_HDR_ADDRESS3(_hdr, _val) \ + CP_MACADDR((u8*)(_hdr)+FRAME_OFFSET_ADDRESS3, (u8*)(_val)) +#define SET_80211_HDR_FRAGMENT_SEQUENCE(_hdr, _val) \ + WRITEEF2BYTE((u8*)(_hdr)+FRAME_OFFSET_SEQUENCE, _val) + +#define SET_BEACON_PROBE_RSP_TIME_STAMP_LOW(__phdr, __val) \ + WRITEEF4BYTE(((u8*)(__phdr)) + 24, __val) +#define SET_BEACON_PROBE_RSP_TIME_STAMP_HIGH(__phdr, __val) \ + WRITEEF4BYTE(((u8*)(__phdr)) + 28, __val) +#define SET_BEACON_PROBE_RSP_BEACON_INTERVAL(__phdr, __val) \ + WRITEEF2BYTE(((u8*)(__phdr)) + 32, __val) +#define GET_BEACON_PROBE_RSP_CAPABILITY_INFO(__phdr) \ + READEF2BYTE(((u8*)(__phdr)) + 34) +#define SET_BEACON_PROBE_RSP_CAPABILITY_INFO(__phdr, __val) \ + WRITEEF2BYTE(((u8*)(__phdr)) + 34, __val) +#define MASK_BEACON_PROBE_RSP_CAPABILITY_INFO(__phdr, __val) \ + SET_BEACON_PROBE_RSP_CAPABILITY_INFO(__phdr, \ + (GET_BEACON_PROBE_RSP_CAPABILITY_INFO(__phdr) & (~(__val)))) + +int rtl_init_core(struct ieee80211_hw *hw); +void rtl_deinit_core(struct ieee80211_hw *hw); +void rtl_init_rx_config(struct ieee80211_hw *hw); +void rtl_init_rfkill(struct ieee80211_hw *hw); +void rtl_deinit_rfkill(struct ieee80211_hw *hw); + +void rtl_watch_dog_timer_callback(unsigned long data); +void rtl_deinit_deferred_work(struct ieee80211_hw *hw); + +bool rtl_action_proc(struct ieee80211_hw *hw, struct sk_buff *skb, u8 is_tx); +bool rtl_tx_mgmt_proc(struct ieee80211_hw *hw, struct sk_buff *skb); +u8 rtl_is_special_data(struct ieee80211_hw *hw, struct sk_buff *skb, u8 is_tx); + +void rtl_beacon_statistic(struct ieee80211_hw *hw, struct sk_buff *skb); +void rtl_watch_dog_timer_callback(unsigned long data); +int rtl_tx_agg_start(struct ieee80211_hw *hw, struct ieee80211_vif *vif, + struct ieee80211_sta *sta, u16 tid, u16 * ssn); +int rtl_tx_agg_stop(struct ieee80211_hw *hw, struct ieee80211_vif *vif, + struct ieee80211_sta *sta, u16 tid); +int rtl_tx_agg_oper(struct ieee80211_hw *hw, + struct ieee80211_sta *sta, u16 tid); +int rtl_rx_agg_start(struct ieee80211_hw *hw, + struct ieee80211_sta *sta, u16 tid); +int rtl_rx_agg_stop(struct ieee80211_hw *hw, + struct ieee80211_sta *sta, u16 tid); +void rtl_watchdog_wq_callback(void *data); +void rtl_fwevt_wq_callback(void *data); + +void rtl_get_tcb_desc(struct ieee80211_hw *hw, + struct ieee80211_tx_info *info, + struct ieee80211_sta *sta, + struct sk_buff *skb, struct rtl_tcb_desc *tcb_desc); + +int rtl_send_smps_action(struct ieee80211_hw *hw, + struct ieee80211_sta *sta, + enum ieee80211_smps_mode smps); +u8 *rtl_find_ie(u8 *data, unsigned int len, u8 ie); +void rtl_recognize_peer(struct ieee80211_hw *hw, u8 *data, unsigned int len); +u8 rtl_tid_to_ac(struct ieee80211_hw *hw, u8 tid); +extern struct attribute_group rtl_attribute_group; +void rtl_easy_concurrent_retrytimer_callback(unsigned long data); +extern struct rtl_global_var global_var; + +#ifdef VIF_TODO +struct ieee80211_vif *rtl_get_main_vif(struct ieee80211_hw *hw); +bool rtl_set_vif_info(struct ieee80211_hw *hw, struct ieee80211_vif *vif); +#endif +#endif --- linux-3.13.0.orig/drivers/staging/rtl8821ae/btcoexist/HalBtc8812a1Ant.c +++ linux-3.13.0/drivers/staging/rtl8821ae/btcoexist/HalBtc8812a1Ant.c @@ -0,0 +1,3976 @@ +//============================================================ +// Description: +// +// This file is for 8812a1ant Co-exist mechanism +// +// History +// 2012/11/15 Cosa first check in. +// +//============================================================ + +//============================================================ +// include files +//============================================================ +#include "halbt_precomp.h" +#if 1 +//============================================================ +// Global variables, these are static variables +//============================================================ +static COEX_DM_8812A_1ANT GLCoexDm8812a1Ant; +static PCOEX_DM_8812A_1ANT coex_dm=&GLCoexDm8812a1Ant; +static COEX_STA_8812A_1ANT GLCoexSta8812a1Ant; +static PCOEX_STA_8812A_1ANT coex_sta=&GLCoexSta8812a1Ant; + +const char *const GLBtInfoSrc8812a1Ant[]={ + "BT Info[wifi fw]", + "BT Info[bt rsp]", + "BT Info[bt auto report]", +}; + +//============================================================ +// local function proto type if needed +//============================================================ +//============================================================ +// local function start with halbtc8812a1ant_ +//============================================================ +#if 0 +void +halbtc8812a1ant_Reg0x550Bit3( + PBTC_COEXIST btcoexist, + BOOLEAN bSet + ) +{ + u1Byte u1tmp=0; + + u1tmp = btcoexist->btc_read_1byte(btcoexist, 0x550); + if(bSet) + { + u1tmp |= BIT3; + } + else + { + u1tmp &= ~BIT3; + } + btcoexist->btc_write_1byte(btcoexist, 0x550, u1tmp); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], set 0x550[3]=%d\n", (bSet? 1:0))); +} +#endif +u1Byte +halbtc8812a1ant_BtRssiState( + u1Byte level_num, + u1Byte rssi_thresh, + u1Byte rssi_thresh1 + ) +{ + s4Byte bt_rssi=0; + u1Byte bt_rssi_state; + + bt_rssi = coex_sta->bt_rssi; + + if(level_num == 2) + { + if( (coex_sta->pre_bt_rssi_state == BTC_RSSI_STATE_LOW) || + (coex_sta->pre_bt_rssi_state == BTC_RSSI_STATE_STAY_LOW)) + { + if(bt_rssi >= (rssi_thresh+BTC_RSSI_COEX_THRESH_TOL_8812A_1ANT)) + { + bt_rssi_state = BTC_RSSI_STATE_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state switch to High\n")); + } + else + { + bt_rssi_state = BTC_RSSI_STATE_STAY_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state stay at Low\n")); + } + } + else + { + if(bt_rssi < rssi_thresh) + { + bt_rssi_state = BTC_RSSI_STATE_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state switch to Low\n")); + } + else + { + bt_rssi_state = BTC_RSSI_STATE_STAY_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state stay at High\n")); + } + } + } + else if(level_num == 3) + { + if(rssi_thresh > rssi_thresh1) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi thresh error!!\n")); + return coex_sta->pre_bt_rssi_state; + } + + if( (coex_sta->pre_bt_rssi_state == BTC_RSSI_STATE_LOW) || + (coex_sta->pre_bt_rssi_state == BTC_RSSI_STATE_STAY_LOW)) + { + if(bt_rssi >= (rssi_thresh+BTC_RSSI_COEX_THRESH_TOL_8812A_1ANT)) + { + bt_rssi_state = BTC_RSSI_STATE_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state switch to Medium\n")); + } + else + { + bt_rssi_state = BTC_RSSI_STATE_STAY_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state stay at Low\n")); + } + } + else if( (coex_sta->pre_bt_rssi_state == BTC_RSSI_STATE_MEDIUM) || + (coex_sta->pre_bt_rssi_state == BTC_RSSI_STATE_STAY_MEDIUM)) + { + if(bt_rssi >= (rssi_thresh1+BTC_RSSI_COEX_THRESH_TOL_8812A_1ANT)) + { + bt_rssi_state = BTC_RSSI_STATE_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state switch to High\n")); + } + else if(bt_rssi < rssi_thresh) + { + bt_rssi_state = BTC_RSSI_STATE_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state switch to Low\n")); + } + else + { + bt_rssi_state = BTC_RSSI_STATE_STAY_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state stay at Medium\n")); + } + } + else + { + if(bt_rssi < rssi_thresh1) + { + bt_rssi_state = BTC_RSSI_STATE_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state switch to Medium\n")); + } + else + { + bt_rssi_state = BTC_RSSI_STATE_STAY_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state stay at High\n")); + } + } + } + + coex_sta->pre_bt_rssi_state = bt_rssi_state; + + return bt_rssi_state; +} + +u1Byte +halbtc8812a1ant_WifiRssiState( + PBTC_COEXIST btcoexist, + u1Byte index, + u1Byte level_num, + u1Byte rssi_thresh, + u1Byte rssi_thresh1 + ) +{ + s4Byte wifi_rssi=0; + u1Byte wifi_rssi_state; + + btcoexist->btc_get(btcoexist, BTC_GET_S4_WIFI_RSSI, &wifi_rssi); + + if(level_num == 2) + { + if( (coex_sta->pre_wifi_rssi_state[index] == BTC_RSSI_STATE_LOW) || + (coex_sta->pre_wifi_rssi_state[index] == BTC_RSSI_STATE_STAY_LOW)) + { + if(wifi_rssi >= (rssi_thresh+BTC_RSSI_COEX_THRESH_TOL_8812A_1ANT)) + { + wifi_rssi_state = BTC_RSSI_STATE_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state switch to High\n")); + } + else + { + wifi_rssi_state = BTC_RSSI_STATE_STAY_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state stay at Low\n")); + } + } + else + { + if(wifi_rssi < rssi_thresh) + { + wifi_rssi_state = BTC_RSSI_STATE_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state switch to Low\n")); + } + else + { + wifi_rssi_state = BTC_RSSI_STATE_STAY_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state stay at High\n")); + } + } + } + else if(level_num == 3) + { + if(rssi_thresh > rssi_thresh1) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI thresh error!!\n")); + return coex_sta->pre_wifi_rssi_state[index]; + } + + if( (coex_sta->pre_wifi_rssi_state[index] == BTC_RSSI_STATE_LOW) || + (coex_sta->pre_wifi_rssi_state[index] == BTC_RSSI_STATE_STAY_LOW)) + { + if(wifi_rssi >= (rssi_thresh+BTC_RSSI_COEX_THRESH_TOL_8812A_1ANT)) + { + wifi_rssi_state = BTC_RSSI_STATE_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state switch to Medium\n")); + } + else + { + wifi_rssi_state = BTC_RSSI_STATE_STAY_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state stay at Low\n")); + } + } + else if( (coex_sta->pre_wifi_rssi_state[index] == BTC_RSSI_STATE_MEDIUM) || + (coex_sta->pre_wifi_rssi_state[index] == BTC_RSSI_STATE_STAY_MEDIUM)) + { + if(wifi_rssi >= (rssi_thresh1+BTC_RSSI_COEX_THRESH_TOL_8812A_1ANT)) + { + wifi_rssi_state = BTC_RSSI_STATE_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state switch to High\n")); + } + else if(wifi_rssi < rssi_thresh) + { + wifi_rssi_state = BTC_RSSI_STATE_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state switch to Low\n")); + } + else + { + wifi_rssi_state = BTC_RSSI_STATE_STAY_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state stay at Medium\n")); + } + } + else + { + if(wifi_rssi < rssi_thresh1) + { + wifi_rssi_state = BTC_RSSI_STATE_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state switch to Medium\n")); + } + else + { + wifi_rssi_state = BTC_RSSI_STATE_STAY_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state stay at High\n")); + } + } + } + + coex_sta->pre_wifi_rssi_state[index] = wifi_rssi_state; + + return wifi_rssi_state; +} + +void +halbtc8812a1ant_MonitorBtEnableDisable( + PBTC_COEXIST btcoexist + ) +{ + static BOOLEAN pre_bt_disabled=false; + static u4Byte bt_disable_cnt=0; + BOOLEAN bt_active=true, bt_disable_by68=false, bt_disabled=false; + u4Byte u4_tmp=0; + + // This function check if bt is disabled + + if( coex_sta->high_priority_tx == 0 && + coex_sta->high_priority_rx == 0 && + coex_sta->low_priority_tx == 0 && + coex_sta->low_priority_rx == 0) + { + bt_active = false; + } + if( coex_sta->high_priority_tx == 0xffff && + coex_sta->high_priority_rx == 0xffff && + coex_sta->low_priority_tx == 0xffff && + coex_sta->low_priority_rx == 0xffff) + { + bt_active = false; + } + if(bt_active) + { + bt_disable_cnt = 0; + bt_disabled = false; + btcoexist->btc_set(btcoexist, BTC_SET_BL_BT_DISABLE, &bt_disabled); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, ("[BTCoex], BT is enabled !!\n")); + } + else + { + bt_disable_cnt++; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, ("[BTCoex], bt all counters=0, %d times!!\n", + bt_disable_cnt)); + if(bt_disable_cnt >= 2 ||bt_disable_by68) + { + bt_disabled = true; + btcoexist->btc_set(btcoexist, BTC_SET_BL_BT_DISABLE, &bt_disabled); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, ("[BTCoex], BT is disabled !!\n")); + } + } + if(pre_bt_disabled != bt_disabled) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, ("[BTCoex], BT is from %s to %s!!\n", + (pre_bt_disabled ? "disabled":"enabled"), + (bt_disabled ? "disabled":"enabled"))); + pre_bt_disabled = bt_disabled; + if(!bt_disabled) + { + } + else + { + } + } +} + +void +halbtc8812a1ant_MonitorBtCtr( + PBTC_COEXIST btcoexist + ) +{ + u4Byte reg_hp_tx_rx, reg_lp_tx_rx, u4_tmp; + u4Byte reg_hp_tx=0, reg_hp_rx=0, reg_lp_tx=0, reg_lp_rx=0; + u1Byte u1_tmp; + + reg_hp_tx_rx = 0x770; + reg_lp_tx_rx = 0x774; + + u4_tmp = btcoexist->btc_read_4byte(btcoexist, reg_hp_tx_rx); + reg_hp_tx = u4_tmp & bMaskLWord; + reg_hp_rx = (u4_tmp & bMaskHWord)>>16; + + u4_tmp = btcoexist->btc_read_4byte(btcoexist, reg_lp_tx_rx); + reg_lp_tx = u4_tmp & bMaskLWord; + reg_lp_rx = (u4_tmp & bMaskHWord)>>16; + + coex_sta->high_priority_tx = reg_hp_tx; + coex_sta->high_priority_rx = reg_hp_rx; + coex_sta->low_priority_tx = reg_lp_tx; + coex_sta->low_priority_rx = reg_lp_rx; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, ("[BTCoex], High Priority Tx/Rx (reg 0x%x)=%x(%d)/%x(%d)\n", + reg_hp_tx_rx, reg_hp_tx, reg_hp_tx, reg_hp_rx, reg_hp_rx)); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, ("[BTCoex], Low Priority Tx/Rx (reg 0x%x)=%x(%d)/%x(%d)\n", + reg_lp_tx_rx, reg_lp_tx, reg_lp_tx, reg_lp_rx, reg_lp_rx)); + + // reset counter + btcoexist->btc_write_1byte(btcoexist, 0x76e, 0xc); +} + +void +halbtc8812a1ant_QueryBtInfo( + PBTC_COEXIST btcoexist + ) +{ + u1Byte dataLen=3; + u1Byte buf[5] = {0}; + static u4Byte btInfoCnt=0; + + if(!btInfoCnt || + (coex_sta->bt_info_c2h_cnt[BT_INFO_SRC_8812A_1ANT_BT_RSP]-btInfoCnt)>2) + { + buf[0] = dataLen; + buf[1] = 0x1; // polling enable, 1=enable, 0=disable + buf[2] = 0x2; // polling time in seconds + buf[3] = 0x1; // auto report enable, 1=enable, 0=disable + + btcoexist->btc_set(btcoexist, BTC_SET_ACT_CTRL_BT_INFO, (PVOID)&buf[0]); + } + btInfoCnt = coex_sta->bt_info_c2h_cnt[BT_INFO_SRC_8812A_1ANT_BT_RSP]; +} +u1Byte +halbtc8812a1ant_ActionAlgorithm( + PBTC_COEXIST btcoexist + ) +{ + PBTC_STACK_INFO stack_info=&btcoexist->stack_info; + BOOLEAN bt_hs_on=false; + u1Byte algorithm=BT_8812A_1ANT_COEX_ALGO_UNDEFINED; + u1Byte num_of_diff_profile=0; + + btcoexist->btc_get(btcoexist, BTC_GET_BL_HS_OPERATION, &bt_hs_on); + + if(!stack_info->bt_link_exist) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], No profile exists!!!\n")); + return algorithm; + } + + if(stack_info->sco_exist) + num_of_diff_profile++; + if(stack_info->hid_exist) + num_of_diff_profile++; + if(stack_info->pan_exist) + num_of_diff_profile++; + if(stack_info->a2dp_exist) + num_of_diff_profile++; + + if(num_of_diff_profile == 1) + { + if(stack_info->sco_exist) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO only\n")); + algorithm = BT_8812A_1ANT_COEX_ALGO_SCO; + } + else + { + if(stack_info->hid_exist) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], HID only\n")); + algorithm = BT_8812A_1ANT_COEX_ALGO_HID; + } + else if(stack_info->a2dp_exist) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], A2DP only\n")); + algorithm = BT_8812A_1ANT_COEX_ALGO_A2DP; + } + else if(stack_info->pan_exist) + { + if(bt_hs_on) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], PAN(HS) only\n")); + algorithm = BT_8812A_1ANT_COEX_ALGO_PANHS; + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], PAN(EDR) only\n")); + algorithm = BT_8812A_1ANT_COEX_ALGO_PANEDR; + } + } + } + } + else if(num_of_diff_profile == 2) + { + if(stack_info->sco_exist) + { + if(stack_info->hid_exist) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + HID\n")); + algorithm = BT_8812A_1ANT_COEX_ALGO_HID; + } + else if(stack_info->a2dp_exist) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + A2DP ==> SCO\n")); + algorithm = BT_8812A_1ANT_COEX_ALGO_SCO; + } + else if(stack_info->pan_exist) + { + if(bt_hs_on) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + PAN(HS)\n")); + algorithm = BT_8812A_1ANT_COEX_ALGO_SCO; + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + PAN(EDR)\n")); + algorithm = BT_8812A_1ANT_COEX_ALGO_PANEDR_HID; + } + } + } + else + { + if( stack_info->hid_exist && + stack_info->a2dp_exist ) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], HID + A2DP\n")); + algorithm = BT_8812A_1ANT_COEX_ALGO_HID_A2DP; + } + else if( stack_info->hid_exist && + stack_info->pan_exist ) + { + if(bt_hs_on) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], HID + PAN(HS)\n")); + algorithm = BT_8812A_1ANT_COEX_ALGO_HID_A2DP; + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], HID + PAN(EDR)\n")); + algorithm = BT_8812A_1ANT_COEX_ALGO_PANEDR_HID; + } + } + else if( stack_info->pan_exist && + stack_info->a2dp_exist ) + { + if(bt_hs_on) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], A2DP + PAN(HS)\n")); + algorithm = BT_8812A_1ANT_COEX_ALGO_A2DP_PANHS; + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], A2DP + PAN(EDR)\n")); + algorithm = BT_8812A_1ANT_COEX_ALGO_PANEDR_A2DP; + } + } + } + } + else if(num_of_diff_profile == 3) + { + if(stack_info->sco_exist) + { + if( stack_info->hid_exist && + stack_info->a2dp_exist ) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + HID + A2DP ==> HID\n")); + algorithm = BT_8812A_1ANT_COEX_ALGO_HID; + } + else if( stack_info->hid_exist && + stack_info->pan_exist ) + { + if(bt_hs_on) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + HID + PAN(HS)\n")); + algorithm = BT_8812A_1ANT_COEX_ALGO_HID_A2DP; + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + HID + PAN(EDR)\n")); + algorithm = BT_8812A_1ANT_COEX_ALGO_PANEDR_HID; + } + } + else if( stack_info->pan_exist && + stack_info->a2dp_exist ) + { + if(bt_hs_on) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + A2DP + PAN(HS)\n")); + algorithm = BT_8812A_1ANT_COEX_ALGO_SCO; + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + A2DP + PAN(EDR) ==> HID\n")); + algorithm = BT_8812A_1ANT_COEX_ALGO_PANEDR_HID; + } + } + } + else + { + if( stack_info->hid_exist && + stack_info->pan_exist && + stack_info->a2dp_exist ) + { + if(bt_hs_on) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], HID + A2DP + PAN(HS)\n")); + algorithm = BT_8812A_1ANT_COEX_ALGO_HID_A2DP; + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], HID + A2DP + PAN(EDR)\n")); + algorithm = BT_8812A_1ANT_COEX_ALGO_HID_A2DP_PANEDR; + } + } + } + } + else if(num_of_diff_profile >= 3) + { + if(stack_info->sco_exist) + { + if( stack_info->hid_exist && + stack_info->pan_exist && + stack_info->a2dp_exist ) + { + if(bt_hs_on) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Error!!! SCO + HID + A2DP + PAN(HS)\n")); + + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + HID + A2DP + PAN(EDR)==>PAN(EDR)+HID\n")); + algorithm = BT_8812A_1ANT_COEX_ALGO_PANEDR_HID; + } + } + } + } + + return algorithm; +} + +BOOLEAN +halbtc8812a1ant_NeedToDecBtPwr( + PBTC_COEXIST btcoexist + ) +{ + BOOLEAN ret=false; + BOOLEAN bt_hs_on=false, wifi_connected=false; + s4Byte bt_hs_rssi=0; + + if(!btcoexist->btc_get(btcoexist, BTC_GET_BL_HS_OPERATION, &bt_hs_on)) + return false; + if(!btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_CONNECTED, &wifi_connected)) + return false; + if(!btcoexist->btc_get(btcoexist, BTC_GET_S4_HS_RSSI, &bt_hs_rssi)) + return false; + + if(wifi_connected) + { + if(bt_hs_on) + { + if(bt_hs_rssi > 37) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, ("[BTCoex], Need to decrease bt power for HS mode!!\n")); + ret = true; + } + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, ("[BTCoex], Need to decrease bt power for Wifi is connected!!\n")); + ret = true; + } + } + + return ret; +} + +void +halbtc8812a1ant_SetFwDacSwingLevel( + PBTC_COEXIST btcoexist, + u1Byte dac_swing_lvl + ) +{ + u1Byte h2c_parameter[1] ={0}; + + // There are several type of dacswing + // 0x18/ 0x10/ 0xc/ 0x8/ 0x4/ 0x6 + h2c_parameter[0] = dac_swing_lvl; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, ("[BTCoex], Set Dac Swing Level=0x%x\n", dac_swing_lvl)); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, ("[BTCoex], FW write 0x64=0x%x\n", h2c_parameter[0])); + + btcoexist->btc_fill_h2c(btcoexist, 0x64, 1, h2c_parameter); +} + +void +halbtc8812a1ant_SetFwDecBtPwr( + PBTC_COEXIST btcoexist, + BOOLEAN dec_bt_pwr + ) +{ + u1Byte dataLen=3; + u1Byte buf[5] = {0}; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, ("[BTCoex], decrease Bt Power : %s\n", + (dec_bt_pwr? "Yes!!":"No!!"))); + + buf[0] = dataLen; + buf[1] = 0x3; // OP_Code + buf[2] = 0x1; // OP_Code_Length + if(dec_bt_pwr) + buf[3] = 0x1; // OP_Code_Content + else + buf[3] = 0x0; + + btcoexist->btc_set(btcoexist, BTC_SET_ACT_CTRL_BT_COEX, (PVOID)&buf[0]); +} + +void +halbtc8812a1ant_DecBtPwr( + PBTC_COEXIST btcoexist, + BOOLEAN force_exec, + BOOLEAN dec_bt_pwr + ) +{ + return; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, ("[BTCoex], %s Dec BT power = %s\n", + (force_exec? "force to":""), ((dec_bt_pwr)? "ON":"OFF"))); + coex_dm->cur_dec_bt_pwr = dec_bt_pwr; + + if(!force_exec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], pre_dec_bt_pwr=%d, cur_dec_bt_pwr=%d\n", + coex_dm->pre_dec_bt_pwr, coex_dm->cur_dec_bt_pwr)); + + if(coex_dm->pre_dec_bt_pwr == coex_dm->cur_dec_bt_pwr) + return; + } + halbtc8812a1ant_SetFwDecBtPwr(btcoexist, coex_dm->cur_dec_bt_pwr); + + coex_dm->pre_dec_bt_pwr = coex_dm->cur_dec_bt_pwr; +} + +void +halbtc8812a1ant_SetFwBtLnaConstrain( + PBTC_COEXIST btcoexist, + BOOLEAN bt_lna_cons_on + ) +{ + u1Byte dataLen=3; + u1Byte buf[5] = {0}; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, ("[BTCoex], set BT LNA Constrain: %s\n", + (bt_lna_cons_on? "ON!!":"OFF!!"))); + + buf[0] = dataLen; + buf[1] = 0x2; // OP_Code + buf[2] = 0x1; // OP_Code_Length + if(bt_lna_cons_on) + buf[3] = 0x1; // OP_Code_Content + else + buf[3] = 0x0; + + btcoexist->btc_set(btcoexist, BTC_SET_ACT_CTRL_BT_COEX, (PVOID)&buf[0]); +} + +void +halbtc8812a1ant_SetBtLnaConstrain( + PBTC_COEXIST btcoexist, + BOOLEAN force_exec, + BOOLEAN bt_lna_cons_on + ) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, ("[BTCoex], %s BT Constrain = %s\n", + (force_exec? "force":""), ((bt_lna_cons_on)? "ON":"OFF"))); + coex_dm->bCurBtLnaConstrain = bt_lna_cons_on; + + if(!force_exec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], bPreBtLnaConstrain=%d, bCurBtLnaConstrain=%d\n", + coex_dm->bPreBtLnaConstrain, coex_dm->bCurBtLnaConstrain)); + + if(coex_dm->bPreBtLnaConstrain == coex_dm->bCurBtLnaConstrain) + return; + } + halbtc8812a1ant_SetFwBtLnaConstrain(btcoexist, coex_dm->bCurBtLnaConstrain); + + coex_dm->bPreBtLnaConstrain = coex_dm->bCurBtLnaConstrain; +} + +void +halbtc8812a1ant_SetFwBtPsdMode( + PBTC_COEXIST btcoexist, + u1Byte bt_psd_mode + ) +{ + u1Byte dataLen=3; + u1Byte buf[5] = {0}; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, ("[BTCoex], set BT PSD mode=0x%x\n", + bt_psd_mode)); + + buf[0] = dataLen; + buf[1] = 0x4; // OP_Code + buf[2] = 0x1; // OP_Code_Length + buf[3] = bt_psd_mode; // OP_Code_Content + + btcoexist->btc_set(btcoexist, BTC_SET_ACT_CTRL_BT_COEX, (PVOID)&buf[0]); +} + + +void +halbtc8812a1ant_SetBtPsdMode( + PBTC_COEXIST btcoexist, + BOOLEAN force_exec, + u1Byte bt_psd_mode + ) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, ("[BTCoex], %s BT PSD mode = 0x%x\n", + (force_exec? "force":""), bt_psd_mode)); + coex_dm->bCurBtPsdMode = bt_psd_mode; + + if(!force_exec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], bPreBtPsdMode=0x%x, bCurBtPsdMode=0x%x\n", + coex_dm->bPreBtPsdMode, coex_dm->bCurBtPsdMode)); + + if(coex_dm->bPreBtPsdMode == coex_dm->bCurBtPsdMode) + return; + } + halbtc8812a1ant_SetFwBtPsdMode(btcoexist, coex_dm->bCurBtPsdMode); + + coex_dm->bPreBtPsdMode = coex_dm->bCurBtPsdMode; +} + + +void +halbtc8812a1ant_SetBtAutoReport( + PBTC_COEXIST btcoexist, + BOOLEAN enable_auto_report + ) +{ +#if 0 + u1Byte h2c_parameter[1] ={0}; + + h2c_parameter[0] = 0; + + if(enable_auto_report) + { + h2c_parameter[0] |= BIT0; + } + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, ("[BTCoex], BT FW auto report : %s, FW write 0x68=0x%x\n", + (enable_auto_report? "Enabled!!":"Disabled!!"), h2c_parameter[0])); + + btcoexist->btc_fill_h2c(btcoexist, 0x68, 1, h2c_parameter); +#else + +#endif +} + +void +halbtc8812a1ant_BtAutoReport( + PBTC_COEXIST btcoexist, + BOOLEAN force_exec, + BOOLEAN enable_auto_report + ) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, ("[BTCoex], %s BT Auto report = %s\n", + (force_exec? "force to":""), ((enable_auto_report)? "Enabled":"Disabled"))); + coex_dm->cur_bt_auto_report = enable_auto_report; + + if(!force_exec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], pre_bt_auto_report=%d, cur_bt_auto_report=%d\n", + coex_dm->pre_bt_auto_report, coex_dm->cur_bt_auto_report)); + + if(coex_dm->pre_bt_auto_report == coex_dm->cur_bt_auto_report) + return; + } + halbtc8812a1ant_SetBtAutoReport(btcoexist, coex_dm->cur_bt_auto_report); + + coex_dm->pre_bt_auto_report = coex_dm->cur_bt_auto_report; +} + +void +halbtc8812a1ant_FwDacSwingLvl( + PBTC_COEXIST btcoexist, + BOOLEAN force_exec, + u1Byte fw_dac_swing_lvl + ) +{ + return; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, ("[BTCoex], %s set FW Dac Swing level = %d\n", + (force_exec? "force to":""), fw_dac_swing_lvl)); + coex_dm->cur_fw_dac_swing_lvl = fw_dac_swing_lvl; + + if(!force_exec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], pre_fw_dac_swing_lvl=%d, cur_fw_dac_swing_lvl=%d\n", + coex_dm->pre_fw_dac_swing_lvl, coex_dm->cur_fw_dac_swing_lvl)); + + if(coex_dm->pre_fw_dac_swing_lvl == coex_dm->cur_fw_dac_swing_lvl) + return; + } + + halbtc8812a1ant_SetFwDacSwingLevel(btcoexist, coex_dm->cur_fw_dac_swing_lvl); + + coex_dm->pre_fw_dac_swing_lvl = coex_dm->cur_fw_dac_swing_lvl; +} + +void +halbtc8812a1ant_SetSwRfRxLpfCorner( + PBTC_COEXIST btcoexist, + BOOLEAN rx_rf_shrink_on + ) +{ + if(rx_rf_shrink_on) + { + //Shrink RF Rx LPF corner + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], Shrink RF Rx LPF corner!!\n")); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1e, 0xfffff, 0xf0ff7); + } + else + { + //Resume RF Rx LPF corner + // After initialized, we can use coex_dm->bt_rf0x1e_backup + if(btcoexist->bInitilized) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], Resume RF Rx LPF corner!!\n")); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1e, 0xfffff, coex_dm->bt_rf0x1e_backup); + } + } +} + +void +halbtc8812a1ant_RfShrink( + PBTC_COEXIST btcoexist, + BOOLEAN force_exec, + BOOLEAN rx_rf_shrink_on + ) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, ("[BTCoex], %s turn Rx RF Shrink = %s\n", + (force_exec? "force to":""), ((rx_rf_shrink_on)? "ON":"OFF"))); + coex_dm->cur_rf_rx_lpf_shrink = rx_rf_shrink_on; + + if(!force_exec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, ("[BTCoex], pre_rf_rx_lpf_shrink=%d, cur_rf_rx_lpf_shrink=%d\n", + coex_dm->pre_rf_rx_lpf_shrink, coex_dm->cur_rf_rx_lpf_shrink)); + + if(coex_dm->pre_rf_rx_lpf_shrink == coex_dm->cur_rf_rx_lpf_shrink) + return; + } + halbtc8812a1ant_SetSwRfRxLpfCorner(btcoexist, coex_dm->cur_rf_rx_lpf_shrink); + + coex_dm->pre_rf_rx_lpf_shrink = coex_dm->cur_rf_rx_lpf_shrink; +} + +void +halbtc8812a1ant_SetSwPenaltyTxRateAdaptive( + PBTC_COEXIST btcoexist, + BOOLEAN low_penalty_ra + ) +{ + u1Byte u1_tmp; + + u1_tmp = btcoexist->btc_read_1byte(btcoexist, 0x4fd); + u1_tmp |= BIT0; + if(low_penalty_ra) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], Tx rate adaptive, set low penalty!!\n")); + u1_tmp &= ~BIT2; + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], Tx rate adaptive, set normal!!\n")); + u1_tmp |= BIT2; + } + + btcoexist->btc_write_1byte(btcoexist, 0x4fd, u1_tmp); +} + +void +halbtc8812a1ant_LowPenaltyRa( + PBTC_COEXIST btcoexist, + BOOLEAN force_exec, + BOOLEAN low_penalty_ra + ) +{ + return; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, ("[BTCoex], %s turn LowPenaltyRA = %s\n", + (force_exec? "force to":""), ((low_penalty_ra)? "ON":"OFF"))); + coex_dm->cur_low_penalty_ra = low_penalty_ra; + + if(!force_exec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, ("[BTCoex], pre_low_penalty_ra=%d, cur_low_penalty_ra=%d\n", + coex_dm->pre_low_penalty_ra, coex_dm->cur_low_penalty_ra)); + + if(coex_dm->pre_low_penalty_ra == coex_dm->cur_low_penalty_ra) + return; + } + halbtc8812a1ant_SetSwPenaltyTxRateAdaptive(btcoexist, coex_dm->cur_low_penalty_ra); + + coex_dm->pre_low_penalty_ra = coex_dm->cur_low_penalty_ra; +} + +void +halbtc8812a1ant_SetDacSwingReg( + PBTC_COEXIST btcoexist, + u4Byte level + ) +{ + u1Byte val=(u1Byte)level; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], Write SwDacSwing = 0x%x\n", level)); + btcoexist->btc_write_1byte_bitmask(btcoexist, 0xc5b, 0x3e, val); +} + +void +halbtc8812a1ant_SetSwFullTimeDacSwing( + PBTC_COEXIST btcoexist, + BOOLEAN sw_dac_swing_on, + u4Byte sw_dac_swing_lvl + ) +{ + if(sw_dac_swing_on) + { + halbtc8812a1ant_SetDacSwingReg(btcoexist, sw_dac_swing_lvl); + } + else + { + halbtc8812a1ant_SetDacSwingReg(btcoexist, 0x18); + } +} + + +void +halbtc8812a1ant_DacSwing( + PBTC_COEXIST btcoexist, + BOOLEAN force_exec, + BOOLEAN dac_swing_on, + u4Byte dac_swing_lvl + ) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, ("[BTCoex], %s turn DacSwing=%s, dac_swing_lvl=0x%x\n", + (force_exec? "force to":""), ((dac_swing_on)? "ON":"OFF"), dac_swing_lvl)); + coex_dm->cur_dac_swing_on = dac_swing_on; + coex_dm->cur_dac_swing_lvl = dac_swing_lvl; + + if(!force_exec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, ("[BTCoex], pre_dac_swing_on=%d, pre_dac_swing_lvl=0x%x, cur_dac_swing_on=%d, cur_dac_swing_lvl=0x%x\n", + coex_dm->pre_dac_swing_on, coex_dm->pre_dac_swing_lvl, + coex_dm->cur_dac_swing_on, coex_dm->cur_dac_swing_lvl)); + + if( (coex_dm->pre_dac_swing_on == coex_dm->cur_dac_swing_on) && + (coex_dm->pre_dac_swing_lvl == coex_dm->cur_dac_swing_lvl) ) + return; + } + delay_ms(30); + halbtc8812a1ant_SetSwFullTimeDacSwing(btcoexist, dac_swing_on, dac_swing_lvl); + + coex_dm->pre_dac_swing_on = coex_dm->cur_dac_swing_on; + coex_dm->pre_dac_swing_lvl = coex_dm->cur_dac_swing_lvl; +} + +void +halbtc8812a1ant_SetAdcBackOff( + PBTC_COEXIST btcoexist, + BOOLEAN adc_back_off + ) +{ + if(adc_back_off) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], BB BackOff Level On!\n")); + btcoexist->btc_write_1byte_bitmask(btcoexist, 0x8db, 0x60, 0x3); + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], BB BackOff Level Off!\n")); + btcoexist->btc_write_1byte_bitmask(btcoexist, 0x8db, 0x60, 0x1); + } +} + +void +halbtc8812a1ant_AdcBackOff( + PBTC_COEXIST btcoexist, + BOOLEAN force_exec, + BOOLEAN adc_back_off + ) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, ("[BTCoex], %s turn AdcBackOff = %s\n", + (force_exec? "force to":""), ((adc_back_off)? "ON":"OFF"))); + coex_dm->cur_adc_back_off = adc_back_off; + + if(!force_exec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, ("[BTCoex], pre_adc_back_off=%d, cur_adc_back_off=%d\n", + coex_dm->pre_adc_back_off, coex_dm->cur_adc_back_off)); + + if(coex_dm->pre_adc_back_off == coex_dm->cur_adc_back_off) + return; + } + halbtc8812a1ant_SetAdcBackOff(btcoexist, coex_dm->cur_adc_back_off); + + coex_dm->pre_adc_back_off = coex_dm->cur_adc_back_off; +} + +void +halbtc8812a1ant_SetAgcTable( + PBTC_COEXIST btcoexist, + BOOLEAN agc_table_en + ) +{ + u1Byte rssi_adjust_val=0; + + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0xef, 0xfffff, 0x02000); + if(agc_table_en) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], Agc Table On!\n")); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x3b, 0xfffff, 0x3fa58); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x3b, 0xfffff, 0x37a58); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x3b, 0xfffff, 0x2fa58); + rssi_adjust_val = 8; + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], Agc Table Off!\n")); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x3b, 0xfffff, 0x39258); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x3b, 0xfffff, 0x31258); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x3b, 0xfffff, 0x29258); + } + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0xef, 0xfffff, 0x0); + + // set rssi_adjust_val for wifi module. + btcoexist->btc_set(btcoexist, BTC_SET_U1_RSSI_ADJ_VAL_FOR_AGC_TABLE_ON, &rssi_adjust_val); +} + + +void +halbtc8812a1ant_AgcTable( + PBTC_COEXIST btcoexist, + BOOLEAN force_exec, + BOOLEAN agc_table_en + ) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, ("[BTCoex], %s %s Agc Table\n", + (force_exec? "force to":""), ((agc_table_en)? "Enable":"Disable"))); + coex_dm->cur_agc_table_en = agc_table_en; + + if(!force_exec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, ("[BTCoex], pre_agc_table_en=%d, cur_agc_table_en=%d\n", + coex_dm->pre_agc_table_en, coex_dm->cur_agc_table_en)); + + if(coex_dm->pre_agc_table_en == coex_dm->cur_agc_table_en) + return; + } + halbtc8812a1ant_SetAgcTable(btcoexist, agc_table_en); + + coex_dm->pre_agc_table_en = coex_dm->cur_agc_table_en; +} + +void +halbtc8812a1ant_SetCoexTable( + PBTC_COEXIST btcoexist, + u4Byte val0x6c0, + u4Byte val0x6c4, + u4Byte val0x6c8, + u1Byte val0x6cc + ) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], set coex table, set 0x6c0=0x%x\n", val0x6c0)); + btcoexist->btc_write_4byte(btcoexist, 0x6c0, val0x6c0); + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], set coex table, set 0x6c4=0x%x\n", val0x6c4)); + btcoexist->btc_write_4byte(btcoexist, 0x6c4, val0x6c4); + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], set coex table, set 0x6c8=0x%x\n", val0x6c8)); + btcoexist->btc_write_4byte(btcoexist, 0x6c8, val0x6c8); + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], set coex table, set 0x6cc=0x%x\n", val0x6cc)); + btcoexist->btc_write_1byte(btcoexist, 0x6cc, val0x6cc); +} + +void +halbtc8812a1ant_CoexTable( + PBTC_COEXIST btcoexist, + BOOLEAN force_exec, + u4Byte val0x6c0, + u4Byte val0x6c4, + u4Byte val0x6c8, + u1Byte val0x6cc + ) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, ("[BTCoex], %s write Coex Table 0x6c0=0x%x, 0x6c4=0x%x, 0x6c8=0x%x, 0x6cc=0x%x\n", + (force_exec? "force to":""), val0x6c0, val0x6c4, val0x6c8, val0x6cc)); + coex_dm->cur_val0x6c0 = val0x6c0; + coex_dm->cur_val0x6c4 = val0x6c4; + coex_dm->cur_val0x6c8 = val0x6c8; + coex_dm->cur_val0x6cc = val0x6cc; + + if(!force_exec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, ("[BTCoex], pre_val0x6c0=0x%x, pre_val0x6c4=0x%x, pre_val0x6c8=0x%x, pre_val0x6cc=0x%x !!\n", + coex_dm->pre_val0x6c0, coex_dm->pre_val0x6c4, coex_dm->pre_val0x6c8, coex_dm->pre_val0x6cc)); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, ("[BTCoex], cur_val0x6c0=0x%x, cur_val0x6c4=0x%x, cur_val0x6c8=0x%x, cur_val0x6cc=0x%x !!\n", + coex_dm->cur_val0x6c0, coex_dm->cur_val0x6c4, coex_dm->cur_val0x6c8, coex_dm->cur_val0x6cc)); + + if( (coex_dm->pre_val0x6c0 == coex_dm->cur_val0x6c0) && + (coex_dm->pre_val0x6c4 == coex_dm->cur_val0x6c4) && + (coex_dm->pre_val0x6c8 == coex_dm->cur_val0x6c8) && + (coex_dm->pre_val0x6cc == coex_dm->cur_val0x6cc) ) + return; + } + halbtc8812a1ant_SetCoexTable(btcoexist, val0x6c0, val0x6c4, val0x6c8, val0x6cc); + + coex_dm->pre_val0x6c0 = coex_dm->cur_val0x6c0; + coex_dm->pre_val0x6c4 = coex_dm->cur_val0x6c4; + coex_dm->pre_val0x6c8 = coex_dm->cur_val0x6c8; + coex_dm->pre_val0x6cc = coex_dm->cur_val0x6cc; +} + +void +halbtc8812a1ant_SetFwIgnoreWlanAct( + PBTC_COEXIST btcoexist, + BOOLEAN enable + ) +{ + u1Byte dataLen=3; + u1Byte buf[5] = {0}; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, ("[BTCoex], %s BT Ignore Wlan_Act\n", + (enable? "Enable":"Disable"))); + + buf[0] = dataLen; + buf[1] = 0x1; // OP_Code + buf[2] = 0x1; // OP_Code_Length + if(enable) + buf[3] = 0x1; // OP_Code_Content + else + buf[3] = 0x0; + + btcoexist->btc_set(btcoexist, BTC_SET_ACT_CTRL_BT_COEX, (PVOID)&buf[0]); +} + +void +halbtc8812a1ant_IgnoreWlanAct( + PBTC_COEXIST btcoexist, + BOOLEAN force_exec, + BOOLEAN enable + ) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, ("[BTCoex], %s turn Ignore WlanAct %s\n", + (force_exec? "force to":""), (enable? "ON":"OFF"))); + coex_dm->cur_ignore_wlan_act = enable; + + if(!force_exec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], pre_ignore_wlan_act = %d, cur_ignore_wlan_act = %d!!\n", + coex_dm->pre_ignore_wlan_act, coex_dm->cur_ignore_wlan_act)); + + if(coex_dm->pre_ignore_wlan_act == coex_dm->cur_ignore_wlan_act) + return; + } + halbtc8812a1ant_SetFwIgnoreWlanAct(btcoexist, enable); + + coex_dm->pre_ignore_wlan_act = coex_dm->cur_ignore_wlan_act; +} + +void +halbtc8812a1ant_SetFwPstdma( + PBTC_COEXIST btcoexist, + u1Byte byte1, + u1Byte byte2, + u1Byte byte3, + u1Byte byte4, + u1Byte byte5 + ) +{ + u1Byte h2c_parameter[5] ={0}; + + h2c_parameter[0] = byte1; + h2c_parameter[1] = byte2; + h2c_parameter[2] = byte3; + h2c_parameter[3] = byte4; + h2c_parameter[4] = byte5; + + coex_dm->ps_tdma_para[0] = byte1; + coex_dm->ps_tdma_para[1] = byte2; + coex_dm->ps_tdma_para[2] = byte3; + coex_dm->ps_tdma_para[3] = byte4; + coex_dm->ps_tdma_para[4] = byte5; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, ("[BTCoex], FW write 0x60(5bytes)=0x%x%08x\n", + h2c_parameter[0], + h2c_parameter[1]<<24|h2c_parameter[2]<<16|h2c_parameter[3]<<8|h2c_parameter[4])); + + btcoexist->btc_fill_h2c(btcoexist, 0x60, 5, h2c_parameter); +} + +void +halbtc8812a1ant_SetLpsRpwm( + PBTC_COEXIST btcoexist, + u1Byte lps_val, + u1Byte rpwm_val + ) +{ + u1Byte lps=lps_val; + u1Byte rpwm=rpwm_val; + + btcoexist->btc_set(btcoexist, BTC_SET_U1_1ANT_LPS, &lps); + btcoexist->btc_set(btcoexist, BTC_SET_U1_1ANT_RPWM, &rpwm); + + btcoexist->btc_set(btcoexist, BTC_SET_ACT_INC_FORCE_EXEC_PWR_CMD_CNT, NULL); +} + +void +halbtc8812a1ant_LpsRpwm( + PBTC_COEXIST btcoexist, + BOOLEAN force_exec, + u1Byte lps_val, + u1Byte rpwm_val + ) +{ + BOOLEAN bForceExecPwrCmd=false; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, ("[BTCoex], %s set lps/rpwm=0x%x/0x%x \n", + (force_exec? "force to":""), lps_val, rpwm_val)); + coex_dm->cur_lps = lps_val; + coex_dm->cur_rpwm = rpwm_val; + + if(!force_exec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], pre_lps/cur_lps=0x%x/0x%x, pre_rpwm/cur_rpwm=0x%x/0x%x!!\n", + coex_dm->pre_lps, coex_dm->cur_lps, coex_dm->pre_rpwm, coex_dm->cur_rpwm)); + + if( (coex_dm->pre_lps == coex_dm->cur_lps) && + (coex_dm->pre_rpwm == coex_dm->cur_rpwm) ) + { + return; + } + } + halbtc8812a1ant_SetLpsRpwm(btcoexist, lps_val, rpwm_val); + + coex_dm->pre_lps = coex_dm->cur_lps; + coex_dm->pre_rpwm = coex_dm->cur_rpwm; +} + +void +halbtc8812a1ant_SwMechanism1( + PBTC_COEXIST btcoexist, + BOOLEAN shrink_rx_lpf, + BOOLEAN low_penalty_ra, + BOOLEAN limited_dig, + BOOLEAN bt_lna_constrain + ) +{ + //halbtc8812a1ant_RfShrink(btcoexist, NORMAL_EXEC, shrink_rx_lpf); + //halbtc8812a1ant_LowPenaltyRa(btcoexist, NORMAL_EXEC, low_penalty_ra); + + //no limited DIG + //halbtc8812a1ant_SetBtLnaConstrain(btcoexist, NORMAL_EXEC, bt_lna_constrain); +} + +void +halbtc8812a1ant_SwMechanism2( + PBTC_COEXIST btcoexist, + BOOLEAN agc_table_shift, + BOOLEAN adc_back_off, + BOOLEAN sw_dac_swing, + u4Byte dac_swing_lvl + ) +{ + //halbtc8812a1ant_AgcTable(btcoexist, NORMAL_EXEC, agc_table_shift); + //halbtc8812a1ant_AdcBackOff(btcoexist, NORMAL_EXEC, adc_back_off); + //halbtc8812a1ant_DacSwing(btcoexist, NORMAL_EXEC, sw_dac_swing, dac_swing_lvl); +} + +void +halbtc8812a1ant_PsTdma( + PBTC_COEXIST btcoexist, + BOOLEAN force_exec, + BOOLEAN turn_on, + u1Byte type + ) +{ + BOOLEAN bTurnOnByCnt=false; + u1Byte psTdmaTypeByCnt=0, rssi_adjust_val=0; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, ("[BTCoex], %s turn %s PS TDMA, type=%d\n", + (force_exec? "force to":""), (turn_on? "ON":"OFF"), type)); + coex_dm->cur_ps_tdma_on = turn_on; + coex_dm->cur_ps_tdma = type; + + if(!force_exec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], pre_ps_tdma_on = %d, cur_ps_tdma_on = %d!!\n", + coex_dm->pre_ps_tdma_on, coex_dm->cur_ps_tdma_on)); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], pre_ps_tdma = %d, cur_ps_tdma = %d!!\n", + coex_dm->pre_ps_tdma, coex_dm->cur_ps_tdma)); + + if( (coex_dm->pre_ps_tdma_on == coex_dm->cur_ps_tdma_on) && + (coex_dm->pre_ps_tdma == coex_dm->cur_ps_tdma) ) + return; + } + if(turn_on) + { + switch(type) + { + default: + halbtc8812a1ant_SetFwPstdma(btcoexist, 0xd3, 0x1a, 0x1a, 0x0, 0x58); + break; + case 1: + halbtc8812a1ant_SetFwPstdma(btcoexist, 0xd3, 0x1a, 0x1a, 0x0, 0x48); + rssi_adjust_val = 11; + break; + case 2: + halbtc8812a1ant_SetFwPstdma(btcoexist, 0xd3, 0x12, 0x12, 0x0, 0x48); + rssi_adjust_val = 14; + break; + case 3: + halbtc8812a1ant_SetFwPstdma(btcoexist, 0x93, 0x25, 0x3, 0x10, 0x40); + break; + case 4: + halbtc8812a1ant_SetFwPstdma(btcoexist, 0x93, 0x15, 0x3, 0x14, 0x0); + rssi_adjust_val = 17; + break; + case 5: + halbtc8812a1ant_SetFwPstdma(btcoexist, 0x61, 0x15, 0x3, 0x31, 0x0); + break; + case 6: + halbtc8812a1ant_SetFwPstdma(btcoexist, 0x13, 0xa, 0x3, 0x0, 0x0); + break; + case 7: + halbtc8812a1ant_SetFwPstdma(btcoexist, 0x13, 0xc, 0x5, 0x0, 0x0); + break; + case 8: + halbtc8812a1ant_SetFwPstdma(btcoexist, 0x93, 0x25, 0x3, 0x10, 0x0); + break; + case 9: + halbtc8812a1ant_SetFwPstdma(btcoexist, 0xd3, 0xa, 0xa, 0x0, 0x48); + rssi_adjust_val = 18; + break; + case 10: + halbtc8812a1ant_SetFwPstdma(btcoexist, 0x13, 0xa, 0xa, 0x0, 0x40); + break; + case 11: + halbtc8812a1ant_SetFwPstdma(btcoexist, 0xd3, 0x5, 0x5, 0x0, 0x48); + rssi_adjust_val = 20; + break; + case 12: + halbtc8812a1ant_SetFwPstdma(btcoexist, 0xeb, 0xa, 0x3, 0x31, 0x18); + break; + + case 15: + halbtc8812a1ant_SetFwPstdma(btcoexist, 0x13, 0xa, 0x3, 0x8, 0x0); + break; + case 16: + halbtc8812a1ant_SetFwPstdma(btcoexist, 0x93, 0x15, 0x3, 0x10, 0x0); + rssi_adjust_val = 18; + break; + + case 18: + halbtc8812a1ant_SetFwPstdma(btcoexist, 0x93, 0x25, 0x3, 0x10, 0x0); + rssi_adjust_val = 14; + break; + + case 20: + halbtc8812a1ant_SetFwPstdma(btcoexist, 0x13, 0x25, 0x25, 0x0, 0x0); + break; + case 21: + halbtc8812a1ant_SetFwPstdma(btcoexist, 0x93, 0x20, 0x3, 0x10, 0x40); + break; + case 22: + halbtc8812a1ant_SetFwPstdma(btcoexist, 0x13, 0x8, 0x8, 0x0, 0x40); + break; + case 23: + halbtc8812a1ant_SetFwPstdma(btcoexist, 0xe3, 0x25, 0x3, 0x31, 0x18); + rssi_adjust_val = 22; + break; + case 24: + halbtc8812a1ant_SetFwPstdma(btcoexist, 0xe3, 0x15, 0x3, 0x31, 0x18); + rssi_adjust_val = 22; + break; + case 25: + halbtc8812a1ant_SetFwPstdma(btcoexist, 0xe3, 0xa, 0x3, 0x31, 0x18); + rssi_adjust_val = 22; + break; + case 26: + halbtc8812a1ant_SetFwPstdma(btcoexist, 0xe3, 0xa, 0x3, 0x31, 0x18); + rssi_adjust_val = 22; + break; + case 27: + halbtc8812a1ant_SetFwPstdma(btcoexist, 0xe3, 0x25, 0x3, 0x31, 0x98); + rssi_adjust_val = 22; + break; + case 28: + halbtc8812a1ant_SetFwPstdma(btcoexist, 0x69, 0x25, 0x3, 0x31, 0x0); + break; + case 29: + halbtc8812a1ant_SetFwPstdma(btcoexist, 0xab, 0x1a, 0x1a, 0x1, 0x8); + break; + case 30: + halbtc8812a1ant_SetFwPstdma(btcoexist, 0x93, 0x15, 0x3, 0x14, 0x0); + break; + case 31: + halbtc8812a1ant_SetFwPstdma(btcoexist, 0xd3, 0x1a, 0x1a, 0, 0x58); + break; + case 32: + halbtc8812a1ant_SetFwPstdma(btcoexist, 0xab, 0xa, 0x3, 0x31, 0x88); + break; + case 33: + halbtc8812a1ant_SetFwPstdma(btcoexist, 0xa3, 0x25, 0x3, 0x30, 0x88); + break; + case 34: + halbtc8812a1ant_SetFwPstdma(btcoexist, 0xd3, 0x1a, 0x1a, 0x0, 0x8); + break; + case 35: + halbtc8812a1ant_SetFwPstdma(btcoexist, 0xe3, 0x1a, 0x1a, 0x0, 0x8); + break; + case 36: + halbtc8812a1ant_SetFwPstdma(btcoexist, 0xd3, 0x12, 0x3, 0x14, 0x58); + break; + } + } + else + { + // disable PS tdma + switch(type) + { + case 8: + halbtc8812a1ant_SetFwPstdma(btcoexist, 0x8, 0x0, 0x0, 0x0, 0x0); + btcoexist->btc_write_1byte(btcoexist, 0x92c, 0x4); + break; + case 0: + default: + halbtc8812a1ant_SetFwPstdma(btcoexist, 0x0, 0x0, 0x0, 0x0, 0x0); + delay_ms(5); + btcoexist->btc_write_1byte(btcoexist, 0x92c, 0x20); + break; + case 9: + halbtc8812a1ant_SetFwPstdma(btcoexist, 0x0, 0x0, 0x0, 0x0, 0x0); + btcoexist->btc_write_1byte(btcoexist, 0x92c, 0x4); + break; + case 10: + halbtc8812a1ant_SetFwPstdma(btcoexist, 0x0, 0x0, 0x0, 0x8, 0x0); + delay_ms(5); + btcoexist->btc_write_1byte(btcoexist, 0x92c, 0x20); + break; + } + } + rssi_adjust_val =0; + btcoexist->btc_set(btcoexist, BTC_SET_U1_RSSI_ADJ_VAL_FOR_1ANT_COEX_TYPE, &rssi_adjust_val); + + // update pre state + coex_dm->pre_ps_tdma_on = coex_dm->cur_ps_tdma_on; + coex_dm->pre_ps_tdma = coex_dm->cur_ps_tdma; +} + +void +halbtc8812a1ant_CoexAllOff( + PBTC_COEXIST btcoexist + ) +{ + // fw all off + halbtc8812a1ant_FwDacSwingLvl(btcoexist, NORMAL_EXEC, 6); + halbtc8812a1ant_DecBtPwr(btcoexist, NORMAL_EXEC, false); + + // sw all off + halbtc8812a1ant_SwMechanism1(btcoexist,false,false,false,false); + halbtc8812a1ant_SwMechanism2(btcoexist,false,false,false,0x18); + + + // hw all off + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x55555555, 0x55555555, 0xffff, 0x3); +} + +void +halbtc8812a1ant_WifiParaAdjust( + PBTC_COEXIST btcoexist, + BOOLEAN enable + ) +{ + if(enable) + { + halbtc8812a1ant_LowPenaltyRa(btcoexist, NORMAL_EXEC, true); + } + else + { + halbtc8812a1ant_LowPenaltyRa(btcoexist, NORMAL_EXEC, false); + } +} + +BOOLEAN +halbtc8812a1ant_IsCommonAction( + PBTC_COEXIST btcoexist + ) +{ + BOOLEAN common=false, wifi_connected=false, wifi_busy=false; + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_CONNECTED, &wifi_connected); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_BUSY, &wifi_busy); + + //halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x55555555, 0x55555555, 0xffff, 0x3); + + if(!wifi_connected && + BT_8812A_1ANT_BT_STATUS_NON_CONNECTED_IDLE == coex_dm->bt_status) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Wifi non connected-idle + BT non connected-idle!!\n")); + halbtc8812a1ant_FwDacSwingLvl(btcoexist, NORMAL_EXEC, 6); + halbtc8812a1ant_DecBtPwr(btcoexist, NORMAL_EXEC, false); + + halbtc8812a1ant_SwMechanism1(btcoexist,false,false,false,false); + halbtc8812a1ant_SwMechanism2(btcoexist,false,false,false,0x18); + + common = true; + } + else if(wifi_connected && + (BT_8812A_1ANT_BT_STATUS_NON_CONNECTED_IDLE == coex_dm->bt_status) ) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Wifi connected + BT non connected-idle!!\n")); + halbtc8812a1ant_FwDacSwingLvl(btcoexist, NORMAL_EXEC, 6); + halbtc8812a1ant_DecBtPwr(btcoexist, NORMAL_EXEC, true); + + halbtc8812a1ant_SwMechanism1(btcoexist,false,false,false,false); + halbtc8812a1ant_SwMechanism2(btcoexist,false,false,false,0x18); + + common = true; + } + else if(!wifi_connected && + (BT_8812A_1ANT_BT_STATUS_CONNECTED_IDLE == coex_dm->bt_status) ) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Wifi non connected-idle + BT connected-idle!!\n")); + halbtc8812a1ant_FwDacSwingLvl(btcoexist, NORMAL_EXEC, 6); + halbtc8812a1ant_DecBtPwr(btcoexist, NORMAL_EXEC, false); + + halbtc8812a1ant_SwMechanism1(btcoexist,false,false,false,false); + halbtc8812a1ant_SwMechanism2(btcoexist,false,false,false,0x18); + + common = true; + } + else if(wifi_connected && + (BT_8812A_1ANT_BT_STATUS_CONNECTED_IDLE == coex_dm->bt_status) ) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Wifi connected + BT connected-idle!!\n")); + halbtc8812a1ant_FwDacSwingLvl(btcoexist, NORMAL_EXEC, 6); + halbtc8812a1ant_DecBtPwr(btcoexist, NORMAL_EXEC, false); + + halbtc8812a1ant_SwMechanism1(btcoexist,true,true,true,true); + halbtc8812a1ant_SwMechanism2(btcoexist,false,false,false,0x18); + + common = true; + } + else if(!wifi_connected && + (BT_8812A_1ANT_BT_STATUS_CONNECTED_IDLE != coex_dm->bt_status) ) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Wifi non connected-idle + BT Busy!!\n")); + halbtc8812a1ant_FwDacSwingLvl(btcoexist, NORMAL_EXEC, 6); + halbtc8812a1ant_DecBtPwr(btcoexist, NORMAL_EXEC, false); + + halbtc8812a1ant_SwMechanism1(btcoexist,false,false,false,false); + halbtc8812a1ant_SwMechanism2(btcoexist,false,false,false,0x18); + + common = true; + } + else + { + halbtc8812a1ant_SwMechanism1(btcoexist,true,true,true,true); + + common = false; + } + + return common; +} + + +void +halbtc8812a1ant_TdmaDurationAdjustForAcl( + PBTC_COEXIST btcoexist + ) +{ + static s4Byte up,dn,m,n,wait_count; + s4Byte result; //0: no change, +1: increase WiFi duration, -1: decrease WiFi duration + u1Byte retry_count=0, bt_info_ext; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, ("[BTCoex], halbtc8812a1ant_TdmaDurationAdjustForAcl()\n")); + if(coex_dm->reset_tdma_adjust) + { + coex_dm->reset_tdma_adjust = false; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], first run TdmaDurationAdjust()!!\n")); + + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 2); + coex_dm->ps_tdma_du_adj_type = 2; + //============ + up = 0; + dn = 0; + m = 1; + n= 3; + result = 0; + wait_count = 0; + } + else + { + //accquire the BT TRx retry count from BT_Info byte2 + retry_count = coex_sta->bt_retry_cnt; + bt_info_ext = coex_sta->bt_info_ext; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], retry_count = %d\n", retry_count)); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], up=%d, dn=%d, m=%d, n=%d, wait_count=%d\n", + up, dn, m, n, wait_count)); + result = 0; + wait_count++; + + if(retry_count == 0) // no retry in the last 2-second duration + { + up++; + dn--; + + if (dn <= 0) + dn = 0; + + if(up >= n) // if s n 2 retry count0, hռeWiFi duration + { + wait_count = 0; + n = 3; + up = 0; + dn = 0; + result = 1; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], Increase wifi duration!!\n")); + } + } + else if (retry_count <= 3) // <=3 retry in the last 2-second duration + { + up--; + dn++; + + if (up <= 0) + up = 0; + + if (dn == 2) // if s 2 2 retry count< 3, hկWiFi duration + { + if (wait_count <= 2) + m++; // קK@blevelӦ^ + else + m = 1; + + if ( m >= 20) //m ̤j = 20 ' ̤j120 recheckO_վ WiFi duration. + m = 20; + + n = 3*m; + up = 0; + dn = 0; + wait_count = 0; + result = -1; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], Decrease wifi duration for retryCounter<3!!\n")); + } + } + else //retry count > 3, un1 retry count > 3, hկWiFi duration + { + if (wait_count == 1) + m++; // קK@blevelӦ^ + else + m = 1; + + if ( m >= 20) //m ̤j = 20 ' ̤j120 recheckO_վ WiFi duration. + m = 20; + + n = 3*m; + up = 0; + dn = 0; + wait_count = 0; + result = -1; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], Decrease wifi duration for retryCounter>3!!\n")); + } + + if(result == -1) + { + if( (BT_INFO_8812A_1ANT_A2DP_BASIC_RATE(bt_info_ext)) && + ((coex_dm->cur_ps_tdma == 1) ||(coex_dm->cur_ps_tdma == 2)) ) + { + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 9); + coex_dm->ps_tdma_du_adj_type = 9; + } + else if(coex_dm->cur_ps_tdma == 1) + { + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 2); + coex_dm->ps_tdma_du_adj_type = 2; + } + else if(coex_dm->cur_ps_tdma == 2) + { + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 9); + coex_dm->ps_tdma_du_adj_type = 9; + } + else if(coex_dm->cur_ps_tdma == 9) + { + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 11); + coex_dm->ps_tdma_du_adj_type = 11; + } + } + else if(result == 1) + { + if( (BT_INFO_8812A_1ANT_A2DP_BASIC_RATE(bt_info_ext)) && + ((coex_dm->cur_ps_tdma == 1) ||(coex_dm->cur_ps_tdma == 2)) ) + { + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 9); + coex_dm->ps_tdma_du_adj_type = 9; + } + else if(coex_dm->cur_ps_tdma == 11) + { + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 9); + coex_dm->ps_tdma_du_adj_type = 9; + } + else if(coex_dm->cur_ps_tdma == 9) + { + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 2); + coex_dm->ps_tdma_du_adj_type = 2; + } + else if(coex_dm->cur_ps_tdma == 2) + { + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 1); + coex_dm->ps_tdma_du_adj_type = 1; + } + } + + if( coex_dm->cur_ps_tdma != 1 && + coex_dm->cur_ps_tdma != 2 && + coex_dm->cur_ps_tdma != 9 && + coex_dm->cur_ps_tdma != 11 ) + { + // recover to previous adjust type + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, coex_dm->ps_tdma_du_adj_type); + } + } +} + +u1Byte +halbtc8812a1ant_PsTdmaTypeByWifiRssi( + s4Byte wifi_rssi, + s4Byte pre_wifi_rssi, + u1Byte wifi_rssi_thresh + ) +{ + u1Byte ps_tdma_type=0; + + if(wifi_rssi > pre_wifi_rssi) + { + if(wifi_rssi > (wifi_rssi_thresh+5)) + { + ps_tdma_type = 26; + } + else + { + ps_tdma_type = 25; + } + } + else + { + if(wifi_rssi > wifi_rssi_thresh) + { + ps_tdma_type = 26; + } + else + { + ps_tdma_type = 25; + } + } + + return ps_tdma_type; +} + +void +halbtc8812a1ant_PsTdmaCheckForPowerSaveState( + PBTC_COEXIST btcoexist, + BOOLEAN new_ps_state + ) +{ + u1Byte lps_mode=0x0; + + btcoexist->btc_get(btcoexist, BTC_GET_U1_LPS_MODE, &lps_mode); + + if(lps_mode) // already under LPS state + { + if(new_ps_state) + { + // keep state under LPS, do nothing. + } + else + { + // will leave LPS state, turn off psTdma first + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, false, 0); + } + } + else // NO PS state + { + if(new_ps_state) + { + // will enter LPS state, turn off psTdma first + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, false, 0); + } + else + { + // keep state under NO PS state, do nothing. + } + } +} + +// SCO only or SCO+PAN(HS) +void +halbtc8812a1ant_ActionSco( + PBTC_COEXIST btcoexist + ) +{ + u1Byte wifi_rssi_state; + u4Byte wifi_bw; + + wifi_rssi_state = halbtc8812a1ant_WifiRssiState(btcoexist, 0, 2, 25, 0); + + halbtc8812a1ant_FwDacSwingLvl(btcoexist, NORMAL_EXEC, 4); + + if(halbtc8812a1ant_NeedToDecBtPwr(btcoexist)) + halbtc8812a1ant_DecBtPwr(btcoexist, NORMAL_EXEC, true); + else + halbtc8812a1ant_DecBtPwr(btcoexist, NORMAL_EXEC, false); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + + if(BTC_WIFI_BW_HT40 == wifi_bw) + { + // sw mechanism + if( (wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8812a1ant_SwMechanism2(btcoexist,true,true,false,0x18); + } + else + { + halbtc8812a1ant_SwMechanism2(btcoexist,false,true,false,0x18); + } + } + else + { + // sw mechanism + if( (wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8812a1ant_SwMechanism2(btcoexist,true,true,false,0x18); + } + else + { + halbtc8812a1ant_SwMechanism2(btcoexist,false,false,false,0x18); + } + } +} + + +void +halbtc8812a1ant_ActionHid( + PBTC_COEXIST btcoexist + ) +{ + u1Byte wifi_rssi_state, bt_rssi_state; + u4Byte wifi_bw; + + wifi_rssi_state = halbtc8812a1ant_WifiRssiState(btcoexist, 0, 2, 25, 0); + bt_rssi_state = halbtc8812a1ant_BtRssiState(2, 50, 0); + + halbtc8812a1ant_FwDacSwingLvl(btcoexist, NORMAL_EXEC, 6); + + if(halbtc8812a1ant_NeedToDecBtPwr(btcoexist)) + halbtc8812a1ant_DecBtPwr(btcoexist, NORMAL_EXEC, true); + else + halbtc8812a1ant_DecBtPwr(btcoexist, NORMAL_EXEC, false); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + + if(BTC_WIFI_BW_HT40 == wifi_bw) + { + // sw mechanism + if( (wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8812a1ant_SwMechanism2(btcoexist,true,false,false,0x18); + } + else + { + halbtc8812a1ant_SwMechanism2(btcoexist,false,false,false,0x18); + } + } + else + { + // sw mechanism + if( (wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8812a1ant_SwMechanism2(btcoexist,true,true,false,0x18); + } + else + { + halbtc8812a1ant_SwMechanism2(btcoexist,false,false,false,0x18); + } + } +} + +//A2DP only / PAN(EDR) only/ A2DP+PAN(HS) +void +halbtc8812a1ant_ActionA2dp( + PBTC_COEXIST btcoexist + ) +{ + u1Byte wifi_rssi_state, bt_rssi_state; + u4Byte wifi_bw; + + wifi_rssi_state = halbtc8812a1ant_WifiRssiState(btcoexist, 0, 2, 25, 0); + bt_rssi_state = halbtc8812a1ant_BtRssiState(2, 50, 0); + + halbtc8812a1ant_FwDacSwingLvl(btcoexist, NORMAL_EXEC, 6); + + if(halbtc8812a1ant_NeedToDecBtPwr(btcoexist)) + halbtc8812a1ant_DecBtPwr(btcoexist, NORMAL_EXEC, true); + else + halbtc8812a1ant_DecBtPwr(btcoexist, NORMAL_EXEC, false); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + + if(BTC_WIFI_BW_HT40 == wifi_bw) + { + // sw mechanism + if( (wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8812a1ant_SwMechanism2(btcoexist,true,true,false,0x18); + } + else + { + halbtc8812a1ant_SwMechanism2(btcoexist,false,true,false,0x18); + } + } + else + { + // sw mechanism + if( (wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8812a1ant_SwMechanism2(btcoexist,true,true,false,0x18); + } + else + { + halbtc8812a1ant_SwMechanism2(btcoexist,false,false,false,0x18); + } + } +} + +void +halbtc8812a1ant_ActionA2dpPanHs( + PBTC_COEXIST btcoexist + ) +{ + u1Byte wifi_rssi_state, bt_rssi_state, bt_info_ext; + u4Byte wifi_bw; + + bt_info_ext = coex_sta->bt_info_ext; + wifi_rssi_state = halbtc8812a1ant_WifiRssiState(btcoexist, 0, 2, 25, 0); + bt_rssi_state = halbtc8812a1ant_BtRssiState(2, 50, 0); + + halbtc8812a1ant_FwDacSwingLvl(btcoexist, NORMAL_EXEC, 6); + + if(halbtc8812a1ant_NeedToDecBtPwr(btcoexist)) + halbtc8812a1ant_DecBtPwr(btcoexist, NORMAL_EXEC, true); + else + halbtc8812a1ant_DecBtPwr(btcoexist, NORMAL_EXEC, false); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + + if(BTC_WIFI_BW_HT40 == wifi_bw) + { + // sw mechanism + if( (wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8812a1ant_SwMechanism2(btcoexist,true,true,false,0x18); + } + else + { + halbtc8812a1ant_SwMechanism2(btcoexist,false,true,false,0x18); + } + } + else + { + // sw mechanism + if( (wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8812a1ant_SwMechanism2(btcoexist,true,true,false,0x18); + } + else + { + halbtc8812a1ant_SwMechanism2(btcoexist,false,false,false,0x18); + } + } +} + +void +halbtc8812a1ant_ActionPanEdr( + PBTC_COEXIST btcoexist + ) +{ + u1Byte wifi_rssi_state, bt_rssi_state; + u4Byte wifi_bw; + + wifi_rssi_state = halbtc8812a1ant_WifiRssiState(btcoexist, 0, 2, 25, 0); + bt_rssi_state = halbtc8812a1ant_BtRssiState(2, 50, 0); + + halbtc8812a1ant_FwDacSwingLvl(btcoexist, NORMAL_EXEC, 6); + + if(halbtc8812a1ant_NeedToDecBtPwr(btcoexist)) + halbtc8812a1ant_DecBtPwr(btcoexist, NORMAL_EXEC, true); + else + halbtc8812a1ant_DecBtPwr(btcoexist, NORMAL_EXEC, false); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + + if(BTC_WIFI_BW_HT40 == wifi_bw) + { + // sw mechanism + if( (wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8812a1ant_SwMechanism2(btcoexist,true,true,false,0x18); + } + else + { + halbtc8812a1ant_SwMechanism2(btcoexist,false,true,false,0x18); + } + } + else + { + // sw mechanism + if( (wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8812a1ant_SwMechanism2(btcoexist,true,true,false,0x18); + } + else + { + halbtc8812a1ant_SwMechanism2(btcoexist,false,false,false,0x18); + } + } +} + + +//PAN(HS) only +void +halbtc8812a1ant_ActionPanHs( + PBTC_COEXIST btcoexist + ) +{ + u1Byte wifi_rssi_state, bt_rssi_state; + u4Byte wifi_bw; + + wifi_rssi_state = halbtc8812a1ant_WifiRssiState(btcoexist, 0, 2, 25, 0); + bt_rssi_state = halbtc8812a1ant_BtRssiState(2, 50, 0); + + halbtc8812a1ant_FwDacSwingLvl(btcoexist, NORMAL_EXEC, 6); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + + if(BTC_WIFI_BW_HT40 == wifi_bw) + { + // fw mechanism + if( (wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8812a1ant_DecBtPwr(btcoexist, NORMAL_EXEC, true); + } + else + { + halbtc8812a1ant_DecBtPwr(btcoexist, NORMAL_EXEC, false); + } + + // sw mechanism + if( (wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8812a1ant_SwMechanism2(btcoexist,true,true,false,0x18); + } + else + { + halbtc8812a1ant_SwMechanism2(btcoexist,false,true,false,0x18); + } + } + else + { + // fw mechanism + if( (wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8812a1ant_DecBtPwr(btcoexist, NORMAL_EXEC, true); + } + else + { + halbtc8812a1ant_DecBtPwr(btcoexist, NORMAL_EXEC, false); + } + + // sw mechanism + if( (wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8812a1ant_SwMechanism2(btcoexist,true,true,false,0x18); + } + else + { + halbtc8812a1ant_SwMechanism2(btcoexist,false,false,false,0x18); + } + } +} + +//PAN(EDR)+A2DP +void +halbtc8812a1ant_ActionPanEdrA2dp( + PBTC_COEXIST btcoexist + ) +{ + u1Byte wifi_rssi_state, bt_rssi_state, bt_info_ext; + u4Byte wifi_bw; + + bt_info_ext = coex_sta->bt_info_ext; + wifi_rssi_state = halbtc8812a1ant_WifiRssiState(btcoexist, 0, 2, 25, 0); + bt_rssi_state = halbtc8812a1ant_BtRssiState(2, 50, 0); + + halbtc8812a1ant_FwDacSwingLvl(btcoexist, NORMAL_EXEC, 6); + + if(halbtc8812a1ant_NeedToDecBtPwr(btcoexist)) + halbtc8812a1ant_DecBtPwr(btcoexist, NORMAL_EXEC, true); + else + halbtc8812a1ant_DecBtPwr(btcoexist, NORMAL_EXEC, false); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + + if(BTC_WIFI_BW_HT40 == wifi_bw) + { + // sw mechanism + if( (wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8812a1ant_SwMechanism2(btcoexist,true,true,false,0x18); + } + else + { + halbtc8812a1ant_SwMechanism2(btcoexist,false,true,false,0x18); + } + } + else + { + // sw mechanism + if( (wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8812a1ant_SwMechanism2(btcoexist,true,true,false,0x18); + } + else + { + halbtc8812a1ant_SwMechanism2(btcoexist,false,false,false,0x18); + } + } +} + +void +halbtc8812a1ant_ActionPanEdrHid( + PBTC_COEXIST btcoexist + ) +{ + u1Byte wifi_rssi_state, bt_rssi_state; + u4Byte wifi_bw; + + wifi_rssi_state = halbtc8812a1ant_WifiRssiState(btcoexist, 0, 2, 25, 0); + bt_rssi_state = halbtc8812a1ant_BtRssiState(2, 50, 0); + + halbtc8812a1ant_FwDacSwingLvl(btcoexist, NORMAL_EXEC, 6); + + if(halbtc8812a1ant_NeedToDecBtPwr(btcoexist)) + halbtc8812a1ant_DecBtPwr(btcoexist, NORMAL_EXEC, true); + else + halbtc8812a1ant_DecBtPwr(btcoexist, NORMAL_EXEC, false); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + + if(BTC_WIFI_BW_HT40 == wifi_bw) + { + // sw mechanism + if( (wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8812a1ant_SwMechanism2(btcoexist,true,true,false,0x18); + } + else + { + halbtc8812a1ant_SwMechanism2(btcoexist,false,true,false,0x18); + } + } + else + { + // sw mechanism + if( (wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8812a1ant_SwMechanism2(btcoexist,true,true,false,0x18); + } + else + { + halbtc8812a1ant_SwMechanism2(btcoexist,false,false,false,0x18); + } + } +} + +// HID+A2DP+PAN(EDR) +void +halbtc8812a1ant_ActionHidA2dpPanEdr( + PBTC_COEXIST btcoexist + ) +{ + u1Byte wifi_rssi_state, bt_rssi_state, bt_info_ext; + u4Byte wifi_bw; + + bt_info_ext = coex_sta->bt_info_ext; + wifi_rssi_state = halbtc8812a1ant_WifiRssiState(btcoexist, 0, 2, 25, 0); + bt_rssi_state = halbtc8812a1ant_BtRssiState(2, 50, 0); + + halbtc8812a1ant_FwDacSwingLvl(btcoexist, NORMAL_EXEC, 6); + + if(halbtc8812a1ant_NeedToDecBtPwr(btcoexist)) + halbtc8812a1ant_DecBtPwr(btcoexist, NORMAL_EXEC, true); + else + halbtc8812a1ant_DecBtPwr(btcoexist, NORMAL_EXEC, false); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + + if(BTC_WIFI_BW_HT40 == wifi_bw) + { + // sw mechanism + if( (wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8812a1ant_SwMechanism2(btcoexist,true,true,false,0x18); + } + else + { + halbtc8812a1ant_SwMechanism2(btcoexist,false,true,false,0x18); + } + } + else + { + // sw mechanism + if( (wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8812a1ant_SwMechanism2(btcoexist,true,true,false,0x18); + } + else + { + halbtc8812a1ant_SwMechanism2(btcoexist,false,false,false,0x18); + } + } +} + +void +halbtc8812a1ant_ActionHidA2dp( + PBTC_COEXIST btcoexist + ) +{ + u1Byte wifi_rssi_state, bt_rssi_state, bt_info_ext; + u4Byte wifi_bw; + + bt_info_ext = coex_sta->bt_info_ext; + wifi_rssi_state = halbtc8812a1ant_WifiRssiState(btcoexist, 0, 2, 25, 0); + bt_rssi_state = halbtc8812a1ant_BtRssiState(2, 50, 0); + + if(halbtc8812a1ant_NeedToDecBtPwr(btcoexist)) + halbtc8812a1ant_DecBtPwr(btcoexist, NORMAL_EXEC, true); + else + halbtc8812a1ant_DecBtPwr(btcoexist, NORMAL_EXEC, false); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + + if(BTC_WIFI_BW_HT40 == wifi_bw) + { + // sw mechanism + if( (wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8812a1ant_SwMechanism2(btcoexist,true,true,false,0x18); + } + else + { + halbtc8812a1ant_SwMechanism2(btcoexist,false,true,false,0x18); + } + } + else + { + // sw mechanism + if( (wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8812a1ant_SwMechanism2(btcoexist,true,true,false,0x18); + } + else + { + halbtc8812a1ant_SwMechanism2(btcoexist,false,false,false,0x18); + } + } +} + +void +halbtc8812a1ant_ActionHs( + PBTC_COEXIST btcoexist, + BOOLEAN hs_connecting + ) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action for HS, hs_connecting=%d!!!\n", hs_connecting)); + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, false, 8); + + if(hs_connecting) + { + halbtc8812a1ant_CoexTable(btcoexist, FORCE_EXEC, 0xaaaaaaaa, 0xaaaaaaaa, 0xffff, 0x3); + } + else + { + if((coex_sta->high_priority_tx+coex_sta->high_priority_rx+ + coex_sta->low_priority_tx+coex_sta->low_priority_rx)<=1200) + halbtc8812a1ant_CoexTable(btcoexist, FORCE_EXEC, 0xaaaaaaaa, 0xaaaaaaaa, 0xffff, 0x3); + else + halbtc8812a1ant_CoexTable(btcoexist, FORCE_EXEC, 0xffffffff, 0xffffffff, 0xffff, 0x3); + } +} + + +void +halbtc8812a1ant_ActionWifiNotConnected( + PBTC_COEXIST btcoexist + ) +{ + BOOLEAN hs_connecting=false; + + btcoexist->btc_get(btcoexist, BTC_GET_BL_HS_CONNECTING, &hs_connecting); + + halbtc8812a1ant_PsTdmaCheckForPowerSaveState(btcoexist, false); + btcoexist->btc_set(btcoexist, BTC_SET_ACT_LEAVE_LPS, NULL); + + if(hs_connecting) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], HS is connecting!!!\n")); + halbtc8812a1ant_ActionHs(btcoexist, hs_connecting); + } + else + { + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, false, 8); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x55555555, 0x55555555, 0xffff, 0x3); + } +} + +void +halbtc8812a1ant_ActionWifiNotConnectedAssoAuthScan( + PBTC_COEXIST btcoexist + ) +{ + PBTC_STACK_INFO stack_info=&btcoexist->stack_info; + BOOLEAN hs_connecting=false; + + btcoexist->btc_get(btcoexist, BTC_GET_BL_HS_CONNECTING, &hs_connecting); + halbtc8812a1ant_PsTdmaCheckForPowerSaveState(btcoexist, false); + btcoexist->btc_set(btcoexist, BTC_SET_ACT_LEAVE_LPS, NULL); + + if(hs_connecting) + { + halbtc8812a1ant_ActionHs(btcoexist, hs_connecting); + } + else if(btcoexist->bt_info.bt_disabled) + { + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, false, 9); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x55555555, 0x55555555, 0xffff, 0x3); + } + else if(BT_8812A_1ANT_BT_STATUS_INQ_PAGE == coex_dm->bt_status) +{ + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 30); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x55555555, 0x55555555, 0xffff, 0x3); + } + else if( (BT_8812A_1ANT_BT_STATUS_NON_CONNECTED_IDLE == coex_dm->bt_status) || + (BT_8812A_1ANT_BT_STATUS_CONNECTED_IDLE == coex_dm->bt_status) ) + { + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 28); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x55555555, 0x55555555, 0xffff, 0x3); + } + else if(BT_8812A_1ANT_BT_STATUS_ACL_BUSY == coex_dm->bt_status) + { + if(stack_info->hid_exist) + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 35); + else + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 29); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x55555555, 0x5afa5afa, 0xffff, 0x3); + } + else if( (BT_8812A_1ANT_BT_STATUS_SCO_BUSY == coex_dm->bt_status) || + (BT_8812A_1ANT_BT_STATUS_ACL_SCO_BUSY == coex_dm->bt_status) ) + { + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, false, 8); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x5aea5aea, 0x5aea5aea, 0xffff, 0x3); + } + else + { + //error condition, should not reach here, record error number for debugging. + coex_dm->error_condition = 1; + } +} + +void +halbtc8812a1ant_ActionWifiConnectedScan( + PBTC_COEXIST btcoexist + ) +{ + PBTC_STACK_INFO stack_info=&btcoexist->stack_info; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], ActionConnectedScan()===>\n")); + + if(btcoexist->bt_info.bt_disabled) + { + halbtc8812a1ant_PsTdmaCheckForPowerSaveState(btcoexist, false); + btcoexist->btc_set(btcoexist, BTC_SET_ACT_LEAVE_LPS, NULL); + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, false, 9); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x55555555, 0x55555555, 0xffff, 0x3); + } + else + { + halbtc8812a1ant_PsTdmaCheckForPowerSaveState(btcoexist, true); + halbtc8812a1ant_LpsRpwm(btcoexist, NORMAL_EXEC, 0x0, 0x4); + // power save must executed before psTdma. + btcoexist->btc_set(btcoexist, BTC_SET_ACT_ENTER_LPS, NULL); + + // psTdma + if(BT_8812A_1ANT_BT_STATUS_INQ_PAGE == coex_dm->bt_status) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], ActionConnectedScan(), bt is under inquiry/page scan\n")); + if(stack_info->sco_exist) + { + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 32); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x55555555, 0x5afa5afa, 0xffff, 0x3); + } + else + { + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 30); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x55555555, 0x55555555, 0xffff, 0x3); + } + } + else if( (BT_8812A_1ANT_BT_STATUS_NON_CONNECTED_IDLE == coex_dm->bt_status) || + (BT_8812A_1ANT_BT_STATUS_CONNECTED_IDLE == coex_dm->bt_status) ) + { + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 5); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x55555555, 0x55555555, 0xffff, 0x3); + } + else if(BT_8812A_1ANT_BT_STATUS_ACL_BUSY == coex_dm->bt_status) + { + if(stack_info->hid_exist) + { + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 34); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x55555555, 0x5afa5afa, 0xffff, 0x3); + } + else + { + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 4); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x55555555, 0x55555555, 0xffff, 0x3); + } + } + else if( (BT_8812A_1ANT_BT_STATUS_SCO_BUSY == coex_dm->bt_status) || + (BT_8812A_1ANT_BT_STATUS_ACL_SCO_BUSY == coex_dm->bt_status) ) + { + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 33); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x55555555, 0x5afa5afa, 0xffff, 0x3); + } + else + { + //error condition, should not reach here + coex_dm->error_condition = 2; + } + } + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], ActionConnectedScan()<===\n")); +} + +void +halbtc8812a1ant_ActionWifiConnectedSpecialPacket( + PBTC_COEXIST btcoexist + ) +{ + PBTC_STACK_INFO stack_info=&btcoexist->stack_info; + + halbtc8812a1ant_PsTdmaCheckForPowerSaveState(btcoexist, false); + btcoexist->btc_set(btcoexist, BTC_SET_ACT_LEAVE_LPS, NULL); + + if(btcoexist->bt_info.bt_disabled) + { + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, false, 9); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x55555555, 0x55555555, 0xffff, 0x3); + } + else + { + if(BT_8812A_1ANT_BT_STATUS_INQ_PAGE == coex_dm->bt_status) + { + if(stack_info->sco_exist) + { + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 32); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x55555555, 0x5afa5afa, 0xffff, 0x3); + } + else + { + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 30); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x55555555, 0x55555555, 0xffff, 0x3); + } + } + else if( (BT_8812A_1ANT_BT_STATUS_NON_CONNECTED_IDLE == coex_dm->bt_status) || + (BT_8812A_1ANT_BT_STATUS_CONNECTED_IDLE == coex_dm->bt_status) ) + { + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 28); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x55555555, 0x55555555, 0xffff, 0x3); + } + else if(BT_8812A_1ANT_BT_STATUS_ACL_BUSY == coex_dm->bt_status) + { + if(stack_info->hid_exist) + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 35); + else + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 29); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x55555555, 0x5afa5afa, 0xffff, 0x3); + } + else if( (BT_8812A_1ANT_BT_STATUS_SCO_BUSY == coex_dm->bt_status) || + (BT_8812A_1ANT_BT_STATUS_ACL_SCO_BUSY == coex_dm->bt_status) ) + { + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, false, 8); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x5aea5aea, 0x5aea5aea, 0xffff, 0x3); + } + else + { + //error condition, should not reach here + coex_dm->error_condition = 3; + } + } +} + +void +halbtc8812a1ant_ActionWifiConnected( + PBTC_COEXIST btcoexist + ) +{ + PBTC_STACK_INFO stack_info=&btcoexist->stack_info; + BOOLEAN wifi_connected=false, wifi_busy=false, bt_hs_on=false; + BOOLEAN scan=false, link=false, roam=false; + BOOLEAN hs_connecting=false, under4way=false; + u4Byte wifi_bw; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], CoexForWifiConnect()===>\n")); + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_CONNECTED, &wifi_connected); + if(!wifi_connected) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], CoexForWifiConnect(), return for wifi not connected<===\n")); + return; + } + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_4_WAY_PROGRESS, &under4way); + if(under4way) + { + halbtc8812a1ant_ActionWifiConnectedSpecialPacket(btcoexist); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], CoexForWifiConnect(), return for wifi is under 4way<===\n")); + return; + } + + btcoexist->btc_get(btcoexist, BTC_GET_BL_HS_CONNECTING, &hs_connecting); + btcoexist->btc_get(btcoexist, BTC_GET_BL_HS_OPERATION, &bt_hs_on); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_SCAN, &scan); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_LINK, &link); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_ROAM, &roam); + if(scan || link || roam) + { + halbtc8812a1ant_ActionWifiConnectedScan(btcoexist); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], CoexForWifiConnect(), return for wifi is under scan<===\n")); + return; + } + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_BUSY, &wifi_busy); + if(!wifi_busy) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], wifi associated-idle!!!\n")); + if(btcoexist->bt_info.bt_disabled) + { + halbtc8812a1ant_PsTdmaCheckForPowerSaveState(btcoexist, true); + halbtc8812a1ant_LpsRpwm(btcoexist, NORMAL_EXEC, 0x0, 0x4); + btcoexist->btc_set(btcoexist, BTC_SET_ACT_ENTER_LPS, NULL); + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, false, 9); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x55555555, 0x55555555, 0xffff, 0x3); + } + else + { + if(BT_8812A_1ANT_BT_STATUS_INQ_PAGE == coex_dm->bt_status) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], bt is under inquiry/page scan!!!\n")); + if(stack_info->sco_exist) + { + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 32); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x55555555, 0x5afa5afa, 0xffff, 0x3); + } + else + { + halbtc8812a1ant_PsTdmaCheckForPowerSaveState(btcoexist, true); + halbtc8812a1ant_LpsRpwm(btcoexist, NORMAL_EXEC, 0x0, 0x4); + // power save must executed before psTdma. + btcoexist->btc_set(btcoexist, BTC_SET_ACT_ENTER_LPS, NULL); + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 30); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x55555555, 0x55555555, 0xffff, 0x3); + } + } + else if(BT_8812A_1ANT_BT_STATUS_NON_CONNECTED_IDLE == coex_dm->bt_status) + { + halbtc8812a1ant_PsTdmaCheckForPowerSaveState(btcoexist, true); + halbtc8812a1ant_LpsRpwm(btcoexist, NORMAL_EXEC, 0x26, 0x0); + // power save must executed before psTdma. + btcoexist->btc_set(btcoexist, BTC_SET_ACT_ENTER_LPS, NULL); + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, false, 9); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x55555555, 0x55555555, 0xffff, 0x3); + } + else if(BT_8812A_1ANT_BT_STATUS_CONNECTED_IDLE == coex_dm->bt_status) + { + halbtc8812a1ant_PsTdmaCheckForPowerSaveState(btcoexist, true); + halbtc8812a1ant_LpsRpwm(btcoexist, NORMAL_EXEC, 0x26, 0x0); + // power save must executed before psTdma. + btcoexist->btc_set(btcoexist, BTC_SET_ACT_ENTER_LPS, NULL); + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, false, 0); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x55555555, 0x55555555, 0xffff, 0x3); + } + else if(BT_8812A_1ANT_BT_STATUS_ACL_BUSY == coex_dm->bt_status) + { + if(stack_info->hid_exist && stack_info->numOfLink==1) + { + // hid only + halbtc8812a1ant_PsTdmaCheckForPowerSaveState(btcoexist, false); + // power save must executed before psTdma. + btcoexist->btc_set(btcoexist, BTC_SET_ACT_LEAVE_LPS, NULL); + + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, false, 8); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x5fff5fff, 0x5fff5fff, 0xffff, 0x3); + coex_dm->reset_tdma_adjust = true; + } + else + { + halbtc8812a1ant_PsTdmaCheckForPowerSaveState(btcoexist, true); + halbtc8812a1ant_LpsRpwm(btcoexist, NORMAL_EXEC, 0x0, 0x4); + // power save must executed before psTdma. + btcoexist->btc_set(btcoexist, BTC_SET_ACT_ENTER_LPS, NULL); + + if(stack_info->hid_exist) + { + if(stack_info->a2dp_exist) + { + // hid+a2dp + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 2); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x55555555, 0x5afa5afa, 0xffff, 0x3); + } + else if(stack_info->pan_exist) + { + if(bt_hs_on) + { + // hid+hs + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 2); + } + else + { + // hid+pan + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 2); + } + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x55555555, 0x5afa5afa, 0xffff, 0x3); + } + else + { + coex_dm->error_condition = 4; + } + coex_dm->reset_tdma_adjust = true; + } + else if(stack_info->a2dp_exist) + { + if(stack_info->pan_exist) + { + if(bt_hs_on) + { + // a2dp+hs + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 2); + } + else + { + // a2dp+pan + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 36); + } + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x55555555, 0x5afa5afa, 0xffff, 0x3); + coex_dm->reset_tdma_adjust = true; + } + else + { + // a2dp only + halbtc8812a1ant_TdmaDurationAdjustForAcl(btcoexist); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x55555555, 0x5afa5afa, 0xffff, 0x3); + } + } + else if(stack_info->pan_exist) + { + // pan only + if(bt_hs_on) + { + coex_dm->error_condition = 5; + } + else + { + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 2); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x55555555, 0x5afa5afa, 0xffff, 0x3); + } + coex_dm->reset_tdma_adjust = true; + } + else + { + // temp state, do nothing!!! + //DbgPrint("error 6, coex_dm->bt_status=%d\n", coex_dm->bt_status); + //DbgPrint("error 6, stack_info->numOfLink=%d, stack_info->hid_exist=%d, stack_info->a2dp_exist=%d, stack_info->pan_exist=%d, stack_info->sco_exist=%d\n", + //stack_info->numOfLink, stack_info->hid_exist, stack_info->a2dp_exist, stack_info->pan_exist, stack_info->sco_exist); + //coex_dm->error_condition = 6; + } + } + } + else if( (BT_8812A_1ANT_BT_STATUS_SCO_BUSY == coex_dm->bt_status) || + (BT_8812A_1ANT_BT_STATUS_ACL_SCO_BUSY == coex_dm->bt_status) ) + { + halbtc8812a1ant_PsTdmaCheckForPowerSaveState(btcoexist, false); + // power save must executed before psTdma. + btcoexist->btc_set(btcoexist, BTC_SET_ACT_LEAVE_LPS, NULL); + + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, false, 8); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x5aea5aea, 0x5aea5aea, 0xffff, 0x3); + } + else + { + //error condition, should not reach here + coex_dm->error_condition = 7; + } + } + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], wifi busy!!!\n")); + if(btcoexist->bt_info.bt_disabled) + { + halbtc8812a1ant_PsTdmaCheckForPowerSaveState(btcoexist, false); + btcoexist->btc_set(btcoexist, BTC_SET_ACT_LEAVE_LPS, NULL); + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, false, 9); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x55555555, 0x55555555, 0xffff, 0x3); + } + else + { + if(bt_hs_on) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], HS is under progress!!!\n")); + //DbgPrint("coex_dm->bt_status = 0x%x\n", coex_dm->bt_status); + halbtc8812a1ant_ActionHs(btcoexist, hs_connecting); + } + else if(BT_8812A_1ANT_BT_STATUS_INQ_PAGE == coex_dm->bt_status) + { + if(stack_info->sco_exist) + { + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 32); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x55555555, 0x5afa5afa, 0xffff, 0x3); + } + else + { + halbtc8812a1ant_PsTdmaCheckForPowerSaveState(btcoexist, true); + halbtc8812a1ant_LpsRpwm(btcoexist, NORMAL_EXEC, 0x0, 0x4); + // power save must executed before psTdma. + btcoexist->btc_set(btcoexist, BTC_SET_ACT_ENTER_LPS, NULL); + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 30); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x55555555, 0x55555555, 0xffff, 0x3); + } + } + else if(BT_8812A_1ANT_BT_STATUS_NON_CONNECTED_IDLE == coex_dm->bt_status) + { + halbtc8812a1ant_PsTdmaCheckForPowerSaveState(btcoexist, false); + // power save must executed before psTdma. + btcoexist->btc_set(btcoexist, BTC_SET_ACT_LEAVE_LPS, NULL); + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 5); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x5a5a5a5a, 0x5a5a5a5a, 0xffff, 0x3); + } + else if(BT_8812A_1ANT_BT_STATUS_CONNECTED_IDLE == coex_dm->bt_status) + { + halbtc8812a1ant_PsTdmaCheckForPowerSaveState(btcoexist, false); + // power save must executed before psTdma. + btcoexist->btc_set(btcoexist, BTC_SET_ACT_LEAVE_LPS, NULL); + if(bt_hs_on) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], HS is under progress!!!\n")); + halbtc8812a1ant_ActionHs(btcoexist, hs_connecting); + } + else + { + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 5); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x5a5a5a5a, 0x5a5a5a5a, 0xffff, 0x3); + } + } + else if(BT_8812A_1ANT_BT_STATUS_ACL_BUSY == coex_dm->bt_status) + { + if(stack_info->hid_exist && stack_info->numOfLink==1) + { + // hid only + halbtc8812a1ant_PsTdmaCheckForPowerSaveState(btcoexist, false); + // power save must executed before psTdma. + btcoexist->btc_set(btcoexist, BTC_SET_ACT_LEAVE_LPS, NULL); + + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, false, 8); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x5fff5fff, 0x5fff5fff, 0xffff, 0x3); + coex_dm->reset_tdma_adjust = true; + } + else + { + halbtc8812a1ant_PsTdmaCheckForPowerSaveState(btcoexist, true); + halbtc8812a1ant_LpsRpwm(btcoexist, NORMAL_EXEC, 0x0, 0x4); + // power save must executed before psTdma. + btcoexist->btc_set(btcoexist, BTC_SET_ACT_ENTER_LPS, NULL); + + if(stack_info->hid_exist) + { + if(stack_info->a2dp_exist) + { + // hid+a2dp + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 2); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x55555555, 0x5afa5afa, 0xffff, 0x3); + } + else if(stack_info->pan_exist) + { + if(bt_hs_on) + { + // hid+hs + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 2); + } + else + { + // hid+pan + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 2); + } + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x55555555, 0x5afa5afa, 0xffff, 0x3); + } + else + { + coex_dm->error_condition = 8; + } + coex_dm->reset_tdma_adjust = true; + } + else if(stack_info->a2dp_exist) + { + if(stack_info->pan_exist) + { + if(bt_hs_on) + { + // a2dp+hs + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 2); + } + else + { + // a2dp+pan + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 36); + } + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x55555555, 0x5afa5afa, 0xffff, 0x3); + coex_dm->reset_tdma_adjust = true; + } + else + { + // a2dp only + halbtc8812a1ant_TdmaDurationAdjustForAcl(btcoexist); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x55555555, 0x5afa5afa, 0xffff, 0x3); + } + } + else if(stack_info->pan_exist) + { + // pan only + if(bt_hs_on) + { + coex_dm->error_condition = 9; + } + else + { + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, true, 2); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x55555555, 0x5afa5afa, 0xffff, 0x3); + } + coex_dm->reset_tdma_adjust = true; + } + else + { + //DbgPrint("error 10, stack_info->numOfLink=%d, stack_info->hid_exist=%d, stack_info->a2dp_exist=%d, stack_info->pan_exist=%d, stack_info->sco_exist=%d\n", + //stack_info->numOfLink, stack_info->hid_exist, stack_info->a2dp_exist, stack_info->pan_exist, stack_info->sco_exist); + coex_dm->error_condition = 10; + } + } + } + else if( (BT_8812A_1ANT_BT_STATUS_SCO_BUSY == coex_dm->bt_status) || + (BT_8812A_1ANT_BT_STATUS_ACL_SCO_BUSY == coex_dm->bt_status) ) + { + halbtc8812a1ant_PsTdmaCheckForPowerSaveState(btcoexist, false); + // power save must executed before psTdma. + btcoexist->btc_set(btcoexist, BTC_SET_ACT_LEAVE_LPS, NULL); + + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, false, 8); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x5aea5aea, 0x5aea5aea, 0xffff, 0x3); + } + else + { + //DbgPrint("error 11, coex_dm->bt_status=%d\n", coex_dm->bt_status); + //DbgPrint("error 11, stack_info->numOfLink=%d, stack_info->hid_exist=%d, stack_info->a2dp_exist=%d, stack_info->pan_exist=%d, stack_info->sco_exist=%d\n", + //stack_info->numOfLink, stack_info->hid_exist, stack_info->a2dp_exist, stack_info->pan_exist, stack_info->sco_exist); + //error condition, should not reach here + coex_dm->error_condition = 11; + } + } + } + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], CoexForWifiConnect()<===\n")); +} + +void +halbtc8812a1ant_RunSwCoexistMechanism( + PBTC_COEXIST btcoexist + ) +{ + PBTC_STACK_INFO stack_info=&btcoexist->stack_info; + BOOLEAN wifi_under5g=false, wifi_busy=false, wifi_connected=false; + u1Byte bt_info_original=0, bt_retry_cnt=0; + u1Byte algorithm=0; + + return; + if(stack_info->bProfileNotified) + { + algorithm = halbtc8812a1ant_ActionAlgorithm(btcoexist); + coex_dm->cur_algorithm = algorithm; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Algorithm = %d \n", coex_dm->cur_algorithm)); + + if(halbtc8812a1ant_IsCommonAction(btcoexist)) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action common.\n")); + } + else + { + switch(coex_dm->cur_algorithm) + { + case BT_8812A_1ANT_COEX_ALGO_SCO: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action algorithm = SCO.\n")); + halbtc8812a1ant_ActionSco(btcoexist); + break; + case BT_8812A_1ANT_COEX_ALGO_HID: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action algorithm = HID.\n")); + halbtc8812a1ant_ActionHid(btcoexist); + break; + case BT_8812A_1ANT_COEX_ALGO_A2DP: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action algorithm = A2DP.\n")); + halbtc8812a1ant_ActionA2dp(btcoexist); + break; + case BT_8812A_1ANT_COEX_ALGO_A2DP_PANHS: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action algorithm = A2DP+PAN(HS).\n")); + halbtc8812a1ant_ActionA2dpPanHs(btcoexist); + break; + case BT_8812A_1ANT_COEX_ALGO_PANEDR: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action algorithm = PAN(EDR).\n")); + halbtc8812a1ant_ActionPanEdr(btcoexist); + break; + case BT_8812A_1ANT_COEX_ALGO_PANHS: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action algorithm = HS mode.\n")); + halbtc8812a1ant_ActionPanHs(btcoexist); + break; + case BT_8812A_1ANT_COEX_ALGO_PANEDR_A2DP: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action algorithm = PAN+A2DP.\n")); + halbtc8812a1ant_ActionPanEdrA2dp(btcoexist); + break; + case BT_8812A_1ANT_COEX_ALGO_PANEDR_HID: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action algorithm = PAN(EDR)+HID.\n")); + halbtc8812a1ant_ActionPanEdrHid(btcoexist); + break; + case BT_8812A_1ANT_COEX_ALGO_HID_A2DP_PANEDR: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action algorithm = HID+A2DP+PAN.\n")); + halbtc8812a1ant_ActionHidA2dpPanEdr(btcoexist); + break; + case BT_8812A_1ANT_COEX_ALGO_HID_A2DP: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action algorithm = HID+A2DP.\n")); + halbtc8812a1ant_ActionHidA2dp(btcoexist); + break; + default: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action algorithm = coexist All Off!!\n")); + halbtc8812a1ant_CoexAllOff(btcoexist); + break; + } + coex_dm->pre_algorithm = coex_dm->cur_algorithm; + } + } +} + +void +halbtc8812a1ant_RunCoexistMechanism( + PBTC_COEXIST btcoexist + ) +{ + PBTC_STACK_INFO stack_info=&btcoexist->stack_info; + BOOLEAN wifi_under5g=false, wifi_busy=false, wifi_connected=false; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], RunCoexistMechanism()===>\n")); + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_UNDER_5G, &wifi_under5g); + + if(wifi_under5g) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], RunCoexistMechanism(), return for 5G <===\n")); + return; + } + + if(btcoexist->manual_control) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], RunCoexistMechanism(), return for Manual CTRL <===\n")); + return; + } + + if(btcoexist->stop_coex_dm) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], RunCoexistMechanism(), return for Stop Coex DM <===\n")); + return; + } + + halbtc8812a1ant_RunSwCoexistMechanism(btcoexist); + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_CONNECTED, &wifi_connected); + if(btcoexist->bt_info.bt_disabled) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], bt is disabled!!!\n")); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_BUSY, &wifi_busy); + if(wifi_busy) + { + halbtc8812a1ant_PsTdmaCheckForPowerSaveState(btcoexist, false); + btcoexist->btc_set(btcoexist, BTC_SET_ACT_LEAVE_LPS, NULL); + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, false, 9); + } + else + { + halbtc8812a1ant_PsTdmaCheckForPowerSaveState(btcoexist, true); + halbtc8812a1ant_LpsRpwm(btcoexist, NORMAL_EXEC, 0x0, 0x4); + // power save must executed before psTdma. + btcoexist->btc_set(btcoexist, BTC_SET_ACT_ENTER_LPS, NULL); + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, false, 9); + } + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x55555555, 0x55555555, 0xffff, 0x3); + } + else if(coex_sta->under_ips) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], wifi is under IPS !!!\n")); + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, false, 0); + halbtc8812a1ant_CoexTable(btcoexist, NORMAL_EXEC, 0x55555555, 0x55555555, 0xffff, 0x3); + halbtc8812a1ant_WifiParaAdjust(btcoexist, false); + } + else if(!wifi_connected) + { + BOOLEAN scan=false, link=false, roam=false; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], wifi is non connected-idle !!!\n")); + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_SCAN, &scan); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_LINK, &link); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_ROAM, &roam); + + if(scan || link || roam) + halbtc8812a1ant_ActionWifiNotConnectedAssoAuthScan(btcoexist); + else + halbtc8812a1ant_ActionWifiNotConnected(btcoexist); + } + else // wifi LPS/Busy + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], wifi is NOT under IPS!!!\n")); + halbtc8812a1ant_WifiParaAdjust(btcoexist, true); + halbtc8812a1ant_ActionWifiConnected(btcoexist); + } + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], RunCoexistMechanism()<===\n")); +} + +void +halbtc8812a1ant_InitCoexDm( + PBTC_COEXIST btcoexist + ) +{ + BOOLEAN wifi_connected=false; + // force to reset coex mechanism + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_CONNECTED, &wifi_connected); + if(!wifi_connected) // non-connected scan + { + halbtc8812a1ant_ActionWifiNotConnected(btcoexist); + } + else // wifi is connected + { + halbtc8812a1ant_ActionWifiConnected(btcoexist); + } + + halbtc8812a1ant_FwDacSwingLvl(btcoexist, FORCE_EXEC, 6); + halbtc8812a1ant_DecBtPwr(btcoexist, FORCE_EXEC, false); + + // sw all off + halbtc8812a1ant_SwMechanism1(btcoexist,false,false,false,false); + halbtc8812a1ant_SwMechanism2(btcoexist,false,false,false,0x18); + + halbtc8812a1ant_CoexTable(btcoexist, FORCE_EXEC, 0x55555555, 0x55555555, 0xffff, 0x3); +} + +//============================================================ +// work around function start with wa_halbtc8812a1ant_ +//============================================================ +//============================================================ +// extern function start with EXhalbtc8812a1ant_ +//============================================================ +void +EXhalbtc8812a1ant_InitHwConfig( + PBTC_COEXIST btcoexist + ) +{ + u4Byte u4_tmp=0; + u2Byte u2Tmp=0; + u1Byte u1_tmp=0; + + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, ("[BTCoex], 1Ant Init HW Config!!\n")); + + // backup rf 0x1e value + coex_dm->bt_rf0x1e_backup = + btcoexist->btc_get_rf_reg(btcoexist, BTC_RF_A, 0x1e, 0xfffff); + + //ant sw control to BT + btcoexist->btc_write_4byte(btcoexist, 0x900, 0x00000400); + btcoexist->btc_write_1byte(btcoexist, 0x76d, 0x1); + btcoexist->btc_write_1byte(btcoexist, 0xcb3, 0x77); + btcoexist->btc_write_1byte(btcoexist, 0xcb7, 0x40); + + // 0x790[5:0]=0x5 + u1_tmp = btcoexist->btc_read_1byte(btcoexist, 0x790); + u1_tmp &= 0xc0; + u1_tmp |= 0x5; + btcoexist->btc_write_1byte(btcoexist, 0x790, u1_tmp); + + // PTA parameter + btcoexist->btc_write_1byte(btcoexist, 0x6cc, 0x0); + btcoexist->btc_write_4byte(btcoexist, 0x6c8, 0xffff); + btcoexist->btc_write_4byte(btcoexist, 0x6c4, 0x55555555); + btcoexist->btc_write_4byte(btcoexist, 0x6c0, 0x55555555); + + // coex parameters + btcoexist->btc_write_1byte(btcoexist, 0x778, 0x1); + + // enable counter statistics + btcoexist->btc_write_1byte(btcoexist, 0x76e, 0x4); + + // enable PTA + btcoexist->btc_write_1byte(btcoexist, 0x40, 0x20); + + // bt clock related + u1_tmp = btcoexist->btc_read_1byte(btcoexist, 0x4); + u1_tmp |= BIT7; + btcoexist->btc_write_1byte(btcoexist, 0x4, u1_tmp); + + // bt clock related + u1_tmp = btcoexist->btc_read_1byte(btcoexist, 0x7); + u1_tmp |= BIT1; + btcoexist->btc_write_1byte(btcoexist, 0x7, u1_tmp); +} + +void +EXhalbtc8812a1ant_InitCoexDm( + PBTC_COEXIST btcoexist + ) +{ + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, ("[BTCoex], Coex Mechanism Init!!\n")); + + btcoexist->stop_coex_dm = false; + + halbtc8812a1ant_InitCoexDm(btcoexist); +} + +void +EXhalbtc8812a1ant_DisplayCoexInfo( + PBTC_COEXIST btcoexist + ) +{ + PBTC_BOARD_INFO board_info=&btcoexist->boardInfo; + PBTC_STACK_INFO stack_info=&btcoexist->stack_info; + pu1Byte cli_buf=btcoexist->cli_buf; + u1Byte u1_tmp[4], i, bt_info_ext, psTdmaCase=0; + u4Byte u4_tmp[4]; + BOOLEAN roam=false, scan=false, link=false, wifi_under5g=false; + BOOLEAN bt_hs_on=false, wifi_busy=false; + s4Byte wifi_rssi=0, bt_hs_rssi=0; + u4Byte wifi_bw, wifiTrafficDir; + u1Byte wifiDot11Chnl, wifiHsChnl; + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n ============[BT Coexist info]============"); + CL_PRINTF(cli_buf); + + if(btcoexist->manual_control) + { + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n ============[Under Manual Control]============"); + CL_PRINTF(cli_buf); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n =========================================="); + CL_PRINTF(cli_buf); + } + if(btcoexist->stop_coex_dm) + { + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n ============[Coex is STOPPED]============"); + CL_PRINTF(cli_buf); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n =========================================="); + CL_PRINTF(cli_buf); + } + + if(!board_info->bBtExist) + { + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n BT not exists !!!"); + CL_PRINTF(cli_buf); + return; + } + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d ", "Ant PG number/ Ant mechanism:", \ + board_info->pgAntNum, board_info->btdmAntNum); + CL_PRINTF(cli_buf); + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %s / %d", "BT stack/ hci ext ver", \ + ((stack_info->bProfileNotified)? "Yes":"No"), stack_info->hciVersion); + CL_PRINTF(cli_buf); + btcoexist->btc_disp_dbg_msg(btcoexist, BTC_DBG_DISP_BT_FW_VER); + + btcoexist->btc_get(btcoexist, BTC_GET_BL_HS_OPERATION, &bt_hs_on); + btcoexist->btc_get(btcoexist, BTC_GET_U1_WIFI_DOT11_CHNL, &wifiDot11Chnl); + btcoexist->btc_get(btcoexist, BTC_GET_U1_WIFI_HS_CHNL, &wifiHsChnl); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d / %d(%d)", "Dot11 channel / HsChnl(HsMode)", \ + wifiDot11Chnl, wifiHsChnl, bt_hs_on); + CL_PRINTF(cli_buf); + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %02x %02x %02x ", "H2C Wifi inform bt chnl Info", \ + coex_dm->wifi_chnl_info[0], coex_dm->wifi_chnl_info[1], + coex_dm->wifi_chnl_info[2]); + CL_PRINTF(cli_buf); + + btcoexist->btc_get(btcoexist, BTC_GET_S4_WIFI_RSSI, &wifi_rssi); + btcoexist->btc_get(btcoexist, BTC_GET_S4_HS_RSSI, &bt_hs_rssi); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d", "Wifi rssi/ HS rssi", \ + wifi_rssi, bt_hs_rssi); + CL_PRINTF(cli_buf); + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_SCAN, &scan); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_LINK, &link); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_ROAM, &roam); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d/ %d ", "Wifi link/ roam/ scan", \ + link, roam, scan); + CL_PRINTF(cli_buf); + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_UNDER_5G, &wifi_under5g); + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_BUSY, &wifi_busy); + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_TRAFFIC_DIRECTION, &wifiTrafficDir); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %s / %s/ %s ", "Wifi status", \ + (wifi_under5g? "5G":"2.4G"), + ((BTC_WIFI_BW_LEGACY==wifi_bw)? "Legacy": (((BTC_WIFI_BW_HT40==wifi_bw)? "HT40":"HT20"))), + ((!wifi_busy)? "idle": ((BTC_WIFI_TRAFFIC_TX==wifiTrafficDir)? "uplink":"downlink"))); + CL_PRINTF(cli_buf); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = [%s/ %d/ %d] ", "BT [status/ rssi/ retryCnt]", \ + ((coex_sta->c2h_bt_inquiry_page)?("inquiry/page scan"):((BT_8812A_1ANT_BT_STATUS_NON_CONNECTED_IDLE == coex_dm->bt_status)? "non-connected idle": + ( (BT_8812A_1ANT_BT_STATUS_CONNECTED_IDLE == coex_dm->bt_status)? "connected-idle":"busy"))), + coex_sta->bt_rssi, coex_sta->bt_retry_cnt); + CL_PRINTF(cli_buf); + + if(stack_info->bProfileNotified) + { + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d / %d / %d / %d", "SCO/HID/PAN/A2DP", \ + stack_info->sco_exist, stack_info->hid_exist, stack_info->pan_exist, stack_info->a2dp_exist); + CL_PRINTF(cli_buf); + + btcoexist->btc_disp_dbg_msg(btcoexist, BTC_DBG_DISP_BT_LINK_INFO); + } + + bt_info_ext = coex_sta->bt_info_ext; + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %s", "BT Info A2DP rate", \ + (bt_info_ext&BIT0)? "Basic rate":"EDR rate"); + CL_PRINTF(cli_buf); + + for(i=0; ibt_info_c2h_cnt[i]) + { + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %02x %02x %02x %02x %02x %02x %02x(%d)", GLBtInfoSrc8812a1Ant[i], \ + coex_sta->bt_info_c2h[i][0], coex_sta->bt_info_c2h[i][1], + coex_sta->bt_info_c2h[i][2], coex_sta->bt_info_c2h[i][3], + coex_sta->bt_info_c2h[i][4], coex_sta->bt_info_c2h[i][5], + coex_sta->bt_info_c2h[i][6], coex_sta->bt_info_c2h_cnt[i]); + CL_PRINTF(cli_buf); + } + } + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %s/%s, (0x%x/0x%x)", "PS state, IPS/LPS, (lps/rpwm)", \ + ((coex_sta->under_ips? "IPS ON":"IPS OFF")), + ((coex_sta->under_lps? "LPS ON":"LPS OFF")), + btcoexist->bt_info.lps1Ant, + btcoexist->bt_info.rpwm1Ant); + CL_PRINTF(cli_buf); + btcoexist->btc_disp_dbg_msg(btcoexist, BTC_DBG_DISP_FW_PWR_MODE_CMD); + + if(!btcoexist->manual_control) + { + // Sw mechanism + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s", "============[Sw mechanism]============"); + CL_PRINTF(cli_buf); + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d/ %d/ %d ", "SM1[ShRf/ LpRA/ LimDig/ btLna]", \ + coex_dm->cur_rf_rx_lpf_shrink, coex_dm->cur_low_penalty_ra, coex_dm->limited_dig, coex_dm->bCurBtLnaConstrain); + CL_PRINTF(cli_buf); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d/ %d(0x%x) ", "SM2[AgcT/ AdcB/ SwDacSwing(lvl)]", \ + coex_dm->cur_agc_table_en, coex_dm->cur_adc_back_off, coex_dm->cur_dac_swing_on, coex_dm->cur_dac_swing_lvl); + CL_PRINTF(cli_buf); + + // Fw mechanism + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s", "============[Fw mechanism]============"); + CL_PRINTF(cli_buf); + + psTdmaCase = coex_dm->cur_ps_tdma; + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %02x %02x %02x %02x %02x case-%d", "PS TDMA", \ + coex_dm->ps_tdma_para[0], coex_dm->ps_tdma_para[1], + coex_dm->ps_tdma_para[2], coex_dm->ps_tdma_para[3], + coex_dm->ps_tdma_para[4], psTdmaCase); + CL_PRINTF(cli_buf); + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x ", "Latest error condition(should be 0)", \ + coex_dm->error_condition); + CL_PRINTF(cli_buf); + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d ", "DecBtPwr/ IgnWlanAct", \ + coex_dm->cur_dec_bt_pwr, coex_dm->cur_ignore_wlan_act); + CL_PRINTF(cli_buf); + } + + // Hw setting + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s", "============[Hw setting]============"); + CL_PRINTF(cli_buf); + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x", "RF-A, 0x1e initVal", \ + coex_dm->bt_rf0x1e_backup); + CL_PRINTF(cli_buf); + + u1_tmp[0] = btcoexist->btc_read_1byte(btcoexist, 0x778); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x", "0x778", \ + u1_tmp[0]); + CL_PRINTF(cli_buf); + + u1_tmp[0] = btcoexist->btc_read_1byte(btcoexist, 0x92c); + u4_tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0x930); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x", "0x92c/ 0x930", \ + (u1_tmp[0]), u4_tmp[0]); + CL_PRINTF(cli_buf); + + u1_tmp[0] = btcoexist->btc_read_1byte(btcoexist, 0x40); + u1_tmp[1] = btcoexist->btc_read_1byte(btcoexist, 0x4f); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x", "0x40/ 0x4f", \ + u1_tmp[0], u1_tmp[1]); + CL_PRINTF(cli_buf); + + u4_tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0x550); + u1_tmp[0] = btcoexist->btc_read_1byte(btcoexist, 0x522); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x", "0x550(bcn ctrl)/0x522", \ + u4_tmp[0], u1_tmp[0]); + CL_PRINTF(cli_buf); + + u4_tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0xc50); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x", "0xc50(dig)", \ + u4_tmp[0]); + CL_PRINTF(cli_buf); + +#if 0 + u4_tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0xf48); + u4_tmp[1] = btcoexist->btc_read_4byte(btcoexist, 0xf4c); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x", "0xf48/ 0xf4c (FA cnt)", \ + u4_tmp[0], u4_tmp[1]); + CL_PRINTF(cli_buf); +#endif + + u4_tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0x6c0); + u4_tmp[1] = btcoexist->btc_read_4byte(btcoexist, 0x6c4); + u4_tmp[2] = btcoexist->btc_read_4byte(btcoexist, 0x6c8); + u1_tmp[0] = btcoexist->btc_read_1byte(btcoexist, 0x6cc); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x/ 0x%x/ 0x%x", "0x6c0/0x6c4/0x6c8/0x6cc(coexTable)", \ + u4_tmp[0], u4_tmp[1], u4_tmp[2], u1_tmp[0]); + CL_PRINTF(cli_buf); + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d", "0x770(hp rx[31:16]/tx[15:0])", \ + coex_sta->high_priority_rx, coex_sta->high_priority_tx); + CL_PRINTF(cli_buf); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d", "0x774(lp rx[31:16]/tx[15:0])", \ + coex_sta->low_priority_rx, coex_sta->low_priority_tx); + CL_PRINTF(cli_buf); + + btcoexist->btc_disp_dbg_msg(btcoexist, BTC_DBG_DISP_COEX_STATISTICS); +} + + +void +EXhalbtc8812a1ant_IpsNotify( + PBTC_COEXIST btcoexist, + u1Byte type + ) +{ + u4Byte u4_tmp=0; + + if(btcoexist->manual_control || btcoexist->stop_coex_dm) + return; + + if(BTC_IPS_ENTER == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], IPS ENTER notify\n")); + coex_sta->under_ips = true; + + // 0x4c[23]=1 + u4_tmp = btcoexist->btc_read_4byte(btcoexist, 0x4c); + u4_tmp |= BIT23; + btcoexist->btc_write_4byte(btcoexist, 0x4c, u4_tmp); + + halbtc8812a1ant_CoexAllOff(btcoexist); + } + else if(BTC_IPS_LEAVE == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], IPS LEAVE notify\n")); + coex_sta->under_ips = false; + //halbtc8812a1ant_InitCoexDm(btcoexist); + } +} + +void +EXhalbtc8812a1ant_LpsNotify( + PBTC_COEXIST btcoexist, + u1Byte type + ) +{ + if(btcoexist->manual_control || btcoexist->stop_coex_dm) + return; + + if(BTC_LPS_ENABLE == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], LPS ENABLE notify\n")); + coex_sta->under_lps = true; + } + else if(BTC_IPS_LEAVE == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], LPS DISABLE notify\n")); + coex_sta->under_lps = false; + } +} + +void +EXhalbtc8812a1ant_ScanNotify( + PBTC_COEXIST btcoexist, + u1Byte type + ) +{ + PBTC_STACK_INFO stack_info=&btcoexist->stack_info; + BOOLEAN wifi_connected=false; + + if(btcoexist->manual_control ||btcoexist->stop_coex_dm) + return; + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_CONNECTED, &wifi_connected); + if(BTC_SCAN_START == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], SCAN START notify\n")); + if(!wifi_connected) // non-connected scan + { + //set 0x550[3]=1 before PsTdma + //halbtc8812a1ant_Reg0x550Bit3(btcoexist, true); + halbtc8812a1ant_ActionWifiNotConnectedAssoAuthScan(btcoexist); + } + else // wifi is connected + { + halbtc8812a1ant_ActionWifiConnectedScan(btcoexist); + } + } + else if(BTC_SCAN_FINISH == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], SCAN FINISH notify\n")); + if(!wifi_connected) // non-connected scan + { + //halbtc8812a1ant_Reg0x550Bit3(btcoexist, false); + halbtc8812a1ant_ActionWifiNotConnected(btcoexist); + } + else + { + halbtc8812a1ant_ActionWifiConnected(btcoexist); + } + } +} + +void +EXhalbtc8812a1ant_ConnectNotify( + PBTC_COEXIST btcoexist, + u1Byte type + ) +{ + PBTC_STACK_INFO stack_info=&btcoexist->stack_info; + BOOLEAN wifi_connected=false; + + if(btcoexist->manual_control ||btcoexist->stop_coex_dm) + return; + + if(BTC_ASSOCIATE_START == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], CONNECT START notify\n")); + if(btcoexist->bt_info.bt_disabled) + { + halbtc8812a1ant_PsTdmaCheckForPowerSaveState(btcoexist, false); + btcoexist->btc_set(btcoexist, BTC_SET_ACT_LEAVE_LPS, NULL); + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, false, 9); + } + else + { + halbtc8812a1ant_ActionWifiNotConnectedAssoAuthScan(btcoexist); + } + } + else if(BTC_ASSOCIATE_FINISH == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], CONNECT FINISH notify\n")); + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_CONNECTED, &wifi_connected); + if(!wifi_connected) // non-connected scan + { + //halbtc8812a1ant_Reg0x550Bit3(btcoexist, false); + halbtc8812a1ant_ActionWifiNotConnected(btcoexist); + } + else + { + halbtc8812a1ant_ActionWifiConnected(btcoexist); + } + } +} + +void +EXhalbtc8812a1ant_MediaStatusNotify( + PBTC_COEXIST btcoexist, + u1Byte type + ) +{ + u1Byte dataLen=5; + u1Byte buf[6] = {0}; + u1Byte h2c_parameter[3] ={0}; + BOOLEAN wifi_under5g=false; + u4Byte wifi_bw; + u1Byte wifi_central_chnl; + + if(btcoexist->manual_control ||btcoexist->stop_coex_dm) + return; + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_UNDER_5G, &wifi_under5g); + + // only 2.4G we need to inform bt the chnl mask + if(!wifi_under5g) + { + if(BTC_MEDIA_CONNECT == type) + { + h2c_parameter[0] = 0x1; + } + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + btcoexist->btc_get(btcoexist, BTC_GET_U1_WIFI_CENTRAL_CHNL, &wifi_central_chnl); + h2c_parameter[1] = wifi_central_chnl; + if(BTC_WIFI_BW_HT40 == wifi_bw) + h2c_parameter[2] = 0x30; + else + h2c_parameter[2] = 0x20; + } + + coex_dm->wifi_chnl_info[0] = h2c_parameter[0]; + coex_dm->wifi_chnl_info[1] = h2c_parameter[1]; + coex_dm->wifi_chnl_info[2] = h2c_parameter[2]; + + buf[0] = dataLen; + buf[1] = 0x5; // OP_Code + buf[2] = 0x3; // OP_Code_Length + buf[3] = h2c_parameter[0]; // OP_Code_Content + buf[4] = h2c_parameter[1]; + buf[5] = h2c_parameter[2]; + + btcoexist->btc_set(btcoexist, BTC_SET_ACT_CTRL_BT_COEX, (PVOID)&buf[0]); +} + +void +EXhalbtc8812a1ant_SpecialPacketNotify( + PBTC_COEXIST btcoexist, + u1Byte type + ) +{ + BOOLEAN bSecurityLink=false; + + if(btcoexist->manual_control ||btcoexist->stop_coex_dm) + return; + + //if(type == BTC_PACKET_DHCP) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], special Packet(%d) notify\n", type)); + if(btcoexist->bt_info.bt_disabled) + { + halbtc8812a1ant_PsTdmaCheckForPowerSaveState(btcoexist, false); + btcoexist->btc_set(btcoexist, BTC_SET_ACT_LEAVE_LPS, NULL); + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, false, 9); + } + else + { + halbtc8812a1ant_ActionWifiConnectedSpecialPacket(btcoexist); + } + } +} + +void +EXhalbtc8812a1ant_BtInfoNotify( + PBTC_COEXIST btcoexist, + pu1Byte tmp_buf, + u1Byte length + ) +{ + u1Byte bt_info=0; + u1Byte i, rsp_source=0; + static u4Byte set_bt_lna_cnt=0, set_bt_psd_mode=0; + BOOLEAN bt_busy=false, limited_dig=false; + BOOLEAN wifi_connected=false; + BOOLEAN bRejApAggPkt=false; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], BtInfoNotify()===>\n")); + + + rsp_source = tmp_buf[0]&0xf; + if(rsp_source >= BT_INFO_SRC_8812A_1ANT_MAX) + rsp_source = BT_INFO_SRC_8812A_1ANT_WIFI_FW; + coex_sta->bt_info_c2h_cnt[rsp_source]++; + + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], Bt info[%d], length=%d, hex data=[", rsp_source, length)); + for(i=0; ibt_info_c2h[rsp_source][i] = tmp_buf[i]; + if(i == 1) + bt_info = tmp_buf[i]; + if(i == length-1) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("0x%2x]\n", tmp_buf[i])); + } + else + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("0x%2x, ", tmp_buf[i])); + } + } + + if(btcoexist->manual_control) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], BtInfoNotify(), return for Manual CTRL<===\n")); + return; + } + if(btcoexist->stop_coex_dm) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], BtInfoNotify(), return for Coex STOPPED!!<===\n")); + return; + } + + if(BT_INFO_SRC_8812A_1ANT_WIFI_FW != rsp_source) + { + coex_sta->bt_retry_cnt = + coex_sta->bt_info_c2h[rsp_source][2]; + + coex_sta->bt_rssi = + coex_sta->bt_info_c2h[rsp_source][3]*2+10; + + coex_sta->bt_info_ext = + coex_sta->bt_info_c2h[rsp_source][4]; + + // Here we need to resend some wifi info to BT + // because bt is reset and loss of the info. + if( (coex_sta->bt_info_ext & BIT1) ) + { + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_CONNECTED, &wifi_connected); + if(wifi_connected) + { + EXhalbtc8812a1ant_MediaStatusNotify(btcoexist, BTC_MEDIA_CONNECT); + } + else + { + EXhalbtc8812a1ant_MediaStatusNotify(btcoexist, BTC_MEDIA_DISCONNECT); + } + + set_bt_psd_mode = 0; + } + + // test-chip bt patch doesn't support, temporary remove. + // need to add back when mp-chip. 12/20/2012 +#if 0 + if(set_bt_psd_mode <= 3) + { + halbtc8812a1ant_SetBtPsdMode(btcoexist, FORCE_EXEC, 0xd); + set_bt_psd_mode++; + } + + if(coex_dm->bCurBtLnaConstrain) + { + if( (coex_sta->bt_info_ext & BIT2) ) + { + } + else + { + if(set_bt_lna_cnt <= 3) + { + halbtc8812a1ant_SetBtLnaConstrain(btcoexist, FORCE_EXEC, true); + set_bt_lna_cnt++; + } + } + } + else + { + set_bt_lna_cnt = 0; + } +#endif + // test-chip bt patch only rsp the status for BT_RSP, + // so temporary we consider the following only under BT_RSP + if(BT_INFO_SRC_8812A_1ANT_BT_RSP == rsp_source) + { + if( (coex_sta->bt_info_ext & BIT3) ) + { + #if 0// temp disable because bt patch report the wrong value. + halbtc8812a1ant_IgnoreWlanAct(btcoexist, FORCE_EXEC, false); + #endif + } + else + { + // BT already NOT ignore Wlan active, do nothing here. + } + + if( (coex_sta->bt_info_ext & BIT4) ) + { + // BT auto report already enabled, do nothing + } + else + { + halbtc8812a1ant_BtAutoReport(btcoexist, FORCE_EXEC, true); + } + } + } + + // check BIT2 first ==> check if bt is under inquiry or page scan + if(bt_info & BT_INFO_8812A_1ANT_B_INQ_PAGE) + { + coex_sta->c2h_bt_inquiry_page = true; + coex_dm->bt_status = BT_8812A_1ANT_BT_STATUS_INQ_PAGE; + } + else + { + coex_sta->c2h_bt_inquiry_page = false; + if(!(bt_info&BT_INFO_8812A_1ANT_B_CONNECTION)) + { + coex_dm->bt_status = BT_8812A_1ANT_BT_STATUS_NON_CONNECTED_IDLE; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], BtInfoNotify(), bt non-connected idle!!!\n")); + } + else if(bt_info == BT_INFO_8812A_1ANT_B_CONNECTION) // connection exists but no busy + { + coex_dm->bt_status = BT_8812A_1ANT_BT_STATUS_CONNECTED_IDLE; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], BtInfoNotify(), bt connected-idle!!!\n")); + } + else if((bt_info&BT_INFO_8812A_1ANT_B_SCO_ESCO) || + (bt_info&BT_INFO_8812A_1ANT_B_SCO_BUSY)) + { + coex_dm->bt_status = BT_8812A_1ANT_BT_STATUS_SCO_BUSY; + bRejApAggPkt = true; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], BtInfoNotify(), bt sco busy!!!\n")); + } + else if(bt_info&BT_INFO_8812A_1ANT_B_ACL_BUSY) + { + if(BT_8812A_1ANT_BT_STATUS_ACL_BUSY != coex_dm->bt_status) + coex_dm->reset_tdma_adjust = true; + coex_dm->bt_status = BT_8812A_1ANT_BT_STATUS_ACL_BUSY; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], BtInfoNotify(), bt acl busy!!!\n")); + } +#if 0 + else if(bt_info&BT_INFO_8812A_1ANT_B_SCO_ESCO) + { + coex_dm->bt_status = BT_8812A_1ANT_BT_STATUS_ACL_SCO_BUSY; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], BtInfoNotify(), bt acl/sco busy!!!\n")); + } +#endif + else + { + //DbgPrint("error, undefined bt_info=0x%x\n", bt_info); + coex_dm->bt_status = BT_8812A_1ANT_BT_STATUS_MAX; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], BtInfoNotify(), bt non-defined state!!!\n")); + } + + // send delete BA to disable aggregation + //btcoexist->btc_set(btcoexist, BTC_SET_BL_TO_REJ_AP_AGG_PKT, &bRejApAggPkt); + } + + if( (BT_8812A_1ANT_BT_STATUS_ACL_BUSY == coex_dm->bt_status) || + (BT_8812A_1ANT_BT_STATUS_SCO_BUSY == coex_dm->bt_status) || + (BT_8812A_1ANT_BT_STATUS_ACL_SCO_BUSY == coex_dm->bt_status) ) + { + bt_busy = true; + } + else + { + bt_busy = false; + } + btcoexist->btc_set(btcoexist, BTC_SET_BL_BT_TRAFFIC_BUSY, &bt_busy); + + if(bt_busy) + { + limited_dig = true; + } + else + { + limited_dig = false; + } + coex_dm->limited_dig = limited_dig; + btcoexist->btc_set(btcoexist, BTC_SET_BL_BT_LIMITED_DIG, &limited_dig); + + halbtc8812a1ant_RunCoexistMechanism(btcoexist); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], BtInfoNotify()<===\n")); +} + +void +EXhalbtc8812a1ant_StackOperationNotify( + PBTC_COEXIST btcoexist, + u1Byte type + ) +{ + if(BTC_STACK_OP_INQ_PAGE_PAIR_START == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], StackOP Inquiry/page/pair start notify\n")); + } + else if(BTC_STACK_OP_INQ_PAGE_PAIR_FINISH == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], StackOP Inquiry/page/pair finish notify\n")); + } +} + +void +EXhalbtc8812a1ant_HaltNotify( + PBTC_COEXIST btcoexist + ) +{ + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], Halt notify\n")); + + halbtc8812a1ant_IgnoreWlanAct(btcoexist, FORCE_EXEC, true); + halbtc8812a1ant_PsTdma(btcoexist, FORCE_EXEC, false, 0); + btcoexist->btc_write_1byte(btcoexist, 0x4f, 0xf); + halbtc8812a1ant_WifiParaAdjust(btcoexist, false); +} + +void +EXhalbtc8812a1ant_PnpNotify( + PBTC_COEXIST btcoexist, + u1Byte pnpState + ) +{ + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], Pnp notify\n")); + + if(BTC_WIFI_PNP_SLEEP == pnpState) + { + btcoexist->stop_coex_dm = true; + halbtc8812a1ant_IgnoreWlanAct(btcoexist, FORCE_EXEC, true); + halbtc8812a1ant_PsTdmaCheckForPowerSaveState(btcoexist, false); + btcoexist->btc_set(btcoexist, BTC_SET_ACT_LEAVE_LPS, NULL); + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, false, 9); + } + else if(BTC_WIFI_PNP_WAKE_UP == pnpState) + { + + } +} + +void +EXhalbtc8812a1ant_Periodical( + PBTC_COEXIST btcoexist + ) +{ + BOOLEAN wifi_under5g=false; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Periodical()===>\n")); + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], 1Ant Periodical!!\n")); + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_UNDER_5G, &wifi_under5g); + + if(wifi_under5g) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Periodical(), return for 5G<===\n")); + halbtc8812a1ant_CoexAllOff(btcoexist); + return; + } + + halbtc8812a1ant_QueryBtInfo(btcoexist); + halbtc8812a1ant_MonitorBtCtr(btcoexist); + halbtc8812a1ant_MonitorBtEnableDisable(btcoexist); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Periodical()<===\n")); +} + +void +EXhalbtc8812a1ant_DbgControl( + PBTC_COEXIST btcoexist, + u1Byte opCode, + u1Byte opLen, + pu1Byte pData + ) +{ + switch(opCode) + { + case BTC_DBG_SET_COEX_NORMAL: + btcoexist->manual_control = false; + halbtc8812a1ant_InitCoexDm(btcoexist); + break; + case BTC_DBG_SET_COEX_WIFI_ONLY: + btcoexist->manual_control = true; + halbtc8812a1ant_PsTdmaCheckForPowerSaveState(btcoexist, false); + btcoexist->btc_set(btcoexist, BTC_SET_ACT_LEAVE_LPS, NULL); + halbtc8812a1ant_PsTdma(btcoexist, NORMAL_EXEC, false, 9); + break; + case BTC_DBG_SET_COEX_BT_ONLY: + // todo + break; + default: + break; + } +} +#endif + --- linux-3.13.0.orig/drivers/staging/rtl8821ae/btcoexist/HalBtc8812a1Ant.h +++ linux-3.13.0/drivers/staging/rtl8821ae/btcoexist/HalBtc8812a1Ant.h @@ -0,0 +1,205 @@ +//=========================================== +// The following is for 8812A_1ANT BT Co-exist definition +//=========================================== +#define BT_INFO_8812A_1ANT_B_FTP BIT7 +#define BT_INFO_8812A_1ANT_B_A2DP BIT6 +#define BT_INFO_8812A_1ANT_B_HID BIT5 +#define BT_INFO_8812A_1ANT_B_SCO_BUSY BIT4 +#define BT_INFO_8812A_1ANT_B_ACL_BUSY BIT3 +#define BT_INFO_8812A_1ANT_B_INQ_PAGE BIT2 +#define BT_INFO_8812A_1ANT_B_SCO_ESCO BIT1 +#define BT_INFO_8812A_1ANT_B_CONNECTION BIT0 + +#define BT_INFO_8812A_1ANT_A2DP_BASIC_RATE(_BT_INFO_EXT_) \ + (((_BT_INFO_EXT_&BIT0))? true:false) + +#define BTC_RSSI_COEX_THRESH_TOL_8812A_1ANT 2 + +#define +#define OUT + +typedef enum _BT_INFO_SRC_8812A_1ANT{ + BT_INFO_SRC_8812A_1ANT_WIFI_FW = 0x0, + BT_INFO_SRC_8812A_1ANT_BT_RSP = 0x1, + BT_INFO_SRC_8812A_1ANT_BT_ACTIVE_SEND = 0x2, + BT_INFO_SRC_8812A_1ANT_MAX +}BT_INFO_SRC_8812A_1ANT,*PBT_INFO_SRC_8812A_1ANT; + +typedef enum _BT_8812A_1ANT_BT_STATUS{ + BT_8812A_1ANT_BT_STATUS_NON_CONNECTED_IDLE = 0x0, + BT_8812A_1ANT_BT_STATUS_CONNECTED_IDLE = 0x1, + BT_8812A_1ANT_BT_STATUS_INQ_PAGE = 0x2, + BT_8812A_1ANT_BT_STATUS_ACL_BUSY = 0x3, + BT_8812A_1ANT_BT_STATUS_SCO_BUSY = 0x4, + BT_8812A_1ANT_BT_STATUS_ACL_SCO_BUSY = 0x5, + BT_8812A_1ANT_BT_STATUS_MAX +}BT_8812A_1ANT_BT_STATUS,*PBT_8812A_1ANT_BT_STATUS; + +typedef enum _BT_8812A_1ANT_COEX_ALGO{ + BT_8812A_1ANT_COEX_ALGO_UNDEFINED = 0x0, + BT_8812A_1ANT_COEX_ALGO_SCO = 0x1, + BT_8812A_1ANT_COEX_ALGO_HID = 0x2, + BT_8812A_1ANT_COEX_ALGO_A2DP = 0x3, + BT_8812A_1ANT_COEX_ALGO_A2DP_PANHS = 0x4, + BT_8812A_1ANT_COEX_ALGO_PANEDR = 0x5, + BT_8812A_1ANT_COEX_ALGO_PANHS = 0x6, + BT_8812A_1ANT_COEX_ALGO_PANEDR_A2DP = 0x7, + BT_8812A_1ANT_COEX_ALGO_PANEDR_HID = 0x8, + BT_8812A_1ANT_COEX_ALGO_HID_A2DP_PANEDR = 0x9, + BT_8812A_1ANT_COEX_ALGO_HID_A2DP = 0xa, + BT_8812A_1ANT_COEX_ALGO_MAX = 0xb, +}BT_8812A_1ANT_COEX_ALGO,*PBT_8812A_1ANT_COEX_ALGO; + +typedef struct _COEX_DM_8812A_1ANT{ + // fw mechanism + bool pre_dec_bt_pwr; + bool cur_dec_bt_pwr; + bool bPreBtLnaConstrain; + bool bCurBtLnaConstrain; + u8 bPreBtPsdMode; + u8 bCurBtPsdMode; + u8 pre_fw_dac_swing_lvl; + u8 cur_fw_dac_swing_lvl; + bool cur_ignore_wlan_act; + bool pre_ignore_wlan_act; + u8 pre_ps_tdma; + u8 cur_ps_tdma; + u8 ps_tdma_para[5]; + u8 ps_tdma_du_adj_type; + bool reset_tdma_adjust; + bool pre_ps_tdma_on; + bool cur_ps_tdma_on; + bool pre_bt_auto_report; + bool cur_bt_auto_report; + u8 pre_lps; + u8 cur_lps; + u8 pre_rpwm; + u8 cur_rpwm; + + // sw mechanism + bool pre_rf_rx_lpf_shrink; + bool cur_rf_rx_lpf_shrink; + u32 bt_rf0x1e_backup; + bool pre_low_penalty_ra; + bool cur_low_penalty_ra; + bool pre_dac_swing_on; + u32 pre_dac_swing_lvl; + bool cur_dac_swing_on; + u32 cur_dac_swing_lvl; + bool pre_adc_back_off; + bool cur_adc_back_off; + bool pre_agc_table_en; + bool cur_agc_table_en; + u32 pre_val0x6c0; + u32 cur_val0x6c0; + u32 pre_val0x6c4; + u32 cur_val0x6c4; + u32 pre_val0x6c8; + u32 cur_val0x6c8; + u8 pre_val0x6cc; + u8 cur_val0x6cc; + bool limited_dig; + + // algorithm related + u8 pre_algorithm; + u8 cur_algorithm; + u8 bt_status; + u8 wifi_chnl_info[3]; + + u8 error_condition; +} COEX_DM_8812A_1ANT, *PCOEX_DM_8812A_1ANT; + +typedef struct _COEX_STA_8812A_1ANT{ + bool under_lps; + bool under_ips; + u32 high_priority_tx; + u32 high_priority_rx; + u32 low_priority_tx; + u32 low_priority_rx; + u8 bt_rssi; + u8 pre_bt_rssi_state; + u8 pre_wifi_rssi_state[4]; + bool c2h_bt_info_req_sent; + u8 bt_info_c2h[BT_INFO_SRC_8812A_1ANT_MAX][10]; + u32 bt_info_c2h_cnt[BT_INFO_SRC_8812A_1ANT_MAX]; + bool c2h_bt_inquiry_page; + u8 bt_retry_cnt; + u8 bt_info_ext; +}COEX_STA_8812A_1ANT, *PCOEX_STA_8812A_1ANT; + +//=========================================== +// The following is interface which will notify coex module. +//=========================================== +void +EXhalbtc8812a1ant_InitHwConfig( + PBTC_COEXIST btcoexist + ); +void +EXhalbtc8812a1ant_InitCoexDm( + PBTC_COEXIST btcoexist + ); +void +EXhalbtc8812a1ant_IpsNotify( + PBTC_COEXIST btcoexist, + u8 type + ); +void +EXhalbtc8812a1ant_LpsNotify( + PBTC_COEXIST btcoexist, + u8 type + ); +void +EXhalbtc8812a1ant_ScanNotify( + PBTC_COEXIST btcoexist, + u8 type + ); +void +EXhalbtc8812a1ant_ConnectNotify( + PBTC_COEXIST btcoexist, + u8 type + ); +void +EXhalbtc8812a1ant_MediaStatusNotify( + PBTC_COEXIST btcoexist, + u8 type + ); +void +EXhalbtc8812a1ant_SpecialPacketNotify( + PBTC_COEXIST btcoexist, + u8 type + ); +void +EXhalbtc8812a1ant_BtInfoNotify( + PBTC_COEXIST btcoexist, + u8 *tmp_buf, + u8 length + ); +void +EXhalbtc8812a1ant_StackOperationNotify( + PBTC_COEXIST btcoexist, + u8 type + ); +void +EXhalbtc8812a1ant_HaltNotify( + PBTC_COEXIST btcoexist + ); +void +EXhalbtc8812a1ant_PnpNotify( + PBTC_COEXIST btcoexist, + u8 pnpState + ); +void +EXhalbtc8812a1ant_Periodical( + PBTC_COEXIST btcoexist + ); +void +EXhalbtc8812a1ant_DisplayCoexInfo( + PBTC_COEXIST btcoexist + ); +void +EXhalbtc8812a1ant_DbgControl( + PBTC_COEXIST btcoexist, + u8 opCode, + u8 opLen, + u8 *pData + ); --- linux-3.13.0.orig/drivers/staging/rtl8821ae/btcoexist/habtc8723a1ant.c +++ linux-3.13.0/drivers/staging/rtl8821ae/btcoexist/habtc8723a1ant.c @@ -0,0 +1,1614 @@ +//============================================================ +// Description: +// +// This file is for RTL8723A Co-exist mechanism +// +// History +// 2012/08/22 Cosa first check in. +// 2012/11/14 Cosa Revise for 8723A 1Ant out sourcing. +// +//============================================================ + +//============================================================ +// include files +//============================================================ +#include "Mp_Precomp.h" +#if(BT_30_SUPPORT == 1) +//============================================================ +// Global variables, these are static variables +//============================================================ +static COEX_DM_8723A_1ANT GLCoexDm8723a1Ant; +static PCOEX_DM_8723A_1ANT pCoexDm=&GLCoexDm8723a1Ant; +static COEX_STA_8723A_1ANT GLCoexSta8723a1Ant; +static PCOEX_STA_8723A_1ANT pCoexSta=&GLCoexSta8723a1Ant; + +const char *const GLBtInfoSrc8723a1Ant[]={ + "BT Info[wifi fw]", + "BT Info[bt rsp]", + "BT Info[bt auto report]", +}; + +//============================================================ +// local function proto type if needed +//============================================================ +//============================================================ +// local function start with halbtc8723a1ant_ +//============================================================ +VOID +halbtc8723a1ant_Reg0x550Bit3( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bSet + ) +{ + u1Byte u1tmp=0; + + u1tmp = pBtCoexist->btc_read_1byte(pBtCoexist, 0x550); + if(bSet) + { + u1tmp |= BIT3; + } + else + { + u1tmp &= ~BIT3; + } + pBtCoexist->btc_write_1byte(pBtCoexist, 0x550, u1tmp); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], set 0x550[3]=%d\n", (bSet? 1:0))); +} + +VOID +halbtc8723a1ant_NotifyFwScan( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte scanType + ) +{ + u1Byte H2C_Parameter[1] ={0}; + + if(BTC_SCAN_START == scanType) + H2C_Parameter[0] = 0x1; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, ("[BTCoex], Notify FW for wifi scan, write 0x3b=0x%x\n", + H2C_Parameter[0])); + + pBtCoexist->btc_fill_h2c(pBtCoexist, 0x3b, 1, H2C_Parameter); +} + +VOID +halbtc8723a1ant_QueryBtInfo( + IN PBTC_COEXIST pBtCoexist + ) +{ + u1Byte H2C_Parameter[1] ={0}; + + pCoexSta->bC2hBtInfoReqSent = true; + + H2C_Parameter[0] |= BIT0; // trigger + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, ("[BTCoex], Query Bt Info, FW write 0x38=0x%x\n", + H2C_Parameter[0])); + + pBtCoexist->btc_fill_h2c(pBtCoexist, 0x38, 1, H2C_Parameter); +} + +VOID +halbtc8723a1ant_SetSwRfRxLpfCorner( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bRxRfShrinkOn + ) +{ + if(bRxRfShrinkOn) + { + //Shrink RF Rx LPF corner + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], Shrink RF Rx LPF corner!!\n")); + pBtCoexist->btc_set_rf_reg(pBtCoexist, BTC_RF_A, 0x1e, 0xfffff, 0xf0ff7); + } + else + { + //Resume RF Rx LPF corner + // After initialized, we can use pCoexDm->btRf0x1eBackup + if(pBtCoexist->initilized) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], Resume RF Rx LPF corner!!\n")); + pBtCoexist->btc_set_rf_reg(pBtCoexist, BTC_RF_A, 0x1e, 0xfffff, pCoexDm->btRf0x1eBackup); + } + } +} + +VOID +halbtc8723a1ant_RfShrink( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bForceExec, + IN BOOLEAN bRxRfShrinkOn + ) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, ("[BTCoex], %s turn Rx RF Shrink = %s\n", + (bForceExec? "force to":""), ((bRxRfShrinkOn)? "ON":"OFF"))); + pCoexDm->bCurRfRxLpfShrink = bRxRfShrinkOn; + + if(!bForceExec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, ("[BTCoex], bPreRfRxLpfShrink=%d, bCurRfRxLpfShrink=%d\n", + pCoexDm->bPreRfRxLpfShrink, pCoexDm->bCurRfRxLpfShrink)); + + if(pCoexDm->bPreRfRxLpfShrink == pCoexDm->bCurRfRxLpfShrink) + return; + } + halbtc8723a1ant_SetSwRfRxLpfCorner(pBtCoexist, pCoexDm->bCurRfRxLpfShrink); + + pCoexDm->bPreRfRxLpfShrink = pCoexDm->bCurRfRxLpfShrink; +} + +VOID +halbtc8723a1ant_SetSwPenaltyTxRateAdaptive( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bLowPenaltyRa + ) +{ + u1Byte tmpU1; + + tmpU1 = pBtCoexist->btc_read_1byte(pBtCoexist, 0x4fd); + tmpU1 |= BIT0; + if(bLowPenaltyRa) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], Tx rate adaptive, set low penalty!!\n")); + tmpU1 &= ~BIT2; + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], Tx rate adaptive, set normal!!\n")); + tmpU1 |= BIT2; + } + + pBtCoexist->btc_write_1byte(pBtCoexist, 0x4fd, tmpU1); +} + +VOID +halbtc8723a1ant_LowPenaltyRa( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bForceExec, + IN BOOLEAN bLowPenaltyRa + ) +{ + return; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, ("[BTCoex], %s turn LowPenaltyRA = %s\n", + (bForceExec? "force to":""), ((bLowPenaltyRa)? "ON":"OFF"))); + pCoexDm->bCurLowPenaltyRa = bLowPenaltyRa; + + if(!bForceExec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, ("[BTCoex], bPreLowPenaltyRa=%d, bCurLowPenaltyRa=%d\n", + pCoexDm->bPreLowPenaltyRa, pCoexDm->bCurLowPenaltyRa)); + + if(pCoexDm->bPreLowPenaltyRa == pCoexDm->bCurLowPenaltyRa) + return; + } + halbtc8723a1ant_SetSwPenaltyTxRateAdaptive(pBtCoexist, pCoexDm->bCurLowPenaltyRa); + + pCoexDm->bPreLowPenaltyRa = pCoexDm->bCurLowPenaltyRa; +} + +VOID +halbtc8723a1ant_SetCoexTable( + IN PBTC_COEXIST pBtCoexist, + IN u4Byte val0x6c0, + IN u4Byte val0x6c8, + IN u1Byte val0x6cc + ) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], set coex table, set 0x6c0=0x%x\n", val0x6c0)); + pBtCoexist->btc_write_4byte(pBtCoexist, 0x6c0, val0x6c0); + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], set coex table, set 0x6c8=0x%x\n", val0x6c8)); + pBtCoexist->btc_write_4byte(pBtCoexist, 0x6c8, val0x6c8); + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], set coex table, set 0x6cc=0x%x\n", val0x6cc)); + pBtCoexist->btc_write_1byte(pBtCoexist, 0x6cc, val0x6cc); +} + +VOID +halbtc8723a1ant_CoexTable( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bForceExec, + IN u4Byte val0x6c0, + IN u4Byte val0x6c8, + IN u1Byte val0x6cc + ) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, ("[BTCoex], %s write Coex Table 0x6c0=0x%x, 0x6c8=0x%x, 0x6cc=0x%x\n", + (bForceExec? "force to":""), val0x6c0, val0x6c8, val0x6cc)); + pCoexDm->curVal0x6c0 = val0x6c0; + pCoexDm->curVal0x6c8 = val0x6c8; + pCoexDm->curVal0x6cc = val0x6cc; + + if(!bForceExec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, ("[BTCoex], preVal0x6c0=0x%x, preVal0x6c8=0x%x, preVal0x6cc=0x%x !!\n", + pCoexDm->preVal0x6c0, pCoexDm->preVal0x6c8, pCoexDm->preVal0x6cc)); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, ("[BTCoex], curVal0x6c0=0x%x, curVal0x6c8=0x%x, curVal0x6cc=0x%x !!\n", + pCoexDm->curVal0x6c0, pCoexDm->curVal0x6c8, pCoexDm->curVal0x6cc)); + + if( (pCoexDm->preVal0x6c0 == pCoexDm->curVal0x6c0) && + (pCoexDm->preVal0x6c8 == pCoexDm->curVal0x6c8) && + (pCoexDm->preVal0x6cc == pCoexDm->curVal0x6cc) ) + return; + } + halbtc8723a1ant_SetCoexTable(pBtCoexist, val0x6c0, val0x6c8, val0x6cc); + + pCoexDm->preVal0x6c0 = pCoexDm->curVal0x6c0; + pCoexDm->preVal0x6c8 = pCoexDm->curVal0x6c8; + pCoexDm->preVal0x6cc = pCoexDm->curVal0x6cc; +} + +VOID +halbtc8723a1ant_SetFwIgnoreWlanAct( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bEnable + ) +{ + u1Byte H2C_Parameter[1] ={0}; + + if(bEnable) + { + H2C_Parameter[0] |= BIT0; // function enable + } + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, ("[BTCoex], set FW for BT Ignore Wlan_Act, FW write 0x25=0x%x\n", + H2C_Parameter[0])); + + pBtCoexist->btc_fill_h2c(pBtCoexist, 0x25, 1, H2C_Parameter); +} + +VOID +halbtc8723a1ant_IgnoreWlanAct( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bForceExec, + IN BOOLEAN bEnable + ) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, ("[BTCoex], %s turn Ignore WlanAct %s\n", + (bForceExec? "force to":""), (bEnable? "ON":"OFF"))); + pCoexDm->bCurIgnoreWlanAct = bEnable; + + if(!bForceExec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], bPreIgnoreWlanAct = %d, bCurIgnoreWlanAct = %d!!\n", + pCoexDm->bPreIgnoreWlanAct, pCoexDm->bCurIgnoreWlanAct)); + + if(pCoexDm->bPreIgnoreWlanAct == pCoexDm->bCurIgnoreWlanAct) + return; + } + halbtc8723a1ant_SetFwIgnoreWlanAct(pBtCoexist, bEnable); + + pCoexDm->bPreIgnoreWlanAct = pCoexDm->bCurIgnoreWlanAct; +} + +VOID +halbtc8723a1ant_SetFwPstdma( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type, + IN u1Byte byte1, + IN u1Byte byte2, + IN u1Byte byte3, + IN u1Byte byte4, + IN u1Byte byte5 + ) +{ + u1Byte H2C_Parameter[5] ={0}; + u1Byte realByte1=byte1, realByte5=byte5; + BOOLEAN bApEnable=FALSE; + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_AP_MODE_ENABLE, &bApEnable); + + // byte1[1:0] != 0 means enable pstdma + // for 2Ant bt coexist, if byte1 != 0 means enable pstdma + if(byte1) + { + if(bApEnable) + { + if(type != 5 && type != 12) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], FW for 1Ant AP mode\n")); + realByte1 &= ~BIT4; + realByte1 |= BIT5; + + realByte5 |= BIT5; + realByte5 &= ~BIT6; + } + } + } + H2C_Parameter[0] = realByte1; + H2C_Parameter[1] = byte2; + H2C_Parameter[2] = byte3; + H2C_Parameter[3] = byte4; + H2C_Parameter[4] = realByte5; + + pCoexDm->psTdmaPara[0] = realByte1; + pCoexDm->psTdmaPara[1] = byte2; + pCoexDm->psTdmaPara[2] = byte3; + pCoexDm->psTdmaPara[3] = byte4; + pCoexDm->psTdmaPara[4] = realByte5; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, ("[BTCoex], FW write 0x3a(5bytes)=0x%x%08x\n", + H2C_Parameter[0], + H2C_Parameter[1]<<24|H2C_Parameter[2]<<16|H2C_Parameter[3]<<8|H2C_Parameter[4])); + + pBtCoexist->btc_fill_h2c(pBtCoexist, 0x3a, 5, H2C_Parameter); +} + +VOID +halbtc8723a1ant_PsTdma( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bForceExec, + IN BOOLEAN bTurnOn, + IN u1Byte type + ) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, ("[BTCoex], %s turn %s PS TDMA, type=%d\n", + (bForceExec? "force to":""), (bTurnOn? "ON":"OFF"), type)); + pCoexDm->bCurPsTdmaOn = bTurnOn; + pCoexDm->curPsTdma = type; + + if(!bForceExec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], bPrePsTdmaOn = %d, bCurPsTdmaOn = %d!!\n", + pCoexDm->bPrePsTdmaOn, pCoexDm->bCurPsTdmaOn)); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], prePsTdma = %d, curPsTdma = %d!!\n", + pCoexDm->prePsTdma, pCoexDm->curPsTdma)); + + if( (pCoexDm->bPrePsTdmaOn == pCoexDm->bCurPsTdmaOn) && + (pCoexDm->prePsTdma == pCoexDm->curPsTdma) ) + return; + } + if(pCoexDm->bCurPsTdmaOn) + { + switch(pCoexDm->curPsTdma) + { + case 1: + default: + halbtc8723a1ant_SetFwPstdma(pBtCoexist, type, 0x13, 0x1a, 0x1a, 0x0, 0x40); + break; + case 2: + halbtc8723a1ant_SetFwPstdma(pBtCoexist, type, 0x13, 0x12, 0x12, 0x0, 0x40); + break; + case 3: + halbtc8723a1ant_SetFwPstdma(pBtCoexist, type, 0x93, 0x3f, 0x3, 0x10, 0x40); + break; + case 4: + halbtc8723a1ant_SetFwPstdma(pBtCoexist, type, 0x93, 0x15, 0x3, 0x10, 0x0); + break; + case 5: + halbtc8723a1ant_SetFwPstdma(pBtCoexist, type, 0xa9, 0x15, 0x3, 0x35, 0xc0); + break; + + case 8: + halbtc8723a1ant_SetFwPstdma(pBtCoexist, type, 0x93, 0x25, 0x3, 0x10, 0x0); + break; + case 9: + halbtc8723a1ant_SetFwPstdma(pBtCoexist, type, 0x13, 0xa, 0xa, 0x0, 0x40); + break; + case 10: + halbtc8723a1ant_SetFwPstdma(pBtCoexist, type, 0x13, 0xa, 0xa, 0x0, 0x40); + break; + case 11: + halbtc8723a1ant_SetFwPstdma(pBtCoexist, type, 0x13, 0x5, 0x5, 0x0, 0x40); + break; + case 12: + halbtc8723a1ant_SetFwPstdma(pBtCoexist, type, 0xa9, 0xa, 0x3, 0x15, 0xc0); + break; + + case 18: + halbtc8723a1ant_SetFwPstdma(pBtCoexist, type, 0x93, 0x25, 0x3, 0x10, 0x0); + break; + + case 20: + halbtc8723a1ant_SetFwPstdma(pBtCoexist, type, 0x13, 0x2a, 0x2a, 0x0, 0x0); + break; + case 21: + halbtc8723a1ant_SetFwPstdma(pBtCoexist, type, 0x93, 0x20, 0x3, 0x10, 0x40); + break; + case 22: + halbtc8723a1ant_SetFwPstdma(pBtCoexist, type, 0x13, 0x1a, 0x1a, 0x2, 0x40); + break; + case 23: + halbtc8723a1ant_SetFwPstdma(pBtCoexist, type, 0x13, 0x12, 0x12, 0x2, 0x40); + break; + case 24: + halbtc8723a1ant_SetFwPstdma(pBtCoexist, type, 0x13, 0xa, 0xa, 0x2, 0x40); + break; + case 25: + halbtc8723a1ant_SetFwPstdma(pBtCoexist, type, 0x13, 0x5, 0x5, 0x2, 0x40); + break; + case 26: + halbtc8723a1ant_SetFwPstdma(pBtCoexist, type, 0x93, 0x25, 0x3, 0x10, 0x0); + break; + case 27: + halbtc8723a1ant_SetFwPstdma(pBtCoexist, type, 0x13, 0x5, 0x5, 0x2, 0x40); + break; + case 28: + halbtc8723a1ant_SetFwPstdma(pBtCoexist, type, 0x3, 0x2f, 0x2f, 0x0, 0x0); + break; + + } + } + else + { + // disable PS tdma + switch(pCoexDm->curPsTdma) + { + case 8: + halbtc8723a1ant_SetFwPstdma(pBtCoexist, type, 0x8, 0x0, 0x0, 0x0, 0x0); + break; + case 0: + default: + halbtc8723a1ant_SetFwPstdma(pBtCoexist, type, 0x0, 0x0, 0x0, 0x0, 0x0); + pBtCoexist->btc_write_2byte(pBtCoexist, 0x860, 0x210); + break; + case 9: + halbtc8723a1ant_SetFwPstdma(pBtCoexist, type, 0x0, 0x0, 0x0, 0x0, 0x0); + pBtCoexist->btc_write_2byte(pBtCoexist, 0x860, 0x110); + break; + + } + } + + // update pre state + pCoexDm->bPrePsTdmaOn = pCoexDm->bCurPsTdmaOn; + pCoexDm->prePsTdma = pCoexDm->curPsTdma; +} + + +VOID +halbtc8723a1ant_CoexAllOff( + IN PBTC_COEXIST pBtCoexist + ) +{ + // fw all off + halbtc8723a1ant_IgnoreWlanAct(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 0); + + // sw all off + halbtc8723a1ant_LowPenaltyRa(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a1ant_RfShrink(pBtCoexist, NORMAL_EXEC, FALSE); + + // hw all off + halbtc8723a1ant_CoexTable(pBtCoexist, NORMAL_EXEC, 0x55555555, 0xffff, 0x3); +} + +VOID +halbtc8723a1ant_InitCoexDm( + IN PBTC_COEXIST pBtCoexist + ) +{ + // force to reset coex mechanism + halbtc8723a1ant_IgnoreWlanAct(pBtCoexist, FORCE_EXEC, FALSE); +} + +VOID +halbtc8723a1ant_BtEnableAction( + IN PBTC_COEXIST pBtCoexist + ) +{ + halbtc8723a1ant_IgnoreWlanAct(pBtCoexist, FORCE_EXEC, FALSE); +} + +VOID +halbtc8723a1ant_MonitorBtCtr( + IN PBTC_COEXIST pBtCoexist + ) +{ + u4Byte regHPTxRx, regLPTxRx, u4Tmp; + u4Byte regHPTx=0, regHPRx=0, regLPTx=0, regLPRx=0; + u1Byte u1Tmp; + + regHPTxRx = 0x770; + regLPTxRx = 0x774; + + u4Tmp = pBtCoexist->btc_read_4byte(pBtCoexist, regHPTxRx); + regHPTx = u4Tmp & MASKLWORD; + regHPRx = (u4Tmp & MASKHWORD)>>16; + + u4Tmp = pBtCoexist->btc_read_4byte(pBtCoexist, regLPTxRx); + regLPTx = u4Tmp & MASKLWORD; + regLPRx = (u4Tmp & MASKHWORD)>>16; + + pCoexSta->highPriorityTx = regHPTx; + pCoexSta->highPriorityRx = regHPRx; + pCoexSta->lowPriorityTx = regLPTx; + pCoexSta->lowPriorityRx = regLPRx; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, ("[BTCoex], High Priority Tx/Rx (reg 0x%x)=0x%x(%d)/0x%x(%d)\n", + regHPTxRx, regHPTx, regHPTx, regHPRx, regHPRx)); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, ("[BTCoex], Low Priority Tx/Rx (reg 0x%x)=0x%x(%d)/0x%x(%d)\n", + regLPTxRx, regLPTx, regLPTx, regLPRx, regLPRx)); + + // reset counter + pBtCoexist->btc_write_1byte(pBtCoexist, 0x76e, 0xc); +} + +VOID +halbtc8723a1ant_MonitorBtEnableDisable( + IN PBTC_COEXIST pBtCoexist + ) +{ + static BOOLEAN bPreBtDisabled=FALSE; + static u4Byte btDisableCnt=0; + BOOLEAN bBtActive=true, bBtDisabled=FALSE; + + // This function check if bt is disabled + + if( pCoexSta->highPriorityTx == 0 && + pCoexSta->highPriorityRx == 0 && + pCoexSta->lowPriorityTx == 0 && + pCoexSta->lowPriorityRx == 0) + { + bBtActive = FALSE; + } + if( pCoexSta->highPriorityTx == 0xffff && + pCoexSta->highPriorityRx == 0xffff && + pCoexSta->lowPriorityTx == 0xffff && + pCoexSta->lowPriorityRx == 0xffff) + { + bBtActive = FALSE; + } + if(bBtActive) + { + btDisableCnt = 0; + bBtDisabled = FALSE; + pBtCoexist->btc_set(pBtCoexist, BTC_SET_BL_BT_DISABLE, &bBtDisabled); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, ("[BTCoex], BT is enabled !!\n")); + } + else + { + btDisableCnt++; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, ("[BTCoex], bt all counters=0, %d times!!\n", + btDisableCnt)); + if(btDisableCnt >= 2) + { + bBtDisabled = true; + pBtCoexist->btc_set(pBtCoexist, BTC_SET_BL_BT_DISABLE, &bBtDisabled); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, ("[BTCoex], BT is disabled !!\n")); + } + } + if(bPreBtDisabled != bBtDisabled) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, ("[BTCoex], BT is from %s to %s!!\n", + (bPreBtDisabled ? "disabled":"enabled"), + (bBtDisabled ? "disabled":"enabled"))); + bPreBtDisabled = bBtDisabled; + if(!bBtDisabled) + { + halbtc8723a1ant_BtEnableAction(pBtCoexist); + } + else + { + pBtCoexist->btc_set(pBtCoexist, BTC_SET_ACT_NORMAL_LPS, NULL); + } + } +} + +VOID +halbtc8723a1ant_TdmaDurationAdjust( + IN PBTC_COEXIST pBtCoexist + ) +{ + static s4Byte up,dn,m,n,WaitCount; + s4Byte result; //0: no change, +1: increase WiFi duration, -1: decrease WiFi duration + u1Byte retryCount=0; + u1Byte btState; + BOOLEAN bScan=FALSE, bLink=FALSE, bRoam=FALSE; + u4Byte wifiBw; + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw); + btState = pCoexDm->btStatus; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], TdmaDurationAdjust()\n")); + if(pCoexDm->psTdmaGlobalCnt != pCoexDm->psTdmaMonitorCnt) + { + pCoexDm->psTdmaMonitorCnt = 0; + pCoexDm->psTdmaGlobalCnt = 0; + } + if(pCoexDm->psTdmaMonitorCnt == 0) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], first run BT A2DP + WiFi busy state!!\n")); + if(btState == BT_STATE_8723A_1ANT_ACL_ONLY_BUSY) + { + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 1); + pCoexDm->psTdmaDuAdjType = 1; + } + else + { + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 22); + pCoexDm->psTdmaDuAdjType = 22; + } + //============ + up = 0; + dn = 0; + m = 1; + n= 3; + result = 0; + WaitCount = 0; + } + else + { + //accquire the BT TRx retry count from BT_Info byte2 + retryCount = pCoexSta->btRetryCnt; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], retryCount = %d\n", retryCount)); + result = 0; + WaitCount++; + + if(retryCount == 0) // no retry in the last 2-second duration + { + up++; + dn--; + + if (dn <= 0) + dn = 0; + + if(up >= n) // if s n 2 retry count0, hռeWiFi duration + { + WaitCount = 0; + n = 3; + up = 0; + dn = 0; + result = 1; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Increase wifi duration!!\n")); + } + } + else if (retryCount <= 3) // <=3 retry in the last 2-second duration + { + up--; + dn++; + + if (up <= 0) + up = 0; + + if (dn == 2) // if s 2 2 retry count< 3, hկWiFi duration + { + if (WaitCount <= 2) + m++; // קK@blevelӦ^ + else + m = 1; + + if ( m >= 20) //m ̤j = 20 ' ̤j120 recheckO_վ WiFi duration. + m = 20; + + n = 3*m; + up = 0; + dn = 0; + WaitCount = 0; + result = -1; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Decrease wifi duration for retryCounter<3!!\n")); + } + } + else //retry count > 3, un1 retry count > 3, hկWiFi duration + { + if (WaitCount == 1) + m++; // קK@blevelӦ^ + else + m = 1; + + if ( m >= 20) //m ̤j = 20 ' ̤j120 recheckO_վ WiFi duration. + m = 20; + + n = 3*m; + up = 0; + dn = 0; + WaitCount = 0; + result = -1; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Decrease wifi duration for retryCounter>3!!\n")); + } + + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], BT TxRx counter H+L <= 1200\n")); + if(btState != BT_STATE_8723A_1ANT_ACL_ONLY_BUSY) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], NOT ACL only busy!\n")); + if(BTC_WIFI_BW_HT40 != wifiBw) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], 20MHz\n")); + if(result == -1) + { + if(pCoexDm->curPsTdma == 22) + { + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 23); + pCoexDm->psTdmaDuAdjType = 23; + } + else if(pCoexDm->curPsTdma == 23) + { + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 24); + pCoexDm->psTdmaDuAdjType = 24; + } + else if(pCoexDm->curPsTdma == 24) + { + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 25); + pCoexDm->psTdmaDuAdjType = 25; + } + } + else if (result == 1) + { + if(pCoexDm->curPsTdma == 25) + { + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 24); + pCoexDm->psTdmaDuAdjType = 24; + } + else if(pCoexDm->curPsTdma == 24) + { + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 23); + pCoexDm->psTdmaDuAdjType = 23; + } + else if(pCoexDm->curPsTdma == 23) + { + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 22); + pCoexDm->psTdmaDuAdjType = 22; + } + } + // error handle, if not in the following state, + // set psTdma again. + if( (pCoexDm->psTdmaDuAdjType != 22) && + (pCoexDm->psTdmaDuAdjType != 23) && + (pCoexDm->psTdmaDuAdjType != 24) && + (pCoexDm->psTdmaDuAdjType != 25) ) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], duration case out of handle!!\n")); + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 23); + pCoexDm->psTdmaDuAdjType = 23; + } + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], 40MHz\n")); + if(result == -1) + { + if(pCoexDm->curPsTdma == 23) + { + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 24); + pCoexDm->psTdmaDuAdjType = 24; + } + else if(pCoexDm->curPsTdma == 24) + { + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 25); + pCoexDm->psTdmaDuAdjType = 25; + } + else if(pCoexDm->curPsTdma == 25) + { + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 27); + pCoexDm->psTdmaDuAdjType = 27; + } + } + else if (result == 1) + { + if(pCoexDm->curPsTdma == 27) + { + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 25); + pCoexDm->psTdmaDuAdjType = 25; + } + else if(pCoexDm->curPsTdma == 25) + { + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 24); + pCoexDm->psTdmaDuAdjType = 24; + } + else if(pCoexDm->curPsTdma == 24) + { + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 23); + pCoexDm->psTdmaDuAdjType = 23; + } + } + // error handle, if not in the following state, + // set psTdma again. + if( (pCoexDm->psTdmaDuAdjType != 23) && + (pCoexDm->psTdmaDuAdjType != 24) && + (pCoexDm->psTdmaDuAdjType != 25) && + (pCoexDm->psTdmaDuAdjType != 27) ) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], duration case out of handle!!\n")); + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 24); + pCoexDm->psTdmaDuAdjType = 24; + } + } + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], ACL only busy\n")); + if (result == -1) + { + if(pCoexDm->curPsTdma == 1) + { + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 2); + pCoexDm->psTdmaDuAdjType = 2; + } + else if(pCoexDm->curPsTdma == 2) + { + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 9); + pCoexDm->psTdmaDuAdjType = 9; + } + else if(pCoexDm->curPsTdma == 9) + { + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 11); + pCoexDm->psTdmaDuAdjType = 11; + } + } + else if (result == 1) + { + if(pCoexDm->curPsTdma == 11) + { + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 9); + pCoexDm->psTdmaDuAdjType = 9; + } + else if(pCoexDm->curPsTdma == 9) + { + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 2); + pCoexDm->psTdmaDuAdjType = 2; + } + else if(pCoexDm->curPsTdma == 2) + { + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 1); + pCoexDm->psTdmaDuAdjType = 1; + } + } + + // error handle, if not in the following state, + // set psTdma again. + if( (pCoexDm->psTdmaDuAdjType != 1) && + (pCoexDm->psTdmaDuAdjType != 2) && + (pCoexDm->psTdmaDuAdjType != 9) && + (pCoexDm->psTdmaDuAdjType != 11) ) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], duration case out of handle!!\n")); + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 2); + pCoexDm->psTdmaDuAdjType = 2; + } + } + } + } + + // if current PsTdma not match with the recorded one (when scan, dhcp...), + // then we have to adjust it back to the previous record one. + if(pCoexDm->curPsTdma != pCoexDm->psTdmaDuAdjType) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], PsTdma type dismatch!!!, curPsTdma=%d, recordPsTdma=%d\n", + pCoexDm->curPsTdma, pCoexDm->psTdmaDuAdjType)); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_SCAN, &bScan); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_LINK, &bLink); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_ROAM, &bRoam); + + if( !bScan && !bLink && !bRoam) + { + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, pCoexDm->psTdmaDuAdjType); + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], roaming/link/scan is under progress, will adjust next time!!!\n")); + } + } + pCoexDm->psTdmaMonitorCnt++; +} + + +VOID +halbtc8723a1ant_CoexForWifiConnect( + IN PBTC_COEXIST pBtCoexist + ) +{ + BOOLEAN bWifiConnected=FALSE, bWifiBusy=FALSE; + u1Byte btState, btInfoOriginal=0; + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_CONNECTED, &bWifiConnected); + + btState = pCoexDm->btStatus; + btInfoOriginal = pCoexSta->btInfoC2h[BT_INFO_SRC_8723A_1ANT_BT_RSP][0]; + + if(bWifiConnected) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], wifi connected!!\n")); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_BUSY, &bWifiBusy); + + if( !bWifiBusy && + ((BT_STATE_8723A_1ANT_NO_CONNECTION == btState) || + (BT_STATE_8723A_1ANT_CONNECT_IDLE == btState)) ) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], [Wifi is idle] or [Bt is non connected idle or Bt is connected idle]!!\n")); + + if(BT_STATE_8723A_1ANT_NO_CONNECTION == btState) + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 9); + else if(BT_STATE_8723A_1ANT_CONNECT_IDLE == btState) + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 0); + + pBtCoexist->btc_setBbReg(pBtCoexist, 0x880, 0xff000000, 0xc0); + } + else + { + if( (BT_STATE_8723A_1ANT_SCO_ONLY_BUSY == btState) || + (BT_STATE_8723A_1ANT_ACL_SCO_BUSY == btState) || + (BT_STATE_8723A_1ANT_HID_BUSY == btState) || + (BT_STATE_8723A_1ANT_HID_SCO_BUSY == btState) ) + { + pBtCoexist->btc_setBbReg(pBtCoexist, 0x880, 0xff000000, 0x60); + } + else + { + pBtCoexist->btc_setBbReg(pBtCoexist, 0x880, 0xff000000, 0xc0); + } + switch(btState) + { + case BT_STATE_8723A_1ANT_NO_CONNECTION: + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 5); + break; + case BT_STATE_8723A_1ANT_CONNECT_IDLE: + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 12); + break; + case BT_STATE_8723A_1ANT_INQ_OR_PAG: + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 10); + break; + case BT_STATE_8723A_1ANT_SCO_ONLY_BUSY: + case BT_STATE_8723A_1ANT_ACL_SCO_BUSY: + case BT_STATE_8723A_1ANT_HID_BUSY: + case BT_STATE_8723A_1ANT_HID_SCO_BUSY: + halbtc8723a1ant_TdmaDurationAdjust(pBtCoexist); + break; + case BT_STATE_8723A_1ANT_ACL_ONLY_BUSY: + if (btInfoOriginal&BT_INFO_8723A_1ANT_B_A2DP) + { + halbtc8723a1ant_TdmaDurationAdjust(pBtCoexist); + } + else if(btInfoOriginal&BT_INFO_8723A_1ANT_B_FTP) + { + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 1); + } + else if( (btInfoOriginal&BT_INFO_8723A_1ANT_B_A2DP) && + (btInfoOriginal&BT_INFO_8723A_1ANT_B_FTP) ) + { + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 6); + } + else + { + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 1); + } + break; + default: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], error!!!, undefined case in halbtc8723a1ant_CoexForWifiConnect()!!\n")); + break; + } + } + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], wifi is disconnected!!\n")); + } + + pCoexDm->psTdmaGlobalCnt++; +} + +//============================================================ +// work around function start with wa_halbtc8723a1ant_ +//============================================================ +VOID +wa_halbtc8723a1ant_MonitorC2h( + IN PBTC_COEXIST pBtCoexist + ) +{ + u1Byte tmp1b=0x0; + u4Byte curC2hTotalCnt=0x0; + static u4Byte preC2hTotalCnt=0x0, sameCntPollingTime=0x0; + + curC2hTotalCnt+=pCoexSta->btInfoC2hCnt[BT_INFO_SRC_8723A_1ANT_BT_RSP]; + + if(curC2hTotalCnt == preC2hTotalCnt) + { + sameCntPollingTime++; + } + else + { + preC2hTotalCnt = curC2hTotalCnt; + sameCntPollingTime = 0; + } + + if(sameCntPollingTime >= 2) + { + tmp1b = pBtCoexist->btc_read_1byte(pBtCoexist, 0x1af); + if(tmp1b != 0x0) + { + pCoexSta->c2hHangDetectCnt++; + pBtCoexist->btc_write_1byte(pBtCoexist, 0x1af, 0x0); + } + } +} + +//============================================================ +// extern function start with EXhalbtc8723a1ant_ +//============================================================ +VOID +EXhalbtc8723a1ant_InitHwConfig( + IN PBTC_COEXIST pBtCoexist + ) +{ + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, ("[BTCoex], 1Ant Init HW Config!!\n")); + + // backup rf 0x1e value + pCoexDm->btRf0x1eBackup = + pBtCoexist->btc_get_rf_reg(pBtCoexist, BTC_RF_A, 0x1e, 0xfffff); + + pBtCoexist->btc_write_1byte(pBtCoexist, 0x40, 0x20); + + // enable counter statistics + pBtCoexist->btc_write_1byte(pBtCoexist, 0x76e, 0x4); + + // coex table + pBtCoexist->btc_write_1byte(pBtCoexist, 0x6cc, 0x0); // 1-Ant coex + pBtCoexist->btc_write_4byte(pBtCoexist, 0x6c8, 0xffff); // wifi break table + pBtCoexist->btc_write_4byte(pBtCoexist, 0x6c4, 0x55555555); //coex table + + // antenna switch control parameter + pBtCoexist->btc_write_4byte(pBtCoexist, 0x858, 0xaaaaaaaa); + + pBtCoexist->btc_write_2byte(pBtCoexist, 0x860, 0x210); //set antenna at wifi side if ANTSW is software control + pBtCoexist->btc_write_4byte(pBtCoexist, 0x870, 0x300); //SPDT(connected with TRSW) control by hardware PTA + pBtCoexist->btc_write_4byte(pBtCoexist, 0x874, 0x22804000); //ANTSW keep by GNT_BT + + // coexistence parameters + pBtCoexist->btc_write_1byte(pBtCoexist, 0x778, 0x1); // enable RTK mode PTA +} + +VOID +EXhalbtc8723a1ant_InitCoexDm( + IN PBTC_COEXIST pBtCoexist + ) +{ + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, ("[BTCoex], Coex Mechanism Init!!\n")); + + halbtc8723a1ant_InitCoexDm(pBtCoexist); +} + +VOID +EXhalbtc8723a1ant_DisplayCoexInfo( + IN PBTC_COEXIST pBtCoexist + ) +{ + struct btc_board_info * pBoardInfo=&pBtCoexist->board_info; + PBTC_STACK_INFO pStackInfo=&pBtCoexist->stack_info; + pu1Byte cliBuf=pBtCoexist->cli_buf; + u1Byte u1Tmp[4], i, btInfoExt, psTdmaCase=0; + u4Byte u4Tmp[4]; + BOOLEAN bRoam=FALSE, bScan=FALSE, bLink=FALSE, bWifiUnder5G=FALSE; + BOOLEAN bBtHsOn=FALSE, bWifiBusy=FALSE; + s4Byte wifiRssi=0, btHsRssi=0; + u4Byte wifiBw, wifiTrafficDir; + u1Byte wifiDot11Chnl, wifiHsChnl; + + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n ============[BT Coexist info]============"); + CL_PRINTF(cliBuf); + + if(!pBoardInfo->bt_exist) + { + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n BT not exists !!!"); + CL_PRINTF(cliBuf); + return; + } + + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d ", "Ant PG number/ Ant mechanism:", \ + pBoardInfo->pg_ant_num, pBoardInfo->btdm_ant_num); + CL_PRINTF(cliBuf); + + if(pBtCoexist->manual_control) + { + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s", "[Action Manual control]!!"); + CL_PRINTF(cliBuf); + } + + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %s / %d", "BT stack/ hci ext ver", \ + ((pStackInfo->bProfileNotified)? "Yes":"No"), pStackInfo->hciVersion); + CL_PRINTF(cliBuf); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_HS_OPERATION, &bBtHsOn); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U1_WIFI_DOT11_CHNL, &wifiDot11Chnl); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U1_WIFI_HS_CHNL, &wifiHsChnl); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d / %d(%d)", "Dot11 channel / HsChnl(HsMode)", \ + wifiDot11Chnl, wifiHsChnl, bBtHsOn); + CL_PRINTF(cliBuf); + + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %02x %02x %02x ", "H2C Wifi inform bt chnl Info", \ + pCoexDm->wifiChnlInfo[0], pCoexDm->wifiChnlInfo[1], + pCoexDm->wifiChnlInfo[2]); + CL_PRINTF(cliBuf); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_S4_WIFI_RSSI, &wifiRssi); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_S4_HS_RSSI, &btHsRssi); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d", "Wifi rssi/ HS rssi", \ + wifiRssi, btHsRssi); + CL_PRINTF(cliBuf); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_SCAN, &bScan); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_LINK, &bLink); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_ROAM, &bRoam); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d/ %d ", "Wifi bLink/ bRoam/ bScan", \ + bLink, bRoam, bScan); + CL_PRINTF(cliBuf); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_UNDER_5G, &bWifiUnder5G); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_BUSY, &bWifiBusy); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U4_WIFI_TRAFFIC_DIRECTION, &wifiTrafficDir); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %s / %s/ %s ", "Wifi status", \ + (bWifiUnder5G? "5G":"2.4G"), + ((BTC_WIFI_BW_LEGACY==wifiBw)? "Legacy": (((BTC_WIFI_BW_HT40==wifiBw)? "HT40":"HT20"))), + ((!bWifiBusy)? "idle": ((BTC_WIFI_TRAFFIC_TX==wifiTrafficDir)? "uplink":"downlink"))); + CL_PRINTF(cliBuf); + + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = [%s/ %d/ %d] ", "BT [status/ rssi/ retryCnt]", \ + ((pCoexSta->bC2hBtInquiryPage)?("inquiry/page scan"):((BT_8723A_1ANT_BT_STATUS_IDLE == pCoexDm->btStatus)? "idle":( (BT_8723A_1ANT_BT_STATUS_CONNECTED_IDLE == pCoexDm->btStatus)? "connected-idle":"busy"))), + pCoexSta->btRssi, pCoexSta->btRetryCnt); + CL_PRINTF(cliBuf); + + if(pStackInfo->bProfileNotified) + { + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d / %d / %d / %d", "SCO/HID/PAN/A2DP", \ + pStackInfo->bScoExist, pStackInfo->bHidExist, pStackInfo->bPanExist, pStackInfo->bA2dpExist); + CL_PRINTF(cliBuf); + + pBtCoexist->btc_disp_dbg_msg(pBtCoexist, BTC_DBG_DISP_BT_LINK_INFO); + } + + btInfoExt = pCoexSta->btInfoExt; + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %s", "BT Info A2DP rate", \ + (btInfoExt&BIT0)? "Basic rate":"EDR rate"); + CL_PRINTF(cliBuf); + + for(i=0; ibtInfoC2hCnt[i]) + { + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %02x %02x %02x %02x %02x %02x %02x(%d)", GLBtInfoSrc8723a1Ant[i], \ + pCoexSta->btInfoC2h[i][0], pCoexSta->btInfoC2h[i][1], + pCoexSta->btInfoC2h[i][2], pCoexSta->btInfoC2h[i][3], + pCoexSta->btInfoC2h[i][4], pCoexSta->btInfoC2h[i][5], + pCoexSta->btInfoC2h[i][6], pCoexSta->btInfoC2hCnt[i]); + CL_PRINTF(cliBuf); + } + } + + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d", "write 0x1af=0x0 num", \ + pCoexSta->c2hHangDetectCnt); + CL_PRINTF(cliBuf); + + // Sw mechanism + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s", "============[Sw mechanism]============"); + CL_PRINTF(cliBuf); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d/ %d", "SM1[ShRf/ LpRA/ LimDig]", \ + pCoexDm->bCurRfRxLpfShrink, pCoexDm->bCurLowPenaltyRa, pCoexDm->limited_dig); + CL_PRINTF(cliBuf); + + // Fw mechanism + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s", "============[Fw mechanism]============"); + CL_PRINTF(cliBuf); + + if(!pBtCoexist->manual_control) + { + psTdmaCase = pCoexDm->curPsTdma; + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %02x %02x %02x %02x %02x case-%d", "PS TDMA", \ + pCoexDm->psTdmaPara[0], pCoexDm->psTdmaPara[1], + pCoexDm->psTdmaPara[2], pCoexDm->psTdmaPara[3], + pCoexDm->psTdmaPara[4], psTdmaCase); + CL_PRINTF(cliBuf); + + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d ", "IgnWlanAct", \ + pCoexDm->bCurIgnoreWlanAct); + CL_PRINTF(cliBuf); + } + + // Hw setting + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s", "============[Hw setting]============"); + CL_PRINTF(cliBuf); + + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x", "RF-A, 0x1e initVal", \ + pCoexDm->btRf0x1eBackup); + CL_PRINTF(cliBuf); + + u1Tmp[0] = pBtCoexist->btc_read_1byte(pBtCoexist, 0x778); + u1Tmp[1] = pBtCoexist->btc_read_1byte(pBtCoexist, 0x783); + u1Tmp[2] = pBtCoexist->btc_read_1byte(pBtCoexist, 0x796); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x/ 0x%x", "0x778/ 0x783/ 0x796", \ + u1Tmp[0], u1Tmp[1], u1Tmp[2]); + CL_PRINTF(cliBuf); + + u4Tmp[0] = pBtCoexist->btc_read_4byte(pBtCoexist, 0x880); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x", "0x880", \ + u4Tmp[0]); + CL_PRINTF(cliBuf); + + u1Tmp[0] = pBtCoexist->btc_read_1byte(pBtCoexist, 0x40); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x", "0x40", \ + u1Tmp[0]); + CL_PRINTF(cliBuf); + + u4Tmp[0] = pBtCoexist->btc_read_4byte(pBtCoexist, 0x550); + u1Tmp[0] = pBtCoexist->btc_read_1byte(pBtCoexist, 0x522); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x", "0x550(bcn ctrl)/0x522", \ + u4Tmp[0], u1Tmp[0]); + CL_PRINTF(cliBuf); + + u4Tmp[0] = pBtCoexist->btc_read_4byte(pBtCoexist, 0x484); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x", "0x484(rate adaptive)", \ + u4Tmp[0]); + CL_PRINTF(cliBuf); + + u4Tmp[0] = pBtCoexist->btc_read_4byte(pBtCoexist, 0xc50); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x", "0xc50(dig)", \ + u4Tmp[0]); + CL_PRINTF(cliBuf); + + u4Tmp[0] = pBtCoexist->btc_read_4byte(pBtCoexist, 0xda0); + u4Tmp[1] = pBtCoexist->btc_read_4byte(pBtCoexist, 0xda4); + u4Tmp[2] = pBtCoexist->btc_read_4byte(pBtCoexist, 0xda8); + u4Tmp[3] = pBtCoexist->btc_read_4byte(pBtCoexist, 0xdac); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x/ 0x%x/ 0x%x", "0xda0/0xda4/0xda8/0xdac(FA cnt)", \ + u4Tmp[0], u4Tmp[1], u4Tmp[2], u4Tmp[3]); + CL_PRINTF(cliBuf); + + u4Tmp[0] = pBtCoexist->btc_read_4byte(pBtCoexist, 0x6c0); + u4Tmp[1] = pBtCoexist->btc_read_4byte(pBtCoexist, 0x6c4); + u4Tmp[2] = pBtCoexist->btc_read_4byte(pBtCoexist, 0x6c8); + u1Tmp[0] = pBtCoexist->btc_read_1byte(pBtCoexist, 0x6cc); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x/ 0x%x/ 0x%x", "0x6c0/0x6c4/0x6c8/0x6cc(coexTable)", \ + u4Tmp[0], u4Tmp[1], u4Tmp[2], u1Tmp[0]); + CL_PRINTF(cliBuf); + + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d", "0x770 (hp rx[31:16]/tx[15:0])", \ + pCoexSta->highPriorityRx, pCoexSta->highPriorityTx); + CL_PRINTF(cliBuf); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d", "0x774(lp rx[31:16]/tx[15:0])", \ + pCoexSta->lowPriorityRx, pCoexSta->lowPriorityTx); + CL_PRINTF(cliBuf); + + // Tx mgnt queue hang or not, 0x41b should = 0xf, ex: 0xd ==>hang + u1Tmp[0] = pBtCoexist->btc_read_1byte(pBtCoexist, 0x41b); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x", "0x41b (mgntQ hang chk == 0xf)", \ + u1Tmp[0]); + CL_PRINTF(cliBuf); + + pBtCoexist->btc_disp_dbg_msg(pBtCoexist, BTC_DBG_DISP_COEX_STATISTICS); +} + + +VOID +EXhalbtc8723a1ant_IpsNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ) +{ + if(BTC_IPS_ENTER == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], IPS ENTER notify\n")); + halbtc8723a1ant_CoexAllOff(pBtCoexist); + } + else if(BTC_IPS_LEAVE == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], IPS LEAVE notify\n")); + //halbtc8723a1ant_InitCoexDm(pBtCoexist); + } +} + +VOID +EXhalbtc8723a1ant_LpsNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ) +{ + if(BTC_LPS_ENABLE == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], LPS ENABLE notify\n")); + } + else if(BTC_LPS_DISABLE == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], LPS DISABLE notify\n")); + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 8); + } +} + +VOID +EXhalbtc8723a1ant_ScanNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ) +{ + BOOLEAN bWifiConnected=FALSE; + + halbtc8723a1ant_NotifyFwScan(pBtCoexist, type); + + if(pBtCoexist->btInfo.bBtDisabled) + { + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 9); + } + else + { + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_CONNECTED, &bWifiConnected); + if(BTC_SCAN_START == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], SCAN START notify\n")); + if(!bWifiConnected) // non-connected scan + { + //set 0x550[3]=1 before PsTdma + halbtc8723a1ant_Reg0x550Bit3(pBtCoexist, true); + } + + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 4); + } + else if(BTC_SCAN_FINISH == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], SCAN FINISH notify\n")); + if(!bWifiConnected) // non-connected scan + { + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 0); + } + else + { + halbtc8723a1ant_CoexForWifiConnect(pBtCoexist); + } + } + } +} + +VOID +EXhalbtc8723a1ant_ConnectNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ) +{ + BOOLEAN bWifiConnected=FALSE; + + if(pBtCoexist->btInfo.bBtDisabled) + { + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 9); + } + else + { + if(BTC_ASSOCIATE_START == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], CONNECT START notify\n")); + //set 0x550[3]=1 before PsTdma + halbtc8723a1ant_Reg0x550Bit3(pBtCoexist, true); + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 8); // extend wifi slot + } + else if(BTC_ASSOCIATE_FINISH == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], CONNECT FINISH notify\n")); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_CONNECTED, &bWifiConnected); + if(!bWifiConnected) // non-connected scan + { + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 0); + } + else + { + halbtc8723a1ant_CoexForWifiConnect(pBtCoexist); + } + } + } +} + +VOID +EXhalbtc8723a1ant_MediaStatusNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ) +{ + if(BTC_MEDIA_CONNECT == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], MEDIA connect notify\n")); + } + else + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], MEDIA disconnect notify\n")); + } +} + +VOID +EXhalbtc8723a1ant_SpecialPacketNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ) +{ + if(type == BTC_PACKET_DHCP) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], DHCP Packet notify\n")); + if(pBtCoexist->btInfo.bBtDisabled) + { + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 9); + } + else + { + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 18); + } + } +} + +VOID +EXhalbtc8723a1ant_BtInfoNotify( + IN PBTC_COEXIST pBtCoexist, + IN pu1Byte tmpBuf, + IN u1Byte length + ) +{ + u1Byte btInfo=0; + u1Byte i, rspSource=0; + BOOLEAN bBtHsOn=FALSE, bBtBusy=FALSE, bForceLps=FALSE; + + pCoexSta->bC2hBtInfoReqSent = FALSE; + + rspSource = BT_INFO_SRC_8723A_1ANT_BT_RSP; + pCoexSta->btInfoC2hCnt[rspSource]++; + + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], Bt info[%d], length=%d, hex data=[", rspSource, length)); + for(i=0; ibtInfoC2h[rspSource][i] = tmpBuf[i]; + if(i == 0) + btInfo = tmpBuf[i]; + if(i == length-1) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("0x%02x]\n", tmpBuf[i])); + } + else + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("0x%02x, ", tmpBuf[i])); + } + } + + if(BT_INFO_SRC_8723A_1ANT_WIFI_FW != rspSource) + { + pCoexSta->btRetryCnt = + pCoexSta->btInfoC2h[rspSource][1]; + + pCoexSta->btRssi = + pCoexSta->btInfoC2h[rspSource][2]*2+10; + + pCoexSta->btInfoExt = + pCoexSta->btInfoC2h[rspSource][3]; + } + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_HS_OPERATION, &bBtHsOn); + // check BIT2 first ==> check if bt is under inquiry or page scan + if(btInfo & BT_INFO_8723A_1ANT_B_INQ_PAGE) + { + pCoexSta->bC2hBtInquiryPage = true; + } + else + { + pCoexSta->bC2hBtInquiryPage = FALSE; + } + btInfo &= ~BIT2; + if(!(btInfo & BIT0)) + { + pCoexDm->btStatus = BT_STATE_8723A_1ANT_NO_CONNECTION; + bForceLps = FALSE; + } + else + { + bForceLps = true; + if(btInfo == 0x1) + { + pCoexDm->btStatus = BT_STATE_8723A_1ANT_CONNECT_IDLE; + } + else if(btInfo == 0x9) + { + pCoexDm->btStatus = BT_STATE_8723A_1ANT_ACL_ONLY_BUSY; + bBtBusy = true; + } + else if(btInfo == 0x13) + { + pCoexDm->btStatus = BT_STATE_8723A_1ANT_SCO_ONLY_BUSY; + bBtBusy = true; + } + else if(btInfo == 0x1b) + { + pCoexDm->btStatus = BT_STATE_8723A_1ANT_ACL_SCO_BUSY; + bBtBusy = true; + } + else if(btInfo == 0x29) + { + pCoexDm->btStatus = BT_STATE_8723A_1ANT_HID_BUSY; + bBtBusy = true; + } + else if(btInfo == 0x3b) + { + pCoexDm->btStatus = BT_STATE_8723A_1ANT_HID_SCO_BUSY; + bBtBusy = true; + } + } + pBtCoexist->btc_set(pBtCoexist, BTC_SET_BL_BT_TRAFFIC_BUSY, &bBtBusy); + pBtCoexist->btc_set(pBtCoexist, BTC_SET_BL_BT_LIMITED_DIG, &bBtBusy); + if(bForceLps) + pBtCoexist->btc_set(pBtCoexist, BTC_SET_ACT_ENTER_LPS, NULL); + else + pBtCoexist->btc_set(pBtCoexist, BTC_SET_ACT_NORMAL_LPS, NULL); + + if( (BT_STATE_8723A_1ANT_NO_CONNECTION == pCoexDm->btStatus) || + (BT_STATE_8723A_1ANT_CONNECT_IDLE == pCoexDm->btStatus) ) + { + if(pCoexSta->bC2hBtInquiryPage) + pCoexDm->btStatus = BT_STATE_8723A_1ANT_INQ_OR_PAG; + } +} + +VOID +EXhalbtc8723a1ant_StackOperationNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ) +{ + if(BTC_STACK_OP_INQ_PAGE_PAIR_START == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], StackOP Inquiry/page/pair start notify\n")); + } + else if(BTC_STACK_OP_INQ_PAGE_PAIR_FINISH == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], StackOP Inquiry/page/pair finish notify\n")); + } +} + +VOID +EXhalbtc8723a1ant_HaltNotify( + IN PBTC_COEXIST pBtCoexist + ) +{ + halbtc8723a1ant_PsTdma(pBtCoexist, FORCE_EXEC, FALSE, 0); + + halbtc8723a1ant_LowPenaltyRa(pBtCoexist, FORCE_EXEC, FALSE); + halbtc8723a1ant_RfShrink(pBtCoexist, FORCE_EXEC, FALSE); + + halbtc8723a1ant_IgnoreWlanAct(pBtCoexist, FORCE_EXEC, true); + EXhalbtc8723a1ant_MediaStatusNotify(pBtCoexist, BTC_MEDIA_DISCONNECT); +} + +VOID +EXhalbtc8723a1ant_Periodical( + IN PBTC_COEXIST pBtCoexist + ) +{ + BOOLEAN bScan=FALSE, bLink=FALSE, bRoam=FALSE, bWifiConnected=FALSE; + + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], 1Ant Periodical!!\n")); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_SCAN, &bScan); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_LINK, &bLink); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_ROAM, &bRoam); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_CONNECTED, &bWifiConnected); + + // work around for c2h hang + wa_halbtc8723a1ant_MonitorC2h(pBtCoexist); + + halbtc8723a1ant_QueryBtInfo(pBtCoexist); + halbtc8723a1ant_MonitorBtCtr(pBtCoexist); + halbtc8723a1ant_MonitorBtEnableDisable(pBtCoexist); + + + if(bScan) + return; + if(bLink) + return; + + if(bWifiConnected) + { + if(pBtCoexist->btInfo.bBtDisabled) + { + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 9); + + halbtc8723a1ant_LowPenaltyRa(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a1ant_RfShrink(pBtCoexist, NORMAL_EXEC, FALSE); + } + else + { + halbtc8723a1ant_LowPenaltyRa(pBtCoexist, NORMAL_EXEC, true); + halbtc8723a1ant_RfShrink(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a1ant_CoexForWifiConnect(pBtCoexist); + } + } + else + { + halbtc8723a1ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 0); + + halbtc8723a1ant_LowPenaltyRa(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a1ant_RfShrink(pBtCoexist, NORMAL_EXEC, FALSE); + } +} + + +#endif + --- linux-3.13.0.orig/drivers/staging/rtl8821ae/btcoexist/habtc8723a1ant.h +++ linux-3.13.0/drivers/staging/rtl8821ae/btcoexist/habtc8723a1ant.h @@ -0,0 +1,176 @@ +//=========================================== +// The following is for 8723A 1Ant BT Co-exist definition +//=========================================== +#define BT_INFO_8723A_1ANT_B_FTP BIT7 +#define BT_INFO_8723A_1ANT_B_A2DP BIT6 +#define BT_INFO_8723A_1ANT_B_HID BIT5 +#define BT_INFO_8723A_1ANT_B_SCO_BUSY BIT4 +#define BT_INFO_8723A_1ANT_B_ACL_BUSY BIT3 +#define BT_INFO_8723A_1ANT_B_INQ_PAGE BIT2 +#define BT_INFO_8723A_1ANT_B_SCO_ESCO BIT1 +#define BT_INFO_8723A_1ANT_B_CONNECTION BIT0 + +typedef enum _BT_STATE_8723A_1ANT{ + BT_STATE_8723A_1ANT_DISABLED = 0, + BT_STATE_8723A_1ANT_NO_CONNECTION = 1, + BT_STATE_8723A_1ANT_CONNECT_IDLE = 2, + BT_STATE_8723A_1ANT_INQ_OR_PAG = 3, + BT_STATE_8723A_1ANT_ACL_ONLY_BUSY = 4, + BT_STATE_8723A_1ANT_SCO_ONLY_BUSY = 5, + BT_STATE_8723A_1ANT_ACL_SCO_BUSY = 6, + BT_STATE_8723A_1ANT_HID_BUSY = 7, + BT_STATE_8723A_1ANT_HID_SCO_BUSY = 8, + BT_STATE_8723A_1ANT_MAX +}BT_STATE_8723A_1ANT, *PBT_STATE_8723A_1ANT; + +#define BTC_RSSI_COEX_THRESH_TOL_8723A_1ANT 2 + +typedef enum _BT_INFO_SRC_8723A_1ANT{ + BT_INFO_SRC_8723A_1ANT_WIFI_FW = 0x0, + BT_INFO_SRC_8723A_1ANT_BT_RSP = 0x1, + BT_INFO_SRC_8723A_1ANT_BT_ACTIVE_SEND = 0x2, + BT_INFO_SRC_8723A_1ANT_MAX +}BT_INFO_SRC_8723A_1ANT,*PBT_INFO_SRC_8723A_1ANT; + +typedef enum _BT_8723A_1ANT_BT_STATUS{ + BT_8723A_1ANT_BT_STATUS_IDLE = 0x0, + BT_8723A_1ANT_BT_STATUS_CONNECTED_IDLE = 0x1, + BT_8723A_1ANT_BT_STATUS_NON_IDLE = 0x2, + BT_8723A_1ANT_BT_STATUS_MAX +}BT_8723A_1ANT_BT_STATUS,*PBT_8723A_1ANT_BT_STATUS; + +typedef enum _BT_8723A_1ANT_COEX_ALGO{ + BT_8723A_1ANT_COEX_ALGO_UNDEFINED = 0x0, + BT_8723A_1ANT_COEX_ALGO_SCO = 0x1, + BT_8723A_1ANT_COEX_ALGO_HID = 0x2, + BT_8723A_1ANT_COEX_ALGO_A2DP = 0x3, + BT_8723A_1ANT_COEX_ALGO_PANEDR = 0x4, + BT_8723A_1ANT_COEX_ALGO_PANHS = 0x5, + BT_8723A_1ANT_COEX_ALGO_PANEDR_A2DP = 0x6, + BT_8723A_1ANT_COEX_ALGO_PANEDR_HID = 0x7, + BT_8723A_1ANT_COEX_ALGO_HID_A2DP_PANEDR = 0x8, + BT_8723A_1ANT_COEX_ALGO_HID_A2DP = 0x9, + BT_8723A_1ANT_COEX_ALGO_MAX +}BT_8723A_1ANT_COEX_ALGO,*PBT_8723A_1ANT_COEX_ALGO; + +typedef struct _COEX_DM_8723A_1ANT{ + // fw mechanism + BOOLEAN bCurIgnoreWlanAct; + BOOLEAN bPreIgnoreWlanAct; + u1Byte prePsTdma; + u1Byte curPsTdma; + u1Byte psTdmaPara[5]; + u1Byte psTdmaDuAdjType; + u4Byte psTdmaMonitorCnt; + u4Byte psTdmaGlobalCnt; + BOOLEAN bResetTdmaAdjust; + BOOLEAN bPrePsTdmaOn; + BOOLEAN bCurPsTdmaOn; + + // sw mechanism + BOOLEAN bPreRfRxLpfShrink; + BOOLEAN bCurRfRxLpfShrink; + u4Byte btRf0x1eBackup; + BOOLEAN bPreLowPenaltyRa; + BOOLEAN bCurLowPenaltyRa; + u4Byte preVal0x6c0; + u4Byte curVal0x6c0; + u4Byte preVal0x6c8; + u4Byte curVal0x6c8; + u1Byte preVal0x6cc; + u1Byte curVal0x6cc; + BOOLEAN limited_dig; + + // algorithm related + u1Byte preAlgorithm; + u1Byte curAlgorithm; + u1Byte btStatus; + u1Byte wifiChnlInfo[3]; +} COEX_DM_8723A_1ANT, *PCOEX_DM_8723A_1ANT; + +typedef struct _COEX_STA_8723A_1ANT{ + u4Byte highPriorityTx; + u4Byte highPriorityRx; + u4Byte lowPriorityTx; + u4Byte lowPriorityRx; + u1Byte btRssi; + u1Byte preBtRssiState; + u1Byte preBtRssiState1; + u1Byte preWifiRssiState[4]; + BOOLEAN bC2hBtInfoReqSent; + u1Byte btInfoC2h[BT_INFO_SRC_8723A_1ANT_MAX][10]; + u4Byte btInfoC2hCnt[BT_INFO_SRC_8723A_1ANT_MAX]; + BOOLEAN bC2hBtInquiryPage; + u1Byte btRetryCnt; + u1Byte btInfoExt; + //BOOLEAN bHoldForStackOperation; + //u1Byte bHoldPeriodCnt; + // this is for c2h hang work-around + u4Byte c2hHangDetectCnt; +}COEX_STA_8723A_1ANT, *PCOEX_STA_8723A_1ANT; + +//=========================================== +// The following is interface which will notify coex module. +//=========================================== +VOID +EXhalbtc8723a1ant_InitHwConfig( + IN PBTC_COEXIST pBtCoexist + ); +VOID +EXhalbtc8723a1ant_InitCoexDm( + IN PBTC_COEXIST pBtCoexist + ); +VOID +EXhalbtc8723a1ant_IpsNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ); +VOID +EXhalbtc8723a1ant_LpsNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ); +VOID +EXhalbtc8723a1ant_ScanNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ); +VOID +EXhalbtc8723a1ant_ConnectNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ); +VOID +EXhalbtc8723a1ant_MediaStatusNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ); +VOID +EXhalbtc8723a1ant_SpecialPacketNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ); +VOID +EXhalbtc8723a1ant_BtInfoNotify( + IN PBTC_COEXIST pBtCoexist, + IN pu1Byte tmpBuf, + IN u1Byte length + ); +VOID +EXhalbtc8723a1ant_StackOperationNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ); +VOID +EXhalbtc8723a1ant_HaltNotify( + IN PBTC_COEXIST pBtCoexist + ); +VOID +EXhalbtc8723a1ant_Periodical( + IN PBTC_COEXIST pBtCoexist + ); +VOID +EXhalbtc8723a1ant_DisplayCoexInfo( + IN PBTC_COEXIST pBtCoexist + ); + --- linux-3.13.0.orig/drivers/staging/rtl8821ae/btcoexist/halbt_precomp.h +++ linux-3.13.0/drivers/staging/rtl8821ae/btcoexist/halbt_precomp.h @@ -0,0 +1,99 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 __HALBT_PRECOMP_H__ +#define __HALBT_PRECOMP_H__ +/************************************************************* + * include files + *************************************************************/ +#include "../wifi.h" +#include "../efuse.h" +#include "../base.h" +#include "../regd.h" +#include "../cam.h" +#include "../ps.h" +#include "../pci.h" +#include "../rtl8821ae/reg.h" +#include "../rtl8821ae/def.h" +#include "../rtl8821ae/phy.h" +#include "../rtl8821ae/dm.h" +#include "../rtl8821ae/fw.h" +#include "../rtl8821ae/led.h" +#include "../rtl8821ae/hw.h" +#include "../rtl8821ae/pwrseqcmd.h" +#include "../rtl8821ae/pwrseq.h" + +#include "halbtcoutsrc.h" + + +#include "halbtc8192e2ant.h" +#include "halbtc8723b1ant.h" +#include "halbtc8723b2ant.h" + + + +#define GetDefaultAdapter(padapter) padapter + + +#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 + +#define MASKBYTE0 0xff +#define MASKBYTE1 0xff00 +#define MASKBYTE2 0xff0000 +#define MASKBYTE3 0xff000000 +#define MASKHWORD 0xffff0000 +#define MASKLWORD 0x0000ffff +#define MASKDWORD 0xffffffff +#define MASK12BITS 0xfff +#define MASKH4BITS 0xf0000000 +#define MASKOFDM_D 0xffc00000 +#define MASKCCK 0x3f3f3f3f + +#endif /* __HALBT_PRECOMP_H__ */ --- linux-3.13.0.orig/drivers/staging/rtl8821ae/btcoexist/halbtc8192e1ant.c +++ linux-3.13.0/drivers/staging/rtl8821ae/btcoexist/halbtc8192e1ant.c @@ -0,0 +1,3891 @@ +//============================================================ +// Description: +// +// This file is for 8192e1ant Co-exist mechanism +// +// History +// 2012/11/15 Cosa first check in. +// +//============================================================ + +//============================================================ +// include files +//============================================================ +#include "Mp_Precomp.h" +#if(BT_30_SUPPORT == 1) +//============================================================ +// Global variables, these are static variables +//============================================================ +static COEX_DM_8192E_1ANT GLCoexDm8192e1Ant; +static PCOEX_DM_8192E_1ANT pCoexDm=&GLCoexDm8192e1Ant; +static COEX_STA_8192E_1ANT GLCoexSta8192e1Ant; +static PCOEX_STA_8192E_1ANT pCoexSta=&GLCoexSta8192e1Ant; + +const char *const GLBtInfoSrc8192e1Ant[]={ + "BT Info[wifi fw]", + "BT Info[bt rsp]", + "BT Info[bt auto report]", +}; + +u4Byte GLCoexVerDate8192e1Ant=20130729; +u4Byte GLCoexVer8192e1Ant=0x10; + +//============================================================ +// local function proto type if needed +//============================================================ +//============================================================ +// local function start with halbtc8192e1ant_ +//============================================================ +u1Byte +halbtc8192e1ant_BtRssiState( + u1Byte levelNum, + u1Byte rssiThresh, + u1Byte rssiThresh1 + ) +{ + s4Byte btRssi=0; + u1Byte btRssiState=pCoexSta->preBtRssiState; + + btRssi = pCoexSta->btRssi; + + if(levelNum == 2) + { + if( (pCoexSta->preBtRssiState == BTC_RSSI_STATE_LOW) || + (pCoexSta->preBtRssiState == BTC_RSSI_STATE_STAY_LOW)) + { + if(btRssi >= (rssiThresh+BTC_RSSI_COEX_THRESH_TOL_8192E_1ANT)) + { + btRssiState = BTC_RSSI_STATE_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state switch to High\n")); + } + else + { + btRssiState = BTC_RSSI_STATE_STAY_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state stay at Low\n")); + } + } + else + { + if(btRssi < rssiThresh) + { + btRssiState = BTC_RSSI_STATE_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state switch to Low\n")); + } + else + { + btRssiState = BTC_RSSI_STATE_STAY_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state stay at High\n")); + } + } + } + else if(levelNum == 3) + { + if(rssiThresh > rssiThresh1) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi thresh error!!\n")); + return pCoexSta->preBtRssiState; + } + + if( (pCoexSta->preBtRssiState == BTC_RSSI_STATE_LOW) || + (pCoexSta->preBtRssiState == BTC_RSSI_STATE_STAY_LOW)) + { + if(btRssi >= (rssiThresh+BTC_RSSI_COEX_THRESH_TOL_8192E_1ANT)) + { + btRssiState = BTC_RSSI_STATE_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state switch to Medium\n")); + } + else + { + btRssiState = BTC_RSSI_STATE_STAY_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state stay at Low\n")); + } + } + else if( (pCoexSta->preBtRssiState == BTC_RSSI_STATE_MEDIUM) || + (pCoexSta->preBtRssiState == BTC_RSSI_STATE_STAY_MEDIUM)) + { + if(btRssi >= (rssiThresh1+BTC_RSSI_COEX_THRESH_TOL_8192E_1ANT)) + { + btRssiState = BTC_RSSI_STATE_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state switch to High\n")); + } + else if(btRssi < rssiThresh) + { + btRssiState = BTC_RSSI_STATE_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state switch to Low\n")); + } + else + { + btRssiState = BTC_RSSI_STATE_STAY_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state stay at Medium\n")); + } + } + else + { + if(btRssi < rssiThresh1) + { + btRssiState = BTC_RSSI_STATE_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state switch to Medium\n")); + } + else + { + btRssiState = BTC_RSSI_STATE_STAY_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state stay at High\n")); + } + } + } + + pCoexSta->preBtRssiState = btRssiState; + + return btRssiState; +} + +u1Byte +halbtc8192e1ant_WifiRssiState( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte index, + IN u1Byte levelNum, + IN u1Byte rssiThresh, + IN u1Byte rssiThresh1 + ) +{ + s4Byte wifiRssi=0; + u1Byte wifiRssiState=pCoexSta->preWifiRssiState[index]; + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_S4_WIFI_RSSI, &wifiRssi); + + if(levelNum == 2) + { + if( (pCoexSta->preWifiRssiState[index] == BTC_RSSI_STATE_LOW) || + (pCoexSta->preWifiRssiState[index] == BTC_RSSI_STATE_STAY_LOW)) + { + if(wifiRssi >= (rssiThresh+BTC_RSSI_COEX_THRESH_TOL_8192E_1ANT)) + { + wifiRssiState = BTC_RSSI_STATE_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state switch to High\n")); + } + else + { + wifiRssiState = BTC_RSSI_STATE_STAY_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state stay at Low\n")); + } + } + else + { + if(wifiRssi < rssiThresh) + { + wifiRssiState = BTC_RSSI_STATE_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state switch to Low\n")); + } + else + { + wifiRssiState = BTC_RSSI_STATE_STAY_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state stay at High\n")); + } + } + } + else if(levelNum == 3) + { + if(rssiThresh > rssiThresh1) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI thresh error!!\n")); + return pCoexSta->preWifiRssiState[index]; + } + + if( (pCoexSta->preWifiRssiState[index] == BTC_RSSI_STATE_LOW) || + (pCoexSta->preWifiRssiState[index] == BTC_RSSI_STATE_STAY_LOW)) + { + if(wifiRssi >= (rssiThresh+BTC_RSSI_COEX_THRESH_TOL_8192E_1ANT)) + { + wifiRssiState = BTC_RSSI_STATE_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state switch to Medium\n")); + } + else + { + wifiRssiState = BTC_RSSI_STATE_STAY_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state stay at Low\n")); + } + } + else if( (pCoexSta->preWifiRssiState[index] == BTC_RSSI_STATE_MEDIUM) || + (pCoexSta->preWifiRssiState[index] == BTC_RSSI_STATE_STAY_MEDIUM)) + { + if(wifiRssi >= (rssiThresh1+BTC_RSSI_COEX_THRESH_TOL_8192E_1ANT)) + { + wifiRssiState = BTC_RSSI_STATE_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state switch to High\n")); + } + else if(wifiRssi < rssiThresh) + { + wifiRssiState = BTC_RSSI_STATE_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state switch to Low\n")); + } + else + { + wifiRssiState = BTC_RSSI_STATE_STAY_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state stay at Medium\n")); + } + } + else + { + if(wifiRssi < rssiThresh1) + { + wifiRssiState = BTC_RSSI_STATE_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state switch to Medium\n")); + } + else + { + wifiRssiState = BTC_RSSI_STATE_STAY_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state stay at High\n")); + } + } + } + + pCoexSta->preWifiRssiState[index] = wifiRssiState; + + return wifiRssiState; +} + +VOID +halbtc8192e1ant_Updatera_mask( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bForceExec, + IN u1Byte type, + IN u4Byte rateMask + ) +{ + if(BTC_RATE_DISABLE == type) + { + pCoexDm->curra_mask |= rateMask; // disable rate + } + else if(BTC_RATE_ENABLE == type) + { + pCoexDm->curra_mask &= ~rateMask; // enable rate + } + + if( bForceExec || (pCoexDm->prera_mask != pCoexDm->curra_mask)) + { + pBtCoexist->btc_set(pBtCoexist, BTC_SET_ACT_UPDATE_ra_mask, &pCoexDm->curra_mask); + } + pCoexDm->prera_mask = pCoexDm->curra_mask; +} + +VOID +halbtc8192e1ant_MonitorBtCtr( + IN PBTC_COEXIST pBtCoexist + ) +{ + u4Byte regHPTxRx, regLPTxRx, u4Tmp; + u4Byte regHPTx=0, regHPRx=0, regLPTx=0, regLPRx=0; + u1Byte u1Tmp; + + regHPTxRx = 0x770; + regLPTxRx = 0x774; + + u4Tmp = pBtCoexist->btc_read_4byte(pBtCoexist, regHPTxRx); + regHPTx = u4Tmp & MASKLWORD; + regHPRx = (u4Tmp & MASKHWORD)>>16; + + u4Tmp = pBtCoexist->btc_read_4byte(pBtCoexist, regLPTxRx); + regLPTx = u4Tmp & MASKLWORD; + regLPRx = (u4Tmp & MASKHWORD)>>16; + + pCoexSta->highPriorityTx = regHPTx; + pCoexSta->highPriorityRx = regHPRx; + pCoexSta->lowPriorityTx = regLPTx; + pCoexSta->lowPriorityRx = regLPRx; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, ("[BTCoex], High Priority Tx/Rx (reg 0x%x)=0x%x(%d)/0x%x(%d)\n", + regHPTxRx, regHPTx, regHPTx, regHPRx, regHPRx)); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, ("[BTCoex], Low Priority Tx/Rx (reg 0x%x)=0x%x(%d)/0x%x(%d)\n", + regLPTxRx, regLPTx, regLPTx, regLPRx, regLPRx)); + + // reset counter + pBtCoexist->btc_write_1byte(pBtCoexist, 0x76e, 0xc); +} + +VOID +halbtc8192e1ant_QueryBtInfo( + IN PBTC_COEXIST pBtCoexist + ) +{ + u1Byte H2C_Parameter[1] ={0}; + + pCoexSta->bC2hBtInfoReqSent = true; + + H2C_Parameter[0] |= BIT0; // trigger + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, ("[BTCoex], Query Bt Info, FW write 0x61=0x%x\n", + H2C_Parameter[0])); + + pBtCoexist->btc_fill_h2c(pBtCoexist, 0x61, 1, H2C_Parameter); +} + +BOOLEAN +halbtc8192e1ant_IsWifiStatusChanged( + IN PBTC_COEXIST pBtCoexist + ) +{ + static BOOLEAN bPreWifiBusy=FALSE, bPreUnder4way=FALSE, bPreBtHsOn=FALSE; + BOOLEAN bWifiBusy=FALSE, bUnder4way=FALSE, bBtHsOn=FALSE; + BOOLEAN bWifiConnected=FALSE; + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_CONNECTED, &bWifiConnected); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_BUSY, &bWifiBusy); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_HS_OPERATION, &bBtHsOn); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_4_WAY_PROGRESS, &bUnder4way); + + if(bWifiConnected) + { + if(bWifiBusy != bPreWifiBusy) + { + bPreWifiBusy = bWifiBusy; + return true; + } + if(bUnder4way != bPreUnder4way) + { + bPreUnder4way = bUnder4way; + return true; + } + if(bBtHsOn != bPreBtHsOn) + { + bPreBtHsOn = bBtHsOn; + return true; + } + } + + return FALSE; +} + +VOID +halbtc8192e1ant_UpdateBtLinkInfo( + IN PBTC_COEXIST pBtCoexist + ) +{ + PBTC_BT_LINK_INFO pBtLinkInfo=&pBtCoexist->bt_link_info; + + pBtLinkInfo->bBtLinkExist = pCoexSta->bBtLinkExist; + pBtLinkInfo->bScoExist = pCoexSta->bScoExist; + pBtLinkInfo->bA2dpExist = pCoexSta->bA2dpExist; + pBtLinkInfo->bPanExist = pCoexSta->bPanExist; + pBtLinkInfo->bHidExist = pCoexSta->bHidExist; + + // check if Sco only + if( pBtLinkInfo->bScoExist && + !pBtLinkInfo->bA2dpExist && + !pBtLinkInfo->bPanExist && + !pBtLinkInfo->bHidExist ) + pBtLinkInfo->bScoOnly = true; + else + pBtLinkInfo->bScoOnly = FALSE; + + // check if A2dp only + if( !pBtLinkInfo->bScoExist && + pBtLinkInfo->bA2dpExist && + !pBtLinkInfo->bPanExist && + !pBtLinkInfo->bHidExist ) + pBtLinkInfo->bA2dpOnly = true; + else + pBtLinkInfo->bA2dpOnly = FALSE; + + // check if Pan only + if( !pBtLinkInfo->bScoExist && + !pBtLinkInfo->bA2dpExist && + pBtLinkInfo->bPanExist && + !pBtLinkInfo->bHidExist ) + pBtLinkInfo->bPanOnly = true; + else + pBtLinkInfo->bPanOnly = FALSE; + + // check if Hid only + if( !pBtLinkInfo->bScoExist && + !pBtLinkInfo->bA2dpExist && + !pBtLinkInfo->bPanExist && + pBtLinkInfo->bHidExist ) + pBtLinkInfo->bHidOnly = true; + else + pBtLinkInfo->bHidOnly = FALSE; +} + +u1Byte +halbtc8192e1ant_ActionAlgorithm( + IN PBTC_COEXIST pBtCoexist + ) +{ + PBTC_BT_LINK_INFO pBtLinkInfo=&pBtCoexist->bt_link_info; + BOOLEAN bBtHsOn=FALSE; + u1Byte algorithm=BT_8192E_1ANT_COEX_ALGO_UNDEFINED; + u1Byte numOfDiffProfile=0; + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_HS_OPERATION, &bBtHsOn); + + if(!pBtLinkInfo->bBtLinkExist) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], No BT link exists!!!\n")); + return algorithm; + } + + if(pBtLinkInfo->bScoExist) + numOfDiffProfile++; + if(pBtLinkInfo->bHidExist) + numOfDiffProfile++; + if(pBtLinkInfo->bPanExist) + numOfDiffProfile++; + if(pBtLinkInfo->bA2dpExist) + numOfDiffProfile++; + + if(numOfDiffProfile == 1) + { + if(pBtLinkInfo->bScoExist) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO only\n")); + algorithm = BT_8192E_1ANT_COEX_ALGO_SCO; + } + else + { + if(pBtLinkInfo->bHidExist) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], HID only\n")); + algorithm = BT_8192E_1ANT_COEX_ALGO_HID; + } + else if(pBtLinkInfo->bA2dpExist) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], A2DP only\n")); + algorithm = BT_8192E_1ANT_COEX_ALGO_A2DP; + } + else if(pBtLinkInfo->bPanExist) + { + if(bBtHsOn) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], PAN(HS) only\n")); + algorithm = BT_8192E_1ANT_COEX_ALGO_PANHS; + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], PAN(EDR) only\n")); + algorithm = BT_8192E_1ANT_COEX_ALGO_PANEDR; + } + } + } + } + else if(numOfDiffProfile == 2) + { + if(pBtLinkInfo->bScoExist) + { + if(pBtLinkInfo->bHidExist) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + HID\n")); + algorithm = BT_8192E_1ANT_COEX_ALGO_HID; + } + else if(pBtLinkInfo->bA2dpExist) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + A2DP ==> SCO\n")); + algorithm = BT_8192E_1ANT_COEX_ALGO_SCO; + } + else if(pBtLinkInfo->bPanExist) + { + if(bBtHsOn) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + PAN(HS)\n")); + algorithm = BT_8192E_1ANT_COEX_ALGO_SCO; + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + PAN(EDR)\n")); + algorithm = BT_8192E_1ANT_COEX_ALGO_PANEDR_HID; + } + } + } + else + { + if( pBtLinkInfo->bHidExist && + pBtLinkInfo->bA2dpExist ) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], HID + A2DP\n")); + algorithm = BT_8192E_1ANT_COEX_ALGO_HID_A2DP; + } + else if( pBtLinkInfo->bHidExist && + pBtLinkInfo->bPanExist ) + { + if(bBtHsOn) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], HID + PAN(HS)\n")); + algorithm = BT_8192E_1ANT_COEX_ALGO_HID_A2DP; + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], HID + PAN(EDR)\n")); + algorithm = BT_8192E_1ANT_COEX_ALGO_PANEDR_HID; + } + } + else if( pBtLinkInfo->bPanExist && + pBtLinkInfo->bA2dpExist ) + { + if(bBtHsOn) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], A2DP + PAN(HS)\n")); + algorithm = BT_8192E_1ANT_COEX_ALGO_A2DP_PANHS; + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], A2DP + PAN(EDR)\n")); + algorithm = BT_8192E_1ANT_COEX_ALGO_PANEDR_A2DP; + } + } + } + } + else if(numOfDiffProfile == 3) + { + if(pBtLinkInfo->bScoExist) + { + if( pBtLinkInfo->bHidExist && + pBtLinkInfo->bA2dpExist ) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + HID + A2DP ==> HID\n")); + algorithm = BT_8192E_1ANT_COEX_ALGO_HID; + } + else if( pBtLinkInfo->bHidExist && + pBtLinkInfo->bPanExist ) + { + if(bBtHsOn) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + HID + PAN(HS)\n")); + algorithm = BT_8192E_1ANT_COEX_ALGO_HID_A2DP; + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + HID + PAN(EDR)\n")); + algorithm = BT_8192E_1ANT_COEX_ALGO_PANEDR_HID; + } + } + else if( pBtLinkInfo->bPanExist && + pBtLinkInfo->bA2dpExist ) + { + if(bBtHsOn) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + A2DP + PAN(HS)\n")); + algorithm = BT_8192E_1ANT_COEX_ALGO_SCO; + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + A2DP + PAN(EDR) ==> HID\n")); + algorithm = BT_8192E_1ANT_COEX_ALGO_PANEDR_HID; + } + } + } + else + { + if( pBtLinkInfo->bHidExist && + pBtLinkInfo->bPanExist && + pBtLinkInfo->bA2dpExist ) + { + if(bBtHsOn) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], HID + A2DP + PAN(HS)\n")); + algorithm = BT_8192E_1ANT_COEX_ALGO_HID_A2DP; + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], HID + A2DP + PAN(EDR)\n")); + algorithm = BT_8192E_1ANT_COEX_ALGO_HID_A2DP_PANEDR; + } + } + } + } + else if(numOfDiffProfile >= 3) + { + if(pBtLinkInfo->bScoExist) + { + if( pBtLinkInfo->bHidExist && + pBtLinkInfo->bPanExist && + pBtLinkInfo->bA2dpExist ) + { + if(bBtHsOn) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Error!!! SCO + HID + A2DP + PAN(HS)\n")); + + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + HID + A2DP + PAN(EDR)==>PAN(EDR)+HID\n")); + algorithm = BT_8192E_1ANT_COEX_ALGO_PANEDR_HID; + } + } + } + } + + return algorithm; +} + +VOID +halbtc8192e1ant_SetFwDacSwingLevel( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte dacSwingLvl + ) +{ + u1Byte H2C_Parameter[1] ={0}; + + // There are several type of dacswing + // 0x18/ 0x10/ 0xc/ 0x8/ 0x4/ 0x6 + H2C_Parameter[0] = dacSwingLvl; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, ("[BTCoex], Set Dac Swing Level=0x%x\n", dacSwingLvl)); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, ("[BTCoex], FW write 0x64=0x%x\n", H2C_Parameter[0])); + + pBtCoexist->btc_fill_h2c(pBtCoexist, 0x64, 1, H2C_Parameter); +} + +VOID +halbtc8192e1ant_SetFwDecBtPwr( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte decBtPwrLvl + ) +{ + u1Byte H2C_Parameter[1] ={0}; + + H2C_Parameter[0] = decBtPwrLvl; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, ("[BTCoex], decrease Bt Power level = %d, FW write 0x62=0x%x\n", + decBtPwrLvl, H2C_Parameter[0])); + + pBtCoexist->btc_fill_h2c(pBtCoexist, 0x62, 1, H2C_Parameter); +} + +VOID +halbtc8192e1ant_DecBtPwr( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bForceExec, + IN u1Byte decBtPwrLvl + ) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, ("[BTCoex], %s Dec BT power level = %d\n", + (bForceExec? "force to":""), decBtPwrLvl)); + pCoexDm->curBtDecPwrLvl = decBtPwrLvl; + + if(!bForceExec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], BtDecPwrLvl=%d, curBtDecPwrLvl=%d\n", + pCoexDm->preBtDecPwrLvl, pCoexDm->curBtDecPwrLvl)); + + if(pCoexDm->preBtDecPwrLvl == pCoexDm->curBtDecPwrLvl) + return; + } + halbtc8192e1ant_SetFwDecBtPwr(pBtCoexist, pCoexDm->curBtDecPwrLvl); + + pCoexDm->preBtDecPwrLvl = pCoexDm->curBtDecPwrLvl; +} + +VOID +halbtc8192e1ant_SetFwBtLnaConstrain( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bBtLnaConsOn + ) +{ + u1Byte H2C_Parameter[2] ={0}; + + H2C_Parameter[0] = 0x3; // opCode, 0x3=BT_SET_LNA_CONSTRAIN + + if(bBtLnaConsOn) + { + H2C_Parameter[1] |= BIT0; + } + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, ("[BTCoex], set BT LNA Constrain: %s, FW write 0x69=0x%x\n", + (bBtLnaConsOn? "ON!!":"OFF!!"), + H2C_Parameter[0]<<8|H2C_Parameter[1])); + + pBtCoexist->btc_fill_h2c(pBtCoexist, 0x69, 2, H2C_Parameter); +} + +VOID +halbtc8192e1ant_SetBtLnaConstrain( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bForceExec, + IN BOOLEAN bBtLnaConsOn + ) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, ("[BTCoex], %s BT Constrain = %s\n", + (bForceExec? "force":""), ((bBtLnaConsOn)? "ON":"OFF"))); + pCoexDm->bCurBtLnaConstrain = bBtLnaConsOn; + + if(!bForceExec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], bPreBtLnaConstrain=%d, bCurBtLnaConstrain=%d\n", + pCoexDm->bPreBtLnaConstrain, pCoexDm->bCurBtLnaConstrain)); + + if(pCoexDm->bPreBtLnaConstrain == pCoexDm->bCurBtLnaConstrain) + return; + } + halbtc8192e1ant_SetFwBtLnaConstrain(pBtCoexist, pCoexDm->bCurBtLnaConstrain); + + pCoexDm->bPreBtLnaConstrain = pCoexDm->bCurBtLnaConstrain; +} + +VOID +halbtc8192e1ant_SetFwBtPsdMode( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte btPsdMode + ) +{ + u1Byte H2C_Parameter[2] ={0}; + + H2C_Parameter[0] = 0x2; // opCode, 0x2=BT_SET_PSD_MODE + + H2C_Parameter[1] = btPsdMode; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, ("[BTCoex], set BT PSD mode=0x%x, FW write 0x69=0x%x\n", + H2C_Parameter[1], + H2C_Parameter[0]<<8|H2C_Parameter[1])); + + pBtCoexist->btc_fill_h2c(pBtCoexist, 0x69, 2, H2C_Parameter); +} + + +VOID +halbtc8192e1ant_SetBtPsdMode( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bForceExec, + IN u1Byte btPsdMode + ) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, ("[BTCoex], %s BT PSD mode = 0x%x\n", + (bForceExec? "force":""), btPsdMode)); + pCoexDm->bCurBtPsdMode = btPsdMode; + + if(!bForceExec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], bPreBtPsdMode=0x%x, bCurBtPsdMode=0x%x\n", + pCoexDm->bPreBtPsdMode, pCoexDm->bCurBtPsdMode)); + + if(pCoexDm->bPreBtPsdMode == pCoexDm->bCurBtPsdMode) + return; + } + halbtc8192e1ant_SetFwBtPsdMode(pBtCoexist, pCoexDm->bCurBtPsdMode); + + pCoexDm->bPreBtPsdMode = pCoexDm->bCurBtPsdMode; +} + + +VOID +halbtc8192e1ant_SetBtAutoReport( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bEnableAutoReport + ) +{ + u1Byte H2C_Parameter[1] ={0}; + + H2C_Parameter[0] = 0; + + if(bEnableAutoReport) + { + H2C_Parameter[0] |= BIT0; + } + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, ("[BTCoex], BT FW auto report : %s, FW write 0x68=0x%x\n", + (bEnableAutoReport? "Enabled!!":"Disabled!!"), H2C_Parameter[0])); + + pBtCoexist->btc_fill_h2c(pBtCoexist, 0x68, 1, H2C_Parameter); +} + +VOID +halbtc8192e1ant_BtAutoReport( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bForceExec, + IN BOOLEAN bEnableAutoReport + ) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, ("[BTCoex], %s BT Auto report = %s\n", + (bForceExec? "force to":""), ((bEnableAutoReport)? "Enabled":"Disabled"))); + pCoexDm->bCurBtAutoReport = bEnableAutoReport; + + if(!bForceExec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], bPreBtAutoReport=%d, bCurBtAutoReport=%d\n", + pCoexDm->bPreBtAutoReport, pCoexDm->bCurBtAutoReport)); + + if(pCoexDm->bPreBtAutoReport == pCoexDm->bCurBtAutoReport) + return; + } + halbtc8192e1ant_SetBtAutoReport(pBtCoexist, pCoexDm->bCurBtAutoReport); + + pCoexDm->bPreBtAutoReport = pCoexDm->bCurBtAutoReport; +} + +VOID +halbtc8192e1ant_FwDacSwingLvl( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bForceExec, + IN u1Byte fwDacSwingLvl + ) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, ("[BTCoex], %s set FW Dac Swing level = %d\n", + (bForceExec? "force to":""), fwDacSwingLvl)); + pCoexDm->curFwDacSwingLvl = fwDacSwingLvl; + + if(!bForceExec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], preFwDacSwingLvl=%d, curFwDacSwingLvl=%d\n", + pCoexDm->preFwDacSwingLvl, pCoexDm->curFwDacSwingLvl)); + + if(pCoexDm->preFwDacSwingLvl == pCoexDm->curFwDacSwingLvl) + return; + } + + halbtc8192e1ant_SetFwDacSwingLevel(pBtCoexist, pCoexDm->curFwDacSwingLvl); + + pCoexDm->preFwDacSwingLvl = pCoexDm->curFwDacSwingLvl; +} + +VOID +halbtc8192e1ant_SetSwRfRxLpfCorner( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bRxRfShrinkOn + ) +{ + if(bRxRfShrinkOn) + { + //Shrink RF Rx LPF corner + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], Shrink RF Rx LPF corner!!\n")); + pBtCoexist->btc_set_rf_reg(pBtCoexist, BTC_RF_A, 0x1e, 0xfffff, 0xf0ff7); + } + else + { + //Resume RF Rx LPF corner + // After initialized, we can use pCoexDm->btRf0x1eBackup + if(pBtCoexist->initilized) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], Resume RF Rx LPF corner!!\n")); + pBtCoexist->btc_set_rf_reg(pBtCoexist, BTC_RF_A, 0x1e, 0xfffff, pCoexDm->btRf0x1eBackup); + } + } +} + +VOID +halbtc8192e1ant_RfShrink( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bForceExec, + IN BOOLEAN bRxRfShrinkOn + ) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, ("[BTCoex], %s turn Rx RF Shrink = %s\n", + (bForceExec? "force to":""), ((bRxRfShrinkOn)? "ON":"OFF"))); + pCoexDm->bCurRfRxLpfShrink = bRxRfShrinkOn; + + if(!bForceExec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, ("[BTCoex], bPreRfRxLpfShrink=%d, bCurRfRxLpfShrink=%d\n", + pCoexDm->bPreRfRxLpfShrink, pCoexDm->bCurRfRxLpfShrink)); + + if(pCoexDm->bPreRfRxLpfShrink == pCoexDm->bCurRfRxLpfShrink) + return; + } + halbtc8192e1ant_SetSwRfRxLpfCorner(pBtCoexist, pCoexDm->bCurRfRxLpfShrink); + + pCoexDm->bPreRfRxLpfShrink = pCoexDm->bCurRfRxLpfShrink; +} + +VOID +halbtc8192e1ant_SetSwPenaltyTxRateAdaptive( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bLowPenaltyRa + ) +{ + u1Byte tmpU1; + + tmpU1 = pBtCoexist->btc_read_1byte(pBtCoexist, 0x4fd); + tmpU1 |= BIT0; + if(bLowPenaltyRa) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], Tx rate adaptive, set low penalty!!\n")); + tmpU1 &= ~BIT2; + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], Tx rate adaptive, set normal!!\n")); + tmpU1 |= BIT2; + } + + pBtCoexist->btc_write_1byte(pBtCoexist, 0x4fd, tmpU1); +} + +VOID +halbtc8192e1ant_LowPenaltyRa( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bForceExec, + IN BOOLEAN bLowPenaltyRa + ) +{ + return; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, ("[BTCoex], %s turn LowPenaltyRA = %s\n", + (bForceExec? "force to":""), ((bLowPenaltyRa)? "ON":"OFF"))); + pCoexDm->bCurLowPenaltyRa = bLowPenaltyRa; + + if(!bForceExec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, ("[BTCoex], bPreLowPenaltyRa=%d, bCurLowPenaltyRa=%d\n", + pCoexDm->bPreLowPenaltyRa, pCoexDm->bCurLowPenaltyRa)); + + if(pCoexDm->bPreLowPenaltyRa == pCoexDm->bCurLowPenaltyRa) + return; + } + halbtc8192e1ant_SetSwPenaltyTxRateAdaptive(pBtCoexist, pCoexDm->bCurLowPenaltyRa); + + pCoexDm->bPreLowPenaltyRa = pCoexDm->bCurLowPenaltyRa; +} + +VOID +halbtc8192e1ant_SetDacSwingReg( + IN PBTC_COEXIST pBtCoexist, + IN u4Byte level + ) +{ + u1Byte val=(u1Byte)level; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], Write SwDacSwing = 0x%x\n", level)); + pBtCoexist->btc_write_1byte_bitmask(pBtCoexist, 0x883, 0x3e, val); +} + +VOID +halbtc8192e1ant_SetSwFullTimeDacSwing( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bSwDacSwingOn, + IN u4Byte swDacSwingLvl + ) +{ + if(bSwDacSwingOn) + { + halbtc8192e1ant_SetDacSwingReg(pBtCoexist, swDacSwingLvl); + } + else + { + halbtc8192e1ant_SetDacSwingReg(pBtCoexist, 0x18); + } +} + + +VOID +halbtc8192e1ant_DacSwing( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bForceExec, + IN BOOLEAN bDacSwingOn, + IN u4Byte dacSwingLvl + ) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, ("[BTCoex], %s turn DacSwing=%s, dacSwingLvl=0x%x\n", + (bForceExec? "force to":""), ((bDacSwingOn)? "ON":"OFF"), dacSwingLvl)); + pCoexDm->bCurDacSwingOn = bDacSwingOn; + pCoexDm->curDacSwingLvl = dacSwingLvl; + + if(!bForceExec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, ("[BTCoex], bPreDacSwingOn=%d, preDacSwingLvl=0x%x, bCurDacSwingOn=%d, curDacSwingLvl=0x%x\n", + pCoexDm->bPreDacSwingOn, pCoexDm->preDacSwingLvl, + pCoexDm->bCurDacSwingOn, pCoexDm->curDacSwingLvl)); + + if( (pCoexDm->bPreDacSwingOn == pCoexDm->bCurDacSwingOn) && + (pCoexDm->preDacSwingLvl == pCoexDm->curDacSwingLvl) ) + return; + } + mdelay(30); + halbtc8192e1ant_SetSwFullTimeDacSwing(pBtCoexist, bDacSwingOn, dacSwingLvl); + + pCoexDm->bPreDacSwingOn = pCoexDm->bCurDacSwingOn; + pCoexDm->preDacSwingLvl = pCoexDm->curDacSwingLvl; +} + +VOID +halbtc8192e1ant_SetAdcBackOff( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bAdcBackOff + ) +{ + if(bAdcBackOff) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], BB BackOff Level On!\n")); + pBtCoexist->btc_write_1byte_bitmask(pBtCoexist, 0x8db, 0x60, 0x3); + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], BB BackOff Level Off!\n")); + pBtCoexist->btc_write_1byte_bitmask(pBtCoexist, 0x8db, 0x60, 0x1); + } +} + +VOID +halbtc8192e1ant_AdcBackOff( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bForceExec, + IN BOOLEAN bAdcBackOff + ) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, ("[BTCoex], %s turn AdcBackOff = %s\n", + (bForceExec? "force to":""), ((bAdcBackOff)? "ON":"OFF"))); + pCoexDm->bCurAdcBackOff = bAdcBackOff; + + if(!bForceExec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, ("[BTCoex], bPreAdcBackOff=%d, bCurAdcBackOff=%d\n", + pCoexDm->bPreAdcBackOff, pCoexDm->bCurAdcBackOff)); + + if(pCoexDm->bPreAdcBackOff == pCoexDm->bCurAdcBackOff) + return; + } + halbtc8192e1ant_SetAdcBackOff(pBtCoexist, pCoexDm->bCurAdcBackOff); + + pCoexDm->bPreAdcBackOff = pCoexDm->bCurAdcBackOff; +} + +VOID +halbtc8192e1ant_SetAgcTable( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bAgcTableEn + ) +{ + u1Byte rssiAdjustVal=0; + + pBtCoexist->btc_set_rf_reg(pBtCoexist, BTC_RF_A, 0xef, 0xfffff, 0x02000); + if(bAgcTableEn) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], Agc Table On!\n")); + pBtCoexist->btc_set_rf_reg(pBtCoexist, BTC_RF_A, 0x3b, 0xfffff, 0x3fa58); + pBtCoexist->btc_set_rf_reg(pBtCoexist, BTC_RF_A, 0x3b, 0xfffff, 0x37a58); + pBtCoexist->btc_set_rf_reg(pBtCoexist, BTC_RF_A, 0x3b, 0xfffff, 0x2fa58); + rssiAdjustVal = 8; + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], Agc Table Off!\n")); + pBtCoexist->btc_set_rf_reg(pBtCoexist, BTC_RF_A, 0x3b, 0xfffff, 0x39258); + pBtCoexist->btc_set_rf_reg(pBtCoexist, BTC_RF_A, 0x3b, 0xfffff, 0x31258); + pBtCoexist->btc_set_rf_reg(pBtCoexist, BTC_RF_A, 0x3b, 0xfffff, 0x29258); + } + pBtCoexist->btc_set_rf_reg(pBtCoexist, BTC_RF_A, 0xef, 0xfffff, 0x0); + + // set rssiAdjustVal for wifi module. + pBtCoexist->btc_set(pBtCoexist, BTC_SET_U1_RSSI_ADJ_VAL_FOR_AGC_TABLE_ON, &rssiAdjustVal); +} + + +VOID +halbtc8192e1ant_AgcTable( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bForceExec, + IN BOOLEAN bAgcTableEn + ) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, ("[BTCoex], %s %s Agc Table\n", + (bForceExec? "force to":""), ((bAgcTableEn)? "Enable":"Disable"))); + pCoexDm->bCurAgcTableEn = bAgcTableEn; + + if(!bForceExec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, ("[BTCoex], bPreAgcTableEn=%d, bCurAgcTableEn=%d\n", + pCoexDm->bPreAgcTableEn, pCoexDm->bCurAgcTableEn)); + + if(pCoexDm->bPreAgcTableEn == pCoexDm->bCurAgcTableEn) + return; + } + halbtc8192e1ant_SetAgcTable(pBtCoexist, bAgcTableEn); + + pCoexDm->bPreAgcTableEn = pCoexDm->bCurAgcTableEn; +} + +VOID +halbtc8192e1ant_SetCoexTable( + IN PBTC_COEXIST pBtCoexist, + IN u4Byte val0x6c0, + IN u4Byte val0x6c4, + IN u4Byte val0x6c8, + IN u1Byte val0x6cc + ) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], set coex table, set 0x6c0=0x%x\n", val0x6c0)); + pBtCoexist->btc_write_4byte(pBtCoexist, 0x6c0, val0x6c0); + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], set coex table, set 0x6c4=0x%x\n", val0x6c4)); + pBtCoexist->btc_write_4byte(pBtCoexist, 0x6c4, val0x6c4); + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], set coex table, set 0x6c8=0x%x\n", val0x6c8)); + pBtCoexist->btc_write_4byte(pBtCoexist, 0x6c8, val0x6c8); + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], set coex table, set 0x6cc=0x%x\n", val0x6cc)); + pBtCoexist->btc_write_1byte(pBtCoexist, 0x6cc, val0x6cc); +} + +VOID +halbtc8192e1ant_CoexTable( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bForceExec, + IN u4Byte val0x6c0, + IN u4Byte val0x6c4, + IN u4Byte val0x6c8, + IN u1Byte val0x6cc + ) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, ("[BTCoex], %s write Coex Table 0x6c0=0x%x, 0x6c4=0x%x, 0x6c8=0x%x, 0x6cc=0x%x\n", + (bForceExec? "force to":""), val0x6c0, val0x6c4, val0x6c8, val0x6cc)); + pCoexDm->curVal0x6c0 = val0x6c0; + pCoexDm->curVal0x6c4 = val0x6c4; + pCoexDm->curVal0x6c8 = val0x6c8; + pCoexDm->curVal0x6cc = val0x6cc; + + if(!bForceExec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, ("[BTCoex], preVal0x6c0=0x%x, preVal0x6c4=0x%x, preVal0x6c8=0x%x, preVal0x6cc=0x%x !!\n", + pCoexDm->preVal0x6c0, pCoexDm->preVal0x6c4, pCoexDm->preVal0x6c8, pCoexDm->preVal0x6cc)); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, ("[BTCoex], curVal0x6c0=0x%x, curVal0x6c4=0x%x, curVal0x6c8=0x%x, curVal0x6cc=0x%x !!\n", + pCoexDm->curVal0x6c0, pCoexDm->curVal0x6c4, pCoexDm->curVal0x6c8, pCoexDm->curVal0x6cc)); + + if( (pCoexDm->preVal0x6c0 == pCoexDm->curVal0x6c0) && + (pCoexDm->preVal0x6c4 == pCoexDm->curVal0x6c4) && + (pCoexDm->preVal0x6c8 == pCoexDm->curVal0x6c8) && + (pCoexDm->preVal0x6cc == pCoexDm->curVal0x6cc) ) + return; + } + halbtc8192e1ant_SetCoexTable(pBtCoexist, val0x6c0, val0x6c4, val0x6c8, val0x6cc); + + pCoexDm->preVal0x6c0 = pCoexDm->curVal0x6c0; + pCoexDm->preVal0x6c4 = pCoexDm->curVal0x6c4; + pCoexDm->preVal0x6c8 = pCoexDm->curVal0x6c8; + pCoexDm->preVal0x6cc = pCoexDm->curVal0x6cc; +} + +VOID +halbtc8192e1ant_CoexTableWithType( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bForceExec, + IN u1Byte type + ) +{ + switch(type) + { + case 0: + halbtc8192e1ant_CoexTable(pBtCoexist, bForceExec, 0x55555555, 0x55555555, 0xffffff, 0x3); + break; + case 1: + halbtc8192e1ant_CoexTable(pBtCoexist, bForceExec, 0x55555555, 0x5a5a5a5a, 0xffffff, 0x3); + break; + case 2: + halbtc8192e1ant_CoexTable(pBtCoexist, bForceExec, 0x5a5a5a5a, 0x5a5a5a5a, 0xffffff, 0x3); + break; + case 3: + halbtc8192e1ant_CoexTable(pBtCoexist, bForceExec, 0xaaaaaaaa, 0xaaaaaaaa, 0xffffff, 0x3); + break; + case 4: + halbtc8192e1ant_CoexTable(pBtCoexist, bForceExec, 0xffffffff, 0xffffffff, 0xffffff, 0x3); + break; + case 5: + halbtc8192e1ant_CoexTable(pBtCoexist, bForceExec, 0x5fff5fff, 0x5fff5fff, 0xffffff, 0x3); + break; + case 6: + halbtc8192e1ant_CoexTable(pBtCoexist, bForceExec, 0x55ff55ff, 0x5a5a5a5a, 0xffffff, 0x3); + break; + case 7: + halbtc8192e1ant_CoexTable(pBtCoexist, bForceExec, 0xddffddff, 0xddffddff, 0xffffff, 0x3); + break; + case 8: + halbtc8192e1ant_CoexTable(pBtCoexist, bForceExec, 0x55ff55ff, 0x5afa5afa, 0xffffff, 0x3); + break; + case 9: + halbtc8192e1ant_CoexTable(pBtCoexist, bForceExec, 0x5f5f5f5f, 0x5f5f5f5f, 0xffffff, 0x3); + break; + default: + break; + } +} + +VOID +halbtc8192e1ant_SetFwIgnoreWlanAct( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bEnable + ) +{ + u1Byte H2C_Parameter[1] ={0}; + + if(bEnable) + { + H2C_Parameter[0] |= BIT0; // function enable + } + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, ("[BTCoex], set FW for BT Ignore Wlan_Act, FW write 0x63=0x%x\n", + H2C_Parameter[0])); + + pBtCoexist->btc_fill_h2c(pBtCoexist, 0x63, 1, H2C_Parameter); +} + +VOID +halbtc8192e1ant_IgnoreWlanAct( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bForceExec, + IN BOOLEAN bEnable + ) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, ("[BTCoex], %s turn Ignore WlanAct %s\n", + (bForceExec? "force to":""), (bEnable? "ON":"OFF"))); + pCoexDm->bCurIgnoreWlanAct = bEnable; + + if(!bForceExec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], bPreIgnoreWlanAct = %d, bCurIgnoreWlanAct = %d!!\n", + pCoexDm->bPreIgnoreWlanAct, pCoexDm->bCurIgnoreWlanAct)); + + if(pCoexDm->bPreIgnoreWlanAct == pCoexDm->bCurIgnoreWlanAct) + return; + } + halbtc8192e1ant_SetFwIgnoreWlanAct(pBtCoexist, bEnable); + + pCoexDm->bPreIgnoreWlanAct = pCoexDm->bCurIgnoreWlanAct; +} + +VOID +halbtc8192e1ant_SetFwPstdma( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte byte1, + IN u1Byte byte2, + IN u1Byte byte3, + IN u1Byte byte4, + IN u1Byte byte5 + ) +{ + u1Byte H2C_Parameter[5] ={0}; + + H2C_Parameter[0] = byte1; + H2C_Parameter[1] = byte2; + H2C_Parameter[2] = byte3; + H2C_Parameter[3] = byte4; + H2C_Parameter[4] = byte5; + + pCoexDm->psTdmaPara[0] = byte1; + pCoexDm->psTdmaPara[1] = byte2; + pCoexDm->psTdmaPara[2] = byte3; + pCoexDm->psTdmaPara[3] = byte4; + pCoexDm->psTdmaPara[4] = byte5; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, ("[BTCoex], FW write 0x60(5bytes)=0x%x%08x\n", + H2C_Parameter[0], + H2C_Parameter[1]<<24|H2C_Parameter[2]<<16|H2C_Parameter[3]<<8|H2C_Parameter[4])); + + pBtCoexist->btc_fill_h2c(pBtCoexist, 0x60, 5, H2C_Parameter); +} + +VOID +halbtc8192e1ant_SetLpsRpwm( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte lpsVal, + IN u1Byte rpwmVal + ) +{ + u1Byte lps=lpsVal; + u1Byte rpwm=rpwmVal; + + pBtCoexist->btc_set(pBtCoexist, BTC_SET_U1_1ANT_LPS, &lps); + pBtCoexist->btc_set(pBtCoexist, BTC_SET_U1_1ANT_RPWM, &rpwm); +} + +VOID +halbtc8192e1ant_LpsRpwm( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bForceExec, + IN u1Byte lpsVal, + IN u1Byte rpwmVal + ) +{ + BOOLEAN bForceExecPwrCmd=FALSE; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, ("[BTCoex], %s set lps/rpwm=0x%x/0x%x \n", + (bForceExec? "force to":""), lpsVal, rpwmVal)); + pCoexDm->curLps = lpsVal; + pCoexDm->curRpwm = rpwmVal; + + if(!bForceExec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], preLps/curLps=0x%x/0x%x, preRpwm/curRpwm=0x%x/0x%x!!\n", + pCoexDm->preLps, pCoexDm->curLps, pCoexDm->preRpwm, pCoexDm->curRpwm)); + + if( (pCoexDm->preLps == pCoexDm->curLps) && + (pCoexDm->preRpwm == pCoexDm->curRpwm) ) + { + return; + } + } + halbtc8192e1ant_SetLpsRpwm(pBtCoexist, lpsVal, rpwmVal); + + pCoexDm->preLps = pCoexDm->curLps; + pCoexDm->preRpwm = pCoexDm->curRpwm; +} + +VOID +halbtc8192e1ant_SwMechanism1( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bShrinkRxLPF, + IN BOOLEAN bLowPenaltyRA, + IN BOOLEAN limited_dig, + IN BOOLEAN bBTLNAConstrain + ) +{ + //halbtc8192e1ant_RfShrink(pBtCoexist, NORMAL_EXEC, bShrinkRxLPF); + //halbtc8192e1ant_LowPenaltyRa(pBtCoexist, NORMAL_EXEC, bLowPenaltyRA); + + //no limited DIG + //halbtc8192e1ant_SetBtLnaConstrain(pBtCoexist, NORMAL_EXEC, bBTLNAConstrain); +} + +VOID +halbtc8192e1ant_SwMechanism2( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bAGCTableShift, + IN BOOLEAN bADCBackOff, + IN BOOLEAN bSWDACSwing, + IN u4Byte dacSwingLvl + ) +{ + //halbtc8192e1ant_AgcTable(pBtCoexist, NORMAL_EXEC, bAGCTableShift); + //halbtc8192e1ant_AdcBackOff(pBtCoexist, NORMAL_EXEC, bADCBackOff); + //halbtc8192e1ant_DacSwing(pBtCoexist, NORMAL_EXEC, bSWDACSwing, dacSwingLvl); +} + +VOID +halbtc8192e1ant_PsTdma( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bForceExec, + IN BOOLEAN bTurnOn, + IN u1Byte type + ) +{ + BOOLEAN bTurnOnByCnt=FALSE; + u1Byte psTdmaTypeByCnt=0, rssiAdjustVal=0; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, ("[BTCoex], %s turn %s PS TDMA, type=%d\n", + (bForceExec? "force to":""), (bTurnOn? "ON":"OFF"), type)); + pCoexDm->bCurPsTdmaOn = bTurnOn; + pCoexDm->curPsTdma = type; + + if(!bForceExec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], bPrePsTdmaOn = %d, bCurPsTdmaOn = %d!!\n", + pCoexDm->bPrePsTdmaOn, pCoexDm->bCurPsTdmaOn)); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], prePsTdma = %d, curPsTdma = %d!!\n", + pCoexDm->prePsTdma, pCoexDm->curPsTdma)); + + if( (pCoexDm->bPrePsTdmaOn == pCoexDm->bCurPsTdmaOn) && + (pCoexDm->prePsTdma == pCoexDm->curPsTdma) ) + return; + } + if(bTurnOn) + { + switch(type) + { + default: + halbtc8192e1ant_SetFwPstdma(pBtCoexist, 0x53, 0x2c, 0x03, 0x10, 0x50); + break; + case 1: + halbtc8192e1ant_SetFwPstdma(pBtCoexist, 0x53, 0x2c, 0x03, 0x10, 0x50); + rssiAdjustVal = 11; + break; + case 2: + halbtc8192e1ant_SetFwPstdma(pBtCoexist, 0x53, 0x25, 0x03, 0x10, 0x50); + rssiAdjustVal = 14; + break; + case 3: + halbtc8192e1ant_SetFwPstdma(pBtCoexist, 0x93, 0x25, 0x3, 0x10, 0x40); + break; + case 4: + halbtc8192e1ant_SetFwPstdma(pBtCoexist, 0x93, 0x15, 0x3, 0x14, 0x0); + rssiAdjustVal = 17; + break; + case 5: + halbtc8192e1ant_SetFwPstdma(pBtCoexist, 0x61, 0x15, 0x3, 0x31, 0x0); + break; + case 6: + halbtc8192e1ant_SetFwPstdma(pBtCoexist, 0x13, 0xa, 0x3, 0x0, 0x0); + break; + case 7: + halbtc8192e1ant_SetFwPstdma(pBtCoexist, 0x13, 0xc, 0x5, 0x0, 0x0); + break; + case 8: + halbtc8192e1ant_SetFwPstdma(pBtCoexist, 0x93, 0x25, 0x3, 0x10, 0x0); + break; + case 9: + halbtc8192e1ant_SetFwPstdma(pBtCoexist, 0x53, 0x1e, 0x03, 0x10, 0x50); + rssiAdjustVal = 18; + break; + case 10: + halbtc8192e1ant_SetFwPstdma(pBtCoexist, 0x13, 0xa, 0xa, 0x0, 0x40); + break; + case 11: + halbtc8192e1ant_SetFwPstdma(pBtCoexist, 0x53, 0x12, 0x03, 0x10, 0x50); + rssiAdjustVal = 20; + break; + case 12: + halbtc8192e1ant_SetFwPstdma(pBtCoexist, 0xeb, 0xa, 0x3, 0x31, 0x18); + break; + + case 15: + halbtc8192e1ant_SetFwPstdma(pBtCoexist, 0x13, 0xa, 0x3, 0x8, 0x0); + break; + case 16: + halbtc8192e1ant_SetFwPstdma(pBtCoexist, 0x93, 0x15, 0x3, 0x10, 0x0); + rssiAdjustVal = 18; + break; + + case 18: + halbtc8192e1ant_SetFwPstdma(pBtCoexist, 0x93, 0x25, 0x3, 0x10, 0x0); + rssiAdjustVal = 14; + break; + + case 20: + halbtc8192e1ant_SetFwPstdma(pBtCoexist, 0x13, 0x25, 0x25, 0x0, 0x0); + break; + case 21: + halbtc8192e1ant_SetFwPstdma(pBtCoexist, 0x93, 0x20, 0x3, 0x10, 0x40); + break; + case 22: + halbtc8192e1ant_SetFwPstdma(pBtCoexist, 0x13, 0x8, 0x8, 0x0, 0x40); + break; + case 23: + halbtc8192e1ant_SetFwPstdma(pBtCoexist, 0xe3, 0x25, 0x3, 0x31, 0x18); + rssiAdjustVal = 22; + break; + case 24: + halbtc8192e1ant_SetFwPstdma(pBtCoexist, 0xe3, 0x15, 0x3, 0x31, 0x18); + rssiAdjustVal = 22; + break; + case 25: + halbtc8192e1ant_SetFwPstdma(pBtCoexist, 0xe3, 0xa, 0x3, 0x31, 0x18); + rssiAdjustVal = 22; + break; + case 26: + halbtc8192e1ant_SetFwPstdma(pBtCoexist, 0xe3, 0xa, 0x3, 0x31, 0x18); + rssiAdjustVal = 22; + break; + case 27: + halbtc8192e1ant_SetFwPstdma(pBtCoexist, 0xe3, 0x25, 0x3, 0x31, 0x98); + rssiAdjustVal = 22; + break; + case 28: + halbtc8192e1ant_SetFwPstdma(pBtCoexist, 0x69, 0x25, 0x3, 0x31, 0x0); + break; + case 29: + halbtc8192e1ant_SetFwPstdma(pBtCoexist, 0xab, 0x1a, 0x1a, 0x1, 0x10); + break; + case 30: + halbtc8192e1ant_SetFwPstdma(pBtCoexist, 0x93, 0x15, 0x3, 0x14, 0x0); + break; + case 31: + halbtc8192e1ant_SetFwPstdma(pBtCoexist, 0xd3, 0x1a, 0x1a, 0, 0x58); + break; + case 32: + halbtc8192e1ant_SetFwPstdma(pBtCoexist, 0xab, 0xa, 0x3, 0x31, 0x90); + break; + case 33: + halbtc8192e1ant_SetFwPstdma(pBtCoexist, 0xa3, 0x25, 0x3, 0x30, 0x90); + break; + case 34: + halbtc8192e1ant_SetFwPstdma(pBtCoexist, 0xd3, 0x1a, 0x1a, 0x0, 0x10); + break; + case 35: + halbtc8192e1ant_SetFwPstdma(pBtCoexist, 0xe3, 0x1a, 0x1a, 0x0, 0x10); + break; + case 36: + halbtc8192e1ant_SetFwPstdma(pBtCoexist, 0xd3, 0x12, 0x3, 0x14, 0x50); + break; + case 37: + halbtc8192e1ant_SetFwPstdma(pBtCoexist, 0x53, 0x25, 0x3, 0x10, 0x50); + break; + case 38: + halbtc8192e1ant_SetFwPstdma(pBtCoexist, 0xe3, 0x12, 0x12, 0xe1, 0x90); + break; + } + } + else + { + // disable PS tdma + switch(type) + { + case 8: //0x778 = 1, ant2PTA + halbtc8192e1ant_SetFwPstdma(pBtCoexist, 0x8, 0x0, 0x0, 0x0, 0x0); + pBtCoexist->btc_write_1byte(pBtCoexist, 0x92c, 0x4); + break; + case 0: //0x778 = 1, ant2BT + default: + halbtc8192e1ant_SetFwPstdma(pBtCoexist, 0x0, 0x0, 0x0, 0x0, 0x0); + mdelay(5); + pBtCoexist->btc_write_1byte(pBtCoexist, 0x92c, 0x20); + break; + case 9: //0x778 = 1, ant2WIFI + halbtc8192e1ant_SetFwPstdma(pBtCoexist, 0x0, 0x0, 0x0, 0x0, 0x0); + pBtCoexist->btc_write_1byte(pBtCoexist, 0x92c, 0x4); + break; + case 10: //0x778 = 3, ant2BT + halbtc8192e1ant_SetFwPstdma(pBtCoexist, 0x0, 0x0, 0x0, 0x8, 0x0); + mdelay(5); + pBtCoexist->btc_write_1byte(pBtCoexist, 0x92c, 0x20); + break; + } + } + rssiAdjustVal =0; + pBtCoexist->btc_set(pBtCoexist, BTC_SET_U1_RSSI_ADJ_VAL_FOR_1ANT_COEX_TYPE, &rssiAdjustVal); + + // update pre state + pCoexDm->bPrePsTdmaOn = pCoexDm->bCurPsTdmaOn; + pCoexDm->prePsTdma = pCoexDm->curPsTdma; +} + +VOID +halbtc8192e1ant_SetSwitchSsType( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte ssType + ) +{ + u1Byte mimoPs=BTC_MIMO_PS_DYNAMIC; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], REAL set SS Type = %d\n", ssType)); + + if(ssType == 1) + { + halbtc8192e1ant_Updatera_mask(pBtCoexist, FORCE_EXEC, BTC_RATE_DISABLE, 0xfff00000); // disable 2ss + halbtc8192e1ant_PsTdma(pBtCoexist, FORCE_EXEC, FALSE, 0); + // switch ofdm path + pBtCoexist->btc_write_1byte(pBtCoexist, 0xc04, 0x11); + pBtCoexist->btc_write_1byte(pBtCoexist, 0xd04, 0x1); + pBtCoexist->btc_write_4byte(pBtCoexist, 0x90c, 0x81111111); + // switch cck patch + pBtCoexist->btc_write_1byte_bitmask(pBtCoexist, 0xe77, 0x4, 0x1); + pBtCoexist->btc_write_1byte(pBtCoexist, 0xa07, 0x81); + mimoPs=BTC_MIMO_PS_STATIC; + } + else if(ssType == 2) + { + halbtc8192e1ant_Updatera_mask(pBtCoexist, FORCE_EXEC, BTC_RATE_ENABLE, 0xfff00000); // enable 2ss + halbtc8192e1ant_PsTdma(pBtCoexist, FORCE_EXEC, FALSE, 8); + pBtCoexist->btc_write_1byte(pBtCoexist, 0xc04, 0x33); + pBtCoexist->btc_write_1byte(pBtCoexist, 0xd04, 0x3); + pBtCoexist->btc_write_4byte(pBtCoexist, 0x90c, 0x81121313); + pBtCoexist->btc_write_1byte_bitmask(pBtCoexist, 0xe77, 0x4, 0x0); + pBtCoexist->btc_write_1byte(pBtCoexist, 0xa07, 0x41); + mimoPs=BTC_MIMO_PS_DYNAMIC; + } + + pBtCoexist->btc_set(pBtCoexist, BTC_SET_ACT_SEND_MIMO_PS, &mimoPs); // set rx 1ss or 2ss +} + +VOID +halbtc8192e1ant_SwitchSsType( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bForceExec, + IN u1Byte newSsType + ) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], %s Switch SS Type = %d\n", + (bForceExec? "force to":""), newSsType)); + pCoexDm->curSsType = newSsType; + + if(!bForceExec) + { + if(pCoexDm->preSsType == pCoexDm->curSsType) + return; + } + halbtc8192e1ant_SetSwitchSsType(pBtCoexist, pCoexDm->curSsType); + + pCoexDm->preSsType = pCoexDm->curSsType; +} + +VOID +halbtc8192e1ant_CoexAllOff( + IN PBTC_COEXIST pBtCoexist + ) +{ + halbtc8192e1ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0); + + // sw all off + halbtc8192e1ant_SwMechanism1(pBtCoexist,FALSE,FALSE,FALSE,FALSE); + halbtc8192e1ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18); + + + // hw all off + halbtc8192e1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 0); +} + +BOOLEAN +halbtc8192e1ant_IsCommonAction( + IN PBTC_COEXIST pBtCoexist + ) +{ + BOOLEAN bCommon=FALSE, bWifiConnected=FALSE, bWifiBusy=FALSE; + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_CONNECTED, &bWifiConnected); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_BUSY, &bWifiBusy); + + if(!bWifiConnected && + BT_8192E_1ANT_BT_STATUS_NON_CONNECTED_IDLE == pCoexDm->btStatus) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Wifi non connected-idle + BT non connected-idle!!\n")); + halbtc8192e1ant_SwMechanism1(pBtCoexist,FALSE,FALSE,FALSE,FALSE); + halbtc8192e1ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18); + + bCommon = true; + } + else if(bWifiConnected && + (BT_8192E_1ANT_BT_STATUS_NON_CONNECTED_IDLE == pCoexDm->btStatus) ) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Wifi connected + BT non connected-idle!!\n")); + halbtc8192e1ant_SwMechanism1(pBtCoexist,FALSE,FALSE,FALSE,FALSE); + halbtc8192e1ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18); + + bCommon = true; + } + else if(!bWifiConnected && + (BT_8192E_1ANT_BT_STATUS_CONNECTED_IDLE == pCoexDm->btStatus) ) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Wifi non connected-idle + BT connected-idle!!\n")); + halbtc8192e1ant_SwMechanism1(pBtCoexist,FALSE,FALSE,FALSE,FALSE); + halbtc8192e1ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18); + + bCommon = true; + } + else if(bWifiConnected && + (BT_8192E_1ANT_BT_STATUS_CONNECTED_IDLE == pCoexDm->btStatus) ) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Wifi connected + BT connected-idle!!\n")); + halbtc8192e1ant_SwMechanism1(pBtCoexist,true,true,true,true); + halbtc8192e1ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18); + + bCommon = true; + } + else if(!bWifiConnected && + (BT_8192E_1ANT_BT_STATUS_CONNECTED_IDLE != pCoexDm->btStatus) ) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Wifi non connected-idle + BT Busy!!\n")); + halbtc8192e1ant_SwMechanism1(pBtCoexist,FALSE,FALSE,FALSE,FALSE); + halbtc8192e1ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18); + + bCommon = true; + } + else + { + halbtc8192e1ant_SwMechanism1(pBtCoexist,true,true,true,true); + + bCommon = FALSE; + } + + return bCommon; +} + + +VOID +halbtc8192e1ant_TdmaDurationAdjustForAcl( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte wifiStatus + ) +{ + static s4Byte up,dn,m,n,WaitCount; + s4Byte result; //0: no change, +1: increase WiFi duration, -1: decrease WiFi duration + u1Byte retryCount=0, btInfoExt; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, ("[BTCoex], TdmaDurationAdjustForAcl()\n")); + + if( (BT_8192E_1ANT_WIFI_STATUS_NON_CONNECTED_ASSO_AUTH_SCAN == wifiStatus) || + (BT_8192E_1ANT_WIFI_STATUS_CONNECTED_SCAN == wifiStatus) || + (BT_8192E_1ANT_WIFI_STATUS_CONNECTED_SPECIAL_PKT == wifiStatus) ) + { + if( pCoexDm->curPsTdma != 1 && + pCoexDm->curPsTdma != 2 && + pCoexDm->curPsTdma != 3 && + pCoexDm->curPsTdma != 9 ) + { + halbtc8192e1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 9); + pCoexDm->psTdmaDuAdjType = 9; + + up = 0; + dn = 0; + m = 1; + n= 3; + result = 0; + WaitCount = 0; + } + return; + } + + if(!pCoexDm->bAutoTdmaAdjust) + { + pCoexDm->bAutoTdmaAdjust = true; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], first run TdmaDurationAdjust()!!\n")); + + halbtc8192e1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 2); + pCoexDm->psTdmaDuAdjType = 2; + //============ + up = 0; + dn = 0; + m = 1; + n= 3; + result = 0; + WaitCount = 0; + } + else + { + //accquire the BT TRx retry count from BT_Info byte2 + retryCount = pCoexSta->btRetryCnt; + btInfoExt = pCoexSta->btInfoExt; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], retryCount = %d\n", retryCount)); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], up=%d, dn=%d, m=%d, n=%d, WaitCount=%d\n", + up, dn, m, n, WaitCount)); + result = 0; + WaitCount++; + + if(retryCount == 0) // no retry in the last 2-second duration + { + up++; + dn--; + + if (dn <= 0) + dn = 0; + + if(up >= n) // if s n 2 retry count0, hռeWiFi duration + { + WaitCount = 0; + n = 3; + up = 0; + dn = 0; + result = 1; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], Increase wifi duration!!\n")); + } + } + else if (retryCount <= 3) // <=3 retry in the last 2-second duration + { + up--; + dn++; + + if (up <= 0) + up = 0; + + if (dn == 2) // if s 2 2 retry count< 3, hկWiFi duration + { + if (WaitCount <= 2) + m++; // קK@blevelӦ^ + else + m = 1; + + if ( m >= 20) //m ̤j = 20 ' ̤j120 recheckO_վ WiFi duration. + m = 20; + + n = 3*m; + up = 0; + dn = 0; + WaitCount = 0; + result = -1; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], Decrease wifi duration for retryCounter<3!!\n")); + } + } + else //retry count > 3, un1 retry count > 3, hկWiFi duration + { + if (WaitCount == 1) + m++; // קK@blevelӦ^ + else + m = 1; + + if ( m >= 20) //m ̤j = 20 ' ̤j120 recheckO_վ WiFi duration. + m = 20; + + n = 3*m; + up = 0; + dn = 0; + WaitCount = 0; + result = -1; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], Decrease wifi duration for retryCounter>3!!\n")); + } + + if(result == -1) + { + if( (BT_INFO_8192E_1ANT_A2DP_BASIC_RATE(btInfoExt)) && + ((pCoexDm->curPsTdma == 1) ||(pCoexDm->curPsTdma == 2)) ) + { + halbtc8192e1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 9); + pCoexDm->psTdmaDuAdjType = 9; + } + else if(pCoexDm->curPsTdma == 1) + { + halbtc8192e1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 2); + pCoexDm->psTdmaDuAdjType = 2; + } + else if(pCoexDm->curPsTdma == 2) + { + halbtc8192e1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 9); + pCoexDm->psTdmaDuAdjType = 9; + } + else if(pCoexDm->curPsTdma == 9) + { + halbtc8192e1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 11); + pCoexDm->psTdmaDuAdjType = 11; + } + } + else if(result == 1) + { + if( (BT_INFO_8192E_1ANT_A2DP_BASIC_RATE(btInfoExt)) && + ((pCoexDm->curPsTdma == 1) ||(pCoexDm->curPsTdma == 2)) ) + { + halbtc8192e1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 9); + pCoexDm->psTdmaDuAdjType = 9; + } + else if(pCoexDm->curPsTdma == 11) + { + halbtc8192e1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 9); + pCoexDm->psTdmaDuAdjType = 9; + } + else if(pCoexDm->curPsTdma == 9) + { + halbtc8192e1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 2); + pCoexDm->psTdmaDuAdjType = 2; + } + else if(pCoexDm->curPsTdma == 2) + { + halbtc8192e1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 1); + pCoexDm->psTdmaDuAdjType = 1; + } + } + + if( pCoexDm->curPsTdma != 1 && + pCoexDm->curPsTdma != 2 && + pCoexDm->curPsTdma != 9 && + pCoexDm->curPsTdma != 11 ) + { + // recover to previous adjust type + halbtc8192e1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, pCoexDm->psTdmaDuAdjType); + } + } +} + +u1Byte +halbtc8192e1ant_PsTdmaTypeByWifiRssi( + IN s4Byte wifiRssi, + IN s4Byte preWifiRssi, + IN u1Byte wifiRssiThresh + ) +{ + u1Byte psTdmaType=0; + + if(wifiRssi > preWifiRssi) + { + if(wifiRssi > (wifiRssiThresh+5)) + { + psTdmaType = 26; + } + else + { + psTdmaType = 25; + } + } + else + { + if(wifiRssi > wifiRssiThresh) + { + psTdmaType = 26; + } + else + { + psTdmaType = 25; + } + } + + return psTdmaType; +} + +VOID +halbtc8192e1ant_PsTdmaCheckForPowerSaveState( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bNewPsState + ) +{ + u1Byte lpsMode=0x0; + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U1_LPS_MODE, &lpsMode); + + if(lpsMode) // already under LPS state + { + if(bNewPsState) + { + // keep state under LPS, do nothing. + } + else + { + // will leave LPS state, turn off psTdma first + halbtc8192e1ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 0); + } + } + else // NO PS state + { + if(bNewPsState) + { + // will enter LPS state, turn off psTdma first + halbtc8192e1ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 0); + } + else + { + // keep state under NO PS state, do nothing. + } + } +} + +VOID +halbtc8192e1ant_PowerSaveState( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte psType, + IN u1Byte lpsVal, + IN u1Byte rpwmVal + ) +{ + BOOLEAN bLowPwrDisable=FALSE; + + switch(psType) + { + case BTC_PS_WIFI_NATIVE: + // recover to original 32k low power setting + bLowPwrDisable = FALSE; + pBtCoexist->btc_set(pBtCoexist, BTC_SET_ACT_DISABLE_LOW_POWER, &bLowPwrDisable); + pBtCoexist->btc_set(pBtCoexist, BTC_SET_ACT_NORMAL_LPS, NULL); + break; + case BTC_PS_LPS_ON: + halbtc8192e1ant_PsTdmaCheckForPowerSaveState(pBtCoexist, true); + halbtc8192e1ant_LpsRpwm(pBtCoexist, NORMAL_EXEC, lpsVal, rpwmVal); + // when coex force to enter LPS, do not enter 32k low power. + bLowPwrDisable = true; + pBtCoexist->btc_set(pBtCoexist, BTC_SET_ACT_DISABLE_LOW_POWER, &bLowPwrDisable); + // power save must executed before psTdma. + pBtCoexist->btc_set(pBtCoexist, BTC_SET_ACT_ENTER_LPS, NULL); + break; + case BTC_PS_LPS_OFF: + halbtc8192e1ant_PsTdmaCheckForPowerSaveState(pBtCoexist, FALSE); + pBtCoexist->btc_set(pBtCoexist, BTC_SET_ACT_LEAVE_LPS, NULL); + break; + default: + break; + } +} + + +VOID +halbtc8192e1ant_ActionWifiOnly( + IN PBTC_COEXIST pBtCoexist + ) +{ + halbtc8192e1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 0); + halbtc8192e1ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 9); +} + +VOID +halbtc8192e1ant_MonitorBtEnableDisable( + IN PBTC_COEXIST pBtCoexist + ) +{ + static BOOLEAN bPreBtDisabled=FALSE; + static u4Byte btDisableCnt=0; + BOOLEAN bBtActive=true, bBtDisabled=FALSE; + + // This function check if bt is disabled + + if( pCoexSta->highPriorityTx == 0 && + pCoexSta->highPriorityRx == 0 && + pCoexSta->lowPriorityTx == 0 && + pCoexSta->lowPriorityRx == 0) + { + bBtActive = FALSE; + } + if( pCoexSta->highPriorityTx == 0xffff && + pCoexSta->highPriorityRx == 0xffff && + pCoexSta->lowPriorityTx == 0xffff && + pCoexSta->lowPriorityRx == 0xffff) + { + bBtActive = FALSE; + } + if(bBtActive) + { + btDisableCnt = 0; + bBtDisabled = FALSE; + pBtCoexist->btc_set(pBtCoexist, BTC_SET_BL_BT_DISABLE, &bBtDisabled); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, ("[BTCoex], BT is enabled !!\n")); + } + else + { + btDisableCnt++; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, ("[BTCoex], bt all counters=0, %d times!!\n", + btDisableCnt)); + if(btDisableCnt >= 2) + { + bBtDisabled = true; + pBtCoexist->btc_set(pBtCoexist, BTC_SET_BL_BT_DISABLE, &bBtDisabled); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, ("[BTCoex], BT is disabled !!\n")); + halbtc8192e1ant_ActionWifiOnly(pBtCoexist); + } + } + if(bPreBtDisabled != bBtDisabled) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, ("[BTCoex], BT is from %s to %s!!\n", + (bPreBtDisabled ? "disabled":"enabled"), + (bBtDisabled ? "disabled":"enabled"))); + bPreBtDisabled = bBtDisabled; + if(!bBtDisabled) + { + } + else + { + pBtCoexist->btc_set(pBtCoexist, BTC_SET_ACT_LEAVE_LPS, NULL); + pBtCoexist->btc_set(pBtCoexist, BTC_SET_ACT_NORMAL_LPS, NULL); + } + } +} + +//============================================= +// +// Software Coex Mechanism start +// +//============================================= + +// SCO only or SCO+PAN(HS) +VOID +halbtc8192e1ant_ActionSco( + IN PBTC_COEXIST pBtCoexist + ) +{ + u1Byte wifiRssiState; + u4Byte wifiBw; + + wifiRssiState = halbtc8192e1ant_WifiRssiState(pBtCoexist, 0, 2, 25, 0); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw); + + if(BTC_WIFI_BW_HT40 == wifiBw) + { + // sw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,true,true,FALSE,0x18); + } + else + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,FALSE,true,FALSE,0x18); + } + } + else + { + // sw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,true,true,FALSE,0x18); + } + else + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18); + } + } +} + + +VOID +halbtc8192e1ant_ActionHid( + IN PBTC_COEXIST pBtCoexist + ) +{ + u1Byte wifiRssiState; + u4Byte wifiBw; + + wifiRssiState = halbtc8192e1ant_WifiRssiState(pBtCoexist, 0, 2, 25, 0); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw); + + if(BTC_WIFI_BW_HT40 == wifiBw) + { + // sw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,true,FALSE,FALSE,0x18); + } + else + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18); + } + } + else + { + // sw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,true,true,FALSE,0x18); + } + else + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18); + } + } +} + +//A2DP only / PAN(EDR) only/ A2DP+PAN(HS) +VOID +halbtc8192e1ant_ActionA2dp( + IN PBTC_COEXIST pBtCoexist + ) +{ + u1Byte wifiRssiState; + u4Byte wifiBw; + + wifiRssiState = halbtc8192e1ant_WifiRssiState(pBtCoexist, 0, 2, 25, 0); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw); + + if(BTC_WIFI_BW_HT40 == wifiBw) + { + // sw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,true,true,FALSE,0x18); + } + else + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,FALSE,true,FALSE,0x18); + } + } + else + { + // sw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,true,true,FALSE,0x18); + } + else + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18); + } + } +} + +VOID +halbtc8192e1ant_ActionA2dpPanHs( + IN PBTC_COEXIST pBtCoexist + ) +{ + u1Byte wifiRssiState, btInfoExt; + u4Byte wifiBw; + + btInfoExt = pCoexSta->btInfoExt; + wifiRssiState = halbtc8192e1ant_WifiRssiState(pBtCoexist, 0, 2, 25, 0); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw); + + if(BTC_WIFI_BW_HT40 == wifiBw) + { + // sw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,true,true,FALSE,0x18); + } + else + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,FALSE,true,FALSE,0x18); + } + } + else + { + // sw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,true,true,FALSE,0x18); + } + else + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18); + } + } +} + +VOID +halbtc8192e1ant_ActionPanEdr( + IN PBTC_COEXIST pBtCoexist + ) +{ + u1Byte wifiRssiState; + u4Byte wifiBw; + + wifiRssiState = halbtc8192e1ant_WifiRssiState(pBtCoexist, 0, 2, 25, 0); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw); + + if(BTC_WIFI_BW_HT40 == wifiBw) + { + // sw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,true,true,FALSE,0x18); + } + else + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,FALSE,true,FALSE,0x18); + } + } + else + { + // sw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,true,true,FALSE,0x18); + } + else + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18); + } + } +} + + +//PAN(HS) only +VOID +halbtc8192e1ant_ActionPanHs( + IN PBTC_COEXIST pBtCoexist + ) +{ + u1Byte wifiRssiState; + u4Byte wifiBw; + + wifiRssiState = halbtc8192e1ant_WifiRssiState(pBtCoexist, 0, 2, 25, 0); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw); + + if(BTC_WIFI_BW_HT40 == wifiBw) + { + // sw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,true,true,FALSE,0x18); + } + else + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,FALSE,true,FALSE,0x18); + } + } + else + { + // sw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,true,true,FALSE,0x18); + } + else + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18); + } + } +} + +//PAN(EDR)+A2DP +VOID +halbtc8192e1ant_ActionPanEdrA2dp( + IN PBTC_COEXIST pBtCoexist + ) +{ + u1Byte wifiRssiState, btInfoExt; + u4Byte wifiBw; + + btInfoExt = pCoexSta->btInfoExt; + wifiRssiState = halbtc8192e1ant_WifiRssiState(pBtCoexist, 0, 2, 25, 0); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw); + + if(BTC_WIFI_BW_HT40 == wifiBw) + { + // sw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,true,true,FALSE,0x18); + } + else + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,FALSE,true,FALSE,0x18); + } + } + else + { + // sw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,true,true,FALSE,0x18); + } + else + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18); + } + } +} + +VOID +halbtc8192e1ant_ActionPanEdrHid( + IN PBTC_COEXIST pBtCoexist + ) +{ + u1Byte wifiRssiState; + u4Byte wifiBw; + + wifiRssiState = halbtc8192e1ant_WifiRssiState(pBtCoexist, 0, 2, 25, 0); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw); + + if(BTC_WIFI_BW_HT40 == wifiBw) + { + // sw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,true,true,FALSE,0x18); + } + else + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,FALSE,true,FALSE,0x18); + } + } + else + { + // sw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,true,true,FALSE,0x18); + } + else + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18); + } + } +} + +// HID+A2DP+PAN(EDR) +VOID +halbtc8192e1ant_ActionHidA2dpPanEdr( + IN PBTC_COEXIST pBtCoexist + ) +{ + u1Byte wifiRssiState, btInfoExt; + u4Byte wifiBw; + + btInfoExt = pCoexSta->btInfoExt; + wifiRssiState = halbtc8192e1ant_WifiRssiState(pBtCoexist, 0, 2, 25, 0); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw); + + if(BTC_WIFI_BW_HT40 == wifiBw) + { + // sw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,true,true,FALSE,0x18); + } + else + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,FALSE,true,FALSE,0x18); + } + } + else + { + // sw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,true,true,FALSE,0x18); + } + else + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18); + } + } +} + +VOID +halbtc8192e1ant_ActionHidA2dp( + IN PBTC_COEXIST pBtCoexist + ) +{ + u1Byte wifiRssiState, btInfoExt; + u4Byte wifiBw; + + btInfoExt = pCoexSta->btInfoExt; + wifiRssiState = halbtc8192e1ant_WifiRssiState(pBtCoexist, 0, 2, 25, 0); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw); + + if(BTC_WIFI_BW_HT40 == wifiBw) + { + // sw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,true,true,FALSE,0x18); + } + else + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,FALSE,true,FALSE,0x18); + } + } + else + { + // sw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,true,true,FALSE,0x18); + } + else + { + halbtc8192e1ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18); + } + } +} + +//============================================= +// +// Non-Software Coex Mechanism start +// +//============================================= +VOID +halbtc8192e1ant_ActionBtInquiry( + IN PBTC_COEXIST pBtCoexist + ) +{ + PBTC_BT_LINK_INFO pBtLinkInfo=&pBtCoexist->bt_link_info; + BOOLEAN bWifiConnected=FALSE, bBtHsOn=FALSE; + + // Note: + // Do not do DacSwing here, use original setting. + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_CONNECTED, &bWifiConnected); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_HS_OPERATION, &bBtHsOn); + if(bBtHsOn) + return; + + if(!bWifiConnected) + { + halbtc8192e1ant_PowerSaveState(pBtCoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0); + + halbtc8192e1ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0); + + halbtc8192e1ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 8); + halbtc8192e1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 0); + } + else if( (pBtLinkInfo->bScoExist) || + (pBtLinkInfo->bHidOnly) ) + { + // SCO/HID-only busy + halbtc8192e1ant_PowerSaveState(pBtCoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0); + + halbtc8192e1ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0); + + halbtc8192e1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 32); + halbtc8192e1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 1); + } + else + { + halbtc8192e1ant_PowerSaveState(pBtCoexist, BTC_PS_LPS_ON, 0x50, 0x0); + + halbtc8192e1ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0); + + halbtc8192e1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 30); + halbtc8192e1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 0); + } +} + +VOID +halbtc8192e1ant_ActionBtScoHidOnlyBusy( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte wifiStatus + ) +{ + PBTC_BT_LINK_INFO pBtLinkInfo=&pBtCoexist->bt_link_info; + u1Byte btRssiState=BTC_RSSI_STATE_HIGH; + + if(BT_8192E_1ANT_WIFI_STATUS_NON_CONNECTED_ASSO_AUTH_SCAN == wifiStatus) + { + halbtc8192e1ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0); + halbtc8192e1ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0); + + halbtc8192e1ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 8); + halbtc8192e1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 0); + } + else + { + if(pBtLinkInfo->bHidOnly) + { + halbtc8192e1ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0); + halbtc8192e1ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0); + + halbtc8192e1ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 8); + halbtc8192e1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 2); + } + else + { + // dec bt power for diff level + btRssiState = halbtc8192e1ant_BtRssiState(3, 34, 42); + if( (btRssiState == BTC_RSSI_STATE_LOW) || + (btRssiState == BTC_RSSI_STATE_STAY_LOW) ) + { + halbtc8192e1ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0); + } + else if( (btRssiState == BTC_RSSI_STATE_MEDIUM) || + (btRssiState == BTC_RSSI_STATE_STAY_MEDIUM) ) + { + halbtc8192e1ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2); + } + else if( (btRssiState == BTC_RSSI_STATE_HIGH) || + (btRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8192e1ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 6); + } + + // sw dacSwing + halbtc8192e1ant_DacSwing(pBtCoexist, NORMAL_EXEC, true, 0xc); + + halbtc8192e1ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 0); + halbtc8192e1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 7); + } + } +} + +VOID +halbtc8192e1ant_ActionHs( + IN PBTC_COEXIST pBtCoexist + ) +{ + PBTC_BT_LINK_INFO pBtLinkInfo=&pBtCoexist->bt_link_info; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action for HS!!!\n")); + + halbtc8192e1ant_PowerSaveState(pBtCoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0); + + if(BT_8192E_1ANT_BT_STATUS_NON_CONNECTED_IDLE == pCoexDm->btStatus) + { + // error, should not be here + pCoexDm->errorCondition = 1; + } + else if(BT_8192E_1ANT_BT_STATUS_CONNECTED_IDLE == pCoexDm->btStatus) + { + halbtc8192e1ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0); + halbtc8192e1ant_DacSwing(pBtCoexist, NORMAL_EXEC, true, 6); + + halbtc8192e1ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 10); + halbtc8192e1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 0); + } + else if(BT_8192E_1ANT_BT_STATUS_ACL_BUSY == pCoexDm->btStatus && + !pBtCoexist->bt_link_info.bHidOnly) + { + if(pCoexDm->curSsType == 1) + { + halbtc8192e1ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0); + halbtc8192e1ant_DacSwing(pBtCoexist, NORMAL_EXEC, true, 6); + halbtc8192e1ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 10); + //halbtc8192e1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 38); + halbtc8192e1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 0); + } + } + else + { + halbtc8192e1ant_ActionBtScoHidOnlyBusy(pBtCoexist, + BT_8192E_1ANT_WIFI_STATUS_CONNECTED_BUSY); + } +} + +VOID +halbtc8192e1ant_ActionWifiConnectedBtAclBusy( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte wifiStatus + ) +{ + PBTC_BT_LINK_INFO pBtLinkInfo=&pBtCoexist->bt_link_info; + + if(pBtLinkInfo->bHidOnly) + { + halbtc8192e1ant_ActionBtScoHidOnlyBusy(pBtCoexist, wifiStatus); + pCoexDm->bAutoTdmaAdjust = FALSE; + return; + } + + halbtc8192e1ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0); + halbtc8192e1ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0); + + if( (pBtLinkInfo->bA2dpOnly) || + (pBtLinkInfo->bHidExist&&pBtLinkInfo->bA2dpExist) ) + { + halbtc8192e1ant_TdmaDurationAdjustForAcl(pBtCoexist, wifiStatus); + } + else if( (pBtLinkInfo->bPanOnly) || + (pBtLinkInfo->bHidExist&&pBtLinkInfo->bPanExist) ) + { + halbtc8192e1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 3); + pCoexDm->bAutoTdmaAdjust = FALSE; + } + else + { + if( (BT_8192E_1ANT_WIFI_STATUS_NON_CONNECTED_ASSO_AUTH_SCAN == wifiStatus) || + (BT_8192E_1ANT_WIFI_STATUS_CONNECTED_SCAN == wifiStatus) || + (BT_8192E_1ANT_WIFI_STATUS_CONNECTED_SPECIAL_PKT == wifiStatus) ) + halbtc8192e1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 9); + else + halbtc8192e1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 11); + pCoexDm->bAutoTdmaAdjust = FALSE; + } + + halbtc8192e1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 1); +} + + +VOID +halbtc8192e1ant_ActionWifiNotConnected( + IN PBTC_COEXIST pBtCoexist + ) +{ + // power save state + halbtc8192e1ant_PowerSaveState(pBtCoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0); + + halbtc8192e1ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0); + halbtc8192e1ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0); + + halbtc8192e1ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 8); + halbtc8192e1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 0); +} + +VOID +halbtc8192e1ant_ActionWifiNotConnectedAssoAuthScan( + IN PBTC_COEXIST pBtCoexist + ) +{ + halbtc8192e1ant_PowerSaveState(pBtCoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0); + + halbtc8192e1ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0); + halbtc8192e1ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0); + + halbtc8192e1ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 8); + halbtc8192e1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 0); +} + +VOID +halbtc8192e1ant_ActionWifiConnectedScan( + IN PBTC_COEXIST pBtCoexist + ) +{ + // power save state + if(BT_8192E_1ANT_BT_STATUS_ACL_BUSY == pCoexDm->btStatus && !pBtCoexist->bt_link_info.bHidOnly) + halbtc8192e1ant_PowerSaveState(pBtCoexist, BTC_PS_LPS_ON, 0x50, 0x0); + else + halbtc8192e1ant_PowerSaveState(pBtCoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0); + + if(BT_8192E_1ANT_BT_STATUS_ACL_BUSY == pCoexDm->btStatus) + { + halbtc8192e1ant_ActionWifiConnectedBtAclBusy(pBtCoexist, + BT_8192E_1ANT_WIFI_STATUS_CONNECTED_SCAN); + } + else if( (BT_8192E_1ANT_BT_STATUS_SCO_BUSY == pCoexDm->btStatus) || + (BT_8192E_1ANT_BT_STATUS_ACL_SCO_BUSY == pCoexDm->btStatus) ) + { + halbtc8192e1ant_ActionBtScoHidOnlyBusy(pBtCoexist, + BT_8192E_1ANT_WIFI_STATUS_CONNECTED_SCAN); + } + else + { + halbtc8192e1ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0); + halbtc8192e1ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0); + halbtc8192e1ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 8); + halbtc8192e1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 2); + } +} + + +VOID +halbtc8192e1ant_ActionWifiConnectedSpecialPacket( + IN PBTC_COEXIST pBtCoexist + ) +{ + // power save state + if(BT_8192E_1ANT_BT_STATUS_ACL_BUSY == pCoexDm->btStatus && !pBtCoexist->bt_link_info.bHidOnly) + halbtc8192e1ant_PowerSaveState(pBtCoexist, BTC_PS_LPS_ON, 0x50, 0x0); + else + halbtc8192e1ant_PowerSaveState(pBtCoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0); + + if(BT_8192E_1ANT_BT_STATUS_ACL_BUSY == pCoexDm->btStatus) + { + halbtc8192e1ant_ActionWifiConnectedBtAclBusy(pBtCoexist, + BT_8192E_1ANT_WIFI_STATUS_CONNECTED_SPECIAL_PKT); + } + else + { + halbtc8192e1ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0); + halbtc8192e1ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0); + halbtc8192e1ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 8); + halbtc8192e1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 2); + } +} + +VOID +halbtc8192e1ant_ActionWifiConnected( + IN PBTC_COEXIST pBtCoexist + ) +{ + BOOLEAN bWifiConnected=FALSE, bWifiBusy=FALSE; + BOOLEAN bScan=FALSE, bLink=FALSE, bRoam=FALSE; + BOOLEAN bUnder4way=FALSE; + u4Byte wifiBw; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], CoexForWifiConnect()===>\n")); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_CONNECTED, &bWifiConnected); + if(!bWifiConnected) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], CoexForWifiConnect(), return for wifi not connected<===\n")); + return; + } + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_4_WAY_PROGRESS, &bUnder4way); + if(bUnder4way) + { + halbtc8192e1ant_ActionWifiConnectedSpecialPacket(pBtCoexist); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], CoexForWifiConnect(), return for wifi is under 4way<===\n")); + return; + } + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_SCAN, &bScan); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_LINK, &bLink); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_ROAM, &bRoam); + if(bScan || bLink || bRoam) + { + halbtc8192e1ant_ActionWifiConnectedScan(pBtCoexist); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], CoexForWifiConnect(), return for wifi is under scan<===\n")); + return; + } + + // power save state + if(BT_8192E_1ANT_BT_STATUS_ACL_BUSY == pCoexDm->btStatus && !pBtCoexist->bt_link_info.bHidOnly) + halbtc8192e1ant_PowerSaveState(pBtCoexist, BTC_PS_LPS_ON, 0x50, 0x0); + else + halbtc8192e1ant_PowerSaveState(pBtCoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_BUSY, &bWifiBusy); + if(!bWifiBusy) + { + if(BT_8192E_1ANT_BT_STATUS_ACL_BUSY == pCoexDm->btStatus) + { + halbtc8192e1ant_ActionWifiConnectedBtAclBusy(pBtCoexist, + BT_8192E_1ANT_WIFI_STATUS_CONNECTED_IDLE); + } + else if( (BT_8192E_1ANT_BT_STATUS_SCO_BUSY == pCoexDm->btStatus) || + (BT_8192E_1ANT_BT_STATUS_ACL_SCO_BUSY == pCoexDm->btStatus) ) + { + halbtc8192e1ant_ActionBtScoHidOnlyBusy(pBtCoexist, + BT_8192E_1ANT_WIFI_STATUS_CONNECTED_IDLE); + } + else + { + halbtc8192e1ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0); + halbtc8192e1ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0); + halbtc8192e1ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 8); + halbtc8192e1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 2); + } + } + else + { + if(BT_8192E_1ANT_BT_STATUS_NON_CONNECTED_IDLE == pCoexDm->btStatus) + { + halbtc8192e1ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0); + halbtc8192e1ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0); + halbtc8192e1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 5); + halbtc8192e1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 2); + } + else if(BT_8192E_1ANT_BT_STATUS_CONNECTED_IDLE == pCoexDm->btStatus) + { + halbtc8192e1ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0); + halbtc8192e1ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0); + halbtc8192e1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 5); + halbtc8192e1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 2); + } + else if(BT_8192E_1ANT_BT_STATUS_ACL_BUSY == pCoexDm->btStatus) + { + halbtc8192e1ant_ActionWifiConnectedBtAclBusy(pBtCoexist, + BT_8192E_1ANT_WIFI_STATUS_CONNECTED_BUSY); + } + else if( (BT_8192E_1ANT_BT_STATUS_SCO_BUSY == pCoexDm->btStatus) || + (BT_8192E_1ANT_BT_STATUS_ACL_SCO_BUSY == pCoexDm->btStatus) ) + { + halbtc8192e1ant_ActionBtScoHidOnlyBusy(pBtCoexist, + BT_8192E_1ANT_WIFI_STATUS_CONNECTED_BUSY); + } + else + { + halbtc8192e1ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0); + halbtc8192e1ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0); + halbtc8192e1ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 8); + halbtc8192e1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 2); + } + } +} + +VOID +halbtc8192e1ant_RunSwCoexistMechanism( + IN PBTC_COEXIST pBtCoexist + ) +{ + BOOLEAN bWifiUnder5G=FALSE, bWifiBusy=FALSE, bWifiConnected=FALSE; + u1Byte btInfoOriginal=0, btRetryCnt=0; + u1Byte algorithm=0; + + return; + + algorithm = halbtc8192e1ant_ActionAlgorithm(pBtCoexist); + pCoexDm->curAlgorithm = algorithm; + + if(halbtc8192e1ant_IsCommonAction(pBtCoexist)) + { + } + else + { + switch(pCoexDm->curAlgorithm) + { + case BT_8192E_1ANT_COEX_ALGO_SCO: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action algorithm = SCO.\n")); + halbtc8192e1ant_ActionSco(pBtCoexist); + break; + case BT_8192E_1ANT_COEX_ALGO_HID: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action algorithm = HID.\n")); + halbtc8192e1ant_ActionHid(pBtCoexist); + break; + case BT_8192E_1ANT_COEX_ALGO_A2DP: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action algorithm = A2DP.\n")); + halbtc8192e1ant_ActionA2dp(pBtCoexist); + break; + case BT_8192E_1ANT_COEX_ALGO_A2DP_PANHS: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action algorithm = A2DP+PAN(HS).\n")); + halbtc8192e1ant_ActionA2dpPanHs(pBtCoexist); + break; + case BT_8192E_1ANT_COEX_ALGO_PANEDR: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action algorithm = PAN(EDR).\n")); + halbtc8192e1ant_ActionPanEdr(pBtCoexist); + break; + case BT_8192E_1ANT_COEX_ALGO_PANHS: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action algorithm = HS mode.\n")); + halbtc8192e1ant_ActionPanHs(pBtCoexist); + break; + case BT_8192E_1ANT_COEX_ALGO_PANEDR_A2DP: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action algorithm = PAN+A2DP.\n")); + halbtc8192e1ant_ActionPanEdrA2dp(pBtCoexist); + break; + case BT_8192E_1ANT_COEX_ALGO_PANEDR_HID: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action algorithm = PAN(EDR)+HID.\n")); + halbtc8192e1ant_ActionPanEdrHid(pBtCoexist); + break; + case BT_8192E_1ANT_COEX_ALGO_HID_A2DP_PANEDR: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action algorithm = HID+A2DP+PAN.\n")); + halbtc8192e1ant_ActionHidA2dpPanEdr(pBtCoexist); + break; + case BT_8192E_1ANT_COEX_ALGO_HID_A2DP: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action algorithm = HID+A2DP.\n")); + halbtc8192e1ant_ActionHidA2dp(pBtCoexist); + break; + default: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action algorithm = coexist All Off!!\n")); + halbtc8192e1ant_CoexAllOff(pBtCoexist); + break; + } + pCoexDm->preAlgorithm = pCoexDm->curAlgorithm; + } +} + +VOID +halbtc8192e1ant_RunCoexistMechanism( + IN PBTC_COEXIST pBtCoexist + ) +{ + PBTC_BT_LINK_INFO pBtLinkInfo=&pBtCoexist->bt_link_info; + BOOLEAN bWifiConnected=FALSE, bBtHsOn=FALSE; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], RunCoexistMechanism()===>\n")); + + if(pBtCoexist->manual_control) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], RunCoexistMechanism(), return for Manual CTRL <===\n")); + return; + } + + if(pBtCoexist->bStopCoexDm) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], RunCoexistMechanism(), return for Stop Coex DM <===\n")); + return; + } + + if(pCoexSta->bUnderIps) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], wifi is under IPS !!!\n")); + return; + } + + halbtc8192e1ant_RunSwCoexistMechanism(pBtCoexist); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_HS_OPERATION, &bBtHsOn); + if(pCoexSta->bC2hBtInquiryPage) + { + halbtc8192e1ant_ActionBtInquiry(pBtCoexist); + return; + } + + // 1ss or 2ss + if(pBtLinkInfo->bScoExist) + { + halbtc8192e1ant_SwitchSsType(pBtCoexist, NORMAL_EXEC, 1); + } + else if(bBtHsOn) + { + if(pBtLinkInfo->bHidOnly) + halbtc8192e1ant_SwitchSsType(pBtCoexist, NORMAL_EXEC, 2); + else + halbtc8192e1ant_SwitchSsType(pBtCoexist, NORMAL_EXEC, 1); + } + else + halbtc8192e1ant_SwitchSsType(pBtCoexist, NORMAL_EXEC, 2); + + if(bBtHsOn) + { + halbtc8192e1ant_ActionHs(pBtCoexist); + return; + } + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_CONNECTED, &bWifiConnected); + if(!bWifiConnected) + { + BOOLEAN bScan=FALSE, bLink=FALSE, bRoam=FALSE; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], wifi is non connected-idle !!!\n")); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_SCAN, &bScan); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_LINK, &bLink); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_ROAM, &bRoam); + + if(bScan || bLink || bRoam) + halbtc8192e1ant_ActionWifiNotConnectedAssoAuthScan(pBtCoexist); + else + halbtc8192e1ant_ActionWifiNotConnected(pBtCoexist); + } + else + { + halbtc8192e1ant_ActionWifiConnected(pBtCoexist); + } +} + +VOID +halbtc8192e1ant_InitCoexDm( + IN PBTC_COEXIST pBtCoexist + ) +{ + // force to reset coex mechanism + halbtc8192e1ant_FwDacSwingLvl(pBtCoexist, FORCE_EXEC, 6); + halbtc8192e1ant_DecBtPwr(pBtCoexist, FORCE_EXEC, 0); + + // sw all off + halbtc8192e1ant_SwMechanism1(pBtCoexist,FALSE,FALSE,FALSE,FALSE); + halbtc8192e1ant_SwMechanism2(pBtCoexist,FALSE,FALSE,FALSE,0x18); + + halbtc8192e1ant_SwitchSsType(pBtCoexist, FORCE_EXEC, 2); + + halbtc8192e1ant_PsTdma(pBtCoexist, FORCE_EXEC, FALSE, 8); + halbtc8192e1ant_CoexTableWithType(pBtCoexist, FORCE_EXEC, 0); +} + +//============================================================ +// work around function start with wa_halbtc8192e1ant_ +//============================================================ +//============================================================ +// extern function start with EXhalbtc8192e1ant_ +//============================================================ +VOID +EXhalbtc8192e1ant_InitHwConfig( + IN PBTC_COEXIST pBtCoexist + ) +{ + u4Byte u4Tmp=0; + u16 u2Tmp=0; + u1Byte u1Tmp=0; + + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, ("[BTCoex], 1Ant Init HW Config!!\n")); + + // backup rf 0x1e value + pCoexDm->btRf0x1eBackup = + pBtCoexist->btc_get_rf_reg(pBtCoexist, BTC_RF_A, 0x1e, 0xfffff); + + // antenna sw ctrl to bt + pBtCoexist->btc_write_1byte(pBtCoexist, 0x4f, 0x6); + pBtCoexist->btc_write_1byte(pBtCoexist, 0x944, 0x24); + pBtCoexist->btc_write_4byte(pBtCoexist, 0x930, 0x700700); + pBtCoexist->btc_write_1byte(pBtCoexist, 0x92c, 0x20); + if(pBtCoexist->chipInterface == BTC_INTF_USB) + pBtCoexist->btc_write_4byte(pBtCoexist, 0x64, 0x30430004); + else + pBtCoexist->btc_write_4byte(pBtCoexist, 0x64, 0x30030004); + + halbtc8192e1ant_CoexTableWithType(pBtCoexist, FORCE_EXEC, 0); + + // antenna switch control parameter + pBtCoexist->btc_write_4byte(pBtCoexist, 0x858, 0x55555555); + + // coex parameters + pBtCoexist->btc_write_1byte(pBtCoexist, 0x778, 0x1); + // 0x790[5:0]=0x5 + u1Tmp = pBtCoexist->btc_read_1byte(pBtCoexist, 0x790); + u1Tmp &= 0xc0; + u1Tmp |= 0x5; + pBtCoexist->btc_write_1byte(pBtCoexist, 0x790, u1Tmp); + + // enable counter statistics + pBtCoexist->btc_write_1byte(pBtCoexist, 0x76e, 0x4); + + // enable PTA + pBtCoexist->btc_write_1byte(pBtCoexist, 0x40, 0x20); + // enable mailbox interface + u2Tmp = pBtCoexist->btc_read_2byte(pBtCoexist, 0x40); + u2Tmp |= BIT9; + pBtCoexist->btc_write_2byte(pBtCoexist, 0x40, u2Tmp); + + // enable PTA I2C mailbox + u1Tmp = pBtCoexist->btc_read_1byte(pBtCoexist, 0x101); + u1Tmp |= BIT4; + pBtCoexist->btc_write_1byte(pBtCoexist, 0x101, u1Tmp); + + // enable bt clock when wifi is disabled. + u1Tmp = pBtCoexist->btc_read_1byte(pBtCoexist, 0x93); + u1Tmp |= BIT0; + pBtCoexist->btc_write_1byte(pBtCoexist, 0x93, u1Tmp); + // enable bt clock when suspend. + u1Tmp = pBtCoexist->btc_read_1byte(pBtCoexist, 0x7); + u1Tmp |= BIT0; + pBtCoexist->btc_write_1byte(pBtCoexist, 0x7, u1Tmp); +} + +VOID +EXhalbtc8192e1ant_InitCoexDm( + IN PBTC_COEXIST pBtCoexist + ) +{ + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, ("[BTCoex], Coex Mechanism Init!!\n")); + + pBtCoexist->bStopCoexDm = FALSE; + + halbtc8192e1ant_InitCoexDm(pBtCoexist); +} + +VOID +EXhalbtc8192e1ant_DisplayCoexInfo( + IN PBTC_COEXIST pBtCoexist + ) +{ + struct btc_board_info * pBoardInfo=&pBtCoexist->board_info; + PBTC_STACK_INFO pStackInfo=&pBtCoexist->stack_info; + PBTC_BT_LINK_INFO pBtLinkInfo=&pBtCoexist->bt_link_info; + pu1Byte cliBuf=pBtCoexist->cli_buf; + u1Byte u1Tmp[4], i, btInfoExt, psTdmaCase=0; + u4Byte u4Tmp[4]; + BOOLEAN bRoam=FALSE, bScan=FALSE, bLink=FALSE, bWifiUnder5G=FALSE; + BOOLEAN bBtHsOn=FALSE, bWifiBusy=FALSE; + s4Byte wifiRssi=0, btHsRssi=0; + u4Byte wifiBw, wifiTrafficDir; + u1Byte wifiDot11Chnl, wifiHsChnl; + u4Byte fwVer=0, btPatchVer=0; + + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n ============[BT Coexist info]============"); + CL_PRINTF(cliBuf); + + if(pBtCoexist->manual_control) + { + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n ============[Under Manual Control]============"); + CL_PRINTF(cliBuf); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n =========================================="); + CL_PRINTF(cliBuf); + } + if(pBtCoexist->bStopCoexDm) + { + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n ============[Coex is STOPPED]============"); + CL_PRINTF(cliBuf); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n =========================================="); + CL_PRINTF(cliBuf); + } + + if(!pBoardInfo->bt_exist) + { + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n BT not exists !!!"); + CL_PRINTF(cliBuf); + return; + } + + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d ", "Ant PG number/ Ant mechanism:", \ + pBoardInfo->pg_ant_num, pBoardInfo->btdm_ant_num); + CL_PRINTF(cliBuf); + + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %s / %d", "BT stack/ hci ext ver", \ + ((pStackInfo->bProfileNotified)? "Yes":"No"), pStackInfo->hciVersion); + CL_PRINTF(cliBuf); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U4_BT_PATCH_VER, &btPatchVer); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U4_WIFI_FW_VER, &fwVer); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d_%d/ 0x%x/ 0x%x(%d)", "CoexVer/ FwVer/ PatchVer", \ + GLCoexVerDate8192e1Ant, GLCoexVer8192e1Ant, fwVer, btPatchVer, btPatchVer); + CL_PRINTF(cliBuf); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_HS_OPERATION, &bBtHsOn); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U1_WIFI_DOT11_CHNL, &wifiDot11Chnl); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U1_WIFI_HS_CHNL, &wifiHsChnl); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d / %d(%d)", "Dot11 channel / HsChnl(HsMode)", \ + wifiDot11Chnl, wifiHsChnl, bBtHsOn); + CL_PRINTF(cliBuf); + + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %02x %02x %02x ", "H2C Wifi inform bt chnl Info", \ + pCoexDm->wifiChnlInfo[0], pCoexDm->wifiChnlInfo[1], + pCoexDm->wifiChnlInfo[2]); + CL_PRINTF(cliBuf); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_S4_WIFI_RSSI, &wifiRssi); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_S4_HS_RSSI, &btHsRssi); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d", "Wifi rssi/ HS rssi", \ + wifiRssi, btHsRssi); + CL_PRINTF(cliBuf); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_SCAN, &bScan); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_LINK, &bLink); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_ROAM, &bRoam); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d/ %d ", "Wifi bLink/ bRoam/ bScan", \ + bLink, bRoam, bScan); + CL_PRINTF(cliBuf); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_UNDER_5G, &bWifiUnder5G); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_BUSY, &bWifiBusy); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U4_WIFI_TRAFFIC_DIRECTION, &wifiTrafficDir); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %s / %s/ %s ", "Wifi status", \ + (bWifiUnder5G? "5G":"2.4G"), + ((BTC_WIFI_BW_LEGACY==wifiBw)? "Legacy": (((BTC_WIFI_BW_HT40==wifiBw)? "HT40":"HT20"))), + ((!bWifiBusy)? "idle": ((BTC_WIFI_TRAFFIC_TX==wifiTrafficDir)? "uplink":"downlink"))); + CL_PRINTF(cliBuf); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = [%s/ %d/ %d] ", "BT [status/ rssi/ retryCnt]", \ + ((pBtCoexist->btInfo.bBtDisabled)? ("disabled"): ((pCoexSta->bC2hBtInquiryPage)?("inquiry/page scan"):((BT_8192E_1ANT_BT_STATUS_NON_CONNECTED_IDLE == pCoexDm->btStatus)? "non-connected idle": + ( (BT_8192E_1ANT_BT_STATUS_CONNECTED_IDLE == pCoexDm->btStatus)? "connected-idle":"busy")))), + pCoexSta->btRssi, pCoexSta->btRetryCnt); + CL_PRINTF(cliBuf); + + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d / %d / %d / %d", "SCO/HID/PAN/A2DP", \ + pBtLinkInfo->bScoExist, pBtLinkInfo->bHidExist, pBtLinkInfo->bPanExist, pBtLinkInfo->bA2dpExist); + CL_PRINTF(cliBuf); + pBtCoexist->btc_disp_dbg_msg(pBtCoexist, BTC_DBG_DISP_BT_LINK_INFO); + + btInfoExt = pCoexSta->btInfoExt; + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %s", "BT Info A2DP rate", \ + (btInfoExt&BIT0)? "Basic rate":"EDR rate"); + CL_PRINTF(cliBuf); + + for(i=0; ibtInfoC2hCnt[i]) + { + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %02x %02x %02x %02x %02x %02x %02x(%d)", GLBtInfoSrc8192e1Ant[i], \ + pCoexSta->btInfoC2h[i][0], pCoexSta->btInfoC2h[i][1], + pCoexSta->btInfoC2h[i][2], pCoexSta->btInfoC2h[i][3], + pCoexSta->btInfoC2h[i][4], pCoexSta->btInfoC2h[i][5], + pCoexSta->btInfoC2h[i][6], pCoexSta->btInfoC2hCnt[i]); + CL_PRINTF(cliBuf); + } + } + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %s/%s, (0x%x/0x%x)", "PS state, IPS/LPS, (lps/rpwm)", \ + ((pCoexSta->bUnderIps? "IPS ON":"IPS OFF")), + ((pCoexSta->bUnderLps? "LPS ON":"LPS OFF")), + pBtCoexist->btInfo.lps1Ant, + pBtCoexist->btInfo.rpwm_1ant); + CL_PRINTF(cliBuf); + pBtCoexist->btc_disp_dbg_msg(pBtCoexist, BTC_DBG_DISP_FW_PWR_MODE_CMD); + + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x ", "SS Type", \ + pCoexDm->curSsType); + CL_PRINTF(cliBuf); + + if(!pBtCoexist->manual_control) + { + // Sw mechanism + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s", "============[Sw mechanism]============"); + CL_PRINTF(cliBuf); + + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d/ %d/ %d ", "SM1[ShRf/ LpRA/ LimDig/ btLna]", \ + pCoexDm->bCurRfRxLpfShrink, pCoexDm->bCurLowPenaltyRa, pCoexDm->limited_dig, pCoexDm->bCurBtLnaConstrain); + CL_PRINTF(cliBuf); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d/ %d(0x%x) ", "SM2[AgcT/ AdcB/ SwDacSwing(lvl)]", \ + pCoexDm->bCurAgcTableEn, pCoexDm->bCurAdcBackOff, pCoexDm->bCurDacSwingOn, pCoexDm->curDacSwingLvl); + CL_PRINTF(cliBuf); + + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %s/ %s/ %d ", "DelBA/ BtCtrlAgg/ AggSize", \ + (pBtCoexist->btInfo.reject_agg_pkt? "Yes":"No"), (pBtCoexist->btInfo.b_bt_ctrl_agg_buf_size? "Yes":"No"), + pBtCoexist->btInfo.aggBufSize); + CL_PRINTF(cliBuf); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x ", "Rate Mask", \ + pBtCoexist->btInfo.ra_mask); + CL_PRINTF(cliBuf); + + // Fw mechanism + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s", "============[Fw mechanism]============"); + CL_PRINTF(cliBuf); + + psTdmaCase = pCoexDm->curPsTdma; + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %02x %02x %02x %02x %02x case-%d (auto:%d)", "PS TDMA", \ + pCoexDm->psTdmaPara[0], pCoexDm->psTdmaPara[1], + pCoexDm->psTdmaPara[2], pCoexDm->psTdmaPara[3], + pCoexDm->psTdmaPara[4], psTdmaCase, pCoexDm->bAutoTdmaAdjust); + CL_PRINTF(cliBuf); + + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x ", "Latest error condition(should be 0)", \ + pCoexDm->errorCondition); + CL_PRINTF(cliBuf); + + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d ", "DecBtPwrLvl/ IgnWlanAct", \ + pCoexDm->curBtDecPwrLvl, pCoexDm->bCurIgnoreWlanAct); + CL_PRINTF(cliBuf); + } + + // Hw setting + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s", "============[Hw setting]============"); + CL_PRINTF(cliBuf); + + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x", "RF-A, 0x1e initVal", \ + pCoexDm->btRf0x1eBackup); + CL_PRINTF(cliBuf); + + u4Tmp[0] = pBtCoexist->btc_read_4byte(pBtCoexist, 0xc04); + u4Tmp[1] = pBtCoexist->btc_read_4byte(pBtCoexist, 0xd04); + u4Tmp[2] = pBtCoexist->btc_read_4byte(pBtCoexist, 0x90c); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x/ 0x%x", "0xc04/ 0xd04/ 0x90c", \ + u4Tmp[0], u4Tmp[1], u4Tmp[2]); + CL_PRINTF(cliBuf); + + u1Tmp[0] = pBtCoexist->btc_read_1byte(pBtCoexist, 0x778); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x", "0x778", \ + u1Tmp[0]); + CL_PRINTF(cliBuf); + + u1Tmp[0] = pBtCoexist->btc_read_1byte(pBtCoexist, 0x92c); + u4Tmp[0] = pBtCoexist->btc_read_4byte(pBtCoexist, 0x930); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x", "0x92c/ 0x930", \ + (u1Tmp[0]), u4Tmp[0]); + CL_PRINTF(cliBuf); + + u1Tmp[0] = pBtCoexist->btc_read_1byte(pBtCoexist, 0x40); + u1Tmp[1] = pBtCoexist->btc_read_1byte(pBtCoexist, 0x4f); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x", "0x40/ 0x4f", \ + u1Tmp[0], u1Tmp[1]); + CL_PRINTF(cliBuf); + + u4Tmp[0] = pBtCoexist->btc_read_4byte(pBtCoexist, 0x550); + u1Tmp[0] = pBtCoexist->btc_read_1byte(pBtCoexist, 0x522); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x", "0x550(bcn ctrl)/0x522", \ + u4Tmp[0], u1Tmp[0]); + CL_PRINTF(cliBuf); + + u4Tmp[0] = pBtCoexist->btc_read_4byte(pBtCoexist, 0xc50); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x", "0xc50(dig)", \ + u4Tmp[0]); + CL_PRINTF(cliBuf); + + u4Tmp[0] = pBtCoexist->btc_read_4byte(pBtCoexist, 0x6c0); + u4Tmp[1] = pBtCoexist->btc_read_4byte(pBtCoexist, 0x6c4); + u4Tmp[2] = pBtCoexist->btc_read_4byte(pBtCoexist, 0x6c8); + u1Tmp[0] = pBtCoexist->btc_read_1byte(pBtCoexist, 0x6cc); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x/ 0x%x/ 0x%x", "0x6c0/0x6c4/0x6c8/0x6cc(coexTable)", \ + u4Tmp[0], u4Tmp[1], u4Tmp[2], u1Tmp[0]); + CL_PRINTF(cliBuf); + + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d", "0x770(hp rx[31:16]/tx[15:0])", \ + pCoexSta->highPriorityRx, pCoexSta->highPriorityTx); + CL_PRINTF(cliBuf); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d", "0x774(lp rx[31:16]/tx[15:0])", \ + pCoexSta->lowPriorityRx, pCoexSta->lowPriorityTx); + CL_PRINTF(cliBuf); +#if(BT_AUTO_REPORT_ONLY_8192E_1ANT == 1) + halbtc8192e1ant_MonitorBtCtr(pBtCoexist); +#endif + + pBtCoexist->btc_disp_dbg_msg(pBtCoexist, BTC_DBG_DISP_COEX_STATISTICS); +} + + +VOID +EXhalbtc8192e1ant_IpsNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ) +{ + u4Byte u4Tmp=0; + + if(pBtCoexist->manual_control || pBtCoexist->bStopCoexDm) + return; + + if(BTC_IPS_ENTER == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], IPS ENTER notify\n")); + pCoexSta->bUnderIps = true; + halbtc8192e1ant_CoexAllOff(pBtCoexist); + } + else if(BTC_IPS_LEAVE == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], IPS LEAVE notify\n")); + pCoexSta->bUnderIps = FALSE; + } +} + +VOID +EXhalbtc8192e1ant_LpsNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ) +{ + if(pBtCoexist->manual_control || pBtCoexist->bStopCoexDm) + return; + + if(BTC_LPS_ENABLE == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], LPS ENABLE notify\n")); + pCoexSta->bUnderLps = true; + } + else if(BTC_LPS_DISABLE == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], LPS DISABLE notify\n")); + pCoexSta->bUnderLps = FALSE; + } +} + +VOID +EXhalbtc8192e1ant_ScanNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ) +{ + BOOLEAN bWifiConnected=FALSE, bBtHsOn=FALSE; + + if(pBtCoexist->manual_control || + pBtCoexist->bStopCoexDm || + pBtCoexist->btInfo.bBtDisabled ) + return; + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_HS_OPERATION, &bBtHsOn); + if(pCoexSta->bC2hBtInquiryPage) + { + halbtc8192e1ant_ActionBtInquiry(pBtCoexist); + return; + } + else if(bBtHsOn) + { + halbtc8192e1ant_ActionHs(pBtCoexist); + return; + } + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_CONNECTED, &bWifiConnected); + if(BTC_SCAN_START == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], SCAN START notify\n")); + if(!bWifiConnected) // non-connected scan + { + halbtc8192e1ant_ActionWifiNotConnectedAssoAuthScan(pBtCoexist); + } + else // wifi is connected + { + halbtc8192e1ant_ActionWifiConnectedScan(pBtCoexist); + } + } + else if(BTC_SCAN_FINISH == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], SCAN FINISH notify\n")); + if(!bWifiConnected) // non-connected scan + { + halbtc8192e1ant_ActionWifiNotConnected(pBtCoexist); + } + else + { + halbtc8192e1ant_ActionWifiConnected(pBtCoexist); + } + } +} + +VOID +EXhalbtc8192e1ant_ConnectNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ) +{ + BOOLEAN bWifiConnected=FALSE, bBtHsOn=FALSE; + + if(pBtCoexist->manual_control || + pBtCoexist->bStopCoexDm || + pBtCoexist->btInfo.bBtDisabled ) + return; + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_HS_OPERATION, &bBtHsOn); + if(pCoexSta->bC2hBtInquiryPage) + { + halbtc8192e1ant_ActionBtInquiry(pBtCoexist); + return; + } + else if(bBtHsOn) + { + halbtc8192e1ant_ActionHs(pBtCoexist); + return; + } + + if(BTC_ASSOCIATE_START == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], CONNECT START notify\n")); + halbtc8192e1ant_ActionWifiNotConnectedAssoAuthScan(pBtCoexist); + } + else if(BTC_ASSOCIATE_FINISH == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], CONNECT FINISH notify\n")); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_CONNECTED, &bWifiConnected); + if(!bWifiConnected) // non-connected scan + { + halbtc8192e1ant_ActionWifiNotConnected(pBtCoexist); + } + else + { + halbtc8192e1ant_ActionWifiConnected(pBtCoexist); + } + } +} + +VOID +EXhalbtc8192e1ant_MediaStatusNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ) +{ + u1Byte H2C_Parameter[3] ={0}; + u4Byte wifiBw; + u1Byte wifiCentralChnl; + + if(pBtCoexist->manual_control || + pBtCoexist->bStopCoexDm || + pBtCoexist->btInfo.bBtDisabled ) + return; + + if(BTC_MEDIA_CONNECT == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], MEDIA connect notify\n")); + } + else + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], MEDIA disconnect notify\n")); + } + + // only 2.4G we need to inform bt the chnl mask + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U1_WIFI_CENTRAL_CHNL, &wifiCentralChnl); + if( (BTC_MEDIA_CONNECT == type) && + (wifiCentralChnl <= 14) ) + { + H2C_Parameter[0] = 0x1; + H2C_Parameter[1] = wifiCentralChnl; + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw); + if(BTC_WIFI_BW_HT40 == wifiBw) + H2C_Parameter[2] = 0x30; + else + H2C_Parameter[2] = 0x20; + } + + pCoexDm->wifiChnlInfo[0] = H2C_Parameter[0]; + pCoexDm->wifiChnlInfo[1] = H2C_Parameter[1]; + pCoexDm->wifiChnlInfo[2] = H2C_Parameter[2]; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, ("[BTCoex], FW write 0x66=0x%x\n", + H2C_Parameter[0]<<16|H2C_Parameter[1]<<8|H2C_Parameter[2])); + + pBtCoexist->btc_fill_h2c(pBtCoexist, 0x66, 3, H2C_Parameter); +} + +VOID +EXhalbtc8192e1ant_SpecialPacketNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ) +{ + BOOLEAN bBtHsOn=FALSE; + + if(pBtCoexist->manual_control || + pBtCoexist->bStopCoexDm || + pBtCoexist->btInfo.bBtDisabled ) + return; + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_HS_OPERATION, &bBtHsOn); + if(pCoexSta->bC2hBtInquiryPage) + { + halbtc8192e1ant_ActionBtInquiry(pBtCoexist); + return; + } + else if(bBtHsOn) + { + halbtc8192e1ant_ActionHs(pBtCoexist); + return; + } + + if( BTC_PACKET_DHCP == type || + BTC_PACKET_EAPOL == type ) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], special Packet(%d) notify\n", type)); + halbtc8192e1ant_ActionWifiConnectedSpecialPacket(pBtCoexist); + } +} + +VOID +EXhalbtc8192e1ant_BtInfoNotify( + IN PBTC_COEXIST pBtCoexist, + IN pu1Byte tmpBuf, + IN u1Byte length + ) +{ + PBTC_BT_LINK_INFO pBtLinkInfo=&pBtCoexist->bt_link_info; + u1Byte btInfo=0; + u1Byte i, rspSource=0; + static u4Byte setBtPsdMode=0; + BOOLEAN bBtBusy=FALSE, limited_dig=FALSE; + BOOLEAN bWifiConnected=FALSE; + BOOLEAN b_bt_ctrl_agg_buf_size=FALSE; + + pCoexSta->bC2hBtInfoReqSent = FALSE; + + rspSource = tmpBuf[0]&0xf; + if(rspSource >= BT_INFO_SRC_8192E_1ANT_MAX) + rspSource = BT_INFO_SRC_8192E_1ANT_WIFI_FW; + pCoexSta->btInfoC2hCnt[rspSource]++; + + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], Bt info[%d], length=%d, hex data=[", rspSource, length)); + for(i=0; ibtInfoC2h[rspSource][i] = tmpBuf[i]; + if(i == 1) + btInfo = tmpBuf[i]; + if(i == length-1) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("0x%02x]\n", tmpBuf[i])); + } + else + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("0x%02x, ", tmpBuf[i])); + } + } + + if(pBtCoexist->btInfo.bBtDisabled) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], BtInfoNotify(), return for BT is disabled <===\n")); + return; + } + + if(pBtCoexist->manual_control) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], BtInfoNotify(), return for Manual CTRL<===\n")); + return; + } + if(pBtCoexist->bStopCoexDm) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], BtInfoNotify(), return for Coex STOPPED!!<===\n")); + return; + } + + if(BT_INFO_SRC_8192E_1ANT_WIFI_FW != rspSource) + { + pCoexSta->btRetryCnt = // [3:0] + pCoexSta->btInfoC2h[rspSource][2]&0xf; + + pCoexSta->btRssi = + pCoexSta->btInfoC2h[rspSource][3]*2+10; + + pCoexSta->btInfoExt = + pCoexSta->btInfoC2h[rspSource][4]; + + // Here we need to resend some wifi info to BT + // because bt is reset and loss of the info. + if( (pCoexSta->btInfoExt & BIT1) ) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], BT ext info bit1 check, send wifi BW&Chnl to BT!!\n")); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_CONNECTED, &bWifiConnected); + if(bWifiConnected) + { + EXhalbtc8192e1ant_MediaStatusNotify(pBtCoexist, BTC_MEDIA_CONNECT); + } + else + { + EXhalbtc8192e1ant_MediaStatusNotify(pBtCoexist, BTC_MEDIA_DISCONNECT); + } + + setBtPsdMode = 0; + } + + // test-chip bt patch only rsp the status for BT_RSP, + // so temporary we consider the following only under BT_RSP + if(BT_INFO_SRC_8192E_1ANT_BT_RSP == rspSource) + { + if( (pCoexSta->btInfoExt & BIT3) ) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], BT ext info bit3 check, set BT NOT to ignore Wlan active!!\n")); + halbtc8192e1ant_IgnoreWlanAct(pBtCoexist, FORCE_EXEC, FALSE); + } + else + { + // BT already NOT ignore Wlan active, do nothing here. + } +#if(BT_AUTO_REPORT_ONLY_8192E_1ANT == 0) + if( (pCoexSta->btInfoExt & BIT4) ) + { + // BT auto report already enabled, do nothing + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], BT ext info bit4 check, set BT to enable Auto Report!!\n")); + halbtc8192e1ant_BtAutoReport(pBtCoexist, FORCE_EXEC, true); + } +#endif + } + } + + // check BIT2 first ==> check if bt is under inquiry or page scan + if(btInfo & BT_INFO_8192E_1ANT_B_INQ_PAGE) + pCoexSta->bC2hBtInquiryPage = true; + else + pCoexSta->bC2hBtInquiryPage = FALSE; + + // set link exist status + if(!(btInfo&BT_INFO_8192E_1ANT_B_CONNECTION)) + { + pCoexSta->bBtLinkExist = FALSE; + pCoexSta->bPanExist = FALSE; + pCoexSta->bA2dpExist = FALSE; + pCoexSta->bHidExist = FALSE; + pCoexSta->bScoExist = FALSE; + } + else // connection exists + { + pCoexSta->bBtLinkExist = true; + if(btInfo & BT_INFO_8192E_1ANT_B_FTP) + pCoexSta->bPanExist = true; + else + pCoexSta->bPanExist = FALSE; + if(btInfo & BT_INFO_8192E_1ANT_B_A2DP) + pCoexSta->bA2dpExist = true; + else + pCoexSta->bA2dpExist = FALSE; + if(btInfo & BT_INFO_8192E_1ANT_B_HID) + pCoexSta->bHidExist = true; + else + pCoexSta->bHidExist = FALSE; + if(btInfo & BT_INFO_8192E_1ANT_B_SCO_ESCO) + pCoexSta->bScoExist = true; + else + pCoexSta->bScoExist = FALSE; + } + + halbtc8192e1ant_UpdateBtLinkInfo(pBtCoexist); + + if(!(btInfo&BT_INFO_8192E_1ANT_B_CONNECTION)) + { + pCoexDm->btStatus = BT_8192E_1ANT_BT_STATUS_NON_CONNECTED_IDLE; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], BtInfoNotify(), bt non-connected idle!!!\n")); + } + else if(btInfo == BT_INFO_8192E_1ANT_B_CONNECTION) // connection exists but no busy + { + pCoexDm->btStatus = BT_8192E_1ANT_BT_STATUS_CONNECTED_IDLE; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], BtInfoNotify(), bt connected-idle!!!\n")); + } + else if((btInfo&BT_INFO_8192E_1ANT_B_SCO_ESCO) || + (btInfo&BT_INFO_8192E_1ANT_B_SCO_BUSY)) + { + pCoexDm->btStatus = BT_8192E_1ANT_BT_STATUS_SCO_BUSY; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], BtInfoNotify(), bt sco busy!!!\n")); + } + else if( (btInfo&BT_INFO_8192E_1ANT_B_ACL_BUSY) || + (btInfo&BT_INFO_8192E_1ANT_B_A2DP) || + (btInfo&BT_INFO_8192E_1ANT_B_FTP) ) + { + if(BT_8192E_1ANT_BT_STATUS_ACL_BUSY != pCoexDm->btStatus) + pCoexDm->bAutoTdmaAdjust = FALSE; + pCoexDm->btStatus = BT_8192E_1ANT_BT_STATUS_ACL_BUSY; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], BtInfoNotify(), bt acl busy!!!\n")); + } + else + { + pCoexDm->btStatus = BT_8192E_1ANT_BT_STATUS_MAX; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], BtInfoNotify(), bt non-defined state!!!\n")); + } + + // ra mask check + if(pBtLinkInfo->bScoExist || pBtLinkInfo->bHidExist) + { + halbtc8192e1ant_Updatera_mask(pBtCoexist, NORMAL_EXEC, BTC_RATE_DISABLE, 0x00000003); // disable tx cck 1M/2M + } + else + { + halbtc8192e1ant_Updatera_mask(pBtCoexist, NORMAL_EXEC, BTC_RATE_ENABLE, 0x00000003); // enable tx cck 1M/2M + } + + if( (BT_8192E_1ANT_BT_STATUS_ACL_BUSY == pCoexDm->btStatus) || + (BT_8192E_1ANT_BT_STATUS_SCO_BUSY == pCoexDm->btStatus) || + (BT_8192E_1ANT_BT_STATUS_ACL_SCO_BUSY == pCoexDm->btStatus) ) + { + bBtBusy = true; + limited_dig = true; + if(pBtLinkInfo->bHidExist) + b_bt_ctrl_agg_buf_size = true; + } + else + { + bBtBusy = FALSE; + limited_dig = FALSE; + } + pBtCoexist->btc_set(pBtCoexist, BTC_SET_BL_BT_TRAFFIC_BUSY, &bBtBusy); + + //============================================ + // Aggregation related setting + //============================================ + // if sco, reject AddBA + //pBtCoexist->btc_set(pBtCoexist, BTC_SET_BL_TO_REJ_AP_AGG_PKT, &bRejApAggPkt); + + // decide BT control aggregation buf size or not + pBtCoexist->btc_set(pBtCoexist, BTC_SET_BL_BT_CTRL_AGG_SIZE, &b_bt_ctrl_agg_buf_size); + // real update aggregation setting + pBtCoexist->btc_set(pBtCoexist, BTC_SET_ACT_AGGREGATE_CTRL, NULL); + //============================================ + + pCoexDm->limited_dig = limited_dig; + pBtCoexist->btc_set(pBtCoexist, BTC_SET_BL_BT_LIMITED_DIG, &limited_dig); + + halbtc8192e1ant_RunCoexistMechanism(pBtCoexist); +} + +VOID +EXhalbtc8192e1ant_StackOperationNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ) +{ + if(BTC_STACK_OP_INQ_PAGE_PAIR_START == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], StackOP Inquiry/page/pair start notify\n")); + } + else if(BTC_STACK_OP_INQ_PAGE_PAIR_FINISH == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], StackOP Inquiry/page/pair finish notify\n")); + } +} + +VOID +EXhalbtc8192e1ant_HaltNotify( + IN PBTC_COEXIST pBtCoexist + ) +{ + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], Halt notify\n")); + + pBtCoexist->bStopCoexDm = true; + halbtc8192e1ant_IgnoreWlanAct(pBtCoexist, FORCE_EXEC, true); + + halbtc8192e1ant_PowerSaveState(pBtCoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0); + + halbtc8192e1ant_PsTdma(pBtCoexist, FORCE_EXEC, FALSE, 0); + pBtCoexist->btc_write_1byte(pBtCoexist, 0x4f, 0xf); + + EXhalbtc8192e1ant_MediaStatusNotify(pBtCoexist, BTC_MEDIA_DISCONNECT); +} + +VOID +EXhalbtc8192e1ant_PnpNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte pnpState + ) +{ + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], Pnp notify\n")); + + if(BTC_WIFI_PNP_SLEEP == pnpState) + { + pBtCoexist->bStopCoexDm = true; + halbtc8192e1ant_IgnoreWlanAct(pBtCoexist, FORCE_EXEC, true); + halbtc8192e1ant_PowerSaveState(pBtCoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0); + halbtc8192e1ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 9); + } + else if(BTC_WIFI_PNP_WAKE_UP == pnpState) + { + + } +} + +VOID +EXhalbtc8192e1ant_Periodical( + IN PBTC_COEXIST pBtCoexist + ) +{ + static u1Byte disVerInfoCnt=0; + u4Byte fwVer=0, btPatchVer=0; + struct btc_board_info * pBoardInfo=&pBtCoexist->board_info; + PBTC_STACK_INFO pStackInfo=&pBtCoexist->stack_info; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], ==========================Periodical===========================\n")); + + if(disVerInfoCnt <= 5) + { + disVerInfoCnt += 1; + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, ("[BTCoex], ****************************************************************\n")); + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, ("[BTCoex], Ant PG Num/ Ant Mech/ Ant Pos = %d/ %d/ %d\n", \ + pBoardInfo->pg_ant_num, pBoardInfo->btdm_ant_num, pBoardInfo->btdm_ant_pos)); + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, ("[BTCoex], BT stack/ hci ext ver = %s / %d\n", \ + ((pStackInfo->bProfileNotified)? "Yes":"No"), pStackInfo->hciVersion)); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U4_BT_PATCH_VER, &btPatchVer); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U4_WIFI_FW_VER, &fwVer); + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, ("[BTCoex], CoexVer/ FwVer/ PatchVer = %d_%x/ 0x%x/ 0x%x(%d)\n", \ + GLCoexVerDate8192e1Ant, GLCoexVer8192e1Ant, fwVer, btPatchVer, btPatchVer)); + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, ("[BTCoex], ****************************************************************\n")); + } +#if(BT_AUTO_REPORT_ONLY_8192E_1ANT == 0) + halbtc8192e1ant_QueryBtInfo(pBtCoexist); + halbtc8192e1ant_MonitorBtCtr(pBtCoexist); + halbtc8192e1ant_MonitorBtEnableDisable(pBtCoexist); +#else + if( halbtc8192e1ant_IsWifiStatusChanged(pBtCoexist) || + pCoexDm->bAutoTdmaAdjust) + { + halbtc8192e1ant_RunCoexistMechanism(pBtCoexist); + } +#endif +} + +VOID +EXhalbtc8192e1ant_DbgControl( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte opCode, + IN u1Byte opLen, + IN pu1Byte pData + ) +{ + switch(opCode) + { + case BTC_DBG_SET_COEX_NORMAL: + pBtCoexist->manual_control = FALSE; + halbtc8192e1ant_InitCoexDm(pBtCoexist); + break; + case BTC_DBG_SET_COEX_WIFI_ONLY: + pBtCoexist->manual_control = true; + halbtc8192e1ant_PowerSaveState(pBtCoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0); + halbtc8192e1ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 9); + break; + case BTC_DBG_SET_COEX_BT_ONLY: + // todo + break; + default: + break; + } +} +#endif + --- linux-3.13.0.orig/drivers/staging/rtl8821ae/btcoexist/halbtc8192e1ant.h +++ linux-3.13.0/drivers/staging/rtl8821ae/btcoexist/halbtc8192e1ant.h @@ -0,0 +1,226 @@ +//=========================================== +// The following is for 8192E_1ANT BT Co-exist definition +//=========================================== +#define BT_AUTO_REPORT_ONLY_8192E_1ANT 0 + +#define BT_INFO_8192E_1ANT_B_FTP BIT7 +#define BT_INFO_8192E_1ANT_B_A2DP BIT6 +#define BT_INFO_8192E_1ANT_B_HID BIT5 +#define BT_INFO_8192E_1ANT_B_SCO_BUSY BIT4 +#define BT_INFO_8192E_1ANT_B_ACL_BUSY BIT3 +#define BT_INFO_8192E_1ANT_B_INQ_PAGE BIT2 +#define BT_INFO_8192E_1ANT_B_SCO_ESCO BIT1 +#define BT_INFO_8192E_1ANT_B_CONNECTION BIT0 + +#define BT_INFO_8192E_1ANT_A2DP_BASIC_RATE(_BT_INFO_EXT_) \ + (((_BT_INFO_EXT_&BIT0))? true:FALSE) + +#define BTC_RSSI_COEX_THRESH_TOL_8192E_1ANT 2 + +typedef enum _BT_INFO_SRC_8192E_1ANT{ + BT_INFO_SRC_8192E_1ANT_WIFI_FW = 0x0, + BT_INFO_SRC_8192E_1ANT_BT_RSP = 0x1, + BT_INFO_SRC_8192E_1ANT_BT_ACTIVE_SEND = 0x2, + BT_INFO_SRC_8192E_1ANT_MAX +}BT_INFO_SRC_8192E_1ANT,*PBT_INFO_SRC_8192E_1ANT; + +typedef enum _BT_8192E_1ANT_BT_STATUS{ + BT_8192E_1ANT_BT_STATUS_NON_CONNECTED_IDLE = 0x0, + BT_8192E_1ANT_BT_STATUS_CONNECTED_IDLE = 0x1, + BT_8192E_1ANT_BT_STATUS_INQ_PAGE = 0x2, + BT_8192E_1ANT_BT_STATUS_ACL_BUSY = 0x3, + BT_8192E_1ANT_BT_STATUS_SCO_BUSY = 0x4, + BT_8192E_1ANT_BT_STATUS_ACL_SCO_BUSY = 0x5, + BT_8192E_1ANT_BT_STATUS_MAX +}BT_8192E_1ANT_BT_STATUS,*PBT_8192E_1ANT_BT_STATUS; + +typedef enum _BT_8192E_1ANT_WIFI_STATUS{ + BT_8192E_1ANT_WIFI_STATUS_NON_CONNECTED_IDLE = 0x0, + BT_8192E_1ANT_WIFI_STATUS_NON_CONNECTED_ASSO_AUTH_SCAN = 0x1, + BT_8192E_1ANT_WIFI_STATUS_CONNECTED_SCAN = 0x2, + BT_8192E_1ANT_WIFI_STATUS_CONNECTED_SPECIAL_PKT = 0x3, + BT_8192E_1ANT_WIFI_STATUS_CONNECTED_IDLE = 0x4, + BT_8192E_1ANT_WIFI_STATUS_CONNECTED_BUSY = 0x5, + BT_8192E_1ANT_WIFI_STATUS_MAX +}BT_8192E_1ANT_WIFI_STATUS,*PBT_8192E_1ANT_WIFI_STATUS; + +typedef enum _BT_8192E_1ANT_COEX_ALGO{ + BT_8192E_1ANT_COEX_ALGO_UNDEFINED = 0x0, + BT_8192E_1ANT_COEX_ALGO_SCO = 0x1, + BT_8192E_1ANT_COEX_ALGO_HID = 0x2, + BT_8192E_1ANT_COEX_ALGO_A2DP = 0x3, + BT_8192E_1ANT_COEX_ALGO_A2DP_PANHS = 0x4, + BT_8192E_1ANT_COEX_ALGO_PANEDR = 0x5, + BT_8192E_1ANT_COEX_ALGO_PANHS = 0x6, + BT_8192E_1ANT_COEX_ALGO_PANEDR_A2DP = 0x7, + BT_8192E_1ANT_COEX_ALGO_PANEDR_HID = 0x8, + BT_8192E_1ANT_COEX_ALGO_HID_A2DP_PANEDR = 0x9, + BT_8192E_1ANT_COEX_ALGO_HID_A2DP = 0xa, + BT_8192E_1ANT_COEX_ALGO_MAX = 0xb, +}BT_8192E_1ANT_COEX_ALGO,*PBT_8192E_1ANT_COEX_ALGO; + +typedef struct _COEX_DM_8192E_1ANT{ + // fw mechanism + u1Byte preBtDecPwrLvl; + u1Byte curBtDecPwrLvl; + BOOLEAN bPreBtLnaConstrain; + BOOLEAN bCurBtLnaConstrain; + u1Byte bPreBtPsdMode; + u1Byte bCurBtPsdMode; + u1Byte preFwDacSwingLvl; + u1Byte curFwDacSwingLvl; + BOOLEAN bCurIgnoreWlanAct; + BOOLEAN bPreIgnoreWlanAct; + u1Byte prePsTdma; + u1Byte curPsTdma; + u1Byte psTdmaPara[5]; + u1Byte psTdmaDuAdjType; + BOOLEAN bAutoTdmaAdjust; + BOOLEAN bPrePsTdmaOn; + BOOLEAN bCurPsTdmaOn; + BOOLEAN bPreBtAutoReport; + BOOLEAN bCurBtAutoReport; + u1Byte preLps; + u1Byte curLps; + u1Byte preRpwm; + u1Byte curRpwm; + + // sw mechanism + BOOLEAN bPreRfRxLpfShrink; + BOOLEAN bCurRfRxLpfShrink; + u4Byte btRf0x1eBackup; + BOOLEAN bPreLowPenaltyRa; + BOOLEAN bCurLowPenaltyRa; + BOOLEAN bPreDacSwingOn; + u4Byte preDacSwingLvl; + BOOLEAN bCurDacSwingOn; + u4Byte curDacSwingLvl; + BOOLEAN bPreAdcBackOff; + BOOLEAN bCurAdcBackOff; + BOOLEAN bPreAgcTableEn; + BOOLEAN bCurAgcTableEn; + u4Byte preVal0x6c0; + u4Byte curVal0x6c0; + u4Byte preVal0x6c4; + u4Byte curVal0x6c4; + u4Byte preVal0x6c8; + u4Byte curVal0x6c8; + u1Byte preVal0x6cc; + u1Byte curVal0x6cc; + BOOLEAN limited_dig; + + // algorithm related + u1Byte preAlgorithm; + u1Byte curAlgorithm; + u1Byte btStatus; + u1Byte wifiChnlInfo[3]; + + u1Byte preSsType; + u1Byte curSsType; + + u4Byte prera_mask; + u4Byte curra_mask; + + u1Byte errorCondition; +} COEX_DM_8192E_1ANT, *PCOEX_DM_8192E_1ANT; + +typedef struct _COEX_STA_8192E_1ANT{ + BOOLEAN bBtLinkExist; + BOOLEAN bScoExist; + BOOLEAN bA2dpExist; + BOOLEAN bHidExist; + BOOLEAN bPanExist; + + BOOLEAN bUnderLps; + BOOLEAN bUnderIps; + u4Byte highPriorityTx; + u4Byte highPriorityRx; + u4Byte lowPriorityTx; + u4Byte lowPriorityRx; + u1Byte btRssi; + u1Byte preBtRssiState; + u1Byte preWifiRssiState[4]; + BOOLEAN bC2hBtInfoReqSent; + u1Byte btInfoC2h[BT_INFO_SRC_8192E_1ANT_MAX][10]; + u4Byte btInfoC2hCnt[BT_INFO_SRC_8192E_1ANT_MAX]; + BOOLEAN bC2hBtInquiryPage; + u1Byte btRetryCnt; + u1Byte btInfoExt; +}COEX_STA_8192E_1ANT, *PCOEX_STA_8192E_1ANT; + +//=========================================== +// The following is interface which will notify coex module. +//=========================================== +VOID +EXhalbtc8192e1ant_InitHwConfig( + IN PBTC_COEXIST pBtCoexist + ); +VOID +EXhalbtc8192e1ant_InitCoexDm( + IN PBTC_COEXIST pBtCoexist + ); +VOID +EXhalbtc8192e1ant_IpsNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ); +VOID +EXhalbtc8192e1ant_LpsNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ); +VOID +EXhalbtc8192e1ant_ScanNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ); +VOID +EXhalbtc8192e1ant_ConnectNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ); +VOID +EXhalbtc8192e1ant_MediaStatusNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ); +VOID +EXhalbtc8192e1ant_SpecialPacketNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ); +VOID +EXhalbtc8192e1ant_BtInfoNotify( + IN PBTC_COEXIST pBtCoexist, + IN pu1Byte tmpBuf, + IN u1Byte length + ); +VOID +EXhalbtc8192e1ant_StackOperationNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ); +VOID +EXhalbtc8192e1ant_HaltNotify( + IN PBTC_COEXIST pBtCoexist + ); +VOID +EXhalbtc8192e1ant_PnpNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte pnpState + ); +VOID +EXhalbtc8192e1ant_Periodical( + IN PBTC_COEXIST pBtCoexist + ); +VOID +EXhalbtc8192e1ant_DisplayCoexInfo( + IN PBTC_COEXIST pBtCoexist + ); +VOID +EXhalbtc8192e1ant_DbgControl( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte opCode, + IN u1Byte opLen, + IN pu1Byte pData + ); --- linux-3.13.0.orig/drivers/staging/rtl8821ae/btcoexist/halbtc8192e2ant.c +++ linux-3.13.0/drivers/staging/rtl8821ae/btcoexist/halbtc8192e2ant.c @@ -0,0 +1,4242 @@ +/************************************************************** + * Description: + * + * This file is for RTL8192E Co-exist mechanism + * + * History + * 2012/11/15 Cosa first check in. + * + **************************************************************/ + +/************************************************************** + * include files + **************************************************************/ +#include "halbt_precomp.h" +#if 1 +/************************************************************** + * Global variables, these are static variables + **************************************************************/ +static struct coex_dm_8192e_2ant glcoex_dm_8192e_2ant; +static struct coex_dm_8192e_2ant *coex_dm = &glcoex_dm_8192e_2ant; +static struct coex_sta_8192e_2ant glcoex_sta_8192e_2ant; +static struct coex_sta_8192e_2ant *coex_sta = &glcoex_sta_8192e_2ant; + +const char *const GLBtInfoSrc8192e2Ant[]={ + "BT Info[wifi fw]", + "BT Info[bt rsp]", + "BT Info[bt auto report]", +}; + +u32 glcoex_ver_date_8192e_2ant = 20130902; +u32 glcoex_ver_8192e_2ant = 0x34; + +/************************************************************** + * local function proto type if needed + **************************************************************/ +/************************************************************** + * local function start with halbtc8192e2ant_ + **************************************************************/ +u8 halbtc8192e2ant_btrssi_state(u8 level_num, u8 rssi_thresh, u8 rssi_thresh1) +{ + int btrssi=0; + u8 btrssi_state = coex_sta->pre_bt_rssi_state; + + btrssi = coex_sta->bt_rssi; + + if (level_num == 2) { + if ((coex_sta->pre_bt_rssi_state == BTC_RSSI_STATE_LOW) || + (coex_sta->pre_bt_rssi_state == BTC_RSSI_STATE_STAY_LOW)) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "BT Rssi pre state=LOW\n"); + if (btrssi >= (rssi_thresh + + BTC_RSSI_COEX_THRESH_TOL_8192E_2ANT)) { + btrssi_state = BTC_RSSI_STATE_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "BT Rssi state switch to High\n"); + } else { + btrssi_state = BTC_RSSI_STATE_STAY_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "BT Rssi state stay at Low\n"); + } + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "BT Rssi pre state=HIGH\n"); + if (btrssi < rssi_thresh) { + btrssi_state = BTC_RSSI_STATE_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "BT Rssi state switch to Low\n"); + } else { + btrssi_state = BTC_RSSI_STATE_STAY_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "BT Rssi state stay at High\n"); + } + } + } else if (level_num == 3) { + if (rssi_thresh > rssi_thresh1) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "BT Rssi thresh error!!\n"); + return coex_sta->pre_bt_rssi_state; + } + + if ((coex_sta->pre_bt_rssi_state == BTC_RSSI_STATE_LOW) || + (coex_sta->pre_bt_rssi_state == BTC_RSSI_STATE_STAY_LOW)) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "BT Rssi pre state=LOW\n"); + if(btrssi >= (rssi_thresh + + BTC_RSSI_COEX_THRESH_TOL_8192E_2ANT)) { + btrssi_state = BTC_RSSI_STATE_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "BT Rssi state switch to Medium\n"); + } else { + btrssi_state = BTC_RSSI_STATE_STAY_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "BT Rssi state stay at Low\n"); + } + } else if ((coex_sta->pre_bt_rssi_state == + BTC_RSSI_STATE_MEDIUM) || + (coex_sta->pre_bt_rssi_state == + BTC_RSSI_STATE_STAY_MEDIUM)) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "[BTCoex], BT Rssi pre state=MEDIUM\n"); + if (btrssi >= (rssi_thresh1 + + BTC_RSSI_COEX_THRESH_TOL_8192E_2ANT)) { + btrssi_state = BTC_RSSI_STATE_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "BT Rssi state switch to High\n"); + } else if (btrssi < rssi_thresh) { + btrssi_state = BTC_RSSI_STATE_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "BT Rssi state switch to Low\n"); + } else { + btrssi_state = BTC_RSSI_STATE_STAY_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "BT Rssi state stay at Medium\n"); + } + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "BT Rssi pre state=HIGH\n"); + if (btrssi < rssi_thresh1) { + btrssi_state = BTC_RSSI_STATE_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "BT Rssi state switch to Medium\n"); + } else { + btrssi_state = BTC_RSSI_STATE_STAY_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "BT Rssi state stay at High\n"); + } + } + } + + coex_sta->pre_bt_rssi_state = btrssi_state; + + return btrssi_state; +} + +u8 halbtc8192e2ant_wifirssi_state(struct btc_coexist * btcoexist, u8 index, + u8 level_num, u8 rssi_thresh, u8 rssi_thresh1) +{ + int wifirssi = 0; + u8 wifirssi_state = coex_sta->pre_wifi_rssi_state[index]; + + btcoexist->btc_get(btcoexist, BTC_GET_S4_WIFI_RSSI, &wifirssi); + + if (level_num == 2) { + if ((coex_sta->pre_wifi_rssi_state[index] == + BTC_RSSI_STATE_LOW) || + (coex_sta->pre_wifi_rssi_state[index] == + BTC_RSSI_STATE_STAY_LOW)) { + if (wifirssi >= (rssi_thresh + + BTC_RSSI_COEX_THRESH_TOL_8192E_2ANT)) { + wifirssi_state = BTC_RSSI_STATE_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "wifi RSSI state switch to High\n"); + } else { + wifirssi_state = BTC_RSSI_STATE_STAY_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "wifi RSSI state stay at Low\n"); + } + } else { + if (wifirssi < rssi_thresh) { + wifirssi_state = BTC_RSSI_STATE_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "wifi RSSI state switch to Low\n"); + } else { + wifirssi_state = BTC_RSSI_STATE_STAY_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "wifi RSSI state stay at High\n"); + } + } + } else if (level_num == 3) { + if (rssi_thresh > rssi_thresh1) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, + "wifi RSSI thresh error!!\n"); + return coex_sta->pre_wifi_rssi_state[index]; + } + + if ((coex_sta->pre_wifi_rssi_state[index] == + BTC_RSSI_STATE_LOW) || + (coex_sta->pre_wifi_rssi_state[index] == + BTC_RSSI_STATE_STAY_LOW)) { + if (wifirssi >= (rssi_thresh + + BTC_RSSI_COEX_THRESH_TOL_8192E_2ANT)) { + wifirssi_state = BTC_RSSI_STATE_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "wifi RSSI state switch to Medium\n"); + } else { + wifirssi_state = BTC_RSSI_STATE_STAY_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "wifi RSSI state stay at Low\n"); + } + } else if ((coex_sta->pre_wifi_rssi_state[index] == + BTC_RSSI_STATE_MEDIUM) || + (coex_sta->pre_wifi_rssi_state[index] == + BTC_RSSI_STATE_STAY_MEDIUM)) { + if (wifirssi >= (rssi_thresh1 + + BTC_RSSI_COEX_THRESH_TOL_8192E_2ANT)) { + wifirssi_state = BTC_RSSI_STATE_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "wifi RSSI state switch to High\n"); + } else if (wifirssi < rssi_thresh) { + wifirssi_state = BTC_RSSI_STATE_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "wifi RSSI state switch to Low\n"); + } else { + wifirssi_state = BTC_RSSI_STATE_STAY_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "wifi RSSI state stay at Medium\n"); + } + } else { + if (wifirssi < rssi_thresh1) { + wifirssi_state = BTC_RSSI_STATE_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "wifi RSSI state switch to Medium\n"); + } else { + wifirssi_state = BTC_RSSI_STATE_STAY_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "wifi RSSI state stay at High\n"); + } + } + } + + coex_sta->pre_wifi_rssi_state[index] = wifirssi_state; + + return wifirssi_state; +} + +void halbtc8192e2ant_monitor_bt_enable_disable(struct btc_coexist *btcoexist) +{ + static bool pre_bt_disabled = false; + static u32 bt_disable_cnt = 0; + bool bt_active = true, bt_disabled = false; + + /* This function check if bt is disabled */ + + if (coex_sta->high_priority_tx == 0 && + coex_sta->high_priority_rx == 0 && + coex_sta->low_priority_tx == 0 && + coex_sta->low_priority_rx == 0) + bt_active = false; + + if (coex_sta->high_priority_tx == 0xffff && + coex_sta->high_priority_rx == 0xffff && + coex_sta->low_priority_tx == 0xffff && + coex_sta->low_priority_rx == 0xffff) + bt_active = false; + + if (bt_active) { + bt_disable_cnt = 0; + bt_disabled = false; + btcoexist->btc_set(btcoexist, BTC_SET_BL_BT_DISABLE, + &bt_disabled); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, + "[BTCoex], BT is enabled !!\n"); + } else { + bt_disable_cnt++; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, + "[BTCoex], bt all counters=0, %d times!!\n", + bt_disable_cnt); + if (bt_disable_cnt >= 2) { + bt_disabled = true; + btcoexist->btc_set(btcoexist, BTC_SET_BL_BT_DISABLE, + &bt_disabled); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, + "[BTCoex], BT is disabled !!\n"); + } + } + if (pre_bt_disabled != bt_disabled) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, + "[BTCoex], BT is from %s to %s!!\n", + (pre_bt_disabled ? "disabled":"enabled"), + (bt_disabled ? "disabled":"enabled")); + pre_bt_disabled = bt_disabled; + } +} + +u32 halbtc8192e2ant_decidera_mask(struct btc_coexist *btcoexist, + u8 sstype, u32 ra_masktype) +{ + u32 disra_mask = 0x0; + + switch (ra_masktype) { + case 0: /* normal mode */ + if (sstype == 2) + disra_mask = 0x0; /* enable 2ss */ + else + disra_mask = 0xfff00000;/* disable 2ss */ + break; + case 1: /* disable cck 1/2 */ + if(sstype == 2) + disra_mask = 0x00000003;/* enable 2ss */ + else + disra_mask = 0xfff00003;/* disable 2ss */ + break; + case 2: /* disable cck 1/2/5.5, ofdm 6/9/12/18/24, mcs 0/1/2/3/4 */ + if(sstype == 2) + disra_mask = 0x0001f1f7;/* enable 2ss */ + else + disra_mask = 0xfff1f1f7;/* disable 2ss */ + break; + default: + break; + } + + return disra_mask; +} + +void halbtc8192e2ant_Updatera_mask(struct btc_coexist *btcoexist, + bool force_exec, u32 dis_ratemask) +{ + coex_dm->curra_mask = dis_ratemask; + + if (force_exec || (coex_dm->prera_mask != coex_dm->curra_mask)) + btcoexist->btc_set(btcoexist, BTC_SET_ACT_UPDATE_ra_mask, + &coex_dm->curra_mask); + coex_dm->prera_mask = coex_dm->curra_mask; +} + +void halbtc8192e2ant_autorate_fallback_retry(struct btc_coexist *btcoexist, + bool force_exec, u8 type) +{ + bool wifi_under_bmode = false; + + coex_dm->cur_arfrtype = type; + + if (force_exec || (coex_dm->pre_arfrtype != coex_dm->cur_arfrtype)) { + switch (coex_dm->cur_arfrtype) { + case 0: /* normal mode */ + btcoexist->btc_write_4byte(btcoexist, 0x430, + coex_dm->backup_arfr_cnt1); + btcoexist->btc_write_4byte(btcoexist, 0x434, + coex_dm->backup_arfr_cnt2); + break; + case 1: + btcoexist->btc_get(btcoexist, + BTC_GET_BL_WIFI_UNDER_B_MODE, + &wifi_under_bmode); + if (wifi_under_bmode) { + btcoexist->btc_write_4byte(btcoexist, 0x430, + 0x0); + btcoexist->btc_write_4byte(btcoexist, 0x434, + 0x01010101); + } else { + btcoexist->btc_write_4byte(btcoexist, 0x430, + 0x0); + btcoexist->btc_write_4byte(btcoexist, 0x434, + 0x04030201); + } + break; + default: + break; + } + } + + coex_dm->pre_arfrtype = coex_dm->cur_arfrtype; +} + +void halbtc8192e2ant_retrylimit(struct btc_coexist *btcoexist, + bool force_exec, u8 type) +{ + coex_dm->cur_retrylimit_type = type; + + if (force_exec || (coex_dm->pre_retrylimit_type != + coex_dm->cur_retrylimit_type)) { + switch (coex_dm->cur_retrylimit_type) { + case 0: /* normal mode */ + btcoexist->btc_write_2byte(btcoexist, 0x42a, + coex_dm->backup_retrylimit); + break; + case 1: /* retry limit=8 */ + btcoexist->btc_write_2byte(btcoexist, 0x42a, + 0x0808); + break; + default: + break; + } + } + + coex_dm->pre_retrylimit_type = coex_dm->cur_retrylimit_type; +} + +void halbtc8192e2ant_ampdu_maxtime(struct btc_coexist *btcoexist, + bool force_exec, u8 type) +{ + coex_dm->cur_ampdutime_type = type; + + if (force_exec || (coex_dm->pre_ampdutime_type != + coex_dm->cur_ampdutime_type)) { + switch (coex_dm->cur_ampdutime_type) { + case 0: /* normal mode */ + btcoexist->btc_write_1byte(btcoexist, 0x456, + coex_dm->backup_ampdu_maxtime); + break; + case 1: /* AMPDU timw = 0x38 * 32us */ + btcoexist->btc_write_1byte(btcoexist, 0x456, 0x38); + break; + default: + break; + } + } + + coex_dm->pre_ampdutime_type = coex_dm->cur_ampdutime_type; +} + +void halbtc8192e2ant_limited_tx(struct btc_coexist *btcoexist, + bool force_exec, u8 ra_masktype, u8 arfr_type, + u8 retrylimit_type, u8 ampdutime_type) +{ + u32 disra_mask = 0x0; + + coex_dm->curra_masktype = ra_masktype; + disra_mask = halbtc8192e2ant_decidera_mask(btcoexist, + coex_dm->cur_sstype, + ra_masktype); + halbtc8192e2ant_Updatera_mask(btcoexist, force_exec, disra_mask); + + halbtc8192e2ant_autorate_fallback_retry(btcoexist, force_exec, + arfr_type); + halbtc8192e2ant_retrylimit(btcoexist, force_exec, retrylimit_type); + halbtc8192e2ant_ampdu_maxtime(btcoexist, force_exec, ampdutime_type); +} + +void halbtc8192e2ant_limited_rx(struct btc_coexist *btcoexist, + bool force_exec, bool rej_ap_agg_pkt, + bool b_bt_ctrl_agg_buf_size, + u8 agg_buf_size) +{ + bool reject_rx_agg = rej_ap_agg_pkt; + bool bt_ctrl_rx_agg_size = b_bt_ctrl_agg_buf_size; + u8 rx_agg_size = agg_buf_size; + + /********************************************* + * Rx Aggregation related setting + *********************************************/ + btcoexist->btc_set(btcoexist, BTC_SET_BL_TO_REJ_AP_AGG_PKT, + &reject_rx_agg); + /* decide BT control aggregation buf size or not */ + btcoexist->btc_set(btcoexist, BTC_SET_BL_BT_CTRL_AGG_SIZE, + &bt_ctrl_rx_agg_size); + /* aggregation buf size, only work + * when BT control Rx aggregation size. */ + btcoexist->btc_set(btcoexist, BTC_SET_U1_AGG_BUF_SIZE, &rx_agg_size); + /* real update aggregation setting */ + btcoexist->btc_set(btcoexist, BTC_SET_ACT_AGGREGATE_CTRL, NULL); + + +} + +void halbtc8192e2ant_monitor_bt_ctr(struct btc_coexist *btcoexist) +{ + u32 reg_hp_txrx, reg_lp_txrx, u32tmp; + u32 reg_hp_tx = 0, reg_hp_rx = 0, reg_lp_tx = 0, reg_lp_rx = 0; + + reg_hp_txrx = 0x770; + reg_lp_txrx = 0x774; + + u32tmp = btcoexist->btc_read_4byte(btcoexist, reg_hp_txrx); + reg_hp_tx = u32tmp & MASKLWORD; + reg_hp_rx = (u32tmp & MASKHWORD)>>16; + + u32tmp = btcoexist->btc_read_4byte(btcoexist, reg_lp_txrx); + reg_lp_tx = u32tmp & MASKLWORD; + reg_lp_rx = (u32tmp & MASKHWORD)>>16; + + coex_sta->high_priority_tx = reg_hp_tx; + coex_sta->high_priority_rx = reg_hp_rx; + coex_sta->low_priority_tx = reg_lp_tx; + coex_sta->low_priority_rx = reg_lp_rx; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, + "[BTCoex] High Priority Tx/Rx (reg 0x%x)=0x%x(%d)/0x%x(%d)\n", + reg_hp_txrx, reg_hp_tx, reg_hp_tx, reg_hp_rx, reg_hp_rx); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, + "[BTCoex] Low Priority Tx/Rx (reg 0x%x)=0x%x(%d)/0x%x(%d)\n", + reg_lp_txrx, reg_lp_tx, reg_lp_tx, reg_lp_rx, reg_lp_rx); + + /* reset counter */ + btcoexist->btc_write_1byte(btcoexist, 0x76e, 0xc); +} + +void halbtc8192e2ant_querybt_info(struct btc_coexist *btcoexist) +{ + u8 h2c_parameter[1] ={0}; + + coex_sta->c2h_bt_info_req_sent = true; + + h2c_parameter[0] |= BIT0; /* trigger */ + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, + "[BTCoex], Query Bt Info, FW write 0x61=0x%x\n", + h2c_parameter[0]); + + btcoexist->btc_fill_h2c(btcoexist, 0x61, 1, h2c_parameter); +} + +bool halbtc8192e2ant_iswifi_status_changed(struct btc_coexist *btcoexist) +{ + static bool pre_wifi_busy = false; + static bool pre_under_4way = false, pre_bt_hson = false; + bool wifi_busy = false, under_4way = false, bt_hson = false; + bool wifi_connected = false; + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_CONNECTED, + &wifi_connected); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_BUSY, &wifi_busy); + btcoexist->btc_get(btcoexist, BTC_GET_BL_HS_OPERATION, &bt_hson); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_4_WAY_PROGRESS, + &under_4way); + + if (wifi_connected) { + if (wifi_busy != pre_wifi_busy) { + pre_wifi_busy = wifi_busy; + return true; + } + if (under_4way != pre_under_4way) { + pre_under_4way = under_4way; + return true; + } + if (bt_hson != pre_bt_hson) { + pre_bt_hson = bt_hson; + return true; + } + } + + return false; +} + +void halbtc8192e2ant_update_btlink_info(struct btc_coexist *btcoexist) +{ + struct btc_bt_link_info *bt_link_info = &btcoexist->bt_link_info; + bool bt_hson = false; + + btcoexist->btc_get(btcoexist, BTC_GET_BL_HS_OPERATION, &bt_hson); + + bt_link_info->bt_link_exist = coex_sta->bt_link_exist; + bt_link_info->sco_exist = coex_sta->sco_exist; + bt_link_info->a2dp_exist = coex_sta->a2dp_exist; + bt_link_info->pan_exist = coex_sta->pan_exist; + bt_link_info->hid_exist = coex_sta->hid_exist; + + /* work around for HS mode. */ + if (bt_hson) { + bt_link_info->pan_exist = true; + bt_link_info->bt_link_exist = true; + } + + /* check if Sco only */ + if (bt_link_info->sco_exist && + !bt_link_info->a2dp_exist && + !bt_link_info->pan_exist && + !bt_link_info->hid_exist) + bt_link_info->sco_only = true; + else + bt_link_info->sco_only = false; + + /* check if A2dp only */ + if (!bt_link_info->sco_exist && + bt_link_info->a2dp_exist && + !bt_link_info->pan_exist && + !bt_link_info->hid_exist) + bt_link_info->a2dp_only = true; + else + bt_link_info->a2dp_only = false; + + /* check if Pan only */ + if (!bt_link_info->sco_exist && + !bt_link_info->a2dp_exist && + bt_link_info->pan_exist && + !bt_link_info->hid_exist) + bt_link_info->pan_only = true; + else + bt_link_info->pan_only = false; + + /* check if Hid only */ + if (!bt_link_info->sco_exist && + !bt_link_info->a2dp_exist && + !bt_link_info->pan_exist && + bt_link_info->hid_exist) + bt_link_info->hid_only = true; + else + bt_link_info->hid_only = false; +} + +u8 halbtc8192e2ant_action_algorithm(struct btc_coexist *btcoexist) +{ + struct btc_bt_link_info *bt_link_info = &btcoexist->bt_link_info; + struct btc_stack_info *stack_info = &btcoexist->stack_info; + bool bt_hson=false; + u8 algorithm = BT_8192E_2ANT_COEX_ALGO_UNDEFINED; + u8 numOfDiffProfile = 0; + + btcoexist->btc_get(btcoexist, BTC_GET_BL_HS_OPERATION, &bt_hson); + + if (!bt_link_info->bt_link_exist) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "No BT link exists!!!\n"); + return algorithm; + } + + if (bt_link_info->sco_exist) + numOfDiffProfile++; + if (bt_link_info->hid_exist) + numOfDiffProfile++; + if (bt_link_info->pan_exist) + numOfDiffProfile++; + if (bt_link_info->a2dp_exist) + numOfDiffProfile++; + + if (numOfDiffProfile == 1) { + if (bt_link_info->sco_exist) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "SCO only\n"); + algorithm = BT_8192E_2ANT_COEX_ALGO_SCO; + } else { + if (bt_link_info->hid_exist) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "HID only\n"); + algorithm = BT_8192E_2ANT_COEX_ALGO_HID; + } else if (bt_link_info->a2dp_exist) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "A2DP only\n"); + algorithm = BT_8192E_2ANT_COEX_ALGO_A2DP; + } else if (bt_link_info->pan_exist) { + if (bt_hson) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "PAN(HS) only\n"); + algorithm = + BT_8192E_2ANT_COEX_ALGO_PANHS; + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "PAN(EDR) only\n"); + algorithm = + BT_8192E_2ANT_COEX_ALGO_PANEDR; + } + } + } + } else if (numOfDiffProfile == 2) { + if (bt_link_info->sco_exist) { + if (bt_link_info->hid_exist) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "SCO + HID\n"); + algorithm = BT_8192E_2ANT_COEX_ALGO_SCO; + } else if (bt_link_info->a2dp_exist) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "SCO + A2DP ==> SCO\n"); + algorithm = BT_8192E_2ANT_COEX_ALGO_PANEDR_HID; + } else if (bt_link_info->pan_exist) { + if (bt_hson) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "SCO + PAN(HS)\n"); + algorithm = BT_8192E_2ANT_COEX_ALGO_SCO; + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "SCO + PAN(EDR)\n"); + algorithm = + BT_8192E_2ANT_COEX_ALGO_SCO_PAN; + } + } + } else { + if (bt_link_info->hid_exist && + bt_link_info->a2dp_exist) { + if (stack_info->num_of_hid >= 2) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "HID*2 + A2DP\n"); + algorithm = + BT_8192E_2ANT_COEX_ALGO_HID_A2DP_PANEDR; + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "HID + A2DP\n"); + algorithm = + BT_8192E_2ANT_COEX_ALGO_HID_A2DP; + } + } else if (bt_link_info->hid_exist && + bt_link_info->pan_exist) { + if (bt_hson) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "HID + PAN(HS)\n"); + algorithm = BT_8192E_2ANT_COEX_ALGO_HID; + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "HID + PAN(EDR)\n"); + algorithm = + BT_8192E_2ANT_COEX_ALGO_PANEDR_HID; + } + } else if (bt_link_info->pan_exist && + bt_link_info->a2dp_exist) { + if (bt_hson) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "A2DP + PAN(HS)\n"); + algorithm = + BT_8192E_2ANT_COEX_ALGO_A2DP_PANHS; + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "A2DP + PAN(EDR)\n"); + algorithm = + BT_8192E_2ANT_COEX_ALGO_PANEDR_A2DP; + } + } + } + } else if (numOfDiffProfile == 3) { + if (bt_link_info->sco_exist) { + if (bt_link_info->hid_exist && + bt_link_info->a2dp_exist) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "SCO + HID + A2DP ==> HID\n"); + algorithm = BT_8192E_2ANT_COEX_ALGO_PANEDR_HID; + } else if (bt_link_info->hid_exist && + bt_link_info->pan_exist) { + if (bt_hson) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "SCO + HID + PAN(HS)\n"); + algorithm = BT_8192E_2ANT_COEX_ALGO_SCO; + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "SCO + HID + PAN(EDR)\n"); + algorithm = + BT_8192E_2ANT_COEX_ALGO_SCO_PAN; + } + } else if (bt_link_info->pan_exist && + bt_link_info->a2dp_exist) { + if (bt_hson) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "SCO + A2DP + PAN(HS)\n"); + algorithm = BT_8192E_2ANT_COEX_ALGO_SCO; + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "SCO + A2DP + PAN(EDR)\n"); + algorithm = + BT_8192E_2ANT_COEX_ALGO_PANEDR_HID; + } + } + } else { + if (bt_link_info->hid_exist && + bt_link_info->pan_exist && + bt_link_info->a2dp_exist) { + if (bt_hson) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "HID + A2DP + PAN(HS)\n"); + algorithm = + BT_8192E_2ANT_COEX_ALGO_HID_A2DP; + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "HID + A2DP + PAN(EDR)\n"); + algorithm = + BT_8192E_2ANT_COEX_ALGO_HID_A2DP_PANEDR; + } + } + } + } else if (numOfDiffProfile >= 3) { + if (bt_link_info->sco_exist) { + if (bt_link_info->hid_exist && + bt_link_info->pan_exist && + bt_link_info->a2dp_exist) { + if (bt_hson) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "ErrorSCO+HID+A2DP+PAN(HS)\n"); + + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "SCO+HID+A2DP+PAN(EDR)\n"); + algorithm = + BT_8192E_2ANT_COEX_ALGO_PANEDR_HID; + } + } + } + } + + return algorithm; +} + +void halbtc8192e2ant_setfw_dac_swinglevel(struct btc_coexist *btcoexist, + u8 dac_swinglvl) +{ + u8 h2c_parameter[1] ={0}; + + /* There are several type of dacswing + * 0x18/ 0x10/ 0xc/ 0x8/ 0x4/ 0x6 */ + h2c_parameter[0] = dac_swinglvl; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, + "[BTCoex], Set Dac Swing Level=0x%x\n", dac_swinglvl); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, + "[BTCoex], FW write 0x64=0x%x\n", h2c_parameter[0]); + + btcoexist->btc_fill_h2c(btcoexist, 0x64, 1, h2c_parameter); +} + +void halbtc8192e2ant_set_fwdec_btpwr(struct btc_coexist *btcoexist, + u8 dec_btpwr_lvl) +{ + u8 h2c_parameter[1] ={0}; + + h2c_parameter[0] = dec_btpwr_lvl; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, + "[BTCoex] decrease Bt Power level = %d, FW write 0x62=0x%x\n", + dec_btpwr_lvl, h2c_parameter[0]); + + btcoexist->btc_fill_h2c(btcoexist, 0x62, 1, h2c_parameter); +} + +void halbtc8192e2ant_dec_btpwr(struct btc_coexist *btcoexist, + bool force_exec, u8 dec_btpwr_lvl) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, + "[BTCoex], %s Dec BT power level = %d\n", + (force_exec? "force to":""), dec_btpwr_lvl); + coex_dm->cur_dec_bt_pwr = dec_btpwr_lvl; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], preBtDecPwrLvl=%d, curBtDecPwrLvl=%d\n", + coex_dm->pre_dec_bt_pwr, coex_dm->cur_dec_bt_pwr); + } + halbtc8192e2ant_set_fwdec_btpwr(btcoexist, coex_dm->cur_dec_bt_pwr); + + coex_dm->pre_dec_bt_pwr = coex_dm->cur_dec_bt_pwr; +} + +void halbtc8192e2ant_set_bt_autoreport(struct btc_coexist *btcoexist, + bool enable_autoreport) +{ + u8 h2c_parameter[1] ={0}; + + h2c_parameter[0] = 0; + + if (enable_autoreport) + h2c_parameter[0] |= BIT0; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, + "[BTCoex], BT FW auto report : %s, FW write 0x68=0x%x\n", + (enable_autoreport? "Enabled!!":"Disabled!!"), + h2c_parameter[0]); + + btcoexist->btc_fill_h2c(btcoexist, 0x68, 1, h2c_parameter); +} + +void halbtc8192e2ant_bt_autoreport(struct btc_coexist *btcoexist, + bool force_exec, bool enable_autoreport) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, + "[BTCoex], %s BT Auto report = %s\n", + (force_exec? "force to":""), + ((enable_autoreport)? "Enabled":"Disabled")); + coex_dm->cur_bt_auto_report = enable_autoreport; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex] bPreBtAutoReport=%d, bCurBtAutoReport=%d\n", + coex_dm->pre_bt_auto_report, + coex_dm->cur_bt_auto_report); + + if (coex_dm->pre_bt_auto_report == coex_dm->cur_bt_auto_report) + return; + } + halbtc8192e2ant_set_bt_autoreport(btcoexist, + coex_dm->cur_bt_auto_report); + + coex_dm->pre_bt_auto_report = coex_dm->cur_bt_auto_report; +} + +void halbtc8192e2ant_fw_dac_swinglvl(struct btc_coexist *btcoexist, + bool force_exec, u8 fw_dac_swinglvl) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, + "[BTCoex], %s set FW Dac Swing level = %d\n", + (force_exec? "force to":""), fw_dac_swinglvl); + coex_dm->cur_fw_dac_swing_lvl = fw_dac_swinglvl; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex] preFwDacSwingLvl=%d, curFwDacSwingLvl=%d\n", + coex_dm->pre_fw_dac_swing_lvl, + coex_dm->cur_fw_dac_swing_lvl); + + if (coex_dm->pre_fw_dac_swing_lvl == + coex_dm->cur_fw_dac_swing_lvl) + return; + } + + halbtc8192e2ant_setfw_dac_swinglevel(btcoexist, + coex_dm->cur_fw_dac_swing_lvl); + + coex_dm->pre_fw_dac_swing_lvl = coex_dm->cur_fw_dac_swing_lvl; +} + +void halbtc8192e2ant_set_sw_rf_rx_lpf_corner(struct btc_coexist *btcoexist, + bool rx_rf_shrink_on) +{ + if (rx_rf_shrink_on) { + /* Shrink RF Rx LPF corner */ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], Shrink RF Rx LPF corner!!\n"); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1e, + 0xfffff, 0xffffc); + } else { + /* Resume RF Rx LPF corner + * After initialized, we can use coex_dm->btRf0x1eBackup */ + if (btcoexist->initilized) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], Resume RF Rx LPF corner!!\n"); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1e, + 0xfffff, + coex_dm->bt_rf0x1e_backup); + } + } +} + +void halbtc8192e2ant_rf_shrink(struct btc_coexist *btcoexist, + bool force_exec, bool rx_rf_shrink_on) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, + "[BTCoex], %s turn Rx RF Shrink = %s\n", + (force_exec? "force to":""), ((rx_rf_shrink_on)? "ON":"OFF")); + coex_dm->cur_rf_rx_lpf_shrink = rx_rf_shrink_on; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, + "[BTCoex]bPreRfRxLpfShrink=%d,bCurRfRxLpfShrink=%d\n", + coex_dm->pre_rf_rx_lpf_shrink, + coex_dm->cur_rf_rx_lpf_shrink); + + if (coex_dm->pre_rf_rx_lpf_shrink == + coex_dm->cur_rf_rx_lpf_shrink) + return; + } + halbtc8192e2ant_set_sw_rf_rx_lpf_corner(btcoexist, + coex_dm->cur_rf_rx_lpf_shrink); + + coex_dm->pre_rf_rx_lpf_shrink = coex_dm->cur_rf_rx_lpf_shrink; +} + +void halbtc8192e2ant_set_sw_penalty_tx_rateadaptive( + struct btc_coexist *btcoexist, + bool low_penalty_ra) +{ + u8 h2c_parameter[6] ={0}; + + h2c_parameter[0] = 0x6; /* opCode, 0x6= Retry_Penalty */ + + if (low_penalty_ra) { + h2c_parameter[1] |= BIT0; + /* normal rate except MCS7/6/5, OFDM54/48/36 */ + h2c_parameter[2] = 0x00; + h2c_parameter[3] = 0xf7; /* MCS7 or OFDM54 */ + h2c_parameter[4] = 0xf8; /* MCS6 or OFDM48 */ + h2c_parameter[5] = 0xf9; /* MCS5 or OFDM36 */ + } + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, + "[BTCoex], set WiFi Low-Penalty Retry: %s", + (low_penalty_ra? "ON!!":"OFF!!")); + + btcoexist->btc_fill_h2c(btcoexist, 0x69, 6, h2c_parameter); +} + +void halbtc8192e2ant_low_penalty_ra(struct btc_coexist *btcoexist, + bool force_exec, bool low_penalty_ra) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, + "[BTCoex], %s turn LowPenaltyRA = %s\n", + (force_exec? "force to":""), ((low_penalty_ra)? "ON":"OFF")); + coex_dm->cur_low_penalty_ra = low_penalty_ra; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, + "[BTCoex] bPreLowPenaltyRa=%d, bCurLowPenaltyRa=%d\n", + coex_dm->pre_low_penalty_ra, + coex_dm->cur_low_penalty_ra); + + if (coex_dm->pre_low_penalty_ra == + coex_dm->cur_low_penalty_ra) + return; + } + halbtc8192e2ant_set_sw_penalty_tx_rateadaptive(btcoexist, + coex_dm->cur_low_penalty_ra); + + coex_dm->pre_low_penalty_ra = coex_dm->cur_low_penalty_ra; +} + +void halbtc8192e2ant_set_dac_swingreg(struct btc_coexist *btcoexist, + u32 level) +{ + u8 val = (u8)level; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], Write SwDacSwing = 0x%x\n", level); + btcoexist->btc_write_1byte_bitmask(btcoexist, 0x883, 0x3e, val); +} + +void halbtc8192e2ant_setsw_fulltime_dacswing(struct btc_coexist *btcoexist, + bool sw_dac_swingon, + u32 sw_dac_swinglvl) +{ + if (sw_dac_swingon) + halbtc8192e2ant_set_dac_swingreg(btcoexist, sw_dac_swinglvl); + else + halbtc8192e2ant_set_dac_swingreg(btcoexist, 0x18); +} + + +void halbtc8192e2ant_DacSwing(struct btc_coexist *btcoexist, + bool force_exec, bool dac_swingon, + u32 dac_swinglvl) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, + "[BTCoex], %s turn DacSwing=%s, dac_swinglvl=0x%x\n", + (force_exec? "force to":""), + ((dac_swingon)? "ON":"OFF"), dac_swinglvl); + coex_dm->cur_dac_swing_on = dac_swingon; + coex_dm->cur_dac_swing_lvl = dac_swinglvl; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, + "[BTCoex], bPreDacSwingOn=%d, preDacSwingLvl=0x%x, ", + coex_dm->pre_dac_swing_on, + coex_dm->pre_dac_swing_lvl); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, + "bCurDacSwingOn=%d, curDacSwingLvl=0x%x\n", + coex_dm->cur_dac_swing_on, + coex_dm->cur_dac_swing_lvl); + + if ((coex_dm->pre_dac_swing_on == coex_dm->cur_dac_swing_on) && + (coex_dm->pre_dac_swing_lvl == coex_dm->cur_dac_swing_lvl)) + return; + } + mdelay(30); + halbtc8192e2ant_setsw_fulltime_dacswing(btcoexist, dac_swingon, + dac_swinglvl); + + coex_dm->pre_dac_swing_on = coex_dm->cur_dac_swing_on; + coex_dm->pre_dac_swing_lvl = coex_dm->cur_dac_swing_lvl; +} + +void halbtc8192e2ant_set_adc_backoff(struct btc_coexist *btcoexist, + bool adc_backoff) +{ + if(adc_backoff) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], BB BackOff Level On!\n"); + btcoexist->btc_write_1byte_bitmask(btcoexist, 0xc05, 0x30, 0x3); + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], BB BackOff Level Off!\n"); + btcoexist->btc_write_1byte_bitmask(btcoexist, 0xc05, 0x30, 0x1); + } +} + +void halbtc8192e2ant_adc_backoff(struct btc_coexist *btcoexist, + bool force_exec, bool adc_backoff) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, + "[BTCoex], %s turn AdcBackOff = %s\n", + (force_exec? "force to":""), ((adc_backoff)? "ON":"OFF")); + coex_dm->cur_adc_back_off = adc_backoff; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, + "[BTCoex], bPreAdcBackOff=%d, bCurAdcBackOff=%d\n", + coex_dm->pre_adc_back_off, coex_dm->cur_adc_back_off); + + if (coex_dm->pre_adc_back_off == coex_dm->cur_adc_back_off) + return; + } + halbtc8192e2ant_set_adc_backoff(btcoexist, coex_dm->cur_adc_back_off); + + coex_dm->pre_adc_back_off = coex_dm->cur_adc_back_off; +} + +void halbtc8192e2ant_set_agc_table(struct btc_coexist *btcoexist, + bool agc_table_en) +{ + + /* BB AGC Gain Table */ + if (agc_table_en) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], BB Agc Table On!\n"); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0x0a1A0001); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0x091B0001); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0x081C0001); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0x071D0001); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0x061E0001); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0x051F0001); + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], BB Agc Table Off!\n"); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0xaa1A0001); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0xa91B0001); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0xa81C0001); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0xa71D0001); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0xa61E0001); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0xa51F0001); + } +} + +void halbtc8192e2ant_AgcTable(struct btc_coexist *btcoexist, + bool force_exec, bool agc_table_en) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, + "[BTCoex], %s %s Agc Table\n", + (force_exec? "force to":""), + ((agc_table_en)? "Enable":"Disable")); + coex_dm->cur_agc_table_en = agc_table_en; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, + "[BTCoex], bPreAgcTableEn=%d, bCurAgcTableEn=%d\n", + coex_dm->pre_agc_table_en, coex_dm->cur_agc_table_en); + + if (coex_dm->pre_agc_table_en == coex_dm->cur_agc_table_en) + return; + } + halbtc8192e2ant_set_agc_table(btcoexist, agc_table_en); + + coex_dm->pre_agc_table_en = coex_dm->cur_agc_table_en; +} + +void halbtc8192e2ant_set_coex_table(struct btc_coexist *btcoexist, + u32 val0x6c0, u32 val0x6c4, + u32 val0x6c8, u8 val0x6cc) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], set coex table, set 0x6c0=0x%x\n", val0x6c0); + btcoexist->btc_write_4byte(btcoexist, 0x6c0, val0x6c0); + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], set coex table, set 0x6c4=0x%x\n", val0x6c4); + btcoexist->btc_write_4byte(btcoexist, 0x6c4, val0x6c4); + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], set coex table, set 0x6c8=0x%x\n", val0x6c8); + btcoexist->btc_write_4byte(btcoexist, 0x6c8, val0x6c8); + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], set coex table, set 0x6cc=0x%x\n", val0x6cc); + btcoexist->btc_write_1byte(btcoexist, 0x6cc, val0x6cc); +} + +void halbtc8192e2ant_coex_table(struct btc_coexist *btcoexist, bool force_exec, + u32 val0x6c0, u32 val0x6c4, + u32 val0x6c8, u8 val0x6cc) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, + "[BTCoex], %s write Coex Table 0x6c0=0x%x, ", + (force_exec? "force to":""), val0x6c0); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, + "0x6c4=0x%x, 0x6c8=0x%x, 0x6cc=0x%x\n", + val0x6c4, val0x6c8, val0x6cc); + coex_dm->cur_val0x6c0 = val0x6c0; + coex_dm->cur_val0x6c4 = val0x6c4; + coex_dm->cur_val0x6c8 = val0x6c8; + coex_dm->cur_val0x6cc = val0x6cc; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, + "[BTCoex], preVal0x6c0=0x%x, preVal0x6c4=0x%x, ", + coex_dm->pre_val0x6c0, coex_dm->pre_val0x6c4); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, + "preVal0x6c8=0x%x, preVal0x6cc=0x%x !!\n", + coex_dm->pre_val0x6c8, coex_dm->pre_val0x6cc); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, + "[BTCoex], curVal0x6c0=0x%x, curVal0x6c4=0x%x, \n", + coex_dm->cur_val0x6c0, coex_dm->cur_val0x6c4); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, + "curVal0x6c8=0x%x, curVal0x6cc=0x%x !!\n", + coex_dm->cur_val0x6c8, coex_dm->cur_val0x6cc); + + if ((coex_dm->pre_val0x6c0 == coex_dm->cur_val0x6c0) && + (coex_dm->pre_val0x6c4 == coex_dm->cur_val0x6c4) && + (coex_dm->pre_val0x6c8 == coex_dm->cur_val0x6c8) && + (coex_dm->pre_val0x6cc == coex_dm->cur_val0x6cc)) + return; + } + halbtc8192e2ant_set_coex_table(btcoexist, val0x6c0, val0x6c4, + val0x6c8, val0x6cc); + + coex_dm->pre_val0x6c0 = coex_dm->cur_val0x6c0; + coex_dm->pre_val0x6c4 = coex_dm->cur_val0x6c4; + coex_dm->pre_val0x6c8 = coex_dm->cur_val0x6c8; + coex_dm->pre_val0x6cc = coex_dm->cur_val0x6cc; +} + +void halbtc8192e2ant_coex_table_with_type(struct btc_coexist *btcoexist, + bool force_exec, u8 type) +{ + switch (type) { + case 0: + halbtc8192e2ant_coex_table(btcoexist, force_exec, 0x55555555, + 0x5a5a5a5a, 0xffffff, 0x3); + break; + case 1: + halbtc8192e2ant_coex_table(btcoexist, force_exec, 0x5a5a5a5a, + 0x5a5a5a5a, 0xffffff, 0x3); + break; + case 2: + halbtc8192e2ant_coex_table(btcoexist, force_exec, 0x55555555, + 0x5ffb5ffb, 0xffffff, 0x3); + break; + case 3: + halbtc8192e2ant_coex_table(btcoexist, force_exec, 0xdfffdfff, + 0x5fdb5fdb, 0xffffff, 0x3); + break; + case 4: + halbtc8192e2ant_coex_table(btcoexist, force_exec, 0xdfffdfff, + 0x5ffb5ffb, 0xffffff, 0x3); + break; + default: + break; + } +} + +void halbtc8192e2ant_set_fw_ignore_wlanact(struct btc_coexist *btcoexist, + bool enable) +{ + u8 h2c_parameter[1] ={0}; + + if (enable) + h2c_parameter[0] |= BIT0; /* function enable */ + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, + "[BTCoex]set FW for BT Ignore Wlan_Act, FW write 0x63=0x%x\n", + h2c_parameter[0]); + + btcoexist->btc_fill_h2c(btcoexist, 0x63, 1, h2c_parameter); +} + +void halbtc8192e2ant_IgnoreWlanAct(struct btc_coexist *btcoexist, + bool force_exec, bool enable) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, + "[BTCoex], %s turn Ignore WlanAct %s\n", + (force_exec? "force to":""), (enable? "ON":"OFF")); + coex_dm->cur_ignore_wlan_act = enable; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], bPreIgnoreWlanAct = %d ", + coex_dm->pre_ignore_wlan_act); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "bCurIgnoreWlanAct = %d!!\n", + coex_dm->cur_ignore_wlan_act); + + if (coex_dm->pre_ignore_wlan_act == + coex_dm->cur_ignore_wlan_act) + return; + } + halbtc8192e2ant_set_fw_ignore_wlanact(btcoexist, enable); + + coex_dm->pre_ignore_wlan_act = coex_dm->cur_ignore_wlan_act; +} + +void halbtc8192e2ant_SetFwPstdma(struct btc_coexist *btcoexist, u8 byte1, + u8 byte2, u8 byte3, u8 byte4, u8 byte5) +{ + u8 h2c_parameter[5] ={0}; + + h2c_parameter[0] = byte1; + h2c_parameter[1] = byte2; + h2c_parameter[2] = byte3; + h2c_parameter[3] = byte4; + h2c_parameter[4] = byte5; + + coex_dm->ps_tdma_para[0] = byte1; + coex_dm->ps_tdma_para[1] = byte2; + coex_dm->ps_tdma_para[2] = byte3; + coex_dm->ps_tdma_para[3] = byte4; + coex_dm->ps_tdma_para[4] = byte5; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, + "[BTCoex], FW write 0x60(5bytes)=0x%x%08x\n", + h2c_parameter[0], + h2c_parameter[1] << 24 | h2c_parameter[2] << 16 | + h2c_parameter[3] << 8 | h2c_parameter[4]); + + btcoexist->btc_fill_h2c(btcoexist, 0x60, 5, h2c_parameter); +} + +void halbtc8192e2ant_sw_mechanism1(struct btc_coexist *btcoexist, + bool shrink_rx_lpf, bool low_penalty_ra, + bool limited_dig, bool btlan_constrain) +{ + halbtc8192e2ant_rf_shrink(btcoexist, NORMAL_EXEC, shrink_rx_lpf); +} + +void halbtc8192e2ant_sw_mechanism2(struct btc_coexist *btcoexist, + bool agc_table_shift, bool adc_backoff, + bool sw_dac_swing, u32 dac_swinglvl) +{ + halbtc8192e2ant_AgcTable(btcoexist, NORMAL_EXEC, agc_table_shift); + halbtc8192e2ant_DacSwing(btcoexist, NORMAL_EXEC, sw_dac_swing, + dac_swinglvl); +} + +void halbtc8192e2ant_ps_tdma(struct btc_coexist *btcoexist, + bool force_exec, bool turn_on, u8 type) +{ + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, + "[BTCoex], %s turn %s PS TDMA, type=%d\n", + (force_exec? "force to":""), (turn_on? "ON":"OFF"), type); + coex_dm->cur_ps_tdma_on = turn_on; + coex_dm->cur_ps_tdma = type; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], bPrePsTdmaOn = %d, bCurPsTdmaOn = %d!!\n", + coex_dm->pre_ps_tdma_on, coex_dm->cur_ps_tdma_on); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], prePsTdma = %d, curPsTdma = %d!!\n", + coex_dm->pre_ps_tdma, coex_dm->cur_ps_tdma); + + if ((coex_dm->pre_ps_tdma_on == coex_dm->cur_ps_tdma_on) && + (coex_dm->pre_ps_tdma == coex_dm->cur_ps_tdma)) + return; + } + if (turn_on) { + switch (type) { + case 1: + default: + halbtc8192e2ant_SetFwPstdma(btcoexist, 0xe3, 0x1a, + 0x1a, 0xe1, 0x90); + break; + case 2: + halbtc8192e2ant_SetFwPstdma(btcoexist, 0xe3, 0x12, + 0x12, 0xe1, 0x90); + break; + case 3: + halbtc8192e2ant_SetFwPstdma(btcoexist, 0xe3, 0x1c, + 0x3, 0xf1, 0x90); + break; + case 4: + halbtc8192e2ant_SetFwPstdma(btcoexist, 0xe3, 0x10, + 0x3, 0xf1, 0x90); + break; + case 5: + halbtc8192e2ant_SetFwPstdma(btcoexist, 0xe3, 0x1a, + 0x1a, 0x60, 0x90); + break; + case 6: + halbtc8192e2ant_SetFwPstdma(btcoexist, 0xe3, 0x12, + 0x12, 0x60, 0x90); + break; + case 7: + halbtc8192e2ant_SetFwPstdma(btcoexist, 0xe3, 0x1c, + 0x3, 0x70, 0x90); + break; + case 8: + halbtc8192e2ant_SetFwPstdma(btcoexist, 0xa3, 0x10, + 0x3, 0x70, 0x90); + break; + case 9: + halbtc8192e2ant_SetFwPstdma(btcoexist, 0xe3, 0x1a, + 0x1a, 0xe1, 0x10); + break; + case 10: + halbtc8192e2ant_SetFwPstdma(btcoexist, 0xe3, 0x12, + 0x12, 0xe1, 0x10); + break; + case 11: + halbtc8192e2ant_SetFwPstdma(btcoexist, 0xe3, 0x1c, + 0x3, 0xf1, 0x10); + break; + case 12: + halbtc8192e2ant_SetFwPstdma(btcoexist, 0xe3, 0x10, + 0x3, 0xf1, 0x10); + break; + case 13: + halbtc8192e2ant_SetFwPstdma(btcoexist, 0xe3, 0x1a, + 0x1a, 0xe0, 0x10); + break; + case 14: + halbtc8192e2ant_SetFwPstdma(btcoexist, 0xe3, 0x12, + 0x12, 0xe0, 0x10); + break; + case 15: + halbtc8192e2ant_SetFwPstdma(btcoexist, 0xe3, 0x1c, + 0x3, 0xf0, 0x10); + break; + case 16: + halbtc8192e2ant_SetFwPstdma(btcoexist, 0xe3, 0x12, + 0x3, 0xf0, 0x10); + break; + case 17: + halbtc8192e2ant_SetFwPstdma(btcoexist, 0x61, 0x20, + 0x03, 0x10, 0x10); + break; + case 18: + halbtc8192e2ant_SetFwPstdma(btcoexist, 0xe3, 0x5, + 0x5, 0xe1, 0x90); + break; + case 19: + halbtc8192e2ant_SetFwPstdma(btcoexist, 0xe3, 0x25, + 0x25, 0xe1, 0x90); + break; + case 20: + halbtc8192e2ant_SetFwPstdma(btcoexist, 0xe3, 0x25, + 0x25, 0x60, 0x90); + break; + case 21: + halbtc8192e2ant_SetFwPstdma(btcoexist, 0xe3, 0x15, + 0x03, 0x70, 0x90); + break; + case 71: + halbtc8192e2ant_SetFwPstdma(btcoexist, 0xe3, 0x1a, + 0x1a, 0xe1, 0x90); + break; + } + } else { + /* disable PS tdma */ + switch (type) { + default: + case 0: + halbtc8192e2ant_SetFwPstdma(btcoexist, 0x8, 0x0, 0x0, + 0x0, 0x0); + btcoexist->btc_write_1byte(btcoexist, 0x92c, 0x4); + break; + case 1: + halbtc8192e2ant_SetFwPstdma(btcoexist, 0x0, 0x0, 0x0, + 0x8, 0x0); + mdelay(5); + btcoexist->btc_write_1byte(btcoexist, 0x92c, 0x20); + break; + } + } + + /* update pre state */ + coex_dm->pre_ps_tdma_on = coex_dm->cur_ps_tdma_on; + coex_dm->pre_ps_tdma = coex_dm->cur_ps_tdma; +} + +void halbtc8192e2ant_set_switch_sstype(struct btc_coexist *btcoexist, u8 sstype) +{ + u8 mimops = BTC_MIMO_PS_DYNAMIC; + u32 disra_mask = 0x0; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], REAL set SS Type = %d\n", sstype); + + disra_mask = halbtc8192e2ant_decidera_mask(btcoexist, sstype, + coex_dm->curra_masktype); + halbtc8192e2ant_Updatera_mask(btcoexist, FORCE_EXEC, disra_mask); + + if (sstype == 1) { + halbtc8192e2ant_ps_tdma(btcoexist, FORCE_EXEC, false, 1); + /* switch ofdm path */ + btcoexist->btc_write_1byte(btcoexist, 0xc04, 0x11); + btcoexist->btc_write_1byte(btcoexist, 0xd04, 0x1); + btcoexist->btc_write_4byte(btcoexist, 0x90c, 0x81111111); + /* switch cck patch */ + btcoexist->btc_write_1byte_bitmask(btcoexist, 0xe77, 0x4, 0x1); + btcoexist->btc_write_1byte(btcoexist, 0xa07, 0x81); + mimops=BTC_MIMO_PS_STATIC; + } else if (sstype == 2) { + halbtc8192e2ant_ps_tdma(btcoexist, FORCE_EXEC, false, 0); + btcoexist->btc_write_1byte(btcoexist, 0xc04, 0x33); + btcoexist->btc_write_1byte(btcoexist, 0xd04, 0x3); + btcoexist->btc_write_4byte(btcoexist, 0x90c, 0x81121313); + btcoexist->btc_write_1byte_bitmask(btcoexist, 0xe77, 0x4, 0x0); + btcoexist->btc_write_1byte(btcoexist, 0xa07, 0x41); + mimops=BTC_MIMO_PS_DYNAMIC; + } + /* set rx 1ss or 2ss */ + btcoexist->btc_set(btcoexist, BTC_SET_ACT_SEND_MIMO_PS, &mimops); +} + +void halbtc8192e2ant_switch_sstype(struct btc_coexist *btcoexist, + bool force_exec, u8 new_sstype) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], %s Switch SS Type = %d\n", + (force_exec? "force to":""), new_sstype); + coex_dm->cur_sstype = new_sstype; + + if (!force_exec) { + if (coex_dm->pre_sstype == coex_dm->cur_sstype) + return; + } + halbtc8192e2ant_set_switch_sstype(btcoexist, coex_dm->cur_sstype); + + coex_dm->pre_sstype = coex_dm->cur_sstype; +} + +void halbtc8192e2ant_coex_alloff(struct btc_coexist *btcoexist) +{ + /* fw all off */ + halbtc8192e2ant_ps_tdma(btcoexist, NORMAL_EXEC, false, 1); + halbtc8192e2ant_fw_dac_swinglvl(btcoexist, NORMAL_EXEC, 6); + halbtc8192e2ant_dec_btpwr(btcoexist, NORMAL_EXEC, 0); + + /* sw all off */ + halbtc8192e2ant_sw_mechanism1(btcoexist, false, false, false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, false, false, false, 0x18); + + /* hw all off */ + halbtc8192e2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 0); +} + +void halbtc8192e2ant_init_coex_dm(struct btc_coexist *btcoexist) +{ + /* force to reset coex mechanism */ + + halbtc8192e2ant_ps_tdma(btcoexist, FORCE_EXEC, false, 1); + halbtc8192e2ant_fw_dac_swinglvl(btcoexist, FORCE_EXEC, 6); + halbtc8192e2ant_dec_btpwr(btcoexist, FORCE_EXEC, 0); + + halbtc8192e2ant_coex_table_with_type(btcoexist, FORCE_EXEC, 0); + halbtc8192e2ant_switch_sstype(btcoexist, FORCE_EXEC, 2); + + halbtc8192e2ant_sw_mechanism1(btcoexist, false, false, false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, false, false, false, 0x18); +} + +void halbtc8192e2ant_action_bt_inquiry(struct btc_coexist *btcoexist) +{ + bool low_pwr_disable = true; + + btcoexist->btc_set(btcoexist, BTC_SET_ACT_DISABLE_LOW_POWER, + &low_pwr_disable); + + halbtc8192e2ant_switch_sstype(btcoexist, NORMAL_EXEC, 1); + + halbtc8192e2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 2); + halbtc8192e2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 3); + halbtc8192e2ant_fw_dac_swinglvl(btcoexist, NORMAL_EXEC, 6); + halbtc8192e2ant_dec_btpwr(btcoexist, NORMAL_EXEC, 0); + + halbtc8192e2ant_sw_mechanism1(btcoexist, false, false, false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, false, false, false, 0x18); +} + +bool halbtc8192e2ant_is_common_action(struct btc_coexist *btcoexist) +{ + struct btc_bt_link_info *bt_link_info = &btcoexist->bt_link_info; + bool common = false, wifi_connected = false, wifi_busy = false; + bool bt_hson = false, low_pwr_disable = false; + + btcoexist->btc_get(btcoexist, BTC_GET_BL_HS_OPERATION, &bt_hson); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_CONNECTED, + &wifi_connected); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_BUSY, &wifi_busy); + + if (bt_link_info->sco_exist || bt_link_info->hid_exist) + halbtc8192e2ant_limited_tx(btcoexist, NORMAL_EXEC, 1, 0, 0, 0); + else + halbtc8192e2ant_limited_tx(btcoexist, NORMAL_EXEC, 0, 0, 0, 0); + + if (!wifi_connected) { + low_pwr_disable = false; + btcoexist->btc_set(btcoexist, BTC_SET_ACT_DISABLE_LOW_POWER, + &low_pwr_disable); + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Wifi non-connected idle!!\n"); + + if ((BT_8192E_2ANT_BT_STATUS_NON_CONNECTED_IDLE == + coex_dm->bt_status) || + (BT_8192E_2ANT_BT_STATUS_CONNECTED_IDLE == + coex_dm->bt_status)) { + halbtc8192e2ant_switch_sstype(btcoexist, NORMAL_EXEC, + 2); + halbtc8192e2ant_coex_table_with_type(btcoexist, + NORMAL_EXEC, 1); + halbtc8192e2ant_ps_tdma(btcoexist, NORMAL_EXEC, false, + 0); + } else { + halbtc8192e2ant_switch_sstype(btcoexist, NORMAL_EXEC, + 1); + halbtc8192e2ant_coex_table_with_type(btcoexist, + NORMAL_EXEC, 0); + halbtc8192e2ant_ps_tdma(btcoexist, NORMAL_EXEC, false, + 1); + } + + halbtc8192e2ant_fw_dac_swinglvl(btcoexist, NORMAL_EXEC, 6); + halbtc8192e2ant_dec_btpwr(btcoexist, NORMAL_EXEC, 0); + + halbtc8192e2ant_sw_mechanism1(btcoexist, false, false, false, + false); + halbtc8192e2ant_sw_mechanism2(btcoexist, false, false, false, + 0x18); + + common = true; + } else { + if (BT_8192E_2ANT_BT_STATUS_NON_CONNECTED_IDLE == + coex_dm->bt_status) { + low_pwr_disable = false; + btcoexist->btc_set(btcoexist, + BTC_SET_ACT_DISABLE_LOW_POWER, + &low_pwr_disable); + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "Wifi connected + BT non connected-idle!!\n"); + + halbtc8192e2ant_switch_sstype(btcoexist, NORMAL_EXEC, + 2); + halbtc8192e2ant_coex_table_with_type(btcoexist, + NORMAL_EXEC, 1); + halbtc8192e2ant_ps_tdma(btcoexist, NORMAL_EXEC, false, + 0); + halbtc8192e2ant_fw_dac_swinglvl(btcoexist, NORMAL_EXEC, + 6); + halbtc8192e2ant_dec_btpwr(btcoexist, NORMAL_EXEC, 0); + + halbtc8192e2ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + + common = true; + } else if (BT_8192E_2ANT_BT_STATUS_CONNECTED_IDLE == + coex_dm->bt_status) { + low_pwr_disable = true; + btcoexist->btc_set(btcoexist, + BTC_SET_ACT_DISABLE_LOW_POWER, + &low_pwr_disable); + + if (bt_hson) + return false; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "Wifi connected + BT connected-idle!!\n"); + + halbtc8192e2ant_switch_sstype(btcoexist, NORMAL_EXEC, + 2); + halbtc8192e2ant_coex_table_with_type(btcoexist, + NORMAL_EXEC, 1); + halbtc8192e2ant_ps_tdma(btcoexist, NORMAL_EXEC, false, + 0); + halbtc8192e2ant_fw_dac_swinglvl(btcoexist, NORMAL_EXEC, + 6); + halbtc8192e2ant_dec_btpwr(btcoexist, NORMAL_EXEC, 0); + + halbtc8192e2ant_sw_mechanism1(btcoexist, true, false, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + + common = true; + } else { + low_pwr_disable = true; + btcoexist->btc_set(btcoexist, + BTC_SET_ACT_DISABLE_LOW_POWER, + &low_pwr_disable); + + if (wifi_busy) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "Wifi Connected-Busy + BT Busy!!\n"); + common = false; + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "Wifi Connected-Idle + BT Busy!!\n"); + + halbtc8192e2ant_switch_sstype(btcoexist, + NORMAL_EXEC, 1); + halbtc8192e2ant_coex_table_with_type(btcoexist, + NORMAL_EXEC, + 2); + halbtc8192e2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 21); + halbtc8192e2ant_fw_dac_swinglvl(btcoexist, + NORMAL_EXEC, 6); + halbtc8192e2ant_dec_btpwr(btcoexist, + NORMAL_EXEC, 0); + halbtc8192e2ant_sw_mechanism1(btcoexist, false, + false, false, + false); + halbtc8192e2ant_sw_mechanism2(btcoexist, false, + false, false, + 0x18); + common = true; + } + } + } + return common; +} + +void halbtc8192e2ant_tdma_duration_adjust(struct btc_coexist *btcoexist, + bool sco_hid, bool tx_pause, + u8 max_interval) +{ + static int up, dn, m, n, wait_cnt; + /* 0: no change, +1: increase WiFi duration, + * -1: decrease WiFi duration */ + int result; + u8 retry_cnt = 0; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, + "[BTCoex], TdmaDurationAdjust()\n"); + + if (!coex_dm->auto_tdma_adjust) { + coex_dm->auto_tdma_adjust = true; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], first run TdmaDurationAdjust()!!\n"); + if (sco_hid) { + if (tx_pause) { + if (max_interval == 1) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 13); + coex_dm->ps_tdma_du_adj_type = 13; + } else if (max_interval == 2) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 14); + coex_dm->ps_tdma_du_adj_type = 14; + } else if (max_interval == 3) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 15); + coex_dm->ps_tdma_du_adj_type = 15; + } else { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 15); + coex_dm->ps_tdma_du_adj_type = 15; + } + } else { + if (max_interval == 1) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 9); + coex_dm->ps_tdma_du_adj_type = 9; + } else if (max_interval == 2) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 10); + coex_dm->ps_tdma_du_adj_type = 10; + } else if (max_interval == 3) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 11); + coex_dm->ps_tdma_du_adj_type = 11; + } else { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 11); + coex_dm->ps_tdma_du_adj_type = 11; + } + } + } else { + if (tx_pause) { + if (max_interval == 1) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 5); + coex_dm->ps_tdma_du_adj_type = 5; + } else if (max_interval == 2) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 6); + coex_dm->ps_tdma_du_adj_type = 6; + } else if (max_interval == 3) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 7); + coex_dm->ps_tdma_du_adj_type = 7; + } else { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 7); + coex_dm->ps_tdma_du_adj_type = 7; + } + } else { + if (max_interval == 1) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 1); + coex_dm->ps_tdma_du_adj_type = 1; + } else if (max_interval == 2) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 2); + coex_dm->ps_tdma_du_adj_type = 2; + } else if (max_interval == 3) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 3); + coex_dm->ps_tdma_du_adj_type = 3; + } else { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 3); + coex_dm->ps_tdma_du_adj_type = 3; + } + } + } + + up = 0; + dn = 0; + m = 1; + n= 3; + result = 0; + wait_cnt = 0; + } else { + /* accquire the BT TRx retry count from BT_Info byte2 */ + retry_cnt = coex_sta->bt_retry_cnt; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], retry_cnt = %d\n", retry_cnt); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], up=%d, dn=%d, m=%d, n=%d, wait_cnt=%d\n", + up, dn, m, n, wait_cnt); + result = 0; + wait_cnt++; + /* no retry in the last 2-second duration */ + if (retry_cnt == 0) { + up++; + dn--; + + if (dn <= 0) + dn = 0; + + if (up >= n) { + wait_cnt = 0; + n = 3; + up = 0; + dn = 0; + result = 1; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_TRACE_FW_DETAIL, + "[BTCoex]Increase wifi duration!!\n"); + } + } else if (retry_cnt <= 3) { + up--; + dn++; + + if (up <= 0) + up = 0; + + if (dn == 2) { + if (wait_cnt <= 2) + m++; + else + m = 1; + + if (m >= 20) + m = 20; + + n = 3 * m; + up = 0; + dn = 0; + wait_cnt = 0; + result = -1; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_TRACE_FW_DETAIL, + "Reduce wifi duration for retry<3\n"); + } + } else { + if (wait_cnt == 1) + m++; + else + m = 1; + + if (m >= 20) + m = 20; + + n = 3*m; + up = 0; + dn = 0; + wait_cnt = 0; + result = -1; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "Decrease wifi duration for retryCounter>3!!\n"); + } + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], max Interval = %d\n", max_interval); + if (max_interval == 1) { + if (tx_pause) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], TxPause = 1\n"); + + if (coex_dm->cur_ps_tdma == 71) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 5); + coex_dm->ps_tdma_du_adj_type = 5; + } else if (coex_dm->cur_ps_tdma == 1) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 5); + coex_dm->ps_tdma_du_adj_type = 5; + } else if (coex_dm->cur_ps_tdma == 2) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 6); + coex_dm->ps_tdma_du_adj_type = 6; + } else if (coex_dm->cur_ps_tdma == 3) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 7); + coex_dm->ps_tdma_du_adj_type = 7; + } else if (coex_dm->cur_ps_tdma == 4) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 8); + coex_dm->ps_tdma_du_adj_type = 8; + } + if (coex_dm->cur_ps_tdma == 9) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 13); + coex_dm->ps_tdma_du_adj_type = 13; + } else if (coex_dm->cur_ps_tdma == 10) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 14); + coex_dm->ps_tdma_du_adj_type = 14; + } else if (coex_dm->cur_ps_tdma == 11) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 15); + coex_dm->ps_tdma_du_adj_type = 15; + } else if (coex_dm->cur_ps_tdma == 12) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 16); + coex_dm->ps_tdma_du_adj_type = 16; + } + + if (result == -1) { + if (coex_dm->cur_ps_tdma == 5) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 6); + coex_dm->ps_tdma_du_adj_type = + 6; + } else if (coex_dm->cur_ps_tdma == 6) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 7); + coex_dm->ps_tdma_du_adj_type = + 7; + } else if (coex_dm->cur_ps_tdma == 7) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 8); + coex_dm->ps_tdma_du_adj_type = + 8; + } else if (coex_dm->cur_ps_tdma == 13) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 14); + coex_dm->ps_tdma_du_adj_type = + 14; + } else if (coex_dm->cur_ps_tdma == 14) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 15); + coex_dm->ps_tdma_du_adj_type = + 15; + } else if (coex_dm->cur_ps_tdma == 15) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 16); + coex_dm->ps_tdma_du_adj_type = + 16; + } + } else if (result == 1) { + if (coex_dm->cur_ps_tdma == 8) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 7); + coex_dm->ps_tdma_du_adj_type = + 7; + } else if (coex_dm->cur_ps_tdma == 7) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 6); + coex_dm->ps_tdma_du_adj_type = + 6; + } else if (coex_dm->cur_ps_tdma == 6) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 5); + coex_dm->ps_tdma_du_adj_type = + 5; + } else if (coex_dm->cur_ps_tdma == 16) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 15); + coex_dm->ps_tdma_du_adj_type = + 15; + } else if (coex_dm->cur_ps_tdma == 15) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 14); + coex_dm->ps_tdma_du_adj_type = + 14; + } else if (coex_dm->cur_ps_tdma == 14) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 13); + coex_dm->ps_tdma_du_adj_type = + 13; + } + } + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_TRACE_FW_DETAIL, + "[BTCoex], TxPause = 0\n"); + if (coex_dm->cur_ps_tdma == 5) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 71); + coex_dm->ps_tdma_du_adj_type = 71; + } else if (coex_dm->cur_ps_tdma == 6) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 2); + coex_dm->ps_tdma_du_adj_type = 2; + } else if (coex_dm->cur_ps_tdma == 7) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 3); + coex_dm->ps_tdma_du_adj_type = 3; + } else if (coex_dm->cur_ps_tdma == 8) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 4); + coex_dm->ps_tdma_du_adj_type = 4; + } + if (coex_dm->cur_ps_tdma == 13) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 9); + coex_dm->ps_tdma_du_adj_type = 9; + } else if (coex_dm->cur_ps_tdma == 14) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 10); + coex_dm->ps_tdma_du_adj_type = 10; + } else if (coex_dm->cur_ps_tdma == 15) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 11); + coex_dm->ps_tdma_du_adj_type = 11; + } else if (coex_dm->cur_ps_tdma == 16) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 12); + coex_dm->ps_tdma_du_adj_type = 12; + } + + if (result == -1) { + if (coex_dm->cur_ps_tdma == 71) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 1); + coex_dm->ps_tdma_du_adj_type = + 1; + } else if (coex_dm->cur_ps_tdma == 1) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 2); + coex_dm->ps_tdma_du_adj_type = + 2; + } else if (coex_dm->cur_ps_tdma == 2) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 3); + coex_dm->ps_tdma_du_adj_type = + 3; + } else if (coex_dm->cur_ps_tdma == 3) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 4); + coex_dm->ps_tdma_du_adj_type = + 4; + } else if (coex_dm->cur_ps_tdma == 9) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 10); + coex_dm->ps_tdma_du_adj_type = + 10; + } else if (coex_dm->cur_ps_tdma == 10) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 11); + coex_dm->ps_tdma_du_adj_type = + 11; + } else if (coex_dm->cur_ps_tdma == 11) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 12); + coex_dm->ps_tdma_du_adj_type = + 12; + } + } else if (result == 1) { + if (coex_dm->cur_ps_tdma == 4) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 3); + coex_dm->ps_tdma_du_adj_type = + 3; + } else if (coex_dm->cur_ps_tdma == 3) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 2); + coex_dm->ps_tdma_du_adj_type = + 2; + } else if (coex_dm->cur_ps_tdma == 2) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 1); + coex_dm->ps_tdma_du_adj_type = + 1; + } else if (coex_dm->cur_ps_tdma == 1) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 71); + coex_dm->ps_tdma_du_adj_type = + 71; + } else if (coex_dm->cur_ps_tdma == 12) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 11); + coex_dm->ps_tdma_du_adj_type = + 11; + } else if (coex_dm->cur_ps_tdma == 11) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 10); + coex_dm->ps_tdma_du_adj_type = + 10; + } else if (coex_dm->cur_ps_tdma == 10) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 9); + coex_dm->ps_tdma_du_adj_type = + 9; + } + } + } + } else if (max_interval == 2) { + if (tx_pause) { + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_TRACE_FW_DETAIL, + "[BTCoex], TxPause = 1\n"); + if (coex_dm->cur_ps_tdma == 1) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 6); + coex_dm->ps_tdma_du_adj_type = 6; + } else if (coex_dm->cur_ps_tdma == 2) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 6); + coex_dm->ps_tdma_du_adj_type = 6; + } else if (coex_dm->cur_ps_tdma == 3) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 7); + coex_dm->ps_tdma_du_adj_type = 7; + } else if (coex_dm->cur_ps_tdma == 4) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 8); + coex_dm->ps_tdma_du_adj_type = 8; + } + if (coex_dm->cur_ps_tdma == 9) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 14); + coex_dm->ps_tdma_du_adj_type = 14; + } else if (coex_dm->cur_ps_tdma == 10) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 14); + coex_dm->ps_tdma_du_adj_type = 14; + } else if (coex_dm->cur_ps_tdma == 11) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 15); + coex_dm->ps_tdma_du_adj_type = 15; + } else if (coex_dm->cur_ps_tdma == 12) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 16); + coex_dm->ps_tdma_du_adj_type = 16; + } + if (result == -1) { + if (coex_dm->cur_ps_tdma == 5) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 6); + coex_dm->ps_tdma_du_adj_type = + 6; + } else if (coex_dm->cur_ps_tdma == 6) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 7); + coex_dm->ps_tdma_du_adj_type = + 7; + } else if (coex_dm->cur_ps_tdma == 7) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 8); + coex_dm->ps_tdma_du_adj_type = + 8; + } else if (coex_dm->cur_ps_tdma == 13) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 14); + coex_dm->ps_tdma_du_adj_type = + 14; + } else if (coex_dm->cur_ps_tdma == 14) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 15); + coex_dm->ps_tdma_du_adj_type = + 15; + } else if (coex_dm->cur_ps_tdma == 15) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 16); + coex_dm->ps_tdma_du_adj_type = + 16; + } + } else if (result == 1) { + if (coex_dm->cur_ps_tdma == 8) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 7); + coex_dm->ps_tdma_du_adj_type = + 7; + } else if (coex_dm->cur_ps_tdma == 7) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 6); + coex_dm->ps_tdma_du_adj_type = + 6; + } else if (coex_dm->cur_ps_tdma == 6) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 6); + coex_dm->ps_tdma_du_adj_type = + 6; + } else if (coex_dm->cur_ps_tdma == 16) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 15); + coex_dm->ps_tdma_du_adj_type = + 15; + } else if (coex_dm->cur_ps_tdma == 15) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 14); + coex_dm->ps_tdma_du_adj_type = + 14; + } else if (coex_dm->cur_ps_tdma == 14) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 14); + coex_dm->ps_tdma_du_adj_type = + 14; + } + } + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_TRACE_FW_DETAIL, + "[BTCoex], TxPause = 0\n"); + if (coex_dm->cur_ps_tdma == 5) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 2); + coex_dm->ps_tdma_du_adj_type = 2; + } else if (coex_dm->cur_ps_tdma == 6) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 2); + coex_dm->ps_tdma_du_adj_type = 2; + } else if (coex_dm->cur_ps_tdma == 7) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 3); + coex_dm->ps_tdma_du_adj_type = 3; + } else if (coex_dm->cur_ps_tdma == 8) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 4); + coex_dm->ps_tdma_du_adj_type = 4; + } + if (coex_dm->cur_ps_tdma == 13) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 10); + coex_dm->ps_tdma_du_adj_type = 10; + } else if (coex_dm->cur_ps_tdma == 14) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 10); + coex_dm->ps_tdma_du_adj_type = 10; + } else if (coex_dm->cur_ps_tdma == 15) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 11); + coex_dm->ps_tdma_du_adj_type = 11; + } else if (coex_dm->cur_ps_tdma == 16) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 12); + coex_dm->ps_tdma_du_adj_type = 12; + } + if (result == -1) { + if (coex_dm->cur_ps_tdma == 1) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 2); + coex_dm->ps_tdma_du_adj_type = + 2; + } else if (coex_dm->cur_ps_tdma == 2) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 3); + coex_dm->ps_tdma_du_adj_type = + 3; + } else if (coex_dm->cur_ps_tdma == 3) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 4); + coex_dm->ps_tdma_du_adj_type = + 4; + } else if (coex_dm->cur_ps_tdma == 9) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 10); + coex_dm->ps_tdma_du_adj_type = + 10; + } else if (coex_dm->cur_ps_tdma == 10) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 11); + coex_dm->ps_tdma_du_adj_type = + 11; + } else if (coex_dm->cur_ps_tdma == 11) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 12); + coex_dm->ps_tdma_du_adj_type = + 12; + } + } else if (result == 1) { + if (coex_dm->cur_ps_tdma == 4) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 3); + coex_dm->ps_tdma_du_adj_type = + 3; + } else if (coex_dm->cur_ps_tdma == 3) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 2); + coex_dm->ps_tdma_du_adj_type = + 2; + } else if (coex_dm->cur_ps_tdma == 2) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 2); + coex_dm->ps_tdma_du_adj_type = + 2; + } else if(coex_dm->cur_ps_tdma == 12) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 11); + coex_dm->ps_tdma_du_adj_type = + 11; + } else if(coex_dm->cur_ps_tdma == 11) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 10); + coex_dm->ps_tdma_du_adj_type = + 10; + } else if(coex_dm->cur_ps_tdma == 10) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 10); + coex_dm->ps_tdma_du_adj_type = + 10; + } + } + } + } else if (max_interval == 3) { + if (tx_pause) { + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_TRACE_FW_DETAIL, + "[BTCoex], TxPause = 1\n"); + if (coex_dm->cur_ps_tdma == 1) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 7); + coex_dm->ps_tdma_du_adj_type = 7; + } else if (coex_dm->cur_ps_tdma == 2) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 7); + coex_dm->ps_tdma_du_adj_type = 7; + } else if (coex_dm->cur_ps_tdma == 3) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 7); + coex_dm->ps_tdma_du_adj_type = 7; + } else if (coex_dm->cur_ps_tdma == 4) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 8); + coex_dm->ps_tdma_du_adj_type = 8; + } + if (coex_dm->cur_ps_tdma == 9) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 15); + coex_dm->ps_tdma_du_adj_type = 15; + } else if (coex_dm->cur_ps_tdma == 10) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 15); + coex_dm->ps_tdma_du_adj_type = 15; + } else if (coex_dm->cur_ps_tdma == 11) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 15); + coex_dm->ps_tdma_du_adj_type = 15; + } else if (coex_dm->cur_ps_tdma == 12) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 16); + coex_dm->ps_tdma_du_adj_type = 16; + } + if (result == -1) { + if (coex_dm->cur_ps_tdma == 5) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 7); + coex_dm->ps_tdma_du_adj_type = + 7; + } else if (coex_dm->cur_ps_tdma == 6) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 7); + coex_dm->ps_tdma_du_adj_type = + 7; + } else if (coex_dm->cur_ps_tdma == 7) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 8); + coex_dm->ps_tdma_du_adj_type = + 8; + } else if (coex_dm->cur_ps_tdma == 13) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 15); + coex_dm->ps_tdma_du_adj_type = + 15; + } else if (coex_dm->cur_ps_tdma == 14) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 15); + coex_dm->ps_tdma_du_adj_type = + 15; + } else if (coex_dm->cur_ps_tdma == 15) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 16); + coex_dm->ps_tdma_du_adj_type = + 16; + } + } else if (result == 1) { + if (coex_dm->cur_ps_tdma == 8) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 7); + coex_dm->ps_tdma_du_adj_type = + 7; + } else if (coex_dm->cur_ps_tdma == 7) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 7); + coex_dm->ps_tdma_du_adj_type = + 7; + } else if (coex_dm->cur_ps_tdma == 6) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 7); + coex_dm->ps_tdma_du_adj_type = + 7; + } else if (coex_dm->cur_ps_tdma == 16) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 15); + coex_dm->ps_tdma_du_adj_type = + 15; + } else if (coex_dm->cur_ps_tdma == 15) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 15); + coex_dm->ps_tdma_du_adj_type = + 15; + } else if (coex_dm->cur_ps_tdma == 14) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 15); + coex_dm->ps_tdma_du_adj_type = + 15; + } + } + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_TRACE_FW_DETAIL, + "[BTCoex], TxPause = 0\n"); + if (coex_dm->cur_ps_tdma == 5) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 3); + coex_dm->ps_tdma_du_adj_type = 3; + } else if (coex_dm->cur_ps_tdma == 6) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 3); + coex_dm->ps_tdma_du_adj_type = 3; + } else if (coex_dm->cur_ps_tdma == 7) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 3); + coex_dm->ps_tdma_du_adj_type = 3; + } else if (coex_dm->cur_ps_tdma == 8) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 4); + coex_dm->ps_tdma_du_adj_type = 4; + } + if (coex_dm->cur_ps_tdma == 13) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 11); + coex_dm->ps_tdma_du_adj_type = 11; + } else if (coex_dm->cur_ps_tdma == 14) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 11); + coex_dm->ps_tdma_du_adj_type = 11; + } else if (coex_dm->cur_ps_tdma == 15) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 11); + coex_dm->ps_tdma_du_adj_type = 11; + } else if (coex_dm->cur_ps_tdma == 16) { + halbtc8192e2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 12); + coex_dm->ps_tdma_du_adj_type = 12; + } + if (result == -1) { + if (coex_dm->cur_ps_tdma == 1) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 3); + coex_dm->ps_tdma_du_adj_type = + 3; + } else if (coex_dm->cur_ps_tdma == 2) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 3); + coex_dm->ps_tdma_du_adj_type = + 3; + } else if (coex_dm->cur_ps_tdma == 3) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 4); + coex_dm->ps_tdma_du_adj_type = + 4; + } else if (coex_dm->cur_ps_tdma == 9) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 11); + coex_dm->ps_tdma_du_adj_type = + 11; + } else if (coex_dm->cur_ps_tdma == 10) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 11); + coex_dm->ps_tdma_du_adj_type = + 11; + } else if (coex_dm->cur_ps_tdma == 11) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 12); + coex_dm->ps_tdma_du_adj_type = + 12; + } + } else if (result == 1) { + if (coex_dm->cur_ps_tdma == 4) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 3); + coex_dm->ps_tdma_du_adj_type = + 3; + } else if (coex_dm->cur_ps_tdma == 3) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 3); + coex_dm->ps_tdma_du_adj_type = + 3; + } else if (coex_dm->cur_ps_tdma == 2) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 3); + coex_dm->ps_tdma_du_adj_type = + 3; + } else if (coex_dm->cur_ps_tdma == 12) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 11); + coex_dm->ps_tdma_du_adj_type = + 11; + } else if (coex_dm->cur_ps_tdma == 11) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 11); + coex_dm->ps_tdma_du_adj_type = + 11; + } else if (coex_dm->cur_ps_tdma == 10) { + halbtc8192e2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 11); + coex_dm->ps_tdma_du_adj_type = + 11; + } + } + } + } + } + + /* if current PsTdma not match with + * the recorded one (when scan, dhcp...), + * then we have to adjust it back to the previous record one. */ + if (coex_dm->cur_ps_tdma != coex_dm->ps_tdma_du_adj_type) { + bool scan = false, link = false, roam = false; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], PsTdma type dismatch!!!, " ); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "curPsTdma=%d, recordPsTdma=%d\n", + coex_dm->cur_ps_tdma, coex_dm->ps_tdma_du_adj_type); + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_SCAN, &scan); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_LINK, &link); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_ROAM, &roam); + + if ( !scan && !link && !roam) + halbtc8192e2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, + coex_dm->ps_tdma_du_adj_type); + else + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_TRACE_FW_DETAIL, + "[BTCoex], roaming/link/scan is under progress, will adjust next time!!!\n"); + } +} + +/* SCO only or SCO+PAN(HS) */ +void halbtc8192e2ant_action_sco(struct btc_coexist *btcoexist) +{ + u8 wifirssi_state, btrssi_state = BTC_RSSI_STATE_STAY_LOW; + u32 wifi_bw; + + wifirssi_state = halbtc8192e2ant_wifirssi_state(btcoexist, 0, 2, 15, 0); + + halbtc8192e2ant_switch_sstype(btcoexist, NORMAL_EXEC, 1); + halbtc8192e2ant_limited_rx(btcoexist, NORMAL_EXEC, false, false, 0x8); + + halbtc8192e2ant_fw_dac_swinglvl(btcoexist, NORMAL_EXEC, 6); + + halbtc8192e2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 4); + + btrssi_state = halbtc8192e2ant_btrssi_state(3, 34, 42); + + if ((btrssi_state == BTC_RSSI_STATE_LOW) || + (btrssi_state == BTC_RSSI_STATE_STAY_LOW)) { + halbtc8192e2ant_dec_btpwr(btcoexist, NORMAL_EXEC, 0); + halbtc8192e2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 13); + } else if ((btrssi_state == BTC_RSSI_STATE_MEDIUM) || + (btrssi_state == BTC_RSSI_STATE_STAY_MEDIUM)) { + halbtc8192e2ant_dec_btpwr(btcoexist, NORMAL_EXEC, 2); + halbtc8192e2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 9); + } else if ((btrssi_state == BTC_RSSI_STATE_HIGH) || + (btrssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8192e2ant_dec_btpwr(btcoexist, NORMAL_EXEC, 4); + halbtc8192e2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 9); + } + + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + + /* sw mechanism */ + if (BTC_WIFI_BW_HT40 == wifi_bw) { + if ((wifirssi_state == BTC_RSSI_STATE_HIGH) || + (wifirssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8192e2ant_sw_mechanism1(btcoexist, true, true, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, true, false, + false, 0x6); + } else { + halbtc8192e2ant_sw_mechanism1(btcoexist, true, true, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, false, false, + false, 0x6); + } + } else { + if ((wifirssi_state == BTC_RSSI_STATE_HIGH) || + (wifirssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8192e2ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, true, false, + false, 0x6); + } else { + halbtc8192e2ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, false, false, + false, 0x6); + } + } +} + +void halbtc8192e2ant_action_sco_pan(struct btc_coexist *btcoexist) +{ + u8 wifirssi_state, btrssi_state = BTC_RSSI_STATE_STAY_LOW; + u32 wifi_bw; + + wifirssi_state = halbtc8192e2ant_wifirssi_state(btcoexist, 0, 2, 15, 0); + + halbtc8192e2ant_switch_sstype(btcoexist, NORMAL_EXEC, 1); + halbtc8192e2ant_limited_rx(btcoexist, NORMAL_EXEC, false, false, 0x8); + + halbtc8192e2ant_fw_dac_swinglvl(btcoexist, NORMAL_EXEC, 6); + + halbtc8192e2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 4); + + btrssi_state = halbtc8192e2ant_btrssi_state(3, 34, 42); + + if ((btrssi_state == BTC_RSSI_STATE_LOW) || + (btrssi_state == BTC_RSSI_STATE_STAY_LOW)) { + halbtc8192e2ant_dec_btpwr(btcoexist, NORMAL_EXEC, 0); + halbtc8192e2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 14); + } else if ((btrssi_state == BTC_RSSI_STATE_MEDIUM) || + (btrssi_state == BTC_RSSI_STATE_STAY_MEDIUM)) { + halbtc8192e2ant_dec_btpwr(btcoexist, NORMAL_EXEC, 2); + halbtc8192e2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 10); + } else if ((btrssi_state == BTC_RSSI_STATE_HIGH) || + (btrssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8192e2ant_dec_btpwr(btcoexist, NORMAL_EXEC, 4); + halbtc8192e2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 10); + } + + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + + /* sw mechanism */ + if (BTC_WIFI_BW_HT40 == wifi_bw) { + if ((wifirssi_state == BTC_RSSI_STATE_HIGH) || + (wifirssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8192e2ant_sw_mechanism1(btcoexist, true, true, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, true, false, + false, 0x6); + } else { + halbtc8192e2ant_sw_mechanism1(btcoexist, true, true, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, false, false, + false, 0x6); + } + } else { + if ((wifirssi_state == BTC_RSSI_STATE_HIGH) || + (wifirssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8192e2ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, true, false, + false, 0x6); + } else { + halbtc8192e2ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, false, false, + false, 0x6); + } + } +} + +void halbtc8192e2ant_action_hid(struct btc_coexist *btcoexist) +{ + u8 wifirssi_state, btrssi_state=BTC_RSSI_STATE_HIGH; + u32 wifi_bw; + + wifirssi_state = halbtc8192e2ant_wifirssi_state(btcoexist, 0, 2, 15, 0); + btrssi_state = halbtc8192e2ant_btrssi_state(3, 34, 42); + + halbtc8192e2ant_switch_sstype(btcoexist, NORMAL_EXEC, 1); + halbtc8192e2ant_limited_rx(btcoexist, NORMAL_EXEC, false, false, 0x8); + + halbtc8192e2ant_fw_dac_swinglvl(btcoexist, NORMAL_EXEC, 6); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + + halbtc8192e2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 3); + + if ((btrssi_state == BTC_RSSI_STATE_LOW) || + (btrssi_state == BTC_RSSI_STATE_STAY_LOW)) { + halbtc8192e2ant_dec_btpwr(btcoexist, NORMAL_EXEC, 0); + halbtc8192e2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 13); + } else if ((btrssi_state == BTC_RSSI_STATE_MEDIUM) || + (btrssi_state == BTC_RSSI_STATE_STAY_MEDIUM)) { + halbtc8192e2ant_dec_btpwr(btcoexist, NORMAL_EXEC, 2); + halbtc8192e2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 9); + } else if ((btrssi_state == BTC_RSSI_STATE_HIGH) || + (btrssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8192e2ant_dec_btpwr(btcoexist, NORMAL_EXEC, 4); + halbtc8192e2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 9); + } + + /* sw mechanism */ + if (BTC_WIFI_BW_HT40 == wifi_bw) { + if ((wifirssi_state == BTC_RSSI_STATE_HIGH) || + (wifirssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8192e2ant_sw_mechanism1(btcoexist, true, true, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + halbtc8192e2ant_sw_mechanism1(btcoexist, true, true, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } else { + if ((wifirssi_state == BTC_RSSI_STATE_HIGH) || + (wifirssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8192e2ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + halbtc8192e2ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } +} + +/* A2DP only / PAN(EDR) only/ A2DP+PAN(HS) */ +void halbtc8192e2ant_action_a2dp(struct btc_coexist *btcoexist) +{ + u8 wifirssi_state, btrssi_state = BTC_RSSI_STATE_HIGH; + u32 wifi_bw; + bool long_dist = false; + + wifirssi_state = halbtc8192e2ant_wifirssi_state(btcoexist, 0, 2, 15, 0); + btrssi_state = halbtc8192e2ant_btrssi_state(3, 34, 42); + + if ((btrssi_state == BTC_RSSI_STATE_LOW || + btrssi_state == BTC_RSSI_STATE_STAY_LOW) && + (wifirssi_state == BTC_RSSI_STATE_LOW || + wifirssi_state == BTC_RSSI_STATE_STAY_LOW)) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], A2dp, wifi/bt rssi both LOW!!\n"); + long_dist = true; + } + if (long_dist) { + halbtc8192e2ant_switch_sstype(btcoexist, NORMAL_EXEC, 2); + halbtc8192e2ant_limited_rx(btcoexist, NORMAL_EXEC, false, true, + 0x4); + } else { + halbtc8192e2ant_switch_sstype(btcoexist, NORMAL_EXEC, 1); + halbtc8192e2ant_limited_rx(btcoexist, NORMAL_EXEC, false, false, + 0x8); + } + + halbtc8192e2ant_fw_dac_swinglvl(btcoexist, NORMAL_EXEC, 6); + + if (long_dist) + halbtc8192e2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 0); + else + halbtc8192e2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 2); + + + if (long_dist) { + halbtc8192e2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 17); + coex_dm->auto_tdma_adjust = false; + halbtc8192e2ant_dec_btpwr(btcoexist, NORMAL_EXEC, 0); + } else { + if ((btrssi_state == BTC_RSSI_STATE_LOW) || + (btrssi_state == BTC_RSSI_STATE_STAY_LOW)) { + halbtc8192e2ant_tdma_duration_adjust(btcoexist, false, + true, 1); + halbtc8192e2ant_dec_btpwr(btcoexist, NORMAL_EXEC, 0); + } else if ((btrssi_state == BTC_RSSI_STATE_MEDIUM) || + (btrssi_state == BTC_RSSI_STATE_STAY_MEDIUM)) { + halbtc8192e2ant_tdma_duration_adjust(btcoexist, false, + false, 1); + halbtc8192e2ant_dec_btpwr(btcoexist, NORMAL_EXEC, 2); + } else if ((btrssi_state == BTC_RSSI_STATE_HIGH) || + (btrssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8192e2ant_tdma_duration_adjust(btcoexist, false, + false, 1); + halbtc8192e2ant_dec_btpwr(btcoexist, NORMAL_EXEC, 4); + } + } + + /* sw mechanism */ + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + if (BTC_WIFI_BW_HT40 == wifi_bw) { + if ((wifirssi_state == BTC_RSSI_STATE_HIGH) || + (wifirssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8192e2ant_sw_mechanism1(btcoexist, true, false, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + halbtc8192e2ant_sw_mechanism1(btcoexist, true, false, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } else { + if ((wifirssi_state == BTC_RSSI_STATE_HIGH) || + (wifirssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8192e2ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + halbtc8192e2ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } +} + +void halbtc8192e2ant_action_a2dp_pan_hs(struct btc_coexist *btcoexist) +{ + u8 wifirssi_state, btrssi_state = BTC_RSSI_STATE_HIGH; + u32 wifi_bw; + + wifirssi_state = halbtc8192e2ant_wifirssi_state(btcoexist, 0, 2, 15, 0); + btrssi_state = halbtc8192e2ant_btrssi_state(3, 34, 42); + + halbtc8192e2ant_switch_sstype(btcoexist, NORMAL_EXEC, 1); + halbtc8192e2ant_limited_rx(btcoexist, NORMAL_EXEC, false, false, 0x8); + + halbtc8192e2ant_fw_dac_swinglvl(btcoexist, NORMAL_EXEC, 6); + halbtc8192e2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 2); + + if ((btrssi_state == BTC_RSSI_STATE_LOW) || + (btrssi_state == BTC_RSSI_STATE_STAY_LOW)) { + halbtc8192e2ant_tdma_duration_adjust(btcoexist, false, true, 2); + halbtc8192e2ant_dec_btpwr(btcoexist, NORMAL_EXEC, 0); + } else if ((btrssi_state == BTC_RSSI_STATE_MEDIUM) || + (btrssi_state == BTC_RSSI_STATE_STAY_MEDIUM)) { + halbtc8192e2ant_tdma_duration_adjust(btcoexist, false, false, + 2); + halbtc8192e2ant_dec_btpwr(btcoexist, NORMAL_EXEC, 2); + } else if ((btrssi_state == BTC_RSSI_STATE_HIGH) || + (btrssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8192e2ant_tdma_duration_adjust(btcoexist, false, false, + 2); + halbtc8192e2ant_dec_btpwr(btcoexist, NORMAL_EXEC, 4); + } + + /* sw mechanism */ + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + if (BTC_WIFI_BW_HT40 == wifi_bw) { + if ((wifirssi_state == BTC_RSSI_STATE_HIGH) || + (wifirssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8192e2ant_sw_mechanism1(btcoexist, true, false, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, true, false, + true, 0x6); + } else { + halbtc8192e2ant_sw_mechanism1(btcoexist, true, false, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, false, false, + true, 0x6); + } + } else { + if ((wifirssi_state == BTC_RSSI_STATE_HIGH) || + (wifirssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8192e2ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, true, false, + true, 0x6); + } else { + halbtc8192e2ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, false, false, + true, 0x6); + } + } +} + +void halbtc8192e2ant_action_pan_edr(struct btc_coexist *btcoexist) +{ + u8 wifirssi_state, btrssi_state = BTC_RSSI_STATE_HIGH; + u32 wifi_bw; + + wifirssi_state = halbtc8192e2ant_wifirssi_state(btcoexist, 0, 2, 15, 0); + btrssi_state = halbtc8192e2ant_btrssi_state(3, 34, 42); + + halbtc8192e2ant_switch_sstype(btcoexist, NORMAL_EXEC, 1); + halbtc8192e2ant_limited_rx(btcoexist, NORMAL_EXEC, false, false, 0x8); + + halbtc8192e2ant_fw_dac_swinglvl(btcoexist, NORMAL_EXEC, 6); + + halbtc8192e2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 2); + + if ((btrssi_state == BTC_RSSI_STATE_LOW) || + (btrssi_state == BTC_RSSI_STATE_STAY_LOW)) { + halbtc8192e2ant_dec_btpwr(btcoexist, NORMAL_EXEC, 0); + halbtc8192e2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 5); + } else if ((btrssi_state == BTC_RSSI_STATE_MEDIUM) || + (btrssi_state == BTC_RSSI_STATE_STAY_MEDIUM)) { + halbtc8192e2ant_dec_btpwr(btcoexist, NORMAL_EXEC, 2); + halbtc8192e2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 1); + } else if ((btrssi_state == BTC_RSSI_STATE_HIGH) || + (btrssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8192e2ant_dec_btpwr(btcoexist, NORMAL_EXEC, 4); + halbtc8192e2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 1); + } + + /* sw mechanism */ + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + if (BTC_WIFI_BW_HT40 == wifi_bw) { + if ((wifirssi_state == BTC_RSSI_STATE_HIGH) || + (wifirssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8192e2ant_sw_mechanism1(btcoexist, true, false, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + halbtc8192e2ant_sw_mechanism1(btcoexist, true, false, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } else { + if ((wifirssi_state == BTC_RSSI_STATE_HIGH) || + (wifirssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8192e2ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + halbtc8192e2ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } +} + +/* PAN(HS) only */ +void halbtc8192e2ant_action_pan_hs(struct btc_coexist *btcoexist) +{ + u8 wifirssi_state, btrssi_state = BTC_RSSI_STATE_HIGH; + u32 wifi_bw; + + wifirssi_state = halbtc8192e2ant_wifirssi_state(btcoexist, 0, 2, 15, 0); + btrssi_state = halbtc8192e2ant_btrssi_state(3, 34, 42); + + halbtc8192e2ant_switch_sstype(btcoexist, NORMAL_EXEC, 1); + halbtc8192e2ant_limited_rx(btcoexist, NORMAL_EXEC, false, false, 0x8); + + halbtc8192e2ant_fw_dac_swinglvl(btcoexist, NORMAL_EXEC, 6); + + halbtc8192e2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 2); + + if ((btrssi_state == BTC_RSSI_STATE_LOW) || + (btrssi_state == BTC_RSSI_STATE_STAY_LOW)) { + halbtc8192e2ant_dec_btpwr(btcoexist, NORMAL_EXEC, 0); + } else if ((btrssi_state == BTC_RSSI_STATE_MEDIUM) || + (btrssi_state == BTC_RSSI_STATE_STAY_MEDIUM)) { + halbtc8192e2ant_dec_btpwr(btcoexist, NORMAL_EXEC, 2); + } else if ((btrssi_state == BTC_RSSI_STATE_HIGH) || + (btrssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8192e2ant_dec_btpwr(btcoexist, NORMAL_EXEC, 4); + } + halbtc8192e2ant_ps_tdma(btcoexist, NORMAL_EXEC, false, 1); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + if (BTC_WIFI_BW_HT40 == wifi_bw) { + if ((wifirssi_state == BTC_RSSI_STATE_HIGH) || + (wifirssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8192e2ant_sw_mechanism1(btcoexist, true, false, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + halbtc8192e2ant_sw_mechanism1(btcoexist, true, false, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } else { + if ((wifirssi_state == BTC_RSSI_STATE_HIGH) || + (wifirssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8192e2ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + halbtc8192e2ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } +} + +/* PAN(EDR)+A2DP */ +void halbtc8192e2ant_action_pan_edr_a2dp(struct btc_coexist *btcoexist) +{ + u8 wifirssi_state, btrssi_state=BTC_RSSI_STATE_HIGH; + u32 wifi_bw; + + wifirssi_state = halbtc8192e2ant_wifirssi_state(btcoexist, 0, 2, 15, 0); + btrssi_state = halbtc8192e2ant_btrssi_state(3, 34, 42); + + halbtc8192e2ant_switch_sstype(btcoexist, NORMAL_EXEC, 1); + halbtc8192e2ant_limited_rx(btcoexist, NORMAL_EXEC, false, false, 0x8); + + halbtc8192e2ant_fw_dac_swinglvl(btcoexist, NORMAL_EXEC, 6); + + halbtc8192e2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 2); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + + if ((btrssi_state == BTC_RSSI_STATE_LOW) || + (btrssi_state == BTC_RSSI_STATE_STAY_LOW)) { + halbtc8192e2ant_dec_btpwr(btcoexist, NORMAL_EXEC, 0); + halbtc8192e2ant_tdma_duration_adjust(btcoexist, false, true, 3); + } else if ((btrssi_state == BTC_RSSI_STATE_MEDIUM) || + (btrssi_state == BTC_RSSI_STATE_STAY_MEDIUM)) { + halbtc8192e2ant_dec_btpwr(btcoexist, NORMAL_EXEC, 2); + halbtc8192e2ant_tdma_duration_adjust(btcoexist, false, false, + 3); + } else if ((btrssi_state == BTC_RSSI_STATE_HIGH) || + (btrssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8192e2ant_dec_btpwr(btcoexist, NORMAL_EXEC, 4); + halbtc8192e2ant_tdma_duration_adjust(btcoexist, false, false, + 3); + } + + /* sw mechanism */ + if (BTC_WIFI_BW_HT40 == wifi_bw) { + if ((wifirssi_state == BTC_RSSI_STATE_HIGH) || + (wifirssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8192e2ant_sw_mechanism1(btcoexist, true, false, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + halbtc8192e2ant_sw_mechanism1(btcoexist, true, false, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } else { + if ((wifirssi_state == BTC_RSSI_STATE_HIGH) || + (wifirssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8192e2ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + halbtc8192e2ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } +} + +void halbtc8192e2ant_action_pan_edr_hid(struct btc_coexist *btcoexist) +{ + u8 wifirssi_state, btrssi_state = BTC_RSSI_STATE_HIGH; + u32 wifi_bw; + + wifirssi_state = halbtc8192e2ant_wifirssi_state(btcoexist, 0, 2, 15, 0); + btrssi_state = halbtc8192e2ant_btrssi_state(3, 34, 42); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + + halbtc8192e2ant_switch_sstype(btcoexist, NORMAL_EXEC, 1); + halbtc8192e2ant_limited_rx(btcoexist, NORMAL_EXEC, false, false, 0x8); + + halbtc8192e2ant_fw_dac_swinglvl(btcoexist, NORMAL_EXEC, 6); + + halbtc8192e2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 3); + + if ((btrssi_state == BTC_RSSI_STATE_LOW) || + (btrssi_state == BTC_RSSI_STATE_STAY_LOW)) { + halbtc8192e2ant_dec_btpwr(btcoexist, NORMAL_EXEC, 0); + halbtc8192e2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 14); + } else if ((btrssi_state == BTC_RSSI_STATE_MEDIUM) || + (btrssi_state == BTC_RSSI_STATE_STAY_MEDIUM)) { + halbtc8192e2ant_dec_btpwr(btcoexist, NORMAL_EXEC, 2); + halbtc8192e2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 10); + } else if ((btrssi_state == BTC_RSSI_STATE_HIGH) || + (btrssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8192e2ant_dec_btpwr(btcoexist, NORMAL_EXEC, 4); + halbtc8192e2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 10); + } + + /* sw mechanism */ + if (BTC_WIFI_BW_HT40 == wifi_bw) { + if ((wifirssi_state == BTC_RSSI_STATE_HIGH) || + (wifirssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8192e2ant_sw_mechanism1(btcoexist, true, true, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + halbtc8192e2ant_sw_mechanism1(btcoexist, true, true, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } else { + if ((wifirssi_state == BTC_RSSI_STATE_HIGH) || + (wifirssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8192e2ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + halbtc8192e2ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } +} + +/* HID+A2DP+PAN(EDR) */ +void halbtc8192e2ant_action_hid_a2dp_pan_edr(struct btc_coexist *btcoexist) +{ + u8 wifirssi_state, btrssi_state = BTC_RSSI_STATE_HIGH; + u32 wifi_bw; + + wifirssi_state = halbtc8192e2ant_wifirssi_state(btcoexist, 0, 2, 15, 0); + btrssi_state = halbtc8192e2ant_btrssi_state(3, 34, 42); + + halbtc8192e2ant_switch_sstype(btcoexist, NORMAL_EXEC, 1); + halbtc8192e2ant_limited_rx(btcoexist, NORMAL_EXEC, false, false, 0x8); + + halbtc8192e2ant_fw_dac_swinglvl(btcoexist, NORMAL_EXEC, 6); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + + halbtc8192e2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 3); + + if ((btrssi_state == BTC_RSSI_STATE_LOW) || + (btrssi_state == BTC_RSSI_STATE_STAY_LOW)) { + halbtc8192e2ant_dec_btpwr(btcoexist, NORMAL_EXEC, 0); + halbtc8192e2ant_tdma_duration_adjust(btcoexist, true, true, 3); + } else if ((btrssi_state == BTC_RSSI_STATE_MEDIUM) || + (btrssi_state == BTC_RSSI_STATE_STAY_MEDIUM)) { + halbtc8192e2ant_dec_btpwr(btcoexist, NORMAL_EXEC, 2); + halbtc8192e2ant_tdma_duration_adjust(btcoexist, true, false, 3); + } else if ((btrssi_state == BTC_RSSI_STATE_HIGH) || + (btrssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8192e2ant_dec_btpwr(btcoexist, NORMAL_EXEC, 4); + halbtc8192e2ant_tdma_duration_adjust(btcoexist, true, false, 3); + } + + /* sw mechanism */ + if (BTC_WIFI_BW_HT40 == wifi_bw) { + if ((wifirssi_state == BTC_RSSI_STATE_HIGH) || + (wifirssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8192e2ant_sw_mechanism1(btcoexist, true, true, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + halbtc8192e2ant_sw_mechanism1(btcoexist, true, true, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } else { + if ((wifirssi_state == BTC_RSSI_STATE_HIGH) || + (wifirssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8192e2ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + halbtc8192e2ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } +} + +void halbtc8192e2ant_action_hid_a2dp(struct btc_coexist *btcoexist) +{ + u8 wifirssi_state, btrssi_state = BTC_RSSI_STATE_HIGH; + u32 wifi_bw; + + wifirssi_state = halbtc8192e2ant_wifirssi_state(btcoexist, 0, 2, 15, 0); + btrssi_state = halbtc8192e2ant_btrssi_state(3, 34, 42); + + halbtc8192e2ant_switch_sstype(btcoexist, NORMAL_EXEC, 1); + halbtc8192e2ant_limited_rx(btcoexist, NORMAL_EXEC, false, false, 0x8); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + + halbtc8192e2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 3); + + if ((btrssi_state == BTC_RSSI_STATE_LOW) || + (btrssi_state == BTC_RSSI_STATE_STAY_LOW)) { + halbtc8192e2ant_dec_btpwr(btcoexist, NORMAL_EXEC, 0); + halbtc8192e2ant_tdma_duration_adjust(btcoexist, true, true, 2); + } else if ((btrssi_state == BTC_RSSI_STATE_MEDIUM) || + (btrssi_state == BTC_RSSI_STATE_STAY_MEDIUM)) { + halbtc8192e2ant_dec_btpwr(btcoexist, NORMAL_EXEC, 2); + halbtc8192e2ant_tdma_duration_adjust(btcoexist, true, false, 2); + } else if ((btrssi_state == BTC_RSSI_STATE_HIGH) || + (btrssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8192e2ant_dec_btpwr(btcoexist, NORMAL_EXEC, 4); + halbtc8192e2ant_tdma_duration_adjust(btcoexist, true, false, 2); + } + + /* sw mechanism */ + if (BTC_WIFI_BW_HT40 == wifi_bw) { + if ((wifirssi_state == BTC_RSSI_STATE_HIGH) || + (wifirssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8192e2ant_sw_mechanism1(btcoexist, true, true, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + halbtc8192e2ant_sw_mechanism1(btcoexist, true, true, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } else { + if ((wifirssi_state == BTC_RSSI_STATE_HIGH) || + (wifirssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8192e2ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + halbtc8192e2ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8192e2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } +} + +void halbtc8192e2ant_run_coexist_mechanism(struct btc_coexist *btcoexist) +{ + u8 algorithm = 0; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], RunCoexistMechanism()===>\n"); + + if (btcoexist->manual_control) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], return for Manual CTRL <===\n"); + return; + } + + if (coex_sta->under_ips) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], wifi is under IPS !!!\n"); + return; + } + + algorithm = halbtc8192e2ant_action_algorithm(btcoexist); + if (coex_sta->c2h_bt_inquiry_page && + (BT_8192E_2ANT_COEX_ALGO_PANHS != algorithm)) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BT is under inquiry/page scan !!\n"); + halbtc8192e2ant_action_bt_inquiry(btcoexist); + return; + } + + coex_dm->cur_algorithm = algorithm; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Algorithm = %d \n", coex_dm->cur_algorithm); + + if (halbtc8192e2ant_is_common_action(btcoexist)) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Action 2-Ant common.\n"); + coex_dm->auto_tdma_adjust = false; + } else { + if (coex_dm->cur_algorithm != coex_dm->pre_algorithm) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex] preAlgorithm=%d, curAlgorithm=%d\n", + coex_dm->pre_algorithm, + coex_dm->cur_algorithm); + coex_dm->auto_tdma_adjust = false; + } + switch (coex_dm->cur_algorithm) { + case BT_8192E_2ANT_COEX_ALGO_SCO: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "Action 2-Ant, algorithm = SCO.\n"); + halbtc8192e2ant_action_sco(btcoexist); + break; + case BT_8192E_2ANT_COEX_ALGO_SCO_PAN: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "Action 2-Ant, algorithm = SCO+PAN(EDR).\n"); + halbtc8192e2ant_action_sco_pan(btcoexist); + break; + case BT_8192E_2ANT_COEX_ALGO_HID: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "Action 2-Ant, algorithm = HID.\n"); + halbtc8192e2ant_action_hid(btcoexist); + break; + case BT_8192E_2ANT_COEX_ALGO_A2DP: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "Action 2-Ant, algorithm = A2DP.\n"); + halbtc8192e2ant_action_a2dp(btcoexist); + break; + case BT_8192E_2ANT_COEX_ALGO_A2DP_PANHS: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "Action 2-Ant, algorithm = A2DP+PAN(HS).\n"); + halbtc8192e2ant_action_a2dp_pan_hs(btcoexist); + break; + case BT_8192E_2ANT_COEX_ALGO_PANEDR: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "Action 2-Ant, algorithm = PAN(EDR).\n"); + halbtc8192e2ant_action_pan_edr(btcoexist); + break; + case BT_8192E_2ANT_COEX_ALGO_PANHS: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "Action 2-Ant, algorithm = HS mode.\n"); + halbtc8192e2ant_action_pan_hs(btcoexist); + break; + case BT_8192E_2ANT_COEX_ALGO_PANEDR_A2DP: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "Action 2-Ant, algorithm = PAN+A2DP.\n"); + halbtc8192e2ant_action_pan_edr_a2dp(btcoexist); + break; + case BT_8192E_2ANT_COEX_ALGO_PANEDR_HID: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "Action 2-Ant, algorithm = PAN(EDR)+HID.\n"); + halbtc8192e2ant_action_pan_edr_hid(btcoexist); + break; + case BT_8192E_2ANT_COEX_ALGO_HID_A2DP_PANEDR: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "Action 2-Ant, algorithm = HID+A2DP+PAN.\n"); + halbtc8192e2ant_action_hid_a2dp_pan_edr(btcoexist); + break; + case BT_8192E_2ANT_COEX_ALGO_HID_A2DP: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "Action 2-Ant, algorithm = HID+A2DP.\n"); + halbtc8192e2ant_action_hid_a2dp(btcoexist); + break; + default: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "Action 2-Ant, algorithm = unknown!!\n"); + /* halbtc8192e2ant_coex_alloff(btcoexist); */ + break; + } + coex_dm->pre_algorithm = coex_dm->cur_algorithm; + } +} + +void halbtc8192e2ant_init_hwconfig(struct btc_coexist *btcoexist, bool backup) +{ + u16 u16tmp = 0; + u8 u8tmp = 0; + + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, + "[BTCoex], 2Ant Init HW Config!!\n"); + + if (backup) { + /* backup rf 0x1e value */ + coex_dm->bt_rf0x1e_backup = + btcoexist->btc_get_rf_reg(btcoexist, BTC_RF_A, + 0x1e, 0xfffff); + + coex_dm->backup_arfr_cnt1 = btcoexist->btc_read_4byte(btcoexist, + 0x430); + coex_dm->backup_arfr_cnt2 = btcoexist->btc_read_4byte(btcoexist, + 0x434); + coex_dm->backup_retrylimit = btcoexist->btc_read_2byte( + btcoexist, + 0x42a); + coex_dm->backup_ampdu_maxtime = btcoexist->btc_read_1byte( + btcoexist, + 0x456); + } + + /* antenna sw ctrl to bt */ + btcoexist->btc_write_1byte(btcoexist, 0x4f, 0x6); + btcoexist->btc_write_1byte(btcoexist, 0x944, 0x24); + btcoexist->btc_write_4byte(btcoexist, 0x930, 0x700700); + btcoexist->btc_write_1byte(btcoexist, 0x92c, 0x20); + if (btcoexist->chip_interface == BTC_INTF_USB) + btcoexist->btc_write_4byte(btcoexist, 0x64, 0x30430004); + else + btcoexist->btc_write_4byte(btcoexist, 0x64, 0x30030004); + + halbtc8192e2ant_coex_table_with_type(btcoexist, FORCE_EXEC, 0); + + /* antenna switch control parameter */ + btcoexist->btc_write_4byte(btcoexist, 0x858, 0x55555555); + + /* coex parameters */ + btcoexist->btc_write_1byte(btcoexist, 0x778, 0x3); + /* 0x790[5:0]=0x5 */ + u8tmp = btcoexist->btc_read_1byte(btcoexist, 0x790); + u8tmp &= 0xc0; + u8tmp |= 0x5; + btcoexist->btc_write_1byte(btcoexist, 0x790, u8tmp); + + /* enable counter statistics */ + btcoexist->btc_write_1byte(btcoexist, 0x76e, 0x4); + + /* enable PTA */ + btcoexist->btc_write_1byte(btcoexist, 0x40, 0x20); + /* enable mailbox interface */ + u16tmp = btcoexist->btc_read_2byte(btcoexist, 0x40); + u16tmp |= BIT9; + btcoexist->btc_write_2byte(btcoexist, 0x40, u16tmp); + + /* enable PTA I2C mailbox */ + u8tmp = btcoexist->btc_read_1byte(btcoexist, 0x101); + u8tmp |= BIT4; + btcoexist->btc_write_1byte(btcoexist, 0x101, u8tmp); + + /* enable bt clock when wifi is disabled. */ + u8tmp = btcoexist->btc_read_1byte(btcoexist, 0x93); + u8tmp |= BIT0; + btcoexist->btc_write_1byte(btcoexist, 0x93, u8tmp); + /* enable bt clock when suspend. */ + u8tmp = btcoexist->btc_read_1byte(btcoexist, 0x7); + u8tmp |= BIT0; + btcoexist->btc_write_1byte(btcoexist, 0x7, u8tmp); +} + +/************************************************************* + * work around function start with wa_halbtc8192e2ant_ + *************************************************************/ + +/************************************************************ + * extern function start with EXhalbtc8192e2ant_ + ************************************************************/ + +void ex_halbtc8192e2ant_init_hwconfig(struct btc_coexist *btcoexist) +{ + halbtc8192e2ant_init_hwconfig(btcoexist, true); +} + +void ex_halbtc8192e2ant_init_coex_dm(struct btc_coexist *btcoexist) +{ + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, + "[BTCoex], Coex Mechanism Init!!\n"); + halbtc8192e2ant_init_coex_dm(btcoexist); +} + +void ex_halbtc8192e2ant_display_coex_info(struct btc_coexist *btcoexist) +{ + struct btc_board_info *board_info = &btcoexist->board_info; + struct btc_stack_info*stack_info = &btcoexist->stack_info; + u8 *cli_buf = btcoexist->cli_buf; + u8 u8tmp[4], i, bt_info_ext, ps_tdma_case = 0; + u16 u16tmp[4]; + u32 u32tmp[4]; + bool roam = false, scan = false, link = false, wifi_under_5g = false; + bool bt_hson = false, wifi_busy = false; + int wifirssi = 0, bt_hs_rssi = 0; + u32 wifi_bw, wifi_traffic_dir; + u8 wifi_dot11_chnl, wifi_hs_chnl; + u32 fw_ver = 0, bt_patch_ver = 0; + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, + "\r\n ============[BT Coexist info]============"); + CL_PRINTF(cli_buf); + + if (btcoexist->manual_control) { + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, + "\r\n ===========[Under Manual Control]==========="); + CL_PRINTF(cli_buf); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, + "\r\n =========================================="); + CL_PRINTF(cli_buf); + } + + if (!board_info->bt_exist) { + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n BT not exists !!!"); + CL_PRINTF(cli_buf); + return; + } + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, + "\r\n %-35s = %d/ %d ", "Ant PG number/ Ant mechanism:", + board_info->pg_ant_num, board_info->btdm_ant_num); + CL_PRINTF(cli_buf); + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %s / %d", + "BT stack/ hci ext ver", + ((stack_info->profile_notified) ? "Yes" : "No"), + stack_info->hci_version); + CL_PRINTF(cli_buf); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_BT_PATCH_VER, &bt_patch_ver); + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_FW_VER, &fw_ver); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, + "\r\n %-35s = %d_%d/ 0x%x/ 0x%x(%d)", + "CoexVer/ FwVer/ PatchVer", + glcoex_ver_date_8192e_2ant, glcoex_ver_8192e_2ant, + fw_ver, bt_patch_ver, bt_patch_ver); + CL_PRINTF(cli_buf); + + btcoexist->btc_get(btcoexist, BTC_GET_BL_HS_OPERATION, &bt_hson); + btcoexist->btc_get(btcoexist, BTC_GET_U1_WIFI_DOT11_CHNL, + &wifi_dot11_chnl); + btcoexist->btc_get(btcoexist, BTC_GET_U1_WIFI_HS_CHNL, &wifi_hs_chnl); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d / %d(%d)", + "Dot11 channel / HsMode(HsChnl)", + wifi_dot11_chnl, bt_hson, wifi_hs_chnl); + CL_PRINTF(cli_buf); + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %02x %02x %02x ", + "H2C Wifi inform bt chnl Info", coex_dm->wifi_chnl_info[0], + coex_dm->wifi_chnl_info[1], coex_dm->wifi_chnl_info[2]); + CL_PRINTF(cli_buf); + + btcoexist->btc_get(btcoexist, BTC_GET_S4_WIFI_RSSI, &wifirssi); + btcoexist->btc_get(btcoexist, BTC_GET_S4_HS_RSSI, &bt_hs_rssi); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d", + "Wifi rssi/ HS rssi", wifirssi, bt_hs_rssi); + CL_PRINTF(cli_buf); + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_SCAN, &scan); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_LINK, &link); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_ROAM, &roam); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d/ %d ", + "Wifi link/ roam/ scan", link, roam, scan); + CL_PRINTF(cli_buf); + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_UNDER_5G, &wifi_under_5g); + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_BUSY, &wifi_busy); + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_TRAFFIC_DIRECTION, + &wifi_traffic_dir); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %s / %s/ %s ", + "Wifi status", (wifi_under_5g ? "5G" : "2.4G"), + ((BTC_WIFI_BW_LEGACY == wifi_bw) ? "Legacy" : + (((BTC_WIFI_BW_HT40 == wifi_bw) ? "HT40" : "HT20"))), + ((!wifi_busy) ? "idle" : + ((BTC_WIFI_TRAFFIC_TX == wifi_traffic_dir) ? + "uplink" : "downlink"))); + CL_PRINTF(cli_buf); + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = [%s/ %d/ %d] ", + "BT [status/ rssi/ retryCnt]", + ((btcoexist->bt_info.bt_disabled) ? ("disabled") : + ((coex_sta->c2h_bt_inquiry_page) ? + ("inquiry/page scan") : + ((BT_8192E_2ANT_BT_STATUS_NON_CONNECTED_IDLE == + coex_dm->bt_status) ? "non-connected idle" : + ((BT_8192E_2ANT_BT_STATUS_CONNECTED_IDLE == + coex_dm->bt_status) ? "connected-idle" : "busy")))), + coex_sta->bt_rssi, coex_sta->bt_retry_cnt); + CL_PRINTF(cli_buf); + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d / %d / %d / %d", + "SCO/HID/PAN/A2DP", stack_info->sco_exist, + stack_info->hid_exist, stack_info->pan_exist, + stack_info->a2dp_exist); + CL_PRINTF(cli_buf); + btcoexist->btc_disp_dbg_msg(btcoexist, BTC_DBG_DISP_BT_LINK_INFO); + + bt_info_ext = coex_sta->bt_info_ext; + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %s", + "BT Info A2DP rate", + (bt_info_ext&BIT0) ? "Basic rate" : "EDR rate"); + CL_PRINTF(cli_buf); + + for (i=0; ibt_info_c2h_cnt[i]) { + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, + "\r\n %-35s = %02x %02x %02x %02x ", + GLBtInfoSrc8192e2Ant[i], + coex_sta->bt_info_c2h[i][0], + coex_sta->bt_info_c2h[i][1], + coex_sta->bt_info_c2h[i][2], + coex_sta->bt_info_c2h[i][3]); + CL_PRINTF(cli_buf); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, + "%02x %02x %02x(%d)", + coex_sta->bt_info_c2h[i][4], + coex_sta->bt_info_c2h[i][5], + coex_sta->bt_info_c2h[i][6], + coex_sta->bt_info_c2h_cnt[i]); + CL_PRINTF(cli_buf); + } + } + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %s/%s", + "PS state, IPS/LPS", + ((coex_sta->under_ips ? "IPS ON" : "IPS OFF")), + ((coex_sta->under_lps ? "LPS ON" : "LPS OFF"))); + CL_PRINTF(cli_buf); + btcoexist->btc_disp_dbg_msg(btcoexist, BTC_DBG_DISP_FW_PWR_MODE_CMD); + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x ", "SS Type", + coex_dm->cur_sstype); + CL_PRINTF(cli_buf); + + /* Sw mechanism */ + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s", + "============[Sw mechanism]============"); + CL_PRINTF(cli_buf); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d/ %d ", + "SM1[ShRf/ LpRA/ LimDig]", coex_dm->cur_rf_rx_lpf_shrink, + coex_dm->cur_low_penalty_ra, coex_dm->limited_dig); + CL_PRINTF(cli_buf); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d/ %d(0x%x) ", + "SM2[AgcT/ AdcB/ SwDacSwing(lvl)]", + coex_dm->cur_agc_table_en, coex_dm->cur_adc_back_off, + coex_dm->cur_dac_swing_on, coex_dm->cur_dac_swing_lvl); + CL_PRINTF(cli_buf); + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x ", "Rate Mask", + btcoexist->bt_info.ra_mask); + CL_PRINTF(cli_buf); + + /* Fw mechanism */ + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s", + "============[Fw mechanism]============"); + CL_PRINTF(cli_buf); + + ps_tdma_case = coex_dm->cur_ps_tdma; + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, + "\r\n %-35s = %02x %02x %02x %02x %02x case-%d (auto:%d)", + "PS TDMA", coex_dm->ps_tdma_para[0], + coex_dm->ps_tdma_para[1], coex_dm->ps_tdma_para[2], + coex_dm->ps_tdma_para[3], coex_dm->ps_tdma_para[4], + ps_tdma_case, coex_dm->auto_tdma_adjust); + CL_PRINTF(cli_buf); + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d ", + "DecBtPwr/ IgnWlanAct", + coex_dm->cur_dec_bt_pwr, coex_dm->cur_ignore_wlan_act); + CL_PRINTF(cli_buf); + + /* Hw setting */ + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s", + "============[Hw setting]============"); + CL_PRINTF(cli_buf); + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x", + "RF-A, 0x1e initVal", coex_dm->bt_rf0x1e_backup); + CL_PRINTF(cli_buf); + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/0x%x/0x%x/0x%x", + "backup ARFR1/ARFR2/RL/AMaxTime", coex_dm->backup_arfr_cnt1, + coex_dm->backup_arfr_cnt2, coex_dm->backup_retrylimit, + coex_dm->backup_ampdu_maxtime); + CL_PRINTF(cli_buf); + + u32tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0x430); + u32tmp[1] = btcoexist->btc_read_4byte(btcoexist, 0x434); + u16tmp[0] = btcoexist->btc_read_2byte(btcoexist, 0x42a); + u8tmp[0] = btcoexist->btc_read_1byte(btcoexist, 0x456); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/0x%x/0x%x/0x%x", + "0x430/0x434/0x42a/0x456", + u32tmp[0], u32tmp[1], u16tmp[0], u8tmp[0]); + CL_PRINTF(cli_buf); + + u32tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0xc04); + u32tmp[1] = btcoexist->btc_read_4byte(btcoexist, 0xd04); + u32tmp[2] = btcoexist->btc_read_4byte(btcoexist, 0x90c); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x/ 0x%x", + "0xc04/ 0xd04/ 0x90c", u32tmp[0], u32tmp[1], u32tmp[2]); + CL_PRINTF(cli_buf); + + u8tmp[0] = btcoexist->btc_read_1byte(btcoexist, 0x778); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x", "0x778", + u8tmp[0]); + CL_PRINTF(cli_buf); + + u8tmp[0] = btcoexist->btc_read_1byte(btcoexist, 0x92c); + u32tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0x930); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x", + "0x92c/ 0x930", (u8tmp[0]), u32tmp[0]); + CL_PRINTF(cli_buf); + + u8tmp[0] = btcoexist->btc_read_1byte(btcoexist, 0x40); + u8tmp[1] = btcoexist->btc_read_1byte(btcoexist, 0x4f); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x", + "0x40/ 0x4f", u8tmp[0], u8tmp[1]); + CL_PRINTF(cli_buf); + + u32tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0x550); + u8tmp[0] = btcoexist->btc_read_1byte(btcoexist, 0x522); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x", + "0x550(bcn ctrl)/0x522", u32tmp[0], u8tmp[0]); + CL_PRINTF(cli_buf); + + u32tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0xc50); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x", "0xc50(dig)", + u32tmp[0]); + CL_PRINTF(cli_buf); + + u32tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0x6c0); + u32tmp[1] = btcoexist->btc_read_4byte(btcoexist, 0x6c4); + u32tmp[2] = btcoexist->btc_read_4byte(btcoexist, 0x6c8); + u8tmp[0] = btcoexist->btc_read_1byte(btcoexist, 0x6cc); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, + "\r\n %-35s = 0x%x/ 0x%x/ 0x%x/ 0x%x", + "0x6c0/0x6c4/0x6c8/0x6cc(coexTable)", + u32tmp[0], u32tmp[1], u32tmp[2], u8tmp[0]); + CL_PRINTF(cli_buf); + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d", + "0x770(hp rx[31:16]/tx[15:0])", + coex_sta->high_priority_rx, coex_sta->high_priority_tx); + CL_PRINTF(cli_buf); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d", + "0x774(lp rx[31:16]/tx[15:0])", + coex_sta->low_priority_rx, coex_sta->low_priority_tx); + CL_PRINTF(cli_buf); +#if(BT_AUTO_REPORT_ONLY_8192E_2ANT == 1) + halbtc8192e2ant_monitor_bt_ctr(btcoexist); +#endif + btcoexist->btc_disp_dbg_msg(btcoexist, BTC_DBG_DISP_COEX_STATISTICS); +} + + +void ex_halbtc8192e2ant_ips_notify(struct btc_coexist *btcoexist, u8 type) +{ + if (BTC_IPS_ENTER == type) { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], IPS ENTER notify\n"); + coex_sta->under_ips = true; + halbtc8192e2ant_coex_alloff(btcoexist); + } else if (BTC_IPS_LEAVE == type) { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], IPS LEAVE notify\n"); + coex_sta->under_ips = false; + } +} + +void ex_halbtc8192e2ant_lps_notify(struct btc_coexist *btcoexist, u8 type) +{ + if (BTC_LPS_ENABLE == type) { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], LPS ENABLE notify\n"); + coex_sta->under_lps = true; + } else if (BTC_LPS_DISABLE == type) { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], LPS DISABLE notify\n"); + coex_sta->under_lps = false; + } +} + +void ex_halbtc8192e2ant_scan_notify(struct btc_coexist *btcoexist, u8 type) +{ + if (BTC_SCAN_START == type) + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], SCAN START notify\n"); + else if(BTC_SCAN_FINISH == type) + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], SCAN FINISH notify\n"); +} + +void ex_halbtc8192e2ant_connect_notify(struct btc_coexist *btcoexist, u8 type) +{ + if (BTC_ASSOCIATE_START == type) + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], CONNECT START notify\n"); + else if(BTC_ASSOCIATE_FINISH == type) + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], CONNECT FINISH notify\n"); +} + +void ex_halbtc8192e2ant_media_status_notify(struct btc_coexist *btcoexist, + u8 type) +{ + u8 h2c_parameter[3] ={0}; + u32 wifi_bw; + u8 wifi_center_chnl; + + if (btcoexist->manual_control || + btcoexist->stop_coex_dm || + btcoexist->bt_info.bt_disabled) + return; + + if (BTC_MEDIA_CONNECT == type) + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], MEDIA connect notify\n"); + else + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], MEDIA disconnect notify\n"); + + /* only 2.4G we need to inform bt the chnl mask */ + btcoexist->btc_get(btcoexist, BTC_GET_U1_WIFI_CENTRAL_CHNL, + &wifi_center_chnl); + if ((BTC_MEDIA_CONNECT == type) && + (wifi_center_chnl <= 14)) { + h2c_parameter[0] = 0x1; + h2c_parameter[1] = wifi_center_chnl; + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + if (BTC_WIFI_BW_HT40 == wifi_bw) + h2c_parameter[2] = 0x30; + else + h2c_parameter[2] = 0x20; + } + + coex_dm->wifi_chnl_info[0] = h2c_parameter[0]; + coex_dm->wifi_chnl_info[1] = h2c_parameter[1]; + coex_dm->wifi_chnl_info[2] = h2c_parameter[2]; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, + "[BTCoex], FW write 0x66=0x%x\n", + h2c_parameter[0] << 16 | h2c_parameter[1] << 8 | + h2c_parameter[2]); + + btcoexist->btc_fill_h2c(btcoexist, 0x66, 3, h2c_parameter); +} + +void ex_halbtc8192e2ant_special_packet_notify(struct btc_coexist *btcoexist, + u8 type) +{ + if (type == BTC_PACKET_DHCP) + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], DHCP Packet notify\n"); + } + +void ex_halbtc8192e2ant_bt_info_notify(struct btc_coexist *btcoexist, + u8 *tmp_buf, u8 length ) +{ + u8 bt_info = 0; + u8 i, rspSource = 0; + bool bt_busy = false, limited_dig = false; + bool wifi_connected = false; + + coex_sta->c2h_bt_info_req_sent = false; + + rspSource = tmp_buf[0] & 0xf; + if (rspSource >= BT_INFO_SRC_8192E_2ANT_MAX) + rspSource = BT_INFO_SRC_8192E_2ANT_WIFI_FW; + coex_sta->bt_info_c2h_cnt[rspSource]++; + + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], Bt info[%d], length=%d, hex data=[", + rspSource, length); + for (i = 0; i < length; i++) { + coex_sta->bt_info_c2h[rspSource][i] = tmp_buf[i]; + if (i == 1) + bt_info = tmp_buf[i]; + if (i == length-1) + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "0x%02x]\n", tmp_buf[i]); + else + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "0x%02x, ", tmp_buf[i]); + } + + if (BT_INFO_SRC_8192E_2ANT_WIFI_FW != rspSource) { + coex_sta->bt_retry_cnt = /* [3:0] */ + coex_sta->bt_info_c2h[rspSource][2] & 0xf; + + coex_sta->bt_rssi = + coex_sta->bt_info_c2h[rspSource][3] * 2 + 10; + + coex_sta->bt_info_ext = + coex_sta->bt_info_c2h[rspSource][4]; + + /* Here we need to resend some wifi info to BT + * because bt is reset and loss of the info. */ + if ((coex_sta->bt_info_ext & BIT1)) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "bit1, send wifi BW&Chnl to BT!!\n"); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_CONNECTED, + &wifi_connected); + if (wifi_connected) + ex_halbtc8192e2ant_media_status_notify( + btcoexist, + BTC_MEDIA_CONNECT); + else + ex_halbtc8192e2ant_media_status_notify( + btcoexist, + BTC_MEDIA_DISCONNECT); + } + + if ((coex_sta->bt_info_ext & BIT3)) { + if (!btcoexist->manual_control && + !btcoexist->stop_coex_dm) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "bit3, BT NOT ignore Wlan active!\n"); + halbtc8192e2ant_IgnoreWlanAct(btcoexist, + FORCE_EXEC, + false); + } + } else { + /* BT already NOT ignore Wlan active, + * do nothing here. */ + } + +#if(BT_AUTO_REPORT_ONLY_8192E_2ANT == 0) + if ((coex_sta->bt_info_ext & BIT4)) { + /* BT auto report already enabled, do nothing */ + } else { + halbtc8192e2ant_bt_autoreport(btcoexist, FORCE_EXEC, + true); + } +#endif + } + + /* check BIT2 first ==> check if bt is under inquiry or page scan */ + if(bt_info & BT_INFO_8192E_2ANT_B_INQ_PAGE) + coex_sta->c2h_bt_inquiry_page = true; + else + coex_sta->c2h_bt_inquiry_page = false; + + /* set link exist status */ + if (!(bt_info&BT_INFO_8192E_2ANT_B_CONNECTION)) { + coex_sta->bt_link_exist = false; + coex_sta->pan_exist = false; + coex_sta->a2dp_exist = false; + coex_sta->hid_exist = false; + coex_sta->sco_exist = false; + } else {/* connection exists */ + coex_sta->bt_link_exist = true; + if (bt_info & BT_INFO_8192E_2ANT_B_FTP) + coex_sta->pan_exist = true; + else + coex_sta->pan_exist = false; + if (bt_info & BT_INFO_8192E_2ANT_B_A2DP) + coex_sta->a2dp_exist = true; + else + coex_sta->a2dp_exist = false; + if (bt_info & BT_INFO_8192E_2ANT_B_HID) + coex_sta->hid_exist = true; + else + coex_sta->hid_exist = false; + if (bt_info & BT_INFO_8192E_2ANT_B_SCO_ESCO) + coex_sta->sco_exist = true; + else + coex_sta->sco_exist = false; + } + + halbtc8192e2ant_update_btlink_info(btcoexist); + + if (!(bt_info&BT_INFO_8192E_2ANT_B_CONNECTION)) { + coex_dm->bt_status = BT_8192E_2ANT_BT_STATUS_NON_CONNECTED_IDLE; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BT Non-Connected idle!!!\n"); + } else if (bt_info == BT_INFO_8192E_2ANT_B_CONNECTION) { + coex_dm->bt_status = BT_8192E_2ANT_BT_STATUS_CONNECTED_IDLE; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], bt_infoNotify(), BT Connected-idle!!!\n"); + } else if ((bt_info&BT_INFO_8192E_2ANT_B_SCO_ESCO) || + (bt_info&BT_INFO_8192E_2ANT_B_SCO_BUSY)) { + coex_dm->bt_status = BT_8192E_2ANT_BT_STATUS_SCO_BUSY; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], bt_infoNotify(), BT SCO busy!!!\n"); + } else if (bt_info&BT_INFO_8192E_2ANT_B_ACL_BUSY) { + coex_dm->bt_status = BT_8192E_2ANT_BT_STATUS_ACL_BUSY; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], bt_infoNotify(), BT ACL busy!!!\n"); + } else { + coex_dm->bt_status = BT_8192E_2ANT_BT_STATUS_MAX; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex]bt_infoNotify(), BT Non-Defined state!!!\n"); + } + + if ((BT_8192E_2ANT_BT_STATUS_ACL_BUSY == coex_dm->bt_status) || + (BT_8192E_2ANT_BT_STATUS_SCO_BUSY == coex_dm->bt_status) || + (BT_8192E_2ANT_BT_STATUS_ACL_SCO_BUSY == coex_dm->bt_status)) { + bt_busy = true; + limited_dig = true; + } else { + bt_busy = false; + limited_dig = false; + } + + btcoexist->btc_set(btcoexist, BTC_SET_BL_BT_TRAFFIC_BUSY, &bt_busy); + + coex_dm->limited_dig = limited_dig; + btcoexist->btc_set(btcoexist, BTC_SET_BL_BT_LIMITED_DIG, &limited_dig); + + halbtc8192e2ant_run_coexist_mechanism(btcoexist); +} + +void ex_halbtc8192e2ant_stack_operation_notify(struct btc_coexist *btcoexist, + u8 type) +{ + if (BTC_STACK_OP_INQ_PAGE_PAIR_START == type) + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex] StackOP Inquiry/page/pair start notify\n"); + else if(BTC_STACK_OP_INQ_PAGE_PAIR_FINISH == type) + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex] StackOP Inquiry/page/pair finish notify\n"); +} + +void ex_halbtc8192e2ant_halt_notify(struct btc_coexist *btcoexist) +{ + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, "[BTCoex], Halt notify\n"); + + halbtc8192e2ant_IgnoreWlanAct(btcoexist, FORCE_EXEC, true); + ex_halbtc8192e2ant_media_status_notify(btcoexist, BTC_MEDIA_DISCONNECT); +} + +void ex_halbtc8192e2ant_periodical(struct btc_coexist *btcoexist) +{ + static u8 dis_ver_info_cnt = 0; + u32 fw_ver = 0, bt_patch_ver = 0; + struct btc_board_info *board_info=&btcoexist->board_info; + struct btc_stack_info *stack_info=&btcoexist->stack_info; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "=======================Periodical=======================\n"); + if (dis_ver_info_cnt <= 5) { + dis_ver_info_cnt += 1; + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, + "************************************************\n"); + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, + "Ant PG Num/ Ant Mech/ Ant Pos = %d/ %d/ %d\n", + board_info->pg_ant_num, board_info->btdm_ant_num, + board_info->btdm_ant_pos); + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, + "BT stack/ hci ext ver = %s / %d\n", + ((stack_info->profile_notified) ? "Yes" : "No"), + stack_info->hci_version); + btcoexist->btc_get(btcoexist, BTC_GET_U4_BT_PATCH_VER, + &bt_patch_ver); + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_FW_VER, &fw_ver); + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, + "CoexVer/ FwVer/ PatchVer = %d_%x/ 0x%x/ 0x%x(%d)\n", + glcoex_ver_date_8192e_2ant, glcoex_ver_8192e_2ant, + fw_ver, bt_patch_ver, bt_patch_ver); + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, + "************************************************\n"); + } + +#if(BT_AUTO_REPORT_ONLY_8192E_2ANT == 0) + halbtc8192e2ant_querybt_info(btcoexist); + halbtc8192e2ant_monitor_bt_ctr(btcoexist); + halbtc8192e2ant_monitor_bt_enable_disable(btcoexist); +#else + if (halbtc8192e2ant_iswifi_status_changed(btcoexist) || + coex_dm->auto_tdma_adjust) + halbtc8192e2ant_run_coexist_mechanism(btcoexist); +#endif +} + + +#endif + --- linux-3.13.0.orig/drivers/staging/rtl8821ae/btcoexist/halbtc8192e2ant.h +++ linux-3.13.0/drivers/staging/rtl8821ae/btcoexist/halbtc8192e2ant.h @@ -0,0 +1,162 @@ +/***************************************************************** + * The following is for 8192E 2Ant BT Co-exist definition + *****************************************************************/ +#define BT_AUTO_REPORT_ONLY_8192E_2ANT 0 + +#define BT_INFO_8192E_2ANT_B_FTP BIT7 +#define BT_INFO_8192E_2ANT_B_A2DP BIT6 +#define BT_INFO_8192E_2ANT_B_HID BIT5 +#define BT_INFO_8192E_2ANT_B_SCO_BUSY BIT4 +#define BT_INFO_8192E_2ANT_B_ACL_BUSY BIT3 +#define BT_INFO_8192E_2ANT_B_INQ_PAGE BIT2 +#define BT_INFO_8192E_2ANT_B_SCO_ESCO BIT1 +#define BT_INFO_8192E_2ANT_B_CONNECTION BIT0 + +#define BTC_RSSI_COEX_THRESH_TOL_8192E_2ANT 2 + +enum bt_info_src_8192e_2ant{ + BT_INFO_SRC_8192E_2ANT_WIFI_FW = 0x0, + BT_INFO_SRC_8192E_2ANT_BT_RSP = 0x1, + BT_INFO_SRC_8192E_2ANT_BT_ACTIVE_SEND = 0x2, + BT_INFO_SRC_8192E_2ANT_MAX +}; + +enum bt_8192e_2ant_bt_status{ + BT_8192E_2ANT_BT_STATUS_NON_CONNECTED_IDLE = 0x0, + BT_8192E_2ANT_BT_STATUS_CONNECTED_IDLE = 0x1, + BT_8192E_2ANT_BT_STATUS_INQ_PAGE = 0x2, + BT_8192E_2ANT_BT_STATUS_ACL_BUSY = 0x3, + BT_8192E_2ANT_BT_STATUS_SCO_BUSY = 0x4, + BT_8192E_2ANT_BT_STATUS_ACL_SCO_BUSY = 0x5, + BT_8192E_2ANT_BT_STATUS_MAX +}; + +enum bt_8192e_2ant_coex_algo{ + BT_8192E_2ANT_COEX_ALGO_UNDEFINED = 0x0, + BT_8192E_2ANT_COEX_ALGO_SCO = 0x1, + BT_8192E_2ANT_COEX_ALGO_SCO_PAN = 0x2, + BT_8192E_2ANT_COEX_ALGO_HID = 0x3, + BT_8192E_2ANT_COEX_ALGO_A2DP = 0x4, + BT_8192E_2ANT_COEX_ALGO_A2DP_PANHS = 0x5, + BT_8192E_2ANT_COEX_ALGO_PANEDR = 0x6, + BT_8192E_2ANT_COEX_ALGO_PANHS = 0x7, + BT_8192E_2ANT_COEX_ALGO_PANEDR_A2DP = 0x8, + BT_8192E_2ANT_COEX_ALGO_PANEDR_HID = 0x9, + BT_8192E_2ANT_COEX_ALGO_HID_A2DP_PANEDR = 0xa, + BT_8192E_2ANT_COEX_ALGO_HID_A2DP = 0xb, + BT_8192E_2ANT_COEX_ALGO_MAX = 0xc +}; + +struct coex_dm_8192e_2ant{ + /* fw mechanism */ + u8 pre_dec_bt_pwr; + u8 cur_dec_bt_pwr; + u8 pre_fw_dac_swing_lvl; + u8 cur_fw_dac_swing_lvl; + bool cur_ignore_wlan_act; + bool pre_ignore_wlan_act; + u8 pre_ps_tdma; + u8 cur_ps_tdma; + u8 ps_tdma_para[5]; + u8 ps_tdma_du_adj_type; + bool reset_tdma_adjust; + bool auto_tdma_adjust; + bool pre_ps_tdma_on; + bool cur_ps_tdma_on; + bool pre_bt_auto_report; + bool cur_bt_auto_report; + + /* sw mechanism */ + bool pre_rf_rx_lpf_shrink; + bool cur_rf_rx_lpf_shrink; + u32 bt_rf0x1e_backup; + bool pre_low_penalty_ra; + bool cur_low_penalty_ra; + bool pre_dac_swing_on; + u32 pre_dac_swing_lvl; + bool cur_dac_swing_on; + u32 cur_dac_swing_lvl; + bool pre_adc_back_off; + bool cur_adc_back_off; + bool pre_agc_table_en; + bool cur_agc_table_en; + u32 pre_val0x6c0; + u32 cur_val0x6c0; + u32 pre_val0x6c4; + u32 cur_val0x6c4; + u32 pre_val0x6c8; + u32 cur_val0x6c8; + u8 pre_val0x6cc; + u8 cur_val0x6cc; + bool limited_dig; + + u32 backup_arfr_cnt1; /* Auto Rate Fallback Retry cnt */ + u32 backup_arfr_cnt2; /* Auto Rate Fallback Retry cnt */ + u16 backup_retrylimit; + u8 backup_ampdu_maxtime; + + /* algorithm related */ + u8 pre_algorithm; + u8 cur_algorithm; + u8 bt_status; + u8 wifi_chnl_info[3]; + + u8 pre_sstype; + u8 cur_sstype; + + u32 prera_mask; + u32 curra_mask; + u8 curra_masktype; + u8 pre_arfrtype; + u8 cur_arfrtype; + u8 pre_retrylimit_type; + u8 cur_retrylimit_type; + u8 pre_ampdutime_type; + u8 cur_ampdutime_type; +}; + +struct coex_sta_8192e_2ant{ + bool bt_link_exist; + bool sco_exist; + bool a2dp_exist; + bool hid_exist; + bool pan_exist; + + bool under_lps; + bool under_ips; + u32 high_priority_tx; + u32 high_priority_rx; + u32 low_priority_tx; + u32 low_priority_rx; + u8 bt_rssi; + u8 pre_bt_rssi_state; + u8 pre_wifi_rssi_state[4]; + bool c2h_bt_info_req_sent; + u8 bt_info_c2h[BT_INFO_SRC_8192E_2ANT_MAX][10]; + u32 bt_info_c2h_cnt[BT_INFO_SRC_8192E_2ANT_MAX]; + bool c2h_bt_inquiry_page; + u8 bt_retry_cnt; + u8 bt_info_ext; +}; + +/**************************************************************** + * The following is interface which will notify coex module. + ****************************************************************/ +void ex_halbtc8192e2ant_init_hwconfig(struct btc_coexist *btcoexist); +void ex_halbtc8192e2ant_init_coex_dm(struct btc_coexist *btcoexist); +void ex_halbtc8192e2ant_ips_notify(struct btc_coexist *btcoexist, u8 type); +void ex_halbtc8192e2ant_lps_notify(struct btc_coexist *btcoexist, u8 type); +void ex_halbtc8192e2ant_scan_notify(struct btc_coexist *btcoexist, u8 type); +void ex_halbtc8192e2ant_connect_notify(struct btc_coexist *btcoexist, u8 type); +void ex_halbtc8192e2ant_media_status_notify(struct btc_coexist *btcoexist, + u8 type); +void ex_halbtc8192e2ant_special_packet_notify(struct btc_coexist *btcoexist, + u8 type); +void ex_halbtc8192e2ant_bt_info_notify(struct btc_coexist *btcoexist, + u8 *tmpBuf,u8 length); +void ex_halbtc8192e2ant_stack_operation_notify(struct btc_coexist *btcoexist, + u8 type); +void ex_halbtc8192e2ant_halt_notify(struct btc_coexist *btcoexist); +void ex_halbtc8192e2ant_periodical(struct btc_coexist *btcoexist); +void ex_halbtc8192e2ant_display_coex_info(struct btc_coexist *btcoexist); + --- linux-3.13.0.orig/drivers/staging/rtl8821ae/btcoexist/halbtc8723a2ant.c +++ linux-3.13.0/drivers/staging/rtl8821ae/btcoexist/halbtc8723a2ant.c @@ -0,0 +1,3780 @@ +//============================================================ +// Description: +// +// This file is for RTL8723A Co-exist mechanism +// +// History +// 2012/08/22 Cosa first check in. +// 2012/11/14 Cosa Revise for 8723A 2Ant out sourcing. +// +//============================================================ + +//============================================================ +// include files +//============================================================ +#include "Mp_Precomp.h" +#if(BT_30_SUPPORT == 1) +//============================================================ +// Global variables, these are static variables +//============================================================ +static COEX_DM_8723A_2ANT GLCoexDm8723a2Ant; +static PCOEX_DM_8723A_2ANT pCoexDm=&GLCoexDm8723a2Ant; +static COEX_STA_8723A_2ANT GLCoexSta8723a2Ant; +static PCOEX_STA_8723A_2ANT pCoexSta=&GLCoexSta8723a2Ant; + +const char *const GLBtInfoSrc8723a2Ant[]={ + "BT Info[wifi fw]", + "BT Info[bt rsp]", + "BT Info[bt auto report]", +}; + +//============================================================ +// local function proto type if needed +//============================================================ +//============================================================ +// local function start with halbtc8723a2ant_ +//============================================================ +BOOLEAN +halbtc8723a2ant_IsWifiIdle( + IN PBTC_COEXIST pBtCoexist + ) +{ + BOOLEAN bWifiConnected=FALSE, bScan=FALSE, bLink=FALSE, bRoam=FALSE; + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_CONNECTED, &bWifiConnected); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_SCAN, &bScan); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_LINK, &bLink); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_ROAM, &bRoam); + + if(bWifiConnected) + return FALSE; + if(bScan) + return FALSE; + if(bLink) + return FALSE; + if(bRoam) + return FALSE; + + return true; +} + +u1Byte +halbtc8723a2ant_BtRssiState( + u1Byte levelNum, + u1Byte rssiThresh, + u1Byte rssiThresh1 + ) +{ + s4Byte btRssi=0; + u1Byte btRssiState=pCoexSta->preBtRssiState; + + btRssi = pCoexSta->btRssi; + + if(levelNum == 2) + { + if( (pCoexSta->preBtRssiState == BTC_RSSI_STATE_LOW) || + (pCoexSta->preBtRssiState == BTC_RSSI_STATE_STAY_LOW)) + { + if(btRssi >= (rssiThresh+BTC_RSSI_COEX_THRESH_TOL_8723A_2ANT)) + { + btRssiState = BTC_RSSI_STATE_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state switch to High\n")); + } + else + { + btRssiState = BTC_RSSI_STATE_STAY_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state stay at Low\n")); + } + } + else + { + if(btRssi < rssiThresh) + { + btRssiState = BTC_RSSI_STATE_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state switch to Low\n")); + } + else + { + btRssiState = BTC_RSSI_STATE_STAY_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state stay at High\n")); + } + } + } + else if(levelNum == 3) + { + if(rssiThresh > rssiThresh1) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi thresh error!!\n")); + return pCoexSta->preBtRssiState; + } + + if( (pCoexSta->preBtRssiState == BTC_RSSI_STATE_LOW) || + (pCoexSta->preBtRssiState == BTC_RSSI_STATE_STAY_LOW)) + { + if(btRssi >= (rssiThresh+BTC_RSSI_COEX_THRESH_TOL_8723A_2ANT)) + { + btRssiState = BTC_RSSI_STATE_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state switch to Medium\n")); + } + else + { + btRssiState = BTC_RSSI_STATE_STAY_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state stay at Low\n")); + } + } + else if( (pCoexSta->preBtRssiState == BTC_RSSI_STATE_MEDIUM) || + (pCoexSta->preBtRssiState == BTC_RSSI_STATE_STAY_MEDIUM)) + { + if(btRssi >= (rssiThresh1+BTC_RSSI_COEX_THRESH_TOL_8723A_2ANT)) + { + btRssiState = BTC_RSSI_STATE_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state switch to High\n")); + } + else if(btRssi < rssiThresh) + { + btRssiState = BTC_RSSI_STATE_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state switch to Low\n")); + } + else + { + btRssiState = BTC_RSSI_STATE_STAY_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state stay at Medium\n")); + } + } + else + { + if(btRssi < rssiThresh1) + { + btRssiState = BTC_RSSI_STATE_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state switch to Medium\n")); + } + else + { + btRssiState = BTC_RSSI_STATE_STAY_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, ("[BTCoex], BT Rssi state stay at High\n")); + } + } + } + + pCoexSta->preBtRssiState = btRssiState; + + return btRssiState; +} + +u1Byte +halbtc8723a2ant_WifiRssiState( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte index, + IN u1Byte levelNum, + IN u1Byte rssiThresh, + IN u1Byte rssiThresh1 + ) +{ + s4Byte wifiRssi=0; + u1Byte wifiRssiState=pCoexSta->preWifiRssiState[index]; + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_S4_WIFI_RSSI, &wifiRssi); + + if(levelNum == 2) + { + if( (pCoexSta->preWifiRssiState[index] == BTC_RSSI_STATE_LOW) || + (pCoexSta->preWifiRssiState[index] == BTC_RSSI_STATE_STAY_LOW)) + { + if(wifiRssi >= (rssiThresh+BTC_RSSI_COEX_THRESH_TOL_8723A_2ANT)) + { + wifiRssiState = BTC_RSSI_STATE_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state switch to High\n")); + } + else + { + wifiRssiState = BTC_RSSI_STATE_STAY_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state stay at Low\n")); + } + } + else + { + if(wifiRssi < rssiThresh) + { + wifiRssiState = BTC_RSSI_STATE_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state switch to Low\n")); + } + else + { + wifiRssiState = BTC_RSSI_STATE_STAY_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state stay at High\n")); + } + } + } + else if(levelNum == 3) + { + if(rssiThresh > rssiThresh1) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI thresh error!!\n")); + return pCoexSta->preWifiRssiState[index]; + } + + if( (pCoexSta->preWifiRssiState[index] == BTC_RSSI_STATE_LOW) || + (pCoexSta->preWifiRssiState[index] == BTC_RSSI_STATE_STAY_LOW)) + { + if(wifiRssi >= (rssiThresh+BTC_RSSI_COEX_THRESH_TOL_8723A_2ANT)) + { + wifiRssiState = BTC_RSSI_STATE_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state switch to Medium\n")); + } + else + { + wifiRssiState = BTC_RSSI_STATE_STAY_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state stay at Low\n")); + } + } + else if( (pCoexSta->preWifiRssiState[index] == BTC_RSSI_STATE_MEDIUM) || + (pCoexSta->preWifiRssiState[index] == BTC_RSSI_STATE_STAY_MEDIUM)) + { + if(wifiRssi >= (rssiThresh1+BTC_RSSI_COEX_THRESH_TOL_8723A_2ANT)) + { + wifiRssiState = BTC_RSSI_STATE_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state switch to High\n")); + } + else if(wifiRssi < rssiThresh) + { + wifiRssiState = BTC_RSSI_STATE_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state switch to Low\n")); + } + else + { + wifiRssiState = BTC_RSSI_STATE_STAY_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state stay at Medium\n")); + } + } + else + { + if(wifiRssi < rssiThresh1) + { + wifiRssiState = BTC_RSSI_STATE_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state switch to Medium\n")); + } + else + { + wifiRssiState = BTC_RSSI_STATE_STAY_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, ("[BTCoex], wifi RSSI state stay at High\n")); + } + } + } + + pCoexSta->preWifiRssiState[index] = wifiRssiState; + + return wifiRssiState; +} + +VOID +halbtc8723a2ant_IndicateWifiChnlBwInfo( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ) +{ + u1Byte H2C_Parameter[3] ={0}; + u4Byte wifiBw; + u1Byte wifiCentralChnl; + + // only 2.4G we need to inform bt the chnl mask + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U1_WIFI_CENTRAL_CHNL, &wifiCentralChnl); + if( (BTC_MEDIA_CONNECT == type) && + (wifiCentralChnl <= 14) ) + { + H2C_Parameter[0] = 0x1; + H2C_Parameter[1] = wifiCentralChnl; + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw); + if(BTC_WIFI_BW_HT40 == wifiBw) + H2C_Parameter[2] = 0x30; + else + H2C_Parameter[2] = 0x20; + } + + pCoexDm->wifiChnlInfo[0] = H2C_Parameter[0]; + pCoexDm->wifiChnlInfo[1] = H2C_Parameter[1]; + pCoexDm->wifiChnlInfo[2] = H2C_Parameter[2]; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, ("[BTCoex], FW write 0x19=0x%x\n", + H2C_Parameter[0]<<16|H2C_Parameter[1]<<8|H2C_Parameter[2])); + + pBtCoexist->btc_fill_h2c(pBtCoexist, 0x19, 3, H2C_Parameter); +} + +VOID +halbtc8723a2ant_QueryBtInfo( + IN PBTC_COEXIST pBtCoexist + ) +{ + u1Byte H2C_Parameter[1] ={0}; + + pCoexSta->bC2hBtInfoReqSent = true; + + H2C_Parameter[0] |= BIT0; // trigger + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, ("[BTCoex], Query Bt Info, FW write 0x38=0x%x\n", + H2C_Parameter[0])); + + pBtCoexist->btc_fill_h2c(pBtCoexist, 0x38, 1, H2C_Parameter); +} +u1Byte +halbtc8723a2ant_ActionAlgorithm( + IN PBTC_COEXIST pBtCoexist + ) +{ + PBTC_STACK_INFO pStackInfo=&pBtCoexist->stack_info; + BOOLEAN bBtHsOn=FALSE, bBtBusy=FALSE, limited_dig=FALSE; + u1Byte algorithm=BT_8723A_2ANT_COEX_ALGO_UNDEFINED; + u1Byte numOfDiffProfile=0; + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_HS_OPERATION, &bBtHsOn); + + //====================== + // here we get BT status first + //====================== + pCoexDm->btStatus = BT_8723A_2ANT_BT_STATUS_IDLE; + + if((pStackInfo->bScoExist) ||(bBtHsOn) ||(pStackInfo->bHidExist)) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO or HID or HS exists, set BT non-idle !!!\n")); + pCoexDm->btStatus = BT_8723A_2ANT_BT_STATUS_NON_IDLE; + } + else + { + // A2dp profile + if( (pBtCoexist->stack_info.numOfLink == 1) && + (pStackInfo->bA2dpExist) ) + { + if( (pCoexSta->lowPriorityTx+ pCoexSta->lowPriorityRx) < 100) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], A2DP, low priority tx+rx < 100, set BT connected-idle!!!\n")); + pCoexDm->btStatus = BT_8723A_2ANT_BT_STATUS_CONNECTED_IDLE; + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], A2DP, low priority tx+rx >= 100, set BT non-idle!!!\n")); + pCoexDm->btStatus = BT_8723A_2ANT_BT_STATUS_NON_IDLE; + } + } + // Pan profile + if( (pBtCoexist->stack_info.numOfLink == 1) && + (pStackInfo->bPanExist) ) + { + if((pCoexSta->lowPriorityTx+ pCoexSta->lowPriorityRx) < 600) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], PAN, low priority tx+rx < 600, set BT connected-idle!!!\n")); + pCoexDm->btStatus = BT_8723A_2ANT_BT_STATUS_CONNECTED_IDLE; + } + else + { + if(pCoexSta->lowPriorityTx) + { + if((pCoexSta->lowPriorityRx /pCoexSta->lowPriorityTx)>9 ) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], PAN, low priority rx/tx > 9, set BT connected-idle!!!\n")); + pCoexDm->btStatus = BT_8723A_2ANT_BT_STATUS_CONNECTED_IDLE; + } + } + } + if(BT_8723A_2ANT_BT_STATUS_CONNECTED_IDLE != pCoexDm->btStatus) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], PAN, set BT non-idle!!!\n")); + pCoexDm->btStatus = BT_8723A_2ANT_BT_STATUS_NON_IDLE; + } + } + // Pan+A2dp profile + if( (pBtCoexist->stack_info.numOfLink == 2) && + (pStackInfo->bA2dpExist) && + (pStackInfo->bPanExist) ) + { + if((pCoexSta->lowPriorityTx+ pCoexSta->lowPriorityRx) < 600) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], PAN+A2DP, low priority tx+rx < 600, set BT connected-idle!!!\n")); + pCoexDm->btStatus = BT_8723A_2ANT_BT_STATUS_CONNECTED_IDLE; + } + else + { + if(pCoexSta->lowPriorityTx) + { + if((pCoexSta->lowPriorityRx /pCoexSta->lowPriorityTx)>9 ) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], PAN+A2DP, low priority rx/tx > 9, set BT connected-idle!!!\n")); + pCoexDm->btStatus = BT_8723A_2ANT_BT_STATUS_CONNECTED_IDLE; + } + } + } + if(BT_8723A_2ANT_BT_STATUS_CONNECTED_IDLE != pCoexDm->btStatus) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], PAN+A2DP, set BT non-idle!!!\n")); + pCoexDm->btStatus = BT_8723A_2ANT_BT_STATUS_NON_IDLE; + } + } + } + if(BT_8723A_2ANT_BT_STATUS_IDLE != pCoexDm->btStatus) + { + bBtBusy = true; + limited_dig = true; + } + else + { + bBtBusy = FALSE; + limited_dig = FALSE; + } + pBtCoexist->btc_set(pBtCoexist, BTC_SET_BL_BT_TRAFFIC_BUSY, &bBtBusy); + pBtCoexist->btc_set(pBtCoexist, BTC_SET_BL_BT_LIMITED_DIG, &limited_dig); + //====================== + + if(!pStackInfo->bBtLinkExist) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], No profile exists!!!\n")); + return algorithm; + } + + if(pStackInfo->bScoExist) + numOfDiffProfile++; + if(pStackInfo->bHidExist) + numOfDiffProfile++; + if(pStackInfo->bPanExist) + numOfDiffProfile++; + if(pStackInfo->bA2dpExist) + numOfDiffProfile++; + + if(numOfDiffProfile == 1) + { + if(pStackInfo->bScoExist) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO only\n")); + algorithm = BT_8723A_2ANT_COEX_ALGO_SCO; + } + else + { + if(pStackInfo->bHidExist) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], HID only\n")); + algorithm = BT_8723A_2ANT_COEX_ALGO_HID; + } + else if(pStackInfo->bA2dpExist) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], A2DP only\n")); + algorithm = BT_8723A_2ANT_COEX_ALGO_A2DP; + } + else if(pStackInfo->bPanExist) + { + if(bBtHsOn) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], PAN(HS) only\n")); + algorithm = BT_8723A_2ANT_COEX_ALGO_PANHS; + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], PAN(EDR) only\n")); + algorithm = BT_8723A_2ANT_COEX_ALGO_PANEDR; + } + } + } + } + else if(numOfDiffProfile == 2) + { + if(pStackInfo->bScoExist) + { + if(pStackInfo->bHidExist) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + HID\n")); + algorithm = BT_8723A_2ANT_COEX_ALGO_HID; + } + else if(pStackInfo->bA2dpExist) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + A2DP ==> SCO\n")); + algorithm = BT_8723A_2ANT_COEX_ALGO_SCO; + } + else if(pStackInfo->bPanExist) + { + if(bBtHsOn) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + PAN(HS)\n")); + algorithm = BT_8723A_2ANT_COEX_ALGO_SCO; + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + PAN(EDR)\n")); + algorithm = BT_8723A_2ANT_COEX_ALGO_PANEDR_HID; + } + } + } + else + { + if( pStackInfo->bHidExist && + pStackInfo->bA2dpExist ) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], HID + A2DP\n")); + algorithm = BT_8723A_2ANT_COEX_ALGO_HID_A2DP; + } + else if( pStackInfo->bHidExist && + pStackInfo->bPanExist ) + { + if(bBtHsOn) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], HID + PAN(HS)\n")); + algorithm = BT_8723A_2ANT_COEX_ALGO_HID_A2DP; + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], HID + PAN(EDR)\n")); + algorithm = BT_8723A_2ANT_COEX_ALGO_PANEDR_HID; + } + } + else if( pStackInfo->bPanExist && + pStackInfo->bA2dpExist ) + { + if(bBtHsOn) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], A2DP + PAN(HS)\n")); + algorithm = BT_8723A_2ANT_COEX_ALGO_A2DP; + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], A2DP + PAN(EDR)\n")); + algorithm = BT_8723A_2ANT_COEX_ALGO_PANEDR_A2DP; + } + } + } + } + else if(numOfDiffProfile == 3) + { + if(pStackInfo->bScoExist) + { + if( pStackInfo->bHidExist && + pStackInfo->bA2dpExist ) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + HID + A2DP ==> HID\n")); + algorithm = BT_8723A_2ANT_COEX_ALGO_HID; + } + else if( pStackInfo->bHidExist && + pStackInfo->bPanExist ) + { + if(bBtHsOn) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + HID + PAN(HS)\n")); + algorithm = BT_8723A_2ANT_COEX_ALGO_HID_A2DP; + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + HID + PAN(EDR)\n")); + algorithm = BT_8723A_2ANT_COEX_ALGO_PANEDR_HID; + } + } + else if( pStackInfo->bPanExist && + pStackInfo->bA2dpExist ) + { + if(bBtHsOn) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + A2DP + PAN(HS)\n")); + algorithm = BT_8723A_2ANT_COEX_ALGO_SCO; + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + A2DP + PAN(EDR) ==> HID\n")); + algorithm = BT_8723A_2ANT_COEX_ALGO_PANEDR_HID; + } + } + } + else + { + if( pStackInfo->bHidExist && + pStackInfo->bPanExist && + pStackInfo->bA2dpExist ) + { + if(bBtHsOn) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], HID + A2DP + PAN(HS)\n")); + algorithm = BT_8723A_2ANT_COEX_ALGO_HID_A2DP; + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], HID + A2DP + PAN(EDR)\n")); + algorithm = BT_8723A_2ANT_COEX_ALGO_HID_A2DP_PANEDR; + } + } + } + } + else if(numOfDiffProfile >= 3) + { + if(pStackInfo->bScoExist) + { + if( pStackInfo->bHidExist && + pStackInfo->bPanExist && + pStackInfo->bA2dpExist ) + { + if(bBtHsOn) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Error!!! SCO + HID + A2DP + PAN(HS)\n")); + + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], SCO + HID + A2DP + PAN(EDR)==>PAN(EDR)+HID\n")); + algorithm = BT_8723A_2ANT_COEX_ALGO_PANEDR_HID; + } + } + } + } + + return algorithm; +} + +BOOLEAN +halbtc8723a2ant_NeedToDecBtPwr( + IN PBTC_COEXIST pBtCoexist + ) +{ + BOOLEAN bRet=FALSE; + BOOLEAN bBtHsOn=FALSE, bWifiConnected=FALSE; + s4Byte btHsRssi=0; + + if(!pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_HS_OPERATION, &bBtHsOn)) + return FALSE; + if(!pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_CONNECTED, &bWifiConnected)) + return FALSE; + if(!pBtCoexist->btc_get(pBtCoexist, BTC_GET_S4_HS_RSSI, &btHsRssi)) + return FALSE; + + if(bWifiConnected) + { + if(bBtHsOn) + { + if(btHsRssi > 37) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, ("[BTCoex], Need to decrease bt power for HS mode!!\n")); + bRet = true; + } + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, ("[BTCoex], Need to decrease bt power for Wifi is connected!!\n")); + bRet = true; + } + } + + return bRet; +} + +VOID +halbtc8723a2ant_SetFwDacSwingLevel( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte dacSwingLvl + ) +{ + u1Byte H2C_Parameter[1] ={0}; + + // There are several type of dacswing + // 0x18/ 0x10/ 0xc/ 0x8/ 0x4/ 0x6 + H2C_Parameter[0] = dacSwingLvl; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, ("[BTCoex], Set Dac Swing Level=0x%x\n", dacSwingLvl)); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, ("[BTCoex], FW write 0x29=0x%x\n", H2C_Parameter[0])); + + pBtCoexist->btc_fill_h2c(pBtCoexist, 0x29, 1, H2C_Parameter); +} + +VOID +halbtc8723a2ant_SetFwDecBtPwr( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bDecBtPwr + ) +{ + u1Byte H2C_Parameter[1] ={0}; + + H2C_Parameter[0] = 0; + + if(bDecBtPwr) + { + H2C_Parameter[0] |= BIT1; + } + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, ("[BTCoex], decrease Bt Power : %s, FW write 0x21=0x%x\n", + (bDecBtPwr? "Yes!!":"No!!"), H2C_Parameter[0])); + + pBtCoexist->btc_fill_h2c(pBtCoexist, 0x21, 1, H2C_Parameter); +} + +VOID +halbtc8723a2ant_DecBtPwr( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bForceExec, + IN BOOLEAN bDecBtPwr + ) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, ("[BTCoex], %s Dec BT power = %s\n", + (bForceExec? "force to":""), ((bDecBtPwr)? "ON":"OFF"))); + pCoexDm->bCurDecBtPwr = bDecBtPwr; + + if(!bForceExec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], bPreDecBtPwr=%d, bCurDecBtPwr=%d\n", + pCoexDm->bPreDecBtPwr, pCoexDm->bCurDecBtPwr)); + + if(pCoexDm->bPreDecBtPwr == pCoexDm->bCurDecBtPwr) + return; + } + halbtc8723a2ant_SetFwDecBtPwr(pBtCoexist, pCoexDm->bCurDecBtPwr); + + pCoexDm->bPreDecBtPwr = pCoexDm->bCurDecBtPwr; +} + +VOID +halbtc8723a2ant_FwDacSwingLvl( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bForceExec, + IN u1Byte fwDacSwingLvl + ) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, ("[BTCoex], %s set FW Dac Swing level = %d\n", + (bForceExec? "force to":""), fwDacSwingLvl)); + pCoexDm->curFwDacSwingLvl = fwDacSwingLvl; + + if(!bForceExec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], preFwDacSwingLvl=%d, curFwDacSwingLvl=%d\n", + pCoexDm->preFwDacSwingLvl, pCoexDm->curFwDacSwingLvl)); + + if(pCoexDm->preFwDacSwingLvl == pCoexDm->curFwDacSwingLvl) + return; + } + + halbtc8723a2ant_SetFwDacSwingLevel(pBtCoexist, pCoexDm->curFwDacSwingLvl); + + pCoexDm->preFwDacSwingLvl = pCoexDm->curFwDacSwingLvl; +} + +VOID +halbtc8723a2ant_SetSwRfRxLpfCorner( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bRxRfShrinkOn + ) +{ + if(bRxRfShrinkOn) + { + //Shrink RF Rx LPF corner + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], Shrink RF Rx LPF corner!!\n")); + pBtCoexist->btc_set_rf_reg(pBtCoexist, BTC_RF_A, 0x1e, 0xfffff, 0xf0ff7); + } + else + { + //Resume RF Rx LPF corner + // After initialized, we can use pCoexDm->btRf0x1eBackup + if(pBtCoexist->initilized) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], Resume RF Rx LPF corner!!\n")); + pBtCoexist->btc_set_rf_reg(pBtCoexist, BTC_RF_A, 0x1e, 0xfffff, pCoexDm->btRf0x1eBackup); + } + } +} + +VOID +halbtc8723a2ant_RfShrink( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bForceExec, + IN BOOLEAN bRxRfShrinkOn + ) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, ("[BTCoex], %s turn Rx RF Shrink = %s\n", + (bForceExec? "force to":""), ((bRxRfShrinkOn)? "ON":"OFF"))); + pCoexDm->bCurRfRxLpfShrink = bRxRfShrinkOn; + + if(!bForceExec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, ("[BTCoex], bPreRfRxLpfShrink=%d, bCurRfRxLpfShrink=%d\n", + pCoexDm->bPreRfRxLpfShrink, pCoexDm->bCurRfRxLpfShrink)); + + if(pCoexDm->bPreRfRxLpfShrink == pCoexDm->bCurRfRxLpfShrink) + return; + } + halbtc8723a2ant_SetSwRfRxLpfCorner(pBtCoexist, pCoexDm->bCurRfRxLpfShrink); + + pCoexDm->bPreRfRxLpfShrink = pCoexDm->bCurRfRxLpfShrink; +} + +VOID +halbtc8723a2ant_SetSwPenaltyTxRateAdaptive( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bLowPenaltyRa + ) +{ + u1Byte tmpU1; + + tmpU1 = pBtCoexist->btc_read_1byte(pBtCoexist, 0x4fd); + tmpU1 |= BIT0; + if(bLowPenaltyRa) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], Tx rate adaptive, set low penalty!!\n")); + tmpU1 &= ~BIT2; + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], Tx rate adaptive, set normal!!\n")); + tmpU1 |= BIT2; + } + + pBtCoexist->btc_write_1byte(pBtCoexist, 0x4fd, tmpU1); +} + +VOID +halbtc8723a2ant_LowPenaltyRa( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bForceExec, + IN BOOLEAN bLowPenaltyRa + ) +{ + return; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, ("[BTCoex], %s turn LowPenaltyRA = %s\n", + (bForceExec? "force to":""), ((bLowPenaltyRa)? "ON":"OFF"))); + pCoexDm->bCurLowPenaltyRa = bLowPenaltyRa; + + if(!bForceExec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, ("[BTCoex], bPreLowPenaltyRa=%d, bCurLowPenaltyRa=%d\n", + pCoexDm->bPreLowPenaltyRa, pCoexDm->bCurLowPenaltyRa)); + + if(pCoexDm->bPreLowPenaltyRa == pCoexDm->bCurLowPenaltyRa) + return; + } + halbtc8723a2ant_SetSwPenaltyTxRateAdaptive(pBtCoexist, pCoexDm->bCurLowPenaltyRa); + + pCoexDm->bPreLowPenaltyRa = pCoexDm->bCurLowPenaltyRa; +} + +VOID +halbtc8723a2ant_SetSwFullTimeDacSwing( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bSwDacSwingOn, + IN u4Byte swDacSwingLvl + ) +{ + if(bSwDacSwingOn) + { + pBtCoexist->btc_setBbReg(pBtCoexist, 0x880, 0xff000000, swDacSwingLvl); + } + else + { + pBtCoexist->btc_setBbReg(pBtCoexist, 0x880, 0xff000000, 0xc0); + } +} + + +VOID +halbtc8723a2ant_DacSwing( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bForceExec, + IN BOOLEAN bDacSwingOn, + IN u4Byte dacSwingLvl + ) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, ("[BTCoex], %s turn DacSwing=%s, dacSwingLvl=0x%x\n", + (bForceExec? "force to":""), ((bDacSwingOn)? "ON":"OFF"), dacSwingLvl)); + pCoexDm->bCurDacSwingOn = bDacSwingOn; + pCoexDm->curDacSwingLvl = dacSwingLvl; + + if(!bForceExec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, ("[BTCoex], bPreDacSwingOn=%d, preDacSwingLvl=0x%x, bCurDacSwingOn=%d, curDacSwingLvl=0x%x\n", + pCoexDm->bPreDacSwingOn, pCoexDm->preDacSwingLvl, + pCoexDm->bCurDacSwingOn, pCoexDm->curDacSwingLvl)); + + if( (pCoexDm->bPreDacSwingOn == pCoexDm->bCurDacSwingOn) && + (pCoexDm->preDacSwingLvl == pCoexDm->curDacSwingLvl) ) + return; + } + mdelay(30); + halbtc8723a2ant_SetSwFullTimeDacSwing(pBtCoexist, bDacSwingOn, dacSwingLvl); + + pCoexDm->bPreDacSwingOn = pCoexDm->bCurDacSwingOn; + pCoexDm->preDacSwingLvl = pCoexDm->curDacSwingLvl; +} + +VOID +halbtc8723a2ant_SetAdcBackOff( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bAdcBackOff + ) +{ + if(bAdcBackOff) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], BB BackOff Level On!\n")); + pBtCoexist->btc_write_4byte(pBtCoexist, 0xc04,0x3a07611); + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], BB BackOff Level Off!\n")); + pBtCoexist->btc_write_4byte(pBtCoexist, 0xc04,0x3a05611); + } +} + +VOID +halbtc8723a2ant_AdcBackOff( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bForceExec, + IN BOOLEAN bAdcBackOff + ) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, ("[BTCoex], %s turn AdcBackOff = %s\n", + (bForceExec? "force to":""), ((bAdcBackOff)? "ON":"OFF"))); + pCoexDm->bCurAdcBackOff = bAdcBackOff; + + if(!bForceExec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, ("[BTCoex], bPreAdcBackOff=%d, bCurAdcBackOff=%d\n", + pCoexDm->bPreAdcBackOff, pCoexDm->bCurAdcBackOff)); + + if(pCoexDm->bPreAdcBackOff == pCoexDm->bCurAdcBackOff) + return; + } + halbtc8723a2ant_SetAdcBackOff(pBtCoexist, pCoexDm->bCurAdcBackOff); + + pCoexDm->bPreAdcBackOff = pCoexDm->bCurAdcBackOff; +} + +VOID +halbtc8723a2ant_SetAgcTable( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bAgcTableEn + ) +{ + u1Byte rssiAdjustVal=0; + + if(bAgcTableEn) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], Agc Table On!\n")); + pBtCoexist->btc_write_4byte(pBtCoexist, 0xc78,0x4e1c0001); + pBtCoexist->btc_write_4byte(pBtCoexist, 0xc78,0x4d1d0001); + pBtCoexist->btc_write_4byte(pBtCoexist, 0xc78,0x4c1e0001); + pBtCoexist->btc_write_4byte(pBtCoexist, 0xc78,0x4b1f0001); + pBtCoexist->btc_write_4byte(pBtCoexist, 0xc78,0x4a200001); + + pBtCoexist->btc_set_rf_reg(pBtCoexist, BTC_RF_A, 0x12, 0xfffff, 0xdc000); + pBtCoexist->btc_set_rf_reg(pBtCoexist, BTC_RF_A, 0x12, 0xfffff, 0x90000); + pBtCoexist->btc_set_rf_reg(pBtCoexist, BTC_RF_A, 0x12, 0xfffff, 0x51000); + pBtCoexist->btc_set_rf_reg(pBtCoexist, BTC_RF_A, 0x12, 0xfffff, 0x12000); + pBtCoexist->btc_set_rf_reg(pBtCoexist, BTC_RF_A, 0x1a, 0xfffff, 0x00355); + + rssiAdjustVal = 6; + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], Agc Table Off!\n")); + pBtCoexist->btc_write_4byte(pBtCoexist, 0xc78,0x641c0001); + pBtCoexist->btc_write_4byte(pBtCoexist, 0xc78,0x631d0001); + pBtCoexist->btc_write_4byte(pBtCoexist, 0xc78,0x621e0001); + pBtCoexist->btc_write_4byte(pBtCoexist, 0xc78,0x611f0001); + pBtCoexist->btc_write_4byte(pBtCoexist, 0xc78,0x60200001); + + pBtCoexist->btc_set_rf_reg(pBtCoexist, BTC_RF_A, 0x12, 0xfffff, 0x32000); + pBtCoexist->btc_set_rf_reg(pBtCoexist, BTC_RF_A, 0x12, 0xfffff, 0x71000); + pBtCoexist->btc_set_rf_reg(pBtCoexist, BTC_RF_A, 0x12, 0xfffff, 0xb0000); + pBtCoexist->btc_set_rf_reg(pBtCoexist, BTC_RF_A, 0x12, 0xfffff, 0xfc000); + pBtCoexist->btc_set_rf_reg(pBtCoexist, BTC_RF_A, 0x1a, 0xfffff, 0x30355); + } + + // set rssiAdjustVal for wifi module. + pBtCoexist->btc_set(pBtCoexist, BTC_SET_U1_RSSI_ADJ_VAL_FOR_AGC_TABLE_ON, &rssiAdjustVal); +} + + +VOID +halbtc8723a2ant_AgcTable( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bForceExec, + IN BOOLEAN bAgcTableEn + ) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, ("[BTCoex], %s %s Agc Table\n", + (bForceExec? "force to":""), ((bAgcTableEn)? "Enable":"Disable"))); + pCoexDm->bCurAgcTableEn = bAgcTableEn; + + if(!bForceExec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, ("[BTCoex], bPreAgcTableEn=%d, bCurAgcTableEn=%d\n", + pCoexDm->bPreAgcTableEn, pCoexDm->bCurAgcTableEn)); + + if(pCoexDm->bPreAgcTableEn == pCoexDm->bCurAgcTableEn) + return; + } + halbtc8723a2ant_SetAgcTable(pBtCoexist, bAgcTableEn); + + pCoexDm->bPreAgcTableEn = pCoexDm->bCurAgcTableEn; +} + +VOID +halbtc8723a2ant_SetCoexTable( + IN PBTC_COEXIST pBtCoexist, + IN u4Byte val0x6c0, + IN u4Byte val0x6c8, + IN u1Byte val0x6cc + ) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], set coex table, set 0x6c0=0x%x\n", val0x6c0)); + pBtCoexist->btc_write_4byte(pBtCoexist, 0x6c0, val0x6c0); + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], set coex table, set 0x6c8=0x%x\n", val0x6c8)); + pBtCoexist->btc_write_4byte(pBtCoexist, 0x6c8, val0x6c8); + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, ("[BTCoex], set coex table, set 0x6cc=0x%x\n", val0x6cc)); + pBtCoexist->btc_write_1byte(pBtCoexist, 0x6cc, val0x6cc); +} + +VOID +halbtc8723a2ant_CoexTable( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bForceExec, + IN u4Byte val0x6c0, + IN u4Byte val0x6c8, + IN u1Byte val0x6cc + ) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, ("[BTCoex], %s write Coex Table 0x6c0=0x%x, 0x6c8=0x%x, 0x6cc=0x%x\n", + (bForceExec? "force to":""), val0x6c0, val0x6c8, val0x6cc)); + pCoexDm->curVal0x6c0 = val0x6c0; + pCoexDm->curVal0x6c8 = val0x6c8; + pCoexDm->curVal0x6cc = val0x6cc; + + if(!bForceExec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, ("[BTCoex], preVal0x6c0=0x%x, preVal0x6c8=0x%x, preVal0x6cc=0x%x !!\n", + pCoexDm->preVal0x6c0, pCoexDm->preVal0x6c8, pCoexDm->preVal0x6cc)); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, ("[BTCoex], curVal0x6c0=0x%x, curVal0x6c8=0x%x, curVal0x6cc=0x%x !!\n", + pCoexDm->curVal0x6c0, pCoexDm->curVal0x6c8, pCoexDm->curVal0x6cc)); + + if( (pCoexDm->preVal0x6c0 == pCoexDm->curVal0x6c0) && + (pCoexDm->preVal0x6c8 == pCoexDm->curVal0x6c8) && + (pCoexDm->preVal0x6cc == pCoexDm->curVal0x6cc) ) + return; + } + halbtc8723a2ant_SetCoexTable(pBtCoexist, val0x6c0, val0x6c8, val0x6cc); + + pCoexDm->preVal0x6c0 = pCoexDm->curVal0x6c0; + pCoexDm->preVal0x6c8 = pCoexDm->curVal0x6c8; + pCoexDm->preVal0x6cc = pCoexDm->curVal0x6cc; +} + +VOID +halbtc8723a2ant_SetFwIgnoreWlanAct( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bEnable + ) +{ + u1Byte H2C_Parameter[1] ={0}; + + if(bEnable) + { + H2C_Parameter[0] |= BIT0; // function enable + } + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, ("[BTCoex], set FW for BT Ignore Wlan_Act, FW write 0x25=0x%x\n", + H2C_Parameter[0])); + + pBtCoexist->btc_fill_h2c(pBtCoexist, 0x25, 1, H2C_Parameter); +} + +VOID +halbtc8723a2ant_IgnoreWlanAct( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bForceExec, + IN BOOLEAN bEnable + ) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, ("[BTCoex], %s turn Ignore WlanAct %s\n", + (bForceExec? "force to":""), (bEnable? "ON":"OFF"))); + pCoexDm->bCurIgnoreWlanAct = bEnable; + + if(!bForceExec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], bPreIgnoreWlanAct = %d, bCurIgnoreWlanAct = %d!!\n", + pCoexDm->bPreIgnoreWlanAct, pCoexDm->bCurIgnoreWlanAct)); + + if(pCoexDm->bPreIgnoreWlanAct == pCoexDm->bCurIgnoreWlanAct) + return; + } + halbtc8723a2ant_SetFwIgnoreWlanAct(pBtCoexist, bEnable); + + pCoexDm->bPreIgnoreWlanAct = pCoexDm->bCurIgnoreWlanAct; +} + +VOID +halbtc8723a2ant_SetFwPstdma( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte byte1, + IN u1Byte byte2, + IN u1Byte byte3, + IN u1Byte byte4, + IN u1Byte byte5 + ) +{ + u1Byte H2C_Parameter[5] ={0}; + + H2C_Parameter[0] = byte1; + H2C_Parameter[1] = byte2; + H2C_Parameter[2] = byte3; + H2C_Parameter[3] = byte4; + H2C_Parameter[4] = byte5; + + pCoexDm->psTdmaPara[0] = byte1; + pCoexDm->psTdmaPara[1] = byte2; + pCoexDm->psTdmaPara[2] = byte3; + pCoexDm->psTdmaPara[3] = byte4; + pCoexDm->psTdmaPara[4] = byte5; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, ("[BTCoex], FW write 0x3a(5bytes)=0x%x%08x\n", + H2C_Parameter[0], + H2C_Parameter[1]<<24|H2C_Parameter[2]<<16|H2C_Parameter[3]<<8|H2C_Parameter[4])); + + pBtCoexist->btc_fill_h2c(pBtCoexist, 0x3a, 5, H2C_Parameter); +} + +VOID +halbtc8723a2ant_PsTdma( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bForceExec, + IN BOOLEAN bTurnOn, + IN u1Byte type + ) +{ + u4Byte btTxRxCnt=0; + + btTxRxCnt = pCoexSta->highPriorityTx+pCoexSta->highPriorityRx+ + pCoexSta->lowPriorityTx+pCoexSta->lowPriorityRx; + + if(btTxRxCnt > 3000) + { + pCoexDm->bCurPsTdmaOn = true; + pCoexDm->curPsTdma = 8; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, ("[BTCoex], turn ON PS TDMA, type=%d for BT tx/rx counters=%d(>3000)\n", + pCoexDm->curPsTdma, btTxRxCnt)); + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, ("[BTCoex], %s turn %s PS TDMA, type=%d\n", + (bForceExec? "force to":""), (bTurnOn? "ON":"OFF"), type)); + pCoexDm->bCurPsTdmaOn = bTurnOn; + pCoexDm->curPsTdma = type; + } + + if(!bForceExec) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], bPrePsTdmaOn = %d, bCurPsTdmaOn = %d!!\n", + pCoexDm->bPrePsTdmaOn, pCoexDm->bCurPsTdmaOn)); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], prePsTdma = %d, curPsTdma = %d!!\n", + pCoexDm->prePsTdma, pCoexDm->curPsTdma)); + + if( (pCoexDm->bPrePsTdmaOn == pCoexDm->bCurPsTdmaOn) && + (pCoexDm->prePsTdma == pCoexDm->curPsTdma) ) + return; + } + if(pCoexDm->bCurPsTdmaOn) + { + switch(pCoexDm->curPsTdma) + { + case 1: + default: + halbtc8723a2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x1a, 0x1a, 0xe1, 0x98); + break; + case 2: + halbtc8723a2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x12, 0x12, 0xe1, 0x98); + break; + case 3: + halbtc8723a2ant_SetFwPstdma(pBtCoexist, 0xe3, 0xa, 0xa, 0xe1, 0x98); + break; + case 4: + halbtc8723a2ant_SetFwPstdma(pBtCoexist, 0xa3, 0x5, 0x5, 0xe1, 0x80); + break; + case 5: + halbtc8723a2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x1a, 0x1a, 0x60, 0x98); + break; + case 6: + halbtc8723a2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x12, 0x12, 0x60, 0x98); + break; + case 7: + halbtc8723a2ant_SetFwPstdma(pBtCoexist, 0xe3, 0xa, 0xa, 0x60, 0x98); + break; + case 8: + halbtc8723a2ant_SetFwPstdma(pBtCoexist, 0xa3, 0x5, 0x5, 0x60, 0x80); + break; + case 9: + halbtc8723a2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x1a, 0x1a, 0xe1, 0x98); + break; + case 10: + halbtc8723a2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x12, 0x12, 0xe1, 0x98); + break; + case 11: + halbtc8723a2ant_SetFwPstdma(pBtCoexist, 0xe3, 0xa, 0xa, 0xe1, 0x98); + break; + case 12: + halbtc8723a2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x5, 0x5, 0xe1, 0x98); + break; + case 13: + halbtc8723a2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x1a, 0x1a, 0x60, 0x98); + break; + case 14: + halbtc8723a2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x12, 0x12, 0x60, 0x98); + break; + case 15: + halbtc8723a2ant_SetFwPstdma(pBtCoexist, 0xe3, 0xa, 0xa, 0x60, 0x98); + break; + case 16: + halbtc8723a2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x5, 0x5, 0x60, 0x98); + break; + case 17: + halbtc8723a2ant_SetFwPstdma(pBtCoexist, 0xa3, 0x2f, 0x2f, 0x60, 0x80); + break; + case 18: + halbtc8723a2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x5, 0x5, 0xe1, 0x98); + break; + case 19: + halbtc8723a2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x25, 0x25, 0xe1, 0x98); + break; + case 20: + halbtc8723a2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x25, 0x25, 0x60, 0x98); + break; + } + } + else + { + // disable PS tdma + switch(pCoexDm->curPsTdma) + { + case 0: + halbtc8723a2ant_SetFwPstdma(pBtCoexist, 0x0, 0x0, 0x0, 0x8, 0x0); + break; + case 1: + halbtc8723a2ant_SetFwPstdma(pBtCoexist, 0x0, 0x0, 0x0, 0x0, 0x0); + break; + default: + halbtc8723a2ant_SetFwPstdma(pBtCoexist, 0x0, 0x0, 0x0, 0x8, 0x0); + break; + } + } + + // update pre state + pCoexDm->bPrePsTdmaOn = pCoexDm->bCurPsTdmaOn; + pCoexDm->prePsTdma = pCoexDm->curPsTdma; +} + + +VOID +halbtc8723a2ant_CoexAllOff( + IN PBTC_COEXIST pBtCoexist + ) +{ + // fw all off + halbtc8723a2ant_IgnoreWlanAct(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 0); + halbtc8723a2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 0x20); + halbtc8723a2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, FALSE); + + // sw all off + halbtc8723a2ant_AgcTable(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_AdcBackOff(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_LowPenaltyRa(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_RfShrink(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0xc0); + + // hw all off + halbtc8723a2ant_CoexTable(pBtCoexist, NORMAL_EXEC, 0x55555555, 0xffff, 0x3); +} + +VOID +halbtc8723a2ant_InitCoexDm( + IN PBTC_COEXIST pBtCoexist + ) +{ + // force to reset coex mechanism + halbtc8723a2ant_CoexTable(pBtCoexist, FORCE_EXEC, 0x55555555, 0xffff, 0x3); + halbtc8723a2ant_PsTdma(pBtCoexist, FORCE_EXEC, FALSE, 0); + halbtc8723a2ant_FwDacSwingLvl(pBtCoexist, FORCE_EXEC, 0x20); + halbtc8723a2ant_DecBtPwr(pBtCoexist, FORCE_EXEC, FALSE); + halbtc8723a2ant_IgnoreWlanAct(pBtCoexist, FORCE_EXEC, FALSE); + + halbtc8723a2ant_AgcTable(pBtCoexist, FORCE_EXEC, FALSE); + halbtc8723a2ant_AdcBackOff(pBtCoexist, FORCE_EXEC, FALSE); + halbtc8723a2ant_LowPenaltyRa(pBtCoexist, FORCE_EXEC, FALSE); + halbtc8723a2ant_RfShrink(pBtCoexist, FORCE_EXEC, FALSE); + halbtc8723a2ant_DacSwing(pBtCoexist, FORCE_EXEC, FALSE, 0xc0); +} + +VOID +halbtc8723a2ant_BtInquiryPage( + IN PBTC_COEXIST pBtCoexist + ) +{ + BOOLEAN bLowPwrDisable=true; + + pBtCoexist->btc_set(pBtCoexist, BTC_SET_ACT_DISABLE_LOW_POWER, &bLowPwrDisable); + + halbtc8723a2ant_CoexTable(pBtCoexist, NORMAL_EXEC, 0x55555555, 0xffff, 0x3); + halbtc8723a2ant_IgnoreWlanAct(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 8); +} + +VOID +halbtc8723a2ant_BtEnableAction( + IN PBTC_COEXIST pBtCoexist + ) +{ + BOOLEAN bWifiConnected=FALSE; + + // Here we need to resend some wifi info to BT + // because bt is reset and loss of the info. + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_CONNECTED, &bWifiConnected); + if(bWifiConnected) + { + halbtc8723a2ant_IndicateWifiChnlBwInfo(pBtCoexist, BTC_MEDIA_CONNECT); + } + else + { + halbtc8723a2ant_IndicateWifiChnlBwInfo(pBtCoexist, BTC_MEDIA_DISCONNECT); + } + + halbtc8723a2ant_IgnoreWlanAct(pBtCoexist, FORCE_EXEC, FALSE); +} + +VOID +halbtc8723a2ant_MonitorBtCtr( + IN PBTC_COEXIST pBtCoexist + ) +{ + u4Byte regHPTxRx, regLPTxRx, u4Tmp; + u4Byte regHPTx=0, regHPRx=0, regLPTx=0, regLPRx=0; + u1Byte u1Tmp; + + regHPTxRx = 0x770; + regLPTxRx = 0x774; + + u4Tmp = pBtCoexist->btc_read_4byte(pBtCoexist, regHPTxRx); + regHPTx = u4Tmp & MASKLWORD; + regHPRx = (u4Tmp & MASKHWORD)>>16; + + u4Tmp = pBtCoexist->btc_read_4byte(pBtCoexist, regLPTxRx); + regLPTx = u4Tmp & MASKLWORD; + regLPRx = (u4Tmp & MASKHWORD)>>16; + + pCoexSta->highPriorityTx = regHPTx; + pCoexSta->highPriorityRx = regHPRx; + pCoexSta->lowPriorityTx = regLPTx; + pCoexSta->lowPriorityRx = regLPRx; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, ("[BTCoex], High Priority Tx/Rx (reg 0x%x)=0x%x(%d)/0x%x(%d)\n", + regHPTxRx, regHPTx, regHPTx, regHPRx, regHPRx)); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, ("[BTCoex], Low Priority Tx/Rx (reg 0x%x)=0x%x(%d)/0x%x(%d)\n", + regLPTxRx, regLPTx, regLPTx, regLPRx, regLPRx)); + + // reset counter + pBtCoexist->btc_write_1byte(pBtCoexist, 0x76e, 0xc); +} + +VOID +halbtc8723a2ant_MonitorBtEnableDisable( + IN PBTC_COEXIST pBtCoexist + ) +{ + static BOOLEAN bPreBtDisabled=FALSE; + static u4Byte btDisableCnt=0; + BOOLEAN bBtActive=true, bBtDisabled=FALSE; + + // This function check if bt is disabled + + if( pCoexSta->highPriorityTx == 0 && + pCoexSta->highPriorityRx == 0 && + pCoexSta->lowPriorityTx == 0 && + pCoexSta->lowPriorityRx == 0) + { + bBtActive = FALSE; + } + if( pCoexSta->highPriorityTx == 0xffff && + pCoexSta->highPriorityRx == 0xffff && + pCoexSta->lowPriorityTx == 0xffff && + pCoexSta->lowPriorityRx == 0xffff) + { + bBtActive = FALSE; + } + if(bBtActive) + { + btDisableCnt = 0; + bBtDisabled = FALSE; + pBtCoexist->btc_set(pBtCoexist, BTC_SET_BL_BT_DISABLE, &bBtDisabled); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, ("[BTCoex], BT is enabled !!\n")); + } + else + { + btDisableCnt++; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, ("[BTCoex], bt all counters=0, %d times!!\n", + btDisableCnt)); + if(btDisableCnt >= 2) + { + bBtDisabled = true; + pBtCoexist->btc_set(pBtCoexist, BTC_SET_BL_BT_DISABLE, &bBtDisabled); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, ("[BTCoex], BT is disabled !!\n")); + } + } + if(bPreBtDisabled != bBtDisabled) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, ("[BTCoex], BT is from %s to %s!!\n", + (bPreBtDisabled ? "disabled":"enabled"), + (bBtDisabled ? "disabled":"enabled"))); + bPreBtDisabled = bBtDisabled; + if(!bBtDisabled) + { + halbtc8723a2ant_BtEnableAction(pBtCoexist); + } + } +} + +BOOLEAN +halbtc8723a2ant_IsCommonAction( + IN PBTC_COEXIST pBtCoexist + ) +{ + PBTC_STACK_INFO pStackInfo=&pBtCoexist->stack_info; + BOOLEAN bCommon=FALSE, bWifiConnected=FALSE; + BOOLEAN bLowPwrDisable=FALSE; + + if(!pStackInfo->bBtLinkExist) + { + bLowPwrDisable = FALSE; + pBtCoexist->btc_set(pBtCoexist, BTC_SET_ACT_DISABLE_LOW_POWER, &bLowPwrDisable); + } + else + { + bLowPwrDisable = true; + pBtCoexist->btc_set(pBtCoexist, BTC_SET_ACT_DISABLE_LOW_POWER, &bLowPwrDisable); + } + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_CONNECTED, &bWifiConnected); + + if(halbtc8723a2ant_IsWifiIdle(pBtCoexist) && + BT_8723A_2ANT_BT_STATUS_IDLE == pCoexDm->btStatus) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Wifi idle + Bt idle!!\n")); + + halbtc8723a2ant_LowPenaltyRa(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_RfShrink(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_CoexTable(pBtCoexist, NORMAL_EXEC, 0x55555555, 0xffff, 0x3); + + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 0); + halbtc8723a2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 0x20); + halbtc8723a2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, FALSE); + + halbtc8723a2ant_AgcTable(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_AdcBackOff(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0xc0); + + bCommon = true; + } + else if(!halbtc8723a2ant_IsWifiIdle(pBtCoexist) && + (BT_8723A_2ANT_BT_STATUS_IDLE == pCoexDm->btStatus) ) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Wifi non-idle + BT idle!!\n")); + + halbtc8723a2ant_LowPenaltyRa(pBtCoexist, NORMAL_EXEC, true); + halbtc8723a2ant_RfShrink(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_CoexTable(pBtCoexist, NORMAL_EXEC, 0x55555555, 0xffff, 0x3); + + halbtc8723a2ant_IgnoreWlanAct(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 0); + halbtc8723a2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 0x20); + halbtc8723a2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, true); + + halbtc8723a2ant_AgcTable(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_AdcBackOff(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0xc0); + + bCommon = true; + } + else if(halbtc8723a2ant_IsWifiIdle(pBtCoexist) && + (BT_8723A_2ANT_BT_STATUS_CONNECTED_IDLE == pCoexDm->btStatus) ) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Wifi idle + Bt connected idle!!\n")); + + halbtc8723a2ant_LowPenaltyRa(pBtCoexist, NORMAL_EXEC, true); + halbtc8723a2ant_RfShrink(pBtCoexist, NORMAL_EXEC, true); + halbtc8723a2ant_CoexTable(pBtCoexist, NORMAL_EXEC, 0x55555555, 0xffff, 0x3); + + halbtc8723a2ant_IgnoreWlanAct(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 0); + halbtc8723a2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 0x20); + halbtc8723a2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, FALSE); + + halbtc8723a2ant_AgcTable(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_AdcBackOff(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0xc0); + + bCommon = true; + } + else if(!halbtc8723a2ant_IsWifiIdle(pBtCoexist) && + (BT_8723A_2ANT_BT_STATUS_CONNECTED_IDLE == pCoexDm->btStatus) ) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Wifi non-idle + Bt connected idle!!\n")); + + halbtc8723a2ant_LowPenaltyRa(pBtCoexist, NORMAL_EXEC, true); + halbtc8723a2ant_RfShrink(pBtCoexist, NORMAL_EXEC, true); + halbtc8723a2ant_CoexTable(pBtCoexist, NORMAL_EXEC, 0x55555555, 0xffff, 0x3); + + halbtc8723a2ant_IgnoreWlanAct(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 0); + halbtc8723a2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 0x20); + halbtc8723a2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, FALSE); + + halbtc8723a2ant_AgcTable(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_AdcBackOff(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0xc0); + + bCommon = true; + } + else if(halbtc8723a2ant_IsWifiIdle(pBtCoexist) && + (BT_8723A_2ANT_BT_STATUS_NON_IDLE == pCoexDm->btStatus) ) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Wifi idle + BT non-idle!!\n")); + + halbtc8723a2ant_LowPenaltyRa(pBtCoexist, NORMAL_EXEC, true); + halbtc8723a2ant_RfShrink(pBtCoexist, NORMAL_EXEC, true); + halbtc8723a2ant_CoexTable(pBtCoexist, NORMAL_EXEC, 0x55555555, 0xffff, 0x3); + + halbtc8723a2ant_IgnoreWlanAct(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 0); + halbtc8723a2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 0x20); + halbtc8723a2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, FALSE); + + halbtc8723a2ant_AgcTable(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_AdcBackOff(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0xc0); + + bCommon = true; + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Wifi non-idle + BT non-idle!!\n")); + halbtc8723a2ant_LowPenaltyRa(pBtCoexist, NORMAL_EXEC, true); + halbtc8723a2ant_RfShrink(pBtCoexist, NORMAL_EXEC, true); + halbtc8723a2ant_IgnoreWlanAct(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 0x20); + + bCommon = FALSE; + } + + return bCommon; +} +VOID +halbtc8723a2ant_TdmaDurationAdjust( + IN PBTC_COEXIST pBtCoexist, + IN BOOLEAN bScoHid, + IN BOOLEAN bTxPause, + IN u1Byte maxInterval + ) +{ + static s4Byte up,dn,m,n,WaitCount; + s4Byte result; //0: no change, +1: increase WiFi duration, -1: decrease WiFi duration + u1Byte retryCount=0; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, ("[BTCoex], TdmaDurationAdjust()\n")); + + if(pCoexDm->bResetTdmaAdjust) + { + pCoexDm->bResetTdmaAdjust = FALSE; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], first run TdmaDurationAdjust()!!\n")); + { + if(bScoHid) + { + if(bTxPause) + { + if(maxInterval == 1) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 13); + pCoexDm->psTdmaDuAdjType = 13; + } + else if(maxInterval == 2) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 14); + pCoexDm->psTdmaDuAdjType = 14; + } + else if(maxInterval == 3) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 15); + pCoexDm->psTdmaDuAdjType = 15; + } + else + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 15); + pCoexDm->psTdmaDuAdjType = 15; + } + } + else + { + if(maxInterval == 1) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 9); + pCoexDm->psTdmaDuAdjType = 9; + } + else if(maxInterval == 2) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 10); + pCoexDm->psTdmaDuAdjType = 10; + } + else if(maxInterval == 3) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 11); + pCoexDm->psTdmaDuAdjType = 11; + } + else + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 11); + pCoexDm->psTdmaDuAdjType = 11; + } + } + } + else + { + if(bTxPause) + { + if(maxInterval == 1) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 5); + pCoexDm->psTdmaDuAdjType = 5; + } + else if(maxInterval == 2) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 6); + pCoexDm->psTdmaDuAdjType = 6; + } + else if(maxInterval == 3) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 7); + pCoexDm->psTdmaDuAdjType = 7; + } + else + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 7); + pCoexDm->psTdmaDuAdjType = 7; + } + } + else + { + if(maxInterval == 1) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 1); + pCoexDm->psTdmaDuAdjType = 1; + } + else if(maxInterval == 2) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 2); + pCoexDm->psTdmaDuAdjType = 2; + } + else if(maxInterval == 3) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 3); + pCoexDm->psTdmaDuAdjType = 3; + } + else + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 3); + pCoexDm->psTdmaDuAdjType = 3; + } + } + } + } + //============ + up = 0; + dn = 0; + m = 1; + n= 3; + result = 0; + WaitCount = 0; + } + else + { + //accquire the BT TRx retry count from BT_Info byte2 + retryCount = pCoexSta->btRetryCnt; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], retryCount = %d\n", retryCount)); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], up=%d, dn=%d, m=%d, n=%d, WaitCount=%d\n", + up, dn, m, n, WaitCount)); + result = 0; + WaitCount++; + + if(retryCount == 0) // no retry in the last 2-second duration + { + up++; + dn--; + + if (dn <= 0) + dn = 0; + + if(up >= n) // if s n 2 retry count0, hռeWiFi duration + { + WaitCount = 0; + n = 3; + up = 0; + dn = 0; + result = 1; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], Increase wifi duration!!\n")); + } + } + else if (retryCount <= 3) // <=3 retry in the last 2-second duration + { + up--; + dn++; + + if (up <= 0) + up = 0; + + if (dn == 2) // if s 2 2 retry count< 3, hկWiFi duration + { + if (WaitCount <= 2) + m++; // קK@blevelӦ^ + else + m = 1; + + if ( m >= 20) //m ̤j = 20 ' ̤j120 recheckO_վ WiFi duration. + m = 20; + + n = 3*m; + up = 0; + dn = 0; + WaitCount = 0; + result = -1; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], Decrease wifi duration for retryCounter<3!!\n")); + } + } + else //retry count > 3, un1 retry count > 3, hկWiFi duration + { + if (WaitCount == 1) + m++; // קK@blevelӦ^ + else + m = 1; + + if ( m >= 20) //m ̤j = 20 ' ̤j120 recheckO_վ WiFi duration. + m = 20; + + n = 3*m; + up = 0; + dn = 0; + WaitCount = 0; + result = -1; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], Decrease wifi duration for retryCounter>3!!\n")); + } + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], max Interval = %d\n", maxInterval)); + if(maxInterval == 1) + { + if(bTxPause) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], TxPause = 1\n")); + + if(pCoexDm->curPsTdma == 1) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 5); + pCoexDm->psTdmaDuAdjType = 5; + } + else if(pCoexDm->curPsTdma == 2) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 6); + pCoexDm->psTdmaDuAdjType = 6; + } + else if(pCoexDm->curPsTdma == 3) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 7); + pCoexDm->psTdmaDuAdjType = 7; + } + else if(pCoexDm->curPsTdma == 4) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 8); + pCoexDm->psTdmaDuAdjType = 8; + } + if(pCoexDm->curPsTdma == 9) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 13); + pCoexDm->psTdmaDuAdjType = 13; + } + else if(pCoexDm->curPsTdma == 10) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 14); + pCoexDm->psTdmaDuAdjType = 14; + } + else if(pCoexDm->curPsTdma == 11) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 15); + pCoexDm->psTdmaDuAdjType = 15; + } + else if(pCoexDm->curPsTdma == 12) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 16); + pCoexDm->psTdmaDuAdjType = 16; + } + + if(result == -1) + { + if(pCoexDm->curPsTdma == 5) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 6); + pCoexDm->psTdmaDuAdjType = 6; + } + else if(pCoexDm->curPsTdma == 6) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 7); + pCoexDm->psTdmaDuAdjType = 7; + } + else if(pCoexDm->curPsTdma == 7) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 8); + pCoexDm->psTdmaDuAdjType = 8; + } + else if(pCoexDm->curPsTdma == 13) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 14); + pCoexDm->psTdmaDuAdjType = 14; + } + else if(pCoexDm->curPsTdma == 14) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 15); + pCoexDm->psTdmaDuAdjType = 15; + } + else if(pCoexDm->curPsTdma == 15) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 16); + pCoexDm->psTdmaDuAdjType = 16; + } + } + else if (result == 1) + { + if(pCoexDm->curPsTdma == 8) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 7); + pCoexDm->psTdmaDuAdjType = 7; + } + else if(pCoexDm->curPsTdma == 7) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 6); + pCoexDm->psTdmaDuAdjType = 6; + } + else if(pCoexDm->curPsTdma == 6) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 5); + pCoexDm->psTdmaDuAdjType = 5; + } + else if(pCoexDm->curPsTdma == 16) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 15); + pCoexDm->psTdmaDuAdjType = 15; + } + else if(pCoexDm->curPsTdma == 15) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 14); + pCoexDm->psTdmaDuAdjType = 14; + } + else if(pCoexDm->curPsTdma == 14) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 13); + pCoexDm->psTdmaDuAdjType = 13; + } + } + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], TxPause = 0\n")); + if(pCoexDm->curPsTdma == 5) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 1); + pCoexDm->psTdmaDuAdjType = 1; + } + else if(pCoexDm->curPsTdma == 6) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 2); + pCoexDm->psTdmaDuAdjType = 2; + } + else if(pCoexDm->curPsTdma == 7) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 3); + pCoexDm->psTdmaDuAdjType = 3; + } + else if(pCoexDm->curPsTdma == 8) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 4); + pCoexDm->psTdmaDuAdjType = 4; + } + if(pCoexDm->curPsTdma == 13) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 9); + pCoexDm->psTdmaDuAdjType = 9; + } + else if(pCoexDm->curPsTdma == 14) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 10); + pCoexDm->psTdmaDuAdjType = 10; + } + else if(pCoexDm->curPsTdma == 15) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 11); + pCoexDm->psTdmaDuAdjType = 11; + } + else if(pCoexDm->curPsTdma == 16) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 12); + pCoexDm->psTdmaDuAdjType = 12; + } + + if(result == -1) + { + if(pCoexDm->curPsTdma == 1) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 2); + pCoexDm->psTdmaDuAdjType = 2; + } + else if(pCoexDm->curPsTdma == 2) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 3); + pCoexDm->psTdmaDuAdjType = 3; + } + else if(pCoexDm->curPsTdma == 3) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 4); + pCoexDm->psTdmaDuAdjType = 4; + } + else if(pCoexDm->curPsTdma == 9) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 10); + pCoexDm->psTdmaDuAdjType = 10; + } + else if(pCoexDm->curPsTdma == 10) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 11); + pCoexDm->psTdmaDuAdjType = 11; + } + else if(pCoexDm->curPsTdma == 11) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 12); + pCoexDm->psTdmaDuAdjType = 12; + } + } + else if (result == 1) + { + if(pCoexDm->curPsTdma == 4) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 3); + pCoexDm->psTdmaDuAdjType = 3; + } + else if(pCoexDm->curPsTdma == 3) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 2); + pCoexDm->psTdmaDuAdjType = 2; + } + else if(pCoexDm->curPsTdma == 2) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 1); + pCoexDm->psTdmaDuAdjType = 1; + } + else if(pCoexDm->curPsTdma == 12) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 11); + pCoexDm->psTdmaDuAdjType = 11; + } + else if(pCoexDm->curPsTdma == 11) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 10); + pCoexDm->psTdmaDuAdjType = 10; + } + else if(pCoexDm->curPsTdma == 10) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 9); + pCoexDm->psTdmaDuAdjType = 9; + } + } + } + } + else if(maxInterval == 2) + { + if(bTxPause) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], TxPause = 1\n")); + if(pCoexDm->curPsTdma == 1) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 6); + pCoexDm->psTdmaDuAdjType = 6; + } + else if(pCoexDm->curPsTdma == 2) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 6); + pCoexDm->psTdmaDuAdjType = 6; + } + else if(pCoexDm->curPsTdma == 3) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 7); + pCoexDm->psTdmaDuAdjType = 7; + } + else if(pCoexDm->curPsTdma == 4) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 8); + pCoexDm->psTdmaDuAdjType = 8; + } + if(pCoexDm->curPsTdma == 9) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 14); + pCoexDm->psTdmaDuAdjType = 14; + } + else if(pCoexDm->curPsTdma == 10) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 14); + pCoexDm->psTdmaDuAdjType = 14; + } + else if(pCoexDm->curPsTdma == 11) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 15); + pCoexDm->psTdmaDuAdjType = 15; + } + else if(pCoexDm->curPsTdma == 12) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 16); + pCoexDm->psTdmaDuAdjType = 16; + } + if(result == -1) + { + if(pCoexDm->curPsTdma == 5) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 6); + pCoexDm->psTdmaDuAdjType = 6; + } + else if(pCoexDm->curPsTdma == 6) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 7); + pCoexDm->psTdmaDuAdjType = 7; + } + else if(pCoexDm->curPsTdma == 7) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 8); + pCoexDm->psTdmaDuAdjType = 8; + } + else if(pCoexDm->curPsTdma == 13) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 14); + pCoexDm->psTdmaDuAdjType = 14; + } + else if(pCoexDm->curPsTdma == 14) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 15); + pCoexDm->psTdmaDuAdjType = 15; + } + else if(pCoexDm->curPsTdma == 15) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 16); + pCoexDm->psTdmaDuAdjType = 16; + } + } + else if (result == 1) + { + if(pCoexDm->curPsTdma == 8) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 7); + pCoexDm->psTdmaDuAdjType = 7; + } + else if(pCoexDm->curPsTdma == 7) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 6); + pCoexDm->psTdmaDuAdjType = 6; + } + else if(pCoexDm->curPsTdma == 6) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 6); + pCoexDm->psTdmaDuAdjType = 6; + } + else if(pCoexDm->curPsTdma == 16) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 15); + pCoexDm->psTdmaDuAdjType = 15; + } + else if(pCoexDm->curPsTdma == 15) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 14); + pCoexDm->psTdmaDuAdjType = 14; + } + else if(pCoexDm->curPsTdma == 14) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 14); + pCoexDm->psTdmaDuAdjType = 14; + } + } + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], TxPause = 0\n")); + if(pCoexDm->curPsTdma == 5) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 2); + pCoexDm->psTdmaDuAdjType = 2; + } + else if(pCoexDm->curPsTdma == 6) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 2); + pCoexDm->psTdmaDuAdjType = 2; + } + else if(pCoexDm->curPsTdma == 7) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 3); + pCoexDm->psTdmaDuAdjType = 3; + } + else if(pCoexDm->curPsTdma == 8) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 4); + pCoexDm->psTdmaDuAdjType = 4; + } + if(pCoexDm->curPsTdma == 13) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 10); + pCoexDm->psTdmaDuAdjType = 10; + } + else if(pCoexDm->curPsTdma == 14) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 10); + pCoexDm->psTdmaDuAdjType = 10; + } + else if(pCoexDm->curPsTdma == 15) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 11); + pCoexDm->psTdmaDuAdjType = 11; + } + else if(pCoexDm->curPsTdma == 16) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 12); + pCoexDm->psTdmaDuAdjType = 12; + } + if(result == -1) + { + if(pCoexDm->curPsTdma == 1) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 2); + pCoexDm->psTdmaDuAdjType = 2; + } + else if(pCoexDm->curPsTdma == 2) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 3); + pCoexDm->psTdmaDuAdjType = 3; + } + else if(pCoexDm->curPsTdma == 3) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 4); + pCoexDm->psTdmaDuAdjType = 4; + } + else if(pCoexDm->curPsTdma == 9) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 10); + pCoexDm->psTdmaDuAdjType = 10; + } + else if(pCoexDm->curPsTdma == 10) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 11); + pCoexDm->psTdmaDuAdjType = 11; + } + else if(pCoexDm->curPsTdma == 11) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 12); + pCoexDm->psTdmaDuAdjType = 12; + } + } + else if (result == 1) + { + if(pCoexDm->curPsTdma == 4) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 3); + pCoexDm->psTdmaDuAdjType = 3; + } + else if(pCoexDm->curPsTdma == 3) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 2); + pCoexDm->psTdmaDuAdjType = 2; + } + else if(pCoexDm->curPsTdma == 2) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 2); + pCoexDm->psTdmaDuAdjType = 2; + } + else if(pCoexDm->curPsTdma == 12) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 11); + pCoexDm->psTdmaDuAdjType = 11; + } + else if(pCoexDm->curPsTdma == 11) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 10); + pCoexDm->psTdmaDuAdjType = 10; + } + else if(pCoexDm->curPsTdma == 10) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 10); + pCoexDm->psTdmaDuAdjType = 10; + } + } + } + } + else if(maxInterval == 3) + { + if(bTxPause) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], TxPause = 1\n")); + if(pCoexDm->curPsTdma == 1) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 7); + pCoexDm->psTdmaDuAdjType = 7; + } + else if(pCoexDm->curPsTdma == 2) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 7); + pCoexDm->psTdmaDuAdjType = 7; + } + else if(pCoexDm->curPsTdma == 3) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 7); + pCoexDm->psTdmaDuAdjType = 7; + } + else if(pCoexDm->curPsTdma == 4) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 8); + pCoexDm->psTdmaDuAdjType = 8; + } + if(pCoexDm->curPsTdma == 9) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 15); + pCoexDm->psTdmaDuAdjType = 15; + } + else if(pCoexDm->curPsTdma == 10) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 15); + pCoexDm->psTdmaDuAdjType = 15; + } + else if(pCoexDm->curPsTdma == 11) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 15); + pCoexDm->psTdmaDuAdjType = 15; + } + else if(pCoexDm->curPsTdma == 12) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 16); + pCoexDm->psTdmaDuAdjType = 16; + } + if(result == -1) + { + if(pCoexDm->curPsTdma == 5) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 7); + pCoexDm->psTdmaDuAdjType = 7; + } + else if(pCoexDm->curPsTdma == 6) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 7); + pCoexDm->psTdmaDuAdjType = 7; + } + else if(pCoexDm->curPsTdma == 7) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 8); + pCoexDm->psTdmaDuAdjType = 8; + } + else if(pCoexDm->curPsTdma == 13) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 15); + pCoexDm->psTdmaDuAdjType = 15; + } + else if(pCoexDm->curPsTdma == 14) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 15); + pCoexDm->psTdmaDuAdjType = 15; + } + else if(pCoexDm->curPsTdma == 15) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 16); + pCoexDm->psTdmaDuAdjType = 16; + } + } + else if (result == 1) + { + if(pCoexDm->curPsTdma == 8) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 7); + pCoexDm->psTdmaDuAdjType = 7; + } + else if(pCoexDm->curPsTdma == 7) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 7); + pCoexDm->psTdmaDuAdjType = 7; + } + else if(pCoexDm->curPsTdma == 6) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 7); + pCoexDm->psTdmaDuAdjType = 7; + } + else if(pCoexDm->curPsTdma == 16) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 15); + pCoexDm->psTdmaDuAdjType = 15; + } + else if(pCoexDm->curPsTdma == 15) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 15); + pCoexDm->psTdmaDuAdjType = 15; + } + else if(pCoexDm->curPsTdma == 14) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 15); + pCoexDm->psTdmaDuAdjType = 15; + } + } + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], TxPause = 0\n")); + if(pCoexDm->curPsTdma == 5) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 3); + pCoexDm->psTdmaDuAdjType = 3; + } + else if(pCoexDm->curPsTdma == 6) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 3); + pCoexDm->psTdmaDuAdjType = 3; + } + else if(pCoexDm->curPsTdma == 7) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 3); + pCoexDm->psTdmaDuAdjType = 3; + } + else if(pCoexDm->curPsTdma == 8) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 4); + pCoexDm->psTdmaDuAdjType = 4; + } + if(pCoexDm->curPsTdma == 13) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 11); + pCoexDm->psTdmaDuAdjType = 11; + } + else if(pCoexDm->curPsTdma == 14) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 11); + pCoexDm->psTdmaDuAdjType = 11; + } + else if(pCoexDm->curPsTdma == 15) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 11); + pCoexDm->psTdmaDuAdjType = 11; + } + else if(pCoexDm->curPsTdma == 16) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 12); + pCoexDm->psTdmaDuAdjType = 12; + } + if(result == -1) + { + if(pCoexDm->curPsTdma == 1) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 3); + pCoexDm->psTdmaDuAdjType = 3; + } + else if(pCoexDm->curPsTdma == 2) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 3); + pCoexDm->psTdmaDuAdjType = 3; + } + else if(pCoexDm->curPsTdma == 3) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 4); + pCoexDm->psTdmaDuAdjType = 4; + } + else if(pCoexDm->curPsTdma == 9) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 11); + pCoexDm->psTdmaDuAdjType = 11; + } + else if(pCoexDm->curPsTdma == 10) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 11); + pCoexDm->psTdmaDuAdjType = 11; + } + else if(pCoexDm->curPsTdma == 11) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 12); + pCoexDm->psTdmaDuAdjType = 12; + } + } + else if (result == 1) + { + if(pCoexDm->curPsTdma == 4) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 3); + pCoexDm->psTdmaDuAdjType = 3; + } + else if(pCoexDm->curPsTdma == 3) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 3); + pCoexDm->psTdmaDuAdjType = 3; + } + else if(pCoexDm->curPsTdma == 2) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 3); + pCoexDm->psTdmaDuAdjType = 3; + } + else if(pCoexDm->curPsTdma == 12) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 11); + pCoexDm->psTdmaDuAdjType = 11; + } + else if(pCoexDm->curPsTdma == 11) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 11); + pCoexDm->psTdmaDuAdjType = 11; + } + else if(pCoexDm->curPsTdma == 10) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 11); + pCoexDm->psTdmaDuAdjType = 11; + } + } + } + } + } + + // if current PsTdma not match with the recorded one (when scan, dhcp...), + // then we have to adjust it back to the previous record one. + if(pCoexDm->curPsTdma != pCoexDm->psTdmaDuAdjType) + { + BOOLEAN bScan=FALSE, bLink=FALSE, bRoam=FALSE; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], PsTdma type dismatch!!!, curPsTdma=%d, recordPsTdma=%d\n", + pCoexDm->curPsTdma, pCoexDm->psTdmaDuAdjType)); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_SCAN, &bScan); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_LINK, &bLink); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_ROAM, &bRoam); + + if( !bScan && !bLink && !bRoam) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, pCoexDm->psTdmaDuAdjType); + } + else + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, ("[BTCoex], roaming/link/scan is under progress, will adjust next time!!!\n")); + } + } +} + +// SCO only or SCO+PAN(HS) +VOID +halbtc8723a2ant_ActionSco( + IN PBTC_COEXIST pBtCoexist + ) +{ + u1Byte wifiRssiState, wifiRssiState1; + u4Byte wifiBw; + + if(halbtc8723a2ant_NeedToDecBtPwr(pBtCoexist)) + halbtc8723a2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, true); + else + halbtc8723a2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_CoexTable(pBtCoexist, NORMAL_EXEC, 0x55555555, 0xffff, 0x3); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw); + if(BTC_WIFI_BW_HT40 == wifiBw) + { + wifiRssiState = halbtc8723a2ant_WifiRssiState(pBtCoexist, 0, 2, 37, 0); + // fw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 11); + } + else + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 15); + } + + // sw mechanism + halbtc8723a2ant_AgcTable(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_AdcBackOff(pBtCoexist, NORMAL_EXEC, true); + halbtc8723a2ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0xc0); + } + else + { + wifiRssiState = halbtc8723a2ant_WifiRssiState(pBtCoexist, 0, 2, 27, 0); + wifiRssiState1 = halbtc8723a2ant_WifiRssiState(pBtCoexist, 1, 2, 47, 0); + + // fw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 11); + } + else + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 15); + } + + // sw mechanism + if( (wifiRssiState1 == BTC_RSSI_STATE_HIGH) || + (wifiRssiState1 == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8723a2ant_AgcTable(pBtCoexist, NORMAL_EXEC, true); + halbtc8723a2ant_AdcBackOff(pBtCoexist, NORMAL_EXEC, true); + halbtc8723a2ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0xc0); + } + else + { + halbtc8723a2ant_AgcTable(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_AdcBackOff(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0xc0); + } + } +} + + +VOID +halbtc8723a2ant_ActionHid( + IN PBTC_COEXIST pBtCoexist + ) +{ + u1Byte wifiRssiState, wifiRssiState1; + u4Byte wifiBw; + + if(halbtc8723a2ant_NeedToDecBtPwr(pBtCoexist)) + halbtc8723a2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, true); + else + halbtc8723a2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_CoexTable(pBtCoexist, NORMAL_EXEC, 0x55555555, 0xffff, 0x3); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw); + if(BTC_WIFI_BW_HT40 == wifiBw) + { + wifiRssiState = halbtc8723a2ant_WifiRssiState(pBtCoexist, 0, 2, 37, 0); + // fw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 9); + } + else + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 13); + } + + // sw mechanism + halbtc8723a2ant_AgcTable(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_AdcBackOff(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0xc0); + } + else + { + wifiRssiState = halbtc8723a2ant_WifiRssiState(pBtCoexist, 0, 2, 27, 0); + wifiRssiState1 = halbtc8723a2ant_WifiRssiState(pBtCoexist, 1, 2, 47, 0); + + // fw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 9); + } + else + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 13); + } + + // sw mechanism + if( (wifiRssiState1 == BTC_RSSI_STATE_HIGH) || + (wifiRssiState1 == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8723a2ant_AgcTable(pBtCoexist, NORMAL_EXEC, true); + halbtc8723a2ant_AdcBackOff(pBtCoexist, NORMAL_EXEC, true); + halbtc8723a2ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0xc0); + } + else + { + halbtc8723a2ant_AgcTable(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_AdcBackOff(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0xc0); + } + } +} + +//A2DP only / PAN(EDR) only/ A2DP+PAN(HS) +VOID +halbtc8723a2ant_ActionA2dp( + IN PBTC_COEXIST pBtCoexist + ) +{ + u1Byte wifiRssiState, wifiRssiState1, btInfoExt; + u4Byte wifiBw; + + btInfoExt = pCoexSta->btInfoExt; + + if(halbtc8723a2ant_NeedToDecBtPwr(pBtCoexist)) + halbtc8723a2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, true); + else + halbtc8723a2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_CoexTable(pBtCoexist, NORMAL_EXEC, 0x55555555, 0xffff, 0x3); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw); + if(BTC_WIFI_BW_HT40 == wifiBw) + { + wifiRssiState = halbtc8723a2ant_WifiRssiState(pBtCoexist, 0, 2, 37, 0); + + // fw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + if(btInfoExt&BIT0) //a2dp rate, 1:basic /0:edr + { + halbtc8723a2ant_TdmaDurationAdjust(pBtCoexist, FALSE, FALSE, 3); + } + else + { + halbtc8723a2ant_TdmaDurationAdjust(pBtCoexist, FALSE, FALSE, 1); + } + } + else + { + if(btInfoExt&BIT0) //a2dp rate, 1:basic /0:edr + { + halbtc8723a2ant_TdmaDurationAdjust(pBtCoexist, FALSE, true, 3); + } + else + { + halbtc8723a2ant_TdmaDurationAdjust(pBtCoexist, FALSE, true, 1); + } + } + + // sw mechanism + halbtc8723a2ant_AgcTable(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_AdcBackOff(pBtCoexist, NORMAL_EXEC, true); + halbtc8723a2ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0xc0); + } + else + { + wifiRssiState = halbtc8723a2ant_WifiRssiState(pBtCoexist, 0, 2, 27, 0); + wifiRssiState1 = halbtc8723a2ant_WifiRssiState(pBtCoexist, 1, 2, 47, 0); + + // fw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + if(btInfoExt&BIT0) //a2dp rate, 1:basic /0:edr + { + halbtc8723a2ant_TdmaDurationAdjust(pBtCoexist, FALSE, FALSE, 3); + } + else + { + halbtc8723a2ant_TdmaDurationAdjust(pBtCoexist, FALSE, FALSE, 1); + } + } + else + { + if(btInfoExt&BIT0) //a2dp rate, 1:basic /0:edr + { + halbtc8723a2ant_TdmaDurationAdjust(pBtCoexist, FALSE, true, 3); + } + else + { + halbtc8723a2ant_TdmaDurationAdjust(pBtCoexist, FALSE, true, 1); + } + } + + // sw mechanism + if( (wifiRssiState1 == BTC_RSSI_STATE_HIGH) || + (wifiRssiState1 == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8723a2ant_AgcTable(pBtCoexist, NORMAL_EXEC, true); + halbtc8723a2ant_AdcBackOff(pBtCoexist, NORMAL_EXEC, true); + halbtc8723a2ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0xc0); + } + else + { + halbtc8723a2ant_AgcTable(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_AdcBackOff(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0xc0); + } + } +} + +VOID +halbtc8723a2ant_ActionPanEdr( + IN PBTC_COEXIST pBtCoexist + ) +{ + u1Byte wifiRssiState, wifiRssiState1, btInfoExt; + u4Byte wifiBw; + + btInfoExt = pCoexSta->btInfoExt; + + if(halbtc8723a2ant_NeedToDecBtPwr(pBtCoexist)) + halbtc8723a2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, true); + else + halbtc8723a2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_CoexTable(pBtCoexist, NORMAL_EXEC, 0x55555555, 0xffff, 0x3); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw); + if(BTC_WIFI_BW_HT40 == wifiBw) + { + wifiRssiState = halbtc8723a2ant_WifiRssiState(pBtCoexist, 0, 2, 37, 0); + + // fw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 2); + } + else + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 6); + } + + // sw mechanism + halbtc8723a2ant_AgcTable(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_AdcBackOff(pBtCoexist, NORMAL_EXEC, true); + halbtc8723a2ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0xc0); + } + else + { + wifiRssiState = halbtc8723a2ant_WifiRssiState(pBtCoexist, 0, 2, 27, 0); + wifiRssiState1 = halbtc8723a2ant_WifiRssiState(pBtCoexist, 1, 2, 47, 0); + + // fw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 2); + } + else + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 6); + } + + // sw mechanism + if( (wifiRssiState1 == BTC_RSSI_STATE_HIGH) || + (wifiRssiState1 == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8723a2ant_AgcTable(pBtCoexist, NORMAL_EXEC, true); + halbtc8723a2ant_AdcBackOff(pBtCoexist, NORMAL_EXEC, true); + halbtc8723a2ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0xc0); + } + else + { + halbtc8723a2ant_AgcTable(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_AdcBackOff(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0xc0); + } + } +} + + +//PAN(HS) only +VOID +halbtc8723a2ant_ActionPanHs( + IN PBTC_COEXIST pBtCoexist + ) +{ + u1Byte wifiRssiState; + u4Byte wifiBw; + + halbtc8723a2ant_CoexTable(pBtCoexist, NORMAL_EXEC, 0x55555555, 0xffff, 0x3); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw); + if(BTC_WIFI_BW_HT40 == wifiBw) + { + wifiRssiState = halbtc8723a2ant_WifiRssiState(pBtCoexist, 0, 2, 37, 0); + + // fw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8723a2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, true); + } + else + { + halbtc8723a2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, FALSE); + } + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 0); + + // sw mechanism + halbtc8723a2ant_AgcTable(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_AdcBackOff(pBtCoexist, NORMAL_EXEC, true); + halbtc8723a2ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0xc0); + } + else + { + wifiRssiState = halbtc8723a2ant_WifiRssiState(pBtCoexist, 0, 2, 37, 0); + + // fw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8723a2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, true); + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 0); + } + else + { + halbtc8723a2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, FALSE, 0); + } + + // sw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8723a2ant_AgcTable(pBtCoexist, NORMAL_EXEC, true); + halbtc8723a2ant_AdcBackOff(pBtCoexist, NORMAL_EXEC, true); + halbtc8723a2ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0xc0); + } + else + { + halbtc8723a2ant_AgcTable(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_AdcBackOff(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0xc0); + } + } +} + +//PAN(EDR)+A2DP +VOID +halbtc8723a2ant_ActionPanEdrA2dp( + IN PBTC_COEXIST pBtCoexist + ) +{ + u1Byte wifiRssiState, wifiRssiState1, btInfoExt; + u4Byte wifiBw; + + btInfoExt = pCoexSta->btInfoExt; + + if(halbtc8723a2ant_NeedToDecBtPwr(pBtCoexist)) + halbtc8723a2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, true); + else + halbtc8723a2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_CoexTable(pBtCoexist, NORMAL_EXEC, 0x55555555, 0xffff, 0x3); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw); + if(BTC_WIFI_BW_HT40 == wifiBw) + { + wifiRssiState = halbtc8723a2ant_WifiRssiState(pBtCoexist, 0, 2, 37, 0); + + // fw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + if(btInfoExt&BIT0) //a2dp basic rate + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 4); + } + else //a2dp edr rate + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 2); + } + } + else + { + if(btInfoExt&BIT0) //a2dp basic rate + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 8); + } + else //a2dp edr rate + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 6); + } + } + + // sw mechanism + halbtc8723a2ant_AgcTable(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_AdcBackOff(pBtCoexist, NORMAL_EXEC, true); + halbtc8723a2ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0xc0); + } + else + { + wifiRssiState = halbtc8723a2ant_WifiRssiState(pBtCoexist, 0, 2, 27, 0); + wifiRssiState1 = halbtc8723a2ant_WifiRssiState(pBtCoexist, 0, 2, 47, 0); + + // fw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + if(btInfoExt&BIT0) //a2dp basic rate + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 4); + } + else //a2dp edr rate + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 2); + } + } + else + { + if(btInfoExt&BIT0) //a2dp basic rate + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 8); + } + else //a2dp edr rate + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 6); + } + } + + // sw mechanism + if( (wifiRssiState1 == BTC_RSSI_STATE_HIGH) || + (wifiRssiState1 == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8723a2ant_AgcTable(pBtCoexist, NORMAL_EXEC, true); + halbtc8723a2ant_AdcBackOff(pBtCoexist, NORMAL_EXEC, true); + halbtc8723a2ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0xc0); + } + else + { + halbtc8723a2ant_AgcTable(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_AdcBackOff(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0xc0); + } + } +} + +VOID +halbtc8723a2ant_ActionPanEdrHid( + IN PBTC_COEXIST pBtCoexist + ) +{ + u1Byte wifiRssiState, wifiRssiState1; + u4Byte wifiBw; + + if(halbtc8723a2ant_NeedToDecBtPwr(pBtCoexist)) + halbtc8723a2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, true); + else + halbtc8723a2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_CoexTable(pBtCoexist, NORMAL_EXEC, 0x55555555, 0xffff, 0x3); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw); + if(BTC_WIFI_BW_HT40 == wifiBw) + { + wifiRssiState = halbtc8723a2ant_WifiRssiState(pBtCoexist, 0, 2, 37, 0); + + // fw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 10); + } + else + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 14); + } + + // sw mechanism + halbtc8723a2ant_AgcTable(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_AdcBackOff(pBtCoexist, NORMAL_EXEC, true); + halbtc8723a2ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0xc0); + } + else + { + wifiRssiState = halbtc8723a2ant_WifiRssiState(pBtCoexist, 0, 2, 27, 0); + wifiRssiState1 = halbtc8723a2ant_WifiRssiState(pBtCoexist, 1, 2, 47, 0); + + // fw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 10); + } + else + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 14); + } + + // sw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8723a2ant_AgcTable(pBtCoexist, NORMAL_EXEC, true); + halbtc8723a2ant_AdcBackOff(pBtCoexist, NORMAL_EXEC, true); + halbtc8723a2ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0xc0); + } + else + { + halbtc8723a2ant_AgcTable(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_AdcBackOff(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0xc0); + } + } +} + +// HID+A2DP+PAN(EDR) +VOID +halbtc8723a2ant_ActionHidA2dpPanEdr( + IN PBTC_COEXIST pBtCoexist + ) +{ + u1Byte wifiRssiState, wifiRssiState1, btInfoExt; + u4Byte wifiBw; + + btInfoExt = pCoexSta->btInfoExt; + + if(halbtc8723a2ant_NeedToDecBtPwr(pBtCoexist)) + halbtc8723a2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, true); + else + halbtc8723a2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_CoexTable(pBtCoexist, NORMAL_EXEC, 0x55555555, 0xffff, 0x3); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw); + if(BTC_WIFI_BW_HT40 == wifiBw) + { + wifiRssiState = halbtc8723a2ant_WifiRssiState(pBtCoexist, 0, 2, 37, 0); + + // fw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + if(btInfoExt&BIT0) //a2dp basic rate + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 12); + } + else //a2dp edr rate + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 10); + } + } + else + { + if(btInfoExt&BIT0) //a2dp basic rate + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 16); + } + else //a2dp edr rate + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 14); + } + } + + // sw mechanism + halbtc8723a2ant_AgcTable(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_AdcBackOff(pBtCoexist, NORMAL_EXEC, true); + halbtc8723a2ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0xc0); + } + else + { + wifiRssiState = halbtc8723a2ant_WifiRssiState(pBtCoexist, 0, 2, 27, 0); + wifiRssiState1 = halbtc8723a2ant_WifiRssiState(pBtCoexist, 1, 2, 47, 0); + + // fw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + if(btInfoExt&BIT0) //a2dp basic rate + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 12); + } + else //a2dp edr rate + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 10); + } + } + else + { + if(btInfoExt&BIT0) //a2dp basic rate + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 16); + } + else //a2dp edr rate + { + halbtc8723a2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 14); + } + } + + // sw mechanism + if( (wifiRssiState1 == BTC_RSSI_STATE_HIGH) || + (wifiRssiState1 == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8723a2ant_AgcTable(pBtCoexist, NORMAL_EXEC, true); + halbtc8723a2ant_AdcBackOff(pBtCoexist, NORMAL_EXEC, true); + halbtc8723a2ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0xc0); + } + else + { + halbtc8723a2ant_AgcTable(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_AdcBackOff(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0xc0); + } + } +} + +VOID +halbtc8723a2ant_ActionHidA2dp( + IN PBTC_COEXIST pBtCoexist + ) +{ + u1Byte wifiRssiState, wifiRssiState1, btInfoExt; + u4Byte wifiBw; + + btInfoExt = pCoexSta->btInfoExt; + + if(halbtc8723a2ant_NeedToDecBtPwr(pBtCoexist)) + halbtc8723a2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, true); + else + halbtc8723a2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_CoexTable(pBtCoexist, NORMAL_EXEC, 0x55555555, 0xffff, 0x3); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw); + if(BTC_WIFI_BW_HT40 == wifiBw) + { + wifiRssiState = halbtc8723a2ant_WifiRssiState(pBtCoexist, 0, 2, 37, 0); + + // fw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + if(btInfoExt&BIT0) //a2dp basic rate + { + halbtc8723a2ant_TdmaDurationAdjust(pBtCoexist, true, FALSE, 3); + } + else //a2dp edr rate + { + halbtc8723a2ant_TdmaDurationAdjust(pBtCoexist, true, FALSE, 1); + } + } + else + { + if(btInfoExt&BIT0) //a2dp basic rate + { + halbtc8723a2ant_TdmaDurationAdjust(pBtCoexist, true, true, 3); + } + else //a2dp edr rate + { + halbtc8723a2ant_TdmaDurationAdjust(pBtCoexist, true, true, 1); + } + } + + // sw mechanism + halbtc8723a2ant_AgcTable(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_AdcBackOff(pBtCoexist, NORMAL_EXEC, true); + halbtc8723a2ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0xc0); + } + else + { + wifiRssiState = halbtc8723a2ant_WifiRssiState(pBtCoexist, 0, 2, 27, 0); + wifiRssiState1 = halbtc8723a2ant_WifiRssiState(pBtCoexist, 1, 2, 47, 0); + + // fw mechanism + if( (wifiRssiState == BTC_RSSI_STATE_HIGH) || + (wifiRssiState == BTC_RSSI_STATE_STAY_HIGH) ) + { + if(btInfoExt&BIT0) //a2dp basic rate + { + halbtc8723a2ant_TdmaDurationAdjust(pBtCoexist, true, FALSE, 3); + } + else //a2dp edr rate + { + halbtc8723a2ant_TdmaDurationAdjust(pBtCoexist, true, FALSE, 1); + } + } + else + { + if(btInfoExt&BIT0) //a2dp basic rate + { + halbtc8723a2ant_TdmaDurationAdjust(pBtCoexist, true, true, 3); + } + else //a2dp edr rate + { + halbtc8723a2ant_TdmaDurationAdjust(pBtCoexist, true, true, 1); + } + } + + // sw mechanism + if( (wifiRssiState1 == BTC_RSSI_STATE_HIGH) || + (wifiRssiState1 == BTC_RSSI_STATE_STAY_HIGH) ) + { + halbtc8723a2ant_AgcTable(pBtCoexist, NORMAL_EXEC, true); + halbtc8723a2ant_AdcBackOff(pBtCoexist, NORMAL_EXEC, true); + halbtc8723a2ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0xc0); + } + else + { + halbtc8723a2ant_AgcTable(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_AdcBackOff(pBtCoexist, NORMAL_EXEC, FALSE); + halbtc8723a2ant_DacSwing(pBtCoexist, NORMAL_EXEC, FALSE, 0xc0); + } + } +} + +VOID +halbtc8723a2ant_RunCoexistMechanism( + IN PBTC_COEXIST pBtCoexist + ) +{ + PBTC_STACK_INFO pStackInfo=&pBtCoexist->stack_info; + u1Byte btInfoOriginal=0, btRetryCnt=0; + u1Byte algorithm=0; + + if(pBtCoexist->manual_control) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Manual control!!!\n")); + return; + } + + if(pStackInfo->bProfileNotified) + { + if(pCoexSta->bHoldForStackOperation) + { + // if bt inquiry/page/pair, do not execute. + return; + } + + algorithm = halbtc8723a2ant_ActionAlgorithm(pBtCoexist); + if(pCoexSta->bHoldPeriodCnt && (BT_8723A_2ANT_COEX_ALGO_PANHS!=algorithm)) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex],Hold BT inquiry/page scan setting (cnt = %d)!!\n", + pCoexSta->bHoldPeriodCnt)); + if(pCoexSta->bHoldPeriodCnt >= 6) + { + pCoexSta->bHoldPeriodCnt = 0; + // next time the coexist parameters should be reset again. + } + else + pCoexSta->bHoldPeriodCnt++; + return; + } + + pCoexDm->curAlgorithm = algorithm; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Algorithm = %d \n", pCoexDm->curAlgorithm)); + if(halbtc8723a2ant_IsCommonAction(pBtCoexist)) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action 2-Ant common.\n")); + pCoexDm->bResetTdmaAdjust = true; + } + else + { + if(pCoexDm->curAlgorithm != pCoexDm->preAlgorithm) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], preAlgorithm=%d, curAlgorithm=%d\n", + pCoexDm->preAlgorithm, pCoexDm->curAlgorithm)); + pCoexDm->bResetTdmaAdjust = true; + } + switch(pCoexDm->curAlgorithm) + { + case BT_8723A_2ANT_COEX_ALGO_SCO: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action 2-Ant, algorithm = SCO.\n")); + halbtc8723a2ant_ActionSco(pBtCoexist); + break; + case BT_8723A_2ANT_COEX_ALGO_HID: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action 2-Ant, algorithm = HID.\n")); + halbtc8723a2ant_ActionHid(pBtCoexist); + break; + case BT_8723A_2ANT_COEX_ALGO_A2DP: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action 2-Ant, algorithm = A2DP.\n")); + halbtc8723a2ant_ActionA2dp(pBtCoexist); + break; + case BT_8723A_2ANT_COEX_ALGO_PANEDR: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action 2-Ant, algorithm = PAN(EDR).\n")); + halbtc8723a2ant_ActionPanEdr(pBtCoexist); + break; + case BT_8723A_2ANT_COEX_ALGO_PANHS: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action 2-Ant, algorithm = HS mode.\n")); + halbtc8723a2ant_ActionPanHs(pBtCoexist); + break; + case BT_8723A_2ANT_COEX_ALGO_PANEDR_A2DP: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action 2-Ant, algorithm = PAN+A2DP.\n")); + halbtc8723a2ant_ActionPanEdrA2dp(pBtCoexist); + break; + case BT_8723A_2ANT_COEX_ALGO_PANEDR_HID: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action 2-Ant, algorithm = PAN(EDR)+HID.\n")); + halbtc8723a2ant_ActionPanEdrHid(pBtCoexist); + break; + case BT_8723A_2ANT_COEX_ALGO_HID_A2DP_PANEDR: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action 2-Ant, algorithm = HID+A2DP+PAN.\n")); + halbtc8723a2ant_ActionHidA2dpPanEdr(pBtCoexist); + break; + case BT_8723A_2ANT_COEX_ALGO_HID_A2DP: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action 2-Ant, algorithm = HID+A2DP.\n")); + halbtc8723a2ant_ActionHidA2dp(pBtCoexist); + break; + default: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, ("[BTCoex], Action 2-Ant, algorithm = coexist All Off!!\n")); + halbtc8723a2ant_CoexAllOff(pBtCoexist); + break; + } + pCoexDm->preAlgorithm = pCoexDm->curAlgorithm; + } + } +} + +//============================================================ +// work around function start with wa_halbtc8723a2ant_ +//============================================================ +VOID +wa_halbtc8723a2ant_MonitorC2h( + IN PBTC_COEXIST pBtCoexist + ) +{ + u1Byte tmp1b=0x0; + u4Byte curC2hTotalCnt=0x0; + static u4Byte preC2hTotalCnt=0x0, sameCntPollingTime=0x0; + + curC2hTotalCnt+=pCoexSta->btInfoC2hCnt[BT_INFO_SRC_8723A_2ANT_BT_RSP]; + + if(curC2hTotalCnt == preC2hTotalCnt) + { + sameCntPollingTime++; + } + else + { + preC2hTotalCnt = curC2hTotalCnt; + sameCntPollingTime = 0; + } + + if(sameCntPollingTime >= 2) + { + tmp1b = pBtCoexist->btc_read_1byte(pBtCoexist, 0x1af); + if(tmp1b != 0x0) + { + pCoexSta->c2hHangDetectCnt++; + pBtCoexist->btc_write_1byte(pBtCoexist, 0x1af, 0x0); + } + } +} + +//============================================================ +// extern function start with EXhalbtc8723a2ant_ +//============================================================ +VOID +EXhalbtc8723a2ant_InitHwConfig( + IN PBTC_COEXIST pBtCoexist + ) +{ + u4Byte u4Tmp=0; + u1Byte u1Tmp=0; + + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, ("[BTCoex], 2Ant Init HW Config!!\n")); + + // backup rf 0x1e value + pCoexDm->btRf0x1eBackup = + pBtCoexist->btc_get_rf_reg(pBtCoexist, BTC_RF_A, 0x1e, 0xfffff); + + // Enable counter statistics + pBtCoexist->btc_write_1byte(pBtCoexist, 0x76e, 0x4); + pBtCoexist->btc_write_1byte(pBtCoexist, 0x778, 0x3); + pBtCoexist->btc_write_1byte(pBtCoexist, 0x40, 0x20); +} + +VOID +EXhalbtc8723a2ant_InitCoexDm( + IN PBTC_COEXIST pBtCoexist + ) +{ + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, ("[BTCoex], Coex Mechanism Init!!\n")); + + halbtc8723a2ant_InitCoexDm(pBtCoexist); +} + +VOID +EXhalbtc8723a2ant_DisplayCoexInfo( + IN PBTC_COEXIST pBtCoexist + ) +{ + struct btc_board_info * pBoardInfo=&pBtCoexist->board_info; + PBTC_STACK_INFO pStackInfo=&pBtCoexist->stack_info; + pu1Byte cliBuf=pBtCoexist->cli_buf; + u1Byte u1Tmp[4], i, btInfoExt, psTdmaCase=0; + u4Byte u4Tmp[4]; + BOOLEAN bRoam=FALSE, bScan=FALSE, bLink=FALSE, bWifiUnder5G=FALSE; + BOOLEAN bBtHsOn=FALSE, bWifiBusy=FALSE; + s4Byte wifiRssi=0, btHsRssi=0; + u4Byte wifiBw, wifiTrafficDir; + u1Byte wifiDot11Chnl, wifiHsChnl; + + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n ============[BT Coexist info]============"); + CL_PRINTF(cliBuf); + + if(!pBoardInfo->bt_exist) + { + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n BT not exists !!!"); + CL_PRINTF(cliBuf); + return; + } + + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d ", "Ant PG number/ Ant mechanism:", \ + pBoardInfo->pg_ant_num, pBoardInfo->btdm_ant_num); + CL_PRINTF(cliBuf); + + if(pBtCoexist->manual_control) + { + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s", "[Action Manual control]!!"); + CL_PRINTF(cliBuf); + } + + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %s / %d", "BT stack/ hci ext ver", \ + ((pStackInfo->bProfileNotified)? "Yes":"No"), pStackInfo->hciVersion); + CL_PRINTF(cliBuf); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_HS_OPERATION, &bBtHsOn); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U1_WIFI_DOT11_CHNL, &wifiDot11Chnl); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U1_WIFI_HS_CHNL, &wifiHsChnl); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d / %d(%d)", "Dot11 channel / HsChnl(HsMode)", \ + wifiDot11Chnl, wifiHsChnl, bBtHsOn); + CL_PRINTF(cliBuf); + + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %02x %02x %02x ", "H2C Wifi inform bt chnl Info", \ + pCoexDm->wifiChnlInfo[0], pCoexDm->wifiChnlInfo[1], + pCoexDm->wifiChnlInfo[2]); + CL_PRINTF(cliBuf); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_S4_WIFI_RSSI, &wifiRssi); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_S4_HS_RSSI, &btHsRssi); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d", "Wifi rssi/ HS rssi", \ + wifiRssi, btHsRssi); + CL_PRINTF(cliBuf); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_SCAN, &bScan); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_LINK, &bLink); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_ROAM, &bRoam); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d/ %d ", "Wifi bLink/ bRoam/ bScan", \ + bLink, bRoam, bScan); + CL_PRINTF(cliBuf); + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_UNDER_5G, &bWifiUnder5G); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_WIFI_BUSY, &bWifiBusy); + pBtCoexist->btc_get(pBtCoexist, BTC_GET_U4_WIFI_TRAFFIC_DIRECTION, &wifiTrafficDir); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %s / %s/ %s ", "Wifi status", \ + (bWifiUnder5G? "5G":"2.4G"), + ((BTC_WIFI_BW_LEGACY==wifiBw)? "Legacy": (((BTC_WIFI_BW_HT40==wifiBw)? "HT40":"HT20"))), + ((!bWifiBusy)? "idle": ((BTC_WIFI_TRAFFIC_TX==wifiTrafficDir)? "uplink":"downlink"))); + CL_PRINTF(cliBuf); + + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = [%s/ %d/ %d] ", "BT [status/ rssi/ retryCnt]", \ + ((pCoexSta->bC2hBtInquiryPage)?("inquiry/page scan"):((BT_8723A_2ANT_BT_STATUS_IDLE == pCoexDm->btStatus)? "idle":( (BT_8723A_2ANT_BT_STATUS_CONNECTED_IDLE == pCoexDm->btStatus)? "connected-idle":"busy"))), + pCoexSta->btRssi, pCoexSta->btRetryCnt); + CL_PRINTF(cliBuf); + + if(pStackInfo->bProfileNotified) + { + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d / %d / %d / %d", "SCO/HID/PAN/A2DP", \ + pStackInfo->bScoExist, pStackInfo->bHidExist, pStackInfo->bPanExist, pStackInfo->bA2dpExist); + CL_PRINTF(cliBuf); + + pBtCoexist->btc_disp_dbg_msg(pBtCoexist, BTC_DBG_DISP_BT_LINK_INFO); + } + + btInfoExt = pCoexSta->btInfoExt; + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %s", "BT Info A2DP rate", \ + (btInfoExt&BIT0)? "Basic rate":"EDR rate"); + CL_PRINTF(cliBuf); + + for(i=0; ibtInfoC2hCnt[i]) + { + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %02x %02x %02x %02x %02x %02x %02x(%d)", GLBtInfoSrc8723a2Ant[i], \ + pCoexSta->btInfoC2h[i][0], pCoexSta->btInfoC2h[i][1], + pCoexSta->btInfoC2h[i][2], pCoexSta->btInfoC2h[i][3], + pCoexSta->btInfoC2h[i][4], pCoexSta->btInfoC2h[i][5], + pCoexSta->btInfoC2h[i][6], pCoexSta->btInfoC2hCnt[i]); + CL_PRINTF(cliBuf); + } + } + + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d", "write 0x1af=0x0 num", \ + pCoexSta->c2hHangDetectCnt); + CL_PRINTF(cliBuf); + + // Sw mechanism + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s", "============[Sw mechanism]============"); + CL_PRINTF(cliBuf); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d/ %d", "SM1[ShRf/ LpRA/ LimDig]", \ + pCoexDm->bCurRfRxLpfShrink, pCoexDm->bCurLowPenaltyRa, pCoexDm->limited_dig); + CL_PRINTF(cliBuf); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d/ %d(0x%x) ", "SM2[AgcT/ AdcB/ SwDacSwing(lvl)]", \ + pCoexDm->bCurAgcTableEn, pCoexDm->bCurAdcBackOff, pCoexDm->bCurDacSwingOn, pCoexDm->curDacSwingLvl); + CL_PRINTF(cliBuf); + + // Fw mechanism + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s", "============[Fw mechanism]============"); + CL_PRINTF(cliBuf); + + if(!pBtCoexist->manual_control) + { + psTdmaCase = pCoexDm->curPsTdma; + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %02x %02x %02x %02x %02x case-%d", "PS TDMA", \ + pCoexDm->psTdmaPara[0], pCoexDm->psTdmaPara[1], + pCoexDm->psTdmaPara[2], pCoexDm->psTdmaPara[3], + pCoexDm->psTdmaPara[4], psTdmaCase); + CL_PRINTF(cliBuf); + + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d ", "DecBtPwr/ IgnWlanAct", \ + pCoexDm->bCurDecBtPwr, pCoexDm->bCurIgnoreWlanAct); + CL_PRINTF(cliBuf); + } + + // Hw setting + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s", "============[Hw setting]============"); + CL_PRINTF(cliBuf); + + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x", "RF-A, 0x1e initVal", \ + pCoexDm->btRf0x1eBackup); + CL_PRINTF(cliBuf); + + u1Tmp[0] = pBtCoexist->btc_read_1byte(pBtCoexist, 0x778); + u1Tmp[1] = pBtCoexist->btc_read_1byte(pBtCoexist, 0x783); + u1Tmp[2] = pBtCoexist->btc_read_1byte(pBtCoexist, 0x796); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x/ 0x%x", "0x778/ 0x783/ 0x796", \ + u1Tmp[0], u1Tmp[1], u1Tmp[2]); + CL_PRINTF(cliBuf); + + u4Tmp[0] = pBtCoexist->btc_read_4byte(pBtCoexist, 0x880); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x", "0x880", \ + u4Tmp[0]); + CL_PRINTF(cliBuf); + + u1Tmp[0] = pBtCoexist->btc_read_1byte(pBtCoexist, 0x40); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x", "0x40", \ + u1Tmp[0]); + CL_PRINTF(cliBuf); + + u4Tmp[0] = pBtCoexist->btc_read_4byte(pBtCoexist, 0x550); + u1Tmp[0] = pBtCoexist->btc_read_1byte(pBtCoexist, 0x522); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x", "0x550(bcn ctrl)/0x522", \ + u4Tmp[0], u1Tmp[0]); + CL_PRINTF(cliBuf); + + u4Tmp[0] = pBtCoexist->btc_read_4byte(pBtCoexist, 0x484); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x", "0x484(rate adaptive)", \ + u4Tmp[0]); + CL_PRINTF(cliBuf); + + u4Tmp[0] = pBtCoexist->btc_read_4byte(pBtCoexist, 0xc50); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x", "0xc50(dig)", \ + u4Tmp[0]); + CL_PRINTF(cliBuf); + + u4Tmp[0] = pBtCoexist->btc_read_4byte(pBtCoexist, 0xda0); + u4Tmp[1] = pBtCoexist->btc_read_4byte(pBtCoexist, 0xda4); + u4Tmp[2] = pBtCoexist->btc_read_4byte(pBtCoexist, 0xda8); + u4Tmp[3] = pBtCoexist->btc_read_4byte(pBtCoexist, 0xdac); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x/ 0x%x/ 0x%x", "0xda0/0xda4/0xda8/0xdac(FA cnt)", \ + u4Tmp[0], u4Tmp[1], u4Tmp[2], u4Tmp[3]); + CL_PRINTF(cliBuf); + + u4Tmp[0] = pBtCoexist->btc_read_4byte(pBtCoexist, 0x6c0); + u4Tmp[1] = pBtCoexist->btc_read_4byte(pBtCoexist, 0x6c4); + u4Tmp[2] = pBtCoexist->btc_read_4byte(pBtCoexist, 0x6c8); + u1Tmp[0] = pBtCoexist->btc_read_1byte(pBtCoexist, 0x6cc); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x/ 0x%x/ 0x%x", "0x6c0/0x6c4/0x6c8/0x6cc(coexTable)", \ + u4Tmp[0], u4Tmp[1], u4Tmp[2], u1Tmp[0]); + CL_PRINTF(cliBuf); + + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d", "0x770 (hp rx[31:16]/tx[15:0])", \ + pCoexSta->highPriorityRx, pCoexSta->highPriorityTx); + CL_PRINTF(cliBuf); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d", "0x774(lp rx[31:16]/tx[15:0])", \ + pCoexSta->lowPriorityRx, pCoexSta->lowPriorityTx); + CL_PRINTF(cliBuf); + + // Tx mgnt queue hang or not, 0x41b should = 0xf, ex: 0xd ==>hang + u1Tmp[0] = pBtCoexist->btc_read_1byte(pBtCoexist, 0x41b); + CL_SPRINTF(cliBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x", "0x41b (mgntQ hang chk == 0xf)", \ + u1Tmp[0]); + CL_PRINTF(cliBuf); + + pBtCoexist->btc_disp_dbg_msg(pBtCoexist, BTC_DBG_DISP_COEX_STATISTICS); +} + + +VOID +EXhalbtc8723a2ant_IpsNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ) +{ + if(BTC_IPS_ENTER == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], IPS ENTER notify\n")); + halbtc8723a2ant_CoexAllOff(pBtCoexist); + } + else if(BTC_IPS_LEAVE == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], IPS LEAVE notify\n")); + //halbtc8723a2ant_InitCoexDm(pBtCoexist); + } +} + +VOID +EXhalbtc8723a2ant_LpsNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ) +{ + if(BTC_LPS_ENABLE == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], LPS ENABLE notify\n")); + } + else if(BTC_LPS_DISABLE == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], LPS DISABLE notify\n")); + } +} + +VOID +EXhalbtc8723a2ant_ScanNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ) +{ + if(BTC_SCAN_START == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], SCAN START notify\n")); + } + else if(BTC_SCAN_FINISH == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], SCAN FINISH notify\n")); + } +} + +VOID +EXhalbtc8723a2ant_ConnectNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ) +{ + if(BTC_ASSOCIATE_START == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], CONNECT START notify\n")); + } + else if(BTC_ASSOCIATE_FINISH == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], CONNECT FINISH notify\n")); + } +} + +VOID +EXhalbtc8723a2ant_MediaStatusNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ) +{ + if(BTC_MEDIA_CONNECT == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], MEDIA connect notify\n")); + } + else + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], MEDIA disconnect notify\n")); + } + + halbtc8723a2ant_IndicateWifiChnlBwInfo(pBtCoexist, type); +} + +VOID +EXhalbtc8723a2ant_SpecialPacketNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ) +{ + if(type == BTC_PACKET_DHCP) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], DHCP Packet notify\n")); + } +} + +VOID +EXhalbtc8723a2ant_BtInfoNotify( + IN PBTC_COEXIST pBtCoexist, + IN pu1Byte tmpBuf, + IN u1Byte length + ) +{ + u1Byte btInfo=0; + u1Byte i, rspSource=0; + BOOLEAN bBtBusy=FALSE, limited_dig=FALSE; + BOOLEAN bWifiConnected=FALSE, bBtHsOn=FALSE; + + pCoexSta->bC2hBtInfoReqSent = FALSE; + + rspSource = BT_INFO_SRC_8723A_2ANT_BT_RSP; + pCoexSta->btInfoC2hCnt[rspSource]++; + + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], Bt info[%d], length=%d, hex data=[", rspSource, length)); + for(i=0; ibtInfoC2h[rspSource][i] = tmpBuf[i]; + if(i == 0) + btInfo = tmpBuf[i]; + if(i == length-1) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("0x%02x]\n", tmpBuf[i])); + } + else + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("0x%02x, ", tmpBuf[i])); + } + } + + if(BT_INFO_SRC_8723A_2ANT_WIFI_FW != rspSource) + { + pCoexSta->btRetryCnt = + pCoexSta->btInfoC2h[rspSource][1]; + + pCoexSta->btRssi = + pCoexSta->btInfoC2h[rspSource][2]*2+10; + + pCoexSta->btInfoExt = + pCoexSta->btInfoC2h[rspSource][3]; + } + + pBtCoexist->btc_get(pBtCoexist, BTC_GET_BL_HS_OPERATION, &bBtHsOn); + // check BIT2 first ==> check if bt is under inquiry or page scan + if(btInfo & BT_INFO_8723A_2ANT_B_INQ_PAGE) + { + pCoexSta->bC2hBtInquiryPage = true; + } + else + { + pCoexSta->bC2hBtInquiryPage = FALSE; + } +} + +VOID +EXhalbtc8723a2ant_StackOperationNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ) +{ + if(BTC_STACK_OP_INQ_PAGE_PAIR_START == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], StackOP Inquiry/page/pair start notify\n")); + pCoexSta->bHoldForStackOperation = true; + pCoexSta->bHoldPeriodCnt = 1; + halbtc8723a2ant_BtInquiryPage(pBtCoexist); + } + else if(BTC_STACK_OP_INQ_PAGE_PAIR_FINISH == type) + { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], StackOP Inquiry/page/pair finish notify\n")); + pCoexSta->bHoldForStackOperation = FALSE; + } +} + +VOID +EXhalbtc8723a2ant_HaltNotify( + IN PBTC_COEXIST pBtCoexist + ) +{ + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], Halt notify\n")); + + halbtc8723a2ant_IgnoreWlanAct(pBtCoexist, FORCE_EXEC, true); + EXhalbtc8723a2ant_MediaStatusNotify(pBtCoexist, BTC_MEDIA_DISCONNECT); +} + +VOID +EXhalbtc8723a2ant_Periodical( + IN PBTC_COEXIST pBtCoexist + ) +{ + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, ("[BTCoex], 2Ant Periodical!!\n")); + + // work around for c2h hang + wa_halbtc8723a2ant_MonitorC2h(pBtCoexist); + + halbtc8723a2ant_QueryBtInfo(pBtCoexist); + halbtc8723a2ant_MonitorBtCtr(pBtCoexist); + halbtc8723a2ant_MonitorBtEnableDisable(pBtCoexist); + + halbtc8723a2ant_RunCoexistMechanism(pBtCoexist); +} + + +#endif + --- linux-3.13.0.orig/drivers/staging/rtl8821ae/btcoexist/halbtc8723a2ant.h +++ linux-3.13.0/drivers/staging/rtl8821ae/btcoexist/halbtc8723a2ant.h @@ -0,0 +1,179 @@ +//=========================================== +// The following is for 8723A 2Ant BT Co-exist definition +//=========================================== +#define BT_INFO_8723A_2ANT_B_FTP BIT7 +#define BT_INFO_8723A_2ANT_B_A2DP BIT6 +#define BT_INFO_8723A_2ANT_B_HID BIT5 +#define BT_INFO_8723A_2ANT_B_SCO_BUSY BIT4 +#define BT_INFO_8723A_2ANT_B_ACL_BUSY BIT3 +#define BT_INFO_8723A_2ANT_B_INQ_PAGE BIT2 +#define BT_INFO_8723A_2ANT_B_SCO_ESCO BIT1 +#define BT_INFO_8723A_2ANT_B_CONNECTION BIT0 + +#define BTC_RSSI_COEX_THRESH_TOL_8723A_2ANT 2 + +typedef enum _BT_INFO_SRC_8723A_2ANT{ + BT_INFO_SRC_8723A_2ANT_WIFI_FW = 0x0, + BT_INFO_SRC_8723A_2ANT_BT_RSP = 0x1, + BT_INFO_SRC_8723A_2ANT_BT_ACTIVE_SEND = 0x2, + BT_INFO_SRC_8723A_2ANT_MAX +}BT_INFO_SRC_8723A_2ANT,*PBT_INFO_SRC_8723A_2ANT; + +typedef enum _BT_8723A_2ANT_BT_STATUS{ + BT_8723A_2ANT_BT_STATUS_IDLE = 0x0, + BT_8723A_2ANT_BT_STATUS_CONNECTED_IDLE = 0x1, + BT_8723A_2ANT_BT_STATUS_NON_IDLE = 0x2, + BT_8723A_2ANT_BT_STATUS_MAX +}BT_8723A_2ANT_BT_STATUS,*PBT_8723A_2ANT_BT_STATUS; + +typedef enum _BT_8723A_2ANT_COEX_ALGO{ + BT_8723A_2ANT_COEX_ALGO_UNDEFINED = 0x0, + BT_8723A_2ANT_COEX_ALGO_SCO = 0x1, + BT_8723A_2ANT_COEX_ALGO_HID = 0x2, + BT_8723A_2ANT_COEX_ALGO_A2DP = 0x3, + BT_8723A_2ANT_COEX_ALGO_PANEDR = 0x4, + BT_8723A_2ANT_COEX_ALGO_PANHS = 0x5, + BT_8723A_2ANT_COEX_ALGO_PANEDR_A2DP = 0x6, + BT_8723A_2ANT_COEX_ALGO_PANEDR_HID = 0x7, + BT_8723A_2ANT_COEX_ALGO_HID_A2DP_PANEDR = 0x8, + BT_8723A_2ANT_COEX_ALGO_HID_A2DP = 0x9, + BT_8723A_2ANT_COEX_ALGO_MAX +}BT_8723A_2ANT_COEX_ALGO,*PBT_8723A_2ANT_COEX_ALGO; + +typedef struct _COEX_DM_8723A_2ANT{ + // fw mechanism + BOOLEAN bPreDecBtPwr; + BOOLEAN bCurDecBtPwr; + //BOOLEAN bPreBtLnaConstrain; + //BOOLEAN bCurBtLnaConstrain; + //u1Byte bPreBtPsdMode; + //u1Byte bCurBtPsdMode; + u1Byte preFwDacSwingLvl; + u1Byte curFwDacSwingLvl; + BOOLEAN bCurIgnoreWlanAct; + BOOLEAN bPreIgnoreWlanAct; + u1Byte prePsTdma; + u1Byte curPsTdma; + u1Byte psTdmaPara[5]; + u1Byte psTdmaDuAdjType; + BOOLEAN bResetTdmaAdjust; + BOOLEAN bPrePsTdmaOn; + BOOLEAN bCurPsTdmaOn; + //BOOLEAN bPreBtAutoReport; + //BOOLEAN bCurBtAutoReport; + + // sw mechanism + BOOLEAN bPreRfRxLpfShrink; + BOOLEAN bCurRfRxLpfShrink; + u4Byte btRf0x1eBackup; + BOOLEAN bPreLowPenaltyRa; + BOOLEAN bCurLowPenaltyRa; + BOOLEAN bPreDacSwingOn; + u4Byte preDacSwingLvl; + BOOLEAN bCurDacSwingOn; + u4Byte curDacSwingLvl; + BOOLEAN bPreAdcBackOff; + BOOLEAN bCurAdcBackOff; + BOOLEAN bPreAgcTableEn; + BOOLEAN bCurAgcTableEn; + u4Byte preVal0x6c0; + u4Byte curVal0x6c0; + u4Byte preVal0x6c8; + u4Byte curVal0x6c8; + u1Byte preVal0x6cc; + u1Byte curVal0x6cc; + BOOLEAN limited_dig; + + // algorithm related + u1Byte preAlgorithm; + u1Byte curAlgorithm; + u1Byte btStatus; + u1Byte wifiChnlInfo[3]; +} COEX_DM_8723A_2ANT, *PCOEX_DM_8723A_2ANT; + +typedef struct _COEX_STA_8723A_2ANT{ + u4Byte highPriorityTx; + u4Byte highPriorityRx; + u4Byte lowPriorityTx; + u4Byte lowPriorityRx; + u1Byte btRssi; + u1Byte preBtRssiState; + u1Byte preBtRssiState1; + u1Byte preWifiRssiState[4]; + BOOLEAN bC2hBtInfoReqSent; + u1Byte btInfoC2h[BT_INFO_SRC_8723A_2ANT_MAX][10]; + u4Byte btInfoC2hCnt[BT_INFO_SRC_8723A_2ANT_MAX]; + BOOLEAN bC2hBtInquiryPage; + u1Byte btRetryCnt; + u1Byte btInfoExt; + BOOLEAN bHoldForStackOperation; + u1Byte bHoldPeriodCnt; + // this is for c2h hang work-around + u4Byte c2hHangDetectCnt; +}COEX_STA_8723A_2ANT, *PCOEX_STA_8723A_2ANT; + +//=========================================== +// The following is interface which will notify coex module. +//=========================================== +VOID +EXhalbtc8723a2ant_InitHwConfig( + IN PBTC_COEXIST pBtCoexist + ); +VOID +EXhalbtc8723a2ant_InitCoexDm( + IN PBTC_COEXIST pBtCoexist + ); +VOID +EXhalbtc8723a2ant_IpsNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ); +VOID +EXhalbtc8723a2ant_LpsNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ); +VOID +EXhalbtc8723a2ant_ScanNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ); +VOID +EXhalbtc8723a2ant_ConnectNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ); +VOID +EXhalbtc8723a2ant_MediaStatusNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ); +VOID +EXhalbtc8723a2ant_SpecialPacketNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ); +VOID +EXhalbtc8723a2ant_HaltNotify( + IN PBTC_COEXIST pBtCoexist + ); +VOID +EXhalbtc8723a2ant_Periodical( + IN PBTC_COEXIST pBtCoexist + ); +VOID +EXhalbtc8723a2ant_BtInfoNotify( + IN PBTC_COEXIST pBtCoexist, + IN pu1Byte tmpBuf, + IN u1Byte length + ); +VOID +EXhalbtc8723a2ant_StackOperationNotify( + IN PBTC_COEXIST pBtCoexist, + IN u1Byte type + ); +VOID +EXhalbtc8723a2ant_DisplayCoexInfo( + IN PBTC_COEXIST pBtCoexist + ); + --- linux-3.13.0.orig/drivers/staging/rtl8821ae/btcoexist/halbtc8723b1ant.c +++ linux-3.13.0/drivers/staging/rtl8821ae/btcoexist/halbtc8723b1ant.c @@ -0,0 +1,4104 @@ +/*************************************************************** + * Description: + * + * This file is for RTL8723B Co-exist mechanism + * + * History + * 2012/11/15 Cosa first check in. + * + ***************************************************************/ + + +/*************************************************************** + * include files + ***************************************************************/ +#include "halbt_precomp.h" +#if 1 +/*************************************************************** + * Global variables, these are static variables + ***************************************************************/ +static struct coex_dm_8723b_1ant glcoex_dm_8723b_1ant; +static struct coex_dm_8723b_1ant *coex_dm = &glcoex_dm_8723b_1ant; +static struct coex_sta_8723b_1ant glcoex_sta_8723b_1ant; +static struct coex_sta_8723b_1ant *coex_sta = &glcoex_sta_8723b_1ant; + +const char *const GLBtInfoSrc8723b1Ant[]={ + "BT Info[wifi fw]", + "BT Info[bt rsp]", + "BT Info[bt auto report]", +}; + +u32 glcoex_ver_date_8723b_1ant = 20130906; +u32 glcoex_ver_8723b_1ant = 0x45; + +/*************************************************************** + * local function proto type if needed + ***************************************************************/ +/*************************************************************** + * local function start with halbtc8723b1ant_ + ***************************************************************/ +u8 halbtc8723b1ant_bt_rssi_state(u8 level_num, u8 rssi_thresh, u8 rssi_thresh1) +{ + s32 bt_rssi=0; + u8 bt_rssi_state = coex_sta->pre_bt_rssi_state; + + bt_rssi = coex_sta->bt_rssi; + + if (level_num == 2){ + if ((coex_sta->pre_bt_rssi_state == BTC_RSSI_STATE_LOW) || + (coex_sta->pre_bt_rssi_state == BTC_RSSI_STATE_STAY_LOW)) { + if (bt_rssi >= rssi_thresh + + BTC_RSSI_COEX_THRESH_TOL_8723B_1ANT) { + bt_rssi_state = BTC_RSSI_STATE_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "[BTCoex], BT Rssi state " + "switch to High\n"); + } else { + bt_rssi_state = BTC_RSSI_STATE_STAY_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "[BTCoex], BT Rssi state " + "stay at Low\n"); + } + } else { + if (bt_rssi < rssi_thresh) { + bt_rssi_state = BTC_RSSI_STATE_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "[BTCoex], BT Rssi state " + "switch to Low\n"); + } else { + bt_rssi_state = BTC_RSSI_STATE_STAY_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "[BTCoex], BT Rssi state " + "stay at High\n"); + } + } + } else if (level_num == 3) { + if (rssi_thresh > rssi_thresh1) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "[BTCoex], BT Rssi thresh error!!\n"); + return coex_sta->pre_bt_rssi_state; + } + + if ((coex_sta->pre_bt_rssi_state == BTC_RSSI_STATE_LOW) || + (coex_sta->pre_bt_rssi_state == BTC_RSSI_STATE_STAY_LOW)) { + if (bt_rssi >= rssi_thresh + + BTC_RSSI_COEX_THRESH_TOL_8723B_1ANT) { + bt_rssi_state = BTC_RSSI_STATE_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "[BTCoex], BT Rssi state " + "switch to Medium\n"); + } else { + bt_rssi_state = BTC_RSSI_STATE_STAY_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "[BTCoex], BT Rssi state " + "stay at Low\n"); + } + } else if ((coex_sta->pre_bt_rssi_state == + BTC_RSSI_STATE_MEDIUM) || + (coex_sta->pre_bt_rssi_state == + BTC_RSSI_STATE_STAY_MEDIUM)) { + if (bt_rssi >= rssi_thresh1 + + BTC_RSSI_COEX_THRESH_TOL_8723B_1ANT) { + bt_rssi_state = BTC_RSSI_STATE_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "[BTCoex], BT Rssi state " + "switch to High\n"); + } else if (bt_rssi < rssi_thresh) { + bt_rssi_state = BTC_RSSI_STATE_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "[BTCoex], BT Rssi state " + "switch to Low\n"); + } else { + bt_rssi_state = BTC_RSSI_STATE_STAY_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "[BTCoex], BT Rssi state " + "stay at Medium\n"); + } + } else { + if (bt_rssi < rssi_thresh1) { + bt_rssi_state = BTC_RSSI_STATE_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "[BTCoex], BT Rssi state " + "switch to Medium\n"); + } else { + bt_rssi_state = BTC_RSSI_STATE_STAY_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "[BTCoex], BT Rssi state " + "stay at High\n"); + } + } + } + + coex_sta->pre_bt_rssi_state = bt_rssi_state; + + return bt_rssi_state; +} + +u8 halbtc8723b1ant_wifi_rssi_state(struct btc_coexist *btcoexist, + u8 index, u8 level_num, + u8 rssi_thresh, u8 rssi_thresh1) +{ + s32 wifi_rssi=0; + u8 wifi_rssi_state = coex_sta->pre_wifi_rssi_state[index]; + + btcoexist->btc_get(btcoexist, + BTC_GET_S4_WIFI_RSSI, &wifi_rssi); + + if (level_num == 2) { + if ((coex_sta->pre_wifi_rssi_state[index] == + BTC_RSSI_STATE_LOW) || + (coex_sta->pre_wifi_rssi_state[index] == + BTC_RSSI_STATE_STAY_LOW)) { + if (wifi_rssi >= rssi_thresh + + BTC_RSSI_COEX_THRESH_TOL_8723B_1ANT) { + wifi_rssi_state = BTC_RSSI_STATE_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "[BTCoex], wifi RSSI state " + "switch to High\n"); + } else { + wifi_rssi_state = BTC_RSSI_STATE_STAY_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "[BTCoex], wifi RSSI state " + "stay at Low\n"); + } + } else { + if (wifi_rssi < rssi_thresh) { + wifi_rssi_state = BTC_RSSI_STATE_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "[BTCoex], wifi RSSI state " + "switch to Low\n"); + } else { + wifi_rssi_state = BTC_RSSI_STATE_STAY_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "[BTCoex], wifi RSSI state " + "stay at High\n"); + } + } + } else if (level_num == 3) { + if (rssi_thresh > rssi_thresh1) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, + "[BTCoex], wifi RSSI thresh error!!\n"); + return coex_sta->pre_wifi_rssi_state[index]; + } + + if ((coex_sta->pre_wifi_rssi_state[index] == + BTC_RSSI_STATE_LOW) || + (coex_sta->pre_wifi_rssi_state[index] == + BTC_RSSI_STATE_STAY_LOW)) { + if (wifi_rssi >= rssi_thresh + + BTC_RSSI_COEX_THRESH_TOL_8723B_1ANT) { + wifi_rssi_state = BTC_RSSI_STATE_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "[BTCoex], wifi RSSI state " + "switch to Medium\n"); + } else { + wifi_rssi_state = BTC_RSSI_STATE_STAY_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "[BTCoex], wifi RSSI state " + "stay at Low\n"); + } + } else if ((coex_sta->pre_wifi_rssi_state[index] == + BTC_RSSI_STATE_MEDIUM) || + (coex_sta->pre_wifi_rssi_state[index] == + BTC_RSSI_STATE_STAY_MEDIUM)) { + if (wifi_rssi >= rssi_thresh1 + + BTC_RSSI_COEX_THRESH_TOL_8723B_1ANT) { + wifi_rssi_state = BTC_RSSI_STATE_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "[BTCoex], wifi RSSI state " + "switch to High\n"); + } else if (wifi_rssi < rssi_thresh) { + wifi_rssi_state = BTC_RSSI_STATE_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "[BTCoex], wifi RSSI state " + "switch to Low\n"); + } else { + wifi_rssi_state = BTC_RSSI_STATE_STAY_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "[BTCoex], wifi RSSI state " + "stay at Medium\n"); + } + } else { + if (wifi_rssi < rssi_thresh1) { + wifi_rssi_state = BTC_RSSI_STATE_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "[BTCoex], wifi RSSI state " + "switch to Medium\n"); + } else { + wifi_rssi_state = BTC_RSSI_STATE_STAY_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "[BTCoex], wifi RSSI state " + "stay at High\n"); + } + } + } + + coex_sta->pre_wifi_rssi_state[index] = wifi_rssi_state; + + return wifi_rssi_state; +} + +void halbtc8723b1ant_updatera_mask(struct btc_coexist *btcoexist, + bool force_exec, u32 dis_rate_mask) +{ + coex_dm->curra_mask = dis_rate_mask; + + if (force_exec || (coex_dm->prera_mask != coex_dm->curra_mask)) + btcoexist->btc_set(btcoexist, BTC_SET_ACT_UPDATE_ra_mask, + &coex_dm->curra_mask); + + coex_dm->prera_mask = coex_dm->curra_mask; +} + +void halbtc8723b1ant_auto_rate_fallback_retry(struct btc_coexist *btcoexist, + bool force_exec, u8 type) +{ + bool wifi_under_bmode = false; + + coex_dm->cur_arfr_type = type; + + if (force_exec || (coex_dm->pre_arfr_type != coex_dm->cur_arfr_type)) { + switch (coex_dm->cur_arfr_type) { + case 0: /* normal mode */ + btcoexist->btc_write_4byte(btcoexist, 0x430, + coex_dm->backup_arfr_cnt1); + btcoexist->btc_write_4byte(btcoexist, 0x434, + coex_dm->backup_arfr_cnt2); + break; + case 1: + btcoexist->btc_get(btcoexist, + BTC_GET_BL_WIFI_UNDER_B_MODE, + &wifi_under_bmode); + if (wifi_under_bmode) { + btcoexist->btc_write_4byte(btcoexist, + 0x430, 0x0); + btcoexist->btc_write_4byte(btcoexist, + 0x434, 0x01010101); + } else { + btcoexist->btc_write_4byte(btcoexist, + 0x430, 0x0); + btcoexist->btc_write_4byte(btcoexist, + 0x434, 0x04030201); + } + break; + default: + break; + } + } + + coex_dm->pre_arfr_type = coex_dm->cur_arfr_type; +} + +void halbtc8723b1ant_retry_limit(struct btc_coexist *btcoexist, + bool force_exec, u8 type) +{ + coex_dm->cur_retry_limit_type = type; + + if (force_exec || (coex_dm->pre_retry_limit_type != + coex_dm->cur_retry_limit_type)) { + + switch (coex_dm->cur_retry_limit_type) { + case 0: /* normal mode */ + btcoexist->btc_write_2byte(btcoexist, 0x42a, + coex_dm->backup_retry_limit); + break; + case 1: /* retry limit=8 */ + btcoexist->btc_write_2byte(btcoexist, 0x42a, 0x0808); + break; + default: + break; + } + } + + coex_dm->pre_retry_limit_type = coex_dm->cur_retry_limit_type; +} + +void halbtc8723b1ant_ampdu_maxtime(struct btc_coexist *btcoexist, + bool force_exec, u8 type) +{ + coex_dm->cur_ampdu_time_type = type; + + if (force_exec || (coex_dm->pre_ampdu_time_type != + coex_dm->cur_ampdu_time_type)) { + switch (coex_dm->cur_ampdu_time_type) { + case 0: /* normal mode */ + btcoexist->btc_write_1byte(btcoexist, 0x456, + coex_dm->backup_ampdu_max_time); + break; + case 1: /* AMPDU timw = 0x38 * 32us */ + btcoexist->btc_write_1byte(btcoexist, + 0x456, 0x38); + break; + default: + break; + } + } + + coex_dm->pre_ampdu_time_type = coex_dm->cur_ampdu_time_type; +} + +void halbtc8723b1ant_limited_tx(struct btc_coexist *btcoexist, + bool force_exec, u8 ra_maskType, u8 arfr_type, + u8 retry_limit_type, u8 ampdu_time_type) +{ + switch (ra_maskType) { + case 0: /* normal mode */ + halbtc8723b1ant_updatera_mask(btcoexist, force_exec, 0x0); + break; + case 1: /* disable cck 1/2 */ + halbtc8723b1ant_updatera_mask(btcoexist, force_exec, + 0x00000003); + break; + /* disable cck 1/2/5.5, ofdm 6/9/12/18/24, mcs 0/1/2/3/4*/ + case 2: + halbtc8723b1ant_updatera_mask(btcoexist, force_exec, + 0x0001f1f7); + break; + default: + break; + } + + halbtc8723b1ant_auto_rate_fallback_retry(btcoexist, force_exec, + arfr_type); + halbtc8723b1ant_retry_limit(btcoexist, force_exec, retry_limit_type); + halbtc8723b1ant_ampdu_maxtime(btcoexist, force_exec, ampdu_time_type); +} + +void halbtc8723b1ant_limited_rx(struct btc_coexist *btcoexist, + bool force_exec, bool rej_ap_agg_pkt, + bool b_bt_ctrl_agg_buf_size, u8 agg_buf_size) +{ + bool reject_rx_agg = rej_ap_agg_pkt; + bool bt_ctrl_rx_agg_size = b_bt_ctrl_agg_buf_size; + u8 rxAggSize = agg_buf_size; + + /********************************************** + * Rx Aggregation related setting + **********************************************/ + btcoexist->btc_set(btcoexist, BTC_SET_BL_TO_REJ_AP_AGG_PKT, + &reject_rx_agg); + /* decide BT control aggregation buf size or not */ + btcoexist->btc_set(btcoexist, BTC_SET_BL_BT_CTRL_AGG_SIZE, + &bt_ctrl_rx_agg_size); + /* aggregation buf size, only work + *when BT control Rx aggregation size. */ + btcoexist->btc_set(btcoexist, BTC_SET_U1_AGG_BUF_SIZE, &rxAggSize); + /* real update aggregation setting */ + btcoexist->btc_set(btcoexist, BTC_SET_ACT_AGGREGATE_CTRL, NULL); +} + +void halbtc8723b1ant_monitor_bt_ctr(struct btc_coexist *btcoexist) +{ + u32 reg_hp_txrx, reg_lp_txrx, u32tmp; + u32 reg_hp_tx = 0, reg_hp_rx = 0; + u32 reg_lp_tx = 0, reg_lp_rx = 0; + + reg_hp_txrx = 0x770; + reg_lp_txrx = 0x774; + + u32tmp = btcoexist->btc_read_4byte(btcoexist, reg_hp_txrx); + reg_hp_tx = u32tmp & MASKLWORD; + reg_hp_rx = (u32tmp & MASKHWORD) >> 16; + + u32tmp = btcoexist->btc_read_4byte(btcoexist, reg_lp_txrx); + reg_lp_tx = u32tmp & MASKLWORD; + reg_lp_rx = (u32tmp & MASKHWORD) >> 16; + + coex_sta->high_priority_tx = reg_hp_tx; + coex_sta->high_priority_rx = reg_hp_rx; + coex_sta->low_priority_tx = reg_lp_tx; + coex_sta->low_priority_rx = reg_lp_rx; + + /* reset counter */ + btcoexist->btc_write_1byte(btcoexist, 0x76e, 0xc); +} + +void halbtc8723b1ant_query_bt_info(struct btc_coexist *btcoexist) +{ + u8 h2c_parameter[1] = {0}; + + coex_sta->c2h_bt_info_req_sent = true; + + h2c_parameter[0] |= BIT0; /* trigger*/ + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, + "[BTCoex], Query Bt Info, FW write 0x61=0x%x\n", + h2c_parameter[0]); + + btcoexist->btc_fill_h2c(btcoexist, 0x61, 1, h2c_parameter); +} + +bool halbtc8723b1ant_is_wifi_status_changed(struct btc_coexist *btcoexist) +{ + static bool pre_wifi_busy = false; + static bool pre_under_4way = false, pre_bt_hs_on = false; + bool wifi_busy = false, under_4way = false, bt_hs_on = false; + bool wifi_connected = false; + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_CONNECTED, + &wifi_connected); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_BUSY, &wifi_busy); + btcoexist->btc_get(btcoexist, BTC_GET_BL_HS_OPERATION, &bt_hs_on); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_4_WAY_PROGRESS, + &under_4way); + + if (wifi_connected) { + if (wifi_busy != pre_wifi_busy) { + pre_wifi_busy = wifi_busy; + return true; + } + if (under_4way != pre_under_4way) { + pre_under_4way = under_4way; + return true; + } + if (bt_hs_on != pre_bt_hs_on) { + pre_bt_hs_on = bt_hs_on; + return true; + } + } + + return false; +} + +void halbtc8723b1ant_update_bt_link_info(struct btc_coexist *btcoexist) +{ + struct btc_bt_link_info *bt_link_info = &btcoexist->bt_link_info; + bool bt_hs_on = false; + + btcoexist->btc_get(btcoexist, BTC_GET_BL_HS_OPERATION, &bt_hs_on); + + bt_link_info->bt_link_exist = coex_sta->bt_link_exist; + bt_link_info->sco_exist = coex_sta->sco_exist; + bt_link_info->a2dp_exist = coex_sta->a2dp_exist; + bt_link_info->pan_exist = coex_sta->pan_exist; + bt_link_info->hid_exist = coex_sta->hid_exist; + + /* work around for HS mode. */ + if (bt_hs_on) { + bt_link_info->pan_exist = true; + bt_link_info->bt_link_exist = true; + } + + /* check if Sco only */ + if (bt_link_info->sco_exist && !bt_link_info->a2dp_exist && + !bt_link_info->pan_exist && !bt_link_info->hid_exist) + bt_link_info->sco_only = true; + else + bt_link_info->sco_only = false; + + /* check if A2dp only */ + if (!bt_link_info->sco_exist && bt_link_info->a2dp_exist && + !bt_link_info->pan_exist && !bt_link_info->hid_exist) + bt_link_info->a2dp_only = true; + else + bt_link_info->a2dp_only = false; + + /* check if Pan only */ + if (!bt_link_info->sco_exist && !bt_link_info->a2dp_exist && + bt_link_info->pan_exist && !bt_link_info->hid_exist) + bt_link_info->pan_only = true; + else + bt_link_info->pan_only = false; + + /* check if Hid only */ + if (!bt_link_info->sco_exist && !bt_link_info->a2dp_exist && + !bt_link_info->pan_exist && bt_link_info->hid_exist ) + bt_link_info->hid_only = true; + else + bt_link_info->hid_only = false; +} + +u8 halbtc8723b1ant_action_algorithm(struct btc_coexist *btcoexist) +{ + struct btc_bt_link_info *bt_link_info = &btcoexist->bt_link_info; + bool bt_hs_on = false; + u8 algorithm = BT_8723B_1ANT_COEX_ALGO_UNDEFINED; + u8 numOfDiffProfile = 0; + + btcoexist->btc_get(btcoexist, BTC_GET_BL_HS_OPERATION, &bt_hs_on); + + if (!bt_link_info->bt_link_exist) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], No BT link exists!!!\n"); + return algorithm; + } + + if (bt_link_info->sco_exist) + numOfDiffProfile++; + if (bt_link_info->hid_exist) + numOfDiffProfile++; + if (bt_link_info->pan_exist) + numOfDiffProfile++; + if (bt_link_info->a2dp_exist) + numOfDiffProfile++; + + if (numOfDiffProfile == 1) { + if (bt_link_info->sco_exist) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BT Profile = SCO only\n"); + algorithm = BT_8723B_1ANT_COEX_ALGO_SCO; + } else { + if (bt_link_info->hid_exist) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BT Profile = HID only\n"); + algorithm = BT_8723B_1ANT_COEX_ALGO_HID; + } else if (bt_link_info->a2dp_exist) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BT Profile = A2DP only\n"); + algorithm = BT_8723B_1ANT_COEX_ALGO_A2DP; + } else if (bt_link_info->pan_exist) { + if (bt_hs_on) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BT Profile = " + "PAN(HS) only\n"); + algorithm = + BT_8723B_1ANT_COEX_ALGO_PANHS; + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BT Profile = " + "PAN(EDR) only\n"); + algorithm = + BT_8723B_1ANT_COEX_ALGO_PANEDR; + } + } + } + } else if (numOfDiffProfile == 2) { + if (bt_link_info->sco_exist) { + if (bt_link_info->hid_exist) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BT Profile = SCO + HID\n"); + algorithm = BT_8723B_1ANT_COEX_ALGO_HID; + } else if (bt_link_info->a2dp_exist) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BT Profile = " + "SCO + A2DP ==> SCO\n"); + algorithm = BT_8723B_1ANT_COEX_ALGO_SCO; + } else if (bt_link_info->pan_exist) { + if (bt_hs_on) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BT Profile " + "= SCO + PAN(HS)\n"); + algorithm = BT_8723B_1ANT_COEX_ALGO_SCO; + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BT Profile " + "= SCO + PAN(EDR)\n"); + algorithm = + BT_8723B_1ANT_COEX_ALGO_PANEDR_HID; + } + } + } else { + if (bt_link_info->hid_exist && + bt_link_info->a2dp_exist) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BT Profile = " + "HID + A2DP\n"); + algorithm = BT_8723B_1ANT_COEX_ALGO_HID_A2DP; + } else if (bt_link_info->hid_exist && + bt_link_info->pan_exist) { + if (bt_hs_on) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BT Profile = " + "HID + PAN(HS)\n"); + algorithm = + BT_8723B_1ANT_COEX_ALGO_HID_A2DP; + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BT Profile = " + "HID + PAN(EDR)\n"); + algorithm = + BT_8723B_1ANT_COEX_ALGO_PANEDR_HID; + } + } else if (bt_link_info->pan_exist && + bt_link_info->a2dp_exist) { + if (bt_hs_on) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BT Profile = " + "A2DP + PAN(HS)\n"); + algorithm = + BT_8723B_1ANT_COEX_ALGO_A2DP_PANHS; + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BT Profile = " + "A2DP + PAN(EDR)\n"); + algorithm = + BT_8723B_1ANT_COEX_ALGO_PANEDR_A2DP; + } + } + } + } else if (numOfDiffProfile == 3) { + if (bt_link_info->sco_exist) { + if (bt_link_info->hid_exist && + bt_link_info->a2dp_exist) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BT Profile = " + "SCO + HID + A2DP ==> HID\n"); + algorithm = BT_8723B_1ANT_COEX_ALGO_HID; + } else if (bt_link_info->hid_exist && + bt_link_info->pan_exist) { + if (bt_hs_on) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BT Profile = " + "SCO + HID + PAN(HS)\n"); + algorithm = + BT_8723B_1ANT_COEX_ALGO_HID_A2DP; + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BT Profile = " + "SCO + HID + PAN(EDR)\n"); + algorithm = + BT_8723B_1ANT_COEX_ALGO_PANEDR_HID; + } + } else if (bt_link_info->pan_exist && + bt_link_info->a2dp_exist) { + if (bt_hs_on) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BT Profile = " + "SCO + A2DP + PAN(HS)\n"); + algorithm = BT_8723B_1ANT_COEX_ALGO_SCO; + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BT Profile = SCO + " + "A2DP + PAN(EDR) ==> HID\n"); + algorithm = + BT_8723B_1ANT_COEX_ALGO_PANEDR_HID; + } + } + } else { + if (bt_link_info->hid_exist && + bt_link_info->pan_exist && + bt_link_info->a2dp_exist) { + if (bt_hs_on) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BT Profile = " + "HID + A2DP + PAN(HS)\n"); + algorithm = + BT_8723B_1ANT_COEX_ALGO_HID_A2DP; + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BT Profile = " + "HID + A2DP + PAN(EDR)\n"); + algorithm = + BT_8723B_1ANT_COEX_ALGO_HID_A2DP_PANEDR; + } + } + } + } else if (numOfDiffProfile >= 3) { + if (bt_link_info->sco_exist) { + if (bt_link_info->hid_exist && + bt_link_info->pan_exist && + bt_link_info->a2dp_exist) { + if (bt_hs_on) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Error!!! " + "BT Profile = SCO + " + "HID + A2DP + PAN(HS)\n"); + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BT Profile = " + "SCO + HID + A2DP + PAN(EDR)" + "==>PAN(EDR)+HID\n"); + algorithm = + BT_8723B_1ANT_COEX_ALGO_PANEDR_HID; + } + } + } + } + + return algorithm; +} + +bool halbtc8723b1ant_need_to_dec_bt_pwr(struct btc_coexist *btcoexist) +{ + bool ret = false; + bool bt_hs_on = false, wifi_connected = false; + s32 bt_hs_rssi = 0; + u8 bt_rssi_state; + + if (!btcoexist->btc_get(btcoexist, BTC_GET_BL_HS_OPERATION, &bt_hs_on)) + return false; + if (!btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_CONNECTED, + &wifi_connected)) + return false; + if (!btcoexist->btc_get(btcoexist, BTC_GET_S4_HS_RSSI, &bt_hs_rssi)) + return false; + + bt_rssi_state = halbtc8723b1ant_bt_rssi_state(2, 35, 0); + + if (wifi_connected) { + if (bt_hs_on) { + if (bt_hs_rssi > 37) + ret = true; + } else { + if ((bt_rssi_state == BTC_RSSI_STATE_HIGH) || + (bt_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) + ret = true; + } + } + + return ret; +} + +void halbtc8723b1ant_set_fw_dac_swing_level(struct btc_coexist *btcoexist, + u8 dac_swing_lvl) +{ + u8 h2c_parameter[1] = {0}; + + /* There are several type of dacswing + * 0x18/ 0x10/ 0xc/ 0x8/ 0x4/ 0x6 */ + h2c_parameter[0] = dac_swing_lvl; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, + "[BTCoex], Set Dac Swing Level=0x%x\n", dac_swing_lvl); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, + "[BTCoex], FW write 0x64=0x%x\n", h2c_parameter[0]); + + btcoexist->btc_fill_h2c(btcoexist, 0x64, 1, h2c_parameter); +} + +void halbtc8723b1ant_set_fw_dec_bt_pwr(struct btc_coexist *btcoexist, + bool dec_bt_pwr) +{ + u8 h2c_parameter[1] = {0}; + + h2c_parameter[0] = 0; + + if (dec_bt_pwr) + h2c_parameter[0] |= BIT1; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, + "[BTCoex], decrease Bt Power : %s, FW write 0x62=0x%x\n", + (dec_bt_pwr? "Yes!!":"No!!"),h2c_parameter[0]); + + btcoexist->btc_fill_h2c(btcoexist, 0x62, 1, h2c_parameter); +} + +void halbtc8723b1ant_dec_bt_pwr(struct btc_coexist *btcoexist, + bool force_exec, bool dec_bt_pwr) +{ + return; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, + "[BTCoex], %s Dec BT power = %s\n", + (force_exec ? "force to" : ""), (dec_bt_pwr ? "ON" : "OFF")); + coex_dm->cur_dec_bt_pwr = dec_bt_pwr; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], bPreDecBtPwr=%d, bCurDecBtPwr=%d\n", + coex_dm->pre_dec_bt_pwr, coex_dm->cur_dec_bt_pwr); + + if (coex_dm->pre_dec_bt_pwr == coex_dm->cur_dec_bt_pwr) + return; + } + halbtc8723b1ant_set_fw_dec_bt_pwr(btcoexist, coex_dm->cur_dec_bt_pwr); + + coex_dm->pre_dec_bt_pwr = coex_dm->cur_dec_bt_pwr; +} + +void halbtc8723b1ant_set_bt_auto_report(struct btc_coexist *btcoexist, + bool enable_auto_report) +{ + u8 h2c_parameter[1] = {0}; + + h2c_parameter[0] = 0; + + if (enable_auto_report) + h2c_parameter[0] |= BIT0; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, + "[BTCoex], BT FW auto report : %s, FW write 0x68=0x%x\n", + (enable_auto_report? "Enabled!!":"Disabled!!"), + h2c_parameter[0]); + + btcoexist->btc_fill_h2c(btcoexist, 0x68, 1, h2c_parameter); +} + +void halbtc8723b1ant_bt_auto_report(struct btc_coexist *btcoexist, + bool force_exec, bool enable_auto_report) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, + "[BTCoex], %s BT Auto report = %s\n", + (force_exec? "force to":""), + ((enable_auto_report)? "Enabled":"Disabled")); + coex_dm->cur_bt_auto_report = enable_auto_report; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], bPreBtAutoReport=%d, " + "bCurBtAutoReport=%d\n", + coex_dm->pre_bt_auto_report, + coex_dm->cur_bt_auto_report); + + if (coex_dm->pre_bt_auto_report == coex_dm->cur_bt_auto_report) + return; + } + halbtc8723b1ant_set_bt_auto_report(btcoexist, + coex_dm->cur_bt_auto_report); + + coex_dm->pre_bt_auto_report = coex_dm->cur_bt_auto_report; +} + +void halbtc8723b1ant_fw_dac_swing_lvl(struct btc_coexist *btcoexist, + bool force_exec, u8 fw_dac_swing_lvl) +{ + return; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, + "[BTCoex], %s set FW Dac Swing level = %d\n", + (force_exec? "force to":""), fw_dac_swing_lvl); + coex_dm->cur_fw_dac_swing_lvl = fw_dac_swing_lvl; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], preFwDacSwingLvl=%d, " + "curFwDacSwingLvl=%d\n", + coex_dm->pre_fw_dac_swing_lvl, + coex_dm->cur_fw_dac_swing_lvl); + + if (coex_dm->pre_fw_dac_swing_lvl == + coex_dm->cur_fw_dac_swing_lvl) + return; + } + + halbtc8723b1ant_set_fw_dac_swing_level(btcoexist, + coex_dm->cur_fw_dac_swing_lvl); + + coex_dm->pre_fw_dac_swing_lvl = coex_dm->cur_fw_dac_swing_lvl; +} + +void halbtc8723b1ant_set_sw_rf_rx_lpf_corner(struct btc_coexist *btcoexist, + bool rx_rf_shrink_on) +{ + if (rx_rf_shrink_on) { + /*Shrink RF Rx LPF corner */ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], Shrink RF Rx LPF corner!!\n"); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1e, + 0xfffff, 0xffff7); + } else { + /*Resume RF Rx LPF corner + * After initialized, we can use coex_dm->btRf0x1eBackup */ + if (btcoexist->initilized) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], Resume RF Rx LPF corner!!\n"); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, + 0x1e, 0xfffff, + coex_dm->bt_rf0x1e_backup); + } + } +} + +void halbtc8723b1ant_rf_shrink(struct btc_coexist *btcoexist, + bool force_exec, bool rx_rf_shrink_on) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, + "[BTCoex], %s turn Rx RF Shrink = %s\n", + (force_exec? "force to":""), + ((rx_rf_shrink_on)? "ON":"OFF")); + coex_dm->cur_rf_rx_lpf_shrink = rx_rf_shrink_on; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, + "[BTCoex], bPreRfRxLpfShrink=%d, " + "bCurRfRxLpfShrink=%d\n", + coex_dm->pre_rf_rx_lpf_shrink, + coex_dm->cur_rf_rx_lpf_shrink); + + if (coex_dm->pre_rf_rx_lpf_shrink == + coex_dm->cur_rf_rx_lpf_shrink) + return; + } + halbtc8723b1ant_set_sw_rf_rx_lpf_corner(btcoexist, + coex_dm->cur_rf_rx_lpf_shrink); + + coex_dm->pre_rf_rx_lpf_shrink = coex_dm->cur_rf_rx_lpf_shrink; +} + +void halbtc8723b1ant_set_sw_penalty_tx_rate_adaptive( + struct btc_coexist *btcoexist, + bool low_penalty_ra) +{ + u8 h2c_parameter[6] = {0}; + + h2c_parameter[0] = 0x6; /* opCode, 0x6= Retry_Penalty */ + + if (low_penalty_ra) { + h2c_parameter[1] |= BIT0; + /*normal rate except MCS7/6/5, OFDM54/48/36 */ + h2c_parameter[2] = 0x00; + h2c_parameter[3] = 0xf7; /*MCS7 or OFDM54 */ + h2c_parameter[4] = 0xf8; /*MCS6 or OFDM48 */ + h2c_parameter[5] = 0xf9; /*MCS5 or OFDM36 */ + } + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, + "[BTCoex], set WiFi Low-Penalty Retry: %s", + (low_penalty_ra ? "ON!!" : "OFF!!")); + + btcoexist->btc_fill_h2c(btcoexist, 0x69, 6, h2c_parameter); +} + +void halbtc8723b1ant_low_penalty_ra(struct btc_coexist *btcoexist, + bool force_exec, bool low_penalty_ra) +{ + coex_dm->cur_low_penalty_ra = low_penalty_ra; + + if (!force_exec) { + if (coex_dm->pre_low_penalty_ra == coex_dm->cur_low_penalty_ra) + return; + } + halbtc8723b1ant_set_sw_penalty_tx_rate_adaptive(btcoexist, + coex_dm->cur_low_penalty_ra); + + coex_dm->pre_low_penalty_ra = coex_dm->cur_low_penalty_ra; +} + +void halbtc8723b1ant_set_dac_swing_reg(struct btc_coexist *btcoexist, u32 level) +{ + u8 val = (u8) level; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], Write SwDacSwing = 0x%x\n", level); + btcoexist->btc_write_1byte_bitmask(btcoexist, 0x883, 0x3e, val); +} + +void halbtc8723b1ant_set_sw_full_time_dac_swing(struct btc_coexist *btcoexist, + bool sw_dac_swing_on, + u32 sw_dac_swing_lvl) +{ + if (sw_dac_swing_on) + halbtc8723b1ant_set_dac_swing_reg(btcoexist, sw_dac_swing_lvl); + else + halbtc8723b1ant_set_dac_swing_reg(btcoexist, 0x18); +} + + +void halbtc8723b1ant_dac_swing(struct btc_coexist *btcoexist, bool force_exec, + bool dac_swing_on, u32 dac_swing_lvl) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, + "[BTCoex], %s turn DacSwing=%s, dac_swing_lvl=0x%x\n", + (force_exec ? "force to" : ""), (dac_swing_on ? "ON" : "OFF"), + dac_swing_lvl); + + coex_dm->cur_dac_swing_on = dac_swing_on; + coex_dm->cur_dac_swing_lvl = dac_swing_lvl; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, + "[BTCoex], bPreDacSwingOn=%d, preDacSwingLvl=0x%x, " + "bCurDacSwingOn=%d, curDacSwingLvl=0x%x\n", + coex_dm->pre_dac_swing_on, coex_dm->pre_dac_swing_lvl, + coex_dm->cur_dac_swing_on, + coex_dm->cur_dac_swing_lvl); + + if ((coex_dm->pre_dac_swing_on == coex_dm->cur_dac_swing_on) && + (coex_dm->pre_dac_swing_lvl == coex_dm->cur_dac_swing_lvl)) + return; + } + mdelay(30); + halbtc8723b1ant_set_sw_full_time_dac_swing(btcoexist, dac_swing_on, + dac_swing_lvl); + + coex_dm->pre_dac_swing_on = coex_dm->cur_dac_swing_on; + coex_dm->pre_dac_swing_lvl = coex_dm->cur_dac_swing_lvl; +} + +void halbtc8723b1ant_set_adc_backoff(struct btc_coexist *btcoexist, + bool adc_backoff) +{ + if (adc_backoff) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], BB BackOff Level On!\n"); + btcoexist->btc_write_1byte_bitmask(btcoexist, 0x8db, 0x60, 0x3); + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], BB BackOff Level Off!\n"); + btcoexist->btc_write_1byte_bitmask(btcoexist, 0x8db, 0x60, 0x1); + } +} + +void halbtc8723b1ant_adc_backoff(struct btc_coexist *btcoexist, + bool force_exec, bool adc_backoff) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, + "[BTCoex], %s turn AdcBackOff = %s\n", + (force_exec ? "force to" : ""), (adc_backoff ? "ON" : "OFF")); + coex_dm->cur_adc_backoff = adc_backoff; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, + "[BTCoex], bPreAdcBackOff=%d, bCurAdcBackOff=%d\n", + coex_dm->pre_adc_backoff, coex_dm->cur_adc_backoff); + + if(coex_dm->pre_adc_backoff == coex_dm->cur_adc_backoff) + return; + } + halbtc8723b1ant_set_adc_backoff(btcoexist, coex_dm->cur_adc_backoff); + + coex_dm->pre_adc_backoff = + coex_dm->cur_adc_backoff; +} + +void halbtc8723b1ant_set_agc_table(struct btc_coexist *btcoexist, + bool adc_table_en) +{ + u8 rssi_adjust_val = 0; + + btcoexist->btc_set_rf_reg(btcoexist, + BTC_RF_A, 0xef, 0xfffff, 0x02000); + if (adc_table_en) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], Agc Table On!\n"); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x3b, + 0xfffff, 0x3fa58); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x3b, + 0xfffff, 0x37a58); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x3b, + 0xfffff, 0x2fa58); + rssi_adjust_val = 8; + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], Agc Table Off!\n"); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x3b, + 0xfffff, 0x39258); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x3b, + 0xfffff, 0x31258); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x3b, + 0xfffff, 0x29258); + } + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0xef, 0xfffff, 0x0); + + /* set rssi_adjust_val for wifi module. */ + btcoexist->btc_set(btcoexist, BTC_SET_U1_RSSI_ADJ_VAL_FOR_AGC_TABLE_ON, + &rssi_adjust_val); +} + + +void halbtc8723b1ant_agc_table(struct btc_coexist *btcoexist, + bool force_exec, bool adc_table_en) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, + "[BTCoex], %s %s Agc Table\n", + (force_exec ? "force to" : ""), + (adc_table_en ? "Enable" : "Disable")); + coex_dm->cur_agc_table_en = adc_table_en; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, + "[BTCoex], bPreAgcTableEn=%d, bCurAgcTableEn=%d\n", + coex_dm->pre_agc_table_en, + coex_dm->cur_agc_table_en); + + if(coex_dm->pre_agc_table_en == coex_dm->cur_agc_table_en) + return; + } + halbtc8723b1ant_set_agc_table(btcoexist, adc_table_en); + + coex_dm->pre_agc_table_en = coex_dm->cur_agc_table_en; +} + +void halbtc8723b1ant_set_coex_table(struct btc_coexist *btcoexist, + u32 val0x6c0, u32 val0x6c4, + u32 val0x6c8, u8 val0x6cc) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], set coex table, set 0x6c0=0x%x\n", val0x6c0); + btcoexist->btc_write_4byte(btcoexist, 0x6c0, val0x6c0); + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], set coex table, set 0x6c4=0x%x\n", val0x6c4); + btcoexist->btc_write_4byte(btcoexist, 0x6c4, val0x6c4); + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], set coex table, set 0x6c8=0x%x\n", val0x6c8); + btcoexist->btc_write_4byte(btcoexist, 0x6c8, val0x6c8); + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], set coex table, set 0x6cc=0x%x\n", val0x6cc); + btcoexist->btc_write_1byte(btcoexist, 0x6cc, val0x6cc); +} + +void halbtc8723b1ant_coex_table(struct btc_coexist *btcoexist, + bool force_exec, u32 val0x6c0, + u32 val0x6c4, u32 val0x6c8, + u8 val0x6cc) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, + "[BTCoex], %s write Coex Table 0x6c0=0x%x," + " 0x6c4=0x%x, 0x6cc=0x%x\n", (force_exec ? "force to" : ""), + val0x6c0, val0x6c4, val0x6cc); + coex_dm->cur_val0x6c0 = val0x6c0; + coex_dm->cur_val0x6c4 = val0x6c4; + coex_dm->cur_val0x6c8 = val0x6c8; + coex_dm->cur_val0x6cc = val0x6cc; + + if (!force_exec) { + if ((coex_dm->pre_val0x6c0 == coex_dm->cur_val0x6c0) && + (coex_dm->pre_val0x6c4 == coex_dm->cur_val0x6c4) && + (coex_dm->pre_val0x6c8 == coex_dm->cur_val0x6c8) && + (coex_dm->pre_val0x6cc == coex_dm->cur_val0x6cc)) + return; + } + halbtc8723b1ant_set_coex_table(btcoexist, val0x6c0, val0x6c4, + val0x6c8, val0x6cc); + + coex_dm->pre_val0x6c0 = coex_dm->cur_val0x6c0; + coex_dm->pre_val0x6c4 = coex_dm->cur_val0x6c4; + coex_dm->pre_val0x6c8 = coex_dm->cur_val0x6c8; + coex_dm->pre_val0x6cc = coex_dm->cur_val0x6cc; +} + +void halbtc8723b1ant_coex_table_with_type(struct btc_coexist *btcoexist, + bool force_exec, u8 type) +{ + switch (type) { + case 0: + halbtc8723b1ant_coex_table(btcoexist, force_exec, 0x55555555, + 0x55555555, 0xffffff, 0x3); + break; + case 1: + halbtc8723b1ant_coex_table(btcoexist, force_exec, 0x55555555, + 0x5a5a5a5a, 0xffffff, 0x3); + break; + case 2: + halbtc8723b1ant_coex_table(btcoexist, force_exec, 0x5a5a5a5a, + 0x5a5a5a5a, 0xffffff, 0x3); + break; + case 3: + halbtc8723b1ant_coex_table(btcoexist, force_exec, 0x55555555, + 0xaaaaaaaa, 0xffffff, 0x3); + break; + case 4: + halbtc8723b1ant_coex_table(btcoexist, force_exec, 0x55555555, + 0x5aaa5aaa, 0xffffff, 0x3); + break; + case 5: + halbtc8723b1ant_coex_table(btcoexist, force_exec, 0x5a5a5a5a, + 0xaaaa5a5a, 0xffffff, 0x3); + break; + case 6: + halbtc8723b1ant_coex_table(btcoexist, force_exec, 0x55555555, + 0xaaaa5a5a, 0xffffff, 0x3); + break; + case 7: + halbtc8723b1ant_coex_table(btcoexist, force_exec, 0x5afa5afa, + 0x5afa5afa, 0xffffff, 0x3); + break; + default: + break; + } +} + +void halbtc8723b1ant_SetFwIgnoreWlanAct(struct btc_coexist *btcoexist, + bool enable) +{ + u8 h2c_parameter[1] = {0}; + + if (enable) + h2c_parameter[0] |= BIT0; /* function enable */ + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, + "[BTCoex], set FW for BT Ignore Wlan_Act," + " FW write 0x63=0x%x\n", h2c_parameter[0]); + + btcoexist->btc_fill_h2c(btcoexist, 0x63, 1, h2c_parameter); +} + +void halbtc8723b1ant_ignore_wlan_act(struct btc_coexist *btcoexist, + bool force_exec, bool enable) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, + "[BTCoex], %s turn Ignore WlanAct %s\n", + (force_exec ? "force to" : ""), (enable ? "ON" : "OFF")); + coex_dm->cur_ignore_wlan_act = enable; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], bPreIgnoreWlanAct = %d, " + "bCurIgnoreWlanAct = %d!!\n", + coex_dm->pre_ignore_wlan_act, + coex_dm->cur_ignore_wlan_act); + + if (coex_dm->pre_ignore_wlan_act == + coex_dm->cur_ignore_wlan_act) + return; + } + halbtc8723b1ant_SetFwIgnoreWlanAct(btcoexist, enable); + + coex_dm->pre_ignore_wlan_act = coex_dm->cur_ignore_wlan_act; +} + +void halbtc8723b1ant_set_fw_ps_tdma(struct btc_coexist *btcoexist, + u8 byte1, u8 byte2, u8 byte3, + u8 byte4, u8 byte5) +{ + u8 h2c_parameter[5] = {0}; + u8 real_byte1 = byte1, real_byte5 = byte5; + bool ap_enable = false; + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_AP_MODE_ENABLE, + &ap_enable); + + if (ap_enable) { + if ((byte1 & BIT4) && !(byte1 & BIT5)) { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], FW for 1Ant AP mode\n"); + real_byte1 &= ~BIT4; + real_byte1 |= BIT5; + + real_byte5 |= BIT5; + real_byte5 &= ~BIT6; + } + } + + h2c_parameter[0] = real_byte1; + h2c_parameter[1] = byte2; + h2c_parameter[2] = byte3; + h2c_parameter[3] = byte4; + h2c_parameter[4] = real_byte5; + + coex_dm->ps_tdma_para[0] = real_byte1; + coex_dm->ps_tdma_para[1] = byte2; + coex_dm->ps_tdma_para[2] = byte3; + coex_dm->ps_tdma_para[3] = byte4; + coex_dm->ps_tdma_para[4] = real_byte5; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, + "[BTCoex], PS-TDMA H2C cmd =0x%x%08x\n", + h2c_parameter[0], + h2c_parameter[1] << 24 | + h2c_parameter[2] << 16 | + h2c_parameter[3] << 8 | + h2c_parameter[4]); + + btcoexist->btc_fill_h2c(btcoexist, 0x60, 5, h2c_parameter); +} + +void halbtc8723b1ant_SetLpsRpwm(struct btc_coexist *btcoexist, + u8 lps_val, u8 rpwm_val) +{ + u8 lps = lps_val; + u8 rpwm = rpwm_val; + + btcoexist->btc_set(btcoexist, BTC_SET_U1_1ANT_LPS, &lps); + btcoexist->btc_set(btcoexist, BTC_SET_U1_1ANT_RPWM, &rpwm); +} + +void halbtc8723b1ant_LpsRpwm(struct btc_coexist *btcoexist, bool force_exec, + u8 lps_val, u8 rpwm_val) +{ + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, + "[BTCoex], %s set lps/rpwm=0x%x/0x%x \n", + (force_exec ? "force to" : ""), lps_val, rpwm_val); + coex_dm->cur_lps = lps_val; + coex_dm->cur_rpwm = rpwm_val; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], LPS-RxBeaconMode=0x%x , LPS-RPWM=0x%x!!\n", + coex_dm->cur_lps, coex_dm->cur_rpwm); + + if ((coex_dm->pre_lps == coex_dm->cur_lps) && + (coex_dm->pre_rpwm == coex_dm->cur_rpwm)) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], LPS-RPWM_Last=0x%x" + " , LPS-RPWM_Now=0x%x!!\n", + coex_dm->pre_rpwm, coex_dm->cur_rpwm); + + return; + } + } + halbtc8723b1ant_SetLpsRpwm(btcoexist, lps_val, rpwm_val); + + coex_dm->pre_lps = coex_dm->cur_lps; + coex_dm->pre_rpwm = coex_dm->cur_rpwm; +} + +void halbtc8723b1ant_sw_mechanism1(struct btc_coexist *btcoexist, + bool shrink_rx_lpf, bool low_penalty_ra, + bool limited_dig, bool bt_lna_constrain) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, + "[BTCoex], SM1[ShRf/ LpRA/ LimDig/ btLna] = %d %d %d %d\n", + shrink_rx_lpf, low_penalty_ra, limited_dig, bt_lna_constrain); + + halbtc8723b1ant_low_penalty_ra(btcoexist, NORMAL_EXEC, low_penalty_ra); +} + +void halbtc8723b1ant_sw_mechanism2(struct btc_coexist *btcoexist, + bool agc_table_shift, bool adc_backoff, + bool sw_dac_swing, u32 dac_swing_lvl) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, + "[BTCoex], SM2[AgcT/ AdcB/ SwDacSwing(lvl)] = %d %d %d\n", + agc_table_shift, adc_backoff, sw_dac_swing); +} + +void halbtc8723b1ant_SetAntPath(struct btc_coexist *btcoexist, + u8 ant_pos_type, bool init_hw_cfg, + bool wifi_off) +{ + struct btc_board_info *board_info = &btcoexist->board_info; + u32 fw_ver = 0, u32tmp = 0; + bool pg_ext_switch = false; + bool use_ext_switch = false; + u8 h2c_parameter[2] = {0}; + + btcoexist->btc_get(btcoexist, BTC_GET_BL_EXT_SWITCH, &pg_ext_switch); + /* [31:16]=fw ver, [15:0]=fw sub ver */ + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_FW_VER, &fw_ver); + + + if ((fw_ver < 0xc0000) || pg_ext_switch) + use_ext_switch = true; + + if (init_hw_cfg){ + /*BT select s0/s1 is controlled by WiFi */ + btcoexist->btc_write_1byte_bitmask(btcoexist, 0x67, 0x20, 0x1); + + /*Force GNT_BT to Normal */ + btcoexist->btc_write_1byte_bitmask(btcoexist, 0x765, 0x18, 0x0); + } else if (wifi_off) { + /*Force GNT_BT to High */ + btcoexist->btc_write_1byte_bitmask(btcoexist, 0x765, 0x18, 0x3); + /*BT select s0/s1 is controlled by BT */ + btcoexist->btc_write_1byte_bitmask(btcoexist, 0x67, 0x20, 0x0); + + /* 0x4c[24:23]=00, Set Antenna control by BT_RFE_CTRL + * BT Vendor 0xac=0xf002 */ + u32tmp = btcoexist->btc_read_4byte(btcoexist, 0x4c); + u32tmp &= ~BIT23; + u32tmp &= ~BIT24; + btcoexist->btc_write_4byte(btcoexist, 0x4c, u32tmp); + } + + if (use_ext_switch) { + if (init_hw_cfg) { + /* 0x4c[23]=0, 0x4c[24]=1 Antenna control by WL/BT */ + u32tmp = btcoexist->btc_read_4byte(btcoexist, 0x4c); + u32tmp &= ~BIT23; + u32tmp |= BIT24; + btcoexist->btc_write_4byte(btcoexist, 0x4c, u32tmp); + + if (board_info->btdm_ant_pos == + BTC_ANTENNA_AT_MAIN_PORT) { + /* Main Ant to BT for IPS case 0x4c[23]=1 */ + btcoexist->btc_write_1byte_bitmask(btcoexist, + 0x64, 0x1, + 0x1); + + /*tell firmware "no antenna inverse"*/ + h2c_parameter[0] = 0; + h2c_parameter[1] = 1; /*ext switch type*/ + btcoexist->btc_fill_h2c(btcoexist, 0x65, 2, + h2c_parameter); + } else { + /*Aux Ant to BT for IPS case 0x4c[23]=1 */ + btcoexist->btc_write_1byte_bitmask(btcoexist, + 0x64, 0x1, + 0x0); + + /*tell firmware "antenna inverse"*/ + h2c_parameter[0] = 1; + h2c_parameter[1] = 1; /*ext switch type*/ + btcoexist->btc_fill_h2c(btcoexist, 0x65, 2, + h2c_parameter); + } + } + + /* fixed internal switch first*/ + /* fixed internal switch S1->WiFi, S0->BT*/ + if (board_info->btdm_ant_pos == BTC_ANTENNA_AT_MAIN_PORT) + btcoexist->btc_write_2byte(btcoexist, 0x948, 0x0); + else/* fixed internal switch S0->WiFi, S1->BT*/ + btcoexist->btc_write_2byte(btcoexist, 0x948, 0x280); + + /* ext switch setting */ + switch (ant_pos_type) { + case BTC_ANT_PATH_WIFI: + if (board_info->btdm_ant_pos == + BTC_ANTENNA_AT_MAIN_PORT) + btcoexist->btc_write_1byte_bitmask(btcoexist, + 0x92c, 0x3, + 0x1); + else + btcoexist->btc_write_1byte_bitmask(btcoexist, + 0x92c, 0x3, + 0x2); + break; + case BTC_ANT_PATH_BT: + if (board_info->btdm_ant_pos == + BTC_ANTENNA_AT_MAIN_PORT) + btcoexist->btc_write_1byte_bitmask(btcoexist, + 0x92c, 0x3, + 0x2); + else + btcoexist->btc_write_1byte_bitmask(btcoexist, + 0x92c, 0x3, + 0x1); + break; + default: + case BTC_ANT_PATH_PTA: + if (board_info->btdm_ant_pos == + BTC_ANTENNA_AT_MAIN_PORT) + btcoexist->btc_write_1byte_bitmask(btcoexist, + 0x92c, 0x3, + 0x1); + else + btcoexist->btc_write_1byte_bitmask(btcoexist, + 0x92c, 0x3, + 0x2); + break; + } + + } else { + if (init_hw_cfg) { + /* 0x4c[23]=1, 0x4c[24]=0 Antenna control by 0x64*/ + u32tmp = btcoexist->btc_read_4byte(btcoexist, 0x4c); + u32tmp |= BIT23; + u32tmp &= ~BIT24; + btcoexist->btc_write_4byte(btcoexist, 0x4c, u32tmp); + + if (board_info->btdm_ant_pos == + BTC_ANTENNA_AT_MAIN_PORT) { + /*Main Ant to WiFi for IPS case 0x4c[23]=1*/ + btcoexist->btc_write_1byte_bitmask(btcoexist, + 0x64, 0x1, + 0x0); + + /*tell firmware "no antenna inverse"*/ + h2c_parameter[0] = 0; + h2c_parameter[1] = 0; /*internal switch type*/ + btcoexist->btc_fill_h2c(btcoexist, 0x65, 2, + h2c_parameter); + } else { + /*Aux Ant to BT for IPS case 0x4c[23]=1*/ + btcoexist->btc_write_1byte_bitmask(btcoexist, + 0x64, 0x1, + 0x1); + + /*tell firmware "antenna inverse"*/ + h2c_parameter[0] = 1; + h2c_parameter[1] = 0; /*internal switch type*/ + btcoexist->btc_fill_h2c(btcoexist, 0x65, 2, + h2c_parameter); + } + } + + /* fixed external switch first*/ + /*Main->WiFi, Aux->BT*/ + if(board_info->btdm_ant_pos == BTC_ANTENNA_AT_MAIN_PORT) + btcoexist->btc_write_1byte_bitmask(btcoexist, 0x92c, + 0x3, 0x1); + else/*Main->BT, Aux->WiFi */ + btcoexist->btc_write_1byte_bitmask(btcoexist, 0x92c, + 0x3, 0x2); + + /* internal switch setting*/ + switch (ant_pos_type) { + case BTC_ANT_PATH_WIFI: + if(board_info->btdm_ant_pos == BTC_ANTENNA_AT_MAIN_PORT) + btcoexist->btc_write_2byte(btcoexist, 0x948, + 0x0); + else + btcoexist->btc_write_2byte(btcoexist, 0x948, + 0x280); + break; + case BTC_ANT_PATH_BT: + if(board_info->btdm_ant_pos == BTC_ANTENNA_AT_MAIN_PORT) + btcoexist->btc_write_2byte(btcoexist, 0x948, + 0x280); + else + btcoexist->btc_write_2byte(btcoexist, 0x948, + 0x0); + break; + default: + case BTC_ANT_PATH_PTA: + if(board_info->btdm_ant_pos == BTC_ANTENNA_AT_MAIN_PORT) + btcoexist->btc_write_2byte(btcoexist, 0x948, + 0x200); + else + btcoexist->btc_write_2byte(btcoexist, 0x948, + 0x80); + break; + } + } +} + +void halbtc8723b1ant_ps_tdma(struct btc_coexist *btcoexist, bool force_exec, + bool turn_on, u8 type) +{ + bool wifi_busy = false; + u8 rssi_adjust_val = 0; + + coex_dm->cur_ps_tdma_on = turn_on; + coex_dm->cur_ps_tdma = type; + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_BUSY, &wifi_busy); + + if (!force_exec) { + if (coex_dm->cur_ps_tdma_on) + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], ******** TDMA(on, %d) *********\n", + coex_dm->cur_ps_tdma); + else + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], ******** TDMA(off, %d) ********\n", + coex_dm->cur_ps_tdma); + + + if ((coex_dm->pre_ps_tdma_on == coex_dm->cur_ps_tdma_on) && + (coex_dm->pre_ps_tdma == coex_dm->cur_ps_tdma)) + return; + } + if (turn_on) { + switch (type) { + default: + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0x51, 0x1a, + 0x1a, 0x0, 0x50); + break; + case 1: + if (wifi_busy) + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0x51, + 0x3a, 0x03, + 0x10, 0x50); + else + halbtc8723b1ant_set_fw_ps_tdma(btcoexist,0x51, + 0x3a, 0x03, + 0x10, 0x51); + + rssi_adjust_val = 11; + break; + case 2: + if (wifi_busy) + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0x51, + 0x2b, 0x03, + 0x10, 0x50); + else + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0x51, + 0x2b, 0x03, + 0x10, 0x51); + rssi_adjust_val = 14; + break; + case 3: + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0x51, 0x1d, + 0x1d, 0x0, 0x52); + break; + case 4: + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0x93, 0x15, + 0x3, 0x14, 0x0); + rssi_adjust_val = 17; + break; + case 5: + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0x61, 0x15, + 0x3, 0x11, 0x10); + break; + case 6: + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0x61, 0x20, + 0x3, 0x11, 0x13); + break; + case 7: + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0x13, 0xc, + 0x5, 0x0, 0x0); + break; + case 8: + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0x93, 0x25, + 0x3, 0x10, 0x0); + break; + case 9: + if(wifi_busy) + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0x51, + 0x21, 0x3, + 0x10, 0x50); + else + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0x51, + 0x21, 0x3, + 0x10, 0x50); + rssi_adjust_val = 18; + break; + case 10: + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0x13, 0xa, + 0xa, 0x0, 0x40); + break; + case 11: + if (wifi_busy) + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0x51, + 0x15, 0x03, + 0x10, 0x50); + else + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0x51, + 0x15, 0x03, + 0x10, 0x50); + rssi_adjust_val = 20; + break; + case 12: + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0x51, 0x0a, + 0x0a, 0x0, 0x50); + break; + case 13: + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0x51, 0x15, + 0x15, 0x0, 0x50); + break; + case 14: + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0x51, 0x21, + 0x3, 0x10, 0x52); + break; + case 15: + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0x13, 0xa, + 0x3, 0x8, 0x0); + break; + case 16: + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0x93, 0x15, + 0x3, 0x10, 0x0); + rssi_adjust_val = 18; + break; + case 18: + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0x93, 0x25, + 0x3, 0x10, 0x0); + rssi_adjust_val = 14; + break; + case 20: + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0x61, 0x35, + 0x03, 0x11, 0x10); + break; + case 21: + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0x61, 0x15, + 0x03, 0x11, 0x10); + break; + case 22: + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0x61, 0x25, + 0x03, 0x11, 0x10); + break; + case 23: + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x25, + 0x3, 0x31, 0x18); + rssi_adjust_val = 22; + break; + case 24: + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x15, + 0x3, 0x31, 0x18); + rssi_adjust_val = 22; + break; + case 25: + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0xe3, 0xa, + 0x3, 0x31, 0x18); + rssi_adjust_val = 22; + break; + case 26: + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0xe3, 0xa, + 0x3, 0x31, 0x18); + rssi_adjust_val = 22; + break; + case 27: + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x25, + 0x3, 0x31, 0x98); + rssi_adjust_val = 22; + break; + case 28: + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0x69, 0x25, + 0x3, 0x31, 0x0); + break; + case 29: + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0xab, 0x1a, + 0x1a, 0x1, 0x10); + break; + case 30: + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0x51, 0x14, + 0x3, 0x10, 0x50); + break; + case 31: + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0xd3, 0x1a, + 0x1a, 0, 0x58); + break; + case 32: + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0x61, 0xa, + 0x3, 0x10, 0x0); + break; + case 33: + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0xa3, 0x25, + 0x3, 0x30, 0x90); + break; + case 34: + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0x53, 0x1a, + 0x1a, 0x0, 0x10); + break; + case 35: + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0x63, 0x1a, + 0x1a, 0x0, 0x10); + break; + case 36: + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0xd3, 0x12, + 0x3, 0x14, 0x50); + break; + /* SoftAP only with no sta associated,BT disable , + * TDMA mode for power saving + * here softap mode screen off will cost 70-80mA for phone */ + case 40: + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0x23, 0x18, + 0x00, 0x10, 0x24); + break; + } + } else { + switch (type) { + case 8: /*PTA Control */ + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0x8, 0x0, + 0x0, 0x0, 0x0); + halbtc8723b1ant_SetAntPath(btcoexist, BTC_ANT_PATH_PTA, + false, false); + break; + case 0: + default: /*Software control, Antenna at BT side */ + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0x0, 0x0, + 0x0, 0x0, 0x0); + halbtc8723b1ant_SetAntPath(btcoexist, BTC_ANT_PATH_BT, + false, false); + break; + case 9: /*Software control, Antenna at WiFi side */ + halbtc8723b1ant_set_fw_ps_tdma(btcoexist, 0x0, 0x0, + 0x0, 0x0, 0x0); + halbtc8723b1ant_SetAntPath(btcoexist, BTC_ANT_PATH_WIFI, + false, false); + break; + } + } + rssi_adjust_val = 0; + btcoexist->btc_set(btcoexist, + BTC_SET_U1_RSSI_ADJ_VAL_FOR_1ANT_COEX_TYPE, + &rssi_adjust_val); + + /* update pre state */ + coex_dm->pre_ps_tdma_on = coex_dm->cur_ps_tdma_on; + coex_dm->pre_ps_tdma = coex_dm->cur_ps_tdma; +} + +void halbtc8723b1ant_coex_alloff(struct btc_coexist *btcoexist) +{ + /* fw all off */ + halbtc8723b1ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6); + halbtc8723b1ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + /* sw all off */ + halbtc8723b1ant_sw_mechanism1(btcoexist, false, false, false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, false, 0x18); + + + /* hw all off */ + halbtc8723b1ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 0); +} + +bool halbtc8723b1ant_is_common_action(struct btc_coexist *btcoexist) +{ + bool commom = false, wifi_connected = false; + bool wifi_busy = false; + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_CONNECTED, + &wifi_connected); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_BUSY, &wifi_busy); + + if (!wifi_connected && + BT_8723B_1ANT_BT_STATUS_NON_CONNECTED_IDLE == coex_dm->bt_status) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Wifi non connected-idle + " + "BT non connected-idle!!\n"); + halbtc8723b1ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6); + halbtc8723b1ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + halbtc8723b1ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + + commom = true; + } else if (wifi_connected && + (BT_8723B_1ANT_BT_STATUS_NON_CONNECTED_IDLE == + coex_dm->bt_status)) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Wifi connected + " + "BT non connected-idle!!\n"); + halbtc8723b1ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6); + halbtc8723b1ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + halbtc8723b1ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + + commom = true; + } else if (!wifi_connected && + (BT_8723B_1ANT_BT_STATUS_CONNECTED_IDLE == + coex_dm->bt_status)) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Wifi non connected-idle + " + "BT connected-idle!!\n"); + halbtc8723b1ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6); + halbtc8723b1ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + halbtc8723b1ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + + commom = true; + } else if (wifi_connected && + (BT_8723B_1ANT_BT_STATUS_CONNECTED_IDLE == + coex_dm->bt_status)) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Wifi connected + BT connected-idle!!\n"); + halbtc8723b1ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6); + halbtc8723b1ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + halbtc8723b1ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + + commom = true; + } else if (!wifi_connected && + (BT_8723B_1ANT_BT_STATUS_CONNECTED_IDLE != + coex_dm->bt_status)) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + ("[BTCoex], Wifi non connected-idle + BT Busy!!\n")); + halbtc8723b1ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6); + halbtc8723b1ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + halbtc8723b1ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + + commom = true; + } else { + if (wifi_busy) + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Wifi Connected-Busy" + " + BT Busy!!\n"); + else + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Wifi Connected-Idle" + " + BT Busy!!\n"); + + commom = false; + } + + return commom; +} + + +void halbtc8723b1ant_tdma_duration_adjust_for_acl(struct btc_coexist *btcoexist, + u8 wifi_status) +{ + static s32 up, dn, m, n, wait_count; + /* 0: no change, +1: increase WiFi duration, + * -1: decrease WiFi duration */ + s32 result; + u8 retry_count = 0, bt_info_ext; + static bool pre_wifi_busy = false; + bool wifi_busy = false; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, + "[BTCoex], TdmaDurationAdjustForAcl()\n"); + + if (BT_8723B_1ANT_WIFI_STATUS_CONNECTED_BUSY == wifi_status) + wifi_busy = true; + else + wifi_busy = false; + + if ((BT_8723B_1ANT_WIFI_STATUS_NON_CONNECTED_ASSO_AUTH_SCAN == + wifi_status) || + (BT_8723B_1ANT_WIFI_STATUS_CONNECTED_SCAN == wifi_status) || + (BT_8723B_1ANT_WIFI_STATUS_CONNECTED_SPECIAL_PKT == wifi_status)) { + if (coex_dm->cur_ps_tdma != 1 && coex_dm->cur_ps_tdma != 2 && + coex_dm->cur_ps_tdma != 3 && coex_dm->cur_ps_tdma != 9) { + halbtc8723b1ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 9); + coex_dm->ps_tdma_du_adj_type = 9; + + up = 0; + dn = 0; + m = 1; + n = 3; + result = 0; + wait_count = 0; + } + return; + } + + if (!coex_dm->auto_tdma_adjust) { + coex_dm->auto_tdma_adjust = true; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], first run TdmaDurationAdjust()!!\n"); + + halbtc8723b1ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 2); + coex_dm->ps_tdma_du_adj_type = 2; + + up = 0; + dn = 0; + m = 1; + n = 3; + result = 0; + wait_count = 0; + } else { + /*accquire the BT TRx retry count from BT_Info byte2 */ + retry_count = coex_sta->bt_retry_cnt; + bt_info_ext = coex_sta->bt_info_ext; + result = 0; + wait_count++; + /* no retry in the last 2-second duration */ + if (retry_count == 0) { + up++; + dn--; + + if (dn <= 0) + dn = 0; + + if (up >= n) { + wait_count = 0; + n = 3; + up = 0; + dn = 0; + result = 1; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_TRACE_FW_DETAIL, + "[BTCoex], Increase wifi " + "duration!!\n"); + } + } else if (retry_count <= 3) { + up--; + dn++; + + if (up <= 0) + up = 0; + + if (dn == 2) { + if (wait_count <= 2) + m++; + else + m = 1; + + if (m >= 20) + m = 20; + + n = 3 * m; + up = 0; + dn = 0; + wait_count = 0; + result = -1; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_TRACE_FW_DETAIL, + "[BTCoex], Decrease wifi duration" + " for retryCounter<3!!\n"); + } + } else { + if (wait_count == 1) + m++; + else + m = 1; + + if (m >= 20) + m = 20; + + n = 3 * m; + up = 0; + dn = 0; + wait_count = 0; + result = -1; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], Decrease wifi duration" + " for retryCounter>3!!\n"); + } + + if (result == -1) { + if ((BT_INFO_8723B_1ANT_A2DP_BASIC_RATE(bt_info_ext)) && + ((coex_dm->cur_ps_tdma == 1) || + (coex_dm->cur_ps_tdma == 2))) { + halbtc8723b1ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 9); + coex_dm->ps_tdma_du_adj_type = 9; + } else if (coex_dm->cur_ps_tdma == 1) { + halbtc8723b1ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 2); + coex_dm->ps_tdma_du_adj_type = 2; + } else if (coex_dm->cur_ps_tdma == 2) { + halbtc8723b1ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 9); + coex_dm->ps_tdma_du_adj_type = 9; + } else if (coex_dm->cur_ps_tdma == 9) { + halbtc8723b1ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 11); + coex_dm->ps_tdma_du_adj_type = 11; + } + } else if(result == 1) { + if ((BT_INFO_8723B_1ANT_A2DP_BASIC_RATE(bt_info_ext)) && + ((coex_dm->cur_ps_tdma == 1) || + (coex_dm->cur_ps_tdma == 2))) { + halbtc8723b1ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 9); + coex_dm->ps_tdma_du_adj_type = 9; + } else if (coex_dm->cur_ps_tdma == 11) { + halbtc8723b1ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 9); + coex_dm->ps_tdma_du_adj_type = 9; + } else if (coex_dm->cur_ps_tdma == 9) { + halbtc8723b1ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 2); + coex_dm->ps_tdma_du_adj_type = 2; + } else if (coex_dm->cur_ps_tdma == 2) { + halbtc8723b1ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 1); + coex_dm->ps_tdma_du_adj_type = 1; + } + } else { /*no change */ + /*if busy / idle change */ + if (wifi_busy != pre_wifi_busy) { + pre_wifi_busy = wifi_busy; + halbtc8723b1ant_ps_tdma(btcoexist, FORCE_EXEC, + true, + coex_dm->cur_ps_tdma); + } + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex],********* TDMA(on, %d) ********\n", + coex_dm->cur_ps_tdma); + } + + if (coex_dm->cur_ps_tdma != 1 && coex_dm->cur_ps_tdma != 2 && + coex_dm->cur_ps_tdma != 9 && coex_dm->cur_ps_tdma != 11) { + /* recover to previous adjust type */ + halbtc8723b1ant_ps_tdma(btcoexist, NORMAL_EXEC, true, + coex_dm->ps_tdma_du_adj_type); + } + } +} + +u8 halbtc8723b1ant_ps_tdma_type_by_wifi_rssi(s32 wifi_rssi, s32 pre_wifi_rssi, + u8 wifi_rssi_thresh) +{ + u8 ps_tdma_type=0; + + if (wifi_rssi > pre_wifi_rssi) { + if (wifi_rssi > (wifi_rssi_thresh + 5)) + ps_tdma_type = 26; + else + ps_tdma_type = 25; + } else { + if (wifi_rssi > wifi_rssi_thresh) + ps_tdma_type = 26; + else + ps_tdma_type = 25; + } + + return ps_tdma_type; +} + +void halbtc8723b1ant_PsTdmaCheckForPowerSaveState(struct btc_coexist *btcoexist, + bool new_ps_state) +{ + u8 lps_mode = 0x0; + + btcoexist->btc_get(btcoexist, BTC_GET_U1_LPS_MODE, &lps_mode); + + if (lps_mode) { /* already under LPS state */ + if (new_ps_state) { + /* keep state under LPS, do nothing. */ + } else { + /* will leave LPS state, turn off psTdma first */ + halbtc8723b1ant_ps_tdma(btcoexist, NORMAL_EXEC, + false, 0); + } + } else { /* NO PS state */ + if (new_ps_state) { + /* will enter LPS state, turn off psTdma first */ + halbtc8723b1ant_ps_tdma(btcoexist, NORMAL_EXEC, + false, 0); + } else { + /* keep state under NO PS state, do nothing. */ + } + } +} + +void halbtc8723b1ant_power_save_state(struct btc_coexist *btcoexist, + u8 ps_type, u8 lps_val, + u8 rpwm_val) +{ + bool low_pwr_disable = false; + + switch (ps_type) { + case BTC_PS_WIFI_NATIVE: + /* recover to original 32k low power setting */ + low_pwr_disable = false; + btcoexist->btc_set(btcoexist, BTC_SET_ACT_DISABLE_LOW_POWER, + &low_pwr_disable); + btcoexist->btc_set(btcoexist, BTC_SET_ACT_NORMAL_LPS, NULL); + break; + case BTC_PS_LPS_ON: + halbtc8723b1ant_PsTdmaCheckForPowerSaveState(btcoexist, true); + halbtc8723b1ant_LpsRpwm(btcoexist, NORMAL_EXEC, lps_val, + rpwm_val); + /* when coex force to enter LPS, do not enter 32k low power. */ + low_pwr_disable = true; + btcoexist->btc_set(btcoexist, BTC_SET_ACT_DISABLE_LOW_POWER, + &low_pwr_disable); + /* power save must executed before psTdma. */ + btcoexist->btc_set(btcoexist, BTC_SET_ACT_ENTER_LPS, NULL); + break; + case BTC_PS_LPS_OFF: + halbtc8723b1ant_PsTdmaCheckForPowerSaveState(btcoexist, false); + btcoexist->btc_set(btcoexist, BTC_SET_ACT_LEAVE_LPS, NULL); + break; + default: + break; + } +} + +void halbtc8723b1ant_action_wifi_only(struct btc_coexist *btcoexist) +{ + halbtc8723b1ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 0); + halbtc8723b1ant_ps_tdma(btcoexist, NORMAL_EXEC, false, 9); +} + +void halbtc8723b1ant_monitor_bt_enable_disable(struct btc_coexist *btcoexist) +{ + static bool pre_bt_disabled = false; + static u32 bt_disable_cnt = 0; + bool bt_active = true, bt_disabled = false; + + /* This function check if bt is disabled */ + + if (coex_sta->high_priority_tx == 0 && + coex_sta->high_priority_rx == 0 && + coex_sta->low_priority_tx == 0 && + coex_sta->low_priority_rx == 0) + bt_active = false; + + if (coex_sta->high_priority_tx == 0xffff && + coex_sta->high_priority_rx == 0xffff && + coex_sta->low_priority_tx == 0xffff && + coex_sta->low_priority_rx == 0xffff) + bt_active = false; + + if (bt_active) { + bt_disable_cnt = 0; + bt_disabled = false; + btcoexist->btc_set(btcoexist, BTC_SET_BL_BT_DISABLE, + &bt_disabled); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, + "[BTCoex], BT is enabled !!\n"); + } else { + bt_disable_cnt++; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, + "[BTCoex], bt all counters=0, %d times!!\n", + bt_disable_cnt); + if (bt_disable_cnt >= 2) { + bt_disabled = true; + btcoexist->btc_set(btcoexist, BTC_SET_BL_BT_DISABLE, + &bt_disabled); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, + "[BTCoex], BT is disabled !!\n"); + halbtc8723b1ant_action_wifi_only(btcoexist); + } + } + if (pre_bt_disabled != bt_disabled) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, + "[BTCoex], BT is from %s to %s!!\n", + (pre_bt_disabled ? "disabled" : "enabled"), + (bt_disabled ? "disabled" : "enabled")); + pre_bt_disabled = bt_disabled; + if (!bt_disabled) { + } else { + btcoexist->btc_set(btcoexist, BTC_SET_ACT_LEAVE_LPS, + NULL); + btcoexist->btc_set(btcoexist, BTC_SET_ACT_NORMAL_LPS, + NULL); + } + } +} + +/*************************************************** + * + * Software Coex Mechanism start + * + ***************************************************/ +/* SCO only or SCO+PAN(HS) */ +void halbtc8723b1ant_action_sco(struct btc_coexist *btcoexist) +{ + u8 wifi_rssi_state; + u32 wifi_bw; + + wifi_rssi_state = + halbtc8723b1ant_wifi_rssi_state(btcoexist, 0, 2, 25, 0); + + halbtc8723b1ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 4); + + if (halbtc8723b1ant_need_to_dec_bt_pwr(btcoexist)) + halbtc8723b1ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + else + halbtc8723b1ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + + if (BTC_WIFI_BW_HT40 == wifi_bw) { + /* sw mechanism */ + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } else { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } else { + /* sw mechanism */ + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } else { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } +} + + +void halbtc8723b1ant_action_hid(struct btc_coexist *btcoexist) +{ + u8 wifi_rssi_state, bt_rssi_state; + u32 wifi_bw; + + wifi_rssi_state = halbtc8723b1ant_wifi_rssi_state(btcoexist, + 0, 2, 25, 0); + bt_rssi_state = halbtc8723b1ant_bt_rssi_state(2, 50, 0); + + halbtc8723b1ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6); + + if (halbtc8723b1ant_need_to_dec_bt_pwr(btcoexist)) + halbtc8723b1ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + else + halbtc8723b1ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + btcoexist->btc_get(btcoexist, + BTC_GET_U4_WIFI_BW, &wifi_bw); + + if (BTC_WIFI_BW_HT40 == wifi_bw) { + /* sw mechanism */ + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } else { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } else { + /* sw mechanism */ + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } else { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } +} + +/*A2DP only / PAN(EDR) only/ A2DP+PAN(HS) */ +void halbtc8723b1ant_action_a2dp(struct btc_coexist *btcoexist) +{ + u8 wifi_rssi_state, bt_rssi_state; + u32 wifi_bw; + + wifi_rssi_state = halbtc8723b1ant_wifi_rssi_state(btcoexist, + 0, 2, 25, 0); + bt_rssi_state = halbtc8723b1ant_bt_rssi_state(2, 50, 0); + + halbtc8723b1ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6); + + if (halbtc8723b1ant_need_to_dec_bt_pwr(btcoexist)) + halbtc8723b1ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + else + halbtc8723b1ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + + if (BTC_WIFI_BW_HT40 == wifi_bw) { + /* sw mechanism */ + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } else { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } else { + /* sw mechanism */ + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } else { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } +} + +void halbtc8723b1ant_action_a2dp_pan_hs(struct btc_coexist *btcoexist) +{ + u8 wifi_rssi_state, bt_rssi_state, bt_info_ext; + u32 wifi_bw; + + bt_info_ext = coex_sta->bt_info_ext; + wifi_rssi_state = halbtc8723b1ant_wifi_rssi_state(btcoexist, + 0, 2, 25, 0); + bt_rssi_state = halbtc8723b1ant_bt_rssi_state(2, 50, 0); + + halbtc8723b1ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6); + + if (halbtc8723b1ant_need_to_dec_bt_pwr(btcoexist)) + halbtc8723b1ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + else + halbtc8723b1ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + + if (BTC_WIFI_BW_HT40 == wifi_bw) { + /* sw mechanism */ + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } else { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } else { + /* sw mechanism */ + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } else { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } +} + +void halbtc8723b1ant_action_pan_edr(struct btc_coexist *btcoexist) +{ + u8 wifi_rssi_state, bt_rssi_state; + u32 wifi_bw; + + wifi_rssi_state = halbtc8723b1ant_wifi_rssi_state(btcoexist, + 0, 2, 25, 0); + bt_rssi_state = halbtc8723b1ant_bt_rssi_state(2, 50, 0); + + halbtc8723b1ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6); + + if (halbtc8723b1ant_need_to_dec_bt_pwr(btcoexist)) + halbtc8723b1ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + else + halbtc8723b1ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + + if (BTC_WIFI_BW_HT40 == wifi_bw) { + /* sw mechanism */ + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } else { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } else { + /* sw mechanism */ + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } else { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } +} + + +/* PAN(HS) only */ +void halbtc8723b1ant_action_pan_hs(struct btc_coexist *btcoexist) +{ + u8 wifi_rssi_state, bt_rssi_state; + u32 wifi_bw; + + wifi_rssi_state = halbtc8723b1ant_wifi_rssi_state(btcoexist, + 0, 2, 25, 0); + bt_rssi_state = halbtc8723b1ant_bt_rssi_state(2, 50, 0); + + halbtc8723b1ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + + if (BTC_WIFI_BW_HT40 == wifi_bw) { + /* fw mechanism */ + if((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) + halbtc8723b1ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, + false); + else + halbtc8723b1ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, + false); + + /* sw mechanism */ + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } else { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } else { + /* fw mechanism */ + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) + halbtc8723b1ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, + false); + else + halbtc8723b1ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, + false); + + /* sw mechanism */ + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } else { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } +} + +/*PAN(EDR)+A2DP */ +void halbtc8723b1ant_action_pan_edr_a2dp(struct btc_coexist *btcoexist) +{ + u8 wifi_rssi_state, bt_rssi_state, bt_info_ext; + u32 wifi_bw; + + bt_info_ext = coex_sta->bt_info_ext; + wifi_rssi_state = halbtc8723b1ant_wifi_rssi_state(btcoexist, + 0, 2, 25, 0); + bt_rssi_state = halbtc8723b1ant_bt_rssi_state(2, 50, 0); + + halbtc8723b1ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6); + + if (halbtc8723b1ant_need_to_dec_bt_pwr(btcoexist)) + halbtc8723b1ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + else + halbtc8723b1ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + btcoexist->btc_get(btcoexist, + BTC_GET_U4_WIFI_BW, &wifi_bw); + + if (BTC_WIFI_BW_HT40 == wifi_bw) { + /* sw mechanism */ + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } else { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } else { + /* sw mechanism */ + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } else { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } +} + +void halbtc8723b1ant_action_pan_edr_hid(struct btc_coexist *btcoexist) +{ + u8 wifi_rssi_state, bt_rssi_state; + u32 wifi_bw; + + wifi_rssi_state = halbtc8723b1ant_wifi_rssi_state(btcoexist, + 0, 2, 25, 0); + bt_rssi_state = halbtc8723b1ant_bt_rssi_state(2, 50, 0); + + halbtc8723b1ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6); + + if (halbtc8723b1ant_need_to_dec_bt_pwr(btcoexist)) + halbtc8723b1ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + else + halbtc8723b1ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + + if (BTC_WIFI_BW_HT40 == wifi_bw) { + /* sw mechanism */ + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } else { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } else { + /* sw mechanism */ + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } else { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } +} + +/* HID+A2DP+PAN(EDR) */ +void halbtc8723b1ant_action_hid_a2dp_pan_edr(struct btc_coexist *btcoexist) +{ + u8 wifi_rssi_state, bt_rssi_state, bt_info_ext; + u32 wifi_bw; + + bt_info_ext = coex_sta->bt_info_ext; + wifi_rssi_state = halbtc8723b1ant_wifi_rssi_state(btcoexist, + 0, 2, 25, 0); + bt_rssi_state = halbtc8723b1ant_bt_rssi_state(2, 50, 0); + + halbtc8723b1ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6); + + if (halbtc8723b1ant_need_to_dec_bt_pwr(btcoexist)) + halbtc8723b1ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + else + halbtc8723b1ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + + if (BTC_WIFI_BW_HT40 == wifi_bw) { + /* sw mechanism */ + if((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } else { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } else { + /* sw mechanism */ + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } else { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } +} + +void halbtc8723b1ant_action_hid_a2dp(struct btc_coexist *btcoexist) +{ + u8 wifi_rssi_state, bt_rssi_state, bt_info_ext; + u32 wifi_bw; + + bt_info_ext = coex_sta->bt_info_ext; + wifi_rssi_state = halbtc8723b1ant_wifi_rssi_state(btcoexist, + 0, 2, 25, 0); + bt_rssi_state = halbtc8723b1ant_bt_rssi_state(2, 50, 0); + + if (halbtc8723b1ant_need_to_dec_bt_pwr(btcoexist)) + halbtc8723b1ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + else + halbtc8723b1ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + + if (BTC_WIFI_BW_HT40 == wifi_bw) { + /* sw mechanism */ + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } else { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } else { + /* sw mechanism */ + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } else { + halbtc8723b1ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } +} + +/***************************************************** + * + * Non-Software Coex Mechanism start + * + *****************************************************/ +void halbtc8723b1ant_action_hs(struct btc_coexist *btcoexist) +{ + halbtc8723b1ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 5); + halbtc8723b1ant_coex_table_with_type(btcoexist, FORCE_EXEC, 2); +} + +void halbtc8723b1ant_action_bt_inquiry(struct btc_coexist *btcoexist) +{ + struct btc_bt_link_info *bt_link_info = &btcoexist->bt_link_info; + bool wifi_connected = false, ap_enable = false; + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_AP_MODE_ENABLE, + &ap_enable); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_CONNECTED, + &wifi_connected); + + if (!wifi_connected) { + halbtc8723b1ant_power_save_state(btcoexist, + BTC_PS_WIFI_NATIVE, 0x0, 0x0); + halbtc8723b1ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 5); + halbtc8723b1ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 1); + } else if (bt_link_info->sco_exist || bt_link_info->hid_only) { + /* SCO/HID-only busy */ + halbtc8723b1ant_power_save_state(btcoexist, BTC_PS_WIFI_NATIVE, + 0x0, 0x0); + halbtc8723b1ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 32); + halbtc8723b1ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 1); + } else { + if (ap_enable) + halbtc8723b1ant_power_save_state(btcoexist, + BTC_PS_WIFI_NATIVE, + 0x0, 0x0); + else + halbtc8723b1ant_power_save_state(btcoexist, + BTC_PS_LPS_ON, + 0x50, 0x4); + + halbtc8723b1ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 30); + halbtc8723b1ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 1); + } +} + +void halbtc8723b1ant_action_bt_sco_hid_only_busy(struct btc_coexist * btcoexist, + u8 wifi_status) +{ + struct btc_bt_link_info *bt_link_info = &btcoexist->bt_link_info; + bool wifi_connected = false; + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_CONNECTED, + &wifi_connected); + + /* tdma and coex table */ + + if (bt_link_info->sco_exist) { + halbtc8723b1ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 5); + halbtc8723b1ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 2); + } else { /* HID */ + halbtc8723b1ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 6); + halbtc8723b1ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 5); + } +} + +void halbtc8723b1ant_action_wifi_connected_bt_acl_busy( + struct btc_coexist *btcoexist, + u8 wifi_status) +{ + u8 bt_rssi_state; + + struct btc_bt_link_info *bt_link_info = &btcoexist->bt_link_info; + bt_rssi_state = halbtc8723b1ant_bt_rssi_state(2, 28, 0); + + if (bt_link_info->hid_only) { /*HID */ + halbtc8723b1ant_action_bt_sco_hid_only_busy(btcoexist, + wifi_status); + coex_dm->auto_tdma_adjust = false; + return; + } else if (bt_link_info->a2dp_only) { /*A2DP */ + if ((bt_rssi_state == BTC_RSSI_STATE_HIGH) || + (bt_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b1ant_tdma_duration_adjust_for_acl(btcoexist, + wifi_status); + } else { /*for low BT RSSI */ + halbtc8723b1ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 11); + coex_dm->auto_tdma_adjust = false; + } + + halbtc8723b1ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 1); + } else if (bt_link_info->hid_exist && + bt_link_info->a2dp_exist) { /*HID+A2DP */ + if ((bt_rssi_state == BTC_RSSI_STATE_HIGH) || + (bt_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b1ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 14); + coex_dm->auto_tdma_adjust = false; + } else { /*for low BT RSSI*/ + halbtc8723b1ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 14); + coex_dm->auto_tdma_adjust = false; + } + + halbtc8723b1ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 6); + /*PAN(OPP,FTP), HID+PAN(OPP,FTP) */ + } else if (bt_link_info->pan_only || + (bt_link_info->hid_exist && bt_link_info->pan_exist)) { + halbtc8723b1ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 3); + halbtc8723b1ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 6); + coex_dm->auto_tdma_adjust = false; + /*A2DP+PAN(OPP,FTP), HID+A2DP+PAN(OPP,FTP)*/ + } else if ((bt_link_info->a2dp_exist && bt_link_info->pan_exist) || + (bt_link_info->hid_exist && bt_link_info->a2dp_exist && + bt_link_info->pan_exist)) { + halbtc8723b1ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 13); + halbtc8723b1ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 1); + coex_dm->auto_tdma_adjust = false; + } else { + halbtc8723b1ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 11); + halbtc8723b1ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 1); + coex_dm->auto_tdma_adjust = false; + } +} + +void halbtc8723b1ant_action_wifi_not_connected(struct btc_coexist *btcoexist) +{ + /* power save state */ + halbtc8723b1ant_power_save_state(btcoexist, BTC_PS_WIFI_NATIVE, + 0x0, 0x0); + + /* tdma and coex table */ + halbtc8723b1ant_ps_tdma(btcoexist, NORMAL_EXEC, false, 8); + halbtc8723b1ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 0); +} + +void halbtc8723b1ant_action_wifi_not_connected_asso_auth_scan( + struct btc_coexist *btcoexist) +{ + halbtc8723b1ant_power_save_state(btcoexist, BTC_PS_WIFI_NATIVE, + 0x0, 0x0); + + halbtc8723b1ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 22); + halbtc8723b1ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 1); +} + +void halbtc8723b1ant_ActionWifiConnectedScan(struct btc_coexist *btcoexist) +{ + struct btc_bt_link_info *bt_link_info = &btcoexist->bt_link_info; + + halbtc8723b1ant_power_save_state(btcoexist, BTC_PS_WIFI_NATIVE, + 0x0, 0x0); + + /* tdma and coex table */ + if (BT_8723B_1ANT_BT_STATUS_ACL_BUSY == coex_dm->bt_status) { + if (bt_link_info->a2dp_exist && + bt_link_info->pan_exist) { + halbtc8723b1ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 22); + halbtc8723b1ant_coex_table_with_type(btcoexist, + NORMAL_EXEC, 1); + } else { + halbtc8723b1ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 20); + halbtc8723b1ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 1); + } + } else if ((BT_8723B_1ANT_BT_STATUS_SCO_BUSY == coex_dm->bt_status) || + (BT_8723B_1ANT_BT_STATUS_ACL_SCO_BUSY == + coex_dm->bt_status)) { + halbtc8723b1ant_action_bt_sco_hid_only_busy(btcoexist, + BT_8723B_1ANT_WIFI_STATUS_CONNECTED_SCAN); + } else { + halbtc8723b1ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 20); + halbtc8723b1ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 1); + } +} + +void halbtc8723b1ant_action_wifi_connected_special_packet( + struct btc_coexist *btcoexist) +{ + bool hs_connecting = false; + struct btc_bt_link_info *bt_link_info = &btcoexist->bt_link_info; + + btcoexist->btc_get(btcoexist, BTC_GET_BL_HS_CONNECTING, &hs_connecting); + + halbtc8723b1ant_power_save_state(btcoexist, BTC_PS_WIFI_NATIVE, + 0x0, 0x0); + + /* tdma and coex table */ + if (BT_8723B_1ANT_BT_STATUS_ACL_BUSY == coex_dm->bt_status) { + if (bt_link_info->a2dp_exist && bt_link_info->pan_exist) { + halbtc8723b1ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 22); + halbtc8723b1ant_coex_table_with_type(btcoexist, + NORMAL_EXEC, 1); + } else { + halbtc8723b1ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 20); + halbtc8723b1ant_coex_table_with_type(btcoexist, + NORMAL_EXEC, 1); + } + } else { + halbtc8723b1ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 20); + halbtc8723b1ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 1); + } +} + +void halbtc8723b1ant_action_wifi_connected(struct btc_coexist *btcoexist) +{ + bool wifi_busy = false; + bool scan = false, link = false, roam = false; + bool under_4way = false, ap_enable = false; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], CoexForWifiConnect()===>\n"); + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_4_WAY_PROGRESS, + &under_4way); + if (under_4way) { + halbtc8723b1ant_action_wifi_connected_special_packet(btcoexist); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], CoexForWifiConnect(), " + "return for wifi is under 4way<===\n"); + return; + } + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_SCAN, &scan); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_LINK, &link); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_ROAM, &roam); + + if (scan || link || roam) { + halbtc8723b1ant_ActionWifiConnectedScan(btcoexist); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], CoexForWifiConnect(), " + "return for wifi is under scan<===\n"); + return; + } + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_AP_MODE_ENABLE, + &ap_enable); + /* power save state */ + if (!ap_enable && + BT_8723B_1ANT_BT_STATUS_ACL_BUSY == coex_dm->bt_status && + !btcoexist->bt_link_info.hid_only) + halbtc8723b1ant_power_save_state(btcoexist, BTC_PS_LPS_ON, + 0x50, 0x4); + else + halbtc8723b1ant_power_save_state(btcoexist, BTC_PS_WIFI_NATIVE, + 0x0, 0x0); + + /* tdma and coex table */ + btcoexist->btc_get(btcoexist, + BTC_GET_BL_WIFI_BUSY, &wifi_busy); + if (!wifi_busy) { + if (BT_8723B_1ANT_BT_STATUS_ACL_BUSY == coex_dm->bt_status) { + halbtc8723b1ant_action_wifi_connected_bt_acl_busy(btcoexist, + BT_8723B_1ANT_WIFI_STATUS_CONNECTED_IDLE); + } else if ((BT_8723B_1ANT_BT_STATUS_SCO_BUSY == + coex_dm->bt_status) || + (BT_8723B_1ANT_BT_STATUS_ACL_SCO_BUSY == + coex_dm->bt_status)) { + halbtc8723b1ant_action_bt_sco_hid_only_busy(btcoexist, + BT_8723B_1ANT_WIFI_STATUS_CONNECTED_IDLE); + } else { + halbtc8723b1ant_ps_tdma(btcoexist, NORMAL_EXEC, + false, 8); + halbtc8723b1ant_coex_table_with_type(btcoexist, + NORMAL_EXEC, 2); + } + } else { + if (BT_8723B_1ANT_BT_STATUS_ACL_BUSY == coex_dm->bt_status) { + halbtc8723b1ant_action_wifi_connected_bt_acl_busy(btcoexist, + BT_8723B_1ANT_WIFI_STATUS_CONNECTED_BUSY); + } else if ((BT_8723B_1ANT_BT_STATUS_SCO_BUSY == + coex_dm->bt_status) || + (BT_8723B_1ANT_BT_STATUS_ACL_SCO_BUSY == + coex_dm->bt_status)) { + halbtc8723b1ant_action_bt_sco_hid_only_busy(btcoexist, + BT_8723B_1ANT_WIFI_STATUS_CONNECTED_BUSY); + } else { + halbtc8723b1ant_ps_tdma(btcoexist, NORMAL_EXEC, false, 8); + halbtc8723b1ant_coex_table_with_type(btcoexist, + NORMAL_EXEC, 2); + } + } +} + +void halbtc8723b1ant_run_sw_coexist_mechanism(struct btc_coexist *btcoexist) +{ + u8 algorithm = 0; + + algorithm = halbtc8723b1ant_action_algorithm(btcoexist); + coex_dm->cur_algorithm = algorithm; + + if (halbtc8723b1ant_is_common_action(btcoexist)) { + } else { + switch (coex_dm->cur_algorithm) { + case BT_8723B_1ANT_COEX_ALGO_SCO: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Action algorithm = SCO.\n"); + halbtc8723b1ant_action_sco(btcoexist); + break; + case BT_8723B_1ANT_COEX_ALGO_HID: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Action algorithm = HID.\n"); + halbtc8723b1ant_action_hid(btcoexist); + break; + case BT_8723B_1ANT_COEX_ALGO_A2DP: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Action algorithm = A2DP.\n"); + halbtc8723b1ant_action_a2dp(btcoexist); + break; + case BT_8723B_1ANT_COEX_ALGO_A2DP_PANHS: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Action algorithm = " + "A2DP+PAN(HS).\n"); + halbtc8723b1ant_action_a2dp_pan_hs(btcoexist); + break; + case BT_8723B_1ANT_COEX_ALGO_PANEDR: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Action algorithm = PAN(EDR).\n"); + halbtc8723b1ant_action_pan_edr(btcoexist); + break; + case BT_8723B_1ANT_COEX_ALGO_PANHS: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Action algorithm = HS mode.\n"); + halbtc8723b1ant_action_pan_hs(btcoexist); + break; + case BT_8723B_1ANT_COEX_ALGO_PANEDR_A2DP: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Action algorithm = PAN+A2DP.\n"); + halbtc8723b1ant_action_pan_edr_a2dp(btcoexist); + break; + case BT_8723B_1ANT_COEX_ALGO_PANEDR_HID: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Action algorithm = " + "PAN(EDR)+HID.\n"); + halbtc8723b1ant_action_pan_edr_hid(btcoexist); + break; + case BT_8723B_1ANT_COEX_ALGO_HID_A2DP_PANEDR: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Action algorithm = " + "HID+A2DP+PAN.\n"); + halbtc8723b1ant_action_hid_a2dp_pan_edr(btcoexist); + break; + case BT_8723B_1ANT_COEX_ALGO_HID_A2DP: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Action algorithm = HID+A2DP.\n"); + halbtc8723b1ant_action_hid_a2dp(btcoexist); + break; + default: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Action algorithm = " + "coexist All Off!!\n"); + break; + } + coex_dm->pre_algorithm = coex_dm->cur_algorithm; + } +} + +void halbtc8723b1ant_run_coexist_mechanism(struct btc_coexist *btcoexist) +{ + struct btc_bt_link_info *bt_link_info = &btcoexist->bt_link_info; + bool wifi_connected = false, bt_hs_on = false; + bool limited_dig = false, bIncreaseScanDevNum = false; + bool b_bt_ctrl_agg_buf_size = false; + u8 agg_buf_size = 5; + u8 wifi_rssi_state = BTC_RSSI_STATE_HIGH; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], RunCoexistMechanism()===>\n"); + + if (btcoexist->manual_control) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], RunCoexistMechanism(), " + "return for Manual CTRL <===\n"); + return; + } + + if (btcoexist->stop_coex_dm) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], RunCoexistMechanism(), " + "return for Stop Coex DM <===\n"); + return; + } + + if (coex_sta->under_ips) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], wifi is under IPS !!!\n"); + return; + } + + if ((BT_8723B_1ANT_BT_STATUS_ACL_BUSY == coex_dm->bt_status) || + (BT_8723B_1ANT_BT_STATUS_SCO_BUSY == coex_dm->bt_status) || + (BT_8723B_1ANT_BT_STATUS_ACL_SCO_BUSY == coex_dm->bt_status)) { + limited_dig = true; + bIncreaseScanDevNum = true; + } + + btcoexist->btc_set(btcoexist, BTC_SET_BL_BT_LIMITED_DIG, &limited_dig); + btcoexist->btc_set(btcoexist, BTC_SET_BL_INC_SCAN_DEV_NUM, + &bIncreaseScanDevNum); + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_CONNECTED, + &wifi_connected); + + if (!bt_link_info->sco_exist && !bt_link_info->hid_exist) { + halbtc8723b1ant_limited_tx(btcoexist, NORMAL_EXEC, 0, 0, 0, 0); + } else { + if (wifi_connected) { + wifi_rssi_state = + halbtc8723b1ant_wifi_rssi_state(btcoexist, + 1, 2, 30, 0); + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b1ant_limited_tx(btcoexist, + NORMAL_EXEC, + 1, 1, 1, 1); + } else { + halbtc8723b1ant_limited_tx(btcoexist, + NORMAL_EXEC, + 1, 1, 1, 1); + } + } else { + halbtc8723b1ant_limited_tx(btcoexist, NORMAL_EXEC, + 0, 0, 0, 0); + } + } + + if (bt_link_info->sco_exist) { + b_bt_ctrl_agg_buf_size = true; + agg_buf_size = 0x3; + } else if (bt_link_info->hid_exist) { + b_bt_ctrl_agg_buf_size = true; + agg_buf_size = 0x5; + } else if (bt_link_info->a2dp_exist || bt_link_info->pan_exist) { + b_bt_ctrl_agg_buf_size = true; + agg_buf_size = 0x8; + } + halbtc8723b1ant_limited_rx(btcoexist, NORMAL_EXEC, false, + b_bt_ctrl_agg_buf_size, agg_buf_size); + + halbtc8723b1ant_run_sw_coexist_mechanism(btcoexist); + + btcoexist->btc_get(btcoexist, BTC_GET_BL_HS_OPERATION, &bt_hs_on); + + if (coex_sta->c2h_bt_inquiry_page) { + halbtc8723b1ant_action_bt_inquiry(btcoexist); + return; + } else if (bt_hs_on) { + halbtc8723b1ant_action_hs(btcoexist); + return; + } + + + if (!wifi_connected) { + bool scan = false, link = false, roam = false; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], wifi is non connected-idle !!!\n"); + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_SCAN, &scan); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_LINK, &link); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_ROAM, &roam); + + if (scan || link || roam) + halbtc8723b1ant_action_wifi_not_connected_asso_auth_scan(btcoexist); + else + halbtc8723b1ant_action_wifi_not_connected(btcoexist); + } else { /* wifi LPS/Busy */ + halbtc8723b1ant_action_wifi_connected(btcoexist); + } +} + +void halbtc8723b1ant_init_coex_dm(struct btc_coexist *btcoexist) +{ + /* force to reset coex mechanism */ + halbtc8723b1ant_fw_dac_swing_lvl(btcoexist, FORCE_EXEC, 6); + halbtc8723b1ant_dec_bt_pwr(btcoexist, FORCE_EXEC, false); + + /* sw all off */ + halbtc8723b1ant_sw_mechanism1(btcoexist, false, false, false, false); + halbtc8723b1ant_sw_mechanism2(btcoexist,false, false, false, 0x18); + + halbtc8723b1ant_ps_tdma(btcoexist, FORCE_EXEC, false, 8); + halbtc8723b1ant_coex_table_with_type(btcoexist, FORCE_EXEC, 0); +} + +void halbtc8723b1ant_init_hw_config(struct btc_coexist *btcoexist, bool backup) +{ + u32 u32tmp = 0; + u8 u8tmp = 0; + u32 cnt_bt_cal_chk = 0; + + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, + "[BTCoex], 1Ant Init HW Config!!\n"); + + if (backup) {/* backup rf 0x1e value */ + coex_dm->bt_rf0x1e_backup = + btcoexist->btc_get_rf_reg(btcoexist, + BTC_RF_A, 0x1e, 0xfffff); + + coex_dm->backup_arfr_cnt1 = + btcoexist->btc_read_4byte(btcoexist, 0x430); + coex_dm->backup_arfr_cnt2 = + btcoexist->btc_read_4byte(btcoexist, 0x434); + coex_dm->backup_retry_limit = + btcoexist->btc_read_2byte(btcoexist, 0x42a); + coex_dm->backup_ampdu_max_time = + btcoexist->btc_read_1byte(btcoexist, 0x456); + } + + /* WiFi goto standby while GNT_BT 0-->1 */ + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, 0xfffff, 0x780); + /* BT goto standby while GNT_BT 1-->0 */ + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x2, 0xfffff, 0x500); + + btcoexist->btc_write_1byte(btcoexist, 0x974, 0xff); + btcoexist->btc_write_1byte_bitmask(btcoexist, 0x944, 0x3, 0x3); + btcoexist->btc_write_1byte(btcoexist, 0x930, 0x77); + + + /* BT calibration check */ + while (cnt_bt_cal_chk <= 20) { + u32tmp = btcoexist->btc_read_4byte(btcoexist, 0x49d); + cnt_bt_cal_chk++; + if (u32tmp & BIT0) { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, + "[BTCoex], ########### BT " + "calibration(cnt=%d) ###########\n", + cnt_bt_cal_chk); + mdelay(50); + } else { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, + "[BTCoex], ********** BT NOT " + "calibration (cnt=%d)**********\n", + cnt_bt_cal_chk); + break; + } + } + + /* 0x790[5:0]=0x5 */ + u8tmp = btcoexist->btc_read_1byte(btcoexist, 0x790); + u8tmp &= 0xc0; + u8tmp |= 0x5; + btcoexist->btc_write_1byte(btcoexist, 0x790, u8tmp); + + /* Enable counter statistics */ + /*0x76e[3] =1, WLAN_Act control by PTA */ + btcoexist->btc_write_1byte(btcoexist, 0x76e, 0xc); + btcoexist->btc_write_1byte(btcoexist, 0x778, 0x1); + btcoexist->btc_write_1byte_bitmask(btcoexist, 0x40, 0x20, 0x1); + + /*Antenna config */ + halbtc8723b1ant_SetAntPath(btcoexist, BTC_ANT_PATH_PTA, true, false); + /* PTA parameter */ + halbtc8723b1ant_coex_table_with_type(btcoexist, FORCE_EXEC, 0); + +} + +void halbtc8723b1ant_wifi_off_hw_cfg(struct btc_coexist *btcoexist) +{ + /* set wlan_act to low */ + btcoexist->btc_write_1byte(btcoexist, 0x76e, 0); +} + +/************************************************************** + * work around function start with wa_halbtc8723b1ant_ + **************************************************************/ +/************************************************************** + * extern function start with EXhalbtc8723b1ant_ + **************************************************************/ + +void ex_halbtc8723b1ant_init_hwconfig(struct btc_coexist *btcoexist) +{ + halbtc8723b1ant_init_hw_config(btcoexist, true); +} + +void ex_halbtc8723b1ant_init_coex_dm(struct btc_coexist *btcoexist) +{ + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, + "[BTCoex], Coex Mechanism Init!!\n"); + + btcoexist->stop_coex_dm = false; + + halbtc8723b1ant_init_coex_dm(btcoexist); + + halbtc8723b1ant_query_bt_info(btcoexist); +} + +void ex_halbtc8723b1ant_display_coex_info(struct btc_coexist *btcoexist) +{ + struct btc_board_info *board_info = &btcoexist->board_info; + struct btc_stack_info *stack_info = &btcoexist->stack_info; + struct btc_bt_link_info *bt_link_info = &btcoexist->bt_link_info; + u8 *cli_buf = btcoexist->cli_buf; + u8 u8tmp[4], i, bt_info_ext, psTdmaCase=0; + u16 u16tmp[4]; + u32 u32tmp[4]; + bool roam = false, scan = false; + bool link = false, wifi_under_5g = false; + bool bt_hs_on = false, wifi_busy = false; + s32 wifi_rssi =0, bt_hs_rssi = 0; + u32 wifi_bw, wifi_traffic_dir, fa_ofdm, fa_cck; + u8 wifi_dot11_chnl, wifi_hs_chnl; + u32 fw_ver = 0, bt_patch_ver = 0; + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, + "\r\n ============[BT Coexist info]============"); + CL_PRINTF(cli_buf); + + if (btcoexist->manual_control) { + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, + "\r\n ============[Under Manual Control]=========="); + CL_PRINTF(cli_buf); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, + "\r\n =========================================="); + CL_PRINTF(cli_buf); + } + if (btcoexist->stop_coex_dm) { + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, + "\r\n ============[Coex is STOPPED]============"); + CL_PRINTF(cli_buf); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, + "\r\n =========================================="); + CL_PRINTF(cli_buf); + } + + if (!board_info->bt_exist) { + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n BT not exists !!!"); + CL_PRINTF(cli_buf); + return; + } + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d/ %d", + "Ant PG Num/ Ant Mech/ Ant Pos:", \ + board_info->pg_ant_num, board_info->btdm_ant_num, + board_info->btdm_ant_pos); + CL_PRINTF(cli_buf); + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %s / %d", + "BT stack/ hci ext ver", \ + ((stack_info->profile_notified)? "Yes":"No"), + stack_info->hci_version); + CL_PRINTF(cli_buf); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_BT_PATCH_VER, &bt_patch_ver); + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_FW_VER, &fw_ver); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, + "\r\n %-35s = %d_%x/ 0x%x/ 0x%x(%d)", + "CoexVer/ FwVer/ PatchVer", \ + glcoex_ver_date_8723b_1ant, glcoex_ver_8723b_1ant, + fw_ver, bt_patch_ver, bt_patch_ver); + CL_PRINTF(cli_buf); + + btcoexist->btc_get(btcoexist, BTC_GET_BL_HS_OPERATION, &bt_hs_on); + btcoexist->btc_get(btcoexist, BTC_GET_U1_WIFI_DOT11_CHNL, + &wifi_dot11_chnl); + btcoexist->btc_get(btcoexist, BTC_GET_U1_WIFI_HS_CHNL, &wifi_hs_chnl); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d / %d(%d)", + "Dot11 channel / HsChnl(HsMode)", \ + wifi_dot11_chnl, wifi_hs_chnl, bt_hs_on); + CL_PRINTF(cli_buf); + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %02x %02x %02x ", + "H2C Wifi inform bt chnl Info", \ + coex_dm->wifi_chnl_info[0], coex_dm->wifi_chnl_info[1], + coex_dm->wifi_chnl_info[2]); + CL_PRINTF(cli_buf); + + btcoexist->btc_get(btcoexist, BTC_GET_S4_WIFI_RSSI, &wifi_rssi); + btcoexist->btc_get(btcoexist, BTC_GET_S4_HS_RSSI, &bt_hs_rssi); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d", + "Wifi rssi/ HS rssi", wifi_rssi, bt_hs_rssi); + CL_PRINTF(cli_buf); + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_SCAN, &scan); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_LINK, &link); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_ROAM, &roam); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d/ %d ", + "Wifi link/ roam/ scan", link, roam, scan); + CL_PRINTF(cli_buf); + + btcoexist->btc_get(btcoexist,BTC_GET_BL_WIFI_UNDER_5G, + &wifi_under_5g); + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_BUSY, &wifi_busy); + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_TRAFFIC_DIRECTION, + &wifi_traffic_dir); + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %s / %s/ %s ", + "Wifi status", (wifi_under_5g? "5G":"2.4G"), + ((BTC_WIFI_BW_LEGACY==wifi_bw)? "Legacy": + (((BTC_WIFI_BW_HT40==wifi_bw)? "HT40":"HT20"))), + ((!wifi_busy)? "idle": + ((BTC_WIFI_TRAFFIC_TX==wifi_traffic_dir)? + "uplink":"downlink"))); + CL_PRINTF(cli_buf); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = [%s/ %d/ %d] ", + "BT [status/ rssi/ retryCnt]", + ((btcoexist->bt_info.bt_disabled)? ("disabled"): + ((coex_sta->c2h_bt_inquiry_page)?("inquiry/page scan"): + ((BT_8723B_1ANT_BT_STATUS_NON_CONNECTED_IDLE == coex_dm->bt_status)? + "non-connected idle": + ((BT_8723B_1ANT_BT_STATUS_CONNECTED_IDLE == coex_dm->bt_status)? + "connected-idle":"busy")))), + coex_sta->bt_rssi, coex_sta->bt_retry_cnt); + CL_PRINTF(cli_buf); + + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d / %d / %d / %d", + "SCO/HID/PAN/A2DP", bt_link_info->sco_exist, + bt_link_info->hid_exist, bt_link_info->pan_exist, + bt_link_info->a2dp_exist); + CL_PRINTF(cli_buf); + btcoexist->btc_disp_dbg_msg(btcoexist, BTC_DBG_DISP_BT_LINK_INFO); + + bt_info_ext = coex_sta->bt_info_ext; + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %s", + "BT Info A2DP rate", + (bt_info_ext & BIT0) ? "Basic rate" : "EDR rate"); + CL_PRINTF(cli_buf); + + for (i = 0; i < BT_INFO_SRC_8723B_1ANT_MAX; i++) { + if (coex_sta->bt_info_c2h_cnt[i]) { + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, + "\r\n %-35s = %02x %02x %02x " + "%02x %02x %02x %02x(%d)", + GLBtInfoSrc8723b1Ant[i], + coex_sta->bt_info_c2h[i][0], + coex_sta->bt_info_c2h[i][1], + coex_sta->bt_info_c2h[i][2], + coex_sta->bt_info_c2h[i][3], + coex_sta->bt_info_c2h[i][4], + coex_sta->bt_info_c2h[i][5], + coex_sta->bt_info_c2h[i][6], + coex_sta->bt_info_c2h_cnt[i]); + CL_PRINTF(cli_buf); + } + } + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, + "\r\n %-35s = %s/%s, (0x%x/0x%x)", + "PS state, IPS/LPS, (lps/rpwm)", \ + ((coex_sta->under_ips? "IPS ON":"IPS OFF")), + ((coex_sta->under_lps? "LPS ON":"LPS OFF")), + btcoexist->bt_info.lps_1ant, + btcoexist->bt_info.rpwm_1ant); + CL_PRINTF(cli_buf); + btcoexist->btc_disp_dbg_msg(btcoexist, BTC_DBG_DISP_FW_PWR_MODE_CMD); + + if (!btcoexist->manual_control) { + /* Sw mechanism */ + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s", + "============[Sw mechanism]============"); + CL_PRINTF(cli_buf); + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d/ %d ", + "SM1[ShRf/ LpRA/ LimDig]", \ + coex_dm->cur_rf_rx_lpf_shrink, + coex_dm->cur_low_penalty_ra, + btcoexist->bt_info.limited_dig); + CL_PRINTF(cli_buf); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, + "\r\n %-35s = %d/ %d/ %d(0x%x) ", + "SM2[AgcT/ AdcB/ SwDacSwing(lvl)]", \ + coex_dm->cur_agc_table_en, + coex_dm->cur_adc_backoff, + coex_dm->cur_dac_swing_on, + coex_dm->cur_dac_swing_lvl); + CL_PRINTF(cli_buf); + + + CL_PRINTF(cli_buf); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x ", + "Rate Mask", btcoexist->bt_info.ra_mask); + CL_PRINTF(cli_buf); + + /* Fw mechanism */ + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s", + "============[Fw mechanism]============"); + CL_PRINTF(cli_buf); + + psTdmaCase = coex_dm->cur_ps_tdma; + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, + "\r\n %-35s = %02x %02x %02x %02x %02x " + "case-%d (auto:%d)", + "PS TDMA", coex_dm->ps_tdma_para[0], + coex_dm->ps_tdma_para[1], coex_dm->ps_tdma_para[2], + coex_dm->ps_tdma_para[3], coex_dm->ps_tdma_para[4], + psTdmaCase, coex_dm->auto_tdma_adjust); + CL_PRINTF(cli_buf); + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x ", + "Latest error condition(should be 0)", \ + coex_dm->error_condition); + CL_PRINTF(cli_buf); + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d ", + "DecBtPwr/ IgnWlanAct", coex_dm->cur_dec_bt_pwr, + coex_dm->cur_ignore_wlan_act); + CL_PRINTF(cli_buf); + } + + /* Hw setting */ + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s", + "============[Hw setting]============"); + CL_PRINTF(cli_buf); + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x", + "RF-A, 0x1e initVal", coex_dm->bt_rf0x1e_backup); + CL_PRINTF(cli_buf); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/0x%x/0x%x/0x%x", + "backup ARFR1/ARFR2/RL/AMaxTime", coex_dm->backup_arfr_cnt1, + coex_dm->backup_arfr_cnt2, coex_dm->backup_retry_limit, + coex_dm->backup_ampdu_max_time); + CL_PRINTF(cli_buf); + + u32tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0x430); + u32tmp[1] = btcoexist->btc_read_4byte(btcoexist, 0x434); + u16tmp[0] = btcoexist->btc_read_2byte(btcoexist, 0x42a); + u8tmp[0] = btcoexist->btc_read_1byte(btcoexist, 0x456); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/0x%x/0x%x/0x%x", + "0x430/0x434/0x42a/0x456", + u32tmp[0], u32tmp[1], u16tmp[0], u8tmp[0]); + CL_PRINTF(cli_buf); + + u8tmp[0] = btcoexist->btc_read_1byte(btcoexist, 0x778); + u32tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0x6cc); + u32tmp[1] = btcoexist->btc_read_4byte(btcoexist, 0x880); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x/ 0x%x", + "0x778/0x6cc/0x880[29:25]", u8tmp[0], u32tmp[0], + (u32tmp[1] & 0x3e000000) >> 25); + CL_PRINTF(cli_buf); + + u32tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0x948); + u8tmp[0] = btcoexist->btc_read_1byte(btcoexist, 0x67); + u8tmp[1] = btcoexist->btc_read_1byte(btcoexist, 0x765); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x/ 0x%x", + "0x948/ 0x67[5] / 0x765", + u32tmp[0], ((u8tmp[0] & 0x20)>> 5), u8tmp[1]); + CL_PRINTF(cli_buf); + + u32tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0x92c); + u32tmp[1] = btcoexist->btc_read_4byte(btcoexist, 0x930); + u32tmp[2] = btcoexist->btc_read_4byte(btcoexist, 0x944); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x/ 0x%x", + "0x92c[1:0]/ 0x930[7:0]/0x944[1:0]", + u32tmp[0] & 0x3, u32tmp[1] & 0xff, u32tmp[2] & 0x3); + CL_PRINTF(cli_buf); + + u8tmp[0] = btcoexist->btc_read_1byte(btcoexist, 0x39); + u8tmp[1] = btcoexist->btc_read_1byte(btcoexist, 0x40); + u32tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0x4c); + u8tmp[2] = btcoexist->btc_read_1byte(btcoexist, 0x64); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, + "\r\n %-35s = 0x%x/ 0x%x/ 0x%x/ 0x%x", + "0x38[11]/0x40/0x4c[24:23]/0x64[0]", + ((u8tmp[0] & 0x8)>>3), u8tmp[1], + ((u32tmp[0] & 0x01800000) >> 23), u8tmp[2] & 0x1); + CL_PRINTF(cli_buf); + + u32tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0x550); + u8tmp[0] = btcoexist->btc_read_1byte(btcoexist, 0x522); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x", + "0x550(bcn ctrl)/0x522", u32tmp[0], u8tmp[0]); + CL_PRINTF(cli_buf); + + u32tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0xc50); + u8tmp[0] = btcoexist->btc_read_1byte(btcoexist, 0x49c); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x", + "0xc50(dig)/0x49c(null-drop)", u32tmp[0] & 0xff, u8tmp[0]); + CL_PRINTF(cli_buf); + + u32tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0xda0); + u32tmp[1] = btcoexist->btc_read_4byte(btcoexist, 0xda4); + u32tmp[2] = btcoexist->btc_read_4byte(btcoexist, 0xda8); + u32tmp[3] = btcoexist->btc_read_4byte(btcoexist, 0xcf0); + + u8tmp[0] = btcoexist->btc_read_1byte(btcoexist, 0xa5b); + u8tmp[1] = btcoexist->btc_read_1byte(btcoexist, 0xa5c); + + fa_ofdm = ((u32tmp[0] & 0xffff0000) >> 16) + + ((u32tmp[1] & 0xffff0000) >> 16) + + (u32tmp[1] & 0xffff) + + (u32tmp[2] & 0xffff) + \ + ((u32tmp[3] & 0xffff0000) >> 16) + + (u32tmp[3] & 0xffff) ; + fa_cck = (u8tmp[0] << 8) + u8tmp[1]; + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x/ 0x%x", + "OFDM-CCA/OFDM-FA/CCK-FA", + u32tmp[0] & 0xffff, fa_ofdm, fa_cck); + CL_PRINTF(cli_buf); + + u32tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0x6c0); + u32tmp[1] = btcoexist->btc_read_4byte(btcoexist, 0x6c4); + u32tmp[2] = btcoexist->btc_read_4byte(btcoexist, 0x6c8); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x/ 0x%x", + "0x6c0/0x6c4/0x6c8(coexTable)", + u32tmp[0], u32tmp[1], u32tmp[2]); + CL_PRINTF(cli_buf); + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d", + "0x770(high-pri rx/tx)", coex_sta->high_priority_rx, + coex_sta->high_priority_tx); + CL_PRINTF(cli_buf); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d", + "0x774(low-pri rx/tx)", coex_sta->low_priority_rx, + coex_sta->low_priority_tx); + CL_PRINTF(cli_buf); +#if(BT_AUTO_REPORT_ONLY_8723B_1ANT == 1) + halbtc8723b1ant_monitor_bt_ctr(btcoexist); +#endif + btcoexist->btc_disp_dbg_msg(btcoexist, BTC_DBG_DISP_COEX_STATISTICS); +} + + +void ex_halbtc8723b1ant_ips_notify(struct btc_coexist *btcoexist, u8 type) +{ + + if (btcoexist->manual_control || btcoexist->stop_coex_dm) + return; + + if (BTC_IPS_ENTER == type) { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], IPS ENTER notify\n"); + coex_sta->under_ips = true; + + halbtc8723b1ant_SetAntPath(btcoexist, BTC_ANT_PATH_BT, + false, true); + /* set PTA control */ + halbtc8723b1ant_ps_tdma(btcoexist, NORMAL_EXEC, false, 0); + halbtc8723b1ant_coex_table_with_type(btcoexist, + NORMAL_EXEC, 0); + } else if (BTC_IPS_LEAVE == type) { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], IPS LEAVE notify\n"); + coex_sta->under_ips = false; + + halbtc8723b1ant_run_coexist_mechanism(btcoexist); + } +} + +void ex_halbtc8723b1ant_lps_notify(struct btc_coexist *btcoexist, u8 type) +{ + if (btcoexist->manual_control || btcoexist->stop_coex_dm) + return; + + if (BTC_LPS_ENABLE == type) { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], LPS ENABLE notify\n"); + coex_sta->under_lps = true; + } else if (BTC_LPS_DISABLE == type) { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], LPS DISABLE notify\n"); + coex_sta->under_lps = false; + } +} + +void ex_halbtc8723b1ant_scan_notify(struct btc_coexist *btcoexist, u8 type) +{ + bool wifi_connected = false, bt_hs_on = false; + + if (btcoexist->manual_control || btcoexist->stop_coex_dm || + btcoexist->bt_info.bt_disabled) + return; + + btcoexist->btc_get(btcoexist, BTC_GET_BL_HS_OPERATION, &bt_hs_on); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_CONNECTED, + &wifi_connected); + + halbtc8723b1ant_query_bt_info(btcoexist); + + if (coex_sta->c2h_bt_inquiry_page) { + halbtc8723b1ant_action_bt_inquiry(btcoexist); + return; + } else if (bt_hs_on) { + halbtc8723b1ant_action_hs(btcoexist); + return; + } + + if (BTC_SCAN_START == type) { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], SCAN START notify\n"); + if (!wifi_connected) /* non-connected scan */ + halbtc8723b1ant_action_wifi_not_connected_asso_auth_scan(btcoexist); + else /* wifi is connected */ + halbtc8723b1ant_ActionWifiConnectedScan(btcoexist); + } else if (BTC_SCAN_FINISH == type) { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], SCAN FINISH notify\n"); + if (!wifi_connected) /* non-connected scan */ + halbtc8723b1ant_action_wifi_not_connected(btcoexist); + else + halbtc8723b1ant_action_wifi_connected(btcoexist); + } +} + +void ex_halbtc8723b1ant_connect_notify(struct btc_coexist *btcoexist, u8 type) +{ + bool wifi_connected = false, bt_hs_on = false; + + if (btcoexist->manual_control || btcoexist->stop_coex_dm || + btcoexist->bt_info.bt_disabled) + return; + + btcoexist->btc_get(btcoexist, BTC_GET_BL_HS_OPERATION, &bt_hs_on); + if (coex_sta->c2h_bt_inquiry_page) { + halbtc8723b1ant_action_bt_inquiry(btcoexist); + return; + } else if (bt_hs_on) { + halbtc8723b1ant_action_hs(btcoexist); + return; + } + + if (BTC_ASSOCIATE_START == type) { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], CONNECT START notify\n"); + halbtc8723b1ant_action_wifi_not_connected_asso_auth_scan(btcoexist); + } else if (BTC_ASSOCIATE_FINISH == type) { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], CONNECT FINISH notify\n"); + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_CONNECTED, + &wifi_connected); + if (!wifi_connected) /* non-connected scan */ + halbtc8723b1ant_action_wifi_not_connected(btcoexist); + else + halbtc8723b1ant_action_wifi_connected(btcoexist); + } +} + +void ex_halbtc8723b1ant_media_status_notify(struct btc_coexist *btcoexist, + u8 type) +{ + u8 h2c_parameter[3] ={0}; + u32 wifi_bw; + u8 wifiCentralChnl; + + if (btcoexist->manual_control || btcoexist->stop_coex_dm || + btcoexist->bt_info.bt_disabled ) + return; + + if (BTC_MEDIA_CONNECT == type) + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], MEDIA connect notify\n"); + else + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], MEDIA disconnect notify\n"); + + /* only 2.4G we need to inform bt the chnl mask */ + btcoexist->btc_get(btcoexist, BTC_GET_U1_WIFI_CENTRAL_CHNL, + &wifiCentralChnl); + + if ((BTC_MEDIA_CONNECT == type) && + (wifiCentralChnl <= 14)) { + h2c_parameter[0] = 0x0; + h2c_parameter[1] = wifiCentralChnl; + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + if (BTC_WIFI_BW_HT40 == wifi_bw) + h2c_parameter[2] = 0x30; + else + h2c_parameter[2] = 0x20; + } + + coex_dm->wifi_chnl_info[0] = h2c_parameter[0]; + coex_dm->wifi_chnl_info[1] = h2c_parameter[1]; + coex_dm->wifi_chnl_info[2] = h2c_parameter[2]; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, + "[BTCoex], FW write 0x66=0x%x\n", + h2c_parameter[0] << 16 | h2c_parameter[1] << 8 | + h2c_parameter[2]); + + btcoexist->btc_fill_h2c(btcoexist, 0x66, 3, h2c_parameter); +} + +void ex_halbtc8723b1ant_special_packet_notify(struct btc_coexist *btcoexist, + u8 type) +{ + bool bt_hs_on = false; + + if (btcoexist->manual_control || btcoexist->stop_coex_dm || + btcoexist->bt_info.bt_disabled) + return; + + coex_sta->special_pkt_period_cnt = 0; + + btcoexist->btc_get(btcoexist, BTC_GET_BL_HS_OPERATION, &bt_hs_on); + if (coex_sta->c2h_bt_inquiry_page) { + halbtc8723b1ant_action_bt_inquiry(btcoexist); + return; + } else if (bt_hs_on) { + halbtc8723b1ant_action_hs(btcoexist); + return; + } + + if (BTC_PACKET_DHCP == type || + BTC_PACKET_EAPOL == type) { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], special Packet(%d) notify\n", type); + halbtc8723b1ant_action_wifi_connected_special_packet(btcoexist); + } +} + +void ex_halbtc8723b1ant_bt_info_notify(struct btc_coexist *btcoexist, + u8 *tmp_buf, u8 length) +{ + u8 bt_info = 0; + u8 i, rsp_source = 0; + bool wifi_connected = false; + bool bt_busy = false; + + coex_sta->c2h_bt_info_req_sent = false; + + rsp_source = tmp_buf[0] & 0xf; + if (rsp_source >= BT_INFO_SRC_8723B_1ANT_MAX) + rsp_source = BT_INFO_SRC_8723B_1ANT_WIFI_FW; + coex_sta->bt_info_c2h_cnt[rsp_source]++; + + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], Bt info[%d], length=%d, hex data=[", + rsp_source, length); + for (i=0; ibt_info_c2h[rsp_source][i] = tmp_buf[i]; + if (i == 1) + bt_info = tmp_buf[i]; + if (i == length - 1) + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "0x%02x]\n", tmp_buf[i]); + else + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "0x%02x, ", tmp_buf[i]); + } + + if (BT_INFO_SRC_8723B_1ANT_WIFI_FW != rsp_source) { + coex_sta->bt_retry_cnt = /* [3:0] */ + coex_sta->bt_info_c2h[rsp_source][2] & 0xf; + + coex_sta->bt_rssi = + coex_sta->bt_info_c2h[rsp_source][3] * 2 + 10; + + coex_sta->bt_info_ext = + coex_sta->bt_info_c2h[rsp_source][4]; + + /* Here we need to resend some wifi info to BT + * because bt is reset and loss of the info.*/ + if(coex_sta->bt_info_ext & BIT1) + { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BT ext info bit1 check, " + "send wifi BW&Chnl to BT!!\n"); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_CONNECTED, + &wifi_connected); + if(wifi_connected) + ex_halbtc8723b1ant_media_status_notify(btcoexist, + BTC_MEDIA_CONNECT); + else + ex_halbtc8723b1ant_media_status_notify(btcoexist, + BTC_MEDIA_DISCONNECT); + } + + if (coex_sta->bt_info_ext & BIT3) { + if (!btcoexist->manual_control && + !btcoexist->stop_coex_dm) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BT ext info bit3 check, " + "set BT NOT ignore Wlan active!!\n"); + halbtc8723b1ant_ignore_wlan_act(btcoexist, + FORCE_EXEC, + false); + } + } else { + /* BT already NOT ignore Wlan active, do nothing here.*/ + } +#if(BT_AUTO_REPORT_ONLY_8723B_1ANT == 0) + if (coex_sta->bt_info_ext & BIT4) { + /* BT auto report already enabled, do nothing */ + } else { + halbtc8723b1ant_bt_auto_report(btcoexist, FORCE_EXEC, + true); + } +#endif + } + + /* check BIT2 first ==> check if bt is under inquiry or page scan */ + if (bt_info & BT_INFO_8723B_1ANT_B_INQ_PAGE) + coex_sta->c2h_bt_inquiry_page = true; + else + coex_sta->c2h_bt_inquiry_page = false; + + /* set link exist status */ + if (!(bt_info & BT_INFO_8723B_1ANT_B_CONNECTION)) { + coex_sta->bt_link_exist = false; + coex_sta->pan_exist = false; + coex_sta->a2dp_exist = false; + coex_sta->hid_exist = false; + coex_sta->sco_exist = false; + } else { /* connection exists */ + coex_sta->bt_link_exist = true; + if (bt_info & BT_INFO_8723B_1ANT_B_FTP) + coex_sta->pan_exist = true; + else + coex_sta->pan_exist = false; + if (bt_info & BT_INFO_8723B_1ANT_B_A2DP) + coex_sta->a2dp_exist = true; + else + coex_sta->a2dp_exist = false; + if (bt_info & BT_INFO_8723B_1ANT_B_HID) + coex_sta->hid_exist = true; + else + coex_sta->hid_exist = false; + if (bt_info & BT_INFO_8723B_1ANT_B_SCO_ESCO) + coex_sta->sco_exist = true; + else + coex_sta->sco_exist = false; + } + + halbtc8723b1ant_update_bt_link_info(btcoexist); + + if (!(bt_info&BT_INFO_8723B_1ANT_B_CONNECTION)) { + coex_dm->bt_status = BT_8723B_1ANT_BT_STATUS_NON_CONNECTED_IDLE; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BtInfoNotify(), " + "BT Non-Connected idle!!!\n"); + /* connection exists but no busy */ + } else if (bt_info == BT_INFO_8723B_1ANT_B_CONNECTION) { + coex_dm->bt_status = BT_8723B_1ANT_BT_STATUS_CONNECTED_IDLE; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BtInfoNotify(), BT Connected-idle!!!\n"); + } else if ((bt_info & BT_INFO_8723B_1ANT_B_SCO_ESCO) || + (bt_info & BT_INFO_8723B_1ANT_B_SCO_BUSY)) { + coex_dm->bt_status = BT_8723B_1ANT_BT_STATUS_SCO_BUSY; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BtInfoNotify(), " + "BT SCO busy!!!\n"); + } else if (bt_info & BT_INFO_8723B_1ANT_B_ACL_BUSY) { + if (BT_8723B_1ANT_BT_STATUS_ACL_BUSY != coex_dm->bt_status) + coex_dm->auto_tdma_adjust = false; + + coex_dm->bt_status = BT_8723B_1ANT_BT_STATUS_ACL_BUSY; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BtInfoNotify(), BT ACL busy!!!\n"); + } else { + coex_dm->bt_status = + BT_8723B_1ANT_BT_STATUS_MAX; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BtInfoNotify(), BT Non-Defined state!!\n"); + } + + if ((BT_8723B_1ANT_BT_STATUS_ACL_BUSY == coex_dm->bt_status) || + (BT_8723B_1ANT_BT_STATUS_SCO_BUSY == coex_dm->bt_status) || + (BT_8723B_1ANT_BT_STATUS_ACL_SCO_BUSY == coex_dm->bt_status)) + bt_busy = true; + else + bt_busy = false; + btcoexist->btc_set(btcoexist, BTC_SET_BL_BT_TRAFFIC_BUSY, &bt_busy); + + halbtc8723b1ant_run_coexist_mechanism(btcoexist); +} + +void ex_halbtc8723b1ant_halt_notify(struct btc_coexist *btcoexist) +{ + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, "[BTCoex], Halt notify\n"); + + btcoexist->stop_coex_dm = true; + + halbtc8723b1ant_SetAntPath(btcoexist, BTC_ANT_PATH_BT, false, true); + + halbtc8723b1ant_wifi_off_hw_cfg(btcoexist); + halbtc8723b1ant_ignore_wlan_act(btcoexist, FORCE_EXEC, true); + + halbtc8723b1ant_power_save_state(btcoexist, BTC_PS_WIFI_NATIVE, + 0x0, 0x0); + halbtc8723b1ant_ps_tdma(btcoexist, FORCE_EXEC, false, 0); + + ex_halbtc8723b1ant_media_status_notify(btcoexist, BTC_MEDIA_DISCONNECT); +} + +void ex_halbtc8723b1ant_pnp_notify(struct btc_coexist *btcoexist, u8 pnp_state) +{ + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, "[BTCoex], Pnp notify\n"); + + if (BTC_WIFI_PNP_SLEEP == pnp_state) { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], Pnp notify to SLEEP\n"); + btcoexist->stop_coex_dm = true; + halbtc8723b1ant_ignore_wlan_act(btcoexist, FORCE_EXEC, true); + halbtc8723b1ant_power_save_state(btcoexist, BTC_PS_WIFI_NATIVE, + 0x0, 0x0); + halbtc8723b1ant_ps_tdma(btcoexist, NORMAL_EXEC, false, 9); + } else if (BTC_WIFI_PNP_WAKE_UP == pnp_state) { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], Pnp notify to WAKE UP\n"); + btcoexist->stop_coex_dm = false; + halbtc8723b1ant_init_hw_config(btcoexist, false); + halbtc8723b1ant_init_coex_dm(btcoexist); + halbtc8723b1ant_query_bt_info(btcoexist); + } +} + +void ex_halbtc8723b1ant_periodical(struct btc_coexist *btcoexist) +{ + struct btc_board_info *board_info = &btcoexist->board_info; + struct btc_stack_info *stack_info = &btcoexist->stack_info; + static u8 dis_ver_info_cnt = 0; + u32 fw_ver = 0, bt_patch_ver = 0; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], ==========================" + "Periodical===========================\n"); + + if (dis_ver_info_cnt <= 5) { + dis_ver_info_cnt += 1; + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, + "[BTCoex], *************************" + "***************************************\n"); + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, + "[BTCoex], Ant PG Num/ Ant Mech/ " + "Ant Pos = %d/ %d/ %d\n", \ + board_info->pg_ant_num, board_info->btdm_ant_num, + board_info->btdm_ant_pos); + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, + "[BTCoex], BT stack/ hci ext ver = %s / %d\n", \ + ((stack_info->profile_notified)? "Yes":"No"), + stack_info->hci_version); + btcoexist->btc_get(btcoexist, BTC_GET_U4_BT_PATCH_VER, + &bt_patch_ver); + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_FW_VER, &fw_ver); + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, + "[BTCoex], CoexVer/ FwVer/ PatchVer " + "= %d_%x/ 0x%x/ 0x%x(%d)\n", \ + glcoex_ver_date_8723b_1ant, + glcoex_ver_8723b_1ant, fw_ver, + bt_patch_ver, bt_patch_ver); + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, + "[BTCoex], *****************************" + "***********************************\n"); + } + +#if(BT_AUTO_REPORT_ONLY_8723B_1ANT == 0) + halbtc8723b1ant_query_bt_info(btcoexist); + halbtc8723b1ant_monitor_bt_ctr(btcoexist); + halbtc8723b1ant_monitor_bt_enable_disable(btcoexist); +#else + if (halbtc8723b1ant_is_wifi_status_changed(btcoexist) || + coex_dm->auto_tdma_adjust) { + if (coex_sta->special_pkt_period_cnt > 2) + halbtc8723b1ant_run_coexist_mechanism(btcoexist); + } + + coex_sta->special_pkt_period_cnt++; +#endif +} + + +#endif + --- linux-3.13.0.orig/drivers/staging/rtl8821ae/btcoexist/halbtc8723b1ant.h +++ linux-3.13.0/drivers/staging/rtl8821ae/btcoexist/halbtc8723b1ant.h @@ -0,0 +1,175 @@ +/********************************************************************** + * The following is for 8723B 1ANT BT Co-exist definition + **********************************************************************/ +#define BT_AUTO_REPORT_ONLY_8723B_1ANT 1 + +#define BT_INFO_8723B_1ANT_B_FTP BIT7 +#define BT_INFO_8723B_1ANT_B_A2DP BIT6 +#define BT_INFO_8723B_1ANT_B_HID BIT5 +#define BT_INFO_8723B_1ANT_B_SCO_BUSY BIT4 +#define BT_INFO_8723B_1ANT_B_ACL_BUSY BIT3 +#define BT_INFO_8723B_1ANT_B_INQ_PAGE BIT2 +#define BT_INFO_8723B_1ANT_B_SCO_ESCO BIT1 +#define BT_INFO_8723B_1ANT_B_CONNECTION BIT0 + +#define BT_INFO_8723B_1ANT_A2DP_BASIC_RATE(_BT_INFO_EXT_) \ + (((_BT_INFO_EXT_&BIT0))? true:false) + +#define BTC_RSSI_COEX_THRESH_TOL_8723B_1ANT 2 + +typedef enum _BT_INFO_SRC_8723B_1ANT{ + BT_INFO_SRC_8723B_1ANT_WIFI_FW = 0x0, + BT_INFO_SRC_8723B_1ANT_BT_RSP = 0x1, + BT_INFO_SRC_8723B_1ANT_BT_ACTIVE_SEND = 0x2, + BT_INFO_SRC_8723B_1ANT_MAX +}BT_INFO_SRC_8723B_1ANT,*PBT_INFO_SRC_8723B_1ANT; + +typedef enum _BT_8723B_1ANT_BT_STATUS{ + BT_8723B_1ANT_BT_STATUS_NON_CONNECTED_IDLE = 0x0, + BT_8723B_1ANT_BT_STATUS_CONNECTED_IDLE = 0x1, + BT_8723B_1ANT_BT_STATUS_INQ_PAGE = 0x2, + BT_8723B_1ANT_BT_STATUS_ACL_BUSY = 0x3, + BT_8723B_1ANT_BT_STATUS_SCO_BUSY = 0x4, + BT_8723B_1ANT_BT_STATUS_ACL_SCO_BUSY = 0x5, + BT_8723B_1ANT_BT_STATUS_MAX +}BT_8723B_1ANT_BT_STATUS,*PBT_8723B_1ANT_BT_STATUS; + +typedef enum _BT_8723B_1ANT_WIFI_STATUS{ + BT_8723B_1ANT_WIFI_STATUS_NON_CONNECTED_IDLE = 0x0, + BT_8723B_1ANT_WIFI_STATUS_NON_CONNECTED_ASSO_AUTH_SCAN = 0x1, + BT_8723B_1ANT_WIFI_STATUS_CONNECTED_SCAN = 0x2, + BT_8723B_1ANT_WIFI_STATUS_CONNECTED_SPECIAL_PKT = 0x3, + BT_8723B_1ANT_WIFI_STATUS_CONNECTED_IDLE = 0x4, + BT_8723B_1ANT_WIFI_STATUS_CONNECTED_BUSY = 0x5, + BT_8723B_1ANT_WIFI_STATUS_MAX +}BT_8723B_1ANT_WIFI_STATUS,*PBT_8723B_1ANT_WIFI_STATUS; + +typedef enum _BT_8723B_1ANT_COEX_ALGO{ + BT_8723B_1ANT_COEX_ALGO_UNDEFINED = 0x0, + BT_8723B_1ANT_COEX_ALGO_SCO = 0x1, + BT_8723B_1ANT_COEX_ALGO_HID = 0x2, + BT_8723B_1ANT_COEX_ALGO_A2DP = 0x3, + BT_8723B_1ANT_COEX_ALGO_A2DP_PANHS = 0x4, + BT_8723B_1ANT_COEX_ALGO_PANEDR = 0x5, + BT_8723B_1ANT_COEX_ALGO_PANHS = 0x6, + BT_8723B_1ANT_COEX_ALGO_PANEDR_A2DP = 0x7, + BT_8723B_1ANT_COEX_ALGO_PANEDR_HID = 0x8, + BT_8723B_1ANT_COEX_ALGO_HID_A2DP_PANEDR = 0x9, + BT_8723B_1ANT_COEX_ALGO_HID_A2DP = 0xa, + BT_8723B_1ANT_COEX_ALGO_MAX = 0xb, +}BT_8723B_1ANT_COEX_ALGO,*PBT_8723B_1ANT_COEX_ALGO; + +struct coex_dm_8723b_1ant{ + /* fw mechanism */ + bool pre_dec_bt_pwr; + bool cur_dec_bt_pwr; + u8 pre_fw_dac_swing_lvl; + u8 cur_fw_dac_swing_lvl; + bool cur_ignore_wlan_act; + bool pre_ignore_wlan_act; + u8 pre_ps_tdma; + u8 cur_ps_tdma; + u8 ps_tdma_para[5]; + u8 ps_tdma_du_adj_type; + bool auto_tdma_adjust; + bool pre_ps_tdma_on; + bool cur_ps_tdma_on; + bool pre_bt_auto_report; + bool cur_bt_auto_report; + u8 pre_lps; + u8 cur_lps; + u8 pre_rpwm; + u8 cur_rpwm; + + /* sw mechanism */ + bool pre_rf_rx_lpf_shrink; + bool cur_rf_rx_lpf_shrink; + u32 bt_rf0x1e_backup; + bool pre_low_penalty_ra; + bool cur_low_penalty_ra; + bool pre_dac_swing_on; + u32 pre_dac_swing_lvl; + bool cur_dac_swing_on; + u32 cur_dac_swing_lvl; + bool pre_adc_backoff; + bool cur_adc_backoff; + bool pre_agc_table_en; + bool cur_agc_table_en; + u32 pre_val0x6c0; + u32 cur_val0x6c0; + u32 pre_val0x6c4; + u32 cur_val0x6c4; + u32 pre_val0x6c8; + u32 cur_val0x6c8; + u8 pre_val0x6cc; + u8 cur_val0x6cc; + bool limited_dig; + + u32 backup_arfr_cnt1; /* Auto Rate Fallback Retry cnt */ + u32 backup_arfr_cnt2; /* Auto Rate Fallback Retry cnt */ + u16 backup_retry_limit; + u8 backup_ampdu_max_time; + + /* algorithm related */ + u8 pre_algorithm; + u8 cur_algorithm; + u8 bt_status; + u8 wifi_chnl_info[3]; + + u32 prera_mask; + u32 curra_mask; + u8 pre_arfr_type; + u8 cur_arfr_type; + u8 pre_retry_limit_type; + u8 cur_retry_limit_type; + u8 pre_ampdu_time_type; + u8 cur_ampdu_time_type; + + u8 error_condition; +}; + +struct coex_sta_8723b_1ant{ + bool bt_link_exist; + bool sco_exist; + bool a2dp_exist; + bool hid_exist; + bool pan_exist; + + bool under_lps; + bool under_ips; + u32 special_pkt_period_cnt; + u32 high_priority_tx; + u32 high_priority_rx; + u32 low_priority_tx; + u32 low_priority_rx; + u8 bt_rssi; + u8 pre_bt_rssi_state; + u8 pre_wifi_rssi_state[4]; + bool c2h_bt_info_req_sent; + u8 bt_info_c2h[BT_INFO_SRC_8723B_1ANT_MAX][10]; + u32 bt_info_c2h_cnt[BT_INFO_SRC_8723B_1ANT_MAX]; + bool c2h_bt_inquiry_page; + u8 bt_retry_cnt; + u8 bt_info_ext; +}; + +/************************************************************************* + * The following is interface which will notify coex module. + *************************************************************************/ +void ex_halbtc8723b1ant_init_hwconfig(struct btc_coexist *btcoexist); +void ex_halbtc8723b1ant_init_coex_dm(struct btc_coexist *btcoexist); +void ex_halbtc8723b1ant_ips_notify(struct btc_coexist *btcoexist, u8 type); +void ex_halbtc8723b1ant_lps_notify(struct btc_coexist *btcoexist, u8 type); +void ex_halbtc8723b1ant_scan_notify(struct btc_coexist *btcoexist, u8 type); +void ex_halbtc8723b1ant_connect_notify(struct btc_coexist *btcoexist, u8 type); +void ex_halbtc8723b1ant_media_status_notify(struct btc_coexist *btcoexist, + u8 type); +void ex_halbtc8723b1ant_special_packet_notify(struct btc_coexist *btcoexist, + u8 type); +void ex_halbtc8723b1ant_bt_info_notify(struct btc_coexist *btcoexist, + u8 *tmpbuf, u8 length); +void ex_halbtc8723b1ant_halt_notify(struct btc_coexist *btcoexist); +void ex_halbtc8723b1ant_pnp_notify(struct btc_coexist *btcoexist, u8 pnpState); +void ex_halbtc8723b1ant_periodical(struct btc_coexist *btcoexist); +void ex_halbtc8723b1ant_display_coex_info(struct btc_coexist *btcoexist); + --- linux-3.13.0.orig/drivers/staging/rtl8821ae/btcoexist/halbtc8723b2ant.c +++ linux-3.13.0/drivers/staging/rtl8821ae/btcoexist/halbtc8723b2ant.c @@ -0,0 +1,4185 @@ +/*************************************************************** + * Description: + * + * This file is for RTL8723B Co-exist mechanism + * + * History + * 2012/11/15 Cosa first check in. + * + **************************************************************/ +/************************************************************** + * include files + **************************************************************/ +#include "halbt_precomp.h" +#if 1 +/************************************************************** + * Global variables, these are static variables + **************************************************************/ +static struct coex_dm_8723b_2ant glcoex_dm_8723b_2ant; +static struct coex_dm_8723b_2ant *coex_dm = &glcoex_dm_8723b_2ant; +static struct coex_sta_8723b_2ant glcoex_sta_8723b_2ant; +static struct coex_sta_8723b_2ant *coex_sta = &glcoex_sta_8723b_2ant; + +const char *const glbt_info_src_8723b_2ant[] = { + "BT Info[wifi fw]", + "BT Info[bt rsp]", + "BT Info[bt auto report]", +}; + +u32 glcoex_ver_date_8723b_2ant = 20131113; +u32 glcoex_ver_8723b_2ant = 0x3f; + +/************************************************************** + * local function proto type if needed + **************************************************************/ +/************************************************************** + * local function start with halbtc8723b2ant_ + **************************************************************/ +u8 halbtc8723b2ant_bt_rssi_state(u8 level_num, u8 rssi_thresh, u8 rssi_thresh1) +{ + s32 bt_rssi = 0; + u8 bt_rssi_state = coex_sta->pre_bt_rssi_state; + + bt_rssi = coex_sta->bt_rssi; + + if (level_num == 2) { + if ((coex_sta->pre_bt_rssi_state == BTC_RSSI_STATE_LOW) || + (coex_sta->pre_bt_rssi_state == BTC_RSSI_STATE_STAY_LOW)) { + if (bt_rssi >= rssi_thresh + + BTC_RSSI_COEX_THRESH_TOL_8723B_2ANT) { + bt_rssi_state = BTC_RSSI_STATE_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "[BTCoex], BT Rssi state " + "switch to High\n"); + } else { + bt_rssi_state = BTC_RSSI_STATE_STAY_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "[BTCoex], BT Rssi state " + "stay at Low\n"); + } + } else { + if (bt_rssi < rssi_thresh) { + bt_rssi_state = BTC_RSSI_STATE_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "[BTCoex], BT Rssi state " + "switch to Low\n"); + } else { + bt_rssi_state = BTC_RSSI_STATE_STAY_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "[BTCoex], BT Rssi state " + "stay at High\n"); + } + } + } else if (level_num == 3) { + if (rssi_thresh > rssi_thresh1) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "[BTCoex], BT Rssi thresh error!!\n"); + return coex_sta->pre_bt_rssi_state; + } + + if ((coex_sta->pre_bt_rssi_state == BTC_RSSI_STATE_LOW) || + (coex_sta->pre_bt_rssi_state == BTC_RSSI_STATE_STAY_LOW)) { + if (bt_rssi >= rssi_thresh + + BTC_RSSI_COEX_THRESH_TOL_8723B_2ANT) { + bt_rssi_state = BTC_RSSI_STATE_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "[BTCoex], BT Rssi state " + "switch to Medium\n"); + } else { + bt_rssi_state = BTC_RSSI_STATE_STAY_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "[BTCoex], BT Rssi state " + "stay at Low\n"); + } + } else if ((coex_sta->pre_bt_rssi_state == + BTC_RSSI_STATE_MEDIUM) || + (coex_sta->pre_bt_rssi_state == + BTC_RSSI_STATE_STAY_MEDIUM)) { + if (bt_rssi >= rssi_thresh1 + + BTC_RSSI_COEX_THRESH_TOL_8723B_2ANT) { + bt_rssi_state = BTC_RSSI_STATE_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "[BTCoex], BT Rssi state " + "switch to High\n"); + } else if (bt_rssi < rssi_thresh) { + bt_rssi_state = BTC_RSSI_STATE_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "[BTCoex], BT Rssi state " + "switch to Low\n"); + } else { + bt_rssi_state = BTC_RSSI_STATE_STAY_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "[BTCoex], BT Rssi state " + "stay at Medium\n"); + } + } else { + if (bt_rssi < rssi_thresh1) { + bt_rssi_state = BTC_RSSI_STATE_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "[BTCoex], BT Rssi state " + "switch to Medium\n"); + } else { + bt_rssi_state = BTC_RSSI_STATE_STAY_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_RSSI_STATE, + "[BTCoex], BT Rssi state " + "stay at High\n"); + } + } + } + + coex_sta->pre_bt_rssi_state = bt_rssi_state; + + return bt_rssi_state; +} + +u8 halbtc8723b2ant_wifi_rssi_state(struct btc_coexist *btcoexist, + u8 index, u8 level_num, + u8 rssi_thresh, u8 rssi_thresh1) +{ + s32 wifi_rssi=0; + u8 wifi_rssi_state = coex_sta->pre_wifi_rssi_state[index]; + + btcoexist->btc_get(btcoexist, BTC_GET_S4_WIFI_RSSI, &wifi_rssi); + + if (level_num == 2) { + if ((coex_sta->pre_wifi_rssi_state[index] == + BTC_RSSI_STATE_LOW) || + (coex_sta->pre_wifi_rssi_state[index] == + BTC_RSSI_STATE_STAY_LOW)) { + if (wifi_rssi >= rssi_thresh + + BTC_RSSI_COEX_THRESH_TOL_8723B_2ANT) { + wifi_rssi_state = BTC_RSSI_STATE_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "[BTCoex], wifi RSSI state " + "switch to High\n"); + } else { + wifi_rssi_state = BTC_RSSI_STATE_STAY_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "[BTCoex], wifi RSSI state " + "stay at Low\n"); + } + } else { + if (wifi_rssi < rssi_thresh) { + wifi_rssi_state = BTC_RSSI_STATE_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "[BTCoex], wifi RSSI state " + "switch to Low\n"); + } else { + wifi_rssi_state = BTC_RSSI_STATE_STAY_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "[BTCoex], wifi RSSI state " + "stay at High\n"); + } + } + } else if (level_num == 3) { + if (rssi_thresh > rssi_thresh1) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_WIFI_RSSI_STATE, + "[BTCoex], wifi RSSI thresh error!!\n"); + return coex_sta->pre_wifi_rssi_state[index]; + } + + if ((coex_sta->pre_wifi_rssi_state[index] == + BTC_RSSI_STATE_LOW) || + (coex_sta->pre_wifi_rssi_state[index] == + BTC_RSSI_STATE_STAY_LOW)) { + if(wifi_rssi >= rssi_thresh + + BTC_RSSI_COEX_THRESH_TOL_8723B_2ANT) { + wifi_rssi_state = BTC_RSSI_STATE_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "[BTCoex], wifi RSSI state " + "switch to Medium\n"); + } else { + wifi_rssi_state = BTC_RSSI_STATE_STAY_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "[BTCoex], wifi RSSI state " + "stay at Low\n"); + } + } else if ((coex_sta->pre_wifi_rssi_state[index] == + BTC_RSSI_STATE_MEDIUM) || + (coex_sta->pre_wifi_rssi_state[index] == + BTC_RSSI_STATE_STAY_MEDIUM)) { + if (wifi_rssi >= rssi_thresh1 + + BTC_RSSI_COEX_THRESH_TOL_8723B_2ANT) { + wifi_rssi_state = BTC_RSSI_STATE_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "[BTCoex], wifi RSSI state " + "switch to High\n"); + } else if (wifi_rssi < rssi_thresh) { + wifi_rssi_state = BTC_RSSI_STATE_LOW; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "[BTCoex], wifi RSSI state " + "switch to Low\n"); + } else { + wifi_rssi_state = BTC_RSSI_STATE_STAY_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "[BTCoex], wifi RSSI state " + "stay at Medium\n"); + } + } else { + if (wifi_rssi < rssi_thresh1) { + wifi_rssi_state = BTC_RSSI_STATE_MEDIUM; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "[BTCoex], wifi RSSI state " + "switch to Medium\n"); + } else { + wifi_rssi_state = BTC_RSSI_STATE_STAY_HIGH; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_WIFI_RSSI_STATE, + "[BTCoex], wifi RSSI state " + "stay at High\n"); + } + } + } + + coex_sta->pre_wifi_rssi_state[index] = wifi_rssi_state; + + return wifi_rssi_state; +} + +void halbtc8723b2ant_monitor_bt_enable_disable(struct btc_coexist *btcoexist) +{ + static bool pre_bt_disabled = false; + static u32 bt_disable_cnt = 0; + bool bt_active = true, bt_disabled = false; + + /* This function check if bt is disabled */ + if (coex_sta->high_priority_tx == 0 && + coex_sta->high_priority_rx == 0 && + coex_sta->low_priority_tx == 0 && + coex_sta->low_priority_rx == 0) + bt_active = false; + + if (coex_sta->high_priority_tx == 0xffff && + coex_sta->high_priority_rx == 0xffff && + coex_sta->low_priority_tx == 0xffff && + coex_sta->low_priority_rx == 0xffff) + bt_active = true; + + if (bt_active) { + bt_disable_cnt = 0; + bt_disabled = false; + btcoexist->btc_set(btcoexist, BTC_SET_BL_BT_DISABLE, + &bt_disabled); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, + "[BTCoex], BT is enabled !!\n"); + } else { + bt_disable_cnt++; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, + "[BTCoex], bt all counters=0, %d times!!\n", + bt_disable_cnt); + if (bt_disable_cnt >= 2) { + bt_disabled = true; + btcoexist->btc_set(btcoexist, BTC_SET_BL_BT_DISABLE, + &bt_disabled); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, + "[BTCoex], BT is disabled !!\n"); + } + } + + if (pre_bt_disabled != bt_disabled) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, + "[BTCoex], BT is from %s to %s!!\n", + (pre_bt_disabled ? "disabled":"enabled"), + (bt_disabled ? "disabled":"enabled")); + + pre_bt_disabled = bt_disabled; + if (!bt_disabled) { + } else { + } + } +} + +void halbtc8723b2ant_monitor_bt_ctr(struct btc_coexist *btcoexist) +{ + u32 reg_hp_txrx, reg_lp_txrx, u32tmp; + u32 reg_hp_tx = 0, reg_hp_rx = 0; + u32 reg_lp_tx = 0, reg_lp_rx = 0; + + reg_hp_txrx = 0x770; + reg_lp_txrx = 0x774; + + u32tmp = btcoexist->btc_read_4byte(btcoexist, reg_hp_txrx); + reg_hp_tx = u32tmp & MASKLWORD; + reg_hp_rx = (u32tmp & MASKHWORD) >> 16; + + u32tmp = btcoexist->btc_read_4byte(btcoexist, reg_lp_txrx); + reg_lp_tx = u32tmp & MASKLWORD; + reg_lp_rx = (u32tmp & MASKHWORD) >> 16; + + coex_sta->high_priority_tx = reg_hp_tx; + coex_sta->high_priority_rx = reg_hp_rx; + coex_sta->low_priority_tx = reg_lp_tx; + coex_sta->low_priority_rx = reg_lp_rx; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, + "[BTCoex], High Priority Tx/Rx(reg 0x%x)=0x%x(%d)/0x%x(%d)\n", + reg_hp_txrx, reg_hp_tx, reg_hp_tx, reg_hp_rx, reg_hp_rx); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_BT_MONITOR, + "[BTCoex], Low Priority Tx/Rx(reg 0x%x)=0x%x(%d)/0x%x(%d)\n", + reg_lp_txrx, reg_lp_tx, reg_lp_tx, reg_lp_rx, reg_lp_rx); + + /* reset counter */ + btcoexist->btc_write_1byte(btcoexist, 0x76e, 0xc); +} + +void halbtc8723b2ant_query_bt_info(struct btc_coexist *btcoexist) +{ + u8 h2c_parameter[1] ={0}; + + coex_sta->c2h_bt_info_req_sent = true; + + h2c_parameter[0] |= BIT0; /* trigger */ + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, + "[BTCoex], Query Bt Info, FW write 0x61=0x%x\n", + h2c_parameter[0]); + + btcoexist->btc_fill_h2c(btcoexist, 0x61, 1, h2c_parameter); +} + +bool halbtc8723b2ant_is_wifi_status_changed(struct btc_coexist *btcoexist) +{ + static bool pre_wifi_busy = false; + static bool pre_under_4way = false; + static bool pre_bt_hs_on = false; + bool wifi_busy = false, under_4way = false, bt_hs_on = false; + bool wifi_connected = false; + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_CONNECTED, + &wifi_connected); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_BUSY, &wifi_busy); + btcoexist->btc_get(btcoexist, BTC_GET_BL_HS_OPERATION, &bt_hs_on); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_4_WAY_PROGRESS, + &under_4way); + + if (wifi_connected) { + if (wifi_busy != pre_wifi_busy) { + pre_wifi_busy = wifi_busy; + return true; + } + + if (under_4way != pre_under_4way) { + pre_under_4way = under_4way; + return true; + } + + if (bt_hs_on != pre_bt_hs_on) { + pre_bt_hs_on = bt_hs_on; + return true; + } + } + + return false; +} + +void halbtc8723b2ant_update_bt_link_info(struct btc_coexist *btcoexist) +{ + /*struct btc_stack_info *stack_info = &btcoexist->stack_info;*/ + struct btc_bt_link_info *bt_link_info = &btcoexist->bt_link_info; + bool bt_hs_on = false; + +#if(BT_AUTO_REPORT_ONLY_8723B_2ANT == 1) /* profile from bt patch */ + btcoexist->btc_get(btcoexist, BTC_GET_BL_HS_OPERATION, &bt_hs_on); + + bt_link_info->bt_link_exist = coex_sta->bt_link_exist; + bt_link_info->sco_exist = coex_sta->sco_exist; + bt_link_info->a2dp_exist = coex_sta->a2dp_exist; + bt_link_info->pan_exist = coex_sta->pan_exist; + bt_link_info->hid_exist = coex_sta->hid_exist; + + /* work around for HS mode. */ + if (bt_hs_on) { + bt_link_info->pan_exist = true; + bt_link_info->bt_link_exist = true; + } +#else /* profile from bt stack */ + bt_link_info->bt_link_exist = stack_info->bt_link_exist; + bt_link_info->sco_exist = stack_info->sco_exist; + bt_link_info->a2dp_exist = stack_info->a2dp_exist; + bt_link_info->pan_exist = stack_info->pan_exist; + bt_link_info->hid_exist = stack_info->hid_exist; + + /*for win-8 stack HID report error*/ + if (!stack_info->hid_exist) + stack_info->hid_exist = coex_sta->hid_exist; + /*sync BTInfo with BT firmware and stack*/ + /* when stack HID report error, here we use the info from bt fw.*/ + if (!stack_info->bt_link_exist) + stack_info->bt_link_exist = coex_sta->bt_link_exist; +#endif + /* check if Sco only */ + if (bt_link_info->sco_exist && !bt_link_info->a2dp_exist && + !bt_link_info->pan_exist && !bt_link_info->hid_exist) + bt_link_info->sco_only = true; + else + bt_link_info->sco_only = false; + + /* check if A2dp only */ + if (!bt_link_info->sco_exist && bt_link_info->a2dp_exist && + !bt_link_info->pan_exist && !bt_link_info->hid_exist) + bt_link_info->a2dp_only = true; + else + bt_link_info->a2dp_only = false; + + /* check if Pan only */ + if (!bt_link_info->sco_exist && !bt_link_info->a2dp_exist && + bt_link_info->pan_exist && !bt_link_info->hid_exist) + bt_link_info->pan_only = true; + else + bt_link_info->pan_only = false; + + /* check if Hid only */ + if (!bt_link_info->sco_exist && !bt_link_info->a2dp_exist && + !bt_link_info->pan_exist && bt_link_info->hid_exist) + bt_link_info->hid_only = true; + else + bt_link_info->hid_only = false; +} + +u8 halbtc8723b2ant_action_algorithm(struct btc_coexist *btcoexist) +{ + struct btc_bt_link_info *bt_link_info=&btcoexist->bt_link_info; + bool bt_hs_on = false; + u8 algorithm = BT_8723B_2ANT_COEX_ALGO_UNDEFINED; + u8 num_of_diff_profile = 0; + + btcoexist->btc_get(btcoexist, BTC_GET_BL_HS_OPERATION, &bt_hs_on); + + if (!bt_link_info->bt_link_exist) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], No BT link exists!!!\n"); + return algorithm; + } + + if (bt_link_info->sco_exist) + num_of_diff_profile++; + if (bt_link_info->hid_exist) + num_of_diff_profile++; + if (bt_link_info->pan_exist) + num_of_diff_profile++; + if (bt_link_info->a2dp_exist) + num_of_diff_profile++; + + if (num_of_diff_profile == 1) { + if (bt_link_info->sco_exist) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], SCO only\n"); + algorithm = BT_8723B_2ANT_COEX_ALGO_SCO; + } else { + if (bt_link_info->hid_exist) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], HID only\n"); + algorithm = BT_8723B_2ANT_COEX_ALGO_HID; + } else if (bt_link_info->a2dp_exist) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], A2DP only\n"); + algorithm = BT_8723B_2ANT_COEX_ALGO_A2DP; + } else if (bt_link_info->pan_exist) { + if (bt_hs_on) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], PAN(HS) only\n"); + algorithm = + BT_8723B_2ANT_COEX_ALGO_PANHS; + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], PAN(EDR) only\n"); + algorithm = + BT_8723B_2ANT_COEX_ALGO_PANEDR; + } + } + } + } else if (num_of_diff_profile == 2) { + if (bt_link_info->sco_exist) { + if (bt_link_info->hid_exist) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], SCO + HID\n"); + algorithm = BT_8723B_2ANT_COEX_ALGO_PANEDR_HID; + } else if (bt_link_info->a2dp_exist) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], SCO + A2DP ==> SCO\n"); + algorithm = BT_8723B_2ANT_COEX_ALGO_PANEDR_HID; + } else if (bt_link_info->pan_exist) { + if (bt_hs_on) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], SCO + PAN(HS)\n"); + algorithm = BT_8723B_2ANT_COEX_ALGO_SCO; + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], SCO + PAN(EDR)\n"); + algorithm = + BT_8723B_2ANT_COEX_ALGO_PANEDR_HID; + } + } + } else { + if (bt_link_info->hid_exist && + bt_link_info->a2dp_exist) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], HID + A2DP\n"); + algorithm = BT_8723B_2ANT_COEX_ALGO_HID_A2DP; + } else if (bt_link_info->hid_exist && + bt_link_info->pan_exist) { + if (bt_hs_on) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], HID + PAN(HS)\n"); + algorithm = BT_8723B_2ANT_COEX_ALGO_HID; + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], HID + PAN(EDR)\n"); + algorithm = + BT_8723B_2ANT_COEX_ALGO_PANEDR_HID; + } + } else if (bt_link_info->pan_exist && + bt_link_info->a2dp_exist) { + if (bt_hs_on) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], A2DP + PAN(HS)\n"); + algorithm = + BT_8723B_2ANT_COEX_ALGO_A2DP_PANHS; + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex],A2DP + PAN(EDR)\n"); + algorithm = + BT_8723B_2ANT_COEX_ALGO_PANEDR_A2DP; + } + } + } + } else if (num_of_diff_profile == 3) { + if (bt_link_info->sco_exist) { + if (bt_link_info->hid_exist && + bt_link_info->a2dp_exist) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], SCO + HID + A2DP" + " ==> HID\n"); + algorithm = BT_8723B_2ANT_COEX_ALGO_PANEDR_HID; + } else if (bt_link_info->hid_exist && + bt_link_info->pan_exist) { + if (bt_hs_on) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], SCO + HID + " + "PAN(HS)\n"); + algorithm = + BT_8723B_2ANT_COEX_ALGO_PANEDR_HID; + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], SCO + HID + " + "PAN(EDR)\n"); + algorithm = + BT_8723B_2ANT_COEX_ALGO_PANEDR_HID; + } + } else if (bt_link_info->pan_exist && + bt_link_info->a2dp_exist) { + if (bt_hs_on) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], SCO + A2DP + " + "PAN(HS)\n"); + algorithm = + BT_8723B_2ANT_COEX_ALGO_PANEDR_HID; + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], SCO + A2DP + " + "PAN(EDR) ==> HID\n"); + algorithm = + BT_8723B_2ANT_COEX_ALGO_PANEDR_HID; + } + } + } else { + if (bt_link_info->hid_exist && + bt_link_info->pan_exist && + bt_link_info->a2dp_exist) { + if (bt_hs_on) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], HID + A2DP + " + "PAN(HS)\n"); + algorithm = + BT_8723B_2ANT_COEX_ALGO_HID_A2DP; + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], HID + A2DP + " + "PAN(EDR)\n"); + algorithm = + BT_8723B_2ANT_COEX_ALGO_HID_A2DP_PANEDR; + } + } + } + } else if (num_of_diff_profile >= 3) { + if (bt_link_info->sco_exist) { + if (bt_link_info->hid_exist && + bt_link_info->pan_exist && + bt_link_info->a2dp_exist) { + if (bt_hs_on) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Error!!! SCO + HID" + " + A2DP + PAN(HS)\n"); + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], SCO + HID + A2DP +" + " PAN(EDR)==>PAN(EDR)+HID\n"); + algorithm = + BT_8723B_2ANT_COEX_ALGO_PANEDR_HID; + } + } + } + } + + return algorithm; +} + +bool halbtc8723b2ant_need_to_dec_bt_pwr(struct btc_coexist *btcoexist) +{ + bool bRet = false; + bool bt_hs_on = false, wifi_connected = false; + s32 bt_hs_rssi=0; + u8 bt_rssi_state; + + if (!btcoexist->btc_get(btcoexist, + BTC_GET_BL_HS_OPERATION, &bt_hs_on)) + return false; + if (!btcoexist->btc_get(btcoexist, + BTC_GET_BL_WIFI_CONNECTED, &wifi_connected)) + return false; + if (!btcoexist->btc_get(btcoexist, + BTC_GET_S4_HS_RSSI, &bt_hs_rssi)) + return false; + + bt_rssi_state = halbtc8723b2ant_bt_rssi_state(2, 29, 0); + + if (wifi_connected) { + if (bt_hs_on) { + if (bt_hs_rssi > 37) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, + "[BTCoex], Need to decrease bt " + "power for HS mode!!\n"); + bRet = true; + } + } else { + if ((bt_rssi_state == BTC_RSSI_STATE_HIGH) || + (bt_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, + "[BTCoex], Need to decrease bt " + "power for Wifi is connected!!\n"); + bRet = true; + } + } + } + + return bRet; +} + +void halbtc8723b2ant_set_fw_dac_swing_level(struct btc_coexist *btcoexist, + u8 dac_swing_lvl) +{ + u8 h2c_parameter[1] ={0}; + + /* There are several type of dacswing + * 0x18/ 0x10/ 0xc/ 0x8/ 0x4/ 0x6 */ + h2c_parameter[0] = dac_swing_lvl; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, + "[BTCoex], Set Dac Swing Level=0x%x\n", dac_swing_lvl); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, + "[BTCoex], FW write 0x64=0x%x\n", h2c_parameter[0]); + + btcoexist->btc_fill_h2c(btcoexist, 0x64, 1, h2c_parameter); +} + +void halbtc8723b2ant_set_fw_dec_bt_pwr(struct btc_coexist *btcoexist, + bool dec_bt_pwr) +{ + u8 h2c_parameter[1] = {0}; + + h2c_parameter[0] = 0; + + if (dec_bt_pwr) + h2c_parameter[0] |= BIT1; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, + "[BTCoex], decrease Bt Power : %s, FW write 0x62=0x%x\n", + (dec_bt_pwr? "Yes!!":"No!!"), h2c_parameter[0]); + + btcoexist->btc_fill_h2c(btcoexist, 0x62, 1, h2c_parameter); +} + +void halbtc8723b2ant_dec_bt_pwr(struct btc_coexist *btcoexist, + bool force_exec, bool dec_bt_pwr) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, + "[BTCoex], %s Dec BT power = %s\n", + (force_exec? "force to":""), (dec_bt_pwr? "ON":"OFF")); + coex_dm->cur_dec_bt_pwr = dec_bt_pwr; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], bPreDecBtPwr=%d, bCurDecBtPwr=%d\n", + coex_dm->pre_dec_bt_pwr, coex_dm->cur_dec_bt_pwr); + + if (coex_dm->pre_dec_bt_pwr == coex_dm->cur_dec_bt_pwr) + return; + } + halbtc8723b2ant_set_fw_dec_bt_pwr(btcoexist, coex_dm->cur_dec_bt_pwr); + + coex_dm->pre_dec_bt_pwr = coex_dm->cur_dec_bt_pwr; +} + +void halbtc8723b2ant_set_bt_auto_report(struct btc_coexist *btcoexist, + bool enable_auto_report) +{ + u8 h2c_parameter[1] = {0}; + h2c_parameter[0] = 0; + + if (enable_auto_report) + h2c_parameter[0] |= BIT0; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, + "[BTCoex], BT FW auto report : %s, FW write 0x68=0x%x\n", + (enable_auto_report? "Enabled!!":"Disabled!!"), + h2c_parameter[0]); + + btcoexist->btc_fill_h2c(btcoexist, 0x68, 1, h2c_parameter); +} + +void halbtc8723b2ant_bt_auto_report(struct btc_coexist *btcoexist, + bool force_exec, bool enable_auto_report) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, + "[BTCoex], %s BT Auto report = %s\n", + (force_exec? "force to":""), + ((enable_auto_report)? "Enabled":"Disabled")); + coex_dm->cur_bt_auto_report = enable_auto_report; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], bPreBtAutoReport=%d, " + "bCurBtAutoReport=%d\n", + coex_dm->pre_bt_auto_report, + coex_dm->cur_bt_auto_report); + + if (coex_dm->pre_bt_auto_report == coex_dm->cur_bt_auto_report) + return; + } + halbtc8723b2ant_set_bt_auto_report(btcoexist, + coex_dm->cur_bt_auto_report); + + coex_dm->pre_bt_auto_report = coex_dm->cur_bt_auto_report; +} + +void halbtc8723b2ant_fw_dac_swing_lvl(struct btc_coexist *btcoexist, + bool force_exec, u8 fw_dac_swing_lvl) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, + "[BTCoex], %s set FW Dac Swing level = %d\n", + (force_exec? "force to":""), fw_dac_swing_lvl); + coex_dm->cur_fw_dac_swing_lvl = fw_dac_swing_lvl; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], preFwDacSwingLvl=%d, " + "curFwDacSwingLvl=%d\n", + coex_dm->pre_fw_dac_swing_lvl, + coex_dm->cur_fw_dac_swing_lvl); + + if(coex_dm->pre_fw_dac_swing_lvl == + coex_dm->cur_fw_dac_swing_lvl) + return; + } + + halbtc8723b2ant_set_fw_dac_swing_level(btcoexist, + coex_dm->cur_fw_dac_swing_lvl); + coex_dm->pre_fw_dac_swing_lvl = coex_dm->cur_fw_dac_swing_lvl; +} + +void halbtc8723b2ant_set_sw_rf_rx_lpf_corner(struct btc_coexist *btcoexist, + bool rx_rf_shrink_on) +{ + if (rx_rf_shrink_on) { + /* Shrink RF Rx LPF corner */ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], Shrink RF Rx LPF corner!!\n"); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1e, + 0xfffff, 0xffffc); + } else { + /* Resume RF Rx LPF corner */ + /* After initialized, we can use coex_dm->btRf0x1eBackup */ + if (btcoexist->initilized) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], Resume RF Rx LPF corner!!\n"); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1e, + 0xfffff, + coex_dm->bt_rf0x1e_backup); + } + } +} + +void halbtc8723b2ant_rf_shrink(struct btc_coexist *btcoexist, + bool force_exec, bool rx_rf_shrink_on) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, + "[BTCoex], %s turn Rx RF Shrink = %s\n", + (force_exec? "force to":""), (rx_rf_shrink_on? "ON":"OFF")); + coex_dm->cur_rf_rx_lpf_shrink = rx_rf_shrink_on; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, + "[BTCoex], bPreRfRxLpfShrink=%d, " + "bCurRfRxLpfShrink=%d\n", + coex_dm->pre_rf_rx_lpf_shrink, + coex_dm->cur_rf_rx_lpf_shrink); + + if (coex_dm->pre_rf_rx_lpf_shrink == + coex_dm->cur_rf_rx_lpf_shrink) + return; + } + halbtc8723b2ant_set_sw_rf_rx_lpf_corner(btcoexist, + coex_dm->cur_rf_rx_lpf_shrink); + + coex_dm->pre_rf_rx_lpf_shrink = coex_dm->cur_rf_rx_lpf_shrink; +} + +void halbtc8723b2ant_set_sw_penalty_txrate_adaptive( + struct btc_coexist *btcoexist, + bool low_penalty_ra) +{ + u8 h2c_parameter[6] ={0}; + + h2c_parameter[0] = 0x6; /* opCode, 0x6= Retry_Penalty*/ + + if (low_penalty_ra) { + h2c_parameter[1] |= BIT0; + /*normal rate except MCS7/6/5, OFDM54/48/36*/ + h2c_parameter[2] = 0x00; + h2c_parameter[3] = 0xf7; /*MCS7 or OFDM54*/ + h2c_parameter[4] = 0xf8; /*MCS6 or OFDM48*/ + h2c_parameter[5] = 0xf9; /*MCS5 or OFDM36*/ + } + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, + "[BTCoex], set WiFi Low-Penalty Retry: %s", + (low_penalty_ra? "ON!!":"OFF!!")); + + btcoexist->btc_fill_h2c(btcoexist, 0x69, 6, h2c_parameter); +} + +void halbtc8723b2ant_low_penalty_ra(struct btc_coexist *btcoexist, + bool force_exec, bool low_penalty_ra) +{ + /*return; */ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, + "[BTCoex], %s turn LowPenaltyRA = %s\n", + (force_exec? "force to":""), (low_penalty_ra? "ON":"OFF")); + coex_dm->cur_low_penalty_ra = low_penalty_ra; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, + "[BTCoex], bPreLowPenaltyRa=%d, " + "bCurLowPenaltyRa=%d\n", + coex_dm->pre_low_penalty_ra, + coex_dm->cur_low_penalty_ra); + + if (coex_dm->pre_low_penalty_ra == coex_dm->cur_low_penalty_ra) + return; + } + halbtc8723b2ant_set_sw_penalty_txrate_adaptive(btcoexist, + coex_dm->cur_low_penalty_ra); + + coex_dm->pre_low_penalty_ra = coex_dm->cur_low_penalty_ra; +} + +void halbtc8723b2ant_set_dac_swing_reg(struct btc_coexist * btcoexist, + u32 level) +{ + u8 val = (u8) level; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], Write SwDacSwing = 0x%x\n", level); + btcoexist->btc_write_1byte_bitmask(btcoexist, 0x883, 0x3e, val); +} + +void halbtc8723b2ant_set_sw_fulltime_dac_swing(struct btc_coexist *btcoexist, + bool sw_dac_swing_on, + u32 sw_dac_swing_lvl) +{ + if(sw_dac_swing_on) + halbtc8723b2ant_set_dac_swing_reg(btcoexist, sw_dac_swing_lvl); + else + halbtc8723b2ant_set_dac_swing_reg(btcoexist, 0x18); +} + + +void halbtc8723b2ant_dac_swing(struct btc_coexist *btcoexist, + bool force_exec, bool dac_swing_on, + u32 dac_swing_lvl) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, + "[BTCoex], %s turn DacSwing=%s, dac_swing_lvl=0x%x\n", + (force_exec? "force to":""), + (dac_swing_on? "ON":"OFF"), dac_swing_lvl); + coex_dm->cur_dac_swing_on = dac_swing_on; + coex_dm->cur_dac_swing_lvl = dac_swing_lvl; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, + "[BTCoex], bPreDacSwingOn=%d, preDacSwingLvl=0x%x," + " bCurDacSwingOn=%d, curDacSwingLvl=0x%x\n", + coex_dm->pre_dac_swing_on, coex_dm->pre_dac_swing_lvl, + coex_dm->cur_dac_swing_on, + coex_dm->cur_dac_swing_lvl); + + if ((coex_dm->pre_dac_swing_on == coex_dm->cur_dac_swing_on) && + (coex_dm->pre_dac_swing_lvl == coex_dm->cur_dac_swing_lvl)) + return; + } + mdelay(30); + halbtc8723b2ant_set_sw_fulltime_dac_swing(btcoexist, dac_swing_on, + dac_swing_lvl); + + coex_dm->pre_dac_swing_on = coex_dm->cur_dac_swing_on; + coex_dm->pre_dac_swing_lvl = coex_dm->cur_dac_swing_lvl; +} + +void halbtc8723b2ant_set_adc_backoff(struct btc_coexist *btcoexist, + bool adc_backoff) +{ + if (adc_backoff) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], BB BackOff Level On!\n"); + btcoexist->btc_write_1byte_bitmask(btcoexist, 0xc05, 0x30, 0x3); + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], BB BackOff Level Off!\n"); + btcoexist->btc_write_1byte_bitmask(btcoexist, 0xc05, 0x30, 0x1); + } +} + +void halbtc8723b2ant_adc_backoff(struct btc_coexist *btcoexist, + bool force_exec, bool adc_backoff) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, + "[BTCoex], %s turn AdcBackOff = %s\n", + (force_exec? "force to":""), (adc_backoff? "ON":"OFF")); + coex_dm->cur_adc_back_off = adc_backoff; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, + "[BTCoex], bPreAdcBackOff=%d, bCurAdcBackOff=%d\n", + coex_dm->pre_adc_back_off, + coex_dm->cur_adc_back_off); + + if (coex_dm->pre_adc_back_off == coex_dm->cur_adc_back_off) + return; + } + halbtc8723b2ant_set_adc_backoff(btcoexist, coex_dm->cur_adc_back_off); + + coex_dm->pre_adc_back_off = coex_dm->cur_adc_back_off; +} + +void halbtc8723b2ant_set_agc_table(struct btc_coexist *btcoexist, + bool agc_table_en) +{ + u8 rssi_adjust_val = 0; + + /* BB AGC Gain Table */ + if (agc_table_en) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], BB Agc Table On!\n"); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0x6e1A0001); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0x6d1B0001); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0x6c1C0001); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0x6b1D0001); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0x6a1E0001); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0x691F0001); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0x68200001); + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], BB Agc Table Off!\n"); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0xaa1A0001); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0xa91B0001); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0xa81C0001); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0xa71D0001); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0xa61E0001); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0xa51F0001); + btcoexist->btc_write_4byte(btcoexist, 0xc78, 0xa4200001); + } + + + /* RF Gain */ + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0xef, 0xfffff, 0x02000); + if (agc_table_en) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], Agc Table On!\n"); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x3b, + 0xfffff, 0x38fff); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x3b, + 0xfffff, 0x38ffe); + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], Agc Table Off!\n"); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x3b, + 0xfffff, 0x380c3); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x3b, + 0xfffff, 0x28ce6); + } + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0xef, 0xfffff, 0x0); + + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0xed, 0xfffff, 0x1); + + if (agc_table_en) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], Agc Table On!\n"); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x40, + 0xfffff, 0x38fff); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x40, + 0xfffff, 0x38ffe); + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], Agc Table Off!\n"); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x40, + 0xfffff, 0x380c3); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x40, + 0xfffff, 0x28ce6); + } + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0xed, 0xfffff, 0x0); + + /* set rssiAdjustVal for wifi module. */ + if (agc_table_en) + rssi_adjust_val = 8; + btcoexist->btc_set(btcoexist, BTC_SET_U1_RSSI_ADJ_VAL_FOR_AGC_TABLE_ON, + &rssi_adjust_val); +} + +void halbtc8723b2ant_agc_table(struct btc_coexist *btcoexist, + bool force_exec, bool agc_table_en) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, + "[BTCoex], %s %s Agc Table\n", + (force_exec? "force to":""), + (agc_table_en? "Enable":"Disable")); + coex_dm->cur_agc_table_en = agc_table_en; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, + "[BTCoex], bPreAgcTableEn=%d, bCurAgcTableEn=%d\n", + coex_dm->pre_agc_table_en, coex_dm->cur_agc_table_en); + + if (coex_dm->pre_agc_table_en == coex_dm->cur_agc_table_en) + return; + } + halbtc8723b2ant_set_agc_table(btcoexist, agc_table_en); + + coex_dm->pre_agc_table_en = coex_dm->cur_agc_table_en; +} + +void halbtc8723b2ant_set_coex_table(struct btc_coexist *btcoexist, + u32 val0x6c0, u32 val0x6c4, + u32 val0x6c8, u8 val0x6cc) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], set coex table, set 0x6c0=0x%x\n", val0x6c0); + btcoexist->btc_write_4byte(btcoexist, 0x6c0, val0x6c0); + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], set coex table, set 0x6c4=0x%x\n", val0x6c4); + btcoexist->btc_write_4byte(btcoexist, 0x6c4, val0x6c4); + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], set coex table, set 0x6c8=0x%x\n", val0x6c8); + btcoexist->btc_write_4byte(btcoexist, 0x6c8, val0x6c8); + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_EXEC, + "[BTCoex], set coex table, set 0x6cc=0x%x\n", val0x6cc); + btcoexist->btc_write_1byte(btcoexist, 0x6cc, val0x6cc); +} + +void halbtc8723b2ant_coex_table(struct btc_coexist *btcoexist, + bool force_exec, u32 val0x6c0, + u32 val0x6c4, u32 val0x6c8, + u8 val0x6cc) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW, + "[BTCoex], %s write Coex Table 0x6c0=0x%x," + " 0x6c4=0x%x, 0x6c8=0x%x, 0x6cc=0x%x\n", + (force_exec? "force to":""), val0x6c0, + val0x6c4, val0x6c8, val0x6cc); + coex_dm->cur_val0x6c0 = val0x6c0; + coex_dm->cur_val0x6c4 = val0x6c4; + coex_dm->cur_val0x6c8 = val0x6c8; + coex_dm->cur_val0x6cc = val0x6cc; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, + "[BTCoex], preVal0x6c0=0x%x, " + "preVal0x6c4=0x%x, preVal0x6c8=0x%x, " + "preVal0x6cc=0x%x !!\n", + coex_dm->pre_val0x6c0, coex_dm->pre_val0x6c4, + coex_dm->pre_val0x6c8, coex_dm->pre_val0x6cc); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_SW_DETAIL, + "[BTCoex], curVal0x6c0=0x%x, " + "curVal0x6c4=0x%x, curVal0x6c8=0x%x, " + "curVal0x6cc=0x%x !!\n", + coex_dm->cur_val0x6c0, coex_dm->cur_val0x6c4, + coex_dm->cur_val0x6c8, coex_dm->cur_val0x6cc); + + if ((coex_dm->pre_val0x6c0 == coex_dm->cur_val0x6c0) && + (coex_dm->pre_val0x6c4 == coex_dm->cur_val0x6c4) && + (coex_dm->pre_val0x6c8 == coex_dm->cur_val0x6c8) && + (coex_dm->pre_val0x6cc == coex_dm->cur_val0x6cc)) + return; + } + halbtc8723b2ant_set_coex_table(btcoexist, val0x6c0, val0x6c4, + val0x6c8, val0x6cc); + + coex_dm->pre_val0x6c0 = coex_dm->cur_val0x6c0; + coex_dm->pre_val0x6c4 = coex_dm->cur_val0x6c4; + coex_dm->pre_val0x6c8 = coex_dm->cur_val0x6c8; + coex_dm->pre_val0x6cc = coex_dm->cur_val0x6cc; +} + +void halbtc8723b2ant_coex_table_with_type(struct btc_coexist *btcoexist, + bool force_exec, u8 type) +{ + switch (type) { + case 0: + halbtc8723b2ant_coex_table(btcoexist, force_exec, 0x55555555, + 0x55555555, 0xffff, 0x3); + break; + case 1: + halbtc8723b2ant_coex_table(btcoexist, force_exec, 0x55555555, + 0x5afa5afa, 0xffff, 0x3); + break; + case 2: + halbtc8723b2ant_coex_table(btcoexist, force_exec, 0x5a5a5a5a, + 0x5a5a5a5a, 0xffff, 0x3); + break; + case 3: + halbtc8723b2ant_coex_table(btcoexist, force_exec, 0xaaaaaaaa, + 0xaaaaaaaa, 0xffff, 0x3); + break; + case 4: + halbtc8723b2ant_coex_table(btcoexist, force_exec, 0xffffffff, + 0xffffffff, 0xffff, 0x3); + break; + case 5: + halbtc8723b2ant_coex_table(btcoexist, force_exec, 0x5fff5fff, + 0x5fff5fff, 0xffff, 0x3); + break; + case 6: + halbtc8723b2ant_coex_table(btcoexist, force_exec, 0x55ff55ff, + 0x5a5a5a5a, 0xffff, 0x3); + break; + case 7: + halbtc8723b2ant_coex_table(btcoexist, force_exec, 0x55ff55ff, + 0x5afa5afa, 0xffff, 0x3); + break; + case 8: + halbtc8723b2ant_coex_table(btcoexist, force_exec, 0x5aea5aea, + 0x5aea5aea, 0xffff, 0x3); + break; + case 9: + halbtc8723b2ant_coex_table(btcoexist, force_exec, 0x55ff55ff, + 0x5aea5aea, 0xffff, 0x3); + break; + case 10: + halbtc8723b2ant_coex_table(btcoexist, force_exec, 0x55ff55ff, + 0x5aff5aff, 0xffff, 0x3); + break; + case 11: + halbtc8723b2ant_coex_table(btcoexist, force_exec, 0x55ff55ff, + 0x5a5f5a5f, 0xffff, 0x3); + break; + case 12: + halbtc8723b2ant_coex_table(btcoexist, force_exec, 0x55ff55ff, + 0x5f5f5f5f, 0xffff, 0x3); + break; + default: + break; + } +} + +void halbtc8723b2ant_set_fw_ignore_wlan_act(struct btc_coexist *btcoexist, + bool enable) +{ + u8 h2c_parameter[1] ={0}; + + if (enable) + h2c_parameter[0] |= BIT0;/* function enable*/ + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, + "[BTCoex], set FW for BT Ignore Wlan_Act, " + "FW write 0x63=0x%x\n", h2c_parameter[0]); + + btcoexist->btc_fill_h2c(btcoexist, 0x63, 1, h2c_parameter); +} + +void halbtc8723b2ant_ignore_wlan_act(struct btc_coexist *btcoexist, + bool force_exec, bool enable) +{ + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, + "[BTCoex], %s turn Ignore WlanAct %s\n", + (force_exec? "force to":""), (enable? "ON":"OFF")); + coex_dm->cur_ignore_wlan_act = enable; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], bPreIgnoreWlanAct = %d, " + "bCurIgnoreWlanAct = %d!!\n", + coex_dm->pre_ignore_wlan_act, + coex_dm->cur_ignore_wlan_act); + + if (coex_dm->pre_ignore_wlan_act == + coex_dm->cur_ignore_wlan_act) + return; + } + halbtc8723b2ant_set_fw_ignore_wlan_act(btcoexist, enable); + + coex_dm->pre_ignore_wlan_act = coex_dm->cur_ignore_wlan_act; +} + +void halbtc8723b2ant_set_fw_ps_tdma(struct btc_coexist *btcoexist, u8 byte1, + u8 byte2, u8 byte3, u8 byte4, u8 byte5) +{ + u8 h2c_parameter[5] ={0}; + + h2c_parameter[0] = byte1; + h2c_parameter[1] = byte2; + h2c_parameter[2] = byte3; + h2c_parameter[3] = byte4; + h2c_parameter[4] = byte5; + + coex_dm->ps_tdma_para[0] = byte1; + coex_dm->ps_tdma_para[1] = byte2; + coex_dm->ps_tdma_para[2] = byte3; + coex_dm->ps_tdma_para[3] = byte4; + coex_dm->ps_tdma_para[4] = byte5; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, + "[BTCoex], FW write 0x60(5bytes)=0x%x%08x\n", + h2c_parameter[0], + h2c_parameter[1] << 24 | h2c_parameter[2] << 16 | + h2c_parameter[3] << 8 | h2c_parameter[4]); + + btcoexist->btc_fill_h2c(btcoexist, 0x60, 5, h2c_parameter); +} + +void halbtc8723b2ant_sw_mechanism1(struct btc_coexist *btcoexist, + bool shrink_rx_lpf, bool low_penalty_ra, + bool limited_dig, bool bt_lna_constrain) +{ + /* + u32 wifi_bw; + + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + + if(BTC_WIFI_BW_HT40 != wifi_bw) //only shrink RF Rx LPF for HT40 + { + if (shrink_rx_lpf) + shrink_rx_lpf = false; + } + */ + + halbtc8723b2ant_rf_shrink(btcoexist, NORMAL_EXEC, shrink_rx_lpf); + halbtc8723b2ant_low_penalty_ra(btcoexist, NORMAL_EXEC, low_penalty_ra); +} + +void halbtc8723b2ant_sw_mechanism2(struct btc_coexist *btcoexist, + bool agc_table_shift, bool adc_backoff, + bool sw_dac_swing, u32 dac_swing_lvl) +{ + halbtc8723b2ant_agc_table(btcoexist, NORMAL_EXEC, agc_table_shift); + /*halbtc8723b2ant_adc_backoff(btcoexist, NORMAL_EXEC, adc_backoff);*/ + halbtc8723b2ant_dac_swing(btcoexist, NORMAL_EXEC, sw_dac_swing, + dac_swing_lvl); +} + +void halbtc8723b2ant_set_ant_path(struct btc_coexist *btcoexist, + u8 antpos_type, bool init_hwcfg, + bool wifi_off) +{ + struct btc_board_info *board_info = &btcoexist->board_info; + u32 fw_ver = 0, u32tmp=0; + bool pg_ext_switch = false; + bool use_ext_switch = false; + u8 h2c_parameter[2] ={0}; + + btcoexist->btc_get(btcoexist, BTC_GET_BL_EXT_SWITCH, &pg_ext_switch); + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_FW_VER, &fw_ver); + + if ((fw_ver<0xc0000) || pg_ext_switch) + use_ext_switch = true; + + if (init_hwcfg) { + /* 0x4c[23]=0, 0x4c[24]=1 Antenna control by WL/BT */ + u32tmp = btcoexist->btc_read_4byte(btcoexist, 0x4c); + u32tmp &= ~BIT23; + u32tmp |= BIT24; + btcoexist->btc_write_4byte(btcoexist, 0x4c, u32tmp); + + btcoexist->btc_write_1byte(btcoexist, 0x974, 0xff); + btcoexist->btc_write_1byte_bitmask(btcoexist, 0x944, 0x3, 0x3); + btcoexist->btc_write_1byte(btcoexist, 0x930, 0x77); + btcoexist->btc_write_1byte_bitmask(btcoexist, 0x67, 0x20, 0x1); + + /* Force GNT_BT to low */ + btcoexist->btc_write_1byte_bitmask(btcoexist, 0x765, 0x18, 0x0); + btcoexist->btc_write_2byte(btcoexist, 0x948, 0x0); + + if (board_info->btdm_ant_pos == BTC_ANTENNA_AT_MAIN_PORT) { + /* tell firmware "no antenna inverse" */ + h2c_parameter[0] = 0; + h2c_parameter[1] = 1; /* ext switch type */ + btcoexist->btc_fill_h2c(btcoexist, 0x65, 2, + h2c_parameter); + } else { + /* tell firmware "antenna inverse" */ + h2c_parameter[0] = 1; + h2c_parameter[1] = 1; /* ext switch type */ + btcoexist->btc_fill_h2c(btcoexist, 0x65, 2, + h2c_parameter); + } + } + + /* ext switch setting */ + if (use_ext_switch) { + /* fixed internal switch S1->WiFi, S0->BT */ + btcoexist->btc_write_2byte(btcoexist, 0x948, 0x0); + switch (antpos_type) { + case BTC_ANT_WIFI_AT_MAIN: + /* ext switch main at wifi */ + btcoexist->btc_write_1byte_bitmask(btcoexist, 0x92c, + 0x3, 0x1); + break; + case BTC_ANT_WIFI_AT_AUX: + /* ext switch aux at wifi */ + btcoexist->btc_write_1byte_bitmask(btcoexist, + 0x92c, 0x3, 0x2); + break; + } + } else { /* internal switch */ + /* fixed ext switch */ + btcoexist->btc_write_1byte_bitmask(btcoexist, 0x92c, 0x3, 0x1); + switch (antpos_type) { + case BTC_ANT_WIFI_AT_MAIN: + /* fixed internal switch S1->WiFi, S0->BT */ + btcoexist->btc_write_2byte(btcoexist, 0x948, 0x0); + break; + case BTC_ANT_WIFI_AT_AUX: + /* fixed internal switch S0->WiFi, S1->BT */ + btcoexist->btc_write_2byte(btcoexist, 0x948, 0x280); + break; + } + } +} + + +void halbtc8723b2ant_ps_tdma(struct btc_coexist *btcoexist, bool force_exec, + bool turn_on, u8 type) +{ + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, + "[BTCoex], %s turn %s PS TDMA, type=%d\n", + (force_exec? "force to":""), (turn_on? "ON":"OFF"), type); + coex_dm->cur_ps_tdma_on = turn_on; + coex_dm->cur_ps_tdma = type; + + if (!force_exec) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], bPrePsTdmaOn = %d, bCurPsTdmaOn = %d!!\n", + coex_dm->pre_ps_tdma_on, coex_dm->cur_ps_tdma_on); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], prePsTdma = %d, curPsTdma = %d!!\n", + coex_dm->pre_ps_tdma, coex_dm->cur_ps_tdma); + + if ((coex_dm->pre_ps_tdma_on == coex_dm->cur_ps_tdma_on) && + (coex_dm->pre_ps_tdma == coex_dm->cur_ps_tdma)) + return; + } + if (turn_on) { + switch (type) { + case 1: + default: + halbtc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x1a, + 0x1a, 0xe1, 0x90); + break; + case 2: + halbtc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x12, + 0x12, 0xe1, 0x90); + break; + case 3: + halbtc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x1c, + 0x3, 0xf1, 0x90); + break; + case 4: + halbtc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x10, + 0x03, 0xf1, 0x90); + break; + case 5: + halbtc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x1a, + 0x1a, 0x60, 0x90); + break; + case 6: + halbtc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x12, + 0x12, 0x60, 0x90); + break; + case 7: + halbtc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x1c, + 0x3, 0x70, 0x90); + break; + case 8: + halbtc8723b2ant_set_fw_ps_tdma(btcoexist, 0xa3, 0x10, + 0x3, 0x70, 0x90); + break; + case 9: + halbtc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x1a, + 0x1a, 0xe1, 0x90); + break; + case 10: + halbtc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x12, + 0x12, 0xe1, 0x90); + break; + case 11: + halbtc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0xa, + 0xa, 0xe1, 0x90); + break; + case 12: + halbtc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x5, + 0x5, 0xe1, 0x90); + break; + case 13: + halbtc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x1a, + 0x1a, 0x60, 0x90); + break; + case 14: + halbtc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x12, + 0x12, 0x60, 0x90); + break; + case 15: + halbtc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0xa, + 0xa, 0x60, 0x90); + break; + case 16: + halbtc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x5, + 0x5, 0x60, 0x90); + break; + case 17: + halbtc8723b2ant_set_fw_ps_tdma(btcoexist, 0xa3, 0x2f, + 0x2f, 0x60, 0x90); + break; + case 18: + halbtc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x5, + 0x5, 0xe1, 0x90); + break; + case 19: + halbtc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x25, + 0x25, 0xe1, 0x90); + break; + case 20: + halbtc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x25, + 0x25, 0x60, 0x90); + break; + case 21: + halbtc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x15, + 0x03, 0x70, 0x90); + break; + case 71: + halbtc8723b2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x1a, + 0x1a, 0xe1, 0x90); + break; + } + } else { + /* disable PS tdma */ + switch (type) { + case 0: + halbtc8723b2ant_set_fw_ps_tdma(btcoexist, 0x0, 0x0, 0x0, + 0x40, 0x0); + break; + case 1: + halbtc8723b2ant_set_fw_ps_tdma(btcoexist, 0x0, 0x0, 0x0, + 0x48, 0x0); + break; + default: + halbtc8723b2ant_set_fw_ps_tdma(btcoexist, 0x0, 0x0, 0x0, + 0x40, 0x0); + break; + } + } + + /* update pre state */ + coex_dm->pre_ps_tdma_on = coex_dm->cur_ps_tdma_on; + coex_dm->pre_ps_tdma = coex_dm->cur_ps_tdma; +} + +void halbtc8723b2ant_coex_alloff(struct btc_coexist *btcoexist) +{ + /* fw all off */ + halbtc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, false, 1); + halbtc8723b2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6); + halbtc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + /* sw all off */ + halbtc8723b2ant_sw_mechanism1(btcoexist, false, false, false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, false, false, false, 0x18); + + /* hw all off */ + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, 0xfffff, 0x0); + halbtc8723b2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 0); +} + +void halbtc8723b2ant_init_coex_dm(struct btc_coexist *btcoexist) +{ + /* force to reset coex mechanism*/ + + halbtc8723b2ant_ps_tdma(btcoexist, FORCE_EXEC, false, 1); + halbtc8723b2ant_fw_dac_swing_lvl(btcoexist, FORCE_EXEC, 6); + halbtc8723b2ant_dec_bt_pwr(btcoexist, FORCE_EXEC, false); + + halbtc8723b2ant_sw_mechanism1(btcoexist, false, false, false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, false, false, false, 0x18); +} + +void halbtc8723b2ant_action_bt_inquiry(struct btc_coexist *btcoexist) +{ + bool wifi_connected = false; + bool low_pwr_disable = true; + + btcoexist->btc_set(btcoexist, BTC_SET_ACT_DISABLE_LOW_POWER, + &low_pwr_disable); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_CONNECTED, + &wifi_connected); + + if (wifi_connected) { + halbtc8723b2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 7); + halbtc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 3); + } else { + halbtc8723b2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 0); + halbtc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, false, 1); + } + halbtc8723b2ant_fw_dac_swing_lvl(btcoexist, FORCE_EXEC, 6); + halbtc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + halbtc8723b2ant_sw_mechanism1(btcoexist, false, false, false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, false, false, false, 0x18); + + coex_dm->need_recover_0x948 = true; + coex_dm->backup_0x948 = btcoexist->btc_read_2byte(btcoexist, 0x948); + + halbtc8723b2ant_set_ant_path(btcoexist, BTC_ANT_WIFI_AT_AUX, + false, false); +} + +bool halbtc8723b2ant_is_common_action(struct btc_coexist *btcoexist) +{ + bool bCommon = false, wifi_connected = false; + bool wifi_busy = false; + bool bt_hs_on = false, low_pwr_disable = false; + + btcoexist->btc_get(btcoexist, BTC_GET_BL_HS_OPERATION, &bt_hs_on); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_CONNECTED, + &wifi_connected); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_BUSY, &wifi_busy); + + if (!wifi_connected) { + low_pwr_disable = false; + btcoexist->btc_set(btcoexist, BTC_SET_ACT_DISABLE_LOW_POWER, + &low_pwr_disable); + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Wifi non-connected idle!!\n"); + + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, 0xfffff, + 0x0); + halbtc8723b2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 0); + halbtc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, false, 1); + halbtc8723b2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6); + halbtc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + halbtc8723b2ant_sw_mechanism1(btcoexist, false, false, false, + false); + halbtc8723b2ant_sw_mechanism2(btcoexist, false, false, false, + 0x18); + + bCommon = true; + } else { + if (BT_8723B_2ANT_BT_STATUS_NON_CONNECTED_IDLE == + coex_dm->bt_status) { + low_pwr_disable = false; + btcoexist->btc_set(btcoexist, + BTC_SET_ACT_DISABLE_LOW_POWER, + &low_pwr_disable); + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Wifi connected + " + "BT non connected-idle!!\n"); + + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, + 0xfffff, 0x0); + halbtc8723b2ant_coex_table_with_type(btcoexist, + NORMAL_EXEC, 0); + halbtc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, false, + 1); + halbtc8723b2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, + 0xb); + halbtc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, + false); + + halbtc8723b2ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + + bCommon = true; + } else if (BT_8723B_2ANT_BT_STATUS_CONNECTED_IDLE == + coex_dm->bt_status) { + low_pwr_disable = true; + btcoexist->btc_set(btcoexist, + BTC_SET_ACT_DISABLE_LOW_POWER, + &low_pwr_disable); + + if(bt_hs_on) + return false; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Wifi connected + " + "BT connected-idle!!\n"); + + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, + 0xfffff, 0x0); + halbtc8723b2ant_coex_table_with_type(btcoexist, + NORMAL_EXEC, 0); + halbtc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, false, + 1); + halbtc8723b2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, + 0xb); + halbtc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, + false); + + halbtc8723b2ant_sw_mechanism1(btcoexist, true, false, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + + bCommon = true; + } else { + low_pwr_disable = true; + btcoexist->btc_set(btcoexist, + BTC_SET_ACT_DISABLE_LOW_POWER, + &low_pwr_disable); + + if (wifi_busy) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Wifi Connected-Busy + " + "BT Busy!!\n"); + bCommon = false; + } else { + if(bt_hs_on) + return false; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Wifi Connected-Idle + " + "BT Busy!!\n"); + + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, + 0x1, 0xfffff, 0x0); + halbtc8723b2ant_coex_table_with_type(btcoexist, + NORMAL_EXEC, + 7); + halbtc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, + true, 21); + halbtc8723b2ant_fw_dac_swing_lvl(btcoexist, + NORMAL_EXEC, + 0xb); + if (halbtc8723b2ant_need_to_dec_bt_pwr(btcoexist)) + halbtc8723b2ant_dec_bt_pwr(btcoexist, + NORMAL_EXEC, + true); + else + halbtc8723b2ant_dec_bt_pwr(btcoexist, + NORMAL_EXEC, + false); + halbtc8723b2ant_sw_mechanism1(btcoexist, false, + false, false, + false); + halbtc8723b2ant_sw_mechanism2(btcoexist, false, + false, false, + 0x18); + bCommon = true; + } + } + } + + return bCommon; +} +void halbtc8723b2ant_tdma_duration_adjust(struct btc_coexist *btcoexist, + bool sco_hid, bool tx_pause, + u8 max_interval) +{ + static s32 up, dn, m, n, wait_count; + /*0: no change, +1: increase WiFi duration, -1: decrease WiFi duration*/ + s32 result; + u8 retryCount=0; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW, + "[BTCoex], TdmaDurationAdjust()\n"); + + if (!coex_dm->auto_tdma_adjust) { + coex_dm->auto_tdma_adjust = true; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], first run TdmaDurationAdjust()!!\n"); + if (sco_hid) { + if (tx_pause) { + if (max_interval == 1) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 13); + coex_dm->ps_tdma_du_adj_type = 13; + }else if (max_interval == 2) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 14); + coex_dm->ps_tdma_du_adj_type = 14; + } else if (max_interval == 3) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 15); + coex_dm->ps_tdma_du_adj_type = 15; + } else { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 15); + coex_dm->ps_tdma_du_adj_type = 15; + } + } else { + if(max_interval == 1) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 9); + coex_dm->ps_tdma_du_adj_type = 9; + } else if (max_interval == 2) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 10); + coex_dm->ps_tdma_du_adj_type = 10; + } else if (max_interval == 3) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 11); + coex_dm->ps_tdma_du_adj_type = 11; + } else { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 11); + coex_dm->ps_tdma_du_adj_type = 11; + } + } + } else { + if (tx_pause) { + if (max_interval == 1) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 5); + coex_dm->ps_tdma_du_adj_type = 5; + } else if (max_interval == 2) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 6); + coex_dm->ps_tdma_du_adj_type = 6; + } else if (max_interval == 3) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 7); + coex_dm->ps_tdma_du_adj_type = 7; + } else { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 7); + coex_dm->ps_tdma_du_adj_type = 7; + } + } else { + if (max_interval == 1) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 1); + coex_dm->ps_tdma_du_adj_type = 1; + } else if (max_interval == 2) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 2); + coex_dm->ps_tdma_du_adj_type = 2; + } else if (max_interval == 3) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 3); + coex_dm->ps_tdma_du_adj_type = 3; + } else { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 3); + coex_dm->ps_tdma_du_adj_type = 3; + } + } + } + + up = 0; + dn = 0; + m = 1; + n= 3; + result = 0; + wait_count = 0; + } else { + /*accquire the BT TRx retry count from BT_Info byte2*/ + retryCount = coex_sta->bt_retry_cnt; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], retryCount = %d\n", retryCount); + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], up=%d, dn=%d, m=%d, n=%d, wait_count=%d\n", + up, dn, m, n, wait_count); + result = 0; + wait_count++; + /* no retry in the last 2-second duration*/ + if (retryCount == 0) { + up++; + dn--; + + if (dn <= 0) + dn = 0; + + if (up >= n) { + wait_count = 0; + n = 3; + up = 0; + dn = 0; + result = 1; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_TRACE_FW_DETAIL, + "[BTCoex], Increase wifi " + "duration!!\n"); + }/* <=3 retry in the last 2-second duration*/ + } else if (retryCount <= 3) { + up--; + dn++; + + if (up <= 0) + up = 0; + + if (dn == 2) { + if (wait_count <= 2) + m++; + else + m = 1; + + if (m >= 20) + m = 20; + + n = 3 * m; + up = 0; + dn = 0; + wait_count = 0; + result = -1; + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_TRACE_FW_DETAIL, + "[BTCoex], Decrease wifi duration " + "for retryCounter<3!!\n"); + } + } else { + if (wait_count == 1) + m++; + else + m = 1; + + if (m >= 20) + m = 20; + + n = 3 * m; + up = 0; + dn = 0; + wait_count = 0; + result = -1; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], Decrease wifi duration " + "for retryCounter>3!!\n"); + } + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], max Interval = %d\n", max_interval); + if (max_interval == 1) { + if (tx_pause) { + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_TRACE_FW_DETAIL, + "[BTCoex], TxPause = 1\n"); + + if (coex_dm->cur_ps_tdma == 71) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 5); + coex_dm->ps_tdma_du_adj_type = 5; + } else if (coex_dm->cur_ps_tdma == 1) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 5); + coex_dm->ps_tdma_du_adj_type = 5; + } else if (coex_dm->cur_ps_tdma == 2) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 6); + coex_dm->ps_tdma_du_adj_type = 6; + } else if (coex_dm->cur_ps_tdma == 3) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 7); + coex_dm->ps_tdma_du_adj_type = 7; + } else if (coex_dm->cur_ps_tdma == 4) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 8); + coex_dm->ps_tdma_du_adj_type = 8; + } + + if (coex_dm->cur_ps_tdma == 9) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 13); + coex_dm->ps_tdma_du_adj_type = 13; + } else if (coex_dm->cur_ps_tdma == 10) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 14); + coex_dm->ps_tdma_du_adj_type = 14; + } else if (coex_dm->cur_ps_tdma == 11) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 15); + coex_dm->ps_tdma_du_adj_type = 15; + } else if (coex_dm->cur_ps_tdma == 12) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 16); + coex_dm->ps_tdma_du_adj_type = 16; + } + + if (result == -1) { + if (coex_dm->cur_ps_tdma == 5) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 6); + coex_dm->ps_tdma_du_adj_type = + 6; + } else if (coex_dm->cur_ps_tdma == 6) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 7); + coex_dm->ps_tdma_du_adj_type = + 7; + } else if (coex_dm->cur_ps_tdma == 7) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 8); + coex_dm->ps_tdma_du_adj_type = + 8; + } else if (coex_dm->cur_ps_tdma == 13) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 14); + coex_dm->ps_tdma_du_adj_type = + 14; + } else if(coex_dm->cur_ps_tdma == 14) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 15); + coex_dm->ps_tdma_du_adj_type = + 15; + } else if(coex_dm->cur_ps_tdma == 15) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 16); + coex_dm->ps_tdma_du_adj_type = + 16; + } + } else if (result == 1) { + if (coex_dm->cur_ps_tdma == 8) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 7); + coex_dm->ps_tdma_du_adj_type = + 7; + } else if (coex_dm->cur_ps_tdma == 7) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 6); + coex_dm->ps_tdma_du_adj_type = + 6; + } else if(coex_dm->cur_ps_tdma == 6) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 5); + coex_dm->ps_tdma_du_adj_type = + 5; + } else if(coex_dm->cur_ps_tdma == 16) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 15); + coex_dm->ps_tdma_du_adj_type = + 15; + } else if(coex_dm->cur_ps_tdma == 15) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 14); + coex_dm->ps_tdma_du_adj_type = + 14; + } else if(coex_dm->cur_ps_tdma == 14) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 13); + coex_dm->ps_tdma_du_adj_type = + 13; + } + } + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_TRACE_FW_DETAIL, + "[BTCoex], TxPause = 0\n"); + if (coex_dm->cur_ps_tdma == 5) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 71); + coex_dm->ps_tdma_du_adj_type = 71; + } else if (coex_dm->cur_ps_tdma == 6) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 2); + coex_dm->ps_tdma_du_adj_type = 2; + } else if (coex_dm->cur_ps_tdma == 7) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 3); + coex_dm->ps_tdma_du_adj_type = 3; + } else if (coex_dm->cur_ps_tdma == 8) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 4); + coex_dm->ps_tdma_du_adj_type = 4; + } + + if (coex_dm->cur_ps_tdma == 13) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 9); + coex_dm->ps_tdma_du_adj_type = 9; + } else if (coex_dm->cur_ps_tdma == 14) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 10); + coex_dm->ps_tdma_du_adj_type = 10; + } else if (coex_dm->cur_ps_tdma == 15) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 11); + coex_dm->ps_tdma_du_adj_type = 11; + } else if(coex_dm->cur_ps_tdma == 16) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 12); + coex_dm->ps_tdma_du_adj_type = 12; + } + + if (result == -1) { + if (coex_dm->cur_ps_tdma == 71) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 1); + coex_dm->ps_tdma_du_adj_type = + 1; + } else if (coex_dm->cur_ps_tdma == 1) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 2); + coex_dm->ps_tdma_du_adj_type = + 2; + } else if (coex_dm->cur_ps_tdma == 2) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 3); + coex_dm->ps_tdma_du_adj_type = + 3; + } else if(coex_dm->cur_ps_tdma == 3) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 4); + coex_dm->ps_tdma_du_adj_type = + 4; + } else if(coex_dm->cur_ps_tdma == 9) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 10); + coex_dm->ps_tdma_du_adj_type = + 10; + } else if (coex_dm->cur_ps_tdma == 10) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 11); + coex_dm->ps_tdma_du_adj_type = + 11; + } else if (coex_dm->cur_ps_tdma == 11) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 12); + coex_dm->ps_tdma_du_adj_type = + 12; + } + } else if (result == 1) { + if (coex_dm->cur_ps_tdma == 4) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 3); + coex_dm->ps_tdma_du_adj_type = + 3; + } else if (coex_dm->cur_ps_tdma == 3) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 2); + coex_dm->ps_tdma_du_adj_type = + 2; + } else if (coex_dm->cur_ps_tdma == 2) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 1); + coex_dm->ps_tdma_du_adj_type = + 1; + } else if (coex_dm->cur_ps_tdma == 1) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 71); + coex_dm->ps_tdma_du_adj_type = + 71; + } else if (coex_dm->cur_ps_tdma == 12) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 11); + coex_dm->ps_tdma_du_adj_type = + 11; + } else if (coex_dm->cur_ps_tdma == 11) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 10); + coex_dm->ps_tdma_du_adj_type = + 10; + } else if (coex_dm->cur_ps_tdma == 10) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 9); + coex_dm->ps_tdma_du_adj_type = + 9; + } + } + } + } else if(max_interval == 2) { + if (tx_pause) { + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_TRACE_FW_DETAIL, + "[BTCoex], TxPause = 1\n"); + if (coex_dm->cur_ps_tdma == 1) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 6); + coex_dm->ps_tdma_du_adj_type = 6; + } else if (coex_dm->cur_ps_tdma == 2) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 6); + coex_dm->ps_tdma_du_adj_type = 6; + } else if (coex_dm->cur_ps_tdma == 3) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 7); + coex_dm->ps_tdma_du_adj_type = 7; + } else if (coex_dm->cur_ps_tdma == 4) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 8); + coex_dm->ps_tdma_du_adj_type = 8; + } + if (coex_dm->cur_ps_tdma == 9) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 14); + coex_dm->ps_tdma_du_adj_type = 14; + } else if (coex_dm->cur_ps_tdma == 10) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 14); + coex_dm->ps_tdma_du_adj_type = 14; + } else if (coex_dm->cur_ps_tdma == 11) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 15); + coex_dm->ps_tdma_du_adj_type = 15; + } else if (coex_dm->cur_ps_tdma == 12) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 16); + coex_dm->ps_tdma_du_adj_type = 16; + } + if (result == -1) { + if (coex_dm->cur_ps_tdma == 5) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 6); + coex_dm->ps_tdma_du_adj_type = + 6; + } else if (coex_dm->cur_ps_tdma == 6) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 7); + coex_dm->ps_tdma_du_adj_type = + 7; + } else if (coex_dm->cur_ps_tdma == 7) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 8); + coex_dm->ps_tdma_du_adj_type = + 8; + } else if (coex_dm->cur_ps_tdma == 13) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 14); + coex_dm->ps_tdma_du_adj_type = + 14; + } else if (coex_dm->cur_ps_tdma == 14) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 15); + coex_dm->ps_tdma_du_adj_type = + 15; + } else if (coex_dm->cur_ps_tdma == 15) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 16); + coex_dm->ps_tdma_du_adj_type = + 16; + } + } else if (result == 1) { + if (coex_dm->cur_ps_tdma == 8) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 7); + coex_dm->ps_tdma_du_adj_type = + 7; + } else if (coex_dm->cur_ps_tdma == 7) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 6); + coex_dm->ps_tdma_du_adj_type = + 6; + } else if (coex_dm->cur_ps_tdma == 6) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 6); + coex_dm->ps_tdma_du_adj_type = + 6; + } else if (coex_dm->cur_ps_tdma == 16) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 15); + coex_dm->ps_tdma_du_adj_type = + 15; + } else if (coex_dm->cur_ps_tdma == 15) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 14); + coex_dm->ps_tdma_du_adj_type = + 14; + } else if (coex_dm->cur_ps_tdma == 14) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 14); + coex_dm->ps_tdma_du_adj_type = + 14; + } + } + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_TRACE_FW_DETAIL, + "[BTCoex], TxPause = 0\n"); + if (coex_dm->cur_ps_tdma == 5) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 2); + coex_dm->ps_tdma_du_adj_type = 2; + } else if (coex_dm->cur_ps_tdma == 6) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 2); + coex_dm->ps_tdma_du_adj_type = 2; + } else if (coex_dm->cur_ps_tdma == 7) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 3); + coex_dm->ps_tdma_du_adj_type = 3; + } else if (coex_dm->cur_ps_tdma == 8) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 4); + coex_dm->ps_tdma_du_adj_type = 4; + } + if (coex_dm->cur_ps_tdma == 13) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 10); + coex_dm->ps_tdma_du_adj_type = 10; + } else if (coex_dm->cur_ps_tdma == 14){ + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 10); + coex_dm->ps_tdma_du_adj_type = 10; + } else if (coex_dm->cur_ps_tdma == 15) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 11); + coex_dm->ps_tdma_du_adj_type = 11; + } else if (coex_dm->cur_ps_tdma == 16) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 12); + coex_dm->ps_tdma_du_adj_type = 12; + } + if (result == -1) { + if (coex_dm->cur_ps_tdma == 1) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 2); + coex_dm->ps_tdma_du_adj_type = + 2; + } else if (coex_dm->cur_ps_tdma == 2) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 3); + coex_dm->ps_tdma_du_adj_type = + 3; + } else if (coex_dm->cur_ps_tdma == 3) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 4); + coex_dm->ps_tdma_du_adj_type = + 4; + } else if (coex_dm->cur_ps_tdma == 9) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 10); + coex_dm->ps_tdma_du_adj_type = + 10; + } else if (coex_dm->cur_ps_tdma == 10) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 11); + coex_dm->ps_tdma_du_adj_type = + 11; + } else if (coex_dm->cur_ps_tdma == 11) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 12); + coex_dm->ps_tdma_du_adj_type = + 12; + } + } else if (result == 1) { + if (coex_dm->cur_ps_tdma == 4) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 3); + coex_dm->ps_tdma_du_adj_type = + 3; + } else if (coex_dm->cur_ps_tdma == 3) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 2); + coex_dm->ps_tdma_du_adj_type = + 2; + } else if (coex_dm->cur_ps_tdma == 2) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 2); + coex_dm->ps_tdma_du_adj_type = + 2; + } else if (coex_dm->cur_ps_tdma == 12) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 11); + coex_dm->ps_tdma_du_adj_type = + 11; + } else if (coex_dm->cur_ps_tdma == 11) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 10); + coex_dm->ps_tdma_du_adj_type = + 10; + } else if (coex_dm->cur_ps_tdma == 10) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 10); + coex_dm->ps_tdma_du_adj_type = + 10; + } + } + } + } else if (max_interval == 3) { + if (tx_pause) { + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_TRACE_FW_DETAIL, + "[BTCoex], TxPause = 1\n"); + if (coex_dm->cur_ps_tdma == 1) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 7); + coex_dm->ps_tdma_du_adj_type = 7; + } else if (coex_dm->cur_ps_tdma == 2) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 7); + coex_dm->ps_tdma_du_adj_type = 7; + } else if (coex_dm->cur_ps_tdma == 3) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 7); + coex_dm->ps_tdma_du_adj_type = 7; + } else if (coex_dm->cur_ps_tdma == 4) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 8); + coex_dm->ps_tdma_du_adj_type = 8; + } + if (coex_dm->cur_ps_tdma == 9) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 15); + coex_dm->ps_tdma_du_adj_type = 15; + } else if (coex_dm->cur_ps_tdma == 10) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 15); + coex_dm->ps_tdma_du_adj_type = 15; + } else if (coex_dm->cur_ps_tdma == 11) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 15); + coex_dm->ps_tdma_du_adj_type = 15; + } else if (coex_dm->cur_ps_tdma == 12) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 16); + coex_dm->ps_tdma_du_adj_type = 16; + } + if (result == -1) { + if (coex_dm->cur_ps_tdma == 5) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 7); + coex_dm->ps_tdma_du_adj_type = + 7; + } else if (coex_dm->cur_ps_tdma == 6) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 7); + coex_dm->ps_tdma_du_adj_type = + 7; + } else if (coex_dm->cur_ps_tdma == 7) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 8); + coex_dm->ps_tdma_du_adj_type = + 8; + } else if (coex_dm->cur_ps_tdma == 13) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 15); + coex_dm->ps_tdma_du_adj_type = + 15; + } else if (coex_dm->cur_ps_tdma == 14) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 15); + coex_dm->ps_tdma_du_adj_type = + 15; + } else if (coex_dm->cur_ps_tdma == 15) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 16); + coex_dm->ps_tdma_du_adj_type = + 16; + } + } else if (result == 1) { + if (coex_dm->cur_ps_tdma == 8) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 7); + coex_dm->ps_tdma_du_adj_type = + 7; + } else if (coex_dm->cur_ps_tdma == 7) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 7); + coex_dm->ps_tdma_du_adj_type = + 7; + } else if (coex_dm->cur_ps_tdma == 6) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 7); + coex_dm->ps_tdma_du_adj_type = + 7; + } else if (coex_dm->cur_ps_tdma == 16) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 15); + coex_dm->ps_tdma_du_adj_type = + 15; + } else if (coex_dm->cur_ps_tdma == 15) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 15); + coex_dm->ps_tdma_du_adj_type = + 15; + } else if (coex_dm->cur_ps_tdma == 14) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 15); + coex_dm->ps_tdma_du_adj_type = + 15; + } + } + } else { + BTC_PRINT(BTC_MSG_ALGORITHM, + ALGO_TRACE_FW_DETAIL, + "[BTCoex], TxPause = 0\n"); + if (coex_dm->cur_ps_tdma == 5) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 3); + coex_dm->ps_tdma_du_adj_type = 3; + } else if (coex_dm->cur_ps_tdma == 6) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 3); + coex_dm->ps_tdma_du_adj_type = 3; + } else if (coex_dm->cur_ps_tdma == 7) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 3); + coex_dm->ps_tdma_du_adj_type = 3; + } else if (coex_dm->cur_ps_tdma == 8) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 4); + coex_dm->ps_tdma_du_adj_type = 4; + } + if (coex_dm->cur_ps_tdma == 13) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 11); + coex_dm->ps_tdma_du_adj_type = 11; + } else if (coex_dm->cur_ps_tdma == 14) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 11); + coex_dm->ps_tdma_du_adj_type = 11; + } else if (coex_dm->cur_ps_tdma == 15) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 11); + coex_dm->ps_tdma_du_adj_type = 11; + } else if (coex_dm->cur_ps_tdma == 16) { + halbtc8723b2ant_ps_tdma(btcoexist, + NORMAL_EXEC, + true, 12); + coex_dm->ps_tdma_du_adj_type = 12; + } + if (result == -1) { + if (coex_dm->cur_ps_tdma == 1) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 3); + coex_dm->ps_tdma_du_adj_type = + 3; + } else if (coex_dm->cur_ps_tdma == 2) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 3); + coex_dm->ps_tdma_du_adj_type = + 3; + } else if (coex_dm->cur_ps_tdma == 3) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 4); + coex_dm->ps_tdma_du_adj_type = + 4; + } else if (coex_dm->cur_ps_tdma == 9) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 11); + coex_dm->ps_tdma_du_adj_type = + 11; + } else if (coex_dm->cur_ps_tdma == 10) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 11); + coex_dm->ps_tdma_du_adj_type = + 11; + } else if (coex_dm->cur_ps_tdma == 11) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 12); + coex_dm->ps_tdma_du_adj_type = + 12; + } + } else if (result == 1) { + if (coex_dm->cur_ps_tdma == 4) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 3); + coex_dm->ps_tdma_du_adj_type = + 3; + } else if (coex_dm->cur_ps_tdma == 3) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 3); + coex_dm->ps_tdma_du_adj_type = + 3; + } else if (coex_dm->cur_ps_tdma == 2) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 3); + coex_dm->ps_tdma_du_adj_type = + 3; + } else if (coex_dm->cur_ps_tdma == 12) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 11); + coex_dm->ps_tdma_du_adj_type = + 11; + } else if (coex_dm->cur_ps_tdma == 11) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 11); + coex_dm->ps_tdma_du_adj_type = + 11; + } else if (coex_dm->cur_ps_tdma == 10) { + halbtc8723b2ant_ps_tdma( + btcoexist, + NORMAL_EXEC, + true, 11); + coex_dm->ps_tdma_du_adj_type = + 11; + } + } + } + } + } + + /*if current PsTdma not match with the recorded one (when scan, dhcp..), + *then we have to adjust it back to the previous record one.*/ + if (coex_dm->cur_ps_tdma != coex_dm->ps_tdma_du_adj_type) { + bool scan = false, link = false, roam = false; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], PsTdma type dismatch!!!, " + "curPsTdma=%d, recordPsTdma=%d\n", + coex_dm->cur_ps_tdma, coex_dm->ps_tdma_du_adj_type); + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_SCAN, &scan); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_LINK, &link); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_ROAM, &roam); + + if (!scan && !link && !roam) + halbtc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, + coex_dm->ps_tdma_du_adj_type); + else + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_DETAIL, + "[BTCoex], roaming/link/scan is under" + " progress, will adjust next time!!!\n"); + } +} + +/* SCO only or SCO+PAN(HS) */ +void halbtc8723b2ant_action_sco(struct btc_coexist *btcoexist) +{ + u8 wifi_rssi_state; + u32 wifi_bw; + + wifi_rssi_state = halbtc8723b2ant_wifi_rssi_state(btcoexist, + 0, 2, 15, 0); + + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, 0xfffff, 0x0); + + halbtc8723b2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 4); + + if (halbtc8723b2ant_need_to_dec_bt_pwr(btcoexist)) + halbtc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, true); + else + halbtc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + + /*for SCO quality at 11b/g mode*/ + if (BTC_WIFI_BW_LEGACY == wifi_bw) + halbtc8723b2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 2); + else /*for SCO quality & wifi performance balance at 11n mode*/ + halbtc8723b2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 8); + + /*for voice quality */ + halbtc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, false, 0); + + /* sw mechanism */ + if (BTC_WIFI_BW_HT40 == wifi_bw) { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b2ant_sw_mechanism1(btcoexist, true, true, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, true, false, + true, 0x4); + } else { + halbtc8723b2ant_sw_mechanism1(btcoexist, true, true, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, false, false, + true, 0x4); + } + } else { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b2ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, true, false, + true, 0x4); + } else { + halbtc8723b2ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, false, false, + true, 0x4); + } + } +} + + +void halbtc8723b2ant_action_hid(struct btc_coexist *btcoexist) +{ + u8 wifi_rssi_state, bt_rssi_state; + u32 wifi_bw; + + wifi_rssi_state = halbtc8723b2ant_wifi_rssi_state(btcoexist, + 0, 2, 15, 0); + bt_rssi_state = halbtc8723b2ant_bt_rssi_state(2, 29, 0); + + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, 0xfffff, 0x0); + + halbtc8723b2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6); + + if (halbtc8723b2ant_need_to_dec_bt_pwr(btcoexist)) + halbtc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, true); + else + halbtc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + + if (BTC_WIFI_BW_LEGACY == wifi_bw) /*/for HID at 11b/g mode*/ + halbtc8723b2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 7); + else /*for HID quality & wifi performance balance at 11n mode*/ + halbtc8723b2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 9); + + if ((bt_rssi_state == BTC_RSSI_STATE_HIGH) || + (bt_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) + halbtc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 9); + else + halbtc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 13); + + /* sw mechanism */ + if (BTC_WIFI_BW_HT40 == wifi_bw) { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b2ant_sw_mechanism1(btcoexist, true, true, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + halbtc8723b2ant_sw_mechanism1(btcoexist, true, true, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } else { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b2ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + halbtc8723b2ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } +} + +/*A2DP only / PAN(EDR) only/ A2DP+PAN(HS)*/ +void halbtc8723b2ant_action_a2dp(struct btc_coexist *btcoexist) +{ + u8 wifi_rssi_state, wifi_rssi_state1, bt_rssi_state; + u32 wifi_bw; + u8 ap_num = 0; + + wifi_rssi_state = halbtc8723b2ant_wifi_rssi_state(btcoexist, + 0, 2, 15, 0); + wifi_rssi_state1 = halbtc8723b2ant_wifi_rssi_state(btcoexist, + 1, 2, 40, 0); + bt_rssi_state = halbtc8723b2ant_bt_rssi_state(2, 29, 0); + + btcoexist->btc_get(btcoexist, BTC_GET_U1_AP_NUM, &ap_num); + + /* define the office environment */ + /* driver don't know AP num in Linux, so we will never enter this if */ + if (ap_num >= 10 && BTC_RSSI_HIGH(wifi_rssi_state1)) { + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, 0xfffff, + 0x0); + halbtc8723b2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6); + halbtc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + halbtc8723b2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 0); + halbtc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, false, 1); + + /* sw mechanism */ + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + if (BTC_WIFI_BW_HT40 == wifi_bw) { + halbtc8723b2ant_sw_mechanism1(btcoexist, true, false, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, true, false, + true, 0x18); + } else { + halbtc8723b2ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, true, false, + true, 0x18); + } + return; + } + + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, 0xfffff, 0x0); + + halbtc8723b2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6); + + if (halbtc8723b2ant_need_to_dec_bt_pwr(btcoexist)) + halbtc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, true); + else + halbtc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + halbtc8723b2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 7); + + if ((bt_rssi_state == BTC_RSSI_STATE_HIGH) || + (bt_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) + halbtc8723b2ant_tdma_duration_adjust(btcoexist,false, false, 1); + else + halbtc8723b2ant_tdma_duration_adjust(btcoexist,false, true, 1); + + /* sw mechanism */ + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + if (BTC_WIFI_BW_HT40 == wifi_bw) { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b2ant_sw_mechanism1(btcoexist, true, false, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + halbtc8723b2ant_sw_mechanism1(btcoexist, true, false, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } else { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b2ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + halbtc8723b2ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } +} + +void halbtc8723b2ant_action_a2dp_pan_hs(struct btc_coexist *btcoexist) +{ + u8 wifi_rssi_state; + u32 wifi_bw; + + wifi_rssi_state = halbtc8723b2ant_wifi_rssi_state(btcoexist, + 0, 2, 15, 0); + + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, 0xfffff, 0x0); + + halbtc8723b2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6); + + if (halbtc8723b2ant_need_to_dec_bt_pwr(btcoexist)) + halbtc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, true); + else + halbtc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + halbtc8723b2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 7); + + halbtc8723b2ant_tdma_duration_adjust(btcoexist, false, true, 2); + + /* sw mechanism */ + btcoexist->btc_get(btcoexist, + BTC_GET_U4_WIFI_BW, &wifi_bw); + if (BTC_WIFI_BW_HT40 == wifi_bw) { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b2ant_sw_mechanism1(btcoexist, true, false, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + halbtc8723b2ant_sw_mechanism1(btcoexist, true, false, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } else { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b2ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, true, false, + false,0x18); + } else { + halbtc8723b2ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } +} + +void halbtc8723b2ant_action_pan_edr(struct btc_coexist *btcoexist) +{ + u8 wifi_rssi_state, bt_rssi_state; + u32 wifi_bw; + + wifi_rssi_state = halbtc8723b2ant_wifi_rssi_state(btcoexist, + 0, 2, 15, 0); + bt_rssi_state = halbtc8723b2ant_bt_rssi_state(2, 29, 0); + + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, 0xfffff, 0x0); + + halbtc8723b2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6); + + if (halbtc8723b2ant_need_to_dec_bt_pwr(btcoexist)) + halbtc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, true); + else + halbtc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + halbtc8723b2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 10); + + if ((bt_rssi_state == BTC_RSSI_STATE_HIGH) || + (bt_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) + halbtc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 1); + else + halbtc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 5); + + /* sw mechanism */ + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + if (BTC_WIFI_BW_HT40 == wifi_bw) { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b2ant_sw_mechanism1(btcoexist, true, false, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + halbtc8723b2ant_sw_mechanism1(btcoexist, true, false, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } else { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b2ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + halbtc8723b2ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } +} + + +/*PAN(HS) only*/ +void halbtc8723b2ant_action_pan_hs(struct btc_coexist *btcoexist) +{ + u8 wifi_rssi_state; + u32 wifi_bw; + + wifi_rssi_state = halbtc8723b2ant_wifi_rssi_state(btcoexist, + 0, 2, 15, 0); + + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, 0xfffff, 0x0); + + halbtc8723b2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6); + + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH) ) + halbtc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, true); + else + halbtc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + halbtc8723b2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 7); + + halbtc8723b2ant_ps_tdma(btcoexist, NORMAL_EXEC, false, 1); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + if (BTC_WIFI_BW_HT40 == wifi_bw) { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b2ant_sw_mechanism1(btcoexist, true, false, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + halbtc8723b2ant_sw_mechanism1(btcoexist, true, false, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } else { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b2ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + halbtc8723b2ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } +} + +/*PAN(EDR)+A2DP*/ +void halbtc8723b2ant_action_pan_edr_a2dp(struct btc_coexist *btcoexist) +{ + u8 wifi_rssi_state, bt_rssi_state; + u32 wifi_bw; + + wifi_rssi_state = halbtc8723b2ant_wifi_rssi_state(btcoexist, + 0, 2, 15, 0); + bt_rssi_state = halbtc8723b2ant_bt_rssi_state(2, 29, 0); + + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, 0xfffff, 0x0); + + halbtc8723b2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6); + + if (halbtc8723b2ant_need_to_dec_bt_pwr(btcoexist)) + halbtc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, true); + else + halbtc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + + if ((bt_rssi_state == BTC_RSSI_STATE_HIGH) || + (bt_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b2ant_coex_table_with_type(btcoexist,NORMAL_EXEC, 12); + if (BTC_WIFI_BW_HT40 == wifi_bw) + halbtc8723b2ant_tdma_duration_adjust(btcoexist, false, + true, 3); + else + halbtc8723b2ant_tdma_duration_adjust(btcoexist, false, + false, 3); + } else { + halbtc8723b2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 7); + halbtc8723b2ant_tdma_duration_adjust(btcoexist, false, true, 3); + } + + /* sw mechanism */ + if (BTC_WIFI_BW_HT40 == wifi_bw) { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b2ant_sw_mechanism1(btcoexist, true, false, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + halbtc8723b2ant_sw_mechanism1(btcoexist, true, false, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } else { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b2ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + halbtc8723b2ant_sw_mechanism1(btcoexist, false, false, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } +} + +void halbtc8723b2ant_action_pan_edr_hid(struct btc_coexist *btcoexist) +{ + u8 wifi_rssi_state, bt_rssi_state; + u32 wifi_bw; + + wifi_rssi_state = halbtc8723b2ant_wifi_rssi_state(btcoexist, + 0, 2, 15, 0); + bt_rssi_state = halbtc8723b2ant_bt_rssi_state(2, 29, 0); + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + + if (halbtc8723b2ant_need_to_dec_bt_pwr(btcoexist)) + halbtc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, true); + else + halbtc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + if ((bt_rssi_state == BTC_RSSI_STATE_HIGH) || + (bt_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + if (BTC_WIFI_BW_HT40 == wifi_bw) { + halbtc8723b2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, + 3); + halbtc8723b2ant_coex_table_with_type(btcoexist, + NORMAL_EXEC, 11); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, + 0xfffff, 0x780); + } else { + halbtc8723b2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, + 6); + halbtc8723b2ant_coex_table_with_type(btcoexist, + NORMAL_EXEC, 7); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, + 0xfffff, 0x0); + } + halbtc8723b2ant_tdma_duration_adjust(btcoexist, true, false, 2); + } else { + halbtc8723b2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6); + halbtc8723b2ant_coex_table_with_type(btcoexist,NORMAL_EXEC, 11); + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, 0xfffff, + 0x0); + halbtc8723b2ant_tdma_duration_adjust(btcoexist, true, true, 2); + } + + /* sw mechanism */ + if (BTC_WIFI_BW_HT40 == wifi_bw) { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b2ant_sw_mechanism1(btcoexist, true, true, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + halbtc8723b2ant_sw_mechanism1(btcoexist, true, true, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } else { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)){ + halbtc8723b2ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + halbtc8723b2ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } +} + +/* HID+A2DP+PAN(EDR) */ +void halbtc8723b2ant_action_hid_a2dp_pan_edr(struct btc_coexist *btcoexist) +{ + u8 wifi_rssi_state, bt_rssi_state; + u32 wifi_bw; + + wifi_rssi_state = halbtc8723b2ant_wifi_rssi_state(btcoexist, + 0, 2, 15, 0); + bt_rssi_state = halbtc8723b2ant_bt_rssi_state(2, 29, 0); + + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, 0xfffff, 0x0); + + halbtc8723b2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6); + + if (halbtc8723b2ant_need_to_dec_bt_pwr(btcoexist)) + halbtc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, true); + else + halbtc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + + halbtc8723b2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 7); + + if ((bt_rssi_state == BTC_RSSI_STATE_HIGH) || + (bt_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + if (BTC_WIFI_BW_HT40 == wifi_bw) + halbtc8723b2ant_tdma_duration_adjust(btcoexist, true, + true, 2); + else + halbtc8723b2ant_tdma_duration_adjust(btcoexist, true, + false, 3); + } else { + halbtc8723b2ant_tdma_duration_adjust(btcoexist, true, true, 3); + } + + /* sw mechanism */ + if (BTC_WIFI_BW_HT40 == wifi_bw) { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b2ant_sw_mechanism1(btcoexist, true, true, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + halbtc8723b2ant_sw_mechanism1(btcoexist, true, true, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } else { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b2ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + halbtc8723b2ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } +} + +void halbtc8723b2ant_action_hid_a2dp(struct btc_coexist *btcoexist) +{ + u8 wifi_rssi_state, bt_rssi_state; + u32 wifi_bw; + + wifi_rssi_state = halbtc8723b2ant_wifi_rssi_state(btcoexist, + 0, 2, 15, 0); + bt_rssi_state = halbtc8723b2ant_bt_rssi_state(2, 29, 0); + + btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, 0xfffff, 0x0); + + halbtc8723b2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6); + + if (halbtc8723b2ant_need_to_dec_bt_pwr(btcoexist)) + halbtc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, true); + else + halbtc8723b2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + + halbtc8723b2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 7); + + if ((bt_rssi_state == BTC_RSSI_STATE_HIGH) || + (bt_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) + halbtc8723b2ant_tdma_duration_adjust(btcoexist, true, false, 2); + else + halbtc8723b2ant_tdma_duration_adjust(btcoexist, true, true, 2); + + /* sw mechanism */ + if (BTC_WIFI_BW_HT40 == wifi_bw) { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b2ant_sw_mechanism1(btcoexist, true, true, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + halbtc8723b2ant_sw_mechanism1(btcoexist, true, true, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } else { + if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || + (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { + halbtc8723b2ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, true, false, + false, 0x18); + } else { + halbtc8723b2ant_sw_mechanism1(btcoexist, false, true, + false, false); + halbtc8723b2ant_sw_mechanism2(btcoexist, false, false, + false, 0x18); + } + } +} + +void halbtc8723b2ant_run_coexist_mechanism(struct btc_coexist *btcoexist) +{ + u8 algorithm = 0; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], RunCoexistMechanism()===>\n"); + + if (btcoexist->manual_control) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], RunCoexistMechanism(), " + "return for Manual CTRL <===\n"); + return; + } + + if (coex_sta->under_ips) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], wifi is under IPS !!!\n"); + return; + } + + algorithm = halbtc8723b2ant_action_algorithm(btcoexist); + if (coex_sta->c2h_bt_inquiry_page && + (BT_8723B_2ANT_COEX_ALGO_PANHS != algorithm)) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BT is under inquiry/page scan !!\n"); + halbtc8723b2ant_action_bt_inquiry(btcoexist); + return; + } else { + if (coex_dm->need_recover_0x948) { + coex_dm->need_recover_0x948 = false; + btcoexist->btc_write_2byte(btcoexist, 0x948, + coex_dm->backup_0x948); + } + } + + coex_dm->cur_algorithm = algorithm; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, "[BTCoex], Algorithm = %d \n", + coex_dm->cur_algorithm); + + if (halbtc8723b2ant_is_common_action(btcoexist)) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Action 2-Ant common.\n"); + coex_dm->auto_tdma_adjust = false; + } else { + if (coex_dm->cur_algorithm != coex_dm->pre_algorithm) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], preAlgorithm=%d, " + "curAlgorithm=%d\n", coex_dm->pre_algorithm, + coex_dm->cur_algorithm); + coex_dm->auto_tdma_adjust = false; + } + switch (coex_dm->cur_algorithm) { + case BT_8723B_2ANT_COEX_ALGO_SCO: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Action 2-Ant, algorithm = SCO.\n"); + halbtc8723b2ant_action_sco(btcoexist); + break; + case BT_8723B_2ANT_COEX_ALGO_HID: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Action 2-Ant, algorithm = HID.\n"); + halbtc8723b2ant_action_hid(btcoexist); + break; + case BT_8723B_2ANT_COEX_ALGO_A2DP: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Action 2-Ant, " + "algorithm = A2DP.\n"); + halbtc8723b2ant_action_a2dp(btcoexist); + break; + case BT_8723B_2ANT_COEX_ALGO_A2DP_PANHS: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Action 2-Ant, " + "algorithm = A2DP+PAN(HS).\n"); + halbtc8723b2ant_action_a2dp_pan_hs(btcoexist); + break; + case BT_8723B_2ANT_COEX_ALGO_PANEDR: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Action 2-Ant, " + "algorithm = PAN(EDR).\n"); + halbtc8723b2ant_action_pan_edr(btcoexist); + break; + case BT_8723B_2ANT_COEX_ALGO_PANHS: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Action 2-Ant, " + "algorithm = HS mode.\n"); + halbtc8723b2ant_action_pan_hs(btcoexist); + break; + case BT_8723B_2ANT_COEX_ALGO_PANEDR_A2DP: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Action 2-Ant, " + "algorithm = PAN+A2DP.\n"); + halbtc8723b2ant_action_pan_edr_a2dp(btcoexist); + break; + case BT_8723B_2ANT_COEX_ALGO_PANEDR_HID: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Action 2-Ant, " + "algorithm = PAN(EDR)+HID.\n"); + halbtc8723b2ant_action_pan_edr_hid(btcoexist); + break; + case BT_8723B_2ANT_COEX_ALGO_HID_A2DP_PANEDR: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Action 2-Ant, " + "algorithm = HID+A2DP+PAN.\n"); + halbtc8723b2ant_action_hid_a2dp_pan_edr(btcoexist); + break; + case BT_8723B_2ANT_COEX_ALGO_HID_A2DP: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Action 2-Ant, " + "algorithm = HID+A2DP.\n"); + halbtc8723b2ant_action_hid_a2dp(btcoexist); + break; + default: + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], Action 2-Ant, " + "algorithm = coexist All Off!!\n"); + halbtc8723b2ant_coex_alloff(btcoexist); + break; + } + coex_dm->pre_algorithm = coex_dm->cur_algorithm; + } +} + +void halbtc8723b2ant_wifioff_hwcfg(struct btc_coexist *btcoexist) +{ + /* set wlan_act to low */ + btcoexist->btc_write_1byte(btcoexist, 0x76e, 0x4); + /* Force GNT_BT to High */ + btcoexist->btc_write_1byte_bitmask(btcoexist, 0x765, 0x18, 0x3); + /* BT select s0/s1 is controlled by BT */ + btcoexist->btc_write_1byte_bitmask(btcoexist, 0x67, 0x20, 0x0); +} + +/********************************************************************* + * work around function start with wa_halbtc8723b2ant_ + *********************************************************************/ +/********************************************************************* + * extern function start with EXhalbtc8723b2ant_ + *********************************************************************/ +void ex_halbtc8723b2ant_init_hwconfig(struct btc_coexist *btcoexist) +{ + u8 u8tmp = 0; + + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, + "[BTCoex], 2Ant Init HW Config!!\n"); + coex_dm->bt_rf0x1e_backup = + btcoexist->btc_get_rf_reg(btcoexist, BTC_RF_A, 0x1e, 0xfffff); + + /* 0x790[5:0]=0x5 */ + u8tmp = btcoexist->btc_read_1byte(btcoexist, 0x790); + u8tmp &= 0xc0; + u8tmp |= 0x5; + btcoexist->btc_write_1byte(btcoexist, 0x790, u8tmp); + + + /*Antenna config */ + halbtc8723b2ant_set_ant_path(btcoexist, BTC_ANT_WIFI_AT_MAIN, + true, false); + + + + + /* PTA parameter */ + halbtc8723b2ant_coex_table_with_type(btcoexist, FORCE_EXEC, 0); + + /* Enable counter statistics */ + /*0x76e[3] =1, WLAN_Act control by PTA*/ + btcoexist->btc_write_1byte(btcoexist, 0x76e, 0xc); + btcoexist->btc_write_1byte(btcoexist, 0x778, 0x3); + btcoexist->btc_write_1byte_bitmask(btcoexist, 0x40, 0x20, 0x1); +} + +void ex_halbtc8723b2ant_init_coex_dm(struct btc_coexist *btcoexist) +{ + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, + "[BTCoex], Coex Mechanism Init!!\n"); + halbtc8723b2ant_init_coex_dm(btcoexist); +} + +void ex_halbtc8723b2ant_display_coex_info(struct btc_coexist *btcoexist) +{ + struct btc_board_info *board_info = &btcoexist->board_info; + struct btc_stack_info *stack_info = &btcoexist->stack_info; + struct btc_bt_link_info* bt_link_info = &btcoexist->bt_link_info; + u8 *cli_buf = btcoexist->cli_buf; + u8 u8tmp[4], i, bt_info_ext, ps_tdma_case=0; + u32 u32tmp[4]; + bool roam = false, scan = false; + bool link = false, wifi_under_5g = false; + bool bt_hs_on = false, wifi_busy = false; + s32 wifi_rssi = 0, bt_hs_rssi = 0; + u32 wifi_bw, wifi_traffic_dir, fa_ofdm, fa_cck; + u8 wifi_dot11_chnl, wifi_hs_chnl; + u32 fw_ver = 0, bt_patch_ver = 0; + u8 ap_num = 0; + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, + "\r\n ============[BT Coexist info]============"); + CL_PRINTF(cli_buf); + + if (btcoexist->manual_control) { + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, + "\r\n ==========[Under Manual Control]============"); + CL_PRINTF(cli_buf); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, + "\r\n =========================================="); + CL_PRINTF(cli_buf); + } + + if (!board_info->bt_exist) { + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n BT not exists !!!"); + CL_PRINTF(cli_buf); + return; + } + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d ", + "Ant PG number/ Ant mechanism:", + board_info->pg_ant_num, board_info->btdm_ant_num); + CL_PRINTF(cli_buf); + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %s / %d", + "BT stack/ hci ext ver", + ((stack_info->profile_notified)? "Yes":"No"), + stack_info->hci_version); + CL_PRINTF(cli_buf); + + btcoexist->btc_get(btcoexist, BTC_GET_U4_BT_PATCH_VER, &bt_patch_ver); + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_FW_VER, &fw_ver); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, + "\r\n %-35s = %d_%x/ 0x%x/ 0x%x(%d)", + "CoexVer/ fw_ver/ PatchVer", + glcoex_ver_date_8723b_2ant, glcoex_ver_8723b_2ant, + fw_ver, bt_patch_ver, bt_patch_ver); + CL_PRINTF(cli_buf); + + btcoexist->btc_get(btcoexist, BTC_GET_BL_HS_OPERATION, &bt_hs_on); + btcoexist->btc_get(btcoexist, BTC_GET_U1_WIFI_DOT11_CHNL, + &wifi_dot11_chnl); + btcoexist->btc_get(btcoexist, BTC_GET_U1_WIFI_HS_CHNL, &wifi_hs_chnl); + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d / %d(%d)", + "Dot11 channel / HsChnl(HsMode)", + wifi_dot11_chnl, wifi_hs_chnl, bt_hs_on); + CL_PRINTF(cli_buf); + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %02x %02x %02x ", + "H2C Wifi inform bt chnl Info", coex_dm->wifi_chnl_info[0], + coex_dm->wifi_chnl_info[1], coex_dm->wifi_chnl_info[2]); + CL_PRINTF(cli_buf); + + btcoexist->btc_get(btcoexist, BTC_GET_S4_WIFI_RSSI, &wifi_rssi); + btcoexist->btc_get(btcoexist, BTC_GET_S4_HS_RSSI, &bt_hs_rssi); + btcoexist->btc_get(btcoexist, BTC_GET_U1_AP_NUM, &ap_num); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d/ %d", + "Wifi rssi/ HS rssi/ AP#", wifi_rssi, bt_hs_rssi, ap_num); + CL_PRINTF(cli_buf); + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_SCAN, &scan); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_LINK, &link); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_ROAM, &roam); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d/ %d ", + "Wifi link/ roam/ scan", link, roam, scan); + CL_PRINTF(cli_buf); + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_UNDER_5G, &wifi_under_5g); + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_BUSY, &wifi_busy); + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_TRAFFIC_DIRECTION, + &wifi_traffic_dir); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %s / %s/ %s ", + "Wifi status", (wifi_under_5g? "5G":"2.4G"), + ((BTC_WIFI_BW_LEGACY == wifi_bw)? "Legacy": + (((BTC_WIFI_BW_HT40 == wifi_bw)? "HT40":"HT20"))), + ((!wifi_busy)? "idle": + ((BTC_WIFI_TRAFFIC_TX ==wifi_traffic_dir)?\ + "uplink":"downlink"))); + CL_PRINTF(cli_buf); + + + CL_PRINTF(cli_buf); + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d / %d / %d / %d", + "SCO/HID/PAN/A2DP", + bt_link_info->sco_exist, bt_link_info->hid_exist, + bt_link_info->pan_exist, bt_link_info->a2dp_exist); + CL_PRINTF(cli_buf); + btcoexist->btc_disp_dbg_msg(btcoexist, BTC_DBG_DISP_BT_LINK_INFO); + + bt_info_ext = coex_sta->bt_info_ext; + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %s", + "BT Info A2DP rate", + (bt_info_ext&BIT0)? "Basic rate":"EDR rate"); + CL_PRINTF(cli_buf); + + for (i=0; ibt_info_c2h_cnt[i]) { + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, + "\r\n %-35s = %02x %02x %02x " + "%02x %02x %02x %02x(%d)", + glbt_info_src_8723b_2ant[i], \ + coex_sta->bt_info_c2h[i][0], + coex_sta->bt_info_c2h[i][1], + coex_sta->bt_info_c2h[i][2], + coex_sta->bt_info_c2h[i][3], + coex_sta->bt_info_c2h[i][4], + coex_sta->bt_info_c2h[i][5], + coex_sta->bt_info_c2h[i][6], + coex_sta->bt_info_c2h_cnt[i]); + CL_PRINTF(cli_buf); + } + } + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %s/%s", + "PS state, IPS/LPS", + ((coex_sta->under_ips? "IPS ON":"IPS OFF")), + ((coex_sta->under_lps? "LPS ON":"LPS OFF"))); + CL_PRINTF(cli_buf); + btcoexist->btc_disp_dbg_msg(btcoexist, BTC_DBG_DISP_FW_PWR_MODE_CMD); + + /* Sw mechanism */ + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, + "\r\n %-35s", "============[Sw mechanism]============"); + CL_PRINTF(cli_buf); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d/ %d ", + "SM1[ShRf/ LpRA/ LimDig]", coex_dm->cur_rf_rx_lpf_shrink, + coex_dm->cur_low_penalty_ra, coex_dm->limited_dig); + CL_PRINTF(cli_buf); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d/ %d(0x%x) ", + "SM2[AgcT/ AdcB/ SwDacSwing(lvl)]", + coex_dm->cur_agc_table_en, coex_dm->cur_adc_back_off, + coex_dm->cur_dac_swing_on, coex_dm->cur_dac_swing_lvl); + CL_PRINTF(cli_buf); + + /* Fw mechanism */ + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s", + "============[Fw mechanism]============"); + CL_PRINTF(cli_buf); + + ps_tdma_case = coex_dm->cur_ps_tdma; + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, + "\r\n %-35s = %02x %02x %02x %02x %02x case-%d (auto:%d)", + "PS TDMA", coex_dm->ps_tdma_para[0], + coex_dm->ps_tdma_para[1], coex_dm->ps_tdma_para[2], + coex_dm->ps_tdma_para[3], coex_dm->ps_tdma_para[4], + ps_tdma_case, coex_dm->auto_tdma_adjust); + CL_PRINTF(cli_buf); + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d ", + "DecBtPwr/ IgnWlanAct", coex_dm->cur_dec_bt_pwr, + coex_dm->cur_ignore_wlan_act); + CL_PRINTF(cli_buf); + + /* Hw setting */ + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s", + "============[Hw setting]============"); + CL_PRINTF(cli_buf); + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x", + "RF-A, 0x1e initVal", coex_dm->bt_rf0x1e_backup); + CL_PRINTF(cli_buf); + + u8tmp[0] = btcoexist->btc_read_1byte(btcoexist, 0x778); + u32tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0x880); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x", + "0x778/0x880[29:25]", u8tmp[0], + (u32tmp[0]&0x3e000000) >> 25); + CL_PRINTF(cli_buf); + + + u32tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0x948); + u8tmp[0] = btcoexist->btc_read_1byte(btcoexist, 0x67); + u8tmp[1] = btcoexist->btc_read_1byte(btcoexist, 0x765); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x/ 0x%x", + "0x948/ 0x67[5] / 0x765", + u32tmp[0], ((u8tmp[0]&0x20)>> 5), u8tmp[1]); + CL_PRINTF(cli_buf); + + u32tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0x92c); + u32tmp[1] = btcoexist->btc_read_4byte(btcoexist, 0x930); + u32tmp[2] = btcoexist->btc_read_4byte(btcoexist, 0x944); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x/ 0x%x", + "0x92c[1:0]/ 0x930[7:0]/0x944[1:0]", + u32tmp[0]&0x3, u32tmp[1]&0xff, u32tmp[2]&0x3); + CL_PRINTF(cli_buf); + + + u8tmp[0] = btcoexist->btc_read_1byte(btcoexist, 0x39); + u8tmp[1] = btcoexist->btc_read_1byte(btcoexist, 0x40); + u32tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0x4c); + u8tmp[2] = btcoexist->btc_read_1byte(btcoexist, 0x64); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x/ 0x%x/ 0x%x", + "0x38[11]/0x40/0x4c[24:23]/0x64[0]", + ((u8tmp[0] & 0x8)>>3), u8tmp[1], + ((u32tmp[0]&0x01800000)>>23), u8tmp[2]&0x1); + CL_PRINTF(cli_buf); + + u32tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0x550); + u8tmp[0] = btcoexist->btc_read_1byte(btcoexist, 0x522); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x", + "0x550(bcn ctrl)/0x522", u32tmp[0], u8tmp[0]); + CL_PRINTF(cli_buf); + + u32tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0xc50); + u8tmp[0] = btcoexist->btc_read_1byte(btcoexist, 0x49c); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x", + "0xc50(dig)/0x49c(null-drop)", u32tmp[0]&0xff, u8tmp[0]); + CL_PRINTF(cli_buf); + + u32tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0xda0); + u32tmp[1] = btcoexist->btc_read_4byte(btcoexist, 0xda4); + u32tmp[2] = btcoexist->btc_read_4byte(btcoexist, 0xda8); + u32tmp[3] = btcoexist->btc_read_4byte(btcoexist, 0xcf0); + + u8tmp[0] = btcoexist->btc_read_1byte(btcoexist, 0xa5b); + u8tmp[1] = btcoexist->btc_read_1byte(btcoexist, 0xa5c); + + fa_ofdm = ((u32tmp[0]&0xffff0000) >> 16) + + ((u32tmp[1]&0xffff0000) >> 16) + + (u32tmp[1] & 0xffff) + + (u32tmp[2] & 0xffff) + + ((u32tmp[3]&0xffff0000) >> 16) + + (u32tmp[3] & 0xffff) ; + fa_cck = (u8tmp[0] << 8) + u8tmp[1]; + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x/ 0x%x", + "OFDM-CCA/OFDM-FA/CCK-FA", \ + u32tmp[0]&0xffff, fa_ofdm, fa_cck); + CL_PRINTF(cli_buf); + + u32tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0x6c0); + u32tmp[1] = btcoexist->btc_read_4byte(btcoexist, 0x6c4); + u32tmp[2] = btcoexist->btc_read_4byte(btcoexist, 0x6c8); + u8tmp[0] = btcoexist->btc_read_1byte(btcoexist, 0x6cc); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, + "\r\n %-35s = 0x%x/ 0x%x/ 0x%x/ 0x%x", + "0x6c0/0x6c4/0x6c8/0x6cc(coexTable)", \ + u32tmp[0], u32tmp[1], u32tmp[2], u8tmp[0]); + CL_PRINTF(cli_buf); + + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d", + "0x770(high-pri rx/tx)", + coex_sta->high_priority_rx, coex_sta->high_priority_tx); + CL_PRINTF(cli_buf); + CL_SPRINTF(cli_buf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d/ %d", + "0x774(low-pri rx/tx)", coex_sta->low_priority_rx, + coex_sta->low_priority_tx); + CL_PRINTF(cli_buf); +#if(BT_AUTO_REPORT_ONLY_8723B_2ANT == 1) + halbtc8723b2ant_monitor_bt_ctr(btcoexist); +#endif + btcoexist->btc_disp_dbg_msg(btcoexist, + BTC_DBG_DISP_COEX_STATISTICS); +} + + +void ex_halbtc8723b2ant_ips_notify(struct btc_coexist *btcoexist, u8 type) +{ + if (BTC_IPS_ENTER == type) { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], IPS ENTER notify\n"); + coex_sta->under_ips = true; + halbtc8723b2ant_wifioff_hwcfg(btcoexist); + halbtc8723b2ant_ignore_wlan_act(btcoexist, FORCE_EXEC, true); + halbtc8723b2ant_coex_alloff(btcoexist); + } else if (BTC_IPS_LEAVE == type) { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], IPS LEAVE notify\n"); + coex_sta->under_ips = false; + ex_halbtc8723b2ant_init_hwconfig(btcoexist); + halbtc8723b2ant_init_coex_dm(btcoexist); + halbtc8723b2ant_query_bt_info(btcoexist); + } +} + +void ex_halbtc8723b2ant_lps_notify(struct btc_coexist *btcoexist, u8 type) +{ + if (BTC_LPS_ENABLE == type) { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], LPS ENABLE notify\n"); + coex_sta->under_lps = true; + } else if (BTC_LPS_DISABLE == type) { + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], LPS DISABLE notify\n"); + coex_sta->under_lps = false; + } +} + +void ex_halbtc8723b2ant_scan_notify(struct btc_coexist *btcoexist, u8 type) +{ + if (BTC_SCAN_START == type) + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], SCAN START notify\n"); + else if (BTC_SCAN_FINISH == type) + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], SCAN FINISH notify\n"); +} + +void ex_halbtc8723b2ant_connect_notify(struct btc_coexist *btcoexist, u8 type) +{ + if (BTC_ASSOCIATE_START == type) + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], CONNECT START notify\n"); + else if (BTC_ASSOCIATE_FINISH == type) + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], CONNECT FINISH notify\n"); +} + +void ex_halbtc8723b2ant_media_status_notify(struct btc_coexist *btcoexist, + u8 type) +{ + u8 h2c_parameter[3] ={0}; + u32 wifi_bw; + u8 wifi_central_chnl; + + if (BTC_MEDIA_CONNECT == type) + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], MEDIA connect notify\n"); + else + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], MEDIA disconnect notify\n"); + + /* only 2.4G we need to inform bt the chnl mask */ + btcoexist->btc_get(btcoexist, + BTC_GET_U1_WIFI_CENTRAL_CHNL, &wifi_central_chnl); + if ((BTC_MEDIA_CONNECT == type) && + (wifi_central_chnl <= 14)) { + h2c_parameter[0] = 0x1; + h2c_parameter[1] = wifi_central_chnl; + btcoexist->btc_get(btcoexist, + BTC_GET_U4_WIFI_BW, &wifi_bw); + if (BTC_WIFI_BW_HT40 == wifi_bw) + h2c_parameter[2] = 0x30; + else + h2c_parameter[2] = 0x20; + } + + coex_dm->wifi_chnl_info[0] = h2c_parameter[0]; + coex_dm->wifi_chnl_info[1] = h2c_parameter[1]; + coex_dm->wifi_chnl_info[2] = h2c_parameter[2]; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE_FW_EXEC, + "[BTCoex], FW write 0x66=0x%x\n", + h2c_parameter[0] << 16 | h2c_parameter[1] << 8 | + h2c_parameter[2]); + + btcoexist->btc_fill_h2c(btcoexist, 0x66, 3, h2c_parameter); +} + +void ex_halbtc8723b2ant_special_packet_notify(struct btc_coexist *btcoexist, + u8 type) +{ + if (type == BTC_PACKET_DHCP) + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], DHCP Packet notify\n"); +} + +void ex_halbtc8723b2ant_bt_info_notify(struct btc_coexist *btcoexist, + u8 *tmpbuf, u8 length) +{ + u8 btInfo = 0; + u8 i, rsp_source = 0; + bool bt_busy = false, limited_dig = false; + bool wifi_connected = false; + + coex_sta->c2h_bt_info_req_sent = false; + + rsp_source = tmpbuf[0]&0xf; + if(rsp_source >= BT_INFO_SRC_8723B_2ANT_MAX) + rsp_source = BT_INFO_SRC_8723B_2ANT_WIFI_FW; + coex_sta->bt_info_c2h_cnt[rsp_source]++; + + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "[BTCoex], Bt info[%d], length=%d, hex data=[", + rsp_source, length); + for (i = 0; i < length; i++) { + coex_sta->bt_info_c2h[rsp_source][i] = tmpbuf[i]; + if (i == 1) + btInfo = tmpbuf[i]; + if (i == length-1) + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "0x%02x]\n", tmpbuf[i]); + else + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, + "0x%02x, ", tmpbuf[i]); + } + + if (btcoexist->manual_control) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BtInfoNotify(), " + "return for Manual CTRL<===\n"); + return; + } + + if (BT_INFO_SRC_8723B_2ANT_WIFI_FW != rsp_source) { + coex_sta->bt_retry_cnt = /* [3:0]*/ + coex_sta->bt_info_c2h[rsp_source][2] & 0xf; + + coex_sta->bt_rssi = + coex_sta->bt_info_c2h[rsp_source][3] * 2 + 10; + + coex_sta->bt_info_ext = + coex_sta->bt_info_c2h[rsp_source][4]; + + /* Here we need to resend some wifi info to BT + because bt is reset and loss of the info.*/ + if ((coex_sta->bt_info_ext & BIT1)) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BT ext info bit1 check," + " send wifi BW&Chnl to BT!!\n"); + btcoexist->btc_get(btcoexist,BTC_GET_BL_WIFI_CONNECTED, + &wifi_connected); + if (wifi_connected) + ex_halbtc8723b2ant_media_status_notify( + btcoexist, + BTC_MEDIA_CONNECT); + else + ex_halbtc8723b2ant_media_status_notify( + btcoexist, + BTC_MEDIA_DISCONNECT); + } + + if ((coex_sta->bt_info_ext & BIT3)) { + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BT ext info bit3 check, " + "set BT NOT to ignore Wlan active!!\n"); + halbtc8723b2ant_ignore_wlan_act(btcoexist, FORCE_EXEC, + false); + } else { + /* BT already NOT ignore Wlan active, do nothing here.*/ + } +#if(BT_AUTO_REPORT_ONLY_8723B_2ANT == 0) + if ((coex_sta->bt_info_ext & BIT4)) { + /* BT auto report already enabled, do nothing*/ + } else { + halbtc8723b2ant_bt_auto_report(btcoexist, FORCE_EXEC, + true); + } +#endif + } + + /* check BIT2 first ==> check if bt is under inquiry or page scan*/ + if (btInfo & BT_INFO_8723B_2ANT_B_INQ_PAGE) + coex_sta->c2h_bt_inquiry_page = true; + else + coex_sta->c2h_bt_inquiry_page = false; + + /* set link exist status*/ + if (!(btInfo & BT_INFO_8723B_2ANT_B_CONNECTION)) { + coex_sta->bt_link_exist = false; + coex_sta->pan_exist = false; + coex_sta->a2dp_exist = false; + coex_sta->hid_exist = false; + coex_sta->sco_exist = false; + } else {// connection exists + coex_sta->bt_link_exist = true; + if (btInfo & BT_INFO_8723B_2ANT_B_FTP) + coex_sta->pan_exist = true; + else + coex_sta->pan_exist = false; + if (btInfo & BT_INFO_8723B_2ANT_B_A2DP) + coex_sta->a2dp_exist = true; + else + coex_sta->a2dp_exist = false; + if (btInfo & BT_INFO_8723B_2ANT_B_HID) + coex_sta->hid_exist = true; + else + coex_sta->hid_exist = false; + if (btInfo & BT_INFO_8723B_2ANT_B_SCO_ESCO) + coex_sta->sco_exist = true; + else + coex_sta->sco_exist = false; + } + + halbtc8723b2ant_update_bt_link_info(btcoexist); + + if (!(btInfo & BT_INFO_8723B_2ANT_B_CONNECTION)) { + coex_dm->bt_status = BT_8723B_2ANT_BT_STATUS_NON_CONNECTED_IDLE; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BtInfoNotify(), " + "BT Non-Connected idle!!!\n"); + /* connection exists but no busy */ + } else if (btInfo == BT_INFO_8723B_2ANT_B_CONNECTION) { + coex_dm->bt_status = BT_8723B_2ANT_BT_STATUS_CONNECTED_IDLE; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BtInfoNotify(), BT Connected-idle!!!\n"); + } else if ((btInfo & BT_INFO_8723B_2ANT_B_SCO_ESCO) || + (btInfo & BT_INFO_8723B_2ANT_B_SCO_BUSY)) { + coex_dm->bt_status = + BT_8723B_2ANT_BT_STATUS_SCO_BUSY; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BtInfoNotify(), BT SCO busy!!!\n"); + } else if (btInfo&BT_INFO_8723B_2ANT_B_ACL_BUSY) { + coex_dm->bt_status = + BT_8723B_2ANT_BT_STATUS_ACL_BUSY; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BtInfoNotify(), BT ACL busy!!!\n"); + } else { + coex_dm->bt_status = BT_8723B_2ANT_BT_STATUS_MAX; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], BtInfoNotify(), " + "BT Non-Defined state!!!\n"); + } + + if ((BT_8723B_2ANT_BT_STATUS_ACL_BUSY == coex_dm->bt_status) || + (BT_8723B_2ANT_BT_STATUS_SCO_BUSY == coex_dm->bt_status) || + (BT_8723B_2ANT_BT_STATUS_ACL_SCO_BUSY == coex_dm->bt_status)) { + bt_busy = true; + limited_dig = true; + } else { + bt_busy = false; + limited_dig = false; + } + + btcoexist->btc_set(btcoexist, BTC_SET_BL_BT_TRAFFIC_BUSY, &bt_busy); + + coex_dm->limited_dig = limited_dig; + btcoexist->btc_set(btcoexist, BTC_SET_BL_BT_LIMITED_DIG, &limited_dig); + + halbtc8723b2ant_run_coexist_mechanism(btcoexist); +} + +void ex_halbtc8723b2ant_halt_notify(struct btc_coexist *btcoexist) +{ + BTC_PRINT(BTC_MSG_INTERFACE, INTF_NOTIFY, "[BTCoex], Halt notify\n"); + + halbtc8723b2ant_wifioff_hwcfg(btcoexist); + halbtc8723b2ant_ignore_wlan_act(btcoexist, FORCE_EXEC, true); + ex_halbtc8723b2ant_media_status_notify(btcoexist, BTC_MEDIA_DISCONNECT); +} + +void ex_halbtc8723b2ant_periodical(struct btc_coexist *btcoexist) +{ + struct btc_board_info *board_info = &btcoexist->board_info; + struct btc_stack_info *stack_info = &btcoexist->stack_info; + static u8 dis_ver_info_cnt = 0; + u32 fw_ver = 0, bt_patch_ver = 0; + + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "[BTCoex], ==========================" + "Periodical===========================\n"); + + if (dis_ver_info_cnt <= 5) { + dis_ver_info_cnt += 1; + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, + "[BTCoex], ****************************" + "************************************\n"); + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, + "[BTCoex], Ant PG Num/ Ant Mech/ " + "Ant Pos = %d/ %d/ %d\n", board_info->pg_ant_num, + board_info->btdm_ant_num, board_info->btdm_ant_pos); + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, + "[BTCoex], BT stack/ hci ext ver = %s / %d\n", + ((stack_info->profile_notified)? "Yes":"No"), + stack_info->hci_version); + btcoexist->btc_get(btcoexist, BTC_GET_U4_BT_PATCH_VER, + &bt_patch_ver); + btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_FW_VER, &fw_ver); + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, + "[BTCoex], CoexVer/ fw_ver/ PatchVer = " + "%d_%x/ 0x%x/ 0x%x(%d)\n", + glcoex_ver_date_8723b_2ant, glcoex_ver_8723b_2ant, + fw_ver, bt_patch_ver, bt_patch_ver); + BTC_PRINT(BTC_MSG_INTERFACE, INTF_INIT, + "[BTCoex], *****************************" + "***********************************\n"); + } + +#if(BT_AUTO_REPORT_ONLY_8723B_2ANT == 0) + halbtc8723b2ant_query_bt_info(btcoexist); + halbtc8723b2ant_monitor_bt_ctr(btcoexist); + halbtc8723b2ant_monitor_bt_enable_disable(btcoexist); +#else + if (halbtc8723b2ant_is_wifi_status_changed(btcoexist) || + coex_dm->auto_tdma_adjust) + halbtc8723b2ant_run_coexist_mechanism(btcoexist); +#endif +} + + +#endif + --- linux-3.13.0.orig/drivers/staging/rtl8821ae/btcoexist/halbtc8723b2ant.h +++ linux-3.13.0/drivers/staging/rtl8821ae/btcoexist/halbtc8723b2ant.h @@ -0,0 +1,145 @@ +/************************************************************************ + * The following is for 8723B 2Ant BT Co-exist definition + ************************************************************************/ +#define BT_AUTO_REPORT_ONLY_8723B_2ANT 1 + + +#define BT_INFO_8723B_2ANT_B_FTP BIT7 +#define BT_INFO_8723B_2ANT_B_A2DP BIT6 +#define BT_INFO_8723B_2ANT_B_HID BIT5 +#define BT_INFO_8723B_2ANT_B_SCO_BUSY BIT4 +#define BT_INFO_8723B_2ANT_B_ACL_BUSY BIT3 +#define BT_INFO_8723B_2ANT_B_INQ_PAGE BIT2 +#define BT_INFO_8723B_2ANT_B_SCO_ESCO BIT1 +#define BT_INFO_8723B_2ANT_B_CONNECTION BIT0 + +#define BTC_RSSI_COEX_THRESH_TOL_8723B_2ANT 2 + +typedef enum _BT_INFO_SRC_8723B_2ANT{ + BT_INFO_SRC_8723B_2ANT_WIFI_FW = 0x0, + BT_INFO_SRC_8723B_2ANT_BT_RSP = 0x1, + BT_INFO_SRC_8723B_2ANT_BT_ACTIVE_SEND = 0x2, + BT_INFO_SRC_8723B_2ANT_MAX +}BT_INFO_SRC_8723B_2ANT,*PBT_INFO_SRC_8723B_2ANT; + +typedef enum _BT_8723B_2ANT_BT_STATUS{ + BT_8723B_2ANT_BT_STATUS_NON_CONNECTED_IDLE = 0x0, + BT_8723B_2ANT_BT_STATUS_CONNECTED_IDLE = 0x1, + BT_8723B_2ANT_BT_STATUS_INQ_PAGE = 0x2, + BT_8723B_2ANT_BT_STATUS_ACL_BUSY = 0x3, + BT_8723B_2ANT_BT_STATUS_SCO_BUSY = 0x4, + BT_8723B_2ANT_BT_STATUS_ACL_SCO_BUSY = 0x5, + BT_8723B_2ANT_BT_STATUS_MAX +}BT_8723B_2ANT_BT_STATUS,*PBT_8723B_2ANT_BT_STATUS; + +typedef enum _BT_8723B_2ANT_COEX_ALGO{ + BT_8723B_2ANT_COEX_ALGO_UNDEFINED = 0x0, + BT_8723B_2ANT_COEX_ALGO_SCO = 0x1, + BT_8723B_2ANT_COEX_ALGO_HID = 0x2, + BT_8723B_2ANT_COEX_ALGO_A2DP = 0x3, + BT_8723B_2ANT_COEX_ALGO_A2DP_PANHS = 0x4, + BT_8723B_2ANT_COEX_ALGO_PANEDR = 0x5, + BT_8723B_2ANT_COEX_ALGO_PANHS = 0x6, + BT_8723B_2ANT_COEX_ALGO_PANEDR_A2DP = 0x7, + BT_8723B_2ANT_COEX_ALGO_PANEDR_HID = 0x8, + BT_8723B_2ANT_COEX_ALGO_HID_A2DP_PANEDR = 0x9, + BT_8723B_2ANT_COEX_ALGO_HID_A2DP = 0xa, + BT_8723B_2ANT_COEX_ALGO_MAX = 0xb, +}BT_8723B_2ANT_COEX_ALGO,*PBT_8723B_2ANT_COEX_ALGO; + +struct coex_dm_8723b_2ant{ + /* fw mechanism */ + bool pre_dec_bt_pwr; + bool cur_dec_bt_pwr; + u8 pre_fw_dac_swing_lvl; + u8 cur_fw_dac_swing_lvl; + bool cur_ignore_wlan_act; + bool pre_ignore_wlan_act; + u8 pre_ps_tdma; + u8 cur_ps_tdma; + u8 ps_tdma_para[5]; + u8 ps_tdma_du_adj_type; + bool reset_tdma_adjust; + bool auto_tdma_adjust; + bool pre_ps_tdma_on; + bool cur_ps_tdma_on; + bool pre_bt_auto_report; + bool cur_bt_auto_report; + + /* sw mechanism */ + bool pre_rf_rx_lpf_shrink; + bool cur_rf_rx_lpf_shrink; + u32 bt_rf0x1e_backup; + bool pre_low_penalty_ra; + bool cur_low_penalty_ra; + bool pre_dac_swing_on; + u32 pre_dac_swing_lvl; + bool cur_dac_swing_on; + u32 cur_dac_swing_lvl; + bool pre_adc_back_off; + bool cur_adc_back_off; + bool pre_agc_table_en; + bool cur_agc_table_en; + u32 pre_val0x6c0; + u32 cur_val0x6c0; + u32 pre_val0x6c4; + u32 cur_val0x6c4; + u32 pre_val0x6c8; + u32 cur_val0x6c8; + u8 pre_val0x6cc; + u8 cur_val0x6cc; + bool limited_dig; + + /* algorithm related */ + u8 pre_algorithm; + u8 cur_algorithm; + u8 bt_status; + u8 wifi_chnl_info[3]; + + bool need_recover_0x948; + u16 backup_0x948; +}; + +struct coex_sta_8723b_2ant{ + bool bt_link_exist; + bool sco_exist; + bool a2dp_exist; + bool hid_exist; + bool pan_exist; + + bool under_lps; + bool under_ips; + u32 high_priority_tx; + u32 high_priority_rx; + u32 low_priority_tx; + u32 low_priority_rx; + u8 bt_rssi; + u8 pre_bt_rssi_state; + u8 pre_wifi_rssi_state[4]; + bool c2h_bt_info_req_sent; + u8 bt_info_c2h[BT_INFO_SRC_8723B_2ANT_MAX][10]; + u32 bt_info_c2h_cnt[BT_INFO_SRC_8723B_2ANT_MAX]; + bool c2h_bt_inquiry_page; + u8 bt_retry_cnt; + u8 bt_info_ext; +}; + +/********************************************************************* + * The following is interface which will notify coex module. + *********************************************************************/ +void ex_halbtc8723b2ant_init_hwconfig(struct btc_coexist *btcoexist); +void ex_halbtc8723b2ant_init_coex_dm(struct btc_coexist *btcoexist); +void ex_halbtc8723b2ant_ips_notify(struct btc_coexist *btcoexist, u8 type); +void ex_halbtc8723b2ant_lps_notify(struct btc_coexist *btcoexist, u8 type); +void ex_halbtc8723b2ant_scan_notify(struct btc_coexist *btcoexist, u8 type); +void ex_halbtc8723b2ant_connect_notify(struct btc_coexist *btcoexist, u8 type); +void ex_halbtc8723b2ant_media_status_notify(struct btc_coexist *btcoexist, + u8 type); +void ex_halbtc8723b2ant_special_packet_notify(struct btc_coexist *btcoexist, + u8 type); +void ex_halbtc8723b2ant_bt_info_notify(struct btc_coexist *btcoexist, + u8 *tmpbuf, u8 length); +void ex_halbtc8723b2ant_halt_notify(struct btc_coexist *btcoexist); +void ex_halbtc8723b2ant_periodical(struct btc_coexist * btcoexist); +void ex_halbtc8723b2ant_display_coex_info(struct btc_coexist *btcoexist); + --- linux-3.13.0.orig/drivers/staging/rtl8821ae/btcoexist/halbtcoutsrc.c +++ linux-3.13.0/drivers/staging/rtl8821ae/btcoexist/halbtcoutsrc.c @@ -0,0 +1,1181 @@ +/****************************************************************************** + * + * 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 "halbt_precomp.h" + +/*#if(BT_30_SUPPORT == 1)*/ +#if 1 +/*********************************************** + * Global variables + ***********************************************/ +const char *const bt_profile_string[]={ + "NONE", + "A2DP", + "PAN", + "HID", + "SCO", +}; + +const char *const bt_spec_string[]={ + "1.0b", + "1.1", + "1.2", + "2.0+EDR", + "2.1+EDR", + "3.0+HS", + "4.0", +}; + +const char *const bt_link_role_string[]={ + "Master", + "Slave", +}; + +const char *const h2c_state_string[]={ + "successful", + "h2c busy", + "rf off", + "fw not read", +}; + +const char *const io_state_string[]={ + "IO_STATUS_SUCCESS", + "IO_STATUS_FAIL_CANNOT_IO", + "IO_STATUS_FAIL_RF_OFF", + "IO_STATUS_FAIL_FW_READ_CLEAR_TIMEOUT", + "IO_STATUS_FAIL_WAIT_IO_EVENT_TIMEOUT", + "IO_STATUS_INVALID_LEN", + "IO_STATUS_IO_IDLE_QUEUE_EMPTY", + "IO_STATUS_IO_INSERT_WAIT_QUEUE_FAIL", + "IO_STATUS_UNKNOWN_FAIL", + "IO_STATUS_WRONG_LEVEL", + "IO_STATUS_H2C_STOPPED", +}; + +struct btc_coexist gl_bt_coexist; + +u32 btc_dbg_type[BTC_MSG_MAX]; +u8 btc_dbg_buf[100]; + +/*************************************************** + * Debug related function + ***************************************************/ +bool halbtc_is_bt_coexist_available(struct btc_coexist *btcoexist) +{ + if (!btcoexist->binded || NULL == btcoexist->adapter) + return false; + + return true; +} + +bool halbtc_is_wifi_busy(struct rtl_priv *rtlpriv) +{ + + if (rtlpriv->link_info.b_busytraffic) + return true; + else + return false; +} + + +void halbtc_dbg_init(void) +{ + u8 i; + + for (i = 0; i < BTC_MSG_MAX; i++) + btc_dbg_type[i] = 0; + + btc_dbg_type[BTC_MSG_INTERFACE] = \ +// INTF_INIT | +// INTF_NOTIFY | + 0; + + btc_dbg_type[BTC_MSG_ALGORITHM] = \ +// ALGO_BT_RSSI_STATE | +// ALGO_WIFI_RSSI_STATE | +// ALGO_BT_MONITOR | +// ALGO_TRACE | +// ALGO_TRACE_FW | +// ALGO_TRACE_FW_DETAIL | +// ALGO_TRACE_FW_EXEC | +// ALGO_TRACE_SW | +// ALGO_TRACE_SW_DETAIL | +// ALGO_TRACE_SW_EXEC | + 0; +} + +bool halbtc_is_hw_mailbox_exist(struct btc_coexist *btcoexist) +{ + return true; +} + +bool halbtc_is_bt40(struct rtl_priv *adapter) +{ + struct rtl_priv *rtlpriv = adapter; + struct rtl_phy *rtlphy = &(rtlpriv->phy); + bool is_ht40 = true; + enum ht_channel_width bw = rtlphy->current_chan_bw; + + + if (bw == HT_CHANNEL_WIDTH_20) + is_ht40 = false; + else if (bw == HT_CHANNEL_WIDTH_20_40) + is_ht40 = true; + + return is_ht40; +} + +bool halbtc_legacy(struct rtl_priv *adapter) +{ + struct rtl_priv *rtlpriv = adapter; + struct rtl_mac *mac = rtl_mac(rtlpriv); + + bool is_legacy = false; + + if ((mac->mode == WIRELESS_MODE_B) || (mac->mode == WIRELESS_MODE_B)) + is_legacy = true; + + return is_legacy; +} + +bool halbtc_is_wifi_uplink(struct rtl_priv *adapter) +{ + struct rtl_priv *rtlpriv = adapter; + + if (rtlpriv->link_info.b_tx_busy_traffic) + return true; + else + return false; +} + +u32 halbtc_get_wifi_bw(struct btc_coexist *btcoexist) +{ + struct rtl_priv *rtlpriv = + (struct rtl_priv *)btcoexist->adapter; + u32 wifi_bw = BTC_WIFI_BW_HT20; + + if (halbtc_is_bt40(rtlpriv)){ + wifi_bw = BTC_WIFI_BW_HT40; + } else { + if(halbtc_legacy(rtlpriv)) + wifi_bw = BTC_WIFI_BW_LEGACY; + else + wifi_bw = BTC_WIFI_BW_HT20; + } + return wifi_bw; +} + +u8 halbtc_get_wifi_central_chnl(struct btc_coexist *btcoexist) +{ + struct rtl_priv *rtlpriv = btcoexist->adapter; + struct rtl_phy *rtlphy = &(rtlpriv->phy); + u8 chnl = 1; + + + if (rtlphy->current_channel != 0) + chnl = rtlphy->current_channel; + BTC_PRINT(BTC_MSG_ALGORITHM, ALGO_TRACE, + "halbtc_get_wifi_central_chnl:%d\n",chnl); + return chnl; +} + +void halbtc_leave_lps(struct btc_coexist *btcoexist) +{ + struct rtl_priv *rtlpriv; + struct rtl_ps_ctl *ppsc; + bool ap_enable = false; + + rtlpriv = btcoexist->adapter; + ppsc = rtl_psc(rtlpriv); + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_AP_MODE_ENABLE, + &ap_enable); + + if (ap_enable) { + printk("halbtc_leave_lps()<--dont leave lps under AP mode\n"); + return; + } + + btcoexist->bt_info.bt_ctrl_lps = true; + btcoexist->bt_info.bt_lps_on = false; +} + +void halbtc_enter_lps(struct btc_coexist *btcoexist) +{ + struct rtl_priv *rtlpriv; + struct rtl_ps_ctl *ppsc; + bool ap_enable = false; + + rtlpriv = btcoexist->adapter; + ppsc = rtl_psc(rtlpriv); + + btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_AP_MODE_ENABLE, + &ap_enable); + + if (ap_enable) { + printk("halbtc_enter_lps()<--dont enter lps under AP mode\n"); + return; + } + + btcoexist->bt_info.bt_ctrl_lps = true; + btcoexist->bt_info.bt_lps_on = false; +} + +void halbtc_normal_lps(struct btc_coexist *btcoexist) +{ + if (btcoexist->bt_info.bt_ctrl_lps) { + btcoexist->bt_info.bt_lps_on = false; + btcoexist->bt_info.bt_ctrl_lps = false; + } + +} + +void halbtc_leave_low_power(void) +{ +} + +void halbtc_nomal_low_power(void) +{ +} + +void halbtc_disable_low_power(void) +{ +} + +void halbtc_aggregation_check(void) +{ +} + + +u32 halbtc_get_bt_patch_version(struct btc_coexist *btcoexist) +{ + return 0; +} + +s32 halbtc_get_wifi_rssi(struct rtl_priv *adapter) +{ + struct rtl_priv *rtlpriv = adapter; + s32 undecorated_smoothed_pwdb = 0; + + if (rtlpriv->mac80211.link_state >= MAC80211_LINKED) + undecorated_smoothed_pwdb = + rtlpriv->dm.undecorated_smoothed_pwdb; + else /* associated entry pwdb */ + undecorated_smoothed_pwdb = + rtlpriv->dm.undecorated_smoothed_pwdb; + return undecorated_smoothed_pwdb; +} + +bool halbtc_get(void *void_btcoexist, u8 get_type, void *out_buf) +{ + struct btc_coexist *btcoexist = (struct btc_coexist *)void_btcoexist; + struct rtl_priv *rtlpriv = btcoexist->adapter; + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct rtl_mac *mac = rtl_mac(rtlpriv); + struct rtl_hal *rtlhal = rtl_hal(rtlpriv); + bool *bool_tmp = (bool*)out_buf; + int *s32_tmp = (int*)out_buf; + u32 *u32_tmp = (u32*)out_buf; + u8 *u8_tmp = (u8*)out_buf; + bool tmp = false; + + + if (!halbtc_is_bt_coexist_available(btcoexist)) + return false; + + + switch (get_type){ + case BTC_GET_BL_HS_OPERATION: + *bool_tmp = false; + break; + case BTC_GET_BL_HS_CONNECTING: + *bool_tmp = false; + break; + case BTC_GET_BL_WIFI_CONNECTED: + if (rtlpriv->mac80211.link_state >= MAC80211_LINKED) + tmp = true; + + *bool_tmp = tmp; + break; + case BTC_GET_BL_WIFI_BUSY: + if(halbtc_is_wifi_busy(rtlpriv)) + *bool_tmp = true; + else + *bool_tmp = false; + break; + case BTC_GET_BL_WIFI_SCAN: + if (mac->act_scanning == true) + *bool_tmp = true; + else + *bool_tmp = false; + break; + case BTC_GET_BL_WIFI_LINK: + if (mac->link_state == MAC80211_LINKING) + *bool_tmp = true; + else + *bool_tmp = false; + break; + case BTC_GET_BL_WIFI_ROAM: /*TODO*/ + if (mac->link_state == MAC80211_LINKING) + *bool_tmp = true; + else + *bool_tmp = false; + break; + case BTC_GET_BL_WIFI_4_WAY_PROGRESS: /*TODO*/ + *bool_tmp = false; + + break; + case BTC_GET_BL_WIFI_UNDER_5G: + *bool_tmp = false; /*TODO*/ + + case BTC_GET_BL_WIFI_DHCP: /*TODO*/ + break; + case BTC_GET_BL_WIFI_SOFTAP_IDLE: + *bool_tmp = true; + break; + case BTC_GET_BL_WIFI_SOFTAP_LINKING: + *bool_tmp = false; + break; + case BTC_GET_BL_WIFI_IN_EARLY_SUSPEND: + *bool_tmp = false; + break; + case BTC_GET_BL_WIFI_AP_MODE_ENABLE: + *bool_tmp = false; + break; + case BTC_GET_BL_WIFI_ENABLE_ENCRYPTION: + if (NO_ENCRYPTION == rtlpriv->sec.pairwise_enc_algorithm) + *bool_tmp = false; + else + *bool_tmp = true; + break; + case BTC_GET_BL_WIFI_UNDER_B_MODE: + *bool_tmp = false; /*TODO*/ + break; + case BTC_GET_BL_EXT_SWITCH: + *bool_tmp = false; + break; + case BTC_GET_S4_WIFI_RSSI: + *s32_tmp = halbtc_get_wifi_rssi(rtlpriv); + break; + case BTC_GET_S4_HS_RSSI: /*TODO*/ + *s32_tmp = halbtc_get_wifi_rssi(rtlpriv); + break; + case BTC_GET_U4_WIFI_BW: + *u32_tmp = halbtc_get_wifi_bw(btcoexist); + break; + case BTC_GET_U4_WIFI_TRAFFIC_DIRECTION: + if (halbtc_is_wifi_uplink(rtlpriv)) + *u32_tmp = BTC_WIFI_TRAFFIC_TX; + else + *u32_tmp = BTC_WIFI_TRAFFIC_RX; + break; + case BTC_GET_U4_WIFI_FW_VER: + *u32_tmp = rtlhal->fw_version; + break; + case BTC_GET_U4_BT_PATCH_VER: + *u32_tmp = halbtc_get_bt_patch_version(btcoexist); + break; + case BTC_GET_U1_WIFI_DOT11_CHNL: + *u8_tmp = rtlphy->current_channel; + break; + case BTC_GET_U1_WIFI_CENTRAL_CHNL: + *u8_tmp = halbtc_get_wifi_central_chnl(btcoexist); + break; + case BTC_GET_U1_WIFI_HS_CHNL: + *u8_tmp = 1;/* BT_OperateChnl(rtlpriv); */ + break; + case BTC_GET_U1_MAC_PHY_MODE: + *u8_tmp = BTC_MP_UNKNOWN; + break; + case BTC_GET_U1_AP_NUM: + /* driver don't know AP num in Linux, + * So, the return value here is not right */ + *u8_tmp = 1;/* pDefMgntInfo->NumBssDesc4Query; */ + break; + + /************* 1Ant **************/ + case BTC_GET_U1_LPS_MODE: + *u8_tmp = btcoexist->pwr_mode_val[0]; + break; + + default: + break; + } + + return true; +} + +bool halbtc_set(void *void_btcoexist, u8 set_type, void *in_buf) +{ + struct btc_coexist *btcoexist = (struct btc_coexist *)void_btcoexist; + bool *bool_tmp = (bool *)in_buf; + u8 *u8_tmp = (u8 *)in_buf; + u32 *u32_tmp = (u32 *)in_buf; + + + if (!halbtc_is_bt_coexist_available(btcoexist)) + return false; + + switch (set_type) { + /* set some bool type variables. */ + case BTC_SET_BL_BT_DISABLE: + btcoexist->bt_info.bt_disabled = *bool_tmp; + break; + case BTC_SET_BL_BT_TRAFFIC_BUSY: + btcoexist->bt_info.bt_busy = *bool_tmp; + break; + case BTC_SET_BL_BT_LIMITED_DIG: + btcoexist->bt_info.limited_dig = *bool_tmp; + break; + case BTC_SET_BL_FORCE_TO_ROAM: + btcoexist->bt_info.force_to_roam = *bool_tmp; + break; + case BTC_SET_BL_TO_REJ_AP_AGG_PKT: + btcoexist->bt_info.reject_agg_pkt = *bool_tmp; + break; + case BTC_SET_BL_BT_CTRL_AGG_SIZE: + btcoexist->bt_info.b_bt_ctrl_buf_size = *bool_tmp; + break; + case BTC_SET_BL_INC_SCAN_DEV_NUM: + btcoexist->bt_info.increase_scan_dev_num = *bool_tmp; + break; + /* set some u1Byte type variables. */ + case BTC_SET_U1_RSSI_ADJ_VAL_FOR_AGC_TABLE_ON: + btcoexist->bt_info.rssi_adjust_for_agc_table_on = *u8_tmp; + break; + case BTC_SET_U1_AGG_BUF_SIZE: + btcoexist->bt_info.agg_buf_size = *u8_tmp; + break; + /* the following are some action which will be triggered */ + case BTC_SET_ACT_GET_BT_RSSI: + /*BTHCI_SendGetBtRssiEvent(rtlpriv);*/ + break; + case BTC_SET_ACT_AGGREGATE_CTRL: + halbtc_aggregation_check(); + break; + + /* 1Ant */ + case BTC_SET_U1_RSSI_ADJ_VAL_FOR_1ANT_COEX_TYPE: + btcoexist->bt_info.rssi_adjust_for_1ant_coex_type = *u8_tmp; + break; + case BTC_SET_UI_SCAN_SIG_COMPENSATION: + /* rtlpriv->mlmepriv.scan_compensation = *u8_tmp; */ + break; + case BTC_SET_U1_1ANT_LPS: + btcoexist->bt_info.lps_1ant = *u8_tmp; + break; + case BTC_SET_U1_1ANT_RPWM: + btcoexist->bt_info.rpwm_1ant = *u8_tmp; + break; + /* the following are some action which will be triggered */ + case BTC_SET_ACT_LEAVE_LPS: + halbtc_leave_lps(btcoexist); + break; + case BTC_SET_ACT_ENTER_LPS: + halbtc_enter_lps(btcoexist); + break; + case BTC_SET_ACT_NORMAL_LPS: + halbtc_normal_lps(btcoexist); + break; + case BTC_SET_ACT_DISABLE_LOW_POWER: + halbtc_disable_low_power(); + break; + case BTC_SET_ACT_UPDATE_ra_mask: + btcoexist->bt_info.ra_mask = *u32_tmp; + break; + case BTC_SET_ACT_SEND_MIMO_PS: + break; + case BTC_SET_ACT_INC_FORCE_EXEC_PWR_CMD_CNT: + btcoexist->bt_info.force_exec_pwr_cmd_cnt++; + break; + case BTC_SET_ACT_CTRL_BT_INFO: /*wait for 8812/8821*/ + break; + case BTC_SET_ACT_CTRL_BT_COEX: + break; + default: + break; + } + + return true; +} + +void halbtc_display_coex_statistics(struct btc_coexist *btcoexist) +{ +} + +void halbtc_display_bt_link_info(struct btc_coexist *btcoexist) +{ +} + +void halbtc_display_bt_fw_info(struct btc_coexist *btcoexist) +{ +} + +void halbtc_display_fw_pwr_mode_cmd(struct btc_coexist *btcoexist) +{ +} + +/************************************************************ + * IO related function + ************************************************************/ +u8 halbtc_read_1byte(void *bt_context, u32 reg_addr) +{ + struct btc_coexist *btcoexist = (struct btc_coexist *)bt_context; + struct rtl_priv *rtlpriv = btcoexist->adapter; + + return rtl_read_byte(rtlpriv, reg_addr); +} + + +u16 halbtc_read_2byte(void *bt_context, u32 reg_addr) +{ + struct btc_coexist *btcoexist = (struct btc_coexist *)bt_context; + struct rtl_priv *rtlpriv = btcoexist->adapter; + + return rtl_read_word(rtlpriv, reg_addr); +} + + +u32 halbtc_read_4byte(void *bt_context, u32 reg_addr) +{ + struct btc_coexist *btcoexist = (struct btc_coexist *)bt_context; + struct rtl_priv *rtlpriv = btcoexist->adapter; + + return rtl_read_dword(rtlpriv, reg_addr); +} + + +void halbtc_write_1byte(void *bt_context, u32 reg_addr, u8 data) +{ + struct btc_coexist *btcoexist = (struct btc_coexist *)bt_context; + struct rtl_priv *rtlpriv = btcoexist->adapter; + + rtl_write_byte(rtlpriv, reg_addr, data); +} + +void halbtc_bitmask_write_1byte(void *bt_context, u32 reg_addr, + u8 bit_mask, u8 data) +{ + struct btc_coexist *btcoexist = (struct btc_coexist *)bt_context; + struct rtl_priv *rtlpriv = btcoexist->adapter; + u8 original_value, bit_shift = 0; + u8 i; + + if (bit_mask != MASKDWORD) {/*if not "double word" write*/ + original_value = rtl_read_byte(rtlpriv, reg_addr); + for (i=0; i<=7; i++) { + if((bit_mask>>i)&0x1) + break; + } + bit_shift = i; + data = (original_value & (~bit_mask)) | + ((data << bit_shift) & bit_mask); + } + rtl_write_byte(rtlpriv, reg_addr, data); +} + + +void halbtc_write_2byte(void *bt_context, u32 reg_addr, u16 data) +{ + struct btc_coexist *btcoexist = (struct btc_coexist *)bt_context; + struct rtl_priv *rtlpriv = btcoexist->adapter; + + rtl_write_word(rtlpriv, reg_addr, data); +} + + +void halbtc_write_4byte(void *bt_context, u32 reg_addr, u32 data) +{ + struct btc_coexist *btcoexist = + (struct btc_coexist *)bt_context; + struct rtl_priv *rtlpriv = btcoexist->adapter; + + rtl_write_dword(rtlpriv, reg_addr, data); +} + + +void halbtc_set_macreg(void *bt_context, u32 reg_addr, u32 bit_mask, u32 data) +{ + struct btc_coexist *btcoexist = (struct btc_coexist *)bt_context; + struct rtl_priv *rtlpriv = btcoexist->adapter; + + rtl_set_bbreg(rtlpriv->mac80211.hw, reg_addr, bit_mask, data); +} + + +u32 halbtc_get_macreg(void *bt_context, u32 reg_addr, u32 bit_mask) +{ + struct btc_coexist *btcoexist = (struct btc_coexist *)bt_context; + struct rtl_priv *rtlpriv = btcoexist->adapter; + + return rtl_get_bbreg(rtlpriv->mac80211.hw, reg_addr, bit_mask); +} + + +void halbtc_set_bbreg(void *bt_context, u32 reg_addr, u32 bit_mask, u32 data) +{ + struct btc_coexist *btcoexist = (struct btc_coexist *)bt_context; + struct rtl_priv *rtlpriv = btcoexist->adapter; + + rtl_set_bbreg(rtlpriv->mac80211.hw, reg_addr, bit_mask, data); +} + + +u32 halbtc_get_bbreg(void *bt_context, u32 reg_addr, u32 bit_mask) +{ + struct btc_coexist *btcoexist = (struct btc_coexist *)bt_context; + struct rtl_priv *rtlpriv = btcoexist->adapter; + + return rtl_get_bbreg(rtlpriv->mac80211.hw,reg_addr, bit_mask); +} + + +void halbtc_set_rfreg(void *bt_context, u8 rf_path, u32 reg_addr, + u32 bit_mask, u32 data) +{ + struct btc_coexist *btcoexist = (struct btc_coexist *)bt_context; + struct rtl_priv *rtlpriv = btcoexist->adapter; + + rtl_set_rfreg(rtlpriv->mac80211.hw, rf_path, reg_addr, bit_mask, data); +} + + +u32 halbtc_get_rfreg(void *bt_context, u8 rf_path, u32 reg_addr, u32 bit_mask) +{ + struct btc_coexist *btcoexist = (struct btc_coexist *)bt_context; + struct rtl_priv *rtlpriv = btcoexist->adapter; + + return rtl_get_rfreg(rtlpriv->mac80211.hw, rf_path, reg_addr, bit_mask); +} + + +void halbtc_fill_h2c_cmd(void *bt_context, u8 element_id, + u32 cmd_len, u8 *cmd_buf) +{ + struct btc_coexist *btcoexist = (struct btc_coexist *)bt_context; + struct rtl_priv *rtlpriv = btcoexist->adapter; + + rtlpriv->cfg->ops->fill_h2c_cmd(rtlpriv->mac80211.hw, element_id, + cmd_len, cmd_buf); +} + +void halbtc_display_dbg_msg(void *bt_context, u8 disp_type) +{ + struct btc_coexist *btcoexist = (struct btc_coexist *)bt_context; + switch (disp_type) { + case BTC_DBG_DISP_COEX_STATISTICS: + halbtc_display_coex_statistics(btcoexist); + break; + case BTC_DBG_DISP_BT_LINK_INFO: + halbtc_display_bt_link_info(btcoexist); + break; + case BTC_DBG_DISP_BT_FW_VER: + halbtc_display_bt_fw_info(btcoexist); + break; + case BTC_DBG_DISP_FW_PWR_MODE_CMD: + halbtc_display_fw_pwr_mode_cmd(btcoexist); + break; + default: + break; + } +} + +bool halbtc_under_ips(struct btc_coexist *btcoexist) +{ + struct rtl_priv *rtlpriv = btcoexist->adapter; + struct rtl_ps_ctl *ppsc = rtl_psc(rtlpriv); + enum rf_pwrstate rtstate; + + if (ppsc->b_inactiveps) { + rtstate = ppsc->rfpwr_state; + + if (rtstate != ERFON && + ppsc->rfoff_reason == RF_CHANGE_BY_IPS) { + + return true; + } + } + + return false; +} + +/***************************************************************** + * Extern functions called by other module + *****************************************************************/ +bool exhalbtc_initlize_variables(struct rtl_priv *adapter) +{ + struct btc_coexist *btcoexist = &gl_bt_coexist; + + btcoexist->statistics.cnt_bind++; + + halbtc_dbg_init(); + + if (btcoexist->binded) + return false; + else + btcoexist->binded = true; + +#if ( defined(CONFIG_PCI_HCI)) + btcoexist->chip_interface = BTC_INTF_PCI; +#elif ( defined(CONFIG_USB_HCI)) + btcoexist->chip_interface = BTC_INTF_USB; +#elif ( defined(CONFIG_SDIO_HCI)) + btcoexist->chip_interface = BTC_INTF_SDIO; +#elif ( defined(CONFIG_GSPI_HCI)) + btcoexist->chip_interface = BTC_INTF_GSPI; +#else + btcoexist->chip_interface = BTC_INTF_UNKNOWN; +#endif + + if (NULL == btcoexist->adapter) + btcoexist->adapter = adapter; + + btcoexist->stack_info.profile_notified = false; + + btcoexist->btc_read_1byte = halbtc_read_1byte; + btcoexist->btc_write_1byte = halbtc_write_1byte; + btcoexist->btc_write_1byte_bitmask = halbtc_bitmask_write_1byte; + btcoexist->btc_read_2byte = halbtc_read_2byte; + btcoexist->btc_write_2byte = halbtc_write_2byte; + btcoexist->btc_read_4byte = halbtc_read_4byte; + btcoexist->btc_write_4byte = halbtc_write_4byte; + + btcoexist->btc_set_bb_reg = halbtc_set_bbreg; + btcoexist->btc_get_bb_reg = halbtc_get_bbreg; + + btcoexist->btc_set_rf_reg = halbtc_set_rfreg; + btcoexist->btc_get_rf_reg = halbtc_get_rfreg; + + btcoexist->btc_fill_h2c = halbtc_fill_h2c_cmd; + btcoexist->btc_disp_dbg_msg = halbtc_display_dbg_msg; + + btcoexist->btc_get = halbtc_get; + btcoexist->btc_set = halbtc_set; + + btcoexist->cli_buf = &btc_dbg_buf[0]; + + btcoexist->bt_info.b_bt_ctrl_buf_size = false; + btcoexist->bt_info.agg_buf_size = 5; + + btcoexist->bt_info.increase_scan_dev_num = false; + return true; +} + +void exhalbtc_init_hw_config(struct btc_coexist *btcoexist) +{ + struct rtl_priv *rtlpriv = btcoexist->adapter; + struct rtl_hal *rtlhal = rtl_hal(rtlpriv); + + if (!halbtc_is_bt_coexist_available(btcoexist)) + return; + + btcoexist->statistics.cnt_init_hw_config++; + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8723BE) { + if (btcoexist->board_info.btdm_ant_num == 2) + ex_halbtc8723b2ant_init_hwconfig(btcoexist); + else if(btcoexist->board_info.btdm_ant_num == 1) + ex_halbtc8723b1ant_init_hwconfig(btcoexist); + } else if (rtlhal->hw_type == HARDWARE_TYPE_RTL8192EE) { + ex_halbtc8192e2ant_init_hwconfig(btcoexist); + } + +} + +void exhalbtc_init_coex_dm(struct btc_coexist *btcoexist) +{ + struct rtl_priv *rtlpriv = btcoexist->adapter; + struct rtl_hal *rtlhal = rtl_hal(rtlpriv); + + if (!halbtc_is_bt_coexist_available(btcoexist)) + return; + + btcoexist->statistics.cnt_init_coex_dm++; + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8723BE) { + if (btcoexist->board_info.btdm_ant_num == 2) + ex_halbtc8723b2ant_init_coex_dm(btcoexist); + else if(btcoexist->board_info.btdm_ant_num == 1) + ex_halbtc8723b1ant_init_coex_dm(btcoexist); + } else if (rtlhal->hw_type == HARDWARE_TYPE_RTL8192EE) { + ex_halbtc8192e2ant_init_coex_dm(btcoexist); + } + + btcoexist->initilized = true; +} + +void exhalbtc_ips_notify(struct btc_coexist *btcoexist, u8 type) +{ + struct rtl_priv *rtlpriv = btcoexist->adapter; + struct rtl_hal *rtlhal = rtl_hal(rtlpriv); + u8 ips_type; + + if (!halbtc_is_bt_coexist_available(btcoexist)) + return; + btcoexist->statistics.cnt_ips_notify++; + if (btcoexist->manual_control) + return; + + if (ERFOFF == type) + ips_type = BTC_IPS_ENTER; + else + ips_type = BTC_IPS_LEAVE; + + halbtc_leave_low_power(); + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8723BE) { + if (btcoexist->board_info.btdm_ant_num == 2) + ex_halbtc8723b2ant_ips_notify(btcoexist, ips_type); + else if(btcoexist->board_info.btdm_ant_num == 1) + ex_halbtc8723b1ant_ips_notify(btcoexist, ips_type); + } else if (rtlhal->hw_type == HARDWARE_TYPE_RTL8192EE) { + ex_halbtc8192e2ant_ips_notify(btcoexist, ips_type); + } + + halbtc_nomal_low_power(); +} + +void exhalbtc_lps_notify(struct btc_coexist *btcoexist, u8 type) +{ + struct rtl_priv *rtlpriv = btcoexist->adapter; + struct rtl_hal *rtlhal = rtl_hal(rtlpriv); + u8 lps_type; + + if (!halbtc_is_bt_coexist_available(btcoexist)) + return; + btcoexist->statistics.cnt_lps_notify++; + if (btcoexist->manual_control) + return; + + if (EACTIVE == type) + lps_type = BTC_LPS_DISABLE; + else + lps_type = BTC_LPS_ENABLE; + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8723BE) { + if (btcoexist->board_info.btdm_ant_num == 2) + ex_halbtc8723b2ant_lps_notify(btcoexist, lps_type); + else if(btcoexist->board_info.btdm_ant_num == 1) + ex_halbtc8723b1ant_lps_notify(btcoexist, lps_type); + } else if (rtlhal->hw_type == HARDWARE_TYPE_RTL8192EE) { + ex_halbtc8192e2ant_lps_notify(btcoexist, lps_type); + } +} + +void exhalbtc_scan_notify(struct btc_coexist *btcoexist, u8 type) +{ + struct rtl_priv *rtlpriv = btcoexist->adapter; + struct rtl_hal *rtlhal = rtl_hal(rtlpriv); + u8 scan_type; + + if (!halbtc_is_bt_coexist_available(btcoexist)) + return; + btcoexist->statistics.cnt_scan_notify++; + if (btcoexist->manual_control) + return; + + if (type) + scan_type = BTC_SCAN_START; + else + scan_type = BTC_SCAN_FINISH; + + halbtc_leave_low_power(); + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8723BE) { + if (btcoexist->board_info.btdm_ant_num == 2) + ex_halbtc8723b2ant_scan_notify(btcoexist, scan_type); + else if(btcoexist->board_info.btdm_ant_num == 1) + ex_halbtc8723b1ant_scan_notify(btcoexist, scan_type); + } else if (rtlhal->hw_type == HARDWARE_TYPE_RTL8192EE) { + ex_halbtc8192e2ant_scan_notify(btcoexist, scan_type); + } + + halbtc_nomal_low_power(); +} + +void exhalbtc_connect_notify(struct btc_coexist *btcoexist, u8 action) +{ + struct rtl_priv *rtlpriv = btcoexist->adapter; + struct rtl_hal *rtlhal = rtl_hal(rtlpriv); + u8 asso_type; + + if (!halbtc_is_bt_coexist_available(btcoexist)) + return; + btcoexist->statistics.cnt_connect_notify++; + if (btcoexist->manual_control) + return; + + if (action) + asso_type = BTC_ASSOCIATE_START; + else + asso_type = BTC_ASSOCIATE_FINISH; + + halbtc_leave_low_power(); + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8723BE) { + if (btcoexist->board_info.btdm_ant_num == 2) + ex_halbtc8723b2ant_connect_notify(btcoexist, asso_type); + else if(btcoexist->board_info.btdm_ant_num == 1) + ex_halbtc8723b1ant_connect_notify(btcoexist, asso_type); + } else if (rtlhal->hw_type == HARDWARE_TYPE_RTL8192EE) { + ex_halbtc8192e2ant_connect_notify(btcoexist, asso_type); + } + + halbtc_nomal_low_power(); +} + +void exhalbtc_mediastatus_notify(struct btc_coexist *btcoexist, + enum rt_media_status media_status) +{ + struct rtl_priv *rtlpriv = btcoexist->adapter; + struct rtl_hal *rtlhal = rtl_hal(rtlpriv); + u8 status; + + if (!halbtc_is_bt_coexist_available(btcoexist)) + return; + btcoexist->statistics.cnt_media_status_notify++; + if (btcoexist->manual_control) + return; + + if (RT_MEDIA_CONNECT == media_status) + status = BTC_MEDIA_CONNECT; + else + status = BTC_MEDIA_DISCONNECT; + + halbtc_leave_low_power(); + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8723BE) { + if (btcoexist->board_info.btdm_ant_num == 2) + ex_halbtc8723b2ant_media_status_notify(btcoexist, status); + else if(btcoexist->board_info.btdm_ant_num == 1) + ex_halbtc8723b1ant_media_status_notify(btcoexist, status); + } else if (rtlhal->hw_type == HARDWARE_TYPE_RTL8192EE) { + ex_halbtc8192e2ant_media_status_notify(btcoexist, status); + } + + halbtc_nomal_low_power(); +} + +void exhalbtc_special_packet_notify(struct btc_coexist *btcoexist, u8 pkt_type) +{ + u8 packet_type; + + if (!halbtc_is_bt_coexist_available(btcoexist)) + return; + btcoexist->statistics.cnt_special_packet_notify++; + if (btcoexist->manual_control) + return; + + /*if(PACKET_DHCP == pkt_type)*/ + packet_type = BTC_PACKET_DHCP; + /*else if(PACKET_EAPOL == pkt_type) + packet_type = BTC_PACKET_EAPOL; + else + packet_type = BTC_PACKET_UNKNOWN;*/ + + halbtc_leave_low_power(); + + if (btcoexist->board_info.btdm_ant_num == 2) + ex_halbtc8723b2ant_special_packet_notify(btcoexist, + packet_type); + else if (btcoexist->board_info.btdm_ant_num == 1) + ex_halbtc8723b1ant_special_packet_notify(btcoexist, + packet_type); + + halbtc_nomal_low_power(); +} + +void exhalbtc_bt_info_notify(struct btc_coexist *btcoexist, + u8 *tmp_buf, u8 length) +{ + struct rtl_priv *rtlpriv = btcoexist->adapter; + struct rtl_hal *rtlhal = rtl_hal(rtlpriv); + if (!halbtc_is_bt_coexist_available(btcoexist)) + return; + btcoexist->statistics.cnt_bt_info_notify++; + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8723BE) { + if (btcoexist->board_info.btdm_ant_num == 2) + ex_halbtc8723b2ant_bt_info_notify(btcoexist, tmp_buf, length); + else if(btcoexist->board_info.btdm_ant_num == 1) + ex_halbtc8723b1ant_bt_info_notify(btcoexist, tmp_buf, length); + } else if (rtlhal->hw_type == HARDWARE_TYPE_RTL8192EE) { + // ex_halbtc8192e2ant_bt_info_notify(btcoexist, tmp_buf, length); + } +} + +void exhalbtc_stack_operation_notify(struct btc_coexist *btcoexist, u8 type) +{ + u8 stack_op_type; + + if (!halbtc_is_bt_coexist_available(btcoexist)) + return; + btcoexist->statistics.cnt_stack_operation_notify++; + if (btcoexist->manual_control) + return; + + stack_op_type = BTC_STACK_OP_NONE; +} + +void exhalbtc_halt_notify(struct btc_coexist *btcoexist) +{ + struct rtl_priv *rtlpriv = btcoexist->adapter; + struct rtl_hal *rtlhal = rtl_hal(rtlpriv); + if (!halbtc_is_bt_coexist_available(btcoexist)) + return; + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8723BE) { + if (btcoexist->board_info.btdm_ant_num == 2) + ex_halbtc8723b2ant_halt_notify(btcoexist); + else if(btcoexist->board_info.btdm_ant_num == 1) + ex_halbtc8723b1ant_halt_notify(btcoexist); + } else if (rtlhal->hw_type == HARDWARE_TYPE_RTL8192EE) { + ex_halbtc8192e2ant_halt_notify(btcoexist); + } +} + +void exhalbtc_pnp_notify(struct btc_coexist *btcoexist, u8 pnp_state) +{ + if (!halbtc_is_bt_coexist_available(btcoexist)) + return; +} + +void exhalbtc_periodical(struct btc_coexist *btcoexist) +{ + struct rtl_priv *rtlpriv = btcoexist->adapter; + struct rtl_hal *rtlhal = rtl_hal(rtlpriv); + if (!halbtc_is_bt_coexist_available(btcoexist)) + return; + btcoexist->statistics.cnt_periodical++; + + halbtc_leave_low_power(); + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8723BE) { + if (btcoexist->board_info.btdm_ant_num == 2) + ex_halbtc8723b2ant_periodical(btcoexist); + else if(btcoexist->board_info.btdm_ant_num == 1) + ex_halbtc8723b1ant_periodical(btcoexist); + } else if (rtlhal->hw_type == HARDWARE_TYPE_RTL8192EE) { + ex_halbtc8192e2ant_periodical(btcoexist); + } + + halbtc_nomal_low_power(); +} + +void exhalbtc_dbg_control(struct btc_coexist *btcoexist, + u8 code, u8 len, u8 *data) +{ + if (!halbtc_is_bt_coexist_available(btcoexist)) + return; + btcoexist->statistics.cnt_dbg_ctrl++; +} + +void exhalbtc_stack_update_profile_info() +{ +} + +void exhalbtc_update_min_bt_rssi(char bt_rssi) +{ + struct btc_coexist *btcoexist = &gl_bt_coexist; + + if (!halbtc_is_bt_coexist_available(btcoexist)) + return; + + btcoexist->stack_info.min_bt_rssi = bt_rssi; +} + + +void exhalbtc_set_hci_version(u16 hci_version) +{ + struct btc_coexist *btcoexist = &gl_bt_coexist; + + if (!halbtc_is_bt_coexist_available(btcoexist)) + return; + + btcoexist->stack_info.hci_version = hci_version; +} + +void exhalbtc_set_bt_patch_version(u16 bt_hci_version, u16 bt_patch_version) +{ + struct btc_coexist *btcoexist = &gl_bt_coexist; + + if (!halbtc_is_bt_coexist_available(btcoexist)) + return; + + btcoexist->bt_info.bt_real_fw_ver = bt_patch_version; + btcoexist->bt_info.bt_hci_ver = bt_hci_version; +} + +void exhalbtc_set_bt_exist(bool bt_exist) +{ + gl_bt_coexist.board_info.bt_exist = bt_exist; +} + +void exhalbtc_set_chip_type(u8 chip_type) +{ + switch (chip_type) { + default: + case BT_2WIRE: + case BT_ISSC_3WIRE: + case BT_ACCEL: + case BT_RTL8756: + gl_bt_coexist.board_info.bt_chip_type = BTC_CHIP_UNDEF; + break; + case BT_CSR_BC4: + gl_bt_coexist.board_info.bt_chip_type = BTC_CHIP_CSR_BC4; + break; + case BT_CSR_BC8: + gl_bt_coexist.board_info.bt_chip_type = BTC_CHIP_CSR_BC8; + break; + case BT_RTL8723A: + gl_bt_coexist.board_info.bt_chip_type = BTC_CHIP_RTL8723A; + break; + case BT_RTL8821A: + gl_bt_coexist.board_info.bt_chip_type = BTC_CHIP_RTL8821; + break; + case BT_RTL8723B: + gl_bt_coexist.board_info.bt_chip_type = BTC_CHIP_RTL8723B; + break; + } +} + +void exhalbtc_set_ant_num(u8 type, u8 ant_num) +{ + if (BT_COEX_ANT_TYPE_PG == type) { + gl_bt_coexist.board_info.pg_ant_num = ant_num; + gl_bt_coexist.board_info.btdm_ant_num = ant_num; + } else if (BT_COEX_ANT_TYPE_ANTDIV == type) { + gl_bt_coexist.board_info.btdm_ant_num = ant_num; + } +} + +void exhalbtc_display_bt_coex_info(struct btc_coexist *btcoexist) +{ + if (!halbtc_is_bt_coexist_available(btcoexist)) + return; + + if (btcoexist->board_info.btdm_ant_num == 2) + ex_halbtc8723b2ant_display_coex_info(btcoexist); + else if (btcoexist->board_info.btdm_ant_num == 1) + ex_halbtc8723b1ant_display_coex_info(btcoexist); +} + +#endif + --- linux-3.13.0.orig/drivers/staging/rtl8821ae/btcoexist/halbtcoutsrc.h +++ linux-3.13.0/drivers/staging/rtl8821ae/btcoexist/halbtcoutsrc.h @@ -0,0 +1,549 @@ +#ifndef __HALBTC_OUT_SRC_H__ +#define __HALBTC_OUT_SRC_H__ + +#include "../wifi.h" + +#define NORMAL_EXEC false +#define FORCE_EXEC true + +#define BTC_RF_A RF90_PATH_A +#define BTC_RF_B RF90_PATH_B +#define BTC_RF_C RF90_PATH_C +#define BTC_RF_D RF90_PATH_D + +#define BTC_SMSP SINGLEMAC_SINGLEPHY +#define BTC_DMDP DUALMAC_DUALPHY +#define BTC_DMSP DUALMAC_SINGLEPHY +#define BTC_MP_UNKNOWN 0xff + +#define IN +#define OUT + +#define BT_TMP_BUF_SIZE 100 + +#define BT_COEX_ANT_TYPE_PG 0 +#define BT_COEX_ANT_TYPE_ANTDIV 1 +#define BT_COEX_ANT_TYPE_DETECTED 2 + +#define BTC_MIMO_PS_STATIC 0 +#define BTC_MIMO_PS_DYNAMIC 1 + +#define BTC_RATE_DISABLE 0 +#define BTC_RATE_ENABLE 1 + +/* single Antenna definition */ +#define BTC_ANT_PATH_WIFI 0 +#define BTC_ANT_PATH_BT 1 +#define BTC_ANT_PATH_PTA 2 +/* dual Antenna definition */ +#define BTC_ANT_WIFI_AT_MAIN 0 +#define BTC_ANT_WIFI_AT_AUX 1 +/* coupler Antenna definition */ +#define BTC_ANT_WIFI_AT_CPL_MAIN 0 +#define BTC_ANT_WIFI_AT_CPL_AUX 1 + +enum btc_chip_interface{ + BTC_INTF_UNKNOWN = 0, + BTC_INTF_PCI = 1, + BTC_INTF_USB = 2, + BTC_INTF_SDIO = 3, + BTC_INTF_GSPI = 4, + BTC_INTF_MAX +}; + +enum btc_chip_type{ + BTC_CHIP_UNDEF = 0, + BTC_CHIP_CSR_BC4 = 1, + BTC_CHIP_CSR_BC8 = 2, + BTC_CHIP_RTL8723A = 3, + BTC_CHIP_RTL8821 = 4, + BTC_CHIP_RTL8723B = 5, + BTC_CHIP_MAX +}; + +enum btc_msg_type{ + BTC_MSG_INTERFACE = 0x0, + BTC_MSG_ALGORITHM = 0x1, + BTC_MSG_MAX +}; + +extern u32 btc_dbg_type[]; + +/* following is for BTC_MSG_INTERFACE */ +#define INTF_INIT BIT0 +#define INTF_NOTIFY BIT2 + +/* following is for BTC_ALGORITHM */ +#define ALGO_BT_RSSI_STATE BIT0 +#define ALGO_WIFI_RSSI_STATE BIT1 +#define ALGO_BT_MONITOR BIT2 +#define ALGO_TRACE BIT3 +#define ALGO_TRACE_FW BIT4 +#define ALGO_TRACE_FW_DETAIL BIT5 +#define ALGO_TRACE_FW_EXEC BIT6 +#define ALGO_TRACE_SW BIT7 +#define ALGO_TRACE_SW_DETAIL BIT8 +#define ALGO_TRACE_SW_EXEC BIT9 + + + +#define CL_SPRINTF snprintf +#define CL_PRINTF printk + +#define BTC_PRINT(dbgtype, dbgflag, printstr, ...) \ + do { \ + if (unlikely(btc_dbg_type[dbgtype] & dbgflag)) {\ + printk(printstr, ##__VA_ARGS__); \ + } \ + } while(0) + +#define BTC_PRINT_F(dbgtype, dbgflag, printstr, ...) \ + do { \ + if (unlikely(btc_dbg_type[dbgtype] & dbgflag)) {\ + printk(KERN_DEBUG "%s: ", __func__); \ + printk(printstr, ##__VA_ARGS__); \ + } \ + } while(0) + +#define BTC_PRINT_ADDR(dbgtype, dbgflag, printstr, _ptr) \ + do { \ + if(unlikely(btc_dbg_type[dbgtype] & dbgflag)) { \ + int __i; \ + u8* __ptr = (u8*)_Ptr; \ + printk printstr; \ + for( __i = 0; __i < 6; __i++ ) \ + printk("%02X%s", __ptr[__i], (__i==5)?"":"-");\ + printk(KERN_DEBUG "\n"); \ + }\ + } while(0) + +#define BTC_PRINT_DATA(dbgtype, dbgflag, _titlestring, _hexdata, _hexdatalen) \ + do { \ + if(unlikely(btc_dbg_type[dbgtype] & dbgflag) ) { \ + int __i; \ + u8 *__ptr = (u8*)_hexdata; \ + printk(_titlestring); \ + for( __i = 0; __i < (int)_hexdatalen; __i++ ) { \ + printk("%02X%s", __ptr[__i], (((__i + 1) % 4) \ + == 0)?" ":" ");\ + if (((__i + 1) % 16) == 0) \ + printk("\n"); \ + } \ + printk(KERN_DEBUG "\n"); \ + } \ + } while(0) + + +#define BTC_RSSI_HIGH(_rssi_) \ + ((_rssi_==BTC_RSSI_STATE_HIGH || _rssi_==BTC_RSSI_STATE_STAY_HIGH) ? \ + true : false) + +#define BTC_RSSI_MEDIUM(_rssi_) \ + ((_rssi_==BTC_RSSI_STATE_MEDIUM || _rssi_==BTC_RSSI_STATE_STAY_MEDIUM) \ + ? true : false) + +#define BTC_RSSI_LOW(_rssi_) \ + ((_rssi_==BTC_RSSI_STATE_LOW || _rssi_==BTC_RSSI_STATE_STAY_LOW) ? \ + true : false) + + +enum btc_power_save_type { + BTC_PS_WIFI_NATIVE = 0, + BTC_PS_LPS_ON = 1, + BTC_PS_LPS_OFF = 2, + BTC_PS_LPS_MAX +}; + +struct btc_board_info { + /* The following is some board information */ + u8 bt_chip_type; + u8 pg_ant_num; /* pg ant number */ + u8 btdm_ant_num; /* ant number for btdm */ + u8 btdm_ant_pos; + bool bt_exist; +}; + +enum btc_dbg_opcode{ + BTC_DBG_SET_COEX_NORMAL = 0x0, + BTC_DBG_SET_COEX_WIFI_ONLY = 0x1, + BTC_DBG_SET_COEX_BT_ONLY = 0x2, + BTC_DBG_MAX +}; + +enum btc_rssi_state{ + BTC_RSSI_STATE_HIGH = 0x0, + BTC_RSSI_STATE_MEDIUM = 0x1, + BTC_RSSI_STATE_LOW = 0x2, + BTC_RSSI_STATE_STAY_HIGH = 0x3, + BTC_RSSI_STATE_STAY_MEDIUM = 0x4, + BTC_RSSI_STATE_STAY_LOW = 0x5, + BTC_RSSI_MAX +}; + +enum btc_wifi_role{ + BTC_ROLE_STATION = 0x0, + BTC_ROLE_AP = 0x1, + BTC_ROLE_IBSS = 0x2, + BTC_ROLE_HS_MODE = 0x3, + BTC_ROLE_MAX +}; + +enum btc_wifi_bw_mode{ + BTC_WIFI_BW_LEGACY = 0x0, + BTC_WIFI_BW_HT20 = 0x1, + BTC_WIFI_BW_HT40 = 0x2, + BTC_WIFI_BW_MAX +}; + +enum btc_wifi_traffic_dir{ + BTC_WIFI_TRAFFIC_TX = 0x0, + BTC_WIFI_TRAFFIC_RX = 0x1, + BTC_WIFI_TRAFFIC_MAX +}; + +enum btc_wifi_pnp{ + BTC_WIFI_PNP_WAKE_UP = 0x0, + BTC_WIFI_PNP_SLEEP = 0x1, + BTC_WIFI_PNP_MAX +}; + + +enum btc_get_type{ + /* type bool */ + BTC_GET_BL_HS_OPERATION, + BTC_GET_BL_HS_CONNECTING, + BTC_GET_BL_WIFI_CONNECTED, + BTC_GET_BL_WIFI_BUSY, + BTC_GET_BL_WIFI_SCAN, + BTC_GET_BL_WIFI_LINK, + BTC_GET_BL_WIFI_DHCP, + BTC_GET_BL_WIFI_SOFTAP_IDLE, + BTC_GET_BL_WIFI_SOFTAP_LINKING, + BTC_GET_BL_WIFI_IN_EARLY_SUSPEND, + BTC_GET_BL_WIFI_ROAM, + BTC_GET_BL_WIFI_4_WAY_PROGRESS, + BTC_GET_BL_WIFI_UNDER_5G, + BTC_GET_BL_WIFI_AP_MODE_ENABLE, + BTC_GET_BL_WIFI_ENABLE_ENCRYPTION, + BTC_GET_BL_WIFI_UNDER_B_MODE, + BTC_GET_BL_EXT_SWITCH, + + /* type s4Byte */ + BTC_GET_S4_WIFI_RSSI, + BTC_GET_S4_HS_RSSI, + + /* type u32 */ + BTC_GET_U4_WIFI_BW, + BTC_GET_U4_WIFI_TRAFFIC_DIRECTION, + BTC_GET_U4_WIFI_FW_VER, + BTC_GET_U4_BT_PATCH_VER, + + /* type u1Byte */ + BTC_GET_U1_WIFI_DOT11_CHNL, + BTC_GET_U1_WIFI_CENTRAL_CHNL, + BTC_GET_U1_WIFI_HS_CHNL, + BTC_GET_U1_MAC_PHY_MODE, + BTC_GET_U1_AP_NUM, + + /* for 1Ant */ + BTC_GET_U1_LPS_MODE, + BTC_GET_BL_BT_SCO_BUSY, + + /* for test mode */ + BTC_GET_DRIVER_TEST_CFG, +#if 0 + BTC_GET_U1_LPS, + BTC_GET_U1_RPWM, +#endif + BTC_GET_MAX +}; + + +enum btc_set_type{ + /* type bool */ + BTC_SET_BL_BT_DISABLE, + BTC_SET_BL_BT_TRAFFIC_BUSY, + BTC_SET_BL_BT_LIMITED_DIG, + BTC_SET_BL_FORCE_TO_ROAM, + BTC_SET_BL_TO_REJ_AP_AGG_PKT, + BTC_SET_BL_BT_CTRL_AGG_SIZE, + BTC_SET_BL_INC_SCAN_DEV_NUM, + + /* type u1Byte */ + BTC_SET_U1_RSSI_ADJ_VAL_FOR_AGC_TABLE_ON, + BTC_SET_U1_RSSI_ADJ_VAL_FOR_1ANT_COEX_TYPE, + BTC_SET_UI_SCAN_SIG_COMPENSATION, + BTC_SET_U1_AGG_BUF_SIZE, + + /* type trigger some action */ + BTC_SET_ACT_GET_BT_RSSI, + BTC_SET_ACT_AGGREGATE_CTRL, + + /********* for 1Ant **********/ + /* type bool */ + BTC_SET_BL_BT_SCO_BUSY, + /* type u1Byte */ + BTC_SET_U1_1ANT_LPS, + BTC_SET_U1_1ANT_RPWM, + /* type trigger some action */ + BTC_SET_ACT_LEAVE_LPS, + BTC_SET_ACT_ENTER_LPS, + BTC_SET_ACT_NORMAL_LPS, + BTC_SET_ACT_INC_FORCE_EXEC_PWR_CMD_CNT, + BTC_SET_ACT_DISABLE_LOW_POWER, + BTC_SET_ACT_UPDATE_ra_mask, + BTC_SET_ACT_SEND_MIMO_PS, + /* BT Coex related */ + BTC_SET_ACT_CTRL_BT_INFO, + BTC_SET_ACT_CTRL_BT_COEX, + /***************************/ + BTC_SET_MAX +}; + +enum btc_dbg_disp_type{ + BTC_DBG_DISP_COEX_STATISTICS = 0x0, + BTC_DBG_DISP_BT_LINK_INFO = 0x1, + BTC_DBG_DISP_BT_FW_VER = 0x2, + BTC_DBG_DISP_FW_PWR_MODE_CMD = 0x3, + BTC_DBG_DISP_MAX +}; + +enum btc_notify_type_ips{ + BTC_IPS_LEAVE = 0x0, + BTC_IPS_ENTER = 0x1, + BTC_IPS_MAX +}; + +enum btc_notify_type_lps{ + BTC_LPS_DISABLE = 0x0, + BTC_LPS_ENABLE = 0x1, + BTC_LPS_MAX +}; + +enum btc_notify_type_scan{ + BTC_SCAN_FINISH = 0x0, + BTC_SCAN_START = 0x1, + BTC_SCAN_MAX +}; + +enum btc_notify_type_associate{ + BTC_ASSOCIATE_FINISH = 0x0, + BTC_ASSOCIATE_START = 0x1, + BTC_ASSOCIATE_MAX +}; + +enum btc_notify_type_media_status{ + BTC_MEDIA_DISCONNECT = 0x0, + BTC_MEDIA_CONNECT = 0x1, + BTC_MEDIA_MAX +}; + +enum btc_notify_type_special_packet{ + BTC_PACKET_UNKNOWN = 0x0, + BTC_PACKET_DHCP = 0x1, + BTC_PACKET_ARP = 0x2, + BTC_PACKET_EAPOL = 0x3, + BTC_PACKET_MAX +}; + +enum btc_notify_type_stack_operation{ + BTC_STACK_OP_NONE = 0x0, + BTC_STACK_OP_INQ_PAGE_PAIR_START = 0x1, + BTC_STACK_OP_INQ_PAGE_PAIR_FINISH = 0x2, + BTC_STACK_OP_MAX +}; + + +typedef u8 (*bfp_btc_r1)(void *btc_context, u32 reg_addr); + +typedef u16 (*bfp_btc_r2)(void *btc_context, u32 reg_addr); + +typedef u32 (*bfp_btc_r4)(void *btc_context, u32 reg_addr); + +typedef void (*bfp_btc_w1)(void *btc_context, u32 reg_addr, u8 data); + +typedef void (*bfp_btc_w1_bit_mak)(void *btc_context, u32 reg_addr, + u8 bit_mask, u8 data1b); + +typedef void (*bfp_btc_w2)(void *btc_context, u32 reg_addr, u16 data); + +typedef void (*bfp_btc_w4)(void *btc_context, u32 reg_addr, u32 data); + +typedef void (*bfp_btc_wr_1byte_bit_mask)(void *btc_context, u32 reg_addr, + u8 bit_mask, u8 data); + +typedef void (*bfp_btc_set_bb_reg)(void *btc_context, u32 reg_addr, + u32 bit_mask, u32 data); + +typedef u32 (*bfp_btc_get_bb_reg)(void *btc_context, u32 reg_addr, + u32 bit_mask); + +typedef void (*bfp_btc_set_rf_reg)(void *btc_context, u8 rf_path, u32 reg_addr, + u32 bit_mask, u32 data); + +typedef u32 (*bfp_btc_get_rf_reg)(void *btc_context, u8 rf_path, + u32 reg_addr, u32 bit_mask); + +typedef void (*bfp_btc_fill_h2c)(void *btc_context, u8 element_id, + u32 cmd_len, u8 *cmd_buffer); + +typedef bool (*bfp_btc_get)(void *btcoexist, u8 get_type, void *out_buf); + +typedef bool (*bfp_btc_set)(void *btcoexist, u8 set_type, void *in_buf); + +typedef void (*bfp_btc_disp_dbg_msg)(void *btcoexist, u8 disp_type); + +struct btc_bt_info { + bool bt_disabled; + u8 rssi_adjust_for_agc_table_on; + u8 rssi_adjust_for_1ant_coex_type; + bool bt_busy; + u8 agg_buf_size; + bool limited_dig; + bool reject_agg_pkt; + bool b_bt_ctrl_buf_size; + bool increase_scan_dev_num; + u16 bt_hci_ver; + u16 bt_real_fw_ver; + u8 bt_fw_ver; + + /* the following is for 1Ant solution */ + bool bt_ctrl_lps; + bool bt_pwr_save_mode; + bool bt_lps_on; + bool force_to_roam; + u8 force_exec_pwr_cmd_cnt; + u8 lps_1ant; + u8 rpwm_1ant; + u32 ra_mask; +}; + +struct btc_stack_info { + bool profile_notified; + u16 hci_version; /* stack hci version */ + u8 num_of_link; + bool bt_link_exist; + bool sco_exist; + bool acl_exist; + bool a2dp_exist; + bool hid_exist; + u8 num_of_hid; + bool pan_exist; + bool unknown_acl_exist; + char min_bt_rssi; +}; + +struct btc_statistics { + u32 cnt_bind; + u32 cnt_init_hw_config; + u32 cnt_init_coex_dm; + u32 cnt_ips_notify; + u32 cnt_lps_notify; + u32 cnt_scan_notify; + u32 cnt_connect_notify; + u32 cnt_media_status_notify; + u32 cnt_special_packet_notify; + u32 cnt_bt_info_notify; + u32 cnt_periodical; + u32 cnt_stack_operation_notify; + u32 cnt_dbg_ctrl; +}; + +struct btc_bt_link_info { + bool bt_link_exist; + bool sco_exist; + bool sco_only; + bool a2dp_exist; + bool a2dp_only; + bool hid_exist; + bool hid_only; + bool pan_exist; + bool pan_only; +}; + +enum btc_antenna_pos { + BTC_ANTENNA_AT_MAIN_PORT = 0x1, + BTC_ANTENNA_AT_AUX_PORT = 0x2, +}; + +struct btc_coexist { + /* make sure only one adapter can bind the data context */ + bool binded; + /* default adapter */ + void *adapter; + struct btc_board_info board_info; + /* some bt info referenced by non-bt module */ + struct btc_bt_info bt_info; + struct btc_stack_info stack_info; + enum btc_chip_interface chip_interface; + struct btc_bt_link_info bt_link_info; + + bool initilized; + bool stop_coex_dm; + bool manual_control; + u8 *cli_buf; + struct btc_statistics statistics; + u8 pwr_mode_val[10]; + + /* function pointers + * io related */ + bfp_btc_r1 btc_read_1byte; + bfp_btc_w1 btc_write_1byte; + bfp_btc_w1_bit_mak btc_write_1byte_bitmask; + bfp_btc_r2 btc_read_2byte; + bfp_btc_w2 btc_write_2byte; + bfp_btc_r4 btc_read_4byte; + bfp_btc_w4 btc_write_4byte; + + bfp_btc_set_bb_reg btc_set_bb_reg; + bfp_btc_get_bb_reg btc_get_bb_reg; + + + bfp_btc_set_rf_reg btc_set_rf_reg; + bfp_btc_get_rf_reg btc_get_rf_reg; + + + bfp_btc_fill_h2c btc_fill_h2c; + + bfp_btc_disp_dbg_msg btc_disp_dbg_msg; + + bfp_btc_get btc_get; + bfp_btc_set btc_set; +}; + +bool halbtc_is_wifi_uplink(struct rtl_priv *adapter); + + +extern struct btc_coexist gl_bt_coexist; + +bool exhalbtc_initlize_variables(struct rtl_priv* adapter); +void exhalbtc_init_hw_config(struct btc_coexist *btcoexist); +void exhalbtc_init_coex_dm(struct btc_coexist *btcoexist); +void exhalbtc_ips_notify(struct btc_coexist *btcoexist, u8 type); +void exhalbtc_lps_notify(struct btc_coexist *btcoexist, u8 type); +void exhalbtc_scan_notify(struct btc_coexist *btcoexist, u8 type); +void exhalbtc_connect_notify(struct btc_coexist *btcoexist, u8 action); +void exhalbtc_mediastatus_notify(struct btc_coexist *btcoexist, + enum rt_media_status media_status); +void exhalbtc_special_packet_notify(struct btc_coexist *btcoexist, u8 pkt_type); +void exhalbtc_bt_info_notify(struct btc_coexist *btcoexist, u8 *tmp_buf, + u8 length); +void exhalbtc_stack_operation_notify(struct btc_coexist *btcoexist, u8 type); +void exhalbtc_halt_notify(struct btc_coexist *btcoexist); +void exhalbtc_pnp_notify(struct btc_coexist *btcoexist, u8 pnp_state); +void exhalbtc_periodical(struct btc_coexist *btcoexist); +void exhalbtc_dbg_control(struct btc_coexist *btcoexist, u8 code, u8 len, + u8 *data); +void exhalbtc_stack_update_profile_info(void); +void exhalbtc_set_hci_version(u16 hci_version); +void exhalbtc_set_bt_patch_version(u16 bt_hci_version, u16 bt_patch_version); +void exhalbtc_update_min_bt_rssi(char bt_rssi); +void exhalbtc_set_bt_exist(bool bt_exist); +void exhalbtc_set_chip_type(u8 chip_type); +void exhalbtc_set_ant_num(u8 type, u8 ant_num); +void exhalbtc_display_bt_coex_info(struct btc_coexist *btcoexist); +void exhalbtc_signal_compensation(struct btc_coexist *btcoexist, + u8 *rssi_wifi, u8 *rssi_bt); +void exhalbtc_lps_leave(struct btc_coexist *btcoexist); +void exhalbtc_low_wifi_traffic_notify(struct btc_coexist *btcoexist); +#endif --- linux-3.13.0.orig/drivers/staging/rtl8821ae/btcoexist/rtl_btc.c +++ linux-3.13.0/drivers/staging/rtl8821ae/btcoexist/rtl_btc.c @@ -0,0 +1,236 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ +#include +#include + +#include "rtl_btc.h" +#include "halbt_precomp.h" + +struct rtl_btc_ops rtl_btc_operation ={ + .btc_init_variables = rtl_btc_init_variables, + .btc_init_hal_vars = rtl_btc_init_hal_vars, + .btc_init_hw_config = rtl_btc_init_hw_config, + .btc_ips_notify = rtl_btc_ips_notify, + .btc_scan_notify = rtl_btc_scan_notify, + .btc_connect_notify = rtl_btc_connect_notify, + .btc_mediastatus_notify = rtl_btc_mediastatus_notify, + .btc_periodical = rtl_btc_periodical, + .btc_halt_notify = rtl_btc_halt_notify, + .btc_btinfo_notify = rtl_btc_btinfo_notify, + .btc_is_limited_dig = rtl_btc_is_limited_dig, + .btc_is_disable_edca_turbo = rtl_btc_is_disable_edca_turbo, + .btc_is_bt_disabled = rtl_btc_is_bt_disabled, +}; + + +void rtl_btc_init_variables(struct rtl_priv *rtlpriv) +{ + + exhalbtc_initlize_variables(rtlpriv); +} + +void rtl_btc_init_hal_vars(struct rtl_priv *rtlpriv) +{ + u8 ant_num; + u8 bt_exist; + u8 bt_type; + ant_num = rtl_get_hwpg_ant_num(rtlpriv); + RT_TRACE(COMP_INIT, DBG_DMESG, ("%s, antNum is %d\n", __func__, ant_num)); + + bt_exist = rtl_get_hwpg_bt_exist(rtlpriv); + RT_TRACE(COMP_INIT, DBG_DMESG, ("%s, bt_exist is %d\n", __func__, bt_exist)); + exhalbtc_set_bt_exist(bt_exist); + + bt_type = rtl_get_hwpg_bt_type(rtlpriv); + RT_TRACE(COMP_INIT, DBG_DMESG, ("%s, bt_type is %d\n", __func__, bt_type)); + exhalbtc_set_chip_type(bt_type); + + exhalbtc_set_ant_num(BT_COEX_ANT_TYPE_PG, ant_num); + +} + + +void rtl_btc_init_hw_config(struct rtl_priv *rtlpriv) +{ + exhalbtc_init_hw_config(&gl_bt_coexist); + exhalbtc_init_coex_dm(&gl_bt_coexist); +} + + +void rtl_btc_ips_notify(struct rtl_priv *rtlpriv, u8 type) +{ + exhalbtc_ips_notify(&gl_bt_coexist, type); +} + + +void rtl_btc_scan_notify(struct rtl_priv *rtlpriv, u8 scantype) +{ + exhalbtc_scan_notify(&gl_bt_coexist, scantype); +} + + +void rtl_btc_connect_notify(struct rtl_priv *rtlpriv, u8 action) +{ + exhalbtc_connect_notify(&gl_bt_coexist, action); +} + + +void rtl_btc_mediastatus_notify(struct rtl_priv *rtlpriv, enum rt_media_status mstatus) +{ + exhalbtc_mediastatus_notify(&gl_bt_coexist, mstatus); +} + +void rtl_btc_periodical(struct rtl_priv *rtlpriv) +{ +// rtl_bt_dm_monitor(); + exhalbtc_periodical(&gl_bt_coexist); +} + +void rtl_btc_halt_notify(void) +{ + exhalbtc_halt_notify(&gl_bt_coexist); +} + +void rtl_btc_btinfo_notify(struct rtl_priv *rtlpriv, u8 * tmp_buf, u8 length) +{ + exhalbtc_bt_info_notify(&gl_bt_coexist, tmp_buf, length); +} + +bool rtl_btc_is_limited_dig(struct rtl_priv *rtlpriv) +{ + return gl_bt_coexist.bt_info.limited_dig; +} + +bool rtl_btc_is_disable_edca_turbo(struct rtl_priv *rtlpriv) +{ + bool bt_change_edca = false; + u32 cur_edca_val; + u32 edca_bt_hs_uplink = 0x5ea42b, edca_bt_hs_downlink = 0x5ea42b; + u32 edca_hs; + u32 edca_addr = 0x504; + + cur_edca_val = rtl_read_dword(rtlpriv, edca_addr); + if (halbtc_is_wifi_uplink(rtlpriv)){ + if (cur_edca_val != edca_bt_hs_uplink){ + edca_hs = edca_bt_hs_uplink; + bt_change_edca = true; + } + }else{ + if (cur_edca_val != edca_bt_hs_downlink){ + edca_hs = edca_bt_hs_downlink; + bt_change_edca = true; + } + } + + if(bt_change_edca) + rtl_write_dword(rtlpriv, edca_addr, edca_hs); + + return true; +} + +bool rtl_btc_is_bt_disabled(struct rtl_priv *rtlpriv) +{ + if (gl_bt_coexist.bt_info.bt_disabled) + return true; + else + return false; +} + +struct rtl_btc_ops *rtl_btc_get_ops_pointer(void) +{ + return &rtl_btc_operation; +} +//EXPORT_SYMBOL(rtl_btc_get_ops_pointer); + +u8 rtl_get_hwpg_ant_num(struct rtl_priv *rtlpriv) +{ + u8 num; + + if (rtlpriv->btcoexist.btc_info.ant_num == ANT_X2) + num = 2; + else + num = 1; + + return num; +} + +#if 0 +enum rt_media_status mgnt_link_status_query(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + enum rt_media_status m_status = RT_MEDIA_DISCONNECT; + + u8 bibss = (mac->opmode == NL80211_IFTYPE_ADHOC) ? 1 : 0; + + if(bibss || rtlpriv->mac80211.link_state >= MAC80211_LINKED) { + m_status = RT_MEDIA_CONNECT; + } + + return m_status; +} +#endif + +u8 rtl_get_hwpg_bt_exist(struct rtl_priv *rtlpriv) +{ + return rtlpriv->btcoexist.btc_info.btcoexist; +} + +u8 rtl_get_hwpg_bt_type(struct rtl_priv *rtlpriv) +{ + return rtlpriv->btcoexist.btc_info.bt_type; +} + + +#if 0 + +MODULE_AUTHOR("Page He "); +MODULE_AUTHOR("Realtek WlanFAE "); +MODULE_AUTHOR("Larry Finger "); +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("Realtek 802.11n PCI wireless core"); + +static int __init rtl_btcoexist_module_init(void) +{ + + //printk("%s, rtlpriv->btc_ops.btc_init_variables addr is %p\n", __func__, rtlpriv->btc_ops.btc_init_variables); + + return 0; +} + +static void __exit rtl_btcoexist_module_exit(void) +{ + return; +} + +module_init(rtl_btcoexist_module_init); +module_exit(rtl_btcoexist_module_exit); + +#endif + --- linux-3.13.0.orig/drivers/staging/rtl8821ae/btcoexist/rtl_btc.h +++ linux-3.13.0/drivers/staging/rtl8821ae/btcoexist/rtl_btc.h @@ -0,0 +1,66 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * Larry Finger + * + *****************************************************************************/ + +#ifndef __RTL_BTC_H__ +#define __RTL_BTC_H__ + +#include "halbt_precomp.h" + + + +void rtl_btc_init_variables(struct rtl_priv *rtlpriv); +void rtl_btc_init_hal_vars(struct rtl_priv *rtlpriv); +void rtl_btc_init_hw_config(struct rtl_priv *rtlpriv); +void rtl_btc_ips_notify(struct rtl_priv *rtlpriv, u8 type); +void rtl_btc_scan_notify(struct rtl_priv *rtlpriv, u8 scantype); +void rtl_btc_connect_notify(struct rtl_priv *rtlpriv, u8 action); +void rtl_btc_mediastatus_notify(struct rtl_priv *rtlpriv, enum rt_media_status mstatus); +void rtl_btc_periodical(struct rtl_priv *rtlpriv); +void rtl_btc_halt_notify(void); +void rtl_btc_btinfo_notify(struct rtl_priv *rtlpriv, u8 * tmpBuf, u8 length); +bool rtl_btc_is_limited_dig(struct rtl_priv *rtlpriv); +bool rtl_btc_is_disable_edca_turbo(struct rtl_priv *rtlpriv); +bool rtl_btc_is_bt_disabled(struct rtl_priv *rtlpriv); + + +//extern struct rtl_btc_ops rtl_btc_operation; +extern struct rtl_btc_ops *rtl_btc_get_ops_pointer(void); + +u8 rtl_get_hwpg_ant_num(struct rtl_priv *rtlpriv); +u8 rtl_get_hwpg_bt_exist(struct rtl_priv *rtlpriv); +u8 rtl_get_hwpg_bt_type(struct rtl_priv *rtlpriv); +//enum rt_media_status mgnt_link_status_query(struct ieee80211_hw *hw); + + + + + + + + +#endif --- linux-3.13.0.orig/drivers/staging/rtl8821ae/cam.c +++ linux-3.13.0/drivers/staging/rtl8821ae/cam.c @@ -0,0 +1,354 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ +#include "wifi.h" +#include "cam.h" +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0)) +#include +#endif + +void rtl_cam_reset_sec_info(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + rtlpriv->sec.use_defaultkey = false; + rtlpriv->sec.pairwise_enc_algorithm = NO_ENCRYPTION; + rtlpriv->sec.group_enc_algorithm = NO_ENCRYPTION; + memset(rtlpriv->sec.key_buf, 0, KEY_BUF_SIZE * MAX_KEY_LEN); + memset(rtlpriv->sec.key_len, 0, KEY_BUF_SIZE); + rtlpriv->sec.pairwise_key = NULL; +} + +static void rtl_cam_program_entry(struct ieee80211_hw *hw, u32 entry_no, + u8 *mac_addr, u8 *key_cont_128, u16 us_config) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + u32 target_command; + u32 target_content = 0; + u8 entry_i; + + RT_PRINT_DATA(rtlpriv, COMP_SEC, DBG_DMESG, "Key content :", + key_cont_128, 16); + + for (entry_i = 0; entry_i < CAM_CONTENT_COUNT; entry_i++) { + target_command = entry_i + CAM_CONTENT_COUNT * entry_no; + target_command = target_command | BIT(31) | BIT(16); + + if (entry_i == 0) { + target_content = (u32) (*(mac_addr + 0)) << 16 | + (u32) (*(mac_addr + 1)) << 24 | (u32) us_config; + + rtl_write_dword(rtlpriv, rtlpriv->cfg->maps[WCAMI], + target_content); + rtl_write_dword(rtlpriv, rtlpriv->cfg->maps[RWCAM], + target_command); + + RT_TRACE(COMP_SEC, DBG_LOUD, + ("WRITE %x: %x \n", + rtlpriv->cfg->maps[WCAMI], target_content)); + RT_TRACE(COMP_SEC, DBG_LOUD, + ("The Key ID is %d\n", entry_no)); + RT_TRACE(COMP_SEC, DBG_LOUD, + ("WRITE %x: %x \n", + rtlpriv->cfg->maps[RWCAM], target_command)); + + } else if (entry_i == 1) { + + target_content = (u32) (*(mac_addr + 5)) << 24 | + (u32) (*(mac_addr + 4)) << 16 | + (u32) (*(mac_addr + 3)) << 8 | + (u32) (*(mac_addr + 2)); + + rtl_write_dword(rtlpriv, rtlpriv->cfg->maps[WCAMI], + target_content); + rtl_write_dword(rtlpriv, rtlpriv->cfg->maps[RWCAM], + target_command); + + RT_TRACE(COMP_SEC, DBG_LOUD, + ("WRITE A4: %x \n", target_content)); + RT_TRACE(COMP_SEC, DBG_LOUD, + ("WRITE A0: %x \n", target_command)); + + } else { + + target_content = + (u32) (*(key_cont_128 + (entry_i * 4 - 8) + 3)) << + 24 | (u32) (*(key_cont_128 + (entry_i * 4 - 8) + 2)) + << 16 | + (u32) (*(key_cont_128 + (entry_i * 4 - 8) + 1)) << 8 + | (u32) (*(key_cont_128 + (entry_i * 4 - 8) + 0)); + + rtl_write_dword(rtlpriv, rtlpriv->cfg->maps[WCAMI], + target_content); + rtl_write_dword(rtlpriv, rtlpriv->cfg->maps[RWCAM], + target_command); + udelay(100); + + RT_TRACE(COMP_SEC, DBG_LOUD, + ("WRITE A4: %x \n", target_content)); + RT_TRACE(COMP_SEC, DBG_LOUD, + ("WRITE A0: %x \n", target_command)); + } + } + + RT_TRACE(COMP_SEC, DBG_LOUD, + ("after set key, usconfig:%x\n", us_config)); +} + +u8 rtl_cam_add_one_entry(struct ieee80211_hw *hw, u8 *mac_addr, + u32 ul_key_id, u32 ul_entry_idx, u32 ul_enc_alg, + u32 ul_default_key, u8 *key_content) +{ + u32 us_config; + struct rtl_priv *rtlpriv = rtl_priv(hw); + + RT_TRACE(COMP_SEC, DBG_DMESG, + ("EntryNo:%x, ulKeyId=%x, ulEncAlg=%x, " + "ulUseDK=%x MacAddr %pM\n", + ul_entry_idx, ul_key_id, ul_enc_alg, + ul_default_key, mac_addr)); + + if (ul_key_id == TOTAL_CAM_ENTRY) { + RT_TRACE(COMP_ERR, DBG_WARNING, + ("ulKeyId exceed!\n")); + return 0; + } + + if (ul_default_key == 1) { + us_config = CFG_VALID | ((u16) (ul_enc_alg) << 2); + } else { + us_config = CFG_VALID | ((ul_enc_alg) << 2) | ul_key_id; + } + + rtl_cam_program_entry(hw, ul_entry_idx, mac_addr, + (u8 *) key_content, us_config); + + RT_TRACE(COMP_SEC, DBG_DMESG, ("end \n")); + + return 1; + +} +//EXPORT_SYMBOL(rtl_cam_add_one_entry); + +int rtl_cam_delete_one_entry(struct ieee80211_hw *hw, + u8 *mac_addr, u32 ul_key_id) +{ + u32 ul_command; + struct rtl_priv *rtlpriv = rtl_priv(hw); + + RT_TRACE(COMP_SEC, DBG_DMESG, ("key_idx:%d\n", ul_key_id)); + + ul_command = ul_key_id * CAM_CONTENT_COUNT; + ul_command = ul_command | BIT(31) | BIT(16); + + rtl_write_dword(rtlpriv, rtlpriv->cfg->maps[WCAMI], 0); + rtl_write_dword(rtlpriv, rtlpriv->cfg->maps[RWCAM], ul_command); + + RT_TRACE(COMP_SEC, DBG_DMESG, + ("rtl_cam_delete_one_entry(): WRITE A4: %x \n", 0)); + RT_TRACE(COMP_SEC, DBG_DMESG, + ("rtl_cam_delete_one_entry(): WRITE A0: %x \n", ul_command)); + + return 0; + +} +//EXPORT_SYMBOL(rtl_cam_delete_one_entry); + +void rtl_cam_reset_all_entry(struct ieee80211_hw *hw) +{ + u32 ul_command; + struct rtl_priv *rtlpriv = rtl_priv(hw); + + ul_command = BIT(31) | BIT(30); + rtl_write_dword(rtlpriv, rtlpriv->cfg->maps[RWCAM], ul_command); +} +//EXPORT_SYMBOL(rtl_cam_reset_all_entry); + +void rtl_cam_mark_invalid(struct ieee80211_hw *hw, u8 uc_index) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + u32 ul_command; + u32 ul_content; + u32 ul_enc_algo = rtlpriv->cfg->maps[SEC_CAM_AES]; + + switch (rtlpriv->sec.pairwise_enc_algorithm) { + case WEP40_ENCRYPTION: + ul_enc_algo = rtlpriv->cfg->maps[SEC_CAM_WEP40]; + break; + case WEP104_ENCRYPTION: + ul_enc_algo = rtlpriv->cfg->maps[SEC_CAM_WEP104]; + break; + case TKIP_ENCRYPTION: + ul_enc_algo = rtlpriv->cfg->maps[SEC_CAM_TKIP]; + break; + case AESCCMP_ENCRYPTION: + ul_enc_algo = rtlpriv->cfg->maps[SEC_CAM_AES]; + break; + default: + ul_enc_algo = rtlpriv->cfg->maps[SEC_CAM_AES]; + } + + ul_content = (uc_index & 3) | ((u16) (ul_enc_algo) << 2); + + ul_content |= BIT(15); + ul_command = CAM_CONTENT_COUNT * uc_index; + ul_command = ul_command | BIT(31) | BIT(16); + + rtl_write_dword(rtlpriv, rtlpriv->cfg->maps[WCAMI], ul_content); + rtl_write_dword(rtlpriv, rtlpriv->cfg->maps[RWCAM], ul_command); + + RT_TRACE(COMP_SEC, DBG_DMESG, + ("rtl_cam_mark_invalid(): WRITE A4: %x \n", ul_content)); + RT_TRACE(COMP_SEC, DBG_DMESG, + ("rtl_cam_mark_invalid(): WRITE A0: %x \n", ul_command)); +} +//EXPORT_SYMBOL(rtl_cam_mark_invalid); + +void rtl_cam_empty_entry(struct ieee80211_hw *hw, u8 uc_index) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + u32 ul_command; + u32 ul_content; + u32 ul_encalgo = rtlpriv->cfg->maps[SEC_CAM_AES]; + u8 entry_i; + + switch (rtlpriv->sec.pairwise_enc_algorithm) { + case WEP40_ENCRYPTION: + ul_encalgo = rtlpriv->cfg->maps[SEC_CAM_WEP40]; + break; + case WEP104_ENCRYPTION: + ul_encalgo = rtlpriv->cfg->maps[SEC_CAM_WEP104]; + break; + case TKIP_ENCRYPTION: + ul_encalgo = rtlpriv->cfg->maps[SEC_CAM_TKIP]; + break; + case AESCCMP_ENCRYPTION: + ul_encalgo = rtlpriv->cfg->maps[SEC_CAM_AES]; + break; + default: + ul_encalgo = rtlpriv->cfg->maps[SEC_CAM_AES]; + } + + for (entry_i = 0; entry_i < CAM_CONTENT_COUNT; entry_i++) { + + if (entry_i == 0) { + ul_content = + (uc_index & 0x03) | ((u16) (ul_encalgo) << 2); + ul_content |= BIT(15); + + } else { + ul_content = 0; + } + + ul_command = CAM_CONTENT_COUNT * uc_index + entry_i; + ul_command = ul_command | BIT(31) | BIT(16); + + rtl_write_dword(rtlpriv, rtlpriv->cfg->maps[WCAMI], ul_content); + rtl_write_dword(rtlpriv, rtlpriv->cfg->maps[RWCAM], ul_command); + + RT_TRACE(COMP_SEC, DBG_LOUD, + ("rtl_cam_empty_entry(): WRITE A4: %x \n", + ul_content)); + RT_TRACE(COMP_SEC, DBG_LOUD, + ("rtl_cam_empty_entry(): WRITE A0: %x \n", + ul_command)); + } + +} +//EXPORT_SYMBOL(rtl_cam_empty_entry); + +u8 rtl_cam_get_free_entry(struct ieee80211_hw *hw, u8 *sta_addr) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 bitmap = (rtlpriv->sec.hwsec_cam_bitmap) >> 4; + u8 entry_idx = 0; + u8 i, *addr; + + if (NULL == sta_addr) { + RT_TRACE(COMP_SEC, DBG_EMERG, + ("sta_addr is NULL.\n")); + return TOTAL_CAM_ENTRY; + } + /* Does STA already exist? */ + for (i = 4; i < TOTAL_CAM_ENTRY; i++) { + addr = rtlpriv->sec.hwsec_cam_sta_addr[i]; + if(memcmp(addr, sta_addr, ETH_ALEN) == 0) + return i; + } + /* Get a free CAM entry. */ + for (entry_idx = 4; entry_idx < TOTAL_CAM_ENTRY; entry_idx++) { + if ((bitmap & BIT(0)) == 0) { + RT_TRACE(COMP_SEC, DBG_EMERG, + ("-----hwsec_cam_bitmap: 0x%x entry_idx=%d\n", + rtlpriv->sec.hwsec_cam_bitmap, entry_idx)); + rtlpriv->sec.hwsec_cam_bitmap |= BIT(0) << entry_idx; + memcpy(rtlpriv->sec.hwsec_cam_sta_addr[entry_idx], + sta_addr, ETH_ALEN); + return entry_idx; + } + bitmap = bitmap >>1; + } + return TOTAL_CAM_ENTRY; +} +//EXPORT_SYMBOL(rtl_cam_get_free_entry); + +void rtl_cam_del_entry(struct ieee80211_hw *hw, u8 *sta_addr) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 bitmap; + u8 i, *addr; + + if (NULL == sta_addr) { + RT_TRACE(COMP_SEC, DBG_EMERG, + ("sta_addr is NULL.\n")); + } + + if ((sta_addr[0]|sta_addr[1]|sta_addr[2]|sta_addr[3]|\ + sta_addr[4]|sta_addr[5]) == 0) { + RT_TRACE(COMP_SEC, DBG_EMERG, + ("sta_addr is 00:00:00:00:00:00.\n")); + return; + } + /* Does STA already exist? */ + for (i = 4; i < TOTAL_CAM_ENTRY; i++) { + addr = rtlpriv->sec.hwsec_cam_sta_addr[i]; + bitmap = (rtlpriv->sec.hwsec_cam_bitmap) >> i; + if (((bitmap & BIT(0)) == BIT(0)) && + (memcmp(addr, sta_addr, ETH_ALEN) == 0)) { + /* Remove from HW Security CAM */ + memset(rtlpriv->sec.hwsec_cam_sta_addr[i], 0, ETH_ALEN); + rtlpriv->sec.hwsec_cam_bitmap &= ~(BIT(0) << i); + printk("&&&&&&&&&del entry %d\n",i); + } + } + return; +} +//EXPORT_SYMBOL(rtl_cam_del_entry); --- linux-3.13.0.orig/drivers/staging/rtl8821ae/cam.h +++ linux-3.13.0/drivers/staging/rtl8821ae/cam.h @@ -0,0 +1,56 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#ifndef __RTL_CAM_H_ +#define __RTL_CAM_H_ + +#define CAM_CONTENT_COUNT 8 + +#define CFG_DEFAULT_KEY BIT(5) +#define CFG_VALID BIT(15) + +#define PAIRWISE_KEYIDX 0 +#define CAM_PAIRWISE_KEY_POSITION 4 + +#define CAM_CONFIG_USEDK 1 +#define CAM_CONFIG_NO_USEDK 0 + +extern void rtl_cam_reset_all_entry(struct ieee80211_hw *hw); +extern u8 rtl_cam_add_one_entry(struct ieee80211_hw *hw, u8 *mac_addr, + u32 ul_key_id, u32 ul_entry_idx, u32 ul_enc_alg, + u32 ul_default_key, u8 *key_content); +int rtl_cam_delete_one_entry(struct ieee80211_hw *hw, u8 *mac_addr, + u32 ul_key_id); +void rtl_cam_mark_invalid(struct ieee80211_hw *hw, u8 uc_index); +void rtl_cam_empty_entry(struct ieee80211_hw *hw, u8 uc_index); +void rtl_cam_reset_sec_info(struct ieee80211_hw *hw); +u8 rtl_cam_get_free_entry(struct ieee80211_hw *hw, u8 *sta_addr); +void rtl_cam_del_entry(struct ieee80211_hw *hw, u8 *sta_addr); + +#endif --- linux-3.13.0.orig/drivers/staging/rtl8821ae/compat.h +++ linux-3.13.0/drivers/staging/rtl8821ae/compat.h @@ -0,0 +1,125 @@ +#ifndef __RTL_COMPAT_H__ +#define __RTL_COMPAT_H__ + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29)) +/* + * Use this if you want to use the same suspend and resume callbacks for suspend + * to RAM and hibernation. + */ +#define SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn) \ +struct dev_pm_ops name = { \ + .suspend = suspend_fn, \ + .resume = resume_fn, \ + .freeze = suspend_fn, \ + .thaw = resume_fn, \ + .poweroff = suspend_fn, \ + .restore = resume_fn, \ +} + +#define compat_pci_suspend(fn) \ + int fn##_compat(struct pci_dev *pdev, pm_message_t state) \ + { \ + int r; \ + \ + r = fn(&pdev->dev); \ + if (r) \ + return r; \ + \ + pci_save_state(pdev); \ + pci_disable_device(pdev); \ + pci_set_power_state(pdev, PCI_D3hot); \ + \ + return 0; \ + } + +#define compat_pci_resume(fn) \ + int fn##_compat(struct pci_dev *pdev) \ + { \ + int r; \ + \ + pci_set_power_state(pdev, PCI_D0); \ + r = pci_enable_device(pdev); \ + if (r) \ + return r; \ + pci_restore_state(pdev); \ + \ + return fn(&pdev->dev); \ + } +#endif + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39)) +#define RX_FLAG_MACTIME_MPDU RX_FLAG_TSFT +#else +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)) +#define RX_FLAG_MACTIME_MPDU RX_FLAG_MACTIME_START +#else +#endif +//#define NETDEV_TX_OK +#endif + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,7,0)) +#define IEEE80211_KEY_FLAG_SW_MGMT IEEE80211_KEY_FLAG_SW_MGMT_TX +#endif + +struct ieee80211_mgmt_compat { + __le16 frame_control; + __le16 duration; + u8 da[6]; + u8 sa[6]; + u8 bssid[6]; + __le16 seq_ctrl; + union { + struct { + u8 category; + union { + struct { + u8 action_code; + u8 dialog_token; + u8 status_code; + u8 variable[0]; + } __attribute__ ((packed)) wme_action; + struct{ + u8 action_code; + u8 dialog_token; + __le16 capab; + __le16 timeout; + __le16 start_seq_num; + } __attribute__((packed)) addba_req; + struct{ + u8 action_code; + u8 dialog_token; + __le16 status; + __le16 capab; + __le16 timeout; + } __attribute__((packed)) addba_resp; + struct{ + u8 action_code; + __le16 params; + __le16 reason_code; + } __attribute__((packed)) delba; + struct{ + u8 action_code; + /* capab_info for open and confirm, + * reason for close + */ + __le16 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; + struct { + u8 action; + u8 smps_control; + } __attribute__ ((packed)) ht_smps; + } u; + } __attribute__ ((packed)) action; + } u; +} __attribute__ ((packed)); +#endif --- linux-3.13.0.orig/drivers/staging/rtl8821ae/core.c +++ linux-3.13.0/drivers/staging/rtl8821ae/core.c @@ -0,0 +1,1464 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#include "wifi.h" +#include "core.h" +#include "cam.h" +#include "base.h" +#include "ps.h" + +#include "btcoexist/rtl_btc.h" + +/*mutex for start & stop is must here. */ +static int rtl_op_start(struct ieee80211_hw *hw) +{ + int err = 0; + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + + if (!is_hal_stop(rtlhal)) + return 0; + if (!test_bit(RTL_STATUS_INTERFACE_START, &rtlpriv->status)) + return 0; + mutex_lock(&rtlpriv->locks.conf_mutex); + err = rtlpriv->intf_ops->adapter_start(hw); + if (err) + goto out; + rtl_watch_dog_timer_callback((unsigned long)hw); + +out: + mutex_unlock(&rtlpriv->locks.conf_mutex); + return err; +} + +static void rtl_op_stop(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + + if (is_hal_stop(rtlhal)) + return; + + /* here is must, because adhoc do stop and start, + * but stop with RFOFF may cause something wrong, + * like adhoc TP */ + if (unlikely(ppsc->rfpwr_state == ERFOFF)) + rtl_ips_nic_on(hw); + + mutex_lock(&rtlpriv->locks.conf_mutex); + + mac->link_state = MAC80211_NOLINK; + memset(mac->bssid, 0, 6); + mac->vendor = PEER_UNKNOWN; + + /*reset sec info */ + rtl_cam_reset_sec_info(hw); + + rtl_deinit_deferred_work(hw); + rtlpriv->intf_ops->adapter_stop(hw); + + mutex_unlock(&rtlpriv->locks.conf_mutex); +} + +/**/ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39)) +static int rtl_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + struct rtl_tcb_desc tcb_desc; + memset(&tcb_desc, 0, sizeof(struct rtl_tcb_desc)); + + if (unlikely(is_hal_stop(rtlhal) || ppsc->rfpwr_state != ERFON)) + goto err_free; + + if (!test_bit(RTL_STATUS_INTERFACE_START, &rtlpriv->status)) + goto err_free; + + if (!rtlpriv->intf_ops->waitq_insert(hw, skb)) + rtlpriv->intf_ops->adapter_tx(hw, skb, &tcb_desc); + + return NETDEV_TX_OK; + +err_free: + dev_kfree_skb_any(skb); + return NETDEV_TX_OK; +} +#else +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0)) +static void rtl_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb) +#else +/**/ +static void rtl_op_tx(struct ieee80211_hw *hw, + struct ieee80211_tx_control *control, + struct sk_buff *skb) +/**/ +#endif +/**/ +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + struct rtl_tcb_desc tcb_desc; + memset(&tcb_desc, 0, sizeof(struct rtl_tcb_desc)); + + if (unlikely(is_hal_stop(rtlhal) || ppsc->rfpwr_state != ERFON)) + goto err_free; + + if (!test_bit(RTL_STATUS_INTERFACE_START, &rtlpriv->status)) + goto err_free; + +/**/ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0)) + if (!rtlpriv->intf_ops->waitq_insert(hw, skb)) + rtlpriv->intf_ops->adapter_tx(hw, skb, &tcb_desc); +#else +/**/ + if (!rtlpriv->intf_ops->waitq_insert(hw, control->sta, skb)) + rtlpriv->intf_ops->adapter_tx(hw, control->sta, skb, &tcb_desc); +/**/ +#endif +/**/ + return; + +err_free: + dev_kfree_skb_any(skb); + return; +} +/**/ +#endif +/**/ + +static int rtl_op_add_interface(struct ieee80211_hw *hw, + struct ieee80211_vif *vif) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + int err = 0; + + if (mac->vif) { + RT_TRACE(COMP_ERR, DBG_WARNING, + ("vif has been set!! mac->vif = 0x%p\n", mac->vif)); + return -EOPNOTSUPP; + } + +/*This flag is not defined before kernel 3.4*/ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0)) + vif->driver_flags |= IEEE80211_VIF_BEACON_FILTER; +#endif + + rtl_ips_nic_on(hw); + + mutex_lock(&rtlpriv->locks.conf_mutex); +/**/ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) + switch (ieee80211_vif_type_p2p(vif)) { + case NL80211_IFTYPE_P2P_CLIENT: + mac->p2p = P2P_ROLE_CLIENT; + /*fall through*/ +#else +/**/ + switch (vif->type) { +/**/ +#endif +/**/ + case NL80211_IFTYPE_STATION: + if (mac->beacon_enabled == 1) { + RT_TRACE(COMP_MAC80211, DBG_LOUD, + ("NL80211_IFTYPE_STATION \n")); + mac->beacon_enabled = 0; + rtlpriv->cfg->ops->update_interrupt_mask(hw, 0, + rtlpriv->cfg->maps[RTL_IBSS_INT_MASKS]); + } + break; + case NL80211_IFTYPE_ADHOC: + RT_TRACE(COMP_MAC80211, DBG_LOUD, + ("NL80211_IFTYPE_ADHOC \n")); + + mac->link_state = MAC80211_LINKED; + rtlpriv->cfg->ops->set_bcn_reg(hw); + if (rtlpriv->rtlhal.current_bandtype == BAND_ON_2_4G) + mac->basic_rates = 0xfff; + else + mac->basic_rates = 0xff0; + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_BASIC_RATE, + (u8 *) (&mac->basic_rates)); + + break; +/**/ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) + case NL80211_IFTYPE_P2P_GO: + mac->p2p = P2P_ROLE_GO; + /*fall through*/ +#endif +/**/ + case NL80211_IFTYPE_AP: + RT_TRACE(COMP_MAC80211, DBG_LOUD, + ("NL80211_IFTYPE_AP \n")); + + mac->link_state = MAC80211_LINKED; + rtlpriv->cfg->ops->set_bcn_reg(hw); + if (rtlpriv->rtlhal.current_bandtype == BAND_ON_2_4G) + mac->basic_rates = 0xfff; + else + mac->basic_rates = 0xff0; + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_BASIC_RATE, + (u8 *) (&mac->basic_rates)); + break; + case NL80211_IFTYPE_MESH_POINT: + RT_TRACE(COMP_MAC80211, DBG_LOUD, + ("NL80211_IFTYPE_MESH_POINT \n")); + + mac->link_state = MAC80211_LINKED; + rtlpriv->cfg->ops->set_bcn_reg(hw); + if (rtlpriv->rtlhal.current_bandtype == BAND_ON_2_4G) + mac->basic_rates = 0xfff; + else + mac->basic_rates = 0xff0; + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_BASIC_RATE, + (u8 *) (&mac->basic_rates)); + break; + default: + RT_TRACE(COMP_ERR, DBG_EMERG, + ("operation mode %d is not support!\n", vif->type)); + err = -EOPNOTSUPP; + goto out; + } + +#ifdef VIF_TODO + if (!rtl_set_vif_info(hw, vif)) + goto out; +#endif + + if (mac->p2p) { + RT_TRACE(COMP_MAC80211, DBG_LOUD, + ("p2p role %x \n",vif->type)); + mac->basic_rates = 0xff0;/*disable cck rate for p2p*/ + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_BASIC_RATE, + (u8 *) (&mac->basic_rates)); + } + mac->vif = vif; + mac->opmode = vif->type; + rtlpriv->cfg->ops->set_network_type(hw, vif->type); + memcpy(mac->mac_addr, vif->addr, ETH_ALEN); + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_ETHER_ADDR, mac->mac_addr); + +out: + mutex_unlock(&rtlpriv->locks.conf_mutex); + return err; +} + +static void rtl_op_remove_interface(struct ieee80211_hw *hw, + struct ieee80211_vif *vif) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + + mutex_lock(&rtlpriv->locks.conf_mutex); + + /* Free beacon resources */ + if ((vif->type == NL80211_IFTYPE_AP) || + (vif->type == NL80211_IFTYPE_ADHOC) || + (vif->type == NL80211_IFTYPE_MESH_POINT)) { + if (mac->beacon_enabled == 1) { + mac->beacon_enabled = 0; + rtlpriv->cfg->ops->update_interrupt_mask(hw, 0, + rtlpriv->cfg->maps[RTL_IBSS_INT_MASKS]); + } + } + + /* + *Note: We assume NL80211_IFTYPE_UNSPECIFIED as + *NO LINK for our hardware. + */ + mac->p2p = 0; + mac->vif = NULL; + mac->link_state = MAC80211_NOLINK; + memset(mac->bssid, 0, 6); + mac->vendor = PEER_UNKNOWN; + mac->opmode = NL80211_IFTYPE_UNSPECIFIED; + rtlpriv->cfg->ops->set_network_type(hw, mac->opmode); + + mutex_unlock(&rtlpriv->locks.conf_mutex); +} +/**/ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) +/**/ +static int rtl_op_change_interface(struct ieee80211_hw *hw, + struct ieee80211_vif *vif, + enum nl80211_iftype new_type, bool p2p) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + int ret; + rtl_op_remove_interface(hw, vif); + + vif->type = new_type; + vif->p2p = p2p; + ret = rtl_op_add_interface(hw, vif); + RT_TRACE(COMP_MAC80211, DBG_LOUD, + (" p2p %x\n",p2p)); + return ret; +} +/**/ +#endif +/**/ +static int rtl_op_config(struct ieee80211_hw *hw, u32 changed) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + struct ieee80211_conf *conf = &hw->conf; + + if (mac->skip_scan) + return 1; + + + mutex_lock(&rtlpriv->locks.conf_mutex); + if (changed & IEEE80211_CONF_CHANGE_LISTEN_INTERVAL) { /* BIT(2) */ + RT_TRACE(COMP_MAC80211, DBG_LOUD, + ("IEEE80211_CONF_CHANGE_LISTEN_INTERVAL\n")); + } + + /*For IPS */ + if (changed & IEEE80211_CONF_CHANGE_IDLE) { + if (hw->conf.flags & IEEE80211_CONF_IDLE) + rtl_ips_nic_off(hw); + else + rtl_ips_nic_on(hw); + } else { + /* + *although rfoff may not cause by ips, but we will + *check the reason in set_rf_power_state function + */ + if (unlikely(ppsc->rfpwr_state == ERFOFF)) + rtl_ips_nic_on(hw); + } + + /*For LPS */ + if (changed & IEEE80211_CONF_CHANGE_PS) { + cancel_delayed_work(&rtlpriv->works.ps_work); + cancel_delayed_work(&rtlpriv->works.ps_rfon_wq); + if (conf->flags & IEEE80211_CONF_PS) { + rtlpriv->psc.sw_ps_enabled = true; + /* sleep here is must, or we may recv the beacon and + * cause mac80211 into wrong ps state, this will cause + * power save nullfunc send fail, and further cause + * pkt loss, So sleep must quickly but not immediatly + * because that will cause nullfunc send by mac80211 + * fail, and cause pkt loss, we have tested that 5mA + * is worked very well */ + if (!rtlpriv->psc.multi_buffered) + queue_delayed_work(rtlpriv->works.rtl_wq, + &rtlpriv->works.ps_work, + MSECS(5)); + } else { + rtl_swlps_rf_awake(hw); + rtlpriv->psc.sw_ps_enabled = false; + } + } + + if (changed & IEEE80211_CONF_CHANGE_RETRY_LIMITS) { + RT_TRACE(COMP_MAC80211, DBG_LOUD, + ("IEEE80211_CONF_CHANGE_RETRY_LIMITS %x\n", + hw->conf.long_frame_max_tx_count)); + mac->retry_long = hw->conf.long_frame_max_tx_count; + mac->retry_short = hw->conf.long_frame_max_tx_count; + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_RETRY_LIMIT, + (u8 *) (&hw->conf.long_frame_max_tx_count)); + } + + if (changed & IEEE80211_CONF_CHANGE_CHANNEL) { +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)) + struct ieee80211_channel *channel = hw->conf.chandef.chan; + enum nl80211_channel_type channel_type = + cfg80211_get_chandef_type(&(hw->conf.chandef)); +#else + struct ieee80211_channel *channel = hw->conf.channel; + enum nl80211_channel_type channel_type = hw->conf.channel_type; +#endif + u8 wide_chan = (u8) channel->hw_value; + + if (mac->act_scanning) + mac->n_channels++; + + if (rtlpriv->dm.supp_phymode_switch && + mac->link_state < MAC80211_LINKED && + !mac->act_scanning) { + if (rtlpriv->cfg->ops->check_switch_to_dmdp) + rtlpriv->cfg->ops->check_switch_to_dmdp(hw); + } + + /* + *because we should back channel to + *current_network.chan in in scanning, + *So if set_chan == current_network.chan + *we should set it. + *because mac80211 tell us wrong bw40 + *info for cisco1253 bw20, so we modify + *it here based on UPPER & LOWER + */ + switch (channel_type) { + case NL80211_CHAN_HT20: + case NL80211_CHAN_NO_HT: + /* SC */ + mac->cur_40_prime_sc = + PRIME_CHNL_OFFSET_DONT_CARE; + rtlphy->current_chan_bw = HT_CHANNEL_WIDTH_20; + mac->bw_40 = false; + break; + case NL80211_CHAN_HT40MINUS: + /* SC */ + mac->cur_40_prime_sc = PRIME_CHNL_OFFSET_UPPER; + rtlphy->current_chan_bw = + HT_CHANNEL_WIDTH_20_40; + mac->bw_40 = true; + + /*wide channel */ + wide_chan -= 2; + + break; + case NL80211_CHAN_HT40PLUS: + /* SC */ + mac->cur_40_prime_sc = PRIME_CHNL_OFFSET_LOWER; + rtlphy->current_chan_bw = + HT_CHANNEL_WIDTH_20_40; + mac->bw_40 = true; + + /*wide channel */ + wide_chan += 2; + + break; + default: + mac->bw_40 = false; + RT_TRACE(COMP_ERR, DBG_EMERG, + ("switch case not processed \n")); + break; + } + + if (wide_chan <= 0) + wide_chan = 1; + + /* in scanning, when before we offchannel we may send a ps=1 + * null to AP, and then we may send a ps = 0 null to AP quickly, + * but first null have cause AP's put lots of packet to hw tx + * buffer, these packet must be tx before off channel so we must + * delay more time to let AP flush these packets before + * offchannel, or dis-association or delete BA will happen by AP + */ + if (rtlpriv->mac80211.offchan_deley) { + rtlpriv->mac80211.offchan_deley = false; + mdelay(50); + } + + rtlphy->current_channel = wide_chan; + + rtlpriv->cfg->ops->switch_channel(hw); + rtlpriv->cfg->ops->set_channel_access(hw); + rtlpriv->cfg->ops->set_bw_mode(hw, + channel_type); + } + + mutex_unlock(&rtlpriv->locks.conf_mutex); + + return 0; +} + +static void rtl_op_configure_filter(struct ieee80211_hw *hw, + unsigned int changed_flags, + unsigned int *new_flags, u64 multicast) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + + *new_flags &= RTL_SUPPORTED_FILTERS; + if (0 == changed_flags) + return; + + /*TODO: we disable broadcase now, so enable here */ + if (changed_flags & FIF_ALLMULTI) { + if (*new_flags & FIF_ALLMULTI) { + mac->rx_conf |= rtlpriv->cfg->maps[MAC_RCR_AM] | + rtlpriv->cfg->maps[MAC_RCR_AB]; + RT_TRACE(COMP_MAC80211, DBG_LOUD, + ("Enable receive multicast frame.\n")); + } else { + mac->rx_conf &= ~(rtlpriv->cfg->maps[MAC_RCR_AM] | + rtlpriv->cfg->maps[MAC_RCR_AB]); + RT_TRACE(COMP_MAC80211, DBG_LOUD, + ("Disable receive multicast frame.\n")); + } + } + + if (changed_flags & FIF_FCSFAIL) { + if (*new_flags & FIF_FCSFAIL) { + mac->rx_conf |= rtlpriv->cfg->maps[MAC_RCR_ACRC32]; + RT_TRACE(COMP_MAC80211, DBG_LOUD, + ("Enable receive FCS error frame.\n")); + } else { + mac->rx_conf &= ~rtlpriv->cfg->maps[MAC_RCR_ACRC32]; + RT_TRACE(COMP_MAC80211, DBG_LOUD, + ("Disable receive FCS error frame.\n")); + } + } + + /* if ssid not set to hw don't check bssid + * here just used for linked scanning, & linked + * and nolink check bssid is set in set network_type */ + if ((changed_flags & FIF_BCN_PRBRESP_PROMISC) && + (mac->link_state >= MAC80211_LINKED)) { + if (mac->opmode != NL80211_IFTYPE_AP && + mac->opmode != NL80211_IFTYPE_MESH_POINT) { + if (*new_flags & FIF_BCN_PRBRESP_PROMISC) { + rtlpriv->cfg->ops->set_chk_bssid(hw, false); + } else { + rtlpriv->cfg->ops->set_chk_bssid(hw, true); + } + } + } + + if (changed_flags & FIF_CONTROL) { + if (*new_flags & FIF_CONTROL) { + mac->rx_conf |= rtlpriv->cfg->maps[MAC_RCR_ACF]; + + RT_TRACE(COMP_MAC80211, DBG_LOUD, + ("Enable receive control frame.\n")); + } else { + mac->rx_conf &= ~rtlpriv->cfg->maps[MAC_RCR_ACF]; + RT_TRACE(COMP_MAC80211, DBG_LOUD, + ("Disable receive control frame.\n")); + } + } + + if (changed_flags & FIF_OTHER_BSS) { + if (*new_flags & FIF_OTHER_BSS) { + mac->rx_conf |= rtlpriv->cfg->maps[MAC_RCR_AAP]; + RT_TRACE(COMP_MAC80211, DBG_LOUD, + ("Enable receive other BSS's frame.\n")); + } else { + mac->rx_conf &= ~rtlpriv->cfg->maps[MAC_RCR_AAP]; + RT_TRACE(COMP_MAC80211, DBG_LOUD, + ("Disable receive other BSS's frame.\n")); + } + } +} +static int rtl_op_sta_add(struct ieee80211_hw *hw, + struct ieee80211_vif *vif, + struct ieee80211_sta *sta) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal= rtl_hal(rtl_priv(hw)); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct rtl_sta_info *sta_entry; + + if (sta) { + sta_entry = (struct rtl_sta_info *) sta->drv_priv; + spin_lock_bh(&rtlpriv->locks.entry_list_lock); + list_add_tail(&sta_entry->list, &rtlpriv->entry_list); + spin_unlock_bh(&rtlpriv->locks.entry_list_lock); + if (rtlhal->current_bandtype == BAND_ON_2_4G) { + sta_entry->wireless_mode = WIRELESS_MODE_G; + if (sta->supp_rates[0] <= 0xf) + sta_entry->wireless_mode = WIRELESS_MODE_B; + if (sta->ht_cap.ht_supported == true) + sta_entry->wireless_mode = WIRELESS_MODE_N_24G; + + if (vif->type == NL80211_IFTYPE_ADHOC) + sta_entry->wireless_mode = WIRELESS_MODE_G; + } else if (rtlhal->current_bandtype == BAND_ON_5G) { + sta_entry->wireless_mode = WIRELESS_MODE_A; + if (sta->ht_cap.ht_supported == true) + sta_entry->wireless_mode = WIRELESS_MODE_N_24G; + + if (vif->type == NL80211_IFTYPE_ADHOC) + sta_entry->wireless_mode = WIRELESS_MODE_A; + } + /*disable cck rate for p2p*/ + if (mac->p2p) + sta->supp_rates[0] &= 0xfffffff0; + + memcpy(sta_entry->mac_addr, sta->addr, ETH_ALEN); + RT_TRACE(COMP_MAC80211, DBG_DMESG, + ("Add sta addr is %pM\n",sta->addr)); + rtlpriv->cfg->ops->update_rate_tbl(hw, sta, 0); + } + + return 0; +} + +static int rtl_op_sta_remove(struct ieee80211_hw *hw, + struct ieee80211_vif *vif, + struct ieee80211_sta *sta) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_sta_info *sta_entry; + if (sta) { + RT_TRACE(COMP_MAC80211, DBG_DMESG, + ("Remove sta addr is %pM\n",sta->addr)); + sta_entry = (struct rtl_sta_info *) sta->drv_priv; + sta_entry->wireless_mode = 0; + sta_entry->ratr_index = 0; + spin_lock_bh(&rtlpriv->locks.entry_list_lock); + list_del(&sta_entry->list); + spin_unlock_bh(&rtlpriv->locks.entry_list_lock); + } + return 0; +} +static int _rtl_get_hal_qnum(u16 queue) +{ + int qnum; + + switch (queue) { + case 0: + qnum = AC3_VO; + break; + case 1: + qnum = AC2_VI; + break; + case 2: + qnum = AC0_BE; + break; + case 3: + qnum = AC1_BK; + break; + default: + qnum = AC0_BE; + break; + } + return qnum; +} + +/* + *for mac80211 VO=0, VI=1, BE=2, BK=3 + *for rtl819x BE=0, BK=1, VI=2, VO=3 + */ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0)) +static int rtl_op_conf_tx(struct ieee80211_hw *hw, + struct ieee80211_vif *vif, u16 queue, + const struct ieee80211_tx_queue_params *param) +#else +static int rtl_op_conf_tx(struct ieee80211_hw *hw, u16 queue, + const struct ieee80211_tx_queue_params *param) +#endif +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + int aci; + + if (queue >= AC_MAX) { + RT_TRACE(COMP_ERR, DBG_WARNING, + ("queue number %d is incorrect!\n", queue)); + return -EINVAL; + } + + aci = _rtl_get_hal_qnum(queue); + mac->ac[aci].aifs = param->aifs; + mac->ac[aci].cw_min = param->cw_min; + mac->ac[aci].cw_max = param->cw_max; + mac->ac[aci].tx_op = param->txop; + memcpy(&mac->edca_param[aci], param, sizeof(*param)); + rtlpriv->cfg->ops->set_qos(hw, aci); + return 0; +} + +static void rtl_op_bss_info_changed(struct ieee80211_hw *hw, + struct ieee80211_vif *vif, + struct ieee80211_bss_conf *bss_conf, + u32 changed) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtlpriv); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + + mutex_lock(&rtlpriv->locks.conf_mutex); + if ((vif->type == NL80211_IFTYPE_ADHOC) || + (vif->type == NL80211_IFTYPE_AP) || + (vif->type == NL80211_IFTYPE_MESH_POINT)) { + if ((changed & BSS_CHANGED_BEACON) || + (changed & BSS_CHANGED_BEACON_ENABLED && + bss_conf->enable_beacon)) { + if (mac->beacon_enabled == 0) { + RT_TRACE(COMP_MAC80211, DBG_DMESG, + ("BSS_CHANGED_BEACON_ENABLED \n")); + + /*start hw beacon interrupt. */ + /*rtlpriv->cfg->ops->set_bcn_reg(hw); */ + mac->beacon_enabled = 1; + rtlpriv->cfg->ops->update_interrupt_mask(hw, + rtlpriv->cfg->maps + [RTL_IBSS_INT_MASKS], 0); + + if (rtlpriv->cfg->ops->linked_set_reg) + rtlpriv->cfg->ops->linked_set_reg(hw); + } + } + if ((changed & BSS_CHANGED_BEACON_ENABLED && + !bss_conf->enable_beacon)){ + if (mac->beacon_enabled == 1) { + RT_TRACE(COMP_MAC80211, DBG_DMESG, + ("ADHOC DISABLE BEACON\n")); + + mac->beacon_enabled = 0; + rtlpriv->cfg->ops->update_interrupt_mask(hw, 0, + rtlpriv->cfg->maps + [RTL_IBSS_INT_MASKS]); + } + } + if (changed & BSS_CHANGED_BEACON_INT) { + RT_TRACE(COMP_BEACON, DBG_TRACE, + ("BSS_CHANGED_BEACON_INT\n")); + mac->beacon_interval = bss_conf->beacon_int; + rtlpriv->cfg->ops->set_bcn_intv(hw); + } + } + + /*TODO: reference to enum ieee80211_bss_change */ + if (changed & BSS_CHANGED_ASSOC) { + if (bss_conf->assoc) { + struct ieee80211_sta *sta = NULL; + /* we should reset all sec info & cam + * before set cam after linked, we should not + * reset in disassoc, that will cause tkip->wep + * fail because some flag will be wrong */ + /* reset sec info */ + rtl_cam_reset_sec_info(hw); + /* reset cam to fix wep fail issue + * when change from wpa to wep */ + rtl_cam_reset_all_entry(hw); + + mac->link_state = MAC80211_LINKED; + mac->cnt_after_linked = 0; + mac->assoc_id = bss_conf->aid; + memcpy(mac->bssid, bss_conf->bssid, 6); + + if (rtlpriv->cfg->ops->linked_set_reg) + rtlpriv->cfg->ops->linked_set_reg(hw); + + rcu_read_lock(); + sta = ieee80211_find_sta(vif, (u8*)bss_conf->bssid); + + if (vif->type == NL80211_IFTYPE_STATION && sta) + rtlpriv->cfg->ops->update_rate_tbl(hw, sta, 0); + RT_TRACE(COMP_EASY_CONCURRENT, DBG_LOUD, + ("send PS STATIC frame \n")); + if (rtlpriv->dm.supp_phymode_switch) { + if (sta->ht_cap.ht_supported) + rtl_send_smps_action(hw, sta, + IEEE80211_SMPS_STATIC); + } + rcu_read_unlock(); + + RT_TRACE(COMP_MAC80211, DBG_DMESG, + ("BSS_CHANGED_ASSOC\n")); + } else { + if (mac->link_state == MAC80211_LINKED) + rtl_lps_leave(hw); + if (ppsc->p2p_ps_info.p2p_ps_mode> P2P_PS_NONE) + rtl_p2p_ps_cmd(hw, P2P_PS_DISABLE); + mac->link_state = MAC80211_NOLINK; + memset(mac->bssid, 0, 6); + mac->vendor = PEER_UNKNOWN; + + if (rtlpriv->dm.supp_phymode_switch) { + if (rtlpriv->cfg->ops->check_switch_to_dmdp) + rtlpriv->cfg->ops->check_switch_to_dmdp(hw); + } + RT_TRACE(COMP_MAC80211, DBG_DMESG, + ("BSS_CHANGED_UN_ASSOC\n")); + } + } + + if (changed & BSS_CHANGED_ERP_CTS_PROT) { + RT_TRACE(COMP_MAC80211, DBG_TRACE, + ("BSS_CHANGED_ERP_CTS_PROT\n")); + mac->use_cts_protect = bss_conf->use_cts_prot; + } + + if (changed & BSS_CHANGED_ERP_PREAMBLE) { + RT_TRACE(COMP_MAC80211, DBG_LOUD, + ("BSS_CHANGED_ERP_PREAMBLE use short preamble:%x \n", + bss_conf->use_short_preamble)); + + mac->short_preamble = bss_conf->use_short_preamble; + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_ACK_PREAMBLE, + (u8 *) (&mac->short_preamble)); + } + + if (changed & BSS_CHANGED_ERP_SLOT) { + RT_TRACE(COMP_MAC80211, DBG_TRACE, + ("BSS_CHANGED_ERP_SLOT\n")); + + if (bss_conf->use_short_slot) + mac->slot_time = RTL_SLOT_TIME_9; + else + mac->slot_time = RTL_SLOT_TIME_20; + + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_SLOT_TIME, + (u8 *) (&mac->slot_time)); + } + + if (changed & BSS_CHANGED_HT) { + struct ieee80211_sta *sta = NULL; + + RT_TRACE(COMP_MAC80211, DBG_TRACE, + ("BSS_CHANGED_HT\n")); + + rcu_read_lock(); + sta = ieee80211_find_sta(vif, (u8*)bss_conf->bssid); + if (sta) { + if (sta->ht_cap.ampdu_density > + mac->current_ampdu_density) + mac->current_ampdu_density = + sta->ht_cap.ampdu_density; + if (sta->ht_cap.ampdu_factor < + mac->current_ampdu_factor) + mac->current_ampdu_factor = + sta->ht_cap.ampdu_factor; + } + rcu_read_unlock(); + + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_SHORTGI_DENSITY, + (u8 *) (&mac->max_mss_density)); + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_AMPDU_FACTOR, + &mac->current_ampdu_factor); + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_AMPDU_MIN_SPACE, + &mac->current_ampdu_density); + } + + if (changed & BSS_CHANGED_BSSID) { + u32 basic_rates; + struct ieee80211_sta *sta = NULL; + + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_BSSID, + (u8 *) bss_conf->bssid); + + RT_TRACE(COMP_MAC80211, DBG_DMESG, + ("bssid: %pM\n", bss_conf->bssid)); + + mac->vendor = PEER_UNKNOWN; + memcpy(mac->bssid, bss_conf->bssid, 6); + rtlpriv->cfg->ops->set_network_type(hw, vif->type); + + rcu_read_lock(); + sta = ieee80211_find_sta(vif, (u8*)bss_conf->bssid); + if (!sta) { + rcu_read_unlock(); + goto out; + } + + if (rtlhal->current_bandtype == BAND_ON_5G) { + mac->mode = WIRELESS_MODE_A; + } else { + if (sta->supp_rates[0] <= 0xf) + mac->mode = WIRELESS_MODE_B; + else + mac->mode = WIRELESS_MODE_G; + } + + if (sta->ht_cap.ht_supported) { + if (rtlhal->current_bandtype == BAND_ON_2_4G) + mac->mode = WIRELESS_MODE_N_24G; + else + mac->mode = WIRELESS_MODE_N_5G; + } + + /* just station need it, because ibss & ap mode will + * set in sta_add, and will be NULL here */ + if (vif->type == NL80211_IFTYPE_STATION) { + struct rtl_sta_info *sta_entry; + sta_entry = (struct rtl_sta_info *) sta->drv_priv; + sta_entry->wireless_mode = mac->mode; + } + + if (sta->ht_cap.ht_supported) { + mac->ht_enable = true; + + /* + * for cisco 1252 bw20 it's wrong + * if (ht_cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40) { + * mac->bw_40 = true; + * } + * */ + } + + if (changed & BSS_CHANGED_BASIC_RATES) { + /* for 5G must << RATE_6M_INDEX=4, + * because 5G have no cck rate*/ + if (rtlhal->current_bandtype == BAND_ON_5G) + basic_rates = sta->supp_rates[1] << 4; + else + basic_rates = sta->supp_rates[0]; + + mac->basic_rates = basic_rates; + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_BASIC_RATE, + (u8 *) (&basic_rates)); + } + rcu_read_unlock(); + } + + /* + * For FW LPS and Keep Alive: + * To tell firmware we have connected + * to an AP. For 92SE/CE power save v2. + */ + if (changed & BSS_CHANGED_ASSOC) { + if (bss_conf->assoc) { + u8 keep_alive = 10; + u8 mstatus = RT_MEDIA_CONNECT; + rtlpriv->cfg->ops->set_hw_reg(hw, + HW_VAR_KEEP_ALIVE, + (u8 *) (&keep_alive)); + + rtlpriv->cfg->ops->set_hw_reg(hw, + HW_VAR_H2C_FW_JOINBSSRPT, + (u8 *) (&mstatus)); + ppsc->report_linked = true; + + } else { + + u8 mstatus = RT_MEDIA_DISCONNECT; + rtlpriv->cfg->ops->set_hw_reg(hw, + HW_VAR_H2C_FW_JOINBSSRPT, + (u8 *) (&mstatus)); + ppsc->report_linked = false; + + } + + if (rtlpriv->cfg->ops->get_btc_status()){ + rtlpriv->btcoexist.btc_ops->btc_mediastatus_notify( + rtlpriv, ppsc->report_linked); + } + } + +out: + mutex_unlock(&rtlpriv->locks.conf_mutex); +} + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0)) +static u64 rtl_op_get_tsf(struct ieee80211_hw *hw, struct ieee80211_vif *vif) +#else +static u64 rtl_op_get_tsf(struct ieee80211_hw *hw) +#endif +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u64 tsf; + + rtlpriv->cfg->ops->get_hw_reg(hw, HW_VAR_CORRECT_TSF, (u8 *) (&tsf)); + return tsf; +} + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0)) +static void rtl_op_set_tsf(struct ieee80211_hw *hw, + struct ieee80211_vif *vif, u64 tsf) +#else +static void rtl_op_set_tsf(struct ieee80211_hw *hw, u64 tsf) +#endif +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + u8 bibss = (mac->opmode == NL80211_IFTYPE_ADHOC) ? 1 : 0; + + mac->tsf = tsf; + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_CORRECT_TSF, (u8 *) (&bibss)); +} + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0)) +static void rtl_op_reset_tsf(struct ieee80211_hw *hw, struct ieee80211_vif *vif) +#else +static void rtl_op_reset_tsf(struct ieee80211_hw *hw) +#endif +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 tmp = 0; + + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_DUAL_TSF_RST, (u8 *) (&tmp)); +} + +static void rtl_op_sta_notify(struct ieee80211_hw *hw, + struct ieee80211_vif *vif, + enum sta_notify_cmd cmd, + struct ieee80211_sta *sta) +{ + switch (cmd) { + case STA_NOTIFY_SLEEP: + break; + case STA_NOTIFY_AWAKE: + break; + default: + break; + } +} + +static int rtl_op_ampdu_action(struct ieee80211_hw *hw, + struct ieee80211_vif *vif, + enum ieee80211_ampdu_mlme_action action, + struct ieee80211_sta *sta, u16 tid, u16 * ssn +/**/ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39)) +/**/ + ,u8 buf_size +/**/ +#endif +/**/ + ) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + switch (action) { + case IEEE80211_AMPDU_TX_START: + RT_TRACE(COMP_MAC80211, DBG_TRACE, + ("IEEE80211_AMPDU_TX_START: TID:%d\n", tid)); + return rtl_tx_agg_start(hw, vif, sta, tid, ssn); + break; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0)) + case IEEE80211_AMPDU_TX_STOP_CONT: + case IEEE80211_AMPDU_TX_STOP_FLUSH: + case IEEE80211_AMPDU_TX_STOP_FLUSH_CONT: +#else + case IEEE80211_AMPDU_TX_STOP: +#endif + RT_TRACE(COMP_MAC80211, DBG_TRACE, + ("IEEE80211_AMPDU_TX_STOP: TID:%d\n", tid)); + return rtl_tx_agg_stop(hw, vif, sta, tid); + break; + case IEEE80211_AMPDU_TX_OPERATIONAL: + RT_TRACE(COMP_MAC80211, DBG_TRACE, + ("IEEE80211_AMPDU_TX_OPERATIONAL:TID:%d\n", tid)); + rtl_tx_agg_oper(hw, sta, tid); + break; + case IEEE80211_AMPDU_RX_START: + RT_TRACE(COMP_MAC80211, DBG_TRACE, + ("IEEE80211_AMPDU_RX_START:TID:%d\n", tid)); + return rtl_rx_agg_start(hw, sta, tid); + break; + case IEEE80211_AMPDU_RX_STOP: + RT_TRACE(COMP_MAC80211, DBG_TRACE, + ("IEEE80211_AMPDU_RX_STOP:TID:%d\n", tid)); + return rtl_rx_agg_stop(hw, sta, tid); + break; + default: + RT_TRACE(COMP_ERR, DBG_EMERG, + ("IEEE80211_AMPDU_ERR!!!!:\n")); + return -EOPNOTSUPP; + } + return 0; +} + +static void rtl_op_sw_scan_start(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + + RT_TRACE(COMP_MAC80211, DBG_LOUD, ("\n")); + mac->act_scanning = true; + /*rtlpriv->btcops->btc_scan_notify(rtlpriv, 0); */ + if (rtlpriv->link_info.b_higher_busytraffic) { + mac->skip_scan = true; + return; + } + + if (rtlpriv->dm.supp_phymode_switch) { + if (rtlpriv->cfg->ops->check_switch_to_dmdp) + rtlpriv->cfg->ops->check_switch_to_dmdp(hw); + } + + if (mac->link_state == MAC80211_LINKED) { + rtl_lps_leave(hw); + mac->link_state = MAC80211_LINKED_SCANNING; + } else { + rtl_ips_nic_on(hw); + } + + /* Dul mac */ + rtlpriv->rtlhal.b_load_imrandiqk_setting_for2g = false; + + rtlpriv->cfg->ops->led_control(hw, LED_CTL_SITE_SURVEY); + + rtlpriv->cfg->ops->scan_operation_backup(hw, SCAN_OPT_BACKUP_BAND0); + +} + +static void rtl_op_sw_scan_complete(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + + RT_TRACE(COMP_MAC80211, DBG_LOUD, ("\n")); + mac->act_scanning = false; + mac->skip_scan = false; + if (rtlpriv->link_info.b_higher_busytraffic) { + return; + } + + /* p2p will use 1/6/11 to scan */ + if (mac->n_channels == 3) + mac->p2p_in_use = true; + else + mac->p2p_in_use = false; + mac->n_channels = 0; + /* Dul mac */ + rtlpriv->rtlhal.b_load_imrandiqk_setting_for2g = false; + + if (mac->link_state == MAC80211_LINKED_SCANNING) { + mac->link_state = MAC80211_LINKED; + if (mac->opmode == NL80211_IFTYPE_STATION) { + /* fix fwlps issue */ + rtlpriv->cfg->ops->set_network_type(hw, mac->opmode); + } + } + + rtlpriv->cfg->ops->scan_operation_backup(hw, SCAN_OPT_RESTORE); + /* rtlpriv->btcops->btc_scan_notify(rtlpriv, 1); */ +} + +static int rtl_op_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd, + struct ieee80211_vif *vif, struct ieee80211_sta *sta, + struct ieee80211_key_conf *key) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 key_type = NO_ENCRYPTION; + u8 key_idx; + bool group_key = false; + bool wep_only = false; + int err = 0; + u8 mac_addr[ETH_ALEN]; + u8 bcast_addr[ETH_ALEN] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; + u8 zero_addr[ETH_ALEN] = { 0 }; + + if (rtlpriv->cfg->mod_params->sw_crypto || rtlpriv->sec.use_sw_sec) { + RT_TRACE(COMP_ERR, DBG_WARNING, + ("not open hw encryption\n")); + return -ENOSPC; /*User disabled HW-crypto */ + } + /* To support IBSS, use sw-crypto for GTK */ + if(((vif->type == NL80211_IFTYPE_ADHOC) || + (vif->type == NL80211_IFTYPE_MESH_POINT)) && + !(key->flags & IEEE80211_KEY_FLAG_PAIRWISE)) + return -ENOSPC; + RT_TRACE(COMP_SEC, DBG_DMESG, + ("%s hardware based encryption for keyidx: %d, mac: %pM\n", + cmd == SET_KEY ? "Using" : "Disabling", key->keyidx, + sta ? sta->addr : bcast_addr)); + rtlpriv->sec.being_setkey = true; + rtl_ips_nic_on(hw); + mutex_lock(&rtlpriv->locks.conf_mutex); + /* <1> get encryption alg */ + +/**/ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) +/**/ + switch (key->cipher) { + case WLAN_CIPHER_SUITE_WEP40: + key_type = WEP40_ENCRYPTION; + RT_TRACE(COMP_SEC, DBG_DMESG, ("alg:WEP40\n")); + break; + case WLAN_CIPHER_SUITE_WEP104: + RT_TRACE(COMP_SEC, DBG_DMESG, ("alg:WEP104\n")); + key_type = WEP104_ENCRYPTION; + break; + case WLAN_CIPHER_SUITE_TKIP: + key_type = TKIP_ENCRYPTION; + RT_TRACE(COMP_SEC, DBG_DMESG, ("alg:TKIP\n")); + break; + case WLAN_CIPHER_SUITE_CCMP: + key_type = AESCCMP_ENCRYPTION; + RT_TRACE(COMP_SEC, DBG_DMESG, ("alg:CCMP\n")); + break; + case WLAN_CIPHER_SUITE_AES_CMAC: + /* HW don't support CMAC encryption, + * use software CMAC encryption */ + key_type = AESCMAC_ENCRYPTION; + RT_TRACE(COMP_SEC, DBG_DMESG, ("alg:CMAC\n")); + RT_TRACE(COMP_SEC, DBG_DMESG, + ("HW don't support CMAC encrypiton, " + "use software CMAC encrypiton\n")); + err = -EOPNOTSUPP; + goto out_unlock; + default: + RT_TRACE(COMP_ERR, DBG_EMERG, + ("alg_err:%x!!!!:\n", key->cipher)); + goto out_unlock; + } +/**/ +#else + switch (key->alg) { + case ALG_WEP: + if (key->keylen == WLAN_KEY_LEN_WEP40) { + key_type = WEP40_ENCRYPTION; + RT_TRACE(COMP_SEC, DBG_DMESG, ("alg:WEP40\n")); + } else { + RT_TRACE(COMP_SEC, DBG_DMESG, + ("alg:WEP104\n")); + key_type = WEP104_ENCRYPTION; + } + break; + case ALG_TKIP: + key_type = TKIP_ENCRYPTION; + RT_TRACE(COMP_SEC, DBG_DMESG, ("alg:TKIP\n")); + break; + case ALG_CCMP: + key_type = AESCCMP_ENCRYPTION; + RT_TRACE(COMP_SEC, DBG_DMESG, ("alg:CCMP\n")); + break; + case ALG_AES_CMAC: + /*HW don't support CMAC encryption, use software CMAC encryption */ + key_type = AESCMAC_ENCRYPTION; + RT_TRACE(COMP_SEC, DBG_DMESG, ("alg:CMAC\n")); + RT_TRACE(COMP_SEC, DBG_DMESG, + ("HW don't support CMAC encrypiton, " + "use software CMAC encrypiton\n")); + err = -EOPNOTSUPP; + goto out_unlock; + default: + RT_TRACE(COMP_ERR, DBG_EMERG, + ("alg_err:%x!!!!:\n", key->alg)); + goto out_unlock; + } +#endif +/**/ + if(key_type == WEP40_ENCRYPTION || + key_type == WEP104_ENCRYPTION || + vif->type == NL80211_IFTYPE_ADHOC) + rtlpriv->sec.use_defaultkey = true; + + /* <2> get key_idx */ + key_idx = (u8) (key->keyidx); + if (key_idx > 3) + goto out_unlock; + /* <3> if pairwise key enable_hw_sec */ + group_key = !(key->flags & IEEE80211_KEY_FLAG_PAIRWISE); + + /* wep always be group key, but there are two conditions: + * 1) wep only: is just for wep enc, in this condition + * rtlpriv->sec.pairwise_enc_algorithm == NO_ENCRYPTION + * will be true & enable_hw_sec will be set when wep + * ke setting. + * 2) wep(group) + AES(pairwise): some AP like cisco + * may use it, in this condition enable_hw_sec will not + * be set when wep key setting */ + /* we must reset sec_info after lingked before set key, + * or some flag will be wrong*/ + if (vif->type == NL80211_IFTYPE_AP || + vif->type == NL80211_IFTYPE_MESH_POINT) { + if (!group_key || key_type == WEP40_ENCRYPTION || + key_type == WEP104_ENCRYPTION) { + if (group_key) { + wep_only = true; + } + rtlpriv->cfg->ops->enable_hw_sec(hw); + } + } else { + if ((!group_key) || (vif->type == NL80211_IFTYPE_ADHOC) || + rtlpriv->sec.pairwise_enc_algorithm == NO_ENCRYPTION) { + if (rtlpriv->sec.pairwise_enc_algorithm == + NO_ENCRYPTION && + (key_type == WEP40_ENCRYPTION || + key_type == WEP104_ENCRYPTION)) + wep_only = true; + rtlpriv->sec.pairwise_enc_algorithm = key_type; + RT_TRACE(COMP_SEC, DBG_DMESG, + ("set enable_hw_sec, key_type:%x(OPEN:0 WEP40:" + "1 TKIP:2 AES:4 WEP104:5)\n", key_type)); + rtlpriv->cfg->ops->enable_hw_sec(hw); + } + } + /* <4> set key based on cmd */ + switch (cmd) { + case SET_KEY: + if (wep_only) { + RT_TRACE(COMP_SEC, DBG_DMESG, + ("set WEP(group/pairwise) key\n")); + /* Pairwise key with an assigned MAC address. */ + rtlpriv->sec.pairwise_enc_algorithm = key_type; + rtlpriv->sec.group_enc_algorithm = key_type; + /*set local buf about wep key. */ + memcpy(rtlpriv->sec.key_buf[key_idx], + key->key, key->keylen); + rtlpriv->sec.key_len[key_idx] = key->keylen; + memcpy(mac_addr, zero_addr, ETH_ALEN); + } else if (group_key) { /* group key */ + RT_TRACE(COMP_SEC, DBG_DMESG, + ("set group key\n")); + /* group key */ + rtlpriv->sec.group_enc_algorithm = key_type; + /*set local buf about group key. */ + memcpy(rtlpriv->sec.key_buf[key_idx], + key->key, key->keylen); + rtlpriv->sec.key_len[key_idx] = key->keylen; + memcpy(mac_addr, bcast_addr, ETH_ALEN); + } else { /* pairwise key */ + RT_TRACE(COMP_SEC, DBG_DMESG, + ("set pairwise key\n")); + if (!sta) { + RT_ASSERT(false, ("pairwise key withnot" + "mac_addr\n")); + + err = -EOPNOTSUPP; + goto out_unlock; + } + /* Pairwise key with an assigned MAC address. */ + rtlpriv->sec.pairwise_enc_algorithm = key_type; + /*set local buf about pairwise key. */ + memcpy(rtlpriv->sec.key_buf[PAIRWISE_KEYIDX], + key->key, key->keylen); + rtlpriv->sec.key_len[PAIRWISE_KEYIDX] = key->keylen; + rtlpriv->sec.pairwise_key = + rtlpriv->sec.key_buf[PAIRWISE_KEYIDX]; + memcpy(mac_addr, sta->addr, ETH_ALEN); + } + rtlpriv->cfg->ops->set_key(hw, key_idx, mac_addr, + group_key, key_type, wep_only, + false); + /* <5> tell mac80211 do something: */ + /*must use sw generate IV, or can not work !!!!. */ + key->flags |= IEEE80211_KEY_FLAG_GENERATE_IV; + key->hw_key_idx = key_idx; + if (key_type == TKIP_ENCRYPTION) + key->flags |= IEEE80211_KEY_FLAG_GENERATE_MMIC; + /*use software CCMP encryption for management frames (MFP) */ + if (key_type == AESCCMP_ENCRYPTION) + key->flags |= IEEE80211_KEY_FLAG_SW_MGMT; + break; + case DISABLE_KEY: + RT_TRACE(COMP_SEC, DBG_DMESG, + ("disable key delete one entry\n")); + /*set local buf about wep key. */ + if (vif->type == NL80211_IFTYPE_AP || + vif->type == NL80211_IFTYPE_MESH_POINT) { + if (sta) + rtl_cam_del_entry(hw, sta->addr); + } + memset(rtlpriv->sec.key_buf[key_idx], 0, key->keylen); + rtlpriv->sec.key_len[key_idx] = 0; + memcpy(mac_addr, zero_addr, ETH_ALEN); + /* + *mac80211 will delete entrys one by one, + *so don't use rtl_cam_reset_all_entry + *or clear all entry here. + */ + rtl_cam_delete_one_entry(hw, mac_addr, key_idx); + break; + default: + RT_TRACE(COMP_ERR, DBG_EMERG, + ("cmd_err:%x!!!!:\n", cmd)); + } +out_unlock: + mutex_unlock(&rtlpriv->locks.conf_mutex); + rtlpriv->sec.being_setkey = false; + return err; +} + +static void rtl_op_rfkill_poll(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + bool radio_state; + bool blocked; + u8 valid = 0; + + if (!test_bit(RTL_STATUS_INTERFACE_START, &rtlpriv->status)) + return; + + mutex_lock(&rtlpriv->locks.conf_mutex); + + /*if Radio On return true here */ + radio_state = rtlpriv->cfg->ops->radio_onoff_checking(hw, &valid); + + if (valid) { + if (unlikely(radio_state != rtlpriv->rfkill.rfkill_state)) { + rtlpriv->rfkill.rfkill_state = radio_state; + + RT_TRACE(COMP_RF, DBG_DMESG, + (KERN_INFO "wireless radio switch turned %s\n", + radio_state ? "on" : "off")); + + blocked = (rtlpriv->rfkill.rfkill_state == 1) ? 0 : 1; + wiphy_rfkill_set_hw_state(hw->wiphy, blocked); + } + } + + mutex_unlock(&rtlpriv->locks.conf_mutex); +} + +/* this function is called by mac80211 to flush tx buffer + * before switch channle or power save, or tx buffer packet + * maybe send after offchannel or rf sleep, this may cause + * dis-association by AP */ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)) +static void rtl_op_flush(struct ieee80211_hw *hw, u32 queues, bool drop) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + if (rtlpriv->intf_ops->flush) + rtlpriv->intf_ops->flush(hw, queues, drop); +} +#else +static void rtl_op_flush(struct ieee80211_hw *hw, bool drop) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + if (rtlpriv->intf_ops->flush) + rtlpriv->intf_ops->flush(hw, drop); +} +#endif + +const struct ieee80211_ops rtl_ops = { + .start = rtl_op_start, + .stop = rtl_op_stop, + .tx = rtl_op_tx, + .add_interface = rtl_op_add_interface, + .remove_interface = rtl_op_remove_interface, +/**/ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) +/**/ + .change_interface = rtl_op_change_interface, +/**/ +#endif +/**/ + .config = rtl_op_config, + .configure_filter = rtl_op_configure_filter, + .set_key = rtl_op_set_key, + .conf_tx = rtl_op_conf_tx, + .bss_info_changed = rtl_op_bss_info_changed, + .get_tsf = rtl_op_get_tsf, + .set_tsf = rtl_op_set_tsf, + .reset_tsf = rtl_op_reset_tsf, + .sta_notify = rtl_op_sta_notify, + .ampdu_action = rtl_op_ampdu_action, + .sw_scan_start = rtl_op_sw_scan_start, + .sw_scan_complete = rtl_op_sw_scan_complete, + .rfkill_poll = rtl_op_rfkill_poll, + .sta_add = rtl_op_sta_add, + .sta_remove = rtl_op_sta_remove, + .flush = rtl_op_flush, +}; --- linux-3.13.0.orig/drivers/staging/rtl8821ae/core.h +++ linux-3.13.0/drivers/staging/rtl8821ae/core.h @@ -0,0 +1,43 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * Tmis program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * Tmis program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * tmis program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA + * + * Tme full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#ifndef __RTL_CORE_H__ +#define __RTL_CORE_H__ + +#define RTL_SUPPORTED_FILTERS \ + (FIF_PROMISC_IN_BSS | \ + FIF_ALLMULTI | FIF_CONTROL | \ + FIF_OTHER_BSS | \ + FIF_FCSFAIL | \ + FIF_BCN_PRBRESP_PROMISC) + +#define RTL_SUPPORTED_CTRL_FILTER 0xFF + +extern const struct ieee80211_ops rtl_ops; +#endif --- linux-3.13.0.orig/drivers/staging/rtl8821ae/debug.c +++ linux-3.13.0/drivers/staging/rtl8821ae/debug.c @@ -0,0 +1,988 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * Tmis program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * Tmis program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * tmis program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA + * + * Tme full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#include "wifi.h" +#include "cam.h" + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)) +#define GET_INODE_DATA(__node) PDE_DATA(__node) +#else +#define GET_INODE_DATA(__node) PDE(__node)->data +#endif + + +void rtl_dbgp_flag_init(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 i; + + rtlpriv->dbg.global_debuglevel = DBG_DMESG; + + rtlpriv->dbg.global_debugcomponents = + COMP_ERR | + COMP_FW | + COMP_INIT | + COMP_RECV | + COMP_SEND | + COMP_MLME | + COMP_SCAN | + COMP_INTR | + COMP_LED | + COMP_SEC | + COMP_BEACON | + COMP_RATE | + COMP_RXDESC | + COMP_DIG | + COMP_TXAGC | + COMP_POWER | + COMP_POWER_TRACKING | + COMP_BB_POWERSAVING | + COMP_SWAS | + COMP_RF | + COMP_TURBO | + COMP_RATR | + COMP_CMD | + COMP_EASY_CONCURRENT | + COMP_EFUSE | + COMP_QOS | COMP_MAC80211 | COMP_REGD | + COMP_CHAN | + COMP_BT_COEXIST | + COMP_IQK | + 0; + + for (i = 0; i < DBGP_TYPE_MAX; i++) + rtlpriv->dbg.dbgp_type[i] = 0; + + /*Init Debug flag enable condition */ +} + +struct proc_dir_entry *proc_topdir; +static int rtl_proc_get_mac_0(struct seq_file *m, void *v) +{ + struct ieee80211_hw *hw = m->private; + struct rtl_priv *rtlpriv = rtl_priv(hw); + int i, n, page; + int max = 0xff; + page = 0x000; + + for (n = 0; n <= max; ) { + seq_printf(m, "\n%8.8x ", n + page); + for (i = 0; i < 4 && n <= max; i++, n += 4) + seq_printf(m, "%8.8x ", + rtl_read_dword(rtlpriv, (page | n))); + } + seq_puts(m, "\n"); + return 0; +} + +static int dl_proc_open_mac_0(struct inode *inode, struct file *file) +{ + return single_open(file, rtl_proc_get_mac_0, GET_INODE_DATA(inode)); +} + +static const struct file_operations file_ops_mac_0 = { + .open = dl_proc_open_mac_0, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release, +}; + +static int rtl_proc_get_mac_1(struct seq_file *m, void *v) +{ + struct ieee80211_hw *hw = m->private; + struct rtl_priv *rtlpriv = rtl_priv(hw); + int i, n, page; + int max = 0xff; + page = 0x100; + + for (n = 0; n <= max; ) { + seq_printf(m, "\n%8.8x ", n + page); + for (i = 0; i < 4 && n <= max; i++, n += 4) + seq_printf(m, "%8.8x ", + rtl_read_dword(rtlpriv, (page | n))); + } + seq_puts(m, "\n"); + return 0; +} + +static int dl_proc_open_mac_1(struct inode *inode, struct file *file) +{ + return single_open(file, rtl_proc_get_mac_1, GET_INODE_DATA(inode)); +} + +static const struct file_operations file_ops_mac_1 = { + .open = dl_proc_open_mac_1, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release, +}; + +static int rtl_proc_get_mac_2(struct seq_file *m, void *v) +{ + struct ieee80211_hw *hw = m->private; + struct rtl_priv *rtlpriv = rtl_priv(hw); + int i, n, page; + int max = 0xff; + page = 0x200; + + for (n = 0; n <= max; ) { + seq_printf(m, "\n%8.8x ", n + page); + for (i = 0; i < 4 && n <= max; i++, n += 4) + seq_printf(m, "%8.8x ", + rtl_read_dword(rtlpriv, (page | n))); + } + seq_puts(m, "\n"); + return 0; +} + +static int dl_proc_open_mac_2(struct inode *inode, struct file *file) +{ + return single_open(file, rtl_proc_get_mac_2, GET_INODE_DATA(inode)); +} + +static const struct file_operations file_ops_mac_2 = { + .open = dl_proc_open_mac_2, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release, +}; + +static int rtl_proc_get_mac_3(struct seq_file *m, void *v) +{ + struct ieee80211_hw *hw = m->private; + struct rtl_priv *rtlpriv = rtl_priv(hw); + int i, n, page; + int max = 0xff; + page = 0x300; + + for (n = 0; n <= max; ) { + seq_printf(m, "\n%8.8x ", n + page); + for (i = 0; i < 4 && n <= max; i++, n += 4) + seq_printf(m, "%8.8x ", + rtl_read_dword(rtlpriv, (page | n))); + } + seq_puts(m, "\n"); + return 0; +} + +static int dl_proc_open_mac_3(struct inode *inode, struct file *file) +{ + return single_open(file, rtl_proc_get_mac_3, GET_INODE_DATA(inode)); +} + +static const struct file_operations file_ops_mac_3 = { + .open = dl_proc_open_mac_3, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release, +}; + +static int rtl_proc_get_mac_4(struct seq_file *m, void *v) +{ + struct ieee80211_hw *hw = m->private; + struct rtl_priv *rtlpriv = rtl_priv(hw); + int i, n, page; + int max = 0xff; + page = 0x400; + + for (n = 0; n <= max; ) { + seq_printf(m, "\n%8.8x ", n + page); + for (i = 0; i < 4 && n <= max; i++, n += 4) + seq_printf(m, "%8.8x ", + rtl_read_dword(rtlpriv, (page | n))); + } + seq_puts(m, "\n"); + return 0; +} + +static int dl_proc_open_mac_4(struct inode *inode, struct file *file) +{ + return single_open(file, rtl_proc_get_mac_4, GET_INODE_DATA(inode)); +} + +static const struct file_operations file_ops_mac_4 = { + .open = dl_proc_open_mac_4, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release, +}; + +static int rtl_proc_get_mac_5(struct seq_file *m, void *v) +{ + struct ieee80211_hw *hw = m->private; + struct rtl_priv *rtlpriv = rtl_priv(hw); + int i, n, page; + int max = 0xff; + page = 0x500; + + for (n = 0; n <= max; ) { + seq_printf(m, "\n%8.8x ", n + page); + for (i = 0; i < 4 && n <= max; i++, n += 4) + seq_printf(m, "%8.8x ", + rtl_read_dword(rtlpriv, (page | n))); + } + seq_puts(m, "\n"); + return 0; +} + +static int dl_proc_open_mac_5(struct inode *inode, struct file *file) +{ + return single_open(file, rtl_proc_get_mac_5, GET_INODE_DATA(inode)); +} + +static const struct file_operations file_ops_mac_5 = { + .open = dl_proc_open_mac_5, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release, +}; + +static int rtl_proc_get_mac_6(struct seq_file *m, void *v) +{ + struct ieee80211_hw *hw = m->private; + struct rtl_priv *rtlpriv = rtl_priv(hw); + int i, n, page; + int max = 0xff; + page = 0x600; + + for (n = 0; n <= max; ) { + seq_printf(m, "\n%8.8x ", n + page); + for (i = 0; i < 4 && n <= max; i++, n += 4) + seq_printf(m, "%8.8x ", + rtl_read_dword(rtlpriv, (page | n))); + } + seq_puts(m, "\n"); + return 0; +} + +static int dl_proc_open_mac_6(struct inode *inode, struct file *file) +{ + return single_open(file, rtl_proc_get_mac_6, GET_INODE_DATA(inode)); +} + +static const struct file_operations file_ops_mac_6 = { + .open = dl_proc_open_mac_6, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release, +}; + +static int rtl_proc_get_mac_7(struct seq_file *m, void *v) +{ + struct ieee80211_hw *hw = m->private; + struct rtl_priv *rtlpriv = rtl_priv(hw); + int i, n, page; + int max = 0xff; + page = 0x700; + + for (n = 0; n <= max; ) { + seq_printf(m, "\n%8.8x ", n + page); + for (i = 0; i < 4 && n <= max; i++, n += 4) + seq_printf(m, "%8.8x ", + rtl_read_dword(rtlpriv, (page | n))); + } + seq_puts(m, "\n"); + return 0; +} + +static int dl_proc_open_mac_7(struct inode *inode, struct file *file) +{ + return single_open(file, rtl_proc_get_mac_7, GET_INODE_DATA(inode)); +} + +static const struct file_operations file_ops_mac_7 = { + .open = dl_proc_open_mac_7, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release, +}; + +static int rtl_proc_get_bb_8(struct seq_file *m, void *v) +{ + struct ieee80211_hw *hw = m->private; + int i, n, page; + int max = 0xff; + page = 0x800; + + for (n = 0; n <= max; ) { + seq_printf(m, "\n%8.8x ", n + page); + for (i = 0; i < 4 && n <= max; i++, n += 4) + seq_printf(m, "%8.8x ", + rtl_get_bbreg(hw, (page | n), 0xffffffff)); + } + seq_puts(m, "\n"); + return 0; +} + +static int dl_proc_open_bb_8(struct inode *inode, struct file *file) +{ + return single_open(file, rtl_proc_get_bb_8, GET_INODE_DATA(inode)); +} + +static const struct file_operations file_ops_bb_8 = { + .open = dl_proc_open_bb_8, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release, +}; + +static int rtl_proc_get_bb_9(struct seq_file *m, void *v) +{ + struct ieee80211_hw *hw = m->private; + int i, n, page; + int max = 0xff; + page = 0x900; + + for (n = 0; n <= max; ) { + seq_printf(m, "\n%8.8x ", n + page); + for (i = 0; i < 4 && n <= max; i++, n += 4) + seq_printf(m, "%8.8x ", + rtl_get_bbreg(hw, (page | n), 0xffffffff)); + } + seq_puts(m, "\n"); + return 0; +} + +static int dl_proc_open_bb_9(struct inode *inode, struct file *file) +{ + return single_open(file, rtl_proc_get_bb_9, GET_INODE_DATA(inode)); +} + +static const struct file_operations file_ops_bb_9 = { + .open = dl_proc_open_bb_9, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release, +}; + +static int rtl_proc_get_bb_a(struct seq_file *m, void *v) +{ + struct ieee80211_hw *hw = m->private; + int i, n, page; + int max = 0xff; + page = 0xa00; + + for (n = 0; n <= max; ) { + seq_printf(m, "\n%8.8x ", n + page); + for (i = 0; i < 4 && n <= max; i++, n += 4) + seq_printf(m, "%8.8x ", + rtl_get_bbreg(hw, (page | n), 0xffffffff)); + } + seq_puts(m, "\n"); + return 0; +} + +static int dl_proc_open_bb_a(struct inode *inode, struct file *file) +{ + return single_open(file, rtl_proc_get_bb_a, GET_INODE_DATA(inode)); +} + +static const struct file_operations file_ops_bb_a = { + .open = dl_proc_open_bb_a, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release, +}; + +static int rtl_proc_get_bb_b(struct seq_file *m, void *v) +{ + struct ieee80211_hw *hw = m->private; + int i, n, page; + int max = 0xff; + page = 0xb00; + + for (n = 0; n <= max; ) { + seq_printf(m, "\n%8.8x ", n + page); + for (i = 0; i < 4 && n <= max; i++, n += 4) + seq_printf(m, "%8.8x ", + rtl_get_bbreg(hw, (page | n), 0xffffffff)); + } + seq_puts(m, "\n"); + return 0; +} + +static int dl_proc_open_bb_b(struct inode *inode, struct file *file) +{ + return single_open(file, rtl_proc_get_bb_b, GET_INODE_DATA(inode)); +} + +static const struct file_operations file_ops_bb_b = { + .open = dl_proc_open_bb_b, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release, +}; + +static int rtl_proc_get_bb_c(struct seq_file *m, void *v) +{ + struct ieee80211_hw *hw = m->private; + int i, n, page; + int max = 0xff; + page = 0xc00; + + for (n = 0; n <= max; ) { + seq_printf(m, "\n%8.8x ", n + page); + for (i = 0; i < 4 && n <= max; i++, n += 4) + seq_printf(m, "%8.8x ", + rtl_get_bbreg(hw, (page | n), 0xffffffff)); + } + seq_puts(m, "\n"); + return 0; +} + +static int dl_proc_open_bb_c(struct inode *inode, struct file *file) +{ + return single_open(file, rtl_proc_get_bb_c, GET_INODE_DATA(inode)); +} + +static const struct file_operations file_ops_bb_c = { + .open = dl_proc_open_bb_c, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release, +}; + +static int rtl_proc_get_bb_d(struct seq_file *m, void *v) +{ + struct ieee80211_hw *hw = m->private; + int i, n, page; + int max = 0xff; + page = 0xd00; + + for (n = 0; n <= max; ) { + seq_printf(m, "\n%8.8x ", n + page); + for (i = 0; i < 4 && n <= max; i++, n += 4) + seq_printf(m, "%8.8x ", + rtl_get_bbreg(hw, (page | n), 0xffffffff)); + } + seq_puts(m, "\n"); + return 0; +} + +static int dl_proc_open_bb_d(struct inode *inode, struct file *file) +{ + return single_open(file, rtl_proc_get_bb_d, GET_INODE_DATA(inode)); +} + +static const struct file_operations file_ops_bb_d = { + .open = dl_proc_open_bb_d, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release, +}; + +static int rtl_proc_get_bb_e(struct seq_file *m, void *v) +{ + struct ieee80211_hw *hw = m->private; + int i, n, page; + int max = 0xff; + page = 0xe00; + + for (n = 0; n <= max; ) { + seq_printf(m, "\n%8.8x ", n + page); + for (i = 0; i < 4 && n <= max; i++, n += 4) + seq_printf(m, "%8.8x ", + rtl_get_bbreg(hw, (page | n), 0xffffffff)); + } + seq_puts(m, "\n"); + return 0; +} + +static int dl_proc_open_bb_e(struct inode *inode, struct file *file) +{ + return single_open(file, rtl_proc_get_bb_e, GET_INODE_DATA(inode)); +} + +static const struct file_operations file_ops_bb_e = { + .open = dl_proc_open_bb_e, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release, +}; + +static int rtl_proc_get_bb_f(struct seq_file *m, void *v) +{ + struct ieee80211_hw *hw = m->private; + int i, n, page; + int max = 0xff; + page = 0xf00; + + for (n = 0; n <= max; ) { + seq_printf(m, "\n%8.8x ", n + page); + for (i = 0; i < 4 && n <= max; i++, n += 4) + seq_printf(m, "%8.8x ", + rtl_get_bbreg(hw, (page | n), 0xffffffff)); + } + seq_puts(m, "\n"); + return 0; +} + +static int dl_proc_open_bb_f(struct inode *inode, struct file *file) +{ + return single_open(file, rtl_proc_get_bb_f, GET_INODE_DATA(inode)); +} + +static const struct file_operations file_ops_bb_f = { + .open = dl_proc_open_bb_f, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release, +}; + +static int rtl_proc_get_reg_rf_a(struct seq_file *m, void *v) +{ + struct ieee80211_hw *hw = m->private; + int i, n; + int max = 0x40; + + for (n = 0; n <= max; ) { + seq_printf(m, "\n%8.8x ", n); + for (i = 0; i < 4 && n <= max; n += 1, i++) + seq_printf(m, "%8.8x ", + rtl_get_rfreg(hw, RF90_PATH_A, n, 0xffffffff)); + } + seq_puts(m, "\n"); + return 0; +} + +static int dl_proc_open_rf_a(struct inode *inode, struct file *file) +{ + return single_open(file, rtl_proc_get_reg_rf_a, GET_INODE_DATA(inode)); +} + +static const struct file_operations file_ops_rf_a = { + .open = dl_proc_open_rf_a, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release, +}; + +static int rtl_proc_get_reg_rf_b(struct seq_file *m, void *v) +{ + struct ieee80211_hw *hw = m->private; + int i, n; + int max = 0x40; + + for (n = 0; n <= max; ) { + seq_printf(m, "\n%8.8x ", n); + for (i = 0; i < 4 && n <= max; n += 1, i++) + seq_printf(m, "%8.8x ", + rtl_get_rfreg(hw, RF90_PATH_B, n, + 0xffffffff)); + } + seq_puts(m, "\n"); + return 0; +} + +static int dl_proc_open_rf_b(struct inode *inode, struct file *file) +{ + return single_open(file, rtl_proc_get_reg_rf_b, GET_INODE_DATA(inode)); +} + +static const struct file_operations file_ops_rf_b = { + .open = dl_proc_open_rf_b, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release, +}; + +static int rtl_proc_get_cam_register_1(struct seq_file *m, void *v) +{ + struct ieee80211_hw *hw = m->private; + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 target_cmd = 0; + u32 target_val=0; + u8 entry_i=0; + u32 ulstatus; + int i = 100, j = 0; + + /* This dump the current register page */ + seq_puts(m, + "\n#################### SECURITY CAM (0-10) ##################\n "); + + for (j = 0; j < 11; j++) { + seq_printf(m, "\nD: %2x > ", j); + for (entry_i = 0; entry_i < CAM_CONTENT_COUNT; entry_i++) { + /* polling bit, and No Write enable, and address */ + target_cmd = entry_i + CAM_CONTENT_COUNT * j; + target_cmd = target_cmd | BIT(31); + + /* Check polling bit is clear */ + while ((i--) >= 0) { + ulstatus = rtl_read_dword(rtlpriv, + rtlpriv->cfg->maps[RWCAM]); + if (ulstatus & BIT(31)) { + continue; + } else { + break; + } + } + + rtl_write_dword(rtlpriv, rtlpriv->cfg->maps[RWCAM], + target_cmd); + target_val = rtl_read_dword(rtlpriv, + rtlpriv->cfg->maps[RCAMO]); + seq_printf(m, "%8.8x ", target_val); + } + } + seq_puts(m, "\n"); + return 0; +} + +static int dl_proc_open_cam_1(struct inode *inode, struct file *file) +{ + return single_open(file, rtl_proc_get_cam_register_1, + GET_INODE_DATA(inode)); +} + +static const struct file_operations file_ops_cam_1 = { + .open = dl_proc_open_cam_1, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release, +}; + +static int rtl_proc_get_cam_register_2(struct seq_file *m, void *v) +{ + struct ieee80211_hw *hw = m->private; + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 target_cmd = 0; + u32 target_val = 0; + u8 entry_i = 0; + u32 ulstatus; + int i = 100, j = 0; + + /* This dump the current register page */ + seq_puts(m, + "\n################### SECURITY CAM (11-21) ##################\n "); + + for (j = 11; j < 22; j++) { + seq_printf(m, "\nD: %2x > ", j); + for (entry_i = 0; entry_i < CAM_CONTENT_COUNT; entry_i++) { + target_cmd = entry_i + CAM_CONTENT_COUNT * j; + target_cmd = target_cmd | BIT(31); + + while ((i--) >= 0) { + ulstatus = rtl_read_dword(rtlpriv, + rtlpriv->cfg->maps[RWCAM]); + if (ulstatus & BIT(31)) { + continue; + } else { + break; + } + } + + rtl_write_dword(rtlpriv, rtlpriv->cfg->maps[RWCAM], + target_cmd); + target_val = rtl_read_dword(rtlpriv, + rtlpriv->cfg->maps[RCAMO]); + seq_printf(m, "%8.8x ", target_val); + } + } + seq_puts(m, "\n"); + return 0; +} + +static int dl_proc_open_cam_2(struct inode *inode, struct file *file) +{ + return single_open(file, rtl_proc_get_cam_register_2, + GET_INODE_DATA(inode)); +} + +static const struct file_operations file_ops_cam_2 = { + .open = dl_proc_open_cam_2, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release, +}; + +static int rtl_proc_get_cam_register_3(struct seq_file *m, void *v) +{ + struct ieee80211_hw *hw = m->private; + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 target_cmd = 0; + u32 target_val = 0; + u8 entry_i = 0; + u32 ulstatus; + int i = 100, j = 0; + + /* This dump the current register page */ + seq_puts(m, + "\n################### SECURITY CAM (22-31) ##################\n "); + + for (j = 22; j < TOTAL_CAM_ENTRY; j++) { + seq_printf(m, "\nD: %2x > ", j); + for (entry_i = 0; entry_i < CAM_CONTENT_COUNT; entry_i++) { + target_cmd = entry_i+CAM_CONTENT_COUNT*j; + target_cmd = target_cmd | BIT(31); + + while ((i--) >= 0) { + ulstatus = rtl_read_dword(rtlpriv, + rtlpriv->cfg->maps[RWCAM]); + if (ulstatus & BIT(31)) { + continue; + } else { + break; + } + } + + rtl_write_dword(rtlpriv, rtlpriv->cfg->maps[RWCAM], + target_cmd); + target_val = rtl_read_dword(rtlpriv, + rtlpriv->cfg->maps[RCAMO]); + seq_printf(m, "%8.8x ", target_val); + } + } + seq_puts(m, "\n"); + return 0; +} + +static int dl_proc_open_cam_3(struct inode *inode, struct file *file) +{ + return single_open(file, rtl_proc_get_cam_register_3, + GET_INODE_DATA(inode)); +} + +static const struct file_operations file_ops_cam_3 = { + .open = dl_proc_open_cam_3, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release, +}; + +void rtl_proc_add_one(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + struct proc_dir_entry *entry; + + snprintf(rtlpriv->dbg.proc_name, 18, "%x-%x-%x-%x-%x-%x", + rtlefuse->dev_addr[0], rtlefuse->dev_addr[1], + rtlefuse->dev_addr[2], rtlefuse->dev_addr[3], + rtlefuse->dev_addr[4], rtlefuse->dev_addr[5]); + + rtlpriv->dbg.proc_dir = proc_mkdir(rtlpriv->dbg.proc_name, proc_topdir); + if (!rtlpriv->dbg.proc_dir) { + RT_TRACE(COMP_INIT, DBG_EMERG, ("Unable to init " + "/proc/net/%s/%s\n", rtlpriv->cfg->name, + rtlpriv->dbg.proc_name)); + return; + } + + entry = proc_create_data("mac-0", S_IFREG | S_IRUGO, + rtlpriv->dbg.proc_dir, &file_ops_mac_0, hw); + if (!entry) + RT_TRACE(COMP_INIT, DBG_EMERG, + ("Unable to initialize /proc/net/%s/%s/mac-0\n", + rtlpriv->cfg->name, rtlpriv->dbg.proc_name)); + + entry = proc_create_data("mac-1", S_IFREG | S_IRUGO, + rtlpriv->dbg.proc_dir, &file_ops_mac_1, hw); + if (!entry) + RT_TRACE(COMP_INIT, COMP_ERR, + ("Unable to initialize /proc/net/%s/%s/mac-1\n", + rtlpriv->cfg->name, rtlpriv->dbg.proc_name)); + + entry = proc_create_data("mac-2", S_IFREG | S_IRUGO, + rtlpriv->dbg.proc_dir, &file_ops_mac_2, hw); + if (!entry) + RT_TRACE(COMP_INIT, COMP_ERR, + ("Unable to initialize /proc/net/%s/%s/mac-2\n", + rtlpriv->cfg->name, rtlpriv->dbg.proc_name)); + + entry = proc_create_data("mac-3", S_IFREG | S_IRUGO, + rtlpriv->dbg.proc_dir, &file_ops_mac_3, hw); + if (!entry) + RT_TRACE(COMP_INIT, COMP_ERR, + ("Unable to initialize /proc/net/%s/%s/mac-3\n", + rtlpriv->cfg->name, rtlpriv->dbg.proc_name)); + + entry = proc_create_data("mac-4", S_IFREG | S_IRUGO, + rtlpriv->dbg.proc_dir, &file_ops_mac_4, hw); + if (!entry) + RT_TRACE(COMP_INIT, COMP_ERR, + ("Unable to initialize /proc/net/%s/%s/mac-4\n", + rtlpriv->cfg->name, rtlpriv->dbg.proc_name)); + + entry = proc_create_data("mac-5", S_IFREG | S_IRUGO, + rtlpriv->dbg.proc_dir, &file_ops_mac_5, hw); + if (!entry) + RT_TRACE(COMP_INIT, COMP_ERR, + ("Unable to initialize /proc/net/%s/%s/mac-5\n", + rtlpriv->cfg->name, rtlpriv->dbg.proc_name)); + + entry = proc_create_data("mac-6", S_IFREG | S_IRUGO, + rtlpriv->dbg.proc_dir, &file_ops_mac_6, hw); + if (!entry) + RT_TRACE(COMP_INIT, COMP_ERR, + ("Unable to initialize /proc/net/%s/%s/mac-6\n", + rtlpriv->cfg->name, rtlpriv->dbg.proc_name)); + + entry = proc_create_data("mac-7", S_IFREG | S_IRUGO, + rtlpriv->dbg.proc_dir, &file_ops_mac_7, hw); + if (!entry) + RT_TRACE(COMP_INIT, COMP_ERR, + ("Unable to initialize /proc/net/%s/%s/mac-7\n", + rtlpriv->cfg->name, rtlpriv->dbg.proc_name)); + + entry = proc_create_data("bb-8", S_IFREG | S_IRUGO, + rtlpriv->dbg.proc_dir, &file_ops_bb_8, hw); + if (!entry) + RT_TRACE(COMP_INIT, COMP_ERR, + ("Unable to initialize /proc/net/%s/%s/bb-8\n", + rtlpriv->cfg->name, rtlpriv->dbg.proc_name)); + + entry = proc_create_data("bb-9", S_IFREG | S_IRUGO, + rtlpriv->dbg.proc_dir, &file_ops_bb_9, hw); + if (!entry) + RT_TRACE(COMP_INIT, COMP_ERR, + ("Unable to initialize /proc/net/%s/%s/bb-9\n", + rtlpriv->cfg->name, rtlpriv->dbg.proc_name)); + + entry = proc_create_data("bb-a", S_IFREG | S_IRUGO, + rtlpriv->dbg.proc_dir, &file_ops_bb_a, hw); + if (!entry) + RT_TRACE(COMP_INIT, COMP_ERR, + ("Unable to initialize /proc/net/%s/%s/bb-a\n", + rtlpriv->cfg->name, rtlpriv->dbg.proc_name)); + + entry = proc_create_data("bb-b", S_IFREG | S_IRUGO, + rtlpriv->dbg.proc_dir, &file_ops_bb_b, hw); + if (!entry) + RT_TRACE(COMP_INIT, COMP_ERR, + ("Unable to initialize /proc/net/%s/%s/bb-b\n", + rtlpriv->cfg->name, rtlpriv->dbg.proc_name)); + + entry = proc_create_data("bb-c", S_IFREG | S_IRUGO, + rtlpriv->dbg.proc_dir, &file_ops_bb_c, hw); + if (!entry) + RT_TRACE(COMP_INIT, COMP_ERR, + ("Unable to initialize /proc/net/%s/%s/bb-c\n", + rtlpriv->cfg->name, rtlpriv->dbg.proc_name)); + + entry = proc_create_data("bb-d", S_IFREG | S_IRUGO, + rtlpriv->dbg.proc_dir, &file_ops_bb_d, hw); + if (!entry) + RT_TRACE(COMP_INIT, COMP_ERR, + ("Unable to initialize /proc/net/%s/%s/bb-d\n", + rtlpriv->cfg->name, rtlpriv->dbg.proc_name)); + + entry = proc_create_data("bb-e", S_IFREG | S_IRUGO, + rtlpriv->dbg.proc_dir, &file_ops_bb_e, hw); + if (!entry) + RT_TRACE(COMP_INIT, COMP_ERR, + ("Unable to initialize /proc/net/%s/%s/bb-e\n", + rtlpriv->cfg->name, rtlpriv->dbg.proc_name)); + + entry = proc_create_data("bb-f", S_IFREG | S_IRUGO, + rtlpriv->dbg.proc_dir, &file_ops_bb_f, hw); + if (!entry) + RT_TRACE(COMP_INIT, COMP_ERR, + ("Unable to initialize /proc/net/%s/%s/bb-f\n", + rtlpriv->cfg->name, rtlpriv->dbg.proc_name)); + + entry = proc_create_data("rf-a", S_IFREG | S_IRUGO, + rtlpriv->dbg.proc_dir, &file_ops_rf_a, hw); + if (!entry) + RT_TRACE(COMP_INIT, COMP_ERR, + ("Unable to initialize /proc/net/%s/%s/rf-a\n", + rtlpriv->cfg->name, rtlpriv->dbg.proc_name)); + + entry = proc_create_data("rf-b", S_IFREG | S_IRUGO, + rtlpriv->dbg.proc_dir, &file_ops_rf_b, hw); + if (!entry) + RT_TRACE(COMP_INIT, COMP_ERR, + ("Unable to initialize /proc/net/%s/%s/rf-b\n", + rtlpriv->cfg->name, rtlpriv->dbg.proc_name)); + + entry = proc_create_data("cam-1", S_IFREG | S_IRUGO, + rtlpriv->dbg.proc_dir, &file_ops_cam_1, hw); + if (!entry) + RT_TRACE(COMP_INIT, COMP_ERR, + ("Unable to initialize /proc/net/%s/%s/cam-1\n", + rtlpriv->cfg->name, rtlpriv->dbg.proc_name)); + + entry = proc_create_data("cam-2", S_IFREG | S_IRUGO, + rtlpriv->dbg.proc_dir, &file_ops_cam_2, hw); + if (!entry) + RT_TRACE(COMP_INIT, COMP_ERR, + ("Unable to initialize /proc/net/%s/%s/cam-2\n", + rtlpriv->cfg->name, rtlpriv->dbg.proc_name)); + + entry = proc_create_data("cam-3", S_IFREG | S_IRUGO, + rtlpriv->dbg.proc_dir, &file_ops_cam_3, hw); + if (!entry) + RT_TRACE(COMP_INIT, COMP_ERR, + ("Unable to initialize /proc/net/%s/%s/cam-3\n", + rtlpriv->cfg->name, rtlpriv->dbg.proc_name)); +} + +void rtl_proc_remove_one(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + if (rtlpriv->dbg.proc_dir) { + remove_proc_entry("mac-0", rtlpriv->dbg.proc_dir); + remove_proc_entry("mac-1", rtlpriv->dbg.proc_dir); + remove_proc_entry("mac-2", rtlpriv->dbg.proc_dir); + remove_proc_entry("mac-3", rtlpriv->dbg.proc_dir); + remove_proc_entry("mac-4", rtlpriv->dbg.proc_dir); + remove_proc_entry("mac-5", rtlpriv->dbg.proc_dir); + remove_proc_entry("mac-6", rtlpriv->dbg.proc_dir); + remove_proc_entry("mac-7", rtlpriv->dbg.proc_dir); + remove_proc_entry("bb-8", rtlpriv->dbg.proc_dir); + remove_proc_entry("bb-9", rtlpriv->dbg.proc_dir); + remove_proc_entry("bb-a", rtlpriv->dbg.proc_dir); + remove_proc_entry("bb-b", rtlpriv->dbg.proc_dir); + remove_proc_entry("bb-c", rtlpriv->dbg.proc_dir); + remove_proc_entry("bb-d", rtlpriv->dbg.proc_dir); + remove_proc_entry("bb-e", rtlpriv->dbg.proc_dir); + remove_proc_entry("bb-f", rtlpriv->dbg.proc_dir); + remove_proc_entry("rf-a", rtlpriv->dbg.proc_dir); + remove_proc_entry("rf-b", rtlpriv->dbg.proc_dir); + remove_proc_entry("cam-1", rtlpriv->dbg.proc_dir); + remove_proc_entry("cam-2", rtlpriv->dbg.proc_dir); + remove_proc_entry("cam-3", rtlpriv->dbg.proc_dir); + + remove_proc_entry(rtlpriv->dbg.proc_name, proc_topdir); + + rtlpriv->dbg.proc_dir = NULL; + } +} + +void rtl_proc_add_topdir(void) +{ + proc_topdir = proc_mkdir("rtlwifi", init_net.proc_net); +} + +void rtl_proc_remove_topdir(void) +{ + if (proc_topdir) + remove_proc_entry("rtlwifi", init_net.proc_net); +} \ No newline at end of file --- linux-3.13.0.orig/drivers/staging/rtl8821ae/debug.h +++ linux-3.13.0/drivers/staging/rtl8821ae/debug.h @@ -0,0 +1,227 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * Tmis program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * Tmis program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * tmis program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA + * + * Tme full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#ifndef __RTL_DEBUG_H__ +#define __RTL_DEBUG_H__ + +/*-------------------------------------------------------------- + Debug level +--------------------------------------------------------------*/ +/* + *Fatal bug. + *For example, Tx/Rx/IO locked up, + *memory access violation, + *resource allocation failed, + *unexpected HW behavior, HW BUG + *and so on. + */ +#define DBG_EMERG 0 + +/* + *Abnormal, rare, or unexpeted cases. + *For example, Packet/IO Ctl canceled, + *device suprisely unremoved and so on. + */ +#define DBG_WARNING 2 + +/* + *Normal case driver developer should + *open, we can see link status like + *assoc/AddBA/DHCP/adapter start and + *so on basic and useful infromations. + */ +#define DBG_DMESG 3 + +/* + *Normal case with useful information + *about current SW or HW state. + *For example, Tx/Rx descriptor to fill, + *Tx/Rx descriptor completed status, + *SW protocol state change, dynamic + *mechanism state change and so on. + */ +#define DBG_LOUD 4 + +/* + *Normal case with detail execution + *flow or information. + */ +#define DBG_TRACE 5 + +/*-------------------------------------------------------------- + Define the rt_trace components +--------------------------------------------------------------*/ +#define COMP_ERR BIT(0) +#define COMP_FW BIT(1) +#define COMP_INIT BIT(2) /*For init/deinit */ +#define COMP_RECV BIT(3) /*For Rx. */ +#define COMP_SEND BIT(4) /*For Tx. */ +#define COMP_MLME BIT(5) /*For MLME. */ +#define COMP_SCAN BIT(6) /*For Scan. */ +#define COMP_INTR BIT(7) /*For interrupt Related. */ +#define COMP_LED BIT(8) /*For LED. */ +#define COMP_SEC BIT(9) /*For sec. */ +#define COMP_BEACON BIT(10) /*For beacon. */ +#define COMP_RATE BIT(11) /*For rate. */ +#define COMP_RXDESC BIT(12) /*For rx desc. */ +#define COMP_DIG BIT(13) /*For DIG */ +#define COMP_TXAGC BIT(14) /*For Tx power */ +#define COMP_HIPWR BIT(15) /*For High Power Mechanism */ +#define COMP_POWER BIT(16) /*For lps/ips/aspm. */ +#define COMP_POWER_TRACKING BIT(17) /*For TX POWER TRACKING */ +#define COMP_BB_POWERSAVING BIT(18) +#define COMP_SWAS BIT(19) /*For SW Antenna Switch */ +#define COMP_RF BIT(20) /*For RF. */ +#define COMP_TURBO BIT(21) /*For EDCA TURBO. */ +#define COMP_RATR BIT(22) +#define COMP_CMD BIT(23) +#define COMP_EFUSE BIT(24) +#define COMP_QOS BIT(25) +#define COMP_MAC80211 BIT(26) +#define COMP_REGD BIT(27) +#define COMP_CHAN BIT(28) +#define COMP_EASY_CONCURRENT BIT(29) +#define COMP_BT_COEXIST BIT(30) +#define COMP_IQK BIT(31) + +/*-------------------------------------------------------------- + Define the rt_print components +--------------------------------------------------------------*/ +/* Define EEPROM and EFUSE check module bit*/ +#define EEPROM_W BIT(0) +#define EFUSE_PG BIT(1) +#define EFUSE_READ_ALL BIT(2) + +/* Define init check for module bit*/ +#define INIT_EEPROM BIT(0) +#define INIT_TxPower BIT(1) +#define INIT_IQK BIT(2) +#define INIT_RF BIT(3) + +/* Define PHY-BB/RF/MAC check module bit */ +#define PHY_BBR BIT(0) +#define PHY_BBW BIT(1) +#define PHY_RFR BIT(2) +#define PHY_RFW BIT(3) +#define PHY_MACR BIT(4) +#define PHY_MACW BIT(5) +#define PHY_ALLR BIT(6) +#define PHY_ALLW BIT(7) +#define PHY_TXPWR BIT(8) +#define PHY_PWRDIFF BIT(9) + +/* Define Dynamic Mechanism check module bit --> FDM */ +#define WA_IOT BIT(0) +#define DM_PWDB BIT(1) +#define DM_MONITOR BIT(2) +#define DM_DIG BIT(3) +#define DM_EDCA_TURBO BIT(4) + +enum dbgp_flag_e { + FQOS = 0, + FTX = 1, + FRX = 2, + FSEC = 3, + FMGNT = 4, + FMLME = 5, + FRESOURCE = 6, + FBEACON = 7, + FISR = 8, + FPHY = 9, + FMP = 10, + FEEPROM = 11, + FPWR = 12, + FDM = 13, + FDBGCtrl = 14, + FC2H = 15, + FBT = 16, + FINIT = 17, + FIOCTL = 18, + DBGP_TYPE_MAX +}; + +#define RT_ASSERT(_exp,fmt) \ + do { \ + if(!(_exp)) { \ + printk(KERN_DEBUG "%s:%s(): ", KBUILD_MODNAME, \ + __func__); \ + printk fmt; \ + } \ + } while(0); + +#define RT_DISP(dbgtype, dbgflag, printstr) + +#define RT_TRACE(comp, level, fmt)\ + do { \ + if(unlikely(((comp) & rtlpriv->dbg.global_debugcomponents) && \ + ((level) <= rtlpriv->dbg.global_debuglevel))) {\ + printk(KERN_DEBUG "%s-%d:%s():<%lx-%x> ", \ + KBUILD_MODNAME, \ + rtlpriv->rtlhal.interfaceindex, __func__, \ + in_interrupt(), in_atomic()); \ + printk fmt; \ + }\ + } while(0); + +#define RTPRINT(rtlpriv, dbgtype, dbgflag, printstr) \ + do { \ + if (unlikely(rtlpriv->dbg.dbgp_type[dbgtype] & dbgflag)) { \ + printk(KERN_DEBUG "%s: ", KBUILD_MODNAME); \ + printk printstr; \ + } \ + } while(0); + +#define RT_PRINT_DATA(rtlpriv, _comp, _level, _titlestring, _hexdata, \ + _hexdatalen) \ + do {\ + if(unlikely(((_comp) & rtlpriv->dbg.global_debugcomponents ) &&\ + (_level <= rtlpriv->dbg.global_debuglevel ))) { \ + int __i; \ + u8* ptr = (u8*)_hexdata; \ + printk(KERN_DEBUG "%s: ", KBUILD_MODNAME); \ + printk(KERN_DEBUG "In process \"%s\" (pid %i):", \ + current->comm, \ + current->pid); \ + printk(_titlestring); \ + for( __i=0; __i<(int)_hexdatalen; __i++ ) { \ + printk("%02X%s", ptr[__i], (((__i + 1) % 4) \ + == 0)?" ":" ");\ + if (((__i + 1) % 16) == 0) \ + printk("\n"); \ + } \ + printk(KERN_DEBUG "\n"); \ + } \ + } while(0); + +void rtl_dbgp_flag_init(struct ieee80211_hw *hw); +void rtl_proc_add_one(struct ieee80211_hw *hw); +void rtl_proc_remove_one(struct ieee80211_hw *hw); +void rtl_proc_add_topdir(void); +void rtl_proc_remove_topdir(void); +#endif --- linux-3.13.0.orig/drivers/staging/rtl8821ae/efuse.c +++ linux-3.13.0/drivers/staging/rtl8821ae/efuse.c @@ -0,0 +1,1285 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * Tmis program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * Tmis program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * tmis program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA + * + * Tme full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ +#include "wifi.h" +#include "efuse.h" +#include "btcoexist/halbt_precomp.h" +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0)) +#include +#endif + +static const u8 MAX_PGPKT_SIZE = 9; +static const u8 PGPKT_DATA_SIZE = 8; +static const int EFUSE_MAX_SIZE = 512; + +static const struct efuse_map RTL8712_SDIO_EFUSE_TABLE[] = { + {0, 0, 0, 2}, + {0, 1, 0, 2}, + {0, 2, 0, 2}, + {1, 0, 0, 1}, + {1, 0, 1, 1}, + {1, 1, 0, 1}, + {1, 1, 1, 3}, + {1, 3, 0, 17}, + {3, 3, 1, 48}, + {10, 0, 0, 6}, + {10, 3, 0, 1}, + {10, 3, 1, 1}, + {11, 0, 0, 28} +}; + +static void efuse_shadow_read_1byte(struct ieee80211_hw *hw, u16 offset, + u8 * value); +static void efuse_shadow_read_2byte(struct ieee80211_hw *hw, u16 offset, + u16 * value); +static void efuse_shadow_read_4byte(struct ieee80211_hw *hw, u16 offset, + u32 * value); +static void efuse_shadow_write_1byte(struct ieee80211_hw *hw, u16 offset, + u8 value); +static void efuse_shadow_write_2byte(struct ieee80211_hw *hw, u16 offset, + u16 value); +static void efuse_shadow_write_4byte(struct ieee80211_hw *hw, u16 offset, + u32 value); +static int efuse_one_byte_write(struct ieee80211_hw *hw, u16 addr, + u8 data); +static void efuse_read_all_map(struct ieee80211_hw *hw, u8 * efuse); +static int efuse_pg_packet_read(struct ieee80211_hw *hw, u8 offset, + u8 *data); +static int efuse_pg_packet_write(struct ieee80211_hw *hw, u8 offset, + u8 word_en, u8 * data); +static void efuse_word_enable_data_read(u8 word_en, u8 * sourdata, + u8 * targetdata); +static u8 efuse_word_enable_data_write(struct ieee80211_hw *hw, + u16 efuse_addr, u8 word_en, u8 * data); +static void efuse_power_switch(struct ieee80211_hw *hw, u8 bwrite, + u8 pwrstate); +static u16 efuse_get_current_size(struct ieee80211_hw *hw); +static u8 efuse_calculate_word_cnts(u8 word_en); + +void efuse_initialize(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 bytetemp; + u8 temp; + + bytetemp = rtl_read_byte(rtlpriv, rtlpriv->cfg->maps[SYS_FUNC_EN] + 1); + temp = bytetemp | 0x20; + rtl_write_byte(rtlpriv, rtlpriv->cfg->maps[SYS_FUNC_EN] + 1, temp); + + bytetemp = rtl_read_byte(rtlpriv, rtlpriv->cfg->maps[SYS_ISO_CTRL] + 1); + temp = bytetemp & 0xFE; + rtl_write_byte(rtlpriv, rtlpriv->cfg->maps[SYS_ISO_CTRL] + 1, temp); + + bytetemp = rtl_read_byte(rtlpriv, rtlpriv->cfg->maps[EFUSE_TEST] + 3); + temp = bytetemp | 0x80; + rtl_write_byte(rtlpriv, rtlpriv->cfg->maps[EFUSE_TEST] + 3, temp); + + rtl_write_byte(rtlpriv, 0x2F8, 0x3); + + rtl_write_byte(rtlpriv, rtlpriv->cfg->maps[EFUSE_CTRL] + 3, 0x72); + +} + +u8 efuse_read_1byte(struct ieee80211_hw *hw, u16 address) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 data; + u8 bytetemp; + u8 temp; + u32 k = 0; + const u32 efuse_real_content_len = + rtlpriv->cfg->maps[EFUSE_REAL_CONTENT_SIZE]; + + if (address < efuse_real_content_len) { + temp = address & 0xFF; + rtl_write_byte(rtlpriv, rtlpriv->cfg->maps[EFUSE_CTRL] + 1, + temp); + bytetemp = rtl_read_byte(rtlpriv, + rtlpriv->cfg->maps[EFUSE_CTRL] + 2); + temp = ((address >> 8) & 0x03) | (bytetemp & 0xFC); + rtl_write_byte(rtlpriv, rtlpriv->cfg->maps[EFUSE_CTRL] + 2, + temp); + + bytetemp = rtl_read_byte(rtlpriv, + rtlpriv->cfg->maps[EFUSE_CTRL] + 3); + temp = bytetemp & 0x7F; + rtl_write_byte(rtlpriv, rtlpriv->cfg->maps[EFUSE_CTRL] + 3, + temp); + + bytetemp = rtl_read_byte(rtlpriv, + rtlpriv->cfg->maps[EFUSE_CTRL] + 3); + while (!(bytetemp & 0x80)) { + bytetemp = rtl_read_byte(rtlpriv, + rtlpriv->cfg-> + maps[EFUSE_CTRL] + 3); + k++; + if (k == 1000) { + k = 0; + break; + } + } + data = rtl_read_byte(rtlpriv, rtlpriv->cfg->maps[EFUSE_CTRL]); + return data; + } else + return 0xFF; + +} +//EXPORT_SYMBOL(efuse_read_1byte); + +void efuse_write_1byte(struct ieee80211_hw *hw, u16 address, u8 value) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 bytetemp; + u8 temp; + u32 k = 0; + const u32 efuse_real_content_len = + rtlpriv->cfg->maps[EFUSE_REAL_CONTENT_SIZE]; + + RT_TRACE(COMP_EFUSE, DBG_LOUD, + ("Addr=%x Data =%x\n", address, value)); + + if (address < efuse_real_content_len) { + rtl_write_byte(rtlpriv, rtlpriv->cfg->maps[EFUSE_CTRL], value); + + temp = address & 0xFF; + rtl_write_byte(rtlpriv, rtlpriv->cfg->maps[EFUSE_CTRL] + 1, + temp); + bytetemp = rtl_read_byte(rtlpriv, + rtlpriv->cfg->maps[EFUSE_CTRL] + 2); + + temp = ((address >> 8) & 0x03) | (bytetemp & 0xFC); + rtl_write_byte(rtlpriv, + rtlpriv->cfg->maps[EFUSE_CTRL] + 2, temp); + + bytetemp = rtl_read_byte(rtlpriv, + rtlpriv->cfg->maps[EFUSE_CTRL] + 3); + temp = bytetemp | 0x80; + rtl_write_byte(rtlpriv, + rtlpriv->cfg->maps[EFUSE_CTRL] + 3, temp); + + bytetemp = rtl_read_byte(rtlpriv, + rtlpriv->cfg->maps[EFUSE_CTRL] + 3); + + while (bytetemp & 0x80) { + bytetemp = rtl_read_byte(rtlpriv, + rtlpriv->cfg-> + maps[EFUSE_CTRL] + 3); + k++; + if (k == 100) { + k = 0; + break; + } + } + } + +} + +void read_efuse_byte(struct ieee80211_hw *hw, u16 _offset, u8 *pbuf) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 value32; + u8 readbyte; + u16 retry; + + rtl_write_byte(rtlpriv, rtlpriv->cfg->maps[EFUSE_CTRL] + 1, + (_offset & 0xff)); + readbyte = rtl_read_byte(rtlpriv, rtlpriv->cfg->maps[EFUSE_CTRL] + 2); + rtl_write_byte(rtlpriv, rtlpriv->cfg->maps[EFUSE_CTRL] + 2, + ((_offset >> 8) & 0x03) | (readbyte & 0xfc)); + + readbyte = rtl_read_byte(rtlpriv, rtlpriv->cfg->maps[EFUSE_CTRL] + 3); + rtl_write_byte(rtlpriv, rtlpriv->cfg->maps[EFUSE_CTRL] + 3, + (readbyte & 0x7f)); + + retry = 0; + value32 = rtl_read_dword(rtlpriv, rtlpriv->cfg->maps[EFUSE_CTRL]); + while (!(((value32 >> 24) & 0xff) & 0x80) && (retry < 10000)) { + value32 = rtl_read_dword(rtlpriv, + rtlpriv->cfg->maps[EFUSE_CTRL]); + retry++; + } + + udelay(50); + value32 = rtl_read_dword(rtlpriv, rtlpriv->cfg->maps[EFUSE_CTRL]); + + *pbuf = (u8) (value32 & 0xff); +} + +void read_efuse(struct ieee80211_hw *hw, u16 _offset, u16 _size_byte, u8 *pbuf) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + u8 efuse_tbl[rtlpriv->cfg->maps[EFUSE_HWSET_MAX_SIZE]]; + u8 rtemp8[1]; + u16 efuse_addr = 0; + u8 offset, wren; + u8 u1temp = 0; + u16 i; + u16 j; + const u16 efuse_max_section = + rtlpriv->cfg->maps[EFUSE_MAX_SECTION_MAP]; + const u32 efuse_real_content_len = + rtlpriv->cfg->maps[EFUSE_REAL_CONTENT_SIZE]; + u16 efuse_word[efuse_max_section][EFUSE_MAX_WORD_UNIT]; + u16 efuse_utilized = 0; + u8 efuse_usage; + + if ((_offset + _size_byte) > rtlpriv->cfg->maps[EFUSE_HWSET_MAX_SIZE]) { + RT_TRACE(COMP_EFUSE, DBG_LOUD, + ("read_efuse(): Invalid offset(%#x) with read " + "bytes(%#x)!!\n", _offset, _size_byte)); + return; + } + + for (i = 0; i < efuse_max_section; i++) + for (j = 0; j < EFUSE_MAX_WORD_UNIT; j++) + efuse_word[i][j] = 0xFFFF; + + read_efuse_byte(hw, efuse_addr, rtemp8); + if (*rtemp8 != 0xFF) { + efuse_utilized++; + RTPRINT(rtlpriv, FEEPROM, EFUSE_READ_ALL, + ("Addr=%d\n", efuse_addr)); + efuse_addr++; + } + + while ((*rtemp8 != 0xFF) && (efuse_addr < efuse_real_content_len)) { + /* Check PG header for section num. */ + if((*rtemp8 & 0x1F ) == 0x0F) {/* extended header */ + u1temp =( (*rtemp8 & 0xE0) >> 5); + read_efuse_byte(hw, efuse_addr, rtemp8); + + if((*rtemp8 & 0x0F) == 0x0F) { + efuse_addr++; + read_efuse_byte(hw, efuse_addr, rtemp8); + + if (*rtemp8 != 0xFF && + (efuse_addr < efuse_real_content_len)) { + efuse_addr++; + } + continue; + } else { + offset = ((*rtemp8 & 0xF0) >> 1) | u1temp; + wren = (*rtemp8 & 0x0F); + efuse_addr++; + } + } else { + offset = ((*rtemp8 >> 4) & 0x0f); + wren = (*rtemp8 & 0x0f); + } + + if (offset < efuse_max_section) { + RTPRINT(rtlpriv, FEEPROM, EFUSE_READ_ALL, + ("offset-%d Worden=%x\n", offset, wren)); + + for (i = 0; i < EFUSE_MAX_WORD_UNIT; i++) { + if (!(wren & 0x01)) { + RTPRINT(rtlpriv, FEEPROM, + EFUSE_READ_ALL, ("Addr=%d\n", + efuse_addr)); + + read_efuse_byte(hw, efuse_addr, rtemp8); + efuse_addr++; + efuse_utilized++; + efuse_word[offset][i] = (*rtemp8 & + 0xff); + + if (efuse_addr >= + efuse_real_content_len) + break; + + RTPRINT(rtlpriv, FEEPROM, + EFUSE_READ_ALL, ("Addr=%d\n", + efuse_addr)); + + read_efuse_byte(hw, efuse_addr, rtemp8); + efuse_addr++; + efuse_utilized++; + efuse_word[offset][i] |= + (((u16) * rtemp8 << 8) & 0xff00); + + if (efuse_addr >= efuse_real_content_len) + break; + } + + wren >>= 1; + } + } + + RTPRINT(rtlpriv, FEEPROM, EFUSE_READ_ALL, + ("Addr=%d\n", efuse_addr)); + read_efuse_byte(hw, efuse_addr, rtemp8); + if (*rtemp8 != 0xFF && (efuse_addr < efuse_real_content_len)) { + efuse_utilized++; + efuse_addr++; + } + } + + for (i = 0; i < efuse_max_section; i++) { + for (j = 0; j < EFUSE_MAX_WORD_UNIT; j++) { + efuse_tbl[(i * 8) + (j * 2)] = + (efuse_word[i][j] & 0xff); + efuse_tbl[(i * 8) + ((j * 2) + 1)] = + ((efuse_word[i][j] >> 8) & 0xff); + } + } + + for (i = 0; i < _size_byte; i++) + pbuf[i] = efuse_tbl[_offset + i]; + + rtlefuse->efuse_usedbytes = efuse_utilized; + efuse_usage = (u8) ((efuse_utilized * 100) / efuse_real_content_len); + rtlefuse->efuse_usedpercentage = efuse_usage; + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_EFUSE_BYTES, + (u8 *) & efuse_utilized); + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_EFUSE_USAGE, + (u8 *) & efuse_usage); +} + +bool efuse_shadow_update_chk(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + u8 section_idx, i, Base; + u16 words_need = 0, hdr_num = 0, totalbytes, efuse_used; + bool bwordchanged, bresult = true; + + for (section_idx = 0; section_idx < 16; section_idx++) { + Base = section_idx * 8; + bwordchanged = false; + + for (i = 0; i < 8; i = i + 2) { + if ((rtlefuse->efuse_map[EFUSE_INIT_MAP][Base + i] != + rtlefuse->efuse_map[EFUSE_MODIFY_MAP][Base + i]) || + (rtlefuse->efuse_map[EFUSE_INIT_MAP][Base + i + 1] != + rtlefuse->efuse_map[EFUSE_MODIFY_MAP][Base + i + + 1])) { + words_need++; + bwordchanged = true; + } + } + + if (bwordchanged == true) + hdr_num++; + } + + totalbytes = hdr_num + words_need * 2; + efuse_used = rtlefuse->efuse_usedbytes; + + if ((totalbytes + efuse_used) >= (EFUSE_MAX_SIZE - + rtlpriv->cfg->maps[EFUSE_OOB_PROTECT_BYTES_LEN])) + bresult = false; + + RT_TRACE(COMP_EFUSE, DBG_LOUD, + ("efuse_shadow_update_chk(): totalbytes(%#x), " + "hdr_num(%#x), words_need(%#x), efuse_used(%d)\n", + totalbytes, hdr_num, words_need, efuse_used)); + + return bresult; +} + +void efuse_shadow_read(struct ieee80211_hw *hw, u8 type, + u16 offset, u32 *value) +{ + if (type == 1) + efuse_shadow_read_1byte(hw, offset, (u8 *) value); + else if (type == 2) + efuse_shadow_read_2byte(hw, offset, (u16 *) value); + else if (type == 4) + efuse_shadow_read_4byte(hw, offset, (u32 *) value); + +} + +void efuse_shadow_write(struct ieee80211_hw *hw, u8 type, u16 offset, + u32 value) +{ + if (type == 1) + efuse_shadow_write_1byte(hw, offset, (u8) value); + else if (type == 2) + efuse_shadow_write_2byte(hw, offset, (u16) value); + else if (type == 4) + efuse_shadow_write_4byte(hw, offset, (u32) value); + +} + +bool efuse_shadow_update(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + u16 i, offset, base; + u8 word_en = 0x0F; + u8 first_pg = false; + + RT_TRACE(COMP_EFUSE, DBG_LOUD, ("\n")); + + if (!efuse_shadow_update_chk(hw)) { + efuse_read_all_map(hw, &rtlefuse->efuse_map[EFUSE_INIT_MAP][0]); + memcpy(&rtlefuse->efuse_map[EFUSE_MODIFY_MAP][0], + &rtlefuse->efuse_map[EFUSE_INIT_MAP][0], + rtlpriv->cfg->maps[EFUSE_HWSET_MAX_SIZE]); + + RT_TRACE(COMP_EFUSE, DBG_LOUD, + ("efuse out of capacity!!\n")); + return false; + } + efuse_power_switch(hw, true, true); + + for (offset = 0; offset < 16; offset++) { + + word_en = 0x0F; + base = offset * 8; + + for (i = 0; i < 8; i++) { + if (first_pg == true) { + + word_en &= ~(BIT(i / 2)); + + rtlefuse->efuse_map[EFUSE_INIT_MAP][base + i] = + rtlefuse->efuse_map[EFUSE_MODIFY_MAP][base + i]; + } else { + + if (rtlefuse->efuse_map[EFUSE_INIT_MAP][base + i] != + rtlefuse->efuse_map[EFUSE_MODIFY_MAP][base + i]) { + word_en &= ~(BIT(i / 2)); + + rtlefuse->efuse_map[EFUSE_INIT_MAP][base + i] = + rtlefuse->efuse_map[EFUSE_MODIFY_MAP][base + i]; + } + } + } + + if (word_en != 0x0F) { + u8 tmpdata[8]; + memcpy(tmpdata, (&rtlefuse->efuse_map[EFUSE_MODIFY_MAP][base]), 8); + RT_PRINT_DATA(rtlpriv, COMP_INIT, DBG_LOUD, + ("U-efuse\n"), tmpdata, 8); + + if (!efuse_pg_packet_write(hw, (u8) offset, word_en, + tmpdata)) { + RT_TRACE(COMP_ERR, DBG_WARNING, + ("PG section(%#x) fail!!\n", offset)); + break; + } + } + + } + + efuse_power_switch(hw, true, false); + efuse_read_all_map(hw, &rtlefuse->efuse_map[EFUSE_INIT_MAP][0]); + + memcpy(&rtlefuse->efuse_map[EFUSE_MODIFY_MAP][0], + &rtlefuse->efuse_map[EFUSE_INIT_MAP][0], + rtlpriv->cfg->maps[EFUSE_HWSET_MAX_SIZE]); + + RT_TRACE(COMP_EFUSE, DBG_LOUD, ("\n")); + return true; +} + +void rtl_efuse_shadow_map_update(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + + if (rtlefuse->autoload_failflag == true) { + memset((&rtlefuse->efuse_map[EFUSE_INIT_MAP][0]), + 0xFF, rtlpriv->cfg->maps[EFUSE_HWSET_MAX_SIZE]); + } else { + efuse_read_all_map(hw, &rtlefuse->efuse_map[EFUSE_INIT_MAP][0]); + } + + memcpy(&rtlefuse->efuse_map[EFUSE_MODIFY_MAP][0], + &rtlefuse->efuse_map[EFUSE_INIT_MAP][0], + rtlpriv->cfg->maps[EFUSE_HWSET_MAX_SIZE]); + +} +//EXPORT_SYMBOL(rtl_efuse_shadow_map_update); + +void efuse_force_write_vendor_Id(struct ieee80211_hw *hw) +{ + u8 tmpdata[8] = { 0xFF, 0xFF, 0xEC, 0x10, 0xFF, 0xFF, 0xFF, 0xFF }; + + efuse_power_switch(hw, true, true); + + efuse_pg_packet_write(hw, 1, 0xD, tmpdata); + + efuse_power_switch(hw, true, false); + +} + +void efuse_re_pg_section(struct ieee80211_hw *hw, u8 section_idx) +{ +} + +static void efuse_shadow_read_1byte(struct ieee80211_hw *hw, + u16 offset, u8 *value) +{ + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + *value = rtlefuse->efuse_map[EFUSE_MODIFY_MAP][offset]; +} + +static void efuse_shadow_read_2byte(struct ieee80211_hw *hw, + u16 offset, u16 *value) +{ + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + + *value = rtlefuse->efuse_map[EFUSE_MODIFY_MAP][offset]; + *value |= rtlefuse->efuse_map[EFUSE_MODIFY_MAP][offset + 1] << 8; + +} + +static void efuse_shadow_read_4byte(struct ieee80211_hw *hw, + u16 offset, u32 *value) +{ + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + + *value = rtlefuse->efuse_map[EFUSE_MODIFY_MAP][offset]; + *value |= rtlefuse->efuse_map[EFUSE_MODIFY_MAP][offset + 1] << 8; + *value |= rtlefuse->efuse_map[EFUSE_MODIFY_MAP][offset + 2] << 16; + *value |= rtlefuse->efuse_map[EFUSE_MODIFY_MAP][offset + 3] << 24; +} + +static void efuse_shadow_write_1byte(struct ieee80211_hw *hw, + u16 offset, u8 value) +{ + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + + rtlefuse->efuse_map[EFUSE_MODIFY_MAP][offset] = value; +} + +static void efuse_shadow_write_2byte(struct ieee80211_hw *hw, + u16 offset, u16 value) +{ + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + + rtlefuse->efuse_map[EFUSE_MODIFY_MAP][offset] = value & 0x00FF; + rtlefuse->efuse_map[EFUSE_MODIFY_MAP][offset + 1] = value >> 8; + +} + +static void efuse_shadow_write_4byte(struct ieee80211_hw *hw, + u16 offset, u32 value) +{ + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + + rtlefuse->efuse_map[EFUSE_MODIFY_MAP][offset] = + (u8) (value & 0x000000FF); + rtlefuse->efuse_map[EFUSE_MODIFY_MAP][offset + 1] = + (u8) ((value >> 8) & 0x0000FF); + rtlefuse->efuse_map[EFUSE_MODIFY_MAP][offset + 2] = + (u8) ((value >> 16) & 0x00FF); + rtlefuse->efuse_map[EFUSE_MODIFY_MAP][offset + 3] = + (u8) ((value >> 24) & 0xFF); + +} + +int efuse_one_byte_read(struct ieee80211_hw *hw, u16 addr, u8 *data) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 tmpidx = 0; + int bresult; + + rtl_write_byte(rtlpriv, rtlpriv->cfg->maps[EFUSE_CTRL] + 1, + (u8) (addr & 0xff)); + rtl_write_byte(rtlpriv, rtlpriv->cfg->maps[EFUSE_CTRL] + 2, + ((u8) ((addr >> 8) & 0x03)) | + (rtl_read_byte(rtlpriv, + rtlpriv->cfg->maps[EFUSE_CTRL] + 2) & + 0xFC)); + + rtl_write_byte(rtlpriv, rtlpriv->cfg->maps[EFUSE_CTRL] + 3, 0x72); + + while (!(0x80 & rtl_read_byte(rtlpriv, + rtlpriv->cfg->maps[EFUSE_CTRL] + 3)) + && (tmpidx < 100)) { + tmpidx++; + } + + if (tmpidx < 100) { + *data = rtl_read_byte(rtlpriv, rtlpriv->cfg->maps[EFUSE_CTRL]); + bresult = true; + } else { + *data = 0xff; + bresult = false; + } + return bresult; +} +//EXPORT_SYMBOL(efuse_one_byte_read); + +static int efuse_one_byte_write(struct ieee80211_hw *hw, u16 addr, u8 data) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 tmpidx = 0; + bool bresult; + + RT_TRACE(COMP_EFUSE, DBG_LOUD, + ("Addr = %x Data=%x\n", addr, data)); + + rtl_write_byte(rtlpriv, + rtlpriv->cfg->maps[EFUSE_CTRL] + 1, (u8) (addr & 0xff)); + rtl_write_byte(rtlpriv, rtlpriv->cfg->maps[EFUSE_CTRL] + 2, + (rtl_read_byte(rtlpriv, + rtlpriv->cfg->maps[EFUSE_CTRL] + + 2) & 0xFC) | (u8) ((addr >> 8) & 0x03)); + + rtl_write_byte(rtlpriv, rtlpriv->cfg->maps[EFUSE_CTRL], data); + rtl_write_byte(rtlpriv, rtlpriv->cfg->maps[EFUSE_CTRL] + 3, 0xF2); + + while ((0x80 & rtl_read_byte(rtlpriv, + rtlpriv->cfg->maps[EFUSE_CTRL] + 3)) + && (tmpidx < 100)) { + tmpidx++; + } + + if (tmpidx < 100) + bresult = true; + else + bresult = false; + + return bresult; +} + +static void efuse_read_all_map(struct ieee80211_hw *hw, u8 * efuse) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + efuse_power_switch(hw, false, true); + read_efuse(hw, 0, rtlpriv->cfg->maps[EFUSE_HWSET_MAX_SIZE], efuse); + efuse_power_switch(hw, false, false); +} + +static void efuse_read_data_case1(struct ieee80211_hw *hw, u16 *efuse_addr, + u8 efuse_data, u8 offset, u8 *tmpdata, + u8 *readstate) +{ + bool bdataempty = true; + u8 hoffset; + u8 tmpidx; + u8 hworden; + u8 word_cnts; + + hoffset = (efuse_data >> 4) & 0x0F; + hworden = efuse_data & 0x0F; + word_cnts = efuse_calculate_word_cnts(hworden); + + if (hoffset == offset) { + for (tmpidx = 0; tmpidx < word_cnts * 2; tmpidx++) { + if (efuse_one_byte_read(hw, *efuse_addr + 1 + tmpidx, + &efuse_data)) { + tmpdata[tmpidx] = efuse_data; + if (efuse_data != 0xff) + bdataempty = true; + } + } + + if (bdataempty == true) { + *readstate = PG_STATE_DATA; + } else { + *efuse_addr = *efuse_addr + (word_cnts * 2) + 1; + *readstate = PG_STATE_HEADER; + } + + } else { + *efuse_addr = *efuse_addr + (word_cnts * 2) + 1; + *readstate = PG_STATE_HEADER; + } +} + +static int efuse_pg_packet_read(struct ieee80211_hw *hw, u8 offset, u8 *data) +{ + u8 readstate = PG_STATE_HEADER; + + bool bcontinual = true; + + u8 efuse_data, word_cnts = 0; + u16 efuse_addr = 0; + u8 hworden = 0; + u8 tmpdata[8]; + + if (data == NULL) + return false; + if (offset > 15) + return false; + + memset(data, 0xff, PGPKT_DATA_SIZE * sizeof(u8)); + memset(tmpdata, 0xff, PGPKT_DATA_SIZE * sizeof(u8)); + + while (bcontinual && (efuse_addr < EFUSE_MAX_SIZE)) { + if (readstate & PG_STATE_HEADER) { + if (efuse_one_byte_read(hw, efuse_addr, &efuse_data) + && (efuse_data != 0xFF)) + efuse_read_data_case1(hw, &efuse_addr, efuse_data, offset, + tmpdata, &readstate); + else + bcontinual = false; + } else if (readstate & PG_STATE_DATA) { + efuse_word_enable_data_read(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 void efuse_write_data_case1(struct ieee80211_hw *hw, u16 *efuse_addr, + u8 efuse_data, u8 offset, int *bcontinual, + u8 *write_state, struct pgpkt_struct *target_pkt, + int *repeat_times, int *bresult, u8 word_en) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct pgpkt_struct tmp_pkt; + int bdataempty = true; + u8 originaldata[8 * sizeof(u8)]; + u8 badworden = 0x0F; + u8 match_word_en, tmp_word_en; + u8 tmpindex; + u8 tmp_header = efuse_data; + u8 tmp_word_cnts; + + tmp_pkt.offset = (tmp_header >> 4) & 0x0F; + tmp_pkt.word_en = tmp_header & 0x0F; + tmp_word_cnts = efuse_calculate_word_cnts(tmp_pkt.word_en); + + if (tmp_pkt.offset != target_pkt->offset) { + *efuse_addr = *efuse_addr + (tmp_word_cnts * 2) + 1; + *write_state = PG_STATE_HEADER; + } else { + for (tmpindex = 0; tmpindex < (tmp_word_cnts * 2); tmpindex++) { + if (efuse_one_byte_read(hw, + (*efuse_addr + 1 + tmpindex), + &efuse_data) && (efuse_data != 0xFF)) + bdataempty = false; + } + + if (bdataempty == false) { + *efuse_addr = *efuse_addr + (tmp_word_cnts * 2) + 1; + *write_state = PG_STATE_HEADER; + } else { + match_word_en = 0x0F; + if (!((target_pkt->word_en & BIT(0)) | + (tmp_pkt.word_en & BIT(0)))) + match_word_en &= (~BIT(0)); + + if (!((target_pkt->word_en & BIT(1)) | + (tmp_pkt.word_en & BIT(1)))) + match_word_en &= (~BIT(1)); + + if (!((target_pkt->word_en & BIT(2)) | + (tmp_pkt.word_en & BIT(2)))) + match_word_en &= (~BIT(2)); + + if (!((target_pkt->word_en & BIT(3)) | + (tmp_pkt.word_en & BIT(3)))) + match_word_en &= (~BIT(3)); + + if ((match_word_en & 0x0F) != 0x0F) { + badworden = efuse_word_enable_data_write(hw, + *efuse_addr + 1, + tmp_pkt.word_en, + target_pkt->data); + + if (0x0F != (badworden & 0x0F)) { + u8 reorg_offset = offset; + u8 reorg_worden = badworden; + efuse_pg_packet_write(hw, reorg_offset, + reorg_worden, + originaldata); + } + + tmp_word_en = 0x0F; + if ((target_pkt->word_en & BIT(0)) ^ + (match_word_en & BIT(0))) + tmp_word_en &= (~BIT(0)); + + if ((target_pkt->word_en & BIT(1)) ^ + (match_word_en & BIT(1))) + tmp_word_en &= (~BIT(1)); + + if ((target_pkt->word_en & BIT(2)) ^ + (match_word_en & BIT(2))) + tmp_word_en &= (~BIT(2)); + + if ((target_pkt->word_en & BIT(3)) ^ + (match_word_en & BIT(3))) + tmp_word_en &= (~BIT(3)); + + if ((tmp_word_en & 0x0F) != 0x0F) { + *efuse_addr = efuse_get_current_size(hw); + target_pkt->offset = offset; + target_pkt->word_en = tmp_word_en; + } else { + *bcontinual = false; + } + *write_state = PG_STATE_HEADER; + *repeat_times += 1; + if (*repeat_times > EFUSE_REPEAT_THRESHOLD_) { + *bcontinual = false; + *bresult = false; + } + } else { + *efuse_addr += (2 * tmp_word_cnts) + 1; + target_pkt->offset = offset; + target_pkt->word_en = word_en; + *write_state = PG_STATE_HEADER; + } + } + } + RTPRINT(rtlpriv, FEEPROM, EFUSE_PG, ("efuse PG_STATE_HEADER-1\n")); +} + +static void efuse_write_data_case2(struct ieee80211_hw *hw, u16 *efuse_addr, + int *bcontinual, u8 *write_state, + struct pgpkt_struct target_pkt, + int *repeat_times, int *bresult) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct pgpkt_struct tmp_pkt; + u8 pg_header; + u8 tmp_header; + u8 originaldata[8 * sizeof(u8)]; + u8 tmp_word_cnts; + u8 badworden = 0x0F; + + pg_header = ((target_pkt.offset << 4) & 0xf0) | target_pkt.word_en; + efuse_one_byte_write(hw, *efuse_addr, pg_header); + efuse_one_byte_read(hw, *efuse_addr, &tmp_header); + + if (tmp_header == pg_header) { + *write_state = PG_STATE_DATA; + } else if (tmp_header == 0xFF) { + *write_state = PG_STATE_HEADER; + *repeat_times += 1; + if (*repeat_times > EFUSE_REPEAT_THRESHOLD_) { + *bcontinual = false; + *bresult = false; + } + } else { + tmp_pkt.offset = (tmp_header >> 4) & 0x0F; + tmp_pkt.word_en = tmp_header & 0x0F; + + tmp_word_cnts = efuse_calculate_word_cnts(tmp_pkt.word_en); + + memset(originaldata, 0xff, 8 * sizeof(u8)); + + if (efuse_pg_packet_read(hw, tmp_pkt.offset, originaldata)) { + badworden = efuse_word_enable_data_write(hw, + *efuse_addr + 1, + tmp_pkt.word_en, + originaldata); + + if (0x0F != (badworden & 0x0F)) { + u8 reorg_offset = tmp_pkt.offset; + u8 reorg_worden = badworden; + efuse_pg_packet_write(hw, reorg_offset, + reorg_worden, + originaldata); + *efuse_addr = efuse_get_current_size(hw); + } else { + *efuse_addr = *efuse_addr + + (tmp_word_cnts * 2) + 1; + } + } else { + *efuse_addr = *efuse_addr + (tmp_word_cnts * 2) + 1; + } + + *write_state = PG_STATE_HEADER; + *repeat_times += 1; + if (*repeat_times > EFUSE_REPEAT_THRESHOLD_) { + *bcontinual = false; + *bresult = false; + } + + RTPRINT(rtlpriv, FEEPROM, EFUSE_PG, + ("efuse PG_STATE_HEADER-2\n")); + } +} + +static int efuse_pg_packet_write(struct ieee80211_hw *hw, + u8 offset, u8 word_en, u8 *data) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct pgpkt_struct target_pkt; + u8 write_state = PG_STATE_HEADER; + int bcontinual = true, bdataempty = true, bresult = true; + u16 efuse_addr = 0; + u8 efuse_data; + u8 target_word_cnts = 0; + u8 badworden = 0x0F; + static int repeat_times = 0; + + if (efuse_get_current_size(hw) >= (EFUSE_MAX_SIZE - + rtlpriv->cfg->maps[EFUSE_OOB_PROTECT_BYTES_LEN])) { + RTPRINT(rtlpriv, FEEPROM, EFUSE_PG, + ("efuse_pg_packet_write error \n")); + return false; + } + + target_pkt.offset = offset; + target_pkt.word_en = word_en; + + memset(target_pkt.data, 0xFF, 8 * sizeof(u8)); + + efuse_word_enable_data_read(word_en, data, target_pkt.data); + target_word_cnts = efuse_calculate_word_cnts(target_pkt.word_en); + + RTPRINT(rtlpriv, FEEPROM, EFUSE_PG, ("efuse Power ON\n")); + + while (bcontinual && (efuse_addr < (EFUSE_MAX_SIZE - + rtlpriv->cfg->maps[EFUSE_OOB_PROTECT_BYTES_LEN]))) { + + if (write_state == PG_STATE_HEADER) { + bdataempty = true; + badworden = 0x0F; + RTPRINT(rtlpriv, FEEPROM, EFUSE_PG, + ("efuse PG_STATE_HEADER\n")); + + if (efuse_one_byte_read(hw, efuse_addr, &efuse_data) && + (efuse_data != 0xFF)) + efuse_write_data_case1(hw, &efuse_addr, + efuse_data, offset, + &bcontinual, + &write_state, + &target_pkt, + &repeat_times, &bresult, + word_en); + else + efuse_write_data_case2(hw, &efuse_addr, + &bcontinual, + &write_state, + target_pkt, + &repeat_times, + &bresult); + + } else if (write_state == PG_STATE_DATA) { + RTPRINT(rtlpriv, FEEPROM, EFUSE_PG, + ("efuse PG_STATE_DATA\n")); + badworden = 0x0f; + badworden = + efuse_word_enable_data_write(hw, efuse_addr + 1, + target_pkt.word_en, + target_pkt.data); + + if ((badworden & 0x0F) == 0x0F) { + bcontinual = false; + } else { + efuse_addr = + efuse_addr + (2 * target_word_cnts) + 1; + + target_pkt.offset = offset; + target_pkt.word_en = badworden; + target_word_cnts = + efuse_calculate_word_cnts(target_pkt. + word_en); + write_state = PG_STATE_HEADER; + repeat_times++; + if (repeat_times > EFUSE_REPEAT_THRESHOLD_) { + bcontinual = false; + bresult = false; + } + RTPRINT(rtlpriv, FEEPROM, EFUSE_PG, + ("efuse PG_STATE_HEADER-3\n")); + } + } + } + + if (efuse_addr >= (EFUSE_MAX_SIZE - + rtlpriv->cfg->maps[EFUSE_OOB_PROTECT_BYTES_LEN])) { + RT_TRACE(COMP_EFUSE, DBG_LOUD, + ("efuse_addr(%#x) Out of size!!\n", efuse_addr)); + } + + return true; +} + +static void efuse_word_enable_data_read(u8 word_en, u8 * sourdata, + 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]; + } +} + +static u8 efuse_word_enable_data_write(struct ieee80211_hw *hw, + u16 efuse_addr, u8 word_en, u8 *data) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u16 tmpaddr; + u16 start_addr = efuse_addr; + u8 badworden = 0x0F; + u8 tmpdata[8]; + + memset(tmpdata, 0xff, PGPKT_DATA_SIZE); + RT_TRACE(COMP_EFUSE, DBG_LOUD, + ("word_en = %x efuse_addr=%x\n", word_en, efuse_addr)); + + if (!(word_en & BIT(0))) { + tmpaddr = start_addr; + efuse_one_byte_write(hw, start_addr++, data[0]); + efuse_one_byte_write(hw, start_addr++, data[1]); + + efuse_one_byte_read(hw, tmpaddr, &tmpdata[0]); + efuse_one_byte_read(hw, tmpaddr + 1, &tmpdata[1]); + if ((data[0] != tmpdata[0]) || (data[1] != tmpdata[1])) + badworden &= (~BIT(0)); + } + + if (!(word_en & BIT(1))) { + tmpaddr = start_addr; + efuse_one_byte_write(hw, start_addr++, data[2]); + efuse_one_byte_write(hw, start_addr++, data[3]); + + efuse_one_byte_read(hw, tmpaddr, &tmpdata[2]); + efuse_one_byte_read(hw, tmpaddr + 1, &tmpdata[3]); + if ((data[2] != tmpdata[2]) || (data[3] != tmpdata[3])) + badworden &= (~BIT(1)); + } + + if (!(word_en & BIT(2))) { + tmpaddr = start_addr; + efuse_one_byte_write(hw, start_addr++, data[4]); + efuse_one_byte_write(hw, start_addr++, data[5]); + + efuse_one_byte_read(hw, tmpaddr, &tmpdata[4]); + efuse_one_byte_read(hw, tmpaddr + 1, &tmpdata[5]); + if ((data[4] != tmpdata[4]) || (data[5] != tmpdata[5])) + badworden &= (~BIT(2)); + } + + if (!(word_en & BIT(3))) { + tmpaddr = start_addr; + efuse_one_byte_write(hw, start_addr++, data[6]); + efuse_one_byte_write(hw, start_addr++, data[7]); + + efuse_one_byte_read(hw, tmpaddr, &tmpdata[6]); + efuse_one_byte_read(hw, tmpaddr + 1, &tmpdata[7]); + if ((data[6] != tmpdata[6]) || (data[7] != tmpdata[7])) + badworden &= (~BIT(3)); + } + + return badworden; +} + +static void efuse_power_switch(struct ieee80211_hw *hw, u8 bwrite, u8 pwrstate) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + u8 tempval; + u16 tmpV16; + + if(rtlhal->hw_type == HARDWARE_TYPE_RTL8812AE) + { + if (pwrstate == true) + { + rtl_write_byte(rtlpriv, rtlpriv->cfg->maps[EFUSE_ACCESS], 0x69); + + // 1.2V Power: From VDDON with Power Cut(0x0000h[15]), defualt valid + tmpV16 = rtl_read_word(rtlpriv, + rtlpriv->cfg->maps[SYS_ISO_CTRL]); + + printk("SYS_ISO_CTRL=%04x.\n",tmpV16); + if( ! (tmpV16 & PWC_EV12V ) ){ + tmpV16 |= PWC_EV12V ; + //PlatformEFIOWrite2Byte(pAdapter,REG_SYS_ISO_CTRL,tmpV16); + } + // Reset: 0x0000h[28], default valid + tmpV16 = rtl_read_word(rtlpriv, rtlpriv->cfg->maps[SYS_FUNC_EN]); + printk("SYS_FUNC_EN=%04x.\n",tmpV16); + if( !(tmpV16 & FEN_ELDR) ){ + tmpV16 |= FEN_ELDR ; + rtl_write_byte(rtlpriv, rtlpriv->cfg->maps[SYS_FUNC_EN], tmpV16); + } + + // Clock: Gated(0x0008h[5]) 8M(0x0008h[1]) clock from ANA, default valid + tmpV16 = rtl_read_word(rtlpriv, rtlpriv->cfg->maps[SYS_CLK] ); + printk("SYS_CLK=%04x.\n",tmpV16); + if( (!(tmpV16 & LOADER_CLK_EN) ) ||(!(tmpV16 & ANA8M) ) ) + { + tmpV16 |= (LOADER_CLK_EN |ANA8M ) ; + rtl_write_byte(rtlpriv, rtlpriv->cfg->maps[SYS_CLK], tmpV16); + } + + if(bwrite == true) + { + // Enable LDO 2.5V before read/write action + tempval = rtl_read_word(rtlpriv, rtlpriv->cfg->maps[EFUSE_TEST] + 3); + printk("EFUSE_TEST=%04x.\n",tmpV16); + tempval &= ~(BIT(3) | BIT(4) |BIT(5) | BIT(6)); + tempval |= (VOLTAGE_V25 << 3); + tempval |= BIT(7); + rtl_write_byte(rtlpriv, rtlpriv->cfg->maps[EFUSE_TEST] + 3, tempval); + } + } + else + { + rtl_write_byte(rtlpriv, rtlpriv->cfg->maps[EFUSE_ACCESS], 0x00); + if(bwrite == true){ + // Disable LDO 2.5V after read/write action + tempval = rtl_read_word(rtlpriv, rtlpriv->cfg->maps[EFUSE_TEST] + 3); + rtl_write_byte(rtlpriv, rtlpriv->cfg->maps[EFUSE_TEST] + 3, (tempval & 0x7F)); + } + } + } + else + { + if (pwrstate == true && (rtlhal->hw_type != + HARDWARE_TYPE_RTL8192SE)) { + + if(rtlhal->hw_type == HARDWARE_TYPE_RTL8188EE) + rtl_write_byte(rtlpriv, rtlpriv->cfg->maps[EFUSE_ACCESS], + 0x69); + + tmpV16 = rtl_read_word(rtlpriv, + rtlpriv->cfg->maps[SYS_ISO_CTRL]); + if (!(tmpV16 & rtlpriv->cfg->maps[EFUSE_PWC_EV12V])) { + tmpV16 |= rtlpriv->cfg->maps[EFUSE_PWC_EV12V]; + rtl_write_word(rtlpriv, + rtlpriv->cfg->maps[SYS_ISO_CTRL], + tmpV16); + } + + tmpV16 = rtl_read_word(rtlpriv, + rtlpriv->cfg->maps[SYS_FUNC_EN]); + if (!(tmpV16 & rtlpriv->cfg->maps[EFUSE_FEN_ELDR])) { + tmpV16 |= rtlpriv->cfg->maps[EFUSE_FEN_ELDR]; + rtl_write_word(rtlpriv, + rtlpriv->cfg->maps[SYS_FUNC_EN], tmpV16); + } + + tmpV16 = rtl_read_word(rtlpriv, rtlpriv->cfg->maps[SYS_CLK]); + if ((!(tmpV16 & rtlpriv->cfg->maps[EFUSE_LOADER_CLK_EN])) || + (!(tmpV16 & rtlpriv->cfg->maps[EFUSE_ANA8M]))) { + tmpV16 |= (rtlpriv->cfg->maps[EFUSE_LOADER_CLK_EN] | + rtlpriv->cfg->maps[EFUSE_ANA8M]); + rtl_write_word(rtlpriv, + rtlpriv->cfg->maps[SYS_CLK], tmpV16); + } + } + + if (pwrstate == true) { + if (bwrite == true) { + tempval = rtl_read_byte(rtlpriv, + rtlpriv->cfg->maps[EFUSE_TEST] + + 3); + + if (rtlhal->hw_type != HARDWARE_TYPE_RTL8192SE) { + tempval &= 0x0F; + tempval |= (VOLTAGE_V25 << 4); + } + + rtl_write_byte(rtlpriv, + rtlpriv->cfg->maps[EFUSE_TEST] + 3, + (tempval | 0x80)); + } + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8192SE) { + rtl_write_byte(rtlpriv, rtlpriv->cfg->maps[EFUSE_CLK], + 0x03); + } + + } else { + if(rtlhal->hw_type == HARDWARE_TYPE_RTL8188EE) + rtl_write_byte(rtlpriv, rtlpriv->cfg->maps[EFUSE_ACCESS], 0); + + if (bwrite == true) { + tempval = rtl_read_byte(rtlpriv, + rtlpriv->cfg->maps[EFUSE_TEST] + + 3); + rtl_write_byte(rtlpriv, + rtlpriv->cfg->maps[EFUSE_TEST] + 3, + (tempval & 0x7F)); + } + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8192SE) { + rtl_write_byte(rtlpriv, rtlpriv->cfg->maps[EFUSE_CLK], + 0x02); + } + + } + } + +} + +static u16 efuse_get_current_size(struct ieee80211_hw *hw) +{ + int bcontinual = true; + u16 efuse_addr = 0; + u8 hoffset, hworden; + u8 efuse_data, word_cnts; + + while (bcontinual && efuse_one_byte_read(hw, efuse_addr, &efuse_data) + && (efuse_addr < EFUSE_MAX_SIZE)) { + if (efuse_data != 0xFF) { + hoffset = (efuse_data >> 4) & 0x0F; + hworden = efuse_data & 0x0F; + word_cnts = efuse_calculate_word_cnts(hworden); + efuse_addr = efuse_addr + (word_cnts * 2) + 1; + } else { + bcontinual = false; + } + } + + return efuse_addr; +} + +static u8 efuse_calculate_word_cnts(u8 word_en) +{ + u8 word_cnts = 0; + if (!(word_en & BIT(0))) + word_cnts++; + if (!(word_en & BIT(1))) + word_cnts++; + if (!(word_en & BIT(2))) + word_cnts++; + if (!(word_en & BIT(3))) + word_cnts++; + return word_cnts; +} + --- linux-3.13.0.orig/drivers/staging/rtl8821ae/efuse.h +++ linux-3.13.0/drivers/staging/rtl8821ae/efuse.h @@ -0,0 +1,130 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#ifndef __RTL_EFUSE_H_ +#define __RTL_EFUSE_H_ + +#define EFUSE_IC_ID_OFFSET 506 + +/* +#define EFUSE_REAL_CONTENT_LEN 512 +#define EFUSE_MAP_LEN 128 +#define EFUSE_MAX_SECTION 16 +#define EFUSE_MAX_WORD_UNIT 4 +#define EFUSE_IC_ID_OFFSET 506 +*/ + +#define EFUSE_MAX_WORD_UNIT 4 + +#define EFUSE_INIT_MAP 0 +#define EFUSE_MODIFY_MAP 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 _POWERON_DELAY_ +#define _PRE_EXECUTE_READ_CMD_ + +#define EFUSE_REPEAT_THRESHOLD_ 3 +#define EFUSE_ERROE_HANDLE 1 + +struct efuse_map { + u8 offset; + u8 word_start; + u8 byte_start; + u8 byte_cnts; +}; + +struct pgpkt_struct { + u8 offset; + u8 word_en; + u8 data[8]; +}; + +enum efuse_data_item { + EFUSE_CHIP_ID = 0, + EFUSE_LDO_SETTING, + EFUSE_CLK_SETTING, + EFUSE_SDIO_SETTING, + EFUSE_CCCR, + EFUSE_SDIO_MODE, + EFUSE_OCR, + EFUSE_F0CIS, + EFUSE_F1CIS, + EFUSE_MAC_ADDR, + EFUSE_EEPROM_VER, + EFUSE_CHAN_PLAN, + EFUSE_TXPW_TAB +}; + +enum { + VOLTAGE_V25 = 0x03, + LDOE25_SHIFT = 28, +}; + +struct efuse_priv { + u8 id[2]; + u8 ldo_setting[2]; + u8 clk_setting[2]; + u8 cccr; + u8 sdio_mode; + u8 ocr[3]; + u8 cis0[17]; + u8 cis1[48]; + u8 mac_addr[6]; + u8 eeprom_verno; + u8 channel_plan; + u8 tx_power_b[14]; + u8 tx_power_g[14]; +}; + +extern void read_efuse_byte(struct ieee80211_hw *hw, u16 _offset, u8 *pbuf); +extern void efuse_initialize(struct ieee80211_hw *hw); +extern u8 efuse_read_1byte(struct ieee80211_hw *hw, u16 address); +extern int efuse_one_byte_read(struct ieee80211_hw *hw, u16 addr, u8 *data); +extern void efuse_write_1byte(struct ieee80211_hw *hw, u16 address, u8 value); +extern void read_efuse(struct ieee80211_hw *hw, u16 _offset, + u16 _size_byte, u8 * pbuf); +extern void efuse_shadow_read(struct ieee80211_hw *hw, u8 type, + u16 offset, u32 * value); +extern void efuse_shadow_write(struct ieee80211_hw *hw, u8 type, + u16 offset, u32 value); +extern bool efuse_shadow_update(struct ieee80211_hw *hw); +extern bool efuse_shadow_update_chk(struct ieee80211_hw *hw); +extern void rtl_efuse_shadow_map_update(struct ieee80211_hw *hw); +extern void efuse_force_write_vendor_Id(struct ieee80211_hw *hw); +extern void efuse_re_pg_section(struct ieee80211_hw *hw, u8 section_idx); +#endif --- linux-3.13.0.orig/drivers/staging/rtl8821ae/pci.c +++ linux-3.13.0/drivers/staging/rtl8821ae/pci.c @@ -0,0 +1,2549 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#include "core.h" +#include "wifi.h" +#include "pci.h" +#include "base.h" +#include "ps.h" +#include "efuse.h" +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0)) +#include +#endif + +static const u16 pcibridge_vendors[PCI_BRIDGE_VENDOR_MAX] = { + INTEL_VENDOR_ID, + ATI_VENDOR_ID, + AMD_VENDOR_ID, + SIS_VENDOR_ID +}; + +static const u8 ac_to_hwq[] = { + VO_QUEUE, + VI_QUEUE, + BE_QUEUE, + BK_QUEUE +}; + +u8 _rtl_mac_to_hwqueue(struct ieee80211_hw *hw, + struct sk_buff *skb) +{ + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + u16 fc = rtl_get_fc(skb); + u8 queue_index = skb_get_queue_mapping(skb); + + if (unlikely(ieee80211_is_beacon(fc))) + return BEACON_QUEUE; + if (ieee80211_is_mgmt(fc) || ieee80211_is_ctl(fc)) + return MGNT_QUEUE; + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8192SE) + if (ieee80211_is_nullfunc(fc)) + return HIGH_QUEUE; + + return ac_to_hwq[queue_index]; +} + +/* Update PCI dependent default settings*/ +static void _rtl_pci_update_default_setting(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + u8 pcibridge_vendor = pcipriv->ndis_adapter.pcibridge_vendor; + u8 init_aspm; + + ppsc->reg_rfps_level = 0; + ppsc->b_support_aspm = 0; + + /*Update PCI ASPM setting */ + ppsc->const_amdpci_aspm = rtlpci->const_amdpci_aspm; + switch (rtlpci->const_pci_aspm) { + case 0: + /*No ASPM */ + break; + + case 1: + /*ASPM dynamically enabled/disable. */ + ppsc->reg_rfps_level |= RT_RF_LPS_LEVEL_ASPM; + break; + + case 2: + /*ASPM with Clock Req dynamically enabled/disable. */ + ppsc->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. + * */ + ppsc->reg_rfps_level &= ~(RT_RF_LPS_LEVEL_ASPM); + ppsc->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. + * */ + ppsc->reg_rfps_level &= ~(RT_RF_LPS_LEVEL_ASPM | + RT_RF_OFF_LEVL_CLK_REQ); + ppsc->reg_rfps_level |= RT_RF_PS_LEVEL_ALWAYS_ASPM; + break; + } + + ppsc->reg_rfps_level |= RT_RF_OFF_LEVL_HALT_NIC; + + /*Update Radio OFF setting */ + switch (rtlpci->const_hwsw_rfoff_d3) { + case 1: + if (ppsc->reg_rfps_level & RT_RF_LPS_LEVEL_ASPM) + ppsc->reg_rfps_level |= RT_RF_OFF_LEVL_ASPM; + break; + + case 2: + if (ppsc->reg_rfps_level & RT_RF_LPS_LEVEL_ASPM) + ppsc->reg_rfps_level |= RT_RF_OFF_LEVL_ASPM; + ppsc->reg_rfps_level |= RT_RF_OFF_LEVL_HALT_NIC; + break; + + case 3: + ppsc->reg_rfps_level |= RT_RF_OFF_LEVL_PCI_D3; + break; + } + + /*Set HW definition to determine if it supports ASPM. */ + switch (rtlpci->const_support_pciaspm) { + case 0:{ + /*Not support ASPM. */ + bool b_support_aspm = false; + ppsc->b_support_aspm = b_support_aspm; + break; + } + case 1:{ + /*Support ASPM. */ + bool b_support_aspm = true; + bool b_support_backdoor = true; + ppsc->b_support_aspm = b_support_aspm; + + /*if(priv->oem_id == RT_CID_TOSHIBA && + !priv->ndis_adapter.amd_l1_patch) + b_support_backdoor = false; */ + + ppsc->b_support_backdoor = b_support_backdoor; + + break; + } + case 2: + /*ASPM value set by chipset. */ + if (pcibridge_vendor == PCI_BRIDGE_VENDOR_INTEL) { + bool b_support_aspm = true; + ppsc->b_support_aspm = b_support_aspm; + } + break; + default: + RT_TRACE(COMP_ERR, DBG_EMERG, + ("switch case not process \n")); + break; + } + + /* toshiba aspm issue, toshiba will set aspm selfly + * so we should not set aspm in driver */ + pci_read_config_byte(rtlpci->pdev, 0x80, &init_aspm); + if (rtlpriv->rtlhal.hw_type == HARDWARE_TYPE_RTL8192SE && + init_aspm == 0x43) + ppsc->b_support_aspm = false; +} + +static bool _rtl_pci_platform_switch_device_pci_aspm(struct ieee80211_hw *hw, + u8 value) +{ + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + bool bresult = false; + + if (rtlhal->hw_type != HARDWARE_TYPE_RTL8192SE) + value |= 0x40; + + pci_write_config_byte(rtlpci->pdev, 0x80, value); + + return bresult; +} + +/*When we set 0x01 to enable clk request. Set 0x0 to disable clk req.*/ +static bool _rtl_pci_switch_clk_req(struct ieee80211_hw *hw, u8 value) +{ + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + bool bresult = false; + + pci_write_config_byte(rtlpci->pdev, 0x81, value); + bresult = true; + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8192SE) + udelay(100); + + return bresult; +} + +/*Disable RTL8192SE ASPM & Disable Pci Bridge ASPM*/ +static void rtl_pci_disable_aspm(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + u8 pcibridge_vendor = pcipriv->ndis_adapter.pcibridge_vendor; + u32 pcicfg_addrport = pcipriv->ndis_adapter.pcicfg_addrport; + u8 num4bytes = pcipriv->ndis_adapter.num4bytes; + /*Retrieve original configuration settings. */ + u8 linkctrl_reg = pcipriv->ndis_adapter.linkctrl_reg; + u16 pcibridge_linkctrlreg = pcipriv->ndis_adapter. + pcibridge_linkctrlreg; + u16 aspmlevel = 0; + + if (!ppsc->b_support_aspm) + return; + + if (pcibridge_vendor == PCI_BRIDGE_VENDOR_UNKNOWN) { + RT_TRACE(COMP_POWER, DBG_TRACE, + ("PCI(Bridge) UNKNOWN.\n")); + + return; + } + + if (ppsc->reg_rfps_level & RT_RF_OFF_LEVL_CLK_REQ) { + RT_CLEAR_PS_LEVEL(ppsc, RT_RF_OFF_LEVL_CLK_REQ); + _rtl_pci_switch_clk_req(hw, 0x0); + } + + if (1) { + /*for promising device will in L0 state after an I/O. */ + u8 tmp_u1b; + pci_read_config_byte(rtlpci->pdev, 0x80, &tmp_u1b); + } + + /*Set corresponding value. */ + aspmlevel |= BIT(0) | BIT(1); + linkctrl_reg &= ~aspmlevel; + pcibridge_linkctrlreg &= ~(BIT(0) | BIT(1)); + + _rtl_pci_platform_switch_device_pci_aspm(hw, linkctrl_reg); + udelay(50); + + /*4 Disable Pci Bridge ASPM */ + rtl_pci_raw_write_port_ulong(PCI_CONF_ADDRESS, + pcicfg_addrport + (num4bytes << 2)); + rtl_pci_raw_write_port_uchar(PCI_CONF_DATA, pcibridge_linkctrlreg); + + udelay(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. + */ +static void rtl_pci_enable_aspm(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + u8 pcibridge_vendor = pcipriv->ndis_adapter.pcibridge_vendor; + u32 pcicfg_addrport = pcipriv->ndis_adapter.pcicfg_addrport; + u8 num4bytes = pcipriv->ndis_adapter.num4bytes; + u16 aspmlevel; + u8 u_pcibridge_aspmsetting; + u8 u_device_aspmsetting; + + if (!ppsc->b_support_aspm) + return; + + if (pcibridge_vendor == PCI_BRIDGE_VENDOR_UNKNOWN) { + RT_TRACE(COMP_POWER, DBG_TRACE, + ("PCI(Bridge) UNKNOWN.\n")); + return; + } + + /*4 Enable Pci Bridge ASPM */ + rtl_pci_raw_write_port_ulong(PCI_CONF_ADDRESS, + pcicfg_addrport + (num4bytes << 2)); + + u_pcibridge_aspmsetting = + pcipriv->ndis_adapter.pcibridge_linkctrlreg | + rtlpci->const_hostpci_aspm_setting; + + if (pcibridge_vendor == PCI_BRIDGE_VENDOR_INTEL) + u_pcibridge_aspmsetting &= ~BIT(0); + + rtl_pci_raw_write_port_uchar(PCI_CONF_DATA, u_pcibridge_aspmsetting); + + RT_TRACE(COMP_INIT, DBG_LOUD, + ("PlatformEnableASPM(): Write reg[%x] = %x\n", + (pcipriv->ndis_adapter.pcibridge_pciehdr_offset + 0x10), + u_pcibridge_aspmsetting)); + + udelay(50); + + /*Get ASPM level (with/without Clock Req) */ + aspmlevel = rtlpci->const_devicepci_aspm_setting; + u_device_aspmsetting = pcipriv->ndis_adapter.linkctrl_reg; + + /*_rtl_pci_platform_switch_device_pci_aspm(dev,*/ + /*(priv->ndis_adapter.linkctrl_reg | ASPMLevel)); */ + + u_device_aspmsetting |= aspmlevel; + + _rtl_pci_platform_switch_device_pci_aspm(hw, u_device_aspmsetting); + + if (ppsc->reg_rfps_level & RT_RF_OFF_LEVL_CLK_REQ) { + _rtl_pci_switch_clk_req(hw, (ppsc->reg_rfps_level & + RT_RF_OFF_LEVL_CLK_REQ) ? 1 : 0); + RT_SET_PS_LEVEL(ppsc, RT_RF_OFF_LEVL_CLK_REQ); + } + udelay(100); +} + +static bool rtl_pci_get_amd_l1_patch(struct ieee80211_hw *hw) +{ + struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw); + u32 pcicfg_addrport = pcipriv->ndis_adapter.pcicfg_addrport; + + bool status = false; + u8 offset_e0; + unsigned offset_e4; + + rtl_pci_raw_write_port_ulong(PCI_CONF_ADDRESS, + pcicfg_addrport + 0xE0); + rtl_pci_raw_write_port_uchar(PCI_CONF_DATA, 0xA0); + + rtl_pci_raw_write_port_ulong(PCI_CONF_ADDRESS, + pcicfg_addrport + 0xE0); + rtl_pci_raw_read_port_uchar(PCI_CONF_DATA, &offset_e0); + + if (offset_e0 == 0xA0) { + rtl_pci_raw_write_port_ulong(PCI_CONF_ADDRESS, + pcicfg_addrport + 0xE4); + rtl_pci_raw_read_port_ulong(PCI_CONF_DATA, &offset_e4); + if (offset_e4 & BIT(23)) + status = true; + } + + return status; +} + +/**/ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35)) +static u8 _rtl_pci_get_pciehdr_offset(struct ieee80211_hw *hw) +{ + u8 capability_offset; + u8 num4bytes = 0x34/4; + struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw); + u32 pcicfg_addr_port = (pcipriv->ndis_adapter.pcibridge_busnum << 16)| + (pcipriv->ndis_adapter.pcibridge_devnum << 11)| + (pcipriv->ndis_adapter.pcibridge_funcnum << 8)| + (1 << 31); + + rtl_pci_raw_write_port_ulong(PCI_CONF_ADDRESS , pcicfg_addr_port + + (num4bytes << 2)); + rtl_pci_raw_read_port_uchar(PCI_CONF_DATA, &capability_offset); + while (capability_offset != 0) { + struct rtl_pci_capabilities_header capability_hdr; + + 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. + */ + rtl_pci_raw_write_port_ulong(PCI_CONF_ADDRESS , + pcicfg_addr_port + + (num4bytes << 2)); + rtl_pci_raw_read_port_ushort(PCI_CONF_DATA, + (u16*)&capability_hdr); + /* Found the PCI express capability. */ + if (capability_hdr.capability_id == + PCI_CAPABILITY_ID_PCI_EXPRESS) + break; + else + capability_offset = capability_hdr.next; + } + return capability_offset; +} +#endif +/**/ + +bool rtl_pci_check_buddy_priv(struct ieee80211_hw *hw, + struct rtl_priv **buddy_priv) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw); + bool b_find_buddy_priv = false; + struct rtl_priv *temp_priv = NULL; + struct rtl_pci_priv *temp_pcipriv = NULL; + + if (!list_empty(&rtlpriv->glb_var->glb_priv_list)) { + list_for_each_entry(temp_priv, &rtlpriv->glb_var->glb_priv_list, + list) { + if (temp_priv) { + temp_pcipriv = + (struct rtl_pci_priv *)temp_priv->priv; + RT_TRACE(COMP_INIT, DBG_LOUD, + (("pcipriv->ndis_adapter.funcnumber %x \n"), + pcipriv->ndis_adapter.funcnumber)); + RT_TRACE(COMP_INIT, DBG_LOUD, + (("temp_pcipriv->ndis_adapter.funcnumber %x \n"), + temp_pcipriv->ndis_adapter.funcnumber)); + + if ((pcipriv->ndis_adapter.busnumber == + temp_pcipriv->ndis_adapter.busnumber) && + (pcipriv->ndis_adapter.devnumber == + temp_pcipriv->ndis_adapter.devnumber) && + (pcipriv->ndis_adapter.funcnumber != + temp_pcipriv->ndis_adapter.funcnumber)) { + b_find_buddy_priv = true; + break; + } + } + } + } + + RT_TRACE(COMP_INIT, DBG_LOUD, + (("b_find_buddy_priv %d \n"), b_find_buddy_priv)); + + if (b_find_buddy_priv) + *buddy_priv = temp_priv; + + return b_find_buddy_priv; +} + +void rtl_pci_get_linkcontrol_field(struct ieee80211_hw *hw) +{ + struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw); + u8 capabilityoffset = pcipriv->ndis_adapter.pcibridge_pciehdr_offset; + u32 pcicfg_addrport = pcipriv->ndis_adapter.pcicfg_addrport; + u8 linkctrl_reg; + u8 num4bbytes; + + num4bbytes = (capabilityoffset + 0x10) / 4; + + /*Read Link Control Register */ + rtl_pci_raw_write_port_ulong(PCI_CONF_ADDRESS, + pcicfg_addrport + (num4bbytes << 2)); + rtl_pci_raw_read_port_uchar(PCI_CONF_DATA, &linkctrl_reg); + + pcipriv->ndis_adapter.pcibridge_linkctrlreg = linkctrl_reg; +} + +static void rtl_pci_parse_configuration(struct pci_dev *pdev, + struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw); + + 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->ndis_adapter.linkctrl_reg = linkctrl_reg; + + RT_TRACE(COMP_INIT, DBG_TRACE, + ("Link Control Register =%x\n", + pcipriv->ndis_adapter.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); +} + +static void rtl_pci_init_aspm(struct ieee80211_hw *hw) +{ + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + + _rtl_pci_update_default_setting(hw); + + if (ppsc->reg_rfps_level & RT_RF_PS_LEVEL_ALWAYS_ASPM) { + /*Always enable ASPM & Clock Req. */ + rtl_pci_enable_aspm(hw); + RT_SET_PS_LEVEL(ppsc, RT_RF_PS_LEVEL_ALWAYS_ASPM); + } + +} + +static void _rtl_pci_io_handler_init(struct device *dev, + struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + rtlpriv->io.dev = dev; + + rtlpriv->io.write8_async = pci_write8_async; + rtlpriv->io.write16_async = pci_write16_async; + rtlpriv->io.write32_async = pci_write32_async; + + rtlpriv->io.read8_sync = pci_read8_sync; + rtlpriv->io.read16_sync = pci_read16_sync; + rtlpriv->io.read32_sync = pci_read32_sync; + +} + +static bool _rtl_pci_update_earlymode_info(struct ieee80211_hw *hw, + struct sk_buff *skb, + struct rtl_tcb_desc *tcb_desc, + u8 tid) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + u8 additionlen = FCS_LEN; + struct sk_buff *next_skb; + + /* here open is 4, wep/tkip is 8, aes is 12*/ + if (info->control.hw_key) + additionlen += info->control.hw_key->icv_len; + + /* The most skb num is 6 */ + tcb_desc->empkt_num = 0; + spin_lock_bh(&rtlpriv->locks.waitq_lock); + skb_queue_walk(&rtlpriv->mac80211.skb_waitq[tid], next_skb) { + struct ieee80211_tx_info *next_info = + IEEE80211_SKB_CB(next_skb); + if (next_info->flags & IEEE80211_TX_CTL_AMPDU) { + tcb_desc->empkt_len[tcb_desc->empkt_num] = + next_skb->len + additionlen; + tcb_desc->empkt_num++; + } else { + break; + } + + if (skb_queue_is_last(&rtlpriv->mac80211.skb_waitq[tid], + next_skb)) + break; + + if (tcb_desc->empkt_num >= rtlhal->max_earlymode_num) + break; + } + spin_unlock_bh(&rtlpriv->locks.waitq_lock); + return true; +} + +/* just for early mode now */ +static void _rtl_pci_tx_chk_waitq(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + struct sk_buff *skb = NULL; + struct ieee80211_tx_info *info = NULL; + int tid; /* should be int */ + + if (!rtlpriv->rtlhal.b_earlymode_enable) + return; + if (rtlpriv->dm.supp_phymode_switch && + (rtlpriv->easy_concurrent_ctl.bswitch_in_process || + (rtlpriv->buddy_priv && + rtlpriv->buddy_priv->easy_concurrent_ctl.bswitch_in_process))) + return; + /* we juse use em for BE/BK/VI/VO */ + for (tid = 7; tid >= 0; tid--) { + u8 hw_queue = ac_to_hwq[rtl_tid_to_ac(hw, tid)]; + struct rtl8192_tx_ring *ring = &rtlpci->tx_ring[hw_queue]; + while (!mac->act_scanning && + rtlpriv->psc.rfpwr_state == ERFON) { + struct rtl_tcb_desc tcb_desc; + memset(&tcb_desc, 0, sizeof(struct rtl_tcb_desc)); + + spin_lock_bh(&rtlpriv->locks.waitq_lock); + if (!skb_queue_empty(&mac->skb_waitq[tid]) && + (ring->entries - skb_queue_len(&ring->queue) > + rtlhal->max_earlymode_num)) { + skb = skb_dequeue(&mac->skb_waitq[tid]); + } else { + spin_unlock_bh(&rtlpriv->locks.waitq_lock); + break; + } + spin_unlock_bh(&rtlpriv->locks.waitq_lock); + + /* Some macaddr can't do early mode. like + * multicast/broadcast/no_qos data */ + info = IEEE80211_SKB_CB(skb); + if (info->flags & IEEE80211_TX_CTL_AMPDU) + _rtl_pci_update_earlymode_info(hw, skb, + &tcb_desc, tid); + +/**/ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0)) + rtlpriv->intf_ops->adapter_tx(hw, skb, &tcb_desc); +#else +/**/ + rtlpriv->intf_ops->adapter_tx(hw, NULL, skb, &tcb_desc); +#endif +/**/ + } + } +} + +static void _rtl_pci_tx_isr(struct ieee80211_hw *hw, int prio) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + struct rtl8192_tx_ring *ring = &rtlpci->tx_ring[prio]; + + while (skb_queue_len(&ring->queue)) { + struct sk_buff *skb; + struct ieee80211_tx_info *info; + u16 fc; + u8 tid; + u8 *entry; + + + if (rtlpriv->use_new_trx_flow) + entry = (u8 *)(&ring->buffer_desc[ring->idx]); + else + entry = (u8 *)(&ring->desc[ring->idx]); + + if (!rtlpriv->cfg->ops->is_tx_desc_closed(hw, prio, ring->idx)) + return; + + ring->idx = (ring->idx + 1) % ring->entries; + + skb = __skb_dequeue(&ring->queue); + + pci_unmap_single(rtlpci->pdev, + le32_to_cpu(rtlpriv->cfg->ops-> + get_desc((u8 *) entry, true, + HW_DESC_TXBUFF_ADDR)), + skb->len, PCI_DMA_TODEVICE); + + /* remove early mode header */ + if(rtlpriv->rtlhal.b_earlymode_enable) + skb_pull(skb, EM_HDR_LEN); + + RT_TRACE((COMP_INTR | COMP_SEND), DBG_TRACE, + ("new ring->idx:%d, " + "free: skb_queue_len:%d, free: seq:%d\n", + ring->idx, + skb_queue_len(&ring->queue), + *(u16 *) (skb->data + 22))); + + if(prio == TXCMD_QUEUE) { + dev_kfree_skb(skb); + goto tx_status_ok; + + } + + /* for sw LPS, just after NULL skb send out, we can + * sure AP kown we are sleeped, our we should not let + * rf to sleep*/ + fc = rtl_get_fc(skb); + if (ieee80211_is_nullfunc(fc)) { + if(ieee80211_has_pm(fc)) { + rtlpriv->mac80211.offchan_deley = true; + rtlpriv->psc.state_inap = 1; + } else { + rtlpriv->psc.state_inap = 0; + } + } + if (ieee80211_is_action(fc)) { + struct ieee80211_mgmt_compat *action_frame = + (struct ieee80211_mgmt_compat *)skb->data; + if (action_frame->u.action.u.ht_smps.action == + WLAN_HT_ACTION_SMPS) { + dev_kfree_skb(skb); + goto tx_status_ok; + } + } + + /* update tid tx pkt num */ + tid = rtl_get_tid(skb); + if (tid <= 7) + rtlpriv->link_info.tidtx_inperiod[tid]++; + + info = IEEE80211_SKB_CB(skb); + ieee80211_tx_info_clear_status(info); + + info->flags |= IEEE80211_TX_STAT_ACK; + /*info->status.rates[0].count = 1; */ + + ieee80211_tx_status_irqsafe(hw, skb); + + if ((ring->entries - skb_queue_len(&ring->queue)) + == 2) { + + RT_TRACE(COMP_ERR, DBG_LOUD, + ("more desc left, wake" + "skb_queue@%d,ring->idx = %d," + "skb_queue_len = 0x%d\n", + prio, ring->idx, + skb_queue_len(&ring->queue))); + + ieee80211_wake_queue(hw, + skb_get_queue_mapping + (skb)); + } +tx_status_ok: + skb = NULL; + } + + if (((rtlpriv->link_info.num_rx_inperiod + + rtlpriv->link_info.num_tx_inperiod) > 8) || + (rtlpriv->link_info.num_rx_inperiod > 2)) { + rtl_lps_leave(hw); + } +} + +static int _rtl_pci_init_one_rxdesc(struct ieee80211_hw *hw, + u8 *entry, int rxring_idx, int desc_idx) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + u32 bufferaddress; + u8 tmp_one = 1; + struct sk_buff *skb; + + skb = dev_alloc_skb(rtlpci->rxbuffersize); + if (!skb) + return 0; + rtlpci->rx_ring[rxring_idx].rx_buf[desc_idx] = skb; + + /* just set skb->cb to mapping addr + * for pci_unmap_single use */ + *((dma_addr_t *) skb->cb) = pci_map_single(rtlpci->pdev, + skb_tail_pointer(skb), rtlpci->rxbuffersize, + PCI_DMA_FROMDEVICE); + bufferaddress = cpu_to_le32(*((dma_addr_t *) skb->cb)); + if (pci_dma_mapping_error(rtlpci->pdev, bufferaddress)) + return 0; + if (rtlpriv->use_new_trx_flow) { + rtlpriv->cfg->ops->set_desc(hw, (u8 *) entry, false, + HW_DESC_RX_PREPARE, + (u8 *) & bufferaddress); + } else { + rtlpriv->cfg->ops->set_desc(hw, (u8 *) entry, false, + HW_DESC_RXBUFF_ADDR, + (u8 *) & bufferaddress); + rtlpriv->cfg->ops->set_desc(hw, (u8 *) entry, false, + HW_DESC_RXPKT_LEN, + (u8 *) & rtlpci->rxbuffersize); + rtlpriv->cfg->ops->set_desc(hw, (u8 *) entry, false, + HW_DESC_RXOWN, + (u8 *) & tmp_one); + } + + return 1; +} + +/* inorder to receive 8K AMSDU we have set skb to + * 9100bytes in init rx ring, but if this packet is + * not a AMSDU, this so big packet will be sent to + * TCP/IP directly, this cause big packet ping fail + * like: "ping -s 65507", so here we will realloc skb + * based on the true size of packet, I think mac80211 + * do it will be better, but now mac80211 haven't */ + +/* but some platform will fail when alloc skb sometimes. + * in this condition, we will send the old skb to + * mac80211 directly, this will not cause any other + * issues, but only be losted by TCP/IP */ +static void _rtl_pci_rx_to_mac80211(struct ieee80211_hw *hw, + struct sk_buff *skb, struct ieee80211_rx_status rx_status) +{ + if (unlikely(!rtl_action_proc(hw, skb, false))) { + dev_kfree_skb_any(skb); + } else { + struct sk_buff *uskb = NULL; + u8 *pdata; + + uskb = dev_alloc_skb(skb->len + 128); + if (likely(uskb)) { + memcpy(IEEE80211_SKB_RXCB(uskb), &rx_status, + sizeof(rx_status)); + pdata = (u8 *)skb_put(uskb, skb->len); + memcpy(pdata, skb->data, skb->len); + dev_kfree_skb_any(skb); + + ieee80211_rx_irqsafe(hw, uskb); + } else { + ieee80211_rx_irqsafe(hw, skb); + } + } +} + +/*hsisr interrupt handler*/ +static void _rtl_pci_hs_interrupt(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + + rtl_write_byte(rtlpriv, rtlpriv->cfg->maps[MAC_HSISR], + rtl_read_byte(rtlpriv, rtlpriv->cfg->maps[MAC_HSISR]) | + rtlpci->sys_irq_mask); + + +} +static void _rtl_pci_rx_interrupt(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + int rxring_idx = RTL_PCI_RX_MPDU_QUEUE; + + struct ieee80211_rx_status rx_status = { 0 }; + unsigned int count = rtlpci->rxringcount; + bool unicast = false; + u8 hw_queue = 0; + unsigned int rx_remained_cnt; + u8 own; + u8 tmp_one; + + struct rtl_stats status = { + .signal = 0, + .noise = -98, + .rate = 0, + }; + + /*RX NORMAL PKT */ + while (count--) { + struct ieee80211_hdr *hdr; + u16 fc; + u16 len; + /*rx buffer descriptor */ + struct rtl_rx_buffer_desc *buffer_desc = NULL; + /*if use new trx flow, it means wifi info */ + struct rtl_rx_desc *pdesc = NULL; + /*rx pkt */ + struct sk_buff *skb = rtlpci->rx_ring[rxring_idx].rx_buf[ + rtlpci->rx_ring[rxring_idx].idx]; + + if (rtlpriv->use_new_trx_flow) { + rx_remained_cnt = + rtlpriv->cfg->ops->rx_desc_buff_remained_cnt(hw, + hw_queue); + if (rx_remained_cnt < 1) + return; + + } else { /* rx descriptor */ + pdesc = &rtlpci->rx_ring[rxring_idx].desc[ + rtlpci->rx_ring[rxring_idx].idx]; + + own = (u8) rtlpriv->cfg->ops->get_desc((u8 *) pdesc, + false, + HW_DESC_OWN); + if (own) /* wait data to be filled by hardware */ + return; + } + + /* Get here means: data is filled already*/ + /* AAAAAAttention !!! + * We can NOT access 'skb' before 'pci_unmap_single' */ + pci_unmap_single(rtlpci->pdev, *((dma_addr_t *) skb->cb), + rtlpci->rxbuffersize, PCI_DMA_FROMDEVICE); + + 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; + } + + rtlpriv->cfg->ops->query_rx_desc(hw, &status, + &rx_status, (u8 *) pdesc, skb); + + if (rtlpriv->use_new_trx_flow) + rtlpriv->cfg->ops->rx_check_dma_ok(hw, + (u8 *)buffer_desc, + hw_queue); + + + len = rtlpriv->cfg->ops->get_desc((u8 *)pdesc, false, + HW_DESC_RXPKT_LEN); + + if (skb->end - skb->tail > len) { + skb_put(skb, len); + if (rtlpriv->use_new_trx_flow) + skb_reserve(skb, status.rx_drvinfo_size + + status.rx_bufshift + 24); + else + skb_reserve(skb, status.rx_drvinfo_size + + status.rx_bufshift); + + } else { + printk("skb->end - skb->tail = %d, len is %d\n", + skb->end - skb->tail, len); + break; + } + + rtlpriv->cfg->ops->rx_command_packet_handler(hw, status, skb); + + /* + *NOTICE This can not be use for mac80211, + *this is done in mac80211 code, + *if you done here sec DHCP will fail + *skb_trim(skb, skb->len - 4); + */ + + hdr = rtl_get_hdr(skb); + fc = rtl_get_fc(skb); + + if (!status.b_crc && !status.b_hwerror) { + memcpy(IEEE80211_SKB_RXCB(skb), &rx_status, + sizeof(rx_status)); + + if (is_broadcast_ether_addr(hdr->addr1)) { + ;/*TODO*/ + } else if (is_multicast_ether_addr(hdr->addr1)) { + ;/*TODO*/ + } else { + unicast = true; + rtlpriv->stats.rxbytesunicast += skb->len; + } + + rtl_is_special_data(hw, skb, false); + + if (ieee80211_is_data(fc)) { + rtlpriv->cfg->ops->led_control(hw, LED_CTL_RX); + + if (unicast) + rtlpriv->link_info.num_rx_inperiod++; + } + + /* static bcn for roaming */ + rtl_beacon_statistic(hw, skb); + rtl_p2p_info(hw, (void*)skb->data, skb->len); + /* for sw lps */ + rtl_swlps_beacon(hw, (void*)skb->data, skb->len); + rtl_recognize_peer(hw, (void*)skb->data, skb->len); + if ((rtlpriv->mac80211.opmode == NL80211_IFTYPE_AP) && + (rtlpriv->rtlhal.current_bandtype == BAND_ON_2_4G)&& + (ieee80211_is_beacon(fc) || + ieee80211_is_probe_resp(fc))) { + dev_kfree_skb_any(skb); + } else { + _rtl_pci_rx_to_mac80211(hw, skb, rx_status); + } + } else { + dev_kfree_skb_any(skb); + } + if (rtlpriv->use_new_trx_flow) { + rtlpci->rx_ring[hw_queue].next_rx_rp += 1; + rtlpci->rx_ring[hw_queue].next_rx_rp %= + RTL_PCI_MAX_RX_COUNT; + + + rx_remained_cnt--; + if (1/*rx_remained_cnt == 0*/) { + rtl_write_word(rtlpriv, 0x3B4, + rtlpci->rx_ring[hw_queue].next_rx_rp); + } + } + if (((rtlpriv->link_info.num_rx_inperiod + + rtlpriv->link_info.num_tx_inperiod) > 8) || + (rtlpriv->link_info.num_rx_inperiod > 2)) { + rtl_lps_leave(hw); + } + + if (rtlpriv->use_new_trx_flow) { + _rtl_pci_init_one_rxdesc(hw, (u8 *)buffer_desc, + rxring_idx, + rtlpci->rx_ring[rxring_idx].idx); + } else { + _rtl_pci_init_one_rxdesc(hw, (u8 *)pdesc, rxring_idx, + rtlpci->rx_ring[rxring_idx].idx); + + if (rtlpci->rx_ring[rxring_idx].idx == + rtlpci->rxringcount - 1) + rtlpriv->cfg->ops->set_desc(hw, (u8 *) pdesc, + false, + HW_DESC_RXERO, + (u8 *) & tmp_one); + } + rtlpci->rx_ring[rxring_idx].idx = + (rtlpci->rx_ring[rxring_idx].idx + 1) % + rtlpci->rxringcount; + } +} + +static irqreturn_t _rtl_pci_interrupt(int irq, void *dev_id) +{ + struct ieee80211_hw *hw = dev_id; + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + unsigned long flags; + u32 inta = 0; + u32 intb = 0; + + + + if (rtlpci->irq_enabled == 0) + return IRQ_HANDLED; + + spin_lock_irqsave(&rtlpriv->locks.irq_th_lock,flags); + + + rtl_write_dword(rtlpriv, rtlpriv->cfg->maps[MAC_HIMR], 0x0); + + + rtl_write_dword(rtlpriv, rtlpriv->cfg->maps[MAC_HIMRE], 0x0); + + + /*read ISR: 4/8bytes */ + rtlpriv->cfg->ops->interrupt_recognized(hw, &inta, &intb); + + + /*Shared IRQ or HW disappared */ + if (!inta || inta == 0xffff) + goto done; + /*<1> beacon related */ + if (inta & rtlpriv->cfg->maps[RTL_IMR_TBDOK]) { + RT_TRACE(COMP_INTR, DBG_TRACE, ("beacon ok interrupt!\n")); + } + + if (unlikely(inta & rtlpriv->cfg->maps[RTL_IMR_TBDER])) { + RT_TRACE(COMP_INTR, DBG_TRACE, ("beacon err interrupt!\n")); + } + + if (inta & rtlpriv->cfg->maps[RTL_IMR_BDOK]) { + RT_TRACE(COMP_INTR, DBG_TRACE, ("beacon interrupt!\n")); + } + + if (inta & rtlpriv->cfg->maps[RTL_IMR_BcnInt]) { + RT_TRACE(COMP_INTR, DBG_TRACE, + ("prepare beacon for interrupt!\n")); + tasklet_schedule(&rtlpriv->works.irq_prepare_bcn_tasklet); + } + + + /*<2> tx related */ + if (unlikely(intb & rtlpriv->cfg->maps[RTL_IMR_TXFOVW])) + RT_TRACE(COMP_ERR, DBG_TRACE, ("IMR_TXFOVW!\n")); + + if (inta & rtlpriv->cfg->maps[RTL_IMR_MGNTDOK]) { + RT_TRACE(COMP_INTR, DBG_TRACE, ("Manage ok interrupt!\n")); + _rtl_pci_tx_isr(hw, MGNT_QUEUE); + } + + if (inta & rtlpriv->cfg->maps[RTL_IMR_HIGHDOK]) { + RT_TRACE(COMP_INTR, DBG_TRACE, ("HIGH_QUEUE ok interrupt!\n")); + _rtl_pci_tx_isr(hw, HIGH_QUEUE); + } + + if (inta & rtlpriv->cfg->maps[RTL_IMR_BKDOK]) { + rtlpriv->link_info.num_tx_inperiod++; + + RT_TRACE(COMP_INTR, DBG_TRACE, ("BK Tx OK interrupt!\n")); + _rtl_pci_tx_isr(hw, BK_QUEUE); + } + + if (inta & rtlpriv->cfg->maps[RTL_IMR_BEDOK]) { + rtlpriv->link_info.num_tx_inperiod++; + + RT_TRACE(COMP_INTR, DBG_TRACE, ("BE TX OK interrupt!\n")); + _rtl_pci_tx_isr(hw, BE_QUEUE); + } + + if (inta & rtlpriv->cfg->maps[RTL_IMR_VIDOK]) { + rtlpriv->link_info.num_tx_inperiod++; + + RT_TRACE(COMP_INTR, DBG_TRACE, ("VI TX OK interrupt!\n")); + _rtl_pci_tx_isr(hw, VI_QUEUE); + } + + if (inta & rtlpriv->cfg->maps[RTL_IMR_VODOK]) { + rtlpriv->link_info.num_tx_inperiod++; + + RT_TRACE(COMP_INTR, DBG_TRACE, ("Vo TX OK interrupt!\n")); + _rtl_pci_tx_isr(hw, VO_QUEUE); + } + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8192SE) { + if (inta & rtlpriv->cfg->maps[RTL_IMR_COMDOK]) { + rtlpriv->link_info.num_tx_inperiod++; + + RT_TRACE(COMP_INTR, DBG_TRACE, + ("CMD TX OK interrupt!\n")); + _rtl_pci_tx_isr(hw, TXCMD_QUEUE); + } + } + + /*<3> rx related */ + if (inta & rtlpriv->cfg->maps[RTL_IMR_ROK]) { + RT_TRACE(COMP_INTR, DBG_TRACE, ("Rx ok interrupt!\n")); + + _rtl_pci_rx_interrupt(hw); + + } + + if (unlikely(inta & rtlpriv->cfg->maps[RTL_IMR_RDU])) { + RT_TRACE(COMP_ERR, DBG_WARNING, + ("rx descriptor unavailable!\n")); + rtl_write_byte(rtlpriv, 0xb4, BIT(1) ); + _rtl_pci_rx_interrupt(hw); + } + + if (unlikely(intb & rtlpriv->cfg->maps[RTL_IMR_RXFOVW])) { + RT_TRACE(COMP_ERR, DBG_WARNING, ("rx overflow !\n")); + _rtl_pci_rx_interrupt(hw); + } + + /*<4> fw related*/ + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8723AE) { + if (inta & rtlpriv->cfg->maps[RTL_IMR_C2HCMD]) { + RT_TRACE(COMP_INTR, DBG_TRACE, + ("firmware interrupt!\n")); + queue_delayed_work(rtlpriv->works.rtl_wq, + &rtlpriv->works.fwevt_wq, 0); + } + } + + /*<5> hsisr related*/ + /* Only 8188EE & 8723BE Supported. + * If Other ICs Come in, System will corrupt, + * because maps[RTL_IMR_HSISR_IND] & maps[MAC_HSISR] + * are not initialized*/ + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8188EE || + rtlhal->hw_type == HARDWARE_TYPE_RTL8723BE) { + if (unlikely(inta & rtlpriv->cfg->maps[RTL_IMR_HSISR_IND])) { + RT_TRACE(COMP_INTR, DBG_TRACE, + ("hsisr interrupt!\n")); + _rtl_pci_hs_interrupt(hw); + } + } + + + if(rtlpriv->rtlhal.b_earlymode_enable) + tasklet_schedule(&rtlpriv->works.irq_tasklet); + + rtl_write_dword(rtlpriv, rtlpriv->cfg->maps[MAC_HIMR], + rtlpci->irq_mask[0]); + rtl_write_dword(rtlpriv, rtlpriv->cfg->maps[MAC_HIMRE], + rtlpci->irq_mask[1]); + spin_unlock_irqrestore(&rtlpriv->locks.irq_th_lock, flags); + + return IRQ_HANDLED; + +done: + spin_unlock_irqrestore(&rtlpriv->locks.irq_th_lock, flags); + return IRQ_HANDLED; +} + +static void _rtl_pci_irq_tasklet(struct ieee80211_hw *hw) +{ + _rtl_pci_tx_chk_waitq(hw); +} + +static void _rtl_pci_prepare_bcn_tasklet(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct rtl8192_tx_ring *ring = NULL; + struct ieee80211_hdr *hdr = NULL; + struct ieee80211_tx_info *info = NULL; + struct sk_buff *pskb = NULL; + struct rtl_tx_desc *pdesc = NULL; + struct rtl_tcb_desc tcb_desc; + /*This is for new trx flow*/ + struct rtl_tx_buffer_desc *pbuffer_desc = NULL; + u8 temp_one = 1; + + memset(&tcb_desc, 0, sizeof(struct rtl_tcb_desc)); + ring = &rtlpci->tx_ring[BEACON_QUEUE]; + pskb = __skb_dequeue(&ring->queue); + if (pskb) + kfree_skb(pskb); + + /*NB: the beacon data buffer must be 32-bit aligned. */ + pskb = ieee80211_beacon_get(hw, mac->vif); + if (pskb == NULL) + return; + hdr = rtl_get_hdr(pskb); + info = IEEE80211_SKB_CB(pskb); + pdesc = &ring->desc[0]; + if (rtlpriv->use_new_trx_flow) + pbuffer_desc = &ring->buffer_desc[0]; + +/**/ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0)) + rtlpriv->cfg->ops->fill_tx_desc(hw, hdr, (u8 *) pdesc, + (u8 *)pbuffer_desc, info, pskb, + BEACON_QUEUE, &tcb_desc); +#else +/**/ + rtlpriv->cfg->ops->fill_tx_desc(hw, hdr, (u8 *) pdesc, + (u8 *)pbuffer_desc, info, NULL, pskb, + BEACON_QUEUE, &tcb_desc); +/**/ +#endif +/**/ + + __skb_queue_tail(&ring->queue, pskb); + + rtlpriv->cfg->ops->set_desc(hw, (u8 *) pdesc, true, HW_DESC_OWN, + (u8 *) & temp_one); + + return; +} + +static void _rtl_pci_init_trx_var(struct ieee80211_hw *hw) +{ + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtlpriv); + u8 i; + u16 desc_num; + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8192EE) + desc_num = TX_DESC_NUM_92E; + else + desc_num = RT_TXDESC_NUM; + + for (i = 0; i < RTL_PCI_MAX_TX_QUEUE_COUNT; i++) { + rtlpci->txringcount[i] = desc_num; + } + /* + *we just alloc 2 desc for beacon queue, + *because we just need first desc in hw beacon. + */ + rtlpci->txringcount[BEACON_QUEUE] = 2; + + /* + *BE queue need more descriptor for performance + *consideration or, No more tx desc will happen, + *and may cause mac80211 mem leakage. + */ + if (rtl_priv(hw)->use_new_trx_flow == false) + rtlpci->txringcount[BE_QUEUE] = RT_TXDESC_NUM_BE_QUEUE; + + rtlpci->rxbuffersize = 9100; /*2048/1024; */ + rtlpci->rxringcount = RTL_PCI_MAX_RX_COUNT; /*64; */ +} + +static void _rtl_pci_init_struct(struct ieee80211_hw *hw, + struct pci_dev *pdev) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + + rtlpriv->rtlhal.up_first_time = true; + rtlpriv->rtlhal.being_init_adapter = false; + + rtlhal->hw = hw; + rtlpci->pdev = pdev; + + /*Tx/Rx related var */ + _rtl_pci_init_trx_var(hw); + + /*IBSS*/ mac->beacon_interval = 100; + + /*AMPDU*/ + mac->min_space_cfg = 0; + mac->max_mss_density = 0; + /*set sane AMPDU defaults */ + mac->current_ampdu_density = 7; + mac->current_ampdu_factor = 3; + + /*QOS*/ + rtlpci->acm_method = eAcmWay2_SW; + + /*task */ + tasklet_init(&rtlpriv->works.irq_tasklet, + (void (*)(unsigned long))_rtl_pci_irq_tasklet, + (unsigned long)hw); + tasklet_init(&rtlpriv->works.irq_prepare_bcn_tasklet, + (void (*)(unsigned long))_rtl_pci_prepare_bcn_tasklet, + (unsigned long)hw); +} + +static int _rtl_pci_init_tx_ring(struct ieee80211_hw *hw, + unsigned int prio, unsigned int entries) +{ + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_tx_buffer_desc *buffer_desc; + struct rtl_tx_desc *desc; + dma_addr_t buffer_desc_dma, desc_dma; + u32 nextdescaddress; + int i; + + /* alloc tx buffer desc for new trx flow*/ + if (rtlpriv->use_new_trx_flow) { + buffer_desc = pci_alloc_consistent(rtlpci->pdev, + sizeof(*buffer_desc) * entries, + &buffer_desc_dma); + + if (!buffer_desc || (unsigned long)buffer_desc & 0xFF) { + RT_TRACE(COMP_ERR, DBG_EMERG, + ("Cannot allocate TX ring (prio = %d)\n", + prio)); + return -ENOMEM; + } + + memset(buffer_desc, 0, sizeof(*buffer_desc) * entries); + rtlpci->tx_ring[prio].buffer_desc = buffer_desc; + rtlpci->tx_ring[prio].buffer_desc_dma = buffer_desc_dma; + + rtlpci->tx_ring[prio].cur_tx_rp = 0; + rtlpci->tx_ring[prio].cur_tx_wp = 0; + rtlpci->tx_ring[prio].avl_desc = entries; + + } + + /* alloc dma for this ring */ + desc = pci_alloc_consistent(rtlpci->pdev, + sizeof(*desc) * entries, &desc_dma); + + if (!desc || (unsigned long)desc & 0xFF) { + RT_TRACE(COMP_ERR, DBG_EMERG, + ("Cannot allocate TX ring (prio = %d)\n", prio)); + return -ENOMEM; + } + + memset(desc, 0, sizeof(*desc) * entries); + rtlpci->tx_ring[prio].desc = desc; + rtlpci->tx_ring[prio].dma = desc_dma; + + rtlpci->tx_ring[prio].idx = 0; + rtlpci->tx_ring[prio].entries = entries; + skb_queue_head_init(&rtlpci->tx_ring[prio].queue); + RT_TRACE(COMP_INIT, DBG_LOUD, + ("queue:%d, ring_addr:%p\n", prio, desc)); + + /* init every desc in this ring */ + if (rtlpriv->use_new_trx_flow == false) { + for (i = 0; i < entries; i++) { + nextdescaddress = cpu_to_le32((u32) desc_dma + + ((i + 1) % entries) * + sizeof(*desc)); + + rtlpriv->cfg->ops->set_desc(hw, (u8 *) & (desc[i]), + true, + HW_DESC_TX_NEXTDESC_ADDR, + (u8 *) & nextdescaddress); + } + } + return 0; +} + +static int _rtl_pci_init_rx_ring(struct ieee80211_hw *hw, int rxring_idx) +{ + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + struct rtl_priv *rtlpriv = rtl_priv(hw); + + int i; + + if (rtlpriv->use_new_trx_flow) { + struct rtl_rx_buffer_desc *entry = NULL; + /* alloc dma for this ring */ + rtlpci->rx_ring[rxring_idx].buffer_desc = + pci_alloc_consistent(rtlpci->pdev, + sizeof(*rtlpci->rx_ring[rxring_idx]. + buffer_desc) * + rtlpci->rxringcount, + &rtlpci->rx_ring[rxring_idx].dma); + if (!rtlpci->rx_ring[rxring_idx].buffer_desc || + (unsigned long)rtlpci->rx_ring[rxring_idx].buffer_desc & 0xFF) { + RT_TRACE(COMP_ERR, DBG_EMERG, ("Cannot allocate RX ring\n")); + return -ENOMEM; + } + + memset(rtlpci->rx_ring[rxring_idx].buffer_desc, 0, + sizeof(*rtlpci->rx_ring[rxring_idx].buffer_desc) * + rtlpci->rxringcount); + + /* init every desc in this ring */ + rtlpci->rx_ring[rxring_idx].idx = 0; + for (i = 0; i < rtlpci->rxringcount; i++) { + entry = &rtlpci->rx_ring[rxring_idx].buffer_desc[i]; + if (!_rtl_pci_init_one_rxdesc(hw, (u8 *)entry, + rxring_idx, i)) + return -ENOMEM; + } + } else { + struct rtl_rx_desc *entry = NULL; + u8 tmp_one = 1; + /* alloc dma for this ring */ + rtlpci->rx_ring[rxring_idx].desc = + pci_alloc_consistent(rtlpci->pdev, + sizeof(*rtlpci->rx_ring[rxring_idx]. + desc) * rtlpci->rxringcount, + &rtlpci->rx_ring[rxring_idx].dma); + if (!rtlpci->rx_ring[rxring_idx].desc || + (unsigned long)rtlpci->rx_ring[rxring_idx].desc & 0xFF) { + RT_TRACE(COMP_ERR, DBG_EMERG, + ("Cannot allocate RX ring\n")); + return -ENOMEM; + } + + memset(rtlpci->rx_ring[rxring_idx].desc, 0, + sizeof(*rtlpci->rx_ring[rxring_idx].desc) * + rtlpci->rxringcount); + + /* init every desc in this ring */ + rtlpci->rx_ring[rxring_idx].idx = 0; + for (i = 0; i < rtlpci->rxringcount; i++) { + entry = &rtlpci->rx_ring[rxring_idx].desc[i]; + if (!_rtl_pci_init_one_rxdesc(hw, (u8 *)entry, + rxring_idx, i)) + return -ENOMEM; + } + rtlpriv->cfg->ops->set_desc(hw, (u8 *) entry, false, + HW_DESC_RXERO, (u8 *) & tmp_one); + } + return 0; +} + +static void _rtl_pci_free_tx_ring(struct ieee80211_hw *hw, + unsigned int prio) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + struct rtl8192_tx_ring *ring = &rtlpci->tx_ring[prio]; + + /* free every desc in this ring */ + while (skb_queue_len(&ring->queue)) { + u8 *entry; + struct sk_buff *skb = __skb_dequeue(&ring->queue); + if (rtlpriv->use_new_trx_flow) + entry = (u8 *)(&ring->buffer_desc[ring->idx]); + else + entry = (u8 *)(&ring->desc[ring->idx]); + + pci_unmap_single(rtlpci->pdev, + le32_to_cpu(rtlpriv->cfg->ops->get_desc( + (u8 *) entry, true, HW_DESC_TXBUFF_ADDR)), + skb->len, PCI_DMA_TODEVICE); + kfree_skb(skb); + ring->idx = (ring->idx + 1) % ring->entries; + } + + /* free dma of this ring */ + pci_free_consistent(rtlpci->pdev, + sizeof(*ring->desc) * ring->entries, + ring->desc, ring->dma); + ring->desc = NULL; + if (rtlpriv->use_new_trx_flow) { + pci_free_consistent(rtlpci->pdev, + sizeof(*ring->buffer_desc) * ring->entries, + ring->buffer_desc, ring->buffer_desc_dma); + ring->buffer_desc = NULL; + } +} + +static void _rtl_pci_free_rx_ring(struct ieee80211_hw *hw, int rxring_idx) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + int i; + + /* free every desc in this ring */ + for (i = 0; i < rtlpci->rxringcount; i++) { + struct sk_buff *skb = rtlpci->rx_ring[rxring_idx].rx_buf[i]; + if (!skb) + continue; + + pci_unmap_single(rtlpci->pdev, *((dma_addr_t *) skb->cb), + rtlpci->rxbuffersize, PCI_DMA_FROMDEVICE); + kfree_skb(skb); + } + + /* free dma of this ring */ + if (rtlpriv->use_new_trx_flow) { + pci_free_consistent(rtlpci->pdev, + sizeof(*rtlpci->rx_ring[rxring_idx]. + buffer_desc) * rtlpci->rxringcount, + rtlpci->rx_ring[rxring_idx].buffer_desc, + rtlpci->rx_ring[rxring_idx].dma); + rtlpci->rx_ring[rxring_idx].buffer_desc = NULL; + } else { + pci_free_consistent(rtlpci->pdev, + sizeof(*rtlpci->rx_ring[rxring_idx].desc) * + rtlpci->rxringcount, + rtlpci->rx_ring[rxring_idx].desc, + rtlpci->rx_ring[rxring_idx].dma); + rtlpci->rx_ring[rxring_idx].desc = NULL; + } +} + +static int _rtl_pci_init_trx_ring(struct ieee80211_hw *hw) +{ + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + int ret; + int i, rxring_idx; + + /* rxring_idx 0:RX_MPDU_QUEUE + * rxring_idx 1:RX_CMD_QUEUE */ + for (rxring_idx = 0; rxring_idx < RTL_PCI_MAX_RX_QUEUE; rxring_idx++) { + ret = _rtl_pci_init_rx_ring(hw, rxring_idx); + if (ret) + return ret; + } + + for (i = 0; i < RTL_PCI_MAX_TX_QUEUE_COUNT; i++) { + ret = _rtl_pci_init_tx_ring(hw, i, rtlpci->txringcount[i]); + if (ret) + goto err_free_rings; + } + + return 0; + +err_free_rings: + for (rxring_idx = 0; rxring_idx < RTL_PCI_MAX_RX_QUEUE; rxring_idx++) + _rtl_pci_free_rx_ring(hw, rxring_idx); + + for (i = 0; i < RTL_PCI_MAX_TX_QUEUE_COUNT; i++) + if (rtlpci->tx_ring[i].desc || + rtlpci->tx_ring[i].buffer_desc) + _rtl_pci_free_tx_ring(hw, i); + + return 1; +} + +static int _rtl_pci_deinit_trx_ring(struct ieee80211_hw *hw) +{ + u32 i, rxring_idx; + + /*free rx rings */ + for (rxring_idx = 0; rxring_idx < RTL_PCI_MAX_RX_QUEUE; rxring_idx++) + _rtl_pci_free_rx_ring(hw, rxring_idx); + + /*free tx rings */ + for (i = 0; i < RTL_PCI_MAX_TX_QUEUE_COUNT; i++) + _rtl_pci_free_tx_ring(hw, i); + + return 0; +} + +int rtl_pci_reset_trx_ring(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + int i, rxring_idx; + unsigned long flags; + u8 tmp_one = 1; + /* rxring_idx 0:RX_MPDU_QUEUE */ + /* rxring_idx 1:RX_CMD_QUEUE */ + for (rxring_idx = 0; rxring_idx < RTL_PCI_MAX_RX_QUEUE; rxring_idx++) { + /* force the rx_ring[RX_MPDU_QUEUE/ + * RX_CMD_QUEUE].idx to the first one */ + /*new trx flow, do nothing*/ + if ((rtlpriv->use_new_trx_flow == false) && + rtlpci->rx_ring[rxring_idx].desc) { + struct rtl_rx_desc *entry = NULL; + + for (i = 0; i < rtlpci->rxringcount; i++) { + entry = &rtlpci->rx_ring[rxring_idx].desc[i]; + rtlpriv->cfg->ops->set_desc(hw, (u8 *) entry, + false, + HW_DESC_RXOWN, + (u8 *) & tmp_one); + } + } + rtlpci->rx_ring[rxring_idx].idx = 0; } + + /* after reset, release previous pending packet, + * and force the tx idx to the first one */ + spin_lock_irqsave(&rtlpriv->locks.irq_th_lock, flags); + for (i = 0; i < RTL_PCI_MAX_TX_QUEUE_COUNT; i++) { + if (rtlpci->tx_ring[i].desc || + rtlpci->tx_ring[i].buffer_desc) { + struct rtl8192_tx_ring *ring = &rtlpci->tx_ring[i]; + + while (skb_queue_len(&ring->queue)) { + u8 *entry; + struct sk_buff *skb = + __skb_dequeue(&ring->queue); + if (rtlpriv->use_new_trx_flow) + entry = (u8 *)(&ring->buffer_desc + [ring->idx]); + else + entry = (u8 *)(&ring->desc[ring->idx]); + + pci_unmap_single(rtlpci->pdev, + le32_to_cpu(rtlpriv->cfg->ops->get_desc( + (u8 *)entry, true, + HW_DESC_TXBUFF_ADDR)), + skb->len, PCI_DMA_TODEVICE); + kfree_skb(skb); + ring->idx = (ring->idx + 1) % ring->entries; + } + ring->idx = 0; + } + } + + spin_unlock_irqrestore(&rtlpriv->locks.irq_th_lock, flags); + + return 0; +} + +/**/ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0)) +static bool rtl_pci_tx_chk_waitq_insert(struct ieee80211_hw *hw, + struct sk_buff *skb) +#else +/**/ +static bool rtl_pci_tx_chk_waitq_insert(struct ieee80211_hw *hw, + struct ieee80211_sta *sta, + struct sk_buff *skb) +/**/ +#endif +/**/ +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); +/**/ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0)) + struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); + struct ieee80211_sta *sta = info->control.sta; +#endif +/**/ + struct rtl_sta_info *sta_entry = NULL; + u8 tid = rtl_get_tid(skb); + u16 fc = rtl_get_fc(skb); + + if(!sta) + return false; + sta_entry = (struct rtl_sta_info *)sta->drv_priv; + + if (!rtlpriv->rtlhal.b_earlymode_enable) + return false; + if (ieee80211_is_nullfunc(fc)) + return false; + if (ieee80211_is_qos_nullfunc(fc)) + return false; + if (ieee80211_is_pspoll(fc)) { + return false; + } + + if (sta_entry->tids[tid].agg.agg_state != RTL_AGG_OPERATIONAL) + return false; + if (_rtl_mac_to_hwqueue(hw, skb) > VO_QUEUE) + return false; + if (tid > 7) + return false; + /* maybe every tid should be checked */ + if (!rtlpriv->link_info.higher_busytxtraffic[tid]) + return false; + + spin_lock_bh(&rtlpriv->locks.waitq_lock); + skb_queue_tail(&rtlpriv->mac80211.skb_waitq[tid], skb); + spin_unlock_bh(&rtlpriv->locks.waitq_lock); + + return true; +} + +/**/ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0)) +int rtl_pci_tx(struct ieee80211_hw *hw, struct sk_buff *skb, + struct rtl_tcb_desc *ptcb_desc) +#else +/**/ +static int rtl_pci_tx(struct ieee80211_hw *hw, + struct ieee80211_sta *sta, + struct sk_buff *skb, + struct rtl_tcb_desc *ptcb_desc) +/**/ +#endif +/**/ +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_sta_info *sta_entry = NULL; + struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); +/**/ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0)) + struct ieee80211_sta *sta = info->control.sta; +#endif +/**/ + struct rtl8192_tx_ring *ring; + struct rtl_tx_desc *pdesc; + struct rtl_tx_buffer_desc *ptx_bd_desc = NULL; + u16 idx; + u8 own; + u8 temp_one = 1; + u8 hw_queue = _rtl_mac_to_hwqueue(hw, skb); + unsigned long flags; + struct ieee80211_hdr *hdr = rtl_get_hdr(skb); + u16 fc = rtl_get_fc(skb); + u8 *pda_addr = hdr->addr1; + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + /*ssn */ + u8 tid = 0; + u16 seq_number = 0; + + + if (ieee80211_is_mgmt(fc)) + rtl_tx_mgmt_proc(hw, skb); + + if (rtlpriv->psc.sw_ps_enabled) { + if (ieee80211_is_data(fc) && !ieee80211_is_nullfunc(fc) && + !ieee80211_has_pm(fc)) + hdr->frame_control |= cpu_to_le16(IEEE80211_FCTL_PM); + } + + rtl_action_proc(hw, skb, true); + + if (is_multicast_ether_addr(pda_addr)) + rtlpriv->stats.txbytesmulticast += skb->len; + else if (is_broadcast_ether_addr(pda_addr)) + rtlpriv->stats.txbytesbroadcast += skb->len; + else + rtlpriv->stats.txbytesunicast += skb->len; + + spin_lock_irqsave(&rtlpriv->locks.irq_th_lock, flags); + ring = &rtlpci->tx_ring[hw_queue]; + if (hw_queue != BEACON_QUEUE) { + if (rtlpriv->use_new_trx_flow) + idx = ring->cur_tx_wp; + else + idx = (ring->idx + skb_queue_len(&ring->queue)) % + ring->entries; + } else { + idx = 0; + } + + pdesc = &ring->desc[idx]; + + if (rtlpriv->use_new_trx_flow) { + ptx_bd_desc = &ring->buffer_desc[idx]; + } else { + own = (u8) rtlpriv->cfg->ops->get_desc((u8 *) pdesc, + true, HW_DESC_OWN); + + if ((own == 1) && (hw_queue != BEACON_QUEUE)) { + RT_TRACE(COMP_ERR, DBG_WARNING, + ("No more TX desc@%d, ring->idx = %d," + "idx = %d, skb_queue_len = 0x%d\n", + hw_queue, ring->idx, idx, + skb_queue_len(&ring->queue))); + + spin_unlock_irqrestore(&rtlpriv->locks.irq_th_lock, + flags); + return skb->len; + } + } + + if (ieee80211_is_data_qos(fc)) { + tid = rtl_get_tid(skb); + if (sta) { + sta_entry = (struct rtl_sta_info *)sta->drv_priv; + seq_number = (le16_to_cpu(hdr->seq_ctrl) & + IEEE80211_SCTL_SEQ) >> 4; + seq_number += 1; + + if (!ieee80211_has_morefrags(hdr->frame_control)) + sta_entry->tids[tid].seq_number = seq_number; + } + } + + if (ieee80211_is_data(fc)) + rtlpriv->cfg->ops->led_control(hw, LED_CTL_TX); + +/**/ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0)) + rtlpriv->cfg->ops->fill_tx_desc(hw, hdr, (u8 *) pdesc, + (u8 *)ptx_bd_desc, info, skb, + hw_queue, ptcb_desc); +#else +/**/ + rtlpriv->cfg->ops->fill_tx_desc(hw, hdr, (u8 *) pdesc, + (u8 *)ptx_bd_desc, info, sta, skb, + hw_queue, ptcb_desc); +/**/ +#endif +/**/ + + __skb_queue_tail(&ring->queue, skb); + if (rtlpriv->use_new_trx_flow) { + rtlpriv->cfg->ops->set_desc(hw, (u8 *) pdesc, true, + HW_DESC_OWN, (u8 *) & hw_queue); + } else { + rtlpriv->cfg->ops->set_desc(hw, (u8 *) pdesc, true, + HW_DESC_OWN, (u8 *) & temp_one); + } + + if ((ring->entries - skb_queue_len(&ring->queue)) < 2 && + hw_queue != BEACON_QUEUE) { + + RT_TRACE(COMP_ERR, DBG_LOUD, + ("less desc left, stop skb_queue@%d, " + "ring->idx = %d," + "idx = %d, skb_queue_len = 0x%d\n", + hw_queue, ring->idx, idx, + skb_queue_len(&ring->queue))); + + ieee80211_stop_queue(hw, skb_get_queue_mapping(skb)); + } + + spin_unlock_irqrestore(&rtlpriv->locks.irq_th_lock, flags); + + rtlpriv->cfg->ops->tx_polling(hw, hw_queue); + + return 0; +} +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)) +static void rtl_pci_flush(struct ieee80211_hw *hw, u32 queues, bool drop) +#else +static void rtl_pci_flush(struct ieee80211_hw *hw, bool drop) +#endif +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + u16 i = 0; + int queue_id; + struct rtl8192_tx_ring *ring; + + if (mac->skip_scan) + return; + + for (queue_id = RTL_PCI_MAX_TX_QUEUE_COUNT - 1; queue_id >= 0;) { + u32 queue_len; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)) + if (((queues >> queue_id) & 0x1) == 0) { + queue_id--; + continue; + } +#endif + ring = &pcipriv->dev.tx_ring[queue_id]; + queue_len = skb_queue_len(&ring->queue); + if (queue_len == 0 || queue_id == BEACON_QUEUE || + queue_id == TXCMD_QUEUE) { + queue_id--; + continue; + } else { + msleep(5); + i++; + } + + /* we just wait 1s for all queues */ + if (rtlpriv->psc.rfpwr_state == ERFOFF || + is_hal_stop(rtlhal) || i >= 200) + return; + } +} + +void rtl_pci_deinit(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + + _rtl_pci_deinit_trx_ring(hw); + + synchronize_irq(rtlpci->pdev->irq); + tasklet_kill(&rtlpriv->works.irq_tasklet); + + flush_workqueue(rtlpriv->works.rtl_wq); + destroy_workqueue(rtlpriv->works.rtl_wq); + +} + +int rtl_pci_init(struct ieee80211_hw *hw, struct pci_dev *pdev) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + int err; + + _rtl_pci_init_struct(hw, pdev); + + err = _rtl_pci_init_trx_ring(hw); + if (err) { + RT_TRACE(COMP_ERR, DBG_EMERG, + ("tx ring initialization failed")); + return err; + } + + return 1; +} + +int rtl_pci_start(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + + int err = 0; + RT_TRACE(COMP_INIT, DBG_DMESG, (" rtl_pci_start \n")); + rtl_pci_reset_trx_ring(hw); + + rtlpriv->rtlhal.driver_is_goingto_unload = false; + err = rtlpriv->cfg->ops->hw_init(hw); + if (err) { + RT_TRACE(COMP_INIT, DBG_DMESG, + ("Failed to config hardware err %x!\n",err)); + return err; + } + + rtlpriv->cfg->ops->enable_interrupt(hw); + RT_TRACE(COMP_INIT, DBG_LOUD, ("enable_interrupt OK\n")); + + rtl_init_rx_config(hw); + + /*should after adapter start and interrupt enable. */ + set_hal_start(rtlhal); + + RT_CLEAR_PS_LEVEL(ppsc, RT_RF_OFF_LEVL_HALT_NIC); + + rtlpriv->rtlhal.up_first_time = false; + + RT_TRACE(COMP_INIT, DBG_DMESG, ("rtl_pci_start OK\n")); + return 0; +} + +void rtl_pci_stop(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + u8 RFInProgressTimeOut = 0; + + /* + *should before disable interrrupt&adapter + *and will do it immediately. + */ + set_hal_stop(rtlhal); + + rtlpriv->cfg->ops->disable_interrupt(hw); + + spin_lock(&rtlpriv->locks.rf_ps_lock); + while (ppsc->rfchange_inprogress) { + spin_unlock(&rtlpriv->locks.rf_ps_lock); + if (RFInProgressTimeOut > 100) { + spin_lock(&rtlpriv->locks.rf_ps_lock); + break; + } + mdelay(1); + RFInProgressTimeOut++; + spin_lock(&rtlpriv->locks.rf_ps_lock); + } + ppsc->rfchange_inprogress = true; + spin_unlock(&rtlpriv->locks.rf_ps_lock); + + rtlpriv->rtlhal.driver_is_goingto_unload = true; + rtlpriv->cfg->ops->hw_disable(hw); + rtlpriv->cfg->ops->led_control(hw, LED_CTL_POWER_OFF); + + spin_lock(&rtlpriv->locks.rf_ps_lock); + ppsc->rfchange_inprogress = false; + spin_unlock(&rtlpriv->locks.rf_ps_lock); + + rtl_pci_enable_aspm(hw); +} + +static bool _rtl_pci_find_adapter(struct pci_dev *pdev, + struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + struct pci_dev *bridge_pdev = pdev->bus->self; + u16 venderid; + u16 deviceid; + u8 revisionid; + u16 irqline; + u8 tmp; + + venderid = pdev->vendor; + deviceid = pdev->device; + pci_read_config_byte(pdev, 0x8, &revisionid); + pci_read_config_word(pdev, 0x3C, &irqline); + + if (deviceid == RTL_PCI_8192_DID || + deviceid == RTL_PCI_0044_DID || + deviceid == RTL_PCI_0047_DID || + deviceid == RTL_PCI_8192SE_DID || + deviceid == RTL_PCI_8174_DID || + deviceid == RTL_PCI_8173_DID || + deviceid == RTL_PCI_8172_DID || + deviceid == RTL_PCI_8171_DID) { + switch (revisionid) { + case RTL_PCI_REVISION_ID_8192PCIE: + RT_TRACE(COMP_INIT, DBG_DMESG, + ("8192E is found but not supported now-" + "vid/did=%x/%x\n", venderid, deviceid)); + rtlhal->hw_type = HARDWARE_TYPE_RTL8192E; + return false; + break; + case RTL_PCI_REVISION_ID_8192SE: + RT_TRACE(COMP_INIT, DBG_DMESG, + ("8192SE is found - " + "vid/did=%x/%x\n", venderid, deviceid)); + rtlhal->hw_type = HARDWARE_TYPE_RTL8192SE; + break; + default: + RT_TRACE(COMP_ERR, DBG_WARNING, + ("Err: Unknown device - " + "vid/did=%x/%x\n", venderid, deviceid)); + rtlhal->hw_type = HARDWARE_TYPE_RTL8192SE; + break; + + } + }else if(deviceid == RTL_PCI_8723AE_DID) { + rtlhal->hw_type = HARDWARE_TYPE_RTL8723AE; + RT_TRACE(COMP_INIT, DBG_DMESG, + ("8723AE PCI-E is found - " + "vid/did=%x/%x\n", venderid, deviceid)); + } else if (deviceid == RTL_PCI_8192CET_DID || + deviceid == RTL_PCI_8192CE_DID || + deviceid == RTL_PCI_8191CE_DID || + deviceid == RTL_PCI_8188CE_DID) { + rtlhal->hw_type = HARDWARE_TYPE_RTL8192CE; + RT_TRACE(COMP_INIT, DBG_DMESG, + ("8192C PCI-E is found - " + "vid/did=%x/%x\n", venderid, deviceid)); + } else if (deviceid == RTL_PCI_8192DE_DID || + deviceid == RTL_PCI_8192DE_DID2) { + rtlhal->hw_type = HARDWARE_TYPE_RTL8192DE; + RT_TRACE(COMP_INIT, DBG_DMESG, + ("8192D PCI-E is found - " + "vid/did=%x/%x\n", venderid, deviceid)); + }else if(deviceid == RTL_PCI_8188EE_DID){ + rtlhal->hw_type = HARDWARE_TYPE_RTL8188EE; + RT_TRACE(COMP_INIT,DBG_LOUD, + ("Find adapter, Hardware type is 8188EE\n")); + }else if (deviceid == RTL_PCI_8723BE_DID){ + rtlhal->hw_type = HARDWARE_TYPE_RTL8723BE; + RT_TRACE(COMP_INIT,DBG_LOUD, + ("Find adapter, Hardware type is 8723BE\n")); + }else if (deviceid == RTL_PCI_8192EE_DID){ + rtlhal->hw_type = HARDWARE_TYPE_RTL8192EE; + RT_TRACE(COMP_INIT,DBG_LOUD, + ("Find adapter, Hardware type is 8192EE\n")); + }else if (deviceid == RTL_PCI_8821AE_DID) { + rtlhal->hw_type = HARDWARE_TYPE_RTL8821AE; + RT_TRACE(COMP_INIT,DBG_LOUD, + ("Find adapter, Hardware type is 8821AE\n")); + }else if (deviceid == RTL_PCI_8812AE_DID) { + rtlhal->hw_type = HARDWARE_TYPE_RTL8812AE; + RT_TRACE(COMP_INIT,DBG_LOUD, + ("Find adapter, Hardware type is 8812AE\n")); + }else { + RT_TRACE(COMP_ERR, DBG_WARNING, + ("Err: Unknown device -" + " vid/did=%x/%x\n", venderid, deviceid)); + + rtlhal->hw_type = RTL_DEFAULT_HARDWARE_TYPE; + } + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8192DE) { + if (revisionid == 0 || revisionid == 1) { + if (revisionid == 0) { + RT_TRACE(COMP_INIT, DBG_LOUD, + ("Find 92DE MAC0.\n")); + rtlhal->interfaceindex = 0; + } else if (revisionid == 1) { + RT_TRACE(COMP_INIT, DBG_LOUD, + ("Find 92DE MAC1.\n")); + rtlhal->interfaceindex = 1; + } + } else { + RT_TRACE(COMP_INIT, DBG_LOUD, ("Unknown device - " + "VendorID/DeviceID=%x/%x, Revision=%x\n", + venderid, deviceid, revisionid)); + rtlhal->interfaceindex = 0; + } + } + + /* 92ee use new trx flow */ + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8192EE) + rtlpriv->use_new_trx_flow = true; + else + rtlpriv->use_new_trx_flow = false; + + /*find bus info */ + pcipriv->ndis_adapter.busnumber = pdev->bus->number; + pcipriv->ndis_adapter.devnumber = PCI_SLOT(pdev->devfn); + pcipriv->ndis_adapter.funcnumber = PCI_FUNC(pdev->devfn); + + /*find bridge info */ + pcipriv->ndis_adapter.pcibridge_vendor = PCI_BRIDGE_VENDOR_UNKNOWN; + /* some ARM have no bridge_pdev and will crash here + * so we should check if bridge_pdev is NULL */ + if (bridge_pdev) { + pcipriv->ndis_adapter.pcibridge_vendorid = bridge_pdev->vendor; + for (tmp = 0; tmp < PCI_BRIDGE_VENDOR_MAX; tmp++) { + if (bridge_pdev->vendor == pcibridge_vendors[tmp]) { + pcipriv->ndis_adapter.pcibridge_vendor = tmp; + RT_TRACE(COMP_INIT, DBG_DMESG, + ("Pci Bridge Vendor is found index: %d\n", + tmp)); + break; + } + } + } + + if (pcipriv->ndis_adapter.pcibridge_vendor != + PCI_BRIDGE_VENDOR_UNKNOWN) { + pcipriv->ndis_adapter.pcibridge_busnum = + bridge_pdev->bus->number; + pcipriv->ndis_adapter.pcibridge_devnum = + PCI_SLOT(bridge_pdev->devfn); + pcipriv->ndis_adapter.pcibridge_funcnum = + PCI_FUNC(bridge_pdev->devfn); + pcipriv->ndis_adapter.pcicfg_addrport = + (pcipriv->ndis_adapter.pcibridge_busnum << 16) | + (pcipriv->ndis_adapter.pcibridge_devnum << 11) | + (pcipriv->ndis_adapter.pcibridge_funcnum << 8) | (1 << 31); +/**/ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) +/**/ + pcipriv->ndis_adapter.pcibridge_pciehdr_offset = + pci_pcie_cap(bridge_pdev); +/**/ +#else + pcipriv->ndis_adapter.pcibridge_pciehdr_offset = + _rtl_pci_get_pciehdr_offset(hw); +#endif +/**/ + pcipriv->ndis_adapter.num4bytes = + (pcipriv->ndis_adapter.pcibridge_pciehdr_offset + 0x10) / 4; + + rtl_pci_get_linkcontrol_field(hw); + + if (pcipriv->ndis_adapter.pcibridge_vendor == + PCI_BRIDGE_VENDOR_AMD) { + pcipriv->ndis_adapter.amd_l1_patch = + rtl_pci_get_amd_l1_patch(hw); + } + } + + RT_TRACE(COMP_INIT, DBG_DMESG, + ("pcidev busnumber:devnumber:funcnumber:" + "vendor:link_ctl %d:%d:%d:%x:%x\n", + pcipriv->ndis_adapter.busnumber, + pcipriv->ndis_adapter.devnumber, + pcipriv->ndis_adapter.funcnumber, + pdev->vendor, pcipriv->ndis_adapter.linkctrl_reg)); + + RT_TRACE(COMP_INIT, DBG_DMESG, + ("pci_bridge busnumber:devnumber:funcnumber:vendor:" + "pcie_cap:link_ctl_reg:amd %d:%d:%d:%x:%x:%x:%x\n", + pcipriv->ndis_adapter.pcibridge_busnum, + pcipriv->ndis_adapter.pcibridge_devnum, + pcipriv->ndis_adapter.pcibridge_funcnum, + pcibridge_vendors[pcipriv->ndis_adapter.pcibridge_vendor], + pcipriv->ndis_adapter.pcibridge_pciehdr_offset, + pcipriv->ndis_adapter.pcibridge_linkctrlreg, + pcipriv->ndis_adapter.amd_l1_patch)); + + rtl_pci_parse_configuration(pdev, hw); + list_add_tail(&rtlpriv->list, &rtlpriv->glb_var->glb_priv_list); + return true; +} + +static int rtl_pci_intr_mode_msi(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(pcipriv); + int ret; + ret = pci_enable_msi(rtlpci->pdev); + if (ret < 0) + return ret; + + ret = request_irq(rtlpci->pdev->irq, &_rtl_pci_interrupt, + IRQF_SHARED, KBUILD_MODNAME, hw); + if (ret < 0) { + pci_disable_msi(rtlpci->pdev); + return ret; + } + + rtlpci->using_msi = true; + + RT_TRACE(COMP_INIT|COMP_INTR, DBG_DMESG, ("MSI Interrupt Mode!\n")); + return 0; +} + +static int rtl_pci_intr_mode_legacy(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(pcipriv); + int ret; + + ret = request_irq(rtlpci->pdev->irq, &_rtl_pci_interrupt, + IRQF_SHARED, KBUILD_MODNAME, hw); + if (ret < 0) { + return ret; + } + + rtlpci->using_msi = false; + RT_TRACE(COMP_INIT|COMP_INTR, DBG_DMESG, + ("Pin-based Interrupt Mode!\n")); + return 0; +} + +static int rtl_pci_intr_mode_decide(struct ieee80211_hw *hw) +{ + struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(pcipriv); + int ret; + if (rtlpci->msi_support == true) { + ret = rtl_pci_intr_mode_msi(hw); + if (ret < 0) + ret = rtl_pci_intr_mode_legacy(hw); + } else { + ret = rtl_pci_intr_mode_legacy(hw); + } + return ret; +} + +/* this is used for other modules get + * hw pointer in rtl_pci_get_hw_pointer */ +struct ieee80211_hw *hw_export = NULL; + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)) +int rtl_pci_probe(struct pci_dev *pdev, + const struct pci_device_id *id) + +#else +int __devinit rtl_pci_probe(struct pci_dev *pdev, + const struct pci_device_id *id) +#endif +{ + struct ieee80211_hw *hw = NULL; + + struct rtl_priv *rtlpriv = NULL; + struct rtl_pci_priv *pcipriv = NULL; + struct rtl_pci *rtlpci; + unsigned long pmem_start, pmem_len, pmem_flags; + int err; + + + err = pci_enable_device(pdev); + if (err) { + RT_ASSERT(false, + ("%s : Cannot enable new PCI device\n", + pci_name(pdev))); + return err; + } + + if (!pci_set_dma_mask(pdev, DMA_BIT_MASK(32))) { + if (pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32))) { + RT_ASSERT(false, ("Unable to obtain 32bit DMA " + "for consistent allocations\n")); + pci_disable_device(pdev); + return -ENOMEM; + } + } + + pci_set_master(pdev); + + hw = ieee80211_alloc_hw(sizeof(struct rtl_pci_priv) + + sizeof(struct rtl_priv), &rtl_ops); + if (!hw) { + RT_ASSERT(false, + ("%s : ieee80211 alloc failed\n", pci_name(pdev))); + err = -ENOMEM; + goto fail1; + } + hw_export = hw; + + SET_IEEE80211_DEV(hw, &pdev->dev); + pci_set_drvdata(pdev, hw); + + rtlpriv = hw->priv; + pcipriv = (void *)rtlpriv->priv; + pcipriv->dev.pdev = pdev; + + /* init cfg & intf_ops */ + rtlpriv->rtlhal.interface = INTF_PCI; + rtlpriv->cfg = (struct rtl_hal_cfg *)(id->driver_data); + rtlpriv->intf_ops = &rtl_pci_ops; + rtlpriv->glb_var = &global_var; + + /* + *init dbgp flags before all + *other functions, because we will + *use it in other funtions like + *RT_TRACE/RT_PRINT/RTL_PRINT_DATA + *you can not use these macro + *before this + */ + rtl_dbgp_flag_init(hw); + + /* MEM map */ + err = pci_request_regions(pdev, KBUILD_MODNAME); + if (err) { + RT_ASSERT(false, ("Can't obtain PCI resources\n")); + return err; + } + + pmem_start = pci_resource_start(pdev, rtlpriv->cfg->bar_id); + pmem_len = pci_resource_len(pdev, rtlpriv->cfg->bar_id); + pmem_flags = pci_resource_flags(pdev, rtlpriv->cfg->bar_id); + + /*shared mem start */ + rtlpriv->io.pci_mem_start = + (unsigned long)pci_iomap(pdev, + rtlpriv->cfg->bar_id, pmem_len); + if (rtlpriv->io.pci_mem_start == 0) { + RT_ASSERT(false, ("Can't map PCI mem\n")); + goto fail2; + } + + RT_TRACE(COMP_INIT, DBG_DMESG, + ("mem mapped space: start: 0x%08lx len:%08lx " + "flags:%08lx, after map:0x%08lx\n", + pmem_start, pmem_len, pmem_flags, + rtlpriv->io.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); + + /* find adapter */ + /* if chip not support, will return false */ + if(!_rtl_pci_find_adapter(pdev, hw)) + goto fail3; + + /* Init IO handler */ + _rtl_pci_io_handler_init(&pdev->dev, hw); + + /*like read eeprom and so on */ + rtlpriv->cfg->ops->read_eeprom_info(hw); + + if (rtlpriv->cfg->ops->init_sw_vars(hw)) { + RT_TRACE(COMP_ERR, DBG_EMERG, ("Can't init_sw_vars.\n")); + goto fail3; + } + + rtlpriv->cfg->ops->init_sw_leds(hw); + + /*aspm */ + rtl_pci_init_aspm(hw); + + /* Init mac80211 sw */ + err = rtl_init_core(hw); + if (err) { + RT_TRACE(COMP_ERR, DBG_EMERG, + ("Can't allocate sw for mac80211.\n")); + goto fail3; + } + + /* Init PCI sw */ + err = !rtl_pci_init(hw, pdev); + if (err) { + RT_TRACE(COMP_ERR, DBG_EMERG, ("Failed to init PCI.\n")); + goto fail3; + } + + err = ieee80211_register_hw(hw); + if (err) { + RT_TRACE(COMP_ERR, DBG_EMERG, + ("Can't register mac80211 hw.\n")); + goto fail3; + } else { + rtlpriv->mac80211.mac80211_registered = 1; + } + /* the wiphy must have been registed to + * cfg80211 prior to regulatory_hint */ + if (regulatory_hint(hw->wiphy, rtlpriv->regd.alpha2)) { + RT_TRACE(COMP_ERR, DBG_WARNING, ("regulatory_hint fail\n")); + } + + err = sysfs_create_group(&pdev->dev.kobj, &rtl_attribute_group); + if (err) { + RT_TRACE(COMP_ERR, DBG_EMERG, + ("failed to create sysfs device attributes\n")); + goto fail3; + } + /* add for prov */ + rtl_proc_add_one(hw); + + /*init rfkill */ + rtl_init_rfkill(hw); + + rtlpci = rtl_pcidev(pcipriv); + + err = rtl_pci_intr_mode_decide(hw); + if (err) { + RT_TRACE(COMP_INIT, DBG_DMESG, + ("%s: failed to register IRQ handler\n", + wiphy_name(hw->wiphy))); + goto fail3; + } else { + rtlpci->irq_alloc = 1; + } + + set_bit(RTL_STATUS_INTERFACE_START, &rtlpriv->status); + return 0; + +fail3: + pci_set_drvdata(pdev, NULL); + rtl_deinit_core(hw); + ieee80211_free_hw(hw); + + if (rtlpriv->io.pci_mem_start != 0) + pci_iounmap(pdev, (void *)rtlpriv->io.pci_mem_start); + +fail2: + pci_release_regions(pdev); + +fail1: + + pci_disable_device(pdev); + + return -ENODEV; + +} +//EXPORT_SYMBOL(rtl_pci_probe); + +struct ieee80211_hw *rtl_pci_get_hw_pointer(void) +{ + return hw_export; +} +//EXPORT_SYMBOL(rtl_pci_get_hw_pointer); + +void rtl_pci_disconnect(struct pci_dev *pdev) +{ + struct ieee80211_hw *hw = pci_get_drvdata(pdev); + struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw); + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(pcipriv); + struct rtl_mac *rtlmac = rtl_mac(rtlpriv); + + clear_bit(RTL_STATUS_INTERFACE_START, &rtlpriv->status); + + sysfs_remove_group(&pdev->dev.kobj, &rtl_attribute_group); + + /* add for prov */ + rtl_proc_remove_one(hw); + + + /*ieee80211_unregister_hw will call ops_stop */ + if (rtlmac->mac80211_registered == 1) { + ieee80211_unregister_hw(hw); + rtlmac->mac80211_registered = 0; + } else { + rtl_deinit_deferred_work(hw); + rtlpriv->intf_ops->adapter_stop(hw); + } + + /*deinit rfkill */ + rtl_deinit_rfkill(hw); + + rtl_pci_deinit(hw); + rtl_deinit_core(hw); + rtlpriv->cfg->ops->deinit_sw_vars(hw); + + if (rtlpci->irq_alloc) { + synchronize_irq(rtlpci->pdev->irq); + free_irq(rtlpci->pdev->irq, hw); + rtlpci->irq_alloc = 0; + } + + if (rtlpci->using_msi == true) + pci_disable_msi(rtlpci->pdev); + + list_del(&rtlpriv->list); + if (rtlpriv->io.pci_mem_start != 0) { + pci_iounmap(pdev, (void *)rtlpriv->io.pci_mem_start); + pci_release_regions(pdev); + } + + pci_disable_device(pdev); + + rtl_pci_disable_aspm(hw); + + pci_set_drvdata(pdev, NULL); + + ieee80211_free_hw(hw); +} +//EXPORT_SYMBOL(rtl_pci_disconnect); + +/*************************************** +kernel pci power state define: +PCI_D0 ((pci_power_t __force) 0) +PCI_D1 ((pci_power_t __force) 1) +PCI_D2 ((pci_power_t __force) 2) +PCI_D3hot ((pci_power_t __force) 3) +PCI_D3cold ((pci_power_t __force) 4) +PCI_UNKNOWN ((pci_power_t __force) 5) + +This function is called when system +goes into suspend state mac80211 will +call rtl_mac_stop() from the mac80211 +suspend function first, So there is +no need to call hw_disable here. +****************************************/ +int rtl_pci_suspend(struct device *dev) +{ + struct pci_dev *pdev = to_pci_dev(dev); + struct ieee80211_hw *hw = pci_get_drvdata(pdev); + struct rtl_priv *rtlpriv = rtl_priv(hw); + + rtlpriv->cfg->ops->hw_suspend(hw); + rtl_deinit_rfkill(hw); + + return 0; +} +//EXPORT_SYMBOL(rtl_pci_suspend); + +int rtl_pci_resume(struct device *dev) +{ + struct pci_dev *pdev = to_pci_dev(dev); + struct ieee80211_hw *hw = pci_get_drvdata(pdev); + struct rtl_priv *rtlpriv = rtl_priv(hw); + + rtlpriv->cfg->ops->hw_resume(hw); + rtl_init_rfkill(hw); + + return 0; +} +//EXPORT_SYMBOL(rtl_pci_resume); + +struct rtl_intf_ops rtl_pci_ops = { + .read_efuse_byte = read_efuse_byte, + .adapter_start = rtl_pci_start, + .adapter_stop = rtl_pci_stop, + .check_buddy_priv = rtl_pci_check_buddy_priv, + .adapter_tx = rtl_pci_tx, + .flush = rtl_pci_flush, + .reset_trx_ring = rtl_pci_reset_trx_ring, + .waitq_insert = rtl_pci_tx_chk_waitq_insert, + + .disable_aspm = rtl_pci_disable_aspm, + .enable_aspm = rtl_pci_enable_aspm, +}; --- linux-3.13.0.orig/drivers/staging/rtl8821ae/pci.h +++ linux-3.13.0/drivers/staging/rtl8821ae/pci.h @@ -0,0 +1,353 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#ifndef __RTL_PCI_H__ +#define __RTL_PCI_H__ + +#include +/* +1: MSDU packet queue, +2: Rx Command Queue +*/ +#define RTL_PCI_RX_MPDU_QUEUE 0 +#define RTL_PCI_RX_CMD_QUEUE 1 +#define RTL_PCI_MAX_RX_QUEUE 2 + +#define RTL_PCI_MAX_RX_COUNT 512//64 +#define RTL_PCI_MAX_TX_QUEUE_COUNT 9 + +#define RT_TXDESC_NUM 128 +#define TX_DESC_NUM_92E 512 +#define RT_TXDESC_NUM_BE_QUEUE 256 + +#define BK_QUEUE 0 +#define BE_QUEUE 1 +#define VI_QUEUE 2 +#define VO_QUEUE 3 +#define BEACON_QUEUE 4 +#define TXCMD_QUEUE 5 +#define MGNT_QUEUE 6 +#define HIGH_QUEUE 7 +#define HCCA_QUEUE 8 + +#define RTL_PCI_DEVICE(vend, dev, cfg) \ + .vendor = (vend), \ + .device = (dev), \ + .subvendor = PCI_ANY_ID, \ + .subdevice = PCI_ANY_ID,\ + .driver_data = (kernel_ulong_t)&(cfg) + +#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 PCI_CAP_ID_EXP 0x10 + +#define U1DONTCARE 0xFF +#define U2DONTCARE 0xFFFF +#define U4DONTCARE 0xFFFFFFFF + +#define RTL_PCI_8192_DID 0x8192 /*8192 PCI-E */ +#define RTL_PCI_8192SE_DID 0x8192 /*8192 SE */ +#define RTL_PCI_8174_DID 0x8174 /*8192 SE */ +#define RTL_PCI_8173_DID 0x8173 /*8191 SE Crab */ +#define RTL_PCI_8172_DID 0x8172 /*8191 SE RE */ +#define RTL_PCI_8171_DID 0x8171 /*8191 SE Unicron */ +#define RTL_PCI_0045_DID 0x0045 /*8190 PCI for Ceraga */ +#define RTL_PCI_0046_DID 0x0046 /*8190 Cardbus for Ceraga */ +#define RTL_PCI_0044_DID 0x0044 /*8192e PCIE for Ceraga */ +#define RTL_PCI_0047_DID 0x0047 /*8192e Express Card for Ceraga */ +#define RTL_PCI_700F_DID 0x700F +#define RTL_PCI_701F_DID 0x701F +#define RTL_PCI_DLINK_DID 0x3304 +#define RTL_PCI_8723AE_DID 0x8723 /*8723e */ +#define RTL_PCI_8192CET_DID 0x8191 /*8192ce */ +#define RTL_PCI_8192CE_DID 0x8178 /*8192ce */ +#define RTL_PCI_8191CE_DID 0x8177 /*8192ce */ +#define RTL_PCI_8188CE_DID 0x8176 /*8192ce */ +#define RTL_PCI_8192CU_DID 0x8191 /*8192ce */ +#define RTL_PCI_8192DE_DID 0x8193 /*8192de */ +#define RTL_PCI_8192DE_DID2 0x002B /*92DE*/ +#define RTL_PCI_8188EE_DID 0x8179 /*8188ee*/ +#define RTL_PCI_8723BE_DID 0xB723 /*8723be*/ +#define RTL_PCI_8192EE_DID 0x818B /*8192ee*/ +#define RTL_PCI_8821AE_DID 0x8821 /*8821ae*/ +#define RTL_PCI_8812AE_DID 0x8812 /*8812ae*/ + +/*8192 support 16 pages of IO registers*/ +#define RTL_MEM_MAPPED_IO_RANGE_8190PCI 0x1000 +#define RTL_MEM_MAPPED_IO_RANGE_8192PCIE 0x4000 +#define RTL_MEM_MAPPED_IO_RANGE_8192SE 0x4000 +#define RTL_MEM_MAPPED_IO_RANGE_8192CE 0x4000 +#define RTL_MEM_MAPPED_IO_RANGE_8192DE 0x4000 + +#define RTL_PCI_REVISION_ID_8190PCI 0x00 +#define RTL_PCI_REVISION_ID_8192PCIE 0x01 +#define RTL_PCI_REVISION_ID_8192SE 0x10 +#define RTL_PCI_REVISION_ID_8192CE 0x1 +#define RTL_PCI_REVISION_ID_8192DE 0x0 + +#define PCI_VENDOR_ID_REALTEK 0x10ec + +#define RTL_DEFAULT_HARDWARE_TYPE HARDWARE_TYPE_RTL8192CE + +enum pci_bridge_vendor { + PCI_BRIDGE_VENDOR_INTEL = 0x0, /*0b'0000,0001 */ + PCI_BRIDGE_VENDOR_ATI, /*0b'0000,0010*/ + PCI_BRIDGE_VENDOR_AMD, /*0b'0000,0100*/ + PCI_BRIDGE_VENDOR_SIS, /*0b'0000,1000*/ + PCI_BRIDGE_VENDOR_UNKNOWN, /*0b'0100,0000*/ + PCI_BRIDGE_VENDOR_MAX, +}; + +struct rtl_pci_capabilities_header { + u8 capability_id; + u8 next; +}; + +/* In new TRX flow, Buffer_desc is new concept + * But TX wifi info == TX descriptor in old flow + * RX wifi info == RX descriptor in old flow */ +struct rtl_tx_buffer_desc { +#if (RTL8192EE_SEG_NUM == 2) + u32 dword[2*(DMA_IS_64BIT + 1)*8]; //seg = 8 +#elif (RTL8192EE_SEG_NUM == 1) + u32 dword[2*(DMA_IS_64BIT + 1)*4]; //seg = 4 +#elif (RTL8192EE_SEG_NUM == 0) + u32 dword[2*(DMA_IS_64BIT + 1)*2]; //seg = 2 +#endif +} __packed; + +struct rtl_tx_desc {/*old: tx desc*//*new: tx wifi info*/ + u32 dword[16]; +} __packed; + +struct rtl_rx_buffer_desc { /*rx buffer desc*/ + u32 dword[2]; +} __packed; + +struct rtl_rx_desc { /*old: rx desc*//*new: rx wifi info*/ + u32 dword[8]; +} __packed; + +struct rtl_tx_cmd_desc { + u32 dword[16]; +} __packed; + +struct rtl8192_tx_ring { + struct rtl_tx_desc *desc; /*tx desc / tx wifi info*/ + dma_addr_t dma; /*tx desc dma memory / tx wifi info dma memory*/ + unsigned int idx; + unsigned int entries; + struct sk_buff_head queue; + /*add for new trx flow*/ + struct rtl_tx_buffer_desc *buffer_desc; /*tx buffer descriptor*/ + dma_addr_t buffer_desc_dma; /*tx bufferd desc dma memory*/ + u16 avl_desc; /* available_desc_to_write */ + u16 cur_tx_wp; /* current_tx_write_point */ + u16 cur_tx_rp; /* current_tx_read_point */ +}; + +struct rtl8192_rx_ring { + struct rtl_rx_desc *desc;/*for old trx flow, not uesd in new trx*/ + /*dma matches either 'desc' or 'buffer_desc'*/ + dma_addr_t dma; + unsigned int idx; + struct sk_buff *rx_buf[RTL_PCI_MAX_RX_COUNT]; + /*add for new trx flow*/ + struct rtl_rx_buffer_desc *buffer_desc; /*rx buffer descriptor*/ + u16 next_rx_rp; /* next_rx_read_point */ +}; + +struct rtl_pci { + struct pci_dev *pdev; + bool irq_enabled; + + /*Tx */ + struct rtl8192_tx_ring tx_ring[RTL_PCI_MAX_TX_QUEUE_COUNT]; + int txringcount[RTL_PCI_MAX_TX_QUEUE_COUNT]; + u32 transmit_config; + + /*Rx */ + struct rtl8192_rx_ring rx_ring[RTL_PCI_MAX_RX_QUEUE]; + int rxringcount; + u16 rxbuffersize; + u32 receive_config; + + /*irq */ + u8 irq_alloc; + u32 irq_mask[2]; + u32 sys_irq_mask; + + /*Bcn control register setting */ + u32 reg_bcn_ctrl_val; + + /*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; + /*If it supports ASPM, Offset[560h] = 0x40, + otherwise Offset[560h] = 0x00. */ + bool b_support_aspm; + bool b_support_backdoor; + + /*QOS & EDCA */ + enum acm_method acm_method; + + u16 shortretry_limit; + u16 longretry_limit; + + /* MSI support */ + bool msi_support; + bool using_msi; +}; + +struct mp_adapter { + 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; + + u32 pcicfg_addrport; + u8 num4bytes; + + u8 pcibridge_pciehdr_offset; + u8 pcibridge_linkctrlreg; + + bool amd_l1_patch; +}; + +struct rtl_pci_priv { + struct rtl_pci dev; + struct mp_adapter ndis_adapter; + struct rtl_led_ctl ledctl; + struct bt_coexist_info btcoexist; +}; + +#define rtl_pcipriv(hw) (((struct rtl_pci_priv *)(rtl_priv(hw))->priv)) +#define rtl_pcidev(pcipriv) (&((pcipriv)->dev)) + +int rtl_pci_reset_trx_ring(struct ieee80211_hw *hw); + +extern struct rtl_intf_ops rtl_pci_ops; + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)) +int rtl_pci_probe(struct pci_dev *pdev, + const struct pci_device_id *id); +#else +int __devinit rtl_pci_probe(struct pci_dev *pdev, + const struct pci_device_id *id); +#endif +void rtl_pci_disconnect(struct pci_dev *pdev); +int rtl_pci_suspend(struct device *dev); +int rtl_pci_resume(struct device *dev); + +static inline u8 pci_read8_sync(struct rtl_priv *rtlpriv, u32 addr) +{ + return 0xff & readb((u8 __iomem *) rtlpriv->io.pci_mem_start + addr); +} + +static inline u16 pci_read16_sync(struct rtl_priv *rtlpriv, u32 addr) +{ + return readw((u8 __iomem *) rtlpriv->io.pci_mem_start + addr); +} + +static inline u32 pci_read32_sync(struct rtl_priv *rtlpriv, u32 addr) +{ + return readl((u8 __iomem *) rtlpriv->io.pci_mem_start + addr); +} + +static inline void pci_write8_async(struct rtl_priv *rtlpriv, u32 addr, u8 val) +{ + writeb(val, (u8 __iomem *) rtlpriv->io.pci_mem_start + addr); +} + +static inline void pci_write16_async(struct rtl_priv *rtlpriv, + u32 addr, u16 val) +{ + writew(val, (u8 __iomem *) rtlpriv->io.pci_mem_start + addr); +} + +static inline void pci_write32_async(struct rtl_priv *rtlpriv, + u32 addr, u32 val) +{ + writel(val, (u8 __iomem *) rtlpriv->io.pci_mem_start + addr); +} + +static inline void rtl_pci_raw_write_port_ulong(u32 port, u32 val) +{ + outl(val, port); +} + +static inline void rtl_pci_raw_write_port_uchar(u32 port, u8 val) +{ + outb(val, port); +} + +static inline void rtl_pci_raw_read_port_uchar(u32 port, u8 * pval) +{ + *pval = inb(port); +} + +static inline void rtl_pci_raw_read_port_ushort(u32 port, u16 * pval) +{ + *pval = inw(port); +} + +static inline void rtl_pci_raw_read_port_ulong(u32 port, u32 * pval) +{ + *pval = inl(port); +} + +#endif --- linux-3.13.0.orig/drivers/staging/rtl8821ae/ps.c +++ linux-3.13.0/drivers/staging/rtl8821ae/ps.c @@ -0,0 +1,1025 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#include "wifi.h" +#include "base.h" +#include "ps.h" +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0)) +#include +#endif +#include "btcoexist/rtl_btc.h" + +bool rtl_ps_enable_nic(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + bool init_status = true; + + /*<1> reset trx ring */ + if (rtlhal->interface == INTF_PCI) + rtlpriv->intf_ops->reset_trx_ring(hw); + + if (is_hal_stop(rtlhal)) + RT_TRACE(COMP_ERR, DBG_WARNING, ("Driver is already down!\n")); + + /*<2> Enable Adapter */ + rtlpriv->cfg->ops->hw_init(hw); + RT_CLEAR_PS_LEVEL(ppsc, RT_RF_OFF_LEVL_HALT_NIC); + /*init_status = false; */ + + /*<3> Enable Interrupt */ + rtlpriv->cfg->ops->enable_interrupt(hw); + + /* */ + rtl_watch_dog_timer_callback((unsigned long)hw); + + return init_status; +} +//EXPORT_SYMBOL(rtl_ps_enable_nic); + +bool rtl_ps_disable_nic(struct ieee80211_hw *hw) +{ + bool status = true; + struct rtl_priv *rtlpriv = rtl_priv(hw); + + /*<1> Stop all timer */ + rtl_deinit_deferred_work(hw); + + /*<2> Disable Interrupt */ + rtlpriv->cfg->ops->disable_interrupt(hw); + + /*<3> Disable Adapter */ + rtlpriv->cfg->ops->hw_disable(hw); + + return status; +} +//EXPORT_SYMBOL(rtl_ps_disable_nic); + +bool rtl_ps_set_rf_state(struct ieee80211_hw *hw, + enum rf_pwrstate state_toset, + u32 changesource, bool protect_or_not) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + enum rf_pwrstate rtstate; + bool b_actionallowed = false; + u16 rfwait_cnt = 0; + + /*protect_or_not = true; */ + + if (protect_or_not) + goto no_protect; + + /* + *Only one thread can change + *the RF state at one time, and others + *should wait to be executed. + */ + while (true) { + spin_lock(&rtlpriv->locks.rf_ps_lock); + if (ppsc->rfchange_inprogress) { + spin_unlock(&rtlpriv->locks.rf_ps_lock); + + RT_TRACE(COMP_ERR, DBG_WARNING, + ("RF Change in progress!" + "Wait to set..state_toset(%d).\n", + state_toset)); + + /* Set RF after the previous action is done. */ + while (ppsc->rfchange_inprogress) { + rfwait_cnt++; + mdelay(1); + /* + *Wait too long, return false to avoid + *to be stuck here. + */ + if (rfwait_cnt > 100) + return false; + } + } else { + ppsc->rfchange_inprogress = true; + spin_unlock(&rtlpriv->locks.rf_ps_lock); + break; + } + } + +no_protect: + rtstate = ppsc->rfpwr_state; + + switch (state_toset) { + case ERFON: + ppsc->rfoff_reason &= (~changesource); + + if ((changesource == RF_CHANGE_BY_HW) && + (ppsc->b_hwradiooff == true)) { + ppsc->b_hwradiooff = false; + } + + if (!ppsc->rfoff_reason) { + ppsc->rfoff_reason = 0; + b_actionallowed = true; + } + + break; + + case ERFOFF: + + if ((changesource == RF_CHANGE_BY_HW) && + (ppsc->b_hwradiooff == false)) { + ppsc->b_hwradiooff = true; + } + + ppsc->rfoff_reason |= changesource; + b_actionallowed = true; + break; + + case ERFSLEEP: + ppsc->rfoff_reason |= changesource; + b_actionallowed = true; + break; + + default: + RT_TRACE(COMP_ERR, DBG_EMERG, ("switch case not process \n")); + break; + } + + if (b_actionallowed) + rtlpriv->cfg->ops->set_rf_power_state(hw, state_toset); + + if (!protect_or_not) { + spin_lock(&rtlpriv->locks.rf_ps_lock); + ppsc->rfchange_inprogress = false; + spin_unlock(&rtlpriv->locks.rf_ps_lock); + } + + return b_actionallowed; +} +//EXPORT_SYMBOL(rtl_ps_set_rf_state); + +static void _rtl_ps_inactive_ps(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + + ppsc->b_swrf_processing = true; + + if (ppsc->inactive_pwrstate == ERFON && rtlhal->interface == INTF_PCI) { + if ((ppsc->reg_rfps_level & RT_RF_OFF_LEVL_ASPM) && + RT_IN_PS_LEVEL(ppsc, RT_PS_LEVEL_ASPM) && + rtlhal->interface == INTF_PCI) { + rtlpriv->intf_ops->disable_aspm(hw); + RT_CLEAR_PS_LEVEL(ppsc, RT_PS_LEVEL_ASPM); + } + } + + if (rtlpriv->cfg->ops->get_btc_status()){ + rtlpriv->btcoexist.btc_ops->btc_ips_notify(rtlpriv, + ppsc->inactive_pwrstate); + } + rtl_ps_set_rf_state(hw, ppsc->inactive_pwrstate, + RF_CHANGE_BY_IPS, false); + + if (ppsc->inactive_pwrstate == ERFOFF && + rtlhal->interface == INTF_PCI) { + if (ppsc->reg_rfps_level & RT_RF_OFF_LEVL_ASPM && + !RT_IN_PS_LEVEL(ppsc, RT_PS_LEVEL_ASPM)) { + rtlpriv->intf_ops->enable_aspm(hw); + RT_SET_PS_LEVEL(ppsc, RT_PS_LEVEL_ASPM); + } + } + + ppsc->b_swrf_processing = false; +} + +void rtl_ips_nic_off_wq_callback(void *data) +{ + struct rtl_works *rtlworks = + container_of_dwork_rtl(data, struct rtl_works, ips_nic_off_wq); + struct ieee80211_hw *hw = rtlworks->hw; + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + enum rf_pwrstate rtstate; + + if (mac->opmode != NL80211_IFTYPE_STATION) { + RT_TRACE(COMP_ERR, DBG_WARNING, ("not station return\n")); + return; + } + + if (mac->p2p_in_use) + return; + + if (mac->link_state > MAC80211_NOLINK) + return; + + if (is_hal_stop(rtlhal)) + return; + + if (rtlpriv->sec.being_setkey) + return; + + if(rtlpriv->cfg->ops->bt_turn_off_bt_coexist_before_enter_lps) + rtlpriv->cfg->ops->bt_turn_off_bt_coexist_before_enter_lps(hw); + + if (ppsc->b_inactiveps) { + rtstate = ppsc->rfpwr_state; + + /* + *Do not enter IPS in the following conditions: + *(1) RF is already OFF or Sleep + *(2) b_swrf_processing (indicates the IPS is still under going) + *(3) Connectted (only disconnected can trigger IPS) + *(4) IBSS (send Beacon) + *(5) AP mode (send Beacon) + *(6) monitor mode (rcv packet) + */ + + if (rtstate == ERFON && + !ppsc->b_swrf_processing && + (mac->link_state == MAC80211_NOLINK) && + !mac->act_scanning) { + RT_TRACE(COMP_RF, DBG_LOUD, + ("IPSEnter(): Turn off RF.\n")); + + ppsc->inactive_pwrstate = ERFOFF; + ppsc->b_in_powersavemode = true; + + /*rtl_pci_reset_trx_ring(hw); */ + _rtl_ps_inactive_ps(hw); + } + } +} + +void rtl_ips_nic_off(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + /* + *because when link with ap, mac80211 will ask us + *to disable nic quickly after scan before linking, + *this will cause link failed, so we delay 100ms here + */ + queue_delayed_work(rtlpriv->works.rtl_wq, + &rtlpriv->works.ips_nic_off_wq, MSECS(100)); +} + +/* NOTICE: any opmode should exc nic_on, or disable without + * nic_on may something wrong, like adhoc TP*/ +void rtl_ips_nic_on(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + enum rf_pwrstate rtstate; + + cancel_delayed_work(&rtlpriv->works.ips_nic_off_wq); + + spin_lock(&rtlpriv->locks.ips_lock); + if (ppsc->b_inactiveps) { + rtstate = ppsc->rfpwr_state; + + if (rtstate != ERFON && + !ppsc->b_swrf_processing && + ppsc->rfoff_reason <= RF_CHANGE_BY_IPS) { + + ppsc->inactive_pwrstate = ERFON; + ppsc->b_in_powersavemode = false; + _rtl_ps_inactive_ps(hw); + } + } + spin_unlock(&rtlpriv->locks.ips_lock); +} + +/*for FW LPS*/ + +/* + *Determine if we can set Fw into PS mode + *in current condition.Return true if it + *can enter PS mode. + */ +static bool rtl_get_fwlps_doze(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + u32 ps_timediff; + + ps_timediff = jiffies_to_msecs(jiffies - + ppsc->last_delaylps_stamp_jiffies); + + if (ps_timediff < 2000) { + RT_TRACE(COMP_POWER, DBG_LOUD, + ("Delay enter Fw LPS for DHCP, ARP," + " or EAPOL exchanging state.\n")); + return false; + } + + if (mac->link_state != MAC80211_LINKED) + return false; + + if (mac->opmode == NL80211_IFTYPE_ADHOC) + return false; + + return true; +} + +/* Change current and default preamble mode.*/ +void rtl_lps_set_psmode(struct ieee80211_hw *hw, u8 rt_psmode) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + bool enter_fwlps; + + if (mac->opmode == NL80211_IFTYPE_ADHOC) + return; + + if (mac->link_state != MAC80211_LINKED) + return; + + if (ppsc->dot11_psmode == rt_psmode) + return; + + /* Update power save mode configured. */ + ppsc->dot11_psmode = rt_psmode; + + /* + * + *1. Enter PS mode + * Set RPWM to Fw to turn RF off and send H2C fw_pwrmode + * cmd to set Fw into PS mode. + *2. Leave PS mode + * Send H2C fw_pwrmode cmd to Fw to set Fw into Active + * mode and set RPWM to turn RF on. + */ + + if ((ppsc->b_fwctrl_lps) && ppsc->report_linked) { + if (ppsc->dot11_psmode == EACTIVE) { + RT_TRACE(COMP_RF, DBG_DMESG, + ("FW LPS leave ps_mode:%x\n", + FW_PS_ACTIVE_MODE)); + enter_fwlps = false; + ppsc->pwr_mode = FW_PS_ACTIVE_MODE; + ppsc->smart_ps = 0; + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_FW_LPS_ACTION, + (u8 *)(&enter_fwlps)); + if (ppsc->p2p_ps_info.opp_ps) + rtl_p2p_ps_cmd(hw,P2P_PS_ENABLE); + + } else { + if (rtl_get_fwlps_doze(hw)) { + RT_TRACE(COMP_RF, DBG_DMESG, + ("FW LPS enter ps_mode:%x\n", + ppsc->fwctrl_psmode)); + enter_fwlps = true; + ppsc->pwr_mode = ppsc->fwctrl_psmode; + ppsc->smart_ps = 2; + rtlpriv->cfg->ops->set_hw_reg(hw, + HW_VAR_FW_LPS_ACTION, + (u8 *)(&enter_fwlps)); + + } else { + /* Reset the power save related parameters. */ + ppsc->dot11_psmode = EACTIVE; + } + } + } +} + +/*Enter the leisure power save mode.*/ +void rtl_lps_enter(struct ieee80211_hw *hw) +{ + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + struct rtl_priv *rtlpriv = rtl_priv(hw); + unsigned long flag; + + if (!ppsc->b_fwctrl_lps) + return; + + if (rtlpriv->sec.being_setkey) + return; + + if (rtlpriv->link_info.b_busytraffic) + return; + + /*sleep after linked 10s, to let DHCP and 4-way handshake ok enough!! */ + if (mac->cnt_after_linked < 5) + return; + + if (mac->opmode == NL80211_IFTYPE_ADHOC) + return; + + if (mac->link_state != MAC80211_LINKED) + return; + + spin_lock_irqsave(&rtlpriv->locks.lps_lock, flag); + + /* Idle for a while if we connect to AP a while ago. */ + if (mac->cnt_after_linked >= 2) { + if (ppsc->dot11_psmode == EACTIVE) { + RT_TRACE(COMP_POWER, DBG_LOUD, + ("Enter 802.11 power save mode...\n")); + + rtl_lps_set_psmode(hw, EAUTOPS); + } + } + + spin_unlock_irqrestore(&rtlpriv->locks.lps_lock, flag); +} + +/*Leave the leisure power save mode.*/ +void rtl_lps_leave(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + unsigned long flag; + + spin_lock_irqsave(&rtlpriv->locks.lps_lock, flag); + + if (ppsc->b_fwctrl_lps) { + if (ppsc->dot11_psmode != EACTIVE) { + + /*FIX ME */ + rtlpriv->cfg->ops->enable_interrupt(hw); + + if (ppsc->reg_rfps_level & RT_RF_LPS_LEVEL_ASPM && + RT_IN_PS_LEVEL(ppsc, RT_PS_LEVEL_ASPM) && + rtlhal->interface == INTF_PCI) { + rtlpriv->intf_ops->disable_aspm(hw); + RT_CLEAR_PS_LEVEL(ppsc, RT_PS_LEVEL_ASPM); + } + + RT_TRACE(COMP_POWER, DBG_LOUD, + ("Busy Traffic,Leave 802.11 power save..\n")); + + rtl_lps_set_psmode(hw, EACTIVE); + } + } + spin_unlock_irqrestore(&rtlpriv->locks.lps_lock, flag); +} + +/* For sw LPS*/ +void rtl_swlps_beacon(struct ieee80211_hw *hw, void *data, unsigned int len) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct ieee80211_hdr *hdr = (void *) data; + struct ieee80211_tim_ie *tim_ie; + u8 *tim; + u8 tim_len; + bool u_buffed; + bool m_buffed; + + if (mac->opmode != NL80211_IFTYPE_STATION) + return; + + if (!rtlpriv->psc.b_swctrl_lps) + return; + + if (rtlpriv->mac80211.link_state != MAC80211_LINKED) + return; + + if (!rtlpriv->psc.sw_ps_enabled) + return; + + if (rtlpriv->psc.b_fwctrl_lps) + return; + + if (likely(!(hw->conf.flags & IEEE80211_CONF_PS))) + return; + + /* check if this really is a beacon */ + if (!ieee80211_is_beacon(hdr->frame_control)) + return; + + /* min. beacon length + FCS_LEN */ + if (len <= 40 + FCS_LEN) + return; + + /* and only beacons from the associated BSSID, please */ + if (ether_addr_equal(hdr->addr3, rtlpriv->mac80211.bssid)) + return; + + rtlpriv->psc.last_beacon = jiffies; + + tim = rtl_find_ie(data, len - FCS_LEN, WLAN_EID_TIM); + if (!tim) + return; + + if (tim[1] < sizeof(*tim_ie)) + return; + + tim_len = tim[1]; + tim_ie = (struct ieee80211_tim_ie *) &tim[2]; + +/**/ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) +/**/ + if (!WARN_ON_ONCE(!hw->conf.ps_dtim_period)) + rtlpriv->psc.dtim_counter = tim_ie->dtim_count; +/**/ +#else + if (!WARN_ON_ONCE(!mac->vif->bss_conf.dtim_period)) + rtlpriv->psc.dtim_counter = tim_ie->dtim_count; +#endif +/**/ + + /* Check whenever the PHY can be turned off again. */ + + /* 1. What about buffered unicast traffic for our AID? */ + u_buffed = ieee80211_check_tim(tim_ie, tim_len, + rtlpriv->mac80211.assoc_id); + + /* 2. Maybe the AP wants to send multicast/broadcast data? */ + m_buffed = tim_ie->bitmap_ctrl & 0x01; + rtlpriv->psc.multi_buffered = m_buffed; + + /* unicast will process by mac80211 through + * set ~IEEE80211_CONF_PS, So we just check + * multicast frames here */ + if (!m_buffed ) {//&&) {// !rtlpriv->psc.tx_doing) { + /* back to low-power land. and delay is + * prevent null power save frame tx fail */ + queue_delayed_work(rtlpriv->works.rtl_wq, + &rtlpriv->works.ps_work, MSECS(5)); + } else { + RT_TRACE(COMP_POWER, DBG_DMESG, + ("u_bufferd: %x, m_buffered: %x\n", + u_buffed, m_buffed)); + } +} + +void rtl_swlps_rf_awake(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + unsigned long flag; + + if (!rtlpriv->psc.b_swctrl_lps) + return; + if (mac->link_state != MAC80211_LINKED) + return; + + if (ppsc->reg_rfps_level & RT_RF_LPS_LEVEL_ASPM && + RT_IN_PS_LEVEL(ppsc, RT_PS_LEVEL_ASPM)) { + rtlpriv->intf_ops->disable_aspm(hw); + RT_CLEAR_PS_LEVEL(ppsc, RT_PS_LEVEL_ASPM); + } + + spin_lock_irqsave(&rtlpriv->locks.lps_lock, flag); + rtl_ps_set_rf_state(hw, ERFON, RF_CHANGE_BY_PS, false); + spin_unlock_irqrestore(&rtlpriv->locks.lps_lock, flag); +} + +void rtl_swlps_rfon_wq_callback(void *data) +{ + struct rtl_works *rtlworks = + container_of_dwork_rtl(data, struct rtl_works, ps_rfon_wq); + struct ieee80211_hw *hw = rtlworks->hw; + + rtl_swlps_rf_awake(hw); +} + +void rtl_swlps_rf_sleep(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + unsigned long flag; + u8 sleep_intv; + + if (!rtlpriv->psc.sw_ps_enabled) + return; + + if ((rtlpriv->sec.being_setkey) || + (mac->opmode == NL80211_IFTYPE_ADHOC)) + return; + + /*sleep after linked 10s, to let DHCP and 4-way handshake ok enough!! */ + if ((mac->link_state != MAC80211_LINKED) || (mac->cnt_after_linked < 5)) + return; + + if (rtlpriv->link_info.b_busytraffic) + return; + + spin_lock(&rtlpriv->locks.rf_ps_lock); + if (rtlpriv->psc.rfchange_inprogress) { + spin_unlock(&rtlpriv->locks.rf_ps_lock); + return; + } + spin_unlock(&rtlpriv->locks.rf_ps_lock); + + spin_lock_irqsave(&rtlpriv->locks.lps_lock, flag); + rtl_ps_set_rf_state(hw, ERFSLEEP, RF_CHANGE_BY_PS,false); + spin_unlock_irqrestore(&rtlpriv->locks.lps_lock, flag); + + if (ppsc->reg_rfps_level & RT_RF_OFF_LEVL_ASPM && + !RT_IN_PS_LEVEL(ppsc, RT_PS_LEVEL_ASPM)) { + rtlpriv->intf_ops->enable_aspm(hw); + RT_SET_PS_LEVEL(ppsc, RT_PS_LEVEL_ASPM); + } + + /* here is power save alg, when this beacon is DTIM + * we will set sleep time to dtim_period * n; + * when this beacon is not DTIM, we will set sleep + * time to sleep_intv = rtlpriv->psc.dtim_counter or + * MAX_SW_LPS_SLEEP_INTV(default set to 5) */ + +/**/ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) +/**/ + if (rtlpriv->psc.dtim_counter == 0) { + if (hw->conf.ps_dtim_period == 1) + sleep_intv = hw->conf.ps_dtim_period * 2; + else + sleep_intv = hw->conf.ps_dtim_period; + } else { + sleep_intv = rtlpriv->psc.dtim_counter; + } +/**/ +#else + if (rtlpriv->psc.dtim_counter == 0) { + if (mac->vif->bss_conf.dtim_period == 1) + sleep_intv = mac->vif->bss_conf.dtim_period * 2; + else + sleep_intv = mac->vif->bss_conf.dtim_period; + } else { + sleep_intv = rtlpriv->psc.dtim_counter; + } +#endif +/**/ + + if (sleep_intv > MAX_SW_LPS_SLEEP_INTV) + sleep_intv = MAX_SW_LPS_SLEEP_INTV; + + /* this print should always be dtim_conter = 0 & + * sleep = dtim_period, that meaons, we should + * awake before every dtim */ + RT_TRACE(COMP_POWER, DBG_DMESG, + ("dtim_counter:%x will sleep :%d beacon_intv\n", + rtlpriv->psc.dtim_counter, sleep_intv)); + + /* we tested that 40ms is enough for sw & hw sw delay */ + queue_delayed_work(rtlpriv->works.rtl_wq, &rtlpriv->works.ps_rfon_wq, + MSECS(sleep_intv * mac->vif->bss_conf.beacon_int - 40)); +} + + +void rtl_swlps_wq_callback(void *data) +{ + struct rtl_works *rtlworks = + container_of_dwork_rtl(data, struct rtl_works, ps_work); + struct ieee80211_hw *hw = rtlworks->hw; + struct rtl_priv *rtlpriv = rtl_priv(hw); + bool ps = false; + + ps = (hw->conf.flags & IEEE80211_CONF_PS); + + /* we can sleep after ps null send ok */ + if (rtlpriv->psc.state_inap) { + rtl_swlps_rf_sleep(hw); + + if (rtlpriv->psc.state && !ps) { + rtlpriv->psc.sleep_ms = + jiffies_to_msecs(jiffies - + rtlpriv->psc.last_action); + } + + if (ps) + rtlpriv->psc.last_slept = jiffies; + + rtlpriv->psc.last_action = jiffies; + rtlpriv->psc.state = ps; + } +} + + +void rtl_p2p_noa_ie(struct ieee80211_hw *hw, void *data, unsigned int len) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct ieee80211_mgmt *mgmt = (void *)data; + struct rtl_p2p_ps_info *p2pinfo = &(rtlpriv->psc.p2p_ps_info); + u8 *pos, *end, *ie; + u16 noa_len; + static u8 p2p_oui_ie_type[4] = {0x50, 0x6f, 0x9a, 0x09}; + u8 noa_num, index,i, noa_index = 0; + bool find_p2p_ie = false , find_p2p_ps_ie = false; + pos = (u8 *)mgmt->u.beacon.variable; + end = data + len; + ie = NULL; + + while (pos + 1 < end) { + + if (pos + 2 + pos[1] > end) + return; + + if (pos[0] == 221 && pos[1] > 4) { + if (memcmp(&pos[2], p2p_oui_ie_type, 4) == 0) { + ie = pos + 2+4; + break; + } + } + pos += 2 + pos[1]; + } + + if (ie == NULL) + return; + find_p2p_ie = true; + /*to find noa ie*/ + while (ie + 1 < end) { + noa_len = READEF2BYTE(&ie[1]); + if (ie + 3 + ie[1] > end) + return; + + if (ie[0] == 12) { + find_p2p_ps_ie = true; + if ( (noa_len - 2) % 13 != 0){ + RT_TRACE(COMP_INIT, DBG_LOUD, + ("P2P notice of absence: " + "invalid length.%d\n",noa_len)); + return; + } else { + noa_num = (noa_len - 2) / 13; + } + noa_index = ie[3]; + if (rtlpriv->psc.p2p_ps_info.p2p_ps_mode == P2P_PS_NONE + || noa_index != p2pinfo->noa_index) { + RT_TRACE(COMP_FW, DBG_LOUD, + ("update NOA ie.\n")); + p2pinfo->noa_index = noa_index; + p2pinfo->opp_ps= (ie[4] >> 7); + p2pinfo->ctwindow = ie[4] & 0x7F; + p2pinfo->noa_num = noa_num; + index = 5; + for (i = 0; i< noa_num; i++){ + p2pinfo->noa_count_type[i] = + READEF1BYTE(ie+index); + index += 1; + p2pinfo->noa_duration[i] = + READEF4BYTE(ie+index); + index += 4; + p2pinfo->noa_interval[i] = + READEF4BYTE(ie+index); + index += 4; + p2pinfo->noa_start_time[i] = + READEF4BYTE(ie+index); + index += 4; + } + + if (p2pinfo->opp_ps == 1) { + p2pinfo->p2p_ps_mode = P2P_PS_CTWINDOW; + /* Driver should wait LPS + * entering CTWindow*/ + if (rtlpriv->psc.b_fw_current_inpsmode){ + rtl_p2p_ps_cmd(hw, + P2P_PS_ENABLE); + } + } else if (p2pinfo->noa_num > 0) { + p2pinfo->p2p_ps_mode = P2P_PS_NOA; + rtl_p2p_ps_cmd(hw, P2P_PS_ENABLE); + } else if (p2pinfo->p2p_ps_mode > P2P_PS_NONE) { + rtl_p2p_ps_cmd(hw, P2P_PS_DISABLE); + } + } + + break; + } + ie += 3 + noa_len; + } + + if (find_p2p_ie == true) { + if ((p2pinfo->p2p_ps_mode > P2P_PS_NONE) && + (find_p2p_ps_ie == false)) + rtl_p2p_ps_cmd(hw, P2P_PS_DISABLE); + } +} + +void rtl_p2p_action_ie(struct ieee80211_hw *hw, void *data, unsigned int len) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct ieee80211_mgmt *mgmt = (void *)data; + struct rtl_p2p_ps_info *p2pinfo = &(rtlpriv->psc.p2p_ps_info); + bool find_p2p_ie = false , find_p2p_ps_ie = false; + u8 noa_num, index,i, noa_index = 0; + u8 *pos, *end, *ie; + u16 noa_len; + static u8 p2p_oui_ie_type[4] = {0x50, 0x6f, 0x9a, 0x09}; + + pos = (u8 *) &mgmt->u.action.category; + end = data + len; + ie = NULL; + + if (pos[0] == 0x7f ) { + if (memcmp(&pos[1], p2p_oui_ie_type, 4) == 0) { + ie = pos + 3+4; + } + } + + if (ie == NULL) + return; + find_p2p_ie = true; + + RT_TRACE(COMP_FW, DBG_LOUD, ("action frame find P2P IE.\n")); + /*to find noa ie*/ + while (ie + 1 < end) { + noa_len = READEF2BYTE(&ie[1]); + if (ie + 3 + ie[1] > end) + return; + + if (ie[0] == 12) { + RT_TRACE(COMP_FW, DBG_LOUD, ("find NOA IE.\n")); + RT_PRINT_DATA(rtlpriv, COMP_FW, DBG_LOUD, ("noa ie "), + ie, noa_len); + find_p2p_ps_ie = true; + if ( (noa_len - 2) % 13 != 0){ + RT_TRACE(COMP_FW, DBG_LOUD, + ("P2P notice of absence: " + "invalid length.%d\n",noa_len)); + return; + } else { + noa_num = (noa_len - 2) / 13; + } + noa_index = ie[3]; + if (rtlpriv->psc.p2p_ps_info.p2p_ps_mode == P2P_PS_NONE + || noa_index != p2pinfo->noa_index) { + p2pinfo->noa_index = noa_index; + p2pinfo->opp_ps= (ie[4] >> 7); + p2pinfo->ctwindow = ie[4] & 0x7F; + p2pinfo->noa_num = noa_num; + index = 5; + for (i = 0; i< noa_num; i++){ + p2pinfo->noa_count_type[i] = + READEF1BYTE(ie+index); + index += 1; + p2pinfo->noa_duration[i] = + READEF4BYTE(ie+index); + index += 4; + p2pinfo->noa_interval[i] = + READEF4BYTE(ie+index); + index += 4; + p2pinfo->noa_start_time[i] = + READEF4BYTE(ie+index); + index += 4; + } + + if (p2pinfo->opp_ps == 1) { + p2pinfo->p2p_ps_mode = P2P_PS_CTWINDOW; + /* Driver should wait LPS + * entering CTWindow */ + if (rtlpriv->psc.b_fw_current_inpsmode){ + rtl_p2p_ps_cmd(hw, + P2P_PS_ENABLE); + } + } else if (p2pinfo->noa_num > 0) { + p2pinfo->p2p_ps_mode = P2P_PS_NOA; + rtl_p2p_ps_cmd(hw, P2P_PS_ENABLE); + } else if (p2pinfo->p2p_ps_mode > P2P_PS_NONE) { + rtl_p2p_ps_cmd(hw, P2P_PS_DISABLE); + } + } + + break; + } + ie += 3 + noa_len; + } + + +} + + +void rtl_p2p_ps_cmd(struct ieee80211_hw *hw,u8 p2p_ps_state) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_ps_ctl *rtlps = rtl_psc(rtl_priv(hw)); + struct rtl_p2p_ps_info *p2pinfo = &(rtlpriv->psc.p2p_ps_info); + + RT_TRACE(COMP_FW, DBG_LOUD, (" p2p state %x\n",p2p_ps_state)); + switch (p2p_ps_state) { + case P2P_PS_DISABLE: + p2pinfo->p2p_ps_state = p2p_ps_state; + rtlpriv->cfg->ops->set_hw_reg(hw, + HW_VAR_H2C_FW_P2P_PS_OFFLOAD, + (u8 *)(&p2p_ps_state)); + + p2pinfo->noa_index = 0; + p2pinfo->ctwindow = 0; + p2pinfo->opp_ps = 0; + p2pinfo->noa_num = 0; + p2pinfo->p2p_ps_mode = P2P_PS_NONE; + if (rtlps->b_fw_current_inpsmode == true) { + if (rtlps->smart_ps == 0) { + rtlps->smart_ps = 2; + rtlpriv->cfg->ops->set_hw_reg(hw, + HW_VAR_H2C_FW_PWRMODE, + (u8 *)(&rtlps->pwr_mode)); + } + + } + break; + case P2P_PS_ENABLE: + if (p2pinfo->p2p_ps_mode > P2P_PS_NONE) { + p2pinfo->p2p_ps_state = p2p_ps_state; + + if (p2pinfo->ctwindow > 0) { + if (rtlps->smart_ps != 0){ + rtlps->smart_ps = 0; + rtlpriv->cfg->ops->set_hw_reg( + hw, HW_VAR_H2C_FW_PWRMODE, + (u8 *)(&rtlps->pwr_mode)); + } + } + rtlpriv->cfg->ops->set_hw_reg(hw, + 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 (p2pinfo->p2p_ps_mode > P2P_PS_NONE) { + p2pinfo->p2p_ps_state = p2p_ps_state; + rtlpriv->cfg->ops->set_hw_reg(hw, + HW_VAR_H2C_FW_P2P_PS_OFFLOAD, + (u8 *)(&p2p_ps_state)); + } + break; + default: + break; + + } + RT_TRACE(COMP_FW, DBG_LOUD, (" ctwindow %x oppps %x \n", + p2pinfo->ctwindow,p2pinfo->opp_ps)); + RT_TRACE(COMP_FW, DBG_LOUD, ("count %x duration %x index %x interval %x" + " start time %x noa num %x\n", + p2pinfo->noa_count_type[0], + p2pinfo->noa_duration[0], + p2pinfo->noa_index, + p2pinfo->noa_interval[0], + p2pinfo->noa_start_time[0], + p2pinfo->noa_num)); + RT_TRACE(COMP_FW, DBG_LOUD, ("end\n")); +} + +void rtl_p2p_info(struct ieee80211_hw *hw, void *data, unsigned int len) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct ieee80211_hdr *hdr = (void *) data; + + if (!mac->p2p) + return; + if (mac->link_state != MAC80211_LINKED) + return; + /* min. beacon length + FCS_LEN */ + if (len <= 40 + FCS_LEN) + return; + + /* and only beacons from the associated BSSID, please */ + if (ether_addr_equal(hdr->addr3, rtlpriv->mac80211.bssid)) + return; + + /* check if this really is a beacon */ + if (!(ieee80211_is_beacon(hdr->frame_control) || + ieee80211_is_probe_resp(hdr->frame_control) || + ieee80211_is_action(hdr->frame_control))) + return; + + if (ieee80211_is_action(hdr->frame_control)) { + rtl_p2p_action_ie(hw,data,len - FCS_LEN); + } else { + rtl_p2p_noa_ie(hw,data,len - FCS_LEN); + } + +} --- linux-3.13.0.orig/drivers/staging/rtl8821ae/ps.h +++ linux-3.13.0/drivers/staging/rtl8821ae/ps.h @@ -0,0 +1,55 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#ifndef __REALTEK_RTL_PCI_PS_H__ +#define __REALTEK_RTL_PCI_PS_H__ + +#define MAX_SW_LPS_SLEEP_INTV 5 + +bool rtl_ps_set_rf_state(struct ieee80211_hw *hw, + enum rf_pwrstate state_toset, u32 changesource, + bool protect_or_not); +bool rtl_ps_enable_nic(struct ieee80211_hw *hw); +bool rtl_ps_disable_nic(struct ieee80211_hw *hw); +void rtl_ips_nic_off(struct ieee80211_hw *hw); +void rtl_ips_nic_on(struct ieee80211_hw *hw); +void rtl_ips_nic_off_wq_callback(void *data); +void rtl_lps_enter(struct ieee80211_hw *hw); +void rtl_lps_leave(struct ieee80211_hw *hw); + +void rtl_lps_set_psmode(struct ieee80211_hw *hw, u8 rt_psmode); + +void rtl_swlps_beacon(struct ieee80211_hw *hw, void *data, unsigned int len); +void rtl_swlps_wq_callback(void *data); +void rtl_swlps_rfon_wq_callback(void *data); +void rtl_swlps_rf_awake(struct ieee80211_hw *hw); +void rtl_swlps_rf_sleep(struct ieee80211_hw *hw); +void rtl_p2p_ps_cmd(struct ieee80211_hw *hw,u8 p2p_ps_state); +void rtl_p2p_info(struct ieee80211_hw *hw, void *data, unsigned int len); +#endif --- linux-3.13.0.orig/drivers/staging/rtl8821ae/rc.c +++ linux-3.13.0/drivers/staging/rtl8821ae/rc.c @@ -0,0 +1,309 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#include "wifi.h" +#include "base.h" +#include "rc.h" + +/* + *Finds the highest rate index we can use + *if skb is special data like DHCP/EAPOL, we set should + *it to lowest rate CCK_1M, otherwise we set rate to + *highest rate based on wireless mode used for iwconfig + *show Tx rate. + */ +static u8 _rtl_rc_get_highest_rix(struct rtl_priv *rtlpriv, + struct ieee80211_sta *sta, + struct sk_buff *skb, bool not_data) +{ + struct rtl_mac *rtlmac = rtl_mac(rtlpriv); + struct rtl_hal *rtlhal = rtl_hal(rtlpriv); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct rtl_sta_info *sta_entry = NULL; + u8 wireless_mode = 0; + + /* + *this rate is no use for true rate, firmware + *will control rate at all it just used for + *1.show in iwconfig in B/G mode + *2.in rtl_get_tcb_desc when we check rate is + * 1M we will not use FW rate but user rate. + */ + if (rtlmac->opmode == NL80211_IFTYPE_AP || + rtlmac->opmode == NL80211_IFTYPE_ADHOC || + rtlmac->opmode == NL80211_IFTYPE_MESH_POINT) { + if (sta) { + sta_entry = (struct rtl_sta_info *) sta->drv_priv; + wireless_mode = sta_entry->wireless_mode; + } else { + return 0; + } + } else { + wireless_mode = rtlmac->mode; + } + + if (rtl_is_special_data(rtlpriv->mac80211.hw, skb, true) || not_data) { + return 0; + } else { + if (rtlhal->current_bandtype == BAND_ON_2_4G) { + if (wireless_mode == WIRELESS_MODE_B) { + return B_MODE_MAX_RIX; + } else if (wireless_mode == WIRELESS_MODE_G) { + return G_MODE_MAX_RIX; + } else { + if (get_rf_type(rtlphy) != RF_2T2R) + return N_MODE_MCS7_RIX; + else + return N_MODE_MCS15_RIX; + } + } else { + if (wireless_mode == WIRELESS_MODE_A) { + return A_MODE_MAX_RIX; + } else { + if (get_rf_type(rtlphy) != RF_2T2R) + return N_MODE_MCS7_RIX; + else + return N_MODE_MCS15_RIX; + } + } + } +} + +static void _rtl_rc_rate_set_series(struct rtl_priv *rtlpriv, + struct ieee80211_sta *sta, + struct ieee80211_tx_rate *rate, + struct ieee80211_tx_rate_control *txrc, + u8 tries, char rix, int rtsctsenable, + bool not_data) +{ + struct rtl_mac *mac = rtl_mac(rtlpriv); + u8 sgi_20 = 0, sgi_40 = 0; + + if (sta) { + sgi_20 = sta->ht_cap.cap & IEEE80211_HT_CAP_SGI_20; + sgi_40 = sta->ht_cap.cap & IEEE80211_HT_CAP_SGI_40; + } + rate->count = tries; + rate->idx = rix >= 0x00 ? rix : 0x00; + + if (!not_data) { + if (txrc->short_preamble) + rate->flags |= IEEE80211_TX_RC_USE_SHORT_PREAMBLE; + if (mac->opmode == NL80211_IFTYPE_AP || + mac->opmode == NL80211_IFTYPE_ADHOC) { + if (sta && (sta->ht_cap.cap & + IEEE80211_HT_CAP_SUP_WIDTH_20_40)) + rate->flags |= IEEE80211_TX_RC_40_MHZ_WIDTH; + } else { + if (mac->bw_40) + rate->flags |= IEEE80211_TX_RC_40_MHZ_WIDTH; + } + if (sgi_20 || sgi_40) + rate->flags |= IEEE80211_TX_RC_SHORT_GI; + if (sta && sta->ht_cap.ht_supported) + rate->flags |= IEEE80211_TX_RC_MCS; + } +} + +static void rtl_get_rate(void *ppriv, struct ieee80211_sta *sta, + void *priv_sta, + struct ieee80211_tx_rate_control *txrc) +{ + struct rtl_priv *rtlpriv = ppriv; + struct sk_buff *skb = txrc->skb; + struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb); + struct ieee80211_tx_rate *rates = tx_info->control.rates; + __le16 fc = rtl_get_fc(skb); + u8 try_per_rate, i, rix; + bool not_data = !ieee80211_is_data(fc); + + if (rate_control_send_low(sta, priv_sta, txrc)) + return; + + rix = _rtl_rc_get_highest_rix(rtlpriv, sta, skb, not_data); + try_per_rate = 1; + _rtl_rc_rate_set_series(rtlpriv, sta, &rates[0], txrc, + try_per_rate, rix, 1, not_data); + + if (!not_data) { + for (i = 1; i < 4; i++) + _rtl_rc_rate_set_series(rtlpriv, sta, &rates[i], + txrc, i, (rix - i), 1, + not_data); + } +} + +static bool _rtl_tx_aggr_check(struct rtl_priv *rtlpriv, + struct rtl_sta_info *sta_entry, u16 tid) +{ + struct rtl_mac *mac = rtl_mac(rtlpriv); + + if (mac->act_scanning) + return false; + + if (mac->opmode == NL80211_IFTYPE_STATION && + mac->cnt_after_linked < 3) + return false; + + if (sta_entry->tids[tid].agg.agg_state == RTL_AGG_STOP) + return true; + + return false; +} + +/*mac80211 Rate Control callbacks*/ +static void rtl_tx_status(void *ppriv, + struct ieee80211_supported_band *sband, + struct ieee80211_sta *sta, void *priv_sta, + struct sk_buff *skb) +{ + struct rtl_priv *rtlpriv = ppriv; + struct rtl_mac *mac = rtl_mac(rtlpriv); + struct ieee80211_hdr *hdr = rtl_get_hdr(skb); + __le16 fc = rtl_get_fc(skb); + struct rtl_sta_info *sta_entry; + + if (!priv_sta || !ieee80211_is_data(fc)) + return; + + if (rtl_is_special_data(mac->hw, skb, true)) + return; + + if (is_multicast_ether_addr(ieee80211_get_DA(hdr)) || + is_broadcast_ether_addr(ieee80211_get_DA(hdr))) + return; + + if (sta) { + /* Check if aggregation has to be enabled for this tid */ + sta_entry = (struct rtl_sta_info *) sta->drv_priv; + if ((sta->ht_cap.ht_supported == true) && + !(skb->protocol == cpu_to_be16(ETH_P_PAE))) { + if (ieee80211_is_data_qos(fc)) { + u8 tid = rtl_get_tid(skb); + if (_rtl_tx_aggr_check(rtlpriv, sta_entry, + tid)) { + sta_entry->tids[tid].agg.agg_state = + RTL_AGG_PROGRESS; + /**/ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38)) + /**/ + ieee80211_start_tx_ba_session(sta, tid, + 5000); + /**/ +#else + ieee80211_start_tx_ba_session(sta, tid); +#endif + /**/ + } + } + } + } +} + +static void rtl_rate_init(void *ppriv, + struct ieee80211_supported_band *sband, + struct cfg80211_chan_def *chandef, + struct ieee80211_sta *sta, void *priv_sta) +{ +} +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0)) +static void rtl_rate_update(void *ppriv, + struct ieee80211_supported_band *sband, + struct ieee80211_sta *sta, void *priv_sta, + u32 changed, + enum nl80211_channel_type oper_chan_type) +{ +} +#else +static void rtl_rate_update(void *ppriv, + struct ieee80211_supported_band *sband, + struct cfg80211_chan_def *chandef, + struct ieee80211_sta *sta, void *priv_sta, + u32 changed) +{ +} +#endif +static void *rtl_rate_alloc(struct ieee80211_hw *hw, struct dentry *debugfsdir) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + return rtlpriv; +} + +static void rtl_rate_free(void *rtlpriv) +{ + return; +} + +static void *rtl_rate_alloc_sta(void *ppriv, + struct ieee80211_sta *sta, gfp_t gfp) +{ + struct rtl_priv *rtlpriv = ppriv; + struct rtl_rate_priv *rate_priv; + + rate_priv = kzalloc(sizeof(struct rtl_rate_priv), gfp); + if (!rate_priv) { + RT_TRACE(COMP_ERR, DBG_EMERG, + ("Unable to allocate private rc structure\n")); + return NULL; + } + + rtlpriv->rate_priv = rate_priv; + + return rate_priv; +} + +static void rtl_rate_free_sta(void *rtlpriv, + struct ieee80211_sta *sta, void *priv_sta) +{ + struct rtl_rate_priv *rate_priv = priv_sta; + kfree(rate_priv); +} + +static struct rate_control_ops rtl_rate_ops = { + .module = NULL, + .name = "rtl_rc", + .alloc = rtl_rate_alloc, + .free = rtl_rate_free, + .alloc_sta = rtl_rate_alloc_sta, + .free_sta = rtl_rate_free_sta, + .rate_init = rtl_rate_init, + .rate_update = rtl_rate_update, + .tx_status = rtl_tx_status, + .get_rate = rtl_get_rate, +}; + +int rtl_rate_control_register(void) +{ + return ieee80211_rate_control_register(&rtl_rate_ops); +} + +void rtl_rate_control_unregister(void) +{ + ieee80211_rate_control_unregister(&rtl_rate_ops); +} --- linux-3.13.0.orig/drivers/staging/rtl8821ae/rc.h +++ linux-3.13.0/drivers/staging/rtl8821ae/rc.h @@ -0,0 +1,47 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#ifndef __RTL_RC_H__ +#define __RTL_RC_H__ + +#define B_MODE_MAX_RIX 3 +#define G_MODE_MAX_RIX 11 +#define A_MODE_MAX_RIX 7 + +/* in mac80211 mcs0-mcs15 is idx0-idx15*/ +#define N_MODE_MCS7_RIX 7 +#define N_MODE_MCS15_RIX 15 + +struct rtl_rate_priv { + u8 ht_cap; +}; + +int rtl_rate_control_register(void); +void rtl_rate_control_unregister(void); +#endif --- linux-3.13.0.orig/drivers/staging/rtl8821ae/regd.c +++ linux-3.13.0/drivers/staging/rtl8821ae/regd.c @@ -0,0 +1,503 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#include "wifi.h" +#include "regd.h" + +static struct country_code_to_enum_rd allCountries[] = { + {COUNTRY_CODE_FCC, "US"}, + {COUNTRY_CODE_IC, "US"}, + {COUNTRY_CODE_ETSI, "EC"}, + {COUNTRY_CODE_SPAIN, "EC"}, + {COUNTRY_CODE_FRANCE, "EC"}, + {COUNTRY_CODE_MKK, "JP"}, + {COUNTRY_CODE_MKK1, "JP"}, + {COUNTRY_CODE_ISRAEL, "EC"}, + {COUNTRY_CODE_TELEC, "JP"}, + {COUNTRY_CODE_MIC, "JP"}, + {COUNTRY_CODE_GLOBAL_DOMAIN, "JP"}, + {COUNTRY_CODE_WORLD_WIDE_13, "EC"}, + {COUNTRY_CODE_TELEC_NETGEAR, "EC"}, +}; + +/* + *Only these channels all allow active + *scan on all world regulatory domains + */ +#define RTL819x_2GHZ_CH01_11 \ + REG_RULE(2412-10, 2462+10, 40, 0, 20, 0) + +/* + *We enable active scan on these a case + *by case basis by regulatory domain + */ +#define RTL819x_2GHZ_CH12_13 \ + REG_RULE(2467-10, 2472+10, 40, 0, 20,\ + NL80211_RRF_PASSIVE_SCAN) + +#define RTL819x_2GHZ_CH14 \ + REG_RULE(2484-10, 2484+10, 40, 0, 20, \ + NL80211_RRF_PASSIVE_SCAN | \ + NL80211_RRF_NO_OFDM) + +/* 5G chan 36 - chan 64*/ +#define RTL819x_5GHZ_5150_5350 \ + REG_RULE(5150-10, 5350+10, 40, 0, 30, \ + NL80211_RRF_PASSIVE_SCAN | \ + NL80211_RRF_NO_IBSS) + +/* 5G chan 100 - chan 165*/ +#define RTL819x_5GHZ_5470_5850 \ + REG_RULE(5470-10, 5850+10, 40, 0, 30, \ + NL80211_RRF_PASSIVE_SCAN | \ + NL80211_RRF_NO_IBSS) + +/* 5G chan 149 - chan 165*/ +#define RTL819x_5GHZ_5725_5850 \ + REG_RULE(5725-10, 5850+10, 40, 0, 30, \ + NL80211_RRF_PASSIVE_SCAN | \ + NL80211_RRF_NO_IBSS) + +#define RTL819x_5GHZ_ALL \ + RTL819x_5GHZ_5150_5350, RTL819x_5GHZ_5470_5850 + +static const struct ieee80211_regdomain rtl_regdom_11 = { + .n_reg_rules = 1, + .alpha2 = "99", + .reg_rules = { + RTL819x_2GHZ_CH01_11, + } +}; + +static const struct ieee80211_regdomain rtl_regdom_12_13 = { + .n_reg_rules = 2, + .alpha2 = "99", + .reg_rules = { + RTL819x_2GHZ_CH01_11, + RTL819x_2GHZ_CH12_13, + } +}; + +static const struct ieee80211_regdomain rtl_regdom_no_midband = { + .n_reg_rules = 3, + .alpha2 = "99", + .reg_rules = { + RTL819x_2GHZ_CH01_11, + RTL819x_5GHZ_5150_5350, + RTL819x_5GHZ_5725_5850, + } +}; + +static const struct ieee80211_regdomain rtl_regdom_60_64 = { + .n_reg_rules = 3, + .alpha2 = "99", + .reg_rules = { + RTL819x_2GHZ_CH01_11, + RTL819x_2GHZ_CH12_13, + RTL819x_5GHZ_5725_5850, + } +}; + +static const struct ieee80211_regdomain rtl_regdom_14_60_64 = { + .n_reg_rules = 4, + .alpha2 = "99", + .reg_rules = { + RTL819x_2GHZ_CH01_11, + RTL819x_2GHZ_CH12_13, + RTL819x_2GHZ_CH14, + RTL819x_5GHZ_5725_5850, + } +}; + +static const struct ieee80211_regdomain rtl_regdom_14 = { + .n_reg_rules = 3, + .alpha2 = "99", + .reg_rules = { + RTL819x_2GHZ_CH01_11, + RTL819x_2GHZ_CH12_13, + RTL819x_2GHZ_CH14, + } +}; + +static bool _rtl_is_radar_freq(u16 center_freq) +{ + return (center_freq >= 5260 && center_freq <= 5700); +} + +static void _rtl_reg_apply_beaconing_flags(struct wiphy *wiphy, + enum nl80211_reg_initiator initiator) +{ + enum ieee80211_band band; + struct ieee80211_supported_band *sband; + const struct ieee80211_reg_rule *reg_rule; + struct ieee80211_channel *ch; + unsigned int i; +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)) + u32 bandwidth = 0; + int r; +#endif + + for (band = 0; band < IEEE80211_NUM_BANDS; band++) { + + if (!wiphy->bands[band]) + continue; + + sband = wiphy->bands[band]; + + for (i = 0; i < sband->n_channels; i++) { + ch = &sband->channels[i]; + if (_rtl_is_radar_freq(ch->center_freq) || + (ch->flags & IEEE80211_CHAN_RADAR)) + continue; + if (initiator == NL80211_REGDOM_SET_BY_COUNTRY_IE) { +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0)) + reg_rule = freq_reg_info(wiphy, ch->center_freq); + if (IS_ERR(reg_rule)) + continue; +#else + r = freq_reg_info(wiphy, ch->center_freq, + bandwidth, ®_rule); + if (r) + continue; +#endif + + /* + *If 11d had a rule for this channel ensure + *we enable adhoc/beaconing if it allows us to + *use it. Note that we would have disabled it + *by applying our static world regdomain by + *default during init, prior to calling our + *regulatory_hint(). + */ + + if (!(reg_rule->flags & NL80211_RRF_NO_IBSS)) + ch->flags &= ~IEEE80211_CHAN_NO_IBSS; + if (!(reg_rule->flags & + NL80211_RRF_PASSIVE_SCAN)) + ch->flags &= + ~IEEE80211_CHAN_PASSIVE_SCAN; + } else { + if (ch->beacon_found) + ch->flags &= ~(IEEE80211_CHAN_NO_IBSS | + IEEE80211_CHAN_PASSIVE_SCAN); + } + } + } +} + +/* Allows active scan scan on Ch 12 and 13 */ +static void _rtl_reg_apply_active_scan_flags(struct wiphy *wiphy, + enum nl80211_reg_initiator + initiator) +{ + struct ieee80211_supported_band *sband; + struct ieee80211_channel *ch; + const struct ieee80211_reg_rule *reg_rule; +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)) + u32 bandwidth = 0; + int r; +#endif + + if (!wiphy->bands[IEEE80211_BAND_2GHZ]) + return; + sband = wiphy->bands[IEEE80211_BAND_2GHZ]; + + /* + *If no country IE has been received always enable active scan + *on these channels. This is only done for specific regulatory SKUs + */ + if (initiator != NL80211_REGDOM_SET_BY_COUNTRY_IE) { + ch = &sband->channels[11]; /* CH 12 */ + if (ch->flags & IEEE80211_CHAN_PASSIVE_SCAN) + ch->flags &= ~IEEE80211_CHAN_PASSIVE_SCAN; + ch = &sband->channels[12]; /* CH 13 */ + if (ch->flags & IEEE80211_CHAN_PASSIVE_SCAN) + ch->flags &= ~IEEE80211_CHAN_PASSIVE_SCAN; + return; + } + + /* + *If a country IE has been recieved check its rule for this + *channel first before enabling active scan. The passive scan + *would have been enforced by the initial processing of our + *custom regulatory domain. + */ + + ch = &sband->channels[11]; /* CH 12 */ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0)) + reg_rule = freq_reg_info(wiphy, ch->center_freq); + if (!IS_ERR(reg_rule)) { +#else + r = freq_reg_info(wiphy, ch->center_freq, bandwidth, ®_rule); + if (!r) { +#endif + if (!(reg_rule->flags & NL80211_RRF_PASSIVE_SCAN)) + if (ch->flags & IEEE80211_CHAN_PASSIVE_SCAN) + ch->flags &= ~IEEE80211_CHAN_PASSIVE_SCAN; + } + + ch = &sband->channels[12]; /* CH 13 */ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0)) + reg_rule = freq_reg_info(wiphy, ch->center_freq); + if (!IS_ERR(reg_rule)) { +#else + r = freq_reg_info(wiphy, ch->center_freq, bandwidth, ®_rule); + if (!r) { +#endif + if (!(reg_rule->flags & NL80211_RRF_PASSIVE_SCAN)) + if (ch->flags & IEEE80211_CHAN_PASSIVE_SCAN) + ch->flags &= ~IEEE80211_CHAN_PASSIVE_SCAN; + } +} + +/* + *Always apply Radar/DFS rules on + *freq range 5260 MHz - 5700 MHz + */ +static void _rtl_reg_apply_radar_flags(struct wiphy *wiphy) +{ + struct ieee80211_supported_band *sband; + struct ieee80211_channel *ch; + unsigned int i; + + if (!wiphy->bands[IEEE80211_BAND_5GHZ]) + return; + + sband = wiphy->bands[IEEE80211_BAND_5GHZ]; + + for (i = 0; i < sband->n_channels; i++) { + ch = &sband->channels[i]; + if (!_rtl_is_radar_freq(ch->center_freq)) + continue; + + /* + *We always enable radar detection/DFS on this + *frequency range. Additionally we also apply on + *this frequency range: + *- If STA mode does not yet have DFS supports disable + * active scanning + *- If adhoc mode does not support DFS yet then disable + * adhoc in the frequency. + *- If AP mode does not yet support radar detection/DFS + *do not allow AP mode + */ + if (!(ch->flags & IEEE80211_CHAN_DISABLED)) + ch->flags |= IEEE80211_CHAN_RADAR | + IEEE80211_CHAN_NO_IBSS | + IEEE80211_CHAN_PASSIVE_SCAN; + } +} + +static void _rtl_reg_apply_world_flags(struct wiphy *wiphy, + enum nl80211_reg_initiator initiator, + struct rtl_regulatory *reg) +{ + _rtl_reg_apply_beaconing_flags(wiphy, initiator); + _rtl_reg_apply_active_scan_flags(wiphy, initiator); + return; +} + +static void _rtl_dump_channel_map(struct wiphy *wiphy) +{ + enum ieee80211_band band; + struct ieee80211_supported_band *sband; + struct ieee80211_channel *ch; + unsigned int i; + + for (band = 0; band < IEEE80211_NUM_BANDS; band++) { + if (!wiphy->bands[band]) + continue; + sband = wiphy->bands[band]; + for (i = 0; i < sband->n_channels; i++) + ch = &sband->channels[i]; + } +} + +static int _rtl_reg_notifier_apply(struct wiphy *wiphy, + struct regulatory_request *request, + struct rtl_regulatory *reg) +{ + /* We always apply this */ + _rtl_reg_apply_radar_flags(wiphy); + + switch (request->initiator) { + case NL80211_REGDOM_SET_BY_DRIVER: + case NL80211_REGDOM_SET_BY_CORE: + case NL80211_REGDOM_SET_BY_USER: + break; + case NL80211_REGDOM_SET_BY_COUNTRY_IE: + _rtl_reg_apply_world_flags(wiphy, request->initiator, reg); + break; + } + + _rtl_dump_channel_map(wiphy); + + return 0; +} + +static const struct ieee80211_regdomain *_rtl_regdomain_select( + struct rtl_regulatory *reg) +{ + switch (reg->country_code) { + case COUNTRY_CODE_FCC: + return &rtl_regdom_no_midband; + case COUNTRY_CODE_IC: + return &rtl_regdom_11; + case COUNTRY_CODE_ETSI: + case COUNTRY_CODE_TELEC_NETGEAR: + return &rtl_regdom_60_64; + 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: + case COUNTRY_CODE_TELEC: + case COUNTRY_CODE_MIC: + return &rtl_regdom_14_60_64; + case COUNTRY_CODE_GLOBAL_DOMAIN: + return &rtl_regdom_14; + default: + return &rtl_regdom_no_midband; + } +} + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0)) +static int _rtl_regd_init_wiphy(struct rtl_regulatory *reg, + struct wiphy *wiphy, + void (*reg_notifier) (struct wiphy * wiphy, + struct regulatory_request * + request)) +#else +static int _rtl_regd_init_wiphy(struct rtl_regulatory *reg, + struct wiphy *wiphy, + int (*reg_notifier) (struct wiphy * wiphy, + struct regulatory_request * + request)) +#endif +{ + const struct ieee80211_regdomain *regd; + + wiphy->reg_notifier = reg_notifier; + + wiphy->flags |= WIPHY_FLAG_CUSTOM_REGULATORY; + wiphy->flags &= ~WIPHY_FLAG_STRICT_REGULATORY; + wiphy->flags &= ~WIPHY_FLAG_DISABLE_BEACON_HINTS; + + regd = _rtl_regdomain_select(reg); + wiphy_apply_custom_regulatory(wiphy, regd); + _rtl_reg_apply_radar_flags(wiphy); + _rtl_reg_apply_world_flags(wiphy, NL80211_REGDOM_SET_BY_DRIVER, reg); + return 0; +} + +static struct country_code_to_enum_rd *_rtl_regd_find_country(u16 countrycode) +{ + int i; + + for (i = 0; i < ARRAY_SIZE(allCountries); i++) { + if (allCountries[i].countrycode == countrycode) + return &allCountries[i]; + } + return NULL; +} + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0)) +int rtl_regd_init(struct ieee80211_hw *hw, + void (*reg_notifier) (struct wiphy *wiphy, + struct regulatory_request *request)) +#else +int rtl_regd_init(struct ieee80211_hw *hw, + int (*reg_notifier) (struct wiphy *wiphy, + struct regulatory_request *request)) +#endif +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct wiphy *wiphy = hw->wiphy; + struct country_code_to_enum_rd *country = NULL; + + if (wiphy == NULL || &rtlpriv->regd == NULL) + return -EINVAL; + + /* init country_code from efuse channel plan */ + rtlpriv->regd.country_code = rtlpriv->efuse.channel_plan; + + RT_TRACE(COMP_REGD, DBG_TRACE, + (KERN_DEBUG "rtl: EEPROM regdomain: 0x%0x\n", + rtlpriv->regd.country_code)); + + if (rtlpriv->regd.country_code >= COUNTRY_CODE_MAX) { + RT_TRACE(COMP_REGD, DBG_DMESG, + (KERN_DEBUG "rtl: EEPROM indicates invalid contry code" + "world wide 13 should be used\n")); + + rtlpriv->regd.country_code = COUNTRY_CODE_WORLD_WIDE_13; + } + + country = _rtl_regd_find_country(rtlpriv->regd.country_code); + + if (country) { + rtlpriv->regd.alpha2[0] = country->iso_name[0]; + rtlpriv->regd.alpha2[1] = country->iso_name[1]; + } else { + rtlpriv->regd.alpha2[0] = '0'; + rtlpriv->regd.alpha2[1] = '0'; + } + + RT_TRACE(COMP_REGD, DBG_TRACE, + (KERN_DEBUG "rtl: Country alpha2 being used: %c%c\n", + rtlpriv->regd.alpha2[0], rtlpriv->regd.alpha2[1])); + + _rtl_regd_init_wiphy(&rtlpriv->regd, wiphy, reg_notifier); + + return 0; +} + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0)) +void rtl_reg_notifier(struct wiphy *wiphy, struct regulatory_request *request) +{ + struct ieee80211_hw *hw = wiphy_to_ieee80211_hw(wiphy); + struct rtl_priv *rtlpriv = rtl_priv(hw); + + RT_TRACE(COMP_REGD, DBG_LOUD, ("\n")); + + _rtl_reg_notifier_apply(wiphy, request, &rtlpriv->regd); +} +#else +int rtl_reg_notifier(struct wiphy *wiphy, struct regulatory_request *request) +{ + struct ieee80211_hw *hw = wiphy_to_ieee80211_hw(wiphy); + struct rtl_priv *rtlpriv = rtl_priv(hw); + + RT_TRACE(COMP_REGD, DBG_LOUD, ("\n")); + + return _rtl_reg_notifier_apply(wiphy, request, &rtlpriv->regd); +} +#endif --- linux-3.13.0.orig/drivers/staging/rtl8821ae/regd.h +++ linux-3.13.0/drivers/staging/rtl8821ae/regd.h @@ -0,0 +1,75 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#ifndef __RTL_REGD_H__ +#define __RTL_REGD_H__ + +#define IEEE80211_CHAN_NO_IBSS 1<<2 +#define IEEE80211_CHAN_PASSIVE_SCAN 1<<1 +#define WIPHY_FLAG_CUSTOM_REGULATORY BIT(0) +#define WIPHY_FLAG_STRICT_REGULATORY BIT(1) +#define WIPHY_FLAG_DISABLE_BEACON_HINTS BIT(2) + +struct country_code_to_enum_rd { + u16 countrycode; + const char *iso_name; +}; + +enum country_code_type_t { + COUNTRY_CODE_FCC = 0, + COUNTRY_CODE_IC = 1, + COUNTRY_CODE_ETSI = 2, + COUNTRY_CODE_SPAIN = 3, + COUNTRY_CODE_FRANCE = 4, + COUNTRY_CODE_MKK = 5, + COUNTRY_CODE_MKK1 = 6, + COUNTRY_CODE_ISRAEL = 7, + COUNTRY_CODE_TELEC = 8, + COUNTRY_CODE_MIC = 9, + COUNTRY_CODE_GLOBAL_DOMAIN = 10, + COUNTRY_CODE_WORLD_WIDE_13 = 11, + COUNTRY_CODE_TELEC_NETGEAR = 12, + + /*add new channel plan above this line */ + COUNTRY_CODE_MAX +}; + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0)) +int rtl_regd_init(struct ieee80211_hw *hw, + void (*reg_notifier) (struct wiphy *wiphy, + struct regulatory_request *request)); +void rtl_reg_notifier(struct wiphy *wiphy, struct regulatory_request *request); +#else +int rtl_regd_init(struct ieee80211_hw *hw, + int (*reg_notifier) (struct wiphy *wiphy, + struct regulatory_request *request)); +int rtl_reg_notifier(struct wiphy *wiphy, struct regulatory_request *request); +#endif + +#endif --- linux-3.13.0.orig/drivers/staging/rtl8821ae/rtl8821ae/btc.h +++ linux-3.13.0/drivers/staging/rtl8821ae/rtl8821ae/btc.h @@ -0,0 +1,87 @@ + +/****************************************************************************** + ** + ** Copyright(c) 2009-2010 Realtek Corporation. + ** + ** This program is free software; you can redistribute it and/or modify it + ** under the terms of version 2 of the GNU General Public License as + ** published by the Free Software Foundation. + ** + ** This program is distributed in the hope that it will be useful, but WITHOUT + ** ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + ** FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + ** more details. + ** + ** You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + ** file called LICENSE. + ** + ** Contact Information: + ** wlanfae + ** Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + ** Hsinchu 300, Taiwan. + ** Larry Finger + ** + ******************************************************************************/ + +#ifndef __RTL8821AE_BTC_H__ +#define __RTL8821AE_BTC_H__ + +#include "../wifi.h" +#include "hal_bt_coexist.h" + +struct bt_coexist_c2h_info { + u8 no_parse_c2h; + u8 has_c2h; +}; + +struct btdm_8821ae { + bool b_all_off; + bool b_agc_table_en; + bool b_adc_back_off_on; + bool b2_ant_hid_en; + bool b_low_penalty_rate_adaptive; + bool b_rf_rx_lpf_shrink; + bool b_reject_aggre_pkt; + bool b_tra_tdma_on; + u8 tra_tdma_nav; + u8 tra_tdma_ant; + bool b_tdma_on; + u8 tdma_ant; + u8 tdma_nav; + u8 tdma_dac_swing; + u8 fw_dac_swing_lvl; + bool b_ps_tdma_on; + u8 ps_tdma_byte[5]; + bool b_pta_on; + u32 val_0x6c0; + u32 val_0x6c8; + u32 val_0x6cc; + bool b_sw_dac_swing_on; + u32 sw_dac_swing_lvl; + u32 wlan_act_hi; + u32 wlan_act_lo; + u32 bt_retry_index; + bool b_dec_bt_pwr; + bool b_ignore_wlan_act; +}; + +struct bt_coexist_8821ae { + u32 high_priority_tx; + u32 high_priority_rx; + u32 low_priority_tx; + u32 low_priority_rx; + u8 c2h_bt_info; + bool b_c2h_bt_info_req_sent; + bool b_c2h_bt_inquiry_page; + u32 bt_inq_page_start_time; + u8 bt_retry_cnt; + u8 c2h_bt_info_original; + u8 bt_inquiry_page_cnt; + struct btdm_8821ae btdm; +}; + +#endif --- linux-3.13.0.orig/drivers/staging/rtl8821ae/rtl8821ae/def.h +++ linux-3.13.0/drivers/staging/rtl8821ae/rtl8821ae/def.h @@ -0,0 +1,442 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#ifndef __RTL8821AE_DEF_H__ +#define __RTL8821AE_DEF_H__ + +/*--------------------------Define -------------------------------------------*/ +/* BIT 7 HT Rate*/ +/*TxHT = 0*/ +#define MGN_1M 0x02 +#define MGN_2M 0x04 +#define MGN_5_5M 0x0b +#define MGN_11M 0x16 + +#define MGN_6M 0x0c +#define MGN_9M 0x12 +#define MGN_12M 0x18 +#define MGN_18M 0x24 +#define MGN_24M 0x30 +#define MGN_36M 0x48 +#define MGN_48M 0x60 +#define MGN_54M 0x6c + +// TxHT = 1 +#define MGN_MCS0 0x80 +#define MGN_MCS1 0x81 +#define MGN_MCS2 0x82 +#define MGN_MCS3 0x83 +#define MGN_MCS4 0x84 +#define MGN_MCS5 0x85 +#define MGN_MCS6 0x86 +#define MGN_MCS7 0x87 +#define MGN_MCS8 0x88 +#define MGN_MCS9 0x89 +#define MGN_MCS10 0x8a +#define MGN_MCS11 0x8b +#define MGN_MCS12 0x8c +#define MGN_MCS13 0x8d +#define MGN_MCS14 0x8e +#define MGN_MCS15 0x8f +//VHT rate +#define MGN_VHT1SS_MCS0 0x90 +#define MGN_VHT1SS_MCS1 0x91 +#define MGN_VHT1SS_MCS2 0x92 +#define MGN_VHT1SS_MCS3 0x93 +#define MGN_VHT1SS_MCS4 0x94 +#define MGN_VHT1SS_MCS5 0x95 +#define MGN_VHT1SS_MCS6 0x96 +#define MGN_VHT1SS_MCS7 0x97 +#define MGN_VHT1SS_MCS8 0x98 +#define MGN_VHT1SS_MCS9 0x99 +#define MGN_VHT2SS_MCS0 0x9a +#define MGN_VHT2SS_MCS1 0x9b +#define MGN_VHT2SS_MCS2 0x9c +#define MGN_VHT2SS_MCS3 0x9d +#define MGN_VHT2SS_MCS4 0x9e +#define MGN_VHT2SS_MCS5 0x9f +#define MGN_VHT2SS_MCS6 0xa0 +#define MGN_VHT2SS_MCS7 0xa1 +#define MGN_VHT2SS_MCS8 0xa2 +#define MGN_VHT2SS_MCS9 0xa3 + +#define MGN_VHT3SS_MCS0 0xa4 +#define MGN_VHT3SS_MCS1 0xa5 +#define MGN_VHT3SS_MCS2 0xa6 +#define MGN_VHT3SS_MCS3 0xa7 +#define MGN_VHT3SS_MCS4 0xa8 +#define MGN_VHT3SS_MCS5 0xa9 +#define MGN_VHT3SS_MCS6 0xaa +#define MGN_VHT3SS_MCS7 0xab +#define MGN_VHT3SS_MCS8 0xac +#define MGN_VHT3SS_MCS9 0xad + +#define MGN_MCS0_SG 0xc0 +#define MGN_MCS1_SG 0xc1 +#define MGN_MCS2_SG 0xc2 +#define MGN_MCS3_SG 0xc3 +#define MGN_MCS4_SG 0xc4 +#define MGN_MCS5_SG 0xc5 +#define MGN_MCS6_SG 0xc6 +#define MGN_MCS7_SG 0xc7 +#define MGN_MCS8_SG 0xc8 +#define MGN_MCS9_SG 0xc9 +#define MGN_MCS10_SG 0xca +#define MGN_MCS11_SG 0xcb +#define MGN_MCS12_SG 0xcc +#define MGN_MCS13_SG 0xcd +#define MGN_MCS14_SG 0xce +#define MGN_MCS15_SG 0xcf + +#define MGN_UNKNOWN 0xff + + +/* 30 ms */ +#define WIFI_NAV_UPPER_US 30000 +#define HAL_92C_NAV_UPPER_UNIT 128 + +#define HAL_RETRY_LIMIT_INFRA 48 +#define HAL_RETRY_LIMIT_AP_ADHOC 7 + +#define RESET_DELAY_8185 20 + +#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 NUM_OF_FIRMWARE_QUEUE 10 +#define NUM_OF_PAGES_IN_FW 0x100 +#define NUM_OF_PAGE_IN_FW_QUEUE_BK 0x07 +#define NUM_OF_PAGE_IN_FW_QUEUE_BE 0x07 +#define NUM_OF_PAGE_IN_FW_QUEUE_VI 0x07 +#define NUM_OF_PAGE_IN_FW_QUEUE_VO 0x07 +#define NUM_OF_PAGE_IN_FW_QUEUE_HCCA 0x0 +#define NUM_OF_PAGE_IN_FW_QUEUE_CMD 0x0 +#define NUM_OF_PAGE_IN_FW_QUEUE_MGNT 0x02 +#define NUM_OF_PAGE_IN_FW_QUEUE_HIGH 0x02 +#define NUM_OF_PAGE_IN_FW_QUEUE_BCN 0x2 +#define NUM_OF_PAGE_IN_FW_QUEUE_PUB 0xA1 + +#define NUM_OF_PAGE_IN_FW_QUEUE_BK_DTM 0x026 +#define NUM_OF_PAGE_IN_FW_QUEUE_BE_DTM 0x048 +#define NUM_OF_PAGE_IN_FW_QUEUE_VI_DTM 0x048 +#define NUM_OF_PAGE_IN_FW_QUEUE_VO_DTM 0x026 +#define NUM_OF_PAGE_IN_FW_QUEUE_PUB_DTM 0x00 + +#define MAX_RX_DMA_BUFFER_SIZE 0x3E80 + + +#define MAX_LINES_HWCONFIG_TXT 1000 +#define MAX_BYTES_LINE_HWCONFIG_TXT 256 + +#define SW_THREE_WIRE 0 +#define HW_THREE_WIRE 2 + +#define BT_DEMO_BOARD 0 +#define BT_QA_BOARD 1 +#define BT_FPGA 2 + +#define HAL_PRIME_CHNL_OFFSET_DONT_CARE 0 +#define HAL_PRIME_CHNL_OFFSET_LOWER 1 +#define HAL_PRIME_CHNL_OFFSET_UPPER 2 + +#define MAX_H2C_QUEUE_NUM 10 + +#define RX_MPDU_QUEUE 0 +#define RX_CMD_QUEUE 1 +#define RX_MAX_QUEUE 2 +#define AC2QUEUEID(_AC) (_AC) + +#define C2H_RX_CMD_HDR_LEN 8 +#define GET_C2H_CMD_CMD_LEN(__prxhdr) \ + LE_BITS_TO_4BYTE((__prxhdr), 0, 16) +#define GET_C2H_CMD_ELEMENT_ID(__prxhdr) \ + LE_BITS_TO_4BYTE((__prxhdr), 16, 8) +#define GET_C2H_CMD_CMD_SEQ(__prxhdr) \ + LE_BITS_TO_4BYTE((__prxhdr), 24, 7) +#define GET_C2H_CMD_CONTINUE(__prxhdr) \ + LE_BITS_TO_4BYTE((__prxhdr), 31, 1) +#define GET_C2H_CMD_CONTENT(__prxhdr) \ + ((u8*)(__prxhdr) + C2H_RX_CMD_HDR_LEN) + +#define GET_C2H_CMD_FEEDBACK_ELEMENT_ID(__pcmdfbhdr) \ + LE_BITS_TO_4BYTE((__pcmdfbhdr), 0, 8) +#define GET_C2H_CMD_FEEDBACK_CCX_LEN(__pcmdfbhdr) \ + LE_BITS_TO_4BYTE((__pcmdfbhdr), 8, 8) +#define GET_C2H_CMD_FEEDBACK_CCX_CMD_CNT(__pcmdfbhdr) \ + LE_BITS_TO_4BYTE((__pcmdfbhdr), 16, 16) +#define GET_C2H_CMD_FEEDBACK_CCX_MAC_ID(__pcmdfbhdr) \ + LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 0, 5) +#define GET_C2H_CMD_FEEDBACK_CCX_VALID(__pcmdfbhdr) \ + LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 7, 1) +#define GET_C2H_CMD_FEEDBACK_CCX_RETRY_CNT(__pcmdfbhdr) \ + LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 8, 5) +#define GET_C2H_CMD_FEEDBACK_CCX_TOK(__pcmdfbhdr) \ + LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 15, 1) +#define GET_C2H_CMD_FEEDBACK_CCX_QSEL(__pcmdfbhdr) \ + LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 16, 4) +#define GET_C2H_CMD_FEEDBACK_CCX_SEQ(__pcmdfbhdr) \ + LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 20, 12) + +#define CHIP_BONDING_IDENTIFIER(_value) (((_value)>>22)&0x3) + +#define CHIP_8812 BIT(2) +#define CHIP_8821 (BIT(0)|BIT(2)) + +#define CHIP_8821A (BIT(0)|BIT(2)) +#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) +#define RF_RL_ID (BIT(31)|BIT(30)|BIT(29)|BIT(28)) + + + +enum version_8821ae { + VERSION_TEST_CHIP_1T1R_8812 = 0x0004, + VERSION_TEST_CHIP_2T2R_8812 = 0x0024, + VERSION_NORMAL_TSMC_CHIP_1T1R_8812 = 0x100c, + VERSION_NORMAL_TSMC_CHIP_2T2R_8812 = 0x102c, + VERSION_NORMAL_TSMC_CHIP_1T1R_8812_C_CUT = 0x200c, + VERSION_NORMAL_TSMC_CHIP_2T2R_8812_C_CUT = 0x202c, + VERSION_TEST_CHIP_8821 = 0x0005, + VERSION_NORMAL_TSMC_CHIP_8821 = 0x000d, + VERSION_NORMAL_TSMC_CHIP_8821_B_CUT = 0x100d, + VERSION_UNKNOWN = 0xFF, +}; + +enum vht_data_sc{ + VHT_DATA_SC_DONOT_CARE = 0, + VHT_DATA_SC_20_UPPER_OF_80MHZ = 1, + VHT_DATA_SC_20_LOWER_OF_80MHZ = 2, + VHT_DATA_SC_20_UPPERST_OF_80MHZ = 3, + VHT_DATA_SC_20_LOWEST_OF_80MHZ = 4, + VHT_DATA_SC_20_RECV1 = 5, + VHT_DATA_SC_20_RECV2 = 6, + VHT_DATA_SC_20_RECV3 = 7, + VHT_DATA_SC_20_RECV4 = 8, + VHT_DATA_SC_40_UPPER_OF_80MHZ = 9, + VHT_DATA_SC_40_LOWER_OF_80MHZ = 10, +}; + + +/* 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_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_8812_SERIES(version) ((GET_CVID_IC_TYPE(version) == CHIP_8812)? \ + true : false) +#define IS_8821_SERIES(version) ((GET_CVID_IC_TYPE(version) == CHIP_8821)? \ + true : false) + +#define IS_VENDOR_8812A_TEST_CHIP(version) ((IS_8812_SERIES(version)) ? \ + ((IS_NORMAL_CHIP(version)) ? \ + false : true) : false) +#define IS_VENDOR_8812A_MP_CHIP(version) ((IS_8812_SERIES(version)) ? \ + ((IS_NORMAL_CHIP(version)) ? \ + true : false) : false) +#define IS_VENDOR_8812A_C_CUT(version) ((IS_8812_SERIES(version)) ? \ + ((GET_CVID_CUT_VERSION(version) == C_CUT_VERSION) ? \ + true : false) : false) + +#define IS_VENDOR_8821A_TEST_CHIP(version) ((IS_8821_SERIES(version)) ? \ + ((IS_NORMAL_CHIP(version)) ? \ + false : true) : false) +#define IS_VENDOR_8821A_MP_CHIP(version) ((IS_8821_SERIES(version)) ? \ + ((IS_NORMAL_CHIP(version)) ? \ + true : false) : false) +#define IS_VENDOR_8821A_B_CUT(version) ((IS_8821_SERIES(version)) ? \ + ((GET_CVID_CUT_VERSION(version) == B_CUT_VERSION) ? \ + true : false) : false) + + +enum rf_optype { + RF_OP_BY_SW_3WIRE = 0, + RF_OP_BY_FW, + RF_OP_MAX +}; + +enum rf_power_state { + RF_ON, + RF_OFF, + RF_SLEEP, + RF_SHUT_DOWN, +}; + +enum power_save_mode { + POWER_SAVE_MODE_ACTIVE, + POWER_SAVE_MODE_SAVE, +}; + +enum power_polocy_config { + POWERCFG_MAX_POWER_SAVINGS, + POWERCFG_GLOBAL_POWER_SAVINGS, + POWERCFG_LOCAL_POWER_SAVINGS, + POWERCFG_LENOVO, +}; + +enum interface_select_pci { + INTF_SEL1_MINICARD = 0, + INTF_SEL0_PCIE = 1, + INTF_SEL2_RSV = 2, + INTF_SEL3_RSV = 3, +}; + +enum hal_fw_c2h_cmd_id { + HAL_FW_C2H_CMD_Read_MACREG = 0, + HAL_FW_C2H_CMD_Read_BBREG = 1, + HAL_FW_C2H_CMD_Read_RFREG = 2, + HAL_FW_C2H_CMD_Read_EEPROM = 3, + HAL_FW_C2H_CMD_Read_EFUSE = 4, + HAL_FW_C2H_CMD_Read_CAM = 5, + HAL_FW_C2H_CMD_Get_BasicRate = 6, + HAL_FW_C2H_CMD_Get_DataRate = 7, + HAL_FW_C2H_CMD_Survey = 8, + HAL_FW_C2H_CMD_SurveyDone = 9, + HAL_FW_C2H_CMD_JoinBss = 10, + HAL_FW_C2H_CMD_AddSTA = 11, + HAL_FW_C2H_CMD_DelSTA = 12, + HAL_FW_C2H_CMD_AtimDone = 13, + HAL_FW_C2H_CMD_TX_Report = 14, + HAL_FW_C2H_CMD_CCX_Report = 15, + HAL_FW_C2H_CMD_DTM_Report = 16, + HAL_FW_C2H_CMD_TX_Rate_Statistics = 17, + HAL_FW_C2H_CMD_C2HLBK = 18, + HAL_FW_C2H_CMD_C2HDBG = 19, + HAL_FW_C2H_CMD_C2HFEEDBACK = 20, + HAL_FW_C2H_CMD_MAX +}; + +enum rtl_desc_qsel { + QSLT_BK = 0x2, + QSLT_BE = 0x0, + QSLT_VI = 0x5, + QSLT_VO = 0x7, + QSLT_BEACON = 0x10, + QSLT_HIGH = 0x11, + QSLT_MGNT = 0x12, + QSLT_CMD = 0x13, +}; + +enum rtl_desc8821ae_rate { + DESC_RATE1M = 0x00, + DESC_RATE2M = 0x01, + DESC_RATE5_5M = 0x02, + DESC_RATE11M = 0x03, + + DESC_RATE6M = 0x04, + DESC_RATE9M = 0x05, + DESC_RATE12M = 0x06, + DESC_RATE18M = 0x07, + DESC_RATE24M = 0x08, + DESC_RATE36M = 0x09, + DESC_RATE48M = 0x0a, + DESC_RATE54M = 0x0b, + + DESC_RATEMCS0 = 0x0c, + DESC_RATEMCS1 = 0x0d, + DESC_RATEMCS2 = 0x0e, + DESC_RATEMCS3 = 0x0f, + DESC_RATEMCS4 = 0x10, + DESC_RATEMCS5 = 0x11, + DESC_RATEMCS6 = 0x12, + DESC_RATEMCS7 = 0x13, + DESC_RATEMCS8 = 0x14, + DESC_RATEMCS9 = 0x15, + DESC_RATEMCS10 = 0x16, + DESC_RATEMCS11 = 0x17, + DESC_RATEMCS12 = 0x18, + DESC_RATEMCS13 = 0x19, + DESC_RATEMCS14 = 0x1a, + DESC_RATEMCS15 = 0x1b, + DESC_RATEVHT1SS_MCS0 = 0x1c, + DESC_RATEVHT1SS_MCS1 = 0x1d, + DESC_RATEVHT1SS_MCS2 = 0x1e, + DESC_RATEVHT1SS_MCS3 = 0x1f, + DESC_RATEVHT1SS_MCS4 = 0x20, + DESC_RATEVHT1SS_MCS5 = 0x21, + DESC_RATEVHT1SS_MCS6 = 0x22, + DESC_RATEVHT1SS_MCS7 = 0x23, + DESC_RATEVHT1SS_MCS8 = 0x24, + DESC_RATEVHT1SS_MCS9 = 0x25, + DESC_RATEVHT2SS_MCS0 = 0x26, + DESC_RATEVHT2SS_MCS1 = 0x27, + DESC_RATEVHT2SS_MCS2 = 0x28, + DESC_RATEVHT2SS_MCS3 = 0x29, + DESC_RATEVHT2SS_MCS4 = 0x2a, + DESC_RATEVHT2SS_MCS5 = 0x2b, + DESC_RATEVHT2SS_MCS6 = 0x2c, + DESC_RATEVHT2SS_MCS7 = 0x2d, + DESC_RATEVHT2SS_MCS8 = 0x2e, + DESC_RATEVHT2SS_MCS9 = 0x2f, +}; + +enum rx_packet_type{ + NORMAL_RX, + TX_REPORT1, + TX_REPORT2, + HIS_REPORT, + C2H_PACKET, +}; + +struct phy_sts_cck_8821ae_t { + u8 adc_pwdb_X[4]; + u8 sq_rpt; + u8 cck_agc_rpt; +}; + +struct h2c_cmd_8821ae { + u8 element_id; + u32 cmd_len; + u8 *p_cmdbuffer; +}; + +#endif --- linux-3.13.0.orig/drivers/staging/rtl8821ae/rtl8821ae/dm.c +++ linux-3.13.0/drivers/staging/rtl8821ae/rtl8821ae/dm.c @@ -0,0 +1,3045 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#include "../wifi.h" +#include "../base.h" +#include "../pci.h" +#include "reg.h" +#include "def.h" +#include "phy.h" +#include "dm.h" +#include "fw.h" +#include "trx.h" +#include "../btcoexist/rtl_btc.h" + +struct dig_t dm_digtable; +static struct ps_t dm_pstable; + +static const u32 rtl8812ae_txscaling_table[TXSCALE_TABLE_SIZE] = +{ + 0x081, // 0, -12.0dB + 0x088, // 1, -11.5dB + 0x090, // 2, -11.0dB + 0x099, // 3, -10.5dB + 0x0A2, // 4, -10.0dB + 0x0AC, // 5, -9.5dB + 0x0B6, // 6, -9.0dB + 0x0C0, // 7, -8.5dB + 0x0CC, // 8, -8.0dB + 0x0D8, // 9, -7.5dB + 0x0E5, // 10, -7.0dB + 0x0F2, // 11, -6.5dB + 0x101, // 12, -6.0dB + 0x110, // 13, -5.5dB + 0x120, // 14, -5.0dB + 0x131, // 15, -4.5dB + 0x143, // 16, -4.0dB + 0x156, // 17, -3.5dB + 0x16A, // 18, -3.0dB + 0x180, // 19, -2.5dB + 0x197, // 20, -2.0dB + 0x1AF, // 21, -1.5dB + 0x1C8, // 22, -1.0dB + 0x1E3, // 23, -0.5dB + 0x200, // 24, +0 dB + 0x21E, // 25, +0.5dB + 0x23E, // 26, +1.0dB + 0x261, // 27, +1.5dB + 0x285, // 28, +2.0dB + 0x2AB, // 29, +2.5dB + 0x2D3, // 30, +3.0dB + 0x2FE, // 31, +3.5dB + 0x32B, // 32, +4.0dB + 0x35C, // 33, +4.5dB + 0x38E, // 34, +5.0dB + 0x3C4, // 35, +5.5dB + 0x3FE // 36, +6.0dB +}; + +static const u32 rtl8821ae_txscaling_table[TXSCALE_TABLE_SIZE] = { + 0x081, // 0, -12.0dB + 0x088, // 1, -11.5dB + 0x090, // 2, -11.0dB + 0x099, // 3, -10.5dB + 0x0A2, // 4, -10.0dB + 0x0AC, // 5, -9.5dB + 0x0B6, // 6, -9.0dB + 0x0C0, // 7, -8.5dB + 0x0CC, // 8, -8.0dB + 0x0D8, // 9, -7.5dB + 0x0E5, // 10, -7.0dB + 0x0F2, // 11, -6.5dB + 0x101, // 12, -6.0dB + 0x110, // 13, -5.5dB + 0x120, // 14, -5.0dB + 0x131, // 15, -4.5dB + 0x143, // 16, -4.0dB + 0x156, // 17, -3.5dB + 0x16A, // 18, -3.0dB + 0x180, // 19, -2.5dB + 0x197, // 20, -2.0dB + 0x1AF, // 21, -1.5dB + 0x1C8, // 22, -1.0dB + 0x1E3, // 23, -0.5dB + 0x200, // 24, +0 dB + 0x21E, // 25, +0.5dB + 0x23E, // 26, +1.0dB + 0x261, // 27, +1.5dB + 0x285, // 28, +2.0dB + 0x2AB, // 29, +2.5dB + 0x2D3, // 30, +3.0dB + 0x2FE, // 31, +3.5dB + 0x32B, // 32, +4.0dB + 0x35C, // 33, +4.5dB + 0x38E, // 34, +5.0dB + 0x3C4, // 35, +5.5dB + 0x3FE // 36, +6.0dB +}; + +static const u32 ofdmswing_table[] = { + 0x0b40002d, // 0, -15.0dB + 0x0c000030, // 1, -14.5dB + 0x0cc00033, // 2, -14.0dB + 0x0d800036, // 3, -13.5dB + 0x0e400039, // 4, -13.0dB + 0x0f00003c, // 5, -12.5dB + 0x10000040, // 6, -12.0dB + 0x11000044, // 7, -11.5dB + 0x12000048, // 8, -11.0dB + 0x1300004c, // 9, -10.5dB + 0x14400051, // 10, -10.0dB + 0x15800056, // 11, -9.5dB + 0x16c0005b, // 12, -9.0dB + 0x18000060, // 13, -8.5dB + 0x19800066, // 14, -8.0dB + 0x1b00006c, // 15, -7.5dB + 0x1c800072, // 16, -7.0dB + 0x1e400079, // 17, -6.5dB + 0x20000080, // 18, -6.0dB + 0x22000088, // 19, -5.5dB + 0x24000090, // 20, -5.0dB + 0x26000098, // 21, -4.5dB + 0x288000a2, // 22, -4.0dB + 0x2ac000ab, // 23, -3.5dB + 0x2d4000b5, // 24, -3.0dB + 0x300000c0, // 25, -2.5dB + 0x32c000cb, // 26, -2.0dB + 0x35c000d7, // 27, -1.5dB + 0x390000e4, // 28, -1.0dB + 0x3c8000f2, // 29, -0.5dB + 0x40000100, // 30, +0dB + 0x43c0010f, // 31, +0.5dB + 0x47c0011f, // 32, +1.0dB + 0x4c000130, // 33, +1.5dB + 0x50800142, // 34, +2.0dB + 0x55400155, // 35, +2.5dB + 0x5a400169, // 36, +3.0dB + 0x5fc0017f, // 37, +3.5dB + 0x65400195, // 38, +4.0dB + 0x6b8001ae, // 39, +4.5dB + 0x71c001c7, // 40, +5.0dB + 0x788001e2, // 41, +5.5dB + 0x7f8001fe // 42, +6.0dB +}; + +static const u8 cckswing_table_ch1ch13[CCK_TABLE_SIZE][8] = { + {0x09, 0x08, 0x07, 0x06, 0x04, 0x03, 0x01, 0x01}, // 0, -16.0dB + {0x09, 0x09, 0x08, 0x06, 0x05, 0x03, 0x01, 0x01}, // 1, -15.5dB + {0x0a, 0x09, 0x08, 0x07, 0x05, 0x03, 0x02, 0x01}, // 2, -15.0dB + {0x0a, 0x0a, 0x09, 0x07, 0x05, 0x03, 0x02, 0x01}, // 3, -14.5dB + {0x0b, 0x0a, 0x09, 0x08, 0x06, 0x04, 0x02, 0x01}, // 4, -14.0dB + {0x0b, 0x0b, 0x0a, 0x08, 0x06, 0x04, 0x02, 0x01}, // 5, -13.5dB + {0x0c, 0x0c, 0x0a, 0x09, 0x06, 0x04, 0x02, 0x01}, // 6, -13.0dB + {0x0d, 0x0c, 0x0b, 0x09, 0x07, 0x04, 0x02, 0x01}, // 7, -12.5dB + {0x0d, 0x0d, 0x0c, 0x0a, 0x07, 0x05, 0x02, 0x01}, // 8, -12.0dB + {0x0e, 0x0e, 0x0c, 0x0a, 0x08, 0x05, 0x02, 0x01}, // 9, -11.5dB + {0x0f, 0x0f, 0x0d, 0x0b, 0x08, 0x05, 0x03, 0x01}, // 10, -11.0dB + {0x10, 0x10, 0x0e, 0x0b, 0x08, 0x05, 0x03, 0x01}, // 11, -10.5dB + {0x11, 0x11, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01}, // 12, -10.0dB + {0x12, 0x12, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01}, // 13, -9.5dB + {0x13, 0x13, 0x10, 0x0d, 0x0a, 0x06, 0x03, 0x01}, // 14, -9.0dB + {0x14, 0x14, 0x11, 0x0e, 0x0b, 0x07, 0x03, 0x02}, // 15, -8.5dB + {0x16, 0x15, 0x12, 0x0f, 0x0b, 0x07, 0x04, 0x01}, // 16, -8.0dB + {0x17, 0x16, 0x13, 0x10, 0x0c, 0x08, 0x04, 0x02}, // 17, -7.5dB + {0x18, 0x17, 0x15, 0x11, 0x0c, 0x08, 0x04, 0x02}, // 18, -7.0dB + {0x1a, 0x19, 0x16, 0x12, 0x0d, 0x09, 0x04, 0x02}, // 19, -6.5dB + {0x1b, 0x1a, 0x17, 0x13, 0x0e, 0x09, 0x04, 0x02}, // 20, -6.0dB + {0x1d, 0x1c, 0x18, 0x14, 0x0f, 0x0a, 0x05, 0x02}, // 21, -5.5dB + {0x1f, 0x1e, 0x1a, 0x15, 0x10, 0x0a, 0x05, 0x02}, // 22, -5.0dB + {0x20, 0x20, 0x1b, 0x16, 0x11, 0x08, 0x05, 0x02}, // 23, -4.5dB + {0x22, 0x21, 0x1d, 0x18, 0x11, 0x0b, 0x06, 0x02}, // 24, -4.0dB + {0x24, 0x23, 0x1f, 0x19, 0x13, 0x0c, 0x06, 0x03}, // 25, -3.5dB + {0x26, 0x25, 0x21, 0x1b, 0x14, 0x0d, 0x06, 0x03}, // 26, -3.0dB + {0x28, 0x28, 0x22, 0x1c, 0x15, 0x0d, 0x07, 0x03}, // 27, -2.5dB + {0x2b, 0x2a, 0x25, 0x1e, 0x16, 0x0e, 0x07, 0x03}, // 28, -2.0dB + {0x2d, 0x2d, 0x27, 0x1f, 0x18, 0x0f, 0x08, 0x03}, // 29, -1.5dB + {0x30, 0x2f, 0x29, 0x21, 0x19, 0x10, 0x08, 0x03}, // 30, -1.0dB + {0x33, 0x32, 0x2b, 0x23, 0x1a, 0x11, 0x08, 0x04}, // 31, -0.5dB + {0x36, 0x35, 0x2e, 0x25, 0x1c, 0x12, 0x09, 0x04} // 32, +0dB +}; + +static const u8 cckswing_table_ch14[CCK_TABLE_SIZE][8]= { + {0x09, 0x08, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00}, // 0, -16.0dB + {0x09, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00}, // 1, -15.5dB + {0x0a, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00}, // 2, -15.0dB + {0x0a, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00}, // 3, -14.5dB + {0x0b, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00}, // 4, -14.0dB + {0x0b, 0x0b, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00}, // 5, -13.5dB + {0x0c, 0x0c, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00}, // 6, -13.0dB + {0x0d, 0x0c, 0x0b, 0x06, 0x00, 0x00, 0x00, 0x00}, // 7, -12.5dB + {0x0d, 0x0d, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00}, // 8, -12.0dB + {0x0e, 0x0e, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00}, // 9, -11.5dB + {0x0f, 0x0f, 0x0d, 0x08, 0x00, 0x00, 0x00, 0x00}, // 10, -11.0dB + {0x10, 0x10, 0x0e, 0x08, 0x00, 0x00, 0x00, 0x00}, // 11, -10.5dB + {0x11, 0x11, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00}, // 12, -10.0dB + {0x12, 0x12, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00}, // 13, -9.5dB + {0x13, 0x13, 0x10, 0x0a, 0x00, 0x00, 0x00, 0x00}, // 14, -9.0dB + {0x14, 0x14, 0x11, 0x0a, 0x00, 0x00, 0x00, 0x00}, // 15, -8.5dB + {0x16, 0x15, 0x12, 0x0b, 0x00, 0x00, 0x00, 0x00}, // 16, -8.0dB + {0x17, 0x16, 0x13, 0x0b, 0x00, 0x00, 0x00, 0x00}, // 17, -7.5dB + {0x18, 0x17, 0x15, 0x0c, 0x00, 0x00, 0x00, 0x00}, // 18, -7.0dB + {0x1a, 0x19, 0x16, 0x0d, 0x00, 0x00, 0x00, 0x00}, // 19, -6.5dB + {0x1b, 0x1a, 0x17, 0x0e, 0x00, 0x00, 0x00, 0x00}, // 20, -6.0dB + {0x1d, 0x1c, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00}, // 21, -5.5dB + {0x1f, 0x1e, 0x1a, 0x0f, 0x00, 0x00, 0x00, 0x00}, // 22, -5.0dB + {0x20, 0x20, 0x1b, 0x10, 0x00, 0x00, 0x00, 0x00}, // 23, -4.5dB + {0x22, 0x21, 0x1d, 0x11, 0x00, 0x00, 0x00, 0x00}, // 24, -4.0dB + {0x24, 0x23, 0x1f, 0x12, 0x00, 0x00, 0x00, 0x00}, // 25, -3.5dB + {0x26, 0x25, 0x21, 0x13, 0x00, 0x00, 0x00, 0x00}, // 26, -3.0dB + {0x28, 0x28, 0x24, 0x14, 0x00, 0x00, 0x00, 0x00}, // 27, -2.5dB + {0x2b, 0x2a, 0x25, 0x15, 0x00, 0x00, 0x00, 0x00}, // 28, -2.0dB + {0x2d, 0x2d, 0x17, 0x17, 0x00, 0x00, 0x00, 0x00}, // 29, -1.5dB + {0x30, 0x2f, 0x29, 0x18, 0x00, 0x00, 0x00, 0x00}, // 30, -1.0dB + {0x33, 0x32, 0x2b, 0x19, 0x00, 0x00, 0x00, 0x00}, // 31, -0.5dB + {0x36, 0x35, 0x2e, 0x1b, 0x00, 0x00, 0x00, 0x00} // 32, +0dB +}; + +static const u32 edca_setting_dl[PEER_MAX] = { + 0xa44f, /* 0 UNKNOWN */ + 0x5ea44f, /* 1 REALTEK_90 */ + 0x5e4322, /* 2 REALTEK_92SE */ + 0x5ea42b, /* 3 BROAD */ + 0xa44f, /* 4 RAL */ + 0xa630, /* 5 ATH */ + 0x5ea630, /* 6 CISCO */ + 0x5ea42b, /* 7 MARVELL */ +}; + +static const u32 edca_setting_ul[PEER_MAX] = { + 0x5e4322, /* 0 UNKNOWN */ + 0xa44f, /* 1 REALTEK_90 */ + 0x5ea44f, /* 2 REALTEK_92SE */ + 0x5ea32b, /* 3 BROAD */ + 0x5ea422, /* 4 RAL */ + 0x5ea322, /* 5 ATH */ + 0x3ea430, /* 6 CISCO */ + 0x5ea44f, /* 7 MARV */ +}; + +static u8 rtl8818e_delta_swing_table_idx_24gb_p_txpwrtrack[] = + {0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9}; +static u8 rtl8818e_delta_swing_table_idx_24gb_n_txpwrtrack[] = + {0, 0, 0, 2, 2, 3, 3, 4, 4, 4, 4, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 10, 10, 10, 11, 11, 11, 11}; + + +u8 rtl8812ae_delta_swing_table_idx_24gb_n_txpwrtrack[] = + {0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, 6, 6, 7, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11}; +u8 rtl8812ae_delta_swing_table_idx_24gb_p_txpwrtrack[] = + {0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9, 9}; +u8 rtl8812ae_delta_swing_table_idx_24ga_n_txpwrtrack[] = + {0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, 6, 6, 7, 8, 8, 9, 9, 9, 10, 10, 10, 10, 11, 11}; +u8 rtl8812ae_delta_swing_table_idx_24ga_p_txpwrtrack[] = + {0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9, 9}; +u8 rtl8812ae_delta_swing_table_idx_24gcckb_n_txpwrtrack[] = + {0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, 6, 6, 7, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11}; +u8 rtl8812ae_delta_swing_table_idx_24gcckb_p_txpwrtrack[] = + {0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9, 9}; +u8 rtl8812ae_delta_swing_table_idx_24gccka_n_txpwrtrack[] = + {0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, 6, 6, 7, 8, 8, 9, 9, 9, 10, 10, 10, 10, 11, 11}; +u8 rtl8812ae_delta_swing_table_idx_24gccka_p_txpwrtrack[] = + {0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9, 9}; + +u8 rtl8812ae_delta_swing_table_idx_5gb_n_txpwrtrack[][DELTA_SWINGIDX_SIZE] = { + {0, 1, 1, 2, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 9, 9, 9, 10, 10, 11, 11, 12, 12, 13}, + {0, 1, 1, 2, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 13, 13}, + {0, 1, 1, 2, 3, 3, 4, 4, 5, 6, 6, 7, 8, 9, 10, 11, 12, 12, 13, 14, 14, 14, 15, 16, 17, 17, 17, 18, 18, 18}, +}; +u8 rtl8812ae_delta_swing_table_idx_5gb_p_txpwrtrack[][DELTA_SWINGIDX_SIZE] = { + {0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11}, + {0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11}, + {0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11}, +}; +u8 rtl8812ae_delta_swing_table_idx_5ga_n_txpwrtrack[][DELTA_SWINGIDX_SIZE] = { + {0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13}, + {0, 1, 1, 2, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 8, 9, 9, 10, 10, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13}, + {0, 1, 1, 2, 2, 3, 3, 4, 5, 6, 7, 8, 8, 9, 10, 11, 12, 13, 14, 14, 15, 15, 15, 16, 16, 16, 17, 17, 18, 18}, +}; +u8 rtl8812ae_delta_swing_table_idx_5ga_p_txpwrtrack[][DELTA_SWINGIDX_SIZE] = { + {0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 4, 5, 5, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11}, + {0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 7, 8, 9, 9, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11}, + {0, 1, 1, 2, 3, 3, 4, 4, 5, 6, 6, 7, 7, 8, 9, 9, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11}, +}; + +u8 rtl8821ae_delta_swing_table_idx_24gb_n_txpwrtrack[] = + {0, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10}; +u8 rtl8821ae_delta_swing_table_idx_24gb_p_txpwrtrack[] = + {0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 12, 12, 12}; +u8 rtl8821ae_delta_swing_table_idx_24ga_n_txpwrtrack[] = + {0, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10}; +u8 rtl8821ae_delta_swing_table_idx_24ga_p_txpwrtrack[] = + {0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 12, 12, 12}; +u8 rtl8821ae_delta_swing_table_idx_24gcckb_n_txpwrtrack[] = + {0, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10}; +u8 rtl8821ae_delta_swing_table_idx_24gcckb_p_txpwrtrack[] = + {0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 12, 12, 12}; +u8 rtl8821ae_delta_swing_table_idx_24gccka_n_txpwrtrack[] = + {0, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10}; +u8 rtl8821ae_delta_swing_table_idx_24gccka_p_txpwrtrack[] = + {0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 12, 12, 12}; + +u8 rtl8821ae_delta_swing_table_idx_5gb_n_txpwrtrack[][DELTA_SWINGIDX_SIZE] = { + {0, 0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 11, 12, 12, 13, 14, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16}, + {0, 0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 11, 12, 12, 13, 14, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16}, + {0, 0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 11, 12, 12, 13, 14, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16}, +}; + +u8 rtl8821ae_delta_swing_table_idx_5gb_p_txpwrtrack[][DELTA_SWINGIDX_SIZE] = { + {0, 0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 11, 12, 12, 13, 14, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16}, + {0, 0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 11, 12, 12, 13, 14, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16}, + {0, 0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 11, 12, 12, 13, 14, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16}, +}; + +u8 rtl8821ae_delta_swing_table_idx_5ga_n_txpwrtrack[][DELTA_SWINGIDX_SIZE] = { + {0, 0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 11, 12, 12, 13, 14, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16}, + {0, 0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 11, 12, 12, 13, 14, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16}, + {0, 0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 11, 12, 12, 13, 14, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16}, +}; + +u8 rtl8821ae_delta_swing_table_idx_5ga_p_txpwrtrack[][DELTA_SWINGIDX_SIZE] = { + {0, 0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 11, 12, 12, 13, 14, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16}, + {0, 0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 11, 12, 12, 13, 14, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16}, + {0, 0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 11, 12, 12, 13, 14, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16}, +}; + +void rtl8812ae_dm_read_and_config_txpower_track( + struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_dm *rtldm = rtl_dm(rtl_priv(hw)); + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("===> rtl8821ae_dm_read_and_config_txpower_track\n")); + + + memcpy(rtldm->delta_swing_table_idx_24ga_p, + rtl8812ae_delta_swing_table_idx_24ga_p_txpwrtrack, DELTA_SWINGIDX_SIZE); + memcpy(rtldm->delta_swing_table_idx_24ga_n, + rtl8812ae_delta_swing_table_idx_24ga_n_txpwrtrack, DELTA_SWINGIDX_SIZE); + memcpy(rtldm->delta_swing_table_idx_24gb_p, + rtl8812ae_delta_swing_table_idx_24gb_p_txpwrtrack, DELTA_SWINGIDX_SIZE); + memcpy(rtldm->delta_swing_table_idx_24gb_n, + rtl8812ae_delta_swing_table_idx_24gb_n_txpwrtrack, DELTA_SWINGIDX_SIZE); + + memcpy(rtldm->delta_swing_table_idx_24gccka_p, + rtl8812ae_delta_swing_table_idx_24gccka_p_txpwrtrack, DELTA_SWINGIDX_SIZE); + memcpy(rtldm->delta_swing_table_idx_24gccka_n, + rtl8812ae_delta_swing_table_idx_24gccka_n_txpwrtrack, DELTA_SWINGIDX_SIZE); + memcpy(rtldm->delta_swing_table_idx_24gcckb_p, + rtl8812ae_delta_swing_table_idx_24gcckb_p_txpwrtrack, DELTA_SWINGIDX_SIZE); + memcpy(rtldm->delta_swing_table_idx_24gcckb_n, + rtl8812ae_delta_swing_table_idx_24gcckb_n_txpwrtrack, DELTA_SWINGIDX_SIZE); + + memcpy(rtldm->delta_swing_table_idx_5ga_p, + rtl8812ae_delta_swing_table_idx_5ga_p_txpwrtrack, DELTA_SWINGIDX_SIZE*3); + memcpy(rtldm->delta_swing_table_idx_5ga_n, + rtl8812ae_delta_swing_table_idx_5ga_n_txpwrtrack, DELTA_SWINGIDX_SIZE*3); + memcpy(rtldm->delta_swing_table_idx_5gb_p, + rtl8812ae_delta_swing_table_idx_5gb_p_txpwrtrack, DELTA_SWINGIDX_SIZE*3); + memcpy(rtldm->delta_swing_table_idx_5gb_n, + rtl8812ae_delta_swing_table_idx_5gb_n_txpwrtrack, DELTA_SWINGIDX_SIZE*3); +} + +void rtl8821ae_dm_read_and_config_txpower_track( + struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_dm *rtldm = rtl_dm(rtl_priv(hw)); + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("===> rtl8821ae_dm_read_and_config_txpower_track\n")); + + + memcpy(rtldm->delta_swing_table_idx_24ga_p, + rtl8821ae_delta_swing_table_idx_24ga_p_txpwrtrack, DELTA_SWINGIDX_SIZE); + memcpy(rtldm->delta_swing_table_idx_24ga_n, + rtl8821ae_delta_swing_table_idx_24ga_n_txpwrtrack, DELTA_SWINGIDX_SIZE); + memcpy(rtldm->delta_swing_table_idx_24gb_p, + rtl8821ae_delta_swing_table_idx_24gb_p_txpwrtrack, DELTA_SWINGIDX_SIZE); + memcpy(rtldm->delta_swing_table_idx_24gb_n, + rtl8821ae_delta_swing_table_idx_24gb_n_txpwrtrack, DELTA_SWINGIDX_SIZE); + + memcpy(rtldm->delta_swing_table_idx_24gccka_p, + rtl8821ae_delta_swing_table_idx_24gccka_p_txpwrtrack, DELTA_SWINGIDX_SIZE); + memcpy(rtldm->delta_swing_table_idx_24gccka_n, + rtl8821ae_delta_swing_table_idx_24gccka_n_txpwrtrack, DELTA_SWINGIDX_SIZE); + memcpy(rtldm->delta_swing_table_idx_24gcckb_p, + rtl8821ae_delta_swing_table_idx_24gcckb_p_txpwrtrack, DELTA_SWINGIDX_SIZE); + memcpy(rtldm->delta_swing_table_idx_24gcckb_n, + rtl8821ae_delta_swing_table_idx_24gcckb_n_txpwrtrack, DELTA_SWINGIDX_SIZE); + + memcpy(rtldm->delta_swing_table_idx_5ga_p, + rtl8821ae_delta_swing_table_idx_5ga_p_txpwrtrack, DELTA_SWINGIDX_SIZE*3); + memcpy(rtldm->delta_swing_table_idx_5ga_n, + rtl8821ae_delta_swing_table_idx_5ga_n_txpwrtrack, DELTA_SWINGIDX_SIZE*3); + memcpy(rtldm->delta_swing_table_idx_5gb_p, + rtl8821ae_delta_swing_table_idx_5gb_p_txpwrtrack, DELTA_SWINGIDX_SIZE*3); + memcpy(rtldm->delta_swing_table_idx_5gb_n, + rtl8821ae_delta_swing_table_idx_5gb_n_txpwrtrack, DELTA_SWINGIDX_SIZE*3); +} + + + +#define CALCULATE_SWINGTALBE_OFFSET(_offset, _direction, _size, _deltaThermal) \ + do {\ + for(_offset = 0; _offset < _size; _offset++)\ + {\ + if(_deltaThermal < thermal_threshold[_direction][_offset])\ + {\ + if(_offset != 0)\ + _offset--;\ + break;\ + }\ + } \ + if(_offset >= _size)\ + _offset = _size-1;\ + } while(0) + + +void rtl8821ae_dm_txpower_track_adjust(struct ieee80211_hw *hw, + u8 type,u8 *pdirection, + u32 *poutwrite_val) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_dm *rtldm = rtl_dm(rtl_priv(hw)); + u8 pwr_val = 0; + + if (type == 0){ + if (rtlpriv->dm.bb_swing_idx_ofdm[RF90_PATH_A] <= + rtlpriv->dm.bb_swing_idx_ofdm_base[RF90_PATH_A]) { + *pdirection = 1; + pwr_val = rtldm->bb_swing_idx_ofdm_base[RF90_PATH_A] - rtldm->bb_swing_idx_ofdm[RF90_PATH_A]; + } else { + *pdirection = 2; + pwr_val = rtldm->bb_swing_idx_ofdm[RF90_PATH_A] - rtldm->bb_swing_idx_ofdm_base[RF90_PATH_A]; + } + } else if (type ==1) { + if (rtldm->bb_swing_idx_cck <= rtldm->bb_swing_idx_cck_base) { + *pdirection = 1; + pwr_val = rtldm->bb_swing_idx_cck_base - rtldm->bb_swing_idx_cck; + } else { + *pdirection = 2; + pwr_val = rtldm->bb_swing_idx_cck - rtldm->bb_swing_idx_cck_base; + } + } + + if (pwr_val >= TXPWRTRACK_MAX_IDX && (*pdirection == 1)) + pwr_val = TXPWRTRACK_MAX_IDX; + + *poutwrite_val = pwr_val |(pwr_val << 8)|(pwr_val << 16) | (pwr_val << 24); +} + +void rtl8821ae_dm_clear_txpower_tracking_state(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_dm *rtldm = rtl_dm(rtlpriv); + struct rtl_efuse *rtlefuse = rtl_efuse(rtlpriv); + u8 p = 0; + rtldm->bb_swing_idx_cck_base = rtldm->default_cck_index; + rtldm->bb_swing_idx_cck = rtldm->default_cck_index; + rtldm->cck_index = 0; + + for (p = RF90_PATH_A; p < MAX_RF_PATH; ++p) { + rtldm->bb_swing_idx_ofdm_base[p] = rtldm->default_ofdm_index; + rtldm->bb_swing_idx_ofdm[p] = rtldm->default_ofdm_index; + rtldm->ofdm_index[p] = rtldm->default_ofdm_index; + + rtldm->power_index_offset[p] = 0; + rtldm->delta_power_index[p] = 0; + rtldm->delta_power_index_last[p] = 0; + + rtldm->aboslute_ofdm_swing_idx[p] = 0; /*Initial Mix mode power tracking*/ + rtldm->remnant_ofdm_swing_idx[p] = 0; + } + + rtldm->modify_txagc_flag_path_a = false; /*Initial at Modify Tx Scaling Mode*/ + rtldm->modify_txagc_flag_path_b = false; /*Initial at Modify Tx Scaling Mode*/ + rtldm->remnant_cck_idx = 0; + rtldm->thermalvalue = rtlefuse->eeprom_thermalmeter; + rtldm->thermalvalue_iqk = rtlefuse->eeprom_thermalmeter; + rtldm->thermalvalue_lck = rtlefuse->eeprom_thermalmeter; +} + +u8 rtl8821ae_dm_get_swing_index(struct ieee80211_hw *hw) +{ + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + u8 i = 0; + u32 bb_swing; + + bb_swing =rtl8821ae_phy_query_bb_reg(hw, rtlhal->current_bandtype, RF90_PATH_A); + + for (i = 0; i < TXSCALE_TABLE_SIZE; ++i) + if ( bb_swing == rtl8821ae_txscaling_table[i]) + break; + + return i; +} + +void rtl8821ae_dm_initialize_txpower_tracking_thermalmeter( + struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_dm *rtldm = rtl_dm(rtlpriv); + struct rtl_efuse *rtlefuse = rtl_efuse(rtlpriv); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + u8 default_swing_index = 0; + u8 p = 0; + + rtlpriv->dm.txpower_track_control = true; + rtldm->thermalvalue = rtlefuse->eeprom_thermalmeter; + rtldm->thermalvalue_iqk = rtlefuse->eeprom_thermalmeter; + rtldm->thermalvalue_lck = rtlefuse->eeprom_thermalmeter; + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8812AE) + rtl8812ae_dm_read_and_config_txpower_track(hw); + else + rtl8821ae_dm_read_and_config_txpower_track(hw); + + default_swing_index = rtl8821ae_dm_get_swing_index(hw); + + rtldm->default_ofdm_index = (default_swing_index == TXSCALE_TABLE_SIZE) ? 24 : default_swing_index; + rtldm->default_cck_index = 24; + + rtldm->bb_swing_idx_cck_base = rtldm->default_cck_index; + rtldm->cck_index = rtldm->default_cck_index; + + for (p = RF90_PATH_A; p < MAX_RF_PATH; ++p) + { + rtldm->bb_swing_idx_ofdm_base[p] = rtldm->default_ofdm_index; + rtldm->ofdm_index[p] = rtldm->default_ofdm_index; + rtldm->delta_power_index[p] = 0; + rtldm->power_index_offset[p] = 0; + rtldm->delta_power_index_last[p] = 0; + } +} + +static void rtl8821ae_dm_init_dynamic_bb_powersaving(struct ieee80211_hw *hw) +{ + dm_pstable.pre_ccastate = CCA_MAX; + dm_pstable.cur_ccasate = CCA_MAX; + dm_pstable.pre_rfstate = RF_MAX; + dm_pstable.cur_rfstate = RF_MAX; + dm_pstable.rssi_val_min = 0; + dm_pstable.initialize = 0; +} + + +static void rtl8821ae_dm_diginit(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + //dm_digtable.dig_enable_flag = true; + dm_digtable.cur_igvalue = rtl_get_bbreg(hw, ROFDM0_XAAGCCORE1, 0x7f); + /*dm_digtable.pre_igvalue = 0; + dm_digtable.cursta_connectctate = DIG_STA_DISCONNECT; + dm_digtable.presta_connectstate = DIG_STA_DISCONNECT; + dm_digtable.curmultista_connectstate = DIG_MULTISTA_DISCONNECT;*/ + dm_digtable.rssi_lowthresh = DM_DIG_THRESH_LOW; + dm_digtable.rssi_highthresh = DM_DIG_THRESH_HIGH; + dm_digtable.fa_lowthresh = DM_FALSEALARM_THRESH_LOW; + dm_digtable.fa_highthresh = DM_FALSEALARM_THRESH_HIGH; + dm_digtable.rx_gain_range_max = DM_DIG_MAX; + dm_digtable.rx_gain_range_min = DM_DIG_MIN; + dm_digtable.backoff_val = DM_DIG_BACKOFF_DEFAULT; + dm_digtable.backoff_val_range_max = DM_DIG_BACKOFF_MAX; + dm_digtable.backoff_val_range_min = DM_DIG_BACKOFF_MIN; + dm_digtable.pre_cck_cca_thres = 0xff; + dm_digtable.cur_cck_cca_thres = 0x83; + dm_digtable.forbidden_igi = DM_DIG_MIN; + dm_digtable.large_fa_hit = 0; + dm_digtable.recover_cnt = 0; + dm_digtable.dig_dynamic_min_0 = DM_DIG_MIN; + dm_digtable.dig_dynamic_min_1 = DM_DIG_MIN; + dm_digtable.b_media_connect_0 = false; + dm_digtable.b_media_connect_1 = false; + rtlpriv->dm.b_dm_initialgain_enable = true; + dm_digtable.bt30_cur_igi = 0x32; +} + +static void rtl8821ae_dm_init_dynamic_txpower(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + rtlpriv->dm.bdynamic_txpower_enable = false; + + rtlpriv->dm.last_dtp_lvl = TXHIGHPWRLEVEL_NORMAL; + rtlpriv->dm.dynamic_txhighpower_lvl = TXHIGHPWRLEVEL_NORMAL; +} + + +void rtl8821ae_dm_init_edca_turbo(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + rtlpriv->dm.bcurrent_turbo_edca = false; + rtlpriv->dm.bis_any_nonbepkts = false; + rtlpriv->dm.bis_cur_rdlstate = false; +} + + +void rtl8821ae_dm_init_rate_adaptive_mask(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rate_adaptive *p_ra = &(rtlpriv->ra); + + p_ra->ratr_state = DM_RATR_STA_INIT; + p_ra->pre_ratr_state = DM_RATR_STA_INIT; + + rtlpriv->dm.dm_type = DM_TYPE_BYDRIVER; + if (rtlpriv->dm.dm_type == DM_TYPE_BYDRIVER) + rtlpriv->dm.b_useramask = true; + else + rtlpriv->dm.b_useramask = false; + + p_ra->high_rssi_thresh_for_ra = 50; + p_ra->low_rssi_thresh_for_ra = 20; +} + + +static void rtl8821ae_dm_init_txpower_tracking(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + rtlpriv->dm.btxpower_tracking = true; + rtlpriv->dm.btxpower_trackinginit = false; + rtlpriv->dm.txpowercount = 0; + rtlpriv->dm.txpower_track_control = true; + rtlpriv->dm.thermalvalue = 0; + + rtlpriv->dm.ofdm_index[0] = 30; + rtlpriv->dm.cck_index = 20; + + rtlpriv->dm.bb_swing_idx_cck_base = rtlpriv->dm.cck_index; + + + rtlpriv->dm.bb_swing_idx_ofdm[RF90_PATH_A] = rtlpriv->dm.ofdm_index[0]; + rtlpriv->dm.bb_swing_idx_ofdm[RF90_PATH_B] = rtlpriv->dm.ofdm_index[0]; + rtlpriv->dm.delta_power_index[0] = 0; + rtlpriv->dm.delta_power_index_last[0] = 0; + rtlpriv->dm.power_index_offset[0] = 0; + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + (" rtlpriv->dm.btxpower_tracking = %d\n", + rtlpriv->dm.btxpower_tracking)); +} + + +void rtl8821ae_dm_init_dynamic_atc_switch(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + rtlpriv->dm.crystal_cap = rtlpriv->efuse.crystalcap; + + rtlpriv->dm.atc_status = rtl_get_bbreg(hw, ROFDM1_CFOTRACKING, BIT(11)); + rtlpriv->dm.cfo_threshold = CFO_THRESHOLD_XTAL; +} + + +void rtl8821ae_dm_init(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + + spin_lock(&rtlpriv->locks.iqk_lock); + rtlphy->b_iqk_in_progress = false; + spin_unlock(&rtlpriv->locks.iqk_lock); + + rtlpriv->dm.dm_type = DM_TYPE_BYDRIVER; + rtl8821ae_dm_diginit(hw); + rtl8821ae_dm_init_rate_adaptive_mask(hw); + rtl8812ae_dm_path_diversity_init(hw); + rtl8821ae_dm_init_edca_turbo(hw); + rtl8821ae_dm_initialize_txpower_tracking_thermalmeter(hw); +#if 1 + rtl8821ae_dm_init_dynamic_bb_powersaving(hw); + rtl8821ae_dm_init_dynamic_txpower(hw); + rtl8821ae_dm_init_txpower_tracking(hw); +#endif + rtl8821ae_dm_init_dynamic_atc_switch(hw); +} + +void rtl8821ae_dm_find_minimum_rssi(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_dig *rtl_dm_dig = &(rtlpriv->dm.dm_digtable); + struct rtl_mac *mac = rtl_mac(rtlpriv); + + /* Determine the minimum RSSI */ + if ((mac->link_state < MAC80211_LINKED) && + (rtlpriv->dm.entry_min_undecoratedsmoothed_pwdb == 0)) { + rtl_dm_dig->min_undecorated_pwdb_for_dm = 0; + RT_TRACE(COMP_BB_POWERSAVING, DBG_LOUD, + ("Not connected to any \n")); + } + if (mac->link_state >= MAC80211_LINKED) { + if (mac->opmode == NL80211_IFTYPE_AP || + mac->opmode == NL80211_IFTYPE_ADHOC) { + rtl_dm_dig->min_undecorated_pwdb_for_dm = + rtlpriv->dm.entry_min_undecoratedsmoothed_pwdb; + RT_TRACE(COMP_BB_POWERSAVING, DBG_LOUD, + ("AP Client PWDB = 0x%lx \n", + rtlpriv->dm.entry_min_undecoratedsmoothed_pwdb)); + } else { + rtl_dm_dig->min_undecorated_pwdb_for_dm = + rtlpriv->dm.undecorated_smoothed_pwdb; + RT_TRACE(COMP_BB_POWERSAVING, DBG_LOUD, + ("STA Default Port PWDB = 0x%x \n", + rtl_dm_dig->min_undecorated_pwdb_for_dm)); + } + } else { + rtl_dm_dig->min_undecorated_pwdb_for_dm = + rtlpriv->dm.entry_min_undecoratedsmoothed_pwdb; + RT_TRACE(COMP_BB_POWERSAVING, DBG_LOUD, + ("AP Ext Port or disconnet PWDB = 0x%x \n", + rtl_dm_dig->min_undecorated_pwdb_for_dm)); + } + RT_TRACE(COMP_DIG, DBG_LOUD, ("MinUndecoratedPWDBForDM =%d\n", + rtl_dm_dig->min_undecorated_pwdb_for_dm)); +} + +#if 0 +void rtl8812ae_dm_rssi_dump_to_register( + struct ieee80211_hw *hw + ) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + rtl_write_byte(rtlpriv, RA_RSSI_DUMP, Adapter->RxStats.RxRSSIPercentage[0]); + rtl_write_byte(rtlpriv, RB_RSSI_DUMP, Adapter->RxStats.RxRSSIPercentage[1]); + + /* Rx EVM*/ + rtl_write_byte(rtlpriv, RS1_RX_EVM_DUMP, Adapter->RxStats.RxEVMdbm[0]); + rtl_write_byte(rtlpriv, RS2_RX_EVM_DUMP, Adapter->RxStats.RxEVMdbm[1]); + + /*Rx SNR*/ + rtl_write_byte(rtlpriv, RA_RX_SNR_DUMP, (u1Byte)(Adapter->RxStats.RxSNRdB[0])); + rtl_write_byte(rtlpriv, RB_RX_SNR_DUMP, (u1Byte)(Adapter->RxStats.RxSNRdB[1])); + + /*Rx Cfo_Short*/ + rtl_write_word(rtlpriv, RA_CFO_SHORT_DUMP, Adapter->RxStats.RxCfoShort[0]); + rtl_write_word(rtlpriv, RB_CFO_SHORT_DUMP, Adapter->RxStats.RxCfoShort[1]); + + /*Rx Cfo_Tail*/ + rtl_write_word(rtlpriv, RA_CFO_LONG_DUMP, Adapter->RxStats.RxCfoTail[0]); + rtl_write_word(rtlpriv, RB_CFO_LONG_DUMP, Adapter->RxStats.RxCfoTail[1]); + +} +#endif + +static void rtl8821ae_dm_check_rssi_monitor(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_sta_info *drv_priv; + u8 h2c_parameter[3] = { 0 }; + long tmp_entry_max_pwdb = 0, tmp_entry_min_pwdb = 0xff; + + + /* AP & ADHOC & MESH */ + spin_lock_bh(&rtlpriv->locks.entry_list_lock); + list_for_each_entry(drv_priv, &rtlpriv->entry_list, list) { + if(drv_priv->rssi_stat.undecorated_smoothed_pwdb < tmp_entry_min_pwdb) + tmp_entry_min_pwdb = drv_priv->rssi_stat.undecorated_smoothed_pwdb; + if(drv_priv->rssi_stat.undecorated_smoothed_pwdb > tmp_entry_max_pwdb) + tmp_entry_max_pwdb = drv_priv->rssi_stat.undecorated_smoothed_pwdb; + + /*h2c_parameter[2] = (u8) (rtlpriv->dm.undecorated_smoothed_pwdb & 0xFF); + h2c_parameter[1] = 0x20; + h2c_parameter[0] = drv_priv->rssi_stat; + rtl8821ae_fill_h2c_cmd(hw, H2C_RSSI_REPORT, 3, h2c_parameter);*/ + } + spin_unlock_bh(&rtlpriv->locks.entry_list_lock); + + /* If associated entry is found */ + if (tmp_entry_max_pwdb != 0) { + rtlpriv->dm.entry_max_undecoratedsmoothed_pwdb = tmp_entry_max_pwdb; + RTPRINT(rtlpriv, FDM, DM_PWDB, ("EntryMaxPWDB = 0x%lx(%ld)\n", + tmp_entry_max_pwdb, tmp_entry_max_pwdb)); + } else { + rtlpriv->dm.entry_max_undecoratedsmoothed_pwdb = 0; + } + /* If associated entry is found */ + if (tmp_entry_min_pwdb != 0xff) { + rtlpriv->dm.entry_min_undecoratedsmoothed_pwdb = tmp_entry_min_pwdb; + RTPRINT(rtlpriv, FDM, DM_PWDB, ("EntryMinPWDB = 0x%lx(%ld)\n", + tmp_entry_min_pwdb, tmp_entry_min_pwdb)); + } else { + rtlpriv->dm.entry_min_undecoratedsmoothed_pwdb = 0; + } + /* Indicate Rx signal strength to FW. */ + if (rtlpriv->dm.b_useramask) { + h2c_parameter[2] = (u8) (rtlpriv->dm.undecorated_smoothed_pwdb & 0xFF); + h2c_parameter[1] = 0x20; + h2c_parameter[0] = 0; + rtl8821ae_fill_h2c_cmd(hw, H2C_RSSI_REPORT, 3, h2c_parameter); + } else { + rtl_write_byte(rtlpriv, 0x4fe, rtlpriv->dm.undecorated_smoothed_pwdb); + } + rtl8821ae_dm_find_minimum_rssi(hw); + dm_digtable.rssi_val_min = rtlpriv->dm.dm_digtable.min_undecorated_pwdb_for_dm; +} + +void rtl8821ae_dm_write_cck_cca_thres(struct ieee80211_hw *hw, u8 current_cca) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + if (dm_digtable.cur_cck_cca_thres != current_cca) + rtl_write_byte(rtlpriv, DM_REG_CCK_CCA_11AC, current_cca); + + dm_digtable.pre_cck_cca_thres = dm_digtable.cur_cck_cca_thres; + dm_digtable.cur_cck_cca_thres = current_cca; +} + +void rtl8821ae_dm_write_dig(struct ieee80211_hw *hw, u8 current_igi) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + if(dm_digtable.stop_dig) + return; + + if (dm_digtable.cur_igvalue != current_igi){ + rtl_set_bbreg(hw, DM_REG_IGI_A_11AC, DM_BIT_IGI_11AC, current_igi); + if (rtlpriv->phy.rf_type != RF_1T1R) + rtl_set_bbreg(hw, DM_REG_IGI_B_11AC, DM_BIT_IGI_11AC, current_igi); + } + //dm_digtable.pre_igvalue = dm_digtable.cur_igvalue; + dm_digtable.cur_igvalue = current_igi; +} + +static void rtl8821ae_dm_dig(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + u8 dig_dynamic_min; + u8 dig_max_of_min; + bool first_connect, first_disconnect; + u8 dm_dig_max, dm_dig_min, offset; + u8 current_igi =dm_digtable.cur_igvalue; + + + RT_TRACE(COMP_DIG, DBG_LOUD,("rtl8821ae_dm_dig()==>\n")); + + + if (mac->act_scanning == true) { + RT_TRACE(COMP_DIG, DBG_LOUD,("rtl8821ae_dm_dig() Return: In Scan Progress \n")); + return; + } + + /*add by Neil Chen to avoid PSD is processing*/ + dig_dynamic_min = dm_digtable.dig_dynamic_min_0; + first_connect = (mac->link_state >= MAC80211_LINKED) && + (dm_digtable.b_media_connect_0 == false); + first_disconnect = (mac->link_state < MAC80211_LINKED) && + (dm_digtable.b_media_connect_0 == true); + + /*1 Boundary Decision*/ + + + dm_dig_max = 0x5A; + + if (rtlhal->hw_type != HARDWARE_TYPE_RTL8821AE) + dm_dig_min = DM_DIG_MIN; + else + dm_dig_min = 0x1C; + + dig_max_of_min = DM_DIG_MAX_AP; + + if (mac->link_state >= MAC80211_LINKED) { + if (rtlhal->hw_type != HARDWARE_TYPE_RTL8821AE) + offset = 20; + else + offset = 10; + + if ((dm_digtable.rssi_val_min + offset) > dm_dig_max) + dm_digtable.rx_gain_range_max = dm_dig_max; + else if ((dm_digtable.rssi_val_min + offset) < dm_dig_min) + dm_digtable.rx_gain_range_max = dm_dig_min; + else + dm_digtable.rx_gain_range_max = dm_digtable.rssi_val_min + offset; + + if(rtlpriv->dm.b_one_entry_only){ + offset = 0; + + if (dm_digtable.rssi_val_min - offset < dm_dig_min) + dig_dynamic_min = dm_dig_min; + else if (dm_digtable.rssi_val_min - offset > dig_max_of_min) + dig_dynamic_min = dig_max_of_min; + else + dig_dynamic_min = dm_digtable.rssi_val_min - offset; + + RT_TRACE(COMP_DIG, DBG_LOUD, + ("rtl8821ae_dm_dig() : bOneEntryOnly=TRUE, dig_dynamic_min=0x%x\n", + dig_dynamic_min)); + RT_TRACE(COMP_DIG, DBG_LOUD, + ("rtl8821ae_dm_dig() : dm_digtable.rssi_val_min=%d",dm_digtable. + rssi_val_min)); + } else { + dig_dynamic_min = dm_dig_min; + } + } else { + dm_digtable.rx_gain_range_max = dm_dig_max; + dig_dynamic_min = dm_dig_min; + RT_TRACE(COMP_DIG, DBG_LOUD, + ("rtl8821ae_dm_dig() : No Link\n")); + } + + if (rtlpriv->falsealm_cnt.cnt_all > 10000) { + RT_TRACE(COMP_DIG, DBG_LOUD, + ("rtl8821ae_dm_dig(): Abnornally false alarm case. \n")); + + if (dm_digtable.large_fa_hit != 3) + dm_digtable.large_fa_hit++; + if (dm_digtable.forbidden_igi < current_igi) { + dm_digtable.forbidden_igi = current_igi; + dm_digtable.large_fa_hit = 1; + } + + if (dm_digtable.large_fa_hit >= 3) { + if((dm_digtable.forbidden_igi + 1) > dm_digtable.rx_gain_range_max) + dm_digtable.rx_gain_range_min = dm_digtable.rx_gain_range_max; + else + dm_digtable.rx_gain_range_min = (dm_digtable.forbidden_igi + 1); + dm_digtable.recover_cnt = 3600; + } + + } else { + /*Recovery mechanism for IGI lower bound*/ + if (dm_digtable.recover_cnt != 0) + dm_digtable.recover_cnt --; + else { + if (dm_digtable.large_fa_hit < 3) { + if ((dm_digtable.forbidden_igi -1) < dig_dynamic_min) { + dm_digtable.forbidden_igi = dig_dynamic_min; + dm_digtable.rx_gain_range_min = dig_dynamic_min; + RT_TRACE(COMP_DIG, DBG_LOUD, + ("rtl8821ae_dm_dig(): Normal Case: At Lower Bound\n")); + } else { + dm_digtable.forbidden_igi --; + dm_digtable.rx_gain_range_min = (dm_digtable.forbidden_igi + 1); + RT_TRACE(COMP_DIG, DBG_LOUD, + ("rtl8821ae_dm_dig(): Normal Case: Approach Lower Bound\n")); + } + } else { + dm_digtable.large_fa_hit = 0; + } + } + } + RT_TRACE(COMP_DIG, DBG_LOUD, + ("rtl8821ae_dm_dig(): pDM_DigTable->LargeFAHit=%d\n", + dm_digtable.large_fa_hit)); + + if (rtlpriv->dm.dbginfo.num_qry_beacon_pkt < 10) + dm_digtable.rx_gain_range_min = dm_dig_min; + + if (dm_digtable.rx_gain_range_min > dm_digtable.rx_gain_range_max) + dm_digtable.rx_gain_range_min = dm_digtable.rx_gain_range_max; + + /*Adjust initial gain by false alarm*/ + if (mac->link_state >= MAC80211_LINKED) { + RT_TRACE(COMP_DIG, DBG_LOUD, + ("rtl8821ae_dm_dig(): DIG AfterLink\n")); + if (first_connect) { + if (dm_digtable.rssi_val_min <= dig_max_of_min) + current_igi = dm_digtable.rssi_val_min; + else + current_igi = dig_max_of_min; + RT_TRACE(COMP_DIG, DBG_LOUD, + ("rtl8821ae_dm_dig: First Connect\n")); + } else { + if(rtlpriv->falsealm_cnt.cnt_all > DM_DIG_FA_TH2) + current_igi = current_igi + 4; + else if (rtlpriv->falsealm_cnt.cnt_all > DM_DIG_FA_TH1) + current_igi = current_igi + 2; + else if(rtlpriv->falsealm_cnt.cnt_all < DM_DIG_FA_TH0) + current_igi = current_igi - 2; + + if((rtlpriv->dm.dbginfo.num_qry_beacon_pkt < 10) + &&(rtlpriv->falsealm_cnt.cnt_all < DM_DIG_FA_TH1)) { + current_igi = dm_digtable.rx_gain_range_min; + RT_TRACE(COMP_DIG, DBG_LOUD, + ("rtl8821ae_dm_dig(): Beacon is less than 10 and FA is less than 768, IGI GOES TO 0x1E!!!!!!!!!!!!\n")); + } + } + } else{ + RT_TRACE(COMP_DIG, DBG_LOUD, + ("rtl8821ae_dm_dig(): DIG BeforeLink\n")); + if (first_disconnect){ + current_igi = dm_digtable.rx_gain_range_min; + RT_TRACE(COMP_DIG, DBG_LOUD, + ("rtl8821ae_dm_dig(): First DisConnect \n")); + } else { + /*2012.03.30 LukeLee: enable DIG before link but with very high thresholds*/ + if (rtlpriv->falsealm_cnt.cnt_all > 2000) + current_igi = current_igi + 4; + else if (rtlpriv->falsealm_cnt.cnt_all > 600) + current_igi = current_igi + 2; + else if(rtlpriv->falsealm_cnt.cnt_all < 300) + current_igi = current_igi - 2; + if (current_igi >= 0x3e) + current_igi = 0x3e; + RT_TRACE(COMP_DIG, DBG_LOUD,("rtl8821ae_dm_dig(): England DIG \n")); + } + } + RT_TRACE(COMP_DIG, DBG_LOUD, + ("rtl8821ae_dm_dig(): DIG End Adjust IGI\n")); + /* Check initial gain by upper/lower bound*/ + + if (current_igi > dm_digtable.rx_gain_range_max) + current_igi = dm_digtable.rx_gain_range_max; + if (current_igi < dm_digtable.rx_gain_range_min) + current_igi = dm_digtable.rx_gain_range_min; + + RT_TRACE(COMP_DIG, DBG_LOUD, + ("rtl8821ae_dm_dig(): rx_gain_range_max=0x%x, rx_gain_range_min=0x%x\n", + dm_digtable.rx_gain_range_max, dm_digtable.rx_gain_range_min)); + RT_TRACE(COMP_DIG, DBG_LOUD, + ("rtl8821ae_dm_dig(): TotalFA=%d\n", rtlpriv->falsealm_cnt.cnt_all)); + RT_TRACE(COMP_DIG, DBG_LOUD, + ("rtl8821ae_dm_dig(): CurIGValue=0x%x\n", current_igi)); + + rtl8821ae_dm_write_dig(hw, current_igi); + dm_digtable.b_media_connect_0= ((mac->link_state >= MAC80211_LINKED) ? true :false); + dm_digtable.dig_dynamic_min_0 = dig_dynamic_min; +} + +static void rtl8821ae_dm_common_info_self_update(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 cnt = 0; + struct rtl_sta_info *drv_priv; + + rtlpriv->dm.b_one_entry_only = false; + + if (rtlpriv->mac80211.opmode == NL80211_IFTYPE_STATION && + rtlpriv->mac80211.link_state >= MAC80211_LINKED) { + rtlpriv->dm.b_one_entry_only = true; + return; + } + + if (rtlpriv->mac80211.opmode == NL80211_IFTYPE_AP || + rtlpriv->mac80211.opmode == NL80211_IFTYPE_ADHOC || + rtlpriv->mac80211.opmode == NL80211_IFTYPE_MESH_POINT) { + spin_lock_bh(&rtlpriv->locks.entry_list_lock); + list_for_each_entry(drv_priv, &rtlpriv->entry_list, list) { + cnt ++; + } + spin_unlock_bh(&rtlpriv->locks.entry_list_lock); + + if (cnt == 1) + rtlpriv->dm.b_one_entry_only = true; + } +} + + +static void rtl8821ae_dm_false_alarm_counter_statistics(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct false_alarm_statistics *falsealm_cnt = &(rtlpriv->falsealm_cnt); + u32 cck_enable =0; + + /*read OFDM FA counter*/ + falsealm_cnt->cnt_ofdm_fail = rtl_get_bbreg(hw, ODM_REG_OFDM_FA_11AC, BMASKLWORD); + falsealm_cnt->cnt_cck_fail = rtl_get_bbreg(hw, ODM_REG_CCK_FA_11AC, BMASKLWORD); + + cck_enable = rtl_get_bbreg(hw, ODM_REG_BB_RX_PATH_11AC, BIT(28)); + if (cck_enable) /*if(pDM_Odm->pBandType == ODM_BAND_2_4G)*/ + falsealm_cnt->cnt_all = falsealm_cnt->cnt_ofdm_fail + falsealm_cnt->cnt_cck_fail; + else + falsealm_cnt->cnt_all = falsealm_cnt->cnt_ofdm_fail; + + /*reset OFDM FA coutner*/ + rtl_set_bbreg(hw, ODM_REG_OFDM_FA_RST_11AC, BIT(17), 1); + rtl_set_bbreg(hw, ODM_REG_OFDM_FA_RST_11AC, BIT(17), 0); + /* reset CCK FA counter*/ + rtl_set_bbreg(hw, ODM_REG_CCK_FA_RST_11AC, BIT(15), 0); + rtl_set_bbreg(hw, ODM_REG_CCK_FA_RST_11AC, BIT(15), 1); + + RT_TRACE(COMP_DIG, DBG_LOUD, ("Cnt_Cck_fail=%d\n", + falsealm_cnt->cnt_cck_fail)); + RT_TRACE(COMP_DIG, DBG_LOUD, ("cnt_ofdm_fail=%d\n", + falsealm_cnt->cnt_ofdm_fail)); + RT_TRACE(COMP_DIG, DBG_LOUD, ("Total False Alarm=%d\n", + falsealm_cnt->cnt_all)); +} + +void rtl8812ae_dm_check_txpower_tracking_thermalmeter( + struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + static u8 tm_trigger = 0; + + if (!rtlpriv->dm.btxpower_tracking) + return; + + if (!tm_trigger) { + rtl_set_rfreg(hw, RF90_PATH_A, RF_T_METER_88E, BIT(17)|BIT(16), 0x03); + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("Trigger 8812 Thermal Meter!!\n")); + tm_trigger = 1; + return; + } else { + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("Schedule TxPowerTracking direct call!!\n")); + rtl8812ae_dm_txpower_tracking_callback_thermalmeter(hw); + tm_trigger = 0; + } +} + +static void rtl8821ae_dm_iq_calibrate(struct ieee80211_hw *hw) +{ + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct rtl_dm *rtldm = rtl_dm(rtl_priv(hw)); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + + if (mac->link_state >= MAC80211_LINKED) { + /*if ((*rtldm->p_channel != rtldm->pre_channel ) + && (!mac->act_scanning)) { + rtldm->pre_channel = *rtldm->p_channel; + rtldm->linked_interval = 0; + }*/ + + if(rtldm->linked_interval < 3) + rtldm->linked_interval ++; + + if(rtldm->linked_interval == 2) + { + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8812AE) + rtl8812ae_phy_iq_calibrate(hw, false); + else + rtl8821ae_phy_iq_calibrate(hw, false); + } + } else { + rtldm->linked_interval = 0; + } +} + + +void rtl8812ae_get_delta_swing_table( + struct ieee80211_hw *hw, + u8 **temperature_up_a, + u8 **temperature_down_a, + u8 **temperature_up_b, + u8 **temperature_down_b + ) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct rtl_dm *rtldm = rtl_dm(rtl_priv(hw)); + u8 channel = rtlphy->current_channel; + u8 rate = rtldm->tx_rate; + + + if ( 1 <= channel && channel <= 14) { + if (RX_HAL_IS_CCK_RATE(rate)) { + *temperature_up_a = rtldm->delta_swing_table_idx_24gccka_p; + *temperature_down_a = rtldm->delta_swing_table_idx_24gccka_n; + *temperature_up_b = rtldm->delta_swing_table_idx_24gcckb_p; + *temperature_down_b = rtldm->delta_swing_table_idx_24gcckb_n; + } else { + *temperature_up_a = rtldm->delta_swing_table_idx_24ga_p; + *temperature_down_a = rtldm->delta_swing_table_idx_24ga_n; + *temperature_up_b = rtldm->delta_swing_table_idx_24gb_p; + *temperature_down_b = rtldm->delta_swing_table_idx_24gb_n; + } + } else if ( 36 <= channel && channel <= 64) { + *temperature_up_a = rtldm->delta_swing_table_idx_5ga_p[0]; + *temperature_down_a = rtldm->delta_swing_table_idx_5ga_n[0]; + *temperature_up_b = rtldm->delta_swing_table_idx_5gb_p[0]; + *temperature_down_b = rtldm->delta_swing_table_idx_5gb_n[0]; + } else if ( 100 <= channel && channel <= 140) { + *temperature_up_a = rtldm->delta_swing_table_idx_5ga_p[1]; + *temperature_down_a = rtldm->delta_swing_table_idx_5ga_n[1]; + *temperature_up_b = rtldm->delta_swing_table_idx_5gb_p[1]; + *temperature_down_b = rtldm->delta_swing_table_idx_5gb_n[1]; + } else if ( 149 <= channel && channel <= 173) { + *temperature_up_a = rtldm->delta_swing_table_idx_5ga_p[2]; + *temperature_down_a = rtldm->delta_swing_table_idx_5ga_n[2]; + *temperature_up_b = rtldm->delta_swing_table_idx_5gb_p[2]; + *temperature_down_b = rtldm->delta_swing_table_idx_5gb_n[2]; + } else { + *temperature_up_a = (u8*)rtl8818e_delta_swing_table_idx_24gb_p_txpwrtrack; + *temperature_down_a =(u8*)rtl8818e_delta_swing_table_idx_24gb_n_txpwrtrack; + *temperature_up_b = (u8*)rtl8818e_delta_swing_table_idx_24gb_p_txpwrtrack; + *temperature_down_b = (u8*)rtl8818e_delta_swing_table_idx_24gb_n_txpwrtrack; + } + + return; +} + +void rtl8812ae_phy_lccalibrate( + struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, ("===> rtl8812ae_phy_lccalibrate\n")); + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, ("<=== rtl8812ae_phy_lccalibrate\n")); + +} + +void rtl8812ae_dm_update_init_rate( + struct ieee80211_hw *hw, + u8 rate + ) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_dm *rtldm = rtl_dm(rtl_priv(hw)); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + u8 p = 0; + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("Get C2H Command! Rate=0x%x\n", rate)); + + rtldm->tx_rate = rate; + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8821AE){ + rtl8821ae_dm_txpwr_track_set_pwr(hw, MIX_MODE, RF90_PATH_A, 0); + } + else + { + for (p = RF90_PATH_A; p < MAX_PATH_NUM_8812A; p++) + { + rtl8812ae_dm_txpwr_track_set_pwr(hw, BBSWING, p, 0); + } + } + +} + +u8 rtl8812ae_hw_rate_to_mrate( + struct ieee80211_hw *hw, + u8 rate + ) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 ret_rate = MGN_1M; + + + switch(rate) + { + case DESC_RATE1M: ret_rate = MGN_1M; break; + case DESC_RATE2M: ret_rate = MGN_2M; break; + case DESC_RATE5_5M: ret_rate = MGN_5_5M; break; + case DESC_RATE11M: ret_rate = MGN_11M; break; + case DESC_RATE6M: ret_rate = MGN_6M; break; + case DESC_RATE9M: ret_rate = MGN_9M; break; + case DESC_RATE12M: ret_rate = MGN_12M; break; + case DESC_RATE18M: ret_rate = MGN_18M; break; + case DESC_RATE24M: ret_rate = MGN_24M; break; + case DESC_RATE36M: ret_rate = MGN_36M; break; + case DESC_RATE48M: ret_rate = MGN_48M; break; + case DESC_RATE54M: ret_rate = MGN_54M; break; + case DESC_RATEMCS0: ret_rate = MGN_MCS0; break; + case DESC_RATEMCS1: ret_rate = MGN_MCS1; break; + case DESC_RATEMCS2: ret_rate = MGN_MCS2; break; + case DESC_RATEMCS3: ret_rate = MGN_MCS3; break; + case DESC_RATEMCS4: ret_rate = MGN_MCS4; break; + case DESC_RATEMCS5: ret_rate = MGN_MCS5; break; + case DESC_RATEMCS6: ret_rate = MGN_MCS6; break; + case DESC_RATEMCS7: ret_rate = MGN_MCS7; break; + case DESC_RATEMCS8: ret_rate = MGN_MCS8; break; + case DESC_RATEMCS9: ret_rate = MGN_MCS9; break; + case DESC_RATEMCS10: ret_rate = MGN_MCS10; break; + case DESC_RATEMCS11: ret_rate = MGN_MCS11; break; + case DESC_RATEMCS12: ret_rate = MGN_MCS12; break; + case DESC_RATEMCS13: ret_rate = MGN_MCS13; break; + case DESC_RATEMCS14: ret_rate = MGN_MCS14; break; + case DESC_RATEMCS15: ret_rate = MGN_MCS15; break; + case DESC_RATEVHT1SS_MCS0: ret_rate = MGN_VHT1SS_MCS0; break; + case DESC_RATEVHT1SS_MCS1: ret_rate = MGN_VHT1SS_MCS1; break; + case DESC_RATEVHT1SS_MCS2: ret_rate = MGN_VHT1SS_MCS2; break; + case DESC_RATEVHT1SS_MCS3: ret_rate = MGN_VHT1SS_MCS3; break; + case DESC_RATEVHT1SS_MCS4: ret_rate = MGN_VHT1SS_MCS4; break; + case DESC_RATEVHT1SS_MCS5: ret_rate = MGN_VHT1SS_MCS5; break; + case DESC_RATEVHT1SS_MCS6: ret_rate = MGN_VHT1SS_MCS6; break; + case DESC_RATEVHT1SS_MCS7: ret_rate = MGN_VHT1SS_MCS7; break; + case DESC_RATEVHT1SS_MCS8: ret_rate = MGN_VHT1SS_MCS8; break; + case DESC_RATEVHT1SS_MCS9: ret_rate = MGN_VHT1SS_MCS9; break; + case DESC_RATEVHT2SS_MCS0: ret_rate = MGN_VHT2SS_MCS0; break; + case DESC_RATEVHT2SS_MCS1: ret_rate = MGN_VHT2SS_MCS1; break; + case DESC_RATEVHT2SS_MCS2: ret_rate = MGN_VHT2SS_MCS2; break; + case DESC_RATEVHT2SS_MCS3: ret_rate = MGN_VHT2SS_MCS3; break; + case DESC_RATEVHT2SS_MCS4: ret_rate = MGN_VHT2SS_MCS4; break; + case DESC_RATEVHT2SS_MCS5: ret_rate = MGN_VHT2SS_MCS5; break; + case DESC_RATEVHT2SS_MCS6: ret_rate = MGN_VHT2SS_MCS6; break; + case DESC_RATEVHT2SS_MCS7: ret_rate = MGN_VHT2SS_MCS7; break; + case DESC_RATEVHT2SS_MCS8: ret_rate = MGN_VHT2SS_MCS8; break; + case DESC_RATEVHT2SS_MCS9: ret_rate = MGN_VHT2SS_MCS9; break; + + default: + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("HwRateToMRate8812(): Non supported Rate [%x]!!!\n",rate )); + break; + } + return ret_rate; +} + +/*----------------------------------------------------------------------------- + * Function: odm_TxPwrTrackSetPwr88E() + * + * Overview: 88E change all channel tx power accordign to flag. + * OFDM & CCK are all different. + * + * Input: NONE + * + * Output: NONE + * + * Return: NONE + * + * Revised History: + * When Who Remark + * 04/23/2012 MHC Create Version 0. + * + *---------------------------------------------------------------------------*/ +void rtl8812ae_dm_txpwr_track_set_pwr(struct ieee80211_hw *hw, + enum pwr_track_control_method method, u8 rf_path, u8 channel_mapped_index) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_dm *rtldm = rtl_dm(rtl_priv(hw)); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + u32 final_bb_swing_idx[2]; + u8 pwr_tracking_limit = 26; /*+1.0dB*/ + u8 tx_rate = 0xFF; + s8 final_ofdm_swing_index = 0; + + if(rtldm->tx_rate != 0xFF) + tx_rate = rtl8812ae_hw_rate_to_mrate(hw, rtldm->tx_rate); + + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("===>rtl8812ae_dm_txpwr_track_set_pwr\n")); + + if(tx_rate != 0xFF) { /*20130429 Mimic Modify High Rate BBSwing Limit.*/ + /*CCK*/ + if((tx_rate >= MGN_1M) && (tx_rate <= MGN_11M)) + pwr_tracking_limit = 32; /*+4dB*/ + /*OFDM*/ + else if((tx_rate >= MGN_6M) && (tx_rate <= MGN_48M)) + pwr_tracking_limit = 30; /*+3dB*/ + else if(tx_rate == MGN_54M) + pwr_tracking_limit = 28; /*+2dB*/ + /*HT*/ + else if((tx_rate >= MGN_MCS0) && (tx_rate <= MGN_MCS2)) /*QPSK/BPSK*/ + pwr_tracking_limit = 34; /*+5dB*/ + else if((tx_rate >= MGN_MCS3) && (tx_rate <= MGN_MCS4)) /*16QAM*/ + pwr_tracking_limit = 30; /*+3dB*/ + else if((tx_rate >= MGN_MCS5) && (tx_rate <= MGN_MCS7)) /*64QAM*/ + pwr_tracking_limit = 28; /*+2dB*/ + + else if((tx_rate >= MGN_MCS8) && (tx_rate <= MGN_MCS10)) /*QPSK/BPSK*/ + pwr_tracking_limit = 34; /*+5dB*/ + else if((tx_rate >= MGN_MCS11) && (tx_rate <= MGN_MCS12)) /*16QAM*/ + pwr_tracking_limit = 30; /*+3dB*/ + else if((tx_rate >= MGN_MCS13) && (tx_rate <= MGN_MCS15)) /*64QAM*/ + pwr_tracking_limit = 28; /*+2dB*/ + + /*2 VHT*/ + else if((tx_rate >= MGN_VHT1SS_MCS0) && (tx_rate <= MGN_VHT1SS_MCS2)) /*QPSK/BPSK*/ + pwr_tracking_limit = 34; /*+5dB*/ + else if((tx_rate >= MGN_VHT1SS_MCS3) && (tx_rate <= MGN_VHT1SS_MCS4)) /*16QAM*/ + pwr_tracking_limit = 30; /*+3dB*/ + else if((tx_rate >= MGN_VHT1SS_MCS5)&&(tx_rate <= MGN_VHT1SS_MCS6)) /*64QAM*/ + pwr_tracking_limit = 28; /*+2dB*/ + else if(tx_rate == MGN_VHT1SS_MCS7) /*64QAM*/ + pwr_tracking_limit = 26; /*+1dB*/ + else if(tx_rate == MGN_VHT1SS_MCS8) /*256QAM*/ + pwr_tracking_limit = 24; /*+0dB*/ + else if(tx_rate == MGN_VHT1SS_MCS9) /*256QAM*/ + pwr_tracking_limit = 22; /*-1dB*/ + + else if((tx_rate >= MGN_VHT2SS_MCS0)&&(tx_rate <= MGN_VHT2SS_MCS2)) /*QPSK/BPSK*/ + pwr_tracking_limit = 34; /*+5dB*/ + else if((tx_rate >= MGN_VHT2SS_MCS3)&&(tx_rate <= MGN_VHT2SS_MCS4)) /*16QAM*/ + pwr_tracking_limit = 30; /*+3dB*/ + else if((tx_rate >= MGN_VHT2SS_MCS5)&&(tx_rate <= MGN_VHT2SS_MCS6)) /*64QAM*/ + pwr_tracking_limit = 28; /*+2dB*/ + else if(tx_rate == MGN_VHT2SS_MCS7) /*64QAM*/ + pwr_tracking_limit = 26; /*+1dB*/ + else if(tx_rate == MGN_VHT2SS_MCS8) /*256QAM*/ + pwr_tracking_limit = 24; /*+0dB*/ + else if(tx_rate == MGN_VHT2SS_MCS9) /*256QAM*/ + pwr_tracking_limit = 22; /*-1dB*/ + else + pwr_tracking_limit = 24; + } + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("TxRate=0x%x, PwrTrackingLimit=%d\n", tx_rate, pwr_tracking_limit)); + + + if (method == BBSWING) { + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("===>rtl8812ae_dm_txpwr_track_set_pwr\n")); + + if (rf_path == RF90_PATH_A) { + final_bb_swing_idx[RF90_PATH_A] = + (rtldm->ofdm_index[RF90_PATH_A] > pwr_tracking_limit) ? + pwr_tracking_limit : rtldm->ofdm_index[RF90_PATH_A]; + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("pDM_Odm->RFCalibrateInfo.OFDM_index[ODM_RF_PATH_A]=%d, \ + pDM_Odm->RealBbSwingIdx[ODM_RF_PATH_A]=%d\n", + rtldm->ofdm_index[RF90_PATH_A], final_bb_swing_idx[RF90_PATH_A])); + + rtl_set_bbreg(hw, RA_TXSCALE, 0xFFE00000, rtl8812ae_txscaling_table[final_bb_swing_idx[RF90_PATH_A]]); + } else { + final_bb_swing_idx[RF90_PATH_B] = + rtldm->ofdm_index[RF90_PATH_B] > pwr_tracking_limit ? \ + pwr_tracking_limit : rtldm->ofdm_index[RF90_PATH_B]; + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("pDM_Odm->RFCalibrateInfo.OFDM_index[ODM_RF_PATH_B]=%d, \ + pDM_Odm->RealBbSwingIdx[ODM_RF_PATH_B]=%d\n", + rtldm->ofdm_index[RF90_PATH_B], final_bb_swing_idx[RF90_PATH_B])); + + rtl_set_bbreg(hw, RB_TXSCALE, 0xFFE00000, rtl8812ae_txscaling_table[final_bb_swing_idx[RF90_PATH_B]]); + } + } else if (method == MIX_MODE) { + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("pDM_Odm->DefaultOfdmIndex=%d, \ + pDM_Odm->Aboslute_OFDMSwingIdx[RFPath]=%d, RF_Path = %d\n", + rtldm->default_ofdm_index, rtldm->aboslute_ofdm_swing_idx[rf_path], + rf_path )); + + + final_ofdm_swing_index = rtldm->default_ofdm_index + rtldm->aboslute_ofdm_swing_idx[rf_path]; + + if (rf_path == RF90_PATH_A) { + if(final_ofdm_swing_index > pwr_tracking_limit) { /*BBSwing higher then Limit*/ + + rtldm->remnant_cck_idx = final_ofdm_swing_index - pwr_tracking_limit; + /* CCK Follow the same compensate value as Path A*/ + rtldm->remnant_ofdm_swing_idx[rf_path] = final_ofdm_swing_index - pwr_tracking_limit; + + rtl_set_bbreg(hw, RA_TXSCALE, 0xFFE00000, rtl8812ae_txscaling_table[pwr_tracking_limit]); + + rtldm->modify_txagc_flag_path_a = true; + + /*Set TxAGC Page C{};*/ + rtl8821ae_phy_set_txpower_level_by_path(hw, rtlphy->current_channel, RF90_PATH_A); + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("******Path_A Over BBSwing Limit , PwrTrackingLimit = %d , Remnant TxAGC Value = %d \n", + pwr_tracking_limit, rtldm->remnant_ofdm_swing_idx[rf_path])); + } else if (final_ofdm_swing_index < 0) { + rtldm->remnant_cck_idx = final_ofdm_swing_index; + /* CCK Follow the same compensate value as Path A*/ + rtldm->remnant_ofdm_swing_idx[rf_path] = final_ofdm_swing_index; + + rtl_set_bbreg(hw, RA_TXSCALE, 0xFFE00000, rtl8812ae_txscaling_table[0]); + + rtldm->modify_txagc_flag_path_a = true; + + /*Set TxAGC Page C{};*/ + rtl8821ae_phy_set_txpower_level_by_path(hw, rtlphy->current_channel, RF90_PATH_A); + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("******Path_A Lower then BBSwing lower bound 0 , Remnant TxAGC Value = %d \n", + rtldm->remnant_ofdm_swing_idx[rf_path])); + } else { + rtl_set_bbreg(hw, RA_TXSCALE, 0xFFE00000, rtl8812ae_txscaling_table[final_ofdm_swing_index]); + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("******Path_A Compensate with BBSwing , Final_OFDM_Swing_Index = %d \n", + final_ofdm_swing_index)); + + if(rtldm->modify_txagc_flag_path_a) { /*If TxAGC has changed, reset TxAGC again*/ + rtldm->remnant_cck_idx = 0; + rtldm->remnant_ofdm_swing_idx[rf_path] = 0; + + /*Set TxAGC Page C{};*/ + rtl8821ae_phy_set_txpower_level_by_path(hw, rtlphy->current_channel, RF90_PATH_A); + + rtldm->modify_txagc_flag_path_a = false; + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("******Path_A pDM_Odm->Modify_TxAGC_Flag = FALSE \n")); + } + } + } + + if (rf_path == RF90_PATH_B) { + if(final_ofdm_swing_index > pwr_tracking_limit) { /*BBSwing higher then Limit*/ + rtldm->remnant_ofdm_swing_idx[rf_path] = final_ofdm_swing_index - pwr_tracking_limit; + + rtl_set_bbreg(hw, RB_TXSCALE, 0xFFE00000, rtl8812ae_txscaling_table[pwr_tracking_limit]); + + rtldm->modify_txagc_flag_path_b = true; + + /*Set TxAGC Page E{};*/ + rtl8821ae_phy_set_txpower_level_by_path(hw, rtlphy->current_channel, RF90_PATH_B); + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("******Path_B Over BBSwing Limit , PwrTrackingLimit = %d , Remnant TxAGC Value = %d \n", + pwr_tracking_limit, rtldm->remnant_ofdm_swing_idx[rf_path])); + } else if (final_ofdm_swing_index < 0) { + rtldm->remnant_ofdm_swing_idx[rf_path] = final_ofdm_swing_index; + + rtl_set_bbreg(hw, RB_TXSCALE, 0xFFE00000, rtl8812ae_txscaling_table[0]); + + rtldm->modify_txagc_flag_path_b = true; + + /*Set TxAGC Page E{};*/ + rtl8821ae_phy_set_txpower_level_by_path(hw, rtlphy->current_channel, RF90_PATH_B); + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("******Path_B Lower then BBSwing lower bound 0 , Remnant TxAGC Value = %d \n", + rtldm->remnant_ofdm_swing_idx[rf_path] )); + } else { + rtl_set_bbreg(hw, RB_TXSCALE, 0xFFE00000, rtl8812ae_txscaling_table[final_ofdm_swing_index]); + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("******Path_B Compensate with BBSwing , Final_OFDM_Swing_Index = %d \n", + final_ofdm_swing_index)); + + if(rtldm->modify_txagc_flag_path_b) { /*If TxAGC has changed, reset TxAGC again*/ + rtldm->remnant_ofdm_swing_idx[rf_path] = 0; + + /*Set TxAGC Page E{};*/ + rtl8821ae_phy_set_txpower_level_by_path(hw, rtlphy->current_channel, RF90_PATH_B); + + rtldm->modify_txagc_flag_path_b = false; + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("******Path_B pDM_Odm->Modify_TxAGC_Flag = FALSE \n")); + } + } + } + + } else { + return; + } +} + +void rtl8812ae_dm_txpower_tracking_callback_thermalmeter + (struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + struct rtl_dm *rtldm = rtl_dm(rtl_priv(hw)); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + + u8 thermal_value = 0, delta, delta_lck, delta_iqk, p = 0, i = 0; + u8 thermal_value_avg_count = 0; + u32 thermal_value_avg = 0; + + u8 ofdm_min_index = 6; /*OFDM BB Swing should be less than +3.0dB, which is required by Arthur*/ + u8 index_for_channel = 0; /* GetRightChnlPlaceforIQK(pHalData->CurrentChannel)*/ + + /* 1. The following TWO tables decide the final index of OFDM/CCK swing table.*/ + u8 *delta_swing_table_idx_tup_a; + u8 *delta_swing_table_idx_tdown_a; + u8 *delta_swing_table_idx_tup_b; + u8 *delta_swing_table_idx_tdown_b; + + /*2. Initilization ( 7 steps in total )*/ + rtl8812ae_get_delta_swing_table(hw, (u8**)&delta_swing_table_idx_tup_a, + (u8**)&delta_swing_table_idx_tdown_a, + (u8**)&delta_swing_table_idx_tup_b, + (u8**)&delta_swing_table_idx_tdown_b); + + rtldm->btxpower_trackinginit = true; + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("===>rtl8812ae_dm_txpower_tracking_callback_thermalmeter, \ + \n pDM_Odm->BbSwingIdxCckBase: %d, pDM_Odm->BbSwingIdxOfdmBase[A]:\ + %d, pDM_Odm->DefaultOfdmIndex: %d\n", + rtldm->bb_swing_idx_cck_base, + rtldm->bb_swing_idx_ofdm_base[RF90_PATH_A], + rtldm->default_ofdm_index)); + + thermal_value = (u8)rtl_get_rfreg(hw, RF90_PATH_A, RF_T_METER_8812A, 0xfc00); /*0x42: RF Reg[15:10] 88E*/ + if( ! rtldm->txpower_track_control || rtlefuse->eeprom_thermalmeter == 0 || + rtlefuse->eeprom_thermalmeter == 0xFF) + return; + + + /* 3. Initialize ThermalValues of RFCalibrateInfo*/ + + if(rtlhal->reloadtxpowerindex) + { + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("reload ofdm index for band switch\n")); + } + + /*4. Calculate average thermal meter*/ + rtldm->thermalvalue_avg[rtldm->thermalvalue_avg_index] = thermal_value; + rtldm->thermalvalue_avg_index++; + if(rtldm->thermalvalue_avg_index == AVG_THERMAL_NUM_8812A) + /*Average times = c.AverageThermalNum*/ + rtldm->thermalvalue_avg_index = 0; + + for(i = 0; i < AVG_THERMAL_NUM_8812A; i++) + { + if(rtldm->thermalvalue_avg[i]) + { + thermal_value_avg += rtldm->thermalvalue_avg[i]; + thermal_value_avg_count++; + } + } + + if(thermal_value_avg_count) /*Calculate Average ThermalValue after average enough times*/ + { + thermal_value = (u8)(thermal_value_avg / thermal_value_avg_count); + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("AVG Thermal Meter = 0x%X, EFUSE Thermal Base = 0x%X\n", + thermal_value, rtlefuse->eeprom_thermalmeter)); + } + + /*5. Calculate delta, delta_LCK, delta_IQK.*/ + /*"delta" here is used to determine whether thermal value changes or not.*/ + delta = (thermal_value > rtldm->thermalvalue) ? \ + (thermal_value - rtldm->thermalvalue): \ + (rtldm->thermalvalue - thermal_value); + delta_lck = (thermal_value > rtldm->thermalvalue_lck) ? \ + (thermal_value - rtldm->thermalvalue_lck) : \ + (rtldm->thermalvalue_lck - thermal_value); + delta_iqk = (thermal_value > rtldm->thermalvalue_iqk) ? \ + (thermal_value - rtldm->thermalvalue_iqk) : \ + (rtldm->thermalvalue_iqk - thermal_value); + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("(delta, delta_LCK, delta_IQK) = (%d, %d, %d)\n", + delta, delta_lck, delta_iqk)); + + /* 6. If necessary, do LCK. */ + + if (delta_lck >= IQK_THRESHOLD) /*Delta temperature is equal to or larger than 20 centigrade.*/ + { + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("delta_LCK(%d) >= Threshold_IQK(%d)\n", + delta_lck, IQK_THRESHOLD)); + rtldm->thermalvalue_lck = thermal_value; + rtl8812ae_phy_lccalibrate(hw); + } + + /*7. If necessary, move the index of swing table to adjust Tx power.*/ + + if (delta > 0 && rtldm->txpower_track_control) + { + /*"delta" here is used to record the absolute value of differrence.*/ + delta = thermal_value > rtlefuse->eeprom_thermalmeter ? \ + (thermal_value - rtlefuse->eeprom_thermalmeter) : \ + (rtlefuse->eeprom_thermalmeter - thermal_value); + + if (delta >= TXPWR_TRACK_TABLE_SIZE) + delta = TXPWR_TRACK_TABLE_SIZE - 1; + + /*7.1 The Final Power Index = BaseIndex + PowerIndexOffset*/ + + if(thermal_value > rtlefuse->eeprom_thermalmeter) { + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("delta_swing_table_idx_tup_a[%d] = %d\n", + delta, delta_swing_table_idx_tup_a[delta])); + rtldm->delta_power_index_last[RF90_PATH_A] = rtldm->delta_power_index[RF90_PATH_A]; + rtldm->delta_power_index[RF90_PATH_A] = delta_swing_table_idx_tup_a[delta]; + + rtldm->aboslute_ofdm_swing_idx[RF90_PATH_A] = delta_swing_table_idx_tup_a[delta]; + /*Record delta swing for mix mode power tracking*/ + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("******Temp is higher and pDM_Odm->Aboslute_OFDMSwingIdx[ODM_RF_PATH_A] = %d\n", + rtldm->aboslute_ofdm_swing_idx[RF90_PATH_A])); + + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("delta_swing_table_idx_tup_b[%d] = %d\n", + delta, delta_swing_table_idx_tup_b[delta])); + rtldm->delta_power_index_last[RF90_PATH_B] = rtldm->delta_power_index[RF90_PATH_B]; + rtldm->delta_power_index[RF90_PATH_B] = delta_swing_table_idx_tup_b[delta]; + + rtldm->aboslute_ofdm_swing_idx[RF90_PATH_B] = delta_swing_table_idx_tup_b[delta]; + /*Record delta swing for mix mode power tracking*/ + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("******Temp is higher and pDM_Odm->Aboslute_OFDMSwingIdx[ODM_RF_PATH_B] = %d\n", + rtldm->aboslute_ofdm_swing_idx[RF90_PATH_B])); + + } else { + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("delta_swing_table_idx_tdown_a[%d] = %d\n", + delta, delta_swing_table_idx_tdown_a[delta])); + + rtldm->delta_power_index_last[RF90_PATH_A] = rtldm->delta_power_index[RF90_PATH_A]; + rtldm->delta_power_index[RF90_PATH_A] = -1 * delta_swing_table_idx_tdown_a[delta]; + + rtldm->aboslute_ofdm_swing_idx[RF90_PATH_A] = -1 * delta_swing_table_idx_tdown_a[delta]; + /* Record delta swing for mix mode power tracking*/ + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("******Temp is lower and pDM_Odm->Aboslute_OFDMSwingIdx[ODM_RF_PATH_A] = %d\n", + rtldm->aboslute_ofdm_swing_idx[RF90_PATH_A])); + + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("deltaSwingTableIdx_TDOWN_B[%d] = %d\n", + delta, delta_swing_table_idx_tdown_b[delta])); + + rtldm->delta_power_index_last[RF90_PATH_B] = rtldm->delta_power_index[RF90_PATH_B]; + rtldm->delta_power_index[RF90_PATH_B] = -1 * delta_swing_table_idx_tdown_b[delta]; + + rtldm->aboslute_ofdm_swing_idx[RF90_PATH_B] = -1 * delta_swing_table_idx_tdown_b[delta]; + /*Record delta swing for mix mode power tracking*/ + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("******Temp is lower and pDM_Odm->Aboslute_OFDMSwingIdx[ODM_RF_PATH_B] = %d\n", + rtldm->aboslute_ofdm_swing_idx[RF90_PATH_B])); + } + + for (p = RF90_PATH_A; p < MAX_PATH_NUM_8812A; p++) + { + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("\n\n================================ [Path-%c] \ + Calculating PowerIndexOffset ================================\n", + (p == RF90_PATH_A ? 'A' : 'B'))); + + if (rtldm->delta_power_index[p] == rtldm->delta_power_index_last[p]) + /*If Thermal value changes but lookup table value still the same*/ + rtldm->power_index_offset[p] = 0; + else + rtldm->power_index_offset[p] = + rtldm->delta_power_index[p] - rtldm->delta_power_index_last[p]; + /*Power Index Diff between 2 times Power Tracking*/ + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("[Path-%c] PowerIndexOffset(%d) = DeltaPowerIndex(%d) - DeltaPowerIndexLast(%d)\n", + (p == RF90_PATH_A ? 'A' : 'B'), + rtldm->power_index_offset[p], + rtldm->delta_power_index[p] , + rtldm->delta_power_index_last[p])); + + rtldm->ofdm_index[p] = + rtldm->bb_swing_idx_ofdm_base[p] + rtldm->power_index_offset[p]; + rtldm->cck_index = + rtldm->bb_swing_idx_cck_base + rtldm->power_index_offset[p]; + + rtldm->bb_swing_idx_cck = rtldm->cck_index; + rtldm->bb_swing_idx_ofdm[p] = rtldm->ofdm_index[p]; + + /*************Print BB Swing Base and Index Offset*************/ + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("The 'CCK' final index(%d) = BaseIndex(%d) + PowerIndexOffset(%d)\n", + rtldm->bb_swing_idx_cck, + rtldm->bb_swing_idx_cck_base, + rtldm->power_index_offset[p])); + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("The 'OFDM' final index(%d) = BaseIndex[%c](%d) + PowerIndexOffset(%d)\n", + rtldm->bb_swing_idx_ofdm[p], + (p == RF90_PATH_A ? 'A' : 'B'), + rtldm->bb_swing_idx_ofdm_base[p], + rtldm->power_index_offset[p])); + + /*7.1 Handle boundary conditions of index.*/ + + + if(rtldm->ofdm_index[p] > TXSCALE_TABLE_SIZE -1) + { + rtldm->ofdm_index[p] = TXSCALE_TABLE_SIZE -1; + } + else if (rtldm->ofdm_index[p] < ofdm_min_index) + { + rtldm->ofdm_index[p] = ofdm_min_index; + } + } + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("\n\n======================================================\ + ==================================================\n")); + if(rtldm->cck_index > TXSCALE_TABLE_SIZE -1) + rtldm->cck_index = TXSCALE_TABLE_SIZE -1; + else if (rtldm->cck_index < 0) + rtldm->cck_index = 0; + } else { + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("The thermal meter is unchanged or TxPowerTracking OFF(%d): \ + ThermalValue: %d , pDM_Odm->RFCalibrateInfo.ThermalValue: %d\n", + rtldm->txpower_track_control, + thermal_value, + rtldm->thermalvalue)); + + for (p = RF90_PATH_A; p < MAX_PATH_NUM_8812A; p++) + rtldm->power_index_offset[p] = 0; + } + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("TxPowerTracking: [CCK] Swing Current Index: %d, Swing Base Index: %d\n", + rtldm->cck_index, rtldm->bb_swing_idx_cck_base)); /*Print Swing base & current*/ + for (p = RF90_PATH_A; p < MAX_PATH_NUM_8812A; p++) + { + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("TxPowerTracking: [OFDM] Swing Current Index: %d, Swing Base Index[%c]: %d\n", + rtldm->ofdm_index[p], + (p == RF90_PATH_A ? 'A' : 'B'), + rtldm->bb_swing_idx_ofdm_base[p])); + } + + if ((rtldm->power_index_offset[RF90_PATH_A] != 0 || + rtldm->power_index_offset[RF90_PATH_B] != 0 ) && + rtldm->txpower_track_control) + { + /*7.2 Configure the Swing Table to adjust Tx Power.*/ + /*Always TRUE after Tx Power is adjusted by power tracking.*/ + /* + 2012/04/23 MH According to Luke's suggestion, we can not write BB digital + to increase TX power. Otherwise, EVM will be bad. + + 2012/04/25 MH Add for tx power tracking to set tx power in tx agc for 88E. + */ + if (thermal_value > rtldm->thermalvalue) + { + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("Temperature Increasing(A): delta_pi: %d , delta_t: %d, Now_t: %d, EFUSE_t: %d, Last_t: %d\n", + rtldm->power_index_offset[RF90_PATH_A], + delta, thermal_value, + rtlefuse->eeprom_thermalmeter, + rtldm->thermalvalue)); + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("Temperature Increasing(B): delta_pi: %d , delta_t: %d, Now_t: %d, EFUSE_t: %d, Last_t: %d\n", + rtldm->power_index_offset[RF90_PATH_B], + delta, thermal_value, + rtlefuse->eeprom_thermalmeter, + rtldm->thermalvalue)); + + } else if (thermal_value < rtldm->thermalvalue) { /*Low temperature*/ + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("Temperature Decreasing(A): delta_pi: %d , delta_t: %d, Now_t: %d, EFUSE_t: %d, Last_t: %d\n", + rtldm->power_index_offset[RF90_PATH_A], + delta, thermal_value, + rtlefuse->eeprom_thermalmeter, + rtldm->thermalvalue)); + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("Temperature Decreasing(B): delta_pi: %d , delta_t: %d, Now_t: %d, EFUSE_t: %d, Last_t: %d\n", + rtldm->power_index_offset[RF90_PATH_B], + delta, thermal_value, + rtlefuse->eeprom_thermalmeter, + rtldm->thermalvalue)); + } + + if (thermal_value > rtlefuse->eeprom_thermalmeter) { + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("Temperature(%d) higher than PG value(%d)\n", + thermal_value, rtlefuse->eeprom_thermalmeter)); + + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("**********Enter POWER Tracking MIX_MODE**********\n")); + for (p = RF90_PATH_A; p < MAX_PATH_NUM_8812A; p++) + rtl8812ae_dm_txpwr_track_set_pwr(hw, MIX_MODE, p, 0); + + } else { + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("Temperature(%d) lower than PG value(%d)\n", + thermal_value, rtlefuse->eeprom_thermalmeter)); + + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("**********Enter POWER Tracking MIX_MODE**********\n")); + for (p = RF90_PATH_A; p < MAX_PATH_NUM_8812A; p++) + rtl8812ae_dm_txpwr_track_set_pwr(hw, MIX_MODE, p, index_for_channel); + + } + + rtldm->bb_swing_idx_cck_base = rtldm->bb_swing_idx_cck; /*Record last time Power Tracking result as base.*/ + for (p = RF90_PATH_A; p < MAX_PATH_NUM_8812A; p++) + rtldm->bb_swing_idx_ofdm_base[p] = rtldm->bb_swing_idx_ofdm[p]; + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("pDM_Odm->RFCalibrateInfo.ThermalValue = %d ThermalValue= %d\n", + rtldm->thermalvalue, thermal_value)); + + rtldm->thermalvalue = thermal_value; /*Record last Power Tracking Thermal Value*/ + + } + /*Delta temperature is equal to or larger than 20 centigrade (When threshold is 8).*/ + if ((delta_iqk >= IQK_THRESHOLD)) { + + if ( !rtlphy->b_iqk_in_progress) { + + spin_lock(&rtlpriv->locks.iqk_lock); + rtlphy->b_iqk_in_progress = true; + spin_unlock(&rtlpriv->locks.iqk_lock); + + rtl8812ae_do_iqk(hw, delta_iqk, thermal_value, 8); + + spin_lock(&rtlpriv->locks.iqk_lock); + rtlphy->b_iqk_in_progress = false; + spin_unlock(&rtlpriv->locks.iqk_lock); + } + } + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("<===rtl8812ae_dm_txpower_tracking_callback_thermalmeter\n")); +} + + +void rtl8821ae_get_delta_swing_table( + struct ieee80211_hw *hw, + u8 **temperature_up_a, + u8 **temperature_down_a, + u8 **temperature_up_b, + u8 **temperature_down_b + ) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct rtl_dm *rtldm = rtl_dm(rtl_priv(hw)); + u8 channel = rtlphy->current_channel; + u8 rate = rtldm->tx_rate; + + + if ( 1 <= channel && channel <= 14) { + if (RX_HAL_IS_CCK_RATE(rate)) { + *temperature_up_a = rtldm->delta_swing_table_idx_24gccka_p; + *temperature_down_a = rtldm->delta_swing_table_idx_24gccka_n; + *temperature_up_b = rtldm->delta_swing_table_idx_24gcckb_p; + *temperature_down_b = rtldm->delta_swing_table_idx_24gcckb_n; + } else { + *temperature_up_a = rtldm->delta_swing_table_idx_24ga_p; + *temperature_down_a = rtldm->delta_swing_table_idx_24ga_n; + *temperature_up_b = rtldm->delta_swing_table_idx_24gb_p; + *temperature_down_b = rtldm->delta_swing_table_idx_24gb_n; + } + } else if ( 36 <= channel && channel <= 64) { + *temperature_up_a = rtldm->delta_swing_table_idx_5ga_p[0]; + *temperature_down_a = rtldm->delta_swing_table_idx_5ga_n[0]; + *temperature_up_b = rtldm->delta_swing_table_idx_5gb_p[0]; + *temperature_down_b = rtldm->delta_swing_table_idx_5gb_n[0]; + } else if ( 100 <= channel && channel <= 140) { + *temperature_up_a = rtldm->delta_swing_table_idx_5ga_p[1]; + *temperature_down_a = rtldm->delta_swing_table_idx_5ga_n[1]; + *temperature_up_b = rtldm->delta_swing_table_idx_5gb_p[1]; + *temperature_down_b = rtldm->delta_swing_table_idx_5gb_n[1]; + } else if ( 149 <= channel && channel <= 173) { + *temperature_up_a = rtldm->delta_swing_table_idx_5ga_p[2]; + *temperature_down_a = rtldm->delta_swing_table_idx_5ga_n[2]; + *temperature_up_b = rtldm->delta_swing_table_idx_5gb_p[2]; + *temperature_down_b = rtldm->delta_swing_table_idx_5gb_n[2]; + } else { + *temperature_up_a = (u8*)rtl8818e_delta_swing_table_idx_24gb_p_txpwrtrack; + *temperature_down_a =(u8*)rtl8818e_delta_swing_table_idx_24gb_n_txpwrtrack; + *temperature_up_b = (u8*)rtl8818e_delta_swing_table_idx_24gb_p_txpwrtrack; + *temperature_down_b = (u8*)rtl8818e_delta_swing_table_idx_24gb_n_txpwrtrack; + } + + return; +} + +void rtl8821ae_phy_lccalibrate( + struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, ("===> rtl8812ae_phy_lccalibrate\n")); + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, ("<=== rtl8812ae_phy_lccalibrate\n")); + +} + +/*----------------------------------------------------------------------------- + * Function: odm_TxPwrTrackSetPwr88E() + * + * Overview: 88E change all channel tx power accordign to flag. + * OFDM & CCK are all different. + * + * Input: NONE + * + * Output: NONE + * + * Return: NONE + * + * Revised History: + * When Who Remark + * 04/23/2012 MHC Create Version 0. + * + *---------------------------------------------------------------------------*/ +void rtl8821ae_dm_txpwr_track_set_pwr(struct ieee80211_hw *hw, + enum pwr_track_control_method method, u8 rf_path, u8 channel_mapped_index) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_dm *rtldm = rtl_dm(rtl_priv(hw)); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + u32 final_bb_swing_idx[1]; + u8 pwr_tracking_limit = 26; /*+1.0dB*/ + u8 tx_rate = 0xFF; + s8 final_ofdm_swing_index = 0; + + if(rtldm->tx_rate != 0xFF) + tx_rate = rtl8812ae_hw_rate_to_mrate(hw, rtldm->tx_rate); + + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("===>rtl8812ae_dm_txpwr_track_set_pwr\n")); + + if(tx_rate != 0xFF) { /*20130429 Mimic Modify High Rate BBSwing Limit.*/ + /*CCK*/ + if((tx_rate >= MGN_1M) && (tx_rate <= MGN_11M)) + pwr_tracking_limit = 32; /*+4dB*/ + /*OFDM*/ + else if((tx_rate >= MGN_6M) && (tx_rate <= MGN_48M)) + pwr_tracking_limit = 30; /*+3dB*/ + else if(tx_rate == MGN_54M) + pwr_tracking_limit = 28; /*+2dB*/ + /*HT*/ + else if((tx_rate >= MGN_MCS0) && (tx_rate <= MGN_MCS2)) /*QPSK/BPSK*/ + pwr_tracking_limit = 34; /*+5dB*/ + else if((tx_rate >= MGN_MCS3) && (tx_rate <= MGN_MCS4)) /*16QAM*/ + pwr_tracking_limit = 30; /*+3dB*/ + else if((tx_rate >= MGN_MCS5) && (tx_rate <= MGN_MCS7)) /*64QAM*/ + pwr_tracking_limit = 28; /*+2dB*/ +#if 0 + else if((tx_rate >= MGN_MCS8) && (tx_rate <= MGN_MCS10)) /*QPSK/BPSK*/ + pwr_tracking_limit = 34; /*+5dB*/ + else if((tx_rate >= MGN_MCS11) && (tx_rate <= MGN_MCS12)) /*16QAM*/ + pwr_tracking_limit = 30; /*+3dB*/ + else if((tx_rate >= MGN_MCS13) && (tx_rate <= MGN_MCS15)) /*64QAM*/ + pwr_tracking_limit = 28; /*+2dB*/ +#endif + /*2 VHT*/ + else if((tx_rate >= MGN_VHT1SS_MCS0) && (tx_rate <= MGN_VHT1SS_MCS2)) /*QPSK/BPSK*/ + pwr_tracking_limit = 34; /*+5dB*/ + else if((tx_rate >= MGN_VHT1SS_MCS3) && (tx_rate <= MGN_VHT1SS_MCS4)) /*16QAM*/ + pwr_tracking_limit = 30; /*+3dB*/ + else if((tx_rate >= MGN_VHT1SS_MCS5)&&(tx_rate <= MGN_VHT1SS_MCS6)) /*64QAM*/ + pwr_tracking_limit = 28; /*+2dB*/ + else if(tx_rate == MGN_VHT1SS_MCS7) /*64QAM*/ + pwr_tracking_limit = 26; /*+1dB*/ + else if(tx_rate == MGN_VHT1SS_MCS8) /*256QAM*/ + pwr_tracking_limit = 24; /*+0dB*/ + else if(tx_rate == MGN_VHT1SS_MCS9) /*256QAM*/ + pwr_tracking_limit = 22; /*-1dB*/ + else + pwr_tracking_limit = 24; + } + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("TxRate=0x%x, PwrTrackingLimit=%d\n", tx_rate, pwr_tracking_limit)); + + + if (method == BBSWING) { + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("===>rtl8812ae_dm_txpwr_track_set_pwr\n")); + + if (rf_path == RF90_PATH_A) { + final_bb_swing_idx[RF90_PATH_A] = + (rtldm->ofdm_index[RF90_PATH_A] > pwr_tracking_limit) ? + pwr_tracking_limit : rtldm->ofdm_index[RF90_PATH_A]; + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("pDM_Odm->RFCalibrateInfo.OFDM_index[ODM_RF_PATH_A]=%d, \ + pDM_Odm->RealBbSwingIdx[ODM_RF_PATH_A]=%d\n", + rtldm->ofdm_index[RF90_PATH_A], final_bb_swing_idx[RF90_PATH_A])); + + rtl_set_bbreg(hw, RA_TXSCALE, 0xFFE00000, rtl8812ae_txscaling_table[final_bb_swing_idx[RF90_PATH_A]]); + } + } else if (method == MIX_MODE) { + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("pDM_Odm->DefaultOfdmIndex=%d, \ + pDM_Odm->Aboslute_OFDMSwingIdx[RFPath]=%d, RF_Path = %d\n", + rtldm->default_ofdm_index, rtldm->aboslute_ofdm_swing_idx[rf_path], + rf_path )); + + + final_ofdm_swing_index = rtldm->default_ofdm_index + rtldm->aboslute_ofdm_swing_idx[rf_path]; + + if (rf_path == RF90_PATH_A) { + if(final_ofdm_swing_index > pwr_tracking_limit) { /*BBSwing higher then Limit*/ + + rtldm->remnant_cck_idx = final_ofdm_swing_index - pwr_tracking_limit; + /* CCK Follow the same compensate value as Path A*/ + rtldm->remnant_ofdm_swing_idx[rf_path] = final_ofdm_swing_index - pwr_tracking_limit; + + rtl_set_bbreg(hw, RA_TXSCALE, 0xFFE00000, rtl8812ae_txscaling_table[pwr_tracking_limit]); + + rtldm->modify_txagc_flag_path_a = true; + + /*Set TxAGC Page C{};*/ + rtl8821ae_phy_set_txpower_level_by_path(hw, rtlphy->current_channel, RF90_PATH_A); + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("******Path_A Over BBSwing Limit , PwrTrackingLimit = %d , Remnant TxAGC Value = %d \n", + pwr_tracking_limit, rtldm->remnant_ofdm_swing_idx[rf_path])); + } else if (final_ofdm_swing_index < 0) { + rtldm->remnant_cck_idx = final_ofdm_swing_index; + /* CCK Follow the same compensate value as Path A*/ + rtldm->remnant_ofdm_swing_idx[rf_path] = final_ofdm_swing_index; + + rtl_set_bbreg(hw, RA_TXSCALE, 0xFFE00000, rtl8812ae_txscaling_table[0]); + + rtldm->modify_txagc_flag_path_a = true; + + /*Set TxAGC Page C{};*/ + rtl8821ae_phy_set_txpower_level_by_path(hw, rtlphy->current_channel, RF90_PATH_A); + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("******Path_A Lower then BBSwing lower bound 0 , Remnant TxAGC Value = %d \n", + rtldm->remnant_ofdm_swing_idx[rf_path])); + } else { + rtl_set_bbreg(hw, RA_TXSCALE, 0xFFE00000, rtl8812ae_txscaling_table[final_ofdm_swing_index]); + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("******Path_A Compensate with BBSwing , Final_OFDM_Swing_Index = %d \n", + final_ofdm_swing_index)); + + if(rtldm->modify_txagc_flag_path_a) { /*If TxAGC has changed, reset TxAGC again*/ + rtldm->remnant_cck_idx = 0; + rtldm->remnant_ofdm_swing_idx[rf_path] = 0; + + /*Set TxAGC Page C{};*/ + rtl8821ae_phy_set_txpower_level_by_path(hw, rtlphy->current_channel, RF90_PATH_A); + + rtldm->modify_txagc_flag_path_a = false; + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("******Path_A pDM_Odm->Modify_TxAGC_Flag = FALSE \n")); + } + } + } + + } else { + return; + } +} + + +void rtl8821ae_dm_txpower_tracking_callback_thermalmeter + (struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + struct rtl_dm *rtldm = rtl_dm(rtl_priv(hw)); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + + u8 thermal_value = 0, delta, delta_lck, delta_iqk, p = 0, i = 0; + u8 thermal_value_avg_count = 0; + u32 thermal_value_avg = 0; + + u8 ofdm_min_index = 6; /*OFDM BB Swing should be less than +3.0dB, which is required by Arthur*/ + u8 index_for_channel = 0; /* GetRightChnlPlaceforIQK(pHalData->CurrentChannel)*/ + + /* 1. The following TWO tables decide the final index of OFDM/CCK swing table.*/ + u8 *delta_swing_table_idx_tup_a; + u8 *delta_swing_table_idx_tdown_a; + u8 *delta_swing_table_idx_tup_b; + u8 *delta_swing_table_idx_tdown_b; + + /*2. Initilization ( 7 steps in total )*/ + rtl8821ae_get_delta_swing_table(hw, (u8**)&delta_swing_table_idx_tup_a, + (u8**)&delta_swing_table_idx_tdown_a, + (u8**)&delta_swing_table_idx_tup_b, + (u8**)&delta_swing_table_idx_tdown_b); + + rtldm->btxpower_trackinginit = true; + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("===>rtl8812ae_dm_txpower_tracking_callback_thermalmeter, \ + \n pDM_Odm->BbSwingIdxCckBase: %d, pDM_Odm->BbSwingIdxOfdmBase[A]:\ + %d, pDM_Odm->DefaultOfdmIndex: %d\n", + rtldm->bb_swing_idx_cck_base, + rtldm->bb_swing_idx_ofdm_base[RF90_PATH_A], + rtldm->default_ofdm_index)); + + thermal_value = (u8)rtl_get_rfreg(hw, RF90_PATH_A, RF_T_METER_8812A, 0xfc00); /*0x42: RF Reg[15:10] 88E*/ + if( ! rtldm->txpower_track_control || rtlefuse->eeprom_thermalmeter == 0 || + rtlefuse->eeprom_thermalmeter == 0xFF) + return; + + + /* 3. Initialize ThermalValues of RFCalibrateInfo*/ + + if(rtlhal->reloadtxpowerindex) + { + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("reload ofdm index for band switch\n")); + } + + /*4. Calculate average thermal meter*/ + rtldm->thermalvalue_avg[rtldm->thermalvalue_avg_index] = thermal_value; + rtldm->thermalvalue_avg_index++; + if(rtldm->thermalvalue_avg_index == AVG_THERMAL_NUM_8812A) + /*Average times = c.AverageThermalNum*/ + rtldm->thermalvalue_avg_index = 0; + + for(i = 0; i < AVG_THERMAL_NUM_8812A; i++) + { + if(rtldm->thermalvalue_avg[i]) + { + thermal_value_avg += rtldm->thermalvalue_avg[i]; + thermal_value_avg_count++; + } + } + + if(thermal_value_avg_count) /*Calculate Average ThermalValue after average enough times*/ + { + thermal_value = (u8)(thermal_value_avg / thermal_value_avg_count); + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("AVG Thermal Meter = 0x%X, EFUSE Thermal Base = 0x%X\n", + thermal_value, rtlefuse->eeprom_thermalmeter)); + } + + /*5. Calculate delta, delta_LCK, delta_IQK.*/ + /*"delta" here is used to determine whether thermal value changes or not.*/ + delta = (thermal_value > rtldm->thermalvalue) ? \ + (thermal_value - rtldm->thermalvalue): \ + (rtldm->thermalvalue - thermal_value); + delta_lck = (thermal_value > rtldm->thermalvalue_lck) ? \ + (thermal_value - rtldm->thermalvalue_lck) : \ + (rtldm->thermalvalue_lck - thermal_value); + delta_iqk = (thermal_value > rtldm->thermalvalue_iqk) ? \ + (thermal_value - rtldm->thermalvalue_iqk) : \ + (rtldm->thermalvalue_iqk - thermal_value); + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("(delta, delta_LCK, delta_IQK) = (%d, %d, %d)\n", + delta, delta_lck, delta_iqk)); + + /* 6. If necessary, do LCK. */ + + if (delta_lck >= IQK_THRESHOLD) /*Delta temperature is equal to or larger than 20 centigrade.*/ + { + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("delta_LCK(%d) >= Threshold_IQK(%d)\n", + delta_lck, IQK_THRESHOLD)); + rtldm->thermalvalue_lck = thermal_value; + rtl8821ae_phy_lccalibrate(hw); + } + + /*7. If necessary, move the index of swing table to adjust Tx power.*/ + + if (delta > 0 && rtldm->txpower_track_control) + { + /*"delta" here is used to record the absolute value of differrence.*/ + delta = thermal_value > rtlefuse->eeprom_thermalmeter ? \ + (thermal_value - rtlefuse->eeprom_thermalmeter) : \ + (rtlefuse->eeprom_thermalmeter - thermal_value); + + if (delta >= TXSCALE_TABLE_SIZE) + delta = TXSCALE_TABLE_SIZE - 1; + + /*7.1 The Final Power Index = BaseIndex + PowerIndexOffset*/ + + if(thermal_value > rtlefuse->eeprom_thermalmeter) { + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("delta_swing_table_idx_tup_a[%d] = %d\n", + delta, delta_swing_table_idx_tup_a[delta])); + rtldm->delta_power_index_last[RF90_PATH_A] = rtldm->delta_power_index[RF90_PATH_A]; + rtldm->delta_power_index[RF90_PATH_A] = delta_swing_table_idx_tup_a[delta]; + + rtldm->aboslute_ofdm_swing_idx[RF90_PATH_A] = delta_swing_table_idx_tup_a[delta]; + /*Record delta swing for mix mode power tracking*/ + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("******Temp is higher and pDM_Odm->Aboslute_OFDMSwingIdx[ODM_RF_PATH_A] = %d\n", + rtldm->aboslute_ofdm_swing_idx[RF90_PATH_A])); + + } else { + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("delta_swing_table_idx_tdown_a[%d] = %d\n", + delta, delta_swing_table_idx_tdown_a[delta])); + + rtldm->delta_power_index_last[RF90_PATH_A] = rtldm->delta_power_index[RF90_PATH_A]; + rtldm->delta_power_index[RF90_PATH_A] = -1 * delta_swing_table_idx_tdown_a[delta]; + + rtldm->aboslute_ofdm_swing_idx[RF90_PATH_A] = -1 * delta_swing_table_idx_tdown_a[delta]; + /* Record delta swing for mix mode power tracking*/ + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("******Temp is lower and pDM_Odm->Aboslute_OFDMSwingIdx[ODM_RF_PATH_A] = %d\n", + rtldm->aboslute_ofdm_swing_idx[RF90_PATH_A])); + } + + for (p = RF90_PATH_A; p < MAX_PATH_NUM_8821A; p++) + { + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("\n\n================================ [Path-%c] \ + Calculating PowerIndexOffset ================================\n", + (p == RF90_PATH_A ? 'A' : 'B'))); + + if (rtldm->delta_power_index[p] == rtldm->delta_power_index_last[p]) + /*If Thermal value changes but lookup table value still the same*/ + rtldm->power_index_offset[p] = 0; + else + rtldm->power_index_offset[p] = + rtldm->delta_power_index[p] - rtldm->delta_power_index_last[p]; + /*Power Index Diff between 2 times Power Tracking*/ + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("[Path-%c] PowerIndexOffset(%d) = DeltaPowerIndex(%d) - DeltaPowerIndexLast(%d)\n", + (p == RF90_PATH_A ? 'A' : 'B'), + rtldm->power_index_offset[p], + rtldm->delta_power_index[p] , + rtldm->delta_power_index_last[p])); + + rtldm->ofdm_index[p] = + rtldm->bb_swing_idx_ofdm_base[p] + rtldm->power_index_offset[p]; + rtldm->cck_index = + rtldm->bb_swing_idx_cck_base + rtldm->power_index_offset[p]; + + rtldm->bb_swing_idx_cck = rtldm->cck_index; + rtldm->bb_swing_idx_ofdm[p] = rtldm->ofdm_index[p]; + + /*************Print BB Swing Base and Index Offset*************/ + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("The 'CCK' final index(%d) = BaseIndex(%d) + PowerIndexOffset(%d)\n", + rtldm->bb_swing_idx_cck, + rtldm->bb_swing_idx_cck_base, + rtldm->power_index_offset[p])); + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("The 'OFDM' final index(%d) = BaseIndex[%c](%d) + PowerIndexOffset(%d)\n", + rtldm->bb_swing_idx_ofdm[p], + (p == RF90_PATH_A ? 'A' : 'B'), + rtldm->bb_swing_idx_ofdm_base[p], + rtldm->power_index_offset[p])); + + /*7.1 Handle boundary conditions of index.*/ + + + if(rtldm->ofdm_index[p] > TXSCALE_TABLE_SIZE -1) + { + rtldm->ofdm_index[p] = TXSCALE_TABLE_SIZE -1; + } + else if (rtldm->ofdm_index[p] < ofdm_min_index) + { + rtldm->ofdm_index[p] = ofdm_min_index; + } + } + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("\n\n======================================================\ + ==================================================\n")); + if(rtldm->cck_index > TXSCALE_TABLE_SIZE -1) + rtldm->cck_index = TXSCALE_TABLE_SIZE -1; + else if (rtldm->cck_index < 0) + rtldm->cck_index = 0; + } else { + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("The thermal meter is unchanged or TxPowerTracking OFF(%d): \ + ThermalValue: %d , pDM_Odm->RFCalibrateInfo.ThermalValue: %d\n", + rtldm->txpower_track_control, + thermal_value, + rtldm->thermalvalue)); + + for (p = RF90_PATH_A; p < MAX_PATH_NUM_8821A; p++) + rtldm->power_index_offset[p] = 0; + } + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("TxPowerTracking: [CCK] Swing Current Index: %d, Swing Base Index: %d\n", + rtldm->cck_index, rtldm->bb_swing_idx_cck_base)); /*Print Swing base & current*/ + for (p = RF90_PATH_A; p < MAX_PATH_NUM_8821A; p++) + { + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("TxPowerTracking: [OFDM] Swing Current Index: %d, Swing Base Index[%c]: %d\n", + rtldm->ofdm_index[p], + (p == RF90_PATH_A ? 'A' : 'B'), + rtldm->bb_swing_idx_ofdm_base[p])); + } + + if ((rtldm->power_index_offset[RF90_PATH_A] != 0 || + rtldm->power_index_offset[RF90_PATH_B] != 0 ) && + rtldm->txpower_track_control) + { + /*7.2 Configure the Swing Table to adjust Tx Power.*/ + /*Always TRUE after Tx Power is adjusted by power tracking.*/ + /* + 2012/04/23 MH According to Luke's suggestion, we can not write BB digital + to increase TX power. Otherwise, EVM will be bad. + + 2012/04/25 MH Add for tx power tracking to set tx power in tx agc for 88E. + */ + if (thermal_value > rtldm->thermalvalue) + { + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("Temperature Increasing(A): delta_pi: %d , delta_t: %d, Now_t: %d, EFUSE_t: %d, Last_t: %d\n", + rtldm->power_index_offset[RF90_PATH_A], + delta, thermal_value, + rtlefuse->eeprom_thermalmeter, + rtldm->thermalvalue)); + } else if (thermal_value < rtldm->thermalvalue) { /*Low temperature*/ + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("Temperature Decreasing(A): delta_pi: %d , delta_t: %d, Now_t: %d, EFUSE_t: %d, Last_t: %d\n", + rtldm->power_index_offset[RF90_PATH_A], + delta, thermal_value, + rtlefuse->eeprom_thermalmeter, + rtldm->thermalvalue)); + } + + if (thermal_value > rtlefuse->eeprom_thermalmeter) { + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("Temperature(%d) higher than PG value(%d)\n", + thermal_value, rtlefuse->eeprom_thermalmeter)); + + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("**********Enter POWER Tracking MIX_MODE**********\n")); + for (p = RF90_PATH_A; p < MAX_PATH_NUM_8821A; p++) + rtl8821ae_dm_txpwr_track_set_pwr(hw, MIX_MODE, p, index_for_channel); + + } else { + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("Temperature(%d) lower than PG value(%d)\n", + thermal_value, rtlefuse->eeprom_thermalmeter)); + + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("**********Enter POWER Tracking MIX_MODE**********\n")); + for (p = RF90_PATH_A; p < MAX_PATH_NUM_8821A; p++) + rtl8812ae_dm_txpwr_track_set_pwr(hw, MIX_MODE, p, index_for_channel); + + } + + rtldm->bb_swing_idx_cck_base = rtldm->bb_swing_idx_cck; /*Record last time Power Tracking result as base.*/ + for (p = RF90_PATH_A; p < MAX_PATH_NUM_8821A; p++) + rtldm->bb_swing_idx_ofdm_base[p] = rtldm->bb_swing_idx_ofdm[p]; + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("pDM_Odm->RFCalibrateInfo.ThermalValue = %d ThermalValue= %d\n", + rtldm->thermalvalue, thermal_value)); + + rtldm->thermalvalue = thermal_value; /*Record last Power Tracking Thermal Value*/ + + } + /*Delta temperature is equal to or larger than 20 centigrade (When threshold is 8).*/ + if ((delta_iqk >= IQK_THRESHOLD)) { + + if ( !rtlphy->b_iqk_in_progress) { + + spin_lock(&rtlpriv->locks.iqk_lock); + rtlphy->b_iqk_in_progress = true; + spin_unlock(&rtlpriv->locks.iqk_lock); + + rtl8821ae_do_iqk(hw, delta_iqk, thermal_value, 8); + + spin_lock(&rtlpriv->locks.iqk_lock); + rtlphy->b_iqk_in_progress = false; + spin_unlock(&rtlpriv->locks.iqk_lock); + } + } + + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("<===rtl8812ae_dm_txpower_tracking_callback_thermalmeter\n")); +} + + +void rtl8821ae_dm_check_txpower_tracking_thermalmeter(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + static u8 tm_trigger = 0; + + //if (!rtlpriv->dm.btxpower_tracking) + // return; + + if (!tm_trigger) { + rtl_set_rfreg(hw, RF90_PATH_A, RF_T_METER_88E, BIT(17)|BIT(16), + 0x03); + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("Trigger 8821ae Thermal Meter!!\n")); + tm_trigger = 1; + return; + } else { + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, + ("Schedule TxPowerTracking !!\n")); + + rtl8821ae_dm_txpower_tracking_callback_thermalmeter(hw); + tm_trigger = 0; + } +} + + +void rtl8821ae_dm_refresh_rate_adaptive_mask(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct rate_adaptive *p_ra = &(rtlpriv->ra); + u32 low_rssithresh_for_ra = p_ra->low2high_rssi_thresh_for_ra; + u32 high_rssithresh_for_ra = p_ra->high_rssi_thresh_for_ra; + u8 go_up_gap = 5; + struct ieee80211_sta *sta = NULL; + + if (is_hal_stop(rtlhal)) { + RT_TRACE(COMP_RATE, DBG_LOUD, + ("driver is going to unload\n")); + return; + } + + if (!rtlpriv->dm.b_useramask) { + RT_TRACE(COMP_RATE, DBG_LOUD, + ("driver does not control rate adaptive mask\n")); + return; + } + + if (mac->link_state == MAC80211_LINKED && + mac->opmode == NL80211_IFTYPE_STATION) { + + switch (p_ra->pre_ratr_state) { + case DM_RATR_STA_MIDDLE: + high_rssithresh_for_ra += go_up_gap; + break; + case DM_RATR_STA_LOW: + high_rssithresh_for_ra += go_up_gap; + low_rssithresh_for_ra += go_up_gap; + break; + default: + break; + } + + if (rtlpriv->dm.undecorated_smoothed_pwdb > + (long)high_rssithresh_for_ra) + p_ra->ratr_state = DM_RATR_STA_HIGH; + else if (rtlpriv->dm.undecorated_smoothed_pwdb > + (long)low_rssithresh_for_ra) + p_ra->ratr_state = DM_RATR_STA_MIDDLE; + else + p_ra->ratr_state = DM_RATR_STA_LOW; + + if (p_ra->pre_ratr_state != p_ra->ratr_state ) { + RT_TRACE(COMP_RATE, DBG_LOUD, + ("RSSI = %ld\n", + rtlpriv->dm.undecorated_smoothed_pwdb)); + RT_TRACE(COMP_RATE, DBG_LOUD, + ("RSSI_LEVEL = %d\n", p_ra->ratr_state)); + RT_TRACE(COMP_RATE, DBG_LOUD, + ("PreState = %d, CurState = %d\n", + p_ra->pre_ratr_state, p_ra->ratr_state)); + + rcu_read_lock(); + sta = rtl_find_sta(hw, mac->bssid); + if (sta) + rtlpriv->cfg->ops->update_rate_tbl(hw, sta, p_ra->ratr_state); + rcu_read_unlock(); + + p_ra->pre_ratr_state = p_ra->ratr_state; + } + } +} + +bool rtl8821ae_dm_is_edca_turbo_disable(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + if (rtlpriv->btcoexist.btc_ops->btc_is_disable_edca_turbo(rtlpriv)) + return true; + if (rtlpriv->mac80211.mode == WIRELESS_MODE_B) + return true; + + return false; +} + +void rtl8821ae_dm_edca_choose_traffic_idx( + struct ieee80211_hw *hw, u64 cur_tx_bytes, u64 cur_rx_bytes, bool b_bias_on_rx, + bool *pb_is_cur_rdl_state) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + if(b_bias_on_rx) + { + if (cur_tx_bytes > (cur_rx_bytes*4)) { + *pb_is_cur_rdl_state = false; + RT_TRACE(COMP_TURBO, DBG_LOUD, + ("Uplink Traffic\n ")); + } else { + *pb_is_cur_rdl_state = true; + RT_TRACE(COMP_TURBO, DBG_LOUD, + ("Balance Traffic\n")); + } + } else { + if (cur_rx_bytes > (cur_tx_bytes*4)) { + *pb_is_cur_rdl_state = true; + RT_TRACE(COMP_TURBO, DBG_LOUD, + ("Downlink Traffic\n")); + } else { + *pb_is_cur_rdl_state = false; + RT_TRACE(COMP_TURBO, DBG_LOUD, + ("Balance Traffic\n")); + } + } + return ; +} + +static void rtl8821ae_dm_check_edca_turbo(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct rtl_dm *rtldm = rtl_dm(rtl_priv(hw)); + + /*Keep past Tx/Rx packet count for RT-to-RT EDCA turbo.*/ + unsigned long cur_tx_ok_cnt = 0; + unsigned long cur_rx_ok_cnt = 0; + u32 edca_be_ul = 0x5ea42b; + u32 edca_be_dl = 0x5ea42b; + u32 edca_be = 0x5ea42b; + u8 iot_peer = 0; + bool *pb_is_cur_rdl_state = NULL; + bool b_last_is_cur_rdl_state = false; + bool b_bias_on_rx = false; + bool b_edca_turbo_on = false; + + RT_TRACE(COMP_TURBO, DBG_LOUD, + ("rtl8821ae_dm_check_edca_turbo=====>")); + RT_TRACE(COMP_TURBO, DBG_LOUD, + ("Orginial BE PARAM: 0x%x\n", + rtl_read_dword(rtlpriv, DM_REG_EDCA_BE_11N))); + + /*=============================== + list paramter for different platform + ===============================*/ + b_last_is_cur_rdl_state = rtlpriv->dm.bis_cur_rdlstate; + pb_is_cur_rdl_state = &( rtlpriv->dm.bis_cur_rdlstate); + + cur_tx_ok_cnt = rtlpriv->stats.txbytesunicast - rtldm->last_tx_ok_cnt; + cur_rx_ok_cnt = rtlpriv->stats.rxbytesunicast - rtldm->last_rx_ok_cnt; + + rtldm->last_tx_ok_cnt = rtlpriv->stats.txbytesunicast; + rtldm->last_rx_ok_cnt = rtlpriv->stats.rxbytesunicast; + + iot_peer = rtlpriv->mac80211.vendor; + b_bias_on_rx = (iot_peer == PEER_RAL || iot_peer == PEER_ATH) ? + true : false; + b_edca_turbo_on = ((!rtlpriv->dm.bis_any_nonbepkts) && + (!rtlpriv->dm.b_disable_framebursting)) ? + true : false; + + /*if (rtl8821ae_dm_is_edca_turbo_disable(hw)) + goto dm_CheckEdcaTurbo_EXIT;*/ + + if ((iot_peer == PEER_CISCO) && (mac->mode == WIRELESS_MODE_N_24G)) + { + edca_be_dl = edca_setting_dl[iot_peer]; + edca_be_ul = edca_setting_ul[iot_peer]; + } + + RT_TRACE(COMP_TURBO, DBG_LOUD, + ("bIsAnyNonBEPkts : 0x%x bDisableFrameBursting : 0x%x \n", + rtlpriv->dm.bis_any_nonbepkts, rtlpriv->dm.b_disable_framebursting)); + + RT_TRACE(COMP_TURBO, DBG_LOUD, + ("bEdcaTurboOn : 0x%x bBiasOnRx : 0x%x\n", + b_edca_turbo_on, b_bias_on_rx)); + + if (b_edca_turbo_on) { + RT_TRACE(COMP_TURBO, DBG_LOUD, + ("curTxOkCnt : 0x%lx \n",cur_tx_ok_cnt)); + RT_TRACE(COMP_TURBO, DBG_LOUD, + ("curRxOkCnt : 0x%lx \n",cur_rx_ok_cnt)); + if(b_bias_on_rx) + rtl8821ae_dm_edca_choose_traffic_idx(hw, cur_tx_ok_cnt, + cur_rx_ok_cnt, true, pb_is_cur_rdl_state); + else + rtl8821ae_dm_edca_choose_traffic_idx(hw, cur_tx_ok_cnt, + cur_rx_ok_cnt, false, pb_is_cur_rdl_state); + + edca_be = ((*pb_is_cur_rdl_state) == true) ? edca_be_dl : edca_be_ul; + + rtl_write_dword(rtlpriv, DM_REG_EDCA_BE_11N, edca_be); + + RT_TRACE(COMP_TURBO, DBG_LOUD, + ("EDCA Turbo on: EDCA_BE:0x%x\n", edca_be)); + + rtlpriv->dm.bcurrent_turbo_edca = true; + + RT_TRACE(COMP_TURBO, DBG_LOUD, + ("EDCA_BE_DL : 0x%x EDCA_BE_UL : 0x%x EDCA_BE : 0x%x \n", + edca_be_dl, edca_be_ul, edca_be)); + } else { + if (rtlpriv->dm.bcurrent_turbo_edca) { + u8 tmp = AC0_BE; + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_AC_PARAM, + (u8 *) (&tmp)); + } + rtlpriv->dm.bcurrent_turbo_edca = false; + } + +/* dm_CheckEdcaTurbo_EXIT: */ + rtlpriv->dm.bis_any_nonbepkts = false; + rtldm->last_tx_ok_cnt = rtlpriv->stats.txbytesunicast; + rtldm->last_rx_ok_cnt = rtlpriv->stats.rxbytesunicast; +} + +static void rtl8821ae_dm_cck_packet_detection_thresh(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 cur_cck_cca_thresh; + + if (rtlpriv->mac80211.link_state >= MAC80211_LINKED) { + /*dm_digtable.rssi_val_min = rtl8821ae_dm_initial_gain_min_pwdb(hw);*/ + if (dm_digtable.rssi_val_min > 25) + cur_cck_cca_thresh = 0xcd; + else if ((dm_digtable.rssi_val_min <= 25) && (dm_digtable.rssi_val_min > 10)) + cur_cck_cca_thresh = 0x83; + else { + if (rtlpriv->falsealm_cnt.cnt_cck_fail > 1000) + cur_cck_cca_thresh = 0x83; + else + cur_cck_cca_thresh = 0x40; + } + + } else { + if (rtlpriv->falsealm_cnt.cnt_cck_fail > 1000) + cur_cck_cca_thresh = 0x83; + else + cur_cck_cca_thresh = 0x40; + } + + if (dm_digtable.cur_cck_cca_thres != cur_cck_cca_thresh) { + rtl_set_bbreg(hw, RCCK0_CCA, MASKBYTE2, cur_cck_cca_thresh); + } + + dm_digtable.pre_cck_cca_thres = dm_digtable.cur_cck_cca_thres; + dm_digtable.cur_cck_cca_thres = cur_cck_cca_thresh; + RT_TRACE(COMP_DIG, DBG_TRACE, + ("CCK cca thresh hold =%x\n", dm_digtable.cur_cck_cca_thres)); + +} + +void rtl8821ae_dm_dynamic_edcca(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + bool b_fw_current_in_ps_mode = false; + + rtlpriv->cfg->ops->get_hw_reg(hw,HW_VAR_FW_PSMODE_STATUS, \ + (u8*)(&b_fw_current_in_ps_mode)); + if (b_fw_current_in_ps_mode) + return; +} + +void rtl8812ae_dm_update_txpath(struct ieee80211_hw *hw, u8 path) +{ + struct rtl_dm *rtldm = rtl_dm(rtl_priv(hw)); + struct rtl_priv *rtlpriv = rtl_priv(hw); + + if (rtldm->resp_tx_path != path) { + RT_TRACE(COMP_DIG, DBG_LOUD, \ + ("Need to Update Tx Path\n")); + if (path == RF90_PATH_A) { + /*Tx by Reg*/ + rtl_set_bbreg(hw, 0x80c, 0xFFF0, 0x111); + /*Resp Tx by Txinfo*/ + rtl_set_bbreg(hw, 0x6d8, BIT(7) | BIT(6), 1); + } else { + /*Tx by Reg*/ + rtl_set_bbreg(hw, 0x80c, 0xFFF0, 0x222); + /*Resp Tx by Txinfo*/ + rtl_set_bbreg(hw, 0x6d8, BIT(7) |BIT(6), 2); + } + } + rtldm->resp_tx_path = path; + RT_TRACE(COMP_DIG, DBG_LOUD, \ + ("Path=%s\n",(path == RF90_PATH_A) ? \ + "RF90_PATH_A":"RF90_PATH_A")); +} + +void rtl8812ae_dm_path_diversity_init(struct ieee80211_hw *hw) +{ + struct rtl_dm *rtldm = rtl_dm(rtl_priv(hw)); + + //rtl_set_bbreg(hw, 0x80c , BIT(29), 1); /*Tx path from Reg*/ + rtl_set_bbreg(hw, 0x80c , 0xFFF0, 0x111); /*Tx by Reg*/ + rtl_set_bbreg(hw, 0x6d8 , BIT(7) | BIT(6), 1); /*Resp Tx by Txinfo*/ + rtl8812ae_dm_update_txpath(hw, RF90_PATH_A); + + rtldm->path_sel = 1; /* TxInfo default at path-A*/ +} + +void rtl812ae_dm_set_txpath_by_txinfo(struct ieee80211_hw *hw, + u8 *pdesc) +{ + struct rtl_dm *rtldm = rtl_dm(rtl_priv(hw)); + + SET_TX_DESC_TX_ANT(pdesc, rtldm->path_sel); +} + +void rtl8812ae_dm_path_statistics(struct ieee80211_hw *hw, + u32 rssi_a, u32 rssi_b) +{ + struct rtl_dm *rtldm = rtl_dm(rtl_priv(hw)); + + rtldm->patha_sum += rssi_a; + rtldm->patha_cnt ++; + + rtldm->pathb_sum += rssi_b; + rtldm->pathb_cnt ++; +} + +void rtl8812ae_dm_path_diversity(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_dm *rtldm = rtl_dm(rtl_priv(hw)); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + u32 rssi_avg_a = 0; + u32 rssi_avg_b = 0; + u32 local_min_rssi = 0; + u32 min_rssi = 0xFF; + u8 tx_resp_path=0, target_path; + struct ieee80211_sta *sta = NULL; + + sta = rtl_find_sta(hw, mac->bssid); + if (sta) { + /*Caculate RSSI per Path*/ + rssi_avg_a = (rtldm->patha_cnt != 0) ? \ + (rtldm->patha_sum / rtldm->patha_cnt) : 0; + rssi_avg_b = (rtldm->pathb_cnt != 0) ? \ + (rtldm->pathb_sum / rtldm->pathb_cnt) : 0; + + target_path = (rssi_avg_a == rssi_avg_b) ? rtldm->resp_tx_path : \ + ((rssi_avg_a>=rssi_avg_b) ? RF90_PATH_A : RF90_PATH_B); + + RT_TRACE(COMP_DIG, DBG_TRACE, \ + ("assoc_id=%d, PathA_Sum=%d, PathA_Cnt=%d\n", \ + mac->assoc_id, rtldm->patha_sum, rtldm->patha_cnt)); + RT_TRACE(COMP_DIG, DBG_TRACE, \ + ("assoc_id=%d, PathB_Sum=%d, PathB_Cnt=%d\n", \ + mac->assoc_id, rtldm->pathb_sum, rtldm->pathb_cnt)); + RT_TRACE(COMP_DIG, DBG_TRACE, \ + ("assoc_id=%d, RssiAvgA= %d, RssiAvgB= %d\n", \ + mac->assoc_id, rssi_avg_a, rssi_avg_b)); + + /*Select Resp Tx Path*/ + local_min_rssi = (rssi_avg_a > rssi_avg_b) ? rssi_avg_b : rssi_avg_a; + if(local_min_rssi < min_rssi) + { + min_rssi = local_min_rssi; + tx_resp_path = target_path; + } + + /*Select Tx DESC*/ + if(target_path == RF90_PATH_A) + rtldm->path_sel = 1; + else + rtldm->path_sel = 2; + + RT_TRACE(COMP_DIG, DBG_TRACE, \ + ("Tx from TxInfo, TargetPath=%s\n", \ + (target_path==RF90_PATH_A) ? \ + "ODM_RF_PATH_A":"ODM_RF_PATH_B")); + RT_TRACE(COMP_DIG, DBG_TRACE, \ + ("pDM_PathDiv->PathSel= %d\n", \ + rtldm->path_sel)); + } + rtldm->patha_cnt = 0; + rtldm->patha_sum = 0; + rtldm->pathb_cnt = 0; + rtldm->pathb_sum = 0; +} + +void rtl8821ae_dm_dynamic_atc_switch(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_dm *rtldm = rtl_dm(rtl_priv(hw)); + u8 crystal_cap; + u32 packet_count; + int cfo_khz_a,cfo_khz_b,cfo_ave = 0, adjust_xtal = 0; + int cfo_ave_diff; + + if (rtlpriv->mac80211.link_state < MAC80211_LINKED){ + /*1.Enable ATC*/ + if (rtldm->atc_status == ATC_STATUS_OFF) + { + rtl_set_bbreg(hw, RFC_AREA, BIT(14), ATC_STATUS_ON); + rtldm->atc_status = ATC_STATUS_ON; + } + + RT_TRACE(COMP_DIG, DBG_LOUD, \ + ("rtl8821ae_dm_dynamic_atc_switch(): No link!!\n")); + RT_TRACE(COMP_DIG, DBG_LOUD, \ + ("rtl8821ae_dm_dynamic_atc_switch(): atc_status = %d\n", \ + rtldm->atc_status)); + + if (rtldm->crystal_cap != rtlpriv->efuse.crystalcap) + { + rtldm->crystal_cap = rtlpriv->efuse.crystalcap; + crystal_cap = rtldm->crystal_cap & 0x3f; + crystal_cap = crystal_cap & 0x3f; + rtl_set_bbreg(hw, REG_MAC_PHY_CTRL, \ + 0x7ff80000, (crystal_cap | (crystal_cap << 6))); + } + RT_TRACE(COMP_DIG, DBG_LOUD, \ + ("rtl8821ae_dm_dynamic_atc_switch(): crystal_cap = 0x%x\n", \ + rtldm->crystal_cap)); + }else{ + /*1. Calculate CFO for path-A & path-B*/ + cfo_khz_a = (int)(rtldm->cfo_tail[0] * 3125) / 1280; + cfo_khz_b = (int)(rtldm->cfo_tail[1] * 3125) / 1280; + packet_count = rtldm->packet_count; + + /*2.No new packet*/ + if (packet_count == rtldm->packet_count_pre) { + RT_TRACE(COMP_DIG, DBG_LOUD, \ + ("rtl8821ae_dm_dynamic_atc_switch(): packet counter doesn't change\n")); + return; + } + + rtldm->packet_count_pre = packet_count; + RT_TRACE(COMP_DIG, DBG_LOUD, \ + ("rtl8821ae_dm_dynamic_atc_switch(): packet counter = %d\n", \ + rtldm->packet_count)); + + /*3.Average CFO*/ + if (rtlpriv->phy.rf_type == RF_1T1R) + cfo_ave = cfo_khz_a; + else + cfo_ave = (cfo_khz_a + cfo_khz_b) >> 1; + + RT_TRACE(COMP_DIG, DBG_LOUD, \ + ("rtl8821ae_dm_dynamic_atc_switch():" + "cfo_khz_a = %dkHz, cfo_khz_b = %dkHz, cfo_ave = %dkHz\n", + cfo_khz_a, cfo_khz_b, cfo_ave)); + + /*4.Avoid abnormal large CFO*/ + cfo_ave_diff = (rtldm->cfo_ave_pre >= cfo_ave)? + (rtldm->cfo_ave_pre - cfo_ave): + (cfo_ave - rtldm->cfo_ave_pre); + + if (cfo_ave_diff > 20 && rtldm->large_cfo_hit == 0){ + RT_TRACE(COMP_DIG, DBG_LOUD, \ + ("rtl8821ae_dm_dynamic_atc_switch(): first large CFO hit\n")); + rtldm->large_cfo_hit = 1; + return; + } + else + rtldm->large_cfo_hit = 0; + + rtldm->cfo_ave_pre = cfo_ave; + + /*CFO tracking by adjusting Xtal cap.*/ + + /*1.Dynamic Xtal threshold*/ + if (cfo_ave >= -rtldm->cfo_threshold && + cfo_ave <= rtldm->cfo_threshold && + rtldm->is_freeze == 0){ + if (rtldm->cfo_threshold == CFO_THRESHOLD_XTAL){ + rtldm->cfo_threshold = CFO_THRESHOLD_XTAL + 10; + rtldm->is_freeze = 1; + } + else + rtldm->cfo_threshold = CFO_THRESHOLD_XTAL; + } + RT_TRACE(COMP_DIG, DBG_LOUD, \ + ("rtl8821ae_dm_dynamic_atc_switch(): Dynamic threshold = %d\n", \ + rtldm->cfo_threshold)); + + /* 2.Calculate Xtal offset*/ + if (cfo_ave > rtldm->cfo_threshold && rtldm->crystal_cap < 0x3f) + adjust_xtal = ((cfo_ave - CFO_THRESHOLD_XTAL) >> 2) + 1; + else if ((cfo_ave < -rtlpriv->dm.cfo_threshold) && rtlpriv->dm.crystal_cap > 0) + adjust_xtal = ((cfo_ave + CFO_THRESHOLD_XTAL) >> 2) - 1; + RT_TRACE(COMP_DIG, DBG_LOUD, \ + ("rtl8821ae_dm_dynamic_atc_switch(): " + "Crystal cap = 0x%x, Crystal cap offset = %d\n", + rtldm->crystal_cap, adjust_xtal)); + + /*3.Adjudt Crystal Cap.*/ + if (adjust_xtal != 0){ + rtldm->is_freeze = 0; + rtldm->crystal_cap += adjust_xtal; + + if (rtldm->crystal_cap > 0x3f) + rtldm->crystal_cap = 0x3f; + else if (rtldm->crystal_cap < 0) + rtldm->crystal_cap = 0; + + crystal_cap = rtldm->crystal_cap & 0x3f; + crystal_cap = crystal_cap & 0x3f; + rtl_set_bbreg(hw, REG_MAC_PHY_CTRL, \ + 0x7ff80000, (crystal_cap | (crystal_cap << 6))); + RT_TRACE(COMP_DIG, DBG_LOUD, \ + ("rtl8821ae_dm_dynamic_atc_switch(): New crystal cap = 0x%x \n", \ + rtldm->crystal_cap)); + } + } + +} + +void rtl8821ae_dm_watchdog(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + bool b_fw_current_inpsmode = false; + bool b_fw_ps_awake = true; + + rtlpriv->cfg->ops->get_hw_reg(hw, HW_VAR_FW_PSMODE_STATUS, + (u8 *) (&b_fw_current_inpsmode)); + + rtlpriv->cfg->ops->get_hw_reg(hw, HW_VAR_FWLPS_RF_ON, + (u8 *) (&b_fw_ps_awake)); + + if(ppsc->p2p_ps_info.p2p_ps_mode) + b_fw_ps_awake = false; + + if((ppsc->rfpwr_state == ERFON) && + ((!b_fw_current_inpsmode) && b_fw_ps_awake) && + (!ppsc->rfchange_inprogress)) { + rtl8821ae_dm_common_info_self_update(hw); + rtl8821ae_dm_false_alarm_counter_statistics(hw); + rtl8821ae_dm_check_rssi_monitor(hw); + rtl8821ae_dm_dig(hw); + rtl8821ae_dm_dynamic_edcca(hw); + rtl8821ae_dm_cck_packet_detection_thresh(hw); + rtl8821ae_dm_refresh_rate_adaptive_mask(hw); + rtl8821ae_dm_check_edca_turbo(hw); + rtl8821ae_dm_dynamic_atc_switch(hw); + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8812AE) + rtl8812ae_dm_check_txpower_tracking_thermalmeter(hw); + else + rtl8821ae_dm_check_txpower_tracking_thermalmeter(hw); + rtl8821ae_dm_iq_calibrate(hw); + if (rtlpriv->cfg->ops->get_btc_status()){ + rtlpriv->btcoexist.btc_ops->btc_periodical(rtlpriv); + } + } + + rtlpriv->dm.dbginfo.num_qry_beacon_pkt = 0; +} + +void rtl8821ae_dm_set_tx_ant_by_tx_info(struct ieee80211_hw *hw, + u8 *pdesc, u32 mac_id) +{ + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + struct rtl_dm *rtldm = rtl_dm(rtl_priv(hw)); + struct fast_ant_trainning *pfat_table= &(rtldm->fat_table); + + if (rtlhal->hw_type != HARDWARE_TYPE_RTL8812AE) + return; + + if ((rtlefuse->antenna_div_type == CG_TRX_HW_ANTDIV) || + (rtlefuse->antenna_div_type == CG_TRX_HW_ANTDIV)){ + SET_TX_DESC_TX_ANT(pdesc, pfat_table->antsel_a[mac_id]); + } +} --- linux-3.13.0.orig/drivers/staging/rtl8821ae/rtl8821ae/dm.h +++ linux-3.13.0/drivers/staging/rtl8821ae/rtl8821ae/dm.h @@ -0,0 +1,426 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#ifndef __RTL8821AE_DM_H__ +#define __RTL8821AE_DM_H__ + +#define MAIN_ANT 0 +#define AUX_ANT 1 +#define MAIN_ANT_CG_TRX 1 +#define AUX_ANT_CG_TRX 0 +#define MAIN_ANT_CGCS_RX 0 +#define AUX_ANT_CGCS_RX 1 + +#define TXSCALE_TABLE_SIZE 37 + +/*RF REG LIST*/ +#define DM_REG_RF_MODE_11N 0x00 +#define DM_REG_RF_0B_11N 0x0B +#define DM_REG_CHNBW_11N 0x18 +#define DM_REG_T_METER_11N 0x24 +#define DM_REG_RF_25_11N 0x25 +#define DM_REG_RF_26_11N 0x26 +#define DM_REG_RF_27_11N 0x27 +#define DM_REG_RF_2B_11N 0x2B +#define DM_REG_RF_2C_11N 0x2C +#define DM_REG_RXRF_A3_11N 0x3C +#define DM_REG_T_METER_92D_11N 0x42 +#define DM_REG_T_METER_88E_11N 0x42 + + + +/*BB REG LIST*/ +/*PAGE 8 */ +#define DM_REG_BB_CTRL_11N 0x800 +#define DM_REG_RF_PIN_11N 0x804 +#define DM_REG_PSD_CTRL_11N 0x808 +#define DM_REG_TX_ANT_CTRL_11N 0x80C +#define DM_REG_BB_PWR_SAV5_11N 0x818 +#define DM_REG_CCK_RPT_FORMAT_11N 0x824 +#define DM_REG_RX_DEFUALT_A_11N 0x858 +#define DM_REG_RX_DEFUALT_B_11N 0x85A +#define DM_REG_BB_PWR_SAV3_11N 0x85C +#define DM_REG_ANTSEL_CTRL_11N 0x860 +#define DM_REG_RX_ANT_CTRL_11N 0x864 +#define DM_REG_PIN_CTRL_11N 0x870 +#define DM_REG_BB_PWR_SAV1_11N 0x874 +#define DM_REG_ANTSEL_PATH_11N 0x878 +#define DM_REG_BB_3WIRE_11N 0x88C +#define DM_REG_SC_CNT_11N 0x8C4 +#define DM_REG_PSD_DATA_11N 0x8B4 +/*PAGE 9*/ +#define DM_REG_ANT_MAPPING1_11N 0x914 +#define DM_REG_ANT_MAPPING2_11N 0x918 +/*PAGE A*/ +#define DM_REG_CCK_ANTDIV_PARA1_11N 0xA00 +#define DM_REG_CCK_CCA_11N 0xA0A +#define DM_REG_CCK_CCA_11AC 0xA0A +#define DM_REG_CCK_ANTDIV_PARA2_11N 0xA0C +#define DM_REG_CCK_ANTDIV_PARA3_11N 0xA10 +#define DM_REG_CCK_ANTDIV_PARA4_11N 0xA14 +#define DM_REG_CCK_FILTER_PARA1_11N 0xA22 +#define DM_REG_CCK_FILTER_PARA2_11N 0xA23 +#define DM_REG_CCK_FILTER_PARA3_11N 0xA24 +#define DM_REG_CCK_FILTER_PARA4_11N 0xA25 +#define DM_REG_CCK_FILTER_PARA5_11N 0xA26 +#define DM_REG_CCK_FILTER_PARA6_11N 0xA27 +#define DM_REG_CCK_FILTER_PARA7_11N 0xA28 +#define DM_REG_CCK_FILTER_PARA8_11N 0xA29 +#define DM_REG_CCK_FA_RST_11N 0xA2C +#define DM_REG_CCK_FA_MSB_11N 0xA58 +#define DM_REG_CCK_FA_LSB_11N 0xA5C +#define DM_REG_CCK_CCA_CNT_11N 0xA60 +#define DM_REG_BB_PWR_SAV4_11N 0xA74 +/*PAGE B */ +#define DM_REG_LNA_SWITCH_11N 0xB2C +#define DM_REG_PATH_SWITCH_11N 0xB30 +#define DM_REG_RSSI_CTRL_11N 0xB38 +#define DM_REG_CONFIG_ANTA_11N 0xB68 +#define DM_REG_RSSI_BT_11N 0xB9C +/*PAGE C */ +#define DM_REG_OFDM_FA_HOLDC_11N 0xC00 +#define DM_REG_RX_PATH_11N 0xC04 +#define DM_REG_TRMUX_11N 0xC08 +#define DM_REG_OFDM_FA_RSTC_11N 0xC0C +#define DM_REG_RXIQI_MATRIX_11N 0xC14 +#define DM_REG_TXIQK_MATRIX_LSB1_11N 0xC4C +#define DM_REG_IGI_A_11N 0xC50 +#define DM_REG_IGI_A_11AC 0xC50 +#define DM_REG_ANTDIV_PARA2_11N 0xC54 +#define DM_REG_IGI_B_11N 0xC58 +#define DM_REG_IGI_B_11AC 0xE50 +#define DM_REG_ANTDIV_PARA3_11N 0xC5C +#define DM_REG_BB_PWR_SAV2_11N 0xC70 +#define DM_REG_RX_OFF_11N 0xC7C +#define DM_REG_TXIQK_MATRIXA_11N 0xC80 +#define DM_REG_TXIQK_MATRIXB_11N 0xC88 +#define DM_REG_TXIQK_MATRIXA_LSB2_11N 0xC94 +#define DM_REG_TXIQK_MATRIXB_LSB2_11N 0xC9C +#define DM_REG_RXIQK_MATRIX_LSB_11N 0xCA0 +#define DM_REG_ANTDIV_PARA1_11N 0xCA4 +#define DM_REG_OFDM_FA_TYPE1_11N 0xCF0 +/*PAGE D */ +#define DM_REG_OFDM_FA_RSTD_11N 0xD00 +#define DM_REG_OFDM_FA_TYPE2_11N 0xDA0 +#define DM_REG_OFDM_FA_TYPE3_11N 0xDA4 +#define DM_REG_OFDM_FA_TYPE4_11N 0xDA8 +/*PAGE E */ +#define DM_REG_TXAGC_A_6_18_11N 0xE00 +#define DM_REG_TXAGC_A_24_54_11N 0xE04 +#define DM_REG_TXAGC_A_1_MCS32_11N 0xE08 +#define DM_REG_TXAGC_A_MCS0_3_11N 0xE10 +#define DM_REG_TXAGC_A_MCS4_7_11N 0xE14 +#define DM_REG_TXAGC_A_MCS8_11_11N 0xE18 +#define DM_REG_TXAGC_A_MCS12_15_11N 0xE1C +#define DM_REG_FPGA0_IQK_11N 0xE28 +#define DM_REG_TXIQK_TONE_A_11N 0xE30 +#define DM_REG_RXIQK_TONE_A_11N 0xE34 +#define DM_REG_TXIQK_PI_A_11N 0xE38 +#define DM_REG_RXIQK_PI_A_11N 0xE3C +#define DM_REG_TXIQK_11N 0xE40 +#define DM_REG_RXIQK_11N 0xE44 +#define DM_REG_IQK_AGC_PTS_11N 0xE48 +#define DM_REG_IQK_AGC_RSP_11N 0xE4C +#define DM_REG_BLUETOOTH_11N 0xE6C +#define DM_REG_RX_WAIT_CCA_11N 0xE70 +#define DM_REG_TX_CCK_RFON_11N 0xE74 +#define DM_REG_TX_CCK_BBON_11N 0xE78 +#define DM_REG_OFDM_RFON_11N 0xE7C +#define DM_REG_OFDM_BBON_11N 0xE80 +#define DM_REG_TX2RX_11N 0xE84 +#define DM_REG_TX2TX_11N 0xE88 +#define DM_REG_RX_CCK_11N 0xE8C +#define DM_REG_RX_OFDM_11N 0xED0 +#define DM_REG_RX_WAIT_RIFS_11N 0xED4 +#define DM_REG_RX2RX_11N 0xED8 +#define DM_REG_STANDBY_11N 0xEDC +#define DM_REG_SLEEP_11N 0xEE0 +#define DM_REG_PMPD_ANAEN_11N 0xEEC + + +/*MAC REG LIST*/ +#define DM_REG_BB_RST_11N 0x02 +#define DM_REG_ANTSEL_PIN_11N 0x4C +#define DM_REG_EARLY_MODE_11N 0x4D0 +#define DM_REG_RSSI_MONITOR_11N 0x4FE +#define DM_REG_EDCA_VO_11N 0x500 +#define DM_REG_EDCA_VI_11N 0x504 +#define DM_REG_EDCA_BE_11N 0x508 +#define DM_REG_EDCA_BK_11N 0x50C +#define DM_REG_TXPAUSE_11N 0x522 +#define DM_REG_RESP_TX_11N 0x6D8 +#define DM_REG_ANT_TRAIN_PARA1_11N 0x7b0 +#define DM_REG_ANT_TRAIN_PARA2_11N 0x7b4 + + +/*DIG Related*/ +#define DM_BIT_IGI_11N 0x0000007F +#define DM_BIT_IGI_11AC 0xFFFFFFFF + + + +#define HAL_DM_DIG_DISABLE BIT(0) +#define HAL_DM_HIPWR_DISABLE BIT(1) + +#define OFDM_TABLE_LENGTH 43 +#define CCK_TABLE_LENGTH 33 + +#define OFDM_TABLE_SIZE 37 +#define CCK_TABLE_SIZE 33 + +#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 + +#define DM_DIG_MAX_AP 0x32 +#define DM_DIG_MIN_AP 0x20 + +#define DM_DIG_FA_UPPER 0x3e +#define DM_DIG_FA_LOWER 0x1e +#define DM_DIG_FA_TH0 0x200 +#define DM_DIG_FA_TH1 0x300 +#define DM_DIG_FA_TH2 0x400 + +#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 CTS2SELF_THVAL 30 +#define REGC38_TH 20 + +#define WAIOTTHVal 25 + +#define TXHIGHPWRLEVEL_NORMAL 0 +#define TXHIGHPWRLEVEL_LEVEL1 1 +#define TXHIGHPWRLEVEL_LEVEL2 2 +#define TXHIGHPWRLEVEL_BT1 3 +#define TXHIGHPWRLEVEL_BT2 4 + +#define DM_TYPE_BYFW 0 +#define DM_TYPE_BYDRIVER 1 + +#define TX_POWER_NEAR_FIELD_THRESH_LVL2 74 +#define TX_POWER_NEAR_FIELD_THRESH_LVL1 67 +#define TXPWRTRACK_MAX_IDX 6 + +/* Dynamic ATC switch */ +#define ATC_STATUS_OFF 0x0 /* enable */ +#define ATC_STATUS_ON 0x1 /* disable */ +#define CFO_THRESHOLD_XTAL 10 /* kHz */ +#define CFO_THRESHOLD_ATC 80 /* kHz */ + +#define AVG_THERMAL_NUM_8812A 4 +#define TXPWR_TRACK_TABLE_SIZE 30 +#define MAX_PATH_NUM_8812A 2 +#define MAX_PATH_NUM_8821A 1 + + +struct ps_t { + u8 pre_ccastate; + u8 cur_ccasate; + u8 pre_rfstate; + u8 cur_rfstate; + u8 initialize; + long rssi_val_min; + +}; + +struct dig_t { + u8 dig_enable_flag; + u8 dig_ext_port_stage; + u32 rssi_lowthresh; + u32 rssi_highthresh; + + u32 fa_lowthresh; + u32 fa_highthresh; + + u8 cursta_connectctate; + u8 presta_connectstate; + u8 curmultista_connectstate; + + u8 pre_igvalue; + u8 cur_igvalue; + u8 bt30_cur_igi; + u8 backup_igvalue; + u8 stop_dig; + + char backoff_val; + char backoff_val_range_max; + char backoff_val_range_min; + u8 rx_gain_range_max; + u8 rx_gain_range_min; + u8 rssi_val_min; + + u8 pre_cck_cca_thres; + u8 cur_cck_cca_thres; + u8 pre_cck_pd_state; + u8 cur_cck_pd_state; + + u8 large_fa_hit; + u8 forbidden_igi; + u32 recover_cnt; + + u8 dig_dynamic_min_0; + u8 dig_dynamic_min_1; + bool b_media_connect_0; + bool b_media_connect_1; + + u32 antdiv_rssi_max; + u32 rssi_max; +}; + + +enum FAT_STATE { + FAT_NORMAL_STATE = 0, + FAT_TRAINING_STATE = 1, +}; + +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 +}; + +enum tag_cck_packet_detection_threshold_type_definition { + CCK_PD_STAGE_LowRssi = 0, + CCK_PD_STAGE_HighRssi = 1, + CCK_FA_STAGE_Low = 2, + CCK_FA_STAGE_High = 3, + CCK_PD_STAGE_MAX = 4, +}; + +enum dm_1r_cca_e { + CCA_1R = 0, + CCA_2R = 1, + CCA_MAX = 2, +}; + +enum dm_rf_e { + RF_SAVE = 0, + RF_NORMAL = 1, + RF_MAX = 2, +}; + +enum dm_sw_ant_switch_e { + ANS_ANTENNA_B = 1, + ANS_ANTENNA_A = 2, + ANS_ANTENNA_MAX = 3, +}; + +enum dm_dig_ext_port_alg_e { + 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, +}; + +enum dm_dig_connect_e { + DIG_STA_DISCONNECT = 0, + DIG_STA_CONNECT = 1, + DIG_STA_BEFORE_CONNECT = 2, + DIG_MULTISTA_DISCONNECT = 3, + DIG_MULTISTA_CONNECT = 4, + DIG_CONNECT_MAX +}; + +enum pwr_track_control_method { + BBSWING, + TXAGC, + MIX_MODE +}; + +#define BT_RSSI_STATE_NORMAL_POWER BIT_OFFSET_LEN_MASK_32(0, 1) +#define BT_RSSI_STATE_AMDPU_OFF BIT_OFFSET_LEN_MASK_32(1, 1) +#define BT_RSSI_STATE_SPECIAL_LOW BIT_OFFSET_LEN_MASK_32(2, 1) +#define BT_RSSI_STATE_BG_EDCA_LOW BIT_OFFSET_LEN_MASK_32(3, 1) +#define BT_RSSI_STATE_TXPOWER_LOW BIT_OFFSET_LEN_MASK_32(4, 1) +#define GET_UNDECORATED_AVERAGE_RSSI(_priv) \ + (((struct rtl_priv *)(_priv))->mac80211.opmode == NL80211_IFTYPE_ADHOC)? \ + (((struct rtl_priv *)(_priv))->dm.entry_min_undecoratedsmoothed_pwdb): \ + (((struct rtl_priv *)(_priv))->dm.undecorated_smoothed_pwdb) + +extern struct dig_t dm_digtable; +void rtl8821ae_dm_set_tx_ant_by_tx_info(struct ieee80211_hw *hw, + u8 *pdesc, u32 mac_id); +void rtl8821ae_dm_ant_sel_statistics(struct ieee80211_hw *hw, + u8 antsel_tr_mux, u32 mac_id, + u32 rx_pwdb_all); +void rtl8821ae_dm_fast_antenna_trainning_callback(unsigned long data); +void rtl8821ae_dm_init(struct ieee80211_hw *hw); +void rtl8821ae_dm_watchdog(struct ieee80211_hw *hw); +void rtl8821ae_dm_write_dig(struct ieee80211_hw *hw, u8 current_igi); +void rtl8821ae_dm_init_edca_turbo(struct ieee80211_hw *hw); +void rtl8821ae_dm_check_txpower_tracking_thermalmeter(struct ieee80211_hw *hw); +void rtl8821ae_dm_init_rate_adaptive_mask(struct ieee80211_hw *hw); +void rtl8821ae_dm_txpower_track_adjust(struct ieee80211_hw *hw, + u8 type,u8 *pdirection, + u32 *poutwrite_val); +void rtl8821ae_dm_clear_txpower_tracking_state(struct ieee80211_hw *hw); +void rtl8821ae_dm_write_cck_cca_thres(struct ieee80211_hw *hw, u8 current_cca); +void rtl8821ae_dm_initialize_txpower_tracking_thermalmeter(struct ieee80211_hw *hw); +void rtl8812ae_dm_path_diversity(struct ieee80211_hw *hw); +void rtl8812ae_dm_path_diversity_init(struct ieee80211_hw *hw); +void rtl8812ae_dm_path_statistics(struct ieee80211_hw *hw, + u32 rssi_a, u32 rssi_b); +void rtl812ae_dm_set_txpath_by_txinfo(struct ieee80211_hw *hw, + u8 *pdesc); +void rtl8812ae_dm_txpwr_track_set_pwr(struct ieee80211_hw *hw, + enum pwr_track_control_method method, + u8 rf_path, + u8 channel_mapped_index); +void rtl8821ae_dm_txpwr_track_set_pwr(struct ieee80211_hw *hw, + enum pwr_track_control_method method, u8 rf_path, u8 channel_mapped_index); + +void rtl8812ae_dm_update_init_rate(struct ieee80211_hw *hw, u8 rate); +u8 rtl8812ae_hw_rate_to_mrate(struct ieee80211_hw *hw, u8 rate); +void rtl8812ae_dm_txpower_tracking_callback_thermalmeter(struct ieee80211_hw *hw); +void rtl8821ae_dm_txpower_tracking_callback_thermalmeter(struct ieee80211_hw *hw); +#endif --- linux-3.13.0.orig/drivers/staging/rtl8821ae/rtl8821ae/fw.c +++ linux-3.13.0/drivers/staging/rtl8821ae/rtl8821ae/fw.c @@ -0,0 +1,1349 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#include "../wifi.h" +#include "../pci.h" +#include "../base.h" +#include "reg.h" +#include "def.h" +#include "fw.h" +#include "dm.h" + +static void _rtl8821ae_enable_fw_download(struct ieee80211_hw *hw, bool enable) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 tmp; + + if (enable) { + rtl_write_byte(rtlpriv, REG_MCUFWDL, 0x05); + + tmp = rtl_read_byte(rtlpriv, REG_MCUFWDL + 2); + rtl_write_byte(rtlpriv, REG_MCUFWDL + 2, tmp & 0xf7); + + tmp = rtl_read_byte(rtlpriv, REG_MCUFWDL); + //printk("0x80=%02x.\n",tmp); + } else { + tmp = rtl_read_byte(rtlpriv, REG_MCUFWDL); + rtl_write_byte(rtlpriv, REG_MCUFWDL, tmp & 0xfe); + tmp = rtl_read_byte(rtlpriv, REG_MCUFWDL); + //printk("0x80=%02x.\n",tmp); + } + +} + +static void _rtl8821ae_fw_block_write(struct ieee80211_hw *hw, + const u8 *buffer, u32 size) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 blockSize = sizeof(u32); + u8 *bufferPtr = (u8 *) buffer; + u32 *pu4BytePtr = (u32 *) buffer; + u32 i, offset, blockCount, remainSize; + + blockCount = size / blockSize; + remainSize = size % blockSize; + + for (i = 0; i < blockCount; i++) { + offset = i * blockSize; + rtl_write_dword(rtlpriv, (FW_8821AE_START_ADDRESS + offset), + *(pu4BytePtr + i)); + } + + if (remainSize) { + offset = blockCount * blockSize; + bufferPtr += offset; + for (i = 0; i < remainSize; i++) { + rtl_write_byte(rtlpriv, (FW_8821AE_START_ADDRESS + + offset + i), *(bufferPtr + i)); + } + } +} + +static void _rtl8821ae_fw_page_write(struct ieee80211_hw *hw, + u32 page, const u8 *buffer, u32 size) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 value8; + u8 u8page = (u8) (page & 0x07); + + value8 = (rtl_read_byte(rtlpriv, REG_MCUFWDL + 2) & 0xF8) | u8page; + + rtl_write_byte(rtlpriv, (REG_MCUFWDL + 2), value8); + _rtl8821ae_fw_block_write(hw, buffer, size); +} + +static void _rtl8821ae_fill_dummy(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 void _rtl8821ae_write_fw(struct ieee80211_hw *hw, + enum version_8821ae version, + u8 *buffer, u32 size) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 *bufferPtr = (u8 *) buffer; + u32 pageNums, remainSize; + u32 page, offset; + + RT_TRACE(COMP_FW, DBG_LOUD, ("FW size is %d bytes,\n", size)); + + _rtl8821ae_fill_dummy(bufferPtr, &size); + + pageNums = size / FW_8821AE_PAGE_SIZE; + remainSize = size % FW_8821AE_PAGE_SIZE; + + if (pageNums > 8) { + RT_TRACE(COMP_ERR, DBG_EMERG, + ("Page numbers should not greater then 8\n")); + } + + for (page = 0; page < pageNums; page++) { + offset = page * FW_8821AE_PAGE_SIZE; + _rtl8821ae_fw_page_write(hw, page, (bufferPtr + offset), + FW_8821AE_PAGE_SIZE); + } + + if (remainSize) { + offset = pageNums * FW_8821AE_PAGE_SIZE; + page = pageNums; + _rtl8821ae_fw_page_write(hw, page, (bufferPtr + offset), + remainSize); + } + +} + +static int _rtl8821ae_fw_free_to_go(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + int err = -EIO; + u32 counter = 0; + u32 value32; + + do { + value32 = rtl_read_dword(rtlpriv, REG_MCUFWDL); + } while ((counter++ < FW_8821AE_POLLING_TIMEOUT_COUNT) && + (!(value32 & FWDL_CHKSUM_RPT))); + + if (counter >= FW_8821AE_POLLING_TIMEOUT_COUNT) { + RT_TRACE(COMP_ERR, DBG_LOUD, + ("chksum report faill ! REG_MCUFWDL:0x%08x .\n", + value32)); + goto exit; + } + + RT_TRACE(COMP_FW, DBG_EMERG, + ("Checksum report OK ! REG_MCUFWDL:0x%08x .\n", value32)); + + value32 = rtl_read_dword(rtlpriv, REG_MCUFWDL); + value32 |= MCUFWDL_RDY; + value32 &= ~WINTINI_RDY; + rtl_write_dword(rtlpriv, REG_MCUFWDL, value32); + + rtl8821ae_firmware_selfreset(hw); + + counter = 0; + do { + value32 = rtl_read_dword(rtlpriv, REG_MCUFWDL); + if (value32 & WINTINI_RDY) { + RT_TRACE(COMP_FW, DBG_LOUD, + ("Polling FW ready success!! REG_MCUFWDL:0x%08x .\n", + value32)); + err = 0; + goto exit; + } + + udelay(FW_8821AE_POLLING_DELAY); + + } while (counter++ < FW_8821AE_POLLING_TIMEOUT_COUNT); + + RT_TRACE(COMP_ERR, DBG_EMERG, + ("Polling FW ready fail!! REG_MCUFWDL:0x%08x .\n", value32)); + +exit: + return err; +} + +int rtl8821ae_download_fw(struct ieee80211_hw *hw, + bool buse_wake_on_wlan_fw + ) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + struct rtl8821a_firmware_header *pfwheader; + u8 *pfwdata; + u32 fwsize; + int err; + enum version_8821ae version = rtlhal->version; + + if(!rtlhal->pfirmware) + return 1; + + pfwheader = (struct rtl8821a_firmware_header *)rtlhal->pfirmware; + pfwdata = (u8 *) rtlhal->pfirmware; + fwsize = rtlhal->fwsize; + RT_TRACE(COMP_FW, DBG_DMESG, + ("normal Firmware SIZE %d \n",fwsize)); + + if (IS_FW_HEADER_EXIST_8812(pfwheader) || IS_FW_HEADER_EXIST_8821(pfwheader)) { + RT_TRACE(COMP_FW, DBG_DMESG, + ("Firmware Version(%d), Signature(%#x),Size(%d)\n", + pfwheader->version, pfwheader->signature, + (int)sizeof(struct rtl8821a_firmware_header))); + + pfwdata = pfwdata + sizeof(struct rtl8821a_firmware_header); + fwsize = fwsize - sizeof(struct rtl8821a_firmware_header); + } + + if(rtl_read_byte(rtlpriv, REG_MCUFWDL) & BIT(7)){ + rtl_write_byte(rtlpriv, REG_MCUFWDL, 0x00); + rtl8821ae_firmware_selfreset(hw); + } + _rtl8821ae_enable_fw_download(hw, true); + _rtl8821ae_write_fw(hw, version, pfwdata, fwsize); + _rtl8821ae_enable_fw_download(hw, false); + + err = _rtl8821ae_fw_free_to_go(hw); + if (err) { + RT_TRACE(COMP_ERR, DBG_EMERG, + ("Firmware is not ready to run!\n")); + } else { + RT_TRACE(COMP_FW, DBG_LOUD, + ("Firmware is ready to run!\n")); + } + + return 0; +} + +static bool _rtl8821ae_check_fw_read_last_h2c(struct ieee80211_hw *hw, u8 boxnum) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 val_hmetfr; + bool result = false; + + val_hmetfr = rtl_read_byte(rtlpriv, REG_HMETFR); + if (((val_hmetfr >> boxnum) & BIT(0)) == 0) + result = true; + return result; +} + +static void _rtl8821ae_fill_h2c_command(struct ieee80211_hw *hw, + u8 element_id, u32 cmd_len, u8 *p_cmdbuffer) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + u8 boxnum =0; + u16 box_reg = 0, box_extreg = 0; + u8 u1b_tmp = 0; + bool isfw_read = false; + u8 buf_index = 0; + bool bwrite_sucess = false; + u8 wait_h2c_limmit = 100; + /*u8 wait_writeh2c_limmit = 100;*/ + u8 boxcontent[4], boxextcontent[4]; + u32 h2c_waitcounter = 0; + unsigned long flag =0; + u8 idx =0; + + RT_TRACE(COMP_CMD, DBG_LOUD, ("come in\n")); + + while (true) { + spin_lock_irqsave(&rtlpriv->locks.h2c_lock, flag); + if (rtlhal->b_h2c_setinprogress) { + RT_TRACE(COMP_CMD, DBG_LOUD, + ("H2C set in progress! Wait to set.." + "element_id(%d).\n", element_id)); + + while (rtlhal->b_h2c_setinprogress) { + spin_unlock_irqrestore(&rtlpriv->locks.h2c_lock, + flag); + h2c_waitcounter++; + RT_TRACE(COMP_CMD, DBG_LOUD, + ("Wait 100 us (%d times)...\n", + h2c_waitcounter)); + udelay(100); + + if (h2c_waitcounter > 1000) + return; + spin_lock_irqsave(&rtlpriv->locks.h2c_lock, + flag); + } + spin_unlock_irqrestore(&rtlpriv->locks.h2c_lock, flag); + } else { + rtlhal->b_h2c_setinprogress = true; + spin_unlock_irqrestore(&rtlpriv->locks.h2c_lock, flag); + break; + } + } + + while (!bwrite_sucess) { + /*cosa remove this because never reach this.*/ +#if 0 + wait_writeh2c_limmit--; + if (wait_writeh2c_limmit == 0) { + RT_TRACE(COMP_ERR, DBG_EMERG, + ("Write H2C fail because no trigger " + "for FW INT!\n")); + break; + } +#endif + + boxnum = rtlhal->last_hmeboxnum; + switch (boxnum) { + case 0: + box_reg = REG_HMEBOX_0; + box_extreg = REG_HMEBOX_EXT_0; + break; + case 1: + box_reg = REG_HMEBOX_1; + box_extreg = REG_HMEBOX_EXT_1; + break; + case 2: + box_reg = REG_HMEBOX_2; + box_extreg = REG_HMEBOX_EXT_2; + break; + case 3: + box_reg = REG_HMEBOX_3; + box_extreg = REG_HMEBOX_EXT_3; + break; + default: + RT_TRACE(COMP_ERR, DBG_EMERG, + ("switch case not process \n")); + break; + } + + isfw_read = false; + u1b_tmp = rtl_read_byte(rtlpriv, REG_CR); + + if (u1b_tmp != 0xEA) + isfw_read = true; + else { + if( rtl_read_byte(rtlpriv, REG_TXDMA_STATUS) == 0xEA || + rtl_read_byte(rtlpriv, REG_TXPKT_EMPTY) == 0xEA) + rtl_write_byte(rtlpriv, REG_SYS_CFG1 + 3, 0xFF); + } + + if (isfw_read == true) { + wait_h2c_limmit = 100; + isfw_read = _rtl8821ae_check_fw_read_last_h2c(hw, boxnum); + while (!isfw_read) { + /*wait until Fw read*/ + wait_h2c_limmit--; + if (wait_h2c_limmit == 0) { + RT_TRACE(COMP_CMD, DBG_LOUD, + ("Wating too long for FW read " + "clear HMEBox(%d)!\n", boxnum)); + break; + } + + udelay(10); + + isfw_read = _rtl8821ae_check_fw_read_last_h2c(hw, boxnum); + u1b_tmp = rtl_read_byte(rtlpriv, 0x130); + RT_TRACE(COMP_CMD, DBG_LOUD, + ("Wating for FW read clear HMEBox(%d)!!! " + "0x130 = %2x\n", boxnum, u1b_tmp)); + } + } + + if (!isfw_read) { + RT_TRACE(COMP_CMD, DBG_LOUD, + ("Write H2C register BOX[%d] fail!!!!! " + "Fw do not read. \n", boxnum)); + break; + } + + memset(boxcontent, 0, sizeof(boxcontent)); + memset(boxextcontent, 0, sizeof(boxextcontent)); + boxcontent[0] = element_id; + RT_TRACE(COMP_CMD, DBG_LOUD, + ("Write element_id box_reg(%4x) = %2x \n", + box_reg, element_id)); + + switch (cmd_len) { + case 1: + case 2: + case 3: + /*boxcontent[0] &= ~(BIT(7));*/ + memcpy((u8 *) (boxcontent) + 1, + p_cmdbuffer + buf_index, cmd_len); + + for (idx = 0; idx < 4; idx++) { + rtl_write_byte(rtlpriv, box_reg + idx, + boxcontent[idx]); + } + break; + case 4: + case 5: + case 6: + case 7: + /*boxcontent[0] |= (BIT(7));*/ + memcpy((u8 *) (boxextcontent), + p_cmdbuffer + buf_index+3, cmd_len-3); + memcpy((u8 *) (boxcontent) + 1, + p_cmdbuffer + buf_index, 3); + + for (idx = 0; idx < 4; idx++) { + rtl_write_byte(rtlpriv, box_extreg + idx, + boxextcontent[idx]); + } + + for (idx = 0; idx < 4; idx++) { + rtl_write_byte(rtlpriv, box_reg + idx, + boxcontent[idx]); + } + break; + default: + RT_TRACE(COMP_ERR, DBG_EMERG, + ("switch case not process \n")); + break; + } + + bwrite_sucess = true; + + rtlhal->last_hmeboxnum = boxnum + 1; + if (rtlhal->last_hmeboxnum == 4) + rtlhal->last_hmeboxnum = 0; + + RT_TRACE(COMP_CMD, DBG_LOUD, + ("pHalData->last_hmeboxnum = %d\n", + rtlhal->last_hmeboxnum)); + } + + spin_lock_irqsave(&rtlpriv->locks.h2c_lock, flag); + rtlhal->b_h2c_setinprogress = false; + spin_unlock_irqrestore(&rtlpriv->locks.h2c_lock, flag); + + RT_TRACE(COMP_CMD, DBG_LOUD, ("go out\n")); +} + +void rtl8821ae_fill_h2c_cmd(struct ieee80211_hw *hw, + u8 element_id, u32 cmd_len, u8 *p_cmdbuffer) +{ + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + u32 tmp_cmdbuf[2]; + + if (rtlhal->bfw_ready == false) { + RT_ASSERT(false, ("return H2C cmd because of Fw " + "download fail!!!\n")); + return; + } + + memset(tmp_cmdbuf, 0, 8); + memcpy(tmp_cmdbuf, p_cmdbuffer, cmd_len); + _rtl8821ae_fill_h2c_command(hw, element_id, cmd_len, (u8 *) & tmp_cmdbuf); + + return; +} + +void rtl8821ae_firmware_selfreset(struct ieee80211_hw *hw) +{ + u8 u1b_tmp; + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + + if(rtlhal->hw_type == HARDWARE_TYPE_RTL8812AE) + { + u1b_tmp = rtl_read_byte(rtlpriv, REG_RSV_CTRL+1); + rtl_write_byte(rtlpriv, REG_RSV_CTRL+1, (u1b_tmp & (~BIT(3)))); + }else { + u1b_tmp = rtl_read_byte(rtlpriv, REG_RSV_CTRL+1); + rtl_write_byte(rtlpriv, REG_RSV_CTRL+1, (u1b_tmp & (~BIT(0)))); + } + + u1b_tmp = rtl_read_byte(rtlpriv, REG_SYS_FUNC_EN+1); + rtl_write_byte(rtlpriv, REG_SYS_FUNC_EN+1, (u1b_tmp & (~BIT(2)))); + udelay(50); + + if(rtlhal->hw_type == HARDWARE_TYPE_RTL8812AE) + { + u1b_tmp = rtl_read_byte(rtlpriv, REG_RSV_CTRL+1); + rtl_write_byte(rtlpriv, REG_RSV_CTRL+1, (u1b_tmp | BIT(3))); + }else { + u1b_tmp = rtl_read_byte(rtlpriv, REG_RSV_CTRL+1); + rtl_write_byte(rtlpriv, REG_RSV_CTRL+1, (u1b_tmp | BIT(0))); + } + + u1b_tmp = rtl_read_byte(rtlpriv, REG_SYS_FUNC_EN+1); + rtl_write_byte(rtlpriv, REG_SYS_FUNC_EN+1, (u1b_tmp | BIT(2))); + + RT_TRACE(COMP_INIT, DBG_LOUD, (" _8051Reset8812ae(): 8051 reset success .\n")); + +} + +void rtl8821ae_set_fw_pwrmode_cmd(struct ieee80211_hw *hw, u8 mode) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 u1_h2c_set_pwrmode[H2C_8821AE_PWEMODE_LENGTH] = { 0 }; + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + u8 rlbm,power_state = 0; + RT_TRACE(COMP_POWER, DBG_LOUD, ("FW LPS mode = %d\n", mode)); + + SET_H2CCMD_PWRMODE_PARM_MODE(u1_h2c_set_pwrmode, ((mode) ? 1 : 0)); + rlbm = 0;/*YJ,temp,120316. FW now not support RLBM=2.*/ + SET_H2CCMD_PWRMODE_PARM_RLBM(u1_h2c_set_pwrmode, rlbm); + SET_H2CCMD_PWRMODE_PARM_SMART_PS(u1_h2c_set_pwrmode, (rtlpriv->mac80211.p2p) ? ppsc->smart_ps : 1); + SET_H2CCMD_PWRMODE_PARM_AWAKE_INTERVAL(u1_h2c_set_pwrmode, ppsc->reg_max_lps_awakeintvl); + SET_H2CCMD_PWRMODE_PARM_ALL_QUEUE_UAPSD(u1_h2c_set_pwrmode, 0); + if(mode == FW_PS_ACTIVE_MODE) + { + power_state |= FW_PWR_STATE_ACTIVE; + } + else + { + power_state |= FW_PWR_STATE_RF_OFF; + } + SET_H2CCMD_PWRMODE_PARM_PWR_STATE(u1_h2c_set_pwrmode, power_state); + + RT_PRINT_DATA(rtlpriv, COMP_CMD, DBG_DMESG, + "rtl92c_set_fw_pwrmode(): u1_h2c_set_pwrmode \n", + u1_h2c_set_pwrmode, H2C_8821AE_PWEMODE_LENGTH); + rtl8821ae_fill_h2c_cmd(hw, H2C_8821AE_SETPWRMODE, H2C_8821AE_PWEMODE_LENGTH, u1_h2c_set_pwrmode); + +} + +void rtl8821ae_set_fw_joinbss_report_cmd(struct ieee80211_hw *hw, u8 mstatus) +{ + u8 u1_joinbssrpt_parm[1] = { 0 }; + + SET_H2CCMD_JOINBSSRPT_PARM_OPMODE(u1_joinbssrpt_parm, mstatus); + + rtl8821ae_fill_h2c_cmd(hw, H2C_8821AE_JOINBSSRPT, 1, u1_joinbssrpt_parm); +} + +void rtl8821ae_set_fw_ap_off_load_cmd(struct ieee80211_hw *hw, u8 ap_offload_enable) +{ + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + u8 u1_apoffload_parm[H2C_8821AE_AP_OFFLOAD_LENGTH] = { 0 }; + + SET_H2CCMD_AP_OFFLOAD_ON(u1_apoffload_parm, ap_offload_enable); + SET_H2CCMD_AP_OFFLOAD_HIDDEN(u1_apoffload_parm, mac->bhiddenssid); + SET_H2CCMD_AP_OFFLOAD_DENYANY(u1_apoffload_parm, 0); + + rtl8821ae_fill_h2c_cmd(hw, H2C_8821AE_AP_OFFLOAD, H2C_8821AE_AP_OFFLOAD_LENGTH, u1_apoffload_parm); + +} + +static bool _rtl8821ae_cmd_send_packet(struct ieee80211_hw *hw, + struct sk_buff *skb) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + struct rtl8192_tx_ring *ring; + struct rtl_tx_desc *pdesc; + u8 own; + unsigned long flags; + struct sk_buff *pskb = NULL; + + ring = &rtlpci->tx_ring[BEACON_QUEUE]; + + pskb = __skb_dequeue(&ring->queue); + if (pskb) + kfree_skb(pskb); + + spin_lock_irqsave(&rtlpriv->locks.irq_th_lock, flags); + + pdesc = &ring->desc[0]; + own = (u8) rtlpriv->cfg->ops->get_desc((u8 *) pdesc, true, HW_DESC_OWN); + + rtlpriv->cfg->ops->fill_tx_cmddesc(hw, (u8 *) pdesc, 1, 1, skb); + + __skb_queue_tail(&ring->queue, skb); + + spin_unlock_irqrestore(&rtlpriv->locks.irq_th_lock, flags); + + rtlpriv->cfg->ops->tx_polling(hw, BEACON_QUEUE); + + return true; +} + +#define BEACON_PG 0 /* ->1 */ +#define PSPOLL_PG 2 +#define NULL_PG 3 +#define PROBERSP_PG 4 /* ->5 */ + +#define BEACON_PG_8812 0 +#define PSPOLL_PG_8812 1 +#define NULL_PG_8812 2 +#define PROBERSP_PG_8812 3 + +#define BEACON_PG_8821 0 +#define PSPOLL_PG_8821 1 +#define NULL_PG_8821 2 +#define PROBERSP_PG_8821 3 + +#define TOTAL_RESERVED_PKT_LEN_8812 2048 +#define TOTAL_RESERVED_PKT_LEN_8821 1024 + + +static u8 reserved_page_packet_8821[TOTAL_RESERVED_PKT_LEN_8821] = { + /* page 0 */ + 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x00, 0xe0, 0x4c, 0x02, 0xe2, 0x64, + 0x40, 0x16, 0x9f, 0x23, 0xd4, 0x46, 0x20, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x20, 0x04, 0x00, 0x06, 0x64, 0x6c, + 0x69, 0x6e, 0x6b, 0x31, 0x01, 0x08, 0x82, 0x84, + 0x8b, 0x96, 0x0c, 0x18, 0x30, 0x48, 0x03, 0x01, + 0x0b, 0x06, 0x02, 0x00, 0x00, 0x2a, 0x01, 0x8b, + 0x32, 0x04, 0x12, 0x24, 0x60, 0x6c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x28, 0x8c, 0x00, 0x12, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* page 1 */ + 0xa4, 0x10, 0x01, 0xc0, 0x40, 0x16, 0x9f, 0x23, + 0xd4, 0x46, 0x00, 0xe0, 0x4c, 0x02, 0xe2, 0x64, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x28, 0x8c, 0x00, 0x12, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* page 2 */ + 0x48, 0x01, 0x00, 0x00, 0x40, 0x16, 0x9f, 0x23, + 0xd4, 0x46, 0x00, 0xe0, 0x4c, 0x02, 0xe2, 0x64, + 0x40, 0x16, 0x9f, 0x23, 0xd4, 0x46, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x28, 0x8c, 0x00, 0x12, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* page 3 */ + 0xc8, 0x01, 0x00, 0x00, 0x40, 0x16, 0x9f, 0x23, + 0xd4, 0x46, 0x00, 0xe0, 0x4c, 0x02, 0xe2, 0x64, + 0x40, 0x16, 0x9f, 0x23, 0xd4, 0x46, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + + +static u8 reserved_page_packet_8812[TOTAL_RESERVED_PKT_LEN_8812] = { + 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0xE0, 0x4C, 0x02, 0x53, 0xE5, + 0xE0, 0x46, 0x9A, 0x57, 0x71, 0x30, 0x20, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x30, 0x04, 0x00, 0x0C, 0x4E, 0x45, + 0x54, 0x47, 0x45, 0x41, 0x52, 0x5F, 0x31, 0x35, + 0x30, 0x4E, 0x01, 0x08, 0x82, 0x84, 0x8B, 0x96, + 0x0C, 0x12, 0x18, 0x24, 0x03, 0x01, 0x03, 0x06, + 0x02, 0x00, 0x00, 0x2A, 0x01, 0x8A, 0x32, 0x04, + 0x30, 0x48, 0x60, 0x6C, 0xDD, 0x18, 0x00, 0x50, + 0xF2, 0x01, 0x01, 0x00, 0x00, 0x50, 0xF2, 0x02, + 0x01, 0x00, 0x00, 0x50, 0xF2, 0x02, 0x01, 0x00, + 0x00, 0x50, 0xF2, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x28, 0x8C, 0x00, 0x12, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + 0xA4, 0x10, 0x02, 0xC0, 0xE0, 0x46, 0x9A, 0x57, + 0x71, 0x30, 0x00, 0xE0, 0x4C, 0x02, 0x53, 0xE5, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x28, 0x8C, 0x00, 0x12, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + 0x48, 0x01, 0x00, 0x00, 0xE0, 0x46, 0x9A, 0x57, + 0x71, 0x30, 0x00, 0xE0, 0x4C, 0x02, 0x53, 0xE5, + 0xE0, 0x46, 0x9A, 0x57, 0x71, 0x30, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1A, 0x00, 0x28, 0x8C, 0x00, 0x12, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + 0xC8, 0x01, 0x00, 0x00, 0xE0, 0x46, 0x9A, 0x57, + 0x71, 0x30, 0x00, 0xE0, 0x4C, 0x02, 0x53, 0xE5, + 0xE0, 0x46, 0x9A, 0x57, 0x71, 0x30, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +void rtl8812ae_set_fw_rsvdpagepkt(struct ieee80211_hw *hw, bool b_dl_finished) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct sk_buff *skb = NULL; + + u32 totalpacketlen; + bool rtstatus; + u8 u1RsvdPageLoc[5] = { 0 }; + bool b_dlok = false; + + u8* beacon; + u8* p_pspoll; + u8* nullfunc; + u8* p_probersp; + /*--------------------------------------------------------- + (1) beacon + ---------------------------------------------------------*/ + beacon = &reserved_page_packet_8812[BEACON_PG_8812 * 512]; + SET_80211_HDR_ADDRESS2(beacon, mac->mac_addr); + SET_80211_HDR_ADDRESS3(beacon, mac->bssid); + + /*------------------------------------------------------- + (2) ps-poll + --------------------------------------------------------*/ + p_pspoll = &reserved_page_packet_8812[PSPOLL_PG_8812 * 512]; + SET_80211_PS_POLL_AID(p_pspoll, (mac->assoc_id | 0xc000)); + SET_80211_PS_POLL_BSSID(p_pspoll, mac->bssid); + SET_80211_PS_POLL_TA(p_pspoll, mac->mac_addr); + + SET_H2CCMD_RSVDPAGE_LOC_PSPOLL(u1RsvdPageLoc, PSPOLL_PG_8812); + + /*-------------------------------------------------------- + (3) null data + ---------------------------------------------------------*/ + nullfunc = &reserved_page_packet_8812[NULL_PG_8812* 512]; + SET_80211_HDR_ADDRESS1(nullfunc, mac->bssid); + SET_80211_HDR_ADDRESS2(nullfunc, mac->mac_addr); + SET_80211_HDR_ADDRESS3(nullfunc, mac->bssid); + + SET_H2CCMD_RSVDPAGE_LOC_NULL_DATA(u1RsvdPageLoc, NULL_PG_8812); + + /*--------------------------------------------------------- + (4) probe response + ----------------------------------------------------------*/ + p_probersp = &reserved_page_packet_8812[PROBERSP_PG_8812 * 512]; + SET_80211_HDR_ADDRESS1(p_probersp, mac->bssid); + SET_80211_HDR_ADDRESS2(p_probersp, mac->mac_addr); + SET_80211_HDR_ADDRESS3(p_probersp, mac->bssid); + + SET_H2CCMD_RSVDPAGE_LOC_PROBE_RSP(u1RsvdPageLoc, PROBERSP_PG_8812); + + totalpacketlen = TOTAL_RESERVED_PKT_LEN_8812; + + RT_PRINT_DATA(rtlpriv, COMP_CMD, DBG_LOUD, + "rtl8821ae_set_fw_rsvdpagepkt(): HW_VAR_SET_TX_CMD: ALL \n", + &reserved_page_packet_8812[0], totalpacketlen); + RT_PRINT_DATA(rtlpriv, COMP_CMD, DBG_DMESG, + "rtl8821ae_set_fw_rsvdpagepkt(): HW_VAR_SET_TX_CMD: ALL \n", + u1RsvdPageLoc, 3); + + + skb = dev_alloc_skb(totalpacketlen); + memcpy((u8 *) skb_put(skb, totalpacketlen), + &reserved_page_packet_8812, totalpacketlen); + + rtstatus = _rtl8821ae_cmd_send_packet(hw, skb); + + if (rtstatus) + b_dlok = true; + + if (b_dlok) { + RT_TRACE(COMP_POWER, DBG_LOUD, + ("Set RSVD page location to Fw.\n")); + RT_PRINT_DATA(rtlpriv, COMP_CMD, DBG_DMESG, + "H2C_RSVDPAGE:\n", + u1RsvdPageLoc, 3); + rtl8821ae_fill_h2c_cmd(hw, H2C_8821AE_RSVDPAGE, + sizeof(u1RsvdPageLoc), u1RsvdPageLoc); + } else + RT_TRACE(COMP_ERR, DBG_WARNING, + ("Set RSVD page location to Fw FAIL!!!!!!.\n")); +} + +void rtl8821ae_set_fw_rsvdpagepkt(struct ieee80211_hw *hw, bool b_dl_finished) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct sk_buff *skb = NULL; + + u32 totalpacketlen; + bool rtstatus; + u8 u1RsvdPageLoc[5] = { 0 }; + bool b_dlok = false; + + u8* beacon; + u8* p_pspoll; + u8* nullfunc; + u8* p_probersp; + /*--------------------------------------------------------- + (1) beacon + ---------------------------------------------------------*/ + beacon = &reserved_page_packet_8821[BEACON_PG_8821 * 256]; + SET_80211_HDR_ADDRESS2(beacon, mac->mac_addr); + SET_80211_HDR_ADDRESS3(beacon, mac->bssid); + + /*------------------------------------------------------- + (2) ps-poll + --------------------------------------------------------*/ + p_pspoll = &reserved_page_packet_8821[PSPOLL_PG_8821 * 256]; + SET_80211_PS_POLL_AID(p_pspoll, (mac->assoc_id | 0xc000)); + SET_80211_PS_POLL_BSSID(p_pspoll, mac->bssid); + SET_80211_PS_POLL_TA(p_pspoll, mac->mac_addr); + + SET_H2CCMD_RSVDPAGE_LOC_PSPOLL(u1RsvdPageLoc, PSPOLL_PG_8821); + + /*-------------------------------------------------------- + (3) null data + ---------------------------------------------------------*/ + nullfunc = &reserved_page_packet_8821[NULL_PG_8821 * 256]; + SET_80211_HDR_ADDRESS1(nullfunc, mac->bssid); + SET_80211_HDR_ADDRESS2(nullfunc, mac->mac_addr); + SET_80211_HDR_ADDRESS3(nullfunc, mac->bssid); + + SET_H2CCMD_RSVDPAGE_LOC_NULL_DATA(u1RsvdPageLoc, NULL_PG_8821); + + /*--------------------------------------------------------- + (4) probe response + ----------------------------------------------------------*/ + p_probersp = &reserved_page_packet_8821[PROBERSP_PG_8821 * 256]; + SET_80211_HDR_ADDRESS1(p_probersp, mac->bssid); + SET_80211_HDR_ADDRESS2(p_probersp, mac->mac_addr); + SET_80211_HDR_ADDRESS3(p_probersp, mac->bssid); + + SET_H2CCMD_RSVDPAGE_LOC_PROBE_RSP(u1RsvdPageLoc, PROBERSP_PG_8821); + + totalpacketlen = TOTAL_RESERVED_PKT_LEN_8821; + + RT_PRINT_DATA(rtlpriv, COMP_CMD, DBG_LOUD, + "rtl8821ae_set_fw_rsvdpagepkt(): HW_VAR_SET_TX_CMD: ALL \n", + &reserved_page_packet_8821[0], totalpacketlen); + RT_PRINT_DATA(rtlpriv, COMP_CMD, DBG_DMESG, + "rtl8821ae_set_fw_rsvdpagepkt(): HW_VAR_SET_TX_CMD: ALL \n", + u1RsvdPageLoc, 3); + + + skb = dev_alloc_skb(totalpacketlen); + memcpy((u8 *) skb_put(skb, totalpacketlen), + &reserved_page_packet_8821, totalpacketlen); + + rtstatus = _rtl8821ae_cmd_send_packet(hw, skb); + + if (rtstatus) + b_dlok = true; + + if (b_dlok) { + RT_TRACE(COMP_POWER, DBG_LOUD, + ("Set RSVD page location to Fw.\n")); + RT_PRINT_DATA(rtlpriv, COMP_CMD, DBG_DMESG, + "H2C_RSVDPAGE:\n", + u1RsvdPageLoc, 3); + rtl8821ae_fill_h2c_cmd(hw, H2C_8821AE_RSVDPAGE, + sizeof(u1RsvdPageLoc), u1RsvdPageLoc); + } else + RT_TRACE(COMP_ERR, DBG_WARNING, + ("Set RSVD page location to Fw FAIL!!!!!!.\n")); +} + +/*Shoud check FW support p2p or not.*/ +void rtl8821ae_set_p2p_ctw_period_cmd(struct ieee80211_hw *hw, u8 ctwindow) +{ + u8 u1_ctwindow_period[1] ={ ctwindow}; + + rtl8821ae_fill_h2c_cmd(hw, H2C_8821AE_P2P_PS_CTW_CMD, 1, u1_ctwindow_period); + +} + +void rtl8821ae_set_p2p_ps_offload_cmd(struct ieee80211_hw *hw, u8 p2p_ps_state) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_ps_ctl *rtlps = rtl_psc(rtl_priv(hw)); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + struct rtl_p2p_ps_info *p2pinfo = &(rtlps->p2p_ps_info); + struct p2p_ps_offload_t *p2p_ps_offload = &rtlhal->p2p_ps_offload; + u8 i; + u16 ctwindow; + u32 start_time, tsf_low; + + switch(p2p_ps_state) + { + case P2P_PS_DISABLE: + RT_TRACE(COMP_FW, DBG_LOUD,("P2P_PS_DISABLE \n")); + memset(p2p_ps_offload, 0, 1); + break; + case P2P_PS_ENABLE: + RT_TRACE(COMP_FW, DBG_LOUD,("P2P_PS_ENABLE \n")); + /* update CTWindow value. */ + if( p2pinfo->ctwindow > 0 ) + { + p2p_ps_offload->CTWindow_En = 1; + ctwindow = p2pinfo->ctwindow; + rtl8821ae_set_p2p_ctw_period_cmd(hw, ctwindow); + } + + /* hw only support 2 set of NoA */ + for( i=0 ; inoa_num ; i++) + { + /* To control the register setting for which NOA*/ + rtl_write_byte(rtlpriv, 0x5cf, (i << 4)); + if(i == 0) + p2p_ps_offload->NoA0_En = 1; + else + p2p_ps_offload->NoA1_En = 1; + + /* config P2P NoA Descriptor Register */ + rtl_write_dword(rtlpriv, 0x5E0, p2pinfo->noa_duration[i]); + rtl_write_dword(rtlpriv, 0x5E4, p2pinfo->noa_interval[i]); + + /*Get Current TSF value */ + tsf_low = rtl_read_dword(rtlpriv, REG_TSFTR); + + start_time = p2pinfo->noa_start_time[i]; + if(p2pinfo->noa_count_type[i] != 1) + { + while( start_time <= (tsf_low+(50*1024) ) ) { + start_time += p2pinfo->noa_interval[i]; + if(p2pinfo->noa_count_type[i] != 255) + p2pinfo->noa_count_type[i]--; + } + } + rtl_write_dword(rtlpriv, 0x5E8, start_time); + rtl_write_dword(rtlpriv, 0x5EC, p2pinfo->noa_count_type[i] ); + + } + + if( (p2pinfo->opp_ps == 1) || (p2pinfo->noa_num > 0) ) + { + /* rst p2p circuit */ + rtl_write_byte(rtlpriv, REG_DUAL_TSF_RST, BIT(4)); + + p2p_ps_offload->Offload_En = 1; + + if(P2P_ROLE_GO == rtlpriv->mac80211.p2p) + { + 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: + RT_TRACE(COMP_FW, DBG_LOUD,("P2P_PS_SCAN \n")); + p2p_ps_offload->discovery = 1; + break; + case P2P_PS_SCAN_DONE: + RT_TRACE(COMP_FW, DBG_LOUD,("P2P_PS_SCAN_DONE \n")); + p2p_ps_offload->discovery = 0; + p2pinfo->p2p_ps_state = P2P_PS_ENABLE; + break; + default: + break; + } + + rtl8821ae_fill_h2c_cmd(hw, H2C_8821AE_P2P_PS_OFFLOAD, 1, (u8 *)p2p_ps_offload); + +} + +void rtl8812ae_c2h_ra_report_handler( + struct ieee80211_hw *hw, + u8 *cmd_buf, + u8 cmd_len +) +{ + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + u8 rate = cmd_buf[0] & 0x3F; + + rtlhal->current_ra_rate= rtl8812ae_hw_rate_to_mrate(hw, rate); + + rtl8812ae_dm_update_init_rate(hw, rate); +} + + +void _rtl8812ae_c2h_content_parsing( + struct ieee80211_hw *hw, + u8 c2h_cmd_id, + u8 c2h_cmd_len, + u8 *tmp_buf +) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + switch (c2h_cmd_id) { + case C2H_8812_DBG: + RT_TRACE(COMP_FW, DBG_LOUD,("[C2H], C2H_8812_DBG!!\n")); + break; + + case C2H_8812_RA_RPT: + rtl8812ae_c2h_ra_report_handler(hw, tmp_buf, c2h_cmd_len); + break; + + default: + break; + } + +} + +void rtl8812ae_c2h_packet_handler( + struct ieee80211_hw *hw, + u8 *buffer, + u8 length + ) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 c2h_cmd_id=0, c2h_cmd_seq=0, c2h_cmd_len=0; + u8 *tmp_buf=NULL; + + c2h_cmd_id = buffer[0]; + c2h_cmd_seq = buffer[1]; + c2h_cmd_len = length -2; + tmp_buf = buffer + 2; + + RT_TRACE(COMP_FW, DBG_LOUD, + ("[C2H packet], c2hCmdId=0x%x, c2hCmdSeq=0x%x, c2hCmdLen=%d\n", + c2h_cmd_id, c2h_cmd_seq, c2h_cmd_len)); + + RT_PRINT_DATA(rtlpriv, COMP_FW, DBG_LOUD, + "[C2H packet], Content Hex:\n", tmp_buf, c2h_cmd_len); + _rtl8812ae_c2h_content_parsing(hw, c2h_cmd_id, c2h_cmd_len, tmp_buf); +} + + --- linux-3.13.0.orig/drivers/staging/rtl8821ae/rtl8821ae/fw.h +++ linux-3.13.0/drivers/staging/rtl8821ae/rtl8821ae/fw.h @@ -0,0 +1,321 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * Larry Finger + * + *****************************************************************************/ + +#ifndef __RTL8821AE__FW__H__ +#define __RTL8821AE__FW__H__ + +#define FW_8821AE_SIZE 0x8000 +#define FW_8821AE_START_ADDRESS 0x1000 +#define FW_8821AE_END_ADDRESS 0x5FFF +#define FW_8821AE_PAGE_SIZE 4096 +#define FW_8821AE_POLLING_DELAY 5 +#define FW_8821AE_POLLING_TIMEOUT_COUNT 6000 + +#define IS_FW_HEADER_EXIST_8812(_pfwhdr) \ + ((_pfwhdr->signature&0xFFF0) == 0x9500 ) + +#define IS_FW_HEADER_EXIST_8821(_pfwhdr) \ + ((_pfwhdr->signature&0xFFF0) == 0x2100 ) + +#define USE_OLD_WOWLAN_DEBUG_FW 0 + +#define H2C_8821AE_RSVDPAGE_LOC_LEN 5 +#define H2C_8821AE_PWEMODE_LENGTH 5 +#define H2C_8821AE_JOINBSSRPT_LENGTH 1 +#define H2C_8821AE_AP_OFFLOAD_LENGTH 3 +#define H2C_8821AE_WOWLAN_LENGTH 3 +#define H2C_8821AE_KEEP_ALIVE_CTRL_LENGTH 3 +#if(USE_OLD_WOWLAN_DEBUG_FW == 0) +#define H2C_8821AE_REMOTE_WAKE_CTRL_LEN 1 +#else +#define H2C_8821AE_REMOTE_WAKE_CTRL_LEN 3 +#endif +#define H2C_8821AE_AOAC_GLOBAL_INFO_LEN 2 +#define H2C_8821AE_AOAC_RSVDPAGE_LOC_LEN 7 + + +/* Fw PS state for RPWM. +*BIT[2:0] = HW state +*BIT[3] = Protocol PS state, 1: register active state , 0: register sleep state +*BIT[4] = sub-state +*/ +#define FW_PS_GO_ON BIT(0) +#define FW_PS_TX_NULL BIT(1) +#define FW_PS_RF_ON BIT(2) +#define FW_PS_REGISTER_ACTIVE BIT(3) + +#define FW_PS_DPS BIT(0) +#define FW_PS_LCLK (FW_PS_DPS) +#define FW_PS_RF_OFF BIT(1) +#define FW_PS_ALL_ON BIT(2) +#define FW_PS_ST_ACTIVE BIT(3) +#define FW_PS_ISR_ENABLE BIT(4) +#define FW_PS_IMR_ENABLE BIT(5) + + +#define FW_PS_ACK BIT(6) +#define FW_PS_TOGGLE BIT(7) + + /* 8821AE RPWM value*/ + /* BIT[0] = 1: 32k, 0: 40M*/ +#define FW_PS_CLOCK_OFF BIT(0) /* 32k*/ +#define FW_PS_CLOCK_ON 0 /*40M*/ + +#define FW_PS_STATE_MASK (0x0F) +#define FW_PS_STATE_HW_MASK (0x07) +#define FW_PS_STATE_INT_MASK (0x3F) /*ISR_ENABLE, IMR_ENABLE, and PS mode should be inherited.*/ + +#define FW_PS_STATE(x) (FW_PS_STATE_MASK & (x)) +#define FW_PS_STATE_HW(x) (FW_PS_STATE_HW_MASK & (x)) +#define FW_PS_STATE_INT(x) (FW_PS_STATE_INT_MASK & (x)) +#define FW_PS_ISR_VAL(x) ((x) & 0x70) +#define FW_PS_IMR_MASK(x) ((x) & 0xDF) +#define FW_PS_KEEP_IMR(x) ((x) & 0x20) + + +#define FW_PS_STATE_S0 (FW_PS_DPS) +#define FW_PS_STATE_S1 (FW_PS_LCLK) +#define FW_PS_STATE_S2 (FW_PS_RF_OFF) +#define FW_PS_STATE_S3 (FW_PS_ALL_ON) +#define FW_PS_STATE_S4 ((FW_PS_ST_ACTIVE) | (FW_PS_ALL_ON)) + +#define FW_PS_STATE_ALL_ON_8821AE (FW_PS_CLOCK_ON) /* ((FW_PS_RF_ON) | (FW_PS_REGISTER_ACTIVE))*/ +#define FW_PS_STATE_RF_ON_8821AE (FW_PS_CLOCK_ON) /* (FW_PS_RF_ON)*/ +#define FW_PS_STATE_RF_OFF_8821AE (FW_PS_CLOCK_ON) /* 0x0*/ +#define FW_PS_STATE_RF_OFF_LOW_PWR_8821AE (FW_PS_CLOCK_OFF) /* (FW_PS_STATE_RF_OFF)*/ + +#define FW_PS_STATE_ALL_ON_92C (FW_PS_STATE_S4) +#define FW_PS_STATE_RF_ON_92C (FW_PS_STATE_S3) +#define FW_PS_STATE_RF_OFF_92C (FW_PS_STATE_S2) +#define FW_PS_STATE_RF_OFF_LOW_PWR_92C (FW_PS_STATE_S1) + + +/* For 8821AE H2C PwrMode Cmd ID 5.*/ +#define FW_PWR_STATE_ACTIVE ((FW_PS_RF_ON) | (FW_PS_REGISTER_ACTIVE)) +#define FW_PWR_STATE_RF_OFF 0 + +#define FW_PS_IS_ACK(x) ((x) & FW_PS_ACK ) +#define FW_PS_IS_CLK_ON(x) ((x) & (FW_PS_RF_OFF |FW_PS_ALL_ON )) +#define FW_PS_IS_RF_ON(x) ((x) & (FW_PS_ALL_ON)) +#define FW_PS_IS_ACTIVE(x) ((x) & (FW_PS_ST_ACTIVE)) +#define FW_PS_IS_CPWM_INT(x) ((x) & 0x40) + +#define FW_CLR_PS_STATE(x) ((x) = ((x) & (0xF0))) + +#define IS_IN_LOW_POWER_STATE_8821AE(FwPSState) \ + (FW_PS_STATE(FwPSState) == FW_PS_CLOCK_OFF) + +#define FW_PWR_STATE_ACTIVE ((FW_PS_RF_ON) | (FW_PS_REGISTER_ACTIVE)) +#define FW_PWR_STATE_RF_OFF 0 + +struct rtl8821a_firmware_header { + u16 signature; + u8 category; + u8 function; + u16 version; + u8 subversion; + u8 rsvd1; + u8 month; + u8 date; + u8 hour; + u8 minute; + u16 ramcodeSize; + u16 rsvd2; + u32 svnindex; + u32 rsvd3; + u32 rsvd4; + u32 rsvd5; +}; + +enum rtl8812_c2h_evt{ + C2H_8812_DBG = 0, + C2H_8812_LB = 1, + C2H_8812_TXBF = 2, + C2H_8812_TX_REPORT = 3, + C2H_8812_BT_INFO = 9, + C2H_8812_BT_MP = 11, + C2H_8812_RA_RPT=12, + + C2H_8812_FW_SWCHNL = 0x10, + C2H_8812_IQK_FINISH = 0x11, + MAX_8812_C2HEVENT +}; + +enum rtl8821a_h2c_cmd { + H2C_8821AE_RSVDPAGE = 0, + H2C_8821AE_JOINBSSRPT = 1, + H2C_8821AE_SCAN = 2, + H2C_8821AE_KEEP_ALIVE_CTRL = 3, + H2C_8821AE_DISCONNECT_DECISION = 4, +#if(USE_OLD_WOWLAN_DEBUG_FW == 1) + H2C_8821AE_WO_WLAN = 5, +#endif + H2C_8821AE_INIT_OFFLOAD = 6, +#if(USE_OLD_WOWLAN_DEBUG_FW == 1) + H2C_8821AE_REMOTE_WAKE_CTRL = 7, +#endif + H2C_8821AE_AP_OFFLOAD = 8, + H2C_8821AE_BCN_RSVDPAGE = 9, + H2C_8821AE_PROBERSP_RSVDPAGE = 10, + + H2C_8821AE_SETPWRMODE = 0x20, + H2C_8821AE_PS_TUNING_PARA = 0x21, + H2C_8821AE_PS_TUNING_PARA2 = 0x22, + H2C_8821AE_PS_LPS_PARA = 0x23, + H2C_8821AE_P2P_PS_OFFLOAD = 024, + +#if(USE_OLD_WOWLAN_DEBUG_FW == 0) + H2C_8821AE_WO_WLAN = 0x80, + H2C_8821AE_REMOTE_WAKE_CTRL = 0x81, + H2C_8821AE_AOAC_GLOBAL_INFO = 0x82, + H2C_8821AE_AOAC_RSVDPAGE = 0x83, +#endif + H2C_RSSI_REPORT = 0x42, + H2C_8821AE_RA_MASK = 0x40, + H2C_8821AE_SELECTIVE_SUSPEND_ROF_CMD, + H2C_8821AE_P2P_PS_MODE, + H2C_8821AE_PSD_RESULT, + /*Not defined CTW CMD for P2P yet*/ + H2C_8821AE_P2P_PS_CTW_CMD, + MAX_8821AE_H2CCMD +}; + +#define pagenum_128(_len) (u32)(((_len)>>7) + ((_len)&0x7F ? 1:0)) + +#define SET_8821AE_H2CCMD_WOWLAN_FUNC_ENABLE(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 1, __Value) +#define SET_8821AE_H2CCMD_WOWLAN_PATTERN_MATCH_ENABLE(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE(__pH2CCmd, 1, 1, __Value) +#define SET_8821AE_H2CCMD_WOWLAN_MAGIC_PKT_ENABLE(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE(__pH2CCmd, 2, 1, __Value) +#define SET_8821AE_H2CCMD_WOWLAN_UNICAST_PKT_ENABLE(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE(__pH2CCmd, 3, 1, __Value) +#define SET_8821AE_H2CCMD_WOWLAN_ALL_PKT_DROP(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE(__pH2CCmd, 4, 1, __Value) +#define SET_8821AE_H2CCMD_WOWLAN_GPIO_ACTIVE(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE(__pH2CCmd, 5, 1, __Value) +#define SET_8821AE_H2CCMD_WOWLAN_REKEY_WAKE_UP(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE(__pH2CCmd, 6, 1, __Value) +#define SET_8821AE_H2CCMD_WOWLAN_DISCONNECT_WAKE_UP(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE(__pH2CCmd, 7, 1, __Value) +#define SET_8821AE_H2CCMD_WOWLAN_GPIONUM(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 0, 8, __Value) +#define SET_8821AE_H2CCMD_WOWLAN_GPIO_DURATION(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE((__pH2CCmd)+2, 0, 8, __Value) + + +#define SET_H2CCMD_PWRMODE_PARM_MODE(__ph2ccmd, __val) \ + SET_BITS_TO_LE_1BYTE(__ph2ccmd, 0, 8, __val) +#define SET_H2CCMD_PWRMODE_PARM_RLBM(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 0, 4, __Value) +#define SET_H2CCMD_PWRMODE_PARM_SMART_PS(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 4, 4, __Value) +#define SET_H2CCMD_PWRMODE_PARM_AWAKE_INTERVAL(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE((__pH2CCmd)+2, 0, 8, __Value) +#define SET_H2CCMD_PWRMODE_PARM_ALL_QUEUE_UAPSD(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE((__pH2CCmd)+3, 0, 8, __Value) +#define SET_H2CCMD_PWRMODE_PARM_PWR_STATE(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE((__pH2CCmd)+4, 0, 8, __Value) +#define GET_8821AE_H2CCMD_PWRMODE_PARM_MODE(__pH2CCmd) \ + LE_BITS_TO_1BYTE(__pH2CCmd, 0, 8) + +#define SET_H2CCMD_JOINBSSRPT_PARM_OPMODE(__ph2ccmd, __val) \ + SET_BITS_TO_LE_1BYTE(__ph2ccmd, 0, 8, __val) +#define SET_H2CCMD_RSVDPAGE_LOC_PROBE_RSP(__ph2ccmd, __val) \ + SET_BITS_TO_LE_1BYTE(__ph2ccmd, 0, 8, __val) +#define SET_H2CCMD_RSVDPAGE_LOC_PSPOLL(__ph2ccmd, __val) \ + SET_BITS_TO_LE_1BYTE((__ph2ccmd)+1, 0, 8, __val) +#define SET_H2CCMD_RSVDPAGE_LOC_NULL_DATA(__ph2ccmd, __val) \ + SET_BITS_TO_LE_1BYTE((__ph2ccmd)+2, 0, 8, __val) + +/* AP_OFFLOAD */ +#define SET_H2CCMD_AP_OFFLOAD_ON(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 8, __Value) +#define SET_H2CCMD_AP_OFFLOAD_HIDDEN(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 0, 8, __Value) +#define SET_H2CCMD_AP_OFFLOAD_DENYANY(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE((__pH2CCmd)+2, 0, 8, __Value) +#define SET_H2CCMD_AP_OFFLOAD_WAKEUP_EVT_RPT(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE((__pH2CCmd)+3, 0, 8, __Value) + +/* Keep Alive Control*/ +#define SET_8821AE_H2CCMD_KEEP_ALIVE_ENABLE(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 1, __Value) +#define SET_8821AE_H2CCMD_KEEP_ALIVE_ACCPEPT_USER_DEFINED(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE(__pH2CCmd, 1, 1, __Value) +#define SET_8821AE_H2CCMD_KEEP_ALIVE_PERIOD(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 0, 8, __Value) + +/*REMOTE_WAKE_CTRL */ +#define SET_8821AE_H2CCMD_REMOTE_WAKE_CTRL_EN(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 1, __Value) +#if(USE_OLD_WOWLAN_DEBUG_FW == 0) +#define SET_8821AE_H2CCMD_REMOTE_WAKE_CTRL_ARP_OFFLOAD_EN(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE(__pH2CCmd, 1, 1, __Value) +#define SET_8821AE_H2CCMD_REMOTE_WAKE_CTRL_NDP_OFFLOAD_EN(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE(__pH2CCmd, 2, 1, __Value) +#define SET_8821AE_H2CCMD_REMOTE_WAKE_CTRL_GTK_OFFLOAD_EN(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE(__pH2CCmd, 3, 1, __Value) +#else +#define SET_8821AE_H2CCMD_REMOTE_WAKE_CTRL_PAIRWISE_ENC_ALG(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 0, 8, __Value) +#define SET_8821AE_H2CCMD_REMOTE_WAKE_CTRL_GROUP_ENC_ALG(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE((__pH2CCmd)+2, 0, 8, __Value) +#endif + +/* GTK_OFFLOAD */ +#define SET_8821AE_H2CCMD_AOAC_GLOBAL_INFO_PAIRWISE_ENC_ALG(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 8, __Value) +#define SET_8821AE_H2CCMD_AOAC_GLOBAL_INFO_GROUP_ENC_ALG(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 0, 8, __Value) + +/* AOAC_RSVDPAGE_LOC */ +#define SET_8821AE_H2CCMD_AOAC_RSVDPAGE_LOC_REMOTE_WAKE_CTRL_INFO(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE((__pH2CCmd), 0, 8, __Value) +#define SET_8821AE_H2CCMD_AOAC_RSVDPAGE_LOC_ARP_RSP(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 0, 8, __Value) +#define SET_8821AE_H2CCMD_AOAC_RSVDPAGE_LOC_NEIGHBOR_ADV(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE((__pH2CCmd)+2, 0, 8, __Value) +#define SET_8821AE_H2CCMD_AOAC_RSVDPAGE_LOC_GTK_RSP(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE((__pH2CCmd)+3, 0, 8, __Value) +#define SET_8821AE_H2CCMD_AOAC_RSVDPAGE_LOC_GTK_INFO(__pH2CCmd, __Value) \ + SET_BITS_TO_LE_1BYTE((__pH2CCmd)+4, 0, 8, __Value) + +int rtl8821ae_download_fw(struct ieee80211_hw *hw, + bool buse_wake_on_wlan_fw); +void rtl8821ae_fill_h2c_cmd(struct ieee80211_hw *hw, u8 element_id, + u32 cmd_len, u8 *p_cmdbuffer); +void rtl8821ae_firmware_selfreset(struct ieee80211_hw *hw); +void rtl8821ae_set_fw_pwrmode_cmd(struct ieee80211_hw *hw, u8 mode); +void rtl8821ae_set_fw_joinbss_report_cmd(struct ieee80211_hw *hw, u8 mstatus); +void rtl8821ae_set_fw_ap_off_load_cmd(struct ieee80211_hw *hw, u8 ap_offload_enable); +void rtl8821ae_set_fw_rsvdpagepkt(struct ieee80211_hw *hw, bool b_dl_finished); +void rtl8812ae_set_fw_rsvdpagepkt(struct ieee80211_hw *hw, bool b_dl_finished); +void rtl8821ae_set_p2p_ps_offload_cmd(struct ieee80211_hw *hw, u8 p2p_ps_state); +void rtl8812ae_c2h_packet_handler(struct ieee80211_hw *hw, u8 *buffer, u8 length); +#endif --- linux-3.13.0.orig/drivers/staging/rtl8821ae/rtl8821ae/hal_bt_coexist.c +++ linux-3.13.0/drivers/staging/rtl8821ae/rtl8821ae/hal_bt_coexist.c @@ -0,0 +1,519 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#include "hal_bt_coexist.h" +#include "../pci.h" +#include "dm.h" +#include "fw.h" +#include "phy.h" +#include "reg.h" +#include "hal_btc.h" + +static bool bt_operation_on = false; + +void rtl8821ae_dm_bt_reject_ap_aggregated_packet(struct ieee80211_hw *hw, bool b_reject) +{ +#if 0 + struct rtl_priv rtlpriv = rtl_priv(hw); + PRX_TS_RECORD pRxTs = NULL; + + if(b_reject){ + // Do not allow receiving A-MPDU aggregation. + if (rtlpriv->mac80211.vendor == PEER_CISCO) { + if (pHTInfo->bAcceptAddbaReq) { + RTPRINT(FBT, BT_TRACE, ("BT_Disallow AMPDU \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 (!pHTInfo->bAcceptAddbaReq) { + RTPRINT(FBT, BT_TRACE, ("BT_Allow AMPDU BT Idle\n")); + pHTInfo->bAcceptAddbaReq = TRUE; + } + } + } else { + if(rtlpriv->mac80211.vendor == PEER_CISCO) { + if (!pHTInfo->bAcceptAddbaReq) { + RTPRINT(FBT, BT_TRACE, ("BT_Allow AMPDU \n")); + pHTInfo->bAcceptAddbaReq = TRUE; + } + } + } +#endif +} + +void _rtl8821ae_dm_bt_check_wifi_state(struct ieee80211_hw *hw) +{ +struct rtl_priv *rtlpriv = rtl_priv(hw); +struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); +struct rtl_phy *rtlphy = &(rtlpriv->phy); + +if (rtlpriv->link_info.b_busytraffic) { + rtlpcipriv->btcoexist.current_state &= ~BT_COEX_STATE_WIFI_IDLE; + + if(rtlpriv->link_info.b_tx_busy_traffic) { + rtlpcipriv->btcoexist.current_state |= BT_COEX_STATE_WIFI_UPLINK; + } else { + rtlpcipriv->btcoexist.current_state &= ~BT_COEX_STATE_WIFI_UPLINK; + } + + if(rtlpriv->link_info.b_rx_busy_traffic) { + rtlpcipriv->btcoexist.current_state |= BT_COEX_STATE_WIFI_DOWNLINK; + } else { + rtlpcipriv->btcoexist.current_state &= ~BT_COEX_STATE_WIFI_DOWNLINK; + } +} else { + rtlpcipriv->btcoexist.current_state |= BT_COEX_STATE_WIFI_IDLE; + rtlpcipriv->btcoexist.current_state &= ~BT_COEX_STATE_WIFI_UPLINK; + rtlpcipriv->btcoexist.current_state &= ~BT_COEX_STATE_WIFI_DOWNLINK; +} + +if (rtlpriv->mac80211.mode == WIRELESS_MODE_G + || rtlpriv->mac80211.mode == WIRELESS_MODE_B) { + rtlpcipriv->btcoexist.current_state |= BT_COEX_STATE_WIFI_LEGACY; + rtlpcipriv->btcoexist.current_state &= ~BT_COEX_STATE_WIFI_HT20; + rtlpcipriv->btcoexist.current_state &= ~BT_COEX_STATE_WIFI_HT40; +} else { + rtlpcipriv->btcoexist.current_state &= ~BT_COEX_STATE_WIFI_LEGACY; + if(rtlphy->current_chan_bw == HT_CHANNEL_WIDTH_20_40) { + rtlpcipriv->btcoexist.current_state |= BT_COEX_STATE_WIFI_HT40; + rtlpcipriv->btcoexist.current_state &= ~BT_COEX_STATE_WIFI_HT20; + } else { + rtlpcipriv->btcoexist.current_state |= BT_COEX_STATE_WIFI_HT20; + rtlpcipriv->btcoexist.current_state &= ~BT_COEX_STATE_WIFI_HT40; + } +} + +if (bt_operation_on) { + rtlpcipriv->btcoexist.current_state |= BT_COEX_STATE_BT30; +} else { + rtlpcipriv->btcoexist.current_state &= ~BT_COEX_STATE_BT30; +} +} + + +u8 rtl8821ae_dm_bt_check_coex_rssi_state1(struct ieee80211_hw *hw, + u8 level_num, u8 rssi_thresh, u8 rssi_thresh1) + +{ + struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); + struct rtl_priv *rtlpriv = rtl_priv(hw); + long undecoratedsmoothed_pwdb = 0; + u8 bt_rssi_state = 0; + + undecoratedsmoothed_pwdb = rtl8821ae_dm_bt_get_rx_ss(hw); + + if(level_num == 2) { + rtlpcipriv->btcoexist.current_state &= ~BT_COEX_STATE_WIFI_RSSI_1_MEDIUM; + + if( (rtlpcipriv->btcoexist.bt_pre_rssi_state == BT_RSSI_STATE_LOW) || + (rtlpcipriv->btcoexist.bt_pre_rssi_state == BT_RSSI_STATE_STAY_LOW)) { + if(undecoratedsmoothed_pwdb >= (rssi_thresh + BT_FW_COEX_THRESH_TOL)) { + bt_rssi_state = BT_RSSI_STATE_HIGH; + rtlpcipriv->btcoexist.current_state |= BT_COEX_STATE_WIFI_RSSI_1_HIGH; + rtlpcipriv->btcoexist.current_state &= ~BT_COEX_STATE_WIFI_RSSI_1_LOW; + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("[DM][BT], RSSI_1 state switch to High\n")); + } else { + bt_rssi_state = BT_RSSI_STATE_STAY_LOW; + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("[DM][BT], RSSI_1 state stay at Low\n")); + } + } else { + if(undecoratedsmoothed_pwdb < rssi_thresh) { + bt_rssi_state = BT_RSSI_STATE_LOW; + rtlpcipriv->btcoexist.current_state |= BT_COEX_STATE_WIFI_RSSI_1_LOW; + rtlpcipriv->btcoexist.current_state &= ~BT_COEX_STATE_WIFI_RSSI_1_HIGH; + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("[DM][BT], RSSI_1 state switch to Low\n")); + } else { + bt_rssi_state = BT_RSSI_STATE_STAY_HIGH; + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("[DM][BT], RSSI_1 state stay at High\n")); + } + } + } else if(level_num == 3) { + if(rssi_thresh > rssi_thresh1) { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("[DM][BT], RSSI_1 thresh error!!\n")); + return rtlpcipriv->btcoexist.bt_pre_rssi_state; + } + + if( (rtlpcipriv->btcoexist.bt_pre_rssi_state == BT_RSSI_STATE_LOW) || + (rtlpcipriv->btcoexist.bt_pre_rssi_state == BT_RSSI_STATE_STAY_LOW)) { + if(undecoratedsmoothed_pwdb >= (rssi_thresh+BT_FW_COEX_THRESH_TOL)) { + bt_rssi_state = BT_RSSI_STATE_MEDIUM; + rtlpcipriv->btcoexist.current_state |= BT_COEX_STATE_WIFI_RSSI_1_MEDIUM; + rtlpcipriv->btcoexist.current_state &= ~BT_COEX_STATE_WIFI_RSSI_1_LOW; + rtlpcipriv->btcoexist.current_state &= ~BT_COEX_STATE_WIFI_RSSI_1_HIGH; + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("[DM][BT], RSSI_1 state switch to Medium\n")); + } else { + bt_rssi_state = BT_RSSI_STATE_STAY_LOW; + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("[DM][BT], RSSI_1 state stay at Low\n")); + } + } else if( (rtlpcipriv->btcoexist.bt_pre_rssi_state == BT_RSSI_STATE_MEDIUM) || + (rtlpcipriv->btcoexist.bt_pre_rssi_state == BT_RSSI_STATE_STAY_MEDIUM)) { + if(undecoratedsmoothed_pwdb >= (rssi_thresh1 + BT_FW_COEX_THRESH_TOL)) { + bt_rssi_state = BT_RSSI_STATE_HIGH; + rtlpcipriv->btcoexist.current_state |= BT_COEX_STATE_WIFI_RSSI_1_HIGH; + rtlpcipriv->btcoexist.current_state &= ~BT_COEX_STATE_WIFI_RSSI_1_LOW; + rtlpcipriv->btcoexist.current_state &= ~BT_COEX_STATE_WIFI_RSSI_1_MEDIUM; + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("[DM][BT], RSSI_1 state switch to High\n")); + } else if(undecoratedsmoothed_pwdb < rssi_thresh) { + bt_rssi_state = BT_RSSI_STATE_LOW; + rtlpcipriv->btcoexist.current_state |= BT_COEX_STATE_WIFI_RSSI_1_LOW; + rtlpcipriv->btcoexist.current_state &= ~BT_COEX_STATE_WIFI_RSSI_1_HIGH; + rtlpcipriv->btcoexist.current_state &= ~BT_COEX_STATE_WIFI_RSSI_1_MEDIUM; + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("[DM][BT], RSSI_1 state switch to Low\n")); + } else { + bt_rssi_state = BT_RSSI_STATE_STAY_MEDIUM; + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("[DM][BT], RSSI_1 state stay at Medium\n")); + } + } else { + if(undecoratedsmoothed_pwdb < rssi_thresh1) { + bt_rssi_state = BT_RSSI_STATE_MEDIUM; + rtlpcipriv->btcoexist.current_state |= BT_COEX_STATE_WIFI_RSSI_1_MEDIUM; + rtlpcipriv->btcoexist.current_state &= ~BT_COEX_STATE_WIFI_RSSI_1_HIGH; + rtlpcipriv->btcoexist.current_state &= ~BT_COEX_STATE_WIFI_RSSI_1_LOW; + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE,("[DM][BT], RSSI_1 state switch to Medium\n")); + } else { + bt_rssi_state = BT_RSSI_STATE_STAY_HIGH; + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("[DM][BT], RSSI_1 state stay at High\n")); + } + } + } + + rtlpcipriv->btcoexist.bt_pre_rssi_state1 = bt_rssi_state; + + return bt_rssi_state; +} + +u8 rtl8821ae_dm_bt_check_coex_rssi_state(struct ieee80211_hw *hw, + u8 level_num, u8 rssi_thresh, u8 rssi_thresh1) +{ + struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); + struct rtl_priv *rtlpriv = rtl_priv(hw); + long undecoratedsmoothed_pwdb = 0; + u8 bt_rssi_state = 0; + + undecoratedsmoothed_pwdb = rtl8821ae_dm_bt_get_rx_ss(hw); + + if (level_num == 2) { + rtlpcipriv->btcoexist.current_state &= ~BT_COEX_STATE_WIFI_RSSI_MEDIUM; + + if ((rtlpcipriv->btcoexist.bt_pre_rssi_state == BT_RSSI_STATE_LOW) || + (rtlpcipriv->btcoexist.bt_pre_rssi_state == BT_RSSI_STATE_STAY_LOW)){ + if (undecoratedsmoothed_pwdb + >= (rssi_thresh + BT_FW_COEX_THRESH_TOL)) { + bt_rssi_state = BT_RSSI_STATE_HIGH; + rtlpcipriv->btcoexist.current_state + |= BT_COEX_STATE_WIFI_RSSI_HIGH; + rtlpcipriv->btcoexist.current_state + &= ~BT_COEX_STATE_WIFI_RSSI_LOW; + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("[DM][BT], RSSI state switch to High\n")); + } else { + bt_rssi_state = BT_RSSI_STATE_STAY_LOW; + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("[DM][BT], RSSI state stay at Low\n")); + } + } else { + if (undecoratedsmoothed_pwdb < rssi_thresh) { + bt_rssi_state = BT_RSSI_STATE_LOW; + rtlpcipriv->btcoexist.current_state + |= BT_COEX_STATE_WIFI_RSSI_LOW; + rtlpcipriv->btcoexist.current_state + &= ~BT_COEX_STATE_WIFI_RSSI_HIGH; + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("[DM][BT], RSSI state switch to Low\n")); + } else { + bt_rssi_state = BT_RSSI_STATE_STAY_HIGH; + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("[DM][BT], RSSI state stay at High\n")); + } + } + } + else if (level_num == 3) { + if (rssi_thresh > rssi_thresh1) { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("[DM][BT], RSSI thresh error!!\n")); + return rtlpcipriv->btcoexist.bt_pre_rssi_state; + } + if ((rtlpcipriv->btcoexist.bt_pre_rssi_state == BT_RSSI_STATE_LOW) || + (rtlpcipriv->btcoexist.bt_pre_rssi_state == BT_RSSI_STATE_STAY_LOW)) { + if(undecoratedsmoothed_pwdb + >= (rssi_thresh + BT_FW_COEX_THRESH_TOL)) { + bt_rssi_state = BT_RSSI_STATE_MEDIUM; + rtlpcipriv->btcoexist.current_state + |= BT_COEX_STATE_WIFI_RSSI_MEDIUM; + rtlpcipriv->btcoexist.current_state + &= ~BT_COEX_STATE_WIFI_RSSI_LOW; + rtlpcipriv->btcoexist.current_state + &= ~BT_COEX_STATE_WIFI_RSSI_HIGH; + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("[DM][BT], RSSI state switch to Medium\n")); + } else { + bt_rssi_state = BT_RSSI_STATE_STAY_LOW; + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("[DM][BT], RSSI state stay at Low\n")); + } + } else if ((rtlpcipriv->btcoexist.bt_pre_rssi_state == BT_RSSI_STATE_MEDIUM) || + (rtlpcipriv->btcoexist.bt_pre_rssi_state == BT_RSSI_STATE_STAY_MEDIUM)) { + if (undecoratedsmoothed_pwdb + >= (rssi_thresh1 + BT_FW_COEX_THRESH_TOL)) { + bt_rssi_state = BT_RSSI_STATE_HIGH; + rtlpcipriv->btcoexist.current_state + |= BT_COEX_STATE_WIFI_RSSI_HIGH; + rtlpcipriv->btcoexist.current_state + &= ~BT_COEX_STATE_WIFI_RSSI_LOW; + rtlpcipriv->btcoexist.current_state + &= ~BT_COEX_STATE_WIFI_RSSI_MEDIUM; + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("[DM][BT], RSSI state switch to High\n")); + } else if(undecoratedsmoothed_pwdb < rssi_thresh) + { + bt_rssi_state = BT_RSSI_STATE_LOW; + rtlpcipriv->btcoexist.current_state + |= BT_COEX_STATE_WIFI_RSSI_LOW; + rtlpcipriv->btcoexist.current_state + &= ~BT_COEX_STATE_WIFI_RSSI_HIGH; + rtlpcipriv->btcoexist.current_state + &= ~BT_COEX_STATE_WIFI_RSSI_MEDIUM; + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("[DM][BT], RSSI state switch to Low\n")); + } else { + bt_rssi_state = BT_RSSI_STATE_STAY_MEDIUM; + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("[DM][BT], RSSI state stay at Medium\n")); + } + } else { + if(undecoratedsmoothed_pwdb < rssi_thresh1) { + bt_rssi_state = BT_RSSI_STATE_MEDIUM; + rtlpcipriv->btcoexist.current_state + |= BT_COEX_STATE_WIFI_RSSI_MEDIUM; + rtlpcipriv->btcoexist.current_state + &= ~BT_COEX_STATE_WIFI_RSSI_HIGH; + rtlpcipriv->btcoexist.current_state + &= ~BT_COEX_STATE_WIFI_RSSI_LOW; + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("[DM][BT], RSSI state switch to Medium\n")); + } else { + bt_rssi_state = BT_RSSI_STATE_STAY_HIGH; + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("[DM][BT], RSSI state stay at High\n")); + } + } + } + + rtlpcipriv->btcoexist.bt_pre_rssi_state = bt_rssi_state; + return bt_rssi_state; +} +long rtl8821ae_dm_bt_get_rx_ss(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + long undecoratedsmoothed_pwdb = 0; + + if (rtlpriv->mac80211.link_state >= MAC80211_LINKED) { + undecoratedsmoothed_pwdb = GET_UNDECORATED_AVERAGE_RSSI(rtlpriv); + } else { + undecoratedsmoothed_pwdb + = rtlpriv->dm.entry_min_undecoratedsmoothed_pwdb; + } + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("rtl8821ae_dm_bt_get_rx_ss() = %ld\n", undecoratedsmoothed_pwdb)); + + return undecoratedsmoothed_pwdb; +} + +void rtl8821ae_dm_bt_balance(struct ieee80211_hw *hw, + bool b_balance_on, u8 ms0, u8 ms1) +{ + struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 h2c_parameter[3] ={0}; + + if (b_balance_on) { + h2c_parameter[2] = 1; + h2c_parameter[1] = ms1; + h2c_parameter[0] = ms0; + rtlpcipriv->btcoexist.b_fw_coexist_all_off = false; + } else { + h2c_parameter[2] = 0; + h2c_parameter[1] = 0; + h2c_parameter[0] = 0; + } + rtlpcipriv->btcoexist.b_balance_on = b_balance_on; + + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("[DM][BT], Balance=[%s:%dms:%dms], write 0xc=0x%x\n", + b_balance_on?"ON":"OFF", ms0, ms1, + h2c_parameter[0]<<16 | h2c_parameter[1]<<8 | h2c_parameter[2])); + + rtl8821ae_fill_h2c_cmd(hw, 0xc, 3, h2c_parameter); +} + + +void rtl8821ae_dm_bt_agc_table(struct ieee80211_hw *hw, u8 type) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); + + if (type == BT_AGCTABLE_OFF) { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("[BT]AGCTable Off!\n")); + rtl_write_dword(rtlpriv, 0xc78,0x641c0001); + rtl_write_dword(rtlpriv, 0xc78,0x631d0001); + rtl_write_dword(rtlpriv, 0xc78,0x621e0001); + rtl_write_dword(rtlpriv, 0xc78,0x611f0001); + rtl_write_dword(rtlpriv, 0xc78,0x60200001); + + rtl8821ae_phy_set_rf_reg(hw, RF90_PATH_A, + RF_RX_AGC_HP, 0xfffff, 0x32000); + rtl8821ae_phy_set_rf_reg(hw, RF90_PATH_A, + RF_RX_AGC_HP, 0xfffff, 0x71000); + rtl8821ae_phy_set_rf_reg(hw, RF90_PATH_A, + RF_RX_AGC_HP, 0xfffff, 0xb0000); + rtl8821ae_phy_set_rf_reg(hw, RF90_PATH_A, + RF_RX_AGC_HP, 0xfffff, 0xfc000); + rtl8821ae_phy_set_rf_reg(hw, RF90_PATH_A, + RF_RX_G1, 0xfffff, 0x30355); + } else if (type == BT_AGCTABLE_ON) { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("[BT]AGCTable On!\n")); + rtl_write_dword(rtlpriv, 0xc78,0x4e1c0001); + rtl_write_dword(rtlpriv, 0xc78,0x4d1d0001); + rtl_write_dword(rtlpriv, 0xc78,0x4c1e0001); + rtl_write_dword(rtlpriv, 0xc78,0x4b1f0001); + rtl_write_dword(rtlpriv, 0xc78,0x4a200001); + + rtl8821ae_phy_set_rf_reg(hw, RF90_PATH_A, + RF_RX_AGC_HP, 0xfffff, 0xdc000); + rtl8821ae_phy_set_rf_reg(hw, RF90_PATH_A, + RF_RX_AGC_HP, 0xfffff, 0x90000); + rtl8821ae_phy_set_rf_reg(hw, RF90_PATH_A, + RF_RX_AGC_HP, 0xfffff, 0x51000); + rtl8821ae_phy_set_rf_reg(hw, RF90_PATH_A, + RF_RX_AGC_HP, 0xfffff, 0x12000); + rtl8821ae_phy_set_rf_reg(hw, RF90_PATH_A, + RF_RX_G1, 0xfffff, 0x00355); + + rtlpcipriv->btcoexist.b_sw_coexist_all_off = false; + } +} + +void rtl8821ae_dm_bt_bb_back_off_level(struct ieee80211_hw *hw, u8 type) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); + + if (type == BT_BB_BACKOFF_OFF) { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("[BT]BBBackOffLevel Off!\n")); + rtl_write_dword(rtlpriv, 0xc04,0x3a05611); + } else if (type == BT_BB_BACKOFF_ON) { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("[BT]BBBackOffLevel On!\n")); + rtl_write_dword(rtlpriv, 0xc04,0x3a07611); + rtlpcipriv->btcoexist.b_sw_coexist_all_off = false; + } +} + +void rtl8821ae_dm_bt_fw_coex_all_off(struct ieee80211_hw *hw) +{ + struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); + struct rtl_priv *rtlpriv = rtl_priv(hw); + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("rtl8821ae_dm_bt_fw_coex_all_off()\n")); + + if(rtlpcipriv->btcoexist.b_fw_coexist_all_off) + return; + + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("rtl8821ae_dm_bt_fw_coex_all_off(), real Do\n")); + rtl8821ae_dm_bt_fw_coex_all_off_8723a(hw); + rtlpcipriv->btcoexist.b_fw_coexist_all_off = true; +} + +void rtl8821ae_dm_bt_sw_coex_all_off(struct ieee80211_hw *hw) +{ + struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); + struct rtl_priv *rtlpriv = rtl_priv(hw); + + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("rtl8821ae_dm_bt_sw_coex_all_off()\n")); + + if(rtlpcipriv->btcoexist.b_sw_coexist_all_off) + return; + + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("rtl8821ae_dm_bt_sw_coex_all_off(), real Do\n")); + rtl8821ae_dm_bt_sw_coex_all_off_8723a(hw); + rtlpcipriv->btcoexist.b_sw_coexist_all_off = true; +} + +void rtl8821ae_dm_bt_hw_coex_all_off(struct ieee80211_hw *hw) +{ + struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); + struct rtl_priv *rtlpriv = rtl_priv(hw); + + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("rtl8821ae_dm_bt_hw_coex_all_off()\n")); + + if(rtlpcipriv->btcoexist.b_hw_coexist_all_off) + return; + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("rtl8821ae_dm_bt_hw_coex_all_off(), real Do\n")); + + rtl8821ae_dm_bt_hw_coex_all_off_8723a(hw); + + rtlpcipriv->btcoexist.b_hw_coexist_all_off = true; +} + +void rtl8821ae_btdm_coex_all_off(struct ieee80211_hw *hw) +{ + rtl8821ae_dm_bt_fw_coex_all_off(hw); + rtl8821ae_dm_bt_sw_coex_all_off(hw); + rtl8821ae_dm_bt_hw_coex_all_off(hw); +} + +bool rtl8821ae_dm_bt_is_coexist_state_changed(struct ieee80211_hw *hw) +{ + struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); + + if((rtlpcipriv->btcoexist.previous_state + == rtlpcipriv->btcoexist.current_state) + && (rtlpcipriv->btcoexist.previous_state_h + == rtlpcipriv->btcoexist.current_state_h)) + return false; + else + return true; +} + +bool rtl8821ae_dm_bt_is_wifi_up_link(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + if (rtlpriv->link_info.b_tx_busy_traffic) + return true; + else + return false; +} + --- linux-3.13.0.orig/drivers/staging/rtl8821ae/rtl8821ae/hal_bt_coexist.h +++ linux-3.13.0/drivers/staging/rtl8821ae/rtl8821ae/hal_bt_coexist.h @@ -0,0 +1,169 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * Larry Finger + * + *****************************************************************************/ + +#ifndef __RTL8821AE_HAL_BT_COEXIST_H__ +#define __RTL8821AE_HAL_BT_COEXIST_H__ + +#include "../wifi.h" + +/* The reg define is for 8723 */ +#define REG_HIGH_PRIORITY_TXRX 0x770 +#define REG_LOW_PRIORITY_TXRX 0x774 + +#define BT_FW_COEX_THRESH_TOL 6 +#define BT_FW_COEX_THRESH_20 20 +#define BT_FW_COEX_THRESH_23 23 +#define BT_FW_COEX_THRESH_25 25 +#define BT_FW_COEX_THRESH_30 30 +#define BT_FW_COEX_THRESH_35 35 +#define BT_FW_COEX_THRESH_40 40 +#define BT_FW_COEX_THRESH_45 45 +#define BT_FW_COEX_THRESH_47 47 +#define BT_FW_COEX_THRESH_50 50 +#define BT_FW_COEX_THRESH_55 55 + +#define BT_COEX_STATE_BT30 BIT(0) +#define BT_COEX_STATE_WIFI_HT20 BIT(1) +#define BT_COEX_STATE_WIFI_HT40 BIT(2) +#define BT_COEX_STATE_WIFI_LEGACY BIT(3) + +#define BT_COEX_STATE_WIFI_RSSI_LOW BIT(4) +#define BT_COEX_STATE_WIFI_RSSI_MEDIUM BIT(5) +#define BT_COEX_STATE_WIFI_RSSI_HIGH BIT(6) +#define BT_COEX_STATE_DEC_BT_POWER BIT(7) + +#define BT_COEX_STATE_WIFI_IDLE BIT(8) +#define BT_COEX_STATE_WIFI_UPLINK BIT(9) +#define BT_COEX_STATE_WIFI_DOWNLINK BIT(10) + +#define BT_COEX_STATE_BT_INQ_PAGE BIT(11) +#define BT_COEX_STATE_BT_IDLE BIT(12) +#define BT_COEX_STATE_BT_UPLINK BIT(13) +#define BT_COEX_STATE_BT_DOWNLINK BIT(14) + +#define BT_COEX_STATE_HOLD_FOR_BT_OPERATION BIT(15) +#define BT_COEX_STATE_BT_RSSI_LOW BIT(19) + +#define BT_COEX_STATE_PROFILE_HID BIT(20) +#define BT_COEX_STATE_PROFILE_A2DP BIT(21) +#define BT_COEX_STATE_PROFILE_PAN BIT(22) +#define BT_COEX_STATE_PROFILE_SCO BIT(23) + +#define BT_COEX_STATE_WIFI_RSSI_1_LOW BIT(24) +#define BT_COEX_STATE_WIFI_RSSI_1_MEDIUM BIT(25) +#define BT_COEX_STATE_WIFI_RSSI_1_HIGH BIT(26) + +#define BT_COEX_STATE_BTINFO_COMMON BIT(30) +#define BT_COEX_STATE_BTINFO_B_HID_SCOESCO BIT(31) +#define BT_COEX_STATE_BTINFO_B_FTP_A2DP BIT(29) + +#define BT_COEX_STATE_BT_CNT_LEVEL_0 BIT(0) +#define BT_COEX_STATE_BT_CNT_LEVEL_1 BIT(1) +#define BT_COEX_STATE_BT_CNT_LEVEL_2 BIT(2) +#define BT_COEX_STATE_BT_CNT_LEVEL_3 BIT(3) + +#define BT_RSSI_STATE_HIGH 0 +#define BT_RSSI_STATE_MEDIUM 1 +#define BT_RSSI_STATE_LOW 2 +#define BT_RSSI_STATE_STAY_HIGH 3 +#define BT_RSSI_STATE_STAY_MEDIUM 4 +#define BT_RSSI_STATE_STAY_LOW 5 + +#define BT_AGCTABLE_OFF 0 +#define BT_AGCTABLE_ON 1 +#define BT_BB_BACKOFF_OFF 0 +#define BT_BB_BACKOFF_ON 1 +#define BT_FW_NAV_OFF 0 +#define BT_FW_NAV_ON 1 + +#define BT_COEX_MECH_NONE 0 +#define BT_COEX_MECH_SCO 1 +#define BT_COEX_MECH_HID 2 +#define BT_COEX_MECH_A2DP 3 +#define BT_COEX_MECH_PAN 4 +#define BT_COEX_MECH_HID_A2DP 5 +#define BT_COEX_MECH_HID_PAN 6 +#define BT_COEX_MECH_PAN_A2DP 7 +#define BT_COEX_MECH_HID_SCO_ESCO 8 +#define BT_COEX_MECH_FTP_A2DP 9 +#define BT_COEX_MECH_COMMON 10 +#define BT_COEX_MECH_MAX 11 + +#define BT_DBG_PROFILE_NONE 0 +#define BT_DBG_PROFILE_SCO 1 +#define BT_DBG_PROFILE_HID 2 +#define BT_DBG_PROFILE_A2DP 3 +#define BT_DBG_PROFILE_PAN 4 +#define BT_DBG_PROFILE_HID_A2DP 5 +#define BT_DBG_PROFILE_HID_PAN 6 +#define BT_DBG_PROFILE_PAN_A2DP 7 +#define BT_DBG_PROFILE_MAX 9 + +#define BTINFO_B_FTP BIT(7) +#define BTINFO_B_A2DP BIT(6) +#define BTINFO_B_HID BIT(5) +#define BTINFO_B_SCO_BUSY BIT(4) +#define BTINFO_B_ACL_BUSY BIT(3) +#define BTINFO_B_INQ_PAGE BIT(2) +#define BTINFO_B_SCO_ESCO BIT(1) +#define BTINFO_B_CONNECTION BIT(0) + + +void rtl8821ae_btdm_coex_all_off(struct ieee80211_hw *hw); +void rtl8821ae_dm_bt_fw_coex_all_off(struct ieee80211_hw *hw); + +void rtl8821ae_dm_bt_sw_coex_all_off(struct ieee80211_hw *hw); +void rtl8821ae_dm_bt_hw_coex_all_off(struct ieee80211_hw *hw); +long rtl8821ae_dm_bt_get_rx_ss(struct ieee80211_hw *hw); +void rtl8821ae_dm_bt_balance(struct ieee80211_hw *hw, + bool b_balance_on, u8 ms0, u8 ms1); +void rtl8821ae_dm_bt_agc_table(struct ieee80211_hw *hw, u8 tyep); +void rtl8821ae_dm_bt_bb_back_off_level(struct ieee80211_hw *hw, u8 type); +u8 rtl8821ae_dm_bt_check_coex_rssi_state(struct ieee80211_hw *hw, + u8 level_num, u8 rssi_thresh, u8 rssi_thresh1); +u8 rtl8821ae_dm_bt_check_coex_rssi_state1(struct ieee80211_hw *hw, + u8 level_num, u8 rssi_thresh, u8 rssi_thresh1); +void _rtl8821ae_dm_bt_check_wifi_state(struct ieee80211_hw *hw); +void rtl8821ae_dm_bt_reject_ap_aggregated_packet(struct ieee80211_hw *hw, + bool b_reject); + +#if 0 +VOID +BTDM_PWDBMonitor( + PADAPTER Adapter + ); + +BOOLEAN +BTDM_DIGByBTRSSI( + PADAPTER Adapter + ); +#endif +bool rtl8821ae_dm_bt_is_coexist_state_changed(struct ieee80211_hw *hw); +bool rtl8821ae_dm_bt_is_wifi_up_link(struct ieee80211_hw *hw); +#endif + --- linux-3.13.0.orig/drivers/staging/rtl8821ae/rtl8821ae/hal_btc.c +++ linux-3.13.0/drivers/staging/rtl8821ae/rtl8821ae/hal_btc.c @@ -0,0 +1,2069 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ +#include "hal_btc.h" +#include "../pci.h" +#include "phy.h" +#include "fw.h" +#include "reg.h" +#include "def.h" +#include "../btcoexist/rtl_btc.h" + +static struct bt_coexist_8821ae hal_coex_8821ae; + +void rtl8821ae_dm_bt_turn_off_bt_coexist_before_enter_lps(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + + if(!rtlpcipriv->btcoexist.bt_coexistence) + return; + + if(ppsc->b_inactiveps) { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG,("[BT][DM], Before enter IPS, turn off all Coexist DM\n")); + rtlpcipriv->btcoexist.current_state = 0; + rtlpcipriv->btcoexist.previous_state = 0; + rtlpcipriv->btcoexist.current_state_h = 0; + rtlpcipriv->btcoexist.previous_state_h = 0; + rtl8821ae_btdm_coex_all_off(hw); + } +} + + +enum rt_media_status mgnt_link_status_query(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + enum rt_media_status m_status = RT_MEDIA_DISCONNECT; + + u8 bibss = (mac->opmode == NL80211_IFTYPE_ADHOC) ? 1 : 0; + + if(bibss || rtlpriv->mac80211.link_state >= MAC80211_LINKED) { + m_status = RT_MEDIA_CONNECT; + } + + return m_status; +} + +void rtl_8821ae_bt_wifi_media_status_notify(struct ieee80211_hw *hw, bool mstatus) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + u8 h2c_parameter[3] ={0}; + u8 chnl; + + if(!rtlpcipriv->btcoexist.bt_coexistence) + return; + + if(RT_MEDIA_CONNECT == mstatus) + h2c_parameter[0] = 0x1; // 0: disconnected, 1:connected + else + h2c_parameter[0] = 0x0; + + if(mgnt_link_status_query(hw)) { + chnl = rtlphy->current_channel; + h2c_parameter[1] = chnl; + } + + if(rtlphy->current_chan_bw == HT_CHANNEL_WIDTH_20_40){ + h2c_parameter[2] = 0x30; + } else { + h2c_parameter[2] = 0x20; + } + + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG,("[BTCoex], FW write 0x19=0x%x\n", + h2c_parameter[0]<<16|h2c_parameter[1]<<8|h2c_parameter[2])); + + rtl8821ae_fill_h2c_cmd(hw, 0x19, 3, h2c_parameter); + +} + + +bool rtl8821ae_dm_bt_is_wifi_busy(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + if(rtlpriv->link_info.b_busytraffic || + rtlpriv->link_info.b_rx_busy_traffic || + rtlpriv->link_info.b_tx_busy_traffic) + return true; + else + return false; +} +void rtl8821ae_dm_bt_set_fw_3a(struct ieee80211_hw *hw, + u8 byte1, u8 byte2, u8 byte3, u8 byte4, u8 byte5) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 h2c_parameter[5] ={0}; + h2c_parameter[0] = byte1; + h2c_parameter[1] = byte2; + h2c_parameter[2] = byte3; + h2c_parameter[3] = byte4; + h2c_parameter[4] = byte5; + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("[BTCoex], FW write 0x3a(4bytes)=0x%x%8x\n", + h2c_parameter[0], h2c_parameter[1]<<24 | h2c_parameter[2]<<16 | h2c_parameter[3]<<8 | h2c_parameter[4])); + rtl8821ae_fill_h2c_cmd(hw, 0x3a, 5, h2c_parameter); +} + +bool rtl8821ae_dm_bt_need_to_dec_bt_pwr(struct ieee80211_hw *hw) +{ + struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); + struct rtl_priv *rtlpriv = rtl_priv(hw); + + if (mgnt_link_status_query(hw) == RT_MEDIA_CONNECT) { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("Need to decrease bt power\n")); + rtlpcipriv->btcoexist.current_state |= BT_COEX_STATE_DEC_BT_POWER; + return true; + } + + rtlpcipriv->btcoexist.current_state &= ~BT_COEX_STATE_DEC_BT_POWER; + return false; +} + + +bool rtl8821ae_dm_bt_is_same_coexist_state(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); + + if ((rtlpcipriv->btcoexist.previous_state + == rtlpcipriv->btcoexist.current_state) + &&(rtlpcipriv->btcoexist.previous_state_h + == rtlpcipriv->btcoexist.current_state_h)) { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[DM][BT], Coexist state do not chang!!\n")); + return true; + } else { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[DM][BT], Coexist state changed!!\n")); + return false; + } +} + +void rtl8821ae_dm_bt_set_coex_table(struct ieee80211_hw *hw, + u32 val_0x6c0, u32 val_0x6c8, u32 val_0x6cc) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("set coex table, set 0x6c0=0x%x\n", val_0x6c0)); + rtl_write_dword(rtlpriv, 0x6c0, val_0x6c0); + + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("set coex table, set 0x6c8=0x%x\n", val_0x6c8)); + rtl_write_dword(rtlpriv, 0x6c8, val_0x6c8); + + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("set coex table, set 0x6cc=0x%x\n", val_0x6cc)); + rtl_write_byte(rtlpriv, 0x6cc, val_0x6cc); +} + +void rtl8821ae_dm_bt_set_hw_pta_mode(struct ieee80211_hw *hw, bool b_mode) +{ + struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); + struct rtl_priv *rtlpriv = rtl_priv(hw); + + if (BT_PTA_MODE_ON == b_mode) { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("PTA mode on, ")); + /* Enable GPIO 0/1/2/3/8 pins for bt */ + rtl_write_byte(rtlpriv, 0x40, 0x20); + rtlpcipriv->btcoexist.b_hw_coexist_all_off = false; + } else { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("PTA mode off\n")); + rtl_write_byte(rtlpriv, 0x40, 0x0); + } +} + +void rtl8821ae_dm_bt_set_sw_rf_rx_lpf_corner(struct ieee80211_hw *hw, u8 type) +{ + struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); + struct rtl_priv *rtlpriv = rtl_priv(hw); + + if (BT_RF_RX_LPF_CORNER_SHRINK == type) { + /* Shrink RF Rx LPF corner, 0x1e[7:4]=1111 ==> [11:4] by Jenyu */ + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("Shrink RF Rx LPF corner!!\n")); + /* PHY_SetRFReg(Adapter, (RF_RADIO_PATH_E)PathA, 0x1e, 0xf0, 0xf); */ + rtl8821ae_phy_set_rf_reg(hw, RF90_PATH_A, 0x1e, 0xfffff, 0xf0ff7); + rtlpcipriv->btcoexist.b_sw_coexist_all_off = false; + } else if(BT_RF_RX_LPF_CORNER_RESUME == type) { + /*Resume RF Rx LPF corner*/ + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("Resume RF Rx LPF corner!!\n")); + /* PHY_SetRFReg(Adapter, (RF_RADIO_PATH_E)PathA, 0x1e, 0xf0, + * pHalData->btcoexist.BtRfRegOrigin1E); */ + rtl8821ae_phy_set_rf_reg(hw, RF90_PATH_A, 0x1e, 0xfffff, + rtlpcipriv->btcoexist.bt_rfreg_origin_1e); + } +} + +void rtl8821ae_dm_bt_set_sw_penalty_tx_rate_adaptive(struct ieee80211_hw *hw, + u8 ra_type) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); + u8 tmp_u1; + + tmp_u1 = rtl_read_byte(rtlpriv, 0x4fd); + tmp_u1 |= BIT(0); + if (BT_TX_RATE_ADAPTIVE_LOW_PENALTY == ra_type) { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("Tx rate adaptive, set low penalty!!\n")); + tmp_u1 &= ~BIT(2); + rtlpcipriv->btcoexist.b_sw_coexist_all_off = false; + } else if(BT_TX_RATE_ADAPTIVE_NORMAL == ra_type) { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("Tx rate adaptive, set normal!!\n")); + tmp_u1 |= BIT(2); + } + + rtl_write_byte(rtlpriv, 0x4fd, tmp_u1); +} + +void rtl8821ae_dm_bt_btdm_structure_reload(struct ieee80211_hw *hw, + struct btdm_8821ae *p_btdm) +{ + p_btdm->b_all_off = false; + p_btdm->b_agc_table_en = false; + p_btdm->b_adc_back_off_on = false; + p_btdm->b2_ant_hid_en = false; + p_btdm->b_low_penalty_rate_adaptive = false; + p_btdm->b_rf_rx_lpf_shrink = false; + p_btdm->b_reject_aggre_pkt= false; + + p_btdm->b_tdma_on = false; + p_btdm->tdma_ant = TDMA_2ANT; + p_btdm->tdma_nav = TDMA_NAV_OFF; + p_btdm->tdma_dac_swing = TDMA_DAC_SWING_OFF; + p_btdm->fw_dac_swing_lvl = 0x20; + + p_btdm->b_tra_tdma_on = false; + p_btdm->tra_tdma_ant = TDMA_2ANT; + p_btdm->tra_tdma_nav = TDMA_NAV_OFF; + p_btdm->b_ignore_wlan_act = false; + + p_btdm->b_ps_tdma_on = false; + p_btdm->ps_tdma_byte[0] = 0x0; + p_btdm->ps_tdma_byte[1] = 0x0; + p_btdm->ps_tdma_byte[2] = 0x0; + p_btdm->ps_tdma_byte[3] = 0x8; + p_btdm->ps_tdma_byte[4] = 0x0; + + p_btdm->b_pta_on = true; + p_btdm->val_0x6c0 = 0x5a5aaaaa; + p_btdm->val_0x6c8 = 0xcc; + p_btdm->val_0x6cc = 0x3; + + p_btdm->b_sw_dac_swing_on = false; + p_btdm->sw_dac_swing_lvl = 0xc0; + p_btdm->wlan_act_hi = 0x20; + p_btdm->wlan_act_lo = 0x10; + p_btdm->bt_retry_index = 2; + + p_btdm->b_dec_bt_pwr = false; +} + +void rtl8821ae_dm_bt_btdm_structure_reload_all_off(struct ieee80211_hw *hw, + struct btdm_8821ae *p_btdm) +{ + rtl8821ae_dm_bt_btdm_structure_reload(hw, p_btdm); + p_btdm->b_all_off = true; + p_btdm->b_pta_on = false; + p_btdm->wlan_act_hi = 0x10; +} + +bool rtl8821ae_dm_bt_is_2_ant_common_action(struct ieee80211_hw *hw) +{ + struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct btdm_8821ae btdm8821ae; + bool b_common = false; + + rtl8821ae_dm_bt_btdm_structure_reload(hw, &btdm8821ae); + + if(!rtl8821ae_dm_bt_is_wifi_busy(hw) + && !rtlpcipriv->btcoexist.b_bt_busy) { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("Wifi idle + Bt idle, bt coex mechanism always off!!\n")); + rtl8821ae_dm_bt_btdm_structure_reload_all_off(hw, &btdm8821ae); + b_common = true; + } else if (rtl8821ae_dm_bt_is_wifi_busy(hw) + && !rtlpcipriv->btcoexist.b_bt_busy) { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("Wifi non-idle + Bt disabled/idle!!\n")); + btdm8821ae.b_low_penalty_rate_adaptive = true; + btdm8821ae.b_rf_rx_lpf_shrink = false; + btdm8821ae.b_reject_aggre_pkt = false; + + /* sw mechanism */ + btdm8821ae.b_agc_table_en = false; + btdm8821ae.b_adc_back_off_on = false; + btdm8821ae.b_sw_dac_swing_on = false; + + btdm8821ae.b_pta_on = true; + btdm8821ae.val_0x6c0 = 0x5a5aaaaa; + btdm8821ae.val_0x6c8 = 0xcccc; + btdm8821ae.val_0x6cc = 0x3; + + btdm8821ae.b_tdma_on = false; + btdm8821ae.tdma_dac_swing = TDMA_DAC_SWING_OFF; + btdm8821ae.b2_ant_hid_en = false; + + b_common = true; + }else if (rtlpcipriv->btcoexist.b_bt_busy) { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("Bt non-idle!\n")); + if(mgnt_link_status_query(hw) == RT_MEDIA_CONNECT){ + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("Wifi connection exist\n")) + b_common = false; + } else { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("No Wifi connection!\n")); + btdm8821ae.b_rf_rx_lpf_shrink = true; + btdm8821ae.b_low_penalty_rate_adaptive = false; + btdm8821ae.b_reject_aggre_pkt = false; + + /* sw mechanism */ + btdm8821ae.b_agc_table_en = false; + btdm8821ae.b_adc_back_off_on = false; + btdm8821ae.b_sw_dac_swing_on = false; + + btdm8821ae.b_pta_on = true; + btdm8821ae.val_0x6c0 = 0x55555555; + btdm8821ae.val_0x6c8 = 0x0000ffff; + btdm8821ae.val_0x6cc = 0x3; + + btdm8821ae.b_tdma_on = false; + btdm8821ae.tdma_dac_swing = TDMA_DAC_SWING_OFF; + btdm8821ae.b2_ant_hid_en = false; + + b_common = true; + } + } + + if (rtl8821ae_dm_bt_need_to_dec_bt_pwr(hw)) { + btdm8821ae.b_dec_bt_pwr = true; + } + + if(b_common) + rtlpcipriv->btcoexist.current_state |= BT_COEX_STATE_BTINFO_COMMON; + + if (b_common && rtl8821ae_dm_bt_is_coexist_state_changed(hw)) + rtl8821ae_dm_bt_set_bt_dm(hw, &btdm8821ae); + + return b_common; +} + +void rtl8821ae_dm_bt_set_sw_full_time_dac_swing( + struct ieee80211_hw * hw, bool b_sw_dac_swing_on, u32 sw_dac_swing_lvl) +{ + struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); + struct rtl_priv *rtlpriv = rtl_priv(hw); + + if (b_sw_dac_swing_on) { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("[BTCoex], SwDacSwing = 0x%x\n", sw_dac_swing_lvl)); + rtl8821ae_phy_set_bb_reg(hw, 0x880, 0xff000000, sw_dac_swing_lvl); + rtlpcipriv->btcoexist.b_sw_coexist_all_off = false; + } else { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("[BTCoex], SwDacSwing Off!\n")); + rtl8821ae_phy_set_bb_reg(hw, 0x880, 0xff000000, 0xc0); + } +} + +void rtl8821ae_dm_bt_set_fw_dec_bt_pwr( + struct ieee80211_hw *hw, bool b_dec_bt_pwr) +{ + struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 h2c_parameter[1] ={0}; + + h2c_parameter[0] = 0; + + if (b_dec_bt_pwr) { + h2c_parameter[0] |= BIT(1); + rtlpcipriv->btcoexist.b_fw_coexist_all_off = false; + } + + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("[BTCoex], decrease Bt Power : %s, write 0x21=0x%x\n", + (b_dec_bt_pwr? "Yes!!":"No!!"), h2c_parameter[0])); + + rtl8821ae_fill_h2c_cmd(hw, 0x21, 1, h2c_parameter); +} + + +void rtl8821ae_dm_bt_set_fw_2_ant_hid(struct ieee80211_hw *hw, + bool b_enable, bool b_dac_swing_on) +{ + struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 h2c_parameter[1] ={0}; + + if (b_enable) { + h2c_parameter[0] |= BIT(0); + rtlpcipriv->btcoexist.b_fw_coexist_all_off = false; + } + if (b_dac_swing_on) { + h2c_parameter[0] |= BIT(1); /* Dac Swing default enable */ + } + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("[BTCoex], turn 2-Ant+HID mode %s, DACSwing:%s, write 0x15=0x%x\n", + (b_enable ? "ON!!":"OFF!!"), (b_dac_swing_on ? "ON":"OFF"), + h2c_parameter[0])); + + rtl8821ae_fill_h2c_cmd(hw, 0x15, 1, h2c_parameter); +} + +void rtl8821ae_dm_bt_set_fw_tdma_ctrl(struct ieee80211_hw *hw, + bool b_enable, u8 ant_num, u8 nav_en, u8 dac_swing_en) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); + u8 h2c_parameter[1] ={0}; + u8 h2c_parameter1[1] = {0}; + + h2c_parameter[0] = 0; + h2c_parameter1[0] = 0; + + if(b_enable) { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("[BTCoex], set BT PTA update manager to trigger update!!\n")); + h2c_parameter1[0] |= BIT(0); + + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("[BTCoex], turn TDMA mode ON!!\n")); + h2c_parameter[0] |= BIT(0); /* function enable */ + if (TDMA_1ANT == ant_num) { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("[BTCoex], TDMA_1ANT\n")); + h2c_parameter[0] |= BIT(1); + } else if(TDMA_2ANT == ant_num) { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("[BTCoex], TDMA_2ANT\n")); + } else { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("[BTCoex], Unknown Ant\n")); + } + + if (TDMA_NAV_OFF == nav_en) { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("[BTCoex], TDMA_NAV_OFF\n")); + } else if (TDMA_NAV_ON == nav_en) { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("[BTCoex], TDMA_NAV_ON\n")); + h2c_parameter[0] |= BIT(2); + } + + if (TDMA_DAC_SWING_OFF == dac_swing_en) { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("[BTCoex], TDMA_DAC_SWING_OFF\n")); + } else if(TDMA_DAC_SWING_ON == dac_swing_en) { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("[BTCoex], TDMA_DAC_SWING_ON\n")); + h2c_parameter[0] |= BIT(4); + } + rtlpcipriv->btcoexist.b_fw_coexist_all_off = false; + } else { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("[BTCoex], set BT PTA update manager to no update!!\n")); + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("[BTCoex], turn TDMA mode OFF!!\n")); + } + + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("[BTCoex], FW2AntTDMA, write 0x26=0x%x\n", h2c_parameter1[0])); + rtl8821ae_fill_h2c_cmd(hw, 0x26, 1, h2c_parameter1); + + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("[BTCoex], FW2AntTDMA, write 0x14=0x%x\n", h2c_parameter[0])); + rtl8821ae_fill_h2c_cmd(hw, 0x14, 1, h2c_parameter); + + if (!b_enable) { + /* delay_ms(2); + * PlatformEFIOWrite1Byte(Adapter, 0x778, 0x1); */ + } +} + + +void rtl8821ae_dm_bt_set_fw_ignore_wlan_act( struct ieee80211_hw *hw, bool b_enable) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); + u8 h2c_parameter[1] ={0}; + + if (b_enable) { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("[BTCoex], BT Ignore Wlan_Act !!\n")); + h2c_parameter[0] |= BIT(0); // function enable + rtlpcipriv->btcoexist.b_fw_coexist_all_off = false; + } else { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("[BTCoex], BT don't ignore Wlan_Act !!\n")); + } + + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("[BTCoex], set FW for BT Ignore Wlan_Act, write 0x25=0x%x\n", + h2c_parameter[0])); + + rtl8821ae_fill_h2c_cmd(hw, 0x25, 1, h2c_parameter); +} + + +void rtl8821ae_dm_bt_set_fw_tra_tdma_ctrl(struct ieee80211_hw *hw, + bool b_enable, u8 ant_num, u8 nav_en + ) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); + //struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + + u8 h2c_parameter[2] ={0}; + + + if (b_enable) { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("[BTCoex], turn TTDMA mode ON!!\n")); + h2c_parameter[0] |= BIT(0); // function enable + if (TDMA_1ANT == ant_num) { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("[BTCoex], TTDMA_1ANT\n")); + h2c_parameter[0] |= BIT(1); + } else if (TDMA_2ANT == ant_num) { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("[BTCoex], TTDMA_2ANT\n")); + } else { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("[BTCoex], Unknown Ant\n")); + } + + if (TDMA_NAV_OFF == nav_en) { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("[BTCoex], TTDMA_NAV_OFF\n")); + } else if (TDMA_NAV_ON == nav_en) { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("[BTCoex], TTDMA_NAV_ON\n")); + h2c_parameter[1] |= BIT(0); + } + + rtlpcipriv->btcoexist.b_fw_coexist_all_off = false; + } else { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("[BTCoex], turn TTDMA mode OFF!!\n")); + } + + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("[BTCoex], FW Traditional TDMA, write 0x33=0x%x\n", + h2c_parameter[0] << 8| h2c_parameter[1])); + + rtl8821ae_fill_h2c_cmd(hw, 0x33, 2, h2c_parameter); +} + + +void rtl8821ae_dm_bt_set_fw_dac_swing_level(struct ieee80211_hw *hw, + u8 dac_swing_lvl) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 h2c_parameter[1] ={0}; + h2c_parameter[0] = dac_swing_lvl; + + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("[BTCoex], Set Dac Swing Level=0x%x\n", dac_swing_lvl)); + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("[BTCoex], write 0x29=0x%x\n", h2c_parameter[0])); + + rtl8821ae_fill_h2c_cmd(hw, 0x29, 1, h2c_parameter); +} + +void rtl8821ae_dm_bt_set_fw_bt_hid_info(struct ieee80211_hw *hw, bool b_enable) +{ + struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 h2c_parameter[1] ={0}; + h2c_parameter[0] = 0; + + if(b_enable){ + h2c_parameter[0] |= BIT(0); + rtlpcipriv->btcoexist.b_fw_coexist_all_off = false; + } + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("[BTCoex], Set BT HID information=0x%x\n", b_enable)); + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("[BTCoex], write 0x24=0x%x\n", h2c_parameter[0])); + + rtl8821ae_fill_h2c_cmd(hw, 0x24, 1, h2c_parameter); +} + +void rtl8821ae_dm_bt_set_fw_bt_retry_index(struct ieee80211_hw *hw, + u8 retry_index) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 h2c_parameter[1] ={0}; + h2c_parameter[0] = retry_index; + + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("[BTCoex], Set BT Retry Index=%d\n", retry_index)); + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("[BTCoex], write 0x23=0x%x\n", h2c_parameter[0])); + + rtl8821ae_fill_h2c_cmd(hw, 0x23, 1, h2c_parameter); +} + +void rtl8821ae_dm_bt_set_fw_wlan_act(struct ieee80211_hw *hw, + u8 wlan_act_hi, u8 wlan_act_lo) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 h2c_parameter_hi[1] ={0}; + u8 h2c_parameter_lo[1] ={0}; + h2c_parameter_hi[0] = wlan_act_hi; + h2c_parameter_lo[0] = wlan_act_lo; + + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("[BTCoex], Set WLAN_ACT Hi:Lo=0x%x/0x%x\n", wlan_act_hi, wlan_act_lo)); + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("[BTCoex], write 0x22=0x%x\n", h2c_parameter_hi[0])); + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("[BTCoex], write 0x11=0x%x\n", h2c_parameter_lo[0])); + + /* WLAN_ACT = High duration, unit:ms */ + rtl8821ae_fill_h2c_cmd(hw, 0x22, 1, h2c_parameter_hi); + /* WLAN_ACT = Low duration, unit:3*625us */ + rtl8821ae_fill_h2c_cmd(hw, 0x11, 1, h2c_parameter_lo); +} + +void rtl8821ae_dm_bt_set_bt_dm(struct ieee80211_hw *hw, struct btdm_8821ae *p_btdm) +{ + struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct btdm_8821ae *p_btdm_8821ae = &hal_coex_8821ae.btdm; + u8 i; + + bool b_fw_current_inpsmode = false; + bool b_fw_ps_awake = true; + + rtlpriv->cfg->ops->get_hw_reg(hw, HW_VAR_FW_PSMODE_STATUS, + (u8 *) (&b_fw_current_inpsmode)); + rtlpriv->cfg->ops->get_hw_reg(hw, HW_VAR_FWLPS_RF_ON, + (u8 *) (&b_fw_ps_awake)); + + // check new setting is different with the old one, + // if all the same, don't do the setting again. + if (memcmp(p_btdm_8821ae, p_btdm, sizeof(struct btdm_8821ae)) == 0) { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], the same coexist setting, return!!\n")); + return; + } else { //save the new coexist setting + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], UPDATE TO NEW COEX SETTING!!\n")); + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], original/new bAllOff=0x%x/ 0x%x \n", + p_btdm_8821ae->b_all_off, p_btdm->b_all_off)); + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], original/new b_agc_table_en=0x%x/ 0x%x \n", + p_btdm_8821ae->b_agc_table_en, p_btdm->b_agc_table_en)); + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], original/new b_adc_back_off_on=0x%x/ 0x%x \n", + p_btdm_8821ae->b_adc_back_off_on, p_btdm->b_adc_back_off_on)); + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], original/new b2_ant_hid_en=0x%x/ 0x%x \n", + p_btdm_8821ae->b2_ant_hid_en, p_btdm->b2_ant_hid_en)); + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], original/new bLowPenaltyRateAdaptive=0x%x/ 0x%x \n", + p_btdm_8821ae->b_low_penalty_rate_adaptive, + p_btdm->b_low_penalty_rate_adaptive)); + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], original/new bRfRxLpfShrink=0x%x/ 0x%x \n", + p_btdm_8821ae->b_rf_rx_lpf_shrink, p_btdm->b_rf_rx_lpf_shrink)); + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], original/new bRejectAggrePkt=0x%x/ 0x%x \n", + p_btdm_8821ae->b_reject_aggre_pkt, p_btdm->b_reject_aggre_pkt)); + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], original/new b_tdma_on=0x%x/ 0x%x \n", + p_btdm_8821ae->b_tdma_on, p_btdm->b_tdma_on)); + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], original/new tdmaAnt=0x%x/ 0x%x \n", + p_btdm_8821ae->tdma_ant, p_btdm->tdma_ant)); + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], original/new tdmaNav=0x%x/ 0x%x \n", + p_btdm_8821ae->tdma_nav, p_btdm->tdma_nav)); + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], original/new tdma_dac_swing=0x%x/ 0x%x \n", + p_btdm_8821ae->tdma_dac_swing, p_btdm->tdma_dac_swing)); + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], original/new fw_dac_swing_lvl=0x%x/ 0x%x \n", + p_btdm_8821ae->fw_dac_swing_lvl, p_btdm->fw_dac_swing_lvl)); + + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], original/new bTraTdmaOn=0x%x/ 0x%x \n", + p_btdm_8821ae->b_tra_tdma_on, p_btdm->b_tra_tdma_on)); + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], original/new traTdmaAnt=0x%x/ 0x%x \n", + p_btdm_8821ae->tra_tdma_ant, p_btdm->tra_tdma_ant)); + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], original/new traTdmaNav=0x%x/ 0x%x \n", + p_btdm_8821ae->tra_tdma_nav, p_btdm->tra_tdma_nav)); + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], original/new bPsTdmaOn=0x%x/ 0x%x \n", + p_btdm_8821ae->b_ps_tdma_on, p_btdm->b_ps_tdma_on)); + for(i=0; i<5; i++) + { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], original/new psTdmaByte[i]=0x%x/ 0x%x \n", + p_btdm_8821ae->ps_tdma_byte[i], p_btdm->ps_tdma_byte[i])); + } + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], original/new bIgnoreWlanAct=0x%x/ 0x%x \n", + p_btdm_8821ae->b_ignore_wlan_act, p_btdm->b_ignore_wlan_act)); + + + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], original/new bPtaOn=0x%x/ 0x%x \n", + p_btdm_8821ae->b_pta_on, p_btdm->b_pta_on)); + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], original/new val_0x6c0=0x%x/ 0x%x \n", + p_btdm_8821ae->val_0x6c0, p_btdm->val_0x6c0)); + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], original/new val_0x6c8=0x%x/ 0x%x \n", + p_btdm_8821ae->val_0x6c8, p_btdm->val_0x6c8)); + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], original/new val_0x6cc=0x%x/ 0x%x \n", + p_btdm_8821ae->val_0x6cc, p_btdm->val_0x6cc)); + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], original/new b_sw_dac_swing_on=0x%x/ 0x%x \n", + p_btdm_8821ae->b_sw_dac_swing_on, p_btdm->b_sw_dac_swing_on)); + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], original/new sw_dac_swing_lvl=0x%x/ 0x%x \n", + p_btdm_8821ae->sw_dac_swing_lvl, p_btdm->sw_dac_swing_lvl)); + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], original/new wlanActHi=0x%x/ 0x%x \n", + p_btdm_8821ae->wlan_act_hi, p_btdm->wlan_act_hi)); + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], original/new wlanActLo=0x%x/ 0x%x \n", + p_btdm_8821ae->wlan_act_lo, p_btdm->wlan_act_lo)); + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], original/new btRetryIndex=0x%x/ 0x%x \n", + p_btdm_8821ae->bt_retry_index, p_btdm->bt_retry_index)); + + memcpy(p_btdm_8821ae, p_btdm, sizeof(struct btdm_8821ae)); + } + /* + * Here we only consider when Bt Operation + * inquiry/paging/pairing is ON + * we only need to turn off TDMA */ + + if (rtlpcipriv->btcoexist.b_hold_for_bt_operation) { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("[BTCoex], set to ignore wlanAct for BT OP!!\n")); + rtl8821ae_dm_bt_set_fw_ignore_wlan_act(hw, true); + return; + } + + if (p_btdm->b_all_off) { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("[BTCoex], disable all coexist mechanism !!\n")); + rtl8821ae_btdm_coex_all_off(hw); + return; + } + + rtl8821ae_dm_bt_reject_ap_aggregated_packet(hw, p_btdm->b_reject_aggre_pkt); + + if(p_btdm->b_low_penalty_rate_adaptive) + rtl8821ae_dm_bt_set_sw_penalty_tx_rate_adaptive(hw, + BT_TX_RATE_ADAPTIVE_LOW_PENALTY); + else + rtl8821ae_dm_bt_set_sw_penalty_tx_rate_adaptive(hw, + BT_TX_RATE_ADAPTIVE_NORMAL); + + if(p_btdm->b_rf_rx_lpf_shrink) + rtl8821ae_dm_bt_set_sw_rf_rx_lpf_corner(hw, BT_RF_RX_LPF_CORNER_SHRINK); + else + rtl8821ae_dm_bt_set_sw_rf_rx_lpf_corner(hw, BT_RF_RX_LPF_CORNER_RESUME); + + if(p_btdm->b_agc_table_en) + rtl8821ae_dm_bt_agc_table(hw, BT_AGCTABLE_ON); + else + rtl8821ae_dm_bt_agc_table(hw, BT_AGCTABLE_OFF); + + if(p_btdm->b_adc_back_off_on) + rtl8821ae_dm_bt_bb_back_off_level(hw, BT_BB_BACKOFF_ON); + else + rtl8821ae_dm_bt_bb_back_off_level(hw, BT_BB_BACKOFF_OFF); + + rtl8821ae_dm_bt_set_fw_bt_retry_index(hw, p_btdm->bt_retry_index); + + rtl8821ae_dm_bt_set_fw_dac_swing_level(hw, p_btdm->fw_dac_swing_lvl); + rtl8821ae_dm_bt_set_fw_wlan_act(hw, p_btdm->wlan_act_hi, p_btdm->wlan_act_lo); + + rtl8821ae_dm_bt_set_coex_table(hw, p_btdm->val_0x6c0, + p_btdm->val_0x6c8, p_btdm->val_0x6cc); + rtl8821ae_dm_bt_set_hw_pta_mode(hw, p_btdm->b_pta_on); + + /* + * Note: There is a constraint between TDMA and 2AntHID + * Only one of 2AntHid and tdma can be turn on + * We should turn off those mechanisms should be turned off first + * and then turn on those mechanisms should be turned on. + */ +#if 1 + if(p_btdm->b2_ant_hid_en) { + // turn off tdma + rtl8821ae_dm_bt_set_fw_tra_tdma_ctrl(hw, p_btdm->b_tra_tdma_on, + p_btdm->tra_tdma_ant, p_btdm->tra_tdma_nav); + rtl8821ae_dm_bt_set_fw_tdma_ctrl(hw, false, p_btdm->tdma_ant, + p_btdm->tdma_nav, p_btdm->tdma_dac_swing); + + // turn off Pstdma + rtl8821ae_dm_bt_set_fw_ignore_wlan_act(hw, p_btdm->b_ignore_wlan_act); + rtl8821ae_dm_bt_set_fw_3a(hw, 0x0, 0x0, 0x0, 0x8, 0x0); // Antenna control by PTA, 0x870 = 0x300. + + // turn on 2AntHid + rtl8821ae_dm_bt_set_fw_bt_hid_info(hw, true); + rtl8821ae_dm_bt_set_fw_2_ant_hid(hw, true, true); + } else if(p_btdm->b_tdma_on) { + // turn off 2AntHid + rtl8821ae_dm_bt_set_fw_bt_hid_info(hw, false); + rtl8821ae_dm_bt_set_fw_2_ant_hid(hw, false, false); + + // turn off pstdma + rtl8821ae_dm_bt_set_fw_ignore_wlan_act(hw, p_btdm->b_ignore_wlan_act); + rtl8821ae_dm_bt_set_fw_3a(hw, 0x0, 0x0, 0x0, 0x8, 0x0); // Antenna control by PTA, 0x870 = 0x300. + + // turn on tdma + rtl8821ae_dm_bt_set_fw_tra_tdma_ctrl(hw, p_btdm->b_tra_tdma_on, p_btdm->tra_tdma_ant, p_btdm->tra_tdma_nav); + rtl8821ae_dm_bt_set_fw_tdma_ctrl(hw, true, p_btdm->tdma_ant, p_btdm->tdma_nav, p_btdm->tdma_dac_swing); + } else if(p_btdm->b_ps_tdma_on) { + // turn off 2AntHid + rtl8821ae_dm_bt_set_fw_bt_hid_info(hw, false); + rtl8821ae_dm_bt_set_fw_2_ant_hid(hw, false, false); + + // turn off tdma + rtl8821ae_dm_bt_set_fw_tra_tdma_ctrl(hw, p_btdm->b_tra_tdma_on, p_btdm->tra_tdma_ant, p_btdm->tra_tdma_nav); + rtl8821ae_dm_bt_set_fw_tdma_ctrl(hw, false, p_btdm->tdma_ant, p_btdm->tdma_nav, p_btdm->tdma_dac_swing); + + // turn on pstdma + rtl8821ae_dm_bt_set_fw_ignore_wlan_act(hw, p_btdm->b_ignore_wlan_act); + rtl8821ae_dm_bt_set_fw_3a(hw, + p_btdm->ps_tdma_byte[0], + p_btdm->ps_tdma_byte[1], + p_btdm->ps_tdma_byte[2], + p_btdm->ps_tdma_byte[3], + p_btdm->ps_tdma_byte[4]); + } else { + // turn off 2AntHid + rtl8821ae_dm_bt_set_fw_bt_hid_info(hw, false); + rtl8821ae_dm_bt_set_fw_2_ant_hid(hw, false, false); + + // turn off tdma + rtl8821ae_dm_bt_set_fw_tra_tdma_ctrl(hw, p_btdm->b_tra_tdma_on, p_btdm->tra_tdma_ant, p_btdm->tra_tdma_nav); + rtl8821ae_dm_bt_set_fw_tdma_ctrl(hw, false, p_btdm->tdma_ant, p_btdm->tdma_nav, p_btdm->tdma_dac_swing); + + // turn off pstdma + rtl8821ae_dm_bt_set_fw_ignore_wlan_act(hw, p_btdm->b_ignore_wlan_act); + rtl8821ae_dm_bt_set_fw_3a(hw, 0x0, 0x0, 0x0, 0x8, 0x0); // Antenna control by PTA, 0x870 = 0x300. + } +#else + if (p_btdm->b_tdma_on) { + if(p_btdm->b_ps_tdma_on) { + } else { + rtl8821ae_dm_bt_set_fw_3a(hw, 0x0, 0x0, 0x0, 0x8, 0x0); + } + /* Turn off 2AntHID first then turn tdma ON */ + rtl8821ae_dm_bt_set_fw_bt_hid_info(hw, false); + rtl8821ae_dm_bt_set_fw_2_ant_hid(hw, false, false); + rtl8821ae_dm_bt_set_fw_tra_tdma_ctrl(hw, p_btdm->b_tra_tdma_on, p_btdm->tra_tdma_ant, p_btdm->tra_tdma_nav); + rtl8821ae_dm_bt_set_fw_tdma_ctrl(hw, true, + p_btdm->tdma_ant, p_btdm->tdma_nav, p_btdm->tdma_dac_swing); + } else { + /* Turn off tdma first then turn 2AntHID ON if need */ + rtl8821ae_dm_bt_set_fw_tra_tdma_ctrl(hw, p_btdm->b_tra_tdma_on, p_btdm->tra_tdma_ant, p_btdm->tra_tdma_nav); + rtl8821ae_dm_bt_set_fw_tdma_ctrl(hw, false, p_btdm->tdma_ant, + p_btdm->tdma_nav, p_btdm->tdma_dac_swing); + if (p_btdm->b2_ant_hid_en) { + rtl8821ae_dm_bt_set_fw_bt_hid_info(hw, true); + rtl8821ae_dm_bt_set_fw_2_ant_hid(hw, true, true); + } else { + rtl8821ae_dm_bt_set_fw_bt_hid_info(hw, false); + rtl8821ae_dm_bt_set_fw_2_ant_hid(hw, false, false); + } + if(p_btdm->b_ps_tdma_on) { + rtl8821ae_dm_bt_set_fw_3a(hw, p_btdm->ps_tdma_byte[0], p_btdm->ps_tdma_byte[1], + p_btdm->ps_tdma_byte[2], p_btdm->ps_tdma_byte[3], p_btdm->ps_tdma_byte[4]); + } else { + rtl8821ae_dm_bt_set_fw_3a(hw, 0x0, 0x0, 0x0, 0x8, 0x0); + } + } +#endif + + /* + * Note: + * We should add delay for making sure sw DacSwing can be set sucessfully. + * because of that rtl8821ae_dm_bt_set_fw_2_ant_hid() and rtl8821ae_dm_bt_set_fw_tdma_ctrl() + * will overwrite the reg 0x880. + */ + mdelay(30); + rtl8821ae_dm_bt_set_sw_full_time_dac_swing(hw, + p_btdm->b_sw_dac_swing_on, p_btdm->sw_dac_swing_lvl); + rtl8821ae_dm_bt_set_fw_dec_bt_pwr(hw, p_btdm->b_dec_bt_pwr); +} + +void rtl8821ae_dm_bt_bt_state_update_2_ant_hid(struct ieee80211_hw *hw) +{ + struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); + struct rtl_priv *rtlpriv = rtl_priv(hw); + + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("[BTCoex], HID busy!!\n")); + rtlpcipriv->btcoexist.b_bt_busy = true; + rtlpcipriv->btcoexist.current_state &= ~BT_COEX_STATE_BT_IDLE; +} + +void rtl8821ae_dm_bt_bt_state_update_2_ant_pan(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); + bool b_idle = false; + + if (hal_coex_8821ae.low_priority_tx >= + hal_coex_8821ae.low_priority_rx) { + if((hal_coex_8821ae.low_priority_tx/ + hal_coex_8821ae.low_priority_rx) > 10) { + b_idle = true; + } + } else { + if((hal_coex_8821ae.low_priority_rx/ + hal_coex_8821ae.low_priority_tx) > 10) { + b_idle = true; + } + } + + if(!b_idle) { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("[BTCoex], PAN busy!!\n")); + rtlpcipriv->btcoexist.b_bt_busy = true; + rtlpcipriv->btcoexist.current_state &= ~BT_COEX_STATE_BT_IDLE; + } else { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("[BTCoex], PAN idle!!\n")); + } +} + +void rtl8821ae_dm_bt_2_ant_sco_action(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct btdm_8821ae btdm8821ae; + u8 bt_rssi_state; + + rtl8821ae_dm_bt_btdm_structure_reload(hw, &btdm8821ae); + btdm8821ae.b_rf_rx_lpf_shrink = true; + btdm8821ae.b_low_penalty_rate_adaptive = true; + btdm8821ae.b_reject_aggre_pkt = false; + + if (rtlphy->current_chan_bw == HT_CHANNEL_WIDTH_20_40) { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("HT40\n")); + /* coex table */ + btdm8821ae.val_0x6c0 = 0x5a5aaaaa; + btdm8821ae.val_0x6c8 = 0xcc; + btdm8821ae.val_0x6cc = 0x3; + /* sw mechanism */ + btdm8821ae.b_agc_table_en = false; + btdm8821ae.b_adc_back_off_on = true; + btdm8821ae.b_sw_dac_swing_on = false; + /* fw mechanism */ + btdm8821ae.b_tdma_on = false; + btdm8821ae.tdma_dac_swing = TDMA_DAC_SWING_OFF; + } else { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("HT20 or Legacy\n")); + bt_rssi_state + = rtl8821ae_dm_bt_check_coex_rssi_state(hw, 2, BT_FW_COEX_THRESH_47, 0); + + /* coex table */ + btdm8821ae.val_0x6c0 = 0x5a5aaaaa; + btdm8821ae.val_0x6c8 = 0xcc; + btdm8821ae.val_0x6cc = 0x3; + /* sw mechanism */ + if ((bt_rssi_state == BT_RSSI_STATE_HIGH) || + (bt_rssi_state == BT_RSSI_STATE_STAY_HIGH) ) { + btdm8821ae.b_agc_table_en = true; + btdm8821ae.b_adc_back_off_on = true; + btdm8821ae.b_sw_dac_swing_on = false; + } else { + btdm8821ae.b_agc_table_en = false; + btdm8821ae.b_adc_back_off_on = false; + btdm8821ae.b_sw_dac_swing_on = false; + } + /* fw mechanism */ + btdm8821ae.b_tdma_on = false; + btdm8821ae.tdma_dac_swing = TDMA_DAC_SWING_OFF; + } + + if (rtl8821ae_dm_bt_need_to_dec_bt_pwr(hw)) { + btdm8821ae.b_dec_bt_pwr = true; + } + + if(rtl8821ae_dm_bt_is_coexist_state_changed(hw)) + rtl8821ae_dm_bt_set_bt_dm(hw, &btdm8821ae); +} + +void rtl8821ae_dm_bt_2_ant_hid_action(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct btdm_8821ae btdm8821ae; + u8 bt_rssi_state; + + rtl8821ae_dm_bt_btdm_structure_reload(hw, &btdm8821ae); + + btdm8821ae.b_rf_rx_lpf_shrink = true; + btdm8821ae.b_low_penalty_rate_adaptive = true; + btdm8821ae.b_reject_aggre_pkt = false; + + // coex table + btdm8821ae.val_0x6c0 = 0x55555555; + btdm8821ae.val_0x6c8 = 0xffff; + btdm8821ae.val_0x6cc = 0x3; + btdm8821ae.b_ignore_wlan_act = true; + + if(rtlphy->current_chan_bw == HT_CHANNEL_WIDTH_20_40) { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("HT40\n")); + // sw mechanism + btdm8821ae.b_agc_table_en = false; + btdm8821ae.b_adc_back_off_on = false; + btdm8821ae.b_sw_dac_swing_on = false; + + // fw mechanism + btdm8821ae.b_ps_tdma_on = true; + btdm8821ae.ps_tdma_byte[0] = 0xa3; + btdm8821ae.ps_tdma_byte[1] = 0xf; + btdm8821ae.ps_tdma_byte[2] = 0xf; + btdm8821ae.ps_tdma_byte[3] = 0x0; + btdm8821ae.ps_tdma_byte[4] = 0x80; + + btdm8821ae.b_tra_tdma_on = false; + btdm8821ae.b_tdma_on = false; + btdm8821ae.tdma_dac_swing = TDMA_DAC_SWING_OFF; + btdm8821ae.b2_ant_hid_en = false; + } else { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("HT20 or Legacy\n")); + bt_rssi_state = + rtl8821ae_dm_bt_check_coex_rssi_state(hw, 2, 47, 0); + + if( (bt_rssi_state == BT_RSSI_STATE_HIGH) || + (bt_rssi_state == BT_RSSI_STATE_STAY_HIGH) ) { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("Wifi rssi high \n")); + // sw mechanism + btdm8821ae.b_agc_table_en = false; + btdm8821ae.b_adc_back_off_on = false; + btdm8821ae.b_sw_dac_swing_on = true; + btdm8821ae.sw_dac_swing_lvl = 0x20; + + // fw mechanism + btdm8821ae.b_ps_tdma_on = false; + btdm8821ae.b_tdma_on = false; + btdm8821ae.tdma_dac_swing = TDMA_DAC_SWING_OFF; + btdm8821ae.b2_ant_hid_en = false; + } else { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("Wifi rssi low \n")); + // sw mechanism + btdm8821ae.b_agc_table_en = false; + btdm8821ae.b_adc_back_off_on = false; + btdm8821ae.b_sw_dac_swing_on = false; + + // fw mechanism + btdm8821ae.b_ps_tdma_on = false; + btdm8821ae.b_tdma_on = false; + btdm8821ae.tdma_dac_swing = TDMA_DAC_SWING_OFF; + btdm8821ae.b2_ant_hid_en = true; + btdm8821ae.fw_dac_swing_lvl = 0x20; + } + } + + if (rtl8821ae_dm_bt_need_to_dec_bt_pwr(hw)) { + btdm8821ae.b_dec_bt_pwr = true; + } + + if (rtl8821ae_dm_bt_is_coexist_state_changed(hw)) { + rtl8821ae_dm_bt_set_bt_dm(hw, &btdm8821ae); + } +} + + +void rtl8821ae_dm_bt_2_ant_2_dp_action_no_profile(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct btdm_8821ae btdm8821ae; + u8 bt_rssi_state; + + rtl8821ae_dm_bt_btdm_structure_reload(hw, &btdm8821ae); + + btdm8821ae.b_rf_rx_lpf_shrink = true; + btdm8821ae.b_low_penalty_rate_adaptive = true; + btdm8821ae.b_reject_aggre_pkt = false; + + if (rtlphy->current_chan_bw == HT_CHANNEL_WIDTH_20_40) { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("HT40\n")); + if (rtl8821ae_dm_bt_is_wifi_up_link(hw)) { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("Wifi Uplink\n")); + /* coex table */ + btdm8821ae.val_0x6c0 = 0x5a5a5a5a; + btdm8821ae.val_0x6c8 = 0xcccc; + btdm8821ae.val_0x6cc = 0x3; + // sw mechanism + btdm8821ae.b_agc_table_en = false; + btdm8821ae.b_adc_back_off_on = true; + btdm8821ae.b_sw_dac_swing_on = false; + // fw mechanism + btdm8821ae.b_tra_tdma_on = true; + btdm8821ae.b_tdma_on = true; + btdm8821ae.tdma_dac_swing = TDMA_DAC_SWING_ON; + btdm8821ae.b2_ant_hid_en = false; + //btSpec = BTHCI_GetBTCoreSpecByProf(Adapter, BT_PROFILE_A2DP); + //if(btSpec >= BT_SPEC_2_1_EDR) + { + btdm8821ae.wlan_act_hi = 0x10; + btdm8821ae.wlan_act_lo = 0x10; + } + //else + //{ + //btdm8821ae.wlanActHi = 0x20; + //btdm8821ae.wlanActLo = 0x20; + //} + btdm8821ae.bt_retry_index = 2; + btdm8821ae.fw_dac_swing_lvl = 0x18; + } else { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("Wifi Downlink\n")); + // coex table + btdm8821ae.val_0x6c0 = 0x5a5a5a5a; + btdm8821ae.val_0x6c8 = 0xcc; + btdm8821ae.val_0x6cc = 0x3; + // sw mechanism + btdm8821ae.b_agc_table_en = false; + btdm8821ae.b_adc_back_off_on = true; + btdm8821ae.b_sw_dac_swing_on = false; + // fw mechanism + btdm8821ae.b_tra_tdma_on = true; + btdm8821ae.b_tdma_on = true; + btdm8821ae.tdma_dac_swing = TDMA_DAC_SWING_ON; + btdm8821ae.b2_ant_hid_en = false; + //btSpec = BTHCI_GetBTCoreSpecByProf(Adapter, BT_PROFILE_A2DP); + //if(btSpec >= BT_SPEC_2_1_EDR) + { + btdm8821ae.wlan_act_hi = 0x10; + btdm8821ae.wlan_act_lo = 0x10; + } + //else + //{ + // btdm8821ae.wlanActHi = 0x20; + // btdm8821ae.wlanActLo = 0x20; + //} + btdm8821ae.bt_retry_index = 2; + btdm8821ae.fw_dac_swing_lvl = 0x40; + } + } else { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("HT20 or Legacy\n")); + bt_rssi_state = rtl8821ae_dm_bt_check_coex_rssi_state(hw, 2, BT_FW_COEX_THRESH_47, 0); + + if(rtl8821ae_dm_bt_is_wifi_up_link(hw)) + { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("Wifi Uplink\n")); + // coex table + btdm8821ae.val_0x6c0 = 0x5a5a5a5a; + btdm8821ae.val_0x6c8 = 0xcccc; + btdm8821ae.val_0x6cc = 0x3; + // sw mechanism + if( (bt_rssi_state == BT_RSSI_STATE_HIGH) || + (bt_rssi_state == BT_RSSI_STATE_STAY_HIGH) ) + { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("Wifi rssi high \n")); + btdm8821ae.b_agc_table_en = true; + btdm8821ae.b_adc_back_off_on = true; + btdm8821ae.b_sw_dac_swing_on = false; + } else { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("Wifi rssi low \n")); + btdm8821ae.b_agc_table_en = false; + btdm8821ae.b_adc_back_off_on = false; + btdm8821ae.b_sw_dac_swing_on = false; + } + // fw mechanism + btdm8821ae.b_tra_tdma_on = true; + btdm8821ae.b_tdma_on = true; + btdm8821ae.tdma_dac_swing = TDMA_DAC_SWING_ON; + btdm8821ae.b2_ant_hid_en = false; + //btSpec = BTHCI_GetBTCoreSpecByProf(Adapter, BT_PROFILE_A2DP); + //if(btSpec >= BT_SPEC_2_1_EDR) + { + btdm8821ae.wlan_act_hi = 0x10; + btdm8821ae.wlan_act_lo = 0x10; + } + //else + //{ + //btdm8821ae.wlanActHi = 0x20; + //btdm8821ae.wlanActLo = 0x20; + //} + btdm8821ae.bt_retry_index = 2; + btdm8821ae.fw_dac_swing_lvl = 0x18; + } + else + { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("Wifi Downlink\n")); + // coex table + btdm8821ae.val_0x6c0 = 0x5a5a5a5a; + btdm8821ae.val_0x6c8 = 0xcc; + btdm8821ae.val_0x6cc = 0x3; + // sw mechanism + if( (bt_rssi_state == BT_RSSI_STATE_HIGH) || + (bt_rssi_state == BT_RSSI_STATE_STAY_HIGH) ) + { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("Wifi rssi high \n")); + btdm8821ae.b_agc_table_en = true; + btdm8821ae.b_adc_back_off_on = true; + btdm8821ae.b_sw_dac_swing_on = false; + } + else + { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("Wifi rssi low \n")); + btdm8821ae.b_agc_table_en = false; + btdm8821ae.b_adc_back_off_on = false; + btdm8821ae.b_sw_dac_swing_on = false; + } + // fw mechanism + btdm8821ae.b_tra_tdma_on = true; + btdm8821ae.b_tdma_on = true; + btdm8821ae.tdma_dac_swing = TDMA_DAC_SWING_ON; + btdm8821ae.b2_ant_hid_en = false; + //btSpec = BTHCI_GetBTCoreSpecByProf(Adapter, BT_PROFILE_A2DP); + //if(btSpec >= BT_SPEC_2_1_EDR) + { + btdm8821ae.wlan_act_hi = 0x10; + btdm8821ae.wlan_act_lo = 0x10; + } + //else + //{ + //btdm8821ae.wlanActHi = 0x20; + //btdm8821ae.wlanActLo = 0x20; + //} + btdm8821ae.bt_retry_index = 2; + btdm8821ae.fw_dac_swing_lvl = 0x40; + } + } + + if (rtl8821ae_dm_bt_need_to_dec_bt_pwr(hw)) { + btdm8821ae.b_dec_bt_pwr = true; + } + + if (rtl8821ae_dm_bt_is_coexist_state_changed(hw)) { + rtl8821ae_dm_bt_set_bt_dm(hw, &btdm8821ae); + } +} + + +//============================================================ +// extern function start with BTDM_ +//============================================================ +u32 rtl8821ae_dm_bt_tx_rx_couter_h(struct ieee80211_hw *hw) +{ + u32 counters=0; + + counters = hal_coex_8821ae.high_priority_tx + hal_coex_8821ae.high_priority_rx ; + return counters; +} + +u32 rtl8821ae_dm_bt_tx_rx_couter_l(struct ieee80211_hw *hw) +{ + u32 counters=0; + + counters = hal_coex_8821ae.low_priority_tx + hal_coex_8821ae.low_priority_rx ; + return counters; +} + +u8 rtl8821ae_dm_bt_bt_tx_rx_counter_level(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); + u32 bt_tx_rx_cnt = 0; + u8 bt_tx_rx_cnt_lvl = 0; + + bt_tx_rx_cnt = rtl8821ae_dm_bt_tx_rx_couter_h(hw) + + rtl8821ae_dm_bt_tx_rx_couter_l(hw); + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], BT TxRx Counters = %d\n", bt_tx_rx_cnt)); + + rtlpcipriv->btcoexist.current_state_h &= ~\ + (BT_COEX_STATE_BT_CNT_LEVEL_0 | BT_COEX_STATE_BT_CNT_LEVEL_1| + BT_COEX_STATE_BT_CNT_LEVEL_2); + + if (bt_tx_rx_cnt >= BT_TXRX_CNT_THRES_3) { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], BT TxRx Counters at level 3\n")); + bt_tx_rx_cnt_lvl = BT_TXRX_CNT_LEVEL_3; + rtlpcipriv->btcoexist.current_state_h |= BT_COEX_STATE_BT_CNT_LEVEL_3; + } else if(bt_tx_rx_cnt >= BT_TXRX_CNT_THRES_2) { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], BT TxRx Counters at level 2\n")); + bt_tx_rx_cnt_lvl = BT_TXRX_CNT_LEVEL_2; + rtlpcipriv->btcoexist.current_state_h |= BT_COEX_STATE_BT_CNT_LEVEL_2; + } else if(bt_tx_rx_cnt >= BT_TXRX_CNT_THRES_1) { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], BT TxRx Counters at level 1\n")); + bt_tx_rx_cnt_lvl = BT_TXRX_CNT_LEVEL_1; + rtlpcipriv->btcoexist.current_state_h |= BT_COEX_STATE_BT_CNT_LEVEL_1; + } else { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], BT TxRx Counters at level 0\n")); + bt_tx_rx_cnt_lvl = BT_TXRX_CNT_LEVEL_0; + rtlpcipriv->btcoexist.current_state_h |= BT_COEX_STATE_BT_CNT_LEVEL_0; + } + return bt_tx_rx_cnt_lvl; +} + + +void rtl8821ae_dm_bt_2_ant_hid_sco_esco(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct btdm_8821ae btdm8821ae; + + u8 bt_rssi_state, bt_rssi_state1; + u8 bt_tx_rx_cnt_lvl = 0; + + rtl8821ae_dm_bt_btdm_structure_reload(hw, &btdm8821ae); + + + btdm8821ae.b_rf_rx_lpf_shrink = true; + btdm8821ae.b_low_penalty_rate_adaptive = true; + btdm8821ae.b_reject_aggre_pkt = false; + + bt_tx_rx_cnt_lvl = rtl8821ae_dm_bt_bt_tx_rx_counter_level(hw); + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("[BTCoex], BT TxRx Counters = %d\n", bt_tx_rx_cnt_lvl)); + + if(rtlphy->current_chan_bw == HT_CHANNEL_WIDTH_20_40) + { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("HT40\n")); + // coex table + btdm8821ae.val_0x6c0 = 0x55555555; + btdm8821ae.val_0x6c8 = 0xffff; + btdm8821ae.val_0x6cc = 0x3; + + // sw mechanism + btdm8821ae.b_agc_table_en = false; + btdm8821ae.b_adc_back_off_on = false; + btdm8821ae.b_sw_dac_swing_on = false; + + // fw mechanism + btdm8821ae.b_ps_tdma_on = true; + if (bt_tx_rx_cnt_lvl == BT_TXRX_CNT_LEVEL_2) { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("[BTCoex], BT TxRx Counters >= 1400\n")); + btdm8821ae.ps_tdma_byte[0] = 0xa3; + btdm8821ae.ps_tdma_byte[1] = 0x5; + btdm8821ae.ps_tdma_byte[2] = 0x5; + btdm8821ae.ps_tdma_byte[3] = 0x2; + btdm8821ae.ps_tdma_byte[4] = 0x80; + } else if(bt_tx_rx_cnt_lvl == BT_TXRX_CNT_LEVEL_1) { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("[BTCoex], BT TxRx Counters >= 1200 && < 1400\n")); + btdm8821ae.ps_tdma_byte[0] = 0xa3; + btdm8821ae.ps_tdma_byte[1] = 0xa; + btdm8821ae.ps_tdma_byte[2] = 0xa; + btdm8821ae.ps_tdma_byte[3] = 0x2; + btdm8821ae.ps_tdma_byte[4] = 0x80; + } else { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("[BTCoex], BT TxRx Counters < 1200\n")); + btdm8821ae.ps_tdma_byte[0] = 0xa3; + btdm8821ae.ps_tdma_byte[1] = 0xf; + btdm8821ae.ps_tdma_byte[2] = 0xf; + btdm8821ae.ps_tdma_byte[3] = 0x2; + btdm8821ae.ps_tdma_byte[4] = 0x80; + } + } else { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("HT20 or Legacy\n")); + bt_rssi_state = rtl8821ae_dm_bt_check_coex_rssi_state(hw, 2, 47, 0); + bt_rssi_state1 = rtl8821ae_dm_bt_check_coex_rssi_state1(hw, 2, 27, 0); + + // coex table + btdm8821ae.val_0x6c0 = 0x55555555; + btdm8821ae.val_0x6c8 = 0xffff; + btdm8821ae.val_0x6cc = 0x3; + + // sw mechanism + if( (bt_rssi_state == BT_RSSI_STATE_HIGH) || + (bt_rssi_state == BT_RSSI_STATE_STAY_HIGH) ) { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("Wifi rssi high \n")); + btdm8821ae.b_agc_table_en = true; + btdm8821ae.b_adc_back_off_on = true; + btdm8821ae.b_sw_dac_swing_on = false; + } else { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("Wifi rssi low \n")); + btdm8821ae.b_agc_table_en = false; + btdm8821ae.b_adc_back_off_on = false; + btdm8821ae.b_sw_dac_swing_on = false; + } + + // fw mechanism + btdm8821ae.b_ps_tdma_on = true; + if( (bt_rssi_state1 == BT_RSSI_STATE_HIGH) || + (bt_rssi_state1 == BT_RSSI_STATE_STAY_HIGH) ) { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG,("Wifi rssi-1 high \n")); + // only rssi high we need to do this, + // when rssi low, the value will modified by fw + rtl_write_byte(rtlpriv, 0x883, 0x40); + if(bt_tx_rx_cnt_lvl == BT_TXRX_CNT_LEVEL_2) { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("[BTCoex], BT TxRx Counters >= 1400\n")); + btdm8821ae.ps_tdma_byte[0] = 0xa3; + btdm8821ae.ps_tdma_byte[1] = 0x5; + btdm8821ae.ps_tdma_byte[2] = 0x5; + btdm8821ae.ps_tdma_byte[3] = 0x83; + btdm8821ae.ps_tdma_byte[4] = 0x80; + } else if(bt_tx_rx_cnt_lvl == BT_TXRX_CNT_LEVEL_1) { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("[BTCoex], BT TxRx Counters >= 1200 && < 1400\n")); + btdm8821ae.ps_tdma_byte[0] = 0xa3; + btdm8821ae.ps_tdma_byte[1] = 0xa; + btdm8821ae.ps_tdma_byte[2] = 0xa; + btdm8821ae.ps_tdma_byte[3] = 0x83; + btdm8821ae.ps_tdma_byte[4] = 0x80; + } else { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("[BTCoex], BT TxRx Counters < 1200\n")); + btdm8821ae.ps_tdma_byte[0] = 0xa3; + btdm8821ae.ps_tdma_byte[1] = 0xf; + btdm8821ae.ps_tdma_byte[2] = 0xf; + btdm8821ae.ps_tdma_byte[3] = 0x83; + btdm8821ae.ps_tdma_byte[4] = 0x80; + } + } else { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("Wifi rssi-1 low \n")); + if(bt_tx_rx_cnt_lvl == BT_TXRX_CNT_LEVEL_2) + { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("[BTCoex], BT TxRx Counters >= 1400\n")); + btdm8821ae.ps_tdma_byte[0] = 0xa3; + btdm8821ae.ps_tdma_byte[1] = 0x5; + btdm8821ae.ps_tdma_byte[2] = 0x5; + btdm8821ae.ps_tdma_byte[3] = 0x2; + btdm8821ae.ps_tdma_byte[4] = 0x80; + } else if(bt_tx_rx_cnt_lvl == BT_TXRX_CNT_LEVEL_1) { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("[BTCoex], BT TxRx Counters >= 1200 && < 1400\n")); + btdm8821ae.ps_tdma_byte[0] = 0xa3; + btdm8821ae.ps_tdma_byte[1] = 0xa; + btdm8821ae.ps_tdma_byte[2] = 0xa; + btdm8821ae.ps_tdma_byte[3] = 0x2; + btdm8821ae.ps_tdma_byte[4] = 0x80; + } else { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("[BTCoex], BT TxRx Counters < 1200\n")); + btdm8821ae.ps_tdma_byte[0] = 0xa3; + btdm8821ae.ps_tdma_byte[1] = 0xf; + btdm8821ae.ps_tdma_byte[2] = 0xf; + btdm8821ae.ps_tdma_byte[3] = 0x2; + btdm8821ae.ps_tdma_byte[4] = 0x80; + } + } + } + + if (rtl8821ae_dm_bt_need_to_dec_bt_pwr(hw)) { + btdm8821ae.b_dec_bt_pwr = true; + } + + // Always ignore WlanAct if bHid|bSCOBusy|bSCOeSCO + + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], BT btInqPageStartTime = 0x%x, btTxRxCntLvl = %d\n", + hal_coex_8821ae.bt_inq_page_start_time, bt_tx_rx_cnt_lvl)); + if( (hal_coex_8821ae.bt_inq_page_start_time) || + (BT_TXRX_CNT_LEVEL_3 == bt_tx_rx_cnt_lvl) ) { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], Set BT inquiry / page scan 0x3a setting\n")); + btdm8821ae.b_ps_tdma_on = true; + btdm8821ae.ps_tdma_byte[0] = 0xa3; + btdm8821ae.ps_tdma_byte[1] = 0x5; + btdm8821ae.ps_tdma_byte[2] = 0x5; + btdm8821ae.ps_tdma_byte[3] = 0x2; + btdm8821ae.ps_tdma_byte[4] = 0x80; + } + + if(rtl8821ae_dm_bt_is_coexist_state_changed(hw)) { + rtl8821ae_dm_bt_set_bt_dm(hw, &btdm8821ae); + } +} + +void rtl8821ae_dm_bt_2_ant_ftp_a2dp(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct btdm_8821ae btdm8821ae; + + u8 bt_rssi_state, bt_rssi_state1; + u32 bt_tx_rx_cnt_lvl = 0; + + rtl8821ae_dm_bt_btdm_structure_reload(hw, &btdm8821ae); + + btdm8821ae.b_rf_rx_lpf_shrink = true; + btdm8821ae.b_low_penalty_rate_adaptive = true; + btdm8821ae.b_reject_aggre_pkt = false; + + bt_tx_rx_cnt_lvl = rtl8821ae_dm_bt_bt_tx_rx_counter_level(hw); + + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("[BTCoex], BT TxRx Counters = %d\n", bt_tx_rx_cnt_lvl)); + + if(rtlphy->current_chan_bw == HT_CHANNEL_WIDTH_20_40) + { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("HT40\n")); + bt_rssi_state = rtl8821ae_dm_bt_check_coex_rssi_state(hw, 2, 37, 0); + + // coex table + btdm8821ae.val_0x6c0 = 0x55555555; + btdm8821ae.val_0x6c8 = 0xffff; + btdm8821ae.val_0x6cc = 0x3; + + // sw mechanism + btdm8821ae.b_agc_table_en = false; + btdm8821ae.b_adc_back_off_on = true; + btdm8821ae.b_sw_dac_swing_on = false; + + // fw mechanism + btdm8821ae.b_ps_tdma_on = true; + if ((bt_rssi_state == BT_RSSI_STATE_HIGH) || + (bt_rssi_state == BT_RSSI_STATE_STAY_HIGH) ) { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("Wifi rssi high \n")); + if (bt_tx_rx_cnt_lvl == BT_TXRX_CNT_LEVEL_2) { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("[BTCoex], BT TxRx Counters >= 1400\n")); + btdm8821ae.ps_tdma_byte[0] = 0xa3; + btdm8821ae.ps_tdma_byte[1] = 0x5; + btdm8821ae.ps_tdma_byte[2] = 0x5; + btdm8821ae.ps_tdma_byte[3] = 0x81; + btdm8821ae.ps_tdma_byte[4] = 0x80; + } else if(bt_tx_rx_cnt_lvl == BT_TXRX_CNT_LEVEL_1) { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("[BTCoex], BT TxRx Counters >= 1200 && < 1400\n")); + btdm8821ae.ps_tdma_byte[0] = 0xa3; + btdm8821ae.ps_tdma_byte[1] = 0xa; + btdm8821ae.ps_tdma_byte[2] = 0xa; + btdm8821ae.ps_tdma_byte[3] = 0x81; + btdm8821ae.ps_tdma_byte[4] = 0x80; + } else { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("[BTCoex], BT TxRx Counters < 1200\n")); + btdm8821ae.ps_tdma_byte[0] = 0xa3; + btdm8821ae.ps_tdma_byte[1] = 0xf; + btdm8821ae.ps_tdma_byte[2] = 0xf; + btdm8821ae.ps_tdma_byte[3] = 0x81; + btdm8821ae.ps_tdma_byte[4] = 0x80; + } + } else { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("Wifi rssi low \n")); + if(bt_tx_rx_cnt_lvl == BT_TXRX_CNT_LEVEL_2) { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("[BTCoex], BT TxRx Counters >= 1400\n")); + btdm8821ae.ps_tdma_byte[0] = 0xa3; + btdm8821ae.ps_tdma_byte[1] = 0x5; + btdm8821ae.ps_tdma_byte[2] = 0x5; + btdm8821ae.ps_tdma_byte[3] = 0x0; + btdm8821ae.ps_tdma_byte[4] = 0x80; + } else if(bt_tx_rx_cnt_lvl == BT_TXRX_CNT_LEVEL_1) { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("[BTCoex], BT TxRx Counters >= 1200 && < 1400\n")); + btdm8821ae.ps_tdma_byte[0] = 0xa3; + btdm8821ae.ps_tdma_byte[1] = 0xa; + btdm8821ae.ps_tdma_byte[2] = 0xa; + btdm8821ae.ps_tdma_byte[3] = 0x0; + btdm8821ae.ps_tdma_byte[4] = 0x80; + } else { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("[BTCoex], BT TxRx Counters < 1200\n")); + btdm8821ae.ps_tdma_byte[0] = 0xa3; + btdm8821ae.ps_tdma_byte[1] = 0xf; + btdm8821ae.ps_tdma_byte[2] = 0xf; + btdm8821ae.ps_tdma_byte[3] = 0x0; + btdm8821ae.ps_tdma_byte[4] = 0x80; + } + } + } else { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("HT20 or Legacy\n")); + bt_rssi_state = rtl8821ae_dm_bt_check_coex_rssi_state(hw, 2, 47, 0); + bt_rssi_state1 = rtl8821ae_dm_bt_check_coex_rssi_state1(hw, 2, 27, 0); + + // coex table + btdm8821ae.val_0x6c0 = 0x55555555; + btdm8821ae.val_0x6c8 = 0xffff; + btdm8821ae.val_0x6cc = 0x3; + + // sw mechanism + if( (bt_rssi_state == BT_RSSI_STATE_HIGH) || + (bt_rssi_state == BT_RSSI_STATE_STAY_HIGH) ) { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("Wifi rssi high \n")); + btdm8821ae.b_agc_table_en = true; + btdm8821ae.b_adc_back_off_on = true; + btdm8821ae.b_sw_dac_swing_on = false; + } else { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("Wifi rssi low \n")); + btdm8821ae.b_agc_table_en = false; + btdm8821ae.b_adc_back_off_on = false; + btdm8821ae.b_sw_dac_swing_on = false; + } + + // fw mechanism + btdm8821ae.b_ps_tdma_on = true; + if( (bt_rssi_state1 == BT_RSSI_STATE_HIGH) || + (bt_rssi_state1 == BT_RSSI_STATE_STAY_HIGH) ) { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("Wifi rssi-1 high \n")); + // only rssi high we need to do this, + // when rssi low, the value will modified by fw + rtl_write_byte(rtlpriv, 0x883, 0x40); + if (bt_tx_rx_cnt_lvl == BT_TXRX_CNT_LEVEL_2) { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("[BTCoex], BT TxRx Counters >= 1400\n")); + btdm8821ae.ps_tdma_byte[0] = 0xa3; + btdm8821ae.ps_tdma_byte[1] = 0x5; + btdm8821ae.ps_tdma_byte[2] = 0x5; + btdm8821ae.ps_tdma_byte[3] = 0x81; + btdm8821ae.ps_tdma_byte[4] = 0x80; + } else if(bt_tx_rx_cnt_lvl == BT_TXRX_CNT_LEVEL_1) { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("[BTCoex], BT TxRx Counters >= 1200 && < 1400\n")); + btdm8821ae.ps_tdma_byte[0] = 0xa3; + btdm8821ae.ps_tdma_byte[1] = 0xa; + btdm8821ae.ps_tdma_byte[2] = 0xa; + btdm8821ae.ps_tdma_byte[3] = 0x81; + btdm8821ae.ps_tdma_byte[4] = 0x80; + } else { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("[BTCoex], BT TxRx Counters < 1200\n")); + btdm8821ae.ps_tdma_byte[0] = 0xa3; + btdm8821ae.ps_tdma_byte[1] = 0xf; + btdm8821ae.ps_tdma_byte[2] = 0xf; + btdm8821ae.ps_tdma_byte[3] = 0x81; + btdm8821ae.ps_tdma_byte[4] = 0x80; + } + } else { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("Wifi rssi-1 low \n")); + if(bt_tx_rx_cnt_lvl == BT_TXRX_CNT_LEVEL_2) { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("[BTCoex], BT TxRx Counters >= 1400\n")); + btdm8821ae.ps_tdma_byte[0] = 0xa3; + btdm8821ae.ps_tdma_byte[1] = 0x5; + btdm8821ae.ps_tdma_byte[2] = 0x5; + btdm8821ae.ps_tdma_byte[3] = 0x0; + btdm8821ae.ps_tdma_byte[4] = 0x80; + } else if(bt_tx_rx_cnt_lvl == BT_TXRX_CNT_LEVEL_1) { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("[BTCoex], BT TxRx Counters >= 1200 && < 1400\n")); + btdm8821ae.ps_tdma_byte[0] = 0xa3; + btdm8821ae.ps_tdma_byte[1] = 0xa; + btdm8821ae.ps_tdma_byte[2] = 0xa; + btdm8821ae.ps_tdma_byte[3] = 0x0; + btdm8821ae.ps_tdma_byte[4] = 0x80; + } else { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("[BTCoex], BT TxRx Counters < 1200\n")); + btdm8821ae.ps_tdma_byte[0] = 0xa3; + btdm8821ae.ps_tdma_byte[1] = 0xf; + btdm8821ae.ps_tdma_byte[2] = 0xf; + btdm8821ae.ps_tdma_byte[3] = 0x0; + btdm8821ae.ps_tdma_byte[4] = 0x80; + } + } + } + + if(rtl8821ae_dm_bt_need_to_dec_bt_pwr(hw)) { + btdm8821ae.b_dec_bt_pwr = true; + } + + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], BT btInqPageStartTime = 0x%x, btTxRxCntLvl = %d\n", + hal_coex_8821ae.bt_inq_page_start_time, bt_tx_rx_cnt_lvl)); + + if( (hal_coex_8821ae.bt_inq_page_start_time) || + (BT_TXRX_CNT_LEVEL_3 == bt_tx_rx_cnt_lvl) ) + { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], Set BT inquiry / page scan 0x3a setting\n")); + btdm8821ae.b_ps_tdma_on = true; + btdm8821ae.ps_tdma_byte[0] = 0xa3; + btdm8821ae.ps_tdma_byte[1] = 0x5; + btdm8821ae.ps_tdma_byte[2] = 0x5; + btdm8821ae.ps_tdma_byte[3] = 0x83; + btdm8821ae.ps_tdma_byte[4] = 0x80; + } + + if(rtl8821ae_dm_bt_is_coexist_state_changed(hw)){ + rtl8821ae_dm_bt_set_bt_dm(hw, &btdm8821ae); + } +} + +void rtl8821ae_dm_bt_inq_page_monitor(struct ieee80211_hw *hw) +{ + struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 cur_time; + cur_time = jiffies; + if (hal_coex_8821ae.b_c2h_bt_inquiry_page) { + //pHalData->btcoexist.halCoex8821ae.btInquiryPageCnt++; + // bt inquiry or page is started. + if(hal_coex_8821ae.bt_inq_page_start_time == 0){ + rtlpcipriv->btcoexist.current_state |= BT_COEX_STATE_BT_INQ_PAGE; + hal_coex_8821ae.bt_inq_page_start_time = cur_time; + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], BT Inquiry/page is started at time : 0x%x \n", + hal_coex_8821ae.bt_inq_page_start_time)); + } + } + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], BT Inquiry/page started time : 0x%x, cur_time : 0x%x \n", + hal_coex_8821ae.bt_inq_page_start_time, cur_time)); + + if (hal_coex_8821ae.bt_inq_page_start_time) { + if ((((long)cur_time - (long)hal_coex_8821ae.bt_inq_page_start_time) / HZ) >= 10) { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("[BTCoex], BT Inquiry/page >= 10sec!!!")); + hal_coex_8821ae.bt_inq_page_start_time = 0; + rtlpcipriv->btcoexist.current_state &=~ BT_COEX_STATE_BT_INQ_PAGE; + } + } + +#if 0 + if (hal_coex_8821ae.b_c2h_bt_inquiry_page) { + hal_coex_8821ae.b_c2h_bt_inquiry_page++; + // bt inquiry or page is started. + } if(hal_coex_8821ae.b_c2h_bt_inquiry_page) { + rtlpcipriv->btcoexist.current_state |= BT_COEX_STATE_BT_INQ_PAGE; + if(hal_coex_8821ae.bt_inquiry_page_cnt >= 4) + hal_coex_8821ae.bt_inquiry_page_cnt = 0; + hal_coex_8821ae.bt_inquiry_page_cnt++; + } else { + rtlpcipriv->btcoexist.current_state &=~ BT_COEX_STATE_BT_INQ_PAGE; + } +#endif +} + +void rtl8821ae_dm_bt_reset_action_profile_state(struct ieee80211_hw *hw) +{ + struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); + + rtlpcipriv->btcoexist.current_state &= ~\ + (BT_COEX_STATE_PROFILE_HID | BT_COEX_STATE_PROFILE_A2DP| + BT_COEX_STATE_PROFILE_PAN | BT_COEX_STATE_PROFILE_SCO); + + rtlpcipriv->btcoexist.current_state &= ~\ + (BT_COEX_STATE_BTINFO_COMMON | BT_COEX_STATE_BTINFO_B_HID_SCOESCO| + BT_COEX_STATE_BTINFO_B_FTP_A2DP); +} + +void _rtl8821ae_dm_bt_coexist_2_ant(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); + u8 bt_retry_cnt; + u8 bt_info_original; + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("[BTCoex] Get bt info by fw!!\n")); + + _rtl8821ae_dm_bt_check_wifi_state(hw); + + if (hal_coex_8821ae.b_c2h_bt_info_req_sent) { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("[BTCoex] c2h for bt_info not rcvd yet!!\n")); + } + + bt_retry_cnt = hal_coex_8821ae.bt_retry_cnt; + bt_info_original = hal_coex_8821ae.c2h_bt_info_original; + + // when bt inquiry or page scan, we have to set h2c 0x25 + // ignore wlanact for continuous 4x2secs + rtl8821ae_dm_bt_inq_page_monitor(hw); + rtl8821ae_dm_bt_reset_action_profile_state(hw); + + if(rtl8821ae_dm_bt_is_2_ant_common_action(hw)) { + rtlpcipriv->btcoexist.bt_profile_case = BT_COEX_MECH_COMMON; + rtlpcipriv->btcoexist.bt_profile_action= BT_COEX_MECH_COMMON; + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("Action 2-Ant common.\n")); + } else { + if( (bt_info_original & BTINFO_B_HID) || + (bt_info_original & BTINFO_B_SCO_BUSY) || + (bt_info_original & BTINFO_B_SCO_ESCO) ) { + rtlpcipriv->btcoexist.current_state |= BT_COEX_STATE_BTINFO_B_HID_SCOESCO; + rtlpcipriv->btcoexist.bt_profile_case = BT_COEX_MECH_HID_SCO_ESCO; + rtlpcipriv->btcoexist.bt_profile_action = BT_COEX_MECH_HID_SCO_ESCO; + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("[BTCoex], BTInfo: bHid|bSCOBusy|bSCOeSCO\n")); + rtl8821ae_dm_bt_2_ant_hid_sco_esco(hw); + } else if( (bt_info_original & BTINFO_B_FTP) || + (bt_info_original & BTINFO_B_A2DP) ) { + rtlpcipriv->btcoexist.current_state |= BT_COEX_STATE_BTINFO_B_FTP_A2DP; + rtlpcipriv->btcoexist.bt_profile_case = BT_COEX_MECH_FTP_A2DP; + rtlpcipriv->btcoexist.bt_profile_action = BT_COEX_MECH_FTP_A2DP; + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("BTInfo: bFTP|bA2DP\n")); + rtl8821ae_dm_bt_2_ant_ftp_a2dp(hw); + } else { + rtlpcipriv->btcoexist.current_state |= BT_COEX_STATE_BTINFO_B_HID_SCOESCO; + rtlpcipriv->btcoexist.bt_profile_case = BT_COEX_MECH_NONE; + rtlpcipriv->btcoexist.bt_profile_action= BT_COEX_MECH_NONE; + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("[BTCoex], BTInfo: undefined case!!!!\n")); + rtl8821ae_dm_bt_2_ant_hid_sco_esco(hw); + } + } +} + +void _rtl8821ae_dm_bt_coexist_1_ant(struct ieee80211_hw *hw) +{ + return; +} + +void rtl8821ae_dm_bt_hw_coex_all_off_8723a(struct ieee80211_hw *hw) +{ + rtl8821ae_dm_bt_set_coex_table(hw, 0x5a5aaaaa, 0xcc, 0x3); + rtl8821ae_dm_bt_set_hw_pta_mode(hw, true); +} + +void rtl8821ae_dm_bt_fw_coex_all_off_8723a(struct ieee80211_hw *hw) +{ + rtl8821ae_dm_bt_set_fw_ignore_wlan_act(hw, false); + rtl8821ae_dm_bt_set_fw_3a(hw, 0x0, 0x0, 0x0, 0x8, 0x0); + rtl8821ae_dm_bt_set_fw_2_ant_hid(hw, false, false); + rtl8821ae_dm_bt_set_fw_tra_tdma_ctrl(hw, false, TDMA_2ANT, TDMA_NAV_OFF); + rtl8821ae_dm_bt_set_fw_tdma_ctrl(hw, false, TDMA_2ANT, + TDMA_NAV_OFF, TDMA_DAC_SWING_OFF); + rtl8821ae_dm_bt_set_fw_dac_swing_level(hw, 0); + rtl8821ae_dm_bt_set_fw_bt_hid_info(hw, false); + rtl8821ae_dm_bt_set_fw_bt_retry_index(hw, 2); + rtl8821ae_dm_bt_set_fw_wlan_act(hw, 0x10, 0x10); + rtl8821ae_dm_bt_set_fw_dec_bt_pwr(hw, false); +} + +void rtl8821ae_dm_bt_sw_coex_all_off_8723a(struct ieee80211_hw *hw) +{ + rtl8821ae_dm_bt_agc_table(hw, BT_AGCTABLE_OFF); + rtl8821ae_dm_bt_bb_back_off_level(hw, BT_BB_BACKOFF_OFF); + rtl8821ae_dm_bt_reject_ap_aggregated_packet(hw, false); + + rtl8821ae_dm_bt_set_sw_penalty_tx_rate_adaptive(hw, + BT_TX_RATE_ADAPTIVE_NORMAL); + rtl8821ae_dm_bt_set_sw_rf_rx_lpf_corner(hw, BT_RF_RX_LPF_CORNER_RESUME); + rtl8821ae_dm_bt_set_sw_full_time_dac_swing(hw, false, 0xc0); +} + +void rtl8821ae_dm_bt_query_bt_information(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 h2c_parameter[1] = {0}; + + hal_coex_8821ae.b_c2h_bt_info_req_sent = true; + + h2c_parameter[0] |= BIT(0); + + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("Query Bt information, write 0x38=0x%x\n", h2c_parameter[0])); + + rtl8821ae_fill_h2c_cmd(hw, 0x38, 1, h2c_parameter); +} + +void rtl8821ae_dm_bt_bt_hw_counters_monitor(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); + u32 reg_hp_tx_rx, reg_lp_tx_rx, u32_tmp; + u32 reg_hp_tx=0, reg_hp_rx=0, reg_lp_tx=0, reg_lp_rx=0; + + reg_hp_tx_rx = REG_HIGH_PRIORITY_TXRX; + reg_lp_tx_rx = REG_LOW_PRIORITY_TXRX; + + u32_tmp = rtl_read_dword(rtlpriv, reg_hp_tx_rx); + reg_hp_tx = u32_tmp & MASKLWORD; + reg_hp_rx = (u32_tmp & MASKHWORD)>>16; + + u32_tmp = rtl_read_dword(rtlpriv, reg_lp_tx_rx); + reg_lp_tx = u32_tmp & MASKLWORD; + reg_lp_rx = (u32_tmp & MASKHWORD)>>16; + + if(rtlpcipriv->btcoexist.lps_counter > 1) { + reg_hp_tx %= rtlpcipriv->btcoexist.lps_counter; + reg_hp_rx %= rtlpcipriv->btcoexist.lps_counter; + reg_lp_tx %= rtlpcipriv->btcoexist.lps_counter; + reg_lp_rx %= rtlpcipriv->btcoexist.lps_counter; + } + + hal_coex_8821ae.high_priority_tx = reg_hp_tx; + hal_coex_8821ae.high_priority_rx = reg_hp_rx; + hal_coex_8821ae.low_priority_tx = reg_lp_tx; + hal_coex_8821ae.low_priority_rx = reg_lp_rx; + + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("High Priority Tx/Rx (reg 0x%x)=%x(%d)/%x(%d)\n", + reg_hp_tx_rx, reg_hp_tx, reg_hp_tx, reg_hp_rx, reg_hp_rx)); + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("Low Priority Tx/Rx (reg 0x%x)=%x(%d)/%x(%d)\n", + reg_lp_tx_rx, reg_lp_tx, reg_lp_tx, reg_lp_rx, reg_lp_rx)); + rtlpcipriv->btcoexist.lps_counter = 0; + //rtl_write_byte(rtlpriv, 0x76e, 0xc); +} + +void rtl8821ae_dm_bt_bt_enable_disable_check(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); + bool bt_alife = true; + + if (hal_coex_8821ae.high_priority_tx == 0 && + hal_coex_8821ae.high_priority_rx == 0 && + hal_coex_8821ae.low_priority_tx == 0 && + hal_coex_8821ae.low_priority_rx == 0) { + bt_alife = false; + } + if (hal_coex_8821ae.high_priority_tx == 0xeaea && + hal_coex_8821ae.high_priority_rx == 0xeaea && + hal_coex_8821ae.low_priority_tx == 0xeaea && + hal_coex_8821ae.low_priority_rx == 0xeaea) { + bt_alife = false; + } + if (hal_coex_8821ae.high_priority_tx == 0xffff && + hal_coex_8821ae.high_priority_rx == 0xffff && + hal_coex_8821ae.low_priority_tx == 0xffff && + hal_coex_8821ae.low_priority_rx == 0xffff) { + bt_alife = false; + } + if (bt_alife) { + rtlpcipriv->btcoexist.bt_active_zero_cnt = 0; + rtlpcipriv->btcoexist.b_cur_bt_disabled = false; + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("8821AE BT is enabled !!\n")); + } else { + rtlpcipriv->btcoexist.bt_active_zero_cnt++; + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, + ("8821AE bt all counters=0, %d times!!\n", + rtlpcipriv->btcoexist.bt_active_zero_cnt)); + if (rtlpcipriv->btcoexist.bt_active_zero_cnt >= 2) { + rtlpcipriv->btcoexist.b_cur_bt_disabled = true; + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("8821AE BT is disabled !!\n")); + } + } + if (rtlpcipriv->btcoexist.b_pre_bt_disabled != + rtlpcipriv->btcoexist.b_cur_bt_disabled) { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("8821AE BT is from %s to %s!!\n", + (rtlpcipriv->btcoexist.b_pre_bt_disabled ? "disabled":"enabled"), + (rtlpcipriv->btcoexist.b_cur_bt_disabled ? "disabled":"enabled"))); + rtlpcipriv->btcoexist.b_pre_bt_disabled + = rtlpcipriv->btcoexist.b_cur_bt_disabled; + } +} + + +void rtl8821ae_dm_bt_coexist(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); + + rtl8821ae_dm_bt_query_bt_information(hw); + rtl8821ae_dm_bt_bt_hw_counters_monitor(hw); + rtl8821ae_dm_bt_bt_enable_disable_check(hw); + + if (rtlpcipriv->btcoexist.bt_ant_num == ANT_X2) { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("[BTCoex], 2 Ant mechanism\n")); + _rtl8821ae_dm_bt_coexist_2_ant(hw); + } else { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("[BTCoex], 1 Ant mechanism\n")); + _rtl8821ae_dm_bt_coexist_1_ant(hw); + } + + if (!rtl8821ae_dm_bt_is_same_coexist_state(hw)) { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("[BTCoex], Coexist State[bitMap] change from 0x%x%8x to 0x%x%8x\n", + rtlpcipriv->btcoexist.previous_state_h, + rtlpcipriv->btcoexist.previous_state, + rtlpcipriv->btcoexist.current_state_h, + rtlpcipriv->btcoexist.current_state)); + rtlpcipriv->btcoexist.previous_state + = rtlpcipriv->btcoexist.current_state; + rtlpcipriv->btcoexist.previous_state_h + = rtlpcipriv->btcoexist.current_state_h; + } +} + +void rtl8821ae_dm_bt_parse_bt_info(struct ieee80211_hw *hw, u8 * tmp_buf, u8 len) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); + u8 bt_info; + u8 i; + + hal_coex_8821ae.b_c2h_bt_info_req_sent = false; + hal_coex_8821ae.bt_retry_cnt = 0; + for (i = 0; i < len; i++) { + if (i == 0) { + hal_coex_8821ae.c2h_bt_info_original = tmp_buf[i]; + } else if (i == 1) { + hal_coex_8821ae.bt_retry_cnt = tmp_buf[i]; + } + if(i == len-1) { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("0x%2x]", tmp_buf[i])); + } else { + RT_TRACE(COMP_BT_COEXIST, DBG_TRACE, ("0x%2x, ", tmp_buf[i])); + } + } + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, + ("BT info bt_info (Data)= 0x%x\n",hal_coex_8821ae.c2h_bt_info_original)); + bt_info = hal_coex_8821ae.c2h_bt_info_original; + + if(bt_info & BIT(2)){ + hal_coex_8821ae.b_c2h_bt_inquiry_page = true; + } else { + hal_coex_8821ae.b_c2h_bt_inquiry_page = false; + } + + if (bt_info & BTINFO_B_CONNECTION) { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("[BTC2H], BTInfo: bConnect=true\n")); + rtlpcipriv->btcoexist.b_bt_busy = true; + rtlpcipriv->btcoexist.current_state &= ~BT_COEX_STATE_BT_IDLE; + } else { + RT_TRACE(COMP_BT_COEXIST, DBG_DMESG, ("[BTC2H], BTInfo: bConnect=false\n")); + rtlpcipriv->btcoexist.b_bt_busy = false; + rtlpcipriv->btcoexist.current_state |= BT_COEX_STATE_BT_IDLE; + } +} +void rtl_8821ae_c2h_command_handle(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct c2h_evt_hdr c2h_event; + u8 * ptmp_buf = NULL; + u8 index = 0; + u8 u1b_tmp = 0; + memset(&c2h_event, 0, sizeof(c2h_event)); + u1b_tmp = rtl_read_byte(rtlpriv, REG_C2HEVT_MSG_NORMAL); + RT_TRACE(COMP_FW, DBG_DMESG, + ("&&&&&&: REG_C2HEVT_MSG_NORMAL is 0x%x\n", u1b_tmp)); + c2h_event.cmd_id = u1b_tmp & 0xF; + c2h_event.cmd_len = (u1b_tmp & 0xF0) >> 4; + c2h_event.cmd_seq = rtl_read_byte(rtlpriv, REG_C2HEVT_MSG_NORMAL + 1); + RT_TRACE(COMP_FW, DBG_DMESG, ("cmd_id: %d, cmd_len: %d, cmd_seq: %d\n", + c2h_event.cmd_id , c2h_event.cmd_len, c2h_event.cmd_seq)); + u1b_tmp = rtl_read_byte(rtlpriv, 0x01AF); + if (u1b_tmp == C2H_EVT_HOST_CLOSE) { + return; + } else if (u1b_tmp != C2H_EVT_FW_CLOSE) { + rtl_write_byte(rtlpriv, 0x1AF, 0x00); + return; + } + ptmp_buf = (u8 *) kmalloc(c2h_event.cmd_len, GFP_KERNEL); + if(ptmp_buf == NULL) { + RT_TRACE(COMP_FW, DBG_TRACE, ("malloc cmd buf failed\n")); + return; + } + + /* Read the content */ + for (index = 0; index < c2h_event.cmd_len; index ++) { + ptmp_buf[index] = rtl_read_byte(rtlpriv, REG_C2HEVT_MSG_NORMAL + 2+ index); + } + + switch(c2h_event.cmd_id) { + case C2H_BT_RSSI: + break; + + case C2H_BT_OP_MODE: + break; + + case BT_INFO: + RT_TRACE(COMP_FW, DBG_TRACE, + ("BT info Byte[0] (ID) is 0x%x\n", c2h_event.cmd_id)); + RT_TRACE(COMP_FW, DBG_TRACE, + ("BT info Byte[1] (Seq) is 0x%x\n", c2h_event.cmd_seq)); + RT_TRACE(COMP_FW, DBG_TRACE, + ("BT info Byte[2] (Data)= 0x%x\n", ptmp_buf[0])); + + if (rtlpriv->cfg->ops->get_btc_status()){ + rtlpriv->btcoexist.btc_ops->btc_btinfo_notify(rtlpriv, ptmp_buf, c2h_event.cmd_len); + } + break; + default: + break; + } + + if(ptmp_buf) + kfree(ptmp_buf); + + rtl_write_byte(rtlpriv, 0x01AF, C2H_EVT_HOST_CLOSE); +} + + + --- linux-3.13.0.orig/drivers/staging/rtl8821ae/rtl8821ae/hal_btc.h +++ linux-3.13.0/drivers/staging/rtl8821ae/rtl8821ae/hal_btc.h @@ -0,0 +1,160 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * Larry Finger + * + *****************************************************************************/ + +#ifndef __RTL8821AE_HAL_BTC_H__ +#define __RTL8821AE_HAL_BTC_H__ + +#include "../wifi.h" +#include "btc.h" +#include "hal_bt_coexist.h" + +#define BT_TXRX_CNT_THRES_1 1200 +#define BT_TXRX_CNT_THRES_2 1400 +#define BT_TXRX_CNT_THRES_3 3000 +#define BT_TXRX_CNT_LEVEL_0 0 // < 1200 +#define BT_TXRX_CNT_LEVEL_1 1 // >= 1200 && < 1400 +#define BT_TXRX_CNT_LEVEL_2 2 // >= 1400 +#define BT_TXRX_CNT_LEVEL_3 3 + + + +#define BT_COEX_DISABLE 0 +#define BT_Q_PKT_OFF 0 +#define BT_Q_PKT_ON 1 + +#define BT_TX_PWR_OFF 0 +#define BT_TX_PWR_ON 1 + +/* TDMA mode definition */ +#define TDMA_2ANT 0 +#define TDMA_1ANT 1 +#define TDMA_NAV_OFF 0 +#define TDMA_NAV_ON 1 +#define TDMA_DAC_SWING_OFF 0 +#define TDMA_DAC_SWING_ON 1 + +/* PTA mode related definition */ +#define BT_PTA_MODE_OFF 0 +#define BT_PTA_MODE_ON 1 + +/* Penalty Tx Rate Adaptive */ +#define BT_TX_RATE_ADAPTIVE_NORMAL 0 +#define BT_TX_RATE_ADAPTIVE_LOW_PENALTY 1 + +/* RF Corner */ +#define BT_RF_RX_LPF_CORNER_RESUME 0 +#define BT_RF_RX_LPF_CORNER_SHRINK 1 + +#define C2H_EVT_HOST_CLOSE 0x00 +#define C2H_EVT_FW_CLOSE 0xFF + +enum bt_traffic_mode { + BT_MOTOR_EXT_BE = 0x00, + BT_MOTOR_EXT_GUL = 0x01, + BT_MOTOR_EXT_GUB = 0x02, + BT_MOTOR_EXT_GULB = 0x03 +}; + +enum bt_traffic_mode_profile { + BT_PROFILE_NONE, + BT_PROFILE_A2DP, + BT_PROFILE_PAN, + BT_PROFILE_HID, + BT_PROFILE_SCO +}; + +enum hci_ext_bt_operation { + HCI_BT_OP_NONE = 0x0, + HCI_BT_OP_INQUIRE_START = 0x1, + HCI_BT_OP_INQUIRE_FINISH = 0x2, + HCI_BT_OP_PAGING_START = 0x3, + HCI_BT_OP_PAGING_SUCCESS = 0x4, + HCI_BT_OP_PAGING_UNSUCCESS = 0x5, + HCI_BT_OP_PAIRING_START = 0x6, + HCI_BT_OP_PAIRING_FINISH = 0x7, + HCI_BT_OP_BT_DEV_ENABLE = 0x8, + HCI_BT_OP_BT_DEV_DISABLE = 0x9, + HCI_BT_OP_MAX, +}; + +enum bt_spec { + BT_SPEC_1_0_b = 0x00, + BT_SPEC_1_1 = 0x01, + BT_SPEC_1_2 = 0x02, + BT_SPEC_2_0_EDR = 0x03, + BT_SPEC_2_1_EDR = 0x04, + BT_SPEC_3_0_HS = 0x05, + BT_SPEC_4_0 = 0x06 +}; + +struct c2h_evt_hdr { + u8 cmd_id; + u8 cmd_len; + u8 cmd_seq; +}; + +enum bt_state{ + BT_INFO_STATE_DISABLED = 0, + BT_INFO_STATE_NO_CONNECTION = 1, + BT_INFO_STATE_CONNECT_IDLE = 2, + BT_INFO_STATE_INQ_OR_PAG = 3, + BT_INFO_STATE_ACL_ONLY_BUSY = 4, + BT_INFO_STATE_SCO_ONLY_BUSY = 5, + BT_INFO_STATE_ACL_SCO_BUSY = 6, + BT_INFO_STATE_HID_BUSY = 7, + BT_INFO_STATE_HID_SCO_BUSY = 8, + BT_INFO_STATE_MAX = 7 +}; + +enum rtl8723be_c2h_evt { + C2H_DBG = 0, + C2H_TSF = 1, + C2H_AP_RPT_RSP = 2, + C2H_CCX_TX_RPT = 3, // The FW notify the report of the specific tx packet. + C2H_BT_RSSI = 4, + C2H_BT_OP_MODE = 5, + C2H_HW_INFO_EXCH = 10, + C2H_C2H_H2C_TEST = 11, + BT_INFO = 9, + MAX_C2HEVENT +}; + + + +void rtl8821ae_dm_bt_fw_coex_all_off_8723a(struct ieee80211_hw *hw); +void rtl8821ae_dm_bt_sw_coex_all_off_8723a(struct ieee80211_hw *hw); +void rtl8821ae_dm_bt_hw_coex_all_off_8723a(struct ieee80211_hw *hw); +void rtl8821ae_dm_bt_coexist(struct ieee80211_hw *hw); +void rtl8821ae_dm_bt_set_bt_dm(struct ieee80211_hw *hw, struct btdm_8821ae *p_btdm); +void rtl_8821ae_c2h_command_handle(struct ieee80211_hw * hw); +void rtl_8821ae_bt_wifi_media_status_notify(struct ieee80211_hw * hw, bool mstatus); +void rtl8821ae_dm_bt_turn_off_bt_coexist_before_enter_lps(struct ieee80211_hw *hw); + + + +#endif --- linux-3.13.0.orig/drivers/staging/rtl8821ae/rtl8821ae/hw.c +++ linux-3.13.0/drivers/staging/rtl8821ae/rtl8821ae/hw.c @@ -0,0 +1,3346 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#include "../wifi.h" +#include "../efuse.h" +#include "../base.h" +#include "../regd.h" +#include "../cam.h" +#include "../ps.h" +#include "../pci.h" +#include "reg.h" +#include "def.h" +#include "phy.h" +#include "dm.h" +#include "fw.h" +#include "led.h" +#include "hw.h" +#include "pwrseqcmd.h" +#include "pwrseq.h" +#include "btc.h" +#include "../btcoexist/rtl_btc.h" + +#define LLT_CONFIG 5 + +static void _rtl8821ae_return_beacon_queue_skb(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + struct rtl8192_tx_ring *ring = &rtlpci->tx_ring[BEACON_QUEUE]; + + while (skb_queue_len(&ring->queue)) { + struct rtl_tx_desc *entry = &ring->desc[ring->idx]; + struct sk_buff *skb = __skb_dequeue(&ring->queue); + + pci_unmap_single(rtlpci->pdev, + le32_to_cpu(rtlpriv->cfg->ops->get_desc( + (u8 *) entry, true, HW_DESC_TXBUFF_ADDR)), + skb->len, PCI_DMA_TODEVICE); + kfree_skb(skb); + ring->idx = (ring->idx + 1) % ring->entries; + } + +} + +static void _rtl8821ae_set_bcn_ctrl_reg(struct ieee80211_hw *hw, + u8 set_bits, u8 clear_bits) +{ + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + struct rtl_priv *rtlpriv = rtl_priv(hw); + + rtlpci->reg_bcn_ctrl_val |= set_bits; + rtlpci->reg_bcn_ctrl_val &= ~clear_bits; + + rtl_write_byte(rtlpriv, REG_BCN_CTRL, (u8) rtlpci->reg_bcn_ctrl_val); +} + +void _rtl8821ae_stop_tx_beacon(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 tmp1byte; + + tmp1byte = rtl_read_byte(rtlpriv, REG_FWHW_TXQ_CTRL + 2); + rtl_write_byte(rtlpriv, REG_FWHW_TXQ_CTRL + 2, tmp1byte & (~BIT(6))); + rtl_write_byte(rtlpriv, REG_TBTT_PROHIBIT + 1, 0x64); + tmp1byte = rtl_read_byte(rtlpriv, REG_TBTT_PROHIBIT + 2); + tmp1byte &= ~(BIT(0)); + rtl_write_byte(rtlpriv, REG_TBTT_PROHIBIT + 2, tmp1byte); +} + +void _rtl8821ae_resume_tx_beacon(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 tmp1byte; + + tmp1byte = rtl_read_byte(rtlpriv, REG_FWHW_TXQ_CTRL + 2); + rtl_write_byte(rtlpriv, REG_FWHW_TXQ_CTRL + 2, tmp1byte | BIT(6)); + rtl_write_byte(rtlpriv, REG_TBTT_PROHIBIT + 1, 0xff); + tmp1byte = rtl_read_byte(rtlpriv, REG_TBTT_PROHIBIT + 2); + tmp1byte |= BIT(0); + rtl_write_byte(rtlpriv, REG_TBTT_PROHIBIT + 2, tmp1byte); +} + +static void _rtl8821ae_enable_bcn_sub_func(struct ieee80211_hw *hw) +{ + _rtl8821ae_set_bcn_ctrl_reg(hw, 0, BIT(1)); +} + +static void _rtl8821ae_disable_bcn_sub_func(struct ieee80211_hw *hw) +{ + _rtl8821ae_set_bcn_ctrl_reg(hw, BIT(1), 0); +} + +static void _rtl8821ae_set_fw_clock_on(struct ieee80211_hw *hw, + u8 rpwm_val, bool b_need_turn_off_ckk) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + bool b_support_remote_wake_up; + u32 count = 0,isr_regaddr,content; + bool b_schedule_timer = b_need_turn_off_ckk; + rtlpriv->cfg->ops->get_hw_reg(hw, HAL_DEF_WOWLAN, + (u8 *) (&b_support_remote_wake_up)); + + if (!rtlhal->bfw_ready) + return; + if (!rtlpriv->psc.b_fw_current_inpsmode) + return; + + while (1) { + spin_lock_bh(&rtlpriv->locks.fw_ps_lock); + if (rtlhal->bfw_clk_change_in_progress) { + while (rtlhal->bfw_clk_change_in_progress) { + spin_unlock_bh(&rtlpriv->locks.fw_ps_lock); + count++; + udelay(100); + if (count > 1000) + return; + spin_lock_bh(&rtlpriv->locks.fw_ps_lock); + } + spin_unlock_bh(&rtlpriv->locks.fw_ps_lock); + } else { + rtlhal->bfw_clk_change_in_progress = false; + spin_unlock_bh(&rtlpriv->locks.fw_ps_lock); + } + } + + if (IS_IN_LOW_POWER_STATE_8821AE(rtlhal->fw_ps_state)) { + rtlpriv->cfg->ops->get_hw_reg(hw, HW_VAR_SET_RPWM, + (u8 *) (&rpwm_val)); + if (FW_PS_IS_ACK(rpwm_val)) { + isr_regaddr = REG_HISR; + content = rtl_read_dword(rtlpriv, isr_regaddr); + while (!(content & IMR_CPWM) && (count < 500)) { + udelay(50); + count++; + content = rtl_read_dword(rtlpriv, isr_regaddr); + } + + if (content & IMR_CPWM) { + rtl_write_word(rtlpriv,isr_regaddr, 0x0100); + rtlhal->fw_ps_state = FW_PS_STATE_RF_ON_8821AE; + RT_TRACE(COMP_POWER, DBG_LOUD, ("Receive CPWM INT!!! Set pHalData->FwPSState = %X\n", rtlhal->fw_ps_state)); + } + } + + spin_lock_bh(&rtlpriv->locks.fw_ps_lock); + rtlhal->bfw_clk_change_in_progress = false; + spin_unlock_bh(&rtlpriv->locks.fw_ps_lock); + if (b_schedule_timer) { + mod_timer(&rtlpriv->works.fw_clockoff_timer, + jiffies + MSECS(10)); + } + + } else { + spin_lock_bh(&rtlpriv->locks.fw_ps_lock); + rtlhal->bfw_clk_change_in_progress = false; + spin_unlock_bh(&rtlpriv->locks.fw_ps_lock); + } + + +} + +static void _rtl8821ae_set_fw_clock_off(struct ieee80211_hw *hw, + u8 rpwm_val) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + struct rtl8192_tx_ring *ring; + enum rf_pwrstate rtstate; + bool b_schedule_timer = false; + u8 queue; + + if (!rtlhal->bfw_ready) + return; + if (!rtlpriv->psc.b_fw_current_inpsmode) + return; + if (!rtlhal->ballow_sw_to_change_hwclc) + return; + rtlpriv->cfg->ops->get_hw_reg(hw,HW_VAR_RF_STATE,(u8 *)(&rtstate)); + if (rtstate == ERFOFF ||rtlpriv->psc.inactive_pwrstate ==ERFOFF) + return; + + for (queue = 0; queue < RTL_PCI_MAX_TX_QUEUE_COUNT; queue++) { + ring = &rtlpci->tx_ring[queue]; + if (skb_queue_len(&ring->queue)) { + b_schedule_timer = true; + break; + } + } + + if (b_schedule_timer) { + mod_timer(&rtlpriv->works.fw_clockoff_timer, + jiffies + MSECS(10)); + return; + } + + if (FW_PS_STATE(rtlhal->fw_ps_state) != FW_PS_STATE_RF_OFF_LOW_PWR_8821AE) { + spin_lock_bh(&rtlpriv->locks.fw_ps_lock); + if (!rtlhal->bfw_clk_change_in_progress) { + rtlhal->bfw_clk_change_in_progress = true; + spin_unlock_bh(&rtlpriv->locks.fw_ps_lock); + rtlhal->fw_ps_state = FW_PS_STATE(rpwm_val); + rtl_write_word(rtlpriv, REG_HISR, 0x0100); + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_SET_RPWM, + (u8 *) (&rpwm_val)); + spin_lock_bh(&rtlpriv->locks.fw_ps_lock); + rtlhal->bfw_clk_change_in_progress = false; + spin_unlock_bh(&rtlpriv->locks.fw_ps_lock); + } else { + spin_unlock_bh(&rtlpriv->locks.fw_ps_lock); + mod_timer(&rtlpriv->works.fw_clockoff_timer, + jiffies + MSECS(10)); + } + } + +} + +static void _rtl8821ae_set_fw_ps_rf_on(struct ieee80211_hw *hw) +{ + u8 rpwm_val = 0; + rpwm_val |= (FW_PS_STATE_RF_OFF_8821AE | FW_PS_ACK); + _rtl8821ae_set_fw_clock_on(hw, rpwm_val, true); +} + +static void _rtl8821ae_fwlps_leave(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + bool b_fw_current_inps = false; + u8 rpwm_val = 0,fw_pwrmode = FW_PS_ACTIVE_MODE; + + if (ppsc->b_low_power_enable){ + rpwm_val = (FW_PS_STATE_ALL_ON_8821AE|FW_PS_ACK);/* RF on */ + _rtl8821ae_set_fw_clock_on(hw, rpwm_val, false); + rtlhal->ballow_sw_to_change_hwclc = false; + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_H2C_FW_PWRMODE, + (u8 *) (&fw_pwrmode)); + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_FW_PSMODE_STATUS, + (u8 *) (&b_fw_current_inps)); + } else { + rpwm_val = FW_PS_STATE_ALL_ON_8821AE; /* RF on */ + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_SET_RPWM, + (u8 *) (&rpwm_val)); + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_H2C_FW_PWRMODE, + (u8 *) (&fw_pwrmode)); + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_FW_PSMODE_STATUS, + (u8 *) (&b_fw_current_inps)); + } + +} + +static void _rtl8821ae_fwlps_enter(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + bool b_fw_current_inps = true; + u8 rpwm_val; + + if (ppsc->b_low_power_enable){ + rpwm_val = FW_PS_STATE_RF_OFF_LOW_PWR_8821AE; /* RF off */ + rtlpriv->cfg->ops->set_hw_reg(hw, + HW_VAR_FW_PSMODE_STATUS, + (u8 *) (&b_fw_current_inps)); + rtlpriv->cfg->ops->set_hw_reg(hw, + HW_VAR_H2C_FW_PWRMODE, + (u8 *) (&ppsc->fwctrl_psmode)); + rtlhal->ballow_sw_to_change_hwclc = true; + _rtl8821ae_set_fw_clock_off(hw, rpwm_val); + + + } else { + rpwm_val = FW_PS_STATE_RF_OFF_8821AE; /* RF off */ + rtlpriv->cfg->ops->set_hw_reg(hw, + HW_VAR_FW_PSMODE_STATUS, + (u8 *) (&b_fw_current_inps)); + rtlpriv->cfg->ops->set_hw_reg(hw, + HW_VAR_H2C_FW_PWRMODE, + (u8 *) (&ppsc->fwctrl_psmode)); + rtlpriv->cfg->ops->set_hw_reg(hw, + HW_VAR_SET_RPWM, + (u8 *) (&rpwm_val)); + } + +} + +void rtl8821ae_get_hw_reg(struct ieee80211_hw *hw, u8 variable, u8 *val) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + + switch (variable) { + case HW_VAR_ETHER_ADDR: + *((u32 *)(val)) = rtl_read_dword(rtlpriv, REG_MACID); + *((u16 *)(val+4)) = rtl_read_word(rtlpriv, REG_MACID + 4); + break; + case HW_VAR_BSSID: + *((u32 *)(val)) = rtl_read_dword(rtlpriv, REG_BSSID); + *((u16 *)(val+4)) = rtl_read_word(rtlpriv, REG_BSSID+4); + break; + case HW_VAR_MEDIA_STATUS: + val[0] = rtl_read_byte(rtlpriv, REG_CR+2) & 0x3; + break; + case HW_VAR_SLOT_TIME: + *((u8 *)(val)) = mac->slot_time; + break; + case HW_VAR_BEACON_INTERVAL: + *((u16 *)(val)) = rtl_read_word(rtlpriv, REG_BCN_INTERVAL); + break; + case HW_VAR_ATIM_WINDOW: + *((u16 *)(val)) = rtl_read_word(rtlpriv, REG_ATIMWND); + break; + case HW_VAR_RCR: + *((u32 *) (val)) = rtlpci->receive_config; + break; + case HW_VAR_RF_STATE: + *((enum rf_pwrstate *)(val)) = ppsc->rfpwr_state; + break; + case HW_VAR_FWLPS_RF_ON:{ + enum rf_pwrstate rfState; + u32 val_rcr; + + rtlpriv->cfg->ops->get_hw_reg(hw, + HW_VAR_RF_STATE, + (u8 *) (&rfState)); + if (rfState == ERFOFF) { + *((bool *) (val)) = true; + } else { + val_rcr = rtl_read_dword(rtlpriv, REG_RCR); + val_rcr &= 0x00070000; + if (val_rcr) + *((bool *) (val)) = false; + else + *((bool *) (val)) = true; + } + break; + } + case HW_VAR_FW_PSMODE_STATUS: + *((bool *) (val)) = ppsc->b_fw_current_inpsmode; + break; + case HW_VAR_CORRECT_TSF:{ + u64 tsf; + u32 *ptsf_low = (u32 *) & tsf; + u32 *ptsf_high = ((u32 *) & tsf) + 1; + + *ptsf_high = rtl_read_dword(rtlpriv, (REG_TSFTR + 4)); + *ptsf_low = rtl_read_dword(rtlpriv, REG_TSFTR); + + *((u64 *) (val)) = tsf; + + break; + } + default: + RT_TRACE(COMP_ERR, DBG_EMERG, + ("switch case not process %x\n",variable)); + break; + } +} + + +void rtl8821ae_set_hw_reg(struct ieee80211_hw *hw, u8 variable, u8 *val) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + u8 idx; + + switch (variable) { + case HW_VAR_ETHER_ADDR:{ + for (idx = 0; idx < ETH_ALEN; idx++) { + rtl_write_byte(rtlpriv, (REG_MACID + idx), + val[idx]); + } + break; + } + case HW_VAR_BASIC_RATE:{ + u16 b_rate_cfg = ((u16 *) val)[0]; + u8 rate_index = 0; + b_rate_cfg = b_rate_cfg & 0x15f; + b_rate_cfg |= 0x01; + rtl_write_byte(rtlpriv, REG_RRSR, b_rate_cfg & 0xff); + rtl_write_byte(rtlpriv, REG_RRSR + 1, + (b_rate_cfg >> 8) & 0xff); + while (b_rate_cfg > 0x1) { + b_rate_cfg = (b_rate_cfg >> 1); + rate_index++; + } + rtl_write_byte(rtlpriv, REG_INIRTS_RATE_SEL, + rate_index); + break; + } + case HW_VAR_BSSID:{ + for (idx = 0; idx < ETH_ALEN; idx++) { + rtl_write_byte(rtlpriv, (REG_BSSID + idx), + val[idx]); + } + break; + } + case HW_VAR_SIFS:{ + rtl_write_byte(rtlpriv, REG_SIFS_CTX + 1, val[0]); + rtl_write_byte(rtlpriv, REG_SIFS_TRX + 1, val[1]); + + rtl_write_byte(rtlpriv, REG_SPEC_SIFS + 1, val[0]); + rtl_write_byte(rtlpriv, REG_MAC_SPEC_SIFS + 1, val[0]); + + if (!mac->ht_enable) + rtl_write_word(rtlpriv, REG_RESP_SIFS_OFDM, + 0x0e0e); + else + rtl_write_word(rtlpriv, REG_RESP_SIFS_OFDM, + *((u16 *) val)); + break; + } + case HW_VAR_SLOT_TIME:{ + u8 e_aci; + + RT_TRACE(COMP_MLME, DBG_LOUD, + ("HW_VAR_SLOT_TIME %x\n", val[0])); + + rtl_write_byte(rtlpriv, REG_SLOT, val[0]); + + for (e_aci = 0; e_aci < AC_MAX; e_aci++) { + rtlpriv->cfg->ops->set_hw_reg(hw, + HW_VAR_AC_PARAM, + (u8 *) (&e_aci)); + } + break; + } + case HW_VAR_ACK_PREAMBLE:{ + u8 reg_tmp; + u8 short_preamble = (bool) (*(u8 *) val); + reg_tmp = rtl_read_byte(rtlpriv, REG_TRXPTCL_CTL+2); + if (short_preamble){ + reg_tmp |= BIT(1); + rtl_write_byte(rtlpriv, REG_TRXPTCL_CTL + 2, reg_tmp); + } else { + reg_tmp &= (~BIT(1)); + rtl_write_byte(rtlpriv, REG_TRXPTCL_CTL + 2, reg_tmp); + } + break; + } + case HW_VAR_WPA_CONFIG: + rtl_write_byte(rtlpriv, REG_SECCFG, *((u8 *) val)); + break; + case HW_VAR_AMPDU_MIN_SPACE:{ + u8 min_spacing_to_set; + u8 sec_min_space; + + min_spacing_to_set = *((u8 *) val); + if (min_spacing_to_set <= 7) { + sec_min_space = 0; + + if (min_spacing_to_set < sec_min_space) + min_spacing_to_set = sec_min_space; + + mac->min_space_cfg = ((mac->min_space_cfg & + 0xf8) | + min_spacing_to_set); + + *val = min_spacing_to_set; + + RT_TRACE(COMP_MLME, DBG_LOUD, + ("Set HW_VAR_AMPDU_MIN_SPACE: %#x\n", + mac->min_space_cfg)); + + rtl_write_byte(rtlpriv, REG_AMPDU_MIN_SPACE, + mac->min_space_cfg); + } + break; + } + case HW_VAR_SHORTGI_DENSITY:{ + u8 density_to_set; + + density_to_set = *((u8 *) val); + mac->min_space_cfg |= (density_to_set << 3); + + RT_TRACE(COMP_MLME, DBG_LOUD, + ("Set HW_VAR_SHORTGI_DENSITY: %#x\n", + mac->min_space_cfg)); + + rtl_write_byte(rtlpriv, REG_AMPDU_MIN_SPACE, + mac->min_space_cfg); + + break; + } + case HW_VAR_AMPDU_FACTOR:{ + u32 ampdu_len = (*((u8 *)val)); + if(rtlhal->hw_type == HARDWARE_TYPE_RTL8812AE) { + if(ampdu_len < VHT_AGG_SIZE_128K) + ampdu_len = (0x2000 << (*((u8 *)val))) -1; + else + ampdu_len = 0x1ffff; + } else if(rtlhal->hw_type == HARDWARE_TYPE_RTL8821AE) { + if(ampdu_len < HT_AGG_SIZE_64K) + ampdu_len = (0x2000 << (*((u8 *)val))) -1; + else + ampdu_len = 0xffff; + } + ampdu_len |= BIT(31); + + rtl_write_dword(rtlpriv, + REG_AMPDU_MAX_LENGTH_8812, ampdu_len); + break; + } + case HW_VAR_AC_PARAM:{ + u8 e_aci = *((u8 *) val); + rtl8821ae_dm_init_edca_turbo(hw); + + if (rtlpci->acm_method != eAcmWay2_SW) + rtlpriv->cfg->ops->set_hw_reg(hw, + HW_VAR_ACM_CTRL, + (u8 *) (&e_aci)); + break; + } + case HW_VAR_ACM_CTRL:{ + u8 e_aci = *((u8 *) val); + union aci_aifsn *p_aci_aifsn = + (union aci_aifsn *)(&(mac->ac[0].aifs)); + u8 acm = p_aci_aifsn->f.acm; + u8 acm_ctrl = rtl_read_byte(rtlpriv, REG_ACMHWCTRL); + + acm_ctrl = + acm_ctrl | ((rtlpci->acm_method == 2) ? 0x0 : 0x1); + + if (acm) { + switch (e_aci) { + case AC0_BE: + acm_ctrl |= AcmHw_BeqEn; + break; + case AC2_VI: + acm_ctrl |= AcmHw_ViqEn; + break; + case AC3_VO: + acm_ctrl |= AcmHw_VoqEn; + break; + default: + RT_TRACE(COMP_ERR, DBG_WARNING, + ("HW_VAR_ACM_CTRL acm set " + "failed: eACI is %d\n", acm)); + break; + } + } else { + switch (e_aci) { + case AC0_BE: + acm_ctrl &= (~AcmHw_BeqEn); + break; + case AC2_VI: + acm_ctrl &= (~AcmHw_ViqEn); + break; + case AC3_VO: + acm_ctrl &= (~AcmHw_BeqEn); + break; + default: + RT_TRACE(COMP_ERR, DBG_EMERG, + ("switch case not process \n")); + break; + } + } + + RT_TRACE(COMP_QOS, DBG_TRACE, + ("SetHwReg8190pci(): [HW_VAR_ACM_CTRL] " + "Write 0x%X\n", acm_ctrl)); + rtl_write_byte(rtlpriv, REG_ACMHWCTRL, acm_ctrl); + break; + } + case HW_VAR_RCR:{ + rtl_write_dword(rtlpriv, REG_RCR, ((u32 *) (val))[0]); + rtlpci->receive_config = ((u32 *) (val))[0]; + break; + } + case HW_VAR_RETRY_LIMIT:{ + u8 retry_limit = ((u8 *) (val))[0]; + + rtl_write_word(rtlpriv, REG_RL, + retry_limit << RETRY_LIMIT_SHORT_SHIFT | + retry_limit << RETRY_LIMIT_LONG_SHIFT); + break; + } + case HW_VAR_DUAL_TSF_RST: + rtl_write_byte(rtlpriv, REG_DUAL_TSF_RST, (BIT(0) | BIT(1))); + break; + case HW_VAR_EFUSE_BYTES: + rtlefuse->efuse_usedbytes = *((u16 *) val); + break; + case HW_VAR_EFUSE_USAGE: + rtlefuse->efuse_usedpercentage = *((u8 *) val); + break; + case HW_VAR_IO_CMD: + rtl8821ae_phy_set_io_cmd(hw, (*(enum io_type *)val)); + break; + case HW_VAR_SET_RPWM:{ + u8 rpwm_val; + + rpwm_val = rtl_read_byte(rtlpriv, REG_PCIE_HRPWM); + udelay(1); + + if (rpwm_val & BIT(7)) { + rtl_write_byte(rtlpriv, REG_PCIE_HRPWM, + (*(u8 *) val)); + } else { + rtl_write_byte(rtlpriv, REG_PCIE_HRPWM, + ((*(u8 *) val) | BIT(7))); + } + + break; + } + case HW_VAR_H2C_FW_PWRMODE:{ + rtl8821ae_set_fw_pwrmode_cmd(hw, (*(u8 *) val)); + break; + } + case HW_VAR_FW_PSMODE_STATUS: + ppsc->b_fw_current_inpsmode = *((bool *) val); + break; + + case HW_VAR_RESUME_CLK_ON: + _rtl8821ae_set_fw_ps_rf_on(hw); + break; + + case HW_VAR_FW_LPS_ACTION:{ + bool b_enter_fwlps = *((bool *) val); + + if (b_enter_fwlps) + _rtl8821ae_fwlps_enter(hw); + else + _rtl8821ae_fwlps_leave(hw); + + break; + } + + case HW_VAR_H2C_FW_JOINBSSRPT:{ + u8 mstatus = (*(u8 *) val); + u8 tmp_regcr, tmp_reg422,bcnvalid_reg; + u8 count = 0, dlbcn_count = 0; + bool b_recover = false; + + if (mstatus == RT_MEDIA_CONNECT) { + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_AID, + NULL); + + tmp_regcr = rtl_read_byte(rtlpriv, REG_CR + 1); + rtl_write_byte(rtlpriv, REG_CR + 1, + (tmp_regcr | BIT(0))); + + _rtl8821ae_set_bcn_ctrl_reg(hw, 0, BIT(3)); + _rtl8821ae_set_bcn_ctrl_reg(hw, BIT(4), 0); + + tmp_reg422 = + rtl_read_byte(rtlpriv, + REG_FWHW_TXQ_CTRL + 2); + rtl_write_byte(rtlpriv, REG_FWHW_TXQ_CTRL + 2, + tmp_reg422 & (~BIT(6))); + if (tmp_reg422 & BIT(6)) + b_recover = true; + + do { + bcnvalid_reg = rtl_read_byte(rtlpriv, REG_TDECTRL+2); + rtl_write_byte(rtlpriv, REG_TDECTRL+2,(bcnvalid_reg | BIT(0))); + _rtl8821ae_return_beacon_queue_skb(hw); + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8812AE) + rtl8812ae_set_fw_rsvdpagepkt(hw, 0); + else + rtl8821ae_set_fw_rsvdpagepkt(hw, 0); + bcnvalid_reg = rtl_read_byte(rtlpriv, REG_TDECTRL+2); + count = 0; + while (!(bcnvalid_reg & BIT(0)) && count <20){ + count++; + udelay(10); + bcnvalid_reg = rtl_read_byte(rtlpriv, REG_TDECTRL+2); + } + dlbcn_count++; + } while (!(bcnvalid_reg & BIT(0)) && dlbcn_count <5); + + if (bcnvalid_reg & BIT(0)) + rtl_write_byte(rtlpriv, REG_TDECTRL+2, BIT(0)); + + _rtl8821ae_set_bcn_ctrl_reg(hw, BIT(3), 0); + _rtl8821ae_set_bcn_ctrl_reg(hw, 0, BIT(4)); + + if (b_recover) { + rtl_write_byte(rtlpriv, + REG_FWHW_TXQ_CTRL + 2, + tmp_reg422); + } + + rtl_write_byte(rtlpriv, REG_CR + 1, + (tmp_regcr & ~(BIT(0)))); + } + rtl8821ae_set_fw_joinbss_report_cmd(hw, (*(u8 *) val)); + + break; + } + case HW_VAR_H2C_FW_P2P_PS_OFFLOAD:{ + rtl8821ae_set_p2p_ps_offload_cmd(hw, (*(u8 *) val)); + break; + } + + case HW_VAR_AID:{ + u16 u2btmp; + u2btmp = rtl_read_word(rtlpriv, REG_BCN_PSR_RPT); + u2btmp &= 0xC000; + rtl_write_word(rtlpriv, REG_BCN_PSR_RPT, (u2btmp | + mac->assoc_id)); + + break; + } + case HW_VAR_CORRECT_TSF:{ + u8 btype_ibss = ((u8 *) (val))[0]; + + if (btype_ibss == true) + _rtl8821ae_stop_tx_beacon(hw); + + _rtl8821ae_set_bcn_ctrl_reg(hw, 0, BIT(3)); + + rtl_write_dword(rtlpriv, REG_TSFTR, + (u32) (mac->tsf & 0xffffffff)); + rtl_write_dword(rtlpriv, REG_TSFTR + 4, + (u32) ((mac->tsf >> 32) & 0xffffffff)); + + _rtl8821ae_set_bcn_ctrl_reg(hw, BIT(3), 0); + + if (btype_ibss == true) + _rtl8821ae_resume_tx_beacon(hw); + + break; + + } + case HW_VAR_NAV_UPPER: { + u32 us_nav_upper = ((u32)*val); + + if(us_nav_upper > HAL_92C_NAV_UPPER_UNIT * 0xFF) + { + RT_TRACE(COMP_INIT , DBG_WARNING, + ("The setting value (0x%08X us) of NAV_UPPER" + " is larger than (%d * 0xFF)!!!\n", + us_nav_upper, HAL_92C_NAV_UPPER_UNIT)); + break; + } + rtl_write_byte(rtlpriv, REG_NAV_UPPER, + ((u8)((us_nav_upper + HAL_92C_NAV_UPPER_UNIT - 1) / HAL_92C_NAV_UPPER_UNIT))); + break; + } + case HW_VAR_KEEP_ALIVE: { + u8 array[2]; + array[0] = 0xff; + array[1] = *((u8 *)val); + rtl8821ae_fill_h2c_cmd(hw, H2C_8821AE_KEEP_ALIVE_CTRL, 2, array); + } + default: + RT_TRACE(COMP_ERR, DBG_EMERG, ("switch case " + "not process %x\n",variable)); + break; + } +} + +static bool _rtl8821ae_llt_write(struct ieee80211_hw *hw, u32 address, u32 data) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + bool status = true; + long count = 0; + u32 value = _LLT_INIT_ADDR(address) | + _LLT_INIT_DATA(data) | _LLT_OP(_LLT_WRITE_ACCESS); + + rtl_write_dword(rtlpriv, REG_LLT_INIT, value); + + do { + value = rtl_read_dword(rtlpriv, REG_LLT_INIT); + if (_LLT_NO_ACTIVE == _LLT_OP_VALUE(value)) + break; + + if (count > POLLING_LLT_THRESHOLD) { + RT_TRACE(COMP_ERR, DBG_EMERG, + ("Failed to polling write LLT done at " + "address %d!\n", address)); + status = false; + break; + } + } while (++count); + + return status; +} + +static bool _rtl8821ae_llt_table_init(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + unsigned short i; + u8 txpktbuf_bndy; + u8 maxPage; + bool status; + + maxPage = 255; + txpktbuf_bndy = 0xF8; + + + rtl_write_byte(rtlpriv, REG_TRXFF_BNDY, txpktbuf_bndy); + rtl_write_word(rtlpriv, REG_TRXFF_BNDY + 2, MAX_RX_DMA_BUFFER_SIZE - 1); + + rtl_write_byte(rtlpriv, REG_TDECTRL + 1, txpktbuf_bndy); + + rtl_write_byte(rtlpriv, REG_TXPKTBUF_BCNQ_BDNY, txpktbuf_bndy); + rtl_write_byte(rtlpriv, REG_TXPKTBUF_MGQ_BDNY, txpktbuf_bndy); + + rtl_write_byte(rtlpriv, REG_PBP, 0x31); + rtl_write_byte(rtlpriv, REG_RX_DRVINFO_SZ, 0x4); + + for (i = 0; i < (txpktbuf_bndy - 1); i++) { + status = _rtl8821ae_llt_write(hw, i, i + 1); + if (true != status) + return status; + } + + status = _rtl8821ae_llt_write(hw, (txpktbuf_bndy - 1), 0xFF); + if (true != status) + return status; + + for (i = txpktbuf_bndy; i < maxPage; i++) { + status = _rtl8821ae_llt_write(hw, i, (i + 1)); + if (true != status) + return status; + } + + status = _rtl8821ae_llt_write(hw, maxPage, txpktbuf_bndy); + if (true != status) + return status; + + rtl_write_dword(rtlpriv, REG_RQPN, 0x80e70808); + rtl_write_byte(rtlpriv, REG_RQPN_NPQ, 0x00); + + return true; +} + +static void _rtl8821ae_gen_refresh_led_state(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + struct rtl_led *pLed0 = &(pcipriv->ledctl.sw_led0); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + + if (rtlpriv->rtlhal.up_first_time) + return; + + if (ppsc->rfoff_reason == RF_CHANGE_BY_IPS) + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8812AE) + rtl8812ae_sw_led_on(hw, pLed0); + else + rtl8821ae_sw_led_on(hw, pLed0); + else if (ppsc->rfoff_reason == RF_CHANGE_BY_INIT) + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8812AE) + rtl8812ae_sw_led_on(hw, pLed0); + else + rtl8821ae_sw_led_on(hw, pLed0); + else + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8812AE) + rtl8812ae_sw_led_off(hw, pLed0); + else + rtl8821ae_sw_led_off(hw, pLed0); +} + +static bool _rtl8821ae_init_mac(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + + u8 bytetmp = 0; + u16 wordtmp = 0; + bool b_mac_func_enable = rtlhal->b_mac_func_enable; + + rtl_write_byte(rtlpriv, REG_RSV_CTRL, 0x00); + + /*Auto Power Down to CHIP-off State*/ + bytetmp = rtl_read_byte(rtlpriv, REG_APS_FSMCO + 1) & (~BIT(7)); + rtl_write_byte(rtlpriv, REG_APS_FSMCO + 1, bytetmp); + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8812AE) { + /* HW Power on sequence*/ + if(!rtl_hal_pwrseqcmdparsing(rtlpriv, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, + PWR_INTF_PCI_MSK, RTL8812_NIC_ENABLE_FLOW)) { + RT_TRACE(COMP_INIT,DBG_LOUD,("init 8812 MAC Fail as power on failure\n")); + return false; + } + } else { + /* HW Power on sequence */ + if (!rtl_hal_pwrseqcmdparsing(rtlpriv, PWR_CUT_A_MSK, PWR_FAB_ALL_MSK, + PWR_INTF_PCI_MSK, RTL8821A_NIC_ENABLE_FLOW)){ + RT_TRACE(COMP_INIT,DBG_LOUD,("init 8821 MAC Fail as power on failure\n")); + return false; + } + } + + bytetmp = rtl_read_byte(rtlpriv, REG_APS_FSMCO) | BIT(4); + rtl_write_byte(rtlpriv, REG_APS_FSMCO, bytetmp); + + bytetmp = rtl_read_byte(rtlpriv, REG_CR); + bytetmp = 0xff; + rtl_write_byte(rtlpriv, REG_CR, bytetmp); + mdelay(2); + + bytetmp |= 0x7f; + rtl_write_byte(rtlpriv, REG_HWSEQ_CTRL, bytetmp); + mdelay(2); + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8821AE) { + bytetmp = rtl_read_byte(rtlpriv, REG_SYS_CFG + 3); + if (bytetmp & BIT(0)) { + bytetmp = rtl_read_byte(rtlpriv, 0x7c); + bytetmp |= BIT(6); + rtl_write_byte(rtlpriv, 0x7c, bytetmp); + } + } + + bytetmp = rtl_read_byte(rtlpriv, REG_GPIO_MUXCFG + 1); + bytetmp &= ~BIT(4); + rtl_write_byte(rtlpriv, REG_GPIO_MUXCFG + 1, bytetmp); + + rtl_write_word(rtlpriv, REG_CR, 0x2ff); + + if (!b_mac_func_enable) { + if (!_rtl8821ae_llt_table_init(hw)) + return false; + } + + rtl_write_dword(rtlpriv, REG_HISR, 0xffffffff); + rtl_write_dword(rtlpriv, REG_HISRE, 0xffffffff); + + /* Enable FW Beamformer Interrupt */ + bytetmp = rtl_read_byte(rtlpriv, REG_FWIMR + 3); + rtl_write_byte(rtlpriv, REG_FWIMR + 3, bytetmp | BIT(6)); + + wordtmp = rtl_read_word(rtlpriv, REG_TRXDMA_CTRL); + wordtmp &= 0xf; + wordtmp |= 0xF5B1; + rtl_write_word(rtlpriv, REG_TRXDMA_CTRL, wordtmp); + + rtl_write_byte(rtlpriv, REG_FWHW_TXQ_CTRL + 1, 0x1F); + rtl_write_dword(rtlpriv, REG_RCR, rtlpci->receive_config); + rtl_write_word(rtlpriv, REG_RXFLTMAP2, 0xFFFF); + /*low address*/ + rtl_write_dword(rtlpriv, REG_BCNQ_DESA, + rtlpci->tx_ring[BEACON_QUEUE].dma & DMA_BIT_MASK(32)); + rtl_write_dword(rtlpriv, REG_MGQ_DESA, + rtlpci->tx_ring[MGNT_QUEUE].dma & DMA_BIT_MASK(32)); + rtl_write_dword(rtlpriv, REG_VOQ_DESA, + rtlpci->tx_ring[VO_QUEUE].dma & DMA_BIT_MASK(32)); + rtl_write_dword(rtlpriv, REG_VIQ_DESA, + rtlpci->tx_ring[VI_QUEUE].dma & DMA_BIT_MASK(32)); + rtl_write_dword(rtlpriv, REG_BEQ_DESA, + rtlpci->tx_ring[BE_QUEUE].dma & DMA_BIT_MASK(32)); + rtl_write_dword(rtlpriv, REG_BKQ_DESA, + rtlpci->tx_ring[BK_QUEUE].dma & DMA_BIT_MASK(32)); + rtl_write_dword(rtlpriv, REG_HQ_DESA, + rtlpci->tx_ring[HIGH_QUEUE].dma & DMA_BIT_MASK(32)); + rtl_write_dword(rtlpriv, REG_RX_DESA, + rtlpci->rx_ring[RX_MPDU_QUEUE].dma & DMA_BIT_MASK(32)); + + rtl_write_byte(rtlpriv, REG_PCIE_CTRL_REG + 3, 0x77); + + rtl_write_dword(rtlpriv, REG_INT_MIG, 0); + + rtl_write_byte(rtlpriv, REG_SECONDARY_CCA_CTRL, 0x3); + _rtl8821ae_gen_refresh_led_state(hw); + + return true; +} + +static void _rtl8821ae_hw_configure(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + u32 reg_rrsr; + + reg_rrsr = RATE_ALL_CCK | RATE_ALL_OFDM_AG; + + rtl_write_dword(rtlpriv, REG_RRSR, reg_rrsr); + /* ARFB table 9 for 11ac 5G 2SS */ + rtl_write_dword(rtlpriv, REG_ARFR0 + 4, 0xfffff000); + /* ARFB table 10 for 11ac 5G 1SS */ + rtl_write_dword(rtlpriv, REG_ARFR1 + 4, 0x003ff000); + /* ARFB table 11 for 11ac 24G 1SS */ + rtl_write_dword(rtlpriv, REG_ARFR2, 0x00000015); + rtl_write_dword(rtlpriv, REG_ARFR2 + 4, 0x003ff000); + /* ARFB table 12 for 11ac 24G 1SS */ + rtl_write_dword(rtlpriv, REG_ARFR3, 0x00000015); + rtl_write_dword(rtlpriv, REG_ARFR3 + 4, 0xffcff000); + /* 0x420[7] = 0 , enable retry AMPDU in new AMPD not singal MPDU. */ + rtl_write_word(rtlpriv, REG_FWHW_TXQ_CTRL, 0x1F00); + rtl_write_byte(rtlpriv, REG_AMPDU_MAX_TIME, 0x70); + + /*Set retry limit*/ + rtl_write_word(rtlpriv, REG_RL, 0x0707); + + + /* Set Data / Response auto rate fallack retry count*/ + rtl_write_dword(rtlpriv, REG_DARFRC, 0x01000000); + rtl_write_dword(rtlpriv, REG_DARFRC + 4, 0x07060504); + rtl_write_dword(rtlpriv, REG_RARFRC, 0x01000000); + rtl_write_dword(rtlpriv, REG_RARFRC + 4, 0x07060504); + + rtlpci->reg_bcn_ctrl_val = 0x1d; + rtl_write_byte(rtlpriv, REG_BCN_CTRL, rtlpci->reg_bcn_ctrl_val); + + /* TBTT prohibit hold time. Suggested by designer TimChen. */ + rtl_write_byte(rtlpriv, REG_TBTT_PROHIBIT + 1,0xff); // 8 ms + + /* AGGR_BK_TIME Reg51A 0x16 */ + rtl_write_word(rtlpriv, REG_NAV_PROT_LEN, 0x0040); + + /*For Rx TP. Suggested by SD1 Richard. Added by tynli. 2010.04.12.*/ + rtl_write_dword(rtlpriv, REG_FAST_EDCA_CTRL, 0x03086666); + + rtl_write_byte(rtlpriv, REG_HT_SINGLE_AMPDU, 0x80); + rtl_write_byte(rtlpriv, REG_RX_PKT_LIMIT, 0x20); + rtl_write_word(rtlpriv, REG_MAX_AGGR_NUM, 0x1F1F); +} + +static u16 _rtl8821ae_mdio_read(struct rtl_priv *rtlpriv, u8 addr) +{ + u16 ret = 0; + u8 tmp = 0, count = 0; + + rtl_write_byte(rtlpriv, REG_MDIO_CTL, addr | BIT(6)); + tmp = rtl_read_byte(rtlpriv, REG_MDIO_CTL) & BIT(6) ; + count = 0; + while (tmp && count < 20) { + udelay(10); + tmp = rtl_read_byte(rtlpriv, REG_MDIO_CTL) & BIT(6); + count++; + } + if (0 == tmp) + ret = rtl_read_word(rtlpriv, REG_MDIO_RDATA); + + return ret; +} + +void _rtl8821ae_mdio_write(struct rtl_priv *rtlpriv, u8 addr, u16 data) +{ + u8 tmp = 0, count = 0; + + rtl_write_word(rtlpriv, REG_MDIO_WDATA, data); + rtl_write_byte(rtlpriv, REG_MDIO_CTL, addr | BIT(5)); + tmp = rtl_read_byte(rtlpriv, REG_MDIO_CTL) & BIT(5) ; + count = 0; + while (tmp && count < 20) { + udelay(10); + tmp = rtl_read_byte(rtlpriv, REG_MDIO_CTL) & BIT(5); + count++; + } +} + +static u8 _rtl8821ae_dbi_read(struct rtl_priv *rtlpriv, u16 addr) +{ + u16 read_addr = addr & 0xfffc; + u8 tmp = 0, count = 0, ret = 0; + + rtl_write_word(rtlpriv, REG_DBI_ADDR, read_addr); + rtl_write_byte(rtlpriv, REG_DBI_FLAG, 0x2); + tmp = rtl_read_byte(rtlpriv, REG_DBI_FLAG); + count = 0; + while (tmp && count < 20) { + udelay(10); + tmp = rtl_read_byte(rtlpriv, REG_DBI_FLAG); + count++; + } + if (0 == tmp) { + read_addr = REG_DBI_RDATA + addr % 4; + ret = rtl_read_word(rtlpriv, read_addr); + } + return ret; +} + +void _rtl8821ae_dbi_write(struct rtl_priv *rtlpriv, u16 addr, u8 data) +{ + u8 tmp = 0, count = 0; + u16 wrtie_addr, remainder = addr % 4; + + wrtie_addr = REG_DBI_WDATA + remainder; + rtl_write_byte(rtlpriv, wrtie_addr, data); + + wrtie_addr = (addr & 0xfffc) | (BIT(0) << (remainder + 12)); + rtl_write_word(rtlpriv, REG_DBI_ADDR, wrtie_addr); + + rtl_write_byte(rtlpriv, REG_DBI_FLAG, 0x1); + + tmp = rtl_read_byte(rtlpriv, REG_DBI_FLAG); + count = 0; + while (tmp && count < 20) { + udelay(10); + tmp = rtl_read_byte(rtlpriv, REG_DBI_FLAG); + count++; + } + +} + +static void _rtl8821ae_enable_aspm_back_door(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + u8 tmp; + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8821AE) { + if (_rtl8821ae_mdio_read(rtlpriv, 0x04) != 0x8544) + _rtl8821ae_mdio_write(rtlpriv, 0x04, 0x8544); + + if (_rtl8821ae_mdio_read(rtlpriv, 0x0b) != 0x0070) + _rtl8821ae_mdio_write(rtlpriv, 0x0b, 0x0070); + } + + tmp = _rtl8821ae_dbi_read(rtlpriv, 0x70f); + _rtl8821ae_dbi_write(rtlpriv, 0x70f, tmp | BIT(7)); + + tmp = _rtl8821ae_dbi_read(rtlpriv, 0x719); + _rtl8821ae_dbi_write(rtlpriv, 0x719, tmp | BIT(3) | BIT(4)); + + if(rtlhal->hw_type == HARDWARE_TYPE_RTL8812AE) + { + tmp = _rtl8821ae_dbi_read(rtlpriv, 0x718); + _rtl8821ae_dbi_write(rtlpriv, 0x718, tmp|BIT(4)); + } +} + +void rtl8821ae_enable_hw_security_config(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 sec_reg_value; + u8 tmp; + + RT_TRACE(COMP_INIT, DBG_DMESG, + ("PairwiseEncAlgorithm = %d GroupEncAlgorithm = %d\n", + rtlpriv->sec.pairwise_enc_algorithm, + rtlpriv->sec.group_enc_algorithm)); + + if (rtlpriv->cfg->mod_params->sw_crypto || rtlpriv->sec.use_sw_sec) { + RT_TRACE(COMP_SEC, DBG_DMESG, ("not open hw encryption\n")); + return; + } + + sec_reg_value = SCR_TxEncEnable | SCR_RxDecEnable; + + if (rtlpriv->sec.use_defaultkey) { + sec_reg_value |= SCR_TxUseDK; + sec_reg_value |= SCR_RxUseDK; + } + + sec_reg_value |= (SCR_RXBCUSEDK | SCR_TXBCUSEDK); + + tmp = rtl_read_byte(rtlpriv, REG_CR + 1); + rtl_write_byte(rtlpriv, REG_CR + 1, tmp | BIT(1)); + + RT_TRACE(COMP_SEC, DBG_DMESG, + ("The SECR-value %x \n", sec_reg_value)); + + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_WPA_CONFIG, &sec_reg_value); + +} + +#if 0 +bool _rtl8821ae_check_pcie_dma_hang(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 tmp; + tmp = rtl_read_byte(rtlpriv, REG_DBI_CTRL+3); + if (!(tmp&BIT(2))) { + rtl_write_byte(rtlpriv, REG_DBI_CTRL+3, tmp|BIT(2)); + mdelay(100); + } + + tmp = rtl_read_byte(rtlpriv, REG_DBI_CTRL+3); + if (tmp&BIT(0) || tmp&BIT(1)) { + RT_TRACE(COMP_INIT, DBG_LOUD, + ("rtl8821ae_check_pcie_dma_hang(): TRUE! Reset PCIE DMA!\n")); + return true; + } else { + return false; + } +} + +void _rtl8821ae_reset_pcie_interface_dma(struct ieee80211_hw *hw, + bool mac_power_on, bool watch_dog) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 tmp; + bool release_mac_rx_pause; + u8 backup_pcie_dma_pause; + + RT_TRACE(COMP_INIT, DBG_LOUD, ("_rtl8821ae_reset_pcie_interface_dma()\n")); + + tmp = rtl_read_byte(rtlpriv, REG_RSV_CTRL); + tmp &= ~BIT(1); + rtl_write_byte(rtlpriv, REG_RSV_CTRL, tmp); + tmp = rtl_read_byte(rtlpriv, REG_PMC_DBG_CTRL2); + tmp |= BIT2; + rtl_write_byte(rtlpriv, REG_PMC_DBG_CTRL2, tmp); + + tmp = rtl_read_byte(rtlpriv, REG_RXDMA_CONTROL); + if (tmp & BIT(2)) { + release_mac_rx_pause = false; + } else { + rtl_write_byte(rtlpriv, REG_RXDMA_CONTROL, tmp | BIT(2)); + release_mac_rx_pause = true; + } + backup_pcie_dma_pause = rtl_read_byte(rtlpriv, REG_PCIE_CTRL_REG+1); + if (backup_pcie_dma_pause != 0xFF) + rtl_write_byte(rtlpriv, REG_PCIE_CTRL_REG+1, 0xFF); + + if (mac_power_on) + rtl_write_byte(rtlpriv, REG_CR, 0); + + tmp = rtl_read_byte(rtlpriv, REG_SYS_FUNC_EN+1); + tmp &= ~BIT(0); + rtl_write_byte(rtlpriv, REG_SYS_FUNC_EN+1, tmp); + + tmp = rtl_read_byte(rtlpriv, REG_SYS_FUNC_EN+1); + tmp |= ~BIT(0); + rtl_write_byte(rtlpriv, REG_SYS_FUNC_EN+1, tmp); + + if (mac_power_on) + rtl_write_byte(rtlpriv, REG_CR, 0xFF); + + tmp = rtl_read_byte(rtlpriv, REG_MAC_PHY_CTRL_NORMAL+2); + tmp |= BIT1; + rtl_write_byte(rtlpriv, REG_MAC_PHY_CTRL_NORMAL+2, tmp); + + if (watch_dog) { + u32 rqpn = 0; + u32 rqpn_npq = 0; + u8 tx_page_boundary = _RQPN_Init_8812E(Adapter, &rqpn_npq, &rqpn); + + if(LLT_table_init_8812(Adapter, TX_PAGE_BOUNDARY, RQPN, RQPN_NPQ) == RT_STATUS_FAILURE) + return false; + + PlatformAcquireSpinLock(Adapter, RT_RX_SPINLOCK); + PlatformAcquireSpinLock(Adapter, RT_TX_SPINLOCK); + + // <1> Reset Tx descriptor + Adapter->HalFunc.ResetTxDescHandler(Adapter,Adapter->NumTxDesc); + + // <2> Reset Rx descriptor + Adapter->HalFunc.ResetRxDescHandler(Adapter,Adapter->NumRxDesc); + + // <3> Reset RFDs + FreeRFDs( Adapter, TRUE); + + // <4> Reset TCBs + FreeTCBs( Adapter, TRUE); + + // We should set all Rx desc own bit to 1 to prevent from RDU after enable Rx DMA. 2013.02.18, by tynli. + PrepareAllRxDescBuffer(Adapter); + + PlatformReleaseSpinLock(Adapter, RT_TX_SPINLOCK); + PlatformReleaseSpinLock(Adapter, RT_RX_SPINLOCK); + + // + // Initialize TRx DMA address. + // + // Because set 0x100 to 0x0 will cause the Rx descriptor address 0x340 be cleared to zero on 88EE, + // we should re-initialize Rx desc. address before enable DMA. 2012.11.07. by tynli. + InitTRxDescHwAddress8812AE(Adapter); + } + + // In MAC power on state, BB and RF maybe in ON state, if we release TRx DMA here + // it will cause packets to be started to Tx/Rx, so we release Tx/Rx DMA later. + if(!bInMACPowerOn || bInWatchDog) + { + // 8. release TRX DMA + //write 0x284 bit[18] = 1'b0 + //write 0x301 = 0x00 + if(bReleaseMACRxPause) + { + u1Tmp = PlatformEFIORead1Byte(Adapter, REG_RXDMA_CONTROL); + PlatformEFIOWrite1Byte(Adapter, REG_RXDMA_CONTROL, (u1Tmp&~BIT2)); + } + PlatformEFIOWrite1Byte(Adapter, REG_PCIE_CTRL_REG+1, BackUpPcieDMAPause); + } + + if(IS_HARDWARE_TYPE_8821E(Adapter)) + { + //9. lock system register + // write 0xCC bit[2] = 1'b0 + u1Tmp = PlatformEFIORead1Byte(Adapter, REG_PMC_DBG_CTRL2_8723B); + u1Tmp &= ~(BIT2); + PlatformEFIOWrite1Byte(Adapter, REG_PMC_DBG_CTRL2_8723B, u1Tmp); + } + + return RT_STATUS_SUCCESS; +} +#endif + +// Static MacID Mapping (cf. Used in MacIdDoStaticMapping) ---------- +#define MAC_ID_STATIC_FOR_DEFAULT_PORT 0 +#define MAC_ID_STATIC_FOR_BROADCAST_MULTICAST 1 +#define MAC_ID_STATIC_FOR_BT_CLIENT_START 2 +#define MAC_ID_STATIC_FOR_BT_CLIENT_END 3 +// ----------------------------------------------------------- + +void rtl8821ae_macid_initialize_mediastatus(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 media_rpt[4] = {RT_MEDIA_CONNECT, 1, \ + MAC_ID_STATIC_FOR_BROADCAST_MULTICAST, \ + MAC_ID_STATIC_FOR_BT_CLIENT_END}; + + rtlpriv->cfg->ops->set_hw_reg(hw, \ + HW_VAR_H2C_FW_MEDIASTATUSRPT, media_rpt); + + RT_TRACE(COMP_INIT,DBG_LOUD, \ + ("Initialize MacId media status: from %d to %d\n", \ + MAC_ID_STATIC_FOR_BROADCAST_MULTICAST, \ + MAC_ID_STATIC_FOR_BT_CLIENT_END)); +} + +int rtl8821ae_hw_init(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + bool rtstatus = true; + int err; + u8 tmp_u1b; + u32 nav_upper = WIFI_NAV_UPPER_US; + + rtlpriv->rtlhal.being_init_adapter = true; + rtlpriv->intf_ops->disable_aspm(hw); + + /*YP wowlan not considered*/ + + tmp_u1b = rtl_read_byte(rtlpriv, REG_CR); + if (tmp_u1b!=0 && tmp_u1b != 0xEA) { + rtlhal->b_mac_func_enable = true; + RT_TRACE(COMP_INIT,DBG_LOUD,(" MAC has already power on.\n")); + } else { + rtlhal->b_mac_func_enable = false; + rtlhal->fw_ps_state = FW_PS_STATE_ALL_ON_8821AE; + } + +/* if (_rtl8821ae_check_pcie_dma_hang(hw)) { + _rtl8821ae_reset_pcie_interface_dma(hw,rtlhal->b_mac_func_enable,false); + rtlhal->b_mac_func_enable = false; + } */ + + rtstatus = _rtl8821ae_init_mac(hw); + if (rtstatus != true) { + RT_TRACE(COMP_ERR, DBG_EMERG, ("Init MAC failed\n")); + err = 1; + return err; + } + + tmp_u1b = rtl_read_byte(rtlpriv, REG_SYS_CFG); + tmp_u1b &= 0x7F; + rtl_write_byte(rtlpriv, REG_SYS_CFG, tmp_u1b); + + err = rtl8821ae_download_fw(hw, false); + if (err) { + RT_TRACE(COMP_ERR, DBG_WARNING, + ("Failed to download FW. Init HW " + "without FW now..\n")); + err = 1; + rtlhal->bfw_ready = false; + return err; + } else { + rtlhal->bfw_ready = true; + } + rtlhal->fw_ps_state = FW_PS_STATE_ALL_ON_8821AE; + rtlhal->bfw_clk_change_in_progress = false; + rtlhal->ballow_sw_to_change_hwclc = false; + rtlhal->last_hmeboxnum = 0; + + /*SIC_Init(Adapter); + if(pHalData->AMPDUBurstMode) + PlatformEFIOWrite1Byte(Adapter,REG_AMPDU_BURST_MODE_8812, 0x7F);*/ + + rtl8821ae_phy_mac_config(hw); + /* because last function modify RCR, so we update + * rcr var here, or TP will unstable for receive_config + * is wrong, RX RCR_ACRC32 will cause TP unstabel & Rx + * RCR_APP_ICV will cause mac80211 unassoc for cisco 1252 + rtlpci->receive_config = rtl_read_dword(rtlpriv, REG_RCR); + rtlpci->receive_config &= ~(RCR_ACRC32 | RCR_AICV); + rtl_write_dword(rtlpriv, REG_RCR, rtlpci->receive_config);*/ + rtl8821ae_phy_bb_config(hw); + + rtl8821ae_phy_rf_config(hw); + + _rtl8821ae_hw_configure(hw); + + rtl8821ae_phy_switch_wirelessband(hw, BAND_ON_2_4G); + + /*set wireless mode*/ + + rtlhal->b_mac_func_enable = true; + + rtl_cam_reset_all_entry(hw); + + rtl8821ae_enable_hw_security_config(hw); + + ppsc->rfpwr_state = ERFON; + + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_ETHER_ADDR, mac->mac_addr); + _rtl8821ae_enable_aspm_back_door(hw); + rtlpriv->intf_ops->enable_aspm(hw); + + //rtl8821ae_bt_hw_init(hw); + rtlpriv->rtlhal.being_init_adapter = false; + + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_NAV_UPPER, (u8 *)&nav_upper); + + //rtl8821ae_dm_check_txpower_tracking(hw); + //rtl8821ae_phy_lc_calibrate(hw); + + /* Release Rx DMA*/ + tmp_u1b = rtl_read_byte(rtlpriv, REG_RXDMA_CONTROL); + if (tmp_u1b & BIT(2)) { + /* Release Rx DMA if needed*/ + tmp_u1b &= ~BIT(2); + rtl_write_byte(rtlpriv, REG_RXDMA_CONTROL, tmp_u1b); + } + + /* Release Tx/Rx PCIE DMA if*/ + rtl_write_byte(rtlpriv, REG_PCIE_CTRL_REG + 1, 0); + + rtl8821ae_dm_init(hw); + rtl8821ae_macid_initialize_mediastatus(hw); + + RT_TRACE(COMP_INIT, DBG_LOUD, ("rtl8821ae_hw_init() <====\n")); + return err; +} + +static enum version_8821ae _rtl8821ae_read_chip_version(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + enum version_8821ae version = VERSION_UNKNOWN; + u32 value32; + + value32 = rtl_read_dword(rtlpriv, REG_SYS_CFG1); + RT_TRACE(COMP_INIT, DBG_LOUD, ("ReadChipVersion8812A 0xF0 = 0x%x \n", value32)); + + + + if(rtlhal->hw_type == HARDWARE_TYPE_RTL8812AE) + rtlphy->rf_type = RF_2T2R; + else if(rtlhal->hw_type == HARDWARE_TYPE_RTL8821AE) + rtlphy->rf_type = RF_1T1R; + + RT_TRACE(COMP_INIT, DBG_LOUD, ("RF_Type is %x!!\n", rtlphy->rf_type)); + + + if (value32 & TRP_VAUX_EN) + { + if(rtlhal->hw_type == HARDWARE_TYPE_RTL8812AE) + { + if(rtlphy->rf_type == RF_2T2R) + version = VERSION_TEST_CHIP_2T2R_8812; + else + version = VERSION_TEST_CHIP_1T1R_8812; + } + else + version = VERSION_TEST_CHIP_8821; + } else { + if(rtlhal->hw_type == HARDWARE_TYPE_RTL8812AE) + { + u32 rtl_id = ((value32 & CHIP_VER_RTL_MASK) >> 12) +1 ; + + if(rtlphy->rf_type == RF_2T2R) + version = (enum version_8821ae)(CHIP_8812 | NORMAL_CHIP | RF_TYPE_2T2R); + else + version = (enum version_8821ae)(CHIP_8812 | NORMAL_CHIP); + + version = (enum version_8821ae)(version| (rtl_id << 12)); + } + else if(rtlhal->hw_type == HARDWARE_TYPE_RTL8821AE) + { + u32 rtl_id = value32 & CHIP_VER_RTL_MASK; + + version = (enum version_8821ae)(CHIP_8821 | NORMAL_CHIP | rtl_id); + } + } + + RT_TRACE(COMP_INIT, DBG_LOUD, + ("Chip RF Type: %s\n", (rtlphy->rf_type == RF_2T2R) ? + "RF_2T2R" : "RF_1T1R")); + + if(rtlhal->hw_type == HARDWARE_TYPE_RTL8821AE) + { + /*WL_HWROF_EN.*/ + value32 = rtl_read_dword(rtlpriv, REG_MULTI_FUNC_CTRL); + rtlphy->hw_rof_enable= ((value32 & WL_HWROF_EN) ? 1 : 0); + } + + switch(version) + { + case VERSION_TEST_CHIP_1T1R_8812: + RT_TRACE(COMP_INIT, DBG_LOUD, + ("Chip Version ID: VERSION_TEST_CHIP_1T1R_8812.\n")); + break; + case VERSION_TEST_CHIP_2T2R_8812: + RT_TRACE(COMP_INIT, DBG_LOUD, + ("Chip Version ID: VERSION_TEST_CHIP_2T2R_8812.\n")); + break; + case VERSION_NORMAL_TSMC_CHIP_1T1R_8812: + RT_TRACE(COMP_INIT, DBG_LOUD, + ("Chip Version ID: VERSION_NORMAL_TSMC_CHIP_1T1R_8812.\n")); + break; + case VERSION_NORMAL_TSMC_CHIP_2T2R_8812: + RT_TRACE(COMP_INIT, DBG_LOUD, + ("Chip Version ID: VERSION_NORMAL_TSMC_CHIP_2T2R_8812.\n")); + break; + case VERSION_NORMAL_TSMC_CHIP_1T1R_8812_C_CUT: + RT_TRACE(COMP_INIT, DBG_LOUD, + ("Chip Version ID: VERSION_NORMAL_TSMC_CHIP_1T1R_8812 C CUT.\n")); + break; + case VERSION_NORMAL_TSMC_CHIP_2T2R_8812_C_CUT: + RT_TRACE(COMP_INIT, DBG_LOUD, + ("Chip Version ID: VERSION_NORMAL_TSMC_CHIP_2T2R_8812 C CUT.\n")); + break; + case VERSION_TEST_CHIP_8821: + RT_TRACE(COMP_INIT, DBG_LOUD, + ("Chip Version ID: VERSION_TEST_CHIP_8821.\n")); + break; + case VERSION_NORMAL_TSMC_CHIP_8821: + RT_TRACE(COMP_INIT, DBG_LOUD, + ("Chip Version ID: VERSION_NORMAL_TSMC_CHIP_8821 A CUT.\n")); + break; + case VERSION_NORMAL_TSMC_CHIP_8821_B_CUT: + RT_TRACE(COMP_INIT, DBG_LOUD, + ("Chip Version ID: VERSION_NORMAL_TSMC_CHIP_8821 B CUT.\n")); + break; + default: + RT_TRACE(COMP_INIT, DBG_LOUD, + ("Chip Version ID: Unknow (0x%X).\n", version)); + break; + } + + return version; +} + +static int _rtl8821ae_set_media_status(struct ieee80211_hw *hw, + enum nl80211_iftype type) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 bt_msr = rtl_read_byte(rtlpriv, MSR); + enum led_ctl_mode ledaction = LED_CTL_NO_LINK; + bt_msr &= 0xfc; + + rtl_write_dword(rtlpriv, REG_BCN_CTRL, 0); + RT_TRACE(COMP_BEACON, DBG_LOUD, + ("clear 0x550 when set HW_VAR_MEDIA_STATUS\n")); + + if (type == NL80211_IFTYPE_UNSPECIFIED || + type == NL80211_IFTYPE_STATION) { + _rtl8821ae_stop_tx_beacon(hw); + _rtl8821ae_enable_bcn_sub_func(hw); + } else if (type == NL80211_IFTYPE_ADHOC || + type == NL80211_IFTYPE_AP) { + _rtl8821ae_resume_tx_beacon(hw); + _rtl8821ae_disable_bcn_sub_func(hw); + } else { + RT_TRACE(COMP_ERR, DBG_WARNING,("Set HW_VAR_MEDIA_STATUS: " + "No such media status(%x).\n", type)); + } + + switch (type) { + case NL80211_IFTYPE_UNSPECIFIED: + bt_msr |= MSR_NOLINK; + ledaction = LED_CTL_LINK; + RT_TRACE(COMP_INIT, DBG_TRACE, ("Set Network type to NO LINK!\n")); + break; + case NL80211_IFTYPE_ADHOC: + bt_msr |= MSR_ADHOC; + RT_TRACE(COMP_INIT, DBG_TRACE, ("Set Network type to Ad Hoc!\n")); + break; + case NL80211_IFTYPE_STATION: + bt_msr |= MSR_INFRA; + ledaction = LED_CTL_LINK; + RT_TRACE(COMP_INIT, DBG_TRACE, ("Set Network type to STA!\n")); + break; + case NL80211_IFTYPE_AP: + bt_msr |= MSR_AP; + RT_TRACE(COMP_INIT, DBG_TRACE, ("Set Network type to AP!\n")); + break; + default: + RT_TRACE(COMP_ERR, DBG_EMERG, ("Network type %d not support!\n", type)); + return 1; + break; + + } + + rtl_write_byte(rtlpriv, (MSR), bt_msr); + rtlpriv->cfg->ops->led_control(hw, ledaction); + if ((bt_msr & 0xfc) == MSR_AP) + rtl_write_byte(rtlpriv, REG_BCNTCFG + 1, 0x00); + else + rtl_write_byte(rtlpriv, REG_BCNTCFG + 1, 0x66); + + return 0; +} + +void rtl8821ae_set_check_bssid(struct ieee80211_hw *hw, bool check_bssid) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + u32 reg_rcr = rtlpci->receive_config; + + if (rtlpriv->psc.rfpwr_state != ERFON) + return; + + if (check_bssid == true) { + reg_rcr |= (RCR_CBSSID_DATA | RCR_CBSSID_BCN); + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_RCR, + (u8 *) (®_rcr)); + _rtl8821ae_set_bcn_ctrl_reg(hw, 0, BIT(4)); + } else if (check_bssid == false) { + reg_rcr &= (~(RCR_CBSSID_DATA | RCR_CBSSID_BCN)); + _rtl8821ae_set_bcn_ctrl_reg(hw, BIT(4), 0); + rtlpriv->cfg->ops->set_hw_reg(hw, + HW_VAR_RCR, (u8 *) (®_rcr)); + } + +} + +int rtl8821ae_set_network_type(struct ieee80211_hw *hw, enum nl80211_iftype type) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + RT_TRACE(COMP_INIT, DBG_LOUD, ("rtl8821ae_set_network_type!\n")); + + if (_rtl8821ae_set_media_status(hw, type)) + return -EOPNOTSUPP; + + if (rtlpriv->mac80211.link_state == MAC80211_LINKED) { + if (type != NL80211_IFTYPE_AP) + rtl8821ae_set_check_bssid(hw, true); + } else { + rtl8821ae_set_check_bssid(hw, false); + } + + return 0; +} + +/* don't set REG_EDCA_BE_PARAM here because mac80211 will send pkt when scan */ +void rtl8821ae_set_qos(struct ieee80211_hw *hw, int aci) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + rtl8821ae_dm_init_edca_turbo(hw); + switch (aci) { + case AC1_BK: + rtl_write_dword(rtlpriv, REG_EDCA_BK_PARAM, 0xa44f); + break; + case AC0_BE: + /* rtl_write_dword(rtlpriv, REG_EDCA_BE_PARAM, u4b_ac_param); */ + break; + case AC2_VI: + rtl_write_dword(rtlpriv, REG_EDCA_VI_PARAM, 0x5e4322); + break; + case AC3_VO: + rtl_write_dword(rtlpriv, REG_EDCA_VO_PARAM, 0x2f3222); + break; + default: + RT_ASSERT(false, ("invalid aci: %d !\n", aci)); + break; + } +} + +void rtl8821ae_enable_interrupt(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + + 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; + /* there are some C2H CMDs have been sent before system interrupt is enabled, e.g., C2H, CPWM. + *So we need to clear all C2H events that FW has notified, otherwise FW won't schedule any commands anymore. + */ + //rtl_write_byte(rtlpriv, REG_C2HEVT_CLEAR, 0); + /*enable system interrupt*/ + rtl_write_dword(rtlpriv, REG_HSIMR, rtlpci->sys_irq_mask & 0xFFFFFFFF); +} + +void rtl8821ae_disable_interrupt(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + + rtl_write_dword(rtlpriv, REG_HIMR, IMR_DISABLED); + rtl_write_dword(rtlpriv, REG_HIMRE, IMR_DISABLED); + rtlpci->irq_enabled = false; + synchronize_irq(rtlpci->pdev->irq); +} + +static void _rtl8821ae_poweroff_adapter(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + u8 u1b_tmp; + + rtlhal->b_mac_func_enable = false; + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8821AE) { + /* Combo (PCIe + USB) Card and PCIe-MF Card */ + /* 1. Run LPS WL RFOFF flow */ + //RT_TRACE(COMP_INIT, DBG_LOUD, ("=====>CardDisableRTL8812E,RTL8821A_NIC_LPS_ENTER_FLOW\n")); + rtl_hal_pwrseqcmdparsing(rtlpriv, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, + PWR_INTF_PCI_MSK, RTL8821A_NIC_LPS_ENTER_FLOW); + } + /* 2. 0x1F[7:0] = 0 */ + /* turn off RF */ + //rtl_write_byte(rtlpriv, REG_RF_CTRL, 0x00); + if ((rtl_read_byte(rtlpriv, REG_MCUFWDL) & BIT(7)) && + rtlhal->bfw_ready ) { + rtl8821ae_firmware_selfreset(hw); + } + + /* Reset MCU. Suggested by Filen. */ + u1b_tmp = rtl_read_byte(rtlpriv, REG_SYS_FUNC_EN+1); + rtl_write_byte(rtlpriv, REG_SYS_FUNC_EN+1, (u1b_tmp & (~BIT(2)))); + + /* g. MCUFWDL 0x80[1:0]=0 */ + /* reset MCU ready status */ + rtl_write_byte(rtlpriv, REG_MCUFWDL, 0x00); + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8821AE) { + /* HW card disable configuration. */ + rtl_hal_pwrseqcmdparsing(rtlpriv, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, + PWR_INTF_PCI_MSK, RTL8821A_NIC_DISABLE_FLOW); + } else { + /* HW card disable configuration. */ + rtl_hal_pwrseqcmdparsing(rtlpriv, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, + PWR_INTF_PCI_MSK, RTL8812_NIC_DISABLE_FLOW); + } + + /* Reset MCU IO Wrapper */ + u1b_tmp = rtl_read_byte(rtlpriv, REG_RSV_CTRL + 1); + rtl_write_byte(rtlpriv, REG_RSV_CTRL + 1, (u1b_tmp & (~BIT(0)))); + u1b_tmp = rtl_read_byte(rtlpriv, REG_RSV_CTRL + 1); + rtl_write_byte(rtlpriv, REG_RSV_CTRL + 1, u1b_tmp | BIT(0)); + + /* 7. RSV_CTRL 0x1C[7:0] = 0x0E */ + /* lock ISO/CLK/Power control register */ + rtl_write_byte(rtlpriv, REG_RSV_CTRL, 0x0e); +} + +void rtl8821ae_card_disable(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + enum nl80211_iftype opmode; + + RT_TRACE(COMP_INIT, DBG_LOUD, + ("rtl8821ae_card_disable.\n")); + + mac->link_state = MAC80211_NOLINK; + opmode = NL80211_IFTYPE_UNSPECIFIED; + _rtl8821ae_set_media_status(hw, opmode); + if (rtlpriv->rtlhal.driver_is_goingto_unload || + ppsc->rfoff_reason > RF_CHANGE_BY_PS) + rtlpriv->cfg->ops->led_control(hw, LED_CTL_POWER_OFF); + RT_SET_PS_LEVEL(ppsc, RT_RF_OFF_LEVL_HALT_NIC); + _rtl8821ae_poweroff_adapter(hw); + + /* after power off we should do iqk again */ + rtlpriv->phy.iqk_initialized = false; +} + +void rtl8821ae_interrupt_recognized(struct ieee80211_hw *hw, + u32 *p_inta, u32 *p_intb) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + + *p_inta = rtl_read_dword(rtlpriv, ISR) & rtlpci->irq_mask[0]; + rtl_write_dword(rtlpriv, ISR, *p_inta); + + + *p_intb = rtl_read_dword(rtlpriv, REG_HISRE) & rtlpci->irq_mask[1]; + rtl_write_dword(rtlpriv, REG_HISRE, *p_intb); + +} + + +void rtl8821ae_set_beacon_related_registers(struct ieee80211_hw *hw) +{ + + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + u16 bcn_interval, atim_window; + + bcn_interval = mac->beacon_interval; + atim_window = 2; /*FIX MERGE */ + rtl8821ae_disable_interrupt(hw); + rtl_write_word(rtlpriv, REG_ATIMWND, atim_window); + rtl_write_word(rtlpriv, REG_BCN_INTERVAL, bcn_interval); + rtl_write_word(rtlpriv, REG_BCNTCFG, 0x660f); + rtl_write_byte(rtlpriv, REG_RXTSF_OFFSET_CCK, 0x18); + rtl_write_byte(rtlpriv, REG_RXTSF_OFFSET_OFDM, 0x18); + rtl_write_byte(rtlpriv, 0x606, 0x30); + rtlpci->reg_bcn_ctrl_val |= BIT(3); + rtl_write_byte(rtlpriv, REG_BCN_CTRL, (u8) rtlpci->reg_bcn_ctrl_val); + rtl8821ae_enable_interrupt(hw); +} + +void rtl8821ae_set_beacon_interval(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + u16 bcn_interval = mac->beacon_interval; + + RT_TRACE(COMP_BEACON, DBG_DMESG, + ("beacon_interval:%d\n", bcn_interval)); + rtl8821ae_disable_interrupt(hw); + rtl_write_word(rtlpriv, REG_BCN_INTERVAL, bcn_interval); + rtl8821ae_enable_interrupt(hw); +} + +void rtl8821ae_update_interrupt_mask(struct ieee80211_hw *hw, + u32 add_msr, u32 rm_msr) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + + RT_TRACE(COMP_INTR, DBG_LOUD, + ("add_msr:%x, rm_msr:%x\n", add_msr, rm_msr)); + + if (add_msr) + rtlpci->irq_mask[0] |= add_msr; + if (rm_msr) + rtlpci->irq_mask[0] &= (~rm_msr); + rtl8821ae_disable_interrupt(hw); + rtl8821ae_enable_interrupt(hw); +} + +static u8 _rtl8821ae_get_chnl_group(u8 chnl) +{ + u8 group = 0; + + if (chnl <= 14) { + if (1 <= chnl && chnl <= 2 ) + group = 0; + else if (3 <= chnl && chnl <= 5 ) + group = 1; + else if (6 <= chnl && chnl <= 8 ) + group = 2; + else if (9 <= chnl && chnl <= 11) + group = 3; + else /*if (12 <= chnl && chnl <= 14)*/ + group = 4; + } else { + if (36 <= chnl && chnl <= 42) + group = 0; + else if (44 <= chnl && chnl <= 48) + group = 1; + else if (50 <= chnl && chnl <= 58) + group = 2; + else if (60 <= chnl && chnl <= 64) + group = 3; + else if (100 <= chnl && chnl <= 106) + group = 4; + else if (108 <= chnl && chnl <= 114) + group = 5; + else if (116 <= chnl && chnl <= 122) + group = 6; + else if (124 <= chnl && chnl <= 130) + group = 7; + else if (132 <= chnl && chnl <= 138) + group = 8; + else if (140 <= chnl && chnl <= 144) + group = 9; + else if (149 <= chnl && chnl <= 155) + group = 10; + else if (157 <= chnl && chnl <= 161) + group = 11; + else if (165 <= chnl && chnl <= 171) + group = 12; + else if (173 <= chnl && chnl <= 177) + group = 13; + else + /*RT_TRACE(COMP_EFUSE,DBG_LOUD, + ("5G, Channel %d in Group not found \n",chnl));*/ + RT_ASSERT(!COMP_EFUSE, + ("5G, Channel %d in Group not found \n",chnl)); + } + return group; +} + +static void _rtl8821ae_read_power_value_fromprom(struct ieee80211_hw *hw, + struct txpower_info_2g *pwrinfo24g, + struct txpower_info_5g *pwrinfo5g, + bool autoload_fail, + u8 *hwinfo) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 rfPath, eeAddr=EEPROM_TX_PWR_INX, group,TxCount=0; + + RT_TRACE(COMP_INIT, DBG_LOUD, ("hal_ReadPowerValueFromPROM8821ae(): PROMContent[0x%x]=0x%x\n", (eeAddr+1), hwinfo[eeAddr+1])); + if (0xFF == hwinfo[eeAddr+1]) /*YJ,add,120316*/ + autoload_fail = true; + + if (autoload_fail) + { + RT_TRACE(COMP_INIT, DBG_LOUD, ("auto load fail : Use Default value!\n")); + for (rfPath = 0 ; rfPath < MAX_RF_PATH ; rfPath++) { + /*2.4G default value*/ + for (group = 0 ; group < MAX_CHNL_GROUP_24G; group++) { + pwrinfo24g->index_cck_base[rfPath][group] = 0x2D; + pwrinfo24g->index_bw40_base[rfPath][group] = 0x2D; + } + for (TxCount = 0;TxCount < MAX_TX_COUNT;TxCount++) { + if (TxCount == 0) { + pwrinfo24g->bw20_diff[rfPath][0] = 0x02; + pwrinfo24g->ofdm_diff[rfPath][0] = 0x04; + } else { + pwrinfo24g->bw20_diff[rfPath][TxCount] = 0xFE; + pwrinfo24g->bw40_diff[rfPath][TxCount] = 0xFE; + pwrinfo24g->cck_diff[rfPath][TxCount] = 0xFE; + pwrinfo24g->ofdm_diff[rfPath][TxCount] = 0xFE; + } + } + /*5G default value*/ + for (group = 0 ; group < MAX_CHNL_GROUP_5G; group++) + pwrinfo5g->index_bw40_base[rfPath][group] = 0x2A; + + for (TxCount = 0; TxCount < MAX_TX_COUNT; TxCount++) { + if (TxCount == 0) { + pwrinfo5g->ofdm_diff[rfPath][0] = 0x04; + pwrinfo5g->bw20_diff[rfPath][0] = 0x00; + pwrinfo5g->bw80_diff[rfPath][0] = 0xFE; + pwrinfo5g->bw160_diff[rfPath][0] = 0xFE; + } else { + pwrinfo5g->ofdm_diff[rfPath][0] = 0xFE; + pwrinfo5g->bw20_diff[rfPath][0] = 0xFE; + pwrinfo5g->bw40_diff[rfPath][0] = 0xFE; + pwrinfo5g->bw80_diff[rfPath][0] = 0xFE; + pwrinfo5g->bw160_diff[rfPath][0] = 0xFE; + } + } + } + return; + } + + rtl_priv(hw)->efuse.b_txpwr_fromeprom = true; + + for (rfPath = 0 ; rfPath < MAX_RF_PATH ; rfPath++) { + /*2.4G default value*/ + for (group = 0 ; group < MAX_CHNL_GROUP_24G; group++) { + pwrinfo24g->index_cck_base[rfPath][group] = hwinfo[eeAddr++]; + if (pwrinfo24g->index_cck_base[rfPath][group] == 0xFF) + pwrinfo24g->index_cck_base[rfPath][group] = 0x2D; + } + for (group = 0 ; group < MAX_CHNL_GROUP_24G - 1; group++) { + pwrinfo24g->index_bw40_base[rfPath][group] = hwinfo[eeAddr++]; + if (pwrinfo24g->index_bw40_base[rfPath][group] == 0xFF) + pwrinfo24g->index_bw40_base[rfPath][group] = 0x2D; + } + for (TxCount = 0; TxCount < MAX_TX_COUNT; TxCount ++) { + if (TxCount == 0) { + pwrinfo24g->bw40_diff[rfPath][TxCount] = 0; + if (hwinfo[eeAddr] == 0xFF) { + pwrinfo24g->bw20_diff[rfPath][TxCount] = 0x02; + } else { + pwrinfo24g->bw20_diff[rfPath][TxCount] = (hwinfo[eeAddr] & 0xf0) >> 4; + if (pwrinfo24g->bw20_diff[rfPath][TxCount] & BIT(3)) /*bit sign number to 8 bit sign number*/ + pwrinfo24g->bw20_diff[rfPath][TxCount] |= 0xF0; + } + + if (hwinfo[eeAddr] == 0xFF) { + pwrinfo24g->ofdm_diff[rfPath][TxCount] = 0x04; + } else { + pwrinfo24g->ofdm_diff[rfPath][TxCount] = (hwinfo[eeAddr] & 0x0f); + if(pwrinfo24g->ofdm_diff[rfPath][TxCount] & BIT(3)) /*bit sign number to 8 bit sign number*/ + pwrinfo24g->ofdm_diff[rfPath][TxCount] |= 0xF0; + } + pwrinfo24g->cck_diff[rfPath][TxCount] = 0; + eeAddr++; + } else { + if (hwinfo[eeAddr] == 0xFF) { + pwrinfo24g->bw40_diff[rfPath][TxCount] = 0xFE; + } else { + pwrinfo24g->bw40_diff[rfPath][TxCount] = (hwinfo[eeAddr]&0xf0) >> 4; + if (pwrinfo24g->bw40_diff[rfPath][TxCount] & BIT(3)) + pwrinfo24g->bw40_diff[rfPath][TxCount] |= 0xF0; + } + + if (hwinfo[eeAddr] == 0xFF) { + pwrinfo24g->bw20_diff[rfPath][TxCount] = 0xFE; + } else { + pwrinfo24g->bw20_diff[rfPath][TxCount] = (hwinfo[eeAddr] & 0x0f); + if (pwrinfo24g->bw20_diff[rfPath][TxCount] & BIT(3)) + pwrinfo24g->bw20_diff[rfPath][TxCount] |= 0xF0; + } + + eeAddr++; + + if (hwinfo[eeAddr] == 0xFF) { + pwrinfo24g->ofdm_diff[rfPath][TxCount] = 0xFE; + } else { + pwrinfo24g->ofdm_diff[rfPath][TxCount] = (hwinfo[eeAddr] & 0xf0) >> 4; + if(pwrinfo24g->ofdm_diff[rfPath][TxCount] & BIT(3)) + pwrinfo24g->ofdm_diff[rfPath][TxCount] |= 0xF0; + } + + if (hwinfo[eeAddr] == 0xFF) { + pwrinfo24g->cck_diff[rfPath][TxCount] = 0xFE; + } else { + pwrinfo24g->cck_diff[rfPath][TxCount] = (hwinfo[eeAddr] & 0x0f); + if(pwrinfo24g->cck_diff[rfPath][TxCount] & BIT(3)) + pwrinfo24g->cck_diff[rfPath][TxCount] |= 0xF0; + } + eeAddr++; + } + } + + /*5G default value*/ + for (group = 0 ; group < MAX_CHNL_GROUP_5G; group ++) { + pwrinfo5g->index_bw40_base[rfPath][group] = hwinfo[eeAddr++]; + if (pwrinfo5g->index_bw40_base[rfPath][group] == 0xFF) + pwrinfo5g->index_bw40_base[rfPath][group] = 0xFE; + } + + for (TxCount = 0; TxCount < MAX_TX_COUNT; TxCount++) { + if (TxCount == 0) { + pwrinfo5g->bw40_diff[rfPath][TxCount] = 0; + if (hwinfo[eeAddr] == 0xFF) { + pwrinfo5g->bw20_diff[rfPath][TxCount] = 0x0; + } else { + pwrinfo5g->bw20_diff[rfPath][0] = (hwinfo[eeAddr] & 0xf0) >> 4; + if(pwrinfo5g->bw20_diff[rfPath][TxCount] & BIT(3)) + pwrinfo5g->bw20_diff[rfPath][TxCount] |= 0xF0; + } + + if (hwinfo[eeAddr] == 0xFF) { + pwrinfo5g->ofdm_diff[rfPath][TxCount] = 0x4; + } else { + pwrinfo5g->ofdm_diff[rfPath][0] = (hwinfo[eeAddr] & 0x0f); + if(pwrinfo5g->ofdm_diff[rfPath][TxCount] & BIT(3)) + pwrinfo5g->ofdm_diff[rfPath][TxCount] |= 0xF0; + } + eeAddr++; + } else { + if (hwinfo[eeAddr] == 0xFF) { + pwrinfo5g->bw40_diff[rfPath][TxCount] = 0xFE; + } else { + pwrinfo5g->bw40_diff[rfPath][TxCount]= (hwinfo[eeAddr] & 0xf0) >> 4; + if(pwrinfo5g->bw40_diff[rfPath][TxCount] & BIT(3)) + pwrinfo5g->bw40_diff[rfPath][TxCount] |= 0xF0; + } + + if (hwinfo[eeAddr] == 0xFF) { + pwrinfo5g->bw20_diff[rfPath][TxCount] = 0xFE; + } else { + pwrinfo5g->bw20_diff[rfPath][TxCount] = (hwinfo[eeAddr] & 0x0f); + if(pwrinfo5g->bw20_diff[rfPath][TxCount] & BIT(3)) + pwrinfo5g->bw20_diff[rfPath][TxCount] |= 0xF0; + } + eeAddr++; + } + } + + if (hwinfo[eeAddr] == 0xFF) { + pwrinfo5g->ofdm_diff[rfPath][1] = 0xFE; + pwrinfo5g->ofdm_diff[rfPath][2] = 0xFE; + } else { + pwrinfo5g->ofdm_diff[rfPath][1] = (hwinfo[eeAddr] & 0xf0) >> 4; + pwrinfo5g->ofdm_diff[rfPath][2] = (hwinfo[eeAddr] & 0x0f); + } + eeAddr++; + if (hwinfo[eeAddr] == 0xFF) + pwrinfo5g->ofdm_diff[rfPath][3] = 0xFE; + else + pwrinfo5g->ofdm_diff[rfPath][3] = (hwinfo[eeAddr] & 0x0f); + + eeAddr++; + + for (TxCount = 1; TxCount < MAX_TX_COUNT; TxCount++) { + if (pwrinfo5g->ofdm_diff[rfPath][TxCount] == 0xFF) + pwrinfo5g->ofdm_diff[rfPath][TxCount] = 0xFE; + else if(pwrinfo5g->ofdm_diff[rfPath][TxCount] & BIT(3)) + pwrinfo5g->ofdm_diff[rfPath][TxCount] |= 0xF0; + } + for (TxCount = 0; TxCount < MAX_TX_COUNT; TxCount++) { + if (hwinfo[eeAddr] == 0xFF) { + pwrinfo5g->bw80_diff[rfPath][TxCount] = 0xFE; + } else { + pwrinfo5g->bw80_diff[rfPath][TxCount] = (hwinfo[eeAddr] & 0xf0) >> 4; + if(pwrinfo5g->bw80_diff[rfPath][TxCount] & BIT(3)) //4bit sign number to 8 bit sign number + pwrinfo5g->bw80_diff[rfPath][TxCount] |= 0xF0; + } + + if (hwinfo[eeAddr] == 0xFF) { + pwrinfo5g->bw160_diff[rfPath][TxCount] = 0xFE; + } else { + pwrinfo5g->bw160_diff[rfPath][TxCount]= (hwinfo[eeAddr] & 0x0f); + if(pwrinfo5g->bw160_diff[rfPath][TxCount] & BIT(3)) //4bit sign number to 8 bit sign number + pwrinfo5g->bw160_diff[rfPath][TxCount] |= 0xF0; + } + eeAddr++; + } + } +} + +static void _rtl8812ae_read_txpower_info_from_hwpg(struct ieee80211_hw *hw, + bool autoload_fail, + u8 *hwinfo) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + struct txpower_info_2g pwrinfo24g; + struct txpower_info_5g pwrinfo5g; + u8 channel5g[CHANNEL_MAX_NUMBER_5G] = + {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,142,144,149,151, + 153,155,157,159,161,163,165,167,168,169,171,173,175,177}; + u8 channel5g_80m[CHANNEL_MAX_NUMBER_5G_80M] = {42, 58, 106, 122, 138, 155, 171}; + u8 rf_path, index; + u8 i; + + _rtl8821ae_read_power_value_fromprom(hw, &pwrinfo24g, &pwrinfo5g, autoload_fail, hwinfo); + + for (rf_path = 0; rf_path < 2; rf_path++) { + for (i = 0; i < CHANNEL_MAX_NUMBER_2G; i++) { + index = _rtl8821ae_get_chnl_group(i + 1); + + if (i == CHANNEL_MAX_NUMBER_2G - 1) { + rtlefuse->txpwrlevel_cck[rf_path][i] = + pwrinfo24g.index_cck_base[rf_path][5]; + rtlefuse->txpwrlevel_ht40_1s[rf_path][i] = + pwrinfo24g.index_bw40_base[rf_path][index]; + } else { + rtlefuse->txpwrlevel_cck[rf_path][i] = + pwrinfo24g.index_cck_base[rf_path][index]; + rtlefuse->txpwrlevel_ht40_1s[rf_path][i] = + pwrinfo24g.index_bw40_base[rf_path][index]; + } + } + + for (i = 0; i < CHANNEL_MAX_NUMBER_5G; i++) { + index = _rtl8821ae_get_chnl_group(channel5g[i]); + rtlefuse->txpwr_5g_bw40base[rf_path][i] = pwrinfo5g.index_bw40_base[rf_path][index]; + } + for (i = 0; i < CHANNEL_MAX_NUMBER_5G_80M; i++) { + u8 upper, lower; + index = _rtl8821ae_get_chnl_group(channel5g_80m[i]); + upper = pwrinfo5g.index_bw40_base[rf_path][index]; + lower = pwrinfo5g.index_bw40_base[rf_path][index + 1]; + + rtlefuse->txpwr_5g_bw80base[rf_path][i] = (upper + lower) / 2; + } + for (i = 0; i < MAX_TX_COUNT; i++) { + rtlefuse->txpwr_cckdiff[rf_path][i] = pwrinfo24g.cck_diff[rf_path][i]; + rtlefuse->txpwr_legacyhtdiff[rf_path][i] = pwrinfo24g.ofdm_diff[rf_path][i]; + rtlefuse->txpwr_ht20diff[rf_path][i] = pwrinfo24g.bw20_diff[rf_path][i]; + rtlefuse->txpwr_ht40diff[rf_path][i] = pwrinfo24g.bw40_diff[rf_path][i]; + + rtlefuse->txpwr_5g_ofdmdiff[rf_path][i] = pwrinfo5g.ofdm_diff[rf_path][i]; + rtlefuse->txpwr_5g_bw20diff[rf_path][i] = pwrinfo5g.bw20_diff[rf_path][i]; + rtlefuse->txpwr_5g_bw40diff[rf_path][i] = pwrinfo5g.bw40_diff[rf_path][i]; + rtlefuse->txpwr_5g_bw80diff[rf_path][i] = pwrinfo5g.bw80_diff[rf_path][i]; + } + } + + if (!autoload_fail){ + rtlefuse->eeprom_regulatory = + hwinfo[EEPROM_RF_BOARD_OPTION] & 0x07;/*bit0~2*/ + if (hwinfo[EEPROM_RF_BOARD_OPTION] == 0xFF) + rtlefuse->eeprom_regulatory = 0; + } else { + rtlefuse->eeprom_regulatory = 0; + } + + RTPRINT(rtlpriv, FINIT, INIT_TxPower, + ("eeprom_regulatory = 0x%x\n", rtlefuse->eeprom_regulatory )); +} + +static void _rtl8821ae_read_txpower_info_from_hwpg(struct ieee80211_hw *hw, + bool autoload_fail, + u8 *hwinfo) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + struct txpower_info_2g pwrinfo24g; + struct txpower_info_5g pwrinfo5g; + u8 channel5g[CHANNEL_MAX_NUMBER_5G] = + {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,142,144,149,151, + 153,155,157,159,161,163,165,167,168,169,171,173,175,177}; + u8 channel5g_80m[CHANNEL_MAX_NUMBER_5G_80M] = {42, 58, 106, 122, 138, 155, 171}; + u8 rf_path, index; + u8 i; + + _rtl8821ae_read_power_value_fromprom(hw, &pwrinfo24g, &pwrinfo5g, autoload_fail, hwinfo); + + for (rf_path = 0; rf_path < 2; rf_path++) { + for (i = 0; i < CHANNEL_MAX_NUMBER_2G; i++) { + index = _rtl8821ae_get_chnl_group(i + 1); + + if (i == CHANNEL_MAX_NUMBER_2G - 1) { + rtlefuse->txpwrlevel_cck[rf_path][i] = pwrinfo24g.index_cck_base[rf_path][5]; + rtlefuse->txpwrlevel_ht40_1s[rf_path][i] = pwrinfo24g.index_bw40_base[rf_path][index]; + } else { + rtlefuse->txpwrlevel_cck[rf_path][i] = pwrinfo24g.index_cck_base[rf_path][index]; + rtlefuse->txpwrlevel_ht40_1s[rf_path][i] = pwrinfo24g.index_bw40_base[rf_path][index]; + } + } + + for (i = 0; i < CHANNEL_MAX_NUMBER_5G; i++) { + index = _rtl8821ae_get_chnl_group(channel5g[i]); + rtlefuse->txpwr_5g_bw40base[rf_path][i] = pwrinfo5g.index_bw40_base[rf_path][index]; + } + for (i = 0; i < CHANNEL_MAX_NUMBER_5G_80M; i++) { + u8 upper, lower; + index = _rtl8821ae_get_chnl_group(channel5g_80m[i]); + upper = pwrinfo5g.index_bw40_base[rf_path][index]; + lower = pwrinfo5g.index_bw40_base[rf_path][index + 1]; + + rtlefuse->txpwr_5g_bw80base[rf_path][i] = (upper + lower) / 2; + } + for (i = 0; i < MAX_TX_COUNT; i++) { + rtlefuse->txpwr_cckdiff[rf_path][i] = pwrinfo24g.cck_diff[rf_path][i]; + rtlefuse->txpwr_legacyhtdiff[rf_path][i] = pwrinfo24g.ofdm_diff[rf_path][i]; + rtlefuse->txpwr_ht20diff[rf_path][i] = pwrinfo24g.bw20_diff[rf_path][i]; + rtlefuse->txpwr_ht40diff[rf_path][i] = pwrinfo24g.bw40_diff[rf_path][i]; + + rtlefuse->txpwr_5g_ofdmdiff[rf_path][i] = pwrinfo5g.ofdm_diff[rf_path][i]; + rtlefuse->txpwr_5g_bw20diff[rf_path][i] = pwrinfo5g.bw20_diff[rf_path][i]; + rtlefuse->txpwr_5g_bw40diff[rf_path][i] = pwrinfo5g.bw40_diff[rf_path][i]; + rtlefuse->txpwr_5g_bw80diff[rf_path][i] = pwrinfo5g.bw80_diff[rf_path][i]; + } + } + + if (!autoload_fail){ + rtlefuse->eeprom_regulatory = hwinfo[EEPROM_RF_BOARD_OPTION] & 0x07;/*bit0~2*/ + if (hwinfo[EEPROM_RF_BOARD_OPTION] == 0xFF) + rtlefuse->eeprom_regulatory = 0; + } else { + rtlefuse->eeprom_regulatory = 0; + } + + RTPRINT(rtlpriv, FINIT, INIT_TxPower, + ("eeprom_regulatory = 0x%x\n", rtlefuse->eeprom_regulatory )); +} + +static void _rtl8812ae_read_adapter_info(struct ieee80211_hw *hw, bool b_pseudo_test ) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw); + u16 i, usvalue; + u8 hwinfo[HWSET_MAX_SIZE]; + u16 eeprom_id; + + if (b_pseudo_test) { + /* need add */ + } + + if (rtlefuse->epromtype == EEPROM_BOOT_EFUSE) { + rtl_efuse_shadow_map_update(hw); + memcpy(hwinfo, &rtlefuse->efuse_map[EFUSE_INIT_MAP][0], + HWSET_MAX_SIZE); + } else if (rtlefuse->epromtype == EEPROM_93C46) { + RT_TRACE(COMP_ERR, DBG_EMERG, + ("RTL819X Not boot from eeprom, check it !!")); + } + + RT_PRINT_DATA(rtlpriv, COMP_INIT, DBG_DMESG, ("MAP \n"), + hwinfo, HWSET_MAX_SIZE); + + eeprom_id = *((u16 *) & hwinfo[0]); + if (eeprom_id != RTL_EEPROM_ID) { + RT_TRACE(COMP_ERR, DBG_WARNING, + ("EEPROM ID(%#x) is invalid!!\n", eeprom_id)); + rtlefuse->autoload_failflag = true; + } else { + RT_TRACE(COMP_INIT, DBG_LOUD, ("Autoload OK\n")); + rtlefuse->autoload_failflag = false; + } + + if (rtlefuse->autoload_failflag == true) { + RT_TRACE(COMP_ERR, DBG_EMERG, + ("RTL8812AE autoload_failflag, check it !!")); + return; + } + + rtlefuse->eeprom_version = *(u8 *) & hwinfo[EEPROM_VERSION]; + if (rtlefuse->eeprom_version == 0xff) + rtlefuse->eeprom_version = 0; + + RT_TRACE(COMP_INIT, DBG_LOUD, + ("EEPROM version: 0x%2x\n", rtlefuse->eeprom_version)); + + rtlefuse->eeprom_vid = *(u16 *) &hwinfo[EEPROM_VID]; + rtlefuse->eeprom_did = *(u16 *) &hwinfo[EEPROM_DID]; + rtlefuse->eeprom_svid = *(u16 *) &hwinfo[EEPROM_SVID]; + rtlefuse->eeprom_smid = *(u16 *) &hwinfo[EEPROM_SMID]; + RT_TRACE(COMP_INIT, DBG_LOUD, + ("EEPROMId = 0x%4x\n", eeprom_id)); + RT_TRACE(COMP_INIT, DBG_LOUD, + ("EEPROM VID = 0x%4x\n", rtlefuse->eeprom_vid)); + RT_TRACE(COMP_INIT, DBG_LOUD, + ("EEPROM DID = 0x%4x\n", rtlefuse->eeprom_did)); + RT_TRACE(COMP_INIT, DBG_LOUD, + ("EEPROM SVID = 0x%4x\n", rtlefuse->eeprom_svid)); + RT_TRACE(COMP_INIT, DBG_LOUD, + ("EEPROM SMID = 0x%4x\n", rtlefuse->eeprom_smid)); + + /*customer ID*/ + rtlefuse->eeprom_oemid = *(u8 *) & hwinfo[EEPROM_CUSTOMER_ID]; + if (rtlefuse->eeprom_oemid == 0xFF) + rtlefuse->eeprom_oemid = 0; + + RT_TRACE(COMP_INIT, DBG_LOUD, + ("EEPROM Customer ID: 0x%2x\n", rtlefuse->eeprom_oemid)); + + for (i = 0; i < 6; i += 2) { + usvalue = *(u16 *) & hwinfo[EEPROM_MAC_ADDR + i]; + *((u16 *) (&rtlefuse->dev_addr[i])) = usvalue; + } + + RT_TRACE(COMP_INIT, DBG_DMESG, + ("dev_addr: %pM\n", rtlefuse->dev_addr)); + + _rtl8812ae_read_txpower_info_from_hwpg(hw, + rtlefuse->autoload_failflag, hwinfo); + + /*board type*/ + rtlefuse->board_type = (((*(u8 *) & hwinfo[EEPROM_RF_BOARD_OPTION]) & 0xE0 ) >> 5); + if ((*(u8 *) & hwinfo[EEPROM_RF_BOARD_OPTION]) == 0xff ) + rtlefuse->board_type = 0; + rtlhal->boad_type = rtlefuse->board_type; + + rtl8812ae_read_bt_coexist_info_from_hwpg(hw, + rtlefuse->autoload_failflag, hwinfo); + + rtlefuse->eeprom_channelplan = *(u8 *) & hwinfo[EEPROM_CHANNELPLAN]; + if (rtlefuse->eeprom_channelplan == 0xff) + rtlefuse->eeprom_channelplan = 0x7F; + + /* set channel paln to world wide 13 */ + //rtlefuse->channel_plan = (u8) rtlefuse->eeprom_channelplan; + + /*parse xtal*/ + rtlefuse->crystalcap = hwinfo[EEPROM_XTAL_8821AE]; + if ( rtlefuse->crystalcap == 0xFF ) + rtlefuse->crystalcap = 0x20; + + rtlefuse->eeprom_thermalmeter = *(u8 *) & hwinfo[EEPROM_THERMAL_METER]; + if ((rtlefuse->eeprom_thermalmeter == 0xff) ||rtlefuse->autoload_failflag ) + { + rtlefuse->b_apk_thermalmeterignore = true; + rtlefuse->eeprom_thermalmeter = 0xff; + } + + rtlefuse->thermalmeter[0] = rtlefuse->eeprom_thermalmeter; + RT_TRACE(COMP_INIT, DBG_LOUD, + ("thermalmeter = 0x%x\n", rtlefuse->eeprom_thermalmeter)); + + if (rtlefuse->autoload_failflag == false) { + rtlefuse->antenna_div_cfg = *(u8 *) & hwinfo[EEPROM_RF_BOARD_OPTION] & 0x18 >> 3; + if (*(u8 *) & hwinfo[EEPROM_RF_BOARD_OPTION] == 0xff) + rtlefuse->antenna_div_cfg = 0x00; + /*if (BT_1ant()) + rtlefuse->antenna_div_cfg = 0;*/ + rtlefuse->antenna_div_type = *(u8 *) & hwinfo[EEPROM_RF_ANTENNA_OPT_88E]; + if (rtlefuse->antenna_div_type == 0xFF) + { + rtlefuse->antenna_div_type = FIXED_HW_ANTDIV; + } + } else { + rtlefuse->antenna_div_cfg = 0; + rtlefuse->antenna_div_type = 0; + } + + RT_TRACE(COMP_INIT, DBG_LOUD, + ("SWAS: bHwAntDiv = %x, TRxAntDivType = %x\n", + rtlefuse->antenna_div_cfg, rtlefuse->antenna_div_type)); + + /*Hal_ReadPAType_8821A()*/ + /*Hal_EfuseParseRateIndicationOption8821A()*/ + /*Hal_ReadEfusePCIeCap8821AE()*/ + + pcipriv->ledctl.bled_opendrain = true; + + if (rtlhal->oem_id == RT_CID_DEFAULT) { + switch (rtlefuse->eeprom_oemid) { + case RT_CID_DEFAULT: + break; + case EEPROM_CID_TOSHIBA: + rtlhal->oem_id = RT_CID_TOSHIBA; + break; + case EEPROM_CID_CCX: + rtlhal->oem_id = RT_CID_CCX; + break; + case EEPROM_CID_QMI: + rtlhal->oem_id = RT_CID_819x_QMI; + break; + case EEPROM_CID_WHQL: + break; + default: + break; + + } + } +} + +static void _rtl8821ae_read_adapter_info(struct ieee80211_hw *hw, bool b_pseudo_test ) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw); + u16 i, usvalue; + u8 hwinfo[HWSET_MAX_SIZE]; + u16 eeprom_id; + + if (b_pseudo_test) { + /* need add */ + } + + if (rtlefuse->epromtype == EEPROM_BOOT_EFUSE) { + rtl_efuse_shadow_map_update(hw); + memcpy(hwinfo, &rtlefuse->efuse_map[EFUSE_INIT_MAP][0], + HWSET_MAX_SIZE); + } else if (rtlefuse->epromtype == EEPROM_93C46) { + RT_TRACE(COMP_ERR, DBG_EMERG, + ("RTL819X Not boot from eeprom, check it !!")); + } + + RT_PRINT_DATA(rtlpriv, COMP_INIT, DBG_DMESG, ("MAP \n"), + hwinfo, HWSET_MAX_SIZE); + + eeprom_id = *((u16 *) & hwinfo[0]); + if (eeprom_id != RTL_EEPROM_ID) { + RT_TRACE(COMP_ERR, DBG_WARNING, + ("EEPROM ID(%#x) is invalid!!\n", eeprom_id)); + rtlefuse->autoload_failflag = true; + } else { + RT_TRACE(COMP_INIT, DBG_LOUD, ("Autoload OK\n")); + rtlefuse->autoload_failflag = false; + } + + if (rtlefuse->autoload_failflag == true) { + RT_TRACE(COMP_ERR, DBG_EMERG, + ("RTL8812AE autoload_failflag, check it !!")); + return; + } + + rtlefuse->eeprom_version = *(u8 *) & hwinfo[EEPROM_VERSION]; + if (rtlefuse->eeprom_version == 0xff) + rtlefuse->eeprom_version = 0; + + RT_TRACE(COMP_INIT, DBG_LOUD, + ("EEPROM version: 0x%2x\n", rtlefuse->eeprom_version)); + + rtlefuse->eeprom_vid = *(u16 *) &hwinfo[EEPROM_VID]; + rtlefuse->eeprom_did = *(u16 *) &hwinfo[EEPROM_DID]; + rtlefuse->eeprom_svid = *(u16 *) &hwinfo[EEPROM_SVID]; + rtlefuse->eeprom_smid = *(u16 *) &hwinfo[EEPROM_SMID]; + RT_TRACE(COMP_INIT, DBG_LOUD, + ("EEPROMId = 0x%4x\n", eeprom_id)); + RT_TRACE(COMP_INIT, DBG_LOUD, + ("EEPROM VID = 0x%4x\n", rtlefuse->eeprom_vid)); + RT_TRACE(COMP_INIT, DBG_LOUD, + ("EEPROM DID = 0x%4x\n", rtlefuse->eeprom_did)); + RT_TRACE(COMP_INIT, DBG_LOUD, + ("EEPROM SVID = 0x%4x\n", rtlefuse->eeprom_svid)); + RT_TRACE(COMP_INIT, DBG_LOUD, + ("EEPROM SMID = 0x%4x\n", rtlefuse->eeprom_smid)); + + /*customer ID*/ + rtlefuse->eeprom_oemid = *(u8 *) & hwinfo[EEPROM_CUSTOMER_ID]; + if (rtlefuse->eeprom_oemid == 0xFF) + rtlefuse->eeprom_oemid = 0; + + RT_TRACE(COMP_INIT, DBG_LOUD, + ("EEPROM Customer ID: 0x%2x\n", rtlefuse->eeprom_oemid)); + + for (i = 0; i < 6; i += 2) { + usvalue = *(u16 *) & hwinfo[EEPROM_MAC_ADDR + i]; + *((u16 *) (&rtlefuse->dev_addr[i])) = usvalue; + } + + RT_TRACE(COMP_INIT, DBG_DMESG, + ("dev_addr: %pM\n", rtlefuse->dev_addr)); + + _rtl8821ae_read_txpower_info_from_hwpg(hw, + rtlefuse->autoload_failflag, hwinfo); + + /*board type*/ + rtlefuse->board_type = (((*(u8 *) & hwinfo[EEPROM_RF_BOARD_OPTION]) & 0xE0 ) >> 5); + if ((*(u8 *) & hwinfo[EEPROM_RF_BOARD_OPTION]) == 0xff ) + rtlefuse->board_type = 0; + rtlhal->boad_type = rtlefuse->board_type; + + rtl8821ae_read_bt_coexist_info_from_hwpg(hw, + rtlefuse->autoload_failflag, hwinfo); + + rtlefuse->eeprom_channelplan = *(u8 *) & hwinfo[EEPROM_CHANNELPLAN]; + if (rtlefuse->eeprom_channelplan == 0xff) + rtlefuse->eeprom_channelplan = 0x7F; + + /* set channel paln to world wide 13 */ + //rtlefuse->channel_plan = (u8) rtlefuse->eeprom_channelplan; + + /*parse xtal*/ + rtlefuse->crystalcap = hwinfo[EEPROM_XTAL_8821AE]; + if ( rtlefuse->crystalcap == 0xFF ) + rtlefuse->crystalcap = 0x20; + + rtlefuse->eeprom_thermalmeter = *(u8 *) & hwinfo[EEPROM_THERMAL_METER]; + if ((rtlefuse->eeprom_thermalmeter == 0xff) ||rtlefuse->autoload_failflag ) + { + rtlefuse->b_apk_thermalmeterignore = true; + rtlefuse->eeprom_thermalmeter = 0x18; + } + + rtlefuse->thermalmeter[0] = rtlefuse->eeprom_thermalmeter; + RT_TRACE(COMP_INIT, DBG_LOUD, + ("thermalmeter = 0x%x\n", rtlefuse->eeprom_thermalmeter)); + + if (rtlefuse->autoload_failflag == false) { + rtlefuse->antenna_div_cfg = (*(u8 *) & hwinfo[EEPROM_RF_BOARD_OPTION] & BIT(3))?true:false; + /*if (BT_1ant()) + rtlefuse->antenna_div_cfg = 0;*/ + + rtlefuse->antenna_div_type = CG_TRX_HW_ANTDIV; + } else { + rtlefuse->antenna_div_cfg = 0; + rtlefuse->antenna_div_type = 0; + } + + RT_TRACE(COMP_INIT, DBG_LOUD, + ("SWAS: bHwAntDiv = %x, TRxAntDivType = %x\n", + rtlefuse->antenna_div_cfg, rtlefuse->antenna_div_type)); + + pcipriv->ledctl.bled_opendrain = true; + + if (rtlhal->oem_id == RT_CID_DEFAULT) { + switch (rtlefuse->eeprom_oemid) { + case RT_CID_DEFAULT: + break; + case EEPROM_CID_TOSHIBA: + rtlhal->oem_id = RT_CID_TOSHIBA; + break; + case EEPROM_CID_CCX: + rtlhal->oem_id = RT_CID_CCX; + break; + case EEPROM_CID_QMI: + rtlhal->oem_id = RT_CID_819x_QMI; + break; + case EEPROM_CID_WHQL: + break; + default: + break; + } + } +} + + +/*static void _rtl8821ae_hal_customized_behavior(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + + pcipriv->ledctl.bled_opendrain = true; + switch (rtlhal->oem_id) { + case RT_CID_819x_HP: + pcipriv->ledctl.bled_opendrain = true; + break; + case RT_CID_819x_Lenovo: + case RT_CID_DEFAULT: + case RT_CID_TOSHIBA: + case RT_CID_CCX: + case RT_CID_819x_Acer: + case RT_CID_WHQL: + default: + break; + } + RT_TRACE(COMP_INIT, DBG_DMESG, + ("RT Customized ID: 0x%02X\n", rtlhal->oem_id)); +}*/ + +void rtl8821ae_read_eeprom_info(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + u8 tmp_u1b; + + rtlhal->version = _rtl8821ae_read_chip_version(hw); + + if (get_rf_type(rtlphy) == RF_1T1R) + rtlpriv->dm.brfpath_rxenable[0] = true; + else + rtlpriv->dm.brfpath_rxenable[0] = + rtlpriv->dm.brfpath_rxenable[1] = true; + RT_TRACE(COMP_INIT, DBG_LOUD, ("VersionID = 0x%4x\n", + rtlhal->version)); + + tmp_u1b = rtl_read_byte(rtlpriv, REG_9346CR); + if (tmp_u1b & BIT(4)) { + RT_TRACE(COMP_INIT, DBG_DMESG, ("Boot from EEPROM\n")); + rtlefuse->epromtype = EEPROM_93C46; + } else { + RT_TRACE(COMP_INIT, DBG_DMESG, ("Boot from EFUSE\n")); + rtlefuse->epromtype = EEPROM_BOOT_EFUSE; + } + + if (tmp_u1b & BIT(5)) { + RT_TRACE(COMP_INIT, DBG_LOUD, ("Autoload OK\n")); + rtlefuse->autoload_failflag = false; + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8812AE) + _rtl8812ae_read_adapter_info(hw, false); + else if (rtlhal->hw_type == HARDWARE_TYPE_RTL8821AE) + _rtl8821ae_read_adapter_info(hw, false); + } else { + RT_TRACE(COMP_ERR, DBG_EMERG, ("Autoload ERR!!\n")); + } + /*hal_ReadRFType_8812A()*/ + //_rtl8821ae_hal_customized_behavior(hw); +} + +static void rtl8821ae_update_hal_rate_table(struct ieee80211_hw *hw, + struct ieee80211_sta *sta) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + u32 ratr_value; + u8 ratr_index = 0; + u8 b_nmode = mac->ht_enable; + u8 mimo_ps = IEEE80211_SMPS_OFF; + u16 shortgi_rate; + u32 tmp_ratr_value; + u8 b_curtxbw_40mhz = mac->bw_40; + u8 b_curshortgi_40mhz = (sta->ht_cap.cap & IEEE80211_HT_CAP_SGI_40) ? + 1 : 0; + u8 b_curshortgi_20mhz = (sta->ht_cap.cap & IEEE80211_HT_CAP_SGI_20) ? + 1 : 0; + enum wireless_mode wirelessmode = mac->mode; + + if (rtlhal->current_bandtype == BAND_ON_5G) + ratr_value = sta->supp_rates[1] << 4; + else + ratr_value = sta->supp_rates[0]; + if (mac->opmode == NL80211_IFTYPE_ADHOC) + ratr_value = 0xfff; + ratr_value |= (sta->ht_cap.mcs.rx_mask[1] << 20 | + sta->ht_cap.mcs.rx_mask[0] << 12); + switch (wirelessmode) { + case WIRELESS_MODE_B: + if (ratr_value & 0x0000000c) + ratr_value &= 0x0000000d; + else + ratr_value &= 0x0000000f; + break; + case WIRELESS_MODE_G: + ratr_value &= 0x00000FF5; + break; + case WIRELESS_MODE_N_24G: + case WIRELESS_MODE_N_5G: + b_nmode = 1; + if (mimo_ps == IEEE80211_SMPS_STATIC) { + ratr_value &= 0x0007F005; + } else { + u32 ratr_mask; + + if (get_rf_type(rtlphy) == RF_1T2R || + get_rf_type(rtlphy) == RF_1T1R) + ratr_mask = 0x000ff005; + else + ratr_mask = 0x0f0ff005; + + ratr_value &= ratr_mask; + } + break; + default: + if (rtlphy->rf_type == RF_1T2R) + ratr_value &= 0x000ff0ff; + else + ratr_value &= 0x0f0ff0ff; + + break; + } + + if ( (rtlpcipriv->btcoexist.bt_coexistence) && + (rtlpcipriv->btcoexist.bt_coexist_type == BT_CSR_BC4) && + (rtlpcipriv->btcoexist.bt_cur_state) && + (rtlpcipriv->btcoexist.bt_ant_isolation) && + ((rtlpcipriv->btcoexist.bt_service == BT_SCO)|| + (rtlpcipriv->btcoexist.bt_service == BT_BUSY)) ) + ratr_value &= 0x0fffcfc0; + else + ratr_value &= 0x0FFFFFFF; + + if (b_nmode && ((b_curtxbw_40mhz && + b_curshortgi_40mhz) || (!b_curtxbw_40mhz && + b_curshortgi_20mhz))) { + + ratr_value |= 0x10000000; + tmp_ratr_value = (ratr_value >> 12); + + for (shortgi_rate = 15; shortgi_rate > 0; shortgi_rate--) { + if ((1 << shortgi_rate) & tmp_ratr_value) + break; + } + + shortgi_rate = (shortgi_rate << 12) | (shortgi_rate << 8) | + (shortgi_rate << 4) | (shortgi_rate); + } + + rtl_write_dword(rtlpriv, REG_ARFR0 + ratr_index * 4, ratr_value); + + RT_TRACE(COMP_RATR, DBG_DMESG, + ("%x\n", rtl_read_dword(rtlpriv, REG_ARFR0))); +} + + +static u8 _rtl8821ae_mrate_idx_to_arfr_id( + struct ieee80211_hw *hw, u8 rate_index, + enum wireless_mode wirelessmode) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + u8 ret = 0; + switch(rate_index){ + case RATR_INX_WIRELESS_NGB: + if(rtlphy->rf_type == RF_1T1R) + ret = 1; + else + ret = 0; + ;break; + case RATR_INX_WIRELESS_N: + case RATR_INX_WIRELESS_NG: + if(rtlphy->rf_type == RF_1T1R) + ret = 5; + else + ret = 4; + ;break; + case RATR_INX_WIRELESS_NB: + if(rtlphy->rf_type == RF_1T1R) + ret = 3; + else + ret = 2; + ;break; + case RATR_INX_WIRELESS_GB: + ret = 6; + break; + case RATR_INX_WIRELESS_G: + ret = 7; + break; + case RATR_INX_WIRELESS_B: + ret = 8; + break; + case RATR_INX_WIRELESS_MC: + if ((wirelessmode == WIRELESS_MODE_B) + || (wirelessmode == WIRELESS_MODE_G) + || (wirelessmode == WIRELESS_MODE_N_24G) + || (wirelessmode == WIRELESS_MODE_AC_24G)) + ret = 6; + else + ret = 7; + case RATR_INX_WIRELESS_AC_5N: + if(rtlphy->rf_type == RF_1T1R) + ret = 10; + else + ret = 9; + break; + case RATR_INX_WIRELESS_AC_24N: + if(rtlphy->current_chan_bw == HT_CHANNEL_WIDTH_80) + { + if(rtlphy->rf_type == RF_1T1R) + ret = 10; + else + ret = 9; + } else { + if(rtlphy->rf_type == RF_1T1R) + ret = 11; + else + ret = 12; + } + break; + default: + ret = 0;break; + } + return ret; +} + +static void rtl8821ae_update_hal_rate_mask(struct ieee80211_hw *hw, + struct ieee80211_sta *sta, u8 rssi_level) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + struct rtl_sta_info * sta_entry = NULL; + u32 ratr_bitmap; + u8 ratr_index; + u8 b_curtxbw_40mhz = (sta->ht_cap.cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40) + ? 1 : 0; + u8 b_curshortgi_40mhz = (sta->ht_cap.cap & IEEE80211_HT_CAP_SGI_40) ? + 1 : 0; + u8 b_curshortgi_20mhz = (sta->ht_cap.cap & IEEE80211_HT_CAP_SGI_20) ? + 1 : 0; + enum wireless_mode wirelessmode = 0; + bool b_shortgi = false; + u8 rate_mask[7]; + u8 macid = 0; + u8 mimo_ps = IEEE80211_SMPS_OFF; + + sta_entry = (struct rtl_sta_info *) sta->drv_priv; + wirelessmode = sta_entry->wireless_mode; + if (mac->opmode == NL80211_IFTYPE_STATION || + mac->opmode == NL80211_IFTYPE_MESH_POINT) + b_curtxbw_40mhz = mac->bw_40; + else if (mac->opmode == NL80211_IFTYPE_AP || + mac->opmode == NL80211_IFTYPE_ADHOC) + macid = sta->aid + 1; + + ratr_bitmap = sta->supp_rates[0]; + + if (mac->opmode == NL80211_IFTYPE_ADHOC) + ratr_bitmap = 0xfff; + + ratr_bitmap |= (sta->ht_cap.mcs.rx_mask[1] << 20 | + sta->ht_cap.mcs.rx_mask[0] << 12); +/*mac id owner*/ + switch (wirelessmode) { + case WIRELESS_MODE_B: + ratr_index = RATR_INX_WIRELESS_B; + if (ratr_bitmap & 0x0000000c) + ratr_bitmap &= 0x0000000d; + else + ratr_bitmap &= 0x0000000f; + break; + case WIRELESS_MODE_G: + ratr_index = RATR_INX_WIRELESS_GB; + + if (rssi_level == 1) + ratr_bitmap &= 0x00000f00; + else if (rssi_level == 2) + ratr_bitmap &= 0x00000ff0; + else + ratr_bitmap &= 0x00000ff5; + break; + case WIRELESS_MODE_A: + ratr_index = RATR_INX_WIRELESS_G; + ratr_bitmap &= 0x00000ff0; + break; + case WIRELESS_MODE_N_24G: + case WIRELESS_MODE_N_5G: + if (wirelessmode == WIRELESS_MODE_N_24G) + ratr_index = RATR_INX_WIRELESS_NGB; + else + ratr_index = RATR_INX_WIRELESS_NG; + + if (mimo_ps == IEEE80211_SMPS_STATIC || mimo_ps == IEEE80211_SMPS_DYNAMIC) { + if (rssi_level == 1) + ratr_bitmap &= 0x00070000; + else if (rssi_level == 2) + ratr_bitmap &= 0x0007f000; + else + ratr_bitmap &= 0x0007f005; + } else { + if ( rtlphy->rf_type == RF_1T1R) { + if (b_curtxbw_40mhz) { + if (rssi_level == 1) + ratr_bitmap &= 0x000f0000; + else if (rssi_level == 2) + ratr_bitmap &= 0x000ff000; + else + ratr_bitmap &= 0x000ff015; + } else { + if (rssi_level == 1) + ratr_bitmap &= 0x000f0000; + else if (rssi_level == 2) + ratr_bitmap &= 0x000ff000; + else + ratr_bitmap &= 0x000ff005; + } + } else { + if (b_curtxbw_40mhz) { + if (rssi_level == 1) + ratr_bitmap &= 0x0fff0000; + else if (rssi_level == 2) + ratr_bitmap &= 0x0ffff000; + else + ratr_bitmap &= 0x0ffff015; + } else { + if (rssi_level == 1) + ratr_bitmap &= 0x0fff0000; + else if (rssi_level == 2) + ratr_bitmap &= 0x0ffff000; + else + ratr_bitmap &= 0x0ffff005; + } + } + } + if ((b_curtxbw_40mhz && b_curshortgi_40mhz) || + (!b_curtxbw_40mhz && b_curshortgi_20mhz)) { + + if (macid == 0) + b_shortgi = true; + else if (macid == 1) + b_shortgi = false; + } + break; + + case WIRELESS_MODE_AC_24G: + ratr_index = RATR_INX_WIRELESS_AC_24N; + if(rssi_level == 1) + ratr_bitmap &= 0xfc3f0000; + else if(rssi_level == 2) + ratr_bitmap &= 0xfffff000; + else + ratr_bitmap &= 0xffffffff; + break; + + case WIRELESS_MODE_AC_5G: + ratr_index = RATR_INX_WIRELESS_AC_5N; + + if (rtlphy->rf_type == RF_1T1R) + { + if(rtlhal->hw_type == HARDWARE_TYPE_RTL8812AE) + { + if(rssi_level == 1) /*add by Gary for ac-series*/ + ratr_bitmap &= 0x003f8000; + else if (rssi_level == 2) + ratr_bitmap &= 0x003ff000; + else + ratr_bitmap &= 0x003ff010; + } + else + ratr_bitmap &= 0x000ff010; + } + else + { + if(rssi_level == 1) /* add by Gary for ac-series*/ + ratr_bitmap &= 0xfe3f8000; /*VHT 2SS MCS3~9*/ + else if (rssi_level == 2) + ratr_bitmap &= 0xfffff000; /*VHT 2SS MCS0~9*/ + else + ratr_bitmap &= 0xfffff010; /*All*/ + } + break; + + default: + ratr_index = RATR_INX_WIRELESS_NGB; + + if (rtlphy->rf_type == RF_1T2R) + ratr_bitmap &= 0x000ff0ff; + else + ratr_bitmap &= 0x0f0ff0ff; + break; + + } + + sta_entry->ratr_index = ratr_index; + + RT_TRACE(COMP_RATR, DBG_DMESG, + ("ratr_bitmap :%x\n", ratr_bitmap)); + *(u32 *) & rate_mask = EF4BYTE((ratr_bitmap & 0x0fffffff) | + (ratr_index << 28)); + rate_mask[0] = macid; + rate_mask[1] = _rtl8821ae_mrate_idx_to_arfr_id(hw, ratr_index, wirelessmode) | (b_shortgi ? 0x80 : 0x00); + rate_mask[2] = b_curtxbw_40mhz; + /* if (prox_priv->proxim_modeinfo->power_output > 0) + rate_mask[2] |= BIT(6); */ + + rate_mask[3] = (u8)(ratr_bitmap & 0x000000ff); + rate_mask[4] = (u8)((ratr_bitmap & 0x0000ff00) >>8); + rate_mask[5] = (u8)((ratr_bitmap & 0x00ff0000) >> 16); + rate_mask[6] = (u8)((ratr_bitmap & 0xff000000) >> 24); + + RT_TRACE(COMP_RATR, DBG_DMESG, ("Rate_index:%x, " + "ratr_val:%x, %x:%x:%x:%x:%x:%x:%x\n", + ratr_index, ratr_bitmap, + rate_mask[0], rate_mask[1], + rate_mask[2], rate_mask[3], + rate_mask[4], rate_mask[5], + rate_mask[6])); + rtl8821ae_fill_h2c_cmd(hw, H2C_8821AE_RA_MASK, 7, rate_mask); + _rtl8821ae_set_bcn_ctrl_reg(hw, BIT(3), 0); +} + +void rtl8821ae_update_hal_rate_tbl(struct ieee80211_hw *hw, + struct ieee80211_sta *sta, u8 rssi_level) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + if (rtlpriv->dm.b_useramask) + rtl8821ae_update_hal_rate_mask(hw, sta, rssi_level); + else + /*RT_TRACE(COMP_RATR,DBG_LOUD,("rtl8821ae_update_hal_rate_tbl(): Error! 8821ae FW RA Only"));*/ + rtl8821ae_update_hal_rate_table(hw, sta); +} + +void rtl8821ae_update_channel_access_setting(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + u16 sifs_timer; + + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_SLOT_TIME, + (u8 *) & mac->slot_time); + if (!mac->ht_enable) + sifs_timer = 0x0a0a; + else + sifs_timer = 0x0e0e; + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_SIFS, (u8 *) & sifs_timer); +} + +bool rtl8821ae_gpio_radio_on_off_checking(struct ieee80211_hw *hw, u8 * valid) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + enum rf_pwrstate e_rfpowerstate_toset, cur_rfstate; + u8 u1tmp = 0; + bool b_actuallyset = false; + + if (rtlpriv->rtlhal.being_init_adapter) + return false; + + if (ppsc->b_swrf_processing) + return false; + + spin_lock(&rtlpriv->locks.rf_ps_lock); + if (ppsc->rfchange_inprogress) { + spin_unlock(&rtlpriv->locks.rf_ps_lock); + return false; + } else { + ppsc->rfchange_inprogress = true; + spin_unlock(&rtlpriv->locks.rf_ps_lock); + } + + cur_rfstate = ppsc->rfpwr_state; + + rtl_write_byte(rtlpriv, REG_GPIO_IO_SEL_2, + rtl_read_byte(rtlpriv, REG_GPIO_IO_SEL_2) & ~(BIT(1))); + + u1tmp = rtl_read_byte(rtlpriv, REG_GPIO_PIN_CTRL_2); + + if (rtlphy->polarity_ctl) { + e_rfpowerstate_toset = (u1tmp & BIT(1)) ? ERFOFF : ERFON; + } else { + e_rfpowerstate_toset = (u1tmp & BIT(1)) ? ERFON : ERFOFF; + } + + if ((ppsc->b_hwradiooff == true) && (e_rfpowerstate_toset == ERFON)) { + RT_TRACE(COMP_RF, DBG_DMESG, + ("GPIOChangeRF - HW Radio ON, RF ON\n")); + + e_rfpowerstate_toset = ERFON; + ppsc->b_hwradiooff = false; + b_actuallyset = true; + } else if ((ppsc->b_hwradiooff == false) + && (e_rfpowerstate_toset == ERFOFF)) { + RT_TRACE(COMP_RF, DBG_DMESG, + ("GPIOChangeRF - HW Radio OFF, RF OFF\n")); + + e_rfpowerstate_toset = ERFOFF; + ppsc->b_hwradiooff = true; + b_actuallyset = true; + } + + if (b_actuallyset) { + spin_lock(&rtlpriv->locks.rf_ps_lock); + ppsc->rfchange_inprogress = false; + spin_unlock(&rtlpriv->locks.rf_ps_lock); + } else { + if (ppsc->reg_rfps_level & RT_RF_OFF_LEVL_HALT_NIC) + RT_SET_PS_LEVEL(ppsc, RT_RF_OFF_LEVL_HALT_NIC); + + spin_lock(&rtlpriv->locks.rf_ps_lock); + ppsc->rfchange_inprogress = false; + spin_unlock(&rtlpriv->locks.rf_ps_lock); + } + + *valid = 1; + return !ppsc->b_hwradiooff; + +} + +void rtl8821ae_set_key(struct ieee80211_hw *hw, u32 key_index, + u8 *p_macaddr, bool is_group, u8 enc_algo, + bool is_wepkey, bool clear_all) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + u8 *macaddr = p_macaddr; + u32 entry_id = 0; + bool is_pairwise = false; + + static u8 cam_const_addr[4][6] = { + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x01}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x02}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x03} + }; + static u8 cam_const_broad[] = { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff + }; + + if (clear_all) { + u8 idx = 0; + u8 cam_offset = 0; + u8 clear_number = 5; + + RT_TRACE(COMP_SEC, DBG_DMESG, ("clear_all\n")); + + for (idx = 0; idx < clear_number; idx++) { + rtl_cam_mark_invalid(hw, cam_offset + idx); + rtl_cam_empty_entry(hw, cam_offset + idx); + + if (idx < 5) { + memset(rtlpriv->sec.key_buf[idx], 0, + MAX_KEY_LEN); + rtlpriv->sec.key_len[idx] = 0; + } + } + + } else { + switch (enc_algo) { + case WEP40_ENCRYPTION: + enc_algo = CAM_WEP40; + break; + case WEP104_ENCRYPTION: + enc_algo = CAM_WEP104; + break; + case TKIP_ENCRYPTION: + enc_algo = CAM_TKIP; + break; + case AESCCMP_ENCRYPTION: + enc_algo = CAM_AES; + break; + default: + RT_TRACE(COMP_ERR, DBG_EMERG, ("switch case " + "not process \n")); + enc_algo = CAM_TKIP; + break; + } + + if (is_wepkey || rtlpriv->sec.use_defaultkey) { + macaddr = cam_const_addr[key_index]; + entry_id = key_index; + } else { + if (is_group) { + macaddr = cam_const_broad; + entry_id = key_index; + } else { + if (mac->opmode == NL80211_IFTYPE_AP) { + entry_id = rtl_cam_get_free_entry(hw, p_macaddr); + if (entry_id >= TOTAL_CAM_ENTRY) { + RT_TRACE(COMP_SEC, DBG_EMERG, + ("Can not find free hw security cam entry\n")); + return; + } + } else { + entry_id = CAM_PAIRWISE_KEY_POSITION; + } + + key_index = PAIRWISE_KEYIDX; + is_pairwise = true; + } + } + + if (rtlpriv->sec.key_len[key_index] == 0) { + RT_TRACE(COMP_SEC, DBG_DMESG, + ("delete one entry, entry_id is %d\n",entry_id)); + if (mac->opmode == NL80211_IFTYPE_AP) + rtl_cam_del_entry(hw, p_macaddr); + rtl_cam_delete_one_entry(hw, p_macaddr, entry_id); + } else { + RT_TRACE(COMP_SEC, DBG_DMESG, ("add one entry\n")); + if (is_pairwise) { + RT_TRACE(COMP_SEC, DBG_DMESG, ("set Pairwiase key\n")); + + rtl_cam_add_one_entry(hw, macaddr, key_index, + entry_id, enc_algo, + CAM_CONFIG_NO_USEDK, + rtlpriv->sec.key_buf[key_index]); + } else { + RT_TRACE(COMP_SEC, DBG_DMESG, ("set group key\n")); + + if (mac->opmode == NL80211_IFTYPE_ADHOC) { + rtl_cam_add_one_entry(hw, + rtlefuse->dev_addr, + PAIRWISE_KEYIDX, + CAM_PAIRWISE_KEY_POSITION, + enc_algo, + CAM_CONFIG_NO_USEDK, + rtlpriv->sec.key_buf + [entry_id]); + } + + rtl_cam_add_one_entry(hw, macaddr, key_index, + entry_id, enc_algo, + CAM_CONFIG_NO_USEDK, + rtlpriv->sec.key_buf[entry_id]); + } + + } + } +} + + +void rtl8812ae_read_bt_coexist_info_from_hwpg(struct ieee80211_hw *hw, + bool auto_load_fail, u8 *hwinfo) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 value; + + if (!auto_load_fail) { + value = *(u8 *) & hwinfo[EEPROM_RF_BOARD_OPTION]; + if (((value & 0xe0) >> 5) == 0x1) + rtlpriv->btcoexist.btc_info.btcoexist = 1; + else + rtlpriv->btcoexist.btc_info.btcoexist = 0; + rtlpriv->btcoexist.btc_info.bt_type = BT_RTL8812A; + + value = hwinfo[EEPROM_RF_BT_SETTING]; + rtlpriv->btcoexist.btc_info.ant_num = (value & 0x1); + } else { + rtlpriv->btcoexist.btc_info.btcoexist = 0; + rtlpriv->btcoexist.btc_info.bt_type = BT_RTL8812A; + rtlpriv->btcoexist.btc_info.ant_num = ANT_X2; + } + /*move BT_InitHalVars() to init_sw_vars*/ +} + +void rtl8821ae_read_bt_coexist_info_from_hwpg(struct ieee80211_hw *hw, + bool auto_load_fail, u8 *hwinfo) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u8 value; + u32 tmpu_32; + + if (!auto_load_fail) { + tmpu_32 = rtl_read_dword(rtlpriv, REG_MULTI_FUNC_CTRL); + if(tmpu_32 & BIT(18)) + rtlpriv->btcoexist.btc_info.btcoexist = 1; + else + rtlpriv->btcoexist.btc_info.btcoexist = 0; + rtlpriv->btcoexist.btc_info.bt_type = BT_RTL8821A; + + value = hwinfo[EEPROM_RF_BT_SETTING]; + rtlpriv->btcoexist.btc_info.ant_num = (value & 0x1); + } else { + rtlpriv->btcoexist.btc_info.btcoexist = 0; + rtlpriv->btcoexist.btc_info.bt_type = BT_RTL8821A; + rtlpriv->btcoexist.btc_info.ant_num = ANT_X2; + } + /*move BT_InitHalVars() to init_sw_vars*/ +} + +void rtl8821ae_bt_reg_init(struct ieee80211_hw* hw) +{ + struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); + + /* 0:Low, 1:High, 2:From Efuse. */ + rtlpcipriv->btcoexist.b_reg_bt_iso = 2; + /* 0:Idle, 1:None-SCO, 2:SCO, 3:From Counter. */ + rtlpcipriv->btcoexist.b_reg_bt_sco= 3; + /* 0:Disable BT control A-MPDU, 1:Enable BT control A-MPDU. */ + rtlpcipriv->btcoexist.b_reg_bt_sco= 0; +} + + +void rtl8821ae_bt_hw_init(struct ieee80211_hw* hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + if (rtlpriv->cfg->ops->get_btc_status()){ + rtlpriv->btcoexist.btc_ops->btc_init_hw_config(rtlpriv); + } +} + +void rtl8821ae_suspend(struct ieee80211_hw *hw) +{ +} + +void rtl8821ae_resume(struct ieee80211_hw *hw) +{ +} + +/* Turn on AAP (RCR:bit 0) for promicuous mode. */ +void rtl8821ae_allow_all_destaddr(struct ieee80211_hw *hw, + bool allow_all_da, bool write_into_reg) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + + if (allow_all_da) /* Set BIT0 */ + rtlpci->receive_config |= RCR_AAP; + else /* Clear BIT0 */ + rtlpci->receive_config &= ~RCR_AAP; + + if(write_into_reg) + rtl_write_dword(rtlpriv, REG_RCR, rtlpci->receive_config); + + + RT_TRACE(COMP_TURBO | COMP_INIT, DBG_LOUD, + ("receive_config=0x%08X, write_into_reg=%d\n", + rtlpci->receive_config, write_into_reg )); +} + --- linux-3.13.0.orig/drivers/staging/rtl8821ae/rtl8821ae/hw.h +++ linux-3.13.0/drivers/staging/rtl8821ae/rtl8821ae/hw.h @@ -0,0 +1,75 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#ifndef __RTL8821AE_HW_H__ +#define __RTL8821AE_HW_H__ + +void rtl8821ae_get_hw_reg(struct ieee80211_hw *hw, u8 variable, u8 *val); +void rtl8821ae_read_eeprom_info(struct ieee80211_hw *hw); + +void rtl8821ae_interrupt_recognized(struct ieee80211_hw *hw, + u32 *p_inta, u32 *p_intb); +int rtl8821ae_hw_init(struct ieee80211_hw *hw); +void rtl8821ae_card_disable(struct ieee80211_hw *hw); +void rtl8821ae_enable_interrupt(struct ieee80211_hw *hw); +void rtl8821ae_disable_interrupt(struct ieee80211_hw *hw); +int rtl8821ae_set_network_type(struct ieee80211_hw *hw, enum nl80211_iftype type); +void rtl8821ae_set_check_bssid(struct ieee80211_hw *hw, bool check_bssid); +void rtl8821ae_set_qos(struct ieee80211_hw *hw, int aci); +void rtl8821ae_set_beacon_related_registers(struct ieee80211_hw *hw); +void rtl8821ae_set_beacon_interval(struct ieee80211_hw *hw); +void rtl8821ae_update_interrupt_mask(struct ieee80211_hw *hw, + u32 add_msr, u32 rm_msr); +void rtl8821ae_set_hw_reg(struct ieee80211_hw *hw, u8 variable, u8 *val); +void rtl8821ae_update_hal_rate_tbl(struct ieee80211_hw *hw, + struct ieee80211_sta *sta, + u8 rssi_level); +void rtl8821ae_update_channel_access_setting(struct ieee80211_hw *hw); +bool rtl8821ae_gpio_radio_on_off_checking(struct ieee80211_hw *hw, u8 *valid); +void rtl8821ae_enable_hw_security_config(struct ieee80211_hw *hw); +void rtl8821ae_set_key(struct ieee80211_hw *hw, u32 key_index, + u8 *p_macaddr, bool is_group, u8 enc_algo, + bool is_wepkey, bool clear_all); + +void rtl8821ae_read_bt_coexist_info_from_hwpg(struct ieee80211_hw *hw, + bool autoload_fail, + u8* hwinfo); +void rtl8812ae_read_bt_coexist_info_from_hwpg(struct ieee80211_hw *hw, + bool autoload_fail, + u8* hwinfo); +void rtl8821ae_bt_reg_init(struct ieee80211_hw* hw); +void rtl8821ae_bt_hw_init(struct ieee80211_hw* hw); +void rtl8821ae_suspend(struct ieee80211_hw *hw); +void rtl8821ae_resume(struct ieee80211_hw *hw); +void rtl8821ae_allow_all_destaddr(struct ieee80211_hw *hw, + bool allow_all_da, + bool write_into_reg); +void _rtl8821ae_stop_tx_beacon(struct ieee80211_hw *hw); +void _rtl8821ae_resume_tx_beacon(struct ieee80211_hw *hw); +#endif --- linux-3.13.0.orig/drivers/staging/rtl8821ae/rtl8821ae/led.c +++ linux-3.13.0/drivers/staging/rtl8821ae/rtl8821ae/led.c @@ -0,0 +1,239 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#include "../wifi.h" +#include "../pci.h" +#include "reg.h" + +static void _rtl8821ae_init_led(struct ieee80211_hw *hw, + struct rtl_led *pled, + enum rtl_led_pin ledpin) +{ + pled->hw = hw; + pled->ledpin = ledpin; + pled->b_ledon = false; +} + +void rtl8821ae_sw_led_on(struct ieee80211_hw *hw, struct rtl_led *pled) +{ + u8 ledcfg; + struct rtl_priv *rtlpriv = rtl_priv(hw); + + RT_TRACE(COMP_LED, DBG_LOUD, + ("LedAddr:%X ledpin=%d\n", REG_LEDCFG2, pled->ledpin)); + + switch (pled->ledpin) { + case LED_PIN_GPIO0: + break; + case LED_PIN_LED0: + ledcfg = rtl_read_byte(rtlpriv, REG_LEDCFG2); + ledcfg &= ~BIT(6); + rtl_write_byte(rtlpriv, + REG_LEDCFG2, (ledcfg & 0xf0) | BIT(5)); + break; + case LED_PIN_LED1: + ledcfg = rtl_read_byte(rtlpriv, REG_LEDCFG1); + rtl_write_byte(rtlpriv, REG_LEDCFG1, ledcfg & 0x10); + break; + default: + RT_TRACE(COMP_ERR, DBG_EMERG, + ("switch case not process \n")); + break; + } + pled->b_ledon = true; +} + +void rtl8812ae_sw_led_on(struct ieee80211_hw *hw, struct rtl_led *pled) +{ + u16 ledreg = REG_LEDCFG1; + u8 ledcfg = 0; + struct rtl_priv *rtlpriv = rtl_priv(hw); + + switch (pled->ledpin) { + case LED_PIN_LED0: + ledreg = REG_LEDCFG1; + break; + + case LED_PIN_LED1: + ledreg = REG_LEDCFG2; + break; + + case LED_PIN_GPIO0: + default: + break; + } + + RT_TRACE(COMP_LED, DBG_LOUD, ("In SwLedOn, LedAddr:%X LEDPIN=%d \n", ledreg, pled->ledpin)); + + ledcfg = rtl_read_byte(rtlpriv, ledreg); + ledcfg |= BIT(5); /*Set 0x4c[21]*/ + ledcfg &= ~(BIT(7) | BIT(6) | BIT(3) |BIT(2) | BIT(1) |BIT(0)); + /*Clear 0x4c[23:22] and 0x4c[19:16]*/ + rtl_write_byte(rtlpriv, ledreg, ledcfg); /*SW control led0 on.*/ + pled->b_ledon = true; +} + +void rtl8821ae_sw_led_off(struct ieee80211_hw *hw, struct rtl_led *pled) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw); + u8 ledcfg; + + RT_TRACE(COMP_LED, DBG_LOUD, + ("LedAddr:%X ledpin=%d\n", REG_LEDCFG2, pled->ledpin)); + + ledcfg = rtl_read_byte(rtlpriv, REG_LEDCFG2); + + switch (pled->ledpin) { + case LED_PIN_GPIO0: + break; + case LED_PIN_LED0: + ledcfg &= 0xf0; + if (pcipriv->ledctl.bled_opendrain == true) { + ledcfg &= 0x90; /* Set to software control. */ + rtl_write_byte(rtlpriv, REG_LEDCFG2, (ledcfg|BIT(3))); + ledcfg = rtl_read_byte(rtlpriv, REG_MAC_PINMUX_CFG); + ledcfg &= 0xFE; + rtl_write_byte(rtlpriv, REG_MAC_PINMUX_CFG, ledcfg); + } + else { + ledcfg &= ~BIT(6); + rtl_write_byte(rtlpriv, REG_LEDCFG2, + (ledcfg | BIT(3) | BIT(5))); + } + break; + case LED_PIN_LED1: + ledcfg = rtl_read_byte(rtlpriv, REG_LEDCFG1); + ledcfg &= 0x10; /* Set to software control. */ + rtl_write_byte(rtlpriv, REG_LEDCFG1, ledcfg|BIT(3)); + + break; + default: + RT_TRACE(COMP_ERR, DBG_EMERG, + ("switch case not process \n")); + break; + } + pled->b_ledon = false; +} + +void rtl8812ae_sw_led_off(struct ieee80211_hw *hw, struct rtl_led *pled){ + u16 ledreg = REG_LEDCFG1; + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw); + + switch(pled->ledpin) + { + case LED_PIN_LED0: + ledreg = REG_LEDCFG1; + break; + + case LED_PIN_LED1: + ledreg = REG_LEDCFG2; + break; + + case LED_PIN_GPIO0: + default: + break; + } + + RT_TRACE(COMP_LED,DBG_LOUD,("In SwLedOff,LedAddr:%X LEDPIN=%d\n", ledreg, pled->ledpin)); + + if(pcipriv->ledctl.bled_opendrain == true) /*Open-drain arrangement for controlling the LED*/ + { + u8 ledcfg = rtl_read_byte(rtlpriv, ledreg); + + ledreg &= 0xd0; /* Set to software control.*/ + rtl_write_byte(rtlpriv, ledreg, (ledcfg | BIT(3))); + + /*Open-drain arrangement*/ + ledcfg = rtl_read_byte(rtlpriv, REG_MAC_PINMUX_CFG); + ledcfg &= 0xFE;/*Set GPIO[8] to input mode*/ + rtl_write_byte(rtlpriv, REG_MAC_PINMUX_CFG, ledcfg); + } + else + { + rtl_write_byte(rtlpriv, ledreg, 0x28); + } + + pled->b_ledon = false; +} + +void rtl8821ae_init_sw_leds(struct ieee80211_hw *hw) +{ + struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw); + _rtl8821ae_init_led(hw, &(pcipriv->ledctl.sw_led0), LED_PIN_LED0); + _rtl8821ae_init_led(hw, &(pcipriv->ledctl.sw_led1), LED_PIN_LED1); +} + +static void _rtl8821ae_sw_led_control(struct ieee80211_hw *hw, + enum led_ctl_mode ledaction) +{ + struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw); + struct rtl_led *pLed0 = &(pcipriv->ledctl.sw_led0); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + switch (ledaction) { + case LED_CTL_POWER_ON: + case LED_CTL_LINK: + case LED_CTL_NO_LINK: + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8812AE) + rtl8812ae_sw_led_on(hw, pLed0); + else + rtl8821ae_sw_led_on(hw, pLed0); + break; + case LED_CTL_POWER_OFF: + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8812AE)\ + rtl8812ae_sw_led_off(hw, pLed0); + else + rtl8821ae_sw_led_off(hw, pLed0); + break; + default: + break; + } +} + +void rtl8821ae_led_control(struct ieee80211_hw *hw, + enum led_ctl_mode ledaction) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + + if ((ppsc->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_START_TO_LINK || + ledaction == LED_CTL_POWER_ON)) { + return; + } + RT_TRACE(COMP_LED, DBG_LOUD, ("ledaction %d, \n", + ledaction)); + _rtl8821ae_sw_led_control(hw, ledaction); +} --- linux-3.13.0.orig/drivers/staging/rtl8821ae/rtl8821ae/led.h +++ linux-3.13.0/drivers/staging/rtl8821ae/rtl8821ae/led.h @@ -0,0 +1,40 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#ifndef __RTL8821AE_LED_H__ +#define __RTL8821AE_LED_H__ + +void rtl8821ae_init_sw_leds(struct ieee80211_hw *hw); +void rtl8821ae_sw_led_on(struct ieee80211_hw *hw, struct rtl_led *pled); +void rtl8812ae_sw_led_on(struct ieee80211_hw *hw, struct rtl_led *pled); +void rtl8821ae_sw_led_off(struct ieee80211_hw *hw, struct rtl_led *pled); +void rtl8812ae_sw_led_off(struct ieee80211_hw *hw, struct rtl_led *pled); +void rtl8821ae_led_control(struct ieee80211_hw *hw, enum led_ctl_mode ledaction); + +#endif --- linux-3.13.0.orig/drivers/staging/rtl8821ae/rtl8821ae/phy.c +++ linux-3.13.0/drivers/staging/rtl8821ae/rtl8821ae/phy.c @@ -0,0 +1,5525 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#include "../wifi.h" +#include "../pci.h" +#include "../ps.h" +#include "reg.h" +#include "def.h" +#include "phy.h" +#include "rf.h" +#include "dm.h" +#include "table.h" +#include "trx.h" +#include "../btcoexist/halbt_precomp.h" +#include "hw.h" + +#define READ_NEXT_PAIR(array_table,v1, v2, i) do { i += 2; v1 = array_table[i]; v2 = array_table[i+1]; } while(0) + +static u32 _rtl8821ae_phy_rf_serial_read(struct ieee80211_hw *hw, + enum radio_path rfpath, u32 offset); +static void _rtl8821ae_phy_rf_serial_write(struct ieee80211_hw *hw, + enum radio_path rfpath, u32 offset, + u32 data); +static u32 _rtl8821ae_phy_calculate_bit_shift(u32 bitmask); +static bool _rtl8821ae_phy_bb8821a_config_parafile(struct ieee80211_hw *hw); +static bool _rtl8812ae_phy_config_mac_with_headerfile(struct ieee80211_hw *hw); +static bool _rtl8821ae_phy_config_mac_with_headerfile(struct ieee80211_hw *hw); +static bool _rtl8821ae_phy_config_bb_with_headerfile(struct ieee80211_hw *hw, + u8 configtype); +static bool _rtl8812ae_phy_config_bb_with_headerfile(struct ieee80211_hw *hw, + u8 configtype); +static bool _rtl8821ae_phy_config_bb_with_pgheaderfile(struct ieee80211_hw *hw, + u8 configtype); +static bool _rtl8812ae_phy_config_bb_with_pgheaderfile(struct ieee80211_hw *hw, + u8 configtype); +static void _rtl8821ae_phy_init_bb_rf_register_definition(struct ieee80211_hw *hw); + +static long _rtl8821ae_phy_txpwr_idx_to_dbm(struct ieee80211_hw *hw, + enum wireless_mode wirelessmode, + u8 txpwridx); +static void rtl8821ae_phy_set_rf_on(struct ieee80211_hw *hw); +static void rtl8821ae_phy_set_io(struct ieee80211_hw *hw); + +void rtl8812ae_fixspur( + struct ieee80211_hw *hw, + enum ht_channel_width band_width, + u8 channel +) +{ + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + + /*C cut Item12 ADC FIFO CLOCK*/ + if(IS_VENDOR_8812A_C_CUT(rtlhal->version)) + { + if(band_width == HT_CHANNEL_WIDTH_20_40 && channel == 11) + rtl_set_bbreg(hw, RRFMOD, 0xC00, 0x3) ; + /* 0x8AC[11:10] = 2'b11*/ + else + rtl_set_bbreg(hw, RRFMOD, 0xC00, 0x2); + /* 0x8AC[11:10] = 2'b10*/ + + + /* <20120914, Kordan> A workarould to resolve + 2480Mhz spur by setting ADC clock as 160M. (Asked by Binson)*/ + if (band_width == HT_CHANNEL_WIDTH_20 && + (channel == 13 || channel == 14)) { + rtl_set_bbreg(hw, RRFMOD, 0x300, 0x3); + /*0x8AC[9:8] = 2'b11*/ + rtl_set_bbreg(hw, RADC_BUF_CLK, BIT(30), 1); + /* 0x8C4[30] = 1*/ + } else if (band_width == HT_CHANNEL_WIDTH_20_40 && + channel == 11) { + rtl_set_bbreg(hw, RADC_BUF_CLK, BIT(30), 1); + /*0x8C4[30] = 1*/ + } else if (band_width != HT_CHANNEL_WIDTH_80) { + rtl_set_bbreg(hw, RRFMOD, 0x300, 0x2); + /*0x8AC[9:8] = 2'b10*/ + rtl_set_bbreg(hw, RADC_BUF_CLK, BIT(30), 0); + /*0x8C4[30] = 0*/ + } + } + else if (rtlhal->hw_type == HARDWARE_TYPE_RTL8812AE) + { + /* <20120914, Kordan> A workarould to resolve + 2480Mhz spur by setting ADC clock as 160M. (Asked by Binson)*/ + if (band_width == HT_CHANNEL_WIDTH_20 && + (channel == 13 || channel == 14)) + rtl_set_bbreg(hw, RRFMOD, 0x300, 0x3); + /*0x8AC[9:8] = 11*/ + else if (channel <= 14) /*2.4G only*/ + rtl_set_bbreg(hw, RRFMOD, 0x300, 0x2); + /*0x8AC[9:8] = 10*/ + } + +} + +u32 rtl8821ae_phy_query_bb_reg(struct ieee80211_hw *hw, u32 regaddr, u32 bitmask) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 returnvalue, originalvalue, bitshift; + + RT_TRACE(COMP_RF, DBG_TRACE, ("regaddr(%#x), " + "bitmask(%#x)\n", regaddr, + bitmask)); + originalvalue = rtl_read_dword(rtlpriv, regaddr); + bitshift = _rtl8821ae_phy_calculate_bit_shift(bitmask); + returnvalue = (originalvalue & bitmask) >> bitshift; + + RT_TRACE(COMP_RF, DBG_TRACE, ("BBR MASK=0x%x " + "Addr[0x%x]=0x%x\n", bitmask, + regaddr, originalvalue)); + + return returnvalue; + +} + +void rtl8821ae_phy_set_bb_reg(struct ieee80211_hw *hw, + u32 regaddr, u32 bitmask, u32 data) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 originalvalue, bitshift; + + RT_TRACE(COMP_RF, DBG_TRACE, ("regaddr(%#x), bitmask(%#x)," + " data(%#x)\n", regaddr, bitmask, + data)); + + if (bitmask != MASKDWORD) { + originalvalue = rtl_read_dword(rtlpriv, regaddr); + bitshift = _rtl8821ae_phy_calculate_bit_shift(bitmask); + data = ((originalvalue & (~bitmask)) | ((data << bitshift) & bitmask)); + } + + rtl_write_dword(rtlpriv, regaddr, data); + + RT_TRACE(COMP_RF, DBG_TRACE, ("regaddr(%#x), bitmask(%#x)," + " data(%#x)\n", regaddr, bitmask, + data)); + +} + +u32 rtl8821ae_phy_query_rf_reg(struct ieee80211_hw *hw, + enum radio_path rfpath, u32 regaddr, u32 bitmask) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 original_value, readback_value, bitshift; + unsigned long flags; + + RT_TRACE(COMP_RF, DBG_TRACE, ("regaddr(%#x), " + "rfpath(%#x), bitmask(%#x)\n", + regaddr, rfpath, bitmask)); + + spin_lock_irqsave(&rtlpriv->locks.rf_lock, flags); + + + original_value = _rtl8821ae_phy_rf_serial_read(hw,rfpath, regaddr); + bitshift = _rtl8821ae_phy_calculate_bit_shift(bitmask); + readback_value = (original_value & bitmask) >> bitshift; + + spin_unlock_irqrestore(&rtlpriv->locks.rf_lock, flags); + + RT_TRACE(COMP_RF, DBG_TRACE, + ("regaddr(%#x), rfpath(%#x), " + "bitmask(%#x), original_value(%#x)\n", + regaddr, rfpath, bitmask, original_value)); + + return readback_value; +} + +void rtl8821ae_phy_set_rf_reg(struct ieee80211_hw *hw, + enum radio_path rfpath, + u32 regaddr, u32 bitmask, u32 data) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 original_value, bitshift; + unsigned long flags; + + RT_TRACE(COMP_RF, DBG_TRACE, + ("regaddr(%#x), bitmask(%#x), data(%#x), rfpath(%#x)\n", + regaddr, bitmask, data, rfpath)); + + spin_lock_irqsave(&rtlpriv->locks.rf_lock, flags); + + if (bitmask != RFREG_OFFSET_MASK) { + original_value = _rtl8821ae_phy_rf_serial_read(hw, + rfpath, + regaddr); + bitshift = _rtl8821ae_phy_calculate_bit_shift(bitmask); + data = + ((original_value & (~bitmask)) | + (data << bitshift)); + } + + _rtl8821ae_phy_rf_serial_write(hw, rfpath, regaddr, data); + + + spin_unlock_irqrestore(&rtlpriv->locks.rf_lock, flags); + + RT_TRACE(COMP_RF, DBG_TRACE, ("regaddr(%#x), " + "bitmask(%#x), data(%#x), rfpath(%#x)\n", + regaddr, bitmask, data, rfpath)); + +} + +static u32 _rtl8821ae_phy_rf_serial_read(struct ieee80211_hw *hw, + enum radio_path rfpath, u32 offset) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + bool b_is_pi_mode =false; + u32 retvalue = 0; + + /* 2009/06/17 MH We can not execute IO for power save or other accident mode.*/ + if (RT_CANNOT_IO(hw)) { + RT_TRACE(COMP_ERR, DBG_EMERG, ("return all one\n")); + return 0xFFFFFFFF; + } + + /* <20120809, Kordan> CCA OFF(when entering), asked by James to avoid reading the wrong value. + <20120828, Kordan> Toggling CCA would affect RF 0x0, skip it!*/ + if (offset != 0x0 && + !((rtlhal->hw_type == HARDWARE_TYPE_RTL8821AE) + || (IS_VENDOR_8812A_C_CUT(rtlhal->version)))) + rtl_set_bbreg(hw, RCCAONSEC, 0x8, 1); + + offset &= 0xff; + + if (rfpath == RF90_PATH_A) + b_is_pi_mode = (bool) rtl_get_bbreg(hw, 0xC00, 0x4); + else if (rfpath == RF90_PATH_B) + b_is_pi_mode = (bool) rtl_get_bbreg(hw, 0xE00, 0x4); + + rtl_set_bbreg(hw, RHSSIREAD_8821AE, 0xff, offset); + + if ((rtlhal->hw_type == HARDWARE_TYPE_RTL8821AE) + || (IS_VENDOR_8812A_C_CUT(rtlhal->version))) + udelay(20); + + if (b_is_pi_mode) + { + if (rfpath == RF90_PATH_A) { + retvalue = rtl_get_bbreg(hw, RA_PIREAD_8821A, BLSSIREADBACKDATA); + } + else if (rfpath == RF90_PATH_B){ + retvalue = rtl_get_bbreg(hw, RB_PIREAD_8821A, BLSSIREADBACKDATA); + } + } + else + { + if (rfpath == RF90_PATH_A) { + retvalue = rtl_get_bbreg(hw, RA_SIREAD_8821A, BLSSIREADBACKDATA); + } + else if (rfpath == RF90_PATH_B){ + retvalue = rtl_get_bbreg(hw, RB_SIREAD_8821A, BLSSIREADBACKDATA); + } + } + + /*<20120809, Kordan> CCA ON(when exiting), asked by James to avoid reading the wrong value. + <20120828, Kordan> Toggling CCA would affect RF 0x0, skip it!*/ + if (offset != 0x0 && ! ((rtlhal->hw_type == HARDWARE_TYPE_RTL8821AE) + || (IS_VENDOR_8812A_C_CUT(rtlhal->version)))) + rtl_set_bbreg(hw, RCCAONSEC, 0x8, 0); + return retvalue; +} + +#if 0 +static u32 _rtl8821ae_phy_rf_serial_read(struct ieee80211_hw *hw, + enum radio_path rfpath, u32 offset) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct bb_reg_def *pphyreg = &rtlphy->phyreg_def[rfpath]; + u32 newoffset; + u32 tmplong, tmplong2; + u8 rfpi_enable = 0; + u32 retvalue; + + offset &= 0xff; + newoffset = offset; + if (RT_CANNOT_IO(hw)) { + RT_TRACE(COMP_ERR, DBG_EMERG, ("return all one\n")); + return 0xFFFFFFFF; + } + tmplong = rtl_get_bbreg(hw, RFPGA0_XA_HSSIPARAMETER2, MASKDWORD); + if (rfpath == RF90_PATH_A) + tmplong2 = tmplong; + else + tmplong2 = rtl_get_bbreg(hw, pphyreg->rfhssi_para2, MASKDWORD); + tmplong2 = (tmplong2 & (~BLSSIREADADDRESS)) | + (newoffset << 23) | BLSSIREADEDGE; + rtl_set_bbreg(hw, RFPGA0_XA_HSSIPARAMETER2, MASKDWORD, + tmplong & (~BLSSIREADEDGE)); + mdelay(1); + rtl_set_bbreg(hw, pphyreg->rfhssi_para2, MASKDWORD, tmplong2); + mdelay(1); + /*rtl_set_bbreg(hw, RFPGA0_XA_HSSIPARAMETER2, MASKDWORD, + tmplong | BLSSIREADEDGE);*/ + mdelay(1); + if (rfpath == RF90_PATH_A) + rfpi_enable = (u8) rtl_get_bbreg(hw, RFPGA0_XA_HSSIPARAMETER1, + BIT(8)); + else if (rfpath == RF90_PATH_B) + rfpi_enable = (u8) rtl_get_bbreg(hw, RFPGA0_XB_HSSIPARAMETER1, + BIT(8)); + if (rfpi_enable) + retvalue = rtl_get_bbreg(hw, pphyreg->rflssi_readbackpi, + BLSSIREADBACKDATA); + else + retvalue = rtl_get_bbreg(hw, pphyreg->rflssi_readback, + BLSSIREADBACKDATA); + RT_TRACE(COMP_RF, DBG_TRACE, ("RFR-%d Addr[0x%x]=0x%x\n", + rfpath, pphyreg->rflssi_readback, + retvalue)); + return retvalue; +} +#endif + +static void _rtl8821ae_phy_rf_serial_write(struct ieee80211_hw *hw, + enum radio_path rfpath, u32 offset, + u32 data) +{ + u32 data_and_addr; + u32 newoffset; + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct bb_reg_def *pphyreg = &rtlphy->phyreg_def[rfpath]; + + if (RT_CANNOT_IO(hw)) { + RT_TRACE(COMP_ERR, DBG_EMERG, ("stop\n")); + return; + } + offset &= 0xff; + newoffset = offset; + data_and_addr = ((newoffset << 20) | (data & 0x000fffff)) & 0x0fffffff; + rtl_set_bbreg(hw, pphyreg->rf3wire_offset, MASKDWORD, data_and_addr); + RT_TRACE(COMP_RF, DBG_TRACE, ("RFW-%d Addr[0x%x]=0x%x\n", + rfpath, pphyreg->rf3wire_offset, + data_and_addr)); +} + +static u32 _rtl8821ae_phy_calculate_bit_shift(u32 bitmask) +{ + u32 i; + + for (i = 0; i <= 31; i++) { + if (((bitmask >> i) & 0x1) == 1) + break; + } + return i; +} + +bool rtl8821ae_phy_mac_config(struct ieee80211_hw *hw) +{ + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + bool rtstatus = 0; + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8812AE) + rtstatus = _rtl8812ae_phy_config_mac_with_headerfile(hw); + else + rtstatus = _rtl8821ae_phy_config_mac_with_headerfile(hw); + + return rtstatus; +} + +bool rtl8821ae_phy_bb_config(struct ieee80211_hw *hw) +{ + bool rtstatus = true; + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + u8 regval; + u8 crystal_cap; + //u32 tmp; + + _rtl8821ae_phy_init_bb_rf_register_definition(hw); + + regval = rtl_read_byte(rtlpriv, REG_SYS_FUNC_EN); + regval |= regval | FEN_PCIEA; + rtl_write_byte(rtlpriv, REG_SYS_FUNC_EN, regval); + rtl_write_byte(rtlpriv, REG_SYS_FUNC_EN, + regval | FEN_BB_GLB_RSTN | FEN_BBRSTB); + + rtl_write_byte(rtlpriv, REG_RF_CTRL, 0x7);/*RF_EN | RF_RSTB | RF_SDMRSTB*/ + rtl_write_byte(rtlpriv, REG_OPT_CTRL + 2, 0x7);/*RF_EN | RF_RSTB | RF_SDMRSTB*/ + + rtstatus = _rtl8821ae_phy_bb8821a_config_parafile(hw); + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8812AE) + { + crystal_cap = rtlefuse->crystalcap & 0x3F; + rtl_set_bbreg(hw, REG_MAC_PHY_CTRL, 0x7FF80000, (crystal_cap | (crystal_cap << 6))); + }else{ + crystal_cap = rtlefuse->crystalcap & 0x3F; + rtl_set_bbreg(hw, REG_MAC_PHY_CTRL, 0xFFF000, (crystal_cap | (crystal_cap << 6))); + } + rtlphy->reg_837 = rtl_read_byte(rtlpriv, 0x837); + + return rtstatus; +} + +bool rtl8821ae_phy_rf_config(struct ieee80211_hw *hw) +{ + return rtl8821ae_phy_rf6052_config(hw); +} + + +u32 phy_get_tx_bb_swing_8812A( + struct ieee80211_hw *hw, + u8 band, + u8 rf_path + ) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + struct rtl_dm *rtldm = rtl_dm(rtlpriv); + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + + char bb_swing_2g = (char) (-1 * 0xFF); + char bb_swing_5g = (char) (-1 * 0xFF); + u32 out = 0x200; + const char auto_temp = -1; + + RT_TRACE(COMP_SCAN, DBG_LOUD, + ("===> PHY_GetTxBBSwing_8812A, bbSwing_2G: %d, bbSwing_5G: %d\n", + (int)bb_swing_2g, (int)bb_swing_5g)); + + if ( rtlefuse->autoload_failflag) { + if ( band == BAND_ON_2_4G ) { + rtldm->bb_swing_diff_2g = bb_swing_2g; + if (bb_swing_2g == 0) out = 0x200; // 0 dB + else if (bb_swing_2g == -3) out = 0x16A; // -3 dB + else if (bb_swing_2g == -6) out = 0x101; // -6 dB + else if (bb_swing_2g == -9) out = 0x0B6; // -9 dB + else { + rtldm->bb_swing_diff_2g = 0; + out = 0x200; + } + + } else if ( band == BAND_ON_5G ) { + rtldm->bb_swing_diff_5g = bb_swing_5g; + if (bb_swing_5g == 0) out = 0x200; // 0 dB + else if (bb_swing_5g == -3) out = 0x16A; // -3 dB + else if (bb_swing_5g == -6) out = 0x101; // -6 dB + else if (bb_swing_5g == -9) out = 0x0B6; // -9 dB + else { + if ( rtlhal->hw_type == HARDWARE_TYPE_RTL8821AE) { + rtldm->bb_swing_diff_5g = -3; + out = 0x16A; + } else { + rtldm->bb_swing_diff_5g = 0; + out = 0x200; + } + } + } else { + rtldm->bb_swing_diff_2g = -3; + rtldm->bb_swing_diff_5g = -3; + out = 0x16A; // -3 dB + } + } + else + { + u32 swing = 0, swing_a = 0, swing_b = 0; + + if (band == BAND_ON_2_4G) + { + if (0xFF == auto_temp) + { + efuse_shadow_read(hw, 1, 0xC6, (u32 *)&swing); + swing = (swing == 0xFF) ? 0x00 : swing; + } + else if (bb_swing_2g == 0) swing = 0x00; // 0 dB + else if (bb_swing_2g == -3) swing = 0x05; // -3 dB + else if (bb_swing_2g == -6) swing = 0x0A; // -6 dB + else if (bb_swing_2g == -9) swing = 0xFF; // -9 dB + else swing = 0x00; + } + else + { + if (0xFF == auto_temp) + { + efuse_shadow_read(hw, 1, 0xC7, (u32 *)&swing); + swing = (swing == 0xFF) ? 0x00 : swing; + } + else if (bb_swing_5g == 0) swing = 0x00; // 0 dB + else if (bb_swing_5g == -3) swing = 0x05; // -3 dB + else if (bb_swing_5g == -6) swing = 0x0A; // -6 dB + else if (bb_swing_5g == -9) swing = 0xFF; // -9 dB + else swing = 0x00; + } + + swing_a = (swing & 0x3) >> 0; // 0xC6/C7[1:0] + swing_b = (swing & 0xC) >> 2; // 0xC6/C7[3:2] + RT_TRACE(COMP_SCAN, DBG_LOUD, + ("===> PHY_GetTxBBSwing_8812A, swingA: 0x%X, swingB: 0x%X\n", + swing_a, swing_b)); + + //3 Path-A + if (swing_a == 0x0) { + if (band == BAND_ON_2_4G) + rtldm->bb_swing_diff_2g = 0; + else + rtldm->bb_swing_diff_5g = 0; + out = 0x200; // 0 dB + } else if (swing_a == 0x1) { + if (band == BAND_ON_2_4G) + rtldm->bb_swing_diff_2g = -3; + else + rtldm->bb_swing_diff_5g = -3; + out = 0x16A; // -3 dB + } else if (swing_a == 0x2) { + if (band == BAND_ON_2_4G) + rtldm->bb_swing_diff_2g = -6; + else + rtldm->bb_swing_diff_5g = -6; + out = 0x101; // -6 dB + } else if (swing_a == 0x3) { + if (band == BAND_ON_2_4G) + rtldm->bb_swing_diff_2g = -9; + else + rtldm->bb_swing_diff_5g = -9; + out = 0x0B6; // -9 dB + } + + //3 Path-B + if (swing_b == 0x0) { + if (band == BAND_ON_2_4G) + rtldm->bb_swing_diff_2g = 0; + else + rtldm->bb_swing_diff_5g = 0; + out = 0x200; // 0 dB + } else if (swing_b == 0x1) { + if (band == BAND_ON_2_4G) + rtldm->bb_swing_diff_2g = -3; + else + rtldm->bb_swing_diff_5g = -3; + out = 0x16A; // -3 dB + } else if (swing_b == 0x2) { + if (band == BAND_ON_2_4G) + rtldm->bb_swing_diff_2g = -6; + else + rtldm->bb_swing_diff_5g = -6; + out = 0x101; // -6 dB + } else if (swing_b == 0x3) { + if (band == BAND_ON_2_4G) + rtldm->bb_swing_diff_2g = -9; + else + rtldm->bb_swing_diff_5g = -9; + out = 0x0B6; // -9 dB + } + } + + RT_TRACE(COMP_SCAN, DBG_LOUD, + ("<=== PHY_GetTxBBSwing_8812A, out = 0x%X\n", out)); + return out; +} +void rtl8821ae_phy_switch_wirelessband(struct ieee80211_hw *hw, u8 band) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + struct rtl_dm *rtldm = rtl_dm(rtlpriv); + u8 current_band = rtlhal->current_bandtype; + u32 txpath, rxpath; + //u8 i, value8; + char bb_diff_between_band; + + RT_TRACE(COMP_INIT, DBG_LOUD, ("\n")); + txpath = rtl8821ae_phy_query_bb_reg(hw, RTXPATH, 0xf0); + rxpath = rtl8821ae_phy_query_bb_reg(hw, RCCK_RX, 0x0f000000); + rtlhal->current_bandtype = (enum band_type) band; + /* reconfig BB/RF according to wireless mode */ + if (rtlhal->current_bandtype == BAND_ON_2_4G) { + /* BB & RF Config */ + RT_TRACE(COMP_CMD, DBG_DMESG, ("2.4G\n")); + rtl_set_bbreg(hw, ROFDMCCKEN, BOFDMEN|BCCKEN, 0x03); + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8821AE) { + /* 0xCB0[15:12] = 0x7 (LNA_On)*/ + rtl_set_bbreg(hw, RA_RFE_PINMUX, 0xF000, 0x7); + /* 0xCB0[7:4] = 0x7 (PAPE_A)*/ + rtl_set_bbreg(hw, RA_RFE_PINMUX, 0xF0, 0x7); + } + + if(rtlhal->hw_type == HARDWARE_TYPE_RTL8812AE) { + rtl_set_bbreg(hw, 0x830, 0xE, 0x4); /*0x830[3:1] = 0x4*/ + rtl_set_bbreg(hw, 0x834, 0x3, 0x1); /*0x834[1:0] = 0x1*/ + } + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8821AE) + rtl_set_bbreg(hw, RA_TXSCALE, 0xF00, 0); // 0xC1C[11:8] = 0 + else + rtl_set_bbreg(hw, 0x82c, 0x3, 0); // 0x82C[1:0] = 2b'00 + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8812AE) { + rtl_set_bbreg(hw, RA_RFE_PINMUX, BMASKDWORD, 0x77777777); + rtl_set_bbreg(hw, RB_RFE_PINMUX, BMASKDWORD, 0x77777777); + rtl_set_bbreg(hw, RA_RFE_INV, 0x3ff00000, 0x000); + rtl_set_bbreg(hw, RB_RFE_INV, 0x3ff00000, 0x000); + } + + rtl_set_bbreg(hw, RTXPATH, 0xf0, txpath); + rtl_set_bbreg(hw, RCCK_RX, 0x0f000000, rxpath); + + rtl_write_byte(rtlpriv, REG_CCK_CHECK, 0x0); + } else {/* 5G band */ + u16 count, reg_41a; + RT_TRACE(COMP_CMD, DBG_DMESG, ("5G\n")); + + if(rtlhal->hw_type == HARDWARE_TYPE_RTL8821AE) { + /*0xCB0[15:12] = 0x5 (LNA_On)*/ + rtl_set_bbreg(hw, RA_RFE_PINMUX, 0xF000, 0x5); + /*0xCB0[7:4] = 0x4 (PAPE_A)*/ + rtl_set_bbreg(hw, RA_RFE_PINMUX, 0xF0, 0x4); + } + /*CCK_CHECK_en*/ + rtl_write_byte(rtlpriv, REG_CCK_CHECK, 0x80); + + count = 0; + reg_41a = rtl_read_word(rtlpriv, REG_TXPKT_EMPTY); + RT_TRACE(COMP_SCAN, DBG_LOUD, ("Reg41A value %d", reg_41a)); + reg_41a &= 0x30; + while ((reg_41a!= 0x30) && (count < 50)) { + udelay(50); + RT_TRACE(COMP_SCAN, DBG_LOUD, ("Delay 50us \n")); + + reg_41a = rtl_read_word(rtlpriv, REG_TXPKT_EMPTY); + reg_41a &= 0x30; + count++; + RT_TRACE(COMP_SCAN, DBG_LOUD, ("Reg41A value %d", reg_41a)); + } + if (count != 0) + RT_TRACE(COMP_MLME, DBG_LOUD, + ("PHY_SwitchWirelessBand8812(): Switch to 5G Band. " + "Count = %d reg41A=0x%x\n", count, reg_41a)); + + // 2012/02/01, Sinda add registry to switch workaround without long-run verification for scan issue. + rtl_set_bbreg(hw, ROFDMCCKEN, BOFDMEN|BCCKEN, 0x03); + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8812AE) { + rtl_set_bbreg(hw, 0x830, 0xE, 0x3); /*0x830[3:1] = 0x3*/ + rtl_set_bbreg(hw, 0x834, 0x3, 0x2); /*0x834[1:0] = 0x2*/ + } + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8821AE) { + /* AGC table select */ + rtl_set_bbreg(hw, RA_TXSCALE, 0xF00, 1); /* 0xC1C[11:8] = 1*/ + } else + rtl_set_bbreg(hw, 0x82c, 0x3, 1); // 0x82C[1:0] = 2'b00 + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8812AE) { + rtl_set_bbreg(hw, RA_RFE_PINMUX, BMASKDWORD, 0x77337777); + rtl_set_bbreg(hw, RB_RFE_PINMUX, BMASKDWORD, 0x77337777); + rtl_set_bbreg(hw, RA_RFE_INV, 0x3ff00000, 0x010); + rtl_set_bbreg(hw, RB_RFE_INV, 0x3ff00000, 0x010); + } + + rtl_set_bbreg(hw, RTXPATH, 0xf0, txpath); + rtl_set_bbreg(hw, RCCK_RX, 0x0f000000, rxpath); + + RT_TRACE(COMP_SCAN, DBG_LOUD, + ("==>PHY_SwitchWirelessBand8812() BAND_ON_5G settings OFDM index 0x%x\n", + rtlpriv->dm.ofdm_index[RF90_PATH_A])); + } + + if ((rtlhal->hw_type == HARDWARE_TYPE_RTL8821AE) || + (rtlhal->hw_type == HARDWARE_TYPE_RTL8812AE)) { + rtl_set_bbreg(hw, RA_TXSCALE, 0xFFE00000, + phy_get_tx_bb_swing_8812A(hw, band, RF90_PATH_A)); // 0xC1C[31:21] + rtl_set_bbreg(hw, RB_TXSCALE, 0xFFE00000, + phy_get_tx_bb_swing_8812A(hw, band, RF90_PATH_B)); // 0xE1C[31:21] + + /* <20121005, Kordan> When TxPowerTrack is ON, we should take care of the change of BB swing. + That is, reset all info to trigger Tx power tracking.*/ + if (band != current_band) { + bb_diff_between_band = (rtldm->bb_swing_diff_2g - rtldm->bb_swing_diff_5g); + bb_diff_between_band = (band == BAND_ON_2_4G) ? bb_diff_between_band : (-1 * bb_diff_between_band); + rtldm->default_ofdm_index += bb_diff_between_band * 2; + } + rtl8821ae_dm_clear_txpower_tracking_state(hw); + } + + RT_TRACE(COMP_SCAN, DBG_TRACE, + ("<==rtl8821ae_phy_switch_wirelessband():Switch Band OK.\n")); + return; +} + +static bool _rtl8821ae_check_condition(struct ieee80211_hw *hw, + const u32 Condition + ) +{ + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + u32 _board = rtlefuse->board_type; /*need efuse define*/ + u32 _interface = rtlhal->interface; + u32 _platform = 0x08;/*SupportPlatform */ + u32 cond = Condition; + + if ( Condition == 0xCDCDCDCD ) + return true; + + cond = Condition & 0xFF; + if ( (_board != cond) == 0 && cond != 0xFF) + return false; + + cond = Condition & 0xFF00; + cond = cond >> 8; + if ( (_interface & cond) == 0 && cond != 0x07) + return false; + + cond = Condition & 0xFF0000; + cond = cond >> 16; + if ( (_platform & cond) == 0 && cond != 0x0F) + return false; + return true; +} + +static void _rtl8821ae_config_rf_reg(struct ieee80211_hw *hw, + u32 addr, + u32 data, + enum radio_path rfpath, + u32 regaddr + ) +{ + if ( addr == 0xfe || addr == 0xffe) { + mdelay(50); + } else { + rtl_set_rfreg(hw, rfpath, regaddr, RFREG_OFFSET_MASK, data); + udelay(1); + } +} + +static void _rtl8821ae_config_rf_radio_a(struct ieee80211_hw *hw, + u32 addr, u32 data) +{ + u32 content = 0x1000; /*RF Content: radio_a_txt*/ + u32 maskforphyset = (u32)(content & 0xE000); + + _rtl8821ae_config_rf_reg(hw, addr, data, RF90_PATH_A, addr | maskforphyset); + +} + +static void _rtl8821ae_config_rf_radio_b(struct ieee80211_hw *hw, + u32 addr, u32 data) +{ + u32 content = 0x1001; /*RF Content: radio_b_txt*/ + u32 maskforphyset = (u32)(content & 0xE000); + + _rtl8821ae_config_rf_reg(hw, addr, data, RF90_PATH_B, addr | maskforphyset); + +} + +static void _rtl8812ae_config_bb_reg(struct ieee80211_hw *hw, + u32 addr, u32 data) +{ + if ( addr == 0xfe) { + mdelay(50); + } else if ( addr == 0xfd) + mdelay(5); + else if ( addr == 0xfc) + mdelay(1); + else if ( addr == 0xfb) + udelay(50); + else if ( addr == 0xfa) + udelay(5); + else if ( addr == 0xf9) + udelay(1); + else { + rtl_set_bbreg(hw, addr, MASKDWORD,data); + } + udelay(1); +} + +static void _rtl8821ae_config_bb_reg(struct ieee80211_hw *hw, + u32 addr, u32 data) +{ + if ( addr == 0xfe) { + mdelay(50); + } else if ( addr == 0xfd) + mdelay(5); + else if ( addr == 0xfc) + mdelay(1); + else if ( addr == 0xfb) + udelay(50); + else if ( addr == 0xfa) + udelay(5); + else if ( addr == 0xf9) + udelay(1); + + rtl_set_bbreg(hw, addr, MASKDWORD,data); + udelay(1); +} + +static void _rtl8821ae_phy_init_tx_power_by_rate(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + + u8 band, rfpath, txnum, rate_section; + + for ( band = BAND_ON_2_4G; band <= BAND_ON_5G; ++band ) + for ( rfpath = 0; rfpath < TX_PWR_BY_RATE_NUM_RF; ++rfpath ) + for ( txnum = 0; txnum < TX_PWR_BY_RATE_NUM_RF; ++txnum ) + for ( rate_section = 0; rate_section < TX_PWR_BY_RATE_NUM_SECTION; ++rate_section ) + rtlphy->tx_power_by_rate_offset[band][rfpath][txnum][rate_section] = 0; +} + +void _rtl8821ae_phy_set_txpower_by_rate_base(struct ieee80211_hw *hw, + u8 band, u8 path, + u8 rate_section, + u8 txnum, u8 value) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + + if (path > RF90_PATH_D) { + RT_TRACE(COMP_INIT, DBG_LOUD, + ("Invalid Rf Path %d in phy_SetTxPowerByRatBase()\n", path)); + return; + } + + if (band == BAND_ON_2_4G) { + switch (rate_section) { + case CCK: + rtlphy->txpwr_by_rate_base_24g[path][txnum][0] = value; + break; + case OFDM: + rtlphy->txpwr_by_rate_base_24g[path][txnum][1] = value; + break; + case HT_MCS0_MCS7: + rtlphy->txpwr_by_rate_base_24g[path][txnum][2] = value; + break; + case HT_MCS8_MCS15: + rtlphy->txpwr_by_rate_base_24g[path][txnum][3] = value; + break; + case VHT_1SSMCS0_1SSMCS9: + rtlphy->txpwr_by_rate_base_24g[path][txnum][4] = value; + break; + case VHT_2SSMCS0_2SSMCS9: + rtlphy->txpwr_by_rate_base_24g[path][txnum][5] = value; + break; + default: + RT_TRACE(COMP_INIT, DBG_LOUD, ( "Invalid RateSection %d in Band 2.4G, Rf Path %d, %dTx in PHY_SetTxPowerByRateBase()\n", + rate_section, path, txnum ) ); + break; + }; + } else if (band == BAND_ON_5G) { + switch (rate_section) { + case OFDM: + rtlphy->txpwr_by_rate_base_5g[path][txnum][0] = value; + break; + case HT_MCS0_MCS7: + rtlphy->txpwr_by_rate_base_5g[path][txnum][1] = value; + break; + case HT_MCS8_MCS15: + rtlphy->txpwr_by_rate_base_5g[path][txnum][2] = value; + break; + case VHT_1SSMCS0_1SSMCS9: + rtlphy->txpwr_by_rate_base_5g[path][txnum][3] = value; + break; + case VHT_2SSMCS0_2SSMCS9: + rtlphy->txpwr_by_rate_base_5g[path][txnum][4] = value; + break; + default: + RT_TRACE(COMP_INIT, DBG_LOUD, + ("Invalid RateSection %d in Band 5G, Rf Path %d, " + "%dTx in PHY_SetTxPowerByRateBase()\n", + rate_section, path, txnum)); + break; + }; + } else { + RT_TRACE(COMP_INIT, DBG_LOUD, + ("Invalid Band %d in PHY_SetTxPowerByRateBase()\n", band)); + } + +} + +u8 _rtl8821ae_phy_get_txpower_by_rate_base(struct ieee80211_hw *hw, + u8 band, u8 path, + u8 txnum, u8 rate_section) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + u8 value = 0; + + if (path > RF90_PATH_D) { + RT_TRACE(COMP_INIT, DBG_LOUD, + ("Invalid Rf Path %d in PHY_GetTxPowerByRateBase()\n", path)); + return 0; + } + + if (band == BAND_ON_2_4G) { + switch (rate_section) { + case CCK: + value = rtlphy->txpwr_by_rate_base_24g[path][txnum][0]; + break; + case OFDM: + value = rtlphy->txpwr_by_rate_base_24g[path][txnum][1]; + break; + case HT_MCS0_MCS7: + value = rtlphy->txpwr_by_rate_base_24g[path][txnum][2]; + break; + case HT_MCS8_MCS15: + value = rtlphy->txpwr_by_rate_base_24g[path][txnum][3]; + break; + case VHT_1SSMCS0_1SSMCS9: + value = rtlphy->txpwr_by_rate_base_24g[path][txnum][4]; + break; + case VHT_2SSMCS0_2SSMCS9: + value = rtlphy->txpwr_by_rate_base_24g[path][txnum][5]; + break; + default: + RT_TRACE(COMP_INIT, DBG_LOUD, + ("Invalid RateSection %d in Band 2.4G, Rf Path %d," + " %dTx in PHY_GetTxPowerByRateBase()\n", + rate_section, path, txnum)); + break; + }; + } else if (band == BAND_ON_5G) { + switch (rate_section) { + case OFDM: + value = rtlphy->txpwr_by_rate_base_5g[path][txnum][0]; + break; + case HT_MCS0_MCS7: + value = rtlphy->txpwr_by_rate_base_5g[path][txnum][1]; + break; + case HT_MCS8_MCS15: + value = rtlphy->txpwr_by_rate_base_5g[path][txnum][2]; + break; + case VHT_1SSMCS0_1SSMCS9: + value = rtlphy->txpwr_by_rate_base_5g[path][txnum][3]; + break; + case VHT_2SSMCS0_2SSMCS9: + value = rtlphy->txpwr_by_rate_base_5g[path][txnum][4]; + break; + default: + RT_TRACE(COMP_INIT, DBG_LOUD, + ("Invalid RateSection %d in Band 5G, Rf Path %d," + " %dTx in PHY_GetTxPowerByRateBase()\n", + rate_section, path, txnum)); + break; + }; + } else { + RT_TRACE(COMP_INIT, DBG_LOUD, + ("Invalid Band %d in PHY_GetTxPowerByRateBase()\n", band)); + } + + return value; + +} +void _rtl8821ae_phy_store_txpower_by_rate_base(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + u16 rawValue = 0; + u8 base = 0, path = 0; + + for (path = RF90_PATH_A; path <= RF90_PATH_B; ++path) { + rawValue = (u16) (rtlphy->tx_power_by_rate_offset[BAND_ON_2_4G][path][RF_1TX][0] >> 24) & 0xFF; + base = (rawValue >> 4) * 10 + (rawValue & 0xF); + _rtl8821ae_phy_set_txpower_by_rate_base(hw, BAND_ON_2_4G, path, CCK, RF_1TX, base); + + rawValue = (u16) (rtlphy->tx_power_by_rate_offset[BAND_ON_2_4G][path][RF_1TX][2] >> 24) & 0xFF; + base = (rawValue >> 4) * 10 + (rawValue & 0xF); + _rtl8821ae_phy_set_txpower_by_rate_base(hw, BAND_ON_2_4G, path, OFDM, RF_1TX, base ); + + rawValue = (u16) (rtlphy->tx_power_by_rate_offset[BAND_ON_2_4G][path][RF_1TX][4] >> 24) & 0xFF; + base = (rawValue >> 4) * 10 + (rawValue & 0xF); + _rtl8821ae_phy_set_txpower_by_rate_base(hw, BAND_ON_2_4G, path, HT_MCS0_MCS7, RF_1TX, base ); + + rawValue = (u16) (rtlphy->tx_power_by_rate_offset[BAND_ON_2_4G][path][RF_2TX][6] >> 24) & 0xFF; + base = (rawValue >> 4) * 10 + (rawValue & 0xF); + _rtl8821ae_phy_set_txpower_by_rate_base(hw, BAND_ON_2_4G, path, HT_MCS8_MCS15, RF_2TX, base ); + + rawValue = (u16) (rtlphy->tx_power_by_rate_offset[BAND_ON_2_4G][path][RF_1TX][8] >> 24) & 0xFF; + base = (rawValue >> 4) * 10 + (rawValue & 0xF); + _rtl8821ae_phy_set_txpower_by_rate_base(hw, BAND_ON_2_4G, path, VHT_1SSMCS0_1SSMCS9, RF_1TX, base ); + + rawValue = (u16) (rtlphy->tx_power_by_rate_offset[BAND_ON_2_4G][path][RF_2TX][11] >> 8) & 0xFF; + base = (rawValue >> 4) * 10 + (rawValue & 0xF); + _rtl8821ae_phy_set_txpower_by_rate_base(hw, BAND_ON_2_4G, path, VHT_2SSMCS0_2SSMCS9, RF_2TX, base ); + + rawValue = (u16) (rtlphy->tx_power_by_rate_offset[BAND_ON_5G][path][RF_1TX][2] >> 24) & 0xFF; + base = (rawValue >> 4) * 10 + (rawValue & 0xF); + _rtl8821ae_phy_set_txpower_by_rate_base(hw, BAND_ON_5G, path, OFDM, RF_1TX, base ); + + rawValue = (u16) (rtlphy->tx_power_by_rate_offset[BAND_ON_5G][path][RF_1TX][4] >> 24) & 0xFF; + base = (rawValue >> 4) * 10 + (rawValue & 0xF); + _rtl8821ae_phy_set_txpower_by_rate_base(hw, BAND_ON_5G, path, HT_MCS0_MCS7, RF_1TX, base ); + + rawValue = (u16) (rtlphy->tx_power_by_rate_offset[BAND_ON_5G][path][RF_2TX][6] >> 24) & 0xFF; + base = (rawValue >> 4) * 10 + (rawValue & 0xF); + _rtl8821ae_phy_set_txpower_by_rate_base(hw, BAND_ON_5G, path, HT_MCS8_MCS15, RF_2TX, base ); + + rawValue = (u16) (rtlphy->tx_power_by_rate_offset[BAND_ON_5G][path][RF_1TX][8] >> 24) & 0xFF; + base = (rawValue >> 4) * 10 + (rawValue & 0xF); + _rtl8821ae_phy_set_txpower_by_rate_base(hw, BAND_ON_5G, path, VHT_1SSMCS0_1SSMCS9, RF_1TX, base ); + + rawValue = (u16) (rtlphy->tx_power_by_rate_offset[BAND_ON_5G][path][RF_2TX][11] >> 8) & 0xFF; + base = (rawValue >> 4) * 10 + (rawValue & 0xF); + _rtl8821ae_phy_set_txpower_by_rate_base(hw, BAND_ON_5G, path, VHT_2SSMCS0_2SSMCS9, RF_2TX, base ); + } +} + +void _phy_convert_txpower_dbm_to_relative_value(u32 *data, u8 start, + u8 end, u8 base_val) +{ + char i = 0; + u8 temp_value = 0; + u32 temp_data = 0; + + for (i = 3; i >= 0; --i) + { + if (i >= start && i <= end) { + // Get the exact value + temp_value = (u8) (*data >> (i * 8)) & 0xF; + temp_value += ((u8) ((*data >> (i * 8 + 4)) & 0xF)) * 10; + + // Change the value to a relative value + temp_value = (temp_value > base_val) ? temp_value - base_val : base_val - temp_value; + } else { + temp_value = (u8) (*data >> (i * 8)) & 0xFF; + } + temp_data <<= 8; + temp_data |= temp_value; + } + *data = temp_data; +} + +void _rtl8821ae_phy_convert_txpower_dbm_to_relative_value(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + u8 base = 0, rfPath = 0; + + for (rfPath = RF90_PATH_A; rfPath <= RF90_PATH_B; ++rfPath) { + base = _rtl8821ae_phy_get_txpower_by_rate_base(hw, BAND_ON_2_4G, rfPath, RF_1TX, CCK); + RT_DISP( FPHY, PHY_TXPWR, ( "base of 2.4G CCK 1TX: %d\n", base ) ); + _phy_convert_txpower_dbm_to_relative_value( + &(rtlphy->tx_power_by_rate_offset[BAND_ON_2_4G][rfPath][RF_1TX][0] ), + 0, 3, base ); + + base = _rtl8821ae_phy_get_txpower_by_rate_base(hw, BAND_ON_2_4G, rfPath, RF_1TX, OFDM ); + RT_DISP( FPHY, PHY_TXPWR, ( "base of 2.4G OFDM 1TX: %d\n", base ) ); + _phy_convert_txpower_dbm_to_relative_value( + &(rtlphy->tx_power_by_rate_offset[BAND_ON_2_4G][rfPath][RF_1TX][1] ), + 0, 3, base ); + _phy_convert_txpower_dbm_to_relative_value( + &(rtlphy->tx_power_by_rate_offset[BAND_ON_2_4G][rfPath][RF_1TX][2] ), + 0, 3, base ); + + base = _rtl8821ae_phy_get_txpower_by_rate_base(hw, BAND_ON_2_4G, rfPath, RF_1TX, HT_MCS0_MCS7 ); + RT_DISP( FPHY, PHY_TXPWR, ( "base of 2.4G HTMCS0-7 1TX: %d\n", base ) ); + _phy_convert_txpower_dbm_to_relative_value( + &(rtlphy->tx_power_by_rate_offset[BAND_ON_2_4G][rfPath][RF_1TX][3] ), + 0, 3, base ); + _phy_convert_txpower_dbm_to_relative_value( + &(rtlphy->tx_power_by_rate_offset[BAND_ON_2_4G][rfPath][RF_1TX][4] ), + 0, 3, base ); + + base = _rtl8821ae_phy_get_txpower_by_rate_base(hw, BAND_ON_2_4G, rfPath, RF_2TX, HT_MCS8_MCS15 ); + RT_DISP( FPHY, PHY_TXPWR, ( "base of 2.4G HTMCS8-15 2TX: %d\n", base ) ); + + _phy_convert_txpower_dbm_to_relative_value( + &(rtlphy->tx_power_by_rate_offset[BAND_ON_2_4G][rfPath][RF_2TX][5] ), + 0, 3, base ); + + _phy_convert_txpower_dbm_to_relative_value( + &(rtlphy->tx_power_by_rate_offset[BAND_ON_2_4G][rfPath][RF_2TX][6] ), + 0, 3, base ); + + base = _rtl8821ae_phy_get_txpower_by_rate_base(hw, BAND_ON_2_4G, rfPath, RF_1TX, VHT_1SSMCS0_1SSMCS9 ); + RT_DISP( FPHY, PHY_TXPWR, ( "base of 2.4G VHT1SSMCS0-9 1TX: %d\n", base ) ); + _phy_convert_txpower_dbm_to_relative_value( + &(rtlphy->tx_power_by_rate_offset[BAND_ON_2_4G][rfPath][RF_1TX][7] ), + 0, 3, base ); + _phy_convert_txpower_dbm_to_relative_value( + &(rtlphy->tx_power_by_rate_offset[BAND_ON_2_4G][rfPath][RF_1TX][8] ), + 0, 3, base ); + _phy_convert_txpower_dbm_to_relative_value( + &(rtlphy->tx_power_by_rate_offset[BAND_ON_2_4G][rfPath][RF_1TX][9] ), + 0, 1, base ); + + base = _rtl8821ae_phy_get_txpower_by_rate_base(hw, BAND_ON_2_4G, rfPath, RF_2TX, VHT_2SSMCS0_2SSMCS9 ); + RT_DISP( FPHY, PHY_TXPWR, ( "base of 2.4G VHT2SSMCS0-9 2TX: %d\n", base ) ); + _phy_convert_txpower_dbm_to_relative_value( + &(rtlphy->tx_power_by_rate_offset[BAND_ON_2_4G][rfPath][RF_1TX][9] ), + 2, 3, base ); + _phy_convert_txpower_dbm_to_relative_value( + &(rtlphy->tx_power_by_rate_offset[BAND_ON_2_4G][rfPath][RF_2TX][10] ), + 0, 3, base ); + _phy_convert_txpower_dbm_to_relative_value( + &(rtlphy->tx_power_by_rate_offset[BAND_ON_2_4G][rfPath][RF_2TX][11] ), + 0, 3, base ); + + base = _rtl8821ae_phy_get_txpower_by_rate_base(hw, BAND_ON_5G, rfPath, RF_1TX, OFDM ); + RT_DISP( FPHY, PHY_TXPWR, ( "base of 5G OFDM 1TX: %d\n", base ) ); + _phy_convert_txpower_dbm_to_relative_value( + &(rtlphy->tx_power_by_rate_offset[BAND_ON_5G][rfPath][RF_1TX][1] ), + 0, 3, base ); + _phy_convert_txpower_dbm_to_relative_value( + &(rtlphy->tx_power_by_rate_offset[BAND_ON_5G][rfPath][RF_1TX][2] ), + 0, 3, base ); + + base = _rtl8821ae_phy_get_txpower_by_rate_base(hw, BAND_ON_5G, rfPath, RF_1TX, HT_MCS0_MCS7 ); + RT_DISP( FPHY, PHY_TXPWR, ( "base of 5G HTMCS0-7 1TX: %d\n", base ) ); + _phy_convert_txpower_dbm_to_relative_value( + &(rtlphy->tx_power_by_rate_offset[BAND_ON_5G][rfPath][RF_1TX][3] ), + 0, 3, base ); + _phy_convert_txpower_dbm_to_relative_value( + &(rtlphy->tx_power_by_rate_offset[BAND_ON_5G][rfPath][RF_1TX][4] ), + 0, 3, base ); + + base = _rtl8821ae_phy_get_txpower_by_rate_base(hw, BAND_ON_5G, rfPath, RF_2TX, HT_MCS8_MCS15 ); + RT_DISP( FPHY, PHY_TXPWR, ( "base of 5G HTMCS8-15 2TX: %d\n", base ) ); + _phy_convert_txpower_dbm_to_relative_value( + &(rtlphy->tx_power_by_rate_offset[BAND_ON_5G][rfPath][RF_2TX][5] ), + 0, 3, base ); + _phy_convert_txpower_dbm_to_relative_value( + &(rtlphy->tx_power_by_rate_offset[BAND_ON_5G][rfPath][RF_2TX][6] ), + 0, 3, base ); + + base = _rtl8821ae_phy_get_txpower_by_rate_base(hw, BAND_ON_5G, rfPath, RF_1TX, VHT_1SSMCS0_1SSMCS9 ); + RT_DISP( FPHY, PHY_TXPWR, ( "base of 5G VHT1SSMCS0-9 1TX: %d\n", base ) ); + _phy_convert_txpower_dbm_to_relative_value( + &(rtlphy->tx_power_by_rate_offset[BAND_ON_5G][rfPath][RF_1TX][7] ), + 0, 3, base ); + _phy_convert_txpower_dbm_to_relative_value( + &(rtlphy->tx_power_by_rate_offset[BAND_ON_5G][rfPath][RF_1TX][8] ), + 0, 3, base ); + _phy_convert_txpower_dbm_to_relative_value( + &(rtlphy->tx_power_by_rate_offset[BAND_ON_5G][rfPath][RF_1TX][9] ), + 0, 1, base ); + + base = _rtl8821ae_phy_get_txpower_by_rate_base(hw, BAND_ON_5G, rfPath, RF_2TX, VHT_2SSMCS0_2SSMCS9 ); + RT_DISP( FPHY, PHY_TXPWR, ( "base of 5G VHT2SSMCS0-9 2TX: %d\n", base ) ); + _phy_convert_txpower_dbm_to_relative_value( + &(rtlphy->tx_power_by_rate_offset[BAND_ON_5G][rfPath][RF_1TX][9] ), + 2, 3, base ); + _phy_convert_txpower_dbm_to_relative_value( + &(rtlphy->tx_power_by_rate_offset[BAND_ON_5G][rfPath][RF_2TX][10] ), + 0, 3, base ); + _phy_convert_txpower_dbm_to_relative_value( + &(rtlphy->tx_power_by_rate_offset[BAND_ON_5G][rfPath][RF_2TX][11] ), + 0, 3, base ); + } + + RT_TRACE(COMP_POWER, DBG_TRACE, + ("<===_rtl8821ae_phy_convert_txpower_dbm_to_relative_value()\n")); + +} + +void _rtl8821ae_phy_txpower_by_rate_configuration(struct ieee80211_hw *hw) +{ + _rtl8821ae_phy_store_txpower_by_rate_base(hw); + _rtl8821ae_phy_convert_txpower_dbm_to_relative_value(hw); +} + +static bool _rtl8821ae_phy_bb8821a_config_parafile(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + bool rtstatus; + + /*TX POWER LIMIT + PHY_InitTxPowerLimit + PHY_ConfigRFWithCustomPowerLimitTableParaFile*/ + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8812AE) + rtstatus = _rtl8812ae_phy_config_bb_with_headerfile(hw, + BASEBAND_CONFIG_PHY_REG); + else{ + rtstatus = _rtl8821ae_phy_config_bb_with_headerfile(hw, + BASEBAND_CONFIG_PHY_REG); + } + if (rtstatus != true) { + RT_TRACE(COMP_ERR, DBG_EMERG, ("Write BB Reg Fail!!")); + return false; + } + _rtl8821ae_phy_init_tx_power_by_rate(hw); + if (rtlefuse->autoload_failflag == false) { + //rtlphy->pwrgroup_cnt = 0; + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8812AE) + rtstatus = _rtl8812ae_phy_config_bb_with_pgheaderfile(hw, + BASEBAND_CONFIG_PHY_REG); + else{ + rtstatus = _rtl8821ae_phy_config_bb_with_pgheaderfile(hw, + BASEBAND_CONFIG_PHY_REG); + } + } + if (rtstatus != true) { + RT_TRACE(COMP_ERR, DBG_EMERG, ("BB_PG Reg Fail!!")); + return false; + } + + _rtl8821ae_phy_txpower_by_rate_configuration(hw); + + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8812AE) + rtstatus = _rtl8812ae_phy_config_bb_with_headerfile(hw, + BASEBAND_CONFIG_AGC_TAB); + else + rtstatus = _rtl8821ae_phy_config_bb_with_headerfile(hw, + BASEBAND_CONFIG_AGC_TAB); + + if (rtstatus != true) { + RT_TRACE(COMP_ERR, DBG_EMERG, ("AGC Table Fail\n")); + return false; + } + rtlphy->bcck_high_power = (bool) (rtl_get_bbreg(hw, + RFPGA0_XA_HSSIPARAMETER2, + 0x200)); + return true; +} + +static bool _rtl8812ae_phy_config_mac_with_headerfile(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 i, v1, v2; + u32 arraylength; + u32 *ptrarray; + + RT_TRACE(COMP_INIT, DBG_TRACE, ("Read rtl8812AE_MAC_REG_Array\n")); + arraylength = RTL8812AEMAC_1T_ARRAYLEN; + ptrarray = RTL8812AE_MAC_REG_ARRAY; + RT_TRACE(COMP_INIT, DBG_LOUD, + ("Img:RTL8812AE_MAC_REG_ARRAY LEN %d\n",arraylength)); + for (i = 0; i < arraylength; i += 2) { + v1 = ptrarray[i]; + v2 = (u8) ptrarray[i + 1]; + if (v1<0xCDCDCDCD) { + rtl_write_byte(rtlpriv, v1, (u8) v2); + } else { + if (!_rtl8821ae_check_condition(hw,v1)) { + /*Discard the following (offset, data) pairs*/ + READ_NEXT_PAIR(ptrarray, v1, v2, i); + while (v2 != 0xDEAD && + v2 != 0xCDEF && + v2 != 0xCDCD && i < arraylength -2) + READ_NEXT_PAIR(ptrarray, v1, v2, i); + + i -= 2; /* prevent from for-loop += 2*/ + } else {/*Configure matched pairs and skip to end of if-else.*/ + READ_NEXT_PAIR(ptrarray, v1, v2, i); + while (v2 != 0xDEAD && + v2 != 0xCDEF && + v2 != 0xCDCD && i < arraylength -2) { + rtl_write_byte(rtlpriv,v1,v2); + READ_NEXT_PAIR(ptrarray, v1, v2, i); + } + + while (v2 != 0xDEAD && i < arraylength -2) + READ_NEXT_PAIR(ptrarray, v1, v2, i); + } + } + } + return true; +} + +static bool _rtl8821ae_phy_config_mac_with_headerfile(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 i, v1, v2; + u32 arraylength; + u32 *ptrarray; + + RT_TRACE(COMP_INIT, DBG_TRACE, ("Read rtl8821AE_MAC_REG_Array\n")); + arraylength = RTL8821AEMAC_1T_ARRAYLEN; + ptrarray = RTL8821AE_MAC_REG_ARRAY; + RT_TRACE(COMP_INIT, DBG_LOUD, + ("Img:RTL8821AE_MAC_REG_ARRAY LEN %d\n",arraylength)); + for (i = 0; i < arraylength; i += 2) { + v1 = ptrarray[i]; + v2 = (u8) ptrarray[i + 1]; + if (v1<0xCDCDCDCD) { + rtl_write_byte(rtlpriv, v1, (u8) v2); + continue; + } else { + if (!_rtl8821ae_check_condition(hw,v1)) { + /*Discard the following (offset, data) pairs*/ + READ_NEXT_PAIR(ptrarray, v1, v2, i); + while (v2 != 0xDEAD && + v2 != 0xCDEF && + v2 != 0xCDCD && i < arraylength -2) + READ_NEXT_PAIR(ptrarray, v1, v2, i); + + i -= 2; /* prevent from for-loop += 2*/ + } else {/*Configure matched pairs and skip to end of if-else.*/ + READ_NEXT_PAIR(ptrarray, v1, v2, i); + while (v2 != 0xDEAD && + v2 != 0xCDEF && + v2 != 0xCDCD && i < arraylength -2) { + rtl_write_byte(rtlpriv,v1,v2); + READ_NEXT_PAIR(ptrarray, v1, v2, i); + } + + while (v2 != 0xDEAD && i < arraylength -2) + READ_NEXT_PAIR(ptrarray, v1, v2, i); + } + } + } + return true; +} + +static bool _rtl8812ae_phy_config_bb_with_headerfile(struct ieee80211_hw *hw, + u8 configtype) +{ + int i; + u32 *array_table; + u16 arraylen; + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 v1 = 0, v2 = 0; + + if (configtype == BASEBAND_CONFIG_PHY_REG) { + arraylen = RTL8812AEPHY_REG_1TARRAYLEN; + array_table = RTL8812AE_PHY_REG_ARRAY; + + for (i = 0; i < arraylen; i += 2) { + v1 = array_table[i]; + v2 = array_table[i+1]; + if (v1<0xCDCDCDCD) { + _rtl8812ae_config_bb_reg(hw, v1, v2); + continue; + } else {/*This line is the start line of branch.*/ + if (!_rtl8821ae_check_condition(hw,v1)) { + /*Discard the following (offset, data) pairs*/ + READ_NEXT_PAIR(array_table,v1, v2, i); + while (v2 != 0xDEAD && + v2 != 0xCDEF && + v2 != 0xCDCD && i < arraylen -2) + READ_NEXT_PAIR(array_table,v1, v2, i); + + i -= 2; /* prevent from for-loop += 2*/ + } else {/*Configure matched pairs and skip to end of if-else.*/ + READ_NEXT_PAIR(array_table,v1, v2, i); + while (v2 != 0xDEAD && + v2 != 0xCDEF && + v2 != 0xCDCD && i < arraylen -2) { + _rtl8812ae_config_bb_reg(hw,v1,v2); + READ_NEXT_PAIR(array_table,v1, v2, i); + } + + while (v2 != 0xDEAD && i < arraylen -2) + READ_NEXT_PAIR(array_table,v1, v2, i); + } + } + } + } else if (configtype == BASEBAND_CONFIG_AGC_TAB) { + arraylen = RTL8812AEAGCTAB_1TARRAYLEN; + array_table = RTL8812AE_AGC_TAB_ARRAY; + + for (i = 0; i < arraylen; i = i + 2) { + v1 = array_table[i]; + v2 = array_table[i+1]; + if (v1 < 0xCDCDCDCD) { + rtl_set_bbreg(hw, v1, MASKDWORD, v2); + udelay(1); + continue; + } else {/*This line is the start line of branch.*/ + if (!_rtl8821ae_check_condition(hw,v1)) { + /*Discard the following (offset, data) pairs*/ + READ_NEXT_PAIR(array_table,v1, v2, i); + while (v2 != 0xDEAD && + v2 != 0xCDEF && + v2 != 0xCDCD && i < arraylen -2) + READ_NEXT_PAIR(array_table,v1, v2, i); + + i -= 2; /* prevent from for-loop += 2*/ + }else{/*Configure matched pairs and skip to end of if-else.*/ + READ_NEXT_PAIR(array_table,v1, v2, i); + while (v2 != 0xDEAD && + v2 != 0xCDEF && + v2 != 0xCDCD && i < arraylen -2) + { + rtl_set_bbreg(hw, v1, MASKDWORD, v2); + udelay(1); + READ_NEXT_PAIR(array_table,v1, v2, i); + } + + while (v2 != 0xDEAD && i < arraylen -2) + READ_NEXT_PAIR(array_table,v1, v2, i); + } + } + RT_TRACE(COMP_INIT, DBG_TRACE, + ("The agctab_array_table[0] is " + "%x Rtl818EEPHY_REGArray[1] is %x \n", + array_table[i], + array_table[i + 1])); + } + } + return true; +} + +static bool _rtl8821ae_phy_config_bb_with_headerfile(struct ieee80211_hw *hw, + u8 configtype) +{ + int i; + u32 *array_table; + u16 arraylen; + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 v1 = 0, v2 = 0; + + if (configtype == BASEBAND_CONFIG_PHY_REG) { + arraylen = RTL8821AEPHY_REG_1TARRAYLEN; + array_table = RTL8821AE_PHY_REG_ARRAY; + + for (i = 0; i < arraylen; i += 2) { + v1 = array_table[i]; + v2 = array_table[i+1]; + if (v1<0xCDCDCDCD) { + _rtl8821ae_config_bb_reg(hw, v1, v2); + continue; + } else {/*This line is the start line of branch.*/ + if (!_rtl8821ae_check_condition(hw,v1)) { + /*Discard the following (offset, data) pairs*/ + READ_NEXT_PAIR(array_table, v1, v2, i); + while (v2 != 0xDEAD && + v2 != 0xCDEF && + v2 != 0xCDCD && i < arraylen -2) + READ_NEXT_PAIR(array_table, v1, v2, i); + + i -= 2; /* prevent from for-loop += 2*/ + } else {/*Configure matched pairs and skip to end of if-else.*/ + READ_NEXT_PAIR(array_table, v1, v2, i); + while (v2 != 0xDEAD && + v2 != 0xCDEF && + v2 != 0xCDCD && i < arraylen -2) { + _rtl8821ae_config_bb_reg(hw,v1,v2); + READ_NEXT_PAIR(array_table, v1, v2, i); + } + + while (v2 != 0xDEAD && i < arraylen -2) + READ_NEXT_PAIR(array_table, v1, v2, i); + } + } + } + } else if (configtype == BASEBAND_CONFIG_AGC_TAB) { + arraylen = RTL8821AEAGCTAB_1TARRAYLEN; + array_table = RTL8821AE_AGC_TAB_ARRAY; + + for (i = 0; i < arraylen; i = i + 2) { + v1 = array_table[i]; + v2 = array_table[i+1]; + if (v1 < 0xCDCDCDCD) { + rtl_set_bbreg(hw, v1, MASKDWORD, v2); + udelay(1); + continue; + } else {/*This line is the start line of branch.*/ + if (!_rtl8821ae_check_condition(hw,v1)) { + /*Discard the following (offset, data) pairs*/ + READ_NEXT_PAIR(array_table, v1, v2, i); + while (v2 != 0xDEAD && + v2 != 0xCDEF && + v2 != 0xCDCD && i < arraylen -2) + READ_NEXT_PAIR(array_table, v1, v2, i); + + i -= 2; /* prevent from for-loop += 2*/ + }else{/*Configure matched pairs and skip to end of if-else.*/ + READ_NEXT_PAIR(array_table, v1, v2, i); + while (v2 != 0xDEAD && + v2 != 0xCDEF && + v2 != 0xCDCD && i < arraylen -2) + { + rtl_set_bbreg(hw, v1, MASKDWORD, v2); + udelay(1); + READ_NEXT_PAIR(array_table, v1, v2, i); + } + + while (v2 != 0xDEAD && i < arraylen -2) + READ_NEXT_PAIR(array_table, v1, v2, i); + } + } + RT_TRACE(COMP_INIT, DBG_TRACE, + ("The agctab_array_table[0] is " + "%x Rtl818EEPHY_REGArray[1] is %x \n", + array_table[i], + array_table[i + 1])); + } + } + return true; +} + +static u8 _rtl8821ae_get_rate_selection_index(u32 regaddr) +{ + u8 index = 0; + + regaddr &= 0xFFF; + if (regaddr >= 0xC20 && regaddr <= 0xC4C) + index = (u8) ((regaddr - 0xC20) / 4); + else if (regaddr >= 0xE20 && regaddr <= 0xE4C) + index = (u8) ((regaddr - 0xE20) / 4); + else + RT_ASSERT(!COMP_INIT, + ("Invalid RegAddr 0x%x in" + "PHY_GetRateSectionIndexOfTxPowerByRate()\n",regaddr)); + + return index; +} + +static void _rtl8821ae_store_tx_power_by_rate(struct ieee80211_hw *hw, + u32 band, u32 rfpath, + u32 txnum, u32 regaddr, + u32 bitmask, u32 data) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + u8 rate_section = _rtl8821ae_get_rate_selection_index(regaddr); + + if (band != BAND_ON_2_4G && band != BAND_ON_5G) + RT_TRACE(COMP_INIT, DBG_WARNING, ("Invalid Band %d\n", band)); + + if (rfpath > MAX_RF_PATH) + RT_TRACE(COMP_INIT, DBG_WARNING, ("Invalid RfPath %d\n", rfpath)); + + if (txnum > MAX_RF_PATH) + RT_TRACE(COMP_INIT, DBG_WARNING, ("Invalid TxNum %d\n", txnum ) ); + + rtlphy->tx_power_by_rate_offset[band][rfpath][txnum][rate_section] = data; + RT_TRACE(COMP_INIT, DBG_WARNING,( "pHalData->TxPwrByRateOffset[Band %d][RfPath %d][TxNum %d][RateSection %d] = 0x%x\n", + band, rfpath, txnum, rate_section, rtlphy->tx_power_by_rate_offset[band][rfpath][txnum][rate_section])); + +} + +static bool _rtl8812ae_phy_config_bb_with_pgheaderfile(struct ieee80211_hw *hw, + u8 configtype) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + int i; + u32 *phy_regarray_table_pg; + u16 phy_regarray_pg_len; + u32 v1, v2, v3, v4, v5, v6; + + phy_regarray_pg_len = RTL8812AEPHY_REG_ARRAY_PGLEN; + phy_regarray_table_pg = RTL8812AE_PHY_REG_ARRAY_PG; + + if (configtype == BASEBAND_CONFIG_PHY_REG) { + for (i = 0; i < phy_regarray_pg_len; i += 6) { + v1 = phy_regarray_table_pg[i]; + v2 = phy_regarray_table_pg[i+1]; + v3 = phy_regarray_table_pg[i+2]; + v4 = phy_regarray_table_pg[i+3]; + v5 = phy_regarray_table_pg[i+4]; + v6 = phy_regarray_table_pg[i+5]; + + if (v1<0xCDCDCDCD) { + if ( (v4 == 0xfe) || (v4 == 0xffe)) + mdelay(50); + else + /*_rtl8821ae_store_pwrIndex_diffrate_offset*/ + _rtl8821ae_store_tx_power_by_rate(hw, v1, v2, v3, v4, v5, v6); + continue; + } else { + if (!_rtl8821ae_check_condition(hw,v1)) { /*don't need the hw_body*/ + i += 2; /* skip the pair of expression*/ + v1 = phy_regarray_table_pg[i]; + v2 = phy_regarray_table_pg[i+1]; + v3 = phy_regarray_table_pg[i+2]; + while (v2 != 0xDEAD) { + i += 3; + v1 = phy_regarray_table_pg[i]; + v2 = phy_regarray_table_pg[i+1]; + v3 = phy_regarray_table_pg[i+2]; + } + } + } + } + } else { + + RT_TRACE(COMP_SEND, DBG_TRACE, + ("configtype != BaseBand_Config_PHY_REG\n")); + } + return true; +} + +static bool _rtl8821ae_phy_config_bb_with_pgheaderfile(struct ieee80211_hw *hw, + u8 configtype) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + int i; + u32 *phy_regarray_table_pg; + u16 phy_regarray_pg_len; + u32 v1, v2, v3, v4, v5, v6; + + phy_regarray_pg_len = RTL8821AEPHY_REG_ARRAY_PGLEN; + phy_regarray_table_pg = RTL8821AE_PHY_REG_ARRAY_PG; + + if (configtype == BASEBAND_CONFIG_PHY_REG) { + for (i = 0; i < phy_regarray_pg_len; i += 6) { + v1 = phy_regarray_table_pg[i]; + v2 = phy_regarray_table_pg[i+1]; + v3 = phy_regarray_table_pg[i+2]; + v4 = phy_regarray_table_pg[i+3]; + v5 = phy_regarray_table_pg[i+4]; + v6 = phy_regarray_table_pg[i+5]; + + if (v1<0xCDCDCDCD) { + if (v4 == 0xfe) + mdelay(50); + else if (v4 == 0xfd) + mdelay(5); + else if (v4 == 0xfc) + mdelay(1); + else if (v4 == 0xfb) + udelay(50); + else if (v4 == 0xfa) + udelay(5); + else if (v4 == 0xf9) + udelay(1); + + /*_rtl8821ae_store_pwrIndex_diffrate_offset*/ + _rtl8821ae_store_tx_power_by_rate(hw, v1, v2, v3, v4, v5, v6); + continue; + } else { + if (!_rtl8821ae_check_condition(hw,v1)) { /*don't need the hw_body*/ + i += 2; /* skip the pair of expression*/ + v1 = phy_regarray_table_pg[i]; + v2 = phy_regarray_table_pg[i+1]; + v3 = phy_regarray_table_pg[i+2]; + while (v2 != 0xDEAD) { + i += 3; + v1 = phy_regarray_table_pg[i]; + v2 = phy_regarray_table_pg[i+1]; + v3 = phy_regarray_table_pg[i+2]; + } + } + } + } + } else { + + RT_TRACE(COMP_SEND, DBG_TRACE, + ("configtype != BaseBand_Config_PHY_REG\n")); + } + return true; +} + +bool rtl8812ae_phy_config_rf_with_headerfile(struct ieee80211_hw * hw, + enum radio_path rfpath) +{ + #define READ_NEXT_RF_PAIR_8812(radioa_array_table,v1, v2, i) do { i += 2; v1 = radioa_array_table[i]; v2 = radioa_array_table[i+1]; } while(0) + + int i; + bool rtstatus = true; + u32 *radioa_array_table_a, *radioa_array_table_b; + u16 radioa_arraylen_a, radioa_arraylen_b; + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 v1 = 0, v2 = 0; + + radioa_arraylen_a = RTL8812AE_RADIOA_1TARRAYLEN; + radioa_array_table_a= RTL8812AE_RADIOA_ARRAY; + radioa_arraylen_b= RTL8812AE_RADIOB_1TARRAYLEN; + radioa_array_table_b = RTL8812AE_RADIOB_ARRAY; + RT_TRACE(COMP_INIT, DBG_LOUD, + ("Radio_A:RTL8821AE_RADIOA_ARRAY %d\n",radioa_arraylen_a)); + RT_TRACE(COMP_INIT, DBG_LOUD, ("Radio No %x\n", rfpath)); + rtstatus = true; + switch (rfpath) { + case RF90_PATH_A: + for (i = 0; i < radioa_arraylen_a; i = i + 2) { + v1 = radioa_array_table_a[i]; + v2 = radioa_array_table_a[i+1]; + if (v1<0xcdcdcdcd) { + _rtl8821ae_config_rf_radio_a(hw,v1,v2); + continue; + }else{/*This line is the start line of branch.*/ + if(!_rtl8821ae_check_condition(hw,v1)){ + /*Discard the following (offset, data) pairs*/ + READ_NEXT_RF_PAIR_8812(radioa_array_table_a,v1, v2, i); + while (v2 != 0xDEAD && + v2 != 0xCDEF && + v2 != 0xCDCD && i < radioa_arraylen_a-2) + READ_NEXT_RF_PAIR_8812(radioa_array_table_a,v1, v2, i); + + i -= 2; /* prevent from for-loop += 2*/ + } else {/*Configure matched pairs and skip to end of if-else.*/ + READ_NEXT_RF_PAIR_8812(radioa_array_table_a,v1, v2, i); + while (v2 != 0xDEAD && + v2 != 0xCDEF && + v2 != 0xCDCD && i < radioa_arraylen_a -2) { + _rtl8821ae_config_rf_radio_a(hw,v1,v2); + READ_NEXT_RF_PAIR_8812(radioa_array_table_a,v1, v2, i); + } + + while (v2 != 0xDEAD && i < radioa_arraylen_a-2) + READ_NEXT_RF_PAIR_8812(radioa_array_table_a,v1, v2, i); + } + } + } + break; + case RF90_PATH_B: + for (i = 0; i < radioa_arraylen_b; i = i + 2) { + v1 = radioa_array_table_b[i]; + v2 = radioa_array_table_b[i+1]; + if (v1<0xcdcdcdcd) { + _rtl8821ae_config_rf_radio_b(hw,v1,v2); + continue; + }else{/*This line is the start line of branch.*/ + if(!_rtl8821ae_check_condition(hw,v1)){ + /*Discard the following (offset, data) pairs*/ + READ_NEXT_RF_PAIR_8812(radioa_array_table_b,v1, v2, i); + while (v2 != 0xDEAD && + v2 != 0xCDEF && + v2 != 0xCDCD && i < radioa_arraylen_b-2) + READ_NEXT_RF_PAIR_8812(radioa_array_table_b,v1, v2, i); + + i -= 2; /* prevent from for-loop += 2*/ + } else {/*Configure matched pairs and skip to end of if-else.*/ + READ_NEXT_RF_PAIR_8812(radioa_array_table_b,v1, v2, i); + while (v2 != 0xDEAD && + v2 != 0xCDEF && + v2 != 0xCDCD && i < radioa_arraylen_b-2) { + _rtl8821ae_config_rf_radio_b(hw,v1,v2); + READ_NEXT_RF_PAIR_8812(radioa_array_table_b,v1, v2, i); + } + + while (v2 != 0xDEAD && i < radioa_arraylen_b-2) + READ_NEXT_RF_PAIR_8812(radioa_array_table_b,v1, v2, i); + } + } + } + break; + case RF90_PATH_C: + RT_TRACE(COMP_ERR, DBG_EMERG, + ("switch case not process \n")); + break; + case RF90_PATH_D: + RT_TRACE(COMP_ERR, DBG_EMERG, + ("switch case not process \n")); + break; + } + return true; +} + + +bool rtl8821ae_phy_config_rf_with_headerfile(struct ieee80211_hw * hw, + enum radio_path rfpath) +{ + #define READ_NEXT_RF_PAIR(v1, v2, i) do { i += 2; v1 = radioa_array_table[i]; v2 = radioa_array_table[i+1]; } while(0) + + int i; + bool rtstatus = true; + u32 *radioa_array_table; + u16 radioa_arraylen; + struct rtl_priv *rtlpriv = rtl_priv(hw); + //struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + u32 v1 = 0, v2 = 0; + + radioa_arraylen = RTL8821AE_RADIOA_1TARRAYLEN; + radioa_array_table = RTL8821AE_RADIOA_ARRAY; + RT_TRACE(COMP_INIT, DBG_LOUD, + ("Radio_A:RTL8821AE_RADIOA_ARRAY %d\n",radioa_arraylen)); + RT_TRACE(COMP_INIT, DBG_LOUD, ("Radio No %x\n", rfpath)); + rtstatus = true; + switch (rfpath) { + case RF90_PATH_A: + for (i = 0; i < radioa_arraylen; i = i + 2) { + v1 = radioa_array_table[i]; + v2 = radioa_array_table[i+1]; + if (v1<0xcdcdcdcd) { + _rtl8821ae_config_rf_radio_a(hw,v1,v2); + }else{/*This line is the start line of branch.*/ + if(!_rtl8821ae_check_condition(hw,v1)){ + /*Discard the following (offset, data) pairs*/ + READ_NEXT_RF_PAIR(v1, v2, i); + while (v2 != 0xDEAD && + v2 != 0xCDEF && + v2 != 0xCDCD && i < radioa_arraylen -2) + READ_NEXT_RF_PAIR(v1, v2, i); + + i -= 2; /* prevent from for-loop += 2*/ + } else {/*Configure matched pairs and skip to end of if-else.*/ + READ_NEXT_RF_PAIR(v1, v2, i); + while (v2 != 0xDEAD && + v2 != 0xCDEF && + v2 != 0xCDCD && i < radioa_arraylen -2) { + _rtl8821ae_config_rf_radio_a(hw,v1,v2); + READ_NEXT_RF_PAIR(v1, v2, i); + } + + while (v2 != 0xDEAD && i < radioa_arraylen -2) + READ_NEXT_RF_PAIR(v1, v2, i); + } + } + } + break; + + case RF90_PATH_B: + RT_TRACE(COMP_ERR, DBG_EMERG, + ("switch case not process \n")); + break; + case RF90_PATH_C: + RT_TRACE(COMP_ERR, DBG_EMERG, + ("switch case not process \n")); + break; + case RF90_PATH_D: + RT_TRACE(COMP_ERR, DBG_EMERG, + ("switch case not process \n")); + break; + } + return true; +} + +void rtl8821ae_phy_get_hw_reg_originalvalue(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + + rtlphy->default_initialgain[0] = + (u8) rtl_get_bbreg(hw, ROFDM0_XAAGCCORE1, MASKBYTE0); + rtlphy->default_initialgain[1] = + (u8) rtl_get_bbreg(hw, ROFDM0_XBAGCCORE1, MASKBYTE0); + rtlphy->default_initialgain[2] = + (u8) rtl_get_bbreg(hw, ROFDM0_XCAGCCORE1, MASKBYTE0); + rtlphy->default_initialgain[3] = + (u8) rtl_get_bbreg(hw, ROFDM0_XDAGCCORE1, MASKBYTE0); + + RT_TRACE(COMP_INIT, DBG_TRACE, + ("Default initial gain (c50=0x%x, " + "c58=0x%x, c60=0x%x, c68=0x%x \n", + rtlphy->default_initialgain[0], + rtlphy->default_initialgain[1], + rtlphy->default_initialgain[2], + rtlphy->default_initialgain[3])); + + rtlphy->framesync = (u8) rtl_get_bbreg(hw, + ROFDM0_RXDETECTOR3, MASKBYTE0); + rtlphy->framesync_c34 = rtl_get_bbreg(hw, + ROFDM0_RXDETECTOR2, MASKDWORD); + + RT_TRACE(COMP_INIT, DBG_TRACE, + ("Default framesync (0x%x) = 0x%x \n", + ROFDM0_RXDETECTOR3, rtlphy->framesync)); +} + +static void _rtl8821ae_phy_init_bb_rf_register_definition(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + + rtlphy->phyreg_def[RF90_PATH_A].rfintfs = RFPGA0_XAB_RFINTERFACESW; + rtlphy->phyreg_def[RF90_PATH_B].rfintfs = RFPGA0_XAB_RFINTERFACESW; + + rtlphy->phyreg_def[RF90_PATH_A].rfintfo = RFPGA0_XA_RFINTERFACEOE; + rtlphy->phyreg_def[RF90_PATH_B].rfintfo = RFPGA0_XB_RFINTERFACEOE; + + rtlphy->phyreg_def[RF90_PATH_A].rfintfe = RFPGA0_XA_RFINTERFACEOE; + rtlphy->phyreg_def[RF90_PATH_B].rfintfe = RFPGA0_XB_RFINTERFACEOE; + + rtlphy->phyreg_def[RF90_PATH_A].rf3wire_offset = RA_LSSIWRITE_8821A; + rtlphy->phyreg_def[RF90_PATH_B].rf3wire_offset = RB_LSSIWRITE_8821A; + + rtlphy->phyreg_def[RF90_PATH_A].rfhssi_para2 = RHSSIREAD_8821AE; + rtlphy->phyreg_def[RF90_PATH_B].rfhssi_para2 = RHSSIREAD_8821AE; + + rtlphy->phyreg_def[RF90_PATH_A].rflssi_readback = RA_SIREAD_8821A; + rtlphy->phyreg_def[RF90_PATH_B].rflssi_readback = RB_SIREAD_8821A; + + rtlphy->phyreg_def[RF90_PATH_A].rflssi_readbackpi = RA_PIREAD_8821A; + rtlphy->phyreg_def[RF90_PATH_B].rflssi_readbackpi = RB_PIREAD_8821A; +} + +void rtl8821ae_phy_get_txpower_level(struct ieee80211_hw *hw, long *powerlevel) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + u8 txpwr_level; + long txpwr_dbm; + + txpwr_level = rtlphy->cur_cck_txpwridx; + txpwr_dbm = _rtl8821ae_phy_txpwr_idx_to_dbm(hw, + WIRELESS_MODE_B, txpwr_level); + txpwr_level = rtlphy->cur_ofdm24g_txpwridx; + if (_rtl8821ae_phy_txpwr_idx_to_dbm(hw, + WIRELESS_MODE_G, + txpwr_level) > txpwr_dbm) + txpwr_dbm = + _rtl8821ae_phy_txpwr_idx_to_dbm(hw, WIRELESS_MODE_G, + txpwr_level); + txpwr_level = rtlphy->cur_ofdm24g_txpwridx; + if (_rtl8821ae_phy_txpwr_idx_to_dbm(hw, + WIRELESS_MODE_N_24G, + txpwr_level) > txpwr_dbm) + txpwr_dbm = + _rtl8821ae_phy_txpwr_idx_to_dbm(hw, WIRELESS_MODE_N_24G, + txpwr_level); + *powerlevel = txpwr_dbm; +} + +static bool _rtl8821ae_phy_get_chnl_index(u8 channel, u8 *chnl_index) +{ + u8 channel_5g[CHANNEL_MAX_NUMBER_5G] = + {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,142,144,149,151, + 153,155,157,159,161,163,165,167,168,169,171,173,175,177}; + u8 i = 0; + bool in_24g = true; + + if (channel <= 14) { + in_24g = true; + *chnl_index = channel - 1; + } else { + in_24g = false; + + for (i = 0; i < sizeof(channel_5g) / sizeof(u8); ++i) { + if (channel_5g[i] == channel) { + *chnl_index = i; + return in_24g; + } + } + } + return in_24g; +} + +static char _rtl8821ae_phy_get_ratesection_intxpower_byrate(u8 path, u8 rate) +{ + char rate_section = 0; + switch (rate) { + case DESC_RATE1M: + case DESC_RATE2M: + case DESC_RATE5_5M: + case DESC_RATE11M: + rate_section = 0; + break; + + case DESC_RATE6M: + case DESC_RATE9M: + case DESC_RATE12M: + case DESC_RATE18M: + rate_section = 1; + break; + + case DESC_RATE24M: + case DESC_RATE36M: + case DESC_RATE48M: + case DESC_RATE54M: + rate_section = 2; + break; + + case DESC_RATEMCS0: + case DESC_RATEMCS1: + case DESC_RATEMCS2: + case DESC_RATEMCS3: + rate_section = 3; + break; + + case DESC_RATEMCS4: + case DESC_RATEMCS5: + case DESC_RATEMCS6: + case DESC_RATEMCS7: + rate_section = 4; + break; + + case DESC_RATEMCS8: + case DESC_RATEMCS9: + case DESC_RATEMCS10: + case DESC_RATEMCS11: + rate_section = 5; + break; + + case DESC_RATEMCS12: + case DESC_RATEMCS13: + case DESC_RATEMCS14: + case DESC_RATEMCS15: + rate_section = 6; + break; + + case DESC_RATEVHT1SS_MCS0: + case DESC_RATEVHT1SS_MCS1: + case DESC_RATEVHT1SS_MCS2: + case DESC_RATEVHT1SS_MCS3: + rate_section = 7; + break; + + case DESC_RATEVHT1SS_MCS4: + case DESC_RATEVHT1SS_MCS5: + case DESC_RATEVHT1SS_MCS6: + case DESC_RATEVHT1SS_MCS7: + rate_section = 8; + break; + + case DESC_RATEVHT1SS_MCS8: + case DESC_RATEVHT1SS_MCS9: + case DESC_RATEVHT2SS_MCS0: + case DESC_RATEVHT2SS_MCS1: + rate_section = 9; + break; + + case DESC_RATEVHT2SS_MCS2: + case DESC_RATEVHT2SS_MCS3: + case DESC_RATEVHT2SS_MCS4: + case DESC_RATEVHT2SS_MCS5: + rate_section = 10; + break; + + case DESC_RATEVHT2SS_MCS6: + case DESC_RATEVHT2SS_MCS7: + case DESC_RATEVHT2SS_MCS8: + case DESC_RATEVHT2SS_MCS9: + rate_section = 11; + break; + + default: + RT_ASSERT(true, ("Rate_Section is Illegal\n")); + break; + } + + return rate_section; +} + +static char _rtl8821ae_phy_get_txpower_by_rate(struct ieee80211_hw *hw, + u8 band, u8 path, u8 rate) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + u8 shift = 0, rate_section, tx_num; + char tx_pwr_diff = 0; + + rate_section = _rtl8821ae_phy_get_ratesection_intxpower_byrate(path, rate); + tx_num = RF_TX_NUM_NONIMPLEMENT; + + if (tx_num == RF_TX_NUM_NONIMPLEMENT) { + if ((rate >= DESC_RATEMCS8 && rate <= DESC_RATEMCS15 ) || + (rate >= DESC_RATEVHT2SS_MCS2 && rate <= DESC_RATEVHT2SS_MCS9)) + tx_num = RF_2TX; + else + tx_num = RF_1TX; + } + + switch (rate) { + case DESC_RATE1M: shift = 0; break; + case DESC_RATE2M: shift = 8; break; + case DESC_RATE5_5M: shift = 16; break; + case DESC_RATE11M: shift = 24; break; + + case DESC_RATE6M: shift = 0; break; + case DESC_RATE9M: shift = 8; break; + case DESC_RATE12M: shift = 16; break; + case DESC_RATE18M: shift = 24; break; + + case DESC_RATE24M: shift = 0; break; + case DESC_RATE36M: shift = 8; break; + case DESC_RATE48M: shift = 16; break; + case DESC_RATE54M: shift = 24; break; + + case DESC_RATEMCS0: shift = 0; break; + case DESC_RATEMCS1: shift = 8; break; + case DESC_RATEMCS2: shift = 16; break; + case DESC_RATEMCS3: shift = 24; break; + + case DESC_RATEMCS4: shift = 0; break; + case DESC_RATEMCS5: shift = 8; break; + case DESC_RATEMCS6: shift = 16; break; + case DESC_RATEMCS7: shift = 24; break; + + case DESC_RATEMCS8: shift = 0; break; + case DESC_RATEMCS9: shift = 8; break; + case DESC_RATEMCS10: shift = 16; break; + case DESC_RATEMCS11: shift = 24; break; + + case DESC_RATEMCS12: shift = 0; break; + case DESC_RATEMCS13: shift = 8; break; + case DESC_RATEMCS14: shift = 16; break; + case DESC_RATEMCS15: shift = 24; break; + + case DESC_RATEVHT1SS_MCS0: shift = 0; break; + case DESC_RATEVHT1SS_MCS1: shift = 8; break; + case DESC_RATEVHT1SS_MCS2: shift = 16; break; + case DESC_RATEVHT1SS_MCS3: shift = 24; break; + + case DESC_RATEVHT1SS_MCS4: shift = 0; break; + case DESC_RATEVHT1SS_MCS5: shift = 8; break; + case DESC_RATEVHT1SS_MCS6: shift = 16; break; + case DESC_RATEVHT1SS_MCS7: shift = 24; break; + + case DESC_RATEVHT1SS_MCS8: shift = 0; break; + case DESC_RATEVHT1SS_MCS9: shift = 8; break; + case DESC_RATEVHT2SS_MCS0: shift = 16; break; + case DESC_RATEVHT2SS_MCS1: shift = 24; break; + + case DESC_RATEVHT2SS_MCS2: shift = 0; break; + case DESC_RATEVHT2SS_MCS3: shift = 8; break; + case DESC_RATEVHT2SS_MCS4: shift = 16; break; + case DESC_RATEVHT2SS_MCS5: shift = 24; break; + + case DESC_RATEVHT2SS_MCS6: shift = 0; break; + case DESC_RATEVHT2SS_MCS7: shift = 8; break; + case DESC_RATEVHT2SS_MCS8: shift = 16; break; + case DESC_RATEVHT2SS_MCS9: shift = 24; break; + + default: + RT_ASSERT(true, ("Rate_Section is Illegal\n")); + break; + } + + tx_pwr_diff = (u8) (rtlphy->tx_power_by_rate_offset[band][path][tx_num][rate_section] >> shift) & 0xff; + + return tx_pwr_diff; +} + +static u8 _rtl8821ae_get_txpower_index(struct ieee80211_hw *hw, u8 path, + u8 rate, u8 bandwidth, u8 channel) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtlpriv); + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + u8 index = (channel - 1); + u8 txpower = 0; + bool in_24g = false; + char powerdiff_byrate = 0; + + if (((rtlhal->current_bandtype == BAND_ON_2_4G) && (channel > 14 || channel < 1)) || + ((rtlhal->current_bandtype == BAND_ON_5G) && (channel <= 14))) { + index = 0; + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, ("Illegal channel!!\n")); + } + + in_24g = _rtl8821ae_phy_get_chnl_index(channel, &index); + if (in_24g) { + if (RX_HAL_IS_CCK_RATE(rate)) + txpower = rtlefuse->txpwrlevel_cck[path][index]; + else if ( DESC_RATE6M <= rate ) + txpower = rtlefuse->txpwrlevel_ht40_1s[path][index]; + else + RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, ("invalid rate\n")); + + if (DESC_RATE6M <= rate && rate <= DESC_RATE54M && !RX_HAL_IS_CCK_RATE(rate)) + txpower += rtlefuse->txpwr_legacyhtdiff[path][TX_1S]; + + if (bandwidth == HT_CHANNEL_WIDTH_20) { + if ((DESC_RATEMCS0 <= rate && rate <= DESC_RATEMCS15) || + (DESC_RATEVHT1SS_MCS0 <= rate && rate <= DESC_RATEVHT2SS_MCS9)) + txpower += rtlefuse->txpwr_ht20diff[path][TX_1S]; + if ((DESC_RATEMCS8 <= rate && rate <= DESC_RATEMCS15) || + (DESC_RATEVHT2SS_MCS0 <= rate && rate <= DESC_RATEVHT2SS_MCS9)) + txpower += rtlefuse->txpwr_ht20diff[path][TX_2S]; + } else if (bandwidth == HT_CHANNEL_WIDTH_20_40) { + if ((DESC_RATEMCS0 <= rate && rate <= DESC_RATEMCS15) || + (DESC_RATEVHT1SS_MCS0 <= rate && rate <= DESC_RATEVHT2SS_MCS9)) + txpower += rtlefuse->txpwr_ht40diff[path][TX_1S]; + if ((DESC_RATEMCS8 <= rate && rate <= DESC_RATEMCS15) || + (DESC_RATEVHT2SS_MCS0 <= rate && rate <= DESC_RATEVHT2SS_MCS9)) + txpower += rtlefuse->txpwr_ht40diff[path][TX_2S]; + } else if (bandwidth == HT_CHANNEL_WIDTH_80) { + if ((DESC_RATEMCS0 <= rate && rate <= DESC_RATEMCS15) || + (DESC_RATEVHT1SS_MCS0 <= rate && rate <= DESC_RATEVHT2SS_MCS9)) + txpower += rtlefuse->txpwr_ht40diff[path][TX_1S]; + if ((DESC_RATEMCS8 <= rate && rate <= DESC_RATEMCS15) || + (DESC_RATEVHT2SS_MCS0 <= rate && rate <= DESC_RATEVHT2SS_MCS9)) + txpower += rtlefuse->txpwr_ht40diff[path][TX_2S]; + } + + } else { + if (DESC_RATE6M <= rate) + txpower = rtlefuse->txpwr_5g_bw40base[path][index]; + else + RT_TRACE(COMP_POWER_TRACKING, DBG_WARNING,("INVALID Rate.\n")); + + if (DESC_RATE6M <= rate && rate <= DESC_RATE54M && !RX_HAL_IS_CCK_RATE(rate)) + txpower += rtlefuse->txpwr_5g_ofdmdiff[path][TX_1S]; + + if (bandwidth == HT_CHANNEL_WIDTH_20) { + if ((DESC_RATEMCS0 <= rate && rate <= DESC_RATEMCS15) || + (DESC_RATEVHT1SS_MCS0 <= rate && rate <= DESC_RATEVHT2SS_MCS9)) + txpower += rtlefuse->txpwr_5g_bw20diff[path][TX_1S]; + if ((DESC_RATEMCS8 <= rate && rate <= DESC_RATEMCS15) || + (DESC_RATEVHT2SS_MCS0 <= rate && rate <= DESC_RATEVHT2SS_MCS9)) + txpower += rtlefuse->txpwr_5g_bw20diff[path][TX_2S]; + } else if (bandwidth == HT_CHANNEL_WIDTH_20_40) { + if ((DESC_RATEMCS0 <= rate && rate <= DESC_RATEMCS15) || + (DESC_RATEVHT1SS_MCS0 <= rate && rate <= DESC_RATEVHT2SS_MCS9)) + txpower += rtlefuse->txpwr_5g_bw40diff[path][TX_1S]; + if ((DESC_RATEMCS8 <= rate && rate <= DESC_RATEMCS15) || + (DESC_RATEVHT2SS_MCS0 <= rate && rate <= DESC_RATEVHT2SS_MCS9)) + txpower += rtlefuse->txpwr_5g_bw40diff[path][TX_2S]; + } else if (bandwidth == HT_CHANNEL_WIDTH_80) { + u8 channel_5g_80m[CHANNEL_MAX_NUMBER_5G_80M] = {42, 58, 106, 122, 138, 155, 171}; + u8 i = 0; + for (i = 0; i < sizeof(channel_5g_80m) / sizeof(u8); ++i) + if (channel_5g_80m[i] == channel) + index = i; + + if ((DESC_RATEMCS0 <= rate && rate <= DESC_RATEMCS15) || + (DESC_RATEVHT1SS_MCS0 <= rate && rate <= DESC_RATEVHT2SS_MCS9)) + txpower = rtlefuse->txpwr_5g_bw80base[path][index] + + rtlefuse->txpwr_5g_bw80diff[path][TX_1S]; + if ((DESC_RATEMCS8 <= rate && rate <= DESC_RATEMCS15) || + (DESC_RATEVHT2SS_MCS0 <= rate && rate <= DESC_RATEVHT2SS_MCS9)) + txpower = rtlefuse->txpwr_5g_bw80base[path][index] + + rtlefuse->txpwr_5g_bw80diff[path][TX_1S] + + rtlefuse->txpwr_5g_bw80diff[path][TX_2S]; + } + } + if (rtlefuse->eeprom_regulatory != 2) + powerdiff_byrate = _rtl8821ae_phy_get_txpower_by_rate(hw, + (u8)(!in_24g), path, rate); + + if (rate == DESC_RATEVHT1SS_MCS8 || rate == DESC_RATEVHT1SS_MCS9 || + rate == DESC_RATEVHT2SS_MCS8 || rate == DESC_RATEVHT2SS_MCS9) + txpower -= powerdiff_byrate; + else + txpower += powerdiff_byrate; + + if (rate > DESC_RATE11M) + txpower += rtlpriv->dm.remnant_ofdm_swing_idx[path]; + else + txpower += rtlpriv->dm.remnant_cck_idx; + + if (txpower > MAX_POWER_INDEX) + txpower = MAX_POWER_INDEX; + + return txpower; +} + +static void _rtl8821ae_phy_set_txpower_index(struct ieee80211_hw *hw, + u8 power_index, u8 path, u8 rate) +{ + struct rtl_priv* rtlpriv = rtl_priv(hw); + + if (path == RF90_PATH_A) { + switch (rate) { + case DESC_RATE1M: + rtl_set_bbreg(hw, RTXAGC_A_CCK11_CCK1, MASKBYTE0, power_index); + break; + case DESC_RATE2M: + rtl_set_bbreg(hw, RTXAGC_A_CCK11_CCK1, MASKBYTE1, power_index); + break; + case DESC_RATE5_5M: + rtl_set_bbreg(hw, RTXAGC_A_CCK11_CCK1, MASKBYTE2, power_index); + break; + case DESC_RATE11M: + rtl_set_bbreg(hw, RTXAGC_A_CCK11_CCK1, MASKBYTE3, power_index); + break; + + case DESC_RATE6M: + rtl_set_bbreg(hw, RTXAGC_A_OFDM18_OFDM6, MASKBYTE0, power_index); + break; + case DESC_RATE9M: + rtl_set_bbreg(hw, RTXAGC_A_OFDM18_OFDM6, MASKBYTE1, power_index); + break; + case DESC_RATE12M: + rtl_set_bbreg(hw, RTXAGC_A_OFDM18_OFDM6, MASKBYTE2, power_index); + break; + case DESC_RATE18M: + rtl_set_bbreg(hw, RTXAGC_A_OFDM18_OFDM6, MASKBYTE3, power_index); + break; + + case DESC_RATE24M: + rtl_set_bbreg(hw, RTXAGC_A_OFDM54_OFDM24, MASKBYTE0, power_index); + break; + case DESC_RATE36M: + rtl_set_bbreg(hw, RTXAGC_A_OFDM54_OFDM24, MASKBYTE1, power_index); + break; + case DESC_RATE48M: + rtl_set_bbreg(hw, RTXAGC_A_OFDM54_OFDM24, MASKBYTE2, power_index); + break; + case DESC_RATE54M: + rtl_set_bbreg(hw, RTXAGC_A_OFDM54_OFDM24, MASKBYTE3, power_index); + break; + + case DESC_RATEMCS0: + rtl_set_bbreg(hw, RTXAGC_A_MCS03_MCS00, MASKBYTE0, power_index); + break; + case DESC_RATEMCS1: + rtl_set_bbreg(hw, RTXAGC_A_MCS03_MCS00, MASKBYTE1, power_index); + break; + case DESC_RATEMCS2: + rtl_set_bbreg(hw, RTXAGC_A_MCS03_MCS00, MASKBYTE2, power_index); + break; + case DESC_RATEMCS3: + rtl_set_bbreg(hw, RTXAGC_A_MCS03_MCS00, MASKBYTE3, power_index); + break; + + case DESC_RATEMCS4: + rtl_set_bbreg(hw, RTXAGC_A_MCS07_MCS04, MASKBYTE0, power_index); + break; + case DESC_RATEMCS5: + rtl_set_bbreg(hw, RTXAGC_A_MCS07_MCS04, MASKBYTE1, power_index); + break; + case DESC_RATEMCS6: + rtl_set_bbreg(hw, RTXAGC_A_MCS07_MCS04, MASKBYTE2, power_index); + break; + case DESC_RATEMCS7: + rtl_set_bbreg(hw, RTXAGC_A_MCS07_MCS04, MASKBYTE3, power_index); + break; + + case DESC_RATEMCS8: + rtl_set_bbreg(hw, RTXAGC_A_MCS11_MCS08, MASKBYTE0, power_index); + break; + case DESC_RATEMCS9: + rtl_set_bbreg(hw, RTXAGC_A_MCS11_MCS08, MASKBYTE1, power_index); + break; + case DESC_RATEMCS10: + rtl_set_bbreg(hw, RTXAGC_A_MCS11_MCS08, MASKBYTE2, power_index); + break; + case DESC_RATEMCS11: + rtl_set_bbreg(hw, RTXAGC_A_MCS11_MCS08, MASKBYTE3, power_index); + break; + + case DESC_RATEMCS12: + rtl_set_bbreg(hw, RTXAGC_A_MCS15_MCS12, MASKBYTE0, power_index); + break; + case DESC_RATEMCS13: + rtl_set_bbreg(hw, RTXAGC_A_MCS15_MCS12, MASKBYTE1, power_index); + break; + case DESC_RATEMCS14: + rtl_set_bbreg(hw, RTXAGC_A_MCS15_MCS12, MASKBYTE2, power_index); + break; + case DESC_RATEMCS15: + rtl_set_bbreg(hw, RTXAGC_A_MCS15_MCS12, MASKBYTE3, power_index); + break; + + case DESC_RATEVHT1SS_MCS0: + rtl_set_bbreg(hw, RTXAGC_A_NSS1INDEX3_NSS1INDEX0, MASKBYTE0, power_index); + break; + case DESC_RATEVHT1SS_MCS1: + rtl_set_bbreg(hw, RTXAGC_A_NSS1INDEX3_NSS1INDEX0, MASKBYTE1, power_index); + break; + case DESC_RATEVHT1SS_MCS2: + rtl_set_bbreg(hw, RTXAGC_A_NSS1INDEX3_NSS1INDEX0, MASKBYTE2, power_index); + break; + case DESC_RATEVHT1SS_MCS3: + rtl_set_bbreg(hw, RTXAGC_A_NSS1INDEX3_NSS1INDEX0, MASKBYTE3, power_index); + break; + + case DESC_RATEVHT1SS_MCS4: + rtl_set_bbreg(hw, RTXAGC_A_NSS1INDEX7_NSS1INDEX4, MASKBYTE0, power_index); + break; + case DESC_RATEVHT1SS_MCS5: + rtl_set_bbreg(hw, RTXAGC_A_NSS1INDEX7_NSS1INDEX4, MASKBYTE1, power_index); + break; + case DESC_RATEVHT1SS_MCS6: + rtl_set_bbreg(hw, RTXAGC_A_NSS1INDEX7_NSS1INDEX4, MASKBYTE2, power_index); + break; + case DESC_RATEVHT1SS_MCS7: + rtl_set_bbreg(hw, RTXAGC_A_NSS1INDEX7_NSS1INDEX4, MASKBYTE3, power_index); + break; + + case DESC_RATEVHT1SS_MCS8: + rtl_set_bbreg(hw, RTXAGC_A_NSS2INDEX1_NSS1INDEX8, MASKBYTE0, power_index); + break; + case DESC_RATEVHT1SS_MCS9: + rtl_set_bbreg(hw, RTXAGC_A_NSS2INDEX1_NSS1INDEX8, MASKBYTE1, power_index); + break; + case DESC_RATEVHT2SS_MCS0: + rtl_set_bbreg(hw, RTXAGC_A_NSS2INDEX1_NSS1INDEX8, MASKBYTE2, power_index); + break; + case DESC_RATEVHT2SS_MCS1: + rtl_set_bbreg(hw, RTXAGC_A_NSS2INDEX1_NSS1INDEX8, MASKBYTE3, power_index); + break; + + case DESC_RATEVHT2SS_MCS2: + rtl_set_bbreg(hw, RTXAGC_A_NSS2INDEX5_NSS2INDEX2, MASKBYTE0, power_index); + break; + case DESC_RATEVHT2SS_MCS3: + rtl_set_bbreg(hw, RTXAGC_A_NSS2INDEX5_NSS2INDEX2, MASKBYTE1, power_index); + break; + case DESC_RATEVHT2SS_MCS4: + rtl_set_bbreg(hw, RTXAGC_A_NSS2INDEX5_NSS2INDEX2, MASKBYTE2, power_index); + break; + case DESC_RATEVHT2SS_MCS5: + rtl_set_bbreg(hw, RTXAGC_A_NSS2INDEX5_NSS2INDEX2, MASKBYTE3, power_index); + break; + + case DESC_RATEVHT2SS_MCS6: + rtl_set_bbreg(hw, RTXAGC_A_NSS2INDEX9_NSS2INDEX6, MASKBYTE0, power_index); + break; + case DESC_RATEVHT2SS_MCS7: + rtl_set_bbreg(hw, RTXAGC_A_NSS2INDEX9_NSS2INDEX6, MASKBYTE1, power_index); + break; + case DESC_RATEVHT2SS_MCS8: + rtl_set_bbreg(hw, RTXAGC_A_NSS2INDEX9_NSS2INDEX6, MASKBYTE2, power_index); + break; + case DESC_RATEVHT2SS_MCS9: + rtl_set_bbreg(hw, RTXAGC_A_NSS2INDEX9_NSS2INDEX6, MASKBYTE3, power_index); + break; + + default: + RT_TRACE(COMP_POWER, DBG_LOUD, ("Invalid Rate!!\n")); + break; + } + } else if (path == RF90_PATH_B) { + switch (rate) { + case DESC_RATE1M: + rtl_set_bbreg(hw, RTXAGC_B_CCK11_CCK1, MASKBYTE0, power_index); + break; + case DESC_RATE2M: + rtl_set_bbreg(hw, RTXAGC_B_CCK11_CCK1, MASKBYTE1, power_index); + break; + case DESC_RATE5_5M: + rtl_set_bbreg(hw, RTXAGC_B_CCK11_CCK1, MASKBYTE2, power_index); + break; + case DESC_RATE11M: + rtl_set_bbreg(hw, RTXAGC_B_CCK11_CCK1, MASKBYTE3, power_index); + break; + + case DESC_RATE6M: + rtl_set_bbreg(hw, RTXAGC_B_OFDM18_OFDM6, MASKBYTE0, power_index); + break; + case DESC_RATE9M: + rtl_set_bbreg(hw, RTXAGC_B_OFDM18_OFDM6, MASKBYTE1, power_index); + break; + case DESC_RATE12M: + rtl_set_bbreg(hw, RTXAGC_B_OFDM18_OFDM6, MASKBYTE2, power_index); + break; + case DESC_RATE18M: + rtl_set_bbreg(hw, RTXAGC_B_OFDM18_OFDM6, MASKBYTE3, power_index); + break; + + case DESC_RATE24M: + rtl_set_bbreg(hw, RTXAGC_B_OFDM54_OFDM24, MASKBYTE0, power_index); + break; + case DESC_RATE36M: + rtl_set_bbreg(hw, RTXAGC_B_OFDM54_OFDM24, MASKBYTE1, power_index); + break; + case DESC_RATE48M: + rtl_set_bbreg(hw, RTXAGC_B_OFDM54_OFDM24, MASKBYTE2, power_index); + break; + case DESC_RATE54M: + rtl_set_bbreg(hw, RTXAGC_B_OFDM54_OFDM24, MASKBYTE3, power_index); + break; + + case DESC_RATEMCS0: + rtl_set_bbreg(hw, RTXAGC_B_MCS03_MCS00, MASKBYTE0, power_index); + break; + case DESC_RATEMCS1: + rtl_set_bbreg(hw, RTXAGC_B_MCS03_MCS00, MASKBYTE1, power_index); + break; + case DESC_RATEMCS2: + rtl_set_bbreg(hw, RTXAGC_B_MCS03_MCS00, MASKBYTE2, power_index); + break; + case DESC_RATEMCS3: + rtl_set_bbreg(hw, RTXAGC_B_MCS03_MCS00, MASKBYTE3, power_index); + break; + + case DESC_RATEMCS4: + rtl_set_bbreg(hw, RTXAGC_B_MCS07_MCS04, MASKBYTE0, power_index); + break; + case DESC_RATEMCS5: + rtl_set_bbreg(hw, RTXAGC_B_MCS07_MCS04, MASKBYTE1, power_index); + break; + case DESC_RATEMCS6: + rtl_set_bbreg(hw, RTXAGC_B_MCS07_MCS04, MASKBYTE2, power_index); + break; + case DESC_RATEMCS7: + rtl_set_bbreg(hw, RTXAGC_B_MCS07_MCS04, MASKBYTE3, power_index); + break; + + case DESC_RATEMCS8: + rtl_set_bbreg(hw, RTXAGC_B_MCS11_MCS08, MASKBYTE0, power_index); + break; + case DESC_RATEMCS9: + rtl_set_bbreg(hw, RTXAGC_B_MCS11_MCS08, MASKBYTE1, power_index); + break; + case DESC_RATEMCS10: + rtl_set_bbreg(hw, RTXAGC_B_MCS11_MCS08, MASKBYTE2, power_index); + break; + case DESC_RATEMCS11: + rtl_set_bbreg(hw, RTXAGC_B_MCS11_MCS08, MASKBYTE3, power_index); + break; + + case DESC_RATEMCS12: + rtl_set_bbreg(hw, RTXAGC_B_MCS15_MCS12, MASKBYTE0, power_index); + break; + case DESC_RATEMCS13: + rtl_set_bbreg(hw, RTXAGC_B_MCS15_MCS12, MASKBYTE1, power_index); + break; + case DESC_RATEMCS14: + rtl_set_bbreg(hw, RTXAGC_B_MCS15_MCS12, MASKBYTE2, power_index); + break; + case DESC_RATEMCS15: + rtl_set_bbreg(hw, RTXAGC_B_MCS15_MCS12, MASKBYTE3, power_index); + break; + + case DESC_RATEVHT1SS_MCS0: + rtl_set_bbreg(hw, RTXAGC_B_NSS1INDEX3_NSS1INDEX0, MASKBYTE0, power_index); + break; + case DESC_RATEVHT1SS_MCS1: + rtl_set_bbreg(hw, RTXAGC_B_NSS1INDEX3_NSS1INDEX0, MASKBYTE1, power_index); + break; + case DESC_RATEVHT1SS_MCS2: + rtl_set_bbreg(hw, RTXAGC_B_NSS1INDEX3_NSS1INDEX0, MASKBYTE2, power_index); + break; + case DESC_RATEVHT1SS_MCS3: + rtl_set_bbreg(hw, RTXAGC_B_NSS1INDEX3_NSS1INDEX0, MASKBYTE3, power_index); + break; + + case DESC_RATEVHT1SS_MCS4: + rtl_set_bbreg(hw, RTXAGC_B_NSS1INDEX7_NSS1INDEX4, MASKBYTE0, power_index); + break; + case DESC_RATEVHT1SS_MCS5: + rtl_set_bbreg(hw, RTXAGC_B_NSS1INDEX7_NSS1INDEX4, MASKBYTE1, power_index); + break; + case DESC_RATEVHT1SS_MCS6: + rtl_set_bbreg(hw, RTXAGC_B_NSS1INDEX7_NSS1INDEX4, MASKBYTE2, power_index); + break; + case DESC_RATEVHT1SS_MCS7: + rtl_set_bbreg(hw, RTXAGC_B_NSS1INDEX7_NSS1INDEX4, MASKBYTE3, power_index); + break; + + case DESC_RATEVHT1SS_MCS8: + rtl_set_bbreg(hw, RTXAGC_B_NSS2INDEX1_NSS1INDEX8, MASKBYTE0, power_index); + break; + case DESC_RATEVHT1SS_MCS9: + rtl_set_bbreg(hw, RTXAGC_B_NSS2INDEX1_NSS1INDEX8, MASKBYTE1, power_index); + break; + case DESC_RATEVHT2SS_MCS0: + rtl_set_bbreg(hw, RTXAGC_B_NSS2INDEX1_NSS1INDEX8, MASKBYTE2, power_index); + break; + case DESC_RATEVHT2SS_MCS1: + rtl_set_bbreg(hw, RTXAGC_B_NSS2INDEX1_NSS1INDEX8, MASKBYTE3, power_index); + break; + + case DESC_RATEVHT2SS_MCS2: + rtl_set_bbreg(hw, RTXAGC_B_NSS2INDEX5_NSS2INDEX2, MASKBYTE0, power_index); + break; + case DESC_RATEVHT2SS_MCS3: + rtl_set_bbreg(hw, RTXAGC_B_NSS2INDEX5_NSS2INDEX2, MASKBYTE1, power_index); + break; + case DESC_RATEVHT2SS_MCS4: + rtl_set_bbreg(hw, RTXAGC_B_NSS2INDEX5_NSS2INDEX2, MASKBYTE2, power_index); + break; + case DESC_RATEVHT2SS_MCS5: + rtl_set_bbreg(hw, RTXAGC_B_NSS2INDEX5_NSS2INDEX2, MASKBYTE3, power_index); + break; + + case DESC_RATEVHT2SS_MCS6: + rtl_set_bbreg(hw, RTXAGC_B_NSS2INDEX9_NSS2INDEX6, MASKBYTE0, power_index); + break; + case DESC_RATEVHT2SS_MCS7: + rtl_set_bbreg(hw, RTXAGC_B_NSS2INDEX9_NSS2INDEX6, MASKBYTE1, power_index); + break; + case DESC_RATEVHT2SS_MCS8: + rtl_set_bbreg(hw, RTXAGC_B_NSS2INDEX9_NSS2INDEX6, MASKBYTE2, power_index); + break; + case DESC_RATEVHT2SS_MCS9: + rtl_set_bbreg(hw, RTXAGC_B_NSS2INDEX9_NSS2INDEX6, MASKBYTE3, power_index); + break; + + default: + RT_TRACE(COMP_POWER, DBG_LOUD, ("Invalid Rate!!\n")); + break; + } + } else { + RT_TRACE(COMP_POWER, DBG_LOUD, ("Invalid RFPath!!\n")); + } +} + +void _rtl8821ae_phy_set_txpower_level_by_path(struct ieee80211_hw *hw, + u8 *array, u8 path, u8 channel, + u8 size) +{ + struct rtl_phy *rtlphy = &(rtl_priv(hw)->phy); + u8 i; + u8 power_index; + for (i = 0; i < size; i ++) { + power_index = _rtl8821ae_get_txpower_index(hw, path, array[i], + rtlphy->current_chan_bw, channel); + _rtl8821ae_phy_set_txpower_index(hw, power_index, path, array[i]); + } +} + +static void _rtl8821ae_phy_txpower_training_by_path(struct ieee80211_hw *hw, + u8 bw, u8 channel, u8 path) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + + u8 i; + u32 power_level, data, offset; + + if(path >= rtlphy->num_total_rfpath) + return; + + data = 0; + if (path == RF90_PATH_A) { + power_level = + _rtl8821ae_get_txpower_index(hw, RF90_PATH_A, + DESC_RATEMCS7, bw, channel); + offset = RA_TXPWRTRAING; + } else { + power_level = + _rtl8821ae_get_txpower_index(hw, RF90_PATH_A, + DESC_RATEMCS7, bw, channel); + offset = RB_TXPWRTRAING; + } + + for (i = 0; i < 3; i++) { + if (i == 0) + power_level = power_level - 10; + else if (i == 1) + power_level = power_level - 8; + else + power_level = power_level - 6; + + data |= (((power_level > 2) ? (power_level) : 2) << (i * 8)); + } + rtl_set_bbreg(hw, offset, 0xffffff, data); +} + +void rtl8821ae_phy_set_txpower_level_by_path(struct ieee80211_hw *hw, u8 channel, u8 path) +{ + //struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + struct rtl_phy *rtlphy = &(rtl_priv(hw)->phy); + u8 cck_rates[] = {DESC_RATE1M, DESC_RATE2M, DESC_RATE5_5M, DESC_RATE11M}; + u8 ofdm_rates[] = {DESC_RATE6M, DESC_RATE9M, DESC_RATE12M, DESC_RATE18M, + DESC_RATE24M, DESC_RATE36M, DESC_RATE48M, DESC_RATE54M}; + u8 ht_rates_1t[] = {DESC_RATEMCS0, DESC_RATEMCS1, DESC_RATEMCS2, DESC_RATEMCS3, + DESC_RATEMCS4, DESC_RATEMCS5, DESC_RATEMCS6, DESC_RATEMCS7}; + u8 ht_rates_2t[] = {DESC_RATEMCS8, DESC_RATEMCS9, DESC_RATEMCS10, DESC_RATEMCS11, + DESC_RATEMCS12, DESC_RATEMCS13, DESC_RATEMCS14, DESC_RATEMCS15}; + u8 vht_rates_1t[] = {DESC_RATEVHT1SS_MCS0, DESC_RATEVHT1SS_MCS1, DESC_RATEVHT1SS_MCS2, + DESC_RATEVHT1SS_MCS3, DESC_RATEVHT1SS_MCS4, + DESC_RATEVHT1SS_MCS5, DESC_RATEVHT1SS_MCS6, DESC_RATEVHT1SS_MCS7, + DESC_RATEVHT1SS_MCS8, DESC_RATEVHT1SS_MCS9}; + u8 vht_rates_2t[] = {DESC_RATEVHT2SS_MCS0, DESC_RATEVHT2SS_MCS1, DESC_RATEVHT2SS_MCS2, + DESC_RATEVHT2SS_MCS3, DESC_RATEVHT2SS_MCS4, + DESC_RATEVHT2SS_MCS5, DESC_RATEVHT2SS_MCS6, DESC_RATEVHT2SS_MCS7, + DESC_RATEVHT2SS_MCS8, DESC_RATEVHT2SS_MCS9}; + //u8 i,size; + //u8 power_index; + + if (rtlhal->current_bandtype == BAND_ON_2_4G) + _rtl8821ae_phy_set_txpower_level_by_path(hw,cck_rates,path,channel, + sizeof(cck_rates) / sizeof(u8)); + + _rtl8821ae_phy_set_txpower_level_by_path(hw,ofdm_rates,path,channel, + sizeof(ofdm_rates) / sizeof(u8)); + _rtl8821ae_phy_set_txpower_level_by_path(hw,ht_rates_1t,path,channel, + sizeof(ht_rates_1t) / sizeof(u8)); + _rtl8821ae_phy_set_txpower_level_by_path(hw,vht_rates_1t,path,channel, + sizeof(vht_rates_1t) / sizeof(u8)); + + if (rtlphy->num_total_rfpath >= 2) { + _rtl8821ae_phy_set_txpower_level_by_path(hw,ht_rates_2t,path,channel, + sizeof(ht_rates_2t) / sizeof(u8)); + _rtl8821ae_phy_set_txpower_level_by_path(hw,vht_rates_2t,path,channel, + sizeof(vht_rates_2t) / sizeof(u8)); + } + + _rtl8821ae_phy_txpower_training_by_path(hw, rtlphy->current_chan_bw, channel, path); +} +/*just in case, write txpower in DW, to reduce time*/ +#if 0 +void _rtl8821ae_phy_get_txpower_index_by_rate_array(struct ieee80211_hw *hw, u8 channel, + u8 *rate, u8 path, u8 bw, u8 *power_index, u8 size) +{ + u8 i; + for (i = 0; i < size; i++) + power_index[i] = _rtl8821ae_get_txpower_index(hw, path, rate[i], bw, channel); +} + +void rtl8821ae_phy_set_txpower_level_by_path2(struct ieee80211_hw *hw, u8 channel, u8 path) +{ + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + struct rtl_phy *rtlphy = &(rtl_priv(hw)->phy); + u8 cck_rates[] = {DESC_RATE1M, DESC_RATE2M, DESC_RATE5_5M, DESC_RATE11M}; + u8 ofdm_rates[] = {DESC_RATE6M, DESC_RATE9M, DESC_RATE12M, DESC_RATE18M, + DESC_RATE24M, DESC_RATE36M, DESC_RATE48M, DESC_RATE54M}; + u8 ht_rates_1t[] = {DESC_RATEMCS0, DESC_RATEMCS1, DESC_RATEMCS2, DESC_RATEMCS3, + DESC_RATEMCS4, DESC_RATEMCS5, DESC_RATEMCS6, DESC_RATEMCS7}; + u8 ht_rates_2t[] = {DESC_RATEMCS8, DESC_RATEMCS9, DESC_RATEMCS10, DESC_RATEMCS11, + DESC_RATEMCS12, DESC_RATEMCS13, DESC_RATEMCS14, DESC_RATEMCS15}; + u8 vht_rates_1t[] = {DESC_RATEVHT1SS_MCS0, DESC_RATEVHT1SS_MCS1, DESC_RATEVHT1SS_MCS2, DESC_RATEVHT1SS_MCS3, DESC_RATEVHT1SS_MCS4, + DESC_RATEVHT1SS_MCS5, DESC_RATEVHT1SS_MCS6, DESC_RATEVHT1SS_MCS7, DESC_RATEVHT1SS_MCS8, DESC_RATEVHT1SS_MCS9}; + u8 vht_rates_2t[] = {DESC_RATEVHT2SS_MCS0, DESC_RATEVHT2SS_MCS1, DESC_RATEVHT2SS_MCS2, DESC_RATEVHT2SS_MCS3, DESC_RATEVHT2SS_MCS4, + DESC_RATEVHT2SS_MCS5, DESC_RATEVHT2SS_MCS6, DESC_RATEVHT2SS_MCS7, DESC_RATEVHT2SS_MCS8, DESC_RATEVHT2SS_MCS9}; + u8 i, j; + u8 pwridx[48] = {0}; + u8 cs = sizeof(cck_rates) / sizeof(u8); + u8 os = sizeof(ofdm_rates) / sizeof(u8); + u8 h1s = sizeof(ht_rates_1t) / sizeof(u8); + u8 h2s = sizeof(ht_rates_2t) / sizeof(u8); + u8 v1s = sizeof(vht_rates_1t) / sizeof(u8); + u8 v2s = sizeof(vht_rates_2t) / sizeof(u8); + + u8 len, start; + u32 reg_addr, power_index; + u8 bw = rtlphy->current_chan_bw; + + _rtl8821ae_phy_get_txpower_index_by_rate_array(hw, channel, + ofdm_rates, path, bw, &pwridx[cs], os); + + _rtl8821ae_phy_get_txpower_index_by_rate_array(hw, channel, + ht_rates_1t, path, bw, &pwridx[cs+os], h1s); + + _rtl8821ae_phy_get_txpower_index_by_rate_array(hw, channel, + vht_rates_1t, path, bw, &pwridx[cs+os+h1s+h2s], v1s); + + + if (rtlhal->current_bandtype == BAND_ON_2_4G) { + _rtl8821ae_phy_get_txpower_index_by_rate_array(hw, channel, + cck_rates, path, bw, pwridx, cs); + + start = 0; + } else { + start = cs; + } + + reg_addr = (path == 0) ? RTXAGC_A_CCK11_CCK1 : RTXAGC_B_CCK11_CCK1; + reg_addr += start; + + len = cs + os + h1s + h2s + v1s; + if (rtlphy->num_total_rfpath >= 2) { + _rtl8821ae_phy_get_txpower_index_by_rate_array(hw, channel, + ht_rates_2t, path, bw, &pwridx[cs+os+h1s], h2s); + + _rtl8821ae_phy_get_txpower_index_by_rate_array(hw, channel, + vht_rates_2t, path, bw, &pwridx[cs+os+h1s+h2s+v1s], v2s); + + len += v2s; + } + for (i = start; i < len; i += 4) { + power_index = 0; + for (j = 0; j < 4; j++) + power_index |= (pwridx[i+j] << (j*8)); + rtl_set_bbreg(hw, reg_addr + i, MASKDWORD, power_index); + } + + _rtl8821ae_phy_txpower_training_by_path(hw, rtlphy->current_chan_bw, channel, path); +} +#endif + +void rtl8821ae_phy_set_txpower_level(struct ieee80211_hw *hw, u8 channel) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + u8 path = 0; + + for (path = RF90_PATH_A; path < rtlphy->num_total_rfpath; ++path ) + rtl8821ae_phy_set_txpower_level_by_path(hw, channel, path); +} + +static long _rtl8821ae_phy_txpwr_idx_to_dbm(struct ieee80211_hw *hw, + enum wireless_mode wirelessmode, + u8 txpwridx) +{ + long offset; + long pwrout_dbm; + + 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; + } + pwrout_dbm = txpwridx / 2 + offset; + return pwrout_dbm; +} + +void rtl8821ae_phy_scan_operation_backup(struct ieee80211_hw *hw, u8 operation) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + enum io_type iotype = IO_CMD_PAUSE_BAND0_DM_BY_SCAN; + + if (!is_hal_stop(rtlhal)) { + switch (operation) { + case SCAN_OPT_BACKUP_BAND0: + iotype = IO_CMD_PAUSE_BAND0_DM_BY_SCAN; + rtlpriv->cfg->ops->set_hw_reg(hw, + HW_VAR_IO_CMD, + (u8 *) & iotype); + + break; + case SCAN_OPT_BACKUP_BAND1: + iotype = IO_CMD_PAUSE_BAND1_DM_BY_SCAN; + rtlpriv->cfg->ops->set_hw_reg(hw, + HW_VAR_IO_CMD, + (u8 *) & iotype); + + break; + case SCAN_OPT_RESTORE: + iotype = IO_CMD_RESUME_DM_BY_SCAN; + rtlpriv->cfg->ops->set_hw_reg(hw, + HW_VAR_IO_CMD, + (u8 *) & iotype); + break; + default: + RT_TRACE(COMP_ERR, DBG_EMERG, + ("Unknown Scan Backup operation.\n")); + break; + } + } +} + +static void _rtl8821ae_phy_set_reg_bw(struct rtl_priv * rtlpriv, u8 bw) +{ + u16 reg_rf_mode_bw, tmp = 0; + reg_rf_mode_bw = rtl_read_word(rtlpriv, REG_TRXPTCL_CTL); + switch (bw) { + case HT_CHANNEL_WIDTH_20: + rtl_write_word(rtlpriv, REG_TRXPTCL_CTL, reg_rf_mode_bw & 0xFE7F); + break; + case HT_CHANNEL_WIDTH_20_40: + tmp = reg_rf_mode_bw | BIT(7); + rtl_write_word(rtlpriv, REG_TRXPTCL_CTL, tmp & 0xFEFF); + break; + case HT_CHANNEL_WIDTH_80: + tmp = reg_rf_mode_bw | BIT(8); + rtl_write_word(rtlpriv, REG_TRXPTCL_CTL, tmp & 0xFF7F); + break; + default: + RT_TRACE(COMP_ERR, DBG_WARNING,("unknown Bandwidth: 0x%x\n",bw)); + break; + } +} + +static u8 _rtl8821ae_phy_get_secondary_chnl(struct rtl_priv * rtlpriv) +{ + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct rtl_mac *mac = rtl_mac(rtlpriv); + u8 sc_set_40 = 0, sc_set_20 =0; + + if (rtlphy->current_chan_bw == HT_CHANNEL_WIDTH_80) { + if(mac->cur_80_prime_sc == PRIME_CHNL_OFFSET_LOWER) + sc_set_40 = VHT_DATA_SC_40_LOWER_OF_80MHZ; + else if(mac->cur_80_prime_sc == PRIME_CHNL_OFFSET_UPPER) + sc_set_40 = VHT_DATA_SC_40_UPPER_OF_80MHZ; + else + RT_TRACE(COMP_ERR, DBG_EMERG, + ("SCMapping: Not Correct Primary40MHz Setting \n")); + + if((mac->cur_40_prime_sc == PRIME_CHNL_OFFSET_LOWER) && + (mac->cur_80_prime_sc == HAL_PRIME_CHNL_OFFSET_LOWER)) + sc_set_20 = VHT_DATA_SC_20_LOWEST_OF_80MHZ; + else if((mac->cur_40_prime_sc == PRIME_CHNL_OFFSET_UPPER) && + (mac->cur_80_prime_sc == HAL_PRIME_CHNL_OFFSET_LOWER)) + sc_set_20 = VHT_DATA_SC_20_LOWER_OF_80MHZ; + else if((mac->cur_40_prime_sc == PRIME_CHNL_OFFSET_LOWER) && + (mac->cur_80_prime_sc == HAL_PRIME_CHNL_OFFSET_UPPER)) + sc_set_20 = VHT_DATA_SC_20_UPPER_OF_80MHZ; + else if((mac->cur_40_prime_sc == PRIME_CHNL_OFFSET_UPPER) && + (mac->cur_80_prime_sc == HAL_PRIME_CHNL_OFFSET_UPPER)) + sc_set_20 = VHT_DATA_SC_20_UPPERST_OF_80MHZ; + else + RT_TRACE(COMP_ERR, DBG_EMERG, + ("SCMapping: Not Correct Primary40MHz Setting \n")); + } else if (rtlphy->current_chan_bw == HT_CHANNEL_WIDTH_20_40) { + if (mac->cur_40_prime_sc == PRIME_CHNL_OFFSET_UPPER) + sc_set_20 = VHT_DATA_SC_20_UPPER_OF_80MHZ; + else if (mac->cur_40_prime_sc == PRIME_CHNL_OFFSET_LOWER) + sc_set_20 = VHT_DATA_SC_20_LOWER_OF_80MHZ; + else + RT_TRACE(COMP_ERR, DBG_EMERG, + ("SCMapping: Not Correct Primary40MHz Setting \n")); + } + return ((sc_set_40 << 4) | sc_set_20); +} + +void rtl8821ae_phy_set_bw_mode_callback(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + u8 sub_chnl = 0; + u8 l1pk_val = 0; + + RT_TRACE(COMP_SCAN, DBG_TRACE, + ("Switch to %s bandwidth\n", + (rtlphy->current_chan_bw == HT_CHANNEL_WIDTH_20 ? + "20MHz" : + (rtlphy->current_chan_bw == HT_CHANNEL_WIDTH_20_40 ? + "40MHz" : "80MHz")))) + + + + _rtl8821ae_phy_set_reg_bw(rtlpriv, rtlphy->current_chan_bw); + sub_chnl = _rtl8821ae_phy_get_secondary_chnl(rtlpriv); + rtl_write_byte(rtlpriv, 0x0483, sub_chnl); + + switch (rtlphy->current_chan_bw) { + case HT_CHANNEL_WIDTH_20: + rtl_set_bbreg(hw, RRFMOD, 0x003003C3, 0x00300200); + rtl_set_bbreg(hw, RADC_BUF_CLK, BIT(30), 0); + + if(rtlphy->rf_type == RF_2T2R) + rtl_set_bbreg(hw, RL1PEAKTH, 0x03C00000, 7); + else + rtl_set_bbreg(hw, RL1PEAKTH, 0x03C00000, 8); + break; + case HT_CHANNEL_WIDTH_20_40: + rtl_set_bbreg(hw, RRFMOD, 0x003003C3, 0x00300201); + rtl_set_bbreg(hw, RADC_BUF_CLK, BIT(30), 0); + rtl_set_bbreg(hw, RRFMOD, 0x3C, sub_chnl); + rtl_set_bbreg(hw, RCCAONSEC, 0xf0000000, sub_chnl); + + if(rtlphy->reg_837 & BIT(2)) + l1pk_val = 6; + else + { + if(rtlphy->rf_type == RF_2T2R) + l1pk_val = 7; + else + l1pk_val = 8; + } + rtl_set_bbreg(hw, RL1PEAKTH, 0x03C00000, l1pk_val); // 0x848[25:22] = 0x6 + + if(sub_chnl == VHT_DATA_SC_20_UPPER_OF_80MHZ) + rtl_set_bbreg(hw, RCCK_SYSTEM, BCCK_SYSTEM, 1); + else + rtl_set_bbreg(hw, RCCK_SYSTEM, BCCK_SYSTEM, 0); + break; + + case HT_CHANNEL_WIDTH_80: + rtl_set_bbreg(hw, RRFMOD, 0x003003C3, 0x00300202); // 0x8ac[21,20,9:6,1,0]=8'b11100010 + rtl_set_bbreg(hw, RADC_BUF_CLK, BIT(30), 1); // 0x8c4[30] = 1 + rtl_set_bbreg(hw, RRFMOD, 0x3C, sub_chnl); + rtl_set_bbreg(hw, RCCAONSEC, 0xf0000000, sub_chnl); + + if(rtlphy->reg_837 & BIT(2)) + l1pk_val = 5; + else + { + if(rtlphy->rf_type == RF_2T2R) + l1pk_val = 6; + else + l1pk_val = 7; + } + rtl_set_bbreg(hw, RL1PEAKTH, 0x03C00000, l1pk_val); + + break; + default: + RT_TRACE(COMP_ERR, DBG_EMERG, + ("unknown bandwidth: %#X\n", rtlphy->current_chan_bw)); + break; + } + + rtl8812ae_fixspur(hw, rtlphy->current_chan_bw, rtlphy->current_channel); + + rtl8821ae_phy_rf6052_set_bandwidth(hw, rtlphy->current_chan_bw); + rtlphy->set_bwmode_inprogress = false; + + RT_TRACE(COMP_SCAN, DBG_LOUD, (" \n")); +} + +void rtl8821ae_phy_set_bw_mode(struct ieee80211_hw *hw, + enum nl80211_channel_type ch_type) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + u8 tmp_bw = rtlphy->current_chan_bw; + + if (rtlphy->set_bwmode_inprogress) + return; + rtlphy->set_bwmode_inprogress = true; + if ((!is_hal_stop(rtlhal)) && !(RT_CANNOT_IO(hw))) { + rtl8821ae_phy_set_bw_mode_callback(hw); + } else { + RT_TRACE(COMP_ERR, DBG_WARNING, + ("FALSE driver sleep or unload\n")); + rtlphy->set_bwmode_inprogress = false; + rtlphy->current_chan_bw = tmp_bw; + } +} + +void rtl8821ae_phy_sw_chnl_callback(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + u8 channel = rtlphy->current_channel; + u8 path; + u32 data; + + RT_TRACE(COMP_SCAN, DBG_TRACE, + ("switch to channel%d\n", rtlphy->current_channel)); + if (is_hal_stop(rtlhal)) + return; + + if (36 <= channel && channel <= 48) + data = 0x494; + else if (50 <= channel && channel <= 64) + data = 0x453; + else if (100 <= channel && channel <= 116) + data = 0x452; + else if (118 <= channel) + data = 0x412; + else + data = 0x96a; + rtl_set_bbreg(hw, RFC_AREA, 0x1ffe0000, data); + + + for(path = RF90_PATH_A; path < rtlphy->num_total_rfpath; path++) + { + if (36 <= channel && channel <= 64) + data = 0x101; + else if (100 <= channel && channel <= 140) + data = 0x301; + else if (140 < channel) + data = 0x501; + else + data = 0x000; + rtl8821ae_phy_set_rf_reg(hw, path, RF_CHNLBW, + BIT(18)|BIT(17)|BIT(16)|BIT(9)|BIT(8), data); + + rtl8821ae_phy_set_rf_reg(hw, path, RF_CHNLBW, + BMASKBYTE0, channel); + + if (channel > 14) { + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8821AE) { + if (36 <= channel && channel <= 64) + data = 0x114E9; + else if (100 <= channel && channel <= 140) + data = 0x110E9; + else + data = 0x110E9; + rtl8821ae_phy_set_rf_reg(hw, path, RF_APK, + BRFREGOFFSETMASK, data); + } + } + } + RT_TRACE(COMP_SCAN, DBG_TRACE, ("\n")); +} + +u8 rtl8821ae_phy_sw_chnl(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + u32 timeout = 1000, timecount = 0; + u8 channel = rtlphy->current_channel; + + if (rtlphy->sw_chnl_inprogress) + return 0; + if (rtlphy->set_bwmode_inprogress) + return 0; + + if ((is_hal_stop(rtlhal)) || (RT_CANNOT_IO(hw))) { + RT_TRACE(COMP_CHAN, DBG_LOUD, + ("sw_chnl_inprogress false driver sleep or unload\n")); + return 0; + } + while (rtlphy->lck_inprogress && timecount < timeout) { + mdelay(50); + timecount += 50; + } + + if (rtlphy->current_channel > 14 && rtlhal->current_bandtype != BAND_ON_5G) + rtl8821ae_phy_switch_wirelessband(hw, BAND_ON_5G); + else if (rtlphy->current_channel <= 14 && rtlhal->current_bandtype != BAND_ON_2_4G) + rtl8821ae_phy_switch_wirelessband(hw, BAND_ON_2_4G); + + rtlphy->sw_chnl_inprogress = true; + if (channel == 0) + channel = 1; + + RT_TRACE(COMP_SCAN, DBG_TRACE, + ("switch to channel%d, band type is %d\n", rtlphy->current_channel, rtlhal->current_bandtype)); + + rtl8821ae_phy_sw_chnl_callback(hw); + + rtl8821ae_dm_clear_txpower_tracking_state(hw); + rtl8821ae_phy_set_txpower_level(hw, rtlphy->current_channel); + + RT_TRACE(COMP_SCAN, DBG_TRACE, ("\n")); + rtlphy->sw_chnl_inprogress = false; + return 1; +} + +#if 0 +static u8 _rtl8821ae_phy_path_b_iqk(struct ieee80211_hw *hw) +{ + u32 reg_eac, reg_eb4, reg_ebc, reg_ec4, reg_ecc; + u8 result = 0x00; + + rtl_set_bbreg(hw, 0xe60, MASKDWORD, 0x00000002); + rtl_set_bbreg(hw, 0xe60, MASKDWORD, 0x00000000); + mdelay(IQK_DELAY_TIME); + reg_eac = rtl_get_bbreg(hw, 0xeac, MASKDWORD); + reg_eb4 = rtl_get_bbreg(hw, 0xeb4, MASKDWORD); + reg_ebc = rtl_get_bbreg(hw, 0xebc, MASKDWORD); + reg_ec4 = rtl_get_bbreg(hw, 0xec4, MASKDWORD); + reg_ecc = rtl_get_bbreg(hw, 0xecc, MASKDWORD); + + if (!(reg_eac & BIT(31)) && + (((reg_eb4 & 0x03FF0000) >> 16) != 0x142) && + (((reg_ebc & 0x03FF0000) >> 16) != 0x42)) + result |= 0x01; + else + return result; + if (!(reg_eac & BIT(30)) && + (((reg_ec4 & 0x03FF0000) >> 16) != 0x132) && + (((reg_ecc & 0x03FF0000) >> 16) != 0x36)) + result |= 0x02; + return result; +} + +static u8 _rtl8821ae_phy_path_a_rx_iqk(struct ieee80211_hw *hw, bool config_pathb) +{ + u32 reg_eac, reg_e94, reg_e9c, reg_ea4,u32temp; + u8 result = 0x00; + + /*Get TXIMR Setting*/ + /*Modify RX IQK mode table*/ + rtl_set_bbreg(hw, RFPGA0_IQK, MASKDWORD, 0x00000000); + rtl_set_rfreg(hw, RF90_PATH_A, RF_WE_LUT, RFREG_OFFSET_MASK, 0x800a0); + rtl_set_rfreg(hw, RF90_PATH_A, RF_RCK_OS, RFREG_OFFSET_MASK, 0x30000); + rtl_set_rfreg(hw, RF90_PATH_A, RF_TXPA_G1, RFREG_OFFSET_MASK, 0x0000f); + rtl_set_rfreg(hw, RF90_PATH_A, RF_TXPA_G2, RFREG_OFFSET_MASK, 0xf117b); + rtl_set_bbreg(hw, RFPGA0_IQK, MASKDWORD, 0x80800000); + + /*IQK Setting*/ + rtl_set_bbreg(hw, RTx_IQK, MASKDWORD, 0x01007c00); + rtl_set_bbreg(hw, RRx_IQK, MASKDWORD, 0x81004800); + + /*path a IQK setting*/ + rtl_set_bbreg(hw, RTx_IQK_Tone_A, MASKDWORD, 0x10008c1c); + rtl_set_bbreg(hw, RRx_IQK_Tone_A, MASKDWORD, 0x30008c1c); + rtl_set_bbreg(hw, RTx_IQK_PI_A, MASKDWORD, 0x82160804); + rtl_set_bbreg(hw, RRx_IQK_PI_A, MASKDWORD, 0x28160000); + + /*LO calibration Setting*/ + rtl_set_bbreg(hw, RIQK_AGC_Rsp, MASKDWORD, 0x0046a911); + /*one shot,path A LOK & iqk*/ + rtl_set_bbreg(hw, RIQK_AGC_Pts, MASKDWORD, 0xf9000000); + rtl_set_bbreg(hw, RIQK_AGC_Pts, MASKDWORD, 0xf8000000); + + mdelay(IQK_DELAY_TIME); + + reg_eac = rtl_get_bbreg(hw, RRx_Power_After_IQK_A_2, MASKDWORD); + reg_e94 = rtl_get_bbreg(hw, RTx_Power_Before_IQK_A, MASKDWORD); + reg_e9c = rtl_get_bbreg(hw, RTx_Power_After_IQK_A, MASKDWORD); + + + if (!(reg_eac & BIT(28)) && + (((reg_e94 & 0x03FF0000) >> 16) != 0x142) && + (((reg_e9c & 0x03FF0000) >> 16) != 0x42)) + result |= 0x01; + else + return result; + + u32temp = 0x80007C00 | (reg_e94&0x3FF0000) | ((reg_e9c&0x3FF0000) >> 16); + rtl_set_bbreg(hw, RTx_IQK, MASKDWORD, u32temp); + /*RX IQK*/ + /*Modify RX IQK mode table*/ + rtl_set_bbreg(hw, RFPGA0_IQK, MASKDWORD, 0x00000000); + rtl_set_rfreg(hw, RF90_PATH_A, RF_WE_LUT, RFREG_OFFSET_MASK, 0x800a0); + rtl_set_rfreg(hw, RF90_PATH_A, RF_RCK_OS, RFREG_OFFSET_MASK, 0x30000); + rtl_set_rfreg(hw, RF90_PATH_A, RF_TXPA_G1, RFREG_OFFSET_MASK, 0x0000f); + rtl_set_rfreg(hw, RF90_PATH_A, RF_TXPA_G2, RFREG_OFFSET_MASK, 0xf7ffa); + rtl_set_bbreg(hw, RFPGA0_IQK, MASKDWORD, 0x80800000); + + /*IQK Setting*/ + rtl_set_bbreg(hw, RRx_IQK, MASKDWORD, 0x01004800); + + /*path a IQK setting*/ + rtl_set_bbreg(hw, RTx_IQK_Tone_A, MASKDWORD, 0x30008c1c); + rtl_set_bbreg(hw, RRx_IQK_Tone_A, MASKDWORD, 0x10008c1c); + rtl_set_bbreg(hw, RTx_IQK_PI_A, MASKDWORD, 0x82160c05); + rtl_set_bbreg(hw, RRx_IQK_PI_A, MASKDWORD, 0x28160c05); + + /*LO calibration Setting*/ + rtl_set_bbreg(hw, RIQK_AGC_Rsp, MASKDWORD, 0x0046a911); + /*one shot,path A LOK & iqk*/ + rtl_set_bbreg(hw, RIQK_AGC_Pts, MASKDWORD, 0xf9000000); + rtl_set_bbreg(hw, RIQK_AGC_Pts, MASKDWORD, 0xf8000000); + + mdelay(IQK_DELAY_TIME); + + reg_eac = rtl_get_bbreg(hw, RRx_Power_After_IQK_A_2, MASKDWORD); + reg_e94 = rtl_get_bbreg(hw, RTx_Power_Before_IQK_A, MASKDWORD); + reg_e9c = rtl_get_bbreg(hw, RTx_Power_After_IQK_A, MASKDWORD); + reg_ea4 = rtl_get_bbreg(hw, RRx_Power_Before_IQK_A_2, MASKDWORD); + + if (!(reg_eac & BIT(27)) && + (((reg_ea4 & 0x03FF0000) >> 16) != 0x132) && + (((reg_eac & 0x03FF0000) >> 16) != 0x36)) + result |= 0x02; + return result; +} +#endif + +u8 _rtl8812ae_get_right_chnl_place_for_iqk(u8 chnl) +{ + u8 channel_all[TARGET_CHNL_NUM_2G_5G_8812] = + {1,2,3,4,5,6,7,8,9,10,11,12,13,14,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}; + u8 place = chnl; + + if(chnl > 14) + { + for(place = 14; place Page C*/ + if (rx_x >> 1 ==0x112 || rx_y >> 1 == 0x3ee){ + rtl_set_bbreg(hw, 0xc10, 0x000003ff, 0x100); + rtl_set_bbreg(hw, 0xc10, 0x03ff0000, 0); + RT_TRACE(COMP_IQK, DBG_LOUD, + ("RX_X = %x;;RX_Y = %x ====>fill to IQC\n", + rx_x >> 1 & 0x000003ff, rx_y >> 1 & 0x000003ff)); + } + else{ + rtl_set_bbreg(hw, 0xc10, 0x000003ff, rx_x >> 1); + rtl_set_bbreg(hw, 0xc10, 0x03ff0000, rx_y >> 1); + RT_TRACE(COMP_IQK, DBG_LOUD, + ("RX_X = %x;;RX_Y = %x ====>fill to IQC\n", + rx_x >> 1 & 0x000003ff, rx_y >> 1 & 0x000003ff)); + RT_TRACE(COMP_IQK, DBG_LOUD, + ("0xc10 = %x ====>fill to IQC\n", + rtl_read_dword(rtlpriv, 0xc10))); + } + } + break; + case RF90_PATH_B: + { + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x0); /*[31] = 0 --> Page C*/ + if (rx_x >> 1 ==0x112 || rx_y >> 1 == 0x3ee){ + rtl_set_bbreg(hw, 0xe10, 0x000003ff, 0x100); + rtl_set_bbreg(hw, 0xe10, 0x03ff0000, 0); + RT_TRACE(COMP_IQK, DBG_LOUD, + ("RX_X = %x;;RX_Y = %x ====>fill to IQC\n", + rx_x >> 1 & 0x000003ff, rx_y >> 1 & 0x000003ff)); + } + else{ + rtl_set_bbreg(hw, 0xe10, 0x000003ff, rx_x >> 1); + rtl_set_bbreg(hw, 0xe10, 0x03ff0000, rx_y >> 1); + RT_TRACE(COMP_IQK, DBG_LOUD, + ("RX_X = %x;;RX_Y = %x====>fill to IQC\n ", + rx_x >> 1 & 0x000003ff, rx_y >> 1 & 0x000003ff)); + RT_TRACE(COMP_IQK, DBG_LOUD, + ("0xe10 = %x====>fill to IQC\n", + rtl_read_dword(rtlpriv, 0xe10))); + } + } + break; + default: + break; + }; +} + +void _rtl8812ae_iqk_tx_fill_iqc( + struct ieee80211_hw *hw, + enum radio_path path, + u32 tx_x, + u32 tx_y + ) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + switch (path) { + case RF90_PATH_A: + { + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x1); /*[31] = 1 --> Page C1*/ + rtl_write_dword(rtlpriv, 0xc90, 0x00000080); + rtl_write_dword(rtlpriv, 0xcc4, 0x20040000); + rtl_write_dword(rtlpriv, 0xcc8, 0x20000000); + rtl_set_bbreg(hw, 0xccc, 0x000007ff, tx_y); + rtl_set_bbreg(hw, 0xcd4, 0x000007ff, tx_x); + RT_TRACE(COMP_IQK, DBG_LOUD, + ("TX_X = %x;;TX_Y = %x =====> fill to IQC\n", + tx_x & 0x000007ff, tx_y & 0x000007ff)); + RT_TRACE(COMP_IQK, DBG_LOUD, + ("0xcd4 = %x;;0xccc = %x ====>fill to IQC\n", + rtl_get_bbreg(hw, 0xcd4, 0x000007ff), + rtl_get_bbreg(hw, 0xccc, 0x000007ff))); + } + break; + case RF90_PATH_B: + { + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x1); /*[31] = 1 --> Page C1*/ + rtl_write_dword(rtlpriv, 0xe90, 0x00000080); + rtl_write_dword(rtlpriv, 0xec4, 0x20040000); + rtl_write_dword(rtlpriv, 0xec8, 0x20000000); + rtl_set_bbreg(hw, 0xecc, 0x000007ff, tx_y); + rtl_set_bbreg(hw, 0xed4, 0x000007ff, tx_x); + RT_TRACE(COMP_IQK, DBG_LOUD, + ("TX_X = %x;;TX_Y = %x =====> fill to IQC\n", + tx_x&0x000007ff, tx_y&0x000007ff)); + RT_TRACE(COMP_IQK, DBG_LOUD, + ("0xed4 = %x;;0xecc = %x ====>fill to IQC\n", + rtl_get_bbreg(hw, 0xed4, 0x000007ff), + rtl_get_bbreg(hw, 0xecc, 0x000007ff))); + } + break; + default: + break; + }; +} + +void _rtl8812ae_iqk_backup_macbb( + struct ieee80211_hw *hw, + u32 *macbb_backup, + u32 *backup_macbb_reg, + u32 mac_bb_num + ) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 i; + + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x0); /*[31] = 0 --> Page C*/ + /*save MACBB default value*/ + for (i = 0; i < mac_bb_num; i++) { + macbb_backup[i] =rtl_read_dword(rtlpriv,backup_macbb_reg[i]); + } + + RT_TRACE(COMP_IQK, DBG_LOUD, ("BackupMacBB Success!!!!\n")); +} + +void _rtl8812ae_iqk_backup_afe( + struct ieee80211_hw *hw, + u32 *afe_backup, + u32 *backup_afe_REG, + u32 afe_num + ) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 i; + + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x0); /*[31] = 0 --> Page C*/ + /*Save AFE Parameters */ + for (i = 0; i < afe_num; i++){ + afe_backup[i] = rtl_read_dword(rtlpriv, backup_afe_REG[i]); + } + RT_TRACE(COMP_IQK, DBG_LOUD, ("BackupAFE Success!!!!\n")); +} + +void _rtl8812ae_iqk_backup_rf( + struct ieee80211_hw *hw, + u32 *rfa_backup, + u32 *rfb_backup, + u32 *backup_rf_reg, + u32 rf_num + ) +{ + + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 i; + + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x0); /*[31] = 0 --> Page C*/ + /*Save RF Parameters*/ + for (i = 0; i < rf_num; i++){ + rfa_backup[i] = rtl_get_rfreg(hw, RF90_PATH_A, backup_rf_reg[i], BMASKDWORD); + rfb_backup[i] = rtl_get_rfreg(hw, RF90_PATH_B, backup_rf_reg[i], BMASKDWORD); + } + RT_TRACE(COMP_IQK, DBG_LOUD, ("BackupRF Success!!!!\n")); +} + +void _rtl8812ae_iqk_configure_mac( + struct ieee80211_hw *hw + ) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + /* ========MAC register setting========*/ + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x0); /*[31] = 0 --> Page C*/ + rtl_write_byte(rtlpriv, 0x522, 0x3f); + rtl_set_bbreg(hw, 0x550, BIT(11) | BIT(3), 0x0); + rtl_write_byte(rtlpriv, 0x808, 0x00); /*RX ante off*/ + rtl_set_bbreg(hw, 0x838, 0xf, 0xc); /*CCA off*/ +} + +#define cal_num 10 + +void _rtl8812ae_iqk_tx( + struct ieee80211_hw *hw, + u8 chnl_idx + ) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + + u8 delay_count; + u8 cal0_retry, cal1_retry; + u8 tx0_average = 0, tx1_average = 0, rx0_average = 0, rx1_average = 0; + int tx0_x = 0, tx0_y = 0, rx0_x = 0, rx0_y = 0; + int tx_x0[cal_num], tx_y0[cal_num], rx_x0[cal_num], rx_y0[cal_num]; + int tx1_x = 0, tx1_y = 0, rx1_x = 0, rx1_y = 0; + int tx_x1[cal_num], tx_y1[cal_num], rx_x1[cal_num], rx_y1[cal_num]; + bool tx0iqkok= false, rx0iqkok = false, tx0_fail = true, rx0_fail; + bool iqk0_ready = false, tx0_finish = false, rx0_finish = false; + bool tx1iqkok = false, rx1iqkok = false, tx1_fail = true, rx1_fail; + bool iqk1_ready = false, tx1_finish = false, rx1_finish = false, vdf_enable = false; + int i, tx_dt[3] = {0}, rx_dt[3] = {0}, ii, dx = 0, dy = 0; + + RT_TRACE(COMP_IQK, DBG_LOUD, + ("BandWidth = %d.\n", + rtlphy->current_chan_bw)); + if (rtlphy->current_chan_bw == HT_CHANNEL_WIDTH_80){ + vdf_enable = true; + } + vdf_enable = false; + + + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x0); /*[31] = 0 --> Page C*/ + /*========Path-A AFE all on========*/ + /*Port 0 DAC/ADC on*/ + rtl_write_dword(rtlpriv, 0xc60, 0x77777777); + rtl_write_dword(rtlpriv, 0xc64, 0x77777777); + + /* Port 1 DAC/ADC off*/ + rtl_write_dword(rtlpriv, 0xe60, 0x77777777); + rtl_write_dword(rtlpriv, 0xe64, 0x77777777); + + rtl_write_dword(rtlpriv, 0xc68, 0x19791979); + rtl_write_dword(rtlpriv, 0xe68, 0x19791979); + rtl_set_bbreg(hw,0xc00, 0xf, 0x4);/*hardware 3-wire off*/ + rtl_set_bbreg(hw,0xe00, 0xf, 0x4);/*hardware 3-wire off*/ + + /*DAC/ADC sampling rate (160 MHz)*/ + rtl_set_bbreg(hw, 0xc5c, BIT(26) | BIT(25) | BIT(24), 0x7); + rtl_set_bbreg(hw, 0xe5c, BIT(26) | BIT(25) | BIT(24), 0x7); + rtl_set_bbreg(hw, 0x8c4, BIT(30), 0x1); + + /*====== Path A TX IQK RF Setting ======*/ + rtl_set_bbreg(hw,0x82c, BIT(31), 0x0); // [31] = 0 --> Page C + rtl_set_rfreg(hw,RF90_PATH_A, 0xef, BRFREGOFFSETMASK, 0x80002); + rtl_set_rfreg(hw,RF90_PATH_A, 0x30, BRFREGOFFSETMASK, 0x20000); + rtl_set_rfreg(hw,RF90_PATH_A, 0x31, BRFREGOFFSETMASK, 0x3fffd); + rtl_set_rfreg(hw,RF90_PATH_A, 0x32, BRFREGOFFSETMASK, 0xfe83f); + rtl_set_rfreg(hw,RF90_PATH_A, 0x65, BRFREGOFFSETMASK, 0x931d5); + rtl_set_rfreg(hw,RF90_PATH_A, 0x8f, BRFREGOFFSETMASK, 0x8a001); + /*====== Path A TX IQK RF Setting ======*/ + rtl_set_rfreg(hw,RF90_PATH_B, 0xef, BRFREGOFFSETMASK, 0x80002); + rtl_set_rfreg(hw,RF90_PATH_B, 0x30, BRFREGOFFSETMASK, 0x20000); + rtl_set_rfreg(hw,RF90_PATH_B, 0x31, BRFREGOFFSETMASK, 0x3fffd); + rtl_set_rfreg(hw,RF90_PATH_B, 0x32, BRFREGOFFSETMASK, 0xfe83f); + rtl_set_rfreg(hw,RF90_PATH_B, 0x65, BRFREGOFFSETMASK, 0x931d5); + rtl_set_rfreg(hw,RF90_PATH_B, 0x8f, BRFREGOFFSETMASK, 0x8a001); + rtl_write_dword(rtlpriv, 0x90c, 0x00008000); + rtl_write_dword(rtlpriv, 0xb00, 0x03000100); + rtl_set_bbreg(hw, 0xc94, BIT(0), 0x1); + rtl_set_bbreg(hw, 0xe94, BIT(0), 0x1); + rtl_write_dword(rtlpriv, 0x978, 0x29002000);/* TX (X,Y)*/ + rtl_write_dword(rtlpriv, 0x97c, 0xa9002000);/* RX (X,Y)*/ + rtl_write_dword(rtlpriv, 0x984, 0x00462910);/*[0]:AGC_en, [15]:idac_K_Mask*/ + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x1); /* [31] = 1 --> Page C1*/ + + /*ExternalPA_5G == 0*/ + rtl_write_dword(rtlpriv, 0xc88, 0x821403f1); + rtl_write_dword(rtlpriv, 0xe88, 0x821403f1); + + if (rtlhal->current_bandtype){ + rtl_write_dword(rtlpriv, 0xc8c, 0x68163e96); + rtl_write_dword(rtlpriv, 0xe8c, 0x68163e96); + } + else{ + rtl_write_dword(rtlpriv, 0xc8c, 0x28163e96); + rtl_write_dword(rtlpriv, 0xe8c, 0x28163e96); + } + + if (vdf_enable){} + else{ + rtl_write_dword(rtlpriv, 0xc80, 0x18008c10);/*TX_Tone_idx[9:0], TxK_Mask[29] TX_Tone = 16*/ + rtl_write_dword(rtlpriv, 0xc84, 0x38008c10);/*RX_Tone_idx[9:0], RxK_Mask[29]*/ + rtl_write_dword(rtlpriv, 0xce8, 0x00000000); + rtl_write_dword(rtlpriv, 0xe80, 0x18008c10);/*TX_Tone_idx[9:0], TxK_Mask[29] TX_Tone = 16*/ + rtl_write_dword(rtlpriv, 0xe84, 0x38008c10);/*RX_Tone_idx[9:0], RxK_Mask[29]*/ + rtl_write_dword(rtlpriv, 0xee8, 0x00000000); + + cal0_retry = 0; + cal1_retry = 0; + while(1){ + /*one shot*/ + rtl_write_dword(rtlpriv, 0xcb8, 0x00100000);/* cb8[20] N SI/PI ϥv iqk_dpk module*/ + rtl_write_dword(rtlpriv, 0xeb8, 0x00100000);/* cb8[20] N SI/PI ϥv iqk_dpk module*/ + rtl_write_dword(rtlpriv, 0x980, 0xfa000000); + rtl_write_dword(rtlpriv, 0x980, 0xf8000000); + + mdelay(10); /*Delay 25ms*/ + rtl_write_dword(rtlpriv, 0xcb8, 0x00000000); + rtl_write_dword(rtlpriv, 0xeb8, 0x00000000); + delay_count = 0; + while (1){ + if (!tx0_finish) + iqk0_ready = (bool) rtl_get_bbreg(hw, 0xd00, BIT(10)); + if (!tx1_finish) + iqk1_ready = (bool) rtl_get_bbreg(hw, 0xd40, BIT(10)); + if ((iqk0_ready && iqk1_ready) || (delay_count>20)) + break; + else{ + mdelay(1); + delay_count++; + } + } + RT_TRACE(COMP_IQK, DBG_LOUD, ("TX delay_count = %d\n", delay_count)); + if (delay_count < 20){ // If 20ms No Result, then cal_retry++ + /* ============TXIQK Check==============*/ + tx0_fail = (bool) rtl_get_bbreg(hw, 0xd00, BIT(12)); + tx1_fail = (bool) rtl_get_bbreg(hw, 0xd40, BIT(12)); + if (!(tx0_fail || tx0_finish)){ + rtl_write_dword(rtlpriv, 0xcb8, 0x02000000); + tx_x0[tx0_average] = rtl_get_bbreg(hw, 0xd00, 0x07ff0000) << 21; + rtl_write_dword(rtlpriv, 0xcb8, 0x04000000); + tx_y0[tx0_average] = rtl_get_bbreg(hw, 0xd00, 0x07ff0000) << 21; + tx0iqkok = true; + RT_TRACE(COMP_IQK, DBG_LOUD, + ("TX_X0[%d] = %x ;; TX_Y0[%d] = %x\n", + tx0_average, (tx_x0[tx0_average]) >> 21 & 0x000007ff, + tx0_average, (tx_y0[tx0_average]) >> 21 & 0x000007ff)); + + tx0_average++; + } + else{ + tx0iqkok = false; + cal0_retry++; + if (cal0_retry == 10) + break; + } + if (!(tx1_fail || tx1_finish)){ + rtl_write_dword(rtlpriv, 0xeb8, 0x02000000); + tx_x1[tx1_average] = rtl_get_bbreg(hw, 0xd40, 0x07ff0000) << 21; + rtl_write_dword(rtlpriv, 0xeb8, 0x04000000); + tx_y1[tx1_average] = rtl_get_bbreg(hw, 0xd40, 0x07ff0000) << 21; + tx1iqkok= true; + RT_TRACE(COMP_IQK, DBG_LOUD, + ("TX_X1[%d] = %x ;; TX_Y1[%d] = %x\n", + tx1_average, (tx_x1[tx1_average]) >> 21 & 0x000007ff, + tx1_average, (tx_y1[tx1_average]) >> 21 & 0x000007ff)); + + tx1_average++; + } + else{ + tx1iqkok = false; + cal1_retry++; + if (cal1_retry == 10) + break; + } + } + else{ + tx0iqkok = false; + tx1iqkok = false; + cal0_retry++; + cal1_retry++; + RT_TRACE(COMP_IQK, DBG_LOUD, + ("Delay 20ms TX IQK Not Ready!!!!!\n")); + if (cal0_retry == 10) + break; + } + if (tx0_average >= 2){ + for (i = 0; i < tx0_average; i++){ + for (ii = i+1; ii > 21) - (tx_x0[ii] >> 21); + if (dx < 4 && dx > -4){ + dy = (tx_y0[i]>>21) - (tx_y0[ii]>>21); + if (dy < 4 && dy > -4){ + tx0_x = ((tx_x0[i] >> 21) + (tx_x0[ii] >> 21)) / 2; + tx0_y = ((tx_y0[i] >> 21) + (tx_y0[ii] >> 21)) / 2; + tx_x0[0] = tx_x0[i]; + tx_y0[1] = tx_y0[ii]; + RT_TRACE(COMP_IQK, DBG_LOUD, + ("TX0_X = %x;;TX0_Y = %x\n", + tx0_x & 0x000007ff, tx0_y & 0x000007ff)); + if ((rtlphy->current_chan_bw == HT_CHANNEL_WIDTH_80) + && vdf_enable) { + tx_dt[0] = (tx_dt[i] + tx_dt[ii]) / 2; + } + tx0_finish = true; + } + } + } + } + } + if (tx1_average >= 2){ + for (i = 0; i < tx1_average; i++){ + for (ii = i+1; ii < tx1_average; ii++){ + dx = (tx_x1[i] >> 21) - (tx_x1[ii] >> 21); + if (dx < 4 && dx > -4){ + dy = (tx_y1[i] >> 21) - (tx_y1[ii] >> 21); + if (dy < 4 && dy > -4){ + tx1_x = ((tx_x1[i] >> 21) + (tx_x1[ii] >> 21)) / 2; + tx1_y = ((tx_y1[i] >> 21) + (tx_y1[ii] >> 21)) / 2; + tx_x1[0] = tx_x1[i]; + tx_y1[1] = tx_y1[ii]; + RT_TRACE(COMP_IQK, DBG_LOUD, + ("TX1_X = %x;;TX1_Y = %x\n", + tx1_x & 0x000007ff, tx1_y & 0x000007ff)); + if ((rtlphy->current_chan_bw == HT_CHANNEL_WIDTH_80) + && vdf_enable) { + tx_dt[0] = (tx_dt[i] + tx_dt[ii]) / 2; + } + tx1_finish = true; + } + } + } + } + } + RT_TRACE(COMP_IQK, DBG_LOUD, + ("TX0_Average = %d, TX1_Average = %d\n", + tx0_average, tx1_average)); + RT_TRACE(COMP_IQK, DBG_LOUD, + ("TX0_finish = %d, TX1_finish = %d\n", + tx0_finish, tx1_finish)); + if (tx0_finish && tx1_finish) + break; + if ((cal0_retry + tx0_average) >= 10 + || (cal1_retry + tx1_average) >= 10 ) + break; + } + RT_TRACE(COMP_IQK, DBG_LOUD, + ("TXA_cal_retry = %d\n", cal0_retry)); + RT_TRACE(COMP_IQK, DBG_LOUD, + ("TXB_cal_retry = %d\n", cal1_retry)); + + } + + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x0); /* [31] = 0 --> Page C*/ + rtl_set_rfreg(hw, RF90_PATH_A, 0x58, 0x7fe00, + rtl_get_rfreg(hw, RF90_PATH_A, 0x8, 0xffc00)); /*Load LOK*/ + rtl_set_rfreg(hw, RF90_PATH_B, 0x58, 0x7fe00, + rtl_get_rfreg(hw, RF90_PATH_B, 0x8, 0xffc00)); /* Load LOK*/ + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x1); /*[31] = 1 --> Page C1*/ + + + if (vdf_enable) {} + else{ + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x0); /*[31] = 0 --> Page C*/ + if (tx0_finish) { + /*====== Path A RX IQK RF Setting======*/ + rtl_set_rfreg(hw, RF90_PATH_A, 0xef, BRFREGOFFSETMASK, 0x80000); + rtl_set_rfreg(hw, RF90_PATH_A, 0x18, 0x00c00, 0x3); /* BW 20M*/ + rtl_set_rfreg(hw, RF90_PATH_A, 0x30, BRFREGOFFSETMASK, 0x30000); + rtl_set_rfreg(hw, RF90_PATH_A, 0x31, BRFREGOFFSETMASK, 0x3f7ff); + rtl_set_rfreg(hw, RF90_PATH_A, 0x32, BRFREGOFFSETMASK, 0xfe7bf); + rtl_set_rfreg(hw, RF90_PATH_A, 0x8f, BRFREGOFFSETMASK, 0x88001); + rtl_set_rfreg(hw, RF90_PATH_A, 0x65, BRFREGOFFSETMASK, 0x931d6); + rtl_set_rfreg(hw, RF90_PATH_A, 0xef, BRFREGOFFSETMASK, 0x00000); + } + if (tx1_finish){ + /*====== Path B RX IQK RF Setting======*/ + rtl_set_rfreg(hw, RF90_PATH_B, 0xef, BRFREGOFFSETMASK, 0x80000); + rtl_set_rfreg(hw, RF90_PATH_B, 0x30, BRFREGOFFSETMASK, 0x30000); + rtl_set_rfreg(hw, RF90_PATH_B, 0x31, BRFREGOFFSETMASK, 0x3f7ff); + rtl_set_rfreg(hw, RF90_PATH_B, 0x32, BRFREGOFFSETMASK, 0xfe7bf); + rtl_set_rfreg(hw, RF90_PATH_B, 0x8f, BRFREGOFFSETMASK, 0x88001); + rtl_set_rfreg(hw, RF90_PATH_B, 0x65, BRFREGOFFSETMASK, 0x931d1); + rtl_set_rfreg(hw, RF90_PATH_B, 0xef, BRFREGOFFSETMASK, 0x00000); + } + rtl_set_bbreg(hw, 0x978, BIT(31), 0x1); + rtl_set_bbreg(hw, 0x97c, BIT(31), 0x0); + rtl_write_dword(rtlpriv, 0x90c, 0x00008000); + rtl_write_dword(rtlpriv, 0x984, 0x0046a890); + + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x1); /*[31] = 1 --> Page C1*/ + if (tx0_finish) { + rtl_write_dword(rtlpriv, 0xc80, 0x38008c10);/*TX_Tone_idx[9:0], TxK_Mask[29] TX_Tone = 16*/ + rtl_write_dword(rtlpriv, 0xc84, 0x18008c10);/*RX_Tone_idx[9:0], RxK_Mask[29]*/ + rtl_write_dword(rtlpriv, 0xc88, 0x02140119); + rtl_write_dword(rtlpriv, 0xc8c, 0x28160cc0); + } + if (tx1_finish){ + rtl_write_dword(rtlpriv, 0xe80, 0x38008c10);/*TX_Tone_idx[9:0], TxK_Mask[29] TX_Tone = 16*/ + rtl_write_dword(rtlpriv, 0xe84, 0x18008c10);/*RX_Tone_idx[9:0], RxK_Mask[29]*/ + rtl_write_dword(rtlpriv, 0xe88, 0x02140119); + rtl_write_dword(rtlpriv, 0xe8c, 0x28160ca0); + } + cal0_retry = 0; + cal1_retry = 0; + while(1){ + /* one shot*/ + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x0); /*[31] = 0 --> Page C*/ + if (tx0_finish){ + rtl_set_bbreg(hw, 0x978, 0x03FF8000, (tx_x0[rx0_average % 2]) >> 21 & 0x000007ff); + rtl_set_bbreg(hw, 0x978, 0x000007FF, (tx_y0[rx0_average % 2]) >> 21 & 0x000007ff); + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x1); /* [31] = 1 --> Page C1*/ + rtl_write_dword(rtlpriv, 0xcb8, 0x00300000);/*cb8[20] N SI/PI ϥv iqk_dpk module*/ + rtl_write_dword(rtlpriv, 0xcb8, 0x00100000); + mdelay(5); /*Delay 10ms*/ + } + if (tx1_finish){ + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x0); /*[31] = 0 --> Page C*/ + rtl_set_bbreg(hw, 0x978, 0x03FF8000, (tx_x1[rx1_average % 2]) >> 21 & 0x000007ff); + rtl_set_bbreg(hw, 0x978, 0x000007FF, (tx_y1[rx1_average % 2]) >> 21 & 0x000007ff); + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x1); /*[31] = 1 --> Page C1*/ + rtl_write_dword(rtlpriv, 0xeb8, 0x00300000);/*cb8[20] N SI/PI ϥv iqk_dpk module*/ + rtl_write_dword(rtlpriv, 0xeb8, 0x00100000);/* cb8[20] N SI/PI ϥv iqk_dpk module*/ + } + mdelay(10); /*Delay 10ms*/ + rtl_write_dword(rtlpriv, 0xcb8, 0x00000000); + rtl_write_dword(rtlpriv, 0xeb8, 0x00000000); + delay_count = 0; + while (1){ + if (!rx0_finish && tx0_finish) + iqk0_ready = (bool) rtl_get_bbreg(hw, 0xd00, BIT(10)); + if (!rx1_finish && tx1_finish) + iqk1_ready = (bool) rtl_get_bbreg(hw, 0xd40, BIT(10)); + if ((iqk0_ready && iqk1_ready)||(delay_count>20)) + break; + else{ + mdelay(1); + delay_count++; + } + } + RT_TRACE(COMP_IQK, DBG_LOUD, + ("RX delay_count = %d\n", delay_count)); + if (delay_count < 20){ // If 20ms No Result, then cal_retry++ + // ============RXIQK Check============== + rx0_fail = (bool) rtl_get_bbreg(hw, 0xd00, BIT(11)); + rx1_fail = (bool) rtl_get_bbreg(hw, 0xd40, BIT(11)); + if (!(rx0_fail || rx0_finish) && tx0_finish){ + rtl_write_dword(rtlpriv, 0xcb8, 0x06000000); + rx_x0[rx0_average] = rtl_get_bbreg(hw, 0xd00, 0x07ff0000) << 21; + rtl_write_dword(rtlpriv, 0xcb8, 0x08000000); + rx_y0[rx0_average] = rtl_get_bbreg(hw, 0xd00, 0x07ff0000) << 21; + rx0iqkok= true; + RT_TRACE(COMP_IQK, DBG_LOUD, + ("RX_X0[%d] = %x ;; RX_Y0[%d] = %x\n", + rx0_average, (rx_x0[rx0_average]) >> 21 & 0x000007ff, + rx0_average, (rx_y0[rx0_average]) >> 21 & 0x000007ff)); + + rx0_average++; + } + else{ + RT_TRACE(COMP_IQK, DBG_LOUD, + ("1. RXA_cal_retry = %d\n", cal0_retry)); + rx0iqkok = false; + cal0_retry++; + if (cal0_retry == 10) + break; + } + if (!(rx1_fail || rx1_finish) && tx1_finish){ + rtl_write_dword(rtlpriv, 0xeb8, 0x06000000); + rx_x1[rx1_average] = rtl_get_bbreg(hw, 0xd40, 0x07ff0000) << 21; + rtl_write_dword(rtlpriv, 0xeb8, 0x08000000); + rx_y1[rx1_average] = rtl_get_bbreg(hw, 0xd40, 0x07ff0000) << 21; + rx1iqkok = true; + RT_TRACE(COMP_IQK, DBG_LOUD, + ("RX_X1[%d] = %x ;; RX_Y1[%d] = %x\n", + rx1_average, (rx_x1[rx1_average]) >> 21 & 0x000007ff, + rx1_average, (rx_y1[rx1_average]) >> 21 & 0x000007ff)); + + rx1_average++; + } + else{ + rx1iqkok= false; + cal1_retry++; + if (cal1_retry == 10) + break; + } + + } + else{ + RT_TRACE(COMP_IQK, DBG_LOUD, + ("2. RXA_cal_retry = %d\n", cal0_retry)); + rx0iqkok = false; + rx1iqkok = false; + cal0_retry++; + cal1_retry++; + RT_TRACE(COMP_IQK, DBG_LOUD, + ("Delay 20ms RX IQK Not Ready!!!!!\n")); + if (cal0_retry == 10) + break; + } + RT_TRACE(COMP_IQK, DBG_LOUD, + ("3. RXA_cal_retry = %d\n", cal0_retry)); + if (rx0_average >= 2){ + for (i = 0; i < rx0_average; i++){ + for (ii = i+1; ii < rx0_average; ii++){ + dx = (rx_x0[i] >> 21) - (rx_x0[ii] >> 21); + if (dx < 4 && dx > -4){ + dy = (rx_y0[i] >> 21) - (rx_y0[ii] >> 21); + if (dy < 4 && dy > -4){ + rx0_x = ((rx_x0[i]>>21) + (rx_x0[ii] >> 21)) / 2; + rx0_y = ((rx_y0[i]>>21) + (rx_y0[ii] >> 21)) / 2; + if ((rtlphy->current_chan_bw == HT_CHANNEL_WIDTH_80) + && vdf_enable) { + rx_dt[0] = (rx_dt[i] + rx_dt[ii]) / 2; + } + rx0_finish = true; + break; + } + } + } + } + } + if (rx1_average >= 2){ + for (i = 0; i < rx1_average; i++){ + for (ii = i+1; ii < rx1_average; ii++){ + dx = (rx_x1[i] >> 21) - (rx_x1[ii] >> 21); + if (dx < 4 && dx > -4){ + dy = (rx_y1[i] >> 21) - (rx_y1[ii] >> 21); + if (dy < 4 && dy > -4){ + rx1_x = ((rx_x1[i] >> 21) + (rx_x1[ii] >> 21)) / 2; + rx1_y = ((rx_y1[i] >> 21) + (rx_y1[ii] >> 21)) / 2; + if ((rtlphy->current_chan_bw == HT_CHANNEL_WIDTH_80) + && vdf_enable) { + rx_dt[0] = (rx_dt[i] + rx_dt[ii]) / 2; + } + rx1_finish = true; + break; + } + } + } + } + } + RT_TRACE(COMP_IQK, DBG_LOUD, + ("RX0_Average = %d, RX1_Average = %d\n", + rx0_average, rx1_average)); + RT_TRACE(COMP_IQK, DBG_LOUD, + ("RX0_finish = %d, RX1_finish = %d\n", + rx0_finish, rx1_finish)); + if ((rx0_finish|| !tx0_finish) && (rx1_finish || !tx1_finish) ) + break; + if ((cal0_retry + rx0_average) >= 10 + || (cal1_retry + rx1_average) >= 10 + || rx0_average == 3 + || rx1_average == 3) + break; + } + RT_TRACE(COMP_IQK, DBG_LOUD, + ("RXA_cal_retry = %d\n", cal0_retry)); + RT_TRACE(COMP_IQK, DBG_LOUD, + ("RXB_cal_retry = %d\n", cal1_retry)); + } + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x0); /* [31] = 0 --> Page C*/ + switch (rtlphy->current_chan_bw) + { + case HT_CHANNEL_WIDTH_20_40: + { + rtl_set_rfreg(hw, RF90_PATH_A, 0x18, 0x00c00, 0x1); + } + break; + case HT_CHANNEL_WIDTH_80: + { + rtl_set_rfreg(hw, RF90_PATH_A, 0x18, 0x00c00, 0x0); + } + break; + default: + break; + + } + + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x1); /* [31] = 0 --> Page C*/ + /*FillIQK Result*/ + RT_TRACE(COMP_IQK, DBG_LOUD, + ("========Path_A =======\n")); + + if (tx0_finish){ + _rtl8812ae_iqk_tx_fill_iqc(hw, RF90_PATH_A, tx0_x, tx0_y); + } + else{ + _rtl8812ae_iqk_tx_fill_iqc(hw, RF90_PATH_A, 0x200, 0x0); + } + + if (rtlphy->current_chan_bw == HT_CHANNEL_WIDTH_80 + || vdf_enable){ + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x1); /*[31] = 0 --> Page C*/ + rtl_set_bbreg(hw, 0xce8, 0x3fff0000, tx_dt[0] & 0x00003fff); + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x0); /*[31] = 0 --> Page C*/ + } + + if (rx0_finish == 1){ + _rtl8812ae_iqk_rx_fill_iqc(hw, RF90_PATH_A, rx0_x, rx0_y); + } + else{ + _rtl8812ae_iqk_rx_fill_iqc(hw, RF90_PATH_A, 0x200, 0x0); + } + + if (rtlphy->current_chan_bw == HT_CHANNEL_WIDTH_80 + || vdf_enable){ + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x1); /*[31] = 0 --> Page C*/ + rtl_set_bbreg(hw, 0xce8, 0x00003fff, rx_dt[0] & 0x00003fff); + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x0); /* [31] = 0 --> Page C*/ + } + + RT_TRACE(COMP_IQK, DBG_LOUD, + ("========Path_B =======\n")); + + if (tx1_finish){ + _rtl8812ae_iqk_tx_fill_iqc(hw, RF90_PATH_B, tx1_x, tx1_y); + } + else{ + _rtl8812ae_iqk_tx_fill_iqc(hw, RF90_PATH_B, 0x200, 0x0); + } + + if (rtlphy->current_chan_bw == HT_CHANNEL_WIDTH_80 + || vdf_enable){ + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x1); /* [31] = 0 --> Page C*/ + rtl_set_bbreg(hw, 0xee8, 0x3fff0000, tx_dt[0] & 0x00003fff); + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x0); /* [31] = 0 --> Page C*/ + } + + if (rx1_finish == 1){ + _rtl8812ae_iqk_rx_fill_iqc(hw, RF90_PATH_B, rx1_x, rx1_y); + } + else{ + _rtl8812ae_iqk_rx_fill_iqc(hw, RF90_PATH_B, 0x200, 0x0); + } + + if (rtlphy->current_chan_bw == HT_CHANNEL_WIDTH_80 + || vdf_enable){ + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x1); /* [31] = 0 --> Page C*/ + rtl_set_bbreg(hw, 0xee8, 0x00003fff, rx_dt[0] & 0x00003fff); + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x0); /* [31] = 0 --> Page C*/ + } +} + +void _rtl8812ae_iqk_restore_rf( + struct ieee80211_hw *hw, + enum radio_path path, + u32 *backup_rf_reg, + u32 *rf_backup, + u32 rf_reg_num + ) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 i; + + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x0); /*[31] = 0 --> Page C*/ + for (i = 0; i < rf_reg_num; i++) + rtl_set_rfreg(hw, path, backup_rf_reg[i], BRFREGOFFSETMASK, rf_backup[i]); + + rtl_set_rfreg(hw, path, 0xef, BRFREGOFFSETMASK, 0x0); + + switch(path){ + case RF90_PATH_A: + { + RT_TRACE(COMP_IQK, DBG_LOUD, + ("RestoreRF Path A Success!!!!\n")); + } + break; + case RF90_PATH_B: + { + RT_TRACE(COMP_IQK, DBG_LOUD, + ("RestoreRF Path B Success!!!!\n")); + } + break; + default: + break; + } +} + +void _rtl8812ae_iqk_restore_afe( + struct ieee80211_hw *hw, + u32 *afe_backup, + u32 *backup_afe_reg, + u32 afe_num + ) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 i; + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x0); /*[31] = 0 --> Page C*/ + /*Reload AFE Parameters */ + for (i = 0; i < afe_num; i++){ + rtl_write_dword(rtlpriv, backup_afe_reg[i], afe_backup[i]); + } + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x1); /* [31] = 1 --> Page C1*/ + rtl_write_dword(rtlpriv, 0xc80, 0x0); + rtl_write_dword(rtlpriv, 0xc84, 0x0); + rtl_write_dword(rtlpriv, 0xc88, 0x0); + rtl_write_dword(rtlpriv, 0xc8c, 0x3c000000); + rtl_write_dword(rtlpriv, 0xc90, 0x00000080); + rtl_write_dword(rtlpriv, 0xc94, 0x00000000); + rtl_write_dword(rtlpriv, 0xcc4, 0x20040000); + rtl_write_dword(rtlpriv, 0xcc8, 0x20000000); + rtl_write_dword(rtlpriv, 0xcb8, 0x0); + rtl_write_dword(rtlpriv, 0xe80, 0x0); + rtl_write_dword(rtlpriv, 0xe84, 0x0); + rtl_write_dword(rtlpriv, 0xe88, 0x0); + rtl_write_dword(rtlpriv, 0xe8c, 0x3c000000); + rtl_write_dword(rtlpriv, 0xe90, 0x00000080); + rtl_write_dword(rtlpriv, 0xe94, 0x00000000); + rtl_write_dword(rtlpriv, 0xec4, 0x20040000); + rtl_write_dword(rtlpriv, 0xec8, 0x20000000); + rtl_write_dword(rtlpriv, 0xeb8, 0x0); + RT_TRACE(COMP_IQK, DBG_LOUD, + ("RestoreAFE Success!!!!\n")); +} + +void _rtl8812ae_iqk_restore_macbb( + struct ieee80211_hw *hw, + u32 *macbb_backup, + u32 *backup_macbb_reg, + u32 macbb_num + ) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 i; + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x0); /* [31] = 0 --> Page C*/ + //Reload MacBB Parameters + for (i = 0; i < macbb_num; i++){ + rtl_write_dword(rtlpriv, backup_macbb_reg[i], macbb_backup[i]); + } + RT_TRACE(COMP_IQK, DBG_LOUD, + ("RestoreMacBB Success!!!!\n")); +} + +#define MACBB_REG_NUM 10 +#define AFE_REG_NUM 14 +#define RF_REG_NUM 3 + +static void _rtl8812ae_phy_iq_calibrate( + struct ieee80211_hw *hw, + u8 channel) +{ + u32 macbb_backup[MACBB_REG_NUM]; + u32 afe_backup[AFE_REG_NUM]; + u32 rfa_backup[RF_REG_NUM]; + u32 rfb_backup[RF_REG_NUM]; + u32 backup_macbb_reg[MACBB_REG_NUM] = {0xb00, 0x520, 0x550, + 0x808, 0x90c, 0xc00, 0xe00, + 0x8c4,0x838, 0x82c}; + u32 backup_afe_reg[AFE_REG_NUM] = {0xc5c, 0xc60, 0xc64, 0xc68, + 0xcb8, 0xcb0, 0xcb4,0xe5c, + 0xe60, 0xe64, 0xe68, 0xeb8, + 0xeb0, 0xeb4}; + u32 backup_rf_reg[RF_REG_NUM] = {0x65, 0x8f, 0x0}; + u8 chnl_idx = _rtl8812ae_get_right_chnl_place_for_iqk(channel); + + _rtl8812ae_iqk_backup_macbb(hw, macbb_backup, backup_macbb_reg, MACBB_REG_NUM); + _rtl8812ae_iqk_backup_afe(hw, afe_backup, backup_afe_reg, AFE_REG_NUM); + _rtl8812ae_iqk_backup_rf(hw, rfa_backup, rfb_backup, backup_rf_reg, RF_REG_NUM); + + _rtl8812ae_iqk_configure_mac(hw); + _rtl8812ae_iqk_tx(hw, chnl_idx); + _rtl8812ae_iqk_restore_rf(hw, RF90_PATH_A, backup_rf_reg, rfa_backup, RF_REG_NUM); + _rtl8812ae_iqk_restore_rf(hw, RF90_PATH_A, backup_rf_reg, rfb_backup, RF_REG_NUM); // PATH_A ? + + _rtl8812ae_iqk_restore_afe(hw, afe_backup, backup_afe_reg, AFE_REG_NUM); + _rtl8812ae_iqk_restore_macbb(hw, macbb_backup, backup_macbb_reg, MACBB_REG_NUM); +} + + +void _rtl8821ae_iqk_backup_macbb( + struct ieee80211_hw *hw, + u32 *macbb_backup, + u32 *backup_macbb_reg, + u32 mac_bb_num + ) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 i; + + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x0); /*[31] = 0 --> Page C*/ + /*save MACBB default value*/ + for (i = 0; i < mac_bb_num; i++) { + macbb_backup[i] =rtl_read_dword(rtlpriv,backup_macbb_reg[i]); + } + + RT_TRACE(COMP_IQK, DBG_LOUD, ("BackupMacBB Success!!!!\n")); +} + +void _rtl8821ae_iqk_backup_afe( + struct ieee80211_hw *hw, + u32 *afe_backup, + u32 *backup_afe_REG, + u32 afe_num + ) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 i; + + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x0); /*[31] = 0 --> Page C*/ + /*Save AFE Parameters */ + for (i = 0; i < afe_num; i++){ + afe_backup[i] = rtl_read_dword(rtlpriv, backup_afe_REG[i]); + } + RT_TRACE(COMP_IQK, DBG_LOUD, ("BackupAFE Success!!!!\n")); +} + +void _rtl8821ae_iqk_backup_rf( + struct ieee80211_hw *hw, + u32 *rfa_backup, + u32 *rfb_backup, + u32 *backup_rf_reg, + u32 rf_num + ) +{ + + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 i; + + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x0); /*[31] = 0 --> Page C*/ + /*Save RF Parameters*/ + for (i = 0; i < rf_num; i++){ + rfa_backup[i] = rtl_get_rfreg(hw, RF90_PATH_A, backup_rf_reg[i], BMASKDWORD); + rfb_backup[i] = rtl_get_rfreg(hw, RF90_PATH_B, backup_rf_reg[i], BMASKDWORD); + } + RT_TRACE(COMP_IQK, DBG_LOUD, ("BackupRF Success!!!!\n")); +} + +void _rtl8821ae_iqk_configure_mac( + struct ieee80211_hw *hw + ) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + /* ========MAC register setting========*/ + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x0); /*[31] = 0 --> Page C*/ + rtl_write_byte(rtlpriv, 0x522, 0x3f); + rtl_set_bbreg(hw, 0x550, BIT(11) | BIT(3), 0x0); + rtl_write_byte(rtlpriv, 0x808, 0x00); /*RX ante off*/ + rtl_set_bbreg(hw, 0x838, 0xf, 0xc); /*CCA off*/ +} + + +void _rtl8821ae_iqk_tx_fill_iqc( + struct ieee80211_hw *hw, + enum radio_path path, + u32 tx_x, + u32 tx_y + ) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + switch (path) { + case RF90_PATH_A: + { + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x1); // [31] = 1 --> Page C1 + rtl_write_dword(rtlpriv, 0xc90, 0x00000080); + rtl_write_dword(rtlpriv, 0xcc4, 0x20040000); + rtl_write_dword(rtlpriv, 0xcc8, 0x20000000); + rtl_set_bbreg(hw, 0xccc, 0x000007ff, tx_y); + rtl_set_bbreg(hw, 0xcd4, 0x000007ff, tx_x); + RT_TRACE(COMP_IQK, DBG_LOUD, ("TX_X = %x;;TX_Y = %x =====> fill to IQC\n", tx_x, tx_y)); + RT_TRACE(COMP_IQK, DBG_LOUD, ("0xcd4 = %x;;0xccc = %x ====>fill to IQC\n", rtl_get_bbreg(hw, 0xcd4, 0x000007ff), rtl_get_bbreg(hw, 0xccc, 0x000007ff))); + } + break; + default: + break; + }; +} + + +void _rtl8821ae_iqk_rx_fill_iqc( + struct ieee80211_hw *hw, + enum radio_path path, + u32 rx_x, + u32 rx_y + ) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + switch (path) { + case RF90_PATH_A: + { + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x0); // [31] = 0 --> Page C + rtl_set_bbreg(hw, 0xc10, 0x000003ff, rx_x>>1); + rtl_set_bbreg(hw, 0xc10, 0x03ff0000, rx_y>>1); + RT_TRACE(COMP_IQK, DBG_LOUD, ("rx_x = %x;;rx_y = %x ====>fill to IQC\n", rx_x>>1, rx_y>>1)); + RT_TRACE(COMP_IQK, DBG_LOUD, ("0xc10 = %x ====>fill to IQC\n", rtl_read_dword(rtlpriv, 0xc10))); + } + break; + default: + break; + }; +} + + + +#define cal_num 10 + +void _rtl8821ae_iqk_tx( + struct ieee80211_hw *hw, + enum radio_path path + ) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + + u32 tx_fail, rx_fail, delay_count, iqk_ready, cal_retry, cal = 0, temp_reg65; + int tx_x = 0, tx_y = 0, rx_x = 0, rx_y = 0, tx_average = 0, rx_average = 0; + int tx_x0[cal_num], tx_y0[cal_num], tx_x0_rxk[cal_num], tx_y0_rxk[cal_num], rx_x0[cal_num], rx_y0[cal_num]; + bool tx0iqkok = false, rx0iqkok = false; + bool vdf_enable = false; + int i, k, vdf_y[3], vdf_x[3], tx_dt[3], rx_dt[3], ii, dx = 0, dy = 0, tx_finish = 0, rx_finish = 0; + + + RT_TRACE(COMP_IQK, DBG_LOUD, + ("BandWidth = %d.\n", + rtlphy->current_chan_bw)); + if (rtlphy->current_chan_bw == HT_CHANNEL_WIDTH_80){ + vdf_enable = true; + } + + while (cal < cal_num) { + switch (path) { + case RF90_PATH_A: + { + temp_reg65 = rtl_get_rfreg(hw, path, 0x65, 0xffffffff); + //Path-A LOK + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x0); /*[31] = 0 --> Page C*/ + /*========Path-A AFE all on========*/ + /*Port 0 DAC/ADC on*/ + rtl_write_dword(rtlpriv, 0xc60, 0x77777777); + rtl_write_dword(rtlpriv, 0xc64, 0x77777777); + rtl_write_dword(rtlpriv, 0xc68, 0x19791979); + rtl_write_dword(rtlpriv, 0xc6c, 0x19791979); + rtl_write_dword(rtlpriv, 0xc70, 0x19791979); + rtl_write_dword(rtlpriv, 0xc74, 0x19791979); + rtl_write_dword(rtlpriv, 0xc78, 0x19791979); + rtl_write_dword(rtlpriv, 0xc7c, 0x19791979); + rtl_write_dword(rtlpriv, 0xc80, 0x19791979); + rtl_write_dword(rtlpriv, 0xc84, 0x19791979); + + rtl_set_bbreg(hw, 0xc00, 0xf, 0x4); /*hardware 3-wire off*/ + + // LOK Setting + //====== LOK ====== + /*DAC/ADC sampling rate (160 MHz)*/ + rtl_set_bbreg(hw, 0xc5c, BIT(26) | BIT(25) | BIT(24), 0x7); + + // 2. LoK RF Setting (at BW = 20M) + rtl_set_rfreg(hw, path, 0xef, RFREG_OFFSET_MASK, 0x80002); + rtl_set_rfreg(hw, path, 0x18, 0x00c00, 0x3); // BW 20M + rtl_set_rfreg(hw, path, 0x30, RFREG_OFFSET_MASK, 0x20000); + rtl_set_rfreg(hw, path, 0x31, RFREG_OFFSET_MASK, 0x0003f); + rtl_set_rfreg(hw, path, 0x32, RFREG_OFFSET_MASK, 0xf3fc3); + rtl_set_rfreg(hw, path, 0x65, RFREG_OFFSET_MASK, 0x931d5); + rtl_set_rfreg(hw, path, 0x8f, RFREG_OFFSET_MASK, 0x8a001); + rtl_set_bbreg(hw, 0xcb8, 0xf, 0xd); + rtl_write_dword(rtlpriv, 0x90c, 0x00008000); + rtl_write_dword(rtlpriv, 0xb00, 0x03000100); + rtl_set_bbreg(hw, 0xc94, BIT(0), 0x1); + rtl_write_dword(rtlpriv, 0x978, 0x29002000);// TX (X,Y) + rtl_write_dword(rtlpriv, 0x97c, 0xa9002000);// RX (X,Y) + rtl_write_dword(rtlpriv, 0x984, 0x00462910);// [0]:AGC_en, [15]:idac_K_Mask + + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x1); // [31] = 1 --> Page C1 + rtl_write_dword(rtlpriv, 0xc88, 0x821403f4); + + if (rtlhal->current_bandtype) + rtl_write_dword(rtlpriv, 0xc8c, 0x68163e96); + else + rtl_write_dword(rtlpriv, 0xc8c, 0x28163e96); + + rtl_write_dword(rtlpriv, 0xc80, 0x18008c10);// TX_Tone_idx[9:0], TxK_Mask[29] TX_Tone = 16 + rtl_write_dword(rtlpriv, 0xc84, 0x38008c10);// RX_Tone_idx[9:0], RxK_Mask[29] + rtl_write_dword(rtlpriv, 0xcb8, 0x00100000);// cb8[20] N SI/PI ϥv iqk_dpk module + rtl_write_dword(rtlpriv, 0x980, 0xfa000000); + rtl_write_dword(rtlpriv, 0x980, 0xf8000000); + + mdelay(10); //Delay 10ms + rtl_write_dword(rtlpriv, 0xcb8, 0x00000000); + + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x0); // [31] = 0 --> Page C + rtl_set_rfreg(hw, path, 0x58, 0x7fe00, rtl_get_rfreg(hw, path, 0x8, 0xffc00)); // Load LOK + + switch (rtlphy->current_chan_bw) + { + case 1: + { + rtl_set_rfreg(hw, path, 0x18, 0x00c00, 0x1); + } + break; + case 2: + { + rtl_set_rfreg(hw, path, 0x18, 0x00c00, 0x0); + } + break; + default: + break; + + } + + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x1); // [31] = 1 --> Page C1 + + // 3. TX RF Setting + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x0); // [31] = 0 --> Page C + rtl_set_rfreg(hw, path, 0xef, RFREG_OFFSET_MASK, 0x80000); + rtl_set_rfreg(hw, path, 0x30, RFREG_OFFSET_MASK, 0x20000); + rtl_set_rfreg(hw, path, 0x31, RFREG_OFFSET_MASK, 0x0003f); + rtl_set_rfreg(hw, path, 0x32, RFREG_OFFSET_MASK, 0xf3fc3); + rtl_set_rfreg(hw, path, 0x65, RFREG_OFFSET_MASK, 0x931d5); + rtl_set_rfreg(hw, path, 0x8f, RFREG_OFFSET_MASK, 0x8a001); + rtl_set_rfreg(hw, path, 0xef, RFREG_OFFSET_MASK, 0x00000); + //ODM_SetBBReg(pDM_Odm, 0xcb8, 0xf, 0xd); + rtl_write_dword(rtlpriv, 0x90c, 0x00008000); + rtl_write_dword(rtlpriv, 0xb00, 0x03000100); + rtl_set_bbreg(hw, 0xc94, BIT(0), 0x1); + rtl_write_dword(rtlpriv, 0x978, 0x29002000);// TX (X,Y) + rtl_write_dword(rtlpriv, 0x97c, 0xa9002000);// RX (X,Y) + rtl_write_dword(rtlpriv, 0x984, 0x0046a910);// [0]:AGC_en, [15]:idac_K_Mask + + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x1); // [31] = 1 --> Page C1 + rtl_write_dword(rtlpriv, 0xc88, 0x821403f1); + if (rtlhal->current_bandtype) + rtl_write_dword(rtlpriv, 0xc8c, 0x40163e96); + else + rtl_write_dword(rtlpriv, 0xc8c, 0x00163e96); + + if (vdf_enable == 1){ + RT_TRACE(COMP_IQK, DBG_LOUD, ("VDF_enable\n")); + for (k = 0;k <= 2; k++){ + switch (k){ + case 0: + { + rtl_write_dword(rtlpriv, 0xc80, 0x18008c38);// TX_Tone_idx[9:0], TxK_Mask[29] TX_Tone = 16 + rtl_write_dword(rtlpriv, 0xc84, 0x38008c38);// RX_Tone_idx[9:0], RxK_Mask[29] + rtl_set_bbreg(hw, 0xce8, BIT(31), 0x0); + } + break; + case 1: + { + rtl_set_bbreg(hw, 0xc80, BIT(28), 0x0); + rtl_set_bbreg(hw, 0xc84, BIT(28), 0x0); + rtl_set_bbreg(hw, 0xce8, BIT(31), 0x0); + } + break; + case 2: + { + RT_TRACE(COMP_IQK, DBG_LOUD, ("vdf_y[1] = %x;;;vdf_y[0] = %x\n", vdf_y[1]>>21 & 0x00007ff, vdf_y[0]>>21 & 0x00007ff)); + RT_TRACE(COMP_IQK, DBG_LOUD, ("vdf_x[1] = %x;;;vdf_x[0] = %x\n", vdf_x[1]>>21 & 0x00007ff, vdf_x[0]>>21 & 0x00007ff)); + tx_dt[cal] = (vdf_y[1]>>20)-(vdf_y[0]>>20); + tx_dt[cal] = ((16*tx_dt[cal])*10000/15708); + tx_dt[cal] = (tx_dt[cal] >> 1 )+(tx_dt[cal] & BIT(0)); + rtl_write_dword(rtlpriv, 0xc80, 0x18008c20);// TX_Tone_idx[9:0], TxK_Mask[29] TX_Tone = 16 + rtl_write_dword(rtlpriv, 0xc84, 0x38008c20);// RX_Tone_idx[9:0], RxK_Mask[29] + rtl_set_bbreg(hw, 0xce8, BIT(31), 0x1); + rtl_set_bbreg(hw, 0xce8, 0x3fff0000, tx_dt[cal] & 0x00003fff); + } + break; + default: + break; + } + rtl_write_dword(rtlpriv, 0xcb8, 0x00100000);// cb8[20] N SI/PI ϥv iqk_dpk module + cal_retry = 0; + while(1){ + // one shot + rtl_write_dword(rtlpriv, 0x980, 0xfa000000); + rtl_write_dword(rtlpriv, 0x980, 0xf8000000); + + mdelay(10); //Delay 10ms + rtl_write_dword(rtlpriv, 0xcb8, 0x00000000); + delay_count = 0; + while (1){ + iqk_ready = rtl_get_bbreg(hw, 0xd00, BIT(10)); + if ((~iqk_ready) || (delay_count>20)){ + break; + } + else{ + mdelay(1); + delay_count++; + } + } + + if (delay_count < 20){ // If 20ms No Result, then cal_retry++ + // ============TXIQK Check============== + tx_fail = rtl_get_bbreg(hw, 0xd00, BIT(12)); + + if (~tx_fail){ + rtl_write_dword(rtlpriv, 0xcb8, 0x02000000); + vdf_x[k] = rtl_get_bbreg(hw, 0xd00, 0x07ff0000)<<21; + rtl_write_dword(rtlpriv, 0xcb8, 0x04000000); + vdf_y[k] = rtl_get_bbreg(hw, 0xd00, 0x07ff0000)<<21; + tx0iqkok = true; + break; + } + else{ + rtl_set_bbreg(hw, 0xccc, 0x000007ff, 0x0); + rtl_set_bbreg(hw, 0xcd4, 0x000007ff, 0x200); + tx0iqkok = false; + cal_retry++; + if (cal_retry == 10) { + break; + } + } + } + else{ + tx0iqkok = false; + cal_retry++; + if (cal_retry == 10){ + break; + } + } + } + } + if (k == 3){ + tx_x0[cal] = vdf_x[k-1] ; + tx_y0[cal] = vdf_y[k-1]; + } + } + + else { + rtl_write_dword(rtlpriv, 0xc80, 0x18008c10);// TX_Tone_idx[9:0], TxK_Mask[29] TX_Tone = 16 + rtl_write_dword(rtlpriv, 0xc84, 0x38008c10);// RX_Tone_idx[9:0], RxK_Mask[29] + rtl_write_dword(rtlpriv, 0xcb8, 0x00100000);// cb8[20] N SI/PI ϥv iqk_dpk module + cal_retry = 0; + while(1){ + // one shot + rtl_write_dword(rtlpriv, 0x980, 0xfa000000); + rtl_write_dword(rtlpriv, 0x980, 0xf8000000); + + mdelay(10); //Delay 10ms + rtl_write_dword(rtlpriv, 0xcb8, 0x00000000); + delay_count = 0; + while (1){ + iqk_ready = rtl_get_bbreg(hw, 0xd00, BIT(10)); + if ((~iqk_ready) || (delay_count>20)) { + break; + } + else{ + mdelay(1); + delay_count++; + } + } + + if (delay_count < 20){ // If 20ms No Result, then cal_retry++ + // ============TXIQK Check============== + tx_fail = rtl_get_bbreg(hw, 0xd00, BIT(12)); + + if (~tx_fail){ + rtl_write_dword(rtlpriv, 0xcb8, 0x02000000); + tx_x0[cal] = rtl_get_bbreg(hw, 0xd00, 0x07ff0000)<<21; + rtl_write_dword(rtlpriv, 0xcb8, 0x04000000); + tx_y0[cal] = rtl_get_bbreg(hw, 0xd00, 0x07ff0000)<<21; + tx0iqkok = true; + break; + } + else{ + rtl_set_bbreg(hw, 0xccc, 0x000007ff, 0x0); + rtl_set_bbreg(hw, 0xcd4, 0x000007ff, 0x200); + tx0iqkok = false; + cal_retry++; + if (cal_retry == 10) { + break; + } + } + } + else{ + tx0iqkok = false; + cal_retry++; + if (cal_retry == 10) + break; + } + } + } + + + if (tx0iqkok == false) + break; // TXK fail, Don't do RXK + + if (vdf_enable == 1){ + rtl_set_bbreg(hw, 0xce8, BIT(31), 0x0); // TX VDF Disable + RT_TRACE(COMP_IQK, DBG_LOUD, ("RXVDF Start\n")); + for (k = 0;k <= 2; k++){ + //====== RX mode TXK (RXK Step 1) ====== + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x0); // [31] = 0 --> Page C + // 1. TX RF Setting + rtl_set_rfreg(hw, path, 0xef, RFREG_OFFSET_MASK, 0x80000); + rtl_set_rfreg(hw, path, 0x30, RFREG_OFFSET_MASK, 0x30000); + rtl_set_rfreg(hw, path, 0x31, RFREG_OFFSET_MASK, 0x00029); + rtl_set_rfreg(hw, path, 0x32, RFREG_OFFSET_MASK, 0xd7ffb); + rtl_set_rfreg(hw, path, 0x65, RFREG_OFFSET_MASK, temp_reg65); + rtl_set_rfreg(hw, path, 0x8f, RFREG_OFFSET_MASK, 0x8a001); + rtl_set_rfreg(hw, path, 0xef, RFREG_OFFSET_MASK, 0x00000); + + rtl_set_bbreg(hw, 0xcb8, 0xf, 0xd); + rtl_write_dword(rtlpriv, 0x978, 0x29002000);// TX (X,Y) + rtl_write_dword(rtlpriv, 0x97c, 0xa9002000);// RX (X,Y) + rtl_write_dword(rtlpriv, 0x984, 0x0046a910);// [0]:AGC_en, [15]:idac_K_Mask + rtl_write_dword(rtlpriv, 0x90c, 0x00008000); + rtl_write_dword(rtlpriv, 0xb00, 0x03000100); + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x1); // [31] = 1 --> Page C1 + switch (k){ + case 0: + { + rtl_write_dword(rtlpriv, 0xc80, 0x18008c38);// TX_Tone_idx[9:0], TxK_Mask[29] TX_Tone = 16 + rtl_write_dword(rtlpriv, 0xc84, 0x38008c38);// RX_Tone_idx[9:0], RxK_Mask[29] + rtl_set_bbreg(hw, 0xce8, BIT(30), 0x0); + } + break; + case 1: + { + rtl_write_dword(rtlpriv, 0xc80, 0x08008c38);// TX_Tone_idx[9:0], TxK_Mask[29] TX_Tone = 16 + rtl_write_dword(rtlpriv, 0xc84, 0x28008c38);// RX_Tone_idx[9:0], RxK_Mask[29] + rtl_set_bbreg(hw, 0xce8, BIT(30), 0x0); + } + break; + case 2: + { + RT_TRACE(COMP_IQK, DBG_LOUD, ("VDF_Y[1] = %x;;;VDF_Y[0] = %x\n", vdf_y[1]>>21 & 0x00007ff, vdf_y[0]>>21 & 0x00007ff)); + RT_TRACE(COMP_IQK, DBG_LOUD, ("VDF_X[1] = %x;;;VDF_X[0] = %x\n", vdf_x[1]>>21 & 0x00007ff, vdf_x[0]>>21 & 0x00007ff)); + rx_dt[cal] = (vdf_y[1]>>20)-(vdf_y[0]>>20); + RT_TRACE(COMP_IQK, DBG_LOUD, ("Rx_dt = %d\n", rx_dt[cal])); + rx_dt[cal] = ((16*rx_dt[cal])*10000/13823); + rx_dt[cal] = (rx_dt[cal] >> 1 )+(rx_dt[cal] & BIT(0)); + rtl_write_dword(rtlpriv, 0xc80, 0x18008c20);// TX_Tone_idx[9:0], TxK_Mask[29] TX_Tone = 16 + rtl_write_dword(rtlpriv, 0xc84, 0x38008c20);// RX_Tone_idx[9:0], RxK_Mask[29] + rtl_set_bbreg(hw, 0xce8, 0x00003fff, rx_dt[cal] & 0x00003fff); + } + break; + default: + break; + } + rtl_write_dword(rtlpriv, 0xc88, 0x821603e0); + rtl_write_dword(rtlpriv, 0xc8c, 0x68163e96); + rtl_write_dword(rtlpriv, 0xcb8, 0x00100000);// cb8[20] N SI/PI ϥv iqk_dpk module + cal_retry = 0; + while(1){ + // one shot + rtl_write_dword(rtlpriv, 0x980, 0xfa000000); + rtl_write_dword(rtlpriv, 0x980, 0xf8000000); + + mdelay(10); //Delay 10ms + rtl_write_dword(rtlpriv, 0xcb8, 0x00000000); + delay_count = 0; + while (1){ + iqk_ready = rtl_get_bbreg(hw, 0xd00, BIT(10)); + if ((~iqk_ready)||(delay_count>20)){ + break; + } + else{ + mdelay(1); + delay_count++; + } + } + + if (delay_count < 20){ // If 20ms No Result, then cal_retry++ + // ============TXIQK Check============== + tx_fail = rtl_get_bbreg(hw, 0xd00, BIT(12)); + + if (~tx_fail){ + rtl_write_dword(rtlpriv, 0xcb8, 0x02000000); + tx_x0_rxk[cal] = rtl_get_bbreg(hw, 0xd00, 0x07ff0000)<<21; + rtl_write_dword(rtlpriv, 0xcb8, 0x04000000); + tx_y0_rxk[cal] = rtl_get_bbreg(hw, 0xd00, 0x07ff0000)<<21; + tx0iqkok = true; + break; + } + else{ + tx0iqkok = false; + cal_retry++; + if (cal_retry == 10) + break; + } + } + else{ + tx0iqkok = false; + cal_retry++; + if (cal_retry == 10) + break; + } + } + + if (tx0iqkok == false){ //If RX mode TXK fail, then take TXK Result + tx_x0_rxk[cal] = tx_x0[cal]; + tx_y0_rxk[cal] = tx_y0[cal]; + tx0iqkok = true; + RT_TRACE(COMP_IQK, DBG_LOUD, ("RXK Step 1 fail\n")); + } + + + //====== RX IQK ====== + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x0); // [31] = 0 --> Page C + // 1. RX RF Setting + rtl_set_rfreg(hw, path, 0xef, RFREG_OFFSET_MASK, 0x80000); + rtl_set_rfreg(hw, path, 0x30, RFREG_OFFSET_MASK, 0x30000); + rtl_set_rfreg(hw, path, 0x31, RFREG_OFFSET_MASK, 0x0002f); + rtl_set_rfreg(hw, path, 0x32, RFREG_OFFSET_MASK, 0xfffbb); + rtl_set_rfreg(hw, path, 0x8f, RFREG_OFFSET_MASK, 0x88001); + rtl_set_rfreg(hw, path, 0x65, RFREG_OFFSET_MASK, 0x931d8); + rtl_set_rfreg(hw, path, 0xef, RFREG_OFFSET_MASK, 0x00000); + + rtl_set_bbreg(hw, 0x978, 0x03FF8000, (tx_x0_rxk[cal])>>21&0x000007ff); + rtl_set_bbreg(hw, 0x978, 0x000007FF, (tx_y0_rxk[cal])>>21&0x000007ff); + rtl_set_bbreg(hw, 0x978, BIT(31), 0x1); + rtl_set_bbreg(hw, 0x97c, BIT(31), 0x0); + rtl_set_bbreg(hw, 0xcb8, 0xF, 0xe); + rtl_write_dword(rtlpriv, 0x90c, 0x00008000); + rtl_write_dword(rtlpriv, 0x984, 0x0046a911); + + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x1); // [31] = 1 --> Page C1 + rtl_set_bbreg(hw, 0xc80, BIT(29), 0x1); + rtl_set_bbreg(hw, 0xc84, BIT(29), 0x0); + rtl_write_dword(rtlpriv, 0xc88, 0x02140119); + + rtl_write_dword(rtlpriv, 0xc8c, 0x28160d00); /* pDM_Odm->SupportInterface == 1 */ + + if (k==2){ + rtl_set_bbreg(hw, 0xce8, BIT(30), 0x1); //RX VDF Enable + } + rtl_write_dword(rtlpriv, 0xcb8, 0x00100000);// cb8[20] N SI/PI ϥv iqk_dpk module + + cal_retry = 0; + while(1){ + // one shot + rtl_write_dword(rtlpriv, 0x980, 0xfa000000); + rtl_write_dword(rtlpriv, 0x980, 0xf8000000); + + mdelay(10); //Delay 10ms + rtl_write_dword(rtlpriv, 0xcb8, 0x00000000); + delay_count = 0; + while (1){ + iqk_ready = rtl_get_bbreg(hw, 0xd00, BIT(10)); + if ((~iqk_ready)||(delay_count>20)){ + break; + } + else{ + mdelay(1); + delay_count++; + } + } + + if (delay_count < 20){ // If 20ms No Result, then cal_retry++ + // ============RXIQK Check============== + rx_fail = rtl_get_bbreg(hw, 0xd00, BIT(11)); + if (rx_fail == 0){ + rtl_write_dword(rtlpriv, 0xcb8, 0x06000000); + vdf_x[k] = rtl_get_bbreg(hw, 0xd00, 0x07ff0000)<<21; + rtl_write_dword(rtlpriv, 0xcb8, 0x08000000); + vdf_y[k] = rtl_get_bbreg(hw, 0xd00, 0x07ff0000)<<21; + rx0iqkok = true; + break; + } + else{ + rtl_set_bbreg(hw, 0xc10, 0x000003ff, 0x200>>1); + rtl_set_bbreg(hw, 0xc10, 0x03ff0000, 0x0>>1); + rx0iqkok = false; + cal_retry++; + if (cal_retry == 10) + break; + + } + } + else{ + rx0iqkok = false; + cal_retry++; + if (cal_retry == 10) + break; + } + } + + } + if (k == 3){ + rx_x0[cal] = vdf_x[k-1] ; + rx_y0[cal] = vdf_y[k-1]; + } + rtl_set_bbreg(hw, 0xce8, BIT(31), 0x1); // TX VDF Enable + } + + else{ + //====== RX mode TXK (RXK Step 1) ====== + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x0); // [31] = 0 --> Page C + // 1. TX RF Setting + rtl_set_rfreg(hw, path, 0xef, RFREG_OFFSET_MASK, 0x80000); + rtl_set_rfreg(hw, path, 0x30, RFREG_OFFSET_MASK, 0x30000); + rtl_set_rfreg(hw, path, 0x31, RFREG_OFFSET_MASK, 0x00029); + rtl_set_rfreg(hw, path, 0x32, RFREG_OFFSET_MASK, 0xd7ffb); + rtl_set_rfreg(hw, path, 0x65, RFREG_OFFSET_MASK, temp_reg65); + rtl_set_rfreg(hw, path, 0x8f, RFREG_OFFSET_MASK, 0x8a001); + rtl_set_rfreg(hw, path, 0xef, RFREG_OFFSET_MASK, 0x00000); + rtl_write_dword(rtlpriv, 0x90c, 0x00008000); + rtl_write_dword(rtlpriv, 0xb00, 0x03000100); + rtl_write_dword(rtlpriv, 0x984, 0x0046a910);// [0]:AGC_en, [15]:idac_K_Mask + + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x1); // [31] = 1 --> Page C1 + rtl_write_dword(rtlpriv, 0xc80, 0x18008c10);// TX_Tone_idx[9:0], TxK_Mask[29] TX_Tone = 16 + rtl_write_dword(rtlpriv, 0xc84, 0x38008c10);// RX_Tone_idx[9:0], RxK_Mask[29] + rtl_write_dword(rtlpriv, 0xc88, 0x821603e0); + //ODM_Write4Byte(pDM_Odm, 0xc8c, 0x68163e96); + rtl_write_dword(rtlpriv, 0xcb8, 0x00100000);// cb8[20] N SI/PI ϥv iqk_dpk module + cal_retry = 0; + while(1){ + // one shot + rtl_write_dword(rtlpriv, 0x980, 0xfa000000); + rtl_write_dword(rtlpriv, 0x980, 0xf8000000); + + mdelay(10); //Delay 10ms + rtl_write_dword(rtlpriv, 0xcb8, 0x00000000); + delay_count = 0; + while (1){ + iqk_ready = rtl_get_bbreg(hw, 0xd00, BIT(10)); + if ((~iqk_ready)||(delay_count>20)){ + break; + } + else{ + mdelay(1); + delay_count++; + } + } + + if (delay_count < 20){ // If 20ms No Result, then cal_retry++ + // ============TXIQK Check============== + tx_fail = rtl_get_bbreg(hw, 0xd00, BIT(12)); + + if (~tx_fail){ + rtl_write_dword(rtlpriv, 0xcb8, 0x02000000); + tx_x0_rxk[cal] = rtl_get_bbreg(hw, 0xd00, 0x07ff0000)<<21; + rtl_write_dword(rtlpriv, 0xcb8, 0x04000000); + tx_y0_rxk[cal] = rtl_get_bbreg(hw, 0xd00, 0x07ff0000)<<21; + tx0iqkok = true; + break; + } + else{ + tx0iqkok = false; + cal_retry++; + if (cal_retry == 10) + break; + } + } + else{ + tx0iqkok = false; + cal_retry++; + if (cal_retry == 10) + break; + } + } + + + if (tx0iqkok == false){ //If RX mode TXK fail, then take TXK Result + tx_x0_rxk[cal] = tx_x0[cal]; + tx_y0_rxk[cal] = tx_y0[cal]; + tx0iqkok = true; + RT_TRACE(COMP_IQK, DBG_LOUD, ("1")); + } + + + //====== RX IQK ====== + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x0); // [31] = 0 --> Page C + // 1. RX RF Setting + rtl_set_rfreg(hw, path, 0xef, RFREG_OFFSET_MASK, 0x80000); + rtl_set_rfreg(hw, path, 0x30, RFREG_OFFSET_MASK, 0x30000); + rtl_set_rfreg(hw, path, 0x31, RFREG_OFFSET_MASK, 0x0002f); + rtl_set_rfreg(hw, path, 0x32, RFREG_OFFSET_MASK, 0xfffbb); + rtl_set_rfreg(hw, path, 0x8f, RFREG_OFFSET_MASK, 0x88001); + rtl_set_rfreg(hw, path, 0x65, RFREG_OFFSET_MASK, 0x931d8); + rtl_set_rfreg(hw, path, 0xef, RFREG_OFFSET_MASK, 0x00000); + + rtl_set_bbreg(hw, 0x978, 0x03FF8000, (tx_x0_rxk[cal])>>21&0x000007ff); + rtl_set_bbreg(hw, 0x978, 0x000007FF, (tx_y0_rxk[cal])>>21&0x000007ff); + rtl_set_bbreg(hw, 0x978, BIT(31), 0x1); + rtl_set_bbreg(hw, 0x97c, BIT(31), 0x0); + //ODM_SetBBReg(pDM_Odm, 0xcb8, 0xF, 0xe); + rtl_write_dword(rtlpriv, 0x90c, 0x00008000); + rtl_write_dword(rtlpriv, 0x984, 0x0046a911); + + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x1); // [31] = 1 --> Page C1 + rtl_write_dword(rtlpriv, 0xc80, 0x38008c10);// TX_Tone_idx[9:0], TxK_Mask[29] TX_Tone = 16 + rtl_write_dword(rtlpriv, 0xc84, 0x18008c10);// RX_Tone_idx[9:0], RxK_Mask[29] + rtl_write_dword(rtlpriv, 0xc88, 0x02140119); + + rtl_write_dword(rtlpriv, 0xc8c, 0x28160d00); /*pDM_Odm->SupportInterface == 1*/ + + rtl_write_dword(rtlpriv, 0xcb8, 0x00100000);// cb8[20] N SI/PI ϥv iqk_dpk module + + cal_retry = 0; + while(1){ + // one shot + rtl_write_dword(rtlpriv, 0x980, 0xfa000000); + rtl_write_dword(rtlpriv, 0x980, 0xf8000000); + + mdelay(10); //Delay 10ms + rtl_write_dword(rtlpriv, 0xcb8, 0x00000000); + delay_count = 0; + while (1){ + iqk_ready = rtl_get_bbreg(hw, 0xd00, BIT(10)); + if ((~iqk_ready)||(delay_count>20)){ + break; + } + else{ + mdelay(1); + delay_count++; + } + } + + if (delay_count < 20){ // If 20ms No Result, then cal_retry++ + // ============RXIQK Check============== + rx_fail = rtl_get_bbreg(hw, 0xd00, BIT(11)); + if (rx_fail == 0){ + /* + ODM_Write4Byte(pDM_Odm, 0xcb8, 0x05000000); + reg1 = ODM_GetBBReg(pDM_Odm, 0xd00, 0xffffffff); + ODM_Write4Byte(pDM_Odm, 0xcb8, 0x06000000); + reg2 = ODM_GetBBReg(pDM_Odm, 0xd00, 0x0000001f); + DbgPrint("reg1 = %d, reg2 = %d", reg1, reg2); + Image_Power = (reg2<<32)+reg1; + DbgPrint("Before PW = %d\n", Image_Power); + ODM_Write4Byte(pDM_Odm, 0xcb8, 0x07000000); + reg1 = ODM_GetBBReg(pDM_Odm, 0xd00, 0xffffffff); + ODM_Write4Byte(pDM_Odm, 0xcb8, 0x08000000); + reg2 = ODM_GetBBReg(pDM_Odm, 0xd00, 0x0000001f); + Image_Power = (reg2<<32)+reg1; + DbgPrint("After PW = %d\n", Image_Power); + */ + + rtl_write_dword(rtlpriv, 0xcb8, 0x06000000); + rx_x0[cal] = rtl_get_bbreg(hw, 0xd00, 0x07ff0000)<<21; + rtl_write_dword(rtlpriv, 0xcb8, 0x08000000); + rx_y0[cal] = rtl_get_bbreg(hw, 0xd00, 0x07ff0000)<<21; + rx0iqkok = true; + break; + } + else{ + rtl_set_bbreg(hw, 0xc10, 0x000003ff, 0x200>>1); + rtl_set_bbreg(hw, 0xc10, 0x03ff0000, 0x0>>1); + rx0iqkok = false; + cal_retry++; + if (cal_retry == 10) + break; + + } + } + else{ + rx0iqkok = false; + cal_retry++; + if (cal_retry == 10) + break; + } + } + } + + if (tx0iqkok) + tx_average++; + if (rx0iqkok) + rx_average++; + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x0); // [31] = 0 --> Page C + rtl_set_rfreg(hw, path, 0x65, RFREG_OFFSET_MASK, temp_reg65); + } + break; + default: + break; + } + cal++; + } + + // FillIQK Result + switch (path){ + case RF90_PATH_A: + { + RT_TRACE(COMP_IQK, DBG_LOUD, ("========Path_A =======\n")); + if (tx_average == 0) + break; + + for (i = 0; i < tx_average; i++){ + RT_TRACE(COMP_IQK, DBG_LOUD, (" TX_X0_RXK[%d] = %x ;; TX_Y0_RXK[%d] = %x\n", i, (tx_x0_rxk[i])>>21&0x000007ff, i, (tx_y0_rxk[i])>>21&0x000007ff)); + RT_TRACE(COMP_IQK, DBG_LOUD, ("TX_X0[%d] = %x ;; TX_Y0[%d] = %x\n", i, (tx_x0[i])>>21&0x000007ff, i, (tx_y0[i])>>21&0x000007ff)); + } + for (i = 0; i < tx_average; i++){ + for (ii = i+1; ii >21) - (tx_x0[ii]>>21); + if (dx < 3 && dx > -3){ + dy = (tx_y0[i]>>21) - (tx_y0[ii]>>21); + if (dy < 3 && dy > -3){ + tx_x = ((tx_x0[i]>>21) + (tx_x0[ii]>>21))/2; + tx_y = ((tx_y0[i]>>21) + (tx_y0[ii]>>21))/2; + tx_finish = 1; + break; + } + } + } + if (tx_finish == 1) + break; + } + + if (tx_finish == 1){ + _rtl8821ae_iqk_tx_fill_iqc(hw, path, tx_x, tx_y); // ? + } + else{ + _rtl8821ae_iqk_tx_fill_iqc(hw, path, 0x200, 0x0); + } + + if (rx_average == 0) + break; + + for (i = 0; i < rx_average; i++){ + RT_TRACE(COMP_IQK, DBG_LOUD, ("RX_X0[%d] = %x ;; RX_Y0[%d] = %x\n", i, (rx_x0[i])>>21&0x000007ff, i, (rx_y0[i])>>21&0x000007ff)); + } + for (i = 0; i < rx_average; i++){ + for (ii = i+1; ii >21) - (rx_x0[ii]>>21); + if (dx < 4 && dx > -4){ + dy = (rx_y0[i]>>21) - (rx_y0[ii]>>21); + if (dy < 4 && dy > -4){ + rx_x = ((rx_x0[i]>>21) + (rx_x0[ii]>>21))/2; + rx_y = ((rx_y0[i]>>21) + (rx_y0[ii]>>21))/2; + rx_finish = 1; + break; + } + } + } + if (rx_finish == 1) + break; + } + + if (rx_finish == 1){ + _rtl8821ae_iqk_rx_fill_iqc(hw, path, rx_x, rx_y); + } + else{ + _rtl8821ae_iqk_rx_fill_iqc(hw, path, 0x200, 0x0); + } + } + break; + default: + break; + } +} + +void _rtl8821ae_iqk_restore_rf( + struct ieee80211_hw *hw, + enum radio_path path, + u32* backup_rf_reg, + u32* rf_backup, + u32 rf_reg_num + ) +{ + u32 i; + struct rtl_priv* rtlpriv = rtl_priv(hw); + + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x0); // [31] = 0 --> Page C + for (i = 0; i < RF_REG_NUM; i++) + rtl_set_rfreg(hw, path, backup_rf_reg[i], RFREG_OFFSET_MASK, rf_backup[i]); + + switch(path){ + case RF90_PATH_A: + { + RT_TRACE(COMP_IQK, DBG_LOUD, ("RestoreRF Path A Success!!!!\n")); + } + break; + default: + break; + } +} + +void _rtl8821ae_iqk_restore_afe( + struct ieee80211_hw *hw, + u32* afe_backup, + u32* backup_afe_reg, + u32 afe_num + ) +{ + u32 i; + struct rtl_priv* rtlpriv = rtl_priv(hw); + + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x0); // [31] = 0 --> Page C + //Reload AFE Parameters + for (i = 0; i < afe_num; i++){ + rtl_write_dword(rtlpriv, backup_afe_reg[i], afe_backup[i]); + } + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x1); // [31] = 1 --> Page C1 + rtl_write_dword(rtlpriv, 0xc80, 0x0); + rtl_write_dword(rtlpriv, 0xc84, 0x0); + rtl_write_dword(rtlpriv, 0xc88, 0x0); + rtl_write_dword(rtlpriv, 0xc8c, 0x3c000000); + rtl_write_dword(rtlpriv, 0xc90, 0x00000080); + rtl_write_dword(rtlpriv, 0xc94, 0x00000000); + rtl_write_dword(rtlpriv, 0xcc4, 0x20040000); + rtl_write_dword(rtlpriv, 0xcc8, 0x20000000); + rtl_write_dword(rtlpriv, 0xcb8, 0x0); + RT_TRACE(COMP_IQK, DBG_LOUD, ("RestoreAFE Success!!!!\n")); +} + +void _rtl8821ae_iqk_restore_macbb( + struct ieee80211_hw *hw, + u32* macbb_backup, + u32* backup_macbb_reg, + u32 macbb_num + ) +{ + u32 i; + struct rtl_priv* rtlpriv = rtl_priv(hw); + + rtl_set_bbreg(hw, 0x82c, BIT(31), 0x0); // [31] = 0 --> Page C + //Reload MacBB Parameters + for (i = 0; i < macbb_num; i++){ + rtl_write_dword(rtlpriv, backup_macbb_reg[i], macbb_backup[i]); + } + RT_TRACE(COMP_IQK, DBG_LOUD, ("RestoreMacBB Success!!!!\n")); +} + + +#undef MACBB_REG_NUM +#undef AFE_REG_NUM +#undef RF_REG_NUM + +#define MACBB_REG_NUM 11 +#define AFE_REG_NUM 12 +#define RF_REG_NUM 3 + +static void _rtl8821ae_phy_iq_calibrate(struct ieee80211_hw *hw) +{ + u32 macbb_backup[MACBB_REG_NUM]; + u32 afe_backup[AFE_REG_NUM]; + u32 rfa_backup[RF_REG_NUM]; + u32 rfb_backup[RF_REG_NUM]; + u32 backup_macbb_reg[MACBB_REG_NUM] = {0xb00, 0x520, 0x550, 0x808, 0x90c, 0xc00, 0xc50, + 0xe00, 0xe50, 0x838, 0x82c}; + u32 backup_afe_reg[AFE_REG_NUM] = {0xc5c, 0xc60, 0xc64, 0xc68, 0xc6c, 0xc70, 0xc74, + 0xc78, 0xc7c, 0xc80, 0xc84, 0xcb8}; + u32 backup_rf_reg[RF_REG_NUM] = {0x65, 0x8f, 0x0}; + + _rtl8821ae_iqk_backup_macbb(hw, macbb_backup, backup_macbb_reg, MACBB_REG_NUM); + _rtl8821ae_iqk_backup_afe(hw, afe_backup, backup_afe_reg, AFE_REG_NUM); + _rtl8821ae_iqk_backup_rf(hw, rfa_backup, rfb_backup, backup_rf_reg, RF_REG_NUM); + + _rtl8821ae_iqk_configure_mac(hw); + _rtl8821ae_iqk_tx(hw, RF90_PATH_A); + _rtl8821ae_iqk_restore_rf(hw, RF90_PATH_A, backup_rf_reg, rfa_backup, RF_REG_NUM); + + _rtl8821ae_iqk_restore_afe(hw, afe_backup, backup_afe_reg, AFE_REG_NUM); + _rtl8821ae_iqk_restore_macbb(hw, macbb_backup, backup_macbb_reg, MACBB_REG_NUM); +} + +static void _rtl8821ae_phy_lc_calibrate(struct ieee80211_hw *hw, bool is2t) +{ + u8 tmpreg; + u32 rf_a_mode = 0, rf_b_mode = 0, lc_cal; + struct rtl_priv *rtlpriv = rtl_priv(hw); + + tmpreg = rtl_read_byte(rtlpriv, 0xd03); + + if ((tmpreg & 0x70) != 0) + rtl_write_byte(rtlpriv, 0xd03, tmpreg & 0x8F); + else + rtl_write_byte(rtlpriv, REG_TXPAUSE, 0xFF); + + if ((tmpreg & 0x70) != 0) { + rf_a_mode = rtl_get_rfreg(hw, RF90_PATH_A, 0x00, MASK12BITS); + + if (is2t) + rf_b_mode = rtl_get_rfreg(hw, RF90_PATH_B, 0x00, + MASK12BITS); + + rtl_set_rfreg(hw, RF90_PATH_A, 0x00, MASK12BITS, + (rf_a_mode & 0x8FFFF) | 0x10000); + + if (is2t) + rtl_set_rfreg(hw, RF90_PATH_B, 0x00, MASK12BITS, + (rf_b_mode & 0x8FFFF) | 0x10000); + } + lc_cal = rtl_get_rfreg(hw, RF90_PATH_A, 0x18, MASK12BITS); + + rtl_set_rfreg(hw, RF90_PATH_A, 0xb0, RFREG_OFFSET_MASK, 0xdfbe0); + /* rtl_set_rfreg(hw, RF90_PATH_A, 0x18, MASK12BITS, lc_cal | 0x08000); */ + rtl_set_rfreg(hw, RF90_PATH_A, 0x18, MASK12BITS, 0x8c0a); + + mdelay(100); + + rtl_set_rfreg(hw, RF90_PATH_A, 0xb0, RFREG_OFFSET_MASK, 0xdffe0); + + if ((tmpreg & 0x70) != 0) { + rtl_write_byte(rtlpriv, 0xd03, tmpreg); + rtl_set_rfreg(hw, RF90_PATH_A, 0x00, MASK12BITS, rf_a_mode); + + if (is2t) + rtl_set_rfreg(hw, RF90_PATH_B, 0x00, MASK12BITS, rf_b_mode); + } else { + rtl_write_byte(rtlpriv, REG_TXPAUSE, 0x00); + } +RT_TRACE(COMP_INIT,DBG_LOUD,("\n")); + +} + +static void _rtl8821ae_phy_set_rfpath_switch(struct ieee80211_hw *hw, bool main) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + //struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + //struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + RT_TRACE(COMP_INIT,DBG_LOUD,("\n")); + + if (main) + rtl_set_bbreg(hw, RA_RFE_PINMUX + 4, BIT(29) | BIT(28), 0x1); + else + rtl_set_bbreg(hw, RA_RFE_PINMUX + 4, BIT(29) | BIT(28), 0x2); +} + +#undef IQK_ADDA_REG_NUM +#undef IQK_DELAY_TIME + +void rtl8812ae_phy_iq_calibrate(struct ieee80211_hw *hw, bool b_recovery) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + + if (!rtlphy->b_iqk_in_progress) + { + spin_lock(&rtlpriv->locks.iqk_lock); + rtlphy->b_iqk_in_progress = true; + spin_unlock(&rtlpriv->locks.iqk_lock); + + _rtl8812ae_phy_iq_calibrate(hw, rtlphy->current_channel); + + spin_lock(&rtlpriv->locks.iqk_lock); + rtlphy->b_iqk_in_progress = false; + spin_unlock(&rtlpriv->locks.iqk_lock); + } +} + +void rtl8812ae_reset_iqk_result(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + u8 i; + + RT_TRACE(COMP_IQK, DBG_LOUD, + ("rtl8812ae_dm_reset_iqk_result:: settings regs %d default regs %d\n", + (int)(sizeof(rtlphy->iqk_matrix_regsetting) / + sizeof(struct iqk_matrix_regs)), + IQK_MATRIX_SETTINGS_NUM)); + + for(i = 0; i < IQK_MATRIX_SETTINGS_NUM; i++) { + { + rtlphy->iqk_matrix_regsetting[i].value[0][0] = + rtlphy->iqk_matrix_regsetting[i].value[0][2] = + rtlphy->iqk_matrix_regsetting[i].value[0][4] = + rtlphy->iqk_matrix_regsetting[i].value[0][6] = 0x100; + + rtlphy->iqk_matrix_regsetting[i].value[0][1] = + rtlphy->iqk_matrix_regsetting[i].value[0][3] = + rtlphy->iqk_matrix_regsetting[i].value[0][5] = + rtlphy->iqk_matrix_regsetting[i].value[0][7] = 0x0; + + rtlphy->iqk_matrix_regsetting[i].b_iqk_done = false; + + } + } +} + +void rtl8812ae_do_iqk(struct ieee80211_hw *hw,u8 delta_thermal_index, + u8 thermal_value, u8 threshold) +{ + struct rtl_dm *rtldm = rtl_dm(rtl_priv(hw)); + + rtl8812ae_reset_iqk_result(hw); + + rtldm->thermalvalue_iqk= thermal_value; + rtl8812ae_phy_iq_calibrate(hw, false); +} + +void rtl8821ae_phy_iq_calibrate(struct ieee80211_hw *hw, bool b_recovery) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + + if (!rtlphy->b_iqk_in_progress) + { + spin_lock(&rtlpriv->locks.iqk_lock); + rtlphy->b_iqk_in_progress = true; + spin_unlock(&rtlpriv->locks.iqk_lock); + + _rtl8821ae_phy_iq_calibrate(hw); + + spin_lock(&rtlpriv->locks.iqk_lock); + rtlphy->b_iqk_in_progress = false; + spin_unlock(&rtlpriv->locks.iqk_lock); + } +} + +void rtl8821ae_reset_iqk_result(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + u8 i; + + RT_TRACE(COMP_IQK, DBG_LOUD, + ("rtl8812ae_dm_reset_iqk_result:: settings regs %d default regs %d\n", + (int)(sizeof(rtlphy->iqk_matrix_regsetting) / + sizeof(struct iqk_matrix_regs)), + IQK_MATRIX_SETTINGS_NUM)); + + for(i = 0; i < IQK_MATRIX_SETTINGS_NUM; i++) { + { + rtlphy->iqk_matrix_regsetting[i].value[0][0] = + rtlphy->iqk_matrix_regsetting[i].value[0][2] = + rtlphy->iqk_matrix_regsetting[i].value[0][4] = + rtlphy->iqk_matrix_regsetting[i].value[0][6] = 0x100; + + rtlphy->iqk_matrix_regsetting[i].value[0][1] = + rtlphy->iqk_matrix_regsetting[i].value[0][3] = + rtlphy->iqk_matrix_regsetting[i].value[0][5] = + rtlphy->iqk_matrix_regsetting[i].value[0][7] = 0x0; + + rtlphy->iqk_matrix_regsetting[i].b_iqk_done = false; + + } + } +} + +void rtl8821ae_do_iqk(struct ieee80211_hw *hw,u8 delta_thermal_index, + u8 thermal_value, u8 threshold) +{ + struct rtl_dm *rtldm = rtl_dm(rtl_priv(hw)); + + rtl8821ae_reset_iqk_result(hw); + + rtldm->thermalvalue_iqk= thermal_value; + rtl8821ae_phy_iq_calibrate(hw, false); +} + +void rtl8821ae_phy_lc_calibrate(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct rtl_hal *rtlhal = &(rtlpriv->rtlhal); + u32 timeout = 2000, timecount = 0; + + + while (rtlpriv->mac80211.act_scanning && timecount < timeout) { + udelay(50); + timecount += 50; + } + + rtlphy->lck_inprogress = true; + RTPRINT(rtlpriv, FINIT, INIT_IQK, + ("LCK:Start!!! currentband %x delay %d ms\n", + rtlhal->current_bandtype, timecount)); + + _rtl8821ae_phy_lc_calibrate(hw, false); + + rtlphy->lck_inprogress = false; +} + +void rtl8821ae_phy_ap_calibrate(struct ieee80211_hw *hw, char delta) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + + if (rtlphy->b_apk_done) + return; + + return; +} + +void rtl8821ae_phy_set_rfpath_switch(struct ieee80211_hw *hw, bool bmain) +{ + _rtl8821ae_phy_set_rfpath_switch(hw, bmain); +} + +bool rtl8821ae_phy_set_io_cmd(struct ieee80211_hw *hw, enum io_type iotype) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + bool b_postprocessing = false; + + RT_TRACE(COMP_CMD, DBG_TRACE, + ("-->IO Cmd(%#x), set_io_inprogress(%d)\n", + iotype, rtlphy->set_io_inprogress)); + do { + switch (iotype) { + case IO_CMD_RESUME_DM_BY_SCAN: + RT_TRACE(COMP_CMD, DBG_TRACE, + ("[IO CMD] Resume DM after scan.\n")); + b_postprocessing = true; + break; + case IO_CMD_PAUSE_BAND0_DM_BY_SCAN: + case IO_CMD_PAUSE_BAND1_DM_BY_SCAN: + RT_TRACE(COMP_CMD, DBG_TRACE, + ("[IO CMD] Pause DM before scan.\n")); + b_postprocessing = true; + break; + default: + RT_TRACE(COMP_ERR, DBG_EMERG, + ("switch case not process \n")); + break; + } + } while (false); + if (b_postprocessing && !rtlphy->set_io_inprogress) { + rtlphy->set_io_inprogress = true; + rtlphy->current_io_type = iotype; + } else { + return false; + } + rtl8821ae_phy_set_io(hw); + RT_TRACE(COMP_CMD, DBG_TRACE, ("IO Type(%#x)\n", iotype)); + return true; +} + +static void rtl8821ae_phy_set_io(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + + RT_TRACE(COMP_CMD, DBG_TRACE, + ("--->Cmd(%#x), set_io_inprogress(%d)\n", + rtlphy->current_io_type, rtlphy->set_io_inprogress)); + switch (rtlphy->current_io_type) { + case IO_CMD_RESUME_DM_BY_SCAN: + if (rtlpriv->mac80211.opmode== NL80211_IFTYPE_ADHOC) + _rtl8821ae_resume_tx_beacon(hw); + rtl8821ae_dm_write_dig(hw, rtlphy->initgain_backup.xaagccore1); + rtl8821ae_dm_write_cck_cca_thres(hw, rtlphy->initgain_backup.cca); + break; + case IO_CMD_PAUSE_BAND0_DM_BY_SCAN: + if (rtlpriv->mac80211.opmode== NL80211_IFTYPE_ADHOC) + _rtl8821ae_stop_tx_beacon(hw); + rtlphy->initgain_backup.xaagccore1 = dm_digtable.cur_igvalue; + rtl8821ae_dm_write_dig(hw, 0x17); + rtlphy->initgain_backup.cca = dm_digtable.cur_cck_cca_thres; + rtl8821ae_dm_write_cck_cca_thres(hw, 0x40); + break; + case IO_CMD_PAUSE_BAND1_DM_BY_SCAN: + break; + default: + RT_TRACE(COMP_ERR, DBG_EMERG, + ("switch case not process \n")); + break; + } + rtlphy->set_io_inprogress = false; + RT_TRACE(COMP_CMD, DBG_TRACE, + ("(%#x)\n", rtlphy->current_io_type)); +} + +static void rtl8821ae_phy_set_rf_on(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + rtl_write_byte(rtlpriv, REG_SPS0_CTRL, 0x2b); + rtl_write_byte(rtlpriv, REG_SYS_FUNC_EN, 0xE3); + rtl_write_byte(rtlpriv, REG_SYS_FUNC_EN, 0xE2); + rtl_write_byte(rtlpriv, REG_SYS_FUNC_EN, 0xE3); + rtl_write_byte(rtlpriv, REG_TXPAUSE, 0x00); +} + +#if 0 +static void _rtl8821ae_phy_set_rf_sleep(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + rtl_write_byte(rtlpriv, REG_TXPAUSE, 0xFF); + rtl_set_rfreg(hw, RF90_PATH_A, 0x00, RFREG_OFFSET_MASK, 0x00); + /*rtl_write_byte(rtlpriv, REG_APSD_CTRL, 0x40); + u4b_tmp = rtl_get_rfreg(hw, RF90_PATH_A, 0, RFREG_OFFSET_MASK); + while (u4b_tmp != 0 && delay > 0) { + rtl_write_byte(rtlpriv, REG_APSD_CTRL, 0x0); + rtl_set_rfreg(hw, RF90_PATH_A, 0x00, RFREG_OFFSET_MASK, 0x00); + rtl_write_byte(rtlpriv, REG_APSD_CTRL, 0x40); + u4b_tmp = rtl_get_rfreg(hw, RF90_PATH_A, 0, RFREG_OFFSET_MASK); + delay--; + } + if (delay == 0) { + rtl_write_byte(rtlpriv, REG_APSD_CTRL, 0x00); + rtl_write_byte(rtlpriv, REG_SYS_FUNC_EN, 0xE2); + rtl_write_byte(rtlpriv, REG_SYS_FUNC_EN, 0xE3); + rtl_write_byte(rtlpriv, REG_TXPAUSE, 0x00); + RT_TRACE(COMP_POWER, DBG_TRACE, + ("Switch RF timeout !!!.\n")); + return; + }*/ + rtl_write_byte(rtlpriv, REG_SYS_FUNC_EN, 0xE2); + rtl_write_byte(rtlpriv, REG_SPS0_CTRL, 0x22); +} +#endif + +static bool _rtl8821ae_phy_set_rf_power_state(struct ieee80211_hw *hw, + enum rf_pwrstate rfpwr_state) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + bool bresult = true; + u8 i, queue_id; + struct rtl8192_tx_ring *ring = NULL; + + switch (rfpwr_state) { + case ERFON:{ + if ((ppsc->rfpwr_state == ERFOFF) && + RT_IN_PS_LEVEL(ppsc, RT_RF_OFF_LEVL_HALT_NIC)) { + bool rtstatus = false; + u32 InitializeCount = 0; + do { + InitializeCount++; + RT_TRACE(COMP_RF, DBG_DMESG, + ("IPS Set eRf nic enable\n")); + rtstatus = rtl_ps_enable_nic(hw); + } while ((rtstatus != true) + && (InitializeCount < 10)); + RT_CLEAR_PS_LEVEL(ppsc, + RT_RF_OFF_LEVL_HALT_NIC); + } else { + RT_TRACE(COMP_RF, DBG_DMESG, + ("Set ERFON sleeped:%d ms\n", + jiffies_to_msecs(jiffies - + ppsc-> + last_sleep_jiffies))); + ppsc->last_awake_jiffies = jiffies; + rtl8821ae_phy_set_rf_on(hw); + } + if (mac->link_state == MAC80211_LINKED) { + rtlpriv->cfg->ops->led_control(hw, + LED_CTL_LINK); + } else { + rtlpriv->cfg->ops->led_control(hw, + LED_CTL_NO_LINK); + } + break; + } + case ERFOFF:{ + for (queue_id = 0, i = 0; + queue_id < RTL_PCI_MAX_TX_QUEUE_COUNT;) { + ring = &pcipriv->dev.tx_ring[queue_id]; + if (skb_queue_len(&ring->queue) == 0) { + queue_id++; + continue; + } else { + RT_TRACE(COMP_ERR, DBG_WARNING, + ("eRf Off/Sleep: %d times " + "TcbBusyQueue[%d] =%d before " + "doze!\n", (i + 1), queue_id, + skb_queue_len(&ring->queue))); + + udelay(10); + i++; + } + if (i >= MAX_DOZE_WAITING_TIMES_9x) { + RT_TRACE(COMP_ERR, DBG_WARNING, + ("\n ERFSLEEP: %d times " + "TcbBusyQueue[%d] = %d !\n", + MAX_DOZE_WAITING_TIMES_9x, + queue_id, + skb_queue_len(&ring->queue))); + break; + } + } + + if (ppsc->reg_rfps_level & RT_RF_OFF_LEVL_HALT_NIC) { + RT_TRACE(COMP_RF, DBG_DMESG, + ("IPS Set eRf nic disable\n")); + rtl_ps_disable_nic(hw); + RT_SET_PS_LEVEL(ppsc, RT_RF_OFF_LEVL_HALT_NIC); + } else { + if (ppsc->rfoff_reason == RF_CHANGE_BY_IPS) { + rtlpriv->cfg->ops->led_control(hw, + LED_CTL_NO_LINK); + } else { + rtlpriv->cfg->ops->led_control(hw, + LED_CTL_POWER_OFF); + } + } + break; + } + /*case ERFSLEEP:{ + if (ppsc->rfpwr_state == ERFOFF) + break; + for (queue_id = 0, i = 0; + queue_id < RTL_PCI_MAX_TX_QUEUE_COUNT;) { + ring = &pcipriv->dev.tx_ring[queue_id]; + if (skb_queue_len(&ring->queue) == 0) { + queue_id++; + continue; + } else { + RT_TRACE(COMP_ERR, DBG_WARNING, + ("eRf Off/Sleep: %d times " + "TcbBusyQueue[%d] =%d before " + "doze!\n", (i + 1), queue_id, + skb_queue_len(&ring->queue))); + + udelay(10); + i++; + } + if (i >= MAX_DOZE_WAITING_TIMES_9x) { + RT_TRACE(COMP_ERR, DBG_WARNING, + ("\n ERFSLEEP: %d times " + "TcbBusyQueue[%d] = %d !\n", + MAX_DOZE_WAITING_TIMES_9x, + queue_id, + skb_queue_len(&ring->queue))); + break; + } + } + RT_TRACE(COMP_RF, DBG_DMESG, + ("Set ERFSLEEP awaked:%d ms\n", + jiffies_to_msecs(jiffies - + ppsc->last_awake_jiffies))); + ppsc->last_sleep_jiffies = jiffies; + _rtl8821ae_phy_set_rf_sleep(hw); + break; + }*/ + default: + RT_TRACE(COMP_ERR, DBG_EMERG, + ("switch case not process \n")); + bresult = false; + break; + } + if (bresult) + ppsc->rfpwr_state = rfpwr_state; + return bresult; +} + +bool rtl8821ae_phy_set_rf_power_state(struct ieee80211_hw *hw, + enum rf_pwrstate rfpwr_state) +{ + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + + bool bresult = false; + + if (rfpwr_state == ppsc->rfpwr_state) + return bresult; + bresult = _rtl8821ae_phy_set_rf_power_state(hw, rfpwr_state); + return bresult; +} --- linux-3.13.0.orig/drivers/staging/rtl8821ae/rtl8821ae/phy.h +++ linux-3.13.0/drivers/staging/rtl8821ae/rtl8821ae/phy.h @@ -0,0 +1,258 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#ifndef __RTL8821AE_PHY_H__ +#define __RTL8821AE_PHY_H__ + +/*It must always set to 4, otherwise read efuse table secquence will be wrong.*/ +#define MAX_TX_COUNT 4 +#define TX_1S 0 +#define TX_2S 1 +#define TX_3S 2 +#define TX_4S 3 + +#define MAX_POWER_INDEX 0x3F + +#define MAX_PRECMD_CNT 16 +#define MAX_RFDEPENDCMD_CNT 16 +#define MAX_POSTCMD_CNT 16 + +#define MAX_DOZE_WAITING_TIMES_9x 64 + +#define RT_CANNOT_IO(hw) false +#define HIGHPOWER_RADIOA_ARRAYLEN 22 + +#define IQK_ADDA_REG_NUM 16 +#define IQK_BB_REG_NUM 9 +#define MAX_TOLERANCE 5 +#define IQK_DELAY_TIME 10 +#define index_mapping_NUM 15 + +#define APK_BB_REG_NUM 5 +#define APK_AFE_REG_NUM 16 +#define APK_CURVE_REG_NUM 4 +#define PATH_NUM 2 + +#define LOOP_LIMIT 5 +#define MAX_STALL_TIME 50 +#define AntennaDiversityValue 0x80 +#define MAX_TXPWR_IDX_NMODE_92S 63 +#define Reset_Cnt_Limit 3 + +#define IQK_ADDA_REG_NUM 16 +#define IQK_MAC_REG_NUM 4 + +#define RF6052_MAX_PATH 2 + +#define CT_OFFSET_MAC_ADDR 0X16 + +#define CT_OFFSET_CCK_TX_PWR_IDX 0x5A +#define CT_OFFSET_HT401S_TX_PWR_IDX 0x60 +#define CT_OFFSET_HT402S_TX_PWR_IDX_DIFF 0x66 +#define CT_OFFSET_HT20_TX_PWR_IDX_DIFF 0x69 +#define CT_OFFSET_OFDM_TX_PWR_IDX_DIFF 0x6C + +#define CT_OFFSET_HT40_MAX_PWR_OFFSET 0x6F +#define CT_OFFSET_HT20_MAX_PWR_OFFSET 0x72 + +#define CT_OFFSET_CHANNEL_PLAH 0x75 +#define CT_OFFSET_THERMAL_METER 0x78 +#define CT_OFFSET_RF_OPTION 0x79 +#define CT_OFFSET_VERSION 0x7E +#define CT_OFFSET_CUSTOMER_ID 0x7F + +#define RTL8821AE_MAX_PATH_NUM 2 + +#define TARGET_CHNL_NUM_2G_5G_8812 59 + +enum swchnlcmd_id { + CMDID_END, + CMDID_SET_TXPOWEROWER_LEVEL, + CMDID_BBREGWRITE10, + CMDID_WRITEPORT_ULONG, + CMDID_WRITEPORT_USHORT, + CMDID_WRITEPORT_UCHAR, + CMDID_RF_WRITEREG, +}; + +struct swchnlcmd { + enum swchnlcmd_id cmdid; + u32 para1; + u32 para2; + u32 msdelay; +}; + +enum hw90_block_e { + HW90_BLOCK_MAC = 0, + HW90_BLOCK_PHY0 = 1, + HW90_BLOCK_PHY1 = 2, + HW90_BLOCK_RF = 3, + HW90_BLOCK_MAXIMUM = 4, +}; + +enum baseband_config_type { + BASEBAND_CONFIG_PHY_REG = 0, + BASEBAND_CONFIG_AGC_TAB = 1, +}; + +enum ra_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, +}; + +enum antenna_path { + ANTENNA_NONE, + 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 +}; + +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; +}; + +struct r_antenna_select_cck { + u8 r_cckrx_enable_2:2; + u8 r_cckrx_enable:2; + u8 r_ccktx_enable:4; +}; + + +struct efuse_contents { + u8 mac_addr[ETH_ALEN]; + u8 cck_tx_power_idx[6]; + u8 ht40_1s_tx_power_idx[6]; + u8 ht40_2s_tx_power_idx_diff[3]; + u8 ht20_tx_power_idx_diff[3]; + u8 ofdm_tx_power_idx_diff[3]; + u8 ht40_max_power_offset[3]; + u8 ht20_max_power_offset[3]; + u8 channel_plan; + u8 thermal_meter; + u8 rf_option[5]; + u8 version; + u8 oem_id; + u8 regulatory; +}; + +struct tx_power_struct { + u8 cck[RTL8821AE_MAX_PATH_NUM][CHANNEL_MAX_NUMBER]; + u8 ht40_1s[RTL8821AE_MAX_PATH_NUM][CHANNEL_MAX_NUMBER]; + u8 ht40_2s[RTL8821AE_MAX_PATH_NUM][CHANNEL_MAX_NUMBER]; + u8 ht20_diff[RTL8821AE_MAX_PATH_NUM][CHANNEL_MAX_NUMBER]; + u8 legacy_ht_diff[RTL8821AE_MAX_PATH_NUM][CHANNEL_MAX_NUMBER]; + u8 legacy_ht_txpowerdiff; + u8 groupht20[RTL8821AE_MAX_PATH_NUM][CHANNEL_MAX_NUMBER]; + u8 groupht40[RTL8821AE_MAX_PATH_NUM][CHANNEL_MAX_NUMBER]; + u8 pwrgroup_cnt; + u32 mcs_original_offset[4][16]; +}; +enum _ANT_DIV_TYPE +{ + NO_ANTDIV = 0xFF, + CG_TRX_HW_ANTDIV = 0x01, + CGCS_RX_HW_ANTDIV = 0x02, + FIXED_HW_ANTDIV = 0x03, + CG_TRX_SMART_ANTDIV = 0x04, + CGCS_RX_SW_ANTDIV = 0x05, + +}; + +extern u32 rtl8821ae_phy_query_bb_reg(struct ieee80211_hw *hw, + u32 regaddr, u32 bitmask); +extern void rtl8821ae_phy_set_bb_reg(struct ieee80211_hw *hw, + u32 regaddr, u32 bitmask, u32 data); +extern u32 rtl8821ae_phy_query_rf_reg(struct ieee80211_hw *hw, + enum radio_path rfpath, u32 regaddr, + u32 bitmask); +extern void rtl8821ae_phy_set_rf_reg(struct ieee80211_hw *hw, + enum radio_path rfpath, u32 regaddr, + u32 bitmask, u32 data); +extern bool rtl8821ae_phy_mac_config(struct ieee80211_hw *hw); +extern bool rtl8821ae_phy_bb_config(struct ieee80211_hw *hw); +extern bool rtl8821ae_phy_rf_config(struct ieee80211_hw *hw); +extern void rtl8821ae_phy_switch_wirelessband(struct ieee80211_hw *hw, u8 band); +extern void rtl8821ae_phy_get_hw_reg_originalvalue(struct ieee80211_hw *hw); +extern void rtl8821ae_phy_get_txpower_level(struct ieee80211_hw *hw, + long *powerlevel); +extern void rtl8821ae_phy_set_txpower_level(struct ieee80211_hw *hw, u8 channel); +extern void rtl8821ae_phy_scan_operation_backup(struct ieee80211_hw *hw, + u8 operation); +extern void rtl8821ae_phy_set_bw_mode_callback(struct ieee80211_hw *hw); +extern void rtl8821ae_phy_set_bw_mode(struct ieee80211_hw *hw, + enum nl80211_channel_type ch_type); +extern void rtl8821ae_phy_sw_chnl_callback(struct ieee80211_hw *hw); +extern u8 rtl8821ae_phy_sw_chnl(struct ieee80211_hw *hw); +extern void rtl8821ae_phy_iq_calibrate(struct ieee80211_hw *hw, bool b_recovery); +extern void rtl8812ae_phy_iq_calibrate(struct ieee80211_hw *hw, bool b_recovery); +void rtl8821ae_phy_ap_calibrate(struct ieee80211_hw *hw, char delta); +void rtl8821ae_phy_lc_calibrate(struct ieee80211_hw *hw); +void rtl8821ae_phy_set_rfpath_switch(struct ieee80211_hw *hw, bool bmain); +bool rtl8812ae_phy_config_rf_with_headerfile(struct ieee80211_hw *hw, + enum radio_path rfpath); +bool rtl8821ae_phy_config_rf_with_headerfile(struct ieee80211_hw *hw, + enum radio_path rfpath); +bool rtl8821ae_phy_set_io_cmd(struct ieee80211_hw *hw, enum io_type iotype); +extern bool rtl8821ae_phy_set_rf_power_state(struct ieee80211_hw *hw, + enum rf_pwrstate rfpwr_state); +u8 _rtl8812ae_get_right_chnl_place_for_iqk(u8 chnl); +void rtl8821ae_phy_set_txpower_level_by_path(struct ieee80211_hw *hw, u8 channel, u8 path); +void rtl8812ae_do_iqk(struct ieee80211_hw *hw,u8 delta_thermal_index, + u8 thermal_value, u8 threshold); +void rtl8821ae_do_iqk(struct ieee80211_hw *hw,u8 delta_thermal_index, + u8 thermal_value, u8 threshold); +void rtl8821ae_reset_iqk_result(struct ieee80211_hw *hw); + + +#endif --- linux-3.13.0.orig/drivers/staging/rtl8821ae/rtl8821ae/pwrseq.c +++ linux-3.13.0/drivers/staging/rtl8821ae/rtl8821ae/pwrseq.c @@ -0,0 +1,199 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#include "pwrseqcmd.h" +#include "pwrseq.h" + +/* + drivers should parse below arrays and do the corresponding actions +*/ +//3 Power on Array +struct wlan_pwr_cfg rtl8812_power_on_flow[RTL8812_TRANS_CARDEMU_TO_ACT_STEPS+RTL8812_TRANS_END_STEPS]= +{ + RTL8812_TRANS_CARDEMU_TO_ACT + RTL8812_TRANS_END +}; + +//3Radio off GPIO Array +struct wlan_pwr_cfg rtl8812_radio_off_flow[RTL8812_TRANS_ACT_TO_CARDEMU_STEPS+RTL8812_TRANS_END_STEPS]= +{ + RTL8812_TRANS_ACT_TO_CARDEMU + RTL8812_TRANS_END +}; + +//3Card Disable Array +struct wlan_pwr_cfg rtl8812_card_disable_flow[ RTL8812_TRANS_ACT_TO_CARDEMU_STEPS + + RTL8812_TRANS_CARDEMU_TO_PDN_STEPS + + RTL8812_TRANS_END_STEPS ] = +{ + RTL8812_TRANS_ACT_TO_CARDEMU + RTL8812_TRANS_CARDEMU_TO_CARDDIS + RTL8812_TRANS_END +}; + +//3 Card Enable Array +struct wlan_pwr_cfg rtl8812_card_enable_flow[ RTL8812_TRANS_ACT_TO_CARDEMU_STEPS + + RTL8812_TRANS_CARDEMU_TO_PDN_STEPS + + RTL8812_TRANS_END_STEPS ] = +{ + RTL8812_TRANS_CARDDIS_TO_CARDEMU + RTL8812_TRANS_CARDEMU_TO_ACT + RTL8812_TRANS_END +}; + +//3Suspend Array +struct wlan_pwr_cfg rtl8812_suspend_flow[RTL8812_TRANS_ACT_TO_CARDEMU_STEPS+RTL8812_TRANS_CARDEMU_TO_SUS_STEPS+RTL8812_TRANS_END_STEPS]= +{ + RTL8812_TRANS_ACT_TO_CARDEMU + RTL8812_TRANS_CARDEMU_TO_SUS + RTL8812_TRANS_END +}; + +//3 Resume Array +struct wlan_pwr_cfg rtl8812_resume_flow[RTL8812_TRANS_ACT_TO_CARDEMU_STEPS+RTL8812_TRANS_CARDEMU_TO_SUS_STEPS+RTL8812_TRANS_END_STEPS]= +{ + RTL8812_TRANS_SUS_TO_CARDEMU + RTL8812_TRANS_CARDEMU_TO_ACT + RTL8812_TRANS_END +}; + + + +//3HWPDN Array +struct wlan_pwr_cfg rtl8812_hwpdn_flow[RTL8812_TRANS_ACT_TO_CARDEMU_STEPS+RTL8812_TRANS_CARDEMU_TO_PDN_STEPS+RTL8812_TRANS_END_STEPS]= +{ + RTL8812_TRANS_ACT_TO_CARDEMU + RTL8812_TRANS_CARDEMU_TO_PDN + RTL8812_TRANS_END +}; + +//3 Enter LPS +struct wlan_pwr_cfg rtl8812_enter_lps_flow[RTL8812_TRANS_ACT_TO_LPS_STEPS+RTL8812_TRANS_END_STEPS]= +{ + //FW behavior + RTL8812_TRANS_ACT_TO_LPS + RTL8812_TRANS_END +}; + +//3 Leave LPS +struct wlan_pwr_cfg rtl8812_leave_lps_flow[RTL8812_TRANS_LPS_TO_ACT_STEPS+RTL8812_TRANS_END_STEPS]= +{ + //FW behavior + RTL8812_TRANS_LPS_TO_ACT + RTL8812_TRANS_END +}; + + +/* + drivers should parse below arrays and do the corresponding actions +*/ +/*3 Power on Array*/ +struct wlan_pwr_cfg rtl8821A_power_on_flow[RTL8821A_TRANS_CARDEMU_TO_ACT_STEPS + + RTL8821A_TRANS_END_STEPS] = +{ + RTL8821A_TRANS_CARDEMU_TO_ACT + RTL8821A_TRANS_END +}; + +/*3Radio off GPIO Array */ +struct wlan_pwr_cfg rtl8821A_radio_off_flow[RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS + + RTL8821A_TRANS_END_STEPS] = +{ + RTL8821A_TRANS_ACT_TO_CARDEMU + RTL8821A_TRANS_END +}; + +/*3Card Disable Array*/ +struct wlan_pwr_cfg rtl8821A_card_disable_flow[RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS + + RTL8821A_TRANS_CARDEMU_TO_PDN_STEPS + + RTL8821A_TRANS_END_STEPS] = +{ + RTL8821A_TRANS_ACT_TO_CARDEMU + RTL8821A_TRANS_CARDEMU_TO_CARDDIS + RTL8821A_TRANS_END +}; + +/*3 Card Enable Array*/ +struct wlan_pwr_cfg rtl8821A_card_enable_flow[RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS + + RTL8821A_TRANS_CARDEMU_TO_ACT_STEPS /*RTL8821A_TRANS_CARDEMU_TO_PDN_STEPS*/ + + RTL8821A_TRANS_END_STEPS] = +{ + RTL8821A_TRANS_CARDDIS_TO_CARDEMU + RTL8821A_TRANS_CARDEMU_TO_ACT + RTL8821A_TRANS_END +}; + +/*3Suspend Array*/ +struct wlan_pwr_cfg rtl8821A_suspend_flow[RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS + + RTL8821A_TRANS_CARDEMU_TO_SUS_STEPS + + RTL8821A_TRANS_END_STEPS] = +{ + RTL8821A_TRANS_ACT_TO_CARDEMU + RTL8821A_TRANS_CARDEMU_TO_SUS + RTL8821A_TRANS_END +}; + +/*3 Resume Array*/ +struct wlan_pwr_cfg rtl8821A_resume_flow[RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS + + RTL8821A_TRANS_CARDEMU_TO_SUS_STEPS + + RTL8821A_TRANS_END_STEPS] = +{ + RTL8821A_TRANS_SUS_TO_CARDEMU + RTL8821A_TRANS_CARDEMU_TO_ACT + RTL8821A_TRANS_END +}; + +/*3HWPDN Array*/ +struct wlan_pwr_cfg rtl8821A_hwpdn_flow[RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS + + RTL8821A_TRANS_CARDEMU_TO_PDN_STEPS + + RTL8821A_TRANS_END_STEPS] = +{ + RTL8821A_TRANS_ACT_TO_CARDEMU + RTL8821A_TRANS_CARDEMU_TO_PDN + RTL8821A_TRANS_END +}; + +/*3 Enter LPS */ +struct wlan_pwr_cfg rtl8821A_enter_lps_flow[RTL8821A_TRANS_ACT_TO_LPS_STEPS + + RTL8821A_TRANS_END_STEPS] = +{ + /*FW behavior*/ + RTL8821A_TRANS_ACT_TO_LPS + RTL8821A_TRANS_END +}; + +/*3 Leave LPS */ +struct wlan_pwr_cfg rtl8821A_leave_lps_flow[RTL8821A_TRANS_LPS_TO_ACT_STEPS + + RTL8821A_TRANS_END_STEPS] = +{ + /*FW behavior*/ + RTL8821A_TRANS_LPS_TO_ACT + RTL8821A_TRANS_END +}; + --- linux-3.13.0.orig/drivers/staging/rtl8821ae/rtl8821ae/pwrseq.h +++ linux-3.13.0/drivers/staging/rtl8821ae/rtl8821ae/pwrseq.h @@ -0,0 +1,413 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#ifndef __RTL8821AE_PWRSEQ_H__ +#define __RTL8821AE_PWRSEQ_H__ + +#include "pwrseqcmd.h" +#include "../btcoexist/halbt_precomp.h" + +#define RTL8812_TRANS_CARDEMU_TO_ACT_STEPS 15 +#define RTL8812_TRANS_ACT_TO_CARDEMU_STEPS 15 +#define RTL8812_TRANS_CARDEMU_TO_SUS_STEPS 15 +#define RTL8812_TRANS_SUS_TO_CARDEMU_STEPS 15 +#define RTL8812_TRANS_CARDEMU_TO_PDN_STEPS 25 +#define RTL8812_TRANS_PDN_TO_CARDEMU_STEPS 15 +#define RTL8812_TRANS_ACT_TO_LPS_STEPS 15 +#define RTL8812_TRANS_LPS_TO_ACT_STEPS 15 +#define RTL8812_TRANS_END_STEPS 1 + + +#define RTL8812_TRANS_CARDEMU_TO_ACT \ + /* format */ \ + /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT2, 0},/* disable SW LPS 0x04[10]=0*/ \ + {0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT1, BIT1},/* wait till 0x04[17] = 1 power ready*/ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, 0},/* disable HWPDN 0x04[15]=0*/ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3, 0},/* disable WL suspend*/ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0},/* polling until return 0*/ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT0, 0},/**/ + +#define RTL8812_TRANS_ACT_TO_CARDEMU \ + /* format */ \ + /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \ + {0x0c00, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x04}, /* 0xc00[7:0] = 4 turn off 3-wire */ \ + {0x0e00, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x04}, /* 0xe00[7:0] = 4 turn off 3-wire */ \ + {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0}, /* 0x2[0] = 0 RESET BB, CLOSE RF */ \ + {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_DELAY, 0, PWRSEQ_DELAY_US},/*Delay 1us*/ \ + {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0}, /* Whole BB is reset*/ \ + /*{0x001F, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0},//0x1F[7:0] = 0 turn off RF*/ \ + /*{0x004E, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, 0},//0x4C[23] = 0x4E[7] = 0, switch DPDT_SEL_P output from register 0x65[2] */ \ + {0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x2A}, /* 0x07[7:0] = 0x28 sps pwm mode 0x2a for BT coex*/ \ + {0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x02, 0},/*0x8[1] = 0 ANA clk =500k */ \ + /*{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0|BIT1, 0}, // 0x02[1:0] = 0 reset BB */ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, BIT1}, /*0x04[9] = 1 turn off MAC by HW state machine*/ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT1, 0}, /*wait till 0x04[9] = 0 polling until return 0 to disable*/ + +#define RTL8812_TRANS_CARDEMU_TO_SUS \ + /* format */ \ + /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \ + {0x0042, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xF0, 0xcc},\ + {0x0042, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xF0, 0xEC},\ + {0x0043, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x07},/* gpio11 input mode, gpio10~8 output mode */ \ + {0x0045, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x00},/* gpio 0~7 output same value as input ?? */ \ + {0x0046, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0xff},/* gpio0~7 output mode */ \ + {0x0047, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0},/* 0x47[7:0] = 00 gpio mode */ \ + {0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0},/* suspend option all off */ \ + {0x0014, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x80, BIT7},/*0x14[7] = 1 turn on ZCD */ \ + {0x0015, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x01, BIT0},/* 0x15[0] =1 trun on ZCD */ \ + {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x10, BIT4},/*0x23[4] = 1 hpon LDO sleep mode */ \ + {0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x02, 0},/*0x8[1] = 0 ANA clk =500k */ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3, BIT3}, /*0x04[11] = 2b'11 enable WL suspend for PCIe*/ + +#define RTL8812_TRANS_SUS_TO_CARDEMU \ + /* format */ \ + /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3, 0}, /*0x04[11] = 2b'01enable WL suspend*/ \ + {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x10, 0},/*0x23[4] = 0 hpon LDO sleep mode leave */ \ + {0x0015, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x01, 0},/* 0x15[0] =0 trun off ZCD */ \ + {0x0014, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x80, 0},/*0x14[7] = 0 turn off ZCD */ \ + {0x0046, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x00},/* gpio0~7 input mode */ \ + {0x0043, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x00},/* gpio11 input mode, gpio10~8 input mode */ + +#define RTL8812_TRANS_CARDEMU_TO_CARDDIS \ + /* format */ \ + /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \ + /**{0x0194, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0}, //0x194[0]=0 , disable 32K clock*/ \ + /**{0x0093, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x94}, //0x93=0x94 , 90[30] =0 enable 500k ANA clock .switch clock from 12M to 500K , 90 [26] =0 disable EEprom loader clock*/ \ + {0x0003, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT2, 0}, /*0x03[2] = 0, reset 8051*/ \ + {0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x05}, /*0x80=05h if reload fw, fill the default value of host_CPU handshake field*/ \ + {0x0042, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xF0, 0xcc},\ + {0x0042, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xF0, 0xEC},\ + {0x0043, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x07},/* gpio11 input mode, gpio10~8 output mode */ \ + {0x0045, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x00},/* gpio 0~7 output same value as input ?? */ \ + {0x0046, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0xff},/* gpio0~7 output mode */ \ + {0x0047, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0},/* 0x47[7:0] = 00 gpio mode */ \ + {0x0014, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x80, BIT7},/*0x14[7] = 1 turn on ZCD */ \ + {0x0015, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x01, BIT0},/* 0x15[0] =1 trun on ZCD */ \ + {0x0012, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x01, 0},/*0x12[0] = 0 force PFM mode */ \ + {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x10, BIT4},/*0x23[4] = 1 hpon LDO sleep mode */ \ + {0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x02, 0},/*0x8[1] = 0 ANA clk =500k */ \ + {0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x20}, /*0x07=0x20 , SOP option to disable BG/MB*/ \ + {0x001f, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0}, /*0x01f[1]=0 , disable RFC_0 control REG_RF_CTRL_8812 */ \ + {0x0076, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0}, /*0x076[1]=0 , disable RFC_1 control REG_OPT_CTRL_8812 +2 */ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3, BIT3}, /*0x04[11] = 2b'01 enable WL suspend*/ + +#define RTL8812_TRANS_CARDDIS_TO_CARDEMU \ + /* format */ \ + /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \ + {0x0012, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0},/*0x12[0] = 1 force PWM mode */ \ + {0x0014, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x80, 0},/*0x14[7] = 0 turn off ZCD */ \ + {0x0015, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x01, 0},/* 0x15[0] =0 trun off ZCD */ \ + {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0x10, 0},/*0x23[4] = 0 hpon LDO leave sleep mode */ \ + {0x0046, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x00},/* gpio0~7 input mode */ \ + {0x0043, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x00},/* gpio11 input mode, gpio10~8 input mode */ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT2, 0}, /*0x04[10] = 0, enable SW LPS PCIE only*/ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3, 0}, /*0x04[11] = 2b'01enable WL suspend*/ \ + {0x0003, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT2, BIT2}, /*0x03[2] = 1, enable 8051*/ \ + {0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0},/*PCIe DMA start*/ + + +#define RTL8812_TRANS_CARDEMU_TO_PDN \ + /* format */ \ + /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, BIT7},/* 0x04[15] = 1*/ + +#define RTL8812_TRANS_PDN_TO_CARDEMU \ + /* format */ \ + /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, 0},/* 0x04[15] = 0*/ + +#define RTL8812_TRANS_ACT_TO_LPS \ + /* format */ \ + /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \ + {0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0xFF},/*PCIe DMA stop*/ \ + {0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x7F},/*Tx Pause*/ \ + {0x05F8, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \ + {0x05F9, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \ + {0x05FA, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \ + {0x05FB, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \ + {0x0c00, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x04}, /* 0xc00[7:0] = 4 turn off 3-wire */ \ + {0x0e00, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x04}, /* 0xe00[7:0] = 4 turn off 3-wire */ \ + {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0},/*CCK and OFDM are disabled,and clock are gated,and RF closed*/ \ + {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_DELAY, 0, PWRSEQ_DELAY_US},/*Delay 1us*/ \ + {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0}, /* Whole BB is reset*/ \ + {0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x03},/*Reset MAC TRX*/ \ + {0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0},/*check if removed later*/ \ + {0x0553, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT5, BIT5},/*Respond TxOK to scheduler*/ + + +#define RTL8812_TRANS_LPS_TO_ACT \ + /* format */ \ + /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \ + {0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, 0xFF, 0x84}, /*SDIO RPWM*/ \ + {0xFE58, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x84}, /*USB RPWM*/ \ + {0x0361, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x84}, /*PCIe RPWM*/ \ + {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_DELAY, 0, PWRSEQ_DELAY_MS}, /*Delay*/ \ + {0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, 0}, /*. 0x08[4] = 0 switch TSF to 40M*/ \ + {0x0109, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT7, 0}, /*Polling 0x109[7]=0 TSF in 40M*/ \ + {0x0029, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT6|BIT7, 0}, /*. 0x29[7:6] = 2b'00 enable BB clock*/ \ + {0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, BIT1}, /*. 0x101[1] = 1*/ \ + {0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0xFF}, /*. 0x100[7:0] = 0xFF enable WMAC TRX*/ \ + {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1|BIT0, BIT1|BIT0}, /*. 0x02[1:0] = 2b'11 enable BB macro*/ \ + {0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0}, /*. 0x522 = 0*/ + +#define RTL8812_TRANS_END \ + /* format */ \ + /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \ + {0xFFFF, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,0,PWR_CMD_END, 0, 0}, // + + +extern struct wlan_pwr_cfg rtl8812_power_on_flow[RTL8812_TRANS_CARDEMU_TO_ACT_STEPS+RTL8812_TRANS_END_STEPS]; +extern struct wlan_pwr_cfg rtl8812_radio_off_flow[RTL8812_TRANS_ACT_TO_CARDEMU_STEPS+RTL8812_TRANS_END_STEPS]; +extern struct wlan_pwr_cfg rtl8812_card_disable_flow[RTL8812_TRANS_ACT_TO_CARDEMU_STEPS+RTL8812_TRANS_CARDEMU_TO_PDN_STEPS+RTL8812_TRANS_END_STEPS]; +extern struct wlan_pwr_cfg rtl8812_card_enable_flow[RTL8812_TRANS_ACT_TO_CARDEMU_STEPS+RTL8812_TRANS_CARDEMU_TO_PDN_STEPS+RTL8812_TRANS_END_STEPS]; +extern struct wlan_pwr_cfg rtl8812_suspend_flow[RTL8812_TRANS_ACT_TO_CARDEMU_STEPS+RTL8812_TRANS_CARDEMU_TO_SUS_STEPS+RTL8812_TRANS_END_STEPS]; +extern struct wlan_pwr_cfg rtl8812_resume_flow[RTL8812_TRANS_ACT_TO_CARDEMU_STEPS+RTL8812_TRANS_CARDEMU_TO_SUS_STEPS+RTL8812_TRANS_END_STEPS]; +extern struct wlan_pwr_cfg rtl8812_hwpdn_flow[RTL8812_TRANS_ACT_TO_CARDEMU_STEPS+RTL8812_TRANS_CARDEMU_TO_PDN_STEPS+RTL8812_TRANS_END_STEPS]; +extern struct wlan_pwr_cfg rtl8812_enter_lps_flow[RTL8812_TRANS_ACT_TO_LPS_STEPS+RTL8812_TRANS_END_STEPS]; +extern struct wlan_pwr_cfg rtl8812_leave_lps_flow[RTL8812_TRANS_LPS_TO_ACT_STEPS+RTL8812_TRANS_END_STEPS]; + +/* + Check document WM-20130516-JackieLau-RTL8821A_Power_Architecture-R10.vsd + There are 6 HW Power States: + 0: POFF--Power Off + 1: PDN--Power Down + 2: CARDEMU--Card Emulation + 3: ACT--Active Mode + 4: LPS--Low Power State + 5: SUS--Suspend + + The transision from different states are defined below + TRANS_CARDEMU_TO_ACT + TRANS_ACT_TO_CARDEMU + TRANS_CARDEMU_TO_SUS + TRANS_SUS_TO_CARDEMU + TRANS_CARDEMU_TO_PDN + TRANS_ACT_TO_LPS + TRANS_LPS_TO_ACT + + TRANS_END +*/ +#define RTL8821A_TRANS_CARDEMU_TO_ACT_STEPS 25 +#define RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS 15 +#define RTL8821A_TRANS_CARDEMU_TO_SUS_STEPS 15 +#define RTL8821A_TRANS_SUS_TO_CARDEMU_STEPS 15 +#define RTL8821A_TRANS_CARDDIS_TO_CARDEMU_STEPS 15 +#define RTL8821A_TRANS_CARDEMU_TO_PDN_STEPS 15 +#define RTL8821A_TRANS_PDN_TO_CARDEMU_STEPS 15 +#define RTL8821A_TRANS_ACT_TO_LPS_STEPS 15 +#define RTL8821A_TRANS_LPS_TO_ACT_STEPS 15 +#define RTL8821A_TRANS_END_STEPS 1 + + +#define RTL8821A_TRANS_CARDEMU_TO_ACT \ + /* format */ \ + /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \ + {0x0020, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0}, /*0x20[0] = 1b'1 enable LDOA12 MACRO block for all interface*/ \ + {0x0067, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, 0}, /*0x67[0] = 0 to disable BT_GPS_SEL pins*/ \ + {0x0001, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_DELAY, 1, PWRSEQ_DELAY_MS},/*Delay 1ms*/ \ + {0x0000, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT5, 0}, /*0x00[5] = 1b'0 release analog Ips to digital ,1:isolation*/ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, (BIT4|BIT3|BIT2), 0},/* disable SW LPS 0x04[10]=0 and WLSUS_EN 0x04[12:11]=0*/ \ + {0x0075, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0 , BIT0},/* Disable USB suspend */ \ + {0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT1, BIT1},/* wait till 0x04[17] = 1 power ready*/ \ + {0x0075, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0 , 0},/* Enable USB suspend */ \ + {0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0},/* release WLON reset 0x04[16]=1*/ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, 0},/* disable HWPDN 0x04[15]=0*/ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, (BIT4|BIT3), 0},/* disable WL suspend*/ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0},/* polling until return 0*/ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT0, 0},/**/ \ + {0x004F, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0},/*0x4C[24] = 0x4F[0] = 1, switch DPDT_SEL_P output from WL BB */\ + {0x0067, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, (BIT5|BIT4), (BIT5|BIT4)},/*0x66[13] = 0x67[5] = 1, switch for PAPE_G/PAPE_A from WL BB ; 0x66[12] = 0x67[4] = 1, switch LNAON from WL BB */\ + {0x0025, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT6, 0},/*anapar_mac<118> , 0x25[6]=0 by wlan single function*/\ + {0x0049, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, BIT1},/*Enable falling edge triggering interrupt*/\ + {0x0063, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, BIT1},/*Enable GPIO9 interrupt mode*/\ + {0x0062, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0},/*Enable GPIO9 input mode*/\ + {0x0058, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, BIT0},/*Enable HSISR GPIO[C:0] interrupt*/\ + {0x005A, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, BIT1},/*Enable HSISR GPIO9 interrupt*/\ + {0x007A, PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x3A},/*0x7A = 0x3A start BT*/\ + {0x002E, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF , 0x82 },/* 0x2C[23:12]=0x820 ; XTAL trim */ \ + {0x0010, PWR_CUT_A_MSK , PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT6 , BIT6 },/* 0x10[6]=1 ; MPsW0x2CvA0x10[6]]1~WLAN */ \ + + +#define RTL8821A_TRANS_ACT_TO_CARDEMU \ + /* format */ \ + /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \ + {0x001F, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0},/*0x1F[7:0] = 0 turn off RF*/ \ + {0x004F, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0},/*0x4C[24] = 0x4F[0] = 0, switch DPDT_SEL_P output from register 0x65[2] */\ + {0x0049, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0},/*Enable rising edge triggering interrupt*/ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, BIT1}, /*0x04[9] = 1 turn off MAC by HW state machine*/ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT1, 0}, /*wait till 0x04[9] = 0 polling until return 0 to disable*/ \ + {0x0000, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT5, BIT5}, /*0x00[5] = 1b'1 analog Ips to digital ,1:isolation*/ \ + {0x0020, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0}, /*0x20[0] = 1b'0 disable LDOA12 MACRO block*/ \ + + +#define RTL8821A_TRANS_CARDEMU_TO_SUS \ + /* format */ \ + /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4|BIT3, (BIT4|BIT3)}, /*0x04[12:11] = 2b'11 enable WL suspend for PCIe*/ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3|BIT4, BIT3}, /*0x04[12:11] = 2b'01 enable WL suspend*/ \ + {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, BIT4}, /*0x23[4] = 1b'1 12H LDO enter sleep mode*/ \ + {0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x20}, /*0x07[7:0] = 0x20 SDIO SOP option to disable BG/MB/ACK/SWR*/ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3|BIT4, BIT3|BIT4}, /*0x04[12:11] = 2b'11 enable WL suspend for PCIe*/ \ + {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, BIT0, BIT0}, /*Set SDIO suspend local register*/ \ + {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_POLLING, BIT1, 0}, /*wait power state to suspend*/ + +#define RTL8821A_TRANS_SUS_TO_CARDEMU \ + /* format */ \ + /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3 | BIT7, 0}, /*clear suspend enable and power down enable*/ \ + {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, BIT0, 0}, /*Set SDIO suspend local register*/ \ + {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_POLLING, BIT1, BIT1}, /*wait power state to suspend*/\ + {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, 0}, /*0x23[4] = 1b'0 12H LDO enter normal mode*/ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3|BIT4, 0}, /*0x04[12:11] = 2b'01enable WL suspend*/ + +#define RTL8821A_TRANS_CARDEMU_TO_CARDDIS \ + /* format */ \ + /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \ + {0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x20}, /*0x07=0x20 , SOP option to disable BG/MB*/ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3|BIT4, BIT3}, /*0x04[12:11] = 2b'01 enable WL suspend*/ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT2, BIT2}, /*0x04[10] = 1, enable SW LPS*/ \ + {0x004A, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 1}, /*0x48[16] = 1 to enable GPIO9 as EXT WAKEUP*/ \ + {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, BIT4}, /*0x23[4] = 1b'1 12H LDO enter sleep mode*/ \ + {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, BIT0, BIT0}, /*Set SDIO suspend local register*/ \ + {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_POLLING, BIT1, 0}, /*wait power state to suspend*/ + +#define RTL8821A_TRANS_CARDDIS_TO_CARDEMU \ + /* format */ \ + /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3 | BIT7, 0}, /*clear suspend enable and power down enable*/ \ + {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, BIT0, 0}, /*Set SDIO suspend local register*/ \ + {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_POLLING, BIT1, BIT1}, /*wait power state to suspend*/\ + {0x004A, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0}, /*0x48[16] = 0 to disable GPIO9 as EXT WAKEUP*/ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT3|BIT4, 0}, /*0x04[12:11] = 2b'01enable WL suspend*/\ + {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, 0}, /*0x23[4] = 1b'0 12H LDO enter normal mode*/ \ + {0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0},/*PCIe DMA start*/ + + +#define RTL8821A_TRANS_CARDEMU_TO_PDN \ + /* format */ \ + /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \ + {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, BIT4}, /*0x23[4] = 1b'1 12H LDO enter sleep mode*/ \ + {0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK|PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x20}, /*0x07[7:0] = 0x20 SOP option to disable BG/MB/ACK/SWR*/ \ + {0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0},/* 0x04[16] = 0*/\ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, BIT7},/* 0x04[15] = 1*/ + +#define RTL8821A_TRANS_PDN_TO_CARDEMU \ + /* format */ \ + /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \ + {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT7, 0},/* 0x04[15] = 0*/ + +#define RTL8821A_TRANS_ACT_TO_LPS \ + /* format */ \ + /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \ + {0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0xFF},/*PCIe DMA stop*/ \ + {0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0xFF},/*Tx Pause*/ \ + {0x05F8, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \ + {0x05F9, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \ + {0x05FA, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \ + {0x05FB, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/ \ + {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT0, 0},/*CCK and OFDM are disabled,and clock are gated*/ \ + {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_DELAY, 0, PWRSEQ_DELAY_US},/*Delay 1us*/ \ + {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0},/*Whole BB is reset*/ \ + {0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x03},/*Reset MAC TRX*/ \ + {0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, 0},/*check if removed later*/ \ + {0x0093, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x00},/*When driver enter Sus/ Disable, enable LOP for BT*/ \ + {0x0553, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT5, BIT5},/*Respond TxOK to scheduler*/ \ + + +#define RTL8821A_TRANS_LPS_TO_ACT \ + /* format */ \ + /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \ + {0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,PWR_BASEADDR_SDIO,PWR_CMD_WRITE, 0xFF, 0x84}, /*SDIO RPWM*/\ + {0xFE58, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x84}, /*USB RPWM*/\ + {0x0361, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0x84}, /*PCIe RPWM*/\ + {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_DELAY, 0, PWRSEQ_DELAY_MS}, /*Delay*/\ + {0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT4, 0}, /*. 0x08[4] = 0 switch TSF to 40M*/\ + {0x0109, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_POLLING, BIT7, 0}, /*Polling 0x109[7]=0 TSF in 40M*/\ + {0x0029, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT6|BIT7, 0}, /*. 0x29[7:6] = 2b'00 enable BB clock*/\ + {0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1, BIT1}, /*. 0x101[1] = 1*/\ + {0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0xFF}, /*. 0x100[7:0] = 0xFF enable WMAC TRX*/\ + {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, BIT1|BIT0, BIT1|BIT0}, /*. 0x02[1:0] = 2b'11 enable BB macro*/\ + {0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,PWR_BASEADDR_MAC,PWR_CMD_WRITE, 0xFF, 0}, /*. 0x522 = 0*/ + +#define RTL8821A_TRANS_END \ + /* format */ \ + /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, // comments here*/ \ + {0xFFFF, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,0,PWR_CMD_END, 0, 0}, // + +extern struct wlan_pwr_cfg rtl8821A_power_on_flow[RTL8821A_TRANS_CARDEMU_TO_ACT_STEPS + + RTL8821A_TRANS_END_STEPS]; +extern struct wlan_pwr_cfg rtl8821A_radio_off_flow[RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS + + RTL8821A_TRANS_END_STEPS]; +extern struct wlan_pwr_cfg rtl8821A_card_disable_flow[RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS + + RTL8821A_TRANS_CARDEMU_TO_PDN_STEPS + + RTL8821A_TRANS_END_STEPS]; +extern struct wlan_pwr_cfg rtl8821A_card_enable_flow[RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS + + RTL8821A_TRANS_CARDEMU_TO_ACT_STEPS/*RTL8821A_TRANS_CARDEMU_TO_PDN_STEPS*/ + + RTL8821A_TRANS_END_STEPS]; +extern struct wlan_pwr_cfg rtl8821A_suspend_flow[RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS + + RTL8821A_TRANS_CARDEMU_TO_SUS_STEPS + + RTL8821A_TRANS_END_STEPS]; +extern struct wlan_pwr_cfg rtl8821A_resume_flow[RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS + + RTL8821A_TRANS_CARDEMU_TO_SUS_STEPS + + RTL8821A_TRANS_END_STEPS]; +extern struct wlan_pwr_cfg rtl8821A_hwpdn_flow[RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS + + RTL8821A_TRANS_CARDEMU_TO_PDN_STEPS + + RTL8821A_TRANS_END_STEPS]; +extern struct wlan_pwr_cfg rtl8821A_enter_lps_flow[RTL8821A_TRANS_ACT_TO_LPS_STEPS + + RTL8821A_TRANS_END_STEPS]; +extern struct wlan_pwr_cfg rtl8821A_leave_lps_flow[RTL8821A_TRANS_LPS_TO_ACT_STEPS + + RTL8821A_TRANS_END_STEPS]; + +/*RTL8812 Power Configuration CMDs for PCIe interface*/ +#define RTL8812_NIC_PWR_ON_FLOW rtl8812_power_on_flow +#define RTL8812_NIC_RF_OFF_FLOW rtl8812_radio_off_flow +#define RTL8812_NIC_DISABLE_FLOW rtl8812_card_disable_flow +#define RTL8812_NIC_ENABLE_FLOW rtl8812_card_enable_flow +#define RTL8812_NIC_SUSPEND_FLOW rtl8812_suspend_flow +#define RTL8812_NIC_RESUME_FLOW rtl8812_resume_flow +#define RTL8812_NIC_PDN_FLOW rtl8812_hwpdn_flow +#define RTL8812_NIC_LPS_ENTER_FLOW rtl8812_enter_lps_flow +#define RTL8812_NIC_LPS_LEAVE_FLOW rtl8812_leave_lps_flow + +/* RTL8821 Power Configuration CMDs for PCIe interface */ +#define RTL8821A_NIC_PWR_ON_FLOW rtl8821A_power_on_flow +#define RTL8821A_NIC_RF_OFF_FLOW rtl8821A_radio_off_flow +#define RTL8821A_NIC_DISABLE_FLOW rtl8821A_card_disable_flow +#define RTL8821A_NIC_ENABLE_FLOW rtl8821A_card_enable_flow +#define RTL8821A_NIC_SUSPEND_FLOW rtl8821A_suspend_flow +#define RTL8821A_NIC_RESUME_FLOW rtl8821A_resume_flow +#define RTL8821A_NIC_PDN_FLOW rtl8821A_hwpdn_flow +#define RTL8821A_NIC_LPS_ENTER_FLOW rtl8821A_enter_lps_flow +#define RTL8821A_NIC_LPS_LEAVE_FLOW rtl8821A_leave_lps_flow + + +#endif + --- linux-3.13.0.orig/drivers/staging/rtl8821ae/rtl8821ae/pwrseqcmd.c +++ linux-3.13.0/drivers/staging/rtl8821ae/rtl8821ae/pwrseqcmd.c @@ -0,0 +1,140 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#include "pwrseq.h" + + +/* +* 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. +*/ +bool rtl_hal_pwrseqcmdparsing (struct rtl_priv* rtlpriv, u8 cut_version, + u8 fab_version, u8 interface_type, + struct wlan_pwr_cfg pwrcfgcmd[]) + +{ + struct wlan_pwr_cfg pwr_cfg_cmd = {0}; + bool polling_bit = false; + u32 ary_idx=0; + u8 value = 0; + u32 offset = 0; + u32 polling_count = 0; + u32 max_polling_cnt = 5000; + + do { + pwr_cfg_cmd = pwrcfgcmd[ary_idx]; + RT_TRACE(COMP_INIT, DBG_TRACE, + ("rtl_hal_pwrseqcmdparsing(): offset(%#x),cut_msk(%#x), fab_msk(%#x)," + "interface_msk(%#x), base(%#x), cmd(%#x), msk(%#x), value(%#x)\n", + GET_PWR_CFG_OFFSET(pwr_cfg_cmd), GET_PWR_CFG_CUT_MASK(pwr_cfg_cmd), + GET_PWR_CFG_FAB_MASK(pwr_cfg_cmd), GET_PWR_CFG_INTF_MASK(pwr_cfg_cmd), + GET_PWR_CFG_BASE(pwr_cfg_cmd), GET_PWR_CFG_CMD(pwr_cfg_cmd), + GET_PWR_CFG_MASK(pwr_cfg_cmd), GET_PWR_CFG_VALUE(pwr_cfg_cmd))); + + if ((GET_PWR_CFG_FAB_MASK(pwr_cfg_cmd)&fab_version) && + (GET_PWR_CFG_CUT_MASK(pwr_cfg_cmd)&cut_version) && + (GET_PWR_CFG_INTF_MASK(pwr_cfg_cmd)&interface_type)) { + switch (GET_PWR_CFG_CMD(pwr_cfg_cmd)) { + case PWR_CMD_READ: + RT_TRACE(COMP_INIT, DBG_TRACE, + ("rtl_hal_pwrseqcmdparsing(): PWR_CMD_READ\n")); + break; + + case PWR_CMD_WRITE: { + RT_TRACE(COMP_INIT, DBG_TRACE, + ("rtl_hal_pwrseqcmdparsing(): PWR_CMD_WRITE\n")); + offset = GET_PWR_CFG_OFFSET(pwr_cfg_cmd); + + /*Read the value from system register*/ + value = rtl_read_byte(rtlpriv, offset); + value = value & (~(GET_PWR_CFG_MASK(pwr_cfg_cmd))); + value = value | (GET_PWR_CFG_VALUE(pwr_cfg_cmd) + & GET_PWR_CFG_MASK(pwr_cfg_cmd)); + + /*Write the value back to sytem register*/ + rtl_write_byte(rtlpriv, offset, value); + } + break; + + case PWR_CMD_POLLING: + RT_TRACE(COMP_INIT, DBG_TRACE, + ("rtl_hal_pwrseqcmdparsing(): PWR_CMD_POLLING\n")); + polling_bit = false; + offset = GET_PWR_CFG_OFFSET(pwr_cfg_cmd); + + do { + value = rtl_read_byte(rtlpriv, offset); + + value = value & GET_PWR_CFG_MASK(pwr_cfg_cmd); + if (value == (GET_PWR_CFG_VALUE(pwr_cfg_cmd) + & GET_PWR_CFG_MASK(pwr_cfg_cmd))) + polling_bit=true; + else + udelay(10); + + if (polling_count++ > max_polling_cnt) { + return false; + } + } while (!polling_bit); + + break; + + case PWR_CMD_DELAY: + RT_TRACE(COMP_INIT, DBG_TRACE, + ("rtl_hal_pwrseqcmdparsing(): PWR_CMD_DELAY\n")); + if (GET_PWR_CFG_VALUE(pwr_cfg_cmd) == PWRSEQ_DELAY_US) + udelay(GET_PWR_CFG_OFFSET(pwr_cfg_cmd)); + else + mdelay(GET_PWR_CFG_OFFSET(pwr_cfg_cmd)); + break; + + case PWR_CMD_END: + RT_TRACE(COMP_INIT, DBG_TRACE, + ("rtl_hal_pwrseqcmdparsing(): PWR_CMD_END\n")); + return true; + break; + + default: + RT_ASSERT(false, + ("rtl_hal_pwrseqcmdparsing(): Unknown CMD!!\n")); + break; + } + + } + + ary_idx++; + } while (1); + + return true; +} --- linux-3.13.0.orig/drivers/staging/rtl8821ae/rtl8821ae/pwrseqcmd.h +++ linux-3.13.0/drivers/staging/rtl8821ae/rtl8821ae/pwrseqcmd.h @@ -0,0 +1,71 @@ +#ifndef __RTL8821AE_PWRSEQCMD_H__ +#define __RTL8821AE_PWRSEQCMD_H__ + +#include "../wifi.h" +/*---------------------------------------------*/ +/*The value of cmd: 4 bits */ +/*---------------------------------------------*/ +#define PWR_CMD_READ 0x00 +#define PWR_CMD_WRITE 0x01 +#define PWR_CMD_POLLING 0x02 +#define PWR_CMD_DELAY 0x03 +#define PWR_CMD_END 0x04 + +/* 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 + +#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)) + +#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)) + +#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 + + +enum pwrseq_delay_unit { + PWRSEQ_DELAY_US, + PWRSEQ_DELAY_MS, +}; + +struct wlan_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; + +}; + +#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 + +bool rtl_hal_pwrseqcmdparsing(struct rtl_priv * rtlpriv, u8 cut_version, + u8 fab_version, u8 interface_type, + struct wlan_pwr_cfg pwrcfgcmd[]); + +#endif + --- linux-3.13.0.orig/drivers/staging/rtl8821ae/rtl8821ae/reg.h +++ linux-3.13.0/drivers/staging/rtl8821ae/rtl8821ae/reg.h @@ -0,0 +1,2427 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#ifndef __RTL8821AE_REG_H__ +#define __RTL8821AE_REG_H__ + +#define TXPKT_BUF_SELECT 0x69 +#define RXPKT_BUF_SELECT 0xA5 +#define DISABLE_TRXPKT_BUF_ACCESS 0x0 + +#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_LDO_CTRL 0x0027 /* 1.5v for 8188EE test chip, 1.4v for MP chip */ +#define REG_AFE_PLL_CTRL 0x0028 +#define REG_MAC_PHY_CTRL 0x002c +#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_FSIMR 0x0050 +#define REG_FSISR 0x0054 +#define REG_HSIMR 0x0058 +#define REG_HSISR 0x005c +#define REG_GPIO_PIN_CTRL_2 0x0060 +#define REG_GPIO_IO_SEL_2 0x0062 +#define REG_MULTI_FUNC_CTRL 0x0068 +#define REG_GPIO_OUTPUT 0x006c +#define REG_OPT_CTRL 0x0074 +#define REG_AFE_XTAL_CTRL_EXT 0x0078 +#define REG_XCK_OUT_CTRL 0x007c +#define REG_MCUFWDL 0x0080 +#define REG_WOL_EVENT 0x0081 +#define REG_MCUTSTCFG 0x0084 + + +#define REG_HIMR 0x00B0 +#define REG_HISR 0x00B4 +#define REG_HIMRE 0x00B8 +#define REG_HISRE 0x00BC + +#define REG_PMC_DBG_CTRL2 0x00CC + +#define REG_EFUSE_ACCESS 0x00CF + +#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 +#define REG_SYS_CFG1 0x00FC +#define REG_ROM_VERSION 0x00FD + +#define REG_CR 0x0100 +#define REG_PBP 0x0104 +#define REG_PKT_BUFF_ACCESS_CTRL 0x0106 +#define REG_TRXDMA_CTRL 0x010C +#define REG_TRXFF_BNDY 0x0114 +#define REG_TRXFF_STATUS 0x0118 +#define REG_RXFF_PTR 0x011C + +#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_RXPKTBUF_CTRL (REG_PKTBUF_DBG_CTRL+2) + +#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_32K_CTRL 0x0194 +#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 + +#define REG_HMEBOX_EXT_0 0x01F0 +#define REG_HMEBOX_EXT_1 0x01F4 +#define REG_HMEBOX_EXT_2 0x01F8 +#define REG_HMEBOX_EXT_3 0x01FC + +#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 + +#define REG_RXDMA_AGG_PG_TH 0x0280 +#define REG_FW_UPD_RDPTR 0x0284 /* FW shall update this register before FW write RXPKT_RELEASE_POLL to 1 */ +#define REG_RXDMA_CONTROL 0x0286 /* Control the RX DMA.*/ +#define REG_RXPKT_NUM 0x0287 /* The number of packets in RXPKTBUF. */ + +#define REG_PCIE_CTRL_REG 0x0300 +#define REG_INT_MIG 0x0304 +#define REG_BCNQ_DESA 0x0308 +#define REG_HQ_DESA 0x0310 +#define REG_MGQ_DESA 0x0318 +#define REG_VOQ_DESA 0x0320 +#define REG_VIQ_DESA 0x0328 +#define REG_BEQ_DESA 0x0330 +#define REG_BKQ_DESA 0x0338 +#define REG_RX_DESA 0x0340 + +#define REG_DBI_WDATA 0x0348 +#define REG_DBI_RDATA 0x034C +#define REG_DBI_ADDR 0x0350 +#define REG_DBI_FLAG 0x0352 +#define REG_MDIO_WDATA 0x0354 +#define REG_MDIO_RDATA 0x0356 +#define REG_MDIO_CTL 0x0358 +#define REG_DBG_SEL 0x0360 +#define REG_PCIE_HRPWM 0x0361 +#define REG_PCIE_HCPWM 0x0363 +#define REG_UART_CTRL 0x0364 +#define REG_WATCH_DOG 0x0368 +#define REG_UART_TX_DESA 0x0370 +#define REG_UART_RX_DESA 0x0378 + + +#define REG_HDAQ_DESA_NODEF 0x0000 +#define REG_CMDQ_DESA_NODEF 0x0000 + +#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_TXPKT_EMPTY 0x041A + + +#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_MULTI_BCNQ_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 0x044C +#define REG_CCK_CHECK 0x0454 +#define REG_AMPDU_MAX_TIME 0x0456 +#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_ARFR2 0x048C +#define REG_ARFR3 0x0494 +#define REG_POWER_STATUS 0x04A4 +#define REG_POWER_STAGE1 0x04B4 +#define REG_POWER_STAGE2 0x04B8 +#define REG_PKT_LIFE_TIME 0x04C0 +#define REG_STBC_SETTING 0x04C4 +#define REG_HT_SINGLE_AMPDU 0x04C7 +#define REG_PROT_MODE_CTRL 0x04C8 +#define REG_MAX_AGGR_NUM 0x04CA +#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_TX_RPT_CTRL 0x04EC +#define REG_TX_RPT_TIME 0x04F0 +#define REG_DUMMY 0x04FC + +#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_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_USTIME_TSF 0x0551 +#define REG_MBID_NUM 0x0552 +#define REG_DUAL_TSF_RST 0x0553 +#define REG_BCN_INTERVAL 0x0554 +#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_INIT_TSFTR 0x0564 +#define REG_SECONDARY_CCA_CTRL 0x0577 +#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_NOA_DESC_SEL 0x05CF +#define REG_NOA_DESC_DURATION 0x05E0 +#define REG_NOA_DESC_INTERVAL 0x05E4 +#define REG_NOA_DESC_START 0x05E8 +#define REG_NOA_DESC_COUNT 0x05EC +#define REG_SCH_TX_CMD 0x05F8 + +#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 + +#define REG_NAV_CTRL 0x0650 +#define REG_NAV_UPPER 0x0652 +#define REG_BACAMCMD 0x0654 +#define REG_BACAMCONTENT 0x0658 +#define REG_LBDLY 0x0660 +#define REG_FWDLY 0x0661 +#define REG_RXERR_RPT 0x0664 +#define REG_TRXPTCL_CTL 0x0668 + +#define REG_CAMCMD 0x0670 +#define REG_CAMWRITE 0x0674 +#define REG_CAMREAD 0x0678 +#define REG_CAMDBG 0x067C +#define REG_SECCFG 0x0680 + +#define REG_WOW_CTRL 0x0690 +#define REG_PSSTATUS 0x0691 +#define REG_PS_RX_INFO 0x0692 +#define REG_UAPSD_TID 0x0693 +#define REG_LPNAV_CTRL 0x0694 +#define REG_WKFMCAM_NUM 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_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_TEST_USB_TXQS 0xFE48 +#define REG_TEST_SIE_VID 0xFE60 +#define REG_TEST_SIE_PID 0xFE62 +#define REG_TEST_SIE_OPTIONAL 0xFE64 +#define REG_TEST_SIE_CHIRP_K 0xFE65 +#define REG_TEST_SIE_PHY 0xFE66 +#define REG_TEST_SIE_MAC_ADDR 0xFE70 +#define REG_TEST_SIE_STRING 0xFE80 + +#define REG_NORMAL_SIE_VID 0xFE60 +#define REG_NORMAL_SIE_PID 0xFE62 +#define REG_NORMAL_SIE_OPTIONAL 0xFE64 +#define REG_NORMAL_SIE_EP 0xFE65 +#define REG_NORMAL_SIE_PHY 0xFE68 +#define REG_NORMAL_SIE_MAC_ADDR 0xFE70 +#define REG_NORMAL_SIE_STRING 0xFE80 + +#define CR9346 REG_9346CR +#define MSR (REG_CR + 2) +#define ISR REG_HISR +#define TSFR REG_TSFTR + +#define MACIDR0 REG_MACID +#define MACIDR4 (REG_MACID + 4) + +#define PBP REG_PBP + +#define IDR0 MACIDR0 +#define IDR4 MACIDR4 + +#define UNUSED_REGISTER 0x1BF +#define DCAM UNUSED_REGISTER +#define PSR UNUSED_REGISTER +#define BBADDR UNUSED_REGISTER +#define PHYDATAR UNUSED_REGISTER + +#define INVALID_BBRF_VALUE 0x12345678 + +#define MAX_MSS_DENSITY_2T 0x13 +#define MAX_MSS_DENSITY_1T 0x0A + +#define CMDEEPROM_EN BIT(5) +#define CMDEEPROM_SEL BIT(4) +#define CMD9346CR_9356SEL BIT(4) +#define AUTOLOAD_EEPROM (CMDEEPROM_EN|CMDEEPROM_SEL) +#define AUTOLOAD_EFUSE CMDEEPROM_EN + +#define GPIOSEL_GPIO 0 +#define GPIOSEL_ENBT BIT(5) + +#define GPIO_IN REG_GPIO_PIN_CTRL +#define GPIO_OUT (REG_GPIO_PIN_CTRL+1) +#define GPIO_IO_SEL (REG_GPIO_PIN_CTRL+2) +#define GPIO_MOD (REG_GPIO_PIN_CTRL+3) + +/* 8723/8188E Host System Interrupt Mask Register (offset 0x58, 32 byte) */ +#define HSIMR_GPIO12_0_INT_EN BIT(0) +#define HSIMR_SPS_OCP_INT_EN BIT(5) +#define HSIMR_RON_INT_EN BIT(6) +#define HSIMR_PDN_INT_EN BIT(7) +#define HSIMR_GPIO9_INT_EN BIT(25) + + +/* +* 8723/8188E Host System Interrupt Status Register (offset 0x5C, 32 byte) +*/ +#define HSISR_GPIO12_0_INT BIT(0) +#define HSISR_SPS_OCP_INT BIT(5) +#define HSISR_RON_INT_EN BIT(6) +#define HSISR_PDNINT BIT(7) +#define HSISR_GPIO9_INT BIT(25) + +#define MSR_NOLINK 0x00 +#define MSR_ADHOC 0x01 +#define MSR_INFRA 0x02 +#define MSR_AP 0x03 + +#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 BIT(0) +#define RRSR_2M BIT(1) +#define RRSR_5_5M BIT(2) +#define RRSR_11M BIT(3) +#define RRSR_6M BIT(4) +#define RRSR_9M BIT(5) +#define RRSR_12M BIT(6) +#define RRSR_18M BIT(7) +#define RRSR_24M BIT(8) +#define RRSR_36M BIT(9) +#define RRSR_48M BIT(10) +#define RRSR_54M BIT(11) +#define RRSR_MCS0 BIT(12) +#define RRSR_MCS1 BIT(13) +#define RRSR_MCS2 BIT(14) +#define RRSR_MCS3 BIT(15) +#define RRSR_MCS4 BIT(16) +#define RRSR_MCS5 BIT(17) +#define RRSR_MCS6 BIT(18) +#define RRSR_MCS7 BIT(19) +#define BRSR_ACKSHORTPMB BIT(23) + +#define RATR_1M 0x00000001 +#define RATR_2M 0x00000002 +#define RATR_55M 0x00000004 +#define RATR_11M 0x00000008 +#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 +#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 +#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 + +#define RATE_1M BIT(0) +#define RATE_2M BIT(1) +#define RATE_5_5M BIT(2) +#define RATE_11M BIT(3) +#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) +#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) +#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) + +#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) + +#define BW_OPMODE_20MHZ BIT(2) +#define BW_OPMODE_5G BIT(1) +#define BW_OPMODE_11J BIT(0) + +#define CAM_VALID BIT(15) +#define CAM_NOTVALID 0x0000 +#define CAM_USEDK BIT(5) + +#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_WRITE BIT(16) +#define CAM_READ 0x00000000 +#define CAM_POLLINIG BIT(31) + +#define SCR_USEDK 0x01 +#define SCR_TXSEC_ENABLE 0x02 +#define SCR_RXSEC_ENABLE 0x04 + +#define WOW_PMEN BIT(0) +#define WOW_WOMEN BIT(1) +#define WOW_MAGIC BIT(2) +#define WOW_UWF BIT(3) + +/********************************************* +* 8188 IMR/ISR bits +**********************************************/ +#define IMR_DISABLED 0x0 +/* IMR DW0(0x0060-0063) Bit 0-31 */ +#define IMR_TXCCK BIT(30) /* TXRPT interrupt when CCX bit of the packet is set */ +#define IMR_PSTIMEOUT BIT(29) /* Power Save Time Out Interrupt */ +#define IMR_GTINT4 BIT(28) /* When GTIMER4 expires, this bit is set to 1 */ +#define IMR_GTINT3 BIT(27) /* When GTIMER3 expires, this bit is set to 1 */ +#define IMR_TBDER BIT(26) /* Transmit Beacon0 Error */ +#define IMR_TBDOK BIT(25) /* Transmit Beacon0 OK */ +#define IMR_TSF_BIT32_TOGGLE BIT(24) /* TSF Timer BIT32 toggle indication interrupt */ +#define IMR_BCNDMAINT0 BIT(20) /* Beacon DMA Interrupt 0 */ +#define IMR_BCNDOK0 BIT(16) /* Beacon Queue DMA OK0 */ +#define IMR_HSISR_IND_ON_INT BIT(15) /* HSISR Indicator (HSIMR & HSISR is true, this bit is set to 1) */ +#define IMR_BCNDMAINT_E BIT(14) /* Beacon DMA Interrupt Extension for Win7 */ +#define IMR_ATIMEND BIT(12) /* CTWidnow End or ATIM Window End */ +#define IMR_HISR1_IND_INT BIT(11) /* HISR1 Indicator (HISR1 & HIMR1 is true, this bit is set to 1)*/ +#define IMR_C2HCMD BIT(10) /* CPU to Host Command INT Status, Write 1 clear */ +#define IMR_CPWM2 BIT(9) /* CPU power Mode exchange INT Status, Write 1 clear */ +#define IMR_CPWM BIT(8) /* CPU power Mode exchange INT Status, Write 1 clear */ +#define IMR_HIGHDOK BIT(7) /* High Queue DMA OK */ +#define IMR_MGNTDOK BIT(6) /* Management Queue DMA OK */ +#define IMR_BKDOK BIT(5) /* AC_BK DMA OK */ +#define IMR_BEDOK BIT(4) /* AC_BE DMA OK */ +#define IMR_VIDOK BIT(3) /* AC_VI DMA OK */ +#define IMR_VODOK BIT(2) /* AC_VO DMA OK */ +#define IMR_RDU BIT(1) /* Rx Descriptor Unavailable */ +#define IMR_ROK BIT(0) /* Receive DMA OK */ + +/* IMR DW1(0x00B4-00B7) Bit 0-31 */ +#define IMR_BCNDMAINT7 BIT(27) /* Beacon DMA Interrupt 7 */ +#define IMR_BCNDMAINT6 BIT(26) /* Beacon DMA Interrupt 6 */ +#define IMR_BCNDMAINT5 BIT(25) /* Beacon DMA Interrupt 5 */ +#define IMR_BCNDMAINT4 BIT(24) /* Beacon DMA Interrupt 4 */ +#define IMR_BCNDMAINT3 BIT(23) /* Beacon DMA Interrupt 3 */ +#define IMR_BCNDMAINT2 BIT(22) /* Beacon DMA Interrupt 2 */ +#define IMR_BCNDMAINT1 BIT(21) /* Beacon DMA Interrupt 1 */ +#define IMR_BCNDOK7 BIT(20) /* Beacon Queue DMA OK Interrup 7 */ +#define IMR_BCNDOK6 BIT(19) /* Beacon Queue DMA OK Interrup 6 */ +#define IMR_BCNDOK5 BIT(18) /* Beacon Queue DMA OK Interrup 5 */ +#define IMR_BCNDOK4 BIT(17) /* Beacon Queue DMA OK Interrup 4 */ +#define IMR_BCNDOK3 BIT(16) /* Beacon Queue DMA OK Interrup 3 */ +#define IMR_BCNDOK2 BIT(15) /* Beacon Queue DMA OK Interrup 2 */ +#define IMR_BCNDOK1 BIT(14) /* Beacon Queue DMA OK Interrup 1 */ +#define IMR_ATIMEND_E BIT(13) /* ATIM Window End Extension for Win7 */ +#define IMR_TXERR BIT(11) /* Tx Error Flag Interrupt Status, write 1 clear. */ +#define IMR_RXERR BIT(10) /* Rx Error Flag INT Status, Write 1 clear */ +#define IMR_TXFOVW BIT(9) /* Transmit FIFO Overflow */ +#define IMR_RXFOVW BIT(8) /* Receive FIFO Overflow */ + + +#define HWSET_MAX_SIZE 512 +#define EFUSE_MAX_SECTION 64 +#define EFUSE_REAL_CONTENT_LEN 256 +#define EFUSE_OOB_PROTECT_BYTES 18 /* PG data exclude header, dummy 7 bytes frome CP test and reserved 1byte.*/ + + +#define EEPROM_DEFAULT_TSSI 0x0 +#define EEPROM_DEFAULT_TXPOWERDIFF 0x0 +#define EEPROM_DEFAULT_CRYSTALCAP 0x5 +#define EEPROM_DEFAULT_BOARDTYPE 0x02 +#define EEPROM_DEFAULT_TXPOWER 0x1010 +#define EEPROM_DEFAULT_HT2T_TXPWR 0x10 + +#define EEPROM_DEFAULT_LEGACYHTTXPOWERDIFF 0x3 +#define EEPROM_DEFAULT_THERMALMETER 0x18 +#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 +#define EEPROM_DEFAULT_LEGACYHTTXPOWERDIFF 0x3 +#define EEPROM_DEFAULT_HT40_PWRMAXOFFSET 0 +#define EEPROM_DEFAULT_HT20_PWRMAXOFFSET 0 + +#define RF_OPTION1 0x79 +#define RF_OPTION2 0x7A +#define RF_OPTION3 0x7B +#define RF_OPTION4 0xC3 + +#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_CHANNEL_PLAN_BY_HW_MASK 0x80 + +#define EEPROM_CID_DEFAULT 0x0 +#define EEPROM_CID_TOSHIBA 0x4 +#define EEPROM_CID_CCX 0x10 +#define EEPROM_CID_QMI 0x0D +#define EEPROM_CID_WHQL 0xFE + +#define RTL_EEPROM_ID 0x8129 + +#define EEPROM_HPON 0x02 +#define EEPROM_CLK 0x06 +#define EEPROM_TESTR 0x08 + + +#define EEPROM_TXPOWERCCK 0x10 +#define EEPROM_TXPOWERHT40_1S 0x16 +#define EEPROM_TXPOWERHT20DIFF 0x1B +#define EEPROM_TXPOWER_OFDMDIFF 0x1B + + + +#define EEPROM_TX_PWR_INX 0x10 + +#define EEPROM_CHANNELPLAN 0xB8 +#define EEPROM_XTAL_8821AE 0xB9 +#define EEPROM_THERMAL_METER 0xBA +#define EEPROM_IQK_LCK_88E 0xBB + +#define EEPROM_RF_BOARD_OPTION 0xC1 +#define EEPROM_RF_FEATURE_OPTION_88E 0xC2 +#define EEPROM_RF_BT_SETTING 0xC3 +#define EEPROM_VERSION 0xC4 +#define EEPROM_CUSTOMER_ID 0xC5 +#define EEPROM_RF_ANTENNA_OPT_88E 0xC9 + +#define EEPROM_MAC_ADDR 0xD0 +#define EEPROM_VID 0xD6 +#define EEPROM_DID 0xD8 +#define EEPROM_SVID 0xDA +#define EEPROM_SMID 0xDC + +#define STOPBECON BIT(6) +#define STOPHIGHT BIT(5) +#define STOPMGT BIT(4) +#define STOPVO BIT(3) +#define STOPVI BIT(2) +#define STOPBE BIT(1) +#define STOPBK BIT(0) + +#define RCR_APPFCS BIT(31) +#define RCR_APP_MIC BIT(30) +#define RCR_APP_ICV BIT(29) +#define RCR_APP_PHYST_RXFF BIT(28) +#define RCR_APP_BA_SSN BIT(27) +#define RCR_NONQOS_VHT BIT(26) +#define RCR_ENMBID BIT(24) +#define RCR_LSIGEN BIT(23) +#define RCR_MFBEN BIT(22) +#define RCR_HTC_LOC_CTRL BIT(14) +#define RCR_AMF BIT(13) +#define RCR_ACF BIT(12) +#define RCR_ADF BIT(11) +#define RCR_AICV BIT(9) +#define RCR_ACRC32 BIT(8) +#define RCR_CBSSID_BCN BIT(7) +#define RCR_CBSSID_DATA BIT(6) +#define RCR_CBSSID RCR_CBSSID_DATA +#define RCR_APWRMGT BIT(5) +#define RCR_ADD3 BIT(4) +#define RCR_AB BIT(3) +#define RCR_AM BIT(2) +#define RCR_APM BIT(1) +#define RCR_AAP BIT(0) +#define RCR_MXDMA_OFFSET 8 +#define RCR_FIFO_OFFSET 13 + +#define RSV_CTRL 0x001C +#define RD_CTRL 0x0524 + +#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 SW18_FPWM BIT(3) + +#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) + +#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) + +#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) + +#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) + +#define BOOT_FROM_EEPROM BIT(4) +#define EEPROM_EN BIT(5) + +#define AFE_BGEN BIT(0) +#define AFE_MBEN BIT(1) +#define MAC_ID_EN BIT(7) + +#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) + +#define RF_EN BIT(0) +#define RF_RSTB BIT(1) +#define RF_SDMRSTB BIT(2) + +#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) + +#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) + +#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) + +#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) + +#define ALD_EN BIT(18) +#define EF_PD BIT(19) +#define EF_FLAG BIT(31) + +#define EF_TRPT BIT(7) +#define LDOE25_EN BIT(31) + +#define RSM_EN BIT(0) +#define Timer_EN BIT(4) + +#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) + +#define LED0PL BIT(4) +#define LED1PL BIT(12) +#define LED0DIS BIT(7) + +#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) + +#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 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 +#define CHIP_VER_RTL_SHIFT 12 + +#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) + +#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 + +#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 + +#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) + +#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 + +#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) + +#define BB_WRITE_READ_MASK (BIT(31) | BIT(30)) +#define BB_WRITE_EN BIT(30) +#define BB_READ_EN BIT(31) + +#define _HPQ(x) ((x) & 0xFF) +#define _LPQ(x) (((x) & 0xFF) << 8) +#define _PUBQ(x) (((x) & 0xFF) << 16) +#define _NPQ(x) ((x) & 0xFF) + +#define HPQ_PUBLIC_DIS BIT(24) +#define LPQ_PUBLIC_DIS BIT(25) +#define LD_RQPN BIT(31) + +#define BCN_VALID BIT(16) +#define BCN_HEAD(x) (((x) & 0xFF) << 8) +#define BCN_HEAD_MASK 0xFF00 + +#define BLK_DESC_NUM_SHIFT 4 +#define BLK_DESC_NUM_MASK 0xF + +#define DROP_DATA_EN BIT(9) + +#define EN_AMPDU_RTY_NEW BIT(7) + +#define _INIRTSMCS_SEL(x) ((x) & 0x3F) + +#define _SPEC_SIFS_CCK(x) ((x) & 0xFF) +#define _SPEC_SIFS_OFDM(x) (((x) & 0xFF) << 8) + +#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 + +#define USE_SHORT_G1 BIT(20) + +#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) + +#define RETRY_LIMIT_SHORT_SHIFT 8 +#define RETRY_LIMIT_LONG_SHIFT 0 + +#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) +#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) + +#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) +#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) + +#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 + +#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) + +#define _SIFS_CCK_CTX(x) ((x) & 0xFF) +#define _SIFS_CCK_TRX(x) (((x) & 0xFF) << 8); + +#define _SIFS_OFDM_CTX(x) ((x) & 0xFF) +#define _SIFS_OFDM_TRX(x) (((x) & 0xFF) << 8); + +#define _TBTT_PROHIBIT_HOLD(x) (((x) & 0xFF) << 8) + +#define DIS_EDCA_CNT_DWN BIT(11) + +#define EN_MBSSID BIT(1) +#define EN_TXBCN_RPT BIT(2) +#define EN_BCN_FUNCTION BIT(3) + +#define TSFTR_RST BIT(0) +#define TSFTR1_RST BIT(1) + +#define STOP_BCNQ BIT(6) + +#define DIS_TSF_UDT0_NORMAL_CHIP BIT(4) +#define DIS_TSF_UDT0_TEST_CHIP BIT(5) + +#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) + +#define APSDOFF BIT(6) +#define APSDOFF_STATUS BIT(7) + +#define BW_20MHZ BIT(2) + +#define RATE_BITMAP_ALL 0xFFFFF + +#define RATE_RRSR_CCK_ONLY_1M 0xFFFF1 + +#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) + +#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_DATA 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) + +#define _MIN_SPACE(x) ((x) & 0x7) +#define _SHORT_GI_PADDING(x) (((x) & 0x1F) << 3) + +#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) + +#define SCR_TxUseDK BIT(0) +#define SCR_RxUseDK BIT(1) +#define SCR_TxEncEnable BIT(2) +#define SCR_RxDecEnable BIT(3) +#define SCR_SKByA2 BIT(4) +#define SCR_NoSKMC BIT(5) +#define SCR_TXBCUSEDK BIT(6) +#define SCR_RXBCUSEDK BIT(7) + +#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 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 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 + +#define USB_AGG_EN BIT(3) + +#define MAC_ADDR_LEN 6 +#define LAST_ENTRY_OF_TX_PKT_BUFFER 175/*255 88e*/ + +#define POLLING_LLT_THRESHOLD 20 +#define POLLING_READY_TIMEOUT_COUNT 3000 + +#define MAX_MSS_DENSITY_2T 0x13 +#define MAX_MSS_DENSITY_1T 0x0A + +#define EPROM_CMD_OPERATING_MODE_MASK ((1<<7)|(1<<6)) +#define EPROM_CMD_CONFIG 0x3 +#define EPROM_CMD_LOAD 1 + +#define HWSET_MAX_SIZE_92S HWSET_MAX_SIZE + +#define HAL_8192C_HW_GPIO_WPS_BIT BIT(2) + +#define RA_LSSIWRITE_8821A 0xc90 +#define RB_LSSIWRITE_8821A 0xe90 + +#define RA_PIREAD_8821A 0xd04 +#define RB_PIREAD_8821A 0xd44 +#define RA_SIREAD_8821A 0xd08 +#define RB_SIREAD_8821A 0xd48 + +#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_TXDADATYPE 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 + +#define RFPGA0_RFMOD 0x800 + +#define RFPGA0_TXINFO 0x804 +#define RFPGA0_PSDFUNCTION 0x808 + +#define RFPGA0_TXGAINSTAGE 0x80c + +#define RFPGA0_RFTIMING1 0x810 +#define RFPGA0_RFTIMING2 0x814 + +#define RFPGA0_XA_HSSIPARAMETER1 0x820 +#define RFPGA0_XA_HSSIPARAMETER2 0x824 +#define RFPGA0_XB_HSSIPARAMETER1 0x828 +#define RFPGA0_XB_HSSIPARAMETER2 0x82c +#define RCCAONSEC 0x838 + +#define RFPGA0_XA_LSSIPARAMETER 0x840 +#define RFPGA0_XB_LSSIPARAMETER 0x844 +#define RL1PEAKTH 0x848 + +#define RFPGA0_RFWAKEUPPARAMETER 0x850 +#define RFPGA0_RFSLEEPUPPARAMETER 0x854 + +#define RFPGA0_XAB_SWITCHCONTROL 0x858 +#define RFPGA0_XCD_SWITCHCONTROL 0x85c + +#define RFPGA0_XA_RFINTERFACEOE 0x860 +#define RFC_AREA 0x860 +#define RFPGA0_XB_RFINTERFACEOE 0x864 + +#define RFPGA0_XAB_RFINTERFACESW 0x870 +#define RFPGA0_XCD_RFINTERFACESW 0x874 + +#define rFPGA0_XAB_RFPARAMETER 0x878 +#define rFPGA0_XCD_RFPARAMETER 0x87c + +#define RFPGA0_ANALOGPARAMETER1 0x880 +#define RFPGA0_ANALOGPARAMETER2 0x884 +#define RFPGA0_ANALOGPARAMETER3 0x888 +#define RFPGA0_ANALOGPARAMETER4 0x88c + +#define RFPGA0_XA_LSSIREADBACK 0x8a0 +#define RFPGA0_XB_LSSIREADBACK 0x8a4 +#define RFPGA0_XC_LSSIREADBACK 0x8a8 +//#define RFPGA0_XD_LSSIREADBACK 0x8ac +#define RRFMOD 0x8ac +#define RHSSIREAD_8821AE 0x8b0 + +#define RFPGA0_PSDREPORT 0x8b4 +#define TRANSCEIVEA_HSPI_READBACK 0x8b8 +#define TRANSCEIVEB_HSPI_READBACK 0x8bc +//#define REG_SC_CNT 0x8c4 +#define RADC_BUF_CLK 0x8c4 +#define RFPGA0_XAB_RFINTERFACERB 0x8e0 +#define RFPGA0_XCD_RFINTERFACERB 0x8e4 + +#define RFPGA1_RFMOD 0x900 + +#define RFPGA1_TXBLOCK 0x904 +#define RFPGA1_DEBUGSELECT 0x908 +#define RFPGA1_TXINFO 0x90c + +#define RCCK_SYSTEM 0xa00 +#define BCCK_SYSTEM 0x10 + + +#define RCCK0_AFESETTING 0xa04 +#define RCCK0_CCA 0xa08 + +#define RCCK0_RXAGC1 0xa0c +#define RCCK0_RXAGC2 0xa10 + +#define RCCK0_RXHP 0xa14 + +#define RCCK0_DSPPARAMETER1 0xa18 +#define RCCK0_DSPPARAMETER2 0xa1c + +#define RCCK0_TXFILTER1 0xa20 +#define RCCK0_TXFILTER2 0xa24 +#define RCCK0_DEBUGPORT 0xa28 +#define RCCK0_FALSEALARMREPORT 0xa2c +#define RCCK0_TRSSIREPORT 0xa50 +#define RCCK0_RXREPORT 0xa54 +#define RCCK0_FACOUNTERLOWER 0xa5c +#define RCCK0_FACOUNTERUPPER 0xa58 +#define RCCK0_CCA_CNT 0xa60 + + +/* 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 + +/*RSSI Dump*/ +#define RA_RSSI_DUMP 0xBF0 +#define RB_RSSI_DUMP 0xBF1 +#define RS1_RX_EVM_DUMP 0xBF4 +#define RS2_RX_EVM_DUMP 0xBF5 +#define RA_RX_SNR_DUMP 0xBF6 +#define RB_RX_SNR_DUMP 0xBF7 +#define RA_CFO_SHORT_DUMP 0xBF8 +#define RB_CFO_SHORT_DUMP 0xBFA +#define RA_CFO_LONG_DUMP 0xBEC +#define RB_CFO_LONG_DUMP 0xBEE + +/*Page C*/ +#define ROFDM0_LSTF 0xc00 + +#define ROFDM0_TRXPATHENABLE 0xc04 +#define ROFDM0_TRMUXPAR 0xc08 +#define ROFDM0_TRSWISOLATION 0xc0c + +#define ROFDM0_XARXAFE 0xc10 +#define ROFDM0_XARXIQIMBALANCE 0xc14 +#define ROFDM0_XBRXAFE 0xc18 +#define ROFDM0_XBRXIQIMBALANCE 0xc1c +#define ROFDM0_XCRXAFE 0xc20 +#define ROFDM0_XCRXIQIMBANLANCE 0xc24 +#define ROFDM0_XDRXAFE 0xc28 +#define ROFDM0_XDRXIQIMBALANCE 0xc2c + +#define ROFDM0_RXDETECTOR1 0xc30 +#define ROFDM0_RXDETECTOR2 0xc34 +#define ROFDM0_RXDETECTOR3 0xc38 +#define ROFDM0_RXDETECTOR4 0xc3c + +#define ROFDM0_RXDSP 0xc40 +#define ROFDM0_CFOANDDAGC 0xc44 +#define ROFDM0_CCADROPTHRESHOLD 0xc48 +#define ROFDM0_ECCATHRESHOLD 0xc4c + +#define ROFDM0_XAAGCCORE1 0xc50 +#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 +#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 + +/*Path_A RFE cotrol */ +#define RA_RFE_CTRL_8812 0xcb8 +/*Path_B RFE control*/ +#define RB_RFE_CTRL_8812 0xeb8 + +#define ROFDM0_RXHPPARAMETER 0xce0 +#define ROFDM0_TXPSEUDONOISEWGT 0xce4 +#define ROFDM0_FRAMESYNC 0xcf0 +#define ROFDM0_DFSREPORT 0xcf4 + + +#define ROFDM1_LSTF 0xd00 +#define ROFDM1_TRXPATHENABLE 0xd04 + +#define ROFDM1_CF0 0xd08 +#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 +#define ROFDM_PHYCOUNTER2 0xda4 +#define ROFDM_PHYCOUNTER3 0xda8 + +#define ROFDM_SHORTCFOAB 0xdac +#define ROFDM_SHORTCFOCD 0xdb0 +#define ROFDM_LONGCFOAB 0xdb4 +#define ROFDM_LONGCFOCD 0xdb8 +#define ROFDM_TAILCF0AB 0xdbc +#define ROFDM_TAILCF0CD 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 + +#define RTXAGC_A_CCK11_CCK1 0xc20 +#define RTXAGC_A_OFDM18_OFDM6 0xc24 +#define RTXAGC_A_OFDM54_OFDM24 0xc28 +#define RTXAGC_A_MCS03_MCS00 0xc2c +#define RTXAGC_A_MCS07_MCS04 0xc30 +#define RTXAGC_A_MCS11_MCS08 0xc34 +#define RTXAGC_A_MCS15_MCS12 0xc38 +#define RTXAGC_A_NSS1INDEX3_NSS1INDEX0 0xc3c +#define RTXAGC_A_NSS1INDEX7_NSS1INDEX4 0xc40 +#define RTXAGC_A_NSS2INDEX1_NSS1INDEX8 0xc44 +#define RTXAGC_A_NSS2INDEX5_NSS2INDEX2 0xc48 +#define RTXAGC_A_NSS2INDEX9_NSS2INDEX6 0xc4c +#define RTXAGC_B_CCK11_CCK1 0xe20 +#define RTXAGC_B_OFDM18_OFDM6 0xe24 +#define RTXAGC_B_OFDM54_OFDM24 0xe28 +#define RTXAGC_B_MCS03_MCS00 0xe2c +#define RTXAGC_B_MCS07_MCS04 0xe30 +#define RTXAGC_B_MCS11_MCS08 0xe34 +#define RTXAGC_B_MCS15_MCS12 0xe38 +#define RTXAGC_B_NSS1INDEX3_NSS1INDEX0 0xe3c +#define RTXAGC_B_NSS1INDEX7_NSS1INDEX4 0xe40 +#define RTXAGC_B_NSS2INDEX1_NSS1INDEX8 0xe44 +#define RTXAGC_B_NSS2INDEX5_NSS2INDEX2 0xe48 +#define RTXAGC_B_NSS2INDEX9_NSS2INDEX6 0xe4c + +#define RA_TXPWRTRAING 0xc54 +#define RB_TXPWRTRAING 0xe54 + + +#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 + +#define RZEBRA1_HSSIENABLE 0x0 +#define RZEBRA1_TRXENABLE1 0x1 +#define RZEBRA1_TRXENABLE2 0x2 +#define RZEBRA1_AGC 0x4 +#define RZEBRA1_CHARGEPUMP 0x5 +#define RZEBRA1_CHANNEL 0x7 + +#define RZEBRA1_TXGAIN 0x8 +#define RZEBRA1_TXLPF 0x9 +#define RZEBRA1_RXLPF 0xb +#define RZEBRA1_RXHPFCORNER 0xc + +#define RGLOBALCTRL 0 +#define RRTL8256_TXLPF 19 +#define RRTL8256_RXLPF 11 +#define RRTL8258_TXLPF 0x11 +#define RRTL8258_RXLPF 0x13 +#define RRTL8258_RSSILPF 0xa + +#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 +#define RF_CHNLBW 0x18 +#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_T_METER_88E 0x42 +#define RF_T_METER_8812A 0x42 + +#define RF_SYN_G1 0x25 +#define RF_SYN_G2 0x26 +#define RF_SYN_G3 0x27 +#define RF_SYN_G4 0x28 +#define RF_SYN_G5 0x29 +#define RF_SYN_G6 0x2A +#define RF_SYN_G7 0x2B +#define RF_SYN_G8 0x2C + +#define RF_RCK_OS 0x30 +#define RF_TXPA_G1 0x31 +#define RF_TXPA_G2 0x32 +#define RF_TXPA_G3 0x33 + +#define RF_TX_BIAS_A 0x35 +#define RF_TX_BIAS_D 0x36 +#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 + +#define RF_APK 0x63 + +#define RF_WE_LUT 0xEF + +#define BBBRESETB 0x100 +#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 BCCKTXLENGHT 0xffff0000 +#define BCCKTXCRC16 0xffff +#define BCCKTXSTATUS 0x1 +#define BOFDMTXSTATUS 0x2 +#define IS_BB_REG_OFFSET_92S(_Offset) \ + ((_Offset >= 0x800) && (_Offset <= 0xfff)) + +#define BRFMOD 0x1 +#define BJAPANMODE 0x2 +#define BCCKTXSC 0x30 +/* Block & Path enable*/ +#define ROFDMCCKEN 0x808 +#define BCCKEN 0x10000000 +#define BOFDMEN 0x20000000 +#define RRXPATH 0x808 /* Rx antenna*/ +#define BRXPATH 0xff +#define RTXPATH 0x80c /* Tx antenna*/ +#define BTXPATH 0x0fffffff +#define RCCK_RX 0xa04 /* for cck rx path selection*/ +#define BCCK_RX 0x0c000000 +#define RVHTLEN_USE_LSIG 0x8c3 /* Use LSIG for VHT length*/ + + +#define BOFDMRXADCPHASE 0x10000 +#define BOFDMTXDACPHASE 0x40000 +#define BXATXAGC 0x3f + +#define BXBTXAGC 0xf00 +#define BXCTXAGC 0xf000 +#define BXDTXAGC 0xf0000 + +#define BPASTART 0xf0000000 +#define BTRSTART 0x00f00000 +#define BRFSTART 0x0000f000 +#define BBBSTART 0x000000f0 +#define BBBCCKSTART 0x0000000f +#define BPAEND 0xf +#define BTREND 0x0f000000 +#define BRFEND 0x000f0000 +#define BCCAMASK 0x000000f0 +#define BR2RCCAMASK 0x00000f00 +#define BHSSI_R2TDELAY 0xf8000000 +#define BHSSI_T2RDELAY 0xf80000 +#define BCONTXHSSI 0x400 +#define BIGFROMCCK 0x200 +#define BAGCADDRESS 0x3f +#define BRXHPTX 0x7000 +#define BRXHP2RX 0x38000 +#define BRXHPCCKINI 0xc0000 +#define BAGCTXCODE 0xc00000 +#define BAGCRXCODE 0x300000 + +#define B3WIREDATALENGTH 0x800 +#define B3WIREADDREAALENGTH 0x400 + +#define B3WIRERFPOWERDOWN 0x1 +#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 + +#define BRFSI_TRSW 0x20 +#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 +#define BLSSIREADEDGE 0x80000000 + +#define BLSSIREADBACKDATA 0xfffff + +#define BLSSIREADOKFLAG 0x1000 +#define BCCKSAMPLERATE 0x8 +#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 +#define B80MCLKDELAY 0x18000000 +#define BAFEWATCHDOGENABLE 0x20000000 + +#define BXTALCAP01 0xc0000000 +#define BXTALCAP23 0x3 +#define BXTALCAP92X 0x0f000000 +#define BXTALCAP 0x0f000000 + +#define BINTDIFCLKENABLE 0x400 +#define BEXTSIGCLKENABLE 0x800 +#define BBANDGAP_MBIAS_POWERUP 0x10000 +#define BAD11SH_GAIN 0xc0000 +#define BAD11NPUT_RANGE 0x700000 +#define BAD110P_CURRENT 0x3800000 +#define BLPATH_LOOPBACK 0x4000000 +#define BQPATH_LOOPBACK 0x8000000 +#define BAFE_LOOPBACK 0x10000000 +#define BDA10_SWING 0x7e0 +#define BDA10_REVERSE 0x800 +#define BDA_CLK_SOURCE 0x1000 +#define BDA7INPUT_RANGE 0x6000 +#define BDA7_GAIN 0x38000 +#define BDA7OUTPUT_CM_MODE 0x40000 +#define BDA7INPUT_CM_MODE 0x380000 +#define BDA7CURRENT 0xc00000 +#define BREGULATOR_ADJUST 0x7000000 +#define BAD11POWERUP_ATTX 0x1 +#define BDA10PS_ATTX 0x10 +#define BAD11POWERUP_ATRX 0x100 +#define BDA10PS_ATRX 0x1000 +#define BCCKRX_AGC_FORMAT 0x200 +#define BPSDFFT_SAMPLE_POINT 0xc000 +#define BPSD_AVERAGE_NUM 0x3000 +#define BIQPATH_CONTROL 0xc00 +#define BPSD_FREQ 0x3ff +#define BPSD_ANTENNA_PATH 0x30 +#define BPSD_IQ_SWITCH 0x40 +#define BPSD_RX_TRIGGER 0x400000 +#define BPSD_TX_TRIGGER 0x80000000 +#define BPSD_SINE_TONE_SCALE 0x7f000000 +#define BPSD_REPORT 0xffff + +#define BOFDM_TXSC 0x30000000 +#define BCCK_TXON 0x1 +#define BOFDM_TXON 0x2 +#define BDEBUG_PAGE 0xfff +#define BDEBUG_ITEM 0xff +#define BANTL 0x10 +#define BANT_NONHT 0x100 +#define BANT_HT1 0x1000 +#define BANT_HT2 0x10000 +#define BANT_HT1S1 0x100000 +#define BANT_NONHTS1 0x1000000 + +#define BCCK_BBMODE 0x3 +#define BCCK_TXPOWERSAVING 0x80 +#define BCCK_RXPOWERSAVING 0x40 + +#define BCCK_SIDEBAND 0x10 + +#define BCCK_SCRAMBLE 0x8 +#define BCCK_ANTDIVERSITY 0x8000 +#define BCCK_CARRIER_RECOVERY 0x4000 +#define BCCK_TXRATE 0x3000 +#define BCCK_DCCANCEL 0x0800 +#define BCCK_ISICANCEL 0x0400 +#define BCCK_MATCH_FILTER 0x0200 +#define BCCK_EQUALIZER 0x0100 +#define BCCK_PREAMBLE_DETECT 0x800000 +#define BCCK_FAST_FALSECCA 0x400000 +#define BCCK_CH_ESTSTART 0x300000 +#define BCCK_CCA_COUNT 0x080000 +#define BCCK_CS_LIM 0x070000 +#define BCCK_BIST_MODE 0x80000000 +#define BCCK_CCAMASK 0x40000000 +#define BCCK_TX_DAC_PHASE 0x4 +#define BCCK_RX_ADC_PHASE 0x20000000 +#define BCCKR_CP_MODE 0x0100 +#define BCCK_TXDC_OFFSET 0xf0 +#define BCCK_RXDC_OFFSET 0xf +#define BCCK_CCA_MODE 0xc000 +#define BCCK_FALSECS_LIM 0x3f00 +#define BCCK_CS_RATIO 0xc00000 +#define BCCK_CORGBIT_SEL 0x300000 +#define BCCK_PD_LIM 0x0f0000 +#define BCCK_NEWCCA 0x80000000 +#define BCCK_RXHP_OF_IG 0x8000 +#define BCCK_RXIG 0x7f00 +#define BCCK_LNA_POLARITY 0x800000 +#define BCCK_RX1ST_BAIN 0x7f0000 +#define BCCK_RF_EXTEND 0x20000000 +#define BCCK_RXAGC_SATLEVEL 0x1f000000 +#define BCCK_RXAGC_SATCOUNT 0xe0 +#define bCCKRxRFSettle 0x1f +#define BCCK_FIXED_RXAGC 0x8000 +#define BCCK_ANTENNA_POLARITY 0x2000 +#define BCCK_TXFILTER_TYPE 0x0c00 +#define BCCK_RXAGC_REPORTTYPE 0x0300 +#define BCCK_RXDAGC_EN 0x80000000 +#define BCCK_RXDAGC_PERIOD 0x20000000 +#define BCCK_RXDAGC_SATLEVEL 0x1f000000 +#define BCCK_TIMING_RECOVERY 0x800000 +#define BCCK_TXC0 0x3f0000 +#define BCCK_TXC1 0x3f000000 +#define BCCK_TXC2 0x3f +#define BCCK_TXC3 0x3f00 +#define BCCK_TXC4 0x3f0000 +#define BCCK_TXC5 0x3f000000 +#define BCCK_TXC6 0x3f +#define BCCK_TXC7 0x3f00 +#define BCCK_DEBUGPORT 0xff0000 +#define BCCK_DAC_DEBUG 0x0f000000 +#define BCCK_FALSEALARM_ENABLE 0x8000 +#define BCCK_FALSEALARM_READ 0x4000 +#define BCCK_TRSSI 0x7f +#define BCCK_RXAGC_REPORT 0xfe +#define BCCK_RXREPORT_ANTSEL 0x80000000 +#define BCCK_RXREPORT_MFOFF 0x40000000 +#define BCCK_RXREPORT_SQLOSS 0x20000000 +#define BCCK_RXREPORT_PKTLOSS 0x10000000 +#define BCCK_RXREPORT_LOCKEDBIT 0x08000000 +#define BCCK_RXREPORT_RATEERROR 0x04000000 +#define BCCK_RXREPORT_RXRATE 0x03000000 +#define BCCK_RXFA_COUNTER_LOWER 0xff +#define BCCK_RXFA_COUNTER_UPPER 0xff000000 +#define BCCK_RXHPAGC_START 0xe000 +#define BCCK_RXHPAGC_FINAL 0x1c00 +#define BCCK_RXFALSEALARM_ENABLE 0x8000 +#define BCCK_FACOUNTER_FREEZE 0x4000 +#define BCCK_TXPATH_SEL 0x10000000 +#define BCCK_DEFAULT_RXPATH 0xc000000 +#define BCCK_OPTION_RXPATH 0x3000000 + +#define BNUM_OFSTF 0x3 +#define BSHIFT_L 0xc0 +#define BGI_TH 0xc +#define BRXPATH_A 0x1 +#define BRXPATH_B 0x2 +#define BRXPATH_C 0x4 +#define BRXPATH_D 0x8 +#define BTXPATH_A 0x1 +#define BTXPATH_B 0x2 +#define BTXPATH_C 0x4 +#define BTXPATH_D 0x8 +#define BTRSSI_FREQ 0x200 +#define BADC_BACKOFF 0x3000 +#define BDFIR_BACKOFF 0xc000 +#define BTRSSI_LATCH_PHASE 0x10000 +#define BRX_LDC_OFFSET 0xff +#define BRX_QDC_OFFSET 0xff00 +#define BRX_DFIR_MODE 0x1800000 +#define BRX_DCNF_TYPE 0xe000000 +#define BRXIQIMB_A 0x3ff +#define BRXIQIMB_B 0xfc00 +#define BRXIQIMB_C 0x3f0000 +#define BRXIQIMB_D 0xffc00000 +#define BDC_DC_NOTCH 0x60000 +#define BRXNB_NOTCH 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 BRADIO_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 BCFOLOOPBACK 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 BTXIQDCOFFSET 0xff00 +#define BTXDFIRMODE 0x10000 +#define BTXPESUDO_NOISEON 0x4000000 +#define BTXPESUDO_NOISE_A 0xff +#define BTXPESUDO_NOISE_B 0xff00 +#define BTXPESUDO_NOISE_C 0xff0000 +#define BTXPESUDO_NOISE_D 0xff000000 +#define BCCA_DROPOPTION 0x20000 +#define BCCA_DROPTHRES 0xfff00000 +#define BEDCCA_H 0xf +#define BEDCCA_L 0xf0 +#define BLAMBDA_ED 0x300 +#define BRX_INITIALGAIN 0x7f +#define BRX_ANTDIV_EN 0x80 +#define BRX_AGC_ADDRESS_FOR_LNA 0x7f00 +#define BRX_HIGHPOWER_FLOW 0x8000 +#define BRX_AGC_FREEZE_THRES 0xc0000 +#define BRX_FREEZESTEP_AGC1 0x300000 +#define BRX_FREEZESTEP_AGC2 0xc00000 +#define BRX_FREEZESTEP_AGC3 0x3000000 +#define BRX_FREEZESTEP_AGC0 0xc000000 +#define BRXRSSI_CMP_EN 0x10000000 +#define BRXQUICK_AGCEN 0x20000000 +#define BRXAGC_FREEZE_THRES_MODE 0x40000000 +#define BRX_OVERFLOW_CHECKTYPE 0x80000000 +#define BRX_AGCSHIFT 0x7f +#define BTRSW_TRI_ONLY 0x80 +#define BPOWER_THRES 0x300 +#define BRXAGC_EN 0x1 +#define BRXAGC_TOGETHER_EN 0x2 +#define BRXAGC_MIN 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 +#define BRSSI_GEN 0x7f000000 +#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 BRXPROCESS_TIME_DAGC 0x300000 +#define BRXSETTLE_HSSI 0x400000 +#define BRXPROCESS_TIME_BBPPW 0x800000 +#define BRXANTENNA_POWER_SHIFT 0x3000000 +#define BRSSI_TABLE_SELECT 0xc000000 +#define BRXHP_FINAL 0x7000000 +#define BRXHPSETTLE_BBP 0x7 +#define BRXHTSETTLE_HSSI 0x8 +#define BRXHTSETTLE_RXHP 0x70 +#define BRXHTSETTLE_BBPPW 0x80 +#define BRXHTSETTLE_IDLE 0x300 +#define BRXHTSETTLE_RESERVED 0x1c00 +#define BRXHT_RXHP_EN 0x8000 +#define BRXAGC_FREEZE_THRES 0x30000 +#define BRXAGC_TOGETHEREN 0x40000 +#define BRXHTAGC_MIN 0x80000 +#define BRXHTAGC_EN 0x100000 +#define BRXHTDAGC_EN 0x200000 +#define BRXHT_RXHP_BBP 0x1c00000 +#define BRXHT_RXHP_FINAL 0xe0000000 +#define BRXPW_RADIO_TH 0x3 +#define BRXPW_RADIO_EN 0x4 +#define BRXMF_HOLD 0x3800 +#define BRXPD_DELAY_TH1 0x38 +#define BRXPD_DELAY_TH2 0x1c0 +#define BRXPD_DC_COUNT_MAX 0x600 +#define BRXPD_DELAY_TH 0x8000 +#define BRXPROCESS_DELAY 0xf0000 +#define BRXSEARCHRANGE_GI2_EARLY 0x700000 +#define BRXFRAME_FUARD_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 BMF_WEIGHT_SUM 0x300000 +#define BMINIDX_TH 0x7f000000 +#define BDAFORMAT 0x40000 +#define BTXCH_EMU_ENABLE 0x01000000 +#define BTRSW_ISOLATION_A 0x7f +#define BTRSW_ISOLATION_B 0x7f00 +#define BTRSW_ISOLATION_C 0x7f0000 +#define BTRSW_ISOLATION_D 0x7f000000 +#define BEXT_LNA_GAIN 0x7c00 + +#define BSTBC_EN 0x4 +#define BANTENNA_MAPPING 0x10 +#define BNSS 0x20 +#define BCFO_ANTSUM_ID 0x200 +#define BPHY_COUNTER_RESET 0x8000000 +#define BCFO_REPORT_GET 0x4000000 +#define BOFDM_CONTINUE_TX 0x10000000 +#define BOFDM_SINGLE_CARRIER 0x20000000 +#define BOFDM_SINGLE_TONE 0x40000000 +#define BHT_DETECT 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 BSHORTCFOT_LENGTH 12 +#define BSHORTCFOF_LENGTH 11 +#define BLONGCFO 0x7ff +#define BLONGCFOT_LENGTH 11 +#define BLONGCFOF_LENGTH 11 +#define BTAILCFO 0x1fff +#define BTAILCFOT_LENGTH 13 +#define BTAILCFOF_LENGTH 12 +#define BNOISE_EN_PWDB 0xffff +#define BCC_POWER_DB 0xffff0000 +#define BMOISE_PWDB 0xffff +#define BPOWERMEAST_LENGTH 10 +#define BPOWERMEASF_LENGTH 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 BSNR_EVMT_LENGTH 8 +#define BSNR_EVMF_LENGTH 1 +#define BCSI1ST 0xff +#define BCSI2ND 0xff00 +#define BRXEVM1ST 0xff0000 +#define BRXEVM2ND 0xff000000 +#define BSIGEVM 0xff +#define BPWDB 0xff00 +#define BSGIEN 0x10000 + +#define BSFACTOR_QMA1 0xf +#define BSFACTOR_QMA2 0xf0 +#define BSFACTOR_QMA3 0xf00 +#define BSFACTOR_QMA4 0xf000 +#define BSFACTOR_QMA5 0xf0000 +#define BSFACTOR_QMA6 0xf0000 +#define BSFACTOR_QMA7 0xf00000 +#define BSFACTOR_QMA8 0xf000000 +#define BSFACTOR_QMA9 0xf0000000 +#define BCSI_SCHEME 0x100000 + +#define BNOISE_LVL_TOP_SET 0x3 +#define BCHSMOOTH 0x4 +#define BCHSMOOTH_CFG1 0x38 +#define BCHSMOOTH_CFG2 0x1c0 +#define BCHSMOOTH_CFG3 0xe00 +#define BCHSMOOTH_CFG4 0x7000 +#define BMRCMODE 0x800000 +#define BTHEVMCFG 0x7000000 + +#define BLOOP_FIT_TYPE 0x1 +#define BUPD_CFO 0x40 +#define BUPD_CFO_OFFDATA 0x80 +#define BADV_UPD_CFO 0x100 +#define BADV_TIME_CTRL 0x800 +#define BUPD_CLKO 0x1000 +#define BFC 0x6000 +#define BTRACKING_MODE 0x8000 +#define BPHCMP_ENABLE 0x10000 +#define BUPD_CLKO_LTF 0x20000 +#define BCOM_CH_CFO 0x40000 +#define BCSI_ESTI_MODE 0x80000 +#define BADV_UPD_EQZ 0x100000 +#define BUCHCFG 0x7000000 +#define BUPDEQZ 0x8000000 + +#define BRX_PESUDO_NOISE_ON 0x20000000 +#define BRX_PESUDO_NOISE_A 0xff +#define BRX_PESUDO_NOISE_B 0xff00 +#define BRX_PESUDO_NOISE_C 0xff0000 +#define BRX_PESUDO_NOISE_D 0xff000000 +#define BRX_PESUDO_NOISESTATE_A 0xffff +#define BRX_PESUDO_NOISESTATE_B 0xffff0000 +#define BRX_PESUDO_NOISESTATE_C 0xffff +#define BRX_PESUDO_NOISESTATE_D 0xffff0000 + +#define BZEBRA1_HSSIENABLE 0x8 +#define BZEBRA1_TRXCONTROL 0xc00 +#define BZEBRA1_TRXGAINSETTING 0x07f +#define BZEBRA1_RXCOUNTER 0xc00 +#define BZEBRA1_TXCHANGEPUMP 0x38 +#define BZEBRA1_RXCHANGEPUMP 0x7 +#define BZEBRA1_CHANNEL_NUM 0xf80 +#define BZEBRA1_TXLPFBW 0x400 +#define BZEBRA1_RXLPFBW 0x600 + +#define BRTL8256REG_MODE_CTRL1 0x100 +#define BRTL8256REG_MODE_CTRL0 0x40 +#define BRTL8256REG_TXLPFBW 0x18 +#define BRTL8256REG_RXLPFBW 0x600 + +#define BRTL8258_TXLPFBW 0xc +#define BRTL8258_RXLPFBW 0xc00 +#define BRTL8258_RSSILPFBW 0xc0 + +#define BBYTE0 0x1 +#define BBYTE1 0x2 +#define BBYTE2 0x4 +#define BBYTE3 0x8 +#define BWORD0 0x3 +#define BWORD1 0xc +#define BWORD 0xf + +#define MASKBYTE0 0xff +#define MASKBYTE1 0xff00 +#define MASKBYTE2 0xff0000 +#define MASKBYTE3 0xff000000 +#define MASKHWORD 0xffff0000 +#define MASKLWORD 0x0000ffff +#define MASKDWORD 0xffffffff +#define MASK12BITS 0xfff +#define MASKH4BITS 0xf0000000 +#define MASKOFDM_D 0xffc00000 +#define MASKCCK 0x3f3f3f3f + +#define MASK4BITS 0x0f +#define MASK20BITS 0xfffff +#define RFREG_OFFSET_MASK 0xfffff + +#define BENABLE 0x1 +#define BDISABLE 0x0 + +#define LEFT_ANTENNA 0x0 +#define RIGHT_ANTENNA 0x1 + +#define TCHECK_TXSTATUS 500 +#define TUPDATE_RXCOUNTER 100 + +#define REG_UN_used_register 0x01bf + +/* WOL bit information */ +#define HAL92C_WOL_PTK_UPDATE_EVENT BIT(0) +#define HAL92C_WOL_GTK_UPDATE_EVENT BIT(1) +#define HAL92C_WOL_DISASSOC_EVENT BIT(2) +#define HAL92C_WOL_DEAUTH_EVENT BIT(3) +#define HAL92C_WOL_FW_DISCONNECT_EVENT BIT(4) + +#define WOL_REASON_PTK_UPDATE BIT(0) +#define WOL_REASON_GTK_UPDATE BIT(1) +#define WOL_REASON_DISASSOC BIT(2) +#define WOL_REASON_DEAUTH BIT(3) +#define WOL_REASON_FW_DISCONNECT BIT(4) + +#define RA_RFE_PINMUX 0xcb0 /* Path_A RFE cotrol pinmux*/ +#define RB_RFE_PINMUX 0xeb0 /* Path_B RFE control pinmux*/ + +#define RA_RFE_INV 0xcb4 +#define RB_RFE_INV 0xeb4 + +/* RXIQC */ +#define RA_RXIQC_AB 0xc10 /*RxIQ imblance matrix coeff. A & B*/ +#define RA_RXIQC_CD 0xc14 /*RxIQ imblance matrix coeff. C & D*/ +#define RA_TXSCALE 0xc1c /* Pah_A TX scaling factor*/ +#define RB_TXSCALE 0xe1c /* Path_B TX scaling factor*/ +#define RB_RXIQC_AB 0xe10 /*RxIQ imblance matrix coeff. A & B*/ +#define RB_RXIQC_CD 0xe14 /*RxIQ imblance matrix coeff. C & D*/ +#define RXIQC_AC 0x02ff /*bit mask for IQC matrix element A & C*/ +#define RXIQC_BD 0x02ff0000 /*bit mask for IQC matrix element A & C*/ + +/* 2 EFUSE_TEST (For RTL8723 partially) */ +#define EFUSE_SEL(x) (((x) & 0x3) << 8) +#define EFUSE_SEL_MASK 0x300 +#define EFUSE_WIFI_SEL_0 0x0 + +/*REG_MULTI_FUNC_CTRL(For RTL8723 Only)*/ +#define WL_HWPDN_EN BIT(0) /* Enable GPIO[9] as WiFi HW PDn source*/ +#define WL_HWPDN_SL BIT(1) /* WiFi HW PDn polarity control*/ +#define WL_FUNC_EN BIT(2) // WiFi function enable +#define WL_HWROF_EN BIT(3) // Enable GPIO[9] as WiFi RF HW PDn source +#define BT_HWPDN_EN BIT(16) // Enable GPIO[11] as BT HW PDn source +#define BT_HWPDN_SL BIT(17) // BT HW PDn polarity control +#define BT_FUNC_EN BIT(18) // BT function enable +#define BT_HWROF_EN BIT(19) // Enable GPIO[11] as BT/GPS RF HW PDn source +#define GPS_HWPDN_EN BIT(20) // Enable GPIO[10] as GPS HW PDn source +#define GPS_HWPDN_SL BIT(21) // GPS HW PDn polarity control +#define GPS_FUNC_EN BIT(22) // GPS function enable + + +#define BMASKBYTE0 0xff +#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 + +#define BRFREGOFFSETMASK 0xfffff + +#define ODM_REG_CCK_RPT_FORMAT_11AC 0x804 +#define ODM_REG_BB_RX_PATH_11AC 0x808 +/*PAGE 9*/ +#define ODM_REG_OFDM_FA_RST_11AC 0x9A4 +/*PAGE A*/ +#define ODM_REG_CCK_CCA_11AC 0xA0A +#define ODM_REG_CCK_FA_RST_11AC 0xA2C +#define ODM_REG_CCK_FA_11AC 0xA5C +/*PAGE C*/ +#define ODM_REG_IGI_A_11AC 0xC50 +/*PAGE E*/ +#define ODM_REG_IGI_B_11AC 0xE50 +/*PAGE F*/ +#define ODM_REG_OFDM_FA_11AC 0xF48 + + +//2 MAC REG LIST + + + + +//DIG Related +#define ODM_BIT_IGI_11AC 0xFFFFFFFF +#define ODM_BIT_CCK_RPT_FORMAT_11AC BIT16 +#define ODM_BIT_BB_RX_PATH_11AC 0xF + +typedef enum AGGRE_SIZE{ + HT_AGG_SIZE_8K = 0, + HT_AGG_SIZE_16K = 1, + HT_AGG_SIZE_32K = 2, + HT_AGG_SIZE_64K = 3, + VHT_AGG_SIZE_128K = 4, + VHT_AGG_SIZE_256K = 5, + VHT_AGG_SIZE_512K = 6, + VHT_AGG_SIZE_1024K = 7, +}AGGRE_SIZE_E, *PAGGRE_SIZE_E; + +#define REG_AMPDU_MAX_LENGTH_8812 0x0458 + +#endif --- linux-3.13.0.orig/drivers/staging/rtl8821ae/rtl8821ae/rf.c +++ linux-3.13.0/drivers/staging/rtl8821ae/rtl8821ae/rf.c @@ -0,0 +1,464 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#include "../wifi.h" +#include "reg.h" +#include "def.h" +#include "phy.h" +#include "rf.h" +#include "dm.h" + +static bool _rtl8821ae_phy_rf6052_config_parafile(struct ieee80211_hw *hw); + +void rtl8821ae_phy_rf6052_set_bandwidth(struct ieee80211_hw *hw, u8 bandwidth) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + switch (bandwidth) { + case HT_CHANNEL_WIDTH_20: + rtl_set_rfreg(hw, RF90_PATH_A, RF_CHNLBW, BIT(11)|BIT(10), 3); + rtl_set_rfreg(hw, RF90_PATH_B, RF_CHNLBW, BIT(11)|BIT(10), 3); + break; + case HT_CHANNEL_WIDTH_20_40: + rtl_set_rfreg(hw, RF90_PATH_A, RF_CHNLBW, BIT(11)|BIT(10), 1); + rtl_set_rfreg(hw, RF90_PATH_B, RF_CHNLBW, BIT(11)|BIT(10), 1); + break; + case HT_CHANNEL_WIDTH_80: + rtl_set_rfreg(hw, RF90_PATH_A, RF_CHNLBW, BIT(11)|BIT(10), 0); + rtl_set_rfreg(hw, RF90_PATH_B, RF_CHNLBW, BIT(11)|BIT(10), 0); + break; + default: + RT_TRACE(COMP_ERR, DBG_EMERG, + ("unknown bandwidth: %#X\n", bandwidth)); + break; + } +} + +void rtl8821ae_phy_rf6052_set_cck_txpower(struct ieee80211_hw *hw, + u8 *ppowerlevel) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + u32 tx_agc[2] = {0, 0}, tmpval; + bool turbo_scanoff = false; + u8 idx1, idx2; + u8 *ptr; + u8 direction; + u32 pwrtrac_value; + + if (rtlefuse->eeprom_regulatory != 0) + turbo_scanoff = true; + + if (mac->act_scanning == true) { + tx_agc[RF90_PATH_A] = 0x3f3f3f3f; + tx_agc[RF90_PATH_B] = 0x3f3f3f3f; + + if (turbo_scanoff) { + for (idx1 = RF90_PATH_A; idx1 <= RF90_PATH_B; idx1++) { + tx_agc[idx1] = ppowerlevel[idx1] | + (ppowerlevel[idx1] << 8) | + (ppowerlevel[idx1] << 16) | + (ppowerlevel[idx1] << 24); + } + } + } else { + for (idx1 = RF90_PATH_A; idx1 <= RF90_PATH_B; idx1++) { + tx_agc[idx1] = ppowerlevel[idx1] | + (ppowerlevel[idx1] << 8) | + (ppowerlevel[idx1] << 16) | + (ppowerlevel[idx1] << 24); + } + + if (rtlefuse->eeprom_regulatory == 0) { + tmpval = + (rtlphy->mcs_txpwrlevel_origoffset[0][6]) + + (rtlphy->mcs_txpwrlevel_origoffset[0][7] << + 8); + tx_agc[RF90_PATH_A] += tmpval; + + tmpval = (rtlphy->mcs_txpwrlevel_origoffset[0][14]) + + (rtlphy->mcs_txpwrlevel_origoffset[0][15] << + 24); + tx_agc[RF90_PATH_B] += tmpval; + } + } + + for (idx1 = RF90_PATH_A; idx1 <= RF90_PATH_B; idx1++) { + ptr = (u8 *) (&(tx_agc[idx1])); + for (idx2 = 0; idx2 < 4; idx2++) { + if (*ptr > RF6052_MAX_TX_PWR) + *ptr = RF6052_MAX_TX_PWR; + ptr++; + } + } + rtl8821ae_dm_txpower_track_adjust(hw,1,&direction,&pwrtrac_value); + if (direction ==1){ + tx_agc[0] += pwrtrac_value; + tx_agc[1] += pwrtrac_value; + } else if (direction == 2){ + tx_agc[0] -= pwrtrac_value; + tx_agc[1] -= pwrtrac_value; + } + tmpval = tx_agc[RF90_PATH_A] ; + rtl_set_bbreg(hw, RTXAGC_A_CCK11_CCK1, MASKDWORD, tmpval); + + RTPRINT(rtlpriv, FPHY, PHY_TXPWR, + ("CCK PWR 1~11M (rf-A) = 0x%x (reg 0x%x)\n", tmpval, + RTXAGC_A_CCK11_CCK1)); + + tmpval = tx_agc[RF90_PATH_B] ; + rtl_set_bbreg(hw, RTXAGC_B_CCK11_CCK1, MASKDWORD, tmpval); + + RTPRINT(rtlpriv, FPHY, PHY_TXPWR, + ("CCK PWR 11M (rf-B) = 0x%x (reg 0x%x)\n", tmpval, + RTXAGC_B_CCK11_CCK1)); +} + +static void rtl8821ae_phy_get_power_base(struct ieee80211_hw *hw, + u8 *ppowerlevel_ofdm, u8 *ppowerlevel_bw20, u8 *ppowerlevel_bw40, u8 channel, + u32 *ofdmbase, u32 *mcsbase) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + u32 powerBase0, powerBase1; + u8 i, powerlevel[2]; + + for (i = 0; i < 2; i++) { + powerBase0 = ppowerlevel_ofdm[i]; + + powerBase0 = (powerBase0 << 24) | (powerBase0 << 16) | + (powerBase0 << 8) | powerBase0; + *(ofdmbase + i) = powerBase0; + RTPRINT(rtlpriv, FPHY, PHY_TXPWR, + (" [OFDM power base index rf(%c) = 0x%x]\n", + ((i == 0) ? 'A' : 'B'), *(ofdmbase + i))); + } + + for (i = 0; i < 2; i++) { + if (rtlphy->current_chan_bw == HT_CHANNEL_WIDTH_20) { + powerlevel[i] = ppowerlevel_bw20[i]; + }else{ + powerlevel[i] = ppowerlevel_bw40[i]; + } + powerBase1 = powerlevel[i]; + powerBase1 = (powerBase1 << 24) | + (powerBase1 << 16) | (powerBase1 << 8) | powerBase1; + + *(mcsbase + i) = powerBase1; + + RTPRINT(rtlpriv, FPHY, PHY_TXPWR, + (" [MCS power base index rf(%c) = 0x%x]\n", + ((i == 0) ? 'A' : 'B'), *(mcsbase + i))); + } +} + +static void _rtl8821ae_get_txpower_writeval_by_regulatory(struct ieee80211_hw *hw, + u8 channel, u8 index, + u32 *powerBase0, + u32 *powerBase1, + u32 *p_outwriteval) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + u8 i, chnlgroup = 0, pwr_diff_limit[4],pwr_diff = 0,customer_pwr_diff; + u32 writeVal, customer_limit, rf; + + for (rf = 0; rf < 2; rf++) { + switch (rtlefuse->eeprom_regulatory) { + case 0: + chnlgroup = 0; + + writeVal = + rtlphy->mcs_txpwrlevel_origoffset[chnlgroup][index + + (rf ? 8 : 0)] + + ((index < 2) ? powerBase0[rf] : powerBase1[rf]); + + RTPRINT(rtlpriv, FPHY, PHY_TXPWR, + ("RTK better performance, " + "writeVal(%c) = 0x%x\n", + ((rf == 0) ? 'A' : 'B'), writeVal)); + break; + case 1: + if (rtlphy->pwrgroup_cnt == 1) + chnlgroup = 0; + else { + if(channel<3) + chnlgroup = 0; + else if (channel <6) + chnlgroup = 1; + else if (channel <9) + chnlgroup = 2; + else if (channel <12) + chnlgroup = 3; + else if (channel < 14) + chnlgroup = 4; + else if (channel == 14) + chnlgroup = 5; + } + + writeVal = + rtlphy->mcs_txpwrlevel_origoffset[chnlgroup] + [index + (rf ? 8 : 0)] + ((index < 2) ? + powerBase0[rf] : + powerBase1[rf]); + + RTPRINT(rtlpriv, FPHY, PHY_TXPWR, + ("Realtek regulatory, 20MHz, " + "writeVal(%c) = 0x%x\n", + ((rf == 0) ? 'A' : 'B'), writeVal)); + + break; + case 2: + writeVal = + ((index < 2) ? powerBase0[rf] : powerBase1[rf]); + + RTPRINT(rtlpriv, FPHY, PHY_TXPWR, + ("Better regulatory, " + "writeVal(%c) = 0x%x\n", + ((rf == 0) ? 'A' : 'B'), writeVal)); + break; + case 3: + chnlgroup = 0; + + if (rtlphy->current_chan_bw == HT_CHANNEL_WIDTH_20_40) { + RTPRINT(rtlpriv, FPHY, PHY_TXPWR, + ("customer's limit, 40MHz " + "rf(%c) = 0x%x\n", + ((rf == 0) ? 'A' : 'B'), + rtlefuse->pwrgroup_ht40[rf][channel - + 1])); + } else { + RTPRINT(rtlpriv, FPHY, PHY_TXPWR, + ("customer's limit, 20MHz " + "rf(%c) = 0x%x\n", + ((rf == 0) ? 'A' : 'B'), + rtlefuse->pwrgroup_ht20[rf][channel - + 1])); + } + + if (index < 2) + pwr_diff = rtlefuse->txpwr_legacyhtdiff[rf][channel-1]; + else if (rtlphy->current_chan_bw == HT_CHANNEL_WIDTH_20) + pwr_diff = rtlefuse->txpwr_ht20diff[rf][channel-1]; + + if (rtlphy->current_chan_bw == HT_CHANNEL_WIDTH_20_40) + customer_pwr_diff = rtlefuse->pwrgroup_ht40[rf][channel-1]; + else + customer_pwr_diff = rtlefuse->pwrgroup_ht20[rf][channel-1]; + + if (pwr_diff > customer_pwr_diff) + pwr_diff = 0; + else + pwr_diff = customer_pwr_diff - pwr_diff; + + for (i = 0; i < 4; i++) { + pwr_diff_limit[i] = + (u8) ((rtlphy->mcs_txpwrlevel_origoffset + [chnlgroup][index + (rf ? 8 : 0)] & (0x7f << + (i * 8))) >> (i * 8)); + + if(pwr_diff_limit[i] > pwr_diff) + pwr_diff_limit[i] = pwr_diff; + } + + customer_limit = (pwr_diff_limit[3] << 24) | + (pwr_diff_limit[2] << 16) | + (pwr_diff_limit[1] << 8) | (pwr_diff_limit[0]); + + RTPRINT(rtlpriv, 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(rtlpriv, FPHY, PHY_TXPWR, + ("Customer, writeVal rf(%c)= 0x%x\n", + ((rf == 0) ? 'A' : 'B'), writeVal)); + break; + default: + chnlgroup = 0; + writeVal = + rtlphy->mcs_txpwrlevel_origoffset[chnlgroup] + [index + (rf ? 8 : 0)] + + ((index < 2) ? powerBase0[rf] : powerBase1[rf]); + + RTPRINT(rtlpriv, FPHY, PHY_TXPWR, + ("RTK better performance, writeVal " + "rf(%c) = 0x%x\n", + ((rf == 0) ? 'A' : 'B'), writeVal)); + break; + } + + if (rtlpriv->dm.dynamic_txhighpower_lvl == TXHIGHPWRLEVEL_BT1) + writeVal = writeVal - 0x06060606; + else if (rtlpriv->dm.dynamic_txhighpower_lvl == + TXHIGHPWRLEVEL_BT2) + writeVal = writeVal - 0x0c0c0c0c; + *(p_outwriteval + rf) = writeVal; + } +} + +static void _rtl8821ae_write_ofdm_power_reg(struct ieee80211_hw *hw, + u8 index, u32 *pValue) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u16 regoffset_a[6] = { + RTXAGC_A_OFDM18_OFDM6, RTXAGC_A_OFDM54_OFDM24, + RTXAGC_A_MCS03_MCS00, RTXAGC_A_MCS07_MCS04, + RTXAGC_A_MCS11_MCS08, RTXAGC_A_MCS15_MCS12 + }; + u16 regoffset_b[6] = { + RTXAGC_B_OFDM18_OFDM6, RTXAGC_B_OFDM54_OFDM24, + 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]; + rtl_set_bbreg(hw, regoffset, MASKDWORD, writeVal); + + RTPRINT(rtlpriv, FPHY, PHY_TXPWR, + ("Set 0x%x = %08x\n", regoffset, writeVal)); + } +} + +void rtl8821ae_phy_rf6052_set_ofdm_txpower(struct ieee80211_hw *hw, + u8 *ppowerlevel_ofdm, u8 *ppowerlevel_bw20, u8 *ppowerlevel_bw40, u8 channel) +{ + u32 writeVal[2], powerBase0[2], powerBase1[2]; + u8 index; + u8 direction; + u32 pwrtrac_value; + + rtl8821ae_phy_get_power_base(hw, ppowerlevel_ofdm, ppowerlevel_bw20, ppowerlevel_bw40, + channel, &powerBase0[0], &powerBase1[0]); + + rtl8821ae_dm_txpower_track_adjust(hw,1,&direction,&pwrtrac_value); + + for (index = 0; index < 6; index++) { + _rtl8821ae_get_txpower_writeval_by_regulatory(hw, + channel, index, + &powerBase0[0], + &powerBase1[0], + &writeVal[0]); + if (direction ==1){ + writeVal[0] += pwrtrac_value; + writeVal[1] += pwrtrac_value; + } else if (direction == 2){ + writeVal[0] -= pwrtrac_value; + writeVal[1] -= pwrtrac_value; + } + _rtl8821ae_write_ofdm_power_reg(hw, index, &writeVal[0]); + } +} + +bool rtl8821ae_phy_rf6052_config(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + + if (rtlphy->rf_type == RF_1T1R) + rtlphy->num_total_rfpath = 1; + else + rtlphy->num_total_rfpath = 2; + + return _rtl8821ae_phy_rf6052_config_parafile(hw); + +} + +static bool _rtl8821ae_phy_rf6052_config_parafile(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); + //u32 u4_regvalue = 0; + u8 rfpath; + bool rtstatus = true; + //struct bb_reg_def *pphyreg; + + for (rfpath = 0; rfpath < rtlphy->num_total_rfpath; rfpath++) { + switch (rfpath) { + case RF90_PATH_A: { + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8812AE) + rtstatus = rtl8812ae_phy_config_rf_with_headerfile(hw, + (enum radio_path)rfpath); + else + rtstatus = rtl8821ae_phy_config_rf_with_headerfile(hw, + (enum radio_path)rfpath); + break; + } + case RF90_PATH_B: { + if (rtlhal->hw_type == HARDWARE_TYPE_RTL8812AE) + rtstatus = rtl8812ae_phy_config_rf_with_headerfile(hw, + (enum radio_path)rfpath); + else + rtstatus = rtl8821ae_phy_config_rf_with_headerfile(hw, + (enum radio_path)rfpath); + break; + } + case RF90_PATH_C: + break; + case RF90_PATH_D: + break; + } + + if (rtstatus != true) { + RT_TRACE(COMP_INIT, DBG_TRACE, + ("Radio[%d] Fail!!", rfpath)); + return false; + } + + } + + /*put arrays in dm.c*/ + /*_rtl8821ae_config_rf_txpwr_track_headerfile(hw);*/ + RT_TRACE(COMP_INIT, DBG_TRACE, ("\n")); + return rtstatus; +} --- linux-3.13.0.orig/drivers/staging/rtl8821ae/rtl8821ae/rf.h +++ linux-3.13.0/drivers/staging/rtl8821ae/rtl8821ae/rf.h @@ -0,0 +1,46 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#ifndef __RTL8821AE_RF_H__ +#define __RTL8821AE_RF_H__ + +#define RF6052_MAX_TX_PWR 0x3F +#define RF6052_MAX_REG 0x3F + +extern void rtl8821ae_phy_rf6052_set_bandwidth(struct ieee80211_hw *hw, + u8 bandwidth); +extern void rtl8821ae_phy_rf6052_set_cck_txpower(struct ieee80211_hw *hw, + u8 *ppowerlevel); +extern void rtl8821ae_phy_rf6052_set_ofdm_txpower(struct ieee80211_hw *hw, + u8 *ppowerlevel_ofdm, + u8 *ppowerlevel_bw20, + u8 *ppowerlevel_bw40, + u8 channel); +extern bool rtl8821ae_phy_rf6052_config(struct ieee80211_hw *hw); +#endif --- linux-3.13.0.orig/drivers/staging/rtl8821ae/rtl8821ae/sw.c +++ linux-3.13.0/drivers/staging/rtl8821ae/rtl8821ae/sw.c @@ -0,0 +1,499 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#include +#include + +#include "../wifi.h" +#include "../core.h" +#include "../pci.h" +#include "reg.h" +#include "def.h" +#include "phy.h" +#include "dm.h" +#include "hw.h" +#include "sw.h" +#include "trx.h" +#include "led.h" +#include "table.h" +#include "hal_btc.h" +#include "../btcoexist/rtl_btc.h" + +void rtl8821ae_init_aspm_vars(struct ieee80211_hw *hw) +{ + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + + /*close ASPM for AMD defaultly */ + rtlpci->const_amdpci_aspm = 0; + + /* + * ASPM PS mode. + * 0 - Disable ASPM, + * 1 - Enable ASPM without Clock Req, + * 2 - Enable ASPM with Clock Req, + * 3 - Alwyas Enable ASPM with Clock Req, + * 4 - Always Enable ASPM without Clock Req. + * set defult to RTL8192CE:3 RTL8192E:2 + * */ + rtlpci->const_pci_aspm = 3; + + /*Setting for PCI-E device */ + rtlpci->const_devicepci_aspm_setting = 0x03; + + /*Setting for PCI-E bridge */ + rtlpci->const_hostpci_aspm_setting = 0x02; + + /* + * In Hw/Sw Radio Off situation. + * 0 - Default, + * 1 - From ASPM setting without low Mac Pwr, + * 2 - From ASPM setting with low Mac Pwr, + * 3 - Bus D3 + * set default to RTL8192CE:0 RTL8192SE:2 + */ + rtlpci->const_hwsw_rfoff_d3 = 0; + + /* + * This setting works for those device with + * backdoor ASPM setting such as EPHY setting. + * 0 - Not support ASPM, + * 1 - Support ASPM, + * 2 - According to chipset. + */ + rtlpci->const_support_pciaspm = 1; +} + +/*InitializeVariables8812E*/ +int rtl8821ae_init_sw_vars(struct ieee80211_hw *hw) +{ + int err = 0; + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + const struct firmware *firmware; + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + char *fw_name = NULL; + + rtl8821ae_bt_reg_init(hw); + rtlpriv->btcoexist.btc_ops = rtl_btc_get_ops_pointer(); + + rtlpriv->dm.b_dm_initialgain_enable = 1; + rtlpriv->dm.dm_flag = 0; + rtlpriv->dm.b_disable_framebursting = 0;; + rtlpriv->dm.thermalvalue = 0; + rtlpci->transmit_config = CFENDFORM | BIT(15) | BIT(24) | BIT(25); + + mac->ht_enable = true; + + rtlpriv->rtlhal.current_bandtype = BAND_ON_2_4G; + /*following 2 is for register 5G band, refer to _rtl_init_mac80211()*/ + rtlpriv->rtlhal.bandset = BAND_ON_BOTH; + rtlpriv->rtlhal.macphymode = SINGLEMAC_SINGLEPHY; + + rtlpci->receive_config = (RCR_APPFCS | + RCR_APP_MIC | + RCR_APP_ICV | + RCR_APP_PHYST_RXFF | + RCR_NONQOS_VHT | + RCR_HTC_LOC_CTRL | + RCR_AMF | + RCR_ACF | + RCR_ADF | /*This bit controls the PS-Poll packet filter.*/ + RCR_AICV | + RCR_ACRC32 | + RCR_AB | + RCR_AM | + RCR_APM | + 0); + + + rtlpci->irq_mask[0] = + (u32) (IMR_PSTIMEOUT | + IMR_GTINT3 | + /*IMR_TBDER | + IMR_TBDOK | + IMR_BCNDMAINT0 |*/ + IMR_HSISR_IND_ON_INT | + IMR_C2HCMD | + IMR_HIGHDOK | + IMR_MGNTDOK | + IMR_BKDOK | + IMR_BEDOK | + IMR_VIDOK | + IMR_VODOK | + IMR_RDU | + IMR_ROK | + 0); + + rtlpci->irq_mask[1] = + (u32)( IMR_RXFOVW | + IMR_TXFOVW | + 0); + + /* for LPS & IPS */ + rtlpriv->psc.b_inactiveps = rtlpriv->cfg->mod_params->b_inactiveps; + rtlpriv->psc.b_swctrl_lps = rtlpriv->cfg->mod_params->b_swctrl_lps; + rtlpriv->psc.b_fwctrl_lps = rtlpriv->cfg->mod_params->b_fwctrl_lps; + rtlpriv->psc.b_reg_fwctrl_lps = 3; + rtlpriv->psc.reg_max_lps_awakeintvl = 5; + /* for ASPM, you can close aspm through + * set const_support_pciaspm = 0 */ + rtl8821ae_init_aspm_vars(hw); + + if (rtlpriv->psc.b_reg_fwctrl_lps == 1) + rtlpriv->psc.fwctrl_psmode = FW_PS_MIN_MODE; + else if (rtlpriv->psc.b_reg_fwctrl_lps == 2) + rtlpriv->psc.fwctrl_psmode = FW_PS_MAX_MODE; + else if (rtlpriv->psc.b_reg_fwctrl_lps == 3) + rtlpriv->psc.fwctrl_psmode = FW_PS_DTIM_MODE; + + /* for firmware buf */ + rtlpriv->rtlhal.pfirmware = (u8 *) vmalloc(0x8000); + if (!rtlpriv->rtlhal.pfirmware) { + RT_TRACE(COMP_ERR, DBG_EMERG, + ("Can't alloc buffer for fw.\n")); + return 1; + } + + fw_name = "rtlwifi/rtl8821aefw.bin"; + err = request_firmware(&firmware, fw_name, rtlpriv->io.dev); + if (err) { + RT_TRACE(COMP_ERR, DBG_EMERG, + ("Failed to request firmware!\n")); + return 1; + } + + if (firmware->size > 0x8000) { + RT_TRACE(COMP_ERR, DBG_EMERG, + ("Firmware is too big!\n")); + release_firmware(firmware); + return 1; + } + + memcpy(rtlpriv->rtlhal.pfirmware, firmware->data, firmware->size); + rtlpriv->rtlhal.fwsize = firmware->size; + release_firmware(firmware); + + if (rtlpriv->cfg->ops->get_btc_status()){ + rtlpriv->btcoexist.btc_ops->btc_init_variables(rtlpriv); + rtlpriv->btcoexist.btc_ops->btc_init_hal_vars(rtlpriv); + } + + RT_TRACE(COMP_INIT, DBG_LOUD, (" FirmwareDownload OK\n")); + return err; +} + +void rtl8821ae_deinit_sw_vars(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + //printk("=========>rtl8821ae_deinit_sw_vars().\n"); + if (rtlpriv->cfg->ops->get_btc_status()){ + //printk("=========>rtl8821ae_deinit_sw_vars().get_btc_status\n"); + rtlpriv->btcoexist.btc_ops->btc_halt_notify(); + } + if (rtlpriv->rtlhal.pfirmware) { + //printk("=========>rtl8821ae_deinit_sw_vars().rtlpriv->rtlhal.pfirmware\n"); + vfree(rtlpriv->rtlhal.pfirmware); + rtlpriv->rtlhal.pfirmware = NULL; + } + //printk("<=========rtl8821ae_deinit_sw_vars().\n"); +} + +u32 rtl8812ae_rx_command_packet_handler( + struct ieee80211_hw *hw, + struct rtl_stats status, + struct sk_buff *skb + ) +{ + u32 result = 0; + struct rtl_priv *rtlpriv = rtl_priv(hw); + + switch (status.packet_report_type) { + case NORMAL_RX: + result = 0; + break; + case C2H_PACKET: + rtl8812ae_c2h_packet_handler(hw, skb->data, (u8) skb->len); + result = 1; + RT_TRACE(COMP_RECV, DBG_LOUD, + ("===>rtl8821ae_rx_command_packet_handler(): (u8) skb->len=%d\n\n", skb->len)); + break; + default: + RT_TRACE(COMP_RECV, DBG_LOUD, + ("===>rtl8821ae_rx_command_packet_handler(): No this packet type!!\n")); + break; + } + + return result; +} + + +/* get bt coexist status */ +bool rtl8821ae_get_btc_status(void) +{ + return true; +} + +struct rtl_hal_ops rtl8821ae_hal_ops = { + .init_sw_vars = rtl8821ae_init_sw_vars, + .deinit_sw_vars = rtl8821ae_deinit_sw_vars, + .read_eeprom_info = rtl8821ae_read_eeprom_info, + .interrupt_recognized = rtl8821ae_interrupt_recognized, + .hw_init = rtl8821ae_hw_init, + .hw_disable = rtl8821ae_card_disable, + .hw_suspend = rtl8821ae_suspend, + .hw_resume = rtl8821ae_resume, + .enable_interrupt = rtl8821ae_enable_interrupt, + .disable_interrupt = rtl8821ae_disable_interrupt, + .set_network_type = rtl8821ae_set_network_type, + .set_chk_bssid = rtl8821ae_set_check_bssid, + .set_qos = rtl8821ae_set_qos, + .set_bcn_reg = rtl8821ae_set_beacon_related_registers, + .set_bcn_intv = rtl8821ae_set_beacon_interval, + .update_interrupt_mask = rtl8821ae_update_interrupt_mask, + .get_hw_reg = rtl8821ae_get_hw_reg, + .set_hw_reg = rtl8821ae_set_hw_reg, + .update_rate_tbl = rtl8821ae_update_hal_rate_tbl, + .fill_tx_desc = rtl8821ae_tx_fill_desc, + .fill_tx_cmddesc = rtl8821ae_tx_fill_cmddesc, + .query_rx_desc = rtl8821ae_rx_query_desc, + .set_channel_access = rtl8821ae_update_channel_access_setting, + .radio_onoff_checking = rtl8821ae_gpio_radio_on_off_checking, + .set_bw_mode = rtl8821ae_phy_set_bw_mode, + .switch_channel = rtl8821ae_phy_sw_chnl, + .dm_watchdog = rtl8821ae_dm_watchdog, + .scan_operation_backup = rtl8821ae_phy_scan_operation_backup, + .set_rf_power_state = rtl8821ae_phy_set_rf_power_state, + .led_control = rtl8821ae_led_control, + .set_desc = rtl8821ae_set_desc, + .get_desc = rtl8821ae_get_desc, + .is_tx_desc_closed = rtl8821ae_is_tx_desc_closed, + .tx_polling = rtl8821ae_tx_polling, + .enable_hw_sec = rtl8821ae_enable_hw_security_config, + .set_key = rtl8821ae_set_key, + .init_sw_leds = rtl8821ae_init_sw_leds, + .allow_all_destaddr = rtl8821ae_allow_all_destaddr, + .get_bbreg = rtl8821ae_phy_query_bb_reg, + .set_bbreg = rtl8821ae_phy_set_bb_reg, + .get_rfreg = rtl8821ae_phy_query_rf_reg, + .set_rfreg = rtl8821ae_phy_set_rf_reg, + .c2h_command_handle = rtl_8821ae_c2h_command_handle, + .bt_wifi_media_status_notify = rtl_8821ae_bt_wifi_media_status_notify, + .bt_turn_off_bt_coexist_before_enter_lps = rtl8821ae_dm_bt_turn_off_bt_coexist_before_enter_lps, + .fill_h2c_cmd = rtl8821ae_fill_h2c_cmd, + .get_btc_status = rtl8821ae_get_btc_status, + .rx_command_packet_handler = rtl8812ae_rx_command_packet_handler, +}; + +struct rtl_mod_params rtl8821ae_mod_params = { + .sw_crypto = false, + .b_inactiveps = false,//true, + .b_swctrl_lps = false, + .b_fwctrl_lps = false, //true, +}; + +struct rtl_hal_cfg rtl8821ae_hal_cfg = { + .bar_id = 2, + .write_readback = true, + .name = "rtl8821ae_pci", + .fw_name = "rtlwifi/rtl8821aefw.bin", + .ops = &rtl8821ae_hal_ops, + .mod_params = &rtl8821ae_mod_params, + .maps[SYS_ISO_CTRL] = REG_SYS_ISO_CTRL, + .maps[SYS_FUNC_EN] = REG_SYS_FUNC_EN, + .maps[SYS_CLK] = REG_SYS_CLKR, + .maps[MAC_RCR_AM] = AM, + .maps[MAC_RCR_AB] = AB, + .maps[MAC_RCR_ACRC32] = ACRC32, + .maps[MAC_RCR_ACF] = ACF, + .maps[MAC_RCR_AAP] = AAP, + .maps[MAC_HIMR] = REG_HIMR, + .maps[MAC_HIMRE] = REG_HIMRE, + + + .maps[EFUSE_ACCESS] = REG_EFUSE_ACCESS, + + .maps[EFUSE_TEST] = REG_EFUSE_TEST, + .maps[EFUSE_CTRL] = REG_EFUSE_CTRL, + .maps[EFUSE_CLK] = 0, + .maps[EFUSE_CLK_CTRL] = REG_EFUSE_CTRL, + .maps[EFUSE_PWC_EV12V] = PWC_EV12V, + .maps[EFUSE_FEN_ELDR] = FEN_ELDR, + .maps[EFUSE_LOADER_CLK_EN] = LOADER_CLK_EN, + .maps[EFUSE_ANA8M] = ANA8M, + .maps[EFUSE_HWSET_MAX_SIZE] = HWSET_MAX_SIZE, + .maps[EFUSE_MAX_SECTION_MAP] = EFUSE_MAX_SECTION, + .maps[EFUSE_REAL_CONTENT_SIZE] = EFUSE_REAL_CONTENT_LEN, + .maps[EFUSE_OOB_PROTECT_BYTES_LEN] = EFUSE_OOB_PROTECT_BYTES, + + .maps[RWCAM] = REG_CAMCMD, + .maps[WCAMI] = REG_CAMWRITE, + .maps[RCAMO] = REG_CAMREAD, + .maps[CAMDBG] = REG_CAMDBG, + .maps[SECR] = REG_SECCFG, + .maps[SEC_CAM_NONE] = CAM_NONE, + .maps[SEC_CAM_WEP40] = CAM_WEP40, + .maps[SEC_CAM_TKIP] = CAM_TKIP, + .maps[SEC_CAM_AES] = CAM_AES, + .maps[SEC_CAM_WEP104] = CAM_WEP104, + + .maps[RTL_IMR_BCNDMAINT6] = IMR_BCNDMAINT6, + .maps[RTL_IMR_BCNDMAINT5] = IMR_BCNDMAINT5, + .maps[RTL_IMR_BCNDMAINT4] = IMR_BCNDMAINT4, + .maps[RTL_IMR_BCNDMAINT3] = IMR_BCNDMAINT3, + .maps[RTL_IMR_BCNDMAINT2] = IMR_BCNDMAINT2, + .maps[RTL_IMR_BCNDMAINT1] = IMR_BCNDMAINT1, +/* .maps[RTL_IMR_BCNDOK8] = IMR_BCNDOK8, */ /*need check*/ + .maps[RTL_IMR_BCNDOK7] = IMR_BCNDOK7, + .maps[RTL_IMR_BCNDOK6] = IMR_BCNDOK6, + .maps[RTL_IMR_BCNDOK5] = IMR_BCNDOK5, + .maps[RTL_IMR_BCNDOK4] = IMR_BCNDOK4, + .maps[RTL_IMR_BCNDOK3] = IMR_BCNDOK3, + .maps[RTL_IMR_BCNDOK2] = IMR_BCNDOK2, + .maps[RTL_IMR_BCNDOK1] = IMR_BCNDOK1, +/* .maps[RTL_IMR_TIMEOUT2] = IMR_TIMEOUT2,*/ +/* .maps[RTL_IMR_TIMEOUT1] = IMR_TIMEOUT1,*/ + + .maps[RTL_IMR_TXFOVW] = IMR_TXFOVW, + .maps[RTL_IMR_PSTIMEOUT] = IMR_PSTIMEOUT, + .maps[RTL_IMR_BcnInt] = IMR_BCNDMAINT0, + .maps[RTL_IMR_RXFOVW] = IMR_RXFOVW, + .maps[RTL_IMR_RDU] = IMR_RDU, + .maps[RTL_IMR_ATIMEND] = IMR_ATIMEND, + .maps[RTL_IMR_BDOK] = IMR_BCNDOK0, + .maps[RTL_IMR_MGNTDOK] = IMR_MGNTDOK, + .maps[RTL_IMR_TBDER] = IMR_TBDER, + .maps[RTL_IMR_HIGHDOK] = IMR_HIGHDOK, + .maps[RTL_IMR_TBDOK] = IMR_TBDOK, + .maps[RTL_IMR_BKDOK] = IMR_BKDOK, + .maps[RTL_IMR_BEDOK] = IMR_BEDOK, + .maps[RTL_IMR_VIDOK] = IMR_VIDOK, + .maps[RTL_IMR_VODOK] = IMR_VODOK, + .maps[RTL_IMR_ROK] = IMR_ROK, + .maps[RTL_IBSS_INT_MASKS] = (IMR_BCNDMAINT0 | IMR_TBDOK | IMR_TBDER), + + .maps[RTL_RC_CCK_RATE1M] = DESC_RATE1M, + .maps[RTL_RC_CCK_RATE2M] = DESC_RATE2M, + .maps[RTL_RC_CCK_RATE5_5M] = DESC_RATE5_5M, + .maps[RTL_RC_CCK_RATE11M] = DESC_RATE11M, + .maps[RTL_RC_OFDM_RATE6M] = DESC_RATE6M, + .maps[RTL_RC_OFDM_RATE9M] = DESC_RATE9M, + .maps[RTL_RC_OFDM_RATE12M] = DESC_RATE12M, + .maps[RTL_RC_OFDM_RATE18M] = DESC_RATE18M, + .maps[RTL_RC_OFDM_RATE24M] = DESC_RATE24M, + .maps[RTL_RC_OFDM_RATE36M] = DESC_RATE36M, + .maps[RTL_RC_OFDM_RATE48M] = DESC_RATE48M, + .maps[RTL_RC_OFDM_RATE54M] = DESC_RATE54M, + + .maps[RTL_RC_HT_RATEMCS7] = DESC_RATEMCS7, + .maps[RTL_RC_HT_RATEMCS15] = DESC_RATEMCS15, +}; + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)) +static struct pci_device_id rtl8821ae_pci_ids[] = { + {RTL_PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8812, rtl8821ae_hal_cfg)}, + {RTL_PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8821, rtl8821ae_hal_cfg)}, + {}, +}; +#else +static struct pci_device_id rtl8821ae_pci_ids[] __devinitdata = { + {RTL_PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8812, rtl8821ae_hal_cfg)}, + {RTL_PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8821, rtl8821ae_hal_cfg)}, + {}, +}; +#endif + +MODULE_DEVICE_TABLE(pci, rtl8821ae_pci_ids); + +MODULE_AUTHOR("Ping Yan"); +MODULE_AUTHOR("Realtek WlanFAE "); +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("Realtek 8821ae 802.11ac PCI wireless"); +MODULE_FIRMWARE("rtlwifi/rtl8821aefw.bin"); + +module_param_named(swenc, rtl8821ae_mod_params.sw_crypto, bool, 0444); +module_param_named(ips, rtl8821ae_mod_params.b_inactiveps, bool, 0444); +module_param_named(swlps, rtl8821ae_mod_params.b_swctrl_lps, bool, 0444); +module_param_named(fwlps, rtl8821ae_mod_params.b_fwctrl_lps, bool, 0444); +MODULE_PARM_DESC(swenc, "using hardware crypto (default 0 [hardware])\n"); +MODULE_PARM_DESC(ips, "using no link power save (default 1 is open)\n"); +MODULE_PARM_DESC(fwlps, "using linked fw control power save (default 1 is open)\n"); + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29)) +static const SIMPLE_DEV_PM_OPS(rtlwifi_pm_ops, rtl_pci_suspend, rtl_pci_resume); +#endif + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29)) +compat_pci_suspend(rtl_pci_suspend) +compat_pci_resume(rtl_pci_resume) +#endif + +static struct pci_driver rtl8821ae_driver = { + .name = KBUILD_MODNAME, + .id_table = rtl8821ae_pci_ids, + .probe = rtl_pci_probe, + .remove = rtl_pci_disconnect, + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29)) + .driver.pm = &rtlwifi_pm_ops, +#elif defined(CONFIG_PM) + .suspend = rtl_pci_suspend_compat, + .resume = rtl_pci_resume_compat, +#endif + +}; + + +extern int rtl_core_module_init(void); +extern void rtl_core_module_exit(void); + +static int __init rtl8821ae_module_init(void) +{ + int ret; + + ret = rtl_core_module_init(); + if (ret) + return ret; + + //printk("==========>rtl8821ae_module_init().\n"); + ret = pci_register_driver(&rtl8821ae_driver); + if (ret) + RT_ASSERT(false, (": No device found\n")); + + return ret; +} + +static void __exit rtl8821ae_module_exit(void) +{ + pci_unregister_driver(&rtl8821ae_driver); + rtl_core_module_exit(); +} + +module_init(rtl8821ae_module_init); +module_exit(rtl8821ae_module_exit); --- linux-3.13.0.orig/drivers/staging/rtl8821ae/rtl8821ae/sw.h +++ linux-3.13.0/drivers/staging/rtl8821ae/rtl8821ae/sw.h @@ -0,0 +1,39 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#ifndef __RTL8821AE_SW_H__ +#define __RTL8821AE_SW_H__ + +int rtl8821ae_init_sw_vars(struct ieee80211_hw *hw); +void rtl8821ae_deinit_sw_vars(struct ieee80211_hw *hw); +void rtl8821ae_init_var_map(struct ieee80211_hw *hw); +bool rtl8821ae_get_btc_status(void); + + +#endif --- linux-3.13.0.orig/drivers/staging/rtl8821ae/rtl8821ae/table.c +++ linux-3.13.0/drivers/staging/rtl8821ae/rtl8821ae/table.c @@ -0,0 +1,4002 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Created on 2010/ 5/18, 1:41 + * + * Larry Finger + * + *****************************************************************************/ + +#include "table.h" +u32 RTL8812AE_PHY_REG_ARRAY[] = { + 0x800, 0x8020D010, + 0x804, 0x080112E0, + 0x808, 0x0E028233, + 0x80C, 0x12131113, + 0x810, 0x20101263, + 0x814, 0x020C3D10, + 0x818, 0x03A00385, + 0x820, 0x00000000, + 0x824, 0x00030FE0, + 0x828, 0x00000000, + 0x82C, 0x002083DD, + 0x830, 0x2AAA6C86, + 0x834, 0x0037A706, + 0x838, 0x06C89B44, + 0x83C, 0x0000095B, + 0x840, 0xC0000001, + 0x844, 0x40003CDE, + 0x848, 0x6210FF8B, + 0x84C, 0x6CFDFFB8, + 0x850, 0x28874706, + 0x854, 0x0001520C, + 0x858, 0x8060E000, + 0x85C, 0x74210168, + 0x860, 0x6929C321, + 0x864, 0x79727432, + 0x868, 0x8CA7A314, + 0x86C, 0x338C2878, + 0x870, 0x03333333, + 0x874, 0x31602C2E, + 0x878, 0x00003152, + 0x87C, 0x000FC000, + 0x8A0, 0x00000013, + 0x8A4, 0x7F7F7F7F, + 0x8A8, 0xA202033E, + 0x8AC, 0x0FF0FA0A, + 0x8B0, 0x00000600, + 0x8B4, 0x000FC080, + 0x8B8, 0x6C0057FF, + 0x8BC, 0x4CA520A3, + 0x8C0, 0x27F00020, + 0x8C4, 0x00000000, + 0x8C8, 0x00013169, + 0x8CC, 0x08248492, + 0x8D0, 0x0000B800, + 0x8DC, 0x00000000, + 0x8D4, 0x940008A0, + 0x8D8, 0x290B5612, + 0x8F8, 0x400002C0, + 0x8FC, 0x00000000, + 0xFF0F07D8, 0xABCD, + 0x900, 0x00000700, + 0xFF0F07D0, 0xCDEF, + 0x900, 0x00000700, + 0xCDCDCDCD, 0xCDCD, + 0x900, 0x00000700, + 0xFF0F07D8, 0xDEAD, + 0x90C, 0x00000000, + 0x910, 0x0000FC00, + 0x914, 0x00000404, + 0x918, 0x1C1028C0, + 0x91C, 0x64B11A1C, + 0x920, 0xE0767233, + 0x924, 0x055AA500, + 0x928, 0x00000004, + 0x92C, 0xFFFE0000, + 0x930, 0xFFFFFFFE, + 0x934, 0x001FFFFF, + 0x960, 0x00000000, + 0x964, 0x00000000, + 0x968, 0x00000000, + 0x96C, 0x00000000, + 0x970, 0x801FFFFF, + 0x978, 0x00000000, + 0x97C, 0x00000000, + 0x980, 0x00000000, + 0x984, 0x00000000, + 0x988, 0x00000000, + 0x990, 0x27100000, + 0x994, 0xFFFF0100, + 0x998, 0xFFFFFF5C, + 0x99C, 0xFFFFFFFF, + 0x9A0, 0x000000FF, + 0x9A4, 0x00080080, + 0x9A8, 0x00000000, + 0x9AC, 0x00000000, + 0x9B0, 0x81081008, + 0x9B4, 0x00000000, + 0x9B8, 0x01081008, + 0x9BC, 0x01081008, + 0x9D0, 0x00000000, + 0x9D4, 0x00000000, + 0x9D8, 0x00000000, + 0x9DC, 0x00000000, + 0x9E4, 0x00000002, + 0x9E8, 0x000002D5, + 0xA00, 0x00D047C8, + 0xA04, 0x01FF000C, + 0xA08, 0x8C838300, + 0xA0C, 0x2E7F000F, + 0xA10, 0x9500BB78, + 0xA14, 0x11144028, + 0xA18, 0x00881117, + 0xA1C, 0x89140F00, + 0xA20, 0x1A1B0000, + 0xA24, 0x090E1317, + 0xA28, 0x00000204, + 0xA2C, 0x00900000, + 0xA70, 0x101FFF00, + 0xA74, 0x00000008, + 0xA78, 0x00000900, + 0xA7C, 0x225B0606, + 0xA80, 0x218075B2, + 0xA84, 0x001F8C80, + 0xB00, 0x03100000, + 0xB04, 0x0000B000, + 0xB08, 0xAE0201EB, + 0xB0C, 0x01003207, + 0xB10, 0x00009807, + 0xB14, 0x01000000, + 0xB18, 0x00000002, + 0xB1C, 0x00000002, + 0xB20, 0x0000001F, + 0xB24, 0x03020100, + 0xB28, 0x07060504, + 0xB2C, 0x0B0A0908, + 0xB30, 0x0F0E0D0C, + 0xB34, 0x13121110, + 0xB38, 0x17161514, + 0xB3C, 0x0000003A, + 0xB40, 0x00000000, + 0xB44, 0x00000000, + 0xB48, 0x13000032, + 0xB4C, 0x48080000, + 0xB50, 0x00000000, + 0xB54, 0x00000000, + 0xB58, 0x00000000, + 0xB5C, 0x00000000, + 0xC00, 0x00000007, + 0xC04, 0x00042020, + 0xC08, 0x80410231, + 0xC0C, 0x00000000, + 0xC10, 0x00000100, + 0xC14, 0x01000000, + 0xC1C, 0x40000003, + 0xC20, 0x12121212, + 0xC24, 0x12121212, + 0xC28, 0x12121212, + 0xC2C, 0x12121212, + 0xC30, 0x12121212, + 0xC34, 0x12121212, + 0xC38, 0x12121212, + 0xC3C, 0x12121212, + 0xC40, 0x12121212, + 0xC44, 0x12121212, + 0xC48, 0x12121212, + 0xC4C, 0x12121212, + 0xC50, 0x00000020, + 0xC54, 0x0008121C, + 0xC58, 0x30000C1C, + 0xC5C, 0x00000058, + 0xC60, 0x34344443, + 0xC64, 0x07003333, + 0xC68, 0x59791979, + 0xC6C, 0x59795979, + 0xC70, 0x19795979, + 0xC74, 0x19795979, + 0xC78, 0x19791979, + 0xC7C, 0x19791979, + 0xC80, 0x19791979, + 0xC84, 0x19791979, + 0xC94, 0x0100005C, + 0xC98, 0x00000000, + 0xC9C, 0x00000000, + 0xCA0, 0x00000029, + 0xCA4, 0x08040201, + 0xCA8, 0x80402010, + 0xFF0F0740, 0xABCD, + 0xCB0, 0x77547717, + 0xFF0F01C0, 0xCDEF, + 0xCB0, 0x77547717, + 0xFF0F02C0, 0xCDEF, + 0xCB0, 0x77547717, + 0xFF0F07D8, 0xCDEF, + 0xCB0, 0x54547710, + 0xFF0F07D0, 0xCDEF, + 0xCB0, 0x54547710, + 0xCDCDCDCD, 0xCDCD, + 0xCB0, 0x77547777, + 0xFF0F0740, 0xDEAD, + 0xCB4, 0x00000077, + 0xCB8, 0x00508242, + 0xE00, 0x00000007, + 0xE04, 0x00042020, + 0xE08, 0x80410231, + 0xE0C, 0x00000000, + 0xE10, 0x00000100, + 0xE14, 0x01000000, + 0xE1C, 0x40000003, + 0xE20, 0x12121212, + 0xE24, 0x12121212, + 0xE28, 0x12121212, + 0xE2C, 0x12121212, + 0xE30, 0x12121212, + 0xE34, 0x12121212, + 0xE38, 0x12121212, + 0xE3C, 0x12121212, + 0xE40, 0x12121212, + 0xE44, 0x12121212, + 0xE48, 0x12121212, + 0xE4C, 0x12121212, + 0xE50, 0x00000020, + 0xE54, 0x0008121C, + 0xE58, 0x30000C1C, + 0xE5C, 0x00000058, + 0xE60, 0x34344443, + 0xE64, 0x07003333, + 0xE68, 0x59791979, + 0xE6C, 0x59795979, + 0xE70, 0x19795979, + 0xE74, 0x19795979, + 0xE78, 0x19791979, + 0xE7C, 0x19791979, + 0xE80, 0x19791979, + 0xE84, 0x19791979, + 0xE94, 0x0100005C, + 0xE98, 0x00000000, + 0xE9C, 0x00000000, + 0xEA0, 0x00000029, + 0xEA4, 0x08040201, + 0xEA8, 0x80402010, + 0xFF0F0740, 0xABCD, + 0xEB0, 0x77547717, + 0xFF0F01C0, 0xCDEF, + 0xEB0, 0x77547717, + 0xFF0F02C0, 0xCDEF, + 0xEB0, 0x77547717, + 0xFF0F07D8, 0xCDEF, + 0xEB0, 0x54547710, + 0xFF0F07D0, 0xCDEF, + 0xEB0, 0x54547710, + 0xCDCDCDCD, 0xCDCD, + 0xEB0, 0x77547777, + 0xFF0F0740, 0xDEAD, + 0xEB4, 0x00000077, + 0xEB8, 0x00508242, +}; + +u32 RTL8821AE_PHY_REG_ARRAY[] = { + 0x800, 0x0020D090, + 0x804, 0x080112E0, + 0x808, 0x0E028211, + 0x80C, 0x92131111, + 0x810, 0x20101261, + 0x814, 0x020C3D10, + 0x818, 0x03A00385, + 0x820, 0x00000000, + 0x824, 0x00030FE0, + 0x828, 0x00000000, + 0x82C, 0x002081DD, + 0x830, 0x2AAA8E24, + 0x834, 0x0037A706, + 0x838, 0x06489B44, + 0x83C, 0x0000095B, + 0x840, 0xC0000001, + 0x844, 0x40003CDE, + 0x848, 0x62103F8B, + 0x84C, 0x6CFDFFB8, + 0x850, 0x28874706, + 0x854, 0x0001520C, + 0x858, 0x8060E000, + 0x85C, 0x74210168, + 0x860, 0x6929C321, + 0x864, 0x79727432, + 0x868, 0x8CA7A314, + 0x86C, 0x888C2878, + 0x870, 0x08888888, + 0x874, 0x31612C2E, + 0x878, 0x00000152, + 0x87C, 0x000FD000, + 0x8A0, 0x00000013, + 0x8A4, 0x7F7F7F7F, + 0x8A8, 0xA2000338, + 0x8AC, 0x0FF0FA0A, + 0x8B4, 0x000FC080, + 0x8B8, 0x6C10D7FF, + 0x8BC, 0x0CA52090, + 0x8C0, 0x1BF00020, + 0x8C4, 0x00000000, + 0x8C8, 0x00013169, + 0x8CC, 0x08248492, + 0x8D4, 0x940008A0, + 0x8D8, 0x290B5612, + 0x8F8, 0x400002C0, + 0x8FC, 0x00000000, + 0x900, 0x00000700, + 0x90C, 0x00000000, + 0x910, 0x0000FC00, + 0x914, 0x00000404, + 0x918, 0x1C1028C0, + 0x91C, 0x64B11A1C, + 0x920, 0xE0767233, + 0x924, 0x055AA500, + 0x928, 0x00000004, + 0x92C, 0xFFFE0000, + 0x930, 0xFFFFFFFE, + 0x934, 0x001FFFFF, + 0x960, 0x00000000, + 0x964, 0x00000000, + 0x968, 0x00000000, + 0x96C, 0x00000000, + 0x970, 0x801FFFFF, + 0x974, 0x000003FF, + 0x978, 0x00000000, + 0x97C, 0x00000000, + 0x980, 0x00000000, + 0x984, 0x00000000, + 0x988, 0x00000000, + 0x990, 0x27100000, + 0x994, 0xFFFF0100, + 0x998, 0xFFFFFF5C, + 0x99C, 0xFFFFFFFF, + 0x9A0, 0x000000FF, + 0x9A4, 0x00480080, + 0x9A8, 0x00000000, + 0x9AC, 0x00000000, + 0x9B0, 0x81081008, + 0x9B4, 0x01081008, + 0x9B8, 0x01081008, + 0x9BC, 0x01081008, + 0x9D0, 0x00000000, + 0x9D4, 0x00000000, + 0x9D8, 0x00000000, + 0x9DC, 0x00000000, + 0x9E0, 0x00005D00, + 0x9E4, 0x00000002, + 0x9E8, 0x00000001, + 0xA00, 0x00D047C8, + 0xA04, 0x01FF000C, + 0xA08, 0x8C8A8300, + 0xA0C, 0x2E68000F, + 0xA10, 0x9500BB78, + 0xA14, 0x11144028, + 0xA18, 0x00881117, + 0xA1C, 0x89140F00, + 0xA20, 0x1A1B0000, + 0xA24, 0x090E1317, + 0xA28, 0x00000204, + 0xA2C, 0x00900000, + 0xA70, 0x101FFF00, + 0xA74, 0x00000008, + 0xA78, 0x00000900, + 0xA7C, 0x225B0606, + 0xA80, 0x21805490, + 0xA84, 0x001F0000, + 0xB00, 0x03100040, + 0xB04, 0x0000B000, + 0xB08, 0xAE0201EB, + 0xB0C, 0x01003207, + 0xB10, 0x00009807, + 0xB14, 0x01000000, + 0xB18, 0x00000002, + 0xB1C, 0x00000002, + 0xB20, 0x0000001F, + 0xB24, 0x03020100, + 0xB28, 0x07060504, + 0xB2C, 0x0B0A0908, + 0xB30, 0x0F0E0D0C, + 0xB34, 0x13121110, + 0xB38, 0x17161514, + 0xB3C, 0x0000003A, + 0xB40, 0x00000000, + 0xB44, 0x00000000, + 0xB48, 0x13000032, + 0xB4C, 0x48080000, + 0xB50, 0x00000000, + 0xB54, 0x00000000, + 0xB58, 0x00000000, + 0xB5C, 0x00000000, + 0xC00, 0x00000007, + 0xC04, 0x00042020, + 0xC08, 0x80410231, + 0xC0C, 0x00000000, + 0xC10, 0x00000100, + 0xC14, 0x01000000, + 0xC1C, 0x40000003, + 0xC20, 0x2C2C2C2C, + 0xC24, 0x30303030, + 0xC28, 0x30303030, + 0xC2C, 0x2C2C2C2C, + 0xC30, 0x2C2C2C2C, + 0xC34, 0x2C2C2C2C, + 0xC38, 0x2C2C2C2C, + 0xC3C, 0x2A2A2A2A, + 0xC40, 0x2A2A2A2A, + 0xC44, 0x2A2A2A2A, + 0xC48, 0x2A2A2A2A, + 0xC4C, 0x2A2A2A2A, + 0xC50, 0x00000020, + 0xC54, 0x001C1208, + 0xC58, 0x30000C1C, + 0xC5C, 0x00000058, + 0xC60, 0x34344443, + 0xC64, 0x07003333, + 0xC68, 0x19791979, + 0xC6C, 0x19791979, + 0xC70, 0x19791979, + 0xC74, 0x19791979, + 0xC78, 0x19791979, + 0xC7C, 0x19791979, + 0xC80, 0x19791979, + 0xC84, 0x19791979, + 0xC94, 0x0100005C, + 0xC98, 0x00000000, + 0xC9C, 0x00000000, + 0xCA0, 0x00000029, + 0xCA4, 0x08040201, + 0xCA8, 0x80402010, + 0xCB0, 0x77775747, + 0xCB4, 0x10000077, + 0xCB8, 0x00508240, +}; + +u32 RTL8812AE_PHY_REG_ARRAY_PG[] = { + 0, 0, 0, 0x00000c20, 0xffffffff, 0x34363840, + 0, 0, 0, 0x00000c24, 0xffffffff, 0x42424444, + 0, 0, 0, 0x00000c28, 0xffffffff, 0x30323638, + 0, 0, 0, 0x00000c2c, 0xffffffff, 0x40424444, + 0, 0, 0, 0x00000c30, 0xffffffff, 0x28303236, + 0, 0, 1, 0x00000c34, 0xffffffff, 0x38404242, + 0, 0, 1, 0x00000c38, 0xffffffff, 0x26283034, + 0, 0, 0, 0x00000c3c, 0xffffffff, 0x40424444, + 0, 0, 0, 0x00000c40, 0xffffffff, 0x28303236, + 0, 0, 0, 0x00000c44, 0xffffffff, 0x42422426, + 0, 0, 1, 0x00000c48, 0xffffffff, 0x30343840, + 0, 0, 1, 0x00000c4c, 0xffffffff, 0x22242628, + 0, 1, 0, 0x00000e20, 0xffffffff, 0x34363840, + 0, 1, 0, 0x00000e24, 0xffffffff, 0x42424444, + 0, 1, 0, 0x00000e28, 0xffffffff, 0x30323638, + 0, 1, 0, 0x00000e2c, 0xffffffff, 0x40424444, + 0, 1, 0, 0x00000e30, 0xffffffff, 0x28303236, + 0, 1, 1, 0x00000e34, 0xffffffff, 0x38404242, + 0, 1, 1, 0x00000e38, 0xffffffff, 0x26283034, + 0, 1, 0, 0x00000e3c, 0xffffffff, 0x40424444, + 0, 1, 0, 0x00000e40, 0xffffffff, 0x28303236, + 0, 1, 0, 0x00000e44, 0xffffffff, 0x42422426, + 0, 1, 1, 0x00000e48, 0xffffffff, 0x30343840, + 0, 1, 1, 0x00000e4c, 0xffffffff, 0x22242628, + 1, 0, 0, 0x00000c24, 0xffffffff, 0x42424444, + 1, 0, 0, 0x00000c28, 0xffffffff, 0x30323640, + 1, 0, 0, 0x00000c2c, 0xffffffff, 0x40424444, + 1, 0, 0, 0x00000c30, 0xffffffff, 0x28303236, + 1, 0, 1, 0x00000c34, 0xffffffff, 0x38404242, + 1, 0, 1, 0x00000c38, 0xffffffff, 0x26283034, + 1, 0, 0, 0x00000c3c, 0xffffffff, 0x40424444, + 1, 0, 0, 0x00000c40, 0xffffffff, 0x28303236, + 1, 0, 0, 0x00000c44, 0xffffffff, 0x42422426, + 1, 0, 1, 0x00000c48, 0xffffffff, 0x30343840, + 1, 0, 1, 0x00000c4c, 0xffffffff, 0x22242628, + 1, 1, 0, 0x00000e24, 0xffffffff, 0x42424444, + 1, 1, 0, 0x00000e28, 0xffffffff, 0x30323640, + 1, 1, 0, 0x00000e2c, 0xffffffff, 0x40424444, + 1, 1, 0, 0x00000e30, 0xffffffff, 0x28303236, + 1, 1, 1, 0x00000e34, 0xffffffff, 0x38404242, + 1, 1, 1, 0x00000e38, 0xffffffff, 0x26283034, + 1, 1, 0, 0x00000e3c, 0xffffffff, 0x40424444, + 1, 1, 0, 0x00000e40, 0xffffffff, 0x28303236, + 1, 1, 0, 0x00000e44, 0xffffffff, 0x42422426, + 1, 1, 1, 0x00000e48, 0xffffffff, 0x30343840, + 1, 1, 1, 0x00000e4c, 0xffffffff, 0x22242628 +}; + +u32 RTL8821AE_PHY_REG_ARRAY_PG[] = { + 0, 0, 0, 0x00000c20, 0xffffffff, 0x32343638, + 0, 0, 0, 0x00000c24, 0xffffffff, 0x36363838, + 0, 0, 0, 0x00000c28, 0xffffffff, 0x28303234, + 0, 0, 0, 0x00000c2c, 0xffffffff, 0x34363838, + 0, 0, 0, 0x00000c30, 0xffffffff, 0x26283032, + 0, 0, 0, 0x00000c3c, 0xffffffff, 0x32343636, + 0, 0, 0, 0x00000c40, 0xffffffff, 0x24262830, + 0, 0, 0, 0x00000c44, 0x0000ffff, 0x00002022, + 1, 0, 0, 0x00000c24, 0xffffffff, 0x34343636, + 1, 0, 0, 0x00000c28, 0xffffffff, 0x26283032, + 1, 0, 0, 0x00000c2c, 0xffffffff, 0x32343636, + 1, 0, 0, 0x00000c30, 0xffffffff, 0x24262830, + 1, 0, 0, 0x00000c3c, 0xffffffff, 0x32343636, + 1, 0, 0, 0x00000c40, 0xffffffff, 0x24262830, + 1, 0, 0, 0x00000c44, 0x0000ffff, 0x00002022 +}; + +/* it seems not used +u8 *RTL8821AE_TXPWR_LMT_ARRAY[] = { + "FCC", "2.4G", "20M", "CCK", "1T", "01", "32", + "ETSI", "2.4G", "20M", "CCK", "1T", "01", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "01", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "02", "32", + "ETSI", "2.4G", "20M", "CCK", "1T", "02", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "02", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "03", "32", + "ETSI", "2.4G", "20M", "CCK", "1T", "03", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "03", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "04", "34", + "ETSI", "2.4G", "20M", "CCK", "1T", "04", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "04", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "05", "34", + "ETSI", "2.4G", "20M", "CCK", "1T", "05", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "05", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "06", "34", + "ETSI", "2.4G", "20M", "CCK", "1T", "06", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "06", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "07", "34", + "ETSI", "2.4G", "20M", "CCK", "1T", "07", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "07", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "08", "34", + "ETSI", "2.4G", "20M", "CCK", "1T", "08", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "08", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "09", "34", + "ETSI", "2.4G", "20M", "CCK", "1T", "09", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "09", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "10", "32", + "ETSI", "2.4G", "20M", "CCK", "1T", "10", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "10", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "11", "32", + "ETSI", "2.4G", "20M", "CCK", "1T", "11", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "11", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "12", "63", + "ETSI", "2.4G", "20M", "CCK", "1T", "12", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "12", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "13", "63", + "ETSI", "2.4G", "20M", "CCK", "1T", "13", "32", + "MKK", "2.4G", "20M", "CCK", "1T", "13", "32", + "FCC", "2.4G", "20M", "CCK", "1T", "14", "63", + "ETSI", "2.4G", "20M", "CCK", "1T", "14", "63", + "MKK", "2.4G", "20M", "CCK", "1T", "14", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "01", "30", + "ETSI", "2.4G", "20M", "OFDM", "1T", "01", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "01", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "02", "30", + "ETSI", "2.4G", "20M", "OFDM", "1T", "02", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "02", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "03", "30", + "ETSI", "2.4G", "20M", "OFDM", "1T", "03", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "03", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "04", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "04", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "04", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "05", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "05", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "05", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "06", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "06", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "06", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "07", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "07", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "07", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "08", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "08", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "08", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "09", "32", + "ETSI", "2.4G", "20M", "OFDM", "1T", "09", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "09", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "10", "30", + "ETSI", "2.4G", "20M", "OFDM", "1T", "10", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "10", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "11", "30", + "ETSI", "2.4G", "20M", "OFDM", "1T", "11", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "11", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "12", "63", + "ETSI", "2.4G", "20M", "OFDM", "1T", "12", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "12", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "13", "63", + "ETSI", "2.4G", "20M", "OFDM", "1T", "13", "32", + "MKK", "2.4G", "20M", "OFDM", "1T", "13", "32", + "FCC", "2.4G", "20M", "OFDM", "1T", "14", "63", + "ETSI", "2.4G", "20M", "OFDM", "1T", "14", "63", + "MKK", "2.4G", "20M", "OFDM", "1T", "14", "63", + "FCC", "2.4G", "20M", "HT", "1T", "01", "26", + "ETSI", "2.4G", "20M", "HT", "1T", "01", "32", + "MKK", "2.4G", "20M", "HT", "1T", "01", "32", + "FCC", "2.4G", "20M", "HT", "1T", "02", "26", + "ETSI", "2.4G", "20M", "HT", "1T", "02", "32", + "MKK", "2.4G", "20M", "HT", "1T", "02", "32", + "FCC", "2.4G", "20M", "HT", "1T", "03", "26", + "ETSI", "2.4G", "20M", "HT", "1T", "03", "32", + "MKK", "2.4G", "20M", "HT", "1T", "03", "32", + "FCC", "2.4G", "20M", "HT", "1T", "04", "32", + "ETSI", "2.4G", "20M", "HT", "1T", "04", "32", + "MKK", "2.4G", "20M", "HT", "1T", "04", "32", + "FCC", "2.4G", "20M", "HT", "1T", "05", "32", + "ETSI", "2.4G", "20M", "HT", "1T", "05", "32", + "MKK", "2.4G", "20M", "HT", "1T", "05", "32", + "FCC", "2.4G", "20M", "HT", "1T", "06", "32", + "ETSI", "2.4G", "20M", "HT", "1T", "06", "32", + "MKK", "2.4G", "20M", "HT", "1T", "06", "32", + "FCC", "2.4G", "20M", "HT", "1T", "07", "32", + "ETSI", "2.4G", "20M", "HT", "1T", "07", "32", + "MKK", "2.4G", "20M", "HT", "1T", "07", "32", + "FCC", "2.4G", "20M", "HT", "1T", "08", "32", + "ETSI", "2.4G", "20M", "HT", "1T", "08", "32", + "MKK", "2.4G", "20M", "HT", "1T", "08", "32", + "FCC", "2.4G", "20M", "HT", "1T", "09", "32", + "ETSI", "2.4G", "20M", "HT", "1T", "09", "32", + "MKK", "2.4G", "20M", "HT", "1T", "09", "32", + "FCC", "2.4G", "20M", "HT", "1T", "10", "26", + "ETSI", "2.4G", "20M", "HT", "1T", "10", "32", + "MKK", "2.4G", "20M", "HT", "1T", "10", "32", + "FCC", "2.4G", "20M", "HT", "1T", "11", "26", + "ETSI", "2.4G", "20M", "HT", "1T", "11", "32", + "MKK", "2.4G", "20M", "HT", "1T", "11", "32", + "FCC", "2.4G", "20M", "HT", "1T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "1T", "12", "32", + "MKK", "2.4G", "20M", "HT", "1T", "12", "32", + "FCC", "2.4G", "20M", "HT", "1T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "1T", "13", "32", + "MKK", "2.4G", "20M", "HT", "1T", "13", "32", + "FCC", "2.4G", "20M", "HT", "1T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "1T", "14", "63", + "MKK", "2.4G", "20M", "HT", "1T", "14", "63", + "FCC", "2.4G", "20M", "HT", "2T", "01", "30", + "ETSI", "2.4G", "20M", "HT", "2T", "01", "32", + "MKK", "2.4G", "20M", "HT", "2T", "01", "32", + "FCC", "2.4G", "20M", "HT", "2T", "02", "32", + "ETSI", "2.4G", "20M", "HT", "2T", "02", "32", + "MKK", "2.4G", "20M", "HT", "2T", "02", "32", + "FCC", "2.4G", "20M", "HT", "2T", "03", "32", + "ETSI", "2.4G", "20M", "HT", "2T", "03", "32", + "MKK", "2.4G", "20M", "HT", "2T", "03", "32", + "FCC", "2.4G", "20M", "HT", "2T", "04", "32", + "ETSI", "2.4G", "20M", "HT", "2T", "04", "32", + "MKK", "2.4G", "20M", "HT", "2T", "04", "32", + "FCC", "2.4G", "20M", "HT", "2T", "05", "32", + "ETSI", "2.4G", "20M", "HT", "2T", "05", "32", + "MKK", "2.4G", "20M", "HT", "2T", "05", "32", + "FCC", "2.4G", "20M", "HT", "2T", "06", "32", + "ETSI", "2.4G", "20M", "HT", "2T", "06", "32", + "MKK", "2.4G", "20M", "HT", "2T", "06", "32", + "FCC", "2.4G", "20M", "HT", "2T", "07", "32", + "ETSI", "2.4G", "20M", "HT", "2T", "07", "32", + "MKK", "2.4G", "20M", "HT", "2T", "07", "32", + "FCC", "2.4G", "20M", "HT", "2T", "08", "32", + "ETSI", "2.4G", "20M", "HT", "2T", "08", "32", + "MKK", "2.4G", "20M", "HT", "2T", "08", "32", + "FCC", "2.4G", "20M", "HT", "2T", "09", "32", + "ETSI", "2.4G", "20M", "HT", "2T", "09", "32", + "MKK", "2.4G", "20M", "HT", "2T", "09", "32", + "FCC", "2.4G", "20M", "HT", "2T", "10", "32", + "ETSI", "2.4G", "20M", "HT", "2T", "10", "32", + "MKK", "2.4G", "20M", "HT", "2T", "10", "32", + "FCC", "2.4G", "20M", "HT", "2T", "11", "30", + "ETSI", "2.4G", "20M", "HT", "2T", "11", "32", + "MKK", "2.4G", "20M", "HT", "2T", "11", "32", + "FCC", "2.4G", "20M", "HT", "2T", "12", "63", + "ETSI", "2.4G", "20M", "HT", "2T", "12", "32", + "MKK", "2.4G", "20M", "HT", "2T", "12", "32", + "FCC", "2.4G", "20M", "HT", "2T", "13", "63", + "ETSI", "2.4G", "20M", "HT", "2T", "13", "32", + "MKK", "2.4G", "20M", "HT", "2T", "13", "32", + "FCC", "2.4G", "20M", "HT", "2T", "14", "63", + "ETSI", "2.4G", "20M", "HT", "2T", "14", "63", + "MKK", "2.4G", "20M", "HT", "2T", "14", "63", + "FCC", "2.4G", "40M", "HT", "1T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "01", "63", + "MKK", "2.4G", "40M", "HT", "1T", "01", "63", + "FCC", "2.4G", "40M", "HT", "1T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "02", "63", + "MKK", "2.4G", "40M", "HT", "1T", "02", "63", + "FCC", "2.4G", "40M", "HT", "1T", "03", "26", + "ETSI", "2.4G", "40M", "HT", "1T", "03", "32", + "MKK", "2.4G", "40M", "HT", "1T", "03", "32", + "FCC", "2.4G", "40M", "HT", "1T", "04", "26", + "ETSI", "2.4G", "40M", "HT", "1T", "04", "32", + "MKK", "2.4G", "40M", "HT", "1T", "04", "32", + "FCC", "2.4G", "40M", "HT", "1T", "05", "32", + "ETSI", "2.4G", "40M", "HT", "1T", "05", "32", + "MKK", "2.4G", "40M", "HT", "1T", "05", "32", + "FCC", "2.4G", "40M", "HT", "1T", "06", "32", + "ETSI", "2.4G", "40M", "HT", "1T", "06", "32", + "MKK", "2.4G", "40M", "HT", "1T", "06", "32", + "FCC", "2.4G", "40M", "HT", "1T", "07", "32", + "ETSI", "2.4G", "40M", "HT", "1T", "07", "32", + "MKK", "2.4G", "40M", "HT", "1T", "07", "32", + "FCC", "2.4G", "40M", "HT", "1T", "08", "26", + "ETSI", "2.4G", "40M", "HT", "1T", "08", "32", + "MKK", "2.4G", "40M", "HT", "1T", "08", "32", + "FCC", "2.4G", "40M", "HT", "1T", "09", "26", + "ETSI", "2.4G", "40M", "HT", "1T", "09", "32", + "MKK", "2.4G", "40M", "HT", "1T", "09", "32", + "FCC", "2.4G", "40M", "HT", "1T", "10", "26", + "ETSI", "2.4G", "40M", "HT", "1T", "10", "32", + "MKK", "2.4G", "40M", "HT", "1T", "10", "32", + "FCC", "2.4G", "40M", "HT", "1T", "11", "26", + "ETSI", "2.4G", "40M", "HT", "1T", "11", "32", + "MKK", "2.4G", "40M", "HT", "1T", "11", "32", + "FCC", "2.4G", "40M", "HT", "1T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "12", "32", + "MKK", "2.4G", "40M", "HT", "1T", "12", "32", + "FCC", "2.4G", "40M", "HT", "1T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "13", "32", + "MKK", "2.4G", "40M", "HT", "1T", "13", "32", + "FCC", "2.4G", "40M", "HT", "1T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "1T", "14", "63", + "MKK", "2.4G", "40M", "HT", "1T", "14", "63", + "FCC", "2.4G", "40M", "HT", "2T", "01", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "01", "63", + "MKK", "2.4G", "40M", "HT", "2T", "01", "63", + "FCC", "2.4G", "40M", "HT", "2T", "02", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "02", "63", + "MKK", "2.4G", "40M", "HT", "2T", "02", "63", + "FCC", "2.4G", "40M", "HT", "2T", "03", "30", + "ETSI", "2.4G", "40M", "HT", "2T", "03", "30", + "MKK", "2.4G", "40M", "HT", "2T", "03", "30", + "FCC", "2.4G", "40M", "HT", "2T", "04", "32", + "ETSI", "2.4G", "40M", "HT", "2T", "04", "30", + "MKK", "2.4G", "40M", "HT", "2T", "04", "30", + "FCC", "2.4G", "40M", "HT", "2T", "05", "32", + "ETSI", "2.4G", "40M", "HT", "2T", "05", "30", + "MKK", "2.4G", "40M", "HT", "2T", "05", "30", + "FCC", "2.4G", "40M", "HT", "2T", "06", "32", + "ETSI", "2.4G", "40M", "HT", "2T", "06", "30", + "MKK", "2.4G", "40M", "HT", "2T", "06", "30", + "FCC", "2.4G", "40M", "HT", "2T", "07", "32", + "ETSI", "2.4G", "40M", "HT", "2T", "07", "30", + "MKK", "2.4G", "40M", "HT", "2T", "07", "30", + "FCC", "2.4G", "40M", "HT", "2T", "08", "32", + "ETSI", "2.4G", "40M", "HT", "2T", "08", "30", + "MKK", "2.4G", "40M", "HT", "2T", "08", "30", + "FCC", "2.4G", "40M", "HT", "2T", "09", "32", + "ETSI", "2.4G", "40M", "HT", "2T", "09", "30", + "MKK", "2.4G", "40M", "HT", "2T", "09", "30", + "FCC", "2.4G", "40M", "HT", "2T", "10", "32", + "ETSI", "2.4G", "40M", "HT", "2T", "10", "30", + "MKK", "2.4G", "40M", "HT", "2T", "10", "30", + "FCC", "2.4G", "40M", "HT", "2T", "11", "30", + "ETSI", "2.4G", "40M", "HT", "2T", "11", "30", + "MKK", "2.4G", "40M", "HT", "2T", "11", "30", + "FCC", "2.4G", "40M", "HT", "2T", "12", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "12", "32", + "MKK", "2.4G", "40M", "HT", "2T", "12", "32", + "FCC", "2.4G", "40M", "HT", "2T", "13", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "13", "32", + "MKK", "2.4G", "40M", "HT", "2T", "13", "32", + "FCC", "2.4G", "40M", "HT", "2T", "14", "63", + "ETSI", "2.4G", "40M", "HT", "2T", "14", "63", + "MKK", "2.4G", "40M", "HT", "2T", "14", "63", + "FCC", "5G", "20M", "OFDM", "1T", "36", "30", + "ETSI", "5G", "20M", "OFDM", "1T", "36", "30", + "MKK", "5G", "20M", "OFDM", "1T", "36", "30", + "FCC", "5G", "20M", "OFDM", "1T", "40", "30", + "ETSI", "5G", "20M", "OFDM", "1T", "40", "30", + "MKK", "5G", "20M", "OFDM", "1T", "40", "30", + "FCC", "5G", "20M", "OFDM", "1T", "44", "30", + "ETSI", "5G", "20M", "OFDM", "1T", "44", "30", + "MKK", "5G", "20M", "OFDM", "1T", "44", "30", + "FCC", "5G", "20M", "OFDM", "1T", "48", "30", + "ETSI", "5G", "20M", "OFDM", "1T", "48", "30", + "MKK", "5G", "20M", "OFDM", "1T", "48", "30", + "FCC", "5G", "20M", "OFDM", "1T", "52", "30", + "ETSI", "5G", "20M", "OFDM", "1T", "52", "30", + "MKK", "5G", "20M", "OFDM", "1T", "52", "30", + "FCC", "5G", "20M", "OFDM", "1T", "56", "30", + "ETSI", "5G", "20M", "OFDM", "1T", "56", "30", + "MKK", "5G", "20M", "OFDM", "1T", "56", "30", + "FCC", "5G", "20M", "OFDM", "1T", "60", "30", + "ETSI", "5G", "20M", "OFDM", "1T", "60", "30", + "MKK", "5G", "20M", "OFDM", "1T", "60", "30", + "FCC", "5G", "20M", "OFDM", "1T", "64", "30", + "ETSI", "5G", "20M", "OFDM", "1T", "64", "30", + "MKK", "5G", "20M", "OFDM", "1T", "64", "30", + "FCC", "5G", "20M", "OFDM", "1T", "100", "30", + "ETSI", "5G", "20M", "OFDM", "1T", "100", "30", + "MKK", "5G", "20M", "OFDM", "1T", "100", "30", + "FCC", "5G", "20M", "OFDM", "1T", "114", "30", + "ETSI", "5G", "20M", "OFDM", "1T", "114", "30", + "MKK", "5G", "20M", "OFDM", "1T", "114", "30", + "FCC", "5G", "20M", "OFDM", "1T", "108", "30", + "ETSI", "5G", "20M", "OFDM", "1T", "108", "30", + "MKK", "5G", "20M", "OFDM", "1T", "108", "30", + "FCC", "5G", "20M", "OFDM", "1T", "112", "30", + "ETSI", "5G", "20M", "OFDM", "1T", "112", "30", + "MKK", "5G", "20M", "OFDM", "1T", "112", "30", + "FCC", "5G", "20M", "OFDM", "1T", "116", "30", + "ETSI", "5G", "20M", "OFDM", "1T", "116", "30", + "MKK", "5G", "20M", "OFDM", "1T", "116", "30", + "FCC", "5G", "20M", "OFDM", "1T", "120", "30", + "ETSI", "5G", "20M", "OFDM", "1T", "120", "30", + "MKK", "5G", "20M", "OFDM", "1T", "120", "30", + "FCC", "5G", "20M", "OFDM", "1T", "124", "30", + "ETSI", "5G", "20M", "OFDM", "1T", "124", "30", + "MKK", "5G", "20M", "OFDM", "1T", "124", "30", + "FCC", "5G", "20M", "OFDM", "1T", "128", "30", + "ETSI", "5G", "20M", "OFDM", "1T", "128", "30", + "MKK", "5G", "20M", "OFDM", "1T", "128", "30", + "FCC", "5G", "20M", "OFDM", "1T", "132", "30", + "ETSI", "5G", "20M", "OFDM", "1T", "132", "30", + "MKK", "5G", "20M", "OFDM", "1T", "132", "30", + "FCC", "5G", "20M", "OFDM", "1T", "136", "30", + "ETSI", "5G", "20M", "OFDM", "1T", "136", "30", + "MKK", "5G", "20M", "OFDM", "1T", "136", "30", + "FCC", "5G", "20M", "OFDM", "1T", "140", "30", + "ETSI", "5G", "20M", "OFDM", "1T", "140", "30", + "MKK", "5G", "20M", "OFDM", "1T", "140", "30", + "FCC", "5G", "20M", "OFDM", "1T", "149", "30", + "ETSI", "5G", "20M", "OFDM", "1T", "149", "30", + "MKK", "5G", "20M", "OFDM", "1T", "149", "63", + "FCC", "5G", "20M", "OFDM", "1T", "153", "30", + "ETSI", "5G", "20M", "OFDM", "1T", "153", "30", + "MKK", "5G", "20M", "OFDM", "1T", "153", "63", + "FCC", "5G", "20M", "OFDM", "1T", "157", "30", + "ETSI", "5G", "20M", "OFDM", "1T", "157", "30", + "MKK", "5G", "20M", "OFDM", "1T", "157", "63", + "FCC", "5G", "20M", "OFDM", "1T", "161", "30", + "ETSI", "5G", "20M", "OFDM", "1T", "161", "30", + "MKK", "5G", "20M", "OFDM", "1T", "161", "63", + "FCC", "5G", "20M", "OFDM", "1T", "165", "30", + "ETSI", "5G", "20M", "OFDM", "1T", "165", "30", + "MKK", "5G", "20M", "OFDM", "1T", "165", "63", + "FCC", "5G", "20M", "HT", "1T", "36", "30", + "ETSI", "5G", "20M", "HT", "1T", "36", "30", + "MKK", "5G", "20M", "HT", "1T", "36", "30", + "FCC", "5G", "20M", "HT", "1T", "40", "30", + "ETSI", "5G", "20M", "HT", "1T", "40", "30", + "MKK", "5G", "20M", "HT", "1T", "40", "30", + "FCC", "5G", "20M", "HT", "1T", "44", "30", + "ETSI", "5G", "20M", "HT", "1T", "44", "30", + "MKK", "5G", "20M", "HT", "1T", "44", "30", + "FCC", "5G", "20M", "HT", "1T", "48", "30", + "ETSI", "5G", "20M", "HT", "1T", "48", "30", + "MKK", "5G", "20M", "HT", "1T", "48", "30", + "FCC", "5G", "20M", "HT", "1T", "52", "30", + "ETSI", "5G", "20M", "HT", "1T", "52", "30", + "MKK", "5G", "20M", "HT", "1T", "52", "30", + "FCC", "5G", "20M", "HT", "1T", "56", "30", + "ETSI", "5G", "20M", "HT", "1T", "56", "30", + "MKK", "5G", "20M", "HT", "1T", "56", "30", + "FCC", "5G", "20M", "HT", "1T", "60", "30", + "ETSI", "5G", "20M", "HT", "1T", "60", "30", + "MKK", "5G", "20M", "HT", "1T", "60", "30", + "FCC", "5G", "20M", "HT", "1T", "64", "30", + "ETSI", "5G", "20M", "HT", "1T", "64", "30", + "MKK", "5G", "20M", "HT", "1T", "64", "30", + "FCC", "5G", "20M", "HT", "1T", "100", "30", + "ETSI", "5G", "20M", "HT", "1T", "100", "30", + "MKK", "5G", "20M", "HT", "1T", "100", "30", + "FCC", "5G", "20M", "HT", "1T", "114", "30", + "ETSI", "5G", "20M", "HT", "1T", "114", "30", + "MKK", "5G", "20M", "HT", "1T", "114", "30", + "FCC", "5G", "20M", "HT", "1T", "108", "30", + "ETSI", "5G", "20M", "HT", "1T", "108", "30", + "MKK", "5G", "20M", "HT", "1T", "108", "30", + "FCC", "5G", "20M", "HT", "1T", "112", "30", + "ETSI", "5G", "20M", "HT", "1T", "112", "30", + "MKK", "5G", "20M", "HT", "1T", "112", "30", + "FCC", "5G", "20M", "HT", "1T", "116", "30", + "ETSI", "5G", "20M", "HT", "1T", "116", "30", + "MKK", "5G", "20M", "HT", "1T", "116", "30", + "FCC", "5G", "20M", "HT", "1T", "120", "30", + "ETSI", "5G", "20M", "HT", "1T", "120", "30", + "MKK", "5G", "20M", "HT", "1T", "120", "30", + "FCC", "5G", "20M", "HT", "1T", "124", "30", + "ETSI", "5G", "20M", "HT", "1T", "124", "30", + "MKK", "5G", "20M", "HT", "1T", "124", "30", + "FCC", "5G", "20M", "HT", "1T", "128", "30", + "ETSI", "5G", "20M", "HT", "1T", "128", "30", + "MKK", "5G", "20M", "HT", "1T", "128", "30", + "FCC", "5G", "20M", "HT", "1T", "132", "30", + "ETSI", "5G", "20M", "HT", "1T", "132", "30", + "MKK", "5G", "20M", "HT", "1T", "132", "30", + "FCC", "5G", "20M", "HT", "1T", "136", "30", + "ETSI", "5G", "20M", "HT", "1T", "136", "30", + "MKK", "5G", "20M", "HT", "1T", "136", "30", + "FCC", "5G", "20M", "HT", "1T", "140", "30", + "ETSI", "5G", "20M", "HT", "1T", "140", "30", + "MKK", "5G", "20M", "HT", "1T", "140", "30", + "FCC", "5G", "20M", "HT", "1T", "149", "30", + "ETSI", "5G", "20M", "HT", "1T", "149", "30", + "MKK", "5G", "20M", "HT", "1T", "149", "63", + "FCC", "5G", "20M", "HT", "1T", "153", "30", + "ETSI", "5G", "20M", "HT", "1T", "153", "30", + "MKK", "5G", "20M", "HT", "1T", "153", "63", + "FCC", "5G", "20M", "HT", "1T", "157", "30", + "ETSI", "5G", "20M", "HT", "1T", "157", "30", + "MKK", "5G", "20M", "HT", "1T", "157", "63", + "FCC", "5G", "20M", "HT", "1T", "161", "30", + "ETSI", "5G", "20M", "HT", "1T", "161", "30", + "MKK", "5G", "20M", "HT", "1T", "161", "63", + "FCC", "5G", "20M", "HT", "1T", "165", "30", + "ETSI", "5G", "20M", "HT", "1T", "165", "30", + "MKK", "5G", "20M", "HT", "1T", "165", "63", + "FCC", "5G", "20M", "HT", "2T", "36", "28", + "ETSI", "5G", "20M", "HT", "2T", "36", "30", + "MKK", "5G", "20M", "HT", "2T", "36", "30", + "FCC", "5G", "20M", "HT", "2T", "40", "28", + "ETSI", "5G", "20M", "HT", "2T", "40", "30", + "MKK", "5G", "20M", "HT", "2T", "40", "30", + "FCC", "5G", "20M", "HT", "2T", "44", "28", + "ETSI", "5G", "20M", "HT", "2T", "44", "30", + "MKK", "5G", "20M", "HT", "2T", "44", "30", + "FCC", "5G", "20M", "HT", "2T", "48", "28", + "ETSI", "5G", "20M", "HT", "2T", "48", "30", + "MKK", "5G", "20M", "HT", "2T", "48", "30", + "FCC", "5G", "20M", "HT", "2T", "52", "34", + "ETSI", "5G", "20M", "HT", "2T", "52", "30", + "MKK", "5G", "20M", "HT", "2T", "52", "30", + "FCC", "5G", "20M", "HT", "2T", "56", "32", + "ETSI", "5G", "20M", "HT", "2T", "56", "30", + "MKK", "5G", "20M", "HT", "2T", "56", "30", + "FCC", "5G", "20M", "HT", "2T", "60", "30", + "ETSI", "5G", "20M", "HT", "2T", "60", "30", + "MKK", "5G", "20M", "HT", "2T", "60", "30", + "FCC", "5G", "20M", "HT", "2T", "64", "26", + "ETSI", "5G", "20M", "HT", "2T", "64", "30", + "MKK", "5G", "20M", "HT", "2T", "64", "30", + "FCC", "5G", "20M", "HT", "2T", "100", "28", + "ETSI", "5G", "20M", "HT", "2T", "100", "30", + "MKK", "5G", "20M", "HT", "2T", "100", "30", + "FCC", "5G", "20M", "HT", "2T", "114", "28", + "ETSI", "5G", "20M", "HT", "2T", "114", "30", + "MKK", "5G", "20M", "HT", "2T", "114", "30", + "FCC", "5G", "20M", "HT", "2T", "108", "30", + "ETSI", "5G", "20M", "HT", "2T", "108", "30", + "MKK", "5G", "20M", "HT", "2T", "108", "30", + "FCC", "5G", "20M", "HT", "2T", "112", "32", + "ETSI", "5G", "20M", "HT", "2T", "112", "30", + "MKK", "5G", "20M", "HT", "2T", "112", "30", + "FCC", "5G", "20M", "HT", "2T", "116", "32", + "ETSI", "5G", "20M", "HT", "2T", "116", "30", + "MKK", "5G", "20M", "HT", "2T", "116", "30", + "FCC", "5G", "20M", "HT", "2T", "120", "34", + "ETSI", "5G", "20M", "HT", "2T", "120", "30", + "MKK", "5G", "20M", "HT", "2T", "120", "30", + "FCC", "5G", "20M", "HT", "2T", "124", "32", + "ETSI", "5G", "20M", "HT", "2T", "124", "30", + "MKK", "5G", "20M", "HT", "2T", "124", "30", + "FCC", "5G", "20M", "HT", "2T", "128", "30", + "ETSI", "5G", "20M", "HT", "2T", "128", "30", + "MKK", "5G", "20M", "HT", "2T", "128", "30", + "FCC", "5G", "20M", "HT", "2T", "132", "28", + "ETSI", "5G", "20M", "HT", "2T", "132", "30", + "MKK", "5G", "20M", "HT", "2T", "132", "30", + "FCC", "5G", "20M", "HT", "2T", "136", "28", + "ETSI", "5G", "20M", "HT", "2T", "136", "30", + "MKK", "5G", "20M", "HT", "2T", "136", "30", + "FCC", "5G", "20M", "HT", "2T", "140", "26", + "ETSI", "5G", "20M", "HT", "2T", "140", "30", + "MKK", "5G", "20M", "HT", "2T", "140", "30", + "FCC", "5G", "20M", "HT", "2T", "149", "34", + "ETSI", "5G", "20M", "HT", "2T", "149", "30", + "MKK", "5G", "20M", "HT", "2T", "149", "63", + "FCC", "5G", "20M", "HT", "2T", "153", "34", + "ETSI", "5G", "20M", "HT", "2T", "153", "30", + "MKK", "5G", "20M", "HT", "2T", "153", "63", + "FCC", "5G", "20M", "HT", "2T", "157", "34", + "ETSI", "5G", "20M", "HT", "2T", "157", "30", + "MKK", "5G", "20M", "HT", "2T", "157", "63", + "FCC", "5G", "20M", "HT", "2T", "161", "34", + "ETSI", "5G", "20M", "HT", "2T", "161", "30", + "MKK", "5G", "20M", "HT", "2T", "161", "63", + "FCC", "5G", "20M", "HT", "2T", "165", "34", + "ETSI", "5G", "20M", "HT", "2T", "165", "30", + "MKK", "5G", "20M", "HT", "2T", "165", "63", + "FCC", "5G", "40M", "HT", "1T", "38", "26", + "ETSI", "5G", "40M", "HT", "1T", "38", "30", + "MKK", "5G", "40M", "HT", "1T", "38", "30", + "FCC", "5G", "40M", "HT", "1T", "46", "30", + "ETSI", "5G", "40M", "HT", "1T", "46", "30", + "MKK", "5G", "40M", "HT", "1T", "46", "30", + "FCC", "5G", "40M", "HT", "1T", "54", "30", + "ETSI", "5G", "40M", "HT", "1T", "54", "30", + "MKK", "5G", "40M", "HT", "1T", "54", "30", + "FCC", "5G", "40M", "HT", "1T", "62", "26", + "ETSI", "5G", "40M", "HT", "1T", "62", "30", + "MKK", "5G", "40M", "HT", "1T", "62", "30", + "FCC", "5G", "40M", "HT", "1T", "102", "24", + "ETSI", "5G", "40M", "HT", "1T", "102", "30", + "MKK", "5G", "40M", "HT", "1T", "102", "30", + "FCC", "5G", "40M", "HT", "1T", "110", "30", + "ETSI", "5G", "40M", "HT", "1T", "110", "30", + "MKK", "5G", "40M", "HT", "1T", "110", "30", + "FCC", "5G", "40M", "HT", "1T", "118", "30", + "ETSI", "5G", "40M", "HT", "1T", "118", "30", + "MKK", "5G", "40M", "HT", "1T", "118", "30", + "FCC", "5G", "40M", "HT", "1T", "126", "30", + "ETSI", "5G", "40M", "HT", "1T", "126", "30", + "MKK", "5G", "40M", "HT", "1T", "126", "30", + "FCC", "5G", "40M", "HT", "1T", "134", "30", + "ETSI", "5G", "40M", "HT", "1T", "134", "30", + "MKK", "5G", "40M", "HT", "1T", "134", "30", + "FCC", "5G", "40M", "HT", "1T", "151", "30", + "ETSI", "5G", "40M", "HT", "1T", "151", "30", + "MKK", "5G", "40M", "HT", "1T", "151", "63", + "FCC", "5G", "40M", "HT", "1T", "159", "30", + "ETSI", "5G", "40M", "HT", "1T", "159", "30", + "MKK", "5G", "40M", "HT", "1T", "159", "63", + "FCC", "5G", "40M", "HT", "2T", "38", "28", + "ETSI", "5G", "40M", "HT", "2T", "38", "30", + "MKK", "5G", "40M", "HT", "2T", "38", "30", + "FCC", "5G", "40M", "HT", "2T", "46", "28", + "ETSI", "5G", "40M", "HT", "2T", "46", "30", + "MKK", "5G", "40M", "HT", "2T", "46", "30", + "FCC", "5G", "40M", "HT", "2T", "54", "30", + "ETSI", "5G", "40M", "HT", "2T", "54", "30", + "MKK", "5G", "40M", "HT", "2T", "54", "30", + "FCC", "5G", "40M", "HT", "2T", "62", "30", + "ETSI", "5G", "40M", "HT", "2T", "62", "30", + "MKK", "5G", "40M", "HT", "2T", "62", "30", + "FCC", "5G", "40M", "HT", "2T", "102", "26", + "ETSI", "5G", "40M", "HT", "2T", "102", "30", + "MKK", "5G", "40M", "HT", "2T", "102", "30", + "FCC", "5G", "40M", "HT", "2T", "110", "30", + "ETSI", "5G", "40M", "HT", "2T", "110", "30", + "MKK", "5G", "40M", "HT", "2T", "110", "30", + "FCC", "5G", "40M", "HT", "2T", "118", "34", + "ETSI", "5G", "40M", "HT", "2T", "118", "30", + "MKK", "5G", "40M", "HT", "2T", "118", "30", + "FCC", "5G", "40M", "HT", "2T", "126", "32", + "ETSI", "5G", "40M", "HT", "2T", "126", "30", + "MKK", "5G", "40M", "HT", "2T", "126", "30", + "FCC", "5G", "40M", "HT", "2T", "134", "30", + "ETSI", "5G", "40M", "HT", "2T", "134", "30", + "MKK", "5G", "40M", "HT", "2T", "134", "30", + "FCC", "5G", "40M", "HT", "2T", "151", "34", + "ETSI", "5G", "40M", "HT", "2T", "151", "30", + "MKK", "5G", "40M", "HT", "2T", "151", "63", + "FCC", "5G", "40M", "HT", "2T", "159", "34", + "ETSI", "5G", "40M", "HT", "2T", "159", "30", + "MKK", "5G", "40M", "HT", "2T", "159", "63", + "FCC", "5G", "80M", "VHT", "1T", "42", "22", + "ETSI", "5G", "80M", "VHT", "1T", "42", "30", + "MKK", "5G", "80M", "VHT", "1T", "42", "30", + "FCC", "5G", "80M", "VHT", "1T", "58", "20", + "ETSI", "5G", "80M", "VHT", "1T", "58", "30", + "MKK", "5G", "80M", "VHT", "1T", "58", "30", + "FCC", "5G", "80M", "VHT", "1T", "106", "20", + "ETSI", "5G", "80M", "VHT", "1T", "106", "30", + "MKK", "5G", "80M", "VHT", "1T", "106", "30", + "FCC", "5G", "80M", "VHT", "1T", "122", "28", + "ETSI", "5G", "80M", "VHT", "1T", "122", "30", + "MKK", "5G", "80M", "VHT", "1T", "122", "30", + "FCC", "5G", "80M", "VHT", "1T", "155", "30", + "ETSI", "5G", "80M", "VHT", "1T", "155", "30", + "MKK", "5G", "80M", "VHT", "1T", "155", "63", + "FCC", "5G", "80M", "VHT", "2T", "42", "28", + "ETSI", "5G", "80M", "VHT", "2T", "42", "30", + "MKK", "5G", "80M", "VHT", "2T", "42", "30", + "FCC", "5G", "80M", "VHT", "2T", "58", "26", + "ETSI", "5G", "80M", "VHT", "2T", "58", "30", + "MKK", "5G", "80M", "VHT", "2T", "58", "30", + "FCC", "5G", "80M", "VHT", "2T", "106", "28", + "ETSI", "5G", "80M", "VHT", "2T", "106", "30", + "MKK", "5G", "80M", "VHT", "2T", "106", "30", + "FCC", "5G", "80M", "VHT", "2T", "122", "32", + "ETSI", "5G", "80M", "VHT", "2T", "122", "30", + "MKK", "5G", "80M", "VHT", "2T", "122", "30", + "FCC", "5G", "80M", "VHT", "2T", "155", "34", + "ETSI", "5G", "80M", "VHT", "2T", "155", "30", + "MKK", "5G", "80M", "VHT", "2T", "155", "63" +};*/ + +u32 RTL8812AE_RADIOA_ARRAY[] = { + 0x000, 0x00010000, + 0x018, 0x0001712A, + 0x056, 0x00051CF2, + 0x066, 0x00040000, + 0x01E, 0x00080000, + 0x089, 0x00000080, + 0xFF0F0740, 0xABCD, + 0x086, 0x00014B38, + 0xFF0F02C0, 0xCDEF, + 0x086, 0x00014B38, + 0xFF0F01C0, 0xCDEF, + 0x086, 0x00014B38, + 0xFF0F07D8, 0xCDEF, + 0x086, 0x00014B3A, + 0xFF0F07D0, 0xCDEF, + 0x086, 0x00014B3A, + 0xCDCDCDCD, 0xCDCD, + 0x086, 0x00014B38, + 0xFF0F0740, 0xDEAD, + 0x0B1, 0x0001FC1A, + 0x0B3, 0x000F0810, + 0x0B4, 0x0001A78D, + 0x0BA, 0x00086180, + 0x018, 0x00000006, + 0x0EF, 0x00002000, + 0xFF0F07D8, 0xABCD, + 0x03B, 0x0003F218, + 0x03B, 0x00030A58, + 0x03B, 0x0002FA58, + 0x03B, 0x00022590, + 0x03B, 0x0001FA50, + 0x03B, 0x00010248, + 0x03B, 0x00008240, + 0xFF0F07D0, 0xCDEF, + 0x03B, 0x0003F218, + 0x03B, 0x00030A58, + 0x03B, 0x0002FA58, + 0x03B, 0x00022590, + 0x03B, 0x0001FA50, + 0x03B, 0x00010248, + 0x03B, 0x00008240, + 0xCDCDCDCD, 0xCDCD, + 0x03B, 0x00038A58, + 0x03B, 0x00037A58, + 0x03B, 0x0002A590, + 0x03B, 0x00027A50, + 0x03B, 0x00018248, + 0x03B, 0x00010240, + 0x03B, 0x00008240, + 0xFF0F07D8, 0xDEAD, + 0x0EF, 0x00000100, + 0xFF0F07D8, 0xABCD, + 0x034, 0x0000A4EE, + 0x034, 0x00009076, + 0x034, 0x00008073, + 0x034, 0x00007070, + 0x034, 0x0000606D, + 0x034, 0x0000506A, + 0x034, 0x00004049, + 0x034, 0x00003046, + 0x034, 0x00002028, + 0x034, 0x00001025, + 0x034, 0x00000022, + 0xCDCDCDCD, 0xCDCD, + 0x034, 0x0000ADF4, + 0x034, 0x00009DF1, + 0x034, 0x00008DEE, + 0x034, 0x00007DEB, + 0x034, 0x00006DE8, + 0x034, 0x00005CEC, + 0x034, 0x00004CE9, + 0x034, 0x000034EA, + 0x034, 0x000024E7, + 0x034, 0x0000146B, + 0x034, 0x0000006D, + 0xFF0F07D8, 0xDEAD, + 0x0EF, 0x00000000, + 0x0EF, 0x000020A2, + 0x0DF, 0x00000080, + 0x035, 0x00000192, + 0x035, 0x00008192, + 0x035, 0x00010192, + 0x036, 0x00000024, + 0x036, 0x00008024, + 0x036, 0x00010024, + 0x036, 0x00018024, + 0x0EF, 0x00000000, + 0x051, 0x00000C21, + 0x052, 0x000006D9, + 0x053, 0x000FC649, + 0x054, 0x0000017E, + 0x0EF, 0x00000002, + 0x008, 0x00008400, + 0x018, 0x0001712A, + 0x0EF, 0x00001000, + 0x03A, 0x00000080, + 0x03B, 0x0003A02C, + 0x03C, 0x00004000, + 0x03A, 0x00000400, + 0x03B, 0x0003202C, + 0x03C, 0x00010000, + 0x03A, 0x000000A0, + 0x03B, 0x0002B064, + 0x03C, 0x00004000, + 0x03A, 0x000000D8, + 0x03B, 0x00023070, + 0x03C, 0x00004000, + 0x03A, 0x00000468, + 0x03B, 0x0001B870, + 0x03C, 0x00010000, + 0x03A, 0x00000098, + 0x03B, 0x00012085, + 0x03C, 0x000E4000, + 0x03A, 0x00000418, + 0x03B, 0x0000A080, + 0x03C, 0x000F0000, + 0x03A, 0x00000418, + 0x03B, 0x00002080, + 0x03C, 0x00010000, + 0x03A, 0x00000080, + 0x03B, 0x0007A02C, + 0x03C, 0x00004000, + 0x03A, 0x00000400, + 0x03B, 0x0007202C, + 0x03C, 0x00010000, + 0x03A, 0x000000A0, + 0x03B, 0x0006B064, + 0x03C, 0x00004000, + 0x03A, 0x000000D8, + 0x03B, 0x00023070, + 0x03C, 0x00004000, + 0x03A, 0x00000468, + 0x03B, 0x0005B870, + 0x03C, 0x00010000, + 0x03A, 0x00000098, + 0x03B, 0x00052085, + 0x03C, 0x000E4000, + 0x03A, 0x00000418, + 0x03B, 0x0004A080, + 0x03C, 0x000F0000, + 0x03A, 0x00000418, + 0x03B, 0x00042080, + 0x03C, 0x00010000, + 0x03A, 0x00000080, + 0x03B, 0x000BA02C, + 0x03C, 0x00004000, + 0x03A, 0x00000400, + 0x03B, 0x000B202C, + 0x03C, 0x00010000, + 0x03A, 0x000000A0, + 0x03B, 0x000AB064, + 0x03C, 0x00004000, + 0x03A, 0x000000D8, + 0x03B, 0x000A3070, + 0x03C, 0x00004000, + 0x03A, 0x00000468, + 0x03B, 0x0009B870, + 0x03C, 0x00010000, + 0x03A, 0x00000098, + 0x03B, 0x00092085, + 0x03C, 0x000E4000, + 0x03A, 0x00000418, + 0x03B, 0x0008A080, + 0x03C, 0x000F0000, + 0x03A, 0x00000418, + 0x03B, 0x00082080, + 0x03C, 0x00010000, + 0x0EF, 0x00001100, + 0xFF0F0740, 0xABCD, + 0x034, 0x0004A0B2, + 0x034, 0x000490AF, + 0x034, 0x00048070, + 0x034, 0x0004706D, + 0x034, 0x00046050, + 0x034, 0x0004504D, + 0x034, 0x0004404A, + 0x034, 0x00043047, + 0x034, 0x0004200A, + 0x034, 0x00041007, + 0x034, 0x00040004, + 0xFF0F02C0, 0xCDEF, + 0x034, 0x0004A0B2, + 0x034, 0x000490AF, + 0x034, 0x00048070, + 0x034, 0x0004706D, + 0x034, 0x00046050, + 0x034, 0x0004504D, + 0x034, 0x0004404A, + 0x034, 0x00043047, + 0x034, 0x0004200A, + 0x034, 0x00041007, + 0x034, 0x00040004, + 0xFF0F01C0, 0xCDEF, + 0x034, 0x0004A0B2, + 0x034, 0x000490AF, + 0x034, 0x00048070, + 0x034, 0x0004706D, + 0x034, 0x00046050, + 0x034, 0x0004504D, + 0x034, 0x0004404A, + 0x034, 0x00043047, + 0x034, 0x0004200A, + 0x034, 0x00041007, + 0x034, 0x00040004, + 0xFF0F07D8, 0xCDEF, + 0x034, 0x0004A0B2, + 0x034, 0x000490AF, + 0x034, 0x00048070, + 0x034, 0x0004706D, + 0x034, 0x00046050, + 0x034, 0x0004504D, + 0x034, 0x0004404A, + 0x034, 0x00043047, + 0x034, 0x0004200A, + 0x034, 0x00041007, + 0x034, 0x00040004, + 0xFF0F07D0, 0xCDEF, + 0x034, 0x0004A0B2, + 0x034, 0x000490AF, + 0x034, 0x00048070, + 0x034, 0x0004706D, + 0x034, 0x00046050, + 0x034, 0x0004504D, + 0x034, 0x0004404A, + 0x034, 0x00043047, + 0x034, 0x0004200A, + 0x034, 0x00041007, + 0x034, 0x00040004, + 0xCDCDCDCD, 0xCDCD, + 0x034, 0x0004ADF5, + 0x034, 0x00049DF2, + 0x034, 0x00048DEF, + 0x034, 0x00047DEC, + 0x034, 0x00046DE9, + 0x034, 0x00045DC9, + 0x034, 0x00044CE8, + 0x034, 0x000438CA, + 0x034, 0x00042889, + 0x034, 0x0004184A, + 0x034, 0x0004044A, + 0xFF0F0740, 0xDEAD, + 0xFF0F0740, 0xABCD, + 0x034, 0x0002A0B2, + 0x034, 0x000290AF, + 0x034, 0x00028070, + 0x034, 0x0002706D, + 0x034, 0x00026050, + 0x034, 0x0002504D, + 0x034, 0x0002404A, + 0x034, 0x00023047, + 0x034, 0x0002200A, + 0x034, 0x00021007, + 0x034, 0x00020004, + 0xFF0F02C0, 0xCDEF, + 0x034, 0x0002A0B2, + 0x034, 0x000290AF, + 0x034, 0x00028070, + 0x034, 0x0002706D, + 0x034, 0x00026050, + 0x034, 0x0002504D, + 0x034, 0x0002404A, + 0x034, 0x00023047, + 0x034, 0x0002200A, + 0x034, 0x00021007, + 0x034, 0x00020004, + 0xFF0F01C0, 0xCDEF, + 0x034, 0x0002A0B2, + 0x034, 0x000290AF, + 0x034, 0x00028070, + 0x034, 0x0002706D, + 0x034, 0x00026050, + 0x034, 0x0002504D, + 0x034, 0x0002404A, + 0x034, 0x00023047, + 0x034, 0x0002200A, + 0x034, 0x00021007, + 0x034, 0x00020004, + 0xFF0F07D8, 0xCDEF, + 0x034, 0x0002A0B2, + 0x034, 0x000290AF, + 0x034, 0x00028070, + 0x034, 0x0002706D, + 0x034, 0x00026050, + 0x034, 0x0002504D, + 0x034, 0x0002404A, + 0x034, 0x00023047, + 0x034, 0x0002200A, + 0x034, 0x00021007, + 0x034, 0x00020004, + 0xFF0F07D0, 0xCDEF, + 0x034, 0x0002A0B2, + 0x034, 0x000290AF, + 0x034, 0x00028070, + 0x034, 0x0002706D, + 0x034, 0x00026050, + 0x034, 0x0002504D, + 0x034, 0x0002404A, + 0x034, 0x00023047, + 0x034, 0x0002200A, + 0x034, 0x00021007, + 0x034, 0x00020004, + 0xCDCDCDCD, 0xCDCD, + 0x034, 0x0002ADF5, + 0x034, 0x00029DF2, + 0x034, 0x00028DEF, + 0x034, 0x00027DEC, + 0x034, 0x00026DE9, + 0x034, 0x00025DC9, + 0x034, 0x00024CE8, + 0x034, 0x000238CA, + 0x034, 0x00022889, + 0x034, 0x0002184A, + 0x034, 0x0002044A, + 0xFF0F0740, 0xDEAD, + 0xFF0F0740, 0xABCD, + 0x034, 0x0000A0B2, + 0x034, 0x000090AF, + 0x034, 0x00008070, + 0x034, 0x0000706D, + 0x034, 0x00006050, + 0x034, 0x0000504D, + 0x034, 0x0000404A, + 0x034, 0x00003047, + 0x034, 0x0000200A, + 0x034, 0x00001007, + 0x034, 0x00000004, + 0xFF0F02C0, 0xCDEF, + 0x034, 0x0000A0B2, + 0x034, 0x000090AF, + 0x034, 0x00008070, + 0x034, 0x0000706D, + 0x034, 0x00006050, + 0x034, 0x0000504D, + 0x034, 0x0000404A, + 0x034, 0x00003047, + 0x034, 0x0000200A, + 0x034, 0x00001007, + 0x034, 0x00000004, + 0xFF0F01C0, 0xCDEF, + 0x034, 0x0000A0B2, + 0x034, 0x000090AF, + 0x034, 0x00008070, + 0x034, 0x0000706D, + 0x034, 0x00006050, + 0x034, 0x0000504D, + 0x034, 0x0000404A, + 0x034, 0x00003047, + 0x034, 0x0000200A, + 0x034, 0x00001007, + 0x034, 0x00000004, + 0xFF0F07D8, 0xCDEF, + 0x034, 0x0000A0B2, + 0x034, 0x000090AF, + 0x034, 0x00008070, + 0x034, 0x0000706D, + 0x034, 0x00006050, + 0x034, 0x0000504D, + 0x034, 0x0000404A, + 0x034, 0x00003047, + 0x034, 0x0000200A, + 0x034, 0x00001007, + 0x034, 0x00000004, + 0xFF0F07D0, 0xCDEF, + 0x034, 0x0000A0B2, + 0x034, 0x000090AF, + 0x034, 0x00008070, + 0x034, 0x0000706D, + 0x034, 0x00006050, + 0x034, 0x0000504D, + 0x034, 0x0000404A, + 0x034, 0x00003047, + 0x034, 0x0000200A, + 0x034, 0x00001007, + 0x034, 0x00000004, + 0xCDCDCDCD, 0xCDCD, + 0x034, 0x0000AFF7, + 0x034, 0x00009DF7, + 0x034, 0x00008DF4, + 0x034, 0x00007DF1, + 0x034, 0x00006DEE, + 0x034, 0x00005DCD, + 0x034, 0x00004CEB, + 0x034, 0x000038CC, + 0x034, 0x0000288B, + 0x034, 0x0000184C, + 0x034, 0x0000044C, + 0xFF0F0740, 0xDEAD, + 0x0EF, 0x00000000, + 0xFF0F0740, 0xABCD, + 0x018, 0x0001712A, + 0x0EF, 0x00000040, + 0x035, 0x000001D4, + 0x035, 0x000081D4, + 0x035, 0x000101D4, + 0x035, 0x000201B4, + 0x035, 0x000281B4, + 0x035, 0x000301B4, + 0x035, 0x000401B4, + 0x035, 0x000481B4, + 0x035, 0x000501B4, + 0xFF0F02C0, 0xCDEF, + 0x018, 0x0001712A, + 0x0EF, 0x00000040, + 0x035, 0x000001D4, + 0x035, 0x000081D4, + 0x035, 0x000101D4, + 0x035, 0x000201B4, + 0x035, 0x000281B4, + 0x035, 0x000301B4, + 0x035, 0x000401B4, + 0x035, 0x000481B4, + 0x035, 0x000501B4, + 0xFF0F01C0, 0xCDEF, + 0x018, 0x0001712A, + 0x0EF, 0x00000040, + 0x035, 0x000001D4, + 0x035, 0x000081D4, + 0x035, 0x000101D4, + 0x035, 0x000201B4, + 0x035, 0x000281B4, + 0x035, 0x000301B4, + 0x035, 0x000401B4, + 0x035, 0x000481B4, + 0x035, 0x000501B4, + 0xFF0F07D8, 0xCDEF, + 0x018, 0x0001712A, + 0x0EF, 0x00000040, + 0x035, 0x000001D4, + 0x035, 0x000081D4, + 0x035, 0x000101D4, + 0x035, 0x000201B4, + 0x035, 0x000281B4, + 0x035, 0x000301B4, + 0x035, 0x000401B4, + 0x035, 0x000481B4, + 0x035, 0x000501B4, + 0xFF0F07D0, 0xCDEF, + 0x018, 0x0001712A, + 0x0EF, 0x00000040, + 0x035, 0x000001D4, + 0x035, 0x000081D4, + 0x035, 0x000101D4, + 0x035, 0x000201B4, + 0x035, 0x000281B4, + 0x035, 0x000301B4, + 0x035, 0x000401B4, + 0x035, 0x000481B4, + 0x035, 0x000501B4, + 0xCDCDCDCD, 0xCDCD, + 0x018, 0x0001712A, + 0x0EF, 0x00000040, + 0x035, 0x00000188, + 0x035, 0x00008147, + 0x035, 0x00010147, + 0x035, 0x000201D7, + 0x035, 0x000281D7, + 0x035, 0x000301D7, + 0x035, 0x000401D8, + 0x035, 0x000481D8, + 0x035, 0x000501D8, + 0xFF0F0740, 0xDEAD, + 0x0EF, 0x00000000, + 0xFF0F0740, 0xABCD, + 0x018, 0x0001712A, + 0x0EF, 0x00000010, + 0x036, 0x00004BFB, + 0x036, 0x0000CBFB, + 0x036, 0x00014BFB, + 0x036, 0x0001CBFB, + 0x036, 0x00024F4B, + 0x036, 0x0002CF4B, + 0x036, 0x00034F4B, + 0x036, 0x0003CF4B, + 0x036, 0x00044F4B, + 0x036, 0x0004CF4B, + 0x036, 0x00054F4B, + 0x036, 0x0005CF4B, + 0xFF0F02C0, 0xCDEF, + 0x018, 0x0001712A, + 0x0EF, 0x00000010, + 0x036, 0x00004BFB, + 0x036, 0x0000CBFB, + 0x036, 0x00014BFB, + 0x036, 0x0001CBFB, + 0x036, 0x00024F4B, + 0x036, 0x0002CF4B, + 0x036, 0x00034F4B, + 0x036, 0x0003CF4B, + 0x036, 0x00044F4B, + 0x036, 0x0004CF4B, + 0x036, 0x00054F4B, + 0x036, 0x0005CF4B, + 0xFF0F01C0, 0xCDEF, + 0x018, 0x0001712A, + 0x0EF, 0x00000010, + 0x036, 0x00004BFB, + 0x036, 0x0000CBFB, + 0x036, 0x00014BFB, + 0x036, 0x0001CBFB, + 0x036, 0x00024F4B, + 0x036, 0x0002CF4B, + 0x036, 0x00034F4B, + 0x036, 0x0003CF4B, + 0x036, 0x00044F4B, + 0x036, 0x0004CF4B, + 0x036, 0x00054F4B, + 0x036, 0x0005CF4B, + 0xFF0F07D8, 0xCDEF, + 0x018, 0x0001712A, + 0x0EF, 0x00000010, + 0x036, 0x00004BFB, + 0x036, 0x0000CBFB, + 0x036, 0x00014BFB, + 0x036, 0x0001CBFB, + 0x036, 0x00024F4B, + 0x036, 0x0002CF4B, + 0x036, 0x00034F4B, + 0x036, 0x0003CF4B, + 0x036, 0x00044F4B, + 0x036, 0x0004CF4B, + 0x036, 0x00054F4B, + 0x036, 0x0005CF4B, + 0xFF0F07D0, 0xCDEF, + 0x018, 0x0001712A, + 0x0EF, 0x00000010, + 0x036, 0x00004BFB, + 0x036, 0x0000CBFB, + 0x036, 0x00014BFB, + 0x036, 0x0001CBFB, + 0x036, 0x00024F4B, + 0x036, 0x0002CF4B, + 0x036, 0x00034F4B, + 0x036, 0x0003CF4B, + 0x036, 0x00044F4B, + 0x036, 0x0004CF4B, + 0x036, 0x00054F4B, + 0x036, 0x0005CF4B, + 0xCDCDCDCD, 0xCDCD, + 0x018, 0x0001712A, + 0x0EF, 0x00000010, + 0x036, 0x00084EB4, + 0x036, 0x0008CC35, + 0x036, 0x00094C35, + 0x036, 0x0009CC35, + 0x036, 0x000A4935, + 0x036, 0x000ACC35, + 0x036, 0x000B4C35, + 0x036, 0x000BCC35, + 0x036, 0x000C4EB4, + 0x036, 0x000CCEB5, + 0x036, 0x000D4EB5, + 0x036, 0x000DCEB5, + 0xFF0F0740, 0xDEAD, + 0x0EF, 0x00000000, + 0x0EF, 0x00000008, + 0xFF0F0740, 0xABCD, + 0x03C, 0x000002CC, + 0x03C, 0x00000522, + 0x03C, 0x00000902, + 0xFF0F02C0, 0xCDEF, + 0x03C, 0x000002CC, + 0x03C, 0x00000522, + 0x03C, 0x00000902, + 0xFF0F01C0, 0xCDEF, + 0x03C, 0x000002CC, + 0x03C, 0x00000522, + 0x03C, 0x00000902, + 0xFF0F07D8, 0xCDEF, + 0x03C, 0x000002CC, + 0x03C, 0x00000522, + 0x03C, 0x00000902, + 0xFF0F07D0, 0xCDEF, + 0x03C, 0x000002CC, + 0x03C, 0x00000522, + 0x03C, 0x00000902, + 0xCDCDCDCD, 0xCDCD, + 0x03C, 0x000002A8, + 0x03C, 0x000005A2, + 0x03C, 0x00000880, + 0xFF0F0740, 0xDEAD, + 0x0EF, 0x00000000, + 0x018, 0x0001712A, + 0x0EF, 0x00000002, + 0x0DF, 0x00000080, + 0x01F, 0x00040064, + 0xFF0F0740, 0xABCD, + 0x061, 0x000FDD43, + 0x062, 0x00038F4B, + 0x063, 0x00032117, + 0x064, 0x000194AC, + 0x065, 0x000931D1, + 0xFF0F02C0, 0xCDEF, + 0x061, 0x000FDD43, + 0x062, 0x00038F4B, + 0x063, 0x00032117, + 0x064, 0x000194AC, + 0x065, 0x000931D1, + 0xFF0F01C0, 0xCDEF, + 0x061, 0x000FDD43, + 0x062, 0x00038F4B, + 0x063, 0x00032117, + 0x064, 0x000194AC, + 0x065, 0x000931D1, + 0xFF0F07D8, 0xCDEF, + 0x061, 0x000FDD43, + 0x062, 0x00038F4B, + 0x063, 0x00032117, + 0x064, 0x000194AC, + 0x065, 0x000931D1, + 0xFF0F07D0, 0xCDEF, + 0x061, 0x000FDD43, + 0x062, 0x00038F4B, + 0x063, 0x00032117, + 0x064, 0x000194AC, + 0x065, 0x000931D1, + 0xCDCDCDCD, 0xCDCD, + 0x061, 0x000E5D53, + 0x062, 0x00038FCD, + 0x063, 0x000314EB, + 0x064, 0x000196AC, + 0x065, 0x000911D7, + 0xFF0F0740, 0xDEAD, + 0x008, 0x00008400, + 0x01C, 0x000739D2, + 0x0B4, 0x0001E78D, + 0x018, 0x0001F12A, + 0x0FE, 0x00000000, + 0x0FE, 0x00000000, + 0x0FE, 0x00000000, + 0x0FE, 0x00000000, + 0x0B4, 0x0001A78D, + 0x018, 0x0001712A, +}; + +u32 RTL8812AE_RADIOB_ARRAY[] = { + 0x056, 0x00051CF2, + 0x066, 0x00040000, + 0x089, 0x00000080, + 0xFF0F0740, 0xABCD, + 0x086, 0x00014B38, + 0xFF0F01C0, 0xCDEF, + 0x086, 0x00014B38, + 0xFF0F02C0, 0xCDEF, + 0x086, 0x00014B38, + 0xFF0F07D8, 0xCDEF, + 0x086, 0x00014B3A, + 0xFF0F07D0, 0xCDEF, + 0x086, 0x00014B3A, + 0xCDCDCDCD, 0xCDCD, + 0x086, 0x00014B38, + 0xFF0F0740, 0xDEAD, + 0x018, 0x00000006, + 0x0EF, 0x00002000, + 0xFF0F07D8, 0xABCD, + 0x03B, 0x0003F218, + 0x03B, 0x00030A58, + 0x03B, 0x0002FA58, + 0x03B, 0x00022590, + 0x03B, 0x0001FA50, + 0x03B, 0x00010248, + 0x03B, 0x00008240, + 0xFF0F07D0, 0xCDEF, + 0x03B, 0x0003F218, + 0x03B, 0x00030A58, + 0x03B, 0x0002FA58, + 0x03B, 0x00022590, + 0x03B, 0x0001FA50, + 0x03B, 0x00010248, + 0x03B, 0x00008240, + 0xCDCDCDCD, 0xCDCD, + 0x03B, 0x00038A58, + 0x03B, 0x00037A58, + 0x03B, 0x0002A590, + 0x03B, 0x00027A50, + 0x03B, 0x00018248, + 0x03B, 0x00010240, + 0x03B, 0x00008240, + 0xFF0F07D8, 0xDEAD, + 0x0EF, 0x00000100, + 0xFF0F07D8, 0xABCD, + 0x034, 0x0000A4EE, + 0x034, 0x00009076, + 0x034, 0x00008073, + 0x034, 0x00007070, + 0x034, 0x0000606D, + 0x034, 0x0000506A, + 0x034, 0x00004049, + 0x034, 0x00003046, + 0x034, 0x00002028, + 0x034, 0x00001025, + 0x034, 0x00000022, + 0xCDCDCDCD, 0xCDCD, + 0x034, 0x0000ADF4, + 0x034, 0x00009DF1, + 0x034, 0x00008DEE, + 0x034, 0x00007DEB, + 0x034, 0x00006DE8, + 0x034, 0x00005CEC, + 0x034, 0x00004CE9, + 0x034, 0x000034EA, + 0x034, 0x000024E7, + 0x034, 0x0000146B, + 0x034, 0x0000006D, + 0xFF0F07D8, 0xDEAD, + 0x0EF, 0x00000000, + 0x0EF, 0x000020A2, + 0x0DF, 0x00000080, + 0x035, 0x00000192, + 0x035, 0x00008192, + 0x035, 0x00010192, + 0x036, 0x00000024, + 0x036, 0x00008024, + 0x036, 0x00010024, + 0x036, 0x00018024, + 0x0EF, 0x00000000, + 0x051, 0x00000C21, + 0x052, 0x000006D9, + 0x053, 0x000FC649, + 0x054, 0x0000017E, + 0x0EF, 0x00000002, + 0x008, 0x00008400, + 0x018, 0x0001712A, + 0x0EF, 0x00001000, + 0x03A, 0x00000080, + 0x03B, 0x0003A02C, + 0x03C, 0x00004000, + 0x03A, 0x00000400, + 0x03B, 0x0003202C, + 0x03C, 0x00010000, + 0x03A, 0x000000A0, + 0x03B, 0x0002B064, + 0x03C, 0x00004000, + 0x03A, 0x000000D8, + 0x03B, 0x00023070, + 0x03C, 0x00004000, + 0x03A, 0x00000468, + 0x03B, 0x0001B870, + 0x03C, 0x00010000, + 0x03A, 0x00000098, + 0x03B, 0x00012085, + 0x03C, 0x000E4000, + 0x03A, 0x00000418, + 0x03B, 0x0000A080, + 0x03C, 0x000F0000, + 0x03A, 0x00000418, + 0x03B, 0x00002080, + 0x03C, 0x00010000, + 0x03A, 0x00000080, + 0x03B, 0x0007A02C, + 0x03C, 0x00004000, + 0x03A, 0x00000400, + 0x03B, 0x0007202C, + 0x03C, 0x00010000, + 0x03A, 0x000000A0, + 0x03B, 0x0006B064, + 0x03C, 0x00004000, + 0x03A, 0x000000D8, + 0x03B, 0x00063070, + 0x03C, 0x00004000, + 0x03A, 0x00000468, + 0x03B, 0x0005B870, + 0x03C, 0x00010000, + 0x03A, 0x00000098, + 0x03B, 0x00052085, + 0x03C, 0x000E4000, + 0x03A, 0x00000418, + 0x03B, 0x0004A080, + 0x03C, 0x000F0000, + 0x03A, 0x00000418, + 0x03B, 0x00042080, + 0x03C, 0x00010000, + 0x03A, 0x00000080, + 0x03B, 0x000BA02C, + 0x03C, 0x00004000, + 0x03A, 0x00000400, + 0x03B, 0x000B202C, + 0x03C, 0x00010000, + 0x03A, 0x000000A0, + 0x03B, 0x000AB064, + 0x03C, 0x00004000, + 0x03A, 0x000000D8, + 0x03B, 0x000A3070, + 0x03C, 0x00004000, + 0x03A, 0x00000468, + 0x03B, 0x0009B870, + 0x03C, 0x00010000, + 0x03A, 0x00000098, + 0x03B, 0x00092085, + 0x03C, 0x000E4000, + 0x03A, 0x00000418, + 0x03B, 0x0008A080, + 0x03C, 0x000F0000, + 0x03A, 0x00000418, + 0x03B, 0x00082080, + 0x03C, 0x00010000, + 0x0EF, 0x00001100, + 0xFF0F0740, 0xABCD, + 0x034, 0x0004A0B2, + 0x034, 0x000490AF, + 0x034, 0x00048070, + 0x034, 0x0004706D, + 0x034, 0x00046050, + 0x034, 0x0004504D, + 0x034, 0x0004404A, + 0x034, 0x00043047, + 0x034, 0x0004200A, + 0x034, 0x00041007, + 0x034, 0x00040004, + 0xFF0F01C0, 0xCDEF, + 0x034, 0x0004A0B2, + 0x034, 0x000490AF, + 0x034, 0x00048070, + 0x034, 0x0004706D, + 0x034, 0x00046050, + 0x034, 0x0004504D, + 0x034, 0x0004404A, + 0x034, 0x00043047, + 0x034, 0x0004200A, + 0x034, 0x00041007, + 0x034, 0x00040004, + 0xFF0F02C0, 0xCDEF, + 0x034, 0x0004A0B2, + 0x034, 0x000490AF, + 0x034, 0x00048070, + 0x034, 0x0004706D, + 0x034, 0x00046050, + 0x034, 0x0004504D, + 0x034, 0x0004404A, + 0x034, 0x00043047, + 0x034, 0x0004200A, + 0x034, 0x00041007, + 0x034, 0x00040004, + 0xFF0F07D8, 0xCDEF, + 0x034, 0x0004A0B2, + 0x034, 0x000490AF, + 0x034, 0x00048070, + 0x034, 0x0004706D, + 0x034, 0x00046050, + 0x034, 0x0004504D, + 0x034, 0x0004404A, + 0x034, 0x00043047, + 0x034, 0x0004200A, + 0x034, 0x00041007, + 0x034, 0x00040004, + 0xFF0F07D0, 0xCDEF, + 0x034, 0x0004A0B2, + 0x034, 0x000490AF, + 0x034, 0x00048070, + 0x034, 0x0004706D, + 0x034, 0x00046050, + 0x034, 0x0004504D, + 0x034, 0x0004404A, + 0x034, 0x00043047, + 0x034, 0x0004200A, + 0x034, 0x00041007, + 0x034, 0x00040004, + 0xCDCDCDCD, 0xCDCD, + 0x034, 0x0004ADF5, + 0x034, 0x00049DF2, + 0x034, 0x00048DEF, + 0x034, 0x00047DEC, + 0x034, 0x00046DE9, + 0x034, 0x00045DC9, + 0x034, 0x00044CE8, + 0x034, 0x000438CA, + 0x034, 0x00042889, + 0x034, 0x0004184A, + 0x034, 0x0004044A, + 0xFF0F0740, 0xDEAD, + 0xFF0F0740, 0xABCD, + 0x034, 0x0002A0B2, + 0x034, 0x000290AF, + 0x034, 0x00028070, + 0x034, 0x0002706D, + 0x034, 0x00026050, + 0x034, 0x0002504D, + 0x034, 0x0002404A, + 0x034, 0x00023047, + 0x034, 0x0002200A, + 0x034, 0x00021007, + 0x034, 0x00020004, + 0xFF0F01C0, 0xCDEF, + 0x034, 0x0002A0B2, + 0x034, 0x000290AF, + 0x034, 0x00028070, + 0x034, 0x0002706D, + 0x034, 0x00026050, + 0x034, 0x0002504D, + 0x034, 0x0002404A, + 0x034, 0x00023047, + 0x034, 0x0002200A, + 0x034, 0x00021007, + 0x034, 0x00020004, + 0xFF0F02C0, 0xCDEF, + 0x034, 0x0002A0B2, + 0x034, 0x000290AF, + 0x034, 0x00028070, + 0x034, 0x0002706D, + 0x034, 0x00026050, + 0x034, 0x0002504D, + 0x034, 0x0002404A, + 0x034, 0x00023047, + 0x034, 0x0002200A, + 0x034, 0x00021007, + 0x034, 0x00020004, + 0xFF0F07D8, 0xCDEF, + 0x034, 0x0002A0B2, + 0x034, 0x000290AF, + 0x034, 0x00028070, + 0x034, 0x0002706D, + 0x034, 0x00026050, + 0x034, 0x0002504D, + 0x034, 0x0002404A, + 0x034, 0x00023047, + 0x034, 0x0002200A, + 0x034, 0x00021007, + 0x034, 0x00020004, + 0xFF0F07D0, 0xCDEF, + 0x034, 0x0002A0B2, + 0x034, 0x000290AF, + 0x034, 0x00028070, + 0x034, 0x0002706D, + 0x034, 0x00026050, + 0x034, 0x0002504D, + 0x034, 0x0002404A, + 0x034, 0x00023047, + 0x034, 0x0002200A, + 0x034, 0x00021007, + 0x034, 0x00020004, + 0xCDCDCDCD, 0xCDCD, + 0x034, 0x0002ADF5, + 0x034, 0x00029DF2, + 0x034, 0x00028DEF, + 0x034, 0x00027DEC, + 0x034, 0x00026DE9, + 0x034, 0x00025DC9, + 0x034, 0x00024CE8, + 0x034, 0x000238CA, + 0x034, 0x00022889, + 0x034, 0x0002184A, + 0x034, 0x0002044A, + 0xFF0F0740, 0xDEAD, + 0xFF0F0740, 0xABCD, + 0x034, 0x0000A0B2, + 0x034, 0x000090AF, + 0x034, 0x00008070, + 0x034, 0x0000706D, + 0x034, 0x00006050, + 0x034, 0x0000504D, + 0x034, 0x0000404A, + 0x034, 0x00003047, + 0x034, 0x0000200A, + 0x034, 0x00001007, + 0x034, 0x00000004, + 0xFF0F01C0, 0xCDEF, + 0x034, 0x0000A0B2, + 0x034, 0x000090AF, + 0x034, 0x00008070, + 0x034, 0x0000706D, + 0x034, 0x00006050, + 0x034, 0x0000504D, + 0x034, 0x0000404A, + 0x034, 0x00003047, + 0x034, 0x0000200A, + 0x034, 0x00001007, + 0x034, 0x00000004, + 0xFF0F02C0, 0xCDEF, + 0x034, 0x0000A0B2, + 0x034, 0x000090AF, + 0x034, 0x00008070, + 0x034, 0x0000706D, + 0x034, 0x00006050, + 0x034, 0x0000504D, + 0x034, 0x0000404A, + 0x034, 0x00003047, + 0x034, 0x0000200A, + 0x034, 0x00001007, + 0x034, 0x00000004, + 0xFF0F07D8, 0xCDEF, + 0x034, 0x0000A0B2, + 0x034, 0x000090AF, + 0x034, 0x00008070, + 0x034, 0x0000706D, + 0x034, 0x00006050, + 0x034, 0x0000504D, + 0x034, 0x0000404A, + 0x034, 0x00003047, + 0x034, 0x0000200A, + 0x034, 0x00001007, + 0x034, 0x00000004, + 0xFF0F07D0, 0xCDEF, + 0x034, 0x0000A0B2, + 0x034, 0x000090AF, + 0x034, 0x00008070, + 0x034, 0x0000706D, + 0x034, 0x00006050, + 0x034, 0x0000504D, + 0x034, 0x0000404A, + 0x034, 0x00003047, + 0x034, 0x0000200A, + 0x034, 0x00001007, + 0x034, 0x00000004, + 0xCDCDCDCD, 0xCDCD, + 0x034, 0x0000AFF7, + 0x034, 0x00009DF7, + 0x034, 0x00008DF4, + 0x034, 0x00007DF1, + 0x034, 0x00006DEE, + 0x034, 0x00005DCD, + 0x034, 0x00004CEB, + 0x034, 0x000038CC, + 0x034, 0x0000288B, + 0x034, 0x0000184C, + 0x034, 0x0000044C, + 0xFF0F0740, 0xDEAD, + 0x0EF, 0x00000000, + 0xFF0F0740, 0xABCD, + 0x018, 0x0001712A, + 0x0EF, 0x00000040, + 0x035, 0x000001C5, + 0x035, 0x000081C5, + 0x035, 0x000101C5, + 0x035, 0x00020174, + 0x035, 0x00028174, + 0x035, 0x00030174, + 0x035, 0x00040185, + 0x035, 0x00048185, + 0x035, 0x00050185, + 0x0EF, 0x00000000, + 0xFF0F01C0, 0xCDEF, + 0x018, 0x0001712A, + 0x0EF, 0x00000040, + 0x035, 0x000001C5, + 0x035, 0x000081C5, + 0x035, 0x000101C5, + 0x035, 0x00020174, + 0x035, 0x00028174, + 0x035, 0x00030174, + 0x035, 0x00040185, + 0x035, 0x00048185, + 0x035, 0x00050185, + 0x0EF, 0x00000000, + 0xFF0F02C0, 0xCDEF, + 0x018, 0x0001712A, + 0x0EF, 0x00000040, + 0x035, 0x000001C5, + 0x035, 0x000081C5, + 0x035, 0x000101C5, + 0x035, 0x00020174, + 0x035, 0x00028174, + 0x035, 0x00030174, + 0x035, 0x00040185, + 0x035, 0x00048185, + 0x035, 0x00050185, + 0x0EF, 0x00000000, + 0xFF0F07D8, 0xCDEF, + 0x018, 0x0001712A, + 0x0EF, 0x00000040, + 0x035, 0x000001C5, + 0x035, 0x000081C5, + 0x035, 0x000101C5, + 0x035, 0x00020174, + 0x035, 0x00028174, + 0x035, 0x00030174, + 0x035, 0x00040185, + 0x035, 0x00048185, + 0x035, 0x00050185, + 0x0EF, 0x00000000, + 0xFF0F07D0, 0xCDEF, + 0x018, 0x0001712A, + 0x0EF, 0x00000040, + 0x035, 0x000001C5, + 0x035, 0x000081C5, + 0x035, 0x000101C5, + 0x035, 0x00020174, + 0x035, 0x00028174, + 0x035, 0x00030174, + 0x035, 0x00040185, + 0x035, 0x00048185, + 0x035, 0x00050185, + 0x0EF, 0x00000000, + 0xCDCDCDCD, 0xCDCD, + 0x018, 0x0001712A, + 0x0EF, 0x00000040, + 0x035, 0x00000186, + 0x035, 0x00008186, + 0x035, 0x00010185, + 0x035, 0x000201D5, + 0x035, 0x000281D5, + 0x035, 0x000301D5, + 0x035, 0x000401D5, + 0x035, 0x000481D5, + 0x035, 0x000501D5, + 0x0EF, 0x00000000, + 0xFF0F0740, 0xDEAD, + 0xFF0F0740, 0xABCD, + 0x018, 0x0001712A, + 0x0EF, 0x00000010, + 0x036, 0x00005B8B, + 0x036, 0x0000DB8B, + 0x036, 0x00015B8B, + 0x036, 0x0001DB8B, + 0x036, 0x000262DB, + 0x036, 0x0002E2DB, + 0x036, 0x000362DB, + 0x036, 0x0003E2DB, + 0x036, 0x0004553B, + 0x036, 0x0004D53B, + 0x036, 0x0005553B, + 0x036, 0x0005D53B, + 0xFF0F01C0, 0xCDEF, + 0x018, 0x0001712A, + 0x0EF, 0x00000010, + 0x036, 0x00005B8B, + 0x036, 0x0000DB8B, + 0x036, 0x00015B8B, + 0x036, 0x0001DB8B, + 0x036, 0x000262DB, + 0x036, 0x0002E2DB, + 0x036, 0x000362DB, + 0x036, 0x0003E2DB, + 0x036, 0x0004553B, + 0x036, 0x0004D53B, + 0x036, 0x0005553B, + 0x036, 0x0005D53B, + 0xFF0F02C0, 0xCDEF, + 0x018, 0x0001712A, + 0x0EF, 0x00000010, + 0x036, 0x00005B8B, + 0x036, 0x0000DB8B, + 0x036, 0x00015B8B, + 0x036, 0x0001DB8B, + 0x036, 0x000262DB, + 0x036, 0x0002E2DB, + 0x036, 0x000362DB, + 0x036, 0x0003E2DB, + 0x036, 0x0004553B, + 0x036, 0x0004D53B, + 0x036, 0x0005553B, + 0x036, 0x0005D53B, + 0xFF0F07D8, 0xCDEF, + 0x018, 0x0001712A, + 0x0EF, 0x00000010, + 0x036, 0x00005B8B, + 0x036, 0x0000DB8B, + 0x036, 0x00015B8B, + 0x036, 0x0001DB8B, + 0x036, 0x000262DB, + 0x036, 0x0002E2DB, + 0x036, 0x000362DB, + 0x036, 0x0003E2DB, + 0x036, 0x0004553B, + 0x036, 0x0004D53B, + 0x036, 0x0005553B, + 0x036, 0x0005D53B, + 0xFF0F07D0, 0xCDEF, + 0x018, 0x0001712A, + 0x0EF, 0x00000010, + 0x036, 0x00005B8B, + 0x036, 0x0000DB8B, + 0x036, 0x00015B8B, + 0x036, 0x0001DB8B, + 0x036, 0x000262DB, + 0x036, 0x0002E2DB, + 0x036, 0x000362DB, + 0x036, 0x0003E2DB, + 0x036, 0x0004553B, + 0x036, 0x0004D53B, + 0x036, 0x0005553B, + 0x036, 0x0005D53B, + 0xCDCDCDCD, 0xCDCD, + 0x018, 0x0001712A, + 0x0EF, 0x00000010, + 0x036, 0x00084EB4, + 0x036, 0x0008C9B4, + 0x036, 0x000949B4, + 0x036, 0x0009C9B4, + 0x036, 0x000A4935, + 0x036, 0x000AC935, + 0x036, 0x000B4935, + 0x036, 0x000BC935, + 0x036, 0x000C4EB4, + 0x036, 0x000CCEB4, + 0x036, 0x000D4EB4, + 0x036, 0x000DCEB4, + 0xFF0F0740, 0xDEAD, + 0x0EF, 0x00000000, + 0x0EF, 0x00000008, + 0xFF0F0740, 0xABCD, + 0x03C, 0x000002DC, + 0x03C, 0x00000524, + 0x03C, 0x00000902, + 0xFF0F01C0, 0xCDEF, + 0x03C, 0x000002DC, + 0x03C, 0x00000524, + 0x03C, 0x00000902, + 0xFF0F02C0, 0xCDEF, + 0x03C, 0x000002DC, + 0x03C, 0x00000524, + 0x03C, 0x00000902, + 0xFF0F07D8, 0xCDEF, + 0x03C, 0x000002DC, + 0x03C, 0x00000524, + 0x03C, 0x00000902, + 0xFF0F07D0, 0xCDEF, + 0x03C, 0x000002DC, + 0x03C, 0x00000524, + 0x03C, 0x00000902, + 0xCDCDCDCD, 0xCDCD, + 0x03C, 0x000002AA, + 0x03C, 0x000005A2, + 0x03C, 0x00000880, + 0xFF0F0740, 0xDEAD, + 0x0EF, 0x00000000, + 0x018, 0x0001712A, + 0x0EF, 0x00000002, + 0x0DF, 0x00000080, + 0xFF0F0740, 0xABCD, + 0x061, 0x000EAC43, + 0x062, 0x00038F47, + 0x063, 0x00031157, + 0x064, 0x0001C4AC, + 0x065, 0x000931D1, + 0xFF0F01C0, 0xCDEF, + 0x061, 0x000EAC43, + 0x062, 0x00038F47, + 0x063, 0x00031157, + 0x064, 0x0001C4AC, + 0x065, 0x000931D1, + 0xFF0F02C0, 0xCDEF, + 0x061, 0x000EAC43, + 0x062, 0x00038F47, + 0x063, 0x00031157, + 0x064, 0x0001C4AC, + 0x065, 0x000931D1, + 0xFF0F07D8, 0xCDEF, + 0x061, 0x000EAC43, + 0x062, 0x00038F47, + 0x063, 0x00031157, + 0x064, 0x0001C4AC, + 0x065, 0x000931D1, + 0xFF0F07D0, 0xCDEF, + 0x061, 0x000EAC43, + 0x062, 0x00038F47, + 0x063, 0x00031157, + 0x064, 0x0001C4AC, + 0x065, 0x000931D1, + 0xCDCDCDCD, 0xCDCD, + 0x061, 0x000E5D53, + 0x062, 0x00038FCD, + 0x063, 0x000314EB, + 0x064, 0x000196AC, + 0x065, 0x000931D7, + 0xFF0F0740, 0xDEAD, + 0x008, 0x00008400, +}; + +u32 RTL8821AE_RADIOA_ARRAY[] = { + 0x018, 0x0001712A, + 0x056, 0x00051CF2, + 0x066, 0x00040000, + 0x000, 0x00010000, + 0x01E, 0x00080000, + 0x082, 0x00000830, + 0x083, 0x00021800, + 0x084, 0x00028000, + 0x085, 0x00048000, + 0x086, 0x00094838, + 0x087, 0x00044980, + 0x088, 0x00048000, + 0x089, 0x0000D480, + 0x08A, 0x00042240, + 0x08B, 0x000F0380, + 0x08C, 0x00090000, + 0x08D, 0x00022852, + 0x08E, 0x00065540, + 0x08F, 0x00088001, + 0x0EF, 0x00020000, + 0x03E, 0x00000380, + 0x03F, 0x00090018, + 0x03E, 0x00020380, + 0x03F, 0x000A0018, + 0x03E, 0x00040308, + 0x03F, 0x000A0018, + 0x03E, 0x00060018, + 0x03F, 0x000A0018, + 0x0EF, 0x00000000, + 0x018, 0x0001712A, + 0x089, 0x00000080, + 0x08B, 0x00080180, + 0x0EF, 0x00001000, + 0x03A, 0x00000244, + 0x03B, 0x00038027, + 0x03C, 0x00082000, + 0x03A, 0x00000244, + 0x03B, 0x00030113, + 0x03C, 0x00082000, + 0x03A, 0x0000014C, + 0x03B, 0x00028027, + 0x03C, 0x00082000, + 0x03A, 0x000000CC, + 0x03B, 0x00027027, + 0x03C, 0x00042000, + 0x03A, 0x0000014C, + 0x03B, 0x0001F913, + 0x03C, 0x00042000, + 0x03A, 0x0000010C, + 0x03B, 0x00017F10, + 0x03C, 0x00012000, + 0x03A, 0x000000D0, + 0x03B, 0x00008027, + 0x03C, 0x000CA000, + 0x03A, 0x00000244, + 0x03B, 0x00078027, + 0x03C, 0x00082000, + 0x03A, 0x00000244, + 0x03B, 0x00070113, + 0x03C, 0x00082000, + 0x03A, 0x0000014C, + 0x03B, 0x00068027, + 0x03C, 0x00082000, + 0x03A, 0x000000CC, + 0x03B, 0x00067027, + 0x03C, 0x00042000, + 0x03A, 0x0000014C, + 0x03B, 0x0005F913, + 0x03C, 0x00042000, + 0x03A, 0x0000010C, + 0x03B, 0x00057F10, + 0x03C, 0x00012000, + 0x03A, 0x000000D0, + 0x03B, 0x00048027, + 0x03C, 0x000CA000, + 0x03A, 0x00000244, + 0x03B, 0x000B8027, + 0x03C, 0x00082000, + 0x03A, 0x00000244, + 0x03B, 0x000B0113, + 0x03C, 0x00082000, + 0x03A, 0x0000014C, + 0x03B, 0x000A8027, + 0x03C, 0x00082000, + 0x03A, 0x000000CC, + 0x03B, 0x000A7027, + 0x03C, 0x00042000, + 0x03A, 0x0000014C, + 0x03B, 0x0009F913, + 0x03C, 0x00042000, + 0x03A, 0x0000010C, + 0x03B, 0x00097F10, + 0x03C, 0x00012000, + 0x03A, 0x000000D0, + 0x03B, 0x00088027, + 0x03C, 0x000CA000, + 0x0EF, 0x00000000, + 0x0EF, 0x00001100, + 0xFF0F0104, 0xABCD, + 0x034, 0x0004ADF3, + 0x034, 0x00049DF0, + 0xFF0F0204, 0xCDEF, + 0x034, 0x0004ADF3, + 0x034, 0x00049DF0, + 0xFF0F0404, 0xCDEF, + 0x034, 0x0004ADF3, + 0x034, 0x00049DF0, + 0xFF0F0200, 0xCDEF, + 0x034, 0x0004ADF5, + 0x034, 0x00049DF2, + 0xFF0F02C0, 0xCDEF, + 0x034, 0x0004A0F3, + 0x034, 0x000490B1, + 0xCDCDCDCD, 0xCDCD, + 0x034, 0x0004ADF7, + 0x034, 0x00049DF3, + 0xFF0F0104, 0xDEAD, + 0xFF0F0104, 0xABCD, + 0x034, 0x00048DED, + 0x034, 0x00047DEA, + 0x034, 0x00046DE7, + 0x034, 0x00045CE9, + 0x034, 0x00044CE6, + 0x034, 0x000438C6, + 0x034, 0x00042886, + 0x034, 0x00041486, + 0x034, 0x00040447, + 0xFF0F0204, 0xCDEF, + 0x034, 0x00048DED, + 0x034, 0x00047DEA, + 0x034, 0x00046DE7, + 0x034, 0x00045CE9, + 0x034, 0x00044CE6, + 0x034, 0x000438C6, + 0x034, 0x00042886, + 0x034, 0x00041486, + 0x034, 0x00040447, + 0xFF0F0404, 0xCDEF, + 0x034, 0x00048DED, + 0x034, 0x00047DEA, + 0x034, 0x00046DE7, + 0x034, 0x00045CE9, + 0x034, 0x00044CE6, + 0x034, 0x000438C6, + 0x034, 0x00042886, + 0x034, 0x00041486, + 0x034, 0x00040447, + 0xFF0F02C0, 0xCDEF, + 0x034, 0x000480AE, + 0x034, 0x000470AB, + 0x034, 0x0004608B, + 0x034, 0x00045069, + 0x034, 0x00044048, + 0x034, 0x00043045, + 0x034, 0x00042026, + 0x034, 0x00041023, + 0x034, 0x00040002, + 0xCDCDCDCD, 0xCDCD, + 0x034, 0x00048DEF, + 0x034, 0x00047DEC, + 0x034, 0x00046DE9, + 0x034, 0x00045CCB, + 0x034, 0x0004488D, + 0x034, 0x0004348D, + 0x034, 0x0004248A, + 0x034, 0x0004108D, + 0x034, 0x0004008A, + 0xFF0F0104, 0xDEAD, + 0xFF0F0200, 0xABCD, + 0x034, 0x0002ADF4, + 0xFF0F02C0, 0xCDEF, + 0x034, 0x0002A0F3, + 0xCDCDCDCD, 0xCDCD, + 0x034, 0x0002ADF7, + 0xFF0F0200, 0xDEAD, + 0xFF0F0104, 0xABCD, + 0x034, 0x00029DF4, + 0xFF0F0204, 0xCDEF, + 0x034, 0x00029DF4, + 0xFF0F0404, 0xCDEF, + 0x034, 0x00029DF4, + 0xFF0F0200, 0xCDEF, + 0x034, 0x00029DF1, + 0xFF0F02C0, 0xCDEF, + 0x034, 0x000290F0, + 0xCDCDCDCD, 0xCDCD, + 0x034, 0x00029DF2, + 0xFF0F0104, 0xDEAD, + 0xFF0F0104, 0xABCD, + 0x034, 0x00028DF1, + 0x034, 0x00027DEE, + 0x034, 0x00026DEB, + 0x034, 0x00025CEC, + 0x034, 0x00024CE9, + 0x034, 0x000238CA, + 0x034, 0x00022889, + 0x034, 0x00021489, + 0x034, 0x0002044A, + 0xFF0F0204, 0xCDEF, + 0x034, 0x00028DF1, + 0x034, 0x00027DEE, + 0x034, 0x00026DEB, + 0x034, 0x00025CEC, + 0x034, 0x00024CE9, + 0x034, 0x000238CA, + 0x034, 0x00022889, + 0x034, 0x00021489, + 0x034, 0x0002044A, + 0xFF0F0404, 0xCDEF, + 0x034, 0x00028DF1, + 0x034, 0x00027DEE, + 0x034, 0x00026DEB, + 0x034, 0x00025CEC, + 0x034, 0x00024CE9, + 0x034, 0x000238CA, + 0x034, 0x00022889, + 0x034, 0x00021489, + 0x034, 0x0002044A, + 0xFF0F02C0, 0xCDEF, + 0x034, 0x000280AF, + 0x034, 0x000270AC, + 0x034, 0x0002608B, + 0x034, 0x00025069, + 0x034, 0x00024048, + 0x034, 0x00023045, + 0x034, 0x00022026, + 0x034, 0x00021023, + 0x034, 0x00020002, + 0xCDCDCDCD, 0xCDCD, + 0x034, 0x00028DEE, + 0x034, 0x00027DEB, + 0x034, 0x00026CCD, + 0x034, 0x00025CCA, + 0x034, 0x0002488C, + 0x034, 0x0002384C, + 0x034, 0x00022849, + 0x034, 0x00021449, + 0x034, 0x0002004D, + 0xFF0F0104, 0xDEAD, + 0xFF0F02C0, 0xABCD, + 0x034, 0x0000A0D7, + 0x034, 0x000090D3, + 0x034, 0x000080B1, + 0x034, 0x000070AE, + 0xCDCDCDCD, 0xCDCD, + 0x034, 0x0000ADF7, + 0x034, 0x00009DF4, + 0x034, 0x00008DF1, + 0x034, 0x00007DEE, + 0xFF0F02C0, 0xDEAD, + 0xFF0F0104, 0xABCD, + 0x034, 0x00006DEB, + 0x034, 0x00005CEC, + 0x034, 0x00004CE9, + 0x034, 0x000038CA, + 0x034, 0x00002889, + 0x034, 0x00001489, + 0x034, 0x0000044A, + 0xFF0F0204, 0xCDEF, + 0x034, 0x00006DEB, + 0x034, 0x00005CEC, + 0x034, 0x00004CE9, + 0x034, 0x000038CA, + 0x034, 0x00002889, + 0x034, 0x00001489, + 0x034, 0x0000044A, + 0xFF0F0404, 0xCDEF, + 0x034, 0x00006DEB, + 0x034, 0x00005CEC, + 0x034, 0x00004CE9, + 0x034, 0x000038CA, + 0x034, 0x00002889, + 0x034, 0x00001489, + 0x034, 0x0000044A, + 0xFF0F02C0, 0xCDEF, + 0x034, 0x0000608D, + 0x034, 0x0000506B, + 0x034, 0x0000404A, + 0x034, 0x00003047, + 0x034, 0x00002044, + 0x034, 0x00001025, + 0x034, 0x00000004, + 0xCDCDCDCD, 0xCDCD, + 0x034, 0x00006DCD, + 0x034, 0x00005CCD, + 0x034, 0x00004CCA, + 0x034, 0x0000388C, + 0x034, 0x00002888, + 0x034, 0x00001488, + 0x034, 0x00000486, + 0xFF0F0104, 0xDEAD, + 0x0EF, 0x00000000, + 0x018, 0x0001712A, + 0x0EF, 0x00000040, + 0xFF0F0104, 0xABCD, + 0x035, 0x00000187, + 0x035, 0x00008187, + 0x035, 0x00010187, + 0x035, 0x00020188, + 0x035, 0x00028188, + 0x035, 0x00030188, + 0x035, 0x00040188, + 0x035, 0x00048188, + 0x035, 0x00050188, + 0xFF0F0204, 0xCDEF, + 0x035, 0x00000187, + 0x035, 0x00008187, + 0x035, 0x00010187, + 0x035, 0x00020188, + 0x035, 0x00028188, + 0x035, 0x00030188, + 0x035, 0x00040188, + 0x035, 0x00048188, + 0x035, 0x00050188, + 0xFF0F0404, 0xCDEF, + 0x035, 0x00000187, + 0x035, 0x00008187, + 0x035, 0x00010187, + 0x035, 0x00020188, + 0x035, 0x00028188, + 0x035, 0x00030188, + 0x035, 0x00040188, + 0x035, 0x00048188, + 0x035, 0x00050188, + 0xCDCDCDCD, 0xCDCD, + 0x035, 0x00000145, + 0x035, 0x00008145, + 0x035, 0x00010145, + 0x035, 0x00020196, + 0x035, 0x00028196, + 0x035, 0x00030196, + 0x035, 0x000401C7, + 0x035, 0x000481C7, + 0x035, 0x000501C7, + 0xFF0F0104, 0xDEAD, + 0x0EF, 0x00000000, + 0x018, 0x0001712A, + 0x0EF, 0x00000010, + 0xFF0F0104, 0xABCD, + 0x036, 0x00085733, + 0x036, 0x0008D733, + 0x036, 0x00095733, + 0x036, 0x0009D733, + 0x036, 0x000A64B4, + 0x036, 0x000AE4B4, + 0x036, 0x000B64B4, + 0x036, 0x000BE4B4, + 0x036, 0x000C64B4, + 0x036, 0x000CE4B4, + 0x036, 0x000D64B4, + 0x036, 0x000DE4B4, + 0xFF0F0204, 0xCDEF, + 0x036, 0x00085733, + 0x036, 0x0008D733, + 0x036, 0x00095733, + 0x036, 0x0009D733, + 0x036, 0x000A64B4, + 0x036, 0x000AE4B4, + 0x036, 0x000B64B4, + 0x036, 0x000BE4B4, + 0x036, 0x000C64B4, + 0x036, 0x000CE4B4, + 0x036, 0x000D64B4, + 0x036, 0x000DE4B4, + 0xFF0F0404, 0xCDEF, + 0x036, 0x00085733, + 0x036, 0x0008D733, + 0x036, 0x00095733, + 0x036, 0x0009D733, + 0x036, 0x000A64B4, + 0x036, 0x000AE4B4, + 0x036, 0x000B64B4, + 0x036, 0x000BE4B4, + 0x036, 0x000C64B4, + 0x036, 0x000CE4B4, + 0x036, 0x000D64B4, + 0x036, 0x000DE4B4, + 0xCDCDCDCD, 0xCDCD, + 0x036, 0x000056B3, + 0x036, 0x0000D6B3, + 0x036, 0x000156B3, + 0x036, 0x0001D6B3, + 0x036, 0x00026634, + 0x036, 0x0002E634, + 0x036, 0x00036634, + 0x036, 0x0003E634, + 0x036, 0x000467B4, + 0x036, 0x0004E7B4, + 0x036, 0x000567B4, + 0x036, 0x0005E7B4, + 0xFF0F0104, 0xDEAD, + 0x0EF, 0x00000000, + 0x0EF, 0x00000008, + 0xFF0F0104, 0xABCD, + 0x03C, 0x000001C8, + 0x03C, 0x00000492, + 0xFF0F0204, 0xCDEF, + 0x03C, 0x000001C8, + 0x03C, 0x00000492, + 0xFF0F0404, 0xCDEF, + 0x03C, 0x000001C8, + 0x03C, 0x00000492, + 0xCDCDCDCD, 0xCDCD, + 0x03C, 0x0000022A, + 0x03C, 0x00000594, + 0xFF0F0104, 0xDEAD, + 0xFF0F0104, 0xABCD, + 0x03C, 0x00000800, + 0xFF0F0204, 0xCDEF, + 0x03C, 0x00000800, + 0xFF0F0404, 0xCDEF, + 0x03C, 0x00000800, + 0xFF0F02C0, 0xCDEF, + 0x03C, 0x00000820, + 0xCDCDCDCD, 0xCDCD, + 0x03C, 0x00000900, + 0xFF0F0104, 0xDEAD, + 0x0EF, 0x00000000, + 0x018, 0x0001712A, + 0x0EF, 0x00000002, + 0xFF0F0104, 0xABCD, + 0x008, 0x0004E400, + 0xFF0F0204, 0xCDEF, + 0x008, 0x0004E400, + 0xFF0F0404, 0xCDEF, + 0x008, 0x0004E400, + 0xCDCDCDCD, 0xCDCD, + 0x008, 0x00002000, + 0xFF0F0104, 0xDEAD, + 0x0EF, 0x00000000, + 0x0DF, 0x000000C0, + 0x01F, 0x00040064, + 0xFF0F0104, 0xABCD, + 0x058, 0x000A7284, + 0x059, 0x000600EC, + 0xFF0F0204, 0xCDEF, + 0x058, 0x000A7284, + 0x059, 0x000600EC, + 0xFF0F0404, 0xCDEF, + 0x058, 0x000A7284, + 0x059, 0x000600EC, + 0xCDCDCDCD, 0xCDCD, + 0x058, 0x00081184, + 0x059, 0x0006016C, + 0xFF0F0104, 0xDEAD, + 0xFF0F0104, 0xABCD, + 0x061, 0x000E8D73, + 0x062, 0x00093FC5, + 0xFF0F0204, 0xCDEF, + 0x061, 0x000E8D73, + 0x062, 0x00093FC5, + 0xFF0F0404, 0xCDEF, + 0x061, 0x000E8D73, + 0x062, 0x00093FC5, + 0xCDCDCDCD, 0xCDCD, + 0x061, 0x000EAD53, + 0x062, 0x00093BC4, + 0xFF0F0104, 0xDEAD, + 0xFF0F0104, 0xABCD, + 0x063, 0x000110E9, + 0xFF0F0204, 0xCDEF, + 0x063, 0x000110E9, + 0xFF0F0404, 0xCDEF, + 0x063, 0x000110E9, + 0xFF0F0200, 0xCDEF, + 0x063, 0x000710E9, + 0xFF0F02C0, 0xCDEF, + 0x063, 0x000110E9, + 0xCDCDCDCD, 0xCDCD, + 0x063, 0x000714E9, + 0xFF0F0104, 0xDEAD, + 0xFF0F0104, 0xABCD, + 0x064, 0x0001C27C, + 0xFF0F0204, 0xCDEF, + 0x064, 0x0001C27C, + 0xFF0F0404, 0xCDEF, + 0x064, 0x0001C27C, + 0xCDCDCDCD, 0xCDCD, + 0x064, 0x0001C67C, + 0xFF0F0104, 0xDEAD, + 0xFF0F0200, 0xABCD, + 0x065, 0x00093016, + 0xFF0F02C0, 0xCDEF, + 0x065, 0x00093015, + 0xCDCDCDCD, 0xCDCD, + 0x065, 0x00091016, + 0xFF0F0200, 0xDEAD, + 0x018, 0x00000006, + 0x0EF, 0x00002000, + 0x03B, 0x0003824B, + 0x03B, 0x0003024B, + 0x03B, 0x0002844B, + 0x03B, 0x00020F4B, + 0x03B, 0x00018F4B, + 0x03B, 0x000104B2, + 0x03B, 0x00008049, + 0x03B, 0x00000148, + 0x03B, 0x0007824B, + 0x03B, 0x0007024B, + 0x03B, 0x0006824B, + 0x03B, 0x00060F4B, + 0x03B, 0x00058F4B, + 0x03B, 0x000504B2, + 0x03B, 0x00048049, + 0x03B, 0x00040148, + 0x0EF, 0x00000000, + 0x0EF, 0x00000100, + 0x034, 0x0000ADF3, + 0x034, 0x00009DEF, + 0x034, 0x00008DEC, + 0x034, 0x00007DE9, + 0x034, 0x00006CED, + 0x034, 0x00005CE9, + 0x034, 0x000044E9, + 0x034, 0x000034E6, + 0x034, 0x0000246A, + 0x034, 0x00001467, + 0x034, 0x00000068, + 0x0EF, 0x00000000, + 0x0ED, 0x00000010, + 0x044, 0x0000ADF2, + 0x044, 0x00009DEF, + 0x044, 0x00008DEC, + 0x044, 0x00007DE9, + 0x044, 0x00006CEC, + 0x044, 0x00005CE9, + 0x044, 0x000044EC, + 0x044, 0x000034E9, + 0x044, 0x0000246C, + 0x044, 0x00001469, + 0x044, 0x0000006C, + 0x0ED, 0x00000000, + 0x0ED, 0x00000001, + 0x040, 0x00038DA7, + 0x040, 0x000300C2, + 0x040, 0x000288E2, + 0x040, 0x000200B8, + 0x040, 0x000188A5, + 0x040, 0x00010FBC, + 0x040, 0x00008F71, + 0x040, 0x00000240, + 0x0ED, 0x00000000, + 0x0EF, 0x000020A2, + 0x0DF, 0x00000080, + 0x035, 0x00000120, + 0x035, 0x00008120, + 0x035, 0x00010120, + 0x036, 0x00000085, + 0x036, 0x00008085, + 0x036, 0x00010085, + 0x036, 0x00018085, + 0x0EF, 0x00000000, + 0x051, 0x00000C31, + 0x052, 0x00000622, + 0x053, 0x000FC70B, + 0x054, 0x0000017E, + 0x056, 0x00051DF3, + 0x051, 0x00000C01, + 0x052, 0x000006D6, + 0x053, 0x000FC649, + 0x070, 0x00049661, + 0x071, 0x0007843E, + 0x072, 0x00000382, + 0x074, 0x00051400, + 0x035, 0x00000160, + 0x035, 0x00008160, + 0x035, 0x00010160, + 0x036, 0x00000124, + 0x036, 0x00008124, + 0x036, 0x00010124, + 0x036, 0x00018124, + 0x0ED, 0x0000000C, + 0x045, 0x00000140, + 0x045, 0x00008140, + 0x045, 0x00010140, + 0x046, 0x00000124, + 0x046, 0x00008124, + 0x046, 0x00010124, + 0x046, 0x00018124, + 0x0DF, 0x00000088, + 0x0B3, 0x000F0E18, + 0x0B4, 0x0001214C, + 0x0B7, 0x0003000C, + 0x01C, 0x000539D2, + 0x018, 0x0001F12A, + 0x0FE, 0x00000000, + 0x0FE, 0x00000000, + 0x018, 0x0001712A, +}; + +u32 RTL8812AE_MAC_REG_ARRAY[] = { + 0x010, 0x0000000C, + 0xFF0F0180, 0xABCD, + 0x025, 0x0000000F, + 0xFF0F01C0, 0xCDEF, + 0x025, 0x0000000F, + 0xCDCDCDCD, 0xCDCD, + 0x025, 0x0000006F, + 0xFF0F0180, 0xDEAD, + 0x072, 0x00000000, + 0x428, 0x0000000A, + 0x429, 0x00000010, + 0x430, 0x00000000, + 0x431, 0x00000000, + 0x432, 0x00000000, + 0x433, 0x00000001, + 0x434, 0x00000004, + 0x435, 0x00000005, + 0x436, 0x00000007, + 0x437, 0x00000008, + 0x43C, 0x00000004, + 0x43D, 0x00000005, + 0x43E, 0x00000007, + 0x43F, 0x00000008, + 0x440, 0x0000005D, + 0x441, 0x00000001, + 0x442, 0x00000000, + 0x444, 0x00000010, + 0x445, 0x00000000, + 0x446, 0x00000000, + 0x447, 0x00000000, + 0x448, 0x00000000, + 0x449, 0x000000F0, + 0x44A, 0x0000000F, + 0x44B, 0x0000003E, + 0x44C, 0x00000010, + 0x44D, 0x00000000, + 0x44E, 0x00000000, + 0x44F, 0x00000000, + 0x450, 0x00000000, + 0x451, 0x000000F0, + 0x452, 0x0000000F, + 0x453, 0x00000000, + 0x45B, 0x00000080, + 0x460, 0x00000066, + 0x461, 0x00000066, + 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, + 0x516, 0x0000000A, + 0x525, 0x0000004F, + 0x550, 0x00000010, + 0x551, 0x00000010, + 0x559, 0x00000002, + 0x55C, 0x00000050, + 0x55D, 0x000000FF, + 0x604, 0x00000001, + 0x605, 0x00000030, + 0x607, 0x00000003, + 0x608, 0x0000000E, + 0x609, 0x0000002A, + 0x620, 0x000000FF, + 0x621, 0x000000FF, + 0x622, 0x000000FF, + 0x623, 0x000000FF, + 0x624, 0x000000FF, + 0x625, 0x000000FF, + 0x626, 0x000000FF, + 0x627, 0x000000FF, + 0x638, 0x00000050, + 0x63C, 0x0000000A, + 0x63D, 0x0000000A, + 0x63E, 0x0000000E, + 0x63F, 0x0000000E, + 0x640, 0x00000080, + 0x642, 0x00000040, + 0x643, 0x00000000, + 0x652, 0x000000C8, + 0x66E, 0x00000005, + 0x700, 0x00000021, + 0x701, 0x00000043, + 0x702, 0x00000065, + 0x703, 0x00000087, + 0x708, 0x00000021, + 0x709, 0x00000043, + 0x70A, 0x00000065, + 0x70B, 0x00000087, + 0x718, 0x00000040, +}; + +u32 RTL8821AE_MAC_REG_ARRAY[] = { + 0x428, 0x0000000A, + 0x429, 0x00000010, + 0x430, 0x00000000, + 0x431, 0x00000000, + 0x432, 0x00000000, + 0x433, 0x00000001, + 0x434, 0x00000004, + 0x435, 0x00000005, + 0x436, 0x00000007, + 0x437, 0x00000008, + 0x43C, 0x00000004, + 0x43D, 0x00000005, + 0x43E, 0x00000007, + 0x43F, 0x00000008, + 0x440, 0x0000005D, + 0x441, 0x00000001, + 0x442, 0x00000000, + 0x444, 0x00000010, + 0x445, 0x00000000, + 0x446, 0x00000000, + 0x447, 0x00000000, + 0x448, 0x00000000, + 0x449, 0x000000F0, + 0x44A, 0x0000000F, + 0x44B, 0x0000003E, + 0x44C, 0x00000010, + 0x44D, 0x00000000, + 0x44E, 0x00000000, + 0x44F, 0x00000000, + 0x450, 0x00000000, + 0x451, 0x000000F0, + 0x452, 0x0000000F, + 0x453, 0x00000000, + 0x456, 0x0000005E, + 0x460, 0x00000066, + 0x461, 0x00000066, + 0x4C8, 0x0000003F, + 0x4C9, 0x000000FF, + 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, + 0x516, 0x0000000A, + 0x525, 0x0000004F, + 0x550, 0x00000010, + 0x551, 0x00000010, + 0x559, 0x00000002, + 0x55C, 0x00000050, + 0x55D, 0x000000FF, + 0x605, 0x00000030, + 0x607, 0x00000007, + 0x608, 0x0000000E, + 0x609, 0x0000002A, + 0x620, 0x000000FF, + 0x621, 0x000000FF, + 0x622, 0x000000FF, + 0x623, 0x000000FF, + 0x624, 0x000000FF, + 0x625, 0x000000FF, + 0x626, 0x000000FF, + 0x627, 0x000000FF, + 0x638, 0x00000050, + 0x63C, 0x0000000A, + 0x63D, 0x0000000A, + 0x63E, 0x0000000E, + 0x63F, 0x0000000E, + 0x640, 0x00000040, + 0x642, 0x00000040, + 0x643, 0x00000000, + 0x652, 0x000000C8, + 0x66E, 0x00000005, + 0x700, 0x00000021, + 0x701, 0x00000043, + 0x702, 0x00000065, + 0x703, 0x00000087, + 0x708, 0x00000021, + 0x709, 0x00000043, + 0x70A, 0x00000065, + 0x70B, 0x00000087, + 0x718, 0x00000040, +}; + +u32 RTL8812AE_AGC_TAB_ARRAY[] = { + 0xFF0F07D8, 0xABCD, + 0x81C, 0xFC000001, + 0x81C, 0xFB020001, + 0x81C, 0xFA040001, + 0x81C, 0xF9060001, + 0x81C, 0xF8080001, + 0x81C, 0xF70A0001, + 0x81C, 0xF60C0001, + 0x81C, 0xF50E0001, + 0x81C, 0xF4100001, + 0x81C, 0xF3120001, + 0x81C, 0xF2140001, + 0x81C, 0xF1160001, + 0x81C, 0xF0180001, + 0x81C, 0xEF1A0001, + 0x81C, 0xEE1C0001, + 0x81C, 0xED1E0001, + 0x81C, 0xEC200001, + 0x81C, 0xEB220001, + 0x81C, 0xEA240001, + 0x81C, 0xCD260001, + 0x81C, 0xCC280001, + 0x81C, 0xCB2A0001, + 0x81C, 0xCA2C0001, + 0x81C, 0xC92E0001, + 0x81C, 0xC8300001, + 0x81C, 0xA6320001, + 0x81C, 0xA5340001, + 0x81C, 0xA4360001, + 0x81C, 0xA3380001, + 0x81C, 0xA23A0001, + 0x81C, 0x883C0001, + 0x81C, 0x873E0001, + 0x81C, 0x86400001, + 0x81C, 0x85420001, + 0x81C, 0x84440001, + 0x81C, 0x83460001, + 0x81C, 0x82480001, + 0x81C, 0x814A0001, + 0x81C, 0x484C0001, + 0x81C, 0x474E0001, + 0x81C, 0x46500001, + 0x81C, 0x45520001, + 0x81C, 0x44540001, + 0x81C, 0x43560001, + 0x81C, 0x42580001, + 0x81C, 0x415A0001, + 0x81C, 0x255C0001, + 0x81C, 0x245E0001, + 0x81C, 0x23600001, + 0x81C, 0x22620001, + 0x81C, 0x21640001, + 0x81C, 0x21660001, + 0x81C, 0x21680001, + 0x81C, 0x216A0001, + 0x81C, 0x216C0001, + 0x81C, 0x216E0001, + 0x81C, 0x21700001, + 0x81C, 0x21720001, + 0x81C, 0x21740001, + 0x81C, 0x21760001, + 0x81C, 0x21780001, + 0x81C, 0x217A0001, + 0x81C, 0x217C0001, + 0x81C, 0x217E0001, + 0xFF0F07D0, 0xCDEF, + 0x81C, 0xF9000001, + 0x81C, 0xF8020001, + 0x81C, 0xF7040001, + 0x81C, 0xF6060001, + 0x81C, 0xF5080001, + 0x81C, 0xF40A0001, + 0x81C, 0xF30C0001, + 0x81C, 0xF20E0001, + 0x81C, 0xF1100001, + 0x81C, 0xF0120001, + 0x81C, 0xEF140001, + 0x81C, 0xEE160001, + 0x81C, 0xED180001, + 0x81C, 0xEC1A0001, + 0x81C, 0xEB1C0001, + 0x81C, 0xEA1E0001, + 0x81C, 0xCD200001, + 0x81C, 0xCC220001, + 0x81C, 0xCB240001, + 0x81C, 0xCA260001, + 0x81C, 0xC9280001, + 0x81C, 0xC82A0001, + 0x81C, 0xC72C0001, + 0x81C, 0xC62E0001, + 0x81C, 0xA5300001, + 0x81C, 0xA4320001, + 0x81C, 0xA3340001, + 0x81C, 0xA2360001, + 0x81C, 0x88380001, + 0x81C, 0x873A0001, + 0x81C, 0x863C0001, + 0x81C, 0x853E0001, + 0x81C, 0x84400001, + 0x81C, 0x83420001, + 0x81C, 0x82440001, + 0x81C, 0x81460001, + 0x81C, 0x48480001, + 0x81C, 0x474A0001, + 0x81C, 0x464C0001, + 0x81C, 0x454E0001, + 0x81C, 0x44500001, + 0x81C, 0x43520001, + 0x81C, 0x42540001, + 0x81C, 0x41560001, + 0x81C, 0x25580001, + 0x81C, 0x245A0001, + 0x81C, 0x235C0001, + 0x81C, 0x225E0001, + 0x81C, 0x21600001, + 0x81C, 0x21620001, + 0x81C, 0x21640001, + 0x81C, 0x21660001, + 0x81C, 0x21680001, + 0x81C, 0x216A0001, + 0x81C, 0x236C0001, + 0x81C, 0x226E0001, + 0x81C, 0x21700001, + 0x81C, 0x21720001, + 0x81C, 0x21740001, + 0x81C, 0x21760001, + 0x81C, 0x21780001, + 0x81C, 0x217A0001, + 0x81C, 0x217C0001, + 0x81C, 0x217E0001, + 0xCDCDCDCD, 0xCDCD, + 0x81C, 0xFF000001, + 0x81C, 0xFF020001, + 0x81C, 0xFF040001, + 0x81C, 0xFF060001, + 0x81C, 0xFF080001, + 0x81C, 0xFE0A0001, + 0x81C, 0xFD0C0001, + 0x81C, 0xFC0E0001, + 0x81C, 0xFB100001, + 0x81C, 0xFA120001, + 0x81C, 0xF9140001, + 0x81C, 0xF8160001, + 0x81C, 0xF7180001, + 0x81C, 0xF61A0001, + 0x81C, 0xF51C0001, + 0x81C, 0xF41E0001, + 0x81C, 0xF3200001, + 0x81C, 0xF2220001, + 0x81C, 0xF1240001, + 0x81C, 0xF0260001, + 0x81C, 0xEF280001, + 0x81C, 0xEE2A0001, + 0x81C, 0xED2C0001, + 0x81C, 0xEC2E0001, + 0x81C, 0xEB300001, + 0x81C, 0xEA320001, + 0x81C, 0xE9340001, + 0x81C, 0xE8360001, + 0x81C, 0xE7380001, + 0x81C, 0xE63A0001, + 0x81C, 0xE53C0001, + 0x81C, 0xC73E0001, + 0x81C, 0xC6400001, + 0x81C, 0xC5420001, + 0x81C, 0xC4440001, + 0x81C, 0xC3460001, + 0x81C, 0xC2480001, + 0x81C, 0xC14A0001, + 0x81C, 0xA74C0001, + 0x81C, 0xA64E0001, + 0x81C, 0xA5500001, + 0x81C, 0xA4520001, + 0x81C, 0xA3540001, + 0x81C, 0xA2560001, + 0x81C, 0xA1580001, + 0x81C, 0x675A0001, + 0x81C, 0x665C0001, + 0x81C, 0x655E0001, + 0x81C, 0x64600001, + 0x81C, 0x63620001, + 0x81C, 0x48640001, + 0x81C, 0x47660001, + 0x81C, 0x46680001, + 0x81C, 0x456A0001, + 0x81C, 0x446C0001, + 0x81C, 0x436E0001, + 0x81C, 0x42700001, + 0x81C, 0x41720001, + 0x81C, 0x41740001, + 0x81C, 0x41760001, + 0x81C, 0x41780001, + 0x81C, 0x417A0001, + 0x81C, 0x417C0001, + 0x81C, 0x417E0001, + 0xFF0F07D8, 0xDEAD, + 0xFF0F0180, 0xABCD, + 0x81C, 0xFC800001, + 0x81C, 0xFB820001, + 0x81C, 0xFA840001, + 0x81C, 0xF9860001, + 0x81C, 0xF8880001, + 0x81C, 0xF78A0001, + 0x81C, 0xF68C0001, + 0x81C, 0xF58E0001, + 0x81C, 0xF4900001, + 0x81C, 0xF3920001, + 0x81C, 0xF2940001, + 0x81C, 0xF1960001, + 0x81C, 0xF0980001, + 0x81C, 0xEF9A0001, + 0x81C, 0xEE9C0001, + 0x81C, 0xED9E0001, + 0x81C, 0xECA00001, + 0x81C, 0xEBA20001, + 0x81C, 0xEAA40001, + 0x81C, 0xE9A60001, + 0x81C, 0xE8A80001, + 0x81C, 0xE7AA0001, + 0x81C, 0xE6AC0001, + 0x81C, 0xE5AE0001, + 0x81C, 0xE4B00001, + 0x81C, 0xE3B20001, + 0x81C, 0xA8B40001, + 0x81C, 0xA7B60001, + 0x81C, 0xA6B80001, + 0x81C, 0xA5BA0001, + 0x81C, 0xA4BC0001, + 0x81C, 0xA3BE0001, + 0x81C, 0xA2C00001, + 0x81C, 0xA1C20001, + 0x81C, 0x68C40001, + 0x81C, 0x67C60001, + 0x81C, 0x66C80001, + 0x81C, 0x65CA0001, + 0x81C, 0x64CC0001, + 0x81C, 0x47CE0001, + 0x81C, 0x46D00001, + 0x81C, 0x45D20001, + 0x81C, 0x44D40001, + 0x81C, 0x43D60001, + 0x81C, 0x42D80001, + 0x81C, 0x08DA0001, + 0x81C, 0x07DC0001, + 0x81C, 0x06DE0001, + 0x81C, 0x05E00001, + 0x81C, 0x04E20001, + 0x81C, 0x03E40001, + 0x81C, 0x02E60001, + 0x81C, 0x01E80001, + 0x81C, 0x01EA0001, + 0x81C, 0x01EC0001, + 0x81C, 0x01EE0001, + 0x81C, 0x01F00001, + 0x81C, 0x01F20001, + 0x81C, 0x01F40001, + 0x81C, 0x01F60001, + 0x81C, 0x01F80001, + 0x81C, 0x01FA0001, + 0x81C, 0x01FC0001, + 0x81C, 0x01FE0001, + 0xFF0F0280, 0xCDEF, + 0x81C, 0xFC800001, + 0x81C, 0xFB820001, + 0x81C, 0xFA840001, + 0x81C, 0xF9860001, + 0x81C, 0xF8880001, + 0x81C, 0xF78A0001, + 0x81C, 0xF68C0001, + 0x81C, 0xF58E0001, + 0x81C, 0xF4900001, + 0x81C, 0xF3920001, + 0x81C, 0xF2940001, + 0x81C, 0xF1960001, + 0x81C, 0xF0980001, + 0x81C, 0xEF9A0001, + 0x81C, 0xEE9C0001, + 0x81C, 0xED9E0001, + 0x81C, 0xECA00001, + 0x81C, 0xEBA20001, + 0x81C, 0xEAA40001, + 0x81C, 0xE9A60001, + 0x81C, 0xE8A80001, + 0x81C, 0xE7AA0001, + 0x81C, 0xE6AC0001, + 0x81C, 0xE5AE0001, + 0x81C, 0xE4B00001, + 0x81C, 0xE3B20001, + 0x81C, 0xA8B40001, + 0x81C, 0xA7B60001, + 0x81C, 0xA6B80001, + 0x81C, 0xA5BA0001, + 0x81C, 0xA4BC0001, + 0x81C, 0xA3BE0001, + 0x81C, 0xA2C00001, + 0x81C, 0xA1C20001, + 0x81C, 0x68C40001, + 0x81C, 0x67C60001, + 0x81C, 0x66C80001, + 0x81C, 0x65CA0001, + 0x81C, 0x64CC0001, + 0x81C, 0x47CE0001, + 0x81C, 0x46D00001, + 0x81C, 0x45D20001, + 0x81C, 0x44D40001, + 0x81C, 0x43D60001, + 0x81C, 0x42D80001, + 0x81C, 0x08DA0001, + 0x81C, 0x07DC0001, + 0x81C, 0x06DE0001, + 0x81C, 0x05E00001, + 0x81C, 0x04E20001, + 0x81C, 0x03E40001, + 0x81C, 0x02E60001, + 0x81C, 0x01E80001, + 0x81C, 0x01EA0001, + 0x81C, 0x01EC0001, + 0x81C, 0x01EE0001, + 0x81C, 0x01F00001, + 0x81C, 0x01F20001, + 0x81C, 0x01F40001, + 0x81C, 0x01F60001, + 0x81C, 0x01F80001, + 0x81C, 0x01FA0001, + 0x81C, 0x01FC0001, + 0x81C, 0x01FE0001, + 0xFF0F01C0, 0xCDEF, + 0x81C, 0xFC800001, + 0x81C, 0xFB820001, + 0x81C, 0xFA840001, + 0x81C, 0xF9860001, + 0x81C, 0xF8880001, + 0x81C, 0xF78A0001, + 0x81C, 0xF68C0001, + 0x81C, 0xF58E0001, + 0x81C, 0xF4900001, + 0x81C, 0xF3920001, + 0x81C, 0xF2940001, + 0x81C, 0xF1960001, + 0x81C, 0xF0980001, + 0x81C, 0xEF9A0001, + 0x81C, 0xEE9C0001, + 0x81C, 0xED9E0001, + 0x81C, 0xECA00001, + 0x81C, 0xEBA20001, + 0x81C, 0xEAA40001, + 0x81C, 0xE9A60001, + 0x81C, 0xE8A80001, + 0x81C, 0xE7AA0001, + 0x81C, 0xE6AC0001, + 0x81C, 0xE5AE0001, + 0x81C, 0xE4B00001, + 0x81C, 0xE3B20001, + 0x81C, 0xA8B40001, + 0x81C, 0xA7B60001, + 0x81C, 0xA6B80001, + 0x81C, 0xA5BA0001, + 0x81C, 0xA4BC0001, + 0x81C, 0xA3BE0001, + 0x81C, 0xA2C00001, + 0x81C, 0xA1C20001, + 0x81C, 0x68C40001, + 0x81C, 0x67C60001, + 0x81C, 0x66C80001, + 0x81C, 0x65CA0001, + 0x81C, 0x64CC0001, + 0x81C, 0x47CE0001, + 0x81C, 0x46D00001, + 0x81C, 0x45D20001, + 0x81C, 0x44D40001, + 0x81C, 0x43D60001, + 0x81C, 0x42D80001, + 0x81C, 0x08DA0001, + 0x81C, 0x07DC0001, + 0x81C, 0x06DE0001, + 0x81C, 0x05E00001, + 0x81C, 0x04E20001, + 0x81C, 0x03E40001, + 0x81C, 0x02E60001, + 0x81C, 0x01E80001, + 0x81C, 0x01EA0001, + 0x81C, 0x01EC0001, + 0x81C, 0x01EE0001, + 0x81C, 0x01F00001, + 0x81C, 0x01F20001, + 0x81C, 0x01F40001, + 0x81C, 0x01F60001, + 0x81C, 0x01F80001, + 0x81C, 0x01FA0001, + 0x81C, 0x01FC0001, + 0x81C, 0x01FE0001, + 0xFF0F02C0, 0xCDEF, + 0x81C, 0xFC800001, + 0x81C, 0xFB820001, + 0x81C, 0xFA840001, + 0x81C, 0xF9860001, + 0x81C, 0xF8880001, + 0x81C, 0xF78A0001, + 0x81C, 0xF68C0001, + 0x81C, 0xF58E0001, + 0x81C, 0xF4900001, + 0x81C, 0xF3920001, + 0x81C, 0xF2940001, + 0x81C, 0xF1960001, + 0x81C, 0xF0980001, + 0x81C, 0xEF9A0001, + 0x81C, 0xEE9C0001, + 0x81C, 0xED9E0001, + 0x81C, 0xECA00001, + 0x81C, 0xEBA20001, + 0x81C, 0xEAA40001, + 0x81C, 0xE9A60001, + 0x81C, 0xE8A80001, + 0x81C, 0xE7AA0001, + 0x81C, 0xE6AC0001, + 0x81C, 0xE5AE0001, + 0x81C, 0xE4B00001, + 0x81C, 0xE3B20001, + 0x81C, 0xA8B40001, + 0x81C, 0xA7B60001, + 0x81C, 0xA6B80001, + 0x81C, 0xA5BA0001, + 0x81C, 0xA4BC0001, + 0x81C, 0xA3BE0001, + 0x81C, 0xA2C00001, + 0x81C, 0xA1C20001, + 0x81C, 0x68C40001, + 0x81C, 0x67C60001, + 0x81C, 0x66C80001, + 0x81C, 0x65CA0001, + 0x81C, 0x64CC0001, + 0x81C, 0x47CE0001, + 0x81C, 0x46D00001, + 0x81C, 0x45D20001, + 0x81C, 0x44D40001, + 0x81C, 0x43D60001, + 0x81C, 0x42D80001, + 0x81C, 0x08DA0001, + 0x81C, 0x07DC0001, + 0x81C, 0x06DE0001, + 0x81C, 0x05E00001, + 0x81C, 0x04E20001, + 0x81C, 0x03E40001, + 0x81C, 0x02E60001, + 0x81C, 0x01E80001, + 0x81C, 0x01EA0001, + 0x81C, 0x01EC0001, + 0x81C, 0x01EE0001, + 0x81C, 0x01F00001, + 0x81C, 0x01F20001, + 0x81C, 0x01F40001, + 0x81C, 0x01F60001, + 0x81C, 0x01F80001, + 0x81C, 0x01FA0001, + 0x81C, 0x01FC0001, + 0x81C, 0x01FE0001, + 0xFF0F07D8, 0xCDEF, + 0x81C, 0xFC800001, + 0x81C, 0xFB820001, + 0x81C, 0xFA840001, + 0x81C, 0xF9860001, + 0x81C, 0xF8880001, + 0x81C, 0xF78A0001, + 0x81C, 0xF68C0001, + 0x81C, 0xF58E0001, + 0x81C, 0xF4900001, + 0x81C, 0xF3920001, + 0x81C, 0xF2940001, + 0x81C, 0xF1960001, + 0x81C, 0xF0980001, + 0x81C, 0xEF9A0001, + 0x81C, 0xEE9C0001, + 0x81C, 0xED9E0001, + 0x81C, 0xECA00001, + 0x81C, 0xEBA20001, + 0x81C, 0xEAA40001, + 0x81C, 0xE9A60001, + 0x81C, 0xE8A80001, + 0x81C, 0xE7AA0001, + 0x81C, 0xE6AC0001, + 0x81C, 0xE5AE0001, + 0x81C, 0xE4B00001, + 0x81C, 0xE3B20001, + 0x81C, 0xA8B40001, + 0x81C, 0xA7B60001, + 0x81C, 0xA6B80001, + 0x81C, 0xA5BA0001, + 0x81C, 0xA4BC0001, + 0x81C, 0xA3BE0001, + 0x81C, 0xA2C00001, + 0x81C, 0xA1C20001, + 0x81C, 0x68C40001, + 0x81C, 0x67C60001, + 0x81C, 0x66C80001, + 0x81C, 0x65CA0001, + 0x81C, 0x64CC0001, + 0x81C, 0x47CE0001, + 0x81C, 0x46D00001, + 0x81C, 0x45D20001, + 0x81C, 0x44D40001, + 0x81C, 0x43D60001, + 0x81C, 0x42D80001, + 0x81C, 0x08DA0001, + 0x81C, 0x07DC0001, + 0x81C, 0x06DE0001, + 0x81C, 0x05E00001, + 0x81C, 0x04E20001, + 0x81C, 0x03E40001, + 0x81C, 0x02E60001, + 0x81C, 0x01E80001, + 0x81C, 0x01EA0001, + 0x81C, 0x01EC0001, + 0x81C, 0x01EE0001, + 0x81C, 0x01F00001, + 0x81C, 0x01F20001, + 0x81C, 0x01F40001, + 0x81C, 0x01F60001, + 0x81C, 0x01F80001, + 0x81C, 0x01FA0001, + 0x81C, 0x01FC0001, + 0x81C, 0x01FE0001, + 0xFF0F07D0, 0xCDEF, + 0x81C, 0xFC800001, + 0x81C, 0xFB820001, + 0x81C, 0xFA840001, + 0x81C, 0xF9860001, + 0x81C, 0xF8880001, + 0x81C, 0xF78A0001, + 0x81C, 0xF68C0001, + 0x81C, 0xF58E0001, + 0x81C, 0xF4900001, + 0x81C, 0xF3920001, + 0x81C, 0xF2940001, + 0x81C, 0xF1960001, + 0x81C, 0xF0980001, + 0x81C, 0xEF9A0001, + 0x81C, 0xEE9C0001, + 0x81C, 0xED9E0001, + 0x81C, 0xECA00001, + 0x81C, 0xEBA20001, + 0x81C, 0xEAA40001, + 0x81C, 0xE9A60001, + 0x81C, 0xE8A80001, + 0x81C, 0xE7AA0001, + 0x81C, 0xE6AC0001, + 0x81C, 0xE5AE0001, + 0x81C, 0xE4B00001, + 0x81C, 0xE3B20001, + 0x81C, 0xA8B40001, + 0x81C, 0xA7B60001, + 0x81C, 0xA6B80001, + 0x81C, 0xA5BA0001, + 0x81C, 0xA4BC0001, + 0x81C, 0xA3BE0001, + 0x81C, 0xA2C00001, + 0x81C, 0xA1C20001, + 0x81C, 0x68C40001, + 0x81C, 0x67C60001, + 0x81C, 0x66C80001, + 0x81C, 0x65CA0001, + 0x81C, 0x64CC0001, + 0x81C, 0x47CE0001, + 0x81C, 0x46D00001, + 0x81C, 0x45D20001, + 0x81C, 0x44D40001, + 0x81C, 0x43D60001, + 0x81C, 0x42D80001, + 0x81C, 0x08DA0001, + 0x81C, 0x07DC0001, + 0x81C, 0x06DE0001, + 0x81C, 0x05E00001, + 0x81C, 0x04E20001, + 0x81C, 0x03E40001, + 0x81C, 0x02E60001, + 0x81C, 0x01E80001, + 0x81C, 0x01EA0001, + 0x81C, 0x01EC0001, + 0x81C, 0x01EE0001, + 0x81C, 0x01F00001, + 0x81C, 0x01F20001, + 0x81C, 0x01F40001, + 0x81C, 0x01F60001, + 0x81C, 0x01F80001, + 0x81C, 0x01FA0001, + 0x81C, 0x01FC0001, + 0x81C, 0x01FE0001, + 0xCDCDCDCD, 0xCDCD, + 0x81C, 0xFF800001, + 0x81C, 0xFF820001, + 0x81C, 0xFF840001, + 0x81C, 0xFE860001, + 0x81C, 0xFD880001, + 0x81C, 0xFC8A0001, + 0x81C, 0xFB8C0001, + 0x81C, 0xFA8E0001, + 0x81C, 0xF9900001, + 0x81C, 0xF8920001, + 0x81C, 0xF7940001, + 0x81C, 0xF6960001, + 0x81C, 0xF5980001, + 0x81C, 0xF49A0001, + 0x81C, 0xF39C0001, + 0x81C, 0xF29E0001, + 0x81C, 0xF1A00001, + 0x81C, 0xF0A20001, + 0x81C, 0xEFA40001, + 0x81C, 0xEEA60001, + 0x81C, 0xEDA80001, + 0x81C, 0xECAA0001, + 0x81C, 0xEBAC0001, + 0x81C, 0xEAAE0001, + 0x81C, 0xE9B00001, + 0x81C, 0xE8B20001, + 0x81C, 0xE7B40001, + 0x81C, 0xE6B60001, + 0x81C, 0xE5B80001, + 0x81C, 0xE4BA0001, + 0x81C, 0xE3BC0001, + 0x81C, 0xA8BE0001, + 0x81C, 0xA7C00001, + 0x81C, 0xA6C20001, + 0x81C, 0xA5C40001, + 0x81C, 0xA4C60001, + 0x81C, 0xA3C80001, + 0x81C, 0xA2CA0001, + 0x81C, 0xA1CC0001, + 0x81C, 0x68CE0001, + 0x81C, 0x67D00001, + 0x81C, 0x66D20001, + 0x81C, 0x65D40001, + 0x81C, 0x64D60001, + 0x81C, 0x47D80001, + 0x81C, 0x46DA0001, + 0x81C, 0x45DC0001, + 0x81C, 0x44DE0001, + 0x81C, 0x43E00001, + 0x81C, 0x42E20001, + 0x81C, 0x08E40001, + 0x81C, 0x07E60001, + 0x81C, 0x06E80001, + 0x81C, 0x05EA0001, + 0x81C, 0x04EC0001, + 0x81C, 0x03EE0001, + 0x81C, 0x02F00001, + 0x81C, 0x01F20001, + 0x81C, 0x01F40001, + 0x81C, 0x01F60001, + 0x81C, 0x01F80001, + 0x81C, 0x01FA0001, + 0x81C, 0x01FC0001, + 0x81C, 0x01FE0001, + 0xFF0F0180, 0xDEAD, + 0xC50, 0x00000022, + 0xC50, 0x00000020, + 0xE50, 0x00000022, + 0xE50, 0x00000020, +}; + +u32 RTL8821AE_AGC_TAB_ARRAY[] = { + 0x81C, 0xBF000001, + 0x81C, 0xBF020001, + 0x81C, 0xBF040001, + 0x81C, 0xBF060001, + 0x81C, 0xBE080001, + 0x81C, 0xBD0A0001, + 0x81C, 0xBC0C0001, + 0x81C, 0xBA0E0001, + 0x81C, 0xB9100001, + 0x81C, 0xB8120001, + 0x81C, 0xB7140001, + 0x81C, 0xB6160001, + 0x81C, 0xB5180001, + 0x81C, 0xB41A0001, + 0x81C, 0xB31C0001, + 0x81C, 0xB21E0001, + 0x81C, 0xB1200001, + 0x81C, 0xB0220001, + 0x81C, 0xAF240001, + 0x81C, 0xAE260001, + 0x81C, 0xAD280001, + 0x81C, 0xAC2A0001, + 0x81C, 0xAB2C0001, + 0x81C, 0xAA2E0001, + 0x81C, 0xA9300001, + 0x81C, 0xA8320001, + 0x81C, 0xA7340001, + 0x81C, 0xA6360001, + 0x81C, 0xA5380001, + 0x81C, 0xA43A0001, + 0x81C, 0xA33C0001, + 0x81C, 0x673E0001, + 0x81C, 0x66400001, + 0x81C, 0x65420001, + 0x81C, 0x64440001, + 0x81C, 0x63460001, + 0x81C, 0x62480001, + 0x81C, 0x614A0001, + 0x81C, 0x474C0001, + 0x81C, 0x464E0001, + 0x81C, 0x45500001, + 0x81C, 0x44520001, + 0x81C, 0x43540001, + 0x81C, 0x42560001, + 0x81C, 0x41580001, + 0x81C, 0x285A0001, + 0x81C, 0x275C0001, + 0x81C, 0x265E0001, + 0x81C, 0x25600001, + 0x81C, 0x24620001, + 0x81C, 0x0A640001, + 0x81C, 0x09660001, + 0x81C, 0x08680001, + 0x81C, 0x076A0001, + 0x81C, 0x066C0001, + 0x81C, 0x056E0001, + 0x81C, 0x04700001, + 0x81C, 0x03720001, + 0x81C, 0x02740001, + 0x81C, 0x01760001, + 0x81C, 0x01780001, + 0x81C, 0x017A0001, + 0x81C, 0x017C0001, + 0x81C, 0x017E0001, + 0xFF0F02C0, 0xABCD, + 0x81C, 0xFB000101, + 0x81C, 0xFA020101, + 0x81C, 0xF9040101, + 0x81C, 0xF8060101, + 0x81C, 0xF7080101, + 0x81C, 0xF60A0101, + 0x81C, 0xF50C0101, + 0x81C, 0xF40E0101, + 0x81C, 0xF3100101, + 0x81C, 0xF2120101, + 0x81C, 0xF1140101, + 0x81C, 0xF0160101, + 0x81C, 0xEF180101, + 0x81C, 0xEE1A0101, + 0x81C, 0xED1C0101, + 0x81C, 0xEC1E0101, + 0x81C, 0xEB200101, + 0x81C, 0xEA220101, + 0x81C, 0xE9240101, + 0x81C, 0xE8260101, + 0x81C, 0xE7280101, + 0x81C, 0xE62A0101, + 0x81C, 0xE52C0101, + 0x81C, 0xE42E0101, + 0x81C, 0xE3300101, + 0x81C, 0xA5320101, + 0x81C, 0xA4340101, + 0x81C, 0xA3360101, + 0x81C, 0x87380101, + 0x81C, 0x863A0101, + 0x81C, 0x853C0101, + 0x81C, 0x843E0101, + 0x81C, 0x69400101, + 0x81C, 0x68420101, + 0x81C, 0x67440101, + 0x81C, 0x66460101, + 0x81C, 0x49480101, + 0x81C, 0x484A0101, + 0x81C, 0x474C0101, + 0x81C, 0x2A4E0101, + 0x81C, 0x29500101, + 0x81C, 0x28520101, + 0x81C, 0x27540101, + 0x81C, 0x26560101, + 0x81C, 0x25580101, + 0x81C, 0x245A0101, + 0x81C, 0x235C0101, + 0x81C, 0x055E0101, + 0x81C, 0x04600101, + 0x81C, 0x03620101, + 0x81C, 0x02640101, + 0x81C, 0x01660101, + 0x81C, 0x01680101, + 0x81C, 0x016A0101, + 0x81C, 0x016C0101, + 0x81C, 0x016E0101, + 0x81C, 0x01700101, + 0x81C, 0x01720101, + 0xCDCDCDCD, 0xCDCD, + 0x81C, 0xFF000101, + 0x81C, 0xFF020101, + 0x81C, 0xFE040101, + 0x81C, 0xFD060101, + 0x81C, 0xFC080101, + 0x81C, 0xFD0A0101, + 0x81C, 0xFC0C0101, + 0x81C, 0xFB0E0101, + 0x81C, 0xFA100101, + 0x81C, 0xF9120101, + 0x81C, 0xF8140101, + 0x81C, 0xF7160101, + 0x81C, 0xF6180101, + 0x81C, 0xF51A0101, + 0x81C, 0xF41C0101, + 0x81C, 0xF31E0101, + 0x81C, 0xF2200101, + 0x81C, 0xF1220101, + 0x81C, 0xF0240101, + 0x81C, 0xEF260101, + 0x81C, 0xEE280101, + 0x81C, 0xED2A0101, + 0x81C, 0xEC2C0101, + 0x81C, 0xEB2E0101, + 0x81C, 0xEA300101, + 0x81C, 0xE9320101, + 0x81C, 0xE8340101, + 0x81C, 0xE7360101, + 0x81C, 0xE6380101, + 0x81C, 0xE53A0101, + 0x81C, 0xE43C0101, + 0x81C, 0xE33E0101, + 0x81C, 0xA5400101, + 0x81C, 0xA4420101, + 0x81C, 0xA3440101, + 0x81C, 0x87460101, + 0x81C, 0x86480101, + 0x81C, 0x854A0101, + 0x81C, 0x844C0101, + 0x81C, 0x694E0101, + 0x81C, 0x68500101, + 0x81C, 0x67520101, + 0x81C, 0x66540101, + 0x81C, 0x49560101, + 0x81C, 0x48580101, + 0x81C, 0x475A0101, + 0x81C, 0x2A5C0101, + 0x81C, 0x295E0101, + 0x81C, 0x28600101, + 0x81C, 0x27620101, + 0x81C, 0x26640101, + 0x81C, 0x25660101, + 0x81C, 0x24680101, + 0x81C, 0x236A0101, + 0x81C, 0x056C0101, + 0x81C, 0x046E0101, + 0x81C, 0x03700101, + 0x81C, 0x02720101, + 0xFF0F02C0, 0xDEAD, + 0x81C, 0x01740101, + 0x81C, 0x01760101, + 0x81C, 0x01780101, + 0x81C, 0x017A0101, + 0x81C, 0x017C0101, + 0x81C, 0x017E0101, + 0xC50, 0x00000022, + 0xC50, 0x00000020, + +}; --- linux-3.13.0.orig/drivers/staging/rtl8821ae/rtl8821ae/table.h +++ linux-3.13.0/drivers/staging/rtl8821ae/rtl8821ae/table.h @@ -0,0 +1,62 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Created on 2010/ 5/18, 1:41 + * + * Larry Finger + * + *****************************************************************************/ + +#ifndef __RTL8821AE_TABLE__H_ +#define __RTL8821AE_TABLE__H_ + +#include +#define RTL8821AEPHY_REG_1TARRAYLEN 344 +extern u32 RTL8821AE_PHY_REG_ARRAY[]; +#define RTL8812AEPHY_REG_1TARRAYLEN 490 +extern u32 RTL8812AE_PHY_REG_ARRAY[]; +#define RTL8821AEPHY_REG_ARRAY_PGLEN 90 +extern u32 RTL8821AE_PHY_REG_ARRAY_PG[]; +#define RTL8812AEPHY_REG_ARRAY_PGLEN 276 +extern u32 RTL8812AE_PHY_REG_ARRAY_PG[]; +//#define RTL8723BE_RADIOA_1TARRAYLEN 206 +//extern u8 *RTL8821AE_TXPWR_LMT_ARRAY[]; +#define RTL8812AE_RADIOA_1TARRAYLEN 1264 +extern u32 RTL8812AE_RADIOA_ARRAY[]; +#define RTL8812AE_RADIOB_1TARRAYLEN 1240 +extern u32 RTL8812AE_RADIOB_ARRAY[]; +#define RTL8821AE_RADIOA_1TARRAYLEN 1176 +extern u32 RTL8821AE_RADIOA_ARRAY[]; +#define RTL8821AEMAC_1T_ARRAYLEN 194 +extern u32 RTL8821AE_MAC_REG_ARRAY[]; +#define RTL8812AEMAC_1T_ARRAYLEN 214 +extern u32 RTL8812AE_MAC_REG_ARRAY[]; +#define RTL8821AEAGCTAB_1TARRAYLEN 382 +extern u32 RTL8821AE_AGC_TAB_ARRAY[]; +#define RTL8812AEAGCTAB_1TARRAYLEN 1312 +extern u32 RTL8812AE_AGC_TAB_ARRAY[]; + + +#endif --- linux-3.13.0.orig/drivers/staging/rtl8821ae/rtl8821ae/trx.c +++ linux-3.13.0/drivers/staging/rtl8821ae/rtl8821ae/trx.c @@ -0,0 +1,1050 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#include "../wifi.h" +#include "../pci.h" +#include "../base.h" +#include "../stats.h" +#include "reg.h" +#include "def.h" +#include "phy.h" +#include "trx.h" +#include "led.h" +#include "dm.h" +#include "phy.h" +u8 _rtl8821ae_map_hwqueue_to_fwqueue(struct sk_buff *skb, u8 hw_queue) +{ + u16 fc = rtl_get_fc(skb); + + if (unlikely(ieee80211_is_beacon(fc))) + return QSLT_BEACON; + if (ieee80211_is_mgmt(fc) || ieee80211_is_ctl(fc)) + return QSLT_MGNT; + + return skb->priority; +} + +/* mac80211's rate_idx is like this: + * + * 2.4G band:rx_status->band == IEEE80211_BAND_2GHZ + * + * B/G rate: + * (rx_status->flag & RX_FLAG_HT) = 0, + * DESC_RATE1M-->DESC_RATE54M ==> idx is 0-->11, + * + * N rate: + * (rx_status->flag & RX_FLAG_HT) = 1, + * DESC_RATEMCS0-->DESC_RATEMCS15 ==> idx is 0-->15 + * + * 5G band:rx_status->band == IEEE80211_BAND_5GHZ + * A rate: + * (rx_status->flag & RX_FLAG_HT) = 0, + * DESC_RATE6M-->DESC_RATE54M ==> idx is 0-->7, + * + * N rate: + * (rx_status->flag & RX_FLAG_HT) = 1, + * DESC_RATEMCS0-->DESC_RATEMCS15 ==> idx is 0-->15 + */ +static int _rtl8821ae_rate_mapping(struct ieee80211_hw *hw, + bool isht, u8 desc_rate) +{ + int rate_idx; + + if (false == isht) { +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)) + if (IEEE80211_BAND_2GHZ == hw->conf.chandef.chan->band) { +#else + if (IEEE80211_BAND_2GHZ == hw->conf.channel->band) { +#endif + switch (desc_rate) { + case DESC_RATE1M: + rate_idx = 0; + break; + case DESC_RATE2M: + rate_idx = 1; + break; + case DESC_RATE5_5M: + rate_idx = 2; + break; + case DESC_RATE11M: + rate_idx = 3; + break; + case DESC_RATE6M: + rate_idx = 4; + break; + case DESC_RATE9M: + rate_idx = 5; + break; + case DESC_RATE12M: + rate_idx = 6; + break; + case DESC_RATE18M: + rate_idx = 7; + break; + case DESC_RATE24M: + rate_idx = 8; + break; + case DESC_RATE36M: + rate_idx = 9; + break; + case DESC_RATE48M: + rate_idx = 10; + break; + case DESC_RATE54M: + rate_idx = 11; + break; + default: + rate_idx = 0; + break; + } + } else { + switch (desc_rate) { + case DESC_RATE6M: + rate_idx = 0; + break; + case DESC_RATE9M: + rate_idx = 1; + break; + case DESC_RATE12M: + rate_idx = 2; + break; + case DESC_RATE18M: + rate_idx = 3; + break; + case DESC_RATE24M: + rate_idx = 4; + break; + case DESC_RATE36M: + rate_idx = 5; + break; + case DESC_RATE48M: + rate_idx = 6; + break; + case DESC_RATE54M: + rate_idx = 7; + break; + default: + rate_idx = 0; + break; + } + } + } else { + switch(desc_rate) { + case DESC_RATEMCS0: + rate_idx = 0; + break; + case DESC_RATEMCS1: + rate_idx = 1; + break; + case DESC_RATEMCS2: + rate_idx = 2; + break; + case DESC_RATEMCS3: + rate_idx = 3; + break; + case DESC_RATEMCS4: + rate_idx = 4; + break; + case DESC_RATEMCS5: + rate_idx = 5; + break; + case DESC_RATEMCS6: + rate_idx = 6; + break; + case DESC_RATEMCS7: + rate_idx = 7; + break; + case DESC_RATEMCS8: + rate_idx = 8; + break; + case DESC_RATEMCS9: + rate_idx = 9; + break; + case DESC_RATEMCS10: + rate_idx = 10; + break; + case DESC_RATEMCS11: + rate_idx = 11; + break; + case DESC_RATEMCS12: + rate_idx = 12; + break; + case DESC_RATEMCS13: + rate_idx = 13; + break; + case DESC_RATEMCS14: + rate_idx = 14; + break; + case DESC_RATEMCS15: + rate_idx = 15; + break; + default: + rate_idx = 0; + break; + } + } + return rate_idx; +} + +static void _rtl8821ae_query_rxphystatus(struct ieee80211_hw *hw, + struct rtl_stats *pstatus, u8 *pdesc, + struct rx_fwinfo_8821ae *p_drvinfo, bool bpacket_match_bssid, + bool bpacket_toself, bool b_packet_beacon) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_ps_ctl *ppsc = rtl_psc(rtlpriv); + struct phy_sts_cck_8821ae_t *cck_buf; + struct phy_status_rpt *p_phystRpt = (struct phy_status_rpt *)p_drvinfo; + struct rtl_dm *rtldm = rtl_dm(rtl_priv(hw)); + char rx_pwr_all = 0, rx_pwr[4]; + u8 rf_rx_num = 0, evm, pwdb_all; + u8 i, max_spatial_stream; + u32 rssi, total_rssi = 0; + bool b_is_cck = pstatus->b_is_cck; + u8 lan_idx,vga_idx; + + /* Record it for next packet processing */ + pstatus->b_packet_matchbssid = bpacket_match_bssid; + pstatus->b_packet_toself = bpacket_toself; + pstatus->b_packet_beacon = b_packet_beacon; + pstatus->rx_mimo_signalquality[0] = -1; + pstatus->rx_mimo_signalquality[1] = -1; + + if (b_is_cck) { + u8 cck_highpwr; + u8 cck_agc_rpt; + /* CCK Driver info Structure is not the same as OFDM packet. */ + cck_buf = (struct phy_sts_cck_8821ae_t *)p_drvinfo; + cck_agc_rpt = cck_buf->cck_agc_rpt; + + /* (1)Hardware does not provide RSSI for CCK */ + /* (2)PWDB, Average PWDB cacluated by + * hardware (for rate adaptive) */ + if (ppsc->rfpwr_state == ERFON) + cck_highpwr = (u8) rtl_get_bbreg(hw, RFPGA0_XA_HSSIPARAMETER2, + BIT(9)); + else + cck_highpwr = false; + + lan_idx = ((cck_agc_rpt & 0xE0) >> 5); + vga_idx = (cck_agc_rpt & 0x1f); + switch (lan_idx) { + case 7: + if(vga_idx <= 27) + rx_pwr_all = -100 + 2*(27-vga_idx); /*VGA_idx = 27~2*/ + else + rx_pwr_all = -100; + break; + case 6: + rx_pwr_all = -48 + 2*(2-vga_idx); /*VGA_idx = 2~0*/ + break; + case 5: + rx_pwr_all = -42 + 2*(7-vga_idx); /*VGA_idx = 7~5*/ + break; + case 4: + rx_pwr_all = -36 + 2*(7-vga_idx); /*VGA_idx = 7~4*/ + break; + case 3: + rx_pwr_all = -24 + 2*(7-vga_idx); /*VGA_idx = 7~0*/ + break; + case 2: + if(cck_highpwr) + rx_pwr_all = -12 + 2*(5-vga_idx); /*VGA_idx = 5~0*/ + else + rx_pwr_all = -6+ 2*(5-vga_idx); + break; + case 1: + rx_pwr_all = 8-2*vga_idx; + break; + case 0: + rx_pwr_all = 14-2*vga_idx; + break; + default: + break; + } + rx_pwr_all += 6; + pwdb_all = rtl_query_rxpwrpercentage(rx_pwr_all); + /* 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; + if (cck_highpwr == false){ + if (pwdb_all >= 80) + pwdb_all =((pwdb_all-80)<<1)+((pwdb_all-80)>>1)+80; + else if((pwdb_all <= 78) && (pwdb_all >= 20)) + pwdb_all += 3; + if(pwdb_all>100) + pwdb_all = 100; + } + + pstatus->rx_pwdb_all = pwdb_all; + pstatus->recvsignalpower = rx_pwr_all; + + /* (3) Get Signal Quality (EVM) */ + if (bpacket_match_bssid) { + u8 sq; + + if (pstatus->rx_pwdb_all > 40) + sq = 100; + else { + sq = cck_buf->sq_rpt; + if (sq > 64) + sq = 0; + else if (sq < 20) + sq = 100; + else + sq = ((64 - sq) * 100) / 44; + } + + pstatus->signalquality = sq; + pstatus->rx_mimo_signalquality[0] = sq; + pstatus->rx_mimo_signalquality[1] = -1; + } + } else { + rtlpriv->dm.brfpath_rxenable[0] = + rtlpriv->dm.brfpath_rxenable[1] = true; + + /* (1)Get RSSI for HT rate */ + for (i = RF90_PATH_A; i < RF6052_MAX_PATH; i++) { + + /* we will judge RF RX path now. */ + if (rtlpriv->dm.brfpath_rxenable[i]) + rf_rx_num++; + + rx_pwr[i] = ((p_drvinfo->gain_trsw[i] & 0x3f) * 2) - 110; + + /* Translate DBM to percentage. */ + rssi = rtl_query_rxpwrpercentage(rx_pwr[i]); + total_rssi += rssi; + + /* Get Rx snr value in DB */ + rtlpriv->stats.rx_snr_db[i] = (long)(p_drvinfo->rxsnr[i] / 2); + + /* Record Signal Strength for next packet */ + if (bpacket_match_bssid) + pstatus->rx_mimo_signalstrength[i] = (u8) rssi; + } + + /* (2)PWDB, Average PWDB cacluated by + * hardware (for rate adaptive) */ + rx_pwr_all = ((p_drvinfo->pwdb_all >> 1) & 0x7f) - 110; + + pwdb_all = rtl_query_rxpwrpercentage(rx_pwr_all); + pstatus->rx_pwdb_all = pwdb_all; + pstatus->rxpower = rx_pwr_all; + pstatus->recvsignalpower = rx_pwr_all; + + /* (3)EVM of HT rate */ + if (pstatus->b_is_ht && pstatus->rate >= DESC_RATEMCS8 && + pstatus->rate <= DESC_RATEMCS15) + max_spatial_stream = 2; + else + max_spatial_stream = 1; + + for (i = 0; i < max_spatial_stream; i++) { + evm = rtl_evm_db_to_percentage(p_drvinfo->rxevm[i]); + + if (bpacket_match_bssid) { + /* Fill value in RFD, Get the first + * spatial stream only */ + if (i == 0) + pstatus->signalquality = (u8) (evm & 0xff); + pstatus->rx_mimo_signalquality[i] = (u8) (evm & 0xff); + } + } + } + + /* UI BSS List signal strength(in percentage), + * make it good looking, from 0~100. */ + if (b_is_cck) + pstatus->signalstrength = (u8)(rtl_signal_scale_mapping(hw, + pwdb_all)); + else if (rf_rx_num != 0) + pstatus->signalstrength = (u8)(rtl_signal_scale_mapping(hw, + total_rssi /= rf_rx_num)); + /*HW antenna diversity*/ + rtldm->fat_table.antsel_rx_keep_0 = p_phystRpt->ant_sel; + rtldm->fat_table.antsel_rx_keep_1 = p_phystRpt->ant_sel_b; + rtldm->fat_table.antsel_rx_keep_2 = p_phystRpt->antsel_rx_keep_2; + +} +#if 0 +static void _rtl8821ae_smart_antenna(struct ieee80211_hw *hw, + struct rtl_stats *pstatus) +{ + struct rtl_dm *rtldm= rtl_dm(rtl_priv(hw)); + struct rtl_efuse *rtlefuse =rtl_efuse(rtl_priv(hw)); + u8 antsel_tr_mux; + struct fast_ant_trainning *pfat_table = &(rtldm->fat_table); + + if (rtlefuse->antenna_div_type == CG_TRX_SMART_ANTDIV) { + if (pfat_table->fat_state == FAT_TRAINING_STATE) { + if (pstatus->b_packet_toself) { + antsel_tr_mux = (pfat_table->antsel_rx_keep_2 << 2) | + (pfat_table->antsel_rx_keep_1 << 1) | pfat_table->antsel_rx_keep_0; + pfat_table->ant_sum_rssi[antsel_tr_mux] += pstatus->rx_pwdb_all; + pfat_table->ant_rssi_cnt[antsel_tr_mux]++; + } + } + } else if ((rtlefuse->antenna_div_type == CG_TRX_HW_ANTDIV) || + (rtlefuse->antenna_div_type == CGCS_RX_HW_ANTDIV)) { + if (pstatus->b_packet_toself || pstatus->b_packet_matchbssid) { + antsel_tr_mux = (pfat_table->antsel_rx_keep_2 << 2) | + (pfat_table->antsel_rx_keep_1 << 1) | pfat_table->antsel_rx_keep_0; + rtl8821ae_dm_ant_sel_statistics(hw, antsel_tr_mux, 0, pstatus->rx_pwdb_all); + } + + } +} +#endif +static void _rtl8821ae_translate_rx_signal_stuff(struct ieee80211_hw *hw, + struct sk_buff *skb, struct rtl_stats *pstatus, + u8 *pdesc, struct rx_fwinfo_8821ae *p_drvinfo) +{ + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); + struct ieee80211_hdr *hdr; + u8 *tmp_buf; + u8 *praddr; + u8 *psaddr; + u16 fc, type; + bool b_packet_matchbssid, b_packet_toself, b_packet_beacon; + + tmp_buf = skb->data + pstatus->rx_drvinfo_size + pstatus->rx_bufshift; + + hdr = (struct ieee80211_hdr *)tmp_buf; + fc = le16_to_cpu(hdr->frame_control); + type = WLAN_FC_GET_TYPE(fc); + praddr = hdr->addr1; + psaddr = ieee80211_get_SA(hdr); + memcpy(pstatus->psaddr, psaddr, ETH_ALEN); + + b_packet_matchbssid = ((IEEE80211_FTYPE_CTL != type) && + (!ether_addr_equal(mac->bssid, (fc & IEEE80211_FCTL_TODS) ? + hdr->addr1 : (fc & IEEE80211_FCTL_FROMDS) ? + hdr->addr2 : hdr->addr3)) && (!pstatus->b_hwerror) && + (!pstatus->b_crc) && (!pstatus->b_icv)); + + b_packet_toself = b_packet_matchbssid && + (!ether_addr_equal(praddr, rtlefuse->dev_addr)); + + if (ieee80211_is_beacon(fc)) + b_packet_beacon = true; + else + b_packet_beacon = false; + + if (b_packet_beacon && b_packet_matchbssid) + rtl_priv(hw)->dm.dbginfo.num_qry_beacon_pkt++; + + _rtl8821ae_query_rxphystatus(hw, pstatus, pdesc, p_drvinfo, + b_packet_matchbssid, b_packet_toself, + b_packet_beacon); + /*_rtl8821ae_smart_antenna(hw, pstatus); */ + rtl_process_phyinfo(hw, tmp_buf, pstatus); +} + +static void _rtl8821ae_insert_emcontent(struct rtl_tcb_desc *ptcb_desc, + u8 *virtualaddress) +{ + u32 dwtmp = 0; + memset(virtualaddress, 0, 8); + + SET_EARLYMODE_PKTNUM(virtualaddress, ptcb_desc->empkt_num); + if (ptcb_desc->empkt_num == 1) + dwtmp = ptcb_desc->empkt_len[0]; + else { + dwtmp = ptcb_desc->empkt_len[0]; + dwtmp += ((dwtmp%4)?(4-dwtmp%4):0)+4; + dwtmp += ptcb_desc->empkt_len[1]; + } + SET_EARLYMODE_LEN0(virtualaddress, dwtmp); + + if (ptcb_desc->empkt_num <= 3) + dwtmp = ptcb_desc->empkt_len[2]; + else { + dwtmp = ptcb_desc->empkt_len[2]; + dwtmp += ((dwtmp%4)?(4-dwtmp%4):0)+4; + dwtmp += ptcb_desc->empkt_len[3]; + } + SET_EARLYMODE_LEN1(virtualaddress, dwtmp); + if (ptcb_desc->empkt_num <= 5) + dwtmp = ptcb_desc->empkt_len[4]; + else { + dwtmp = ptcb_desc->empkt_len[4]; + dwtmp += ((dwtmp%4)?(4-dwtmp%4):0)+4; + dwtmp += ptcb_desc->empkt_len[5]; + } + SET_EARLYMODE_LEN2_1(virtualaddress, dwtmp & 0xF); + SET_EARLYMODE_LEN2_2(virtualaddress, dwtmp >> 4); + if (ptcb_desc->empkt_num <= 7) + dwtmp = ptcb_desc->empkt_len[6]; + else { + dwtmp = ptcb_desc->empkt_len[6]; + dwtmp += ((dwtmp%4)?(4-dwtmp%4):0)+4; + dwtmp += ptcb_desc->empkt_len[7]; + } + SET_EARLYMODE_LEN3(virtualaddress, dwtmp); + if (ptcb_desc->empkt_num <= 9) + dwtmp = ptcb_desc->empkt_len[8]; + else { + dwtmp = ptcb_desc->empkt_len[8]; + dwtmp += ((dwtmp%4)?(4-dwtmp%4):0)+4; + dwtmp += ptcb_desc->empkt_len[9]; + } + SET_EARLYMODE_LEN4(virtualaddress, dwtmp); +} + +bool rtl8821ae_rx_query_desc(struct ieee80211_hw *hw, + struct rtl_stats *status, + struct ieee80211_rx_status *rx_status, + u8 *pdesc, struct sk_buff *skb) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rx_fwinfo_8821ae *p_drvinfo; + struct ieee80211_hdr *hdr; + + u32 phystatus = GET_RX_DESC_PHYST(pdesc); + + status->length = (u16) GET_RX_DESC_PKT_LEN(pdesc); + status->rx_drvinfo_size = (u8) GET_RX_DESC_DRV_INFO_SIZE(pdesc) * + RX_DRV_INFO_SIZE_UNIT; + status->rx_bufshift = (u8) (GET_RX_DESC_SHIFT(pdesc) & 0x03); + status->b_icv = (u16) GET_RX_DESC_ICV(pdesc); + status->b_crc = (u16) GET_RX_DESC_CRC32(pdesc); + status->b_hwerror = (status->b_crc | status->b_icv); + status->decrypted = !GET_RX_DESC_SWDEC(pdesc); + status->rate = (u8) GET_RX_DESC_RXMCS(pdesc); + status->b_shortpreamble = (u16) GET_RX_DESC_SPLCP(pdesc); + status->b_isampdu = (bool) (GET_RX_DESC_PAGGR(pdesc) == 1); + status->b_isfirst_ampdu = (bool) (GET_RX_DESC_PAGGR(pdesc) == 1); + status->timestamp_low = GET_RX_DESC_TSFL(pdesc); + status->rx_is40Mhzpacket = (bool) GET_RX_DESC_BW(pdesc); + status->macid = GET_RX_DESC_MACID(pdesc); + status->b_is_ht = (bool)GET_RX_DESC_RXHT(pdesc); + + status->b_is_cck = RX_HAL_IS_CCK_RATE(status->rate); + + if (GET_RX_STATUS_DESC_RPT_SEL(pdesc)) + status->packet_report_type = C2H_PACKET; + else + status->packet_report_type = NORMAL_RX; + + if (GET_RX_STATUS_DESC_PATTERN_MATCH(pdesc)) + status->wake_match = BIT(2); + else if (GET_RX_STATUS_DESC_MAGIC_MATCH(pdesc)) + status->wake_match = BIT(1); + else if (GET_RX_STATUS_DESC_UNICAST_MATCH(pdesc)) + status->wake_match = BIT(0); + else + status->wake_match = 0; + + if (status->wake_match) + RT_TRACE(COMP_RXDESC,DBG_LOUD, + ("GGGGGGGGGGGGGet Wakeup Packet!! WakeMatch=%d\n",status->wake_match )); +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)) + rx_status->freq = hw->conf.chandef.chan->center_freq; + rx_status->band = hw->conf.chandef.chan->band; +#else + rx_status->freq = hw->conf.channel->center_freq; + rx_status->band = hw->conf.channel->band; +#endif + + hdr = (struct ieee80211_hdr *)(skb->data + status->rx_drvinfo_size + + status->rx_bufshift); + + if (status->b_crc) + rx_status->flag |= RX_FLAG_FAILED_FCS_CRC; + + if (status->rx_is40Mhzpacket) + rx_status->flag |= RX_FLAG_40MHZ; + + if (status->b_is_ht) + rx_status->flag |= RX_FLAG_HT; + + rx_status->flag |= RX_FLAG_MACTIME_MPDU; + + /* hw will set status->decrypted true, if it finds the + * frame is open data frame or mgmt frame. */ + /* So hw will not decryption robust managment frame + * for IEEE80211w but still set status->decrypted + * true, so here we should set it back to undecrypted + * for IEEE80211w frame, and mac80211 sw will help + * to decrypt it */ + if (status->decrypted) { + if (!hdr) { + WARN_ON_ONCE(true); + pr_err("decrypted is true but hdr NULL, from skb %p\n", + rtl_get_hdr(skb)); + return false; + } + + if ((_ieee80211_is_robust_mgmt_frame(hdr)) && + (ieee80211_has_protected(hdr->frame_control))) + rx_status->flag &= ~RX_FLAG_DECRYPTED; + else + rx_status->flag |= RX_FLAG_DECRYPTED; + } + + /* rate_idx: index of data rate into band's + * supported rates or MCS index if HT rates + * are use (RX_FLAG_HT)*/ + /* Notice: this is diff with windows define */ + rx_status->rate_idx = _rtl8821ae_rate_mapping(hw, + status->b_is_ht, status->rate); + + rx_status->mactime = status->timestamp_low; + if (phystatus == true) { + p_drvinfo = (struct rx_fwinfo_8821ae *)(skb->data + + status->rx_bufshift); + + _rtl8821ae_translate_rx_signal_stuff(hw, + skb, status, pdesc, + p_drvinfo); + } + + /*rx_status->qual = status->signal; */ + rx_status->signal = status->recvsignalpower + 10; + /*rx_status->noise = -status->noise; */ + if (status->packet_report_type == TX_REPORT2){ + status->macid_valid_entry[0] = GET_RX_RPT2_DESC_MACID_VALID_1(pdesc); + status->macid_valid_entry[1] = GET_RX_RPT2_DESC_MACID_VALID_2(pdesc); + } + return true; +} + +/**/ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0)) +void rtl8821ae_tx_fill_desc(struct ieee80211_hw *hw, + struct ieee80211_hdr *hdr, u8 *pdesc_tx, u8 *txbd, + struct ieee80211_tx_info *info, struct sk_buff *skb, + u8 hw_queue, struct rtl_tcb_desc *ptcb_desc) +#else +/**/ +void rtl8821ae_tx_fill_desc(struct ieee80211_hw *hw, + struct ieee80211_hdr *hdr, u8 *pdesc_tx, u8 *txbd, + struct ieee80211_tx_info *info, + struct ieee80211_sta *sta, + struct sk_buff *skb, + u8 hw_queue, struct rtl_tcb_desc *ptcb_desc) +/**/ +#endif +/**/ +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + struct rtl_hal *rtlhal = rtl_hal(rtlpriv); +/**/ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0)) + struct ieee80211_sta *sta = info->control.sta; +#endif +/**/ + u8 *pdesc = (u8 *) pdesc_tx; + u16 seq_number; + u16 fc = le16_to_cpu(hdr->frame_control); + unsigned int buf_len = 0; + unsigned int skb_len = skb->len; + u8 fw_qsel = _rtl8821ae_map_hwqueue_to_fwqueue(skb, hw_queue); + bool b_firstseg = ((hdr->seq_ctrl & + cpu_to_le16(IEEE80211_SCTL_FRAG)) == 0); + bool b_lastseg = ((hdr->frame_control & + cpu_to_le16(IEEE80211_FCTL_MOREFRAGS)) == 0); + dma_addr_t mapping; + u8 bw_40 = 0; + u8 short_gi = 0; + + if (mac->opmode == NL80211_IFTYPE_STATION) { + bw_40 = mac->bw_40; + } else if (mac->opmode == NL80211_IFTYPE_AP || + mac->opmode == NL80211_IFTYPE_ADHOC) { + if (sta) + bw_40 = sta->ht_cap.cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40; + } + seq_number = (le16_to_cpu(hdr->seq_ctrl) & IEEE80211_SCTL_SEQ) >> 4; + rtl_get_tcb_desc(hw, info, sta, skb, ptcb_desc); + /* reserve 8 byte for AMPDU early mode */ + if (rtlhal->b_earlymode_enable) { + skb_push(skb, EM_HDR_LEN); + memset(skb->data, 0, EM_HDR_LEN); + } + buf_len = skb->len; + mapping = pci_map_single(rtlpci->pdev, skb->data, skb->len, + PCI_DMA_TODEVICE); + if (pci_dma_mapping_error(rtlpci->pdev, mapping)) { + RT_TRACE(COMP_SEND, DBG_TRACE, + ("DMA mapping error")); + return; + } + CLEAR_PCI_TX_DESC_CONTENT(pdesc, sizeof(struct tx_desc_8821ae)); + if (ieee80211_is_nullfunc(fc) || ieee80211_is_ctl(fc)) { + b_firstseg = true; + b_lastseg = true; + } + if (b_firstseg) { + if (rtlhal->b_earlymode_enable) { + SET_TX_DESC_PKT_OFFSET(pdesc, 1); + SET_TX_DESC_OFFSET(pdesc, USB_HWDESC_HEADER_LEN + EM_HDR_LEN); + if (ptcb_desc->empkt_num) { + RT_TRACE(COMP_SEND, DBG_TRACE, + ("Insert 8 byte.pTcb->EMPktNum:%d\n", + ptcb_desc->empkt_num)); + _rtl8821ae_insert_emcontent(ptcb_desc, (u8 *)(skb->data)); + } + } else { + SET_TX_DESC_OFFSET(pdesc, USB_HWDESC_HEADER_LEN); + } + + /* ptcb_desc->use_driver_rate = true; */ + SET_TX_DESC_TX_RATE(pdesc, ptcb_desc->hw_rate); + if (ptcb_desc->hw_rate > DESC_RATEMCS0) { + short_gi = (ptcb_desc->use_shortgi) ? 1 : 0; + } else { + short_gi = (ptcb_desc->use_shortpreamble) ? 1 :0; + } + SET_TX_DESC_DATA_SHORTGI(pdesc, short_gi); + + if (info->flags & IEEE80211_TX_CTL_AMPDU) { + SET_TX_DESC_AGG_ENABLE(pdesc, 1); + SET_TX_DESC_MAX_AGG_NUM(pdesc, 0x14); + } + SET_TX_DESC_SEQ(pdesc, seq_number); + SET_TX_DESC_RTS_ENABLE(pdesc, ((ptcb_desc->b_rts_enable && + !ptcb_desc->b_cts_enable) ? 1 : 0)); + SET_TX_DESC_HW_RTS_ENABLE(pdesc,0); + SET_TX_DESC_CTS2SELF(pdesc, ((ptcb_desc->b_cts_enable) ? 1 : 0)); + /* SET_TX_DESC_RTS_STBC(pdesc, ((ptcb_desc->b_rts_stbc) ? 1 : 0));*/ + + SET_TX_DESC_RTS_RATE(pdesc, ptcb_desc->rts_rate); + /* SET_TX_DESC_RTS_BW(pdesc, 0);*/ + SET_TX_DESC_RTS_SC(pdesc, ptcb_desc->rts_sc); + SET_TX_DESC_RTS_SHORT(pdesc, ((ptcb_desc->rts_rate <= DESC_RATE54M) ? + (ptcb_desc->b_rts_use_shortpreamble ? 1 : 0) : + (ptcb_desc->b_rts_use_shortgi ? 1 : 0))); + + if(ptcb_desc->btx_enable_sw_calc_duration) + SET_TX_DESC_NAV_USE_HDR(pdesc, 1); + + if (bw_40) { + if (ptcb_desc->b_packet_bw) { + SET_TX_DESC_DATA_BW(pdesc, 1); + SET_TX_DESC_TX_SUB_CARRIER(pdesc, 3); + } else { + SET_TX_DESC_DATA_BW(pdesc, 0); + SET_TX_DESC_TX_SUB_CARRIER(pdesc, mac->cur_40_prime_sc); + } + } else { + SET_TX_DESC_DATA_BW(pdesc, 0); + SET_TX_DESC_TX_SUB_CARRIER(pdesc, 0); + } + + SET_TX_DESC_LINIP(pdesc, 0); + SET_TX_DESC_PKT_SIZE(pdesc, (u16) skb_len); + if (sta) { + u8 ampdu_density = sta->ht_cap.ampdu_density; + SET_TX_DESC_AMPDU_DENSITY(pdesc, ampdu_density); + } + if (info->control.hw_key) { + struct ieee80211_key_conf *keyconf = info->control.hw_key; +/**/ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) +/**/ + switch (keyconf->cipher) { + case WLAN_CIPHER_SUITE_WEP40: + case WLAN_CIPHER_SUITE_WEP104: + case WLAN_CIPHER_SUITE_TKIP: + SET_TX_DESC_SEC_TYPE(pdesc, 0x1); + break; + case WLAN_CIPHER_SUITE_CCMP: + SET_TX_DESC_SEC_TYPE(pdesc, 0x3); + break; + default: + SET_TX_DESC_SEC_TYPE(pdesc, 0x0); + break; + + } +/**/ +#else + switch (keyconf->alg) { + case ALG_WEP: + case ALG_TKIP: + SET_TX_DESC_SEC_TYPE(pdesc, 0x1); + break; + case ALG_CCMP: + SET_TX_DESC_SEC_TYPE(pdesc, 0x3); + break; + default: + SET_TX_DESC_SEC_TYPE(pdesc, 0x0); + break; + + } +#endif +/**/ + } + + SET_TX_DESC_QUEUE_SEL(pdesc, fw_qsel); + SET_TX_DESC_DATA_RATE_FB_LIMIT(pdesc, 0x1F); + SET_TX_DESC_RTS_RATE_FB_LIMIT(pdesc, 0xF); + SET_TX_DESC_DISABLE_FB(pdesc, ptcb_desc->disable_ratefallback ? 1 : 0); + SET_TX_DESC_USE_RATE(pdesc, ptcb_desc->use_driver_rate ? 1 : 0); + +#if 0 + SET_TX_DESC_USE_RATE(pdesc, 1); + SET_TX_DESC_TX_RATE(pdesc, 0x04); + + SET_TX_DESC_RETRY_LIMIT_ENABLE(pdesc, 1); + SET_TX_DESC_DATA_RETRY_LIMIT(pdesc, 0x3f); +#endif + + /*SET_TX_DESC_PWR_STATUS(pdesc, pwr_status);*/ + /* Set TxRate and RTSRate in TxDesc */ + /* This prevent Tx initial rate of new-coming packets */ + /* from being overwritten by retried packet rate.*/ + if (!ptcb_desc->use_driver_rate) { + /*SET_TX_DESC_RTS_RATE(pdesc, 0x08); */ + /* SET_TX_DESC_TX_RATE(pdesc, 0x0b); */ + } + if (ieee80211_is_data_qos(fc)) { + if (mac->rdg_en) { + RT_TRACE(COMP_SEND, DBG_TRACE, + ("Enable RDG function.\n")); + SET_TX_DESC_RDG_ENABLE(pdesc, 1); + SET_TX_DESC_HTC(pdesc, 1); + } + } + } + + SET_TX_DESC_FIRST_SEG(pdesc, (b_firstseg ? 1 : 0)); + SET_TX_DESC_LAST_SEG(pdesc, (b_lastseg ? 1 : 0)); + SET_TX_DESC_TX_BUFFER_SIZE(pdesc, (u16) buf_len); + SET_TX_DESC_TX_BUFFER_ADDRESS(pdesc, cpu_to_le32(mapping)); + //if (rtlpriv->dm.b_useramask) { + if(1){ + SET_TX_DESC_RATE_ID(pdesc, ptcb_desc->ratr_index); + SET_TX_DESC_MACID(pdesc, ptcb_desc->mac_id); + } else { + SET_TX_DESC_RATE_ID(pdesc, 0xC + ptcb_desc->ratr_index); + SET_TX_DESC_MACID(pdesc, ptcb_desc->mac_id); + } +/* if (ieee80211_is_data_qos(fc)) + SET_TX_DESC_QOS(pdesc, 1); +*/ + if (!ieee80211_is_data_qos(fc)) { + SET_TX_DESC_HWSEQ_EN(pdesc, 1); + SET_TX_DESC_HWSEQ_SEL(pdesc, 0); + } + SET_TX_DESC_MORE_FRAG(pdesc, (b_lastseg ? 0 : 1)); + if (is_multicast_ether_addr(ieee80211_get_DA(hdr)) || + is_broadcast_ether_addr(ieee80211_get_DA(hdr))) { + SET_TX_DESC_BMC(pdesc, 1); + } + + rtl8821ae_dm_set_tx_ant_by_tx_info(hw,pdesc,ptcb_desc->mac_id); + RT_TRACE(COMP_SEND, DBG_TRACE, ("\n")); +} + +void rtl8821ae_tx_fill_cmddesc(struct ieee80211_hw *hw, + u8 *pdesc, bool b_firstseg, + bool b_lastseg, struct sk_buff *skb) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + u8 fw_queue = QSLT_BEACON; + + dma_addr_t mapping = pci_map_single(rtlpci->pdev, + skb->data, skb->len, + PCI_DMA_TODEVICE); + + if (pci_dma_mapping_error(rtlpci->pdev, mapping)) { + RT_TRACE(COMP_SEND, DBG_TRACE, + ("DMA mapping error")); + return; + } + CLEAR_PCI_TX_DESC_CONTENT(pdesc, TX_DESC_SIZE); + + SET_TX_DESC_FIRST_SEG(pdesc, 1); + SET_TX_DESC_LAST_SEG(pdesc, 1); + + SET_TX_DESC_PKT_SIZE((u8 *) pdesc, (u16) (skb->len)); + + SET_TX_DESC_OFFSET(pdesc, USB_HWDESC_HEADER_LEN); + + SET_TX_DESC_USE_RATE(pdesc, 1); + SET_TX_DESC_TX_RATE(pdesc, DESC_RATE1M); + SET_TX_DESC_DISABLE_FB(pdesc, 1); + + SET_TX_DESC_DATA_BW(pdesc, 0); + + SET_TX_DESC_HWSEQ_EN(pdesc, 1); + + SET_TX_DESC_QUEUE_SEL(pdesc, fw_queue); +/* + if(IsCtrlNDPA(VirtualAddress) || IsMgntNDPA(VirtualAddress)) + { + SET_TX_DESC_DATA_RETRY_LIMIT_8812(pDesc, 5); + SET_TX_DESC_RETRY_LIMIT_ENABLE_8812(pDesc, 1); + + if(IsMgntNDPA(VirtualAddress)) + { + SET_TX_DESC_NDPA_8812(pDesc, 1); + SET_TX_DESC_RTS_SC_8812(pDesc, SCMapping_8812(Adapter, pTcb)); + } + else + { + SET_TX_DESC_NDPA_8812(pDesc, 2); + SET_TX_DESC_RTS_SC_8812(pDesc, SCMapping_8812(Adapter, pTcb)); + } + }*/ + + SET_TX_DESC_TX_BUFFER_SIZE(pdesc, (u16) (skb->len)); + + SET_TX_DESC_TX_BUFFER_ADDRESS(pdesc, cpu_to_le32(mapping)); + + SET_TX_DESC_MACID(pdesc, 0); + + SET_TX_DESC_OWN(pdesc, 1); + + RT_PRINT_DATA(rtlpriv, COMP_CMD, DBG_LOUD, + "H2C Tx Cmd Content\n", + pdesc, TX_DESC_SIZE); +} + +void rtl8821ae_set_desc(struct ieee80211_hw * hw, u8 *pdesc, bool istx, u8 desc_name, u8 *val) +{ + if (istx == true) { + switch (desc_name) { + case HW_DESC_OWN: + SET_TX_DESC_OWN(pdesc, 1); + break; + case HW_DESC_TX_NEXTDESC_ADDR: + SET_TX_DESC_NEXT_DESC_ADDRESS(pdesc, *(u32 *) val); + break; + default: + RT_ASSERT(false, ("ERR txdesc :%d" + " not process\n", desc_name)); + break; + } + } else { + switch (desc_name) { + case HW_DESC_RXOWN: + SET_RX_DESC_OWN(pdesc, 1); + break; + case HW_DESC_RXBUFF_ADDR: + SET_RX_DESC_BUFF_ADDR(pdesc, *(u32 *) val); + break; + case HW_DESC_RXPKT_LEN: + SET_RX_DESC_PKT_LEN(pdesc, *(u32 *) val); + break; + case HW_DESC_RXERO: + SET_RX_DESC_EOR(pdesc, 1); + break; + default: + RT_ASSERT(false, ("ERR rxdesc :%d " + "not process\n", desc_name)); + break; + } + } +} + +u32 rtl8821ae_get_desc(u8 *pdesc, bool istx, u8 desc_name) +{ + u32 ret = 0; + + if (istx == true) { + switch (desc_name) { + case HW_DESC_OWN: + ret = GET_TX_DESC_OWN(pdesc); + break; + case HW_DESC_TXBUFF_ADDR: + ret = GET_TX_DESC_TX_BUFFER_ADDRESS(pdesc); + break; + default: + RT_ASSERT(false, ("ERR txdesc :%d " + "not process\n", desc_name)); + break; + } + } else { + switch (desc_name) { + case HW_DESC_OWN: + ret = GET_RX_DESC_OWN(pdesc); + break; + case HW_DESC_RXPKT_LEN: + ret = GET_RX_DESC_PKT_LEN(pdesc); + break; + default: + RT_ASSERT(false, ("ERR rxdesc :%d " + "not process\n", desc_name)); + break; + } + } + return ret; +} + +bool rtl8821ae_is_tx_desc_closed(struct ieee80211_hw *hw, + u8 hw_queue, u16 index) +{ + struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + struct rtl8192_tx_ring *ring = &rtlpci->tx_ring[hw_queue]; + u8 *entry = (u8 *)(&ring->desc[ring->idx]); + u8 own = (u8) rtl8821ae_get_desc(entry, true, HW_DESC_OWN); + + /* + *beacon packet will only use the first + *descriptor defautly,and the own may not + *be cleared by the hardware + */ + if (own) + return false; + else + return true; +} + + +void rtl8821ae_tx_polling(struct ieee80211_hw *hw, u8 hw_queue) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + + if (hw_queue == BEACON_QUEUE) { + rtl_write_word(rtlpriv, REG_PCIE_CTRL_REG, BIT(4)); + } else { + rtl_write_word(rtlpriv, REG_PCIE_CTRL_REG, + BIT(0) << (hw_queue)); + } +} --- linux-3.13.0.orig/drivers/staging/rtl8821ae/rtl8821ae/trx.h +++ linux-3.13.0/drivers/staging/rtl8821ae/rtl8821ae/trx.h @@ -0,0 +1,641 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#ifndef __RTL8821AE_TRX_H__ +#define __RTL8821AE_TRX_H__ + +#define TX_DESC_SIZE 40 +#define TX_DESC_AGGR_SUBFRAME_SIZE 32 + +#define RX_DESC_SIZE 32 +#define RX_DRV_INFO_SIZE_UNIT 8 + +#define TX_DESC_NEXT_DESC_OFFSET 40 +#define USB_HWDESC_HEADER_LEN 40 +#define CRCLENGTH 4 + +#define SET_TX_DESC_PKT_SIZE(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc, 0, 16, __val) +#define SET_TX_DESC_OFFSET(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc, 16, 8, __val) +#define SET_TX_DESC_BMC(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc, 24, 1, __val) +#define SET_TX_DESC_HTC(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc, 25, 1, __val) +#define SET_TX_DESC_LAST_SEG(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc, 26, 1, __val) +#define SET_TX_DESC_FIRST_SEG(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc, 27, 1, __val) +#define SET_TX_DESC_LINIP(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc, 28, 1, __val) +#define SET_TX_DESC_NO_ACM(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc, 29, 1, __val) +#define SET_TX_DESC_GF(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc, 30, 1, __val) +#define SET_TX_DESC_OWN(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc, 31, 1, __val) + +#define GET_TX_DESC_PKT_SIZE(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 0, 16) +#define GET_TX_DESC_OFFSET(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 16, 8) +#define GET_TX_DESC_BMC(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 24, 1) +#define GET_TX_DESC_HTC(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 25, 1) +#define GET_TX_DESC_LAST_SEG(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 26, 1) +#define GET_TX_DESC_FIRST_SEG(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 27, 1) +#define GET_TX_DESC_LINIP(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 28, 1) +#define GET_TX_DESC_NO_ACM(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 29, 1) +#define GET_TX_DESC_GF(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 30, 1) +#define GET_TX_DESC_OWN(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 31, 1) + +#define SET_TX_DESC_MACID(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+4, 0, 7, __val) +#define SET_TX_DESC_QUEUE_SEL(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+4, 8, 5, __val) +#define SET_TX_DESC_RDG_NAV_EXT(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+4, 13, 1, __val) +#define SET_TX_DESC_LSIG_TXOP_EN(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+4, 14, 1, __val) +#define SET_TX_DESC_PIFS(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+4, 15, 1, __val) +#define SET_TX_DESC_RATE_ID(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+4, 16, 5, __val) +#define SET_TX_DESC_EN_DESC_ID(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+4, 21, 1, __val) +#define SET_TX_DESC_SEC_TYPE(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+4, 22, 2, __val) +#define SET_TX_DESC_PKT_OFFSET(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+4, 24, 5, __val) + + +#define SET_TX_DESC_PAID(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+8, 0, 9, __val) +#define SET_TX_DESC_CCA_RTS(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+8, 10, 2, __val) +#define SET_TX_DESC_AGG_ENABLE(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+8, 12, 1, __val) +#define SET_TX_DESC_RDG_ENABLE(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+8, 13, 1, __val) +#define SET_TX_DESC_BAR_RTY_TH(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+8, 14, 2, __val) +#define SET_TX_DESC_AGG_BREAK(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+8, 16, 1, __val) +#define SET_TX_DESC_MORE_FRAG(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+8, 17, 1, __val) +#define SET_TX_DESC_RAW(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+8, 18, 1, __val) +#define SET_TX_DESC_SPE_RPT(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+8, 19, 1, __val) +#define SET_TX_DESC_AMPDU_DENSITY(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+8, 20, 3, __val) +#define SET_TX_DESC_BT_INT(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+8, 23, 1, __val) +#define SET_TX_DESC_GID(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+8, 24, 6, __val) + + +#define SET_TX_DESC_WHEADER_LEN(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+12, 0, 4, __val) +#define SET_TX_DESC_CHK_EN(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+12, 4, 1, __val) +#define SET_TX_DESC_EARLY_MODE(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+12, 5, 1, __val) +#define SET_TX_DESC_HWSEQ_SEL(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+12, 6, 2, __val) +#define SET_TX_DESC_USE_RATE(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+12, 8, 1, __val) +#define SET_TX_DESC_DISABLE_RTS_FB(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+12, 9, 1, __val) +#define SET_TX_DESC_DISABLE_FB(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+12, 10, 1, __val) +#define SET_TX_DESC_CTS2SELF(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+12, 11, 1, __val) +#define SET_TX_DESC_RTS_ENABLE(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+12, 12, 1, __val) +#define SET_TX_DESC_HW_RTS_ENABLE(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+12, 13, 1, __val) +#define SET_TX_DESC_NAV_USE_HDR(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+12, 15, 1, __val) +#define SET_TX_DESC_USE_MAX_LEN(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+12, 16, 1, __val) +#define SET_TX_DESC_MAX_AGG_NUM(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+12, 17, 5, __val) +#define SET_TX_DESC_NDPA(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+12, 22, 2, __val) +#define SET_TX_DESC_AMPDU_MAX_TIME(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+12, 24, 8, __val) +#define SET_TX_DESC_TX_ANT(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+20, 24, 4, __val) + +#define SET_TX_DESC_TX_RATE(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+16, 0, 7, __val) +#define SET_TX_DESC_DATA_RATE_FB_LIMIT(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+16, 8, 5, __val) +#define SET_TX_DESC_RTS_RATE_FB_LIMIT(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+16, 13, 4, __val) +#define SET_TX_DESC_RETRY_LIMIT_ENABLE(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+16, 17, 1, __val) +#define SET_TX_DESC_DATA_RETRY_LIMIT(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+16, 18, 6, __val) +#define SET_TX_DESC_RTS_RATE(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+16, 24, 5, __val) + + +#define SET_TX_DESC_TX_SUB_CARRIER(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+20, 0, 4, __val) +#define SET_TX_DESC_DATA_SHORTGI(__pdesc, __val) \ + SET_BITS_TO_LE_1BYTE(__pdesc+20, 6, 1, __val) +#define SET_TX_DESC_DATA_BW(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+20, 5, 2, __val) +#define SET_TX_DESC_DATA_LDPC(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+20, 7, 1, __val) +#define SET_TX_DESC_DATA_STBC(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+20, 8, 2, __val) +#define SET_TX_DESC_CTROL_STBC(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+20, 10, 2, __val) +#define SET_TX_DESC_RTS_SHORT(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+20, 12, 1, __val) +#define SET_TX_DESC_RTS_SC(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+20, 13, 4, __val) + + +#define SET_TX_DESC_TX_BUFFER_SIZE(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+28, 0, 16, __val) + +#define GET_TX_DESC_TX_BUFFER_SIZE(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+28, 0, 16) + +#define SET_TX_DESC_HWSEQ_EN(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+32, 15, 1, __val) + +#define SET_TX_DESC_SEQ(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+36, 12, 12, __val) + +#define SET_TX_DESC_TX_BUFFER_ADDRESS(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+40, 0, 32, __val) + +#define GET_TX_DESC_TX_BUFFER_ADDRESS(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+40, 0, 32) + + +#define SET_TX_DESC_NEXT_DESC_ADDRESS(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+48, 0, 32, __val) + +#define GET_TX_DESC_NEXT_DESC_ADDRESS(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+48, 0, 32) + +#define GET_RX_DESC_PKT_LEN(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 0, 14) +#define GET_RX_DESC_CRC32(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 14, 1) +#define GET_RX_DESC_ICV(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 15, 1) +#define GET_RX_DESC_DRV_INFO_SIZE(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 16, 4) +#define GET_RX_DESC_SECURITY(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 20, 3) +#define GET_RX_DESC_QOS(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 23, 1) +#define GET_RX_DESC_SHIFT(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 24, 2) +#define GET_RX_DESC_PHYST(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 26, 1) +#define GET_RX_DESC_SWDEC(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 27, 1) +#define GET_RX_DESC_LS(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 28, 1) +#define GET_RX_DESC_FS(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 29, 1) +#define GET_RX_DESC_EOR(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 30, 1) +#define GET_RX_DESC_OWN(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc, 31, 1) + +#define SET_RX_DESC_PKT_LEN(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc, 0, 14, __val) +#define SET_RX_DESC_EOR(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc, 30, 1, __val) +#define SET_RX_DESC_OWN(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc, 31, 1, __val) + +#define GET_RX_DESC_MACID(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+4, 0, 7) +#define GET_RX_DESC_TID(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+4, 8, 4) +#define GET_RX_DESC_AMSDU(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+4, 13, 1) +#define GET_RX_STATUS_DESC_RXID_MATCH(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+4, 14, 1) +#define GET_RX_DESC_PAGGR(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+4, 15, 1) +#define GET_RX_DESC_A1_FIT(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+4, 16, 4) +#define GET_RX_DESC_CHKERR(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+4, 20, 1) +#define GET_RX_DESC_IPVER(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+4, 21, 1) +#define GET_RX_STATUS_DESC_IS_TCPUDP(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+4, 22, 1) +#define GET_RX_STATUS_DESC_CHK_VLD(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+4, 23, 1) +#define GET_RX_DESC_PAM(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+4, 24, 1) +#define GET_RX_DESC_PWR(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+4, 25, 1) +#define GET_RX_DESC_MD(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+4, 26, 1) +#define GET_RX_DESC_MF(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+4, 27, 1) +#define GET_RX_DESC_TYPE(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+4, 28, 2) +#define GET_RX_DESC_MC(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+4, 30, 1) +#define GET_RX_DESC_BC(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+4, 31, 1) + + +#define GET_RX_DESC_SEQ(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+8, 0, 12) +#define GET_RX_DESC_FRAG(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+8, 12, 4) +#define GET_RX_STATUS_DESC_RX_IS_QOS(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+8, 16, 1) +#define GET_RX_STATUS_DESC_WLANHD_IV_LEN(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+8, 18, 6) +#define GET_RX_STATUS_DESC_RPT_SEL(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+8, 28, 1) + + +#define GET_RX_DESC_RXMCS(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+12, 0, 7) +#define GET_RX_DESC_RXHT(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+12, 6, 1) +#define GET_RX_STATUS_DESC_RX_GF(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+12, 7, 1) +#define GET_RX_DESC_HTC(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+12, 10, 1) +#define GET_RX_STATUS_DESC_EOSP(__pdesc) \ + LE_BITS_TO_4BYTE( __pdesc+12, 11, 1) +#define GET_RX_STATUS_DESC_BSSID_FIT(__pdesc) \ + LE_BITS_TO_4BYTE( __pdesc+12, 12, 2) + +#define GET_RX_STATUS_DESC_PATTERN_MATCH(__pdesc) \ + LE_BITS_TO_4BYTE( __pdesc+12, 29, 1) +#define GET_RX_STATUS_DESC_UNICAST_MATCH(__pdesc) \ + LE_BITS_TO_4BYTE( __pdesc+12, 30, 1) +#define GET_RX_STATUS_DESC_MAGIC_MATCH(__pdesc) \ + LE_BITS_TO_4BYTE( __pdesc+12, 31, 1) + +#define GET_RX_DESC_SPLCP(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+16, 0, 1) +#define GET_RX_STATUS_DESC_LDPC(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+16, 1, 1) +#define GET_RX_STATUS_DESC_STBC(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+16, 2, 1) +#define GET_RX_DESC_BW(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+16, 4, 2) + +#define GET_RX_DESC_TSFL(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+20, 0, 32) + +#define GET_RX_DESC_BUFF_ADDR(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+24, 0, 32) +#define GET_RX_DESC_BUFF_ADDR64(__pdesc) \ + LE_BITS_TO_4BYTE(__pdesc+28, 0, 32) + +#define SET_RX_DESC_BUFF_ADDR(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+24, 0, 32, __val) +#define SET_RX_DESC_BUFF_ADDR64(__pdesc, __val) \ + SET_BITS_TO_LE_4BYTE(__pdesc+28, 0, 32, __val) + + +/* TX report 2 format in Rx desc*/ + +#define GET_RX_RPT2_DESC_PKT_LEN(__pRxStatusDesc) \ + LE_BITS_TO_4BYTE( __pRxStatusDesc, 0, 9) +#define GET_RX_RPT2_DESC_MACID_VALID_1(__pRxStatusDesc) \ + LE_BITS_TO_4BYTE( __pRxStatusDesc+16, 0, 32) +#define GET_RX_RPT2_DESC_MACID_VALID_2(__pRxStatusDesc) \ + LE_BITS_TO_4BYTE( __pRxStatusDesc+20, 0, 32) + +#define SET_EARLYMODE_PKTNUM(__paddr, __value) \ + SET_BITS_TO_LE_4BYTE(__paddr, 0, 4, __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) + +#define CLEAR_PCI_TX_DESC_CONTENT(__pdesc, _size) \ +do { \ + if(_size > TX_DESC_NEXT_DESC_OFFSET) \ + memset(__pdesc, 0, TX_DESC_NEXT_DESC_OFFSET); \ + else \ + memset(__pdesc, 0, _size); \ +} while (0); + +#define RX_HAL_IS_CCK_RATE(rxmcs)\ + (rxmcs == DESC_RATE1M ||\ + rxmcs == DESC_RATE2M ||\ + rxmcs == DESC_RATE5_5M ||\ + rxmcs == DESC_RATE11M) + +#define IS_LITTLE_ENDIAN 1 + +struct phy_rx_agc_info_t { + #if IS_LITTLE_ENDIAN + u8 gain:7,trsw:1; + #else + u8 trsw:1,gain:7; + #endif +}; +struct phy_status_rpt{ + struct phy_rx_agc_info_t path_agc[2]; + u8 ch_corr[2]; + u8 cck_sig_qual_ofdm_pwdb_all; + u8 cck_agc_rpt_ofdm_cfosho_a; + u8 cck_rpt_b_ofdm_cfosho_b; + u8 rsvd_1;//ch_corr_msb; + u8 noise_power_db_msb; + u8 path_cfotail[2]; + u8 pcts_mask[2]; + u8 stream_rxevm[2]; + u8 path_rxsnr[2]; + u8 noise_power_db_lsb; + u8 rsvd_2[3]; + u8 stream_csi[2]; + u8 stream_target_csi[2]; + u8 sig_evm; + u8 rsvd_3; +#if IS_LITTLE_ENDIAN + u8 antsel_rx_keep_2:1; /*ex_intf_flg:1;*/ + u8 sgi_en:1; + u8 rxsc:2; + u8 idle_long:1; + u8 r_ant_train_en:1; + u8 ant_sel_b:1; + u8 ant_sel:1; +#else /* _BIG_ENDIAN_ */ + u8 ant_sel:1; + u8 ant_sel_b:1; + u8 r_ant_train_en:1; + u8 idle_long:1; + u8 rxsc:2; + u8 sgi_en:1; + u8 antsel_rx_keep_2:1; /*ex_intf_flg:1;*/ +#endif +}__packed; + +struct rx_fwinfo_8821ae { + u8 gain_trsw[4]; + u8 pwdb_all; + u8 cfosho[4]; + u8 cfotail[4]; + char rxevm[2]; + char rxsnr[4]; + u8 pdsnr[2]; + u8 csi_current[2]; + u8 csi_target[2]; + u8 sigevm; + u8 max_ex_pwr; + u8 ex_intf_flag:1; + u8 sgi_en:1; + u8 rxsc:2; + u8 reserve:4; +} __packed; + +struct tx_desc_8821ae { + u32 pktsize:16; + u32 offset:8; + u32 bmc:1; + u32 htc:1; + u32 lastseg:1; + u32 firstseg:1; + u32 linip:1; + u32 noacm:1; + u32 gf:1; + u32 own:1; + + u32 macid:6; + u32 rsvd0:2; + u32 queuesel:5; + u32 rd_nav_ext:1; + u32 lsig_txop_en:1; + u32 pifs:1; + u32 rateid:4; + u32 nav_usehdr:1; + u32 en_descid:1; + u32 sectype:2; + u32 pktoffset:8; + + u32 rts_rc:6; + u32 data_rc:6; + u32 agg_en:1; + u32 rdg_en:1; + u32 bar_retryht:2; + u32 agg_break:1; + u32 morefrag:1; + u32 raw:1; + u32 ccx:1; + u32 ampdudensity:3; + u32 bt_int:1; + u32 ant_sela:1; + u32 ant_selb:1; + u32 txant_cck:2; + u32 txant_l:2; + u32 txant_ht:2; + + u32 nextheadpage:8; + u32 tailpage:8; + u32 seq:12; + u32 cpu_handle:1; + u32 tag1:1; + u32 trigger_int:1; + u32 hwseq_en:1; + + u32 rtsrate:5; + u32 apdcfe:1; + u32 qos:1; + u32 hwseq_ssn:1; + u32 userrate:1; + u32 dis_rtsfb:1; + u32 dis_datafb:1; + u32 cts2self:1; + u32 rts_en:1; + u32 hwrts_en:1; + u32 portid:1; + u32 pwr_status:3; + u32 waitdcts:1; + u32 cts2ap_en:1; + u32 txsc:2; + u32 stbc:2; + u32 txshort:1; + u32 txbw:1; + u32 rtsshort:1; + u32 rtsbw:1; + u32 rtssc:2; + u32 rtsstbc:2; + + u32 txrate:6; + u32 shortgi:1; + u32 ccxt:1; + u32 txrate_fb_lmt:5; + u32 rtsrate_fb_lmt:4; + u32 retrylmt_en:1; + u32 txretrylmt:6; + u32 usb_txaggnum:8; + + u32 txagca:5; + u32 txagcb:5; + u32 usemaxlen:1; + u32 maxaggnum:5; + u32 mcsg1maxlen:4; + u32 mcsg2maxlen:4; + u32 mcsg3maxlen:4; + u32 mcs7sgimaxlen:4; + + u32 txbuffersize:16; + u32 sw_offset30:8; + u32 sw_offset31:4; + u32 rsvd1:1; + u32 antsel_c:1; + u32 null_0:1; + u32 null_1:1; + + u32 txbuffaddr; + u32 txbufferaddr64; + u32 nextdescaddress; + u32 nextdescaddress64; + + u32 reserve_pass_pcie_mm_limit[4]; +} __packed; + +struct rx_desc_8821ae { + u32 length:14; + u32 crc32:1; + u32 icverror:1; + u32 drv_infosize:4; + u32 security:3; + u32 qos:1; + u32 shift:2; + u32 phystatus:1; + u32 swdec:1; + u32 lastseg:1; + u32 firstseg:1; + u32 eor:1; + u32 own:1; + + u32 macid:6; + u32 tid:4; + u32 hwrsvd:5; + u32 paggr:1; + u32 faggr:1; + u32 a1_fit:4; + u32 a2_fit:4; + u32 pam:1; + u32 pwr:1; + u32 moredata:1; + u32 morefrag:1; + u32 type:2; + u32 mc:1; + u32 bc:1; + + u32 seq:12; + u32 frag:4; + u32 nextpktlen:14; + u32 nextind:1; + u32 rsvd:1; + + u32 rxmcs:6; + u32 rxht:1; + u32 amsdu:1; + u32 splcp:1; + u32 bandwidth:1; + u32 htc:1; + u32 tcpchk_rpt:1; + u32 ipcchk_rpt:1; + u32 tcpchk_valid:1; + u32 hwpcerr:1; + u32 hwpcind:1; + u32 iv0:16; + + u32 iv1; + + u32 tsfl; + + u32 bufferaddress; + u32 bufferaddress64; + +} __packed; + +/**/ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0)) +void rtl8821ae_tx_fill_desc(struct ieee80211_hw *hw, + struct ieee80211_hdr *hdr, u8 *pdesc_tx, u8 *txbd, + struct ieee80211_tx_info *info, struct sk_buff *skb, + u8 hw_queue, struct rtl_tcb_desc *ptcb_desc); +#else +/**/ +void rtl8821ae_tx_fill_desc(struct ieee80211_hw *hw, + struct ieee80211_hdr *hdr, u8 *pdesc_tx, u8 *txbd, + struct ieee80211_tx_info *info, + struct ieee80211_sta *sta, + struct sk_buff *skb, + u8 hw_queue, struct rtl_tcb_desc *ptcb_desc); +/**/ +#endif +/**/ +bool rtl8821ae_rx_query_desc(struct ieee80211_hw *hw, + struct rtl_stats *status, + struct ieee80211_rx_status *rx_status, + u8 *pdesc, struct sk_buff *skb); +void rtl8821ae_set_desc(struct ieee80211_hw * hw, u8 *pdesc, bool istx, u8 desc_name, u8 *val); +u32 rtl8821ae_get_desc(u8 *pdesc, bool istx, u8 desc_name); +bool rtl8821ae_is_tx_desc_closed(struct ieee80211_hw *hw, + u8 hw_queue, u16 index); +void rtl8821ae_tx_polling(struct ieee80211_hw *hw, u8 hw_queue); +void rtl8821ae_tx_fill_cmddesc(struct ieee80211_hw *hw, u8 *pdesc, + bool b_firstseg, bool b_lastseg, + struct sk_buff *skb); +#endif --- linux-3.13.0.orig/drivers/staging/rtl8821ae/stats.c +++ linux-3.13.0/drivers/staging/rtl8821ae/stats.c @@ -0,0 +1,283 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ +#include "wifi.h" +#include "stats.h" +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0)) +#include +#endif + +u8 rtl_query_rxpwrpercentage(char antpower) +{ + if ((antpower <= -100) || (antpower >= 20)) + return 0; + else if (antpower >= 0) + return 100; + else + return (100 + antpower); +} +//EXPORT_SYMBOL(rtl_query_rxpwrpercentage); + +u8 rtl_evm_db_to_percentage(char value) +{ + char ret_val; + ret_val = value; + + 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; +} +//EXPORT_SYMBOL(rtl_evm_db_to_percentage); + +long rtl_translate_todbm(struct ieee80211_hw *hw, + u8 signal_strength_index) +{ + long signal_power; + + signal_power = (long)((signal_strength_index + 1) >> 1); + signal_power -= 95; + return signal_power; +} + +long rtl_signal_scale_mapping(struct ieee80211_hw *hw, long currsig) +{ + long retsig; + + if (currsig >= 61 && currsig <= 100) + retsig = 90 + ((currsig - 60) / 4); + else if (currsig >= 41 && currsig <= 60) + retsig = 78 + ((currsig - 40) / 2); + else if (currsig >= 31 && currsig <= 40) + retsig = 66 + (currsig - 30); + else if (currsig >= 21 && currsig <= 30) + retsig = 54 + (currsig - 20); + else if (currsig >= 5 && currsig <= 20) + retsig = 42 + (((currsig - 5) * 2) / 3); + else if (currsig == 4) + retsig = 36; + else if (currsig == 3) + retsig = 27; + else if (currsig == 2) + retsig = 18; + else if (currsig == 1) + retsig = 9; + else + retsig = currsig; + + return retsig; +} +//EXPORT_SYMBOL(rtl_signal_scale_mapping); + +void rtl_process_ui_rssi(struct ieee80211_hw *hw, struct rtl_stats *pstatus) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_phy *rtlphy = &(rtlpriv->phy); + u8 rfpath; + u32 last_rssi, tmpval; + + if (!pstatus->b_packet_toself && !pstatus->b_packet_beacon) + return; + + rtlpriv->stats.pwdb_all_cnt += pstatus->rx_pwdb_all; + rtlpriv->stats.rssi_calculate_cnt++; + + if (rtlpriv->stats.ui_rssi.total_num++ >= PHY_RSSI_SLID_WIN_MAX) { + rtlpriv->stats.ui_rssi.total_num = PHY_RSSI_SLID_WIN_MAX; + last_rssi = rtlpriv->stats.ui_rssi.elements[ + rtlpriv->stats.ui_rssi.index]; + rtlpriv->stats.ui_rssi.total_val -= last_rssi; + } + rtlpriv->stats.ui_rssi.total_val += pstatus->signalstrength; + rtlpriv->stats.ui_rssi.elements[rtlpriv->stats.ui_rssi.index++] = + pstatus->signalstrength; + if (rtlpriv->stats.ui_rssi.index >= PHY_RSSI_SLID_WIN_MAX) + rtlpriv->stats.ui_rssi.index = 0; + tmpval = rtlpriv->stats.ui_rssi.total_val / + rtlpriv->stats.ui_rssi.total_num; + rtlpriv->stats.signal_strength = rtl_translate_todbm(hw, + (u8) tmpval); + pstatus->rssi = rtlpriv->stats.signal_strength; + + if (pstatus->b_is_cck) + return; + + for (rfpath = RF90_PATH_A; rfpath < rtlphy->num_total_rfpath; + rfpath++) { + if (rtlpriv->stats.rx_rssi_percentage[rfpath] == 0) { + rtlpriv->stats.rx_rssi_percentage[rfpath] = + pstatus->rx_mimo_signalstrength[rfpath]; + + } + if (pstatus->rx_mimo_signalstrength[rfpath] > + rtlpriv->stats.rx_rssi_percentage[rfpath]) { + rtlpriv->stats.rx_rssi_percentage[rfpath] = + ((rtlpriv->stats.rx_rssi_percentage[rfpath] * + (RX_SMOOTH_FACTOR - 1)) + + (pstatus->rx_mimo_signalstrength[rfpath])) / + (RX_SMOOTH_FACTOR); + rtlpriv->stats.rx_rssi_percentage[rfpath] = + rtlpriv->stats.rx_rssi_percentage[rfpath] + 1; + } else { + rtlpriv->stats.rx_rssi_percentage[rfpath] = + ((rtlpriv->stats.rx_rssi_percentage[rfpath] * + (RX_SMOOTH_FACTOR - 1)) + + (pstatus->rx_mimo_signalstrength[rfpath])) / + (RX_SMOOTH_FACTOR); + } + rtlpriv->stats.rx_snr_db[rfpath] = pstatus->rx_snr[rfpath]; + rtlpriv->stats.rx_evm_dbm[rfpath] = + pstatus->rx_mimo_evm_dbm[rfpath]; + rtlpriv->stats.rx_cfo_short[rfpath] = + pstatus->cfo_short[rfpath]; + rtlpriv->stats.rx_cfo_tail[rfpath] = pstatus->cfo_tail[rfpath]; + } +} + +static void rtl_update_rxsignalstatistics(struct ieee80211_hw *hw, + struct rtl_stats *pstatus) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + int weighting = 0; + + if (rtlpriv->stats.recv_signal_power == 0) + rtlpriv->stats.recv_signal_power = pstatus->recvsignalpower; + if (pstatus->recvsignalpower > rtlpriv->stats.recv_signal_power) + weighting = 5; + else if (pstatus->recvsignalpower < rtlpriv->stats.recv_signal_power) + weighting = (-5); + rtlpriv->stats.recv_signal_power = (rtlpriv->stats.recv_signal_power * + 5 + pstatus->recvsignalpower + weighting) / 6; +} + +static void rtl_process_pwdb(struct ieee80211_hw *hw, struct rtl_stats *pstatus) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_sta_info *drv_priv = NULL; + struct ieee80211_sta *sta = NULL; + long undecorated_smoothed_pwdb; + + rcu_read_lock(); + if (rtlpriv->mac80211.opmode != NL80211_IFTYPE_STATION) + sta = rtl_find_sta(hw, pstatus->psaddr); + + /* adhoc or ap mode */ + if (sta) { + drv_priv = (struct rtl_sta_info *) sta->drv_priv; + undecorated_smoothed_pwdb = + drv_priv->rssi_stat.undecorated_smoothed_pwdb; + } else { + undecorated_smoothed_pwdb = + rtlpriv->dm.undecorated_smoothed_pwdb; + } + + if (undecorated_smoothed_pwdb < 0) + undecorated_smoothed_pwdb = pstatus->rx_pwdb_all; + if (pstatus->rx_pwdb_all > (u32) undecorated_smoothed_pwdb) { + undecorated_smoothed_pwdb = (((undecorated_smoothed_pwdb) * + (RX_SMOOTH_FACTOR - 1)) + + (pstatus->rx_pwdb_all)) / (RX_SMOOTH_FACTOR); + undecorated_smoothed_pwdb = undecorated_smoothed_pwdb + 1; + } else { + undecorated_smoothed_pwdb = (((undecorated_smoothed_pwdb) * + (RX_SMOOTH_FACTOR - 1)) + + (pstatus->rx_pwdb_all)) / (RX_SMOOTH_FACTOR); + } + + if(sta) { + drv_priv->rssi_stat.undecorated_smoothed_pwdb = + undecorated_smoothed_pwdb; + } else { + rtlpriv->dm.undecorated_smoothed_pwdb = undecorated_smoothed_pwdb; + } + rcu_read_unlock(); + + rtl_update_rxsignalstatistics(hw, pstatus); +} + +static void rtl_process_ui_link_quality(struct ieee80211_hw *hw, + struct rtl_stats *pstatus) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 last_evm, n_stream, tmpval; + + if (pstatus->signalquality == 0) + return; + + if (rtlpriv->stats.ui_link_quality.total_num++ >= + PHY_LINKQUALITY_SLID_WIN_MAX) { + rtlpriv->stats.ui_link_quality.total_num = + PHY_LINKQUALITY_SLID_WIN_MAX; + last_evm = rtlpriv->stats.ui_link_quality.elements[ + rtlpriv->stats.ui_link_quality.index]; + rtlpriv->stats.ui_link_quality.total_val -= last_evm; + } + rtlpriv->stats.ui_link_quality.total_val += pstatus->signalquality; + rtlpriv->stats.ui_link_quality.elements[ + rtlpriv->stats.ui_link_quality.index++] = + pstatus->signalquality; + if (rtlpriv->stats.ui_link_quality.index >= + PHY_LINKQUALITY_SLID_WIN_MAX) + rtlpriv->stats.ui_link_quality.index = 0; + tmpval = rtlpriv->stats.ui_link_quality.total_val / + rtlpriv->stats.ui_link_quality.total_num; + rtlpriv->stats.signal_quality = tmpval; + rtlpriv->stats.last_sigstrength_inpercent = tmpval; + for (n_stream = 0; n_stream < 2; n_stream++) { + if (pstatus->rx_mimo_signalquality[n_stream] != -1) { + if (rtlpriv->stats.rx_evm_percentage[n_stream] == 0) { + rtlpriv->stats.rx_evm_percentage[n_stream] = + pstatus->rx_mimo_signalquality[n_stream]; + } + rtlpriv->stats.rx_evm_percentage[n_stream] = + ((rtlpriv->stats.rx_evm_percentage[n_stream] + * (RX_SMOOTH_FACTOR - 1)) + + (pstatus->rx_mimo_signalquality[n_stream] * 1)) / + (RX_SMOOTH_FACTOR); + } + } +} + +void rtl_process_phyinfo(struct ieee80211_hw *hw, u8 *buffer, + struct rtl_stats *pstatus) +{ + + if (!pstatus->b_packet_matchbssid) + return; + + rtl_process_ui_rssi(hw, pstatus); + rtl_process_pwdb(hw, pstatus); + rtl_process_ui_link_quality(hw, pstatus); +} +//EXPORT_SYMBOL(rtl_process_phyinfo); --- linux-3.13.0.orig/drivers/staging/rtl8821ae/stats.h +++ linux-3.13.0/drivers/staging/rtl8821ae/stats.h @@ -0,0 +1,46 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#ifndef __RTL_STATS_H__ +#define __RTL_STATS_H__ + +#define PHY_RSSI_SLID_WIN_MAX 100 +#define PHY_LINKQUALITY_SLID_WIN_MAX 20 +#define PHY_BEACON_RSSI_SLID_WIN_MAX 10 + +/* Rx smooth factor */ +#define RX_SMOOTH_FACTOR 20 + +u8 rtl_query_rxpwrpercentage(char antpower); +u8 rtl_evm_db_to_percentage(char value); +long rtl_signal_scale_mapping(struct ieee80211_hw *hw, long currsig); +void rtl_process_phyinfo(struct ieee80211_hw *hw, u8 *buffer, + struct rtl_stats *pstatus); + +#endif --- linux-3.13.0.orig/drivers/staging/rtl8821ae/wifi.h +++ linux-3.13.0/drivers/staging/rtl8821ae/wifi.h @@ -0,0 +1,2532 @@ +/****************************************************************************** + * + * Copyright(c) 2009-2010 Realtek Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General 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 full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * wlanfae + * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, + * Hsinchu 300, Taiwan. + * + * Larry Finger + * + *****************************************************************************/ + +#ifndef __RTL_WIFI_H__ +#define __RTL_WIFI_H__ + +#include +#include +#include +#include +#include +#include +#include "debug.h" + + +#define RF_CHANGE_BY_INIT 0 +#define RF_CHANGE_BY_IPS BIT(28) +#define RF_CHANGE_BY_PS BIT(29) +#define RF_CHANGE_BY_HW BIT(30) +#define RF_CHANGE_BY_SW BIT(31) + +#define IQK_ADDA_REG_NUM 16 +#define IQK_MAC_REG_NUM 4 +#define IQK_THRESHOLD 8 + +#define MAX_KEY_LEN 61 +#define KEY_BUF_SIZE 5 + +/* QoS related. */ +/*aci: 0x00 Best Effort*/ +/*aci: 0x01 Background*/ +/*aci: 0x10 Video*/ +/*aci: 0x11 Voice*/ +/*Max: define total number.*/ +#define AC0_BE 0 +#define AC1_BK 1 +#define AC2_VI 2 +#define AC3_VO 3 +#define AC_MAX 4 +#define QOS_QUEUE_NUM 4 +#define RTL_MAC80211_NUM_QUEUE 5 + +#define QBSS_LOAD_SIZE 5 +#define MAX_WMMELE_LENGTH 64 + +#define TOTAL_CAM_ENTRY 32 + +/*slot time for 11g. */ +#define RTL_SLOT_TIME_9 9 +#define RTL_SLOT_TIME_20 20 + +/*related with tcp/ip. */ +/*if_ehther.h*/ +#define ETH_P_PAE 0x888E /*Port Access Entity + *(IEEE 802.1X) */ +#define ETH_P_IP 0x0800 /*Internet Protocol packet */ +#define ETH_P_ARP 0x0806 /*Address Resolution packet */ +#define SNAP_SIZE 6 +#define PROTOC_TYPE_SIZE 2 + +/*related with 802.11 frame*/ +#define MAC80211_3ADDR_LEN 24 +#define MAC80211_4ADDR_LEN 30 + +#define CHANNEL_MAX_NUMBER (14 + 24 + 21) /* 14 is the max + * channel number */ +#define CHANNEL_MAX_NUMBER_2G 14 +#define CHANNEL_MAX_NUMBER_5G 54 /* Please refer to + *"phy_GetChnlGroup8812A" and + * "Hal_ReadTxPowerInfo8812A"*/ +#define CHANNEL_MAX_NUMBER_5G_80M 7 +#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 +#define AVG_THERMAL_NUM 8 +#define AVG_THERMAL_NUM_92E 4 +#define AVG_THERMAL_NUM_88E 4 +#define AVG_THERMAL_NUM_8723BE 4 +#define MAX_TID_COUNT 9 +#define MAX_NUM_RATES 264 + +/*for 88E use*/ +/*It must always set to 4, otherwise read efuse table secquence will be wrong.*/ +#define MAX_TX_COUNT 4 +#define MAX_RF_PATH 4 +#define MAX_CHNL_GROUP_24G 6 +#define MAX_CHNL_GROUP_5G 14 + +/* BK, BE, VI, VO, HCCA, MANAGEMENT, COMMAND, HIGH, BEACON. */ +#define MAX_TX_QUEUE 9 + +#define TX_PWR_BY_RATE_NUM_BAND 2 +#define TX_PWR_BY_RATE_NUM_RF 4 +#define TX_PWR_BY_RATE_NUM_SECTION 12 +#define MAX_BASE_NUM_IN_PHY_REG_PG_24G 6 +#define MAX_BASE_NUM_IN_PHY_REG_PG_5G 5 + +#define DELTA_SWINGIDX_SIZE 30 +#define BAND_NUM 3 +/*Now, it's just for 8192ee + *not OK yet, keep it 0*/ +#define DMA_IS_64BIT 0 +#define RTL8192EE_SEG_NUM 1 /* 0:2 seg, 1: 4 seg, 2: 8 seg */ + +struct txpower_info_2g { + u8 index_cck_base[MAX_RF_PATH][MAX_CHNL_GROUP_24G]; + u8 index_bw40_base[MAX_RF_PATH][MAX_CHNL_GROUP_24G]; + /*If only one tx, only BW20 and OFDM are used.*/ + u8 cck_diff[MAX_RF_PATH][MAX_TX_COUNT]; + u8 ofdm_diff[MAX_RF_PATH][MAX_TX_COUNT]; + u8 bw20_diff[MAX_RF_PATH][MAX_TX_COUNT]; + u8 bw40_diff[MAX_RF_PATH][MAX_TX_COUNT]; +}; + +struct txpower_info_5g { + u8 index_bw40_base[MAX_RF_PATH][MAX_CHNL_GROUP_5G]; + /*If only one tx, only BW20, OFDM, BW80 and BW160 are used.*/ + u8 ofdm_diff[MAX_RF_PATH][MAX_TX_COUNT]; + u8 bw20_diff[MAX_RF_PATH][MAX_TX_COUNT]; + u8 bw40_diff[MAX_RF_PATH][MAX_TX_COUNT]; + u8 bw80_diff[MAX_RF_PATH][MAX_TX_COUNT]; + u8 bw160_diff[MAX_RF_PATH][MAX_TX_COUNT]; +}; + + +/* for early mode */ +#define EM_HDR_LEN 8 +#define FCS_LEN 4 + +#define MAX_VIRTUAL_MAC 1 + +enum rf_tx_num { + RF_1TX = 0, + RF_2TX, + RF_MAX_TX_NUM, + RF_TX_NUM_NONIMPLEMENT, +}; + +enum rate_section { + CCK = 0, + OFDM, + HT_MCS0_MCS7, + HT_MCS8_MCS15, + VHT_1SSMCS0_1SSMCS9, + VHT_2SSMCS0_2SSMCS9, +}; + +enum intf_type { + INTF_PCI = 0, + INTF_USB = 1, +}; + +enum radio_path { + RF90_PATH_A = 0, + RF90_PATH_B = 1, + RF90_PATH_C = 2, + RF90_PATH_D = 3, +}; + +enum rt_eeprom_type { + EEPROM_93C46, + EEPROM_93C56, + EEPROM_BOOT_EFUSE, +}; + +enum rtl_status { + RTL_STATUS_INTERFACE_START = 0, +}; + +enum hardware_type { + HARDWARE_TYPE_RTL8192E, + HARDWARE_TYPE_RTL8192U, + HARDWARE_TYPE_RTL8192SE, + HARDWARE_TYPE_RTL8192SU, + HARDWARE_TYPE_RTL8192CE, + HARDWARE_TYPE_RTL8192CU, + HARDWARE_TYPE_RTL8192DE, + HARDWARE_TYPE_RTL8192DU, + HARDWARE_TYPE_RTL8723AE, + HARDWARE_TYPE_RTL8188EE, + HARDWARE_TYPE_RTL8723BE, + HARDWARE_TYPE_RTL8192EE, + HARDWARE_TYPE_RTL8821AE, + HARDWARE_TYPE_RTL8812AE, + /* keep it last */ + HARDWARE_TYPE_NUM +}; + +enum scan_operation_backup_opt { + SCAN_OPT_BACKUP_BAND0=0, + SCAN_OPT_BACKUP_BAND1, + SCAN_OPT_RESTORE, + SCAN_OPT_MAX +}; + +/*RF state.*/ +enum rf_pwrstate { + ERFON, + ERFSLEEP, + ERFOFF +}; + +struct bb_reg_def { + u32 rfintfs; + u32 rfintfi; + u32 rfintfo; + u32 rfintfe; + u32 rf3wire_offset; + u32 rflssi_select; + u32 rftxgain_stage; + u32 rfhssi_para1; + u32 rfhssi_para2; + u32 rfswitch_control; + u32 rfagc_control1; + u32 rfagc_control2; + u32 rfrxiq_imbalance; + u32 rfrx_afe; + u32 rftxiq_imbalance; + u32 rftx_afe; + u32 rflssi_readback; + u32 rflssi_readbackpi; +}; + +enum io_type { + IO_CMD_PAUSE_BAND0_DM_BY_SCAN = 0, + IO_CMD_PAUSE_BAND1_DM_BY_SCAN = 1, + IO_CMD_RESUME_DM_BY_SCAN = 2, +}; + +enum hw_variables { + HW_VAR_ETHER_ADDR, + HW_VAR_MULTICAST_REG, + HW_VAR_BASIC_RATE, + HW_VAR_BSSID, + HW_VAR_MEDIA_STATUS, + HW_VAR_SECURITY_CONF, + HW_VAR_BEACON_INTERVAL, + HW_VAR_ATIM_WINDOW, + HW_VAR_LISTEN_INTERVAL, + HW_VAR_CS_COUNTER, + HW_VAR_DEFAULTKEY0, + HW_VAR_DEFAULTKEY1, + HW_VAR_DEFAULTKEY2, + HW_VAR_DEFAULTKEY3, + HW_VAR_SIFS, + HW_VAR_DIFS, + HW_VAR_EIFS, + HW_VAR_SLOT_TIME, + HW_VAR_ACK_PREAMBLE, + HW_VAR_CW_CONFIG, + HW_VAR_CW_VALUES, + HW_VAR_RATE_FALLBACK_CONTROL, + HW_VAR_CONTENTION_WINDOW, + HW_VAR_RETRY_COUNT, + HW_VAR_TR_SWITCH, + HW_VAR_COMMAND, + HW_VAR_WPA_CONFIG, + HW_VAR_AMPDU_MIN_SPACE, + HW_VAR_SHORTGI_DENSITY, + HW_VAR_AMPDU_FACTOR, + HW_VAR_MCS_RATE_AVAILABLE, + HW_VAR_AC_PARAM, + HW_VAR_ACM_CTRL, + HW_VAR_DIS_Req_Qsize, + HW_VAR_CCX_CHNL_LOAD, + HW_VAR_CCX_NOISE_HISTOGRAM, + HW_VAR_CCX_CLM_NHM, + HW_VAR_TxOPLimit, + HW_VAR_TURBO_MODE, + HW_VAR_RF_STATE, + HW_VAR_RF_OFF_BY_HW, + HW_VAR_BUS_SPEED, + HW_VAR_SET_DEV_POWER, + + HW_VAR_RCR, + HW_VAR_RATR_0, + HW_VAR_RRSR, + HW_VAR_CPU_RST, + HW_VAR_CECHK_BSSID, + HW_VAR_LBK_MODE, + HW_VAR_AES_11N_FIX, + HW_VAR_USB_RX_AGGR, + HW_VAR_USER_CONTROL_TURBO_MODE, + HW_VAR_RETRY_LIMIT, + HW_VAR_INIT_TX_RATE, + HW_VAR_TX_RATE_REG, + HW_VAR_EFUSE_USAGE, + HW_VAR_EFUSE_BYTES, + HW_VAR_AUTOLOAD_STATUS, + HW_VAR_RF_2R_DISABLE, + HW_VAR_SET_RPWM, + HW_VAR_H2C_FW_PWRMODE, + HW_VAR_H2C_FW_JOINBSSRPT, + HW_VAR_H2C_FW_MEDIASTATUSRPT, + HW_VAR_H2C_FW_P2P_PS_OFFLOAD, + HW_VAR_FW_PSMODE_STATUS, + HW_VAR_RESUME_CLK_ON, + HW_VAR_FW_LPS_ACTION, + HW_VAR_1X1_RECV_COMBINE, + HW_VAR_STOP_SEND_BEACON, + HW_VAR_TSF_TIMER, + HW_VAR_IO_CMD, + + HW_VAR_RF_RECOVERY, + HW_VAR_H2C_FW_UPDATE_GTK, + HW_VAR_WF_MASK, + HW_VAR_WF_CRC, + HW_VAR_WF_IS_MAC_ADDR, + HW_VAR_H2C_FW_OFFLOAD, + HW_VAR_RESET_WFCRC, + + HW_VAR_HANDLE_FW_C2H, + HW_VAR_DL_FW_RSVD_PAGE, + HW_VAR_AID, + HW_VAR_HW_SEQ_ENABLE, + HW_VAR_CORRECT_TSF, + HW_VAR_BCN_VALID, + HW_VAR_FWLPS_RF_ON, + HW_VAR_DUAL_TSF_RST, + HW_VAR_SWITCH_EPHY_WoWLAN, + HW_VAR_INT_MIGRATION, + HW_VAR_INT_AC, + HW_VAR_RF_TIMING, + + HAL_DEF_WOWLAN, + HW_VAR_MRC, + HW_VAR_KEEP_ALIVE, + HW_VAR_NAV_UPPER, +}; + +enum rt_media_status { + RT_MEDIA_DISCONNECT = 0, + RT_MEDIA_CONNECT = 1 +}; + +enum rt_oem_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, + RT_CID_819x_Netcore = 10, + RT_CID_Nettronix = 11, + RT_CID_DLINK = 12, + RT_CID_PRONET = 13, + RT_CID_COREGA = 14, + RT_CID_819x_ALPHA = 15, + RT_CID_819x_Sitecom = 16, + RT_CID_CCX = 17, + RT_CID_819x_Lenovo = 18, + RT_CID_819x_QMI = 19, + RT_CID_819x_Edimax_Belkin = 20, + RT_CID_819x_Sercomm_Belkin = 21, + RT_CID_819x_CAMEO1 = 22, + RT_CID_819x_MSI = 23, + RT_CID_819x_Acer = 24, + RT_CID_819x_HP = 27, + RT_CID_819x_CLEVO = 28, + RT_CID_819x_Arcadyan_Belkin = 29, + RT_CID_819x_SAMSUNG = 30, + RT_CID_819x_WNC_COREGA = 31, + RT_CID_819x_Foxcoon = 32, + RT_CID_819x_DELL = 33, + RT_CID_819x_PRONETS = 34, + RT_CID_819x_Edimax_ASUS = 35, + RT_CID_NETGEAR = 36, + RT_CID_PLANEX = 37, + RT_CID_CC_C = 38, +}; + +enum hw_descs { + HW_DESC_OWN, + HW_DESC_RXOWN, + HW_DESC_TX_NEXTDESC_ADDR, + HW_DESC_TXBUFF_ADDR, + HW_DESC_RXBUFF_ADDR, + HW_DESC_RXPKT_LEN, + HW_DESC_RXERO, + HW_DESC_RX_PREPARE, +}; + +enum prime_sc { + PRIME_CHNL_OFFSET_DONT_CARE = 0, + PRIME_CHNL_OFFSET_LOWER = 1, + PRIME_CHNL_OFFSET_UPPER = 2, +}; + +enum rf_type { + RF_1T1R = 0, + RF_1T2R = 1, + RF_2T2R = 2, + RF_2T2R_GREEN = 3, +}; + +enum ht_channel_width { + HT_CHANNEL_WIDTH_20 = 0, + HT_CHANNEL_WIDTH_20_40 = 1, + HT_CHANNEL_WIDTH_80 = 2, +}; + +/* Ref: 802.11i sepc D10.0 7.3.2.25.1 +Cipher Suites Encryption Algorithms */ +enum rt_enc_alg { + NO_ENCRYPTION = 0, + WEP40_ENCRYPTION = 1, + TKIP_ENCRYPTION = 2, + RSERVED_ENCRYPTION = 3, + AESCCMP_ENCRYPTION = 4, + WEP104_ENCRYPTION = 5, + AESCMAC_ENCRYPTION = 6, /*IEEE802.11w */ +}; + +enum rtl_hal_state { + _HAL_STATE_STOP = 0, + _HAL_STATE_START = 1, +}; + +enum rtl_var_map { + /*reg map */ + SYS_ISO_CTRL = 0, + SYS_FUNC_EN, + SYS_CLK, + MAC_RCR_AM, + MAC_RCR_AB, + MAC_RCR_ACRC32, + MAC_RCR_ACF, + MAC_RCR_AAP, + MAC_HIMR, + MAC_HIMRE, + MAC_HSISR, + + /*efuse map */ + EFUSE_TEST, + EFUSE_CTRL, + EFUSE_CLK, + EFUSE_CLK_CTRL, + EFUSE_PWC_EV12V, + EFUSE_FEN_ELDR, + EFUSE_LOADER_CLK_EN, + EFUSE_ANA8M, + EFUSE_HWSET_MAX_SIZE, + EFUSE_MAX_SECTION_MAP, + EFUSE_REAL_CONTENT_SIZE, + EFUSE_OOB_PROTECT_BYTES_LEN, + EFUSE_ACCESS, + /*CAM map */ + RWCAM, + WCAMI, + RCAMO, + CAMDBG, + SECR, + SEC_CAM_NONE, + SEC_CAM_WEP40, + SEC_CAM_TKIP, + SEC_CAM_AES, + SEC_CAM_WEP104, + + /*IMR map */ + RTL_IMR_BCNDMAINT6, /*Beacon DMA Interrupt 6 */ + RTL_IMR_BCNDMAINT5, /*Beacon DMA Interrupt 5 */ + RTL_IMR_BCNDMAINT4, /*Beacon DMA Interrupt 4 */ + RTL_IMR_BCNDMAINT3, /*Beacon DMA Interrupt 3 */ + RTL_IMR_BCNDMAINT2, /*Beacon DMA Interrupt 2 */ + RTL_IMR_BCNDMAINT1, /*Beacon DMA Interrupt 1 */ + RTL_IMR_BCNDOK8, /*Beacon Queue DMA OK Interrup 8 */ + RTL_IMR_BCNDOK7, /*Beacon Queue DMA OK Interrup 7 */ + RTL_IMR_BCNDOK6, /*Beacon Queue DMA OK Interrup 6 */ + RTL_IMR_BCNDOK5, /*Beacon Queue DMA OK Interrup 5 */ + RTL_IMR_BCNDOK4, /*Beacon Queue DMA OK Interrup 4 */ + RTL_IMR_BCNDOK3, /*Beacon Queue DMA OK Interrup 3 */ + RTL_IMR_BCNDOK2, /*Beacon Queue DMA OK Interrup 2 */ + RTL_IMR_BCNDOK1, /*Beacon Queue DMA OK Interrup 1 */ + RTL_IMR_TIMEOUT2, /*Timeout interrupt 2 */ + RTL_IMR_TIMEOUT1, /*Timeout interrupt 1 */ + RTL_IMR_TXFOVW, /*Transmit FIFO Overflow */ + RTL_IMR_PSTIMEOUT, /*Power save time out interrupt */ + RTL_IMR_BcnInt, /*Beacon DMA Interrupt 0 */ + RTL_IMR_RXFOVW, /*Receive FIFO Overflow */ + RTL_IMR_RDU, /*Receive Descriptor Unavailable */ + RTL_IMR_ATIMEND, /*For 92C,ATIM Window End Interrupt */ + RTL_IMR_BDOK, /*Beacon Queue DMA OK Interrup */ + RTL_IMR_HIGHDOK, /*High Queue DMA OK Interrupt */ + RTL_IMR_COMDOK, /*Command Queue DMA OK Interrupt*/ + RTL_IMR_TBDOK, /*Transmit Beacon OK interrup */ + RTL_IMR_MGNTDOK, /*Management Queue DMA OK Interrupt */ + RTL_IMR_TBDER, /*For 92C,Transmit Beacon Error Interrupt */ + RTL_IMR_BKDOK, /*AC_BK DMA OK Interrupt */ + RTL_IMR_BEDOK, /*AC_BE DMA OK Interrupt */ + RTL_IMR_VIDOK, /*AC_VI DMA OK Interrupt */ + RTL_IMR_VODOK, /*AC_VO DMA Interrupt */ + RTL_IMR_ROK, /*Receive DMA OK Interrupt */ + RTL_IMR_HSISR_IND, /*HSISR Interrupt*/ + RTL_IBSS_INT_MASKS, /*(RTL_IMR_BcnInt | RTL_IMR_TBDOK | + * RTL_IMR_TBDER) */ + RTL_IMR_C2HCMD, /*fw interrupt*/ + + /*CCK Rates, TxHT = 0 */ + RTL_RC_CCK_RATE1M, + RTL_RC_CCK_RATE2M, + RTL_RC_CCK_RATE5_5M, + RTL_RC_CCK_RATE11M, + + /*OFDM Rates, TxHT = 0 */ + RTL_RC_OFDM_RATE6M, + RTL_RC_OFDM_RATE9M, + RTL_RC_OFDM_RATE12M, + RTL_RC_OFDM_RATE18M, + RTL_RC_OFDM_RATE24M, + RTL_RC_OFDM_RATE36M, + RTL_RC_OFDM_RATE48M, + RTL_RC_OFDM_RATE54M, + + RTL_RC_HT_RATEMCS7, + RTL_RC_HT_RATEMCS15, + + /*keep it last */ + RTL_VAR_MAP_MAX, +}; + +/*Firmware PS mode for control LPS.*/ +enum _fw_ps_mode { + FW_PS_ACTIVE_MODE = 0, + FW_PS_MIN_MODE = 1, + FW_PS_MAX_MODE = 2, + FW_PS_DTIM_MODE = 3, + FW_PS_VOIP_MODE = 4, + FW_PS_UAPSD_WMM_MODE = 5, + FW_PS_UAPSD_MODE = 6, + FW_PS_IBSS_MODE = 7, + FW_PS_WWLAN_MODE = 8, + FW_PS_PM_Radio_Off = 9, + FW_PS_PM_Card_Disable = 10, +}; + +enum rt_psmode { + EACTIVE, /*Active/Continuous access. */ + EMAXPS, /*Max power save mode. */ + EFASTPS, /*Fast power save mode. */ + EAUTOPS, /*Auto power save mode. */ +}; + +/*LED related.*/ +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, +}; + +enum rtl_led_pin { + LED_PIN_GPIO0, + LED_PIN_LED0, + LED_PIN_LED1, + LED_PIN_LED2 +}; + +/*QoS related.*/ +/*acm implementation method.*/ +enum acm_method { + eAcmWay0_SwAndHw = 0, + eAcmWay1_HW = 1, + eAcmWay2_SW = 2, +}; + +enum macphy_mode { + SINGLEMAC_SINGLEPHY = 0, + DUALMAC_DUALPHY, + DUALMAC_SINGLEPHY, +}; + +enum band_type { + BAND_ON_2_4G = 0, + BAND_ON_5G, + BAND_ON_BOTH, + BANDMAX +}; + +/*aci/aifsn Field. +Ref: WMM spec 2.2.2: WME Parameter Element, p.12.*/ +union aci_aifsn { + u8 char_data; + + struct { + u8 aifsn:4; + u8 acm:1; + u8 aci:2; + u8 reserved:1; + } f; /* Field */ +}; + +/*mlme related.*/ +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_AC_5G = 0x40, + WIRELESS_MODE_AC_24G = 0x80 +}; + +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_5N = 8, + RATR_INX_WIRELESS_AC_24N = 9, +}; + +enum rtl_link_state { + MAC80211_NOLINK = 0, + MAC80211_LINKING = 1, + MAC80211_LINKED = 2, + MAC80211_LINKED_SCANNING = 3, +}; + +enum act_category { + ACT_CAT_QOS = 1, + ACT_CAT_DLS = 2, + ACT_CAT_BA = 3, + ACT_CAT_HT = 7, + ACT_CAT_WMM = 17, +}; + +enum ba_action { + ACT_ADDBAREQ = 0, + ACT_ADDBARSP = 1, + ACT_DELBA = 2, +}; + +enum rt_polarity_ctl { + RT_POLARITY_LOW_ACT = 0, + RT_POLARITY_HIGH_ACT = 1, +}; + + +struct octet_string { + u8 *octet; + u16 length; +}; + +struct rtl_hdr_3addr { + __le16 frame_ctl; + __le16 duration_id; + u8 addr1[ETH_ALEN]; + u8 addr2[ETH_ALEN]; + u8 addr3[ETH_ALEN]; + __le16 seq_ctl; + u8 payload[0]; +} __packed; + +struct rtl_info_element { + u8 id; + u8 len; + u8 data[0]; +} __packed; + +struct rtl_probe_rsp { + struct rtl_hdr_3addr header; + u32 time_stamp[2]; + __le16 beacon_interval; + __le16 capability; + /*SSID, supported rates, FH params, DS params, + CF params, IBSS params, TIM (if beacon), RSN */ + struct rtl_info_element info_element[0]; +} __packed; + +/*LED related.*/ +/*ledpin Identify how to implement this SW led.*/ +struct rtl_led { + void *hw; + enum rtl_led_pin ledpin; + bool b_ledon; +}; + +struct rtl_led_ctl { + bool bled_opendrain; + struct rtl_led sw_led0; + struct rtl_led sw_led1; +}; + +struct rtl_qos_parameters { + __le16 cw_min; + __le16 cw_max; + u8 aifs; + u8 flag; + __le16 tx_op; +} __packed; + +struct rt_smooth_data { + u32 elements[100]; /*array to store values */ + u32 index; /*index to current array to store */ + u32 total_num; /*num of valid elements */ + u32 total_val; /*sum of valid elements */ +}; + +struct rtl_ht_agg { + u16 txq_id; + u16 wait_for_ba; + u16 start_idx; + u64 bitmap; + u32 rate_n_flags; + u8 agg_state; + u8 rx_agg_state; +}; + +struct rtl_tid_data { + u16 seq_number; + struct rtl_ht_agg agg; +}; + +struct rssi_sta{ + long undecorated_smoothed_pwdb; +}; + +struct rtl_sta_info { + struct list_head list; + u8 ratr_index; + u8 wireless_mode; + u8 mimo_ps; + u8 mac_addr[6]; + struct rtl_tid_data tids[MAX_TID_COUNT]; + + /* just used for ap adhoc or mesh*/ + struct rssi_sta rssi_stat; +} __packed; + +#ifdef VIF_TODO +struct rtl_vif { + unsigned int id; + /* struct ieee80211_vif __rcu *vif; */ + struct ieee80211_vif *vif; +}; + +struct rtl_vif_info { + struct list_head list; + bool active; + unsigned int id; + struct sk_buff *beacon; + bool enable_beacon; +}; + +struct vif_priv { + struct list_head vif_list; + + /* interface mode settings */ + unsigned long vif_bitmap; + unsigned int vifs; + struct rtl_vif vif[MAX_VIRTUAL_MAC]; + + /* beaconing */ + spinlock_t beacon_lock; + unsigned int global_pretbtt; + unsigned int global_beacon_int; + /* struct rtl_vif_info __rcu *beacon_iter; */ + struct rtl_vif_info *beacon_iter; + unsigned int beacon_enabled; +}; +#endif + +struct false_alarm_statistics { + u32 cnt_parity_fail; + u32 cnt_rate_illegal; + u32 cnt_crc8_fail; + u32 cnt_mcs_fail; + u32 cnt_fast_fsync_fail; + u32 cnt_sb_search_fail; + u32 cnt_ofdm_fail; + u32 cnt_cck_fail; + u32 cnt_all; + u32 cnt_ofdm_cca; + u32 cnt_cck_cca; + u32 cnt_cca_all; + u32 cnt_bw_usc; + u32 cnt_bw_lsc; +}; + +struct init_gain { + u8 xaagccore1; + u8 xbagccore1; + u8 xcagccore1; + u8 xdagccore1; + u8 cca; + +}; + +struct wireless_stats { + unsigned long txbytesunicast; + unsigned long txbytesmulticast; + unsigned long txbytesbroadcast; + unsigned long rxbytesunicast; + + long rx_snr_db[4]; + /*Correct smoothed ss in Dbm, only used + in driver to report real power now. */ + long recv_signal_power; + long signal_quality; + long last_sigstrength_inpercent; + + u32 rssi_calculate_cnt; + u32 pwdb_all_cnt; + + /*Transformed, in dbm. Beautified signal + strength for UI, not correct. */ + long signal_strength; + + u8 rx_rssi_percentage[4]; + u8 rx_evm_dbm[4]; + u8 rx_evm_percentage[2]; + + u16 rx_cfo_short[4]; + u16 rx_cfo_tail[4]; + + struct rt_smooth_data ui_rssi; + struct rt_smooth_data ui_link_quality; +}; + +struct rate_adaptive { + u8 rate_adaptive_disabled; + u8 ratr_state; + u16 reserve; + + u32 high_rssi_thresh_for_ra; + u32 high2low_rssi_thresh_for_ra; + u8 low2high_rssi_thresh_for_ra; + u32 low_rssi_thresh_for_ra; + u32 upper_rssi_threshold_ratr; + u32 middleupper_rssi_threshold_ratr; + u32 middle_rssi_threshold_ratr; + u32 middlelow_rssi_threshold_ratr; + u32 low_rssi_threshold_ratr; + u32 ultralow_rssi_threshold_ratr; + u32 low_rssi_threshold_ratr_40m; + u32 low_rssi_threshold_ratr_20m; + u8 ping_rssi_enable; + u32 ping_rssi_ratr; + u32 ping_rssi_thresh_for_ra; + u32 last_ratr; + u8 pre_ratr_state; + u8 ldpc_thres; + bool use_ldpc; + bool lower_rts_rate; + bool is_special_data; +}; + +struct regd_pair_mapping { + u16 reg_dmnenum; + u16 reg_5ghz_ctl; + u16 reg_2ghz_ctl; +}; + +struct dynamic_primary_cca{ + u8 pricca_flag; + u8 intf_flag; + u8 intf_type; + u8 dup_rts_flag; + u8 monitor_flag; + u8 ch_offset; + u8 mf_state; +}; + +struct rtl_regulatory { + char alpha2[2]; + u16 country_code; + u16 max_power_level; + u32 tp_scale; + u16 current_rd; + u16 current_rd_ext; + int16_t power_limit; + struct regd_pair_mapping *regpair; +}; + +struct rtl_rfkill { + bool rfkill_state; /*0 is off, 1 is on */ +}; + +/*for P2P PS**/ +#define P2P_MAX_NOA_NUM 2 + +enum p2p_role { + P2P_ROLE_DISABLE = 0, + P2P_ROLE_DEVICE = 1, + P2P_ROLE_CLIENT = 2, + P2P_ROLE_GO = 3 +}; + +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 +}; + +struct rtl_p2p_ps_info { + 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. */ + /* Client traffic window. A period of time in TU after TBTT. */ + u8 ctwindow; + u8 opp_ps; /* opportunistic power save. */ + u8 noa_num; /* number of NoA descriptor in P2P IE. */ + /* Count for owner, Type of client. */ + u8 noa_count_type[P2P_MAX_NOA_NUM]; + /* Max duration for owner, preferred or + * min acceptable duration for client. */ + u32 noa_duration[P2P_MAX_NOA_NUM]; + /* Length of interval for owner, preferred or + * max acceptable interval of client. */ + u32 noa_interval[P2P_MAX_NOA_NUM]; + /* schedule expressed in terms of the lower 4 bytes of the TSF timer. */ + u32 noa_start_time[P2P_MAX_NOA_NUM]; +}; + + struct p2p_ps_offload_t { + u8 Offload_En:1; + u8 role:1; /* 1: Owner, 0: Client */ + u8 CTWindow_En:1; + u8 NoA0_En:1; + u8 NoA1_En:1; + u8 AllStaSleep:1; + u8 discovery:1; + u8 reserved:1; +}; + +#define IQK_MATRIX_REG_NUM 8 +#define IQK_MATRIX_SETTINGS_NUM (14+24+21) // Channels_2_4G_NUM + Channels_5G_20M_NUM + Channels_5G +struct iqk_matrix_regs { + bool b_iqk_done; + long value[1][IQK_MATRIX_REG_NUM]; +}; + +struct rtl_phy { + struct bb_reg_def phyreg_def[4]; /*Radio A/B/C/D */ + struct init_gain initgain_backup; + enum io_type current_io_type; + + u8 rf_mode; + u8 rf_type; + u8 current_chan_bw; + u8 set_bwmode_inprogress; + u8 sw_chnl_inprogress; + u8 sw_chnl_stage; + u8 sw_chnl_step; + u8 current_channel; + u8 h2c_box_num; + u8 set_io_inprogress; + u8 lck_inprogress; + + /* record for power tracking */ + s32 reg_e94; + s32 reg_e9c; + s32 reg_ea4; + s32 reg_eac; + s32 reg_eb4; + s32 reg_ebc; + s32 reg_ec4; + s32 reg_ecc; + u8 rfpienable; + u8 reserve_0; + u16 reserve_1; + u32 reg_c04, reg_c08, reg_874; + u32 adda_backup[16]; + u32 iqk_mac_backup[IQK_MAC_REG_NUM]; + u32 iqk_bb_backup[10]; + bool iqk_initialized; + + bool rfpath_rx_enable[MAX_RF_PATH]; + /*Jaguar*/ + u8 reg_837; + /* Dul mac */ + bool b_need_iqk; + struct iqk_matrix_regs iqk_matrix_regsetting[IQK_MATRIX_SETTINGS_NUM]; + + bool b_rfpi_enable; + + bool b_iqk_in_progress; + + u8 pwrgroup_cnt; + u8 bcck_high_power; + /* this is for 88E & 8723A */ + u32 mcs_txpwrlevel_origoffset[MAX_PG_GROUP][16]; + /* this is for 92EE */ + u32 tx_power_by_rate_offset[TX_PWR_BY_RATE_NUM_BAND] + [TX_PWR_BY_RATE_NUM_RF] + [TX_PWR_BY_RATE_NUM_RF] + [TX_PWR_BY_RATE_NUM_SECTION]; + u8 txpwr_by_rate_base_24g[TX_PWR_BY_RATE_NUM_RF] + [TX_PWR_BY_RATE_NUM_RF] + [MAX_BASE_NUM_IN_PHY_REG_PG_24G]; + + u8 txpwr_by_rate_base_5g[TX_PWR_BY_RATE_NUM_RF] + [TX_PWR_BY_RATE_NUM_RF] + [MAX_BASE_NUM_IN_PHY_REG_PG_5G]; + u8 default_initialgain[4]; + + /* the current Tx power level */ + u8 cur_cck_txpwridx; + u8 cur_ofdm24g_txpwridx; + u8 cur_bw20_txpwridx; + u8 cur_bw40_txpwridx; + + u32 rfreg_chnlval[2]; + bool b_apk_done; + u32 reg_rf3c[2]; /* pathA / pathB */ + + u32 backup_rf_0x1a;/*92ee*/ + /* bfsync */ + u8 framesync; + u32 framesync_c34; + + u8 num_total_rfpath; + u16 rf_pathmap; + + u8 hw_rof_enable; /*Enable GPIO[9] as WL RF HW PDn source*/ + + enum rt_polarity_ctl polarity_ctl; +}; + +#define RTL_AGG_STOP 0 +#define RTL_AGG_PROGRESS 1 +#define RTL_AGG_START 2 +#define RTL_AGG_OPERATIONAL 3 +#define RTL_RX_AGG_START 1 +#define RTL_RX_AGG_STOP 0 + +struct rtl_priv; +struct rtl_io { + struct device *dev; + + /*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 */ + + void (*write8_async) (struct rtl_priv * rtlpriv, u32 addr, u8 val); + void (*write16_async) (struct rtl_priv * rtlpriv, u32 addr, u16 val); + void (*write32_async) (struct rtl_priv * rtlpriv, u32 addr, u32 val); + + u8(*read8_sync) (struct rtl_priv * rtlpriv, u32 addr); + u16(*read16_sync) (struct rtl_priv * rtlpriv, u32 addr); + u32(*read32_sync) (struct rtl_priv * rtlpriv, u32 addr); + +}; + +struct rtl_mac { + u8 mac_addr[ETH_ALEN]; + u8 mac80211_registered; + u8 beacon_enabled; + + u32 tx_ss_num; + u32 rx_ss_num; + + struct ieee80211_supported_band bands[IEEE80211_NUM_BANDS]; + struct ieee80211_hw *hw; + struct ieee80211_vif *vif; + enum nl80211_iftype opmode; + + /*Probe Beacon management */ + enum rtl_link_state link_state; + + int n_channels; + int n_bitrates; + + bool offchan_deley; + u8 p2p; /*using p2p role*/ + bool p2p_in_use; + + /*filters */ + u32 rx_conf; + + bool act_scanning; + u8 cnt_after_linked; + bool skip_scan; + + /* early mode */ + /* skb wait queue */ + struct sk_buff_head skb_waitq[MAX_TID_COUNT]; + + /*RDG*/ + bool rdg_en; + + /*AP*/ + u8 bssid[6]; + u32 vendor; + u32 basic_rates; /* b/g rates */ + u8 ht_enable; + u8 bw_40; + u8 mode; /* wireless mode */ + u8 slot_time; + u8 short_preamble; + u8 use_cts_protect; + u8 cur_40_prime_sc; + u8 cur_40_prime_sc_bk; + u8 cur_80_prime_sc; + u64 tsf; + u8 retry_short; + u8 retry_long; + u16 assoc_id; + bool bhiddenssid; + + /*IBSS*/ + int beacon_interval; + + /*AMPDU*/ + u8 min_space_cfg; /*For Min spacing configurations */ + u8 max_mss_density; + u8 current_ampdu_factor; + u8 current_ampdu_density; + + /*QOS & EDCA */ + struct ieee80211_tx_queue_params edca_param[RTL_MAC80211_NUM_QUEUE]; + struct rtl_qos_parameters ac[AC_MAX]; +}; + +struct rtl_hal { + struct ieee80211_hw *hw; + + bool driver_is_goingto_unload; + bool up_first_time; + bool bfirst_init; + bool being_init_adapter; + bool b_bbrf_ready; + bool b_mac_func_enable; + bool b_pre_edcca_enable; + + enum intf_type interface; + u16 hw_type; /*92c or 92d or 92s and so on */ + u8 ic_class; + u8 oem_id; + u32 version; /*version of chip */ + u8 state; /*stop 0, start 1 */ + u8 boad_type; + + /*firmware */ + u32 fwsize; + u8 *pfirmware; + u16 fw_version; + u16 fw_subversion; + bool b_h2c_setinprogress; + u8 last_hmeboxnum; + bool bfw_ready; + + /*Reserve page start offset except beacon in TxQ. */ + u8 fw_rsvdpage_startoffset; + u8 h2c_txcmd_seq; + u8 current_ra_rate; + + /* FW Cmd IO related */ + u16 fwcmd_iomap; + u32 fwcmd_ioparam; + bool set_fwcmd_inprogress; + u8 current_fwcmd_io; + + bool bfw_clk_change_in_progress; + bool ballow_sw_to_change_hwclc; + u8 fw_ps_state; + struct p2p_ps_offload_t p2p_ps_offload; + /**/ + bool driver_going2unload; + + /*AMPDU init min space*/ + u8 minspace_cfg; /*For Min spacing configurations */ + + /* Dul mac */ + enum macphy_mode macphymode; + enum band_type current_bandtype; /* 0:2.4G, 1:5G */ + enum band_type current_bandtypebackup; + enum band_type bandset; + /* dual MAC 0--Mac0 1--Mac1 */ + u32 interfaceindex; + /* just for DulMac S3S4 */ + u8 macphyctl_reg; + bool b_earlymode_enable; + u8 max_earlymode_num; + /* Dul mac*/ + bool during_mac0init_radiob; + bool during_mac1init_radioa; + bool reloadtxpowerindex; + /* True if IMR or IQK have done + for 2.4G in scan progress */ + bool b_load_imrandiqk_setting_for2g; + + bool disable_amsdu_8k; + bool bmaster_of_dmsp; + bool bslave_of_dmsp; + + u16 rx_tag;/*for 92ee*/ + u8 rts_en; +}; + +struct rtl_security { + /*default 0 */ + bool use_sw_sec; + + bool being_setkey; + bool use_defaultkey; + /*Encryption Algorithm for Unicast Packet */ + enum rt_enc_alg pairwise_enc_algorithm; + /*Encryption Algorithm for Brocast/Multicast */ + enum rt_enc_alg group_enc_algorithm; + /*Cam Entry Bitmap */ + u32 hwsec_cam_bitmap; + u8 hwsec_cam_sta_addr[TOTAL_CAM_ENTRY][ETH_ALEN]; + /*local Key buffer, indx 0 is for + pairwise key 1-4 is for agoup key. */ + u8 key_buf[KEY_BUF_SIZE][MAX_KEY_LEN]; + u8 key_len[KEY_BUF_SIZE]; + + /*The pointer of Pairwise Key, + it always points to KeyBuf[4] */ + u8 *pairwise_key; +}; + +struct rtl_dig { + u8 dig_enable_flag; + u8 dig_ext_port_stage; + + u32 rssi_lowthresh; + u32 rssi_highthresh; + + u32 fa_lowthresh; + u32 fa_highthresh; + + u8 cursta_connectstate; + u8 presta_connectstate; + u8 curmultista_connectstate; + + u8 pre_igvalue; + u8 cur_igvalue; + + char backoff_val; + char backoff_val_range_max; + char backoff_val_range_min; + u8 rx_gain_range_max; + u8 rx_gain_range_min; + u8 rssi_val_min; + u8 min_undecorated_pwdb_for_dm; + long last_min_undecorated_pwdb_for_dm; + + u8 pre_cck_pd_state; + u8 cur_cck_pd_state; + + u8 large_fa_hit; + u8 forbidden_igi; + u32 recover_cnt; + +}; + +struct rtl_pstbl { + u8 pre_ccastate; + u8 cur_ccasate; + + u8 pre_rfstate; + u8 cur_rfstate; + + long rssi_val_min; + +}; + +#define ASSOCIATE_ENTRY_NUM 32+1 + +struct fast_ant_trainning{ + u8 bssid[6]; + u8 antsel_rx_keep_0; + u8 antsel_rx_keep_1; + u8 antsel_rx_keep_2; + u32 ant_sum_rssi[7]; + u32 ant_rssi_cnt[7]; + u32 ant_ave_rssi[7]; + u8 fat_state; + u32 train_idx; + u8 antsel_a[ASSOCIATE_ENTRY_NUM]; + u8 antsel_b[ASSOCIATE_ENTRY_NUM]; + u8 antsel_c[ASSOCIATE_ENTRY_NUM]; + u32 main_ant_sum[ASSOCIATE_ENTRY_NUM]; + u32 aux_ant_sum[ASSOCIATE_ENTRY_NUM]; + u32 main_ant_cnt[ASSOCIATE_ENTRY_NUM]; + u32 aux_ant_cnt[ASSOCIATE_ENTRY_NUM]; + u8 rx_idle_ant; + bool b_becomelinked; +}; + +struct dm_phy_dbg_info { + char rx_snrdb[4]; + u64 num_qry_phy_status; + u64 num_qry_phy_status_cck; + u64 num_qry_phy_status_ofdm; + u16 num_qry_beacon_pkt; + u16 num_non_be_pkt; + s32 rx_evm[4]; +}; + +struct rtl_dm { + /*PHY status for DM */ + long entry_min_undecoratedsmoothed_pwdb; + long undecorated_smoothed_pwdb; /*out dm */ + long entry_max_undecoratedsmoothed_pwdb; + bool b_dm_initialgain_enable; + bool bdynamic_txpower_enable; + bool bcurrent_turbo_edca; + bool bis_any_nonbepkts; /*out dm */ + bool bis_cur_rdlstate; + bool btxpower_trackinginit; + bool b_disable_framebursting; + bool b_cck_inch14; + bool btxpower_tracking; + bool b_useramask; + bool brfpath_rxenable[4]; + bool binform_fw_driverctrldm; + bool bcurrent_mrc_switch; + u8 txpowercount; + + u8 thermalvalue_rxgain; + u8 thermalvalue_iqk; + u8 thermalvalue_lck; + u8 thermalvalue; + u8 thermalvalue_avg[AVG_THERMAL_NUM]; + u8 thermalvalue_avg_index; + bool bdone_txpower; + u8 last_dtp_lvl; + u8 dynamic_txhighpower_lvl; /*Tx high power level */ + u8 dm_flag; /*Indicate if each dynamic mechanism's status. */ + u8 dm_type; + u8 txpower_track_control; + bool binterrupt_migration; + bool bdisable_tx_int; + char ofdm_index[MAX_RF_PATH]; + u8 default_ofdm_index; + u8 default_cck_index; + char cck_index; + char delta_power_index[MAX_RF_PATH]; + char delta_power_index_last[MAX_RF_PATH]; + char power_index_offset[MAX_RF_PATH]; + char aboslute_ofdm_swing_idx[MAX_RF_PATH]; + char remnant_ofdm_swing_idx[MAX_RF_PATH]; + char remnant_cck_idx; + bool modify_txagc_flag_path_a; + bool modify_txagc_flag_path_b; + + bool b_one_entry_only; + struct dm_phy_dbg_info dbginfo; + /* Dynamic ATC switch */ + + bool atc_status; + bool large_cfo_hit; + bool is_freeze; + int cfo_tail[2]; + int cfo_ave_pre; + int crystal_cap; + u8 cfo_threshold; + u32 packet_count; + u32 packet_count_pre; + u8 tx_rate; + + + /*88e tx power tracking*/ + u8 bb_swing_idx_ofdm[MAX_RF_PATH]; + u8 bb_swing_idx_ofdm_current; + u8 bb_swing_idx_ofdm_base[MAX_RF_PATH]; + bool bb_swing_flag_Ofdm; + u8 bb_swing_idx_cck; + u8 bb_swing_idx_cck_current; + u8 bb_swing_idx_cck_base; + bool bb_swing_flag_cck; + + char bb_swing_diff_2g; + char bb_swing_diff_5g; + + u8 delta_swing_table_idx_24gccka_p[DELTA_SWINGIDX_SIZE]; + u8 delta_swing_table_idx_24gccka_n[DELTA_SWINGIDX_SIZE]; + u8 delta_swing_table_idx_24gcckb_p[DELTA_SWINGIDX_SIZE]; + u8 delta_swing_table_idx_24gcckb_n[DELTA_SWINGIDX_SIZE]; + u8 delta_swing_table_idx_24ga_p[DELTA_SWINGIDX_SIZE]; + u8 delta_swing_table_idx_24ga_n[DELTA_SWINGIDX_SIZE]; + u8 delta_swing_table_idx_24gb_p[DELTA_SWINGIDX_SIZE]; + u8 delta_swing_table_idx_24gb_n[DELTA_SWINGIDX_SIZE]; + u8 delta_swing_table_idx_5ga_p[BAND_NUM][DELTA_SWINGIDX_SIZE]; + u8 delta_swing_table_idx_5ga_n[BAND_NUM][DELTA_SWINGIDX_SIZE]; + u8 delta_swing_table_idx_5gb_p[BAND_NUM][DELTA_SWINGIDX_SIZE]; + u8 delta_swing_table_idx_5gb_n[BAND_NUM][DELTA_SWINGIDX_SIZE]; + u8 delta_swing_table_idx_24ga_p_8188e[DELTA_SWINGIDX_SIZE]; + u8 delta_swing_table_idx_24ga_n_8188e[DELTA_SWINGIDX_SIZE]; + + + /* DMSP */ + bool supp_phymode_switch; + + /* DulMac */ + struct rtl_dig dm_digtable; + struct rtl_pstbl dm_pstable; + struct fast_ant_trainning fat_table; + + u8 resp_tx_path; + u8 path_sel; + u32 patha_sum; + u32 pathb_sum; + u32 patha_cnt; + u32 pathb_cnt; + + u8 pre_channel; + u8 *p_channel; + u8 linked_interval; + + u64 last_tx_ok_cnt; + u64 last_rx_ok_cnt; +}; + +#define EFUSE_MAX_LOGICAL_SIZE 256 + +struct rtl_efuse { + bool bautoLoad_ok; + bool bootfromefuse; + u16 max_physical_size; + + u8 efuse_map[2][EFUSE_MAX_LOGICAL_SIZE]; + u16 efuse_usedbytes; + u8 efuse_usedpercentage; +#ifdef EFUSE_REPG_WORKAROUND + bool efuse_re_pg_sec1flag; + u8 efuse_re_pg_data[8]; +#endif + + u8 autoload_failflag; + u8 autoload_status; + + short epromtype; + u16 eeprom_vid; + u16 eeprom_did; + u16 eeprom_svid; + u16 eeprom_smid; + u8 eeprom_oemid; + u16 eeprom_channelplan; + u8 eeprom_version; + + u8 dev_addr[6]; + u8 board_type; + u8 wowlan_enable; + u8 antenna_div_cfg; + u8 antenna_div_type; + + bool b_txpwr_fromeprom; + u8 eeprom_crystalcap; + u8 eeprom_tssi[2]; + u8 eeprom_tssi_5g[3][2]; /* for 5GL/5GM/5GH band. */ + u8 eeprom_pwrlimit_ht20[CHANNEL_GROUP_MAX]; + u8 eeprom_pwrlimit_ht40[CHANNEL_GROUP_MAX]; + u8 eeprom_chnlarea_txpwr_cck[2][CHANNEL_GROUP_MAX_2G]; + u8 eeprom_chnlarea_txpwr_ht40_1s[2][CHANNEL_GROUP_MAX]; + u8 eeprom_chnlarea_txpwr_ht40_2sdiif[2][CHANNEL_GROUP_MAX]; + + + u8 internal_pa_5g[2]; /* pathA / pathB */ + u8 eeprom_c9; + u8 eeprom_cc; + + /*For power group */ + u8 eeprom_pwrgroup[2][3]; + u8 pwrgroup_ht20[2][CHANNEL_MAX_NUMBER]; + u8 pwrgroup_ht40[2][CHANNEL_MAX_NUMBER]; + + u8 txpwrlevel_cck[MAX_RF_PATH][CHANNEL_MAX_NUMBER_2G]; + /*For HT 40MHZ pwr */ + u8 txpwrlevel_ht40_1s[MAX_RF_PATH][CHANNEL_MAX_NUMBER]; + /*For HT 40MHZ pwr */ + u8 txpwrlevel_ht40_2s[MAX_RF_PATH][CHANNEL_MAX_NUMBER]; + char txpwr_cckdiff[MAX_RF_PATH][MAX_TX_COUNT]; /*CCK_24G_Diff*/ + /*HT 20<->40 Pwr diff */ + char txpwr_ht20diff[MAX_RF_PATH][MAX_TX_COUNT]; /*BW20_24G_Diff*/ + char txpwr_ht40diff[MAX_RF_PATH][MAX_TX_COUNT];/*BW40_24G_Diff*/ + /*For HT<->legacy pwr diff */ + char txpwr_legacyhtdiff[MAX_RF_PATH][MAX_TX_COUNT];/*OFDM_24G_Diff*/ + + u8 txpwr_5g_bw40base[MAX_RF_PATH][CHANNEL_MAX_NUMBER]; + u8 txpwr_5g_bw80base[MAX_RF_PATH][CHANNEL_MAX_NUMBER_5G_80M]; + char txpwr_5g_ofdmdiff[MAX_RF_PATH][MAX_TX_COUNT]; + char txpwr_5g_bw20diff[MAX_RF_PATH][MAX_TX_COUNT]; + char txpwr_5g_bw40diff[MAX_RF_PATH][MAX_TX_COUNT]; + char txpwr_5g_bw80diff[MAX_RF_PATH][MAX_TX_COUNT]; + + u8 txpwr_safetyflag; /* Band edge enable flag */ + u16 eeprom_txpowerdiff; + u8 legacy_httxpowerdiff; /* Legacy to HT rate power diff */ + u8 antenna_txpwdiff[3]; + + u8 eeprom_regulatory; + u8 eeprom_thermalmeter; + u8 thermalmeter[2];/*ThermalMeter, index 0 for RFIC0, and 1 for RFIC1 */ + u16 tssi_13dbm; + u8 crystalcap; /* CrystalCap. */ + u8 delta_iqk; + u8 delta_lck; + + u8 legacy_ht_txpowerdiff; /*Legacy to HT rate power diff */ + bool b_apk_thermalmeterignore; + + bool b1x1_recvcombine; + bool b1ss_support; + + /*channel plan */ + u8 channel_plan; +}; + +struct rtl_ps_ctl { + bool pwrdomain_protect; + bool b_in_powersavemode; + bool rfchange_inprogress; + bool b_swrf_processing; + bool b_hwradiooff; + /* + * just for PCIE ASPM + * If it supports ASPM, Offset[560h] = 0x40, + * otherwise Offset[560h] = 0x00. + * */ + bool b_support_aspm; + bool b_support_backdoor; + + /*for LPS */ + enum rt_psmode dot11_psmode; /*Power save mode configured. */ + bool b_swctrl_lps; + bool b_fwctrl_lps; + u8 fwctrl_psmode; + /*For Fw control LPS mode */ + u8 b_reg_fwctrl_lps; + /*Record Fw PS mode status. */ + bool b_fw_current_inpsmode; + u8 reg_max_lps_awakeintvl; + bool report_linked; + bool b_low_power_enable;/*for 32k*/ + + /*for IPS */ + bool b_inactiveps; + + u32 rfoff_reason; + + /*RF OFF Level */ + u32 cur_ps_level; + u32 reg_rfps_level; + + /*just for PCIE ASPM */ + u8 const_amdpci_aspm; + + enum rf_pwrstate inactive_pwrstate; + enum rf_pwrstate rfpwr_state; /*cur power state */ + + /* for SW LPS*/ + bool sw_ps_enabled; + bool state; + bool state_inap; + bool multi_buffered; + u16 nullfunc_seq; + unsigned int dtim_counter; + unsigned int sleep_ms; + unsigned long last_sleep_jiffies; + unsigned long last_awake_jiffies; + unsigned long last_delaylps_stamp_jiffies; + unsigned long last_dtim; + unsigned long last_beacon; + unsigned long last_action; + unsigned long last_slept; + + /*For P2P PS */ + struct rtl_p2p_ps_info p2p_ps_info; + u8 pwr_mode; + u8 smart_ps; +}; + +struct rtl_stats { + u8 psaddr[ETH_ALEN]; + u32 mac_time[2]; + s8 rssi; + u8 signal; + u8 noise; + u8 rate; /* hw desc rate */ + u8 rawdata; + u8 received_channel; + u8 control; + u8 mask; + u8 freq; + u16 len; + u64 tsf; + u32 beacon_time; + u8 nic_type; + u16 length; + u8 signalquality; /*in 0-100 index. */ + /* + * Real power in dBm for this packet, + * no beautification and aggregation. + * */ + s32 recvsignalpower; + s8 rxpower; /*in dBm Translate from PWdB */ + u8 signalstrength; /*in 0-100 index. */ + u16 b_hwerror:1; + u16 b_crc:1; + u16 b_icv:1; + u16 b_shortpreamble:1; + u16 antenna:1; + u16 decrypted:1; + u16 wakeup:1; + u32 timestamp_low; + u32 timestamp_high; + bool b_shift; + + u8 rx_drvinfo_size; + u8 rx_bufshift; + bool b_isampdu; + bool b_isfirst_ampdu; + bool rx_is40Mhzpacket; + u32 rx_pwdb_all; + u8 rx_mimo_signalstrength[4]; /*in 0~100 index */ + s8 rx_mimo_signalquality[4]; + u8 rx_mimo_evm_dbm[4]; + u16 cfo_short[4]; /* per-path's Cfo_short */ + u16 cfo_tail[4]; + + u8 rx_pwr[4]; /* per-path's pwdb */ + u8 rx_snr[4]; /* per-path's SNR */ + u8 bandwidth; + u8 bt_coex_pwr_adjust; + bool b_packet_matchbssid; + bool b_is_cck; + bool b_is_ht; + bool b_packet_toself; + bool b_packet_beacon; /*for rssi */ + char cck_adc_pwdb[4]; /*for rx path selection */ + + u8 packet_report_type; + + u32 macid; + u8 wake_match; + u32 bt_rx_rssi_percentage; + u32 macid_valid_entry[2]; +}; + +struct rt_link_detect { + /* count for raoming */ + u32 bcn_rx_inperiod; + u32 roam_times; + + u32 num_tx_in4period[4]; + u32 num_rx_in4period[4]; + + u32 num_tx_inperiod; + u32 num_rx_inperiod; + + bool b_busytraffic; + bool b_tx_busy_traffic; + bool b_rx_busy_traffic; + bool b_higher_busytraffic; + bool b_higher_busyrxtraffic; + + u32 tidtx_in4period[MAX_TID_COUNT][4]; + u32 tidtx_inperiod[MAX_TID_COUNT]; + bool higher_busytxtraffic[MAX_TID_COUNT]; +}; + +struct rtl_tcb_desc { + u8 b_packet_bw:1; + u8 b_multicast:1; + u8 b_broadcast:1; + + u8 b_rts_stbc:1; + u8 b_rts_enable:1; + u8 b_cts_enable:1; + u8 b_rts_use_shortpreamble:1; + u8 b_rts_use_shortgi:1; + u8 rts_sc:1; + u8 b_rts_bw:1; + u8 rts_rate; + + u8 use_shortgi:1; + u8 use_shortpreamble:1; + u8 use_driver_rate:1; + u8 disable_ratefallback:1; + + u8 ratr_index; + u8 mac_id; + u8 hw_rate; + + u8 b_last_inipkt:1; + u8 b_cmd_or_init:1; + u8 queue_index; + + /* early mode */ + u8 empkt_num; + /* The max value by HW */ + u32 empkt_len[10]; + bool btx_enable_sw_calc_duration; + /* used for hal construct pkt, + * we may set desc when tx */ + u8 self_desc; +}; + +struct proxim { + bool proxim_on; + + void *proximity_priv; + int (*proxim_rx)(struct ieee80211_hw *hw, struct rtl_stats *status, + struct sk_buff *skb); + u8 (*proxim_get_var)(struct ieee80211_hw *hw, u8 type); +}; + +struct rtl_hal_ops { + int (*init_sw_vars) (struct ieee80211_hw * hw); + void (*deinit_sw_vars) (struct ieee80211_hw * hw); + void (*read_eeprom_info) (struct ieee80211_hw * hw); + void (*interrupt_recognized) (struct ieee80211_hw * hw, + u32 * p_inta, u32 * p_intb); + int (*hw_init) (struct ieee80211_hw * hw); + void (*hw_disable) (struct ieee80211_hw * hw); + void (*hw_suspend) (struct ieee80211_hw * hw); + void (*hw_resume) (struct ieee80211_hw * hw); + void (*enable_interrupt) (struct ieee80211_hw * hw); + void (*disable_interrupt) (struct ieee80211_hw * hw); + int (*set_network_type) (struct ieee80211_hw * hw, + enum nl80211_iftype type); + void (*set_chk_bssid)(struct ieee80211_hw *hw, + bool check_bssid); + void (*set_bw_mode) (struct ieee80211_hw * hw, + enum nl80211_channel_type ch_type); + u8(*switch_channel) (struct ieee80211_hw * hw); + void (*set_qos) (struct ieee80211_hw * hw, int aci); + void (*set_bcn_reg) (struct ieee80211_hw * hw); + void (*set_bcn_intv) (struct ieee80211_hw * hw); + void (*update_interrupt_mask) (struct ieee80211_hw * hw, + u32 add_msr, u32 rm_msr); + void (*get_hw_reg) (struct ieee80211_hw * hw, u8 variable, u8 * val); + void (*set_hw_reg) (struct ieee80211_hw * hw, u8 variable, u8 * val); + void (*update_rate_tbl) (struct ieee80211_hw * hw, + struct ieee80211_sta *sta, u8 rssi_level); + void (*pre_fill_tx_bd_desc) (struct ieee80211_hw *hw, u8 *tx_bd_desc, + u8 *desc, u8 queue_index, + struct sk_buff *skb, dma_addr_t addr); + u16 (*rx_desc_buff_remained_cnt) (struct ieee80211_hw *hw, + u8 queue_index); + void (*rx_check_dma_ok) (struct ieee80211_hw *hw, u8 *header_desc, + u8 queue_index); + void (*fill_tx_desc) (struct ieee80211_hw * hw, + struct ieee80211_hdr * hdr, + u8 * pdesc_tx, u8 * pbd_desc, + struct ieee80211_tx_info * info, +/**/ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,7,0)) +/**/ + struct ieee80211_sta *sta, +/**/ +#endif +/**/ + struct sk_buff * skb, u8 hw_queue, + struct rtl_tcb_desc *ptcb_desc); + void (*fill_tx_cmddesc) (struct ieee80211_hw * hw, u8 * pdesc, + bool b_firstseg, bool b_lastseg, + struct sk_buff * skb); + bool(*query_rx_desc) (struct ieee80211_hw * hw, + struct rtl_stats * status, + struct ieee80211_rx_status * rx_status, + u8 * pdesc, struct sk_buff * skb); + void (*set_channel_access) (struct ieee80211_hw * hw); + bool(*radio_onoff_checking) (struct ieee80211_hw * hw, u8 * valid); + void (*dm_watchdog) (struct ieee80211_hw * hw); + void (*scan_operation_backup) (struct ieee80211_hw * hw, u8 operation); + bool(*set_rf_power_state) (struct ieee80211_hw * hw, + enum rf_pwrstate rfpwr_state); + void (*led_control) (struct ieee80211_hw * hw, + enum led_ctl_mode ledaction); + void (*set_desc) (struct ieee80211_hw *hw, u8 * pdesc, bool istx, + u8 desc_name, u8 * val); + u32(*get_desc) (u8 * pdesc, bool istx, u8 desc_name); + bool (*is_tx_desc_closed) (struct ieee80211_hw *hw, + u8 hw_queue, u16 index); + void (*tx_polling) (struct ieee80211_hw * hw, u8 hw_queue); + void (*enable_hw_sec) (struct ieee80211_hw * hw); + void (*set_key) (struct ieee80211_hw * hw, u32 key_index, + u8 * p_macaddr, bool is_group, u8 enc_algo, + bool is_wepkey, bool clear_all); + void (*init_sw_leds) (struct ieee80211_hw * hw); + u32(*get_bbreg) (struct ieee80211_hw * hw, u32 regaddr, u32 bitmask); + void (*set_bbreg) (struct ieee80211_hw * hw, u32 regaddr, u32 bitmask, + u32 data); + u32(*get_rfreg) (struct ieee80211_hw * hw, enum radio_path rfpath, + u32 regaddr, u32 bitmask); + void (*set_rfreg) (struct ieee80211_hw * hw, enum radio_path rfpath, + u32 regaddr, u32 bitmask, u32 data); + void (*allow_all_destaddr)(struct ieee80211_hw *hw, + bool allow_all_da, bool write_into_reg); + void (*linked_set_reg) (struct ieee80211_hw * hw); + void (*check_switch_to_dmdp) (struct ieee80211_hw * hw); + void (*dualmac_easy_concurrent) (struct ieee80211_hw *hw); + void (*dualmac_switch_to_dmdp) (struct ieee80211_hw *hw); + void (*c2h_command_handle) (struct ieee80211_hw *hw); + void (*bt_wifi_media_status_notify) (struct ieee80211_hw *hw, bool mstate); + void (*bt_turn_off_bt_coexist_before_enter_lps) (struct ieee80211_hw *hw); + void (*fill_h2c_cmd) (struct ieee80211_hw *hw, u8 element_id, + u32 cmd_len, u8 *p_cmdbuffer); + bool (*get_btc_status) (void); + u32 (*rx_command_packet_handler)(struct ieee80211_hw *hw, struct rtl_stats status, struct sk_buff *skb); +}; + +struct rtl_intf_ops { + /*com */ + void (*read_efuse_byte)(struct ieee80211_hw *hw, u16 _offset, u8 *pbuf); + int (*adapter_start) (struct ieee80211_hw * hw); + void (*adapter_stop) (struct ieee80211_hw * hw); + bool (*check_buddy_priv)(struct ieee80211_hw *hw, + struct rtl_priv **buddy_priv); + +/**/ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0)) + int (*adapter_tx) (struct ieee80211_hw * hw, struct sk_buff * skb, + struct rtl_tcb_desc *ptcb_desc); +#else +/**/ + int (*adapter_tx) (struct ieee80211_hw *hw, + struct ieee80211_sta *sta, + struct sk_buff *skb, + struct rtl_tcb_desc *ptcb_desc); +/**/ +#endif +/**/ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)) + void (*flush)(struct ieee80211_hw *hw, u32 queues, bool drop); +#else + void (*flush)(struct ieee80211_hw *hw, bool drop); +#endif + int (*reset_trx_ring) (struct ieee80211_hw * hw); +/**/ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0)) + bool (*waitq_insert) (struct ieee80211_hw *hw, struct sk_buff *skb); +#else +/**/ + bool (*waitq_insert) (struct ieee80211_hw *hw, + struct ieee80211_sta *sta, + struct sk_buff *skb); +/**/ +#endif +/**/ + + /*pci */ + void (*disable_aspm) (struct ieee80211_hw * hw); + void (*enable_aspm) (struct ieee80211_hw * hw); + + /*usb */ +}; + +struct rtl_mod_params { + /* default: 0 = using hardware encryption */ + bool sw_crypto; + + /* default: 1 = using no linked power save */ + bool b_inactiveps; + + /* default: 1 = using linked sw power save */ + bool b_swctrl_lps; + + /* default: 1 = using linked fw power save */ + bool b_fwctrl_lps; +}; + +struct rtl_hal_cfg { + u8 bar_id; + bool write_readback; + char *name; + char *fw_name; + struct rtl_hal_ops *ops; + struct rtl_mod_params *mod_params; + + /*this map used for some registers or vars + defined int HAL but used in MAIN */ + u32 maps[RTL_VAR_MAP_MAX]; + +}; + +struct rtl_locks { + /* mutex */ + struct mutex conf_mutex; + + /*spin lock */ + spinlock_t ips_lock; + spinlock_t irq_th_lock; + spinlock_t h2c_lock; + spinlock_t rf_ps_lock; + spinlock_t rf_lock; + spinlock_t lps_lock; + spinlock_t waitq_lock; + spinlock_t entry_list_lock; + + /*FW clock change */ + spinlock_t fw_ps_lock; + + /*Dul mac*/ + spinlock_t cck_and_rw_pagea_lock; + + /*Easy concurrent*/ + spinlock_t check_sendpkt_lock; + + spinlock_t iqk_lock; +}; + +struct rtl_works { + struct ieee80211_hw *hw; + + /*timer */ + struct timer_list watchdog_timer; + struct timer_list dualmac_easyconcurrent_retrytimer; + struct timer_list fw_clockoff_timer; + struct timer_list fast_antenna_trainning_timer; + /*task */ + struct tasklet_struct irq_tasklet; + struct tasklet_struct irq_prepare_bcn_tasklet; + + /*work queue */ + struct workqueue_struct *rtl_wq; + struct delayed_work watchdog_wq; + struct delayed_work ips_nic_off_wq; + + /* For SW LPS */ + struct delayed_work ps_work; + struct delayed_work ps_rfon_wq; + struct delayed_work fwevt_wq; +}; + +struct rtl_debug { + u32 dbgp_type[DBGP_TYPE_MAX]; + u32 global_debuglevel; + u64 global_debugcomponents; + + /* add for proc debug */ + struct proc_dir_entry *proc_dir; + char proc_name[20]; +}; + +#define MIMO_PS_STATIC 0 +#define MIMO_PS_DYNAMIC 1 +#define MIMO_PS_NOLIMIT 3 + +struct rtl_dualmac_easy_concurrent_ctl { + enum band_type currentbandtype_backfordmdp; + bool bclose_bbandrf_for_dmsp; + bool bchange_to_dmdp; + bool bchange_to_dmsp; + bool bswitch_in_process; +}; + +struct rtl_dmsp_ctl { + bool bactivescan_for_slaveofdmsp; + bool bscan_for_anothermac_fordmsp; + bool bscan_for_itself_fordmsp; + bool bwritedig_for_anothermacofdmsp; + u32 curdigvalue_for_anothermacofdmsp; + bool bchangecckpdstate_for_anothermacofdmsp; + u8 curcckpdstate_for_anothermacofdmsp; + bool bchangetxhighpowerlvl_for_anothermacofdmsp; + u8 curtxhighlvl_for_anothermacofdmsp; + long rssivalmin_for_anothermacofdmsp; +}; + +struct rtl_global_var { + /* from this list we can get + * other adapter's rtl_priv */ + struct list_head glb_priv_list; + spinlock_t glb_list_lock; +}; + +struct rtl_btc_info { + u8 bt_type; + u8 btcoexist; + u8 ant_num; +}; + +struct rtl_btc_ops { + void (*btc_init_variables) (struct rtl_priv *rtlpriv); + void (*btc_init_hal_vars) (struct rtl_priv *rtlpriv); + void (*btc_init_hw_config) (struct rtl_priv *rtlpriv); + void (*btc_ips_notify) (struct rtl_priv *rtlpriv, u8 type); + void (*btc_scan_notify) (struct rtl_priv *rtlpriv, u8 scantype); + void (*btc_connect_notify) (struct rtl_priv *rtlpriv, u8 action); + void (*btc_mediastatus_notify) (struct rtl_priv *rtlpriv, + enum rt_media_status mstatus); + void (*btc_periodical) (struct rtl_priv *rtlpriv); + void (*btc_halt_notify) (void); + void (*btc_btinfo_notify) (struct rtl_priv *rtlpriv, + u8 * tmp_buf, u8 length); + bool (*btc_is_limited_dig) (struct rtl_priv *rtlpriv); + bool (*btc_is_disable_edca_turbo) (struct rtl_priv *rtlpriv); + bool (*btc_is_bt_disabled) (struct rtl_priv *rtlpriv); +}; + +struct rtl_bt_coexist { + struct rtl_btc_ops *btc_ops; + struct rtl_btc_info btc_info; +}; + + +struct rtl_priv { + struct list_head list; +#ifdef VIF_TODO + struct vif_priv vif_priv; +#endif + struct rtl_priv *buddy_priv; + struct rtl_global_var *glb_var; + struct rtl_dualmac_easy_concurrent_ctl easy_concurrent_ctl; + struct rtl_dmsp_ctl dmsp_ctl; + struct rtl_locks locks; + struct rtl_works works; + struct rtl_mac mac80211; + struct rtl_hal rtlhal; + struct rtl_regulatory regd; + struct rtl_rfkill rfkill; + struct rtl_io io; + struct rtl_phy phy; + struct rtl_dm dm; + struct rtl_security sec; + struct rtl_efuse efuse; + + struct rtl_ps_ctl psc; + struct rate_adaptive ra; + struct dynamic_primary_cca primarycca; + struct wireless_stats stats; + struct rt_link_detect link_info; + struct false_alarm_statistics falsealm_cnt; + + struct rtl_rate_priv *rate_priv; + + struct rtl_debug dbg; + + /* sta entry list for ap adhoc or mesh */ + struct list_head entry_list; + + /* + *hal_cfg : for diff cards + *intf_ops : for diff interrface usb/pcie + */ + struct rtl_hal_cfg *cfg; + struct rtl_intf_ops *intf_ops; + + /*this var will be set by set_bit, + and was used to indicate status of + interface or hardware */ + unsigned long status; + + /* intel Proximity, should be alloc mem + * in intel Proximity module and can only + * be used in intel Proximity mode */ + struct proxim proximity; + + /*for bt coexist use*/ + struct rtl_bt_coexist btcoexist; + + /* seperate 92ee from other ICs, + * 92ee use new trx flow. */ + bool use_new_trx_flow; + /*This must be the last item so + that it points to the data allocated + beyond this structure like: + rtl_pci_priv or rtl_usb_priv */ + u8 priv[0]; +}; + +#define rtl_priv(hw) (((struct rtl_priv *)(hw)->priv)) +#define rtl_mac(rtlpriv) (&((rtlpriv)->mac80211)) +#define rtl_hal(rtlpriv) (&((rtlpriv)->rtlhal)) +#define rtl_efuse(rtlpriv) (&((rtlpriv)->efuse)) +#define rtl_psc(rtlpriv) (&((rtlpriv)->psc)) +#define rtl_sec(rtlpriv) (&((rtlpriv)->sec)) +#define rtl_dm(rtlpriv) (&((rtlpriv)->dm)) +/*************************************** + Bluetooth Co-existance Related +****************************************/ + +enum bt_ant_num { + ANT_X2 = 0, + ANT_X1 = 1, +}; + +enum bt_co_type { + BT_2WIRE = 0, + BT_ISSC_3WIRE = 1, + BT_ACCEL = 2, + BT_CSR_BC4 = 3, + BT_CSR_BC8 = 4, + BT_RTL8756 = 5, + BT_RTL8723A = 6, + BT_RTL8821A = 7, + BT_RTL8723B = 8, + BT_RTL8192E = 9, + BT_RTL8812A = 11, +}; + +enum bt_total_ant_num{ + ANT_TOTAL_X2 = 0, + ANT_TOTAL_X1 = 1 +}; + +enum bt_cur_state { + BT_OFF = 0, + BT_ON = 1, +}; + +enum bt_service_type { + BT_SCO = 0, + BT_A2DP = 1, + BT_HID = 2, + BT_HID_IDLE = 3, + BT_SCAN = 4, + BT_IDLE = 5, + BT_OTHER_ACTION = 6, + BT_BUSY = 7, + BT_OTHERBUSY = 8, + BT_PAN = 9, +}; + +enum bt_radio_shared { + BT_RADIO_SHARED = 0, + BT_RADIO_INDIVIDUAL = 1, +}; + +struct bt_coexist_info { + + /* EEPROM BT info. */ + u8 eeprom_bt_coexist; + u8 eeprom_bt_type; + u8 eeprom_bt_ant_num; + u8 eeprom_bt_ant_isolation; + u8 eeprom_bt_radio_shared; + + u8 bt_coexistence; + u8 bt_ant_num; + u8 bt_coexist_type; + u8 bt_state; + u8 bt_cur_state; /* 0:on, 1:off */ + u8 bt_ant_isolation; /* 0:good, 1:bad */ + u8 bt_pape_ctrl; /* 0:SW, 1:SW/HW dynamic */ + u8 bt_service; + u8 bt_radio_shared_type; + u8 bt_rfreg_origin_1e; + u8 bt_rfreg_origin_1f; + u8 bt_rssi_state; + u32 ratio_tx; + u32 ratio_pri; + u32 bt_edca_ul; + u32 bt_edca_dl; + + bool b_init_set; + bool b_bt_busy_traffic; + bool b_bt_traffic_mode_set; + bool b_bt_non_traffic_mode_set; + + bool b_fw_coexist_all_off; + bool b_sw_coexist_all_off; + bool b_hw_coexist_all_off; + u32 current_state; + u32 previous_state; + u32 current_state_h; + u32 previous_state_h; + + u8 bt_pre_rssi_state; + u8 bt_pre_rssi_state1; + + u8 b_reg_bt_iso; + u8 b_reg_bt_sco; + bool b_balance_on; + u8 bt_active_zero_cnt; + bool b_cur_bt_disabled; + bool b_pre_bt_disabled; + + u8 bt_profile_case; + u8 bt_profile_action; + bool b_bt_busy; + bool b_hold_for_bt_operation; + u8 lps_counter; +}; + + +/**************************************** + mem access macro define start + Call endian free function when + 1. Read/write packet content. + 2. Before write integer to IO. + 3. After read integer from IO. +****************************************/ +/* Convert little data endian to host */ +#define EF1BYTE(_val) \ + ((u8)(_val)) +#define EF2BYTE(_val) \ + (le16_to_cpu(_val)) +#define EF4BYTE(_val) \ + (le32_to_cpu(_val)) + +/* Read data from memory */ +#define READEF1BYTE(_ptr) \ + EF1BYTE(*((u8 *)(_ptr))) +#define READEF2BYTE(_ptr) \ + EF2BYTE(*((u16 *)(_ptr))) +#define READEF4BYTE(_ptr) \ + EF4BYTE(*((u32 *)(_ptr))) + +/* Write 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))) +#define BIT_LEN_MASK_16(__bitlen) \ + (0xFFFF >> (16 - (__bitlen))) +#define BIT_LEN_MASK_8(__bitlen) \ + (0xFF >> (8 - (__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)) +#define BIT_OFFSET_LEN_MASK_16(__bitoffset, __bitlen) \ + (BIT_LEN_MASK_16(__bitlen) << (__bitoffset)) +#define BIT_OFFSET_LEN_MASK_8(__bitoffset, __bitlen) \ + (BIT_LEN_MASK_8(__bitlen) << (__bitoffset)) + +/*Description: +Return 4-byte value in host byte ordering from +4-byte pointer in little-endian system.*/ +#define LE_P4BYTE_TO_HOST_4BYTE(__pstart) \ + (EF4BYTE(*((u32 *)(__pstart)))) +#define LE_P2BYTE_TO_HOST_2BYTE(__pstart) \ + (EF2BYTE(*((u16 *)(__pstart)))) +#define LE_P1BYTE_TO_HOST_1BYTE(__pstart) \ + (EF1BYTE(*((u8 *)(__pstart)))) + +/*Description: +Translate subfield (continuous bits in little-endian) of 4-byte +value to host byte ordering.*/ +#define LE_BITS_TO_4BYTE(__pstart, __bitoffset, __bitlen) \ + ( \ + ( LE_P4BYTE_TO_HOST_4BYTE(__pstart) >> (__bitoffset) ) & \ + BIT_LEN_MASK_32(__bitlen) \ + ) +#define LE_BITS_TO_2BYTE(__pstart, __bitoffset, __bitlen) \ + ( \ + ( LE_P2BYTE_TO_HOST_2BYTE(__pstart) >> (__bitoffset) ) & \ + BIT_LEN_MASK_16(__bitlen) \ + ) +#define LE_BITS_TO_1BYTE(__pstart, __bitoffset, __bitlen) \ + ( \ + ( LE_P1BYTE_TO_HOST_1BYTE(__pstart) >> (__bitoffset) ) & \ + BIT_LEN_MASK_8(__bitlen) \ + ) + +/*Description: +Mask subfield (continuous bits in little-endian) of 4-byte value +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) ) \ + ) +#define LE_BITS_CLEARED_TO_2BYTE(__pstart, __bitoffset, __bitlen) \ + ( \ + LE_P2BYTE_TO_HOST_2BYTE(__pstart) & \ + ( ~BIT_OFFSET_LEN_MASK_16(__bitoffset, __bitlen) ) \ + ) +#define LE_BITS_CLEARED_TO_1BYTE(__pstart, __bitoffset, __bitlen) \ + ( \ + LE_P1BYTE_TO_HOST_1BYTE(__pstart) & \ + ( ~BIT_OFFSET_LEN_MASK_8(__bitoffset, __bitlen) ) \ + ) + +/*Description: +Set subfield of little-endian 4-byte value to specified value. */ +#define SET_BITS_TO_LE_4BYTE(__pstart, __bitoffset, __bitlen, __val) \ + *((u32 *)(__pstart)) = EF4BYTE \ + ( \ + LE_BITS_CLEARED_TO_4BYTE(__pstart, __bitoffset, __bitlen) | \ + ( (((u32)__val) & BIT_LEN_MASK_32(__bitlen)) << (__bitoffset) )\ + ); +#define SET_BITS_TO_LE_2BYTE(__pstart, __bitoffset, __bitlen, __val) \ + *((u16 *)(__pstart)) = EF2BYTE \ + ( \ + LE_BITS_CLEARED_TO_2BYTE(__pstart, __bitoffset, __bitlen) | \ + ( (((u16)__val) & BIT_LEN_MASK_16(__bitlen)) << (__bitoffset) )\ + ); +#define SET_BITS_TO_LE_1BYTE(__pstart, __bitoffset, __bitlen, __val) \ + *((u8 *)(__pstart)) = EF1BYTE \ + ( \ + LE_BITS_CLEARED_TO_1BYTE(__pstart, __bitoffset, __bitlen) | \ + ( (((u8)__val) & BIT_LEN_MASK_8(__bitlen)) << (__bitoffset) ) \ + ); + +#define N_BYTE_ALIGMENT(__value, __aligment) ((__aligment == 1) ? \ + (__value) : (((__value + __aligment - 1) / __aligment) * __aligment)) + +/**************************************** + mem access macro define end +****************************************/ + +#define byte(x,n) ((x >> (8 * n)) & 0xff) + +#define packet_get_type(_packet) (EF1BYTE((_packet).octet[0]) & 0xFC) +#define RTL_WATCH_DOG_TIME 2000 +#define MSECS(t) msecs_to_jiffies(t) +#define WLAN_FC_GET_VERS(fc) ((fc) & IEEE80211_FCTL_VERS) +#define WLAN_FC_GET_TYPE(fc) ((fc) & IEEE80211_FCTL_FTYPE) +#define WLAN_FC_GET_STYPE(fc) ((fc) & IEEE80211_FCTL_STYPE) +#define WLAN_FC_MORE_DATA(fc) ((fc) & IEEE80211_FCTL_MOREDATA) +#define SEQ_TO_SN(seq) (((seq) & IEEE80211_SCTL_SEQ) >> 4) +#define SN_TO_SEQ(ssn) (((ssn) << 4) & IEEE80211_SCTL_SEQ) +#define MAX_SN ((IEEE80211_SCTL_SEQ) >> 4) + +#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 */ +/*NIC halt, re-initialize hw parameters*/ +#define RT_RF_OFF_LEVL_HALT_NIC BIT(3) +#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 */ +/*Always enable ASPM and Clock Req in initialization.*/ +#define RT_RF_PS_LEVEL_ALWAYS_ASPM BIT(6) +/* no matter RFOFF or SLEEP we set PS_ASPM_LEVL*/ +#define RT_PS_LEVEL_ASPM BIT(7) +/*When LPS is on, disable 2R if no packet is received or transmittd.*/ +#define RT_RF_LPS_DISALBE_2R BIT(30) +#define RT_RF_LPS_LEVEL_ASPM BIT(31) /*LPS with ASPM */ +#define RT_IN_PS_LEVEL(ppsc, _ps_flg) \ + ((ppsc->cur_ps_level & _ps_flg) ? true : false) +#define RT_CLEAR_PS_LEVEL(ppsc, _ps_flg) \ + (ppsc->cur_ps_level &= (~(_ps_flg))) +#define RT_SET_PS_LEVEL(ppsc, _ps_flg) \ + (ppsc->cur_ps_level |= _ps_flg) + +#define container_of_dwork_rtl(x,y,z) \ + container_of(container_of(x, struct delayed_work, work), y, z) + +#define FILL_OCTET_STRING(_os,_octet,_len) \ + (_os).octet=(u8*)(_octet); \ + (_os).length=(_len); + +#define CP_MACADDR(des,src) \ + ((des)[0]=(src)[0],(des)[1]=(src)[1],\ + (des)[2]=(src)[2],(des)[3]=(src)[3],\ + (des)[4]=(src)[4],(des)[5]=(src)[5]) + +static inline u8 rtl_read_byte(struct rtl_priv *rtlpriv, u32 addr) +{ + return rtlpriv->io.read8_sync(rtlpriv, addr); +} + +static inline u16 rtl_read_word(struct rtl_priv *rtlpriv, u32 addr) +{ + return rtlpriv->io.read16_sync(rtlpriv, addr); +} + +static inline u32 rtl_read_dword(struct rtl_priv *rtlpriv, u32 addr) +{ + return rtlpriv->io.read32_sync(rtlpriv, addr); +} + +static inline void rtl_write_byte(struct rtl_priv *rtlpriv, u32 addr, u8 val8) +{ + rtlpriv->io.write8_async(rtlpriv, addr, val8); + + if (rtlpriv->cfg->write_readback) + rtlpriv->io.read8_sync(rtlpriv, addr); +} + +static inline void rtl_write_word(struct rtl_priv *rtlpriv, u32 addr, u16 val16) +{ + rtlpriv->io.write16_async(rtlpriv, addr, val16); + + if (rtlpriv->cfg->write_readback) + rtlpriv->io.read16_sync(rtlpriv, addr); +} + +static inline void rtl_write_dword(struct rtl_priv *rtlpriv, + u32 addr, u32 val32) +{ + rtlpriv->io.write32_async(rtlpriv, addr, val32); + + if (rtlpriv->cfg->write_readback) + rtlpriv->io.read32_sync(rtlpriv, addr); +} + +static inline u32 rtl_get_bbreg(struct ieee80211_hw *hw, + u32 regaddr, u32 bitmask) +{ + return ((struct rtl_priv *)(hw)->priv)->cfg->ops->get_bbreg(hw, + regaddr, + bitmask); +} + +static inline void rtl_set_bbreg(struct ieee80211_hw *hw, u32 regaddr, + u32 bitmask, u32 data) +{ + ((struct rtl_priv *)(hw)->priv)->cfg->ops->set_bbreg(hw, + regaddr, bitmask, + data); + +} + +static inline u32 rtl_get_rfreg(struct ieee80211_hw *hw, + enum radio_path rfpath, u32 regaddr, + u32 bitmask) +{ + return ((struct rtl_priv *)(hw)->priv)->cfg->ops->get_rfreg(hw, + rfpath, + regaddr, + bitmask); +} + +static inline void rtl_set_rfreg(struct ieee80211_hw *hw, + enum radio_path rfpath, u32 regaddr, + u32 bitmask, u32 data) +{ + ((struct rtl_priv *)(hw)->priv)->cfg->ops->set_rfreg(hw, + rfpath, regaddr, + bitmask, data); +} + +static inline bool is_hal_stop(struct rtl_hal *rtlhal) +{ + return (_HAL_STATE_STOP == rtlhal->state); +} + +static inline void set_hal_start(struct rtl_hal *rtlhal) +{ + rtlhal->state = _HAL_STATE_START; +} + +static inline void set_hal_stop(struct rtl_hal *rtlhal) +{ + rtlhal->state = _HAL_STATE_STOP; +} + +static inline u8 get_rf_type(struct rtl_phy *rtlphy) +{ + return rtlphy->rf_type; +} + +static inline struct ieee80211_hdr *rtl_get_hdr(struct sk_buff *skb) +{ + return (struct ieee80211_hdr *)(skb->data); +} + +static inline u16 rtl_get_fc(struct sk_buff *skb) +{ + return le16_to_cpu(rtl_get_hdr(skb)->frame_control); +} + +static inline u16 rtl_get_tid_h(struct ieee80211_hdr *hdr) +{ + return (ieee80211_get_qos_ctl(hdr))[0] & IEEE80211_QOS_CTL_TID_MASK; +} + +static inline u16 rtl_get_tid(struct sk_buff *skb) +{ + return rtl_get_tid_h(rtl_get_hdr(skb)); +} + +static inline struct ieee80211_sta *rtl_find_sta(struct ieee80211_hw *hw, + u8 *mac_addr) +{ + struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); + return ieee80211_find_sta(mac->vif, mac_addr); +} + +struct ieee80211_hw *rtl_pci_get_hw_pointer(void); +#endif --- linux-3.13.0.orig/drivers/staging/serqt_usb2/serqt_usb2.c +++ linux-3.13.0/drivers/staging/serqt_usb2/serqt_usb2.c @@ -725,7 +725,7 @@ goto startup_error; } - switch (serial->dev->descriptor.idProduct) { + switch (le16_to_cpu(serial->dev->descriptor.idProduct)) { case QUATECH_DSU100: case QUATECH_QSU100: case QUATECH_ESU100A: --- linux-3.13.0.orig/drivers/staging/speakup/fakekey.c +++ linux-3.13.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-3.13.0.orig/drivers/staging/speakup/main.c +++ linux-3.13.0/drivers/staging/speakup/main.c @@ -2220,6 +2220,7 @@ unregister_keyboard_notifier(&keyboard_notifier_block); unregister_vt_notifier(&vt_notifier_block); speakup_unregister_devsynth(); + speakup_cancel_paste(); del_timer(&cursor_timer); kthread_stop(speakup_task); speakup_task = NULL; --- linux-3.13.0.orig/drivers/staging/speakup/selection.c +++ linux-3.13.0/drivers/staging/speakup/selection.c @@ -4,6 +4,8 @@ #include #include /* for dev_warn */ #include +#include +#include #include "speakup.h" @@ -121,20 +123,24 @@ return 0; } -/* TODO: move to some helper thread, probably. That'd fix having to check for - * in_atomic(). */ -int speakup_paste_selection(struct tty_struct *tty) -{ +struct speakup_paste_work { + struct work_struct work; + struct tty_struct *tty; +}; + +static void __speakup_paste_selection(struct work_struct *work) +{ + struct speakup_paste_work *spw = + container_of(work, struct speakup_paste_work, work); + struct tty_struct *tty = xchg(&spw->tty, NULL); struct vc_data *vc = (struct vc_data *) tty->driver_data; int pasted = 0, count; DECLARE_WAITQUEUE(wait, current); + add_wait_queue(&vc->paste_wait, &wait); while (sel_buffer && sel_buffer_lth > pasted) { set_current_state(TASK_INTERRUPTIBLE); if (test_bit(TTY_THROTTLED, &tty->flags)) { - if (in_atomic()) - /* if we are in an interrupt handler, abort */ - break; schedule(); continue; } @@ -146,6 +152,26 @@ } remove_wait_queue(&vc->paste_wait, &wait); current->state = TASK_RUNNING; + tty_kref_put(tty); +} + +static struct speakup_paste_work speakup_paste_work = { + .work = __WORK_INITIALIZER(speakup_paste_work.work, + __speakup_paste_selection) +}; + +int speakup_paste_selection(struct tty_struct *tty) +{ + if (cmpxchg(&speakup_paste_work.tty, NULL, tty) != NULL) + return -EBUSY; + + tty_kref_get(tty); + schedule_work_on(WORK_CPU_UNBOUND, &speakup_paste_work.work); return 0; } +void speakup_cancel_paste(void) +{ + cancel_work_sync(&speakup_paste_work.work); + tty_kref_put(speakup_paste_work.tty); +} --- linux-3.13.0.orig/drivers/staging/speakup/speakup.h +++ linux-3.13.0/drivers/staging/speakup/speakup.h @@ -77,6 +77,7 @@ extern void speakup_clear_selection(void); extern int speakup_set_selection(struct tty_struct *tty); extern int speakup_paste_selection(struct tty_struct *tty); +extern void speakup_cancel_paste(void); extern void speakup_register_devsynth(void); extern void speakup_unregister_devsynth(void); extern void synth_write(const char *buf, size_t count); --- linux-3.13.0.orig/drivers/staging/usbip/usbip_common.c +++ linux-3.13.0/drivers/staging/usbip/usbip_common.c @@ -785,6 +785,17 @@ if (!(size > 0)) return 0; + if (size > urb->transfer_buffer_length) { + /* should not happen, probably malicious packet */ + if (ud->side == USBIP_STUB) { + usbip_event_add(ud, SDEV_EVENT_ERROR_TCP); + return 0; + } else { + usbip_event_add(ud, VDEV_EVENT_ERROR_TCP); + return -EPIPE; + } + } + ret = usbip_recv(ud->tcp_socket, urb->transfer_buffer, size); if (ret != size) { dev_err(&urb->dev->dev, "recv xbuf, %d\n", ret); --- linux-3.13.0.orig/drivers/staging/vt6655/bssdb.c +++ linux-3.13.0/drivers/staging/vt6655/bssdb.c @@ -1029,7 +1029,7 @@ pDevice->byERPFlag &= ~(WLAN_SET_ERP_USE_PROTECTION(1)); } - { + if (pDevice->eCommandState == WLAN_ASSOCIATE_WAIT) { pDevice->byReAssocCount++; if ((pDevice->byReAssocCount > 10) && (pDevice->bLinkPass != true)) { //10 sec timeout printk("Re-association timeout!!!\n"); --- linux-3.13.0.orig/drivers/staging/vt6655/device_main.c +++ linux-3.13.0/drivers/staging/vt6655/device_main.c @@ -1471,6 +1471,10 @@ // DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "pDevice->pCurrRD = %x, works = %d\n", pRD, works); if (works++ > 15) break; + + if (!pRD->pRDInfo->skb) + break; + if (device_receive_frame(pDevice, pRD)) { if (!device_alloc_rx_buf(pDevice, pRD)) { DBG_PRT(MSG_LEVEL_ERR, KERN_ERR @@ -2431,6 +2435,7 @@ unsigned char byData = 0; int ii = 0; // unsigned char byRSSI; + unsigned long flags; MACvReadISR(pDevice->PortOffset, &pDevice->dwIsr); @@ -2455,7 +2460,8 @@ handled = 1; MACvIntDisable(pDevice->PortOffset); - spin_lock_irq(&pDevice->lock); + + spin_lock_irqsave(&pDevice->lock, flags); //Make sure current page is 0 VNSvInPortB(pDevice->PortOffset + MAC_REG_PAGE1SEL, &byOrgPageSel); @@ -2696,7 +2702,8 @@ MACvSelectPage1(pDevice->PortOffset); } - spin_unlock_irq(&pDevice->lock); + spin_unlock_irqrestore(&pDevice->lock, flags); + MACvIntEnable(pDevice->PortOffset, IMR_MASK_VALUE); return IRQ_RETVAL(handled); --- linux-3.13.0.orig/drivers/staging/vt6655/rf.c +++ linux-3.13.0/drivers/staging/vt6655/rf.c @@ -936,6 +936,7 @@ break; case RATE_6M: case RATE_9M: + case RATE_12M: case RATE_18M: byPwr = pDevice->abyOFDMPwrTbl[uCH]; if (pDevice->byRFType == RF_UW2452) { --- linux-3.13.0.orig/drivers/staging/vt6656/baseband.c +++ linux-3.13.0/drivers/staging/vt6656/baseband.c @@ -1464,7 +1464,6 @@ if( bScanning ) { // need Max sensitivity //RSSI -69, -70,.... - if(pDevice->byBBPreEDIndex == 0) break; pDevice->byBBPreEDIndex = 0; ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x00); //CR201(0xC9) ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x30); //CR206(0xCE) @@ -1607,7 +1606,6 @@ if( bScanning ) { // need Max sensitivity //RSSI -69, -70, ... - if(pDevice->byBBPreEDIndex == 0) break; pDevice->byBBPreEDIndex = 0; ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x00); //CR201(0xC9) ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x24); //CR206(0xCE) @@ -1759,7 +1757,6 @@ case RF_VT3342A0: //RobertYu:20060627, testing table if( bScanning ) { // need Max sensitivity //RSSI -67, -68, ... - if(pDevice->byBBPreEDIndex == 0) break; pDevice->byBBPreEDIndex = 0; ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x00); //CR201(0xC9) ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x38); //CR206(0xCE) --- linux-3.13.0.orig/drivers/staging/vt6656/card.c +++ linux-3.13.0/drivers/staging/vt6656/card.c @@ -731,7 +731,7 @@ uBeaconInterval = wBeaconInterval * 1024; // Next TBTT = ((local_current_TSF / beacon_interval) + 1 ) * beacon_interval - uLowNextTBTT = ((qwTSF & 0xffffffffU) >> 10) << 10; + uLowNextTBTT = ((qwTSF & 0xffffffffULL) >> 10) << 10; uLowRemain = (uLowNextTBTT) % uBeaconInterval; uHighRemain = ((0x80000000 % uBeaconInterval) * 2 * (u32)(qwTSF >> 32)) % uBeaconInterval; --- linux-3.13.0.orig/drivers/staging/wlags49_h2/wl_internal.h +++ linux-3.13.0/drivers/staging/wlags49_h2/wl_internal.h @@ -1013,7 +1013,7 @@ /* Interrupt enable disable functions */ /********************************************************************/ -extern inline void wl_act_int_on(struct wl_private *lp) +static inline void wl_act_int_on(struct wl_private *lp) { /* * Only do something when the driver is handling @@ -1025,7 +1025,7 @@ } } -extern inline void wl_act_int_off(struct wl_private *lp) +static inline void wl_act_int_off(struct wl_private *lp) { /* * Only do something when the driver is handling --- linux-3.13.0.orig/drivers/staging/zram/zram_drv.c +++ linux-3.13.0/drivers/staging/zram/zram_drv.c @@ -430,7 +430,8 @@ } if (page_zero_filled(uncmem)) { - kunmap_atomic(user_mem); + if (user_mem) + kunmap_atomic(user_mem); /* Free memory associated with this sector now. */ zram_free_page(zram, index); @@ -552,14 +553,14 @@ size_t index; struct zram_meta *meta; - flush_work(&zram->free_work); - down_write(&zram->init_lock); if (!zram->init_done) { up_write(&zram->init_lock); return; } + flush_work(&zram->free_work); + meta = zram->meta; zram->init_done = 0; @@ -621,6 +622,8 @@ disksize = PAGE_ALIGN(disksize); meta = zram_meta_alloc(disksize); + if (!meta) + return -ENOMEM; down_write(&zram->init_lock); if (zram->init_done) { up_write(&zram->init_lock); --- linux-3.13.0.orig/drivers/target/iscsi/iscsi_target.c +++ linux-3.13.0/drivers/target/iscsi/iscsi_target.c @@ -52,7 +52,7 @@ static LIST_HEAD(g_tiqn_list); static LIST_HEAD(g_np_list); static DEFINE_SPINLOCK(tiqn_lock); -static DEFINE_SPINLOCK(np_lock); +static DEFINE_MUTEX(np_lock); static struct idr tiqn_idr; struct idr sess_idr; @@ -307,6 +307,9 @@ return false; } +/* + * Called with mutex np_lock held + */ static struct iscsi_np *iscsit_get_np( struct __kernel_sockaddr_storage *sockaddr, int network_transport) @@ -314,11 +317,10 @@ struct iscsi_np *np; bool match; - spin_lock_bh(&np_lock); list_for_each_entry(np, &g_np_list, np_list) { - spin_lock(&np->np_thread_lock); + spin_lock_bh(&np->np_thread_lock); if (np->np_thread_state != ISCSI_NP_THREAD_ACTIVE) { - spin_unlock(&np->np_thread_lock); + spin_unlock_bh(&np->np_thread_lock); continue; } @@ -330,13 +332,11 @@ * while iscsi_tpg_add_network_portal() is called. */ np->np_exports++; - spin_unlock(&np->np_thread_lock); - spin_unlock_bh(&np_lock); + spin_unlock_bh(&np->np_thread_lock); return np; } - spin_unlock(&np->np_thread_lock); + spin_unlock_bh(&np->np_thread_lock); } - spin_unlock_bh(&np_lock); return NULL; } @@ -350,16 +350,22 @@ struct sockaddr_in6 *sock_in6; struct iscsi_np *np; int ret; + + mutex_lock(&np_lock); + /* * Locate the existing struct iscsi_np if already active.. */ np = iscsit_get_np(sockaddr, network_transport); - if (np) + if (np) { + mutex_unlock(&np_lock); return np; + } np = kzalloc(sizeof(struct iscsi_np), GFP_KERNEL); if (!np) { pr_err("Unable to allocate memory for struct iscsi_np\n"); + mutex_unlock(&np_lock); return ERR_PTR(-ENOMEM); } @@ -382,6 +388,7 @@ ret = iscsi_target_setup_login_socket(np, sockaddr); if (ret != 0) { kfree(np); + mutex_unlock(&np_lock); return ERR_PTR(ret); } @@ -390,6 +397,7 @@ pr_err("Unable to create kthread: iscsi_np\n"); ret = PTR_ERR(np->np_thread); kfree(np); + mutex_unlock(&np_lock); return ERR_PTR(ret); } /* @@ -400,10 +408,10 @@ * point because iscsi_np has not been added to g_np_list yet. */ np->np_exports = 1; + np->np_thread_state = ISCSI_NP_THREAD_ACTIVE; - spin_lock_bh(&np_lock); list_add_tail(&np->np_list, &g_np_list); - spin_unlock_bh(&np_lock); + 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); @@ -470,9 +478,9 @@ np->np_transport->iscsit_free_np(np); - spin_lock_bh(&np_lock); + mutex_lock(&np_lock); list_del(&np->np_list); - spin_unlock_bh(&np_lock); + 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); @@ -491,6 +499,18 @@ return 0; } +static void iscsit_aborted_task(struct iscsi_conn *conn, struct iscsi_cmd *cmd) +{ + bool scsi_cmd = (cmd->iscsi_opcode == ISCSI_OP_SCSI_CMD); + + spin_lock_bh(&conn->cmd_lock); + if (!list_empty(&cmd->i_conn_node)) + list_del_init(&cmd->i_conn_node); + spin_unlock_bh(&conn->cmd_lock); + + __iscsit_free_cmd(cmd, scsi_cmd, true); +} + static struct iscsit_transport iscsi_target_transport = { .name = "iSCSI/TCP", .transport_type = ISCSI_TCP, @@ -505,11 +525,12 @@ .iscsit_response_queue = iscsit_response_queue, .iscsit_queue_data_in = iscsit_queue_rsp, .iscsit_queue_status = iscsit_queue_rsp, + .iscsit_aborted_task = iscsit_aborted_task, }; static int __init iscsi_target_init_module(void) { - int ret = 0; + int ret = 0, size; pr_debug("iSCSI-Target "ISCSIT_VERSION"\n"); @@ -518,6 +539,7 @@ pr_err("Unable to allocate memory for iscsit_global\n"); return -1; } + spin_lock_init(&iscsit_global->ts_bitmap_lock); mutex_init(&auth_id_lock); spin_lock_init(&sess_idr_lock); idr_init(&tiqn_idr); @@ -527,15 +549,11 @@ if (ret < 0) goto out; - ret = iscsi_thread_set_init(); - if (ret < 0) + size = BITS_TO_LONGS(ISCSIT_BITMAP_BITS) * sizeof(long); + iscsit_global->ts_bitmap = vzalloc(size); + if (!iscsit_global->ts_bitmap) { + pr_err("Unable to allocate iscsit_global->ts_bitmap\n"); goto configfs_out; - - if (iscsi_allocate_thread_sets(TARGET_THREAD_SET_COUNT) != - TARGET_THREAD_SET_COUNT) { - pr_err("iscsi_allocate_thread_sets() returned" - " unexpected value!\n"); - goto ts_out1; } lio_qr_cache = kmem_cache_create("lio_qr_cache", @@ -544,7 +562,7 @@ if (!lio_qr_cache) { pr_err("nable to kmem_cache_create() for" " lio_qr_cache\n"); - goto ts_out2; + goto bitmap_out; } lio_dr_cache = kmem_cache_create("lio_dr_cache", @@ -588,10 +606,8 @@ kmem_cache_destroy(lio_dr_cache); qr_out: kmem_cache_destroy(lio_qr_cache); -ts_out2: - iscsi_deallocate_thread_sets(); -ts_out1: - iscsi_thread_set_free(); +bitmap_out: + vfree(iscsit_global->ts_bitmap); configfs_out: iscsi_target_deregister_configfs(); out: @@ -601,8 +617,6 @@ static void __exit iscsi_target_cleanup_module(void) { - iscsi_deallocate_thread_sets(); - iscsi_thread_set_free(); iscsit_release_discovery_tpg(); iscsit_unregister_transport(&iscsi_target_transport); kmem_cache_destroy(lio_qr_cache); @@ -612,6 +626,7 @@ iscsi_target_deregister_configfs(); + vfree(iscsit_global->ts_bitmap); kfree(iscsit_global); } @@ -622,7 +637,7 @@ { struct iscsi_cmd *cmd; - cmd = iscsit_allocate_cmd(conn, GFP_KERNEL); + cmd = iscsit_allocate_cmd(conn, TASK_INTERRUPTIBLE); if (!cmd) return -1; @@ -777,7 +792,7 @@ spin_unlock_bh(&conn->cmd_lock); list_for_each_entry_safe(cmd, cmd_p, &ack_list, i_conn_node) { - list_del(&cmd->i_conn_node); + list_del_init(&cmd->i_conn_node); iscsit_free_cmd(cmd, false); } } @@ -944,7 +959,7 @@ if (cmd->targ_xfer_tag == 0xFFFFFFFF) cmd->targ_xfer_tag = conn->sess->targ_xfer_tag++; spin_unlock_bh(&conn->sess->ttt_lock); - } else if (hdr->flags & ISCSI_FLAG_CMD_WRITE) + } else cmd->targ_xfer_tag = 0xFFFFFFFF; cmd->cmd_sn = be32_to_cpu(hdr->cmdsn); cmd->exp_stat_sn = be32_to_cpu(hdr->exp_statsn); @@ -1156,7 +1171,7 @@ * traditional iSCSI block I/O. */ if (iscsit_allocate_iovecs(cmd) < 0) { - return iscsit_add_reject_cmd(cmd, + return iscsit_reject_cmd(cmd, ISCSI_REASON_BOOKMARK_NO_RESOURCES, buf); } immed_data = cmd->immediate_data; @@ -1281,7 +1296,7 @@ if (cmd->data_direction != DMA_TO_DEVICE) { pr_err("Command ITT: 0x%08x received DataOUT for a" " NON-WRITE command.\n", cmd->init_task_tag); - return iscsit_reject_cmd(cmd, ISCSI_REASON_PROTOCOL_ERROR, buf); + return iscsit_dump_data_payload(conn, payload_length, 1); } se_cmd = &cmd->se_cmd; iscsit_mod_dataout_timer(cmd); @@ -1556,7 +1571,9 @@ * Initiator is expecting a NopIN ping reply.. */ if (hdr->itt != RESERVED_ITT) { - BUG_ON(!cmd); + if (!cmd) + return iscsit_add_reject(conn, ISCSI_REASON_PROTOCOL_ERROR, + (unsigned char *)hdr); spin_lock_bh(&conn->cmd_lock); list_add_tail(&cmd->i_conn_node, &conn->conn_cmd_list); @@ -2460,6 +2477,7 @@ { struct iscsi_cmd *cmd; struct iscsi_conn *conn_p; + bool found = false; /* * Only send a Asynchronous Message on connections whos network @@ -2468,14 +2486,15 @@ list_for_each_entry(conn_p, &conn->sess->sess_conn_list, conn_list) { if (conn_p->conn_state == TARG_CONN_STATE_LOGGED_IN) { iscsit_inc_conn_usage_count(conn_p); + found = true; break; } } - if (!conn_p) + if (!found) return; - cmd = iscsit_allocate_cmd(conn_p, GFP_ATOMIC); + cmd = iscsit_allocate_cmd(conn_p, TASK_RUNNING); if (!cmd) { iscsit_dec_conn_usage_count(conn_p); return; @@ -3348,7 +3367,9 @@ #define SENDTARGETS_BUF_LIMIT 32768U -static int iscsit_build_sendtargets_response(struct iscsi_cmd *cmd) +static int +iscsit_build_sendtargets_response(struct iscsi_cmd *cmd, + enum iscsit_transport_type network_transport) { char *payload = NULL; struct iscsi_conn *conn = cmd->conn; @@ -3425,6 +3446,9 @@ struct iscsi_np *np = tpg_np->tpg_np; bool inaddr_any = iscsit_check_inaddr_any(np); + if (np->np_network_transport != network_transport) + continue; + if (!target_name_printed) { len = sprintf(buf, "TargetName=%s", tiqn->tiqn); @@ -3478,11 +3502,12 @@ int iscsit_build_text_rsp(struct iscsi_cmd *cmd, struct iscsi_conn *conn, - struct iscsi_text_rsp *hdr) + struct iscsi_text_rsp *hdr, + enum iscsit_transport_type network_transport) { int text_length, padding; - text_length = iscsit_build_sendtargets_response(cmd); + text_length = iscsit_build_sendtargets_response(cmd, network_transport); if (text_length < 0) return text_length; @@ -3520,7 +3545,7 @@ u32 tx_size = 0; int text_length, iov_count = 0, rc; - rc = iscsit_build_text_rsp(cmd, conn, hdr); + rc = iscsit_build_text_rsp(cmd, conn, hdr, ISCSI_TCP); if (rc < 0) return rc; @@ -3634,17 +3659,16 @@ void iscsit_thread_get_cpumask(struct iscsi_conn *conn) { - struct iscsi_thread_set *ts = conn->thread_set; int ord, cpu; /* - * thread_id is assigned from iscsit_global->ts_bitmap from - * within iscsi_thread_set.c:iscsi_allocate_thread_sets() + * bitmap_id is assigned from iscsit_global->ts_bitmap from + * within iscsit_start_kthreads() * - * Here we use thread_id to determine which CPU that this - * iSCSI connection's iscsi_thread_set will be scheduled to + * Here we use bitmap_id to determine which CPU that this + * iSCSI connection's RX/TX threads will be scheduled to * execute upon. */ - ord = ts->thread_id % cpumask_weight(cpu_online_mask); + ord = conn->bitmap_id % cpumask_weight(cpu_online_mask); for_each_online_cpu(cpu) { if (ord-- == 0) { cpumask_set_cpu(cpu, conn->conn_cpumask); @@ -3700,7 +3724,7 @@ break; case ISTATE_REMOVE: spin_lock_bh(&conn->cmd_lock); - list_del(&cmd->i_conn_node); + list_del_init(&cmd->i_conn_node); spin_unlock_bh(&conn->cmd_lock); iscsit_free_cmd(cmd, false); @@ -3836,7 +3860,7 @@ switch (state) { case ISTATE_SEND_LOGOUTRSP: if (!iscsit_logout_post_handler(cmd, conn)) - goto restart; + return -ECONNRESET; /* fall through */ case ISTATE_SEND_STATUS: case ISTATE_SEND_ASYNCMSG: @@ -3864,8 +3888,6 @@ err: return -1; -restart: - return -EAGAIN; } static int iscsit_handle_response_queue(struct iscsi_conn *conn) @@ -3892,21 +3914,13 @@ int iscsi_target_tx_thread(void *arg) { int ret = 0; - struct iscsi_conn *conn; - struct iscsi_thread_set *ts = arg; + struct iscsi_conn *conn = arg; /* * Allow ourselves to be interrupted by SIGINT so that a * connection recovery / failure event can be triggered externally. */ allow_signal(SIGINT); -restart: - conn = iscsi_tx_thread_pre_handler(ts); - if (!conn) - goto out; - - ret = 0; - while (!kthread_should_stop()) { /* * Ensure that both TX and RX per connection kthreads @@ -3915,11 +3929,9 @@ iscsit_thread_check_cpumask(conn, current, 1); wait_event_interruptible(conn->queues_wq, - !iscsit_conn_all_queues_empty(conn) || - ts->status == ISCSI_THREAD_SET_RESET); + !iscsit_conn_all_queues_empty(conn)); - if ((ts->status == ISCSI_THREAD_SET_RESET) || - signal_pending(current)) + if (signal_pending(current)) goto transport_err; get_immediate: @@ -3930,15 +3942,20 @@ ret = iscsit_handle_response_queue(conn); if (ret == 1) goto get_immediate; - else if (ret == -EAGAIN) - goto restart; + else if (ret == -ECONNRESET) + goto out; else if (ret < 0) goto transport_err; } transport_err: - iscsit_take_action_for_connection_exit(conn); - goto restart; + /* + * Avoid the normal connection failure code-path if this connection + * is still within LOGIN mode, and iscsi_np process context is + * responsible for cleaning up the early connection failure. + */ + if (conn->conn_state != TARG_CONN_STATE_IN_LOGIN) + iscsit_take_action_for_connection_exit(conn); out: return 0; } @@ -3951,7 +3968,7 @@ switch (hdr->opcode & ISCSI_OPCODE_MASK) { case ISCSI_OP_SCSI_CMD: - cmd = iscsit_allocate_cmd(conn, GFP_KERNEL); + cmd = iscsit_allocate_cmd(conn, TASK_INTERRUPTIBLE); if (!cmd) goto reject; @@ -3963,28 +3980,28 @@ case ISCSI_OP_NOOP_OUT: cmd = NULL; if (hdr->ttt == cpu_to_be32(0xFFFFFFFF)) { - cmd = iscsit_allocate_cmd(conn, GFP_KERNEL); + cmd = iscsit_allocate_cmd(conn, TASK_INTERRUPTIBLE); if (!cmd) goto reject; } ret = iscsit_handle_nop_out(conn, cmd, buf); break; case ISCSI_OP_SCSI_TMFUNC: - cmd = iscsit_allocate_cmd(conn, GFP_KERNEL); + cmd = iscsit_allocate_cmd(conn, TASK_INTERRUPTIBLE); if (!cmd) goto reject; ret = iscsit_handle_task_mgt_cmd(conn, cmd, buf); break; case ISCSI_OP_TEXT: - cmd = iscsit_allocate_cmd(conn, GFP_KERNEL); + cmd = iscsit_allocate_cmd(conn, TASK_INTERRUPTIBLE); if (!cmd) goto reject; ret = iscsit_handle_text_cmd(conn, cmd, buf); break; case ISCSI_OP_LOGOUT: - cmd = iscsit_allocate_cmd(conn, GFP_KERNEL); + cmd = iscsit_allocate_cmd(conn, TASK_INTERRUPTIBLE); if (!cmd) goto reject; @@ -4022,35 +4039,46 @@ 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; + int ret, rc; u8 buffer[ISCSI_HDR_LEN], opcode; u32 checksum = 0, digest = 0; - struct iscsi_conn *conn = NULL; - struct iscsi_thread_set *ts = arg; + struct iscsi_conn *conn = arg; struct kvec iov; /* * Allow ourselves to be interrupted by SIGINT so that a * connection recovery / failure event can be triggered externally. */ allow_signal(SIGINT); - -restart: - conn = iscsi_rx_thread_pre_handler(ts); - if (!conn) - goto out; + /* + * Wait for iscsi_post_login_handler() to complete before allowing + * incoming iscsi/tcp socket I/O, and/or failing the connection. + */ + rc = wait_for_completion_interruptible(&conn->rx_login_comp); + if (rc < 0 || iscsi_target_check_conn_state(conn)) + return 0; if (conn->conn_transport->transport_type == ISCSI_INFINIBAND) { struct completion comp; - int rc; init_completion(&comp); rc = wait_for_completion_interruptible(&comp); if (rc < 0) goto transport_err; - goto out; + goto transport_err; } while (!kthread_should_stop()) { @@ -4126,8 +4154,6 @@ if (!signal_pending(current)) atomic_set(&conn->transport_failed, 1); iscsit_take_action_for_connection_exit(conn); - goto restart; -out: return 0; } @@ -4143,7 +4169,7 @@ spin_lock_bh(&conn->cmd_lock); list_for_each_entry_safe(cmd, cmd_tmp, &conn->conn_cmd_list, i_conn_node) { - list_del(&cmd->i_conn_node); + list_del_init(&cmd->i_conn_node); spin_unlock_bh(&conn->cmd_lock); iscsit_increment_maxcmdsn(cmd, sess); @@ -4177,18 +4203,43 @@ pr_debug("Closing iSCSI connection CID %hu on SID:" " %u\n", conn->cid, sess->sid); /* - * Always up conn_logout_comp just in case the RX Thread is sleeping - * and the logout response never got sent because the connection - * failed. - */ - complete(&conn->conn_logout_comp); + * Always up conn_logout_comp for the traditional TCP case just in case + * the RX Thread in iscsi_target_rx_opcode() is sleeping and the logout + * response never got sent because the connection failed. + * + * However for iser-target, isert_wait4logout() is using conn_logout_comp + * to signal logout response TX interrupt completion. Go ahead and skip + * this for iser since isert_rx_opcode() does not wait on logout failure, + * and to avoid iscsi_conn pointer dereference in iser-target code. + */ + if (conn->conn_transport->transport_type == ISCSI_TCP) + complete(&conn->conn_logout_comp); + + if (!strcmp(current->comm, ISCSI_RX_THREAD_NAME)) { + if (conn->tx_thread && + cmpxchg(&conn->tx_thread_active, true, false)) { + send_sig(SIGINT, conn->tx_thread, 1); + kthread_stop(conn->tx_thread); + } + } else if (!strcmp(current->comm, ISCSI_TX_THREAD_NAME)) { + if (conn->rx_thread && + cmpxchg(&conn->rx_thread_active, true, false)) { + send_sig(SIGINT, conn->rx_thread, 1); + kthread_stop(conn->rx_thread); + } + } - iscsi_release_thread_set(conn); + spin_lock(&iscsit_global->ts_bitmap_lock); + bitmap_release_region(iscsit_global->ts_bitmap, conn->bitmap_id, + get_order(1)); + spin_unlock(&iscsit_global->ts_bitmap_lock); iscsit_stop_timers_for_cmds(conn); iscsit_stop_nopin_response_timer(conn); iscsit_stop_nopin_timer(conn); - iscsit_free_queue_reqs_for_conn(conn); + + if (conn->conn_transport->iscsit_wait_conn) + conn->conn_transport->iscsit_wait_conn(conn); /* * During Connection recovery drop unacknowledged out of order @@ -4206,6 +4257,7 @@ iscsit_clear_ooo_cmdsns_for_conn(conn); iscsit_release_commands_from_conn(conn); } + iscsit_free_queue_reqs_for_conn(conn); /* * Handle decrementing session or connection usage count if @@ -4459,15 +4511,24 @@ struct iscsi_conn *conn) { struct iscsi_session *sess = conn->sess; - - iscsi_set_thread_clear(conn, ISCSI_CLEAR_TX_THREAD); - iscsi_set_thread_set_signal(conn, ISCSI_SIGNAL_TX_THREAD); + int sleep = 1; + /* + * Traditional iscsi/tcp will invoke this logic from TX thread + * context during session logout, so clear tx_thread_active and + * sleep if iscsit_close_connection() has not already occured. + * + * Since iser-target invokes this logic from it's own workqueue, + * always sleep waiting for RX/TX thread shutdown to complete + * within iscsit_close_connection(). + */ + if (conn->conn_transport->transport_type == ISCSI_TCP) + sleep = cmpxchg(&conn->tx_thread_active, true, false); atomic_set(&conn->conn_logout_remove, 0); complete(&conn->conn_logout_comp); iscsit_dec_conn_usage_count(conn); - iscsit_stop_session(sess, 1, 1); + iscsit_stop_session(sess, sleep, sleep); iscsit_dec_session_usage_count(sess); target_put_session(sess->se_sess); } @@ -4475,13 +4536,15 @@ static void iscsit_logout_post_handler_samecid( struct iscsi_conn *conn) { - iscsi_set_thread_clear(conn, ISCSI_CLEAR_TX_THREAD); - iscsi_set_thread_set_signal(conn, ISCSI_SIGNAL_TX_THREAD); + int sleep = 1; + + if (conn->conn_transport->transport_type == ISCSI_TCP) + sleep = cmpxchg(&conn->tx_thread_active, true, false); atomic_set(&conn->conn_logout_remove, 0); complete(&conn->conn_logout_comp); - iscsit_cause_connection_reinstatement(conn, 1); + iscsit_cause_connection_reinstatement(conn, sleep); iscsit_dec_conn_usage_count(conn); } @@ -4491,6 +4554,7 @@ { struct iscsi_conn *l_conn; struct iscsi_session *sess = conn->sess; + bool conn_found = false; if (!sess) return; @@ -4499,12 +4563,13 @@ list_for_each_entry(l_conn, &sess->sess_conn_list, conn_list) { if (l_conn->cid == cid) { iscsit_inc_conn_usage_count(l_conn); + conn_found = true; break; } } spin_unlock_bh(&sess->conn_lock); - if (!l_conn) + if (!conn_found) return; if (l_conn->sock) @@ -4693,6 +4758,7 @@ struct iscsi_session *sess; struct se_portal_group *se_tpg = &tpg->tpg_se_tpg; struct se_session *se_sess, *se_sess_tmp; + LIST_HEAD(free_list); int session_count = 0; spin_lock_bh(&se_tpg->session_lock); @@ -4714,14 +4780,17 @@ } atomic_set(&sess->session_reinstatement, 1); spin_unlock(&sess->conn_lock); - spin_unlock_bh(&se_tpg->session_lock); - iscsit_free_session(sess); - spin_lock_bh(&se_tpg->session_lock); + list_move_tail(&se_sess->sess_list, &free_list); + } + spin_unlock_bh(&se_tpg->session_lock); + list_for_each_entry_safe(se_sess, se_sess_tmp, &free_list, sess_list) { + sess = (struct iscsi_session *)se_sess->fabric_sess_ptr; + + iscsit_free_session(sess); session_count++; } - spin_unlock_bh(&se_tpg->session_lock); pr_debug("Released %d iSCSI Session(s) from Target Portal" " Group: %hu\n", session_count, tpg->tpgt); --- linux-3.13.0.orig/drivers/target/iscsi/iscsi_target_auth.c +++ linux-3.13.0/drivers/target/iscsi/iscsi_target_auth.c @@ -314,6 +314,16 @@ goto out; } /* + * During mutual authentication, the CHAP_C generated by the + * initiator must not match the original CHAP_C generated by + * the target. + */ + if (!memcmp(challenge_binhex, chap->challenge, CHAP_CHALLENGE_LENGTH)) { + pr_err("initiator CHAP_C matches target CHAP_C, failing" + " login attempt\n"); + goto out; + } + /* * Generate CHAP_N and CHAP_R for mutual authentication. */ tfm = crypto_alloc_hash("md5", 0, CRYPTO_ALG_ASYNC); --- linux-3.13.0.orig/drivers/target/iscsi/iscsi_target_configfs.c +++ linux-3.13.0/drivers/target/iscsi/iscsi_target_configfs.c @@ -1815,6 +1815,13 @@ iscsit_add_cmd_to_response_queue(cmd, cmd->conn, cmd->i_state); } +static void lio_aborted_task(struct se_cmd *se_cmd) +{ + struct iscsi_cmd *cmd = container_of(se_cmd, struct iscsi_cmd, se_cmd); + + cmd->conn->conn_transport->iscsit_aborted_task(cmd->conn, cmd); +} + static char *lio_tpg_get_endpoint_wwn(struct se_portal_group *se_tpg) { struct iscsi_portal_group *tpg = se_tpg->se_tpg_fabric_ptr; @@ -1876,7 +1883,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. @@ -1884,19 +1892,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; } @@ -1999,6 +2020,7 @@ fabric->tf_ops.queue_data_in = &lio_queue_data_in; fabric->tf_ops.queue_status = &lio_queue_status; fabric->tf_ops.queue_tm_rsp = &lio_queue_tm_rsp; + fabric->tf_ops.aborted_task = &lio_aborted_task; /* * Setup function pointers for generic logic in target_core_fabric_configfs.c */ --- linux-3.13.0.orig/drivers/target/iscsi/iscsi_target_core.h +++ linux-3.13.0/drivers/target/iscsi/iscsi_target_core.h @@ -601,6 +601,12 @@ struct iscsi_session *sess; /* Pointer to thread_set in use for this conn's threads */ struct iscsi_thread_set *thread_set; + int bitmap_id; + int rx_thread_active; + struct task_struct *rx_thread; + struct completion rx_login_comp; + int tx_thread_active; + struct task_struct *tx_thread; /* list_head for session connection list */ struct list_head conn_list; } ____cacheline_aligned; @@ -868,10 +874,12 @@ /* Unique identifier used for the authentication daemon */ u32 auth_id; u32 inactive_ts; +#define ISCSIT_BITMAP_BITS 262144 /* Thread Set bitmap count */ int ts_bitmap_count; /* Thread Set bitmap pointer */ unsigned long *ts_bitmap; + spinlock_t ts_bitmap_lock; /* Used for iSCSI discovery session authentication */ struct iscsi_node_acl discovery_acl; struct iscsi_portal_group *discovery_tpg; --- linux-3.13.0.orig/drivers/target/iscsi/iscsi_target_erl0.c +++ linux-3.13.0/drivers/target/iscsi/iscsi_target_erl0.c @@ -864,7 +864,10 @@ } spin_unlock_bh(&conn->state_lock); - iscsi_thread_set_force_reinstatement(conn); + if (conn->tx_thread && conn->tx_thread_active) + send_sig(SIGINT, conn->tx_thread, 1); + if (conn->rx_thread && conn->rx_thread_active) + send_sig(SIGINT, conn->rx_thread, 1); sleep: wait_for_completion(&conn->conn_wait_rcfr_comp); @@ -889,10 +892,10 @@ return; } - if (iscsi_thread_set_force_reinstatement(conn) < 0) { - spin_unlock_bh(&conn->state_lock); - return; - } + if (conn->tx_thread && conn->tx_thread_active) + send_sig(SIGINT, conn->tx_thread, 1); + if (conn->rx_thread && conn->rx_thread_active) + send_sig(SIGINT, conn->rx_thread, 1); atomic_set(&conn->connection_reinstatement, 1); if (!sleep) { --- linux-3.13.0.orig/drivers/target/iscsi/iscsi_target_erl2.c +++ linux-3.13.0/drivers/target/iscsi/iscsi_target_erl2.c @@ -138,7 +138,7 @@ list_for_each_entry_safe(cmd, cmd_tmp, &cr->conn_recovery_cmd_list, i_conn_node) { - list_del(&cmd->i_conn_node); + list_del_init(&cmd->i_conn_node); cmd->conn = NULL; spin_unlock(&cr->conn_recovery_cmd_lock); iscsit_free_cmd(cmd, true); @@ -160,7 +160,7 @@ list_for_each_entry_safe(cmd, cmd_tmp, &cr->conn_recovery_cmd_list, i_conn_node) { - list_del(&cmd->i_conn_node); + list_del_init(&cmd->i_conn_node); cmd->conn = NULL; spin_unlock(&cr->conn_recovery_cmd_lock); iscsit_free_cmd(cmd, true); @@ -216,7 +216,7 @@ } cr = cmd->cr; - list_del(&cmd->i_conn_node); + list_del_init(&cmd->i_conn_node); return --cr->cmd_count; } @@ -297,7 +297,7 @@ if (!(cmd->cmd_flags & ICF_OOO_CMDSN)) continue; - list_del(&cmd->i_conn_node); + list_del_init(&cmd->i_conn_node); spin_unlock_bh(&conn->cmd_lock); iscsit_free_cmd(cmd, true); @@ -335,7 +335,7 @@ /* * Only perform connection recovery on ISCSI_OP_SCSI_CMD or * ISCSI_OP_NOOP_OUT opcodes. For all other opcodes call - * list_del(&cmd->i_conn_node); to release the command to the + * list_del_init(&cmd->i_conn_node); to release the command to the * session pool and remove it from the connection's list. * * Also stop the DataOUT timer, which will be restarted after @@ -351,7 +351,7 @@ " CID: %hu\n", cmd->iscsi_opcode, cmd->init_task_tag, cmd->cmd_sn, conn->cid); - list_del(&cmd->i_conn_node); + list_del_init(&cmd->i_conn_node); spin_unlock_bh(&conn->cmd_lock); iscsit_free_cmd(cmd, true); spin_lock_bh(&conn->cmd_lock); @@ -371,7 +371,7 @@ */ if (!(cmd->cmd_flags & ICF_OOO_CMDSN) && !cmd->immediate_cmd && iscsi_sna_gte(cmd->cmd_sn, conn->sess->exp_cmd_sn)) { - list_del(&cmd->i_conn_node); + list_del_init(&cmd->i_conn_node); spin_unlock_bh(&conn->cmd_lock); iscsit_free_cmd(cmd, true); spin_lock_bh(&conn->cmd_lock); @@ -393,7 +393,7 @@ cmd->sess = conn->sess; - list_del(&cmd->i_conn_node); + list_del_init(&cmd->i_conn_node); spin_unlock_bh(&conn->cmd_lock); iscsit_free_all_datain_reqs(cmd); --- linux-3.13.0.orig/drivers/target/iscsi/iscsi_target_login.c +++ linux-3.13.0/drivers/target/iscsi/iscsi_target_login.c @@ -83,6 +83,7 @@ init_completion(&conn->conn_logout_comp); init_completion(&conn->rx_half_close_comp); init_completion(&conn->tx_half_close_comp); + init_completion(&conn->rx_login_comp); spin_lock_init(&conn->cmd_lock); spin_lock_init(&conn->conn_usage_lock); spin_lock_init(&conn->immed_queue_lock); @@ -249,6 +250,28 @@ mutex_unlock(&auth_id_lock); } +static __printf(2, 3) int iscsi_change_param_sprintf( + struct iscsi_conn *conn, + const char *fmt, ...) +{ + va_list args; + unsigned char buf[64]; + + memset(buf, 0, sizeof buf); + + va_start(args, fmt); + vsnprintf(buf, sizeof buf, fmt, args); + va_end(args); + + if (iscsi_change_param_value(buf, conn->param_list, 0) < 0) { + iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, + ISCSI_LOGIN_STATUS_NO_RESOURCES); + return -1; + } + + return 0; +} + /* * This is the leading connection of a new session, * or session reinstatement. @@ -337,7 +360,6 @@ { struct iscsi_node_attrib *na; struct iscsi_session *sess = conn->sess; - unsigned char buf[32]; bool iser = false; sess->tpg = conn->tpg; @@ -378,26 +400,16 @@ * * In our case, we have already located the struct iscsi_tiqn at this point. */ - memset(buf, 0, 32); - sprintf(buf, "TargetPortalGroupTag=%hu", sess->tpg->tpgt); - if (iscsi_change_param_value(buf, conn->param_list, 0) < 0) { - iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, - ISCSI_LOGIN_STATUS_NO_RESOURCES); + if (iscsi_change_param_sprintf(conn, "TargetPortalGroupTag=%hu", sess->tpg->tpgt)) return -1; - } /* * Workaround for Initiators that have broken connection recovery logic. * * "We would really like to get rid of this." Linux-iSCSI.org team */ - memset(buf, 0, 32); - sprintf(buf, "ErrorRecoveryLevel=%d", na->default_erl); - if (iscsi_change_param_value(buf, conn->param_list, 0) < 0) { - iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, - ISCSI_LOGIN_STATUS_NO_RESOURCES); + if (iscsi_change_param_sprintf(conn, "ErrorRecoveryLevel=%d", na->default_erl)) return -1; - } if (iscsi_login_disable_FIM_keys(conn->param_list, conn) < 0) return -1; @@ -409,12 +421,9 @@ unsigned long mrdsl, off; int rc; - sprintf(buf, "RDMAExtensions=Yes"); - if (iscsi_change_param_value(buf, conn->param_list, 0) < 0) { - iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, - ISCSI_LOGIN_STATUS_NO_RESOURCES); + if (iscsi_change_param_sprintf(conn, "RDMAExtensions=Yes")) return -1; - } + /* * Make MaxRecvDataSegmentLength PAGE_SIZE aligned for * Immediate Data + Unsolicitied Data-OUT if necessary.. @@ -444,12 +453,8 @@ pr_warn("Aligning ISER MaxRecvDataSegmentLength: %lu down" " to PAGE_SIZE\n", mrdsl); - sprintf(buf, "MaxRecvDataSegmentLength=%lu\n", mrdsl); - if (iscsi_change_param_value(buf, conn->param_list, 0) < 0) { - iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, - ISCSI_LOGIN_STATUS_NO_RESOURCES); + if (iscsi_change_param_sprintf(conn, "MaxRecvDataSegmentLength=%lu\n", mrdsl)) return -1; - } } return 0; @@ -591,13 +596,8 @@ * * In our case, we have already located the struct iscsi_tiqn at this point. */ - memset(buf, 0, 32); - sprintf(buf, "TargetPortalGroupTag=%hu", sess->tpg->tpgt); - if (iscsi_change_param_value(buf, conn->param_list, 0) < 0) { - iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, - ISCSI_LOGIN_STATUS_NO_RESOURCES); + if (iscsi_change_param_sprintf(conn, "TargetPortalGroupTag=%hu", sess->tpg->tpgt)) return -1; - } return iscsi_login_disable_FIM_keys(conn->param_list, conn); } @@ -682,7 +682,53 @@ iscsit_start_nopin_timer(conn); } -int iscsi_post_login_handler( +int iscsit_start_kthreads(struct iscsi_conn *conn) +{ + int ret = 0; + + spin_lock(&iscsit_global->ts_bitmap_lock); + conn->bitmap_id = bitmap_find_free_region(iscsit_global->ts_bitmap, + ISCSIT_BITMAP_BITS, get_order(1)); + spin_unlock(&iscsit_global->ts_bitmap_lock); + + if (conn->bitmap_id < 0) { + pr_err("bitmap_find_free_region() failed for" + " iscsit_start_kthreads()\n"); + return -ENOMEM; + } + + conn->tx_thread = kthread_run(iscsi_target_tx_thread, conn, + "%s", ISCSI_TX_THREAD_NAME); + if (IS_ERR(conn->tx_thread)) { + pr_err("Unable to start iscsi_target_tx_thread\n"); + ret = PTR_ERR(conn->tx_thread); + goto out_bitmap; + } + conn->tx_thread_active = true; + + conn->rx_thread = kthread_run(iscsi_target_rx_thread, conn, + "%s", ISCSI_RX_THREAD_NAME); + if (IS_ERR(conn->rx_thread)) { + pr_err("Unable to start iscsi_target_rx_thread\n"); + ret = PTR_ERR(conn->rx_thread); + goto out_tx; + } + conn->rx_thread_active = true; + + return 0; +out_tx: + send_sig(SIGINT, conn->tx_thread, 1); + kthread_stop(conn->tx_thread); + conn->tx_thread_active = false; +out_bitmap: + spin_lock(&iscsit_global->ts_bitmap_lock); + bitmap_release_region(iscsit_global->ts_bitmap, conn->bitmap_id, + get_order(1)); + spin_unlock(&iscsit_global->ts_bitmap_lock); + return ret; +} + +void iscsi_post_login_handler( struct iscsi_np *np, struct iscsi_conn *conn, u8 zero_tsih) @@ -692,7 +738,6 @@ struct se_session *se_sess = sess->se_sess; struct iscsi_portal_group *tpg = sess->tpg; struct se_portal_group *se_tpg = &tpg->tpg_se_tpg; - struct iscsi_thread_set *ts; iscsit_inc_conn_usage_count(conn); @@ -707,7 +752,6 @@ /* * SCSI Initiator -> SCSI Target Port Mapping */ - ts = iscsi_get_thread_set(); if (!zero_tsih) { iscsi_set_session_parameters(sess->sess_ops, conn->param_list, 0); @@ -735,8 +779,6 @@ spin_unlock_bh(&sess->conn_lock); iscsi_post_login_start_timers(conn); - - iscsi_activate_thread_set(conn, ts); /* * Determine CPU mask to ensure connection's RX and TX kthreads * are scheduled on the same CPU. @@ -744,15 +786,20 @@ iscsit_thread_get_cpumask(conn); conn->conn_rx_reset_cpumask = 1; conn->conn_tx_reset_cpumask = 1; - + /* + * Wakeup the sleeping iscsi_target_rx_thread() now that + * iscsi_conn is in TARG_CONN_STATE_LOGGED_IN state. + */ + complete(&conn->rx_login_comp); iscsit_dec_conn_usage_count(conn); + if (stop_timer) { spin_lock_bh(&se_tpg->session_lock); iscsit_stop_time2retain_timer(sess); spin_unlock_bh(&se_tpg->session_lock); } iscsit_dec_session_usage_count(sess); - return 0; + return; } iscsi_set_session_parameters(sess->sess_ops, conn->param_list, 1); @@ -794,7 +841,6 @@ spin_unlock_bh(&se_tpg->session_lock); iscsi_post_login_start_timers(conn); - iscsi_activate_thread_set(conn, ts); /* * Determine CPU mask to ensure connection's RX and TX kthreads * are scheduled on the same CPU. @@ -802,10 +848,12 @@ iscsit_thread_get_cpumask(conn); conn->conn_rx_reset_cpumask = 1; conn->conn_tx_reset_cpumask = 1; - + /* + * Wakeup the sleeping iscsi_target_rx_thread() now that + * iscsi_conn is in TARG_CONN_STATE_LOGGED_IN state. + */ + complete(&conn->rx_login_comp); iscsit_dec_conn_usage_count(conn); - - return 0; } static void iscsi_handle_login_thread_timeout(unsigned long data) @@ -1186,6 +1234,9 @@ conn->sock = NULL; } + if (conn->conn_transport->iscsit_wait_conn) + conn->conn_transport->iscsit_wait_conn(conn); + if (conn->conn_transport->iscsit_free_conn) conn->conn_transport->iscsit_free_conn(conn); @@ -1196,7 +1247,7 @@ static int __iscsi_target_login_thread(struct iscsi_np *np) { u8 *buffer, zero_tsih = 0; - int ret = 0, rc, stop; + int ret = 0, rc; struct iscsi_conn *conn = NULL; struct iscsi_login *login; struct iscsi_portal_group *tpg = NULL; @@ -1210,6 +1261,9 @@ if (np->np_thread_state == ISCSI_NP_THREAD_RESET) { np->np_thread_state = ISCSI_NP_THREAD_ACTIVE; complete(&np->np_restart_comp); + } else if (np->np_thread_state == ISCSI_NP_THREAD_SHUTDOWN) { + spin_unlock_bh(&np->np_thread_lock); + goto exit; } else { np->np_thread_state = ISCSI_NP_THREAD_ACTIVE; } @@ -1363,23 +1417,12 @@ if (ret < 0) goto new_sess_out; - if (!conn->sess) { - pr_err("struct iscsi_conn session pointer is NULL!\n"); - goto new_sess_out; - } - iscsi_stop_login_thread_timer(np); - if (signal_pending(current)) - goto new_sess_out; - if (ret == 1) { tpg_np = conn->tpg_np; - ret = iscsi_post_login_handler(np, conn, zero_tsih); - if (ret < 0) - goto new_sess_out; - + iscsi_post_login_handler(np, conn, zero_tsih); iscsit_deaccess_np(np, tpg, tpg_np); } @@ -1402,10 +1445,8 @@ } out: - stop = kthread_should_stop(); - /* Wait for another socket.. */ - if (!stop) - return 1; + return 1; + exit: iscsi_stop_login_thread_timer(np); spin_lock_bh(&np->np_thread_lock); @@ -1422,7 +1463,7 @@ allow_signal(SIGINT); - while (!kthread_should_stop()) { + while (1) { ret = __iscsi_target_login_thread(np); /* * We break and exit here unless another sock_accept() call --- linux-3.13.0.orig/drivers/target/iscsi/iscsi_target_login.h +++ linux-3.13.0/drivers/target/iscsi/iscsi_target_login.h @@ -12,7 +12,8 @@ extern int iscsit_get_login_rx(struct iscsi_conn *, struct iscsi_login *); extern int iscsit_put_login_tx(struct iscsi_conn *, struct iscsi_login *, u32); extern void iscsit_free_conn(struct iscsi_np *, struct iscsi_conn *); -extern int iscsi_post_login_handler(struct iscsi_np *, struct iscsi_conn *, u8); +extern int iscsit_start_kthreads(struct iscsi_conn *); +extern void iscsi_post_login_handler(struct iscsi_np *, struct iscsi_conn *, u8); extern void iscsi_target_login_sess_out(struct iscsi_conn *, struct iscsi_np *, bool, bool); extern int iscsi_target_login_thread(void *); --- linux-3.13.0.orig/drivers/target/iscsi/iscsi_target_nego.c +++ linux-3.13.0/drivers/target/iscsi/iscsi_target_nego.c @@ -17,6 +17,7 @@ ******************************************************************************/ #include +#include #include #include #include @@ -361,10 +362,24 @@ ntohl(login_rsp->statsn), login->rsp_length); padding = ((-login->rsp_length) & 3); + /* + * Before sending the last login response containing the transition + * bit for full-feature-phase, go ahead and start up TX/RX threads + * now to avoid potential resource allocation failures after the + * final login response has been sent. + */ + if (login->login_complete) { + int rc = iscsit_start_kthreads(conn); + if (rc) { + iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, + ISCSI_LOGIN_STATUS_NO_RESOURCES); + return -1; + } + } if (conn->conn_transport->iscsit_put_login_tx(conn, login, login->rsp_length + padding) < 0) - return -1; + goto err; login->rsp_length = 0; mutex_lock(&sess->cmdsn_mutex); @@ -373,6 +388,24 @@ mutex_unlock(&sess->cmdsn_mutex); return 0; + +err: + 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) { + send_sig(SIGINT, conn->tx_thread, 1); + kthread_stop(conn->tx_thread); + } + spin_lock(&iscsit_global->ts_bitmap_lock); + bitmap_release_region(iscsit_global->ts_bitmap, conn->bitmap_id, + get_order(1)); + spin_unlock(&iscsit_global->ts_bitmap_lock); + } + return -1; } static void iscsi_target_sk_data_ready(struct sock *sk, int count) @@ -1192,7 +1225,7 @@ */ alloc_tags: tag_num = max_t(u32, ISCSIT_MIN_TAGS, queue_depth); - tag_num += (tag_num / 2) + ISCSIT_EXTRA_TAGS; + tag_num = (tag_num * 2) + ISCSIT_EXTRA_TAGS; tag_size = sizeof(struct iscsi_cmd) + conn->conn_transport->priv_size; ret = transport_alloc_session_tags(sess->se_sess, tag_num, tag_size); --- linux-3.13.0.orig/drivers/target/iscsi/iscsi_target_parameters.c +++ linux-3.13.0/drivers/target/iscsi/iscsi_target_parameters.c @@ -601,7 +601,7 @@ param_list = kzalloc(sizeof(struct iscsi_param_list), GFP_KERNEL); if (!param_list) { pr_err("Unable to allocate memory for struct iscsi_param_list.\n"); - goto err_out; + return -1; } INIT_LIST_HEAD(¶m_list->param_list); INIT_LIST_HEAD(¶m_list->extra_response_list); --- linux-3.13.0.orig/drivers/target/iscsi/iscsi_target_tpg.c +++ linux-3.13.0/drivers/target/iscsi/iscsi_target_tpg.c @@ -137,7 +137,7 @@ list_for_each_entry(tpg, &tiqn->tiqn_tpg_list, tpg_list) { spin_lock(&tpg->tpg_state_lock); - if (tpg->tpg_state == TPG_STATE_FREE) { + if (tpg->tpg_state != TPG_STATE_ACTIVE) { spin_unlock(&tpg->tpg_state_lock); continue; } --- linux-3.13.0.orig/drivers/target/iscsi/iscsi_target_tq.c +++ linux-3.13.0/drivers/target/iscsi/iscsi_target_tq.c @@ -24,36 +24,22 @@ #include "iscsi_target_tq.h" #include "iscsi_target.h" -static LIST_HEAD(active_ts_list); static LIST_HEAD(inactive_ts_list); -static DEFINE_SPINLOCK(active_ts_lock); static DEFINE_SPINLOCK(inactive_ts_lock); static DEFINE_SPINLOCK(ts_bitmap_lock); -static void iscsi_add_ts_to_active_list(struct iscsi_thread_set *ts) -{ - spin_lock(&active_ts_lock); - list_add_tail(&ts->ts_list, &active_ts_list); - iscsit_global->active_ts++; - spin_unlock(&active_ts_lock); -} - static void iscsi_add_ts_to_inactive_list(struct iscsi_thread_set *ts) { + if (!list_empty(&ts->ts_list)) { + WARN_ON(1); + return; + } spin_lock(&inactive_ts_lock); list_add_tail(&ts->ts_list, &inactive_ts_list); iscsit_global->inactive_ts++; spin_unlock(&inactive_ts_lock); } -static void iscsi_del_ts_from_active_list(struct iscsi_thread_set *ts) -{ - spin_lock(&active_ts_lock); - list_del(&ts->ts_list); - iscsit_global->active_ts--; - spin_unlock(&active_ts_lock); -} - static struct iscsi_thread_set *iscsi_get_ts_from_inactive_list(void) { struct iscsi_thread_set *ts; @@ -66,7 +52,7 @@ ts = list_first_entry(&inactive_ts_list, struct iscsi_thread_set, ts_list); - list_del(&ts->ts_list); + list_del_init(&ts->ts_list); iscsit_global->inactive_ts--; spin_unlock(&inactive_ts_lock); @@ -204,8 +190,6 @@ void iscsi_activate_thread_set(struct iscsi_conn *conn, struct iscsi_thread_set *ts) { - iscsi_add_ts_to_active_list(ts); - spin_lock_bh(&ts->ts_state_lock); conn->thread_set = ts; ts->conn = conn; @@ -397,7 +381,6 @@ if (ts->delay_inactive && (--ts->thread_count == 0)) { spin_unlock_bh(&ts->ts_state_lock); - iscsi_del_ts_from_active_list(ts); if (!iscsit_global->in_shutdown) iscsi_deallocate_extra_thread_sets(); @@ -452,7 +435,6 @@ if (ts->delay_inactive && (--ts->thread_count == 0)) { spin_unlock_bh(&ts->ts_state_lock); - iscsi_del_ts_from_active_list(ts); if (!iscsit_global->in_shutdown) iscsi_deallocate_extra_thread_sets(); --- linux-3.13.0.orig/drivers/target/iscsi/iscsi_target_util.c +++ linux-3.13.0/drivers/target/iscsi/iscsi_target_util.c @@ -152,13 +152,16 @@ * May be called from software interrupt (timer) context for allocating * iSCSI NopINs. */ -struct iscsi_cmd *iscsit_allocate_cmd(struct iscsi_conn *conn, gfp_t gfp_mask) +struct iscsi_cmd *iscsit_allocate_cmd(struct iscsi_conn *conn, int state) { struct iscsi_cmd *cmd; struct se_session *se_sess = conn->sess->se_sess; int size, tag; - tag = percpu_ida_alloc(&se_sess->sess_tag_pool, gfp_mask); + tag = percpu_ida_alloc(&se_sess->sess_tag_pool, state); + if (tag < 0) + return NULL; + size = sizeof(struct iscsi_cmd) + conn->conn_transport->priv_size; cmd = (struct iscsi_cmd *)(se_sess->sess_cmd_map + (tag * size)); memset(cmd, 0, size); @@ -702,8 +705,8 @@ } EXPORT_SYMBOL(iscsit_release_cmd); -static void __iscsit_free_cmd(struct iscsi_cmd *cmd, bool scsi_cmd, - bool check_queues) +void __iscsit_free_cmd(struct iscsi_cmd *cmd, bool scsi_cmd, + bool check_queues) { struct iscsi_conn *conn = cmd->conn; @@ -926,7 +929,7 @@ u8 state; struct iscsi_cmd *cmd; - cmd = iscsit_allocate_cmd(conn, GFP_ATOMIC); + cmd = iscsit_allocate_cmd(conn, TASK_RUNNING); if (!cmd) return -1; @@ -1292,6 +1295,8 @@ login->login_failed = 1; iscsit_collect_login_stats(conn, status_class, status_detail); + memset(&login->rsp[0], 0, ISCSI_HDR_LEN); + hdr = (struct iscsi_login_rsp *)&login->rsp[0]; hdr->opcode = ISCSI_OP_LOGIN_RSP; hdr->status_class = status_class; @@ -1351,15 +1356,15 @@ struct iscsi_conn *conn, struct iscsi_data_count *count) { - int data = count->data_length, total_tx = 0, tx_loop = 0, iov_len; + int ret, iov_len; struct kvec *iov_p; struct msghdr msg; if (!conn || !conn->sock || !conn->conn_ops) return -1; - if (data <= 0) { - pr_err("Data length is: %d\n", data); + if (count->data_length <= 0) { + pr_err("Data length is: %d\n", count->data_length); return -1; } @@ -1368,20 +1373,16 @@ iov_p = count->iov; iov_len = count->iov_count; - while (total_tx < data) { - tx_loop = kernel_sendmsg(conn->sock, &msg, iov_p, iov_len, - (data - total_tx)); - if (tx_loop <= 0) { - pr_debug("tx_loop: %d total_tx %d\n", - tx_loop, total_tx); - return tx_loop; - } - total_tx += tx_loop; - pr_debug("tx_loop: %d, total_tx: %d, data: %d\n", - tx_loop, total_tx, data); + ret = kernel_sendmsg(conn->sock, &msg, iov_p, iov_len, + count->data_length); + if (ret != count->data_length) { + pr_err("Unexpected ret: %d send data %d\n", + ret, count->data_length); + return -EPIPE; } + pr_debug("ret: %d, sent data: %d\n", ret, count->data_length); - return total_tx; + return ret; } int rx_data( --- linux-3.13.0.orig/drivers/target/iscsi/iscsi_target_util.h +++ linux-3.13.0/drivers/target/iscsi/iscsi_target_util.h @@ -9,7 +9,7 @@ extern void iscsit_free_r2t(struct iscsi_r2t *, struct iscsi_cmd *); extern void iscsit_free_r2ts_from_list(struct iscsi_cmd *); extern struct iscsi_cmd *iscsit_alloc_cmd(struct iscsi_conn *, gfp_t); -extern struct iscsi_cmd *iscsit_allocate_cmd(struct iscsi_conn *, gfp_t); +extern struct iscsi_cmd *iscsit_allocate_cmd(struct iscsi_conn *, int); extern struct iscsi_seq *iscsit_get_seq_holder_for_datain(struct iscsi_cmd *, u32); extern struct iscsi_seq *iscsit_get_seq_holder_for_r2t(struct iscsi_cmd *); extern struct iscsi_r2t *iscsit_get_holder_for_r2tsn(struct iscsi_cmd *, u32); @@ -30,6 +30,7 @@ extern bool iscsit_conn_all_queues_empty(struct iscsi_conn *); extern void iscsit_free_queue_reqs_for_conn(struct iscsi_conn *); extern void iscsit_release_cmd(struct iscsi_cmd *); +extern void __iscsit_free_cmd(struct iscsi_cmd *, bool, bool); extern void iscsit_free_cmd(struct iscsi_cmd *, bool); extern int iscsit_check_session_usage_count(struct iscsi_session *); extern void iscsit_dec_session_usage_count(struct iscsi_session *); --- linux-3.13.0.orig/drivers/target/loopback/tcm_loop.c +++ linux-3.13.0/drivers/target/loopback/tcm_loop.c @@ -197,7 +197,7 @@ set_host_byte(sc, DID_TRANSPORT_DISRUPTED); goto out_done; } - tl_nexus = tl_hba->tl_nexus; + tl_nexus = tl_tpg->tl_nexus; if (!tl_nexus) { scmd_printk(KERN_ERR, sc, "TCM_Loop I_T Nexus" " does not exist\n"); @@ -262,16 +262,26 @@ * to struct scsi_device */ static int tcm_loop_issue_tmr(struct tcm_loop_tpg *tl_tpg, - struct tcm_loop_nexus *tl_nexus, int lun, int task, enum tcm_tmreq_table tmr) { struct se_cmd *se_cmd = NULL; struct se_session *se_sess; struct se_portal_group *se_tpg; + struct tcm_loop_nexus *tl_nexus; struct tcm_loop_cmd *tl_cmd = NULL; struct tcm_loop_tmr *tl_tmr = NULL; int ret = TMR_FUNCTION_FAILED, rc; + /* + * Locate the tl_nexus and se_sess pointers + */ + tl_nexus = tl_tpg->tl_nexus; + if (!tl_nexus) { + pr_err("Unable to perform device reset without" + " active I_T Nexus\n"); + return ret; + } + tl_cmd = kmem_cache_zalloc(tcm_loop_cmd_cache, GFP_KERNEL); if (!tl_cmd) { pr_err("Unable to allocate memory for tl_cmd\n"); @@ -287,7 +297,7 @@ se_cmd = &tl_cmd->tl_se_cmd; se_tpg = &tl_tpg->tl_se_tpg; - se_sess = tl_nexus->se_sess; + se_sess = tl_tpg->tl_nexus->se_sess; /* * Initialize struct se_cmd descriptor from target_core_mod infrastructure */ @@ -332,7 +342,6 @@ static int tcm_loop_abort_task(struct scsi_cmnd *sc) { struct tcm_loop_hba *tl_hba; - struct tcm_loop_nexus *tl_nexus; struct tcm_loop_tpg *tl_tpg; int ret = FAILED; @@ -340,21 +349,8 @@ * Locate the tcm_loop_hba_t pointer */ tl_hba = *(struct tcm_loop_hba **)shost_priv(sc->device->host); - /* - * Locate the tl_nexus and se_sess pointers - */ - tl_nexus = tl_hba->tl_nexus; - if (!tl_nexus) { - pr_err("Unable to perform device reset without" - " active I_T Nexus\n"); - return FAILED; - } - - /* - * Locate the tl_tpg pointer from TargetID in sc->device->id - */ tl_tpg = &tl_hba->tl_hba_tpgs[sc->device->id]; - ret = tcm_loop_issue_tmr(tl_tpg, tl_nexus, sc->device->lun, + ret = tcm_loop_issue_tmr(tl_tpg, sc->device->lun, sc->tag, TMR_ABORT_TASK); return (ret == TMR_FUNCTION_COMPLETE) ? SUCCESS : FAILED; } @@ -366,7 +362,6 @@ static int tcm_loop_device_reset(struct scsi_cmnd *sc) { struct tcm_loop_hba *tl_hba; - struct tcm_loop_nexus *tl_nexus; struct tcm_loop_tpg *tl_tpg; int ret = FAILED; @@ -374,20 +369,9 @@ * Locate the tcm_loop_hba_t pointer */ tl_hba = *(struct tcm_loop_hba **)shost_priv(sc->device->host); - /* - * Locate the tl_nexus and se_sess pointers - */ - tl_nexus = tl_hba->tl_nexus; - if (!tl_nexus) { - pr_err("Unable to perform device reset without" - " active I_T Nexus\n"); - return FAILED; - } - /* - * Locate the tl_tpg pointer from TargetID in sc->device->id - */ tl_tpg = &tl_hba->tl_hba_tpgs[sc->device->id]; - ret = tcm_loop_issue_tmr(tl_tpg, tl_nexus, sc->device->lun, + + ret = tcm_loop_issue_tmr(tl_tpg, sc->device->lun, 0, TMR_LUN_RESET); return (ret == TMR_FUNCTION_COMPLETE) ? SUCCESS : FAILED; } @@ -907,6 +891,11 @@ wake_up(&tl_tmr->tl_tmr_wait); } +static void tcm_loop_aborted_task(struct se_cmd *se_cmd) +{ + return; +} + static char *tcm_loop_dump_proto_id(struct tcm_loop_hba *tl_hba) { switch (tl_hba->tl_proto_id) { @@ -987,8 +976,8 @@ struct tcm_loop_nexus *tl_nexus; int ret = -ENOMEM; - if (tl_tpg->tl_hba->tl_nexus) { - pr_debug("tl_tpg->tl_hba->tl_nexus already exists\n"); + if (tl_tpg->tl_nexus) { + pr_debug("tl_tpg->tl_nexus already exists\n"); return -EEXIST; } se_tpg = &tl_tpg->tl_se_tpg; @@ -1023,7 +1012,7 @@ */ __transport_register_session(se_tpg, tl_nexus->se_sess->se_node_acl, tl_nexus->se_sess, tl_nexus); - tl_tpg->tl_hba->tl_nexus = tl_nexus; + tl_tpg->tl_nexus = tl_nexus; pr_debug("TCM_Loop_ConfigFS: Established I_T Nexus to emulated" " %s Initiator Port: %s\n", tcm_loop_dump_proto_id(tl_hba), name); @@ -1039,12 +1028,8 @@ { struct se_session *se_sess; struct tcm_loop_nexus *tl_nexus; - struct tcm_loop_hba *tl_hba = tpg->tl_hba; - if (!tl_hba) - return -ENODEV; - - tl_nexus = tl_hba->tl_nexus; + tl_nexus = tpg->tl_nexus; if (!tl_nexus) return -ENODEV; @@ -1060,13 +1045,13 @@ } pr_debug("TCM_Loop_ConfigFS: Removing I_T Nexus to emulated" - " %s Initiator Port: %s\n", tcm_loop_dump_proto_id(tl_hba), + " %s Initiator Port: %s\n", tcm_loop_dump_proto_id(tpg->tl_hba), tl_nexus->se_sess->se_node_acl->initiatorname); /* * Release the SCSI I_T Nexus to the emulated SAS Target Port */ transport_deregister_session(tl_nexus->se_sess); - tpg->tl_hba->tl_nexus = NULL; + tpg->tl_nexus = NULL; kfree(tl_nexus); return 0; } @@ -1082,7 +1067,7 @@ struct tcm_loop_nexus *tl_nexus; ssize_t ret; - tl_nexus = tl_tpg->tl_hba->tl_nexus; + tl_nexus = tl_tpg->tl_nexus; if (!tl_nexus) return -ENODEV; @@ -1475,6 +1460,7 @@ fabric->tf_ops.queue_data_in = &tcm_loop_queue_data_in; fabric->tf_ops.queue_status = &tcm_loop_queue_status; fabric->tf_ops.queue_tm_rsp = &tcm_loop_queue_tm_rsp; + fabric->tf_ops.aborted_task = &tcm_loop_aborted_task; /* * Setup function pointers for generic logic in target_core_fabric_configfs.c --- linux-3.13.0.orig/drivers/target/loopback/tcm_loop.h +++ linux-3.13.0/drivers/target/loopback/tcm_loop.h @@ -27,11 +27,6 @@ }; struct tcm_loop_nexus { - int it_nexus_active; - /* - * Pointer to Linux/SCSI HBA from linux/include/scsi_host.h - */ - struct scsi_host *sh; /* * Pointer to TCM session for I_T Nexus */ @@ -51,6 +46,7 @@ atomic_t tl_tpg_port_count; struct se_portal_group tl_se_tpg; struct tcm_loop_hba *tl_hba; + struct tcm_loop_nexus *tl_nexus; }; struct tcm_loop_hba { @@ -59,7 +55,6 @@ struct se_hba_s *se_hba; struct se_lun *tl_hba_lun; struct se_port *tl_hba_lun_sep; - struct tcm_loop_nexus *tl_nexus; struct device dev; struct Scsi_Host *sh; struct tcm_loop_tpg tl_hba_tpgs[TL_TPGS_PER_HBA]; --- linux-3.13.0.orig/drivers/target/sbp/sbp_target.c +++ linux-3.13.0/drivers/target/sbp/sbp_target.c @@ -1846,6 +1846,11 @@ { } +static void sbp_aborted_task(struct se_cmd *se_cmd) +{ + return; +} + static int sbp_check_stop_free(struct se_cmd *se_cmd) { struct sbp_target_request *req = container_of(se_cmd, @@ -2526,6 +2531,7 @@ .queue_data_in = sbp_queue_data_in, .queue_status = sbp_queue_status, .queue_tm_rsp = sbp_queue_tm_rsp, + .aborted_task = sbp_aborted_task, .check_stop_free = sbp_check_stop_free, .fabric_make_wwn = sbp_make_tport, --- linux-3.13.0.orig/drivers/target/target_core_configfs.c +++ linux-3.13.0/drivers/target/target_core_configfs.c @@ -457,6 +457,10 @@ pr_err("Missing tfo->queue_tm_rsp()\n"); return -EINVAL; } + if (!tfo->aborted_task) { + pr_err("Missing tfo->aborted_task()\n"); + return -EINVAL; + } /* * We at least require tfo->fabric_make_wwn(), tfo->fabric_drop_wwn() * tfo->fabric_make_tpg() and tfo->fabric_drop_tpg() in @@ -2040,6 +2044,11 @@ " tg_pt_gp ID: %hu\n", tg_pt_gp->tg_pt_gp_valid_id); return -EINVAL; } + if (!(dev->dev_flags & DF_CONFIGURED)) { + pr_err("Unable to set alua_access_state while device is" + " not configured\n"); + return -ENODEV; + } ret = kstrtoul(page, 0, &tmp); if (ret < 0) { --- linux-3.13.0.orig/drivers/target/target_core_device.c +++ linux-3.13.0/drivers/target/target_core_device.c @@ -616,6 +616,7 @@ dev->export_count--; spin_unlock(&hba->device_lock); + lun->lun_sep = NULL; lun->lun_se_dev = NULL; } @@ -798,10 +799,10 @@ pr_err("emulate_write_cache not supported for pSCSI\n"); return -EINVAL; } - if (dev->transport->get_write_cache) { - pr_warn("emulate_write_cache cannot be changed when underlying" - " HW reports WriteCacheEnabled, ignoring request\n"); - return 0; + if (flag && + dev->transport->get_write_cache) { + pr_err("emulate_write_cache not supported for this device\n"); + return -EINVAL; } dev->dev_attrib.emulate_write_cache = flag; @@ -1064,10 +1065,10 @@ " changed for TCM/pSCSI\n", dev); return -EINVAL; } - if (optimal_sectors > dev->dev_attrib.fabric_max_sectors) { + if (optimal_sectors > dev->dev_attrib.hw_max_sectors) { pr_err("dev[%p]: Passed optimal_sectors %u cannot be" - " greater than fabric_max_sectors: %u\n", dev, - optimal_sectors, dev->dev_attrib.fabric_max_sectors); + " greater than hw_max_sectors: %u\n", dev, + optimal_sectors, dev->dev_attrib.hw_max_sectors); return -EINVAL; } @@ -1320,7 +1321,8 @@ * Check to see if there are any existing persistent reservation APTPL * pre-registrations that need to be enabled for this LUN ACL.. */ - core_scsi3_check_aptpl_registration(lun->lun_se_dev, tpg, lun, lacl); + core_scsi3_check_aptpl_registration(lun->lun_se_dev, tpg, lun, nacl, + lacl->mapped_lun); return 0; } @@ -1471,7 +1473,6 @@ DA_UNMAP_GRANULARITY_ALIGNMENT_DEFAULT; dev->dev_attrib.max_write_same_len = DA_MAX_WRITE_SAME_LEN; dev->dev_attrib.fabric_max_sectors = DA_FABRIC_MAX_SECTORS; - dev->dev_attrib.optimal_sectors = DA_FABRIC_MAX_SECTORS; xcopy_lun = &dev->xcopy_lun; xcopy_lun->lun_se_dev = dev; @@ -1484,6 +1485,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; @@ -1498,8 +1542,6 @@ ret = dev->transport->configure_device(dev); if (ret) goto out; - dev->dev_flags |= DF_CONFIGURED; - /* * XXX: there is not much point to have two different values here.. */ @@ -1512,6 +1554,7 @@ dev->dev_attrib.hw_max_sectors = se_dev_align_max_sectors(dev->dev_attrib.hw_max_sectors, dev->dev_attrib.hw_block_size); + dev->dev_attrib.optimal_sectors = dev->dev_attrib.hw_max_sectors; dev->dev_index = scsi_get_new_index(SCSI_DEVICE_INDEX); dev->creation_time = get_jiffies_64(); @@ -1560,6 +1603,8 @@ list_add_tail(&dev->g_dev_node, &g_device_list); mutex_unlock(&g_device_mutex); + dev->dev_flags |= DF_CONFIGURED; + return 0; out_free_alua: --- linux-3.13.0.orig/drivers/target/target_core_file.c +++ linux-3.13.0/drivers/target/target_core_file.c @@ -164,25 +164,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. @@ -487,9 +473,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); @@ -552,7 +541,16 @@ { struct se_device *dev = cmd->se_dev; int ret = 0; - + /* + * We are currently limited by the number of iovecs (2048) per + * single vfs_[writev,readv] call. + */ + if (cmd->data_length > FD_MAX_BYTES) { + pr_err("FILEIO: Not able to process I/O of %u bytes due to" + "FD_MAX_BYTES: %u iovec count limitiation\n", + cmd->data_length, FD_MAX_BYTES); + return TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE; + } /* * Call vectorized fileio functions to map struct scatterlist * physical memory addresses to struct iovec virtual memory. --- linux-3.13.0.orig/drivers/target/target_core_iblock.c +++ linux-3.13.0/drivers/target/target_core_iblock.c @@ -122,30 +122,14 @@ q = bdev_get_queue(bd); dev->dev_attrib.hw_block_size = bdev_logical_block_size(bd); - dev->dev_attrib.hw_max_sectors = UINT_MAX; + 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. @@ -384,9 +368,13 @@ sector_t lba, sector_t nolb) { struct block_device *bdev = priv; + 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; @@ -426,8 +414,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)); sg = &cmd->t_data_sg[0]; @@ -591,12 +581,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; struct bio_list list; struct scatterlist *sg; u32 sg_num = sgl_nents; - sector_t block_lba; unsigned bio_cnt; int rw = 0; int i; @@ -622,24 +612,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-3.13.0.orig/drivers/target/target_core_pr.c +++ linux-3.13.0/drivers/target/target_core_pr.c @@ -944,10 +944,10 @@ struct se_device *dev, struct se_portal_group *tpg, struct se_lun *lun, - struct se_lun_acl *lun_acl) + struct se_node_acl *nacl, + u32 mapped_lun) { - struct se_node_acl *nacl = lun_acl->se_lun_nacl; - struct se_dev_entry *deve = nacl->device_list[lun_acl->mapped_lun]; + struct se_dev_entry *deve = nacl->device_list[mapped_lun]; if (dev->dev_reservation_flags & DRF_SPC2_RESERVATIONS) return 0; @@ -1877,8 +1877,8 @@ } if ((len + strlen(tmp) >= pr_aptpl_buf_len)) { - pr_err("Unable to update renaming" - " APTPL metadata\n"); + pr_err("Unable to update renaming APTPL metadata," + " reallocating larger buffer\n"); ret = -EMSGSIZE; goto out; } @@ -1895,8 +1895,8 @@ lun->lun_sep->sep_rtpi, lun->unpacked_lun, reg_count); if ((len + strlen(tmp) >= pr_aptpl_buf_len)) { - pr_err("Unable to update renaming" - " APTPL metadata\n"); + pr_err("Unable to update renaming APTPL metadata," + " reallocating larger buffer\n"); ret = -EMSGSIZE; goto out; } @@ -1959,7 +1959,7 @@ static sense_reason_t core_scsi3_update_and_write_aptpl(struct se_device *dev, bool aptpl) { unsigned char *buf; - int rc; + int rc, len = PR_APTPL_BUF_LEN; if (!aptpl) { char *null_buf = "No Registrations or Reservations\n"; @@ -1973,25 +1973,26 @@ return 0; } - - buf = kzalloc(PR_APTPL_BUF_LEN, GFP_KERNEL); +retry: + buf = vzalloc(len); if (!buf) return TCM_OUT_OF_RESOURCES; - rc = core_scsi3_update_aptpl_buf(dev, buf, PR_APTPL_BUF_LEN); + rc = core_scsi3_update_aptpl_buf(dev, buf, len); if (rc < 0) { - kfree(buf); - return TCM_OUT_OF_RESOURCES; + vfree(buf); + len *= 2; + goto retry; } rc = __core_scsi3_write_aptpl_to_file(dev, buf); if (rc != 0) { pr_err("SPC-3 PR: Could not update APTPL\n"); - kfree(buf); + vfree(buf); return TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE; } dev->t10_pr.pr_aptpl_active = 1; - kfree(buf); + vfree(buf); pr_debug("SPC-3 PR: Set APTPL Bit Activated\n"); return 0; } @@ -2009,7 +2010,7 @@ struct t10_reservation *pr_tmpl = &dev->t10_pr; unsigned char isid_buf[PR_REG_ISID_LEN], *isid_ptr = NULL; sense_reason_t ret = TCM_NO_SENSE; - int pr_holder = 0; + int pr_holder = 0, type; if (!se_sess || !se_lun) { pr_err("SPC-3 PR: se_sess || struct se_lun is NULL!\n"); @@ -2131,6 +2132,7 @@ ret = TCM_RESERVATION_CONFLICT; goto out; } + type = pr_reg->pr_res_type; spin_lock(&pr_tmpl->registration_lock); /* @@ -2161,6 +2163,7 @@ * Release the calling I_T Nexus registration now.. */ __core_scsi3_free_registration(cmd->se_dev, pr_reg, NULL, 1); + pr_reg = NULL; /* * From spc4r17, section 5.7.11.3 Unregistering @@ -2174,8 +2177,8 @@ * RESERVATIONS RELEASED. */ if (pr_holder && - (pr_reg->pr_res_type == PR_TYPE_WRITE_EXCLUSIVE_REGONLY || - pr_reg->pr_res_type == PR_TYPE_EXCLUSIVE_ACCESS_REGONLY)) { + (type == PR_TYPE_WRITE_EXCLUSIVE_REGONLY || + type == PR_TYPE_EXCLUSIVE_ACCESS_REGONLY)) { list_for_each_entry(pr_reg_p, &pr_tmpl->registration_list, pr_reg_list) { @@ -2194,7 +2197,8 @@ ret = core_scsi3_update_and_write_aptpl(dev, aptpl); out: - core_scsi3_put_pr_reg(pr_reg); + if (pr_reg) + core_scsi3_put_pr_reg(pr_reg); return ret; } --- linux-3.13.0.orig/drivers/target/target_core_pr.h +++ linux-3.13.0/drivers/target/target_core_pr.h @@ -55,7 +55,7 @@ unsigned char *, u16, u32, int, int, u8); extern int core_scsi3_check_aptpl_registration(struct se_device *, struct se_portal_group *, struct se_lun *, - struct se_lun_acl *); + struct se_node_acl *, u32); extern void core_scsi3_free_pr_reg_from_nacl(struct se_device *, struct se_node_acl *); extern void core_scsi3_free_all_registrations(struct se_device *); --- linux-3.13.0.orig/drivers/target/target_core_pscsi.c +++ linux-3.13.0/drivers/target/target_core_pscsi.c @@ -520,6 +520,7 @@ " pdv_host_id: %d\n", pdv->pdv_host_id); return -EINVAL; } + pdv->pdv_lld_host = sh; } } else { if (phv->phv_mode == PHV_VIRTUAL_HOST_ID) { @@ -602,6 +603,8 @@ if ((phv->phv_mode == PHV_LLD_SCSI_HOST_NO) && (phv->phv_lld_host != NULL)) scsi_host_put(phv->phv_lld_host); + else if (pdv->pdv_lld_host) + scsi_host_put(pdv->pdv_lld_host); if ((sd->type == TYPE_DISK) || (sd->type == TYPE_ROM)) scsi_device_put(sd); @@ -1111,7 +1114,7 @@ struct pscsi_dev_virt *pdv = PSCSI_DEV(dev); struct scsi_device *sd = pdv->pdv_sd; - return sd->type; + return (sd) ? sd->type : TYPE_NO_LUN; } static sector_t pscsi_get_blocks(struct se_device *dev) --- linux-3.13.0.orig/drivers/target/target_core_pscsi.h +++ linux-3.13.0/drivers/target/target_core_pscsi.h @@ -45,6 +45,7 @@ int pdv_lun_id; struct block_device *pdv_bd; struct scsi_device *pdv_sd; + struct Scsi_Host *pdv_lld_host; } ____cacheline_aligned; typedef enum phv_modes { --- linux-3.13.0.orig/drivers/target/target_core_rd.c +++ linux-3.13.0/drivers/target/target_core_rd.c @@ -178,7 +178,7 @@ - 1; for (j = 0; j < sg_per_table; j++) { - pg = alloc_pages(GFP_KERNEL, 0); + pg = alloc_pages(GFP_KERNEL | __GFP_ZERO, 0); if (!pg) { pr_err("Unable to allocate scatterlist" " pages for struct rd_dev_sg_table\n"); --- linux-3.13.0.orig/drivers/target/target_core_sbc.c +++ linux-3.13.0/drivers/target/target_core_sbc.c @@ -80,7 +80,7 @@ transport_kunmap_data_sg(cmd); } - target_complete_cmd(cmd, GOOD); + target_complete_cmd_with_length(cmd, GOOD, 8); return 0; } @@ -128,7 +128,7 @@ transport_kunmap_data_sg(cmd); } - target_complete_cmd(cmd, GOOD); + target_complete_cmd_with_length(cmd, GOOD, 32); return 0; } @@ -260,6 +260,8 @@ static sense_reason_t sbc_setup_write_same(struct se_cmd *cmd, unsigned char *flags, struct sbc_ops *ops) { + struct se_device *dev = cmd->se_dev; + sector_t end_lba = dev->transport->get_blocks(dev) + 1; unsigned int sectors = sbc_get_write_same_sectors(cmd); if ((flags[0] & 0x04) || (flags[0] & 0x02)) { @@ -273,6 +275,16 @@ sectors, cmd->se_dev->dev_attrib.max_write_same_len); return TCM_INVALID_CDB_FIELD; } + /* + * Sanity check for LBA wrap and request past end of device. + */ + if (((cmd->t_task_lba + sectors) < cmd->t_task_lba) || + ((cmd->t_task_lba + sectors) > end_lba)) { + pr_err("WRITE_SAME exceeds last lba %llu (lba %llu, sectors %u)\n", + (unsigned long long)end_lba, cmd->t_task_lba, sectors); + return TCM_ADDRESS_OUT_OF_RANGE; + } + /* We always have ANC_SUP == 0 so setting ANCHOR is always an error */ if (flags[0] & 0x10) { pr_warn("WRITE SAME with ANCHOR not supported\n"); @@ -296,7 +308,8 @@ return 0; } -static sense_reason_t xdreadwrite_callback(struct se_cmd *cmd) +static sense_reason_t xdreadwrite_callback(struct se_cmd *cmd, bool success, + int *post_ret) { unsigned char *buf, *addr; struct scatterlist *sg; @@ -360,7 +373,8 @@ cmd->data_direction); } -static sense_reason_t compare_and_write_post(struct se_cmd *cmd) +static sense_reason_t compare_and_write_post(struct se_cmd *cmd, bool success, + int *post_ret) { struct se_device *dev = cmd->se_dev; @@ -370,8 +384,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); /* @@ -383,7 +399,8 @@ return TCM_NO_SENSE; } -static sense_reason_t compare_and_write_callback(struct se_cmd *cmd) +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; @@ -398,11 +415,16 @@ /* * Handle early failure in transport_generic_request_failure(), - * which will not have taken ->caw_mutex yet.. + * which will not have taken ->caw_sem yet.. */ - if (!cmd->t_data_sg || !cmd->t_bidi_data_sg) + if (!success && (!cmd->t_data_sg || !cmd->t_bidi_data_sg)) return TCM_NO_SENSE; /* + * Handle special case for zero-length COMPARE_AND_WRITE + */ + if (!cmd->data_length) + goto out; + /* * Immediately exit + release dev->caw_sem if command has already * been failed with a non-zero SCSI status. */ @@ -419,13 +441,14 @@ goto out; } - write_sg = kzalloc(sizeof(struct scatterlist) * cmd->t_data_nents, + write_sg = kmalloc(sizeof(struct scatterlist) * cmd->t_data_nents, GFP_KERNEL); if (!write_sg) { pr_err("Unable to allocate compare_and_write sg\n"); ret = TCM_OUT_OF_RESOURCES; goto out; } + sg_init_table(write_sg, cmd->t_data_nents); /* * Setup verify and write data payloads from total NumberLBAs. */ @@ -473,11 +496,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++; @@ -838,23 +861,9 @@ if (cmd->se_cmd_flags & SCF_SCSI_DATA_CDB) { unsigned long long end_lba; - if (sectors > dev->dev_attrib.fabric_max_sectors) { - printk_ratelimited(KERN_ERR "SCSI OP %02xh with too" - " big sectors %u exceeds fabric_max_sectors:" - " %u\n", cdb[0], sectors, - dev->dev_attrib.fabric_max_sectors); - return TCM_INVALID_CDB_FIELD; - } - if (sectors > dev->dev_attrib.hw_max_sectors) { - printk_ratelimited(KERN_ERR "SCSI OP %02xh with too" - " big sectors %u exceeds backend hw_max_sectors:" - " %u\n", cdb[0], sectors, - dev->dev_attrib.hw_max_sectors); - return TCM_INVALID_CDB_FIELD; - } - end_lba = dev->transport->get_blocks(dev) + 1; - if (cmd->t_task_lba + sectors > end_lba) { + if (((cmd->t_task_lba + sectors) < cmd->t_task_lba) || + ((cmd->t_task_lba + sectors) > end_lba)) { pr_err("cmd exceeds last lba %llu " "(lba %llu, sectors %u)\n", end_lba, cmd->t_task_lba, sectors); --- linux-3.13.0.orig/drivers/target/target_core_spc.c +++ linux-3.13.0/drivers/target/target_core_spc.c @@ -450,7 +450,6 @@ spc_emulate_evpd_b0(struct se_cmd *cmd, unsigned char *buf) { struct se_device *dev = cmd->se_dev; - u32 max_sectors; int have_tp = 0; int opt, min; @@ -484,9 +483,7 @@ /* * Set MAXIMUM TRANSFER LENGTH */ - max_sectors = min(dev->dev_attrib.fabric_max_sectors, - dev->dev_attrib.hw_max_sectors); - put_unaligned_be32(max_sectors, &buf[8]); + put_unaligned_be32(dev->dev_attrib.hw_max_sectors, &buf[8]); /* * Set OPTIMAL TRANSFER LENGTH @@ -646,6 +643,7 @@ unsigned char buf[SE_INQUIRY_BUF]; sense_reason_t ret; int p; + int len = 0; memset(buf, 0, SE_INQUIRY_BUF); @@ -663,6 +661,7 @@ } ret = spc_emulate_inquiry_std(cmd, buf); + len = buf[4] + 5; goto out; } @@ -670,6 +669,7 @@ if (cdb[2] == evpd_handlers[p].page) { buf[1] = cdb[2]; ret = evpd_handlers[p].emulate(cmd, buf); + len = get_unaligned_be16(&buf[2]) + 4; goto out; } } @@ -685,7 +685,7 @@ } if (!ret) - target_complete_cmd(cmd, GOOD); + target_complete_cmd_with_length(cmd, GOOD, len); return ret; } @@ -1003,7 +1003,7 @@ transport_kunmap_data_sg(cmd); } - target_complete_cmd(cmd, GOOD); + target_complete_cmd_with_length(cmd, GOOD, length); return 0; } @@ -1144,11 +1144,8 @@ * coming via a target_core_mod PASSTHROUGH op, and not through * a $FABRIC_MOD. In that case, report LUN=0 only. */ - if (!sess) { - int_to_scsilun(0, (struct scsi_lun *)&buf[offset]); - lun_count = 1; + if (!sess) goto done; - } spin_lock_irq(&sess->se_node_acl->device_list_lock); for (i = 0; i < TRANSPORT_MAX_LUNS_PER_TPG; i++) { @@ -1173,6 +1170,14 @@ * See SPC3 r07, page 159. */ done: + /* + * If no LUNs are accessible, report virtual LUN 0. + */ + if (lun_count == 0) { + int_to_scsilun(0, (struct scsi_lun *)&buf[offset]); + lun_count = 1; + } + lun_count *= 8; buf[0] = ((lun_count >> 24) & 0xff); buf[1] = ((lun_count >> 16) & 0xff); @@ -1180,7 +1185,7 @@ buf[3] = (lun_count & 0xff); transport_kunmap_data_sg(cmd); - target_complete_cmd(cmd, GOOD); + target_complete_cmd_with_length(cmd, GOOD, 8 + lun_count * 8); return 0; } EXPORT_SYMBOL(spc_emulate_report_luns); --- linux-3.13.0.orig/drivers/target/target_core_tmr.c +++ linux-3.13.0/drivers/target/target_core_tmr.c @@ -76,25 +76,29 @@ } 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) { + 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); + } - transport_cmd_finish_abort(cmd, 0); + transport_cmd_finish_abort(cmd, remove); } static int target_check_cdb_and_preempt(struct list_head *list, @@ -112,6 +116,47 @@ 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: %u already complete or" + " fabric stop, skipping\n", + se_cmd->se_tfo->get_task_tag(se_cmd)); + 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: %u already shutdown," + " skipping\n", se_cmd->se_tfo->get_task_tag(se_cmd)); + 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, @@ -134,33 +179,19 @@ printk("ABORT_TASK: Found referenced %s task_tag: %u\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: %u 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); + target_put_sess_cmd(se_sess, se_cmd); 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); - /* - * Now send SAM_STAT_TASK_ABORTED status for the referenced - * se_cmd descriptor.. - */ - transport_send_task_abort(se_cmd); - /* - * Also deal with possible extra acknowledge reference.. - */ - if (se_cmd->se_cmd_flags & SCF_ACK_KREF) - target_put_sess_cmd(se_sess, se_cmd); + transport_cmd_finish_abort(se_cmd, true); target_put_sess_cmd(se_sess, se_cmd); printk("ABORT_TASK: Sending TMR_FUNCTION_COMPLETE for" @@ -182,9 +213,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.. @@ -210,17 +243,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); @@ -234,20 +289,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->se_sess, 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. @@ -286,6 +347,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; } @@ -293,7 +364,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%08x/0x%08x, i_state: %d, t_state: %d" @@ -317,16 +388,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->se_sess, cmd); } } @@ -338,6 +404,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 @@ -356,8 +423,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", @@ -370,7 +438,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-3.13.0.orig/drivers/target/target_core_tpg.c +++ linux-3.13.0/drivers/target/target_core_tpg.c @@ -40,6 +40,7 @@ #include #include "target_core_internal.h" +#include "target_core_pr.h" extern struct se_device *g_lun0_dev; @@ -166,6 +167,13 @@ core_enable_device_list_for_node(lun, NULL, lun->unpacked_lun, lun_access, acl, tpg); + /* + * Check to see if there are any existing persistent reservation + * APTPL pre-registrations that need to be enabled for this dynamic + * LUN ACL now.. + */ + core_scsi3_check_aptpl_registration(dev, tpg, lun, acl, + lun->unpacked_lun); spin_lock(&tpg->tpg_lun_lock); } spin_unlock(&tpg->tpg_lun_lock); --- linux-3.13.0.orig/drivers/target/target_core_transport.c +++ linux-3.13.0/drivers/target/target_core_transport.c @@ -483,9 +483,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; @@ -510,10 +507,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); @@ -523,6 +516,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. @@ -534,7 +531,7 @@ spin_unlock_irqrestore(&cmd->t_state_lock, flags); - complete(&cmd->t_transport_stop_comp); + complete_all(&cmd->t_transport_stop_comp); return 1; } @@ -568,17 +565,29 @@ { struct se_lun *lun = cmd->se_lun; - if (!lun || !cmd->lun_ref_active) + if (!lun) return; - percpu_ref_put(&lun->lun_ref); + if (cmpxchg(&cmd->lun_ref_active, true, false)) + percpu_ref_put(&lun->lun_ref); } 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); + /* + * Allow the fabric driver to unmap any resources before + * releasing the descriptor via TFO->release_cmd() + */ + if (remove) + cmd->se_tfo->aborted_task(cmd); + if (transport_cmd_check_stop_to_fabric(cmd)) return; - if (remove) + if (remove && ack_kref) transport_put_cmd(cmd); } @@ -649,10 +658,10 @@ * 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(&cmd->t_transport_stop_comp); + complete_all(&cmd->t_transport_stop_comp); return; } else if (cmd->transport_state & CMD_T_FAILED) { INIT_WORK(&cmd->work, target_complete_failure_work); @@ -668,6 +677,23 @@ } EXPORT_SYMBOL(target_complete_cmd); +void target_complete_cmd_with_length(struct se_cmd *cmd, u8 scsi_status, int length) +{ + if (scsi_status == SAM_STAT_GOOD && length < cmd->data_length) { + if (cmd->se_cmd_flags & SCF_UNDERFLOW_BIT) { + cmd->residual_count += cmd->data_length - length; + } else { + cmd->se_cmd_flags |= SCF_UNDERFLOW_BIT; + cmd->residual_count = cmd->data_length - length; + } + + cmd->data_length = length; + } + + target_complete_cmd(cmd, scsi_status); +} +EXPORT_SYMBOL(target_complete_cmd_with_length); + static void target_add_to_state_list(struct se_cmd *cmd) { struct se_device *dev = cmd->se_dev; @@ -1078,6 +1104,7 @@ init_completion(&cmd->cmd_wait_comp); init_completion(&cmd->task_stop_comp); spin_lock_init(&cmd->t_state_lock); + kref_init(&cmd->cmd_kref); cmd->transport_state = CMD_T_DEV_ACTIVE; cmd->se_tfo = tfo; @@ -1527,7 +1554,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%08x" " CDB: 0x%02x\n", cmd, cmd->se_tfo->get_task_tag(cmd), @@ -1546,11 +1573,11 @@ transport_complete_task_attr(cmd); /* * Handle special case for COMPARE_AND_WRITE failure, where the - * callback is expected to drop the per device ->caw_mutex. + * callback is expected to drop the per device ->caw_sem. */ if ((cmd->se_cmd_flags & SCF_COMPARE_AND_WRITE) && cmd->transport_complete_callback) - cmd->transport_complete_callback(cmd); + cmd->transport_complete_callback(cmd, false, &post_ret); switch (sense_reason) { case TCM_NON_EXISTENT_LUN: @@ -1689,26 +1716,28 @@ 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%08x\n", __func__, __LINE__, cmd->se_tfo->get_task_tag(cmd)); spin_unlock_irq(&cmd->t_state_lock); - complete(&cmd->t_transport_stop_comp); + complete_all(&cmd->t_transport_stop_comp); return; } @@ -1798,8 +1827,7 @@ if (cmd->se_cmd_flags & SCF_TRANSPORT_TASK_SENSE) { trace_target_cmd_complete(cmd); ret = cmd->se_tfo->queue_status(cmd); - if (ret) - goto out; + goto out; } switch (cmd->data_direction) { @@ -1884,9 +1912,15 @@ */ if (cmd->transport_complete_callback) { sense_reason_t rc; + 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; - rc = cmd->transport_complete_callback(cmd); - if (!rc && !(cmd->se_cmd_flags & SCF_COMPARE_AND_WRITE_POST)) { return; } else if (rc) { ret = transport_send_check_condition_and_sense(cmd, @@ -1900,6 +1934,7 @@ } } +queue_rsp: switch (cmd->data_direction) { case DMA_FROM_DEVICE: spin_lock(&cmd->se_lun->lun_sep_lock); @@ -1988,6 +2023,16 @@ static inline void transport_free_pages(struct se_cmd *cmd) { if (cmd->se_cmd_flags & SCF_PASSTHROUGH_SG_TO_MEM_NOALLOC) { + /* + * Release special case READ buffer payload required for + * SG_TO_MEM_NOALLOC to function with COMPARE_AND_WRITE + */ + if (cmd->se_cmd_flags & SCF_COMPARE_AND_WRITE) { + transport_free_sgl(cmd->t_bidi_data_sg, + cmd->t_bidi_data_nents); + cmd->t_bidi_data_sg = NULL; + cmd->t_bidi_data_nents = 0; + } transport_reset_sgl_orig(cmd); return; } @@ -2003,20 +2048,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. @@ -2024,18 +2063,6 @@ return target_put_sess_cmd(cmd->se_sess, 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; @@ -2136,6 +2163,7 @@ transport_generic_new_cmd(struct se_cmd *cmd) { int ret = 0; + bool zero_flag = !(cmd->se_cmd_flags & SCF_SCSI_DATA_CDB); /* * Determine is the TCM fabric module has already allocated physical @@ -2144,7 +2172,6 @@ */ if (!(cmd->se_cmd_flags & SCF_PASSTHROUGH_SG_TO_MEM_NOALLOC) && cmd->data_length) { - bool zero_flag = !(cmd->se_cmd_flags & SCF_SCSI_DATA_CDB); if ((cmd->se_cmd_flags & SCF_BIDI) || (cmd->se_cmd_flags & SCF_COMPARE_AND_WRITE)) { @@ -2167,6 +2194,20 @@ cmd->data_length, zero_flag); if (ret < 0) return TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE; + } else if ((cmd->se_cmd_flags & SCF_COMPARE_AND_WRITE) && + cmd->data_length) { + /* + * Special case for COMPARE_AND_WRITE with fabrics + * using SCF_PASSTHROUGH_SG_TO_MEM_NOALLOC. + */ + u32 caw_length = cmd->t_task_nolb * + cmd->se_dev->dev_attrib.block_size; + + ret = target_alloc_sgl(&cmd->t_bidi_data_sg, + &cmd->t_bidi_data_nents, + caw_length, zero_flag); + if (ret < 0) + return TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE; } /* * If this command is not a write we can execute it right here, @@ -2174,7 +2215,7 @@ * and let it call back once the write buffers are ready. */ target_add_to_state_list(cmd); - if (cmd->data_direction != DMA_TO_DEVICE) { + if (cmd->data_direction != DMA_TO_DEVICE || cmd->data_length == 0) { target_execute_cmd(cmd); return 0; } @@ -2209,34 +2250,59 @@ } } -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: %u\n", + cmd->se_tfo->get_task_tag(cmd)); + wait_for_completion(&cmd->cmd_wait_comp); + cmd->se_tfo->release_cmd(cmd); + ret = 1; } return ret; } @@ -2253,7 +2319,6 @@ unsigned long flags; int ret = 0; - kref_init(&se_cmd->cmd_kref); /* * Add a second kref if the fabric caller is expecting to handle * fabric acknowledgement that requires two target_put_sess_cmd() @@ -2272,28 +2337,52 @@ list_add_tail(&se_cmd->se_cmd_list, &se_sess->sess_cmd_list); out: spin_unlock_irqrestore(&se_sess->sess_cmd_lock, flags); + + if (ret && ack_kref) + target_put_sess_cmd(se_sess, se_cmd); + return ret; } 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) { struct se_cmd *se_cmd = container_of(kref, struct se_cmd, cmd_kref); struct se_session *se_sess = se_cmd->se_sess; + bool fabric_stop; if (list_empty(&se_cmd->se_cmd_list)) { spin_unlock(&se_sess->sess_cmd_lock); + 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_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(&se_sess->sess_cmd_lock); + target_free_cmd_mem(se_cmd); complete(&se_cmd->cmd_wait_comp); return; } - list_del(&se_cmd->se_cmd_list); + list_del_init(&se_cmd->se_cmd_list); spin_unlock(&se_sess->sess_cmd_lock); + target_free_cmd_mem(se_cmd); se_cmd->se_tfo->release_cmd(se_cmd); } @@ -2303,6 +2392,11 @@ */ int target_put_sess_cmd(struct se_session *se_sess, struct se_cmd *se_cmd) { + 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); } @@ -2317,6 +2411,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) { @@ -2326,8 +2421,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); } @@ -2340,15 +2442,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_sess, se_cmd)) { + if (tas) + target_put_sess_cmd(se_sess, 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, @@ -2391,34 +2501,38 @@ return 0; } -/** - * 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; @@ -2427,20 +2541,37 @@ cmd, cmd->se_tfo->get_task_tag(cmd), 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%08x\n", cmd->se_tfo->get_task_tag(cmd)); + 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); @@ -2680,24 +2811,51 @@ } 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 (!send_status || (cmd->se_cmd_flags & SCF_SENT_DELAYED_TAS)) + /* + * 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; return 1; + } - pr_debug("Sending delayed SAM_STAT_TASK_ABORTED status for CDB: 0x%02x ITT: 0x%08x\n", - cmd->t_task_cdb[0], cmd->se_tfo->get_task_tag(cmd)); + pr_debug("Sending delayed SAM_STAT_TASK_ABORTED status for CDB:" + " 0x%02x ITT: 0x%08x\n", cmd->t_task_cdb[0], + cmd->se_tfo->get_task_tag(cmd)); - cmd->se_cmd_flags |= SCF_SENT_DELAYED_TAS; + 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) @@ -2705,7 +2863,7 @@ unsigned long flags; spin_lock_irqsave(&cmd->t_state_lock, flags); - if (cmd->se_cmd_flags & (SCF_SENT_CHECK_CONDITION | SCF_SENT_DELAYED_TAS)) { + if (cmd->se_cmd_flags & (SCF_SENT_CHECK_CONDITION)) { spin_unlock_irqrestore(&cmd->t_state_lock, flags); return; } @@ -2719,11 +2877,17 @@ */ if (cmd->data_direction == DMA_TO_DEVICE) { if (cmd->se_tfo->write_pending_status(cmd) != 0) { - cmd->transport_state |= CMD_T_ABORTED; - smp_mb__after_atomic_inc(); + 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); @@ -2741,8 +2905,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); @@ -2770,15 +2943,29 @@ 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); } int transport_generic_handle_tmr( struct se_cmd *cmd) { + unsigned long flags; + + spin_lock_irqsave(&cmd->t_state_lock, flags); + cmd->transport_state |= CMD_T_ACTIVE; + spin_unlock_irqrestore(&cmd->t_state_lock, flags); + INIT_WORK(&cmd->work, target_tmr_work); queue_work(cmd->se_dev->tmr_wq, &cmd->work); return 0; --- linux-3.13.0.orig/drivers/target/tcm_fc/tcm_fc.h +++ linux-3.13.0/drivers/target/tcm_fc/tcm_fc.h @@ -163,6 +163,7 @@ u32 ft_get_task_tag(struct se_cmd *); int ft_get_cmd_state(struct se_cmd *); void ft_queue_tm_resp(struct se_cmd *); +void ft_aborted_task(struct se_cmd *); /* * other internal functions. --- linux-3.13.0.orig/drivers/target/tcm_fc/tfc_cmd.c +++ linux-3.13.0/drivers/target/tcm_fc/tfc_cmd.c @@ -90,18 +90,18 @@ { struct fc_frame *fp; struct fc_lport *lport; - struct se_session *se_sess; + struct ft_sess *sess; if (!cmd) return; - se_sess = cmd->sess->se_sess; + sess = cmd->sess; fp = cmd->req_frame; lport = fr_dev(fp); if (fr_seq(fp)) lport->tt.seq_release(fr_seq(fp)); fc_frame_free(fp); - percpu_ida_free(&se_sess->sess_tag_pool, cmd->se_cmd.map_tag); - ft_sess_put(cmd->sess); /* undo get from lookup at recv */ + percpu_ida_free(&sess->se_sess->sess_tag_pool, cmd->se_cmd.map_tag); + ft_sess_put(sess); /* undo get from lookup at recv */ } void ft_release_cmd(struct se_cmd *se_cmd) @@ -426,6 +426,11 @@ ft_send_resp_code(cmd, code); } +void ft_aborted_task(struct se_cmd *se_cmd) +{ + return; +} + static void ft_send_work(struct work_struct *work); /* @@ -438,7 +443,7 @@ struct se_session *se_sess = sess->se_sess; int tag; - tag = percpu_ida_alloc(&se_sess->sess_tag_pool, GFP_ATOMIC); + tag = percpu_ida_alloc(&se_sess->sess_tag_pool, TASK_RUNNING); if (tag < 0) goto busy; --- linux-3.13.0.orig/drivers/target/tcm_fc/tfc_conf.c +++ linux-3.13.0/drivers/target/tcm_fc/tfc_conf.c @@ -536,6 +536,7 @@ .queue_data_in = ft_queue_data_in, .queue_status = ft_queue_status, .queue_tm_rsp = ft_queue_tm_resp, + .aborted_task = ft_aborted_task, /* * Setup function pointers for generic logic in * target_core_fabric_configfs.c --- linux-3.13.0.orig/drivers/target/tcm_fc/tfc_io.c +++ linux-3.13.0/drivers/target/tcm_fc/tfc_io.c @@ -346,7 +346,7 @@ ep = fc_seq_exch(seq); if (ep) { lport = ep->lp; - if (lport && (ep->xid <= lport->lro_xid)) + if (lport && (ep->xid <= lport->lro_xid)) { /* * "ddp_done" trigger invalidation of HW * specific DDP context @@ -361,6 +361,7 @@ * identified using ep->xid) */ cmd->was_ddp_setup = 0; + } } } } --- linux-3.13.0.orig/drivers/target/tcm_fc/tfc_sess.c +++ linux-3.13.0/drivers/target/tcm_fc/tfc_sess.c @@ -68,6 +68,7 @@ if (tport) { tport->tpg = tpg; + tpg->tport = tport; return tport; } --- linux-3.13.0.orig/drivers/thermal/intel_powerclamp.c +++ linux-3.13.0/drivers/thermal/intel_powerclamp.c @@ -426,7 +426,6 @@ * allowed. thus jiffies are updated properly. */ preempt_disable(); - tick_nohz_idle_enter(); /* mwait until target jiffies is reached */ while (time_before(jiffies, target_jiffies)) { unsigned long ecx = 1; @@ -444,7 +443,6 @@ start_critical_timings(); atomic_inc(&idle_wakeup_counter); } - tick_nohz_idle_exit(); preempt_enable_no_resched(); } del_timer_sync(&wakeup_timer); --- linux-3.13.0.orig/drivers/thermal/step_wise.c +++ linux-3.13.0/drivers/thermal/step_wise.c @@ -140,9 +140,6 @@ old_target = instance->target; instance->target = get_target_state(instance, trend, throttle); - if (old_target == instance->target) - continue; - /* Activate a passive thermal instance */ if (old_target == THERMAL_NO_TARGET && instance->target != THERMAL_NO_TARGET) --- linux-3.13.0.orig/drivers/thermal/thermal_core.c +++ linux-3.13.0/drivers/thermal/thermal_core.c @@ -1742,10 +1742,10 @@ return 0; -unregister_governors: - thermal_unregister_governors(); unregister_class: class_unregister(&thermal_class); +unregister_governors: + thermal_unregister_governors(); error: idr_destroy(&thermal_tz_idr); idr_destroy(&thermal_cdev_idr); --- linux-3.13.0.orig/drivers/thermal/thermal_hwmon.c +++ linux-3.13.0/drivers/thermal/thermal_hwmon.c @@ -140,6 +140,12 @@ return NULL; } +static bool thermal_zone_crit_temp_valid(struct thermal_zone_device *tz) +{ + unsigned long temp; + return tz->ops->get_crit_temp && !tz->ops->get_crit_temp(tz, &temp); +} + int thermal_add_hwmon_sysfs(struct thermal_zone_device *tz) { struct thermal_hwmon_device *hwmon; @@ -189,21 +195,18 @@ if (result) goto free_temp_mem; - if (tz->ops->get_crit_temp) { - unsigned long temperature; - if (!tz->ops->get_crit_temp(tz, &temperature)) { - snprintf(temp->temp_crit.name, - sizeof(temp->temp_crit.name), + if (thermal_zone_crit_temp_valid(tz)) { + snprintf(temp->temp_crit.name, + sizeof(temp->temp_crit.name), "temp%d_crit", hwmon->count); - temp->temp_crit.attr.attr.name = temp->temp_crit.name; - temp->temp_crit.attr.attr.mode = 0444; - temp->temp_crit.attr.show = temp_crit_show; - sysfs_attr_init(&temp->temp_crit.attr.attr); - result = device_create_file(hwmon->device, - &temp->temp_crit.attr); - if (result) - goto unregister_input; - } + temp->temp_crit.attr.attr.name = temp->temp_crit.name; + temp->temp_crit.attr.attr.mode = 0444; + temp->temp_crit.attr.show = temp_crit_show; + sysfs_attr_init(&temp->temp_crit.attr.attr); + result = device_create_file(hwmon->device, + &temp->temp_crit.attr); + if (result) + goto unregister_input; } mutex_lock(&thermal_hwmon_list_lock); @@ -250,7 +253,7 @@ } device_remove_file(hwmon->device, &temp->temp_input.attr); - if (tz->ops->get_crit_temp) + if (thermal_zone_crit_temp_valid(tz)) device_remove_file(hwmon->device, &temp->temp_crit.attr); mutex_lock(&thermal_hwmon_list_lock); --- linux-3.13.0.orig/drivers/thermal/x86_pkg_temp_thermal.c +++ linux-3.13.0/drivers/thermal/x86_pkg_temp_thermal.c @@ -68,6 +68,10 @@ struct thermal_zone_device *tzone; }; +static const struct thermal_zone_params pkg_temp_tz_params = { + .no_hwmon = true, +}; + /* List maintaining number of package instances */ static LIST_HEAD(phy_dev_list); static DEFINE_MUTEX(phy_dev_list_mutex); @@ -446,7 +450,7 @@ thres_count, (thres_count == MAX_NUMBER_OF_TRIPS) ? 0x03 : 0x01, - phy_dev_entry, &tzone_ops, NULL, 0, 0); + phy_dev_entry, &tzone_ops, &pkg_temp_tz_params, 0, 0); if (IS_ERR(phy_dev_entry->tzone)) { err = PTR_ERR(phy_dev_entry->tzone); goto err_ret_free; --- linux-3.13.0.orig/drivers/tty/Kconfig +++ linux-3.13.0/drivers/tty/Kconfig @@ -366,7 +366,7 @@ "Trace data router for MIPI P1149.7 cJTAG standard". config PPC_EPAPR_HV_BYTECHAN - tristate "ePAPR hypervisor byte channel driver" + bool "ePAPR hypervisor byte channel driver" depends on PPC select EPAPR_PARAVIRT help --- linux-3.13.0.orig/drivers/tty/hvc/hvc_console.c +++ linux-3.13.0/drivers/tty/hvc/hvc_console.c @@ -31,6 +31,7 @@ #include #include #include +#include #include #include #include @@ -70,6 +71,9 @@ /* Picks up late kicks after list walk but before schedule() */ static int hvc_kicked; +/* hvc_init is triggered from hvc_alloc, i.e. only when actually used */ +static atomic_t hvc_needs_init __read_mostly = ATOMIC_INIT(-1); + static int hvc_init(void); #ifdef CONFIG_MAGIC_SYSRQ @@ -186,7 +190,7 @@ return hvc_driver; } -static int __init hvc_console_setup(struct console *co, char *options) +static int hvc_console_setup(struct console *co, char *options) { if (co->index < 0 || co->index >= MAX_NR_HVC_CONSOLES) return -ENODEV; @@ -851,7 +855,7 @@ int i; /* We wait until a driver actually comes along */ - if (!hvc_driver) { + if (atomic_inc_not_zero(&hvc_needs_init)) { int err = hvc_init(); if (err) return ERR_PTR(err); --- linux-3.13.0.orig/drivers/tty/hvc/hvc_xen.c +++ linux-3.13.0/drivers/tty/hvc/hvc_xen.c @@ -299,11 +299,27 @@ return 0; } +static void xen_console_update_evtchn(struct xencons_info *info) +{ + if (xen_hvm_domain()) { + uint64_t v; + int err; + + err = hvm_get_parameter(HVM_PARAM_CONSOLE_EVTCHN, &v); + if (!err && v) + info->evtchn = v; + } else + info->evtchn = xen_start_info->console.domU.evtchn; +} + void xen_console_resume(void) { struct xencons_info *info = vtermno_to_xencons(HVC_COOKIE); - if (info != NULL && info->irq) + if (info != NULL && info->irq) { + if (!xen_initial_domain()) + xen_console_update_evtchn(info); rebind_evtchn_irq(info->evtchn, info->irq); + } } static void xencons_disconnect_backend(struct xencons_info *info) --- linux-3.13.0.orig/drivers/tty/ipwireless/tty.c +++ linux-3.13.0/drivers/tty/ipwireless/tty.c @@ -177,9 +177,6 @@ ": %d chars not inserted to flip buffer!\n", length - work); - /* - * This may sleep if ->low_latency is set - */ if (work) tty_flip_buffer_push(&tty->port); } --- linux-3.13.0.orig/drivers/tty/n_gsm.c +++ linux-3.13.0/drivers/tty/n_gsm.c @@ -1089,6 +1089,7 @@ { unsigned int addr = 0; unsigned int modem = 0; + unsigned int brk = 0; struct gsm_dlci *dlci; int len = clen; u8 *dp = data; @@ -1115,6 +1116,16 @@ if (len == 0) return; } + len--; + if (len > 0) { + while (gsm_read_ea(&brk, *dp++) == 0) { + len--; + if (len == 0) + return; + } + modem <<= 7; + modem |= (brk & 0x7f); + } tty = tty_port_tty_get(&dlci->port); gsm_process_modem(tty, dlci, modem, clen); if (tty) { --- linux-3.13.0.orig/drivers/tty/n_tty.c +++ linux-3.13.0/drivers/tty/n_tty.c @@ -105,6 +105,7 @@ /* must hold exclusive termios_rwsem to reset these */ unsigned char lnext:1, erasing:1, raw:1, real_raw:1, icanon:1; + unsigned char push:1; /* shared by producer and consumer */ char read_buf[N_TTY_BUF_SIZE]; @@ -160,6 +161,17 @@ return put_user(x, ptr); } +static inline int tty_copy_to_user(struct tty_struct *tty, + void __user *to, + const void *from, + unsigned long n) +{ + struct n_tty_data *ldata = tty->disc_data; + + tty_audit_add_data(tty, to, n, ldata->icanon); + return copy_to_user(to, from, n); +} + static int receive_room(struct tty_struct *tty) { struct n_tty_data *ldata = tty->disc_data; @@ -246,8 +258,6 @@ static void n_tty_check_throttle(struct tty_struct *tty) { - if (tty->driver->type == TTY_DRIVER_TYPE_PTY) - return; /* * Check the remaining room for the input canonicalization * mode. We don't want to throttle the driver if we're in @@ -267,15 +277,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_set_room(tty); - n_tty_write_wakeup(tty->link); - wake_up_interruptible_poll(&tty->link->write_wait, POLLOUT); + tty_wakeup(tty->link); return; } @@ -319,7 +327,8 @@ static inline void put_tty_queue(unsigned char c, struct n_tty_data *ldata) { - *read_buf_addr(ldata, ldata->read_head++) = c; + *read_buf_addr(ldata, ldata->read_head) = c; + ldata->read_head++; } /** @@ -342,6 +351,7 @@ ldata->erasing = 0; bitmap_zero(ldata->read_flags, N_TTY_BUF_SIZE); + ldata->push = 0; } static void n_tty_packet_mode_flush(struct tty_struct *tty) @@ -813,8 +823,7 @@ struct n_tty_data *ldata = tty->disc_data; size_t echoed; - if ((!L_ECHO(tty) && !L_ECHONL(tty)) || - ldata->echo_mark == ldata->echo_tail) + if (ldata->echo_mark == ldata->echo_tail) return; mutex_lock(&ldata->output_lock); @@ -1238,7 +1247,8 @@ if (L_ECHO(tty)) { echo_char(c, tty); commit_echoes(tty); - } + } else + process_echoes(tty); isig(signal, tty); return; } @@ -1269,7 +1279,7 @@ if (I_IXON(tty)) { if (c == START_CHAR(tty)) { start_tty(tty); - commit_echoes(tty); + process_echoes(tty); return 0; } if (c == STOP_CHAR(tty)) { @@ -1373,8 +1383,7 @@ put_tty_queue(c, ldata); ldata->canon_head = ldata->read_head; kill_fasync(&tty->fasync, SIGIO, POLL_IN); - if (waitqueue_active(&tty->read_wait)) - wake_up_interruptible(&tty->read_wait); + wake_up_interruptible(&tty->read_wait); return 0; } } @@ -1509,23 +1518,6 @@ n_tty_receive_char_flagged(tty, c, flag); } -/** - * n_tty_receive_buf - data receive - * @tty: terminal device - * @cp: buffer - * @fp: flag buffer - * @count: characters - * - * Called by the terminal driver when a block of characters has - * been received. This function must be called from soft contexts - * not from interrupt context. The driver is responsible for making - * calls one at a time and in order (or using flush_to_ldisc) - * - * n_tty_receive_buf()/producer path: - * claims non-exclusive termios_rwsem - * publishes read_head and canon_head - */ - static void n_tty_receive_buf_real_raw(struct tty_struct *tty, const unsigned char *cp, char *fp, int count) @@ -1676,52 +1668,89 @@ if ((!ldata->icanon && (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(&tty->read_wait); + wake_up_interruptible(&tty->read_wait); } } -static void n_tty_receive_buf(struct tty_struct *tty, const unsigned char *cp, - char *fp, int count) +/** + * n_tty_receive_buf_common - process input + * @tty: device to receive input + * @cp: input chars + * @fp: flags for each char (if NULL, all chars are TTY_NORMAL) + * @count: number of input chars in @cp + * + * Called by the terminal driver when a block of characters has + * been received. This function must be called from soft contexts + * not from interrupt context. The driver is responsible for making + * calls one at a time and in order (or using flush_to_ldisc) + * + * Returns the # of input chars from @cp which were processed. + * + * In canonical mode, the maximum line length is 4096 chars (including + * the line termination char); lines longer than 4096 chars are + * truncated. After 4095 chars, input data is still processed but + * not stored. Overflow processing ensures the tty can always + * receive more input until at least one line can be read. + * + * In non-canonical mode, the read buffer will only accept 4095 chars; + * this provides the necessary space for a newline char if the input + * mode is switched to canonical. + * + * Note it is possible for the read buffer to _contain_ 4096 chars + * in non-canonical mode: the read buffer could already contain the + * maximum canon line of 4096 chars when the mode is switched to + * non-canonical. + * + * n_tty_receive_buf()/producer path: + * claims non-exclusive termios_rwsem + * publishes commit_head or canon_head + */ +static int +n_tty_receive_buf_common(struct tty_struct *tty, const unsigned char *cp, + char *fp, int count, int flow) { - int room, n; + struct n_tty_data *ldata = tty->disc_data; + int room, n, rcvd = 0, overflow; down_read(&tty->termios_rwsem); while (1) { - room = receive_room(tty); + /* + * When PARMRK is set, each input char may take up to 3 chars + * in the read buf; reduce the buffer space avail by 3x + * + * If we are doing input canonicalization, and there are no + * pending newlines, let characters through without limit, so + * that erase characters will be handled. Other excess + * characters will be beeped. + * + * paired with store in *_copy_from_read_buf() -- guarantees + * the consumer has loaded the data in read_buf up to the new + * read_tail (so this producer will not overwrite unread data) + */ + size_t tail = ldata->read_tail; + + room = N_TTY_BUF_SIZE - (ldata->read_head - tail); + if (I_PARMRK(tty)) + room = (room + 2) / 3; + room--; + if (room <= 0) { + overflow = ldata->icanon && ldata->canon_head == tail; + if (overflow && room < 0) + ldata->read_head--; + room = overflow; + ldata->no_room = flow && !room; + } else + overflow = 0; + n = min(count, room); if (!n) break; - __receive_buf(tty, cp, fp, n); - cp += n; - if (fp) - fp += n; - count -= n; - } - - tty->receive_room = room; - n_tty_check_throttle(tty); - up_read(&tty->termios_rwsem); -} -static int n_tty_receive_buf2(struct tty_struct *tty, const unsigned char *cp, - char *fp, int count) -{ - struct n_tty_data *ldata = tty->disc_data; - int room, n, rcvd = 0; - - down_read(&tty->termios_rwsem); + /* ignore parity errors if handling overflow */ + if (!overflow || !fp || *fp != TTY_PARITY) + __receive_buf(tty, cp, fp, n); - while (1) { - room = receive_room(tty); - n = min(count, room); - if (!n) { - if (!room) - ldata->no_room = 1; - break; - } - __receive_buf(tty, cp, fp, n); cp += n; if (fp) fp += n; @@ -1730,12 +1759,34 @@ } tty->receive_room = room; - n_tty_check_throttle(tty); + + /* Unthrottle if handling overflow on pty */ + if (tty->driver->type == TTY_DRIVER_TYPE_PTY) { + if (overflow) { + tty_set_flow_change(tty, TTY_UNTHROTTLE_SAFE); + tty_unthrottle_safe(tty); + __tty_set_flow_change(tty, 0); + } + } else + n_tty_check_throttle(tty); + up_read(&tty->termios_rwsem); return rcvd; } +static void n_tty_receive_buf(struct tty_struct *tty, const unsigned char *cp, + char *fp, int count) +{ + n_tty_receive_buf_common(tty, cp, fp, count, 0); +} + +static int n_tty_receive_buf2(struct tty_struct *tty, const unsigned char *cp, + char *fp, int count) +{ + return n_tty_receive_buf_common(tty, cp, fp, count, 1); +} + int is_ignored(int sig) { return (sigismember(¤t->blocked, sig) || @@ -1762,7 +1813,16 @@ if (!old || (old->c_lflag ^ tty->termios.c_lflag) & ICANON) { bitmap_zero(ldata->read_flags, N_TTY_BUF_SIZE); - ldata->line_start = ldata->canon_head = ldata->read_tail; + ldata->line_start = ldata->read_tail; + if (!L_ICANON(tty) || !read_cnt(ldata)) { + ldata->canon_head = ldata->read_tail; + ldata->push = 0; + } else { + set_bit((ldata->read_head - 1) & (N_TTY_BUF_SIZE - 1), + ldata->read_flags); + ldata->canon_head = ldata->read_head; + ldata->push = 1; + } ldata->erasing = 0; ldata->lnext = 0; } @@ -1821,8 +1881,10 @@ * Fix tty hang when I_IXON(tty) is cleared, but the tty * been stopped by STOP_CHAR(tty) before it. */ - if (!I_IXON(tty) && old && (old->c_iflag & IXON) && !tty->flow_stopped) + if (!I_IXON(tty) && old && (old->c_iflag & IXON) && !tty->flow_stopped) { start_tty(tty); + process_echoes(tty); + } /* The termios change make the tty ready for I/O */ wake_up_interruptible(&tty->write_wait); @@ -1892,14 +1954,15 @@ return -ENOMEM; } -static inline int input_available_p(struct tty_struct *tty, int amt) +static inline int input_available_p(struct tty_struct *tty, int poll) { struct n_tty_data *ldata = tty->disc_data; + int amt = poll && !TIME_CHAR(tty) && MIN_CHAR(tty) ? MIN_CHAR(tty) : 1; if (ldata->icanon && !L_EXTPROC(tty)) { if (ldata->canon_head != ldata->read_tail) return 1; - } else if (read_cnt(ldata) >= (amt ? amt : 1)) + } else if (read_cnt(ldata) >= amt) return 1; return 0; @@ -1965,6 +2028,12 @@ * it copies one line of input up to and including the line-delimiting * character into the user-space buffer. * + * NB: When termios is changed from non-canonical to canonical mode and + * the read buffer contains data, n_tty_set_termios() simulates an EOF + * push (as if C-d were input) _without_ the DISABLED_CHAR in the buffer. + * This causes data already processed as input to be immediately available + * as input although a newline has not been received. + * * Called under the atomic_read_lock mutex * * n_tty_read()/consumer path: @@ -1981,13 +2050,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, read_cnt(ldata)); - if (!n) + if (!*nr) return 0; + n = min(*nr + 1, read_cnt(ldata)); + tail = ldata->read_tail & (N_TTY_BUF_SIZE - 1); size = min_t(size_t, tail + n, N_TTY_BUF_SIZE); @@ -2008,24 +2077,23 @@ n = eol - tail; if (n > 4096) n += 4096; - n += found; - c = n; + c = n + found; - if (found && 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", __func__, eol, found, n, c, size, more); if (n > size) { - ret = copy_to_user(*b, read_buf_addr(ldata, tail), size); + ret = tty_copy_to_user(tty, *b, read_buf_addr(ldata, tail), size); if (ret) return -EFAULT; - ret = copy_to_user(*b + size, ldata->read_buf, n - size); + ret = tty_copy_to_user(tty, *b + size, ldata->read_buf, n - size); } else - ret = copy_to_user(*b, read_buf_addr(ldata, tail), n); + ret = tty_copy_to_user(tty, *b, read_buf_addr(ldata, tail), n); if (ret) return -EFAULT; @@ -2038,10 +2106,13 @@ ldata->read_tail += c; if (found) { - ldata->line_start = ldata->read_tail; + if (!ldata->push) + ldata->line_start = ldata->read_tail; + else + 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 *, @@ -2229,10 +2300,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; @@ -2343,8 +2411,12 @@ if (tty->ops->flush_chars) tty->ops->flush_chars(tty); } else { + struct n_tty_data *ldata = tty->disc_data; + while (nr > 0) { + mutex_lock(&ldata->output_lock); c = tty->ops->write(tty, b, nr); + mutex_unlock(&ldata->output_lock); if (c < 0) { retval = c; goto break_out; @@ -2398,12 +2470,17 @@ poll_wait(file, &tty->read_wait, wait); poll_wait(file, &tty->write_wait, wait); - if (input_available_p(tty, TIME_CHAR(tty) ? 0 : MIN_CHAR(tty))) + if (test_bit(TTY_OTHER_CLOSED, &tty->flags)) + mask |= POLLHUP; + if (input_available_p(tty, 1)) mask |= POLLIN | POLLRDNORM; + else if (mask & POLLHUP) { + tty_flush_to_ldisc(tty); + if (input_available_p(tty, 1)) + mask |= POLLIN | POLLRDNORM; + } if (tty->packet && tty->link->ctrl_status) mask |= POLLPRI | POLLIN | POLLRDNORM; - if (test_bit(TTY_OTHER_CLOSED, &tty->flags)) - mask |= POLLHUP; if (tty_hung_up_p(file)) mask |= POLLHUP; if (!(mask & (POLLHUP | POLLIN | POLLRDNORM))) { --- linux-3.13.0.orig/drivers/tty/pty.c +++ linux-3.13.0/drivers/tty/pty.c @@ -209,6 +209,9 @@ unsigned long flags; struct pid *pgrp; + if (sig != SIGINT && sig != SIGQUIT && sig != SIGTSTP) + return -EINVAL; + if (tty->link) { spin_lock_irqsave(&tty->link->ctrl_lock, flags); pgrp = get_pid(tty->link->pgrp); @@ -614,7 +617,17 @@ /* 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; + + if (ptmx_inode) { + devpts_kill_index(ptmx_inode, tty->index); + devpts_del_ref(ptmx_inode); + } } static const struct tty_operations ptm_unix98_ops = { @@ -705,6 +718,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-3.13.0.orig/drivers/tty/serial/8250/8250_core.c +++ linux-3.13.0/drivers/tty/serial/8250/8250_core.c @@ -555,7 +555,7 @@ */ if ((p->port.type == PORT_XR17V35X) || (p->port.type == PORT_XR17D15X)) { - serial_out(p, UART_EXAR_SLEEP, 0xff); + serial_out(p, UART_EXAR_SLEEP, sleep ? 0xff : 0); return; } @@ -686,22 +686,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; @@ -1520,7 +1514,7 @@ status = serial8250_rx_chars(up, status); } serial8250_modem_status(up); - if (status & UART_LSR_THRE) + if (!up->dma && (status & UART_LSR_THRE)) serial8250_tx_chars(up); spin_unlock_irqrestore(&port->lock, flags); @@ -2334,9 +2328,11 @@ * the trigger, or the MCR RTS bit is cleared. In the case where * the remote UART is not using CTS auto flow control, we must * have sufficient FIFO entries for the latency of the remote - * UART to respond. IOW, at least 32 bytes of FIFO. + * UART to respond. IOW, at least 32 bytes of FIFO. Also enable + * AFE if hw flow control is supported */ - if (up->capabilities & UART_CAP_AFE && port->fifosize >= 32) { + if ((up->capabilities & UART_CAP_AFE && (port->fifosize >= 32)) || + (port->flags & UPF_HARD_FLOW)) { up->mcr &= ~UART_MCR_AFE; if (termios->c_cflag & CRTSCTS) up->mcr |= UART_MCR_AFE; @@ -2670,6 +2666,10 @@ if (port->type == PORT_16550A && port->iotype == UPIO_AU) up->bugs |= UART_BUG_NOMSR; + /* HW bugs may trigger IRQ while IIR == NO_INT */ + if (port->type == PORT_TEGRA) + up->bugs |= UART_BUG_NOMSR; + if (port->type != PORT_UNKNOWN && flags & UART_CONFIG_IRQ) autoconfig_irq(up); --- linux-3.13.0.orig/drivers/tty/serial/8250/8250_dma.c +++ linux-3.13.0/drivers/tty/serial/8250/8250_dma.c @@ -20,12 +20,15 @@ struct uart_8250_port *p = param; struct uart_8250_dma *dma = p->dma; struct circ_buf *xmit = &p->port.state->xmit; - - dma->tx_running = 0; + unsigned long flags; dma_sync_single_for_cpu(dma->txchan->device->dev, dma->tx_addr, UART_XMIT_SIZE, DMA_TO_DEVICE); + spin_lock_irqsave(&p->port.lock, flags); + + dma->tx_running = 0; + xmit->tail += dma->tx_size; xmit->tail &= UART_XMIT_SIZE - 1; p->port.icount.tx += dma->tx_size; @@ -35,6 +38,8 @@ if (!uart_circ_empty(xmit) && !uart_tx_stopped(&p->port)) serial8250_tx_dma(p); + + spin_unlock_irqrestore(&p->port.lock, flags); } static void __dma_rx_complete(void *param) --- linux-3.13.0.orig/drivers/tty/serial/8250/8250_pci.c +++ linux-3.13.0/drivers/tty/serial/8250/8250_pci.c @@ -67,7 +67,7 @@ "Please send the output of lspci -vv, this\n" "message (0x%04x,0x%04x,0x%04x,0x%04x), the\n" "manufacturer and name of serial board or\n" - "modem board to rmk+serial@arm.linux.org.uk.\n", + "modem board to .\n", pci_name(dev), str, dev->vendor, dev->device, dev->subsystem_vendor, dev->subsystem_device); } @@ -1259,10 +1259,10 @@ unsigned long base = pci_resource_start(dev, 0); if (base) { u32 tmp; - outl(inl(base + 0x38), base + 0x38); + outl(inl(base + 0x38) | 0x00002000, base + 0x38); tmp = inl(base + 0x3c); outl(tmp | 0x01000000, base + 0x3c); - outl(tmp, base + 0x3c); + outl(tmp &= ~0x01000000, base + 0x3c); } } return 0; @@ -1613,6 +1613,9 @@ #endif } +#define PCI_DEVICE_ID_EXAR_XR17V4358 0x4358 +#define PCI_DEVICE_ID_EXAR_XR17V8358 0x8358 + static int pci_xr17c154_setup(struct serial_private *priv, const struct pciserial_board *board, @@ -1622,6 +1625,15 @@ return pci_default_setup(priv, board, port, idx); } +static inline int +xr17v35x_has_slave(struct serial_private *priv) +{ + const int dev_id = priv->dev->device; + + return ((dev_id == PCI_DEVICE_ID_EXAR_XR17V4358) || + (dev_id == PCI_DEVICE_ID_EXAR_XR17V8358)); +} + static int pci_xr17v35x_setup(struct serial_private *priv, const struct pciserial_board *board, @@ -1636,6 +1648,13 @@ port->port.flags |= UPF_EXAR_EFR; /* + * Setup the uart clock for the devices on expansion slot to + * half the clock speed of the main chip (which is 125MHz) + */ + if (xr17v35x_has_slave(priv) && idx >= 8) + port->port.uartclk = (7812500 * 16 / 2); + + /* * Setup Multipurpose Input/Output pins. */ if (idx == 0) { @@ -1744,6 +1763,7 @@ #define PCI_DEVICE_ID_TITAN_800E 0xA014 #define PCI_DEVICE_ID_TITAN_200EI 0xA016 #define PCI_DEVICE_ID_TITAN_200EISI 0xA017 +#define PCI_DEVICE_ID_TITAN_200V3 0xA306 #define PCI_DEVICE_ID_TITAN_400V3 0xA310 #define PCI_DEVICE_ID_TITAN_410V3 0xA312 #define PCI_DEVICE_ID_TITAN_800V3 0xA314 @@ -1765,11 +1785,18 @@ #define PCI_DEVICE_ID_COMMTECH_4222PCIE 0x0022 #define PCI_DEVICE_ID_BROADCOM_TRUMANAGE 0x160a #define PCI_DEVICE_ID_AMCC_ADDIDATA_APCI7800 0x818e +#define PCI_DEVICE_ID_INTEL_QRK_UART 0x0936 #define PCI_VENDOR_ID_SUNIX 0x1fd4 #define PCI_DEVICE_ID_SUNIX_1999 0x1999 +#define PCI_VENDOR_ID_PERICOM 0x12D8 +#define PCI_DEVICE_ID_PERICOM_PI7C9X7951 0x7951 +#define PCI_DEVICE_ID_PERICOM_PI7C9X7952 0x7952 +#define PCI_DEVICE_ID_PERICOM_PI7C9X7954 0x7954 +#define PCI_DEVICE_ID_PERICOM_PI7C9X7958 0x7958 + /* Unknown vendors/cards - this should not be in linux/pci_ids.h */ #define PCI_SUBDEVICE_ID_UNKNOWN_0x1584 0x1584 #define PCI_SUBDEVICE_ID_UNKNOWN_0x1588 0x1588 @@ -1875,6 +1902,13 @@ .subdevice = PCI_ANY_ID, .setup = byt_serial_setup, }, + { + .vendor = PCI_VENDOR_ID_INTEL, + .device = PCI_DEVICE_ID_INTEL_QRK_UART, + .subvendor = PCI_ANY_ID, + .subdevice = PCI_ANY_ID, + .setup = pci_default_setup, + }, /* * ITE */ @@ -2042,27 +2076,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 */ @@ -2257,6 +2276,20 @@ .subdevice = PCI_ANY_ID, .setup = pci_xr17v35x_setup, }, + { + .vendor = PCI_VENDOR_ID_EXAR, + .device = PCI_DEVICE_ID_EXAR_XR17V4358, + .subvendor = PCI_ANY_ID, + .subdevice = PCI_ANY_ID, + .setup = pci_xr17v35x_setup, + }, + { + .vendor = PCI_VENDOR_ID_EXAR, + .device = PCI_DEVICE_ID_EXAR_XR17V8358, + .subvendor = PCI_ANY_ID, + .subdevice = PCI_ANY_ID, + .setup = pci_xr17v35x_setup, + }, /* * Xircom cards */ @@ -2697,6 +2730,8 @@ pbn_exar_XR17V352, pbn_exar_XR17V354, pbn_exar_XR17V358, + pbn_exar_XR17V4358, + pbn_exar_XR17V8358, pbn_exar_ibm_saturn, pbn_pasemi_1682M, pbn_ni8430_2, @@ -2709,12 +2744,17 @@ pbn_ADDIDATA_PCIe_8_3906250, pbn_ce4100_1_115200, pbn_byt, + pbn_qrk, pbn_omegapci, pbn_NETMOS9900_2s_115200, pbn_brcm_trumanage, pbn_fintek_4, pbn_fintek_8, pbn_fintek_12, + pbn_pericom_PI7C9X7951, + pbn_pericom_PI7C9X7952, + pbn_pericom_PI7C9X7954, + pbn_pericom_PI7C9X7958, }; /* @@ -3365,6 +3405,22 @@ .reg_shift = 0, .first_offset = 0, }, + [pbn_exar_XR17V4358] = { + .flags = FL_BASE0, + .num_ports = 12, + .base_baud = 7812500, + .uart_offset = 0x400, + .reg_shift = 0, + .first_offset = 0, + }, + [pbn_exar_XR17V8358] = { + .flags = FL_BASE0, + .num_ports = 16, + .base_baud = 7812500, + .uart_offset = 0x400, + .reg_shift = 0, + .first_offset = 0, + }, [pbn_exar_ibm_saturn] = { .flags = FL_BASE0, .num_ports = 1, @@ -3455,6 +3511,12 @@ .uart_offset = 0x80, .reg_shift = 2, }, + [pbn_qrk] = { + .flags = FL_BASE0, + .num_ports = 1, + .base_baud = 2764800, + .reg_shift = 2, + }, [pbn_omegapci] = { .flags = FL_BASE0, .num_ports = 8, @@ -3490,6 +3552,33 @@ .base_baud = 115200, .first_offset = 0x40, }, + /* + * 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[] = { @@ -4427,6 +4516,9 @@ { PCI_VENDOR_ID_TITAN, PCI_DEVICE_ID_TITAN_200EISI, PCI_ANY_ID, PCI_ANY_ID, 0, 0, pbn_oxsemi_2_4000000 }, + { PCI_VENDOR_ID_TITAN, PCI_DEVICE_ID_TITAN_200V3, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, + pbn_b0_bt_2_921600 }, { PCI_VENDOR_ID_TITAN, PCI_DEVICE_ID_TITAN_400V3, PCI_ANY_ID, PCI_ANY_ID, 0, 0, pbn_b0_4_921600 }, @@ -4712,7 +4804,7 @@ 0, 0, pbn_exar_XR17C158 }, /* - * Exar Corp. XR17V35[248] Dual/Quad/Octal PCIe UARTs + * Exar Corp. XR17V[48]35[248] Dual/Quad/Octal/Hexa PCIe UARTs */ { PCI_VENDOR_ID_EXAR, PCI_DEVICE_ID_EXAR_XR17V352, PCI_ANY_ID, PCI_ANY_ID, @@ -4726,7 +4818,33 @@ PCI_ANY_ID, PCI_ANY_ID, 0, 0, pbn_exar_XR17V358 }, - + { PCI_VENDOR_ID_EXAR, PCI_DEVICE_ID_EXAR_XR17V4358, + PCI_ANY_ID, PCI_ANY_ID, + 0, + 0, pbn_exar_XR17V4358 }, + { PCI_VENDOR_ID_EXAR, PCI_DEVICE_ID_EXAR_XR17V8358, + PCI_ANY_ID, PCI_ANY_ID, + 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) */ @@ -5146,6 +5264,12 @@ pbn_byt }, /* + * Intel Quark x1000 + */ + { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_QRK_UART, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, + pbn_qrk }, + /* * Cronyx Omega PCI */ { PCI_VENDOR_ID_PLX, PCI_DEVICE_ID_PLX_CRONYX_OMEGA, --- linux-3.13.0.orig/drivers/tty/serial/8250/8250_pnp.c +++ linux-3.13.0/drivers/tty/serial/8250/8250_pnp.c @@ -365,6 +365,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-3.13.0.orig/drivers/tty/serial/amba-pl011.c +++ linux-3.13.0/drivers/tty/serial/amba-pl011.c @@ -1537,6 +1537,8 @@ /* * Provoke TX FIFO interrupt into asserting. */ + spin_lock_irq(&uap->port.lock); + cr = UART01x_CR_UARTEN | UART011_CR_TXE | UART011_CR_LBE; writew(cr, uap->port.membase + UART011_CR); writew(0, uap->port.membase + UART011_FBRD); @@ -1561,6 +1563,8 @@ cr |= UART01x_CR_UARTEN | UART011_CR_RXE | UART011_CR_TXE; writew(cr, uap->port.membase + UART011_CR); + spin_unlock_irq(&uap->port.lock); + /* * initialise the old status of the modem signals */ @@ -1629,11 +1633,13 @@ * it during startup(). */ uap->autorts = false; + spin_lock_irq(&uap->port.lock); cr = readw(uap->port.membase + UART011_CR); uap->old_cr = cr; cr &= UART011_CR_RTS | UART011_CR_DTR; cr |= UART01x_CR_UARTEN | UART011_CR_TXE; writew(cr, uap->port.membase + UART011_CR); + spin_unlock_irq(&uap->port.lock); /* * disable break condition and fifos --- linux-3.13.0.orig/drivers/tty/serial/atmel_serial.c +++ linux-3.13.0/drivers/tty/serial/atmel_serial.c @@ -757,6 +757,7 @@ config.direction = DMA_MEM_TO_DEV; config.dst_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE; config.dst_addr = port->mapbase + ATMEL_US_THR; + config.dst_maxburst = 1; ret = dmaengine_device_control(atmel_port->chan_tx, DMA_SLAVE_CONFIG, @@ -825,9 +826,6 @@ atmel_port->desc_rx = NULL; atmel_port->chan_rx = NULL; atmel_port->cookie_rx = -EINVAL; - - if (!atmel_port->is_usart) - del_timer_sync(&atmel_port->uart_timer); } static void atmel_rx_from_dma(struct uart_port *port) @@ -924,6 +922,7 @@ config.direction = DMA_DEV_TO_MEM; config.src_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE; config.src_addr = port->mapbase + ATMEL_US_RHR; + config.src_maxburst = 1; ret = dmaengine_device_control(atmel_port->chan_rx, DMA_SLAVE_CONFIG, @@ -1229,9 +1228,6 @@ DMA_FROM_DEVICE); kfree(pdc->buf); } - - if (!atmel_port->is_usart) - del_timer_sync(&atmel_port->uart_timer); } static void atmel_rx_from_pdc(struct uart_port *port) @@ -1604,12 +1600,13 @@ /* enable xmit & rcvr */ UART_PUT_CR(port, ATMEL_US_TXEN | ATMEL_US_RXEN); + setup_timer(&atmel_port->uart_timer, + atmel_uart_timer_callback, + (unsigned long)port); + if (atmel_use_pdc_rx(port)) { /* set UART timeout */ if (!atmel_port->is_usart) { - setup_timer(&atmel_port->uart_timer, - atmel_uart_timer_callback, - (unsigned long)port); mod_timer(&atmel_port->uart_timer, jiffies + uart_poll_timeout(port)); /* set USART timeout */ @@ -1624,9 +1621,6 @@ } else if (atmel_use_dma_rx(port)) { /* set UART timeout */ if (!atmel_port->is_usart) { - setup_timer(&atmel_port->uart_timer, - atmel_uart_timer_callback, - (unsigned long)port); mod_timer(&atmel_port->uart_timer, jiffies + uart_poll_timeout(port)); /* set USART timeout */ @@ -1650,12 +1644,30 @@ static void atmel_shutdown(struct uart_port *port) { struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); + + /* + * Prevent any tasklets being scheduled during + * cleanup + */ + del_timer_sync(&atmel_port->uart_timer); + /* - * Ensure everything is stopped. + * Clear out any scheduled tasklets before + * we destroy the buffers + */ + tasklet_kill(&atmel_port->tasklet); + + /* + * Ensure everything is stopped and + * disable all interrupts, port and break condition. */ atmel_stop_rx(port); atmel_stop_tx(port); + UART_PUT_CR(port, ATMEL_US_RSTSTA); + UART_PUT_IDR(port, -1); + + /* * Shut-down the DMA. */ @@ -1665,10 +1677,10 @@ atmel_port->release_tx(port); /* - * Disable all interrupts, port and break condition. + * Reset ring buffer pointers */ - UART_PUT_CR(port, ATMEL_US_RSTSTA); - UART_PUT_IDR(port, -1); + atmel_port->rx_ring.head = 0; + atmel_port->rx_ring.tail = 0; /* * Free the interrupt @@ -2382,7 +2394,7 @@ ret = atmel_init_port(port, pdev); if (ret) - goto err; + goto err_clear_bit; if (!atmel_use_pdc_rx(&port->uart)) { ret = -ENOMEM; @@ -2411,6 +2423,12 @@ device_init_wakeup(&pdev->dev, 1); platform_set_drvdata(pdev, port); + /* + * The peripheral clock has been disabled by atmel_init_port(): + * enable it before accessing I/O registers + */ + clk_prepare_enable(port->clk); + if (port->rs485.flags & SER_RS485_ENABLED) { UART_PUT_MR(&port->uart, ATMEL_US_USMODE_NORMAL); UART_PUT_CR(&port->uart, ATMEL_US_RTSEN); @@ -2421,6 +2439,12 @@ */ atmel_get_ip_name(&port->uart); + /* + * The peripheral clock can now safely be disabled till the port + * is used + */ + clk_disable_unprepare(port->clk); + return 0; err_add_port: @@ -2431,6 +2455,8 @@ clk_put(port->clk); port->clk = NULL; } +err_clear_bit: + clear_bit(port->uart.line, atmel_ports_in_use); err: return ret; } @@ -2441,11 +2467,12 @@ struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); int ret = 0; + tasklet_kill(&atmel_port->tasklet); + device_init_wakeup(&pdev->dev, 0); ret = uart_remove_one_port(&atmel_uart, port); - tasklet_kill(&atmel_port->tasklet); kfree(atmel_port->rx_ring.buf); /* "port" is allocated statically, so we shouldn't free it */ --- linux-3.13.0.orig/drivers/tty/serial/fsl_lpuart.c +++ linux-3.13.0/drivers/tty/serial/fsl_lpuart.c @@ -362,6 +362,9 @@ writeb(val | UARTPFIFO_TXFE | UARTPFIFO_RXFE, sport->port.membase + UARTPFIFO); + /* explicitly clear RDRF */ + readb(sport->port.membase + UARTSR1); + /* flush Tx and Rx FIFO */ writeb(UARTCFIFO_TXFLUSH | UARTCFIFO_RXFLUSH, sport->port.membase + UARTCFIFO); --- linux-3.13.0.orig/drivers/tty/serial/imx.c +++ linux-3.13.0/drivers/tty/serial/imx.c @@ -899,6 +899,14 @@ status = dmaengine_tx_status(chan, (dma_cookie_t)0, &state); count = RX_BUF_SIZE - state.residue; + + if (readl(sport->port.membase + USR2) & USR2_IDLE) { + /* In condition [3] the SDMA counted up too early */ + count--; + + writel(USR2_IDLE, sport->port.membase + USR2); + } + dev_dbg(sport->port.dev, "We get %d bytes.\n", count); if (count) { --- linux-3.13.0.orig/drivers/tty/serial/of_serial.c +++ linux-3.13.0/drivers/tty/serial/of_serial.c @@ -183,6 +183,10 @@ "auto-flow-control")) port8250.capabilities |= UART_CAP_AFE; + if (of_property_read_bool(ofdev->dev.of_node, + "has-hw-flow-control")) + port8250.port.flags |= UPF_HARD_FLOW; + ret = serial8250_register_8250_port(&port8250); break; } @@ -262,7 +266,6 @@ { .compatible = "ibm,qpace-nwp-serial", .data = (void *)PORT_NWPSERIAL, }, #endif - { .type = "serial", .data = (void *)PORT_UNKNOWN, }, { /* end of list */ }, }; --- linux-3.13.0.orig/drivers/tty/serial/omap-serial.c +++ linux-3.13.0/drivers/tty/serial/omap-serial.c @@ -225,14 +225,19 @@ if (enable) enable_irq(up->wakeirq); else - disable_irq(up->wakeirq); + disable_irq_nosync(up->wakeirq); } static void serial_omap_enable_wakeup(struct uart_omap_port *up, bool enable) { struct omap_uart_port_info *pdata = dev_get_platdata(up->dev); + if (enable == up->wakeups_enabled) + return; + serial_omap_enable_wakeirq(up, enable); + up->wakeups_enabled = enable; + if (!pdata || !pdata->enable_wakeup) return; @@ -255,8 +260,16 @@ { unsigned int n13 = port->uartclk / (13 * baud); unsigned int n16 = port->uartclk / (16 * baud); - int baudAbsDiff13 = baud - (port->uartclk / (13 * n13)); - int baudAbsDiff16 = baud - (port->uartclk / (16 * n16)); + int baudAbsDiff13; + int baudAbsDiff16; + + if (n13 == 0) + n13 = 1; + if (n16 == 0) + n16 = 1; + + baudAbsDiff13 = baud - (port->uartclk / (13 * n13)); + baudAbsDiff16 = baud - (port->uartclk / (16 * n16)); if (baudAbsDiff13 < 0) baudAbsDiff13 = -baudAbsDiff13; if (baudAbsDiff16 < 0) @@ -738,9 +751,6 @@ return retval; } disable_irq(up->wakeirq); - } else { - dev_info(up->port.dev, "no wakeirq for uart%d\n", - up->port.line); } dev_dbg(up->port.dev, "serial_omap_startup+%d\n", up->port.line); @@ -1355,7 +1365,7 @@ /* Enable or disable the rs485 support */ static void -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 long flags; @@ -1370,8 +1380,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 */ - up->rs485 = *rs485conf; + up->rs485 = *rs485; /* * Just as a precaution, only allow rs485 @@ -1491,6 +1505,11 @@ uart_suspend_port(&serial_omap_reg, &up->port); flush_work(&up->qos_work); + if (device_may_wakeup(dev)) + serial_omap_enable_wakeup(up, true); + else + serial_omap_enable_wakeup(up, false); + return 0; } @@ -1498,6 +1517,9 @@ { struct uart_omap_port *up = dev_get_drvdata(dev); + if (device_may_wakeup(dev)) + serial_omap_enable_wakeup(up, false); + uart_resume_port(&serial_omap_reg, &up->port); return 0; @@ -1687,6 +1709,9 @@ up->port.iotype = UPIO_MEM; up->port.irq = uartirq; up->wakeirq = wakeirq; + if (!up->wakeirq) + dev_info(up->port.dev, "no wakeirq for uart%d\n", + up->port.line); up->port.regshift = 2; up->port.fifosize = 64; @@ -1867,17 +1892,7 @@ up->context_loss_cnt = serial_omap_get_context_loss_count(up); - if (device_may_wakeup(dev)) { - if (!up->wakeups_enabled) { - serial_omap_enable_wakeup(up, true); - up->wakeups_enabled = true; - } - } else { - if (up->wakeups_enabled) { - serial_omap_enable_wakeup(up, false); - up->wakeups_enabled = false; - } - } + serial_omap_enable_wakeup(up, true); up->latency = PM_QOS_CPU_DMA_LAT_DEFAULT_VALUE; schedule_work(&up->qos_work); @@ -1891,6 +1906,8 @@ int loss_cnt = serial_omap_get_context_loss_count(up); + serial_omap_enable_wakeup(up, false); + if (loss_cnt < 0) { dev_dbg(dev, "serial_omap_get_context_loss_count failed : %d\n", loss_cnt); --- linux-3.13.0.orig/drivers/tty/serial/samsung.c +++ linux-3.13.0/drivers/tty/serial/samsung.c @@ -544,11 +544,15 @@ unsigned int old) { struct s3c24xx_uart_port *ourport = to_ourport(port); + int timeout = 10000; ourport->pm_level = level; switch (level) { case 3: + while (--timeout && !s3c24xx_serial_txempty_nofifo(port)) + udelay(100); + if (!IS_ERR(ourport->baudclk)) clk_disable_unprepare(ourport->baudclk); --- linux-3.13.0.orig/drivers/tty/serial/serial_core.c +++ linux-3.13.0/drivers/tty/serial/serial_core.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -170,8 +171,12 @@ if (tty->termios.c_cflag & CBAUD) uart_set_mctrl(uport, TIOCM_RTS | TIOCM_DTR); } - - if (tty_port_cts_enabled(port)) { + /* + * if hw support flow control without software intervention, + * then skip the below check + */ + if (tty_port_cts_enabled(port) && + !(uport->flags & UPF_HARD_FLOW)) { spin_lock_irq(&uport->lock); if (!(uport->ops->get_mctrl(uport) & TIOCM_CTS)) tty->hw_stopped = 1; @@ -235,6 +240,9 @@ /* * Turn off DTR and RTS early. */ + if (uart_console(uport) && tty) + uport->cons->cflag = tty->termios.c_cflag; + if (!tty || (tty->termios.c_cflag & HUPCL)) uart_clear_mctrl(uport, TIOCM_DTR | TIOCM_RTS); @@ -350,7 +358,7 @@ * The spd_hi, spd_vhi, spd_shi, spd_warp kludge... * Die! Die! Die! */ - if (baud == 38400) + if (try == 0 && baud == 38400) baud = altbaud; /* @@ -2600,6 +2608,8 @@ spin_lock_init(&uport->lock); lockdep_set_class(&uport->lock, &port_lock_key); } + if (uport->cons && uport->dev) + of_console_check(uport->dev->of_node, uport->cons->name, uport->line); uart_configure_port(drv, state, uport); @@ -2754,7 +2764,9 @@ uport->icount.cts++; - if (tty_port_cts_enabled(port)) { + /* skip below code if the hw flow control is supported */ + if (tty_port_cts_enabled(port) && + !(uport->flags & UPF_HARD_FLOW)) { if (tty->hw_stopped) { if (status) { tty->hw_stopped = 0; --- linux-3.13.0.orig/drivers/tty/serial/sirfsoc_uart.c +++ linux-3.13.0/drivers/tty/serial/sirfsoc_uart.c @@ -540,8 +540,10 @@ wr_regl(port, ureg->sirfsoc_rx_dma_io_ctrl, rd_regl(port, ureg->sirfsoc_rx_dma_io_ctrl) | SIRFUART_IO_MODE); - sirfsoc_uart_pio_rx_chars(port, 4 - sirfport->rx_io_count); spin_unlock_irqrestore(&sirfport->rx_lock, flags); + spin_lock(&port->lock); + sirfsoc_uart_pio_rx_chars(port, 4 - sirfport->rx_io_count); + spin_unlock(&port->lock); if (sirfport->rx_io_count == 4) { spin_lock_irqsave(&sirfport->rx_lock, flags); sirfport->rx_io_count = 0; --- linux-3.13.0.orig/drivers/tty/serial/sunsab.c +++ linux-3.13.0/drivers/tty/serial/sunsab.c @@ -157,6 +157,15 @@ (up->port.line == up->port.cons->index)) saw_console_brk = 1; + if (count == 0) { + if (unlikely(stat->sreg.isr1 & SAB82532_ISR1_BRK)) { + stat->sreg.isr0 &= ~(SAB82532_ISR0_PERR | + SAB82532_ISR0_FERR); + up->port.icount.brk++; + uart_handle_break(&up->port); + } + } + for (i = 0; i < count; i++) { unsigned char ch = buf[i], flag; --- linux-3.13.0.orig/drivers/tty/serial/uartlite.c +++ linux-3.13.0/drivers/tty/serial/uartlite.c @@ -629,7 +629,8 @@ static int ulite_probe(struct platform_device *pdev) { - struct resource *res, *res2; + struct resource *res; + int irq; int id = pdev->id; #ifdef CONFIG_OF const __be32 *prop; @@ -643,11 +644,11 @@ if (!res) return -ENODEV; - res2 = platform_get_resource(pdev, IORESOURCE_IRQ, 0); - if (!res2) - return -ENODEV; + irq = platform_get_irq(pdev, 0); + if (irq <= 0) + return -ENXIO; - return ulite_assign(&pdev->dev, id, res->start, res2->start); + return ulite_assign(&pdev->dev, id, res->start, irq); } static int ulite_remove(struct platform_device *pdev) --- linux-3.13.0.orig/drivers/tty/serial/xilinx_uartps.c +++ linux-3.13.0/drivers/tty/serial/xilinx_uartps.c @@ -1340,9 +1340,9 @@ **/ static int xuartps_probe(struct platform_device *pdev) { - int rc; + int rc, irq; struct uart_port *port; - struct resource *res, *res2; + struct resource *res; struct xuartps *xuartps_data; xuartps_data = devm_kzalloc(&pdev->dev, sizeof(*xuartps_data), @@ -1378,9 +1378,9 @@ goto err_out_clk_disable; } - res2 = platform_get_resource(pdev, IORESOURCE_IRQ, 0); - if (!res2) { - rc = -ENODEV; + irq = platform_get_irq(pdev, 0); + if (irq <= 0) { + rc = -ENXIO; goto err_out_clk_disable; } @@ -1405,7 +1405,7 @@ * and triggers invocation of the config_port() entry point. */ port->mapbase = res->start; - port->irq = res2->start; + port->irq = irq; port->dev = &pdev->dev; port->uartclk = clk_get_rate(xuartps_data->refclk); port->private_data = xuartps_data; --- linux-3.13.0.orig/drivers/tty/sysrq.c +++ linux-3.13.0/drivers/tty/sysrq.c @@ -54,9 +54,6 @@ static int __read_mostly sysrq_enabled = CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE; static bool __read_mostly sysrq_always_enabled; -unsigned short platform_sysrq_reset_seq[] __weak = { KEY_RESERVED }; -int sysrq_reset_downtime_ms __weak; - static bool sysrq_on(void) { return sysrq_enabled || sysrq_always_enabled; @@ -565,6 +562,7 @@ EXPORT_SYMBOL(handle_sysrq); #ifdef CONFIG_INPUT +static int sysrq_reset_downtime_ms; /* Simple translation table for the SysRq keys */ static const unsigned char sysrq_xlate[KEY_CNT] = @@ -945,23 +943,8 @@ static inline void sysrq_register_handler(void) { - unsigned short key; int error; - int i; - - /* First check if a __weak interface was instantiated. */ - for (i = 0; i < ARRAY_SIZE(sysrq_reset_seq); i++) { - key = platform_sysrq_reset_seq[i]; - if (key == KEY_RESERVED || key > KEY_MAX) - break; - - sysrq_reset_seq[sysrq_reset_seq_len++] = key; - } - /* - * DT configuration takes precedence over anything that would - * have been defined via the __weak interface. - */ sysrq_of_get_keyreset_config(); error = input_register_handler(&sysrq_handler); --- linux-3.13.0.orig/drivers/tty/tty_buffer.c +++ linux-3.13.0/drivers/tty/tty_buffer.c @@ -248,7 +248,11 @@ if ((n = tty_buffer_alloc(port, size)) != NULL) { buf->tail = n; b->commit = b->used; - smp_mb(); + /* paired w/ barrier in flush_to_ldisc(); ensures the + * latest commit value can be read before the head is + * advanced to the next buffer + */ + smp_wmb(); b->next = n; } else size = left; @@ -332,14 +336,11 @@ * Takes any pending buffers and transfers their ownership to the * ldisc side of the queue. It then schedules those characters for * processing by the line discipline. - * Note that this function can only be used when the low_latency flag - * is unset. Otherwise the workqueue won't be flushed. */ void tty_schedule_flip(struct tty_port *port) { struct tty_bufhead *buf = &port->buf; - WARN_ON(port->low_latency); buf->tail->commit = buf->tail->used; schedule_work(&buf->work); @@ -413,7 +414,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; @@ -452,17 +453,24 @@ while (1) { struct tty_buffer *head = buf->head; + struct tty_buffer *next; int count; /* Ldisc or user is trying to gain exclusive access */ if (atomic_read(&buf->priority)) break; + next = head->next; + /* paired w/ barrier in __tty_buffer_request_room(); + * ensures commit value read is not stale if the head + * is advancing to the next buffer + */ + smp_rmb(); count = head->commit - head->read; if (!count) { - if (head->next == NULL) + if (next == NULL) break; - buf->head = head->next; + buf->head = next; tty_buffer_free(port, head); continue; } @@ -487,17 +495,15 @@ */ void tty_flush_to_ldisc(struct tty_struct *tty) { - if (!tty->port->low_latency) - flush_work(&tty->port->buf.work); + flush_work(&tty->port->buf.work); } /** * tty_flip_buffer_push - terminal * @port: tty port to push * - * Queue a push of the terminal flip buffers to the line discipline. This - * function must not be called from IRQ context if port->low_latency is - * set. + * Queue a push of the terminal flip buffers to the line discipline. + * Can be called from IRQ/atomic context. * * In the event of the queue being busy for flipping the work will be * held off and retried later. @@ -505,14 +511,7 @@ void tty_flip_buffer_push(struct tty_port *port) { - struct tty_bufhead *buf = &port->buf; - - buf->tail->commit = buf->tail->used; - - if (port->low_latency) - flush_to_ldisc(&buf->work); - else - schedule_work(&buf->work); + tty_schedule_flip(port); } EXPORT_SYMBOL(tty_flip_buffer_push); --- linux-3.13.0.orig/drivers/tty/tty_io.c +++ linux-3.13.0/drivers/tty/tty_io.c @@ -996,8 +996,8 @@ /* We limit tty time update visibility to every 8 seconds or so. */ static void tty_update_time(struct timespec *time) { - unsigned long sec = get_seconds() & ~7; - if ((long)(sec - time->tv_sec) > 0) + unsigned long sec = get_seconds(); + if (abs(sec - time->tv_sec) & ~7) time->tv_sec = sec; } @@ -1271,12 +1271,13 @@ * * Locking: None */ -static void tty_line_name(struct tty_driver *driver, int index, char *p) +static ssize_t tty_line_name(struct tty_driver *driver, int index, char *p) { if (driver->flags & TTY_DRIVER_UNNUMBERED_NODE) - strcpy(p, driver->name); + return sprintf(p, "%s", driver->name); else - sprintf(p, "%s%d", driver->name, index + driver->name_base); + return sprintf(p, "%s%d", driver->name, + index + driver->name_base); } /** @@ -1700,6 +1701,8 @@ int pty_master, tty_closing, o_tty_closing, do_sleep; int idx; char buf[64]; + long timeout = 0; + int once = 1; if (tty_paranoia_check(tty, inode, __func__)) return 0; @@ -1780,11 +1783,18 @@ if (!do_sleep) break; - printk(KERN_WARNING "%s: %s: read/write wait queue active!\n", - __func__, tty_name(tty, buf)); + if (once) { + once = 0; + printk(KERN_WARNING "%s: %s: read/write wait queue active!\n", + __func__, tty_name(tty, buf)); + } tty_unlock_pair(tty, o_tty); mutex_unlock(&tty_mutex); - schedule(); + schedule_timeout_killable(timeout); + if (timeout < 120 * HZ) + timeout = 2 * timeout + 1; + else + timeout = MAX_SCHEDULE_TIMEOUT; } /* @@ -2575,6 +2585,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 @@ -2788,7 +2820,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: @@ -3545,9 +3577,19 @@ if (i >= ARRAY_SIZE(cs)) break; } - while (i--) - count += sprintf(buf + count, "%s%d%c", - cs[i]->name, cs[i]->index, i ? ' ':'\n'); + while (i--) { + int index = cs[i]->index; + struct tty_driver *drv = cs[i]->device(cs[i], &index); + + /* don't resolve tty0 as some programs depend on it */ + if (drv && (cs[i]->index > 0 || drv->major != TTY_MAJOR)) + count += tty_line_name(drv, index, buf + count); + else + count += sprintf(buf + count, "%s%d", + cs[i]->name, cs[i]->index); + + count += sprintf(buf + count, "%c", i ? ' ':'\n'); + } console_unlock(); return count; --- linux-3.13.0.orig/drivers/tty/tty_ioctl.c +++ linux-3.13.0/drivers/tty/tty_ioctl.c @@ -217,11 +217,17 @@ #endif if (!timeout) timeout = MAX_SCHEDULE_TIMEOUT; + if (wait_event_interruptible_timeout(tty->write_wait, - !tty_chars_in_buffer(tty), timeout) >= 0) { - if (tty->ops->wait_until_sent) - tty->ops->wait_until_sent(tty, timeout); + !tty_chars_in_buffer(tty), timeout) < 0) { + return; } + + if (timeout == MAX_SCHEDULE_TIMEOUT) + timeout = 0; + + if (tty->ops->wait_until_sent) + tty->ops->wait_until_sent(tty, timeout); } EXPORT_SYMBOL(tty_wait_until_sent); --- linux-3.13.0.orig/drivers/tty/vt/consolemap.c +++ linux-3.13.0/drivers/tty/vt/consolemap.c @@ -540,6 +540,13 @@ /* Save original vc_unipagdir_loc in case we allocate a new one */ p = (struct uni_pagedir *)*vc->vc_uni_pagedir_loc; + + if (!p) { + err = -EINVAL; + + goto out_unlock; + } + if (p->readonly) { console_unlock(); return -EIO; @@ -633,6 +640,7 @@ set_inverse_transl(vc, p, i); /* Update inverse translations */ set_inverse_trans_unicode(vc, p); +out_unlock: console_unlock(); return err; } --- linux-3.13.0.orig/drivers/tty/vt/vt.c +++ linux-3.13.0/drivers/tty/vt/vt.c @@ -498,6 +498,7 @@ #endif if (DO_UPDATE(vc)) do_update_region(vc, (unsigned long) p, count); + notify_update(vc); } /* used by selection: complement pointer position */ @@ -514,6 +515,7 @@ scr_writew(old, screenpos(vc, old_offset, 1)); if (DO_UPDATE(vc)) vc->vc_sw->con_putc(vc, old, oldy, oldx); + notify_update(vc); } old_offset = offset; @@ -531,8 +533,8 @@ oldy = (offset >> 1) / vc->vc_cols; vc->vc_sw->con_putc(vc, new, oldy, oldx); } + notify_update(vc); } - } static void insert_char(struct vc_data *vc, unsigned int nr) @@ -1164,6 +1166,8 @@ scr_memsetw(vc->vc_screenbuf, vc->vc_video_erase_char, vc->vc_screenbuf_size >> 1); set_origin(vc); + if (CON_IS_VISIBLE(vc)) + update_screen(vc); /* fall through */ case 2: /* erase whole display */ count = vc->vc_cols * vc->vc_rows; --- linux-3.13.0.orig/drivers/uio/uio.c +++ linux-3.13.0/drivers/uio/uio.c @@ -847,7 +847,7 @@ info->uio_dev = idev; if (info->irq && (info->irq != UIO_IRQ_CUSTOM)) { - ret = devm_request_irq(parent, info->irq, uio_interrupt, + ret = devm_request_irq(idev->dev, info->irq, uio_interrupt, info->irq_flags, info->name, idev); if (ret) goto err_request_irq; --- linux-3.13.0.orig/drivers/usb/chipidea/ci.h +++ linux-3.13.0/drivers/usb/chipidea/ci.h @@ -135,6 +135,7 @@ * @id_event: indicates there is an id event, and handled at ci_otg_work * @b_sess_valid_event: indicates there is a vbus event, and handled * at ci_otg_work + * @imx28_write_fix: Freescale imx28 needs swp instruction for writing */ struct ci_hdrc { struct device *dev; @@ -173,6 +174,7 @@ struct dentry *debugfs; bool id_event; bool b_sess_valid_event; + bool imx28_write_fix; }; static inline struct ci_role_driver *ci_role(struct ci_hdrc *ci) @@ -253,6 +255,26 @@ return ioread32(ci->hw_bank.regmap[reg]) & mask; } +#ifdef CONFIG_SOC_IMX28 +static inline void imx28_ci_writel(u32 val, volatile void __iomem *addr) +{ + __asm__ ("swp %0, %0, [%1]" : : "r"(val), "r"(addr)); +} +#else +static inline void imx28_ci_writel(u32 val, volatile void __iomem *addr) +{ +} +#endif + +static inline void __hw_write(struct ci_hdrc *ci, u32 val, + void __iomem *addr) +{ + if (ci->imx28_write_fix) + imx28_ci_writel(val, addr); + else + iowrite32(val, addr); +} + /** * hw_write: writes to a hw register * @reg: register index @@ -266,7 +288,7 @@ data = (ioread32(ci->hw_bank.regmap[reg]) & ~mask) | (data & mask); - iowrite32(data, ci->hw_bank.regmap[reg]); + __hw_write(ci, data, ci->hw_bank.regmap[reg]); } /** @@ -281,7 +303,7 @@ { u32 val = ioread32(ci->hw_bank.regmap[reg]) & mask; - iowrite32(val, ci->hw_bank.regmap[reg]); + __hw_write(ci, val, ci->hw_bank.regmap[reg]); return val; } --- linux-3.13.0.orig/drivers/usb/chipidea/ci_hdrc_imx.c +++ linux-3.13.0/drivers/usb/chipidea/ci_hdrc_imx.c @@ -23,6 +23,26 @@ #include "ci.h" #include "ci_hdrc_imx.h" +#define CI_HDRC_IMX_IMX28_WRITE_FIX BIT(0) + +struct ci_hdrc_imx_platform_flag { + unsigned int flags; +}; + +static const struct ci_hdrc_imx_platform_flag imx27_usb_data = { +}; + +static const struct ci_hdrc_imx_platform_flag imx28_usb_data = { + .flags = CI_HDRC_IMX_IMX28_WRITE_FIX, +}; + +static const struct of_device_id ci_hdrc_imx_dt_ids[] = { + { .compatible = "fsl,imx28-usb", .data = &imx28_usb_data}, + { .compatible = "fsl,imx27-usb", .data = &imx27_usb_data}, + { /* sentinel */ } +}; +MODULE_DEVICE_TABLE(of, ci_hdrc_imx_dt_ids); + struct ci_hdrc_imx_data { struct usb_phy *phy; struct platform_device *ci_pdev; @@ -82,6 +102,9 @@ CI_HDRC_DISABLE_STREAMING, }; int ret; + const struct of_device_id *of_id = + of_match_device(ci_hdrc_imx_dt_ids, &pdev->dev); + const struct ci_hdrc_imx_platform_flag *imx_platform_flag = of_id->data; data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); if (!data) { @@ -115,6 +138,9 @@ pdata.phy = data->phy; + if (imx_platform_flag->flags & CI_HDRC_IMX_IMX28_WRITE_FIX) + pdata.flags |= CI_HDRC_IMX28_WRITE_FIX; + ret = dma_coerce_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32)); if (ret) goto err_clk; @@ -173,12 +199,6 @@ return 0; } -static const struct of_device_id ci_hdrc_imx_dt_ids[] = { - { .compatible = "fsl,imx27-usb", }, - { /* sentinel */ } -}; -MODULE_DEVICE_TABLE(of, ci_hdrc_imx_dt_ids); - static struct platform_driver ci_hdrc_imx_driver = { .probe = ci_hdrc_imx_probe, .remove = ci_hdrc_imx_remove, --- linux-3.13.0.orig/drivers/usb/chipidea/core.c +++ linux-3.13.0/drivers/usb/chipidea/core.c @@ -554,6 +554,8 @@ ci->dev = dev; ci->platdata = dev->platform_data; + ci->imx28_write_fix = !!(ci->platdata->flags & + CI_HDRC_IMX28_WRITE_FIX); ret = hw_device_init(ci, base); if (ret < 0) { --- linux-3.13.0.orig/drivers/usb/chipidea/debug.c +++ linux-3.13.0/drivers/usb/chipidea/debug.c @@ -234,8 +234,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-3.13.0.orig/drivers/usb/chipidea/host.c +++ linux-3.13.0/drivers/usb/chipidea/host.c @@ -65,6 +65,7 @@ ehci->caps = ci->hw_bank.cap; ehci->has_hostpc = ci->hw_bank.lpm; ehci->has_tdi_phy_lpm = ci->hw_bank.lpm; + ehci->imx28_write_fix = ci->imx28_write_fix; if (ci->platdata->reg_vbus) { ret = regulator_enable(ci->platdata->reg_vbus); --- linux-3.13.0.orig/drivers/usb/chipidea/otg.h +++ linux-3.13.0/drivers/usb/chipidea/otg.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2013 Freescale Semiconductor, Inc. + * Copyright (C) 2013-2014 Freescale Semiconductor, Inc. * * Author: Peter Chen * @@ -19,12 +19,12 @@ static inline void ci_enable_otg_interrupt(struct ci_hdrc *ci, u32 bits) { - hw_write(ci, OP_OTGSC, bits, bits); + hw_write(ci, OP_OTGSC, bits | OTGSC_INT_STATUS_BITS, bits); } static inline void ci_disable_otg_interrupt(struct ci_hdrc *ci, u32 bits) { - hw_write(ci, OP_OTGSC, bits, 0); + hw_write(ci, OP_OTGSC, bits | OTGSC_INT_STATUS_BITS, 0); } int ci_hdrc_otg_init(struct ci_hdrc *ci); --- linux-3.13.0.orig/drivers/usb/chipidea/udc.c +++ linux-3.13.0/drivers/usb/chipidea/udc.c @@ -105,7 +105,7 @@ do { /* flush any pending transfer */ - hw_write(ci, OP_ENDPTFLUSH, BIT(n), BIT(n)); + hw_write(ci, OP_ENDPTFLUSH, ~0, BIT(n)); while (hw_read(ci, OP_ENDPTFLUSH, BIT(n))) cpu_relax(); } while (hw_read(ci, OP_ENDPTSTAT, BIT(n))); @@ -205,7 +205,7 @@ if (is_ctrl && dir == RX && hw_read(ci, OP_ENDPTSETUPSTAT, BIT(num))) return -EAGAIN; - hw_write(ci, OP_ENDPTPRIME, BIT(n), BIT(n)); + hw_write(ci, OP_ENDPTPRIME, ~0, BIT(n)); while (hw_read(ci, OP_ENDPTPRIME, BIT(n))) cpu_relax(); @@ -393,6 +393,14 @@ node->ptr->token = cpu_to_le32(length << __ffs(TD_TOTAL_BYTES)); node->ptr->token &= cpu_to_le32(TD_TOTAL_BYTES); node->ptr->token |= cpu_to_le32(TD_STATUS_ACTIVE); + if (hwep->type == USB_ENDPOINT_XFER_ISOC && hwep->dir == TX) { + u32 mul = hwreq->req.length / hwep->ep.maxpacket; + + if (hwreq->req.length == 0 + || hwreq->req.length % hwep->ep.maxpacket) + mul++; + node->ptr->token |= mul << __ffs(TD_MULTO); + } temp = (u32) (hwreq->req.dma + hwreq->req.actual); if (length) { @@ -515,10 +523,11 @@ hwep->qh.ptr->td.token &= cpu_to_le32(~(TD_STATUS_HALTED|TD_STATUS_ACTIVE)); - if (hwep->type == USB_ENDPOINT_XFER_ISOC) { + if (hwep->type == USB_ENDPOINT_XFER_ISOC && hwep->dir == RX) { u32 mul = hwreq->req.length / hwep->ep.maxpacket; - if (hwreq->req.length % hwep->ep.maxpacket) + if (hwreq->req.length == 0 + || hwreq->req.length % hwep->ep.maxpacket) mul++; hwep->qh.ptr->cap |= mul << __ffs(QH_MULT); } @@ -1170,9 +1179,15 @@ if (hwep->type == USB_ENDPOINT_XFER_CONTROL) cap |= QH_IOS; - if (hwep->num) - cap |= QH_ZLT; + + cap |= QH_ZLT; cap |= (hwep->ep.maxpacket << __ffs(QH_MAX_PKT)) & QH_MAX_PKT; + /* + * For ISO-TX, we set mult at QH as the largest value, and use + * MultO at TD as real mult value. + */ + if (hwep->type == USB_ENDPOINT_XFER_ISOC && hwep->dir == TX) + cap |= 3 << __ffs(QH_MULT); hwep->qh.ptr->cap = cpu_to_le32(cap); @@ -1311,6 +1326,7 @@ struct ci_hw_ep *hwep = container_of(ep, struct ci_hw_ep, ep); struct ci_hw_req *hwreq = container_of(req, struct ci_hw_req, req); unsigned long flags; + struct td_node *node, *tmpnode; if (ep == NULL || req == NULL || hwreq->req.status != -EALREADY || hwep->ep.desc == NULL || list_empty(&hwreq->queue) || @@ -1321,6 +1337,12 @@ hw_ep_flush(hwep->ci, hwep->num, hwep->dir); + list_for_each_entry_safe(node, tmpnode, &hwreq->tds, td) { + dma_pool_free(hwep->td_pool, node->ptr, node->dma); + list_del(&node->td); + kfree(node); + } + /* pop request */ list_del_init(&hwreq->queue); --- linux-3.13.0.orig/drivers/usb/class/cdc-acm.c +++ linux-3.13.0/drivers/usb/class/cdc-acm.c @@ -399,7 +399,8 @@ if (urb->status) { dev_dbg(&acm->data->dev, "%s - non-zero urb status: %d\n", __func__, urb->status); - return; + if ((urb->status != -ENOENT) || (urb->actual_length == 0)) + return; } acm_process_read_urb(acm, urb); @@ -845,11 +846,12 @@ /* FIXME: Needs to clear unsupported bits in the termios */ acm->clocal = ((termios->c_cflag & CLOCAL) != 0); - if (!newline.dwDTERate) { + if (C_BAUD(tty) == B0) { newline.dwDTERate = acm->line.dwDTERate; newctrl &= ~ACM_CTRL_DTR; - } else + } else if (termios_old && (termios_old->c_cflag & CBAUD) == B0) { newctrl |= ACM_CTRL_DTR; + } if (newctrl != acm->ctrlout) acm_set_control(acm, acm->ctrlout = newctrl); @@ -942,6 +944,7 @@ unsigned long quirks; int num_rx_buf; int i; + unsigned int elength = 0; int combined_interfaces = 0; struct device *tty_dev; int rv = -ENOMEM; @@ -958,6 +961,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; } @@ -983,6 +989,12 @@ } while (buflen > 0) { + elength = buffer[0]; + if (!elength) { + dev_err(&intf->dev, "skipping garbage byte\n"); + elength = 1; + goto next_desc; + } if (buffer[1] != USB_DT_CS_INTERFACE) { dev_err(&intf->dev, "skipping garbage\n"); goto next_desc; @@ -990,6 +1002,8 @@ switch (buffer[2]) { case USB_CDC_UNION_TYPE: /* we've found it */ + if (elength < sizeof(struct usb_cdc_union_desc)) + goto next_desc; if (union_header) { dev_err(&intf->dev, "More than one " "union descriptor, skipping ...\n"); @@ -998,31 +1012,38 @@ union_header = (struct usb_cdc_union_desc *)buffer; break; case USB_CDC_COUNTRY_TYPE: /* export through sysfs*/ + if (elength < sizeof(struct usb_cdc_country_functional_desc)) + goto next_desc; cfd = (struct usb_cdc_country_functional_desc *)buffer; break; case USB_CDC_HEADER_TYPE: /* maybe check version */ break; /* for now we ignore it */ case USB_CDC_ACM_TYPE: + if (elength < 4) + goto next_desc; ac_management_function = buffer[3]; break; case USB_CDC_CALL_MANAGEMENT_TYPE: + if (elength < 5) + goto next_desc; call_management_function = buffer[3]; call_interface_num = buffer[4]; if ((quirks & NOT_A_MODEM) == 0 && (call_management_function & 3) != 3) dev_err(&intf->dev, "This device cannot do calls on its own. It is not a modem.\n"); break; default: - /* there are LOTS more CDC descriptors that + /* + * there are LOTS more CDC descriptors that * could legitimately be found here. */ dev_dbg(&intf->dev, "Ignoring descriptor: " - "type %02x, length %d\n", - buffer[2], buffer[0]); + "type %02x, length %ud\n", + buffer[2], elength); break; } next_desc: - buflen -= buffer[0]; - buffer += buffer[0]; + buflen -= elength; + buffer += elength; } if (!union_header) { @@ -1048,10 +1069,11 @@ } else { control_interface = usb_ifnum_to_if(usb_dev, union_header->bMasterInterface0); data_interface = usb_ifnum_to_if(usb_dev, (data_interface_num = union_header->bSlaveInterface0)); - if (!control_interface || !data_interface) { - dev_dbg(&intf->dev, "no interfaces\n"); - return -ENODEV; - } + } + + if (!control_interface || !data_interface) { + dev_dbg(&intf->dev, "no interfaces\n"); + return -ENODEV; } if (data_interface_num != call_interface_num) @@ -1253,6 +1275,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; } @@ -1318,6 +1342,11 @@ goto alloc_fail8; } + if (quirks & CLEAR_HALT_CONDITIONS) { + usb_clear_halt(usb_dev, usb_rcvbulkpipe(usb_dev, epread->bEndpointAddress)); + usb_clear_halt(usb_dev, usb_sndbulkpipe(usb_dev, epwrite->bEndpointAddress)); + } + return 0; alloc_fail8: if (acm->country_codes) { @@ -1325,6 +1354,7 @@ &dev_attr_wCountryCodes); device_remove_file(&acm->control->dev, &dev_attr_iCountryCodeRelDate); + kfree(acm->country_codes); } device_remove_file(&acm->control->dev, &dev_attr_bmCapabilities); alloc_fail7: @@ -1556,17 +1586,32 @@ { USB_DEVICE(0x0572, 0x1328), /* Shiro / Aztech USB MODEM UM-3100 */ .driver_info = NO_UNION_NORMAL, /* has no union descriptor */ }, + { USB_DEVICE(0x2184, 0x001c) }, /* GW Instek AFG-2225 */ { USB_DEVICE(0x22b8, 0x6425), /* Motorola MOTOMAGX phones */ }, /* Motorola H24 HSPA module: */ { USB_DEVICE(0x22b8, 0x2d91) }, /* modem */ - { USB_DEVICE(0x22b8, 0x2d92) }, /* modem + diagnostics */ - { USB_DEVICE(0x22b8, 0x2d93) }, /* modem + AT port */ - { USB_DEVICE(0x22b8, 0x2d95) }, /* modem + AT port + diagnostics */ - { USB_DEVICE(0x22b8, 0x2d96) }, /* modem + NMEA */ - { USB_DEVICE(0x22b8, 0x2d97) }, /* modem + diagnostics + NMEA */ - { USB_DEVICE(0x22b8, 0x2d99) }, /* modem + AT port + NMEA */ - { USB_DEVICE(0x22b8, 0x2d9a) }, /* modem + AT port + diagnostics + NMEA */ + { USB_DEVICE(0x22b8, 0x2d92), /* modem + diagnostics */ + .driver_info = NO_UNION_NORMAL, /* handle only modem interface */ + }, + { USB_DEVICE(0x22b8, 0x2d93), /* modem + AT port */ + .driver_info = NO_UNION_NORMAL, /* handle only modem interface */ + }, + { USB_DEVICE(0x22b8, 0x2d95), /* modem + AT port + diagnostics */ + .driver_info = NO_UNION_NORMAL, /* handle only modem interface */ + }, + { USB_DEVICE(0x22b8, 0x2d96), /* modem + NMEA */ + .driver_info = NO_UNION_NORMAL, /* handle only modem interface */ + }, + { USB_DEVICE(0x22b8, 0x2d97), /* modem + diagnostics + NMEA */ + .driver_info = NO_UNION_NORMAL, /* handle only modem interface */ + }, + { USB_DEVICE(0x22b8, 0x2d99), /* modem + AT port + NMEA */ + .driver_info = NO_UNION_NORMAL, /* handle only modem interface */ + }, + { USB_DEVICE(0x22b8, 0x2d9a), /* modem + AT port + diagnostics + NMEA */ + .driver_info = NO_UNION_NORMAL, /* handle only modem interface */ + }, { USB_DEVICE(0x0572, 0x1329), /* Hummingbird huc56s (Conexant) */ .driver_info = NO_UNION_NORMAL, /* union descriptor misplaced on @@ -1588,6 +1633,10 @@ .driver_info = NO_UNION_NORMAL, /* reports zero length descriptor */ }, + { USB_DEVICE(0x2912, 0x0001), /* ATOL FPrint */ + .driver_info = CLEAR_HALT_CONDITIONS, + }, + /* Nokia S60 phones expose two ACM channels. The first is * a modem and is picked up by the standard AT-command * information below. The second is 'vendor-specific' but @@ -1676,6 +1725,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) }, @@ -1694,6 +1753,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-3.13.0.orig/drivers/usb/class/cdc-acm.h +++ linux-3.13.0/drivers/usb/class/cdc-acm.h @@ -129,3 +129,5 @@ #define NOT_A_MODEM 8 #define NO_DATA_INTERFACE 16 #define IGNORE_DEVICE 32 +#define CLEAR_HALT_CONDITIONS 128 +#define SEND_ZERO_PACKET 256 --- linux-3.13.0.orig/drivers/usb/class/cdc-wdm.c +++ linux-3.13.0/drivers/usb/class/cdc-wdm.c @@ -245,7 +245,7 @@ case USB_CDC_NOTIFY_RESPONSE_AVAILABLE: dev_dbg(&desc->intf->dev, "NOTIFY_RESPONSE_AVAILABLE received: index %d len %d", - dr->wIndex, dr->wLength); + le16_to_cpu(dr->wIndex), le16_to_cpu(dr->wLength)); break; case USB_CDC_NOTIFY_NETWORK_CONNECTION: @@ -262,7 +262,9 @@ clear_bit(WDM_POLL_RUNNING, &desc->flags); dev_err(&desc->intf->dev, "unknown notification %d received: index %d len %d\n", - dr->bNotificationType, dr->wIndex, dr->wLength); + dr->bNotificationType, + le16_to_cpu(dr->wIndex), + le16_to_cpu(dr->wLength)); goto exit; } @@ -408,7 +410,7 @@ USB_RECIP_INTERFACE); req->bRequest = USB_CDC_SEND_ENCAPSULATED_COMMAND; req->wValue = 0; - req->wIndex = desc->inum; + req->wIndex = desc->inum; /* already converted */ req->wLength = cpu_to_le16(count); set_bit(WDM_IN_USE, &desc->flags); desc->outbuf = buf; @@ -422,7 +424,7 @@ rv = usb_translate_errors(rv); } else { dev_dbg(&desc->intf->dev, "Tx URB has been submitted index=%d", - req->wIndex); + le16_to_cpu(req->wIndex)); } out: usb_autopm_put_interface(desc->intf); @@ -432,6 +434,38 @@ return rv < 0 ? rv : count; } +/* + * clear WDM_READ flag and possibly submit the read urb if resp_count + * is non-zero. + * + * Called with desc->iuspin locked + */ +static int clear_wdm_read_flag(struct wdm_device *desc) +{ + int rv = 0; + + clear_bit(WDM_READ, &desc->flags); + + /* submit read urb only if the device is waiting for it */ + if (!desc->resp_count || !--desc->resp_count) + goto out; + + set_bit(WDM_RESPONDING, &desc->flags); + spin_unlock_irq(&desc->iuspin); + rv = usb_submit_urb(desc->response, GFP_KERNEL); + spin_lock_irq(&desc->iuspin); + if (rv) { + dev_err(&desc->intf->dev, + "usb_submit_urb failed with result %d\n", rv); + + /* make sure the next notification trigger a submit */ + clear_bit(WDM_RESPONDING, &desc->flags); + desc->resp_count = 0; + } +out: + return rv; +} + static ssize_t wdm_read (struct file *file, char __user *buffer, size_t count, loff_t *ppos) { @@ -503,8 +537,10 @@ if (!desc->reslength) { /* zero length read */ dev_dbg(&desc->intf->dev, "%s: zero length - clearing WDM_READ\n", __func__); - clear_bit(WDM_READ, &desc->flags); + rv = clear_wdm_read_flag(desc); spin_unlock_irq(&desc->iuspin); + if (rv < 0) + goto err; goto retry; } cntr = desc->length; @@ -526,37 +562,9 @@ desc->length -= cntr; /* in case we had outstanding data */ - if (!desc->length) { - clear_bit(WDM_READ, &desc->flags); - - if (--desc->resp_count) { - set_bit(WDM_RESPONDING, &desc->flags); - spin_unlock_irq(&desc->iuspin); - - rv = usb_submit_urb(desc->response, GFP_KERNEL); - if (rv) { - dev_err(&desc->intf->dev, - "%s: usb_submit_urb failed with result %d\n", - __func__, rv); - spin_lock_irq(&desc->iuspin); - clear_bit(WDM_RESPONDING, &desc->flags); - spin_unlock_irq(&desc->iuspin); - - if (rv == -ENOMEM) { - rv = schedule_work(&desc->rxwork); - if (rv) - dev_err(&desc->intf->dev, "Cannot schedule work\n"); - } else { - spin_lock_irq(&desc->iuspin); - desc->resp_count = 0; - spin_unlock_irq(&desc->iuspin); - } - } - } else - spin_unlock_irq(&desc->iuspin); - } else - spin_unlock_irq(&desc->iuspin); - + if (!desc->length) + clear_wdm_read_flag(desc); + spin_unlock_irq(&desc->iuspin); rv = cntr; err: @@ -814,7 +822,7 @@ desc->irq->bRequestType = (USB_DIR_IN | USB_TYPE_CLASS | USB_RECIP_INTERFACE); desc->irq->bRequest = USB_CDC_GET_ENCAPSULATED_RESPONSE; desc->irq->wValue = 0; - desc->irq->wIndex = desc->inum; + desc->irq->wIndex = desc->inum; /* already converted */ desc->irq->wLength = cpu_to_le16(desc->wMaxCommand); usb_fill_control_urb( --- linux-3.13.0.orig/drivers/usb/class/usblp.c +++ linux-3.13.0/drivers/usb/class/usblp.c @@ -870,11 +870,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-3.13.0.orig/drivers/usb/core/buffer.c +++ linux-3.13.0/drivers/usb/core/buffer.c @@ -22,17 +22,25 @@ */ /* FIXME tune these based on pool statistics ... */ -static const size_t pool_max[HCD_BUFFER_POOLS] = { - /* platforms without dma-friendly caches might need to - * prevent cacheline sharing... - */ - 32, - 128, - 512, - PAGE_SIZE / 2 - /* bigger --> allocate pages */ +static size_t pool_max[HCD_BUFFER_POOLS] = { + 32, 128, 512, 2048, }; +void __init usb_init_pool_max(void) +{ + /* + * The pool_max values must never be smaller than + * ARCH_KMALLOC_MINALIGN. + */ + if (ARCH_KMALLOC_MINALIGN <= 32) + ; /* Original value is okay */ + else if (ARCH_KMALLOC_MINALIGN <= 64) + pool_max[0] = 64; + else if (ARCH_KMALLOC_MINALIGN <= 128) + pool_max[0] = 0; /* Don't use this pool */ + else + BUILD_BUG(); /* We don't allow this */ +} /* SETUP primitives */ --- linux-3.13.0.orig/drivers/usb/core/config.c +++ linux-3.13.0/drivers/usb/core/config.c @@ -114,16 +114,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) * @@ -651,10 +653,6 @@ * * hub-only!! ... and only in reset path, or usb_new_device() * (used by real hubs and virtual root hubs) - * - * NOTE: if this is a WUSB device and is not authorized, we skip the - * whole thing. A non-authorized USB device has no - * configurations. */ int usb_get_configuration(struct usb_device *dev) { @@ -666,8 +664,6 @@ struct usb_config_descriptor *desc; cfgno = 0; - if (dev->authorized == 0) /* Not really an error */ - goto out_not_authorized; result = -ENOMEM; if (ncfg > USB_MAXCONFIG) { dev_warn(ddev, "too many configurations: %d, " @@ -724,6 +720,10 @@ result = -ENOMEM; goto err; } + + if (dev->quirks & USB_QUIRK_DELAY_INIT) + msleep(100); + result = usb_get_descriptor(dev, USB_DT_CONFIG, cfgno, bigbuffer, length); if (result < 0) { @@ -751,7 +751,6 @@ err: kfree(desc); -out_not_authorized: dev->descriptor.bNumConfigurations = cfgno; err2: if (result == -ENOMEM) --- linux-3.13.0.orig/drivers/usb/core/devio.c +++ linux-3.13.0/drivers/usb/core/devio.c @@ -501,6 +501,7 @@ as->status = urb->status; signr = as->signr; if (signr) { + memset(&sinfo, 0, sizeof(sinfo)); sinfo.si_signo = as->signr; sinfo.si_errno = as->status; sinfo.si_code = SI_ASYNCIO; @@ -512,7 +513,7 @@ snoop(&urb->dev->dev, "urb complete\n"); snoop_urb(urb->dev, as->userurb, urb->pipe, urb->actual_length, as->status, COMPLETE, NULL, 0); - if ((urb->transfer_flags & URB_DIR_MASK) == USB_DIR_IN) + if ((urb->transfer_flags & URB_DIR_MASK) == URB_DIR_IN) snoop_urb_data(urb, urb->actual_length); if (as->status < 0 && as->bulk_addr && as->status != -ECONNRESET && @@ -1103,10 +1104,11 @@ static int proc_connectinfo(struct dev_state *ps, void __user *arg) { - struct usbdevfs_connectinfo ci = { - .devnum = ps->dev->devnum, - .slow = ps->dev->speed == USB_SPEED_LOW - }; + struct usbdevfs_connectinfo ci; + + memset(&ci, 0, sizeof(ci)); + ci.devnum = ps->dev->devnum; + ci.slow = ps->dev->speed == USB_SPEED_LOW; if (copy_to_user(arg, &ci, sizeof(ci))) return -EFAULT; @@ -1411,7 +1413,7 @@ u = (is_in ? URB_DIR_IN : URB_DIR_OUT); if (uurb->flags & USBDEVFS_URB_ISO_ASAP) u |= URB_ISO_ASAP; - if (uurb->flags & USBDEVFS_URB_SHORT_NOT_OK) + if (uurb->flags & USBDEVFS_URB_SHORT_NOT_OK && is_in) u |= URB_SHORT_NOT_OK; if (uurb->flags & USBDEVFS_URB_NO_FSBR) u |= URB_NO_FSBR; @@ -2227,6 +2229,7 @@ wake_up_all(&ps->wait); list_del_init(&ps->list); if (ps->discsignr) { + memset(&sinfo, 0, sizeof(sinfo)); sinfo.si_signo = ps->discsignr; sinfo.si_errno = EPIPE; sinfo.si_code = SI_ASYNCIO; --- linux-3.13.0.orig/drivers/usb/core/driver.c +++ linux-3.13.0/drivers/usb/core/driver.c @@ -463,11 +463,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; @@ -959,8 +963,7 @@ * it doesn't support pre_reset/post_reset/reset_resume or * because it doesn't support suspend/resume. * - * The caller must hold @intf's device's lock, but not its pm_mutex - * and not @intf->dev.sem. + * The caller must hold @intf's device's lock, but not @intf's lock. */ void usb_forced_unbind_intf(struct usb_interface *intf) { @@ -973,16 +976,37 @@ intf->needs_binding = 1; } +/* + * Unbind drivers for @udev's marked interfaces. These interfaces have + * the needs_binding flag set, for example by usb_resume_interface(). + * + * The caller must hold @udev's device lock. + */ +static void unbind_marked_interfaces(struct usb_device *udev) +{ + struct usb_host_config *config; + int i; + struct usb_interface *intf; + + config = udev->actconfig; + if (config) { + for (i = 0; i < config->desc.bNumInterfaces; ++i) { + intf = config->interface[i]; + if (intf->dev.driver && intf->needs_binding) + usb_forced_unbind_intf(intf); + } + } +} + /* Delayed forced unbinding of a USB interface driver and scan * for rebinding. * - * The caller must hold @intf's device's lock, but not its pm_mutex - * and not @intf->dev.sem. + * The caller must hold @intf's device's lock, but not @intf's lock. * * Note: Rebinds will be skipped if a system sleep transition is in * progress and the PM "complete" callback hasn't occurred yet. */ -void usb_rebind_intf(struct usb_interface *intf) +static void usb_rebind_intf(struct usb_interface *intf) { int rc; @@ -999,68 +1023,66 @@ } } -#ifdef CONFIG_PM - -/* Unbind drivers for @udev's interfaces that don't support suspend/resume - * There is no check for reset_resume here because it can be determined - * only during resume whether reset_resume is needed. +/* + * Rebind drivers to @udev's marked interfaces. These interfaces have + * the needs_binding flag set. * * The caller must hold @udev's device lock. */ -static void unbind_no_pm_drivers_interfaces(struct usb_device *udev) +static void rebind_marked_interfaces(struct usb_device *udev) { struct usb_host_config *config; int i; struct usb_interface *intf; - struct usb_driver *drv; config = udev->actconfig; if (config) { for (i = 0; i < config->desc.bNumInterfaces; ++i) { intf = config->interface[i]; - - if (intf->dev.driver) { - drv = to_usb_driver(intf->dev.driver); - if (!drv->suspend || !drv->resume) - usb_forced_unbind_intf(intf); - } + if (intf->needs_binding) + usb_rebind_intf(intf); } } } -/* Unbind drivers for @udev's interfaces that failed to support reset-resume. - * These interfaces have the needs_binding flag set by usb_resume_interface(). +/* + * Unbind all of @udev's marked interfaces and then rebind all of them. + * This ordering is necessary because some drivers claim several interfaces + * when they are first probed. * * The caller must hold @udev's device lock. */ -static void unbind_no_reset_resume_drivers_interfaces(struct usb_device *udev) +void usb_unbind_and_rebind_marked_interfaces(struct usb_device *udev) { - struct usb_host_config *config; - int i; - struct usb_interface *intf; - - config = udev->actconfig; - if (config) { - for (i = 0; i < config->desc.bNumInterfaces; ++i) { - intf = config->interface[i]; - if (intf->dev.driver && intf->needs_binding) - usb_forced_unbind_intf(intf); - } - } + unbind_marked_interfaces(udev); + rebind_marked_interfaces(udev); } -static void do_rebind_interfaces(struct usb_device *udev) +#ifdef CONFIG_PM + +/* Unbind drivers for @udev's interfaces that don't support suspend/resume + * There is no check for reset_resume here because it can be determined + * only during resume whether reset_resume is needed. + * + * The caller must hold @udev's device lock. + */ +static void unbind_no_pm_drivers_interfaces(struct usb_device *udev) { struct usb_host_config *config; int i; struct usb_interface *intf; + struct usb_driver *drv; config = udev->actconfig; if (config) { for (i = 0; i < config->desc.bNumInterfaces; ++i) { intf = config->interface[i]; - if (intf->needs_binding) - usb_rebind_intf(intf); + + if (intf->dev.driver) { + drv = to_usb_driver(intf->dev.driver); + if (!drv->suspend || !drv->resume) + usb_forced_unbind_intf(intf); + } } } } @@ -1389,7 +1411,7 @@ * whose needs_binding flag is set */ if (udev->state != USB_STATE_NOTATTACHED) - do_rebind_interfaces(udev); + rebind_marked_interfaces(udev); return 0; } @@ -1411,7 +1433,7 @@ pm_runtime_disable(dev); pm_runtime_set_active(dev); pm_runtime_enable(dev); - unbind_no_reset_resume_drivers_interfaces(udev); + unbind_marked_interfaces(udev); } /* Avoid PM error messages for devices disconnected while suspended @@ -1730,6 +1752,18 @@ dev_dbg(&udev->dev, "remote wakeup needed for autosuspend\n"); return -EOPNOTSUPP; } + + /* + * If the device is a direct child of the root hub and the HCD + * doesn't handle wakeup requests, don't allow autosuspend when + * wakeup is needed. + */ + if (w && udev->parent == udev->bus->root_hub && + bus_to_hcd(udev->bus)->cant_recv_wakeups) { + dev_dbg(&udev->dev, "HCD doesn't handle wakeup requests\n"); + return -EOPNOTSUPP; + } + udev->do_remote_wakeup = w; return 0; } @@ -1752,10 +1786,13 @@ if (status == -EAGAIN || status == -EBUSY) usb_mark_last_busy(udev); - /* The PM core reacts badly unless the return code is 0, - * -EAGAIN, or -EBUSY, so always return -EBUSY on an error. + /* + * The PM core reacts badly unless the return code is 0, + * -EAGAIN, or -EBUSY, so always return -EBUSY on an error + * (except for root hubs, because they don't suspend through + * an upstream port like other USB devices). */ - if (status != 0) + if (status != 0 && udev->parent) return -EBUSY; return status; } --- linux-3.13.0.orig/drivers/usb/core/hcd-pci.c +++ linux-3.13.0/drivers/usb/core/hcd-pci.c @@ -75,7 +75,7 @@ PCI_SLOT(companion->devfn) != slot) continue; companion_hcd = pci_get_drvdata(companion); - if (!companion_hcd) + if (!companion_hcd || !companion_hcd->self.root_hub) continue; fn(pdev, hcd, companion, companion_hcd); } --- linux-3.13.0.orig/drivers/usb/core/hcd.c +++ linux-3.13.0/drivers/usb/core/hcd.c @@ -1031,7 +1031,6 @@ dev_name(&usb_dev->dev), retval); return retval; } - usb_dev->lpm_capable = usb_device_supports_lpm(usb_dev); } retval = usb_new_device (usb_dev); @@ -1617,6 +1616,7 @@ int usb_hcd_unlink_urb (struct urb *urb, int status) { struct usb_hcd *hcd; + struct usb_device *udev = urb->dev; int retval = -EIDRM; unsigned long flags; @@ -1628,20 +1628,19 @@ spin_lock_irqsave(&hcd_urb_unlink_lock, flags); if (atomic_read(&urb->use_count) > 0) { retval = 0; - usb_get_dev(urb->dev); + usb_get_dev(udev); } spin_unlock_irqrestore(&hcd_urb_unlink_lock, flags); if (retval == 0) { hcd = bus_to_hcd(urb->dev->bus); retval = unlink1(hcd, urb, status); - usb_put_dev(urb->dev); + if (retval == 0) + retval = -EINPROGRESS; + else if (retval != -EIDRM && retval != -EBUSY) + dev_dbg(&udev->dev, "hcd_unlink_urb %p fail %d\n", + urb, retval); + usb_put_dev(udev); } - - if (retval == 0) - retval = -EINPROGRESS; - else if (retval != -EIDRM && retval != -EBUSY) - dev_dbg(&urb->dev->dev, "hcd_unlink_urb %p fail %d\n", - urb, retval); return retval; } @@ -2057,6 +2056,8 @@ return -EINVAL; if (dev->speed != USB_SPEED_SUPER) return -EINVAL; + if (dev->state < USB_STATE_CONFIGURED) + return -ENODEV; /* Streams only apply to bulk endpoints. */ for (i = 0; i < num_eps; i++) --- linux-3.13.0.orig/drivers/usb/core/hub.c +++ linux-3.13.0/drivers/usb/core/hub.c @@ -113,6 +113,7 @@ #define HUB_DEBOUNCE_STEP 25 #define HUB_DEBOUNCE_STABLE 100 +static void hub_release(struct kref *kref); static int usb_reset_and_verify_device(struct usb_device *udev); static inline char *portspeed(struct usb_hub *hub, int portstatus) @@ -135,8 +136,12 @@ return usb_get_intfdata(hdev->actconfig->interface[0]); } -int usb_device_supports_lpm(struct usb_device *udev) +static 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. */ @@ -156,11 +161,6 @@ "Power management will be impacted.\n"); return 0; } - - /* udev is root hub */ - if (!udev->parent) - return 1; - if (udev->parent->lpm_capable) return 1; @@ -896,6 +896,25 @@ if (!hub_is_superspeed(hub->hdev)) return -EINVAL; + ret = hub_port_status(hub, port1, &portstatus, &portchange); + if (ret < 0) + return ret; + + /* + * USB controller Advanced Micro Devices, Inc. [AMD] FCH USB XHCI + * Controller [1022:7814] will have spurious result making the following + * usb 3.0 device hotplugging route to the 2.0 root hub and recognized + * as high-speed device if we set the usb 3.0 port link state to + * Disabled. Since it's already in USB_SS_PORT_LS_RX_DETECT state, we + * check the state here to avoid the bug. + */ + if ((portstatus & USB_PORT_STAT_LINK_STATE) == + USB_SS_PORT_LS_RX_DETECT) { + dev_dbg(&hub->ports[port1 - 1]->dev, + "Not disabling port; link state is RxDetect\n"); + return ret; + } + ret = hub_set_port_link_state(hub, port1, USB_SS_PORT_LS_SS_DISABLED); if (ret) return ret; @@ -1012,10 +1031,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 @@ -1208,6 +1237,7 @@ PREPARE_DELAYED_WORK(&hub->init_work, hub_init_func3); schedule_delayed_work(&hub->init_work, msecs_to_jiffies(delay)); + device_unlock(hub->intfdev); return; /* Continues at init3: below */ } else { msleep(delay); @@ -1228,6 +1258,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 */ @@ -1607,7 +1642,7 @@ { struct usb_hub *hub = usb_get_intfdata(intf); struct usb_device *hdev = interface_to_usbdev(intf); - int i; + int port1; /* Take the hub off the event list and don't let it be added again */ spin_lock_irq(&hub_event_lock); @@ -1622,11 +1657,15 @@ hub->error = 0; hub_quiesce(hub, HUB_DISCONNECT); - usb_set_intfdata (intf, NULL); + /* Avoid races with recursively_mark_NOTATTACHED() */ + spin_lock_irq(&device_state_lock); + port1 = hdev->maxchild; + hdev->maxchild = 0; + usb_set_intfdata(intf, NULL); + spin_unlock_irq(&device_state_lock); - for (i = 0; i < hdev->maxchild; i++) - usb_hub_remove_port_device(hub, i + 1); - hub->hdev->maxchild = 0; + for (; port1 > 0; --port1) + usb_hub_remove_port_device(hub, port1); if (hub->hdev->speed == USB_SPEED_HIGH) highspeed_hubs--; @@ -1683,11 +1722,28 @@ * - Change autosuspend delay of hub can avoid unnecessary auto * suspend timer for hub, also may decrease power consumption * of USB bus. + * + * - If user has indicated to prevent autosuspend by passing + * usbcore.autosuspend = -1 then keep autosuspend disabled. */ - pm_runtime_set_autosuspend_delay(&hdev->dev, 0); +#ifdef CONFIG_PM_RUNTIME + if (hdev->dev.power.autosuspend_delay >= 0) + pm_runtime_set_autosuspend_delay(&hdev->dev, 0); +#endif - /* Hubs have proper suspend/resume support. */ - usb_enable_autosuspend(hdev); + /* + * Hubs have proper suspend/resume support, except for root hubs + * where the controller driver doesn't have bus_suspend and + * bus_resume methods. + */ + if (hdev->parent) { /* normal device */ + usb_enable_autosuspend(hdev); + } else { /* root hub */ + const struct hc_driver *drv = bus_to_hcd(hdev->bus)->driver; + + if (drv->bus_suspend && drv->bus_resume) + usb_enable_autosuspend(hdev); + } if (hdev->level == MAX_TOPO_LEVEL) { dev_err(&intf->dev, @@ -1919,8 +1975,10 @@ || new_state == USB_STATE_SUSPENDED) ; /* No change to wakeup settings */ else if (new_state == USB_STATE_CONFIGURED) - wakeup = udev->actconfig->desc.bmAttributes - & USB_CONFIG_ATT_WAKEUP; + wakeup = (udev->quirks & + USB_QUIRK_IGNORE_REMOTE_WAKEUP) ? 0 : + udev->actconfig->desc.bmAttributes & + USB_CONFIG_ATT_WAKEUP; else wakeup = 0; } @@ -2235,17 +2293,13 @@ return err; } } - if (udev->wusb == 1 && udev->authorized == 0) { - udev->product = kstrdup("n/a (unauthorized)", GFP_KERNEL); - udev->manufacturer = kstrdup("n/a (unauthorized)", GFP_KERNEL); - udev->serial = kstrdup("n/a (unauthorized)", GFP_KERNEL); - } else { - /* read the standard strings and cache them if present */ - udev->product = usb_cache_string(udev, udev->descriptor.iProduct); - udev->manufacturer = usb_cache_string(udev, - udev->descriptor.iManufacturer); - udev->serial = usb_cache_string(udev, udev->descriptor.iSerialNumber); - } + + /* read the standard strings and cache them if present */ + udev->product = usb_cache_string(udev, udev->descriptor.iProduct); + udev->manufacturer = usb_cache_string(udev, + udev->descriptor.iManufacturer); + udev->serial = usb_cache_string(udev, udev->descriptor.iSerialNumber); + err = usb_enumerate_device_otg(udev); if (err < 0) return err; @@ -2427,16 +2481,6 @@ usb_dev->authorized = 0; usb_set_configuration(usb_dev, -1); - kfree(usb_dev->product); - usb_dev->product = kstrdup("n/a (unauthorized)", GFP_KERNEL); - kfree(usb_dev->manufacturer); - usb_dev->manufacturer = kstrdup("n/a (unauthorized)", GFP_KERNEL); - kfree(usb_dev->serial); - usb_dev->serial = kstrdup("n/a (unauthorized)", GFP_KERNEL); - - usb_destroy_configuration(usb_dev); - usb_dev->descriptor.bNumConfigurations = 0; - out_unauthorized: usb_unlock_device(usb_dev); return 0; @@ -2464,17 +2508,7 @@ goto error_device_descriptor; } - kfree(usb_dev->product); - usb_dev->product = NULL; - kfree(usb_dev->manufacturer); - usb_dev->manufacturer = NULL; - kfree(usb_dev->serial); - usb_dev->serial = NULL; - usb_dev->authorized = 1; - result = usb_enumerate_device(usb_dev); - if (result < 0) - goto error_enumerate; /* Choose and set the configuration. This registers the interfaces * with the driver core and lets interface drivers bind to them. */ @@ -2490,7 +2524,6 @@ } dev_info(&usb_dev->dev, "authorized to connect\n"); -error_enumerate: error_device_descriptor: usb_autosuspend_device(usb_dev); error_autoresume: @@ -2523,9 +2556,6 @@ #define HUB_LONG_RESET_TIME 200 #define HUB_RESET_TIMEOUT 800 -static int hub_port_reset(struct usb_hub *hub, int port1, - struct usb_device *udev, unsigned int delay, bool warm); - /* Is a USB 3.0 port in the Inactive or Complinance Mode state? * Port worm reset is required to recover */ @@ -2606,44 +2636,6 @@ return 0; } -static void hub_port_finish_reset(struct usb_hub *hub, int port1, - struct usb_device *udev, int *status) -{ - switch (*status) { - case 0: - /* TRSTRCY = 10 ms; plus some extra */ - msleep(10 + 40); - if (udev) { - struct usb_hcd *hcd = bus_to_hcd(udev->bus); - - update_devnum(udev, 0); - /* The xHC may think the device is already reset, - * so ignore the status. - */ - if (hcd->driver->reset_device) - hcd->driver->reset_device(hcd, udev); - } - /* FALL THROUGH */ - case -ENOTCONN: - case -ENODEV: - usb_clear_port_feature(hub->hdev, - port1, USB_PORT_FEAT_C_RESET); - if (hub_is_superspeed(hub->hdev)) { - usb_clear_port_feature(hub->hdev, port1, - USB_PORT_FEAT_C_BH_PORT_RESET); - usb_clear_port_feature(hub->hdev, port1, - USB_PORT_FEAT_C_PORT_LINK_STATE); - usb_clear_port_feature(hub->hdev, port1, - USB_PORT_FEAT_C_CONNECTION); - } - if (udev) - usb_set_device_state(udev, *status - ? USB_STATE_NOTATTACHED - : USB_STATE_DEFAULT); - break; - } -} - /* Handle port reset and port warm(BH) reset (for USB3 protocol ports) */ static int hub_port_reset(struct usb_hub *hub, int port1, struct usb_device *udev, unsigned int delay, bool warm) @@ -2666,13 +2658,9 @@ * If the caller hasn't explicitly requested a warm reset, * double check and see if one is needed. */ - status = hub_port_status(hub, port1, - &portstatus, &portchange); - if (status < 0) - goto done; - - if (hub_port_warm_reset_required(hub, portstatus)) - warm = true; + if (hub_port_status(hub, port1, &portstatus, &portchange) == 0) + if (hub_port_warm_reset_required(hub, portstatus)) + warm = true; } /* Reset the port */ @@ -2697,11 +2685,19 @@ /* Check for disconnect or reset */ if (status == 0 || status == -ENOTCONN || status == -ENODEV) { - hub_port_finish_reset(hub, port1, udev, &status); + usb_clear_port_feature(hub->hdev, port1, + USB_PORT_FEAT_C_RESET); if (!hub_is_superspeed(hub->hdev)) goto done; + usb_clear_port_feature(hub->hdev, port1, + USB_PORT_FEAT_C_BH_PORT_RESET); + usb_clear_port_feature(hub->hdev, port1, + USB_PORT_FEAT_C_PORT_LINK_STATE); + usb_clear_port_feature(hub->hdev, port1, + USB_PORT_FEAT_C_CONNECTION); + /* * If a USB 3.0 device migrates from reset to an error * state, re-issue the warm reset. @@ -2735,6 +2731,26 @@ port1); done: + if (status == 0) { + /* TRSTRCY = 10 ms; plus some extra */ + msleep(10 + 40); + if (udev) { + struct usb_hcd *hcd = bus_to_hcd(udev->bus); + + update_devnum(udev, 0); + /* The xHC may think the device is already reset, + * so ignore the status. + */ + if (hcd->driver->reset_device) + hcd->driver->reset_device(hcd, udev); + + usb_set_device_state(udev, USB_STATE_DEFAULT); + } + } else { + if (udev) + usb_set_device_state(udev, USB_STATE_NOTATTACHED); + } + if (!hub_is_superspeed(hub->hdev)) up_read(&ehci_cf_port_reset_rwsem); @@ -3161,6 +3177,43 @@ } /* + * There are some SS USB devices which take longer time for link training. + * XHCI specs 4.19.4 says that when Link training is successful, port + * sets CSC bit to 1. So if SW reads port status before successful link + * training, then it will not find device to be present. + * USB Analyzer log with such buggy devices show that in some cases + * device switch on the RX termination after long delay of host enabling + * the VBUS. In few other cases it has been seen that device fails to + * negotiate link training in first attempt. It has been + * reported till now that few devices take as long as 2000 ms to train + * the link after host enabling its VBUS and termination. Following + * routine implements a 2000 ms timeout for link training. If in a case + * link trains before timeout, loop will exit earlier. + * + * FIXME: If a device was connected before suspend, but was removed + * while system was asleep, then the loop in the following routine will + * only exit at timeout. + * + * This routine should only be called when persist is enabled for a SS + * device. + */ +static int wait_for_ss_port_enable(struct usb_device *udev, + struct usb_hub *hub, int *port1, + u16 *portchange, u16 *portstatus) +{ + int status = 0, delay_ms = 0; + + while (delay_ms < 2000) { + if (status || *portstatus & USB_PORT_STAT_CONNECTION) + break; + msleep(20); + delay_ms += 20; + status = hub_port_status(hub, *port1, portstatus, portchange); + } + return status; +} + +/* * usb_port_resume - re-activate a suspended usb device's upstream port * @udev: device to re-activate, not a root hub * Context: must be able to sleep; device not locked; pm locks held @@ -3231,10 +3284,10 @@ dev_dbg(hub->intfdev, "can't resume port %d, status %d\n", port1, status); } else { - /* drive resume for at least 20 msec */ + /* drive resume for USB_RESUME_TIMEOUT msec */ dev_dbg(&udev->dev, "usb %sresume\n", (PMSG_IS_AUTO(msg) ? "auto-" : "")); - msleep(25); + msleep(USB_RESUME_TIMEOUT); /* Virtual root hubs can trigger on GET_PORT_STATUS to * stop resume signaling. Then finish the resume @@ -3262,6 +3315,10 @@ clear_bit(port1, hub->busy_bits); + if (udev->persist_enabled && hub_is_superspeed(hub->hdev)) + status = wait_for_ss_port_enable(udev, hub, &port1, &portchange, + &portstatus); + status = check_port_resume_type(udev, hub, port1, status, portchange, portstatus); if (status == 0) @@ -4136,7 +4193,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 && j == 0)) break; } udev->descriptor.bMaxPacketSize0 = @@ -4262,6 +4325,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) { @@ -4504,7 +4569,6 @@ if (status < 0) goto loop; - usb_detect_quirks(udev); if (udev->quirks & USB_QUIRK_DELAY_INIT) msleep(1000); @@ -4678,9 +4742,10 @@ hub = list_entry(tmp, struct usb_hub, event_list); kref_get(&hub->kref); + hdev = hub->hdev; + usb_get_dev(hdev); spin_unlock_irq(&hub_event_lock); - hdev = hub->hdev; hub_dev = hub->intfdev; intf = to_usb_interface(hub_dev); dev_dbg(hub_dev, "state %d ports %d chg %04x evt %04x\n", @@ -4893,6 +4958,7 @@ usb_autopm_put_interface(intf); loop_disconnected: usb_unlock_device(hdev); + usb_put_dev(hdev); kref_put(&hub->kref, hub_release); } /* end while (1) */ @@ -5126,9 +5192,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 @@ -5137,16 +5200,20 @@ 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; } set_bit(port1, parent_hub->busy_bits); + + bos = udev->bos; + udev->bos = NULL; + for (i = 0; i < SET_CONFIG_TRIES; ++i) { /* ep0 maxpacket size may change; let the HCD know about it. @@ -5241,10 +5308,11 @@ 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; } @@ -5331,10 +5399,11 @@ else if (cintf->condition == USB_INTERFACE_BOUND) rebind = 1; + if (rebind) + cintf->needs_binding = 1; } - if (ret == 0 && rebind) - usb_rebind_intf(cintf); } + usb_unbind_and_rebind_marked_interfaces(udev); } usb_autosuspend_device(udev); --- linux-3.13.0.orig/drivers/usb/core/quirks.c +++ linux-3.13.0/drivers/usb/core/quirks.c @@ -44,9 +44,23 @@ /* Creative SB Audigy 2 NX */ { USB_DEVICE(0x041e, 0x3020), .driver_info = USB_QUIRK_RESET_RESUME }, + /* Microsoft Wireless Laser Mouse 6000 Receiver */ + { USB_DEVICE(0x045e, 0x00e1), .driver_info = USB_QUIRK_RESET_RESUME }, + /* Microsoft LifeCam-VX700 v2.0 */ { USB_DEVICE(0x045e, 0x0770), .driver_info = USB_QUIRK_RESET_RESUME }, + /* Logitech HD Pro Webcams C920 and C930e */ + { 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 }, @@ -71,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 }, @@ -151,6 +171,16 @@ /* INTEL VALUE SSD */ { USB_DEVICE(0x8086, 0xf1a5), .driver_info = USB_QUIRK_RESET_RESUME }, + /* ASUS Base Station(T100) */ + { USB_DEVICE(0x0b05, 0x17e0), .driver_info = + USB_QUIRK_IGNORE_REMOTE_WAKEUP }, + + /* 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-3.13.0.orig/drivers/usb/core/usb.c +++ linux-3.13.0/drivers/usb/core/usb.c @@ -1050,6 +1050,7 @@ pr_info("%s: USB support disabled\n", usbcore_name); return 0; } + usb_init_pool_max(); retval = usb_debugfs_init(); if (retval) --- linux-3.13.0.orig/drivers/usb/core/usb.h +++ linux-3.13.0/drivers/usb/core/usb.h @@ -35,7 +35,6 @@ unsigned int size); extern int usb_get_bos_descriptor(struct usb_device *dev); extern void usb_release_bos_descriptor(struct usb_device *dev); -extern int usb_device_supports_lpm(struct usb_device *udev); extern char *usb_cache_string(struct usb_device *udev, int index); extern int usb_set_configuration(struct usb_device *dev, int configuration); extern int usb_choose_configuration(struct usb_device *udev); @@ -56,7 +55,7 @@ extern int usb_match_device(struct usb_device *dev, const struct usb_device_id *id); extern void usb_forced_unbind_intf(struct usb_interface *intf); -extern void usb_rebind_intf(struct usb_interface *intf); +extern void usb_unbind_and_rebind_marked_interfaces(struct usb_device *udev); extern int usb_hub_claim_port(struct usb_device *hdev, unsigned port, struct dev_state *owner); --- linux-3.13.0.orig/drivers/usb/dwc3/core.c +++ linux-3.13.0/drivers/usb/dwc3/core.c @@ -583,12 +583,6 @@ { struct dwc3 *dwc = platform_get_drvdata(pdev); - usb_phy_set_suspend(dwc->usb2_phy, 1); - usb_phy_set_suspend(dwc->usb3_phy, 1); - - pm_runtime_put_sync(&pdev->dev); - pm_runtime_disable(&pdev->dev); - dwc3_debugfs_exit(dwc); switch (dwc->dr_mode) { @@ -609,8 +603,15 @@ dwc3_event_buffers_cleanup(dwc); dwc3_free_event_buffers(dwc); + + usb_phy_set_suspend(dwc->usb2_phy, 1); + usb_phy_set_suspend(dwc->usb3_phy, 1); + dwc3_core_exit(dwc); + pm_runtime_put_sync(&pdev->dev); + pm_runtime_disable(&pdev->dev); + return 0; } --- linux-3.13.0.orig/drivers/usb/dwc3/core.h +++ linux-3.13.0/drivers/usb/dwc3/core.h @@ -815,15 +815,15 @@ * 12 - VndrDevTstRcved * @reserved15_12: Reserved, not used * @event_info: Information about this event - * @reserved31_24: Reserved, not used + * @reserved31_25: Reserved, not used */ struct dwc3_event_devt { u32 one_bit:1; u32 device_event:7; u32 type:4; u32 reserved15_12:4; - u32 event_info:8; - u32 reserved31_24:8; + u32 event_info:9; + u32 reserved31_25:7; } __packed; /** @@ -856,6 +856,19 @@ struct dwc3_event_gevt gevt; }; +/** + * struct dwc3_gadget_ep_cmd_params - representation of endpoint command + * parameters + * @param2: third parameter + * @param1: second parameter + * @param0: first parameter + */ +struct dwc3_gadget_ep_cmd_params { + u32 param2; + u32 param1; + u32 param0; +}; + /* * DWC3 Features to be used as Driver Data */ @@ -881,11 +894,28 @@ #if IS_ENABLED(CONFIG_USB_DWC3_GADGET) || IS_ENABLED(CONFIG_USB_DWC3_DUAL_ROLE) int dwc3_gadget_init(struct dwc3 *dwc); void dwc3_gadget_exit(struct dwc3 *dwc); +int dwc3_gadget_set_test_mode(struct dwc3 *dwc, int mode); +int dwc3_gadget_set_link_state(struct dwc3 *dwc, enum dwc3_link_state state); +int dwc3_send_gadget_ep_cmd(struct dwc3 *dwc, unsigned ep, + unsigned cmd, struct dwc3_gadget_ep_cmd_params *params); +int dwc3_send_gadget_generic_command(struct dwc3 *dwc, int cmd, u32 param); #else static inline int dwc3_gadget_init(struct dwc3 *dwc) { return 0; } static inline void dwc3_gadget_exit(struct dwc3 *dwc) { } +static inline int dwc3_gadget_set_test_mode(struct dwc3 *dwc, int mode) +{ return 0; } +static inline int dwc3_gadget_set_link_state(struct dwc3 *dwc, + enum dwc3_link_state state) +{ return 0; } + +static inline int dwc3_send_gadget_ep_cmd(struct dwc3 *dwc, unsigned ep, + unsigned cmd, struct dwc3_gadget_ep_cmd_params *params) +{ return 0; } +static inline int dwc3_send_gadget_generic_command(struct dwc3 *dwc, + int cmd, u32 param) +{ return 0; } #endif /* power management interface */ --- linux-3.13.0.orig/drivers/usb/dwc3/dwc3-exynos.c +++ linux-3.13.0/drivers/usb/dwc3/dwc3-exynos.c @@ -50,6 +50,7 @@ exynos->usb2_phy = pdev; pdata.type = USB_PHY_TYPE_USB2; + pdata.gpio_reset = -1; ret = platform_device_add_data(exynos->usb2_phy, &pdata, sizeof(pdata)); if (ret) --- linux-3.13.0.orig/drivers/usb/dwc3/dwc3-omap.c +++ linux-3.13.0/drivers/usb/dwc3/dwc3-omap.c @@ -215,6 +215,18 @@ omap->irq0_offset, value); } +static void dwc3_omap_write_irqmisc_clr(struct dwc3_omap *omap, u32 value) +{ + dwc3_omap_writel(omap->base, USBOTGSS_IRQENABLE_CLR_MISC + + omap->irqmisc_offset, value); +} + +static void dwc3_omap_write_irq0_clr(struct dwc3_omap *omap, u32 value) +{ + dwc3_omap_writel(omap->base, USBOTGSS_IRQENABLE_CLR_0 - + omap->irq0_offset, value); +} + static void dwc3_omap_set_mailbox(struct dwc3_omap *omap, enum omap_dwc3_vbus_id_status status) { @@ -359,9 +371,23 @@ static void dwc3_omap_disable_irqs(struct dwc3_omap *omap) { + u32 reg; + /* disable all IRQs */ - dwc3_omap_write_irqmisc_set(omap, 0x00); - dwc3_omap_write_irq0_set(omap, 0x00); + reg = USBOTGSS_IRQO_COREIRQ_ST; + dwc3_omap_write_irq0_clr(omap, reg); + + reg = (USBOTGSS_IRQMISC_OEVT | + USBOTGSS_IRQMISC_DRVVBUS_RISE | + USBOTGSS_IRQMISC_CHRGVBUS_RISE | + USBOTGSS_IRQMISC_DISCHRGVBUS_RISE | + USBOTGSS_IRQMISC_IDPULLUP_RISE | + USBOTGSS_IRQMISC_DRVVBUS_FALL | + USBOTGSS_IRQMISC_CHRGVBUS_FALL | + USBOTGSS_IRQMISC_DISCHRGVBUS_FALL | + USBOTGSS_IRQMISC_IDPULLUP_FALL); + + dwc3_omap_write_irqmisc_clr(omap, reg); } static u64 dwc3_omap_dma_mask = DMA_BIT_MASK(32); @@ -592,9 +618,9 @@ if (omap->extcon_id_dev.edev) extcon_unregister_interest(&omap->extcon_id_dev); dwc3_omap_disable_irqs(omap); + device_for_each_child(&pdev->dev, NULL, dwc3_omap_remove_core); pm_runtime_put_sync(&pdev->dev); pm_runtime_disable(&pdev->dev); - device_for_each_child(&pdev->dev, NULL, dwc3_omap_remove_core); return 0; } --- linux-3.13.0.orig/drivers/usb/dwc3/dwc3-pci.c +++ linux-3.13.0/drivers/usb/dwc3/dwc3-pci.c @@ -52,6 +52,7 @@ glue->usb2_phy = pdev; pdata.type = USB_PHY_TYPE_USB2; + pdata.gpio_reset = -1; ret = platform_device_add_data(glue->usb2_phy, &pdata, sizeof(pdata)); if (ret) --- linux-3.13.0.orig/drivers/usb/dwc3/ep0.c +++ linux-3.13.0/drivers/usb/dwc3/ep0.c @@ -251,7 +251,7 @@ /* stall is always issued on EP0 */ dep = dwc->eps[0]; - __dwc3_gadget_ep_set_halt(dep, 1); + __dwc3_gadget_ep_set_halt(dep, 1, false); dep->flags = DWC3_EP_ENABLED; dwc->delayed_status = false; @@ -461,7 +461,7 @@ return -EINVAL; if (set == 0 && (dep->flags & DWC3_EP_WEDGE)) break; - ret = __dwc3_gadget_ep_set_halt(dep, set); + ret = __dwc3_gadget_ep_set_halt(dep, set, true); if (ret) return -EINVAL; break; @@ -707,6 +707,10 @@ dev_vdbg(dwc->dev, "USB_REQ_SET_ISOCH_DELAY\n"); ret = dwc3_ep0_set_isoch_delay(dwc, ctrl); break; + case USB_REQ_SET_INTERFACE: + dev_vdbg(dwc->dev, "USB_REQ_SET_INTERFACE"); + dwc->start_config_issued = false; + /* Fall through */ default: dev_vdbg(dwc->dev, "Forwarding to gadget driver\n"); ret = dwc3_ep0_delegate_req(dwc, ctrl); @@ -789,6 +793,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); @@ -901,11 +910,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-3.13.0.orig/drivers/usb/dwc3/gadget.c +++ linux-3.13.0/drivers/usb/dwc3/gadget.c @@ -532,12 +532,11 @@ if (!usb_endpoint_xfer_isoc(desc)) return 0; - memset(&trb_link, 0, sizeof(trb_link)); - /* Link TRB for ISOC. The HWO bit is never reset */ trb_st_hw = &dep->trb_pool[0]; trb_link = &dep->trb_pool[DWC3_TRB_NUM - 1]; + memset(trb_link, 0, sizeof(*trb_link)); trb_link->bpl = lower_32_bits(dwc3_trb_dma_offset(dep, trb_st_hw)); trb_link->bph = upper_32_bits(dwc3_trb_dma_offset(dep, trb_st_hw)); @@ -586,6 +585,10 @@ dwc3_remove_requests(dwc, dep); + /* make sure HW endpoint isn't stalled */ + if (dep->flags & DWC3_EP_STALL) + __dwc3_gadget_ep_set_halt(dep, 0, false); + reg = dwc3_readl(dwc->regs, DWC3_DALEPENA); reg &= ~DWC3_DALEPENA_EP(dep->number); dwc3_writel(dwc->regs, DWC3_DALEPENA, reg); @@ -884,8 +887,7 @@ if (i == (request->num_mapped_sgs - 1) || sg_is_last(s)) { - if (list_is_last(&req->list, - &dep->request_list)) + if (list_empty(&dep->request_list)) last_one = true; chain = false; } @@ -903,6 +905,9 @@ if (last_one) break; } + + if (last_one) + break; } else { dma = req->request.dma; length = req->request.length; @@ -1182,7 +1187,7 @@ return ret; } -int __dwc3_gadget_ep_set_halt(struct dwc3_ep *dep, int value) +int __dwc3_gadget_ep_set_halt(struct dwc3_ep *dep, int value, int protocol) { struct dwc3_gadget_ep_cmd_params params; struct dwc3 *dwc = dep->dwc; @@ -1191,6 +1196,14 @@ memset(¶ms, 0x00, sizeof(params)); if (value) { + if (!protocol && ((dep->direction && dep->flags & DWC3_EP_BUSY) || + (!list_empty(&dep->req_queued) || + !list_empty(&dep->request_list)))) { + dev_dbg(dwc->dev, "%s: pending request, cannot halt\n", + dep->name); + return -EAGAIN; + } + ret = dwc3_send_gadget_ep_cmd(dwc, dep->number, DWC3_DEPCMD_SETSTALL, ¶ms); if (ret) @@ -1230,7 +1243,7 @@ goto out; } - ret = __dwc3_gadget_ep_set_halt(dep, value); + ret = __dwc3_gadget_ep_set_halt(dep, value, false); out: spin_unlock_irqrestore(&dwc->lock, flags); @@ -2591,12 +2604,33 @@ } 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) + dev_vdbg(dwc->dev, "Changing max_speed on rev %08x\n", + dwc->revision); + + dwc->gadget.max_speed = dwc->maximum_speed; + + /* * REVISIT: Here we should clear all pending IRQs to be * sure we're starting from a well known location. */ --- linux-3.13.0.orig/drivers/usb/dwc3/gadget.h +++ linux-3.13.0/drivers/usb/dwc3/gadget.h @@ -56,12 +56,6 @@ /* DEPXFERCFG parameter 0 */ #define DWC3_DEPXFERCFG_NUM_XFER_RES(n) ((n) & 0xffff) -struct dwc3_gadget_ep_cmd_params { - u32 param2; - u32 param1; - u32 param0; -}; - /* -------------------------------------------------------------------------- */ #define to_dwc3_request(r) (container_of(r, struct dwc3_request, request)) @@ -85,19 +79,13 @@ void dwc3_gadget_giveback(struct dwc3_ep *dep, struct dwc3_request *req, int status); -int dwc3_gadget_set_test_mode(struct dwc3 *dwc, int mode); -int dwc3_gadget_set_link_state(struct dwc3 *dwc, enum dwc3_link_state state); - void dwc3_ep0_interrupt(struct dwc3 *dwc, const struct dwc3_event_depevt *event); void dwc3_ep0_out_start(struct dwc3 *dwc); int dwc3_gadget_ep0_set_halt(struct usb_ep *ep, int value); int dwc3_gadget_ep0_queue(struct usb_ep *ep, struct usb_request *request, gfp_t gfp_flags); -int __dwc3_gadget_ep_set_halt(struct dwc3_ep *dep, int value); -int dwc3_send_gadget_ep_cmd(struct dwc3 *dwc, unsigned ep, - unsigned cmd, struct dwc3_gadget_ep_cmd_params *params); -int dwc3_send_gadget_generic_command(struct dwc3 *dwc, int cmd, u32 param); +int __dwc3_gadget_ep_set_halt(struct dwc3_ep *dep, int value, int protocol); /** * dwc3_gadget_ep_get_transfer_index - Gets transfer index from HW --- linux-3.13.0.orig/drivers/usb/gadget/at91_udc.c +++ linux-3.13.0/drivers/usb/gadget/at91_udc.c @@ -871,12 +871,10 @@ return; udc->clocked = 1; - if (IS_ENABLED(CONFIG_COMMON_CLK)) { - clk_set_rate(udc->uclk, 48000000); - clk_prepare_enable(udc->uclk); - } - clk_prepare_enable(udc->iclk); - clk_prepare_enable(udc->fclk); + if (IS_ENABLED(CONFIG_COMMON_CLK)) + clk_enable(udc->uclk); + clk_enable(udc->iclk); + clk_enable(udc->fclk); } static void clk_off(struct at91_udc *udc) @@ -885,10 +883,10 @@ return; udc->clocked = 0; udc->gadget.speed = USB_SPEED_UNKNOWN; - clk_disable_unprepare(udc->fclk); - clk_disable_unprepare(udc->iclk); + clk_disable(udc->fclk); + clk_disable(udc->iclk); if (IS_ENABLED(CONFIG_COMMON_CLK)) - clk_disable_unprepare(udc->uclk); + clk_disable(udc->uclk); } /* @@ -1791,14 +1789,24 @@ } /* don't do anything until we have both gadget driver and VBUS */ + if (IS_ENABLED(CONFIG_COMMON_CLK)) { + clk_set_rate(udc->uclk, 48000000); + retval = clk_prepare(udc->uclk); + if (retval) + goto fail1; + } + retval = clk_prepare(udc->fclk); + if (retval) + goto fail1a; + retval = clk_prepare_enable(udc->iclk); if (retval) - goto fail1; + goto fail1b; at91_udp_write(udc, AT91_UDP_TXVC, AT91_UDP_TXVC_TXVDIS); at91_udp_write(udc, AT91_UDP_IDR, 0xffffffff); /* Clear all pending interrupts - UDP may be used by bootloader. */ at91_udp_write(udc, AT91_UDP_ICR, 0xffffffff); - clk_disable_unprepare(udc->iclk); + clk_disable(udc->iclk); /* request UDC and maybe VBUS irqs */ udc->udp_irq = platform_get_irq(pdev, 0); @@ -1806,7 +1814,7 @@ 0, driver_name, udc); if (retval < 0) { DBG("request irq %d failed\n", udc->udp_irq); - goto fail1; + goto fail1c; } if (gpio_is_valid(udc->board.vbus_pin)) { retval = gpio_request(udc->board.vbus_pin, "udc_vbus"); @@ -1859,6 +1867,13 @@ gpio_free(udc->board.vbus_pin); fail2: free_irq(udc->udp_irq, udc); +fail1c: + clk_unprepare(udc->iclk); +fail1b: + clk_unprepare(udc->fclk); +fail1a: + if (IS_ENABLED(CONFIG_COMMON_CLK)) + clk_unprepare(udc->uclk); fail1: if (IS_ENABLED(CONFIG_COMMON_CLK) && !IS_ERR(udc->uclk)) clk_put(udc->uclk); @@ -1907,6 +1922,11 @@ res = platform_get_resource(pdev, IORESOURCE_MEM, 0); release_mem_region(res->start, resource_size(res)); + if (IS_ENABLED(CONFIG_COMMON_CLK)) + clk_unprepare(udc->uclk); + clk_unprepare(udc->fclk); + clk_unprepare(udc->iclk); + clk_put(udc->iclk); clk_put(udc->fclk); if (IS_ENABLED(CONFIG_COMMON_CLK)) --- linux-3.13.0.orig/drivers/usb/gadget/atmel_usba_udc.c +++ linux-3.13.0/drivers/usb/gadget/atmel_usba_udc.c @@ -716,10 +716,10 @@ req->using_dma = 1; req->ctrl = USBA_BF(DMA_BUF_LEN, req->req.length) | USBA_DMA_CH_EN | USBA_DMA_END_BUF_IE - | USBA_DMA_END_TR_EN | USBA_DMA_END_TR_IE; + | USBA_DMA_END_BUF_EN; - if (ep->is_in) - req->ctrl |= USBA_DMA_END_BUF_EN; + if (!ep->is_in) + req->ctrl |= USBA_DMA_END_TR_EN | USBA_DMA_END_TR_IE; /* * Add this request to the queue and submit for DMA if @@ -828,7 +828,7 @@ { struct usba_ep *ep = to_usba_ep(_ep); struct usba_udc *udc = ep->udc; - struct usba_request *req = to_usba_req(_req); + struct usba_request *req; unsigned long flags; u32 status; @@ -837,6 +837,16 @@ spin_lock_irqsave(&udc->lock, flags); + list_for_each_entry(req, &ep->queue, queue) { + if (&req->req == _req) + break; + } + + if (&req->req != _req) { + spin_unlock_irqrestore(&udc->lock, flags); + return -EINVAL; + } + if (req->using_dma) { /* * If this request is currently being transferred, @@ -1572,7 +1582,6 @@ if ((epstatus & epctrl) & USBA_RX_BK_RDY) { DBG(DBG_BUS, "%s: RX data ready\n", ep->ep.name); receive_data(ep); - usba_ep_writel(ep, CLR_STA, USBA_RX_BK_RDY); } } @@ -1827,12 +1836,12 @@ toggle_bias(0); usba_writel(udc, CTRL, USBA_DISABLE_MASK); - udc->driver = NULL; - clk_disable_unprepare(udc->hclk); clk_disable_unprepare(udc->pclk); - DBG(DBG_GADGET, "unregistered driver `%s'\n", driver->driver.name); + DBG(DBG_GADGET, "unregistered driver `%s'\n", udc->driver->driver.name); + + udc->driver = NULL; return 0; } --- linux-3.13.0.orig/drivers/usb/gadget/bcm63xx_udc.c +++ linux-3.13.0/drivers/usb/gadget/bcm63xx_udc.c @@ -361,24 +361,30 @@ bcm_writel(val, udc->iudma_regs + off); } -static inline u32 usb_dmac_readl(struct bcm63xx_udc *udc, u32 off) +static inline u32 usb_dmac_readl(struct bcm63xx_udc *udc, u32 off, int chan) { - return bcm_readl(udc->iudma_regs + IUDMA_DMAC_OFFSET + off); + return bcm_readl(udc->iudma_regs + IUDMA_DMAC_OFFSET + off + + (ENETDMA_CHAN_WIDTH * chan)); } -static inline void usb_dmac_writel(struct bcm63xx_udc *udc, u32 val, u32 off) +static inline void usb_dmac_writel(struct bcm63xx_udc *udc, u32 val, u32 off, + int chan) { - bcm_writel(val, udc->iudma_regs + IUDMA_DMAC_OFFSET + off); + bcm_writel(val, udc->iudma_regs + IUDMA_DMAC_OFFSET + off + + (ENETDMA_CHAN_WIDTH * chan)); } -static inline u32 usb_dmas_readl(struct bcm63xx_udc *udc, u32 off) +static inline u32 usb_dmas_readl(struct bcm63xx_udc *udc, u32 off, int chan) { - return bcm_readl(udc->iudma_regs + IUDMA_DMAS_OFFSET + off); + return bcm_readl(udc->iudma_regs + IUDMA_DMAS_OFFSET + off + + (ENETDMA_CHAN_WIDTH * chan)); } -static inline void usb_dmas_writel(struct bcm63xx_udc *udc, u32 val, u32 off) +static inline void usb_dmas_writel(struct bcm63xx_udc *udc, u32 val, u32 off, + int chan) { - bcm_writel(val, udc->iudma_regs + IUDMA_DMAS_OFFSET + off); + bcm_writel(val, udc->iudma_regs + IUDMA_DMAS_OFFSET + off + + (ENETDMA_CHAN_WIDTH * chan)); } static inline void set_clocks(struct bcm63xx_udc *udc, bool is_enabled) @@ -639,7 +645,7 @@ } while (!last_bd); usb_dmac_writel(udc, ENETDMAC_CHANCFG_EN_MASK, - ENETDMAC_CHANCFG_REG(iudma->ch_idx)); + ENETDMAC_CHANCFG_REG, iudma->ch_idx); } /** @@ -695,9 +701,9 @@ bcm63xx_fifo_reset_ep(udc, max(0, iudma->ep_num)); /* stop DMA, then wait for the hardware to wrap up */ - usb_dmac_writel(udc, 0, ENETDMAC_CHANCFG_REG(ch_idx)); + usb_dmac_writel(udc, 0, ENETDMAC_CHANCFG_REG, ch_idx); - while (usb_dmac_readl(udc, ENETDMAC_CHANCFG_REG(ch_idx)) & + while (usb_dmac_readl(udc, ENETDMAC_CHANCFG_REG, ch_idx) & ENETDMAC_CHANCFG_EN_MASK) { udelay(1); @@ -714,10 +720,10 @@ dev_warn(udc->dev, "forcibly halting IUDMA channel %d\n", ch_idx); usb_dmac_writel(udc, ENETDMAC_CHANCFG_BUFHALT_MASK, - ENETDMAC_CHANCFG_REG(ch_idx)); + ENETDMAC_CHANCFG_REG, ch_idx); } } - usb_dmac_writel(udc, ~0, ENETDMAC_IR_REG(ch_idx)); + usb_dmac_writel(udc, ~0, ENETDMAC_IR_REG, ch_idx); /* don't leave "live" HW-owned entries for the next guy to step on */ for (d = iudma->bd_ring; d <= iudma->end_bd; d++) @@ -729,11 +735,11 @@ /* set up IRQs, UBUS burst size, and BD base for this channel */ usb_dmac_writel(udc, ENETDMAC_IR_BUFDONE_MASK, - ENETDMAC_IRMASK_REG(ch_idx)); - usb_dmac_writel(udc, 8, ENETDMAC_MAXBURST_REG(ch_idx)); + ENETDMAC_IRMASK_REG, ch_idx); + usb_dmac_writel(udc, 8, ENETDMAC_MAXBURST_REG, ch_idx); - usb_dmas_writel(udc, iudma->bd_ring_dma, ENETDMAS_RSTART_REG(ch_idx)); - usb_dmas_writel(udc, 0, ENETDMAS_SRAM2_REG(ch_idx)); + usb_dmas_writel(udc, iudma->bd_ring_dma, ENETDMAS_RSTART_REG, ch_idx); + usb_dmas_writel(udc, 0, ENETDMAS_SRAM2_REG, ch_idx); } /** @@ -2036,7 +2042,7 @@ spin_lock(&udc->lock); usb_dmac_writel(udc, ENETDMAC_IR_BUFDONE_MASK, - ENETDMAC_IR_REG(iudma->ch_idx)); + ENETDMAC_IR_REG, iudma->ch_idx); bep = iudma->bep; rc = iudma_read(udc, iudma); @@ -2176,18 +2182,18 @@ seq_printf(s, " [ep%d]:\n", max_t(int, iudma_defaults[ch_idx].ep_num, 0)); seq_printf(s, " cfg: %08x; irqstat: %08x; irqmask: %08x; maxburst: %08x\n", - usb_dmac_readl(udc, ENETDMAC_CHANCFG_REG(ch_idx)), - usb_dmac_readl(udc, ENETDMAC_IR_REG(ch_idx)), - usb_dmac_readl(udc, ENETDMAC_IRMASK_REG(ch_idx)), - usb_dmac_readl(udc, ENETDMAC_MAXBURST_REG(ch_idx))); + usb_dmac_readl(udc, ENETDMAC_CHANCFG_REG, ch_idx), + usb_dmac_readl(udc, ENETDMAC_IR_REG, ch_idx), + usb_dmac_readl(udc, ENETDMAC_IRMASK_REG, ch_idx), + usb_dmac_readl(udc, ENETDMAC_MAXBURST_REG, ch_idx)); - sram2 = usb_dmas_readl(udc, ENETDMAS_SRAM2_REG(ch_idx)); - sram3 = usb_dmas_readl(udc, ENETDMAS_SRAM3_REG(ch_idx)); + sram2 = usb_dmas_readl(udc, ENETDMAS_SRAM2_REG, ch_idx); + sram3 = usb_dmas_readl(udc, ENETDMAS_SRAM3_REG, ch_idx); seq_printf(s, " base: %08x; index: %04x_%04x; desc: %04x_%04x %08x\n", - usb_dmas_readl(udc, ENETDMAS_RSTART_REG(ch_idx)), + usb_dmas_readl(udc, ENETDMAS_RSTART_REG, ch_idx), sram2 >> 16, sram2 & 0xffff, sram3 >> 16, sram3 & 0xffff, - usb_dmas_readl(udc, ENETDMAS_SRAM4_REG(ch_idx))); + usb_dmas_readl(udc, ENETDMAS_SRAM4_REG, ch_idx)); seq_printf(s, " desc: %d/%d used", iudma->n_bds_used, iudma->n_bds); --- linux-3.13.0.orig/drivers/usb/gadget/configfs.c +++ linux-3.13.0/drivers/usb/gadget/configfs.c @@ -757,6 +757,7 @@ } } c->next_interface_id = 0; + memset(c->interface, 0, sizeof(c->interface)); c->superspeed = 0; c->highspeed = 0; c->fullspeed = 0; --- linux-3.13.0.orig/drivers/usb/gadget/f_acm.c +++ linux-3.13.0/drivers/usb/gadget/f_acm.c @@ -430,11 +430,12 @@ if (acm->notify->driver_data) { VDBG(cdev, "reset acm control interface %d\n", intf); usb_ep_disable(acm->notify); - } else { - VDBG(cdev, "init acm ctrl interface %d\n", intf); + } + + if (!acm->notify->desc) if (config_ep_by_speed(cdev->gadget, f, acm->notify)) return -EINVAL; - } + usb_ep_enable(acm->notify); acm->notify->driver_data = acm; --- linux-3.13.0.orig/drivers/usb/gadget/f_fs.c +++ linux-3.13.0/drivers/usb/gadget/f_fs.c @@ -1389,11 +1389,13 @@ ffs->ep0req->context = ffs; lang = ffs->stringtabs; - for (lang = ffs->stringtabs; *lang; ++lang) { - struct usb_string *str = (*lang)->strings; - int id = first_id; - for (; str->s; ++id, ++str) - str->id = id; + if (lang) { + for (; *lang; ++lang) { + struct usb_string *str = (*lang)->strings; + int id = first_id; + for (; str->s; ++id, ++str) + str->id = id; + } } ffs->gadget = cdev->gadget; --- linux-3.13.0.orig/drivers/usb/gadget/fusb300_udc.h +++ linux-3.13.0/drivers/usb/gadget/fusb300_udc.h @@ -12,7 +12,7 @@ #ifndef __FUSB300_UDC_H__ -#define __FUSB300_UDC_H_ +#define __FUSB300_UDC_H__ #include --- linux-3.13.0.orig/drivers/usb/gadget/m66592-udc.c +++ linux-3.13.0/drivers/usb/gadget/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-3.13.0.orig/drivers/usb/gadget/mv_udc_core.c +++ linux-3.13.0/drivers/usb/gadget/mv_udc_core.c @@ -2161,7 +2161,7 @@ return -ENODEV; } - udc->phy_regs = ioremap(r->start, resource_size(r)); + udc->phy_regs = devm_ioremap(&pdev->dev, r->start, resource_size(r)); if (udc->phy_regs == NULL) { dev_err(&pdev->dev, "failed to map phy I/O memory\n"); return -EBUSY; --- linux-3.13.0.orig/drivers/usb/gadget/pxa27x_udc.c +++ linux-3.13.0/drivers/usb/gadget/pxa27x_udc.c @@ -2555,6 +2555,9 @@ udc->pullup_resume = udc->pullup_on; dplus_pullup(udc, 0); + if (udc->driver) + udc->driver->disconnect(&udc->gadget); + return 0; } --- linux-3.13.0.orig/drivers/usb/gadget/tcm_usb_gadget.c +++ linux-3.13.0/drivers/usb/gadget/tcm_usb_gadget.c @@ -1471,6 +1471,11 @@ { } +static void usbg_aborted_task(struct se_cmd *se_cmd) +{ + return; +} + static const char *usbg_check_wwn(const char *name) { const char *n; @@ -1613,7 +1618,7 @@ return ERR_PTR(-ENOMEM); } tport->tport_wwpn = wwpn; - snprintf(tport->tport_name, sizeof(tport->tport_name), wnn_name); + snprintf(tport->tport_name, sizeof(tport->tport_name), "%s", wnn_name); return &tport->tport_wwn; } @@ -1897,6 +1902,7 @@ .queue_data_in = usbg_send_read_response, .queue_status = usbg_send_status_response, .queue_tm_rsp = usbg_queue_tm_rsp, + .aborted_task = usbg_aborted_task, .check_stop_free = usbg_check_stop_free, .fabric_make_wwn = usbg_make_tport, --- linux-3.13.0.orig/drivers/usb/gadget/u_serial.c +++ linux-3.13.0/drivers/usb/gadget/u_serial.c @@ -549,8 +549,8 @@ port->read_started--; } - /* Push from tty to ldisc; without low_latency set this is handled by - * a workqueue, so we won't get callbacks and can hold port_lock + /* Push from tty to ldisc; this is handled by a workqueue, + * so we won't get callbacks and can hold port_lock */ if (do_push) tty_flip_buffer_push(&port->port); --- linux-3.13.0.orig/drivers/usb/gadget/udc-core.c +++ linux-3.13.0/drivers/usb/gadget/udc-core.c @@ -456,6 +456,11 @@ { struct usb_udc *udc = container_of(dev, struct usb_udc, dev); + if (!udc->driver) { + dev_err(dev, "soft-connect without a gadget driver\n"); + return -EOPNOTSUPP; + } + if (sysfs_streq(buf, "connect")) { usb_gadget_udc_start(udc->gadget, udc->driver); usb_gadget_connect(udc->gadget); --- linux-3.13.0.orig/drivers/usb/gadget/zero.c +++ linux-3.13.0/drivers/usb/gadget/zero.c @@ -300,7 +300,7 @@ ss_opts->isoc_interval = gzero_options.isoc_interval; ss_opts->isoc_maxpacket = gzero_options.isoc_maxpacket; ss_opts->isoc_mult = gzero_options.isoc_mult; - ss_opts->isoc_maxburst = gzero_options.isoc_maxpacket; + ss_opts->isoc_maxburst = gzero_options.isoc_maxburst; ss_opts->bulk_buflen = gzero_options.bulk_buflen; func_ss = usb_get_function(func_inst_ss); --- linux-3.13.0.orig/drivers/usb/host/ehci-fsl.c +++ linux-3.13.0/drivers/usb/host/ehci-fsl.c @@ -133,6 +133,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,7 +270,8 @@ break; } - if (pdata->have_sysif_regs && pdata->controller_ver && + if (pdata->have_sysif_regs && + pdata->controller_ver > FSL_USB_VER_1_6 && (phy_mode == FSL_USB2_PHY_ULPI)) { /* check PHY_CLK_VALID to get phy clk valid */ if (!(spin_event_timeout(in_be32(non_ehci + FSL_SOC_USB_CTRL) & @@ -301,6 +311,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-3.13.0.orig/drivers/usb/host/ehci-hcd.c +++ linux-3.13.0/drivers/usb/host/ehci-hcd.c @@ -686,8 +686,15 @@ struct ehci_hcd *ehci = hcd_to_ehci (hcd); u32 status, masked_status, pcd_status = 0, cmd; int bh; + unsigned long flags; - spin_lock (&ehci->lock); + /* + * For threadirqs option we use spin_lock_irqsave() variant to prevent + * deadlock with ehci hrtimer callback, because hrtimer callbacks run + * in interrupt context even when threadirqs is specified. We can go + * back to spin_lock() variant when hrtimer callbacks become threaded. + */ + spin_lock_irqsave(&ehci->lock, flags); status = ehci_readl(ehci, &ehci->regs->status); @@ -705,7 +712,7 @@ /* Shared IRQ? */ if (!masked_status || unlikely(ehci->rh_state == EHCI_RH_HALTED)) { - spin_unlock(&ehci->lock); + spin_unlock_irqrestore(&ehci->lock, flags); return IRQ_NONE; } @@ -788,12 +795,12 @@ ehci->reset_done[i] == 0)) continue; - /* start 20 msec resume signaling from this port, - * and make khubd collect PORT_STAT_C_SUSPEND to - * stop that signaling. Use 5 ms extra for safety, - * like usb_port_resume() does. + /* start USB_RESUME_TIMEOUT msec resume signaling from + * this port, and make khubd collect + * PORT_STAT_C_SUSPEND to stop that signaling. */ - ehci->reset_done[i] = jiffies + msecs_to_jiffies(25); + ehci->reset_done[i] = jiffies + + msecs_to_jiffies(USB_RESUME_TIMEOUT); set_bit(i, &ehci->resuming_ports); ehci_dbg (ehci, "port %d remote wakeup\n", i + 1); usb_hcd_start_port_resume(&hcd->self, i); @@ -823,7 +830,7 @@ if (bh) ehci_work (ehci); - spin_unlock (&ehci->lock); + spin_unlock_irqrestore(&ehci->lock, flags); if (pcd_status) usb_hcd_poll_rh_status(hcd); return IRQ_HANDLED; @@ -966,8 +973,6 @@ } qh->exception = 1; - if (ehci->rh_state < EHCI_RH_RUNNING) - qh->qh_state = QH_STATE_IDLE; switch (qh->qh_state) { case QH_STATE_LINKED: WARN_ON(!list_empty(&qh->qtd_list)); --- linux-3.13.0.orig/drivers/usb/host/ehci-hub.c +++ linux-3.13.0/drivers/usb/host/ehci-hub.c @@ -238,6 +238,7 @@ int port; int mask; int changed; + bool fs_idle_delay; ehci_dbg(ehci, "suspend root hub\n"); @@ -272,6 +273,7 @@ ehci->bus_suspended = 0; ehci->owned_ports = 0; changed = 0; + fs_idle_delay = false; port = HCS_N_PORTS(ehci->hcs_params); while (port--) { u32 __iomem *reg = &ehci->regs->port_status [port]; @@ -300,16 +302,32 @@ } if (t1 != t2) { + /* + * On some controllers, Wake-On-Disconnect will + * generate false wakeup signals until the bus + * switches over to full-speed idle. For their + * sake, add a delay if we need one. + */ + if ((t2 & PORT_WKDISC_E) && + ehci_port_speed(ehci, t2) == + USB_PORT_STAT_HIGH_SPEED) + fs_idle_delay = true; ehci_writel(ehci, t2, reg); changed = 1; } } + spin_unlock_irq(&ehci->lock); + + if ((changed && ehci->has_tdi_phy_lpm) || fs_idle_delay) { + /* + * Wait for HCD to enter low-power mode or for the bus + * to switch to full-speed idle. + */ + usleep_range(5000, 5500); + } if (changed && ehci->has_tdi_phy_lpm) { - spin_unlock_irq(&ehci->lock); - msleep(5); /* 5 ms for HCD to enter low-power mode */ spin_lock_irq(&ehci->lock); - port = HCS_N_PORTS(ehci->hcs_params); while (port--) { u32 __iomem *hostpc_reg = &ehci->regs->hostpc[port]; @@ -322,8 +340,8 @@ port, (t3 & HOSTPC_PHCD) ? "succeeded" : "failed"); } + spin_unlock_irq(&ehci->lock); } - spin_unlock_irq(&ehci->lock); /* Apparently some devices need a >= 1-uframe delay here */ if (ehci->bus_suspended) @@ -464,10 +482,13 @@ ehci_writel(ehci, temp, &ehci->regs->port_status [i]); } - /* msleep for 20ms only if code is trying to resume port */ + /* + * msleep for USB_RESUME_TIMEOUT ms only if code is trying to resume + * port + */ if (resume_needed) { spin_unlock_irq(&ehci->lock); - msleep(20); + msleep(USB_RESUME_TIMEOUT); spin_lock_irq(&ehci->lock); if (ehci->shutdown) goto shutdown; @@ -935,7 +956,7 @@ temp &= ~PORT_WAKE_BITS; ehci_writel(ehci, temp | PORT_RESUME, status_reg); ehci->reset_done[wIndex] = jiffies - + msecs_to_jiffies(20); + + msecs_to_jiffies(USB_RESUME_TIMEOUT); set_bit(wIndex, &ehci->resuming_ports); usb_hcd_start_port_resume(&hcd->self, wIndex); break; @@ -1208,6 +1229,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; @@ -1223,7 +1251,7 @@ if (selector == EHSET_TEST_SINGLE_STEP_SET_FEATURE) { spin_unlock_irqrestore(&ehci->lock, flags); retval = ehset_single_step_set_feature(hcd, - wIndex); + wIndex + 1); spin_lock_irqsave(&ehci->lock, flags); break; } --- linux-3.13.0.orig/drivers/usb/host/ehci-pci.c +++ linux-3.13.0/drivers/usb/host/ehci-pci.c @@ -35,6 +35,21 @@ #define PCI_DEVICE_ID_INTEL_CE4100_USB 0x2e70 /*-------------------------------------------------------------------------*/ +#define PCI_DEVICE_ID_INTEL_QUARK_X1000_SOC 0x0939 +static inline bool is_intel_quark_x1000(struct pci_dev *pdev) +{ + return pdev->vendor == PCI_VENDOR_ID_INTEL && + pdev->device == PCI_DEVICE_ID_INTEL_QUARK_X1000_SOC; +} + +/* + * 0x84 is the offset of in/out threshold register, + * and it is the same offset as the register of 'hostpc'. + */ +#define intel_quark_x1000_insnreg01 hostpc + +/* Maximum usable threshold value is 0x7f dwords for both IN and OUT */ +#define INTEL_QUARK_X1000_EHCI_MAX_THRESHOLD 0x007f007f /* called after powerup, by probe or system-pm "wakeup" */ static int ehci_pci_reinit(struct ehci_hcd *ehci, struct pci_dev *pdev) @@ -50,6 +65,16 @@ if (!retval) ehci_dbg(ehci, "MWI active\n"); + /* Reset the threshold limit */ + if (is_intel_quark_x1000(pdev)) { + /* + * For the Intel QUARK X1000, raise the I/O threshold to the + * maximum usable value in order to improve performance. + */ + ehci_writel(ehci, INTEL_QUARK_X1000_EHCI_MAX_THRESHOLD, + ehci->regs->intel_quark_x1000_insnreg01); + } + return 0; } --- linux-3.13.0.orig/drivers/usb/host/ehci-sched.c +++ linux-3.13.0/drivers/usb/host/ehci-sched.c @@ -1581,6 +1581,10 @@ else next = (now + 2 + 7) & ~0x07; /* full frame cache */ + /* If needed, initialize last_iso_frame so that this URB will be seen */ + if (ehci->isoc_count == 0) + ehci->last_iso_frame = now >> 3; + /* * Use ehci->last_iso_frame as the base. There can't be any * TDs scheduled for earlier than that. @@ -1671,10 +1675,6 @@ urb->start_frame = start & (mod - 1); if (!stream->highspeed) urb->start_frame >>= 3; - - /* Make sure scan_isoc() sees these */ - if (ehci->isoc_count == 0) - ehci->last_iso_frame = now >> 3; return status; fail: --- linux-3.13.0.orig/drivers/usb/host/ehci-sysfs.c +++ linux-3.13.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-3.13.0.orig/drivers/usb/host/ehci.h +++ linux-3.13.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; @@ -225,6 +226,7 @@ unsigned has_synopsys_hc_bug:1; /* Synopsys HC */ unsigned frame_index_bug:1; /* MosChip (AKA NetMos) */ unsigned need_oc_pp_cycle:1; /* MPC834X port power */ + unsigned imx28_write_fix:1; /* For Freescale i.MX28 */ /* required for usb32 quirk */ #define OHCI_CTRL_HCFS (3 << 6) @@ -685,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 @@ -728,6 +741,18 @@ #endif } +#ifdef CONFIG_SOC_IMX28 +static inline void imx28_ehci_writel(const unsigned int val, + volatile __u32 __iomem *addr) +{ + __asm__ ("swp %0, %0, [%1]" : : "r"(val), "r"(addr)); +} +#else +static inline void imx28_ehci_writel(const unsigned int val, + volatile __u32 __iomem *addr) +{ +} +#endif static inline void ehci_writel(const struct ehci_hcd *ehci, const unsigned int val, __u32 __iomem *regs) { @@ -736,7 +761,10 @@ writel_be(val, regs) : writel(val, regs); #else - writel(val, regs); + if (ehci->imx28_write_fix) + imx28_ehci_writel(val, regs); + else + writel(val, regs); #endif } --- linux-3.13.0.orig/drivers/usb/host/fotg210-hcd.c +++ linux-3.13.0/drivers/usb/host/fotg210-hcd.c @@ -1651,7 +1651,7 @@ /* resume signaling for 20 msec */ fotg210_writel(fotg210, temp | PORT_RESUME, status_reg); fotg210->reset_done[wIndex] = jiffies - + msecs_to_jiffies(20); + + msecs_to_jiffies(USB_RESUME_TIMEOUT); break; case USB_PORT_FEAT_C_SUSPEND: clear_bit(wIndex, &fotg210->port_c_suspend); --- linux-3.13.0.orig/drivers/usb/host/fsl-mph-dr-of.c +++ linux-3.13.0/drivers/usb/host/fsl-mph-dr-of.c @@ -206,6 +206,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-3.13.0.orig/drivers/usb/host/fusbh200-hcd.c +++ linux-3.13.0/drivers/usb/host/fusbh200-hcd.c @@ -1610,10 +1610,9 @@ if ((temp & PORT_PE) == 0) goto error; - /* resume signaling for 20 msec */ fusbh200_writel(fusbh200, temp | PORT_RESUME, status_reg); fusbh200->reset_done[wIndex] = jiffies - + msecs_to_jiffies(20); + + msecs_to_jiffies(USB_RESUME_TIMEOUT); break; case USB_PORT_FEAT_C_SUSPEND: clear_bit(wIndex, &fusbh200->port_c_suspend); --- linux-3.13.0.orig/drivers/usb/host/isp116x-hcd.c +++ linux-3.13.0/drivers/usb/host/isp116x-hcd.c @@ -1488,7 +1488,7 @@ spin_unlock_irq(&isp116x->lock); hcd->state = HC_STATE_RESUMING; - msleep(20); + msleep(USB_RESUME_TIMEOUT); /* Go operational */ spin_lock_irq(&isp116x->lock); --- linux-3.13.0.orig/drivers/usb/host/isp1760-hcd.c +++ linux-3.13.0/drivers/usb/host/isp1760-hcd.c @@ -1895,7 +1895,7 @@ reg_write32(hcd->regs, HC_PORTSC1, temp | PORT_RESUME); priv->reset_done = jiffies + - msecs_to_jiffies(20); + msecs_to_jiffies(USB_RESUME_TIMEOUT); } break; case USB_PORT_FEAT_C_SUSPEND: @@ -2247,6 +2247,9 @@ hcd->rsrc_start = res_start; hcd->rsrc_len = res_len; + /* This driver doesn't support wakeup requests */ + hcd->cant_recv_wakeups = 1; + ret = usb_add_hcd(hcd, irq, irqflags); if (ret) goto err_unmap; --- linux-3.13.0.orig/drivers/usb/host/ohci-dbg.c +++ linux-3.13.0/drivers/usb/host/ohci-dbg.c @@ -289,7 +289,7 @@ } } -static void ohci_dump (struct ohci_hcd *controller, int verbose) +static void ohci_dump(struct ohci_hcd *controller) { ohci_dbg (controller, "OHCI controller state\n"); @@ -408,7 +408,7 @@ } #else -static inline void ohci_dump (struct ohci_hcd *controller, int verbose) {} +static inline void ohci_dump (struct ohci_hcd *controller) {} #undef OHCI_VERBOSE_DEBUG @@ -531,15 +531,16 @@ static ssize_t fill_async_buffer(struct debug_buffer *buf) { struct ohci_hcd *ohci; - size_t temp; + size_t temp, size; unsigned long flags; ohci = buf->ohci; + size = PAGE_SIZE; /* display control and bulk lists together, for simplicity */ spin_lock_irqsave (&ohci->lock, flags); - temp = show_list(ohci, buf->page, buf->count, ohci->ed_controltail); - temp += show_list(ohci, buf->page + temp, buf->count - temp, + temp = show_list(ohci, buf->page, size, ohci->ed_controltail); + temp += show_list(ohci, buf->page + temp, size - temp, ohci->ed_bulktail); spin_unlock_irqrestore (&ohci->lock, flags); --- linux-3.13.0.orig/drivers/usb/host/ohci-hcd.c +++ linux-3.13.0/drivers/usb/host/ohci-hcd.c @@ -78,8 +78,8 @@ #include "ohci.h" #include "pci-quirks.h" -static void ohci_dump (struct ohci_hcd *ohci, int verbose); -static void ohci_stop (struct usb_hcd *hcd); +static void ohci_dump(struct ohci_hcd *ohci); +static void ohci_stop(struct usb_hcd *hcd); #include "ohci-hub.c" #include "ohci-dbg.c" @@ -754,7 +754,7 @@ ohci->ed_to_check = NULL; } - ohci_dump (ohci, 1); + ohci_dump(ohci); return 0; } @@ -835,7 +835,7 @@ usb_hc_died(hcd); } - ohci_dump (ohci, 1); + ohci_dump(ohci); ohci_usb_reset (ohci); } @@ -935,7 +935,7 @@ { struct ohci_hcd *ohci = hcd_to_ohci (hcd); - ohci_dump (ohci, 1); + ohci_dump(ohci); if (quirk_nec(ohci)) flush_work(&ohci->nec_work); --- linux-3.13.0.orig/drivers/usb/host/ohci-hub.c +++ linux-3.13.0/drivers/usb/host/ohci-hub.c @@ -90,6 +90,24 @@ dl_done_list (ohci); finish_unlinks (ohci, ohci_frame_no(ohci)); + /* + * Some controllers don't handle "global" suspend properly if + * there are unsuspended ports. For these controllers, put all + * the enabled ports into suspend before suspending the root hub. + */ + if (ohci->flags & OHCI_QUIRK_GLOBAL_SUSPEND) { + __hc32 __iomem *portstat = ohci->regs->roothub.portstatus; + int i; + unsigned temp; + + for (i = 0; i < ohci->num_ports; (++i, ++portstat)) { + temp = ohci_readl(ohci, portstat); + if ((temp & (RH_PS_PES | RH_PS_PSS)) == + RH_PS_PES) + ohci_writel(ohci, RH_PS_PSS, portstat); + } + } + /* maybe resume can wake root hub */ if (ohci_to_hcd(ohci)->self.root_hub->do_remote_wakeup || autostop) { ohci->hc_control |= OHCI_CTRL_RWE; --- linux-3.13.0.orig/drivers/usb/host/ohci-pci.c +++ linux-3.13.0/drivers/usb/host/ohci-pci.c @@ -160,6 +160,7 @@ ohci_dbg(ohci, "enabled AMD prefetch quirk\n"); } + ohci->flags |= OHCI_QUIRK_GLOBAL_SUSPEND; return 0; } --- linux-3.13.0.orig/drivers/usb/host/ohci-q.c +++ linux-3.13.0/drivers/usb/host/ohci-q.c @@ -315,8 +315,7 @@ * - ED_OPER: when there's any request queued, the ED gets rescheduled * immediately. HC should be working on them. * - * - ED_IDLE: when there's no TD queue. there's no reason for the HC - * to care about this ED; safe to disable the endpoint. + * - ED_IDLE: when there's no TD queue or the HC isn't running. * * When finish_unlinks() runs later, after SOF interrupt, it will often * complete one or more URB unlinks before making that state change. @@ -959,12 +958,18 @@ } } + /* ED's now officially unlinked, hc doesn't see */ + if (quirk_zfmicro(ohci) && ed->type == PIPE_INTERRUPT) + ohci->eds_scheduled--; + ed->hwHeadP &= ~cpu_to_hc32(ohci, ED_H); + ed->hwNextED = 0; + wmb(); + ed->hwINFO &= ~cpu_to_hc32(ohci, ED_SKIP | ED_DEQUEUE); + /* reentrancy: if we drop the schedule lock, someone might * have modified this list. normally it's just prepending * entries (which we'd ignore), but paranoia won't hurt. */ - *last = ed->ed_next; - ed->ed_next = NULL; modified = 0; /* unlink urbs as requested, but rescan the list after @@ -1022,19 +1027,21 @@ if (completed && !list_empty (&ed->td_list)) goto rescan_this; - /* ED's now officially unlinked, hc doesn't see */ - ed->state = ED_IDLE; - if (quirk_zfmicro(ohci) && ed->type == PIPE_INTERRUPT) - ohci->eds_scheduled--; - ed->hwHeadP &= ~cpu_to_hc32(ohci, ED_H); - ed->hwNextED = 0; - wmb (); - ed->hwINFO &= ~cpu_to_hc32 (ohci, ED_SKIP | ED_DEQUEUE); - - /* but if there's work queued, reschedule */ - if (!list_empty (&ed->td_list)) { - if (ohci->rh_state == OHCI_RH_RUNNING) - ed_schedule (ohci, ed); + /* + * If no TDs are queued, take ED off the ed_rm_list. + * Otherwise, if the HC is running, reschedule. + * If not, leave it on the list for further dequeues. + */ + if (list_empty(&ed->td_list)) { + *last = ed->ed_next; + ed->ed_next = NULL; + ed->state = ED_IDLE; + } else if (ohci->rh_state == OHCI_RH_RUNNING) { + *last = ed->ed_next; + ed->ed_next = NULL; + ed_schedule(ohci, ed); + } else { + last = &ed->ed_next; } if (modified) --- linux-3.13.0.orig/drivers/usb/host/ohci.h +++ linux-3.13.0/drivers/usb/host/ohci.h @@ -405,6 +405,8 @@ #define OHCI_QUIRK_HUB_POWER 0x100 /* distrust firmware power/oc setup */ #define OHCI_QUIRK_AMD_PLL 0x200 /* AMD PLL quirk*/ #define OHCI_QUIRK_AMD_PREFETCH 0x400 /* pre-fetch for ISO transfer */ +#define OHCI_QUIRK_GLOBAL_SUSPEND 0x800 /* must suspend ports */ + // there are also chip quirks/bugs in init logic struct work_struct nec_work; /* Worker for NEC quirk */ --- linux-3.13.0.orig/drivers/usb/host/oxu210hp-hcd.c +++ linux-3.13.0/drivers/usb/host/oxu210hp-hcd.c @@ -2497,11 +2497,12 @@ || oxu->reset_done[i] != 0) continue; - /* start 20 msec resume signaling from this port, - * and make khubd collect PORT_STAT_C_SUSPEND to + /* start USB_RESUME_TIMEOUT resume signaling from this + * port, and make khubd collect PORT_STAT_C_SUSPEND to * stop that signaling. */ - oxu->reset_done[i] = jiffies + msecs_to_jiffies(20); + oxu->reset_done[i] = jiffies + + msecs_to_jiffies(USB_RESUME_TIMEOUT); oxu_dbg(oxu, "port %d remote wakeup\n", i + 1); mod_timer(&hcd->rh_timer, oxu->reset_done[i]); } --- linux-3.13.0.orig/drivers/usb/host/pci-quirks.c +++ linux-3.13.0/drivers/usb/host/pci-quirks.c @@ -572,7 +572,8 @@ { void __iomem *base; u32 control; - u32 fminterval; + u32 fminterval = 0; + bool no_fminterval = false; int cnt; if (!mmio_resource_enabled(pdev, 0)) @@ -582,6 +583,13 @@ if (base == NULL) return; + /* + * ULi M5237 OHCI controller locks the whole system when accessing + * the OHCI_FMINTERVAL offset. + */ + if (pdev->vendor == PCI_VENDOR_ID_AL && pdev->device == 0x5237) + no_fminterval = true; + control = readl(base + OHCI_CONTROL); /* On PA-RISC, PDC can leave IR set incorrectly; ignore it there. */ @@ -620,7 +628,9 @@ } /* software reset of the controller, preserving HcFmInterval */ - fminterval = readl(base + OHCI_FMINTERVAL); + if (!no_fminterval) + fminterval = readl(base + OHCI_FMINTERVAL); + writel(OHCI_HCR, base + OHCI_CMDSTATUS); /* reset requires max 10 us delay */ @@ -629,7 +639,9 @@ break; udelay(1); } - writel(fminterval, base + OHCI_FMINTERVAL); + + if (!no_fminterval) + writel(fminterval, base + OHCI_FMINTERVAL); /* Now the controller is safely in SUSPEND and nothing can wake it up */ iounmap(base); @@ -657,6 +669,14 @@ DMI_MATCH(DMI_BIOS_VERSION, "Lucid-"), }, }, + { + /* HASEE E200 */ + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "HASEE"), + DMI_MATCH(DMI_BOARD_NAME, "E210"), + DMI_MATCH(DMI_BIOS_VERSION, "6.00"), + }, + }, { } }; @@ -666,9 +686,14 @@ { int try_handoff = 1, tried_handoff = 0; - /* The Pegatron Lucid tablet sporadically waits for 98 seconds trying - * the handoff on its unused controller. Skip it. */ - if (pdev->vendor == 0x8086 && pdev->device == 0x283a) { + /* + * The Pegatron Lucid tablet sporadically waits for 98 seconds trying + * the handoff on its unused controller. Skip it. + * + * The HASEE E200 hangs when the semaphore is set (bugzilla #77021). + */ + if (pdev->vendor == 0x8086 && (pdev->device == 0x283a || + pdev->device == 0x27cc)) { if (dmi_check_system(ehci_dmi_nohandoff_table)) try_handoff = 0; } --- linux-3.13.0.orig/drivers/usb/host/r8a66597-hcd.c +++ linux-3.13.0/drivers/usb/host/r8a66597-hcd.c @@ -2301,7 +2301,7 @@ rh->port &= ~USB_PORT_STAT_SUSPEND; rh->port |= USB_PORT_STAT_C_SUSPEND << 16; r8a66597_mdfy(r8a66597, RESUME, RESUME | UACT, dvstctr_reg); - msleep(50); + msleep(USB_RESUME_TIMEOUT); r8a66597_mdfy(r8a66597, UACT, RESUME | UACT, dvstctr_reg); } --- linux-3.13.0.orig/drivers/usb/host/sl811-hcd.c +++ linux-3.13.0/drivers/usb/host/sl811-hcd.c @@ -1260,7 +1260,7 @@ sl811_write(sl811, SL11H_CTLREG1, sl811->ctrl1); mod_timer(&sl811->timer, jiffies - + msecs_to_jiffies(20)); + + msecs_to_jiffies(USB_RESUME_TIMEOUT)); break; case USB_PORT_FEAT_POWER: port_power(sl811, 0); --- linux-3.13.0.orig/drivers/usb/host/uhci-hub.c +++ linux-3.13.0/drivers/usb/host/uhci-hub.c @@ -165,7 +165,7 @@ /* Port received a wakeup request */ set_bit(port, &uhci->resuming_ports); uhci->ports_timeout = jiffies + - msecs_to_jiffies(25); + msecs_to_jiffies(USB_RESUME_TIMEOUT); usb_hcd_start_port_resume( &uhci_to_hcd(uhci)->self, port); @@ -337,7 +337,8 @@ uhci_finish_suspend(uhci, port, port_addr); /* USB v2.0 7.1.7.5 */ - uhci->ports_timeout = jiffies + msecs_to_jiffies(50); + uhci->ports_timeout = jiffies + + msecs_to_jiffies(USB_RESUME_TIMEOUT); break; case USB_PORT_FEAT_POWER: /* UHCI has no power switching */ --- linux-3.13.0.orig/drivers/usb/host/whci/qset.c +++ linux-3.13.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-3.13.0.orig/drivers/usb/host/xhci-hub.c +++ linux-3.13.0/drivers/usb/host/xhci-hub.c @@ -383,6 +383,10 @@ status = PORT_PLC; port_change_bit = "link state"; break; + case USB_PORT_FEAT_C_PORT_CONFIG_ERROR: + status = PORT_CEC; + port_change_bit = "config error"; + break; default: /* Should never happen */ return; @@ -470,15 +474,19 @@ } /* Updates Link Status for super Speed port */ -static void xhci_hub_report_usb3_link_state(u32 *status, u32 status_reg) +static void xhci_hub_report_usb3_link_state(struct xhci_hcd *xhci, + u32 *status, u32 status_reg) { u32 pls = status_reg & PORT_PLS_MASK; /* resume state is a xHCI internal state. - * Do not report it to usb core. + * Do not report it to usb core, instead, pretend to be U3, + * thus usb core knows it's not ready for transfer */ - if (pls == XDEV_RESUME) + if (pls == XDEV_RESUME) { + *status |= USB_SS_PORT_LS_U3; return; + } /* When the CAS bit is set then warm reset * should be performed on port @@ -509,7 +517,8 @@ * in which sometimes the port enters compliance mode * caused by a delay on the host-device negotiation. */ - if (pls == USB_SS_PORT_LS_COMP_MOD) + if ((xhci->quirks & XHCI_COMP_MODE_QUIRK) && + (pls == USB_SS_PORT_LS_COMP_MOD)) pls |= USB_PORT_STAT_CONNECTION; } @@ -578,10 +587,19 @@ status |= USB_PORT_STAT_C_RESET << 16; /* USB3.0 only */ if (hcd->speed == HCD_USB3) { - if ((raw_port_status & PORT_PLC)) + /* Port link change with port in resume state should not be + * reported to usbcore, as this is an internal state to be + * handled by xhci driver. Reporting PLC to usbcore may + * cause usbcore clearing PLC first and port change event + * irq won't be generated. + */ + if ((raw_port_status & PORT_PLC) && + (raw_port_status & PORT_PLS_MASK) != XDEV_RESUME) status |= USB_PORT_STAT_C_LINK_STATE << 16; if ((raw_port_status & PORT_WRC)) status |= USB_PORT_STAT_C_BH_RESET << 16; + if ((raw_port_status & PORT_CEC)) + status |= USB_PORT_STAT_C_CONFIG_ERROR << 16; } if (hcd->speed != HCD_USB3) { @@ -594,8 +612,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", @@ -637,19 +677,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; @@ -669,7 +725,7 @@ } /* Update Port Link State */ if (hcd->speed == HCD_USB3) { - xhci_hub_report_usb3_link_state(&status, raw_port_status); + xhci_hub_report_usb3_link_state(xhci, &status, raw_port_status); /* * Verify if all USB3 Ports Have entered U0 already. * Delete Compliance Mode Timer if so. @@ -974,6 +1030,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); @@ -981,6 +1038,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; @@ -1000,6 +1058,7 @@ case USB_PORT_FEAT_C_OVER_CURRENT: case USB_PORT_FEAT_C_ENABLE: case USB_PORT_FEAT_C_PORT_LINK_STATE: + case USB_PORT_FEAT_C_PORT_CONFIG_ERROR: xhci_clear_port_change_bit(xhci, wValue, wIndex, port_array[wIndex], temp); break; @@ -1065,7 +1124,7 @@ */ status = bus_state->resuming_ports; - mask = PORT_CSC | PORT_PEC | PORT_OCC | PORT_PLC | PORT_WRC; + mask = PORT_CSC | PORT_PEC | PORT_OCC | PORT_PLC | PORT_WRC | PORT_CEC; spin_lock_irqsave(&xhci->lock, flags); /* For each port, did anything change? If so, set that bit in buf. */ @@ -1109,10 +1168,10 @@ spin_lock_irqsave(&xhci->lock, flags); if (hcd->self.root_hub->do_remote_wakeup) { - if (bus_state->resuming_ports) { + if (bus_state->resuming_ports || /* USB2 */ + bus_state->port_remote_wakeup) { /* USB3 */ spin_unlock_irqrestore(&xhci->lock, flags); - xhci_dbg(xhci, "suspend failed because " - "a port is resuming\n"); + xhci_dbg(xhci, "suspend failed because a port is resuming\n"); return -EBUSY; } } --- linux-3.13.0.orig/drivers/usb/host/xhci-mem.c +++ linux-3.13.0/drivers/usb/host/xhci-mem.c @@ -1331,10 +1331,10 @@ /* Attempt to use the ring cache */ if (virt_dev->num_rings_cached == 0) return -ENOMEM; + virt_dev->num_rings_cached--; virt_dev->eps[ep_index].new_ring = virt_dev->ring_cache[virt_dev->num_rings_cached]; virt_dev->ring_cache[virt_dev->num_rings_cached] = NULL; - virt_dev->num_rings_cached--; xhci_reinit_cached_ring(xhci, virt_dev->eps[ep_index].new_ring, 1, type); } @@ -1402,10 +1402,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 |= @@ -1711,6 +1711,7 @@ if (xhci->lpm_command) xhci_free_command(xhci, xhci->lpm_command); + xhci->lpm_command = NULL; xhci->cmd_ring_reserved_trbs = 0; if (xhci->cmd_ring) xhci_ring_free(xhci, xhci->cmd_ring); @@ -1722,6 +1723,16 @@ kfree(cur_cd); } + num_ports = HCS_MAX_PORTS(xhci->hcs_params1); + for (i = 0; i < num_ports && xhci->rh_bw; i++) { + struct xhci_interval_bw_table *bwt = &xhci->rh_bw[i].bw_table; + for (j = 0; j < XHCI_MAX_INTERVAL; j++) { + struct list_head *ep = &bwt->interval_bw[j].endpoints; + while (!list_empty(ep)) + list_del_init(ep->next); + } + } + for (i = 1; i < MAX_HC_SLOTS; ++i) xhci_free_virt_device(xhci, i); @@ -1757,16 +1768,6 @@ if (!xhci->rh_bw) goto no_bw; - num_ports = HCS_MAX_PORTS(xhci->hcs_params1); - for (i = 0; i < num_ports; i++) { - struct xhci_interval_bw_table *bwt = &xhci->rh_bw[i].bw_table; - for (j = 0; j < XHCI_MAX_INTERVAL; j++) { - struct list_head *ep = &bwt->interval_bw[j].endpoints; - while (!list_empty(ep)) - list_del_init(ep->next); - } - } - for (i = 0; i < num_ports; i++) { struct xhci_tt_bw_info *tt, *n; list_for_each_entry_safe(tt, n, &xhci->rh_bw[i].tts, tt_list) { --- linux-3.13.0.orig/drivers/usb/host/xhci-pci.c +++ linux-3.13.0/drivers/usb/host/xhci-pci.c @@ -37,6 +37,10 @@ #define PCI_DEVICE_ID_INTEL_LYNXPOINT_XHCI 0x8c31 #define PCI_DEVICE_ID_INTEL_LYNXPOINT_LP_XHCI 0x9c31 +#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"; @@ -101,9 +105,14 @@ /* AMD PLL quirk */ if (pdev->vendor == PCI_VENDOR_ID_AMD && usb_amd_find_chipset_info()) xhci->quirks |= XHCI_AMD_PLL_FIX; + + if (pdev->vendor == PCI_VENDOR_ID_AMD) + xhci->quirks |= XHCI_TRUST_TX_LENGTH; + if (pdev->vendor == PCI_VENDOR_ID_INTEL) { xhci->quirks |= XHCI_LPM_SUPPORT; xhci->quirks |= XHCI_INTEL_HOST; + xhci->quirks |= XHCI_AVOID_BEI; } if (pdev->vendor == PCI_VENDOR_ID_INTEL && pdev->device == PCI_DEVICE_ID_INTEL_PANTHERPOINT_XHCI) { @@ -119,21 +128,18 @@ * PPT chipsets. */ xhci->quirks |= XHCI_SPURIOUS_REBOOT; - xhci->quirks |= XHCI_AVOID_BEI; } if (pdev->vendor == PCI_VENDOR_ID_INTEL && - (pdev->device == PCI_DEVICE_ID_INTEL_LYNXPOINT_XHCI || - pdev->device == PCI_DEVICE_ID_INTEL_LYNXPOINT_LP_XHCI)) { - /* Workaround for occasional spurious wakeups from S5 (or - * any other sleep) on Haswell machines with LPT and LPT-LP - * with the new Intel BIOS - */ - /* Limit the quirk to only known vendors, as this triggers - * yet another BIOS bug on some other machines - * https://bugzilla.kernel.org/show_bug.cgi?id=66171 - */ - if (pdev->subsystem_vendor == PCI_VENDOR_ID_HP) - xhci->quirks |= XHCI_SPURIOUS_WAKEUP; + 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_BROXTON_M_XHCI)) { + xhci->quirks |= XHCI_PME_STUCK_QUIRK; } if (pdev->vendor == PCI_VENDOR_ID_ETRON && pdev->device == PCI_DEVICE_ID_ASROCK_P67) { @@ -142,10 +148,30 @@ "QUIRK: Resetting on resume"); xhci->quirks |= XHCI_TRUST_TX_LENGTH; } + if (pdev->vendor == PCI_VENDOR_ID_RENESAS && + pdev->device == 0x0015 && + pdev->subsystem_vendor == PCI_VENDOR_ID_SAMSUNG && + pdev->subsystem_device == 0xc0cd) + xhci->quirks |= XHCI_RESET_ON_RESUME; if (pdev->vendor == PCI_VENDOR_ID_VIA) xhci->quirks |= XHCI_RESET_ON_RESUME; } +/* + * 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 xhci_hcd *xhci) +{ + u32 val; + void __iomem *reg; + + reg = (void __iomem *) xhci->cap_regs + 0x80a4; + val = readl(reg); + writel(val | BIT(28), reg); + readl(reg); +} + /* called during probe() after chip reset completes */ static int xhci_pci_setup(struct usb_hcd *hcd) { @@ -185,6 +211,10 @@ struct usb_hcd *hcd; driver = (struct hc_driver *)id->driver_data; + + /* Prevent runtime suspending between USB-2 and USB-3 initialization */ + pm_runtime_get_noresume(&dev->dev); + /* Register the USB 2.0 roothub. * FIXME: USB core must know to register the USB 2.0 roothub first. * This is sort of silly, because we could just set the HCD driver flags @@ -194,7 +224,7 @@ retval = usb_hcd_pci_probe(dev, id); if (retval) - return retval; + goto put_runtime_pm; /* USB 2.0 roothub is stored in the PCI device now. */ hcd = dev_get_drvdata(&dev->dev); @@ -223,12 +253,17 @@ if (xhci->quirks & XHCI_LPM_SUPPORT) hcd_to_bus(xhci->shared_hcd)->root_hub->lpm_capable = 1; + /* USB-2 and USB-3 roothubs initialized, allow runtime pm suspend */ + pm_runtime_put_noidle(&dev->dev); + return 0; put_usb3_hcd: usb_put_hcd(xhci->shared_hcd); dealloc_usb2_hcd: usb_hcd_pci_remove(dev); +put_runtime_pm: + pm_runtime_put_noidle(&dev->dev); return retval; } @@ -263,7 +298,10 @@ if (xhci_compliance_mode_recovery_timer_quirk_check()) pdev->no_d3cold = true; - return xhci_suspend(xhci); + if (xhci->quirks & XHCI_PME_STUCK_QUIRK) + xhci_pme_quirk(xhci); + + return xhci_suspend(xhci, do_wakeup); } static int xhci_pci_resume(struct usb_hcd *hcd, bool hibernated) @@ -293,6 +331,9 @@ if (pdev->vendor == PCI_VENDOR_ID_INTEL) usb_enable_intel_xhci_ports(pdev); + if (xhci->quirks & XHCI_PME_STUCK_QUIRK) + xhci_pme_quirk(xhci); + retval = xhci_resume(xhci, hibernated); return retval; } --- linux-3.13.0.orig/drivers/usb/host/xhci-plat.c +++ linux-3.13.0/drivers/usb/host/xhci-plat.c @@ -16,6 +16,7 @@ #include #include #include +#include #include "xhci.h" @@ -106,14 +107,20 @@ if (!res) return -ENODEV; - /* Initialize dma_mask and coherent_dma_mask to 32-bits */ - ret = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32)); - if (ret) - return ret; - if (!pdev->dev.dma_mask) - pdev->dev.dma_mask = &pdev->dev.coherent_dma_mask; + /* Try to set 64-bit DMA first */ + if (WARN_ON(!pdev->dev.dma_mask)) + /* Platform did not initialize dma_mask */ + ret = dma_coerce_mask_and_coherent(&pdev->dev, + DMA_BIT_MASK(64)); else - dma_set_mask(&pdev->dev, DMA_BIT_MASK(32)); + ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64)); + + /* If seting 64-bit DMA mask fails, fall back to 32-bit DMA mask */ + if (ret) { + ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32)); + if (ret) + return ret; + } hcd = usb_create_hcd(driver, &pdev->dev, dev_name(&pdev->dev)); if (!hcd) @@ -203,7 +210,15 @@ struct usb_hcd *hcd = dev_get_drvdata(dev); struct xhci_hcd *xhci = hcd_to_xhci(hcd); - return xhci_suspend(xhci); + /* + * xhci_suspend() needs `do_wakeup` to know whether host is allowed + * to do wakeup during suspend. Since xhci_plat_suspend is currently + * only designed for system suspend, device_may_wakeup() is enough + * to dertermine whether host is allowed to do wakeup. Need to + * reconsider this when xhci_plat_suspend enlarges its scope, e.g., + * also applies to runtime suspend. + */ + return xhci_suspend(xhci, device_may_wakeup(dev)); } static int xhci_plat_resume(struct device *dev) @@ -230,6 +245,13 @@ MODULE_DEVICE_TABLE(of, usb_xhci_of_match); #endif +static const struct acpi_device_id usb_xhci_acpi_match[] = { + /* XHCI-compliant USB Controller */ + { "PNP0D10", }, + { } +}; +MODULE_DEVICE_TABLE(acpi, usb_xhci_acpi_match); + static struct platform_driver usb_xhci_driver = { .probe = xhci_plat_probe, .remove = xhci_plat_remove, @@ -237,6 +259,7 @@ .name = "xhci-hcd", .pm = DEV_PM_OPS, .of_match_table = of_match_ptr(usb_xhci_of_match), + .acpi_match_table = ACPI_PTR(usb_xhci_acpi_match), }, }; MODULE_ALIAS("platform:xhci-hcd"); --- linux-3.13.0.orig/drivers/usb/host/xhci-ring.c +++ linux-3.13.0/drivers/usb/host/xhci-ring.c @@ -86,7 +86,7 @@ return 0; /* offset in TRBs */ segment_offset = trb - seg->trbs; - if (segment_offset > TRBS_PER_SEGMENT) + if (segment_offset >= TRBS_PER_SEGMENT) return 0; return seg->dma + (segment_offset * sizeof(*trb)); } @@ -332,6 +332,15 @@ ret = xhci_handshake(xhci, &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, &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; @@ -552,10 +561,14 @@ struct xhci_dequeue_state *state) { struct xhci_virt_device *dev = xhci->devs[slot_id]; + struct xhci_virt_ep *ep = &dev->eps[ep_index]; struct xhci_ring *ep_ring; - struct xhci_generic_trb *trb; - struct xhci_ep_ctx *ep_ctx; + struct xhci_segment *new_seg; + union xhci_trb *new_deq; dma_addr_t addr; + u64 hw_dequeue; + bool cycle_found = false; + bool td_last_trb_found = false; ep_ring = xhci_triad_to_transfer_ring(xhci, slot_id, ep_index, stream_id); @@ -565,56 +578,65 @@ stream_id); return; } - state->new_cycle_state = 0; - xhci_dbg_trace(xhci, trace_xhci_dbg_cancel_urb, - "Finding segment containing stopped TRB."); - state->new_deq_seg = find_trb_seg(cur_td->start_seg, - dev->eps[ep_index].stopped_trb, - &state->new_cycle_state); - if (!state->new_deq_seg) { - WARN_ON(1); - return; - } /* Dig out the cycle state saved by the xHC during the stop ep cmd */ xhci_dbg_trace(xhci, trace_xhci_dbg_cancel_urb, "Finding endpoint context"); - ep_ctx = xhci_get_ep_ctx(xhci, dev->out_ctx, ep_index); - state->new_cycle_state = 0x1 & le64_to_cpu(ep_ctx->deq); - - state->new_deq_ptr = cur_td->last_trb; - xhci_dbg_trace(xhci, trace_xhci_dbg_cancel_urb, - "Finding segment containing last TRB in TD."); - state->new_deq_seg = find_trb_seg(state->new_deq_seg, - state->new_deq_ptr, - &state->new_cycle_state); - if (!state->new_deq_seg) { - WARN_ON(1); - return; + /* 4.6.9 the css flag is written to the stream context for streams */ + if (ep->ep_state & EP_HAS_STREAMS) { + struct xhci_stream_ctx *ctx = + &ep->stream_info->stream_ctx_array[stream_id]; + hw_dequeue = le64_to_cpu(ctx->stream_ring); + } else { + struct xhci_ep_ctx *ep_ctx + = xhci_get_ep_ctx(xhci, dev->out_ctx, ep_index); + hw_dequeue = le64_to_cpu(ep_ctx->deq); } - trb = &state->new_deq_ptr->generic; - if (TRB_TYPE_LINK_LE32(trb->field[3]) && - (trb->field[3] & cpu_to_le32(LINK_TOGGLE))) - state->new_cycle_state ^= 0x1; - next_trb(xhci, ep_ring, &state->new_deq_seg, &state->new_deq_ptr); + new_seg = ep_ring->deq_seg; + new_deq = ep_ring->dequeue; + state->new_cycle_state = hw_dequeue & 0x1; /* - * If there is only one segment in a ring, find_trb_seg()'s while loop - * will not run, and it will return before it has a chance to see if it - * needs to toggle the cycle bit. It can't tell if the stalled transfer - * ended just before the link TRB on a one-segment ring, or if the TD - * wrapped around the top of the ring, because it doesn't have the TD in - * question. Look for the one-segment case where stalled TRB's address - * is greater than the new dequeue pointer address. - */ - if (ep_ring->first_seg == ep_ring->first_seg->next && - state->new_deq_ptr < dev->eps[ep_index].stopped_trb) - state->new_cycle_state ^= 0x1; + * We want to find the pointer, segment and cycle state of the new trb + * (the one after current TD's last_trb). We know the cycle state at + * hw_dequeue, so walk the ring until both hw_dequeue and last_trb are + * found. + */ + do { + if (!cycle_found && xhci_trb_virt_to_dma(new_seg, new_deq) + == (dma_addr_t)(hw_dequeue & ~0xf)) { + cycle_found = true; + if (td_last_trb_found) + break; + } + if (new_deq == cur_td->last_trb) + td_last_trb_found = true; + + if (cycle_found && + TRB_TYPE_LINK_LE32(new_deq->generic.field[3]) && + new_deq->generic.field[3] & cpu_to_le32(LINK_TOGGLE)) + state->new_cycle_state ^= 0x1; + + next_trb(xhci, ep_ring, &new_seg, &new_deq); + + /* Search wrapped around, bail out */ + if (new_deq == ep->ring->dequeue) { + xhci_err(xhci, "Error: Failed finding new dequeue state\n"); + state->new_deq_seg = NULL; + state->new_deq_ptr = NULL; + return; + } + + } while (!cycle_found || !td_last_trb_found); + + state->new_deq_seg = new_seg; + state->new_deq_ptr = new_deq; + + /* Don't update the ring cycle state for the producer (us). */ xhci_dbg_trace(xhci, trace_xhci_dbg_cancel_urb, "Cycle state = 0x%x", state->new_cycle_state); - /* Don't update the ring cycle state for the producer (us). */ xhci_dbg_trace(xhci, trace_xhci_dbg_cancel_urb, "New dequeue segment = %p (virtual)", state->new_deq_seg); @@ -797,7 +819,6 @@ if (list_empty(&ep->cancelled_td_list)) { xhci_stop_watchdog_timer_in_irq(xhci, ep); ep->stopped_td = NULL; - ep->stopped_trb = NULL; ring_doorbell_for_active_rings(xhci, slot_id, ep_index); return; } @@ -865,11 +886,9 @@ ring_doorbell_for_active_rings(xhci, slot_id, ep_index); } - /* Clear stopped_td and stopped_trb if endpoint is not halted */ - if (!(ep->ep_state & EP_HALTED)) { + /* Clear stopped_td if endpoint is not halted */ + if (!(ep->ep_state & EP_HALTED)) ep->stopped_td = NULL; - ep->stopped_trb = NULL; - } /* * Drop the lock and complete the URBs in the cancelled TD list. @@ -1187,9 +1206,8 @@ false); xhci_ring_cmd_db(xhci); } else { - /* Clear our internal halted state and restart the ring(s) */ + /* Clear our internal halted state */ xhci->devs[slot_id]->eps[ep_index].ep_state &= ~EP_HALTED; - ring_doorbell_for_active_rings(xhci, slot_id, ep_index); } } @@ -1585,8 +1603,11 @@ xhci_handle_cmd_reset_ep(xhci, slot_id, cmd_trb, cmd_comp_code); break; case TRB_RESET_DEV: - WARN_ON(slot_id != TRB_TO_SLOT_ID( - le32_to_cpu(cmd_trb->generic.field[3]))); + /* SLOT_ID field in reset device cmd completion event TRB is 0. + * Use the SLOT_ID from the command TRB instead (xhci 4.6.11) + */ + slot_id = TRB_TO_SLOT_ID( + le32_to_cpu(cmd_trb->generic.field[3])); xhci_handle_cmd_reset_dev(xhci, slot_id, event); break; case TRB_NEC_GET_FW: @@ -1745,6 +1766,9 @@ usb_hcd_resume_root_hub(hcd); } + if (hcd->speed == HCD_USB3 && (temp & PORT_PLS_MASK) == XDEV_INACTIVE) + bus_state->port_remote_wakeup &= ~(1 << faked_port_index); + if ((temp & PORT_PLC) && (temp & PORT_PLS_MASK) == XDEV_RESUME) { xhci_dbg(xhci, "port resume event for port %d\n", port_id); @@ -1770,10 +1794,11 @@ */ 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(20); + msecs_to_jiffies(USB_RESUME_TIMEOUT); set_bit(faked_port_index, &bus_state->resuming_ports); mod_timer(&hcd->rh_timer, bus_state->resume_done[faked_port_index]); @@ -1914,14 +1939,12 @@ struct xhci_virt_ep *ep = &xhci->devs[slot_id]->eps[ep_index]; ep->ep_state |= EP_HALTED; ep->stopped_td = td; - ep->stopped_trb = event_trb; ep->stopped_stream = stream_id; xhci_queue_reset_ep(xhci, slot_id, ep_index); xhci_cleanup_stalled_ring(xhci, td->urb->dev, ep_index); ep->stopped_td = NULL; - ep->stopped_trb = NULL; ep->stopped_stream = 0; xhci_ring_cmd_db(xhci); @@ -2003,26 +2026,15 @@ * the ring dequeue pointer or take this TD off any lists yet. */ ep->stopped_td = td; - ep->stopped_trb = event_trb; return 0; } else { - if (trb_comp_code == COMP_STALL) { - /* The transfer is completed from the driver's - * perspective, but we need to issue a set dequeue - * command for this stalled endpoint to move the dequeue - * pointer past the TD. We can't do that here because - * the halt condition must be cleared first. Let the - * USB class driver clear the stall later. - */ - ep->stopped_td = td; - ep->stopped_trb = event_trb; - ep->stopped_stream = ep_ring->stream_id; - } else if (xhci_requires_manual_halt_cleanup(xhci, - ep_ctx, trb_comp_code)) { - /* Other types of errors halt the endpoint, but the - * class driver doesn't call usb_reset_endpoint() unless - * the error is -EPIPE. Clear the halted status in the - * xHCI hardware manually. + if (trb_comp_code == COMP_STALL || + xhci_requires_manual_halt_cleanup(xhci, ep_ctx, + trb_comp_code)) { + /* Issue a reset endpoint command to clear the host side + * halt, followed by a set dequeue command to move the + * dequeue pointer past the TD. + * The class driver clears the device side halt later. */ xhci_cleanup_halted_endpoint(xhci, slot_id, ep_index, ep_ring->stream_id, @@ -2142,9 +2154,7 @@ else td->urb->actual_length = 0; - xhci_cleanup_halted_endpoint(xhci, - slot_id, ep_index, 0, td, event_trb); - return finish_td(xhci, td, event_trb, event, ep, status, true); + return finish_td(xhci, td, event_trb, event, ep, status, false); } /* * Did we transfer any data, despite the errors that might have @@ -2153,7 +2163,7 @@ if (event_trb != ep_ring->dequeue) { /* The event was for the status stage */ if (event_trb == td->last_trb) { - if (td->urb->actual_length != 0) { + if (td->urb_length_set) { /* Don't overwrite a previously set error code */ if ((*status == -EINPROGRESS || *status == 0) && @@ -2167,7 +2177,13 @@ td->urb->transfer_buffer_length; } } else { - /* Maybe the event was for the data stage? */ + /* + * Maybe the event was for the data stage? If so, update + * already the actual_length of the URB and flag it as + * set, so that it is not overwritten in the event for + * the last TRB. + */ + td->urb_length_set = true; td->urb->actual_length = td->urb->transfer_buffer_length - EVENT_TRB_LEN(le32_to_cpu(event->transfer_len)); @@ -2227,8 +2243,13 @@ break; case COMP_DEV_ERR: case COMP_STALL: + frame->status = -EPROTO; + skip_td = true; + break; case COMP_TX_ERR: frame->status = -EPROTO; + if (event_trb != td->last_trb) + return 0; skip_td = true; break; case COMP_STOP: @@ -2423,6 +2444,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]; @@ -2556,6 +2578,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; @@ -2620,7 +2646,8 @@ * last TRB of the previous TD. The command completion handle * will take care the rest. */ - if (!event_seg && trb_comp_code == COMP_STOP_INVAL) { + if (!event_seg && (trb_comp_code == COMP_STOP || + trb_comp_code == COMP_STOP_INVAL)) { ret = 0; goto cleanup; } @@ -2686,28 +2713,24 @@ 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; urb_priv = urb->hcpriv; - /* Leave the TD around for the reset endpoint function - * to use(but only if it's not a control endpoint, - * since we already queued the Set TR dequeue pointer - * command for stalled control endpoints). - */ - if (usb_endpoint_xfer_control(&urb->ep->desc) || - (trb_comp_code != COMP_STALL && - trb_comp_code != COMP_BABBLE)) - xhci_urb_free_priv(xhci, urb_priv); - else - kfree(urb_priv); + + xhci_urb_free_priv(xhci, urb_priv); usb_hcd_unlink_urb_from_ep(bus_to_hcd(urb->dev->bus), urb); if ((urb->actual_length != urb->transfer_buffer_length && @@ -2736,7 +2759,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; } @@ -2844,7 +2867,7 @@ xhci_halt(xhci); hw_died: spin_unlock(&xhci->lock); - return -ESHUTDOWN; + return IRQ_HANDLED; } /* @@ -2973,58 +2996,8 @@ } while (1) { - if (room_on_ring(xhci, ep_ring, num_trbs)) { - union xhci_trb *trb = ep_ring->enqueue; - unsigned int usable = ep_ring->enq_seg->trbs + - TRBS_PER_SEGMENT - 1 - trb; - u32 nop_cmd; - - /* - * Section 4.11.7.1 TD Fragments states that a link - * TRB must only occur at the boundary between - * data bursts (eg 512 bytes for 480M). - * While it is possible to split a large fragment - * we don't know the size yet. - * Simplest solution is to fill the trb before the - * LINK with nop commands. - */ - if (num_trbs == 1 || num_trbs <= usable || usable == 0) - break; - - if (ep_ring->type != TYPE_BULK) - /* - * While isoc transfers might have a buffer that - * crosses a 64k boundary it is unlikely. - * Since we can't add NOPs without generating - * gaps in the traffic just hope it never - * happens at the end of the ring. - * This could be fixed by writing a LINK TRB - * instead of the first NOP - however the - * TRB_TYPE_LINK_LE32() calls would all need - * changing to check the ring length. - */ - break; - - if (num_trbs >= TRBS_PER_SEGMENT) { - xhci_err(xhci, "Too many fragments %d, max %d\n", - num_trbs, TRBS_PER_SEGMENT - 1); - return -ENOMEM; - } - - nop_cmd = cpu_to_le32(TRB_TYPE(TRB_TR_NOOP) | - ep_ring->cycle_state); - ep_ring->num_trbs_free -= usable; - do { - trb->generic.field[0] = 0; - trb->generic.field[1] = 0; - trb->generic.field[2] = 0; - trb->generic.field[3] = nop_cmd; - trb++; - } while (--usable); - ep_ring->enqueue = trb; - if (room_on_ring(xhci, ep_ring, num_trbs)) - break; - } + if (room_on_ring(xhci, ep_ring, num_trbs)) + break; if (ep_ring == xhci->cmd_ring) { xhci_err(xhci, "Do not support expand command ring\n"); @@ -3631,8 +3604,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); @@ -3724,7 +3697,7 @@ return 0; max_burst = urb->ep->ss_ep_comp.bMaxBurst; - return roundup(total_packet_count, max_burst + 1) - 1; + return DIV_ROUND_UP(total_packet_count, max_burst + 1) - 1; } /* --- linux-3.13.0.orig/drivers/usb/host/xhci.c +++ linux-3.13.0/drivers/usb/host/xhci.c @@ -35,6 +35,8 @@ #define DRIVER_AUTHOR "Sarah Sharp" #define DRIVER_DESC "'eXtensible' Host Controller (xHC) Driver" +#define PORT_WAKE_BITS (PORT_WKOC_E | PORT_WKDISC_E | PORT_WKCONN_E) + /* Some 0.95 hardware can't handle the chain bit on a Link TRB being cleared */ static int link_quirk; module_param(link_quirk, int, S_IRUGO | S_IWUSR); @@ -141,7 +143,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; } @@ -169,6 +172,16 @@ command |= CMD_RESET; xhci_writel(xhci, 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, &xhci->op_regs->command, CMD_RESET, 0, 10 * 1000 * 1000); if (ret) @@ -321,6 +334,9 @@ struct usb_hcd *hcd = xhci_to_hcd(xhci); struct pci_dev *pdev = to_pci_dev(hcd->self.controller); + if (xhci->quirks & XHCI_PLAT) + return; + xhci_free_irq(xhci); if (xhci->msix_entries) { @@ -837,13 +853,47 @@ xhci_set_cmd_ring_deq(xhci); } +static void xhci_disable_port_wake_on_bits(struct xhci_hcd *xhci) +{ + int port_index; + __le32 __iomem **port_array; + unsigned long flags; + u32 t1, t2; + + spin_lock_irqsave(&xhci->lock, flags); + + /* disble usb3 ports Wake bits*/ + port_index = xhci->num_usb3_ports; + port_array = xhci->usb3_ports; + while (port_index--) { + t1 = readl(port_array[port_index]); + t1 = xhci_port_state_to_neutral(t1); + t2 = t1 & ~PORT_WAKE_BITS; + if (t1 != t2) + writel(t2, port_array[port_index]); + } + + /* disble usb2 ports Wake bits*/ + port_index = xhci->num_usb2_ports; + port_array = xhci->usb2_ports; + while (port_index--) { + t1 = readl(port_array[port_index]); + t1 = xhci_port_state_to_neutral(t1); + t2 = t1 & ~PORT_WAKE_BITS; + if (t1 != t2) + writel(t2, port_array[port_index]); + } + + spin_unlock_irqrestore(&xhci->lock, flags); +} + /* * Stop HC (not bus-specific) * * This is called when the machine transition into S3/S4 mode. * */ -int xhci_suspend(struct xhci_hcd *xhci) +int xhci_suspend(struct xhci_hcd *xhci, bool do_wakeup) { int rc = 0; unsigned int delay = XHCI_MAX_HALT_USEC; @@ -854,6 +904,10 @@ xhci->shared_hcd->state != HC_STATE_SUSPENDED) return -EINVAL; + /* Clear root port wake on bits if wakeup not allowed. */ + if (!do_wakeup) + xhci_disable_port_wake_on_bits(xhci); + /* Don't poll the roothubs on bus suspend. */ xhci_dbg(xhci, "%s: stopping port polling.\n", __func__); clear_bit(HCD_FLAG_POLL_RH, &hcd->flags); @@ -923,7 +977,7 @@ */ int xhci_resume(struct xhci_hcd *xhci, bool hibernated) { - u32 command, temp = 0; + u32 command, temp = 0, status; struct usb_hcd *hcd = xhci_to_hcd(xhci); struct usb_hcd *secondary_hcd; int retval = 0; @@ -1042,8 +1096,12 @@ done: if (retval == 0) { - usb_hcd_resume_root_hub(hcd); - usb_hcd_resume_root_hub(xhci->shared_hcd); + /* Resume root hubs only when have pending events. */ + status = readl(&xhci->op_regs->status); + if (status & STS_EINT) { + usb_hcd_resume_root_hub(hcd); + usb_hcd_resume_root_hub(xhci->shared_hcd); + } } /* @@ -1469,7 +1527,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); @@ -2855,6 +2915,9 @@ ep_index, ep->stopped_stream, ep->stopped_td, &deq_state); + if (!deq_state.new_deq_ptr || !deq_state.new_deq_seg) + return; + /* HW with the reset endpoint quirk will use the saved dequeue state to * issue a configure endpoint command later. */ @@ -2877,64 +2940,32 @@ } } -/* Deal with stalled endpoints. The core should have sent the control message - * to clear the halt condition. However, we need to make the xHCI hardware - * reset its sequence number, since a device will expect a sequence number of - * zero after the halt condition is cleared. +/* Called when clearing halted device. The core should have sent the control + * message to clear the device halt condition. The host side of the halt should + * already be cleared with a reset endpoint command issued when the STALL tx + * event was received. + * * Context: in_interrupt */ + void xhci_endpoint_reset(struct usb_hcd *hcd, struct usb_host_endpoint *ep) { struct xhci_hcd *xhci; - struct usb_device *udev; - unsigned int ep_index; - unsigned long flags; - int ret; - struct xhci_virt_ep *virt_ep; xhci = hcd_to_xhci(hcd); - udev = (struct usb_device *) ep->hcpriv; - /* Called with a root hub endpoint (or an endpoint that wasn't added - * with xhci_add_endpoint() - */ - if (!ep->hcpriv) - return; - ep_index = xhci_get_endpoint_index(&ep->desc); - virt_ep = &xhci->devs[udev->slot_id]->eps[ep_index]; - if (!virt_ep->stopped_td) { - xhci_dbg_trace(xhci, trace_xhci_dbg_reset_ep, - "Endpoint 0x%x not halted, refusing to reset.", - ep->desc.bEndpointAddress); - return; - } - if (usb_endpoint_xfer_control(&ep->desc)) { - xhci_dbg_trace(xhci, trace_xhci_dbg_reset_ep, - "Control endpoint stall already handled."); - return; - } - - xhci_dbg_trace(xhci, trace_xhci_dbg_reset_ep, - "Queueing reset endpoint command"); - spin_lock_irqsave(&xhci->lock, flags); - ret = xhci_queue_reset_ep(xhci, udev->slot_id, ep_index); /* - * Can't change the ring dequeue pointer until it's transitioned to the - * stopped state, which is only upon a successful reset endpoint - * command. Better hope that last command worked! + * We might need to implement the config ep cmd in xhci 4.8.1 note: + * The Reset Endpoint Command may only be issued to endpoints in the + * Halted state. If software wishes reset the Data Toggle or Sequence + * Number of an endpoint that isn't in the Halted state, then software + * may issue a Configure Endpoint Command with the Drop and Add bits set + * for the target endpoint. that is in the Stopped state. */ - if (!ret) { - xhci_cleanup_stalled_ring(xhci, udev, ep_index); - kfree(virt_ep->stopped_td); - xhci_ring_cmd_db(xhci); - } - virt_ep->stopped_td = NULL; - virt_ep->stopped_trb = NULL; - virt_ep->stopped_stream = 0; - spin_unlock_irqrestore(&xhci->lock, flags); - if (ret) - xhci_warn(xhci, "FIXME allocate a new ring segment\n"); + /* For now just print debug to follow the situation */ + xhci_dbg(xhci, "Endpoint 0x%x ep reset callback called\n", + ep->desc.bEndpointAddress); } static int xhci_check_streams_endpoint(struct xhci_hcd *xhci, @@ -3407,6 +3438,9 @@ return -EINVAL; } + if (virt_dev->tt_info) + old_active_eps = virt_dev->tt_info->active_eps; + if (virt_dev->udev != udev) { /* If the virt_dev and the udev does not match, this virt_dev * may belong to another udev. @@ -3908,13 +3942,21 @@ int ret; spin_lock_irqsave(&xhci->lock, flags); - if (max_exit_latency == xhci->devs[udev->slot_id]->current_mel) { + + virt_dev = xhci->devs[udev->slot_id]; + + /* + * virt_dev might not exists yet if xHC resumed from hibernate (S4) and + * xHC was re-initialized. Exit latency will be set later after + * hub_port_finish_reset() is done and xhci->devs[] are re-allocated + */ + + if (!virt_dev || max_exit_latency == virt_dev->current_mel) { spin_unlock_irqrestore(&xhci->lock, flags); return 0; } /* Attempt to issue an Evaluate Context command to change the MEL. */ - virt_dev = xhci->devs[udev->slot_id]; command = xhci->lpm_command; ctrl_ctx = xhci_get_input_control_ctx(xhci, command->in_ctx); if (!ctrl_ctx) { @@ -4649,8 +4691,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", @@ -4809,6 +4859,9 @@ { int retval; + if (usb_disabled()) + return -ENODEV; + retval = xhci_register_pci(); if (retval < 0) { pr_debug("Problem registering PCI driver.\n"); @@ -4836,6 +4889,7 @@ 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); + return 0; unreg_pci: xhci_unregister_pci(); --- linux-3.13.0.orig/drivers/usb/host/xhci.h +++ linux-3.13.0/drivers/usb/host/xhci.h @@ -1,3 +1,4 @@ + /* * xHCI host controller driver * @@ -88,9 +89,10 @@ #define HCS_IST(p) (((p) >> 0) & 0xf) /* bits 4:7, max number of Event Ring segments */ #define HCS_ERST_MAX(p) (((p) >> 4) & 0xf) +/* bits 21:25 Hi 5 bits of Scratchpad buffers SW must allocate for the HW */ /* bit 26 Scratchpad restore - for save/restore HW state - not used yet */ -/* bits 27:31 number of Scratchpad buffers SW must allocate for the HW */ -#define HCS_MAX_SCRATCHPAD(p) (((p) >> 27) & 0x1f) +/* bits 27:31 Lo 5 bits of Scratchpad buffers SW must allocate for the HW */ +#define HCS_MAX_SCRATCHPAD(p) ((((p) >> 16) & 0x3e0) | (((p) >> 27) & 0x1f)) /* HCSPARAMS3 - hcs_params3 - bitmasks */ /* bits 0:7, Max U1 to U0 latency for the roothub ports */ @@ -283,6 +285,7 @@ #define XDEV_U0 (0x0 << 5) #define XDEV_U2 (0x2 << 5) #define XDEV_U3 (0x3 << 5) +#define XDEV_INACTIVE (0x6 << 5) #define XDEV_RESUME (0xf << 5) /* true: port has power (see HCC_PPC) */ #define PORT_POWER (1 << 9) @@ -864,8 +867,6 @@ #define EP_GETTING_NO_STREAMS (1 << 5) /* ---- Related to URB cancellation ---- */ struct list_head cancelled_td_list; - /* The TRB that was last reported in a stopped endpoint ring */ - union xhci_trb *stopped_trb; struct xhci_td *stopped_td; unsigned int stopped_stream; /* Watchdog timer for stop endpoint command to cancel URBs */ @@ -1260,7 +1261,7 @@ * since the command ring is 64-byte aligned. * It must also be greater than 16. */ -#define TRBS_PER_SEGMENT 64 +#define TRBS_PER_SEGMENT 256 /* Allow two commands + a link TRB, along with any reserved command TRBs */ #define MAX_RSVD_CMD_TRBS (TRBS_PER_SEGMENT - 3) #define TRB_SEGMENT_SIZE (TRBS_PER_SEGMENT*16) @@ -1283,6 +1284,8 @@ struct xhci_segment *start_seg; union xhci_trb *first_trb; union xhci_trb *last_trb; + /* actual_length of the URB has already been set */ + bool urb_length_set; }; /* xHCI command default timeout value */ @@ -1549,6 +1552,7 @@ #define XHCI_PLAT (1 << 16) #define XHCI_SLOW_SUSPEND (1 << 17) #define XHCI_SPURIOUS_WAKEUP (1 << 18) +#define XHCI_PME_STUCK_QUIRK (1 << 20) unsigned int num_active_eps; unsigned int limit_active_eps; /* There are two roothubs to keep track of bus suspend info for */ @@ -1767,7 +1771,7 @@ int xhci_gen_setup(struct usb_hcd *hcd, xhci_get_quirks_t get_quirks); #ifdef CONFIG_PM -int xhci_suspend(struct xhci_hcd *xhci); +int xhci_suspend(struct xhci_hcd *xhci, bool do_wakeup); int xhci_resume(struct xhci_hcd *xhci, bool hibernated); #else #define xhci_suspend NULL --- linux-3.13.0.orig/drivers/usb/misc/iowarrior.c +++ linux-3.13.0/drivers/usb/misc/iowarrior.c @@ -792,6 +792,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-3.13.0.orig/drivers/usb/misc/sisusbvga/sisusb.c +++ linux-3.13.0/drivers/usb/misc/sisusbvga/sisusb.c @@ -3248,6 +3248,7 @@ { USB_DEVICE(0x0711, 0x0918) }, { USB_DEVICE(0x0711, 0x0920) }, { USB_DEVICE(0x0711, 0x0950) }, + { USB_DEVICE(0x0711, 0x5200) }, { USB_DEVICE(0x182d, 0x021c) }, { USB_DEVICE(0x182d, 0x0269) }, { } --- linux-3.13.0.orig/drivers/usb/misc/usbtest.c +++ linux-3.13.0/drivers/usb/misc/usbtest.c @@ -1303,6 +1303,11 @@ urb->context = &completion; urb->complete = unlink1_callback; + if (usb_pipeout(urb->pipe)) { + simple_fill_buf(urb); + urb->transfer_flags |= URB_ZERO_PACKET; + } + /* keep the endpoint busy. there are lots of hc/hcd-internal * states, and testing should get to all of them over time. * @@ -1433,6 +1438,11 @@ unlink_queued_callback, &ctx); ctx.urbs[i]->transfer_dma = buf_dma; ctx.urbs[i]->transfer_flags = URB_NO_TRANSFER_DMA_MAP; + + if (usb_pipeout(ctx.urbs[i]->pipe)) { + simple_fill_buf(ctx.urbs[i]); + ctx.urbs[i]->transfer_flags |= URB_ZERO_PACKET; + } } /* Submit all the URBs and then unlink URBs num - 4 and num - 2. */ --- linux-3.13.0.orig/drivers/usb/musb/Kconfig +++ linux-3.13.0/drivers/usb/musb/Kconfig @@ -74,7 +74,7 @@ config USB_MUSB_OMAP2PLUS tristate "OMAP2430 and onwards" - depends on ARCH_OMAP2PLUS + depends on ARCH_OMAP2PLUS && USB select GENERIC_PHY config USB_MUSB_AM35X --- linux-3.13.0.orig/drivers/usb/musb/musb_am335x.c +++ linux-3.13.0/drivers/usb/musb/musb_am335x.c @@ -20,21 +20,6 @@ return ret; } -static int of_remove_populated_child(struct device *dev, void *d) -{ - struct platform_device *pdev = to_platform_device(dev); - - of_device_unregister(pdev); - return 0; -} - -static int am335x_child_remove(struct platform_device *pdev) -{ - device_for_each_child(&pdev->dev, NULL, of_remove_populated_child); - pm_runtime_disable(&pdev->dev); - return 0; -} - static const struct of_device_id am335x_child_of_match[] = { { .compatible = "ti,am33xx-usb" }, { }, @@ -43,13 +28,17 @@ static struct platform_driver am335x_child_driver = { .probe = am335x_child_probe, - .remove = am335x_child_remove, .driver = { .name = "am335x-usb-childs", .of_match_table = am335x_child_of_match, }, }; -module_platform_driver(am335x_child_driver); +static int __init am335x_child_init(void) +{ + return platform_driver_register(&am335x_child_driver); +} +module_init(am335x_child_init); + MODULE_DESCRIPTION("AM33xx child devices"); MODULE_LICENSE("GPL v2"); --- linux-3.13.0.orig/drivers/usb/musb/musb_core.c +++ linux-3.13.0/drivers/usb/musb/musb_core.c @@ -100,6 +100,7 @@ #include #include #include +#include #include "musb_core.h" @@ -132,7 +133,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 +152,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 +177,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 +192,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) @@ -439,7 +440,6 @@ static irqreturn_t musb_stage0_irq(struct musb *musb, u8 int_usb, u8 devctl) { - struct usb_otg *otg = musb->xceiv->otg; irqreturn_t handled = IRQ_NONE; dev_dbg(musb->controller, "<== DevCtl=%02x, int_usb=0x%x\n", devctl, @@ -479,7 +479,7 @@ (USB_PORT_STAT_C_SUSPEND << 16) | MUSB_PORT_STAT_RESUME; musb->rh_timer = jiffies - + msecs_to_jiffies(20); + + msecs_to_jiffies(USB_RESUME_TIMEOUT); musb->xceiv->state = OTG_STATE_A_HOST; musb->is_active = 1; @@ -654,7 +654,7 @@ break; case OTG_STATE_B_PERIPHERAL: musb_g_suspend(musb); - musb->is_active = otg->gadget->b_hnp_enable; + musb->is_active = musb->g.b_hnp_enable; if (musb->is_active) { musb->xceiv->state = OTG_STATE_B_WAIT_ACON; dev_dbg(musb->controller, "HNP: Setting timer for b_ase0_brst\n"); @@ -670,7 +670,7 @@ break; case OTG_STATE_A_HOST: musb->xceiv->state = OTG_STATE_A_SUSPEND; - musb->is_active = otg->host->b_hnp_enable; + musb->is_active = musb->hcd->self.b_hnp_enable; break; case OTG_STATE_B_HOST: /* Transition to B_PERIPHERAL, see 6.8.2.6 p 44 */ @@ -1515,16 +1515,30 @@ (devctl & MUSB_DEVCTL_HM) ? "host" : "peripheral", musb->int_usb, musb->int_tx, musb->int_rx); - /* the core can interrupt us for multiple reasons; docs have - * a generic interrupt flowchart to follow + /** + * According to Mentor Graphics' documentation, flowchart on page 98, + * IRQ should be handled as follows: + * + * . Resume IRQ + * . Session Request IRQ + * . VBUS Error IRQ + * . Suspend IRQ + * . Connect IRQ + * . Disconnect IRQ + * . Reset/Babble IRQ + * . SOF IRQ (we're not using this one) + * . Endpoint 0 IRQ + * . TX Endpoints + * . RX Endpoints + * + * We will be following that flowchart in order to avoid any problems + * that might arise with internal Finite State Machine. */ + if (musb->int_usb) retval |= musb_stage0_irq(musb, musb->int_usb, devctl); - /* "stage 1" is handling endpoint irqs */ - - /* handle endpoint 0 first */ if (musb->int_tx & 1) { if (devctl & MUSB_DEVCTL_HM) retval |= musb_h_ep0_irq(musb); @@ -1532,37 +1546,31 @@ retval |= musb_g_ep0_irq(musb); } - /* RX on endpoints 1-15 */ - reg = musb->int_rx >> 1; + reg = musb->int_tx >> 1; ep_num = 1; while (reg) { if (reg & 1) { - /* musb_ep_select(musb->mregs, ep_num); */ - /* REVISIT just retval = ep->rx_irq(...) */ retval = IRQ_HANDLED; if (devctl & MUSB_DEVCTL_HM) - musb_host_rx(musb, ep_num); + musb_host_tx(musb, ep_num); else - musb_g_rx(musb, ep_num); + musb_g_tx(musb, ep_num); } - reg >>= 1; ep_num++; } - /* TX on endpoints 1-15 */ - reg = musb->int_tx >> 1; + reg = musb->int_rx >> 1; ep_num = 1; while (reg) { if (reg & 1) { - /* musb_ep_select(musb->mregs, ep_num); */ - /* REVISIT just retval |= ep->tx_irq(...) */ retval = IRQ_HANDLED; if (devctl & MUSB_DEVCTL_HM) - musb_host_tx(musb, ep_num); + musb_host_rx(musb, ep_num); else - musb_g_tx(musb, ep_num); + musb_g_rx(musb, ep_num); } + reg >>= 1; ep_num++; } --- linux-3.13.0.orig/drivers/usb/musb/musb_cppi41.c +++ linux-3.13.0/drivers/usb/musb/musb_cppi41.c @@ -190,7 +190,8 @@ } } - if (!list_empty(&controller->early_tx_list)) { + if (!list_empty(&controller->early_tx_list) && + !hrtimer_is_queued(&controller->early_tx)) { ret = HRTIMER_RESTART; hrtimer_forward_now(&controller->early_tx, ktime_set(0, 150 * NSEC_PER_USEC)); @@ -266,7 +267,7 @@ } list_add_tail(&cppi41_channel->tx_check, &controller->early_tx_list); - if (!hrtimer_active(&controller->early_tx)) { + if (!hrtimer_is_queued(&controller->early_tx)) { hrtimer_start_range_ns(&controller->early_tx, ktime_set(0, 140 * NSEC_PER_USEC), 40 * NSEC_PER_USEC, --- linux-3.13.0.orig/drivers/usb/musb/musb_host.c +++ linux-3.13.0/drivers/usb/musb/musb_host.c @@ -2631,7 +2631,6 @@ if (musb->port_mode == MUSB_PORT_MODE_GADGET) return; usb_remove_hcd(musb->hcd); - musb->hcd = NULL; } void musb_host_free(struct musb *musb) --- linux-3.13.0.orig/drivers/usb/musb/musb_virthub.c +++ linux-3.13.0/drivers/usb/musb/musb_virthub.c @@ -105,7 +105,7 @@ /* later, GetPortStatus will stop RESUME signaling */ musb->port1_status |= MUSB_PORT_STAT_RESUME; - musb->rh_timer = jiffies + msecs_to_jiffies(20); + musb->rh_timer = jiffies + msecs_to_jiffies(USB_RESUME_TIMEOUT); } } @@ -231,9 +231,7 @@ #ifdef CONFIG_USB_MUSB_HOST return 1; #else - if (musb->port_mode == MUSB_PORT_MODE_HOST) - return 1; - return musb->g.dev.driver != NULL; + return musb->port_mode == MUSB_PORT_MODE_HOST; #endif } --- linux-3.13.0.orig/drivers/usb/musb/ux500.c +++ linux-3.13.0/drivers/usb/musb/ux500.c @@ -275,7 +275,6 @@ musb->dev.parent = &pdev->dev; musb->dev.dma_mask = &pdev->dev.coherent_dma_mask; musb->dev.coherent_dma_mask = pdev->dev.coherent_dma_mask; - musb->dev.of_node = pdev->dev.of_node; glue->dev = &pdev->dev; glue->musb = musb; --- linux-3.13.0.orig/drivers/usb/phy/phy-fsl-usb.c +++ linux-3.13.0/drivers/usb/phy/phy-fsl-usb.c @@ -76,7 +76,7 @@ .otg_port = 1, }; -#ifdef CONFIG_PPC32 +#ifdef CONFIG_PPC static u32 _fsl_readl_be(const unsigned __iomem *p) { return in_be32(p); @@ -106,7 +106,7 @@ #else #define fsl_readl(addr) readl(addr) #define fsl_writel(val, addr) writel(val, addr) -#endif /* CONFIG_PPC32 */ +#endif /* CONFIG_PPC */ /* Routines to access transceiver ULPI registers */ u8 view_ulpi(u8 addr) @@ -914,6 +914,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; @@ -921,6 +922,7 @@ _fsl_readl = _fsl_readl_le; _fsl_writel = _fsl_writel_le; } +#endif /* request irq */ p_otg->irq = platform_get_irq(pdev, 0); --- linux-3.13.0.orig/drivers/usb/phy/phy-tegra-usb.c +++ linux-3.13.0/drivers/usb/phy/phy-tegra-usb.c @@ -881,8 +881,8 @@ return -ENOMEM; } - tegra_phy->config = devm_kzalloc(&pdev->dev, - sizeof(*tegra_phy->config), GFP_KERNEL); + tegra_phy->config = devm_kzalloc(&pdev->dev, sizeof(*config), + GFP_KERNEL); if (!tegra_phy->config) { dev_err(&pdev->dev, "unable to allocate memory for USB UTMIP config\n"); --- linux-3.13.0.orig/drivers/usb/phy/phy-ulpi.c +++ linux-3.13.0/drivers/usb/phy/phy-ulpi.c @@ -47,6 +47,8 @@ static struct ulpi_info ulpi_ids[] = { ULPI_INFO(ULPI_ID(0x04cc, 0x1504), "NXP ISP1504"), ULPI_INFO(ULPI_ID(0x0424, 0x0006), "SMSC USB331x"), + ULPI_INFO(ULPI_ID(0x0424, 0x0007), "SMSC USB3320"), + ULPI_INFO(ULPI_ID(0x0451, 0x1507), "TI TUSB1210"), }; static int ulpi_set_otg_flags(struct usb_phy *phy) --- linux-3.13.0.orig/drivers/usb/phy/phy.c +++ linux-3.13.0/drivers/usb/phy/phy.c @@ -78,7 +78,9 @@ static int devm_usb_phy_match(struct device *dev, void *res, void *match_data) { - return res == match_data; + struct usb_phy **phy = res; + + return *phy == match_data; } /** --- linux-3.13.0.orig/drivers/usb/renesas_usbhs/fifo.c +++ linux-3.13.0/drivers/usb/renesas_usbhs/fifo.c @@ -166,7 +166,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); @@ -933,6 +934,7 @@ pkt->trans = len; + usbhsf_tx_irq_ctrl(pipe, 0); INIT_WORK(&pkt->work, xfer_work); schedule_work(&pkt->work); --- linux-3.13.0.orig/drivers/usb/renesas_usbhs/mod_gadget.c +++ linux-3.13.0/drivers/usb/renesas_usbhs/mod_gadget.c @@ -600,6 +600,10 @@ static int usbhsg_ep_disable(struct usb_ep *ep) { struct usbhsg_uep *uep = usbhsg_ep_to_uep(ep); + struct usbhs_pipe *pipe = usbhsg_uep_to_pipe(uep); + + if (!pipe) + return -EINVAL; usbhsg_pipe_disable(uep); --- linux-3.13.0.orig/drivers/usb/serial/bus.c +++ linux-3.13.0/drivers/usb/serial/bus.c @@ -51,6 +51,7 @@ { struct usb_serial_driver *driver; struct usb_serial_port *port; + struct device *tty_dev; int retval = 0; int minor; @@ -75,12 +76,20 @@ retval = device_create_file(dev, &dev_attr_port_number); if (retval) { if (driver->port_remove) - retval = driver->port_remove(port); + driver->port_remove(port); goto exit_with_autopm; } minor = port->minor; - tty_register_device(usb_serial_tty_driver, minor, dev); + tty_dev = tty_register_device(usb_serial_tty_driver, minor, dev); + if (IS_ERR(tty_dev)) { + retval = PTR_ERR(tty_dev); + device_remove_file(dev, &dev_attr_port_number); + if (driver->port_remove) + driver->port_remove(port); + goto exit_with_autopm; + } + dev_info(&port->serial->dev->dev, "%s converter now attached to ttyUSB%d\n", driver->description, minor); --- linux-3.13.0.orig/drivers/usb/serial/console.c +++ linux-3.13.0/drivers/usb/serial/console.c @@ -47,6 +47,8 @@ * ------------------------------------------------------------ */ +static const struct tty_operations usb_console_fake_tty_ops = { +}; /* * The parsing of the command line works exactly like the @@ -139,14 +141,18 @@ goto reset_open_count; } kref_init(&tty->kref); - tty_port_tty_set(&port->port, tty); tty->driver = usb_serial_tty_driver; tty->index = co->index; + init_ldsem(&tty->ldisc_sem); + INIT_LIST_HEAD(&tty->tty_files); + kref_get(&tty->driver->kref); + tty->ops = &usb_console_fake_tty_ops; if (tty_init_termios(tty)) { retval = -ENOMEM; dev_err(&port->dev, "no more memory\n"); - goto free_tty; + goto put_tty; } + tty_port_tty_set(&port->port, tty); } /* only call the device specific open if this @@ -164,7 +170,7 @@ serial->type->set_termios(tty, port, &dummy); tty_port_tty_set(&port->port, NULL); - kfree(tty); + tty_kref_put(tty); } set_bit(ASYNCB_INITIALIZED, &port->port.flags); } @@ -180,8 +186,8 @@ fail: tty_port_tty_set(&port->port, NULL); - free_tty: - kfree(tty); + put_tty: + tty_kref_put(tty); reset_open_count: port->port.count = 0; usb_autopm_put_interface(serial->interface); --- linux-3.13.0.orig/drivers/usb/serial/cp210x.c +++ linux-3.13.0/drivers/usb/serial/cp210x.c @@ -56,6 +56,7 @@ { USB_DEVICE(0x0846, 0x1100) }, /* NetGear Managed Switch M4100 series, M5300 series, M7100 series */ { USB_DEVICE(0x08e6, 0x5501) }, /* Gemalto Prox-PU/CU contactless smartcard reader */ { USB_DEVICE(0x08FD, 0x000A) }, /* Digianswer A/S , ZigBee/802.15.4 MAC Device */ + { USB_DEVICE(0x0908, 0x01FF) }, /* Siemens RUGGEDCOM USB Serial Console */ { USB_DEVICE(0x0BED, 0x1100) }, /* MEI (TM) Cashflow-SC Bill/Voucher Acceptor */ { USB_DEVICE(0x0BED, 0x1101) }, /* MEI series 2000 Combo Acceptor */ { USB_DEVICE(0x0FCF, 0x1003) }, /* Dynastream ANT development board */ @@ -97,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 */ @@ -104,6 +106,7 @@ { USB_DEVICE(0x10C4, 0x8218) }, /* Lipowsky Industrie Elektronik GmbH, HARP-1 */ { USB_DEVICE(0x10C4, 0x822B) }, /* Modem EDGE(GSM) Comander 2 */ { USB_DEVICE(0x10C4, 0x826B) }, /* Cygnal Integrated Products, Inc., Fasttrax GPS demonstration module */ + { USB_DEVICE(0x10C4, 0x8281) }, /* Nanotec Plug & Drive */ { USB_DEVICE(0x10C4, 0x8293) }, /* Telegesis ETRX2USB */ { USB_DEVICE(0x10C4, 0x82F9) }, /* Procyon AVS */ { USB_DEVICE(0x10C4, 0x8341) }, /* Siemens MC35PU GPRS Modem */ @@ -119,12 +122,17 @@ { USB_DEVICE(0x10C4, 0x85F8) }, /* Virtenio Preon32 */ { USB_DEVICE(0x10C4, 0x8664) }, /* AC-Services CAN-IF */ { USB_DEVICE(0x10C4, 0x8665) }, /* AC-Services OBD-IF */ + { USB_DEVICE(0x10C4, 0x8856) }, /* CEL EM357 ZigBee USB Stick - LR */ + { USB_DEVICE(0x10C4, 0x8857) }, /* CEL EM357 ZigBee USB Stick */ { USB_DEVICE(0x10C4, 0x88A4) }, /* MMB Networks ZigBee USB Device */ { USB_DEVICE(0x10C4, 0x88A5) }, /* Planet Innovation Ingeni ZigBee USB Device */ + { USB_DEVICE(0x10C4, 0x8946) }, /* Ketra N1 Wireless Interface */ + { USB_DEVICE(0x10C4, 0x8977) }, /* CEL MeshWorks DevKit Device */ + { USB_DEVICE(0x10C4, 0x8998) }, /* KCF Technologies PRN */ + { USB_DEVICE(0x10C4, 0x8A2A) }, /* HubZ dual ZigBee and Z-Wave dongle */ { 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 */ @@ -141,6 +149,8 @@ { USB_DEVICE(0x166A, 0x0305) }, /* Clipsal C-5000CT2 C-Bus Spectrum Colour Touchscreen */ { USB_DEVICE(0x166A, 0x0401) }, /* Clipsal L51xx C-Bus Architectural Dimmer */ { USB_DEVICE(0x166A, 0x0101) }, /* Clipsal 5560884 C-Bus Multi-room Audio Matrix Switcher */ + { USB_DEVICE(0x16C0, 0x09B0) }, /* Lunatico Seletek */ + { USB_DEVICE(0x16C0, 0x09B1) }, /* Lunatico Seletek */ { USB_DEVICE(0x16D6, 0x0001) }, /* Jablotron serial interface */ { USB_DEVICE(0x16DC, 0x0010) }, /* W-IE-NE-R Plein & Baus GmbH PL512 Power Supply */ { USB_DEVICE(0x16DC, 0x0011) }, /* W-IE-NE-R Plein & Baus GmbH RCM Remote Control for MARATON Power Supply */ @@ -151,8 +161,16 @@ { 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 */ { USB_DEVICE(0x1BE3, 0x07A6) }, /* WAGO 750-923 USB Service Cable */ + { USB_DEVICE(0x1D6F, 0x0010) }, /* Seluxit ApS RF Dongle */ { USB_DEVICE(0x1E29, 0x0102) }, /* Festo CPX-USB */ { USB_DEVICE(0x1E29, 0x0501) }, /* Festo CMSP */ { USB_DEVICE(0x1FB9, 0x0100) }, /* Lake Shore Model 121 Current Source */ @@ -174,6 +192,7 @@ { USB_DEVICE(0x1FB9, 0x0602) }, /* Lake Shore Model 648 Magnet Power Supply */ { USB_DEVICE(0x1FB9, 0x0700) }, /* Lake Shore Model 737 VSM Controller */ { USB_DEVICE(0x1FB9, 0x0701) }, /* Lake Shore Model 776 Hall Matrix */ + { USB_DEVICE(0x2626, 0xEA60) }, /* Aruba Networks 7xxx USB Serial Console */ { USB_DEVICE(0x3195, 0xF190) }, /* Link Instruments MSO-19 */ { USB_DEVICE(0x3195, 0xF280) }, /* Link Instruments MSO-28 */ { USB_DEVICE(0x3195, 0xF281) }, /* Link Instruments MSO-28 */ --- linux-3.13.0.orig/drivers/usb/serial/cypress_m8.c +++ linux-3.13.0/drivers/usb/serial/cypress_m8.c @@ -449,6 +449,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; @@ -608,12 +613,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-3.13.0.orig/drivers/usb/serial/cypress_m8.h +++ linux-3.13.0/drivers/usb/serial/cypress_m8.h @@ -63,7 +63,7 @@ #define UART_DSR 0x20 /* data set ready - flow control - device to host */ #define CONTROL_RTS 0x10 /* request to send - flow control - host to device */ #define UART_CTS 0x10 /* clear to send - flow control - device to host */ -#define UART_RI 0x10 /* ring indicator - modem - device to host */ +#define UART_RI 0x80 /* ring indicator - modem - device to host */ #define UART_CD 0x40 /* carrier detect - modem - device to host */ #define CYP_ERROR 0x08 /* received from input report - device to host */ /* Note - the below has nothing to do with the "feature report" reset */ --- linux-3.13.0.orig/drivers/usb/serial/digi_acceleport.c +++ linux-3.13.0/drivers/usb/serial/digi_acceleport.c @@ -1253,8 +1253,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-3.13.0.orig/drivers/usb/serial/ftdi_sio.c +++ linux-3.13.0/drivers/usb/serial/ftdi_sio.c @@ -146,13 +146,16 @@ * /sys/bus/usb-serial/drivers/ftdi_sio/new_id and send a patch or report. */ static struct usb_device_id id_table_combined [] = { + { USB_DEVICE(FTDI_VID, FTDI_BRICK_PID) }, { USB_DEVICE(FTDI_VID, FTDI_ZEITCONTROL_TAGTRACE_MIFARE_PID) }, { USB_DEVICE(FTDI_VID, FTDI_CTI_MINI_PID) }, { USB_DEVICE(FTDI_VID, FTDI_CTI_NANO_PID) }, { USB_DEVICE(FTDI_VID, FTDI_AMC232_PID) }, { USB_DEVICE(FTDI_VID, FTDI_CANUSB_PID) }, { USB_DEVICE(FTDI_VID, FTDI_CANDAPTER_PID) }, + { USB_DEVICE(FTDI_VID, FTDI_BM_ATOM_NANO_PID) }, { USB_DEVICE(FTDI_VID, FTDI_NXTCAM_PID) }, + { USB_DEVICE(FTDI_VID, FTDI_EV3CON_PID) }, { USB_DEVICE(FTDI_VID, FTDI_SCS_DEVICE_0_PID) }, { USB_DEVICE(FTDI_VID, FTDI_SCS_DEVICE_1_PID) }, { USB_DEVICE(FTDI_VID, FTDI_SCS_DEVICE_2_PID) }, @@ -192,6 +195,8 @@ { USB_DEVICE(INTERBIOMETRICS_VID, INTERBIOMETRICS_IOBOARD_PID) }, { USB_DEVICE(INTERBIOMETRICS_VID, INTERBIOMETRICS_MINI_IOBOARD_PID) }, { USB_DEVICE(FTDI_VID, FTDI_SPROG_II) }, + { USB_DEVICE(FTDI_VID, FTDI_TAGSYS_LP101_PID) }, + { USB_DEVICE(FTDI_VID, FTDI_TAGSYS_P200X_PID) }, { USB_DEVICE(FTDI_VID, FTDI_LENZ_LIUSB_PID) }, { USB_DEVICE(FTDI_VID, FTDI_XF_632_PID) }, { USB_DEVICE(FTDI_VID, FTDI_XF_634_PID) }, @@ -479,6 +484,39 @@ { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_01FD_PID) }, { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_01FE_PID) }, { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_01FF_PID) }, + { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_4701_PID) }, + { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9300_PID) }, + { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9301_PID) }, + { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9302_PID) }, + { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9303_PID) }, + { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9304_PID) }, + { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9305_PID) }, + { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9306_PID) }, + { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9307_PID) }, + { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9308_PID) }, + { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9309_PID) }, + { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_930A_PID) }, + { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_930B_PID) }, + { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_930C_PID) }, + { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_930D_PID) }, + { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_930E_PID) }, + { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_930F_PID) }, + { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9310_PID) }, + { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9311_PID) }, + { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9312_PID) }, + { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9313_PID) }, + { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9314_PID) }, + { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9315_PID) }, + { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9316_PID) }, + { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9317_PID) }, + { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9318_PID) }, + { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9319_PID) }, + { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_931A_PID) }, + { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_931B_PID) }, + { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_931C_PID) }, + { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_931D_PID) }, + { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_931E_PID) }, + { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_931F_PID) }, { USB_DEVICE(FTDI_VID, FTDI_PERLE_ULTRAPORT_PID) }, { USB_DEVICE(FTDI_VID, FTDI_PIEGROUP_PID) }, { USB_DEVICE(FTDI_VID, FTDI_TNC_X_PID) }, @@ -578,6 +616,13 @@ { USB_DEVICE(FTDI_VID, FTDI_TAVIR_STK500_PID) }, { USB_DEVICE(FTDI_VID, FTDI_TIAO_UMPA_PID), .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, + { 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: */ @@ -669,6 +714,11 @@ { USB_DEVICE(FTDI_VID, XSENS_CONVERTER_5_PID) }, { USB_DEVICE(FTDI_VID, XSENS_CONVERTER_6_PID) }, { USB_DEVICE(FTDI_VID, XSENS_CONVERTER_7_PID) }, + { USB_DEVICE(XSENS_VID, XSENS_AWINDA_DONGLE_PID) }, + { USB_DEVICE(XSENS_VID, XSENS_AWINDA_STATION_PID) }, + { USB_DEVICE(XSENS_VID, XSENS_CONVERTER_PID) }, + { USB_DEVICE(XSENS_VID, XSENS_MTDEVBOARD_PID) }, + { USB_DEVICE(XSENS_VID, XSENS_MTW_PID) }, { USB_DEVICE(FTDI_VID, FTDI_OMNI1509) }, { USB_DEVICE(MOBILITY_VID, MOBILITY_USB_SERIAL_PID) }, { USB_DEVICE(FTDI_VID, FTDI_ACTIVE_ROBOTS_PID) }, @@ -716,7 +766,8 @@ { USB_DEVICE(FTDI_VID, FTDI_ACG_HFDUAL_PID) }, { USB_DEVICE(FTDI_VID, FTDI_YEI_SERVOCENTER31_PID) }, { USB_DEVICE(FTDI_VID, FTDI_THORLABS_PID) }, - { USB_DEVICE(TESTO_VID, TESTO_USB_INTERFACE_PID) }, + { USB_DEVICE(TESTO_VID, TESTO_1_PID) }, + { USB_DEVICE(TESTO_VID, TESTO_3_PID) }, { USB_DEVICE(FTDI_VID, FTDI_GAMMA_SCOUT_PID) }, { USB_DEVICE(FTDI_VID, FTDI_TACTRIX_OPENPORT_13M_PID) }, { USB_DEVICE(FTDI_VID, FTDI_TACTRIX_OPENPORT_13S_PID) }, @@ -733,6 +784,7 @@ { USB_DEVICE(FTDI_VID, FTDI_NDI_AURORA_SCU_PID), .driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk }, { USB_DEVICE(TELLDUS_VID, TELLDUS_TELLSTICK_PID) }, + { USB_DEVICE(NOVITUS_VID, NOVITUS_BONO_E_PID) }, { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_USB_S03_PID) }, { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_USB_59_PID) }, { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_USB_57A_PID) }, @@ -767,6 +819,8 @@ { USB_DEVICE(FTDI_VID, FTDI_ELSTER_UNICOM_PID) }, { USB_DEVICE(FTDI_VID, FTDI_PROPOX_JTAGCABLEII_PID) }, { USB_DEVICE(FTDI_VID, FTDI_PROPOX_ISPCABLEIII_PID) }, + { USB_DEVICE(FTDI_VID, CYBER_CORTEX_AV_PID), + .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, { USB_DEVICE(OLIMEX_VID, OLIMEX_ARM_USB_OCD_PID), .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, { USB_DEVICE(OLIMEX_VID, OLIMEX_ARM_USB_OCD_H_PID), @@ -784,6 +838,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 */ @@ -905,6 +960,68 @@ /* Crucible Devices */ { USB_DEVICE(FTDI_VID, FTDI_CT_COMET_PID) }, { USB_DEVICE(FTDI_VID, FTDI_Z3X_PID) }, + /* Cressi Devices */ + { USB_DEVICE(FTDI_VID, FTDI_CRESSI_PID) }, + /* Brainboxes Devices */ + { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_VX_001_PID) }, + { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_VX_012_PID) }, + { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_VX_023_PID) }, + { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_VX_034_PID) }, + { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_101_PID) }, + { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_160_1_PID) }, + { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_160_2_PID) }, + { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_160_3_PID) }, + { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_160_4_PID) }, + { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_160_5_PID) }, + { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_160_6_PID) }, + { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_160_7_PID) }, + { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_160_8_PID) }, + { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_257_PID) }, + { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_279_1_PID) }, + { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_279_2_PID) }, + { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_279_3_PID) }, + { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_279_4_PID) }, + { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_313_PID) }, + { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_324_PID) }, + { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_346_1_PID) }, + { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_346_2_PID) }, + { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_357_PID) }, + { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_606_1_PID) }, + { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_606_2_PID) }, + { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_606_3_PID) }, + { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_701_1_PID) }, + { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_701_2_PID) }, + { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_842_1_PID) }, + { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_842_2_PID) }, + { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_842_3_PID) }, + { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_842_4_PID) }, + /* ekey Devices */ + { USB_DEVICE(FTDI_VID, FTDI_EKEY_CONV_USB_PID) }, + /* Infineon Devices */ + { USB_DEVICE_INTERFACE_NUMBER(INFINEON_VID, INFINEON_TRIBOARD_PID, 1) }, + /* GE Healthcare devices */ + { USB_DEVICE(GE_HEALTHCARE_VID, GE_HEALTHCARE_NEMO_TRACKER_PID) }, + /* Active Research (Actisense) devices */ + { USB_DEVICE(FTDI_VID, ACTISENSE_NDC_PID) }, + { USB_DEVICE(FTDI_VID, ACTISENSE_USG_PID) }, + { USB_DEVICE(FTDI_VID, ACTISENSE_NGT_PID) }, + { USB_DEVICE(FTDI_VID, ACTISENSE_NGW_PID) }, + { USB_DEVICE(FTDI_VID, ACTISENSE_D9AC_PID) }, + { USB_DEVICE(FTDI_VID, ACTISENSE_D9AD_PID) }, + { USB_DEVICE(FTDI_VID, ACTISENSE_D9AE_PID) }, + { USB_DEVICE(FTDI_VID, ACTISENSE_D9AF_PID) }, + { USB_DEVICE(FTDI_VID, CHETCO_SEAGAUGE_PID) }, + { USB_DEVICE(FTDI_VID, CHETCO_SEASWITCH_PID) }, + { USB_DEVICE(FTDI_VID, CHETCO_SEASMART_NMEA2000_PID) }, + { USB_DEVICE(FTDI_VID, CHETCO_SEASMART_ETHERNET_PID) }, + { USB_DEVICE(FTDI_VID, CHETCO_SEASMART_WIFI_PID) }, + { 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 */ }; @@ -1527,14 +1644,17 @@ struct usb_device *udev = serial->dev; struct usb_interface *interface = serial->interface; - struct usb_endpoint_descriptor *ep_desc = &interface->cur_altsetting->endpoint[1].desc; + struct usb_endpoint_descriptor *ep_desc; unsigned num_endpoints; - int i; + unsigned i; num_endpoints = interface->cur_altsetting->desc.bNumEndpoints; dev_info(&udev->dev, "Number of endpoints %d\n", num_endpoints); + if (!num_endpoints) + return; + /* NOTE: some customers have programmed FT232R/FT245R devices * with an endpoint size of 0 - not good. In this case, we * want to override the endpoint descriptor setting and use a @@ -1796,8 +1916,12 @@ { struct usb_device *udev = serial->dev; - if ((udev->manufacturer && !strcmp(udev->manufacturer, "CALAO Systems")) || - (udev->product && !strcmp(udev->product, "BeagleBone/XDS100V2"))) + if (udev->manufacturer && !strcmp(udev->manufacturer, "CALAO Systems")) + return ftdi_jtag_probe(serial); + + if (udev->product && + (!strcmp(udev->product, "BeagleBone/XDS100V2") || + !strcmp(udev->product, "SNAP Connect E10"))) return ftdi_jtag_probe(serial); return 0; @@ -2124,10 +2248,20 @@ } /* - * All FTDI UART chips are limited to CS7/8. We won't pretend to + * All FTDI UART chips are limited to CS7/8. We shouldn't pretend to * support CS5/6 and revert the CSIZE setting instead. + * + * CS5 however is used to control some smartcard readers which abuse + * this limitation to switch modes. Original FTDI chips fall back to + * eight data bits. + * + * TODO: Implement a quirk to only allow this with mentioned + * readers. One I know of (Argolis Smartreader V1) + * returns "USB smartcard server" as iInterface string. + * The vendor didn't bother with a custom VID/PID of + * course. */ - if ((C_CSIZE(tty) != CS8) && (C_CSIZE(tty) != CS7)) { + if (C_CSIZE(tty) == CS6) { dev_warn(ddev, "requested CSIZE setting not supported\n"); termios->c_cflag &= ~CSIZE; @@ -2174,6 +2308,9 @@ urb_value |= FTDI_SIO_SET_DATA_PARITY_NONE; } switch (cflag & CSIZE) { + case CS5: + dev_dbg(ddev, "Setting CS5 quirk\n"); + break; case CS7: urb_value |= 7; dev_dbg(ddev, "Setting CS7\n"); --- linux-3.13.0.orig/drivers/usb/serial/ftdi_sio_ids.h +++ linux-3.13.0/drivers/usb/serial/ftdi_sio_ids.h @@ -30,8 +30,17 @@ /*** third-party PIDs (using FTDI_VID) ***/ +/* + * Certain versions of the official Windows FTDI driver reprogrammed + * counterfeit FTDI devices to PID 0. Support these devices anyway. + */ +#define FTDI_BRICK_PID 0x0000 + #define FTDI_LUMEL_PD12_PID 0x6002 +/* Cyber Cortex AV by Fabulous Silicon (http://fabuloussilicon.com) */ +#define CYBER_CORTEX_AV_PID 0x8698 + /* * Marvell OpenRD Base, Client * http://www.open-rd.org @@ -42,6 +51,8 @@ /* www.candapter.com Ewert Energy Systems CANdapter device */ #define FTDI_CANDAPTER_PID 0x9F80 /* Product Id */ +#define FTDI_BM_ATOM_NANO_PID 0xa559 /* Basic Micro ATOM Nano USB2Serial */ + /* * Texas Instruments XDS100v2 JTAG / BeagleBone A3 * http://processors.wiki.ti.com/index.php/XDS100 @@ -50,6 +61,7 @@ #define TI_XDS100V2_PID 0xa6d0 #define FTDI_NXTCAM_PID 0xABB8 /* NXTCam for Mindstorms NXT */ +#define FTDI_EV3CON_PID 0xABB9 /* Mindstorms EV3 Console Adapter */ /* US Interface Navigator (http://www.usinterface.com/) */ #define FTDI_USINT_CAT_PID 0xb810 /* Navigator CAT and 2nd PTT lines */ @@ -139,12 +151,20 @@ /* * Xsens Technologies BV products (http://www.xsens.com). */ -#define XSENS_CONVERTER_0_PID 0xD388 -#define XSENS_CONVERTER_1_PID 0xD389 +#define XSENS_VID 0x2639 +#define XSENS_AWINDA_STATION_PID 0x0101 +#define XSENS_AWINDA_DONGLE_PID 0x0102 +#define XSENS_MTW_PID 0x0200 /* Xsens MTw */ +#define XSENS_MTDEVBOARD_PID 0x0300 /* Motion Tracker Development Board */ +#define XSENS_CONVERTER_PID 0xD00D /* Xsens USB-serial converter */ + +/* Xsens devices using FTDI VID */ +#define XSENS_CONVERTER_0_PID 0xD388 /* Xsens USB converter */ +#define XSENS_CONVERTER_1_PID 0xD389 /* Xsens Wireless Receiver */ #define XSENS_CONVERTER_2_PID 0xD38A -#define XSENS_CONVERTER_3_PID 0xD38B -#define XSENS_CONVERTER_4_PID 0xD38C -#define XSENS_CONVERTER_5_PID 0xD38D +#define XSENS_CONVERTER_3_PID 0xD38B /* Xsens USB-serial converter */ +#define XSENS_CONVERTER_4_PID 0xD38C /* Xsens Wireless Receiver */ +#define XSENS_CONVERTER_5_PID 0xD38D /* Xsens Awinda Station */ #define XSENS_CONVERTER_6_PID 0xD38E #define XSENS_CONVERTER_7_PID 0xD38F @@ -363,6 +383,12 @@ /* Sprog II (Andrew Crosland's SprogII DCC interface) */ #define FTDI_SPROG_II 0xF0C8 +/* + * Two of the Tagsys RFID Readers + */ +#define FTDI_TAGSYS_LP101_PID 0xF0E9 /* Tagsys L-P101 RFID*/ +#define FTDI_TAGSYS_P200X_PID 0xF0EE /* Tagsys Medio P200x RFID*/ + /* an infrared receiver for user access control with IR tags */ #define FTDI_PIEGROUP_PID 0xF208 /* Product Id */ @@ -531,6 +557,25 @@ */ #define FTDI_TIAO_UMPA_PID 0x8a98 /* TIAO/DIYGADGET USB Multi-Protocol Adapter */ +/* + * NovaTech product ids (FTDI_VID) + */ +#define FTDI_NT_ORIONLXM_PID 0x7c90 /* OrionLXm Substation Automation Platform */ + +/* + * Synapse Wireless product ids (FTDI_VID) + * http://www.synapse-wireless.com + */ +#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 **/ @@ -570,6 +615,13 @@ */ #define RATOC_VENDOR_ID 0x0584 #define RATOC_PRODUCT_ID_USB60F 0xb020 +#define RATOC_PRODUCT_ID_SCU18 0xb03a + +/* + * Infineon Technologies + */ +#define INFINEON_VID 0x058b +#define INFINEON_TRIBOARD_PID 0x0028 /* DAS JTAG TriBoard TC1798 V1.0 */ /* * Acton Research Corp. @@ -786,7 +838,8 @@ * Submitted by Colin Leroy */ #define TESTO_VID 0x128D -#define TESTO_USB_INTERFACE_PID 0x0001 +#define TESTO_1_PID 0x0001 +#define TESTO_3_PID 0x0003 /* * Mobility Electronics products. @@ -813,6 +866,20 @@ #define TELLDUS_TELLSTICK_PID 0x0C30 /* RF control dongle 433 MHz using FT232RL */ /* + * NOVITUS printers + */ +#define NOVITUS_VID 0x1a28 +#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 */ @@ -886,8 +953,8 @@ #define BAYER_CONTOUR_CABLE_PID 0x6001 /* - * The following are the values for the Matrix Orbital FTDI Range - * Anything in this range will use an FT232RL. + * Matrix Orbital Intelligent USB displays. + * http://www.matrixorbital.com */ #define MTXORB_VID 0x1B3D #define MTXORB_FTDI_RANGE_0100_PID 0x0100 @@ -1146,8 +1213,39 @@ #define MTXORB_FTDI_RANGE_01FD_PID 0x01FD #define MTXORB_FTDI_RANGE_01FE_PID 0x01FE #define MTXORB_FTDI_RANGE_01FF_PID 0x01FF - - +#define MTXORB_FTDI_RANGE_4701_PID 0x4701 +#define MTXORB_FTDI_RANGE_9300_PID 0x9300 +#define MTXORB_FTDI_RANGE_9301_PID 0x9301 +#define MTXORB_FTDI_RANGE_9302_PID 0x9302 +#define MTXORB_FTDI_RANGE_9303_PID 0x9303 +#define MTXORB_FTDI_RANGE_9304_PID 0x9304 +#define MTXORB_FTDI_RANGE_9305_PID 0x9305 +#define MTXORB_FTDI_RANGE_9306_PID 0x9306 +#define MTXORB_FTDI_RANGE_9307_PID 0x9307 +#define MTXORB_FTDI_RANGE_9308_PID 0x9308 +#define MTXORB_FTDI_RANGE_9309_PID 0x9309 +#define MTXORB_FTDI_RANGE_930A_PID 0x930A +#define MTXORB_FTDI_RANGE_930B_PID 0x930B +#define MTXORB_FTDI_RANGE_930C_PID 0x930C +#define MTXORB_FTDI_RANGE_930D_PID 0x930D +#define MTXORB_FTDI_RANGE_930E_PID 0x930E +#define MTXORB_FTDI_RANGE_930F_PID 0x930F +#define MTXORB_FTDI_RANGE_9310_PID 0x9310 +#define MTXORB_FTDI_RANGE_9311_PID 0x9311 +#define MTXORB_FTDI_RANGE_9312_PID 0x9312 +#define MTXORB_FTDI_RANGE_9313_PID 0x9313 +#define MTXORB_FTDI_RANGE_9314_PID 0x9314 +#define MTXORB_FTDI_RANGE_9315_PID 0x9315 +#define MTXORB_FTDI_RANGE_9316_PID 0x9316 +#define MTXORB_FTDI_RANGE_9317_PID 0x9317 +#define MTXORB_FTDI_RANGE_9318_PID 0x9318 +#define MTXORB_FTDI_RANGE_9319_PID 0x9319 +#define MTXORB_FTDI_RANGE_931A_PID 0x931A +#define MTXORB_FTDI_RANGE_931B_PID 0x931B +#define MTXORB_FTDI_RANGE_931C_PID 0x931C +#define MTXORB_FTDI_RANGE_931D_PID 0x931D +#define MTXORB_FTDI_RANGE_931E_PID 0x931E +#define MTXORB_FTDI_RANGE_931F_PID 0x931F /* * The Mobility Lab (TML) @@ -1313,3 +1411,77 @@ * Manufacturer: Smart GSM Team */ #define FTDI_Z3X_PID 0x0011 + +/* + * Product: Cressi PC Interface + * Manufacturer: Cressi + */ +#define FTDI_CRESSI_PID 0x87d0 + +/* + * Brainboxes devices + */ +#define BRAINBOXES_VID 0x05d1 +#define BRAINBOXES_VX_001_PID 0x1001 /* VX-001 ExpressCard 1 Port RS232 */ +#define BRAINBOXES_VX_012_PID 0x1002 /* VX-012 ExpressCard 2 Port RS232 */ +#define BRAINBOXES_VX_023_PID 0x1003 /* VX-023 ExpressCard 1 Port RS422/485 */ +#define BRAINBOXES_VX_034_PID 0x1004 /* VX-034 ExpressCard 2 Port RS422/485 */ +#define BRAINBOXES_US_101_PID 0x1011 /* US-101 1xRS232 */ +#define BRAINBOXES_US_324_PID 0x1013 /* US-324 1xRS422/485 1Mbaud */ +#define BRAINBOXES_US_606_1_PID 0x2001 /* US-606 6 Port RS232 Serial Port 1 and 2 */ +#define BRAINBOXES_US_606_2_PID 0x2002 /* US-606 6 Port RS232 Serial Port 3 and 4 */ +#define BRAINBOXES_US_606_3_PID 0x2003 /* US-606 6 Port RS232 Serial Port 4 and 6 */ +#define BRAINBOXES_US_701_1_PID 0x2011 /* US-701 4xRS232 1Mbaud Port 1 and 2 */ +#define BRAINBOXES_US_701_2_PID 0x2012 /* US-701 4xRS422 1Mbaud Port 3 and 4 */ +#define BRAINBOXES_US_279_1_PID 0x2021 /* US-279 8xRS422 1Mbaud Port 1 and 2 */ +#define BRAINBOXES_US_279_2_PID 0x2022 /* US-279 8xRS422 1Mbaud Port 3 and 4 */ +#define BRAINBOXES_US_279_3_PID 0x2023 /* US-279 8xRS422 1Mbaud Port 5 and 6 */ +#define BRAINBOXES_US_279_4_PID 0x2024 /* US-279 8xRS422 1Mbaud Port 7 and 8 */ +#define BRAINBOXES_US_346_1_PID 0x3011 /* US-346 4xRS422/485 1Mbaud Port 1 and 2 */ +#define BRAINBOXES_US_346_2_PID 0x3012 /* US-346 4xRS422/485 1Mbaud Port 3 and 4 */ +#define BRAINBOXES_US_257_PID 0x5001 /* US-257 2xRS232 1Mbaud */ +#define BRAINBOXES_US_313_PID 0x6001 /* US-313 2xRS422/485 1Mbaud */ +#define BRAINBOXES_US_357_PID 0x7001 /* US_357 1xRS232/422/485 */ +#define BRAINBOXES_US_842_1_PID 0x8001 /* US-842 8xRS422/485 1Mbaud Port 1 and 2 */ +#define BRAINBOXES_US_842_2_PID 0x8002 /* US-842 8xRS422/485 1Mbaud Port 3 and 4 */ +#define BRAINBOXES_US_842_3_PID 0x8003 /* US-842 8xRS422/485 1Mbaud Port 5 and 6 */ +#define BRAINBOXES_US_842_4_PID 0x8004 /* US-842 8xRS422/485 1Mbaud Port 7 and 8 */ +#define BRAINBOXES_US_160_1_PID 0x9001 /* US-160 16xRS232 1Mbaud Port 1 and 2 */ +#define BRAINBOXES_US_160_2_PID 0x9002 /* US-160 16xRS232 1Mbaud Port 3 and 4 */ +#define BRAINBOXES_US_160_3_PID 0x9003 /* US-160 16xRS232 1Mbaud Port 5 and 6 */ +#define BRAINBOXES_US_160_4_PID 0x9004 /* US-160 16xRS232 1Mbaud Port 7 and 8 */ +#define BRAINBOXES_US_160_5_PID 0x9005 /* US-160 16xRS232 1Mbaud Port 9 and 10 */ +#define BRAINBOXES_US_160_6_PID 0x9006 /* US-160 16xRS232 1Mbaud Port 11 and 12 */ +#define BRAINBOXES_US_160_7_PID 0x9007 /* US-160 16xRS232 1Mbaud Port 13 and 14 */ +#define BRAINBOXES_US_160_8_PID 0x9008 /* US-160 16xRS232 1Mbaud Port 15 and 16 */ + +/* + * ekey biometric systems GmbH (http://ekey.net/) + */ +#define FTDI_EKEY_CONV_USB_PID 0xCB08 /* Converter USB */ + +/* + * GE Healthcare devices + */ +#define GE_HEALTHCARE_VID 0x1901 +#define GE_HEALTHCARE_NEMO_TRACKER_PID 0x0015 + +/* + * Active Research (Actisense) devices + */ +#define ACTISENSE_NDC_PID 0xD9A8 /* NDC USB Serial Adapter */ +#define ACTISENSE_USG_PID 0xD9A9 /* USG USB Serial Adapter */ +#define ACTISENSE_NGT_PID 0xD9AA /* NGT NMEA2000 Interface */ +#define ACTISENSE_NGW_PID 0xD9AB /* NGW NMEA2000 Gateway */ +#define ACTISENSE_D9AC_PID 0xD9AC /* Actisense Reserved */ +#define ACTISENSE_D9AD_PID 0xD9AD /* Actisense Reserved */ +#define ACTISENSE_D9AE_PID 0xD9AE /* Actisense Reserved */ +#define ACTISENSE_D9AF_PID 0xD9AF /* Actisense Reserved */ +#define CHETCO_SEAGAUGE_PID 0xA548 /* SeaGauge USB Adapter */ +#define CHETCO_SEASWITCH_PID 0xA549 /* SeaSwitch USB Adapter */ +#define CHETCO_SEASMART_NMEA2000_PID 0xA54A /* SeaSmart NMEA2000 Gateway */ +#define CHETCO_SEASMART_ETHERNET_PID 0xA54B /* SeaSmart Ethernet Gateway */ +#define CHETCO_SEASMART_WIFI_PID 0xA5AC /* SeaSmart Wifi Gateway */ +#define CHETCO_SEASMART_DISPLAY_PID 0xA5AD /* SeaSmart NMEA2000 Display */ +#define CHETCO_SEASMART_LITE_PID 0xA5AE /* SeaSmart Lite USB Adapter */ +#define CHETCO_SEASMART_ANALOG_PID 0xA5AF /* SeaSmart Analog Adapter */ --- linux-3.13.0.orig/drivers/usb/serial/generic.c +++ linux-3.13.0/drivers/usb/serial/generic.c @@ -258,7 +258,8 @@ * character or at least one jiffy. */ period = max_t(unsigned long, (10 * HZ / bps), 1); - period = min_t(unsigned long, period, timeout); + if (timeout) + period = min_t(unsigned long, period, timeout); dev_dbg(&port->dev, "%s - timeout = %u ms, period = %u ms\n", __func__, jiffies_to_msecs(timeout), @@ -268,7 +269,7 @@ schedule_timeout_interruptible(period); if (signal_pending(current)) break; - if (time_after(jiffies, expire)) + if (timeout && time_after(jiffies, expire)) break; } } --- linux-3.13.0.orig/drivers/usb/serial/io_ti.c +++ linux-3.13.0/drivers/usb/serial/io_ti.c @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -281,7 +282,7 @@ { int status = 0; __u8 read_length; - __be16 be_start_address; + u16 be_start_address; dev_dbg(&dev->dev, "%s - @ %x for %d\n", __func__, start_address, length); @@ -297,10 +298,14 @@ if (read_length > 1) { dev_dbg(&dev->dev, "%s - @ %x for %d\n", __func__, start_address, read_length); } - be_start_address = cpu_to_be16(start_address); + /* + * NOTE: Must use swab as wIndex is sent in little-endian + * byte order regardless of host byte order. + */ + be_start_address = swab16((u16)start_address); status = ti_vread_sync(dev, UMPC_MEMORY_READ, (__u16)address_type, - (__force __u16)be_start_address, + be_start_address, buffer, read_length); if (status) { @@ -397,7 +402,7 @@ struct device *dev = &serial->serial->dev->dev; int status = 0; int write_length; - __be16 be_start_address; + u16 be_start_address; /* We can only send a maximum of 1 aligned byte page at a time */ @@ -412,11 +417,16 @@ __func__, start_address, write_length); usb_serial_debug_data(dev, __func__, write_length, buffer); - /* Write first page */ - be_start_address = cpu_to_be16(start_address); + /* + * Write first page. + * + * NOTE: Must use swab as wIndex is sent in little-endian byte order + * regardless of host byte order. + */ + be_start_address = swab16((u16)start_address); status = ti_vsend_sync(serial->serial->dev, UMPC_MEMORY_WRITE, (__u16)address_type, - (__force __u16)be_start_address, + be_start_address, buffer, write_length); if (status) { dev_dbg(dev, "%s - ERROR %d\n", __func__, status); @@ -439,11 +449,16 @@ __func__, start_address, write_length); usb_serial_debug_data(dev, __func__, write_length, buffer); - /* Write next page */ - be_start_address = cpu_to_be16(start_address); + /* + * Write next page. + * + * NOTE: Must use swab as wIndex is sent in little-endian byte + * order regardless of host byte order. + */ + be_start_address = swab16((u16)start_address); status = ti_vsend_sync(serial->serial->dev, UMPC_MEMORY_WRITE, (__u16)address_type, - (__force __u16)be_start_address, + be_start_address, buffer, write_length); if (status) { dev_err(dev, "%s - ERROR %d\n", __func__, status); @@ -590,8 +605,8 @@ if (rom_desc->Type == desc_type) return start_address; - start_address = start_address + sizeof(struct ti_i2c_desc) - + rom_desc->Size; + start_address = start_address + sizeof(struct ti_i2c_desc) + + le16_to_cpu(rom_desc->Size); } while ((start_address < TI_MAX_I2C_SIZE) && rom_desc->Type); @@ -604,7 +619,7 @@ __u16 i; __u8 cs = 0; - for (i = 0; i < rom_desc->Size; i++) + for (i = 0; i < le16_to_cpu(rom_desc->Size); i++) cs = (__u8)(cs + buffer[i]); if (cs != rom_desc->CheckSum) { @@ -658,7 +673,7 @@ break; if ((start_address + sizeof(struct ti_i2c_desc) + - rom_desc->Size) > TI_MAX_I2C_SIZE) { + le16_to_cpu(rom_desc->Size)) > TI_MAX_I2C_SIZE) { status = -ENODEV; dev_dbg(dev, "%s - structure too big, erroring out.\n", __func__); break; @@ -673,7 +688,8 @@ /* Read the descriptor data */ status = read_rom(serial, start_address + sizeof(struct ti_i2c_desc), - rom_desc->Size, buffer); + le16_to_cpu(rom_desc->Size), + buffer); if (status) break; @@ -682,7 +698,7 @@ break; } start_address = start_address + sizeof(struct ti_i2c_desc) + - rom_desc->Size; + le16_to_cpu(rom_desc->Size); } while ((rom_desc->Type != I2C_DESC_TYPE_ION) && (start_address < TI_MAX_I2C_SIZE)); @@ -721,7 +737,7 @@ /* Read the descriptor data */ status = read_rom(serial, start_address+sizeof(struct ti_i2c_desc), - rom_desc->Size, buffer); + le16_to_cpu(rom_desc->Size), buffer); if (status) goto exit; @@ -816,7 +832,7 @@ firmware_rec = (struct ti_i2c_firmware_rec*)i2c_header->Data; i2c_header->Type = I2C_DESC_TYPE_FIRMWARE_BLANK; - i2c_header->Size = (__u16)buffer_size; + i2c_header->Size = cpu_to_le16(buffer_size); i2c_header->CheckSum = cs; firmware_rec->Ver_Major = OperationalMajorVersion; firmware_rec->Ver_Minor = OperationalMinorVersion; --- linux-3.13.0.orig/drivers/usb/serial/io_usbvend.h +++ linux-3.13.0/drivers/usb/serial/io_usbvend.h @@ -594,7 +594,7 @@ struct ti_i2c_desc { __u8 Type; // Type of descriptor - __u16 Size; // Size of data only not including header + __le16 Size; // Size of data only not including header __u8 CheckSum; // Checksum (8 bit sum of data only) __u8 Data[0]; // Data starts here } __attribute__((packed)); --- linux-3.13.0.orig/drivers/usb/serial/ipaq.c +++ linux-3.13.0/drivers/usb/serial/ipaq.c @@ -532,7 +532,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-3.13.0.orig/drivers/usb/serial/keyspan.c +++ linux-3.13.0/drivers/usb/serial/keyspan.c @@ -312,24 +312,30 @@ if ((data[0] & 0x80) == 0) { /* no errors on individual bytes, only possible overrun err */ - if (data[0] & RXERROR_OVERRUN) - err = TTY_OVERRUN; - else - err = 0; + if (data[0] & RXERROR_OVERRUN) { + tty_insert_flip_char(&port->port, 0, + TTY_OVERRUN); + } for (i = 1; i < urb->actual_length ; ++i) - tty_insert_flip_char(&port->port, data[i], err); + tty_insert_flip_char(&port->port, data[i], + TTY_NORMAL); } else { /* some bytes had errors, every byte has status */ dev_dbg(&port->dev, "%s - RX error!!!!\n", __func__); for (i = 0; i + 1 < urb->actual_length; i += 2) { - int stat = data[i], flag = 0; - if (stat & RXERROR_OVERRUN) - flag |= TTY_OVERRUN; - if (stat & RXERROR_FRAMING) - flag |= TTY_FRAME; - if (stat & RXERROR_PARITY) - flag |= TTY_PARITY; + int stat = data[i]; + int flag = TTY_NORMAL; + + if (stat & RXERROR_OVERRUN) { + tty_insert_flip_char(&port->port, 0, + TTY_OVERRUN); + } /* XXX should handle break (0x10) */ + if (stat & RXERROR_PARITY) + flag = TTY_PARITY; + else if (stat & RXERROR_FRAMING) + flag = TTY_FRAME; + tty_insert_flip_char(&port->port, data[i+1], flag); } @@ -416,6 +422,8 @@ } port = serial->port[msg->port]; p_priv = usb_get_serial_port_data(port); + if (!p_priv) + goto resubmit; /* Update handshaking pin state information */ old_dcd_state = p_priv->dcd_state; @@ -426,7 +434,7 @@ if (old_dcd_state != p_priv->dcd_state) tty_port_tty_hangup(&port->port, true); - +resubmit: /* Resubmit urb so we continue receiving */ err = usb_submit_urb(urb, GFP_ATOMIC); if (err != 0) @@ -536,6 +544,8 @@ } port = serial->port[msg->port]; p_priv = usb_get_serial_port_data(port); + if (!p_priv) + goto resubmit; /* Update handshaking pin state information */ old_dcd_state = p_priv->dcd_state; @@ -546,7 +556,7 @@ if (old_dcd_state != p_priv->dcd_state && old_dcd_state) tty_port_tty_hangup(&port->port, true); - +resubmit: /* Resubmit urb so we continue receiving */ err = usb_submit_urb(urb, GFP_ATOMIC); if (err != 0) @@ -619,6 +629,8 @@ } port = serial->port[msg->portNumber]; p_priv = usb_get_serial_port_data(port); + if (!p_priv) + goto resubmit; /* Update handshaking pin state information */ old_dcd_state = p_priv->dcd_state; @@ -629,7 +641,7 @@ if (old_dcd_state != p_priv->dcd_state && old_dcd_state) tty_port_tty_hangup(&port->port, true); - +resubmit: /* Resubmit urb so we continue receiving */ err = usb_submit_urb(urb, GFP_ATOMIC); if (err != 0) @@ -667,14 +679,19 @@ } else { /* some bytes had errors, every byte has status */ for (i = 0; i + 1 < urb->actual_length; i += 2) { - int stat = data[i], flag = 0; - if (stat & RXERROR_OVERRUN) - flag |= TTY_OVERRUN; - if (stat & RXERROR_FRAMING) - flag |= TTY_FRAME; - if (stat & RXERROR_PARITY) - flag |= TTY_PARITY; + int stat = data[i]; + int flag = TTY_NORMAL; + + if (stat & RXERROR_OVERRUN) { + tty_insert_flip_char(&port->port, 0, + TTY_OVERRUN); + } /* XXX should handle break (0x10) */ + if (stat & RXERROR_PARITY) + flag = TTY_PARITY; + else if (stat & RXERROR_FRAMING) + flag = TTY_FRAME; + tty_insert_flip_char(&port->port, data[i+1], flag); } @@ -731,15 +748,19 @@ */ for (x = 0; x + 1 < len && i + 1 < urb->actual_length; x += 2) { - int stat = data[i], flag = 0; + int stat = data[i]; + int flag = TTY_NORMAL; - if (stat & RXERROR_OVERRUN) - flag |= TTY_OVERRUN; - if (stat & RXERROR_FRAMING) - flag |= TTY_FRAME; - if (stat & RXERROR_PARITY) - flag |= TTY_PARITY; + if (stat & RXERROR_OVERRUN) { + tty_insert_flip_char(&port->port, 0, + TTY_OVERRUN); + } /* XXX should handle break (0x10) */ + if (stat & RXERROR_PARITY) + flag = TTY_PARITY; + else if (stat & RXERROR_FRAMING) + flag = TTY_FRAME; + tty_insert_flip_char(&port->port, data[i+1], flag); i += 2; @@ -791,25 +812,31 @@ if ((data[0] & 0x80) == 0) { /* no errors on individual bytes, only possible overrun err*/ - if (data[0] & RXERROR_OVERRUN) - err = TTY_OVERRUN; - else - err = 0; + if (data[0] & RXERROR_OVERRUN) { + tty_insert_flip_char(&port->port, 0, + TTY_OVERRUN); + } for (i = 1; i < urb->actual_length ; ++i) tty_insert_flip_char(&port->port, - data[i], err); + data[i], TTY_NORMAL); } else { /* some bytes had errors, every byte has status */ dev_dbg(&port->dev, "%s - RX error!!!!\n", __func__); for (i = 0; i + 1 < urb->actual_length; i += 2) { - int stat = data[i], flag = 0; - if (stat & RXERROR_OVERRUN) - flag |= TTY_OVERRUN; - if (stat & RXERROR_FRAMING) - flag |= TTY_FRAME; - if (stat & RXERROR_PARITY) - flag |= TTY_PARITY; + int stat = data[i]; + int flag = TTY_NORMAL; + + if (stat & RXERROR_OVERRUN) { + tty_insert_flip_char( + &port->port, 0, + TTY_OVERRUN); + } /* XXX should handle break (0x10) */ + if (stat & RXERROR_PARITY) + flag = TTY_PARITY; + else if (stat & RXERROR_FRAMING) + flag = TTY_FRAME; + tty_insert_flip_char(&port->port, data[i+1], flag); } @@ -852,6 +879,8 @@ port = serial->port[0]; p_priv = usb_get_serial_port_data(port); + if (!p_priv) + goto resubmit; /* Update handshaking pin state information */ old_dcd_state = p_priv->dcd_state; @@ -862,7 +891,7 @@ if (old_dcd_state != p_priv->dcd_state && old_dcd_state) tty_port_tty_hangup(&port->port, true); - +resubmit: /* Resubmit urb so we continue receiving */ err = usb_submit_urb(urb, GFP_ATOMIC); if (err != 0) @@ -923,6 +952,8 @@ port = serial->port[msg->port]; p_priv = usb_get_serial_port_data(port); + if (!p_priv) + goto resubmit; /* Update handshaking pin state information */ old_dcd_state = p_priv->dcd_state; @@ -931,7 +962,7 @@ if (old_dcd_state != p_priv->dcd_state && old_dcd_state) tty_port_tty_hangup(&port->port, true); - +resubmit: /* Resubmit urb so we continue receiving */ err = usb_submit_urb(urb, GFP_ATOMIC); if (err != 0) --- linux-3.13.0.orig/drivers/usb/serial/keyspan_pda.c +++ linux-3.13.0/drivers/usb/serial/keyspan_pda.c @@ -62,6 +62,7 @@ /* For Xircom PGSDB9 and older Entregra version of the same device */ #define XIRCOM_VENDOR_ID 0x085a #define XIRCOM_FAKE_ID 0x8027 +#define XIRCOM_FAKE_ID_2 0x8025 /* "PGMFHUB" serial */ #define ENTREGRA_VENDOR_ID 0x1645 #define ENTREGRA_FAKE_ID 0x8093 @@ -71,6 +72,7 @@ #endif #ifdef XIRCOM { USB_DEVICE(XIRCOM_VENDOR_ID, XIRCOM_FAKE_ID) }, + { USB_DEVICE(XIRCOM_VENDOR_ID, XIRCOM_FAKE_ID_2) }, { USB_DEVICE(ENTREGRA_VENDOR_ID, ENTREGRA_FAKE_ID) }, #endif { USB_DEVICE(KEYSPAN_VENDOR_ID, KEYSPAN_PDA_ID) }, @@ -94,6 +96,7 @@ #ifdef XIRCOM static const struct usb_device_id id_table_fake_xircom[] = { { USB_DEVICE(XIRCOM_VENDOR_ID, XIRCOM_FAKE_ID) }, + { USB_DEVICE(XIRCOM_VENDOR_ID, XIRCOM_FAKE_ID_2) }, { USB_DEVICE(ENTREGRA_VENDOR_ID, ENTREGRA_FAKE_ID) }, { } }; --- linux-3.13.0.orig/drivers/usb/serial/kobil_sct.c +++ linux-3.13.0/drivers/usb/serial/kobil_sct.c @@ -336,7 +336,8 @@ port->interrupt_out_urb->transfer_buffer_length = length; priv->cur_pos = priv->cur_pos + length; - result = usb_submit_urb(port->interrupt_out_urb, GFP_NOIO); + result = usb_submit_urb(port->interrupt_out_urb, + GFP_ATOMIC); dev_dbg(&port->dev, "%s - Send write URB returns: %i\n", __func__, result); todo = priv->filled - priv->cur_pos; @@ -351,7 +352,7 @@ if (priv->device_type == KOBIL_ADAPTER_B_PRODUCT_ID || priv->device_type == KOBIL_ADAPTER_K_PRODUCT_ID) { result = usb_submit_urb(port->interrupt_in_urb, - GFP_NOIO); + GFP_ATOMIC); dev_dbg(&port->dev, "%s - Send read URB returns: %i\n", __func__, result); } } --- linux-3.13.0.orig/drivers/usb/serial/mct_u232.c +++ linux-3.13.0/drivers/usb/serial/mct_u232.c @@ -377,14 +377,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-3.13.0.orig/drivers/usb/serial/opticon.c +++ linux-3.13.0/drivers/usb/serial/opticon.c @@ -219,7 +219,7 @@ /* The conncected devices do not have a bulk write endpoint, * to transmit data to de barcode device the control endpoint is used */ - dr = kmalloc(sizeof(struct usb_ctrlrequest), GFP_NOIO); + dr = kmalloc(sizeof(struct usb_ctrlrequest), GFP_ATOMIC); if (!dr) { dev_err(&port->dev, "out of memory\n"); count = -ENOMEM; --- linux-3.13.0.orig/drivers/usb/serial/option.c +++ linux-3.13.0/drivers/usb/serial/option.c @@ -161,6 +161,8 @@ #define NOVATELWIRELESS_PRODUCT_HSPA_EMBEDDED_FULLSPEED 0x9000 #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 @@ -233,9 +235,34 @@ #define QUALCOMM_VENDOR_ID 0x05C6 +#define SIERRA_VENDOR_ID 0x1199 + #define CMOTECH_VENDOR_ID 0x16d8 -#define CMOTECH_PRODUCT_6008 0x6008 -#define CMOTECH_PRODUCT_6280 0x6280 +#define CMOTECH_PRODUCT_6001 0x6001 +#define CMOTECH_PRODUCT_CMU_300 0x6002 +#define CMOTECH_PRODUCT_6003 0x6003 +#define CMOTECH_PRODUCT_6004 0x6004 +#define CMOTECH_PRODUCT_6005 0x6005 +#define CMOTECH_PRODUCT_CGU_628A 0x6006 +#define CMOTECH_PRODUCT_CHE_628S 0x6007 +#define CMOTECH_PRODUCT_CMU_301 0x6008 +#define CMOTECH_PRODUCT_CHU_628 0x6280 +#define CMOTECH_PRODUCT_CHU_628S 0x6281 +#define CMOTECH_PRODUCT_CDU_680 0x6803 +#define CMOTECH_PRODUCT_CDU_685A 0x6804 +#define CMOTECH_PRODUCT_CHU_720S 0x7001 +#define CMOTECH_PRODUCT_7002 0x7002 +#define CMOTECH_PRODUCT_CHU_629K 0x7003 +#define CMOTECH_PRODUCT_7004 0x7004 +#define CMOTECH_PRODUCT_7005 0x7005 +#define CMOTECH_PRODUCT_CGU_629 0x7006 +#define CMOTECH_PRODUCT_CHU_629S 0x700a +#define CMOTECH_PRODUCT_CHU_720I 0x7211 +#define CMOTECH_PRODUCT_7212 0x7212 +#define CMOTECH_PRODUCT_7213 0x7213 +#define CMOTECH_PRODUCT_7251 0x7251 +#define CMOTECH_PRODUCT_7252 0x7252 +#define CMOTECH_PRODUCT_7253 0x7253 #define TELIT_VENDOR_ID 0x1bc7 #define TELIT_PRODUCT_UC864E 0x1003 @@ -243,15 +270,28 @@ #define TELIT_PRODUCT_CC864_DUAL 0x1005 #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 /* ZTE PRODUCTS */ #define ZTE_VENDOR_ID 0x19d2 #define ZTE_PRODUCT_MF622 0x0001 #define ZTE_PRODUCT_MF628 0x0015 #define ZTE_PRODUCT_MF626 0x0031 -#define ZTE_PRODUCT_MC2718 0xffe8 +#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_CDMA_TECH 0xfffe +#define ZTE_PRODUCT_AC8710T 0xffff +#define ZTE_PRODUCT_MC2718 0xffe8 +#define ZTE_PRODUCT_AD3812 0xffeb +#define ZTE_PRODUCT_MC2716 0xffed #define BENQ_VENDOR_ID 0x04a5 #define BENQ_PRODUCT_H10 0x4068 @@ -278,6 +318,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 @@ -286,6 +327,7 @@ #define ALCATEL_PRODUCT_X060S_X200 0x0000 #define ALCATEL_PRODUCT_X220_X500D 0x0017 #define ALCATEL_PRODUCT_L100V 0x011e +#define ALCATEL_PRODUCT_L800MA 0x0203 #define PIRELLI_VENDOR_ID 0x1266 #define PIRELLI_PRODUCT_C100_1 0x1002 @@ -319,12 +361,20 @@ /* 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 /* Zoom */ #define ZOOM_PRODUCT_4597 0x9607 +/* SpeedUp SU9800 usb 3g modem */ +#define SPEEDUP_PRODUCT_SU9800 0x9800 + /* Haier products */ #define HAIER_VENDOR_ID 0x201e +#define HAIER_PRODUCT_CE81B 0x10f8 #define HAIER_PRODUCT_CE100 0x2009 /* Cinterion (formerly Siemens) products */ @@ -343,8 +393,13 @@ /* Olivetti products */ #define OLIVETTI_VENDOR_ID 0x0b3c #define OLIVETTI_PRODUCT_OLICARD100 0xc000 +#define OLIVETTI_PRODUCT_OLICARD120 0xc001 +#define OLIVETTI_PRODUCT_OLICARD140 0xc002 #define OLIVETTI_PRODUCT_OLICARD145 0xc003 +#define OLIVETTI_PRODUCT_OLICARD155 0xc004 #define OLIVETTI_PRODUCT_OLICARD200 0xc005 +#define OLIVETTI_PRODUCT_OLICARD160 0xc00a +#define OLIVETTI_PRODUCT_OLICARD500 0xc00b /* Celot products */ #define CELOT_VENDOR_ID 0x211f @@ -457,6 +512,10 @@ #define INOVIA_VENDOR_ID 0x20a6 #define INOVIA_SEW858 0x1105 +/* VIA Telecom */ +#define VIATELECOM_VENDOR_ID 0x15eb +#define VIATELECOM_PRODUCT_CDS7 0x0001 + /* some devices interfaces need special handling due to a number of reasons */ enum option_blacklist_reason { OPTION_BLACKLIST_NONE = 0, @@ -464,7 +523,7 @@ OPTION_BLACKLIST_RESERVED_IF = 2 }; -#define MAX_BL_NUM 8 +#define MAX_BL_NUM 11 struct option_blacklist_info { /* bitfield of interface numbers for OPTION_BLACKLIST_SENDSETUP */ const unsigned long sendsetup; @@ -476,6 +535,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), @@ -490,14 +554,38 @@ .reserved = BIT(4), }; +static const struct option_blacklist_info zte_ad3812_z_blacklist = { + .sendsetup = BIT(0) | BIT(1) | BIT(2), +}; + static const struct option_blacklist_info zte_mc2718_z_blacklist = { .sendsetup = BIT(1) | BIT(2) | BIT(3) | BIT(4), }; +static const struct option_blacklist_info zte_mc2716_z_blacklist = { + .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), }; +static const struct option_blacklist_info net_intf0_blacklist = { + .reserved = BIT(0), +}; + static const struct option_blacklist_info net_intf1_blacklist = { .reserved = BIT(1), }; @@ -531,11 +619,35 @@ .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), +}; + static const struct option_blacklist_info telit_le920_blacklist = { .sendsetup = BIT(0), .reserved = BIT(1) | BIT(5), }; +static const struct option_blacklist_info sierra_mc73xx_blacklist = { + .sendsetup = BIT(0) | BIT(2), + .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) }, @@ -979,6 +1091,8 @@ /* Novatel Ovation MC551 a.k.a. Verizon USB551L */ { 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) }, @@ -1028,16 +1142,71 @@ { USB_DEVICE_INTERFACE_CLASS(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_1012, 0xff) }, { 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 */ - { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6280) }, /* BP3-USB & BP3-EXT HSDPA */ - { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6008) }, + { USB_DEVICE_INTERFACE_CLASS(SIERRA_VENDOR_ID, 0x68c0, 0xff), + .driver_info = (kernel_ulong_t)&sierra_mc73xx_blacklist }, /* MC73xx */ + { 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), + .driver_info = (kernel_ulong_t)&net_intf0_blacklist }, + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6004) }, + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6005) }, + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CGU_628A) }, + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CHE_628S), + .driver_info = (kernel_ulong_t)&net_intf0_blacklist }, + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CMU_301), + .driver_info = (kernel_ulong_t)&net_intf0_blacklist }, + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CHU_628), + .driver_info = (kernel_ulong_t)&net_intf0_blacklist }, + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CHU_628S) }, + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CDU_680) }, + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CDU_685A) }, + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CHU_720S), + .driver_info = (kernel_ulong_t)&net_intf0_blacklist }, + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_7002), + .driver_info = (kernel_ulong_t)&net_intf0_blacklist }, + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CHU_629K), + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_7004), + .driver_info = (kernel_ulong_t)&net_intf3_blacklist }, + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_7005) }, + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CGU_629), + .driver_info = (kernel_ulong_t)&net_intf5_blacklist }, + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CHU_629S), + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CHU_720I), + .driver_info = (kernel_ulong_t)&net_intf0_blacklist }, + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_7212), + .driver_info = (kernel_ulong_t)&net_intf0_blacklist }, + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_7213), + .driver_info = (kernel_ulong_t)&net_intf0_blacklist }, + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_7251), + .driver_info = (kernel_ulong_t)&net_intf1_blacklist }, + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_7252), + .driver_info = (kernel_ulong_t)&net_intf1_blacklist }, + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_7253), + .driver_info = (kernel_ulong_t)&net_intf1_blacklist }, { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864E) }, { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864G) }, { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_CC864_DUAL) }, { 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), .driver_info = (kernel_ulong_t)&telit_le920_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MF622, 0xff, 0xff, 0xff) }, /* ZTE WCDMA products */ @@ -1359,7 +1528,8 @@ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1267, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1268, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1269, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1270, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1270, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf5_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1271, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1272, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1273, 0xff, 0xff, 0xff) }, @@ -1404,6 +1574,8 @@ .driver_info = (kernel_ulong_t)&net_intf2_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1426, 0xff, 0xff, 0xff), /* ZTE MF91 */ .driver_info = (kernel_ulong_t)&net_intf2_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1428, 0xff, 0xff, 0xff), /* Telewell TW-LTE 4G v2 */ + .driver_info = (kernel_ulong_t)&net_intf2_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1533, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1534, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1535, 0xff, 0xff, 0xff) }, @@ -1447,14 +1619,38 @@ .driver_info = (kernel_ulong_t)&net_intf3_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0178, 0xff, 0xff, 0xff), .driver_info = (kernel_ulong_t)&net_intf3_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xffe9, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xff8b, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xff8c, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xff8d, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xff8e, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xff8f, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xff90, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xff91, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xff92, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xff93, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xff94, 0xff, 0xff, 0xff) }, - /* NOTE: most ZTE CDMA devices should be driven by zte_ev, not option */ + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_CDMA_TECH, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AC2726, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AC8710T, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MC2718, 0xff, 0xff, 0xff), .driver_info = (kernel_ulong_t)&zte_mc2718_z_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AD3812, 0xff, 0xff, 0xff), + .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) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AC2726, 0xff, 0xff, 0xff) }, { USB_DEVICE(BENQ_VENDOR_ID, BENQ_PRODUCT_H10) }, { USB_DEVICE(DLINK_VENDOR_ID, DLINK_PRODUCT_DWM_652) }, @@ -1470,6 +1666,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 }, @@ -1483,13 +1681,21 @@ .driver_info = (kernel_ulong_t)&net_intf5_blacklist }, { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_L100V), .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, + { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_L800MA), + .driver_info = (kernel_ulong_t)&net_intf2_blacklist }, { USB_DEVICE(AIRPLUS_VENDOR_ID, AIRPLUS_PRODUCT_MCD650) }, { USB_DEVICE(TLAYTECH_VENDOR_ID, TLAYTECH_PRODUCT_TEU800) }, { 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) }, { USB_DEVICE(HAIER_VENDOR_ID, HAIER_PRODUCT_CE100) }, + { USB_DEVICE_AND_INTERFACE_INFO(HAIER_VENDOR_ID, HAIER_PRODUCT_CE81B, 0xff, 0xff, 0xff) }, /* Pirelli */ { USB_DEVICE_INTERFACE_CLASS(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_C100_1, 0xff) }, { USB_DEVICE_INTERFACE_CLASS(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_C100_2, 0xff) }, @@ -1510,8 +1716,9 @@ /* Cinterion */ { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_EU3_E) }, { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_EU3_P) }, - { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_PH8) }, - { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_AHXX) }, + { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_PH8), + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, + { 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) }, @@ -1520,12 +1727,21 @@ { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC25_MDMNET) }, { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC28_MDM) }, /* HC28 enumerates with Siemens or Cinterion VID depending on FW revision */ { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC28_MDMNET) }, - - { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD100) }, + { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD100), + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, + { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD120), + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, + { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD140), + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD145) }, + { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD155), + .driver_info = (kernel_ulong_t)&net_intf6_blacklist }, { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD200), - .driver_info = (kernel_ulong_t)&net_intf6_blacklist - }, + .driver_info = (kernel_ulong_t)&net_intf6_blacklist }, + { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD160), + .driver_info = (kernel_ulong_t)&net_intf6_blacklist }, + { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD500), + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, { USB_DEVICE(CELOT_VENDOR_ID, CELOT_PRODUCT_CT680M) }, /* CT-650 CDMA 450 1xEVDO modem */ { USB_DEVICE_AND_INTERFACE_INFO(SAMSUNG_VENDOR_ID, SAMSUNG_PRODUCT_GT_B3730, USB_CLASS_CDC_DATA, 0x00, 0x00) }, /* Samsung GT-B3730 LTE USB modem.*/ { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEM600) }, @@ -1611,9 +1827,13 @@ { 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 */ { USB_DEVICE(INOVIA_VENDOR_ID, INOVIA_SEW858) }, + { USB_DEVICE(VIATELECOM_VENDOR_ID, VIATELECOM_PRODUCT_CDS7) }, { } /* Terminating entry */ }; MODULE_DEVICE_TABLE(usb, option_ids); @@ -1807,6 +2027,8 @@ dev_dbg(dev, "%s: type %x req %x\n", __func__, req_pkt->bRequestType, req_pkt->bRequest); } + } else if (status == -ENOENT || status == -ESHUTDOWN) { + dev_dbg(dev, "%s: urb stopped: %d\n", __func__, status); } else dev_err(dev, "%s: error %d\n", __func__, status); --- linux-3.13.0.orig/drivers/usb/serial/pl2303.c +++ linux-3.13.0/drivers/usb/serial/pl2303.c @@ -48,6 +48,7 @@ { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_GPRS) }, { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_HCR331) }, { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_MOTOROLA) }, + { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_ZTEK) }, { USB_DEVICE(IODATA_VENDOR_ID, IODATA_PRODUCT_ID) }, { USB_DEVICE(IODATA_VENDOR_ID, IODATA_PRODUCT_ID_RSAQ5) }, { USB_DEVICE(ATEN_VENDOR_ID, ATEN_PRODUCT_ID) }, @@ -63,7 +64,6 @@ { USB_DEVICE(DCU10_VENDOR_ID, DCU10_PRODUCT_ID) }, { USB_DEVICE(SITECOM_VENDOR_ID, SITECOM_PRODUCT_ID) }, { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_ID) }, - { USB_DEVICE(SAMSUNG_VENDOR_ID, SAMSUNG_PRODUCT_ID) }, { USB_DEVICE(SIEMENS_VENDOR_ID, SIEMENS_PRODUCT_ID_SX1) }, { USB_DEVICE(SIEMENS_VENDOR_ID, SIEMENS_PRODUCT_ID_X65) }, { USB_DEVICE(SIEMENS_VENDOR_ID, SIEMENS_PRODUCT_ID_X75) }, @@ -83,6 +83,9 @@ { USB_DEVICE(YCCABLE_VENDOR_ID, YCCABLE_PRODUCT_ID) }, { USB_DEVICE(SUPERIAL_VENDOR_ID, SUPERIAL_PRODUCT_ID) }, { USB_DEVICE(HP_VENDOR_ID, HP_LD220_PRODUCT_ID) }, + { USB_DEVICE(HP_VENDOR_ID, HP_LD960_PRODUCT_ID) }, + { USB_DEVICE(HP_VENDOR_ID, HP_LCM220_PRODUCT_ID) }, + { USB_DEVICE(HP_VENDOR_ID, HP_LCM960_PRODUCT_ID) }, { USB_DEVICE(CRESSI_VENDOR_ID, CRESSI_EDY_PRODUCT_ID) }, { USB_DEVICE(ZEAGLE_VENDOR_ID, ZEAGLE_N2ITION3_PRODUCT_ID) }, { USB_DEVICE(SONY_VENDOR_ID, SONY_QN3USB_PRODUCT_ID) }, @@ -142,6 +145,8 @@ spinlock_t lock; u8 line_control; u8 line_status; + + u8 line_settings[7]; }; static int pl2303_vendor_read(__u16 value, __u16 index, @@ -339,11 +344,6 @@ int i; u8 control; - /* - * The PL2303 is reported to lose bytes if you change serial settings - * even to the same values as before. Thus we actually need to filter - * in this specific case. - */ if (old_termios && !tty_termios_hw_change(&tty->termios, old_termios)) return; @@ -428,10 +428,29 @@ dev_dbg(&port->dev, "parity = none\n"); } - i = usb_control_msg(serial->dev, usb_sndctrlpipe(serial->dev, 0), - SET_LINE_REQUEST, SET_LINE_REQUEST_TYPE, - 0, 0, buf, 7, 100); - dev_dbg(&port->dev, "0x21:0x20:0:0 %d\n", i); + /* + * Some PL2303 are known to lose bytes if you change serial settings + * even to the same values as before. Thus we actually need to filter + * in this specific case. + * + * Note that the tty_termios_hw_change check above is not sufficient + * as a previously requested baud rate may differ from the one + * actually used (and stored in old_termios). + * + * NOTE: No additional locking needed for line_settings as it is + * only used in set_termios, which is serialised against itself. + */ + if (!old_termios || memcmp(buf, priv->line_settings, 7)) { + i = usb_control_msg(serial->dev, + usb_sndctrlpipe(serial->dev, 0), + SET_LINE_REQUEST, SET_LINE_REQUEST_TYPE, + 0, 0, buf, 7, 100); + + dev_dbg(&port->dev, "0x21:0x20:0:0 %d\n", i); + + if (i == 7) + memcpy(priv->line_settings, buf, 7); + } /* change control lines if we are switching to or from B0 */ spin_lock_irqsave(&priv->lock, flags); --- linux-3.13.0.orig/drivers/usb/serial/pl2303.h +++ linux-3.13.0/drivers/usb/serial/pl2303.h @@ -22,6 +22,7 @@ #define PL2303_PRODUCT_ID_GPRS 0x0609 #define PL2303_PRODUCT_ID_HCR331 0x331a #define PL2303_PRODUCT_ID_MOTOROLA 0x0307 +#define PL2303_PRODUCT_ID_ZTEK 0xe1f1 #define ATEN_VENDOR_ID 0x0557 #define ATEN_VENDOR_ID2 0x0547 @@ -61,10 +62,6 @@ #define ALCATEL_VENDOR_ID 0x11f7 #define ALCATEL_PRODUCT_ID 0x02df -/* Samsung I330 phone cradle */ -#define SAMSUNG_VENDOR_ID 0x04e8 -#define SAMSUNG_PRODUCT_ID 0x8001 - #define SIEMENS_VENDOR_ID 0x11f5 #define SIEMENS_PRODUCT_ID_SX1 0x0001 #define SIEMENS_PRODUCT_ID_X65 0x0003 @@ -121,8 +118,11 @@ #define SUPERIAL_VENDOR_ID 0x5372 #define SUPERIAL_PRODUCT_ID 0x2303 -/* Hewlett-Packard LD220-HP POS Pole Display */ +/* Hewlett-Packard POS Pole Displays */ #define HP_VENDOR_ID 0x03f0 +#define HP_LD960_PRODUCT_ID 0x0b39 +#define HP_LCM220_PRODUCT_ID 0x3139 +#define HP_LCM960_PRODUCT_ID 0x3239 #define HP_LD220_PRODUCT_ID 0x3524 /* Cressi Edy (diving computer) PC interface */ --- linux-3.13.0.orig/drivers/usb/serial/qcserial.c +++ linux-3.13.0/drivers/usb/serial/qcserial.c @@ -139,6 +139,51 @@ {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x901c, 0)}, /* Sierra Wireless EM7700 Device Management */ {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x901c, 2)}, /* Sierra Wireless EM7700 NMEA */ {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x901c, 3)}, /* Sierra Wireless EM7700 Modem */ + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x901f, 0)}, /* Sierra Wireless EM7355 Device Management */ + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x901f, 2)}, /* Sierra Wireless EM7355 NMEA */ + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x901f, 3)}, /* Sierra Wireless EM7355 Modem */ + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9040, 0)}, /* Sierra Wireless Modem Device Management */ + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9040, 2)}, /* Sierra Wireless Modem NMEA */ + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9040, 3)}, /* Sierra Wireless Modem Modem */ + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9041, 0)}, /* Sierra Wireless MC7305/MC7355 Device Management */ + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9041, 2)}, /* Sierra Wireless MC7305/MC7355 NMEA */ + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9041, 3)}, /* Sierra Wireless MC7305/MC7355 Modem */ + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9051, 0)}, /* Netgear AirCard 340U Device Management */ + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9051, 2)}, /* Netgear AirCard 340U NMEA */ + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9051, 3)}, /* Netgear AirCard 340U Modem */ + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9053, 0)}, /* Sierra Wireless Modem Device Management */ + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9053, 2)}, /* Sierra Wireless Modem NMEA */ + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9053, 3)}, /* Sierra Wireless Modem Modem */ + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9054, 0)}, /* Sierra Wireless Modem Device Management */ + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9054, 2)}, /* Sierra Wireless Modem NMEA */ + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9054, 3)}, /* Sierra Wireless Modem Modem */ + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9055, 0)}, /* Netgear AirCard 341U Device Management */ + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9055, 2)}, /* Netgear AirCard 341U NMEA */ + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9055, 3)}, /* Netgear AirCard 341U Modem */ + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9056, 0)}, /* Sierra Wireless Modem Device Management */ + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9056, 2)}, /* Sierra Wireless Modem NMEA */ + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9056, 3)}, /* Sierra Wireless Modem Modem */ + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9060, 0)}, /* Sierra Wireless Modem Device Management */ + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9060, 2)}, /* Sierra Wireless Modem NMEA */ + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9060, 3)}, /* Sierra Wireless Modem Modem */ + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9061, 0)}, /* Sierra Wireless Modem Device Management */ + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9061, 2)}, /* Sierra Wireless Modem NMEA */ + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9061, 3)}, /* Sierra Wireless Modem Modem */ + {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a2, 0)}, /* Dell Wireless 5806 Gobi(TM) 4G LTE Mobile Broadband Card Device Management */ + {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a2, 2)}, /* Dell Wireless 5806 Gobi(TM) 4G LTE Mobile Broadband Card NMEA */ + {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a2, 3)}, /* Dell Wireless 5806 Gobi(TM) 4G LTE Mobile Broadband Card Modem */ + {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a3, 0)}, /* Dell Wireless 5570 HSPA+ (42Mbps) Mobile Broadband Card Device Management */ + {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a3, 2)}, /* Dell Wireless 5570 HSPA+ (42Mbps) Mobile Broadband Card NMEA */ + {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a3, 3)}, /* Dell Wireless 5570 HSPA+ (42Mbps) Mobile Broadband Card Modem */ + {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a4, 0)}, /* Dell Wireless 5570e HSPA+ (42Mbps) Mobile Broadband Card Device Management */ + {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a4, 2)}, /* Dell Wireless 5570e HSPA+ (42Mbps) Mobile Broadband Card NMEA */ + {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a4, 3)}, /* Dell Wireless 5570e HSPA+ (42Mbps) Mobile Broadband Card Modem */ + {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a8, 0)}, /* Dell Wireless 5808 Gobi(TM) 4G LTE Mobile Broadband Card Device Management */ + {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a8, 2)}, /* Dell Wireless 5808 Gobi(TM) 4G LTE Mobile Broadband Card NMEA */ + {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a8, 3)}, /* Dell Wireless 5808 Gobi(TM) 4G LTE Mobile Broadband Card Modem */ + {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a9, 0)}, /* Dell Wireless 5808e Gobi(TM) 4G LTE Mobile Broadband Card Device Management */ + {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a9, 2)}, /* Dell Wireless 5808e Gobi(TM) 4G LTE Mobile Broadband Card NMEA */ + {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a9, 3)}, /* Dell Wireless 5808e Gobi(TM) 4G LTE Mobile Broadband Card Modem */ { } /* Terminating entry */ }; --- linux-3.13.0.orig/drivers/usb/serial/sierra.c +++ linux-3.13.0/drivers/usb/serial/sierra.c @@ -281,17 +281,22 @@ /* Sierra Wireless HSPA Non-Composite Device */ { USB_DEVICE_AND_INTERFACE_INFO(0x1199, 0x6892, 0xFF, 0xFF, 0xFF)}, { USB_DEVICE(0x1199, 0x6893) }, /* Sierra Wireless Device */ - { USB_DEVICE(0x1199, 0x68A3), /* Sierra Wireless Direct IP modems */ + /* Sierra Wireless Direct IP modems */ + { USB_DEVICE_AND_INTERFACE_INFO(0x1199, 0x68A3, 0xFF, 0xFF, 0xFF), .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(0x1199, 0x68AA, 0xFF, 0xFF, 0xFF), + .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist + }, + { USB_DEVICE(0x1199, 0x68AB) }, /* Sierra Wireless AR8550 */ /* AT&T Direct IP LTE modems */ { USB_DEVICE_AND_INTERFACE_INFO(0x0F3D, 0x68AA, 0xFF, 0xFF, 0xFF), .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist }, - { USB_DEVICE(0x0f3d, 0x68A3), /* Airprime/Sierra Wireless Direct IP modems */ + /* Airprime/Sierra Wireless Direct IP modems */ + { USB_DEVICE_AND_INTERFACE_INFO(0x0F3D, 0x68A3, 0xFF, 0xFF, 0xFF), .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist }, - { USB_DEVICE(0x413C, 0x08133) }, /* Dell Computer Corp. Wireless 5720 VZW Mobile Broadband (EVDO Rev-A) Minicard GPS Port */ { } }; --- linux-3.13.0.orig/drivers/usb/serial/ssu100.c +++ linux-3.13.0/drivers/usb/serial/ssu100.c @@ -495,10 +495,9 @@ if (*tty_flag == TTY_NORMAL) *tty_flag = TTY_FRAME; } - if (lsr & UART_LSR_OE){ + if (lsr & UART_LSR_OE) { port->icount.overrun++; - if (*tty_flag == TTY_NORMAL) - *tty_flag = TTY_OVERRUN; + tty_insert_flip_char(&port->port, 0, TTY_OVERRUN); } } @@ -516,12 +515,8 @@ if ((len >= 4) && (packet[0] == 0x1b) && (packet[1] == 0x1b) && ((packet[2] == 0x00) || (packet[2] == 0x01))) { - if (packet[2] == 0x00) { + if (packet[2] == 0x00) ssu100_update_lsr(port, packet[3], &flag); - if (flag == TTY_OVERRUN) - tty_insert_flip_char(&port->port, 0, - TTY_OVERRUN); - } if (packet[2] == 0x01) ssu100_update_msr(port, packet[3]); --- linux-3.13.0.orig/drivers/usb/serial/symbolserial.c +++ linux-3.13.0/drivers/usb/serial/symbolserial.c @@ -97,7 +97,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; @@ -123,7 +123,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; @@ -133,7 +133,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-3.13.0.orig/drivers/usb/serial/ti_usb_3410_5052.c +++ linux-3.13.0/drivers/usb/serial/ti_usb_3410_5052.c @@ -160,6 +160,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 */ }; @@ -192,6 +193,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-3.13.0.orig/drivers/usb/serial/ti_usb_3410_5052.h +++ linux-3.13.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-3.13.0.orig/drivers/usb/serial/usb-serial-simple.c +++ linux-3.13.0/drivers/usb/serial/usb-serial-simple.c @@ -48,6 +48,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); @@ -72,7 +73,8 @@ /* Suunto ANT+ USB Driver */ #define SUUNTO_IDS() \ - { USB_DEVICE(0x0fcf, 0x1008) } + { USB_DEVICE(0x0fcf, 0x1008) }, \ + { USB_DEVICE(0x0fcf, 0x1009) } /* Dynastream ANT USB-m Stick */ DEVICE(suunto, SUUNTO_IDS); /* Siemens USB/MPI adapter */ --- linux-3.13.0.orig/drivers/usb/serial/usb-serial.c +++ linux-3.13.0/drivers/usb/serial/usb-serial.c @@ -764,29 +764,39 @@ if (usb_endpoint_is_bulk_in(endpoint)) { /* we found a bulk in endpoint */ dev_dbg(ddev, "found bulk in on endpoint %d\n", i); - bulk_in_endpoint[num_bulk_in] = endpoint; - ++num_bulk_in; + if (num_bulk_in < MAX_NUM_PORTS) { + bulk_in_endpoint[num_bulk_in] = endpoint; + ++num_bulk_in; + } } if (usb_endpoint_is_bulk_out(endpoint)) { /* we found a bulk out endpoint */ dev_dbg(ddev, "found bulk out on endpoint %d\n", i); - bulk_out_endpoint[num_bulk_out] = endpoint; - ++num_bulk_out; + if (num_bulk_out < MAX_NUM_PORTS) { + bulk_out_endpoint[num_bulk_out] = endpoint; + ++num_bulk_out; + } } if (usb_endpoint_is_int_in(endpoint)) { /* we found a interrupt in endpoint */ dev_dbg(ddev, "found interrupt in on endpoint %d\n", i); - interrupt_in_endpoint[num_interrupt_in] = endpoint; - ++num_interrupt_in; + if (num_interrupt_in < MAX_NUM_PORTS) { + interrupt_in_endpoint[num_interrupt_in] = + endpoint; + ++num_interrupt_in; + } } if (usb_endpoint_is_int_out(endpoint)) { /* we found an interrupt out endpoint */ dev_dbg(ddev, "found interrupt out on endpoint %d\n", i); - interrupt_out_endpoint[num_interrupt_out] = endpoint; - ++num_interrupt_out; + if (num_interrupt_out < MAX_NUM_PORTS) { + interrupt_out_endpoint[num_interrupt_out] = + endpoint; + ++num_interrupt_out; + } } } @@ -809,8 +819,10 @@ if (usb_endpoint_is_int_in(endpoint)) { /* we found a interrupt in endpoint */ dev_dbg(ddev, "found interrupt in for Prolific device on separate interface\n"); - interrupt_in_endpoint[num_interrupt_in] = endpoint; - ++num_interrupt_in; + if (num_interrupt_in < MAX_NUM_PORTS) { + interrupt_in_endpoint[num_interrupt_in] = endpoint; + ++num_interrupt_in; + } } } } @@ -850,6 +862,11 @@ num_ports = type->num_ports; } + if (num_ports > MAX_NUM_PORTS) { + dev_warn(ddev, "too many ports requested: %d\n", num_ports); + num_ports = MAX_NUM_PORTS; + } + serial->num_ports = num_ports; serial->num_bulk_in = num_bulk_in; serial->num_bulk_out = num_bulk_out; @@ -1283,6 +1300,7 @@ tty_unregister_driver(usb_serial_tty_driver); put_tty_driver(usb_serial_tty_driver); bus_unregister(&usb_serial_bus_type); + idr_destroy(&serial_minors); } @@ -1348,10 +1366,12 @@ static void usb_serial_deregister(struct usb_serial_driver *device) { pr_info("USB Serial deregistering driver %s\n", device->description); + mutex_lock(&table_lock); list_del(&device->driver_list); - usb_serial_bus_deregister(device); mutex_unlock(&table_lock); + + usb_serial_bus_deregister(device); } /** --- linux-3.13.0.orig/drivers/usb/serial/usb_wwan.c +++ linux-3.13.0/drivers/usb/serial/usb_wwan.c @@ -470,6 +470,9 @@ int err; int i; + if (!port->bulk_in_size || !port->bulk_out_size) + return -ENODEV; + portdata = kzalloc(sizeof(*portdata), GFP_KERNEL); if (!portdata) return -ENOMEM; @@ -477,9 +480,6 @@ init_usb_anchor(&portdata->delayed); for (i = 0; i < N_IN_URB; i++) { - if (!port->bulk_in_size) - break; - buffer = (u8 *)__get_free_page(GFP_KERNEL); if (!buffer) goto bail_out_error; @@ -493,9 +493,6 @@ } for (i = 0; i < N_OUT_URB; i++) { - if (!port->bulk_out_size) - break; - buffer = kmalloc(OUT_BUFLEN, GFP_KERNEL); if (!buffer) goto bail_out_error2; --- linux-3.13.0.orig/drivers/usb/serial/visor.c +++ linux-3.13.0/drivers/usb/serial/visor.c @@ -96,7 +96,7 @@ .driver_info = (kernel_ulong_t)&palm_os_4_probe }, { USB_DEVICE(ACER_VENDOR_ID, ACER_S10_ID), .driver_info = (kernel_ulong_t)&palm_os_4_probe }, - { USB_DEVICE(SAMSUNG_VENDOR_ID, SAMSUNG_SCH_I330_ID), + { USB_DEVICE_INTERFACE_CLASS(SAMSUNG_VENDOR_ID, SAMSUNG_SCH_I330_ID, 0xff), .driver_info = (kernel_ulong_t)&palm_os_4_probe }, { USB_DEVICE(SAMSUNG_VENDOR_ID, SAMSUNG_SPH_I500_ID), .driver_info = (kernel_ulong_t)&palm_os_4_probe }, @@ -551,6 +551,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, @@ -604,8 +609,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-3.13.0.orig/drivers/usb/serial/whiteheat.c +++ linux-3.13.0/drivers/usb/serial/whiteheat.c @@ -81,6 +81,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); @@ -117,6 +119,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, @@ -218,6 +221,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; @@ -521,6 +552,10 @@ dev_dbg(&urb->dev->dev, "%s - command_info is NULL, exiting.\n", __func__); return; } + if (!urb->actual_length) { + dev_dbg(&urb->dev->dev, "%s - empty response, exiting.\n", __func__); + return; + } if (status) { dev_dbg(&urb->dev->dev, "%s - nonzero urb status: %d\n", __func__, status); if (status != -ENOENT) @@ -541,7 +576,8 @@ /* These are unsolicited reports from the firmware, hence no waiting command to wakeup */ dev_dbg(&urb->dev->dev, "%s - event received\n", __func__); - } else if (data[0] == WHITEHEAT_GET_DTR_RTS) { + } else if ((data[0] == WHITEHEAT_GET_DTR_RTS) && + (urb->actual_length - 1 <= sizeof(command_info->result_buffer))) { memcpy(command_info->result_buffer, &data[1], urb->actual_length - 1); command_info->command_finished = WHITEHEAT_CMD_COMPLETE; --- linux-3.13.0.orig/drivers/usb/serial/zte_ev.c +++ linux-3.13.0/drivers/usb/serial/zte_ev.c @@ -273,28 +273,16 @@ } static const struct usb_device_id id_table[] = { - /* AC8710, AC8710T */ - { USB_DEVICE_AND_INTERFACE_INFO(0x19d2, 0xffff, 0xff, 0xff, 0xff) }, - /* AC8700 */ - { USB_DEVICE_AND_INTERFACE_INFO(0x19d2, 0xfffe, 0xff, 0xff, 0xff) }, - /* MG880 */ - { USB_DEVICE(0x19d2, 0xfffd) }, - { USB_DEVICE(0x19d2, 0xfffc) }, - { USB_DEVICE(0x19d2, 0xfffb) }, - /* AC8710_V3 */ + { USB_DEVICE(0x19d2, 0xffec) }, + { USB_DEVICE(0x19d2, 0xffee) }, { USB_DEVICE(0x19d2, 0xfff6) }, { USB_DEVICE(0x19d2, 0xfff7) }, { USB_DEVICE(0x19d2, 0xfff8) }, { USB_DEVICE(0x19d2, 0xfff9) }, - { USB_DEVICE(0x19d2, 0xffee) }, - /* AC2716, MC2716 */ - { USB_DEVICE_AND_INTERFACE_INFO(0x19d2, 0xffed, 0xff, 0xff, 0xff) }, - /* AD3812 */ - { USB_DEVICE_AND_INTERFACE_INFO(0x19d2, 0xffeb, 0xff, 0xff, 0xff) }, - { USB_DEVICE(0x19d2, 0xffec) }, - { USB_DEVICE(0x05C6, 0x3197) }, - { USB_DEVICE(0x05C6, 0x6000) }, - { USB_DEVICE(0x05C6, 0x9008) }, + { USB_DEVICE(0x19d2, 0xfffb) }, + { USB_DEVICE(0x19d2, 0xfffc) }, + /* MG880 */ + { USB_DEVICE(0x19d2, 0xfffd) }, { }, }; MODULE_DEVICE_TABLE(usb, id_table); --- linux-3.13.0.orig/drivers/usb/storage/Kconfig +++ linux-3.13.0/drivers/usb/storage/Kconfig @@ -18,7 +18,9 @@ This option depends on 'SCSI' support being enabled, but you probably also need 'SCSI device support: SCSI disk support' - (BLK_DEV_SD) for most USB storage devices. + (BLK_DEV_SD) for most USB storage devices. Some devices also + will require 'Probe all LUNs on each SCSI device' + (SCSI_MULTI_LUN). To compile this driver as a module, choose M here: the module will be called usb-storage. --- linux-3.13.0.orig/drivers/usb/storage/scsiglue.c +++ linux-3.13.0/drivers/usb/storage/scsiglue.c @@ -78,6 +78,8 @@ static int slave_alloc (struct scsi_device *sdev) { + struct us_data *us = host_to_us(sdev->host); + /* * Set the INQUIRY transfer length to 36. We don't use any of * the extra data and many devices choke if asked for more or @@ -102,6 +104,10 @@ */ blk_queue_update_dma_alignment(sdev->request_queue, (512 - 1)); + /* Tell the SCSI layer if we know there is more than one LUN */ + if (us->protocol == USB_PR_BULK && us->max_lun > 0) + sdev->sdev_bflags |= BLIST_FORCELUN; + return 0; } @@ -250,6 +256,10 @@ if (us->fflags & US_FL_WRITE_CACHE) sdev->wce_default_on = 1; + /* A few buggy USB-ATA bridges don't understand FUA */ + if (us->fflags & US_FL_BROKEN_FUA) + sdev->broken_fua = 1; + } else { /* Non-disk-type devices don't need to blacklist any pages --- linux-3.13.0.orig/drivers/usb/storage/shuttle_usbat.c +++ linux-3.13.0/drivers/usb/storage/shuttle_usbat.c @@ -1851,7 +1851,7 @@ us->transport_name = "Shuttle USBAT"; us->transport = usbat_flash_transport; us->transport_reset = usb_stor_CB_reset; - us->max_lun = 1; + us->max_lun = 0; result = usb_stor_probe2(us); return result; --- linux-3.13.0.orig/drivers/usb/storage/transport.c +++ linux-3.13.0/drivers/usb/storage/transport.c @@ -1118,6 +1118,31 @@ */ if (result == USB_STOR_XFER_LONG) fake_sense = 1; + + /* + * Sometimes a device will mistakenly skip the data phase + * and go directly to the status phase without sending a + * zero-length packet. If we get a 13-byte response here, + * check whether it really is a CSW. + */ + if (result == USB_STOR_XFER_SHORT && + srb->sc_data_direction == DMA_FROM_DEVICE && + transfer_length - scsi_get_resid(srb) == + US_BULK_CS_WRAP_LEN) { + struct scatterlist *sg = NULL; + unsigned int offset = 0; + + if (usb_stor_access_xfer_buf((unsigned char *) bcs, + US_BULK_CS_WRAP_LEN, srb, &sg, + &offset, FROM_XFER_BUF) == + US_BULK_CS_WRAP_LEN && + bcs->Signature == + cpu_to_le32(US_BULK_CS_SIGN)) { + usb_stor_dbg(us, "Device skipped data phase\n"); + scsi_set_resid(srb, transfer_length); + goto skipped_data_phase; + } + } } /* See flow chart on pg 15 of the Bulk Only Transport spec for @@ -1153,6 +1178,7 @@ if (result != USB_STOR_XFER_GOOD) return USB_STOR_TRANSPORT_ERROR; + skipped_data_phase: /* check bulk status */ residue = le32_to_cpu(bcs->Residue); usb_stor_dbg(us, "Bulk Status S 0x%x T 0x%x R %u Stat 0x%x\n", --- linux-3.13.0.orig/drivers/usb/storage/uas.c +++ linux-3.13.0/drivers/usb/storage/uas.c @@ -835,7 +835,7 @@ .eh_abort_handler = uas_eh_abort_handler, .eh_device_reset_handler = uas_eh_device_reset_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, .cmd_per_lun = 1, /* until we override it */ --- linux-3.13.0.orig/drivers/usb/storage/unusual_cypress.h +++ linux-3.13.0/drivers/usb/storage/unusual_cypress.h @@ -31,7 +31,7 @@ "Cypress ISD-300LP", USB_SC_CYP_ATACB, USB_PR_DEVICE, NULL, 0), -UNUSUAL_DEV( 0x14cd, 0x6116, 0x0000, 0x0219, +UNUSUAL_DEV( 0x14cd, 0x6116, 0x0160, 0x0160, "Super Top", "USB 2.0 SATA BRIDGE", USB_SC_CYP_ATACB, USB_PR_DEVICE, NULL, 0), --- linux-3.13.0.orig/drivers/usb/storage/unusual_devs.h +++ linux-3.13.0/drivers/usb/storage/unusual_devs.h @@ -101,6 +101,12 @@ "PhotoSmart R707", USB_SC_DEVICE, USB_PR_DEVICE, NULL, US_FL_FIX_CAPACITY), +UNUSUAL_DEV( 0x03f3, 0x0001, 0x0000, 0x9999, + "Adaptec", + "USBConnect 2000", + USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_euscsi_init, + US_FL_SCM_MULT_TARG ), + /* Reported by Sebastian Kapfer * and Olaf Hering (different bcd's, same vendor/product) * for USB floppies that need the SINGLE_LUN enforcement. @@ -234,6 +240,27 @@ USB_SC_DEVICE, USB_PR_DEVICE, NULL, US_FL_MAX_SECTORS_64 ), +/* Reported by Daniele Forsi */ +UNUSUAL_DEV( 0x0421, 0x04b9, 0x0350, 0x0350, + "Nokia", + "5300", + USB_SC_DEVICE, USB_PR_DEVICE, NULL, + US_FL_MAX_SECTORS_64 ), + +/* Patch submitted by Victor A. Santos */ +UNUSUAL_DEV( 0x0421, 0x05af, 0x0742, 0x0742, + "Nokia", + "305", + USB_SC_DEVICE, USB_PR_DEVICE, NULL, + US_FL_MAX_SECTORS_64), + +/* Patch submitted by Mikhail Zolotaryov */ +UNUSUAL_DEV( 0x0421, 0x06aa, 0x1110, 0x1110, + "Nokia", + "502", + USB_SC_DEVICE, USB_PR_DEVICE, NULL, + US_FL_MAX_SECTORS_64 ), + #ifdef NO_SDDR09 UNUSUAL_DEV( 0x0436, 0x0005, 0x0100, 0x0100, "Microtech", @@ -720,6 +747,12 @@ USB_SC_DEVICE, USB_PR_DEVICE, NULL, US_FL_SINGLE_LUN ), +UNUSUAL_DEV( 0x059b, 0x0040, 0x0100, 0x0100, + "Iomega", + "Jaz USB Adapter", + USB_SC_DEVICE, USB_PR_DEVICE, NULL, + US_FL_SINGLE_LUN ), + /* Reported by */ UNUSUAL_DEV( 0x059f, 0x0643, 0x0000, 0x0000, "LaCie", @@ -727,6 +760,13 @@ USB_SC_DEVICE, USB_PR_DEVICE, NULL, US_FL_GO_SLOW ), +/* Reported by Christian Schaller */ +UNUSUAL_DEV( 0x059f, 0x0651, 0x0000, 0x0000, + "LaCie", + "External HDD", + USB_SC_DEVICE, USB_PR_DEVICE, NULL, + US_FL_NO_WP_DETECT ), + /* Submitted by Joel Bourquard * Some versions of this device need the SubClass and Protocol overrides * while others don't. @@ -1092,6 +1132,18 @@ USB_SC_DEVICE, USB_PR_DEVICE, NULL, US_FL_NOT_LOCKABLE), +UNUSUAL_DEV( 0x085a, 0x0026, 0x0100, 0x0133, + "Xircom", + "PortGear USB-SCSI (Mac USB Dock)", + USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_euscsi_init, + US_FL_SCM_MULT_TARG ), + +UNUSUAL_DEV( 0x085a, 0x0028, 0x0100, 0x0133, + "Xircom", + "PortGear USB to SCSI Converter", + USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_euscsi_init, + US_FL_SCM_MULT_TARG ), + /* Submitted by Jan De Luyck */ UNUSUAL_DEV( 0x08bd, 0x1100, 0x0000, 0x0000, "CITIZEN", @@ -1191,6 +1243,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 @@ -1448,6 +1507,13 @@ USB_SC_DEVICE, USB_PR_DEVICE, NULL, US_FL_FIX_CAPACITY ), +/* Reported by Moritz Moeller-Herrmann */ +UNUSUAL_DEV( 0x0fca, 0x8004, 0x0201, 0x0201, + "Research In Motion", + "BlackBerry Bold 9000", + USB_SC_DEVICE, USB_PR_DEVICE, NULL, + US_FL_MAX_SECTORS_64 ), + /* Reported by Michael Stattmann */ UNUSUAL_DEV( 0x0fce, 0xd008, 0x0000, 0x0000, "Sony Ericsson", @@ -1908,6 +1974,13 @@ USB_SC_DEVICE, USB_PR_DEVICE, NULL, US_FL_IGNORE_RESIDUE ), +/* Reported by Michael Büsch */ +UNUSUAL_DEV( 0x152d, 0x0567, 0x0114, 0x0114, + "JMicron", + "USB to ATA/ATAPI Bridge", + USB_SC_DEVICE, USB_PR_DEVICE, NULL, + US_FL_BROKEN_FUA ), + /* Reported by Alexandre Oliva * JMicron responds to USN and several other SCSI ioctls with a * residue that causes subsequent I/O requests to fail. */ @@ -1917,6 +1990,21 @@ USB_SC_DEVICE, USB_PR_DEVICE, NULL, US_FL_IGNORE_RESIDUE | US_FL_SANE_SENSE ), +/* Reported by Dmitry Nezhevenko */ +UNUSUAL_DEV( 0x152d, 0x2566, 0x0114, 0x0114, + "JMicron", + "USB to ATA/ATAPI Bridge", + USB_SC_DEVICE, USB_PR_DEVICE, NULL, + US_FL_BROKEN_FUA ), + +/* Entrega Technologies U1-SC25 (later Xircom PortGear PGSCSI) + * and Mac USB Dock USB-SCSI */ +UNUSUAL_DEV( 0x1645, 0x0007, 0x0100, 0x0133, + "Entrega Technologies", + "USB to SCSI Converter", + USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_euscsi_init, + US_FL_SCM_MULT_TARG ), + /* Reported by Robert Schedel * Note: this is a 'super top' device like the above 14cd/6600 device */ UNUSUAL_DEV( 0x1652, 0x6600, 0x0201, 0x0201, @@ -1939,6 +2027,12 @@ USB_SC_DEVICE, USB_PR_DEVICE, NULL, US_FL_BULK_IGNORE_TAG | US_FL_MAX_SECTORS_64 ), +UNUSUAL_DEV( 0x1822, 0x0001, 0x0000, 0x9999, + "Ariston Technologies", + "iConnect USB to SCSI adapter", + USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_euscsi_init, + US_FL_SCM_MULT_TARG ), + /* Reported by Hans de Goede * These Appotech controllers are found in Picture Frames, they provide a * (buggy) emulation of a cdrom drive which contains the windows software @@ -1959,6 +2053,18 @@ USB_SC_DEVICE, USB_PR_DEVICE, NULL, US_FL_NO_READ_DISC_INFO ), +/* Reported by Oliver Neukum + * This device morphes spontaneously into another device if the access + * pattern of Windows isn't followed. Thus writable media would be dirty + * if the initial instance is used. So the device is limited to its + * virtual CD. + * And yes, the concept that BCD goes up to 9 is not heeded */ +UNUSUAL_DEV( 0x19d2, 0x1225, 0x0000, 0xffff, + "ZTE,Incorporated", + "ZTE WCDMA Technologies MSM", + USB_SC_DEVICE, USB_PR_DEVICE, NULL, + US_FL_SINGLE_LUN ), + /* Reported by Sven Geggus * This encrypted pen drive returns bogus data for the initial READ(10). */ --- linux-3.13.0.orig/drivers/uwb/lc-dev.c +++ linux-3.13.0/drivers/uwb/lc-dev.c @@ -431,16 +431,19 @@ uwb_dev->mac_addr = *bce->mac_addr; uwb_dev->dev_addr = bce->dev_addr; dev_set_name(&uwb_dev->dev, "%s", macbuf); + + /* plug the beacon cache */ + bce->uwb_dev = uwb_dev; + uwb_dev->bce = bce; + uwb_bce_get(bce); /* released in uwb_dev_sys_release() */ + result = uwb_dev_add(uwb_dev, &rc->uwb_dev.dev, rc); if (result < 0) { dev_err(dev, "new device %s: cannot instantiate device\n", macbuf); goto error_dev_add; } - /* plug the beacon cache */ - bce->uwb_dev = uwb_dev; - uwb_dev->bce = bce; - uwb_bce_get(bce); /* released in uwb_dev_sys_release() */ + dev_info(dev, "uwb device (mac %s dev %s) connected to %s %s\n", macbuf, devbuf, rc->uwb_dev.dev.parent->bus->name, dev_name(rc->uwb_dev.dev.parent)); @@ -448,6 +451,8 @@ return; error_dev_add: + bce->uwb_dev = NULL; + uwb_bce_put(bce); kfree(uwb_dev); return; } --- linux-3.13.0.orig/drivers/vfio/pci/vfio_pci.c +++ linux-3.13.0/drivers/vfio/pci/vfio_pci.c @@ -357,7 +357,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; @@ -430,7 +431,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; @@ -464,7 +466,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; @@ -821,13 +824,11 @@ static int vfio_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) { - u8 type; struct vfio_pci_device *vdev; struct iommu_group *group; int ret; - pci_read_config_byte(pdev, PCI_HEADER_TYPE, &type); - if ((type & PCI_HEADER_TYPE) != PCI_HEADER_TYPE_NORMAL) + if (pdev->hdr_type != PCI_HEADER_TYPE_NORMAL) return -EINVAL; group = iommu_group_get(&pdev->dev); --- linux-3.13.0.orig/drivers/vfio/vfio_iommu_type1.c +++ linux-3.13.0/drivers/vfio/vfio_iommu_type1.c @@ -186,12 +186,12 @@ if (pfn_valid(pfn)) { bool reserved; struct page *tail = pfn_to_page(pfn); - struct page *head = compound_trans_head(tail); + struct page *head = compound_head(tail); reserved = !!(PageReserved(head)); if (head != tail) { /* * "head" is not a dangling pointer - * (compound_trans_head takes care of that) + * (compound_head takes care of that) * but the hugepage may have been split * from under us (and we may not hold a * reference count on the head page so it can @@ -860,7 +860,8 @@ info.iova_pgsizes = iommu->domain->ops->pgsize_bitmap; - 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; @@ -893,7 +894,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-3.13.0.orig/drivers/vhost/net.c +++ linux-3.13.0/drivers/vhost/net.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include @@ -70,7 +71,12 @@ }; struct vhost_net_ubuf_ref { - struct kref kref; + /* refcount follows semantics similar to kref: + * 0: object is released + * 1: no outstanding ubufs + * >1: outstanding ubufs + */ + atomic_t refcount; wait_queue_head_t wait; struct vhost_virtqueue *vq; }; @@ -116,14 +122,6 @@ vhost_net_zcopy_mask |= 0x1 << vq; } -static void vhost_net_zerocopy_done_signal(struct kref *kref) -{ - struct vhost_net_ubuf_ref *ubufs; - - ubufs = container_of(kref, struct vhost_net_ubuf_ref, kref); - wake_up(&ubufs->wait); -} - static struct vhost_net_ubuf_ref * vhost_net_ubuf_alloc(struct vhost_virtqueue *vq, bool zcopy) { @@ -134,21 +132,24 @@ ubufs = kmalloc(sizeof(*ubufs), GFP_KERNEL); if (!ubufs) return ERR_PTR(-ENOMEM); - kref_init(&ubufs->kref); + atomic_set(&ubufs->refcount, 1); init_waitqueue_head(&ubufs->wait); ubufs->vq = vq; return ubufs; } -static void vhost_net_ubuf_put(struct vhost_net_ubuf_ref *ubufs) +static int vhost_net_ubuf_put(struct vhost_net_ubuf_ref *ubufs) { - kref_put(&ubufs->kref, vhost_net_zerocopy_done_signal); + int r = atomic_sub_return(1, &ubufs->refcount); + if (unlikely(!r)) + wake_up(&ubufs->wait); + return r; } static void vhost_net_ubuf_put_and_wait(struct vhost_net_ubuf_ref *ubufs) { - kref_put(&ubufs->kref, vhost_net_zerocopy_done_signal); - wait_event(ubufs->wait, !atomic_read(&ubufs->kref.refcount)); + vhost_net_ubuf_put(ubufs); + wait_event(ubufs->wait, !atomic_read(&ubufs->refcount)); } static void vhost_net_ubuf_put_wait_and_free(struct vhost_net_ubuf_ref *ubufs) @@ -306,22 +307,21 @@ { struct vhost_net_ubuf_ref *ubufs = ubuf->ctx; struct vhost_virtqueue *vq = ubufs->vq; - int cnt = atomic_read(&ubufs->kref.refcount); + int cnt; /* set len to mark this desc buffers done DMA */ vq->heads[ubuf->desc].len = success ? VHOST_DMA_DONE_LEN : VHOST_DMA_FAILED_LEN; - vhost_net_ubuf_put(ubufs); + cnt = vhost_net_ubuf_put(ubufs); /* * Trigger polling thread if guest stopped submitting new buffers: - * in this case, the refcount after decrement will eventually reach 1 - * so here it is 2. + * in this case, the refcount after decrement will eventually reach 1. * We also trigger polling periodically after each 16 packets * (the value 16 here is more or less arbitrary, it's tuned to trigger * less than 10% of times). */ - if (cnt <= 2 || !(cnt % 16)) + if (cnt <= 1 || !(cnt % 16)) vhost_poll_queue(&vq->poll); } @@ -420,7 +420,7 @@ msg.msg_control = ubuf; msg.msg_controllen = sizeof(ubuf); ubufs = nvq->ubufs; - kref_get(&ubufs->kref); + atomic_inc(&ubufs->refcount); nvq->upend_idx = (nvq->upend_idx + 1) % UIO_MAXIOV; } else { msg.msg_control = NULL; @@ -502,9 +502,13 @@ r = -ENOBUFS; goto err; } - d = vhost_get_vq_desc(vq->dev, vq, vq->iov + seg, + r = vhost_get_vq_desc(vq->dev, vq, vq->iov + seg, ARRAY_SIZE(vq->iov) - seg, &out, &in, log, log_num); + if (unlikely(r < 0)) + goto err; + + d = r; if (d == vq->num) { r = 0; goto err; @@ -529,6 +533,12 @@ *iovcount = seg; if (unlikely(log)) *log_num = nlogs; + + /* Detect overrun */ + if (unlikely(datalen > 0)) { + r = UIO_MAXIOV + 1; + goto err; + } return headcount; err: vhost_discard_vq_desc(vq, headcount); @@ -584,6 +594,14 @@ /* On error, stop handling until the next kick. */ if (unlikely(headcount < 0)) break; + /* On overrun, truncate and discard */ + if (unlikely(headcount > UIO_MAXIOV)) { + msg.msg_iovlen = 1; + err = sock->ops->recvmsg(NULL, sock, &msg, + 1, MSG_DONTWAIT | MSG_TRUNC); + pr_debug("Discarded rx packet: len %zd\n", sock_len); + continue; + } /* OK, now we need to know about added descriptors. */ if (!headcount) { if (unlikely(vhost_enable_notify(&net->dev, vq))) { @@ -680,16 +698,20 @@ static int vhost_net_open(struct inode *inode, struct file *f) { - struct vhost_net *n = kmalloc(sizeof *n, GFP_KERNEL); + struct vhost_net *n; struct vhost_dev *dev; struct vhost_virtqueue **vqs; int r, i; - if (!n) - return -ENOMEM; + n = kmalloc(sizeof *n, GFP_KERNEL | __GFP_NOWARN | __GFP_REPEAT); + if (!n) { + n = vmalloc(sizeof *n); + if (!n) + return -ENOMEM; + } vqs = kmalloc(VHOST_NET_VQ_MAX * sizeof(*vqs), GFP_KERNEL); if (!vqs) { - kfree(n); + kvfree(n); return -ENOMEM; } @@ -785,7 +807,7 @@ vhost_net_ubuf_put_and_wait(n->vqs[VHOST_NET_VQ_TX].ubufs); mutex_lock(&n->vqs[VHOST_NET_VQ_TX].vq.mutex); n->tx_flush = false; - kref_init(&n->vqs[VHOST_NET_VQ_TX].ubufs->kref); + atomic_set(&n->vqs[VHOST_NET_VQ_TX].ubufs->refcount, 1); mutex_unlock(&n->vqs[VHOST_NET_VQ_TX].vq.mutex); } } @@ -809,7 +831,7 @@ * since jobs can re-queue themselves. */ vhost_net_flush(n); kfree(n->dev.vqs); - kfree(n); + kvfree(n); return 0; } --- linux-3.13.0.orig/drivers/vhost/scsi.c +++ linux-3.13.0/drivers/vhost/scsi.c @@ -539,6 +539,11 @@ return; } +static void tcm_vhost_aborted_task(struct se_cmd *se_cmd) +{ + return; +} + static void tcm_vhost_free_evt(struct vhost_scsi *vs, struct tcm_vhost_evt *evt) { vs->vs_events_nr--; @@ -728,7 +733,7 @@ } se_sess = tv_nexus->tvn_se_sess; - tag = percpu_ida_alloc(&se_sess->sess_tag_pool, GFP_ATOMIC); + tag = percpu_ida_alloc(&se_sess->sess_tag_pool, TASK_RUNNING); if (tag < 0) { pr_err("Unable to obtain tag for tcm_vhost_cmd\n"); return ERR_PTR(-ENOMEM); @@ -1115,7 +1120,7 @@ * lun[4-7] need to be zero according to virtio-scsi spec. */ evt->event.lun[0] = 0x01; - evt->event.lun[1] = tpg->tport_tpgt & 0xFF; + evt->event.lun[1] = tpg->tport_tpgt; if (lun->unpacked_lun >= 256) evt->event.lun[2] = lun->unpacked_lun >> 8 | 0x40 ; evt->event.lun[3] = lun->unpacked_lun & 0xFF; @@ -1194,6 +1199,7 @@ vhost_scsi_set_endpoint(struct vhost_scsi *vs, struct vhost_scsi_target *t) { + struct se_portal_group *se_tpg; struct tcm_vhost_tport *tv_tport; struct tcm_vhost_tpg *tpg; struct tcm_vhost_tpg **vs_tpg; @@ -1241,6 +1247,21 @@ ret = -EEXIST; goto out; } + /* + * In order to ensure individual vhost-scsi configfs + * groups cannot be removed while in use by vhost ioctl, + * go ahead and take an explicit se_tpg->tpg_group.cg_item + * dependency now. + */ + se_tpg = &tpg->se_tpg; + ret = configfs_depend_item(se_tpg->se_tpg_tfo->tf_subsys, + &se_tpg->tpg_group.cg_item); + if (ret) { + pr_warn("configfs_depend_item() failed: %d\n", ret); + kfree(vs_tpg); + mutex_unlock(&tpg->tv_tpg_mutex); + goto out; + } tpg->tv_tpg_vhost_count++; tpg->vhost_scsi = vs; vs_tpg[tpg->tport_tpgt] = tpg; @@ -1283,6 +1304,7 @@ vhost_scsi_clear_endpoint(struct vhost_scsi *vs, struct vhost_scsi_target *t) { + struct se_portal_group *se_tpg; struct tcm_vhost_tport *tv_tport; struct tcm_vhost_tpg *tpg; struct vhost_virtqueue *vq; @@ -1331,6 +1353,13 @@ vs->vs_tpg[target] = NULL; match = true; mutex_unlock(&tpg->tv_tpg_mutex); + /* + * Release se_tpg->tpg_group.cg_item configfs dependency now + * to allow vhost-scsi WWPN se_tpg->tpg_group shutdown to occur. + */ + se_tpg = &tpg->se_tpg; + configfs_undepend_item(se_tpg->se_tpg_tfo->tf_subsys, + &se_tpg->tpg_group.cg_item); } if (match) { for (i = 0; i < VHOST_SCSI_MAX_VQ; i++) { @@ -1961,12 +1990,12 @@ struct tcm_vhost_tport, tport_wwn); struct tcm_vhost_tpg *tpg; - unsigned long tpgt; + u16 tpgt; int ret; if (strstr(name, "tpgt_") != name) return ERR_PTR(-EINVAL); - if (kstrtoul(name + 5, 10, &tpgt) || tpgt > UINT_MAX) + if (kstrtou16(name + 5, 10, &tpgt) || tpgt >= VHOST_SCSI_MAX_TARGET) return ERR_PTR(-EINVAL); tpg = kzalloc(sizeof(struct tcm_vhost_tpg), GFP_KERNEL); @@ -2130,6 +2159,7 @@ .queue_data_in = tcm_vhost_queue_data_in, .queue_status = tcm_vhost_queue_status, .queue_tm_rsp = tcm_vhost_queue_tm_rsp, + .aborted_task = tcm_vhost_aborted_task, /* * Setup callers for generic logic in target_core_fabric_configfs.c */ --- linux-3.13.0.orig/drivers/vhost/vhost.c +++ linux-3.13.0/drivers/vhost/vhost.c @@ -878,6 +878,7 @@ } if (eventfp != d->log_file) { filep = d->log_file; + d->log_file = eventfp; ctx = d->log_ctx; d->log_ctx = eventfp ? eventfd_ctx_fileget(eventfp) : NULL; --- linux-3.13.0.orig/drivers/video/aty/mach64_accel.c +++ linux-3.13.0/drivers/video/aty/mach64_accel.c @@ -4,6 +4,7 @@ */ #include +#include #include #include